Built motion from commit e02f907f.|2.6.14 2.6.14
authorsupport <support@xcally.com>
Wed, 3 Aug 2022 21:29:45 +0000 (21:29 +0000)
committersupport <support@xcally.com>
Wed, 3 Aug 2022 21:29:45 +0000 (21:29 +0000)
1271 files changed:
apidoc/api_project.js
apidoc/api_project.json
npm-shrinkwrap.json
package.json
public/app/forgot/i18n/pt-BR.json
public/app/login/i18n/is.json
public/app/login/i18n/pt-BR.json
public/app/main/apps/analytics/i18n/pt-BR.json
public/app/main/apps/callysquare/i18n/pt-BR.json
public/app/main/apps/chat/i18n/pt-BR.json
public/app/main/apps/contactmanager/i18n/pt-BR.json
public/app/main/apps/dashboards/i18n/pt-BR.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/is.json
public/app/main/apps/integrations/i18n/pt-BR.json
public/app/main/apps/jscripty/i18n/is.json
public/app/main/apps/jscripty/i18n/pt-BR.json
public/app/main/apps/mail/i18n/is.json
public/app/main/apps/mail/i18n/pt-BR.json
public/app/main/apps/motiondialer/i18n/is.json
public/app/main/apps/motiondialer/i18n/pt-BR.json
public/app/main/apps/openchannel/i18n/is.json
public/app/main/apps/openchannel/i18n/pt-BR.json
public/app/main/apps/settings/i18n/is.json
public/app/main/apps/settings/i18n/pt-BR.json
public/app/main/apps/sms/i18n/is.json
public/app/main/apps/sms/i18n/pt-BR.json
public/app/main/apps/staff/i18n/bs.json
public/app/main/apps/staff/i18n/is.json
public/app/main/apps/staff/i18n/pt-BR.json
public/app/main/apps/tools/i18n/is.json
public/app/main/apps/tools/i18n/pt-BR.json
public/app/main/apps/voice/i18n/is.json
public/app/main/apps/voice/i18n/pt-BR.json
public/app/main/apps/whatsapp/i18n/pt-BR.json
public/app/quick-panel/i18n/pt-BR.json
public/app/reset/i18n/pt-BR.json
public/app/toolbar/i18n/ar.json
public/app/toolbar/i18n/bs.json
public/app/toolbar/i18n/cs.json
public/app/toolbar/i18n/da.json
public/app/toolbar/i18n/de.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/is.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.43295fa3.js [moved from public/scripts/app.0bca52b6.js with 52% 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/contacts/index.js
server/components/contacts/sql-utils.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/interaction/sql-utils.js
server/components/interaction/update-interaction.js
server/components/interaction/utils.js
server/components/license/service.js
server/components/parsers/advancedSearch.js
server/components/parsers/qs.js
server/components/realtime/agents.js
server/components/realtime/queues.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.14.js [new file with mode: 0644]
server/mysqldb/index.js
server/routes.js
server/rpc/index.js
server/services/agi/channel.js
server/services/agi/error.js
server/services/agi/events.js
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/index.js
server/services/ami/dialer/models/action.js
server/services/ami/dialer/models/agentComplete.js
server/services/ami/dialer/models/final.js
server/services/ami/dialer/models/hangup.js
server/services/ami/dialer/models/history.js
server/services/ami/dialer/models/queueCallerAbandon.js
server/services/ami/dialer/utils/hopper.js
server/services/ami/dialer/utils/index.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/voiceQueueSummary.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/realtime/utils.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/interval.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/iftime.js
server/utils/loggers.js
server/utils/mask-sensitive-data.js
server/utils/safe-template.js
server/utils/update-app-config.js

index ad51c56..f5f0cc1 100644 (file)
@@ -1,6 +1,6 @@
 define({
   "name": "xCALLY Motion API",
-  "version": "2.6.13",
+  "version": "2.6.14",
   "description": "Thank you for choosing xCALLY MOTION, one of the first Omni Channel solution integrated with AsteriskTM and the most innovative real time solutions available on the market.",
   "title": "xCALLY MOTION API",
   "header": {
@@ -17,7 +17,7 @@ define({
   "apidoc": "0.3.0",
   "generator": {
     "name": "apidoc",
-    "time": "2022-07-15T13:15:52.909Z",
+    "time": "2022-08-03T21:22:53.731Z",
     "url": "http://apidocjs.com",
     "version": "0.24.0"
   }
index f2e04f3..53fa08b 100644 (file)
@@ -1,6 +1,6 @@
 {
   "name": "xCALLY Motion API",
-  "version": "2.6.13",
+  "version": "2.6.14",
   "description": "Thank you for choosing xCALLY MOTION, one of the first Omni Channel solution integrated with AsteriskTM and the most innovative real time solutions available on the market.",
   "title": "xCALLY MOTION API",
   "header": {
@@ -17,7 +17,7 @@
   "apidoc": "0.3.0",
   "generator": {
     "name": "apidoc",
-    "time": "2022-07-15T13:15:52.909Z",
+    "time": "2022-08-03T21:22:53.731Z",
     "url": "http://apidocjs.com",
     "version": "0.24.0"
   }
index 857935c..65f6f96 100644 (file)
@@ -1,6 +1,6 @@
 {
   "name": "motion",
-  "version": "2.6.13",
+  "version": "2.6.14",
   "dependencies": {
     "@swc/helpers": {
       "version": "0.3.17",
index 8a7ddc4..e0b9613 100644 (file)
@@ -1,6 +1,6 @@
 {
   "name": "motion",
-  "version": "2.6.13",
+  "version": "2.6.14",
   "description": "xCALLY Motion is the new Realtime asynchronous solution for your multichannel contact center over Asterisk.",
   "main": "server/app.js",
   "engines": {
index f024ec7..036ec11 100644 (file)
@@ -2,10 +2,10 @@
   "FORGOTPASSWORD": {
     "TITLE": "Recupere sua senha",
     "EMAIL_ADRESS": "Endereço de e-mail",
-    "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!",
+    "SEND_RESET_LINK": "ENVIAR LINK PARA RESET",
+    "GO_BACK": "Voltar ao login",
+    "LINK_SENT": "Link Enviado",
+    "LINNK_SENT_MESSAGE": "Um e-mail contendo um link para reset de sua senha foi enviado para o seu endereço!",
     "PASSWORD_RESET_ERROR": "Erro ao resetar a senha",
     "ERRORS": {
       "EMAIL_REQUIRED": "Campo obrigatório",
index 261b193..83c91ce 100644 (file)
@@ -1,6 +1,6 @@
 {
   "LOGIN": {
-    "TELEPHONES": "Símanúmr",
+    "TELEPHONES": "Símanúmer",
     "SELECT": "Velja",
     "CANCEL": "Hætta við",
     "TITLE": "Skráðu þig inn",
index d9f974d..59c6c41 100644 (file)
@@ -21,6 +21,6 @@
       "PASSWORD_REQUIRED": "Campo obrigatório",
       "USERNAME_REQUIRED": "Campo obrigatório"
     },
-    "WITH_AD": "Faça login com o Active Directory"
+    "WITH_AD": "Login com o Active Directory"
   }
 }
index 90c2dff..c7f2215 100644 (file)
     "STATUS": "Status",
     "OUTPUT": "Saída",
     "REPORTS": "Relatórios",
-    "SEARCH_FOR_FOLDER": "Procurar por Pasta",
+    "SEARCH_FOR_FOLDER": "Procurar por pasta",
     "CREATED_AT": "Criado em",
     "NEW_REPORT": "Novo Relatório",
     "ADD_REPORT": "Adicionar Relatório",
     "COPY_REPORT": "Copiar Relatório",
     "PREVIEW_REPORT": "Pré-visualizar Relatório",
     "RUN_REPORT": "Executar Relatório",
-    "DOWNLOAD_JSON_REPORT": "Exportar Relatório JSON",
+    "DOWNLOAD_JSON_REPORT": "Exportar Relatório em JSON",
     "EDIT_REPORT": "Editar Relatório",
     "DELETE_REPORT": "Excluir Relatório",
     "CREATE": "Criar Pasta",
@@ -53,9 +53,9 @@
     "ERROR": "Erro",
     "QUERY_ERROR": "Erro de Consulta",
     "MESSAGE": "Mensagem",
-    "CLOSE": "Fechar",
+    "CLOSE": "Encerrar",
     "FORMAT": "Formato",
-    "SETTINGS": "Definições",
+    "SETTINGS": "Configurações",
     "GENERAL": "Geral",
     "FIELDS": "Campos",
     "CONDITION": "Condição",
@@ -65,7 +65,7 @@
     "VALUE": "Valor",
     "PREVIEW": "Pré-visualizar",
     "LIMITED_RESULT": "*Resultados limitados",
-    "NO_DATA": "Nenhum resultado de dados",
+    "NO_DATA": "Nenhum resultado",
     "CONDITIONS": "Condições",
     "ALIAS": "Alias",
     "FUNCTION": "Função",
     "ADD_REPORTFIELD": "Adicionar Campo",
     "EDIT_REPORTFIELD": "Editar Campo",
     "DELETE_REPORTFIELD": "Excluir Campo",
-    "METRIC_NAME": "Nome Métrica",
-    "NO_METRIC_FOUND": "Nenhuma Métrica Encontrada",
-    "NO_AVAILABLE_INFO": "Nenhuma Informação Disponível",
+    "METRIC_NAME": "Nome da Métrica",
+    "NO_METRIC_FOUND": "Nenhuma métrica encontrada",
+    "NO_AVAILABLE_INFO": "Nenhuma informação disponível",
     "CUSTOM_METRIC": "Métrica Personalizada",
     "DELETE_EXTRACTEDREPORT": "Excluir Relatório Extraído",
     "EDIT_EXTRACTEDREPORT": "Editar Relatório Extraído",
     "DOWNLOAD_EXTRACTEDREPORT": "Download do Relatório Extraído",
     "PAGE": "Página",
-    "ROWSPERPAGE": "Linhas por Página",
+    "ROWSPERPAGE": "Linhas por página",
     "OF": "do",
     "WEB_REPORT": "Relatório Web"
   }
index 1cb4fc1..04b4890 100644 (file)
@@ -8,7 +8,7 @@
     "AGENTS": "Agentes",
     "AGI": "AGI",
     "ALL_USERS": "Todos Usuários",
-    "ANSWER": "Responda",
+    "ANSWER": "Atender",
     "APIKEY": "Chave API",
     "APPID": "ID do Aplicativo",
     "APPLICATION": "Aplicação",
     "ATTACHMENT_PATH": "Caminho do Anexo",
     "ATTACHMENT_TYPE": "Tipo de Anexo",
     "AUDIO": "Áudio",
-    "AUDIOENCODING": "Codificação de Áudio",
+    "AUDIOENCODING": "Codificação do Áudio",
     "AWSLEX": "Amazon Lex",
     "AWSPOLLY": "AWS Polly",
-    "AWS_ACCESS_KEY_ID": "ID Chave de Acesso",
-    "AWS_BOT_NAME": "Nome Bot",
+    "AWS_ACCESS_KEY_ID": "ID da Chave de Acesso",
+    "AWS_BOT_NAME": "Nome do Bot",
     "AWS_LEX_REGION": "Região",
     "AWS_POLLY_REGION": "Região",
     "AWS_POLLY_VOICE": "Voz",
     "AWS_SECRET_ACCESS_KEY": "Senha da Chave de Acesso",
     "AWS_TEXT_TYPE": "Tipo de texto",
     "BACK": "Voltar",
-    "BCC": "BCC",
+    "BCC": "CCO",
     "BEEP": "Beep",
-    "BODY": "Body",
+    "BODY": "Corpo",
     "CALLBACK": "Callback",
     "CALLBACK_PRIORITY": "Prioridade",
     "CALLYSQUARE": "Cally Square",
     "CC": "CC",
     "CHOOSE_ATTACHMENT": "Escolha o Anexo",
-    "CLOSE": "Fechar",
+    "CLOSE": "Encerrar",
     "COMMAND": "Comando",
-    "COMPUTEDVARIABLES": "Caminho do script de variáveis computadas",
+    "COMPUTEDVARIABLES": "Caminho do Script de Variáveis Computadas",
     "CONDITION": "Condição",
     "CONTEXT": "Contexto",
     "COPY": "Copiar",
     "DATABASE": "Database",
     "DELAY": "delay [min]",
     "DELETE": "Excluir",
-    "DELETE_ODBC": "Deletar ODBC",
-    "DELETE_PROJECT": "Deletar Projeto",
-    "DELETE_SQUARERECORDING": "Excluir Gravação Cally Square",
+    "DELETE_ODBC": "Excluir ODBC",
+    "DELETE_PROJECT": "Excluir Projeto",
+    "DELETE_SQUARERECORDING": "Excluir Gravação do Cally Square",
     "DESCRIPTION": "Descrição",
     "DIAL": "Discar",
-    "DIALOGFLOW": "Fluxo de diálogo",
+    "DIALOGFLOW": "Dialogflow",
     "DIALOGFLOW_LANGUAGE": "Idioma",
     "DIGIT": "Max Dígitos",
     "DIGITS": "Dígitos",
-    "DOWNLOAD_SQUARERECORDING": "Download Gravação Cally Square",
-    "DROP_TO_UPLOAD": "SOLTAR AQUI PARA CARREGAR",
+    "DOWNLOAD_SQUARERECORDING": "Download de Gravação do Cally Square",
+    "DROP_TO_UPLOAD": "SOLTE AQUI PARA UPLOAD",
     "DROP_TO_UPLOAD_MESSAGE": "Você também pode soltar arquivos aqui para fazer o upload. Apenas XML - Máx. 5MB",
     "DSN": "DSN",
     "EDIT": "Editar",
     "EDIT_ODBC": "Editar ODBC",
     "EDIT_PROJECT": "Editar Projeto",
-    "EDIT_SQUARERECORDING": "Editar Gravação Cally Square",
+    "EDIT_SQUARERECORDING": "Editar Gravação do Cally Square",
     "EDIT_XML": "Editar XML",
     "END": "Fim",
     "ERRORS": {
     "EXTEN": "Exten",
     "EXTENSION": "Extensão",
     "EXT_DIAL": "Discagem Externa",
-    "FILE": "Nome do arquivo",
+    "FILE": "Nome do Arquivo",
     "FILENAME": "Nome do Arquivo",
     "FILE_ID": "Áudio",
     "FINALLY": "Finalmente",
     "FINDBY": "Encontrar por",
-    "GETDIGITS": "Obter dígitos",
+    "GETDIGITS": "Obter Dígitos",
     "GETSECRETDIGITS": "Obter Dígitos Secretos",
-    "GOAL": "Objetivo",
-    "GOALNAME": "Nome do Objetivo",
+    "GOAL": "Qualificar",
+    "GOALNAME": "Nome da Qualificação",
     "GOOGLEASR": "GoogleASR",
     "GOOGLE_ASR_LANGUAGE": "Idioma",
     "GOOGLE_CLOUD_TTS": "Google Cloud TTS",
     "GO_TO_PROJECTS": "Ir para projetos",
     "GRAMMAR": "Gramática",
     "HANGUP": "Desligar",
-    "HEADERS": "Cabeçalhos",
+    "HEADERS": "Headers",
     "HELP": {
       "BCC": "Você pode adicionar vários endereços separados por vírgulas (exemplo: john.doe@xcally.com, jane.miller@xcally.com)",
       "CC": "Você pode adicionar vários endereços separados por vírgulas (exemplo: john.doe@xcally.com, jane.miller@xcally.com)",
       "MAX_TEXT_TTS": "O número máximo de caracteres suportados é 200",
       "TO": "Você pode adicionar vários endereços separados por vírgulas (exemplo: john.doe@xcally.com, jane.miller@xcally.com)"
     },
-    "HIDDENDIGITSNUM": "Número de Dígitos Ocultos",
-    "HIDDENDIGITSPOS": "Posição dos Dígitos Ocultos",
+    "HIDDENDIGITSNUM": "Hiddden Digits Number",
+    "HIDDENDIGITSPOS": "hidden Digits Position",
     "ID": "Id",
     "IMPORT": "Importar",
     "IMPORT_XML": "Importar XML",
     "LUMENVOXASR": "Lumenvox ASR",
     "LUMENVOXTTS": "Lumenvox Text-To-Speech",
     "MACRO": "Macro",
-    "MAILBOX": "Caixa de Correio",
+    "MAILBOX": "Caixa de Entrada",
     "MATH": "Math",
     "MAXDIGIT": "Dígitos Máximos",
     "MENU": "Menu",
     "NEW_PROJECT": "Novo Projeto",
     "NEW_VARIABLE": "Nova Variável",
     "NOOP": "NoOp",
-    "NOTES": "Anotações",
+    "NOTES": "Observações",
     "NO_AVAILABLE_INFO": "Nenhuma informação disponível",
     "NUMBER": "Número",
     "ODBC": "ODBC",
     "QUEUE": "Fila",
     "QUEUE_ID": "ID da Fila",
     "RAWBODY": "Corpo",
-    "RAWHEADERS": "Cabeçalhos",
+    "RAWHEADERS": "Headers",
     "RECORD": "Gravação",
     "RECORDINGFORMAT": "Formato de Gravação",
-    "RESPONSE": "Tempo Limite de Resposta",
+    "RESPONSE": "Timeout de Resposta",
     "RESTAPI": "API Rest",
     "RETRY": "Repetições",
     "ROWSPERPAGE": "Linhas por página",
     "SAVE": "Salvar",
     "SAYDIGITS": "Falar Dígitos",
-    "SAYNUMBER": "Falar Numero",
-    "SAYPHONETIC": "Say Phonetics",
+    "SAYNUMBER": "Falar número",
+    "SAYPHONETIC": "Falar Phonetics",
     "SEARCH_FOR_ANYONE": "Procurar",
     "SELECTED": "Selecionado",
     "SELECTED_USERS": "Usuários Selecionados",
     "SESTEKNDA": "Sestek NDA",
     "SESTEKTTS": "Sestek TTS",
     "SET": "Set",
-    "SIP_ID": "ID SIP",
-    "SMS_ACCOUNT_ID": "ID da CONTA SMS",
+    "SIP_ID": "SIP",
+    "SMS_ACCOUNT_ID": "Conta",
     "SMS_TEXT": "Texto",
     "SPEED": "Velocidade",
     "SQUARERECORDINGS": "Gravações",
     "SYSTEM": "Sistema",
     "TELEPHONES": "Telefones",
     "TEMPLATE_ID": "Modelo",
-    "TEST_ODBC": "Teste ODBC",
+    "TEST_ODBC": "Teste de ODBC",
     "TEXT": "Texto",
     "TILDEASR": "Tilde ASR",
     "TIMEOUT": "Timeout",
     "TO": "Para",
     "TRUNK_NAME": "Nome do Tronco",
     "TTS": "Google Text-To-Speech",
-    "UNIQUEID": "Unique ID",
+    "UNIQUEID": "ID Único",
     "UNPAUSE": "Fim da Pausa",
     "UPDATE_DESCRIPTION": "Atualizar Descrição",
-    "UPDATE_INFO": "Update Info",
+    "UPDATE_INFO": "Atualizar Info",
     "URI": "URI",
     "URL": "URL",
     "USERNAME": "Nome de Usuário",
     "VOICEMAIL": "Correio de Voz",
     "VSWITCH": "Variable Switch",
     "CLIENT_EMAIL": "Email do Cliente",
-    "DIALOGFLOWV2": "Fluxo de diálogo V2",
+    "DIALOGFLOWV2": "Dialogflow V2",
     "DIALOGFLOWV2_LANGUAGE": "Idioma",
     "DIALOGFLOWV2_PROJECT_ID": "ID do Projeto",
     "PRIVATE_KEY": "Chave Privada",
index b3e621c..8058385 100644 (file)
@@ -2,31 +2,31 @@
   "CHAT": {
     "EDIT_AMAZONLEX": "Editar Amazon Lex",
     "AMAZONLEX": "Amazon Lex",
-    "ACCESSKEYID": "Access Key ID",
-    "SECRETACCESSKEY": "Secret Access Key",
+    "ACCESSKEYID": "ID da Chave de Acesso",
+    "SECRETACCESSKEY": "Senha de Chave de Acesso",
     "LEXREGION": "Região",
     "BOTNAME": "Nome do Bot",
     "LOGIN_TIME": "Tempo de login",
     "PAUSE_TIME": "Tempo de pausa",
     "DOWNLOAD_INTERACTION": "Download",
-    "ENABLECUSTOMERCHECKMARKS": "Ativar notificações entregues / lidas pelo cliente",
+    "ENABLECUSTOMERCHECKMARKS": "Habilitar notificações de entregue/lida para o cliente",
     "TRANSFER": "Transferir",
-    "QUEUETRANSFER": "Transferência de fila",
-    "QUEUETRANSFERTIMEOUT": "Tempo limite de transferência da fila",
+    "QUEUETRANSFER": "Transferência de Fila",
+    "QUEUETRANSFERTIMEOUT": "Timeout de Transferência de Fila",
     "AGENTTRANSFER": "Trasferir de Agente",
-    "AGENTTRANSFERTIMEOUT": "Timeout de transferência do agente",
-    "SYSTEMAVATAR": "Avatar do sistema",
-    "SYSTEMALIAS": "Apelido do sistema",
-    "WELCOMEMESSAGE": "Mensagem de boas-vindas",
+    "AGENTTRANSFERTIMEOUT": "Timeout de Transferência do Agente",
+    "SYSTEMAVATAR": "Avatar do Sistema",
+    "SYSTEMALIAS": "Apelido do Sistema",
+    "WELCOMEMESSAGE": "Mensagem de Boas-Vindas",
     "LANGUAGE": "Idioma",
     "EDIT_DIALOGFLOW": "Editar Dialogflow",
     "DIALOGFLOW": "Dialogflow",
     "BACKGROUNDCOLOR": "Cor de Fundo",
-    "MESSAGEFONTSIZE": "Tamanho da fonte da mensagem",
+    "MESSAGEFONTSIZE": "Tamanho da Fonte da Mensagem",
     "TAG": "Tag",
     "EDIT_TAG": "Editar Tag",
     "CUSTOMERALIAS": "Apelido \200b\200bdo Cliente",
-    "SNIPPETSWIPEOUT": "Snippet deslize para fora",
+    "SNIPPETSWIPEOUT": "Snippet swipe out",
     "CUSTOMERAVATAR": "Avatar do Cliente",
     "SHOWCUSTOMERAVATAR": "Mostrar avatar do cliente",
     "DEFAULTTITLE": "Título Padrão",
     "ALIGNMENT": "Alinhamento",
     "VERTICALALIGNMENT": "Alinhamento vertical",
     "BOTTOM_RIGHT": "Canto inferior direito",
-    "RIGHT": "Direta",
+    "RIGHT": "Direito",
     "LEFT": "Esquerda",
-    "WAITFORTHEASSIGNEDAGENT": "Aguarde o agente atribuído",
+    "WAITFORTHEASSIGNEDAGENT": "Aguardando por um agente",
     "AGENTIDENTIFIER": "Identificador",
-    "WEBSITEALIAS": "Nome do site",
+    "WEBSITEALIAS": "Nome do WebSite",
     "AGENTALIAS": "Nome do Agente",
     "AGENTFULLNAME": "Nome Completo do Agente",
     "INSERT_MESSAGE_HERE": "Insira sua mensagem de texto aqui",
     "SYSTEM": "Sistema",
     "EDIT_SYSTEM": "Editar Sistema",
     "COMMAND": "Comando",
-    "TEXTCOLOR": "Cor do texto",
+    "TEXTCOLOR": "Cor do Texto",
     "FONTSIZE": "Tamanho da Fonte",
     "WEBSCRIPT": "Web Script",
     "CANNEDANSWERS": "Respostas Pré-definidas",
     "CHATCANNEDANSWERS": "Respostas Pré-definidas",
-    "NO_CHATCANNEDANSWER_AVAILABLE": "Não há respostas prontas disponíveis",
-    "NEW_CHATCANNEDANSWER": "Novo modelo de resposta",
+    "NO_CHATCANNEDANSWER_AVAILABLE": "Não há Respostas Pré-definidas disponíveis",
+    "NEW_CHATCANNEDANSWER": "Nova Resposta Pré-definida",
     "ADD_CHATCANNEDANSWER": "Adicionar Resposta Pré-definida",
     "EDIT_CHATCANNEDANSWER": "Editar",
     "DELETE_CHATCANNEDANSWER": "Excluir",
     "OFFLINEMESSAGEBODY": "Corpo da mensagem",
     "FORMSUBMITSUCCESSMESSAGE": "Mensagem de sucesso no envio de formulário",
     "FORMSUBMITFAILUREMESSAGE": "Mensagem de falha no envio de formulário",
-    "PLACEHOLDERMESSAGE": "Espaço reservado da mensagem",
-    "NOTETITLE": "Título da nota",
-    "CLOSINGQUESTION": "Pergunta de encerramento",
+    "PLACEHOLDERMESSAGE": "Mensagem de marcação de posição",
+    "NOTETITLE": "Título da Observação",
+    "CLOSINGQUESTION": "Pergunta de Encerramento",
     "TAGS": "Tags",
-    "SHOWAGENTAVATAR": "Mostrar avatar do agente pessoal",
+    "SHOWAGENTAVATAR": "Mostrar avatar pessoal do agente",
     "AGENTAVATAR": "Avatar do Agente",
-    "SPYINTERACTION": "Spy",
-    "NO_AGENT_ONLINE": "Nenhum agente online",
-    "GOTOREALTIME_CHATQUEUE": "Ir para a Fila de Webchat em Tempo Real",
+    "SPYINTERACTION": "Espiar",
+    "NO_AGENT_ONLINE": "Nenhum Agente Online",
+    "GOTOREALTIME_CHATQUEUE": "Visualizar Fila do Chat em Tempo Real",
     "PARTIALPAUSE": "Pausa Parcial",
     "BUSY": "Ocupado",
-    "TIMER": "Cronômetro",
+    "TIMER": "Timer",
     "IDLE": "Disponível",
     "CAPACITY": "Capacidade",
-    "AGENTSADD_QUEUE": "Adicionar Agente à Fila do Webchat",
+    "AGENTSADD_QUEUE": "Adicionar Agente à Fila do Chat",
     "QUEUES": "Filas",
     "LOGGED_IN": "Logado",
     "PAUSED": "Pausado",
-    "READY": "Pronto",
+    "READY": "Disponível",
     "WAITING": "Esperando",
-    "WRITING": "Escrita",
-    "CHAT": "WebChat",
+    "WRITING": "Escrevendo",
+    "CHAT": "Chat",
     "MAIL": "Email",
     "SMS": "SMS",
     "OPENCHANNEL": "Openchannel",
     "FAX": "Fax",
     "PAUSE": "Pausa",
-    "REALTIME": "Tempo real",
+    "REALTIME": "Tempo Real",
     "AGENTS": "Agentes",
     "FULLNAME": "Nome Completo",
     "INTERNAL": "Interno",
-    "PHONE_STATE": "Estado do telefone",
-    "PHONE_STATUS": "Status do telefone",
+    "PHONE_STATE": "Estado do Telefone",
+    "PHONE_STATUS": "Status do Telefone",
     "LOGOUT": "Sair",
-    "UNPAUSE": "Pausa final",
-    "AGENTADD_QUEUE": "Adicionar Agente à Fila Webchat",
+    "UNPAUSE": "Finalizar Pausa",
+    "AGENTADD_QUEUE": "Adicionar Agente à Fila do Chat",
     "TEXT": "Texto",
     "TIMES": "Número de vezes por interação",
     "EDIT_AUTOREPLY": "Editar Auto Resposta",
     "AUTOREPLY": "Auto Resposta",
-    "NEW_CHATDISPOSITION": "Nova Qualificação Webchat",
-    "ENABLECUSTOMERATTACHMENT": "Ativar Anexos do Cliente",
-    "OFFLINE_CHAT_BUTTON": "Botão Chat off-line",
+    "NEW_CHATDISPOSITION": "Nova Qualificação do Chat",
+    "ENABLECUSTOMERATTACHMENT": "Habilitar Anexos do Cliente",
+    "OFFLINE_CHAT_BUTTON": "Botão de 'Chat Offline'",
     "OFFLINESTATUS": "Status Offline",
     "NAME": "Nome",
-    "CHATQUEUES": "Filas Webchat",
+    "CHATQUEUES": "Filas do Chat",
     "SEARCH_FOR_ANYONE": "Procurar",
     "STRATEGY": "Estratégia",
     "AGENT_TIMEOUT": "Timeout do Agente",
     "DESCRIPTION": "Descrição",
-    "KEY": "Key",
+    "KEY": "Chave",
     "ALIAS": "Alias",
     "VARIABLE": "Variável",
     "INTERVAL": "Intervalo",
     "EDIT_CLOSE": "Editar Encerramento",
     "TIMEZONE": "Fuso horário",
-    "MESSAGE": "Messagem",
+    "MESSAGE": "Mensagem",
     "ADVANCED": "Avançado",
     "FORWARDTRANSCRIPT": "Encaminhar Transcrição",
     "FORWARDTRANSCRIPTMESSAGE": "Mensagem de Encaminhar Transcrição",
-    "SKIPMESSAGEBUTTON": "Ignorar botão de mensagem",
+    "SKIPMESSAGEBUTTON": "Botão de Ignorar Mensagem",
     "EDIT_MESSAGE": "Editar Mensagem",
-    "CONDITION_AGREEMENT": "Condition Agreement",
+    "CONDITION_AGREEMENT": "Condições do Acordo",
     "NONE": "Nenhum",
     "PRIORITY": "Prioridade",
-    "ONLINESTATUS": "Status online",
-    "UNMANAGEDSTATUS": "Status não gerenciado",
+    "ONLINESTATUS": "Status Online",
+    "UNMANAGEDSTATUS": "Status Não Gerenciado",
     "AUTOCLOSE": "Ativar Autoclose",
-    "ENABLEUNMANAGEDNOTE": "Ativar Mensagem não Gerenciada",
+    "ENABLEUNMANAGEDNOTE": "Habilitar Mensagem não Gerenciada",
     "UNMANAGEDMESSAGE": "Messagem",
-    "SKIPUNMANAGED": "Pular Mensagem",
-    "SENDUNMANAGED": "Enviar mensagem",
-    "WEBSITESCRIPT": "Website Script",
+    "SKIPUNMANAGED": "Ignorar Mensagem",
+    "SENDUNMANAGED": "Enviar Mensagem",
+    "WEBSITESCRIPT": "Script do WebSite",
     "DELETE_OFFLINEMESSAGE": "Excluir",
     "OFFLINEMESSAGES": "Mensagens Offline",
     "FORWARD_OFFLINE": "Encaminhar Offline",
     "SHOW_OFFLINEMESSAGE": "Mostrar",
     "FORWARD_OFFLINE_ADDRESS": "Endereço para Encaminhar Offline",
     "CLOSINGFORM": "Formulário de Encerramento",
-    "ENABLERATING": "Ativar Classificação",
+    "ENABLERATING": "Habilitar Classificação",
     "ENABLECUSTOMERWRITING": "Permitir que o cliente escreva antes que seja atribuído ao agente",
-    "ENABLEFEEDBACK": "Ativar Feedback",
+    "ENABLEFEEDBACK": "Habilitar Feedback",
     "RATINGTYPE": "Tipo de Avaliação",
     "CLOSINGMESSAGE": "Mensagem de Encerramento",
     "CLOSINGMESSAGEBUTTON": "Mensagem do Botão de Encerramento",
-    "RATINGSTARSNUMBER": "Número de estrelas de avaliação",
+    "RATINGSTARSNUMBER": "Número de Estrelas de Avaliação",
     "EDIT_GOTOIF": "Editar GotoIf",
     "CONDITION": "Condição",
-    "TRUEPRIORITY": "Verdadeira prioridade",
-    "FALSEPRIORITY": "Falsa Prioridade",
+    "TRUEPRIORITY": "ID da Prioridade caso Verdadeiro",
+    "FALSEPRIORITY": "ID de Prioridade caso Falso",
     "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",
       "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
-      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Campo Obrigatório",
+      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Campo obrigatório",
       "AGENT_TIMEOUT_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",
       "CUSTOMERALIAS_MAX_LENGTH": "O valor deve ter um tamanho máximo igual a {{max}}",
       "CLOSINGQUESTION_MAX_LENGTH": "O valor deve ter um tamanho máximo igual a {{max}}",
       "HEADER_OFFLINE_MAX_LENGTH": "O valor deve ter um tamanho máximo igual a {{max}}",
       "OFFLINE_CHAT_BUTTON_MAX_LENGTH": "O valor deve ter um tamanho máximo igual a {{max}}",
-      "TEXT_REQUIRED": "Campo Obrigatório",
-      "SENDUNMANAGED_REQUIRED": "Campo Obrigatório",
+      "TEXT_REQUIRED": "Campo obrigatório",
+      "SENDUNMANAGED_REQUIRED": "Campo obrigatório",
       "SENDUNMANAGED_MAX_LENGTH": "O valor deve ter um tamanho máximo igual a {{max}}",
       "SKIPUNMANAGED_MAX_LENGTH": "O valor deve ter um tamanho máximo igual a {{max}}",
       "UNMANAGEDMESSAGE_MAX_LENGTH": "O valor deve ter um tamanho máximo igual a {{max}}",
       "WEBSITEALIAS_MAX_LENGTH": "O valor deve ter um tamanho máximo igual a {{max}}",
-      "AGENT_REQUIRED": "Campo Obrigatório",
-      "QUEUE_REQUIRED": "Campo Obrigatório",
-      "CONDITION_REQUIRED": "Campo Obrigatório",
-      "PRIORITY_REQUIRED": "Campo Obrigatório",
-      "TRUEPRIORITY_REQUIRED": "Campo Obrigatório",
-      "FALSEPRIORITY_REQUIRED": "Campo Obrigatório",
-      "NAME_REQUIRED": "Campo Obrigatório",
-      "LIST_REQUIRED": "Campo Obrigatório",
-      "AGENT_TIMEOUT_REQUIRED": "Campo Obrigatório",
-      "MOTIONADDRESS_REQUIRED": "Campo Obrigatório",
-      "DISPOSITION_REQUIRED": "Campo Obrigatório",
+      "AGENT_REQUIRED": "Campo obrigatório",
+      "QUEUE_REQUIRED": "Campo obrigatório",
+      "CONDITION_REQUIRED": "Campo obrigatório",
+      "PRIORITY_REQUIRED": "Campo obrigatório",
+      "TRUEPRIORITY_REQUIRED": "Campo obrigatório",
+      "FALSEPRIORITY_REQUIRED": "Campo obrigatório",
+      "NAME_REQUIRED": "Campo obrigatório",
+      "LIST_REQUIRED": "Campo obrigatório",
+      "AGENT_TIMEOUT_REQUIRED": "Campo obrigatório",
+      "MOTIONADDRESS_REQUIRED": "Campo obrigatório",
+      "DISPOSITION_REQUIRED": "Campo obrigatório",
       "MOTIONADDRESS_MUST_VALID_URL": "Formato incorreto",
       "EMAIL_MUST_BE_VALID": "Formato incorreto",
-      "ADDRESS_REQUIRED": "Campo Obrigatório",
+      "ADDRESS_REQUIRED": "Campo obrigatório",
       "ADDRESS_MUST_VALID_URL": "Formato incorreto",
-      "ENQUIRY_FORWARDING_ADDRESS_REQUIRED": "Campo Obrigatório",
+      "ENQUIRY_FORWARDING_ADDRESS_REQUIRED": "Campo obrigatório",
       "ACCEPTURL_MUST_VALID_URL": "Formato incorreto",
-      "TIMEOUT_REQUIRED": "Campo Obrigatório",
+      "TIMEOUT_REQUIRED": "Campo obrigatório",
       "REJECTURL_MUST_VALID_URL": "Formato incorreto",
       "CLOSEURL_MUST_VALID_URL": "Formato incorreto",
       "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
       "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
       "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
       "POLLING_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
-      "WAITINGMESSAGE_REQUIRED": "Campo Obrigatório",
-      "WAITINGTITLE_REQUIRED": "Campo Obrigatório",
+      "WAITINGMESSAGE_REQUIRED": "Campo obrigatório",
+      "WAITINGTITLE_REQUIRED": "Campo obrigatório",
       "KEY_MAX_LENGTH": "O valor deve ter um tamanho máximo igual a {{max}}",
-      "KEY_REQUIRED": "Campo Obrigatório",
+      "KEY_REQUIRED": "Campo obrigatório",
       "WAITINGMESSAGE_MAX_LENGTH": "O valor deve ter um tamanho máximo igual a {{max}}",
       "WAITINGTITLE_MAX_LENGTH": "O valor deve ter um tamanho máximo igual a {{max}}",
       "RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Campo obrigatório",
-      "VIDAOOAPIKEY_REQUIRED": "Campo Obrigatório",
-      "CLIENTEMAIL_REQUIRED": "Campo Obrigatório",
-      "PRIVATEKEY_REQUIRED": "Campo Obrigatório",
-      "PROJECTID_REQUIRED": "Campo Obrigatório",
-      "VIDAOOTOPIC_REQUIRED": "Campo Obrigatório",
+      "VIDAOOAPIKEY_REQUIRED": "Campo obrigatório",
+      "CLIENTEMAIL_REQUIRED": "Campo obrigatório",
+      "PRIVATEKEY_REQUIRED": "Campo obrigatório",
+      "PROJECTID_REQUIRED": "Campo obrigatório",
+      "VIDAOOTOPIC_REQUIRED": "Campo obrigatório",
       "EMAIL_ACCOUNT_REQUIRED": "Campo obrigatório"
     },
-    "CM_FIELD": "Contact Manager Field",
+    "CM_FIELD": "Campo do Gestor de Contato",
     "CHATPROACTIVEACTIONS": "Ações Proativas",
-    "NEW_CHATPROACTIVEACTION": "Nova ação proativa",
+    "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_CHATPROACTIVEACTION_AVAILABLE": "Nenhuma Ação Proativa disponível",
     "NO_OFFLINEMESSAGE_AVAILABLE": "Nenhuma mensagem off-line disponível",
     "MOUSEOVER": "Mouse Over",
-    "TIMEOUT": "Tempo esgotado",
+    "TIMEOUT": "Timeout",
     "TYPE": "Tipo",
     "SELECTOR": "Seletor",
     "AGENT": "Agente",
     "EDIT_GOTO": "Editar Goto",
     "EDIT_GOTOIf": "Editar GotoIf",
     "EDIT_NOOP": "Editar Noop",
-    "ADD_CHATQUEUE": "Adicionar Fila WebChat",
-    "EDIT_CHATQUEUE": "Editar Fila WebChat",
-    "DELETE_CHATQUEUE": "Excluir Fila de WebChat",
+    "ADD_CHATQUEUE": "Adicionar à Fila de Chat",
+    "EDIT_CHATQUEUE": "Editar Fila do Chat",
+    "DELETE_CHATQUEUE": "Excluir Fila do Chat",
     "SETTINGS": "Configurações",
     "SAVE": "Salvar",
-    "SCRIPT": "Roteiro",
+    "SCRIPT": "Script",
     "TOKEN": "Token",
     "CREATED_AT": "Criado em",
-    "CHATWEBSITES": "Websites do Webchat",
-    "MOTIONADDRESS": "Domínio do site",
-    "MOTIONPROXY": "Domínio de Proxy ou Motion",
-    "ADD_CHATWEBSITE": "Adicionar Website do WebChat",
-    "EDIT_CHATWEBSITE": "Editar Website do Webchat",
-    "DELETE_CHATWEBSITE": "Excluir Website do Webchat",
+    "CHATWEBSITES": "Websites do Chat",
+    "MOTIONADDRESS": "Domínio do Website",
+    "MOTIONPROXY": "Proxy ou Domínio do Motion",
+    "ADD_CHATWEBSITE": "Adicionar Website do Chat",
+    "EDIT_CHATWEBSITE": "Editar Website do Chat",
+    "DELETE_CHATWEBSITE": "Excluir Website do Chat",
     "LIST": "Lista",
-    "SNIPPET": "Fragmento",
+    "SNIPPET": "Snippet",
     "FORMS": "Formulários",
     "UP": "Acima",
     "DOWN": "Baixo",
-    "COLLAPSE": "Collapse",
-    "PROACTIVEACTIONS": "Ações proativas",
+    "COLLAPSE": "Recolher",
+    "PROACTIVEACTIONS": "Ações Proativas",
     "DISPOSITIONS": "Qualificações",
     "WEBHOOKS": "WebHooks",
     "ACTIONS": "Ações",
     "ANIMATION": "Animação",
     "DEFAULT": "Padrão",
     "WHITELABEL": "White Label",
-    "LOGO": "Logo",
+    "LOGO": "Logomarca",
     "DOWNLOADTRANSCRIPT": "Download Transcrição",
     "ENQUIRY_ENABLE": "Habilitar Consulta",
     "ENQUIRY_FORWARDING": "Encaminhamento de Consulta",
     "LABELS": "Labels",
     "HEADER_ONLINE": "Cabeçalho Online",
     "ONLINE_MESSAGE": "Mensagem Online",
-    "NAME_TITLE": "Nome da etiqueta de entrada",
-    "USERNAME_PLACEHOLDER": "Local de entrada de nome de usuário",
-    "EMAIL_TITLE": "Email Input Label",
-    "EMAIL_PLACEHOLDER": "Espaço reservado para entrada de e-mail",
-    "START_CHAT_BUTTON": "Botão 'Iniciar chat'",
+    "NAME_TITLE": "Nome do Campo de Entrada",
+    "USERNAME_PLACEHOLDER": "Marcação de posição do Nome do Usuário",
+    "EMAIL_TITLE": "Campo para inserir Email",
+    "EMAIL_PLACEHOLDER": "Marcação de posição do Email",
+    "START_CHAT_BUTTON": "Botão 'Iniciar Chat'",
     "AGENTS_BUSY": "Mensagem quando Agentes estão 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",
+    "MESSAGE_TITLE": "Título da Mensagem",
+    "ENQUIRY_MESSAGE_PLACEHOLDER": "Marcação de posição na Consulta",
     "ENQUIRY_BUTTON": "Texto do Botão de Consulta",
     "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_SEND": "Texto do botão de Envio de Avaliação",
+    "RATING_SKIP": "Texto do botão de Ignorar Avaliação",
     "ONLINE": "Online",
     "OFFLINE": "Offline",
     "PROACTIVE": "Proativo",
     "ACCEPT": "Aceitar",
-    "ACCEPTMETHOD": "Aceitar Metodo",
-    "ACCEPTURL": "Aceitar URL",
+    "ACCEPTMETHOD": "Método de Aceite",
+    "ACCEPTURL": "URL de Aceite",
     "REJECT": "Rejeitar",
-    "REJECTMETHOD": "Rejeitar Metodo",
-    "REJECTURL": "Rejeitar URL",
+    "REJECTMETHOD": "Método de Rejeição",
+    "REJECTURL": "URL de Rejeição",
     "CLOSE": "Encerrar",
     "CLOSEMETHOD": "Método de Encerramento",
     "CLOSEURL": "URL de Encerramento",
     "EMBEDDING": "Incorporação",
     "GENERAL": "Geral",
     "SELECTED": "Selecionado",
-    "SELECT_ALL": "Selecionar tudo",
-    "SELECT_NONE": "Selecione nenhum",
+    "SELECT_ALL": "Selecionar Tudo",
+    "SELECT_NONE": "Selecione Nenhum",
     "BACK": "Voltar",
     "HELP": {
       "VERTICALPOSITION": "Representa a distância em porcentagem do topo",
-      "AGENTIDENTIFIER": "Representa o identificador do agente dentro da sessão de Webchat",
+      "AGENTIDENTIFIER": "Representa o identificador do agente dentro da sessão de Chat",
       "HIDEWHENOFFLINE": "Ocultar a janela quando está Offline",
-      "KEY": "Nome abreviado do website (5 caracteres) exibido na guia Agente",
+      "KEY": "Nome abreviado do website (5 caracteres) exibido na aba de atendimento do Agente",
       "TOKEN": "Token gerado automaticamente usado no script",
       "INTEVAL": "A ser selecionado na lista de intervalos disponíveis",
       "TIMEZONE": "Selecione um da lista (padrão = fuso horário local)",
-      "ENABLERATING": "Ative se quiser que o ciente possa avaliar a interação ao encerrar",
+      "ENABLERATING": "Habilite se quiser que o ciente possa avaliar a interação ao encerrar",
       "ENABLEFEEDBACK": "Habilite se você quiser que o cliente possa enviar um feedback (até 150 caracteres) ao encerrar",
-      "FORWARDTRANSCRIPT": "Habilite se deseja que o cliente receba uma transcrição do webchat por e-mail",
-      "AUTOCLOSE": "Ative se quiser que as sessões de chat sejam encerradas como Não Gerenciadas, se nenhum agente estiver disponível.",
-      "ENABLEUNMANAGEDNOTE": "Ative se quiser que o cliente receba uma mensagem quando todos os agentes estiverem ocupados e o quando o webchat for Não Gerenciado",
-      "WEBSITEALIAS": "Um prefixo usado para compor o nome do agente (prefixo + ID do agente) mostrado ao visitante da web durante a sessão de bate-papo",
-      "ENABLECUSTOMERWRITING": "Habilite se você deseja que o Webchat inicie sem esperar atribuir a um agente disponível (atenção: se você ativar, seus webchats nunca serão Não Gerenciados).",
-      "MAPKEY": "O seguinte campo do Motion Contact Manager:",
-      "FROMKEY": "Será mapeado na sua janela do Webchat como:",
+      "FORWARDTRANSCRIPT": "Habilite se deseja que o cliente receba uma transcrição do chat por e-mail",
+      "AUTOCLOSE": "Habilite se quiser que as sessões de Chat sejam encerradas como Não Gerenciadas, se nenhum agente estiver disponível.",
+      "ENABLEUNMANAGEDNOTE": "Habilite se quiser que o cliente receba uma mensagem quando todos os agentes estiverem ocupados e o quando o Chat for Não Gerenciado",
+      "WEBSITEALIAS": "Um prefixo usado para compor o nome do agente (prefixo + ID do agente) mostrado ao cliente durante a sessão de chat",
+      "ENABLECUSTOMERWRITING": "Habilite se você deseja que o Chat inicie sem esperar atribuir a um agente disponível (atenção: se você ativar, seus chats nunca serão Não Gerenciados).",
+      "MAPKEY": "O seguinte campo da Gestão de Contatos:",
+      "FROMKEY": "Será mapeado na sua janela do Chat como:",
       "COPYSCRIPTTOCLIPBOARD": "Copie e cole este script no seu website",
       "FORWARD_OFFLINE": "Você pode adicionar vários endereços separados por vírgulas (por exemplo: john.doe@xcally.com, jane.miller@xcally.com)",
       "MOTIONADDRESS": "O campo deve ter o seguinte formato: <protocol>: // <ipaddress> [: <port>]. Exemplo: https: //X.Y.Z.W",
       "MANDATORYDISPOSITIONPAUSEID": "Pausa para Qualificação obrigatória"
     },
     "ADDRESS": "Endereço",
-    "ONLINESTATE": "Status online",
+    "ONLINESTATE": "Status Online",
     "OFFLINESTATE": "Status Offline",
     "RATINGSTATE": "Status de Avaliação",
     "ENQUIRY": "Consulta",
     "OFFLINETEMPLATE": "Modelo Offline",
-    "CHATDISPOSITIONS": "Qualificações de Webchat",
-    "NO_CHATDISPOSITION_AVAILABLE": "Nenhuma disposição de chat disponível",
-    "ADD_CHATDISPOSITION": "Adicionar Qualificação Webchat",
+    "CHATDISPOSITIONS": "Qualificações do Chat",
+    "NO_CHATDISPOSITION_AVAILABLE": "Nenhuma Qualificação do Chat disponível",
+    "ADD_CHATDISPOSITION": "Adicionar Qualificação de Chat",
     "DELETE": "Excluir",
-    "EDIT_CHATDISPOSITION": "Editar Qualificação Webchat",
-    "DELETE_CHATDISPOSITION": "Excluir Qualificação Webchat",
+    "EDIT_CHATDISPOSITION": "Editar Qualificação do Chat",
+    "DELETE_CHATDISPOSITION": "Excluir Qualificação Chat",
     "ID": "Id",
-    "NEW_CHATQUEUE": "Nova fila de chat",
-    "NEW_CHATWEBSITE": "Novo site de chat",
-    "ROUNDED": "Rounded",
+    "NEW_CHATQUEUE": "Nova Fila do Chat",
+    "NEW_CHATWEBSITE": "Novo WebSite do Chat",
+    "ROUNDED": "Arredondado",
     "SQUARED": "Squared",
     "NO_AVAILABLE_INFO": "Nenhuma informação disponível",
     "ALL_TEAMS": "Todas as Equipes",
     "SELECTED_TEAMS": "Equipes Selecionadas",
-    "PAGE": "Pagina",
+    "PAGE": "Página",
     "ROWSPERPAGE": "Linhas por página",
     "OF": "of",
     "CONTACT": "Contato",
     "ACCOUNT": "Conta",
     "INTERACTION": "Interação",
     "INTERACTIONS": "Interações",
-    "WEBSITE": "Website",
+    "WEBSITE": "WebSite",
     "ALL": "Todos",
-    "SELECT_STATUS": "Selecione um status",
+    "SELECT_STATUS": "Selecione um Status",
     "FILTER": "Filtro",
     "FILTERS": "Filtros",
-    "TEAMADD_CHATQUEUE": "Adicionar equipe à fila de chat",
-    "AGENTADD_CHATQUEUE": "Adicionar Agente à Fila do Webchat",
+    "TEAMADD_CHATQUEUE": "Adicionar Equipe à Fila do Chat",
+    "AGENTADD_CHATQUEUE": "Adicionar Agente à Fila do Chat",
     "ALL_AGENTS": "Todos os Agentes",
     "SELECTED_AGENTS": "Agentes Selecionados",
     "CLOSEDAT": "Encerrado em",
     "DISPOSITION": "Qualificação",
     "CREATEDAT": "Criado em",
-    "NOTES": "Notas",
+    "NOTES": "Observações",
     "NO_INTERACTION_AVAILABLE": "Não há interações disponíveis",
-    "SELECTED_WEBSITE": "Selecione um site",
+    "SELECTED_WEBSITE": "Selecione um WebSite",
     "GOTOP": "Gotop",
     "EDIT_GOTOP": "Editar Gotop",
-    "SELECT_WEBSITE": "Selecione um site",
+    "SELECT_WEBSITE": "Selecione um WebSite",
     "INFO": "Info",
-    "OFFLINEMESSAGES_CHATWEBSITE": "Ir para mensagens off-line",
-    "WAITINGTITLE": "Esperando Título",
-    "WAITINGMESSAGE": "Mensagem de espera",
+    "OFFLINEMESSAGES_CHATWEBSITE": "Ir para Mensagens Offline",
+    "WAITINGTITLE": "Título de Espera",
+    "WAITINGMESSAGE": "Mensagem de Espera",
     "RATING": "Avaliação",
-    "NO_RATINGVALUE": "Sem avaliação",
+    "NO_RATINGVALUE": "Sem Avaliação",
     "DEFAULT_PAUSE": "Pausa Padrão",
     "UNKNOWN": "Desconhecido",
     "UNREGISTERED": "Não registrado",
     "UNAVAILABLE": "Indisponível",
-    "NOT_INUSE": "Fora de uso",
+    "NOT_INUSE": "Disponível",
     "REACHABLE": "Alcançável",
-    "IN_USE": "Em uso",
+    "IN_USE": "Ocupado",
     "VOICE": "Voz",
     "INTERACTIONS_CHATWEBSITE": "Ir para Interações",
     "REFRESH_INTERACTIONS": "Atualizar Interações",
     "DELETE_INTERACTION": "Excluir Interação",
-    "AGENTADD_CHATWEBSITE": "Adicionar Agente ao Website do Webchat",
-    "TEAMS_ASSOCIATION": "Associação de equipes",
+    "AGENTADD_CHATWEBSITE": "Adicionar Agente ao Website do Chat",
+    "TEAMS_ASSOCIATION": "Associação de Equipes",
     "MANDATORYDISPOSITION": "Qualificação obrigatória",
     "MANDATORYDISPOSITIONPAUSEID": "Pausa para Qualificação obrigatória",
-    "ENABLESENDBUTTON": "Ativar Botão Enviar",
+    "ENABLESENDBUTTON": "Habilitar 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",
+    "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",
-    "VIDAOOESCALATION": "Iniciar videochamada",
-    "VIDAOOSESSION": "Iniciar videochamada",
+    "VIDAOOAPIKEY": "Chave API do Vidaoo",
+    "VIDAOOESCALATION": "Iniciar Vídeo Chamada",
+    "VIDAOOSESSION": "Iniciar Vídeo Chamada",
     "VIDEO": "Vídeo",
     "CLIENTEMAIL": "Email do Cliente",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Editar Dialogflow V2",
-    "PRIVATEKEY": "Chave privada",
-    "PROJECTID": "ID do projeto",
-    "EMAIL_ACCOUNT": "Conta de e-mail",
-    "OPEN_NEW_INTERACTION": "Abra uma nova interação",
-    "SUBJECT": "Sujeito",
-    "ADD_NOTE": "Adicionar Nota",
+    "PRIVATEKEY": "Chave Privada",
+    "PROJECTID": "ID do Projeto",
+    "EMAIL_ACCOUNT": "Conta de Email",
+    "OPEN_NEW_INTERACTION": "Abrir nova interação",
+    "SUBJECT": "Assunto",
+    "ADD_NOTE": "Adicionar Oberservação",
     "CANNED_ANSWER_NOT_FOUND": "Nenhuma resposta pré-definida foi encontrada",
     "NOTE": "Observação",
-    "VIDAOOMETADATA": "Vidaoo Metadata",
-    "VIDAOONOTE": "Vidaoo Note",
-    "VIDAOOTOPIC": "Tema Vidaoo",
+    "VIDAOOMETADATA": "Metadata do Vidaoo",
+    "VIDAOONOTE": "Observação do Vidaoo",
+    "VIDAOOTOPIC": "Tema do Vidaoo",
     "CHANNELID": "ID do Canal",
     "EDIT_TVOX": "Editar TVox",
-    "MOTIONTITLE": "Título de Movimento",
-    "MOTIONURL": "URL de movimento",
-    "MOTIONURLONANSWER": "URL de movimento na resposta",
-    "MOTIONURLONRING": "URL de movimento no anel",
-    "SERVICEID": "ID de serviço",
+    "MOTIONTITLE": "Título do Motion",
+    "MOTIONURL": "URL do Motion",
+    "MOTIONURLONANSWER": "URL do Motion no Atendimento",
+    "MOTIONURLONRING": "URL do Motion no Toque",
+    "SERVICEID": "ID de Serviço",
     "SERVICENAME": "Nome do Serviço",
     "TVOX": "TVox",
     "TVOXIP": "Endereço IP da TVox",
-    "TVOXLOGINURL": "URL REST de login da TVox",
+    "TVOXLOGINURL": "URL REST de Login da TVox",
     "TVOXPASSWD": "Senha TVox",
-    "TVOXSESSIONURL": "Url REST da sessão TVox",
-    "TVOXURL": "URL de TVox IP",
-    "TVOXUSERNAME": "Nome de usuário da TVox",
+    "TVOXSESSIONURL": "URL REST de Sessão da TVox",
+    "TVOXURL": "URL da TVox IP",
+    "TVOXUSERNAME": "Nome de Usuário da TVox",
     "LABELTEXT": "Texto da etiqueta",
-    "TEXT_BUTTON_COLOR": "Cor do botão de texto"
+    "TEXT_BUTTON_COLOR": "Cor do Botão de Texto"
   }
 }
index f16f522..87ce427 100644 (file)
@@ -2,12 +2,12 @@
   "CONTACTMANAGER": {
     "SELECT_TAG": "Selecione Tags",
     "CUSTOMER_JOURNEY": "Jornada do Cliente",
-    "USERID": "Agent ID Agendamento",
+    "USERID": "ID do Agente no Agendamento",
     "PRIORITY": "Prioridade",
     "MOTIONDIALER": "Motion Bull",
     "IMPORT_CONTACTS": "Importar Contatos",
     "PREFIX": "Prefixo de Discagem",
-    "VOICEQUEUEID": "ID Fila de Voz",
+    "VOICEQUEUEID": "ID da Fila de Voz",
     "CAMPAIGNID": "ID Campanha",
     "STATE": "Estado",
     "NAME": "Nome",
@@ -15,7 +15,7 @@
     "UNIQUEID": "ID Único",
     "STATUS": "Status",
     "STARTTIME": "Início",
-    "ENDTIME": "Fim",
+    "ENDTIME": "Hora do Término",
     "MOTION_BULL": "Motion Bull",
     "HOPPER": "Funil",
     "FINAL": "Finalização",
@@ -26,7 +26,7 @@
     "EDIT_HOPPER": "Editar Funil",
     "DELETE_LIST": "Excluir Lista",
     "DELETE_HOPPER": "Excluir Funil",
-    "RELOAD": "Reload",
+    "RELOAD": "Recarregar",
     "NO_COMPANIES": "Nenhuma Empresa",
     "NO_AVAILABLE_ITEMS": "Nenhum Item Disponível",
     "ADD": "Adicionar",
@@ -51,7 +51,7 @@
     "BACK": "Voltar",
     "SELECTED": "Selecionado",
     "SELECT_ALL": "Selecionar Todos",
-    "SELECT_NONE": "Desselecionar",
+    "SELECT_NONE": "Selecione Nenhum",
     "COMPANIES": "Empresas",
     "EDIT_COMPANY": "Editar Empresa",
     "DELETE_COMPANY": "Excluir Empresa",
@@ -89,9 +89,9 @@
     "SETTINGS": "Configurações",
     "GENERAL": "Geral",
     "CUSTOMFIELDS": "Campos Personalizados",
-    "NO_CUSTOMFIELD_AVAILABLE": "Nenhum Campo Personalizado Disponível",
+    "NO_CUSTOMFIELD_AVAILABLE": "Nenhum Campo Personalizado disponível",
     "ADD_TAG": "Adicionar Tag",
-    "NO_TAG": "Sem Tags",
+    "NO_TAG": "Nenhuma Tags",
     "ALIAS": "Alias",
     "TYPE": "Tipo",
     "VALUE": "Valor",
     "NEW_COMPANY": "Nova Empresa",
     "NEW_CONTACT": "Novo Contato",
     "NEW_TAG": "Nova Tag",
-    "UPLOAD_CONTACTS": "Upload Contatos",
+    "UPLOAD_CONTACTS": "Upload de Contatos",
     "FINISH": "Terminar",
     "SUCCESS": "Sucesso",
     "FAILURE": "Falha",
     "ALL_CONTACTS": "Todos os Contatos",
     "NEW_CUSTOMFIELD": "Novo Campo Personalizado",
-    "NO_VOICEDISPOSITION_AVAILABLE": "Nenhuma Qualificação de Voz Disponível",
+    "NO_VOICEDISPOSITION_AVAILABLE": "Nenhuma Qualificação de Voz disponível",
     "ADD_VOICEDISPOSITION": "Adicionar Qualificação de Voz",
     "EDIT_VOICEDISPOSITION": "Editar Qualificação de Voz",
     "DELETE_VOICEDISPOSITION": "Excluir Qualificação de Voz",
     "EMAIL_DOMAIN": "Domínio de Email",
     "ADDRESS": "Endereço",
     "POSTAL_CODE": "CEP",
-    "SHIPMENTADDRESS": "Endereço de Envio",
+    "SHIPMENTADDRESS": "Endereço de Entrega",
     "COPY_CONTACT": "Copiar Contato",
     "GOTOCONTACTS_LIST": "Ir para Listas",
     "GOTOCONTACTS_COMPANY": "Ir para Empresas",
     "ADD_AGENT_TO_LIST": "Adicionar Agente à Lista",
     "AGENTADD_LIST": "Adicionar Agentes à Lista",
-    "NO_AVAILABLE_INFO": "Nenhuma Informação Disponível",
+    "NO_AVAILABLE_INFO": "Nenhuma informação disponível",
     "NONE": "Nenhum",
     "FULLNAME": "Nome Completo",
     "CHECK_DUPLICATES": "Verificar Duplicados",
     "DUPLICATES": "Duplicados",
     "UPLOAD_CSV": "Upload CSV",
     "TAG": "Tag",
-    "UPLOAD": "Envio",
+    "UPLOAD": "Upload",
     "ALL_AGENTS": "Todos os Agentes",
     "SELECTED_AGENTS": "Agentes Selecionados",
     "DATE_OF_BIRTH": "Data de Nascimento",
       "PHONEBAR_API": "Para habilitar click-to-call, insira o número do telefone e verifique se o controle remoto esta ativo."
     },
     "PAGE": "Página",
-    "ROWSPERPAGE": "Linhas por Página",
+    "ROWSPERPAGE": "Linhas por ágina",
     "OF": "do",
     "SOCIAL": "Social",
     "ROW": "Linha",
     "FLATDISCOUNT": "Desconto da Empresa",
     "INVOICEARTICLE": "Law Articles",
     "ISOCODE": "Código ISO",
-    "PAYMENTMETHOD": "Forma de pagamento",
+    "PAYMENTMETHOD": "Forma de Pagamento",
     "PIVA": "Número de IVA",
     "RELATIONSHIP": "Relacionamento ...",
     "RELATIONSHIPCOMPANY": " ... com",
index 174650f..0661352 100644 (file)
@@ -1,59 +1,59 @@
 {
   "DASHBOARDS": {
     "DOWNLOAD": "Download",
-    "UNMANAGED_RATE": "Taxa não gerenciada",
-    "UNMANAGED_RATE_TEXT": "Taxa não gerenciada de interações",
-    "VOICE_WAITING": "ESPERANDO",
+    "UNMANAGED_RATE": "Taxa de Não Gerenciado",
+    "UNMANAGED_RATE_TEXT": "Taxa de Interações Não Gerenciadas",
+    "VOICE_WAITING": "AGUARDANDO",
     "VOICE_WAITING_TEXT": "CHAMADAS AGUARDANDO EM FILA",
     "VOICE_TALKING": "FALANDO",
-    "VOICE_TALKING_TEXT": "CHAMADAS DE FILA ATIVAS",
-    "VOICE_ANSWERED": "RESPONDIDAS",
-    "VOICE_ANSWERED_TEXT": "CHAMADAS DE FILA RESPONDIDAS",
+    "VOICE_TALKING_TEXT": "CHAMADAS EM CURSO",
+    "VOICE_ANSWERED": "ATENDIDAS",
+    "VOICE_ANSWERED_TEXT": "CHAMADAS ATENDIDAS",
     "VOICE_ABANDONED": "ABANDONADO",
-    "VOICE_ABANDONED_TEXT": "CHAMADAS DE FILA ABANDONADAS",
+    "VOICE_ABANDONED_TEXT": "CHAMADAS ABANDONADAS",
     "VOICE_TOTAL_OFFERED": "TOTAL OFERECIDO",
     "VOICE_TOTAL_OFFERED_TEXT": "TOTAL DE CHAMADAS NA FILA",
-    "TODAY_INTERACTIONS_STATS": "Interações Estatísticas Diárias",
+    "TODAY_INTERACTIONS_STATS": "Estatísticas Diárias de Interações",
     "VOICE_AVG_HOLD_TIME": "TEMPO MÉDIO DE ESPERA",
-    "VOICE_AVG_HOLD_TIME_TEXT": "TEMPO MÉDIO DE ESPERA EM FILA",
-    "VOICE_AVG_TALK_TIME": "TEMPO DE CONVERSA MÉDIA",
-    "VOICE_AVG_TALK_TIME_TEXT": "TEMPO DE CONVERSA MÉDIA NA FILA",
-    "VOICE_ANSWER_RATE": "TAXA DE RESPOSTA",
-    "VOICE_ANSWER_RATE_TEXT": "TAXA DE RESPOSTA DA FILA",
+    "VOICE_AVG_HOLD_TIME_TEXT": "TEMPO MÉDIO DE ESPERA",
+    "VOICE_AVG_TALK_TIME": "TEMPO MÉDIO ATENDIMENTO",
+    "VOICE_AVG_TALK_TIME_TEXT": "TEMPO MÉDIO ATENDIMENTO",
+    "VOICE_ANSWER_RATE": "TAXA DE ATENDIMENTO",
+    "VOICE_ANSWER_RATE_TEXT": "TAXA DE ATENDIMENTO",
     "VOICE_ABANDON_RATE": "TAXA DE ABANDONO",
-    "VOICE_ABANDON_RATE_TEXT": "TAXA DE ABANDONO DA FILA",
-    "VOICE_UNMANAGED": "NÃO GERIDO",
-    "VOICE_UNMANAGED_TEXT": "NÃO GERIDOS DA FILA",
-    "OPENED_TEXT": "Interações abertas",
-    "MANAGED": "Gerenciou",
-    "MANAGED_TEXT": "Interações gerenciadas",
+    "VOICE_ABANDON_RATE_TEXT": "TAXA DE ABANDONO",
+    "VOICE_UNMANAGED": "NÃO GERENCIADO",
+    "VOICE_UNMANAGED_TEXT": "CHAMADAS NÃO GERENCIADAS",
+    "OPENED_TEXT": "Interações Abertas",
+    "MANAGED": "Atendido",
+    "MANAGED_TEXT": "Interações Atendidas",
     "ABANDONED": "Abandonado",
     "ABANDONED_TEXT": "Interações Abandonadas",
-    "ABANDONED_RATE": "Taxa Abandono",
+    "ABANDONED_RATE": "Taxa de Abandono",
     "ABANDONED_RATE_TEXT": "Taxa de Abandono de Interações",
-    "TOTAL_OFFERED": "Total oferecido",
+    "TOTAL_OFFERED": "Total Oferecido",
     "TOTAL_OFFERED_TEXT": "Interações Oferecidas",
-    "AVG_HOLD_TIME_TEXT": "Tempo médio de Espera das Interações",
-    "MANAGED_RATE": "Taxa gerenciada",
-    "MANAGED_RATE_TEXT": "Taxa gerenciada de interações",
-    "AVG_MANAGED_TIME": "AVG Management Time",
-    "AVG_MANAGED_TIME_TEXT": "Interactions AVG Management Time",
-    "NO_DISPOSITION_SET": "Nenhum conjunto de disposição",
+    "AVG_HOLD_TIME_TEXT": "Tempo Médio de Espera das Interações",
+    "MANAGED_RATE": "Taxa de Atendimento",
+    "MANAGED_RATE_TEXT": "Taxa de Atendimento de Interações",
+    "AVG_MANAGED_TIME": "Tempo Médio de Atendimento",
+    "AVG_MANAGED_TIME_TEXT": "Tempo Médio de Atendimento das Interações",
+    "NO_DISPOSITION_SET": "Nenhum conjunto de qualificação",
     "AGENTS": "Agentes",
     "TRANSFER": "Transferir",
     "NO_DATA_AVAILABLE": "Não há dados disponíveis",
     "CUSTOMER_JOURNEY": "Jornada do Cliente",
-    "ME": "Me",
+    "ME": "Eu",
     "CURRENTLY_IN_USE_BY": "Atualmente em uso por",
     "NOTAVAILABLE": "Não disponível",
     "CLICKRELOAD": "Novas chamadas abandonadas! Por favor faça reload",
     "ASSIGNTO": "Atribuir a",
-    "SELECT_CAMPAIGN": "Selecione uma fila",
+    "SELECT_CAMPAIGN": "Selecionar Fila",
     "FREE": "Livre",
     "RESERVED": "Reservado",
     "QUEUECALLEREXITREASON": "Motivo",
-    "QUEUECALLEREXITAT": "Derrubado",
-    "LASTASSIGNEDTO": "Último Atribuído Para",
+    "QUEUECALLEREXITAT": "Perdido",
+    "LASTASSIGNEDTO": "Atribuído por último para",
     "ABANDONEDQUEUECALLS": "Chamadas Abandonadas na Fila",
     "ABANDONAT": "Abandonado",
     "QUEUE": "Fila",
     "READ": "Lido",
     "UNREAD": "Não lido",
     "SELECT_READ_UNREAD": "Selecione Lido/Não Lido",
-    "SELECT_AGENT": "Selecione o agente",
+    "SELECT_AGENT": "Selecione Agente",
     "MARK_AS_UNREAD": "Marcar como não lido",
-    "FILTER_VOICE_QUEUES": "Filtrar Filas de voz",
-    "CHANNEL_WAITING_TEXT": "Interações aguardando em fila",
+    "FILTER_VOICE_QUEUES": "Filtrar Filas de Voz",
+    "CHANNEL_WAITING_TEXT": "Interações Aguardando em Fila",
     "CHANNEL_QUEUE": "Fila",
     "CHANNEL_FROM": "De",
     "LOADING_INTERACTION": "Estamos carregando a interação...",
@@ -85,7 +85,7 @@
     "WED": "Qua",
     "THU": "Qui",
     "FRI": "Sexta",
-    "SAT": "Sab",
+    "SAT": "Sat",
     "SUN": "Dom",
     "DELETE": "Excluir",
     "LAST_3_DAYS": "Últimos 3 dias",
@@ -97,7 +97,7 @@
     "THIS_WEEK": "Esta Semana",
     "YESTERDAY": "Ontem",
     "TODAY": "Hoje",
-    "SELECT_DATE": "Selecione a data de início",
+    "SELECT_DATE": "Selecione a Data de Início",
     "HOME": "Inicio",
     "SET_AS": "Definir como",
     "PENDING": "Pendente",
     "DURATION": "Duração",
     "CHAT": "Chat",
     "MAIL": "Email",
-    "SMS": "Sms",
+    "SMS": "SMS",
     "OPENCHANNEL": "Open Channel",
     "FAX": "Fax",
-    "NOT_ASSIGNED": "Não atribuído",
+    "NOT_ASSIGNED": "Não Atribuído",
     "UNKNOWN": "Desconhecido",
-    "SELECT_USER": "Selecione o usuário",
+    "SELECT_USER": "Selecione Usuário",
     "LAST_MESSAGE": "Última mensagem",
     "USER": "Usuário",
     "RATING": "Avaliação",
     "FEEDBACK": "Feedback",
     "SUBJECT": "Assunto",
-    "REFERER": "Referenciador",
+    "REFERER": "Indicador",
     "ACCOUNT": "Conta",
     "WEBSITE": "Website",
     "AGENT": "Agente",
     "DISPOSITION": "Qualificar",
     "CONTACT": "Contato",
     "INTERACTION": "Interação",
-    "BROWSER_NAME": "Nome do Browser",
-    "BROWSER_VERSION": "Versão Browser",
-    "OS_NAME": "Nome do sistema operacional",
-    "OS_VERSION": "Versão do sistema operacional",
+    "BROWSER_NAME": "Nome do Navegador",
+    "BROWSER_VERSION": "Versão do Navegador",
+    "OS_NAME": "Nome do Sistema Operacional",
+    "OS_VERSION": "Versão do Sistema Operacional",
     "DEVICE_MODEL": "Modelo do Dispositivo",
-    "DEVICE_VENDOR": "Fabricante do Dispositivos",
+    "DEVICE_VENDOR": "Fabricante do Dispositivo",
     "DEVICE_TYPE": "Tipo do Dispositivo",
-    "RECALLME": "Lembre-me",
+    "RECALLME": "Agendar",
     "DROP_RATE": "Taxa de Perda",
     "DROPPED": "Perdidas",
     "DROPPED_TEXT": "Chamadas Perdidas em Fila",
     "DETAIL": "Detalhe",
     "MOTION_BULL": "Motion Bull",
     "LIMITED": "Limitado",
-    "LIMITED_TEXT": "Campanhas de Ligações URA Originais/Limite",
+    "LIMITED_TEXT": "Campanhas de URA Originado/Limitado",
     "DASHBOARDS": "Dashboards",
     "RECORDINGS": "Gravações",
-    "TODAY_MOTION_BULL_STATS": "Estatísticas diárias das campanhas de filas",
+    "TODAY_MOTION_BULL_STATS": "Estatísticas Diárias das Campanhas de Fila",
     "ORIGINATED": "Originado",
-    "ORIGINATED_TEXT": "Chamadas de Fila Originadas",
+    "ORIGINATED_TEXT": "Chamadas Originadas",
     "UPDATE": "Atualizar",
     "MORE": "Adicionar",
     "MOTIONDIALER": "Motion Bull",
     "DISPOSE": "Encerrar",
     "QUEUES": "Filas",
-    "DIALER_CALL": "Numéro discado",
+    "DIALER_CALL": "Numéro Discado",
     "ELAPSED_TIME": "Tempo de Atendimento",
     "EDIT": "Editar",
     "MERGE": "Mesclar",
     "DUPLICATE": "Duplicado",
-    "UNIQUEID": "Uniqueid",
+    "UNIQUEID": "ID único",
     "CAMPAIGN": "Campanha",
     "NONE": "Nenhum",
     "NAME": "Nome",
     "ANSWER_MACHINE": "Answer Machine",
     "INTERESTED": "Interessado",
-    "NOT_INTERESTED": "Não interessado",
-    "PERSONAL_INFO": "Informação pessoal",
+    "NOT_INTERESTED": "Não Interessado",
+    "PERSONAL_INFO": "Informação Pessoal",
     "SOLD": "Vendido",
     "SPECIAL": "Especial",
     "BLACKLIST": "Blacklist",
-    "RESCHEDULE": "Reprogramar",
+    "RESCHEDULE": "Reagendar",
     "FIRSTNAME": "Primeiro Nome",
-    "LASTNAME": "Último nome",
-    "MOBILE": "Mobile",
+    "LASTNAME": "Sobrenome",
+    "MOBILE": "Celular",
     "DATE_OF_BIRTH": "Data de Aniversário",
     "COMPANY": "Empresa",
     "TAG": "Tag",
     "CUSTOM_FIELDS": "Campos Personalizados",
     "GENERAL": "Geral",
     "VOICE": "Voz",
-    "TODAY_IVR_CAMPAIGNS_STATS": "Estatísticas de Campanhas Gerais",
-    "TODAY_INBOUND_STATS": "Estatísticas diárias da fila de entrada",
-    "TODAY_OUTBOUND_STATS": "Estatísticas diárias de saída",
-    "WAITING": "Esperando",
+    "TODAY_IVR_CAMPAIGNS_STATS": "Estatísticas Diárias de Campanhas de URA",
+    "TODAY_INBOUND_STATS": "Estatísticas Diárias da Fila de Entrada",
+    "TODAY_OUTBOUND_STATS": "Estatísticas Diárias de Chamadas de Saída",
+    "WAITING": "Aguardando",
     "TALKING": "Falando",
-    "INBOUND_ANSWERED": "Respondidas",
-    "OUTBOUND_ANSWERED": "Respondidas",
+    "INBOUND_ANSWERED": "Atendidas",
+    "OUTBOUND_ANSWERED": "Atendidas",
     "AVG_HOLD_TIME": "Tempo Médio de Espera",
-    "INBOUND_ANSWER_RATE": "Taxa de resposta",
-    "OUTBOUND_ANSWER_RATE": "Taxa de resposta",
+    "INBOUND_ANSWER_RATE": "Taxa de Atendimento",
+    "OUTBOUND_ANSWER_RATE": "Taxa de Atendimento",
     "ABANDON_RATE": "Taxa de Abandono",
-    "UNMANAGED": "Não gerenciado",
+    "UNMANAGED": "Não Gerenciado",
     "TOTAL": "Total",
     "TOT_DURATION": "Duração Total",
     "AVG_DURATION": "Duração Média",
     "HELP": {
-      "UNMANAGED_RATE": "A taxa não gerenciada de todas as interações",
-      "WAITING": "O número total de interações de espera",
-      "OPENED": "O número total de interações ativas",
-      "MANAGED": "O número total de interações concluídas",
-      "ABANDONED": "O número total de interações abandonadas",
-      "TOTAL_OFFERED": "O número total de interações (concluído + abandonado)",
-      "AVG_HOLD_TIME": "O tempo médio de retenção de interação, ou seja, o tempo médio gasto aguardando a resposta de um agente, para todas as interações existentes",
+      "UNMANAGED_RATE": "Taxa de Não Gerenciada de todas as interações",
+      "WAITING": "Número total de interações em espera",
+      "OPENED": "Número total de Interações Abertas",
+      "MANAGED": "Número total de interações atendidas",
+      "ABANDONED": "Número total de interações abandonadas",
+      "TOTAL_OFFERED": "Número total de interações (concluído + abandonado)",
+      "AVG_HOLD_TIME": "Tempo médio de retenção de interação, ou seja, o tempo médio gasto aguardando a resposta de um agente, para todas as interações existentes",
       "AVG_MANAGED_TIME": "O tempo médio de interação gerenciada, ou seja, o tempo médio gasto durante a conversa",
-      "MANAGED_RATE": "A taxa gerenciada de todas as interações",
-      "ABANDONED_RATE": "A taxa de abandono de todas as interações",
-      "UNMANAGED": "O número total de interações não gerenciadas",
-      "VOICE_WAITING": "O número total de chamadas da fila de espera, para todas as filas existentes",
-      "VOICE_TALKING": "O número total de chamadas da fila ativa, para todas as filas existentes",
-      "VOICE_ANSWERED": "O número total de chamadas de fila concluídas, para todas as filas existentes",
-      "VOICE_ABANDONED": "O número total de Chamadas de Filas Abandonadas, considerando todas as Filas existentes. Observe que as chamadas que são abandonadas para timeout e joinempty não serão consideradas",
-      "VOICE_TOTAL_OFFERED": "O número total de chamadas de fila (concluído + abandonado). Observe que as chamadas que entram em um IVR e não em uma fila, não serão consideradas",
-      "VOICE_AVG_TALK_TIME": "O tempo médio de conversa da fila, ou seja, o tempo médio gasto durante a conversa, para todas as filas existentes",
-      "VOICE_AVG_HOLD_TIME": "Tempo médio de espera da fila, ou seja, o tempo médio gasto aguardando a resposta de um agente para todas as filas existentes",
-      "VOICE_ANSWER_RATE": "A taxa de resposta de todas as chamadas de fila",
-      "VOICE_UNMANAGED": "O número total de chamadas de fila não gerenciadas, para todas as filas existentes. Inclui as chamadas que são abandonadas para timeout, joinempty, leavewhenempty e exitwithkey (cfr. Asterisk doc para mais informações)",
-      "ORIGINATED": "Número total de chamadas discadas nas campanhas da fila",
-      "ORIGINATEDLIMITED": "Campanhas de Chamadas Originais / Limite",
-      "DROPPED": "O número total de chamadas de fila ignoradas, para todas as filas existentes",
-      "DROP_RATE": "A taxa de queda de todas as chamadas da fila",
-      "OUTBOUND_ANSWERED": "O número total de chamadas de saída concluídas",
-      "OUTBOUND_ANSWER_RATE": "A taxa de resposta de todas as chamadas de saída",
-      "ABANDON_RATE": "A taxa de abandono de todas as chamadas da fila",
-      "TOTAL": "O número total de chamadas de saída",
-      "TOT_DURATION": "A duração total de todas as chamadas de saída",
-      "AVG_DURATION": "A duração média de todas as chamadas de saída concluídas",
-      "MANDATORY_DISPOSITION_ENABLED": "Disposição obrigatória ativada para esta conta",
+      "MANAGED_RATE": "Taxa de atendimento de todas as interações",
+      "ABANDONED_RATE": "Taxa de abandono de todas as interações",
+      "UNMANAGED": "Número total de interações Não Gerenciadas",
+      "VOICE_WAITING": "Número total de chamadas em espera, para todas as filas existentes",
+      "VOICE_TALKING": "Número total de chamadas de saída, para todas as filas existentes",
+      "VOICE_ANSWERED": "Número total de chamadas atendidas, para todas as filas existentes",
+      "VOICE_ABANDONED": "O número total de Chamadas Abandonadas, considerando todas as Filas existentes. Observe que as chamadas que são abandonadas por timeout e joinempty não serão consideradas",
+      "VOICE_TOTAL_OFFERED": "Número total de chamadas de fila (concluído + abandonado). Observe que as chamadas que entram em uma URA e não em uma fila, não serão consideradas",
+      "VOICE_AVG_TALK_TIME": "Tempo médio de conversação, ou seja, o tempo médio gasto durante o atendimento considerando todas as filas existentes",
+      "VOICE_AVG_HOLD_TIME": "Tempo médio de espera em fila, ou seja, o tempo médio gasto aguardando o atendimento de um agente para todas as filas existentes",
+      "VOICE_ANSWER_RATE": "Taxa de atendimento de todas as filas",
+      "VOICE_UNMANAGED": "Número total de chamadas Não Gerenciadas, para todas as filas existentes. Inclui as chamadas que são abandonadas por timeout, joinempty, leavewhenempty e exitwithkey",
+      "ORIGINATED": "Número total de chamadas feitas pelas Campanhas de Discagem",
+      "ORIGINATEDLIMITED": "Chamadas da Capanha de URA Originadas/Limitada",
+      "DROPPED": "O número total de chamadas perdidas na fila, para todas as filas existentes",
+      "DROP_RATE": "Taxa de perda de todas as chamadas da fila",
+      "OUTBOUND_ANSWERED": "Número total de chamadas de saída concluídas",
+      "OUTBOUND_ANSWER_RATE": "Taxa de atendimento de todas as chamadas de saída",
+      "ABANDON_RATE": "Taxa de abandono de todas as chamadas da fila",
+      "TOTAL": "Número total de chamadas de saída",
+      "TOT_DURATION": "Duração total de todas as chamadas de saída",
+      "AVG_DURATION": "Duração média de todas as chamadas de saída concluídas",
+      "MANDATORY_DISPOSITION_ENABLED": "Qualificação obrigatória habilitada para esta conta",
       "EXACT_MATCH_FILTER": "Procure uma correspondência exata",
       "LIKE_FILTER": "Procure o padrão especificado"
     },
     },
     "NO_AVAILABLE_INFO": "Nenhuma informação disponível",
     "WELCOME_TO_MOTION": "Bem vindo ao Motion",
-    "WELCOME_MESSAGE": "Use a barra lateral esquerda para navegar pelas seções disponíveis",
+    "WELCOME_MESSAGE": "Use a barra lateral à esquerda para navegar pelas seções disponíveis",
     "ADD": "Adicionar",
     "CONTACTMANAGER": "Gestão de Contatos",
     "DASHBOARD": "Dashboard",
     "NEW_CONTACT": "Novo Contato",
     "PHONE": "Telefone",
     "SAVE": "Salvar",
-    "INBOUND_WAITING_CALLS": "Chamadas de entrada aguardando",
+    "INBOUND_WAITING_CALLS": "Chamadas em Espera",
     "CONTACTS": "Contatos",
     "MYCONTACTS": "Meus Contatos",
     "ADD_CONTACT": "Adicionar Contato",
     "RELOAD": "Recarregar",
-    "WAITING_TEXT": "Esperando Interações",
+    "WAITING_TEXT": "Interações Aguardando",
     "TALKING_TEXT": "Chamadas de Filas Ativas",
-    "INBOUND_ANSWERED_TEXT": "Chamadas de Filas Respondidas",
+    "INBOUND_ANSWERED_TEXT": "Chamadas Atendidas",
     "DROP_RATE_TEXT": "Taxa de Perda de Chamadas em Fila",
-    "AVG_TALK_TIME_TEXT": "Tempo Total de Conversa de Chamadas em Fila",
-    "INBOUND_ANSWER_RATE_TEXT": "Taxa de resposta de chamadas da fila",
-    "UNMANAGED_TEXT": "Interações não gerenciadas",
-    "TOTAL_TEXT": "Total de chamadas de saída",
+    "AVG_TALK_TIME_TEXT": "Tempo de Conversação de Chamadas em Fila",
+    "INBOUND_ANSWER_RATE_TEXT": "Taxa de Atendimento de Chamadas",
+    "UNMANAGED_TEXT": "Interações Não Gerenciadas",
+    "TOTAL_TEXT": "Total de Chamadas de Saída",
     "OUTBOUND_ANSWERED_TEXT": "Chamadas de Saída Atendidas",
-    "TOT_DURATION_TEXT": "Duração total das chamadas de saída",
-    "AVG_DURATION_TEXT": "Duração média das chamadas ativas",
-    "OUTBOUND_ANSWER_RATE_TEXT": "Chamada de saída",
-    "PAGE": "Pagina",
-    "ROWSPERPAGE": "Linhas por Página",
+    "TOT_DURATION_TEXT": "Duração Total das Chamadas de Saída",
+    "AVG_DURATION_TEXT": "Duração Média das Chamadas Ativas",
+    "OUTBOUND_ANSWER_RATE_TEXT": "Taxa de Atendimento em Chamadas de Saída",
+    "PAGE": "Página",
+    "ROWSPERPAGE": "Linhas por página",
     "OF": "do",
-    "REPLY_PLACEHOLDER": "Digite e aperte enter para enviar uma mensagem",
+    "REPLY_PLACEHOLDER": "Digite e pressione enter para enviar uma mensagem",
     "CONTACT_INFO": "Informações de Contato",
     "CLOSE_AND_DISPOSE": "Encerrar e Qualificar",
     "DISPOSITIONS": "Qualificações",
     "REJECT": "Rejeitar",
     "CLOSED": "Encerrar",
     "INFO": "Informações",
-    "NOTE": "Nota",
+    "NOTE": "Observação",
     "ACCEPT_ELSEWHERE": "Aceito em outro lugar",
     "ATTENTION": "Atenção",
     "SOCIAL": "Social",
     "SHOW_DETAILS": "Mostrar Detalhes",
     "HIDE_DETAILS": "Esconder Detalhes",
     "EXTERNAL_URL": "Link Externo",
-    "NO_MAIL_ACCOUNTS_AVAILABLE": "Nenhuma conta de e-mail disponível",
-    "NO_FAX_ACCOUNTS_AVAILABLE": "Nenhuma conta de fax disponível",
-    "NO_SMS_ACCOUNTS_AVAILABLE": "Não há contas SMS disponíveis",
-    "SELECT_DATE_RANGE": "Selecione o período",
+    "NO_MAIL_ACCOUNTS_AVAILABLE": "Nenhuma Conta de Email disponível",
+    "NO_FAX_ACCOUNTS_AVAILABLE": "Nenhuma Conta de Fax disponível",
+    "NO_SMS_ACCOUNTS_AVAILABLE": "Nenhuma Conta de SMS disponível",
+    "SELECT_DATE_RANGE": "Selecione o Período",
     "CLEAR": "Limpar",
     "CALL_NUMBER": "Ligar",
     "TRANSFER_NUMBER": "Transferir",
     "CALL_SAVED": "Chamada devidamente salva",
     "CALL_DISPOSED": "Chamada devidamente qualificada",
-    "SCHEDULED_CALLS": "Chamadas agendadas",
+    "SCHEDULED_CALLS": "Chamadas Agendadas",
     "PRIVATE": "Privado",
     "PUBLIC": "Público",
     "PUBLIC_INTERACTION": "A interação é pública",
     "VISIBILITY": "Visibilidade",
-    "INTERACTION_CLOSED": "Interação devidamente fechada",
-    "INTERACTION_CLOSED_DISPOSED": "Interação devidamente fechada e qualificada",
+    "INTERACTION_CLOSED": "Interação devidamente encerradas",
+    "INTERACTION_CLOSED_DISPOSED": "Interação devidamente encerradas e qualificadas",
     "INTERACTION_DISPOSED": "Interação devidamente qualificada",
-    "ASSIGNED_TO_OTHERS": "Atribuído a outros",
-    "SELECT_ALL": "Selecionar tudo",
-    "CHAT_INTERACTIONS": "Interações de Webchat",
+    "ASSIGNED_TO_OTHERS": "Atribuído a outro",
+    "SELECT_ALL": "Selecionar Tudo",
+    "CHAT_INTERACTIONS": "Interações de Chat",
     "FAX_INTERACTIONS": "Interações de Fax",
     "ID": "Id",
-    "MAIL_INTERACTIONS": "Interações por email",
-    "OPENCHANNEL_INTERACTIONS": "Interações de canal aberto",
-    "SMS_INTERACTIONS": "Interações por SMS",
+    "MAIL_INTERACTIONS": "Interações de Email",
+    "OPENCHANNEL_INTERACTIONS": "Interações do Open Channel",
+    "SMS_INTERACTIONS": "Interações de SMS",
     "CANCEL": "Cancelar",
     "DRAFT": "Rascunho",
     "DRAFT_SAVE_WARNING_MESSAGE": "Existe um rascunho salvo para esta interação. Tem certeza de que deseja substituí-lo?",
     "ALL_PRODUCTS": "Todos",
     "ALL_STATUS": "Todos",
     "ALL_STEP": "Todos",
-    "ALL_WORKFLOW": "Todo Fluxo de Trabalho",
+    "ALL_WORKFLOW": "Todo o Fluxo de Trabalho",
     "ATTENDACELASTINVOICE": "Última fatura",
     "ATTENDACENEXTINVOICE": "Próxima fatura",
     "AUTHORIZED": "AUTORIZADO",
     "AUTOPROFORMA": "AUTO-PROFORMA",
     "BALANCE": "SALDO",
     "BY": "Por",
-    "CLONEPROFORMA": "Clone",
+    "CLONEPROFORMA": "Clonar",
     "COMPANIES": "Empresas",
     "COMPANYCITY": "Cidade",
     "COMPANYCOUNTRY": "País",
     "COMPANYDESC": "Descrição",
-    "COMPANYEMAIL": "O email",
+    "COMPANYEMAIL": "Email",
     "COMPANYFAX": "Fax",
     "COMPANYNAME": "Companhia",
     "COMPANYNATION": "Nação",
     "CREATIONDATE": "Criado em",
     "CREDITINOTENAME": "Nome",
     "CREDITNOTE": "NOTA DE CRÉDITO",
-    "CREDITNOTEDETAILS": "Detalhe da nota de crédito",
-    "CREDITNOTE_INFO": "Nota de crédito",
+    "CREDITNOTEDETAILS": "Detalhe da Nota de Crédito",
+    "CREDITNOTE_INFO": "Nota de Crédito",
     "DELETE_PRODUCT": "Excluir Produto",
     "DEPOSIT": "DEPÓSITO",
     "DETAILS": "Detalhes",
     "DOSSIER": "Dossiê",
     "DOSSIERID": "ID do Dossiê",
     "DOSSIERNAME": "Nome do Dossiê",
-    "DOSSIERNOTES": "Nota",
+    "DOSSIERNOTES": "Observação",
     "DOSSIERS": "Dossiês",
     "DOSSIER_INFO": "Informação",
     "ENDDATE": "Data de Encerramento",
     "FROM": "From",
     "GRAPHINVOICES": "Tabela de emissão de faturas",
-    "INASSET": "De ativos",
+    "INASSET": "Ativos",
     "INVOICE": "FATURA",
     "INVOICEDETAILS": "DETALHES DA FATURA",
     "INVOICEDISCOUNT": "Desconto",
     "INVOICEEMITED": "Emitido",
     "INVOICEID": "Fatura",
-    "INVOICENAME": "Nome da fatura",
+    "INVOICENAME": "Nome da Fatura",
     "INVOICENOPRODUCTAMOUNT": "Montante",
     "INVOICENOPRODUCTDESCRIPTION": "Descrição na fatura",
-    "INVOICENOPRODUCTSAVE": "Salve \e051",
+    "INVOICENOPRODUCTSAVE": "Salvar",
     "INVOICENOPRODUCTUPDATE": "Atualizar",
     "INVOICENOTAXAMOUNT": "IMPOSTO",
-    "INVOICENOTES": "Nota",
+    "INVOICENOTES": "Observação",
     "INVOICEPAYED": "Pago",
     "INVOICES": "FATURAS",
     "INVOICESTATUS": "Estado",
     "INVOICETOTAL": "Total",
     "INVOICE_INFO": "Fatura",
     "MANAGESALES": "Assinaturas",
-    "MOVEASSET": "DE ATIVOS",
-    "MOVECREDITNOTE": "NOTA DE CRÉDITO AUTOMÁTICO",
+    "MOVEASSET": "ATIVOS",
+    "MOVECREDITNOTE": "SELF-CREDIT NOTE",
     "NETPRICE": "Preço",
     "NEW_COMPANY": "Novo",
     "NEW_DOSSIER": "Novo Dossiê",
-    "NEXTINVOICE": "Próxima fatura",
-    "NOTES": "Nota",
+    "NEXTINVOICE": "Próxima Fatura",
+    "NOTES": "Observações",
     "NO_PRODUCTINVOICE_AVAILABLE": "Nenhum produto",
     "NO_PRODUCTPRICELIST_AVAILABLE": "Não há dados disponíveis",
     "NO_PRODUCTPROFORMA_AVAILABLE": "Não há dados disponíveis",
     "NUMBER": "Número",
-    "OPENDATE": "Data aberta",
+    "OPENDATE": "Data de Abertura",
     "ORDER": "Ordem",
     "ORDERCLIENTCODE": "Código do Consumidor",
     "ORDERID": "Ordem",
-    "ORDERNOTES": "Nota",
+    "ORDERNOTES": "Observação",
     "ORDERSTATUS": "Estado",
     "ORDER_INFO": "Ordem",
-    "PAIDANDEXPIRED": "Forma de pagamento",
+    "PAIDANDEXPIRED": "Forma de Pagamento",
     "PAYED_AY": "Pago em",
-    "PAYMENT": "Forma de pagamento",
+    "PAYMENT": "Forma de Pagamento",
     "PAYMENTMETHOD": "Métodos de Pagamento",
     "PAYMENTS": "PAGAMENTOS",
-    "PAYMENT_INFO": "Informação de pagamento",
+    "PAYMENT_INFO": "Informação de Pagamento",
     "PDFCREDITNOTE": "PDF",
     "PDFINVOICE": "PDF",
     "PDFPROFORMA": "PDF",
-    "PRICELIST": "Lista de preços",
+    "PRICELIST": "Lista de Preços",
     "PRICELISTDISCOUNT": "Desconto na lista de preços",
-    "PRICELISTNAME": "Lista de preços",
-    "PRICELISTNETPRICE": "Preço líquido",
+    "PRICELISTNAME": "Lista de Preços",
+    "PRICELISTNETPRICE": "Preço Líquido",
     "PRICESALELISTNETPRICE": "Prezzo listino",
     "PRODUCTATUNIT": "Unidade",
-    "PRODUCTCODE": "Código do produto",
+    "PRODUCTCODE": "Código do Produto",
     "PRODUCTDESCRIPTION": "Descrição",
-    "PRODUCTFILTERNAME": "Nome do filtro",
+    "PRODUCTFILTERNAME": "Nome do Filtro",
     "PRODUCTININVOICE": "Produtos na fatura",
     "PRODUCTINPROFORMA": "Produtos em pró-forma",
     "PRODUCTINQUOTATION": "DETALHES DO PRODUTO",
-    "PRODUCTNAME": "produtos",
-    "PRODUCTNOTE": "Nota",
+    "PRODUCTNAME": "Produtos",
+    "PRODUCTNOTE": "Observação",
     "PRODUCTPRICE": "Preço",
     "PRODUCTQTY": "Quantidade",
     "PRODUCTS": "PRODUTOS",
     "PROFORMAAUTHORIZED": "Proforma autorizado",
     "PROFORMADETAILS": "Detalhes",
     "PROFORMAID": "ID Proforma",
-    "PROFORMANAME": "Nome pró-forma",
-    "PROFORMANOTES": "Nota",
+    "PROFORMANAME": "Nome da Pró-forma",
+    "PROFORMANOTES": "Observação",
     "PROFORMAS": "PROFORMA",
     "PROFORMASTATUS": "Estado",
     "PROFORMA_INFO": "Proforma",
     "QUANTITY": "Quantidade",
     "QUOTATION": "COTAÇÃO",
-    "QUOTATIONDISCOUNT": "Desconto de cotação",
+    "QUOTATIONDISCOUNT": "Desconto de Cotação",
     "QUOTATIONID": "Oferta",
-    "QUOTATIONINVOICEID": "ID da fatura",
-    "QUOTATIONNAME": "Nome da cotação",
-    "QUOTATIONNOTES": "Notas de cotação",
-    "QUOTATIONPRODUCTNOTE": "Nota do produto",
+    "QUOTATIONINVOICEID": "ID da Fatura",
+    "QUOTATIONNAME": "Nome da Cotação",
+    "QUOTATIONNOTES": "Observações da Cotação",
+    "QUOTATIONPRODUCTNOTE": "Observação do Produto",
     "QUOTATIONPRODUCTTYPE": "Tipo",
-    "QUOTATIONPROFORMAID": "ID pró-forma",
+    "QUOTATIONPROFORMAID": "ID da Pró-forma",
     "QUOTATIONQTY": "Quantidade",
     "QUOTATIONSTATUS": "Estado",
     "QUOTATIONSUBSCRIPTION": "Duração",
     "QUOTATIONTOTAL": "TOTAL",
     "QUOTATIONTOTALPRICE": "Total líquido",
     "QUOTATIONTOTALS": "Total",
-    "QUOTATIONTOTALTAX": "Taxa total",
+    "QUOTATIONTOTALTAX": "Imposto total",
     "QUOTATIONUNIT": "Unidade",
-    "QUOTATIONVAT": "CUBA",
-    "QUOTATION_INFO": "cotação",
+    "QUOTATIONVAT": "VAT",
+    "QUOTATION_INFO": "Cotação",
     "REQUEST": "SOLICITAÇÃO",
     "REQUESTID": "Solicitação",
-    "REQUESTNAME": "Nome da solicitação",
-    "REQUESTNOTES": "Solicitar notas",
+    "REQUESTNAME": "Nome da Solicitação",
+    "REQUESTNOTES": "Observações da Solicitação",
     "REQUEST_INFO": "Solicitação",
-    "SELECT_COMPANY": "Selecionar empresa",
-    "SELECT_PERIOD": "Selecionar intervalo",
-    "SELECT_PERIOD_CREATION": "Selecionar data de criação",
-    "SELECT_PERIOD_EXPIRE": "Selecionar data de validade",
+    "SELECT_COMPANY": "Selecionar Empresa",
+    "SELECT_PERIOD": "Selecione período",
+    "SELECT_PERIOD_CREATION": "Selecione Data de Criação",
+    "SELECT_PERIOD_EXPIRE": "Selecione Data de Validade",
     "SELECT_PERIOD_START": "Selecione a data",
     "SELECT_PRODUCT": "Selecionar produto",
-    "SELECT_PRODUCTTYPE": "Selecione o tipo",
-    "SELECT_WORKFLOW": "Selecionar fluxo de trabalho",
-    "SELECT_WORKFLOWSTEPS": "Selecione o estado do fluxo de trabalho",
-    "STARTDATE": "Data da fatura",
+    "SELECT_PRODUCTTYPE": "Selecione tipo",
+    "SELECT_WORKFLOW": "Selecione Fluxo de Trabalho",
+    "SELECT_WORKFLOWSTEPS": "Selecione Estado do Fluxo de Trabalho",
+    "STARTDATE": "Data da Fatura",
     "STATE": "Estado",
-    "STEP": "Degrau",
+    "STEP": "Passo",
     "SUBSCRIPTIONDETAIL": "Detalhe",
-    "SUBSCRIPTIONNAME": "Inscrição",
-    "SUBSCRIPTIONS": "CRONOGRAMA DO CLIENTE",
+    "SUBSCRIPTIONNAME": "Subscrição",
+    "SUBSCRIPTIONS": "CALENDÁRIO DO CLIENTE",
     "TAX": "Imposto",
     "TO": "Para",
     "TOTALPAYMENTS": "Total de pagamentos",
     "UPDATED_AT": "Modificado em",
-    "UPDATE_PRODUCT": "Atualizar produto",
-    "WORKFLOW": "Selecionar fluxo de trabalho",
+    "UPDATE_PRODUCT": "Atualizar Produto",
+    "WORKFLOW": "Selecione Fluxo de Trabalho",
     "YEARS": "Anos",
-    "CUSTOMER_IP": "Endereço IP de origem",
-    "CUSTOMER_PORT": "Porta TCP de origem",
+    "CUSTOMER_IP": "Endereço IP de Origem",
+    "CUSTOMER_PORT": "Porta TCP de Origem",
     "ADVANCED_SEARCH": "Busca Avançada",
     "AND": "E",
     "APPLY": "Aplicar",
     "CONTAINS": "Contém",
     "DISABLED": "Desativado",
-    "ENABLED": "Ativado",
+    "ENABLED": "Habilitado",
     "ENDING_DATE": "Data de Encerramento",
     "ENDING_VALUE": "Valor de Encerramento",
     "ENDS_WITH": "Encerrado com",
     "IS_LESS_THAN_OR_EQUAL_TO": "É menor ou igual a",
     "IS_NOT_AMONG": "Não está entre",
     "IS_NOT_EQUAL": "Não é igual",
-    "MEET_ALL_CONDITIONS": "Conheça todas as condições",
+    "MEET_ALL_CONDITIONS": "Atenda todas as condições",
     "MEET_ANY_CONDITIONS": "Atenda a pelo menos uma condição",
     "NEW_CONDITION": "Nova Condição",
     "SELECT_FIELD": "Selecionar campo",
     "CHOOSE": "Escolher",
     "DOWNLOAD_WITHOUT_ATTACHMENTS": "Download sem anexos",
     "DOWNLOAD_WITH_ATTACHMENTS": "Download com anexos",
-    "SELECT_QUEUE": "Selecione uma fila",
-    "VIDAOOSESSION": "Iniciar videochamada",
-    "WHATSAPP": "Conector WhatsApp",
-    "WHATSAPP_INTERACTIONS": "Interações do conector do WhatsApp",
+    "SELECT_QUEUE": "Selecione Fila",
+    "VIDAOOSESSION": "Iniciar Video Chamada",
+    "WHATSAPP": "WhatsApp Connector",
+    "WHATSAPP_INTERACTIONS": "Interações do WhatsApp Connector",
     "LAST_UPDATED": "Ultima atualização",
-    "MATCHING_FIELD": "Campo correspondente",
-    "MULTIPLE_CONTACTS_FOUND": "Vários contatos encontrados para número",
+    "MATCHING_FIELD": "Campo de correspondência",
+    "MULTIPLE_CONTACTS_FOUND": "Vários contatos encontrados para o número",
     "SELECT": "Selecione",
-    "SELECT_CONTACT": "Selecione o contato",
+    "SELECT_CONTACT": "Selecione contato",
     "WHICH_ONE_TO_USE": "Qual você deseja usar?",
-    "NO_WHATSAPP_ACCOUNTS_AVAILABLE": "Nenhuma conta Whatsapp disponível",
-    "SECOND_LEVEL_DISPOSITION": "Disposição de Segundo Nível",
-    "THIRD_LEVEL_DISPOSITION": "Disposição de terceiro nível",
+    "NO_WHATSAPP_ACCOUNTS_AVAILABLE": "Nenhuma Conta de Whatsapp disponível",
+    "SECOND_LEVEL_DISPOSITION": "Qualificações de Segundo Nível",
+    "THIRD_LEVEL_DISPOSITION": "Qualificação de Terceiro Nível",
     "LICENSE_EXPIRE_REMAINING_DAYS": "Sua licença está prestes a expirar! Entre em contato com o seu administrador",
     "CREATEDAT": "Criado em",
     "ELAPSED_ANSWERED": "Tempo decorrido desde o início da chamada",
     "ELAPSED_DISPOSED": "Tempo decorrido desde encerramento da chamada",
     "LOST_CONNECTION": "Enfrentando problemas de conectividade de rede. Por favor, verifique sua conexão à internet.",
     "NO_RESULTS_AVAILABLE": "Nenhum resultado disponível",
-    "AUTOCLOSE": "Encerrar automaticamente a guia de contato após qualificação",
-    "AGENT_PRESENCE": "Agent Presence",
-    "SELECT_TEAM": "Selecionar time",
+    "AUTOCLOSE": "Fechar automaticamente a aba de contato após qualificação",
+    "AGENT_PRESENCE": "Presença do Agente",
+    "SELECT_TEAM": "Selecione Equipe",
     "AVAILABLE": "Disponível",
     "CONFIRM": "Confirme",
     "FILTERS": "Filtros",
-    "FILTER_CHAT_WEBSITES": "Filtrar Websites do Webchat",
+    "FILTER_CHAT_WEBSITES": "Filtrar Websites do Chat",
     "FILTER_FAX_ACCOUNTS": "Filtrar Contas de Fax",
     "FILTER_MAIL_ACCOUNTS": "Filtrar Contas de Email",
-    "FILTER_OPENCHANNEL_ACCOUNTS": "Filtrar Contas de Open Channel",
+    "FILTER_OPENCHANNEL_ACCOUNTS": "Filtrar Contas do OpenChannel",
     "FILTER_SMS_ACCOUNTS": "Filtrar Contas de SMS",
     "FILTER_WHATSAPP_ACCOUNTS": "Filtrar Contas de Whatsapp",
     "SETFILTERS": "Definir Filtros",
-    "DIAL_TIMEZONE": "Fuso Horário de Discagem",
-    "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",
+    "DIAL_TIMEZONE": "Fuso horário de Discagem",
+    "LIMIT_TABS_REACHED": "Limite máximo de abas abertas foi atingido",
+    "LIST_NAME": "Nome da lista",
+    "PREVIEW_CALL": "Chamada Preview",
+    "SYSTEM_TIME": "Horário 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",
-    "WAITING_CALLS": "Chamadas em espera",
-    "WAITING_INTERACTIONS": "Interações em espera"
+    "RECALLME_CALL_REMINDER": "Lembrete de Agendamento",
+    "SCHEDULED_TIME": "Horário agendado",
+    "UPCOMING_RECALLME_CALL": "Próxima chamada Agendada",
+    "WAITING_CALLS": "Chamadas Aguardando",
+    "WAITING_INTERACTIONS": "Interações Aguardando"
   }
 }
index 0b91115..ed9bd53 100644 (file)
@@ -4,93 +4,93 @@
     "PAUSE_TIME": "Tempo de pausa",
     "DOWNLOAD_INTERACTION": "Download",
     "TRANSFER": "Transferir",
-    "QUEUETRANSFER": "Transferência de fila",
-    "QUEUETRANSFERTIMEOUT": "Tempo limite de transferência da fila",
-    "AGENTTRANSFER": "Transferência de Agente",
-    "AGENTTRANSFERTIMEOUT": "Tempo limite de transferência do agente",
+    "QUEUETRANSFER": "Transferir de Fila",
+    "QUEUETRANSFERTIMEOUT": "Timeout de Transferência da Fila",
+    "AGENTTRANSFER": "Transferir de Agente",
+    "AGENTTRANSFERTIMEOUT": "Timeout de Transferência de Agente",
     "TAG": "Tag",
     "EDIT_TAG": "Editar Tag",
-    "WAITFORTHEASSIGNEDAGENT": "Aguarde o agente atribuído",
+    "WAITFORTHEASSIGNEDAGENT": "Aguardando por um agente",
     "NOTIFICATION": "Notificação",
     "NOTIFICATIONSOUND": "Som",
-    "NOTIFICATIONSHAKE": "Tremer",
+    "NOTIFICATIONSHAKE": "Vibrar",
     "NOTIFICATIONTEMPLATE": "Modelo",
     "SYSTEM": "Sistema",
     "EDIT_SYSTEM": "Editar Sistema",
     "COMMAND": "Comando",
     "VARIABLE": "Variável",
-    "CANNEDANSWERS": "Respostas Prontas",
-    "FAXCANNEDANSWERS": "Respostas Prontas",
-    "NO_FAXCANNEDANSWER_AVAILABLE": "Não há respostas prontas disponíveis",
-    "NEW_FAXCANNEDANSWER": "Nova resposta pronta",
-    "ADD_FAXCANNEDANSWER": "Adicionar resposta pronta",
-    "EDIT_CHATCANNEDANSWER": "Editar resposta pronta",
-    "DELETE_CHATCANNEDANSWER": "Excluir resposta pronta",
-    "SPYINTERACTION": "Espião",
+    "CANNEDANSWERS": "Respostas Pré-definidas",
+    "FAXCANNEDANSWERS": "Respostas Pré-definidas",
+    "NO_FAXCANNEDANSWER_AVAILABLE": "Não há Respostas Pré-definidas disponíveis",
+    "NEW_FAXCANNEDANSWER": "Nova Resposta Pré-definida",
+    "ADD_FAXCANNEDANSWER": "Adicionar Resposta Pré-definida",
+    "EDIT_CHATCANNEDANSWER": "Editar Resposta Pré-definida",
+    "DELETE_CHATCANNEDANSWER": "Excluir Resposta Pré-definida",
+    "SPYINTERACTION": "Espiar",
     "TAGS": "Tags",
     "REPLY": "Responder",
     "SEND": "Enviar",
     "TO": "Para",
     "FROM": "De",
-    "NO_AGENT_ONLINE": "Nenhum agente online",
-    "GOTOREALTIME_FAXQUEUE": "Ir para a fila de fax em tempo real",
+    "NO_AGENT_ONLINE": "Nenhum Agente Online",
+    "GOTOREALTIME_FAXQUEUE": "Visualizar Fila de Fax em Tempo Real",
     "EDIT_TRUNK": "Editar Tronco",
     "REGISTERED": "Registrado",
     "UNREGISTERED": "Não registrado",
-    "EDIT_ACCOUNT": "Editar conta de fax",
+    "EDIT_ACCOUNT": "Editar Conta de Fax",
     "PARTIALPAUSE": "Pausa Parcial",
     "BUSY": "Ocupado",
-    "TIMER": "Tempo",
+    "TIMER": "Timer",
     "IDLE": "Disponível",
     "CAPACITY": "Capacidade",
-    "GOTO_FAXACCOUNT": "Ir para fax em tempo real",
+    "GOTO_FAXACCOUNT": "Visualizar Conta de Fax em Tempo Real",
     "ACCOUNTS": "Contas",
-    "GOTOREALTIME_FAXACCOUNT": "Ir para fax em tempo real",
+    "GOTOREALTIME_FAXACCOUNT": "Visualizar Conta de Fax em Tempo Real",
     "TRUNK_STATUS": "Status do Tronco",
     "TRUNKS": "Troncos",
     "REGISTRY": "Registro",
     "NO_REGISTRY": "Não Registrado",
     "PAUSE": "Pausa",
-    "INFO": "Informarção",
+    "INFO": "Info",
     "FULLNAME": "Nome Completo",
     "INTERNAL": "Interno",
     "PHONE_STATE": "Estado do Telefone",
     "PHONE_STATUS": "Status do Telefone",
     "LOGOUT": "Sair",
     "DEFAULT_PAUSE": "Pausa Padrão",
-    "AGENTADD_QUEUE": "Adicionar Agente na fila de Fax",
-    "AGENTSADD_QUEUE": "Adicionar Agentes na fila de Fax",
+    "AGENTADD_QUEUE": "Adicionar Agente à Fila de Fax",
+    "AGENTSADD_QUEUE": "Adicionar Agentes na Fila de Fax",
     "UNPAUSE": "Finalizar Pausa",
     "AGENTS": "Agentes",
     "QUEUES": "Filas",
     "LOGGED_IN": "Logado",
     "PAUSED": "Pausado",
     "READY": "Pronto",
-    "WAITING": "Esperando",
+    "WAITING": "Aguardando",
     "PRIORITY": "Prioridade",
     "CONDITION": "Condição",
-    "TRUEPRIORITY": "Verdadeira Prioridade",
-    "FALSEPRIORITY": "Falsa Prioridade",
+    "TRUEPRIORITY": "ID de Prioridade caso Verdadeiro",
+    "FALSEPRIORITY": "ID da Prioridade caso Falso",
     "VALUE": "Valor",
-    "EDIT_FAXQUEUE": "Editar fila de Fax",
+    "EDIT_FAXQUEUE": "Editar Fila de Fax",
     "EDIT_AGENT": "Editar Agente",
     "EDIT_GOTO": "Editar GoTo",
     "EDIT_NOOP": "Editar Noop",
     "EDIT_GOTOP": "Editar GotoP",
     "EDIT_GOTOIF": "Editar GotoIf",
-    "EDIT_QUEUE": "Editar fila de Fax",
-    "EDIT_CLOSE": "Editar Fechar",
+    "EDIT_QUEUE": "Editar Fila de Fax",
+    "EDIT_CLOSE": "Editar Encerramento",
     "QUEUE": "Fila",
     "GOTOIF": "GotoIf",
     "GOTOP": "GotoP",
     "NOOP": "Noop",
     "AGENT": "Agente",
-    "NOTES": "Notas",
-    "CLOSEDAT": "Fechado em",
-    "DISPOSITION": "Disposição",
-    "REALTIME": "Tempo real",
-    "TEAMADD_FAXQUEUE": "Adicionar equipe à fila de fax",
-    "AGENTADD_FAXQUEUE": "Adicionar agente à fila de fax",
+    "NOTES": "Observações",
+    "CLOSEDAT": "Encerrado em",
+    "DISPOSITION": "Qualificação",
+    "REALTIME": "Tempo Real",
+    "TEAMADD_FAXQUEUE": "Adicionar Equipe à Fila de Fax",
+    "AGENTADD_FAXQUEUE": "Adicionar Agente à Fila de Fax",
     "NAME": "Nome",
     "FAXQUEUES": "Filas de Fax",
     "SEARCH_FOR_ANYONE": "Procurar",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Você deve especificar um status de pausa quando na disposição obrigatória"
     },
     "STRATEGY": "Estratégia",
-    "AGENT_TIMEOUT": "Tempo limite do agente",
+    "AGENT_TIMEOUT": "Timeout do Agente",
     "DESCRIPTION": "Descrição",
-    "ADD_FAXQUEUE": "Adicionar fila de Fax",
-    "DELETE_FAXQUEUE": "Excluir fila de Fax",
+    "ADD_FAXQUEUE": "Adicionar Fila de Fax",
+    "DELETE_FAXQUEUE": "Excluir Fila de Fax",
     "CREATED_AT": "Criado em",
     "SAVE": "Salvar",
-    "SETTINGS": "Definições",
+    "SETTINGS": "Configurações",
     "GENERAL": "Geral",
     "FAXACCOUNTS": "Contas de Fax",
     "MOTIONADDRESS": "Endereço do Motion",
-    "ADD_FAXACCOUNT": "Adicionar conta de Fax",
-    "EDIT_FAXACCOUNT": "Editar conta de Fax",
-    "DELETE_FAXACCOUNT": "Excluir conta de Fax",
-    "DISPOSITIONS": "Disposições",
+    "ADD_FAXACCOUNT": "Adicionar Conta de Fax",
+    "EDIT_FAXACCOUNT": "Editar Conta de Fax",
+    "DELETE_FAXACCOUNT": "Excluir Conta de Fax",
+    "DISPOSITIONS": "Qualificações",
     "WEBHOOKS": "WebHooks",
     "ACTIONS": "Ações",
     "LIST": "Lista",
     "FIDELITY": "Fidelidade",
     "ACCEPT": "Aceitar",
-    "ACCEPTMETHOD": "Aceitar Método",
-    "ACCEPTURL": "Aceitar URL",
+    "ACCEPTMETHOD": "Método de Aceite",
+    "ACCEPTURL": "URL de Aceite",
     "REJECT": "Rejeitar",
-    "REJECTMETHOD": "Rejeitar Método",
-    "REJECTURL": "Rejeitar URL",
-    "CLOSE": "Fechar",
-    "CLOSEMETHOD": "Fechar Método",
-    "CLOSEURL": "Fechar URL",
+    "REJECTMETHOD": "Método de Rejeição",
+    "REJECTURL": "URL de Rejeição",
+    "CLOSE": "Encerrar",
+    "CLOSEMETHOD": "Método de Encerramento",
+    "CLOSEURL": "URL de Encerramento",
     "TRUNK": "Tronco",
-    "LOCALSTATIONID": "Identificador de Estação Local",
+    "LOCALSTATIONID": "Identificador da Estação Local",
     "HELP": {
-      "LOCALSTATIONID": "Identificador de estação local (número de telefone)",
-      "HEADERINFO": "Informações de cabeçalho de fax de saída",
-      "MODEM": "Tipo de modem (v17 / v27 / v29)",
-      "GATEWAY": "T.38 Fax Gateway, com tempo limite de atividade de fax opcional em segundos (sim / não / [tempo limite])",
-      "FAXDETECT": "Ativar a detecção de fax com tempo limite opcional em segundos (sim / t38 / cng / [tempo limite] / não)",
-      "T38TIMEOUT": "O tempo limite usado para negociação T.38 (valor mínimo = 1000)",
+      "LOCALSTATIONID": "Identificador da estação local (número de telefone)",
+      "HEADERINFO": "Informações de Header do fax de saída",
+      "MODEM": "Tipo de modem (v17/v27/v29)",
+      "GATEWAY": "T.38 Fax Gateway, com timeout de atividade opcional em segundos (yes/no/[timeout])",
+      "FAXDETECT": "Ativar a Detecção de Fax com timeout opcional em segundos (yes/t38/cng/[timeout]/no)",
+      "T38TIMEOUT": "O timeout usado para negociação do protocolo T.38 (valor mínimo=1000)",
       "ECM": "Error Connection Mode (ECM)",
       "MINRATE": "Taxa de transferência mínima definida antes da transmissão",
-      "MAXRATE": "Taxa de transferência mínima definida antes da transmissão",
+      "MAXRATE": "Taxa de transferência máxima definida antes da transmissão",
       "NAME": "Somente números, letras e caracteres específicos (._) são suportados",
-      "MANDATORYDISPOSITION": "Disposição obrigatória",
-      "MANDATORYDISPOSITIONPAUSEID": "Status de pausa para disposição obrigatória"
+      "MANDATORYDISPOSITION": "Qualificação obrigatória",
+      "MANDATORYDISPOSITIONPAUSEID": "Status de pausa para Qualificação obrigatória"
     },
     "ADVANCED": "Avançado",
     "ECM": "ECM",
     "MAXRATE": "Max Rate",
     "MODEM": "Modem",
     "GATEWAY": "Gateway",
-    "FAXDETECT": "Fax Detect",
+    "FAXDETECT": "Detecção de Fax",
     "T38TIMEOUT": "T.38 Timeout",
     "SIP": "Tecnologia",
-    "HEADERINFO": "Informações do cabeçalho",
+    "HEADERINFO": "Header Info",
     "SELECTED": "Selecionado",
-    "SELECT_ALL": "Selecionar tudo",
-    "SELECT_NONE": "Selecionar nenhum",
+    "SELECT_ALL": "Selecionar Tudo",
+    "SELECT_NONE": "Selecionar Nenhum",
     "BACK": "Voltar",
     "FAX": "Fax",
     "ID": "Id",
-    "TIMEOUT": "Tempo esgotado",
-    "FAXDISPOSITIONS": "Disposições do Fax",
-    "NO_FAXDISPOSITION_AVAILABLE": "Nenhuma disposição de fax disponível",
-    "NEW_FAXDISPOSITION": "Nova disposição de fax",
-    "ADD_FAXDISPOSITION": "Adicionar disposição de fax",
-    "EDIT_FAXDISPOSITION": "Editar disposição de fax",
-    "DELETE_FAXDISPOSITION": "Excluir disposição de fax",
-    "NEW_FAXQUEUE": "Nova fila de Fax",
-    "NEW_FAXACCOUNT": "Nova conta de Fax",
+    "TIMEOUT": "Timeout",
+    "FAXDISPOSITIONS": "Qualificações de Fax",
+    "NO_FAXDISPOSITION_AVAILABLE": "Nenhuma Qualificação de Fax disponível",
+    "NEW_FAXDISPOSITION": "Nova Qualificação de Fax",
+    "ADD_FAXDISPOSITION": "Adicionar Qualificação de Fax",
+    "EDIT_FAXDISPOSITION": "Editar Qualificação de Fax",
+    "DELETE_FAXDISPOSITION": "Excluir Qualificação de Fax",
+    "NEW_FAXQUEUE": "Nova Fila de Fax",
+    "NEW_FAXACCOUNT": "Nova Conta de Fax",
     "NO_AVAILABLE_INFO": "Nenhuma informação disponível",
-    "ALL_TEAMS": "Todas as equipes",
+    "ALL_TEAMS": "Todas as Equipes",
     "SELECTED_TEAMS": "Equipes Selecionadas",
     "PAGE": "Página",
-    "ROWSPERPAGE": "Linhas por Página",
+    "ROWSPERPAGE": "Linhas por página",
     "OF": "do",
     "DELETE": "Excluir",
-    "KEY": "Key",
+    "KEY": "Chave",
     "ALL_AGENTS": "Todos os Agentes",
     "SELECTED_AGENTS": "Agentes Selecionados",
     "FILTER": "Filtro",
-    "SELECT_STATUS": "Selecione o status",
+    "SELECT_STATUS": "Selecionar o Status",
     "ALL": "Todos",
-    "CLOSED": "Fechado",
+    "CLOSED": "Encerrado",
     "OPENED": "Aberto",
-    "SELECT_ACCOUNT": "Selecionar conta",
+    "SELECT_ACCOUNT": "Selecionar Conta",
     "INTERACTIONS": "Interações",
     "CONTACT": "Contato",
     "STARTEDAT": "Começou às",
     "ACCOUNT": "Conta",
     "UNKNOWN": "Desconhecido",
     "UNAVAILABLE": "Indisponível",
-    "NOT_INUSE": "Fora de uso",
+    "NOT_INUSE": "Disponível",
     "REACHABLE": "Alcançável",
     "IN_USE": "Em uso",
     "VOICE": "Voz",
     "SMS": "SMS",
     "OPENCHANNEL": "Open Channel",
     "TOTAL": "Total",
-    "IN": "In",
+    "IN": "Em",
     "OUT": "Out",
-    "NO_INTERACTION_AVAILABLE": "Não há interações disponíveis",
+    "NO_INTERACTION_AVAILABLE": "Não há Interações disponíveis",
     "INTERACTIONS_FAXACCOUNT": "Ir para Interações",
     "REFRESH_INTERACTIONS": "Atualizar Interações",
-    "DELETE_INTERACTION": "Excluir interação",
-    "AGENTADD_FAXACCOUNT": "Adicionar agente à conta de fax",
-    "TEAMS_ASSOCIATION": "Associação de equipes",
-    "MANDATORYDISPOSITION": "Disposição obrigatória",
-    "MANDATORYDISPOSITIONPAUSEID": "Status de pausa quando em disposição obrigatória",
-    "TOOLTIP_SCREENRECORDING_OFF": "Gravação de tela disponível",
-    "TOOLTIP_SCREENRECORDING_ON": "Gravação de tela em andamento",
+    "DELETE_INTERACTION": "Excluir Interação",
+    "AGENTADD_FAXACCOUNT": "Adicionar Agente à Conta de Fax",
+    "TEAMS_ASSOCIATION": "Associação de Equipes",
+    "MANDATORYDISPOSITION": "Qualificação obrigatória",
+    "MANDATORYDISPOSITIONPAUSEID": "Status de pausa quando estiver em Qualificação obrigatória",
+    "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"
index 3f58330..0871a9c 100644 (file)
@@ -1,7 +1,7 @@
 {
   "HELP": {
     "ABOUT": "Sobre",
-    "CONTACT_US": "Contate-Nos",
+    "CONTACT_US": "Fale Conosco",
     "HELP": "Ajuda",
     "USEFUL_LINKS": "Links Úteis"
   }
index 09c9339..a21210f 100644 (file)
@@ -1,30 +1,30 @@
 {
   "INTEGRATIONS": {
-    "ZONE": "Svæði",
+    "ZONE": "Zone",
     "ADVANCED": "Sértækt",
-    "MODULE_SEARCH": "Leita að módúl",
-    "MODULE_CREATE": "Stofna módúl",
+    "MODULE_SEARCH": "Module Search",
+    "MODULE_CREATE": "Module Create",
     "LEADS": "Lead",
     "CONTACTS": "CTengiliður",
-    "INTEGRATIONS": "Samþáttanir",
-    "ZENDESKACCOUNTS": "Zendesk reikningur",
-    "ID": "Auðkenni",
-    "NAME": "Nafn",
-    "USERNAME": "Notendanafn",
+    "INTEGRATIONS": "Integrations",
+    "ZENDESKACCOUNTS": "Zendesk Accounts",
+    "ID": "Id",
+    "NAME": "Name",
+    "USERNAME": "Username",
     "URI": "URL",
     "BACK": "Til baka",
-    "SELECTED": "Valið",
-    "SELECT_ALL": "Veljið allt",
-    "SELECT_NONE": "Veljið nafn",
+    "SELECTED": "Selected",
+    "SELECT_ALL": "Select All",
+    "SELECT_NONE": "Select None",
     "EDIT_ZENDESKACCOUNT": "Breyttu Zendesk reikningi",
     "DELETE_ZENDESKACCOUNT": "Eyddu Zendesk reikningi",
-    "NEW_ZENDESKACCOUNT": "Nýr Zendesk reikningur",
+    "NEW_ZENDESKACCOUNT": "New Zendesk Account",
     "AUTHTYPE": "Sannvottunar aðferð",
-    "PASSWORD": "Lykilorð",
+    "PASSWORD": "Password",
     "CONFIRM_PASSWORD": "Staðfesta lykilorð",
     "EMAIL": "Netfang",
     "TOKEN": "Token",
-    "MOTIONPROXYADDRESS": "IP tala fyrir Motion eða Proxy",
+    "MOTIONPROXYADDRESS": "Motion or Proxy IP Address",
     "DESCRIPTION": "Lysing",
     "ADD_ZENDESKACCOUNT": "Bættu við Zendesk reikningi",
     "ERRORS": {
     },
     "HELP": {
       "MOTIONPROXYADDRESS": "Motion (Proxy) Address: it is reqired if you want to fill the ticket body with Recording URL. Enter the address in the following format: <protocol> : //<ipaddress>[:<port>]. Example: https://X.Y.Z.W",
-      "TICKETTYPE": "Tiket tegund",
-      "ZONE": "Veldu landsvæði (US, AU, EU, IN, CN) til að virkja rétt lén fyrir Zoho reikninginn þinn",
-      "CLIENTID": "Sérstakt notenda auðkenni fyrir lausnina þína",
-      "CLIENTSECRET": "Sérstakt notenda lyniorð fyrir lausnina þína",
-      "CODE": "Sérstakur kóði frá forritinu",
+      "TICKETTYPE": "Ticket Type",
+      "ZONE": "Choose your geographic zone (US, AU, EU, IN, CN) to activate the domain-specific Zoho Accounts",
+      "CLIENTID": "The specific CLient Id of your application",
+      "CLIENTSECRET": "The specific CLientSecret of your application",
+      "CODE": "The specific code generated through Developer Console",
       "REFRESHTOKEN": "The automatically generated refresh token used to refresh expired access tokens. Also the access token are automatically generated each time an api is launched.",
-      "LEADID": "Svæðis reitur til að tengja saman verkefni og Lead verkefni",
+      "LEADID": "Field name used to link Case and Lead objects",
       "ADDITIONALSEARCHACCOUNT": "Viðbótar nafna reitur, notaður til að leita að viðskiptavina símanúmeri í fyrirtækjum/reikningi",
       "ADDITIONALSEARCHCONTACT": "Viðbótar nafna reitur, notaður til að leita að viðskiptavina símanúmeri í tengiliðum",
       "ADDITIONALSEARCHLEAD": "Viðbótar reitur, notaður til að leita að viðskiptavina símanúmeri í Leads",
-      "MODERN_AUTHENTICATION": "Skiptið yfir til að virkja nútýma auðkenningu"
+      "MODERN_AUTHENTICATION": "Switch to enable Modern Authentication"
     },
-    "MODULECREATE": "Stofna modúl",
+    "MODULECREATE": "Module create",
     "CODE": "Forritunar Console lykill",
-    "REFRESHTOKEN": "Endurnýjaðu Token (sem var búið til)",
+    "REFRESHTOKEN": "Refresh Token (generated)",
     "ACCOUNT": "Reikningur",
-    "ZENDESKCONFIGURATIONS": "Zendesk stillingar",
-    "SALESFORCECONFIGURATIONS": "Salesforce Stillingar",
-    "SUGARCRMCONFIGURATIONS": "SugarCRM stillingar",
+    "ZENDESKCONFIGURATIONS": "Zendesk Configurations",
+    "SALESFORCECONFIGURATIONS": "Salesforce Configurations",
+    "SUGARCRMCONFIGURATIONS": "SugarCRM Configurations",
     "FRESHDESKCONFIGURATIONS": "Freshdesk stillingar",
     "GENERAL": "almennt",
     "CREATED_AT": "Stofnað kl.",
-    "SAVE": "Geyma",
-    "NO_ZENDESKCONFIGURATION_AVAILABLE": "Engin Zendesk stilling fáanleg",
-    "NEW_ZENDESKCONFIGURATION": "Ný Zendesk stilling",
+    "SAVE": "Save",
+    "NO_ZENDESKCONFIGURATION_AVAILABLE": "No Zendesk Configurations available",
+    "NEW_ZENDESKCONFIGURATION": "New Zendesk Configuration",
     "ADD_ZENDESKCONFIGURATION": "Bættu við Zendesk stillingum",
     "EDIT_ZENDESKCONFIGURATION": "Breyttu Zendesk stillingum",
     "DELETE_ZENDESKCONFIGURATION": "Eyddu Zendesk stillingum",
-    "NO_SALESFORCECONFIGURATION_AVAILABLE": "Engin Salesforce stilling fáanleg",
-    "NEW_SALESFORCECONFIGURATION": "Ný Salesforce stilling",
-    "ADD_SALESFORCECONFIGURATION": "Bættu við Salesforce Stillingum",
+    "NO_SALESFORCECONFIGURATION_AVAILABLE": "No Salesforce Configurations available",
+    "NEW_SALESFORCECONFIGURATION": "New Salesforce Configuration",
+    "ADD_SALESFORCECONFIGURATION": "Bættu við Salesforce stillingum",
     "EDIT_SALESFORCECONFIGURATION": "breyttu Salesforce stillingum",
     "DELETE_SALESFORCECONFIGURATION": "Eyddu Salesforce stillingum",
-    "NO_SUGARCRMCONFIGURATION_AVAILABLE": "Engin SugarCRM stilling fáanleg",
-    "NEW_SUGARCRMCONFIGURATION": "Ný SugarCRM stilling",
+    "NO_SUGARCRMCONFIGURATION_AVAILABLE": "No SugarCRM Configurations available",
+    "NEW_SUGARCRMCONFIGURATION": "New SugarCRM Configuration",
     "ADD_SUGARCRMCONFIGURATION": "Bættu við SugarCRM stillingum",
     "EDIT_SUGARCRMCONFIGURATION": "Breyttu SugarCRM stillingum",
     "DELETE_SUGARCRMCONFIGURATION": "Eyddu SugarCRM stillingum",
-    "NO_FRESHDESKCONFIGURATION_AVAILABLE": "Engin Freshdesk stilling fáanleg",
-    "NEW_FRESHDESKCONFIGURATION": "Ný Freshdesk stilling",
-    "ADD_FRESHDESKCONFIGURATION": "Bættu við Freshdesk Stillingum",
+    "NO_FRESHDESKCONFIGURATION_AVAILABLE": "No Freshdesk Configurations available",
+    "NEW_FRESHDESKCONFIGURATION": "New Freshdesk Configuration",
+    "ADD_FRESHDESKCONFIGURATION": "Bættu við Freshdesk stillingum",
     "EDIT_FRESHDESKCONFIGURATION": "Breyttu Freshdesk stillingum",
     "DELETE_FRESHDESKCONFIGURATION": "Eyddu Freshdesk stillingum",
-    "SALESFORCEACCOUNTS": "Salesforce reikningur",
+    "SALESFORCEACCOUNTS": "Salesforce Accounts",
     "EDIT_SALESFORCEACCOUNT": "Breyttu Salesforce reikningi",
     "DELETE_SALESFORCEACCOUNT": "Eyddum Salesforce reikningi",
-    "NEW_SALESFORCEACCOUNT": "Nýr Salesforce reikningur",
+    "NEW_SALESFORCEACCOUNT": "New Salesforce Account",
     "ADD_SALESFORCEACCOUNT": "Bættu við Salesforce reikningi",
     "CLIENTID": "Auðkenni notanda",
     "CLIENTSECRET": "Leyniorð notanda",
-    "SECURITYTOKEN": "Öryggis Token",
-    "SEARCH_FOR_ANYONE": "Leita",
+    "SECURITYTOKEN": "Security Token",
+    "SEARCH_FOR_ANYONE": "Search",
     "APIKEY": "Api lykill",
     "FRESHDESKACCOUNTS": "Freshdesk reikningur",
     "EDIT_FRESHDESKACCOUNT": "Breyttu Freshdesk reikningi",
     "DELETE_FRESHDESKACCOUNT": "Eyddu Freshdesk reikningi",
-    "NEW_FRESHDESKACCOUNT": "Nér Freshdesk reikningur",
-    "ADD_FRESHDESKACCOUNT": "Bættu við Freshdesk Reikningi",
-    "SUGARCRMACCOUNTS": "SugarCRM reikningur",
+    "NEW_FRESHDESKACCOUNT": "New Freshdesk Account",
+    "ADD_FRESHDESKACCOUNT": "Bættu við Freshdesk reikningi",
+    "SUGARCRMACCOUNTS": "SugarCRM Accounts",
     "EDIT_SUGARCRMACCOUNT": "Breyttu SugarCRM reikningi",
     "DELETE_SUGARCRMACCOUNT": "Eyddu SugarCRM reikningi",
-    "NEW_SUGARCRMACCOUNT": "Nýr SugarCRM reikningur",
+    "NEW_SUGARCRMACCOUNT": "New SugarCRM Account",
     "ADD_SUGARCRMACCOUNT": "Bættu við SugarCRM reikningi",
     "CONFIGURATIONS": "Stillingar",
-    "NO_CONFIGURATION_AVAILABLE": "Engin stilling fáanleg",
-    "NEW_CONFIGURATION": "Nýar stillingar",
+    "NO_CONFIGURATION_AVAILABLE": "No Configurations available",
+    "NEW_CONFIGURATION": "New Configuration",
     "ADD_CONFIGURATION": "Bættu við stillingum",
     "EDIT_CONFIGURATION": "Breyttu stillingum",
     "DELETE_CONFIGURATION": "Eyddu stillingum",
-    "SUBJECTS": "Efni",
+    "SUBJECTS": "Subjects",
     "DESCRIPTIONS": "Lysing",
     "FIELDS": "Reitir",
-    "TAGS": "Tögg",
-    "TYPE": "Tegund",
+    "TAGS": "Tags",
+    "TYPE": "Type",
     "CONTENT": "Innihald",
     "EDIT_SUBJECT": "Breyttu viðfangsefni",
     "DELETE_SUBJECT": "Eyddu viðfangsefni",
-    "NEW_SUBJECT": "Nýt viðfang",
+    "NEW_SUBJECT": "New Subject",
     "ADD_SUBJECT": "Bættu við viðfangsefni",
     "EDIT_DESCRIPTION": "Breyttu lýsingu",
     "DELETE_DESCRIPTION": "Eyddu lýsingu",
-    "NEW_DESCRIPTION": "Ný lýsing",
+    "NEW_DESCRIPTION": "New Description",
     "ADD_DESCRIPTION": "Bættu við lýsingu",
     "EDIT_FIELD": "Breyttu reit",
     "DELETE_FIELD": "Eyddu reit",
-    "NEW_FIELD": "Nýr reitur",
+    "NEW_FIELD": "New Field",
     "ADD_FIELD": "Bættu við reiti",
     "ADD": "Bæta við",
-    "VOICE": "Tal",
-    "MAIL": "Netfang",
+    "VOICE": "Voice",
+    "MAIL": "Email",
     "CHAT": "Spjall",
     "SMS": "SMS",
-    "OPENCHANNEL": "Opin rás",
-    "INBOUND_IN_QUEUE": "Innkomandi í biðr0ð",
-    "OUTBOUND_CALL": "Útfarandi símtall",
-    "VALUE": "Gildi",
+    "OPENCHANNEL": "Open Channel",
+    "INBOUND_IN_QUEUE": "Inbound in Queue",
+    "OUTBOUND_CALL": "Outbound Call",
+    "VALUE": "Value",
     "FIELD": "Reitur",
-    "KEY": "Lykill",
+    "KEY": "Key",
     "CHANNEL": "Rás",
     "DELETE": "Eyða",
-    "NO_AVAILABLE_INFO": "Engar upplýsingar fáanlegar",
-    "TEST_ZENDESKACCOUNT": "Prufu Zendesk reikningur",
-    "TEST_FRESHDESKACCOUNT": "Prufu Freshdesk reikningur",
-    "TEST_SUGARCRMACCOUNT": "Prufu SugerCRM reikningur",
-    "TEST_SALESFORCEACCOUNT": "Prufu Salesforce reikningur",
-    "INTEGRATION_TAB": "Samþáttunar flipi",
-    "NEW_TAB": "Nýr flipi",
+    "NO_AVAILABLE_INFO": "No available info",
+    "TEST_ZENDESKACCOUNT": "Test Zendesk Account",
+    "TEST_FRESHDESKACCOUNT": "Test Freshdesk Account",
+    "TEST_SUGARCRMACCOUNT": "Test SugerCRM Account",
+    "TEST_SALESFORCEACCOUNT": "Test Salesforce Account",
+    "INTEGRATION_TAB": "Integration Tab",
+    "NEW_TAB": "New Tab",
     "DESKACCOUNTS": "Desk reikningur",
     "EDIT_DESKACCOUNT": "Breyttu Desk reikningi",
-    "TEST_DESKACCOUNT": "Prufu Desk reikningur",
+    "TEST_DESKACCOUNT": "Test Desk Account",
     "DELETE_DESKACCOUNT": "Eyddu Desk reikningi",
     "CONSUMERKEY": "Lykill fyrir notanda",
     "CONSUMERSECRET": "Leyniorð notanda",
     "TOKENSECRET": "Token Secret",
     "ADD_DESKACCOUNT": "Bættu við reikningi fyrir Desk",
-    "NEW_DESKACCOUNT": "Nýr Desk reikningur",
+    "NEW_DESKACCOUNT": "New Desk Account",
     "ADD_DESKCONFIGURATION": "Bættu við Desk Stillingum",
-    "NEW_DESKCONFIGURATION": "Ný Desk stilling",
+    "NEW_DESKCONFIGURATION": "New Desk Configuration",
     "DELETE_DESKCONFIGURATION": "Eyddu Desk stillingum",
-    "ZOHOACCOUNTS": "Zoho reikningur",
+    "ZOHOACCOUNTS": "Zoho Accounts",
     "EDIT_ZOHOACCOUNT": "Breyttu Zoho reikningi",
-    "TEST_ZOHOACCOUNT": "Prufu Zoho reikningur",
+    "TEST_ZOHOACCOUNT": "Test Zoho Account",
     "DELETE_ZOHOACCOUNT": "Eyddu Zoho reikningi",
     "ADD_ZOHOACCOUNT": "Bættu við Zoho reikningi",
-    "NEW_ZOHOACCOUNT": "Nýr Zoho reikningur",
+    "NEW_ZOHOACCOUNT": "New Zoho Account",
     "ADD_ZOHOCONFIGURATION": "ABættu við Zoho stillingum",
-    "NEW_ZOHOCONFIGURATION": "Nýjar Zoho stillingar",
+    "NEW_ZOHOCONFIGURATION": "New Zoho Configuration",
     "AUTHTOKEN": "Auðkennis lykill, Token",
-    "HOST": "Hýsill",
+    "HOST": "Host",
     "DELETE_ZOHOCONFIGURATION": "Eyddu Zoho stillingum",
-    "PAGE": "Bls.",
-    "ROWSPERPAGE": "Línur á bls.",
-    "OF": "Slökt",
-    "VTIGERACCOUNTS": "vTiger reikningur",
-    "VTIGER_USER_NAME": "vTiger notenda nafn",
-    "MODULE_NAME": "vTiger módúl nafn",
+    "PAGE": "Page",
+    "ROWSPERPAGE": "Rows per page",
+    "OF": "of",
+    "VTIGERACCOUNTS": "vTiger Accounts",
+    "VTIGER_USER_NAME": "vTiger User Name",
+    "MODULE_NAME": "vTiger Module Name",
     "ACCESS_KEY": "vTiger Aðgangs lykill",
     "ADD_VTIGERACCOUNT": "Bættu við nýjum vTiger reikningi",
     "EDIT_VTIGERACCOUNT": "Breyttu vTiger reikningi",
-    "TEST_VTIGERACCOUNT": "Prufu vTiger reikningur",
+    "TEST_VTIGERACCOUNT": "Test vTiger Account",
     "DELETE_VTIGERACCOUNT": "Eyddu vTiger reikningi",
-    "NEW_VTIGERACCOUNT": "Nýr vTiger reikningur",
-    "NEW_VTIGERCONFIGURATION": "Búðu til vTiger stillingar",
+    "NEW_VTIGERACCOUNT": "New vTiger Account",
+    "NEW_VTIGERCONFIGURATION": "Create vTiger Configuration",
     "DELETE_VTIGERCONFIGURATION": "Eyddu vTiger stillingum",
     "ADD_VTIGERCONFIGURATION": "Bættu við vTiger stillingum",
     "FRESHSALESACCOUNTS": "Freshsales reikningur",
     "EDIT_FRESHSALESACCOUNT": "Breyttu Freshsales reikningi",
     "DELETE_FRESHSALESACCOUNT": "Eyddu Freshsales reikningi",
-    "NEW_FRESHSALESACCOUNT": "Nýr Freshsales reikningur",
+    "NEW_FRESHSALESACCOUNT": "New Freshsales Account",
     "ADD_FRESHSALESACCOUNT": "Bættu við Freshsales reikningi",
-    "NO_FRESHSALESCONFIGURATION_AVAILABLE": "Engin Freshsales stilling fáanleg",
-    "NEW_FRESHSALESCONFIGURATION": "Ný Freshsales stilling",
+    "NO_FRESHSALESCONFIGURATION_AVAILABLE": "No Freshsales Configurations available",
+    "NEW_FRESHSALESCONFIGURATION": "New Freshsales Configuration",
     "ADD_FRESHSALESCONFIGURATION": "Bættu við Freshsales stillingum",
     "EDIT_FRESHSALESCONFIGURATION": "Breyttu Freshsales stillingum",
     "DELETE_FRESHSALESCONFIGURATION": "Eyddu Freshsales stillingum",
-    "TEST_FRESHSALESACCOUNT": "Prufu Freshsales reikningur",
-    "SERVICENOWACCOUNTS": "ServiceNow reikningur",
+    "TEST_FRESHSALESACCOUNT": "Test Freshsales Account",
+    "SERVICENOWACCOUNTS": "ServiceNow Accounts",
     "ADD_SERVICENOWACCOUNT": "Bættu við nýjum ServiceNow reikningi",
     "EDIT_SERVICENOWACCOUNT": "Breyttu ServiceNow reikningi",
-    "TEST_SERVICENOWACCOUNT": "Prufu ServiceNow reikningur",
+    "TEST_SERVICENOWACCOUNT": "Test ServiceNow Account",
     "DELETE_SERVICENOWACCOUNT": "Eyddu ServiceNow reikningi",
-    "NEW_SERVICENOWACCOUNT": "Nýr ServiceNow reikningur",
-    "NEW_SERVICENOWCONFIGURATION": "Búðu til Create ServiceNow stillingu",
+    "NEW_SERVICENOWACCOUNT": "New ServiceNow Account",
+    "NEW_SERVICENOWCONFIGURATION": "Create ServiceNow Configuration",
     "DELETE_SERVICENOWCONFIGURATION": "Eyddu ServiceNow stillingum",
     "ADD_SERVICENOWCONFIGURATION": "Bættu við ServiceNow stillingum",
     "DYNAMICS365ACCOUNTS": "Dynamics365 reikningur",
-    "TENANTID": "Auðkenni notanda",
-    "ADD_DYNAMICS365ACCOUNT": "Bættu við nýjum Dynamics365 Reikningi",
+    "TENANTID": "Tenant Id",
+    "ADD_DYNAMICS365ACCOUNT": "Bættu við nýjum Dynamics365 reikningi",
     "EDIT_DYNAMICS365ACCOUNT": "Breyttu Dynamics365 reikningi",
-    "TEST_DYNAMICS365ACCOUNT": "Prufu Dynamics365 reikningur",
+    "TEST_DYNAMICS365ACCOUNT": "Test Dynamics365 Account",
     "DELETE_DYNAMICS365ACCOUNT": "Eyddu Dynamics365 reikningi",
-    "NEW_DYNAMICS365ACCOUNT": "Nýr Dynamics365 reikningur",
-    "NEW_DYNAMICS365CONFIGURATION": "Búðu til Dynamics365 stillingar",
+    "NEW_DYNAMICS365ACCOUNT": "New Dynamics365 Account",
+    "NEW_DYNAMICS365CONFIGURATION": "Create Dynamics365 Configuration",
     "DELETE_DYNAMICS365CONFIGURATION": "Eyddu Dynamics365 stillingum",
-    "ADD_DYNAMICS365CONFIGURATION": "Bættu við Dynamics365 Stillingum",
-    "TICKETTYPE": "Tiket tegund",
+    "ADD_DYNAMICS365CONFIGURATION": "Bættu við Dynamics365 stillingum",
+    "TICKETTYPE": "Ticket Type",
     "CASE": "Mál",
-    "LEADID": "Lead Auðkenni",
+    "LEADID": "Lead Id",
     "ADDITIONALSEARCHACCOUNT": "Viðbótar leitar reikningur",
     "ADDITIONALSEARCHCONTACT": "Viðbótar leitar tengiliður",
     "ADDITIONALSEARCHLEAD": "Viðbótar leitar Lead",
-    "PHONECALL": "Símtal",
-    "TASK": "Verkefni",
+    "PHONECALL": "Phonecall",
+    "TASK": "Task",
     "DYNAMIC365CONTACT": "Tengiliður",
     "DYNAMIC365NOTHING": "Ekkert",
-    "MODERN_AUTHENTICATION": "Nútíma auðkenning",
-    "OPENNEWTAB": "Opnaðu nýjan flipa"
+    "MODERN_AUTHENTICATION": "Modern Authentication",
+    "OPENNEWTAB": "Open new tab"
   }
 }
index 156770a..8179941 100644 (file)
@@ -1,10 +1,10 @@
 {
   "INTEGRATIONS": {
     "ADVANCED": "Avançado",
-    "MODULE_SEARCH": "Pesquisar Módulo",
+    "MODULE_SEARCH": "Módulo de Pesquisa",
     "MODULE_CREATE": "Módulo Criado",
     "INTEGRATIONS": "Integrações",
-    "ZENDESKACCOUNTS": "Contas Zendesk",
+    "ZENDESKACCOUNTS": "Contas do Zendesk",
     "ID": "Id",
     "NAME": "Nome",
     "USERNAME": "Usuário",
     "SELECTED": "Selecionado",
     "SELECT_ALL": "Selecionar Tudo",
     "SELECT_NONE": "Selecionar Nenhum",
-    "EDIT_ZENDESKACCOUNT": "Editar Conta Zendesk",
-    "DELETE_ZENDESKACCOUNT": "Excluir Conta Zendesk",
-    "NEW_ZENDESKACCOUNT": "Nova Conta Zendesk",
+    "EDIT_ZENDESKACCOUNT": "Editar Conta do Zendesk",
+    "DELETE_ZENDESKACCOUNT": "Excluir Conta do Zendesk",
+    "NEW_ZENDESKACCOUNT": "Nova Conta do Zendesk",
     "AUTHTYPE": "Tipo de Autenticação",
     "PASSWORD": "Senha",
-    "CONFIRM_PASSWORD": "Confirme Senha",
+    "CONFIRM_PASSWORD": "Confirmação de Senha",
     "TOKEN": "Token",
-    "MOTIONPROXYADDRESS": "Endereço IP Motion ou Proxy",
+    "MOTIONPROXYADDRESS": "Endereço IP do Motion ou Proxy",
     "DESCRIPTION": "Descrição",
-    "ADD_ZENDESKACCOUNT": "Adicionar Conta Zendesk",
+    "ADD_ZENDESKACCOUNT": "Adicionar Conta do Zendesk",
     "ERRORS": {
       "NAME_REQUIRED": "Campo obrigatório",
       "USERNAME_REQUIRED": "Campo obrigatório",
     },
     "HELP": {
       "MOTIONPROXYADDRESS": "Motion (Proxy) Address: é necessario se quiser utilizar o ticket body com Recording URL. Entre com o endereço no seguinte formato: <protocol> : //<ipaddress>[:<port>]. Exemplo: https://X.Y.Z.W",
-      "TICKETTYPE": "Tipo Ticket",
-      "CLIENTID": "O ID do cliente específico do seu aplicativo",
-      "CLIENTSECRET": "O CLientSecret específico do seu aplicativo",
-      "CODE": "O código específico gerado pelo Developer Console",
-      "REFRESHTOKEN": "O token de atualização gerado automaticamente e usado para atualizar os tokens de acesso expirados. Além disso, o token de acesso é gerado automaticamente toda vez que uma API é iniciada.",
+      "TICKETTYPE": "Tipo do Ticket",
+      "CLIENTID": "O ID do Cliente de sua aplicação",
+      "CLIENTSECRET": "O ClientSecret específico de sua aplicação",
+      "CODE": "O código gerado pelo Developer Console",
+      "REFRESHTOKEN": "O token de acesso gerado automaticamente para atualizar os tokens de acessos expirados. Além disso, este token de acesso é atualizado automaticamente toda vez que uma API é iniciada.",
       "ZONE": "Escolha sua zona geográfica (EUA, AU, UE, IN, CN) para ativar o domain-specific da conta Zoho",
-      "ADDITIONALSEARCHACCOUNT": "Nome de campo adicional usado para pesquisar o número de telefone do cliente em contas",
-      "ADDITIONALSEARCHCONTACT": "Nome de campo adicional usado para pesquisar o número de telefone do cliente em Contatos",
-      "ADDITIONALSEARCHLEAD": "Nome de campo adicional usado para pesquisar o número de telefone do cliente no Leads",
-      "LEADID": "Nome do campo usado para vincular objetos Caso e Lead",
+      "ADDITIONALSEARCHACCOUNT": "Nome de campo adicional usado para pesquisar o telefone do cliente em Contas",
+      "ADDITIONALSEARCHCONTACT": "Nome de campo adicional usado para pesquisar o telefone do cliente em Contatos",
+      "ADDITIONALSEARCHLEAD": "Nome de campo adicional usado para pesquisar o telefone do cliente no Leads",
+      "LEADID": "Nome do campo usado para vincular objetos Case e Lead",
       "MODERN_AUTHENTICATION": "Alterne para habilitar a autenticação moderna"
     },
     "ACCOUNT": "Conta",
-    "ZENDESKCONFIGURATIONS": "Configurações Zendesk",
-    "SALESFORCECONFIGURATIONS": "Configurações Salesforce",
-    "SUGARCRMCONFIGURATIONS": "Configurações SugarCRM",
-    "FRESHDESKCONFIGURATIONS": "Configurações Freshdesk",
+    "ZENDESKCONFIGURATIONS": "Configurações do Zendesk",
+    "SALESFORCECONFIGURATIONS": "Configurações do Salesforce",
+    "SUGARCRMCONFIGURATIONS": "Configurações do SugarCRM",
+    "FRESHDESKCONFIGURATIONS": "Configurações do Freshdesk",
     "GENERAL": "Geral",
     "CREATED_AT": "Criado em",
     "SAVE": "Salvar",
     "NO_ZENDESKCONFIGURATION_AVAILABLE": "Nenhuma configuração do Zendesk disponível",
-    "NEW_ZENDESKCONFIGURATION": "Nova Configuração Zendesk",
-    "ADD_ZENDESKCONFIGURATION": "Adicionar Configuração Zendesk",
-    "EDIT_ZENDESKCONFIGURATION": "Editar Configuração Zendesk",
-    "DELETE_ZENDESKCONFIGURATION": "Excluir Configuração Zendesk",
+    "NEW_ZENDESKCONFIGURATION": "Nova Configuração do Zendesk",
+    "ADD_ZENDESKCONFIGURATION": "Adicionar Configuração do Zendesk",
+    "EDIT_ZENDESKCONFIGURATION": "Editar Configuração do Zendesk",
+    "DELETE_ZENDESKCONFIGURATION": "Excluir Configuração do Zendesk",
     "NO_SALESFORCECONFIGURATION_AVAILABLE": "Nenhuma configuração do Salesforce disponível",
-    "NEW_SALESFORCECONFIGURATION": "Nova Configuração Salesforce",
-    "ADD_SALESFORCECONFIGURATION": "Adicionar Configuração Salesforce",
-    "EDIT_SALESFORCECONFIGURATION": "Editar Configuração Salesforce",
-    "DELETE_SALESFORCECONFIGURATION": "Excluir Configuração Salesforce",
+    "NEW_SALESFORCECONFIGURATION": "Nova Configuração do Salesforce",
+    "ADD_SALESFORCECONFIGURATION": "Adicionar Configuração do Salesforce",
+    "EDIT_SALESFORCECONFIGURATION": "Editar Configuração do Salesforce",
+    "DELETE_SALESFORCECONFIGURATION": "Excluir Configuração do Salesforce",
     "NO_SUGARCRMCONFIGURATION_AVAILABLE": "Nenhuma configuração do SugarCRM disponível",
-    "NEW_SUGARCRMCONFIGURATION": "Nova Configuração SugarCRM",
-    "ADD_SUGARCRMCONFIGURATION": "Adicionar Configuração SugarCRM",
-    "EDIT_SUGARCRMCONFIGURATION": "Editar Configuração SugarCRM",
-    "DELETE_SUGARCRMCONFIGURATION": "Excluir Configuração SugarCRM",
-    "NO_FRESHDESKCONFIGURATION_AVAILABLE": "Não há configurações Freshdesk disponíveis",
-    "NEW_FRESHDESKCONFIGURATION": "Nova Configuração Freshdesk",
-    "ADD_FRESHDESKCONFIGURATION": "Adicionar Configuração Freshdesk",
-    "EDIT_FRESHDESKCONFIGURATION": "Editar Configuração Freshdesk",
-    "DELETE_FRESHDESKCONFIGURATION": "Excluir Configuração Freshdesk",
-    "SALESFORCEACCOUNTS": "Contas Salesforce",
-    "EDIT_SALESFORCEACCOUNT": "Editar Conta Salesforce",
-    "DELETE_SALESFORCEACCOUNT": "Excluir Conta Salesforce",
-    "NEW_SALESFORCEACCOUNT": "Nova Conta Salesforce",
-    "ADD_SALESFORCEACCOUNT": "Adicionar Conta Salesforce",
+    "NEW_SUGARCRMCONFIGURATION": "Nova Configuração do SugarCRM",
+    "ADD_SUGARCRMCONFIGURATION": "Adicionar Configuração do SugarCRM",
+    "EDIT_SUGARCRMCONFIGURATION": "Editar Configuração do SugarCRM",
+    "DELETE_SUGARCRMCONFIGURATION": "Excluir Configuração do SugarCRM",
+    "NO_FRESHDESKCONFIGURATION_AVAILABLE": "Não há configurações do Freshdesk disponíveis",
+    "NEW_FRESHDESKCONFIGURATION": "Nova Configuração do Freshdesk",
+    "ADD_FRESHDESKCONFIGURATION": "Adicionar Configuração do Freshdesk",
+    "EDIT_FRESHDESKCONFIGURATION": "Editar Configuração do Freshdesk",
+    "DELETE_FRESHDESKCONFIGURATION": "Excluir Configuração do Freshdesk",
+    "SALESFORCEACCOUNTS": "Contas do Salesforce",
+    "EDIT_SALESFORCEACCOUNT": "Editar Conta do Salesforce",
+    "DELETE_SALESFORCEACCOUNT": "Excluir Conta do Salesforce",
+    "NEW_SALESFORCEACCOUNT": "Nova Conta do Salesforce",
+    "ADD_SALESFORCEACCOUNT": "Adicionar Conta do Salesforce",
     "CLIENTID": "ID do Cliente",
     "CLIENTSECRET": "Senha do Cliente",
     "SECURITYTOKEN": "Token Segurança",
     "SEARCH_FOR_ANYONE": "Procurar",
-    "APIKEY": "Api Key",
-    "FRESHDESKACCOUNTS": "Contas Freshdesk",
-    "EDIT_FRESHDESKACCOUNT": "Editar Conta Freshdesk",
-    "DELETE_FRESHDESKACCOUNT": "Excluir Conta Freshdesk",
-    "NEW_FRESHDESKACCOUNT": "Nova Conta Freshdesk",
-    "ADD_FRESHDESKACCOUNT": "Adicionar Conta Freshdesk",
-    "SUGARCRMACCOUNTS": "Contas SugarCRM",
-    "EDIT_SUGARCRMACCOUNT": "Editar Conta SugarCRM",
-    "DELETE_SUGARCRMACCOUNT": "Excluir Conta Freshdesk",
-    "NEW_SUGARCRMACCOUNT": "Nova Conta SugarCRM",
-    "ADD_SUGARCRMACCOUNT": "Adicionar Conta SugarCRM",
+    "APIKEY": "Chave API",
+    "FRESHDESKACCOUNTS": "Contas do Freshdesk",
+    "EDIT_FRESHDESKACCOUNT": "Editar Conta do Freshdesk",
+    "DELETE_FRESHDESKACCOUNT": "Excluir Conta do Freshdesk",
+    "NEW_FRESHDESKACCOUNT": "Nova Conta do Freshdesk",
+    "ADD_FRESHDESKACCOUNT": "Adicionar Conta do Freshdesk",
+    "SUGARCRMACCOUNTS": "Contas do SugarCRM",
+    "EDIT_SUGARCRMACCOUNT": "Editar Conta do SugarCRM",
+    "DELETE_SUGARCRMACCOUNT": "Excluir Conta do Freshdesk",
+    "NEW_SUGARCRMACCOUNT": "Nova Conta do SugarCRM",
+    "ADD_SUGARCRMACCOUNT": "Adicionar Conta do SugarCRM",
     "CONFIGURATIONS": "Configurações",
-    "NO_CONFIGURATION_AVAILABLE": "Nenhuma Configuração Disponível",
+    "NO_CONFIGURATION_AVAILABLE": "Nenhuma Configuração disponível",
     "NEW_CONFIGURATION": "Nova Configuração",
     "ADD_CONFIGURATION": "Adicionar Configuração",
     "EDIT_CONFIGURATION": "Editar Configuração",
     "SMS": "SMS",
     "OPENCHANNEL": "Open Channel",
     "INBOUND_IN_QUEUE": "Entrada na Fila",
-    "OUTBOUND_CALL": "Outbound Call",
+    "OUTBOUND_CALL": "Chamada de Saída",
     "VALUE": "Valor",
     "FIELD": "Campo",
     "KEY": "Key",
     "CHANNEL": "Canal",
     "DELETE": "Excluir",
-    "NO_AVAILABLE_INFO": "Nenhuma Informação Disponível",
-    "TEST_ZENDESKACCOUNT": "Testar Conta Zendesk",
-    "TEST_FRESHDESKACCOUNT": "Testar Conta Freshdesk",
-    "TEST_SUGARCRMACCOUNT": "Testar Conta SugerCRM",
-    "TEST_SALESFORCEACCOUNT": "Testar Conta Salesforce",
-    "INTEGRATION_TAB": "Guia Integração",
+    "NO_AVAILABLE_INFO": "Nenhuma informação disponível",
+    "TEST_ZENDESKACCOUNT": "Testar Conta do Zendesk",
+    "TEST_FRESHDESKACCOUNT": "Testar Conta do Freshdesk",
+    "TEST_SUGARCRMACCOUNT": "Testar Conta do SugerCRM",
+    "TEST_SALESFORCEACCOUNT": "Testar Conta do Salesforce",
+    "INTEGRATION_TAB": "Aba da Integração",
     "NEW_TAB": "Nova Aba",
-    "DESKACCOUNTS": "Contas Desk",
-    "EDIT_DESKACCOUNT": "Editar Conta Desk",
-    "TEST_DESKACCOUNT": "Contas Desk",
-    "DELETE_DESKACCOUNT": "Excluir conta Desk",
+    "DESKACCOUNTS": "Contas do Desk",
+    "EDIT_DESKACCOUNT": "Editar Conta do Desk",
+    "TEST_DESKACCOUNT": "Testar Conta do Desk",
+    "DELETE_DESKACCOUNT": "Excluir Conta do Desk",
     "CONSUMERKEY": "Chave do Consumidor",
     "CONSUMERSECRET": "Senha do Consumidor",
     "TOKENSECRET": "Senha do Token",
-    "ADD_DESKACCOUNT": "Adicionar Conta Desk",
-    "NEW_DESKACCOUNT": "Nova Conta Desk",
-    "ADD_DESKCONFIGURATION": "Adicionar Configuração Desk",
-    "NEW_DESKCONFIGURATION": "Nova Configuração Desk",
-    "DELETE_DESKCONFIGURATION": "Excluir configuração Desk",
-    "ZOHOACCOUNTS": "Contas Zoho",
-    "EDIT_ZOHOACCOUNT": "Editar Conta Zoho",
-    "TEST_ZOHOACCOUNT": "Testar Conta Zoho",
-    "DELETE_ZOHOACCOUNT": "Excluir Conta Zoho",
-    "ADD_ZOHOACCOUNT": "Adicionar Conta Zoho",
-    "NEW_ZOHOACCOUNT": "Nova Conta Zoho",
-    "ADD_ZOHOCONFIGURATION": "Adicionar Configuração Zoho",
-    "NEW_ZOHOCONFIGURATION": "Nova Configuração Zoho",
+    "ADD_DESKACCOUNT": "Adicionar Conta do Desk",
+    "NEW_DESKACCOUNT": "Nova Conta do Desk",
+    "ADD_DESKCONFIGURATION": "Adicionar Configuração do Desk",
+    "NEW_DESKCONFIGURATION": "Nova Configuração do Desk",
+    "DELETE_DESKCONFIGURATION": "Excluir Configuração do Desk",
+    "ZOHOACCOUNTS": "Contas do Zoho",
+    "EDIT_ZOHOACCOUNT": "Editar Conta do Zoho",
+    "TEST_ZOHOACCOUNT": "Testar Conta do Zoho",
+    "DELETE_ZOHOACCOUNT": "Excluir Conta do Zoho",
+    "ADD_ZOHOACCOUNT": "Adicionar Conta do Zoho",
+    "NEW_ZOHOACCOUNT": "Nova Conta do Zoho",
+    "ADD_ZOHOCONFIGURATION": "Adicionar Configuração do Zoho",
+    "NEW_ZOHOCONFIGURATION": "Nova Configuração do Zoho",
     "AUTHTOKEN": "Token de Autorização",
     "HOST": "Host",
-    "DELETE_ZOHOCONFIGURATION": "Excluir Configuração Zoho",
+    "DELETE_ZOHOCONFIGURATION": "Excluir Configuração do Zoho",
     "PAGE": "Página",
     "ROWSPERPAGE": "Linhas por Página",
     "OF": "do",
-    "VTIGERACCOUNTS": "Contas vTiger",
-    "VTIGER_USER_NAME": "Nome do Usuário vTiger",
+    "VTIGERACCOUNTS": "Contas do vTiger",
+    "VTIGER_USER_NAME": "Nome do Usuário do vTiger",
     "MODULE_NAME": "Nome do Módulo vTiger",
-    "ACCESS_KEY": "Chave de Acesso vTiger",
-    "ADD_VTIGERACCOUNT": "Adicionar Conta vTiger",
-    "EDIT_VTIGERACCOUNT": "Editar Conta vTiger",
-    "TEST_VTIGERACCOUNT": "Testar Conta vTiger",
-    "DELETE_VTIGERACCOUNT": "Excluir Conta vTiger",
-    "NEW_VTIGERACCOUNT": "Nova Conta vTiger",
-    "NEW_VTIGERCONFIGURATION": "Criar Configuração vTiger",
-    "DELETE_VTIGERCONFIGURATION": "Excluir Configuração vTiger",
-    "ADD_VTIGERCONFIGURATION": "Adicionar Configuração vTiger",
-    "ADD_DYNAMICS365ACCOUNT": "Adicionar Conta Dynamics365",
-    "ADD_DYNAMICS365CONFIGURATION": "Adicionar Configuração Dynamics365",
+    "ACCESS_KEY": "Chave de Acesso do vTiger",
+    "ADD_VTIGERACCOUNT": "Adicionar Conta do vTiger",
+    "EDIT_VTIGERACCOUNT": "Editar Conta do vTiger",
+    "TEST_VTIGERACCOUNT": "Testar Conta do vTiger",
+    "DELETE_VTIGERACCOUNT": "Excluir Conta do vTiger",
+    "NEW_VTIGERACCOUNT": "Nova Conta do vTiger",
+    "NEW_VTIGERCONFIGURATION": "Criar Configuração do vTiger",
+    "DELETE_VTIGERCONFIGURATION": "Excluir Configuração do vTiger",
+    "ADD_VTIGERCONFIGURATION": "Adicionar Configuração do vTiger",
+    "ADD_DYNAMICS365ACCOUNT": "Adicionar Conta do Dynamics365",
+    "ADD_DYNAMICS365CONFIGURATION": "Adicionar Configuração do Dynamics365",
     "CASE": "Case",
-    "DELETE_DYNAMICS365ACCOUNT": "Excluir Conta Dynamics365",
-    "DELETE_DYNAMICS365CONFIGURATION": "Excluir Configuração Dynamics365",
-    "DYNAMICS365ACCOUNTS": "Contas Dynamics365",
-    "EDIT_DYNAMICS365ACCOUNT": "Editar Conta Dynamics365",
-    "NEW_DYNAMICS365ACCOUNT": "Nova Conta Dynamics365",
-    "NEW_DYNAMICS365CONFIGURATION": "Criar Configuração Dynamics365",
-    "PHONECALL": "Chamada telefônica",
+    "DELETE_DYNAMICS365ACCOUNT": "Excluir Conta do Dynamics365",
+    "DELETE_DYNAMICS365CONFIGURATION": "Excluir Configuração do Dynamics365",
+    "DYNAMICS365ACCOUNTS": "Contas do Dynamics365",
+    "EDIT_DYNAMICS365ACCOUNT": "Editar Conta do Dynamics365",
+    "NEW_DYNAMICS365ACCOUNT": "Nova Conta do Dynamics365",
+    "NEW_DYNAMICS365CONFIGURATION": "Criar Configuração do Dynamics365",
+    "PHONECALL": "Phonecall",
     "TENANTID": "Tenant ID",
-    "TEST_DYNAMICS365ACCOUNT": "Testar Conta Dynamics365",
+    "TEST_DYNAMICS365ACCOUNT": "Testar Conta do Dynamics365",
     "TICKETTYPE": "Tipo de Ticket",
-    "ADD_SERVICENOWACCOUNT": "Adicionar Conta ServiceNow",
-    "ADD_SERVICENOWCONFIGURATION": "Adicionar Configuração ServiceNow",
-    "DELETE_SERVICENOWACCOUNT": "Excluir Conta ServiceNow",
-    "DELETE_SERVICENOWCONFIGURATION": "Excluir Configuração ServiceNow",
-    "EDIT_SERVICENOWACCOUNT": "Editar Conta ServiceNow",
+    "ADD_SERVICENOWACCOUNT": "Adicionar Conta do ServiceNow",
+    "ADD_SERVICENOWCONFIGURATION": "Adicionar Configuração do ServiceNow",
+    "DELETE_SERVICENOWACCOUNT": "Excluir Conta do ServiceNow",
+    "DELETE_SERVICENOWCONFIGURATION": "Excluir Configuração do ServiceNow",
+    "EDIT_SERVICENOWACCOUNT": "Editar Conta do ServiceNow",
     "EMAIL": "Email",
-    "NEW_SERVICENOWACCOUNT": "Nova Conta ServiceNow",
-    "NEW_SERVICENOWCONFIGURATION": "Nova Configuração ServiceNow",
-    "SERVICENOWACCOUNTS": "Contas ServiceNow",
-    "TEST_SERVICENOWACCOUNT": "Testar Conta ServiceNow",
+    "NEW_SERVICENOWACCOUNT": "Nova Conta do ServiceNow",
+    "NEW_SERVICENOWCONFIGURATION": "Nova Configuração do ServiceNow",
+    "SERVICENOWACCOUNTS": "Contas do ServiceNow",
+    "TEST_SERVICENOWACCOUNT": "Testar Conta do ServiceNow",
     "TASK": "Tarefa",
     "CODE": "Developer Console Code",
     "REFRESHTOKEN": "Atualizar Token (gerado)",
     "ZONE": "Zona",
     "CONTACTS": "Contato",
     "LEADS": "Lead",
-    "MODULECREATE": "Criar Módulo",
-    "ADD_FRESHSALESACCOUNT": "Adicionar Conta Freshsales",
-    "ADD_FRESHSALESCONFIGURATION": "Adicionar Configuração Freshsales",
-    "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 de Freshsales disponível",
-    "TEST_FRESHSALESACCOUNT": "Testar Conta Freshsales",
-    "ADDITIONALSEARCHACCOUNT": "Conta de Pesquisa Adicional",
-    "ADDITIONALSEARCHCONTACT": "Contato de Pesquisa Adicional",
-    "ADDITIONALSEARCHLEAD": "Lead de Pesquisa Adicional",
+    "MODULECREATE": "Módulo criado",
+    "ADD_FRESHSALESACCOUNT": "Adicionar Conta do Freshsales",
+    "ADD_FRESHSALESCONFIGURATION": "Adicionar Configuração do Freshsales",
+    "DELETE_FRESHSALESACCOUNT": "Excluir Conta do Freshsales",
+    "DELETE_FRESHSALESCONFIGURATION": "Excluir Configuração do Freshsales",
+    "EDIT_FRESHSALESACCOUNT": "Editar Conta do Freshsales",
+    "EDIT_FRESHSALESCONFIGURATION": "Editar Configuração do Freshsales",
+    "FRESHSALESACCOUNTS": "Contas do Freshsales",
+    "NEW_FRESHSALESACCOUNT": "Nova Conta do Freshsales",
+    "NEW_FRESHSALESCONFIGURATION": "Nova Configuração do Freshsales",
+    "NO_FRESHSALESCONFIGURATION_AVAILABLE": "Nenhuma configuração do Freshsales disponível",
+    "TEST_FRESHSALESACCOUNT": "Testar Conta do Freshsales",
+    "ADDITIONALSEARCHACCOUNT": "Conta Adicional de Pesquisa",
+    "ADDITIONALSEARCHCONTACT": "Contato Adicional de Pesquisa ",
+    "ADDITIONALSEARCHLEAD": "Lead Adicional de Pesquisa",
     "LEADID": "Lead ID",
     "DYNAMIC365CONTACT": "Contato",
     "DYNAMIC365NOTHING": "Nothing",
     "MODERN_AUTHENTICATION": "Autenticação Moderna",
-    "OPENNEWTAB": "Abrir Nova Aba"
+    "OPENNEWTAB": "Abrir nova Aba"
   }
 }
index 6221f63..9ffbf6b 100644 (file)
@@ -2,11 +2,11 @@
   "JSCRIPTY": {
     "CLONE_PROJECT": "Afrita verkefni",
     "NAME": "Nafn",
-    "SEARCH_FOR_ANYONE": "Search",
+    "SEARCH_FOR_ANYONE": "Leita",
     "BACK": "Til baka",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
+    "SELECTED": "Valið",
+    "SELECT_ALL": "Velja alla",
+    "SELECT_NONE": "Veldu ekkert",
     "DESCRIPTION": "Lýsing",
     "ERRORS": {
       "NAME_REQUIRED": "Skilyrtur reitur",
@@ -25,7 +25,7 @@
     "CREATED_AT": "Búið til kl.",
     "NEW_PROJECT": "Nýtt verkefni",
     "EDIT": "Breyta",
-    "SETTINGS": "Settings",
+    "SETTINGS": "Stillingar",
     "GENERAL": "almennt",
     "BUILDER": "Byggja",
     "PREVIEW": "Forskoðun",
       "SENDUNPAUSEONSUBMIT": "Við lok könnunarinnar, taka af sjálfvirkt af hlé fulltrúans"
     },
     "PAGE": "Bls.",
-    "ROWSPERPAGE": "Rows per page",
+    "ROWSPERPAGE": "Raðir á síðu",
     "OF": "af",
     "JSCRIPTYSESSIONS": "Verkefna hluti",
-    "SESSIONS": "Sessions",
+    "SESSIONS": "Lotur",
     "STARTTIME": "Upphafs tími",
     "ENDTIME": "Loka tími",
     "MEMBERNAME": "Nafn á meðlimi",
     "CALLERIDNUM": "Uppkallsnúmer",
     "NO_SESSION_AVAILABLE": "Engin verkhluti tiltækur",
-    "SESSION_RESULTS": "Session Results",
-    "SHOW_QUESTIONS_SESSION": "Show Session Results",
+    "SESSION_RESULTS": "Niðurstöður lotu",
+    "SHOW_QUESTIONS_SESSION": "Sýna niðurstöður lotu",
     "ANSWERS": "Svarað",
     "NO_RESULTS_AVAILABLE": "Engin niðurstaða tiltæk",
     "TOTAL": "Samtals",
     "EXPORT_TO_CSV": "Flytja út sem CSV skrá",
     "NO_ANSWERS_AVAILABLE": "Ekkert svar tiltækt",
     "DELETE_SESSION": "Eyða verki",
-    "RESET_SESSION": "Reset Session",
+    "RESET_SESSION": "Endurstilla lotu",
     "YES": "Já",
     "NO": "Nei",
     "DO_YOU_WANT_TO_RESET_SESSION": "Viltu endurstilla verkið?",
     "ALL_SURVEY_DATA_WILL_BE_LOST": "Öll svör í könnuninni munu tapast!",
     "ENABLEUNCOMPLETESAVE": "Leyfa ekki kláraða vistun",
     "SUBMIT": "Sendið",
-    "PROJECT_NOT_AVAILABLE": "Project is not available. Please contact the administrator",
+    "PROJECT_NOT_AVAILABLE": "Verkefni er ekki tiltækt. Hafið samband við stjórnanda. ",
     "COMPLETE": "Klárað",
-    "SESSIONS_PROJECT": "Go to Sessions"
+    "SESSIONS_PROJECT": "Fara í lotur"
   },
   "mwForm": {
     "form": {
     },
     "page": {
       "tab": {
-        "heading": "Page {{page}} of {{allPages}}"
+        "heading": "Síða {{síða}} of {{allarsíður}}"
       },
       "elements": {
-        "empty": "Empty page"
+        "empty": "Tóm síða"
       },
-      "pageWithNameCheckbox": "named",
-      "name": "Page name"
+      "pageWithNameCheckbox": "Nefnd (named)",
+      "name": "Nafn síðu"
     },
     "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": "Eftir síðu {{síða}}:",
+      "afterQuestionAnswer": "Fara á síðu byggt á svari",
+      "goToPage": "Fara á síðu {{síða.númer}}",
+      "goToNextPage": "Halda áfram á næstu síðu ",
+      "submitForm": "Senda inn eyðublað (Submit form)"
     },
     "elements": {
       "question": "Spurning",
     "question": {
       "types": {
         "text": {
-          "name": "Short text"
+          "name": "Stuttur texti"
         },
         "textarea": {
-          "name": "Long text"
+          "name": "Langur texti"
         },
         "radio": {
-          "name": "Radio"
+          "name": "Útvarp"
         },
         "select": {
-          "name": "Select"
+          "name": "Velja"
         },
         "checkbox": {
-          "name": "Checkboxes"
+          "name": "Gáttakassi - Checkboxes"
         },
         "grid": {
-          "name": "Grid"
+          "name": "Hnitanet"
         },
         "priority": {
-          "name": "Priority"
+          "name": "Forgangsröðun"
         },
         "division": {
-          "name": "Division"
+          "name": "Deild"
         },
         "number": {
-          "name": "Number"
+          "name": "Númer"
         },
         "date": {
-          "name": "Date"
+          "name": "Dagsetning"
         },
         "datetime": {
-          "name": "Datetime"
+          "name": "Tími dagsetningu"
         },
         "time": {
-          "name": "Time"
+          "name": "Tími"
         },
         "email": {
-          "name": "Email"
+          "name": "Tölvupóstfang"
         },
         "range": {
-          "name": "Range"
+          "name": "Svið"
         },
         "url": {
           "name": "URL"
         }
       },
-      "text": "Question text",
-      "type": "Question type",
-      "required": "Required",
+      "text": "Spurningartexti",
+      "type": "Tegund spurningar",
+      "required": "Nauðsynlegt",
       "preview": {
-        "text": "Short answer text",
-        "textarea": "Long answer text",
-        "otherAnswer": "Other"
+        "text": "Stuttur svartexti ",
+        "textarea": "Langur svartexti",
+        "otherAnswer": "Annað"
       },
       "division": {
-        "quantity": "Quantity",
-        "unit": "Unit label",
-        "assignedSumLabel": "Assigned",
-        "fromRequiredLabel": "from required"
+        "quantity": "Magn",
+        "unit": "Merki einingar - Unit label",
+        "assignedSumLabel": "Úthlutað ",
+        "fromRequiredLabel": "Frá nauðsynlegum - from required"
       },
       "priority": {
-        "sorted": "Sorted",
-        "available": "Available",
-        "clickToAddItem": "Click to add item"
+        "sorted": "Flokkað",
+        "available": "Aðgengilegt",
+        "clickToAddItem": "Smelltu til að bæta við hlut"
       },
       "grid": {
         "cellInputType": "Cell input type",
         "cellInputTypes": {
-          "radio": "Radio",
-          "checkbox": "Checkbox",
-          "text": "Text",
-          "number": "Number",
-          "date": "Date",
-          "time": "Time"
+          "radio": "Útvarp",
+          "checkbox": "Gáttakassi - Checkbox",
+          "text": "Texti",
+          "number": "Númer",
+          "date": "Dagsetning",
+          "time": "Tími"
         },
-        "rowLabel": "Row {{row}}",
-        "clickToAddRow": "Click to add row",
-        "columnLabel": "Column {{col}}",
-        "clickToAddColumn": "Click to add column"
+        "rowLabel": "Röð {{röð}}",
+        "clickToAddRow": "Smelltu til að bæta við röð ",
+        "columnLabel": "Dálkur {{dal}}",
+        "clickToAddColumn": "Smelltu til að bæta við dálk"
       },
       "range": {
-        "from": "Range from",
-        "to": "to"
+        "from": "Svið frá - Range from",
+        "to": "til"
       },
       "number": {
-        "min": "Min",
-        "max": "Max"
+        "min": "Lágmark",
+        "max": "Hámark"
       },
-      "orLabel": "or ",
-      "otherLabel": "Other: ",
-      "userAnswer": "User answer",
+      "orLabel": "Eða",
+      "otherLabel": "Annað: ",
+      "userAnswer": "Svar notenda",
       "buttons": {
-        "addOption": "Click to add option",
-        "addOther": "Add 'Other'"
+        "addOption": "Smelltu til að bæta við valkosti",
+        "addOther": "Bæta við 'Annað'"
       }
     },
     "image": {
-      "selectImageButton": "Select image",
-      "caption": "Image caption"
+      "selectImageButton": "Velja mynd",
+      "caption": "Myndatexti"
     },
     "paragraph": {
-      "placeholder": "Enter paragraph text"
+      "placeholder": "Færa inn málsgreinartexta (Enter paragraph text)"
     },
     "confirmationPage": {
-      "title": "Samþyktar síða",
+      "title": "Samþykktar síða",
       "customMessage": "Sérsniðin samþykktar skilaboð",
       "defaultMessage": "Viðbrögð þín hafa verið vistuð",
       "errorMessage": "Villa! Viðbrögð þín hafa ekki verið vistuð",
index a39d9fd..94109b1 100644 (file)
@@ -1,12 +1,12 @@
 {
   "JSCRIPTY": {
-    "CLONE_PROJECT": "Projeto Clone",
+    "CLONE_PROJECT": "Clonar Projeto",
     "NAME": "Nome",
     "SEARCH_FOR_ANYONE": "Procurar",
     "BACK": "Voltar",
     "SELECTED": "Selecionado",
-    "SELECT_ALL": "Selecionar tudo",
-    "SELECT_NONE": "Selecione nenhum",
+    "SELECT_ALL": "Selecionar Tudo",
+    "SELECT_NONE": "Selecione Nenhum",
     "DESCRIPTION": "Descrição",
     "ERRORS": {
       "NAME_REQUIRED": "Campo obrigatório",
     "NEW_PROJECT": "Novo Projeto",
     "EDIT": "Editar",
     "SETTINGS": "Configurações",
-    "GENERAL": "Feral",
+    "GENERAL": "Geral",
     "BUILDER": "Builder",
     "PREVIEW": "Visualizar",
-    "OPEN_CONTACT": "Contato aberto",
+    "OPEN_CONTACT": "Contato Aberto",
     "HELP": {
       "NAME": "Somente números, letras e caracteres específicos (._) são suportados",
-      "ENABLEUNCOMPLETESAVE": "Permitir salvar a sessão do agente, mesmo que a pesquisa não esteja completa",
+      "ENABLEUNCOMPLETESAVE": "Permite salvar a sessão do agente, mesmo que a pesquisa não esteja completa",
       "SENDUNPAUSEONSUBMIT": "No final da pesquisa, interrompa automaticamente a pausa do agente"
     },
     "PAGE": "Página",
     "ROWSPERPAGE": "Linhas por página",
     "OF": "do",
-    "JSCRIPTYSESSIONS": "Sessões de Projetos",
+    "JSCRIPTYSESSIONS": "Sessões do Projeto",
     "SESSIONS": "Sessões",
-    "STARTTIME": "Hora de início",
-    "ENDTIME": "Hora final",
-    "MEMBERNAME": "Nome do membro",
-    "CALLERIDNUM": "Número do chamador",
+    "STARTTIME": "Hora de Início",
+    "ENDTIME": "Hora do Término",
+    "MEMBERNAME": "Nome do Agente",
+    "CALLERIDNUM": "Caller Number",
     "NO_SESSION_AVAILABLE": "Nenhuma sessão disponível",
-    "SESSION_RESULTS": "Resultados da Sessão",
-    "SHOW_QUESTIONS_SESSION": "Mostrar resultados da sessão",
-    "ANSWERS": "Respostas",
+    "SESSION_RESULTS": "Resultados das Sessões",
+    "SHOW_QUESTIONS_SESSION": "Mostrar Resultados da Sessão",
+    "ANSWERS": "Atendidas",
     "NO_RESULTS_AVAILABLE": "Nenhum resultado disponível",
     "TOTAL": "Total",
-    "ANSWER": "Responda",
+    "ANSWER": "Atendida",
     "EXPORT_TO_CSV": "Exportar para CSV",
     "NO_ANSWERS_AVAILABLE": "Nenhuma resposta disponível",
-    "DELETE_SESSION": "Excluir sessão",
-    "RESET_SESSION": "Redefinir Sessão",
+    "DELETE_SESSION": "Excluir Sessão",
+    "RESET_SESSION": "Reset da Sessão",
     "YES": "Sim",
     "NO": "Não",
-    "DO_YOU_WANT_TO_RESET_SESSION": "Você deseja redefinir a sessão?",
+    "DO_YOU_WANT_TO_RESET_SESSION": "Deseja reiniciar a sessão?",
     "ALL_SURVEY_DATA_WILL_BE_LOST": "Todas as respostas da pesquisa serão perdidas!",
-    "ENABLEUNCOMPLETESAVE": "Ativar gravação incompleta",
+    "ENABLEUNCOMPLETESAVE": "Habilitar salvar incompleto",
     "SUBMIT": "Enviar",
     "PROJECT_NOT_AVAILABLE": "Projeto não está disponível. Por favor entre em contato com o administrador",
     "COMPLETE": "Completo",
@@ -73,9 +73,9 @@
       "description": "Descrição"
     },
     "buttons": {
-      "addPage": "Adicionar Página",
+      "addPage": "Adicionar página",
       "moveDown": "Mover para baixo",
-      "moveUp": "Subir",
+      "moveUp": "Mover para cima",
       "removePage": "Remover página",
       "remove": "Remover",
       "addElement": "Adicionar elemento",
       "back": "Voltar",
       "submit": "Enviar",
       "begin": "Começar",
-      "fold": "Dobro",
+      "fold": "Dobrar",
       "unfold": "Desdobrar",
       "edit": "Editar",
-      "clone": "Clone",
-      "view": "Visão"
+      "clone": "Clonar",
+      "view": "Visualizar"
     },
     "page": {
       "tab": {
     "question": {
       "types": {
         "text": {
-          "name": "Pequeno texto"
+          "name": "Texto curto"
         },
         "textarea": {
           "name": "Texto longo"
           "name": "Selecione"
         },
         "checkbox": {
-          "name": "Caixas de seleção"
+          "name": "Checkboxes"
         },
         "grid": {
           "name": "Grade"
           "name": "Data"
         },
         "datetime": {
-          "name": "Data hora"
+          "name": "Datetime"
         },
         "time": {
-          "name": "Tempo"
+          "name": "Time"
         },
         "email": {
           "name": "Email"
         },
         "range": {
-          "name": "Alcance"
+          "name": "Range"
         },
         "url": {
           "name": "URL"
         "fromRequiredLabel": "de exigido"
       },
       "priority": {
-        "sorted": "Classificado",
+        "sorted": "Ordenado",
         "available": "Acessível",
         "clickToAddItem": "Clique para adicionar item"
       },
         "cellInputType": "Tipo de entrada de célula",
         "cellInputTypes": {
           "radio": "Radio",
-          "checkbox": "Caixa de seleção",
+          "checkbox": "Checkbox",
           "text": "Texto",
-          "number": "Numero",
+          "number": "Número",
           "date": "Data",
-          "time": "Tempo"
+          "time": "Time"
         },
         "rowLabel": "Linha {{row}}",
         "clickToAddRow": "Clique para adicionar linha",
       "userAnswer": "Resposta do usuário",
       "buttons": {
         "addOption": "Clique para adicionar opção",
-        "addOther": "Adicionar 'outro'"
+        "addOther": "Adicionar 'Outro'"
       }
     },
     "image": {
index 1f72f92..a99796a 100644 (file)
 {
   "MAIL": {
-    "ADVANCED": "Ítarlegt",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Download with attachments",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Download without attachments",
-    "DOWNLOAD": "Download",
-    "LOGIN_TIME": "Login time",
-    "PAUSE_TIME": "Pause time",
-    "DOWNLOAD_INTERACTION": "Download",
-    "YOU_ARE_REGISTERED_AS_A": "You are registered as a",
-    "TRANSFER": "Transfer",
-    "QUEUETRANSFER": "Queue Transfer",
-    "QUEUETRANSFERTIMEOUT": "Queue Transfer Timeout",
-    "AGENTTRANSFER": "Agent Transfer",
-    "AGENTTRANSFERTIMEOUT": "Agent Transfer Timeout",
-    "TAG": "Tag",
-    "EDIT_TAG": "Edit Tag",
-    "WAITFORTHEASSIGNEDAGENT": "Wait for the assigned agent",
-    "NOTIFICATION": "Notification",
-    "NOTIFICATIONSOUND": "Sound",
-    "NOTIFICATIONSHAKE": "Shake",
-    "NOTIFICATIONTEMPLATE": "Template",
-    "SYSTEM": "System",
-    "EDIT_SYSTEM": "Edit System",
-    "COMMAND": "Command",
-    "VARIABLE": "Variable",
-    "SEND_AS": "Send as",
-    "NEW_MAILSUBSTATUS": "New Sub Status",
-    "ADD_MAILSUBSTATUS": "Add Sub Status",
-    "MAILSUBSTATUSES": "Email Sub Statuses",
-    "EDIT_MAILSUBSTATUS": "Edit",
-    "DELETE_MAILSUBSTATUS": "Delete",
-    "FONT_FAMILY": "Font Family",
-    "FONT_SIZE": "Font Size",
-    "MARK_AS_UNREAD": "Mark as unread",
+    "ADVANCED": "Ítarlegri",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Hala niður með viðhengi",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Hala niður án viðhengja ",
+    "DOWNLOAD": "Hala niður",
+    "LOGIN_TIME": "Innskráningartími",
+    "PAUSE_TIME": "Tími á hlé",
+    "DOWNLOAD_INTERACTION": "Hala niður",
+    "YOU_ARE_REGISTERED_AS_A": "Þú ert skráður sem",
+    "TRANSFER": "Flutningur",
+    "QUEUETRANSFER": "Flutningur raða",
+    "QUEUETRANSFERTIMEOUT": "Tími á flutningi raða runninn út ",
+    "AGENTTRANSFER": "Flutningur þjónustufulltrúa - Agent Transfer",
+    "AGENTTRANSFERTIMEOUT": "Tími runninn út á flutningi þjónustufulltrúa - Agent Transfer Timeout",
+    "TAG": "Merkja",
+    "EDIT_TAG": "Breyta merki",
+    "WAITFORTHEASSIGNEDAGENT": "Bíddu eftir úthlutuðum þjónustufulltrúa ",
+    "NOTIFICATION": "Tilkynning",
+    "NOTIFICATIONSOUND": "Hljóð",
+    "NOTIFICATIONSHAKE": "Hrista",
+    "NOTIFICATIONTEMPLATE": "Sniðmát",
+    "SYSTEM": "Kerfi",
+    "EDIT_SYSTEM": "Breyta kerfi",
+    "COMMAND": "Skipun - Command",
+    "VARIABLE": "Breyta",
+    "SEND_AS": "Senda sem",
+    "NEW_MAILSUBSTATUS": "Ný undirstaða - New Sub Status",
+    "ADD_MAILSUBSTATUS": "Bæta við undirstöðu - Add Sub Status",
+    "MAILSUBSTATUSES": "Undirstöður tölvupósts - Email Sub Statuses",
+    "EDIT_MAILSUBSTATUS": "Breyta",
+    "DELETE_MAILSUBSTATUS": "Eyða",
+    "FONT_FAMILY": "Leturfjölskylda",
+    "FONT_SIZE": "Leturstærð",
+    "MARK_AS_UNREAD": "Merkja sem ólesið ",
     "ACCEPTED": "Samþykkt",
-    "CANNEDANSWERS": "Canned Answers",
-    "MAILCANNEDANSWERS": "Canned Answers",
-    "NO_MAILCANNEDANSWER_AVAILABLE": "No Canned Answers Available",
-    "NEW_MAILCANNEDANSWER": "New Canned Answer",
-    "ADD_MAILCANNEDANSWER": "Bæta við fyrirfram ákveðin svör ",
-    "EDIT_MAILCANNEDANSWER": "Edit Canned Answer",
-    "DELETE_MAILCANNEDANSWER": "Delete Canned Answer",
-    "SHOW_ORIGINAL_MESSAGE": "Show original message",
-    "PENDING": "Pending",
-    "SEND_AS_PENDING": "Send as Pending",
-    "SEND_AND_CLOSE": "Send and Close",
-    "CANNED_ANSWER_NOT_FOUND": "No Canned Answers were found",
-    "CANNED_ANSWER_SEARCH": "Enter a text to search a Canned Answer",
-    "SPYINTERACTION": "Spy",
+    "CANNEDANSWERS": "Fyrirfram ákveðin svör ",
+    "MAILCANNEDANSWERS": "Fyrirfram ákveðin svör",
+    "NO_MAILCANNEDANSWER_AVAILABLE": "Engin fyrirfram ákveðin svör í boði ",
+    "NEW_MAILCANNEDANSWER": "Nýtt fyrirfram ákveðið svar ",
+    "ADD_MAILCANNEDANSWER": "Bæta við fyrirfram ákveðnu svari ",
+    "EDIT_MAILCANNEDANSWER": "Breyta fyrirfram ákveðnu svari ",
+    "DELETE_MAILCANNEDANSWER": "Eyða fyrirfram ákveðnu svari - Delete Canned Answer",
+    "SHOW_ORIGINAL_MESSAGE": "Sýna upprunaleg skilaboðin",
+    "PENDING": "Í bið",
+    "SEND_AS_PENDING": "Senda sem í bið",
+    "SEND_AND_CLOSE": "Senda og loka",
+    "CANNED_ANSWER_NOT_FOUND": "Engin fyrirfram ákveðin svör fundust - No Canned Answers were found",
+    "CANNED_ANSWER_SEARCH": "Sláðu inn texta til að leita að fyrirfram ákveðnu svari - Enter a text to search a Canned Answer",
+    "SPYINTERACTION": "Njósna",
     "ADD_NOTE": "Bæta við athugasemd",
-    "NOTE": "Note",
-    "TAGS": "Tags",
-    "NO_AGENT_ONLINE": "No Agent Online",
-    "GOTOREALTIME_MAILQUEUE": "Go To Realtime Mail Queue",
-    "PARTIALPAUSE": "Parital Pause",
-    "BUSY": "Busy",
-    "TIMER": "Timer",
+    "NOTE": "Athugasemd",
+    "TAGS": "Merki",
+    "NO_AGENT_ONLINE": "Enginn þjónustufulltrúi á netinu",
+    "GOTOREALTIME_MAILQUEUE": "Farðu í rauntíma tölvupóströð ",
+    "PARTIALPAUSE": "Hlé að hluta",
+    "BUSY": "Upptekinn",
+    "TIMER": "Tímamælir",
     "IDLE": "Idle",
-    "CAPACITY": "Capacity",
-    "UNPAUSE": "End Pause",
-    "DEFAULT_PAUSE": "Default pause",
-    "LOGOUT": "Logout",
-    "AGENTADD_QUEUE": "Bæta þjónustufulltrúa við biðröð fyrir tölvupóst - Add agent to Email queue",
-    "VOICE": "Voice",
-    "CHAT": "Chat",
-    "SMS": "Sms",
-    "OPENCHANNEL": "Open channel",
+    "CAPACITY": "Afkastageta",
+    "UNPAUSE": "Enda hlé ",
+    "DEFAULT_PAUSE": "Sjálfgefið hlé",
+    "LOGOUT": "Útskrá",
+    "AGENTADD_QUEUE": "Bæta þjónustufulltrúa við tölvupóströð - Add agent to Email queue",
+    "VOICE": "Rödd",
+    "CHAT": "Spjall",
+    "SMS": "Smáskilaboð ",
+    "OPENCHANNEL": "Opna rás",
     "FAX": "Fax",
-    "REALTIME": "Realtime",
-    "AGENTS": "Þjónustufulltrúar ",
-    "QUEUES": "Queues",
+    "REALTIME": "Rauntími",
+    "AGENTS": "Þjónustufulltrúar",
+    "QUEUES": "Raðir",
     "ACCOUNTS": "Reikningar",
-    "FULLNAME": "Full Name",
-    "INTERNAL": "Internal",
+    "FULLNAME": "Fullt nafn",
+    "INTERNAL": "Innri",
     "PHONE_STATE": "Phone State",
     "PHONE_STATUS": "Phone Status",
-    "PAUSE": "Pause",
-    "LOGGED_IN": "Logged In",
-    "PAUSED": "Paused",
-    "READY": "Ready",
-    "WAITING": "Waiting",
-    "TOTAL": "Total",
+    "PAUSE": "Hlé",
+    "LOGGED_IN": "Innskráður",
+    "PAUSED": "Gert hlé",
+    "READY": "Tilbúinn",
+    "WAITING": "Bíða",
+    "TOTAL": "Samtals",
     "IN": "In",
-    "OUT": "Out",
-    "IMAP_STATUS": "IMAP Status",
+    "OUT": "Úti",
+    "IMAP_STATUS": "IMAP staða",
     "SMTP_STATUS": "SMTP Status",
-    "DISABLED": "Disabled",
-    "CONNECTED": "Connected",
-    "NEVER_VERIFIED": "Never Verified",
-    "ERROR": "Error",
-    "EDIT_ACCOUNT": "Edit Account",
-    "VERIFY_SMTP": "Verify SMTP",
-    "VERIFIED": "Verified",
-    "VERIFYSMTP_MAILACCOUNT": "Verify SMTP",
-    "GOTOREALTIME_MAILACCOUNT": "Go to Realtime Email Account",
-    "GOTO_MAILACCOUNT": "Go to Realtime Email Account",
-    "TEXT": "Text",
-    "TIMES": "Number of times per interaction",
-    "REPLY_TYPE": "Reply Type",
-    "EDIT_AUTOREPLY": "Edit Auto Reply",
-    "AUTOREPLY": "Auto Reply",
-    "SHOW_AUTOREPLY": "Show Auto Reply",
-    "SHOW_DETAILS": "Show details",
-    "HIDE_DETAILS": "Hide details",
-    "TO": "To",
-    "FROM": "From",
-    "DATE": "Date",
+    "DISABLED": "Óvirkt",
+    "CONNECTED": "Tengdur - Connected",
+    "NEVER_VERIFIED": "Aldrei sannreynt",
+    "ERROR": "Villa",
+    "EDIT_ACCOUNT": "Breyta reikningi",
+    "VERIFY_SMTP": "Sannprófa SMTP",
+    "VERIFIED": "Sannprófað",
+    "VERIFYSMTP_MAILACCOUNT": "Sannprófa SMTP",
+    "GOTOREALTIME_MAILACCOUNT": "Farðu í rauntíma tölvupóstreiknings ",
+    "GOTO_MAILACCOUNT": "Farðu í rauntíma tölvupóstreiknings",
+    "TEXT": "Texti",
+    "TIMES": "Fjöldi skipta á hver samskipti - Number of times per interaction",
+    "REPLY_TYPE": "Tegund svars",
+    "EDIT_AUTOREPLY": "Breyta sjálfvirku svari ",
+    "AUTOREPLY": "Sjálfvirkt svar",
+    "SHOW_AUTOREPLY": "Sýna sjálfvirkt svar",
+    "SHOW_DETAILS": "Sýna smáatriði",
+    "HIDE_DETAILS": "Fela smáatriði -  Hide details",
+    "TO": "Til",
+    "FROM": "Frá",
+    "DATE": "Dagsetning",
     "CC": "Cc",
-    "REPLY": "Reply",
-    "REPLY_ALL": "Reply All",
-    "FORWARD": "Forward",
-    "SUBJECT": "Subject",
+    "REPLY": "Svara",
+    "REPLY_ALL": "Svara öllu",
+    "FORWARD": "Áfram",
+    "SUBJECT": "Efni",
     "BCC": "Bcc",
-    "SEND": "Send",
-    "ATTACHMENT": "Attachment",
-    "ATTACHMENTS": "Attachments",
-    "NAME": "Name",
-    "MAILQUEUES": "Email Queues",
-    "SEARCH_FOR_ANYONE": "Search",
-    "STRATEGY": "Strategy",
-    "MANDATORYDISPOSITION": "Mandatory disposition",
-    "MANDATORYDISPOSITIONPAUSEID": "Pause to use if mandatory disposition is enabled",
+    "SEND": "Senda",
+    "ATTACHMENT": "Viðhengi",
+    "ATTACHMENTS": "Viðhengi ",
+    "NAME": "Nafn ",
+    "MAILQUEUES": "Tölvupóstraðir ",
+    "SEARCH_FOR_ANYONE": "Leita",
+    "STRATEGY": "Kænska",
+    "MANDATORYDISPOSITION": "Skyldubundin ráðstöfun - Mandatory disposition",
+    "MANDATORYDISPOSITIONPAUSEID": "Gera hlé til að nota ef skyldubundin ráðstöfun er virkjuð - Pause to use if mandatory disposition is enabled",
     "ERRORS": {
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "QUEUETRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "AGENTTRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
-      "TAG_REQUIRED": "Mandatory Field",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Mandatory Field",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "QUEUETRANSFERTIMEOUT_REQUIRED": "Áskildur reitur",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "AGENTTRANSFERTIMEOUT_REQUIRED": "Áskildur reitur",
+      "TAG_REQUIRED": "Áskildur reitur",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Áskildur reitur",
+      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
       "NAME_MUST_VALID_PATTERN": "Wrong format",
-      "COMMAND_REQUIRED": "Mandatory Field",
-      "FONT_SIZE_REQUIRED": "Mandatory Field",
-      "FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "TEXT_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "VALUE_REQUIRED": "Mandatory Field",
-      "TEXT_REQUIRED": "Mandatory Field",
-      "REPLY_TYPE_REQUIRED": "Mandatory Field",
-      "NAME_REQUIRED": "Mandatory Field",
-      "AGENT_TIMEOUT_REQUIRED": "Mandatory Field",
-      "EMAIL_ADDRESS_REQUIRED": "Mandatory Field",
-      "EMAIL_ADDRESS_MUST_VALID": "Wrong format",
-      "HOST_REQUIRED": "Mandatory Field",
-      "USERNAME_REQUIRED": "Mandatory Field",
-      "PORT_REQUIRED": "Mandatory Field",
-      "CONNTIMEOUT_REQUIRED": "Mandatory Field",
-      "AUTHTIMEOUT_REQUIRED": "Mandatory Field",
-      "ACCEPTURL_MUST_VALID_URL": "Wrong format",
-      "TIMEOUT_REQUIRED": "Mandatory Field",
-      "REJECTURL_MUST_VALID_URL": "Wrong format",
-      "CLOSEURL_MUST_VALID_URL": "Wrong format",
-      "AGENT_REQUIRED": "Mandatory Field",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "DISPOSITION_REQUIRED": "Mandatory Field",
-      "CONDITION_REQUIRED": "Mandatory Field",
-      "TRUEPRIORITY_REQUIRED": "Mandatory Field",
-      "FALSEPRIORITY_REQUIRED": "Mandatory Field",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "PRIORITY_REQUIRED": "Mandatory Field",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "QUEUE_REQUIRED": "Mandatory Field",
-      "LIST_REQUIRED": "Mandatory Field",
-      "PASSWORD_REQUIRED": "Mandatory Field",
-      "SERVICE_REQUIRED": "Mandatory Field",
-      "IMAP_HOST_REQUIRED": "Mandatory Field",
-      "IMAP_PORT_REQUIRED": "Mandatory Field",
-      "SMTP_HOST_REQUIRED": "Mandatory Field",
-      "SMTP_PORT_REQUIRED": "Mandatory Field",
-      "CONFIRM_NOT_MATCH": "The passwords inserted don't match",
-      "KEY_MAX_LENGTH": "Key must have a maximum length equal to {{max}}",
-      "KEY_REQUIRED": "Mandatory Field",
-      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Mandatory field",
-      "FIELD_REQUIRED": "Mandatory field"
+      "COMMAND_REQUIRED": "Áskildur reitur",
+      "FONT_SIZE_REQUIRED": "Áskildur reitur",
+      "FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "TEXT_MAX_LENGTH": "Gildið verður að hafa hámarkslengd jafnt og {{hámark}}",
+      "VALUE_REQUIRED": "Áskildur reitur",
+      "TEXT_REQUIRED": "Áskildur reitur",
+      "REPLY_TYPE_REQUIRED": "Áskildur reitur",
+      "NAME_REQUIRED": "Áskildur reitur",
+      "AGENT_TIMEOUT_REQUIRED": "Áskildur reitur",
+      "EMAIL_ADDRESS_REQUIRED": "Áskildur reitur",
+      "EMAIL_ADDRESS_MUST_VALID": "Rangt snið",
+      "HOST_REQUIRED": "Áskildur reitur",
+      "USERNAME_REQUIRED": "Áskildur reitur",
+      "PORT_REQUIRED": "Áskildur reitur",
+      "CONNTIMEOUT_REQUIRED": "Áskildur reitur",
+      "AUTHTIMEOUT_REQUIRED": "Áskildur reitur",
+      "ACCEPTURL_MUST_VALID_URL": "Rangt snið",
+      "TIMEOUT_REQUIRED": "Áskildur reitur",
+      "REJECTURL_MUST_VALID_URL": "Rangt snið",
+      "CLOSEURL_MUST_VALID_URL": "Rangt snið",
+      "AGENT_REQUIRED": "Áskildur reitur",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "DISPOSITION_REQUIRED": "Áskildur reitur",
+      "CONDITION_REQUIRED": "Áskildur reitur",
+      "TRUEPRIORITY_REQUIRED": "Áskildur reitur",
+      "FALSEPRIORITY_REQUIRED": "Áskildur reitur",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "PRIORITY_REQUIRED": "Áskildur reitur",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "QUEUE_REQUIRED": "Áskildur reitur",
+      "LIST_REQUIRED": "Áskildur reitur",
+      "PASSWORD_REQUIRED": "Áskildur reitur",
+      "SERVICE_REQUIRED": "Áskildur reitur",
+      "IMAP_HOST_REQUIRED": "Áskildur reitur",
+      "IMAP_PORT_REQUIRED": "Áskildur reitur",
+      "SMTP_HOST_REQUIRED": "Áskildur reitur",
+      "SMTP_PORT_REQUIRED": "Áskildur reitur",
+      "CONFIRM_NOT_MATCH": "Innslegin lykilorð passa ekki saman - The passwords inserted don't match",
+      "KEY_MAX_LENGTH": "Lykill verður að hafa hámarkslengd sem er jöfn Key must have a maximum length equal to {{max}}",
+      "KEY_REQUIRED": "Áskildur reitur",
+      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Áskildur reitur",
+      "FIELD_REQUIRED": "Áskildur reitur"
     },
-    "AGENT_TIMEOUT": "Agent Timeout",
-    "DESCRIPTION": "Description",
-    "ADD_MAILQUEUE": "Bæta við röð tölvupósts ",
-    "EDIT_MAILQUEUE": "Edit Email Queue",
-    "DELETE_MAILQUEUE": "Delete Email Queue",
-    "SETTINGS": "Settings",
-    "GENERAL": "General",
-    "SAVE": "Save",
-    "MAILACCOUNTS": "Email Accounts",
-    "EMAIL_ADDRESS": "Email Address",
-    "ADD_MAILACCOUNT": "Bæta við tölvupóstsreikning",
-    "EDIT_MAILACCOUNT": "Edit Email Account",
-    "DELETE_MAILACCOUNT": "Delete Email Account",
-    "DISPOSITIONS": "Dispositions",
+    "AGENT_TIMEOUT": "Tími þjónustufulltrúa runninn út - Agent Timeout",
+    "DESCRIPTION": "Lýsing",
+    "ADD_MAILQUEUE": "Bæta við tölvupóstsröð",
+    "EDIT_MAILQUEUE": "Breyta tölvupóströð ",
+    "DELETE_MAILQUEUE": "Eyða tölvupóströð",
+    "SETTINGS": "Stillingar",
+    "GENERAL": "Almennt",
+    "SAVE": "Vista",
+    "MAILACCOUNTS": "Tölvupóstreikningur",
+    "EMAIL_ADDRESS": "Breyta netfangi ",
+    "ADD_MAILACCOUNT": "Bæta við tölvupóstreikningi",
+    "EDIT_MAILACCOUNT": "Breyta tölvupóstreikningi",
+    "DELETE_MAILACCOUNT": "Eyða tölvupóstreikningi - Delete Email Account",
+    "DISPOSITIONS": "Fyrirkomulag",
     "WEBHOOKS": "WebHooks",
     "ACTIONS": "Aðgerðir",
-    "OTHERS": "Others",
-    "LIST": "List",
-    "TEMPLATE": "Template",
-    "FIDELITY": "Fidelity",
-    "SERVICE": "Service",
-    "CREATED_AT": "Created At",
+    "OTHERS": "Aðrir",
+    "LIST": "Listi",
+    "TEMPLATE": "Sniðmát",
+    "FIDELITY": "Trúnaður",
+    "SERVICE": "Þjónusta",
+    "CREATED_AT": "Stofnað kl.",
     "ACCEPT": "Samþykkja",
     "ACCEPTMETHOD": "Samþykkja aðferð",
     "ACCEPTURL": "Samþykkja URL",
-    "REJECT": "Reject",
-    "REJECTMETHOD": "Reject Method",
-    "REJECTURL": "Reject URL",
-    "CLOSE": "Close",
-    "CLOSEMETHOD": "Close Method",
-    "CLOSEURL": "Close URL",
-    "WHITELABEL": "White Label",
-    "SIGNATURE": "Signature",
+    "REJECT": "Hafna",
+    "REJECTMETHOD": "Hafna aðferð",
+    "REJECTURL": "Hafna URL",
+    "CLOSE": "Loka",
+    "CLOSEMETHOD": "Aðferð við lokun - Close Method",
+    "CLOSEURL": "Loka url - Close URL",
+    "WHITELABEL": "Hvítt merki",
+    "SIGNATURE": "Undirskrift",
     "IMAP": "IMAP",
     "HOST": "Host",
-    "USERNAME": "Username",
-    "PORT": "Port",
-    "MAILBOX": "Mailbox",
-    "FILTER": "Filter",
-    "CONNTIMEOUT": "Connection Timeout [sec]",
-    "AUTHTIMEOUT": "Authentication Timeout [sec]",
-    "DELETE": "Delete Email From Server",
+    "USERNAME": "Notendanafn",
+    "PORT": "Aðgangstengi",
+    "MAILBOX": "Pósthólf",
+    "FILTER": "Sía",
+    "CONNTIMEOUT": "Tímamörk tengingar [sek] - Connection Timeout [sec]",
+    "AUTHTIMEOUT": "Tímamörk auðkenningar  [sek] -  Authentication Timeout [sec]",
+    "DELETE": "Eyða tölvupósti frá netþjóni - Delete Email From Server",
     "SSL": "SSL",
-    "KEEPALIVE": "Keepalive",
-    "POLLING": "Polling",
+    "KEEPALIVE": "Halda lifandi",
+    "POLLING": "Fyrirspurnarkerfi",
     "SMTP": "SMTP",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "BACK": "Back",
-    "MAIL": "Email",
+    "SELECTED": "Valdnir",
+    "SELECT_ALL": "Veldu alla",
+    "SELECT_NONE": "Veldu engan",
+    "BACK": "Til baka",
+    "MAIL": "Tölvupóstur",
     "ID": "Id",
-    "TIMEOUT": "Timeout",
-    "PASSWORD": "Password",
-    "NO_MAILDISPOSITION_AVAILABLE": "No Email Dispositions available",
-    "ADD_MAILDISPOSITION": "Bæta við fyrirkomulag tölvupósts ",
-    "NEW_MAILDISPOSITION": "New Email Disposition",
-    "EDIT_MAILDISPOSITION": "Edit Email Disposition",
-    "DELETE_MAILDISPOSITION": "Delete Email Disposition",
-    "MAILDISPOSITIONS": "Email Dispositions",
-    "NEW_MAILQUEUE": "New Email Queue",
-    "NEW_MAILACCOUNT": "New Email Account",
-    "NO_AVAILABLE_INFO": "No availables info",
-    "ALL_TEAMS": "All Teams",
-    "SELECTED_TEAMS": "Selected Teams",
+    "TIMEOUT": "Hlé",
+    "PASSWORD": "Lykilorð",
+    "NO_MAILDISPOSITION_AVAILABLE": "Engin tölvupóstráðstöfun í boði",
+    "ADD_MAILDISPOSITION": "Bæta við fyrirkomulagi tölvupósts ",
+    "NEW_MAILDISPOSITION": "Nýtt fyrirkomulag tölvupósts ",
+    "EDIT_MAILDISPOSITION": "Breyta fyrirkomlagi tölvupósts ",
+    "DELETE_MAILDISPOSITION": "Eyða fyrirkomulagi tölvupósts - Delete Email Disposition",
+    "MAILDISPOSITIONS": "Fyrirkomulag tölvupósts ",
+    "NEW_MAILQUEUE": "Ný tölvupóströð - New Email Queue",
+    "NEW_MAILACCOUNT": "Nýr tölvupóstreikningur ",
+    "NO_AVAILABLE_INFO": "Engar tiltækar upplýsingar",
+    "ALL_TEAMS": "Öll teymi",
+    "SELECTED_TEAMS": "Valin teymi",
     "HELP": {
-      "FONT_FAMILY": "Default Font Family",
-      "FONT_SIZE": "Default Font Size",
-      "NAME": "Only numbers, letters and specific characters (._) are supported",
-      "USERNAME": "Username used for authentication",
-      "PASSWORD": "Password used for authentication",
-      "SECURE": "If true, the connection will use TLS when connecting to server",
-      "MANDATORYDISPOSITION": "Mandatory disposition",
-      "MANDATORYDISPOSITIONPAUSEID": "Pause to use when mandatory disposition is enabled",
-      "MARK_AS_UNREAD": "Enable/Disable agent to mark as unread the last message of an interaction",
-      "CLOUD_PROVIDER": "Cloud Provider used for authentication"
+      "FONT_FAMILY": "Sjálfgefin leturfjölskylda",
+      "FONT_SIZE": "Sjálfgefin leturstærð",
+      "NAME": "Aðeins tölur, stafir og sérstakir (._) eru studdir - Only numbers, letters and specific characters (._) are supported",
+      "USERNAME": "Notendarnafn notað til auðkenningar - Username used for authentication",
+      "PASSWORD": "Lykilorð notað til auðkenningar",
+      "SECURE": "Ef satt, mun tengingin nota TLS við tengingu við netþjón - If true, the connection will use TLS when connecting to server",
+      "MANDATORYDISPOSITION": "Skyldubundin ráðstöfun - Mandatory disposition",
+      "MANDATORYDISPOSITIONPAUSEID": "Gera hlé ef skyldubundin ráðstöfun er virk - Pause to use when mandatory disposition is enabled",
+      "MARK_AS_UNREAD": "Virkja/Óvirkja þjónustufulltrúa til að merkja við síðustu skilaboð í samskiptum sem ólesin - Unable/Disable  agent to mark as unread the last message of an interaction",
+      "CLOUD_PROVIDER": "Skýjaveita notuð til auðkenningar - Cloud Provider used for authentication"
     },
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
-    "OF": "of",
-    "TEAMADD_MAILQUEUE": "Add Team to Email Queue",
-    "AGENTADD_MAILQUEUE": "Bæta þjónustufulltrúa við biðröð fyrir tölvupóst -  Add Agent to Email Queue",
-    "ALL_AGENTS": "All Agents",
-    "SELECTED_AGENTS": "Selected Agents",
+    "PAGE": "Blaðsíða",
+    "ROWSPERPAGE": "Raðir á síðu\n",
+    "OF": "af",
+    "TEAMADD_MAILQUEUE": "Bættu teymi við tölvupóstsröð",
+    "AGENTADD_MAILQUEUE": "Bæta þjónustufulltrúa við tölvupóströð - Add Agent to Email Queue",
+    "ALL_AGENTS": "Allir þjónustufulltrúar",
+    "SELECTED_AGENTS": "Valdnir þjónustufulltrúar",
     "AGENT": "Þjónustufulltrúi",
-    "EDIT_AGENT": "Edit Agent",
-    "EDIT_CLOSE": "Edit Close",
-    "DISPOSITION": "Disposition",
+    "EDIT_AGENT": "Breyta þjónustufulltrúa",
+    "EDIT_CLOSE": "Breyta loka ",
+    "DISPOSITION": "Fyrirkomulag",
     "GOTOIF": "GotoIf",
-    "EDIT_GOTOIF": "Edit GotoIf",
-    "CONDITION": "Condition",
-    "TRUEPRIORITY": "True Priority",
-    "FALSEPRIORITY": "False Priority",
+    "EDIT_GOTOIF": "Breyta GotoIf",
+    "CONDITION": "Skilyrði",
+    "TRUEPRIORITY": "Sannur forgangur",
+    "FALSEPRIORITY": "Röng forgangsröðun",
     "GOTOP": "GotoP",
-    "EDIT_GOTOP": "Edit GotoP",
-    "PRIORITY": "Priority",
+    "EDIT_GOTOP": "Breyta GotoP",
+    "PRIORITY": "Forgangsröðun",
     "NOOP": "Noop",
-    "EDIT_NOOP": "Edit Noop",
-    "VALUE": "Value",
-    "QUEUE": "Queue",
-    "EDIT_QUEUE": "Edit Queue",
-    "INTERACTIONS": "Interactions",
-    "STARTEDAT": "Started At",
-    "LASTMESSAGE": "Last message",
-    "CONTACT": "Contact",
-    "CLOSEDAT": "Closed At",
-    "NOTES": "Notes",
-    "NO_INTERACTION_AVAILABLE": "No interactions available",
+    "EDIT_NOOP": "Breyta Noop",
+    "VALUE": "Gildi",
+    "QUEUE": "Röð",
+    "EDIT_QUEUE": "Breyta röð ",
+    "INTERACTIONS": "Samskipti",
+    "STARTEDAT": "Byrja kl.",
+    "LASTMESSAGE": "Síðustu skilaboð",
+    "CONTACT": "Hafðu samband",
+    "CLOSEDAT": "Lokar kl. - Closed At",
+    "NOTES": "Athugasemdir",
+    "NO_INTERACTION_AVAILABLE": "Engin samskipi í boði",
     "ACTIVE": "Virkur",
-    "SECURE": "Secure",
-    "AUTHENTICATION": "Authentication",
+    "SECURE": "Öruggt",
+    "AUTHENTICATION": "Auðkenning",
     "SMTP_HOST": "SMTP Host",
     "SMTP_PORT": "SMTP Port",
     "IMAP_HOST": "IMAP Host",
     "IMAP_PORT": "IMAP Port",
-    "CONFIRM_PASSWORD": "Confirm Password",
-    "SELECT_STATUS": "Select Status",
-    "OPENED": "Open",
-    "CLOSED": "Closed",
-    "ALL": "All",
-    "SELECT_ACCOUNT": "Select Account",
-    "STATUS": "Status",
+    "CONFIRM_PASSWORD": "Staðfestu lykilorð - Confirm Password",
+    "SELECT_STATUS": "Veldur staða",
+    "OPENED": "Opna",
+    "CLOSED": "Lokað",
+    "ALL": "Allir",
+    "SELECT_ACCOUNT": "Veldu reikning",
+    "STATUS": "Staða",
     "ACCOUNT": "Reikningur",
-    "OPEN": "Open",
-    "KEY": "Key",
+    "OPEN": "Opna",
+    "KEY": "Lykill",
     "SMTPSERVICE": "SMTP Service",
-    "UNKNOWN": "Unknown",
-    "UNREGISTERED": "Unregistered",
-    "UNAVAILABLE": "Unavailable",
-    "NOT_INUSE": "Not in use",
-    "REACHABLE": "Reachable",
-    "IN_USE": "In use",
-    "AGENTSADD_QUEUE": "Add agents to Email Queue",
-    "INFO": "Info",
-    "INTERACTIONS_MAILACCOUNT": "Go to Interactions",
-    "REFRESH_INTERACTIONS": "Refresh Interactions",
-    "DELETE_INTERACTION": "Delete Interaction",
-    "AGENTADD_MAILACCOUNT": "Bæta þjónustufulltrúa við tölvupóstsreikning",
-    "TEAMS_ASSOCIATION": "Teams Association",
-    "TOOLTIP_SCREENRECORDING_ON": "Screen Recording in progress",
-    "TOOLTIP_SCREENRECORDING_OFF": "Screen Recording available",
-    "DOWNLOAD_WITH_ATTACHMENT": "Download with attachment",
-    "DOWNLOAD_WITHOUT_ATTACHMENT": "Download without attachment",
-    "MODERN_AUTHENTICATION": "Modern Authentication",
-    "CLOUD_PROVIDER": "Cloud Provider",
-    "CUSTOM": "Custom",
-    "CREDENTIALS": "Credentials",
+    "UNKNOWN": "Óþekkt",
+    "UNREGISTERED": "Óskráður",
+    "UNAVAILABLE": "Ekki í boði",
+    "NOT_INUSE": "Ekki í notkun ",
+    "REACHABLE": "Hægt að nálgast",
+    "IN_USE": "Í notkun",
+    "AGENTSADD_QUEUE": "Bæta þjónustufulltrúum við tölvupóströð - Add agents to Email Queue",
+    "INFO": "Upplýsingar",
+    "INTERACTIONS_MAILACCOUNT": "Fara í samskipti",
+    "REFRESH_INTERACTIONS": "Endurnýja samskipti",
+    "DELETE_INTERACTION": "Eyða samskiptum ",
+    "AGENTADD_MAILACCOUNT": "Bæta þjónustufulltrúa við tölvupóstreikning ",
+    "TEAMS_ASSOCIATION": "Félag teymis",
+    "TOOLTIP_SCREENRECORDING_ON": "Skjáupptaka í vinnslu ",
+    "TOOLTIP_SCREENRECORDING_OFF": "Skjáupptaka í boði",
+    "DOWNLOAD_WITH_ATTACHMENT": "Hala niður viðhengi ",
+    "DOWNLOAD_WITHOUT_ATTACHMENT": "Hala niður án viðhengi ",
+    "MODERN_AUTHENTICATION": "Nútíma auðkenning ",
+    "CLOUD_PROVIDER": "Skýjaveita - Cloud Provider",
+    "CUSTOM": "Sérsniðin",
+    "CREDENTIALS": "Skilríki",
     "NOTIFICATIONS": {
-      "ACCOUNT_CREATED_SUCCESS_TITLE": "Account successfully created",
-      "ACCOUNT_SAVED_SUCCESS_TITLE": "Account successfully saved",
-      "ACCOUNT_DELETE_TITLE": "Are you sure want to delete the account?",
-      "ACCOUNT_DELETE_MESSAGE": "{{ name }} will be deleted",
-      "ACCOUNT_DELETED_SUCCESS_TITLE": "Account successfully deleted",
-      "ACCOUNT_SERVICE_DELETE": "You cannot delete a service account",
-      "ACCOUNTS_DELETE_TITLE": "Are you sure want to delete the selected accounts?",
-      "ACCOUNTS_DELETE_MESSAGE": "{{ total }} accounts will be deleted",
-      "ACCOUNTS_DELETED_SUCCESS_TITLE": "Accounts successfully deleted",
-      "SMTP_CONNECTION_SUCCESS_TITLE": "Successfully connected to the SMTP server",
-      "SMTP_CONNECTION_FAIL_TITLE": "Unable to connect to the SMTP server",
-      "UNKNOWN_SMTP_SERVER": "Unknown STMP server"
+      "ACCOUNT_CREATED_SUCCESS_TITLE": "Reikningur búinn til",
+      "ACCOUNT_SAVED_SUCCESS_TITLE": "Reikningurinn var vistaður\n",
+      "ACCOUNT_DELETE_TITLE": "Ertu viss um að þú viljir eyða reikningnum?\n",
+      "ACCOUNT_DELETE_MESSAGE": "{{ nafni }} verður eytt\n",
+      "ACCOUNT_DELETED_SUCCESS_TITLE": "Reikningi eytt\n",
+      "ACCOUNT_SERVICE_DELETE": "Þú getur ekki eytt þjónustureikningi\n",
+      "ACCOUNTS_DELETE_TITLE": "Ertu viss um að þú viljir eyða völdum reikningum?",
+      "ACCOUNTS_DELETE_MESSAGE": "{{ samtals }} reikningum verður eytt ",
+      "ACCOUNTS_DELETED_SUCCESS_TITLE": "Reikningar hafa verið eyddir - Accounts successfully deleted",
+      "SMTP_CONNECTION_SUCCESS_TITLE": "Tenging komin á við SMTP þjóninn - Successfully connected to the SMTP server",
+      "SMTP_CONNECTION_FAIL_TITLE": "Ekki tókst að tengjast SMTP þjóninum\n",
+      "UNKNOWN_SMTP_SERVER": "Óþekktur STMP þjónn"
     }
   }
 }
index 62b01dd..e9754e6 100644 (file)
@@ -8,63 +8,63 @@
     "DOWNLOAD_INTERACTION": "Download",
     "YOU_ARE_REGISTERED_AS_A": "Você está registrado como",
     "TRANSFER": "Transferir",
-    "QUEUETRANSFER": "Transferência de fila",
-    "QUEUETRANSFERTIMEOUT": "Tempo limite de transferência da fila",
-    "AGENTTRANSFER": "Transferência de Agente",
-    "AGENTTRANSFERTIMEOUT": "Tempo limite de transferência do agente",
+    "QUEUETRANSFER": "Transferência de Fila",
+    "QUEUETRANSFERTIMEOUT": "Timeout de Transferência da Fila",
+    "AGENTTRANSFER": "Transferir de Agente",
+    "AGENTTRANSFERTIMEOUT": "Timeout de Transferência de Agente",
     "TAG": "Tag",
     "EDIT_TAG": "Editar Tag",
-    "WAITFORTHEASSIGNEDAGENT": "Aguarde o agente atribuído",
+    "WAITFORTHEASSIGNEDAGENT": "Aguardando por um agente",
     "NOTIFICATION": "Notificação",
     "NOTIFICATIONSOUND": "Som",
-    "NOTIFICATIONSHAKE": "Tremer",
+    "NOTIFICATIONSHAKE": "Vibrar",
     "NOTIFICATIONTEMPLATE": "Modelo",
     "SYSTEM": "Sistema",
-    "EDIT_SYSTEM": "Editar sistema",
+    "EDIT_SYSTEM": "Editar Sistema",
     "COMMAND": "Comando",
     "VARIABLE": "Variável",
     "SEND_AS": "Enviar como",
-    "NEW_MAILSUBSTATUS": "Novo Sub Status",
-    "ADD_MAILSUBSTATUS": "Adicionar status de sub",
-    "MAILSUBSTATUSES": "Sub-status do email",
+    "NEW_MAILSUBSTATUS": "Novo Sub-status",
+    "ADD_MAILSUBSTATUS": "Adicionar Sub-status de Email",
+    "MAILSUBSTATUSES": "Sub-status do Email",
     "EDIT_MAILSUBSTATUS": "Editar",
     "DELETE_MAILSUBSTATUS": "Excluir",
-    "FONT_FAMILY": "Família de fontes",
-    "FONT_SIZE": "Tamanho da fonte",
+    "FONT_FAMILY": "Fonte do Texto",
+    "FONT_SIZE": "Tamanho da Fonte",
     "MARK_AS_UNREAD": "Marcar como não lido",
     "ACCEPTED": "Aceito",
-    "CANNEDANSWERS": "Respostas prontas",
-    "MAILCANNEDANSWERS": "Respostas prontas",
-    "NO_MAILCANNEDANSWER_AVAILABLE": "Não há respostas prontas disponíveis",
-    "NEW_MAILCANNEDANSWER": "Nova resposta pronta",
-    "ADD_MAILCANNEDANSWER": "Adicionar resposta pronta",
-    "EDIT_MAILCANNEDANSWER": "Editar resposta pronta",
-    "DELETE_MAILCANNEDANSWER": "Excluir resposta pronta",
+    "CANNEDANSWERS": "Respostas Pré-definidas",
+    "MAILCANNEDANSWERS": "Respostas Pré-definidas",
+    "NO_MAILCANNEDANSWER_AVAILABLE": "Nenhuma Respostas Pré-definidas disponíveis",
+    "NEW_MAILCANNEDANSWER": "Nova Resposta Pré-definida",
+    "ADD_MAILCANNEDANSWER": "Adicionar Resposta Pré-definida",
+    "EDIT_MAILCANNEDANSWER": "Editar Resposta Pré-definida",
+    "DELETE_MAILCANNEDANSWER": "Excluir Resposta Pré-definida",
     "SHOW_ORIGINAL_MESSAGE": "Mostrar mensagem original",
     "PENDING": "Pendente",
-    "SEND_AS_PENDING": "Enviar como pendente",
-    "SEND_AND_CLOSE": "Enviar e Fechar",
-    "CANNED_ANSWER_NOT_FOUND": "Nenhuma resposta predefinida foi encontrada",
-    "CANNED_ANSWER_SEARCH": "Digite um texto para pesquisar uma resposta automática",
-    "SPYINTERACTION": "Espião",
-    "ADD_NOTE": "Adicionar nota",
-    "NOTE": "Nota",
+    "SEND_AS_PENDING": "Enviar como Pendente",
+    "SEND_AND_CLOSE": "Enviar e Encerrar",
+    "CANNED_ANSWER_NOT_FOUND": "Nenhuma Resposta Pré-definida foi encontrada",
+    "CANNED_ANSWER_SEARCH": "Digite um texto para pesquisar uma resposta pré-definida",
+    "SPYINTERACTION": "Espiar",
+    "ADD_NOTE": "Adicionar Observação",
+    "NOTE": "Observação",
     "TAGS": "Tags",
-    "NO_AGENT_ONLINE": "Nenhum agente online",
-    "GOTOREALTIME_MAILQUEUE": "Ir para a fila de email em tempo real",
+    "NO_AGENT_ONLINE": "Nenhum Agente Online",
+    "GOTOREALTIME_MAILQUEUE": "Visualizar Fila de Email em Tempo Real",
     "PARTIALPAUSE": "Pausa Parcial",
     "BUSY": "Ocupado",
-    "TIMER": "Cronômetro",
-    "IDLE": "Ocioso",
+    "TIMER": "Timer",
+    "IDLE": "Disponível",
     "CAPACITY": "Capacidade",
-    "UNPAUSE": "Fim da Pausa",
+    "UNPAUSE": "Finalizar Pausa",
     "DEFAULT_PAUSE": "Pausa Padrão",
     "LOGOUT": "Sair",
-    "AGENTADD_QUEUE": "Adicionar agente à fila de email",
+    "AGENTADD_QUEUE": "Adicionar Agente à Fila de Email",
     "VOICE": "Voz",
     "CHAT": "Chat",
-    "SMS": "Sms",
-    "OPENCHANNEL": "Open channel",
+    "SMS": "SMS",
+    "OPENCHANNEL": "Open Channel",
     "FAX": "Fax",
     "REALTIME": "Tempo Real",
     "AGENTS": "Agentes",
     "ACCOUNTS": "Contas",
     "FULLNAME": "Nome Completo",
     "INTERNAL": "Interno",
-    "PHONE_STATE": "Estado do telefone",
-    "PHONE_STATUS": "Status do telefone",
+    "PHONE_STATE": "Estado do Telefone",
+    "PHONE_STATUS": "Status do Telefone",
     "PAUSE": "Pausa",
-    "LOGGED_IN": "Logado",
+    "LOGGED_IN": "Logado Em",
     "PAUSED": "Pausado",
     "READY": "Pronto",
     "WAITING": "Esperando",
     "TOTAL": "Total",
     "IN": "In",
-    "OUT": "Out",
+    "OUT": "Saída",
     "IMAP_STATUS": "IMAP Status",
     "SMTP_STATUS": "SMTP Status",
     "DISABLED": "Desativado",
     "CONNECTED": "Conectado",
     "NEVER_VERIFIED": "Nunca Verificado",
     "ERROR": "Erro",
-    "EDIT_ACCOUNT": "Editar conta",
-    "VERIFY_SMTP": "Verificar o SMTP",
+    "EDIT_ACCOUNT": "Editar Conta",
+    "VERIFY_SMTP": "Verificar SMTP",
     "VERIFIED": "Verificado",
-    "VERIFYSMTP_MAILACCOUNT": "Verificar o SMTP",
-    "GOTOREALTIME_MAILACCOUNT": "Ir para a conta de e-mail em tempo real",
-    "GOTO_MAILACCOUNT": "Ir para a conta de e-mail em tempo real",
+    "VERIFYSMTP_MAILACCOUNT": "Verificar SMTP",
+    "GOTOREALTIME_MAILACCOUNT": "Visualizar Conta de Email em Tempo Real",
+    "GOTO_MAILACCOUNT": "Visualizar Conta de Email em Tempo Real",
     "TEXT": "Texto",
     "TIMES": "Número de vezes por interação",
-    "EDIT_AUTOREPLY": "Editar resposta automática",
-    "AUTOREPLY": "Resposta automatica",
-    "SHOW_AUTOREPLY": "Mostrar resposta automática",
+    "EDIT_AUTOREPLY": "Editar Auto Resposta",
+    "AUTOREPLY": "Auto Resposta",
+    "SHOW_AUTOREPLY": "Mostrar Auto Resposta",
     "SHOW_DETAILS": "Mostrar detalhes",
-    "HIDE_DETAILS": "Detalhes ocultos",
+    "HIDE_DETAILS": "Ocultar detalhes",
     "TO": "Para",
     "FROM": "De",
     "DATE": "Data",
     "CC": "Cc",
-    "REPLY": "Resposta",
-    "REPLY_ALL": "Responder todos",
-    "FORWARD": "Frente",
-    "SUBJECT": "Sujeito",
-    "BCC": "Bcc",
+    "REPLY": "Responder",
+    "REPLY_ALL": "Responder à Todos",
+    "FORWARD": "Encaminhar",
+    "SUBJECT": "Assunto",
+    "BCC": "Cco",
     "SEND": "Enviar",
     "ATTACHMENT": "Anexo",
     "ATTACHMENTS": "Anexos",
     "NAME": "Nome",
     "MAILQUEUES": "Fila de Emails",
     "SEARCH_FOR_ANYONE": "Procurar",
-    "STRATEGY": "Estrategia",
+    "STRATEGY": "Estratégia",
     "ERRORS": {
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "QUEUETRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "AGENTTRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
-      "TAG_REQUIRED": "Mandatory Field",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Mandatory Field",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "NAME_MUST_VALID_PATTERN": "Wrong format",
-      "COMMAND_REQUIRED": "Mandatory Field",
-      "FONT_SIZE_REQUIRED": "Mandatory Field",
-      "FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "TEXT_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "VALUE_REQUIRED": "Mandatory Field",
-      "TEXT_REQUIRED": "Mandatory Field",
-      "NAME_REQUIRED": "Mandatory Field",
-      "AGENT_TIMEOUT_REQUIRED": "Mandatory Field",
-      "EMAIL_ADDRESS_REQUIRED": "Mandatory Field",
-      "EMAIL_ADDRESS_MUST_VALID": "Wrong format",
-      "HOST_REQUIRED": "Mandatory Field",
-      "USERNAME_REQUIRED": "Mandatory Field",
-      "PORT_REQUIRED": "Mandatory Field",
-      "CONNTIMEOUT_REQUIRED": "Mandatory Field",
-      "AUTHTIMEOUT_REQUIRED": "Mandatory Field",
-      "ACCEPTURL_MUST_VALID_URL": "Wrong format",
-      "TIMEOUT_REQUIRED": "Mandatory Field",
-      "REJECTURL_MUST_VALID_URL": "Wrong format",
-      "CLOSEURL_MUST_VALID_URL": "Wrong format",
-      "AGENT_REQUIRED": "Mandatory Field",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "DISPOSITION_REQUIRED": "Mandatory Field",
-      "CONDITION_REQUIRED": "Mandatory Field",
-      "TRUEPRIORITY_REQUIRED": "Mandatory Field",
-      "FALSEPRIORITY_REQUIRED": "Mandatory Field",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "PRIORITY_REQUIRED": "Mandatory Field",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "QUEUE_REQUIRED": "Mandatory Field",
-      "LIST_REQUIRED": "Mandatory Field",
-      "PASSWORD_REQUIRED": "Mandatory Field",
-      "SERVICE_REQUIRED": "Mandatory Field",
-      "IMAP_HOST_REQUIRED": "Mandatory Field",
-      "IMAP_PORT_REQUIRED": "Mandatory Field",
-      "SMTP_HOST_REQUIRED": "Mandatory Field",
-      "SMTP_PORT_REQUIRED": "Mandatory Field",
-      "CONFIRM_NOT_MATCH": "The passwords inserted don't match",
-      "KEY_MAX_LENGTH": "Key must have a maximum length equal to {{max}}",
-      "KEY_REQUIRED": "Mandatory Field",
-      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Campo obrigatório",
-      "REPLY_TYPE_REQUIRED": "Campo Obrigatório",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor precisa ser menor ou igual à",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor precisa ser maior ou igual à",
+      "QUEUETRANSFERTIMEOUT_REQUIRED": "Campo obrigatório",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor precisa ser menor ou igual à",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor precisa ser maior ou igual à",
+      "AGENTTRANSFERTIMEOUT_REQUIRED": "Campo Obrigatório",
+      "TAG_REQUIRED": "Campo obrigatório",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor precisa ser menor ou igual à",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor precisa ser maior ou igual à",
+      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Campo obrigatório",
+      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor precisa ser menor ou igual à",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor precisa ser menor ou igual à",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor precisa ser maior ou igual à",
+      "NAME_MUST_VALID_PATTERN": "Formato errado",
+      "COMMAND_REQUIRED": "Campo obrigatório",
+      "FONT_SIZE_REQUIRED": "Campo obrigatório",
+      "FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor precisa ser maior ou igual à",
+      "FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor precisa ser menor ou igual à",
+      "TEXT_MAX_LENGTH": "O valor precisa ter tamanho máximo de até {{max}}",
+      "VALUE_REQUIRED": "Campo obrigatório",
+      "TEXT_REQUIRED": "Campo obrigatório",
+      "NAME_REQUIRED": "Campo obrigatório",
+      "AGENT_TIMEOUT_REQUIRED": "Campo obrigatório",
+      "EMAIL_ADDRESS_REQUIRED": "Campo obrigatório",
+      "EMAIL_ADDRESS_MUST_VALID": "Formato incorreto",
+      "HOST_REQUIRED": "Campo obrigatório",
+      "USERNAME_REQUIRED": "Campo obrigatório",
+      "PORT_REQUIRED": "Campo obrigatório",
+      "CONNTIMEOUT_REQUIRED": "Campo obrigatório",
+      "AUTHTIMEOUT_REQUIRED": "Campo obrigatório",
+      "ACCEPTURL_MUST_VALID_URL": "Formato errrado",
+      "TIMEOUT_REQUIRED": "Campo obrigatório",
+      "REJECTURL_MUST_VALID_URL": "Formato errado",
+      "CLOSEURL_MUST_VALID_URL": "Formato errado",
+      "AGENT_REQUIRED": "Campo Obrigatório",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor precisa ser maior ou igual à",
+      "DISPOSITION_REQUIRED": "Campo obrigatório",
+      "CONDITION_REQUIRED": "Campo obrigatório",
+      "TRUEPRIORITY_REQUIRED": "Campo obrigatório",
+      "FALSEPRIORITY_REQUIRED": "Campo obrigatório",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor precisa ser maior ou igual à",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor precisa ser maior ou igual à",
+      "PRIORITY_REQUIRED": "Campo obrigatório",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor precisa ser maior ou igual à",
+      "QUEUE_REQUIRED": "Campo obrigatório",
+      "LIST_REQUIRED": "Campo obrigatório",
+      "PASSWORD_REQUIRED": "Campo obrigatório",
+      "SERVICE_REQUIRED": "Campo obrigatório",
+      "IMAP_HOST_REQUIRED": "Campo obrigatório",
+      "IMAP_PORT_REQUIRED": "Campo obrigatório",
+      "SMTP_HOST_REQUIRED": "Campo obrigatório",
+      "SMTP_PORT_REQUIRED": "Campo obrigatório",
+      "CONFIRM_NOT_MATCH": "A senha inserida não confere",
+      "KEY_MAX_LENGTH": "A chave precisa ter tamanho máximo de até {{max}}",
+      "KEY_REQUIRED": "Campo obrigatório",
+      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Campo Oobrigatório",
+      "REPLY_TYPE_REQUIRED": "Campo obrigatório",
       "FIELD_REQUIRED": "Campo obrigatório"
     },
-    "AGENT_TIMEOUT": "Tempo limite do agente",
+    "AGENT_TIMEOUT": "Timeout do Agente",
     "DESCRIPTION": "Descrição",
-    "ADD_MAILQUEUE": "Adicionar fila de email",
-    "EDIT_MAILQUEUE": "Editar fila de email",
-    "DELETE_MAILQUEUE": "Excluir fila de email",
+    "ADD_MAILQUEUE": "Adicionar Fila de Email",
+    "EDIT_MAILQUEUE": "Editar Fila de Email",
+    "DELETE_MAILQUEUE": "Excluir Fila de Email",
     "SETTINGS": "Configurações",
     "GENERAL": "Geral",
     "SAVE": "Salvar",
     "MAILACCOUNTS": "Contas de Email",
     "EMAIL_ADDRESS": "Endereço de Email",
-    "ADD_MAILACCOUNT": "Adicionar conta de Email",
-    "EDIT_MAILACCOUNT": "Editar conta de Email",
-    "DELETE_MAILACCOUNT": "Excluir conta de Email",
-    "DISPOSITIONS": "Disposições",
+    "ADD_MAILACCOUNT": "Adicionar Conta de Email",
+    "EDIT_MAILACCOUNT": "Editar Conta de Email",
+    "DELETE_MAILACCOUNT": "Excluir Conta de Email",
+    "DISPOSITIONS": "Qualificações",
     "WEBHOOKS": "WebHooks",
     "ACTIONS": "Ações",
     "OTHERS": "Outros",
     "SERVICE": "Serviço",
     "CREATED_AT": "Criado em",
     "ACCEPT": "Aceitar",
-    "ACCEPTMETHOD": "Aceite o método",
-    "ACCEPTURL": "Aceitar URL",
+    "ACCEPTMETHOD": "Método de Aceite",
+    "ACCEPTURL": "URL de Aceite",
     "REJECT": "Rejeitar",
-    "REJECTMETHOD": "Rejeitar Método",
-    "REJECTURL": "Rejeitar URL",
-    "CLOSE": "Fechar",
-    "CLOSEMETHOD": "Fechar Metodo",
-    "CLOSEURL": "Fechar URL",
+    "REJECTMETHOD": "Método de Rejeição",
+    "REJECTURL": "URL de Rejeição",
+    "CLOSE": "Encerrar",
+    "CLOSEMETHOD": "Método de Encerramento",
+    "CLOSEURL": "URL de Encerramento",
     "WHITELABEL": "White Label",
     "SIGNATURE": "Assinatura",
     "IMAP": "IMAP",
     "HOST": "Host",
     "USERNAME": "Usuário",
     "PORT": "Porta",
-    "MAILBOX": "Caixa de correio",
+    "MAILBOX": "Caixa de Entrada",
     "FILTER": "Filtro",
-    "CONNTIMEOUT": "Tempo limite de conexão [seg]",
-    "AUTHTIMEOUT": "Tempo limite de autenticação [seg]",
-    "DELETE": "Excluir email do servidor",
+    "CONNTIMEOUT": "Timeout de Conexão [seg]",
+    "AUTHTIMEOUT": "Timeout de Autenticação [seg]",
+    "DELETE": "Excluir Email do Servidor",
     "SSL": "SSL",
     "KEEPALIVE": "Keepalive",
-    "POLLING": "Polling",
+    "POLLING": "Sondagem",
     "SMTP": "SMTP",
     "SELECTED": "Selecionado",
-    "SELECT_ALL": "Selecionar tudo",
-    "SELECT_NONE": "Selecionar nenhum",
+    "SELECT_ALL": "Selecionar Tudo",
+    "SELECT_NONE": "Selecionar Nenhum",
     "BACK": "Voltar",
     "MAIL": "Email",
     "ID": "Id",
-    "TIMEOUT": "Tempo esgotado",
+    "TIMEOUT": "Timeout",
     "PASSWORD": "Senha",
-    "NO_MAILDISPOSITION_AVAILABLE": "Nenhuma disposição de email disponível",
-    "ADD_MAILDISPOSITION": "Adicionar disposição de email",
-    "NEW_MAILDISPOSITION": "Nova disposição de email",
-    "EDIT_MAILDISPOSITION": "Editar disposição de email",
-    "DELETE_MAILDISPOSITION": "Excluir disposição de email",
-    "MAILDISPOSITIONS": "Disposições de email",
-    "NEW_MAILQUEUE": "Nova fila de email",
-    "NEW_MAILACCOUNT": "Nova conta de email",
-    "NO_AVAILABLE_INFO": "Nenhuma informação disponível",
-    "ALL_TEAMS": "Todas as equipes",
+    "NO_MAILDISPOSITION_AVAILABLE": "Nenhuma Qualificação de Email disponível",
+    "ADD_MAILDISPOSITION": "Adicionar Qualificação de Email",
+    "NEW_MAILDISPOSITION": "Nova Qualificação de Email",
+    "EDIT_MAILDISPOSITION": "Editar Qualificação de Email",
+    "DELETE_MAILDISPOSITION": "Excluir Qualificação de Email",
+    "MAILDISPOSITIONS": "Qualificações de Email",
+    "NEW_MAILQUEUE": "Nova Fila de Email",
+    "NEW_MAILACCOUNT": "Nova Conta de Email",
+    "NO_AVAILABLE_INFO": "Nenhuma Info Disponível",
+    "ALL_TEAMS": "Todas as Equipes",
     "SELECTED_TEAMS": "Equipes Selecionadas",
     "HELP": {
-      "FONT_FAMILY": "Default Font Family",
-      "FONT_SIZE": "Default Font Size",
-      "NAME": "Only numbers, letters and specific characters (._) are supported",
-      "USERNAME": "Username used for authentication",
-      "PASSWORD": "Password used for authentication",
-      "SECURE": "If true, the connection will use TLS when connecting to server",
-      "MARK_AS_UNREAD": "Enable/Disable agent to mark as unread the last message of an interaction",
-      "MANDATORYDISPOSITION": "Disposição obrigatória",
-      "MANDATORYDISPOSITIONPAUSEID": "Pausar para usar quando a disposição obrigatória estiver ativada",
-      "CLOUD_PROVIDER": "Provedor de nuvem usado para autenticação"
+      "FONT_FAMILY": "Fonte do Texto Padrão",
+      "FONT_SIZE": "Tamanho da Fonte Padrão",
+      "NAME": "Somente números, letras e caracteres específicos (._) são suportados",
+      "USERNAME": "Username usado para autenticação",
+      "PASSWORD": "Password usado para autenticação",
+      "SECURE": "Se habilitado, a conexão utilizará TLS quando conectar ao servidor",
+      "MARK_AS_UNREAD": "Habilitar/Desabilitar agente a marcar como não lida uma interação",
+      "MANDATORYDISPOSITION": "Qualificação obrigatória",
+      "MANDATORYDISPOSITIONPAUSEID": "Pausa usada quando a Qualificação obrigatória estiver habilitada",
+      "CLOUD_PROVIDER": "Provedor de Nuvem usado para autenticação"
     },
-    "PAGE": "Pagina",
-    "ROWSPERPAGE": "Linhas por Página",
+    "PAGE": "Página",
+    "ROWSPERPAGE": "Linhas por página",
     "OF": "do",
-    "TEAMADD_MAILQUEUE": "Adicionar equipe à fila de email",
-    "AGENTADD_MAILQUEUE": "Adicionar agente à fila de email",
-    "ALL_AGENTS": "Todos os agentes",
+    "TEAMADD_MAILQUEUE": "Adicionar Equipe à Fila de Email",
+    "AGENTADD_MAILQUEUE": "Adicionar Agente à Fila de Email",
+    "ALL_AGENTS": "Todos os Agentes",
     "SELECTED_AGENTS": "Agentes Selecionados",
     "AGENT": "Agente",
-    "EDIT_AGENT": "Editar agente",
-    "EDIT_CLOSE": "Editar Fechar",
-    "DISPOSITION": "Disposição",
+    "EDIT_AGENT": "Editar Agente",
+    "EDIT_CLOSE": "Editar Encerramento",
+    "DISPOSITION": "Qualificação",
     "GOTOIF": "GotoIf",
     "EDIT_GOTOIF": "Editar GotoIf",
     "CONDITION": "Condição",
-    "TRUEPRIORITY": "Verdadeira prioridade",
-    "FALSEPRIORITY": "Falsa Prioridade",
+    "TRUEPRIORITY": "ID de Prioridade caso Verdadeiro",
+    "FALSEPRIORITY": "Id da Prioridade caso Falso",
     "GOTOP": "GotoP",
     "EDIT_GOTOP": "Editar GotoP",
     "PRIORITY": "Prioridade",
     "INTERACTIONS": "Interações",
     "STARTEDAT": "Começou às",
     "CONTACT": "Contato",
-    "CLOSEDAT": "Fechado em",
-    "NOTES": "Notas",
+    "CLOSEDAT": "Encerrado em",
+    "NOTES": "Observações",
     "NO_INTERACTION_AVAILABLE": "Não há interações disponíveis",
     "ACTIVE": "Ativo",
     "SECURE": "Seguro",
     "IMAP_HOST": "IMAP Host",
     "IMAP_PORT": "IMAP Port",
     "CONFIRM_PASSWORD": "Confirme a Senha",
-    "SELECT_STATUS": "Selecione o status",
+    "SELECT_STATUS": "Selecionar Status",
     "OPENED": "Abrir",
-    "CLOSED": "Fechadas",
+    "CLOSED": "Encerradas",
     "ALL": "Todos",
-    "SELECT_ACCOUNT": "Selecione uma conta",
+    "SELECT_ACCOUNT": "Selecionar Conta",
     "STATUS": "Status",
     "ACCOUNT": "Conta",
     "OPEN": "Abrir",
     "UNKNOWN": "Desconhecido",
     "UNREGISTERED": "Não registrado",
     "UNAVAILABLE": "Indisponível",
-    "NOT_INUSE": "Fora de uso",
+    "NOT_INUSE": "Disponível",
     "REACHABLE": "Alcançável",
-    "IN_USE": "Em uso",
-    "AGENTSADD_QUEUE": "Adicionar agentes à fila de email",
+    "IN_USE": "Ocupado",
+    "AGENTSADD_QUEUE": "Adicionar Agentes à Fila de Email",
     "INFO": "Info",
     "INTERACTIONS_MAILACCOUNT": "Ir para Interações",
     "REFRESH_INTERACTIONS": "Atualizar Interações",
-    "DELETE_INTERACTION": "Excluir interação",
-    "AGENTADD_MAILACCOUNT": "Adicionar agente à conta de email",
-    "TEAMS_ASSOCIATION": "Associação de equipes",
-    "MANDATORYDISPOSITION": "Disposição obrigatória",
-    "MANDATORYDISPOSITIONPAUSEID": "Pausar para usar se a disposição obrigatória estiver ativada",
+    "DELETE_INTERACTION": "Excluir Interação",
+    "AGENTADD_MAILACCOUNT": "Adicionar Agente à Conta de Email",
+    "TEAMS_ASSOCIATION": "Associação de Equipes",
+    "MANDATORYDISPOSITION": "Qualificação obrigatória",
+    "MANDATORYDISPOSITIONPAUSEID": "Pausa usada se Qualificação obrigatória estiver habilitada",
     "ADVANCED": "Avançado",
-    "TOOLTIP_SCREENRECORDING_OFF": "Gravação de tela disponível",
-    "TOOLTIP_SCREENRECORDING_ON": "Gravação de tela em andamento",
+    "TOOLTIP_SCREENRECORDING_OFF": "Gravação de Tela disponível",
+    "TOOLTIP_SCREENRECORDING_ON": "Gravação de Tela em andamento",
     "DOWNLOAD_WITHOUT_ATTACHMENT": "Download sem anexo",
     "DOWNLOAD_WITH_ATTACHMENT": "Download com anexo",
     "LASTMESSAGE": "Última mensagem",
     "REPLY_TYPE": "Tipo de Resposta",
-    "CLOUD_PROVIDER": "Provedor de nuvem",
+    "CLOUD_PROVIDER": "Provedor de Nuvem",
     "CREDENTIALS": "Credenciais",
     "CUSTOM": "Personalizado",
-    "MODERN_AUTHENTICATION": "Autenticação moderna"
+    "MODERN_AUTHENTICATION": "Autenticação Moderna"
   }
 }
index 6b63309..546b431 100644 (file)
 {
   "MOTIONDIALER": {
-    "SECOND_LEVEL_DISPOSITION": "Second Level Disposition",
-    "THIRD_LEVEL_DISPOSITION": "Third Level Disposition",
-    "ONE_CALL_EVERY": "One call every",
-    "CURRENT_INTERVAL": "Current Interval",
-    "PREVIOUS_INTERVAL": "Previous Interval",
-    "PREDICTIVE_IS_RUNNING": "Predictive is running",
-    "PREDICTIVE_IS_NOT_RUNNING": "Predictive is not running",
-    "DATA_COLLECTION_IN_PROGRESSIVE": "Data collection in Progressive",
-    "SHOW_PREDICTIVE_QUEUE_CAMPAIGN_INFO": "Show Predictive Info",
-    "AVG_TALK_TIME": "Avg Talk Time",
-    "ANSWERED_CALLS": "Answered Calls",
-    "TOTAL_CALLS": "Total Calls",
-    "THRESHOLDS": "Thresholds",
-    "PREDICTIVEMAXTHRESHOLD": "Predictive Max Threshold [%]",
-    "PREDICTIVEMINTHRESHOLD": "Predictive Min Threshold [%]",
-    "REFRESH_SCHEDULED_CALLS": "Refresh Scheduled Calls",
-    "RECALLINQUEUE": "Recall in queue",
-    "SELECT_DATE": "Select Date",
-    "SELECT_TYPE": "Select Type",
-    "SELECT_CAMPAIGN": "Select Campaign",
-    "SCHEDULED_CALLS": "Scheduled Calls",
-    "LOGIN_TIME": "Login time",
-    "PAUSE_TIME": "Pause time",
-    "PREVIEW_RECALL_ME_REMINDER": "Recall Me Reminder",
-    "CUTDIGIT": "Cut Digits",
-    "RANDOMLASTDIGITCALLERIDNUMBER": "Random Outgoing CallerId Number",
-    "CLONE_IVRCAMPAIGN": "Clone Campaign",
-    "CLONE_QUEUECAMPAIGN": "Clone Queue Campaign",
-    "ABANDONEDCALLS": "Abandoned Queue Calls",
-    "HOPPERWIDGET": "Summary",
-    "RESETLIST_IVRCAMPAIGN": "Reset Lists",
-    "RESETLIST_QUEUECAMPAIGN": "Reset Lists",
-    "RESET": "Reset",
-    "RESETLIST": "Reset Lists",
-    "SELECTALL": "Select All",
-    "UNSELECTALL": "Un-Select All",
-    "NO_AVAILABLE_INFO": "No available info",
-    "TIMEOUT": "Timeout",
-    "CALLYSQUAREPROJECTPREVIEW": "Cally Square Project Preview",
-    "CALLYSQUAREPROJECTPREVIEW2": "Cally Square Project After Preview",
-    "RUNIFHANGUPAGENT": "Run Cally Square Project After even if the agent hangs up the call",
-    "CALLYSQUAREPROJECT2": "Cally Square Project After Queue",
-    "NO_AGENT_ONLINE": "No Agent Online",
-    "PARTIALPAUSE": "Parital Pause",
-    "ALL": "All",
-    "IDLE": "Idle",
-    "TIMER": "Timer",
-    "MOVE_HOPPERFINAL": "Restore contact",
-    "RESTORECONTACTS": "Restore Contacts",
-    "NO_SUCH_NUMBER": "No Such Number",
-    "ANSWERING_MACHINE": "Answering machine",
-    "DIALORDERBYSCHEDULEDAT": "Order By scheduledat",
+    "SECOND_LEVEL_DISPOSITION": "Annarsstigs ráðstöfun",
+    "THIRD_LEVEL_DISPOSITION": "Þriðja stigs ráðstöfun",
+    "ONE_CALL_EVERY": "Eitt símtal alltaf",
+    "CURRENT_INTERVAL": "Núverandi bil",
+    "PREVIOUS_INTERVAL": "Fyrra tímabil",
+    "PREDICTIVE_IS_RUNNING": "Forsjá er virk, í gangi",
+    "PREDICTIVE_IS_NOT_RUNNING": "Forsjá er ekki virk, í gangi",
+    "DATA_COLLECTION_IN_PROGRESSIVE": "Gagnasöfnun í áföngum - Data collection in Progressive",
+    "SHOW_PREDICTIVE_QUEUE_CAMPAIGN_INFO": "Sýna forsjárgildis upplýsingar",
+    "AVG_TALK_TIME": "Meðal taltími",
+    "ANSWERED_CALLS": "Símtölum svarað",
+    "TOTAL_CALLS": "Heildar fjöldi hringinga",
+    "THRESHOLDS": "Þrösköldar",
+    "PREDICTIVEMAXTHRESHOLD": "Forsjár hámarks þröskuldur [%]",
+    "PREDICTIVEMINTHRESHOLD": "Forsjár lámarks þröskuldur [%]",
+    "REFRESH_SCHEDULED_CALLS": "Endurnýjaðu skipulögð köll",
+    "RECALLINQUEUE": "Endurhringin er í röðinni",
+    "SELECT_DATE": "Veldu dag",
+    "SELECT_TYPE": "Veldu tegun",
+    "SELECT_CAMPAIGN": "Velja herferð",
+    "SCHEDULED_CALLS": "Skipulögð símtöl",
+    "LOGIN_TIME": "Innskráður tími",
+    "PAUSE_TIME": "Tími á hléinu",
+    "PREVIEW_RECALL_ME_REMINDER": "Minna mig á mín skilaboð",
+    "CUTDIGIT": "Klipptu tölustafi",
+    "RANDOMLASTDIGITCALLERIDNUMBER": "Handahófs úthringi auðkenni",
+    "CLONE_IVRCAMPAIGN": "Klóna herferð ",
+    "CLONE_QUEUECAMPAIGN": "Klóna herferð raðar",
+    "ABANDONEDCALLS": "Hringingar í biðröð sem var hætt við",
+    "HOPPERWIDGET": "Samantekt",
+    "RESETLIST_IVRCAMPAIGN": "Endursetja lista",
+    "RESETLIST_QUEUECAMPAIGN": "endursetja lista",
+    "RESET": "Endursetja",
+    "RESETLIST": "endursetja lista",
+    "SELECTALL": "Velja allt",
+    "UNSELECTALL": "Hætta við að velja allt",
+    "NO_AVAILABLE_INFO": "Engar aupplýsingar fáanlegar",
+    "TIMEOUT": "Tími rann út",
+    "CALLYSQUAREPROJECTPREVIEW": "Forskoðun Cally Square verkefnisins",
+    "CALLYSQUAREPROJECTPREVIEW2": "Verkefni Cally Square eftir forskoðun ",
+    "RUNIFHANGUPAGENT": "Keyrðu Cally Square verkefnið aftur þótt fulltrúinn skelli á",
+    "CALLYSQUAREPROJECT2": "Verkefni Cally Square eftir röð ",
+    "NO_AGENT_ONLINE": "Engin fulltrúi tengdur",
+    "PARTIALPAUSE": "Stutt hlé",
+    "ALL": "Allir",
+    "IDLE": "Laust",
+    "TIMER": "Teljari",
+    "MOVE_HOPPERFINAL": "Endurheimta tengilið",
+    "RESTORECONTACTS": "Endursetja tengilið",
+    "NO_SUCH_NUMBER": "ekkert slíkt númer",
+    "ANSWERING_MACHINE": "Símsvari",
+    "DIALORDERBYSCHEDULEDAT": "Panta hringingu ",
     "ASC": "ASC",
     "DESC": "DESC",
-    "RECALLAGENT": "Recall Agent",
-    "DIALRECALLINQUEUE": "Recall In Queue",
-    "DIALRECALLMETIMEOUT": "Recall Me Timeout [min]",
-    "RECALLME": "Recall Me",
-    "RECALLFAILEDTIMEOUT": "Recall Failed",
-    "PREVIEW_CAMPAIGN": "Preview Campaigns",
-    "PREVIEW_CAMPAIGNS": "Preview Campaigns",
-    "AMD": "Asterisk Answering Machine Detection (AMD)",
-    "AMDTOTALANALYSISTIME": "Total Analysis Time",
+    "RECALLAGENT": "Hringdu aftur í fulltrúann",
+    "DIALRECALLINQUEUE": "Muna eftir hringingu í biðröð",
+    "DIALRECALLMETIMEOUT": "Tímamörk áminningu [mín]",
+    "RECALLME": "Hringdu í mig",
+    "RECALLFAILEDTIMEOUT": "Hringing mistókst",
+    "PREVIEW_CAMPAIGN": "Forskoða herferð",
+    "PREVIEW_CAMPAIGNS": "forskoða herferð",
+    "AMD": "Asterisk símsvörun skynjuð (AMD)",
+    "AMDTOTALANALYSISTIME": "Heildar greiningartími",
     "AMDACTIVE": "AMD",
-    "AMDINITIALSILENCE": "Initial Silence",
-    "AMDGREETING": "Greeting",
-    "AMDAFTERGREETINGSILENCE": "Silence after Greeting",
-    "AMDSILENCETHRESHOLD": "Silence Threshold",
-    "AMDMINWORDLENGTH": "Min Word Length",
-    "AMDBETWEENWORDSSILENCE": "Silence Between Words",
-    "AMDMAXIMUMWORDLENGTH": "Maximum Word Length",
-    "AMDMAXIMUMNUMBEROFWORDS": "Maximum Number Of Words",
-    "GOTO_QUEUECAMPAIGN": "Go To Realtime Queue Campaigns",
-    "GOTOREALTIME_QUEUECAMPAIGN": "Go To Realtime Queue Campaigns",
-    "GOTO_IVRCAMPAIGN": "Go To Realtime IVR Campaigns",
-    "GOTOREALTIME_IVRCAMPAIGN": "Go To Realtime IVR Campaigns",
-    "LOGOUT": "Logout",
-    "EDIT_CAMPAIGN": "Edit Campaign",
-    "LIMITED": "Limited",
-    "IVR_CAMPAIGNS": "IVR Campaigns",
+    "AMDINITIALSILENCE": "Upphafsþögn",
+    "AMDGREETING": "Kveðja",
+    "AMDAFTERGREETINGSILENCE": "Þögn eftir kveðju\n",
+    "AMDSILENCETHRESHOLD": "Viðmiðunarmörk þagnar",
+    "AMDMINWORDLENGTH": "Lágmarks lengd orða ",
+    "AMDBETWEENWORDSSILENCE": "Þögn á milli orða\n",
+    "AMDMAXIMUMWORDLENGTH": "Hámarkslengd orða",
+    "AMDMAXIMUMNUMBEROFWORDS": "Hámarksfjöldi orða",
+    "GOTO_QUEUECAMPAIGN": "Fara í rauntíma biðraða herferða",
+    "GOTOREALTIME_QUEUECAMPAIGN": "Fara í rauntíma röð herferðar ",
+    "GOTO_IVRCAMPAIGN": "Fara í rauntíma IVR herferða",
+    "GOTOREALTIME_IVRCAMPAIGN": "Fara í rauntíma IVR herferðar",
+    "LOGOUT": "Útskráning",
+    "EDIT_CAMPAIGN": "Breyta herferð",
+    "LIMITED": "Takmarkað",
+    "IVR_CAMPAIGNS": "IVR herferð",
     "MOTIONDIALER": "Motion Bull",
-    "QUEUECAMPAIGNS": "Queue Campaigns",
-    "IVRCAMPAIGNS": "IVR Campaigns",
-    "MANAGED": "Managed",
-    "AVAILABLE_CONTACTS_FINISHED": "Available contacts finished",
-    "HISTORY": "History",
-    "SCHEDULEDAT": "Scheduled At",
-    "HOPPERBLACKS": "Hopper Blacklist",
+    "QUEUECAMPAIGNS": "Biðraðarherferð",
+    "IVRCAMPAIGNS": "IVR herferð",
+    "MANAGED": "Stjórnað",
+    "AVAILABLE_CONTACTS_FINISHED": "Tiltækum tengiliðum lokið",
+    "HISTORY": "Sagan",
+    "SCHEDULEDAT": "Stillt kl.",
+    "HOPPERBLACKS": "Hopper Svarti listinn",
     "NO_HOPPERBLACK_AVAILABLE": "No items available",
-    "HOPPERFINALS": "Hopper Final",
+    "HOPPERFINALS": "Hopper Loka",
     "NO_HOPPERFINAL_AVAILABLE": "No items available",
-    "HOPPERHISTORIES": "Call history",
+    "HOPPERHISTORIES": "Símtala skrá",
     "NO_HOPPERHISTORY_AVAILABLE": "No items available",
-    "DELETE_HOPPERHISTORY": "Delete",
-    "DELETE_HOPPERFINAL": "Delete",
-    "CONTACTID": "Contact ID",
-    "STARTTIME": "Start Time",
-    "RESPONSETIME": "Response Time",
-    "ENDTIME": "End Time",
-    "STATUS": "Status",
+    "DELETE_HOPPERHISTORY": "Eyða",
+    "DELETE_HOPPERFINAL": "Eyða",
+    "CONTACTID": "Auðkenni tengiliðs",
+    "STARTTIME": "Upphafstími",
+    "RESPONSETIME": "Svörunar tími",
+    "ENDTIME": "Lokatími",
+    "STATUS": "Staða",
     "HOPPERS": "Hopper",
-    "NO_HOPPER_AVAILABLE": "No items available",
-    "EDIT_HOPPER": "Edit Hopper",
-    "DELETE_HOPPER": "Delete Hopper",
-    "FINAL": "Final",
-    "BLACKLIST": "Blacklist",
-    "NAME": "Name",
-    "VOICEQUEUES": "Voice Queues",
-    "SEARCH_FOR_ANYONE": "Search",
-    "BACK": "Back",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "DELETE_VOICEDISPOSITION": "Delete Voice Disposition",
-    "EDIT_VOICEDISPOSITION": "Edit Voice Disposition",
-    "EDIT_VOICEQUEUE": "Edit Voice Queue",
-    "DELETE_VOICEQUEUE": "Delete Voice Queue",
-    "MOHSOUNDS": "Moh Sounds",
-    "STRATEGY": "Strategy",
-    "DESCRIPTION": "Description",
-    "INTERVAL": "Time Interval",
-    "ADD_VOICEQUEUE": "Add Voice Queue",
-    "NEW_QUEUECAMPAIGN": "New Queue Campaign",
-    "ACTIVE": "Active",
-    "METHOD": "Method",
-    "POWERLEVEL": "Power Level",
+    "NO_HOPPER_AVAILABLE": "Engir hlutir í boði",
+    "EDIT_HOPPER": "Breyta Hopper",
+    "DELETE_HOPPER": "Eyða Hopper",
+    "FINAL": "Loka",
+    "BLACKLIST": "Svarti listinn",
+    "NAME": "Nafn",
+    "VOICEQUEUES": "Tal biðraðir",
+    "SEARCH_FOR_ANYONE": "Leita",
+    "BACK": "Til baka",
+    "SELECTED": "Valið",
+    "SELECT_ALL": "Velja allt",
+    "SELECT_NONE": "Veldu ekkert",
+    "DELETE_VOICEDISPOSITION": "Eyða ráðstöfun raddar",
+    "EDIT_VOICEDISPOSITION": "Breyta raddráðstöfun",
+    "EDIT_VOICEQUEUE": "Breyta raddbiðröð",
+    "DELETE_VOICEQUEUE": "Eyða raddröð\n",
+    "MOHSOUNDS": "Moh Hljómur",
+    "STRATEGY": "Stefna",
+    "DESCRIPTION": "Lýsing",
+    "INTERVAL": "Tímabil",
+    "ADD_VOICEQUEUE": "Bæta við raddröð",
+    "NEW_QUEUECAMPAIGN": "Ný biðraða herferð",
+    "ACTIVE": "Virkur",
+    "METHOD": "Aðferð",
+    "POWERLEVEL": "Orku staða",
     "DROPRATE": "Drop Rate",
-    "AGENTBUSYFACTOR": "Agent Busy Factor",
-    "PREDICTIVEOPTIMIZATION": "Predictive Optimization",
-    "PREDICTIVEOPTIMIZATIONPERCENTAGE": "Predictive Optimization Percentage",
-    "PREDICTIVEINTERVAL": "Predictive Interval",
-    "ADD_QUEUECAMPAIGN": "Add Queue Campaign",
-    "CAMPAIGN": "Campaign",
-    "MAXCONCURRENTCALLS": "Max Concurrent Calls",
-    "CONCURRENTCALLS": "Max Concurrent Calls",
-    "ORIGINATE": "Originate",
-    "ORIGINATECALLERIDNAME": "Caller ID Name",
-    "ORIGINATECALLERIDNUMBER": "Caller ID Number",
-    "ORIGINATETIMEOUT": "Originate Timeout",
-    "QUEUEOPTIONS": "Queue Options",
-    "QUEUETIMEOUT": "Queue Timeout",
-    "CALLYSQUAREPROJECT": "Cally Square Project",
-    "RETRYANDFREQUENCY": "Retry Settings",
-    "GLOBAL": "Global",
-    "GLOBALMAXRETRY": "Max Retries",
-    "CONGESTION": "Congestion",
-    "CONGESTIONMAXRETRY": "Max Retries",
-    "CONGESTIONRETRYTIME": "Retry Time [min]",
-    "BUSYMAXRETRY": "Max Retries",
-    "BUSYRETRYTIME": "Retry Time [min]",
-    "NOANSWER": "No Answer",
-    "NOANSWERMAXRETRY": "Max Retries",
-    "NOANSWERRETRYTIME": "Retry Time [min]",
-    "NOSUCHNUMBER": "No such number",
-    "NOSUCHNUMBERMAXRETRY": "Max Retries",
-    "NOSUCHNUMBERRETRYTIME": "Retry Time [min]",
+    "AGENTBUSYFACTOR": "Þjónustufulltrúi upptekinn",
+    "PREDICTIVEOPTIMIZATION": "Bestun forsjár",
+    "PREDICTIVEOPTIMIZATIONPERCENTAGE": "% forsjár bestunar",
+    "PREDICTIVEINTERVAL": "Forsjár tímabil",
+    "ADD_QUEUECAMPAIGN": "Bæta við herferð í biðröð",
+    "CAMPAIGN": "Herferð",
+    "MAXCONCURRENTCALLS": "Hámarks fjöldi samtíma samtala",
+    "CONCURRENTCALLS": "Hámarksfjöldi samhliða símtala",
+    "ORIGINATE": "Upphafsaðili",
+    "ORIGINATECALLERIDNAME": "Nafn á úthringingu",
+    "ORIGINATECALLERIDNUMBER": "Númer á úthringingu",
+    "ORIGINATETIMEOUT": "Útruninn tími á upphafsaðila",
+    "QUEUEOPTIONS": "Biðraðar möguleikar",
+    "QUEUETIMEOUT": "Útrunninn tími á biðröð",
+    "CALLYSQUAREPROJECT": "Verkefni Cally Square ",
+    "RETRYANDFREQUENCY": "Stillingar á endurstillingum",
+    "GLOBAL": "Alþjóðlegt",
+    "GLOBALMAXRETRY": "Hámark endurtekninga",
+    "CONGESTION": "Þrengsli",
+    "CONGESTIONMAXRETRY": "Hámark endurtekninga",
+    "CONGESTIONRETRYTIME": "Tími endurtekninga [mín]",
+    "BUSYMAXRETRY": "Hámark endurtekninga",
+    "BUSYRETRYTIME": "Tími endurtekninga [mín]",
+    "NOANSWER": "Ekki svarað",
+    "NOANSWERMAXRETRY": "Hámarks fjöldi tilrauna",
+    "NOANSWERRETRYTIME": "Endurtekningar tími [mín]",
+    "NOSUCHNUMBER": "Ekkert slík númer",
+    "NOSUCHNUMBERMAXRETRY": "Hámarks fjöldi tilrauna",
+    "NOSUCHNUMBERRETRYTIME": "Endurtekningar tími [mín]",
     "DROP": "Drop",
-    "DROPMAXRETRY": "Max Retries",
-    "DROPRETRYTIME": "Retry Time [min]",
-    "ABANDONEDMAXRETRY": "Max Retries",
-    "ABANDONEDRETRYTIME": "Retry Time [min]",
-    "MACHINE": "Machine",
-    "MACHINEMAXRETRY": "Max Retries",
-    "MACHINERETRYTIME": "Retry Time [min]",
-    "AGENTREJECT": "Agent Reject",
-    "AGENTREJECTMAXRETRY": "Max Retries",
-    "AGENTREJECTRETRYTIME": "Retry Time [min]",
-    "CALLADDITIONALPHONEAFTERMIN": "Call additional phone after [min]",
-    "ADDITIONALPHONES": "Additional phones",
-    "QUEUE_PARAMS": "Queue Parameters",
-    "ORIGINATED": "Originated",
-    "MESSAGE": "Message",
+    "DROPMAXRETRY": "Hámark endurtekninga",
+    "DROPRETRYTIME": "Endurtekningartími [mín] ",
+    "ABANDONEDMAXRETRY": "Hámark endurtekna",
+    "ABANDONEDRETRYTIME": "Tími endurtekningar [mín]",
+    "MACHINE": "Tölvan",
+    "MACHINEMAXRETRY": "Hámarks fjöldi endurtekninga",
+    "MACHINERETRYTIME": "Endurtekna tími [min]",
+    "AGENTREJECT": "Höfnun þjónustufulltrúa",
+    "AGENTREJECTMAXRETRY": "Hámark endurtekningar",
+    "AGENTREJECTRETRYTIME": "Tími endurtekningar [mín]",
+    "CALLADDITIONALPHONEAFTERMIN": "Hringja í viðbótarsíma eftir [min] ",
+    "ADDITIONALPHONES": "Auka símar",
+    "QUEUE_PARAMS": "Breytur fyrir biðröð",
+    "ORIGINATED": "Upphafsaðili",
+    "MESSAGE": "Skilaboð",
     "DROPPED": "Dropped",
-    "CREATED_AT": "Created At",
+    "CREATED_AT": "Stofnað kl.",
     "LEGEND": {
-      "CUSTOM_APPLICATION": "(*) - Custom application."
+      "CUSTOM_APPLICATION": "(*) - Sér forrit"
     },
     "ERRORS": {
-      "AGENT_REQUIRED": "Mandatory field",
-      "CUTDIGIT_REQUIRED": "Mandatory field",
-      "CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED": "Mandatory field",
-      "RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "AGENTTIMEOUT_REQUIRED": "Mandatory field",
-      "INTERVAL_REQUIRED": "Mandatory field",
-      "EMAIL_REQUIRED": "Mandatory field",
-      "DIALRECALLMETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "DIALRECALLMETIMEOUT_REQUIRED": "Mandatory field",
-      "NAME_MUST_VALID_PATTERN": "Wrong format",
-      "PREFIX_MUST_VALID_PATTERN": "Wrong format",
-      "NAME_REQUIRED": "Mandatory field",
-      "TIMEOUT_REQUIRED": "Mandatory field",
-      "PHONENUMBER_REQUIRED": "Mandatory field",
-      "CONTEXT_REQUIRED": "Mandatory field",
-      "DESTINATIONPATTERN_REQUIRED": "Mandatory field",
-      "FULLNAME_REQUIRED": "Mandatory field",
-      "EMAIL_REQUUIRED": "Mandatory field",
-      "EMAIL_MUST_VALID": "Wrong format",
-      "MAILBOX_REQUIRED": "Mandatory Field",
-      "PASSWORD_REQUIRED": "Mandatory field",
+      "AGENT_REQUIRED": "Áskilinn reitur",
+      "CUTDIGIT_REQUIRED": "Áskilinn reitur",
+      "CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED": "Áskilinn reitur",
+      "RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "AGENTTIMEOUT_REQUIRED": "Áskilinn reitur",
+      "INTERVAL_REQUIRED": "Áskilinn reitur",
+      "EMAIL_REQUIRED": "Áskilinn reitur",
+      "DIALRECALLMETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "DIALRECALLMETIMEOUT_REQUIRED": "Áskilinn reitur",
+      "NAME_MUST_VALID_PATTERN": "Rangt snið",
+      "PREFIX_MUST_VALID_PATTERN": "Rangt snið",
+      "NAME_REQUIRED": "Áskilinn reitur",
+      "TIMEOUT_REQUIRED": "Áskilinn reitur",
+      "PHONENUMBER_REQUIRED": "Áskilinn reitur",
+      "CONTEXT_REQUIRED": "Áskilinn reitur",
+      "DESTINATIONPATTERN_REQUIRED": "Áskilinn reitur",
+      "FULLNAME_REQUIRED": "Áskilinn reitur",
+      "EMAIL_REQUUIRED": "Áskilinn reitur",
+      "EMAIL_MUST_VALID": "Rangt snið",
+      "MAILBOX_REQUIRED": "Áskilinn reitur",
+      "PASSWORD_REQUIRED": "Áskilinn reitur",
       "CONFIRM_NOT_MATCH": "The passwords don't match",
-      "TIMEZONE_REQUIRED": "Mandatory field",
-      "PREFIX_REQUIRED": "Mandatory field",
-      "OPTIONS_REQUIRED": "Mandatory field",
-      "AFTERCALLWORKDURATION_REQUIRED": "Mandatory field",
-      "TECHNOLOGY/RESOURCE_REQUIRED": "Mandatory field",
-      "PHONE_REQUIRED": "Mandatory field",
-      "VALUE_REQUIRED": "Mandatory field",
-      "EXTENSION_REQUIRED": "Mandatory field",
-      "PRIORITY_REQUIRED": "Mandatory field",
-      "GLOBALMAXRETRY_REQUIRED": "Mandatory field",
-      "CONGESTIONMAXRETRY_REQUIRED": "Mandatory field",
-      "CONGESTIONRETRYTIME_REQUIRED": "Mandatory field",
-      "BUSYMAXRETRY_REQUIRED": "Mandatory field",
-      "BUSYRETRYTIME_REQUIRED": "Mandatory field",
-      "NOANSWERMAXRETRY_REQUIRED": "Mandatory field",
-      "NOANSWERRETRYTIME_REQUIRED": "Mandatory field",
-      "QUEUETIMEOUT_REQUIRED": "Mandatory field",
-      "ORIGINATETIMEOUT_REQUIRED": "Mandatory field",
-      "GLOBALINTERVAL_REQUIRED": "Mandatory field",
-      "MAXCONCURRENTCALLS_REQUIRED": "Mandatory field",
-      "CONCURRENTCALLS_REQUIRED": "Mandatory field",
-      "NOSUCHNUMBERMAXRETRY_REQUIRED": "Mandatory field",
-      "NOSUCHNUMBERRETRYTIME_REQUIRED": "Mandatory field",
-      "DROPMAXRETRY_REQUIRED": "Mandatory field",
-      "DROPRETRYTIME_REQUIRED": "Mandatory field",
-      "ABANDONEDMAXRETRY_REQUIRED": "Mandatory field",
-      "ABANDONEDRETRYTIME_REQUIRED": "Mandatory field",
-      "MACHINEMAXRETRY_REQUIRED": "Mandatory field",
-      "MACHINERETRYTIME_REQUIRED": "Mandatory field",
-      "AGENTREJECTMAXRETRY_REQUIRED": "Mandatory field",
-      "AGENTREJECTRETRYTIME_REQUIRED": "Mandatory field",
-      "POWERLEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "PREDICTIVEINTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "POWERLEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "PREDICTIVEINTERVAL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Mandatory field",
-      "CALLYSQUAREPROJECT_REQUIRED": "Mandatory field",
-      "TRUNK_REQUIRED": "Mandatory field",
-      "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "Mandatory field",
-      "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Call add.phone after min. should be greater than or equal to"
+      "TIMEZONE_REQUIRED": "Áskilinn reitur",
+      "PREFIX_REQUIRED": "Áskilinn reitur",
+      "OPTIONS_REQUIRED": "Áskilinn reitur",
+      "AFTERCALLWORKDURATION_REQUIRED": "Áskilinn reitur",
+      "TECHNOLOGY/RESOURCE_REQUIRED": "Áskilinn reitur",
+      "PHONE_REQUIRED": "Áskilinn reitur",
+      "VALUE_REQUIRED": "Áskilinn reitur",
+      "EXTENSION_REQUIRED": "Áskilinn reitur",
+      "PRIORITY_REQUIRED": "Áskilinn reitur",
+      "GLOBALMAXRETRY_REQUIRED": "Áskilinn reitur",
+      "CONGESTIONMAXRETRY_REQUIRED": "Áskilinn reitur",
+      "CONGESTIONRETRYTIME_REQUIRED": "Áskilinn reitur",
+      "BUSYMAXRETRY_REQUIRED": "Áskilinn reitur",
+      "BUSYRETRYTIME_REQUIRED": "Áskilinn reitur",
+      "NOANSWERMAXRETRY_REQUIRED": "Áskilinn reitur",
+      "NOANSWERRETRYTIME_REQUIRED": "Áskilinn reitur",
+      "QUEUETIMEOUT_REQUIRED": "Áskilinn reitur",
+      "ORIGINATETIMEOUT_REQUIRED": "Áskilinn reitur",
+      "GLOBALINTERVAL_REQUIRED": "Áskilinn reitur",
+      "MAXCONCURRENTCALLS_REQUIRED": "Áskilinn reitur",
+      "CONCURRENTCALLS_REQUIRED": "Áskilinn reitur",
+      "NOSUCHNUMBERMAXRETRY_REQUIRED": "Áskilinn reitur",
+      "NOSUCHNUMBERRETRYTIME_REQUIRED": "Áskilinn reitur",
+      "DROPMAXRETRY_REQUIRED": "Áskilinn reitur",
+      "DROPRETRYTIME_REQUIRED": "Áskilinn reitur",
+      "ABANDONEDMAXRETRY_REQUIRED": "Áskilinn reitur",
+      "ABANDONEDRETRYTIME_REQUIRED": "Áskilinn reitur",
+      "MACHINEMAXRETRY_REQUIRED": "Áskilinn reitur",
+      "MACHINERETRYTIME_REQUIRED": "Áskilinn reitur",
+      "AGENTREJECTMAXRETRY_REQUIRED": "Áskilinn reitur",
+      "AGENTREJECTRETRYTIME_REQUIRED": "Áskilinn reitur",
+      "POWERLEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "PREDICTIVEINTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt ",
+      "GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "POWERLEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "PREDICTIVEINTERVAL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Áskilinn reitur",
+      "CALLYSQUAREPROJECT_REQUIRED": "Áskilinn reitur",
+      "TRUNK_REQUIRED": "Áskilinn reitur",
+      "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "Áskilinn reitur",
+      "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og"
     },
-    "GENERAL": "General",
-    "AGENTTIMEOUT": "Agent Timeout",
-    "MAXLENGTH": "Maximum Length",
-    "RETRY": "Retry",
-    "WRAPUPTIME": "Wrapup Time",
-    "WEIGHT": "Weight",
-    "JOINWHENEMPTY": "Join when empty",
-    "LEAVEWHENEMPTY": "Leave when empty",
+    "GENERAL": "Almennt",
+    "AGENTTIMEOUT": "Tími þjónustufulltrúa runninn út ",
+    "MAXLENGTH": "Hámarks lengd",
+    "RETRY": "Reyna aftur",
+    "WRAPUPTIME": "Tími eftir samtal",
+    "WEIGHT": "Þyngd",
+    "JOINWHENEMPTY": "Vertu með ef tómt",
+    "LEAVEWHENEMPTY": "Skildu eftir ef tómt",
     "HELP": {
-      "PREDICTIVEMAXTHRESHOLD": "If the percentage of agents available in the time window, compared to the agents available at the time of prediction, exceeds the configured maximum limit, the predictive recalculates the prediction. ",
-      "PREDICTIVEMINTHRESHOLD": "If the percentage of agents available in the time window, compared to the agents available at the time of prediction, exceeds the configured minimum limit, the predictive recalculates the prediction.",
-      "RANDOMLASTDIGITCALLERIDNUMBER": "If greater than 0, it generates randomly the corresponding last digits of the Outgoing Caller Id Number",
-      "TIMEOUT": "Number of seconds to ring agent in queue",
-      "CALLYSQUAREPROJECTPREVIEW": "Selecting an IVR project, the dialer will forward the call to the IVR when an agent answers (the IVR will be directed to the agent)",
-      "CALLYSQUAREPROJECTPREVIEW2": "Selecting an IVR project, the dialer will forward the call to the IVR when an client hangup or unreachable (the IVR will be directed to the agent)",
-      "RUNIFHANGUPAGENT": "Run Cally Square Project After even if the agent hangs up the call",
-      "CALLYSQUAREPROJECT2": "Selecting an IVR project, the dialer will forward the call to the IVR after the queue (if the queue ends by timeout)",
-      "DIALORDERBYSCHEDULEDAT": "Get contacts from hopper (descending or ascending).",
-      "DIALRECALLINQUEUE": "Reschedule call for agents in the Queue",
-      "DIALRECALLMETIMEOUT": "Time interval (in minutes) for Recall Me period of validity",
-      "PRIORITY": "Priority in the list",
-      "TIMEZONE": "Specify timezone",
-      "PREVIEW_RECALL_ME_REMINDER": "If enabled, the system will send a notification to the agent n minutes (according to time interval set in general settings) before generating the recall me",
-      "AMDMAXIMUMWORDLENGTH": "Maximum duration allowed of a single Voice utterance",
-      "AMDMINWORDLENGTH": "Minimum duration of a Voice to be considered a word",
-      "AMDSILENCETHRESHOLD": "If the average level of noise in a sample does not reach this value, from a scale of 0 to 32767, then we will consider it as silence",
-      "AMDTOTALANALYSISTIME": "Maximum time allowed for the algorithm to decide on whether the audio represents a HUMAN or a MACHINE",
-      "AMDAFTERGREETINGSILENCE": "Silence after detecting a greeting. If exceeded, then the result is detection as a HUMAN",
-      "AMDGREETING": "Maximum length of a greeting. If exceeded, then the result is detection as a MACHINE",
-      "AMDINITIALSILENCE": "Maximum silence duration before the greeting. If exceeded, then the result is detection as a MACHINE",
-      "AMDACTIVE": "Activate or disactivate answering machines detection attempts",
-      "AMDBETWEENWORDSSILENCE": "Minimum duration of silence after a word to consider the audio that follows as a new word",
-      "AMDMAXIMUMNUMBEROFWORDS": "Maximum number of words in the greeting. If REACHED, then the result is detection as a MACHINE",
-      "CALLYSQUAREPROJECT": "Selecting an IVR project, the dialer will forward the call to the IVR before the queue",
-      "PREFIX": "Telephone prefix",
-      "ACTIVE": "Active",
-      "AGENTTIMEOUT": "How long (in seconds) to ring an agent’s device",
-      "MAXLENGTH": "Maximum number of callers allowed to be waiting in a queue (0=unlimited)",
-      "RETRY": "How long (in seconds) to wait before calling the next agent in the queue when the agent timeout is expired",
-      "WRAPUPTIME": "How long (in seconds) to keep an agent unavailable in a queue after completing a call",
-      "WEIGHT": "Used to determine priority if the agents are associated with more than one queue",
-      "JOINWHENEMPTY": "If a caller is added to the queue, when no agents are available",
-      "LEAVEWHENEMPTY": "If a caller is expelled from the queue when no agents are available",
-      "ANNOUNCEFREQUENCY": "How often to announce the caller’s position and/or estimated hold time in the queue (0=disable)",
-      "MINANNOUNCEFREQUENCY": "Minimum announcement frequency (useful when the caller’s position changes frequently)",
-      "PERIODICANNOUNCEFREQUENCY": "Frequency of periodic announcements to the caller",
-      "ANNOUNCEPOSITIONLIMIT": "Used if you’ve defined announce-position as either 'limit' or 'more'",
-      "AFTERCALLWORKDURATION": "Pause length triggered by the After Call Work option",
-      "MEMBERDELAY": "Inserts a delay prior to the caller and agent in queue get connected",
-      "MUSICONHOLD": "Sets the music class to use for a particular queue",
-      "ANNOUNCETOAGENT": "Plays an announcement to the agent answering the call (e.g. to let him know which queue the caller is coming from)",
-      "RANDOMPERIODICANNOUNCE": "If yes, it plays the periodic announcements in random order",
-      "ANNOUNCEHOLDTIME": "Plays the estimated hold time along with the periodic announcements (Yes/No/Once)",
-      "ANNOUNCECALLERPOSITION": "Used to define if the caller’s position in the queue should be announced: No=never; Yes=always; Limit=only if it is within the limit defined by announce-position-limit; More= only if it is beyond the value defined by announce-position-limit",
-      "REPORTHOLDTIMEAGENT": "Enables reporting caller’s hold time to the agent in queue prior to connection",
-      "PERIODICANNOUNCE": "Set of periodic announcements to be played (in the order)",
-      "HOLDTIMEANNOUNCE": "Choose a Sound defined in Tools. Default=“Hold time”. Undefined=no announcement",
-      "YOUARENEXTANNOUNCE": "Choose a Sound defined in Tools. Default=“You are now first in line”. Undefined=no announcement",
-      "THEREAREANNOUNCE": "Choose a Sound defined in Tools. Default=“There are”. Undefined=no announcement",
-      "WAITINGCALLSANNOUNCE": "Choose a Sound defined in Tools. Default=“calls waiting”. Undefined=no announcement",
-      "ESTIMATEDHOLDTIMEANNOUNCE": "Choose a Sound defined in Tools. Default=“The current estimated hold time is”. Undefined=no announcement",
-      "MINUTESANNOUNCE": "Choose a Sound defined in Tools. Default=“minutes”. Undefined=no announcement",
-      "MINUTEANNOUNCE": "Choose a Sound defined in Tools. Default=“minute”. Undefined=no announcement",
-      "SECONDSANNOUNCE": "Choose a Sound defined in Tools. Default=“seconds”. Undefined=no announcement",
-      "THANKYOUANNOUNCE": "Choose a Sound defined in Tools. Default=“Thank you for your patience”. Undefined=no announcement",
-      "AFTERCALLWORK": "If enabled, the agent will be set on Pause after completing a call",
-      "AUTOPAUSE": "Enables/disables the automatic pause of agents who fail to answer a call. If enabled, it causes the agent to be paused in all queues he belongs to",
-      "RINGINUSE": "To avoid/allow sending calls to members whose status is In Use",
-      "TIMEOUTRESTART": "If yes, this resets the timeout for an agent to answer when either a BUSY or CONGESTION status is received from the channel",
-      "MONITORFORMAT": "Specifies the file format to use when recording. If monitor-format is inactive, calls will not be recorded",
-      "CONTEXT": "Allows a caller to exit the queue by pressing a single DTMF digit. If a context is specified and the caller enters a number, that digit will attempt to be matched in the context specified, and dialplan execution will continue there",
-      "SETINTERFACEVARIABLES": "If set to yes, just prior to the caller being connected with a queue agent some variables will be set (for more information see wiki docs:<a target=\"_blank\"href=\"https://wiki.xcallymotion.com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\">click here</a>)",
-      "SETQUEUEVARIABLES": "If set to yes, just prior to the caller being connected with a queue agent and leaving the queue, some variables will be set (for more information, see wiki docs:<a target=\"_blank\"href=\"https://wiki.xcallymotion.com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\">click here</a>)",
-      "SETQUEUEENTRYVARIABLES": "If set to yes, just prior to the caller being connected with a queue agent some variables will be set (for more information, see wiki docs:<a target=\"_blank\"href=\"https://wiki.xcallymotion.com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\">click here</a>)",
-      "RECORDING": "Enable call recording",
-      "VOICEMAIL_CONTEXT": "The context of the relative extension",
-      "METHOD": "Outbound dialer method",
-      "POWERLEVEL": "Number of contacts to call for any available agent",
-      "PREDICTIVEOPTIMIZATION": "A factor to optimize in the predictive algorithm",
-      "PREDICTIVEOPTIMIZATIONPERCENTAGE": "Percentage based on the selected predictive optimization factor",
-      "PREDICTIVEINTERVAL": "Time interval (in minutes) considered by the predictive algorithm to calculate the amount of calls to generate to optimize the result",
-      "MAXCONCURRENTCALLS": "Maximum number of concurrent calls that will be originated by the outbound dialer for this campaign (0=unlimited)",
-      "CONCURRENTCALLS": "Maximum number of concurrent calls that will be originated by the outbound dialer for this campaign",
-      "ORIGINATECALLERIDNAME": "Outgoing Caller Id Name",
-      "ORIGINATECALLERIDNUMBER": "Outgoing Caller Id Number",
-      "ORIGINATETIMEOUT": "Time (in seconds) for the outbound call to establish a connection, otherwise the status is set to No Answer ",
-      "QUEUETIMEOUT": "Time (in seconds) a call will wait in the queue before it is dropped (Min 1 and Max 999)",
-      "GLOBALMAXRETRY": "Maximum number of times a contact is called before considering it closed",
-      "CONGESTIONMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for congestion",
-      "CONGESTIONRETRYTIME": "Time in minutes before trying to call again a failed contact due to congestion",
-      "BUSYMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for busy",
-      "BUSYRETRYTIME": "Time in minutes before trying to call again a failed contact due to busy",
-      "NOANSWERMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for no answer",
-      "NOANSWERRETRYTIME": "Time in minutes before trying to call again a failed contact due to no answer",
-      "NOSUCHNUMBERMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for no such number",
-      "NOSUCHNUMBERRETRYTIME": "Time in minutes before trying to call again a failed contact due to no such number",
-      "DROPMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for drop",
-      "DROPRETRYTIME": "Time in minutes before trying to call again a failed contact due to drop",
-      "ABANDONEDMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for abandon",
-      "ABANDONEDRETRYTIME": "Time in minutes before trying to call again a failed contact due to abandon",
-      "MACHINEMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for machine",
-      "MACHINERETRYTIME": "Time in minutes before trying to call again a failed contact due to machine",
-      "AGENTREJECTMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for agent reject",
-      "AGENTREJECTRETRYTIME": "Time in minutes before trying to call again a failed contact due to agent reject",
-      "CALLADDITIONALPHONEAFTERMIN": "",
-      "GLOBALINTERVAL": "Global time interval during which the dialer is allowed to call contacts. We decline responsibility: pay attention when you modify this field, because you may fail to comply with the national Autodialer Laws and Regulations",
-      "NAME": "Only numbers, letters and specific characters (._) are supported",
-      "MANDATORYDISPOSITIONPAUSEID": "Pause status to set during mandatory disposition",
-      "PREVIEW_AUTO_RECALL_ME": "If enabled, the system will automatically generate the Recall Me calls; otherwise, the agent must do it manually"
+      "PREDICTIVEMAXTHRESHOLD": "Ef hlutfall fulltrúa sem eru tiltækir í tímaglugganum, samanborið við fjölda fulltrúa sem eru tiltækir þegar spáin var gerð, fer yfir stillt hámarksmörk, endurreikur spáin spána ",
+      "PREDICTIVEMINTHRESHOLD": "\nEf hlutfall fulltrúa sem eru tiltækir í tímaglugganum, samanborið við fulltrúa sem eru tiltækir á þeim tíma sem spáin er gerð, fer yfir stillt lágmarksmörk, endurreikur spáin spána.",
+      "RANDOMLASTDIGITCALLERIDNUMBER": "Ef það er stærra en 0 myndar það af handahófi samsvarandi síðustu tölustaöfum í Caller ID númeri",
+      "TIMEOUT": "Fjöldi sekúndna til að hringja í fulltrúa í biðröð",
+      "CALLYSQUAREPROJECTPREVIEW": "Með því að velja IVR verkefnið mun forritið áframsenda símtalið til IVR þegar fulltrúi svarar (IVR verður beint til fulltrúans)",
+      "CALLYSQUAREPROJECTPREVIEW2": "Með því að velja IVR verkefnið mun forritið áframsenda símtalið til IVR þegar viðskiptavinurinn leggur á eða ekki er hægt að ná í hann (IVR verður beint til fulltrúans)",
+      "RUNIFHANGUPAGENT": "Keyra Cally Square verkefnið aftur jafnvel þótt fulltrúi leggi á",
+      "CALLYSQUAREPROJECT2": "Með því að velja IVR verkefnið mun forritið áframsenda símtalið til IVR eftir biðröðina (ef biðröðinni lýkur með tímamörkum)",
+      "DIALORDERBYSCHEDULEDAT": "Fáðu tengilið frá hopper (lækkandi eða hækkandi).",
+      "DIALRECALLINQUEUE": "Endurskipuleggja símtal á fulltrúa í röðinni",
+      "DIALRECALLMETIMEOUT": "Tímabil (í mínutum) áður en valið er að hringja aftur",
+      "PRIORITY": "Forgangur á listanum",
+      "TIMEZONE": "Tilgreindu tímabelti",
+      "PREVIEW_RECALL_ME_REMINDER": "Ef þetta er virkjað mun kerfið senda tilkynningu til fulltrúa n mínútum (samkvæmt tímabili sem er stillt í almennum stillingum) áður en búið er til endurkall",
+      "AMDMAXIMUMWORDLENGTH": "Leyfileg hámarkslengd stakra tilsvara",
+      "AMDMINWORDLENGTH": "Lágmarkstími raddar sem á að telja sem orð",
+      "AMDSILENCETHRESHOLD": "Ef meðaltalshávaði í sýni nær ekki þessu gildi, frá kvarðanum 0 til 32767, þá munum við líta á það sem hljóðlátt.",
+      "AMDTOTALANALYSISTIME": "Hámarkstími sem reikniritið má nota til að ákveða hvort hljóðið táknar MANN eða VÉL",
+      "AMDAFTERGREETINGSILENCE": "Þögn eftir að hafa greint kveðju. Ef farið er yfir mörkin er niðurstaðan greind sem sem MAÐUR",
+      "AMDGREETING": "Hámarkslengd á kveðju. Ef farið er yfir mörkin, þá er niðurstaðan greind sem VÉL",
+      "AMDINITIALSILENCE": "Hámarkslengd þagnar á undan kveðju. Ef farið er yfir mörkin, þá er niðurstaðan greind sem VÉL",
+      "AMDACTIVE": "Virkjaðu eða slökktu á skynjunartilraunum ef um símsvara er að ræða",
+      "AMDBETWEENWORDSSILENCE": "Lágmarkstími þagnar á eftir orði til að greina hljóð sem kemur á eftir sem nýtt orð",
+      "AMDMAXIMUMNUMBEROFWORDS": "Hámarksfjöldi orða í kveðjunni. Ef því er NÁÐ, er niðustaðan greind sem VÉL",
+      "CALLYSQUAREPROJECT": "Með því að velja IVR verkefni mun forritið áframsenda símtalið til IVR fyrir biðröðina",
+      "PREFIX": "Forskeyti númers",
+      "ACTIVE": "Virkur",
+      "AGENTTIMEOUT": "Hversu lengi (í sekúndum) á að hringja í fulltrúa",
+      "MAXLENGTH": "Hámarksfjöldi þeirra sem hringja út og meiga vera í biðröð (0=ótakmarkað)",
+      "RETRY": "Hversu lengi (í sekúndum) á að bíða áður en hringt er í næsta lausa fulltrúa í biðröðinni þegar tíminn er útrunninn",
+      "WRAPUPTIME": "Notað til að ákvarða forgang ef umboðsmenn eru tengdir við fleiri en eina biðröð",
+      "WEIGHT": "Notað til að ákvarða forgang ef fulltrúar eru tengdir við fleiri en eina biðröð",
+      "JOINWHENEMPTY": "Ef hringt er í biðröðina, og engir fulltrúar eru tiltækir",
+      "LEAVEWHENEMPTY": "Ef sá sem hringir er vísað úr biðröðinni vegna þess að einginn fulltrúi er til að svara",
+      "ANNOUNCEFREQUENCY": "Hversu oft á að tilkynna staðsetningu þess sem hringir og/eða áætlaðan biðtíma í biðröðinni (0=slökkva)",
+      "MINANNOUNCEFREQUENCY": "Lágmarks tíðni tilkynninga (gagnlegt þegar staða þess sem hringir breytist oft)",
+      "PERIODICANNOUNCEFREQUENCY": "Tíðni reglubundinna tilkynninga til þess sem hringir",
+      "ANNOUNCEPOSITIONLIMIT": "Notað ef þú hefur skilgreint tilkynningarstöðu sem annað hvort 'takmark' eða 'meira'",
+      "AFTERCALLWORKDURATION": " Lengd biðtíma sem virkjast af valkostunum eftir símtal",
+      "MEMBERDELAY": "Settu inn töf áður en sá sem hringir og fulltrúi í biðröð tengjast",
+      "MUSICONHOLD": "Stillir tónlistar tegund til að nota fyrir tiltekna biðröð",
+      "ANNOUNCETOAGENT": "Spilar tilkynningu til þjónustufulltrúa sem svarar símtalinu (t.d. til að láta hann vita úr hvaða röð sá sem hringir kemur)",
+      "RANDOMPERIODICANNOUNCE": "Ef já, spilar það reglubundnar tilkynningar í handahófskenndri röð",
+      "ANNOUNCEHOLDTIME": "Spilar áætlaðan biðtíma ásamt reglubundnum tilkynningum (Já/Nei/Einu sinni)",
+      "ANNOUNCECALLERPOSITION": "Notað til að skilgreina hvort tilkynna eigi um stöðu þess sem hringir í biðröðinni: Nei=aldrei; Já=alltaf; Limit=aðeins ef það er innan þeirra marka sem skilgreint er af tilkynna-stöðu-mörk; Meira= aðeins ef það er umfram gildið sem skilgreint er af tilkynna-stöðu-mörk ",
+      "REPORTHOLDTIMEAGENT": "Gerir kleift að skrá biðtíma þjónustufulltrúa fyir tengingu",
+      "PERIODICANNOUNCE": "Textar af reglubundnum tilkynningum sem á að spila (í röð)",
+      "HOLDTIMEANNOUNCE": "Veldu hljóð sem er skilgreint í Tools. Sjálfgefið = \"Biðtími\". Óskilgreint=engin tilkynning",
+      "YOUARENEXTANNOUNCE": "Veldu hljóð sem er skilgreint í Tools. Default=“Þú ert nú fyrstur í röðinni”. Óskilgreint=engin tilkynning",
+      "THEREAREANNOUNCE": "Veldu hljóð sem er skilgreint í Tools. Default = \"Það eru til\". Óskilgreint=engin tilkynning",
+      "WAITINGCALLSANNOUNCE": "Veldu hljóð sem er skilgreint í Tools. Default = \"símtöl í bið\". Óskilgreint=engin tilkynning",
+      "ESTIMATEDHOLDTIMEANNOUNCE": "Veldu hljóð sem er skilgreint í Tools. Sjálfgefið=“Núverandi áætlaður biðtími er”. Óskilgreint=engin tilkynning",
+      "MINUTESANNOUNCE": "Veldu hljóð sem er skilgreint í Tools. Sjálfgefið = \"mínúta\". Óskilgreint=engin tilkynning",
+      "MINUTEANNOUNCE": "Veldu hljóð sem er skilgreint í Tools. Sjálfgefið = \"mínúta\". Óskilgreint=engin tilkynning",
+      "SECONDSANNOUNCE": "Veldu hljóð sem er skilgreint í Tools. Sjálfgefið = \"sekúndur\". Óskilgreint=engin tilkynning",
+      "THANKYOUANNOUNCE": "Veldu hljóð sem er skilgreint í Tools. Default=“Þakka þér fyrir þolinmæðina”. Óskilgreint=engin tilkynning",
+      "AFTERCALLWORK": "Ef það er virkt verður þjónustufulltrúinn stilltur á hlé eftir að símtali er lokið",
+      "AUTOPAUSE": "Virkjar/Óvirkjar á sjálfvirkt hlé á þjónustufulltrúum sem svara ekki símtali. Ef það er virkt veldur það því að þjónustufulltrúinn er í biðröð í öllum biðröðum sem hann tilheyrir",
+      "RINGINUSE": "Til að forðast/leyfa símtöl til meðlima biðraðar sem eru uppteknir",
+      "TIMEOUTRESTART": "Ef já, þá endurstillir þetta tímamörk fyrir fulltrúa til að svara þegar annaðhvort ANNAРeða Congestion staða er móttekin frá samtalinu",
+      "MONITORFORMAT": "Tilgreinir skráarsniðið sem á að nota við upptöku. Ef skrárnið er óskilgreint verða símtöl ekki tekin upp",
+      "CONTEXT": "Leyfir hringjara að fara úr biðröðinni með því að ýta á einn DTMF tón/tölustaf. Ef samhengi er tilgreint og sá sem hringir slær inn númer mun sá tölustafur reyna að passa saman í því samhengi sem tilgreint er og keyrsla hringingaráætlunar heldur áfram þar ",
+      "SETINTERFACEVARIABLES": "Ef stillt er á já, rétt áður en viðmælandi er tengdur við biðröð fulltrúa verða nokkrar breytur stilltar (fyrir frekari upplýsingar sjá wiki skjöl:<a target=\"_blank\"href=\"https://wiki.xcallymotion. com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\">smelltu hér</a>)",
+      "SETQUEUEVARIABLES": "Ef stillt er á já, rétt áður en sá sem hringir er tengdur við biðröð og yfirgefur biðröðina, verða nokkrar breytur stilltar (fyrir frekari upplýsingar, sjá wiki skjöl:<a target=\"_blank\"href=\"https: //wiki.xcallymotion.com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\">smelltu hér</a>)ue+Campaigns#QueueCampaigns-Advanced\">click here</a>)",
+      "SETQUEUEENTRYVARIABLES": "Ef stillt er á já, rétt áður en viðmælandi er tengdur við biðröð, verða nokkrar breytur stilltar (fyrir frekari upplýsingar, sjá wiki skjöl:<a target=\"_blank\"href=\"https://wiki.xcallymotion .com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\">smelltu hér</a>)",
+      "RECORDING": "Virkja upptöku samtala",
+      "VOICEMAIL_CONTEXT": "Samhengi hlutfallslegrar framlengingar ",
+      "METHOD": "Aðferð úthringivers",
+      "POWERLEVEL": "Fjöldi tengiliða til að hringja í fyrir alla tiltæka fulltrúa",
+      "PREDICTIVEOPTIMIZATION": "Stuðull til að fínstilla í forspáralgrímið",
+      "PREDICTIVEOPTIMIZATIONPERCENTAGE": "Hlutfall byggt á völdum forspárhagræðingarstuðli ",
+      "PREDICTIVEINTERVAL": "Tímabil (í mínútum) talið fyrir forspáralgrími til að reikna út fjölda símtala sem á að búa til til að hámarka niðurstöðuna",
+      "MAXCONCURRENTCALLS": "Hámarksfjöldi samtíma símtala sem forritið leyfir við þessa herferðð (0=ótakmarkað)",
+      "CONCURRENTCALLS": "Hámarksfjöldi samtíma símtala sem hringir út fyrir þessa herferð mun koma frá",
+      "ORIGINATECALLERIDNAME": "Auðkenni út hringingar \"Caller Id Nafn\"",
+      "ORIGINATECALLERIDNUMBER": "Auðkenni út hringinar \"Outgoing Caller Id númer\"",
+      "ORIGINATETIMEOUT": "Tími (í sekúndum) fyrir úthringinguna til að tengjast, annars er staðan stillt á ekki svarað ",
+      "QUEUETIMEOUT": "Tími (í sekúndum) sem símtal bíður í biðröð áður en því er sleppt (Min 1 og Max 999)",
+      "GLOBALMAXRETRY": "Hámarksfjöldi skipta sem hringt er í tengilið áður en hann er talinn lokaðan",
+      "CONGESTIONMAXRETRY": "Hámarksfjöldi sem hringt er í tengilið áður en forrið telur hann lokaðan, eða þegar símtalið mistókst vegna þess að ekki tókst að ná sambandi",
+      "CONGESTIONRETRYTIME": "Tími í mínútum áður en reynt er að hringja aftur í tengilið sem ekki náðist í",
+      "BUSYMAXRETRY": "Hámarksfjöldi skipta sem hringt er í tengilið áður en samskiptum við hann sé álitið lokið, þegar símtalið mistókst vegna anna",
+      "BUSYRETRYTIME": "Tími í mínútum áður en reynt er að hringja aftur, tengiliður var upptekin",
+      "NOANSWERMAXRETRY": "Hámarksfjöldi skipta sem hringt er í tengilið áður en hann er talinn lokaður, þegar ekki tókst að ná sambandi",
+      "NOANSWERRETRYTIME": "Tími í mínútum áður en reynt er að hringja aftur í tengilið sem ekki svaraði",
+      "NOSUCHNUMBERMAXRETRY": "Hámarksfjöldi skipta sem hringt er í tengilið áður en hann er talinn lokaður, þegar ekki er svarað",
+      "NOSUCHNUMBERRETRYTIME": "Tími í mínútum áður en reynt er að hringja aftur í tengilið, því númerið svarar ekki",
+      "DROPMAXRETRY": "Hámarksfjöldi skipta sem hringt er í tengilið áður en talið er að hann sé lokaður, þegar símtalið mistókst",
+      "DROPRETRYTIME": "Tími í mínútum áður en reynt er að hringja aftur í tengilið ef símtalið mistókst",
+      "ABANDONEDMAXRETRY": "Hámarksfjöldi skipta sem hringt er í tengilið áður en hann telur hann lokaðan, þegar það mistekst að hætta við símtal.",
+      "ABANDONEDRETRYTIME": "Tími í mínútum áður en reynt er að hringja afur vegna þess að ekki var svarað áður",
+      "MACHINEMAXRETRY": "Hámarksfjöldi skipta sem hringt er í tengilið áður en hann er talin lokaður ef samtalið mistekst",
+      "MACHINERETRYTIME": "Tími í mínútum áður en reynt er að hringja aftur í tengilið sem ekki svaraði",
+      "AGENTREJECTMAXRETRY": "Hámarksfjöldi skipta sem hringt er í tengilið áður en samskiptum er álitið lokið, þegar símtal mistókst vegna höfnunar þjónustufulltrúa",
+      "AGENTREJECTRETRYTIME": "Tími í mínútum áður en reynt er að hringja aftur í tengilið þar sem samskipti rofnuðu vegna höfnun þjónustufulltrúa",
+      "CALLADDITIONALPHONEAFTERMIN": "Settu inn biðtíma",
+      "GLOBALINTERVAL": "Tímabil kl. frá til, þar sem forritið hefur leyfi til að hringja í tengiliði. Við tökum ekki ábyrgð á því: vinsamlega veittu því athygli þegar þú breytir þessum reit, vegna þess að þú gætir farið út fyrir leyfilegan tíma samkvæmt landslögum og reglugerðum um sjálfvirka hringingu.",
+      "NAME": "Aðeins tölur, stafir og sérták (._) eru studdir",
+      "MANDATORYDISPOSITIONPAUSEID": "Tími á nauðsynlegu hléi á milli úthringinga",
+      "PREVIEW_AUTO_RECALL_ME": "Ef þetta er virkjað mun kerfið sjálfkrafa búa sjálfvirkt uppkall; annars verður fulltrúinn að gera það handvirkt"
     },
-    "MUSICONHOLD": "Music On Hold",
-    "ANNOUNCETOAGENT": "Announce To Agent",
-    "ANNOUNCEMENTS": "Announcements",
-    "ADVANCEDPREVIEW": "Advanced",
-    "ADVANCED": "Advanced",
-    "ADVANCE": "Advanced",
-    "ANNOUNCEFREQUENCY": "Announce Frequency",
-    "MINANNOUNCEFREQUENCY": "Minimum Announce Frequency",
-    "PERIODICANNOUNCEFREQUENCY": "Periodic Announce Frequency",
-    "RANDOMPERIODICANNOUNCE": "Random Periodic Announce",
-    "ANNOUNCEHOLDTIME": "Announce Hold Time",
-    "ANNOUNCECALLERPOSITION": "Announce Caller Position",
-    "ANNOUNCEPOSITIONLIMIT": "Announce Position Limit",
-    "REPORTHOLDTIMEAGENT": "Report Agent Hold Time",
-    "PERIODICANNOUNCE": "Periodic Announce",
-    "HOLDTIMEANNOUNCE": "Hold Time Announce",
-    "YOUARENEXTANNOUNCE": "'You are next' Announce",
-    "THEREAREANNOUNCE": "'There are' Announce",
-    "WAITINGCALLSANNOUNCE": "Waiting Calls Announce",
-    "ESTIMATEDHOLDTIMEANNOUNCE": "Estimated Hold Time Announce",
-    "MINUTESANNOUNCE": "Minutes Announce",
-    "MINUTEANNOUNCE": "Minute Announce",
-    "SECONDSANNOUNCE": "Seconds Announce",
-    "THANKYOUANNOUNCE": "'Thank You' Announce",
-    "AUTOPAUSE": "Auto Pause",
-    "AFTERCALLWORK": "After Call Work",
-    "AFTERCALLWORKDURATION": "After Call Work Duration",
-    "RINGINUSE": "Ring In Use",
-    "MEMBERDELAY": "Member Delay",
-    "TIMEOUTRESTART": "Timeout Restart",
-    "MONITORFORMAT": "Recording Format",
-    "SETINTERFACEVARIABLES": "Set Interface Variables",
-    "SETQUEUEVARIABLES": "Set Queue Variables",
-    "SETQUEUEENTRYVARIABLES": "Set Queue Entry Variables",
-    "CONTEXT": "Context",
-    "SAVE": "Save",
-    "SETTINGS": "Settings",
-    "INBOUNDROUTES": "Inbound Routes",
-    "PHONENUMBER": "Phone Number",
-    "ADD_INBOUNDROUTE": "Add Inbound Route",
-    "EDIT_INBOUNDROUTE": "Edit Inbound Route",
-    "DELETE_INBOUNDROUTE": "Delete Inbound Route",
-    "ACTIONS": "Actions",
-    "OUTBOUNDROUTES": "Outbound Routes",
-    "DESTINATIONPATTERN": "Destination Pattern",
-    "ADD_OUTBOUNDROUTE": "Add Outbound Route",
-    "EDIT_OUTBOUNDROUTE": "Edit Outbound Route",
-    "DELETE_OUTBOUNDROUTE": "Delete Outbound Route",
-    "CUTDIGITS": "Cut Digits",
-    "RECORDING": "Recording",
-    "RECORDINGFORMAT": "Recording format",
-    "INTERNALROUTES": "Internal Routes",
-    "ADD_INTERNALROUTE": "Add Internal Route",
-    "EDIT_INTERNALROUTE": "Edit Internal Route",
-    "DELETE_INTERNALROUTE": "Delete Internal Route",
-    "CONTEXTS": "Contexts",
-    "ADD_CONTEXT": "Add Context",
-    "EDIT_CONTEXT": "Edit Context",
-    "DELETE_CONTEXT": "Delete Context",
-    "VOICEMAILS": "Voicemails",
-    "ADD_VOICEMAIL": "Add Voicemail",
-    "EDIT_VOICEMAIL": "Edit Voicemail",
-    "DELETE_VOICEMAIL": "Delete Voicemail",
-    "FULLNAME": "Full Name",
-    "EMAIL": "Email",
-    "MAILBOX": "Mailbox",
-    "PASSWORD": "Password",
-    "CONFIRM_PASSWORD": "Confirm Password",
-    "TIMEZONE": "Timezone",
-    "ATTACH": "Attach",
-    "ENVELOPE": "Envelope",
-    "DELETE": "Delete",
-    "EMAILBODY": "Email Body",
-    "EMAILSUBJECT": "Email Subject",
-    "MAXSECONDS": "Max Seconds",
-    "MAXMESSAGES": "Max Messages",
-    "MESSAGES": "Messages",
-    "SORT": "Sort",
-    "ADD_MUSICONHOLD": "Add Music On Hold",
-    "MUSICONHOLDS": "Music On Hold",
-    "EDIT_MUSICONHOLD": "Edit Music On Hold",
-    "DELETE_MUSICONHOLD": "Delete Music On Hold",
-    "DIRECTORY": "Directory",
-    "AUDIOFILES": "Audio Files",
-    "RECORDINGS": "Recordings",
+    "MUSICONHOLD": "Tónlist á bið",
+    "ANNOUNCETOAGENT": "Tilkynna til þjónustufulltrúa",
+    "ANNOUNCEMENTS": "Tilkynningar",
+    "ADVANCEDPREVIEW": "Ítarlegt",
+    "ADVANCED": "Ítarlegt",
+    "ADVANCE": "Ítarlegt",
+    "ANNOUNCEFREQUENCY": "Tilkynna tíðni",
+    "MINANNOUNCEFREQUENCY": "Lámarkstíðni skilaboða",
+    "PERIODICANNOUNCEFREQUENCY": "Tíðni endurtekningar á tilkynningum",
+    "RANDOMPERIODICANNOUNCE": "Handahófs reglubundin tilkynning",
+    "ANNOUNCEHOLDTIME": "Tilkynna biðtíma",
+    "ANNOUNCECALLERPOSITION": "Tilkynna um stöðu þess sem hringir",
+    "ANNOUNCEPOSITIONLIMIT": "Tilkynna afmarkaða stöðu",
+    "REPORTHOLDTIMEAGENT": "Skýrsla um hlé tíma fulltrúa",
+    "PERIODICANNOUNCE": "Endurteknar tilkynningar",
+    "HOLDTIMEANNOUNCE": "Biðtíma tilkynning",
+    "YOUARENEXTANNOUNCE": "'Þú ert næstur' skilaboð",
+    "THEREAREANNOUNCE": "'Það eru' Tilkynning",
+    "WAITINGCALLSANNOUNCE": "Bið skilaboð",
+    "ESTIMATEDHOLDTIMEANNOUNCE": "Áætlaður biðtími tilkynntur",
+    "MINUTESANNOUNCE": "Tími tilkynningar",
+    "MINUTEANNOUNCE": "Tími tilkynningar",
+    "SECONDSANNOUNCE": "Tilkynningar sekúndur",
+    "THANKYOUANNOUNCE": "'TTakk fyrir' Tilkynning",
+    "AUTOPAUSE": "Sjálfvirk pása",
+    "AFTERCALLWORK": "Seinna símtal - After Call Work",
+    "AFTERCALLWORKDURATION": "Lengd eftir vinnu símtal",
+    "RINGINUSE": "Hringingar í notkun",
+    "MEMBERDELAY": "Notanda seinkun",
+    "TIMEOUTRESTART": "Endursetning á útrunnum tíma",
+    "MONITORFORMAT": "Snið á upptöku",
+    "SETINTERFACEVARIABLES": "Stillingar á viðmótsbreytum",
+    "SETQUEUEVARIABLES": "Stilla biðraða breytum",
+    "SETQUEUEENTRYVARIABLES": "Stillingar á biðraðar grunn breytum",
+    "CONTEXT": "Samhengi",
+    "SAVE": "Geyma",
+    "SETTINGS": "Stillingar",
+    "INBOUNDROUTES": "Innkomandi reglur",
+    "PHONENUMBER": "Síma númer",
+    "ADD_INBOUNDROUTE": "Bæta við innhringi reglu",
+    "EDIT_INBOUNDROUTE": "Breyta innleið ",
+    "DELETE_INBOUNDROUTE": "Eyða innleið",
+    "ACTIONS": "Aðgerðir ",
+    "OUTBOUNDROUTES": "Úthringi reglur",
+    "DESTINATIONPATTERN": "Mynstur áfangastaðar ",
+    "ADD_OUTBOUNDROUTE": "Bæta við útleið",
+    "EDIT_OUTBOUNDROUTE": "Breyta útleið",
+    "DELETE_OUTBOUNDROUTE": "Eyða útleið",
+    "CUTDIGITS": "Klipptu tölustafi\n",
+    "RECORDING": "Upptaka",
+    "RECORDINGFORMAT": "Snið á upptöku",
+    "INTERNALROUTES": "Innanhúss routing",
+    "ADD_INTERNALROUTE": "Bæta við innanahús reglu",
+    "EDIT_INTERNALROUTE": "Breyta innri leið",
+    "DELETE_INTERNALROUTE": "Eyða innri leið",
+    "CONTEXTS": "Samhengi",
+    "ADD_CONTEXT": "Bæta við texta",
+    "EDIT_CONTEXT": "Breyta samhengi",
+    "DELETE_CONTEXT": "Eyða samhengi\n",
+    "VOICEMAILS": "Talskilaboð",
+    "ADD_VOICEMAIL": "Bæta við talhólf",
+    "EDIT_VOICEMAIL": "Breyta talhólfsskilaboðum",
+    "DELETE_VOICEMAIL": "Eyða talhólfsskilaboðum\n",
+    "FULLNAME": "Fullt nafn",
+    "EMAIL": "Tölvupóstur",
+    "MAILBOX": "Pósthólf",
+    "PASSWORD": "Lykilorð",
+    "CONFIRM_PASSWORD": "Staðfesta lykilorð",
+    "TIMEZONE": "Tímabelti",
+    "ATTACH": "Hengdu við",
+    "ENVELOPE": "Umslag",
+    "DELETE": "Eyða",
+    "EMAILBODY": "Meginmál tölvupósts",
+    "EMAILSUBJECT": "Efni tölvupósts\n",
+    "MAXSECONDS": "Hámark í sekúndum",
+    "MAXMESSAGES": "Hámarks fjöldi skilaboða",
+    "MESSAGES": "Skilaboð",
+    "SORT": "Raða",
+    "ADD_MUSICONHOLD": "Bæta við tónlist á bið",
+    "MUSICONHOLDS": "Tónlist á bið",
+    "EDIT_MUSICONHOLD": "Breyta tónlist í bið",
+    "DELETE_MUSICONHOLD": "Eyða tónlist á bið ",
+    "DIRECTORY": "Skrá",
+    "AUDIOFILES": "Hljóðskrár",
+    "RECORDINGS": "Upptökur",
     "CHANSPY": "ChanSpy",
-    "PREFIX": "Prefix",
-    "OPTIONS": "Options",
+    "PREFIX": "Forskeyti",
+    "OPTIONS": "Valmöguleikar",
     "AUTH": "Auth",
-    "ADD_CHANSPY": "Add ChanSpy",
-    "EDIT_CHANSPY": "Edit ChanSpy",
-    "DELETE_CHANSPY": "Delete ChanSpy",
-    "AGENTS": "Agents",
-    "TELEPHONES": "Telephones",
-    "QUEUES": "Queues",
-    "QUEUE_CALLS": "Queue Calls",
-    "QUEUE_PARAMETERS": "Queue Parameters",
-    "ABANDONED_CALLS": "Abandoned Calls",
-    "OUTBOUND_CALLS": "Outbound Calls",
+    "ADD_CHANSPY": "Bæta við ChanSpy",
+    "EDIT_CHANSPY": "Breyta ChanSpy",
+    "DELETE_CHANSPY": "Eyða ChanSpy",
+    "AGENTS": "Þjónustufulltrúar",
+    "TELEPHONES": "Símar",
+    "QUEUES": "Biðraðir",
+    "QUEUE_CALLS": "Biðraðar hringing",
+    "QUEUE_PARAMETERS": "Stillingar á biðröð",
+    "ABANDONED_CALLS": "Hringingar sem hætt var við ",
+    "OUTBOUND_CALLS": "Úthringi samtal",
     "AGI": "AGI",
-    "DIAL": "Dial",
-    "INTERNALDIAL": "Internal Dial",
-    "EXTERNALDIAL": "External Dial",
-    "RINGGROUP": "Ring Group",
-    "PLAYBACK": "Playback",
-    "QUEUE": "Queue",
-    "SET": "Set",
-    "VOICEMAIL": "Voicemail",
+    "DIAL": "Hringdu",
+    "INTERNALDIAL": "Hringja innanhúss",
+    "EXTERNALDIAL": "Utanaðkomandi hringing",
+    "RINGGROUP": "Hringi hópur",
+    "PLAYBACK": "Endurspilun",
+    "QUEUE": "Biðröð",
+    "SET": "Sett",
+    "VOICEMAIL": "Talskilaboð",
     "GOTO": "GoTo",
-    "HANGUP": "Hangup",
-    "CUSTOM": "Custom",
-    "PROJECT": "Cally-Square Project",
-    "TECHNOLOGY/RESOURCE": "Technology/Resource",
+    "HANGUP": "Skella á ",
+    "CUSTOM": "Sérsniðin",
+    "PROJECT": "Cally-Square verkefni",
+    "TECHNOLOGY/RESOURCE": "Tæknigrunnur",
     "URL": "URL",
-    "EDIT_APP": "Edit Application",
-    "EDIT_INTERVAL": "Edit Interval",
-    "DELETE_APP": "Delete Application",
-    "INTERVALS": "Intervals",
-    "USER": "User",
+    "EDIT_APP": "Breyta umsókn",
+    "EDIT_INTERVAL": "Breyta bili",
+    "DELETE_APP": "Eyða umsókn\n",
+    "INTERVALS": "Iímabilum",
+    "USER": "Notandi",
     "TRUNK": "Trunk",
-    "PHONE": "Phone",
-    "AUDIO_FILES": "Audio Files",
-    "ANNOUNCE_OVERRIDES": "Announce Overrides",
+    "PHONE": "Sími",
+    "AUDIO_FILES": "Hljóðskrár",
+    "ANNOUNCE_OVERRIDES": "Tilkynna yfirskrift",
     "MACRO": "Macro",
     "GOSUB": "GoSub",
-    "RULE": "Rule",
-    "POSITION": "Position",
-    "ANSWER": "Answer",
-    "VALUE": "Value",
+    "RULE": "Regla",
+    "POSITION": "Staða",
+    "ANSWER": "Svara",
+    "VALUE": "Gildi",
     "MAILBOX@CONTEXT": "Mailbox@Context",
-    "EXTENSION": "Extension",
-    "PRIORITY": "Priority",
-    "HANGUP_CAUSE": "Hangup Cause",
-    "OUTBOUNDDIAL": "Outbound Dial",
-    "CALLER_ID": "Caller ID",
-    "NO_MESSAGE_AVAILABLE": "No messages available",
-    "NO_SOUND_AVAILABLE": "No sounds available",
-    "VOICERECORDINGS": "Voice Recordings",
+    "EXTENSION": "Framlenging",
+    "PRIORITY": "forgangur",
+    "HANGUP_CAUSE": "Orsök þess að það var skellt á ",
+    "OUTBOUNDDIAL": "Úthringing",
+    "CALLER_ID": "Auðkenni þess sem hringir",
+    "NO_MESSAGE_AVAILABLE": "Engin skilaboð ",
+    "NO_SOUND_AVAILABLE": "Ekkert hljóð til staðar",
+    "VOICERECORDINGS": "Tal upptökur",
     "CHANSPIES": "ChanSpy",
-    "VOICE": "Voice",
-    "REALTIME": "Realtime",
+    "VOICE": "Tal",
+    "REALTIME": "Rauntími",
     "ID": "Id",
-    "VOICEMAIL_CONTEXT": "Context",
-    "NO_MOHSOUND_AVAILABLE": "No Music On Hold available",
-    "FILE": "File",
-    "ADD_MOHSOUND": "Add Music On Hold sound",
-    "DOWNLOAD_MOHSOUND": "Download Music On Hold sound",
-    "DELETE_MOHSOUND": "Delete Music On Hold sound",
-    "UNIQUEID": "Unique ID",
-    "AGENT": "Agent",
-    "TYPE": "Type",
-    "RATING": "Rating",
-    "AUDIO": "Audio",
-    "DATE": "Date",
-    "NEW_VOICEQUEUE": "New Voice Queue",
-    "NEW_INBOUNDROUTE": "New Inbound Route",
-    "NEW_OUTBOUNDROUTE": "New Outbound Route",
-    "NEW_INTERNALROUTE": "New Internal Route",
-    "NEW_CONTEXT": "New Context",
-    "NEW_VOICEMAIL": "New Voicemail",
-    "NEW_MUSICONHOLD": "New Music On Hold",
-    "NEW_CHANSPY": "New ChanSpy",
-    "PENALTY": "Penalty",
-    "ADD_TEAM_TO_VOICEQUEUE": "Add Team to Voice Queue",
-    "ADD_AGENT_TO_VOICEQUEUE": "Add Agent to Voice Queue",
-    "EDIT_DIAL": "Edit Dial",
-    "EDIT_AGI": "Edit AGI",
-    "EDIT_INTERNALDIAL": "Edit Internal Dial",
-    "EDIT_EXTERNALDIAL": "Edit External Dial",
-    "EDIT_RINGGROUP": "Edit Ring Group",
-    "EDIT_PLAYBACK": "Edit Playback",
-    "EDIT_QUEUE": "Edit Queue",
-    "EDIT_SET": "Edit Set",
-    "EDIT_GOTO": "Edit GoTo",
-    "EDIT_HANGUP": "Edit Hangup",
-    "EDIT_CUSTOM": "Edit Custom",
-    "DURATION": "Duration",
-    "RECEIVED_AT": "Received At",
-    "YES": "Yes",
-    "NO": "No",
-    "HANGUPCAUSE_1": "1 = Unallocated number",
-    "HANGUPCAUSE_16": "16 = Normal call clearing",
-    "HANGUPCAUSE_17": "17 = User busy",
-    "HANGUPCAUSE_18": "18 = No user responding (telehone device not connected)",
-    "HANGUPCAUSE_21": "21 = Call rejected",
-    "HANGUPCAUSE_22": "22 = Number changed",
-    "HANGUPCAUSE_27": "27 = Destination out of order",
-    "HANGUPCAUSE_38": "38 = Network out of order",
-    "HANGUPCAUSE_41": "41 = Temporary failure",
-    "RANDOM": "Random",
-    "ALPHABETICAL": "Alphabetical",
-    "NO_APPS_AVAILABLE": "No applications available",
-    "DOWNLOAD_VOICERECORDING": "Download Voice Recording",
-    "DELETE_VOICERECORDING": "Delete Voice Recording",
-    "INTERNAL": "Internal",
-    "PHONE_STATE": "Phone State",
-    "PHONE_STATUS": "Phone Status",
-    "REGISTERED": "Registered",
-    "UNREGISTERED": "Unregistered",
-    "LAGGED": "Lagged",
-    "REACHABLE": "Reachable",
-    "UNREACHABLE": "Unreachable",
-    "UNKNOWN": "Unknown",
-    "NOT_INUSE": "Not in use",
-    "INUSE": "In Use",
-    "BUSY": "Busy",
-    "INVALID": "Invalid",
-    "UNAVAILABLE": "Unavailable",
-    "RINGING": "Ringing",
-    "ONHOLD": "On Hold",
-    "RING": "Ring",
-    "UP": "Up",
-    "INFO": "Info",
+    "VOICEMAIL_CONTEXT": "Innihald",
+    "NO_MOHSOUND_AVAILABLE": "Engin tónlist á bið til staðar",
+    "FILE": "Skrá",
+    "ADD_MOHSOUND": "Bæta við tónlist á bið",
+    "DOWNLOAD_MOHSOUND": "Hlaða niður tónlist á bið",
+    "DELETE_MOHSOUND": "Eyða tónlist á bið ",
+    "UNIQUEID": "Einkvætt auðkenni",
+    "AGENT": "Þjónustufulltrúi",
+    "TYPE": "Tegund",
+    "RATING": "RatingEinkunn",
+    "AUDIO": "Hljóð",
+    "DATE": "Dagsetning",
+    "NEW_VOICEQUEUE": "Ný tal biðröð",
+    "NEW_INBOUNDROUTE": "Ný innhringi regla",
+    "NEW_OUTBOUNDROUTE": "Ný úthringi regla",
+    "NEW_INTERNALROUTE": "Ný innanhús regla",
+    "NEW_CONTEXT": "Nýtt innihald",
+    "NEW_VOICEMAIL": "Ný talhólfa skilaboð",
+    "NEW_MUSICONHOLD": "Ný tónlist á bið",
+    "NEW_CHANSPY": "Nýtt ChanSpy",
+    "PENALTY": "Refsing",
+    "ADD_TEAM_TO_VOICEQUEUE": "Bæta við teymi við Raddröð",
+    "ADD_AGENT_TO_VOICEQUEUE": "Bæta þjónustufulltrúa við raddbiðröð",
+    "EDIT_DIAL": "Breyta hringja",
+    "EDIT_AGI": "Breyta AGI",
+    "EDIT_INTERNALDIAL": "Breyta innri hringingu",
+    "EDIT_EXTERNALDIAL": "Breyta úthringingum",
+    "EDIT_RINGGROUP": "Breyta Ring Group",
+    "EDIT_PLAYBACK": "Breyta bili\n",
+    "EDIT_QUEUE": "Breyta röð ",
+    "EDIT_SET": "Breyta Set",
+    "EDIT_GOTO": "Breyta GoTo",
+    "EDIT_HANGUP": "Breyta skella á ",
+    "EDIT_CUSTOM": "Breyta sérsniði",
+    "DURATION": "Lengd",
+    "RECEIVED_AT": "Móttekið kl.",
+    "YES": "Já",
+    "NO": "Nei",
+    "HANGUPCAUSE_1": "1 = Óúthlutað númer",
+    "HANGUPCAUSE_16": "16 = Venjuleg símtalshreinsun",
+    "HANGUPCAUSE_17": "17 = Notandi upptekinn",
+    "HANGUPCAUSE_18": "18 = Enginn notandi svarar (símatæki ekki tengt)",
+    "HANGUPCAUSE_21": "21 = Símtali hafnað",
+    "HANGUPCAUSE_22": "22 = Númeri breytt",
+    "HANGUPCAUSE_27": "27 = Áfangastaður í ólagi",
+    "HANGUPCAUSE_38": "38 = Netkerfi ekki í lagi\n",
+    "HANGUPCAUSE_41": "41 = Tímabundin bilun",
+    "RANDOM": "Handahófs",
+    "ALPHABETICAL": "Stafrófsröð",
+    "NO_APPS_AVAILABLE": "Engin forrit í boði",
+    "DOWNLOAD_VOICERECORDING": "Hlaða niður raddupptöku",
+    "DELETE_VOICERECORDING": "Eyða raddupptöku\n",
+    "INTERNAL": "innanhúss",
+    "PHONE_STATE": "Staða á símanum",
+    "PHONE_STATUS": "Staða á símanum",
+    "REGISTERED": "Skráð",
+    "UNREGISTERED": "Óskráð",
+    "LAGGED": "Seinkun",
+    "REACHABLE": "Hægt að ná í",
+    "UNREACHABLE": "Ekki hægt að ná í",
+    "UNKNOWN": "Óþekktur",
+    "NOT_INUSE": "Ekki í notkun",
+    "INUSE": "Í notkun",
+    "BUSY": "Upptekinn",
+    "INVALID": "Ekki gilt",
+    "UNAVAILABLE": "Ekki hægt að ná í",
+    "RINGING": "Hringir",
+    "ONHOLD": "Á bið",
+    "RING": "Hringja",
+    "UP": "UPP",
+    "INFO": "Uppl.",
     "TRUNKS": "Trunks",
-    "REGISTRY": "Registry",
-    "NO_REGISTRY": "No registry",
-    "LOGGED_IN": "Logged in (SIP connected)",
-    "PAUSED": "Paused",
-    "DISPOSITION": "Disposition",
-    "WAITING": "Waiting",
-    "TALKING": "Talking",
+    "REGISTRY": "Skráning",
+    "NO_REGISTRY": "Engin skráning",
+    "LOGGED_IN": "Innskráning (SIP connected)",
+    "PAUSED": "Hlé",
+    "DISPOSITION": "Fyrirkomulag",
+    "WAITING": "Bíður",
+    "TALKING": "Talar",
     "DID": "DID",
-    "CALLER": "Caller",
-    "TOTAL": "Total",
-    "ANSWERED": "Answered",
-    "ABANDONED": "Abandoned",
-    "UNMANAGED": "Unmanaged",
-    "REDIRECT_TO_NUMBER": "Redirect to a number",
-    "REDIRECT_TO_AGENT": "Redirect to an agent",
-    "CLOSING": "Closing",
-    "AVG_HOLD_TIME": "Avg Hold Time",
-    "AVG_DURATION": "Avg Duration",
-    "AVG_BILLABLE": "Avg Billable",
-    "SOURCE": "Source",
-    "DESTINATION": "Destination",
-    "REJECTED": "Rejected",
-    "FAILED": "Failed",
-    "CALLED": "Called",
-    "CONNECTED": "Connected",
-    "NO_RATING": "No rating",
-    "EDIT_VOICERECORDING": "Edit Voice Recording",
-    "APPLICATION_NAME": "Application Name",
-    "ARGUMENTS": "Arguments",
-    "EDIT_QUEUECAMPAIGN": "Edit Campaign",
-    "LISTADD_QUEUECAMPAIGN": "Add List",
-    "BLACKLISTADD_QUEUECAMPAIGN": "Add Blacklist",
-    "TEAMADD_QUEUECAMPAIGN": "Add Team",
-    "AGENTADD_QUEUECAMPAIGN": "Add Agent",
-    "DELETE_QUEUECAMPAIGN": "Delete Campaign",
-    "DELETE_IVRCAMPAIGN": "Delete Campaign",
-    "EDIT_IVRCAMPAIGN": "Edit Campaign",
-    "NEW_IVRCAMPAIGN": "New IVR Campaign",
-    "ADD_IVRCAMPAIGN": "Add IVR Campaign",
-    "LISTADD_IVRCAMPAIGN": "Add List",
-    "BLACKLISTADD_IVRCAMPAIGN": "Add Blacklist",
-    "ENABLED": "Enabled",
-    "READY": "Ready",
-    "PAUSE": "Pause",
-    "UNPAUSE": "End Pause",
-    "DEFAULT_PAUSE": "Default Pause",
-    "AGENTADD_QUEUE": "Add Agent to queue campaign",
-    "AGENTSADD_QUEUE": "Add Agents to queue campaign",
-    "ALL_TEAMS": "All Teams",
-    "SELECTED_TEAMS": "Selected Teams",
-    "ALL_LISTS": "All Lists",
-    "SELECTED_LISTS": "Selected Lists",
-    "ALL_AGENTS": "All Agents",
-    "SELECTED_AGENTS": "Selected Agents",
-    "WAITING_FOR_AGENT": "Waiting for Agent",
-    "TOTAL_OFFERED": "Total Offered",
-    "RUNNING": "Running",
-    "TRUNK_IS_NOT_REACHABLE": "Trunk is Not Reachable",
-    "AGENTS_NOT_LOGGED": "Agent not logged",
-    "NOT_ACTIVE": "Not Active",
-    "IS_DISACTIVED": "Deactivated",
-    "BACKUPTRUNK": "Backup Trunk",
-    "GLOBALINTERVAL": "Global Interval",
-    "RESCHEDULED_CONTACTS": "Rescheduled contacts",
-    "INTERVAL_IS_OVERTIME": "Out of Interval",
-    "GLOBAL_INTERVAL_IS_OVERTIME": "Out of Interval (Global)",
-    "INTERVAL_IS_NULL": "Interval is Null",
-    "TIMEZONE_UNKNOW": "Timezone Unknow",
-    "INTERVAL_IS_EMPTY": "Interval is Empty",
-    "TOTAL_MANAGED": "Total Managed",
-    "OPEN": "Open",
-    "FRESH": "Fresh",
-    "CLOSED": "Closed",
-    "ALWAYS": "Always",
-    "NEVER": "Never",
-    "ONLY_IF_OPEN": "Only If Open",
-    "CHECKDUPLICATE": "Check Duplicate",
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
-    "OF": "of",
-    "CHAT": "Chat",
-    "MAIL": "Email",
+    "CALLER": "Hringjandi",
+    "TOTAL": "Samtals",
+    "ANSWERED": "Svarað",
+    "ABANDONED": "Hætt við ",
+    "UNMANAGED": "Óstjórnað",
+    "REDIRECT_TO_NUMBER": "Færðu á númer",
+    "REDIRECT_TO_AGENT": "Færðu til fulltrúa",
+    "CLOSING": "Lokun",
+    "AVG_HOLD_TIME": "Meðal biðtími",
+    "AVG_DURATION": "Meðal engd",
+    "AVG_BILLABLE": "Meðal reikningshæft",
+    "SOURCE": "Uppruni",
+    "DESTINATION": "Áfangastaður",
+    "REJECTED": "Hafnað",
+    "FAILED": "Mistókst",
+    "CALLED": "Hringt",
+    "CONNECTED": "Tengdur",
+    "NO_RATING": "Engin einkunn",
+    "EDIT_VOICERECORDING": "Breyta raddupptöku",
+    "APPLICATION_NAME": "Nafn umsóknar",
+    "ARGUMENTS": "Rök",
+    "EDIT_QUEUECAMPAIGN": "Breyta herferð\n",
+    "LISTADD_QUEUECAMPAIGN": "Bættu við lista",
+    "BLACKLISTADD_QUEUECAMPAIGN": "Bæta við svarta listann",
+    "TEAMADD_QUEUECAMPAIGN": "Bættu við hópi",
+    "AGENTADD_QUEUECAMPAIGN": "Bæta við þjónustufulltrúa",
+    "DELETE_QUEUECAMPAIGN": "Eyða herferð",
+    "DELETE_IVRCAMPAIGN": "Eyða herferð",
+    "EDIT_IVRCAMPAIGN": "Breyta herferð",
+    "NEW_IVRCAMPAIGN": "Ný IVR herferð",
+    "ADD_IVRCAMPAIGN": "Bæta við IVR herferð",
+    "LISTADD_IVRCAMPAIGN": "Bættu við lista",
+    "BLACKLISTADD_IVRCAMPAIGN": "Bæta við svarta listann ",
+    "ENABLED": "Virkt",
+    "READY": "Tilbúinn",
+    "PAUSE": "Hlé",
+    "UNPAUSE": "Enda hlé",
+    "DEFAULT_PAUSE": "Sjálfgefið hlé\n",
+    "AGENTADD_QUEUE": "Bæta þjónustufulltrúa við röð herferðar",
+    "AGENTSADD_QUEUE": "Bæta þjónustufulltrúa við röð herferðar",
+    "ALL_TEAMS": "Öll teymi",
+    "SELECTED_TEAMS": "Valdir hópar",
+    "ALL_LISTS": "Allir listar",
+    "SELECTED_LISTS": "Valdir listar",
+    "ALL_AGENTS": "Allir þjónustufulltrúar",
+    "SELECTED_AGENTS": "Valdir fulltrúar",
+    "WAITING_FOR_AGENT": "Beðið eftir fulltrúa",
+    "TOTAL_OFFERED": "Samtals í boði",
+    "RUNNING": "Keyrir",
+    "TRUNK_IS_NOT_REACHABLE": "Trunk er ekki hægt að tengja",
+    "AGENTS_NOT_LOGGED": "Þjónustufulltrúi ekki skráður inn",
+    "NOT_ACTIVE": "Ekki virkur",
+    "IS_DISACTIVED": "Afvirkjað",
+    "BACKUPTRUNK": "Bakgrunnsfylling",
+    "GLOBALINTERVAL": "Alþjóðlegt bil",
+    "RESCHEDULED_CONTACTS": "endurraða tengiliðum",
+    "INTERVAL_IS_OVERTIME": "Ötan marka",
+    "GLOBAL_INTERVAL_IS_OVERTIME": "Utan bils (Alþjóðlegt) - Out of Interval (Global)",
+    "INTERVAL_IS_NULL": "Tímabil er ekkert",
+    "TIMEZONE_UNKNOW": "Tímabelti óþekkt",
+    "INTERVAL_IS_EMPTY": "Tímabil er autt",
+    "TOTAL_MANAGED": "Samtals stjórnað",
+    "OPEN": "Opið",
+    "FRESH": "Ferskt",
+    "CLOSED": "Lokað",
+    "ALWAYS": "Alltaf",
+    "NEVER": "Aldrey",
+    "ONLY_IF_OPEN": "Aðeins ef opið",
+    "CHECKDUPLICATE": "Athuga tvíendurtekningar",
+    "PAGE": "Bls.",
+    "ROWSPERPAGE": "Raðir á bls.",
+    "OF": "af",
+    "CHAT": "Spjall",
+    "MAIL": "Netfang",
     "SMS": "SMS",
-    "OPENCHANNEL": "Open Channel",
+    "OPENCHANNEL": "Opnar rásir",
     "FAX": "Fax",
-    "TEAMS_ASSOCIATION": "Teams Association",
-    "MANDATORYDISPOSITION": "Mandatory disposition",
-    "MANDATORYDISPOSITIONPAUSEID": "Mandatory disposition pause status",
-    "TOOLTIP_SCREENRECORDING_ON": "Screen Recording in progress",
-    "TOOLTIP_SCREENRECORDING_OFF": "Screen Recording available",
-    "PREVIEW_AUTO_RECALL_ME": "Automate Recall Me calls"
+    "TEAMS_ASSOCIATION": "Liðsfélagar",
+    "MANDATORYDISPOSITION": "Skilyrt ráðstöfun",
+    "MANDATORYDISPOSITIONPAUSEID": "Skilyrt pása staða",
+    "TOOLTIP_SCREENRECORDING_ON": "Skjáupptaka í gangi",
+    "TOOLTIP_SCREENRECORDING_OFF": "Skjáupptaka í boði",
+    "PREVIEW_AUTO_RECALL_ME": "Sjálfvirknivæað endurtekningu á mínum símtölum"
   }
 }
index ee8630a..58a50e1 100644 (file)
@@ -1,12 +1,12 @@
 {
   "MOTIONDIALER": {
-    "LOGIN_TIME": "Tempo de Login",
-    "PAUSE_TIME": "Tempo de Pausa",
+    "LOGIN_TIME": "Tempo de login",
+    "PAUSE_TIME": "Tempo de pausa",
     "CUTDIGIT": "Cortar Dígitos",
-    "RANDOMLASTDIGITCALLERIDNUMBER": "Número de Chamada de Saída Aleatória",
+    "RANDOMLASTDIGITCALLERIDNUMBER": "Caller ID Number Aleatório para Chamadas de Saída",
     "CLONE_IVRCAMPAIGN": "Clonar Campanha",
-    "CLONE_QUEUECAMPAIGN": "Clonar Fila de Campanha",
-    "ABANDONEDCALLS": "Chamadas Abandonadas em Filas",
+    "CLONE_QUEUECAMPAIGN": "Clonar Campanha de Discagem",
+    "ABANDONEDCALLS": "Chamadas Abandonadas",
     "HOPPERWIDGET": "Sumário",
     "RESETLIST_IVRCAMPAIGN": "Redefinir Listas",
     "RESETLIST_QUEUECAMPAIGN": "Redefinir Listas",
     "RESETLIST": "Redefinir Listas",
     "SELECTALL": "Selecionar Tudo",
     "UNSELECTALL": "Desmarcar Todos",
-    "NO_AVAILABLE_INFO": "Nenhuma Informação Disponível",
-    "TIMEOUT": "Tempo Esgotado",
-    "CALLYSQUAREPROJECTPREVIEW": "Visualização do Projeto Cally Square",
-    "CALLYSQUAREPROJECTPREVIEW2": "Pós Visualização do Projeto Cally Square",
-    "RUNIFHANGUPAGENT": "Executar o Projeto Cally Square Depois mesmo que o agente desligue a chamada",
-    "CALLYSQUAREPROJECT2": "Projeto Cally Square após a fila",
+    "NO_AVAILABLE_INFO": "Nenhuma Informação disponível",
+    "TIMEOUT": "Timeout",
+    "CALLYSQUAREPROJECTPREVIEW": "Projeto Cally Square para Método Preview",
+    "CALLYSQUAREPROJECTPREVIEW2": "Projeto Cally Square após Método Preview",
+    "RUNIFHANGUPAGENT": "Executar o Projeto Cally Square Depois, mesmo que o agente desligue a chamada",
+    "CALLYSQUAREPROJECT2": "Projeto Cally Square após a Fila",
     "NO_AGENT_ONLINE": "Nenhum agente online",
     "PARTIALPAUSE": "Pausa Parcial",
     "ALL": "Todos",
-    "IDLE": "Ocioso",
+    "IDLE": "Disponível",
     "TIMER": "Tempo",
     "MOVE_HOPPERFINAL": "Restaurar contato",
     "RESTORECONTACTS": "Restaurar Contatos",
-    "NO_SUCH_NUMBER": "Sem número semelhante",
-    "DIALORDERBYSCHEDULEDAT": "Encomendar por agendamento",
+    "NO_SUCH_NUMBER": "Número Inválido",
+    "DIALORDERBYSCHEDULEDAT": "Ordenar por hora do Agendamento",
     "ASC": "ASC",
     "DESC": "DESC",
     "RECALLAGENT": "Rechamar Agente",
-    "DIALRECALLINQUEUE": "Rechamar na fila",
-    "DIALRECALLMETIMEOUT": "Lembre-me de tempo limite [min]",
-    "RECALLME": "Lembre-me",
-    "RECALLFAILEDTIMEOUT": "Rechamada falhou",
-    "PREVIEW_CAMPAIGN": "Pré-visualização de Campanhas",
-    "PREVIEW_CAMPAIGNS": "Pré-visualização de Campanhas",
-    "AMD": "Asterisk Answering Machine Detection (AMD)",
+    "DIALRECALLINQUEUE": "Agendamento Global",
+    "DIALRECALLMETIMEOUT": "Timeout de Agendamento [min]",
+    "RECALLME": "Agendamento",
+    "RECALLFAILEDTIMEOUT": "Rechamada Falhou",
+    "PREVIEW_CAMPAIGN": "Campanhas Preview",
+    "PREVIEW_CAMPAIGNS": "Campanhas Preview",
+    "AMD": "Answering Machine Detection (AMD)",
     "AMDTOTALANALYSISTIME": "Tempo Total de Análise",
     "AMDACTIVE": "AMD",
-    "AMDINITIALSILENCE": "Silêncio inicial",
-    "AMDGREETING": "Cumprimento",
-    "AMDAFTERGREETINGSILENCE": "Silêncio após saudação",
-    "AMDSILENCETHRESHOLD": "Limiar de silêncio",
-    "AMDMINWORDLENGTH": "Comprimento mínimo da palavra",
-    "AMDBETWEENWORDSSILENCE": "Silêncio entre palavras",
-    "AMDMAXIMUMWORDLENGTH": "Comprimento máximo da palavra",
+    "AMDINITIALSILENCE": "Silêncio no Início",
+    "AMDGREETING": "Saudação",
+    "AMDAFTERGREETINGSILENCE": "Silêncio após Saudação",
+    "AMDSILENCETHRESHOLD": "Limite de Silêncio",
+    "AMDMINWORDLENGTH": "Tamanho Mínimo de Palavras",
+    "AMDBETWEENWORDSSILENCE": "Silêncio entre Palavras",
+    "AMDMAXIMUMWORDLENGTH": "Tamanho Máximo de Palavras",
     "AMDMAXIMUMNUMBEROFWORDS": "Número Máximo de Palavras",
-    "GOTO_QUEUECAMPAIGN": "Ir para campanhas de fila em tempo real",
-    "GOTOREALTIME_QUEUECAMPAIGN": "Ir para campanhas de fila em tempo real",
-    "GOTO_IVRCAMPAIGN": "Ir para campanhas de IVR em tempo real",
-    "GOTOREALTIME_IVRCAMPAIGN": "Ir para campanhas de IVR em tempo real",
+    "GOTO_QUEUECAMPAIGN": "Visualizar Campanha de Discagem em Tempo Real",
+    "GOTOREALTIME_QUEUECAMPAIGN": "Visualizar Campanha de Discagem em Tempo Real",
+    "GOTO_IVRCAMPAIGN": "Visualizar Campanhas de URA em Tempo Real",
+    "GOTOREALTIME_IVRCAMPAIGN": "Visualizar Campanha de URA em Tempo Real",
     "LOGOUT": "Sair",
-    "EDIT_CAMPAIGN": "Editar campanha",
+    "EDIT_CAMPAIGN": "Editar Campanha",
     "LIMITED": "Limitado",
     "IVR_CAMPAIGNS": "Campanhas de URA",
     "MOTIONDIALER": "Motion Bull",
-    "QUEUECAMPAIGNS": "Campanhas de fila",
+    "QUEUECAMPAIGNS": "Campanhas de Discagem",
     "IVRCAMPAIGNS": "Campanhas de URA",
-    "MANAGED": "Gerenciou",
-    "AVAILABLE_CONTACTS_FINISHED": "Contatos disponíveis terminados",
-    "HISTORY": "História",
+    "MANAGED": "Gerenciado",
+    "AVAILABLE_CONTACTS_FINISHED": "Término de contatos disponivéis",
+    "HISTORY": "Histórico",
     "SCHEDULEDAT": "Agendado em",
-    "HOPPERBLACKS": "Lista negra do funil",
+    "HOPPERBLACKS": "Blacklist Funil",
     "NO_HOPPERBLACK_AVAILABLE": "Nenhum item disponível",
-    "HOPPERFINALS": "Final do funil",
+    "HOPPERFINALS": "Funil Final",
     "NO_HOPPERFINAL_AVAILABLE": "Nenhum item disponível",
-    "HOPPERHISTORIES": "Histórico de chamadas",
+    "HOPPERHISTORIES": "Histórico de Chamadas",
     "NO_HOPPERHISTORY_AVAILABLE": "Nenhum item disponível",
     "DELETE_HOPPERHISTORY": "Excluir",
     "DELETE_HOPPERFINAL": "Excluir",
-    "CONTACTID": "ID do contato",
-    "STARTTIME": "Hora de início",
-    "RESPONSETIME": "Tempo de resposta",
-    "ENDTIME": "Fim do tempo",
+    "CONTACTID": "ID do Contato",
+    "STARTTIME": "Hora de Início",
+    "RESPONSETIME": "Tempo de Resposta",
+    "ENDTIME": "Hora do Término",
     "STATUS": "Status",
     "HOPPERS": "Funil",
     "NO_HOPPER_AVAILABLE": "Nenhum item disponível",
     "EDIT_HOPPER": "Editar Funil",
     "DELETE_HOPPER": "Excluir Funil",
     "FINAL": "Final",
-    "BLACKLIST": "Lista negra",
+    "BLACKLIST": "Blacklist",
     "NAME": "Nome",
     "VOICEQUEUES": "Filas de Voz",
     "SEARCH_FOR_ANYONE": "Procurar",
     "BACK": "Voltar",
     "SELECTED": "Selecionado",
-    "SELECT_ALL": "Selecione tudo",
-    "SELECT_NONE": "Selecione nenhum",
-    "DELETE_VOICEDISPOSITION": "Excluir disposição de voz",
-    "EDIT_VOICEDISPOSITION": "Editar disposição de voz",
-    "EDIT_VOICEQUEUE": "Editar fila de voz",
-    "DELETE_VOICEQUEUE": "Excluir fila de voz",
-    "MOHSOUNDS": "Moh Sounds",
+    "SELECT_ALL": "Selecione Tudo",
+    "SELECT_NONE": "Selecione Nenhum",
+    "DELETE_VOICEDISPOSITION": "Excluir Qualificação de Voz",
+    "EDIT_VOICEDISPOSITION": "Editar Qualificação de Voz",
+    "EDIT_VOICEQUEUE": "Editar Fila de Voz",
+    "DELETE_VOICEQUEUE": "Excluir Fila de Voz",
+    "MOHSOUNDS": "Áudios de Música de Espera",
     "STRATEGY": "Estratégia",
     "DESCRIPTION": "Descrição",
-    "INTERVAL": "Intervalo de tempo",
-    "ADD_VOICEQUEUE": "Adicionar fila de voz",
-    "NEW_QUEUECAMPAIGN": "Campanha Nova Fila",
+    "INTERVAL": "Intervalo de Tempo",
+    "ADD_VOICEQUEUE": "Adicionar Fila de Voz",
+    "NEW_QUEUECAMPAIGN": "Nova Campanha de Discagem",
     "ACTIVE": "Ativo",
     "METHOD": "Método",
-    "POWERLEVEL": "Nível de poder",
-    "DROPRATE": "Taxa de queda",
-    "AGENTBUSYFACTOR": "Fator Ocupado do Agente",
+    "POWERLEVEL": "Power Level",
+    "DROPRATE": "Taxa de Perda",
+    "AGENTBUSYFACTOR": "Fator de Ocupação do Agente",
     "PREDICTIVEOPTIMIZATION": "Otimização Preditiva",
-    "PREDICTIVEOPTIMIZATIONPERCENTAGE": "Porcentagem de otimização preditiva",
+    "PREDICTIVEOPTIMIZATIONPERCENTAGE": "Porcentagem de Otimização Preditiva",
     "PREDICTIVEINTERVAL": "Intervalo Preditivo",
-    "ADD_QUEUECAMPAIGN": "Adicionar campanha de fila",
+    "ADD_QUEUECAMPAIGN": "Adicionar Campanha de Discagem",
     "CAMPAIGN": "Campanha",
     "MAXCONCURRENTCALLS": "Máximo de chamadas simultâneas",
-    "CONCURRENTCALLS": "Máximo de chamadas simultâneas",
+    "CONCURRENTCALLS": "Máximo de Chamadas Simultâneas",
     "ORIGINATE": "Originar",
-    "ORIGINATECALLERIDNAME": "Nome do identificador de chamadas",
-    "ORIGINATECALLERIDNUMBER": "Número de Identificação de Chamadas",
-    "ORIGINATETIMEOUT": "Originar o tempo limite",
-    "QUEUEOPTIONS": "Opções de fila",
-    "QUEUETIMEOUT": "Tempo limite da fila",
+    "ORIGINATECALLERIDNAME": "Caller ID Name",
+    "ORIGINATECALLERIDNUMBER": "Caller ID Number",
+    "ORIGINATETIMEOUT": "Tempo de Toque",
+    "QUEUEOPTIONS": "Opções de Fila",
+    "QUEUETIMEOUT": "Timeout da Fila",
     "CALLYSQUAREPROJECT": "Projeto Cally Square",
-    "RETRYANDFREQUENCY": "Repetir configurações",
+    "RETRYANDFREQUENCY": "Configurações de Nova Tentativa",
     "GLOBAL": "Global",
-    "GLOBALMAXRETRY": "Máximo de tentativas",
+    "GLOBALMAXRETRY": "Máximo de Tentativas",
     "CONGESTION": "Congestionamento",
-    "CONGESTIONMAXRETRY": "Máximo de tentativas",
-    "CONGESTIONRETRYTIME": "Repetir tempo [min]",
-    "BUSYMAXRETRY": "Máximo de tentativas",
-    "BUSYRETRYTIME": "Repetir tempo [min]",
-    "NOANSWER": "Sem resposta",
-    "NOANSWERMAXRETRY": "Máximo de tentativas",
-    "NOANSWERRETRYTIME": "Repetir tempo [min]",
-    "QUEUE_PARAMS": "Parâmetros da fila",
+    "CONGESTIONMAXRETRY": "Máximo de Tentativas",
+    "CONGESTIONRETRYTIME": "Tempo para nova Tentativa [min]",
+    "BUSYMAXRETRY": "Máximo de Tentativas",
+    "BUSYRETRYTIME": "Tempo para nova Tentativa [min]",
+    "NOANSWER": "Sem Atendimento",
+    "NOANSWERMAXRETRY": "Máximo de Tentativas",
+    "NOANSWERRETRYTIME": "Tempo para nova Tentativa [min]",
+    "QUEUE_PARAMS": "Parâmetros da Fila",
     "ORIGINATED": "Originado",
     "MESSAGE": "Mensagem",
-    "DROPPED": "Desistiu",
+    "DROPPED": "Perdida",
     "CREATED_AT": "Criado em",
     "LEGEND": {
-      "CUSTOM_APPLICATION": "(*) - Aplicativo personalizado."
+      "CUSTOM_APPLICATION": "(*) - Custom application."
     },
     "ERRORS": {
       "CUTDIGIT_REQUIRED": "Campo obrigatório",
       "MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
       "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
       "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
-      "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Ligue para add.phone após min. deve ser maior ou igual a",
+      "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Chamar add.phone após min. deve ser maior ou igual a",
       "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "Campo obrigatório"
     },
     "GENERAL": "Geral",
-    "AGENTTIMEOUT": "Tempo limite do agente",
-    "MAXLENGTH": "Comprimento máximo",
-    "RETRY": "Tente novamente",
-    "WRAPUPTIME": "Tempo de finalização",
+    "AGENTTIMEOUT": "Timeout do Agente",
+    "MAXLENGTH": "Tamanho máximo",
+    "RETRY": "Nova Tentativa",
+    "WRAPUPTIME": "Tempo de Pós-atendimento",
     "WEIGHT": "Peso",
-    "JOINWHENEMPTY": "Entrar quando estiver vazio",
-    "LEAVEWHENEMPTY": "Deixar quando vazio",
+    "JOINWHENEMPTY": "Permitir que o cliente fique em espera quando não tiver nenhum agente logado",
+    "LEAVEWHENEMPTY": "Desconectar clientes em espera quando todos os agentes deslogarem",
     "HELP": {
-      "RANDOMLASTDIGITCALLERIDNUMBER": "Se for maior que 0, gera aleatoriamente os últimos dígitos correspondentes do Número de Identificação de Chamadas de Saída",
-      "TIMEOUT": "Número de segundos para tocar o agente na fila",
-      "CALLYSQUAREPROJECTPREVIEW": "Selecionando um projeto IVR, o discador encaminhará a chamada para o IVR quando um agente atender (o IVR será direcionado para o agente)",
-      "CALLYSQUAREPROJECTPREVIEW2": "Selecionando um projeto IVR, o discador encaminhará a chamada para o IVR quando um cliente desligar ou não puder ser acessado (o IVR será direcionado para o agente)",
-      "RUNIFHANGUPAGENT": "Executar o Projeto Cally Square Depois mesmo que o agente desligue a chamada",
-      "CALLYSQUAREPROJECT2": "iSelecionando um projeto IVR, o discador encaminhará a chamada para o IVR após a fila (se a fila terminar por tempo limite)",
+      "RANDOMLASTDIGITCALLERIDNUMBER": "Se for maior que 0, gera aleatoriamente os últimos dígitos do Caller ID Number para Ligações Saíntes",
+      "TIMEOUT": "Número de segundos para o agente atender (tempo de ring)",
+      "CALLYSQUAREPROJECTPREVIEW": "Selecionando um projeto de URA, o discador encaminhará a chamada para a URA quando um agente atender (a URA será direcionada para o agente)",
+      "CALLYSQUAREPROJECTPREVIEW2": "Selecionando um projeto de URA, o discador encaminhará a chamada para a URA quando um cliente desligar ou não puder ser alcançado (a URA será direcionada para o agente)",
+      "RUNIFHANGUPAGENT": "Executar o Projeto Cally Square depois que o agente desligue a chamada",
+      "CALLYSQUAREPROJECT2": "Selecionando um projeto de URA, o discador encaminhará a chamada para a URA após a fila (se a fila tiver alcançado o timeout de espera)",
       "DIALORDERBYSCHEDULEDAT": "Obter contatos do funil (descendente ou ascendente).",
-      "DIALRECALLINQUEUE": "Reprogramar chamada para agentes na fila",
-      "DIALRECALLMETIMEOUT": "Intervalo de tempo (em minutos) para o período de validade lembrar me",
+      "DIALRECALLINQUEUE": "Reagendar chamada para agentes na Fila",
+      "DIALRECALLMETIMEOUT": "Intervalo de tempo (em minutos) para o período de validade do Agendamento",
       "PRIORITY": "Prioridade na lista",
-      "AMDMAXIMUMWORDLENGTH": "Duração máxima permitida de um único enunciado de voz",
-      "AMDMINWORDLENGTH": "Duração mínima de uma voz para ser considerada uma palavra",
-      "AMDSILENCETHRESHOLD": "Se o nível médio de ruído em uma amostra não atingir esse valor, de uma escala de 0 a 32767, consideraremos como silêncio",
-      "AMDTOTALANALYSISTIME": "Maximum time allowed for the algorithm to decide on whether the audio represents a HUMAN or a MACHINE",
-      "AMDAFTERGREETINGSILENCE": "Tempo máximo permitido para o algoritmo decidir se o áudio representa um HUMANO ou uma MÁQUINA",
-      "AMDGREETING": "Comprimento máximo de uma saudação. Se excedido, o resultado é a detecção como MÁQUINA",
-      "AMDINITIALSILENCE": "Duração máxima do silêncio antes da saudação. Se excedido, o resultado é a detecção como MÁQUINA",
-      "AMDACTIVE": "Ativar ou desativar tentativas de detecção de secretária eletrônica",
-      "AMDBETWEENWORDSSILENCE": "Duração mínima de silêncio após uma palavra para considerar o áudio que segue como uma nova palavra",
-      "AMDMAXIMUMNUMBEROFWORDS": "Número máximo de palavras na saudação. Se REACHED, então o resultado é a detecção como uma MÁQUINA",
-      "CALLYSQUAREPROJECT": "Selecionando um projeto IVR, o discador encaminhará a chamada para o IVR antes da fila",
+      "AMDMAXIMUMWORDLENGTH": "Duração máxima permitida de uma único expressão de Voz",
+      "AMDMINWORDLENGTH": "Duração mínima de uma Voz para ser considerada uma palavra",
+      "AMDSILENCETHRESHOLD": "Se o nível médio de ruído em uma amostra não atingir esse valor, de uma escala de 0 a 32767, então consideraremos como silêncio",
+      "AMDTOTALANALYSISTIME": "Tempo máximo permitido para o algoritmo decidir se o áudio representa um HUMANO ou uma MÁQUINA",
+      "AMDAFTERGREETINGSILENCE": "Silêncio detectado depois da saudação. Se excedido, é classificado como HUMANO ",
+      "AMDGREETING": "Tamanho máximo de uma saudação. Se excedido, é classificado como MÁQUINA",
+      "AMDINITIALSILENCE": "Duração máxima do silêncio antes da saudação. Se excedido, é classificado como MÁQUINA",
+      "AMDACTIVE": "Habilita ou desabilita identificação de Mensagem da Operadora",
+      "AMDBETWEENWORDSSILENCE": "Duração mínima de silêncio após uma palavra para considerar que trata-se de uma nova palavra",
+      "AMDMAXIMUMNUMBEROFWORDS": "Número máximo de palavras na saudação. Se excedido, é classificado como uma MÁQUINA",
+      "CALLYSQUAREPROJECT": "Selecionando um projeto de URA, o discador encaminhará a chamada para a URA antes da fila",
       "PREFIX": "Prefixo telefônico",
       "ACTIVE": "Ativo",
-      "AGENTTIMEOUT": "Quanto tempo (em segundos) para ligar ao dispositivo de um agente",
-      "MAXLENGTH": "Número máximo de chamadores que podem estar aguardando em uma fila (0 = ilimitado)",
-      "RETRY": "Quanto tempo (em segundos) aguardar antes de chamar o próximo agente na fila quando o tempo limite do agente expirar",
-      "WRAPUPTIME": "Por quanto tempo (em segundos) manter um agente indisponível em uma fila após concluir uma chamada",
+      "AGENTTIMEOUT": "Quanto tempo (em segundos) de toque no agente",
+      "MAXLENGTH": "Número máximo de clientes que podem aguardar em uma fila (0 = ilimitado)",
+      "RETRY": "Quanto tempo (em segundos) aguardar antes de chamar o próximo agente quando atingir o timeout do agente",
+      "WRAPUPTIME": "Por quanto tempo (em segundos) manter um agente indisponível após concluir uma chamada",
       "WEIGHT": "Usado para determinar a prioridade se os agentes estiverem associados a mais de uma fila",
-      "JOINWHENEMPTY": "Se um chamador for adicionado à fila, quando nenhum agente estiver disponível",
-      "LEAVEWHENEMPTY": "Se um chamador for expulso da fila quando nenhum agente estiver disponível",
-      "ANNOUNCEFREQUENCY": "Com que frequência anunciar a posição do chamador e / ou o tempo estimado de espera na fila (0 = desabilitar)",
-      "MINANNOUNCEFREQUENCY": "Frequência mínima de anúncio (útil quando a posição do chamador muda com frequência)",
-      "PERIODICANNOUNCEFREQUENCY": "Freqüência de anúncios periódicos para o chamador",
-      "ANNOUNCEPOSITIONLIMIT": "Usado se você definiu a posição de anúncio como \"limite\" ou \"mais\"",
-      "AFTERCALLWORKDURATION": "Comprimento de pausa acionado pela opção After Call Work",
-      "MEMBERDELAY": "Insere um atraso antes de o chamador e o agente na fila se conectarem",
-      "MUSICONHOLD": "Define a classe de música a ser usada para uma fila específica",
-      "ANNOUNCETOAGENT": "Reproduz um anúncio para o agente que atende a chamada (por exemplo, para que ele saiba de qual fila o chamador está vindo)",
+      "JOINWHENEMPTY": "Permite adicionar um cliente à fila, quando nenhum agente estiver logado",
+      "LEAVEWHENEMPTY": "Descarta todos os clientes da fila, quando nenhum agente estiver logado",
+      "ANNOUNCEFREQUENCY": "Com qual frequência anunciar a posição do cliente e/ou o tempo estimado de espera na fila (0 = desabilitar)",
+      "MINANNOUNCEFREQUENCY": "Frequência mínima de anúncio (útil quando a posição do cliente muda com frequência)",
+      "PERIODICANNOUNCEFREQUENCY": "Frequência de anúncios periódicos para o cliente",
+      "ANNOUNCEPOSITIONLIMIT": "Usado caso tenha definido o anúncio da posição do cliente como \"limit\" ou \"more\"",
+      "AFTERCALLWORKDURATION": "Duração da Pausa de Pós-Atendimento (ACW)",
+      "MEMBERDELAY": "Insere um atraso antes de conectar o cliente e o agente",
+      "MUSICONHOLD": "Define a música de espera a ser usado para uma fila específica",
+      "ANNOUNCETOAGENT": "Reproduz um anúncio para o agente ao atender a chamada (por exemplo, para que o agente saiba de qual fila a ligaçao pertence)",
       "RANDOMPERIODICANNOUNCE": "Se sim, reproduz os anúncios periódicos em ordem aleatória",
-      "ANNOUNCEHOLDTIME": "Reproduz o tempo de espera estimado junto com os anúncios periódicos (Sim / Não / Uma vez)",
-      "ANNOUNCECALLERPOSITION": "Usado para definir se a posição do chamador na fila deve ser anunciada: No = never; Sim = sempre; Limite = somente se estiver dentro do limite definido pelo limite de posição de anúncio; Mais = apenas se estiver além do valor definido pelo limite de posição de anúncio",
-      "REPORTHOLDTIMEAGENT": "Permite que o tempo de espera do chamador seja informado ao agente na fila antes da conexão",
+      "ANNOUNCEHOLDTIME": "Reproduz o tempo de espera estimado junto com os anúncios periódicos (Yes/No/Once)",
+      "ANNOUNCECALLERPOSITION": "Usado para definir se a posição do cliente na fila deve ser anunciada: No=nunca; Yes=sempre; Limit=somente se estiver dentro do limite definido; More=apenas se estiver além do limite definido",
+      "REPORTHOLDTIMEAGENT": "Permite que o tempo de espera do cliente em fila seja informado ao agente antes da conexão",
       "PERIODICANNOUNCE": "Conjunto de anúncios periódicos a serem reproduzidos (na ordem)",
-      "HOLDTIMEANNOUNCE": "Escolha um som definido em ferramentas. Padrão = “Tempo de espera”. Indefinido = sem anúncio",
-      "YOUARENEXTANNOUNCE": "Escolha um som definido em ferramentas. Padrão = “Você agora é o primeiro da fila”. Indefinido = sem anúncio",
-      "THEREAREANNOUNCE": "Escolha um som definido em ferramentas. Padrão = “Existem”. Indefinido = sem anúncio",
-      "WAITINGCALLSANNOUNCE": "Escolha um som definido em ferramentas. Padrão = “chamadas em espera”. Indefinido = sem anúncio",
-      "ESTIMATEDHOLDTIMEANNOUNCE": "Escolha um som definido em ferramentas. Padrão = \"O tempo de espera estimado atual é\". Indefinido = sem anúncio",
-      "MINUTESANNOUNCE": "Escolha um som definido em ferramentas. Padrão = “minutos”. Indefinido = sem anúncio",
-      "MINUTEANNOUNCE": "Escolha um som definido em ferramentas. Padrão = “minuto”. Indefinido = sem anúncio",
-      "SECONDSANNOUNCE": "Escolha um som definido em ferramentas. Padrão = “segundos”. Indefinido = sem anúncio",
-      "THANKYOUANNOUNCE": "Escolha um som definido em ferramentas. Padrão = “Obrigado pela sua paciência”. Indefinido = sem anúncio",
-      "AFTERCALLWORK": "Se ativado, o agente será definido em Pausar após concluir uma chamada",
-      "AUTOPAUSE": "Ativa/desativa a pausa automática de agentes que não atendem uma chamada. Se ativado, faz com que o agente seja pausado em todas as filas às quais ele pertence",
-      "RINGINUSE": "Para evitar / permitir o envio de chamadas para membros cujo status é Em uso",
-      "TIMEOUTRESTART": "Se sim, isso redefine o tempo limite para um agente responder quando um status BUSY ou CONGESTION é recebido do canal",
-      "MONITORFORMAT": "Especifica o formato de arquivo a ser usado durante a gravação. Se o formato do monitor estiver inativo, as chamadas não serão gravadas",
-      "CONTEXT": "Permite que um chamador saia da fila pressionando um único dígito DTMF. Se um contexto for especificado e o chamador inserir um número, esse dígito tentará ser correspondido no contexto especificado e a execução da planta de discagem continuará lá.",
-      "SETINTERFACEVARIABLES": "Se configurado como yes, antes de o chamador ser conectado a um agente de fila, algumas variáveis \200b\200bserão configuradas (para obter mais informações, consulte a documentação do wiki: <a target = \"_blank \" href = \"https: //wiki.xcallymotion\"). com / display / XMV / Queue + Campanhas # QueueCampaigns-Advanced \"> clique aqui </a>)",
-      "SETQUEUEVARIABLES": "Se configurado como yes, antes de o chamador se conectar com um agente de fila e sair da fila, algumas variáveis \200b\200bserão configuradas (para obter mais informações, consulte docs do wiki: <a target=\"_blank\"href=\"https://wiki.xcallymotion.com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\">clique aqui </a>)",
-      "SETQUEUEENTRYVARIABLES": "Se definido como yes, logo antes de o chamador ser conectado a um agente de fila, algumas variáveis \200b\200bserão configuradas (para obter mais informações, consulte docs do wiki: <a target=\"_blank\"href=\"https://wiki.xcallymotion.com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\"> clique aqui </a>)",
-      "RECORDING": "Ativar gravação de chamadas",
-      "VOICEMAIL_CONTEXT": "O contexto da extensão relativa",
-      "METHOD": "Método discador de saída",
-      "POWERLEVEL": "Número de contatos para ligar para qualquer agente disponível",
-      "PREDICTIVEOPTIMIZATION": "Um fator para otimizar no algoritmo de previsão",
-      "PREDICTIVEOPTIMIZATIONPERCENTAGE": "Porcentagem com base no fator de otimização preditiva selecionado",
+      "HOLDTIMEANNOUNCE": "Escolha um áudio definido no módulo de Ferramentas. Padrão = “O tempo de esperá é”. Indefinido = sem anúncio",
+      "YOUARENEXTANNOUNCE": "Escolha um áudio definido no módulo de Ferramentas. Padrão = “Você agora é o primeiro da fila”. Indefinido = sem anúncio",
+      "THEREAREANNOUNCE": "Escolha um áudio definido no módulo de Ferramentas. Padrão = “Existem”. Indefinido = sem anúncio",
+      "WAITINGCALLSANNOUNCE": "Escolha um áudio definido no módulo de Ferramentas. Padrão = “chamadas em espera”. Indefinido = sem anúncio",
+      "ESTIMATEDHOLDTIMEANNOUNCE": "Escolha um áudio definido no módulo de Ferramentas. Padrão = \"O tempo estimado de espera atual é\". Indefinido = sem anúncio",
+      "MINUTESANNOUNCE": "Escolha um áudio definido no módulo de Ferramentas. Padrão = “minutos”. Indefinido = sem anúncio",
+      "MINUTEANNOUNCE": "Escolha um áudio definido no módulo de Ferramentas. Padrão = “minuto”. Indefinido = sem anúncio",
+      "SECONDSANNOUNCE": "Escolha um áudio definido no módulo de Ferramentas. Padrão = “segundos”. Indefinido = sem anúncio",
+      "THANKYOUANNOUNCE": "Escolha um áudio definido no módulo de Ferramentas. Padrão = “Obrigado pela sua paciência”. Indefinido = sem anúncio",
+      "AFTERCALLWORK": "Se habilitado, o agente será colocado em Pausa após concluir uma chamada",
+      "AUTOPAUSE": "Habilita/Desabilita a pausa automática de agentes que não atendem uma chamada. Se ativado, faz com que o agente seja pausado automaticamente em todas as filas às quais ele pertence",
+      "RINGINUSE": "Para blouqer/permitir o envio de chamadas para agentes cujo status é Ocupado",
+      "TIMEOUTRESTART": "Se sim, isso redefine o timeout para um agente atender quando um status OCUPADO ou CONGESTIONADO é recebido do canal",
+      "MONITORFORMAT": "Especifica o formato de arquivo a ser usado durante a gravação. Se o formato do monitor estiver desativado, as chamadas não serão gravadas",
+      "CONTEXT": "Permite que o cliente saia da fila pressionando um único dígito DTMF. Se um contexto for especificado e o cliente inserir um número, esse dígito tentará ser correspondido no contexto especificado e a execução do plano de discagem continuará lá.",
+      "SETINTERFACEVARIABLES": "Se configurado como sim, antes de o cliente ser conectado a um agente, algumas variáveis \200b\200bserão configuradas (para obter mais informações, consulte a documentação do wiki: <a target = \"_blank \" href = \"https: //wiki.xcallymotion\"). com / display / XMV / Queue + Campanhas # QueueCampaigns-Advanced \"> clique aqui </a>)",
+      "SETQUEUEVARIABLES": "Se configurado como sim, antes de o cliente se conectar com um agente e deixar a fila, algumas variáveis \200b\200bserão configuradas (para obter mais informações, consulte docs do wiki: <a target=\"_blank\"href=\"https://wiki.xcallymotion.com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\">clique aqui </a>)",
+      "SETQUEUEENTRYVARIABLES": "Se definido como sim, antes de o cliente ser conectado a um agente, algumas variáveis \200b\200bserão configuradas (para obter mais informações, consulte docs do wiki: <a target=\"_blank\"href=\"https://wiki.xcallymotion.com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\"> clique aqui </a>)",
+      "RECORDING": "Habilitar gravação de chamadas",
+      "VOICEMAIL_CONTEXT": "O contexto da extensão",
+      "METHOD": "Método de discagem automática",
+      "POWERLEVEL": "Número de contatos simultâneos a discar por agente disponível",
+      "PREDICTIVEOPTIMIZATION": "Fator para otimizar no algoritmo de previsão",
+      "PREDICTIVEOPTIMIZATIONPERCENTAGE": "Porcentagem baseado no fator selecionado de otimização preditiva",
       "PREDICTIVEINTERVAL": "Intervalo de tempo (em minutos) considerado pelo algoritmo de previsão para calcular a quantidade de chamadas a serem geradas para otimizar o resultado",
-      "MAXCONCURRENTCALLS": "Número máximo de chamadas simultâneas que serão originadas pelo discador de saída para esta campanha (0 = ilimitado)",
-      "CONCURRENTCALLS": "Número máximo de chamadas simultâneas que serão originadas pelo discador de saída desta campanha",
-      "ORIGINATECALLERIDNAME": "Nome do ID do chamador de saída",
-      "ORIGINATECALLERIDNUMBER": "Número de identificação do chamador de saída",
-      "ORIGINATETIMEOUT": "Tempo (em segundos) para a chamada de saída estabelecer uma conexão, caso contrário, o status será definido como Sem resposta",
+      "MAXCONCURRENTCALLS": "Número máximo de chamadas simultâneas que serão originadas pelo discador para esta campanha (0 = ilimitado)",
+      "CONCURRENTCALLS": "Número máximo de chamadas simultâneas que serão originadas pelo discador nesta campanha",
+      "ORIGINATECALLERIDNAME": "Caller ID Name para Ligações Saíntes",
+      "ORIGINATECALLERIDNUMBER": "Caller ID Number para Ligações Saíntes",
+      "ORIGINATETIMEOUT": "Tempo (em segundos) para a discador estabelecer uma conexão, caso contrário, o status será definido como não atendido [Tempo de Ring]",
       "QUEUETIMEOUT": "Tempo (em segundos) que uma chamada aguardará na fila antes de ser descartada (Min 1 e Max 999)",
-      "GLOBALMAXRETRY": "Número máximo de vezes que um contato é chamado antes de considerá-lo fechado",
-      "CONGESTIONMAXRETRY": "Número máximo de vezes que um contato é chamado antes de considerá-lo fechado, quando a chamada falhou para congestionamento",
+      "GLOBALMAXRETRY": "Número máximo de vezes que um contato é chamado antes de considerá-lo encerrado",
+      "CONGESTIONMAXRETRY": "Número máximo de vezes que um contato é chamado antes de considerá-lo encerrado (quando a chamada não completar por congestionamento)",
       "CONGESTIONRETRYTIME": "Tempo em minutos antes de tentar ligar novamente para um contato com falha devido a congestionamento",
-      "BUSYMAXRETRY": "Número máximo de vezes que um contato é chamado antes de considerá-lo fechado, quando a chamada falhou para ocupado",
-      "BUSYRETRYTIME": "Tempo em minutos antes de tentar ligar novamente para um contato com falha devido à ocupação",
-      "NOANSWERMAXRETRY": "Número máximo de vezes que um contato é chamado antes de considerá-lo encerrado, quando a chamada falha por falta de resposta",
-      "NOANSWERRETRYTIME": "Tempo em minutos antes de tentar ligar novamente para um contato com falha devido à falta de resposta",
-      "GLOBALINTERVAL": "Intervalo de tempo global durante o qual o discador pode chamar contatos. Nós recusamos a responsabilidade: prestar atenção quando você modificar este campo, porque você pode deixar de cumprir as Leis e Regulamentos nacionais do Autodialer.",
+      "BUSYMAXRETRY": "Número máximo de vezes que um contato é chamado antes de considerá-lo encerrado (quando a chamada não completa por ocupado)",
+      "BUSYRETRYTIME": "Tempo em minutos antes de tentar ligar novamente para um contato com falha devido à ocupado",
+      "NOANSWERMAXRETRY": "Número máximo de vezes que um contato é chamado antes de considerá-lo encerrado (quando a chamada não completa por não atendimento)",
+      "NOANSWERRETRYTIME": "Tempo em minutos antes de tentar ligar novamente para um contato com falha devido ao não atendimento",
+      "GLOBALINTERVAL": "Intervalo de tempo global permitido para discagem. ATENÇÃO: cuidado quando você modificar este campo, porque você pode descumprir Leis e Regulamentações nacionais.",
       "NAME": "Somente números, letras e caracteres específicos (._) são suportados",
-      "MANDATORYDISPOSITIONPAUSEID": "Pausar status para definir durante a disposição obrigatória",
-      "PREDICTIVEMAXTHRESHOLD": "Se a porcentagem de agentes disponíveis na janela de tempo, comparada com os agentes disponíveis no momento da previsão, exceder o limite máximo configurado, a previsão recalcula a previsão.",
-      "PREDICTIVEMINTHRESHOLD": "Se a porcentagem de agentes disponíveis na janela de tempo, comparada com os agentes disponíveis no momento da previsão, exceder o limite mínimo configurado, a previsão recalcula a previsão.",
-      "ABANDONEDMAXRETRY": "Número máximo de vezes que um contato é chamado antes de considerá-lo fechado, quando a chamada falha por abandono",
-      "ABANDONEDRETRYTIME": "Tempo em minutos antes de tentar ligar novamente para um contato com falha devido ao abandono",
-      "AGENTREJECTMAXRETRY": "Número máximo de vezes que um contato é chamado antes de considerá-lo fechado, quando a chamada falha por rejeição do agente",
-      "AGENTREJECTRETRYTIME": "Tempo em minutos antes de tentar chamar novamente um contato com falha devido à rejeição do agente",
-      "DROPMAXRETRY": "Número máximo de vezes que um contato é chamado antes de considerá-lo fechado, quando a chamada falha por queda",
-      "DROPRETRYTIME": "Tempo em minutos antes de tentar ligar novamente para um contato com falha devido à queda",
-      "MACHINEMAXRETRY": "Número máximo de vezes que um contato é chamado antes de considerá-lo fechado, quando a chamada falha na máquina",
-      "MACHINERETRYTIME": "Tempo em minutos antes de tentar chamar novamente um contato com falha devido à máquina",
-      "NOSUCHNUMBERETRYTIME": "Tempo em minutos antes de tentar ligar novamente para um contato com falha devido a esse número",
-      "NOSUCHNUMBERMAXRETRY": "Número máximo de vezes que um contato é chamado antes de considerá-lo fechado, quando a chamada falhou para esse número",
-      "NOSUCHNUMBERRETRYTIME": "Tempo em minutos antes de tentar ligar novamente para um contato que falhou devido à inexistência desse número",
-      "PREVIEW_AUTO_RECALL_ME": "Se ativado, o sistema irá gerar automaticamente as chamadas Recall Me; caso contrário, o agente deve fazer isso manualmente",
-      "PREVIEW_RECALL_ME_REMINDER": "Se habilitado, o sistema enviará uma notificação ao agente n minutos (de acordo com o intervalo de tempo definido nas configurações gerais) antes de gerar o recall me",
+      "MANDATORYDISPOSITIONPAUSEID": "Status de pausa durante a qualificação obrigatória",
+      "PREDICTIVEMAXTHRESHOLD": "Se a porcentagem de agentes disponíveis em uma janela de tempo, comparada com agentes disponíveis no intervalo de previsão, exceder o limite máximo configurado, a algoritmo recalculará a previsão.",
+      "PREDICTIVEMINTHRESHOLD": "Se a porcentagem de agentes disponíveis em uma janela de tempo, comparada com agentes disponíveis no intervalo de previsão, exceder o limite mínimo configurado, a algoritmo recalculará a previsão.",
+      "ABANDONEDMAXRETRY": "Número máximo de vezes que um contato é chamado antes de considerá-lo encerrado (quando a chamada não completa por abandono)",
+      "ABANDONEDRETRYTIME": "Tempo em minutos antes de tentar ligar novamente para um contato com falha devido a abandono",
+      "AGENTREJECTMAXRETRY": "Número máximo de vezes que um contato é chamado antes de considerá-lo encerrado (quando a chamada não completa por rejeição do agente)",
+      "AGENTREJECTRETRYTIME": "Tempo em minutos antes de tentar ligar novamente para um contato com falha devido à rejeição do agente",
+      "DROPMAXRETRY": "Número máximo de vezes que um contato é chamado antes de considerá-lo encerrado (quando a chamada não completa por descarte)",
+      "DROPRETRYTIME": "Tempo em minutos antes de tentar ligar novamente para um contato com falha devido à descarte",
+      "MACHINEMAXRETRY": "Número máximo de vezes que um contato é chamado antes de considerá-lo encerrado (quando a chamada não completa por mensagem da operadora)",
+      "MACHINERETRYTIME": "Tempo em minutos antes de tentar chamar novamente um contato com falha devido à mensagem da operadora",
+      "NOSUCHNUMBERETRYTIME": "Tempo em minutos antes de tentar ligar novamente para um contato com falha devido a número inválido",
+      "NOSUCHNUMBERMAXRETRY": "Número máximo de vezes que um contato é chamado antes de considerá-lo encerrado (quando a chamada não completa por número inválido)",
+      "NOSUCHNUMBERRETRYTIME": "Tempo em minutos antes de tentar ligar novamente para um contato que falhou devido à número inválido",
+      "PREVIEW_AUTO_RECALL_ME": "Se habilitado, o sistema ligará automaticamente para os Agendamentos; caso contrário, o agente deverá fazer isso manualmente",
+      "PREVIEW_RECALL_ME_REMINDER": "Se habilitado, o sistema enviará uma notificação ao agente n minutos (de acordo com o intervalo de tempo definido nas configurações gerais) antes de ligar para os Agendamentos",
       "TIMEZONE": "Especifique o fuso horário"
     },
-    "MUSICONHOLD": "Música em espera",
-    "ANNOUNCETOAGENT": "Anunciar ao agente",
+    "MUSICONHOLD": "Música de Espera",
+    "ANNOUNCETOAGENT": "Anunciar para Agente",
     "ANNOUNCEMENTS": "Anúncios",
     "ADVANCEDPREVIEW": "Avançado",
     "ADVANCED": "Avançado",
     "ADVANCE": "Avançado",
-    "ANNOUNCEFREQUENCY": "Anunciar Freqüência",
+    "ANNOUNCEFREQUENCY": "Frequência do Anúncio",
     "MINANNOUNCEFREQUENCY": "Frequência mínima de anúncio",
-    "PERIODICANNOUNCEFREQUENCY": "Periodicidade periódica de anúncio",
-    "RANDOMPERIODICANNOUNCE": "Anúncio periódico aleatório",
-    "ANNOUNCEHOLDTIME": "Anunciar tempo de espera",
-    "ANNOUNCECALLERPOSITION": "Anunciar a posição do chamador",
-    "ANNOUNCEPOSITIONLIMIT": "Anunciar limite de posição",
-    "REPORTHOLDTIMEAGENT": "Tempo de espera do agente de relatório",
-    "PERIODICANNOUNCE": "Anúncio periódico",
-    "HOLDTIMEANNOUNCE": "Anúncio no tempo de espera",
-    "YOUARENEXTANNOUNCE": "'Você é o próximo' Anunciar",
-    "THEREAREANNOUNCE": "'Existem' Anuncio",
-    "WAITINGCALLSANNOUNCE": "Chamadas em Espera Anuncio",
-    "ESTIMATEDHOLDTIMEANNOUNCE": "Anuncio estimado em tempo de espera",
-    "MINUTESANNOUNCE": "Anuncio Minutos",
-    "MINUTEANNOUNCE": "Anuncio Minuto",
-    "SECONDSANNOUNCE": "Anuncio Segundos",
-    "THANKYOUANNOUNCE": "Anuncio 'Obrigado'",
+    "PERIODICANNOUNCEFREQUENCY": "Periodicidade do Anúncio Periódico",
+    "RANDOMPERIODICANNOUNCE": "Anúncio Periódico Aleatório",
+    "ANNOUNCEHOLDTIME": "Anunciar Tempo de Espera",
+    "ANNOUNCECALLERPOSITION": "Anunciar a Posição do Cliente",
+    "ANNOUNCEPOSITIONLIMIT": "Anunciar atingimento Limite de Posição",
+    "REPORTHOLDTIMEAGENT": "Relatório de Tempo de Espera do Agente",
+    "PERIODICANNOUNCE": "Anúncio Periódico",
+    "HOLDTIMEANNOUNCE": "Anúncio de Tempo de Espera",
+    "YOUARENEXTANNOUNCE": "Anúncio 'Você é o próximo'",
+    "THEREAREANNOUNCE": "Anúncio 'Existem'",
+    "WAITINGCALLSANNOUNCE": "Anúncio de Chamadas em Espera",
+    "ESTIMATEDHOLDTIMEANNOUNCE": "Anúncio estimado em tempo de espera",
+    "MINUTESANNOUNCE": "Anúncio Minutos",
+    "MINUTEANNOUNCE": "Anúncio Minuto",
+    "SECONDSANNOUNCE": "Anúncio Segundos",
+    "THANKYOUANNOUNCE": "Anúncio 'Obrigado'",
     "AUTOPAUSE": "Pausa Automática",
-    "AFTERCALLWORK": "Tempo após chamada",
-    "AFTERCALLWORKDURATION": "Duração do Tempo após chamada",
-    "RINGINUSE": "Toque em uso",
-    "MEMBERDELAY": "Atraso de Membro",
-    "TIMEOUTRESTART": "Tempo esgotado Reiniciar",
-    "MONITORFORMAT": "Formato de gravação",
-    "SETINTERFACEVARIABLES": "Definir variáveis \200b\200bde interface",
-    "SETQUEUEVARIABLES": "Definir as variáveis \200b\200bda fila",
-    "SETQUEUEENTRYVARIABLES": "Definir as Variáveis \200b\200bde Entrada da Fila",
+    "AFTERCALLWORK": "Pós-Atendimento (ACW)",
+    "AFTERCALLWORKDURATION": "Duração do Pós-Atendimento",
+    "RINGINUSE": "Toque quando Ocupado",
+    "MEMBERDELAY": "Delay ao Conectar",
+    "TIMEOUTRESTART": "Restart Timeout",
+    "MONITORFORMAT": "Formato de Gravação",
+    "SETINTERFACEVARIABLES": "Definir Variáveis \200b\200bde Interface",
+    "SETQUEUEVARIABLES": "Definir as Variáveis \200b\200bde Fila",
+    "SETQUEUEENTRYVARIABLES": "Definir as Variáveis \200b\200bde Fila",
     "CONTEXT": "Contexto",
     "SAVE": "Salvar",
-    "SETTINGS": "Definições",
-    "INBOUNDROUTES": "Rotas de entrada",
-    "PHONENUMBER": "Número de telefone",
-    "ADD_INBOUNDROUTE": "Adicionar rota de entrada",
-    "EDIT_INBOUNDROUTE": "Editar rota de entrada",
-    "DELETE_INBOUNDROUTE": "Excluir rota de entrada",
+    "SETTINGS": "Configurações",
+    "INBOUNDROUTES": "Rotas de Entrada",
+    "PHONENUMBER": "Número do Telefone",
+    "ADD_INBOUNDROUTE": "Adicionar Rota de Entrada",
+    "EDIT_INBOUNDROUTE": "Editar Rota de Entrada",
+    "DELETE_INBOUNDROUTE": "Excluir Rota de Entrada",
     "ACTIONS": "Ações",
-    "OUTBOUNDROUTES": "Rotas de saída",
-    "DESTINATIONPATTERN": "Padrão de destino",
-    "ADD_OUTBOUNDROUTE": "Adicionar rota de saída",
-    "EDIT_OUTBOUNDROUTE": "Editar rota de saída",
-    "DELETE_OUTBOUNDROUTE": "Excluir rota de saída",
-    "CUTDIGITS": "Cut Digits",
+    "OUTBOUNDROUTES": "Rotas de Saída",
+    "DESTINATIONPATTERN": "Padrão de Destino",
+    "ADD_OUTBOUNDROUTE": "Adicionar Rota de Saída",
+    "EDIT_OUTBOUNDROUTE": "Editar Rota de Saída",
+    "DELETE_OUTBOUNDROUTE": "Excluir Rota de Saída",
+    "CUTDIGITS": "Cortar Dígitos",
     "RECORDING": "Gravação",
     "RECORDINGFORMAT": "Formato de gravação",
     "INTERNALROUTES": "Rotas Internas",
-    "ADD_INTERNALROUTE": "Adicionar rota interna",
-    "EDIT_INTERNALROUTE": "Editar rota interna",
-    "DELETE_INTERNALROUTE": "Excluir rota interna",
+    "ADD_INTERNALROUTE": "Adicionar Rota Interna",
+    "EDIT_INTERNALROUTE": "Editar Rota Interna",
+    "DELETE_INTERNALROUTE": "Excluir Rota Interna",
     "CONTEXTS": "Contextos",
     "ADD_CONTEXT": "Adicionar Contexto",
     "EDIT_CONTEXT": "Editar Contexto",
     "DELETE_CONTEXT": "Excluir Contexto",
-    "VOICEMAILS": "Correios de voz",
-    "ADD_VOICEMAIL": "Adicionar Correios de voz",
-    "EDIT_VOICEMAIL": "Editar Correios de voz",
-    "DELETE_VOICEMAIL": "Excluir Correios de voz",
+    "VOICEMAILS": "Correios de Voz",
+    "ADD_VOICEMAIL": "Adicionar Correio de Voz",
+    "EDIT_VOICEMAIL": "Editar Correio de Voz",
+    "DELETE_VOICEMAIL": "Excluir Correio de Voz",
     "FULLNAME": "Nome Completo",
     "EMAIL": "Email",
-    "MAILBOX": "Caixa de correio",
+    "MAILBOX": "Caixa de Entrada",
     "PASSWORD": "Senha",
     "CONFIRM_PASSWORD": "Confirmar Senha",
-    "TIMEZONE": "Fuso horário",
+    "TIMEZONE": "Fuso Horário",
     "ATTACH": "Anexo",
     "ENVELOPE": "Envelope",
     "DELETE": "Excluir",
     "EMAILBODY": "Corpo do Email",
-    "EMAILSUBJECT": "Assunto do email",
-    "MAXSECONDS": "Max Segundos",
-    "MAXMESSAGES": "Max Mensagens",
+    "EMAILSUBJECT": "Assunto do Email",
+    "MAXSECONDS": "Segundos máximos",
+    "MAXMESSAGES": "Mensagens máximas",
     "MESSAGES": "Mensagens",
     "SORT": "Ordenar",
-    "ADD_MUSICONHOLD": "Adicionar música em espera",
-    "MUSICONHOLDS": "Música em espera",
-    "EDIT_MUSICONHOLD": "Editar música em espera",
-    "DELETE_MUSICONHOLD": "Excluir música em espera",
+    "ADD_MUSICONHOLD": "Adicionar Música de Espera",
+    "MUSICONHOLDS": "Música de Espera",
+    "EDIT_MUSICONHOLD": "Editar Música de Espera",
+    "DELETE_MUSICONHOLD": "Excluir Música de Espera",
     "DIRECTORY": "Diretório",
-    "AUDIOFILES": "Arquivos de áudio",
+    "AUDIOFILES": "Arquivos de Áudio",
     "RECORDINGS": "Gravações",
-    "CHANSPY": "Espião",
+    "CHANSPY": "Intercalação",
     "PREFIX": "Prefixo",
     "OPTIONS": "Opções",
     "AUTH": "Auth",
-    "ADD_CHANSPY": "Adicionar Espião",
-    "EDIT_CHANSPY": "Editar Espião",
-    "DELETE_CHANSPY": "Excluir Espião",
+    "ADD_CHANSPY": "Adicionar Intercalação",
+    "EDIT_CHANSPY": "Editar Intercalação",
+    "DELETE_CHANSPY": "Excluir Intercalação",
     "AGENTS": "Agentes",
     "TELEPHONES": "Telefones",
     "QUEUES": "Filas",
     "QUEUE_CALLS": "Filas de Chamada",
-    "QUEUE_PARAMETERS": "Parametros da Fila",
+    "QUEUE_PARAMETERS": "Parâmetros da Fila",
     "ABANDONED_CALLS": "Chamadas Abandonadas",
     "OUTBOUND_CALLS": "Chamadas de Saída",
     "AGI": "AGI",
     "DIAL": "Discar",
-    "INTERNALDIAL": "Discar Interno",
-    "EXTERNALDIAL": "Discar Externo",
-    "RINGGROUP": "Toque de Grupo",
+    "INTERNALDIAL": "Discagem Interna",
+    "EXTERNALDIAL": "Discagem Externa",
+    "RINGGROUP": "Grupo de Toque",
     "PLAYBACK": "Reprodução",
     "QUEUE": "Fila",
-    "SET": "Set",
-    "VOICEMAIL": "Correio de voz",
+    "SET": "Definir",
+    "VOICEMAIL": "Correio de Voz",
     "GOTO": "GoTo",
     "HANGUP": "Desligar",
-    "CUSTOM": "Personalizadas",
+    "CUSTOM": "Custom",
     "PROJECT": "Projeto Cally-Square",
     "TECHNOLOGY/RESOURCE": "Tecnologia/Recurso",
     "URL": "URL",
-    "EDIT_APP": "Editar aplicativo",
-    "EDIT_INTERVAL": "Editar intervalo",
-    "DELETE_APP": "Excluir aplicativo",
+    "EDIT_APP": "Editar Aplicativo",
+    "EDIT_INTERVAL": "Editar Intervalo",
+    "DELETE_APP": "Excluir Aplicativo",
     "INTERVALS": "Intervalos",
     "USER": "Usuário",
     "TRUNK": "Tronco",
     "PHONE": "Telefone",
-    "AUDIO_FILES": "Arquivos de áudio",
-    "ANNOUNCE_OVERRIDES": "Substituir Anuncio",
+    "AUDIO_FILES": "Arquivos de Áudio",
+    "ANNOUNCE_OVERRIDES": "Substituir Anúncio",
     "MACRO": "Macro",
     "GOSUB": "GoSub",
     "RULE": "Regra",
     "POSITION": "Posição",
-    "ANSWER": "Responda",
+    "ANSWER": "Atendida",
     "VALUE": "Valor",
     "MAILBOX@CONTEXT": "Mailbox@Context",
     "EXTENSION": "Extensão",
     "PRIORITY": "Prioridade",
-    "HANGUP_CAUSE": "Questão Hangup",
-    "OUTBOUNDDIAL": "Discagem de saída",
-    "CALLER_ID": "Identificador de chamadas",
+    "HANGUP_CAUSE": "Causas de Desligamento",
+    "OUTBOUNDDIAL": "Discagem de Saída",
+    "CALLER_ID": "Caller ID",
     "NO_MESSAGE_AVAILABLE": "Nenhuma mensagem disponível",
-    "NO_SOUND_AVAILABLE": "Nenhum som disponível",
-    "VOICERECORDINGS": "Gravações de voz",
-    "CHANSPIES": "Espião",
+    "NO_SOUND_AVAILABLE": "Nenhum áudio disponível",
+    "VOICERECORDINGS": "Gravações de Voz",
+    "CHANSPIES": "Intercalaçã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",
+    "NO_MOHSOUND_AVAILABLE": "Não há música de espera disponível",
     "FILE": "Arquivo",
-    "ADD_MOHSOUND": "Adicionar som de música em espera",
-    "DOWNLOAD_MOHSOUND": "Download musica de tempo de espera",
-    "DELETE_MOHSOUND": "Excluir som de música em espera",
+    "ADD_MOHSOUND": "Adicionar arquivo de Música de Espera",
+    "DOWNLOAD_MOHSOUND": "Download arquivo de Música em Espera",
+    "DELETE_MOHSOUND": "Excluir arquivo de Música de Espera",
     "UNIQUEID": "Unique ID",
     "AGENT": "Agente",
     "TYPE": "Tipo",
     "RATING": "Avaliação",
-    "AUDIO": "Audio",
+    "AUDIO": "Áudio",
     "DATE": "Data",
-    "NEW_VOICEQUEUE": "Nova fila de voz",
-    "NEW_INBOUNDROUTE": "Nova rota de saída",
-    "NEW_OUTBOUNDROUTE": "Nova rota de saída",
-    "NEW_INTERNALROUTE": "Nova rota interna",
-    "NEW_CONTEXT": "Novo contexto",
-    "NEW_VOICEMAIL": "Nova mensagem de voz",
-    "NEW_MUSICONHOLD": "Nova música em espera",
-    "NEW_CHANSPY": "Novo Espião",
+    "NEW_VOICEQUEUE": "Nova Fila de Voz",
+    "NEW_INBOUNDROUTE": "Nova Rota de Entrada",
+    "NEW_OUTBOUNDROUTE": "Nova Rota de Saída",
+    "NEW_INTERNALROUTE": "Nova Rota Interna",
+    "NEW_CONTEXT": "Novo Contexto",
+    "NEW_VOICEMAIL": "Novo Correio de Voz",
+    "NEW_MUSICONHOLD": "Nova Música de Espera",
+    "NEW_CHANSPY": "Nova Intercalação",
     "PENALTY": "Penalidade",
-    "ADD_TEAM_TO_VOICEQUEUE": "Adicionar equipe à fila de voz",
-    "ADD_AGENT_TO_VOICEQUEUE": "Adicionar agente à fila de voz",
-    "EDIT_DIAL": "Editar discagem",
+    "ADD_TEAM_TO_VOICEQUEUE": "Adicionar Equipe à Fila de Voz",
+    "ADD_AGENT_TO_VOICEQUEUE": "Adicionar Agente à Fila de Voz",
+    "EDIT_DIAL": "Editar Discagem",
     "EDIT_AGI": "Editar AGI",
-    "EDIT_INTERNALDIAL": "Editar discagem interna",
-    "EDIT_EXTERNALDIAL": "Editar discagem externa",
-    "EDIT_RINGGROUP": "Editar grupo de toques",
-    "EDIT_PLAYBACK": "Editar reprodução",
-    "EDIT_QUEUE": "Editar fila",
-    "EDIT_SET": "Editar conjunto",
+    "EDIT_INTERNALDIAL": "Editar Discagem Interna",
+    "EDIT_EXTERNALDIAL": "Editar Discagem Externa",
+    "EDIT_RINGGROUP": "Editar Grupo de Toque",
+    "EDIT_PLAYBACK": "Editar Reprodução",
+    "EDIT_QUEUE": "Editar Fila",
+    "EDIT_SET": "Editar Conjunto",
     "EDIT_GOTO": "Editar GoTo",
     "EDIT_HANGUP": "Editar Desligar",
-    "EDIT_CUSTOM": "Editar Personalizar",
+    "EDIT_CUSTOM": "Editar Custom",
     "DURATION": "Duração",
     "RECEIVED_AT": "Recebido em",
     "YES": "Sim",
     "NO": "Não",
-    "HANGUPCAUSE_1": "1 = Número não alocado",
-    "HANGUPCAUSE_16": "16 = Limpeza de chamada normal",
-    "HANGUPCAUSE_17": "17 = Ocupado pelo usuário",
-    "HANGUPCAUSE_18": "18 = Nenhuma resposta do usuário (dispositivo teleônico não conectado)",
-    "HANGUPCAUSE_21": "21 = Chamada rejeitada",
-    "HANGUPCAUSE_22": "22 = Número alterado",
-    "HANGUPCAUSE_27": "27 = Destino fora de ordem",
-    "HANGUPCAUSE_38": "38 = Rede fora de ordem",
-    "HANGUPCAUSE_41": "41 = Falha temporária",
+    "HANGUPCAUSE_1": "1 = Unallocated number",
+    "HANGUPCAUSE_16": "16 = Normal call clearing",
+    "HANGUPCAUSE_17": "17 = User busy",
+    "HANGUPCAUSE_18": "18 = No user responding (telehone device not connected)",
+    "HANGUPCAUSE_21": "21 = Call rejected",
+    "HANGUPCAUSE_22": "22 = Number changed",
+    "HANGUPCAUSE_27": "27 = Destination out of order",
+    "HANGUPCAUSE_38": "38 = Network out of order",
+    "HANGUPCAUSE_41": "41 = Temporary failure",
     "RANDOM": "Aleatória",
     "ALPHABETICAL": "Alfabético",
     "NO_APPS_AVAILABLE": "Não há aplicativos disponíveis",
-    "DOWNLOAD_VOICERECORDING": "Baixar Gravação de Voz",
-    "DELETE_VOICERECORDING": "Excluir gravação de voz",
+    "DOWNLOAD_VOICERECORDING": "Downlaod de Gravação de Voz",
+    "DELETE_VOICERECORDING": "Excluir Gravação de Voz",
     "INTERNAL": "Interno",
     "PHONE_STATE": "Estado do Telefone",
     "PHONE_STATUS": "Status do Telefone",
     "REACHABLE": "Alcançável",
     "UNREACHABLE": "Inacessível",
     "UNKNOWN": "Desconhecido",
-    "NOT_INUSE": "Fora de uso",
-    "INUSE": "Em uso",
+    "NOT_INUSE": "Disponível ",
+    "INUSE": "Ocupado",
     "BUSY": "Ocupado",
-    "INVALID": "Invalido",
+    "INVALID": "Inválido",
     "UNAVAILABLE": "Indisponível",
     "RINGING": "Tocando",
-    "ONHOLD": "Em espera",
+    "ONHOLD": "Em Espera",
     "RING": "Toque",
     "UP": "Up",
-    "INFO": "Informação",
+    "INFO": "Info",
     "TRUNKS": "Troncos",
     "REGISTRY": "Registro",
     "NO_REGISTRY": "Sem registro",
     "LOGGED_IN": "Conectado (SIP conectado)",
     "PAUSED": "Pausado",
-    "DISPOSITION": "Disposição",
+    "DISPOSITION": "Qualificação",
     "WAITING": "Esperando",
     "TALKING": "Falando",
     "DID": "DID",
-    "CALLER": "Chamador",
+    "CALLER": "Origem",
     "TOTAL": "Total",
-    "ANSWERED": "Respondidas",
-    "ABANDONED": "Abandonados",
-    "UNMANAGED": "Não gerenciado",
+    "ANSWERED": "Atendidas",
+    "ABANDONED": "Abandonadas",
+    "UNMANAGED": "Não Gerenciado",
     "REDIRECT_TO_NUMBER": "Redirecionar para um número",
     "REDIRECT_TO_AGENT": "Redirecionar para um agente",
-    "CLOSING": "Fechamento",
-    "AVG_HOLD_TIME": "Tempo médio de espera",
-    "AVG_DURATION": "Duração média",
+    "CLOSING": "Encerramento",
+    "AVG_HOLD_TIME": "Tempo Médio de Espera",
+    "AVG_DURATION": "Duração Média",
     "AVG_BILLABLE": "Média faturável",
     "SOURCE": "Fonte",
     "DESTINATION": "Destino",
     "REJECTED": "Rejeitado",
     "FAILED": "Falhou",
-    "CALLED": "Chamado",
+    "CALLED": "Destino",
     "CONNECTED": "Conectado",
     "NO_RATING": "Sem avaliação",
-    "EDIT_VOICERECORDING": "Editar gravação de voz",
+    "EDIT_VOICERECORDING": "Editar Gravação de Voz",
     "APPLICATION_NAME": "Nome da Aplicação",
     "ARGUMENTS": "Argumentos",
-    "EDIT_QUEUECAMPAIGN": "Editar campanha",
-    "LISTADD_QUEUECAMPAIGN": "Adicionar lista",
-    "BLACKLISTADD_QUEUECAMPAIGN": "Adicionar lista negra",
-    "TEAMADD_QUEUECAMPAIGN": "Adicionar equipe",
-    "AGENTADD_QUEUECAMPAIGN": "Adicionar agente",
-    "DELETE_QUEUECAMPAIGN": "Excluir campanha",
-    "DELETE_IVRCAMPAIGN": "Excluir campanha",
-    "EDIT_IVRCAMPAIGN": "Editar campanha",
-    "NEW_IVRCAMPAIGN": "Nova campanha de URA",
-    "ADD_IVRCAMPAIGN": "Adicionar Campanha URA",
+    "EDIT_QUEUECAMPAIGN": "Editar Campanha de Discagem",
+    "LISTADD_QUEUECAMPAIGN": "Adicionar Lista",
+    "BLACKLISTADD_QUEUECAMPAIGN": "Adicionar Blacklist",
+    "TEAMADD_QUEUECAMPAIGN": "Adicionar Equipe",
+    "AGENTADD_QUEUECAMPAIGN": "Adicionar Agente",
+    "DELETE_QUEUECAMPAIGN": "Excluir Campanha de Discagem",
+    "DELETE_IVRCAMPAIGN": "Excluir Campanha",
+    "EDIT_IVRCAMPAIGN": "Editar Campanha",
+    "NEW_IVRCAMPAIGN": "Nova Campanha de URA",
+    "ADD_IVRCAMPAIGN": "Adicionar Campanha de URA",
     "LISTADD_IVRCAMPAIGN": "Adicionar Lista",
-    "BLACKLISTADD_IVRCAMPAIGN": "Adicionar lista negra",
+    "BLACKLISTADD_IVRCAMPAIGN": "Adicionar Blacklist",
     "ENABLED": "Ativado",
     "READY": "Pronto",
     "PAUSE": "Pausa",
     "UNPAUSE": "Finalizar Pausa",
     "DEFAULT_PAUSE": "Pausa Padrão",
-    "AGENTADD_QUEUE": "Adicionar agente à fila de campanha",
-    "AGENTSADD_QUEUE": "Adicionar agentes à fila de campanha",
-    "ALL_TEAMS": "Todas as equipes",
+    "AGENTADD_QUEUE": "Adicionar Agente à Campanha de Fila",
+    "AGENTSADD_QUEUE": "Adicionar Agentes à Fila de Campanha",
+    "ALL_TEAMS": "Todas as Equipes",
     "SELECTED_TEAMS": "Equipes Selecionadas",
-    "ALL_LISTS": "Todas as listas",
+    "ALL_LISTS": "Todas as Listas",
     "SELECTED_LISTS": "Listas Selecionadas",
-    "ALL_AGENTS": "Todos os agentes",
+    "ALL_AGENTS": "Todos os Agentes",
     "SELECTED_AGENTS": "Agentes Selecionados",
-    "WAITING_FOR_AGENT": "Esperando por agente",
-    "TOTAL_OFFERED": "Total oferecido",
-    "RUNNING": "Funcionamento",
-    "TRUNK_IS_NOT_REACHABLE": "Tronco não é acessível",
-    "AGENTS_NOT_LOGGED": "Agente não registrado",
-    "NOT_ACTIVE": "Não ativo",
+    "WAITING_FOR_AGENT": "Esperando por Agente",
+    "TOTAL_OFFERED": "Total Oferecido",
+    "RUNNING": "Executando",
+    "TRUNK_IS_NOT_REACHABLE": "Tronco está indisponível",
+    "AGENTS_NOT_LOGGED": "Nenhum agente logado",
+    "NOT_ACTIVE": "Inativo",
     "IS_DISACTIVED": "Desativado",
     "BACKUPTRUNK": "Tronco de Backup",
-    "GLOBALINTERVAL": "Intervalo global",
-    "RESCHEDULED_CONTACTS": "Contatos reprogramados",
-    "INTERVAL_IS_OVERTIME": "Fora do intervalo",
-    "GLOBAL_INTERVAL_IS_OVERTIME": "Fora do intervalo (global)",
-    "INTERVAL_IS_NULL": "O intervalo é nulo",
-    "TIMEZONE_UNKNOW": "Fuso Horário Desconhecido",
-    "INTERVAL_IS_EMPTY": "O intervalo está vazio",
-    "TOTAL_MANAGED": "Total gerenciado",
+    "GLOBALINTERVAL": "Intervalo Global",
+    "RESCHEDULED_CONTACTS": "Contatos reagdendados",
+    "INTERVAL_IS_OVERTIME": "Fora do Intervalo",
+    "GLOBAL_INTERVAL_IS_OVERTIME": "Fora do Intervalo (Global)",
+    "INTERVAL_IS_NULL": "Intervalo é Nulo",
+    "TIMEZONE_UNKNOW": "Fuso horário Desconhecido",
+    "INTERVAL_IS_EMPTY": "Intervalo está Vazio",
+    "TOTAL_MANAGED": "Total Gerenciado",
     "OPEN": "Abrir",
     "FRESH": "Recente",
-    "CLOSED": "Fechado",
+    "CLOSED": "Encerrado",
     "ALWAYS": "Sempre",
     "NEVER": "Nunca",
-    "ONLY_IF_OPEN": "Apenas se aberto",
-    "CHECKDUPLICATE": "Verificar duplicidade",
+    "ONLY_IF_OPEN": "Apenas se Aberto",
+    "CHECKDUPLICATE": "Verificar Duplicado",
     "PAGE": "Página",
-    "ROWSPERPAGE": "Linhas por Página",
+    "ROWSPERPAGE": "Linhas por página",
     "OF": "do ",
     "CHAT": "Chat",
     "MAIL": "Email",
     "SMS": "SMS",
     "OPENCHANNEL": "Open Channel",
     "FAX": "Fax",
-    "RECALLINQUEUE": "Lembre-se na fila",
-    "REFRESH_SCHEDULED_CALLS": "Atualizar chamadas agendadas",
-    "SCHEDULED_CALLS": "Chamadas agendadas",
+    "RECALLINQUEUE": "Agendamento global",
+    "REFRESH_SCHEDULED_CALLS": "Atualizar Chamadas Agendadas",
+    "SCHEDULED_CALLS": "Chamadas Agendadas",
     "SELECT_CAMPAIGN": "Selecione Campanha",
-    "SELECT_DATE": "Selecione a data",
-    "SELECT_TYPE": "Selecione o tipo",
-    "TEAMS_ASSOCIATION": "Associação de equipes",
-    "ANSWERING_MACHINE": "Secretária eletrônica",
-    "MANDATORYDISPOSITION": "Disposição obrigatória",
-    "MANDATORYDISPOSITIONPAUSEID": "Status de pausa de disposição obrigatória",
-    "ANSWERED_CALLS": "Chamadas atendidas",
+    "SELECT_DATE": "Selecione a Data",
+    "SELECT_TYPE": "Selecione o Tipo",
+    "TEAMS_ASSOCIATION": "Associação de Equipes",
+    "ANSWERING_MACHINE": "Mensagem da Operadora",
+    "MANDATORYDISPOSITION": "Qualificação obrigatória",
+    "MANDATORYDISPOSITIONPAUSEID": "Status de pausa para qualificação obrigatória",
+    "ANSWERED_CALLS": "Chamadas Atendidas",
     "AVG_TALK_TIME": "Tempo Médio de Conversação",
-    "CURRENT_INTERVAL": "Intervalo atual",
-    "DATA_COLLECTION_IN_PROGRESSIVE": "Coleta de dados em Progressive",
+    "CURRENT_INTERVAL": "Intervalo Atual",
+    "DATA_COLLECTION_IN_PROGRESSIVE": "Coleta de dados em Método Progressive",
     "ONE_CALL_EVERY": "Uma chamada a cada",
     "PREDICTIVEMAXTHRESHOLD": "Limite máximo preditivo [%]",
     "PREDICTIVEMINTHRESHOLD": "Limite mínimo preditivo [%]",
     "PREDICTIVE_IS_NOT_RUNNING": "Preditivo não está sendo executado",
-    "PREDICTIVE_IS_RUNNING": "O Predictive está em execução",
-    "PREVIOUS_INTERVAL": "Intervalo anterior",
-    "SHOW_PREDICTIVE_QUEUE_CAMPAIGN_INFO": "Mostrar informações preditivas",
-    "THRESHOLDS": "Limiares",
-    "TOTAL_CALLS": "Total de chamadas",
-    "ABANDONEDMAXRETRY": "Tentativas máximas",
-    "ABANDONEDRETRYTIME": "Tempo de Nova Tentativa [min]",
-    "AGENTREJECT": "Rejeição de agente",
-    "AGENTREJECTMAXRETRY": "Tentativas máximas",
-    "AGENTREJECTRETRYTIME": "Tempo de Nova Tentativa [min]",
-    "DROP": "Solta",
-    "DROPMAXRETRY": "Tentativas máximas",
-    "DROPRETRYTIME": "Tempo de Nova Tentativa [min]",
-    "MACHINE": "Máquina",
-    "MACHINEMAXRETRY": "Tentativas máximas",
-    "MACHINERETRYTIME": "Tempo de Nova Tentativa [min]",
-    "NOSUCHNUMBER": "Esse número não existe",
-    "NOSUCHNUMBERMAXRETRY": "Tentativas máximas",
-    "NOSUCHNUMBERRETRYTIME": "Tempo de Nova Tentativa [min]",
-    "TOOLTIP_SCREENRECORDING_OFF": "Gravação de tela disponível",
-    "TOOLTIP_SCREENRECORDING_ON": "Gravação de tela em andamento",
-    "SECOND_LEVEL_DISPOSITION": "Disposição de Segundo Nível",
-    "THIRD_LEVEL_DISPOSITION": "Disposição de terceiro nível",
+    "PREDICTIVE_IS_RUNNING": "Preditivo está em execução",
+    "PREVIOUS_INTERVAL": "Intervalo Anterior",
+    "SHOW_PREDICTIVE_QUEUE_CAMPAIGN_INFO": "Mostrar Informações Preditivas",
+    "THRESHOLDS": "Limites",
+    "TOTAL_CALLS": "Total de Chamadas",
+    "ABANDONEDMAXRETRY": "Máximo de Tentativas",
+    "ABANDONEDRETRYTIME": "Tempo para nova Tentativa [min]",
+    "AGENTREJECT": "Rejeição de Agente",
+    "AGENTREJECTMAXRETRY": "Máximo de Tentativas",
+    "AGENTREJECTRETRYTIME": "Tempo para nova Tentativa [min]",
+    "DROP": "Perdida",
+    "DROPMAXRETRY": "Máximo de Tentativas",
+    "DROPRETRYTIME": "Tempo para nova Tentativa [min]",
+    "MACHINE": "Mensagem da Operadora",
+    "MACHINEMAXRETRY": "Máximo de Tentativas",
+    "MACHINERETRYTIME": "Tempo de nova Tentativa [min]",
+    "NOSUCHNUMBER": "Número Inválido",
+    "NOSUCHNUMBERMAXRETRY": "Máximo de Tentativas",
+    "NOSUCHNUMBERRETRYTIME": "Tempo de nova Tentativa [min]",
+    "TOOLTIP_SCREENRECORDING_OFF": "Gravação de Tela disponível",
+    "TOOLTIP_SCREENRECORDING_ON": "Gravação de Tela em andamento",
+    "SECOND_LEVEL_DISPOSITION": "Qualificação de Segundo Nível",
+    "THIRD_LEVEL_DISPOSITION": "Qualificação de Terceiro Nível",
     "ADDITIONALPHONES": "Telefones adicionais",
-    "CALLADDITIONALPHONEAFTERMIN": "Ligue para outro telefone após [min]",
-    "PREVIEW_AUTO_RECALL_ME": "Automatizar Chamadas Recall Me",
-    "PREVIEW_RECALL_ME_REMINDER": "Lembrete para me lembrar"
+    "CALLADDITIONALPHONEAFTERMIN": "Ligue para próximo telefone após [min]",
+    "PREVIEW_AUTO_RECALL_ME": "Automatizar chamadas Agendadas",
+    "PREVIEW_RECALL_ME_REMINDER": "Lembrete de Agendamento"
   }
 }
index 2bbd864..7375d03 100644 (file)
     "REPLYURI": "Svara URLi",
     "RECEIVEURI": "Taka á móti URL",
     "HELP": {
-      "WELCOMEMESSAGE": "This is the first response message sent to new interactions.",
-      "TOKEN": "Add this property as query string in your Web Service URL. For more details see the doc <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/New+Channels+Configuration+Steps#NewChannelsConfigurationSteps-BuildyourownChannelservice\">here</a>",
-      "RECEIVEURI": "Auto-generated API string to be used in order to receive messages inside your open channel from the external application (using POST method). Click the clipboard button to copy it ",
-      "REPLYURI": "The URL the open channel will call when sending or replying to a message. For more details see the doc <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/New+Channels+Configuration+Steps#NewChannelsConfigurationSteps-BuildyourownChannelservice\">here</a>",
-      "NAME": "Only numbers, letters and specific characters (._) are supported",
-      "LIST": "Contact Manager List used to associate contacts",
-      "MANDATORYDISPOSITION": "Mandatory disposition",
-      "MANDATORYDISPOSITIONPAUSEID": "Pause to use if mandatory disposition is enabled"
+      "WELCOMEMESSAGE": "Þetta eru fyrstu svarskilaboðin sem send eru til nýrra samskipta. - This is the first response message sent to new interactions.",
+      "TOKEN": "Bættu þessari eign við sem fyrirspurnarstreng í vefslóð vefþjónustunnar þinnar. Fyrir frekari upplýsingar sjá skjalið <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/New+Channels+Configuration+Steps#NewChannelsConfigurationSteps-BuildyourownChannelservice\">hér</ a> \n- Add this property as query string in your Web Service URL. For more details see the doc <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/New+Channels+Configuration+Steps#NewChannelsConfigurationSteps-BuildyourownChannelservice\">here</a>",
+      "RECEIVEURI": "Sjálfvirk myndaður API strengur til að nota til að taka á móti skilaboðum inni á opinni rás þinni frá ytri forritinu (með POST aðferð). Smelltu á klemmuspjaldhnappinn til að afrita hann - Auto-generated API string to be used in order to receive messages inside your open channel from the external application (using POST method). Click the clipboard button to copy it ",
+      "REPLYURI": "Slóðin sem opna rásin kallar á þegar skilaboð eru send eða svarað. Fyrir frekari upplýsingar sjá skjalið <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/New+Channels+Configuration+Steps#NewChannelsConfigurationSteps-BuildyourownChannelservice\">hér</ a> - The URL the open channel will call when sending or replying to a message. For more details see the doc <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/New+Channels+Configuration+Steps#NewChannelsConfigurationSteps-BuildyourownChannelservice\">here</a>",
+      "NAME": "Aðeins tölur, stafir og sérstakir stafir (._) eru studdir - Only numbers, letters and specific characters (._) are supported",
+      "LIST": "Tengiliðalisti notaður til að tengja tengiliði - Contact Manager List used to associate contacts",
+      "MANDATORYDISPOSITION": "Skyldubundin ráðstöfun - Mandatory disposition",
+      "MANDATORYDISPOSITIONPAUSEID": "Gera hlé til að nota ef skyldubundin ráðstöfun er virkjuð - Pause to use if mandatory disposition is enabled"
     },
     "PAGE": "Blaðsíða",
     "ROWSPERPAGE": "Línur á síðu",
index e0aeed6..24f8e9c 100644 (file)
@@ -1,11 +1,11 @@
 {
   "OPENCHANNEL": {
-    "LOGIN_TIME": "Tempo de login",
+    "LOGIN_TIME": "Tempo de Login",
     "PAUSE_TIME": "Tempo de pausa",
     "DOWNLOAD_INTERACTION": "Download",
     "TRANSFER": "Transferir",
     "QUEUETRANSFER": "Transferência de Fila",
-    "QUEUETRANSFERTIMEOUT": "Tempo limite de Transferência de Fila",
+    "QUEUETRANSFERTIMEOUT": "Timeout de Transferência de Fila",
     "AGENTTRANSFER": "Transferência de Agente",
     "AGENTTRANSFERTIMEOUT": "Timeout Transferência Agente",
     "TAG": "Tag",
@@ -33,9 +33,9 @@
     "DELETE_OPENCHANNELCANNEDANSWER": "Excluir",
     "DELIVERYREPORTURL": "Delivery Report URL",
     "TAGS": "Tags",
-    "SPYINTERACTION": "Visualizar",
+    "SPYINTERACTION": "Espiar",
     "NO_AGENT_ONLINE": "Sem Agente Online",
-    "GOTOREALTIME_OPENCHANNELQUEUE": "Ir para Fila Open Channel em Tempo Real",
+    "GOTOREALTIME_OPENCHANNELQUEUE": "Visualizar Fila do Open Channel em Tempo Real",
     "PARTIALPAUSE": "Pausa Parcial",
     "BUSY": "Ocupado",
     "TIMER": "Timer",
     "EDIT_AUTOREPLY": "Editar Auto Resposta",
     "AUTOREPLY": "Auto Resposta",
     "NAME": "Nome",
-    "OPENCHANNELQUEUES": "Filas Open Channel",
+    "OPENCHANNELQUEUES": "Filas do Open Channel",
     "SEARCH_FOR_ANYONE": "Procurar",
     "ERRORS": {
       "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",
-      "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",
+      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Campo obrigatório",
       "AGENT_TIMEOUT_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",
-      "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 Oobrigató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",
+      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Campo obrigatório",
       "ACCESSKEYID_REQUIRED": "Access key ID é obrigatório",
       "BOTNAME_REQUIRED": "O nome do bot é obrigatório",
       "SECRETACCESSKEY_REQUIRED": "Access key secret é obrigatório",
-      "CLIENTEMAIL_REQUIRED": "Campo Obrigatório",
-      "PRIVATEKEY_REQUIRED": "Campo Obrigatório",
-      "PROJECTID_REQUIRED": "Campo Obrigatório"
+      "CLIENTEMAIL_REQUIRED": "Campo obrigatório",
+      "PRIVATEKEY_REQUIRED": "Campo obrigatório",
+      "PROJECTID_REQUIRED": "Campo obrigatório"
     },
     "STRATEGY": "Estratégia",
     "AGENT": "Agente",
     "EDIT_GOTOIF": "Editar Gotoif",
     "EDIT_QUEUE": "Editar Fila",
     "CONDITION": "Condição",
-    "TRUEPRIORITY": "Verdadeira Prioridade",
-    "FALSEPRIORITY": "Falsa Prioridade",
+    "TRUEPRIORITY": "ID de Prioridade caso Verdadeiro",
+    "FALSEPRIORITY": "ID de Prioridade caso Falso",
     "VALUE": "Valor",
     "PRIORITY": "Prioridade",
     "AGENT_TIMEOUT": "Timeout Agente",
     "DESCRIPTION": "Descrição",
-    "ADD_OPENCHANNELQUEUE": "Adicionar Fila Open Channel",
-    "EDIT_OPENCHANNELQUEUE": "Editar Fila Open Channel",
-    "DELETE_OPENCHANNELQUEUE": "Excluir Fila Open Channel",
+    "ADD_OPENCHANNELQUEUE": "Adicionar Fila do Open Channel",
+    "EDIT_OPENCHANNELQUEUE": "Editar Fila do Open Channel",
+    "DELETE_OPENCHANNELQUEUE": "Excluir Fila do Open Channel",
     "PENALTY": "Prioridade",
-    "TEAMADD_OPENCHANNELQUEUE": "Adicionar Equipe a Fila Open Channel",
-    "AGENTADD_OPENCHANNELQUEUE": "Adicionar Agente para Fila Open Channel",
+    "TEAMADD_OPENCHANNELQUEUE": "Adicionar Equipe a Fila do Open Channel",
+    "AGENTADD_OPENCHANNELQUEUE": "Adicionar Agente à Fila do Open Channel",
     "ALL_AGENTS": "Todos Agentes",
     "SELECTED_AGENTS": "Agentes Selecionados",
     "CREATED_AT": "Criado em",
     "SAVE": "Salvar",
     "SETTINGS": "Configurações",
     "GENERAL": "Geral",
-    "OPENCHANNELACCOUNTS": "Contas Open Channel",
+    "OPENCHANNELACCOUNTS": "Contas do Open Channel",
     "MOTIONADDRESS": "Endereço do XCally Motion",
     "ADD_OPENCHANNELACCOUNT": "Adicionar Conta Open Channel",
-    "EDIT_OPENCHANNELACCOUNT": "Editar Conta Open Channel",
-    "DELETE_OPENCHANNELACCOUNT": "Excluir conta Open Channel",
+    "EDIT_OPENCHANNELACCOUNT": "Editar Conta do Open Channel",
+    "DELETE_OPENCHANNELACCOUNT": "Excluir Conta do Open Channel",
     "API": "API",
     "DISPOSITIONS": "Qualificações",
     "WEBHOOKS": "WebHooks",
     "LIST": "Lista",
     "FIDELITY": "Fidelidade",
     "ACCEPT": "Aceitar",
-    "ACCEPTMETHOD": "Aceite o Método",
-    "ACCEPTURL": "Aceitar URL",
+    "ACCEPTMETHOD": "Método de Aceite",
+    "ACCEPTURL": "URL de Aceite",
     "REJECT": "Rejeitar",
-    "REJECTMETHOD": "Rejeitar Método",
-    "REJECTURL": "Rejeitar URL",
+    "REJECTMETHOD": "Método de Rejeição",
+    "REJECTURL": "URL de Rejeição",
     "CLOSE": "Encerrar",
-    "CLOSEMETHOD": "Método Encerramento",
-    "CLOSEURL": "Encerrar URL",
+    "CLOSEMETHOD": "Método de Encerramento",
+    "CLOSEURL": "URL de Encerramento",
     "SELECTED": "Selecionado",
     "SELECT_ALL": "Selecionar Todos",
     "SELECT_NONE": "Desselecionar Todos",
     "OPENCHANNEL": "Open Channel",
     "ID": "Id",
     "TIMEOUT": "Timeout",
-    "OPENCHANNELDISPOSITIONS": "Qualificações Open Channel",
-    "NO_OPENCHANNELDISPOSITION_AVAILABLE": "Nenhuma Qualificação Open Channel disponível",
-    "NEW_OPENCHANNELDISPOSITION": "Nova Qualificação Open Channel",
-    "ADD_OPENCHANNELDISPOSITION": "Adicionar qualificação Open Channel",
-    "EDIT_OPENCHANNELDISPOSITION": "Editar Qualificação Open Channel",
-    "DELETE_OPENCHANNELDISPOSITION": "Excluir Qualificação Open Channel",
-    "NEW_OPENCHANNELQUEUE": "Nova Fila Open channel",
-    "NEW_OPENCHANNELACCOUNT": "Nova Conta Open channel",
+    "OPENCHANNELDISPOSITIONS": "Qualificações do Open Channel",
+    "NO_OPENCHANNELDISPOSITION_AVAILABLE": "Nenhuma Qualificação do Open Channel disponível",
+    "NEW_OPENCHANNELDISPOSITION": "Nova Qualificação do Open Channel",
+    "ADD_OPENCHANNELDISPOSITION": "Adicionar Qualificação do Open Channel",
+    "EDIT_OPENCHANNELDISPOSITION": "Editar Qualificação do Open Channel",
+    "DELETE_OPENCHANNELDISPOSITION": "Excluir Qualificação do Open Channel",
+    "NEW_OPENCHANNELQUEUE": "Nova Fila do Open channel",
+    "NEW_OPENCHANNELACCOUNT": "Nova Conta do Open channel",
     "NO_AVAILABLE_INFO": "Nenhuma info disponível",
     "ALL_TEAMS": "Todas Equipes",
     "SELECTED_TEAMS": "Equipes Selecionadas",
     "REPLYURI": "URL de Resposta",
-    "RECEIVEURI": "Receive URL",
+    "RECEIVEURI": "URL de Recebimento",
     "HELP": {
       "TOKEN": "Token para consumir API do XCally.",
       "RECEIVEURI": "Auto-generated API string para receber mensagens dentro do Open Channel a partir do aplicativo externo (usando o método POST). Clique no botão da área de transferência para copiá-lo",
-      "REPLYURI": "O URL que o Open Channel chamará ao enviar ou responder a uma mensagem.",
+      "REPLYURI": "A URL que o Open Channel chamará ao enviar ou responder a uma mensagem.",
       "NAME": "Somente números, letras e caracteres específicos (._) são suportados",
       "LIST": "Lista usada para associar contatos",
       "MANDATORYDISPOSITION": "Qualificação obrigatória",
     "FILTERS": "Filtros",
     "CLOSEDAT": "Encerrado em",
     "DISPOSITION": "Qualificação",
-    "NOTES": "Anotações",
+    "NOTES": "Observações",
     "NO_INTERACTION_AVAILABLE": "Não há interações disponíveis",
     "SELECT_ACCOUNT": "Selecione uma conta",
     "GOTOP": "Gotop",
     "UNKNOWN": "Desconhecido",
     "UNREGISTERED": "Não Registrado",
     "UNAVAILABLE": "Indisponível",
-    "NOT_INUSE": "Fora de uso",
+    "NOT_INUSE": "Disponível",
     "REACHABLE": "Alcançável",
-    "IN_USE": "Em uso",
+    "IN_USE": "Ocupado",
     "AGENTS": "Agentes",
     "QUEUES": "Filas",
     "FULLNAME": "Nome Completo",
     "PHONE_STATUS": "Status do telefone",
     "PAUSE": "Pausa",
     "LOGOUT": "Sair",
-    "AGENTADD_QUEUE": "Adicionar Agente à Fila Open Channel",
-    "UNPAUSE": "Despausar",
+    "AGENTADD_QUEUE": "Adicionar Agente à Fila do Open Channel",
+    "UNPAUSE": "Finalizar Pausa",
     "DEFAULT_PAUSE": "Pausa padrão",
     "LOGGED_IN": "Logado",
     "PAUSED": "Pausado",
     "MAIL": "Email",
     "SMS": "SMS",
     "FAX": "Fax",
-    "AGENTSADD_QUEUE": "Adicionar Agentes à fila Open Channel",
+    "AGENTSADD_QUEUE": "Adicionar Agentes à Fila do Open Channel",
     "INTERACTIONS_OPENCHANNELACCOUNT": "Ir para Interações",
     "REFRESH_INTERACTIONS": "Atualizar Interações",
-    "DELETE_INTERACTION": "Excluir interação",
-    "AGENTADD_OPENCHANNELACCOUNT": "Adicionar Agente à Conta Openchannel",
-    "CANNED_ANSWER_SEARCH": "Não econtrado Resposta Pré-definida",
-    "CANNED_ANSWER_NOT_FOUND": "Nenhuma resposta automática foi encontrada",
+    "DELETE_INTERACTION": "Excluir Interação",
+    "AGENTADD_OPENCHANNELACCOUNT": "Adicionar Agente à Conta do Openchannel",
+    "CANNED_ANSWER_SEARCH": "Digite para procurar por Resposta Pré-definida",
+    "CANNED_ANSWER_NOT_FOUND": "Nenhuma Resposta Pré-definida foi encontrada",
     "SEND": "Enviar",
     "TO": "Para",
     "MAPKEY": "Map Key",
     "DIALOGFLOW": "Dialogflow",
     "EDIT_DIALOGFLOW": "Editar Dialogflow ",
     "LANGUAGE": "Idioma",
-    "WELCOMEMESSAGE": "Mensagem de Boas-Vindas",
-    "ACCESSKEYID": "ID Chave Acesso",
+    "WELCOMEMESSAGE": "Mensagem de Boas-vindas",
+    "ACCESSKEYID": "ID da Chave Acesso",
     "AMAZONLEX": "AmazonLex",
-    "BOTNAME": "Nome Bot",
-    "EDIT_AMAZONLEX": "Editar configuração Lex",
+    "BOTNAME": "Nome do Bot",
+    "EDIT_AMAZONLEX": "Editar configuração AmazonLex",
     "LEXREGION": "Região",
-    "SECRETACCESSKEY": "Access key secret",
+    "SECRETACCESSKEY": "Senha da Chave de Acesso",
     "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",
-    "CLIENTEMAIL": "Email Cliente",
+    "CLIENTEMAIL": "Email do Cliente",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Editar Dialogflow V2",
-    "PRIVATEKEY": "Private Key",
-    "PROJECTID": "ID Projeto",
-    "ADD_NOTE": "Adicionar nota",
-    "NOTE": "Anotação"
+    "PRIVATEKEY": "Chave Privada",
+    "PROJECTID": "ID do Projeto",
+    "ADD_NOTE": "Adicionar Observação",
+    "NOTE": "Observação"
   }
 }
index 6a12726..3e3a115 100644 (file)
 {
   "SETTINGS": {
-    "RTLSUPPORT": "RTL Support",
-    "PREFERRED": "Preferred Logo",
-    "DEFAULT_PREFERRED": "Default Preferred Logo",
+    "RTLSUPPORT": "RTL Stuðningur",
+    "PREFERRED": "Æskilegt lógó",
+    "DEFAULT_PREFERRED": "Sjálfgefið valið Merki",
     "FAVICON": "Favicon",
-    "DEFAULT_FAVICON": "Default Favicon",
-    "MOTIONBARREMEMBERME": "Remember Me",
-    "CHATTIMEOUT": "Chat closing interaction timeout",
-    "VIRTUAL": "Chat",
-    "VOICE": "Voice",
+    "DEFAULT_FAVICON": "Sjálfgefið Favicon",
+    "MOTIONBARREMEMBERME": "Mundu mig",
+    "CHATTIMEOUT": "Spjall tími útruninn án samskipta",
+    "VIRTUAL": "Spjall",
+    "VOICE": "tal",
     "SESSIONS": "Sessions",
-    "ADDONS": "Add-ons",
-    "REPORT": "Report",
-    "SPLIT": "Split report",
-    "SPLITSIZECSV": "Split report size [CSV records]",
-    "SPLITSIZEPDF": "Split report size [PDF records]",
-    "SPLITSIZEXLSX": "Split report size [XLSX records]",
-    "ENABLEEMAILPREVIEW": "Enable Email Preview",
-    "COPY_LICENSE": "Copy token to clipboard",
-    "DOWNLOAD_LICENSE_LOG_FILE": "Download license log file",
-    "LICENSE_LOG_FILE": "License log file",
-    "LICENSE_LOG_FILE_DOWNLOADED": "License log file downloaded!",
-    "CLIPBOARD": "Clipboard",
-    "COPIED_TO_CLIPBOARD": "Token copied to clipboard",
+    "ADDONS": "Viðbætur",
+    "REPORT": "Skýrsla",
+    "SPLIT": "Skipt skýrsla",
+    "SPLITSIZECSV": "Stærð á skýrslu [CSV records]",
+    "SPLITSIZEPDF": "Stærð á skýrslu [PDF records]",
+    "SPLITSIZEXLSX": "Stærð á skýrslu [XLSX records]",
+    "ENABLEEMAILPREVIEW": "Leyfa forskoðun á tölvupósti",
+    "COPY_LICENSE": "Afritaðu auðkenni á klippiborð",
+    "DOWNLOAD_LICENSE_LOG_FILE": "Sæktu leyfisskrána",
+    "LICENSE_LOG_FILE": "Leyfisskrárskrá",
+    "LICENSE_LOG_FILE_DOWNLOADED": "Leyfisskrárskrá hlaðið niður!",
+    "CLIPBOARD": "Klippiborð",
+    "COPIED_TO_CLIPBOARD": "Auðkenni afritað á klippiborð",
     "JAWS": "Jaws",
     "MOTIONBAR": "Motionbar",
-    "MOTIONBARAUTOUPDATER": "Auto Updater",
-    "MOTIONBARAUTOUPDATERURL": "Auto Updater URL",
+    "MOTIONBARAUTOUPDATER": "Sjálfvirk uppfærsla",
+    "MOTIONBARAUTOUPDATERURL": "Sjálfvirk uppfærsla á URL",
     "SMTP_SSL": "SMTP SSL",
-    "CALL_RECORDING_ENCRYPTION": "Voice Recording Encryption",
-    "TURNADDR": "TURN Address",
-    "TURN_USERNAME": "TURN Username",
-    "TURN_PASSWORD": "TURN Password",
+    "CALL_RECORDING_ENCRYPTION": "Dulkóðun upptöku á tali",
+    "TURNADDR": "TURN Heimilisfang",
+    "TURN_USERNAME": "TURN notandanafn",
+    "TURN_PASSWORD": "TURN Lykilorð",
     "WEBRTC": "WebRTC",
     "CALLYSQUARE": "Cally Square",
-    "PREVIEW_RECALLME_REMINDER_INTERVAL": "Preview Recallme Reminder Interval",
-    "ENABLED": "Enabled",
-    "DISABLED": "Disabled",
-    "UNLIMITED_CHANNELS": "Unlimited Channels",
-    "RELOAD": "Reload",
-    "VERIFY": "Verify",
-    "INTERFACE": "Interface",
-    "UPDATING": "Updating",
-    "REMOTE_VERSION": "Remote Version",
-    "NO_NEW_VERSION_AVAILABLE": "No new version available",
-    "TOP_N_PROCESSES": "Top {{value}} processes",
-    "SYSTEM": "System",
-    "FILE_SYSTEM": "File System",
-    "PROCESSES": "Processes",
+    "PREVIEW_RECALLME_REMINDER_INTERVAL": "Forskoða Recallme Reminder Interval",
+    "ENABLED": "Leyfa",
+    "DISABLED": "Afvirkjað",
+    "UNLIMITED_CHANNELS": "Ótakmarkaðar rásir",
+    "RELOAD": "Endurhlaða",
+    "VERIFY": "Staðfestu",
+    "INTERFACE": "Viðmót",
+    "UPDATING": "Uppfærir",
+    "REMOTE_VERSION": "Remote útgáfa",
+    "NO_NEW_VERSION_AVAILABLE": "Engin ný útgáfa til",
+    "TOP_N_PROCESSES": "Top {{value}} ferlar",
+    "SYSTEM": "Kerfi",
+    "FILE_SYSTEM": "Skrárkerfi",
+    "PROCESSES": "Ferlar",
     "MOUNT_POINT": "Mount",
-    "AVG_LOAD": "AVG Load",
-    "TOTAL": "Total",
-    "USED": "Used",
-    "FREE": "Free",
-    "NAME": "Name",
-    "STATE": "State",
-    "CHAT": "Chat",
-    "MAIL": "Email",
-    "MESSAGING": "Sms",
-    "WHATSAPP": "WhatsApp Connector",
+    "AVG_LOAD": "Meðal álag",
+    "TOTAL": "Heildar",
+    "USED": "Notað",
+    "FREE": "Laust",
+    "NAME": "Nafn",
+    "STATE": "Fylki",
+    "CHAT": "Spjall",
+    "MAIL": "Netfang",
+    "MESSAGING": "SMS",
+    "WHATSAPP": "WhatsApp Tengill",
     "FAX": "Fax",
     "OPENCHANNEL": "Open Channel",
-    "AGENTS": "Agents",
-    "USERS": "Users",
-    "TELEPHONES": "Telephones",
-    "STAFF": "Staff",
-    "CHANNELS": "Channels",
-    "MODULES": "Modules",
-    "CM": "Contacts Manager",
-    "DIALER": "Dialer",
+    "AGENTS": "Notandi",
+    "USERS": "Notendur",
+    "TELEPHONES": "Símar",
+    "STAFF": "Starfsmenn",
+    "CHANNELS": "Rásir",
+    "MODULES": "Einingar",
+    "CM": "Stjórnandi tengiliða",
+    "DIALER": "Hringjari",
     "JSCRIPTY": "Jscripty",
-    "CUSTOM": "Customization",
+    "CUSTOM": "Snérsníða",
     "VIDEO": "Video",
-    "SCREENRECORDING": "Screen Recording",
-    "UPDATE": "Update",
-    "OTHERS": "Others",
-    "SETTINGS": "Settings",
-    "GENERAL": "General",
+    "SCREENRECORDING": "Skjá upptaka",
+    "UPDATE": "Uppfæra",
+    "OTHERS": "Aðrir",
+    "SETTINGS": "Stillingar",
+    "GENERAL": "Almennt",
     "SMTP": "SMTP",
-    "NETWORKS": "Networks",
-    "UPDATES": "Updates",
-    "LICENSE": "License",
+    "NETWORKS": "Netkerfi",
+    "UPDATES": "Uppfærsla",
+    "LICENSE": "Leyfi",
     "ID": "Id",
-    "MIN_INTERNAL": "Min Internal",
-    "MIN_MAILBOX": "Min Mailbox",
-    "INSTALLED_AT": "Installed At",
-    "SEARCH_FOR_ANYONE": "Search",
-    "EDIT_GENERAL": "Edit General",
-    "SECURE_PASSWORD": "Secure Password",
-    "LOGO": "Logo",
-    "DEFAULT_LOGO": "Default Logo",
-    "DEFAULT_LOGIN_LOGO": "Default Login Logo",
+    "MIN_INTERNAL": "Lámark innan",
+    "MIN_MAILBOX": "Lámarks pósthólf",
+    "INSTALLED_AT": "Uppsett kl.",
+    "SEARCH_FOR_ANYONE": "Leyta",
+    "EDIT_GENERAL": "Breyta almennt",
+    "SECURE_PASSWORD": "Öruggt lykilorð",
+    "LOGO": "Merki",
+    "DEFAULT_LOGO": "Sjálfgefið Merki",
+    "DEFAULT_LOGIN_LOGO": "Sjálfgefið Login merki",
     "WHITELABEL": "White Label",
-    "DEFAULT_HEADER_WHITELABEL": "Default Header White Label",
-    "HEADER_WHITELABEL": "Header White Label",
-    "CREATED_AT": "Created At",
-    "SAVE": "Save",
-    "SMTP_SERVICE": "Service",
+    "DEFAULT_HEADER_WHITELABEL": "Sjálfgefin haus hvítt merki",
+    "HEADER_WHITELABEL": "Haus á hvítri merkingu",
+    "CREATED_AT": "Stofnað kl.",
+    "SAVE": "Geyma",
+    "SMTP_SERVICE": "Þjónusta",
     "SMTP_HOST": "Host",
-    "SMTP_USERNAME": "Username",
-    "DESCRIPTION": "Description",
-    "SMTP_PASSWORD": "Password",
+    "SMTP_USERNAME": "Notandanafn",
+    "DESCRIPTION": "Lýsing",
+    "SMTP_PASSWORD": "Lykilorð",
     "SMTP_PORT": "Port",
-    "SMTP_SECURE": "Secure",
-    "TYPE": "Type",
-    "ADDRESS": "Address",
-    "USERNAME": "Username",
-    "NEW_NETWORK": "New Network",
-    "ADD_NETWORK": "Add Network",
+    "SMTP_SECURE": "Öruggt",
+    "TYPE": "Tegund",
+    "ADDRESS": "Heimilisfang",
+    "USERNAME": "Notandanafn",
+    "NEW_NETWORK": "Nýtt net",
+    "ADD_NETWORK": "Bættu við neti",
     "IMAPGENERALSETTINGS": "IMAP",
-    "LOGINMAILFREQUENCY": "Login Mail Frequency (sec)",
-    "DEFAULTSCREENRECORDINGPATH": "Screen Recording path",
+    "LOGINMAILFREQUENCY": "Tíðni innskráningarpósts (sek.)",
+    "DEFAULTSCREENRECORDINGPATH": "Skjá upptöku slóð",
     "APPZONE": "App Zone",
-    "EDIT_NETWORK": "Edit Network",
-    "DELETE_NETWORK": "Delete Network",
-    "BACK": "Back",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "EXPIRATION_DATE": "Expiration Date",
-    "REQUEST_LICENSE": "Request License",
-    "EMAIL": "Email",
-    "SEND": "Send",
+    "EDIT_NETWORK": "Breyta neti",
+    "DELETE_NETWORK": "Eyða neti",
+    "BACK": "Til baka",
+    "SELECTED": "Valið",
+    "SELECT_ALL": "Velja allt",
+    "SELECT_NONE": "Velja nafn",
+    "EXPIRATION_DATE": "Gildir til",
+    "REQUEST_LICENSE": "Biddu um leyfi",
+    "EMAIL": "Netfang",
+    "SEND": "Senda",
     "PLAN": "Plan",
-    "MONTH_TO_MONTH": "Month to month",
-    "MOTION_PROCESS_MANAGEMENT": "Motion Process Management",
-    "USEFUL_COMMANDS": "Useful Commands",
-    "COMMAND": "Command",
-    "PM2_LIST": "List all processes",
-    "PM2_START": "Start a process by id or name",
-    "PM2_STOP": "Stop a process by id or name or insert 'all' to stop all the active processes",
-    "PM2_RESTART": "Restart a process by id or name",
-    "PM2_LOGS": "Stream all processes log files, unless a specific process id or name is provided",
-    "PASSWORD": "Password",
-    "NO_AVAILABLE_INFO": "No available info",
+    "MONTH_TO_MONTH": "Mánuð fyrir mánuð",
+    "MOTION_PROCESS_MANAGEMENT": "Hreyfis ferla stjórnun",
+    "USEFUL_COMMANDS": "Gagnlegar skipanir",
+    "COMMAND": "Skipun",
+    "PM2_LIST": "Listaðu alla ferla",
+    "PM2_START": "Endurræstu ferla með auðkenni eða nafni",
+    "PM2_STOP": "Stöðvaðu ferla með auðkenni eða nafni eða settu inn 'allt' til að stöðva alla virku ferla",
+    "PM2_RESTART": "Endurræstu ferla með auðkenni eða nafni",
+    "PM2_LOGS": "Streymaðu allar ferla skrár, nema sérstakt auðkenni eða nafn sé gefið upp",
+    "PASSWORD": "Lykilorð",
+    "NO_AVAILABLE_INFO": "Engar upplýsingar fáanlegar",
     "STUNADDR": "STUN Address",
-    "CHANGELOG": "Changelog",
-    "CURRENT_VERSION": "Current version",
-    "CUSTOMIZATIONS": "Customizations",
+    "CHANGELOG": "Breyta skrá",
+    "CURRENT_VERSION": "Núverandi útgáfa",
+    "CUSTOMIZATIONS": "Séraðlaganir",
     "LOCALNETADDRESS": "Localnet Address",
-    "NEW_VERSION": "New Version",
-    "TRIAL_VERSION": "Trial Version",
+    "NEW_VERSION": "Ný útgáfa",
+    "TRIAL_VERSION": "Prufu útgáfa",
     "TOKEN": "Token",
-    "NEW_TOKEN_DETECTED": "New Token Detected",
-    "EXPIRATION_GRAY_PERIOD": "Gray Period Expiration",
-    "NEW_TOKEN": "New Token",
-    "PRICES": "Prices",
-    "UPDATE_LICENSE": "Update License",
-    "LOGOLOGIN": "Login Logo",
-    "EXPIRATION_REASON": "Expiration Reason",
-    "GLOBAL": "Global",
-    "SMTP_AUTHENTICATION": "Authentication",
-    "LICENSE_REQUEST_SENT": "Thank you! The Licensing Team will check your account asap in order to approve your request: you will receive an email when the changes become effective. Please refer to license@xcally.com for further informations.",
-    "ACCOUNTNAME": "Account Name",
-    "EMAILADDRESS": "Email Address",
-    "EXPIRATION_REASON_MESSAGE_DISABLED": "Your license has been disabled.",
-    "EXPIRATION_REASON_MESSAGE_CHANGED": "Your machine unique id has been updated due to a change to your system.",
-    "EXPIRATION_CHANGED_ADVISE": "Contact xCALLY Motion License Team sending both your old and your new uuid.",
-    "OLD_TOKEN": "Old Token",
-    "SEND_EMAIL_TO": "Send Email to",
-    "JIRA_ERROR_MESSAGE": "Error during license request. Please contact our license team at license@xcally.com with your request",
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
-    "OF": "of",
-    "PAGE_TITLE": "Page Title",
-    "DEFAULT_PAGE_TITLE": "Default Page Title",
-    "PERPETUAL": "Perpetual",
-    "SECURITY_SUITE": "Security Suite",
-    "ANNUALLY": "Annually",
-    "AGENTOMNIDESKTOPINTERFACE": "Agent Omni Desktop Interface",
-    "MESSAGESALIGNMENT": "Messages Alignment",
-    "ENTER_LICENSE": "Enter your license",
-    "UPDATE_LICENSE_MANUALLY": "Do you want to update your license manually?",
-    "SECURITY": "Security",
-    "ALLOWEDLOGINATTEMPTS": "Allowed login attempts before locking the user/agent",
-    "BLOCKDURATION": "Minutes to wait before automatic unlock",
-    "AI": "A.I. Tools",
-    "AITOOLS": "A.I. Tools",
-    "SERVICE": "Service",
-    "NEW_CLOUDPROVIDER": "New Account",
-    "ADD_CLOUDPROVIDER": "Add Account",
-    "DELETE": "Delete",
-    "SECRETACCESSKEY": "Secret Access Key",
-    "ACCESSKEY": "Access Key ID",
-    "EDIT_CLOUDPROVIDER": "Edit Account",
-    "DELETE_CLOUDPROVIDER": "Delete Account",
-    "LANGUAGE": "Language",
+    "NEW_TOKEN_DETECTED": "Nýtt Token skynjað",
+    "EXPIRATION_GRAY_PERIOD": "Prufutímabil er lokið",
+    "NEW_TOKEN": "Nýtt Token",
+    "PRICES": "Verð",
+    "UPDATE_LICENSE": "Uppfæra leyfi",
+    "LOGOLOGIN": "Innskráningar merki",
+    "EXPIRATION_REASON": "Ástæða þess að vera útrunnið",
+    "GLOBAL": "Alþjóðlegt",
+    "SMTP_AUTHENTICATION": "Auðkenning",
+    "LICENSE_REQUEST_SENT": "Takk fyrir! Við hjá Svar munum athuga reikninginn þinn eins fljótt og auðið er til að samþykkja beiðni þína: þú munt fá tölvupóst þegar breytingarnar taka gildi.",
+    "ACCOUNTNAME": "Nafnið á reikningi",
+    "EMAILADDRESS": "Netfang",
+    "EXPIRATION_REASON_MESSAGE_DISABLED": "Leyfið þitt hefur vrið afvirkjað.",
+    "EXPIRATION_REASON_MESSAGE_CHANGED": "Auðkenni tölvunar þinnar hefur verið breyst venga nýrrar tölvu.",
+    "EXPIRATION_CHANGED_ADVISE": "Hafðu samband við Svar, sendu okkur bæði gamla og nýja notenda auðkennið þitt.",
+    "OLD_TOKEN": "Gamla Token",
+    "SEND_EMAIL_TO": "Senda tölvupóst til",
+    "JIRA_ERROR_MESSAGE": "Villa við leyfisbeiðni. Vinsamlegast hafðu samband við hjalp@svar.is",
+    "PAGE": "Bls.",
+    "ROWSPERPAGE": "Raðir á síðu, línur á bls.",
+    "OF": "af",
+    "PAGE_TITLE": "Bls. titill",
+    "DEFAULT_PAGE_TITLE": "Sjálfgefin titill á bls.",
+    "PERPETUAL": "Endalaust",
+    "SECURITY_SUITE": "Öriggis svíta",
+    "ANNUALLY": "Árlega",
+    "AGENTOMNIDESKTOPINTERFACE": "Skjá viðmót Notanda í Omni channel",
+    "MESSAGESALIGNMENT": "Jöfnun skilaboða",
+    "ENTER_LICENSE": "Settu inn leyfislykilinn þinn",
+    "UPDATE_LICENSE_MANUALLY": "Viltu uppfæra leyfin handvirkt?",
+    "SECURITY": "Öryggi",
+    "ALLOWEDLOGINATTEMPTS": "Hámarks fjöldi tilrauna áður en aðgangi er lokað á notanda",
+    "BLOCKDURATION": "Mínútur fyrir sjálfvirka opnun",
+    "AI": "A.I. Verkfæri",
+    "AITOOLS": "A.I. Verkfæri",
+    "SERVICE": "Þjónusta",
+    "NEW_CLOUDPROVIDER": "Nýr reikningur",
+    "ADD_CLOUDPROVIDER": "Bættu við reikningi",
+    "DELETE": "Eyða",
+    "SECRETACCESSKEY": "Lykilorð",
+    "ACCESSKEY": "Auðkenni aðgangslykils",
+    "EDIT_CLOUDPROVIDER": "Breyttu reikningi",
+    "DELETE_CLOUDPROVIDER": "Eyða reikningi",
+    "LANGUAGE": "Tungumál",
     "BUCKET": "Bucket",
-    "TRANSCRIBE": "Transcribe",
-    "TRANSCRIBEREGION": "Transcribe Region",
-    "TRANSCRIBEACCOUNT": "Transcribe Account",
-    "SENTIMENTANALYSIS": "Sentiment Analysis",
-    "SENTIMENTREGION": "Sentiment Analysis Region",
-    "SENTIMENTACCOUNT": "Sentiment Analysis Account",
+    "TRANSCRIBE": "Afrita",
+    "TRANSCRIBEREGION": "Afrita svæði",
+    "TRANSCRIBEACCOUNT": "Afrita reikning",
+    "SENTIMENTANALYSIS": "Viðhorfsgreining",
+    "SENTIMENTREGION": "Viðhorfsgreiningar svæði",
+    "SENTIMENTACCOUNT": "Viðhorfsgreiningarsvæði",
     "SSO": "SSO",
-    "GOOGLE_SSO_ENABLED": "Google SSO Enabled",
-    "ENFORCE_PASSWORD_HISTORY": "Enforce Password History",
-    "PASSWORD_HISTORY_LIMIT": "Password History Limit",
-    "PRIVACY_POLICY_EMAIL": "Privacy Policy for Email Addresses",
-    "PRIVACY_POLICY_NAME": "Privacy Policy for Names",
-    "PRIVACY_POLICY_NUMBER": "Privacy Policy for Numbers",
-    "SEARCH_ON_ENTER_KEY": "Search on Enter key",
-    "CHAT_INTERACTIONS_RELOAD_TIMEOUT": "Chat interactions reload timeout",
-    "MAIL_INTERACTIONS_RELOAD_TIMEOUT": "Email interactions reload timeout",
-    "OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT": "Open Channel interactions reload timeout",
-    "SMS_INTERACTIONS_RELOAD_TIMEOUT": "SMS interactions reload timeout",
-    "WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT": "WhatsApp Connector interactions reload timeout",
-    "STOP_RECORDING_ON_VOICE_CALL_TRANSFER": "Stop recording on voice call transfer",
-    "DISABLED_COOKIE": "Cookies banner",
-    "AD_SSO_ENABLED": "Active Directory SSO Enabled",
-    "CLOUD_PROVIDERS": "Cloud Providers",
-    "APPLICATION_ID": "Application Id",
-    "TENANT_ID": "Tenant Id",
-    "CLIENT_SECRET": "Client Secret",
-    "NEW_CLIENT_SECRET": "New Client Secret",
+    "GOOGLE_SSO_ENABLED": "Google SSO Virkt",
+    "ENFORCE_PASSWORD_HISTORY": "Framfylgja lykilorða sögu",
+    "PASSWORD_HISTORY_LIMIT": "Hámark lykilorðasögu",
+    "PRIVACY_POLICY_EMAIL": "Persónuverndarstefna fyrir netföng ",
+    "PRIVACY_POLICY_NAME": "Persónuverndarstefna fyrir nöfn",
+    "PRIVACY_POLICY_NUMBER": "Persónuverndarstefna fyrir tölur",
+    "SEARCH_ON_ENTER_KEY": "Leitaðu með Enter lyklinum",
+    "CHAT_INTERACTIONS_RELOAD_TIMEOUT": "Samskipti runnu út á tíma",
+    "MAIL_INTERACTIONS_RELOAD_TIMEOUT": "Tímamörk endurhleðslu tölvupóstsamskipta ",
+    "OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT": "Open Channel tíminn rann út",
+    "SMS_INTERACTIONS_RELOAD_TIMEOUT": "Tímamörk endurhleðslu SMS-samskipta",
+    "WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT": "Tímamörk fyrir endurhleðslu WhatsApp tengisamskipta",
+    "STOP_RECORDING_ON_VOICE_CALL_TRANSFER": "Hættu að taka upp við símtalsflutning",
+    "DISABLED_COOKIE": "Vefköku borði",
+    "AD_SSO_ENABLED": "Active Directory SSO er virkjað",
+    "CLOUD_PROVIDERS": "Skýja þjónustu aðili",
+    "APPLICATION_ID": "Auðkenni forrits",
+    "TENANT_ID": "Notanda auðkenni",
+    "CLIENT_SECRET": "Leiniorð notanda",
+    "NEW_CLIENT_SECRET": "Nýtt leyniorð notanda",
     "REDIRECT_URI": "Redirect URI",
     "REMOTE_URI": "Remote URI",
-    "AUTHENTICATE": "Authenticate",
-    "AUTHENTICATE_TO_MICROSOFT_IDENTITY_PLATFORM": "Authenticate to Microsoft Identity Platform",
-    "MICROSOFT_AUTHENTICATION_SUCCESS": "Authentication to the Microsoft Identity Platform completed successfully",
-    "MICROSOFT_AUTHENTICATION_FAIL": "Something went wrong while authenticating to the Microsoft Identity Platform",
-    "UPDATE_CLIENT_SECRET": "Update Client Secret",
+    "AUTHENTICATE": "Auðkenna",
+    "AUTHENTICATE_TO_MICROSOFT_IDENTITY_PLATFORM": "Auðkenni fyrir Microsoft grunn",
+    "MICROSOFT_AUTHENTICATION_SUCCESS": "Auðkenningu á Microsoft aðgengi þínum tókst",
+    "MICROSOFT_AUTHENTICATION_FAIL": "Eitthvað fór úrskeiðis við auðkenningu á Microsoft aðgangi",
+    "UPDATE_CLIENT_SECRET": "Uppfæra leyniorð notanda",
     "HELP": {
-      "DEFAULTSCREENRECORDINGPATH": "Enter the path where to store screen recording files on the Agent computer (leave empty for default Video Folder path)",
-      "RTLSUPPORT": "Enables the RTL Support for Arabic, Persian and Hebrew languages",
+      "DEFAULTSCREENRECORDINGPATH": "Settu inn slóðina til að geyma skjá upptökuna á tölvu notandans (skildu eftir autt ef þú vilt nota sjálfgefna möppu)",
+      "RTLSUPPORT": "Virkjar RTL stuðning fyrir arabísku, persnesku og hebresku",
       "ADDRESS": "External (public) ip address",
       "LOCALNETADDRESS": "Local ip address/subnet",
-      "SMTP_SECURE": "If true, the connection to the server will use TLS",
-      "SMTP_USERNAME": "Username used for authentication",
-      "SMTP_PASSWORD": "Password used for authentication",
-      "EMAILADDRESS": "The message origin Email address (from)",
-      "SECURITY_SUITE": "Enables the secure password format, the mandatory password reset after the first login and the password expiration after 90 days",
-      "MOTIONBARREMEMBERME": "Enable/Disable the Remember Me feature in Motion Phonebar",
-      "LOGINMAILFREQUENCY": "Please remember to restart the EMAIL service each time this parameter has been changed",
-      "USERNAME": "Username",
-      "PASSWORD": "Password",
-      "PREVIEW_RECALLME_REMINDER_INTERVAL": "Time interval in minutes before which notification will be sent to agent informing him about preview recall to be made",
-      "ENFORCE_PASSWORD_HISTORY": "Enables the validation against previously used passwords",
-      "PASSWORD_HISTORY_LIMIT": "Number of last used unique passwords to check",
-      "PRIVACY_POLICY": "Number of characters that will be replaced with an asterisk (*) (0 = all characters)",
-      "SEARCH_ON_ENTER_KEY": "Start searching only after the agent hits the Enter key",
-      "INTERACTIONS_RELOAD_TIMEOUT": "Time interval in seconds after which interactions are reloaded (0 = real-time update)",
-      "CLIENT_SECRET": "The secret will no longer be visible once the configuration is saved. Store it safely if you want to use it elsewhere.",
-      "LIMIT_TABS": "Maximum number of possible interaction tabs open"
+      "SMTP_SECURE": "Ef rétt, mun tengingin við netþjóninn nota TLS",
+      "SMTP_USERNAME": "Notendanafn notað til auðkenningar",
+      "SMTP_PASSWORD": "Lykilorð notað til auðkenningar",
+      "EMAILADDRESS": "Uppruni skilaboða fra netfangi (frá)",
+      "SECURITY_SUITE": "Virkjar öruggt lykilorðssnið, lögboðna endurstillingu lykilorðsins eftir fyrstu innskráningu og lykilorðið rennur út eftir 90 daga ",
+      "MOTIONBARREMEMBERME": "Virkja/afvirkja muna mig virknina í Motion slánni",
+      "LOGINMAILFREQUENCY": "Vinsamlega mundu að endursetja póst þjónustuna eftir hvert skipti sem þetta gildi hefur verið breytt",
+      "USERNAME": "Notandanafn",
+      "PASSWORD": "Lykilorð",
+      "PREVIEW_RECALLME_REMINDER_INTERVAL": "Tímabil í mínútum áður en tilkynning verður send til fulltrúa sem upplýsir hann um innköllun",
+      "ENFORCE_PASSWORD_HISTORY": "Virkjar staðfestingu frá áður notuðu lykilorði",
+      "PASSWORD_HISTORY_LIMIT": "Fjöldi notaðra lykilorða áður en má nota aftur",
+      "PRIVACY_POLICY": "Fjöldi stafa sem verður skipt út fyrir stjörnu (*) (0 = allir stafir)",
+      "SEARCH_ON_ENTER_KEY": "Byrjaðu aðeins að leita eftir að fulltrúi ýtir á Enter takkann",
+      "INTERACTIONS_RELOAD_TIMEOUT": "Tímabil í sekúndum þangað til skilaboðum eru sett aftur (0 = real-time update)",
+      "CLIENT_SECRET": "Leyniorðið verður ekki sjáanlegt eftir að stillingar hafa verið geymdar. Geymdu það á öruggum stað ef þú vilt endurnota það.",
+      "LIMIT_TABS": "Hámarsfjöldi samtíma samskipta sem geta verið opnir"
     },
     "ERRORS": {
-      "CHATTIMEOUT_REQUIRED": "Mandatory field",
-      "CHATTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MOTIONBARAUTOUPDATERURL_MUST_VALID_URL": "Wrong format",
-      "MOTIONBARAUTOUPDATERURL_REQUIRED": "Mandatory field",
-      "ADDRESS_REQUIRED": "Mandatory field",
-      "MIN_INTERNAL_REQUIRED": "Mandatory field",
-      "MIN_MAILBOX_REQUIRED": "Mandatory field",
-      "NAME_REQUIRED": "Mandatory field",
-      "HEADER_WHITELABEL_REQUIRED": "Mandatory field",
-      "LOCALNETADDRESS_REQUIRED": "Mandatory field",
-      "LOCALNETADDRESS_MUST_VALID_PATTERN": "Wrong format",
-      "ADDRESS_MUST_VALID_PATTERN": "Wrong format",
-      "ACCOUNTNAME_REQUIRED": "Mandatory field",
-      "EMAIL_MUST_VALID": "Wrong format",
-      "SMTP_USERNAME_REQUIRED": "Mandatory field",
-      "PASSWORD_REQUIRED": "Mandatory field",
-      "SMTP_HOST_REQUIRED": "Mandatory field",
-      "SMTP_PORT_REQUIRED": "Mandatory field",
-      "PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED": "Mandatory field",
-      "MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MIN_MAILBOX_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "PAGE_TITLE_REQUIRED": "Mandatory field",
-      "EMAIL_REQUIRED": "Mandatory field",
-      "PLAN_REQUIRED": "Mandatory field",
-      "LICENSE_REQUIRED": "Mandatory field",
-      "LOGINMAILFREQUENCY_REQUIRED": "Mandatory field",
-      "LOGINMAILFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "ALLOWEDLOGINATTEMPTS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "BLOCKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "ALLOWEDLOGINATTEMPTS_REQUIRED": "Mandatory field",
-      "BLOCKDURATION_REQUIRED": "Mandatory field",
-      "SERVICE_REQUIRED": "Mandatory field",
-      "SECRETACCESSKEY_REQUIRED": "Mandatory field",
-      "ACCESSKEY_REQUIRED": "Mandatory field",
-      "LANGUAGE_REQUIRED": "Mandatory field",
-      "BUCKET_REQUIRED": "Mandatory field",
-      "TRANSCRIBEREGION_REQUIRED": "Mandatory field",
-      "TRANSCRIBEACCOUNT_REQUIRED": "Mandatory field",
-      "SENTIMENTREGION_REQUIRED": "Mandatory field",
-      "SENTIMENTACCOUNT_REQUIRED": "Mandatory field",
-      "USERNAME_REQUIRED": "Mandatory field",
-      "FIELD_REQUIRED": "Mandatory field",
+      "CHATTIMEOUT_REQUIRED": "Skilyrtur reitur",
+      "CHATTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra eða jafnt og",
+      "MOTIONBARAUTOUPDATERURL_MUST_VALID_URL": "Rangt snið",
+      "MOTIONBARAUTOUPDATERURL_REQUIRED": "Skilyrtur reitur",
+      "ADDRESS_REQUIRED": "Skilyrtur reitur",
+      "MIN_INTERNAL_REQUIRED": "Skilyrtur reitur",
+      "MIN_MAILBOX_REQUIRED": "Skilyrtur reitur",
+      "NAME_REQUIRED": "Skilyrtur reitur",
+      "HEADER_WHITELABEL_REQUIRED": "Skilyrtur reitur",
+      "LOCALNETADDRESS_REQUIRED": "Skilyrtur reitur",
+      "LOCALNETADDRESS_MUST_VALID_PATTERN": "Rangt snið",
+      "ADDRESS_MUST_VALID_PATTERN": "Rangt snið",
+      "ACCOUNTNAME_REQUIRED": "Skilyrtur reitur",
+      "EMAIL_MUST_VALID": "Rangt snið",
+      "SMTP_USERNAME_REQUIRED": "Skilyrtur reitur",
+      "PASSWORD_REQUIRED": "Skilyrtur reitur",
+      "SMTP_HOST_REQUIRED": "Skilyrtur reitur",
+      "SMTP_PORT_REQUIRED": "Skilyrtur reitur",
+      "PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED": "Skilyrtur reitur",
+      "MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra eða jafnt og",
+      "MIN_MAILBOX_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra eða jafnt og",
+      "PAGE_TITLE_REQUIRED": "Skilyrtur reitur",
+      "EMAIL_REQUIRED": "Skilyrtur reitur",
+      "PLAN_REQUIRED": "Skilyrtur reitur",
+      "LICENSE_REQUIRED": "Skilyrtur reitur",
+      "LOGINMAILFREQUENCY_REQUIRED": "Skilyrtur reitur",
+      "LOGINMAILFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra eða jafnt og",
+      "ALLOWEDLOGINATTEMPTS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra eða jafnt og",
+      "BLOCKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra eða jafnt og",
+      "ALLOWEDLOGINATTEMPTS_REQUIRED": "Skilyrtur reitur",
+      "BLOCKDURATION_REQUIRED": "Skilyrtur reitur",
+      "SERVICE_REQUIRED": "Skilyrtur reitur",
+      "SECRETACCESSKEY_REQUIRED": "Skilyrtur reitur",
+      "ACCESSKEY_REQUIRED": "Framfylgja lykilorða sögu",
+      "LANGUAGE_REQUIRED": "Skilyrtur reitur",
+      "BUCKET_REQUIRED": "Skilyrtur reitur",
+      "TRANSCRIBEREGION_REQUIRED": "Skilyrtur reitur",
+      "TRANSCRIBEACCOUNT_REQUIRED": "Skilyrtur reitur",
+      "SENTIMENTREGION_REQUIRED": "Skilyrtur reitur",
+      "SENTIMENTACCOUNT_REQUIRED": "Skilyrtur reitur",
+      "USERNAME_REQUIRED": "Skilyrtur reitur",
+      "FIELD_REQUIRED": "Skilyrtur reitur",
       "WRONG_FORMAT": "Wrong format",
-      "PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to"
+      "PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra eða jafnt og"
     },
     "NOTIFICATIONS": {
-      "MICROSOFT_AUTHENTICATION_SUCCESS": "Authentication to the Microsoft Identity Platform completed successfully",
-      "MICROSOFT_AUTHENTICATION_FAIL": "Something went wrong while authenticating to the Microsoft Identity Platform",
-      "CLOUD_PROVIDER_CREATED_SUCCESS_TITLE": "Cloud Provider successfully created",
-      "CLOUD_PROVIDER_SAVED_SUCCESS_TITLE": "Cloud Provider successfully saved",
-      "CLOUD_PROVIDER_DELETE_TITLE": "Are you sure want to delete the cloud provider?",
-      "CLOUD_PROVIDER_DELETE_MESSAGE": "{{ name }} will be deleted",
-      "CLOUD_PROVIDER_DELETED_SUCCESS_TITLE": "Cloud Provider successfully deleted",
-      "CLOUD_PROVIDERS_DELETE_TITLE": "Are you sure want to delete the selected cloud providers?",
-      "CLOUD_PROVIDERS_DELETE_MESSAGE": "{{ total }} cloud providers will be deleted",
-      "CLOUD_PROVIDERS_DELETED_SUCCESS_TITLE": "Cloud Providers successfully deleted",
-      "SMTP_SAVED_SUCCESS_TITLE": "SMTP configuration successfully saved",
-      "CLOUD_PROVIDER_SECRET_UPDATE_SUCCESS_TITLE": "Client Secret successfully updated"
+      "MICROSOFT_AUTHENTICATION_SUCCESS": "Auðkenning á Microsoft auðkenninu þínu tóskt",
+      "MICROSOFT_AUTHENTICATION_FAIL": "Eitthvað fór úrskeiðis við auðkenningu á Microsoft auðkenni þínu",
+      "CLOUD_PROVIDER_CREATED_SUCCESS_TITLE": "Skýjaþjónustu aðili hefur verið stofnaður",
+      "CLOUD_PROVIDER_SAVED_SUCCESS_TITLE": "Skýja þjónustuaðili geymdur",
+      "CLOUD_PROVIDER_DELETE_TITLE": "Ertu viss um að þú viljir eyða völdum skýjaþjónustuaðila?",
+      "CLOUD_PROVIDER_DELETE_MESSAGE": "{{ name }} verður eytt",
+      "CLOUD_PROVIDER_DELETED_SUCCESS_TITLE": "Skýjaþjónustu aðila hefur verið eytt",
+      "CLOUD_PROVIDERS_DELETE_TITLE": "Ertu viss um að þú viljir eyða völdum skýjaveitum?",
+      "CLOUD_PROVIDERS_DELETE_MESSAGE": "{{ total }} Skýja þjónustu aðilum hefur verið eytt",
+      "CLOUD_PROVIDERS_DELETED_SUCCESS_TITLE": "Skýja þjónustu aðila hefur verið eytt",
+      "SMTP_SAVED_SUCCESS_TITLE": "SMTP Stillingar geymdar",
+      "CLOUD_PROVIDER_SECRET_UPDATE_SUCCESS_TITLE": "Lykilorð notanda uppfært"
     },
-    "LIMIT_TABS": "Limit of interaction tab"
+    "LIMIT_TABS": "Takmörkun á samskiptaflipum"
   }
 }
index 5ccbf9c..1e6729b 100644 (file)
@@ -1,28 +1,28 @@
 {
   "SETTINGS": {
-    "PREFERRED": "Logotipo Preferido",
-    "DEFAULT_PREFERRED": "Logotipo preferido padrão",
+    "PREFERRED": "Logomarca Favorita",
+    "DEFAULT_PREFERRED": "Logomarca Favorita Padrão",
     "MOTIONBARREMEMBERME": "Lembre de mim",
-    "CHATTIMEOUT": "Tempo limite de interação de fechamento de chat",
+    "CHATTIMEOUT": "Timout para encerrar interação de chat",
     "VIRTUAL": "Chat",
     "VOICE": "Voz",
     "SESSIONS": "Sessão",
     "ADDONS": "Complementos",
     "REPORT": "Relatório",
-    "SPLIT": "Relatório dividido",
-    "SPLITSIZECSV": "Tamanho do relatório dividido [registros CSV]",
-    "SPLITSIZEPDF": "Tamanho do relatório dividido [registros PDF]",
-    "SPLITSIZEXLSX": "Tamanho do relatório dividido [registros XLSX]",
-    "ENABLEEMAILPREVIEW": "Ativar visualização de e-mail",
+    "SPLIT": "Dividir relatório",
+    "SPLITSIZECSV": "Tamanho para dividir relatório [registros CSV]",
+    "SPLITSIZEPDF": "Tamanho para dividir relatório [registros PDF]",
+    "SPLITSIZEXLSX": "Tamanho para dividir relatório [registros XLSX]",
+    "ENABLEEMAILPREVIEW": "Ativar Preview de Email",
     "JAWS": "Jaws",
     "MOTIONBAR": "Motionbar",
-    "MOTIONBARAUTOUPDATER": "Auto Updater",
-    "MOTIONBARAUTOUPDATERURL": "Auto Updater URL",
+    "MOTIONBARAUTOUPDATER": "Atualização Automática",
+    "MOTIONBARAUTOUPDATERURL": "URL de Atualização Automática",
     "SMTP_SSL": "SMTP SSL",
     "CALL_RECORDING_ENCRYPTION": "Criptografia de Gravação de Voz",
     "TURNADDR": "Endereço TURN",
-    "TURN_USERNAME": "Nome de usuário do TURN",
-    "TURN_PASSWORD": "Senha da TURN",
+    "TURN_USERNAME": "Nome de Usuário TURN",
+    "TURN_PASSWORD": "Senha TURN",
     "WEBRTC": "WebRTC",
     "CALLYSQUARE": "Cally Square",
     "ENABLED": "Ativado",
     "INTERFACE": "Interface",
     "UPDATING": "Atualizando",
     "REMOTE_VERSION": "Versão Remota",
-    "NO_NEW_VERSION_AVAILABLE": "Nenhuma nova versão disponível",
-    "TOP_N_PROCESSES": "Principais processos {{value}}",
+    "NO_NEW_VERSION_AVAILABLE": "Nenhuma Nova Versão disponível",
+    "TOP_N_PROCESSES": "Top {{value}} processos",
     "SYSTEM": "Sistema",
-    "FILE_SYSTEM": "Sistema de arquivo",
+    "FILE_SYSTEM": "Sistema de Arquivo",
     "PROCESSES": "Processos",
-    "MOUNT_POINT": "Mount",
+    "MOUNT_POINT": "Montar",
     "AVG_LOAD": "AVG Load",
     "TOTAL": "Total",
     "USED": "Usado",
     "STATE": "Estado",
     "CHAT": "Chat",
     "MAIL": "Email",
-    "MESSAGING": "Sms",
+    "MESSAGING": "SMS",
     "FAX": "Fax",
     "OPENCHANNEL": "Open Channel",
     "AGENTS": "Agentes",
     "USERS": "Usuários",
     "TELEPHONES": "Telefones",
-    "STAFF": "Funcionários",
-    "CHANNELS": "Channels",
-    "MODULES": "Modulos",
-    "CM": "Gerente de contatos",
+    "STAFF": "Colaboradores",
+    "CHANNELS": "Canais",
+    "MODULES": "Módulos",
+    "CM": "Gestão de Contatos",
     "DIALER": "Discador",
     "JSCRIPTY": "Jscripty",
-    "CUSTOM": "Costumização",
+    "CUSTOM": "Customização",
     "UPDATE": "Atualizar",
     "OTHERS": "Outros",
     "SETTINGS": "Configurações",
     "LICENSE": "Licença",
     "ID": "Id",
     "MIN_INTERNAL": "Min Interno",
-    "MIN_MAILBOX": "Min Caixa de correio",
+    "MIN_MAILBOX": "Min Caixa de Entrada",
     "INSTALLED_AT": "Instalado em",
     "SEARCH_FOR_ANYONE": "Procurar",
     "EDIT_GENERAL": "Editar Geral",
     "SECURE_PASSWORD": "Senha Segura",
-    "LOGO": "Logotipo",
-    "DEFAULT_LOGO": "Logotipo padrão",
-    "DEFAULT_LOGIN_LOGO": "Logon de login padrão",
+    "LOGO": "Logomarca",
+    "DEFAULT_LOGO": "Logomarca Padrão",
+    "DEFAULT_LOGIN_LOGO": "Logomarca de Login Padrão",
     "WHITELABEL": "White Label",
-    "DEFAULT_HEADER_WHITELABEL": "Cabeçalho padrão White Label",
-    "HEADER_WHITELABEL": "Cabeçalho White Label",
+    "DEFAULT_HEADER_WHITELABEL": "Cabeçalho Padrão White Label",
+    "HEADER_WHITELABEL": "Cabeçalho do White Label",
     "CREATED_AT": "Criado em",
     "SAVE": "Salvar",
     "SMTP_SERVICE": "Serviço",
     "SMTP_SECURE": "Segurança",
     "TYPE": "Tipo",
     "ADDRESS": "Endereço",
-    "NEW_NETWORK": "Nova rede",
+    "NEW_NETWORK": "Nova Rede",
     "ADD_NETWORK": "Adicionar Rede",
     "HELP": {
-      "ADDRESS": "Endereço IP externo (público)",
-      "LOCALNETADDRESS": "Endereço IP / sub-rede local",
-      "SMTP_SECURE": "Se for verdade, a conexão com o servidor usará o TLS",
+      "ADDRESS": "Endereço de IP externo (público)",
+      "LOCALNETADDRESS": "Endereço IP / Sub-Rede da LAN",
+      "SMTP_SECURE": "Se habilitado, a conexão com o servidor usará o TLS",
       "SMTP_USERNAME": "Usuário usado para autenticação",
       "SMTP_PASSWORD": "Senha usada para autenticação",
-      "EMAILADDRESS": "A origem da mensagem Endereço de email (de)",
-      "SECURITY_SUITE": "Habilita o formato de senha segura, a redefinição obrigatória da senha após o primeiro login e a expiração da senha após 90 dias",
-      "MOTIONBARREMEMBERME": "Ativar / desativar o recurso Lembrar-me no Motion Phonebar",
-      "RTLSUPPORT": "Ativa o suporte RTL para os idiomas árabe, persa e hebraico",
-      "DEFAULTSCREENRECORDINGPATH": "Digite o caminho para armazenar os arquivos de gravação de tela no computador do agente (deixe em branco para o caminho padrão da pasta de vídeo)",
+      "EMAILADDRESS": "O Endereço de email da origem (from)",
+      "SECURITY_SUITE": "Habilita política de senha com redefinição obrigatória da\napós o primeiro login e a expiração após 90 dias",
+      "MOTIONBARREMEMBERME": "Ativar / desativar o recurso de Agendamento no Motion Phonebar",
+      "RTLSUPPORT": "Ativa o suporte RTL para os idiomas Árabe, Persa e Hebraico",
+      "DEFAULTSCREENRECORDINGPATH": "Digite o caminho para armazenar os arquivos de Gravação de Tela no computador do agente (deixe em branco para o caminho padrão)",
       "LOGINMAILFREQUENCY": "Lembre-se de reiniciar o serviço EMAIL sempre que esse parâmetro for alterado",
       "PASSWORD": "Senha",
-      "USERNAME": "Nome do usuário",
-      "ENFORCE_PASSWORD_HISTORY": "Habilita a validação contra senhas usadas anteriormente",
-      "PASSWORD_HISTORY_LIMIT": "Número das últimas senhas exclusivas usadas para verificar",
-      "SEARCH_ON_ENTER_KEY": "Comece a pesquisar somente depois que o agente pressionar a tecla Enter",
+      "USERNAME": "Nome do Usuário",
+      "ENFORCE_PASSWORD_HISTORY": "Habilita validação de senhas usadas anteriormente",
+      "PASSWORD_HISTORY_LIMIT": "Número de senhas usadas a serem lembradas para verificação",
+      "SEARCH_ON_ENTER_KEY": "Inicia a pesquisa somente depois que o agente pressionar a tecla Enter",
       "INTERACTIONS_RELOAD_TIMEOUT": "Intervalo de tempo em segundos após o qual as interações são recarregadas (0 = atualização em tempo real)",
       "PRIVACY_POLICY": "Número de caracteres que serão substituídos por um asterisco (*) (0 = todos os caracteres)",
-      "CLIENT_SECRET": "O segredo não estará mais visível depois que a configuração for salva. Guarde-o com segurança se quiser usá-lo em outro lugar.",
-      "LIMIT_TABS": "Número máximo de abas de interação possíveis abertas",
-      "PREVIEW_RECALLME_REMINDER_INTERVAL": "Intervalo de tempo em minutos antes do qual a notificação será enviada ao agente informando-o sobre a recuperação da visualização a ser feita"
+      "CLIENT_SECRET": "A senha não estará mais visível depois que a configuração for salva. Guarde-o com segurança se quiser usá-lo em outro lugar.",
+      "LIMIT_TABS": "Número máximo permitido de abas de interação abertas",
+      "PREVIEW_RECALLME_REMINDER_INTERVAL": "Intervalo de tempo em minutos antes de enviar notificação ao agente informando-o sobre rechamada a ser feita"
     },
     "ERRORS": {
       "CHATTIMEOUT_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"
     },
-    "EDIT_NETWORK": "Editar rede",
-    "DELETE_NETWORK": "Excluir rede",
+    "EDIT_NETWORK": "Editar Rede",
+    "DELETE_NETWORK": "Excluir Rede",
     "BACK": "Voltar",
     "SELECTED": "Selecionado",
-    "SELECT_ALL": "Selecionar tudo",
-    "SELECT_NONE": "Selecione nenhum",
-    "EXPIRATION_DATE": "Data de validade",
-    "REQUEST_LICENSE": "Solicitar licença",
+    "SELECT_ALL": "Selecionar Tudo",
+    "SELECT_NONE": "Selecione Nenhum",
+    "EXPIRATION_DATE": "Data de Validade",
+    "REQUEST_LICENSE": "Solicitar Licença",
     "EMAIL": "Email",
     "SEND": "Enviar",
     "PLAN": "Plano",
     "MONTH_TO_MONTH": "Mês a mês",
-    "MOTION_PROCESS_MANAGEMENT": "Gerenciamento de Processos de Movimento",
+    "MOTION_PROCESS_MANAGEMENT": "Gerenciamento de Processos do Motion",
     "USEFUL_COMMANDS": "Comandos Úteis",
     "COMMAND": "Comando",
     "PM2_LIST": "Listar todos os processos",
     "PM2_START": "Iniciar um processo por id ou nome",
-    "PM2_STOP": "Pare um processo por id ou nome ou insira 'todos' para parar todos os processos ativos",
-    "PM2_RESTART": "Reinicie um processo por id ou nome",
-    "PM2_LOGS": "Transmitir todos os arquivos de log de processos, a menos que um ID ou nome de processo específico seja fornecido",
+    "PM2_STOP": "Parar um processo por id ou nome, insira 'all' para parar todos os processos ativos",
+    "PM2_RESTART": "Reiniciar um processo por id ou nome",
+    "PM2_LOGS": "Enviar todos os arquivos de log de todos os processos, a menos que um ID ou nome de processo seja especificado",
     "PASSWORD": "Senha",
     "NO_AVAILABLE_INFO": "Nenhuma informação disponível",
-    "STUNADDR": "Endereço do STUN",
+    "STUNADDR": "Endereço STUN",
     "CHANGELOG": "Changelog",
-    "CURRENT_VERSION": "Versão Atual",
-    "CUSTOMIZATIONS": "Personalizações",
-    "LOCALNETADDRESS": "Endereço de Localnet",
-    "NEW_VERSION": "Nova versão",
-    "TRIAL_VERSION": "Versão de teste",
+    "CURRENT_VERSION": "Versão atual",
+    "CUSTOMIZATIONS": "Customizações",
+    "LOCALNETADDRESS": "Endereço de LAN",
+    "NEW_VERSION": "Nova Versão",
+    "TRIAL_VERSION": "Versão de Teste",
     "TOKEN": "Token",
-    "NEW_TOKEN_DETECTED": "Novo Token detectado",
-    "EXPIRATION_GRAY_PERIOD": "Expiração do período cinza",
+    "NEW_TOKEN_DETECTED": "Novo Token Detectado",
+    "EXPIRATION_GRAY_PERIOD": "Período Próximo da Expiração (Gray Period)",
     "NEW_TOKEN": "Novo Token",
     "PRICES": "Preços",
     "UPDATE_LICENSE": "Atualização de Licença",
-    "LOGOLOGIN": "Login Logo",
-    "EXPIRATION_REASON": "Razão de Expiração",
+    "LOGOLOGIN": "Logomarca de Login",
+    "EXPIRATION_REASON": "Motivo de Expiração",
     "GLOBAL": "Global",
     "SMTP_AUTHENTICATION": "Autenticação",
-    "LICENSE_REQUEST_SENT": "Obrigado! A Equipe de Licenciamento verificará sua conta o mais rápido possível para aprovar sua solicitação: você receberá um e-mail quando as alterações entrarem em vigor. Por favor, consulte license@xcally.com para mais informações.",
-    "ACCOUNTNAME": "Nome da conta",
+    "LICENSE_REQUEST_SENT": "Obrigado! A Equipe de Licenciamento verificará sua solicitação.",
+    "ACCOUNTNAME": "Nome da Conta",
     "EMAILADDRESS": "Endereço de e-mail",
     "EXPIRATION_REASON_MESSAGE_DISABLED": "Sua licença foi desativada.",
-    "EXPIRATION_REASON_MESSAGE_CHANGED": "O ID exclusivo da sua máquina foi atualizado devido a uma alteração no seu sistema.",
-    "EXPIRATION_CHANGED_ADVISE": "Entre em contato com xCALLY Motion License Team enviando tanto o seu antigo como o novo uuid.",
+    "EXPIRATION_REASON_MESSAGE_CHANGED": "O ID único do seu servidor foi atualizado devido a uma alteração no seu sistema.",
+    "EXPIRATION_CHANGED_ADVISE": "Entre em contato com a equipe do XCALLY Motion enviando uuid antigo e o novo.",
     "OLD_TOKEN": "Token Antigo",
-    "SEND_EMAIL_TO": "Enviar email para",
-    "JIRA_ERROR_MESSAGE": "Erro durante o pedido de licença. Por favor, entre em contato com nossa equipe de licenças em license@xcally.com com sua solicitação",
+    "SEND_EMAIL_TO": "Enviar Email para",
+    "JIRA_ERROR_MESSAGE": "Erro durante a requisição de licença. Por favor, entre em contato com nossa equipe de suporte",
     "PAGE": "Página",
     "ROWSPERPAGE": "Linhas por página",
     "OF": "do",
     "PERPETUAL": "Perpétuo",
     "SECURITY_SUITE": "Suíte de Segurança",
     "ANNUALLY": "Anualmente",
-    "AGENTOMNIDESKTOPINTERFACE": "Interface do Omni Desktop do agente",
+    "AGENTOMNIDESKTOPINTERFACE": "Agent Omni Desktop Interface",
     "MESSAGESALIGNMENT": "Alinhamento de Mensagens",
     "ENTER_LICENSE": "Digite sua licença",
     "UPDATE_LICENSE_MANUALLY": "Você quer atualizar sua licença manualmente?",
-    "RTLSUPPORT": "Suporte RTL",
-    "DEFAULTSCREENRECORDINGPATH": "Caminho de gravação de tela",
-    "SCREENRECORDING": "Gravação de tela",
+    "RTLSUPPORT": "Suporte a RTL",
+    "DEFAULTSCREENRECORDINGPATH": "Caminho de Gravação de Tela",
+    "SCREENRECORDING": "Gravação de Tela",
     "VIDEO": "Vídeo",
     "BLOCKDURATION": "Minutos para esperar antes do desbloqueio automático",
     "SECURITY": "Segurança",
     "ALLOWEDLOGINATTEMPTS": "Tentativas de login permitidas antes de bloquear o usuário / agente",
-    "DEFAULT_FAVICON": "Favicon padrão",
+    "DEFAULT_FAVICON": "Favicon Padrão",
     "FAVICON": "Favicon",
     "IMAPGENERALSETTINGS": "IMAP",
-    "LOGINMAILFREQUENCY": "Frequência de email de login (s)",
-    "USERNAME": "Nome do usuário",
-    "GOOGLE_SSO_ENABLED": "SSO do Google ativado",
+    "LOGINMAILFREQUENCY": "Frequência de login de email (seg)",
+    "USERNAME": "Nome do Usuário",
+    "GOOGLE_SSO_ENABLED": "Google SSO Ativado",
     "SSO": "SSO",
-    "ACCESSKEY": "ID da chave de acesso",
+    "ACCESSKEY": "ID da Chave de Acesso",
     "ADD_CLOUDPROVIDER": "Adicionar Conta",
-    "AI": "A.I. Ferramentas",
-    "AITOOLS": "A.I. Ferramentas",
+    "AI": "Ferramentas de I.A.",
+    "AITOOLS": "Ferramentas de I.A.",
     "APPZONE": "App Zone",
-    "BUCKET": "Balde",
+    "BUCKET": "Bucket",
     "DELETE": "Excluir",
-    "DELETE_CLOUDPROVIDER": "Deletar conta",
-    "EDIT_CLOUDPROVIDER": "Editar conta",
-    "LANGUAGE": "Língua",
-    "NEW_CLOUDPROVIDER": "Nova conta",
-    "SECRETACCESSKEY": "Chave de acesso secreta",
-    "SENTIMENTACCOUNT": "Conta de análise de sentimento",
-    "SENTIMENTANALYSIS": "Análise de sentimentos",
-    "SENTIMENTREGION": "Região de análise de sentimento",
+    "DELETE_CLOUDPROVIDER": "Excluir Conta",
+    "EDIT_CLOUDPROVIDER": "Editar Conta",
+    "LANGUAGE": "Idioma",
+    "NEW_CLOUDPROVIDER": "Nova Conta",
+    "SECRETACCESSKEY": "Chave de Acesso Secreta",
+    "SENTIMENTACCOUNT": "Conta de Análise de Sentimento",
+    "SENTIMENTANALYSIS": "Análise de Sentimentos",
+    "SENTIMENTREGION": "Região de Análise de Sentimento",
     "SERVICE": "Serviço",
-    "TRANSCRIBE": "Transcrever",
-    "TRANSCRIBEACCOUNT": "Transcrever conta",
-    "TRANSCRIBEREGION": "Transcrever região",
-    "WHATSAPP": "Conector WhatsApp",
-    "ENFORCE_PASSWORD_HISTORY": "Aplicar histórico de senha",
-    "PASSWORD_HISTORY_LIMIT": "Limite de histórico de senha",
-    "SEARCH_ON_ENTER_KEY": "Pesquisa na tecla Enter",
-    "CHAT_INTERACTIONS_RELOAD_TIMEOUT": "Tempo limite de recarga de interações de bate-papo",
-    "MAIL_INTERACTIONS_RELOAD_TIMEOUT": "Tempo limite de recarga de interações por email",
-    "OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT": "Tempo limite de recarga de interações de canal aberto",
-    "SMS_INTERACTIONS_RELOAD_TIMEOUT": "Tempo limite de recarga de interações de SMS",
-    "WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT": "Tempo limite de recarga das interações do Conector WhatsApp",
-    "PRIVACY_POLICY_EMAIL": "Política de privacidade para endereços de e-mail",
-    "PRIVACY_POLICY_NAME": "Política de privacidade para nomes",
-    "PRIVACY_POLICY_NUMBER": "Política de privacidade para números",
-    "STOP_RECORDING_ON_VOICE_CALL_TRANSFER": "Pare de gravar na transferência de chamada de voz",
+    "TRANSCRIBE": "Transcrição",
+    "TRANSCRIBEACCOUNT": "Conta de Transcrição",
+    "TRANSCRIBEREGION": "Região de Transcrição",
+    "WHATSAPP": "WhatsApp Connector",
+    "ENFORCE_PASSWORD_HISTORY": "Aplicar Histórico de Senha",
+    "PASSWORD_HISTORY_LIMIT": "Limite de Histórico de Senha",
+    "SEARCH_ON_ENTER_KEY": "Procurar ao pressionar Enter",
+    "CHAT_INTERACTIONS_RELOAD_TIMEOUT": "Timeout para recarregar interações de chat",
+    "MAIL_INTERACTIONS_RELOAD_TIMEOUT": "Timeout para recarregar interações de Email",
+    "OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT": "Timeout para recarregar interações do Open Channel",
+    "SMS_INTERACTIONS_RELOAD_TIMEOUT": "Timeout para recarregar interações de SMS",
+    "WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT": "Timeout para recarregar interações do WhatsApp Connector",
+    "PRIVACY_POLICY_EMAIL": "Política de Privacidade para endereços de Email",
+    "PRIVACY_POLICY_NAME": "Política de Privacidade para Nomes",
+    "PRIVACY_POLICY_NUMBER": "Política de Privacidade para Números",
+    "STOP_RECORDING_ON_VOICE_CALL_TRANSFER": "Pare de gravar quando transferir chamada",
     "AD_SSO_ENABLED": "Active Directory SSO habilitado",
-    "APPLICATION_ID": "ID do aplicativo",
+    "APPLICATION_ID": "ID do Aplicativo",
     "AUTHENTICATE": "Autenticar",
     "AUTHENTICATE_TO_MICROSOFT_IDENTITY_PLATFORM": "Autenticar no Microsoft Identity Platform",
-    "CLIENT_SECRET": "Segredo do cliente",
-    "CLIPBOARD": "Prancheta",
-    "CLOUD_PROVIDERS": "Provedores de nuvem",
+    "CLIENT_SECRET": "Senha do Cliente",
+    "CLIPBOARD": "Área de transferência",
+    "CLOUD_PROVIDERS": "Provedores de Nuvem",
     "COPIED_TO_CLIPBOARD": "Token copiado para a área de transferência",
     "COPY_LICENSE": "Copiar token para a área de transferência",
     "DISABLED_COOKIE": "Banner de cookies",
-    "DOWNLOAD_LICENSE_LOG_FILE": "Baixar arquivo de registro de licença",
-    "LICENSE_LOG_FILE": "Arquivo de registro de licença",
-    "LICENSE_LOG_FILE_DOWNLOADED": "Arquivo de registro de licença baixado!",
-    "LIMIT_TABS": "Limite da guia de interação",
-    "MICROSOFT_AUTHENTICATION_FAIL": "Algo deu errado durante a autenticação na Microsoft Identity Platform",
-    "MICROSOFT_AUTHENTICATION_SUCCESS": "Autenticação para a Microsoft Identity Platform concluída com sucesso",
-    "NEW_CLIENT_SECRET": "Novo segredo do cliente",
-    "PREVIEW_RECALLME_REMINDER_INTERVAL": "Intervalo de lembrete de rechamada de visualização",
-    "REDIRECT_URI": "URI de redirecionamento",
-    "REMOTE_URI": "URI remoto",
-    "TENANT_ID": "Id do inquilino",
-    "UPDATE_CLIENT_SECRET": "Atualizar segredo do cliente"
+    "DOWNLOAD_LICENSE_LOG_FILE": "Download de arquivo de log de licença",
+    "LICENSE_LOG_FILE": "Arquivo de log de licença",
+    "LICENSE_LOG_FILE_DOWNLOADED": "Download concluído do arquivo de log de licença!",
+    "LIMIT_TABS": "Limite da abas de interação",
+    "MICROSOFT_AUTHENTICATION_FAIL": "Erro durante a autenticação no Microsoft Identity Platform",
+    "MICROSOFT_AUTHENTICATION_SUCCESS": "Autenticação no Microsoft Identity Platform concluída com sucesso",
+    "NEW_CLIENT_SECRET": "Nova Senha do Cliente",
+    "PREVIEW_RECALLME_REMINDER_INTERVAL": "Intervalo de Lembrete de Agendamento",
+    "REDIRECT_URI": "URI de Redirecionamento",
+    "REMOTE_URI": "URI Remoto",
+    "TENANT_ID": "ID da Instância",
+    "UPDATE_CLIENT_SECRET": "Atualizar Senha do Cliente"
   }
 }
index 9f9a57b..9c84ccf 100644 (file)
 {
   "SMS": {
-    "EDIT_DIALOGFLOWV2": "Edit Dialogflow V2",
+    "EDIT_DIALOGFLOWV2": "Breyta Dialogflow V2",
     "DIALOGFLOWV2": "Dialogflow V2",
-    "PRIVATEKEY": "Private Key",
-    "CLIENTEMAIL": "Client Email",
-    "PROJECTID": "Project ID",
+    "PRIVATEKEY": "Leyniorð",
+    "CLIENTEMAIL": "Netfang viðskiptavinar",
+    "PROJECTID": "Auðkenni verkefnis",
     "AMAZONLEX": "AmazonLex",
-    "EDIT_AMAZONLEX": "Edit Lex configuration",
-    "ACCESSKEYID": "Access key ID",
-    "SECRETACCESSKEY": "Access key secret",
-    "LEXREGION": "Region",
-    "BOTNAME": "Bot name",
-    "WELCOMEMESSAGE": "Welcome message",
-    "LOGIN_TIME": "Login time",
-    "PAUSE_TIME": "Pause time",
-    "DOWNLOAD_INTERACTION": "Download",
-    "TRANSFER": "Transfer",
-    "QUEUETRANSFER": "Queue Transfer",
-    "QUEUETRANSFERTIMEOUT": "Queue Transfer Timeout",
-    "AGENTTRANSFER": "Agent Transfer",
-    "AGENTTRANSFERTIMEOUT": "Agent Transfer Timeout",
+    "EDIT_AMAZONLEX": "Breyta Lex stillingum",
+    "ACCESSKEYID": "Auðkennislykill",
+    "SECRETACCESSKEY": "Leyniorð",
+    "LEXREGION": "Svæði",
+    "BOTNAME": "Bot nafn",
+    "WELCOMEMESSAGE": "Velkominn skilaboð",
+    "LOGIN_TIME": "Innskráningar tími",
+    "PAUSE_TIME": "Tími á hlé",
+    "DOWNLOAD_INTERACTION": "Niðurhal",
+    "TRANSFER": "Flytja",
+    "QUEUETRANSFER": "Röð flutt",
+    "QUEUETRANSFERTIMEOUT": "Tíminn rann út á flutningi biðraðar",
+    "AGENTTRANSFER": "Flyt fulltrúa",
+    "AGENTTRANSFERTIMEOUT": "Tíminn rann út á flutningi á fullrúa",
     "TAG": "Tag",
-    "EDIT_TAG": "Edit Tag",
-    "WAITFORTHEASSIGNEDAGENT": "Wait for the assigned agent",
-    "NOTIFICATION": "Notification",
-    "NOTIFICATIONSOUND": "Sound",
-    "NOTIFICATIONSHAKE": "Shake",
-    "NOTIFICATIONTEMPLATE": "Template",
-    "SYSTEM": "System",
-    "EDIT_SYSTEM": "Edit System",
-    "COMMAND": "Command",
-    "VARIABLE": "Variable",
-    "AUTHID": "Auth ID",
-    "NO_SMSDISPOSITIONS_AVAILABLE": "No Sms Disposition Available",
-    "CANNEDANSWERS": "Canned Answers",
-    "SMSCANNEDANSWERS": "Canned Answers",
-    "NO_SMSCANNEDANSWER_AVAILABLE": "No Canned Answers Available",
-    "NEW_SMSCANNEDANSWER": "New Canned Answer",
-    "ADD_SMSCANNEDANSWER": "Add Canned Answer",
-    "EDIT_SMSCANNEDANSWER": "Edit",
-    "DELETE_SMSCANNEDANSWER": "Delete",
-    "DELIVERYREPORTURL": "Delivery Report URL",
-    "DELETE": "Delete",
-    "SENDERSTRING": "Sender String",
-    "DELIVERYREPORT": "Delivery Report",
-    "METHOD": "Method",
-    "ADD_NOTE": "Add note",
-    "NOTE": "Note",
+    "EDIT_TAG": "Breyta Tag",
+    "WAITFORTHEASSIGNEDAGENT": "Bíddu eftir skráðum fulltrúa",
+    "NOTIFICATION": "Tilkynning",
+    "NOTIFICATIONSOUND": "Hljóð",
+    "NOTIFICATIONSHAKE": "Hrista",
+    "NOTIFICATIONTEMPLATE": "Sniðmát",
+    "SYSTEM": "Kerfi",
+    "EDIT_SYSTEM": "Breyta kerfinu",
+    "COMMAND": "Skipun",
+    "VARIABLE": "Breyta",
+    "AUTHID": "Auðkeni",
+    "NO_SMSDISPOSITIONS_AVAILABLE": "Engin SMS ráðstöfun til",
+    "CANNEDANSWERS": "Tengd svör",
+    "SMSCANNEDANSWERS": "Tengd svör",
+    "NO_SMSCANNEDANSWER_AVAILABLE": "Ekkert tengt svar til",
+    "NEW_SMSCANNEDANSWER": "Nýtt tengt svar",
+    "ADD_SMSCANNEDANSWER": "Bættu við tengdu svari",
+    "EDIT_SMSCANNEDANSWER": "Breyta",
+    "DELETE_SMSCANNEDANSWER": "Eyða",
+    "DELIVERYREPORTURL": "URL fyrir afhendingarskýrslu",
+    "DELETE": "Eyða",
+    "SENDERSTRING": "Strengur sendanda",
+    "DELIVERYREPORT": "Afhendingar skýrslu",
+    "METHOD": "Aðferð",
+    "ADD_NOTE": "Bættu við skilaboðum",
+    "NOTE": "Skilaboð",
     "SPYINTERACTION": "Spy",
-    "AUTOREPLY": "Auto Reply",
-    "EDIT_AUTOREPLY": "Edit Auto Reply",
-    "TIMES": "Number of times per interaction",
-    "TEXT": "Text",
-    "INSERT_MESSAGE_HERE": "Insert your text message here",
-    "CANNED_ANSWER_NOT_FOUND": "No Canned Answers were found",
-    "CANNED_ANSWER_SEARCH": "Enter a text to search a Canned Answer",
-    "SEND": "Send",
-    "TO": "To",
-    "MESSAGE": "Message",
-    "TAGS": "Tags",
-    "NO_AGENT_ONLINE": "No Agent Online",
-    "GOTOREALTIME_SMSQUEUE": "Go To Realtime Sms Queue",
-    "PARTIALPAUSE": "Parital Pause",
-    "BUSY": "Busy",
-    "TIMER": "Timer",
+    "AUTOREPLY": "Sjálfvirkt svar",
+    "EDIT_AUTOREPLY": "Breyta sjálfvirku svari",
+    "TIMES": "Fjöldi skipta á hver samskipti",
+    "TEXT": "Texti",
+    "INSERT_MESSAGE_HERE": "Settu inn texta skilaboðin þín hér",
+    "CANNED_ANSWER_NOT_FOUND": "Engin tengd svör fundust",
+    "CANNED_ANSWER_SEARCH": "Settu inn texta til að leita að tengdum svörum",
+    "SEND": "Senda",
+    "TO": "Til",
+    "MESSAGE": "Skilaboð",
+    "TAGS": "Tögg",
+    "NO_AGENT_ONLINE": "Engin fulltrúi tengdur",
+    "GOTOREALTIME_SMSQUEUE": "Farðu í rauntíma SMS biðröð",
+    "PARTIALPAUSE": "Hluta hlé",
+    "BUSY": "Upptekin",
+    "TIMER": "Teljari",
     "IDLE": "Idle",
-    "CAPACITY": "Capacity",
+    "CAPACITY": "Geta",
     "PROXY": "Proxy",
-    "ADVANCED": "Advanced",
+    "ADVANCED": "Ítarlegt",
     "MOTIONPROXY": "Proxy Or Motion Domain",
-    "REALTIME": "Realtime",
-    "KEY": "Key",
-    "NAME": "Name",
-    "SMSQUEUES": "SMS Queues",
-    "SEARCH_FOR_ANYONE": "Search",
-    "STRATEGY": "Strategy",
-    "BASEURL": "Base URL",
-    "MANDATORYDISPOSITION": "Mandatory disposition",
-    "MANDATORYDISPOSITIONPAUSEID": "Pause to use when mandatory disposition is enabled",
+    "REALTIME": "Rauntími",
+    "KEY": "Lykill",
+    "NAME": "Nafn",
+    "SMSQUEUES": "SMS Biðraðir",
+    "SEARCH_FOR_ANYONE": "Leita",
+    "STRATEGY": "Stefna",
+    "BASEURL": "Grunn URL",
+    "MANDATORYDISPOSITION": "Skilyrt ráðstöfun",
+    "MANDATORYDISPOSITIONPAUSEID": "Gera hlé til að nota þegar skilyrt ráðstöfun er virkjuð",
     "ERRORS": {
-      "PROJECTID_REQUIRED": "Mandatory Field",
-      "CLIENTEMAIL_REQUIRED": "Mandatory Field",
-      "PRIVATEKEY_REQUIRED": "Mandatory Field",
-      "ACCESSKEYID_REQUIRED": "Access key ID is required",
+      "PROJECTID_REQUIRED": "Skilyrtur reytur",
+      "CLIENTEMAIL_REQUIRED": "Skilyrtur reytur",
+      "PRIVATEKEY_REQUIRED": "Skilyrtur reytur",
+      "ACCESSKEYID_REQUIRED": "Aðgangsauðkenni er nauðsynlegt",
       "SECRETACCESSKEY_REQUIRED": "Access key secret is required",
-      "BOTNAME_REQUIRED": "Bot name is required",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "BOTNAME_REQUIRED": "Botta nafnið er skilyrt",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
       "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "QUEUETRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "AGENTTRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
-      "TAG_REQUIRED": "Mandatory Field",
+      "QUEUETRANSFERTIMEOUT_REQUIRED": "Skilyrtur reytur",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og ",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "AGENTTRANSFERTIMEOUT_REQUIRED": "Skilyrtur reytur",
+      "TAG_REQUIRED": "Skilyrtur reytur",
       "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Mandatory Field",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Skilyrtur reytur",
+      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
       "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "NAME_MUST_VALID_PATTERN": "Wrong format",
-      "COMMAND_REQUIRED": "Mandatory Field",
-      "AUTHID_REQUIRED": "Mandatory Field",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "NAME_MUST_VALID_PATTERN": "Rangt snið",
+      "COMMAND_REQUIRED": "Skilyrtur reytur",
+      "AUTHID_REQUIRED": "Skilyrtur reytur",
       "TEXT_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "TEXT_REQUIRED": "Mandatory Field",
-      "VALUE_REQUIRED": "Mandatory Field",
+      "TEXT_REQUIRED": "Skilyrtur reytur",
+      "VALUE_REQUIRED": "Skilyrtur reytur",
       "SENDERSTRING_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "SENDERSTRING_MUST_VALID_PATTERN": "Wrong format",
-      "METHOD_REQUIRED": "Mandatory Field",
-      "MOTIONPROXY_REQUIRED": "Mandatory Field",
-      "MOTIONPROXY_MUST_VALID_URL": "Wrong format",
-      "KEY_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "KEY_REQUIRED": "Mandatory Field",
-      "NAME_REQUIRED": "Mandatory Field",
-      "AGENT_TIMEOUT_REQUIRED": "Mandatory Field",
-      "PHONE_REQUIRED": "Mandatory Field",
-      "SID_REQUIRED": "Mandatory Field",
-      "TOKEN_REQUIRED": "Mandatory Field",
-      "USERNAME_REQUIRED": "Mandatory Field",
-      "PASSWORD_REQUIRED": "Mandatory Field",
-      "MOTIONADDRESS_REQUIRED": "Mandatory Field",
-      "MOTIONADDRESS_MUST_VALID_URL": "Wrong format",
-      "ACCEPTURL_MUST_VALID_URL": "Wrong format",
-      "TIMEOUT_REQUIRED": "Mandatory Field",
-      "REJECTURL_MUST_VALID_URL": "Wrong format",
-      "CLOSEURL_MUST_VALID_URL": "Wrong format",
-      "TYPE_REQUIRED": "Mandatory Field",
-      "LIST_REQUIRED": "Mandatory Field",
-      "PRIORITY_REQUIRED": "Mandatory Field",
-      "CONDITION_REQUIRED": "Mandatory Field",
-      "TRUEPRIORITY_REQUIRED": "Mandatory Field",
-      "FALSEPRIORITY_REQUIRED": "Mandatory Field",
-      "AGENT_REQUIRED": "Mandatory Field",
-      "QUEUE_REQUIRED": "Mandatory Field",
-      "DISPOSITION_REQUIRED": "Mandatory Field",
-      "ACCOUNTSID_REQUIRED": "Mandatory Field",
-      "AUTHTOKEN_REQUIRED": "Mandatory Field",
-      "BASEURL_REQUIRED": "Mandatory Field",
-      "APIKEY_REQUIRED": "Mandatory Field",
-      "APPLICATIONID_REQUIRED": "Mandatory Field",
-      "ACCOUNTID_REQUIRED": "Mandatory Field",
-      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Mandatory field"
+      "SENDERSTRING_MUST_VALID_PATTERN": "Rangt snið",
+      "METHOD_REQUIRED": "Skilyrtur reytur",
+      "MOTIONPROXY_REQUIRED": "Skilyrtur reytur",
+      "MOTIONPROXY_MUST_VALID_URL": "Rangt snið",
+      "KEY_MAX_LENGTH": "Gildið má að hámarki vera að lengd jafnt og {{max}}",
+      "KEY_REQUIRED": "Skilyrtur reytur",
+      "NAME_REQUIRED": "Skilyrtur reytur",
+      "AGENT_TIMEOUT_REQUIRED": "Skilyrtur reytur",
+      "PHONE_REQUIRED": "Skilyrtur reytur",
+      "SID_REQUIRED": "Skilyrtur reytur",
+      "TOKEN_REQUIRED": "Skilyrtur reytur",
+      "USERNAME_REQUIRED": "Skilyrtur reytur",
+      "PASSWORD_REQUIRED": "Skilyrtur reytur",
+      "MOTIONADDRESS_REQUIRED": "Skilyrtur reytur",
+      "MOTIONADDRESS_MUST_VALID_URL": "Rangt snið",
+      "ACCEPTURL_MUST_VALID_URL": "Rangt snið",
+      "TIMEOUT_REQUIRED": "Skilyrtur reytur",
+      "REJECTURL_MUST_VALID_URL": "Rangt snið",
+      "CLOSEURL_MUST_VALID_URL": "Rangt snið",
+      "TYPE_REQUIRED": "Skilyrtur reytur",
+      "LIST_REQUIRED": "Skilyrtur reytur",
+      "PRIORITY_REQUIRED": "Skilyrtur reytur",
+      "CONDITION_REQUIRED": "Skilyrtur reytur",
+      "TRUEPRIORITY_REQUIRED": "Skilyrtur reytur",
+      "FALSEPRIORITY_REQUIRED": "Skilyrtur reytur",
+      "AGENT_REQUIRED": "Skilyrtur reytur",
+      "QUEUE_REQUIRED": "Skilyrtur reytur",
+      "DISPOSITION_REQUIRED": "Skilyrtur reytur",
+      "ACCOUNTSID_REQUIRED": "Skilyrtur reytur",
+      "AUTHTOKEN_REQUIRED": "Skilyrtur reytur",
+      "BASEURL_REQUIRED": "Skilyrtur reyturd",
+      "APIKEY_REQUIRED": "Skilyrtur reytur",
+      "APPLICATIONID_REQUIRED": "Skilyrtur reytur",
+      "ACCOUNTID_REQUIRED": "Skilyrtur reytur",
+      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Skilyrtur reytur"
     },
-    "AGENT_TIMEOUT": "Agent Timeout",
-    "DESCRIPTION": "Description",
-    "ADD_SMSQUEUE": "Add SMS Queue",
-    "EDIT_SMSQUEUE": "Edit SMS Queue",
-    "DELETE_SMSQUEUE": "Delete SMS Queue",
-    "SETTINGS": "Settings",
-    "GENERAL": "General",
-    "CREATED_AT": "Created At",
-    "SAVE": "Save",
-    "SMSACCOUNTS": "SMS Accounts",
-    "TYPE": "Type",
-    "PHONE": "Phone",
+    "AGENT_TIMEOUT": "Tíminn rann út á fulltrúa",
+    "DESCRIPTION": "Lýsing",
+    "ADD_SMSQUEUE": "Bættu við SMS biðröð",
+    "EDIT_SMSQUEUE": "Breyta SMS biðröð",
+    "DELETE_SMSQUEUE": "Eyða SMS biðröð",
+    "SETTINGS": "Stillingar",
+    "GENERAL": "Almennt",
+    "CREATED_AT": "Stofnað kl.",
+    "SAVE": "Geyma",
+    "SMSACCOUNTS": "SMS Reikningur",
+    "TYPE": "Tegund",
+    "PHONE": "Sími",
     "SID": "SID",
     "TOKEN": "Token",
-    "SMSTYPE": "SMS Type",
-    "USERNAME": "Username",
-    "PASSWORD": "Password",
-    "MOTIONADDRESS": "Motion Address",
-    "ADD_SMSACCOUNT": "Add SMS Account",
-    "EDIT_SMSACCOUNT": "Edit SMS Account",
-    "DELETE_SMSACCOUNT": "Delete SMS Account",
-    "LIST": "List",
+    "SMSTYPE": "SMS Tegund",
+    "USERNAME": "Notandanafn",
+    "PASSWORD": "Lykilorð",
+    "MOTIONADDRESS": "Motion adressa",
+    "ADD_SMSACCOUNT": "Bættu við SMS reikningi",
+    "EDIT_SMSACCOUNT": "Breyta SMS reikningi",
+    "DELETE_SMSACCOUNT": "Eyða SMS reikningi",
+    "LIST": "Listi",
     "FIDELITY": "Fidelity",
     "API": "API",
-    "DISPOSITIONS": "Dispositions",
-    "WEBHOOKS": "WebHooks",
-    "ACTIONS": "Actions",
-    "ACCEPT": "Accept",
-    "ACCEPTMETHOD": "Accept Method",
-    "ACCEPTURL": "Accept URL",
-    "REJECT": "Reject",
-    "REJECTMETHOD": "Reject Method",
-    "REJECTURL": "Reject URL",
-    "CLOSE": "Close",
-    "CLOSEMETHOD": "Close Method",
-    "CLOSEURL": "Close URL",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "BACK": "Back",
+    "DISPOSITIONS": "Ráðstafanir",
+    "WEBHOOKS": "Vefkrókar",
+    "ACTIONS": "Aðgerðir",
+    "ACCEPT": "Samþykja",
+    "ACCEPTMETHOD": "Samþykja aðferð",
+    "ACCEPTURL": "Samþykja URL",
+    "REJECT": "Hafna",
+    "REJECTMETHOD": "Höfnunaraðferð",
+    "REJECTURL": "Höfnunar URL",
+    "CLOSE": "Loka",
+    "CLOSEMETHOD": "Lokunar aðferð",
+    "CLOSEURL": "Loka URL",
+    "SELECTED": "Valið",
+    "SELECT_ALL": "Veldu allt",
+    "SELECT_NONE": "Veldu ekkert",
+    "BACK": "Til baka",
     "SMS": "SMS",
-    "ID": "Id",
+    "ID": "Auðkenni",
     "APIKEY": "ApiKey",
-    "APPLICATIONID": "Application ID",
-    "ACCOUNTID": "Account ID",
-    "CONFIRM_PASSWORD": "Confirm Password",
-    "SMSDISPOSITIONS": "SMS Dispositions",
-    "NO_SMSDISPOSITION_AVAILABLE": "No SMS Dispositions available",
-    "NEW_SMSDISPOSITION": "New SMS Disposition",
-    "ADD_SMSDISPOSITION": "Add SMS Disposition",
-    "EDIT_SMSDISPOSITION": "Edit SMS Disposition",
-    "DELETE_SMSDISPOSITION": "Delete SMS Disposition",
-    "NEW_SMSQUEUE": "New SMS Queue",
-    "NEW_SMSACCOUNT": "New SMS Account",
-    "NO_AVAILABLE_INFO": "No available info",
-    "ALL_TEAMS": "All Teams",
-    "SELECTED_TEAMS": "Selected Teams",
+    "APPLICATIONID": "Auðkenni forrits",
+    "ACCOUNTID": "Auðkenni reiknings",
+    "CONFIRM_PASSWORD": "Staðfestu lykilorð",
+    "SMSDISPOSITIONS": "SMS ráðstöfun",
+    "NO_SMSDISPOSITION_AVAILABLE": "Engin SMS ráðstöfun til",
+    "NEW_SMSDISPOSITION": "Ný SMS ráðstöfun",
+    "ADD_SMSDISPOSITION": "Bættu við SMS ráðstöfun",
+    "EDIT_SMSDISPOSITION": "Breyta SMS ráðstöfunum",
+    "DELETE_SMSDISPOSITION": "Eyða SMS ráðstöfun",
+    "NEW_SMSQUEUE": "Ný SMS röð",
+    "NEW_SMSACCOUNT": "Nýr SMS reikningur",
+    "NO_AVAILABLE_INFO": "Engar uppkýsingar fáanlegar",
+    "ALL_TEAMS": "Öll teymi",
+    "SELECTED_TEAMS": "Valdir hópar",
     "DIALOGFLOW": "DialogFlow",
-    "EDIT_DIALOGFLOW": "Edit DialogFlow configuration",
-    "LANGUAGE": "Language",
+    "EDIT_DIALOGFLOW": "Breyta DialogFlow stillingum",
+    "LANGUAGE": "Tungumál",
     "HELP": {
-      "WELCOMEMESSAGE": "This is the first response message sent to new interactions",
-      "MOTIONPROXY": "The field must have the following format: <protocol>://<ipaddress>[:<port>]. Example: https://X.Y.Z.W",
-      "NAME": "Only numbers, letters and specific characters (._) are supported",
-      "LIST": "Contact Manager list used to associate contacts",
-      "RECEIVEURL": "This is the auto-generated API string you need to use to receive the messages inside your account from your SMS provider (POST method must be used): click the clipboard button to copy it",
-      "DELIVERYREPORTURL": "This is the auto-generated API string you need to use to receive the delivery report of sent messages from your SMS provider (POST method must be used): click the clipboard button to copy it",
-      "MANDATORYDISPOSITION": "Mandatory disposition",
-      "MANDATORYDISPOSITIONPAUSEID": "Pause to use when mandatory disposition is enabled"
+      "WELCOMEMESSAGE": "Þetta eru fyrstu svarskilaboðin sem send eru vegna nýrra samskipta",
+      "MOTIONPROXY": "Reiturinn verður að hafa eftirfarandi snið: <samskiptareglur>://<ipadress>[:<gátt>]. Dæmi: https://X.Y.Z.W",
+      "NAME": "Aðeins tölur, stafir og sérstakir (._) eru studdir",
+      "LIST": "Tengiliðalisti notaður til að tengja tengiliði",
+      "RECEIVEURL": "Þetta er sjálfvirkt myndaður API strengur sem þú þarft að nota til að fá skilaboðin inni á reikninginn þinn frá SMS þjónustuveitunni þinni (nota verður POST aðferð): smelltu á klemmuspjaldhnappinn til að afrita hann",
+      "DELIVERYREPORTURL": "Þetta er sjálfvirki API-strengurinn sem þú þarft að nota til að fá sendingarskýrslu sendra skilaboða frá SMS-veitunni þinni (nota verður POST-aðferð): smelltu á klemmuspjald hnappinn til að afrita hann",
+      "MANDATORYDISPOSITION": "Skilyrt ráðstöfun",
+      "MANDATORYDISPOSITIONPAUSEID": "Gera hlé til að nota þegar skilyrt ráðstöfun er virkjuð"
     },
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
-    "OF": "of",
-    "TEAMADD_SMSQUEUE": "Add Team To SMS Queue",
-    "AGENTADD_SMSQUEUE": "Add Agent To SMS Queue",
-    "ALL_AGENTS": "All Agents",
-    "SELECTED_AGENTS": "Selected Agents",
-    "RECEIVEURL": "Receive URL",
-    "INTERACTION": "Interaction",
-    "INTERACTIONS": "Interactions",
-    "NO_INTERACTION_AVAILABLE": "No interactions available",
-    "CONTACT": "Contact",
-    "STARTEDAT": "Started At",
-    "LASTMESSAGE": "Last message",
-    "AGENT": "Agent",
-    "CLOSEDAT": "Closed At",
-    "DISPOSITION": "Disposition",
-    "NOTES": "Notes",
-    "GOTO": "Goto",
-    "GOTOIF": "Gotoif",
+    "PAGE": "Bls.",
+    "ROWSPERPAGE": "Línur á síðu",
+    "OF": "Af",
+    "TEAMADD_SMSQUEUE": "Bæta við hópi í SMS röð",
+    "AGENTADD_SMSQUEUE": "Bættu við fulltrúa í SMS biðröð",
+    "ALL_AGENTS": "allir fulltrúar",
+    "SELECTED_AGENTS": "Valdir fulltrúar",
+    "RECEIVEURL": "Móttöku URL",
+    "INTERACTION": "Samskipti",
+    "INTERACTIONS": "Samskipti",
+    "NO_INTERACTION_AVAILABLE": "Engin samskipti til staðar",
+    "CONTACT": "Tengiliður",
+    "STARTEDAT": "Byrjað kl.",
+    "LASTMESSAGE": "Síðustu skilaboð",
+    "AGENT": "Fulltrúi",
+    "CLOSEDAT": "Lokað kl.",
+    "DISPOSITION": "Til ráðstöfunar",
+    "NOTES": "Skilaboð",
+    "GOTO": "Farðu á",
+    "GOTOIF": "Farðu á ef",
     "NOOP": "Noop",
-    "QUEUE": "Queue",
-    "TIMEOUT": "Timeout",
-    "VALUE": "Value",
-    "EDIT_AGENT": "Edit Agent",
-    "EDIT_GOTO": "Edit Goto",
-    "EDIT_NOOP": "Edit Noop",
-    "EDIT_GOTOIF": "Edit Gotoif",
-    "EDIT_QUEUE": "Edit Queue",
-    "CONDITION": "Condition",
-    "TRUEPRIORITY": "True Priority",
-    "FALSEPRIORITY": "False Priority",
-    "PRIORITY": "Priority",
-    "GOTOP": "Gotop",
-    "EDIT_GOTOP": "Edit Gotop",
-    "EDIT_CLOSE": "Edit Close",
-    "FILTER": "Filter",
-    "SELECT_STATUS": "Select a status",
-    "ALL": "All",
-    "SELECT_ACCOUNT": "Select an account",
-    "OPENED": "Open",
-    "CLOSED": "Closed",
-    "STATUS": "Status",
-    "ACCOUNT": "Account",
-    "OPEN": "Open",
-    "INFO": "Info",
-    "ACCOUNTSID": "Account SID",
-    "AUTHTOKEN": "Auth Token",
-    "UNKNOWN": "Unknown",
-    "UNREGISTERED": "Unregistered",
-    "UNAVAILABLE": "Unavailable",
-    "NOT_INUSE": "Not in use",
-    "REACHABLE": "Reachable",
-    "IN_USE": "In use",
-    "AGENTS": "Agents",
-    "QUEUES": "Queues",
-    "FULLNAME": "Fullname",
-    "INTERNAL": "Internal",
-    "PHONE_STATE": "Phone State",
-    "PHONE_STATUS": "Phone Status",
-    "PAUSE": "Pause",
-    "LOGOUT": "Logout",
-    "AGENTADD_QUEUE": "Add agent to SMS queue",
-    "UNPAUSE": "End Pause",
-    "DEFAULT_PAUSE": "Default pause",
-    "LOGGED_IN": "Logged in",
-    "PAUSED": "Paused",
-    "READY": "Ready",
-    "WAITING": "Waiting",
-    "VOICE": "Voice",
-    "CHAT": "Chat",
-    "MAIL": "Email",
-    "OPENCHANNEL": "Open channel",
+    "QUEUE": "Röð",
+    "TIMEOUT": "Tíminn rann út",
+    "VALUE": "Gildi",
+    "EDIT_AGENT": "Breyta fulltrúa",
+    "EDIT_GOTO": "Breyta Goto",
+    "EDIT_NOOP": "Breyta Noop",
+    "EDIT_GOTOIF": "Breyta Gotoif",
+    "EDIT_QUEUE": "Breyta biðröð",
+    "CONDITION": "Skilyrði",
+    "TRUEPRIORITY": "Rétt forgangsröðun",
+    "FALSEPRIORITY": "Falskur forgangur",
+    "PRIORITY": "Forgangur",
+    "GOTOP": "Farðu efst",
+    "EDIT_GOTOP": "Breyta Gotop",
+    "EDIT_CLOSE": "Breyta lokun",
+    "FILTER": "Sía",
+    "SELECT_STATUS": "Veldu stöðu",
+    "ALL": "Allir",
+    "SELECT_ACCOUNT": "Veldu reikning",
+    "OPENED": "Opin",
+    "CLOSED": "Lokað",
+    "STATUS": "Staða",
+    "ACCOUNT": "Reikningur",
+    "OPEN": "Opin",
+    "INFO": "Upplýsingar",
+    "ACCOUNTSID": "Reiknings SID",
+    "AUTHTOKEN": "Auðkennis Token",
+    "UNKNOWN": "Óþekkt",
+    "UNREGISTERED": "Óskráð",
+    "UNAVAILABLE": "Ekki tiltækt",
+    "NOT_INUSE": "Ekki í notkun",
+    "REACHABLE": "Hægt að ná í",
+    "IN_USE": "Í notkun",
+    "AGENTS": "Fulltrúar",
+    "QUEUES": "Raðir",
+    "FULLNAME": "Fullt nafn",
+    "INTERNAL": "Innanhúss",
+    "PHONE_STATE": "Staða á síma",
+    "PHONE_STATUS": "Síma staða",
+    "PAUSE": "Hlé",
+    "LOGOUT": "Útskrá",
+    "AGENTADD_QUEUE": "Bættu við fulltrúa í SMS biðröð",
+    "UNPAUSE": "Enda hlé",
+    "DEFAULT_PAUSE": "Staðlað hlé",
+    "LOGGED_IN": "Innskráður",
+    "PAUSED": "Hlé",
+    "READY": "Tilbúið",
+    "WAITING": "Bíður",
+    "VOICE": "Tal",
+    "CHAT": "Spjall",
+    "MAIL": "Netfang",
+    "OPENCHANNEL": "Opin ráð",
     "FAX": "Fax",
-    "AGENTSADD_QUEUE": "Add agents to SMS queue",
-    "INTERACTIONS_SMSACCOUNT": "Go to Interactions",
-    "REFRESH_INTERACTIONS": "Refresh Interactions",
-    "DELETE_INTERACTION": "Delete Interaction",
-    "AGENTADD_SMSACCOUNT": "Add Agent to SMS Account",
-    "TEAMS_ASSOCIATION": "Teams Association",
-    "DOWNLOAD_WITH_ATTACHMENT": "Download with attachment",
-    "DOWNLOAD_WITHOUT_ATTACHMENT": "Download without attachment"
+    "AGENTSADD_QUEUE": "Bættu við fulltrúa í SMS biðröð",
+    "INTERACTIONS_SMSACCOUNT": "Farðu í samskipti",
+    "REFRESH_INTERACTIONS": "Endurnýjið samskipti",
+    "DELETE_INTERACTION": "\nEyða samskiptum",
+    "AGENTADD_SMSACCOUNT": "Bættu við fulltrúa í SMS reikning",
+    "TEAMS_ASSOCIATION": "Meðlimir hópa",
+    "DOWNLOAD_WITH_ATTACHMENT": "Niðurhal með viðhengi",
+    "DOWNLOAD_WITHOUT_ATTACHMENT": "Niðurhal án viðhengis"
   }
 }
index 6d60e30..8ae7525 100644 (file)
@@ -4,61 +4,61 @@
     "PAUSE_TIME": "Tempo de pausa",
     "DOWNLOAD_INTERACTION": "Download",
     "TRANSFER": "Transferir",
-    "QUEUETRANSFER": "Transferência de fila",
-    "QUEUETRANSFERTIMEOUT": "Tempo limite de transferência da fila",
+    "QUEUETRANSFER": "Transferência de Fila",
+    "QUEUETRANSFERTIMEOUT": "Timeout de Transferência da fila",
     "AGENTTRANSFER": "Transferência de Agente",
-    "AGENTTRANSFERTIMEOUT": "Tempo limite de transferência do agente",
+    "AGENTTRANSFERTIMEOUT": "Timeout de Transferência de Agente",
     "TAG": "Tag",
     "EDIT_TAG": "Editar Tag",
-    "WAITFORTHEASSIGNEDAGENT": "Aguarde o agente atribuído",
+    "WAITFORTHEASSIGNEDAGENT": "Aguarde atribuição ao agente",
     "NOTIFICATION": "Notificação",
     "NOTIFICATIONSOUND": "Som",
-    "NOTIFICATIONSHAKE": "Tremer",
+    "NOTIFICATIONSHAKE": "Vibrar",
     "NOTIFICATIONTEMPLATE": "Modelo",
     "SYSTEM": "Sistema",
     "EDIT_SYSTEM": "Editar Sistema",
     "COMMAND": "Comando",
     "VARIABLE": "Variável",
     "AUTHID": "Auth ID",
-    "NO_SMSDISPOSITIONS_AVAILABLE": "Nenhuma disposição de SMS disponível",
-    "CANNEDANSWERS": "Resposta Pronta",
-    "SMSCANNEDANSWERS": "Resposta Pronta",
-    "NO_SMSCANNEDANSWER_AVAILABLE": "Não há respostas prontas disponíveis",
-    "NEW_SMSCANNEDANSWER": "Nova Resposta Pronta",
-    "ADD_SMSCANNEDANSWER": "Adicionar Resposta Pronta",
+    "NO_SMSDISPOSITIONS_AVAILABLE": "Nenhuma qualificação de SMS disponível",
+    "CANNEDANSWERS": "Resposta Pré-definida",
+    "SMSCANNEDANSWERS": "Resposta Pré-definida",
+    "NO_SMSCANNEDANSWER_AVAILABLE": "Não há respostas pré-definida disponíveis",
+    "NEW_SMSCANNEDANSWER": "Nova Resposta Pré-definida",
+    "ADD_SMSCANNEDANSWER": "Adicionar Resposta Pré-definida",
     "EDIT_SMSCANNEDANSWER": "Editar",
     "DELETE_SMSCANNEDANSWER": "Excluir",
-    "DELIVERYREPORTURL": "URL do relatório de entrega",
+    "DELIVERYREPORTURL": "URL do Relatório de Entrega",
     "DELETE": "Ecluir",
-    "SENDERSTRING": "Cadeia de Remetente",
-    "DELIVERYREPORT": "Relatório de entrega",
+    "SENDERSTRING": "String do Emissor",
+    "DELIVERYREPORT": "Relatório de Entrega",
     "METHOD": "Método",
-    "ADD_NOTE": "Adicionar nota",
-    "NOTE": "Nota",
-    "SPYINTERACTION": "Espião",
-    "AUTOREPLY": "Resposta automatica",
-    "EDIT_AUTOREPLY": "Editar Resposta automatica",
+    "ADD_NOTE": "Adicionar Observação",
+    "NOTE": "Observação",
+    "SPYINTERACTION": "Espiar",
+    "AUTOREPLY": "Auto Resposta",
+    "EDIT_AUTOREPLY": "Editar Auto Resposta",
     "TIMES": "Número de vezes por interação",
     "TEXT": "Texto",
     "INSERT_MESSAGE_HERE": "Insira sua mensagem de texto aqui",
-    "CANNED_ANSWER_NOT_FOUND": "Nenhuma resposta predefinida foi encontrada",
-    "CANNED_ANSWER_SEARCH": "Digite um texto para pesquisar uma resposta automática",
+    "CANNED_ANSWER_NOT_FOUND": "Nenhuma resposta Pré-definida foi encontrada",
+    "CANNED_ANSWER_SEARCH": "Digite um texto para pesquisar uma resposta pré-definida",
     "SEND": "Enviar",
     "TO": "Para",
     "MESSAGE": "Mensagem",
     "TAGS": "Tags",
-    "NO_AGENT_ONLINE": "Nenhum agente online",
-    "GOTOREALTIME_SMSQUEUE": "Ir para a fila de SMS em tempo real",
-    "PARTIALPAUSE": "Pausa parcial",
+    "NO_AGENT_ONLINE": "Nenhum Agente Online",
+    "GOTOREALTIME_SMSQUEUE": "Visualizar Fila de SMS em Tempo Real",
+    "PARTIALPAUSE": "Pausa Parcial",
     "BUSY": "Ocupado",
     "TIMER": "Tempo",
-    "IDLE": "Ocioso",
+    "IDLE": "Disponível",
     "CAPACITY": "Capacidade",
     "PROXY": "Proxy",
     "ADVANCED": "Avançado",
     "MOTIONPROXY": "Proxy ou Dominio do Motion",
     "REALTIME": "Tempo Real",
-    "KEY": "Key",
+    "KEY": "Chave",
     "NAME": "Nome",
     "SMSQUEUES": "Filas de SMS",
     "SEARCH_FOR_ANYONE": "Procurar",
     "ERRORS": {
       "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",
-      "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",
-      "COMMAND_REQUIRED": "Campo Obrigatório",
-      "AUTHID_REQUIRED": "Campo Obrigatório",
+      "COMMAND_REQUIRED": "Campo obrigatório",
+      "AUTHID_REQUIRED": "Campo obrigatório",
       "TEXT_MAX_LENGTH": "O valor deve ter um tamanho máximo igual a {{max}}",
-      "TEXT_REQUIRED": "Campo Obrigatório",
-      "VALUE_REQUIRED": "Campo Obrigatório",
+      "TEXT_REQUIRED": "Campo obrigatório",
+      "VALUE_REQUIRED": "Campo obrigatório",
       "SENDERSTRING_MAX_LENGTH": "O valor deve ter um tamanho máximo igual a {{max}}",
       "SENDERSTRING_MUST_VALID_PATTERN": "Formato incorreto",
-      "METHOD_REQUIRED": "Campo Obrigatório",
-      "MOTIONPROXY_REQUIRED": "Campo Obrigatório",
+      "METHOD_REQUIRED": "Campo obrigatório",
+      "MOTIONPROXY_REQUIRED": "Campo obrigatório",
       "MOTIONPROXY_MUST_VALID_URL": "Formato incorreto",
       "KEY_MAX_LENGTH": "O valor deve ter um tamanho máximo igual a {{max}}",
-      "KEY_REQUIRED": "Campo Obrigatório",
-      "NAME_REQUIRED": "Campo Obrigatório",
-      "AGENT_TIMEOUT_REQUIRED": "Campo Obrigatório",
-      "PHONE_REQUIRED": "Campo Obrigatório",
-      "SID_REQUIRED": "Campo Obrigatório",
-      "TOKEN_REQUIRED": "Campo Obrigatório",
-      "USERNAME_REQUIRED": "Campo Obrigatório",
-      "PASSWORD_REQUIRED": "Campo Obrigatório",
-      "MOTIONADDRESS_REQUIRED": "Campo Obrigatório",
+      "KEY_REQUIRED": "Campo obrigatório",
+      "NAME_REQUIRED": "Campo obrigatório",
+      "AGENT_TIMEOUT_REQUIRED": "Campo obrigatório",
+      "PHONE_REQUIRED": "Campo obrigatório",
+      "SID_REQUIRED": "Campo obrigatório",
+      "TOKEN_REQUIRED": "Campo obrigatório",
+      "USERNAME_REQUIRED": "Campo obrigatório",
+      "PASSWORD_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",
-      "TYPE_REQUIRED": "Campo Obrigatório",
-      "LIST_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",
-      "QUEUE_REQUIRED": "Campo Obrigatório",
-      "DISPOSITION_REQUIRED": "Campo Obrigatório",
-      "ACCOUNTSID_REQUIRED": "Campo Obrigatório",
-      "AUTHTOKEN_REQUIRED": "Campo Obrigatório",
-      "APIKEY_REQUIRED": "Campo Obrigatório",
-      "BASEURL_REQUIRED": "Campo Obrigatório",
+      "TYPE_REQUIRED": "Campo obrigatório",
+      "LIST_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",
+      "QUEUE_REQUIRED": "Campo obrigatório",
+      "DISPOSITION_REQUIRED": "Campo obrigatório",
+      "ACCOUNTSID_REQUIRED": "Campo obrigatório",
+      "AUTHTOKEN_REQUIRED": "Campo obrigatório",
+      "APIKEY_REQUIRED": "Campo obrigatório",
+      "BASEURL_REQUIRED": "Campo obrigatório",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Campo obrigatório",
-      "ACCESSKEYID_REQUIRED": "O código da chave de acesso é obrigatório",
+      "ACCESSKEYID_REQUIRED": "ID da Chave de Acesso é obrigatório",
       "BOTNAME_REQUIRED": "O nome do bot é obrigatório",
       "SECRETACCESSKEY_REQUIRED": "É necessário segredo da chave de acesso",
-      "CLIENTEMAIL_REQUIRED": "Campo Obrigatório",
-      "PRIVATEKEY_REQUIRED": "Campo Obrigatório",
-      "PROJECTID_REQUIRED": "Campo Obrigatório",
-      "ACCOUNTID_REQUIRED": "Campo Obrigatório",
-      "APPLICATIONID_REQUIRED": "Campo Obrigatório"
+      "CLIENTEMAIL_REQUIRED": "Campo obrigatório",
+      "PRIVATEKEY_REQUIRED": "Campo obrigatório",
+      "PROJECTID_REQUIRED": "Campo obrigatório",
+      "ACCOUNTID_REQUIRED": "Campo obrigatório",
+      "APPLICATIONID_REQUIRED": "Campo obrigatório"
     },
-    "AGENT_TIMEOUT": "Tempo limite do agente",
+    "AGENT_TIMEOUT": "Timeout do Agente",
     "DESCRIPTION": "Descrição",
-    "ADD_SMSQUEUE": "Adicionar fila de SMS",
-    "EDIT_SMSQUEUE": "Editar fila do SMS",
-    "DELETE_SMSQUEUE": "Excluir fila do SMS",
+    "ADD_SMSQUEUE": "Adicionar Fila de SMS",
+    "EDIT_SMSQUEUE": "Editar Fila de SMS",
+    "DELETE_SMSQUEUE": "Excluir Fila de SMS",
     "SETTINGS": "Configurações",
     "GENERAL": "Geral",
     "CREATED_AT": "Criado em",
     "SMSTYPE": "Tipo de SMS",
     "USERNAME": "Usuário",
     "PASSWORD": "Senha",
-    "MOTIONADDRESS": "Endereço Motion",
-    "ADD_SMSACCOUNT": "Adicionar conta SMS",
-    "EDIT_SMSACCOUNT": "Editar conta SMS",
-    "DELETE_SMSACCOUNT": "Excluir conta SMS",
+    "MOTIONADDRESS": "Endereço do Motion",
+    "ADD_SMSACCOUNT": "Adicionar Conta de SMS",
+    "EDIT_SMSACCOUNT": "Editar Conta do SMS",
+    "DELETE_SMSACCOUNT": "Excluir Conta de SMS",
     "LIST": "Lista",
     "FIDELITY": "Fidelidade",
     "API": "API",
-    "DISPOSITIONS": "Disposições",
+    "DISPOSITIONS": "Qualificações",
     "WEBHOOKS": "WebHooks",
     "ACTIONS": "Ações",
     "ACCEPT": "Aceitar",
-    "ACCEPTMETHOD": "Aceitar Método",
-    "ACCEPTURL": "Aceitar URL",
+    "ACCEPTMETHOD": "Método de Aceite",
+    "ACCEPTURL": "URL de Aceite",
     "REJECT": "Rejeitar",
-    "REJECTMETHOD": "Rejeitar Método",
-    "REJECTURL": "Rejeitar URL",
-    "CLOSE": "Fechar",
-    "CLOSEMETHOD": "Fechar Método",
-    "CLOSEURL": "Fechar URL",
+    "REJECTMETHOD": "Método de Rejeição",
+    "REJECTURL": "URL de Rejeição",
+    "CLOSE": "Encerrar",
+    "CLOSEMETHOD": "Método de Encerramento",
+    "CLOSEURL": "URL de Encerramento",
     "SELECTED": "Selecionado",
-    "SELECT_ALL": "Selecionar todos",
+    "SELECT_ALL": "Selecionar Todos",
     "SELECT_NONE": "Selecionar Nenhum",
     "BACK": "Voltar",
     "SMS": "SMS",
     "ID": "Id",
     "CONFIRM_PASSWORD": "Confirmar Senha",
-    "SMSDISPOSITIONS": "Disposições do SMS",
-    "NO_SMSDISPOSITION_AVAILABLE": "Nenhuma disposição de SMS disponível",
-    "NEW_SMSDISPOSITION": "Nova disposição de SMS",
-    "ADD_SMSDISPOSITION": "Adicionar disposição de SMS",
-    "EDIT_SMSDISPOSITION": "Editar disposição de SMS",
-    "DELETE_SMSDISPOSITION": "Excluir disposição de SMS",
-    "NEW_SMSQUEUE": "Nova fila de SMS",
-    "NEW_SMSACCOUNT": "Nova conta SMS",
+    "SMSDISPOSITIONS": "Qualificação de SMS",
+    "NO_SMSDISPOSITION_AVAILABLE": "Nenhuma qualificação de SMS disponível",
+    "NEW_SMSDISPOSITION": "Nova Qualificação de SMS",
+    "ADD_SMSDISPOSITION": "Adicionar Qualificação de SMS",
+    "EDIT_SMSDISPOSITION": "Editar Qualificação de SMS",
+    "DELETE_SMSDISPOSITION": "Excluir Qualificação de SMS",
+    "NEW_SMSQUEUE": "Nova Fila de SMS",
+    "NEW_SMSACCOUNT": "Nova Conta de SMS",
     "NO_AVAILABLE_INFO": "Nenhuma informação disponível",
-    "ALL_TEAMS": "Todas as equipes",
+    "ALL_TEAMS": "Todas as Equipes",
     "SELECTED_TEAMS": "Equipes Selecionadas",
     "HELP": {
       "MOTIONPROXY": "O campo deve ter o seguinte formato: <protocol>: // <ipaddress> [: <port>]. Exemplo: https: //X.Y.Z.W",
       "NAME": "Somente números, letras e caracteres específicos (._) são suportados",
-      "LIST": "Lista do Gerenciador de contatos usada para associar contatos",
+      "LIST": "Lista da Gestão de Contatos usada para associar os contatos",
       "RECEIVEURL": "Esta é a string da API gerada automaticamente que você precisa usar para receber as mensagens dentro da sua conta do seu provedor de SMS (o método POST deve ser usado): clique no botão da área de transferência para copiá-lo",
-      "DELIVERYREPORTURL": "Essa é a string da API gerada automaticamente que você precisa usar para receber o relatório de entrega das mensagens enviadas do seu provedor de SMS (o método POST deve ser usado): clique no botão da área de transferência para copiá-lo",
-      "MANDATORYDISPOSITION": "Disposição obrigatória",
-      "MANDATORYDISPOSITIONPAUSEID": "Pausar para usar quando a disposição obrigatória estiver ativada",
-      "WELCOMEMESSAGE": "Esta é a primeira mensagem de resposta enviada para novas interações"
+      "DELIVERYREPORTURL": "Essa é a string da API gerada automaticamente que você precisa usar para receber o relatório de entrega das mensagens enviadas pelo seu provedor de SMS (o método POST deve ser usado): clique no botão da área de transferência para copiá-lo",
+      "MANDATORYDISPOSITION": "Qualificação obrigatória",
+      "MANDATORYDISPOSITIONPAUSEID": "Pausa para quando a Qualificação obrigatória estiver habilitado",
+      "WELCOMEMESSAGE": "Esta é a primeira mensagem enviada para novas interações"
     },
     "PAGE": "Página",
-    "ROWSPERPAGE": "Linhas por Página",
+    "ROWSPERPAGE": "Linhas por página",
     "OF": "do",
-    "TEAMADD_SMSQUEUE": "Adicionar equipe à fila do SMS",
-    "AGENTADD_SMSQUEUE": "Adicionar agente à fila do SMS",
-    "ALL_AGENTS": "Todos os agentes",
+    "TEAMADD_SMSQUEUE": "Adicionar Equipe à Fila de SMS",
+    "AGENTADD_SMSQUEUE": "Adicionar Agente à Fila de SMS",
+    "ALL_AGENTS": "Todos os Agentes",
     "SELECTED_AGENTS": "Agentes Selecionados",
-    "RECEIVEURL": "Receber URL",
+    "RECEIVEURL": "URL para Recebimento",
     "INTERACTION": "Interação",
     "INTERACTIONS": "Interações",
     "NO_INTERACTION_AVAILABLE": "Não há interações disponíveis",
     "CONTACT": "Contato",
     "STARTEDAT": "Começou às",
     "AGENT": "Agente",
-    "CLOSEDAT": "Fechado em",
-    "DISPOSITION": "Disposição",
-    "NOTES": "Notas",
+    "CLOSEDAT": "Encerrado em",
+    "DISPOSITION": "Qualificação",
+    "NOTES": "Observações",
     "GOTO": "Goto",
     "GOTOIF": "Gotoif",
     "NOOP": "Noop",
     "QUEUE": "Fila",
-    "TIMEOUT": "Tempo esgotado",
+    "TIMEOUT": "Timeout",
     "VALUE": "Valor",
     "EDIT_AGENT": "Editar Agente",
     "EDIT_GOTO": "Editar Goto",
     "EDIT_GOTOIF": "Editar Gotoif",
     "EDIT_QUEUE": "Editar Fila",
     "CONDITION": "Condição",
-    "TRUEPRIORITY": "Verdadeira prioridade",
-    "FALSEPRIORITY": "Falsa Prioridade",
+    "TRUEPRIORITY": "ID de Prioridade caso Verdadeiro",
+    "FALSEPRIORITY": "ID de Prioridade caso Falso",
     "PRIORITY": "Prioridade",
     "GOTOP": "Gotop",
     "EDIT_GOTOP": "Editar Gotop",
-    "EDIT_CLOSE": "Editar Fechar",
+    "EDIT_CLOSE": "Editar Encerramento",
     "FILTER": "Filtro",
-    "SELECT_STATUS": "Selecionar um status",
+    "SELECT_STATUS": "Selecionar Status",
     "ALL": "Tudo",
     "SELECT_ACCOUNT": "Selecionar uma Conta",
     "OPENED": "Aberto",
-    "CLOSED": "Fechado",
+    "CLOSED": "Encerrado",
     "STATUS": "Status",
     "ACCOUNT": "Conta",
     "OPEN": "Abrir",
-    "INFO": "Informação",
+    "INFO": "Info",
     "ACCOUNTSID": "Conta SID",
     "AUTHTOKEN": "Auth Token",
     "UNKNOWN": "Desconhecido",
     "UNREGISTERED": "Não registrado",
     "UNAVAILABLE": "Indisponível",
-    "NOT_INUSE": "Fora de uso",
+    "NOT_INUSE": "Disponível",
     "REACHABLE": "Alcançável",
-    "IN_USE": "Em uso",
+    "IN_USE": "Ocupado",
     "AGENTS": "Agentes",
     "QUEUES": "Filas",
     "FULLNAME": "Nome Completo",
     "PHONE_STATUS": "Status do Telefone",
     "PAUSE": "Pausa",
     "LOGOUT": "Sair",
-    "AGENTADD_QUEUE": "Adicionar agente à fila do SMS",
+    "AGENTADD_QUEUE": "Adicionar Agente à Fila de SMS",
     "UNPAUSE": "Finalizar Pausa",
     "DEFAULT_PAUSE": "Pausa Padrão",
     "LOGGED_IN": "Logado",
     "VOICE": "Voz",
     "CHAT": "Chat",
     "MAIL": "Email",
-    "OPENCHANNEL": "Open channel",
+    "OPENCHANNEL": "Open Channel",
     "FAX": "Fax",
-    "AGENTSADD_QUEUE": "Adicionar agentes à fila do SMS",
+    "AGENTSADD_QUEUE": "Adicionar Agentes à Fila de SMS",
     "INTERACTIONS_SMSACCOUNT": "Ir para Interações",
     "REFRESH_INTERACTIONS": "Atualizar Interações",
-    "DELETE_INTERACTION": "Excluir interação",
-    "AGENTADD_SMSACCOUNT": "Adicionar agente à conta do SMS",
+    "DELETE_INTERACTION": "Excluir Interação",
+    "AGENTADD_SMSACCOUNT": "Adicionar Agente à Conta do SMS",
     "APIKEY": "Chave API",
-    "BASEURL": "URL base",
-    "TEAMS_ASSOCIATION": "Associação de equipes",
-    "MANDATORYDISPOSITION": "Disposição obrigatória",
-    "MANDATORYDISPOSITIONPAUSEID": "Pausar para usar quando a disposição obrigatória estiver ativada",
-    "ACCESSKEYID": "ID da chave de acesso",
+    "BASEURL": "URL Base",
+    "TEAMS_ASSOCIATION": "Associação de Equipes",
+    "MANDATORYDISPOSITION": "Qualificação obrigatória",
+    "MANDATORYDISPOSITIONPAUSEID": "Pausa usada quando a Qualificação obrigatória estiver habilitada",
+    "ACCESSKEYID": "ID da Chave de Acesso",
     "AMAZONLEX": "AmazonLex",
     "BOTNAME": "Nome do bot",
     "DIALOGFLOW": "DialogFlow",
-    "EDIT_AMAZONLEX": "Editar configuração de Lex",
+    "EDIT_AMAZONLEX": "Editar configuração da AmazonLex",
     "EDIT_DIALOGFLOW": "Editar configuração do DialogFlow",
-    "LANGUAGE": "Língua",
+    "LANGUAGE": "Idioma",
     "LEXREGION": "Região",
-    "SECRETACCESSKEY": "Segredo da chave de acesso",
+    "SECRETACCESSKEY": "Senha da Chave de Acesso",
     "WELCOMEMESSAGE": "Mensagem de boas-vindas",
     "DOWNLOAD_WITHOUT_ATTACHMENT": "Download sem anexo",
     "DOWNLOAD_WITH_ATTACHMENT": "Download com anexo",
     "LASTMESSAGE": "Última mensagem",
-    "CLIENTEMAIL": "Email do cliente",
+    "CLIENTEMAIL": "Email do Cliente",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Editar Dialogflow V2",
-    "PRIVATEKEY": "Chave privada",
-    "PROJECTID": "ID do projeto",
-    "ACCOUNTID": "ID da conta",
-    "APPLICATIONID": "ID do aplicativo"
+    "PRIVATEKEY": "Chave Privada",
+    "PROJECTID": "ID do Projeto",
+    "ACCOUNTID": "ID da Conta",
+    "APPLICATIONID": "ID do Aplicativo"
   }
 }
index a6290e6..6b28606 100644 (file)
     "ALL_QUEUES_OPENCHANNEL_INBOUND": "Svi Otvoreni Kanal Queues",
     "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Odabrani Otvoreni Kanal Queues",
     "ALL_QUEUES_FAX_INBOUND": "Svi Fax Queues",
-    "SELECTED_QUEUES_FAX_INBOUND": "Odabrani Fax Queues"
+    "SELECTED_QUEUES_FAX_INBOUND": "Odabrani Fax Queues",
+    "ALIAS": "Pseudonim",
+    "AUTO_ANSWER": "Automatski odgovor",
+    "CHAT_AUTOANSWER": "Chat automatski odgovor",
+    "ENABLEJAWSINTEGRATION": "Omogući Jaws Intergraciju",
+    "NO_PASSWORD_CHANGE": "Nema Promjene Lozinke",
+    "OLD_PASSWORD": "Stara Lozinka",
+    "SECURITY_SUITE": "Sigurnosni Suite"
   }
 }
index 16c4dd6..6c4a62c 100644 (file)
 {
   "STAFF": {
-    "MANAGE_API_KEY": "API Key Manager",
-    "GENERATE": "Generate",
-    "REGENERATE": "Regenerate",
-    "REMOVE": "Remove",
-    "APIKEYMANAGER_USER": "API Key Manager",
-    "APIKEY": "API Key",
-    "VIDEOSUPPORT": "Video support",
-    "HOTDESK": "Hot desk",
-    "ENABLEVIDEOECORDING": "Enable Video Recording",
-    "ENABLESCREENRECORDINGBYAGENT": "Enable Screen Recording by Agent",
-    "ENABLEAUTOMATICSCREENRECORDING": "Enable Automatic Screen Recording",
-    "OLD_PASSWORD": "Old Password",
-    "ENABLEJAWSINTEGRATION": "Enable Jaws Integration",
+    "MANAGE_API_KEY": "API lykil stjórnandi",
+    "GENERATE": "\nStofna",
+    "REGENERATE": "Endurgera",
+    "REMOVE": "Fjarlægja",
+    "APIKEYMANAGER_USER": "API lykil stjórnandi",
+    "APIKEY": "API lykill",
+    "VIDEOSUPPORT": "Video stuðningur",
+    "HOTDESK": "Hjálpar borð",
+    "ENABLEVIDEOECORDING": "Virkja Video upptökur",
+    "ENABLESCREENRECORDINGBYAGENT": "Virkja skjá upptöku eftir fulltrúum",
+    "ENABLEAUTOMATICSCREENRECORDING": "Heimila sjálfvirka skjá upptöku",
+    "OLD_PASSWORD": "Gamla lykilorðið",
+    "ENABLEJAWSINTEGRATION": "Heimila Jaws samþáttun",
     "ALIAS": "Alias",
-    "NO_PASSWORD_CHANGE": "No Password Change",
-    "SECURITY_SUITE": "Security Suite",
-    "AUTO_ANSWER": "Auto answer",
-    "CHAT_AUTOANSWER": "Chat auto answer",
-    "CHAT_AUTOANSWERDELAY": "Chat auto answer delay [s]",
-    "EMAIL_AUTOANSWER": "Email auto answer",
-    "EMAIL_AUTOANSWERDELAY": "Email auto answer delay [s]",
-    "SMS_AUTOANSWER": "Sms auto answer",
-    "SMS_AUTOANSWERDELAY": "Sms auto answer delay [s]",
-    "OPENCHANNEL_AUTOANSWER": "Openchannel auto answer",
-    "OPENCHANNEL_AUTOANSWERDELAY": "Openchannel auto answer delay [s]",
-    "FAX_AUTOANSWER": "Fax auto answer",
-    "FAX_AUTOANSWERDELAY": "Fax auto answer delay [s]",
-    "WHATSAPP_AUTOANSWER": "Whatsapp connector auto answer",
-    "WHATSAPP_AUTOANSWERDELAY": "Whatsapp connector auto answer delay [s]",
-    "LAST_PASSWORD_RESET_AT": "Last Password Reset At",
+    "NO_PASSWORD_CHANGE": "Engin lykilorðsbreyting",
+    "SECURITY_SUITE": "Öryggissvíta",
+    "AUTO_ANSWER": "sjálf virkt svar",
+    "CHAT_AUTOANSWER": "Spjall sjálfvirkt svar",
+    "CHAT_AUTOANSWERDELAY": "Seinkun á sjálfvirku svari í spjalli [s]",
+    "EMAIL_AUTOANSWER": "Sjálfvirkt svar á tölvupósti",
+    "EMAIL_AUTOANSWERDELAY": "Seinkun á sjálfvirku svari tölvupósts [s]",
+    "SMS_AUTOANSWER": "SMS sjálfvirkt svar",
+    "SMS_AUTOANSWERDELAY": "Seinkun á sjálfvirku SMS svari [s]",
+    "OPENCHANNEL_AUTOANSWER": "Openchannel sjálfvirkt svarr",
+    "OPENCHANNEL_AUTOANSWERDELAY": "Seiknkun á Openchannel sjálfvirku svari [s]",
+    "FAX_AUTOANSWER": "Fax sjálfvirkt svar",
+    "FAX_AUTOANSWERDELAY": "Seinkun á sjálfvirku svari á Faxi [s]",
+    "WHATSAPP_AUTOANSWER": "Whatsapp connector Sjálfvirkt svar",
+    "WHATSAPP_AUTOANSWERDELAY": "Seinkun á Whatsapp sjálfvirku svari [s]",
+    "LAST_PASSWORD_RESET_AT": "Síðasta lykilorð endurstillt kl.",
     "SIP_WEBRTC": "Sip",
-    "SETTINGS_WEBRTC": "Settings",
+    "SETTINGS_WEBRTC": "Stillingar",
     "WEBRTC": "WebRTC",
-    "DTLSCERTFILE": "TLS certificate",
-    "DTLSPRIVATEKEY": "TLS certificate's private key",
-    "CONTEXT": "Context",
-    "RINGINUSE": "Ring In Use",
-    "USERS": "Users",
-    "AGENTS": "Agents",
+    "DTLSCERTFILE": "TLS Vottun",
+    "DTLSPRIVATEKEY": "TLS persónulykill vottunar",
+    "CONTEXT": "Innihald",
+    "RINGINUSE": "Hringitónn í notkun",
+    "USERS": "Notendur",
+    "AGENTS": "Fulltrúi",
     "TOGGLE_SIDENAV": "Toggle sidenav",
-    "SEARCH_FOR_ANYONE": "Search",
-    "BACK": "Back",
+    "SEARCH_FOR_ANYONE": "Leyta",
+    "BACK": "til baka",
     "MULTI_SELECT_TOGGLE": "multi select toggle",
-    "SELECT_ALL": "Select all",
-    "SELECT_NONE": "Select None",
-    "SELECTED": "Selected",
-    "DELETE_SELECTED": "Delete selected",
-    "EXPORT_SELECTED": "Export selected",
-    "ALL_USERS": "All users",
-    "ALL_AGENTS": "All agents",
-    "SORT": "sort",
-    "NAME": "Name",
-    "FULLNAME": "Full Name",
+    "SELECT_ALL": "Velja allt",
+    "SELECT_NONE": "Velja ekkert",
+    "SELECTED": "Valið",
+    "DELETE_SELECTED": "Eyða völdu",
+    "EXPORT_SELECTED": "Flytja út valið",
+    "ALL_USERS": "Allir notendur",
+    "ALL_AGENTS": "Allir fulltrúar",
+    "SORT": "Tegund",
+    "NAME": "Nafn",
+    "FULLNAME": "Fullt nafn",
     "A_TO_Z": "(A to Z)",
     "Z_TO_A": "(Z to A)",
-    "MORE": "More",
-    "DELETE_USER": "Delete User",
-    "EDIT_USER": "Edit User",
-    "DELETE_AGENT": "Delete Agent",
-    "EDIT_AGENT": "Edit Agent",
-    "DELETE": "Delete",
-    "SAVE": "SAVE",
-    "ADD_USER": "ADD USER",
-    "ADD_AGENT": "ADD AGENT",
-    "NO_RESULTS": "No results..",
-    "CLOSE_DIALOG": "Close dialog",
-    "NAME_REQUIRED": "Name (required)",
-    "USERNAME": "Username",
-    "SHOW_ALL_FIELDS": "Show All Fields",
-    "PHONE_NUMBER": "Phone number",
-    "EMAIL": "Email",
-    "PASSWORD": "Password",
+    "MORE": "Meira",
+    "DELETE_USER": "Eyða notanda",
+    "EDIT_USER": "Breyta notanda",
+    "DELETE_AGENT": "Eyða fulltrúa",
+    "EDIT_AGENT": "Breyta fulltrúa",
+    "DELETE": "Eyða",
+    "SAVE": "Geyma",
+    "ADD_USER": "bæta við notanda",
+    "ADD_AGENT": "Bæta við Fulltrúa",
+    "NO_RESULTS": "Engin niðurstaða..",
+    "CLOSE_DIALOG": "Lokaðu glugganum",
+    "NAME_REQUIRED": "Nafn (skilyrt)",
+    "USERNAME": "Notandanafn",
+    "SHOW_ALL_FIELDS": "Sýna alla reiti",
+    "PHONE_NUMBER": "Síma númer",
+    "EMAIL": "Tölvupóstur",
+    "PASSWORD": "Lykilorð",
     "ERRORS": {
-      "CONFIRM_REQUIRED": "Mandatory field",
-      "ALLOWCODECS_REQUIRED": "Mandatory field",
-      "ENCRYPTION": "SRTP (Secure Realtime Protocol) Encryption",
-      "DTLSCERTFILE_REQUIRED": "Mandatory field",
-      "DTLSPRIVATEKEY_REQUIRED": "Mandatory field",
-      "FULLNAME_REQUIRED": "Mandatory field",
-      "USERNAME_REQUIRED": "Mandatory field",
-      "EMAIL_REQUIRED": "Mandatory field",
-      "PASSWORD_REQUIRED": "Mandatory field",
-      "CONFIRM_NOT_MATCH": "The passwords don't match",
-      "EMAIL_MUST_VALID": "Wrong format",
-      "ACCOUNTNAME_REQUIRED": "Mandatory field",
-      "NAME_REQUIRED": "Mandatory field",
-      "HOST_REQUIRED": "Mandatory field",
-      "CHATCAPACITY_REQUIRED": "Mandatory field",
-      "MAILCAPACITY_REQUIRED": "Mandatory field",
-      "FAXCAPACITY_REQUIRED": "Mandatory field",
-      "SMSCAPACITY_REQUIRED": "Mandatory field",
-      "WHATSAPPCAPACITY_REQUIRED": "Mandatory field",
-      "OPENCHANNELCAPACITY_REQUIRED": "Mandatory field",
-      "SIPEXPIRES_REQUIRED": "Mandatory field",
-      "SIPPORT_REQUIRED": "Mandatory field",
-      "UNCONDITIONALNUMBER_REQUIRED": "Mandatory field",
-      "NOREPLYNUMBER_REQUIRED": "Mandatory field",
-      "BUSYNUMBER_REQUIRED": "Mandatory field",
-      "USERNAME_MUST_VALID_PATTERN": "Wrong format {{regex}}",
-      "REMOTECONTROLPORT_REQUIRED": "Mandatory field",
-      "CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "AUTOANSWERDELAY_REQUIRED": "Mandatory field",
-      "MONITOREXTENSION_REQUIRED": "Mandatory field",
-      "SECURE_PASSWORD_PATTERN": "The password must be at least 8 characters long and have 1 lowercase character, 1 uppercase character, 1 number and 1 special character ~!@#$%^&-_=+[{]}.",
-      "CRUDPERMISSIONS_REQUIRED": "Mandatory field",
-      "USERPROFILE_REQUIRED": "Mandatory field",
-      "PASSWORD_OLDPASSWORD_MATCH": "New password must be different from previous one"
+      "CONFIRM_REQUIRED": "Skilyrtur reitur",
+      "ALLOWCODECS_REQUIRED": "Skilyrtur reitur",
+      "ENCRYPTION": "SRTP (Secure Realtime Protocol) dulkóðun",
+      "DTLSCERTFILE_REQUIRED": "Skilyrtur reitur",
+      "DTLSPRIVATEKEY_REQUIRED": "Skilyrtur reitur",
+      "FULLNAME_REQUIRED": "Skilyrtur reitur",
+      "USERNAME_REQUIRED": "Skilyrtur reitur",
+      "EMAIL_REQUIRED": "Skilyrtur reitur",
+      "PASSWORD_REQUIRED": "Skilyrtur reitur",
+      "CONFIRM_NOT_MATCH": "Lykilorðin stemma ekki",
+      "EMAIL_MUST_VALID": "Rangt snið",
+      "ACCOUNTNAME_REQUIRED": "Skilyrtur reitur",
+      "NAME_REQUIRED": "Skilyrtur reitur",
+      "HOST_REQUIRED": "Skilyrtur reitur",
+      "CHATCAPACITY_REQUIRED": "Skilyrtur reitur",
+      "MAILCAPACITY_REQUIRED": "Skilyrtur reitur",
+      "FAXCAPACITY_REQUIRED": "Skilyrtur reitur",
+      "SMSCAPACITY_REQUIRED": "Skilyrtur reitur",
+      "WHATSAPPCAPACITY_REQUIRED": "Skilyrtur reitur",
+      "OPENCHANNELCAPACITY_REQUIRED": "Skilyrtur reitur",
+      "SIPEXPIRES_REQUIRED": "Skilyrtur reitur",
+      "SIPPORT_REQUIRED": "Skilyrtur reitur",
+      "UNCONDITIONALNUMBER_REQUIRED": "Skilyrtur reitur",
+      "NOREPLYNUMBER_REQUIRED": "Skilyrtur reitur",
+      "BUSYNUMBER_REQUIRED": "Skilyrtur reitur",
+      "USERNAME_MUST_VALID_PATTERN": "Rangt snið {{regex}}",
+      "REMOTECONTROLPORT_REQUIRED": "Skilyrtur reitur",
+      "CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið þar að vera stærra en eða jafnt og",
+      "MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið þar að vera stærra en eða jafnt og",
+      "FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið þar að vera stærra en eða jafnt og",
+      "OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið þar að vera stærra en eða jafnt og",
+      "AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið þar að vera stærra en eða jafnt og",
+      "AUTOANSWERDELAY_REQUIRED": "Skilyrtur reitur",
+      "MONITOREXTENSION_REQUIRED": "Skilyrtur reitur",
+      "SECURE_PASSWORD_PATTERN": "Lykilorðið verður að vera að minnsta kosti 8 stafir að lengd og hafa 1 lágstaf, 1 hástaf, 1 tölu og 1 sérstaf ~!@#$%^&-_=+[{]}.",
+      "CRUDPERMISSIONS_REQUIRED": "Skilyrtur reitur",
+      "USERPROFILE_REQUIRED": "Skilyrtur reitur",
+      "PASSWORD_OLDPASSWORD_MATCH": "Nýtt lykilorð það vera annað en það eldra"
     },
-    "ACCOUNT": "Account",
-    "VOICE": "Voice",
-    "CREATED_AT": "Created At",
-    "ROLE": "Role",
-    "PERSONAL_INFO": "Personal Info",
-    "DESCRIPTION": "Description",
-    "CHANGE_AVATAR": "Change Avatar",
-    "GENERAL": "General",
-    "INTERNAL": "Internal",
-    "TRANSPORT": "Transport",
-    "ALLOWCODECS": "Allowed Codecs",
-    "DISABLED": "Deactivated",
-    "BLOCKED": "Locked",
+    "ACCOUNT": "Reikningur",
+    "VOICE": "Tal",
+    "CREATED_AT": "Stofnað kl.",
+    "ROLE": "Hlutverk",
+    "PERSONAL_INFO": "Persónu upplýsingar",
+    "DESCRIPTION": "Lýsing",
+    "CHANGE_AVATAR": "Breyta Avatar",
+    "GENERAL": "Almennt",
+    "INTERNAL": "Innanhúss",
+    "TRANSPORT": "Flytja",
+    "ALLOWCODECS": "Leyfiðir kódekar",
+    "DISABLED": "Óvirkt",
+    "BLOCKED": "Læst/lokað",
     "AD_SSO_ENABLED": "Active Directory SSO",
-    "AUTHENTICATION": "Authentication",
+    "AUTHENTICATION": "Auðkenning",
     "HELP": {
-      "DISABLED": "select to deactivate / unselect to reactivate",
-      "BLOCKED": "Lock / Unlock access",
-      "APIKEY": "Please use 'API key manager' button on toolbar to manage this key",
-      "LAST_PASSWORD_RESET_AT": "Last date and time the password has been changed. If Secure Suite General Setting is enabled, the password will expire after 90 days.",
-      "DTLSCERTFILE": "Link to the valid TLS certificate(.crt file). Default value: '/etc/pki/tls/certs/motion.crt'.",
-      "DTLSPRIVATEKEY": "Link to the certificate's private key(.key file). Default value: '/etc/pki/tls/private/motion.key'.",
-      "ALLOWCODECS": "Allowed Codecs in order of preference",
-      "TRANSPORT": "Set the default transports in order of preference",
-      "HOST": "How to find the client - IP or host name. If you want the phone to register itself, use the keyword dynamic instead of Host IP",
-      "NAT": "Changes the behaviour of Asterisk for clients behind a firewall. If any of the comma-separated options is 'no', Asterisk will ignore other settings and set nat=no",
-      "SIPEXPIRES": "Default: 160",
-      "SIPPORT": "Default: 5160",
-      "TYPE": "Determines the SIP role within asterisk. User: used to authenticate incoming - Peer: for outgoing calls - Friend: covers both characteristics of the above",
-      "CHATCAPACITY": "Maximum number of concurrent channel interactions per agent (0=unlimited)",
-      "MAILCAPACITY": "Maximum number of concurrent channel interactions per agent (0=unlimited)",
-      "FAXCAPACITY": "Maximum number of concurrent channel interactions per agent (0=unlimited)",
-      "SMSCAPACITY": "Maximum number of concurrent channel interactions per agent (0=unlimited)",
-      "WHATSAPPCAPACITY": "Maximum number of concurrent channel interactions per agent (0=unlimited)",
-      "OPENCHANNELCAPACITY": "Maximum number of concurrent channel interactions per agent (0=unlimited)",
-      "CALLGROUP": "The agent's callgroup",
-      "PICKUPGROUP": "The groups in which the agent can answer calls",
-      "USERNAME": "Only numbers, letters and specific characters (._) are supported",
-      "ENCRYPTION": "SRTP (Secure Realtime Protocol) Encryption",
-      "SAVE_PERMISSIONS": "Every section containing any pending changes will be saved",
-      "CUSTOM_DASHBOARDS_PERMISSIONS": "Custom Dashboards permissions are managed in the Tools module",
-      "ENABLEAUTOMATICSCREENRECORDING": "The functionality is available only for voice channel",
-      "MASK_SENSITIVE_DATA": "Mask any sensitive data throughout the application (e.g. phone numbers and email addresses)",
-      "WSS_PORT": "Default: 8089",
-      "AD_SSO_ENABLED": "Login in with your Active Directory credentials"
+      "DISABLED": "veldu til að slökkva á / afvelja til að virkja aftur",
+      "BLOCKED": "Læsa / opna aðgang",
+      "APIKEY": "Vinsamlegast notaðu 'API lyklastjórnunar' hnappinn á tækjastikunni til að stjórna þessum lykli",
+      "LAST_PASSWORD_RESET_AT": "Síðasta dagsetning og tími sem lykilorðinu var breytt. Ef Almennarstillingar Secure Suite er virkjaðar mun lykilorðið renna út eftir 90 daga.",
+      "DTLSCERTFILE": "Tengill á gilt TLS vottorð (.crt skrá). Sjálfgefið gildi: '/etc/pki/tls/certs/motion.crt'.",
+      "DTLSPRIVATEKEY": "Tengill á persónulykil vottorðsins (.key skrá). Sjálfgefið gildi: '/etc/pki/tls/private/motion.key'.",
+      "ALLOWCODECS": "Leyfðir kódekar í forgangsröð",
+      "TRANSPORT": "Stilltu sjálfgefna flutninga í forgangsröð",
+      "HOST": "Hvernig á að finna viðskiptavininn - IP eða hýsingarheiti. Ef þú vilt að síminn skrái sig sjálfvirkt, notaðu lykilorðið dynamic í stað Host IP",
+      "NAT": "Breytir hegðun Asterisk fyrir viðskiptavini á bak við eldvegg. Ef einhver af kommu aðskildu valkostunum er „nei“ mun Asterisk hunsa aðrar stillingar og setja nat=nei",
+      "SIPEXPIRES": "Sjálfgefið: 160",
+      "SIPPORT": "Sjálfgefið: 5160",
+      "TYPE": "\nÁkveður SIP hlutverk innan Asterisk. Notandi: notaður til að sannvotta móttekinn - Jafningi: fyrir úthringingar - Vinur: nær yfir bæði eiginleika ofangreindra",
+      "CHATCAPACITY": "Hámarksfjöldi samtíma rásasamskipta á hvern fulltrúa (0=ótakmarkað)",
+      "MAILCAPACITY": "Hámarksfjöldi samtíma rásarsamskipta á hvern fulltrúa (0=ótakmarkað)",
+      "FAXCAPACITY": "Hámarksfjöldi samtíma rásarsamskipta á hvern fulltrúa (0=ótakmarkað)",
+      "SMSCAPACITY": "Hámarksfjöldi samtíma rásarsamskipta á hvern fulltrúa (0=ótakmarkað)",
+      "WHATSAPPCAPACITY": "Hámarksfjöldi samtíma rásarsamskipta á hvern fulltrúa (0=ótakmarkað)",
+      "OPENCHANNELCAPACITY": "Hámarksfjöldi samtíma rásarsamskipta á hvern fulltrúa (0=ótakmarkað)",
+      "CALLGROUP": "Símtalshópur fulltrúans",
+      "PICKUPGROUP": "Hóparnir þar sem fulltrúinn getur svarað símtölum í",
+      "USERNAME": "\nAðeins tölur, stafir og sérstök tákn (._) eru studdir",
+      "ENCRYPTION": "SRTP (Secure Realtime Protocol) dulkóðun",
+      "SAVE_PERMISSIONS": "Sérhver eining sem inniheldur breytingar í bið verður vistaður",
+      "CUSTOM_DASHBOARDS_PERMISSIONS": "Sérsniðnum mælaborðum er stjórnað Tools einingunni",
+      "ENABLEAUTOMATICSCREENRECORDING": "Aðgerðin er aðeins í boði fyrir talrásir",
+      "MASK_SENSITIVE_DATA": "Feldu öll viðkvæm gögn í gegnum forritið (t.d. símanúmer og netföng)",
+      "WSS_PORT": "Sjálfgefið: 8089",
+      "AD_SSO_ENABLED": "Skráðu þig inn með Active Directory skilríkjunum þínum"
     },
-    "NEW_PASSWORD": "New Password",
-    "CONFIRM_PASSWORD": "Confirm Password",
-    "CHANGE_PASSWORD": "Change Password",
-    "CHANGEPASSWORD_AGENT": "Change Password",
-    "CHANGEPASSWORD_USER": "Change Password",
-    "CHANGEPASSWORD_TELEPHONE": "Change Password",
-    "LOGININPAUSE": "Login In Pause",
+    "NEW_PASSWORD": "Nýtt lykilorð",
+    "CONFIRM_PASSWORD": "Staðfestu lykilorð",
+    "CHANGE_PASSWORD": "Breyta lykilorði",
+    "CHANGEPASSWORD_AGENT": "Breyta lykilorði",
+    "CHANGEPASSWORD_USER": "Breyta lykilorði",
+    "CHANGEPASSWORD_TELEPHONE": "Breyta lykilorði",
+    "LOGININPAUSE": "Innskránig á hlé",
     "HOST": "Host",
     "NAT": "NAT",
     "CHANSPY": "ChanSpy",
-    "OTHER_CHANNELS": "Other Channels",
-    "CHATCAPACITY": "Chat Capacity",
-    "MAILCAPACITY": "Email Capacity",
-    "FAXCAPACITY": "Fax Capacity",
-    "SMSCAPACITY": "Sms Capacity",
+    "OTHER_CHANNELS": "Aðrar rásir",
+    "CHATCAPACITY": "Spjall fjöldi",
+    "MAILCAPACITY": "Fjöldi tölvupósta leyfilegur",
+    "FAXCAPACITY": "Fax geta",
+    "SMSCAPACITY": "SMS geta",
     "WHATSAPPCAPACITY": "WhatsApp Connector Capacity",
-    "OPENCHANNELCAPACITY": "Open Channel Capacity",
+    "OPENCHANNELCAPACITY": "Open Channel magn",
     "MOTIONBAR": "Motion Bar",
-    "SETTINGS": "Settings",
-    "AUTOANSWER": "Auto Answer",
-    "ENABLESETTINGS": "Enable Settings",
-    "CALL_FORWARDING": "Call Forwarding",
-    "UNCONDITIONAL": "Unconditional",
-    "UNCONDITIONALNUMBER": "Unconditional Number",
-    "NOREPLY": "No Reply",
-    "NOREPLYNUMBER": "No Reply Number",
-    "BUSY": "Busy",
-    "BUSYNUMBER": "Busy Number",
-    "REMOTE_CONTROL": "Remote Control",
-    "REMOTECONTROL": "Remote Control",
-    "REMOTECONTROLPORT": "Remote Control Port",
+    "SETTINGS": "Stillingar",
+    "AUTOANSWER": "Sjálfvirkt svar",
+    "ENABLESETTINGS": "Leyfa stillingar",
+    "CALL_FORWARDING": "Áframsending",
+    "UNCONDITIONAL": "Skilyrðislaust",
+    "UNCONDITIONALNUMBER": "\nSkilyrðislaust númer",
+    "NOREPLY": "Ekkert svar",
+    "NOREPLYNUMBER": "Ekkert svar",
+    "BUSY": "Upptekið",
+    "BUSYNUMBER": "Á tali",
+    "REMOTE_CONTROL": "Fjarstýra",
+    "REMOTECONTROL": "Fjarstýra",
+    "REMOTECONTROLPORT": "Port fyrir Remote Control",
     "SIP": "SIP",
-    "SIPEXPIRES": "SIP Expires [sec]",
+    "SIPEXPIRES": "SIP rennur út [sec]",
     "SIPPORT": "SIP Port",
-    "PENALTY": "Penalty",
-    "ACCOUNTNAME": "Account Name",
-    "ADD_TELEPHONE": "Add Telephone",
-    "EDIT_TELEPHONE": "Edit Telephone",
-    "DELETE_TELEPHONE": "Delete Telephone",
-    "TEAMS": "Teams",
-    "DELETE_TEAM": "Delete Team",
-    "AGENTADD_TEAM": "Add Agents to Team",
-    "EDIT_TEAM": "Edit Team",
-    "TYPE": "Type",
-    "TELEPHONES": "Telephones",
-    "CALLERID": "Caller ID",
-    "ENABLERECORDING": "Enable Recording",
-    "STAFF": "Staff",
-    "ID": "Id",
-    "NEW_USER": "New User",
-    "NEW_AGENT": "New Agent",
-    "NEW_TELEPHONE": "New Telephone",
-    "NEW_TEAM": "New Team",
-    "ADD_TEAM": "Add Team",
-    "JOIN_QUEUE": "Join Queue",
-    "CAPACITY": "Capacity",
-    "AUTOINTERNAL": "Auto generate internal number",
-    "ADD_AGENT_TO_TEAM": "Add Agent to Team",
-    "TEAMADD_AGENT": "Add Agent to Team",
-    "NO_AVAILABLE_INFO": "No available info",
-    "PERMISSIONS": "Permissions",
-    "ADD_AGENT_TO_QUEUE": "Add Agent to Queue",
-    "ALL_MODULES_AVAILABLE": "All modules available",
-    "CALLGROUP": "Call Group",
-    "PICKUPGROUP": "Pickup Group",
-    "ADD_AGENT_TO_QUEUE_CAMPAIGNS": "Add Agent to Queue Campaigns",
-    "ADD_AGENT_TO_VOICE_QUEUES": "Add Agent to Voice Queues",
-    "ADD_AGENT_TO_CHAT_QUEUES": "Add Agent to Chat Queues",
-    "ADD_AGENT_TO_MAIL_QUEUES": "Add Agent to Email Queues",
-    "ADD_AGENT_TO_SMS_QUEUES": "Add Agent to SMS Queues",
-    "ADD_AGENT_TO_WHATSAPP_QUEUES": "Add Agent to WhatsApp Queues",
-    "ADD_AGENT_TO_OPENCHANNEL_QUEUES": "Add Agent to Open Channel Queues",
-    "ADD_AGENT_TO_FAX_QUEUES": "Add Agent to Fax Queues",
-    "QUEUEADD_USER_VOICE_INBOUND": "Add User to Voice Queues",
-    "QUEUEADD_USER_CHAT_INBOUND": "Add User to Chat Queues",
-    "QUEUEADD_USER_MAIL_INBOUND": "Add User to Email Queues",
-    "QUEUEADD_USER_SMS_INBOUND": "Add User to SMS Queues",
-    "QUEUEADD_USER_WHATSAPP_INBOUND": "Add User to WhatsApp Queues",
-    "QUEUEADD_USER_OPENCHANNEL_INBOUND": "Add User to Open Channel Queues",
-    "QUEUEADD_USER_FAX_INBOUND": "Add User to Fax Queues",
-    "ALL_TEAMS": "All Teams",
-    "SELECTED_TEAMS": "Selected Teams",
-    "SELECTED_AGENTS": "Selected Agents",
-    "ALL_QUEUE_CAMPAIGNS": "All Queue Campaigns",
-    "SELECTED_QUEUE_CAMPAIGNS": "Selected Queue Campaigns",
-    "ALL_VOICE_QUEUES": "All Voice Queues",
-    "SELECTED_VOICE_QUEUES": "Selected Voice Queues",
-    "ALL_CHAT_QUEUES": "All Chat Queues",
-    "SELECTED_CHAT_QUEUES": "Selected Chat Queues",
-    "ALL_MAIL_QUEUES": "All Email Queues",
-    "SELECTED_MAIL_QUEUES": "Selected Email Queues",
-    "ALL_SMS_QUEUES": "All SMS Queues",
-    "SELECTED_SMS_QUEUES": "Selected SMS Queues",
-    "ALL_WHATSAPP_QUEUES": "All WhatsApp Queues",
-    "SELECTED_WHATSAPP_QUEUES": "Selected WhatsApp Queues",
-    "ALL_OPENCHANNEL_QUEUES": "All Open Channel Queues",
-    "SELECTED_OPENCHANNEL_QUEUES": "Selected Open Channel Queues",
-    "ALL_FAX_QUEUES": "All Fax Queues",
-    "SELECTED_FAX_QUEUES": "Selected Fax Queues",
-    "VOICEMAIL": "Voicemail",
+    "PENALTY": "Refsing",
+    "ACCOUNTNAME": "Reikningsnafn",
+    "ADD_TELEPHONE": "Bæta við síma",
+    "EDIT_TELEPHONE": "Breyta síma",
+    "DELETE_TELEPHONE": "Eyða númeri",
+    "TEAMS": "Hópar",
+    "DELETE_TEAM": "Eyða hóp",
+    "AGENTADD_TEAM": "Bæta fulltrúa við hóp",
+    "EDIT_TEAM": "Breyta hópi",
+    "TYPE": "Tegund",
+    "TELEPHONES": "símar",
+    "CALLERID": "Auðkenni úthringjara",
+    "ENABLERECORDING": "Virkja upptöku",
+    "STAFF": "Starfsfólk",
+    "ID": "Auðkenni",
+    "NEW_USER": "Nýr notandi",
+    "NEW_AGENT": "Nýr fulltrúi",
+    "NEW_TELEPHONE": "Nýr sími",
+    "NEW_TEAM": "Nýr hópur",
+    "ADD_TEAM": "Bæta við hóp",
+    "JOIN_QUEUE": "Skráðu þig í biðröina",
+    "CAPACITY": "Geta",
+    "AUTOINTERNAL": "Búðu til innanhússnúmer sjálfvirkt",
+    "ADD_AGENT_TO_TEAM": "Bæta við fulltrúa í hóp",
+    "TEAMADD_AGENT": "Bættu fulltrúa við hóp",
+    "NO_AVAILABLE_INFO": "\nEngar tiltækar upplýsingar",
+    "PERMISSIONS": "Heimildir",
+    "ADD_AGENT_TO_QUEUE": "Bæta fulltrúa við í biðröð",
+    "ALL_MODULES_AVAILABLE": "Allar einingar aðgengilegar",
+    "CALLGROUP": "Hringi hópur",
+    "PICKUPGROUP": "Pickup hópur",
+    "ADD_AGENT_TO_QUEUE_CAMPAIGNS": "Bæta við fulltrúa í herferðar biðröð",
+    "ADD_AGENT_TO_VOICE_QUEUES": "bæta við fulltrúa í síma biðröð",
+    "ADD_AGENT_TO_CHAT_QUEUES": "Bæta við fulltrúa í spjall rás",
+    "ADD_AGENT_TO_MAIL_QUEUES": "Bæta við fulltrua í póstbiðröð",
+    "ADD_AGENT_TO_SMS_QUEUES": "Bæta við fulltrúa í SMS biðröð",
+    "ADD_AGENT_TO_WHATSAPP_QUEUES": "bæta við fulltrúa í WhatsApp biðröð",
+    "ADD_AGENT_TO_OPENCHANNEL_QUEUES": "Bæta við fulltrúa í Open Channel biðraðir",
+    "ADD_AGENT_TO_FAX_QUEUES": "Bæta við fulltrúa í Fax rás",
+    "QUEUEADD_USER_VOICE_INBOUND": "Bættu notanda við tal biðraðir",
+    "QUEUEADD_USER_CHAT_INBOUND": "Bættu notanda við spjall biðraðir",
+    "QUEUEADD_USER_MAIL_INBOUND": "Bættu notanda við tölvupóst biðraðir",
+    "QUEUEADD_USER_SMS_INBOUND": "Bættu notanda við SMS biðraðir",
+    "QUEUEADD_USER_WHATSAPP_INBOUND": "Bættu notanda við WhatsApp biðraðir",
+    "QUEUEADD_USER_OPENCHANNEL_INBOUND": "Bættu notanda við Open Channel biðraðir",
+    "QUEUEADD_USER_FAX_INBOUND": "bættu notanda við Fax biðraðir",
+    "ALL_TEAMS": "Allir hópar",
+    "SELECTED_TEAMS": "Valdir hópar",
+    "SELECTED_AGENTS": "Valdir fulltrúar",
+    "ALL_QUEUE_CAMPAIGNS": "Allar herferða biðraðir",
+    "SELECTED_QUEUE_CAMPAIGNS": "Valdar herferða biðraðir",
+    "ALL_VOICE_QUEUES": "Allar tal biðraðir",
+    "SELECTED_VOICE_QUEUES": "Valdar tal biðraðir",
+    "ALL_CHAT_QUEUES": "Allar spjall biðraðir",
+    "SELECTED_CHAT_QUEUES": "Valdar spjall biðraðir",
+    "ALL_MAIL_QUEUES": "Allar tölvupóst biðraðir",
+    "SELECTED_MAIL_QUEUES": "Valdar tölvupóst raðir",
+    "ALL_SMS_QUEUES": "AAllar SMS biðraðir",
+    "SELECTED_SMS_QUEUES": "Valdar SMS biðraðir",
+    "ALL_WHATSAPP_QUEUES": "Allar WhatsApp biðraðir",
+    "SELECTED_WHATSAPP_QUEUES": "Valdar WhatsApp biðraðir",
+    "ALL_OPENCHANNEL_QUEUES": "Allar Open Channel biðraðir",
+    "SELECTED_OPENCHANNEL_QUEUES": "SValdar Open Channel biðraðir",
+    "ALL_FAX_QUEUES": "Allar Fax biðraðir",
+    "SELECTED_FAX_QUEUES": "Valdar Fax biðraðir",
+    "VOICEMAIL": "Talskilaboð",
     "SHOWWEBCONTROL": "Typology",
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
-    "OF": "of",
-    "CALLFORWARDING": "Call Forwarding",
-    "DND": "Do not disturb during pause",
-    "UNANSWEREDCALLBADGE": "Show unanswered call badge",
-    "ENABLEDTMFTONE": "Enable Dtmf tones",
-    "AUTOANSWERDELAY": "Auto Answer Delay [s]",
-    "ENCRYPTION": "Encryption",
-    "CHANNELS": "Channels",
-    "CHAT": "Chat",
-    "SMS": "Sms",
+    "PAGE": "Bls.",
+    "ROWSPERPAGE": "Raðir á bls.",
+    "OF": "af",
+    "CALLFORWARDING": "Áframsending",
+    "DND": "Ónáðið ekki á meðan hlé er",
+    "UNANSWEREDCALLBADGE": "Sýna merkingu á ósvörðum símtölum",
+    "ENABLEDTMFTONE": "Heimila Dtmf tóna",
+    "AUTOANSWERDELAY": "Seinkun á sjálfvirku svari [s]",
+    "ENCRYPTION": "Dulkóðun",
+    "CHANNELS": "Rásir",
+    "CHAT": "Spjall",
+    "SMS": "SMS",
     "WHATSAPP": "WhatsApp Connector",
     "OPENCHANNEL": "Open Channel",
     "FAX": "Fax",
-    "QUEUEADD_USER_VOICE_OUTBOUND": "Add User to Queue Campaigns",
-    "MONITOREXTENSION": "Record calls to user extension",
-    "EDITPERMISSIONS": "Editing Permissions",
-    "READ_PERMISSION": "Read",
-    "EDIT_PERMISSION": "Edit",
-    "DELETE_PERMISSION": "Delete",
-    "GENERAL_PERMISSIONS": "General",
-    "ENABLEMESSENGER": "Enable Internal Messenger",
+    "QUEUEADD_USER_VOICE_OUTBOUND": "Bættu notanda við herferða biðraðir",
+    "MONITOREXTENSION": "Upptaka er á notanda aðgangi",
+    "EDITPERMISSIONS": "Breyta heimildum",
+    "READ_PERMISSION": "Lesa",
+    "EDIT_PERMISSION": "Breyta",
+    "DELETE_PERMISSION": "Eyða",
+    "GENERAL_PERMISSIONS": "almennt",
+    "ENABLEMESSENGER": "Heimila innanhúss Messenger",
     "OUTBOUNDPROXY": "Oubound Proxy",
-    "PHONE": "Phone",
+    "PHONE": "Sími",
     "MOBILE": "Mobile",
-    "PREFIXREQUIRED": "Prefix Required",
-    "MANAGE_PERMISSIONS": "Manage Permissions",
-    "USERADD_VOICEQUEUES": "Add Voice Queue to User",
-    "ALL_VOICEQUEUES": "All Voice Queues",
-    "SELECTED_VOICEQUEUES": "Selected Voice Queues",
-    "USERADD_CHATQUEUES": "Add Chat Queue to User",
-    "ALL_CHATQUEUES": "All Chat Queues",
-    "SELECTED_CHATQUEUES": "Selected Email Queues",
-    "USERADD_MAILQUEUES": "Add Email Queue to User",
-    "ALL_MAILQUEUES": "All Email Queues",
-    "SELECTED_MAILQUEUES": "Selected Chat Queues",
-    "USERADD_SMSQUEUES": "Add SMS Queue to User",
-    "ALL_SMSQUEUES": "All SMS Queues",
-    "SELECTED_SMSQUEUES": "Selected SMS Queues",
-    "USERADD_WHATSAPPQUEUES": "Add Whataspp Queue to User",
-    "ALL_WHATSAPPQUEUES": "All Whataspp Queues",
-    "SELECTED_WHATSAPPQUEUES": "Selected WhatsApp Queues",
-    "USERADD_FAXQUEUES": "Add Fax Queue to User",
-    "ALL_FAXQUEUES": "All Fax Queues",
-    "SELECTED_FAXQUEUES": "Selected Fax Queues",
-    "USERADD_OPENCHANNELQUEUES": "Add Open Channel Queue to User",
-    "ALL_OPENCHANNELQUEUES": "All Open Channel Queues",
-    "SELECTED_OPENCHANNELQUEUES": "Selected Open Channel Queues",
-    "USERADD_PROJECTS": "Add Cally Square Project to User",
-    "ALL_PROJECTS": "All Cally Square Projects",
-    "SELECTED_PROJECTS": "Selected Cally Square Projects",
-    "USERADD_CHATWEBSITES": "Add Chat Website to User",
-    "ALL_CHATWEBSITES": "All Chat Websites",
-    "SELECTED_CHATWEBSITES": "Selected Chat Websites",
-    "USERADD_QUEUECAMPAIGNS": "Add Queue Campaign to User",
-    "ALL_QUEUECAMPAIGNS": "All Queue Campaigns",
-    "SELECTED_QUEUECAMPAIGNS": "Selected Queue Campaigns",
-    "USERADD_MAILACCOUNTS": "Add Email Account to User",
-    "ALL_MAILACCOUNTS": "All Email Accounts",
-    "SELECTED_MAILACCOUNTS": "Selected Email Accounts",
-    "USERADD_FAXACCOUNTS": "Add Fax Account to User",
-    "ALL_FAXACCOUNTS": "All Fax Accounts",
-    "SELECTED_FAXACCOUNTS": "Selected Fax Accounts",
-    "USERADD_SMSACCOUNTS": "Add SMS Account to User",
-    "ALL_SMSACCOUNTS": "All SMS Accounts",
-    "SELECTED_SMSACCOUNTS": "Selected SMS Accounts",
-    "USERADD_WHATSAPPACCOUNTS": "Add WhatsApp Account to User",
-    "ALL_WHATSAPPACCOUNTS": "All WhatsApp Accounts",
-    "SELECTED_WHATSAPPACCOUNTS": "Selected WhatsApp Accounts",
-    "USERADD_OPENCHANNELACCOUNTS": "Add Open Channel Account to User",
-    "ALL_OPENCHANNELACCOUNTS": "All Open Channel Accounts",
-    "SELECTED_OPENCHANNELACCOUNTS": "Selected Open Channel Accounts",
-    "USERPROFILES": "User Profiles",
-    "USERPROFILE": "User Profile",
-    "NEW_USERPROFILE": "New User Profile",
-    "ADD_USERPROFILE": "Add User Profile",
-    "EDIT_USERPROFILE": "Edit User Profile",
-    "CLONE_USERPROFILE": "Clone User Profile",
-    "DELETE_USERPROFILE": "Delete User Profile",
-    "CRUDPERMISSIONS": "Permission Type",
-    "SECTIONS": "Sections",
-    "MODULES": "Modules",
-    "SUMMARY": "Summary",
-    "REPORT_TYPE": "Report Type",
-    "PERMISSIONS_MANAGE": "Manage",
-    "PERMISSIONS_SECTION_TITLE": "{{sectionName}} Permissions",
-    "PERMISSIONS_AUTO_ASSOCIATION_INFO": "Automatically associate every current and future resource of this section to the User Profile",
-    "PERMISSIONS_PLACEHOLDER_SEARCH": "Search...",
-    "PERMISSIONS_SELECT_SECTION": "Select a section",
-    "PERMISSIONS_SELECT_REPORT_TYPE": "Select report type",
-    "PERMISSIONS_ALL_RESOURCES": "All resources",
-    "PERMISSIONS_SELECTED_RESOURCES": "Selected resources",
-    "PERMISSIONS_SECTION_HIDE": "Hide section to the User",
-    "PERMISSIONS_SECTION_SHOW": "Show section to the User",
-    "PERMISSIONS_WARNING_ENABLE_ALL": "All {{sectionName}} subsections and their resources will be enabled. Are you sure you want to continue?",
-    "PERMISSIONS_WARNING_CLOSE": "You have unsaved changes. Are you sure you want to exit without saving?",
+    "PREFIXREQUIRED": "Forskeyti skilyrt",
+    "MANAGE_PERMISSIONS": "Stjórna aðgangsheimildum",
+    "USERADD_VOICEQUEUES": "Bæta við tal biðröð á notanda",
+    "ALL_VOICEQUEUES": "Allar tal biðraðir",
+    "SELECTED_VOICEQUEUES": "Valdar tal biðraðir",
+    "USERADD_CHATQUEUES": "Bæta við spjall rás á notanda",
+    "ALL_CHATQUEUES": "allar spjall rásir",
+    "SELECTED_CHATQUEUES": "Valdar tölvupósts biðraðir",
+    "USERADD_MAILQUEUES": "Bæta við tölvupósts biðröð á notanda",
+    "ALL_MAILQUEUES": "Allar tölvupósts biðraðir",
+    "SELECTED_MAILQUEUES": "Valdar spjall biðraðir",
+    "USERADD_SMSQUEUES": "Bæta við SMS biðröð á notanda",
+    "ALL_SMSQUEUES": "Allar SMS biðraðir",
+    "SELECTED_SMSQUEUES": "Valdar SMS biðraðir",
+    "USERADD_WHATSAPPQUEUES": "Bæta við Whataspp biðröð á notanda",
+    "ALL_WHATSAPPQUEUES": "Allar Whataspp biðraðir",
+    "SELECTED_WHATSAPPQUEUES": "Valdar WhatsApp biðraðir",
+    "USERADD_FAXQUEUES": "Bæta við Fax biðröð á notanda",
+    "ALL_FAXQUEUES": "Allar FAX biðraðir",
+    "SELECTED_FAXQUEUES": "Valdar Fax biðraðir",
+    "USERADD_OPENCHANNELQUEUES": "Bæta við Open Channel biðröð á notanda",
+    "ALL_OPENCHANNELQUEUES": "Allar Open Channel biðraðir",
+    "SELECTED_OPENCHANNELQUEUES": "Valdar Open Channel biðraðir",
+    "USERADD_PROJECTS": "Bæta við Cally Square verkefni á notanda",
+    "ALL_PROJECTS": "Öll Cally Square verkefni",
+    "SELECTED_PROJECTS": "Selected Cally Square verkefni",
+    "USERADD_CHATWEBSITES": "Bæta við spjall vefsíðu á notanda",
+    "ALL_CHATWEBSITES": "Allar spjall vefsíður",
+    "SELECTED_CHATWEBSITES": "Valdar spjall vefsíður",
+    "USERADD_QUEUECAMPAIGNS": "Bæta við biðraða herferð á notanda",
+    "ALL_QUEUECAMPAIGNS": "Allar herferða biðraðir",
+    "SELECTED_QUEUECAMPAIGNS": "Valdar biðraða herferðir",
+    "USERADD_MAILACCOUNTS": "Bæta við tölvpóst reikningi á notanda",
+    "ALL_MAILACCOUNTS": "Allir tölvupósts reikningar",
+    "SELECTED_MAILACCOUNTS": "Valdir tölvupósts reikningar",
+    "USERADD_FAXACCOUNTS": "Bæta við Fax reikningi á notanda",
+    "ALL_FAXACCOUNTS": "Allir FAX reikningar",
+    "SELECTED_FAXACCOUNTS": "Valdir Fax reikningar",
+    "USERADD_SMSACCOUNTS": "Bæta við SMS reikningi á notanda",
+    "ALL_SMSACCOUNTS": "Allir SMS reikningar",
+    "SELECTED_SMSACCOUNTS": "Valdir SMS reikningar",
+    "USERADD_WHATSAPPACCOUNTS": "Bæta við WhatsApp reikningi á notanda",
+    "ALL_WHATSAPPACCOUNTS": "Allir WhatsApp reikningar",
+    "SELECTED_WHATSAPPACCOUNTS": "Valdir WhatsApp reikningar",
+    "USERADD_OPENCHANNELACCOUNTS": "Bæta við Open Channel reikningi á notanda",
+    "ALL_OPENCHANNELACCOUNTS": "Allir Open Channel reikningar",
+    "SELECTED_OPENCHANNELACCOUNTS": "Valdir Open Channel reikningar",
+    "USERPROFILES": "Stillingar notanda",
+    "USERPROFILE": "Stillingar notanda",
+    "NEW_USERPROFILE": "Ný notanda skilgreining",
+    "ADD_USERPROFILE": "Bæta við notanda sniði",
+    "EDIT_USERPROFILE": "Breyta notanda stillingum",
+    "CLONE_USERPROFILE": "Afritaðu notanda stillingar",
+    "DELETE_USERPROFILE": "Eyða stillingum notanda",
+    "CRUDPERMISSIONS": "Heimildar tegund",
+    "SECTIONS": "Svæði",
+    "MODULES": "Einingar",
+    "SUMMARY": "Samtala",
+    "REPORT_TYPE": "Skýrslu tegund",
+    "PERMISSIONS_MANAGE": "Stjórna",
+    "PERMISSIONS_SECTION_TITLE": "{{sectionName}} Heimildir",
+    "PERMISSIONS_AUTO_ASSOCIATION_INFO": "Tengja sjálfkrafa hvert núverandi og framtíðar úrræði við notendaprófílinn",
+    "PERMISSIONS_PLACEHOLDER_SEARCH": "Leita...",
+    "PERMISSIONS_SELECT_SECTION": "Veldu svæði",
+    "PERMISSIONS_SELECT_REPORT_TYPE": "Velja skýrslu tegund",
+    "PERMISSIONS_ALL_RESOURCES": "Öll úrræði",
+    "PERMISSIONS_SELECTED_RESOURCES": "Valdir möguleikar",
+    "PERMISSIONS_SECTION_HIDE": "Fela þennan hluta fyrir notandanum",
+    "PERMISSIONS_SECTION_SHOW": "Sýna þennann hluta notandanum",
+    "PERMISSIONS_WARNING_ENABLE_ALL": "Allir {{sectionName}} undirkaflar og aðgerðir þeirra verða virkjuð. Ertu viss um að þú viljir halda áfram?",
+    "PERMISSIONS_WARNING_CLOSE": "Þú ert með óvistaðar breytingar. Ertu viss um að þú viljir hætta án þess að vista?",
     "NOTIFICATIONS": {
-      "PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE": "{{sectionName}} section enabled",
-      "PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE": "All {{sectionName}} resources have been added to {{userProfileName}} User Profile",
-      "PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE_NO_RESOURCES": "{{sectionName}} has been added to {{userProfileName}} User Profile",
-      "PERMISSIONS_DISABLED_ALL_SUCCESS_TITLE": "{{sectionName}} section disabled",
-      "PERMISSIONS_DISABLED_ALL_SUCCESS_MESSAGE": "All {{sectionName}} resources have been removed from {{userProfileName}} User Profile",
-      "PERMISSIONS_DISABLED_ALL_SUCCESS_MESSAGE_NO_RESOURCES": "{{sectionName}} has been removed from {{userProfileName}} User Profile",
-      "PERMISSIONS_SAVED_SUCCESS_TITLE": "{{sectionName}} section saved",
-      "PERMISSIONS_SAVED_SUCCESS_MESSAGE": "Permissions successfully updated!"
+      "PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE": "{{sectionName}} hluti virkjaður",
+      "PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE": "Öllum {{sectionName}} aðgengi hefur verið bætt við {{userProfileName}} notandaprófílinn",
+      "PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE_NO_RESOURCES": "{{sectionName}} hefur verið bætt við {{userProfileName}} notandaprófílinn",
+      "PERMISSIONS_DISABLED_ALL_SUCCESS_TITLE": "{{sectionName}} hluti óvirkjað",
+      "PERMISSIONS_DISABLED_ALL_SUCCESS_MESSAGE": "Öll {{sectionName}} aðgengi hafa verið fjarlægð af {{userProfileName}} notandaprófílnum",
+      "PERMISSIONS_DISABLED_ALL_SUCCESS_MESSAGE_NO_RESOURCES": "\n{{sectionName}} hefur verið fjarlægt af {{userProfileName}} notandaprófílnum",
+      "PERMISSIONS_SAVED_SUCCESS_TITLE": "{{sectionName}} hluti vistaður",
+      "PERMISSIONS_SAVED_SUCCESS_MESSAGE": "Heimildir uppfærðar!"
     },
-    "CONFIRM": "Confirm",
-    "CANCEL": "Cancel",
-    "CLOSE": "Close",
-    "QUEUES_ASSOCIATION": "{{channel}} Queues Association",
-    "TEAMS_ASSOCIATION": "Teams Association",
-    "PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE": "Unauthorized action",
-    "PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE": "You are not allowed to access the selected section",
-    "PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE": "You are not allowed to create the resource",
-    "MASK_SENSITIVE_DATA": "Mask Sensitive Data",
+    "CONFIRM": "Staðfesta",
+    "CANCEL": "Hætta við",
+    "CLOSE": "Loka",
+    "QUEUES_ASSOCIATION": "{{channel}} Biðraðir",
+    "TEAMS_ASSOCIATION": "Meðlimir í hóp",
+    "PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE": "Óleyfileg aðgerð",
+    "PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE": "Þú hefur ekki leyfi til nota valið svæði",
+    "PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE": "Þú hefur ekki heimild til að stofna þennan möguleika",
+    "MASK_SENSITIVE_DATA": "Hylja viðkvæm gögn",
     "WSS_PORT": "WSS Port",
-    "DOWNLOADS": "Downloads",
-    "DOWNLOAD_PERMISSIONS": "Download Permissions",
-    "VOICE_RECORDINGS": "Voice Recordings",
-    "OMNICHANNEL_INTERACTIONS": "Omnichannel Interactions",
-    "ATTACHMENTS": "Attachments",
-    "SCREEN_RECORDINGS": "Screen Recordings",
+    "DOWNLOADS": "Niðurhal",
+    "DOWNLOAD_PERMISSIONS": "Leyfi til niðurhals",
+    "VOICE_RECORDINGS": "Upptaka á tali",
+    "OMNICHANNEL_INTERACTIONS": "Omnichannel samskipti",
+    "ATTACHMENTS": "Viðhengi",
+    "SCREEN_RECORDINGS": "Skjáupptaka",
     "JSCRIPTY_SESSIONS": "Jscripty Sessions",
-    "CONTACT_MANAGER_LISTS": "Contact Manager Lists",
-    "CALLYSQUARE_RECORDINGS": "Cally Square Recordings",
-    "IGNORE_AGENT_BREAK_STATUS_FOR_PREVIEW_CALLS": "Ignore agent break status for preview calls",
-    "SELECT_RECALLME_CAMPAIGN": "Select Recall Me Campaign",
-    "CLIENT_LOGS": "Client Logs",
-    "CLIENT_LOGS_DISABLED": "Client logs are disabled",
-    "CLIENT_LOGS_ENABLED": "Client logs are enabled",
-    "CLIENT_LOGS_LOGLEVEL_SELECT": "Select min logging level (severity)",
-    "CLIENT_LOGS_LOGLEVEL": "Log level: {{logLevel}}",
-    "CLIENT_LOGS_ENABLED_SINCE": "Enabled since: {{enabledSince}}",
-    "CLIENT_LOGS_ENABLED_MSG": "Client logs have been enabled for your user",
-    "CLIENT_LOGS_DISABLED_MSG": "Client logs have been disabled for your user",
-    "CLIENT_LOGS_ALL_ENABLED_WARNING": "Warning: this could severely affect server performances if many agents are logged in at the same time!",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Add Agent to Queue Campaigns",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "Add Agent to Voice Queues",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "Add Agent to Chat Queues",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "Add Agent to Email Queues",
-    "QUEUEADD_AGENT_SMS_INBOUND": "Add Agent to SMS Queues",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Add Agent to WhatsApp Queues",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Add Agent to Open Channel Queues",
-    "QUEUEADD_AGENT_FAX_INBOUND": "Add Agent to Fax Queues",
-    "ALL_QUEUES_VOICE_OUTBOUND": "All Queue Campaigns",
-    "SELECTED_QUEUES_VOICE_OUTBOUND": "Selected Queue Campaigns",
-    "ALL_QUEUES_VOICE_INBOUND": "All Voice Queues",
-    "SELECTED_QUEUES_VOICE_INBOUND": "Selected Voice Queues",
-    "ALL_QUEUES_CHAT_INBOUND": "All Chat Queues",
-    "SELECTED_QUEUES_CHAT_INBOUND": "Selected Chat Queues",
-    "ALL_QUEUES_MAIL_INBOUND": "All Email Queues",
-    "SELECTED_QUEUES_MAIL_INBOUND": "Selected Email Queues",
-    "ALL_QUEUES_SMS_INBOUND": "All SMS Queues",
-    "SELECTED_QUEUES_SMS_INBOUND": "Selected SMS Queues",
-    "ALL_QUEUES_WHATSAPP_INBOUND": "All WhatsApp Queues",
-    "SELECTED_QUEUES_WHATSAPP_INBOUND": "Selected WhatsApp Queues",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "All Open Channel Queues",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Selected Open Channel Queues",
-    "ALL_QUEUES_FAX_INBOUND": "All Fax Queues",
-    "SELECTED_QUEUES_FAX_INBOUND": "Selected Fax Queues"
+    "CONTACT_MANAGER_LISTS": "Hafðu samband við stjórnanda listans",
+    "CALLYSQUARE_RECORDINGS": "Cally Square upptökur",
+    "IGNORE_AGENT_BREAK_STATUS_FOR_PREVIEW_CALLS": "Hunsa stöðu fulltrúa ef um pantað símtal er að ræða",
+    "SELECT_RECALLME_CAMPAIGN": "Veldu Recall Me herferð",
+    "CLIENT_LOGS": "Skráningar notanda",
+    "CLIENT_LOGS_DISABLED": "Skráningar notanda eru afvirkjaðir",
+    "CLIENT_LOGS_ENABLED": "Færsluskráningar notanda eru virkjaðr",
+    "CLIENT_LOGS_LOGLEVEL_SELECT": "Veldu lámarks skráningar stig (severity)",
+    "CLIENT_LOGS_LOGLEVEL": "Stig skránginar: {{logLevel}}",
+    "CLIENT_LOGS_ENABLED_SINCE": "Virkjað síðan: {{enabledSince}}",
+    "CLIENT_LOGS_ENABLED_MSG": "Færslu skráningar á þínum notanda hafa verið virkjaðar",
+    "CLIENT_LOGS_DISABLED_MSG": "Færslu skráningar á þínum notanda hefur verið afvirkjuð",
+    "CLIENT_LOGS_ALL_ENABLED_WARNING": "Viðvörun: þetta gæti haft alvarleg áhrif á hraða ef margir fulltrúar eru innskráðir á sama tíma!",
+    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Bættu fulltrúa við biðraða herferðir",
+    "QUEUEADD_AGENT_VOICE_INBOUND": "Bættu fullrúa við tal raðir",
+    "QUEUEADD_AGENT_CHAT_INBOUND": "Bættu fulltrúa við spjallraðir",
+    "QUEUEADD_AGENT_MAIL_INBOUND": "Bættu fulltrúa við tölvupóst raðir",
+    "QUEUEADD_AGENT_SMS_INBOUND": "Bættu fulltrúa við SMS raðir",
+    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Bættu fulltrúa við WhatsApp biðraðir",
+    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Bættu fulltrúa við Open Channel raðir",
+    "QUEUEADD_AGENT_FAX_INBOUND": "Bættu fulltrúa við Fax raðir",
+    "ALL_QUEUES_VOICE_OUTBOUND": "Allar herferða biðraðir",
+    "SELECTED_QUEUES_VOICE_OUTBOUND": "Valdar herferða biðraðir",
+    "ALL_QUEUES_VOICE_INBOUND": "Allar tal biðraðir",
+    "SELECTED_QUEUES_VOICE_INBOUND": "Valdar tal biðraðir",
+    "ALL_QUEUES_CHAT_INBOUND": "Allar spjall biðraðir",
+    "SELECTED_QUEUES_CHAT_INBOUND": "Valdar spjall biðraðir",
+    "ALL_QUEUES_MAIL_INBOUND": "Allar tölvupóst biðraðir",
+    "SELECTED_QUEUES_MAIL_INBOUND": "Valdar tölvupóst biðraðir",
+    "ALL_QUEUES_SMS_INBOUND": "Allar SMS biðraðir",
+    "SELECTED_QUEUES_SMS_INBOUND": "Valdar SMS biðraðir",
+    "ALL_QUEUES_WHATSAPP_INBOUND": "Allar WhatsApp biðraðirueues",
+    "SELECTED_QUEUES_WHATSAPP_INBOUND": "Valdar WhatsApp biðraðir",
+    "ALL_QUEUES_OPENCHANNEL_INBOUND": "Allar Open Channel biðraðir",
+    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Valdar Open Channel biðraðir",
+    "ALL_QUEUES_FAX_INBOUND": "Allar Fax biðraðir",
+    "SELECTED_QUEUES_FAX_INBOUND": "Valdar Fax biðrair"
   }
 }
index 3c87ee1..e91cfcd 100644 (file)
@@ -1,32 +1,32 @@
 {
   "STAFF": {
     "HOTDESK": "Hot desk",
-    "ENABLEVIDEORECORDING": "Ativar gravação de vídeo",
+    "ENABLEVIDEORECORDING": "Ativar Gravação de Vídeo",
     "OLD_PASSWORD": "Senha Antiga",
     "ENABLEJAWSINTEGRATION": "Ativar Integração de Jaws",
     "ALIAS": "Alias",
-    "NO_PASSWORD_CHANGE": "Nenhuma mudança de senha",
+    "NO_PASSWORD_CHANGE": "Nenhuma Alteração de Senha",
     "SECURITY_SUITE": "Suíte de Segurança",
-    "LAST_PASSWORD_RESET_AT": "Última redefinição de senha em",
+    "LAST_PASSWORD_RESET_AT": "Última alteração de senha foi em",
     "SIP_WEBRTC": "Sip",
-    "SETTINGS_WEBRTC": "Definições",
+    "SETTINGS_WEBRTC": "Configurações",
     "WEBRTC": "WebRTC",
     "DTLSCERTFILE": "Certificado TLS",
     "DTLSPRIVATEKEY": "Chave privada do certificado TLS",
     "CONTEXT": "Contexto",
-    "RINGINUSE": "Toque em uso",
+    "RINGINUSE": "Toque em Uso",
     "USERS": "Usuários",
     "AGENTS": "Agentes",
     "TOGGLE_SIDENAV": "Toggle sidenav",
     "SEARCH_FOR_ANYONE": "Procurar",
     "BACK": "Voltar",
     "MULTI_SELECT_TOGGLE": "multi select toggle",
-    "SELECT_ALL": "Selecionar tudo",
-    "SELECT_NONE": "Selecione nenhum",
+    "SELECT_ALL": "Selecionar Tudo",
+    "SELECT_NONE": "Selecione Nenhum",
     "SELECTED": "Selecionado",
     "DELETE_SELECTED": "Excluir selecionado",
     "EXPORT_SELECTED": "Exportar selecionado",
-    "ALL_USERS": "Todos os usuários",
+    "ALL_USERS": "Todos os Usuários",
     "ALL_AGENTS": "Todos os agentes",
     "SORT": "ordenar",
     "NAME": "Nome",
     "ADD_USER": "Adicionar Usuário",
     "ADD_AGENT": "Adicionar Agente",
     "NO_RESULTS": "Nenhum resultado ..",
-    "CLOSE_DIALOG": "Fechar a caixa de diálogo",
+    "CLOSE_DIALOG": "Encerrar Conversa",
     "NAME_REQUIRED": "Nome (obrigatório)",
     "USERNAME": "Usuário",
-    "SHOW_ALL_FIELDS": "Mostrar todos os campos",
-    "PHONE_NUMBER": "Número de telefone",
+    "SHOW_ALL_FIELDS": "Mostrar Todos os Campos",
+    "PHONE_NUMBER": "Número de Telefone",
     "EMAIL": "Email",
     "PASSWORD": "Senha",
     "ERRORS": {
     "VOICE": "Voz",
     "CREATED_AT": "Criado em",
     "ROLE": "Função",
-    "PERSONAL_INFO": "Informação pessoal",
+    "PERSONAL_INFO": "Informação Pessoal",
     "DESCRIPTION": "Descrição",
-    "CHANGE_AVATAR": "Mudar Avatar",
+    "CHANGE_AVATAR": "Alterar Avatar",
     "GENERAL": "Geral",
     "INTERNAL": "Interno",
     "TRANSPORT": "Transporte",
-    "ALLOWCODECS": "Codecs permitidos",
+    "ALLOWCODECS": "Codecs Permitidos",
     "HELP": {
       "LAST_PASSWORD_RESET_AT": "Última data e hora em que a senha foi alterada. Se a configuração geral do Secure Suite estiver ativada, a senha expirará após 90 dias.",
       "DTLSCERTFILE": "Link para o certificado TLS válido (arquivo .crt). Valor padrão: '/etc/pki/tls/certs/motion.crt'.",
       "DTLSPRIVATEKEY": "Link para a chave privada do certificado (arquivo .key). Valor padrão: '/etc/pki/tls/private/motion.key'.",
       "ALLOWCODECS": "Codecs permitidos em ordem de preferência",
-      "TRANSPORT": "Definir os transportes padrão em ordem de preferência",
-      "HOST": "Como encontrar o cliente - IP ou nome do host. Se você deseja que o telefone se registre, use a palavra-chave dynamic em vez de Host IP",
-      "NAT": "Altera o comportamento do Asterisk para clientes por trás de um firewall. Se qualquer uma das opções separadas por vírgulas for 'no', o Asterisk irá ignorar outras configurações e definir nat = no",
+      "TRANSPORT": "Define o transporte padrão em ordem de preferência",
+      "HOST": "Como encontrar o cliente - IP ou nome do host. Se você deseja que o telefone se registre sem restrição, use a palavra-chave dynamic em vez de Host IP",
+      "NAT": "Altera o comportamento do Asterisk para clientes que estejam atrás de firewall. Se qualquer uma das opções separadas por vírgulas for 'no', o Asterisk irá ignorar outras configurações e definir 'nat = no'",
       "SIPEXPIRES": "Padrão: 160",
       "SIPPORT": "Padrão: 5160",
-      "TYPE": "Determina o papel do SIP no asterisco. Usuário: usado para autenticar entrada - Peer: para chamadas de saída - Amigo: abrange ambas as características do acima",
-      "CHATCAPACITY": "Número máximo de interações de canal simultâneas por agente (0 = ilimitado)",
-      "MAILCAPACITY": "Número máximo de interações de canal simultâneas por agente (0 = ilimitado)",
-      "FAXCAPACITY": "Número máximo de interações de canal simultâneas por agente (0 = ilimitado)",
-      "SMSCAPACITY": "Número máximo de interações de canal simultâneas por agente (0 = ilimitado)",
-      "OPENCHANNELCAPACITY": "Número máximo de interações de canal simultâneas por agente (0 = ilimitado)",
+      "TYPE": "Determina o papel do SIP no Asterisk. User: usado para autenticar entrada - Peer: para chamadas de saída - Friend: abrange ambas as características",
+      "CHATCAPACITY": "Número máximo de interações simultâneas do canal por agente (0 = ilimitado)",
+      "MAILCAPACITY": "Número máximo de interações simultâneas do canal por agente (0 = ilimitado)",
+      "FAXCAPACITY": "Número máximo de interações simultâneas do canal por agente (0 = ilimitado)",
+      "SMSCAPACITY": "Número máximo de interações simultâneas do canal por agente (0 = ilimitado)",
+      "OPENCHANNELCAPACITY": "Número máximo de interações simultâneas do canal por agente (0 = ilimitado)",
       "CALLGROUP": "O grupo de chamadas do agente",
       "PICKUPGROUP": "Os grupos nos quais o agente pode atender chamadas",
       "USERNAME": "Somente números, letras e caracteres específicos (._) são suportados",
       "ENCRYPTION": "Criptografia SRTP (Secure Realtime Protocol)",
       "SAVE_PERMISSIONS": "Todas as seções que contêm alterações pendentes serão salvas",
-      "CUSTOM_DASHBOARDS_PERMISSIONS": "As permissões de painéis personalizados são gerenciadas no módulo Ferramentas",
+      "CUSTOM_DASHBOARDS_PERMISSIONS": "As permissões de Dashboards\nPersonalizados são gerenciadas no módulo Ferramentas",
       "APIKEY": "Use o botão 'API key manager' na barra de ferramentas para gerenciar essa chave",
       "ENABLEAUTOMATICSCREENRECORDING": "A funcionalidade está disponível apenas para canal de voz",
-      "BLOCKED": "Bloquear / desbloquear acesso",
+      "BLOCKED": "Bloquear / Desbloquear acesso",
       "DISABLED": "selecione para desativar / desmarcar para reativar",
-      "WHATSAPPCAPACITY": "Número máximo de interações de canal simultâneas por agente (0 = ilimitado)",
-      "MASK_SENSITIVE_DATA": "Mascare quaisquer dados confidenciais em todo o aplicativo (por exemplo, números de telefone e endereços de e-mail)",
+      "WHATSAPPCAPACITY": "Número máximo de interações simultâneas do canal por agente (0 = ilimitado)",
+      "MASK_SENSITIVE_DATA": "Mascare quaisquer dados confidenciais em toda aplicação (por exemplo, números de telefone e endereços de e-mail)",
       "WSS_PORT": "Padrão: 8089",
       "AD_SSO_ENABLED": "Faça login com suas credenciais do Active Directory"
     },
     "NEW_PASSWORD": "Nova Senha",
-    "CONFIRM_PASSWORD": "Confirmar a Senha",
-    "CHANGE_PASSWORD": "Mudar senha",
-    "CHANGEPASSWORD_AGENT": "Mudar senha",
-    "CHANGEPASSWORD_USER": "Mudar senha",
-    "CHANGEPASSWORD_TELEPHONE": "Mudar senha",
-    "LOGININPAUSE": "Login em pausa",
+    "CONFIRM_PASSWORD": "Confirmar Senha",
+    "CHANGE_PASSWORD": "Alterar Senha",
+    "CHANGEPASSWORD_AGENT": "Alterar Senha",
+    "CHANGEPASSWORD_USER": "Alterar Senha",
+    "CHANGEPASSWORD_TELEPHONE": "Alterar Senha",
+    "LOGININPAUSE": "Login em Pausa",
     "HOST": "Host",
     "NAT": "NAT",
-    "CHANSPY": "Espião",
-    "OTHER_CHANNELS": "Outros canais",
-    "CHATCAPACITY": "Capacidade do Chat",
+    "CHANSPY": "Intercalação Remota",
+    "OTHER_CHANNELS": "Outros Canais",
+    "CHATCAPACITY": "Capacidade do WebChat",
     "MAILCAPACITY": "Capacidade de Email",
     "FAXCAPACITY": "Capacidade do Fax",
-    "SMSCAPACITY": "Capacidade do Sms",
+    "SMSCAPACITY": "Capacidade do SMS",
     "OPENCHANNELCAPACITY": "Capacidade do Open Channel",
     "MOTIONBAR": "Motion Bar",
-    "SETTINGS": "Definições",
-    "AUTOANSWER": "Resposta automática",
-    "ENABLESETTINGS": "Habilitar Definições",
+    "SETTINGS": "Configurações",
+    "AUTOANSWER": "Atendimento Automático",
+    "ENABLESETTINGS": "Ativar Configurações",
     "CALL_FORWARDING": "Encaminhamento de Chamadas",
     "UNCONDITIONAL": "Incondicional",
     "UNCONDITIONALNUMBER": "Número Incondicional",
-    "NOREPLY": "Sem resposta",
-    "NOREPLYNUMBER": "Nenhum número de resposta",
+    "NOREPLY": "Sem Resposta",
+    "NOREPLYNUMBER": "Nenhum Número de Resposta",
     "BUSY": "Ocupado",
     "BUSYNUMBER": "Número Ocupado",
-    "REMOTE_CONTROL": "Controle remoto",
-    "REMOTECONTROL": "Controle remoto",
-    "REMOTECONTROLPORT": "Porta de Controle remoto",
+    "REMOTE_CONTROL": "Controle Remoto",
+    "REMOTECONTROL": "Controle Remoto",
+    "REMOTECONTROLPORT": "Porta de Controle Remoto",
     "SIP": "SIP",
-    "SIPEXPIRES": "SIP Expira [seg]",
+    "SIPEXPIRES": "Expiração SIP [seg]",
     "SIPPORT": "Porta SIP",
     "PENALTY": "Prioridade",
-    "ACCOUNTNAME": "Nome da conta",
+    "ACCOUNTNAME": "Nome da Conta",
     "ADD_TELEPHONE": "Adicionar Telefone",
     "EDIT_TELEPHONE": "Editar Telefone",
     "DELETE_TELEPHONE": "Excluir Telefone",
     "TEAMS": "Equipes",
     "DELETE_TEAM": "Excluir Equipe",
-    "AGENTADD_TEAM": "Adicionar agentes na equipe",
+    "AGENTADD_TEAM": "Adicionar Agentes na Equipe",
     "EDIT_TEAM": "Editar Equipe",
     "TYPE": "Tipo",
     "TELEPHONES": "Telefones",
-    "CALLERID": "Identificador de chamadas",
-    "ENABLERECORDING": "Ativar gravação",
-    "STAFF": "Pessoal",
+    "CALLERID": "Caller ID",
+    "ENABLERECORDING": "Ativar Gravação",
+    "STAFF": "Colaboradores",
     "ID": "Id",
     "NEW_USER": "Novo Usuário",
     "NEW_AGENT": "Novo Agente",
     "NEW_TELEPHONE": "Novo Telefone",
     "NEW_TEAM": "Nova Equipe",
     "ADD_TEAM": "Adicionar Equipe",
-    "JOIN_QUEUE": "Junte-se à fila",
+    "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",
-    "NO_AVAILABLE_INFO": "Nenhuma informação disponível",
+    "AUTOINTERNAL": "Gerar automaticamente número interno",
+    "ADD_AGENT_TO_TEAM": "Adicionar Agente na Equipe",
+    "TEAMADD_AGENT": "Adicionar Agente na Equipe",
+    "NO_AVAILABLE_INFO": "Nenhuma info disponível",
     "PERMISSIONS": "Permissões",
-    "ADD_AGENT_TO_QUEUE": "Adicionar agente à fila",
+    "ADD_AGENT_TO_QUEUE": "Adicionar Agente à Fila",
     "ALL_MODULES_AVAILABLE": "Todos os módulos disponíveis",
     "CALLGROUP": "Grupo de Chamadas",
-    "PICKUPGROUP": "Grupo de retirada",
-    "ADD_AGENT_TO_QUEUE_CAMPAIGNS": "Adicionar agente a campanhas de fila",
-    "ADD_AGENT_TO_VOICE_QUEUES": "Adicionar agente às filas de voz",
-    "ADD_AGENT_TO_CHAT_QUEUES": "Adicionar agente às filas de Chat",
-    "ADD_AGENT_TO_MAIL_QUEUES": "Adicionar agente às filas de emails",
-    "ADD_AGENT_TO_SMS_QUEUES": "Adicionar agente às filas do SMS",
-    "ADD_AGENT_TO_OPENCHANNEL_QUEUES": "Adicionar agente às filas do Open Channel",
-    "ADD_AGENT_TO_FAX_QUEUES": "Adicionar agente às filas de fax",
-    "QUEUEADD_USER_VOICE_INBOUND": "Adicionar usuário às filas de voz",
-    "QUEUEADD_USER_CHAT_INBOUND": "Adicionar usuário a filas de Chat",
-    "QUEUEADD_USER_MAIL_INBOUND": "Adicionar usuário a filas de e-mail",
-    "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",
+    "PICKUPGROUP": "Grupo de Captura",
+    "ADD_AGENT_TO_QUEUE_CAMPAIGNS": "Adicionar Agente a Campanhas de Fila",
+    "ADD_AGENT_TO_VOICE_QUEUES": "Adicionar Agente à Fila de Voz",
+    "ADD_AGENT_TO_CHAT_QUEUES": "Adicionar Agente à Fila de WebChat",
+    "ADD_AGENT_TO_MAIL_QUEUES": "Adicionar Agente à Fila de Emails",
+    "ADD_AGENT_TO_SMS_QUEUES": "Adicionar Agente à Filas do SMS",
+    "ADD_AGENT_TO_OPENCHANNEL_QUEUES": "Adicionar Agente à Fila do OpenChannel",
+    "ADD_AGENT_TO_FAX_QUEUES": "Adicionar Agente à Fila de Fax",
+    "QUEUEADD_USER_VOICE_INBOUND": "Adicionar Usuário à Filas de Voz",
+    "QUEUEADD_USER_CHAT_INBOUND": "Adicionar Usuário à Filas de WebChat",
+    "QUEUEADD_USER_MAIL_INBOUND": "Adicionar Usuário a Filas de Email",
+    "QUEUEADD_USER_SMS_INBOUND": "Adicionar Usuário à Fila de SMS",
+    "QUEUEADD_USER_OPENCHANNEL_INBOUND": "Adicionar Usuário à Filas do Open Channel",
+    "QUEUEADD_USER_FAX_INBOUND": "Adicionar Usuário à Filas de Fax",
+    "ALL_TEAMS": "Todas as Equipes",
     "SELECTED_TEAMS": "Equipes Selecionadas",
     "SELECTED_AGENTS": "Agentes Selecionados",
-    "ALL_QUEUE_CAMPAIGNS": "Todas as campanhas de filas",
+    "ALL_QUEUE_CAMPAIGNS": "Todas as Campanhas de Filas",
     "SELECTED_QUEUE_CAMPAIGNS": "Campanhas de Filas Selecionadas",
-    "ALL_VOICE_QUEUES": "Todas as filas de voz",
-    "SELECTED_VOICE_QUEUES": "Filas de voz selecionadas",
-    "ALL_CHAT_QUEUES": "Todas as filas de Chat",
-    "SELECTED_CHAT_QUEUES": "Filas de Chat Selecionadas",
-    "ALL_MAIL_QUEUES": "Todas as filas de email",
-    "SELECTED_MAIL_QUEUES": "Filas de E-mail Selecionadas",
-    "ALL_SMS_QUEUES": "Todas as filas do SMS",
-    "SELECTED_SMS_QUEUES": "Filas SMS Selecionadas",
-    "ALL_OPENCHANNEL_QUEUES": "Todas as filas do Open Channel",
-    "SELECTED_OPENCHANNEL_QUEUES": "Filas de Open Channel Selecionadas",
-    "ALL_FAX_QUEUES": "Todas as filas de fax",
-    "SELECTED_FAX_QUEUES": "Filas de fax selecionadas",
-    "VOICEMAIL": "Correio de voz",
+    "ALL_VOICE_QUEUES": "Todas as Filas de Voz",
+    "SELECTED_VOICE_QUEUES": "Filas de Voz Selecionadas",
+    "ALL_CHAT_QUEUES": "Todas as Filas de WebChat",
+    "SELECTED_CHAT_QUEUES": "Filas de WebChat Selecionadas",
+    "ALL_MAIL_QUEUES": "Todas as Filas de Email",
+    "SELECTED_MAIL_QUEUES": "Filas de Email Selecionadas",
+    "ALL_SMS_QUEUES": "Todas as Filas de SMS",
+    "SELECTED_SMS_QUEUES": "Filas de SMS Selecionadas",
+    "ALL_OPENCHANNEL_QUEUES": "Todas as Filas do OpenChannel",
+    "SELECTED_OPENCHANNEL_QUEUES": "Filas de OpenChannel Selecionadas",
+    "ALL_FAX_QUEUES": "Todas as Filas de Fax",
+    "SELECTED_FAX_QUEUES": "Filas de Fax Selecionadas",
+    "VOICEMAIL": "Correio de Voz",
     "SHOWWEBCONTROL": "Tipologia",
     "PAGE": "Página",
     "ROWSPERPAGE": "Linhas por Página",
     "CALLFORWARDING": "Encaminhamento de Chamadas",
     "DND": "Não perturbe durante a pausa",
     "UNANSWEREDCALLBADGE": "Mostrar info de chamada não atendida",
-    "ENABLEDTMFTONE": "Ativar tons Dtmf",
-    "AUTOANSWERDELAY": "Atraso de Resposta Automática [s]",
+    "ENABLEDTMFTONE": "Ativar tons DTMF",
+    "AUTOANSWERDELAY": "Atraso de Atendimento Automático [seg]",
     "ENCRYPTION": "Encriptação",
     "CHANNELS": "Canais",
-    "CHAT": "Chat",
-    "SMS": "Sms",
+    "CHAT": "WebChat",
+    "SMS": "SMS",
     "OPENCHANNEL": "Open Channel",
     "FAX": "Fax",
-    "QUEUEADD_USER_VOICE_OUTBOUND": "Adicionar usuário a campanhas de fila",
+    "QUEUEADD_USER_VOICE_OUTBOUND": "Adicionar Usuário a Campanhas de Fila",
     "MONITOREXTENSION": "Gravar chamadas para a extensão do usuário",
     "EDITPERMISSIONS": "Editando Permissões",
-    "READANDEDIT": "Leia, Edite",
+    "READANDEDIT": "Ler, Editar",
     "READANDEDITANDDELETE": "Ler, Editar, Excluir",
     "GENERAL_PERMISSIONS": "Geral",
-    "ENABLEMESSENGER": "Ativar mensageiro interno",
+    "ENABLEMESSENGER": "Ativar Chat Interno",
     "OUTBOUNDPROXY": "Proxy de saída",
     "PHONE": "Telefone",
     "MOBILE": "Celular",
     "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",
-    "SELECTED_VOICEQUEUES": "Filas de voz selecionadas",
-    "USERADD_CHATQUEUES": "Adicionar fila de Chat ao usuário",
-    "ALL_CHATQUEUES": "Todas as filas de Chat",
-    "SELECTED_CHATQUEUES": "Filas de E-mail Selecionadas",
-    "USERADD_MAILQUEUES": "Adicionar fila de email ao usuário",
-    "ALL_MAILQUEUES": "Todas as filas de email",
-    "SELECTED_MAILQUEUES": "Filas de Chat Selecionadas",
-    "USERADD_SMSQUEUES": "Adicionar fila do SMS ao usuário",
-    "ALL_SMSQUEUES": "Todas as filas do SMS",
-    "SELECTED_SMSQUEUES": "Filas SMS Selecionadas",
-    "USERADD_FAXQUEUES": "Adicionar fila de fax ao usuário",
-    "ALL_FAXQUEUES": "Todas as filas de fax",
-    "SELECTED_FAXQUEUES": "Filas de fax selecionadas",
-    "USERADD_OPENCHANNELQUEUES": "Adicionar fila de Open Channel ao usuário",
-    "ALL_OPENCHANNELQUEUES": "Todas as filas do Open Channel",
-    "SELECTED_OPENCHANNELQUEUES": "Filas de Open Channel Selecionadas",
-    "USERADD_PROJECTS": "Adicionar Projeto Cally Square ao Usuário",
-    "ALL_PROJECTS": "Todos os projetos da Cally Square",
-    "SELECTED_PROJECTS": "Projetos selecionados da Cally Square",
-    "USERADD_CHATWEBSITES": "Adicionar site de chat ao usuário",
-    "ALL_CHATWEBSITES": "Todos os sites de Chat",
-    "SELECTED_CHATWEBSITES": "Sites de Chat selecionados",
-    "USERADD_QUEUECAMPAIGNS": "Adicionar campanha de fila ao usuário",
-    "ALL_QUEUECAMPAIGNS": "Todas as campanhas de filas",
+    "USERADD_VOICEQUEUES": "Adicionar Fila de Voz ao Usuário",
+    "ALL_VOICEQUEUES": "Todas as Filas de Voz",
+    "SELECTED_VOICEQUEUES": "Filas de Voz Selecionadas",
+    "USERADD_CHATQUEUES": "Adicionar Fila de WebChat ao Usuário",
+    "ALL_CHATQUEUES": "Todas as Filas de WebChat",
+    "SELECTED_CHATQUEUES": "Filas de Email Selecionadas",
+    "USERADD_MAILQUEUES": "Adicionar Fila de Email ao Usuário",
+    "ALL_MAILQUEUES": "Todas as Filas de Email",
+    "SELECTED_MAILQUEUES": "Filas de Email Selecionadas",
+    "USERADD_SMSQUEUES": "Adicionar Fila de SMS ao Usuário",
+    "ALL_SMSQUEUES": "Todas as Filas de SMS",
+    "SELECTED_SMSQUEUES": "Filas de SMS Selecionadas",
+    "USERADD_FAXQUEUES": "Adicionar Fila de Fax ao Usuário",
+    "ALL_FAXQUEUES": "Todas as Filas de Fax",
+    "SELECTED_FAXQUEUES": "Filas de Fax Selecionadas",
+    "USERADD_OPENCHANNELQUEUES": "Adicionar Fila do OpenChannel ao Usuário",
+    "ALL_OPENCHANNELQUEUES": "Todas as Filas do OpenChannel",
+    "SELECTED_OPENCHANNELQUEUES": "Filas de OpenChannel Selecionadas",
+    "USERADD_PROJECTS": "Adicionar Projeto do CallySquare ao Usuário",
+    "ALL_PROJECTS": "Todos os Projetos do CallySquare",
+    "SELECTED_PROJECTS": "Projetos do Cally Square Selecionados",
+    "USERADD_CHATWEBSITES": "Adicionar Site de Webchat ao Usuário",
+    "ALL_CHATWEBSITES": "Todos os Sites de WebChat",
+    "SELECTED_CHATWEBSITES": "Sites de WebChat Selecionados",
+    "USERADD_QUEUECAMPAIGNS": "Adicionar Campanha de Fila ao Usuário",
+    "ALL_QUEUECAMPAIGNS": "Todas as Campanhas de Filas",
     "SELECTED_QUEUECAMPAIGNS": "Campanhas de Filas Selecionadas",
-    "USERADD_MAILACCOUNTS": "Adicionar conta de email ao usuário",
-    "ALL_MAILACCOUNTS": "Todas as contas de email",
-    "SELECTED_MAILACCOUNTS": "Contas de email selecionadas",
-    "USERADD_FAXACCOUNTS": "Adicionar conta de fax ao usuário",
-    "ALL_FAXACCOUNTS": "Todas as contas de fax",
-    "SELECTED_FAXACCOUNTS": "Contas de fax selecionadas",
-    "USERADD_SMSACCOUNTS": "Adicionar conta SMS ao usuário",
-    "ALL_SMSACCOUNTS": "Todas as contas SMS",
-    "SELECTED_SMSACCOUNTS": "Contas SMS Selecionadas",
-    "USERADD_OPENCHANNELACCOUNTS": "Adicionar conta de Open Channel ao usuário",
-    "ALL_OPENCHANNELACCOUNTS": "Todas as contas de Open Channel",
-    "SELECTED_OPENCHANNELACCOUNTS": "Contas de Open Channel selecionadas",
-    "ADD_USERPROFILE": "Adicionar perfil de usuário",
+    "USERADD_MAILACCOUNTS": "Adicionar Conta de Email ao Usuário",
+    "ALL_MAILACCOUNTS": "Todas as Contas de Email",
+    "SELECTED_MAILACCOUNTS": "Contas de Email Selecionadas",
+    "USERADD_FAXACCOUNTS": "Adicionar Conta de Fax ao Usuário",
+    "ALL_FAXACCOUNTS": "Todas as Contas de Fax",
+    "SELECTED_FAXACCOUNTS": "Contas de Fax Selecionadas",
+    "USERADD_SMSACCOUNTS": "Adicionar Conta de SMS ao Usuário",
+    "ALL_SMSACCOUNTS": "Todas as Contas de SMS",
+    "SELECTED_SMSACCOUNTS": "Contas de SMS Selecionadas",
+    "USERADD_OPENCHANNELACCOUNTS": "Adicionar Conta do OpenChannel ao Usuário",
+    "ALL_OPENCHANNELACCOUNTS": "Todas as Contas de OpenChannel",
+    "SELECTED_OPENCHANNELACCOUNTS": "Contas de OpenChannel Selecionadas",
+    "ADD_USERPROFILE": "Adicionar Perfil de Usuário",
     "CANCEL": "Cancelar",
-    "CLONE_USERPROFILE": "Perfil do usuário de clone",
-    "CLOSE": "Perto",
-    "CONFIRM": "confirme",
-    "CRUDPERMISSIONS": "Tipo de permissão",
+    "CLONE_USERPROFILE": "Clonar Perfil do Usuário",
+    "CLOSE": "Encerrar",
+    "CONFIRM": "Confirme",
+    "CRUDPERMISSIONS": "Tipo de Permissão",
     "DELETE_PERMISSION": "Excluir",
-    "DELETE_USERPROFILE": "Excluir perfil do usuário",
+    "DELETE_USERPROFILE": "Excluir Perfil do Usuário",
     "EDIT_PERMISSION": "Editar",
-    "EDIT_USERPROFILE": "Editar perfil do usuário",
+    "EDIT_USERPROFILE": "Editar Perfil do Usuário",
     "MODULES": "Módulos",
-    "NEW_USERPROFILE": "Novo perfil de usuário",
+    "NEW_USERPROFILE": "Novo Perfil de Usuário",
     "PERMISSIONS_ALL_RESOURCES": "Todos os recursos",
-    "PERMISSIONS_AUTO_ASSOCIATION_INFO": "Associe automaticamente todos os recursos atuais e futuros desta seção ao Perfil do usuário",
-    "PERMISSIONS_MANAGE": "Gerir",
+    "PERMISSIONS_AUTO_ASSOCIATION_INFO": "Associe automaticamente todos os recursos atuais e futuros desta seção ao Perfil do Usuário",
+    "PERMISSIONS_MANAGE": "Gerenciar",
     "PERMISSIONS_PLACEHOLDER_SEARCH": "Procurar...",
-    "PERMISSIONS_SECTION_HIDE": "Ocultar seção para o usuário",
-    "PERMISSIONS_SECTION_SHOW": "Mostrar seção ao usuário",
+    "PERMISSIONS_SECTION_HIDE": "Ocultar seção para o Usuário",
+    "PERMISSIONS_SECTION_SHOW": "Mostrar seção ao Usuário",
     "PERMISSIONS_SECTION_TITLE": "Permissões do {{sectionName}}",
     "PERMISSIONS_SELECTED_RESOURCES": "Recursos Selecionados",
     "PERMISSIONS_SELECT_REPORT_TYPE": "Selecione o tipo de relatório",
     "PERMISSIONS_SELECT_SECTION": "Selecione uma seção",
     "PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE": "Você não tem permissão para acessar a seção selecionada",
     "PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE": "Ação não autorizada",
-    "PERMISSIONS_WARNING_CLOSE": "Você tem alterações não salvas. Tem certeza de que deseja sair sem salvar?",
+    "PERMISSIONS_WARNING_CLOSE": "Você tem alterações não salvas. Tem certeza de que deseja encerrar sem salvar?",
     "PERMISSIONS_WARNING_ENABLE_ALL": "Todas as subseções {{sectionName}} e seus recursos serão ativadas. Você tem certeza que quer continuar?",
     "QUEUES_ASSOCIATION": "Associação de filas do {{channel}}",
     "READ_PERMISSION": "Ler",
-    "REPORT_TYPE": "Tipo de relatório",
+    "REPORT_TYPE": "Tipo de Relatório",
     "SECTIONS": "Seções",
     "SUMMARY": "Resumo",
-    "TEAMS_ASSOCIATION": "Associação de equipes",
-    "USERPROFILE": "Perfil de usuário",
-    "USERPROFILES": "Perfis de usuário",
+    "TEAMS_ASSOCIATION": "Associação de Equipes",
+    "USERPROFILE": "Perfil de Usuário",
+    "USERPROFILES": "Perfis de Usuário",
     "PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE": "Você não tem permissão para criar o recurso",
-    "VIDEOSUPPORT": "Suporte de vídeo",
+    "VIDEOSUPPORT": "Suporte à vídeo",
     "APIKEY": "Chave API",
-    "APIKEYMANAGER_USER": "Gerenciador de chaves da API",
-    "GENERATE": "(Regenerado",
-    "MANAGE_API_KEY": "Gerenciador de chaves da API",
+    "APIKEYMANAGER_USER": "Gerenciador de Chaves da API",
+    "GENERATE": "Gerar",
+    "MANAGE_API_KEY": "Gerenciador de Chave da API",
     "REMOVE": "Remover",
-    "ENABLEAUTOMATICSCREENRECORDING": "Ativar gravação automática de tela",
-    "ENABLESCREENRECORDINGBYAGENT": "Ativar gravação de tela por agente",
-    "ENABLEVIDEOECORDING": "Ativar gravação de vídeo",
+    "ENABLEAUTOMATICSCREENRECORDING": "Ativar Gravação Automática de Tela",
+    "ENABLESCREENRECORDINGBYAGENT": "Ativar Gravação de Tela pelo Agente",
+    "ENABLEVIDEOECORDING": "Ativar Gravação de Vídeo",
     "BLOCKED": "Bloqueado",
     "DISABLED": "Desativado",
-    "REGENERATE": "Regenerado",
-    "ALL_WHATSAPP_QUEUES": "Todas as filas de WhatsApp",
-    "ALL_WHATSAPPACCOUNTS": "Todas as contas WhatsApp",
-    "ALL_WHATSAPPQUEUES": "Todas as filas Whataspp",
-    "ADD_AGENT_TO_WHATSAPP_QUEUES": "Adicionar agente às filas do WhatsApp",
-    "QUEUEADD_USER_WHATSAPP_INBOUND": "Adicionar usuário às filas do WhatsApp",
-    "SELECTED_WHATSAPP_QUEUES": "Filas de WhatsApp selecionadas",
-    "SELECTED_WHATSAPPACCOUNTS": "Contas WhatsApp selecionadas",
-    "SELECTED_WHATSAPPQUEUES": "Filas de WhatsApp selecionadas",
-    "USERADD_WHATSAPPACCOUNTS": "Adicionar conta WhatsApp ao usuário",
-    "USERADD_WHATSAPPQUEUES": "Adicionar fila Whataspp ao usuário",
+    "REGENERATE": "Renovar",
+    "ALL_WHATSAPP_QUEUES": "Todas as Filas de WhatsApp",
+    "ALL_WHATSAPPACCOUNTS": "Todas as Contas WhatsApp",
+    "ALL_WHATSAPPQUEUES": "Todas as Filas Whataspp",
+    "ADD_AGENT_TO_WHATSAPP_QUEUES": "Adicionar Agente à Filas do WhatsApp",
+    "QUEUEADD_USER_WHATSAPP_INBOUND": "Adicionar Usuário às Filas do WhatsApp",
+    "SELECTED_WHATSAPP_QUEUES": "Filas de WhatsApp Selecionadas",
+    "SELECTED_WHATSAPPACCOUNTS": "Contas de WhatsApp Selecionadas",
+    "SELECTED_WHATSAPPQUEUES": "Filas de WhatsApp Selecionadas",
+    "USERADD_WHATSAPPACCOUNTS": "Adicionar Conta WhatsApp ao Usuário",
+    "USERADD_WHATSAPPQUEUES": "Adicionar Fila Whataspp ao Usuário",
     "WHATSAPP": "Conector WhatsApp",
-    "WHATSAPPCAPACITY": "Capacidade do conector WhatsApp",
-    "MASK_SENSITIVE_DATA": "Máscara de dados sensíveis",
+    "WHATSAPPCAPACITY": "Capacidade do Conector WhatsApp",
+    "MASK_SENSITIVE_DATA": "Máscara de Dados Sensíveis",
     "WSS_PORT": "Porta WSS",
     "ATTACHMENTS": "Anexos",
-    "CALLYSQUARE_RECORDINGS": "Gravações da Cally Square",
-    "CONTACT_MANAGER_LISTS": "Listas de gerenciadores de contatos",
-    "DOWNLOADS": "Transferências",
-    "DOWNLOAD_PERMISSIONS": "Permissões de download",
+    "CALLYSQUARE_RECORDINGS": "Gravações do CallySquare",
+    "CONTACT_MANAGER_LISTS": "Listas da Gestão de Contatos",
+    "DOWNLOADS": "Downloads",
+    "DOWNLOAD_PERMISSIONS": "Permissões de Download",
     "JSCRIPTY_SESSIONS": "Sessões Jscripty",
     "OMNICHANNEL_INTERACTIONS": "Interações Omnichannel",
-    "SCREEN_RECORDINGS": "Gravações de tela",
+    "SCREEN_RECORDINGS": "Gravações de Tela",
     "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",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "Adicionar agente às filas de voz",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "Adicionar agente às filas de Chat",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "Adicionar agente às filas de emails",
-    "QUEUEADD_AGENT_SMS_INBOUND": "Adicionar agente às filas do SMS",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Adicionar agente às filas do Open Channel",
-    "QUEUEADD_AGENT_FAX_INBOUND": "Adicionar agente às filas de fax",
-    "ALL_QUEUES_VOICE_OUTBOUND": "Todas as campanhas de filas",
+    "IGNORE_AGENT_BREAK_STATUS_FOR_PREVIEW_CALLS": "Ignorar pausa do agente para discagem preview",
+    "SELECT_RECALLME_CAMPAIGN": "Selecione a Campanha Recall Me",
+    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Adicionar Agente a Campanhas de Fila",
+    "QUEUEADD_AGENT_VOICE_INBOUND": "Adicionar Agente à Filas de Voz",
+    "QUEUEADD_AGENT_CHAT_INBOUND": "Adicionar Agente à Filas de WebChat",
+    "QUEUEADD_AGENT_MAIL_INBOUND": "Adicionar Agente às Filas de Emails",
+    "QUEUEADD_AGENT_SMS_INBOUND": "Adicionar Agente às Filas de SMS",
+    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Adicionar Agente à Filas do Open Channel",
+    "QUEUEADD_AGENT_FAX_INBOUND": "Adicionar Agente à Filas de Fax",
+    "ALL_QUEUES_VOICE_OUTBOUND": "Todas as Campanhas de Filas",
     "SELECTED_QUEUES_VOICE_OUTBOUND": "Campanhas de Filas Selecionadas",
-    "ALL_QUEUES_VOICE_INBOUND": "Todas as filas de voz",
-    "SELECTED_QUEUES_VOICE_INBOUND": "Filas de voz selecionadas",
-    "ALL_QUEUES_CHAT_INBOUND": "Todas as filas de Chat",
-    "SELECTED_QUEUES_CHAT_INBOUND": "Filas de Chat Selecionadas",
-    "ALL_QUEUES_MAIL_INBOUND": "Todas as filas de email",
-    "SELECTED_QUEUES_MAIL_INBOUND": "Filas de E-mail Selecionadas",
-    "ALL_QUEUES_SMS_INBOUND": "Todas as filas do SMS",
-    "SELECTED_QUEUES_SMS_INBOUND": "Filas SMS Selecionadas",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "Todas as filas do Open Channel",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Filas de Open Channel Selecionadas",
-    "ALL_QUEUES_FAX_INBOUND": "Todas as filas de fax",
-    "SELECTED_QUEUES_FAX_INBOUND": "Filas de fax selecionadas",
-    "ALL_QUEUES_WHATSAPP_INBOUND": "Todas as filas de WhatsApp",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Adicionar agente às filas do WhatsApp",
+    "ALL_QUEUES_VOICE_INBOUND": "Todas as Filas de Voz",
+    "SELECTED_QUEUES_VOICE_INBOUND": "Filas de Voz Selecionadas",
+    "ALL_QUEUES_CHAT_INBOUND": "Todas as Filas de WebChat",
+    "SELECTED_QUEUES_CHAT_INBOUND": "Filas de WebChat Selecionadas",
+    "ALL_QUEUES_MAIL_INBOUND": "Todas as Filas de Email",
+    "SELECTED_QUEUES_MAIL_INBOUND": "Filas de Email Selecionadas",
+    "ALL_QUEUES_SMS_INBOUND": "Todas as Filas de SMS",
+    "SELECTED_QUEUES_SMS_INBOUND": "Filas de SMS Selecionadas",
+    "ALL_QUEUES_OPENCHANNEL_INBOUND": "Todas as Filas do OpenChannel",
+    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Filas de OpenChannel Selecionadas",
+    "ALL_QUEUES_FAX_INBOUND": "Todas as Filas de Fax",
+    "SELECTED_QUEUES_FAX_INBOUND": "Filas de Fax Selecionadas",
+    "ALL_QUEUES_WHATSAPP_INBOUND": "Todas as Filas de WhatsApp",
+    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Adicionar Agente à fila do WhatsApp",
     "SELECTED_QUEUES_WHATSAPP_INBOUND": "Filas de WhatsApp selecionadas",
-    "AD_SSO_ENABLED": "SSO do Active Directory",
+    "AD_SSO_ENABLED": "Active Directory SSO",
     "AUTHENTICATION": "Autenticação",
-    "CLIENT_LOGS": "Logs de clientes",
+    "CLIENT_LOGS": "Logs do Cliente",
     "CLIENT_LOGS_ALL_ENABLED_WARNING": "Aviso: isso pode afetar gravemente o desempenho do servidor se muitos agentes estiverem conectados ao mesmo tempo!",
-    "CLIENT_LOGS_DISABLED": "Os registros do cliente estão desabilitados",
-    "CLIENT_LOGS_ENABLED": "Os registros do cliente estão habilitados",
+    "CLIENT_LOGS_DISABLED": "Os Logs do Cliente estão desabilitados",
+    "CLIENT_LOGS_ENABLED": "Os Logs do Cliente estão habilitados",
     "CLIENT_LOGS_ENABLED_SINCE": "Ativado desde: {{enabledSince}}",
-    "CLIENT_LOGS_LOGLEVEL": "Nível de registro: {{logLevel}}",
-    "CLIENT_LOGS_LOGLEVEL_SELECT": "Selecione o nível mínimo de registro (gravidade)",
-    "CLIENT_LOGS_DISABLED_MSG": "Os logs do cliente foram desativados para seu usuário",
-    "CLIENT_LOGS_ENABLED_MSG": "Os logs do cliente foram ativados para seu usuário",
-    "AUTO_ANSWER": "Resposta automática",
-    "CHAT_AUTOANSWER": "Resposta automática do bate-papo",
-    "CHAT_AUTOANSWERDELAY": "Atraso de resposta automática do bate-papo [s]",
-    "EMAIL_AUTOANSWER": "Resposta automática de e-mail",
-    "EMAIL_AUTOANSWERDELAY": "Atraso de resposta automática de e-mail [s]",
-    "FAX_AUTOANSWER": "Resposta automática de fax",
-    "FAX_AUTOANSWERDELAY": "Atraso de resposta automática de fax [s]",
-    "OPENCHANNEL_AUTOANSWER": "Resposta automática de canal aberto",
-    "OPENCHANNEL_AUTOANSWERDELAY": "Atraso de resposta automática de canal aberto [s]",
-    "SMS_AUTOANSWER": "Resposta automática de SMS",
-    "SMS_AUTOANSWERDELAY": "Atraso de resposta automática de SMS [s]",
-    "WHATSAPP_AUTOANSWER": "Resposta automática do Whatsapp",
-    "WHATSAPP_AUTOANSWERDELAY": "Atraso de resposta automática do Whatsapp [s]"
+    "CLIENT_LOGS_LOGLEVEL": "Nível de Logs: {{logLevel}}",
+    "CLIENT_LOGS_LOGLEVEL_SELECT": "Selecione o nível mínimo de Logs (gravidade)",
+    "CLIENT_LOGS_DISABLED_MSG": "Os Logs do Cliente foram desativados para seu usuário",
+    "CLIENT_LOGS_ENABLED_MSG": "Os Logs do Cliente foram ativados para seu usuário",
+    "AUTO_ANSWER": "Atendimento Automático",
+    "CHAT_AUTOANSWER": "Atendimento Automático do Webchat",
+    "CHAT_AUTOANSWERDELAY": "Atraso de Atendimento Automático do Webchat [seg]",
+    "EMAIL_AUTOANSWER": "Atendimento Automática de Email",
+    "EMAIL_AUTOANSWERDELAY": "Atraso de Atendimento Automática de Email [seg]",
+    "FAX_AUTOANSWER": "Atendimento Automático de Fax",
+    "FAX_AUTOANSWERDELAY": "Atraso no Atendimento Automática de Fax [seg]",
+    "OPENCHANNEL_AUTOANSWER": "Atendimento Automático do Open Channel",
+    "OPENCHANNEL_AUTOANSWERDELAY": "Atraso no Atendimento Automático do Open Channel[seg]",
+    "SMS_AUTOANSWER": "Atendimento Automático de SMS",
+    "SMS_AUTOANSWERDELAY": "Atraso no Atendimento Automática de SMS [seg]",
+    "WHATSAPP_AUTOANSWER": "Atendimento Automático do Whatsapp",
+    "WHATSAPP_AUTOANSWERDELAY": "Atraso no Atendimento Automático do Whatsapp [seg]"
   }
 }
index 306ec24..340f54f 100644 (file)
 {
   "TOOLS": {
-    "VIDEOSUPPORT": "Video support",
-    "PREVIOUSCONTACT": "Previous",
-    "BOT": "Voicebot",
-    "CLONE_TRUNK": "Clone Trunk",
-    "DISPOSITIONS": "Dispositions",
-    "NEW_DISPOSITION": "New Disposition",
-    "ADD_DISPOSITION": "Add Disposition",
-    "EDIT_DISPOSITION": "Edit Disposition",
-    "DELETE_DISPOSITION": "Delete Disposition",
-    "RUN_SCHEDULE": "Run schedule",
-    "SENDIFEMPTY": "Send if empty",
-    "NEXTCONTACT": "Next",
-    "OUTBOUND_ROUTE": "Outbound Route",
-    "EDIT_DASHBOARDITEM": "Edit Dashboard Widget",
-    "FONTSIZE": "Font Size",
-    "TITLEFONTSIZE": "Font Title Size",
-    "CLONE_CUSTOMDASHBOARD": "Clone Custom Dashboard",
-    "LINK": "Link [https://]",
-    "BACKGROUND": "Background",
-    "FOREGROUND": "Foreground",
-    "IGNOREDIALERCONTACTID": "Ignore dialer contact Id",
-    "NONE": "None",
-    "TOTAL": "Total",
-    "ABANDONED": "Abandoned",
-    "WAITING": "Waiting",
-    "TALKING": "Talking",
-    "ANSWERED": "Answered",
-    "CONTACTITEMTYPE": "Contact item types",
-    "ORDER_BY": "Order by",
-    "RGBBACKGROUNDCOLOR": "RGB Background color",
-    "NEW_CONTACTITEMTYPE": "New contact item type",
-    "EDIT_CONTACTITEMTYPE": "Edit contact item type",
-    "DELETE_CONTACTITEMTYPE": "Delete contact item type",
-    "ORDER_BY_NUMERIC": "Order by field should be numeric value!",
-    "ADD_CONTACTITEMTYPE": "Add",
-    "UNMANAGED": "Unmanaged",
-    "CUSTOMTYPE": "Custom [path]",
-    "WEBREPORT": "Web Report",
-    "PIECHART": "Pie Chart",
-    "MULTIBARCHART": "Multibar Chart",
-    "MOVE_WIDGET": "Move Widget",
-    "USERADD_CUSTOMDASHBOARD": "Add User Permissions",
-    "GOTODASHBOARD_CUSTOMDASHBOARD": "Go to preview dashboard",
-    "GOTO_CUSTOMDASHBOARD": "Go to preview dashboard",
-    "METRIC": "Metric",
-    "FILTERVOICEQUEUES": "Filter Voice Queues",
-    "SERIE1": "Serie 1",
-    "SERIE2": "Serie 2",
-    "SERIE3": "Serie 3",
-    "REFRESH": "Refresh [s]",
-    "FORMAT": "Format",
+    "VIDEOSUPPORT": "Vídeó stuðningur",
+    "PREVIOUSCONTACT": "Fyrri",
+    "BOT": "Spjallmenni",
+    "CLONE_TRUNK": "Afrita Trunk",
+    "DISPOSITIONS": "Ráðstafanir",
+    "NEW_DISPOSITION": "Ný ráðstöfun",
+    "ADD_DISPOSITION": "Bættu við ráðstöfun",
+    "EDIT_DISPOSITION": "Breyta ráðstöfun",
+    "DELETE_DISPOSITION": "Eyða ráðstöfun",
+    "RUN_SCHEDULE": "Keyrslu áætlun",
+    "SENDIFEMPTY": "Sendu ef tómt",
+    "NEXTCONTACT": "Næst",
+    "OUTBOUND_ROUTE": "Útfarandi flæði",
+    "EDIT_DASHBOARDITEM": "Breyttu snérsniðunum upplýsingaborða Widget",
+    "FONTSIZE": "Stærð leturs",
+    "TITLEFONTSIZE": "Stærð leturgerðar á titli",
+    "CLONE_CUSTOMDASHBOARD": "Afrita sérhannað upplýsingaborð",
+    "LINK": "Hlekkur [https://]",
+    "BACKGROUND": "Bakgrunnu",
+    "FOREGROUND": "Forgrunnur",
+    "IGNOREDIALERCONTACTID": "Hunsa auðkenni hringjara",
+    "NONE": "Engin",
+    "TOTAL": "Samtala",
+    "ABANDONED": "Hætt við",
+    "WAITING": "Bíður",
+    "TALKING": "Talar",
+    "ANSWERED": "Svarað",
+    "CONTACTITEMTYPE": "Tegund tengiliðar",
+    "ORDER_BY": "Pantað af",
+    "RGBBACKGROUNDCOLOR": "RGB Bakgrunns litur",
+    "NEW_CONTACTITEMTYPE": "Ný tegund af tengiliði",
+    "EDIT_CONTACTITEMTYPE": "Breyttu tengiliða tegund",
+    "DELETE_CONTACTITEMTYPE": "Eyða tegund tengiliðs",
+    "ORDER_BY_NUMERIC": "Röðun eftir reit ætti að vera tölugildi!",
+    "ADD_CONTACTITEMTYPE": "Bæta við",
+    "UNMANAGED": "Óstjórnað",
+    "CUSTOMTYPE": "Sérsniðið",
+    "WEBREPORT": "Wef skýrsla",
+    "PIECHART": "Kökurit",
+    "MULTIBARCHART": "Multibar mynd",
+    "MOVE_WIDGET": "Færðu Widget",
+    "USERADD_CUSTOMDASHBOARD": "Bæta við notenda heimildir",
+    "GOTODASHBOARD_CUSTOMDASHBOARD": "Farðu í að forskoða upplýsingaborð",
+    "GOTO_CUSTOMDASHBOARD": "Farðu í að forskoða upplýsingaborð",
+    "METRIC": "Mæling",
+    "FILTERVOICEQUEUES": "sía aá tal biðraðir",
+    "SERIE1": "Sería 1",
+    "SERIE2": "Sería 2",
+    "SERIE3": "Sería 3",
+    "REFRESH": "Endurnýja [s]",
+    "FORMAT": "Formatsnið",
     "PATH": "Absolute Path",
-    "ALL_USERS": "All Users",
-    "SELECTED_USERS": "Selected Users",
-    "ADD_WIDGET": "Add Widget",
-    "COLOR": "Color",
+    "ALL_USERS": "allir notendur",
+    "SELECTED_USERS": "Valdir notendur",
+    "ADD_WIDGET": "Bættu við",
+    "COLOR": "Litur",
     "FAX": "Fax",
-    "INTERACTION": "Interaction",
-    "MESSAGE": "Message",
+    "INTERACTION": "Samskipti",
+    "MESSAGE": "Silaboð",
     "T38PT_UDPTL": "T38pt Udptl",
-    "CALL": "Call",
-    "NAME": "Name",
-    "TRUNKS": "Trunks",
-    "SEARCH_FOR_ANYONE": "Search",
-    "SCRIPT": "Script",
-    "SCRIPT_INFO": "Info",
-    "SCRIPT_TYPE": "Type",
-    "EMAIL": "Email",
-    "FILTERFAXACCOUNTS": "Filter Fax Accounts",
-    "FILTERSMSACCOUNTS": "Filter Sms Accounts",
-    "FILTERCHATWEBSITES": "Filter Chat Websites",
-    "FILTERWHATSAPPACCOUNTS": "Filter Whatsapp Accounts",
-    "FILTEREMAILACCOUNTS": "Filter Email Accounts",
-    "FILTEROPENCHANNELACCOUNTS": "Filter OpenChannel Accounts",
-    "OPENED": "Opened",
-    "OPENED_TEXT": "Opened Interactions",
-    "MANAGED": "Managed",
-    "MANAGED_TEXT": "Managed Interactions",
+    "CALL": "Símtal",
+    "NAME": "Nafn",
+    "TRUNKS": "Trunkar",
+    "SEARCH_FOR_ANYONE": "Leita",
+    "SCRIPT": "Handrit",
+    "SCRIPT_INFO": "Uppls.",
+    "SCRIPT_TYPE": "Tegund",
+    "EMAIL": "Tölvupóstur",
+    "FILTERFAXACCOUNTS": "Sía aá Fax reikninga",
+    "FILTERSMSACCOUNTS": "Sía á SMS Reikninga",
+    "FILTERCHATWEBSITES": "Sía á spjall síðum",
+    "FILTERWHATSAPPACCOUNTS": "sía á Whatsapp reikninga",
+    "FILTEREMAILACCOUNTS": "Sía á tölvupóst reikninga",
+    "FILTEROPENCHANNELACCOUNTS": "sía á OpenChannel reikninga",
+    "OPENED": "Opnað",
+    "OPENED_TEXT": "Opinn samskipti",
+    "MANAGED": "Stjórnað",
+    "MANAGED_TEXT": "Stýrð samskipti",
     "ERRORS": {
-      "INFO_REQUIRED": "Mandatory field",
-      "SCRIPT_REQUIRED": "Mandatory field",
-      "NAME_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "TITLE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "REFRESH_REQUIRED": "Mandatory field",
-      "FONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "FONTSIZE_REQUIRED": "Mandatory field",
-      "PATH_REQUIRED": "Mandatory field",
-      "FORMAT_REQUIRED": "Mandatory field",
-      "REPORT_REQUIRED": "Mandatory field",
-      "TYPE_REQUIRED": "Mandatory field",
-      "VALUE_REQUIRED": "Mandatory field",
-      "ACCOUNT_REQUIRED": "Mandatory field",
-      "IGNOREDIALERCONTACTID_REQUIRED": "Ignore dialer contact Id field is required",
-      "FIELD_REQUIRED": "Mandatory field",
-      "NAME_REQUIRED": "Mandatory field",
-      "HOST_REQUIRED": "Mandatory field",
-      "DEFAULTUSER_REQUIRED": "Mandatory field",
-      "CALLERID_REQUIRED": "Mandatory field",
-      "KEY_REQUIRED": "Mandatory field",
-      "CONFIRM_NOT_MATCH": "The Passwords don't match",
-      "VALIDITYSTART_REQUIRED": "Mandatory field",
-      "VALIDITYEND_REQUIRED": "Mandatory field",
-      "MONTHDAY_REQUIRED": "Mandatory field",
-      "HOUR_REQUIRED": "Mandatory field",
-      "CONTENT_REQUIRED": "Mandatory field",
-      "URL_REQUIRED": "Mandatory field",
-      "URL_MUST_VALID_URL": "Wrong format",
-      "APPLICATION_REQUIRED": "Mandatory field",
-      "ARGUMENTS_REQUIRED": "Mandatory field",
-      "NAME_MUST_VALID_PATTERN": "Wrong format",
-      "POLLING_INTERVAL_REQUIRED": "Mandatory field",
-      "TITLE_REQUIRED": "Mandatory field",
-      "EMAILADDRESS_REQUIRED": "Mandatory field",
-      "EVENTVARIABLES_REQUIRED": "Mandatory field",
-      "INTEGRATION_REQUIRED": "Mandatory field",
-      "LIST_REQUIRED": "Mandatory field",
-      "TEMPLATE_REQUIRED": "Mandatory field",
-      "AUTOCREATECONTACT_REQUIRED": "Mandatory field",
-      "AUTOCREATE_FIELD_REQUIRED": "Mandatory field",
-      "OUTBOUNDROUTE_REQUIRED": "Mandatory field",
-      "QUEUE_REQUIRED": "Mandatory field",
-      "TIME_RANGE_TO_REQUIRED": "Mandatory field",
-      "WEEK_DAYS_TO_REQUIRED": "Mandatory field",
-      "MONTH_DAYS_TO_REQUIRED": "Mandatory field",
-      "MONTH_TO_REQUIRED": "Mandatory field",
-      "TIME_RANGE_FROM_INVALID": "Wrong Format",
-      "TIME_RANGE_TO_INVALID": "Wrong Format",
-      "ACTION_REQUIRED": "Mandatory field",
-      "CONFIGURATION_REQUIRED": "Mandatory field",
-      "PROJECT_REQUIRED": "Mandatory field",
-      "LOCATION_REQUIRED": "Mandatory field",
-      "OUTPUT_REQUIRED": "Mandatory field",
-      "REPORTTYPE_REQUIRED": "Mandatory field",
-      "REPORTFOLDER_REQUIRED": "Mandatory field",
-      "REPORTSUBFOLDER_REQUIRED": "Mandatory field",
-      "AGENT_REQUIRED": "Mandatory field",
-      "TIMEOUT_REQUIRED": "Mandatory field",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "CHANNEL_REQUIRED": "Mandatory field"
+      "INFO_REQUIRED": "Skilyrtur reitur",
+      "SCRIPT_REQUIRED": "Skilyrtur reitur",
+      "NAME_MAX_LENGTH": "Gildið má vera að hámarki að lengd eða jafnt og {{max}}",
+      "TITLE_MAX_LENGTH": "Gildið má vera að hámarki að lengd eða jafnt og {{max}}",
+      "REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og ",
+      "REFRESH_REQUIRED": "Skilyrtur reitur",
+      "FONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "FONTSIZE_REQUIRED": "Skilyrtur reitur",
+      "PATH_REQUIRED": "Skilyrtur reitur",
+      "FORMAT_REQUIRED": "Skilyrtur reitur",
+      "REPORT_REQUIRED": "Skilyrtur reitur",
+      "TYPE_REQUIRED": "Skilyrtur reitur",
+      "VALUE_REQUIRED": "Skilyrtur reitur",
+      "ACCOUNT_REQUIRED": "Skilyrtur reitur",
+      "IGNOREDIALERCONTACTID_REQUIRED": "Krafist er að hunsa númer tengiliðs",
+      "FIELD_REQUIRED": "Skilyrtur reitur",
+      "NAME_REQUIRED": "Skilyrtur reitur",
+      "HOST_REQUIRED": "Skilyrtur reitur",
+      "DEFAULTUSER_REQUIRED": "Skilyrtur reitur",
+      "CALLERID_REQUIRED": "Skilyrtur reitur",
+      "KEY_REQUIRED": "Skilyrtur reitur",
+      "CONFIRM_NOT_MATCH": "Lykilorðin stemma ekki",
+      "VALIDITYSTART_REQUIRED": "Skilyrtur reitur",
+      "VALIDITYEND_REQUIRED": "Skilyrtur reitur",
+      "MONTHDAY_REQUIRED": "Skilyrtur reitur",
+      "HOUR_REQUIRED": "Skilyrtur reitur",
+      "CONTENT_REQUIRED": "Skilyrtur reitur",
+      "URL_REQUIRED": "Skilyrtur reitur",
+      "URL_MUST_VALID_URL": "Rangt snið",
+      "APPLICATION_REQUIRED": "Skilyrtur reitur",
+      "ARGUMENTS_REQUIRED": "Skilyrtur reitur",
+      "NAME_MUST_VALID_PATTERN": "Rangt snið",
+      "POLLING_INTERVAL_REQUIRED": "Skilyrtur reitur",
+      "TITLE_REQUIRED": "Skilyrtur reitur",
+      "EMAILADDRESS_REQUIRED": "Skilyrtur reitur",
+      "EVENTVARIABLES_REQUIRED": "Skilyrtur reitur",
+      "INTEGRATION_REQUIRED": "Skilyrtur reitur",
+      "LIST_REQUIRED": "Skilyrtur reitur",
+      "TEMPLATE_REQUIRED": "Skilyrtur reitur",
+      "AUTOCREATECONTACT_REQUIRED": "Skilyrtur reitur",
+      "AUTOCREATE_FIELD_REQUIRED": "Skilyrtur reitur",
+      "OUTBOUNDROUTE_REQUIRED": "Skilyrtur reitur",
+      "QUEUE_REQUIRED": "Skilyrtur reitur",
+      "TIME_RANGE_TO_REQUIRED": "Skilyrtur reitur",
+      "WEEK_DAYS_TO_REQUIRED": "Skilyrtur reitur",
+      "MONTH_DAYS_TO_REQUIRED": "Skilyrtur reitur",
+      "MONTH_TO_REQUIRED": "Skilyrtur reitur",
+      "TIME_RANGE_FROM_INVALID": "Rangt snið",
+      "TIME_RANGE_TO_INVALID": "Rangt snið",
+      "ACTION_REQUIRED": "Skilyrtur reitur",
+      "CONFIGURATION_REQUIRED": "Skilyrtur reitur",
+      "PROJECT_REQUIRED": "Skilyrtur reitur",
+      "LOCATION_REQUIRED": "Skilyrtur reitur",
+      "OUTPUT_REQUIRED": "Skilyrtur reitur",
+      "REPORTTYPE_REQUIRED": "Skilyrtur reitur",
+      "REPORTFOLDER_REQUIRED": "Skilyrtur reitur",
+      "REPORTSUBFOLDER_REQUIRED": "Skilyrtur reitur",
+      "AGENT_REQUIRED": "Skilyrtur reitur",
+      "TIMEOUT_REQUIRED": "Skilyrtur reitur",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "CHANNEL_REQUIRED": "Skilyrtur reitur"
     },
     "HOST": "Host",
-    "SECRET": "Secret",
-    "DEFAULTUSER": "Default User",
-    "DESCRIPTION": "Description",
-    "ADD_TRUNK": "Add Trunk",
+    "SECRET": "Leyni",
+    "DEFAULTUSER": "Sjálfgefin notandi",
+    "DESCRIPTION": "Lýsing",
+    "ADD_TRUNK": "Bættu við Trunk",
     "HELP": {
-      "OPENED": "The total number of Active Interactions",
-      "MANAGED": "The total number of Completed Interactions",
-      "SCRIPT_INFO": "Insert a description for the script",
-      "SCRIPT_TYPE": "Insert a typology for the script (eg. curl, bash...)",
-      "INFO": "Insert title",
-      "SCRIPT": "Insert script",
+      "OPENED": "Heildarfjöldi virkra samskipta",
+      "MANAGED": "Heildarfjöldi lokinna samskipta",
+      "SCRIPT_INFO": "Settu inn lýsingu fyrir scriptuna",
+      "SCRIPT_TYPE": "Settu inn leturgerð fyrir handritið (td krulla, bash...)",
+      "INFO": "Settu inn titil",
+      "SCRIPT": "Settu inn scriptu",
       "T38PT_UDPTL": "Es: yes,redundancy,maxdatagram=400",
-      "SECRET": "Authentication password",
-      "HOST": "The domain or host name",
-      "DEFAULTUSER": "Authentication username",
-      "CALLERID": "The Caller ID, in the format \"name\" <number>",
-      "REGISTRY": "The registry string, if required by provider, usually defaultuser:secret@host",
-      "FROMDOMAIN": "Set default From:domain in SIP messages when acting as a SIP ua (client). Some destinations may require mandatory identity name instead of only the IP address",
-      "FROMUSER": "How your provider knows you. This is which user to put instead of callerid when placing calls to peer (another SIP proxy). Valid only for type=peer.",
-      "OUTBOUNDPROXY": "IP_address or DNS SRV name (excluding the _sip._udp prefix): SRV name, hostname, or IP address of the outbound SIP Proxy. Send outbound signaling to this proxy, not directly to the devices. Valid only for type=peer.",
-      "PORT": "The SIP port number",
-      "CONTEXT": "The context for the trunk",
-      "TYPE": "Determine the SIP role within asterisk. User: used to authenticate incoming - Peer: for outgoing calls - Friend: covers both characteristics of the above.",
-      "DTMFMODE": "How DTMF (Dual-Tone Multi-Frequency) are sent. RFC2833: the default mode, the DTMF are sent with RTP but outside the audio stream. INBAND: The DTMF is sent in audio stream of the current conversation, becoming audible from the speakers. Requires a high CPU load. INFO: Although this method is very reliable, it is not supported by all PBX devices and many SIP Trunks.",
-      "NAT": "Change the behaviour of Asterisk for clients behind a firewall. If any of the comma-separated options is 'no', Asterisk will ignore any other settings and set nat=no.",
-      "QUALIFY": "Determine when the SIP is achievable",
-      "ALLOWCODECS": "Allowed codecs in order of preference",
-      "INSECURE": "Specify how to handle connections with peer, allowing insecure settings",
-      "CALL_LIMIT": "The limit number of the inbound and outbound concurrent calls",
-      "DIRECTMEDIA": "Asterisk by default tries to redirect the RTP media stream to go directly from the caller to the callee. Some devices do not support this (especially if one of them is behind a NAT). The default setting is YES. If you have all clients behind a NAT, or for some other reason want Asterisk to stay in the audio path, you may want to turn this off.",
-      "CALLCOUNTER": "Enable call counters on devices",
-      "ADD_PHONE_TO_URI": "Define if the provider requires ';user=phone' on URL",
-      "TRUST_REMOTE_PARTY_ID": "Define if Remote-Party-ID should be trusted",
-      "SEND_REMOTE_PARTY_ID_HEADER": "Define if Remote-Party-ID should be sent (defaults is no)",
-      "ENCRYPTION": "Whether to offer SRTP encrypted media (and only SRTP encrypted media) on outgoing calls to a peer. Calls will fail with HANGUPCAUSE=58 if the peer does not support SRTP. Defaults value is No",
-      "TRANSPORT": "Set the default transports, in order of preference",
-      "OTHERFIELDS": "Other fields to add in the trunks conf files. Follow default asterisk format (key=value), each field on a single row",
-      "EMAILADDRESS": "Add one or multiple addresses separated by commas (e.g. john.doe@xcally.com, jane.miller@xcally.com)",
-      "EMAILCCADDRESS": "Add one or multiple addresses separated by commas (e.g. john.doe@xcally.com, jane.miller@xcally.com)",
-      "EMAILBCCADDRESS": "Add one or multiple addresses separated by commas (e.g. john.doe@xcally.com, jane.miller@xcally.com)",
-      "NAME": "Only numbers, letters and specific characters (._) are supported",
-      "EVENTVARIABLES": "If enabled, it adds all the event variables to the url (recommended value=No. Set to Yes only for evaluation purposes) ",
-      "HEADERS": "Note: Headers section must be in RAW JSON format {\"key\":\"value\"} \nNote: If not filled out, the default value will be sent",
-      "BODY": "Note: the body must be in RAW JSON format {\"key\":\"value\"} \nNote: If not filled out, the default value will be sent",
-      "TIMEOUT": "Request timeout in seconds. The value must be between 1 and 10 and the default value is 5."
+      "SECRET": "Auðkenningarlykilorð",
+      "HOST": "Lénið eða hýsingar heitið",
+      "DEFAULTUSER": "Auðkenning á notandanafni",
+      "CALLERID": "Auðkenni þess sem hringir, á sniðinu \"nafn\" <númer>",
+      "REGISTRY": "Skrásetningarstrengurinn, ef þess er krafist af þjónustuveitanda, venjulega defaultuser:secret@host",
+      "FROMDOMAIN": "Stilltu sjálfgefið Frá:lén í SIP skilaboðum þegar þú starfar sem SIP ua (viðskiptavinur). Sumir áfangastaðir gætu krafist lögboðins auðkennisnafns í stað aðeins IP tölunnar",
+      "FROMUSER": "Hvernig þjónustu veitandinn þinn þekkir þig. Þetta er hvaða notanda á að setja í stað númeranúmers þegar hringt er í jafningja (annar SIP umboð). Gildir aðeins fyrir type=peer.",
+      "OUTBOUNDPROXY": "\nIP_address eða DNS SRV nafn (að undanskildum _sip._udp forskeytinu): SRV nafn, hýsingarheiti eða IP vistfang SIP proxy á útleið. Sendu boð á útleið til þessa proxy, ekki beint til tækjanna. Gildir aðeins fyrir type=peer",
+      "PORT": "Númerið á SIP portinu",
+      "CONTEXT": "Samhengið fyrir trunkinn",
+      "TYPE": "\nÁkvarða SIP hlutverk innan Asterisk. Notandi: notað til að sannvotta móttekinn - Peer: fyrir úthringingar - Vinur: nær yfir bæði eiginleika ofangreindra.",
+      "DTMFMODE": "Hvernig DTMF (Dual-Tone Multi-Frequency) er sent. RFC2833: sjálfgefin hamur, DTMF eru send með RTP en utan hljóðstraumsins. INBAND: DTMF er sendur í hljóðstraumi núverandi samtals og verður heyranlegt úr hátölurunum. Krefst mikils CPU álags. UPPLÝSINGAR: Þó að þessi aðferð sé mjög áreiðanleg er hún ekki studd af öllum PBX tækjum og mörgum SIP trunks.",
+      "NAT": "Breyttu hegðun Asterisk fyrir viðskiptavini á bak við eldvegginn. Ef einhver af valkostunum sem eru aðskilin með kommum er „nei“ mun Asterisk hunsa allar aðrar stillingar og setja nat=nei",
+      "QUALIFY": "Ákveður hvenæar SIP er aðgengilegt",
+      "ALLOWCODECS": "Leyfilegair kódekar í æskilegriröð",
+      "INSECURE": "\nTilgreindu hvernig á að meðhöndla tengingar við jafningja  ( peer), leyfa óöruggar stillingar",
+      "CALL_LIMIT": "Hámarksfjöldi samtíma á inn- og út samtölum",
+      "DIRECTMEDIA": "Asterisk reynir sjálfgefið að beina RTP-miðlunarstraumnum til að fara beint frá þeim sem hringir til viðtakandans. Sum tæki styðja þetta ekki (sérstaklega ef eitt þeirra er á bak við NAT). Sjálfgefin stilling er YES. Ef þú ert með alla viðskiptavini á bak við NAT, eða vilt af einhverjum öðrum ástæðum að Asterisk haldist í hljóðleiðinni, gætirðu viljað slökkva á þessu.",
+      "CALLCOUNTER": "Virkja símtalateljara í tækjum",
+      "ADD_PHONE_TO_URI": "Skilgreindu hvort framleiðandinn krefst ';user=phone' á vefslóðinni",
+      "TRUST_REMOTE_PARTY_ID": "Skilgreindu hvort Remote-Party-ID ætti að vera treystandi",
+      "SEND_REMOTE_PARTY_ID_HEADER": "Skilgreindu hvort Remote-Party-ID ætti að senda (sjálfgefið er nei)",
+      "ENCRYPTION": "Hvort bjóða eigi SRTP dulkóðaða miðla (og aðeins SRTP dulkóðaða miðla) í úthringingum til jafningja. Símtöl munu mistakast með HANGUPCAUSE=58 ef jafningi styður ekki SRTP. Sjálfgefið gildi er nr",
+      "TRANSPORT": "Stilltu sjálfgefna flutninga, í forgangsröð",
+      "OTHERFIELDS": "Aðrir reitir til að bæta við í trunks conf skránum. Fylgdu sjálfgefnu Asterisk sniði (lykill=gildi), hvern reit í einni röð",
+      "EMAILADDRESS": "Bættu við einu eða mörgum netföngum aðskilið með kommum (t.d. john.doe@xcally.com, jane.miller@xcally.com)",
+      "EMAILCCADDRESS": "Bættu við einu eða mörgum netföngum aðskilið með kommum (t.d. john.doe@xcally.com, jane.miller@xcally.com)",
+      "EMAILBCCADDRESS": "Bættu við einu eða mörgum netföngum aðskilið með kommum (t.d. john.doe@xcally.com, jane.miller@xcally.com)",
+      "NAME": "Aðeins tölur, stafir og sérstakir (._) eru studdir",
+      "EVENTVARIABLES": "Ef það er virkt bætir það öllum atburðabreytum við vefslóðina (ráðlagt gildi=Nei. Stillt á Já aðeins í matsskyni) ",
+      "HEADERS": "Athugið: Hluti hausa verður að vera á RAW JSON sniði {\"key\":\"gildi\"} \nAthugið: Ef það er ekki fyllt út verður sjálfgefið gildi sent",
+      "BODY": "Athugið: meginmálið verður að vera á RAW JSON sniði {\"key\":\"value\"} \nAthugið: Ef það er ekki fyllt út verður sjálfgefið gildi sent",
+      "TIMEOUT": "Biddu um tímamörk í sekúndum. Gildið verður að vera á milli 1 og 10 og sjálfgefið gildi er 5."
     },
-    "EDIT_TRUNK": "Edit Trunk",
-    "DELETE_TRUNK": "Delete Trunk",
-    "CREATED_AT": "Created At",
-    "SETTINGS": "Settings",
-    "ADVANCED": "Advanced",
-    "OTHER": "Other",
-    "ACTIVE": "Active",
-    "CONTEXT": "Context",
-    "CALLERID": "Caller ID",
-    "TYPE": "Type",
+    "EDIT_TRUNK": "Breyttu trunk",
+    "DELETE_TRUNK": "eyða trunk",
+    "CREATED_AT": "Stofnað kl.",
+    "SETTINGS": "Stillingar",
+    "ADVANCED": "Ítarlegt",
+    "OTHER": "Aðrir",
+    "ACTIVE": "Virkur",
+    "CONTEXT": "Samhengi",
+    "CALLERID": "Auðkenni hringjara",
+    "TYPE": "Tegund",
     "DTMFMODE": "DTMF Mode",
     "NAT": "NAT",
-    "QUALIFY": "Qualify",
-    "ALLOWCODECS": "Allowed Codecs",
-    "INSECURE": "Insecure",
+    "QUALIFY": "Hæfi",
+    "ALLOWCODECS": "Leyfðir kódekar",
+    "INSECURE": "Óöruggt",
     "REGISTRY": "Registry",
-    "DIRECTMEDIA": "Direct Media",
-    "CALLCOUNTER": "Call Counter",
-    "FROMDOMAIN": "From Domain",
-    "FROMUSER": "From User",
-    "OUTBOUNDPROXY": "Outbound Proxy",
-    "ADD_PHONE_TO_URI": "Add Phone to URL",
-    "TRUST_REMOTE_PARTY_ID": "Trust Remote Party ID",
-    "SEND_REMOTE_PARTY_ID_HEADER": "Send Remote Party ID Header",
-    "ENCRYPTION": "Encryption",
+    "DIRECTMEDIA": "Bein miðlun",
+    "CALLCOUNTER": "Símtala teljari",
+    "FROMDOMAIN": "Frá Domain",
+    "FROMUSER": "Frá notanda",
+    "OUTBOUNDPROXY": "Útfarandi proxy",
+    "ADD_PHONE_TO_URI": "Bættu við síma á URL",
+    "TRUST_REMOTE_PARTY_ID": "TÖruggt auðkenni fjaraðila",
+    "SEND_REMOTE_PARTY_ID_HEADER": "Senda auðkennishaus fyrir fjaraðila",
+    "ENCRYPTION": "Dulkóðun",
     "PORT": "Port",
-    "TRANSPORT": "Transport",
-    "SAVE": "Save",
-    "VARIABLES": "Variables",
-    "ADD_VARIABLE": "Add Variable",
-    "EDIT_VARIABLE": "Edit Variable",
-    "DELETE_VARIABLE": "Delete Variable",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "TAGS": "Tags",
-    "ADD_TAG": "Add Tag",
-    "EDIT_TAG": "Edit Tag",
-    "DELETE_TAG": "Delete Tag",
-    "PAUSES": "Pauses",
-    "ADD_PAUSE": "Add Pause",
-    "EDIT_PAUSE": "Edit Pause",
-    "DELETE_PAUSE": "Delete Pause",
-    "CANNEDANSWERS": "Canned Answers",
-    "ADD_CANNEDANSWER": "Add Canned Answer",
-    "EDIT_CANNEDANSWER": "Edit Canned Answer",
-    "DELETE_CANNEDANSWER": "Delete Canned Answer",
-    "KEY": "Key",
-    "VALUE": "Value",
-    "SOUNDS": "Sounds",
-    "EDIT_SOUND": "Edit Sound",
-    "DELETE_SOUND": "Delete Sound",
-    "CANCEL": "Cancel",
-    "FINISH": "Finish",
-    "DROP_TO_UPLOAD": "Drop To Upload",
-    "UPLOADING": "Uploading",
-    "TRIGGERS": "Triggers",
-    "EDIT_TRIGGER": "Edit Trigger",
-    "DELETE_TRIGGER": "Delete Trigger",
-    "ADD_TRIGGER": "Add Trigger",
-    "DELETE": "Delete",
-    "AUTOMATIONS": "Automations",
-    "EDIT_AUTOMATION": "Edit Automation",
-    "DELETE_AUTOMATION": "Delete Automation",
-    "ADD_AUTOMATION": "Add Automation",
-    "INTERVALS": "Intervals",
-    "EDIT_INTERVAL": "Edit Interval",
-    "DELETE_INTERVAL": "Delete Interval",
-    "ADD_INTERVAL": "Add Interval",
-    "TOOLS": "Tools",
-    "ID": "Id",
-    "AUDIO": "Audio",
-    "DOWNLOAD_SOUND": "Download Sound",
-    "UPLOAD_SOUND": "Tools",
-    "CHANNEL": "Channel",
-    "NEW_TRIGGER": "New Trigger",
-    "GENERAL": "General",
-    "STATUS": "Status",
-    "CONDITIONS&ACTIONS": "Conditions & Actions",
-    "ALLCONDITIONS": "Meet all these conditions:",
-    "ANYCONDITIONS": "Meet any of these conditions:",
-    "ACTIONS": "Actions:",
-    "NEW_AUTOMATION": "New Automation",
-    "TIMEOUT": "Timeout",
+    "TRANSPORT": "Flutningur",
+    "SAVE": "Geyma",
+    "VARIABLES": "Breytur",
+    "ADD_VARIABLE": "Bættu við breytu",
+    "EDIT_VARIABLE": "Breyttu breytu",
+    "DELETE_VARIABLE": "Eyða breytu",
+    "SELECTED": "Valið",
+    "SELECT_ALL": "Velja allt",
+    "SELECT_NONE": "Veldu ekkert",
+    "TAGS": "Tögg",
+    "ADD_TAG": "Bættu við taggi",
+    "EDIT_TAG": "Breyttu taggi",
+    "DELETE_TAG": "Eyða taggi",
+    "PAUSES": "Hlé",
+    "ADD_PAUSE": "Bættu við hlér",
+    "EDIT_PAUSE": "Breyttu hléi",
+    "DELETE_PAUSE": "Eyða hléi",
+    "CANNEDANSWERS": "Tengd svör",
+    "ADD_CANNEDANSWER": "Bættu við tengdu svari",
+    "EDIT_CANNEDANSWER": "Breyttu tengdu svari",
+    "DELETE_CANNEDANSWER": "Eyða tengdu svari",
+    "KEY": "Lykill",
+    "VALUE": "Gildi",
+    "SOUNDS": "Hljóð",
+    "EDIT_SOUND": "Breyttu hljóði",
+    "DELETE_SOUND": "Eyða hljóði",
+    "CANCEL": "Hætta við",
+    "FINISH": "Lokið",
+    "DROP_TO_UPLOAD": "Slepptu til að sækja",
+    "UPLOADING": "Hleður upp",
+    "TRIGGERS": "Triggerar",
+    "EDIT_TRIGGER": "Breyttu triggeri",
+    "DELETE_TRIGGER": "Eyða triggeri",
+    "ADD_TRIGGER": "Bættu við trigger",
+    "DELETE": "Eyða",
+    "AUTOMATIONS": "Sjálfvirkni",
+    "EDIT_AUTOMATION": "Breyttu sjálfvirkni",
+    "DELETE_AUTOMATION": "Eyða sjálfvirkni",
+    "ADD_AUTOMATION": "Bæta við sjálfvirkni",
+    "INTERVALS": "bil",
+    "EDIT_INTERVAL": "Breyta bili",
+    "DELETE_INTERVAL": "Eyða bili",
+    "ADD_INTERVAL": "Bættu við millibili",
+    "TOOLS": "Verkfæri",
+    "ID": "Auðkenni",
+    "AUDIO": "Hljóð",
+    "DOWNLOAD_SOUND": "Niðurhal á hlóði",
+    "UPLOAD_SOUND": "Verkfæri",
+    "CHANNEL": "Rás",
+    "NEW_TRIGGER": "Nýr trigger",
+    "GENERAL": "Almennt",
+    "STATUS": "Staða",
+    "CONDITIONS&ACTIONS": "Skilyrði og aðgerðir",
+    "ALLCONDITIONS": "Uppfylltu öll þessi skilyrði",
+    "ANYCONDITIONS": "Uppfylltu einhverjum af þessum skilyrðum",
+    "ACTIONS": "Aðgerðir:",
+    "NEW_AUTOMATION": "Ný sjálfvirkni",
+    "TIMEOUT": "Tíminn rann út",
     "PEERSTATUS": "Peer Status",
-    "CALL_LIMIT": "Calls Limit",
-    "OTHERFIELDS": "Other Fields",
-    "NEW_VARIABLE": "New Variable",
-    "NEW_TAG": "New Tag",
-    "NEW_PAUSE": "New Pause",
-    "NEW_CANNEDANSWER": "New Canned Answer",
-    "CONFIRM_PASSWORD": "Confirm Password",
-    "NEW_TRUNK": "New Trunk",
-    "FROM": "From",
-    "TO": "To",
-    "WEEKDAY": "Week Day",
-    "MONTHDAY": "Month Day",
-    "MONTH": "Month",
-    "ALWAYS": "Always",
-    "MON": "Monday",
-    "TUE": "Tuesday",
-    "WED": "Wednesday",
-    "THU": "Thursday",
-    "FRI": "Friday",
-    "SAT": "Saturday",
-    "SUN": "Sunday",
-    "JAN": "January",
-    "FEB": "February",
-    "MAR": "March",
-    "APR": "April",
-    "MAY": "May",
-    "JUN": "June",
-    "JUL": "July",
-    "AUG": "August",
+    "CALL_LIMIT": "Hámark á símtölum",
+    "OTHERFIELDS": "Aðrir reitir",
+    "NEW_VARIABLE": "Ný breyta",
+    "NEW_TAG": "Nýtt tag",
+    "NEW_PAUSE": "Nýtt hlé",
+    "NEW_CANNEDANSWER": "Nýtt tengt svar",
+    "CONFIRM_PASSWORD": "Staðfesta lykilorð",
+    "NEW_TRUNK": "Nýr trunkur",
+    "FROM": "Frá",
+    "TO": "Til",
+    "WEEKDAY": "Vikudagur",
+    "MONTHDAY": "Mánaðardagur",
+    "MONTH": "Mánuður",
+    "ALWAYS": "Alltaf",
+    "MON": "Mánudagur",
+    "TUE": "Þriðjudagur",
+    "WED": "Miðvikudagur",
+    "THU": "Fimmtudagur",
+    "FRI": "Föstudagur",
+    "SAT": "Laugardagur",
+    "SUN": "sunnudagur",
+    "JAN": "Janúar",
+    "FEB": "Febrúar",
+    "MAR": "Mars",
+    "APR": "Apríl",
+    "MAY": "Maí",
+    "JUN": "Júní",
+    "JUL": "Júlí",
+    "AUG": "Ágúst",
     "SEP": "September",
-    "OCT": "October",
-    "NOV": "November",
-    "DEC": "December",
-    "PASSWORD": "Password",
-    "CUSTOMDASHBOARDS": "Custom Dashboards",
-    "NEW_CUSTOMDASHBOARD": "New Custom Dashboard",
-    "ADD_CUSTOMDASHBOARD": "Add Custom Dashboard",
-    "EDIT_CUSTOMDASHBOARD": "Edit Custom Dashboard",
-    "DELETE_CUSTOMDASHBOARD": "Delete Custom Dashboard",
-    "SCHEDULER": "Scheduler",
-    "NEW_SCHEDULE": "New Schedule",
-    "ADD_SCHEDULE": "Add Schedule",
-    "EDIT_SCHEDULE": "Edit Schedule",
-    "DELETE_SCHEDULE": "Delete Schedule",
-    "SENDMAIL": "Send Email",
-    "CONFIGURATION": "Configuration",
-    "MAIL": "Email",
-    "REPORTTYPE": "Report Type",
-    "REPORT": "Report",
-    "OUTPUT": "Output",
-    "EXECUTEON": "Execute On",
-    "REPORTRANGE": "Report Range",
-    "VALIDITYSTART": "Start Time",
-    "VALIDITYEND": "End Time",
-    "EXECUTEEVERY": "Execute every",
-    "ACCOUNT": "Account",
-    "EMAILADDRESS": "Email Address",
+    "OCT": "Október",
+    "NOV": "Nóvember",
+    "DEC": "Desember",
+    "PASSWORD": "Lykilorð",
+    "CUSTOMDASHBOARDS": "Sérhannað upplýsingaborð",
+    "NEW_CUSTOMDASHBOARD": "Nýtt sérhannað upplýsingaborð",
+    "ADD_CUSTOMDASHBOARD": "Bæta við sérsniðnum upplýsingaborði",
+    "EDIT_CUSTOMDASHBOARD": "Breyttu snérsniðnum upplýsingaborðum",
+    "DELETE_CUSTOMDASHBOARD": "Eyða sérsniðnu upplýsinga borði",
+    "SCHEDULER": "Skipuleggjari",
+    "NEW_SCHEDULE": "Ný áætlun",
+    "ADD_SCHEDULE": "Bættu við áætlun",
+    "EDIT_SCHEDULE": "Breyttu áætlun",
+    "DELETE_SCHEDULE": "Eyða áætlun",
+    "SENDMAIL": "Sendu tölvupóst",
+    "CONFIGURATION": "Stillingar",
+    "MAIL": "Tölvupóstur",
+    "REPORTTYPE": "Skýrslu tegund",
+    "REPORT": "Skýrsla",
+    "OUTPUT": "Útkoma",
+    "EXECUTEON": "Framkvæma á",
+    "REPORTRANGE": "Tímabil skýrslu",
+    "VALIDITYSTART": "Upphafstími",
+    "VALIDITYEND": "Loka tími",
+    "EXECUTEEVERY": "Hver framkvæmd",
+    "ACCOUNT": "Reikningur",
+    "EMAILADDRESS": "Netfang",
     "EMAILCCADDRESS": "Cc",
     "EMAILBCCADDRESS": "Bcc",
-    "CURRENTDAY": "Current Day",
-    "DAILY": "Daily",
-    "WEEKLY": "Weekly",
-    "MONTHLY": "Monthly",
-    "PREVIOUS_DAY": "Previous Day",
-    "LAST_SEVEN_DAYS": "Last Seven Days",
-    "LAST_THIRTY_DAYS": "Last Thirthy Days",
-    "LAST_MONTH": "Last Month",
-    "WEEKDAYS": "Week Days",
-    "HOUR": "Hour",
-    "DEFAULT": "Default",
+    "CURRENTDAY": "Núverandi dagur",
+    "DAILY": "Daglega",
+    "WEEKLY": "Wvikulega",
+    "MONTHLY": "Mánaðarlega",
+    "PREVIOUS_DAY": "Fyrri dagur",
+    "LAST_SEVEN_DAYS": "Síðustu sjö dagar",
+    "LAST_THIRTY_DAYS": "Síðustu þrjátíu dagar",
+    "LAST_MONTH": "Síðasti mánuður",
+    "WEEKDAYS": "Viku dagar",
+    "HOUR": "Klst.",
+    "DEFAULT": "Sjálfgefið",
     "CSV": "CSV",
     "PDF": "PDF",
-    "15MIN": "15 minutes",
-    "30MIN": "30 minutes",
-    "1H": "1 hour",
-    "VOICE": "Voice",
-    "CHAT": "Chat",
+    "15MIN": "15 mín",
+    "30MIN": "30 mínútur",
+    "1H": "1 klst",
+    "VOICE": "Tal",
+    "CHAT": "Spjall",
     "SMS": "SMS",
     "OPENCHANNEL": "Open Channel",
-    "TEMPLATES": "Templates",
-    "EDIT_TEMPLATE": "Edit Template",
-    "DELETE_TEMPLATE": "Delete Template",
-    "NEW_TEMPLATE": "New Template",
-    "ADD_TEMPLATE": "Add Template",
-    "CONTENT": "Content",
-    "FIELD": "Field",
-    "NO_ANYCONDITION_AVAILABLE": "No Conditions available",
-    "NO_ALLCONDITION_AVAILABLE": "No Conditions available",
-    "NO_ACTION_AVAILABLE": "No Actions available",
-    "ACTION": "Action",
-    "EDIT_ANYCONDITION": "Edit Condition",
-    "DELETE_ANYCONDITION": "Delete Condition",
-    "NEW_ANYCONDITION": "New Condition",
-    "ADD_ANYCONDITION": "Add Condition",
-    "EDIT_ALLCONDITION": "Edit Condition",
-    "DELETE_ALLCONDITION": "Delete Condition",
-    "NEW_ALLCONDITION": "New Condition",
-    "ADD_ALLCONDITION": "Add Condition",
-    "EDIT_ACTION": "Edit Action",
-    "DELETE_ACTION": "Delete Action",
-    "NEW_ACTION": "New Action",
-    "ADD_ACTION": "Add Action",
-    "QUEUE": "Queue",
-    "CALL_STATUS": "Call Status",
-    "OUTBOUNDROUTE": "Outbound Route",
-    "MAIL_SUBSTATUS": "Email Substatus",
-    "OFFLINE_MESSAGE": "Offline Message",
-    "EQUALS": "Equals",
-    "NOT_EQUALS": "Not Equals",
-    "CONTACT_MANAGER": "Contacts Manager",
-    "INTEGRATIONS": "Integrations",
+    "TEMPLATES": "Sniðmát",
+    "EDIT_TEMPLATE": "Breyttu sniðmáti",
+    "DELETE_TEMPLATE": "Eyða sniðmáti",
+    "NEW_TEMPLATE": "Nýtt sniðmát",
+    "ADD_TEMPLATE": "Bættu við sniðmáti",
+    "CONTENT": "Innihald",
+    "FIELD": "Svæði",
+    "NO_ANYCONDITION_AVAILABLE": "Engin skilyrði til staðar",
+    "NO_ALLCONDITION_AVAILABLE": "Engin skilyrði til staðar",
+    "NO_ACTION_AVAILABLE": "Engin aðgerð til staðar",
+    "ACTION": "Aðgerð",
+    "EDIT_ANYCONDITION": "Breyttu skilyrðum",
+    "DELETE_ANYCONDITION": "Eyða skilyrði",
+    "NEW_ANYCONDITION": "Ný skilyrði",
+    "ADD_ANYCONDITION": "bæta við skilyrðum",
+    "EDIT_ALLCONDITION": "Breyttu skilyrðum",
+    "DELETE_ALLCONDITION": "Eyða skilyrðum",
+    "NEW_ALLCONDITION": "Ný skilyrði",
+    "ADD_ALLCONDITION": "Bæta við skilyrðum",
+    "EDIT_ACTION": "Greyttu aðgerð",
+    "DELETE_ACTION": "Eyða aðgerð",
+    "NEW_ACTION": "Ný aðgerð",
+    "ADD_ACTION": "Bæta við aðgerð",
+    "QUEUE": "Biðröð",
+    "CALL_STATUS": "Staða á símtölum",
+    "OUTBOUNDROUTE": "Útfarandi flæði",
+    "MAIL_SUBSTATUS": "Grunnur tölvupósts",
+    "OFFLINE_MESSAGE": "Skilaboð án nettengingar",
+    "EQUALS": "Jafnt og",
+    "NOT_EQUALS": "Ekki jafnt og",
+    "CONTACT_MANAGER": "Tengiliða stjórnandi",
+    "INTEGRATIONS": "Samþáttanir",
     "MOTIONBAR": "Motion Bar",
     "JSCRIPTY": "Jscripty",
-    "URL_FORWARD": "URL Forward",
-    "WEB_POPUP": "Web Popup",
-    "LIST": "List",
-    "INTEGRATION": "Integration",
-    "TEMPLATE": "Template",
+    "URL_FORWARD": "URL áframsent",
+    "WEB_POPUP": "Wef Popup",
+    "LIST": "Listi",
+    "INTEGRATION": "Samþáttun",
+    "TEMPLATE": "Sniðmát",
     "URL": "URL",
-    "APPLICATION": "Application",
-    "ARGUMENTS": "Arguments",
-    "NO_APPS_AVAILABLE": "No applications available",
-    "NEW_INTERVAL": "New Interval",
-    "OPERATOR": "Operator",
-    "NO_INTERVALS_AVAILABLE": "No intervals available",
-    "YES": "Yes",
-    "NO": "No",
-    "SUBJECT": "Subject",
-    "NO_AVAILABLE_INFO": "No available info",
-    "BROWSER": "Browser",
-    "INTERVAL": "Interval",
-    "INFO": "Info",
-    "TIME_RANGE": "Time Range",
-    "WEEK_DAYS": "Week Days",
-    "MONTH_DAYS": "Month Days",
-    "MONTHS": "Months",
-    "DROP_TO_UPLOAD_MESSAGE": "Drop audio files here to upload. Only MP3, WAV, GSM - Max. 15MB",
-    "POLLING_INTERVAL": "Polling Interval (seconds)",
-    "DASHBOARD": "Dashboard",
-    "NEW_DASHBOARDITEM": "New Dashboard Widget",
-    "COUNTER": "Counter",
+    "APPLICATION": "Forrit",
+    "ARGUMENTS": "Rök",
+    "NO_APPS_AVAILABLE": "Engin forrit til staðar",
+    "NEW_INTERVAL": "Nýtt bil",
+    "OPERATOR": "Kerfisstjóri",
+    "NO_INTERVALS_AVAILABLE": "Engin bil til staðar",
+    "YES": "Já",
+    "NO": "Nei",
+    "SUBJECT": "Efni",
+    "NO_AVAILABLE_INFO": "Engar upplýsingar fáanlegar",
+    "BROWSER": "Vafri",
+    "INTERVAL": "Bil",
+    "INFO": "Upplýsingar",
+    "TIME_RANGE": "Tímabil",
+    "WEEK_DAYS": "Vikudagar",
+    "MONTH_DAYS": "Mánaðardagar",
+    "MONTHS": "Mánuðir",
+    "DROP_TO_UPLOAD_MESSAGE": "Slepptu hljóð skrám hér til að sækja nýja. Aðeins MP3, WAV, GSM - Max. 15MB",
+    "POLLING_INTERVAL": "Könnunarbil (seconds)",
+    "DASHBOARD": "Upplýsingaborð",
+    "NEW_DASHBOARDITEM": "Nýtt upplýsingaborðs Widget",
+    "COUNTER": "Teljari",
     "IFRAME": "IFrame",
-    "CLOCK": "Clock",
-    "ADD_DASHBOARDITEM": "Add Dashboard Widget",
-    "EDIT_WIDGET": "Edit Widget",
-    "DELETE_WIDGET": "Delete Widget",
-    "FLIP_WIDGET": "Flip Widget",
-    "TITLE": "Title",
-    "UPDATE": "Update",
-    "LAYOUT": "Layout",
-    "BACKGROUND_COLOR": "Background Color",
-    "FOREGROUND_COLOR": "Foreground Color",
-    "FOREGROUND_TITLE_COLOR": "Foreground Title Color",
-    "THEME": "Theme",
-    "LIGHT": "Light",
-    "DARK": "Dark",
-    "TIMEZONE": "TimeZone",
-    "DIGITAL_FORMAT": "Digital Date Format",
-    "TOOLS_QUERY": "Query",
-    "SELECT": "Select",
-    "WHERE": "Where",
-    "BACK": "Back",
-    "PROJECT": "Project",
-    "GOTOREALTIME_TRUNK": "Go To Realtime Trunk",
-    "GOTO_TRUNK": "Go To Trunk",
+    "CLOCK": "Klukka",
+    "ADD_DASHBOARDITEM": "Bæta við upplýsingaborðs Widget",
+    "EDIT_WIDGET": "Breyttu Widget",
+    "DELETE_WIDGET": "Eyða Widget",
+    "FLIP_WIDGET": "skipta Widget",
+    "TITLE": "Titill",
+    "UPDATE": "Uppfæra",
+    "LAYOUT": "Útlit",
+    "BACKGROUND_COLOR": "Litur á bakgrunni",
+    "FOREGROUND_COLOR": "Litur á forgrunni",
+    "FOREGROUND_TITLE_COLOR": "Litur á forgrunns titli",
+    "THEME": "Thema",
+    "LIGHT": "Létt",
+    "DARK": "Dökkt",
+    "TIMEZONE": "Tímabelti",
+    "DIGITAL_FORMAT": "Eyða sniði á dagsetningu",
+    "TOOLS_QUERY": "Fyrirspurn",
+    "SELECT": "Velja",
+    "WHERE": "Hvar",
+    "BACK": "Til baka",
+    "PROJECT": "Verkefni",
+    "GOTOREALTIME_TRUNK": "Farðu í rauntíma trunk",
+    "GOTO_TRUNK": "Farði í trunk",
     "CRON": "Cron",
-    "MINUTES": "Minutes",
-    "HOURLY": "Hourly",
-    "YEARLY": "Yearly",
-    "EVERY": "Every",
-    "MINUTE": "Minute",
-    "ON_SECOND": "On second",
-    "HOUR_ON_MINUTE": "Hour on minute",
-    "AND_SECOND": "And second",
-    "DAY_AT": "Day at",
-    "START_TIME": "Start Time",
-    "ON_THE": "On the",
-    "OF_EVERY": "Of every",
-    "MONTH_AT": "Month at",
-    "AT": "At",
-    "LAST": "Last",
-    "LASTUNIT": "Unit",
-    "MAILACCOUNT": "Email Account",
-    "OF": "of",
-    "PAST_THE_HOUR": "Past the hour",
-    "DAY": "Day",
-    "WEEK": "Week",
-    "YEAR": "Year",
-    "ON": "On",
-    "PAI": "P-Asserted-Identity",
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
-    "EVENTVARIABLES": "Event Variables",
-    "AUTOCREATECONTACT": "Create contact automatically",
-    "LOCATION": "Location",
-    "NEW_TAB": "New Tab",
-    "NEW_WINDOW": "New Window",
-    "MOTION_TAB": "New Agent Dashboard Tab",
-    "WINDOWWIDTH": "Window Width(px)",
-    "WINDOWHEIGHT": "Window Height(px)",
-    "BODY": "Body",
-    "REPORTFOLDER": "Report Folder",
-    "REPORTSUBFOLDER": "Report Subfolder",
-    "AGENT": "Agent",
-    "HEADERS": "Headers",
-    "WHATSAPP": "WhatsApp Connector",
-    "LEVEL": "Level",
+    "MINUTES": "Mínútur",
+    "HOURLY": "Á klukkustundar fresti",
+    "YEARLY": "Árlega",
+    "EVERY": "Hvert",
+    "MINUTE": "Mínúta",
+    "ON_SECOND": "Á sekúndunni",
+    "HOUR_ON_MINUTE": "Mínúta á hverri klukkstund",
+    "AND_SECOND": "Bættu við sekúndum",
+    "DAY_AT": "Dagur kl.",
+    "START_TIME": "Upphafstími",
+    "ON_THE": "Á",
+    "OF_EVERY": "Af hverjum",
+    "MONTH_AT": "Mánuður kl.",
+    "AT": "Kl.",
+    "LAST": "Síðast",
+    "LASTUNIT": "Eining",
+    "MAILACCOUNT": "Netfang",
+    "OF": "Af",
+    "PAST_THE_HOUR": "Eftir klukkutímann",
+    "DAY": "Dagur",
+    "WEEK": "Vika",
+    "YEAR": "Ár",
+    "ON": "Á",
+    "PAI": "P-innsett auðkenni",
+    "PAGE": "Bls.",
+    "ROWSPERPAGE": "Línur á bls.",
+    "EVENTVARIABLES": "Viðburðar breytur",
+    "AUTOCREATECONTACT": "Stofnaðu tengilið sjálfkrafa",
+    "LOCATION": "Staðsetning",
+    "NEW_TAB": "Nýr flipi",
+    "NEW_WINDOW": "Nýr gluggi",
+    "MOTION_TAB": "Nýr flipi í stjórnborði fulltrúans",
+    "WINDOWWIDTH": "breidd á glugga(px)",
+    "WINDOWHEIGHT": "Hæðar stærð á glugga(px)",
+    "BODY": "Innihald",
+    "REPORTFOLDER": "Skýrslu mappa",
+    "REPORTSUBFOLDER": "Skýrslu undirmappa",
+    "AGENT": "Fulltrúi",
+    "HEADERS": "Hedderar",
+    "WHATSAPP": "WhatsApp tengill",
+    "LEVEL": "Stig",
     "NOTIFICATIONS": {
-      "DISPOSITION_CREATED_SUCCESS_TITLE": "Disposition successfully created",
-      "DISPOSITION_SAVED_SUCCESS_TITLE": "Disposition successfully saved",
-      "DISPOSITION_DELETE_TITLE": "Are you sure want to delete the disposition?",
-      "DISPOSITION_DELETE_MESSAGE": "{{ name }} will be deleted",
-      "DISPOSITION_DELETE_MESSAGE_CHILDREN": "{{ name }} will be deleted with all its sub dispositions",
-      "DISPOSITION_DELETED_SUCCESS_TITLE": "Disposition successfully deleted",
-      "DISPOSITIONS_DELETE_TITLE": "Are you sure want to delete the selected dispositions?",
+      "DISPOSITION_CREATED_SUCCESS_TITLE": "Það tókst að stofna ráðstöfunina",
+      "DISPOSITION_SAVED_SUCCESS_TITLE": "Það tókst að geyma ráðstöfuninni",
+      "DISPOSITION_DELETE_TITLE": "Ertu viss um að þú viljir eyða ráðstöfuninni?",
+      "DISPOSITION_DELETE_MESSAGE": "{{ name }} Verður eytt",
+      "DISPOSITION_DELETE_MESSAGE_CHILDREN": "{{ name }} verður eytt með öllum undirráðstöfunum",
+      "DISPOSITION_DELETED_SUCCESS_TITLE": "Það tókst að eyða ráðstöfuninni",
+      "DISPOSITIONS_DELETE_TITLE": "Ertu viss um að þú viljir eyða völdu skilyrði?",
       "DISPOSITIONS_DELETE_MESSAGE": "{{ total }} dispositions will be deleted",
-      "TRIGGER_CREATED_SUCCESS_TITLE": "Trigger successfully created",
-      "TRIGGER_SAVED_SUCCESS_TITLE": "Trigger successfully saved",
-      "TRIGGER_DELETE_TITLE": "Are you sure want to delete the trigger?",
-      "TRIGGER_DELETE_MESSAGE": "{{ name }} will be deleted",
-      "TRIGGER_DELETED_SUCCESS_TITLE": "Trigger successfully deleted",
-      "TRIGGERS_DELETE_TITLE": "Are you sure want to delete the selected triggers?",
-      "TRIGGERS_DELETE_MESSAGE": "{{ total }} triggers will be deleted",
-      "TRIGGERS_DELETED_SUCCESS_TITLE": "Triggers successfully deleted",
-      "ACTION_CREATED_SUCCESS_TITLE": "Action successfully created",
-      "ACTION_SAVED_SUCCESS_TITLE": "Action successfully saved",
-      "ACTION_DELETE_TITLE": "Are you sure want to delete the action?",
-      "ACTION_DELETED_SUCCESS_TITLE": "Action successfully deleted",
-      "ACTIONS_DELETE_TITLE": "Are you sure want to delete the selected actions?",
-      "ACTIONS_DELETE_MESSAGE": "{{ total }} actions will be deleted",
-      "ACTIONS_DELETED_SUCCESS_TITLE": "Actions successfully deleted",
-      "CONDITION_CREATED_SUCCESS_TITLE": "Condition successfully created",
+      "TRIGGER_CREATED_SUCCESS_TITLE": "Það tókst að stofna triggerinn",
+      "TRIGGER_SAVED_SUCCESS_TITLE": "Það tókst að geyma triggerinn",
+      "TRIGGER_DELETE_TITLE": "Ertu viss um að þú viljir eyða triggernum?",
+      "TRIGGER_DELETE_MESSAGE": "{{ name }} Verður eytt",
+      "TRIGGER_DELETED_SUCCESS_TITLE": "Það tókst að eyða triggernum",
+      "TRIGGERS_DELETE_TITLE": "Ertu viss um að þú viljir eyða völdum triggerum?",
+      "TRIGGERS_DELETE_MESSAGE": "{{ total }} Triggerum verður eytt",
+      "TRIGGERS_DELETED_SUCCESS_TITLE": "Það tókst að eyða triggerum",
+      "ACTION_CREATED_SUCCESS_TITLE": "Það tókst að stofna aðgerðina",
+      "ACTION_SAVED_SUCCESS_TITLE": "Það tókst að geyma þessa aðgerð",
+      "ACTION_DELETE_TITLE": "Ertu viss um að þú viljir eyða þessari aðgerð?",
+      "ACTION_DELETED_SUCCESS_TITLE": "Það tókst að eyða aðgerðinni",
+      "ACTIONS_DELETE_TITLE": "Ertu viss um að þú viljir eyða völdum aðgerðum?",
+      "ACTIONS_DELETE_MESSAGE": "{{ total }} aðgerðum verður eytt",
+      "ACTIONS_DELETED_SUCCESS_TITLE": "Það tókst að eyða aðgerð",
+      "CONDITION_CREATED_SUCCESS_TITLE": "Það tókst að stofna aðgerðina",
       "CONDITION_SAVED_SUCCESS_TITLE": "Condition successfully saved",
       "CONDITION_DELETE_TITLE": "Are you sure want to delete the condition?",
-      "CONDITION_DELETED_SUCCESS_TITLE": "Condition successfully deleted",
-      "CONDITIONS_DELETE_TITLE": "Are you sure want to delete the selected conditions?",
-      "CONDITIONS_DELETE_MESSAGE": "{{ total }} conditions will be deleted",
-      "CONDITIONS_DELETED_SUCCESS_TITLE": "Conditions successfully deleted"
+      "CONDITION_DELETED_SUCCESS_TITLE": "Það tókst að eyða skilyrðum",
+      "CONDITIONS_DELETE_TITLE": "Ertu viss um að þú viljir eyða völdum aðgerðum?",
+      "CONDITIONS_DELETE_MESSAGE": "{{ total }} skilyrðum verður eytt",
+      "CONDITIONS_DELETED_SUCCESS_TITLE": "Það tókst að eyða þessum skilyrðum"
     },
-    "ALL_DISPOSITIONS": "All dispositions",
-    "SELECT_LEVEL": "Select a level",
-    "ALL": "All",
-    "FIRST_LEVEL_DISPOSITION": "First Level Disposition",
-    "SECOND_LEVEL_DISPOSITION": "Second Level Disposition",
-    "SEARCH_FIELDS": "Search fields",
-    "AUTOCREATE_FIELD": "Autocreate field",
-    "STANDARD": "Standard",
+    "ALL_DISPOSITIONS": "Allar ráðstafanir",
+    "SELECT_LEVEL": "Veldu þrep",
+    "ALL": "Allir",
+    "FIRST_LEVEL_DISPOSITION": "Fyrsta stigs ráðstöfun",
+    "SECOND_LEVEL_DISPOSITION": "Annarsstigs þjónusta",
+    "SEARCH_FIELDS": "Leitar reitir",
+    "AUTOCREATE_FIELD": "Stofnaðu reit sjálfkraf",
+    "STANDARD": "Staðalað",
     "GLOBALS": "Globals",
     "MOTION_BAR": "Motion Bar"
   }
index ba506de..d27fc1e 100644 (file)
@@ -7,7 +7,7 @@
     "ADD_DISPOSITION": "Adicionar Qualificação",
     "EDIT_DISPOSITION": "Editar Qualificação",
     "DELETE_DISPOSITION": "Excluir Qualificação",
-    "RUN_SCHEDULE": "Horário de execução",
+    "RUN_SCHEDULE": "Executar agendamento",
     "SENDIFEMPTY": "Enviar se vazio",
     "NEXTCONTACT": "Próximo",
     "OUTBOUND_ROUTE": "Rota de Saída",
     "ABANDONED": "Abandonado",
     "WAITING": "Esperando",
     "TALKING": "Falando",
-    "ANSWERED": "Respondido",
-    "UNMANAGED": "Não Tratado",
+    "ANSWERED": "Atendido",
+    "UNMANAGED": "Não Gerenciado",
     "CUSTOMTYPE": "Personalizado [path]",
-    "WEBREPORT": "Relatório da Web",
-    "PIECHART": "Gráfico de pizza",
+    "WEBREPORT": "Relatório Web",
+    "PIECHART": "Gráfico de Pizza",
     "MULTIBARCHART": "Gráfico de Multibar",
     "MOVE_WIDGET": "Mover Widget",
-    "USERADD_CUSTOMDASHBOARD": "Adicionar permissões do usuário",
+    "USERADD_CUSTOMDASHBOARD": "Adicionar Permissões do Usuário",
     "GOTODASHBOARD_CUSTOMDASHBOARD": "Pré-visualizar Dashboard",
     "GOTO_CUSTOMDASHBOARD": "Pré-visualizar Dashboard",
     "METRIC": "Métrica",
@@ -50,7 +50,7 @@
     "T38PT_UDPTL": "T38pt Udptl",
     "CALL": "Chamada",
     "NAME": "Nome",
-    "TRUNKS": "Tronco",
+    "TRUNKS": "Troncos",
     "SEARCH_FOR_ANYONE": "Procurar",
     "ERRORS": {
       "NAME_MAX_LENGTH": "O valor deve ter um tamanho máximo igual a {{max}}",
       "IGNOREDIALERCONTACTID_REQUIRED": "O campo Ignore Dialer Contact ID é obrigatório"
     },
     "HOST": "Host",
-    "SECRET": "Segredo",
+    "SECRET": "Senha",
     "DEFAULTUSER": "Usuário Padrão",
     "DESCRIPTION": "Descrição",
     "ADD_TRUNK": "Adicionar Tronco",
     "HELP": {
-      "T38PT_UDPTL": "Ex: sim, redundância, maxdatagram = 400",
+      "T38PT_UDPTL": "Ex: yes,redundancy,maxdatagram=400",
       "SECRET": "Senha de autenticação",
       "HOST": "O domínio ou nome do host",
       "DEFAULTUSER": "Nome de usuário de autenticação",
       "CALLERID": "O Caller ID, no formato \"name\" <number>",
-      "REGISTRY": "A cadeia de registro, se exigida pelo provedor, geralmente defaultuser: secret @ host",
-      "FROMDOMAIN": "Defina o padrão de: domínio em mensagens SIP ao atuar como um SIP ua (cliente). Alguns destinos podem exigir um nome de identidade obrigatório, em vez de apenas o endereço IP",
-      "FROMUSER": "Como seu provedor conhece você. Este é qual usuário colocar em vez de callerid ao fazer chamadas para peer (outro proxy SIP). Válido apenas para type = peer.",
-      "OUTBOUNDPROXY": "IP_address ou DNS SRV name (excluindo o prefixo _sip._udp): nome do SRV, nome do host ou endereço IP do SIP Proxy de saída. Envie a sinalização de saída para este proxy, não diretamente para os dispositivos. Válido apenas para type = peer.",
+      "REGISTRY": "A string de registro, se exigida pelo provedor, por padrão 'defaultuser:secret@host'",
+      "FROMDOMAIN": "Define o padrão From:domain em mensagens SIP ao atuar como um SIP user agent (cliente). Para alguns destinos é obrigatório o envio do identity name em vez de apenas o endereço IP",
+      "FROMUSER": "Como seu provedor conhece você. Este é o usuário ou callerid enviado ao fazer chamadas para peer (outro SIP proxy). Válido apenas para type=peer.",
+      "OUTBOUNDPROXY": "IP_address ou DNS SRV name (excluindo o prefixo _sip._udp): SRV name, hostname ou endereço IP do SIP Proxy de saída. Envia a sinalização de saída para este proxy, não diretamente para os dispositivos. Válido apenas para type=peer.",
       "PORT": "O número da porta SIP",
-      "CONTEXT": "Contexto para o Tronco",
-      "TYPE": "Determine o papel do SIP no asterisco. Usuário: usado para autenticar entrada - Peer: para chamadas de saída - Amigo: abrange as duas características dos itens acima.",
+      "CONTEXT": "O contexto para o tronco",
+      "TYPE": "Determina o SIP role no gateway. User: usado para chamadas de entrada - Peer: usado para chamadas de saída - Friend: usado para chamadas de entrada e saída",
       "DTMFMODE": "Como DTMF (Dual-Tone Multi-Frequency) é enviado. RFC2833: modo padrão, os DTMF são enviados com RTP, mas fora do fluxo de áudio. INBAND: O DTMF é enviado em fluxo de áudio da conversa atual, tornando-se audível pelos alto-falantes. Aumenta uso de CPU. INFO: Embora esse método seja muito confiável, ele não é suportado por todos os PBX e muitos troncos SIP.",
-      "NAT": "Altere o comportamento do Asterisk para clientes atrás de um firewall. Se qualquer uma das opções separadas por vírgula for 'no', o Asterisk irá ignorar quaisquer outras configurações e definir nat = no.",
-      "QUALIFY": "Determinar quando o SIP é realizável",
+      "NAT": "Altere o comportamento do Gateway para clientes atrás de um\nfirewall. Se qualquer uma das opções for 'no', o Gateway irá ignorar as outras\nconfigurações e definirá nat=no.",
+      "QUALIFY": "Determinar quando o SIP é alcançável",
       "ALLOWCODECS": "Codecs Permitidos em Ordem de Preferência",
-      "INSECURE": "Especifique como lidar com conexões com peer, permitindo configurações inseguras",
-      "CALL_LIMIT": "Limite das Chamadas Simultâneas",
-      "DIRECTMEDIA": "Por padrão, o Asterisk tenta redirecionar o fluxo de mídia RTP para ir diretamente do chamador para o chamado. Alguns dispositivos não suportam isso (especialmente se um deles estiver por trás de um NAT). A configuração padrão é YES.",
-      "CALLCOUNTER": "Ativar Contagem de Chamadas no Dispositivos",
+      "INSECURE": "Especifica como realizar a conexão com o peer, permitindo configurações inseguras",
+      "CALL_LIMIT": "O limite das chamadas simultâneas para ligações de entrada e saída",
+      "DIRECTMEDIA": "Por padrão, o gateway tenta redirecionar o fluxo de mídia RTP para ir diretamente do chamador para o chamado. Alguns dispositivos não suportam isso (especialmente se um deles estiver por trás de NAT). A configuração padrão é YES.",
+      "CALLCOUNTER": "Ativar contagem de chamadas no dispositivos",
       "ADD_PHONE_TO_URI": "Definir se o provedor requer '; user = phone' no URL",
-      "TRUST_REMOTE_PARTY_ID": "Definir se o ID do participante remoto deve ser confiável",
-      "SEND_REMOTE_PARTY_ID_HEADER": "Definir se o Remote-Party-ID deve ser enviado (o padrão é não)",
-      "ENCRYPTION": "Se oferece SRTP encrypted media (e somente SRTP encrypted media) em chamadas outgoing para um peer. Causará falha HANGUPCAUSE=58 se peer não suportar SRTP. Padrão = Não",
-      "TRANSPORT": "Definir os transportes padrão, em ordem de preferência",
-      "OTHERFIELDS": "Outros campos para adicionar nos arquivos conf de troncos. Siga o formato de asterisco padrão (chave = valor), cada campo em uma única linha",
+      "TRUST_REMOTE_PARTY_ID": "Define se o Remote-Party-ID é confiável",
+      "SEND_REMOTE_PARTY_ID_HEADER": "Definir se o Remote-Party-ID deve ser enviado (o padrão é no)",
+      "ENCRYPTION": "Se oferece SRTP encrypted media (e somente SRTP encrypted media) em chamadas de saída para um peer. Causará falha HANGUPCAUSE=58 se peer não suportar SRTP. Padrão = No",
+      "TRANSPORT": "Define o transporte padrão, em ordem de preferência",
+      "OTHERFIELDS": "Outros campos para adicionar no arquivo de configuração do tronco. Siga o formato padrão (chave=valor), cada campo em uma única linha",
       "EMAILADDRESS": "Adicione um ou vários endereços separados por vírgulas (por exemplo, john.doe@xcally.com, jane.miller@xcally.com)",
       "EMAILCCADDRESS": "Adicione um ou vários endereços separados por vírgulas (por exemplo, john.doe@xcally.com, jane.miller@xcally.com)",
       "EMAILBCCADDRESS": "Adicione um ou vários endereços separados por vírgulas (por exemplo, john.doe@xcally.com, jane.miller@xcally.com)",
       "NAME": "Somente números, letras e caracteres específicos (._) são suportados",
-      "EVENTVARIABLES": "Se ativado, ele adiciona todas as variáveis \200b\200bdo evento ao URL (valor recomendado = Não. Defina como Sim somente para fins de avaliação)",
+      "EVENTVARIABLES": "Se ativado, ele adiciona todas as variáveis \200b\200bdo evento a URL (valor recomendado = No. Defina como Yes somente para fins de avaliação)",
       "BODY": "Note: the body must be in RAW JSON format {\"key\":\"value\"} \nNote: If not filled out, o valor padrão será enviado",
       "INFO": "Inserir título",
       "SCRIPT": "Inserir script",
       "SCRIPT_INFO": "Inserir uma descrição para o script",
-      "SCRIPT_TYPE": "Insira uma tipologia para o script (por exemplo, curl, bash ...)",
+      "SCRIPT_TYPE": "Insira um tipo para o script (exemplo: curl, bash ...)",
       "HEADERS": "Nota: a seção Cabeçalhos deve estar no formato JSON RAW {\"key\": \"value\"}\nNota: Se não for preenchido, o valor padrão será enviado",
-      "TIMEOUT": "Solicitar tempo limite em segundos. O valor deve estar entre 1 e 10 e o valor padrão é 5.",
-      "MANAGED": "O número total de interações concluídas",
+      "TIMEOUT": "Timeout da requisição em segundos. O valor deve estar entre 1 e 10 e o valor padrão é 5.",
+      "MANAGED": "O número total de interações completadas",
       "OPENED": "O número total de interações ativas"
     },
     "EDIT_TRUNK": "Editar Tronco",
     "DELETE_TRUNK": "Excluir Tronco",
     "CREATED_AT": "Criado em",
-    "SETTINGS": "Definições",
+    "SETTINGS": "Configurações",
     "ADVANCED": "Avançado",
     "OTHER": "Outros",
     "ACTIVE": "Ativo",
     "CONTEXT": "Contexto",
-    "CALLERID": "Identificador de Chamadas",
+    "CALLERID": "Caller ID",
     "TYPE": "Tipo",
     "DTMFMODE": "Modo DTMF",
     "NAT": "NAT",
     "REGISTRY": "Registro",
     "DIRECTMEDIA": "Mídia Direta",
     "CALLCOUNTER": "Contador de Chamadas",
-    "FROMDOMAIN": "Do domínio",
-    "FROMUSER": "Do usuário",
-    "OUTBOUNDPROXY": "Proxy de saída",
-    "ADD_PHONE_TO_URI": "Adicionar Telefone ao URL",
+    "FROMDOMAIN": "Do Domínio",
+    "FROMUSER": "Do Usuário",
+    "OUTBOUNDPROXY": "Proxy de Saída",
+    "ADD_PHONE_TO_URI": "Adicionar Telefone a URL",
     "TRUST_REMOTE_PARTY_ID": "Trust Remote Party ID",
-    "SEND_REMOTE_PARTY_ID_HEADER": "Send Remote Party ID Header",
+    "SEND_REMOTE_PARTY_ID_HEADER": "Enviar Remote Party ID Header",
     "ENCRYPTION": "Encriptação",
     "PORT": "Porta",
     "TRANSPORT": "Transporte",
     "EDIT_VARIABLE": "Editar Variáveis",
     "DELETE_VARIABLE": "Excluir Variáveis",
     "SELECTED": "Selecionado",
-    "SELECT_ALL": "Selecione todos",
-    "SELECT_NONE": "Selecione nenhum",
+    "SELECT_ALL": "Selecione Todos",
+    "SELECT_NONE": "Selecione Nenhum",
     "TAGS": "Tags",
     "ADD_TAG": "Adicionar Tag",
     "EDIT_TAG": "Editar Tag",
     "DELETE_CANNEDANSWER": "Excluir Resposta Pré-definida",
     "KEY": "Key",
     "VALUE": "Valor",
-    "SOUNDS": "Sons",
+    "SOUNDS": "Áudios",
     "EDIT_SOUND": "Editar Som",
-    "DELETE_SOUND": " Ecluir Áudio",
+    "DELETE_SOUND": " Excluir Áudio",
     "CANCEL": "Cancelar",
     "FINISH": "Finalizar",
-    "DROP_TO_UPLOAD": "Soltar para Fazer Upload",
+    "DROP_TO_UPLOAD": "Soltar para fazer Upload",
     "UPLOADING": "Uploading",
     "TRIGGERS": "Gatilhos",
     "EDIT_TRIGGER": "Editar Gatilhos",
     "ANYCONDITIONS": "Atenda alguma destas condições:",
     "ACTIONS": "Ações:",
     "NEW_AUTOMATION": "Nova Automação",
-    "TIMEOUT": "Tempo esgotado",
-    "PEERSTATUS": "Status de par Status",
+    "TIMEOUT": "Timeout",
+    "PEERSTATUS": "Status do Peer",
     "CALL_LIMIT": "Limite de Chamadas",
-    "OTHERFIELDS": "Outros campos",
+    "OTHERFIELDS": "Outros Campos",
     "NEW_VARIABLE": "Nova Variável",
     "NEW_TAG": "Nova Tag",
     "NEW_PAUSE": "Nova Pausa",
     "NEW_TRUNK": "Novo Tronco",
     "FROM": "De ",
     "TO": "Para",
-    "WEEKDAY": "Dia da semana",
+    "WEEKDAY": "Dia da Semana",
     "MONTHDAY": "Dia do mês",
     "MONTH": "Mês",
     "ALWAYS": "Sempre",
     "ADD_CUSTOMDASHBOARD": "Adicionar Dashboard Personalizado",
     "EDIT_CUSTOMDASHBOARD": "Editar Dashboard Personalizado",
     "DELETE_CUSTOMDASHBOARD": "Excluir Dashboard Personalizado",
-    "SCHEDULER": "Agendador",
-    "NEW_SCHEDULE": "Novo Agendador",
-    "ADD_SCHEDULE": "Adicionar Agendador",
-    "EDIT_SCHEDULE": "Editar Agendador",
-    "DELETE_SCHEDULE": "Excluir Agendador",
+    "SCHEDULER": "Agendamento",
+    "NEW_SCHEDULE": "Novo Agendamento",
+    "ADD_SCHEDULE": "Adicionar Agendamento",
+    "EDIT_SCHEDULE": "Editar Agendamento",
+    "DELETE_SCHEDULE": "Excluir Agendamento",
     "SENDMAIL": "Enviar Email",
     "CONFIGURATION": "Configuração",
     "MAIL": "Email",
-    "REPORTTYPE": "Tipo de relatório",
+    "REPORTTYPE": "Tipo do Relatório",
     "REPORT": "Relatório",
     "OUTPUT": "Saída",
     "EXECUTEON": "Executar em",
-    "REPORTRANGE": "Intervalo de relatório",
-    "VALIDITYSTART": "Hora de início",
-    "VALIDITYEND": "Hora finalizado",
+    "REPORTRANGE": "Intervalo do Relatório",
+    "VALIDITYSTART": "Hora de Início",
+    "VALIDITYEND": "Hora de Término",
     "EXECUTEEVERY": "Execute cada",
     "ACCOUNT": "Conta",
     "EMAILADDRESS": "Endereço de Email",
     "EMAILCCADDRESS": "Cc",
-    "EMAILBCCADDRESS": "Bcc",
+    "EMAILBCCADDRESS": "Cco",
     "CURRENTDAY": "Dia Atual",
     "DAILY": "Diariamente",
     "WEEKLY": "Semanal",
     "MONTHLY": "Mensal",
-    "PREVIOUS_DAY": "Dia anterior",
+    "PREVIOUS_DAY": "Dia Anterior",
     "LAST_SEVEN_DAYS": "Últimos Sete Dias",
-    "LAST_THIRTY_DAYS": "Últimos trinta dias",
+    "LAST_THIRTY_DAYS": "Últimos Trinta Dias",
     "LAST_MONTH": "Último Mês",
-    "WEEKDAYS": "Dias úteis",
+    "WEEKDAYS": "Dias da Semana",
     "HOUR": "Hora",
     "DEFAULT": "Padrão",
     "CSV": "CSV",
     "OUTBOUNDROUTE": "Rota de Saída",
     "EQUALS": "Igual a",
     "NOT_EQUALS": "Não é igual a",
-    "CONTACT_MANAGER": "Gestor de Contatos",
+    "CONTACT_MANAGER": "Gestão de Contatos",
     "INTEGRATIONS": "Integrações",
     "MOTIONBAR": "MotionBar",
     "JSCRIPTY": "Jscripty",
-    "URL_FORWARD": "URL Forward",
-    "WEB_POPUP": "Web Popup",
+    "URL_FORWARD": "URL de Encaminhamento",
+    "WEB_POPUP": "Popup Web",
     "LIST": "Lista",
     "INTEGRATION": "Integração",
     "TEMPLATE": "Modelo",
     "NO_AVAILABLE_INFO": "Nenhuma informação disponível",
     "BROWSER": "Navegador",
     "INTERVAL": "Intervalo",
-    "INFO": "Informarção",
-    "TIME_RANGE": "Intervalo de tempo",
-    "WEEK_DAYS": "Dias úteis",
+    "INFO": "Info",
+    "TIME_RANGE": "Intervalo de Tempo",
+    "WEEK_DAYS": "Dias da Semana",
     "MONTH_DAYS": "Mês Dias",
     "MONTHS": "Meses",
     "DROP_TO_UPLOAD_MESSAGE": "Solte arquivos de áudio aqui para fazer o upload. Apenas MP3, WAV, GSM - máx. 15MB",
-    "POLLING_INTERVAL": "Intervalo de pesquisa (segundos)",
+    "POLLING_INTERVAL": "Intervalo de Pesquisa (segundos)",
     "DASHBOARD": "Dashboard",
     "NEW_DASHBOARDITEM": "Novo Widget do Dashboard",
     "COUNTER": "Contador",
     "EDIT_WIDGET": "Editar Widget",
     "DELETE_WIDGET": "Excluir Widget",
     "FLIP_WIDGET": "Girar Widget",
-    "TITLE": "Titulo",
+    "TITLE": "Título",
     "UPDATE": "Atualizar",
     "LAYOUT": "Layout",
     "BACKGROUND_COLOR": "Cor de fundo",
     "FOREGROUND_COLOR": "Cor do Primeiro Plano",
     "FOREGROUND_TITLE_COLOR": "Cor do Título do Primeiro Plano",
     "THEME": "Tema",
-    "LIGHT": "Claro",
+    "LIGHT": "Light",
     "DARK": "Dark",
     "TIMEZONE": "Fuso horário",
     "DIGITAL_FORMAT": "Formato Data Digital",
     "TOOLS_QUERY": "Query",
     "SELECT": "Selecione",
-    "WHERE": "Where",
+    "WHERE": "Onde",
     "BACK": "Voltar",
     "PROJECT": "Projeto",
-    "GOTOREALTIME_TRUNK": "Ir para o Tronco em Tempo Real",
+    "GOTOREALTIME_TRUNK": "Visualizar Tronco em Tempo Real",
     "GOTO_TRUNK": "Ir para Tronco",
     "CRON": "Cron",
     "MINUTES": "Minutos",
-    "HOURLY": "De Hora em Hora",
+    "HOURLY": "Horário",
     "YEARLY": "Anual",
     "EVERY": "Cada",
     "MINUTE": "Minuto",
-    "ON_SECOND": "No segundo",
-    "HOUR_ON_MINUTE": "Hora no Minuto",
-    "AND_SECOND": "Em segundo lugar",
+    "ON_SECOND": "En segundo",
+    "HOUR_ON_MINUTE": "Hora e minuto",
+    "AND_SECOND": "Em segundo",
     "DAY_AT": "Dia em",
-    "START_TIME": "Hora de início",
+    "START_TIME": "Hora de Início",
     "ON_THE": "No",
     "OF_EVERY": "De todos",
     "MONTH_AT": "Mês em",
     "ON": "Em",
     "PAI": "P-Asserted-Identity",
     "PAGE": "Página",
-    "ROWSPERPAGE": "Linhas por Página",
+    "ROWSPERPAGE": "Linhas por página",
     "EVENTVARIABLES": "Variáveis \200b\200bde Eventos",
-    "AUTOCREATECONTACT": "Criar Contato Automaticamente",
+    "AUTOCREATECONTACT": "Criar contato automaticamente",
     "LOCATION": "Localização",
-    "NEW_TAB": "Nova aba",
-    "NEW_WINDOW": "Nova janela",
-    "WINDOWWIDTH": "Largura da janela (px)",
-    "WINDOWHEIGHT": "Altura da janela (px)",
+    "NEW_TAB": "Nova Aba",
+    "NEW_WINDOW": "Nova Janela",
+    "WINDOWWIDTH": "Largura da Janela (px)",
+    "WINDOWHEIGHT": "Altura da Janela (px)",
     "BODY": "Corpo",
-    "REPORTFOLDER": "Pasta de relatórios",
-    "REPORTSUBFOLDER": "Subpasta de relatório",
+    "REPORTFOLDER": "Pasta do Relatório",
+    "REPORTSUBFOLDER": "Subpasta do Relatório",
     "PREVIOUSCONTACT": "Anterior",
-    "VIDEOSUPPORT": "Suporte de vídeo",
+    "VIDEOSUPPORT": "Suporte a vídeo",
     "AGENT": "Agente",
     "HEADERS": "Cabeçalhos",
-    "SCRIPT": "Roteiro",
-    "SCRIPT_INFO": "Informações",
+    "SCRIPT": "Script",
+    "SCRIPT_INFO": "Info",
     "SCRIPT_TYPE": "Tipo",
     "MOTION_TAB": "Nova Aba",
-    "WHATSAPP": "Conector WhatsApp",
-    "AUTOCREATE_FIELD": "Criar Campo Automaticamente",
+    "WHATSAPP": "WhatsApp Connector",
+    "AUTOCREATE_FIELD": "Criar campo automaticamente",
     "GLOBALS": "Globais",
     "SEARCH_FIELDS": "Campos de busca",
     "STANDARD": "Padrão",
     "MOTION_BAR": "MotionBar",
     "ALL": "Tudo",
-    "ALL_DISPOSITIONS": "Todas Qualificações",
+    "ALL_DISPOSITIONS": "Todas qualificações",
     "FIRST_LEVEL_DISPOSITION": "Qualificação de Primeiro Nível",
-    "LEVEL": "Nível",
-    "SECOND_LEVEL_DISPOSITION": "Disposição de Segundo Nível",
-    "SELECT_LEVEL": "Selecione um nível",
-    "TITLEFONTSIZE": "Tamanho do título da fonte",
+    "LEVEL": "Level",
+    "SECOND_LEVEL_DISPOSITION": "Qualificação de Segundo Nível",
+    "SELECT_LEVEL": "Selecione um level",
+    "TITLEFONTSIZE": "Tamanho da Fonte do Título",
     "ADD_CONTACTITEMTYPE": "Adicionar",
-    "CONTACTITEMTYPE": "Tipos de Item de Contato",
+    "CONTACTITEMTYPE": "Tipos de item de contato",
     "NEW_CONTACTITEMTYPE": "Novo tipo de item de contato",
     "ORDER_BY": "Ordenar por",
     "RGBBACKGROUNDCOLOR": "Cor de fundo RGB",
-    "EMAIL": "E-mail",
-    "FILTERCHATWEBSITES": "Filtrar Sites Chat",
-    "FILTEREMAILACCOUNTS": "Filtrar Contas Email",
-    "FILTERFAXACCOUNTS": "Filtrar Contas Fax",
-    "FILTEROPENCHANNELACCOUNTS": "Filtrar Contas OpenChannel",
-    "FILTERSMSACCOUNTS": "Filtrar Contas SMS",
-    "FILTERWHATSAPPACCOUNTS": "Filtrar Contas Whatsapp",
-    "MANAGED": "Gerenciou",
-    "MANAGED_TEXT": "Interações gerenciadas",
+    "EMAIL": "Email",
+    "FILTERCHATWEBSITES": "Filtrar Sites de WebChat",
+    "FILTEREMAILACCOUNTS": "Filtrar Contas de Email",
+    "FILTERFAXACCOUNTS": "Filtrar Contas de Fax",
+    "FILTEROPENCHANNELACCOUNTS": "Filtrar Contas de OpenChannel",
+    "FILTERSMSACCOUNTS": "Filtrar Contas de SMS",
+    "FILTERWHATSAPPACCOUNTS": "Filtrar Contas de Whatsapp",
+    "MANAGED": "Gerenciado",
+    "MANAGED_TEXT": "Interações Gerenciadas",
     "OPENED": "Aberto",
-    "OPENED_TEXT": "Interações abertas",
+    "OPENED_TEXT": "Interações Abertas",
     "IGNOREDIALERCONTACTID": "Ignorar o ID de Contato do Discador",
     "MAIL_SUBSTATUS": "Substatus do Email",
-    "OFFLINE_MESSAGE": "Mensagem offline",
+    "OFFLINE_MESSAGE": "Mensagem Offline",
     "DELETE_CONTACTITEMTYPE": "Excluir Tipo de Item de Contato",
     "EDIT_CONTACTITEMTYPE": "Editar Tipo de Item de Contato",
-    "ORDER_BY_NUMERIC": "A ordem por campo deve ser um valor numérico!"
+    "ORDER_BY_NUMERIC": "o campo 'Ordenar por' deve ser um valor numérico!"
   }
 }
index cb5e0a9..49ed57e 100644 (file)
 {
   "VOICE": {
-    "SECOND_LEVEL_DISPOSITION": "Second Level Disposition",
-    "THIRD_LEVEL_DISPOSITION": "Third Level Disposition",
-    "FAILUREREASON": "Failure reason",
-    "TEXT": "Text",
-    "DOWNLOADTRANSCRIBE_VOICERECORDING": "Download Transcript",
-    "INBOUND": "Inbound",
-    "OUTBOUND": "Outbound",
-    "DIALER": "Dialer",
-    "LOGIN_TIME": "Login time",
-    "PAUSE_TIME": "Pause time",
-    "ABANDONEDCALLS": "Abandoned Queue Calls",
-    "WAITING_FOR_AGENTS": "Waiting for agents",
-    "ACTIVE": "Active",
-    "NO_AGENT_ONLINE": "No Agent Online",
-    "PARTIALPAUSE": "Partial Pause",
-    "STATUS": "Status",
-    "TIMER": "Timer",
+    "SECOND_LEVEL_DISPOSITION": "Annarsstigs ráðstöfun",
+    "THIRD_LEVEL_DISPOSITION": "Þriðjastigs aðstoð",
+    "FAILUREREASON": "Ástæða mistaka",
+    "TEXT": "Texti",
+    "DOWNLOADTRANSCRIBE_VOICERECORDING": "Sækja afrit",
+    "INBOUND": "Innkomandi",
+    "OUTBOUND": "Útfarandi",
+    "DIALER": "Hringjari",
+    "LOGIN_TIME": "Innskráningar tími",
+    "PAUSE_TIME": "Tími á hléi",
+    "ABANDONEDCALLS": "Símtöl í biðröð sem hætta við",
+    "WAITING_FOR_AGENTS": "Beðið eftir fulltrúum",
+    "ACTIVE": "Virkur",
+    "NO_AGENT_ONLINE": "Enginn fulltrúi er innskráður",
+    "PARTIALPAUSE": "Hluta hlé",
+    "STATUS": "Staða",
+    "TIMER": "Tímamælir",
     "ALIAS": "Alias",
-    "ALL": "All",
+    "ALL": "Allir",
     "IDLE": "Idle",
-    "EDIT_TRUNK": "Edit Trunk",
-    "GOTO_VOICEQUEUE": "Go To Realtime Voice Queues",
-    "GOTOREALTIME_VOICEQUEUE": "Go To Realtime Voice Queues",
-    "NAME": "Name",
-    "LOGOUT": "Logout",
-    "VOICEQUEUES": "Voice Queues",
-    "SEARCH_FOR_ANYONE": "Search",
-    "BACK": "Back",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "DELETE_VOICEDISPOSITION": "Delete Voice Disposition",
-    "EDIT_VOICEDISPOSITION": "Edit Voice Disposition",
-    "EDIT_VOICEQUEUE": "Edit Voice Queue",
-    "DELETE_VOICEQUEUE": "Delete Voice Queue",
-    "MOHSOUNDS": "Moh Sounds",
-    "STRATEGY": "Strategy",
-    "DESCRIPTION": "Description",
-    "ADD_VOICEQUEUE": "Add Voice Queue",
-    "CREATED_AT": "Created At",
-    "CANT_PLAY_GSM_AUDIO_FILES": "Can't play gsm or wav49 audio files",
-    "APPLICATIONS_LIST": "Applications List",
-    "GENERAL": "General",
-    "TIMEOUT": "Timeout",
-    "MAXLENGTH": "Maximum Length",
-    "RETRY": "Retry",
-    "WRAPUPTIME": "Wrapup Time",
-    "WEIGHT": "Weight",
-    "JOINWHENEMPTY": "Join when empty",
-    "LEAVEWHENEMPTY": "Leave when empty",
-    "MUSICONHOLD": "Music On Hold",
-    "ANNOUNCETOAGENT": "Announce To Agent",
-    "ANNOUNCEMENTS": "Announcements",
-    "ADVANCED": "Advanced",
-    "ANNOUNCEFREQUENCY": "Announce Frequency",
-    "MINANNOUNCEFREQUENCY": "Minimum Announce Frequency",
-    "PERIODICANNOUNCEFREQUENCY": "Periodic Announce Frequency",
-    "RANDOMPERIODICANNOUNCE": "Random Periodic Announce",
-    "ANNOUNCEHOLDTIME": "Announce Hold Time",
-    "ANNOUNCECALLERPOSITION": "Announce Caller Position",
-    "ANNOUNCEPOSITIONLIMIT": "Announce Position Limit",
-    "REPORTHOLDTIMEAGENT": "Report Agent Hold Time",
-    "PERIODICANNOUNCE": "Periodic Announce",
-    "HOLDTIMEANNOUNCE": "Hold Time Announce",
-    "YOUARENEXTANNOUNCE": "'You are next' Announce",
-    "THEREAREANNOUNCE": "'There are' Announce",
-    "WAITINGCALLSANNOUNCE": "Waiting Calls Announce",
-    "ESTIMATEDHOLDTIMEANNOUNCE": "Estimated Hold Time Announce",
-    "MINUTESANNOUNCE": "Minutes Announce",
-    "MINUTEANNOUNCE": "Minute Announce",
-    "SECONDSANNOUNCE": "Seconds Announce",
-    "THANKYOUANNOUNCE": "'Thank You' Announce",
-    "AUTOPAUSE": "Auto Pause",
-    "AFTERCALLWORK": "After Call Work",
-    "AFTERCALLWORKDURATION": "After Call Work Duration",
-    "RINGINUSE": "Ring In Use",
-    "MEMBERDELAY": "Member Delay",
-    "TIMEOUTRESTART": "Timeout Restart",
-    "MONITORFORMAT": "Recording Format",
-    "SETINTERFACEVARIABLES": "Set Interface Variables",
-    "SETQUEUEVARIABLES": "Set Queue Variables",
-    "SETQUEUEENTRYVARIABLES": "Set Queue Entry Variables",
-    "VARIABLE": "Variable",
-    "CONTEXT": "Context",
-    "SAVE": "Save",
-    "SETTINGS": "Settings",
-    "INBOUNDROUTES": "Inbound Routes",
-    "PHONENUMBER": "Phone Number",
-    "ADD_INBOUNDROUTE": "Add Inbound Route",
-    "EDIT_INBOUNDROUTE": "Edit Inbound Route",
-    "DELETE_INBOUNDROUTE": "Delete Inbound Route",
-    "ACTIONS": "Actions",
-    "OUTBOUNDROUTES": "Outbound Routes",
-    "DESTINATIONPATTERN": "Destination Pattern",
-    "ADD_OUTBOUNDROUTE": "Add Outbound Route",
-    "EDIT_OUTBOUNDROUTE": "Edit Outbound Route",
-    "DELETE_OUTBOUNDROUTE": "Delete Outbound Route",
-    "CUTDIGITS": "Cut Digits",
-    "RECORDING": "Recording",
-    "RECORDINGFORMAT": "Recording format",
-    "INTERNALROUTES": "Internal Routes",
-    "ADD_INTERNALROUTE": "Add Internal Route",
-    "EDIT_INTERNALROUTE": "Edit Internal Route",
-    "DELETE_INTERNALROUTE": "Delete Internal Route",
-    "CONTEXTS": "Contexts",
-    "ADD_CONTEXT": "Add Context",
-    "EDIT_CONTEXT": "Edit Context",
-    "DELETE_CONTEXT": "Delete Context",
-    "VOICEMAILS": "Voicemails",
-    "ADD_VOICEMAIL": "Add Voicemail",
-    "EDIT_VOICEMAIL": "Edit Voicemail",
-    "DELETE_VOICEMAIL": "Delete Voicemail",
-    "FULLNAME": "Full Name",
-    "EMAIL": "Email",
-    "MAILBOX": "Mailbox",
-    "PASSWORD": "Password",
-    "CONFIRM_PASSWORD": "Confirm Password",
-    "TIMEZONE": "Timezone",
-    "ATTACH": "Attach",
-    "ENVELOPE": "Envelope",
-    "DELETE": "Delete",
-    "EMAILBODY": "Email Body",
-    "EMAILSUBJECT": "Email Subject",
-    "MAXSECONDS": "Max Seconds",
-    "MAXMESSAGES": "Max Messages",
-    "MESSAGES": "Messages",
-    "SORT": "Sort",
-    "ADD_MUSICONHOLD": "Add Music On Hold",
-    "MUSICONHOLDS": "Music On Hold",
-    "EDIT_MUSICONHOLD": "Edit Music On Hold",
-    "DELETE_MUSICONHOLD": "Delete Music On Hold",
-    "DIRECTORY": "Directory",
-    "AUDIOFILES": "Audio Files",
-    "RECORDINGS": "Recordings",
+    "EDIT_TRUNK": "Breyta Trunk",
+    "GOTO_VOICEQUEUE": "Farðu í rauntíma tal biðraðir",
+    "GOTOREALTIME_VOICEQUEUE": "Farðu í rauntíma tal biðröð",
+    "NAME": "Nafn",
+    "LOGOUT": "Útskráning",
+    "VOICEQUEUES": "Tal biðraðir",
+    "SEARCH_FOR_ANYONE": "Leita",
+    "BACK": "Til baka",
+    "SELECTED": "Valið",
+    "SELECT_ALL": "Velja allt",
+    "SELECT_NONE": "Veldu engan",
+    "DELETE_VOICEDISPOSITION": "Eyða tal ráðstöfun",
+    "EDIT_VOICEDISPOSITION": "Breyta tal ráðstöfun",
+    "EDIT_VOICEQUEUE": "Breyta Tal biðröð",
+    "DELETE_VOICEQUEUE": "Eyða tal biðröð",
+    "MOHSOUNDS": "Moh hljómur",
+    "STRATEGY": "Stefna",
+    "DESCRIPTION": "Lýsing",
+    "ADD_VOICEQUEUE": "Bættu við tal biðröð",
+    "CREATED_AT": "Stofnað kl.",
+    "CANT_PLAY_GSM_AUDIO_FILES": "Get ekki spilað GSM eða wav49 hljóðskrár",
+    "APPLICATIONS_LIST": "Umsóknarlisti",
+    "GENERAL": "Almennt",
+    "TIMEOUT": "Tíminn rann út",
+    "MAXLENGTH": "Hámarks lengd",
+    "RETRY": "Reyna aftur",
+    "WRAPUPTIME": "Wrapup Tími",
+    "WEIGHT": "Vægi",
+    "JOINWHENEMPTY": "Skráðu þig þegar það er tómt",
+    "LEAVEWHENEMPTY": "Skildu eftir þegar það er tómt",
+    "MUSICONHOLD": "Tónlist á bið",
+    "ANNOUNCETOAGENT": "Tilkynning til fulltrúa",
+    "ANNOUNCEMENTS": "Tilkynningar",
+    "ADVANCED": "Ítarlegt",
+    "ANNOUNCEFREQUENCY": "Tíðni tilkynninga",
+    "MINANNOUNCEFREQUENCY": "Lámarkstíðni tilkynninga",
+    "PERIODICANNOUNCEFREQUENCY": "Tíðni á reglulegum tilkynningum",
+    "RANDOMPERIODICANNOUNCE": "Handahós reglulegar tilkynningar",
+    "ANNOUNCEHOLDTIME": "Tilkynna biðtíma",
+    "ANNOUNCECALLERPOSITION": "Tilkynna röð innhringjanda",
+    "ANNOUNCEPOSITIONLIMIT": "Tilkynna hámark á bið í röð",
+    "REPORTHOLDTIMEAGENT": "Skrá hlé tíma á fulltrúa",
+    "PERIODICANNOUNCE": "reglulegar tilkynningar",
+    "HOLDTIMEANNOUNCE": "Biðtíma tilkynning",
+    "YOUARENEXTANNOUNCE": "'Þú ert næstur' tilkynning",
+    "THEREAREANNOUNCE": "'Það eru' Tilkynning",
+    "WAITINGCALLSANNOUNCE": "Tilkynningar fyrir á bið",
+    "ESTIMATEDHOLDTIMEANNOUNCE": "Tilkynning á áætluðum biðtíma",
+    "MINUTESANNOUNCE": "Tilkynningar mínútur",
+    "MINUTEANNOUNCE": "Tilkynningarmínúta",
+    "SECONDSANNOUNCE": "Tilkynna sekúndur",
+    "THANKYOUANNOUNCE": "'Takk fyrir'  tilkynning",
+    "AUTOPAUSE": "Sjálfvirkt hlé",
+    "AFTERCALLWORK": "Vinna eftir samtal",
+    "AFTERCALLWORKDURATION": "Vinnutími eftir samtal",
+    "RINGINUSE": "Hringing í notkun",
+    "MEMBERDELAY": "Hóp seinkun",
+    "TIMEOUTRESTART": "Tími rann út endursett",
+    "MONITORFORMAT": "Upptöku format",
+    "SETINTERFACEVARIABLES": "Stilltu viðmótsbreytur",
+    "SETQUEUEVARIABLES": "Stilltu biðraða breytur",
+    "SETQUEUEENTRYVARIABLES": "Stilltu biðraða færslu breytur",
+    "VARIABLE": "Breyta",
+    "CONTEXT": "Samhengi",
+    "SAVE": "Geyma",
+    "SETTINGS": "Stillingar",
+    "INBOUNDROUTES": "Innkomandi flæði",
+    "PHONENUMBER": "Síma númer",
+    "ADD_INBOUNDROUTE": "Bættu við innhringi flæði",
+    "EDIT_INBOUNDROUTE": "Breyta innhringi reglu",
+    "DELETE_INBOUNDROUTE": "Eyða innhringi reglu",
+    "ACTIONS": "Aðgerð",
+    "OUTBOUNDROUTES": "Úthringi flæði",
+    "DESTINATIONPATTERN": "Áfangastaða mynstur",
+    "ADD_OUTBOUNDROUTE": "Bættu við úthringi reglu",
+    "EDIT_OUTBOUNDROUTE": "Breyta úthringi flæði",
+    "DELETE_OUTBOUNDROUTE": "Eyða úthringi reglu",
+    "CUTDIGITS": "Taktu út tölustafi",
+    "RECORDING": "Tekur upp",
+    "RECORDINGFORMAT": "Snið á upptöku",
+    "INTERNALROUTES": "Innanhúss flæði",
+    "ADD_INTERNALROUTE": "Bættu við innanhúss flæði",
+    "EDIT_INTERNALROUTE": "Breyta innanhúss flæði",
+    "DELETE_INTERNALROUTE": "Eyða innanhúss reglu",
+    "CONTEXTS": "Samhengi",
+    "ADD_CONTEXT": "Bættu við texta",
+    "EDIT_CONTEXT": "Breyta samhengi",
+    "DELETE_CONTEXT": "Eyða samhengi",
+    "VOICEMAILS": "Talskilaboð",
+    "ADD_VOICEMAIL": "Bættu við talskilaboðum",
+    "EDIT_VOICEMAIL": "Breyta tal skilaboðum",
+    "DELETE_VOICEMAIL": "Eyða talskilaboðum",
+    "FULLNAME": "Fullt nafn",
+    "EMAIL": "Tölvupóstur",
+    "MAILBOX": "Pósthólf",
+    "PASSWORD": "Lykilorð",
+    "CONFIRM_PASSWORD": "Staðfesta lykilorð",
+    "TIMEZONE": "Tímabelti",
+    "ATTACH": "Viðhengi",
+    "ENVELOPE": "Umslag",
+    "DELETE": "Eyða",
+    "EMAILBODY": "Innihald tölvupósts",
+    "EMAILSUBJECT": "Efni tölvupóstst",
+    "MAXSECONDS": "Hámarksfjöldi sekúnda",
+    "MAXMESSAGES": "Hámarks fjöldi skilaboða",
+    "MESSAGES": "Skilaboð",
+    "SORT": "Tegund",
+    "ADD_MUSICONHOLD": "Bættu við tónlist á bið",
+    "MUSICONHOLDS": "tónlist á bið",
+    "EDIT_MUSICONHOLD": "Breyta bið tónlist",
+    "DELETE_MUSICONHOLD": "Eyða tónlist á bið",
+    "DIRECTORY": "Skrá",
+    "AUDIOFILES": "Hljóð skrár",
+    "RECORDINGS": "Upptökur",
     "CHANSPY": "ChanSpy",
-    "PREFIX": "Prefix",
-    "OPTIONS": "Options",
+    "PREFIX": "Forskeyti",
+    "OPTIONS": "Valmöguleikar",
     "AUTH": "Auth",
-    "ADD_CHANSPY": "Add ChanSpy",
-    "EDIT_CHANSPY": "Edit ChanSpy",
-    "DELETE_CHANSPY": "Delete ChanSpy",
-    "AGENTS": "Agents",
-    "TELEPHONES": "Telephones",
-    "QUEUES": "Queues",
-    "QUEUE_CALLS": "Queue Calls",
-    "QUEUE_PARAMETERS": "Queue Parameters",
-    "ABANDONED_CALLS": "Abandoned Calls",
-    "OUTBOUND_CALLS": "Outbound Calls",
+    "ADD_CHANSPY": "Bættu við ChanSpy",
+    "EDIT_CHANSPY": "Breyta ChanSpy",
+    "DELETE_CHANSPY": "Eyða ChanSpy",
+    "AGENTS": "Fulltrúar",
+    "TELEPHONES": "Símar",
+    "QUEUES": "Raðir",
+    "QUEUE_CALLS": "Símtöl í röðinni",
+    "QUEUE_PARAMETERS": "Sillingar á röð",
+    "ABANDONED_CALLS": "Símtöl sem hætta við",
+    "OUTBOUND_CALLS": "Úthringingar",
     "AGI": "Agi",
-    "DIAL": "Dial",
+    "DIAL": "Hringja",
     "CALLYSQUARE": "CallySquare",
-    "INTERNALDIAL": "Internal Dial",
-    "EXTERNALDIAL": "External Dial",
-    "RINGGROUP": "Ring Group",
-    "PLAYBACK": "Playback",
-    "QUEUE": "Queue",
-    "SET": "Set",
-    "VOICEMAIL": "Voicemail",
-    "GOTO": "GoTo",
-    "HANGUP": "Hangup",
-    "CUSTOM": "Custom",
-    "PROJECT": "Cally-Square Project",
+    "INTERNALDIAL": "Innanhús hringing",
+    "EXTERNALDIAL": "Úthringing",
+    "RINGGROUP": "Hringi hópur",
+    "PLAYBACK": "Endurspilun",
+    "QUEUE": "Röð",
+    "SET": "Settu",
+    "VOICEMAIL": "Talskilaboð",
+    "GOTO": "Fara á",
+    "HANGUP": "Leggja á",
+    "CUSTOM": "Sérsniðin",
+    "PROJECT": "Cally-Square verkefni",
     "TECHNOLOGY/RESOURCE": "Technology/Resource",
     "URL": "URL",
-    "EDIT_APP": "Edit Application",
-    "EDIT_INTERVAL": "Edit Interval",
-    "DELETE_APP": "Delete Application",
-    "INTERVALS": "Intervals",
-    "USER": "User",
+    "EDIT_APP": "Breyta forriti",
+    "EDIT_INTERVAL": "Breyta bili",
+    "DELETE_APP": "Eyða umsókn",
+    "INTERVALS": "Bil",
+    "USER": "Notandi",
     "TRUNK": "Trunk",
-    "PHONE": "Phone",
-    "AUDIO_FILES": "Audio Files",
-    "ANNOUNCE_OVERRIDES": "Announce Overrides",
+    "PHONE": "Sími",
+    "AUDIO_FILES": "Hljóð skrár",
+    "ANNOUNCE_OVERRIDES": "Tilkynna yfirskrifað",
     "MACRO": "Macro",
     "GOSUB": "GoSub",
-    "RULE": "Rule",
-    "POSITION": "Position",
-    "ANSWER": "Answer",
-    "VALUE": "Value",
+    "RULE": "Regla",
+    "POSITION": "Staða",
+    "ANSWER": "Svarað",
+    "VALUE": "Gildi",
     "MAILBOX@CONTEXT": "Mailbox@Context",
-    "EXTENSION": "Extension",
-    "PRIORITY": "Priority",
-    "HANGUP_CAUSE": "Hangup Cause",
-    "OUTBOUNDDIAL": "Outbound Dial",
-    "CALLER_ID": "Caller ID",
-    "NO_MESSAGE_AVAILABLE": "No messages available",
-    "NO_SOUND_AVAILABLE": "No sounds available",
-    "VOICERECORDINGS": "Voice Recordings",
+    "EXTENSION": "Innanhúss nr.",
+    "PRIORITY": "Forgangur",
+    "HANGUP_CAUSE": "Ástæaða fyrir því að lagt var á",
+    "OUTBOUNDDIAL": "Úthringing",
+    "CALLER_ID": "Auðkenni hringjara",
+    "NO_MESSAGE_AVAILABLE": "Engin skilaboð fáanleg",
+    "NO_SOUND_AVAILABLE": "Engin tónlist tiltæk",
+    "VOICERECORDINGS": "Tal upptökur",
     "CHANSPIES": "ChanSpy",
-    "VOICE": "Voice",
-    "REALTIME": "Realtime",
-    "ID": "Id",
-    "VOICEMAIL_CONTEXT": "Context",
-    "NO_MOHSOUND_AVAILABLE": "No Music On Hold available",
-    "FILE": "File",
-    "ADD_MOHSOUND": "Add Music On Hold sound",
-    "DOWNLOAD_MOHSOUND": "Download Music On Hold sound",
-    "DELETE_MOHSOUND": "Delete Music On Hold sound",
-    "UNIQUEID": "Unique ID",
-    "AGENT": "Agent",
-    "TYPE": "Type",
-    "RATING": "Rating",
-    "AUDIO": "Audio",
-    "DATE": "Date",
-    "NEW_VOICEQUEUE": "New Voice Queue",
-    "NEW_INBOUNDROUTE": "New Inbound Route",
-    "NEW_OUTBOUNDROUTE": "New Outbound Route",
-    "NEW_INTERNALROUTE": "New Internal Route",
-    "NEW_CONTEXT": "New Context",
-    "NEW_VOICEMAIL": "New Voicemail",
-    "NEW_MUSICONHOLD": "New Music On Hold",
-    "NEW_CHANSPY": "New ChanSpy",
-    "PENALTY": "Penalty",
-    "ADD_TEAM_TO_VOICEQUEUE": "Add Team to Voice Queue",
-    "ADD_AGENT_TO_VOICEQUEUE": "Add Agent to Voice Queue",
-    "EDIT_DIAL": "Edit Dial",
-    "EDIT_AGI": "Edit AGI",
-    "EDIT_INTERNALDIAL": "Edit Internal Dial",
-    "EDIT_EXTERNALDIAL": "Edit External Dial",
-    "EDIT_RINGGROUP": "Edit Ring Group",
-    "EDIT_PLAYBACK": "Edit Playback",
-    "EDIT_QUEUE": "Edit Queue",
-    "EDIT_SET": "Edit Set",
-    "EDIT_GOTO": "Edit GoTo",
-    "EDIT_HANGUP": "Edit Hangup",
-    "EDIT_CUSTOM": "Edit Custom",
-    "DURATION": "Duration",
-    "RECEIVED_AT": "Received At",
-    "YES": "Yes",
-    "NO": "No",
-    "HANGUPCAUSE_1": "1 = Unallocated number",
-    "HANGUPCAUSE_16": "16 = Normal call clearing",
-    "HANGUPCAUSE_17": "17 = User busy",
-    "HANGUPCAUSE_18": "18 = No user responding (telehone device not connected)",
-    "HANGUPCAUSE_21": "21 = Call rejected",
-    "HANGUPCAUSE_22": "22 = Number changed",
-    "HANGUPCAUSE_27": "27 = Destination out of order",
-    "HANGUPCAUSE_38": "38 = Network out of order",
-    "HANGUPCAUSE_41": "41 = Temporary failure",
-    "RANDOM": "Random",
-    "ALPHABETICAL": "Alphabetical",
-    "NO_APPS_AVAILABLE": "No applications available",
-    "DOWNLOAD_VOICERECORDING": "Download Voice Recording",
+    "VOICE": "Tal",
+    "REALTIME": "Rauntími",
+    "ID": "Auðkenni",
+    "VOICEMAIL_CONTEXT": "Samhengi",
+    "NO_MOHSOUND_AVAILABLE": "Engin tónlist á bið til staðar",
+    "FILE": "Skrá",
+    "ADD_MOHSOUND": "Bættu við tónlistar tegund á bið",
+    "DOWNLOAD_MOHSOUND": "Hlaða niður tónlist fyrir á bið",
+    "DELETE_MOHSOUND": "Eyða tegund tónlistar á bið",
+    "UNIQUEID": "Sértækt auðkenni",
+    "AGENT": "Fulltrúi",
+    "TYPE": "Tegund",
+    "RATING": "Einkunn",
+    "AUDIO": "Hljóð",
+    "DATE": "Dags.",
+    "NEW_VOICEQUEUE": "Ný tal biðröð",
+    "NEW_INBOUNDROUTE": "Nýtt innhringi flæði",
+    "NEW_OUTBOUNDROUTE": "Ný úthringi regla",
+    "NEW_INTERNALROUTE": "Nýtt innanhús flæði",
+    "NEW_CONTEXT": "Nýtt samhengi",
+    "NEW_VOICEMAIL": "Ný talskilaboð",
+    "NEW_MUSICONHOLD": "Ný tónlist á bið",
+    "NEW_CHANSPY": "Nýtt ChanSpy",
+    "PENALTY": "Refsing",
+    "ADD_TEAM_TO_VOICEQUEUE": "Bættu við hóp á tal biðröð",
+    "ADD_AGENT_TO_VOICEQUEUE": "Bættu fulltrúa við tal biðröð",
+    "EDIT_DIAL": "Breyta hringjara",
+    "EDIT_AGI": "Breyta AGI",
+    "EDIT_INTERNALDIAL": "Breyta innri hringingu",
+    "EDIT_EXTERNALDIAL": "Breyta utanaðkomandi hringjara",
+    "EDIT_RINGGROUP": "Breyta hringi hóp",
+    "EDIT_PLAYBACK": "Breyta endurspilun",
+    "EDIT_QUEUE": "Breyta biðröð",
+    "EDIT_SET": "Breyta stillingu",
+    "EDIT_GOTO": "Breyta fara á",
+    "EDIT_HANGUP": "Breyta leggja á",
+    "EDIT_CUSTOM": "Breyta sérsniði",
+    "DURATION": "Lengd",
+    "RECEIVED_AT": "Móttekið kl.",
+    "YES": "Já",
+    "NO": "Nei",
+    "HANGUPCAUSE_1": "1 = Óúthlutað númer",
+    "HANGUPCAUSE_16": "16 = Venjuleg símtals hreinsun",
+    "HANGUPCAUSE_17": "17 = Notandi er upptekinn",
+    "HANGUPCAUSE_18": "18 = Enginn notandi svarar (símatæki ekki tengt)",
+    "HANGUPCAUSE_21": "21 = Símtali hafnað",
+    "HANGUPCAUSE_22": "22 = Núeri hefur verið breytt",
+    "HANGUPCAUSE_27": "27 = Áfangastaður er í ólagi",
+    "HANGUPCAUSE_38": "38 = Netið virkar ekki",
+    "HANGUPCAUSE_41": "41 = Tímabundin bilun",
+    "RANDOM": "Handahófi",
+    "ALPHABETICAL": "Stafrófsröð",
+    "NO_APPS_AVAILABLE": "Engin forrit í boði",
+    "DOWNLOAD_VOICERECORDING": "Hlaða niður tal upptöku",
     "DELETE_VOICERECORDING": "Delete Voice Recording",
-    "INTERNAL": "Internal",
-    "PHONE_STATE": "Phone State",
-    "PHONE_STATUS": "Phone Status",
-    "TRUNK_STATUS": "Trunk Status",
-    "REGISTERED": "Registered",
-    "UNREGISTERED": "Unregistered",
-    "LAGGED": "Lagged",
-    "REACHABLE": "Reachable",
-    "UNREACHABLE": "Unreachable",
-    "UNKNOWN": "Unknown",
-    "NOT_INUSE": "Not In Use",
-    "INUSE": "In Use",
-    "BUSY": "Busy",
-    "INVALID": "Invalid",
-    "UNAVAILABLE": "Unavailable",
-    "RINGING": "Ringing",
-    "ONHOLD": "On Hold",
-    "RING": "Ring",
-    "UP": "Up",
-    "INFO": "Info",
+    "INTERNAL": "Innanhúss",
+    "PHONE_STATE": "Staða á síma",
+    "PHONE_STATUS": "Staða á símum",
+    "TRUNK_STATUS": "Trunk Staða",
+    "REGISTERED": "Skráð",
+    "UNREGISTERED": "Óskráð",
+    "LAGGED": "Seinkun",
+    "REACHABLE": "Hægt að ná í",
+    "UNREACHABLE": "Ekki hægt að ná í",
+    "UNKNOWN": "Óþekkt",
+    "NOT_INUSE": "Ekki í notkun",
+    "INUSE": "Í notkun",
+    "BUSY": "Upptekin",
+    "INVALID": "Ógilt",
+    "UNAVAILABLE": "Aðgengilegt",
+    "RINGING": "Hringir",
+    "ONHOLD": "Á bið",
+    "RING": "Hringja",
+    "UP": "Upp",
+    "INFO": "Uppls.",
     "TRUNKS": "Trunks",
-    "REGISTRY": "Registry",
-    "NO_REGISTRY": "No Registry",
-    "LOGGED_IN": "Logged In (SIP Connected)",
-    "PAUSED": "Paused",
-    "WAITING": "Waiting",
-    "TALKING": "Talking",
+    "REGISTRY": "Þjóðskrá",
+    "NO_REGISTRY": "Engin skráning",
+    "LOGGED_IN": "Innskráður (SIP Connected)",
+    "PAUSED": "Hlé",
+    "WAITING": "Bíður",
+    "TALKING": "Talar",
     "DID": "DID",
-    "CALLER": "Caller",
-    "TOTAL": "Total",
-    "ANSWERED": "Answered",
-    "ABANDONED": "Abandoned",
-    "UNMANAGED": "Unmanaged",
-    "AVG_HOLD_TIME": "Avg Hold Time",
-    "AVG_DURATION": "Av Duration",
-    "AVG_BILLABLE": "Avg Billable",
-    "SOURCE": "Source",
-    "DESTINATION": "Destination",
-    "REJECTED": "Rejected",
-    "FAILED": "Failed",
-    "CALLED": "Called",
-    "CONNECTED": "Connected",
-    "NO_RATING": "No rating",
-    "EDIT_VOICERECORDING": "Edit Voice Recording",
-    "APPLICATION_NAME": "Application Name",
-    "ARGUMENTS": "Arguments",
-    "NO_AVAILABLE_INFO": "No Available Info",
-    "ADD_AGENT_TO_QUEUE": "Add Agent To Queue",
-    "DEFAULT_PAUSE": "DEFAULT PAUSE",
-    "PAUSE": "Pause",
-    "UNPAUSE": "End Pause",
-    "REDIRECT_TO_NUMBER": "Redirect To Number",
-    "REDIRECT_TO_AGENT": "Redirect To Agent",
-    "AGENTADD_VOICEQUEUE": "Add Agent To Voice Queue",
-    "APPLICATION": "Application",
-    "FILES": "Files",
-    "FORMAT": "Format",
-    "MODE": "Mode",
-    "RECORD": "Record",
-    "TEAMADD_VOICEQUEUE": "Add Team To Voice Queue",
-    "NEW_MOHSOUND": "New Music On Hold sound",
-    "DOWNLOAD_MESSAGE": "Download",
-    "DELETE_MESSAGE": "Delete",
-    "QUEUE_PARAMS": "Queue Parameters",
-    "TOTAL_OFFERED": "Total Offered",
-    "READY": "Ready",
-    "AGENTADD_QUEUE": "Add Agent To Voice Queue",
-    "AGENTSADD_QUEUE": "Add Agents To Voice Queue",
-    "ALL_TEAMS": "All Teams",
-    "SELECTED_TEAMS": "Selected Teams",
-    "ALL_AGENTS": "All Agents",
-    "SELECTED_AGENTS": "Selected Agents",
-    "CLOSING": "Closing",
-    "TAGS": "Tags",
-    "WAITING_FOR_AGENT": "Waiting For Agents",
-    "EDIT_OUTBOUNDDIAL": "Edit Outbound Dial",
-    "ACCOUNTNAME": "Account Name",
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
-    "OF": "of",
-    "DISPOSITION": "Disposition",
-    "CHAT": "Chat",
-    "MAIL": "Email",
+    "CALLER": "Hringjari",
+    "TOTAL": "Heildar",
+    "ANSWERED": "Svöruð",
+    "ABANDONED": "Hætt við",
+    "UNMANAGED": "Óstýrt",
+    "AVG_HOLD_TIME": "Meðaltals tími á bið",
+    "AVG_DURATION": "Meðal lengd",
+    "AVG_BILLABLE": "Meðal reikningshæft",
+    "SOURCE": "Uppruni",
+    "DESTINATION": "Áfangastaður",
+    "REJECTED": "Hafnað",
+    "FAILED": "Mistókst",
+    "CALLED": "Hringt",
+    "CONNECTED": "Tengdur",
+    "NO_RATING": "Engin einkunn",
+    "EDIT_VOICERECORDING": "Breyta tal upptökum",
+    "APPLICATION_NAME": "Nafn umsóknar",
+    "ARGUMENTS": "Rök",
+    "NO_AVAILABLE_INFO": "Engar upplýsingar fáanlegar",
+    "ADD_AGENT_TO_QUEUE": "Bættu fulltrúa við biðröð",
+    "DEFAULT_PAUSE": "Staðlað hlé",
+    "PAUSE": "Hlé",
+    "UNPAUSE": "Enda hlé",
+    "REDIRECT_TO_NUMBER": "Beina á númer",
+    "REDIRECT_TO_AGENT": "Beina á fulltrúa",
+    "AGENTADD_VOICEQUEUE": "Bættu við fulltrúa í tal biðröð",
+    "APPLICATION": "Umsókn",
+    "FILES": "Skrár",
+    "FORMAT": "Snið",
+    "MODE": "Hamur",
+    "RECORD": "Upptaka",
+    "TEAMADD_VOICEQUEUE": "Bættu við hópi í tal biðröð",
+    "NEW_MOHSOUND": "Ný tónlist á bið",
+    "DOWNLOAD_MESSAGE": "Niðurhal",
+    "DELETE_MESSAGE": "Eyða",
+    "QUEUE_PARAMS": "Stillingar á röð",
+    "TOTAL_OFFERED": "Samtals boðið",
+    "READY": "Tilbúið",
+    "AGENTADD_QUEUE": "Bættu við fulltrúa í tal biðröð",
+    "AGENTSADD_QUEUE": "Bættu við fulltrúm í tal biðröð",
+    "ALL_TEAMS": "Allir hóper",
+    "SELECTED_TEAMS": "Valdir hópar",
+    "ALL_AGENTS": "Allir fulltrúar",
+    "SELECTED_AGENTS": "Valdir fulltrúar",
+    "CLOSING": "Lokar",
+    "TAGS": "Tögg",
+    "WAITING_FOR_AGENT": "Beðið eftir fulltrúa",
+    "EDIT_OUTBOUNDDIAL": "Breyta úthringingu",
+    "ACCOUNTNAME": "Nafn á reikningi",
+    "PAGE": "Bls.",
+    "ROWSPERPAGE": "Raðir á síðu",
+    "OF": "af",
+    "DISPOSITION": "Ráðstöfun",
+    "CHAT": "Spjall",
+    "MAIL": "Tölvupóstur",
     "SMS": "SMS",
     "OPENCHANNEL": "Open Channel",
     "FAX": "Fax",
-    "CLEAR": "Clear",
-    "CALLS": "Calls",
-    "STARTEDAT": "Started At",
-    "ENDEDAT": "Ended At",
-    "TAG": "Tag",
-    "DETAILS": "Details",
-    "BILLABLESECONDS": "Billable seconds",
-    "ANSWEREDAT": "Answered At",
-    "NOTE": "Note",
-    "CLOSE": "Close",
-    "SELECT_DATE": "Select Start Date",
-    "SELECT_TYPE": "Select Type",
-    "VOICEPREFIXES": "Out Prefixes",
-    "NEW_VOICEPREFIX": "New Prefix",
-    "ADD_VOICEPREFIX": "Add Prefix",
-    "EDIT_VOICEPREFIX": "Edit Prefix",
-    "AGENTADD_VOICEPREFIX": "Add Agent to Prefix",
-    "TEAMADD_VOICEPREFIX": "Add Team to Prefix",
-    "DELETE_VOICEPREFIX": "Delete Prefix",
-    "OUTBOUNDROUTE": "Outbound Route",
-    "CALLERIDALL": "Caller Id",
-    "MANDATORYDISPOSITION": "Mandatory disposition",
-    "MANDATORYDISPOSITIONPAUSEID": "Mandatory disposition pause status",
-    "SCREENRECORDING": "Manage Screen Recording",
-    "START_SCREENRECORDING": "Start Screen Recording",
-    "STOP_SCREENRECORDING": "Stop Screen Recording",
-    "TOOLTIP_SCREENRECORDING_ON": "Screen Recording in progress",
-    "TOOLTIP_SCREENRECORDING_OFF": "Screen Recording available",
-    "CANT_DOWNLOAD_THIS_FILE": "Can't download this file",
-    "WRONG_EXTENSION": "The file presents the wrong extension",
-    "FILE_NOT_FOUND": "File not found",
-    "TEAMS_ASSOCIATION": "Teams Association",
-    "TRANSCRIBE": "Transcribe",
-    "TRANSCRIPT": "Transcript",
-    "SENTIMENTANALYSIS": "Sentiment Analysis",
-    "TRANSCRIBESTATUS_COMPLETED": "Completed",
-    "TRANSCRIBESTATUS_IN_PROGRESS": "In progress",
-    "TRANSCRIBESTATUS_FAILED": "Failed",
-    "TRANSCRIBESTATUS_NEW": "New",
-    "TRANSCRIPTANALYSIS": "Transcript & Analysis",
-    "SENTIMENT_POSITIVE": "Positive",
-    "SENTIMENT_NEGATIVE": "Negative",
-    "SENTIMENT_NEUTRAL": "Neutral",
-    "SENTIMENT_MIXED": "Mixed",
+    "CLEAR": "Hreinsa",
+    "CALLS": "Símtöl",
+    "STARTEDAT": "Byrjað kl.",
+    "ENDEDAT": "Hætt kl.",
+    "TAG": "Tögg",
+    "DETAILS": "Upplýsingar",
+    "BILLABLESECONDS": "Ræikningshæfar sekúndur",
+    "ANSWEREDAT": "Svarað kl.",
+    "NOTE": "Ath",
+    "CLOSE": "Loka",
+    "SELECT_DATE": "Veldu upphafsdagsetningu",
+    "SELECT_TYPE": "Veldu tegun",
+    "VOICEPREFIXES": "Forskeyti fyrir út",
+    "NEW_VOICEPREFIX": "Nýtt forskeyti",
+    "ADD_VOICEPREFIX": "Bættu við forskeyti",
+    "EDIT_VOICEPREFIX": "Breyta forskeyti",
+    "AGENTADD_VOICEPREFIX": "Bættu fulltrúa við forskeyti",
+    "TEAMADD_VOICEPREFIX": "Bættu við hópa forskeyti",
+    "DELETE_VOICEPREFIX": "Eyða forskeyti",
+    "OUTBOUNDROUTE": "Úthringi flæði",
+    "CALLERIDALL": "Auðkenni hringjara",
+    "MANDATORYDISPOSITION": "Skilyrt ráðstöfun",
+    "MANDATORYDISPOSITIONPAUSEID": "Staða á skilyrtum hléum",
+    "SCREENRECORDING": "Stjórna skjá upptökum",
+    "START_SCREENRECORDING": "Byrja skjá upptöku",
+    "STOP_SCREENRECORDING": "Stoppa skjá upptöku",
+    "TOOLTIP_SCREENRECORDING_ON": "Skjáupptaka í gangi",
+    "TOOLTIP_SCREENRECORDING_OFF": "Skjá upptaka möguleg",
+    "CANT_DOWNLOAD_THIS_FILE": "Getur ekki hlaðið niður þessari skrá",
+    "WRONG_EXTENSION": "Skráin sýnir ranga endingu",
+    "FILE_NOT_FOUND": "Fann ekki skrána",
+    "TEAMS_ASSOCIATION": "Fulltrúar í hópum",
+    "TRANSCRIBE": "Afrita",
+    "TRANSCRIPT": "Afrita",
+    "SENTIMENTANALYSIS": "Greining á tilfinningu",
+    "TRANSCRIBESTATUS_COMPLETED": "Lokið",
+    "TRANSCRIBESTATUS_IN_PROGRESS": "Í gangi",
+    "TRANSCRIBESTATUS_FAILED": "Mistókst",
+    "TRANSCRIBESTATUS_NEW": "Nýtt",
+    "TRANSCRIPTANALYSIS": "Afrita og greina",
+    "SENTIMENT_POSITIVE": "Jákvætt",
+    "SENTIMENT_NEGATIVE": "Neikvætt",
+    "SENTIMENT_NEUTRAL": "Hlutlaust",
+    "SENTIMENT_MIXED": "Blandað",
     "RUNTRANSCRIBE_VOICERECORDING": "Run Transcribe",
-    "RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Run Transcribe&Sentiment",
-    "RUNSENTIMENT_VOICERECORDING": "Run Sentiment",
-    "SENTIMENT": "Sentiment",
-    "SERVICELEVEL": "Service level",
-    "MAXCAPACITY": "Max capacity",
-    "WORKING": "Working",
-    "NO_AGENT_AVAILABLE": "No agent available",
-    "CALL_NUMBER_REDIRECT": "Which number do you want to redirect the call to?",
+    "RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Keyra umritun&viðhorf",
+    "RUNSENTIMENT_VOICERECORDING": "Keyra viðhorg",
+    "SENTIMENT": "Tilfinning",
+    "SERVICELEVEL": "Þjónustustig",
+    "MAXCAPACITY": "Hámarksgeta",
+    "WORKING": "Í vinnslu",
+    "NO_AGENT_AVAILABLE": "Engin fulltrúi laus",
+    "CALL_NUMBER_REDIRECT": "Í hvaða númer viltu beina símtalinu?",
     "LEGEND": {
-      "CUSTOM_APPLICATION": "(*) - Custom application"
+      "CUSTOM_APPLICATION": "(*) - Sérsniðin forrit"
     },
     "ERRORS": {
-      "PROJECT_REQUIRED": "Mandatory field",
-      "TRUNK_REQUIRED": "Mandatory field",
-      "VARIABLE_REQUIRED": "Mandatory field",
-      "NAME_REQUIRED": "Mandatory field",
-      "APPLICATION_NAME_REQUIRED": "Mandatory field",
-      "TIMEOUT_REQUIRED": "Mandatory field",
-      "PHONENUMBER_REQUIRED": "Mandatory field",
-      "CONTEXT_REQUIRED": "Mandatory field",
-      "DESTINATIONPATTERN_REQUIRED": "Mandatory field",
-      "FULLNAME_REQUIRED": "Mandatory field",
-      "EMAIL_REQUIRED": "Mandatory field",
-      "EMAIL_MUST_VALID": "Wrong format",
-      "MAILBOX_REQUIRED": "Mandatory field",
-      "PASSWORD_REQUIRED": "Mandatory field",
-      "CONFIRM_NOT_MATCH": "The passwords don't match",
-      "TIMEZONE_REQUIRED": "Mandatory field",
-      "PREFIX_REQUIRED": "Mandatory field",
-      "OPTIONS_REQUIRED": "Mandatory field",
-      "AFTERCALLWORKDURATION_REQUIRED": "Mandatory field",
-      "TECHNOLOGY/RESOURCE_REQUIRED": "Mandatory field",
-      "PHONE_REQUIRED": "Mandatory field",
-      "VALUE_REQUIRED": "Mandatory field",
-      "EXTENSION_REQUIRED": "Mandatory field",
-      "PRIORITY_REQUIRED": "Mandatory field",
-      "APPLICATION_REQUIRED": "Mandatory field",
-      "OUTBOUNDROUTE_REQUIRED": "Mandatory field",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "NAME_MUST_VALID_PATTERN": "Wrong format",
-      "CALLERIDALL_MUST_VALID_PATTERN": "Wrong format",
-      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Mandatory field",
-      "CALLER_ID_MUST_VALID_PATTERN": "Wrong format",
-      "PENALTY_REQUIRED": "You must specify a value for penalty"
+      "PROJECT_REQUIRED": "Skilyrtur reitur",
+      "TRUNK_REQUIRED": "Skilyrtur reitur",
+      "VARIABLE_REQUIRED": "Skilyrtur reitur",
+      "NAME_REQUIRED": "Skilyrtur reitur",
+      "APPLICATION_NAME_REQUIRED": "Skilyrtur reitur",
+      "TIMEOUT_REQUIRED": "Skilyrtur reitur",
+      "PHONENUMBER_REQUIRED": "Skilyrtur reitur",
+      "CONTEXT_REQUIRED": "Skilyrtur reitur",
+      "DESTINATIONPATTERN_REQUIRED": "Skilyrtur reitur",
+      "FULLNAME_REQUIRED": "Skilyrtur reitur",
+      "EMAIL_REQUIRED": "Skilyrtur reitur",
+      "EMAIL_MUST_VALID": "Rangt snið",
+      "MAILBOX_REQUIRED": "Skilyrtur reitur",
+      "PASSWORD_REQUIRED": "Skilyrtur reitur",
+      "CONFIRM_NOT_MATCH": "Lykilorðin stemma ekki",
+      "TIMEZONE_REQUIRED": "Skilyrtur reitur",
+      "PREFIX_REQUIRED": "Skilyrtur reitur",
+      "OPTIONS_REQUIRED": "Skilyrtur reitur",
+      "AFTERCALLWORKDURATION_REQUIRED": "Skilyrtur reitur",
+      "TECHNOLOGY/RESOURCE_REQUIRED": "Skilyrtur reitur",
+      "PHONE_REQUIRED": "Skilyrtur reitur",
+      "VALUE_REQUIRED": "Skilyrtur reitur",
+      "EXTENSION_REQUIRED": "Skilyrtur reitur",
+      "PRIORITY_REQUIRED": "Skilyrtur reitur",
+      "APPLICATION_REQUIRED": "Skilyrtur reitur",
+      "OUTBOUNDROUTE_REQUIRED": "Skilyrtur reitur",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "NAME_MUST_VALID_PATTERN": "Rangt snið",
+      "CALLERIDALL_MUST_VALID_PATTERN": "Rangt snið",
+      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Skilyrtur reitur",
+      "CALLER_ID_MUST_VALID_PATTERN": "Rangt snið",
+      "PENALTY_REQUIRED": "Þú verður að tilgreina gildi fyrir refsingu"
     },
     "HELP": {
-      "TIMEOUT": "How many seconds to ring a device",
-      "MAXLENGTH": "Maximum number of callers allowed to wait in a queue: zero means unlimited",
-      "RETRY": "Time in seconds to wait before calling the next agent in queue when the timeout is expired",
-      "WRAPUPTIME": "Time in seconds to keep a queue member unavailable after completing a call",
-      "WEIGHT": "Weight of a queue in order to define priority if members are associated with multiple queues",
-      "JOINWHENEMPTY": "Used to control whether a caller is passed to a queue when no members are available",
-      "LEAVEWHENEMPTY": "Used to control whether callers are made leave the queue when no members are available to take calls",
-      "ANNOUNCEFREQUENCY": "How often to announce the caller’s position and/or estimated hold time in the queue (zero to disable)",
-      "MINANNOUNCEFREQUENCY": "Minimum announcement frequency (useful when the caller’s position changes frequently)",
-      "PERIODICANNOUNCEFREQUENCY": "Frequency of periodic announcements to the caller",
-      "ANNOUNCEPOSITIONLIMIT": "Used if announce-position is defined as either 'limit' or 'more'",
-      "AFTERCALLWORKDURATION": "Pause length triggered by the After Call Work option",
-      "MEMBERDELAY": "Inserts a delay prior to the caller and agent in queue get connected",
-      "MUSICONHOLD": "Sets the music class to use for a particular queue",
-      "ANNOUNCETOAGENT": "Play an announcement to the agent answering the call (typically to let him know what queue the caller is coming from)",
-      "RANDOMPERIODICANNOUNCE": "If yes, the defined periodic announcements will be played random",
-      "ANNOUNCEHOLDTIME": "Plays the estimated hold time along with the periodic announcements (Yes/No/Once)",
-      "ANNOUNCECALLERPOSITION": "Used to define if the caller’s position in the queue should be announced: No=never; Yes=always; Limit=only if it is within the limit defined by announce-position-limit; More= only if it is beyond the value defined by announce-position-limit",
-      "REPORTHOLDTIMEAGENT": "Enables reporting caller’s hold time to the agent in queue prior to connection",
-      "PERIODICANNOUNCE": "Set of periodic announcements to be played (in the order)",
-      "HOLDTIMEANNOUNCE": "Choose a Sound defined in Tools. Default=“Hold time”. Undefined=no announcement",
-      "YOUARENEXTANNOUNCE": "Choose a Sound defined in Tools. Default=“You are now first in line”. Undefined=no announcement",
-      "THEREAREANNOUNCE": "Choose a Sound defined in Tools. Default=“There are”. Undefined=no announcement",
-      "WAITINGCALLSANNOUNCE": "Choose a Sound defined in Tools. Default=“calls waiting”. Undefined=no announcement",
-      "ESTIMATEDHOLDTIMEANNOUNCE": "Choose a Sound defined in Tools. Default=“The current estimated hold time is”. Undefined=no announcement",
-      "MINUTESANNOUNCE": "Choose a Sound defined in Tools. Default=“minutes”. Undefined=no announcement",
-      "MINUTEANNOUNCE": "Choose a Sound defined in Tools. Default=“minute”. Undefined=no announcement",
-      "SECONDSANNOUNCE": "Choose a Sound defined in Tools. Default=“seconds”. Undefined=no announcement",
-      "THANKYOUANNOUNCE": "Choose a Sound defined in Tools. Default=“Thank you for your patience”. Undefined=no announcement",
-      "AFTERCALLWORK": "If enabled, the agent will be set on Pause after completing a call",
-      "AUTOPAUSE": "Enables/disables the automatic pause of agents who fail to answer a call. If enabled it causes the agent to be paused in all queues he belongs to",
-      "RINGINUSE": "To avoid/allow sending calls to members whose status is In Use",
-      "TIMEOUTRESTART": "If yes, this resets the timeout for an agent to answer when either a BUSY or CONGESTION status is received from the channel",
-      "MONITORFORMAT": "Specifies the format of the recording file. If it set to 'inactive', calls will not be recorded",
-      "CONTEXT": "Allows a caller to exit the queue by pressing a single DTMF digit. If a context is specified and the caller enters a number, that digit will attempt to be matched in the context specified, and dialplan execution will continue there",
-      "SETINTERFACEVARIABLES": "If set to yes, just prior to the caller being connected with a queue agent some variables will be set (for more information see wiki docs)",
-      "SETQUEUEVARIABLES": "If set to yes, just prior to the caller being connected with a queue agent and leaving the queue, some variables will be set (for more information, see wiki docs)",
-      "SETQUEUEENTRYVARIABLES": "If set to yes, just prior to the caller being connected with a queue agent some variables will be set (for more information, see wiki docs)",
-      "RECORDING": "Enable call recording",
-      "VOICEMAIL_CONTEXT": "The context of the relative extension",
-      "NAME": "Only numbers, letters and specific characters (._) are supported",
-      "CALLERIDALL": "Supported format: \"CallerId\" &lt;number&gt;",
-      "CALLER_ID": "Supported format: \"CallerId\" &lt;number&gt;",
-      "MANDATORYDISPOSITIONPAUSEID": "Pause status to set during mandatory disposition",
-      "SERVICELEVEL": "Second settings for service level (default=0, no SL). Used for service level statistics (calls answered within service level time frame)",
-      "SAVE_ROUTES": "The routing has been modified. Remember to save if you don't want to lose your changes."
+      "TIMEOUT": "Í hversu margar sekúndur á að hringja í tækið",
+      "MAXLENGTH": "Hámarksfjöldi þeirra sem hringja inn mega bíða í biðröð: núll þýðir ótakmarkað",
+      "RETRY": "Tími í sekúndum til að bíða áður en hringt er í næsta fulltrúa í biðröð þegar tíminn er runninn út",
+      "WRAPUPTIME": "Tími í sekúndum til að halda meðlimi í biðröð ótiltækum eftir að símtali er lokið \"Wrapup\"",
+      "WEIGHT": "Vægi biðraðar til að skilgreina forgang ef meðlimir eru tengdir við margar biðraðir",
+      "JOINWHENEMPTY": "Notað til að stjórna því hvort hringjandi sé áframsendur í biðröð þegar engir meðlimir (fulltrúar) eru tiltækir",
+      "LEAVEWHENEMPTY": "Notað til að stjórna því hvort hringjendur fari úr biðröðinni þegar engir meðlimir eru tiltækir til að svara símtölum",
+      "ANNOUNCEFREQUENCY": "Hversu oft á að tilkynna staðsetningu þess sem hringir og/eða áætlaðan biðtíma í biðröðinni (núll til að slökkva á)",
+      "MINANNOUNCEFREQUENCY": "Lágmarks tíðni tilkynninga (gagnlegt þegar staða þess sem hringir breytist oft)",
+      "PERIODICANNOUNCEFREQUENCY": "Tíðni reglubundinna tilkynninga til þess sem hringir",
+      "ANNOUNCEPOSITIONLIMIT": "Til að tilkynna hámark á fjölda í biðröðinni",
+      "AFTERCALLWORKDURATION": "Lengd hlés sem ræst af valkostinum eftir samtali Wrapup tíma valmöguleikanum",
+      "MEMBERDELAY": "Setur inn töf áður en hringir og fulltrúi í biðröð tengjast",
+      "MUSICONHOLD": "Stillir tónlistarflokkinn til að nota fyrir tiltekna biðröð",
+      "ANNOUNCETOAGENT": "Spilaðu tilkynningu til fulltrúans sem svarar símtalinu (venjulega til að láta hann vita úr hvaða röð sá sem hringir kemur úr)",
+      "RANDOMPERIODICANNOUNCE": "Ef já, þá verða skilgreindar reglubundnar tilkynningar spilaðar af handahófi",
+      "ANNOUNCEHOLDTIME": "Spilar áætlaðan biðtíma ásamt reglubundnum tilkynningum (Já/Nei/Einu sinni)",
+      "ANNOUNCECALLERPOSITION": "Notað til að skilgreina hvort tilkynna eigi um stöðu þess sem hringir í biðröðinni: Nei=aldrei; Já=alltaf; Limit=aðeins ef það er innan þeirra marka sem skilgreint er af tilkynna-stöðu-mörk; Meira= aðeins ef það er umfram gildið sem skilgreint er af tilkynna-stöðu-mörk",
+      "REPORTHOLDTIMEAGENT": "Gerir kleift að tilkynna biðtíma þess sem hringir inn til fulltrúa sem svarar áður en tengingin hefst",
+      "PERIODICANNOUNCE": "Sett af reglubundnum tilkynningum sem á að spila (í röð)",
+      "HOLDTIMEANNOUNCE": "Veldu hljóð sem er skilgreint í Tools. Sjálfgefið = \"Biðtími\". Óskilgreint=engin tilkynning",
+      "YOUARENEXTANNOUNCE": "Veldu hljóð sem er skilgreint í Tools. Default=“Þú ert nú fyrstur í röðinni”. Óskilgreint=engin tilkynning",
+      "THEREAREANNOUNCE": "Veldu hljóð sem er skilgreint í Tools. Default = \"Það eru til\". Óskilgreint=engin tilkynning",
+      "WAITINGCALLSANNOUNCE": "Veldu hljóð sem er skilgreint í Tools. Default = \"símtöl í bið\". Óskilgreint=engar tilkynningar",
+      "ESTIMATEDHOLDTIMEANNOUNCE": "Veldu hljóð sem er skilgreint í Tools. Default=“Núverandi áætlaður biðtími er”. Óskilgreint=engin tilkynningChoose a Sound defined in Tools. ",
+      "MINUTESANNOUNCE": "Veldu hljóð sem er skilgreint í Tools. Sjálfgefið = \"mínútur\". Óskilgreint=engin tilkynning",
+      "MINUTEANNOUNCE": "Veldu hljóð sem er skilgreint í Tools. Sjálfgefið = \"mínúta\". Óskilgreint=engin tilkynning",
+      "SECONDSANNOUNCE": "Veldu hljóð sem er skilgreint í Tools. Sjálfgefið = \"sekúndur\". Óskilgreint=engin tilkynning",
+      "THANKYOUANNOUNCE": "Veldu hljóð sem er skilgreint í Tools. Default=“Þakka þér fyrir þolinmæðina”. Óskilgreint=engin tilkynning",
+      "AFTERCALLWORK": "Ef virkt verður fulltrúinn settur á hlé eftir að símtali er lokið",
+      "AUTOPAUSE": "\nVirkjar/afvirkjar á sjálfvirkru hléi fulltrúans sem svara ekki símtali. Ef það er virkt veldur það að fulltrúinn er í biðröð í öllum biðröðum sem hann tilheyrir",
+      "RINGINUSE": "Til að forðast/leyfa símtöl til meðlima (fulltrúa) sem eru uppteknir",
+      "TIMEOUTRESTART": "Ef já, þá endurstillir þetta tímamörk fyrir fulltrúa til að svara þegar annaðhvort ANNAРeða Congestion staða er móttekin frá rásinni",
+      "MONITORFORMAT": "Tilgreinir snið upptökuskrárinnar. Ef það er stillt á „óvirkt“ verða símtöl ekki tekin upp",
+      "CONTEXT": "Leyfir viðmælanda að fara úr biðröðinni með því að ýta á einn DTMF tölustaf. Ef samhengi er tilgreint og sá sem hringir slær inn númer mun sá tölustafur reyna að passa saman í því samhengi sem tilgreint er og keyrsla hringingaráætlunar heldur áfram þar",
+      "SETINTERFACEVARIABLES": "Ef stillt er á já, rétt áður en sá sem hringir er tengdur við biðröðina eru nokkrar breytur stilltar (fyrir frekari upplýsingar sjá wiki skjöl)",
+      "SETQUEUEVARIABLES": "Ef stillt er á já, rétt áður en sá sem hringir er tengdur við biðröð og yfirgefur biðröðina, verða nokkrar breytur stilltar (fyrir frekari upplýsingar, sjá wiki skjöl)",
+      "SETQUEUEENTRYVARIABLES": "Ef stillt er á já, rétt áður en viðmælandi er tengdur við biðröð fulltrúans verða nokkrar breytur stilltar (fyrir frekari upplýsingar, sjá wiki skjöl",
+      "RECORDING": "Virkja upptöku símtala",
+      "VOICEMAIL_CONTEXT": "Samhengi hlutfallslegs innanhúsnúmers",
+      "NAME": "Aðeins tölur, stafir og sérstakir stafir (._) eru studdir",
+      "CALLERIDALL": "Stutt snið: \"CallerId\" <númer>",
+      "CALLER_ID": "Stutt snið: \"CallerId\" <númer>",
+      "MANDATORYDISPOSITIONPAUSEID": "Gera hlé á stöðu til að stilla meðan á skilyrtu hléi stendur",
+      "SERVICELEVEL": "Önnur stilling fyrir þjónustustig (sjálfgefið=0, engin SL). Notað fyrir tölfræði þjónustustigs (símtölum svarað innan þjónustustigs tímaramma)",
+      "SAVE_ROUTES": "Flæðinu hefur verið breytt. Mundu að vista ef þú vilt ekki missa breytingarnar."
     },
     "NOTIFICATIONS": {
-      "EXTENSION_CREATED_SUCCESS_TITLE": "Route successfully created",
-      "EXTENSION_SAVED_SUCCESS_TITLE": "Route successfully saved",
-      "EXTENSION_DELETE_TITLE": "Are you sure want to delete the route?",
-      "EXTENSION_DELETE_MESSAGE": "{{ name }} will be deleted",
-      "EXTENSION_DELETED_SUCCESS_TITLE": "Route successfully deleted",
-      "EXTENSIONS_DELETE_TITLE": "Are you sure want to delete the selected routes?",
-      "EXTENSIONS_DELETE_MESSAGE": "{{ total }} routes will be deleted",
-      "ROUTING_APPLICATION_DELETE_TITLE": "Are you sure want to delete the application?",
-      "ROUTING_APPLICATION_DELETE_MESSAGE": "{{ name }} will be deleted",
-      "ROUTING_APPLICATIONS_DELETE_TITLE": "Are you sure want to delete the selected applications?",
-      "ROUTING_APPLICATIONS_DELETE_MESSAGE": "{{ total }} applications will be deleted",
-      "CALLYSQUARE_PROJECTS_GET_ERROR": "Unable to retrieve any CallySquare project",
-      "TRUNKS_GET_ERROR": "Unable to retrieve any trunk",
-      "VOICE_CONTEXTS_GET_ERROR": "Unable to retrieve any voice context",
-      "QUEUES_GET_ERROR": "Unable to retrieve any queue",
-      "SOUNDS_GET_ERROR": "Unable to retrieve any sound",
-      "USERS_GET_ERROR": "Unable to retrieve any user",
-      "VARIABLES_GET_ERROR": "Unable to retrieve any variable",
-      "VOICEMAILS_GET_ERROR": "Unable to retrieve any voicemail",
-      "TAGS_GET_ERROR": "Unable to retrieve any tag",
-      "INTERVALS_GET_ERROR": "Unable to retrieve any interval",
-      "CALL_HANGUP_SUCCESS": "Call hung up successfully",
-      "CALL_REDIRECT_SUCCESS": "Call redirected successfully"
+      "EXTENSION_CREATED_SUCCESS_TITLE": "Tókst að stofna flæði",
+      "EXTENSION_SAVED_SUCCESS_TITLE": "Tókst að geyma flæði",
+      "EXTENSION_DELETE_TITLE": "Ertu viss um að þú vilir eyða völdum flæðum?",
+      "EXTENSION_DELETE_MESSAGE": "{{ name }} verður eytt",
+      "EXTENSION_DELETED_SUCCESS_TITLE": "Tókst að eyða flæði",
+      "EXTENSIONS_DELETE_TITLE": "Ertu viss um að þú viljir eyða völdum flæðum?",
+      "EXTENSIONS_DELETE_MESSAGE": "{{ samtals }} flæðum verður eytt",
+      "ROUTING_APPLICATION_DELETE_TITLE": "ertu viss um að þú viljir eyða forritinu?",
+      "ROUTING_APPLICATION_DELETE_MESSAGE": "{{ name }} verður eytt",
+      "ROUTING_APPLICATIONS_DELETE_TITLE": "Ertu viss um að þú viljir eða völdum forritum?",
+      "ROUTING_APPLICATIONS_DELETE_MESSAGE": "{{ total }} forritum verður eytt",
+      "CALLYSQUARE_PROJECTS_GET_ERROR": "Ekki er hægt að sækja neitt CallySquare verkefni",
+      "TRUNKS_GET_ERROR": "Ekki tókst að endurheimta trunk",
+      "VOICE_CONTEXTS_GET_ERROR": "Ekki tókst að endurheimta tal samhengi",
+      "QUEUES_GET_ERROR": "Ekki tókst að sækja biðraðir",
+      "SOUNDS_GET_ERROR": "Ekki tókst að endurheimta hljóð",
+      "USERS_GET_ERROR": "Ekki tókst að endurheimta notendur",
+      "VARIABLES_GET_ERROR": "Ekki tókst að endurheimta breytur",
+      "VOICEMAILS_GET_ERROR": "Ekki tókst að endurheimta talskilaboð",
+      "TAGS_GET_ERROR": "Ekki tókst að endurheimta tögg",
+      "INTERVALS_GET_ERROR": "Ekki er hægt að sækja neitt bil",
+      "CALL_HANGUP_SUCCESS": "Tókst að leggja á",
+      "CALL_REDIRECT_SUCCESS": "Tókst að áframsenda símtal"
     }
   }
 }
index 7e2c6e6..4f927e3 100644 (file)
@@ -3,17 +3,17 @@
     "LOGIN_TIME": "Tempo de Login",
     "PAUSE_TIME": "Tempo de Pausa",
     "ABANDONEDCALLS": "Chamadas Abandonadas",
-    "WAITING_FOR_AGENTS": "Esperando por agentes",
+    "WAITING_FOR_AGENTS": "Aguardando por agentes",
     "ACTIVE": "Ativo",
-    "NO_AGENT_ONLINE": "Nenhum aAente Online",
+    "NO_AGENT_ONLINE": "Nenhum Agente Online",
     "PARTIALPAUSE": "Pausa Parcial",
     "STATUS": "Status",
-    "TIMER": "Cronômetro",
+    "TIMER": "Timer",
     "ALL": "Todos",
     "IDLE": "Disponível",
     "EDIT_TRUNK": "Editar Tronco",
-    "GOTO_VOICEQUEUE": "Ir para Filas de Voz em Tempo Real",
-    "GOTOREALTIME_VOICEQUEUE": "Ir para Filas de Voz em Tempo Real",
+    "GOTO_VOICEQUEUE": "Visualizar Fila de Voz em Tempo Real",
+    "GOTOREALTIME_VOICEQUEUE": "Visualizar Fila de Voz em Tempo Real",
     "NAME": "Nome",
     "LOGOUT": "Logout",
     "VOICEQUEUES": "Filas de Voz",
     "EDIT_VOICEDISPOSITION": "Editar Qualificação de Voz",
     "EDIT_VOICEQUEUE": "Editar Fila de Voz",
     "DELETE_VOICEQUEUE": "Excluir Fila de Voz",
-    "MOHSOUNDS": "Moh Sounds",
+    "MOHSOUNDS": "Áudios de Música de Espera",
     "STRATEGY": "Estratégia",
     "DESCRIPTION": "Descrição",
     "ADD_VOICEQUEUE": "Adicionar Fila de Voz",
     "CREATED_AT": "Criado em",
-    "CANT_PLAY_GSM_AUDIO_FILES": "Não é possível reproduzir arquivos de áudio gsm ou wav49",
+    "CANT_PLAY_GSM_AUDIO_FILES": "Não é possível reproduzir arquivos de áudio no formato gsm ou wav49",
     "APPLICATIONS_LIST": "Lista de Aplicações",
     "LEGEND": {
       "CUSTOM_APPLICATION": "(*) - Aplicativo Personalizado"
       "PENALTY_REQUIRED": "Você deve especificar um valor para a penalidade"
     },
     "GENERAL": "Geral",
-    "TIMEOUT": "Tempo eEgotado",
+    "TIMEOUT": "Timeout",
     "MAXLENGTH": "Tamanho Máximo",
     "RETRY": "Tente Novamente",
-    "WRAPUPTIME": "Tempo de Qualificação",
+    "WRAPUPTIME": "Tempo de Pós-atendimento",
     "WEIGHT": "Peso",
-    "JOINWHENEMPTY": "Juntar quando Vazio",
-    "LEAVEWHENEMPTY": "Sair quando Vazio",
+    "JOINWHENEMPTY": "Juntar quando vazio",
+    "LEAVEWHENEMPTY": "Desligar quando vazio",
     "HELP": {
-      "TIMEOUT": "Tempo em segundos ficar chamando (toques) um dispositivo",
-      "MAXLENGTH": "Número máximo de chamadores que podem esperar em uma fila: zero significa ilimitado",
-      "RETRY": "Tempo em segundos para aguardar antes de chamar o próximo agente quando o tempo limite expirar",
+      "TIMEOUT": "Quantos segundos ficará tocando um device (tempo de toque)",
+      "MAXLENGTH": "Número máximo de clientes que podem esperar em uma fila: zero significa ilimitado",
+      "RETRY": "Tempo em segundos para aguardar antes de chamar o próximo agente quando o timeout expirar",
       "WRAPUPTIME": "Tempo em segundos para manter um agente indisponível depois de concluir uma chamada",
       "WEIGHT": "Peso para definir a prioridade se os agentes estiverem associados a várias filas",
-      "JOINWHENEMPTY": "Usado para controlar se um chamador é passado para fila quando nenhum agente está disponível",
-      "LEAVEWHENEMPTY": "Usado para controlar se os chamadores serão passados para fila quando nenhum agente está disponível",
-      "ANNOUNCEFREQUENCY": "Com que frequência anunciará a posição do chamador e / ou o tempo estimado de espera na fila (zero para desativar)",
+      "JOINWHENEMPTY": "Usado para controlar se um cliente é passado para fila quando nenhum agente está logado",
+      "LEAVEWHENEMPTY": "Usado para controlar se desligará todos os clientes que estão esperando na fila caso todos os agentes desloguem ",
+      "ANNOUNCEFREQUENCY": "Com que frequência anunciará a posição do cliente e / ou o tempo estimado de espera na fila (zero para desativar)",
       "MINANNOUNCEFREQUENCY": "Frequência mínima de anúncio (útil quando a posição do chamador muda com frequência)",
-      "PERIODICANNOUNCEFREQUENCY": "Frequência de anúncios periódicos para o chamador",
-      "ANNOUNCEPOSITIONLIMIT": "Usado se a posição de anúncio for definida como \"limite\" ou \"mais\"",
-      "AFTERCALLWORKDURATION": "Duração da Pausa configurado pela opção Após Chamada",
-      "MEMBERDELAY": "Insere um atraso antes de o chamador e o agente na fila se conectarem",
+      "PERIODICANNOUNCEFREQUENCY": "Frequência de anúncios periódicos para o cliente",
+      "ANNOUNCEPOSITIONLIMIT": "Usado se o anúncio de posiçao do for definida como \"limit\" ou \"more\"",
+      "AFTERCALLWORKDURATION": "Duração da Pausa configurado na de Pós-atendimento (ACW)",
+      "MEMBERDELAY": "Insere um atraso antes de o cliente e o agente se conectarem",
       "MUSICONHOLD": "Define a Música de Espera",
-      "ANNOUNCETOAGENT": "Reproduzir um anúncio para o agente que atende a chamada (geralmente para que ele saiba de qual fila o chamador está vindo)",
+      "ANNOUNCETOAGENT": "Reproduzir um anúncio para o agente (geralmente para que ele saiba de qual fila o cliente está vindo)",
       "RANDOMPERIODICANNOUNCE": "Se sim, os anúncios periódicos definidos serão reproduzidos aleatoriamente",
-      "ANNOUNCEHOLDTIME": "Reproduz o tempo de espera estimado junto com os anúncios periódicos (Sim / Não / Uma vez)",
-      "ANNOUNCECALLERPOSITION": "Usado para ativar anúncio de posição do chamador na fila: No = nunca; Yes = sempre; Limite = somente se estiver dentro do valor definido pelo limite de posição de anúncio; Mais = apenas se estiver além do valor definido pelo limite de posição de anúncio.",
-      "REPORTHOLDTIMEAGENT": "Permite que o tempo de espera do chamador seja informado ao agente antes da conexão",
+      "ANNOUNCEHOLDTIME": "Reproduz o tempo de espera estimado junto com os anúncios periódicos (Yes/No/Once)",
+      "ANNOUNCECALLERPOSITION": "Usado para ativar anúncio de posição do cliente na fila: No = nunca; Yes = sempre; Limite = somente se estiver dentro do valor definido; More = apenas se estiver além do valor definido.",
+      "REPORTHOLDTIMEAGENT": "Permite que o tempo de espera do cliente seja informado ao agente antes da conexão",
       "PERIODICANNOUNCE": "Conjunto de anúncios periódicos a serem reproduzidos (na ordem)",
-      "HOLDTIMEANNOUNCE": "Escolha um som definido em ferramentas. Padrão = “Tempo de Espera”. Indefinido = sem anúncio",
-      "YOUARENEXTANNOUNCE": "Escolha um áudio definido em ferramentas. Padrão = “Você agora é o primeiro da fila”. Indefinido = sem anúncio",
-      "THEREAREANNOUNCE": "Escolha um áudio definido em ferramentas. Padrão = “Existem”. Indefinido = sem anúncio",
-      "WAITINGCALLSANNOUNCE": "Escolha um aúdio definido em ferramentas. Padrão = “chamadas em espera”. Indefinido = sem anúncio",
-      "ESTIMATEDHOLDTIMEANNOUNCE": "Escolha um som definido em ferramentas. Padrão = “O tempo de espera estimado atual é“. Indefinido = sem anúncio",
-      "MINUTESANNOUNCE": "Escolha um áudio definido em ferramentas. Padrão = “minutos”. Indefinido = sem anúncio",
-      "MINUTEANNOUNCE": "Escolha um áudio definido em ferramentas. Padrão = “minuto”. Indefinido = sem anúncio",
-      "SECONDSANNOUNCE": "Escolha um áudio definido em ferramentas. Padrão = “segundos”. Indefinido = sem anúncio",
-      "THANKYOUANNOUNCE": "Escolha um áudio definido em ferramentas. Padrão = “Obrigado pela sua paciência”. Indefinido = sem anúncio",
-      "AFTERCALLWORK": "Se ativado, o agente entrará em Pausa após desligar",
-      "AUTOPAUSE": "Ativar / desativar a pausa automática para agentes que não atendem chamada. Se ativado, faz com que o agente entre em pausa em todas as filas às quais ele pertence.",
+      "HOLDTIMEANNOUNCE": "Escolha um áudio definido no módulo de Ferramentas. Padrão = “Tempo de Espera”. Indefinido = sem anúncio",
+      "YOUARENEXTANNOUNCE": "Escolha um áudio definido no módulo de Ferramentas. Padrão = “Você agora é o primeiro da fila”. Indefinido = sem anúncio",
+      "THEREAREANNOUNCE": "Escolha um áudio definido no módulo de Ferramentas. Padrão = “Existem”. Indefinido = sem anúncio",
+      "WAITINGCALLSANNOUNCE": "Escolha um aúdio definido no módulo de Ferramentas. Padrão = “chamadas em espera”. Indefinido = sem anúncio",
+      "ESTIMATEDHOLDTIMEANNOUNCE": "Escolha um áudio definido no módulo de Ferramentas. Padrão = “O tempo de espera estimado atual é“. Indefinido = sem anúncio",
+      "MINUTESANNOUNCE": "Escolha um áudio definido no módulo de Ferramentas. Padrão = “minutos”. Indefinido = sem anúncio",
+      "MINUTEANNOUNCE": "Escolha um áudio definido no módulo de Ferramentas. Padrão = “minuto”. Indefinido = sem anúncio",
+      "SECONDSANNOUNCE": "Escolha um áudio definido no módulo de Ferramentas. Padrão = “segundos”. Indefinido = sem anúncio",
+      "THANKYOUANNOUNCE": "Escolha um áudio definido no módulo de Ferramentas. Padrão = “Obrigado pela sua paciência”. Indefinido = sem anúncio",
+      "AFTERCALLWORK": "Se habilitado, o agente entrará em Pausa após desligar",
+      "AUTOPAUSE": "Habilita/Desabilita a pausa automática para agentes que não atendem chamada. Se habilitado, faz com que o agente entre em pausa em todas as filas que ele pertence.",
       "RINGINUSE": "Para permitir ou não o envio de chamadas para agentes cujo status é Ocupado",
-      "TIMEOUTRESTART": "Se sim, isso redefine o tempo limite para um agente responder quando um status OCUPADO ou CONGESTIONADO é recebido do canal",
-      "CONTEXT": "Permite que o chamador saia da fila pressionando um dígito DTMF. Se um contexto for configurado e o chamador digitar um número, esse dígito tentará localizar no contexto configurado e continuará o dialplan.",
-      "SETINTERFACEVARIABLES": "Se configurado como sim, antes de o chamador ser conectado a um agente, algumas variáveis \200b\200bserão configuradas (para obter mais informações, consulte os documentos do wiki)",
-      "SETQUEUEVARIABLES": "Se definido como sim, pouco antes de o chamador ser conectado a um agente de fila, algumas variáveis \200b\200bserão definidas (para obter mais informações, consulte a wiki)",
-      "SETQUEUEENTRYVARIABLES": "Se definido como sim, pouco antes de o chamador ser conectado a um agente de fila, algumas variáveis \200b\200bserão definidas (para obter mais informações, consulte a wiki)",
-      "RECORDING": "Ativar Gravação de Chamadas",
-      "VOICEMAIL_CONTEXT": "Define contexto da extensão",
+      "TIMEOUTRESTART": "Se sim, isso redefine o tempo limite para um agente atender quando o status OCUPADO ou CONGESTIONADO é recebido do canal",
+      "CONTEXT": "Permite que o cliente saia da fila pressionando um dígito DTMF. Se um contexto for configurado e o cliente digitar um número, o sistema tentará localizar no contexto configurado e continuará o dialplan.",
+      "SETINTERFACEVARIABLES": "Se configurado como sim, antes de o cliente ser conectado a um agente, algumas variáveis \200b\200bserão configuradas (para obter mais informações, consulte a wiki)",
+      "SETQUEUEVARIABLES": "Se definido como sim, antes de o cliente ser conectado a um agente, algumas variáveis \200b\200bserão definidas (para obter mais informações, consulte a wiki)",
+      "SETQUEUEENTRYVARIABLES": "Se definido como sim, antes de o ciente ser conectado a um agente, algumas variáveis \200b\200bserão definidas (para obter mais informações, consulte a wiki)",
+      "RECORDING": "Habilitar gravação de chamadas",
+      "VOICEMAIL_CONTEXT": "Define o contexto da extensão",
       "NAME": "Somente é suportado números, letras e caracteres específicos (._)",
       "CALLERIDALL": "Supported format: \"CallerId\" <number>",
       "CALLER_ID": "Supported format: \"CallerId\" <number>",
-      "MANDATORYDISPOSITIONPAUSEID": "Tipo de Pausa para qualificação obrigatória",
-      "SERVICELEVEL": "Ajuste de Segundos para o nível de serviço (padrão = 0, sem Nível de Serviço). Usado para estatísticas de nível de serviço (chamadas atendidas dentro do período cumprem o nível de serviço)",
+      "MANDATORYDISPOSITIONPAUSEID": "Status de pausa para qualificação obrigatória",
+      "SERVICELEVEL": "Ajuste em segundos para o nível de serviço (Padrão = 0, sem Nível de Serviço). Usado na estatísticas do nível de serviço (chamadas atendidas dentro do período cumprem o nível de serviço)",
       "MONITORFORMAT": "Especifica o formato do arquivo de gravação. Se for definido como 'inativo', as chamadas não serão gravadas",
       "SAVE_ROUTES": "O roteamento foi modificado. Lembre-se de salvar se não quiser perder suas alterações."
     },
-    "MUSICONHOLD": "Música em Espera",
+    "MUSICONHOLD": "Música de Espera",
     "ANNOUNCETOAGENT": "Anunciar ao Agente",
     "ANNOUNCEMENTS": "Anúncios",
     "ADVANCED": "Avançado",
-    "ANNOUNCEFREQUENCY": "Frequência Anúncio",
+    "ANNOUNCEFREQUENCY": "Frequência de Anúncio",
     "MINANNOUNCEFREQUENCY": "Frequência mínima de anúncio",
-    "PERIODICANNOUNCEFREQUENCY": "Frequencia Anúncio Periódico",
+    "PERIODICANNOUNCEFREQUENCY": "Frequencia do Anúncio Periódico",
     "RANDOMPERIODICANNOUNCE": "Anúncio Periódico Aleatório",
-    "ANNOUNCEHOLDTIME": "Anunciar Tempo de Espera",
+    "ANNOUNCEHOLDTIME": "Anunciar o Tempo de Espera",
     "ANNOUNCECALLERPOSITION": "Anunciar a Posição na Fila",
-    "ANNOUNCEPOSITIONLIMIT": "Anunciar Limite de Posição",
+    "ANNOUNCEPOSITIONLIMIT": "Anunciar o Limite de Posição",
     "REPORTHOLDTIMEAGENT": "Relatório de Tempo de Espera do Agente",
     "PERIODICANNOUNCE": "Anúncio Periódico",
-    "HOLDTIMEANNOUNCE": "Anúncio em Tempo de Espera",
+    "HOLDTIMEANNOUNCE": "Anúncio de Tempo de Espera",
     "YOUARENEXTANNOUNCE": "Anúncio 'Você é o próximo'",
     "THEREAREANNOUNCE": "Anúncio 'Existem'",
-    "WAITINGCALLSANNOUNCE": "Anúncio Chamadas em Espera",
+    "WAITINGCALLSANNOUNCE": "Anúncio de Chamadas em Espera",
     "ESTIMATEDHOLDTIMEANNOUNCE": "Anunciar Tempo de Espera Estimado",
     "MINUTESANNOUNCE": "Anuncio Minutos",
     "MINUTEANNOUNCE": "Anúncio Minuto",
-    "SECONDSANNOUNCE": "Anúncio Segundos",
+    "SECONDSANNOUNCE": "Anúncio de Segundos",
     "THANKYOUANNOUNCE": "Anúncio 'Obrigado'",
     "AUTOPAUSE": "Pausa Automática",
-    "AFTERCALLWORK": "Pausa Após Ligação",
-    "AFTERCALLWORKDURATION": "Duração Pausa Após Ligação",
-    "RINGINUSE": "Toque em Uso",
+    "AFTERCALLWORK": "Pós-atendimento (ACW)",
+    "AFTERCALLWORKDURATION": "Duração Pós-atendimento",
+    "RINGINUSE": "Toque quando Ocupado",
     "MEMBERDELAY": "Member Delay",
     "TIMEOUTRESTART": "Timeout Restart",
     "MONITORFORMAT": "Formato de Gravação",
     "ADD_OUTBOUNDROUTE": "Adicionar Rota de Saída",
     "EDIT_OUTBOUNDROUTE": "Editar Rota de Saída",
     "DELETE_OUTBOUNDROUTE": "Excluir Rota de Saída",
-    "CUTDIGITS": "Cut Digits",
+    "CUTDIGITS": "Cortar Dígitos",
     "RECORDING": "Gravação",
     "RECORDINGFORMAT": "Formato de Gravação",
     "INTERNALROUTES": "Rotas Internas",
     "DELETE_VOICEMAIL": "Excluir Correio de Voz",
     "FULLNAME": "Nome Completo",
     "EMAIL": "Email",
-    "MAILBOX": "Caixa Postal",
+    "MAILBOX": "Caixa de Entrada",
     "PASSWORD": "Senha",
     "CONFIRM_PASSWORD": "Confirmar Senha",
     "TIMEZONE": "Fuso Horário",
     "ATTACH": "Anexar",
     "ENVELOPE": "Envelope",
     "DELETE": "Excluir",
-    "EMAILBODY": "Corpo do e-mail",
-    "EMAILSUBJECT": "Assunto do email",
+    "EMAILBODY": "Corpo do Email",
+    "EMAILSUBJECT": "Assunto do Email",
     "MAXSECONDS": "Segundos Máximos",
     "MAXMESSAGES": "Mensagens Máximas",
     "MESSAGES": "Mensagens",
     "SORT": "Ordenar",
     "ADD_MUSICONHOLD": "Adicionar Música em Espera",
-    "MUSICONHOLDS": "Música em Espera",
+    "MUSICONHOLDS": "Música de Espera",
     "EDIT_MUSICONHOLD": "Editar Música em Espera",
     "DELETE_MUSICONHOLD": "Excluir Música em Espera",
     "DIRECTORY": "Diretório",
-    "AUDIOFILES": "Arquivos de áudio",
+    "AUDIOFILES": "Arquivos de Áudio",
     "RECORDINGS": "Gravações",
     "CHANSPY": "Intercalação",
     "PREFIX": "Prefixo",
     "AGENTS": "Agentes",
     "TELEPHONES": "Telefones",
     "QUEUES": "Filas",
-    "QUEUE_CALLS": "Filas de Ligação",
-    "QUEUE_PARAMETERS": "Parametros da Fila",
+    "QUEUE_CALLS": "Ligações em Fila",
+    "QUEUE_PARAMETERS": "Parâmetros da Fila",
     "ABANDONED_CALLS": "Chamadas Abandonadas",
     "OUTBOUND_CALLS": "Chamadas Externas",
     "AGI": "Agi",
     "VOICEMAIL": "Correio de Voz",
     "GOTO": "GoTo",
     "HANGUP": "Desligar",
-    "CUSTOM": "Personalizadas",
+    "CUSTOM": "Custom",
     "PROJECT": "Projeto CallySquare",
     "TECHNOLOGY/RESOURCE": "Tecnologia / Recurso",
     "URL": "URL",
     "USER": "Usuários",
     "TRUNK": "Tronco",
     "PHONE": "Telefone",
-    "AUDIO_FILES": "Arquivos de áudio",
+    "AUDIO_FILES": "Arquivos de Áudio",
     "ANNOUNCE_OVERRIDES": "Anúncio Substituto",
     "MACRO": "Macro",
     "GOSUB": "GoSub",
     "RULE": "Regra",
     "POSITION": "Posição",
-    "ANSWER": "Responda",
+    "ANSWER": "Atender",
     "VALUE": "Valor",
     "MAILBOX@CONTEXT": "Mailbox@Context",
     "EXTENSION": "Extensão",
     "PRIORITY": "Prioridade",
     "HANGUP_CAUSE": "Causa do Desligamento",
     "OUTBOUNDDIAL": "Discagem de Saída",
-    "CALLER_ID": "Identificador de Chamadas",
-    "NO_MESSAGE_AVAILABLE": "Nenhuma Mensagem Disponível",
+    "CALLER_ID": "Caller ID",
+    "NO_MESSAGE_AVAILABLE": "Nenhuma mensagem disponível",
     "NO_SOUND_AVAILABLE": "Nenhum Áudio Disponível",
     "VOICERECORDINGS": "Gravações de Voz",
     "CHANSPIES": "Intercalação",
     "REALTIME": "Tempo Real",
     "ID": "Id",
     "VOICEMAIL_CONTEXT": "Contexto",
-    "NO_MOHSOUND_AVAILABLE": "Não há Música na Espera Disponível",
+    "NO_MOHSOUND_AVAILABLE": "Não há música de espera disponível",
     "FILE": "Arquivo",
     "ADD_MOHSOUND": "Adicionar Música em Espera",
-    "DOWNLOAD_MOHSOUND": "Download Música de Espera",
+    "DOWNLOAD_MOHSOUND": "Download do áudio de Música em Espera",
     "DELETE_MOHSOUND": "Excluir Música em Espera",
-    "UNIQUEID": "ID único",
+    "UNIQUEID": "ID Único",
     "AGENT": "Agente",
     "TYPE": "Tipo",
     "RATING": "Avaliação",
     "NEW_INTERNALROUTE": "Nova Rota Interna",
     "NEW_CONTEXT": "Novo Contexto",
     "NEW_VOICEMAIL": "Nova Mensagem de Voz",
-    "NEW_MUSICONHOLD": "Nova Música em Espera",
+    "NEW_MUSICONHOLD": "Nova Música de Espera",
     "NEW_CHANSPY": "Nova Intercalação",
     "PENALTY": "Peso",
     "ADD_TEAM_TO_VOICEQUEUE": "Adicionar Equipe à Fila de Voz",
     "EDIT_AGI": "Editar AGI",
     "EDIT_INTERNALDIAL": "Editar Discagem Interna",
     "EDIT_EXTERNALDIAL": "Editar Discagem Externa",
-    "EDIT_RINGGROUP": "Editar Grupo de Toques",
+    "EDIT_RINGGROUP": "Editar Grupo de Toque",
     "EDIT_PLAYBACK": "Editar Reprodução",
     "EDIT_QUEUE": "Editar Fila",
     "EDIT_SET": "Editar Conjunto",
     "EDIT_GOTO": "Editar GoTo",
     "EDIT_HANGUP": "Editar Hangup",
-    "EDIT_CUSTOM": "Editar Customizado",
+    "EDIT_CUSTOM": "Editar Custom",
     "DURATION": "Duração",
     "RECEIVED_AT": "Recebido em",
     "YES": "Sim",
     "NO": "Não",
-    "HANGUPCAUSE_1": "1 = Número não alocado",
-    "HANGUPCAUSE_16": "16 = Chamada normal",
-    "HANGUPCAUSE_17": "17 = Usuário ocupado",
-    "HANGUPCAUSE_18": "18 = Nenhuma resposta do usuário (Não atendeu)",
-    "HANGUPCAUSE_21": "21 = Chamada rejeitada",
-    "HANGUPCAUSE_22": "22 = Número alterado",
-    "HANGUPCAUSE_27": "27 = Destino fora de ordem",
-    "HANGUPCAUSE_38": "38 = Rede fora de ordem",
-    "HANGUPCAUSE_41": "41 = Falha temporária",
+    "HANGUPCAUSE_1": "1 = Unallocated number",
+    "HANGUPCAUSE_16": "16 = Normal call clearing",
+    "HANGUPCAUSE_17": "17 = User busy",
+    "HANGUPCAUSE_18": "18 = No user responding (telehone device not connected)",
+    "HANGUPCAUSE_21": "21 = Call rejected",
+    "HANGUPCAUSE_22": "22 = Number changed",
+    "HANGUPCAUSE_27": "27 = Destination out of order",
+    "HANGUPCAUSE_38": "38 = Network out of order",
+    "HANGUPCAUSE_41": "41 = Temporary failure",
     "RANDOM": "Aleatória",
     "ALPHABETICAL": "Alfabético",
-    "NO_APPS_AVAILABLE": "Não há Aplicativos Disponíveis",
-    "DOWNLOAD_VOICERECORDING": "Download Gravação de Voz",
+    "NO_APPS_AVAILABLE": "Não há aplicativos disponíveis",
+    "DOWNLOAD_VOICERECORDING": "Download da Gravação de Voz",
     "DELETE_VOICERECORDING": "Excluir Gravação de Voz",
     "INTERNAL": "Interno",
     "PHONE_STATE": "Status do Telefone",
     "PHONE_STATUS": "Status do Telefone",
-    "TRUNK_STATUS": "Status Tronco",
+    "TRUNK_STATUS": "Status do Tronco",
     "REGISTERED": "Registrado",
     "UNREGISTERED": "Não Registrado",
     "LAGGED": "Atrasado",
     "REACHABLE": "Alcançável",
     "UNREACHABLE": "Inacessível",
     "UNKNOWN": "Desconhecido",
-    "NOT_INUSE": "Fora de Uso",
-    "INUSE": "Em uso",
+    "NOT_INUSE": "Disponível",
+    "INUSE": "Ocupado",
     "BUSY": "Ocupado",
     "INVALID": "Inválido",
     "UNAVAILABLE": "Indisponível",
     "ONHOLD": "Em Espera",
     "RING": "Tocar",
     "UP": "Cima",
-    "INFO": "Informação",
+    "INFO": "Info",
     "TRUNKS": "Troncos",
     "REGISTRY": "Registro",
     "NO_REGISTRY": "Nenhum Registro",
     "WAITING": "Esperando",
     "TALKING": "Falando",
     "DID": "DID",
-    "CALLER": "Chamador",
+    "CALLER": "Origem",
     "TOTAL": "Total",
-    "ANSWERED": "Respondidas",
+    "ANSWERED": "Atendidas",
     "ABANDONED": "Abandonadas",
     "UNMANAGED": "Não Gerenciado",
     "AVG_HOLD_TIME": "Tempo Médio de Epera",
     "DESTINATION": "Destino",
     "REJECTED": "Rejeitado",
     "FAILED": "Falhou",
-    "CALLED": "Chamado",
+    "CALLED": "Destino",
     "CONNECTED": "Conectado",
     "NO_RATING": "Sem Avaliação",
     "EDIT_VOICERECORDING": "Editar Gravação de Voz",
     "APPLICATION_NAME": "Nome da Aplicação",
     "ARGUMENTS": "Argumentos",
-    "NO_AVAILABLE_INFO": "Nenhuma Informação Disponível",
+    "NO_AVAILABLE_INFO": "Nenhuma informação disponível",
     "ADD_AGENT_TO_QUEUE": "Adicionar Agente à Fila",
     "DEFAULT_PAUSE": "PAUSA PADRÃO",
     "PAUSE": "Pausa",
-    "UNPAUSE": "Fim Pausa",
+    "UNPAUSE": "Finalizar Pausa",
     "REDIRECT_TO_NUMBER": "Redirecionar para Número",
     "REDIRECT_TO_AGENT": "Redirecionar para Agente",
-    "AGENTADD_VOICEQUEUE": "Adicionar Agente à Fila de Coz",
+    "AGENTADD_VOICEQUEUE": "Adicionar Agente à Fila de Voz",
     "APPLICATION": "Aplicação",
     "FILES": "Arquivos",
     "FORMAT": "Formato",
     "NEW_MOHSOUND": "Novo aúdio de Música em Espera",
     "DOWNLOAD_MESSAGE": "Download",
     "DELETE_MESSAGE": "Excluir",
-    "QUEUE_PARAMS": "Parâmetros da fila",
+    "QUEUE_PARAMS": "Parâmetros da Fila",
     "TOTAL_OFFERED": "Total Oferecido",
     "READY": "Pronto",
     "AGENTADD_QUEUE": "Adicionar Agente à Fila de Voz",
     "SELECTED_TEAMS": "Equipes Selecionadas",
     "ALL_AGENTS": "Todos Agentes",
     "SELECTED_AGENTS": "Agentes Selecionados",
-    "CLOSING": "Fechamento",
+    "CLOSING": "Encerramento",
     "TAGS": "Tags",
-    "WAITING_FOR_AGENT": "Aguardando Por Agentes",
+    "WAITING_FOR_AGENT": "Aguardando por 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": "Qualificação",
     "CHAT": "Chat",
     "TAG": "Tag",
     "DETAILS": "Detalhes",
     "BILLABLESECONDS": "Segundos Faturáveis",
-    "ANSWEREDAT": "Respondido em",
-    "NOTE": "Nota",
-    "CLOSE": "Fechar",
+    "ANSWEREDAT": "Atendidas em",
+    "NOTE": "Observação",
+    "CLOSE": "Encerrar",
     "SELECT_DATE": "Selecione Data de Início",
     "SELECT_TYPE": "Selecione Tipo",
     "VOICEPREFIXES": "Prefixos de Saída",
     "ADD_VOICEPREFIX": "Adicionar Prefixo",
     "EDIT_VOICEPREFIX": "Editar Prefixo",
     "AGENTADD_VOICEPREFIX": "Adicionar Agente ao Prefixo",
-    "DELETE_VOICEPREFIX": "Excluir Rrefixo",
+    "DELETE_VOICEPREFIX": "Excluir Prefixo",
     "OUTBOUNDROUTE": "Rota de Saída",
-    "CALLERIDALL": "ID do Chamador",
+    "CALLERIDALL": "Caller ID",
     "DIALER": "Discador",
     "INBOUND": "Entrada",
     "OUTBOUND": "Outbound",
-    "MANDATORYDISPOSITION": "Qualificação Obrigatória",
-    "MANDATORYDISPOSITIONPAUSEID": "Status de Pausa para Qualificação Obrigatória",
-    "TEAMS_ASSOCIATION": "Associação de Equipas",
+    "MANDATORYDISPOSITION": "Qualificação obrigatória",
+    "MANDATORYDISPOSITIONPAUSEID": "Status de Pausa para Qualificação obrigatória",
+    "TEAMS_ASSOCIATION": "Associação de Equipes",
     "CANT_DOWNLOAD_THIS_FILE": "Não é possível baixar este arquivo",
-    "FILE_NOT_FOUND": "Arquivo Não Encontrado",
+    "FILE_NOT_FOUND": "Arquivo não encontrado",
     "SCREENRECORDING": "Gerenciar Gravação de Tela",
     "START_SCREENRECORDING": "Iniciar Gravação de Tela",
     "STOP_SCREENRECORDING": "Parar Gravação de Tela",
-    "TOOLTIP_SCREENRECORDING_OFF": "Gravação de Tela Disponível",
-    "TOOLTIP_SCREENRECORDING_ON": "Gravação de Tela em Andamento",
-    "WRONG_EXTENSION": "O arquivo apresenta a extensão incorreta",
+    "TOOLTIP_SCREENRECORDING_OFF": "Gravação de Tela disponível",
+    "TOOLTIP_SCREENRECORDING_ON": "Gravação de Tela em andamento",
+    "WRONG_EXTENSION": "O arquivo possuí extensão incorreta",
     "DOWNLOADTRANSCRIBE_VOICERECORDING": "Baixar Transcrição",
-    "FAILUREREASON": "Razão da Falha",
-    "RUNSENTIMENT_VOICERECORDING": "Executar Sentimento",
-    "RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Executar Transcrição e Sentimento",
+    "FAILUREREASON": "Motivo da Falha",
+    "RUNSENTIMENT_VOICERECORDING": "Executar Análise de Sentimento",
+    "RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Executar Transcrição e Análise de Sentimento",
     "RUNTRANSCRIBE_VOICERECORDING": "Executar Transcrição",
-    "SENTIMENT": "Sentimento",
+    "SENTIMENT": "Análise de Sentimento",
     "SENTIMENTANALYSIS": "Análise de Sentimentos",
     "SENTIMENT_MIXED": "Misturado",
     "SENTIMENT_NEGATIVE": "Negativo",
index 97549f4..f39c304 100644 (file)
       "BASEURL_REQUIRED": "Campo Obrigatório"
     },
     "HELP": {
-      "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",
+      "LIST": "Lista da Gestão de Contatos usada para associar os contatos",
+      "MANDATORYDISPOSITION": "Qualificação obrigatória",
+      "MANDATORYDISPOSITIONPAUSEID": "Pausa usada quando a qualificação obrigatória estiver habilitada",
       "MOTIONPROXY": "O campo deve ter o seguinte formato: <protocol>: // <ipaddress> [: <port>]. Exemplo: https: //X.Y.Z.W",
       "NAME": "Apenas números, letras e caracteres específicos (._) são suportados",
       "RECEIVEURL": "Esta é a string de API gerada automaticamente que você precisa usar para receber as mensagens dentro de sua conta do provedor WhatsApp Connector (o método POST deve ser usado): clique no botão da área de transferência para copiá-la",
       "WELCOMEMESSAGE": "Esta é a primeira mensagem de resposta enviada para novas interações"
     },
-    "ACCESSKEYID": "ID da chave de acesso",
-    "ACCOUNTSID": "SID da conta",
+    "ACCESSKEYID": "ID de Chave de Acesso",
+    "ACCOUNTSID": "SID da Conta",
     "ACTIONS": "Ações",
-    "ADD_NOTE": "Adicionar nota",
+    "ADD_NOTE": "Adicionar Observação",
     "ADD_WHATSAPPACCOUNT": "Adicionar",
-    "ADD_WHATSAPPCANNEDANSWER": "Adicionar resposta automática",
-    "ADD_WHATSAPPDISPOSITION": "Adicionar disposição do WhatsApp",
-    "ADD_WHATSAPPQUEUE": "Adicionar fila WhatsApp",
+    "ADD_WHATSAPPCANNEDANSWER": "Adicionar Resposta Pré-definida",
+    "ADD_WHATSAPPDISPOSITION": "Adicionar Qualificação do WhatsApp",
+    "ADD_WHATSAPPQUEUE": "Adicionar Fila do WhatsApp",
     "ADVANCED": "Avançado",
     "AGENT": "Agente",
-    "AGENTADD_QUEUE": "Adicionar agente à fila de WhatsApp",
-    "AGENTADD_WHATSAPPACCOUNT": "Adicionar agente à conta do WhatsApp",
-    "AGENTADD_WHATSAPPQUEUE": "Adicionar agente à fila de WhatsApp",
+    "AGENTADD_QUEUE": "Adicionar Agente à Fila do WhatsApp",
+    "AGENTADD_WHATSAPPACCOUNT": "Adicionar Agente à Conta do WhatsApp",
+    "AGENTADD_WHATSAPPQUEUE": "Adicionar Agente à Fila do WhatsApp",
     "AGENTS": "Agentes",
-    "AGENTSADD_QUEUE": "Adicionar agentes à fila do WhatsApp",
+    "AGENTSADD_QUEUE": "Adicionar Agentes à Fila do WhatsApp",
     "AGENTTRANSFER": "Transferência de Agente",
-    "AGENTTRANSFERTIMEOUT": "Tempo limite de transferência do agente",
-    "AGENT_TIMEOUT": "Tempo Limite do Agente",
+    "AGENTTRANSFERTIMEOUT": "Timeout de transferência do agente",
+    "AGENT_TIMEOUT": "Timeout do Agente",
     "ALL": "Tudo",
-    "ALL_AGENTS": "Todos os Agentes",
-    "ALL_TEAMS": "Todas as equipes",
+    "ALL_AGENTS": "Todos Agentes",
+    "ALL_TEAMS": "Todas Equipes",
     "AMAZONLEX": "AmazonLex",
-    "AUTHTOKEN": "Token de autenticação",
-    "AUTOREPLY": "Resposta automatica",
-    "BACK": "Costas",
-    "BOTNAME": "Nome do bot",
+    "AUTHTOKEN": "Token de Autenticação",
+    "AUTOREPLY": "Auto Resposta",
+    "BACK": "Voltar",
+    "BOTNAME": "Nome do Bot",
     "BUSY": "Ocupado",
-    "CANNEDANSWERS": "Respostas enlatadas",
-    "CANNED_ANSWER_NOT_FOUND": "Nenhuma resposta automática foi encontrada",
-    "CANNED_ANSWER_SEARCH": "Insira um texto para pesquisar uma resposta automática",
+    "CANNEDANSWERS": "Respostas Pré-definidas",
+    "CANNED_ANSWER_NOT_FOUND": "Nenhuma resposta pré-definida foi encontrada",
+    "CANNED_ANSWER_SEARCH": "Digite para procurar por Resposta Pré-definida",
     "CAPACITY": "Capacidade",
-    "CLOSE": "Perto",
-    "CLOSED": "Fechadas",
-    "CLOSEMETHOD": "Método Fechar",
-    "CLOSEURL": "Fechar URL",
+    "CLOSE": "Encerrar",
+    "CLOSED": "Encerrado",
+    "CLOSEMETHOD": "Método de Encerramento",
+    "CLOSEURL": "URL de Encerramento",
     "COMMAND": "Comando",
-    "CONDITION": "Doença",
+    "CONDITION": "Condição",
     "CONTACT": "Contato",
     "CREATED_AT": "Criado em",
     "DEFAULT_PAUSE": "PAUSA PADRÃO",
     "DELETE": "Excluir",
-    "DELETE_INTERACTION": "Excluir interação",
-    "DELETE_SELECTED": "Excluir selecionado",
-    "DELETE_WHATSAPPACCOUNT": "Excluir conta WhatsApp",
+    "DELETE_INTERACTION": "Excluir Interação",
+    "DELETE_SELECTED": "Excluir Selecionado",
+    "DELETE_WHATSAPPACCOUNT": "Excluir Conta do WhatsApp",
     "DELETE_WHATSAPPCANNEDANSWER": "Excluído",
-    "DELETE_WHATSAPPDISPOSITION": "Excluir disposição do WhatsApp",
-    "DELETE_WHATSAPPQUEUE": "Excluir fila do WhatsApp",
+    "DELETE_WHATSAPPDISPOSITION": "Excluir Qualificação do WhatsApp",
+    "DELETE_WHATSAPPQUEUE": "Excluir Fila do WhatsApp",
     "DESCRIPTION": "Descrição",
     "DIALOGFLOW": "DialogFlow",
-    "DISPOSITION": "Disposição",
-    "DISPOSITIONS": "Disposições",
-    "DOWNLOAD_INTERACTION": "Baixar",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Baixar sem anexos",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Baixar com anexos",
+    "DISPOSITION": "Qualificação",
+    "DISPOSITIONS": "Qualificaçõ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 Lex",
-    "EDIT_AUTOREPLY": "Editar resposta automática",
-    "EDIT_CLOSE": "Editar Fechar",
+    "EDIT_AMAZONLEX": "Editar configuração AmazonLex",
+    "EDIT_AUTOREPLY": "Editar Auto Resposta",
+    "EDIT_CLOSE": "Editar Encerramento",
     "EDIT_DIALOGFLOW": "Editar configuração do DialogFlow",
     "EDIT_GOTOIF": "Editar Gotoif",
     "EDIT_GOTOP": "Editar Gotop",
     "EDIT_NOOP": "Editar Noop",
-    "EDIT_QUEUE": "Editar fila",
+    "EDIT_QUEUE": "Editar Fila",
     "EDIT_SYSTEM": "Editar Sistema",
-    "EDIT_TAG": "Editar etiqueta",
-    "EDIT_WHATSAPPACCOUNT": "Editar conta WhatsApp",
+    "EDIT_TAG": "Editar Tag",
+    "EDIT_WHATSAPPACCOUNT": "Editar Conta do WhatsApp",
     "EDIT_WHATSAPPCANNEDANSWER": "Editar",
-    "EDIT_WHATSAPPDISPOSITION": "Editar disposição do WhatsApp",
-    "EDIT_WHATSAPPQUEUE": "Editar fila de WhatsApp",
+    "EDIT_WHATSAPPDISPOSITION": "Editar Qualificaçao do WhatsApp",
+    "EDIT_WHATSAPPQUEUE": "Editar Fila de WhatsApp",
     "FALSEPRIORITY": "Falsa Prioridade",
     "GENERAL": "Geral",
     "GOTOIF": "Gotoif",
-    "GOTOP": "Seja o melhor",
-    "GOTOREALTIME_WHATSAPPQUEUE": "Vá para a fila de WhatsApp em tempo real",
-    "GO_TO_WHATSAPPACCOUNTS": "Ir para a conta",
-    "ID": "Eu iria",
-    "IDLE": "Ocioso",
+    "GOTOP": "Gotop",
+    "GOTOREALTIME_WHATSAPPQUEUE": "Visualizar Fila do WhatsApp em Tempo Real",
+    "GO_TO_WHATSAPPACCOUNTS": "Ir para a Conta",
+    "ID": "Id",
+    "IDLE": "Disponível",
     "INSERT_MESSAGE_HERE": "Insira a mensagem aqui",
     "INTERACTIONS": "Interações",
-    "INTERACTIONS_WHATSAPPACCOUNT": "Vá para Interações",
+    "INTERACTIONS_WHATSAPPACCOUNT": "Ir para Interações",
     "KEY": "Chave",
-    "LANGUAGE": "Língua",
-    "LASTMESSAGE": "Última mensagem",
+    "LANGUAGE": "Idioma",
+    "LASTMESSAGE": "Última Mensagem",
     "LEXREGION": "Região",
     "LIST": "Lista",
     "LOGGED_IN": "Conectado (SIP conectado)",
     "LOGIN_TIME": "Hora de Login",
     "LOGOUT": "Sair",
-    "MANDATORYDISPOSITION": "Disposição Obrigatória",
-    "MANDATORYDISPOSITIONPAUSEID": "Faça uma pausa para usar quando a disposição obrigatória estiver habilitada",
+    "MANDATORYDISPOSITION": "Qualificação Obrigatória",
+    "MANDATORYDISPOSITIONPAUSEID": "Pausa usada quando a qualificação obrigatória estiver habilitada",
     "MORE": "Mais",
-    "MOTIONPROXY": "Domínio de proxy ou movimento",
-    "MULTI_SELECT_TOGGLE": "Alternância de seleção múltipla",
+    "MOTIONPROXY": "Domínio do Proxy ou do Motion",
+    "MULTI_SELECT_TOGGLE": "Multi select toggle",
     "NAME": "Nome",
-    "NEW_WHATSAPPACCOUNT": "Nova conta WhatsApp",
-    "NEW_WHATSAPPCANNEDANSWER": "Nova resposta predeterminada do WhatsApp",
-    "NEW_WHATSAPPDISPOSITION": "Nova disposição do WhatsApp",
-    "NEW_WHATSAPPQUEUE": "Nova fila de WhatsApp",
+    "NEW_WHATSAPPACCOUNT": "Nova Conta de WhatsApp",
+    "NEW_WHATSAPPCANNEDANSWER": "Nova Resposta Pré-definida do WhatsApp",
+    "NEW_WHATSAPPDISPOSITION": "Nova Qualificação do WhatsApp",
+    "NEW_WHATSAPPQUEUE": "Nova Fila do WhatsApp",
     "NOOP": "Noop",
-    "NOTE": "Nota",
+    "NOTE": "Observação",
     "NOTIFICATION": "Notificação",
-    "NOTIFICATIONSHAKE": "Mexe",
+    "NOTIFICATIONSHAKE": "Vibrar",
     "NOTIFICATIONSOUND": "Som",
     "NOTIFICATIONTEMPLATE": "Modelo",
-    "NO_AGENT_ONLINE": "Nenhum agente online",
-    "NO_AVAILABLE_INFO": "Sem informações disponíveis",
-    "NO_INTERACTION_AVAILABLE": "Nenhuma interação disponível",
-    "NO_WHATSAPPCANNEDANSWER_AVAILABLE": "Nenhuma resposta automática do WhatsApp disponível",
-    "NO_WHATSAPPDISPOSITION_AVAILABLE": "Nenhum dispositivo WhatsApp disponível",
-    "NO_WHATSAPP_ACCOUNTS_AVAILABLE": "Nenhuma conta WhatsApp disponível",
+    "NO_AGENT_ONLINE": "Nenhum Agente Online",
+    "NO_AVAILABLE_INFO": "Nenhuma Informações Disponível",
+    "NO_INTERACTION_AVAILABLE": "Nenhuma Interação Disponível",
+    "NO_WHATSAPPCANNEDANSWER_AVAILABLE": "Nenhuma resposta pré-definda disponível",
+    "NO_WHATSAPPDISPOSITION_AVAILABLE": "Nenhum qualificação disponível",
+    "NO_WHATSAPP_ACCOUNTS_AVAILABLE": "Nenhuma Conta do WhatsApp disponível",
     "OF": "do",
     "OPENED": "Aberto",
     "PAGE": "Página",
     "PARTIALPAUSE": "Pausa Parcial",
     "PAUSE": "Pausa",
     "PAUSED": "Em pausa",
-    "PAUSE_TIME": "Tempo de pausa",
-    "PHONE": "telefone",
+    "PAUSE_TIME": "Tempo de Pausa",
+    "PHONE": "Telefone",
     "PRIORITY": "Prioridade",
     "PROXY": "Proxy",
     "QUEUE": "Fila",
     "QUEUES": "Filas",
     "QUEUETRANSFER": "Transferência de fila",
-    "QUEUETRANSFERTIMEOUT": "Tempo limite de transferência da fila",
-    "READY": "pronto",
-    "REALTIME": "Tempo real",
-    "RECEIVEURL": "Receber URL",
-    "REFRESH_INTERACTIONS": "Atualizar interações",
-    "REMOTE": "Controlo remoto",
+    "QUEUETRANSFERTIMEOUT": "Timeout de transferência da fila",
+    "READY": "Disponível",
+    "REALTIME": "Tempo Real",
+    "RECEIVEURL": "URL de Recebimento",
+    "REFRESH_INTERACTIONS": "Atualizar Interações",
+    "REMOTE": "Controlo Remoto",
     "ROWSPERPAGE": "Linhas por página",
-    "SAVE": "Salve \e051",
-    "SCREENRECORDING": "Gerenciar gravação de tela",
+    "SAVE": "Salvar",
+    "SCREENRECORDING": "Gerenciar Gravação de Tela",
     "SEARCH_FOR_ANYONE": "Procurar",
-    "SECRETACCESSKEY": "Chave secreta de acesso",
+    "SECRETACCESSKEY": "Senha da Chave de Acesso",
     "SELECTED": "Selecionado",
     "SELECTED_AGENTS": "Agentes Selecionados",
     "SELECTED_TEAMS": "Times Selecionados",
-    "SELECT_ALL": "Selecionar tudo",
-    "SELECT_NONE": "Selecione nenhum",
+    "SELECT_ALL": "Selecionar Tudo",
+    "SELECT_NONE": "Selecione Nenhum",
     "SEND": "Enviar",
     "SETTINGS": "Configurações",
-    "SPYINTERACTION": "Interação de espião",
+    "SPYINTERACTION": "Espiar",
     "STARTEDAT": "Começou às",
-    "START_SCREENRECORDING": "Iniciar gravação de tela",
+    "START_SCREENRECORDING": "Iniciar Gravação de Tela",
     "STATUS": "Status",
-    "STOP_SCREENRECORDING": "Parar a gravação da tela",
+    "STOP_SCREENRECORDING": "Parar Gravação da Tela",
     "STRATEGY": "Estratégia",
     "SYSTEM": "Sistema",
     "TAG": "Tag",
     "TAGS": "Tag",
-    "TEAMADD_WHATSAPPQUEUE": "Adicionar equipe à fila do WhatsApp",
-    "TEAMS_ASSOCIATION": "Associação de equipes",
+    "TEAMADD_WHATSAPPQUEUE": "Adicionar equipe à Fila do WhatsApp",
+    "TEAMS_ASSOCIATION": "Associação de Equipes",
     "TEXT": "Texto",
-    "TIMEOUT": "Tempo esgotado",
-    "TIMER": "Cronômetro",
+    "TIMEOUT": "Timeout",
+    "TIMER": "Timer",
     "TIMES": "Vezes",
     "TO": "Para",
-    "TOKEN": "Símbolo",
-    "TOOLTIP_SCREENRECORDING_OFF": "Gravação de tela disponível",
-    "TOOLTIP_SCREENRECORDING_ON": "Gravação de tela em andamento",
+    "TOKEN": "Token",
+    "TOOLTIP_SCREENRECORDING_OFF": "Gravação de Tela disponível",
+    "TOOLTIP_SCREENRECORDING_ON": "Gravação de Tela em andamento",
     "TRANSFER": "Transferir",
-    "TRUEPRIORITY": "Verdadeira prioridade",
+    "TRUEPRIORITY": "ID de Prioridade caso Verdadeiro",
     "TYPE": "Tipo",
-    "UNPAUSE": "Fim da pausa",
+    "UNPAUSE": "Finalizar Pausa",
     "VALUE": "Valor",
     "VARIABLE": "Variável",
-    "WAITFORTHEASSIGNEDAGENT": "Espere pelo agente atribuído",
+    "WAITFORTHEASSIGNEDAGENT": "Aguarde atribuir a um agente",
     "WAITING": "Esperando",
-    "WELCOMEMESSAGE": "Mensagem de boas-vindas",
-    "WHATSAPP": "Conector WhatsApp",
-    "WHATSAPPACCOUNTS": "Contas WhatsApp",
-    "WHATSAPPCANNEDANSWERS": "Respostas predeterminadas do WhatsApp",
-    "WHATSAPPDISPOSITIONS": "Dispositivos do WhatsApp",
-    "WHATSAPPQUEUES": "WhatsApp Queues",
-    "CLIENTEMAIL": "Email do cliente",
+    "WELCOMEMESSAGE": "Mensagem de Boas-vindas",
+    "WHATSAPP": "WhatsApp Connector",
+    "WHATSAPPACCOUNTS": "Contas do WhatsApp",
+    "WHATSAPPCANNEDANSWERS": "Respostas Pré-definidas do WhatsApp",
+    "WHATSAPPDISPOSITIONS": "Qualificações do WhatsApp",
+    "WHATSAPPQUEUES": "Filas do WhatsApp",
+    "CLIENTEMAIL": "Email do Cliente",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Editar Dialogflow V2",
-    "PRIVATEKEY": "Chave privada",
-    "PROJECTID": "ID do projeto",
-    "BASEURL": "URL base",
-    "DELIVERYREPORTURL": "URL do relatório de entrega"
+    "PRIVATEKEY": "Chave Privada",
+    "PROJECTID": "ID do Projeto",
+    "BASEURL": "URL Base",
+    "DELIVERYREPORTURL": "URL do Relatório de Entrega"
   }
 }
index a599e14..8b5a270 100644 (file)
@@ -1,6 +1,6 @@
 {
   "QUICKPANEL": {
-    "EXPIRATION_GRAY_PERIOD": "Período Pré Expiração (Gray Period)",
+    "EXPIRATION_GRAY_PERIOD": "Período Próximo da Expiração (Gray Period)",
     "NO_AVAILABLE_GROUPS": "Não há Grupos Disponíveis",
     "SAVE": "Salvar",
     "INFO": "Info",
@@ -9,7 +9,7 @@
     "MEMBERS": "Membros",
     "ENABLE_WRITING": "Ativar Escrita",
     "GROUPS": "Grupos",
-    "YOU": "Você + {{participantes}}",
+    "YOU": "Você + {{participants}}",
     "NEW_INTERNAL_MESSAGE": "Nova mensagem interna",
     "DELETE": "Excluir",
     "SEARCH": "Procurar",
@@ -40,7 +40,7 @@
     "APP_SERVERS": "Servidores de Aplicativos",
     "USER_STATS": "Estatísticas do Usuário",
     "EVENTS": "Eventos",
-    "NOTES": "Notas",
+    "NOTES": "Observações",
     "QUICK_SETTINGS": "Configurações Rápidas",
     "NOTIFICATIONS": "Notificações",
     "CLOUD_SYNC": "Cloud Sync",
     "REPLY_PLACEHOLDER": "Digite e pressione enter para enviar mensagem",
     "CONTACT_XCALLY_MOTION_SUPPORT": "Entre em contato com o suporte xCALLY Motion",
     "EXPIRATION_DATE": "Data de Validade",
-    "EXPIRATION_REASON": "Razão de Expiração",
+    "EXPIRATION_REASON": "Motivo de Expiração",
     "LICENSE": "Licença",
-    "NEW_TOKEN": "Novo Token",
+    "NEW_TOKEN": "Token Novo",
     "OLD_TOKEN": "Token Antigo",
     "SEND_EMAIL_TO": "Enviar Email para",
     "TOKEN": "Token",
     "EXPIRATION_REASON_MESSAGE": "Sua licença expirou ou seu Token foi alterado devido a mudença em seu sistema. Contate o suporte xCALLY Motion enviando o Token antigo e o novo",
-    "GRAY_PERIOD_EXPIRATION": "Período Pré Expiração (Gray Period)",
+    "GRAY_PERIOD_EXPIRATION": "Período Próximo da Expiração (Gray Period)",
     "EXPIRATION_REASON_MESSAGE_GRAY": "Sua licença expirou ou foi desativada. Entre em contato com o suporte do xCALLY Motion",
     "EXPIRATION_REASON_MESSAGE_CHANGED": "Seu Token foi alterado devido a uma alteração no seu sistema. Contate o suporte xCALLY Motion enviando o Token antigo e o novo",
     "MESSENGER_DISABLED": "A mensagem interna está desativada para este agente!",
index 56609ea..4eeeed9 100644 (file)
@@ -4,17 +4,17 @@
     "EMAIL_ADRESS": "Endereço de e-mail",
     "PASSWORD": "Senha",
     "PASSWORD_CONFIRM": "Confirmação de senha",
-    "UPDATE_PASSWORD": "RESETAR MINHA SENHA",
+    "UPDATE_PASSWORD": "REDEFINIR MINHA SENHA",
     "GO_BACK": "Volte para o login",
-    "PASSWORD_RESET": "Resetar a senha",
+    "PASSWORD_RESET": "Redefinir a senha",
     "PASSWORD_RESET_MESSAGE": "Sua senha foi redefinida corretamente, agora você pode fazer o login!",
-    "PASSWORD_RESET_ERROR": "Erro de redefinição de senha",
+    "PASSWORD_RESET_ERROR": "Erro ao redefinir senha",
     "ERRORS": {
-      "EMAIL_REQUIRED": "O campo de email é obrigatório",
-      "EMAIL_MUST_VALID": "E-mail deve ser um endereço de e-mail válido",
+      "EMAIL_REQUIRED": "O campo de e-mail é obrigatório",
+      "EMAIL_MUST_VALID": "Endereço de e-mail inválido.",
       "PASSWORD_REQUIRED": "O campo de senha é obrigatório",
       "CONFIRM_NOT_MATCH": "As senhas não combinam",
-      "SECURE_PASSWORD_PATTERN": "Deve conter pelo menos 8 caracteres, com um mínimo de 1 letra minúscula, 1 letra maiúscula, 1 caractere numérico e 1 caractere especial ~!? * @ # $% ^ & -_ = + [{]}."
+      "SECURE_PASSWORD_PATTERN": "Deve conter pelo menos 8 caracteres, com mo mínimo de 1 letra minúscula, 1 letra maiúscula, 1 caractere numérico e 1 caractere especial ~!? * @ # $% ^ & -_ = + [{]}."
     }
   }
 }
index f7d1abd..9b1db71 100644 (file)
     "WHATSAPP": "ال WhatsApp",
     "NO_AUTOANSWER_CONFIGURED": "لم يتم تكوين الرد التلقائي للقنوات",
     "BOSNIAN": "البوسنية",
-    "ICELANDIC": "جزيرة"
+    "ICELANDIC": "جزيرة",
+    "WAITINGQUEUECALLS": "انتظار مكالمات قائمة الانتظار"
   }
 }
index dbe8cbb..298c51e 100644 (file)
       "PREVIEW_RECALLME": "Ovo je Recall Me poziv zakazan za {{date}}"
     },
     "BOSNIAN": "Bosanski jezik",
-    "ICELANDIC": "Islandski"
+    "ICELANDIC": "Islandski",
+    "WAITINGQUEUECALLS": "Čekanje u redu poziva"
   }
 }
index 6a0408a..763050c 100644 (file)
     "WHATSAPP": "Whatsapp",
     "NO_AUTOANSWER_CONFIGURED": "Pro kanály není nakonfigurována žádná automatická odpověď",
     "BOSNIAN": "bosenský",
-    "ICELANDIC": "Islandský"
+    "ICELANDIC": "Islandský",
+    "WAITINGQUEUECALLS": "Čekání na volání ve frontě"
   }
 }
index 60ae458..59f9761 100644 (file)
     "WHATSAPP": "Whatsapp",
     "NO_AUTOANSWER_CONFIGURED": "Intet autosvar konfigureret for kanaler",
     "BOSNIAN": "bosnisk",
-    "ICELANDIC": "Islandsk"
+    "ICELANDIC": "Islandsk",
+    "WAITINGQUEUECALLS": "Ventende køopkald"
   }
 }
index 7fe5d1f..29d0477 100644 (file)
     "WHATSAPP": "WhatsApp",
     "NO_AUTOANSWER_CONFIGURED": "Keine automatische Antwort konfiguriert",
     "BOSNIAN": "bosnisch",
-    "ICELANDIC": "Isländisch"
+    "ICELANDIC": "Isländisch",
+    "WAITINGQUEUECALLS": "Warteschlangenanrufe"
   }
 }
index 2a5f385..f18fb94 100644 (file)
     "WHATSAPP": "Whatsapp",
     "NO_AUTOANSWER_CONFIGURED": "No hay respuesta automática configurada para los canales",
     "BOSNIAN": "bosnio",
-    "ICELANDIC": "isleño"
+    "ICELANDIC": "isleño",
+    "WAITINGQUEUECALLS": "Llamadas en cola de espera"
   }
 }
index 5092009..5296cdf 100644 (file)
     "WHATSAPP": "Whatsapp",
     "NO_AUTOANSWER_CONFIGURED": "Kanalite jaoks pole automaatset vastust seadistatud",
     "BOSNIAN": "bosnia keel",
-    "ICELANDIC": "saarlane"
+    "ICELANDIC": "saarlane",
+    "WAITINGQUEUECALLS": "Kõnede ootel"
   }
 }
index 100dc92..ca9bee9 100644 (file)
     "WHATSAPP": "واتساپ",
     "NO_AUTOANSWER_CONFIGURED": "هیچ پاسخ خودکار برای کانال ها پیکربندی نشده است",
     "BOSNIAN": "بوسنیایی",
-    "ICELANDIC": "جزیره ای"
+    "ICELANDIC": "جزیره ای",
+    "WAITINGQUEUECALLS": "تماس های صف انتظار"
   }
 }
index 248942a..ba46232 100644 (file)
     "WHATSAPP": "Whatsapp",
     "NO_AUTOANSWER_CONFIGURED": "Kanaville ei ole määritetty automaattista vastausta",
     "BOSNIAN": "bosnialainen",
-    "ICELANDIC": "Islannin kieli"
+    "ICELANDIC": "Islannin kieli",
+    "WAITINGQUEUECALLS": "Odottaa puheluita"
   }
 }
index 2a35a78..50e9ac0 100644 (file)
     "WHATSAPP": "WhatsApp",
     "NO_AUTOANSWER_CONFIGURED": "Aucune réponse automatique configurée pour les canaux",
     "BOSNIAN": "bosniaque",
-    "ICELANDIC": "Islandais"
+    "ICELANDIC": "Islandais",
+    "WAITINGQUEUECALLS": "Appels en file d'attente"
   }
 }
index 52611b6..109a522 100644 (file)
     "WHATSAPP": "וואטסאפ",
     "NO_AUTOANSWER_CONFIGURED": "לא הוגדר תשובה אוטומטית עבור ערוצים",
     "BOSNIAN": "בוסנית",
-    "ICELANDIC": "אילנדית"
+    "ICELANDIC": "אילנדית",
+    "WAITINGQUEUECALLS": "ממתינים לשיחות בתור"
   }
 }
index 61c0fbf..239448e 100644 (file)
     "WHATSAPP": "Whatsapp",
     "NO_AUTOANSWER_CONFIGURED": "चैनलों के लिए कोई स्वतः उत्तर कॉन्फ़िगर नहीं किया गया",
     "BOSNIAN": "बोस्नियाई",
-    "ICELANDIC": "आइलैंडिक"
+    "ICELANDIC": "आइलैंडिक",
+    "WAITINGQUEUECALLS": "प्रतीक्षा कतार कॉल"
   }
 }
index b91b9d5..0ea09bd 100644 (file)
     "PHONE2CALL": "Telefon a híváshoz",
     "NO_AUTOANSWER_CONFIGURED": "Nincs automatikus válasz konfigurálva a csatornákhoz",
     "BOSNIAN": "bosnyák",
-    "ICELANDIC": "szigeti"
+    "ICELANDIC": "szigeti",
+    "WAITINGQUEUECALLS": "Várakozó hívások"
   }
 }
index da184b6..cbfdf39 100644 (file)
     "WHATSAPP": "ada apa",
     "NO_AUTOANSWER_CONFIGURED": "Tidak ada jawaban otomatis yang dikonfigurasi untuk saluran",
     "BOSNIAN": "Bosnia",
-    "ICELANDIC": "pulau"
+    "ICELANDIC": "pulau",
+    "WAITINGQUEUECALLS": "Menunggu panggilan antrian"
   }
 }
index 161e45c..7d58b11 100644 (file)
 {
   "TOOLBAR": {
-    "CHANGE_LANGUAGE_TITLE": "Change language",
-    "CHANGE_LANGUAGE_MESSAGE": "Remember to refresh the page to apply RTL Support (if enabled)",
+    "CHANGE_LANGUAGE_TITLE": "Breyta tungumál",
+    "CHANGE_LANGUAGE_MESSAGE": "Mundu að endurnýja síðuna til að nota RTL Support (ef það er virkjað)",
     "HEBREW": "Hebrew",
-    "PREFIXES": "Prefixes",
-    "CALL": "Call",
+    "PREFIXES": "Forskeyti",
+    "CALL": "Hringdu",
     "ARABIC": "Arabic",
     "INDONESIAN": "Indonesian",
-    "RESETPASSWORD": "Reset Password",
-    "PASSWORD_EXPIRE_REMAINING_DAYS": "Remaining days before your password expires",
-    "BROWSER_COMPATIBILITY": "Browser Compatibility [Chrome, Opera, Safari]",
-    "RECORDING": "Recording",
-    "INVALID_LICENSE": "Invalid License",
-    "BROWSER": "Browser",
-    "OS": "Operating System",
-    "REQUIREMENTS": "Requirements",
-    "LICENSE": "License",
+    "RESETPASSWORD": "Endurstilltu lykilorð",
+    "PASSWORD_EXPIRE_REMAINING_DAYS": "Dagar sem eftir eru áður en lykilorðið þitt rennur út",
+    "BROWSER_COMPATIBILITY": "Vafrasamhæfni [Chrome, Opera, Safari]",
+    "RECORDING": "Upptaka",
+    "INVALID_LICENSE": "Ógilt leyfi",
+    "BROWSER": "Vafri",
+    "OS": "Stýrikerfi",
+    "REQUIREMENTS": "Skilyrði",
+    "LICENSE": "Leyfi",
     "HTTPS": "HTTPS",
-    "PHONE2CALL": "Phone to call",
-    "CHANNELS": "Channels",
-    "CHANNEL": "Channel",
-    "NUM_NOTIFICATIONS": "Notifications",
-    "NOTIFICATIONS": "Autoanswer enabled",
-    "DELAY": "Autoanswer delay [secs]",
-    "AUTOANSWER_NOTIFICATIONS": "Autoanswer notifications",
-    "CHAT": "Chat",
-    "EMAIL": "Email",
+    "PHONE2CALL": "Númer til að hringja í ",
+    "CHANNELS": "Rásir",
+    "CHANNEL": "Rásir",
+    "NUM_NOTIFICATIONS": "tilkyninningar",
+    "NOTIFICATIONS": "Sjálfvirk svörun virk",
+    "DELAY": "Seinkun á sjálfvirkri svörun [sek.]",
+    "AUTOANSWER_NOTIFICATIONS": "Tilkynningar á sjálfvirkri svörun",
+    "CHAT": "Spjall",
+    "EMAIL": "Netfang",
     "SMS": "SMS",
     "OPENCHANNEL": "Openchannel",
     "FAX": "Fax",
-    "WHATSAPP": "Whatsapp connector",
-    "WEBRTCSUPPORT": "WebRTC Support",
-    "REGISTERED": "Registered",
-    "NOT_REGISTERED": "Not registered",
-    "WEBRTC_LICENSE_NOT_ENABELD": "WebRTC License is not enabled",
-    "ATTENDED_TRANSFER": "Attended Tranfer",
-    "TRANSFER": "Transfer",
-    "TARGET": "Target",
-    "CANCEL": "Cancel",
-    "FILENAME": "File name",
-    "STATUS": "Status",
-    "NO_AUTOANSWER_CONFIGURED": "No autoanswer configured for channels",
-    "ACTIONS": "Actions",
-    "SPEAKER": "Speaker",
-    "RINGING": "Ringing tone",
-    "MICROPHONE": "Microphone",
-    "CONFERENCE": "Conference with 2 active sessions",
-    "PROFILE": "Profile",
-    "SERVICES": "Services",
-    "AUDIO": "Audio",
-    "FULLNAME": "Fullname",
-    "NAME": "Name",
-    "INTERNAL": "Internal",
-    "RINGINGDEVICE": "Ringing Device",
-    "SPEAKERDEVICE": "Speaker Device",
-    "MICROPHONEDEVICE": "Microphone Device",
-    "CHANGEPASSWORD": "Change password",
-    "SETTINGS": "Settings",
-    "AUTOANSWER": "Auto answer",
-    "TOGGLE_NAVIGATION": "Toggle navigation",
-    "TOGGLE_NAVIGATION_FOLD": "Toggle navigation fold",
-    "TOGGLE_NAVIGATION_MODE": "Toggle navigation mode",
-    "SEARCH": "Search",
-    "USER_SETTINGS": "User settings",
-    "TOGGLE_QUICK_PANEL": "Toggle quick panel",
-    "SOMEONE_LOGGED_YOU_OUT": "Someone logged out, do you want to stay logged?",
-    "STAY_LOGGED": "Stay logged",
-    "WARNING": "Warning",
-    "ENGLISH": "English",
-    "ITALIAN": "Italian",
-    "FRENCH": "French",
-    "KOREAN": "Korean",
-    "SPANISH": "Spanish",
-    "SWEDISH": "Swedish",
-    "RUSSIAN": "Russian",
-    "GERMAN": "German",
-    "JAPANESE": "Japanese",
-    "CHINESESIMPLIFIED": "Chinese Simplified",
-    "CHINESETRADITIONAL": "Chinese Traditional",
-    "DUTCH": "Dutch",
-    "FINNISH": "Finnish",
-    "DANISH": "Danish",
-    "PORTUGUESE": "Portuguese",
-    "NORWEGIAN": "Norwegian",
+    "WHATSAPP": "Whatsapp tengill",
+    "WEBRTCSUPPORT": "WebRTC hjálp",
+    "REGISTERED": "Skráð",
+    "NOT_REGISTERED": "Ekki skráð",
+    "WEBRTC_LICENSE_NOT_ENABELD": "WebRTC leyfi er ekki virkjað",
+    "ATTENDED_TRANSFER": "Flutningur tókst",
+    "TRANSFER": "Flutt",
+    "TARGET": "Markmið",
+    "CANCEL": "Hætta við",
+    "FILENAME": "Skráarnafn",
+    "STATUS": "Staða",
+    "NO_AUTOANSWER_CONFIGURED": "Ekkert sjálfvirkt svar stillt fyrir rásirnar",
+    "ACTIONS": "Aðgerð",
+    "SPEAKER": "Hátalari",
+    "RINGING": "Hringi tónn",
+    "MICROPHONE": "Hljóðnemi",
+    "CONFERENCE": "Hópsamtal með tveir samtíma samtölum",
+    "PROFILE": "Snið",
+    "SERVICES": "Þjónusta",
+    "AUDIO": "Hljóð",
+    "FULLNAME": "fullt nafn",
+    "NAME": "Nafn",
+    "INTERNAL": "Innanhúss",
+    "RINGINGDEVICE": "Hringi tæki",
+    "SPEAKERDEVICE": "Hátalari",
+    "MICROPHONEDEVICE": "Hljóðnemi",
+    "CHANGEPASSWORD": "CBreyttu lykilorði",
+    "SETTINGS": "Stillingar",
+    "AUTOANSWER": "Sjálfvirkt svar",
+    "TOGGLE_NAVIGATION": "Skiptu um leiðsögn",
+    "TOGGLE_NAVIGATION_FOLD": "Skiptu um leiðsögu að hluta",
+    "TOGGLE_NAVIGATION_MODE": "Skiptu um leiðsögu hátt",
+    "SEARCH": "Leita",
+    "USER_SETTINGS": "Notenda stillingar",
+    "TOGGLE_QUICK_PANEL": "Skiptu um hraðborð",
+    "SOMEONE_LOGGED_YOU_OUT": "Einhver skráði sig út, viltu vera innskráður?",
+    "STAY_LOGGED": "Vertu innskráður",
+    "WARNING": "aðvörun",
+    "ENGLISH": "Enska",
+    "ITALIAN": "Ítalskur",
+    "FRENCH": "Franskur",
+    "KOREAN": "Kórenanskur",
+    "SPANISH": "Spánskur",
+    "SWEDISH": "Sænskur",
+    "RUSSIAN": "Rússneskur",
+    "GERMAN": "Þýskur",
+    "JAPANESE": "Japanskur",
+    "CHINESESIMPLIFIED": "Einföld kínverska",
+    "CHINESETRADITIONAL": "Hefðbundin kínverska",
+    "DUTCH": "Hollenska",
+    "FINNISH": "Finnska",
+    "DANISH": "Danska",
+    "PORTUGUESE": "Portugíska",
+    "NORWEGIAN": "Norska",
     "HINDI": "Hindi",
-    "HUNGARIAN": "Hungarian",
-    "TURKISH": "Turkish",
-    "PERSIAN": "Persian",
-    "LATVIAN": "Latvian",
-    "POLISH": "Polish",
-    "LOGIN_TIME": "Login Time",
-    "PAUSE_TIME": "Pause Time",
-    "PREVIEW": "Preview",
-    "CONFIRM_PASSWORD": "Confirm Password",
-    "NEW_PASSWORD": "New Password",
-    "OLD_PASSWORD": "Old Password",
-    "SAVE": "Save",
-    "TRIAL_VERSION": "Trial Version",
-    "PAUSE": "Pause",
-    "RESUME": "End Pause",
-    "NO_PAUSES_AVAILABLE": "No pauses available",
-    "CZECH": "Czech",
+    "HUNGARIAN": "Ungverska",
+    "TURKISH": "Tyrkneska",
+    "PERSIAN": "Persneska",
+    "LATVIAN": "Lettneska",
+    "POLISH": "Pólska",
+    "LOGIN_TIME": "Innskráning kl.",
+    "PAUSE_TIME": "Hlé kl.",
+    "PREVIEW": "Forskoða",
+    "CONFIRM_PASSWORD": "Staðfesta lykilorð",
+    "NEW_PASSWORD": "Nýtt lykilorð",
+    "OLD_PASSWORD": "Eldra lykilorð",
+    "SAVE": "Geyma",
+    "TRIAL_VERSION": "Prufu útgáfa",
+    "PAUSE": "Hlé",
+    "RESUME": "Enda hlé",
+    "NO_PAUSES_AVAILABLE": "Engin hlé aðgengileg",
+    "CZECH": "Tekkneska",
     "ERRORS": {
-      "FIELD_REQUIRED": "Mandatory Field",
-      "PASSWORD_REQUIRED": "Mandatory Field",
-      "CONFIRM_NOT_MATCH": "The passwords don't match",
-      "SECURE_PASSWORD_PATTERN": "The password must be at least 8 characters long and have 1 lowercase character, 1 uppercase character, 1 number and 1 special character ~!?*@#$%^&-_=+[{]}.",
-      "PASSWORD_OLDPASSWORD_MATCH": "New password must be different from previous one"
+      "FIELD_REQUIRED": "Skilyrtur reitur",
+      "PASSWORD_REQUIRED": "Skilyrtur reitur",
+      "CONFIRM_NOT_MATCH": "Lykilorðin stemma ekki",
+      "SECURE_PASSWORD_PATTERN": "Lykilorðið verður að vera að minnsta kosti 8 stafir að lengd og hafa 1 lágstaf, 1 hástaf, 1 tölu og 1 sérstaf ~!?*@#$%^&-_=+[{]}.",
+      "PASSWORD_OLDPASSWORD_MATCH": "Lykilorðið má ekki vera það sama og síðasta"
     },
-    "BRAZILIAN": "Brazilian",
-    "ESTONIAN": "Estonian",
-    "WEBRTC_MICROPHONE_NOT_AVAILABLE": "No microphone available",
-    "WEBRTC_SPEAKER_NOT_AVAILABLE": "No speaker available",
-    "WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE": "No audio devices available",
-    "NO_AVAILABLE_INFO": "No available info",
-    "LITHUANIAN": "Lithuanian",
-    "NOTIFICATION_TITLE": "New notification from {{sender}}",
-    "NOTIFICATION_TITLE_RECIPIENT": "to {{recipient}}",
-    "USER_FORCE_LOGOUT": "{{ip}} has logged in with your credentials. \nMultiple logins are not allowed",
-    "LOGOUT": "Logout",
-    "SESSION_TIMEOUT": "The session will be automatically closed after 60 seconds",
+    "BRAZILIAN": "Brasilískt",
+    "ESTONIAN": "Eistneskur",
+    "WEBRTC_MICROPHONE_NOT_AVAILABLE": "Engin hljóðnemi aðgengilegur",
+    "WEBRTC_SPEAKER_NOT_AVAILABLE": "Enginn hátalari aðgengilegur",
+    "WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE": "Ekkert hljóðtæki aðgengilegt",
+    "NO_AVAILABLE_INFO": "Engar upplýsingar til staðar",
+    "LITHUANIAN": "Litháískur",
+    "NOTIFICATION_TITLE": "Ný tilkynning frá {{sender}}",
+    "NOTIFICATION_TITLE_RECIPIENT": "Til {{recipient}}",
+    "USER_FORCE_LOGOUT": "{{ip}} hefur þegar skráð sig inn með skilríkjunum. \n Margar innskráningar eru ekki leyfðar",
+    "LOGOUT": "Útskráning",
+    "SESSION_TIMEOUT": "Aðgerðinni verður sjálfkrafa lokað eftir 60 sekúndur",
     "HELP": {
-      "PREVIEW_RECALLME": "This is a Recall Me call scheduled for {{date}}"
+      "PREVIEW_RECALLME": "Þetta er „Call Me“ símtal áætluð {{date}}"
     },
-    "BOSNIAN": "Bosnian",
-    "ICELANDIC": "íslenskt"
+    "BOSNIAN": "Bosníu",
+    "ICELANDIC": "Íslenskt",
+    "WAITINGQUEUECALLS": "Símtöl í biðröð"
   }
 }
index d58a8eb..2b83342 100644 (file)
     "WHATSAPP": "Whatsapp",
     "NO_AUTOANSWER_CONFIGURED": "チャネルに自動応答が設定されていません",
     "BOSNIAN": "ボスニア語",
-    "ICELANDIC": "島の"
+    "ICELANDIC": "島の",
+    "WAITINGQUEUECALLS": "キューの呼び出しを待機しています"
   }
 }
index b39b7a4..abbf500 100644 (file)
     "WHATSAPP": "왓츠앱",
     "NO_AUTOANSWER_CONFIGURED": "채널에 대해 구성된 자동 응답이 없습니다.",
     "BOSNIAN": "보스니아어",
-    "ICELANDIC": "아일랜드어"
+    "ICELANDIC": "아일랜드어",
+    "WAITINGQUEUECALLS": "대기열 호출 대기 중"
   }
 }
index b4f3558..9033022 100644 (file)
     "WHATSAPP": "Whatsapp",
     "NO_AUTOANSWER_CONFIGURED": "Automatinis atsakymas kanalams nesukonfigūruotas",
     "BOSNIAN": "bosnių",
-    "ICELANDIC": "Islandiškas"
+    "ICELANDIC": "Islandiškas",
+    "WAITINGQUEUECALLS": "Laukia skambučių eilėje"
   }
 }
index 1d28d64..4a1a15e 100644 (file)
     "WHATSAPP": "Whatsapp",
     "NO_AUTOANSWER_CONFIGURED": "Kanāliem nav konfigurēta automātiskā atbilde",
     "BOSNIAN": "bosniešu",
-    "ICELANDIC": "Islandisks"
+    "ICELANDIC": "Islandisks",
+    "WAITINGQUEUECALLS": "Zvanu gaidīšana rindā"
   }
 }
index da368a8..62bbcda 100644 (file)
     "WHATSAPP": "Whatsapp",
     "NO_AUTOANSWER_CONFIGURED": "Geen automatisch antwoord geconfigureerd voor kanalen",
     "BOSNIAN": "Bosnisch",
-    "ICELANDIC": "eilandachtig"
+    "ICELANDIC": "eilandachtig",
+    "WAITINGQUEUECALLS": "Wachtrij-oproepen"
   }
 }
index 1829459..3e931a5 100644 (file)
     "WHATSAPP": "Hva skjer",
     "NO_AUTOANSWER_CONFIGURED": "Ingen autosvar konfigurert for kanaler",
     "BOSNIAN": "bosnisk",
-    "ICELANDIC": "Islandsk"
+    "ICELANDIC": "Islandsk",
+    "WAITINGQUEUECALLS": "Ventende køanrop"
   }
 }
index 0239f1b..a5f7d68 100644 (file)
     "WHATSAPP": "Whatsapp",
     "NO_AUTOANSWER_CONFIGURED": "Brak automatycznej odpowiedzi skonfigurowanej dla kanałów",
     "BOSNIAN": "bośniacki",
-    "ICELANDIC": "Islandzki"
+    "ICELANDIC": "Islandzki",
+    "WAITINGQUEUECALLS": "Połączenia oczekujące w kolejce"
   }
 }
index 2ebfc33..f534357 100644 (file)
@@ -2,15 +2,15 @@
   "TOOLBAR": {
     "PREFIXES": "Prefixos",
     "CALL": "Chamada",
-    "ARABIC": "Arabic",
+    "ARABIC": "Árabico",
     "INDONESIAN": "Indonésio",
-    "RESETPASSWORD": "Redefinir senha",
-    "PASSWORD_EXPIRE_REMAINING_DAYS": "Dias restantes antes de sua senha expirar",
-    "BROWSER_COMPATIBILITY": "Compatibilidade do navegador [Chrome, Opera, Safari]",
+    "RESETPASSWORD": "Redefinir Senha",
+    "PASSWORD_EXPIRE_REMAINING_DAYS": "Dias restantes para sua senha expirar",
+    "BROWSER_COMPATIBILITY": "Compatibilidade do Navegador [Chrome, Opera, Safari]",
     "RECORDING": "Gravação",
-    "INVALID_LICENSE": "Licença inválida",
+    "INVALID_LICENSE": "Licença Inválida",
     "BROWSER": "Navegador",
-    "OS": "Sistema operacional",
+    "OS": "Sistema Operacional",
     "REQUIREMENTS": "Requisitos",
     "LICENSE": "Licença",
     "HTTPS": "HTTPS",
     "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",
     "STATUS": "Status",
     "ACTIONS": "Ações",
-    "SPEAKER": "Alto-falante",
-    "RINGING": "Toque de celular",
+    "SPEAKER": "Saída de Som",
+    "RINGING": "Tom de Toque",
     "MICROPHONE": "Microfone",
     "PROFILE": "Perfil",
     "SERVICES": "Serviços",
     "AUDIO": "Áudio",
-    "FULLNAME": "Nome completo",
+    "FULLNAME": "Nome Completo",
     "NAME": "Nome",
     "INTERNAL": "Interno",
-    "RINGINGDEVICE": "Dispositivo de toque",
-    "SPEAKERDEVICE": "Dispositivo de alto-falante",
-    "MICROPHONEDEVICE": "Dispositivo de microfone",
-    "CHANGEPASSWORD": "Mudar senha",
+    "RINGINGDEVICE": "Saída de Toque",
+    "SPEAKERDEVICE": "Saída de Som",
+    "MICROPHONEDEVICE": "Microfone",
+    "CHANGEPASSWORD": "Alterar Senha",
     "SETTINGS": "Configurações",
-    "AUTOANSWER": "Resposta automática",
-    "TOGGLE_NAVIGATION": "Alternar de navegação",
-    "TOGGLE_NAVIGATION_FOLD": "Toggle navigation fold",
-    "TOGGLE_NAVIGATION_MODE": "Alternar modo de navegação",
+    "AUTOANSWER": "Atendimento Automático",
+    "TOGGLE_NAVIGATION": "Alternar de Navegação",
+    "TOGGLE_NAVIGATION_FOLD": "Separador de Altenar de Navegação",
+    "TOGGLE_NAVIGATION_MODE": "Modo de Alternar de Navegação",
     "SEARCH": "Procurar",
     "USER_SETTINGS": "Configurações do usuário",
     "TOGGLE_QUICK_PANEL": "Alternar painel rápido",
     "RUSSIAN": "Russo",
     "GERMAN": "Alemão",
     "JAPANESE": "Japonês",
-    "CHINESESIMPLIFIED": "Chinês simplificado",
-    "CHINESETRADITIONAL": "Chinês tradicional",
-    "DUTCH": "Dutch",
+    "CHINESESIMPLIFIED": "Chinês Simplificado",
+    "CHINESETRADITIONAL": "Chinês Tradicional",
+    "DUTCH": "Holandês",
     "FINNISH": "Finlandês",
-    "DANISH": "Danish",
+    "DANISH": "Dinamarquês",
     "PORTUGUESE": "Português(PT)",
     "NORWEGIAN": "Norueguês",
     "HINDI": "Hindi",
     "PERSIAN": "Persa",
     "LATVIAN": "Latvian",
     "POLISH": "Polonês",
-    "LOGIN_TIME": "Hora do login",
-    "PAUSE_TIME": "Tempo de pausa",
+    "LOGIN_TIME": "Hora do Login",
+    "PAUSE_TIME": "Tempo de Pausa",
     "PREVIEW": "Visualizar",
-    "CONFIRM_PASSWORD": "Confirme a senha",
-    "NEW_PASSWORD": "Nova senha",
-    "OLD_PASSWORD": "Senha antiga",
+    "CONFIRM_PASSWORD": "Confirme a Senha",
+    "NEW_PASSWORD": "Nova Senha",
+    "OLD_PASSWORD": "Senha Antiga",
     "SAVE": "Salvar",
-    "TRIAL_VERSION": "Versão de teste",
+    "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",
     "CZECH": "Tcheco",
     "ESTONIAN": "Estonian",
     "CONFERENCE": "Conferência com 2 sessões ativas",
-    "CHANGE_LANGUAGE_MESSAGE": "Lembre-se de atualizar a página para aplicar o suporte RTL (se ativado)",
-    "CHANGE_LANGUAGE_TITLE": "Mudar idioma",
+    "CHANGE_LANGUAGE_MESSAGE": "Lembre-se de atualizar a página para aplicar o suporte RTL (se habilitado)",
+    "CHANGE_LANGUAGE_TITLE": "Alterar idioma",
     "WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE": "Nenhum dispositivo de áudio disponível",
     "WEBRTC_MICROPHONE_NOT_AVAILABLE": "Nenhum microfone disponível",
-    "WEBRTC_SPEAKER_NOT_AVAILABLE": "Nenhum alto-falante disponível",
+    "WEBRTC_SPEAKER_NOT_AVAILABLE": "Nenhuma saída de som disponível",
     "NO_AVAILABLE_INFO": "Nenhuma informação disponível",
     "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",
+    "USER_FORCE_LOGOUT": "{{ip}} fez login com suas credenciais.\nLogins simultâneos não são permitidos",
     "LOGOUT": "Sair",
-    "SESSION_TIMEOUT": "A sessão será fechada automaticamente após 60 segundos",
+    "SESSION_TIMEOUT": "A sessão será encerrada automaticamente após 60 segundos",
     "PHONE2CALL": "Telefone para ligar",
-    "HUNGARIAN": "húngaro",
-    "AUTOANSWER_NOTIFICATIONS": "Notificações de resposta automática",
+    "HUNGARIAN": "Húngaro",
+    "AUTOANSWER_NOTIFICATIONS": "Atendimento Automático de Notificações",
     "CHANNEL": "Canal",
     "CHANNELS": "Canais",
-    "CHAT": "Bate-papo",
-    "DELAY": "Atraso de resposta automática [s]",
-    "EMAIL": "E-mail",
+    "CHAT": "Chat",
+    "DELAY": "Delay no atendimento automático [sef]",
+    "EMAIL": "Email",
     "FAX": "Fax",
     "NOTIFICATIONS": "Atendimento automático ativado",
     "NUM_NOTIFICATIONS": "Notificações",
-    "OPENCHANNEL": "Canal aberto",
+    "OPENCHANNEL": "Open Channel",
     "SMS": "SMS",
     "WHATSAPP": "Whatsapp",
-    "NO_AUTOANSWER_CONFIGURED": "Nenhuma resposta automática configurada para canais",
-    "BOSNIAN": "bósnio",
-    "ICELANDIC": "ilhéu"
+    "NO_AUTOANSWER_CONFIGURED": "Nenhum atendimento automático foi configurada para os canais",
+    "BOSNIAN": "Bósnio",
+    "ICELANDIC": "Islandês",
+    "WAITINGQUEUECALLS": "Esperando chamadas em fila"
   }
 }
index 7a5cb84..bf64d9b 100644 (file)
     "WHATSAPP": "Whatsapp",
     "NO_AUTOANSWER_CONFIGURED": "Nenhuma resposta automática configurada para canais",
     "BOSNIAN": "bósnio",
-    "ICELANDIC": "ilhéu"
+    "ICELANDIC": "ilhéu",
+    "WAITINGQUEUECALLS": "Esperando chamadas em fila"
   }
 }
index ea13d42..5670c7b 100644 (file)
     "WHATSAPP": "WhatsApp",
     "NO_AUTOANSWER_CONFIGURED": "Для каналов не настроен автоответчик",
     "BOSNIAN": "боснийский",
-    "ICELANDIC": "островной"
+    "ICELANDIC": "островной",
+    "WAITINGQUEUECALLS": "Ожидание вызовов в очереди"
   }
 }
index dffab42..7f5be8b 100644 (file)
     "WHATSAPP": "Whatsapp",
     "NO_AUTOANSWER_CONFIGURED": "Inget autosvar konfigurerat för kanaler",
     "BOSNIAN": "bosniska",
-    "ICELANDIC": "Islandic"
+    "ICELANDIC": "Islandic",
+    "WAITINGQUEUECALLS": "Väntande kösamtal"
   }
 }
index d0e603c..a8faad3 100644 (file)
     "WHATSAPP": "Naber",
     "NO_AUTOANSWER_CONFIGURED": "Kanallar için yapılandırılmamış otomatik yanıt yok",
     "BOSNIAN": "Boşnakça",
-    "ICELANDIC": "adalı"
+    "ICELANDIC": "adalı",
+    "WAITINGQUEUECALLS": "Bekleyen aramalar"
   }
 }
index 34075b2..8effc23 100644 (file)
     "WHATSAPP": "Whatsapp",
     "NO_AUTOANSWER_CONFIGURED": "没有为频道配置自动应答",
     "BOSNIAN": "波斯尼亚语",
-    "ICELANDIC": "岛国"
+    "ICELANDIC": "岛国",
+    "WAITINGQUEUECALLS": "等待队列呼叫"
   }
 }
index d301196..d598830 100644 (file)
     "WHATSAPP": "Whatsapp",
     "NO_AUTOANSWER_CONFIGURED": "沒有為頻道配置自動應答",
     "BOSNIAN": "波斯尼亞語",
-    "ICELANDIC": "島國"
+    "ICELANDIC": "島國",
+    "WAITINGQUEUECALLS": "等待隊列呼叫"
   }
 }
index 209094a..ce6e49a 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.0bca52b6.js"></script>
+  <script src="scripts/app.43295fa3.js"></script>
 
   <!-- CKEDITOR -->
   <script src="assets/plugins/ckeditor/ckeditor.js"></script>
similarity index 52%
rename from public/scripts/app.0bca52b6.js
rename to public/scripts/app.43295fa3.js
index 1ecefe6..bd851d6 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,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})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:510}).state("app.chat.realtime.queues",{url:"/queues",params:{channel:"chat"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/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:1003})}]},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",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,ChatWebsiteId",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:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatWebsites",fields:"id,name",sort:"-updatedAt",nolimit:!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",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,MailAccountId",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:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!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",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,SmsAccountId",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:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!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",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,OpenchannelAccountId",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:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelAccounts",fields:"id,name",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",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,FaxAccountId",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:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!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",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,WhatsappAccountId",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:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!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,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})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},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",params:{channel:"fax"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/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,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})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.queues",{url:"/queues",params:{channel:"mail"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/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,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})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queues",{url:"/queues",params:{channel:"voice",direction:"outbound"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/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",params:{direction:"outbound"},controller:"QueueCallsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queue-calls/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"outbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,fields:"id,name",section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],userProfileSection:["apiResolver","Auth",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})}],voiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels",{type:"outbound"})}]},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,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})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:810}).state("app.openchannel.realtime.queues",{url:"/queues",params:{channel:"openchannel"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/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,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})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:710}).state("app.sms.realtime.queues",{url:"/queues",params:{channel:"sms"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/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,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})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},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",params:{channel:"voice",direction:"inbound"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/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",params:{direction:"inbound"},controller:"QueueCallsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queue-calls/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"inbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,fields:"id,name",section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],userProfileSection:["apiResolver","Auth",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})}],voiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels",{type:"inbound"})}]},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,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})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:2110}).state("app.whatsapp.realtime.queues",{url:"/queues",params:{channel:"whatsapp"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/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(n,t,a,i,s){var o;return{request:function(e){var n=a.get("motion.token");return e.headers=e.headers||{},s.isSameOrigin(e.url)&&n&&(e.headers.Authorization="Bearer "+n),e},responseError:function(e){switch(e.status){case 401:a.remove("motion.token"),n.$broadcast("webrtc::logout"),(o||(o=i.get("$state"))).go("app.login")}return t.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(n,a,e,t){var o=this;function i(){var a=o.selectedField.options&&!_.isEmpty(o.selectedField.options.extraOperators),i=o.selectedField.options&&!_.isEmpty(o.selectedField.options.excludedOperators);o.availableOperators=_.filter(o.operators,function(n){var e=!n.applyTo||_.includes(n.applyTo,o.selectedField.type);n.isExtra=a&&_.some(o.selectedField.options.extraOperators,function(e){return e===n.type});var t=_.includes(n.excludeFrom,o.selectedField.type)||i&&_.includes(o.selectedField.options.excludedOperators,n.type);if((e||n.isExtra)&&!t)return n})}function s(n){return e[n.model][n.action](n.params).$promise.then(function(e){return e.rows}).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 r(){!o.value||_.isArray(o.value)&&_.isEmpty(o.value)?o.isValidCondition=!1:o.selectedOperator?o.selectedOperator&&"$between"===o.selectedOperator.type?o.isValidCondition=!(!o.endRangeValue||!o.isValidRange):o.isValidCondition=!0:o.isValidCondition=!1}function l(){"number"===o.selectedField.type?_.isNumber(o.endRangeValue)?o.isValidRange=Number(o.endRangeValue)>Number(o.value):o.isValidRange=!0:"date"===o.selectedField.type&&(o.maxDateRange=moment(o.endRangeValue).subtract(1,"day"),o.isValidRange=!0),r()}function d(){var e=m();o.options.conditions.push(e),p()}function c(){var e=m(),n=_.findIndex(o.options.conditions,"style");o.options.conditions.splice(n,1,e),p(),o.pendingCondition.style=null,o.pendingCondition=void 0}function m(){return{name:o.selectedField.name,operator:n.instant("DASHBOARDS."+o.selectedOperator.translate),value:o.value,endValue:o.endRangeValue,displayValue:u(o.value),displayEndValue:u(o.endRangeValue),query:{column:o.selectedField.column,operator:o.selectedOperator.type,value:function(){var e,n=o.value,t=o.endRangeValue;switch(o.selectedField.type){case"date":var a=moment(n).utcOffset(0,!0).format("YYYY-MM-DD");if("$between"===o.selectedOperator.type){var i=moment(t).utcOffset(0,!0).format("YYYY-MM-DD");e=[a,i]}else e=a;break;case"number":e="$between"===o.selectedOperator.type?[n,t]:n;break;case"multiselect":var s=o.selectedField.options.field||"name";e=_.map(n,s);break;case"select":e=n.id;break;case"autocomplete":e=o.selectedOperator.isExtra?n:n.id;break;default:e=n}return e}()},disabled:!1}}function u(e){var n;if(e){switch(o.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"===o.selectedOperator.type?t.join(" or "):t.join(" and ");break;case"select":n=e.name;break;case"autocomplete":n=o.selectedOperator.isExtra?e:e.displayValue;break;default:n=e}return n}}function p(){o.value=null,o.endRangeValue=null,o.minDateRange=null,o.maxDateRange=null,o.isValidCondition=!1}o.operators=o.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"]}],o.addCondition=d,o.editCondition=function(e){o.pendingCondition=e,o.pendingCondition.style="md-amber-200-bg",o.selectedField=_.find(o.options.fields,["name",o.pendingCondition.name]),i(),o.selectedOperator=_.find(o.availableOperators,["type",o.pendingCondition.query.operator]),"date"===o.selectedField.type&&"string"==typeof o.pendingCondition.value?(o.value=new Date(o.pendingCondition.value),o.minDateRange=moment(o.value).add(1,"day"),o.endRangeValue=o.pendingCondition.endValue?new Date(o.pendingCondition.endValue):void 0):(o.value=o.pendingCondition.value,o.endRangeValue=o.pendingCondition.endValue);o.isValidRange=!0,o.isValidCondition=!0},o.updateCondition=c,o.cancelUpdateCondition=function(){o.pendingCondition.style=null,o.pendingCondition=void 0},o.setConditionStatus=function(e){e.style=e.disabled?void 0:"chip-disabled",e.disabled=!e.disabled},o.removeCondition=function(){_.isEmpty(o.options.conditions)&&o.clearFilter()},o.getValues=function(){return o.selectedField.options.routes&&Array.isArray(o.selectedField.options.routes)?(e=angular.copy(o.selectedField.options.routes).map(function(e){return s(e)}),a.all(e).then(function(e){o.selectedField.values=_.flatten(e)})):o.selectedField.options.route?function(){var e=angular.copy(o.selectedField.options.route);if("autocomplete"===o.selectedField.type)for(var n=0;n<Object.keys(e.params).length;n++){var t=Object.keys(e.params)[n];"@autocomplete"===e.params[t]&&(e.params[t]=o.searchText,e.params.autocomplete=!0)}return a.resolve().then(function(){if(!o.selectedField.values||!0===e.params.autocomplete)return s(e)}).then(function(e){return e&&(o.selectedField.values=e),"autocomplete"===o.selectedField.type?function(e){var n=[];o.searchText&&(n=e.filter(function(e){e.displayValue="";for(var n=0;n<o.selectedField.options.searchFields.length;n++){var t=o.selectedField.options.searchFields[n],a=e[t]||"";e.displayValue+=a+" "}return _.trimEnd(e.displayValue),e.displayValue.toLowerCase().includes(o.searchText.toLowerCase())}));return n}(o.selectedField.values):o.selectedField.values})}():(o.selectedField.values.forEach(function(e){e.translate&&(e.name=n.instant(e.translate))}),o.selectedField.values);var e},o.onFieldChange=function(){o.value=void 0,o.endRangeValue=void 0,o.searchText=void 0,o.isValidCondition=!1,i(),o.autoSelectOperator=1===o.availableOperators.length,o.autoSelectOperator||(o.selectedOperator=void 0)},o.onOperatorChange=function(e){o.isValidRange=!0,o.selectedOperator&&(e?e.applyTo?0<_.difference(o.selectedOperator.applyTo,e.applyTo).length&&(o.value=null):o.selectedOperator.applyTo&&(o.value=null):o.value||(o.value=null),"between"!=o.selectedOperator.type&&(o.endRangeValue=null),o.selectedField.options&&!_.isEmpty(o.selectedField.options.extraOperators)&&(o.selectedOperator.isExtra=_.some(o.selectedField.options.extraOperators,function(e){return e===o.selectedOperator.type})));r()},o.onValueChange=function(){o.selectedOperator&&"$between"===o.selectedOperator.type?"number"===o.selectedField.type?l():"date"===o.selectedField.type&&(o.minDateRange=moment(o.value).add(1,"day"),r()):r()},o.checkRange=l,o.handleKeyboardAction=function(){o.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")}),n.onbeforeunload=function(){E.sessions.forEach(function(e){E.terminate(e)})}}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:"=",registered:"="},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(e,t,a){var i=this;function s(e,n,t){r(e).then(function(){n&&!1!==t&&i.search()})}function o(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()}function r(e){var n=e.key,t={param:i.query[n],resources:e.options,placeholder:e.placeholder,ngValue:e.ngValue};return a.setPlaceholder(t).then(function(e){i.placeholders[n]=e})}i.pickerModels={},i.placeholders={},i.localizationMap=t.localizationMap,i.onMultiselectInit=function(e){r(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=s,i.onDateRangeSelection=o,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]]:[],r(e).then(function(){i.search()})},i.selectAll=function(e){var n=e.key,t=e.ngValue||"id";i.query[n]=_.map(e.options,t),r(e).then(function(){i.search()})},e.$on("ms-quick-filter:update",function(e,t){t.filters.forEach(function(e){var n=_.find(i.filters,["name",e]);if(n)switch(n.type){case"date":o(n);break;case"multiselect":s(n,!0,t.update);break;case"select":i.search()}})})}e.$inject=["$scope","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"}})}(),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(e,n,t,a,i){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(),e.$digest()},r.interval)}function l(e){var n=(e||moment()).utcOffset(r.utcOffset).format("YYYY-MM-DD HH:mm:ss");return moment(n)}function o(){t.resolve().then(function(){return null===r.utcOffset||void 0===r.utcOffset?i.getUTCOffset():r.utcOffset}).then(function(e){return r.utcOffset=e,l()}).catch(function(e){throw 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){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.getDate",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}o(),e.$watch("vm.startTime",function(e,n){angular.isUndefined(e)||0!==e.length&&(angular.equals(e,n)||o())}),e.$on("timer-start",function(){r.startTime=void 0,o()}),n.bind("$destroy",function(){r.timeoutId&&clearTimeout(r.timeoutId)})}e.$inject=["$scope","$element","$q","toasty","settingsManager"],angular.module("app.core").directive("timer",function(){return{restrict:"EA",replace:!1,scope:{startTime:"=?",interval:"=?",utcOffset:"=?"},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 i=this;i.filter=[],i.filtered=!1,i.fontSize=20,i.label="",i.getCount=function(e){var n=0;if(e){i.fontSize=e.attrs[r]&&e.attrs[r].value?parseInt(e.attrs[r].value)-parseInt(e.attrs[r].value)%2:20;var t=e.attrs.find(function(e){return"attrChannel"===e.name});if(t||e.attrs.push({name:"attrChannel",value:"voice"}),"voice"!==e.attrs[l].value?"talking"===e.attrs[s].value?i.label="Opened":"answered"===e.attrs[s].value?i.label="Managed":i.label=e.attrs[s].value:i.label=e.attrs[s].value,e.attrs[l].value.toLowerCase().includes("voice")){e.attrs[o].value&&e.attrs[o].value.length?(i.filtered=!0,i.filter=_.intersection(e.voiceQueuesSelected,e.attrs[o].value)):(i.filtered=!1,i.filter=e.voiceQueuesSelected);for(var a=0;a<e.voiceQueues.rows.length;a+=1)_.includes(i.filter,e.voiceQueues.rows[a].id)&&(n+=e.voiceQueues.rows[a][e.attrs[s].value]?parseInt(e.voiceQueues.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("chat")){e.attrs[g].value&&e.attrs[g].value.length?(i.filtered=!0,i.filter=_.intersection(e.chatWebsitesSelected,e.attrs[g].value)):(i.filtered=!1,i.filter=e.chatWebsitesSelected);for(var a=0;a<e.chatWebsites.rows.length;a+=1)_.includes(i.filter,e.chatWebsites.rows[a].id)&&(n+=e.chatWebsites.rows[a][e.attrs[s].value]?parseInt(e.chatWebsites.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("fax")){e.attrs[c].value&&e.attrs[c].value.length?(i.filtered=!0,i.filter=_.intersection(e.faxAccountsSelected,e.attrs[c].value)):(i.filtered=!1,i.filter=e.faxAccountsSelected);for(var a=0;a<e.faxAccounts.rows.length;a+=1)_.includes(i.filter,e.faxAccounts.rows[a].id)&&(n+=e.faxAccounts.rows[a][e.attrs[s].value]?parseInt(e.faxAccounts.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("mail")){e.attrs[d].value&&e.attrs[d].value.length?(i.filtered=!0,i.filter=_.intersection(e.mailAccountsSelected,e.attrs[d].value)):(i.filtered=!1,i.filter=e.mailAccountsSelected);for(var a=0;a<e.mailAccounts.rows.length;a+=1)_.includes(i.filter,e.mailAccounts.rows[a].id)&&(n+=e.mailAccounts.rows[a][e.attrs[s].value]?parseInt(e.mailAccounts.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("openchannel")){e.attrs[u].value&&e.attrs[u].value.length?(i.filtered=!0,i.filter=_.intersection(e.openchannelAccountsSelected,e.attrs[u].value)):(i.filtered=!1,i.filter=e.openchannelAccountsSelected);for(var a=0;a<e.openchannelAccounts.rows.length;a+=1)_.includes(i.filter,e.openchannelAccounts.rows[a].id)&&(n+=e.openchannelAccounts.rows[a][e.attrs[s].value]?parseInt(e.openchannelAccounts.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("whatsapp")){e.attrs[p].value&&e.attrs[p].value.length?(i.filtered=!0,i.filter=_.intersection(e.whatsappAccountsSelected,e.attrs[p].value)):(i.filtered=!1,i.filter=e.whatsappAccountsSelected);for(var a=0;a<e.whatsappAccounts.rows.length;a+=1)_.includes(i.filter,e.whatsappAccounts.rows[a].id)&&(n+=e.whatsappAccounts.rows[a][e.attrs[s].value]?parseInt(e.whatsappAccounts.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("sms")){e.attrs[m].value&&e.attrs[m].value.length?(i.filtered=!0,i.filter=_.intersection(e.smsAccountsSelected,e.attrs[m].value)):(i.filtered=!1,i.filter=e.smsAccountsSelected);for(var a=0;a<e.smsAccounts.rows.length;a+=1)_.includes(i.filter,e.smsAccounts.rows[a].id)&&(n+=e.smsAccounts.rows[a][e.attrs[s].value]?parseInt(e.smsAccounts.rows[a][e.attrs[s].value]):0)}}return n};var s=0,o=1,r=2,l=3,d=4,c=5,m=6,u=7,p=8,g=9})}(),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(d,c,t,h){function f(e,n){return"motion2.home."+e+":"+n}function b(e){return _.capitalize(e)+("chat"===e?"Website":"Account")+"Id"}function A(e){return"chat"===e?"Website":"Account"}function E(e,n,t){var a=f(n,t);h.set(a,e)}return{addAccount:function(r,e){var l=e.accounts,d=e.accountId,c=e.filters,m=e.query,u=e.userId,n="get"+_.capitalize(r)+("chat"===r?"Websites":"Accounts"),p=b(r),g=A(r),v=l.rows.length===m[p].length;return t.user[n]({id:u,nolimit:!0}).$promise.then(function(e){var n,t,a,i,s;if(l.rows=e.rows,l.count=e.count,_.find(c,["name",g]).options=l.rows,v){var o=(t=d,a=f(n=r,u),i=b(n),(s=h.get(a)).query&&s.query[i]&&s.query[i].push(t),s);o&&E(o,r,u),m[p].push(d)}return v})},removeAccount:function(t,e){var n=e.accounts,a=e.accountId,i=e.filters,s=e.query,o=e.userId,r=b(t),l=s[r].includes(a);return c.resolve().then(function(){var e=function(e,n,t){var a=f(e,n),i=b(e),s=h.get(a);if(s.query&&s.query[i]){var o=s.query[i].indexOf(t);-1<o&&s.query[i].splice(o,1)}return s}(t,o,a);e||(e=s),s[r]=e.query[r],_.remove(n.rows,function(e){return e.id===a}),n.count=n.rows.length,_.find(i,function(e){var n=A(t);return e.name===n}).options=n.rows,1===n.count&&(e.query[r]=[n.rows[0].id],s[r]=[n.rows[0].id]),E(e,t,o)}).then(function(){var e=A(t);d.$broadcast("ms-quick-filter:update",{filters:[e],update:l})})}}}e.$inject=["$rootScope","$q","api","localStorageManager"],angular.module("app.core").factory("agentAccountAssociationManager",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(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}e.$inject=["$filter","dateFilterLocalizationFactory"],angular.module("app.core").factory("dateRangeManager",e)}(),function(){"use strict";function e(t,a,e,n,i){var s={},o={},r="mail",l={};function d(){if(o=n.getCurrentUser(),e.localStorage.getItem("motion2.home:"+o.id)||(r="dashboard"),l=e.localStorage.getItem("motion2.home."+r+":"+o.id)){var a=JSON.parse(l);a.drafts?o.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,i.mask(t))}):a.drafts={},l=a}else l={drafts:{}};return l.drafts}function c(){_.isEmpty(s.drafts)?delete l.drafts:l.drafts=s.drafts,e.localStorage.setItem("motion2.home."+r+":"+o.id,JSON.stringify(l))}return s.init=function(){s.drafts=d()},s.getByInteraction=function(n){return s.drafts=d(),_.find(_.values(s.drafts),function(e){return e.interaction&&e.interaction.id===n})},s.removeByInteraction=function(n){s.drafts=d();var e=_.find(_.values(s.drafts),function(e){return e.interaction&&e.interaction.id===n});e&&(delete s.drafts[e.id],c())},s.add=function(e){s.drafts=d();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};s.drafts[t.id]=t,c()},s.update=function(e){s.drafts=d();var n=s.drafts[e.id];n&&(n.content=e.message,s.drafts[e.id]=n,c())},s.open=function(e){s.drafts=d();var n=s.drafts[e];n&&t.$broadcast("open"+_.startCase(r)+"Draft",n)},s.remove=function(e){s.drafts=d(),s.drafts[e]&&(delete s.drafts[e],c())},s}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(o,i){function r(e,n){var t=i.localStorage.getItem(e),a=t?JSON.parse(t):{};return n?a[n]:a}function s(e,n){return i.localStorage.setItem(e,JSON.stringify(n))}return{get:r,parseInteractionsKey:function(e,n,t,a){var i="motion2.home."+e+":"+t,s=_.capitalize(e)+("chat"===e?"Website":"Account")+"Id";return o.resolve().then(function(){var e=r(i,"query");return e?((n=_.merge(n,e)).sort&&0<=n.sort.indexOf("lastMessage")&&(n=_.omit(n,"sort")),n.includeAll=!0):n.createdAt={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},1===a.length?n[s]=[a[0].id]:0===a.length&&(n[s]=[]),n}).catch(function(e){throw e})},set:s,update:function(e,n,t){var a=r(e);t?a[t]=n:a=n;return s(e,a)}}}e.$inject=["$q","$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(n,i){return{setPlaceholder:function(a){var e;return n(function(n){try{if(_.isEmpty(a.resources))e=i.instant("DASHBOARDS.NONE");else if(_.isEmpty(a.param))e=a.placeholder?i.instant(a.placeholder):i.instant("DASHBOARDS.CHOOSE");else if(a.param.length===a.resources.length)e=i.instant("DASHBOARDS.ALL");else{var t=a.ngValue||"id";e=_(a.resources).filter(function(e){return _.includes(a.param,e[t])}).map("name").value().join(", ")}n(e)}catch(e){n(null)}})}}}e.$inject=["$q","$translate"],angular.module("app.core").factory("quickFilterManager",e)}(),function(){"use strict";function e(t,e){var s=["available","loggedIn","paused","waiting"],o=["busy","inUse","invalid","loggedInDb","notInUse","onHold","ringing","ringInUse","talking","unavailable","unknown"],r=["pTalking","originated","message","statusMessage","dialActive","dialMethod","Trunk","startPredictive","startProgressive","erlangCalls","erlangCallToSecond","erlangAbandonmentRate","erlangBusyFactor","dialPredictiveInterval","dialPredictiveIntervalMaxThreshold","dialPredictiveIntervalMinThreshold","predictiveIntervalAvailable","predictiveIntervalTotalCalls","predictiveIntervalAnsweredCalls","predictiveIntervalDroppedCallsTimeout","predictiveIntervalDroppedCallsCallersExit","predictiveIntervalAvgHoldtime","predictiveIntervalAvgTalktime"],n=["idle","unknown","unavailable","ringing"];function a(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 i(e){return!!_.isNil(e)||_.includes(n,e)}return{checkEveryChannelPauseStatus:function(n){e.getChannels().forEach(function(e){n[e+"Pause"]&&"idle"===n[e+"Status"]&&(n[e+"Status"]="pause")})},getAgentStatus:function(e){var n;return a(e,!1)?"pause":a(e,!0)?"*pause":("idle"!==(n=e).voiceStatus&&n.voicePause?n.voiceStatus="pause":!_.every([n.chatStatus,n.faxStatus,n.mailStatus,n.openchannelStatus,n.smsStatus,n.voiceStatus,n.whatsappStatus],i))?"busy":"idle"},getAgentStatusDisplayValue:function(e){var n=e.globalStatus;return"pause"===e.globalStatus?n=e.pauseType||t.instant("VOICE.DEFAULT_PAUSE"):"*pause"===e.globalStatus&&(n="*"+(e.pauseType||t.instant("VOICE.DEFAULT_PAUSE"))),n},getUserUpdateEventOrigin:function(e){var n="call";return e.lastLoginAt?n="login":!1===e.online?n="logout":e.pauseType&&(n="pause"),n},sortAgentsByStatus:function(e,t){return e.sort(function(e,n){return e.globalStatus===n.globalStatus?"pause"===e.globalStatus?"DESC"===t?(e.pauseType||"")<(n.pauseType||"")||e.fullname.toLowerCase()>n.fullname.toLowerCase()?1:-1:(e.pauseType||"")<(n.pauseType||"")||e.fullname.toLowerCase()>n.fullname.toLowerCase()?-1:1:"DESC"===t?e.fullname.toLowerCase()<n.fullname.toLowerCase()?1:-1:e.fullname.toLowerCase()<n.fullname.toLowerCase()?-1:1:"DESC"===t?e.globalStatus<n.globalStatus?1:-1:e.globalStatus<n.globalStatus?-1:1})},updateQueue:function(e,n){var t=!!n.type,a=s;"inbound"===n.type?a=a.concat(o):"outbound"===n.type&&(a=a.concat(o,r));var i=_.pick(e,a);_.merge(n,i),t&&0<n.ringing&&n.available<n.loggedIn&&(n.available+=n.ringing)},INCOMING_CALL_STATUS_STYLES:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},OUTGOING_CALL_STATUS_STYLES:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},STATES_STYLES:{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"},STATUS_STYLES:{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"}}}e.$inject=["$translate","msUtils"],angular.module("app.core").factory("realtimeManager",e)}(),function(){"use strict";function e(e,n){var t={get:function(){return a},getUTCOffset:function(){return null===i?n.setting.getDate().$promise.then(function(e){return i=e.offset}):e.resolve(i)},set:function(e){e&&(a=e.toJSON())}},a={},i=null;return t}e.$inject=["$q","api"],angular.module("app.core").factory("settingsManager",e)}(),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}},getChannels:function(){return["chat","fax","mail","openchannel","sms","voice","whatsapp"]},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"},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"}}}),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.export.name=l.export.name.replace(/\//g,"_"),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,e,i,s,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=s,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){c.projects.unshift(e),i.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++)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.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),i.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++)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.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(){_.remove(c.projects,{id:c.project.id}),i.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(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,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(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="CHAT.EDIT_CHATQUEUE",r.chatQueue=angular.copy(n),r.chatQueues=e,r.newChatQueue=!1,r.chatQueue||(r.chatQueue={strategy:"beepall",timeout:10},r.title="CHAT.NEW_CHATQUEUE",r.newChatQueue=!0),r.addNewChatQueue=function(){r.errors=[],i.chatQueue.save(r.chatQueue).$promise.then(function(e){r.chatQueues.unshift(e.toJSON()),a.success({title:"ChatQueue properly created",msg:r.chatQueue.name?r.chatQueue.name+" has been created!":""}),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.chatQueue.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.chatQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveChatQueue=function(){r.errors=[],i.chatQueue.update({id:r.chatQueue.id},r.chatQueue).$promise.then(function(e){var n=_.find(r.chatQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"ChatQueue properly saved!",msg:r.chatQueue.name?r.chatQueue.name+" has been saved!":""}),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.chatQueue.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.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteChatQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The chatQueue will be deleted.").ariaLabel("Delete ChatQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.chatQueue.delete({id:r.chatQueue.id}).$promise.then(function(){_.remove(r.chatQueues,{id:r.chatQueue.id}),a.success({title:"ChatQueue properly deleted!",msg:(r.chatQueue.name||"chatQueue")+" has been deleted!"}),l(r.chatQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.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.chatQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","chatQueues","chatQueue","api","Auth","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,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,note",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,note:e.note||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,t,e,a){var i=this;function s(e,n){switch(e){case"first":i.selectedDisposition=i.firstLevelDisposition,i.anySecondLevelDisposition=_.some(i.dispositions,["ParentId",i.firstLevelDisposition.id]),i.secondLevelDisposition=void 0,i.thirdLevelDisposition=void 0,i.anyThirdLevelDisposition=!1;break;case"second":i.selectedDisposition=i.secondLevelDisposition,i.anyThirdLevelDisposition=_.some(i.dispositions,["ParentId",i.secondLevelDisposition.id]);break;case"third":i.selectedDisposition=i.thirdLevelDisposition}n&&function(e){switch(e){case"first":i.call.secondDisposition&&(i.secondLevelDisposition=_.find(i.dispositions,function(e){return e.name===i.call.secondDisposition&&e.ParentId===i.firstLevelDisposition.id}),i.secondLevelDisposition&&s("second",!0));break;case"second":i.call.thirdDisposition&&(i.thirdLevelDisposition=_.find(i.dispositions,function(e){return e.name===i.call.thirdDisposition&e.ParentId===i.secondLevelDisposition.id}),i.thirdLevelDisposition&&s("third",!0))}}(e)}i.dispositions=e,i.call=a,i.note=i.call.note||void 0,i.onDispositionChange=s,i.clearDispositionSelection=function(e){"second"===e?(i.secondLevelDisposition=void 0,i.thirdLevelDisposition=void 0,i.selectedDisposition=i.firstLevelDisposition):"third"===e&&(i.thirdLevelDisposition=void 0,i.selectedDisposition=i.secondLevelDisposition);n.disposition.$setDirty()},i.saveDisposition=function(){i.call.note=i.note;var e={firstLevel:i.firstLevelDisposition?i.firstLevelDisposition.name:void 0,secondLevel:i.secondLevelDisposition?i.secondLevelDisposition.name:void 0,thirdLevel:i.thirdLevelDisposition?i.thirdLevelDisposition.name:void 0,note:i.note?i.note:void 0};t.hide(e)},i.closeDialog=function(){t.cancel()},i.call.disposition&&(i.firstLevelDisposition=_.find(i.dispositions,function(e){return e.name===i.call.disposition}),i.firstLevelDisposition&&s("first",!0))}e.$inject=["$scope","$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,note",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,note:e.note||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,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.chatInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,ChatWebsiteId:[]},g.sectionColor="green-A700",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getChatWebsites({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.chatAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.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:g.chatAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.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:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.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:g.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:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("chat",g.query,g.user.id,g.chatAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("chatInteraction:save",O),d.on("chatInteraction:update",O),d.on("chatInteractionTags:save",C),d.on("chatMessage:save",w),d.on("chatMessage:update",w),d.on("user_has_chat_interactions:save",T),d.on("user_has_chat_interactions:remove",I),d.on("userChatWebsite:save",f),d.on("userChatWebsite:remove",b),0<g.setting.chatInteractionsReloadTimeout&&R()})},g.success=E,g.getChatInteractions=y,g.showChatInteraction=function(e,n){t.$parent.vm.addInteractionTab("chat",n)},g.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)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:"downloadChatInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.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:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"chat",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getChatWebsiteLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.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:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.chat"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.chat");function h(e){return{accounts:g.chatAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.ChatWebsiteId);u.addAccount("chat",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.ChatWebsiteId);u.removeAccount("chat",n).catch(function(e){v.error(e)})}}function A(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(g.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 E(e){!g.reloadingInteractions&&0<g.setting.chatInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.chatInteractions=e||{count:0,rows:[]};for(var n=0;n<g.chatInteractions.rows.length;n+=1)S(g.chatInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=a.localStorage.getItem("motion2.home.chat:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,a.localStorage.setItem("motion2.home.chat:"+g.user.id,JSON.stringify(n)),g.promise=r.chatInteraction.get(g.query,E).$promise}function S(e){"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.chatInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.chatInteractions.rows=_.orderBy(g.chatInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.chatInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.chatInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.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 R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.chatInteractionsReloadTimeout)}t.$on("$destroy",function(){d.removeAllListeners("chatMessage:save"),d.removeAllListeners("chatMessage:update"),d.removeAllListeners("chatInteraction:save"),d.removeAllListeners("chatInteractionTags:save"),d.removeAllListeners("chatInteraction:update"),d.removeAllListeners("user_has_chat_interactions:save"),d.removeAllListeners("user_has_chat_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],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){var d=this,c=["type","waiting","dialMethod","dialActive"];function m(e){d.voiceQueuesTotal=e.count?e.count:0,d.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(d.voiceQueues,function(e,n){d.rpcVoiceQueues[n]&&(d.voiceQueues[n].waiting=d.rpcVoiceQueues[n].waiting||0)})}d.voiceQueues={},d.voiceQueuesTotal=0,d.rpcVoiceQueues={},d.getVoiceQueues={},d.rpcVoiceQueuesChannels={},d.addVoiceQueuesChannels={},d.deleteVoiceQueuesChannels=[],d.load=!0,d.query={id:r.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",type:"inbound",limit:10,page:1},d.queryChannels={limit:10,page:1},d.success=m,d.getVoiceQueues=function(){d.query.offset=(d.query.page-1)*d.query.limit,d.promise=o.user.getQueues(d.query,m).$promise},d.getSize=function(e){return _.size(e)},d.onSaveQueue=function(e){d.voiceQueues[e.id]&&d.rpcVoiceQueues[e.id]&&(d.rpcVoiceQueues[e.id]=e,_.merge(d.voiceQueues[e.id],_.pick(e,c)))},d.onSaveChannel=function(e){"inbound"===e.type&&(e.queuecallerleaveAt?(delete d.rpcVoiceQueuesChannels[e.uniqueid],d.load&&d.deleteVoiceQueuesChannels.push(e.uniqueid)):(d.rpcVoiceQueuesChannels[e.uniqueid]=e,d.load&&(d.addVoiceQueuesChannels[e.uniqueid]=e)))},d.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&d.getVoiceQueues()},d.onSaveVoiceQueue=function(e){_.isNil(e)||(d.rpcVoiceQueues[e.id]=_.pick(e,c))},d.onUpdateVoiceQueue=function(e){_.isNil(e)||(d.rpcVoiceQueues[e.id]&&_.merge(d.rpcVoiceQueues[e.id],_.pick(e,c)),d.voiceQueues[e.id]&&_.merge(d.voiceQueues[e.id],_.pick(e,c)))},d.onRemoveVoiceQueue=function(e){_.isNil(e)||(delete d.rpcVoiceQueues[e.id],delete d.voiceQueues[e.id])},l.onWithoutApply("voice_queue:save",d.onSaveQueue),l.onWithoutApply("voice_queue_channel:save",d.onSaveChannel),l.onWithoutApply("voice_queue_channel:remove",function(e){"inbound"===e.type&&delete d.rpcVoiceQueuesChannels[e.uniqueid]}),l.onWithoutApply("userVoiceQueue:save",d.onUserVoiceQueue),l.onWithoutApply("userVoiceQueue:remove",d.onUserVoiceQueue),l.onWithoutApply("voiceQueue:save",d.onSaveVoiceQueue),l.onWithoutApply("voiceQueue:remove",d.onRemoveVoiceQueue),l.onWithoutApply("voiceQueue:update",d.onUpdateVoiceQueue),o.user.getQueues(d.query).$promise.then(function(e){return d.myQueues=e,o.rpc.getVoiceQueues().$promise}).then(function(e){for(var n=e.rows,t=_.keyBy(n,"id"),a=0;a<d.myQueues.count;a++){var i=d.myQueues.rows[a];d.rpcVoiceQueues[i.id]=t[i.id]}return o.rpc.getVoiceQueuesChannels().$promise}).then(function(e){d.rpcVoiceQueuesChannels=e?_.keyBy(e.rows?_.filter(e.rows,function(e){return!("inbound"!==e.type||e.queuecallerleaveAt||!_.find(d.myQueues.rows,{name:e.queue}))}):[],"uniqueid"):{}}).catch(function(e){console.error(e)}).finally(function(){_.merge(d.rpcVoiceQueuesChannels,d.addVoiceQueuesChannels);for(var e=0;e<d.deleteVoiceQueuesChannels.length;e+=1)delete d.rpcVoiceQueuesChannels[d.deleteVoiceQueuesChannels[e]];d.load=!1,d.addVoiceQueuesChannels={},d.deleteVoiceQueuesChannels=[],d.getVoiceQueues()});var u=!0,p=1;e.$watch("vm_dc.query.filter",function(e,n){u?t(function(){u=!1}):(n||(p=d.query.page),e!==n&&(d.query.page=1),e||(d.query.page=p),d.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"],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(a,t,i,s,o,n,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.faxInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,FaxAccountId:[]},g.sectionColor="blue-grey",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getFaxAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.faxAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.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:g.faxAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.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:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.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:g.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:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("fax",g.query,g.user.id,g.faxAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("faxInteraction:save",O),d.on("faxInteraction:update",O),d.on("faxInteractionTags:save",C),d.on("faxMessage:save",w),d.on("faxMessage:update",w),d.on("user_has_fax_interactions:save",T),d.on("user_has_fax_interactions:remove",I),d.on("userFaxAccount:save",f),d.on("userFaxAccount:remove",b)})},g.success=E,g.getFaxInteractions=y,g.showFaxInteraction=function(e,n){a.$parent.vm.addInteractionTab("fax",n)},g.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)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:"downloadFaxInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.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:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"fax",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?n.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return n.instant("DASHBOARDS.NOT_ASSIGNED")},g.getFaxAccountLabel=function(e){if(e.Account)return e.Account.key;return n.instant("DASHBOARDS.UNKNOWN")},g.composeFaxInteraction=function(e,t){i.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.faxAccount.send({id:t.id},n).$promise.then(function(e){c.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++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})}})},g.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:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.fax"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.fax");function h(e){return{accounts:g.faxAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.FaxAccountId);u.addAccount("fax",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.FaxAccountId);u.removeAccount("fax",n).catch(function(e){v.error(e)})}}function A(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(g.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 E(e){!g.reloadingInteractions&&0<g.setting.faxInteractionsReloadTimeout&&function(e){e&&g.interactionsInterval&&t.cancel(g.interactionsInterval);g.interactionsInterval=t(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.faxInteractionsReloadTimeout)}(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.faxInteractions=e||{count:0,rows:[]};for(var n=0;n<g.faxInteractions.rows.length;n+=1)S(g.faxInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=o.localStorage.getItem("motion2.home.fax:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,o.localStorage.setItem("motion2.home.fax:"+g.user.id,JSON.stringify(n)),g.promise=r.faxInteraction.get(g.query,E).$promise}function S(e){e.contactInfo=e.Contact?e.Contact.fax:void 0,"Unknown"===e.contactName&&(e.contactName=n.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.faxInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.faxInteractions.rows=_.orderBy(g.faxInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else y(g.query.page)}}function C(e){if(e){var n=_.find(g.faxInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.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))}}}a.$on("$destroy",function(){d.removeAllListeners("faxMessage:save"),d.removeAllListeners("faxMessage:update"),d.removeAllListeners("faxInteraction:save"),d.removeAllListeners("faxInteractionTags:save"),d.removeAllListeners("faxInteraction:update"),d.removeAllListeners("user_has_fax_interactions:save"),d.removeAllListeners("user_has_fax_interactions:remove"),g.interactionsInterval&&t.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeFaxController",e)}(),function(){"use strict";function e(o,n,r,l,m,t,e,d,a,i,c,u,s,p,g){var v=this;v.user=a.getCurrentUser(),v.license={},v.setting={},v.tags={count:0,rows:[]},v.mailInteractions={count:0,rows:[]},v.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,MailAccountId:[]},v.sectionColor="teal",v.onInit=function(e,n){return v.license=e,v.setting=n,d.user.getMailAccounts({id:v.user.id,nolimit:!0}).$promise.then(function(e){return v.mailAccounts=e||{count:0,rows:[]},d.tag.get({sort:"name"}).$promise}).then(function(e){v.tags=e||{count:0,rows:[]}}).then(function(){return d.mailSubstatus.get({nolimit:!0}).$promise}).then(function(e){v.subStatuses=e||{count:0,rows:[]}}).then(function(){v.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:v.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:v.mailAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:v.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:v.tags.rows,placeholder:"DASHBOARDS.TAGS"}],v.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:v.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:E("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:E("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:E("third")}}]}}).catch(function(e){h.error(e)}).finally(function(){s.parseInteractionsKey("mail",v.query,v.user.id,v.mailAccounts.rows).then(function(){v.isSearchBarVisible=!(v.query.search||!v.query.filter),S(v.query.page)}),i.on("mailInteraction:save",w),i.on("mailInteraction:update",w),i.on("mailInteractionTags:save",R),i.on("mailMessage:save",x),i.on("mailMessage:update",x),i.on("user_has_mail_interactions:save",O),i.on("user_has_mail_interactions:remove",C),i.on("userMailAccount:save",b),i.on("userMailAccount:remove",A),0<v.setting.mailInteractionsReloadTimeout&&N()})},v.success=y,v.getMailInteractions=S,v.showMailInteraction=T,v.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()})})},v.disposeInteraction=function(e,n){var t=v.user.voicePause||v.user.chatPause||v.user.mailPause||v.user.openchannelPause||v.user.faxPause,a=!n.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:a,escapeToClose:a,onRemoving:function(){v.user&&n.Account.mandatoryDisposition&&!t&&d.user.unpause({id:v.user.id}).$promise.catch(function(e){h.error(e)})},locals:{user:v.user,channel:"mail",interaction:n}})},v.getContactLabel=I,v.getAgentLabel=function(e){if(e.UserId)return e.UserId===v.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},v.getMailAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},v.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=v.user.voicePause||v.user.chatPause||v.user.mailPause||v.user.openchannelPause||v.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(){v.user&&s.mandatoryDisposition&&!a&&d.user.unpause({id:v.user.id}).$promise.catch(function(e){h.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:v.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)}})},v.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:v.sectionColor,fields:v.advancedSearch.fields,storagePath:"home.mail"},fullscreen:!0}).then(function(e){v.isSearchBarVisible=!(e.value||!v.query.filter),e.apply&&(v.query.search=e.value,S())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var h=g.getLogger("agent.general.mail");function f(e){return{accounts:v.mailAccounts,accountId:e,filters:v.quickFilters,query:v.query,userId:v.user.id}}function b(e){if(e.UserId===v.user.id){var n=f(e.MailAccountId);p.addAccount("mail",n).then(function(e){e&&S()}).catch(function(e){h.error(e)})}}function A(e){if(e.UserId===v.user.id){var n=f(e.MailAccountId);p.removeAccount("mail",n).catch(function(e){h.error(e)})}}function E(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(v.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 y(e){!v.reloadingInteractions&&0<v.setting.mailInteractionsReloadTimeout&&N(!0),v.searchInProgress=!1,v.reloadingInteractions=!1,v.mailInteractions=e||{count:0,rows:[]};for(var n=0;n<v.mailInteractions.rows.length;n+=1)I(v.mailInteractions.rows[n])}function S(e){v.searchInProgress=!0,e||(v.query.page=1),(void 0===v.query.closed||null===v.query.closed||v.query.closed)&&delete v.query.substatus,v.query.offset=(v.query.page-1)*v.query.limit;var n=m.localStorage.getItem("motion2.home.mail:"+v.user.id);(n=n?JSON.parse(n):{}).query=v.query,m.localStorage.setItem("motion2.home.mail:"+v.user.id,JSON.stringify(n)),v.promise=d.mailInteraction.get(v.query,y).$promise}function T(e,n){o.$parent.vm.addInteractionTab("mail",n)}function I(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 O(e){var n=_.find(v.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function C(e){var n=_.find(v.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function w(e){if(e){var n=_.find(v.mailInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),v.query.sort){var t=_.startsWith(v.query.sort,"-")?"desc":"asc";v.mailInteractions.rows=_.orderBy(v.mailInteractions.rows,_.trimStart(v.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===v.setting.mailInteractionsReloadTimeout&&S(v.query.page)}}function R(e){if(e){var n=_.find(v.mailInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function x(e){if(e&&!e.secret){var n=_.find(v.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 N(e){e&&v.interactionsInterval&&n.cancel(v.interactionsInterval),v.interactionsInterval=n(function(){v.reloadingInteractions=!0,v.searchInProgress||S()},1e3*v.setting.mailInteractionsReloadTimeout)}o.$on("openMailDraft",function(e,s){s.interaction?(s.interaction.isDraft=!0,T(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=v.user.voicePause||v.user.chatPause||v.user.mailPause||v.user.openchannelPause||v.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(){v.user&&s.account.mandatoryDisposition&&!a&&d.user.unpause({id:v.user.id}).$promise.catch(function(e){h.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:v.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)}})}),v.resetTooltipPosition=function(e){var n=angular.element(e.currentTarget).children()[1],t=angular.element(n);t.css("top",""),t.css("left",""),t.css("bottom","")},v.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(){i.removeAllListeners("mailMessage:save"),i.removeAllListeners("mailMessage:update"),i.removeAllListeners("mailInteraction:save"),i.removeAllListeners("mailInteractionTags:save"),i.removeAllListeners("mailInteraction:update"),i.removeAllListeners("user_has_mail_interactions:save"),i.removeAllListeners("user_has_mail_interactions:remove"),v.interactionsInterval&&n.cancel(v.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","draftManager","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],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(a,n,i,s,t,o,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.openchannelInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,OpenchannelAccountId:[]},g.sectionColor="amber",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getOpenchannelAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.openchannelAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.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:g.openchannelAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.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:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.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:g.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:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("openchannel",g.query,g.user.id,g.openchannelAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("openchannelInteraction:save",O),d.on("openchannelInteraction:update",O),d.on("openchannelInteractionTags:save",C),d.on("openchannelMessage:save",w),d.on("openchannelMessage:update",w),d.on("user_has_openchannel_interactions:save",T),d.on("user_has_openchannel_interactions:remove",I),d.on("userOpenchannelAccount:save",f),d.on("userOpenchannelAccount:remove",b),0<g.setting.openchannelInteractionsReloadTimeout&&R()})},g.success=E,g.getOpenchannelInteractions=y,g.showOpenchannelInteraction=function(e,n){a.$parent.vm.addInteractionTab("openchannel",n)},g.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)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:"downloadOpenchannelInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.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:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"openchannel",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getOpenchannelAccountLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.composeOpenchannelInteraction=function(e,t){i.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.openchannelAccount.send({id:t.id},n).$promise.then(function(e){c.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$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++)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:"OPENCHANNELACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}})},g.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:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.openchannel"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.openchannel");function h(e){return{accounts:g.openchannelAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.OpenchannelAccountId);u.addAccount("openchannel",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.OpenchannelAccountId);u.removeAccount("openchannel",n).catch(function(e){v.error(e)})}}function A(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(g.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 E(e){!g.reloadingInteractions&&0<g.setting.openchannelInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.openchannelInteractions=e||{count:0,rows:[]};for(var n=0;n<g.openchannelInteractions.rows.length;n+=1)S(g.openchannelInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=t.localStorage.getItem("motion2.home.openchannel:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,t.localStorage.setItem("motion2.home.openchannel:"+g.user.id,JSON.stringify(n)),g.promise=r.openchannelInteraction.get(g.query,E).$promise}function S(e){"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.openchannelInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.openchannelInteractions.rows=_.orderBy(g.openchannelInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.openchannelInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.openchannelInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.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 R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.openchannelInteractionsReloadTimeout)}a.$on("$destroy",function(){d.removeAllListeners("openchannelMessage:save"),d.removeAllListeners("openchannelMessage:update"),d.removeAllListeners("openchannelInteraction:save"),d.removeAllListeners("openchannelInteractionTags:save"),d.removeAllListeners("openchannelInteraction:update"),d.removeAllListeners("user_has_openchannel_interactions:save"),d.removeAllListeners("user_has_openchannel_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],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(a,n,i,s,t,o,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.smsInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,SmsAccountId:[]},g.sectionColor="orange",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getSmsAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.smsAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.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:g.smsAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.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:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.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:g.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:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("sms",g.query,g.user.id,g.smsAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("smsInteraction:save",O),d.on("smsInteraction:update",O),d.on("smsInteractionTags:save",C),d.on("smsMessage:save",w),d.on("smsMessage:update",w),d.on("user_has_sms_interactions:save",T),d.on("user_has_sms_interactions:remove",I),d.on("userSmsAccount:save",f),d.on("userSmsAccount:remove",b),0<g.setting.smsInteractionsReloadTimeout&&R()})},g.success=E,g.getSmsInteractions=y,g.showSmsInteraction=function(e,n){a.$parent.vm.addInteractionTab("sms",n)},g.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)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:"downloadSmsInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.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:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"sms",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getSmsAccountLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.composeSmsInteraction=function(e,t){i.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.smsAccount.send({id:t.id},n).$promise.then(function(e){c.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$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++)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:"SMSACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}})},g.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:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.sms"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.sms");function h(e){return{accounts:g.smsAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.SmsAccountId);u.addAccount("sms",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.SmsAccountId);u.removeAccount("sms",n).catch(function(e){v.error(e)})}}function A(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(g.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 E(e){!g.reloadingInteractions&&0<g.setting.smsInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.smsInteractions=e||{count:0,rows:[]};for(var n=0;n<g.smsInteractions.rows.length;n+=1)S(g.smsInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=t.localStorage.getItem("motion2.home.sms:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,t.localStorage.setItem("motion2.home.sms:"+g.user.id,JSON.stringify(n)),g.promise=r.smsInteraction.get(g.query,E).$promise}function S(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.smsInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.smsInteractions.rows=_.orderBy(g.smsInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.smsInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.smsInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.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 R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.smsInteractionsReloadTimeout)}a.$on("$destroy",function(){d.removeAllListeners("smsMessage:save"),d.removeAllListeners("smsMessage:update"),d.removeAllListeners("smsInteraction:save"),d.removeAllListeners("smsInteractionTags:save"),d.removeAllListeners("smsInteraction:update"),d.removeAllListeners("user_has_sms_interactions:save"),d.removeAllListeners("user_has_sms_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],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(a,n,i,s,t,o,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.whatsappInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,WhatsappAccountId:[]},g.sectionColor="lime-A700",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getWhatsappAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.whatsappAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.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:g.whatsappAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.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:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.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:g.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:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("whatsapp",g.query,g.user.id,g.whatsappAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("whatsappInteraction:save",O),d.on("whatsappInteraction:update",O),d.on("whatsappInteractionTags:save",C),d.on("whatsappMessage:save",w),d.on("whatsappMessage:update",w),d.on("user_has_whatsapp_interactions:save",T),d.on("user_has_whatsapp_interactions:remove",I),d.on("userWhatsappAccount:save",f),d.on("userWhatsappAccount:remove",b),0<g.setting.whatsappInteractionsReloadTimeout&&R()})},g.success=E,g.getWhatsappInteractions=y,g.showWhatsappInteraction=function(e,n){a.$parent.vm.addInteractionTab("whatsapp",n)},g.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)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:"downloadWhatsappInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.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:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"whatsapp",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getWhatsappAccountLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.composeWhatsappInteraction=function(e,t){i.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.whatsappAccount.send({id:t.id},n).$promise.then(function(e){c.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$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++)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:"WHATSAPPACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}})},g.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:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.whatsapp"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.whatsapp");function h(e){return{accounts:g.whatsappAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.WhatsappAccountId);u.addAccount("whatsapp",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.WhatsappAccountId);u.removeAccount("whatsapp",n).catch(function(e){v.error(e)})}}function A(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(g.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 E(e){!g.reloadingInteractions&&0<g.setting.whatsappInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.whatsappInteractions=e||{count:0,rows:[]};for(var n=0;n<g.whatsappInteractions.rows.length;n+=1)S(g.whatsappInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=t.localStorage.getItem("motion2.home.whatsapp:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,t.localStorage.setItem("motion2.home.whatsapp:"+g.user.id,JSON.stringify(n)),g.promise=r.whatsappInteraction.get(g.query,E).$promise}function S(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.whatsappInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.whatsappInteractions.rows=_.orderBy(g.whatsappInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.whatsappInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.whatsappInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.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 R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.whatsappInteractionsReloadTimeout)}a.$on("$destroy",function(){d.removeAllListeners("whatsappMessage:save"),d.removeAllListeners("whatsappMessage:update"),d.removeAllListeners("whatsappInteraction:save"),d.removeAllListeners("whatsappInteractionTags:save"),d.removeAllListeners("whatsappInteraction:update"),d.removeAllListeners("user_has_whatsapp_interactions:save"),d.removeAllListeners("user_has_whatsapp_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],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||g.isDraft?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+=""===p.message.body.trim()?e(t):" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=""===p.message.body.trim()?n.value:" "+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+=""===p.message.body.trim()?e(t):" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=""===p.message.body.trim()?n.value:" "+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+=""===p.message.body.trim()?e(t):" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=""===p.message.body.trim()?n.value:" "+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(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="FAX.EDIT_FAXQUEUE",r.faxQueue=angular.copy(n),r.faxQueues=e,r.newFaxQueue=!1,r.faxQueue||(r.faxQueue={strategy:"beepall",timeout:10},r.title="FAX.NEW_FAXQUEUE",r.newFaxQueue=!0),r.addNewFaxQueue=function(){r.errors=[],i.faxQueue.save(r.faxQueue).$promise.then(function(e){r.faxQueues.unshift(e.toJSON()),a.success({title:"FaxQueue properly created",msg:r.faxQueue.name?r.faxQueue.name+" has been created!":""}),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.faxQueue.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.faxQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveFaxQueue=function(){r.errors=[],i.faxQueue.update({id:r.faxQueue.id},r.faxQueue).$promise.then(function(e){var n=_.find(r.faxQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"FaxQueue properly saved!",msg:r.faxQueue.name?r.faxQueue.name+" has been saved!":""}),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.faxQueue.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.faxQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteFaxQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The faxQueue will be deleted.").ariaLabel("Delete FaxQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.faxQueue.delete({id:r.faxQueue.id}).$promise.then(function(){_.remove(r.faxQueues,{id:r.faxQueue.id}),a.success({title:"FaxQueue properly deleted!",msg:(r.faxQueue.name||"faxQueue")+" has been deleted!"}),l(r.faxQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.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.faxQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","faxQueues","faxQueue","api","Auth","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,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,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_STYLES,u.stateClass=r.STATES_STYLES,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","realtimeManager","$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.contactInfo=e.Contact?e.Contact.email:void 0:(e.contactName=e.to.split(" <")[0],e.contactInfo=e.to.split("<").pop().split(">")[0]),"Unknown"===e.contactName&&(e.contactName=i.instant("MAIL.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.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(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="MAIL.EDIT_MAILQUEUE",r.mailQueue=angular.copy(n),r.mailQueues=e,r.newMailQueue=!1,r.mailQueue||(r.mailQueue={strategy:"beepall",timeout:10},r.title="MAIL.NEW_MAILQUEUE",r.newMailQueue=!0),r.addNewMailQueue=function(){r.errors=[],i.mailQueue.save(r.mailQueue).$promise.then(function(e){r.mailQueues.unshift(e.toJSON()),a.success({title:"MailQueue properly created",msg:r.mailQueue.name?r.mailQueue.name+" has been created!":""}),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.mailQueue.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.mailQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveMailQueue=function(){r.errors=[],i.mailQueue.update({id:r.mailQueue.id},r.mailQueue).$promise.then(function(e){var n=_.find(r.mailQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"MailQueue properly saved!",msg:r.mailQueue.name?r.mailQueue.name+" has been saved!":""}),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.mailQueue.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.mailQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteMailQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The mailQueue will be deleted.").ariaLabel("Delete MailQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.mailQueue.delete({id:r.mailQueue.id}).$promise.then(function(){_.remove(r.mailQueues,{id:r.mailQueue.id}),a.success({title:"MailQueue properly deleted!",msg:(r.mailQueue.name||"mailQueue")+" has been deleted!"}),l(r.mailQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.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.mailQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","mailQueues","mailQueue","api","Auth","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,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,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,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,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(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="OPENCHANNEL.EDIT_OPENCHANNELQUEUE",r.openchannelQueue=angular.copy(n),r.openchannelQueues=e,r.newOpenchannelQueue=!1,r.openchannelQueue||(r.openchannelQueue={strategy:"beepall",timeout:10},r.title="OPENCHANNEL.NEW_OPENCHANNELQUEUE",r.newOpenchannelQueue=!0),r.addNewOpenchannelQueue=function(){r.errors=[],i.openchannelQueue.save(r.openchannelQueue).$promise.then(function(e){r.openchannelQueues.unshift(e.toJSON()),a.success({title:"OpenchannelQueue properly created",msg:r.openchannelQueue.name?r.openchannelQueue.name+" has been created!":""}),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.openchannelQueue.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.openchannelQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveOpenchannelQueue=function(){r.errors=[],i.openchannelQueue.update({id:r.openchannelQueue.id},r.openchannelQueue).$promise.then(function(e){var n=_.find(r.openchannelQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"OpenchannelQueue properly saved!",msg:r.openchannelQueue.name?r.openchannelQueue.name+" has been saved!":""}),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.openchannelQueue.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.openchannelQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteOpenchannelQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The openchannelQueue will be deleted.").ariaLabel("Delete OpenchannelQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.openchannelQueue.delete({id:r.openchannelQueue.id}).$promise.then(function(){_.remove(r.openchannelQueues,{id:r.openchannelQueue.id}),a.success({title:"OpenchannelQueue properly deleted!",msg:(r.openchannelQueue.name||"openchannelQueue")+" has been deleted!"}),l(r.openchannelQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.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.openchannelQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","openchannelQueues","openchannelQueue","api","Auth","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,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,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,v){var h=this,f=t(function(){},999),b=n.params.direction||"inbound",A=m&&1==m.count?m.rows[0].crudPermissions:null;function E(){d.on("user:save",T),d.on("user:update",I),d.on("user:agentconnect",O),d.on("user:agentcomplete",C),d.on("userVoiceQueue:save",w),d.on("userVoiceQueue:remove",R),d.on("userChatQueue:save",w),d.on("userChatQueue:remove",R),d.on("userSmsQueue:save",w),d.on("userSmsQueue:remove",R),d.on("userMailQueue:save",w),d.on("userMailQueue:remove",R),d.on("userFaxQueue:save",w),d.on("userFaxQueue:remove",R),d.on("userOpenchannelQueue:save",w),d.on("userOpenchannelQueue:remove",R),d.on("userWhatsappQueue:save",w),d.on("userWhatsappQueue:remove",R),h.agents.rows.forEach(function(e){e.globalStatusDisplayValue=g.getAgentStatusDisplayValue(e)})}function y(){return h.query.offset=(h.query.page-1)*h.query.limit,l.realtime.getAgents(h.query).$promise.then(function(e){h.agents=e,E()}).catch(function(e){c.error({title:s.instant("VOICE.AGENTS"),msg:e.status?JSON.stringify(e.data):e.toString()})})}function S(e,n){if(n)return h.agents.count>h.agents.rows.length?y():(a=n,i=_.remove(h.agents.rows,["id",a]),void(h.agents.count-=i.length));if(h.query.sort.includes("globalStatus")&&(!h.query.globalStatusFilter||"busy"===h.query.globalStatusFilter)){var t="-"===h.query.sort[0]?"DESC":"ASC";if(!1===e)return y();if(!0===e)h.agents.rows=g.sortAgentsByStatus(h.agents.rows,t);else{if(h.agents.count>h.agents.rows.length)return y();h.agents.rows=g.sortAgentsByStatus(h.agents.rows,t)}}var a,i}function T(e){var n=_.find(h.agents.rows,["id",e.id]);n&&(_.merge(n,e),n.globalStatus=g.getAgentStatus(n),g.checkEveryChannelPauseStatus(n),n.globalStatusDisplayValue=g.getAgentStatusDisplayValue(n))}function I(e){var n,t,a=g.getUserUpdateEventOrigin(e);try{switch(a){case"login":!function(e){var n=!1;if(h.query.globalStatusFilter?e.loginInPause&&"pause"===h.query.globalStatusFilter?n=!0:e.loginInPause||"idle"!==h.query.globalStatusFilter||(n=!0):n=!0,n)y()}(e);break;case"logout":!function(e){if(0!==h.agents.count){var n=_.find(h.agents.rows,["id",e.id]);if(!n)return y();S(!1,n.id)}}(e);break;case"pause":n=e,(t=_.find(h.agents.rows,["id",n.id]))?(_.merge(t,n),t.globalStatus=g.getAgentStatus(t),g.checkEveryChannelPauseStatus(t),h.query.globalStatusFilter&&t.globalStatus!==h.query.globalStatusFilter?S(!1,t.id):t.globalStatusDisplayValue=g.getAgentStatusDisplayValue(t)):y()}}catch(e){c.error({title:s.instant("VOICE.AGENTS"),msg:e.toString()})}}function O(e){try{var n=_.find(h.agents.rows,["id",e.id]);S(!0),e.agentconnected?n?(_.merge(n,_.pick(e,["queue","destconnectedlinenum","routealias"])),S()):S(!1):"busy"!==h.query.globalStatusFilter||n||y()}catch(e){c.error({title:s.instant("VOICE.AGENTS"),msg:e.toString()})}}function C(e){if("ATTENDED"!==e.transfer){var n=_.find(h.agents.rows,["id",e.id]);n&&(delete n.queue,delete n.destconnectedlinenum,delete n.routealias,"busy"===h.query.globalStatusFilter?S(!1,e.id):S())}}function w(e){if(0!==h.query.globalQueueFilter.length){var n=e[_.capitalize(h.channel)+"QueueId"];h.query.globalQueueFilter.includes(n)&&y()}}function R(e){if(0!==h.query.globalQueueFilter.length){var n=e[_.capitalize(h.channel)+"QueueId"];h.query.globalQueueFilter.includes(n)&&S(!1,e.UserId)}}h.currentUser=u.getCurrentUser(),h.channel=n.params.channel,h.agents=o,h.pauses=r||{count:0,rows:[]},h.license=p,h.crudPermissions=u.parseCrudPermissions(A),h.utcOffset=v,h.query={limit:10,page:1,sort:"fullname",globalStatusFilter:null,pauseTypeFilter:null,globalQueueFilter:[],channel:h.channel},h.$onInit=E,h.getAgents=y,h.logout=function(e){return l.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){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()})})},h.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()})})},h.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()})})},h.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:h.channel,direction:b,crudPermissions:h.crudPermissions}})},h.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()})})},h.getQueuesByChannel=function(){if(!(h.queues&&0<h.queues.count)){var e={type:b,fields:"id,name",sort:"name",nolimit:"true"},n=h.channel+"Queue";return l.getResourcesByRole(h.currentUser,n,e,null).then(function(e){h.queues=e}).catch(function(e){c.error({title:s.instant("VOICE.QUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})}},h.selectAllQueues=function(){h.query.globalQueueFilter=h.queues.rows.map(function(e){return e.id})},h.clearQueuesSelection=function(){h.query.globalQueueFilter=[]},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"),f&&t.cancel(f)})}e.$inject=["$scope","$state","$interval","$mdDialog","$document","$translate","agents","pauses","api","socket","toasty","userProfileSection","Auth","license","realtimeManager","utcOffset"],angular.module("app.realtime").controller("AgentsRealtimeController",e)}(),function(){"use strict";function e(e,a,n,i,s,t,o,r,l,d,c){var m=this,u=c&&1==c.count?c.rows[0].crudPermissions:null;function p(){return m.queues.rows.map(function(e){return e.name})}function g(n){if(n.type===m.voiceQueueType&&p().includes(n.queue)){var e=_.find(m.voiceQueuesChannels.rows,function(e){return e.uniqueid===n.uniqueid});e?Object.assign(e,n):(m.voiceQueuesChannels.rows.push(n),m.voiceQueuesChannels.count=m.voiceQueuesChannels.rows.length)}}function v(n){m.voiceQueuesChannels.rows=_.filter(m.voiceQueuesChannels.rows,function(e){return e.uniqueid!==n.uniqueid}),m.voiceQueuesChannels.count=m.voiceQueuesChannels.rows.length}m.currentUser=t.getCurrentUser(),m.queues=l,m.voiceQueuesChannels=d,m.voiceQueueType=n.params.direction,m.crudPermissions=t.parseCrudPermissions(u),m.query={limit:10,page:1},m.$onInit=function(){o.on("voice_queue_channel:save",g),o.on("voice_queue_channel:remove",v);var n=p(),e=m.voiceQueuesChannels.rows.filter(function(e){if(n.includes(e.queue))return!0});m.voiceQueuesChannels.rows=e,m.voiceQueuesChannels.count=e.length},m.hangup=function(e){return s.rpc.getVoiceQueuesChannelHangup({uniqueid:e}).$promise.then(function(e){r.success({title:i.instant("VOICE.CALL_HANGUP_SUCCESS"),msg:e.message||void 0})}).catch(function(e){r.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},m.getAvailableAgents=function(){m.availableAgents=null;var e={id:t.isUser()?m.currentUser.userProfileId:void 0,fields:"id,name,fullname,internal,context,online,voicePause,voiceStatus",sort:"fullname",online:!0,voicePause:!1};return s.realtime.getAgents(e).$promise.then(function(e){var n=e.rows.filter(function(e){return"idle"===e.voiceStatus});m.availableAgents=n}).catch(function(e){r.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},m.redirectToAgent=function(e,n,t){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:e,exten:n,context:t}).$promise.then(function(e){r.success({title:i.instant("VOICE.CALL_REDIRECT_SUCCESS"),msg:e.message||void 0})}).catch(function(e){r.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},m.redirectToNumber=function(e,n){var t=a.prompt().title(i.instant("VOICE.CALL_NUMBER_REDIRECT")).placeholder(i.instant("DASHBOARDS.NUMBER")).targetEvent(e).ok("Ok").cancel(i.instant("TOOLBAR.CANCEL"));return a.show(t).then(function(e){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e}).$promise}).then(function(e){r.success({title:i.instant("VOICE.CALL_REDIRECT_SUCCESS"),msg:e.message||void 0})}).catch(function(e){e&&r.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},e.$on("$destroy",function(){o.removeAllListeners("voice_queue_channel:save"),o.removeAllListeners("voice_queue_channel:remove")})}e.$inject=["$scope","$mdDialog","$state","$translate","api","Auth","socket","toasty","queues","voiceQueuesChannels","userProfileSection"],angular.module("app.realtime").controller("QueueCallsRealtimeController",e)}(),function(){"use strict";function e(i,s,e,n,t,a,o,r,l,d,c,m,u){var p=this,g=e(function(){},999),v=u&&1==u.count?u.rows[0].crudPermissions:null,h=t.params.direction,f="outbound"===h?"QueueCampaigns":_.startCase(p.channel)+"Queues";function b(e){var n=_.find(p.queues.rows,["id",e.id]);n&&(n=l.updateQueue(e,n))}p.currentUser=r.getCurrentUser(),p.channel=t.params.channel,p.queues=m,p.crudPermissions=r.parseCrudPermissions(v),p.headersTemplate=null,p.rowsTemplate=null,p.query={id:r.isUser()?p.currentUser.id:void 0,section:r.isUser()?f:void 0,channel:p.channel,type:h,sort:"name",limit:10,page:1},p.$onInit=function(){var e,n;d.on(p.channel+"_queue:save",b),p.headersTemplate=(e="default.html","voice"===p.channel&&(e=h+".html"),"app/main/apps/realtime/views/queues/templates/headers/"+e),p.rowsTemplate=(n="default.html","voice"===p.channel&&(n=h+".html"),"app/main/apps/realtime/views/queues/templates/rows/"+n),"voice"===p.channel&&p.queues.rows.forEach(function(e){0<e.ringing&&e.available<e.loggedIn&&(e.available+=e.ringing)})},p.getQueues=function(){return p.query.offset=(p.query.page-1)*p.query.limit,o.realtime.getQueues(p.query).$promise.then(function(e){p.queues=e}).catch(function(e){c.error({title:a.instant("DASHBOARDS.QUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},p.editQueue=function(e,n){var t={crudPermissions:p.crudPermissions};t[p.channel+"Queue"]=n,t[p.channel+"Queues"]=p.queues.rows;var a={controller:"CreateOrEdit"+_.startCase(p.channel)+"QueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/"+p.channel+"/views/"+p.channel+"Queues/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:t};return s.show(a)},p.addOrRemoveAgents=function(e,n){var t={realtime:"voice"===p.channel,crudPermissions:p.crudPermissions};t[p.channel+"Queue"]=n,t[p.channel+"Queues"]=p.queues.rows;var a={controller:_.startCase(p.channel)+"QueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/"+p.channel+"/views/"+p.channel+"Queues/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:t};return s.show(a)},p.showPredictiveInfo=function(e,n){var t={controller:"PredictiveInfoDialogController",controllerAs:"vm",templateUrl:"app/main/apps/realtime/views/queues/predictive/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n}};return s.show(t)},n.$on("$destroy",function(){d.removeAllListeners(p.channel+"_queue:save"),g&&e.cancel(g)})}e.$inject=["$document","$mdDialog","$interval","$scope","$state","$translate","api","Auth","realtimeManager","socket","toasty","queues","userProfileSection"],angular.module("app.realtime").controller("QueuesRealtimeController",e)}(),function(){"use strict";function e(e,n){this.queueCampaign=n,this.formatTime=function(e,n){var t=moment(e);return n&&t.add(n,"minutes"),t.format("HH:mm:ss")},this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","queueCampaign"],angular.module("app.realtime").controller("PredictiveInfoDialogController",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,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(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="SMS.EDIT_SMSQUEUE",r.smsQueue=angular.copy(n),r.smsQueues=e,r.newSmsQueue=!1,r.smsQueue||(r.smsQueue={strategy:"beepall",timeout:10},r.title="SMS.NEW_SMSQUEUE",r.newSmsQueue=!0),r.addNewSmsQueue=function(){r.errors=[],i.smsQueue.save(r.smsQueue).$promise.then(function(e){r.smsQueues.unshift(e.toJSON()),a.success({title:"SmsQueue properly created",msg:r.smsQueue.name?r.smsQueue.name+" has been created!":""}),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.smsQueue.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.smsQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveSmsQueue=function(){r.errors=[],i.smsQueue.update({id:r.smsQueue.id},r.smsQueue).$promise.then(function(e){var n=_.find(r.smsQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"SmsQueue properly saved!",msg:r.smsQueue.name?r.smsQueue.name+" has been saved!":""}),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.smsQueue.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.smsQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteSmsQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The smsQueue will be deleted.").ariaLabel("Delete SmsQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.smsQueue.delete({id:r.smsQueue.id}).$promise.then(function(){_.remove(r.smsQueues,{id:r.smsQueue.id}),a.success({title:"SmsQueue properly deleted!",msg:(r.smsQueue.name||"smsQueue")+" has been deleted!"}),l(r.smsQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.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.smsQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","smsQueues","smsQueue","api","Auth","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,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;r.customDashboard={};var l=[];function d(e,n,t){return o.dashboardItem.update(t).$promise.catch(function(e){console.error(e)})}r.init=function(e,n){return r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.customDashboard=e,r.customDashboard.draggable={enabled:!0,handle:".draggable",stop:d},r.customDashboard.resizable={enabled:!0,handle:".resizable",stop:d},r.customDashboard.widgets=[],l.push(i(function(e){e(r.voiceQueues=o.rpc.getVoiceQueues({fields:"id,name"}))})),l.push(i(function(n){o.chatWebsite.get({fields:"id,name"}).$promise.then(function(e){r.chatWebsites=e||{count:0,rows:[]},n(r.chatWebsites)})})),l.push(i(function(n){o.faxAccount.get({fields:"id,name"}).$promise.then(function(e){r.faxAccounts=e||{count:0,rows:[]},n(r.faxAccounts)})})),l.push(i(function(n){o.mailAccount.get({fields:"id,name"}).$promise.then(function(e){r.mailAccounts=e||{count:0,rows:[]},n(r.mailAccounts)})})),l.push(i(function(n){o.openchannelAccount.get({fields:"id,name"}).$promise.then(function(e){r.openchannelAccounts=e||{count:0,rows:[]},n(r.openchannelAccounts)})})),l.push(i(function(n){o.whatsappAccount.get({fields:"id,name"}).$promise.then(function(e){r.whatsappAccounts=e||{count:0,rows:[]},n(r.whatsappAccounts)})})),l.push(i(function(n){o.smsAccount.get({fields:"id,name"}).$promise.then(function(e){r.smsAccounts=e||{count:0,rows:[]},n(r.smsAccounts)})})),i.all(l).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: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.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:902}).$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:702}).$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:802}).$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:2102}).$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:502}).$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 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"},n="get",t="disposition";l?(n="getDispositions",t=l.route):"user"===m.currentUser.role&&(n="getResources",t="userProfile",e.id=m.currentUser.userProfileId);(a=t,i=n,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",t,n].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,note",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,note:e.note||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.OUTGOING_CALL_STATUS_STYLES,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","realtimeManager"],angular.module("app.voice").controller("OutboundCallsVoiceRealtimeController",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,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_STYLES,m.stateClass=r.STATES_STYLES,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","realtimeManager","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_STYLES,u.stateClass=r.STATES_STYLES,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","realtimeManager","$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(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="VOICE.EDIT_VOICEQUEUE",r.voiceQueue=angular.copy(n),r.voiceQueues=e,r.newVoiceQueue=!1,r.voiceQueue||(r.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"},r.title="VOICE.NEW_VOICEQUEUE",r.newVoiceQueue=!0),r.addNewVoiceQueue=function(){r.errors=[],i.voiceQueue.save(r.voiceQueue).$promise.then(function(e){r.voiceQueues.unshift(e.toJSON()),a.success({title:"VoiceQueue properly created",msg:r.voiceQueue.name?r.voiceQueue.name+" has been created!":""}),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.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.voiceQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveVoiceQueue=function(){r.errors=[],i.voiceQueue.update({id:r.voiceQueue.id},r.voiceQueue).$promise.then(function(e){var n=_.find(r.voiceQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"VoiceQueue properly saved!",msg:r.voiceQueue.name?r.voiceQueue.name+" has been saved!":""}),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.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.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteVoiceQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The voiceQueue will be deleted.").ariaLabel("Delete VoiceQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.voiceQueue.delete({id:r.voiceQueue.id}).$promise.then(function(){_.remove(r.voiceQueues,{id:r.voiceQueue.id}),a.success({title:"VoiceQueue properly deleted!",msg:(r.voiceQueue.name||"voiceQueue")+" has been deleted!"}),l(r.voiceQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.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.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","voiceQueues","voiceQueue","api","Auth","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,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,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(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="WHATSAPP.EDIT_WHATSAPPQUEUE",r.whatsappQueue=angular.copy(n),r.whatsappQueues=e,r.newWhatsappQueue=!1,r.whatsappQueue||(r.whatsappQueue={strategy:"beepall",timeout:10},r.title="WHATSAPP.NEW_WHATSAPPQUEUE",r.newWhatsappQueue=!0),r.addNewWhatsappQueue=function(){r.errors=[],i.whatsappQueue.save(r.whatsappQueue).$promise.then(function(e){r.whatsappQueues.unshift(e.toJSON()),a.success({title:"WhatsappQueue properly created",msg:r.whatsappQueue.name?r.whatsappQueue.name+" has been created!":""}),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.whatsappQueue.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.whatsappQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveWhatsappQueue=function(){r.errors=[],i.whatsappQueue.update({id:r.whatsappQueue.id},r.whatsappQueue).$promise.then(function(e){var n=_.find(r.whatsappQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"WhatsappQueue properly saved!",msg:r.whatsappQueue.name?r.whatsappQueue.name+" has been saved!":""}),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.whatsappQueue.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.whatsappQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteWhatsappQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The whatsappQueue will be deleted.").ariaLabel("Delete WhatsappQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.whatsappQueue.delete({id:r.whatsappQueue.id}).$promise.then(function(){_.remove(r.whatsappQueues,{id:r.whatsappQueue.id}),a.success({title:"WhatsappQueue properly deleted!",msg:(r.whatsappQueue.name||"whatsappQueue")+" has been deleted!"}),l(r.whatsappQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.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.whatsappQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","whatsappQueues","whatsappQueue","api","Auth","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,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(n,e,t,a,i,s,o,r,l,d,c){var m=this;function u(){if(!m.hasMoreMessages||m.isLoading)return t.resolve();m.user.messages.length;return function(){m.isLoading=!0;var e={sort:"-createdAt",FromId:m.currentUser.id+","+m.user.id,ToId:m.currentUser.id+","+m.user.id,ChatGroupId:"null",limit:50,offset:m.user.messages.length};return r.chatInternalMessage.get(e).$promise.then(function(e){m.user.messages=m.user.messages.concat(e.rows),m.hasMoreMessages=e.count>m.user.messages.length;for(var n=0;n<m.user.messages.length;n+=1)!1===m.user.messages[n].read&&m.user.messages[n].ToId===m.currentUser.id&&r.chatInternalMessage.update({id:m.user.messages[n].id,read:!0})}).finally(function(){m.isLoading=!1})}()}function p(e){var n=angular.element("#chat-dialog");s(function(){n.animate({scrollTop:0},e)},0)}function g(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function v(e){return n.get(e).success(function(){c.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(){c.error({title:"PhoneBar API Error",msg:o.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}m.currentUser=l.getCurrentUser(),m.user=void 0,m.users={count:0,rows:[]},m.standardDate=moment(0).format("YYYY-MM-DD HH:mm:ss"),m.unreadMessages={},m.replyMessage="",m.disabled=!1,m.defaultAvatar="assets/images/avatars/profile.png",m.init=function(e){m.license=e,t.all([r.chatInternalMessage.get({fields:"FromId",ToId:m.currentUser.id,read:!1,nolimit:!0,ChatGroupId:"null"}).$promise.then(function(e){m.unreadMessages=_.countBy(e.rows,"FromId")}).catch(function(e){throw e}),r.chatInternalMessage.getUsers().$promise.then(function(e){m.users=e}).catch(function(e){throw e})]).catch(function(e){c.error({msg:e.data?e.data.message:e.message||e})})},m.reply=function(){if(m.disabled=!0,""===m.replyMessage)return void(m.disabled=!1);var e={FromId:m.currentUser.id,ToId:m.user.id,body:m.replyMessage,read:!1};m.replyMessage="",r.chatInternalMessage.save(e).$promise.then(function(e){m.user.messages.unshift(e),m.user.lastMessageAt=e.createdAt,m.user.lastMessage=e}).finally(function(){p(400),m.disabled=!1})},m.webcall=function(e){a.$broadcast("webrtc::call",{target:g(e)})},m.call=function(e){return v("http://127.0.0.1:"+(m.user.phoneBarRemoteControlPort||"9888")+"/api/originate/"+g(e))},m.transfer=function(e){return v("http://127.0.0.1:"+(m.user.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+g(e))},m.openChat=function(e){return m.user=angular.copy(e),m.isMessengerAllowed=!1,"agent"!==m.user.role||m.user.allowmessenger?(p(0),m.isMessengerAllowed=!0,m.hasMoreMessages=!0,u()):void c.warning({title:o.instant("QUICKPANEL.WARNING"),msg:o.instant("QUICKPANEL.MESSENGER_DISABLED")})},m.closeChat=function(){m.user=void 0,m.hasMoreMessages=!0},m.scrollToTopOfChat=p,d.on("chatInternalMessage:save",function(e){if(e.ToId===m.currentUser.id&&!e.ChatGroupId){m.user&&m.user.id===e.FromId?(m.user.messages.unshift(e),p(0),r.chatInternalMessage.update({id:e.id,read:!0})):m.unreadMessages[e.FromId]=m.unreadMessages[e.FromId]?m.unreadMessages[e.FromId]+1:1;var n=_.find(m.users.rows,{id:e.FromId});n&&(n.lastMessageAt=e.createdAt,n.lastMessage=e)}}),d.on("chatInternalMessage:update",function(e){if((e.FromId===m.currentUser.id||e.ToId===m.currentUser.id)&&!e.ChatGroupId){if(m.user){var n=_.find(m.user.messages,{id:e.id});n&&_.merge(n,e)}var t=_.find(m.users.rows,{id:m.currentUser.id===e.FromId?e.ToId:e.FromId});t&&t.lastMessage&&_.merge(t.lastMessage,e),e.ToId===m.currentUser.id&&e.read&&0<m.unreadMessages[e.FromId]&&(m.unreadMessages[e.FromId]-=1)}}),d.on("user:update",function(e){var n=_.find(m.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))}),e("quick-panel").onClose(function(){m.user=void 0}),m.loadMoreMessages=u,m.timelineOptions={scrollEl:"#chat-dialog"},i.$on("$destroy",function(){d.removeAllListeners("chatInternalMessage:save"),d.removeAllListeners("chatInternalMessage:update"),d.removeAllListeners("user:update")})}e.$inject=["$http","$mdSidenav","$q","$rootScope","$scope","$timeout","$translate","api","Auth","socket","toasty"],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.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"},bs:{title:"Bosnian",translation:"TOOLBAR.BOSNIAN",code:"bs",flag:"bs"},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"},et:{title:"Estonian",translation:"TOOLBAR.ESTONIAN",code:"et",flag:"et"},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"}},I.isWebRTCBarRegistered=!1;var O=["ar","fa","he"],C=S.getLogger("toolbar");function w(n){n.queuecallerleaveAt?I.waitingQueueCalls=_.filter(I.waitingQueueCalls,function(e){return e!==n.uniqueid}):I.waitingQueueCalls.push(n.uniqueid)}function R(e){w(e)}function x(e){"inbound"===e.type&&w(e)}function N(){h.connect(),h.on("user:update",H),h.on("user:called",V),h.on("chatInternalMessage:save",F),h.on("chatInternalMessage:update",$),h.on("userVoiceQueue:save",k),h.on("voiceQueue:save",L),h.on("userVoiceQueue:remove",k),h.on("voiceQueue:remove",L),h.on("voiceQueue:update",L),h.on("user:forcelogout",B),h.on("userNotification:send",Q),h.on("userNotification:recalc:"+I.user.id,j),h.onWithoutApply("voice_queue_channel:save",x),h.onWithoutApply("voice_queue_channel:remove",R)}function D(){h.disconnect("logout")}function P(){var e={id:v.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",nolimit:!0};return f.user.getQueues(e).$promise.then(function(e){I.voiceQueues=e.rows})}function L(){P()}function k(e){_.toInteger(e.UserId)===v.getCurrentUser().id&&P()}function M(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 U(){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 F(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++}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--}function q(e){return D(),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 G(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 H(e){if(e.id===I.user.id)if("agent"===e.role&&_.isBoolean(e.online)&&!e.online)if(0!==I.user.showWebBar){var n;D();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(){N(),_.merge(I.user,e),v.setCurrentUser(I.user)})}).catch(function(){clearTimeout(n),q(!0)})}else q(!0);else _.merge(I.user,e),v.setCurrentUser(I.user)}function V(e){if(I.isWebRTCBarRegistered&&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})}}function B(e){if(C.debug("onForceLogout -> data",e),e.user.id===I.user.id&&0!==I.user.showWebBar)return D(),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 Q(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 W(){I.autoanswerIconColor=U()?"green-700-fg":"gray-700-fg"}function j(e){e&&e.permissions&&(I.currentUser.permissions=e.permissions,W())}I.toggleSidenav=function(e){i(e).toggle()},I.logout=q,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=G,I.isAgent=function(){return v.getCurrentUser()&&v.hasRole("agent")},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"}):M(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){U()?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}}):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.hasPermission=function(e){return _.includes(I.currentUser.permissions,e)},I.waitingQueueCalls=[],function(){I.user=v.getCurrentUser(),P().then(function(){return f.rpc.getVoiceQueuesChannels().$promise}).then(function(e){e.rows.forEach(function(n){if("inbound"===n.type&&!n.queuecallerleaveAt){var e=_.find(I.voiceQueues,function(e){return e.name===n.queue});e&&I.waitingQueueCalls.push(n.uniqueid)}})}),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)?G(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 G(null,!0);W()}(),N(),I.openPreviewDialog=M,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("userNotification:recalc:"+I.user.id),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, isOpen)" md-selected-text="vm.placeholders[filter.key]" aria-label="Filter {{ filter.name }}" md-on-open="isOpen = true" md-on-close="isOpen = 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/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/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\',false)" 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\',false)">\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\',false)">\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\' && agent.status !== \'unavailable\'" 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\' && agent.status !== \'unavailable\'" 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/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      <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\n      <div ng-if="vm.dynamics365Account.modernAuthentication == false">\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="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              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.dynamics365Account.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <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              <div ng-if="vm.dynamics365Account.modernAuthentication == false">\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\n\n                          <md-input-container class="md-block">\n                            <md-switch ng-model="vm_cc.dynamics365Configuration.openNewTab">\n                              <span translate="INTEGRATIONS.OPENNEWTAB">Open new tab</span>\n                            </md-switch>\n                          </md-input-container>\n\n\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/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_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/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/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 = null; vm.getAgents()" aria-label="Status filter">\n      <md-option ng-value="null">{{ \'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="null">{{ \'VOICE.ALL\' | translate }}</md-option>\n      <md-option value="DEFAULT PAUSE">{{ \'VOICE.DEFAULT_PAUSE\' | translate | uppercase }}</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">{{ \'STAFF.LOGININPAUSE\' | translate | uppercase }}</md-option>\n      <md-option value="Auto-Pause">{{ \'VOICE.AUTOPAUSE\' | translate | uppercase }}</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.selectAllQueues()" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.SELECT_ALL\' | translate}}</md-button>\n      <md-option ng-value="queue.id" ng-repeat="queue in vm.queues.rows">{{\n        queue.name }}</md-option>\n      <md-button ng-click="vm.clearQueuesSelection()" 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.getAgents">\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\" utc-offset=\"vm.utcOffset\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"['pause', '*pause'].includes(agent.globalStatus)\" start-time=\"agent.lastPauseAt\" utc-offset=\"vm.utcOffset\"></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\" utc-offset=\"vm.utcOffset\" 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' }}\" aria-label=\"Screen Recording\">\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.count}}\" md-on-paginate=\"vm.getAgents\" md-page-select></md-table-pagination>"),e.put("app/main/apps/realtime/views/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 ng-if="vm.voiceQueueType === \'inbound\'" 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.voiceQueuesChannels.count > 0">\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="channel in vm.voiceQueuesChannels.rows | limitObjectFromTo: vm.query.limit:(vm.query.page - 1) * vm.query.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 ng-if="vm.voiceQueueType === \'inbound\'" md-cell>{{channel.routealias}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>\n          <span ng-if="vm.voiceQueueType === \'inbound\'">{{channel.calleridname}}, </span>\n          <span>{{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>{{ \'VOICE.NO_AGENT_AVAILABLE\' | translate }}</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.query.limit" md-page="vm.query.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{ vm.voiceQueuesChannels.count }}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/realtime/views/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 }} {{ \'DASHBOARDS.INFO\' | translate }}</span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-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.formatTime(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.formatTime(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.formatTime(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.formatTime(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  </md-dialog-content>\n</md-dialog>'),e.put("app/main/apps/realtime/views/queues/templates/actions.html",'<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="3">\n    <md-menu-item>\n      <md-button ng-click="vm.editQueue($event, queue)" translate="{{ (vm.channel | uppercase) + \'.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.showPredictiveInfo($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.addOrRemoveAgents($event, queue)" translate="{{ (vm.channel | uppercase) + \'.AGENTSADD_QUEUE\' }}">\n        Add Agents to queue\n      </md-button>\n    </md-menu-item>\n  </md-menu-content>\n</md-menu>'),e.put("app/main/apps/realtime/views/queues/templates/headers/default.html","<tr md-row>\n  <th md-column md-order-by=\"name\">{{ (vm.channel | uppercase) + '.NAME' | translate }}</th>\n  <th md-column>{{ (vm.channel | uppercase) + '.LOGGED_IN' | translate }}</th>\n  <th md-column>{{ 'DASHBOARDS.AVAILABLE' | translate }}</th>\n  <th md-column>{{ (vm.channel | uppercase) + '.PAUSED' | translate }}</th>\n  <th md-column>{{ 'DASHBOARDS.WAITING_INTERACTIONS' | translate }}</th>\n  <th md-column width=\"10px\"></th>\n</tr>"),e.put("app/main/apps/realtime/views/queues/templates/headers/inbound.html","<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>{{ 'DASHBOARDS.WAITING_CALLS' | translate }}</th>\n  <th md-column width=\"10px\"></th>\n</tr>"),e.put("app/main/apps/realtime/views/queues/templates/headers/outbound.html","<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>{{ 'DASHBOARDS.WAITING_CALLS' | 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>"),e.put("app/main/apps/realtime/views/queues/templates/rows/default.html",'<tr md-row ng-hide="vm.queues.count > 0">\n  <td md-cell colspan="6">\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 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\n  <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit" ng-include="\'app/main/apps/realtime/views/queues/templates/actions.html\'"></td>\n</tr>'),e.put("app/main/apps/realtime/views/queues/templates/rows/inbound.html",'<tr md-row ng-hide="vm.queues.count > 0">\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 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.inUse - queue.talking }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n  </td>\n\n  <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit" ng-include="\'app/main/apps/realtime/views/queues/templates/actions.html\'"></td>\n</tr>'),e.put("app/main/apps/realtime/views/queues/templates/rows/outbound.html",'<tr md-row ng-hide="vm.queues.count > 0">\n  <td md-cell colspan="13">\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.inUse - queue.talking - queue.pTalking }}</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) : (queue.statusMessage ? (\'MOTIONDIALER.\' + queue.statusMessage | 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\n  <td md-cell class=\"actions\" ng-if=\"vm.crudPermissions.canEdit\" ng-include=\"'app/main/apps/realtime/views/queues/templates/actions.html'\"></td>\n</tr>"),e.put("app/main/apps/realtime/views/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="{{ (vm.channel | uppercase) + \'.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" ng-include="vm.headersTemplate">\n    </thead>\n    <tbody md-body ng-include="vm.rowsTemplate"></tbody>\n  </table>\n</md-table-container>\n\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.queues.count}}" md-on-paginate="vm.getQueues" 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="1200" 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="1200"><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/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_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/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/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 && vm_ct.isMessengerAllowed">\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" 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" translate="DASHBOARDS.ALL">All</md-option>\n        <md-option ng-value="true">\n          <md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 green-fg" translate="CHAT.ONLINE"></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" translate="CHAT.OFFLINE"></md-icon>Offline\n        </md-option>\n      </md-select>\n    </div>\n  </md-subheader>\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.openChat(user)">\n      <md-divider></md-divider>\n      <img ng-src="{{user.userpic ? \'api/users/\' + user.id + \'/avatar\' : vm_ct.defaultAvatar}}" 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.unreadMessages[user.id]" class="md-accent-bg unread-message-count">\n        {{vm_ct.unreadMessages[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">\n          </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.FromId === vm_ct.currentUser.id" class="s16 no-margin" ng-class="{\'md-accent\': user.lastMessage.read}" md-font-icon="{{ user.lastMessage.read ? \'icon-check-all\' : \'icon-check\' }}"></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    </md-list-item>\n</div>\n</md-list>\n</div>\n\n<div class="chat" ng-show="vm_ct.user && vm_ct.isMessengerAllowed" 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.closeChat()" aria-label="Back" translate translate-attr-aria-label="QUICKPANEL.BACK">\n          <md-icon md-font-icon="icon-keyboard-backspace"></md-icon>\n        </md-button>\n        <h4>\n          <span>{{vm_ct.user.fullname}}</span>\n        </h4>\n      </div>\n\n      <div layout="row" layout-align="end center">\n        <md-button ng-if="vm_ct.license.webrtc && vm_ct.currentUser.role === \'agent\' && vm_ct.currentUser.showWebBar === 2 && vm_ct.user.role === \'agent\'" class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="vm_ct.webcall(vm_ct.user.name)">\n          <md-icon md-font-icon="icon-phone"></md-icon>\n        </md-button>\n        <md-menu ng-if="vm_ct.currentUser.phoneBarRemoteControl && vm_ct.currentUser.role === \'agent\' && vm_ct.currentUser.showWebBar === 0 && vm_ct.user.role === \'agent\'">\n          <md-button class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="$mdOpenMenu($event)">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n\n          <md-menu-content width="3">\n            <md-menu-item ng-disabled="!vm_ct.currentUser.phoneBarRemoteControl">\n              <md-button ng-click="vm_ct.call(vm_ct.user.name)">\n                {{\'DASHBOARDS.CALL_NUMBER\' | translate}} ({{vm_ct.user.name}})\n              </md-button>\n            </md-menu-item>\n            <md-menu-item ng-disabled="!vm_ct.currentUser.phoneBarRemoteControl">\n              <md-button ng-click="vm_ct.transfer(vm_ct.user.name)">\n                {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} ({{vm_ct.user.name}})\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n    </div>\n\n  </md-toolbar>\n  <md-content flex layout-paddings ms-scroll id="chat-dialog">\n    <div ng-if="vm_ct.isLoading" 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 ms-timeline="vm_ct.timelineOptions" ms-timeline-load-more="vm_ct.loadMoreMessages()">\n      <div layout="row" ng-repeat="message in vm_ct.user.messages" class="ms-timeline-item 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\' : vm_ct.defaultAvatar }}" class="avatar" alt="{{vm_ct.user.fullname}}" />\n        <img ng-if="message.FromId === vm_ct.currentUser.id" ng-src="{{ vm_ct.currentUser.userpic ? \'api/users/\' + vm_ct.currentUser.id + \'/avatar\' : vm_ct.defaultAvatar }}" class="avatar">\n        <div class="bubble timeline-card" 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.FromId === vm_ct.currentUser.id" class="s16 margin-5" ng-class="{\'md-accent\': message.read}" md-font-icon="{{ message.read ? \'icon-check-all\' : \'icon-check\' }}"></md-icon>\n          </div>\n        </div>\n      </div>\n\n      <div ng-if="vm_ct.hasMoreMessages" 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-click="vm_ct.loadMoreMessages()" translate="DASHBOARDS.MORE">\n        </md-button>\n      </div>\n      <div ng-if="!vm_ct.hasMoreMessages && vm_ct.user.messages.length > 20" layout="row" layout-align="end center" class="ng-scope layout-align-center-center layout-row">\n        <md-button class="md-fab md-mini" type="button" ng-click="vm_ct.scrollToTopOfChat(0)">\n          <md-icon md-font-icon="icon-arrow-up-bold"></md-icon>\n        </md-button>\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    <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" registered="vm.isWebRTCBarRegistered" 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 badge-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    \x3c!-- \n      ADD V3\n      \n      <md-button ng-if="vm.user.role === \'agent\' && vm.license.voice && vm.user.permissions.includes(110)" class="preview-button no-margin" ng-disabled="vm.disable" aria-label="Language" md-menu-origin md-menu-align-target>\n      <div ng-if="vm.waitingQueueCalls.length > 0" class="md-accent-bg queues-call-count badge-count">{{vm.waitingQueueCalls.length}}</div>\n      <md-icon md-font-icon="icon-phone-incoming blue-fg" class="icon"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.WAITINGQUEUECALLS">Waiting Queues Calls</span></md-tooltip>\n    </md-button> --\x3e\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",{sort:"name",nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,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})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:510}).state("app.chat.realtime.queues",{url:"/queues",params:{channel:"chat"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/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:1003})}]},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",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,ChatWebsiteId",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:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatWebsites",fields:"id,name",sort:"-updatedAt",nolimit:!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",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,MailAccountId",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:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!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",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,SmsAccountId",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:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!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",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,OpenchannelAccountId",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:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelAccounts",fields:"id,name",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",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,FaxAccountId",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:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!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",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,WhatsappAccountId",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:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!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",{sort:"name",nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,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})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},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:"name",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,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:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.queues",{url:"/queues",params:{channel:"fax"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/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:"name",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",sort:"name",limit:10,offset:0})}],userProfileSection:["apiResolver","Auth",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",{sort:"name",nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,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})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.queues",{url:"/queues",params:{channel:"mail"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/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:"name",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",sort:"name",limit:10,offset:0})}],userProfileSection:["apiResolver","Auth",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",{sort:"name",nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,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})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queues",{url:"/queues",params:{channel:"voice",direction:"outbound"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/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",params:{direction:"outbound"},controller:"QueueCallsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queue-calls/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"outbound",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,fields:"id,name",section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"name",nolimit:!0})}],userProfileSection:["apiResolver","Auth",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})}],voiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels",{type:"outbound"})}]},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,createdAt",role:"agent",sort:"-createdAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context,createdAt",role:"agent",sort:"-createdAt",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"name",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:"name",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"name",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:"name",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"IvrCampaigns",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: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",{sort:"name",nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,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})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:810}).state("app.openchannel.realtime.queues",{url:"/queues",params:{channel:"openchannel"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/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",{sort:"name",nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,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})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:710}).state("app.sms.realtime.queues",{url:"/queues",params:{channel:"sms"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/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",{sort:"name",nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,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})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},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:"fullname",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Telephones",fields:"id,fullname,userpic,internal",role:"telephone",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: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:"name",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,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:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queues",{url:"/queues",params:{channel:"voice",direction:"inbound"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/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",params:{direction:"inbound"},controller:"QueueCallsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queue-calls/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"inbound",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,fields:"id,name",section:"VoiceQueues",channel:"voice",type:"inbound",sort:"name",nolimit:!0})}],userProfileSection:["apiResolver","Auth",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})}],voiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels",{type:"inbound"})}]},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,createdAt",role:"agent",sort:"-createdAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context,createdAt",role:"agent",sort:"-createdAt",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"name",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:"name",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"name",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",{sort:"name",nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,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})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:2110}).state("app.whatsapp.realtime.queues",{url:"/queues",params:{channel:"whatsapp"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/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(n,t,a,i,s){var o;return{request:function(e){var n=a.get("motion.token");return e.headers=e.headers||{},s.isSameOrigin(e.url)&&n&&(e.headers.Authorization="Bearer "+n),e},responseError:function(e){switch(e.status){case 401:a.remove("motion.token"),n.$broadcast("webrtc::logout"),(o||(o=i.get("$state"))).go("app.login")}return t.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(n,a,e,t){var o=this;function i(){var a=o.selectedField.options&&!_.isEmpty(o.selectedField.options.extraOperators),i=o.selectedField.options&&!_.isEmpty(o.selectedField.options.excludedOperators);o.availableOperators=_.filter(o.operators,function(n){var e=!n.applyTo||_.includes(n.applyTo,o.selectedField.type);n.isExtra=a&&_.some(o.selectedField.options.extraOperators,function(e){return e===n.type});var t=_.includes(n.excludeFrom,o.selectedField.type)||i&&_.includes(o.selectedField.options.excludedOperators,n.type);if((e||n.isExtra)&&!t)return n})}function s(n){return e[n.model][n.action](n.params).$promise.then(function(e){return e.rows}).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 r(){!o.value||_.isArray(o.value)&&_.isEmpty(o.value)?o.isValidCondition=!1:o.selectedOperator?o.selectedOperator&&"$between"===o.selectedOperator.type?o.isValidCondition=!(!o.endRangeValue||!o.isValidRange):o.isValidCondition=!0:o.isValidCondition=!1}function l(){"number"===o.selectedField.type?_.isNumber(o.endRangeValue)?o.isValidRange=Number(o.endRangeValue)>Number(o.value):o.isValidRange=!0:"date"===o.selectedField.type&&(o.maxDateRange=moment(o.endRangeValue).subtract(1,"day"),o.isValidRange=!0),r()}function d(){var e=m();o.options.conditions.push(e),p()}function c(){var e=m(),n=_.findIndex(o.options.conditions,"style");o.options.conditions.splice(n,1,e),p(),o.pendingCondition.style=null,o.pendingCondition=void 0}function m(){return{name:o.selectedField.name,operator:n.instant("DASHBOARDS."+o.selectedOperator.translate),value:o.value,endValue:o.endRangeValue,displayValue:u(o.value),displayEndValue:u(o.endRangeValue),query:{column:o.selectedField.column,operator:o.selectedOperator.type,value:function(){var e,n=o.value,t=o.endRangeValue;switch(o.selectedField.type){case"date":var a=moment(n).utcOffset(0,!0).format("YYYY-MM-DD");if("$between"===o.selectedOperator.type){var i=moment(t).utcOffset(0,!0).format("YYYY-MM-DD");e=[a,i]}else e=a;break;case"number":e="$between"===o.selectedOperator.type?[n,t]:n;break;case"multiselect":var s=o.selectedField.options.field||"name";e=_.map(n,s);break;case"select":e=n.id;break;case"autocomplete":e=o.selectedOperator.isExtra?n:n.id;break;default:e=n}return e}()},disabled:!1}}function u(e){var n;if(e){switch(o.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"===o.selectedOperator.type?t.join(" or "):t.join(" and ");break;case"select":n=e.name;break;case"autocomplete":n=o.selectedOperator.isExtra?e:e.displayValue;break;default:n=e}return n}}function p(){o.value=null,o.endRangeValue=null,o.minDateRange=null,o.maxDateRange=null,o.isValidCondition=!1}o.operators=o.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"]}],o.addCondition=d,o.editCondition=function(e){o.pendingCondition=e,o.pendingCondition.style="md-amber-200-bg",o.selectedField=_.find(o.options.fields,["name",o.pendingCondition.name]),i(),o.selectedOperator=_.find(o.availableOperators,["type",o.pendingCondition.query.operator]),"date"===o.selectedField.type&&"string"==typeof o.pendingCondition.value?(o.value=new Date(o.pendingCondition.value),o.minDateRange=moment(o.value).add(1,"day"),o.endRangeValue=o.pendingCondition.endValue?new Date(o.pendingCondition.endValue):void 0):(o.value=o.pendingCondition.value,o.endRangeValue=o.pendingCondition.endValue);o.isValidRange=!0,o.isValidCondition=!0},o.updateCondition=c,o.cancelUpdateCondition=function(){o.pendingCondition.style=null,o.pendingCondition=void 0},o.setConditionStatus=function(e){e.style=e.disabled?void 0:"chip-disabled",e.disabled=!e.disabled},o.removeCondition=function(){_.isEmpty(o.options.conditions)&&o.clearFilter()},o.getValues=function(){return o.selectedField.options.routes&&Array.isArray(o.selectedField.options.routes)?(e=angular.copy(o.selectedField.options.routes).map(function(e){return s(e)}),a.all(e).then(function(e){o.selectedField.values=_.flatten(e)})):o.selectedField.options.route?function(){var e=angular.copy(o.selectedField.options.route);if("autocomplete"===o.selectedField.type)for(var n=0;n<Object.keys(e.params).length;n++){var t=Object.keys(e.params)[n];"@autocomplete"===e.params[t]&&(e.params[t]=o.searchText,e.params.autocomplete=!0)}return a.resolve().then(function(){if(!o.selectedField.values||!0===e.params.autocomplete)return s(e)}).then(function(e){return e&&(o.selectedField.values=e),"autocomplete"===o.selectedField.type?function(e){var n=[];o.searchText&&(n=e.filter(function(e){e.displayValue="";for(var n=0;n<o.selectedField.options.searchFields.length;n++){var t=o.selectedField.options.searchFields[n],a=e[t]||"";e.displayValue+=a+" "}return _.trimEnd(e.displayValue),e.displayValue.toLowerCase().includes(o.searchText.toLowerCase())}));return n}(o.selectedField.values):o.selectedField.values})}():(o.selectedField.values.forEach(function(e){e.translate&&(e.name=n.instant(e.translate))}),o.selectedField.values);var e},o.onFieldChange=function(){o.value=void 0,o.endRangeValue=void 0,o.searchText=void 0,o.isValidCondition=!1,i(),o.autoSelectOperator=1===o.availableOperators.length,o.autoSelectOperator||(o.selectedOperator=void 0)},o.onOperatorChange=function(e){o.isValidRange=!0,o.selectedOperator&&(e?e.applyTo?0<_.difference(o.selectedOperator.applyTo,e.applyTo).length&&(o.value=null):o.selectedOperator.applyTo&&(o.value=null):o.value||(o.value=null),"between"!=o.selectedOperator.type&&(o.endRangeValue=null),o.selectedField.options&&!_.isEmpty(o.selectedField.options.extraOperators)&&(o.selectedOperator.isExtra=_.some(o.selectedField.options.extraOperators,function(e){return e===o.selectedOperator.type})));r()},o.onValueChange=function(){o.selectedOperator&&"$between"===o.selectedOperator.type?"number"===o.selectedField.type?l():"date"===o.selectedField.type&&(o.minDateRange=moment(o.value).add(1,"day"),r()):r()},o.checkRange=l,o.handleKeyboardAction=function(){o.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")}),n.onbeforeunload=function(){E.sessions.forEach(function(e){E.terminate(e)})}}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:"=",registered:"="},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(e,t,a){var i=this;function s(e,n,t){r(e).then(function(){n&&!1!==t&&i.search()})}function o(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()}function r(e){var n=e.key,t={param:i.query[n],resources:e.options,placeholder:e.placeholder,ngValue:e.ngValue};return a.setPlaceholder(t).then(function(e){i.placeholders[n]=e})}i.pickerModels={},i.placeholders={},i.localizationMap=t.localizationMap,i.onMultiselectInit=function(e){r(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=s,i.onDateRangeSelection=o,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]]:[],r(e).then(function(){i.search()})},i.selectAll=function(e){var n=e.key,t=e.ngValue||"id";i.query[n]=_.map(e.options,t),r(e).then(function(){i.search()})},e.$on("ms-quick-filter:update",function(e,t){t.filters.forEach(function(e){var n=_.find(i.filters,["name",e]);if(n)switch(n.type){case"date":o(n);break;case"multiselect":s(n,!0,t.update);break;case"select":i.search()}})})}e.$inject=["$scope","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"}})}(),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(!0)},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(!0);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(e,n,t,a,i){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(),e.$digest()},r.interval)}function l(e){var n=(e||moment()).utcOffset(r.utcOffset).format("YYYY-MM-DD HH:mm:ss");return moment(n)}function o(){t.resolve().then(function(){return null===r.utcOffset||void 0===r.utcOffset?i.getUTCOffset():r.utcOffset}).then(function(e){return r.utcOffset=e,l()}).catch(function(e){throw 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){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.getDate",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}o(),e.$watch("vm.startTime",function(e,n){angular.isUndefined(e)||0!==e.length&&(angular.equals(e,n)||o())}),e.$on("timer-start",function(){r.startTime=void 0,o()}),n.bind("$destroy",function(){r.timeoutId&&clearTimeout(r.timeoutId)})}e.$inject=["$scope","$element","$q","toasty","settingsManager"],angular.module("app.core").directive("timer",function(){return{restrict:"EA",replace:!1,scope:{startTime:"=?",interval:"=?",utcOffset:"=?"},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 i=this;i.filter=[],i.filtered=!1,i.fontSize=20,i.label="",i.getCount=function(e){var n=0;if(e){i.fontSize=e.attrs[r]&&e.attrs[r].value?parseInt(e.attrs[r].value)-parseInt(e.attrs[r].value)%2:20;var t=e.attrs.find(function(e){return"attrChannel"===e.name});if(t||e.attrs.push({name:"attrChannel",value:"voice"}),"voice"!==e.attrs[l].value?"talking"===e.attrs[s].value?i.label="Opened":"answered"===e.attrs[s].value?i.label="Managed":i.label=e.attrs[s].value:i.label=e.attrs[s].value,e.attrs[l].value.toLowerCase().includes("voice")){e.attrs[o].value&&e.attrs[o].value.length?(i.filtered=!0,i.filter=_.intersection(e.voiceQueuesSelected,e.attrs[o].value)):(i.filtered=!1,i.filter=e.voiceQueuesSelected);for(var a=0;a<e.voiceQueues.rows.length;a+=1)_.includes(i.filter,e.voiceQueues.rows[a].id)&&(n+=e.voiceQueues.rows[a][e.attrs[s].value]?parseInt(e.voiceQueues.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("chat")){e.attrs[g].value&&e.attrs[g].value.length?(i.filtered=!0,i.filter=_.intersection(e.chatWebsitesSelected,e.attrs[g].value)):(i.filtered=!1,i.filter=e.chatWebsitesSelected);for(var a=0;a<e.chatWebsites.rows.length;a+=1)_.includes(i.filter,e.chatWebsites.rows[a].id)&&(n+=e.chatWebsites.rows[a][e.attrs[s].value]?parseInt(e.chatWebsites.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("fax")){e.attrs[c].value&&e.attrs[c].value.length?(i.filtered=!0,i.filter=_.intersection(e.faxAccountsSelected,e.attrs[c].value)):(i.filtered=!1,i.filter=e.faxAccountsSelected);for(var a=0;a<e.faxAccounts.rows.length;a+=1)_.includes(i.filter,e.faxAccounts.rows[a].id)&&(n+=e.faxAccounts.rows[a][e.attrs[s].value]?parseInt(e.faxAccounts.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("mail")){e.attrs[d].value&&e.attrs[d].value.length?(i.filtered=!0,i.filter=_.intersection(e.mailAccountsSelected,e.attrs[d].value)):(i.filtered=!1,i.filter=e.mailAccountsSelected);for(var a=0;a<e.mailAccounts.rows.length;a+=1)_.includes(i.filter,e.mailAccounts.rows[a].id)&&(n+=e.mailAccounts.rows[a][e.attrs[s].value]?parseInt(e.mailAccounts.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("openchannel")){e.attrs[u].value&&e.attrs[u].value.length?(i.filtered=!0,i.filter=_.intersection(e.openchannelAccountsSelected,e.attrs[u].value)):(i.filtered=!1,i.filter=e.openchannelAccountsSelected);for(var a=0;a<e.openchannelAccounts.rows.length;a+=1)_.includes(i.filter,e.openchannelAccounts.rows[a].id)&&(n+=e.openchannelAccounts.rows[a][e.attrs[s].value]?parseInt(e.openchannelAccounts.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("whatsapp")){e.attrs[p].value&&e.attrs[p].value.length?(i.filtered=!0,i.filter=_.intersection(e.whatsappAccountsSelected,e.attrs[p].value)):(i.filtered=!1,i.filter=e.whatsappAccountsSelected);for(var a=0;a<e.whatsappAccounts.rows.length;a+=1)_.includes(i.filter,e.whatsappAccounts.rows[a].id)&&(n+=e.whatsappAccounts.rows[a][e.attrs[s].value]?parseInt(e.whatsappAccounts.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("sms")){e.attrs[m].value&&e.attrs[m].value.length?(i.filtered=!0,i.filter=_.intersection(e.smsAccountsSelected,e.attrs[m].value)):(i.filtered=!1,i.filter=e.smsAccountsSelected);for(var a=0;a<e.smsAccounts.rows.length;a+=1)_.includes(i.filter,e.smsAccounts.rows[a].id)&&(n+=e.smsAccounts.rows[a][e.attrs[s].value]?parseInt(e.smsAccounts.rows[a][e.attrs[s].value]):0)}}return n};var s=0,o=1,r=2,l=3,d=4,c=5,m=6,u=7,p=8,g=9})}(),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(d,c,t,h){function f(e,n){return"motion2.home."+e+":"+n}function b(e){return _.capitalize(e)+("chat"===e?"Website":"Account")+"Id"}function A(e){return"chat"===e?"Website":"Account"}function E(e,n,t){var a=f(n,t);h.set(a,e)}return{addAccount:function(r,e){var l=e.accounts,d=e.accountId,c=e.filters,m=e.query,u=e.userId,n="get"+_.capitalize(r)+("chat"===r?"Websites":"Accounts"),p=b(r),g=A(r),v=l.rows.length===m[p].length;return t.user[n]({id:u,nolimit:!0}).$promise.then(function(e){var n,t,a,i,s;if(l.rows=e.rows,l.count=e.count,_.find(c,["name",g]).options=l.rows,v){var o=(t=d,a=f(n=r,u),i=b(n),(s=h.get(a)).query&&s.query[i]&&s.query[i].push(t),s);o&&E(o,r,u),m[p].push(d)}return v})},removeAccount:function(t,e){var n=e.accounts,a=e.accountId,i=e.filters,s=e.query,o=e.userId,r=b(t),l=s[r].includes(a);return c.resolve().then(function(){var e=function(e,n,t){var a=f(e,n),i=b(e),s=h.get(a);if(s.query&&s.query[i]){var o=s.query[i].indexOf(t);-1<o&&s.query[i].splice(o,1)}return s}(t,o,a);e||(e=s),s[r]=e.query[r],_.remove(n.rows,function(e){return e.id===a}),n.count=n.rows.length,_.find(i,function(e){var n=A(t);return e.name===n}).options=n.rows,1===n.count&&(e.query[r]=[n.rows[0].id],s[r]=[n.rows[0].id]),E(e,t,o)}).then(function(){var e=A(t);d.$broadcast("ms-quick-filter:update",{filters:[e],update:l})})}}}e.$inject=["$rootScope","$q","api","localStorageManager"],angular.module("app.core").factory("agentAccountAssociationManager",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(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}e.$inject=["$filter","dateFilterLocalizationFactory"],angular.module("app.core").factory("dateRangeManager",e)}(),function(){"use strict";function e(t,a,e,n,i){var s={},o={},r="mail",l={};function d(){if(o=n.getCurrentUser(),e.localStorage.getItem("motion2.home:"+o.id)||(r="dashboard"),l=e.localStorage.getItem("motion2.home."+r+":"+o.id)){var a=JSON.parse(l);a.drafts?o.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,i.mask(t))}):a.drafts={},l=a}else l={drafts:{}};return l.drafts}function c(){_.isEmpty(s.drafts)?delete l.drafts:l.drafts=s.drafts,e.localStorage.setItem("motion2.home."+r+":"+o.id,JSON.stringify(l))}return s.init=function(){s.drafts=d()},s.getByInteraction=function(n){return s.drafts=d(),_.find(_.values(s.drafts),function(e){return e.interaction&&e.interaction.id===n})},s.removeByInteraction=function(n){s.drafts=d();var e=_.find(_.values(s.drafts),function(e){return e.interaction&&e.interaction.id===n});e&&(delete s.drafts[e.id],c())},s.add=function(e){s.drafts=d();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};s.drafts[t.id]=t,c()},s.update=function(e){s.drafts=d();var n=s.drafts[e.id];n&&(n.content=e.message,s.drafts[e.id]=n,c())},s.open=function(e){s.drafts=d();var n=s.drafts[e];n&&t.$broadcast("open"+_.startCase(r)+"Draft",n)},s.remove=function(e){s.drafts=d(),s.drafts[e]&&(delete s.drafts[e],c())},s}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(o,i){function r(e,n){var t=i.localStorage.getItem(e),a=t?JSON.parse(t):{};return n?a[n]:a}function s(e,n){return i.localStorage.setItem(e,JSON.stringify(n))}return{get:r,parseInteractionsKey:function(e,n,t,a){var i="motion2.home."+e+":"+t,s=_.capitalize(e)+("chat"===e?"Website":"Account")+"Id";return o.resolve().then(function(){var e=r(i,"query");return e?((n=_.merge(n,e)).sort&&0<=n.sort.indexOf("lastMessage")&&(n=_.omit(n,"sort")),n.includeAll=!0):n.createdAt={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},1===a.length?n[s]=[a[0].id]:0===a.length&&(n[s]=[]),n}).catch(function(e){throw e})},set:s,update:function(e,n,t){var a=r(e);t?a[t]=n:a=n;return s(e,a)}}}e.$inject=["$q","$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(n,i){return{setPlaceholder:function(a){var e;return n(function(n){try{if(_.isEmpty(a.resources))e=i.instant("DASHBOARDS.NONE");else if(_.isEmpty(a.param))e=a.placeholder?i.instant(a.placeholder):i.instant("DASHBOARDS.CHOOSE");else if(a.param.length===a.resources.length)e=i.instant("DASHBOARDS.ALL");else{var t=a.ngValue||"id";e=_(a.resources).filter(function(e){return _.includes(a.param,e[t])}).map("name").value().join(", ")}n(e)}catch(e){n(null)}})}}}e.$inject=["$q","$translate"],angular.module("app.core").factory("quickFilterManager",e)}(),function(){"use strict";function e(t,e){var s=["available","loggedIn","paused","waiting"],o=["busy","inUse","invalid","loggedInDb","notInUse","onHold","ringing","ringInUse","talking","unavailable","unknown"],r=["pTalking","originated","message","statusMessage","dialActive","dialMethod","Trunk","startPredictive","startProgressive","erlangCalls","erlangCallToSecond","erlangAbandonmentRate","erlangBusyFactor","dialPredictiveInterval","dialPredictiveIntervalMaxThreshold","dialPredictiveIntervalMinThreshold","predictiveIntervalAvailable","predictiveIntervalTotalCalls","predictiveIntervalAnsweredCalls","predictiveIntervalDroppedCallsTimeout","predictiveIntervalDroppedCallsCallersExit","predictiveIntervalAvgHoldtime","predictiveIntervalAvgTalktime"],n=["idle","unknown","unavailable","ringing"];function a(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 i(e){return!!_.isNil(e)||_.includes(n,e)}return{checkEveryChannelPauseStatus:function(n){e.getChannels().forEach(function(e){n[e+"Pause"]&&"idle"===n[e+"Status"]&&(n[e+"Status"]="pause")})},getAgentStatus:function(e){var n;return a(e,!1)?"pause":a(e,!0)?"*pause":("idle"!==(n=e).voiceStatus&&n.voicePause?n.voiceStatus="pause":!_.every([n.chatStatus,n.faxStatus,n.mailStatus,n.openchannelStatus,n.smsStatus,n.voiceStatus,n.whatsappStatus],i))?"busy":"idle"},getAgentStatusDisplayValue:function(e){var n=e.globalStatus;return"pause"===e.globalStatus?n=e.pauseType||t.instant("VOICE.DEFAULT_PAUSE"):"*pause"===e.globalStatus&&(n="*"+(e.pauseType||t.instant("VOICE.DEFAULT_PAUSE"))),n},getUserUpdateEventOrigin:function(e){var n="call";return e.lastLoginAt?n="login":!1===e.online?n="logout":e.pauseType&&(n="pause"),n},sortAgentsByStatus:function(e,t){return e.sort(function(e,n){return e.globalStatus===n.globalStatus?"pause"===e.globalStatus?"DESC"===t?(e.pauseType||"")<(n.pauseType||"")||e.fullname.toLowerCase()>n.fullname.toLowerCase()?1:-1:(e.pauseType||"")<(n.pauseType||"")||e.fullname.toLowerCase()>n.fullname.toLowerCase()?-1:1:"DESC"===t?e.fullname.toLowerCase()<n.fullname.toLowerCase()?1:-1:e.fullname.toLowerCase()<n.fullname.toLowerCase()?-1:1:"DESC"===t?e.globalStatus<n.globalStatus?1:-1:e.globalStatus<n.globalStatus?-1:1})},updateQueue:function(e,n){var t=!!n.type,a=s;"inbound"===n.type?a=a.concat(o):"outbound"===n.type&&(a=a.concat(o,r));var i=_.pick(e,a);_.merge(n,i),t&&0<n.ringing&&n.available<n.loggedIn&&(n.available+=n.ringing)},INCOMING_CALL_STATUS_STYLES:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},OUTGOING_CALL_STATUS_STYLES:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},STATES_STYLES:{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"},STATUS_STYLES:{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"}}}e.$inject=["$translate","msUtils"],angular.module("app.core").factory("realtimeManager",e)}(),function(){"use strict";function e(e,n){var t={get:function(){return a},getUTCOffset:function(){return null===i?n.setting.getDate().$promise.then(function(e){return i=e.offset}):e.resolve(i)},set:function(e){e&&(a=e.toJSON())}},a={},i=null;return t}e.$inject=["$q","api"],angular.module("app.core").factory("settingsManager",e)}(),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}},getChannels:function(){return["chat","fax","mail","openchannel","sms","voice","whatsapp"]},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"},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"}}}),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.export.name=l.export.name.replace(/\//g,"_"),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,e,i,s,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=s,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){c.projects.unshift(e),i.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++)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.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),i.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++)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.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(){_.remove(c.projects,{id:c.project.id}),i.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:"ar",option:"Arabic"},{value:"hy",option:"Armenian"},{value:"bn",option:"Bengali"},{value:"bs",option:"Bosnian"},{value:"bg",option:"Bulgarian"},{value:"ca",option:"Catalan"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-TW",option:"Chinese (Traditional)"},{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:"tl",option:"Filipino"},{value:"fi",option:"Finnish"},{value:"fr",option:"French"},{value:"de",option:"German"},{value:"el",option:"Greek"},{value:"gu",option:"Gujarati"},{value:"iw",option:"Hebrew"},{value:"hi",option:"Hindi"},{value:"hu",option:"Hungarian"},{value:"is",option:"Icelandic"},{value:"id",option:"Indonesian"},{value:"it",option:"Italian"},{value:"jw",option:"Javanese"},{value:"ja",option:"Japanese"},{value:"kn",option:"Kannada"},{value:"ko",option:"Korean"},{value:"la",option:"Latin"},{value:"lv",option:"Latvian"},{value:"mk",option:"Macedonian"},{value:"ml",option:"Malayalam"},{value:"mr",option:"Marathi"},{value:"ne",option:"Nepali"},{value:"no",option:"Norwegian"},{value:"pl",option:"Polish"},{value:"pt",option:"Portuguese"},{value:"ro",option:"Romanian"},{value:"ru",option:"Russian"},{value:"sr",option:"Serbian"},{value:"si",option:"Sinhalese"},{value:"sk",option:"Slovak"},{value:"es",option:"Spanish"},{value:"su",option:"Sundanese"},{value:"sw",option:"Swahili"},{value:"sv",option:"Swedish"},{value:"ta",option:"Tamil"},{value:"te",option:"Telugu"},{value:"th",option:"Thai"},{value:"tr",option:"Turkish"},{value:"uk",option:"Ukrainian"},{value:"ur",option:"Urdu"},{value:"vi",option:"Vietnamese"},{value:"cy",option:"Welsh"}]}).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(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,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(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="CHAT.EDIT_CHATQUEUE",r.chatQueue=angular.copy(n),r.chatQueues=e,r.newChatQueue=!1,r.chatQueue||(r.chatQueue={strategy:"beepall",timeout:10},r.title="CHAT.NEW_CHATQUEUE",r.newChatQueue=!0),r.addNewChatQueue=function(){r.errors=[],i.chatQueue.save(r.chatQueue).$promise.then(function(e){r.chatQueues.unshift(e.toJSON()),a.success({title:"ChatQueue properly created",msg:r.chatQueue.name?r.chatQueue.name+" has been created!":""}),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.chatQueue.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.chatQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveChatQueue=function(){r.errors=[],i.chatQueue.update({id:r.chatQueue.id},r.chatQueue).$promise.then(function(e){var n=_.find(r.chatQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"ChatQueue properly saved!",msg:r.chatQueue.name?r.chatQueue.name+" has been saved!":""}),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.chatQueue.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.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteChatQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The chatQueue will be deleted.").ariaLabel("Delete ChatQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.chatQueue.delete({id:r.chatQueue.id}).$promise.then(function(){_.remove(r.chatQueues,{id:r.chatQueue.id}),a.success({title:"ChatQueue properly deleted!",msg:(r.chatQueue.name||"chatQueue")+" has been deleted!"}),l(r.chatQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.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.chatQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","chatQueues","chatQueue","api","Auth","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,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=f,g.saveContact=function(){g.errors=[],u.cmContact.update({id:g.contact.id},g.contact).$promise.then(function(e){var n=h(e);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=S,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=A,g.getFinals=E,g.getHistories=y,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)})}),A(),E(),y()}).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?f():void 0}).finally(function(){g.contact&&g.contact.id&&(T(),g.contact.dateOfBirth=S(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=T,g.loadMoreJourney=function(){return i(function(e){var n=g.journey.length;return e(T(n))})};var v=n.getLogger("agent.general.contact");function h(e){return e.firstName||e.lastName?(e.firstName+" "+e.lastName).trim():e.phone}function f(){g.errors=[],u.cmContact.save(g.contact).$promise.then(function(e){g.contact.id=e.id,g.newContact=!1;var n=h(e);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 b(n){return function(e){g[n]=e||{count:0,rows:[]}}}function A(){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,b("hoppers")).$promise)}function E(){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,b("finals")).$promise)}function y(){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,b("histories")).$promise)}function S(e){return null===e?void 0:new Date(e)}function T(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&&(A(),E(),y())});var I=!0,O=1;m.$watch("queryHopper.filter",function(e,n){I?t(function(){I=!1}):(n||(O=g.queryHopper.page),e!==n&&(g.queryHopper.page=1),e||(g.queryHopper.page=O),A())}),m.$watch("queryFinal.filter",function(e,n){I?t(function(){I=!1}):(n||(O=g.queryFinal.page),e!==n&&(g.queryFinal.page=1),e||(g.queryFinal.page=O),E())}),m.$watch("queryHistory.filter",function(e,n){I?t(function(){I=!1}):(n||(O=g.queryHistory.page),e!==n&&(g.queryHistory.page=1),e||(g.queryHistory.page=O),y())})}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,note",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,note:e.note||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,t,e,a){var i=this;function s(e,n){switch(e){case"first":i.selectedDisposition=i.firstLevelDisposition,i.anySecondLevelDisposition=_.some(i.dispositions,["ParentId",i.firstLevelDisposition.id]),i.secondLevelDisposition=void 0,i.thirdLevelDisposition=void 0,i.anyThirdLevelDisposition=!1;break;case"second":i.selectedDisposition=i.secondLevelDisposition,i.anyThirdLevelDisposition=_.some(i.dispositions,["ParentId",i.secondLevelDisposition.id]);break;case"third":i.selectedDisposition=i.thirdLevelDisposition}n&&function(e){switch(e){case"first":i.call.secondDisposition&&(i.secondLevelDisposition=_.find(i.dispositions,function(e){return e.name===i.call.secondDisposition&&e.ParentId===i.firstLevelDisposition.id}),i.secondLevelDisposition&&s("second",!0));break;case"second":i.call.thirdDisposition&&(i.thirdLevelDisposition=_.find(i.dispositions,function(e){return e.name===i.call.thirdDisposition&e.ParentId===i.secondLevelDisposition.id}),i.thirdLevelDisposition&&s("third",!0))}}(e)}i.dispositions=e,i.call=a,i.note=i.call.note||void 0,i.onDispositionChange=s,i.clearDispositionSelection=function(e){"second"===e?(i.secondLevelDisposition=void 0,i.thirdLevelDisposition=void 0,i.selectedDisposition=i.firstLevelDisposition):"third"===e&&(i.thirdLevelDisposition=void 0,i.selectedDisposition=i.secondLevelDisposition);n.disposition.$setDirty()},i.saveDisposition=function(){i.call.note=i.note;var e={firstLevel:i.firstLevelDisposition?i.firstLevelDisposition.name:void 0,secondLevel:i.secondLevelDisposition?i.secondLevelDisposition.name:void 0,thirdLevel:i.thirdLevelDisposition?i.thirdLevelDisposition.name:void 0,note:i.note?i.note:void 0};t.hide(e)},i.closeDialog=function(){t.cancel()},i.call.disposition&&(i.firstLevelDisposition=_.find(i.dispositions,function(e){return e.name===i.call.disposition}),i.firstLevelDisposition&&s("first",!0))}e.$inject=["$scope","$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,note",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,note:e.note||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,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.chatInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,ChatWebsiteId:[]},g.sectionColor="green-A700",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getChatWebsites({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.chatAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.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:g.chatAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.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:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.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:g.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:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("chat",g.query,g.user.id,g.chatAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("chatInteraction:save",O),d.on("chatInteraction:update",O),d.on("chatInteractionTags:save",C),d.on("chatMessage:save",w),d.on("chatMessage:update",w),d.on("user_has_chat_interactions:save",T),d.on("user_has_chat_interactions:remove",I),d.on("userChatWebsite:save",f),d.on("userChatWebsite:remove",b),0<g.setting.chatInteractionsReloadTimeout&&R()})},g.success=E,g.getChatInteractions=y,g.showChatInteraction=function(e,n){t.$parent.vm.addInteractionTab("chat",n)},g.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)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:"downloadChatInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.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:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"chat",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getChatWebsiteLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.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:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.chat"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.chat");function h(e){return{accounts:g.chatAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.ChatWebsiteId);u.addAccount("chat",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.ChatWebsiteId);u.removeAccount("chat",n).catch(function(e){v.error(e)})}}function A(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(g.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 E(e){!g.reloadingInteractions&&0<g.setting.chatInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.chatInteractions=e||{count:0,rows:[]};for(var n=0;n<g.chatInteractions.rows.length;n+=1)S(g.chatInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=a.localStorage.getItem("motion2.home.chat:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,a.localStorage.setItem("motion2.home.chat:"+g.user.id,JSON.stringify(n)),g.promise=r.chatInteraction.get(g.query,E).$promise}function S(e){"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.chatInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.chatInteractions.rows=_.orderBy(g.chatInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.chatInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.chatInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.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 R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.chatInteractionsReloadTimeout)}t.$on("$destroy",function(){d.removeAllListeners("chatMessage:save"),d.removeAllListeners("chatMessage:update"),d.removeAllListeners("chatInteraction:save"),d.removeAllListeners("chatInteractionTags:save"),d.removeAllListeners("chatInteraction:update"),d.removeAllListeners("user_has_chat_interactions:save"),d.removeAllListeners("user_has_chat_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],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){var d=this,c=["type","waiting","dialMethod","dialActive"];function m(e){d.voiceQueuesTotal=e.count?e.count:0,d.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(d.voiceQueues,function(e,n){d.rpcVoiceQueues[n]&&(d.voiceQueues[n].waiting=d.rpcVoiceQueues[n].waiting||0)})}d.voiceQueues={},d.voiceQueuesTotal=0,d.rpcVoiceQueues={},d.getVoiceQueues={},d.rpcVoiceQueuesChannels={},d.addVoiceQueuesChannels={},d.deleteVoiceQueuesChannels=[],d.load=!0,d.query={id:r.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",type:"inbound",limit:10,page:1},d.queryChannels={limit:10,page:1},d.success=m,d.getVoiceQueues=function(){d.query.offset=(d.query.page-1)*d.query.limit,d.promise=o.user.getQueues(d.query,m).$promise},d.getSize=function(e){return _.size(e)},d.onSaveQueue=function(e){d.voiceQueues[e.id]&&d.rpcVoiceQueues[e.id]&&(d.rpcVoiceQueues[e.id]=e,_.merge(d.voiceQueues[e.id],_.pick(e,c)))},d.onSaveChannel=function(e){"inbound"===e.type&&(e.queuecallerleaveAt?(delete d.rpcVoiceQueuesChannels[e.uniqueid],d.load&&d.deleteVoiceQueuesChannels.push(e.uniqueid)):(d.rpcVoiceQueuesChannels[e.uniqueid]=e,d.load&&(d.addVoiceQueuesChannels[e.uniqueid]=e)))},d.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&d.getVoiceQueues()},d.onSaveVoiceQueue=function(e){_.isNil(e)||(d.rpcVoiceQueues[e.id]=_.pick(e,c))},d.onUpdateVoiceQueue=function(e){_.isNil(e)||(d.rpcVoiceQueues[e.id]&&_.merge(d.rpcVoiceQueues[e.id],_.pick(e,c)),d.voiceQueues[e.id]&&_.merge(d.voiceQueues[e.id],_.pick(e,c)))},d.onRemoveVoiceQueue=function(e){_.isNil(e)||(delete d.rpcVoiceQueues[e.id],delete d.voiceQueues[e.id])},l.onWithoutApply("voice_queue:save",d.onSaveQueue),l.onWithoutApply("voice_queue_channel:save",d.onSaveChannel),l.onWithoutApply("voice_queue_channel:remove",function(e){"inbound"===e.type&&delete d.rpcVoiceQueuesChannels[e.uniqueid]}),l.onWithoutApply("userVoiceQueue:save",d.onUserVoiceQueue),l.onWithoutApply("userVoiceQueue:remove",d.onUserVoiceQueue),l.onWithoutApply("voiceQueue:save",d.onSaveVoiceQueue),l.onWithoutApply("voiceQueue:remove",d.onRemoveVoiceQueue),l.onWithoutApply("voiceQueue:update",d.onUpdateVoiceQueue),o.user.getQueues(d.query).$promise.then(function(e){return d.myQueues=e,d.myQueues.count=e.rows.length,o.rpc.getVoiceQueues().$promise}).then(function(e){for(var n=e.rows,t=_.keyBy(n,"id"),a=0;a<d.myQueues.count;a++){var i=d.myQueues.rows[a];d.rpcVoiceQueues[i.id]=t[i.id]}return o.rpc.getVoiceQueuesChannels().$promise}).then(function(e){d.rpcVoiceQueuesChannels=e?_.keyBy(e.rows?_.filter(e.rows,function(e){return!("inbound"!==e.type||e.queuecallerleaveAt||!_.find(d.myQueues.rows,{name:e.queue}))}):[],"uniqueid"):{}}).catch(function(e){console.error(e)}).finally(function(){_.merge(d.rpcVoiceQueuesChannels,d.addVoiceQueuesChannels);for(var e=0;e<d.deleteVoiceQueuesChannels.length;e+=1)delete d.rpcVoiceQueuesChannels[d.deleteVoiceQueuesChannels[e]];d.load=!1,d.addVoiceQueuesChannels={},d.deleteVoiceQueuesChannels=[],d.getVoiceQueues()});var u=!0,p=1;e.$watch("vm_dc.query.filter",function(e,n){u?t(function(){u=!1}):(n||(p=d.query.page),e!==n&&(d.query.page=1),e||(d.query.page=p),d.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"],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(a,t,i,s,o,n,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.faxInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,FaxAccountId:[]},g.sectionColor="blue-grey",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getFaxAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.faxAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.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:g.faxAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.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:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.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:g.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:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("fax",g.query,g.user.id,g.faxAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("faxInteraction:save",O),d.on("faxInteraction:update",O),d.on("faxInteractionTags:save",C),d.on("faxMessage:save",w),d.on("faxMessage:update",w),d.on("user_has_fax_interactions:save",T),d.on("user_has_fax_interactions:remove",I),d.on("userFaxAccount:save",f),d.on("userFaxAccount:remove",b)})},g.success=E,g.getFaxInteractions=y,g.showFaxInteraction=function(e,n){a.$parent.vm.addInteractionTab("fax",n)},g.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)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:"downloadFaxInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.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:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"fax",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?n.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return n.instant("DASHBOARDS.NOT_ASSIGNED")},g.getFaxAccountLabel=function(e){if(e.Account)return e.Account.key;return n.instant("DASHBOARDS.UNKNOWN")},g.composeFaxInteraction=function(e,t){i.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.faxAccount.send({id:t.id},n).$promise.then(function(e){c.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++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})}})},g.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:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.fax"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.fax");function h(e){return{accounts:g.faxAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.FaxAccountId);u.addAccount("fax",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.FaxAccountId);u.removeAccount("fax",n).catch(function(e){v.error(e)})}}function A(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(g.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 E(e){!g.reloadingInteractions&&0<g.setting.faxInteractionsReloadTimeout&&function(e){e&&g.interactionsInterval&&t.cancel(g.interactionsInterval);g.interactionsInterval=t(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.faxInteractionsReloadTimeout)}(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.faxInteractions=e||{count:0,rows:[]};for(var n=0;n<g.faxInteractions.rows.length;n+=1)S(g.faxInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=o.localStorage.getItem("motion2.home.fax:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,o.localStorage.setItem("motion2.home.fax:"+g.user.id,JSON.stringify(n)),g.promise=r.faxInteraction.get(g.query,E).$promise}function S(e){e.contactInfo=e.Contact?e.Contact.fax:void 0,"Unknown"===e.contactName&&(e.contactName=n.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.faxInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.faxInteractions.rows=_.orderBy(g.faxInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else y(g.query.page)}}function C(e){if(e){var n=_.find(g.faxInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.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))}}}a.$on("$destroy",function(){d.removeAllListeners("faxMessage:save"),d.removeAllListeners("faxMessage:update"),d.removeAllListeners("faxInteraction:save"),d.removeAllListeners("faxInteractionTags:save"),d.removeAllListeners("faxInteraction:update"),d.removeAllListeners("user_has_fax_interactions:save"),d.removeAllListeners("user_has_fax_interactions:remove"),g.interactionsInterval&&t.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeFaxController",e)}(),function(){"use strict";function e(o,n,r,l,m,t,e,d,a,i,c,u,s,p,g){var v=this;v.user=a.getCurrentUser(),v.license={},v.setting={},v.tags={count:0,rows:[]},v.mailInteractions={count:0,rows:[]},v.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,MailAccountId:[]},v.sectionColor="teal",v.onInit=function(e,n){return v.license=e,v.setting=n,d.user.getMailAccounts({id:v.user.id,nolimit:!0}).$promise.then(function(e){return v.mailAccounts=e||{count:0,rows:[]},d.tag.get({sort:"name"}).$promise}).then(function(e){v.tags=e||{count:0,rows:[]}}).then(function(){return d.mailSubstatus.get({nolimit:!0}).$promise}).then(function(e){v.subStatuses=e||{count:0,rows:[]}}).then(function(){v.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:v.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:v.mailAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:v.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:v.tags.rows,placeholder:"DASHBOARDS.TAGS"}],v.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:v.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:E("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:E("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:E("third")}}]}}).catch(function(e){h.error(e)}).finally(function(){s.parseInteractionsKey("mail",v.query,v.user.id,v.mailAccounts.rows).then(function(){v.isSearchBarVisible=!(v.query.search||!v.query.filter),S(v.query.page)}),i.on("mailInteraction:save",w),i.on("mailInteraction:update",w),i.on("mailInteractionTags:save",R),i.on("mailMessage:save",x),i.on("mailMessage:update",x),i.on("user_has_mail_interactions:save",O),i.on("user_has_mail_interactions:remove",C),i.on("userMailAccount:save",b),i.on("userMailAccount:remove",A),0<v.setting.mailInteractionsReloadTimeout&&N()})},v.success=y,v.getMailInteractions=S,v.showMailInteraction=T,v.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()})})},v.disposeInteraction=function(e,n){var t=v.user.voicePause||v.user.chatPause||v.user.mailPause||v.user.openchannelPause||v.user.faxPause,a=!n.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:a,escapeToClose:a,onRemoving:function(){v.user&&n.Account.mandatoryDisposition&&!t&&d.user.unpause({id:v.user.id}).$promise.catch(function(e){h.error(e)})},locals:{user:v.user,channel:"mail",interaction:n}})},v.getContactLabel=I,v.getAgentLabel=function(e){if(e.UserId)return e.UserId===v.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},v.getMailAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},v.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=v.user.voicePause||v.user.chatPause||v.user.mailPause||v.user.openchannelPause||v.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(){v.user&&s.mandatoryDisposition&&!a&&d.user.unpause({id:v.user.id}).$promise.catch(function(e){h.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:v.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)}})},v.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:v.sectionColor,fields:v.advancedSearch.fields,storagePath:"home.mail"},fullscreen:!0}).then(function(e){v.isSearchBarVisible=!(e.value||!v.query.filter),e.apply&&(v.query.search=e.value,S())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var h=g.getLogger("agent.general.mail");function f(e){return{accounts:v.mailAccounts,accountId:e,filters:v.quickFilters,query:v.query,userId:v.user.id}}function b(e){if(e.UserId===v.user.id){var n=f(e.MailAccountId);p.addAccount("mail",n).then(function(e){e&&S()}).catch(function(e){h.error(e)})}}function A(e){if(e.UserId===v.user.id){var n=f(e.MailAccountId);p.removeAccount("mail",n).catch(function(e){h.error(e)})}}function E(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(v.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 y(e){!v.reloadingInteractions&&0<v.setting.mailInteractionsReloadTimeout&&N(!0),v.searchInProgress=!1,v.reloadingInteractions=!1,v.mailInteractions=e||{count:0,rows:[]};for(var n=0;n<v.mailInteractions.rows.length;n+=1)I(v.mailInteractions.rows[n])}function S(e){v.searchInProgress=!0,e||(v.query.page=1),(void 0===v.query.closed||null===v.query.closed||v.query.closed)&&delete v.query.substatus,v.query.offset=(v.query.page-1)*v.query.limit;var n=m.localStorage.getItem("motion2.home.mail:"+v.user.id);(n=n?JSON.parse(n):{}).query=v.query,m.localStorage.setItem("motion2.home.mail:"+v.user.id,JSON.stringify(n)),v.promise=d.mailInteraction.get(v.query,y).$promise}function T(e,n){o.$parent.vm.addInteractionTab("mail",n)}function I(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 O(e){var n=_.find(v.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function C(e){var n=_.find(v.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function w(e){if(e){var n=_.find(v.mailInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),v.query.sort){var t=_.startsWith(v.query.sort,"-")?"desc":"asc";v.mailInteractions.rows=_.orderBy(v.mailInteractions.rows,_.trimStart(v.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===v.setting.mailInteractionsReloadTimeout&&S(v.query.page)}}function R(e){if(e){var n=_.find(v.mailInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function x(e){if(e&&!e.secret){var n=_.find(v.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 N(e){e&&v.interactionsInterval&&n.cancel(v.interactionsInterval),v.interactionsInterval=n(function(){v.reloadingInteractions=!0,v.searchInProgress||S()},1e3*v.setting.mailInteractionsReloadTimeout)}o.$on("openMailDraft",function(e,s){s.interaction?(s.interaction.isDraft=!0,T(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=v.user.voicePause||v.user.chatPause||v.user.mailPause||v.user.openchannelPause||v.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(){v.user&&s.account.mandatoryDisposition&&!a&&d.user.unpause({id:v.user.id}).$promise.catch(function(e){h.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:v.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)}})}),v.resetTooltipPosition=function(e){var n=angular.element(e.currentTarget).children()[1],t=angular.element(n);t.css("top",""),t.css("left",""),t.css("bottom","")},v.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(){i.removeAllListeners("mailMessage:save"),i.removeAllListeners("mailMessage:update"),i.removeAllListeners("mailInteraction:save"),i.removeAllListeners("mailInteractionTags:save"),i.removeAllListeners("mailInteraction:update"),i.removeAllListeners("user_has_mail_interactions:save"),i.removeAllListeners("user_has_mail_interactions:remove"),v.interactionsInterval&&n.cancel(v.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","draftManager","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],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(a,n,i,s,t,o,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.openchannelInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,OpenchannelAccountId:[]},g.sectionColor="amber",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getOpenchannelAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.openchannelAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.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:g.openchannelAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.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:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.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:g.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:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("openchannel",g.query,g.user.id,g.openchannelAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("openchannelInteraction:save",O),d.on("openchannelInteraction:update",O),d.on("openchannelInteractionTags:save",C),d.on("openchannelMessage:save",w),d.on("openchannelMessage:update",w),d.on("user_has_openchannel_interactions:save",T),d.on("user_has_openchannel_interactions:remove",I),d.on("userOpenchannelAccount:save",f),d.on("userOpenchannelAccount:remove",b),0<g.setting.openchannelInteractionsReloadTimeout&&R()})},g.success=E,g.getOpenchannelInteractions=y,g.showOpenchannelInteraction=function(e,n){a.$parent.vm.addInteractionTab("openchannel",n)},g.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)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:"downloadOpenchannelInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.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:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"openchannel",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getOpenchannelAccountLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.composeOpenchannelInteraction=function(e,t){i.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.openchannelAccount.send({id:t.id},n).$promise.then(function(e){c.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$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++)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:"OPENCHANNELACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}})},g.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:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.openchannel"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.openchannel");function h(e){return{accounts:g.openchannelAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.OpenchannelAccountId);u.addAccount("openchannel",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.OpenchannelAccountId);u.removeAccount("openchannel",n).catch(function(e){v.error(e)})}}function A(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(g.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 E(e){!g.reloadingInteractions&&0<g.setting.openchannelInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.openchannelInteractions=e||{count:0,rows:[]};for(var n=0;n<g.openchannelInteractions.rows.length;n+=1)S(g.openchannelInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=t.localStorage.getItem("motion2.home.openchannel:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,t.localStorage.setItem("motion2.home.openchannel:"+g.user.id,JSON.stringify(n)),g.promise=r.openchannelInteraction.get(g.query,E).$promise}function S(e){"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.openchannelInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.openchannelInteractions.rows=_.orderBy(g.openchannelInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.openchannelInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.openchannelInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.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 R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.openchannelInteractionsReloadTimeout)}a.$on("$destroy",function(){d.removeAllListeners("openchannelMessage:save"),d.removeAllListeners("openchannelMessage:update"),d.removeAllListeners("openchannelInteraction:save"),d.removeAllListeners("openchannelInteractionTags:save"),d.removeAllListeners("openchannelInteraction:update"),d.removeAllListeners("user_has_openchannel_interactions:save"),d.removeAllListeners("user_has_openchannel_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],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(a,n,i,s,t,o,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.smsInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,SmsAccountId:[]},g.sectionColor="orange",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getSmsAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.smsAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.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:g.smsAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.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:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.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:g.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:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("sms",g.query,g.user.id,g.smsAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("smsInteraction:save",O),d.on("smsInteraction:update",O),d.on("smsInteractionTags:save",C),d.on("smsMessage:save",w),d.on("smsMessage:update",w),d.on("user_has_sms_interactions:save",T),d.on("user_has_sms_interactions:remove",I),d.on("userSmsAccount:save",f),d.on("userSmsAccount:remove",b),0<g.setting.smsInteractionsReloadTimeout&&R()})},g.success=E,g.getSmsInteractions=y,g.showSmsInteraction=function(e,n){a.$parent.vm.addInteractionTab("sms",n)},g.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)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:"downloadSmsInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.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:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"sms",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getSmsAccountLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.composeSmsInteraction=function(e,t){i.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.smsAccount.send({id:t.id},n).$promise.then(function(e){c.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$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++)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:"SMSACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}})},g.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:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.sms"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.sms");function h(e){return{accounts:g.smsAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.SmsAccountId);u.addAccount("sms",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.SmsAccountId);u.removeAccount("sms",n).catch(function(e){v.error(e)})}}function A(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(g.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 E(e){!g.reloadingInteractions&&0<g.setting.smsInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.smsInteractions=e||{count:0,rows:[]};for(var n=0;n<g.smsInteractions.rows.length;n+=1)S(g.smsInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=t.localStorage.getItem("motion2.home.sms:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,t.localStorage.setItem("motion2.home.sms:"+g.user.id,JSON.stringify(n)),g.promise=r.smsInteraction.get(g.query,E).$promise}function S(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.smsInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.smsInteractions.rows=_.orderBy(g.smsInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.smsInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.smsInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.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 R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.smsInteractionsReloadTimeout)}a.$on("$destroy",function(){d.removeAllListeners("smsMessage:save"),d.removeAllListeners("smsMessage:update"),d.removeAllListeners("smsInteraction:save"),d.removeAllListeners("smsInteractionTags:save"),d.removeAllListeners("smsInteraction:update"),d.removeAllListeners("user_has_sms_interactions:save"),d.removeAllListeners("user_has_sms_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],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(a,n,i,s,t,o,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.whatsappInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,WhatsappAccountId:[]},g.sectionColor="lime-A700",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getWhatsappAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.whatsappAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.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:g.whatsappAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.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:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.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:g.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:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("whatsapp",g.query,g.user.id,g.whatsappAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("whatsappInteraction:save",O),d.on("whatsappInteraction:update",O),d.on("whatsappInteractionTags:save",C),d.on("whatsappMessage:save",w),d.on("whatsappMessage:update",w),d.on("user_has_whatsapp_interactions:save",T),d.on("user_has_whatsapp_interactions:remove",I),d.on("userWhatsappAccount:save",f),d.on("userWhatsappAccount:remove",b),0<g.setting.whatsappInteractionsReloadTimeout&&R()})},g.success=E,g.getWhatsappInteractions=y,g.showWhatsappInteraction=function(e,n){a.$parent.vm.addInteractionTab("whatsapp",n)},g.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)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:"downloadWhatsappInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.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:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"whatsapp",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getWhatsappAccountLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.composeWhatsappInteraction=function(e,t){i.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.whatsappAccount.send({id:t.id},n).$promise.then(function(e){c.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$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++)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:"WHATSAPPACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}})},g.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:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.whatsapp"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.whatsapp");function h(e){return{accounts:g.whatsappAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.WhatsappAccountId);u.addAccount("whatsapp",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.WhatsappAccountId);u.removeAccount("whatsapp",n).catch(function(e){v.error(e)})}}function A(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(g.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 E(e){!g.reloadingInteractions&&0<g.setting.whatsappInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.whatsappInteractions=e||{count:0,rows:[]};for(var n=0;n<g.whatsappInteractions.rows.length;n+=1)S(g.whatsappInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=t.localStorage.getItem("motion2.home.whatsapp:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,t.localStorage.setItem("motion2.home.whatsapp:"+g.user.id,JSON.stringify(n)),g.promise=r.whatsappInteraction.get(g.query,E).$promise}function S(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.whatsappInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.whatsappInteractions.rows=_.orderBy(g.whatsappInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.whatsappInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.whatsappInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.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 R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.whatsappInteractionsReloadTimeout)}a.$on("$destroy",function(){d.removeAllListeners("whatsappMessage:save"),d.removeAllListeners("whatsappMessage:update"),d.removeAllListeners("whatsappInteraction:save"),d.removeAllListeners("whatsappInteractionTags:save"),d.removeAllListeners("whatsappInteraction:update"),d.removeAllListeners("user_has_whatsapp_interactions:save"),d.removeAllListeners("user_has_whatsapp_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],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]):_.findLast(h.interaction.Messages,["secret",!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.interaction.UserId!==h.user.id&&(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||o.from))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||g.isDraft?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+=""===p.message.body.trim()?e(t):" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=""===p.message.body.trim()?n.value:" "+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+=""===p.message.body.trim()?e(t):" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=""===p.message.body.trim()?n.value:" "+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+=""===p.message.body.trim()?e(t):" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=""===p.message.body.trim()?n.value:" "+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(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="FAX.EDIT_FAXQUEUE",r.faxQueue=angular.copy(n),r.faxQueues=e,r.newFaxQueue=!1,r.faxQueue||(r.faxQueue={strategy:"beepall",timeout:10},r.title="FAX.NEW_FAXQUEUE",r.newFaxQueue=!0),r.addNewFaxQueue=function(){r.errors=[],i.faxQueue.save(r.faxQueue).$promise.then(function(e){r.faxQueues.unshift(e.toJSON()),a.success({title:"FaxQueue properly created",msg:r.faxQueue.name?r.faxQueue.name+" has been created!":""}),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.faxQueue.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.faxQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveFaxQueue=function(){r.errors=[],i.faxQueue.update({id:r.faxQueue.id},r.faxQueue).$promise.then(function(e){var n=_.find(r.faxQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"FaxQueue properly saved!",msg:r.faxQueue.name?r.faxQueue.name+" has been saved!":""}),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.faxQueue.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.faxQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteFaxQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The faxQueue will be deleted.").ariaLabel("Delete FaxQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.faxQueue.delete({id:r.faxQueue.id}).$promise.then(function(){_.remove(r.faxQueues,{id:r.faxQueue.id}),a.success({title:"FaxQueue properly deleted!",msg:(r.faxQueue.name||"faxQueue")+" has been deleted!"}),l(r.faxQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.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.faxQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","faxQueues","faxQueue","api","Auth","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,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,a,i,n,s,o,r,l,d){var c=this,m=d&&1==d.count?d.rows[0].crudPermissions:null;function u(){c.faxAccounts.rows.forEach(function(n){var e=_.find(c.rpcFaxAccounts.rows,["id",n.id]);e&&_.merge(n,e);var t={id:n.id,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};i.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",i.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){o.error(e.data?e.data.message:e.toString())})})}function p(e){var n=_.find(c.faxAccounts.rows,["id",e.id]);n&&_.merge(n,e)}function g(e){c.faxAccounts.rows=e.rows,u()}c.currentUser=n.getCurrentUser(),c.faxAccounts=r,c.rpcFaxAccounts=l,c.crudPermissions=n.parseCrudPermissions(m),c.query={sort:"name",limit:10,page:1},c.success=g,c.$onInit=u,c.getFaxAccounts=function(){c.query.offset=(c.query.page-1)*c.query.limit,n.hasRole("admin")?c.promise=i.faxAccount.get(c.query,g).$promise:(c.query.id=c.currentUser.userProfileId,c.query.section="FaxAccounts",c.promise=i.userProfile.getResources(c.query,g).$promise)},c.goToFaxAccount=function(e,n){a.go("app.fax.faxAccounts.edit",{id:n.id,faxAccount:n})},s.on("faxAccount:save",p),s.on("faxAccount:update",p),s.on("faxMessage:save",function(e){var n=_.find(c.faxAccounts.rows,["id",e.FaxAccountId]);n&&("in"==e.direction?(n.in+=1,n.lastIn=e.createdAt):(n.out+=1,n.lastOut=e.createdAt))});var v=!0,h=1;e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=h),c.getFaxAccounts())}),e.$on("$destroy",function(){s.removeAllListeners("faxAccount:save"),s.removeAllListeners("faxAccount:update"),s.removeAllListeners("faxMessage:save")})}e.$inject=["$scope","$timeout","$state","api","Auth","socket","toasty","faxAccounts","rpcFaxAccounts","userProfileSection"],angular.module("app.fax").controller("FaxAccountsRealtimeController",e)}(),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:"name",limit:10,page:1},u.statusClass=r.STATUS_STYLES,u.stateClass=r.STATES_STYLES,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","realtimeManager","$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.contactInfo=e.Contact?e.Contact.email:void 0:(e.contactName=e.to.split(" <")[0],e.contactInfo=e.to.split("<").pop().split(">")[0]),"Unknown"===e.contactName&&(e.contactName=i.instant("MAIL.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.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(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="MAIL.EDIT_MAILQUEUE",r.mailQueue=angular.copy(n),r.mailQueues=e,r.newMailQueue=!1,r.mailQueue||(r.mailQueue={strategy:"beepall",timeout:10},r.title="MAIL.NEW_MAILQUEUE",r.newMailQueue=!0),r.addNewMailQueue=function(){r.errors=[],i.mailQueue.save(r.mailQueue).$promise.then(function(e){r.mailQueues.unshift(e.toJSON()),a.success({title:"MailQueue properly created",msg:r.mailQueue.name?r.mailQueue.name+" has been created!":""}),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.mailQueue.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.mailQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveMailQueue=function(){r.errors=[],i.mailQueue.update({id:r.mailQueue.id},r.mailQueue).$promise.then(function(e){var n=_.find(r.mailQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"MailQueue properly saved!",msg:r.mailQueue.name?r.mailQueue.name+" has been saved!":""}),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.mailQueue.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.mailQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteMailQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The mailQueue will be deleted.").ariaLabel("Delete MailQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.mailQueue.delete({id:r.mailQueue.id}).$promise.then(function(){_.remove(r.mailQueues,{id:r.mailQueue.id}),a.success({title:"MailQueue properly deleted!",msg:(r.mailQueue.name||"mailQueue")+" has been deleted!"}),l(r.mailQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.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.mailQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","mailQueues","mailQueue","api","Auth","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,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,a,i,n,s,o,r,l,d){var c=this,m=d&&1==d.count?d.rows[0].crudPermissions:null;function u(){c.mailAccounts.rows.forEach(function(n){var e=_.find(c.rpcMailAccounts.rows,["id",n.id]);e&&_.merge(n,e);var t={id:n.id,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};i.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",i.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){o.error(e.data?e.data.message:e.toString())})})}function p(e){var n=_.find(c.mailAccounts.rows,["id",e.id]);n&&_.merge(n,e)}function g(e){c.mailAccounts.rows=e.rows,u()}function v(){c.query.offset=(c.query.page-1)*c.query.limit,n.hasRole("admin")?c.promise=i.mailAccount.get(c.query,g).$promise:(c.query.id=c.currentUser.userProfileId,c.query.section="MailAccounts",c.promise=i.userProfile.getResources(c.query,g).$promise)}c.currentUser=n.getCurrentUser(),c.mailAccounts=r,c.rpcMailAccounts=l,c.crudPermissions=n.parseCrudPermissions(m),c.query={sort:"name",limit:10,page:1},c.success=g,c.$onInit=u,c.getMailAccounts=v,c.goToMailAccount=function(e,n){a.go("app.mail.mailAccounts.edit",{id:n.id,mailAccount:n})},c.verifySmtp=function(e,n){{if(n&&n.id)return i.mailAccount.verifySmtp({id:n.id}).$promise.then(function(){o.success({title:"Smtp properly verified",msg:"Connection succeded!"})}).catch(function(e){o.error({title:"Smtp properly verified",msg:e.data?JSON.stringify(e.data):e.toString()})});o.error({title:"Smtp properly verified",msg:"Smpt id unknown"})}},s.on("mailAccount:save",p),s.on("mailAccount:update",p),s.on("mailMessage:save",function(e){var n=_.find(c.mailAccounts.rows,["id",e.MailAccountId]);n&&("in"==e.direction?(n.in+=1,n.lastIn=e.createdAt):(n.out+=1,n.lastOut=e.createdAt))});var h=!0,f=1;e.$watch("vm.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),v())}),e.$on("$destroy",function(){s.removeAllListeners("mailAccount:save"),s.removeAllListeners("mailAccount:update"),s.removeAllListeners("mailMessage:save")})}e.$inject=["$scope","$timeout","$state","api","Auth","socket","toasty","mailAccounts","rpcMailAccounts","userProfileSection"],angular.module("app.mail").controller("MailAccountsRealtimeController",e)}(),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(){u.campaigns.rows.forEach(function(e){u.rpcCampaigns[e.id]&&_.merge(e,_.pick(u.rpcCampaigns[e.id],p))})}u.currentUser=m.getCurrentUser(),u.campaigns=o||{rows:[],count:0},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:"name",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){var n=_.find(u.campaigns.rows,["id",e.id]);n&&(_.merge(n,_.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:u.campaigns.rows,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.campaigns=e||{count:0,rows:[]},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,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(){c.queues.rows.forEach(function(e){c.rpcQueues[e.id]&&_.merge(e,_.pick(c.rpcQueues[e.id],m))})}c.queues=a||{rows:[],count:0},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:"name",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"outbound",fields:"id,name",sort:"name",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){var n=_.find(c.queues.rows,["id",e.id]);n&&_.merge(n,_.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.queues=e||{count:0,rows:[]},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,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(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="OPENCHANNEL.EDIT_OPENCHANNELQUEUE",r.openchannelQueue=angular.copy(n),r.openchannelQueues=e,r.newOpenchannelQueue=!1,r.openchannelQueue||(r.openchannelQueue={strategy:"beepall",timeout:10},r.title="OPENCHANNEL.NEW_OPENCHANNELQUEUE",r.newOpenchannelQueue=!0),r.addNewOpenchannelQueue=function(){r.errors=[],i.openchannelQueue.save(r.openchannelQueue).$promise.then(function(e){r.openchannelQueues.unshift(e.toJSON()),a.success({title:"OpenchannelQueue properly created",msg:r.openchannelQueue.name?r.openchannelQueue.name+" has been created!":""}),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.openchannelQueue.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.openchannelQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveOpenchannelQueue=function(){r.errors=[],i.openchannelQueue.update({id:r.openchannelQueue.id},r.openchannelQueue).$promise.then(function(e){var n=_.find(r.openchannelQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"OpenchannelQueue properly saved!",msg:r.openchannelQueue.name?r.openchannelQueue.name+" has been saved!":""}),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.openchannelQueue.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.openchannelQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteOpenchannelQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The openchannelQueue will be deleted.").ariaLabel("Delete OpenchannelQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.openchannelQueue.delete({id:r.openchannelQueue.id}).$promise.then(function(){_.remove(r.openchannelQueues,{id:r.openchannelQueue.id}),a.success({title:"OpenchannelQueue properly deleted!",msg:(r.openchannelQueue.name||"openchannelQueue")+" has been deleted!"}),l(r.openchannelQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.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.openchannelQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","openchannelQueues","openchannelQueue","api","Auth","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,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,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,v){var h=this,f=t(function(){},999),b=n.params.direction||"inbound",A=m&&1==m.count?m.rows[0].crudPermissions:null;function E(){d.on("user:save",T),d.on("user:update",I),d.on("user:agentconnect",O),d.on("user:agentcomplete",C),d.on("userVoiceQueue:save",w),d.on("userVoiceQueue:remove",R),d.on("userChatQueue:save",w),d.on("userChatQueue:remove",R),d.on("userSmsQueue:save",w),d.on("userSmsQueue:remove",R),d.on("userMailQueue:save",w),d.on("userMailQueue:remove",R),d.on("userFaxQueue:save",w),d.on("userFaxQueue:remove",R),d.on("userOpenchannelQueue:save",w),d.on("userOpenchannelQueue:remove",R),d.on("userWhatsappQueue:save",w),d.on("userWhatsappQueue:remove",R),h.agents.rows.forEach(function(e){e.globalStatusDisplayValue=g.getAgentStatusDisplayValue(e)})}function y(){return h.query.offset=(h.query.page-1)*h.query.limit,l.realtime.getAgents(h.query).$promise.then(function(e){h.agents=e,E()}).catch(function(e){c.error({title:s.instant("VOICE.AGENTS"),msg:e.status?JSON.stringify(e.data):e.toString()})})}function S(e,n){if(n)return h.agents.count>h.agents.rows.length?y():(a=n,i=_.remove(h.agents.rows,["id",a]),void(h.agents.count-=i.length));if(h.query.sort.includes("globalStatus")&&(!h.query.globalStatusFilter||"busy"===h.query.globalStatusFilter)){var t="-"===h.query.sort[0]?"DESC":"ASC";if(!1===e)return y();if(!0===e)h.agents.rows=g.sortAgentsByStatus(h.agents.rows,t);else{if(h.agents.count>h.agents.rows.length)return y();h.agents.rows=g.sortAgentsByStatus(h.agents.rows,t)}}var a,i}function T(e){var n=_.find(h.agents.rows,["id",e.id]);n&&(_.merge(n,e),n.globalStatus=g.getAgentStatus(n),g.checkEveryChannelPauseStatus(n),n.globalStatusDisplayValue=g.getAgentStatusDisplayValue(n))}function I(e){var n,t,a=g.getUserUpdateEventOrigin(e);try{switch(a){case"login":!function(e){var n=!1;if(h.query.globalStatusFilter?e.loginInPause&&"pause"===h.query.globalStatusFilter?n=!0:e.loginInPause||"idle"!==h.query.globalStatusFilter||(n=!0):n=!0,n)y()}(e);break;case"logout":!function(e){if(0!==h.agents.count){var n=_.find(h.agents.rows,["id",e.id]);if(!n)return y();S(!1,n.id)}}(e);break;case"pause":n=e,(t=_.find(h.agents.rows,["id",n.id]))?(_.merge(t,n),t.globalStatus=g.getAgentStatus(t),g.checkEveryChannelPauseStatus(t),h.query.globalStatusFilter&&t.globalStatus!==h.query.globalStatusFilter?S(!1,t.id):t.globalStatusDisplayValue=g.getAgentStatusDisplayValue(t)):y()}}catch(e){c.error({title:s.instant("VOICE.AGENTS"),msg:e.toString()})}}function O(e){try{var n=_.find(h.agents.rows,["id",e.id]);S(!0),e.agentconnected?n?(_.merge(n,_.pick(e,["queue","destconnectedlinenum","routealias"])),S()):S(!1):"busy"!==h.query.globalStatusFilter||n||y()}catch(e){c.error({title:s.instant("VOICE.AGENTS"),msg:e.toString()})}}function C(e){if("ATTENDED"!==e.transfer){var n=_.find(h.agents.rows,["id",e.id]);n&&(delete n.queue,delete n.destconnectedlinenum,delete n.routealias,"busy"===h.query.globalStatusFilter?S(!1,e.id):S())}}function w(e){if(0!==h.query.globalQueueFilter.length){var n=e[_.capitalize(h.channel)+"QueueId"];h.query.globalQueueFilter.includes(n)&&y()}}function R(e){if(0!==h.query.globalQueueFilter.length){var n=e[_.capitalize(h.channel)+"QueueId"];h.query.globalQueueFilter.includes(n)&&S(!1,e.UserId)}}h.currentUser=u.getCurrentUser(),h.channel=n.params.channel,h.agents=o,h.pauses=r||{count:0,rows:[]},h.license=p,h.crudPermissions=u.parseCrudPermissions(A),h.utcOffset=v,h.query={limit:10,page:1,sort:"fullname",globalStatusFilter:null,pauseTypeFilter:null,globalQueueFilter:[],channel:h.channel},h.$onInit=E,h.getAgents=y,h.logout=function(e){return l.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){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()})})},h.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()})})},h.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()})})},h.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:h.channel,direction:b,crudPermissions:h.crudPermissions}})},h.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()})})},h.getQueuesByChannel=function(){if(!(h.queues&&0<h.queues.count)){var e={type:b,fields:"id,name",sort:"name",nolimit:"true"},n=h.channel+"Queue";return l.getResourcesByRole(h.currentUser,n,e,null).then(function(e){h.queues=e}).catch(function(e){c.error({title:s.instant("VOICE.QUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})}},h.selectAllQueues=function(){h.query.globalQueueFilter=h.queues.rows.map(function(e){return e.id})},h.clearQueuesSelection=function(){h.query.globalQueueFilter=[]},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"),f&&t.cancel(f)})}e.$inject=["$scope","$state","$interval","$mdDialog","$document","$translate","agents","pauses","api","socket","toasty","userProfileSection","Auth","license","realtimeManager","utcOffset"],angular.module("app.realtime").controller("AgentsRealtimeController",e)}(),function(){"use strict";function e(e,a,n,i,s,t,o,r,l,d,c){var m=this,u=c&&1==c.count?c.rows[0].crudPermissions:null;function p(){return m.queues.rows.map(function(e){return e.name})}function g(n){if(n.type===m.voiceQueueType&&p().includes(n.queue)){var e=_.find(m.voiceQueuesChannels.rows,function(e){return e.uniqueid===n.uniqueid});e?Object.assign(e,n):(m.voiceQueuesChannels.rows.push(n),m.voiceQueuesChannels.count=m.voiceQueuesChannels.rows.length)}}function v(n){m.voiceQueuesChannels.rows=_.filter(m.voiceQueuesChannels.rows,function(e){return e.uniqueid!==n.uniqueid}),m.voiceQueuesChannels.count=m.voiceQueuesChannels.rows.length}m.currentUser=t.getCurrentUser(),m.queues=l,m.voiceQueuesChannels=d,m.voiceQueueType=n.params.direction,m.crudPermissions=t.parseCrudPermissions(u),m.query={limit:10,page:1},m.$onInit=function(){o.on("voice_queue_channel:save",g),o.on("voice_queue_channel:remove",v);var n=p(),e=m.voiceQueuesChannels.rows.filter(function(e){if(n.includes(e.queue))return!0});m.voiceQueuesChannels.rows=e,m.voiceQueuesChannels.count=e.length},m.hangup=function(e){return s.rpc.getVoiceQueuesChannelHangup({uniqueid:e}).$promise.then(function(e){r.success({title:i.instant("VOICE.CALL_HANGUP_SUCCESS"),msg:e.message||void 0})}).catch(function(e){r.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},m.getAvailableAgents=function(){m.availableAgents=null;var e={id:t.isUser()?m.currentUser.userProfileId:void 0,fields:"id,name,fullname,internal,context,online,voicePause,voiceStatus",sort:"fullname",online:!0,voicePause:!1};return s.realtime.getAgents(e).$promise.then(function(e){var n=e.rows.filter(function(e){return"idle"===e.voiceStatus});m.availableAgents=n}).catch(function(e){r.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},m.redirectToAgent=function(e,n,t){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:e,exten:n,context:t}).$promise.then(function(e){r.success({title:i.instant("VOICE.CALL_REDIRECT_SUCCESS"),msg:e.message||void 0})}).catch(function(e){r.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},m.redirectToNumber=function(e,n){var t=a.prompt().title(i.instant("VOICE.CALL_NUMBER_REDIRECT")).placeholder(i.instant("DASHBOARDS.NUMBER")).targetEvent(e).ok("Ok").cancel(i.instant("TOOLBAR.CANCEL"));return a.show(t).then(function(e){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e}).$promise}).then(function(e){r.success({title:i.instant("VOICE.CALL_REDIRECT_SUCCESS"),msg:e.message||void 0})}).catch(function(e){e&&r.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},e.$on("$destroy",function(){o.removeAllListeners("voice_queue_channel:save"),o.removeAllListeners("voice_queue_channel:remove")})}e.$inject=["$scope","$mdDialog","$state","$translate","api","Auth","socket","toasty","queues","voiceQueuesChannels","userProfileSection"],angular.module("app.realtime").controller("QueueCallsRealtimeController",e)}(),function(){"use strict";function e(i,s,e,n,t,a,o,r,l,d,c,m,u){var p=this,g=e(function(){},999),v=u&&1==u.count?u.rows[0].crudPermissions:null,h=t.params.direction,f="outbound"===h?"QueueCampaigns":_.startCase(p.channel)+"Queues";function b(e){var n=_.find(p.queues.rows,["id",e.id]);n&&(n=l.updateQueue(e,n))}p.currentUser=r.getCurrentUser(),p.channel=t.params.channel,p.queues=m,p.crudPermissions=r.parseCrudPermissions(v),p.headersTemplate=null,p.rowsTemplate=null,p.query={id:r.isUser()?p.currentUser.id:void 0,section:r.isUser()?f:void 0,channel:p.channel,type:h,sort:"name",limit:10,page:1},p.$onInit=function(){var e,n;d.on(p.channel+"_queue:save",b),p.headersTemplate=(e="default.html","voice"===p.channel&&(e=h+".html"),"app/main/apps/realtime/views/queues/templates/headers/"+e),p.rowsTemplate=(n="default.html","voice"===p.channel&&(n=h+".html"),"app/main/apps/realtime/views/queues/templates/rows/"+n),"voice"===p.channel&&p.queues.rows.forEach(function(e){0<e.ringing&&e.available<e.loggedIn&&(e.available+=e.ringing)})},p.getQueues=function(){return p.query.offset=(p.query.page-1)*p.query.limit,o.realtime.getQueues(p.query).$promise.then(function(e){p.queues=e}).catch(function(e){c.error({title:a.instant("DASHBOARDS.QUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},p.editQueue=function(e,n){var t={crudPermissions:p.crudPermissions};t[p.channel+"Queue"]=n,t[p.channel+"Queues"]=p.queues.rows;var a={controller:"CreateOrEdit"+_.startCase(p.channel)+"QueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/"+p.channel+"/views/"+p.channel+"Queues/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:t};return s.show(a)},p.addOrRemoveAgents=function(e,n){var t={realtime:"voice"===p.channel,crudPermissions:p.crudPermissions};t[p.channel+"Queue"]=n,t[p.channel+"Queues"]=p.queues.rows;var a={controller:_.startCase(p.channel)+"QueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/"+p.channel+"/views/"+p.channel+"Queues/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:t};return s.show(a)},p.showPredictiveInfo=function(e,n){var t={controller:"PredictiveInfoDialogController",controllerAs:"vm",templateUrl:"app/main/apps/realtime/views/queues/predictive/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n}};return s.show(t)},n.$on("$destroy",function(){d.removeAllListeners(p.channel+"_queue:save"),g&&e.cancel(g)})}e.$inject=["$document","$mdDialog","$interval","$scope","$state","$translate","api","Auth","realtimeManager","socket","toasty","queues","userProfileSection"],angular.module("app.realtime").controller("QueuesRealtimeController",e)}(),function(){"use strict";function e(e,n){this.queueCampaign=n,this.formatTime=function(e,n){var t=moment(e);return n&&t.add(n,"minutes"),t.format("HH:mm:ss")},this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","queueCampaign"],angular.module("app.realtime").controller("PredictiveInfoDialogController",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,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(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="SMS.EDIT_SMSQUEUE",r.smsQueue=angular.copy(n),r.smsQueues=e,r.newSmsQueue=!1,r.smsQueue||(r.smsQueue={strategy:"beepall",timeout:10},r.title="SMS.NEW_SMSQUEUE",r.newSmsQueue=!0),r.addNewSmsQueue=function(){r.errors=[],i.smsQueue.save(r.smsQueue).$promise.then(function(e){r.smsQueues.unshift(e.toJSON()),a.success({title:"SmsQueue properly created",msg:r.smsQueue.name?r.smsQueue.name+" has been created!":""}),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.smsQueue.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.smsQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveSmsQueue=function(){r.errors=[],i.smsQueue.update({id:r.smsQueue.id},r.smsQueue).$promise.then(function(e){var n=_.find(r.smsQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"SmsQueue properly saved!",msg:r.smsQueue.name?r.smsQueue.name+" has been saved!":""}),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.smsQueue.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.smsQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteSmsQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The smsQueue will be deleted.").ariaLabel("Delete SmsQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.smsQueue.delete({id:r.smsQueue.id}).$promise.then(function(){_.remove(r.smsQueues,{id:r.smsQueue.id}),a.success({title:"SmsQueue properly deleted!",msg:(r.smsQueue.name||"smsQueue")+" has been deleted!"}),l(r.smsQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.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.smsQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","smsQueues","smsQueue","api","Auth","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,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;r.customDashboard={};var l=[];function d(e,n,t){return o.dashboardItem.update(t).$promise.catch(function(e){console.error(e)})}r.init=function(e,n){return r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.customDashboard=e,r.customDashboard.draggable={enabled:!0,handle:".draggable",stop:d},r.customDashboard.resizable={enabled:!0,handle:".resizable",stop:d},r.customDashboard.widgets=[],l.push(i(function(e){e(r.voiceQueues=o.rpc.getVoiceQueues({fields:"id,name"}))})),l.push(i(function(n){o.chatWebsite.get({fields:"id,name"}).$promise.then(function(e){r.chatWebsites=e||{count:0,rows:[]},n(r.chatWebsites)})})),l.push(i(function(n){o.faxAccount.get({fields:"id,name"}).$promise.then(function(e){r.faxAccounts=e||{count:0,rows:[]},n(r.faxAccounts)})})),l.push(i(function(n){o.mailAccount.get({fields:"id,name"}).$promise.then(function(e){r.mailAccounts=e||{count:0,rows:[]},n(r.mailAccounts)})})),l.push(i(function(n){o.openchannelAccount.get({fields:"id,name"}).$promise.then(function(e){r.openchannelAccounts=e||{count:0,rows:[]},n(r.openchannelAccounts)})})),l.push(i(function(n){o.whatsappAccount.get({fields:"id,name"}).$promise.then(function(e){r.whatsappAccounts=e||{count:0,rows:[]},n(r.whatsappAccounts)})})),l.push(i(function(n){o.smsAccount.get({fields:"id,name"}).$promise.then(function(e){r.smsAccounts=e||{count:0,rows:[]},n(r.smsAccounts)})})),i.all(l).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: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.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:902}).$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:702}).$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:802}).$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:2102}).$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:502}).$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 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"},n="get",t="disposition";l?(n="getDispositions",t=l.route):"user"===m.currentUser.role&&(n="getResources",t="userProfile",e.id=m.currentUser.userProfileId);(a=t,i=n,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",t,n].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,note",type:"inbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-createdAt",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,note:e.note||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.OUTGOING_CALL_STATUS_STYLES,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","realtimeManager"],angular.module("app.voice").controller("OutboundCallsVoiceRealtimeController",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(){c.queues.rows.forEach(function(e){c.rpcQueues[e.id]&&_.merge(e,_.pick(c.rpcQueues[e.id],m))})}c.queues=a||{rows:[],count:0},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:"name",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"inbound",fields:"id,name",sort:"name",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){var n=_.find(c.queues.rows,["id",e.id]);n&&_.merge(n,_.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.queues=e||{count:0,rows:[]},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,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.telephones=a?a.rows:{},m.rpcTelephones=i?i.rows:{},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:"fullname",limit:10,page:1},m.statusClass=r.STATUS_STYLES,m.stateClass=r.STATES_STYLES,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?e.rows:{},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","realtimeManager","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:"name",limit:10,page:1},u.statusClass=r.STATUS_STYLES,u.stateClass=r.STATES_STYLES,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","realtimeManager","$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(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="VOICE.EDIT_VOICEQUEUE",r.voiceQueue=angular.copy(n),r.voiceQueues=e,r.newVoiceQueue=!1,r.voiceQueue||(r.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"},r.title="VOICE.NEW_VOICEQUEUE",r.newVoiceQueue=!0),r.addNewVoiceQueue=function(){r.errors=[],i.voiceQueue.save(r.voiceQueue).$promise.then(function(e){r.voiceQueues.unshift(e.toJSON()),a.success({title:"VoiceQueue properly created",msg:r.voiceQueue.name?r.voiceQueue.name+" has been created!":""}),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.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.voiceQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveVoiceQueue=function(){r.errors=[],i.voiceQueue.update({id:r.voiceQueue.id},r.voiceQueue).$promise.then(function(e){var n=_.find(r.voiceQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"VoiceQueue properly saved!",msg:r.voiceQueue.name?r.voiceQueue.name+" has been saved!":""}),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.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.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteVoiceQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The voiceQueue will be deleted.").ariaLabel("Delete VoiceQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.voiceQueue.delete({id:r.voiceQueue.id}).$promise.then(function(){_.remove(r.voiceQueues,{id:r.voiceQueue.id}),a.success({title:"VoiceQueue properly deleted!",msg:(r.voiceQueue.name||"voiceQueue")+" has been deleted!"}),l(r.voiceQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.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.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","voiceQueues","voiceQueue","api","Auth","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,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,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(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="WHATSAPP.EDIT_WHATSAPPQUEUE",r.whatsappQueue=angular.copy(n),r.whatsappQueues=e,r.newWhatsappQueue=!1,r.whatsappQueue||(r.whatsappQueue={strategy:"beepall",timeout:10},r.title="WHATSAPP.NEW_WHATSAPPQUEUE",r.newWhatsappQueue=!0),r.addNewWhatsappQueue=function(){r.errors=[],i.whatsappQueue.save(r.whatsappQueue).$promise.then(function(e){r.whatsappQueues.unshift(e.toJSON()),a.success({title:"WhatsappQueue properly created",msg:r.whatsappQueue.name?r.whatsappQueue.name+" has been created!":""}),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.whatsappQueue.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.whatsappQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveWhatsappQueue=function(){r.errors=[],i.whatsappQueue.update({id:r.whatsappQueue.id},r.whatsappQueue).$promise.then(function(e){var n=_.find(r.whatsappQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"WhatsappQueue properly saved!",msg:r.whatsappQueue.name?r.whatsappQueue.name+" has been saved!":""}),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.whatsappQueue.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.whatsappQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteWhatsappQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The whatsappQueue will be deleted.").ariaLabel("Delete WhatsappQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.whatsappQueue.delete({id:r.whatsappQueue.id}).$promise.then(function(){_.remove(r.whatsappQueues,{id:r.whatsappQueue.id}),a.success({title:"WhatsappQueue properly deleted!",msg:(r.whatsappQueue.name||"whatsappQueue")+" has been deleted!"}),l(r.whatsappQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.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.whatsappQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","whatsappQueues","whatsappQueue","api","Auth","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,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(n,e,t,a,i,s,o,r,l,d,c){var m=this;function u(){if(!m.hasMoreMessages||m.isLoading)return t.resolve();m.user.messages.length;return function(){m.isLoading=!0;var e={sort:"-createdAt",FromId:m.currentUser.id+","+m.user.id,ToId:m.currentUser.id+","+m.user.id,ChatGroupId:"null",limit:50,offset:m.user.messages.length};return r.chatInternalMessage.get(e).$promise.then(function(e){m.user.messages=m.user.messages.concat(e.rows),m.hasMoreMessages=e.count>m.user.messages.length;for(var n=0;n<m.user.messages.length;n+=1)!1===m.user.messages[n].read&&m.user.messages[n].ToId===m.currentUser.id&&r.chatInternalMessage.update({id:m.user.messages[n].id,read:!0})}).finally(function(){m.isLoading=!1})}()}function p(e){var n=angular.element("#chat-dialog");s(function(){n.animate({scrollTop:0},e)},0)}function g(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function v(e){return n.get(e).success(function(){c.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(){c.error({title:"PhoneBar API Error",msg:o.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}m.currentUser=l.getCurrentUser(),m.user=void 0,m.users={count:0,rows:[]},m.standardDate=moment(0).format("YYYY-MM-DD HH:mm:ss"),m.unreadMessages={},m.replyMessage="",m.disabled=!1,m.defaultAvatar="assets/images/avatars/profile.png",m.init=function(e){m.license=e,t.all([r.chatInternalMessage.get({fields:"FromId",ToId:m.currentUser.id,read:!1,nolimit:!0,ChatGroupId:"null"}).$promise.then(function(e){m.unreadMessages=_.countBy(e.rows,"FromId")}).catch(function(e){throw e}),r.chatInternalMessage.getUsers().$promise.then(function(e){m.users=e}).catch(function(e){throw e})]).catch(function(e){c.error({msg:e.data?e.data.message:e.message||e})})},m.reply=function(){if(m.disabled=!0,""===m.replyMessage)return void(m.disabled=!1);var e={FromId:m.currentUser.id,ToId:m.user.id,body:m.replyMessage,read:!1};m.replyMessage="",r.chatInternalMessage.save(e).$promise.then(function(e){m.user.messages.unshift(e),m.user.lastMessageAt=e.createdAt,m.user.lastMessage=e}).finally(function(){p(400),m.disabled=!1})},m.webcall=function(e){a.$broadcast("webrtc::call",{target:g(e)})},m.call=function(e){return v("http://127.0.0.1:"+(m.user.phoneBarRemoteControlPort||"9888")+"/api/originate/"+g(e))},m.transfer=function(e){return v("http://127.0.0.1:"+(m.user.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+g(e))},m.openChat=function(e){return m.user=angular.copy(e),m.isMessengerAllowed=!1,"agent"!==m.user.role||m.user.allowmessenger?(p(0),m.isMessengerAllowed=!0,m.hasMoreMessages=!0,u()):void c.warning({title:o.instant("QUICKPANEL.WARNING"),msg:o.instant("QUICKPANEL.MESSENGER_DISABLED")})},m.closeChat=function(){m.user=void 0,m.hasMoreMessages=!0},m.scrollToTopOfChat=p,d.on("chatInternalMessage:save",function(e){if(e.ToId===m.currentUser.id&&!e.ChatGroupId){m.user&&m.user.id===e.FromId?(m.user.messages.unshift(e),p(0),r.chatInternalMessage.update({id:e.id,read:!0})):m.unreadMessages[e.FromId]=m.unreadMessages[e.FromId]?m.unreadMessages[e.FromId]+1:1;var n=_.find(m.users.rows,{id:e.FromId});n&&(n.lastMessageAt=e.createdAt,n.lastMessage=e)}}),d.on("chatInternalMessage:update",function(e){if((e.FromId===m.currentUser.id||e.ToId===m.currentUser.id)&&!e.ChatGroupId){if(m.user){var n=_.find(m.user.messages,{id:e.id});n&&_.merge(n,e)}var t=_.find(m.users.rows,{id:m.currentUser.id===e.FromId?e.ToId:e.FromId});t&&t.lastMessage&&_.merge(t.lastMessage,e),e.ToId===m.currentUser.id&&e.read&&0<m.unreadMessages[e.FromId]&&(m.unreadMessages[e.FromId]-=1)}}),d.on("user:update",function(e){var n=_.find(m.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))}),e("quick-panel").onClose(function(){m.user=void 0}),m.loadMoreMessages=u,m.timelineOptions={scrollEl:"#chat-dialog"},i.$on("$destroy",function(){d.removeAllListeners("chatInternalMessage:save"),d.removeAllListeners("chatInternalMessage:update"),d.removeAllListeners("user:update")})}e.$inject=["$http","$mdSidenav","$q","$rootScope","$scope","$timeout","$translate","api","Auth","socket","toasty"],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.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"},bs:{title:"Bosnian",translation:"TOOLBAR.BOSNIAN",code:"bs",flag:"bs"},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"},et:{title:"Estonian",translation:"TOOLBAR.ESTONIAN",code:"et",flag:"et"},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"}},I.isWebRTCBarRegistered=!1;var O=["ar","fa","he"],C=S.getLogger("toolbar");function w(n){n.queuecallerleaveAt?I.waitingQueueCalls=_.filter(I.waitingQueueCalls,function(e){return e!==n.uniqueid}):I.waitingQueueCalls.push(n.uniqueid)}function R(e){w(e)}function x(e){"inbound"===e.type&&w(e)}function N(){h.connect(),h.on("user:update",H),h.on("user:called",V),h.on("chatInternalMessage:save",F),h.on("chatInternalMessage:update",$),h.on("userVoiceQueue:save",k),h.on("voiceQueue:save",L),h.on("userVoiceQueue:remove",k),h.on("voiceQueue:remove",L),h.on("voiceQueue:update",L),h.on("user:forcelogout",B),h.on("userNotification:send",Q),h.on("userNotification:recalc:"+I.user.id,j),h.onWithoutApply("voice_queue_channel:save",x),h.onWithoutApply("voice_queue_channel:remove",R)}function D(){h.disconnect("logout")}function P(){var e={id:v.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",nolimit:!0};return f.user.getQueues(e).$promise.then(function(e){I.voiceQueues=e.rows})}function L(){P()}function k(e){_.toInteger(e.UserId)===v.getCurrentUser().id&&P()}function M(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 U(){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 F(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++}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--}function q(e){return D(),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 G(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 H(e){if(e.id===I.user.id)if("agent"===e.role&&_.isBoolean(e.online)&&!e.online)if(0!==I.user.showWebBar){var n;D();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(){N(),_.merge(I.user,e),v.setCurrentUser(I.user)})}).catch(function(){clearTimeout(n),q(!0)})}else q(!0);else _.merge(I.user,e),v.setCurrentUser(I.user)}function V(e){if(I.isWebRTCBarRegistered&&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})}}function B(e){if(C.debug("onForceLogout -> data",e),e.user.id===I.user.id&&0!==I.user.showWebBar)return D(),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 Q(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 W(){I.autoanswerIconColor=U()?"green-700-fg":"gray-700-fg"}function j(e){e&&e.permissions&&(I.currentUser.permissions=e.permissions,W())}I.toggleSidenav=function(e){i(e).toggle()},I.logout=q,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=G,I.isAgent=function(){return v.getCurrentUser()&&v.hasRole("agent")},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"}):M(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){U()?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}}):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.hasPermission=function(e){return _.includes(I.currentUser.permissions,e)},I.waitingQueueCalls=[],function(){I.user=v.getCurrentUser(),P().then(function(){return f.rpc.getVoiceQueuesChannels().$promise}).then(function(e){e.rows.forEach(function(n){if("inbound"===n.type&&!n.queuecallerleaveAt){var e=_.find(I.voiceQueues,function(e){return e.name===n.queue});e&&I.waitingQueueCalls.push(n.uniqueid)}})}),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)?G(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 G(null,!0);W()}(),N(),I.openPreviewDialog=M,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("userNotification:recalc:"+I.user.id),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=""!==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=["","","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, isOpen)" md-selected-text="vm.placeholders[filter.key]" aria-label="Filter {{ filter.name }}" md-on-open="isOpen = true" md-on-close="isOpen = 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(true)" 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-2" layout="column" layout-align="center center" layout-fill ng-controller="MsWidgetEngineCounterController as vm">\n  <div ng-class="\'font-size-\' + (vm.fontSize * 2)" 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 && !vm.config.crudPermissions.readOnly" 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 ng-if="vm.config.crudPermissions.canEdit === true">\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 ng-if="vm.config.crudPermissions.canDelete === true">\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 style="height: 60px !important; min-height: 60px !important" 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">\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/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/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\',false)" 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\',false)">\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\',false)">\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\' && agent.status !== \'unavailable\'" 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\' && agent.status !== \'unavailable\'" 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!-- ACCOUNTS 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.count > 0">\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="account" md-select-id="id" ng-repeat="account in vm.faxAccounts.rows">\n        <td md-cell>{{account.name}}</td>\n        <td md-cell>{{account.key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(account.in || 0) + (account.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">{{account.in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{account.lastIn ?  (account.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">{{account.out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{account.lastOut ?  (account.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, account)" 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.faxAccounts.count}}" md-on-paginate="vm.getFaxAccounts" md-page-select></md-table-pagination>\n\x3c!-- / ACCOUNTS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),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 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      <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\n      <div ng-if="vm.dynamics365Account.modernAuthentication == false">\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="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              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.dynamics365Account.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <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              <div ng-if="vm.dynamics365Account.modernAuthentication == false">\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\n\n                          <md-input-container class="md-block">\n                            <md-switch ng-model="vm_cc.dynamics365Configuration.openNewTab">\n                              <span translate="INTEGRATIONS.OPENNEWTAB">Open new tab</span>\n                            </md-switch>\n                          </md-input-container>\n\n\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.getMailAccounts()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- ACCOUNTS 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.count > 0">\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="account" md-select-id="id" ng-repeat="account in vm.mailAccounts.rows">\n        <td md-cell>{{account.name}}</td>\n        <td md-cell>{{account.key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(account.in || 0) + (account.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">{{account.in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{account.lastIn ?  (account.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">{{account.out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{account.lastOut ?  (account.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>{{account.Imap.messageStatus}}</md-tooltip>\n                <div ng-switch="account.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.\' + account.Imap.status.toUpperCase()) | translate}}</span>\n            </div>\n            <span class="text-boxed" ng-if="account.active && (account.Imap.lastSync && account.Imap.lastSync != \'\')">{{account.Imap.lastSync | date: \'shortTime\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row" layout-align="start center" ng-if="account.Smtp.status">\n            <div layout="column" layout-align="center center">\n              <md-button class="md-icon-button" aria-label="Status">\n                <md-tooltip>{{account.Smtp.messageStatus}}</md-tooltip>\n                <md-icon md-font-icon="{{ account.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.\' + account.Smtp.status.toUpperCase()) | translate}}</span>\n            </div>\n            <span class="text-boxed">{{account.Smtp.lastSync | date: \'shortTime\'}}</span>\n          </div>\n          <span class="md-caption grey-fg" ng-if="!account.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, account)" 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, account)" 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.mailAccounts.count}}" md-on-paginate="vm.getMailAccounts" md-page-select></md-table-pagination>\n\x3c!-- / ACCOUNTS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),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 md-order-by="name" class="bl">{{\'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.rows.length > 0">\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="campaign in vm.campaigns.rows">\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.campaigns.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_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 md-order-by="name">{{\'MOTIONDIALER.NAME\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.MANAGED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.DROPPED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.rows.length > 0">\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="queue in vm.queues.rows">\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.queues.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/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/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 = null; vm.getAgents()" aria-label="Status filter">\n      <md-option ng-value="null">{{ \'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="null">{{ \'VOICE.ALL\' | translate }}</md-option>\n      <md-option value="DEFAULT PAUSE">{{ \'VOICE.DEFAULT_PAUSE\' | translate | uppercase }}</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">{{ \'STAFF.LOGININPAUSE\' | translate | uppercase }}</md-option>\n      <md-option value="Auto-Pause">{{ \'VOICE.AUTOPAUSE\' | translate | uppercase }}</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.selectAllQueues()" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.SELECT_ALL\' | translate}}</md-button>\n      <md-option ng-value="queue.id" ng-repeat="queue in vm.queues.rows">{{\n        queue.name }}</md-option>\n      <md-button ng-click="vm.clearQueuesSelection()" 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.getAgents">\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\" utc-offset=\"vm.utcOffset\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"['pause', '*pause'].includes(agent.globalStatus)\" start-time=\"agent.lastPauseAt\" utc-offset=\"vm.utcOffset\"></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\" utc-offset=\"vm.utcOffset\" 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' }}\" aria-label=\"Screen Recording\">\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.count}}\" md-on-paginate=\"vm.getAgents\" md-page-select></md-table-pagination>"),e.put("app/main/apps/realtime/views/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 ng-if="vm.voiceQueueType === \'inbound\'" 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.voiceQueuesChannels.count > 0">\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="channel in vm.voiceQueuesChannels.rows | limitObjectFromTo: vm.query.limit:(vm.query.page - 1) * vm.query.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 ng-if="vm.voiceQueueType === \'inbound\'" md-cell>{{channel.routealias}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>\n          <span ng-if="vm.voiceQueueType === \'inbound\'">{{channel.calleridname}}, </span>\n          <span>{{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>{{ \'VOICE.NO_AGENT_AVAILABLE\' | translate }}</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.query.limit" md-page="vm.query.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{ vm.voiceQueuesChannels.count }}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/realtime/views/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 }} {{ \'DASHBOARDS.INFO\' | translate }}</span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-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.formatTime(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.formatTime(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.formatTime(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.formatTime(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  </md-dialog-content>\n</md-dialog>'),e.put("app/main/apps/realtime/views/queues/templates/actions.html",'<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="3">\n    <md-menu-item>\n      <md-button ng-click="vm.editQueue($event, queue)" translate="{{ (vm.channel | uppercase) + \'.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.showPredictiveInfo($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.addOrRemoveAgents($event, queue)" translate="{{ (vm.channel | uppercase) + \'.AGENTSADD_QUEUE\' }}">\n        Add Agents to queue\n      </md-button>\n    </md-menu-item>\n  </md-menu-content>\n</md-menu>'),e.put("app/main/apps/realtime/views/queues/templates/headers/default.html","<tr md-row>\n  <th md-column md-order-by=\"name\">{{ (vm.channel | uppercase) + '.NAME' | translate }}</th>\n  <th md-column>{{ (vm.channel | uppercase) + '.LOGGED_IN' | translate }}</th>\n  <th md-column>{{ 'DASHBOARDS.AVAILABLE' | translate }}</th>\n  <th md-column>{{ (vm.channel | uppercase) + '.PAUSED' | translate }}</th>\n  <th md-column>{{ 'DASHBOARDS.WAITING_INTERACTIONS' | translate }}</th>\n  <th md-column width=\"10px\"></th>\n</tr>"),e.put("app/main/apps/realtime/views/queues/templates/headers/inbound.html","<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>{{ 'DASHBOARDS.WAITING_CALLS' | translate }}</th>\n  <th md-column width=\"10px\"></th>\n</tr>"),e.put("app/main/apps/realtime/views/queues/templates/headers/outbound.html","<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>{{ 'DASHBOARDS.WAITING_CALLS' | 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>"),e.put("app/main/apps/realtime/views/queues/templates/rows/default.html",'<tr md-row ng-hide="vm.queues.count > 0">\n  <td md-cell colspan="6">\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 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\n  <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit" ng-include="\'app/main/apps/realtime/views/queues/templates/actions.html\'"></td>\n</tr>'),e.put("app/main/apps/realtime/views/queues/templates/rows/inbound.html",'<tr md-row ng-hide="vm.queues.count > 0">\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 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.inUse - queue.talking }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n  </td>\n\n  <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit" ng-include="\'app/main/apps/realtime/views/queues/templates/actions.html\'"></td>\n</tr>'),e.put("app/main/apps/realtime/views/queues/templates/rows/outbound.html",'<tr md-row ng-hide="vm.queues.count > 0">\n  <td md-cell colspan="13">\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.inUse - queue.talking - queue.pTalking }}</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) : (queue.statusMessage ? (\'MOTIONDIALER.\' + queue.statusMessage | 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\n  <td md-cell class=\"actions\" ng-if=\"vm.crudPermissions.canEdit\" ng-include=\"'app/main/apps/realtime/views/queues/templates/actions.html'\"></td>\n</tr>"),e.put("app/main/apps/realtime/views/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="{{ (vm.channel | uppercase) + \'.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" ng-include="vm.headersTemplate">\n    </thead>\n    <tbody md-body ng-include="vm.rowsTemplate"></tbody>\n  </table>\n</md-table-container>\n\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.queues.count}}" md-on-paginate="vm.getQueues" 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="1200" 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="1200"><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/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_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 md-order-by="name">{{\'\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.rows.length > 0">\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="queue in vm.queues.rows">\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.queues.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/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 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/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 && vm_ct.isMessengerAllowed">\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" 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" translate="DASHBOARDS.ALL">All</md-option>\n        <md-option ng-value="true">\n          <md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 green-fg" translate="CHAT.ONLINE"></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" translate="CHAT.OFFLINE"></md-icon>Offline\n        </md-option>\n      </md-select>\n    </div>\n  </md-subheader>\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.openChat(user)">\n      <md-divider></md-divider>\n      <img ng-src="{{user.userpic ? \'api/users/\' + user.id + \'/avatar\' : vm_ct.defaultAvatar}}" 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.unreadMessages[user.id]" class="md-accent-bg unread-message-count">\n        {{vm_ct.unreadMessages[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">\n          </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.FromId === vm_ct.currentUser.id" class="s16 no-margin" ng-class="{\'md-accent\': user.lastMessage.read}" md-font-icon="{{ user.lastMessage.read ? \'icon-check-all\' : \'icon-check\' }}"></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    </md-list-item>\n</div>\n</md-list>\n</div>\n\n<div class="chat" ng-show="vm_ct.user && vm_ct.isMessengerAllowed" 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.closeChat()" aria-label="Back" translate translate-attr-aria-label="QUICKPANEL.BACK">\n          <md-icon md-font-icon="icon-keyboard-backspace"></md-icon>\n        </md-button>\n        <h4>\n          <span>{{vm_ct.user.fullname}}</span>\n        </h4>\n      </div>\n\n      <div layout="row" layout-align="end center">\n        <md-button ng-if="vm_ct.license.webrtc && vm_ct.currentUser.role === \'agent\' && vm_ct.currentUser.showWebBar === 2 && vm_ct.user.role === \'agent\'" class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="vm_ct.webcall(vm_ct.user.name)">\n          <md-icon md-font-icon="icon-phone"></md-icon>\n        </md-button>\n        <md-menu ng-if="vm_ct.currentUser.phoneBarRemoteControl && vm_ct.currentUser.role === \'agent\' && vm_ct.currentUser.showWebBar === 0 && vm_ct.user.role === \'agent\'">\n          <md-button class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="$mdOpenMenu($event)">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n\n          <md-menu-content width="3">\n            <md-menu-item ng-disabled="!vm_ct.currentUser.phoneBarRemoteControl">\n              <md-button ng-click="vm_ct.call(vm_ct.user.name)">\n                {{\'DASHBOARDS.CALL_NUMBER\' | translate}} ({{vm_ct.user.name}})\n              </md-button>\n            </md-menu-item>\n            <md-menu-item ng-disabled="!vm_ct.currentUser.phoneBarRemoteControl">\n              <md-button ng-click="vm_ct.transfer(vm_ct.user.name)">\n                {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} ({{vm_ct.user.name}})\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n    </div>\n\n  </md-toolbar>\n  <md-content flex layout-paddings ms-scroll id="chat-dialog">\n    <div ng-if="vm_ct.isLoading" 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 ms-timeline="vm_ct.timelineOptions" ms-timeline-load-more="vm_ct.loadMoreMessages()">\n      <div layout="row" ng-repeat="message in vm_ct.user.messages" class="ms-timeline-item 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\' : vm_ct.defaultAvatar }}" class="avatar" alt="{{vm_ct.user.fullname}}" />\n        <img ng-if="message.FromId === vm_ct.currentUser.id" ng-src="{{ vm_ct.currentUser.userpic ? \'api/users/\' + vm_ct.currentUser.id + \'/avatar\' : vm_ct.defaultAvatar }}" class="avatar">\n        <div class="bubble timeline-card" 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.FromId === vm_ct.currentUser.id" class="s16 margin-5" ng-class="{\'md-accent\': message.read}" md-font-icon="{{ message.read ? \'icon-check-all\' : \'icon-check\' }}"></md-icon>\n          </div>\n        </div>\n      </div>\n\n      <div ng-if="vm_ct.hasMoreMessages" 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-click="vm_ct.loadMoreMessages()" translate="DASHBOARDS.MORE">\n        </md-button>\n      </div>\n      <div ng-if="!vm_ct.hasMoreMessages && vm_ct.user.messages.length > 20" layout="row" layout-align="end center" class="ng-scope layout-align-center-center layout-row">\n        <md-button class="md-fab md-mini" type="button" ng-click="vm_ct.scrollToTopOfChat(0)">\n          <md-icon md-font-icon="icon-arrow-up-bold"></md-icon>\n        </md-button>\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    <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" registered="vm.isWebRTCBarRegistered" 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 badge-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    \x3c!-- \n      ADD V3\n      \n      <md-button ng-if="vm.user.role === \'agent\' && vm.license.voice && vm.user.permissions.includes(110)" class="preview-button no-margin" ng-disabled="vm.disable" aria-label="Language" md-menu-origin md-menu-align-target>\n      <div ng-if="vm.waitingQueueCalls.length > 0" class="md-accent-bg queues-call-count badge-count">{{vm.waitingQueueCalls.length}}</div>\n      <md-icon md-font-icon="icon-phone-incoming blue-fg" class="icon"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.WAITINGQUEUECALLS">Waiting Queues Calls</span></md-tooltip>\n    </md-button> --\x3e\n\n    \x3c!-- \n      ADD V3\n      \n      <md-button ng-if="vm.user.role === \'agent\' && vm.license.voice && vm.user.permissions.includes(110)" class="preview-button no-margin" ng-disabled="vm.disable" aria-label="Language" md-menu-origin md-menu-align-target>\n      <div ng-if="vm.waitingQueueCalls.length > 0" class="md-accent-bg queues-call-count badge-count">{{vm.waitingQueueCalls.length}}</div>\n      <md-icon md-font-icon="icon-phone-incoming blue-fg" class="icon"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.WAITINGQUEUECALLS">Waiting Queues Calls</span></md-tooltip>\n    </md-button> --\x3e\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 4d61090..8b34c7e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea78=['urlForward[headers],\x20browser[wsindowHeight]','TEXT','sequelize','exports','VIRTUAL','action','STRING','contactManager','motionbar','jscripty','browser','script','Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script','jscripty[ProjectId],\x20browser[type(0=Popup,1=CTI\x20URL)],\x20contactManager[ListId],\x20urlForward[type(GET,POST,PUT,DELETE)],\x20script[info],\x20integration[intName(desk,dynamics365,freshdesk,freshsales,salesforce,sugarcrm,vtiger,zendesk,zoho)],\x20motionbar[type(0=Popup,1=CTI\x20URL,2=WinApp)]','contactManager[autoCreate(0=No,1=Yes)],\x20urlForward[URL],\x20script[type],\x20integration[AccountId],\x20motionbar[TemplateId,URL,WinAppPath],\x20browser[TemplateId,URL]','contactManager[searchFields],\x20script[script],\x20integration[ConfigurationId],\x20motionbar[NULL,eventVariables(0=No,1=Yes),WinAppArguments],\x20browser[NULL,eventVariables(0=No,1=Yes)]'];(function(_0x5c2c72,_0x22cf09){var _0x11c44c=function(_0x37bcca){while(--_0x37bcca){_0x5c2c72['push'](_0x5c2c72['shift']());}};_0x11c44c(++_0x22cf09);}(_0xea78,0x162));var _0x8ea7=function(_0x2fee96,_0x2f735d){_0x2fee96=_0x2fee96-0x0;var _0x2e6ad1=_0xea78[_0x2fee96];return _0x2e6ad1;};'use strict';var Sequelize=require(_0x8ea7('0x0'));module[_0x8ea7('0x1')]={'name':{'type':Sequelize[_0x8ea7('0x2')],'get':function(_0x53977f){return this['getDataValue'](_0x8ea7('0x3'));}},'action':{'type':Sequelize[_0x8ea7('0x4')],'allowNull':![],'validate':{'isIn':{'args':[[_0x8ea7('0x5'),'integration',_0x8ea7('0x6'),_0x8ea7('0x7'),'urlForward',_0x8ea7('0x8'),'bot',_0x8ea7('0x9')]],'msg':_0x8ea7('0xa')}},'comment':_0x8ea7('0xa')},'data1':{'type':Sequelize[_0x8ea7('0x4')](0x1000),'comment':_0x8ea7('0xb')},'data2':{'type':Sequelize[_0x8ea7('0x4')](0x1000),'comment':_0x8ea7('0xc')},'data3':{'type':Sequelize[_0x8ea7('0x4')](0x1000),'comment':_0x8ea7('0xd')},'data4':{'type':Sequelize['STRING'](0x1000),'comments':'browser[location(0=NewTab,1=NewWindow,2=MotionTab)],\x20contactManager[autoCreateField]'},'data5':{'type':Sequelize[_0x8ea7('0x4')](0x1000),'comments':'urlForward[timeout],\x20browser[windowWidth],\x20contactManager[ignoreDialerContactId]'},'data6':{'type':Sequelize[_0x8ea7('0x4')],'comments':_0x8ea7('0xe')},'data7':{'type':Sequelize[_0x8ea7('0xf')],'comments':'urlForward[body]'}};
\ No newline at end of file
+var _0x4b4a=['integration','motionbar','jscripty','browser','bot','script','Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script','STRING','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]','browser[location(0=NewTab,1=NewWindow,2=MotionTab)],\x20contactManager[autoCreateField]','urlForward[body]','exports','VIRTUAL','action','contactManager'];(function(_0x366f20,_0x251848){var _0x41f1ab=function(_0x23f9ad){while(--_0x23f9ad){_0x366f20['push'](_0x366f20['shift']());}};_0x41f1ab(++_0x251848);}(_0x4b4a,0x9c));var _0xa4b4=function(_0x5756f8,_0x22b6d5){_0x5756f8=_0x5756f8-0x0;var _0x3bb749=_0x4b4a[_0x5756f8];return _0x3bb749;};'use strict';var Sequelize=require('sequelize');module[_0xa4b4('0x0')]={'name':{'type':Sequelize[_0xa4b4('0x1')],'get':function(_0x1cbcde){return this['getDataValue'](_0xa4b4('0x2'));}},'action':{'type':Sequelize['STRING'],'allowNull':![],'validate':{'isIn':{'args':[[_0xa4b4('0x3'),_0xa4b4('0x4'),_0xa4b4('0x5'),_0xa4b4('0x6'),'urlForward',_0xa4b4('0x7'),_0xa4b4('0x8'),_0xa4b4('0x9')]],'msg':'Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script'}},'comment':_0xa4b4('0xa')},'data1':{'type':Sequelize[_0xa4b4('0xb')](0x1000),'comment':_0xa4b4('0xc')},'data2':{'type':Sequelize[_0xa4b4('0xb')](0x1000),'comment':_0xa4b4('0xd')},'data3':{'type':Sequelize[_0xa4b4('0xb')](0x1000),'comment':'contactManager[searchFields],\x20script[script],\x20integration[ConfigurationId],\x20motionbar[NULL,eventVariables(0=No,1=Yes),WinAppArguments],\x20browser[NULL,eventVariables(0=No,1=Yes)]'},'data4':{'type':Sequelize[_0xa4b4('0xb')](0x1000),'comments':_0xa4b4('0xe')},'data5':{'type':Sequelize['STRING'](0x1000),'comments':'urlForward[timeout],\x20browser[windowWidth],\x20contactManager[ignoreDialerContactId]'},'data6':{'type':Sequelize[_0xa4b4('0xb')],'comments':'urlForward[headers],\x20browser[wsindowHeight]'},'data7':{'type':Sequelize['TEXT'],'comments':_0xa4b4('0xf')}};
\ No newline at end of file
index c06d7ca..db10b06 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeeb3=['util','sox','to-csv','fs-extra','lodash','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','then','destroy','error','name','send','Action','find','params','body','catch','rimraf','zip-dir','request-promise','moment'];(function(_0x37dbf9,_0x529eb5){var _0x40e897=function(_0x10fbcf){while(--_0x10fbcf){_0x37dbf9['push'](_0x37dbf9['shift']());}};_0x40e897(++_0x529eb5);}(_0xeeb3,0x74));var _0x3eeb=function(_0xaa0720,_0x12e8fa){_0xaa0720=_0xaa0720-0x0;var _0x79ec4c=_0xeeb3[_0xaa0720];return _0x79ec4c;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x3eeb('0x0'));var zipdir=require(_0x3eeb('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x3eeb('0x2'));var moment=require(_0x3eeb('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x3eeb('0x4'));var path=require('path');var sox=require(_0x3eeb('0x5'));var csv=require(_0x3eeb('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x3eeb('0x7'));var _=require(_0x3eeb('0x8'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x3eeb('0x9'));var Papa=require(_0x3eeb('0xa'));var Redis=require(_0x3eeb('0xb'));var authService=require('../../components/auth/service');var qs=require(_0x3eeb('0xc'));var as=require(_0x3eeb('0xd'));var hardwareService=require(_0x3eeb('0xe'));var logger=require(_0x3eeb('0xf'))(_0x3eeb('0x10'));var utils=require('../../config/utils');var config=require(_0x3eeb('0x11'));var licenseUtil=require(_0x3eeb('0x12'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x111174,_0x421cf6){_0x421cf6=_0x421cf6||0xcc;return function(_0xeea686){if(_0xeea686){return _0x111174[_0x3eeb('0x13')](_0x421cf6);}return _0x111174[_0x3eeb('0x14')](_0x421cf6)[_0x3eeb('0x15')]();};}function respondWithResult(_0x2f4562,_0x304e57){_0x304e57=_0x304e57||0xc8;return function(_0x1b8aaf){if(_0x1b8aaf){return _0x2f4562[_0x3eeb('0x14')](_0x304e57)[_0x3eeb('0x16')](_0x1b8aaf);}};}function respondWithFilteredResult(_0x19c2bb,_0x146c03){return function(_0x7cfc3){if(_0x7cfc3){var _0x5465a0=typeof _0x146c03[_0x3eeb('0x17')]===_0x3eeb('0x18')&&typeof _0x146c03[_0x3eeb('0x19')]===_0x3eeb('0x18');var _0x3843d3=_0x7cfc3['count'];var _0x443d5a=_0x5465a0?0x0:_0x146c03['offset'];var _0x25bbe6=_0x5465a0?_0x7cfc3[_0x3eeb('0x1a')]:_0x146c03[_0x3eeb('0x17')]+_0x146c03['limit'];var _0x3dbc4a;if(_0x25bbe6>=_0x3843d3){_0x25bbe6=_0x3843d3;_0x3dbc4a=0xc8;}else{_0x3dbc4a=0xce;}_0x19c2bb[_0x3eeb('0x14')](_0x3dbc4a);return _0x19c2bb[_0x3eeb('0x1b')](_0x3eeb('0x1c'),_0x443d5a+'-'+_0x25bbe6+'/'+_0x3843d3)[_0x3eeb('0x16')](_0x7cfc3);}return null;};}function patchUpdates(_0x40c04e){return function(_0x2768bf){try{jsonpatch[_0x3eeb('0x1d')](_0x2768bf,_0x40c04e,!![]);}catch(_0x316c18){return BPromise['reject'](_0x316c18);}return _0x2768bf['save']();};}function saveUpdates(_0x3507c4,_0x35674c){return function(_0x344bd7){if(_0x344bd7){return _0x344bd7['update'](_0x3507c4)[_0x3eeb('0x1e')](function(_0x43b5d3){return _0x43b5d3;});}return null;};}function removeEntity(_0x468e5a,_0x2b08f1){return function(_0x65bebe){if(_0x65bebe){return _0x65bebe[_0x3eeb('0x1f')]()[_0x3eeb('0x1e')](function(){_0x468e5a[_0x3eeb('0x14')](0xcc)['end']();});}};}function handleEntityNotFound(_0x371585,_0x5bc1f3){return function(_0xce0236){if(!_0xce0236){_0x371585[_0x3eeb('0x13')](0x194);}return _0xce0236;};}function handleError(_0x3de58f,_0x3ee9c5){_0x3ee9c5=_0x3ee9c5||0x1f4;return function(_0x53ba13){logger[_0x3eeb('0x20')](_0x53ba13['stack']);if(_0x53ba13['name']){delete _0x53ba13[_0x3eeb('0x21')];}_0x3de58f[_0x3eeb('0x14')](_0x3ee9c5)[_0x3eeb('0x22')](_0x53ba13);};}exports['update']=function(_0x54f80c,_0x371ff2){if(_0x54f80c['body']['id']){delete _0x54f80c['body']['id'];}return db[_0x3eeb('0x23')][_0x3eeb('0x24')]({'where':{'id':_0x54f80c[_0x3eeb('0x25')]['id']}})[_0x3eeb('0x1e')](handleEntityNotFound(_0x371ff2,null))[_0x3eeb('0x1e')](saveUpdates(_0x54f80c[_0x3eeb('0x26')],null))['then'](respondWithResult(_0x371ff2,null))['catch'](handleError(_0x371ff2,null));};exports[_0x3eeb('0x1f')]=function(_0x5b119d,_0x3768fa){return db['Action'][_0x3eeb('0x24')]({'where':{'id':_0x5b119d[_0x3eeb('0x25')]['id']}})[_0x3eeb('0x1e')](handleEntityNotFound(_0x3768fa,null))[_0x3eeb('0x1e')](removeEntity(_0x3768fa,null))[_0x3eeb('0x27')](handleError(_0x3768fa,null));};
\ No newline at end of file
+var _0x63d9=['../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','count','set','update','then','end','stack','name','send','body','find','params','destroy','catch','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','api'];(function(_0x4bdfc6,_0x4c2991){var _0x5091d0=function(_0x16cdc1){while(--_0x16cdc1){_0x4bdfc6['push'](_0x4bdfc6['shift']());}};_0x5091d0(++_0x4c2991);}(_0x63d9,0xe2));var _0x963d=function(_0x2d9922,_0x59fd51){_0x2d9922=_0x2d9922-0x0;var _0xaecfe=_0x63d9[_0x2d9922];return _0xaecfe;};'use strict';var emlformat=require(_0x963d('0x0'));var rimraf=require(_0x963d('0x1'));var zipdir=require(_0x963d('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x963d('0x3'));var moment=require(_0x963d('0x4'));var BPromise=require(_0x963d('0x5'));var Mustache=require('mustache');var util=require(_0x963d('0x6'));var path=require(_0x963d('0x7'));var sox=require(_0x963d('0x8'));var csv=require(_0x963d('0x9'));var ejs=require(_0x963d('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x963d('0xb'));var squel=require(_0x963d('0xc'));var crypto=require(_0x963d('0xd'));var jsforce=require(_0x963d('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x963d('0xf'));var Papa=require('papaparse');var Redis=require(_0x963d('0x10'));var authService=require(_0x963d('0x11'));var qs=require(_0x963d('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x963d('0x13'));var utils=require('../../config/utils');var config=require(_0x963d('0x14'));var licenseUtil=require(_0x963d('0x15'));var db=require(_0x963d('0x16'))['db'];function respondWithStatusCode(_0x28b232,_0x3a1070){_0x3a1070=_0x3a1070||0xcc;return function(_0x4d0422){if(_0x4d0422){return _0x28b232['sendStatus'](_0x3a1070);}return _0x28b232[_0x963d('0x17')](_0x3a1070)['end']();};}function respondWithResult(_0x35302a,_0x47d3aa){_0x47d3aa=_0x47d3aa||0xc8;return function(_0x1d0321){if(_0x1d0321){return _0x35302a[_0x963d('0x17')](_0x47d3aa)[_0x963d('0x18')](_0x1d0321);}};}function respondWithFilteredResult(_0x1ab7e3,_0x1614da){return function(_0x3072e9){if(_0x3072e9){var _0x428d8f=typeof _0x1614da[_0x963d('0x19')]===_0x963d('0x1a')&&typeof _0x1614da[_0x963d('0x1b')]===_0x963d('0x1a');var _0xf5f442=_0x3072e9['count'];var _0x51c659=_0x428d8f?0x0:_0x1614da[_0x963d('0x19')];var _0x365c16=_0x428d8f?_0x3072e9[_0x963d('0x1c')]:_0x1614da[_0x963d('0x19')]+_0x1614da['limit'];var _0x5002d9;if(_0x365c16>=_0xf5f442){_0x365c16=_0xf5f442;_0x5002d9=0xc8;}else{_0x5002d9=0xce;}_0x1ab7e3[_0x963d('0x17')](_0x5002d9);return _0x1ab7e3[_0x963d('0x1d')]('Content-Range',_0x51c659+'-'+_0x365c16+'/'+_0xf5f442)[_0x963d('0x18')](_0x3072e9);}return null;};}function patchUpdates(_0x5a28ab){return function(_0x1fe7ca){try{jsonpatch['apply'](_0x1fe7ca,_0x5a28ab,!![]);}catch(_0x1e3d3b){return BPromise['reject'](_0x1e3d3b);}return _0x1fe7ca['save']();};}function saveUpdates(_0x5d4fda,_0x1d06b1){return function(_0x4b0973){if(_0x4b0973){return _0x4b0973[_0x963d('0x1e')](_0x5d4fda)[_0x963d('0x1f')](function(_0x133516){return _0x133516;});}return null;};}function removeEntity(_0x14db36,_0x3f7cfc){return function(_0x112185){if(_0x112185){return _0x112185['destroy']()[_0x963d('0x1f')](function(){_0x14db36[_0x963d('0x17')](0xcc)[_0x963d('0x20')]();});}};}function handleEntityNotFound(_0x3b37e5,_0xb70558){return function(_0x249981){if(!_0x249981){_0x3b37e5['sendStatus'](0x194);}return _0x249981;};}function handleError(_0x33d564,_0xbca2d1){_0xbca2d1=_0xbca2d1||0x1f4;return function(_0x1e38a2){logger['error'](_0x1e38a2[_0x963d('0x21')]);if(_0x1e38a2[_0x963d('0x22')]){delete _0x1e38a2['name'];}_0x33d564[_0x963d('0x17')](_0xbca2d1)[_0x963d('0x23')](_0x1e38a2);};}exports[_0x963d('0x1e')]=function(_0x49a26f,_0x2fb09c){if(_0x49a26f['body']['id']){delete _0x49a26f[_0x963d('0x24')]['id'];}return db['Action'][_0x963d('0x25')]({'where':{'id':_0x49a26f[_0x963d('0x26')]['id']}})['then'](handleEntityNotFound(_0x2fb09c,null))[_0x963d('0x1f')](saveUpdates(_0x49a26f[_0x963d('0x24')],null))['then'](respondWithResult(_0x2fb09c,null))['catch'](handleError(_0x2fb09c,null));};exports[_0x963d('0x27')]=function(_0x515e26,_0x342bdd){return db['Action'][_0x963d('0x25')]({'where':{'id':_0x515e26['params']['id']}})[_0x963d('0x1f')](handleEntityNotFound(_0x342bdd,null))[_0x963d('0x1f')](removeEntity(_0x342bdd,null))[_0x963d('0x28')](handleError(_0x342bdd,null));};
\ No newline at end of file
index 405fd15..de8c2f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a28=['lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./action.attributes','define','Action','tools_actions'];(function(_0xe55e2c,_0x1e0152){var _0x315d02=function(_0x1d7c9e){while(--_0x1d7c9e){_0xe55e2c['push'](_0xe55e2c['shift']());}};_0x315d02(++_0x1e0152);}(_0x5a28,0x1c7));var _0x85a2=function(_0x159468,_0x19e94c){_0x159468=_0x159468-0x0;var _0x2d9008=_0x5a28[_0x159468];return _0x2d9008;};'use strict';var _=require(_0x85a2('0x0'));var util=require(_0x85a2('0x1'));var logger=require(_0x85a2('0x2'))(_0x85a2('0x3'));var moment=require(_0x85a2('0x4'));var BPromise=require('bluebird');var rp=require(_0x85a2('0x5'));var fs=require('fs');var path=require(_0x85a2('0x6'));var rimraf=require(_0x85a2('0x7'));var config=require(_0x85a2('0x8'));var attributes=require(_0x85a2('0x9'));module['exports']=function(_0x147531,_0x2f8e92){return _0x147531[_0x85a2('0xa')](_0x85a2('0xb'),attributes,{'tableName':_0x85a2('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x64a6=['Action','tools_actions','lodash','util','../../config/logger','bluebird','path','rimraf','../../config/environment','./action.attributes','exports'];(function(_0x3c504d,_0x322572){var _0x17ead9=function(_0x2b7801){while(--_0x2b7801){_0x3c504d['push'](_0x3c504d['shift']());}};_0x17ead9(++_0x322572);}(_0x64a6,0x183));var _0x664a=function(_0x46e363,_0x45d7e2){_0x46e363=_0x46e363-0x0;var _0x3fb059=_0x64a6[_0x46e363];return _0x3fb059;};'use strict';var _=require(_0x664a('0x0'));var util=require(_0x664a('0x1'));var logger=require(_0x664a('0x2'))('api');var moment=require('moment');var BPromise=require(_0x664a('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x664a('0x4'));var rimraf=require(_0x664a('0x5'));var config=require(_0x664a('0x6'));var attributes=require(_0x664a('0x7'));module[_0x664a('0x8')]=function(_0x3ba6f0,_0x19aa7f){return _0x3ba6f0['define'](_0x664a('0x9'),attributes,{'tableName':_0x664a('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ff13ce0..ccf52fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe14b=['../../config/environment','jayson/promise','client','http','then','info','Action,\x20%s,\x20%s','Action,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','lodash','util','randomstring','ioredis','../../config/utils'];(function(_0x231bba,_0x5eb1ac){var _0x446c0e=function(_0x51f4f6){while(--_0x51f4f6){_0x231bba['push'](_0x231bba['shift']());}};_0x446c0e(++_0x5eb1ac);}(_0xe14b,0x93));var _0xbe14=function(_0xcf42ea,_0x377d94){_0xcf42ea=_0xcf42ea-0x0;var _0x33dde6=_0xe14b[_0xcf42ea];return _0x33dde6;};'use strict';var _=require(_0xbe14('0x0'));var util=require(_0xbe14('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xbe14('0x2'));var fs=require('fs');var Redis=require(_0xbe14('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xbe14('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0xbe14('0x5'));var jayson=require(_0xbe14('0x6'));var client=jayson[_0xbe14('0x7')][_0xbe14('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1d9ade,_0x39387e,_0x196fca){return new BPromise(function(_0x566ae7,_0x50f909){return client['request'](_0x1d9ade,_0x196fca)[_0xbe14('0x9')](function(_0x6fceff){logger[_0xbe14('0xa')](_0xbe14('0xb'),_0x39387e,'request\x20sent');logger['debug'](_0xbe14('0xc'),_0x39387e,_0xbe14('0xd'),JSON['stringify'](_0x6fceff));if(_0x6fceff[_0xbe14('0xe')]){if(_0x6fceff[_0xbe14('0xe')][_0xbe14('0xf')]===0x1f4){logger[_0xbe14('0xe')](_0xbe14('0xb'),_0x39387e,_0x6fceff[_0xbe14('0xe')][_0xbe14('0x10')]);return _0x50f909(_0x6fceff[_0xbe14('0xe')][_0xbe14('0x10')]);}logger[_0xbe14('0xe')](_0xbe14('0xb'),_0x39387e,_0x6fceff[_0xbe14('0xe')][_0xbe14('0x10')]);return _0x566ae7(_0x6fceff['error']['message']);}else{logger[_0xbe14('0xa')](_0xbe14('0xb'),_0x39387e,_0xbe14('0xd'));_0x566ae7(_0x6fceff[_0xbe14('0x11')]['message']);}})[_0xbe14('0x12')](function(_0xe9c3ec){logger[_0xbe14('0xe')](_0xbe14('0xb'),_0x39387e,_0xe9c3ec);_0x50f909(_0xe9c3ec);});});}
\ No newline at end of file
+var _0x7217=['stringify','error','code','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Action,\x20%s,\x20%s','debug','Action,\x20%s,\x20%s,\x20%s','request\x20sent'];(function(_0x3d42d8,_0x4cffaa){var _0x27fc41=function(_0x3a363b){while(--_0x3a363b){_0x3d42d8['push'](_0x3d42d8['shift']());}};_0x27fc41(++_0x4cffaa);}(_0x7217,0x19e));var _0x7721=function(_0x4ea69d,_0x290f53){_0x4ea69d=_0x4ea69d-0x0;var _0x5318e0=_0x7217[_0x4ea69d];return _0x5318e0;};'use strict';var _=require(_0x7721('0x0'));var util=require('util');var moment=require(_0x7721('0x1'));var BPromise=require(_0x7721('0x2'));var rs=require(_0x7721('0x3'));var fs=require('fs');var Redis=require(_0x7721('0x4'));var db=require(_0x7721('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x7721('0x6'));var config=require(_0x7721('0x7'));var jayson=require(_0x7721('0x8'));var client=jayson[_0x7721('0x9')][_0x7721('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xf7ff37,_0x18ab6b,_0x21f680){return new BPromise(function(_0x225610,_0x2f99ed){return client[_0x7721('0xb')](_0xf7ff37,_0x21f680)[_0x7721('0xc')](function(_0xfa8835){logger[_0x7721('0xd')](_0x7721('0xe'),_0x18ab6b,'request\x20sent');logger[_0x7721('0xf')](_0x7721('0x10'),_0x18ab6b,_0x7721('0x11'),JSON[_0x7721('0x12')](_0xfa8835));if(_0xfa8835[_0x7721('0x13')]){if(_0xfa8835[_0x7721('0x13')][_0x7721('0x14')]===0x1f4){logger[_0x7721('0x13')]('Action,\x20%s,\x20%s',_0x18ab6b,_0xfa8835[_0x7721('0x13')][_0x7721('0x15')]);return _0x2f99ed(_0xfa8835['error'][_0x7721('0x15')]);}logger[_0x7721('0x13')](_0x7721('0xe'),_0x18ab6b,_0xfa8835[_0x7721('0x13')]['message']);return _0x225610(_0xfa8835[_0x7721('0x13')][_0x7721('0x15')]);}else{logger['info']('Action,\x20%s,\x20%s',_0x18ab6b,'request\x20sent');_0x225610(_0xfa8835[_0x7721('0x16')][_0x7721('0x15')]);}})[_0x7721('0x17')](function(_0x32550d){logger['error'](_0x7721('0xe'),_0x18ab6b,_0x32550d);_0x2f99ed(_0x32550d);});});}
\ No newline at end of file
index 515a16a..8982212 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe3c9=['../../components/auth/service','../../components/interaction/service','../../config/environment','./action.controller','/:id','isAuthenticated','update','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra'];(function(_0x57390d,_0x5746a0){var _0x59bd6a=function(_0x14effb){while(--_0x14effb){_0x57390d['push'](_0x57390d['shift']());}};_0x59bd6a(++_0x5746a0);}(_0xe3c9,0x14a));var _0x9e3c=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0xe3c9[_0x3bf83f];return _0x22c4a9;};'use strict';var multer=require(_0x9e3c('0x0'));var util=require(_0x9e3c('0x1'));var path=require('path');var timeout=require(_0x9e3c('0x2'));var express=require(_0x9e3c('0x3'));var router=express[_0x9e3c('0x4')]();var fs_extra=require(_0x9e3c('0x5'));var auth=require(_0x9e3c('0x6'));var interaction=require(_0x9e3c('0x7'));var config=require(_0x9e3c('0x8'));var controller=require(_0x9e3c('0x9'));router['put'](_0x9e3c('0xa'),auth[_0x9e3c('0xb')](),controller[_0x9e3c('0xc')]);router[_0x9e3c('0xd')](_0x9e3c('0xa'),auth[_0x9e3c('0xb')](),controller[_0x9e3c('0xe')]);module[_0x9e3c('0xf')]=router;
\ No newline at end of file
+var _0x28f3=['./action.controller','put','/:id','delete','isAuthenticated','destroy','exports','multer','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment'];(function(_0x38a3ff,_0x373f18){var _0x477c82=function(_0x3bcdef){while(--_0x3bcdef){_0x38a3ff['push'](_0x38a3ff['shift']());}};_0x477c82(++_0x373f18);}(_0x28f3,0x96));var _0x328f=function(_0x510742,_0x43011a){_0x510742=_0x510742-0x0;var _0x4273f0=_0x28f3[_0x510742];return _0x4273f0;};'use strict';var multer=require(_0x328f('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x328f('0x1'));var express=require('express');var router=express[_0x328f('0x2')]();var fs_extra=require(_0x328f('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x328f('0x4'));var config=require(_0x328f('0x5'));var controller=require(_0x328f('0x6'));router[_0x328f('0x7')](_0x328f('0x8'),auth['isAuthenticated'](),controller['update']);router[_0x328f('0x9')](_0x328f('0x8'),auth[_0x328f('0xa')](),controller[_0x328f('0xb')]);module[_0x328f('0xc')]=router;
\ No newline at end of file
index 2337d51..c586fc6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x24ca=['sequelize','STRING','TEXT'];(function(_0x5f1d74,_0x33e095){var _0xab75f5=function(_0x1765f1){while(--_0x1765f1){_0x5f1d74['push'](_0x5f1d74['shift']());}};_0xab75f5(++_0x33e095);}(_0x24ca,0x1bc));var _0xa24c=function(_0x4a82ac,_0x1fb931){_0x4a82ac=_0x4a82ac-0x0;var _0x58ee97=_0x24ca[_0x4a82ac];return _0x58ee97;};'use strict';var Sequelize=require(_0xa24c('0x0'));module['exports']={'name':{'type':Sequelize[_0xa24c('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0xa24c('0x1')]},'parent':{'type':Sequelize[_0xa24c('0x1')]},'table':{'type':Sequelize['STRING']},'conditions':{'type':Sequelize[_0xa24c('0x2')]},'joins':{'type':Sequelize[_0xa24c('0x2')]}};
\ No newline at end of file
+var _0xabce=['exports','STRING','TEXT','sequelize'];(function(_0x5534c6,_0x2821f0){var _0x1579d7=function(_0x3ca8b4){while(--_0x3ca8b4){_0x5534c6['push'](_0x5534c6['shift']());}};_0x1579d7(++_0x2821f0);}(_0xabce,0x103));var _0xeabc=function(_0x3ce3c,_0x319337){_0x3ce3c=_0x3ce3c-0x0;var _0x55a2c9=_0xabce[_0x3ce3c];return _0x55a2c9;};'use strict';var Sequelize=require(_0xeabc('0x0'));module[_0xeabc('0x1')]={'name':{'type':Sequelize[_0xeabc('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0xeabc('0x2')]},'parent':{'type':Sequelize[_0xeabc('0x2')]},'table':{'type':Sequelize['STRING']},'conditions':{'type':Sequelize['TEXT']},'joins':{'type':Sequelize[_0xeabc('0x3')]}};
\ No newline at end of file
index 061f09a..9eb446d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd978=['IS\x20EMPTY','IS\x20NOT\x20EMPTY','rules','operator','group','condition','getFields','Sequelize','AnalyticMetric','keyBy','select','table','MetricId','metric','field','function','replace','format','groupBy','orderBy','DESC','alias','joins','parse','foreignTable','foreignKey','%s.%s\x20=\x20%s.%s','parentKey','conditions','clone','debug','sequelize','toString','QueryTypes','SELECT','MIN(%s)','UNIX_TIMESTAMP(%s)','value','ValidationErrorItem','output','web','fullPath','%s-%s.%s','randomstring','generate','csv','custom','AnalyticExtractedReport','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','startDate','info','Run\x20Query:','fork','../../components/export/','savename','from','countTable','COUNT(*)','Please\x20insert\x20at\x20least\x20one\x20field','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','dbH','status','end','offset','limit','count','Content-Range','json','apply','reject','save','update','destroy','then','get','CustomReports','sendStatus','error','stack','send','index','map','AnalyticCustomReport','rawAttributes','fieldName','type','model','name','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','show','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Reports','UserProfileSection','userProfileId','UserProfileResource','params','preview','join','left_join','right_join','cross_join','SUM(%s)','COUNT(%s)','COUNT(DISTINCT\x20%s)','MAX(%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)','includes','IS\x20NULL'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0xd978,0x186));var _0x8d97=function(_0x269ee8,_0x477226){_0x269ee8=_0x269ee8-0x0;var _0x4d98bd=_0xd978[_0x269ee8];return _0x4d98bd;};'use strict';var emlformat=require(_0x8d97('0x0'));var rimraf=require(_0x8d97('0x1'));var zipdir=require(_0x8d97('0x2'));var jsonpatch=require(_0x8d97('0x3'));var rp=require(_0x8d97('0x4'));var moment=require(_0x8d97('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x8d97('0x6'));var util=require(_0x8d97('0x7'));var path=require('path');var sox=require(_0x8d97('0x8'));var csv=require(_0x8d97('0x9'));var ejs=require(_0x8d97('0xa'));var fs=require('fs');var fs_extra=require(_0x8d97('0xb'));var _=require(_0x8d97('0xc'));var squel=require('squel');var crypto=require(_0x8d97('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x8d97('0xe'));var toCsv=require(_0x8d97('0x9'));var querystring=require(_0x8d97('0xf'));var Papa=require(_0x8d97('0x10'));var Redis=require('ioredis');var authService=require(_0x8d97('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x8d97('0x12'));var hardwareService=require(_0x8d97('0x13'));var logger=require(_0x8d97('0x14'))(_0x8d97('0x15'));var utils=require(_0x8d97('0x16'));var config=require(_0x8d97('0x17'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var dbH=require(_0x8d97('0x18'))[_0x8d97('0x19')];function respondWithStatusCode(_0x1273d9,_0x47031d){_0x47031d=_0x47031d||0xcc;return function(_0x537838){if(_0x537838){return _0x1273d9['sendStatus'](_0x47031d);}return _0x1273d9[_0x8d97('0x1a')](_0x47031d)[_0x8d97('0x1b')]();};}function respondWithResult(_0x4a45fd,_0x4c77dd){_0x4c77dd=_0x4c77dd||0xc8;return function(_0x201443){if(_0x201443){return _0x4a45fd[_0x8d97('0x1a')](_0x4c77dd)['json'](_0x201443);}};}function respondWithFilteredResult(_0x2fb49c,_0xf30378){return function(_0x2df358){if(_0x2df358){var _0x46462b=typeof _0xf30378[_0x8d97('0x1c')]==='undefined'&&typeof _0xf30378[_0x8d97('0x1d')]==='undefined';var _0x35425c=_0x2df358[_0x8d97('0x1e')];var _0x4130aa=_0x46462b?0x0:_0xf30378['offset'];var _0x2e73b5=_0x46462b?_0x2df358[_0x8d97('0x1e')]:_0xf30378[_0x8d97('0x1c')]+_0xf30378[_0x8d97('0x1d')];var _0x39a833;if(_0x2e73b5>=_0x35425c){_0x2e73b5=_0x35425c;_0x39a833=0xc8;}else{_0x39a833=0xce;}_0x2fb49c[_0x8d97('0x1a')](_0x39a833);return _0x2fb49c['set'](_0x8d97('0x1f'),_0x4130aa+'-'+_0x2e73b5+'/'+_0x35425c)[_0x8d97('0x20')](_0x2df358);}return null;};}function patchUpdates(_0x194161){return function(_0x1210fa){try{jsonpatch[_0x8d97('0x21')](_0x1210fa,_0x194161,!![]);}catch(_0x5e31e5){return BPromise[_0x8d97('0x22')](_0x5e31e5);}return _0x1210fa[_0x8d97('0x23')]();};}function saveUpdates(_0x2b90f7,_0x1fa54d){return function(_0x1d2623){if(_0x1d2623){return _0x1d2623[_0x8d97('0x24')](_0x2b90f7)['then'](function(_0x720d0d){return _0x720d0d;});}return null;};}function removeEntity(_0x1ba65b,_0x20962a){return function(_0x127e39){if(_0x127e39){return _0x127e39[_0x8d97('0x25')]()[_0x8d97('0x26')](function(){var _0x59bf41=_0x127e39[_0x8d97('0x27')]({'plain':!![]});var _0x11ac11=_0x8d97('0x28');return db['UserProfileResource']['destroy']({'where':{'type':_0x11ac11,'resourceId':_0x59bf41['id']}})[_0x8d97('0x26')](function(){return _0x127e39;});})[_0x8d97('0x26')](function(){_0x1ba65b['status'](0xcc)[_0x8d97('0x1b')]();});}};}function handleEntityNotFound(_0x39593e,_0x31c914){return function(_0x3751f5){if(!_0x3751f5){_0x39593e[_0x8d97('0x29')](0x194);}return _0x3751f5;};}function handleError(_0x20ffa3,_0x8282c6){_0x8282c6=_0x8282c6||0x1f4;return function(_0x40744d){logger[_0x8d97('0x2a')](_0x40744d[_0x8d97('0x2b')]);if(_0x40744d['name']){delete _0x40744d['name'];}_0x20ffa3[_0x8d97('0x1a')](_0x8282c6)[_0x8d97('0x2c')](_0x40744d);};}exports[_0x8d97('0x2d')]=function(_0x257a77,_0x120e3b){var _0x2bf51d={},_0x42a5eb={},_0x45828b={'count':0x0,'rows':[]};var _0x8e37ec=_[_0x8d97('0x2e')](db[_0x8d97('0x2f')][_0x8d97('0x30')],function(_0x4c0f88){return{'name':_0x4c0f88[_0x8d97('0x31')],'type':_0x4c0f88[_0x8d97('0x32')]['key']};});_0x42a5eb[_0x8d97('0x33')]=_[_0x8d97('0x2e')](_0x8e37ec,_0x8d97('0x34'));_0x42a5eb[_0x8d97('0x35')]=_[_0x8d97('0x36')](_0x257a77[_0x8d97('0x35')]);_0x42a5eb[_0x8d97('0x37')]=_[_0x8d97('0x38')](_0x42a5eb['model'],_0x42a5eb['query']);_0x2bf51d['attributes']=_[_0x8d97('0x38')](_0x42a5eb[_0x8d97('0x33')],qs[_0x8d97('0x39')](_0x257a77[_0x8d97('0x35')][_0x8d97('0x39')]));_0x2bf51d['attributes']=_0x2bf51d[_0x8d97('0x3a')][_0x8d97('0x3b')]?_0x2bf51d[_0x8d97('0x3a')]:_0x42a5eb[_0x8d97('0x33')];if(!_0x257a77[_0x8d97('0x35')][_0x8d97('0x3c')](_0x8d97('0x3d'))){_0x2bf51d[_0x8d97('0x1d')]=qs[_0x8d97('0x1d')](_0x257a77['query'][_0x8d97('0x1d')]);_0x2bf51d['offset']=qs[_0x8d97('0x1c')](_0x257a77[_0x8d97('0x35')][_0x8d97('0x1c')]);}_0x2bf51d[_0x8d97('0x3e')]=qs[_0x8d97('0x3f')](_0x257a77[_0x8d97('0x35')][_0x8d97('0x3f')]);_0x2bf51d[_0x8d97('0x40')]=qs['filters'](_[_0x8d97('0x41')](_0x257a77[_0x8d97('0x35')],_0x42a5eb['filters']),_0x8e37ec);if(_0x257a77['query'][_0x8d97('0x42')]){_0x2bf51d[_0x8d97('0x40')]=_[_0x8d97('0x43')](_0x2bf51d[_0x8d97('0x40')],{'$or':_[_0x8d97('0x2e')](_0x8e37ec,function(_0x32fb7d){if(_0x32fb7d[_0x8d97('0x32')]!==_0x8d97('0x44')){var _0x3294a6={};_0x3294a6[_0x32fb7d[_0x8d97('0x34')]]={'$like':'%'+_0x257a77['query'][_0x8d97('0x42')]+'%'};return _0x3294a6;}})});}_0x2bf51d=_[_0x8d97('0x43')]({},_0x2bf51d,_0x257a77[_0x8d97('0x45')]);var _0x11212f={'where':_0x2bf51d[_0x8d97('0x40')]};return db[_0x8d97('0x2f')]['count'](_0x11212f)['then'](function(_0xda83b0){_0x45828b[_0x8d97('0x1e')]=_0xda83b0;if(_0x257a77[_0x8d97('0x35')][_0x8d97('0x46')]){_0x2bf51d[_0x8d97('0x47')]=[{'all':!![]}];}return db[_0x8d97('0x2f')][_0x8d97('0x48')](_0x2bf51d);})['then'](function(_0x428540){_0x45828b['rows']=_0x428540;return _0x45828b;})[_0x8d97('0x26')](respondWithFilteredResult(_0x120e3b,_0x2bf51d))[_0x8d97('0x49')](handleError(_0x120e3b,null));};exports[_0x8d97('0x4a')]=function(_0x2688be,_0x408c22){var _0xe431a2={'raw':![],'where':{'id':_0x2688be['params']['id']}},_0x1a883e={};_0x1a883e['model']=_[_0x8d97('0x36')](db[_0x8d97('0x2f')]['rawAttributes']);_0x1a883e[_0x8d97('0x35')]=_[_0x8d97('0x36')](_0x2688be[_0x8d97('0x35')]);_0x1a883e[_0x8d97('0x37')]=_['intersection'](_0x1a883e[_0x8d97('0x33')],_0x1a883e[_0x8d97('0x35')]);_0xe431a2[_0x8d97('0x3a')]=_[_0x8d97('0x38')](_0x1a883e[_0x8d97('0x33')],qs[_0x8d97('0x39')](_0x2688be[_0x8d97('0x35')][_0x8d97('0x39')]));_0xe431a2[_0x8d97('0x3a')]=_0xe431a2[_0x8d97('0x3a')][_0x8d97('0x3b')]?_0xe431a2[_0x8d97('0x3a')]:_0x1a883e[_0x8d97('0x33')];if(_0x2688be['query'][_0x8d97('0x46')]){_0xe431a2[_0x8d97('0x47')]=[{'all':!![]}];}_0xe431a2=_[_0x8d97('0x43')]({},_0xe431a2,_0x2688be[_0x8d97('0x45')]);return db['AnalyticCustomReport'][_0x8d97('0x4b')](_0xe431a2)[_0x8d97('0x26')](handleEntityNotFound(_0x408c22,null))[_0x8d97('0x26')](respondWithResult(_0x408c22,null))[_0x8d97('0x49')](handleError(_0x408c22,null));};exports['create']=function(_0x21bce2,_0x36a086){return db[_0x8d97('0x2f')][_0x8d97('0x4c')](_0x21bce2[_0x8d97('0x4d')],{})[_0x8d97('0x26')](function(_0x35ae34){var _0x3dcfc9=_0x21bce2[_0x8d97('0x4e')]['get']({'plain':!![]});if(!_0x3dcfc9)throw new Error(_0x8d97('0x4f'));if(_0x3dcfc9[_0x8d97('0x50')]===_0x8d97('0x4e')){var _0x1ae33f=_0x35ae34[_0x8d97('0x27')]({'plain':!![]});var _0x2548b3=_0x8d97('0x51');return db[_0x8d97('0x52')][_0x8d97('0x4b')]({'where':{'name':_0x2548b3,'userProfileId':_0x3dcfc9[_0x8d97('0x53')]},'raw':!![]})[_0x8d97('0x26')](function(_0x8ad7ee){if(_0x8ad7ee&&_0x8ad7ee['autoAssociation']===0x0){return db[_0x8d97('0x54')][_0x8d97('0x4c')]({'name':_0x1ae33f[_0x8d97('0x34')],'resourceId':_0x1ae33f['id'],'type':_0x8d97('0x28'),'sectionId':_0x8ad7ee['id']},{})['then'](function(){return _0x35ae34;});}else{return _0x35ae34;}})[_0x8d97('0x49')](function(_0x1c2f11){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1c2f11);throw _0x1c2f11;});}return _0x35ae34;})['then'](respondWithResult(_0x36a086,0xc9))[_0x8d97('0x49')](handleError(_0x36a086,null));};exports[_0x8d97('0x24')]=function(_0x26a804,_0x4d8aba){if(_0x26a804[_0x8d97('0x4d')]['id']){delete _0x26a804[_0x8d97('0x4d')]['id'];}return db['AnalyticCustomReport'][_0x8d97('0x4b')]({'where':{'id':_0x26a804[_0x8d97('0x55')]['id']}})[_0x8d97('0x26')](handleEntityNotFound(_0x4d8aba,null))[_0x8d97('0x26')](saveUpdates(_0x26a804[_0x8d97('0x4d')],null))[_0x8d97('0x26')](respondWithResult(_0x4d8aba,null))['catch'](handleError(_0x4d8aba,null));};exports[_0x8d97('0x25')]=function(_0x208765,_0x576d9a){return db[_0x8d97('0x2f')][_0x8d97('0x4b')]({'where':{'id':_0x208765[_0x8d97('0x55')]['id']}})[_0x8d97('0x26')](handleEntityNotFound(_0x576d9a,null))['then'](removeEntity(_0x576d9a,null))[_0x8d97('0x49')](handleError(_0x576d9a,null));};exports[_0x8d97('0x56')]=function(_0x572bdb,_0x37796a){var _0x4c50cd=0xa;var _0x20a667=[_0x8d97('0x57'),_0x8d97('0x58'),_0x8d97('0x59'),_0x8d97('0x5a')];var _0x29f256={'SUM':_0x8d97('0x5b'),'COUNT':_0x8d97('0x5c'),'COUNT DISTINCT':_0x8d97('0x5d'),'MAX':_0x8d97('0x5e'),'MIN':'MIN(%s)','AVG':_0x8d97('0x5f'),'GROUP_CONCAT':_0x8d97('0x60'),'GROUP_CONCAT ASC':_0x8d97('0x61'),'GROUP_CONCAT DESC':_0x8d97('0x62')};var _0x255c0b={'SEC_TO_TIME':_0x8d97('0x63'),'DATE':_0x8d97('0x64'),'HOUR':_0x8d97('0x65'),'ROUND':_0x8d97('0x66'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x361db1=function(_0x8759bd){return!_[_0x8d97('0x67')]([_0x8d97('0x68'),'IS\x20NOT\x20NULL',_0x8d97('0x69'),_0x8d97('0x6a')],_0x8759bd);};var _0x4f84b0=function(_0x1bff9d){if(!_0x1bff9d||!_0x1bff9d[_0x8d97('0x6b')][_0x8d97('0x3b')]){return'';}for(var _0xabf76c='(',_0x3fb655=0x0;_0x3fb655<_0x1bff9d['rules'][_0x8d97('0x3b')];_0x3fb655+=0x1){_0x3fb655>0x0&&(_0xabf76c+='\x20'+_0x1bff9d[_0x8d97('0x6c')]+'\x20');_0xabf76c+=_0x1bff9d[_0x8d97('0x6b')][_0x3fb655][_0x8d97('0x6d')]?_0x4f84b0(_0x1bff9d[_0x8d97('0x6b')][_0x3fb655][_0x8d97('0x6d')]):_0x1bff9d[_0x8d97('0x6b')][_0x3fb655]['field']+'\x20'+_0x1bff9d['rules'][_0x3fb655][_0x8d97('0x6e')]+(_0x361db1(_0x1bff9d[_0x8d97('0x6b')][_0x3fb655][_0x8d97('0x6e')])?'\x20'+_0x1bff9d[_0x8d97('0x6b')][_0x3fb655]['value']:'');}return _0xabf76c+')';};var _0x2e6f3d={'where':{'id':_0x572bdb['params']['id']}},_0x1e3934,_0x4c9748,_0x258512,_0x49aa7e,_0x12b0f3;_0x2e6f3d=_[_0x8d97('0x43')]({},_0x2e6f3d,_0x572bdb[_0x8d97('0x45')]);return db[_0x8d97('0x2f')][_0x8d97('0x4b')](_0x2e6f3d)[_0x8d97('0x26')](function(_0x4d17f2){if(_0x4d17f2){_0x1e3934=_0x4d17f2;return _0x4d17f2[_0x8d97('0x6f')]();}return null;})[_0x8d97('0x26')](function(_0x588471){if(_0x588471){if(!_0x588471[_0x8d97('0x3b')]){throw new db[(_0x8d97('0x70'))]['ValidationErrorItem']('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x4c9748=_0x588471;return db[_0x8d97('0x71')][_0x8d97('0x48')]({'raw':!![]});}return null;})[_0x8d97('0x26')](function(_0x4b5cf6){if(_0x4b5cf6){_0x258512=_[_0x8d97('0x72')](_0x4b5cf6,'id');var _0x2dfda0;var _0x50dfc4=squel[_0x8d97('0x73')]();_0x50dfc4['from'](_0x1e3934[_0x8d97('0x74')]);for(var _0x4743b3=0x0;_0x4743b3<_0x4c9748['length'];_0x4743b3+=0x1){_0x2dfda0=_0x4c9748[_0x4743b3][_0x8d97('0x75')]?_0x258512[_0x4c9748[_0x4743b3][_0x8d97('0x75')]][_0x8d97('0x76')]:_0x4c9748[_0x4743b3][_0x8d97('0x77')];_0x2dfda0=_0x4c9748[_0x4743b3][_0x8d97('0x78')]?_[_0x8d97('0x79')](_0x29f256[_0x4c9748[_0x4743b3]['function']],'%s',_0x2dfda0):_0x2dfda0;_0x2dfda0=_0x4c9748[_0x4743b3][_0x8d97('0x7a')]?_[_0x8d97('0x79')](_0x255c0b[_0x4c9748[_0x4743b3]['format']],'%s',_0x2dfda0):_0x2dfda0;if(_0x4c9748[_0x4743b3][_0x8d97('0x7b')]){_0x50dfc4[_0x8d97('0x6d')](_0x2dfda0);}_0x4c9748[_0x4743b3][_0x8d97('0x7c')]&&_0x50dfc4[_0x8d97('0x3e')](_0x2dfda0,_0x4c9748[_0x4743b3]['orderBy']===_0x8d97('0x7d')?![]:!![]);_0x50dfc4[_0x8d97('0x77')](_0x2dfda0,_0x4c9748[_0x4743b3][_0x8d97('0x7e')]||_0x2dfda0);}if(_0x1e3934[_0x8d97('0x7f')]){_0x1e3934[_0x8d97('0x7f')]=JSON[_0x8d97('0x80')](_0x1e3934[_0x8d97('0x7f')]);for(var _0x11355a=0x0;_0x11355a<_0x1e3934[_0x8d97('0x7f')][_0x8d97('0x3b')];_0x11355a+=0x1){if(_0x1e3934[_0x8d97('0x7f')][_0x11355a][_0x8d97('0x32')]&&_[_0x8d97('0x67')](_0x20a667,_0x1e3934['joins'][_0x11355a]['type'])&&_0x1e3934[_0x8d97('0x7f')][_0x11355a]['parentKey']&&_0x1e3934[_0x8d97('0x7f')][_0x11355a][_0x8d97('0x81')]&&_0x1e3934[_0x8d97('0x7f')][_0x11355a][_0x8d97('0x82')]){_0x50dfc4[_0x1e3934['joins'][_0x11355a]['type']](_0x1e3934[_0x8d97('0x7f')][_0x11355a][_0x8d97('0x81')],null,util[_0x8d97('0x7a')](_0x8d97('0x83'),_0x1e3934[_0x8d97('0x74')],_0x1e3934[_0x8d97('0x7f')][_0x11355a][_0x8d97('0x84')],_0x1e3934[_0x8d97('0x7f')][_0x11355a]['foreignTable'],_0x1e3934[_0x8d97('0x7f')][_0x11355a][_0x8d97('0x82')]));}}}if(_0x1e3934[_0x8d97('0x85')]){_0x1e3934[_0x8d97('0x85')]=JSON[_0x8d97('0x80')](_0x1e3934[_0x8d97('0x85')]);_0x50dfc4['where'](_0x4f84b0(_0x1e3934[_0x8d97('0x85')]['group']));}_0x12b0f3=_0x50dfc4[_0x8d97('0x86')]();_0x50dfc4[_0x8d97('0x1d')](_0x4c50cd);_0x50dfc4[_0x8d97('0x1c')](0x0);logger[_0x8d97('0x87')]('Limited\x20Query:',_0x50dfc4['toString']());return dbH[_0x8d97('0x88')]['query'](_0x50dfc4[_0x8d97('0x89')](),{'type':dbH[_0x8d97('0x88')][_0x8d97('0x8a')][_0x8d97('0x8b')]});}})[_0x8d97('0x26')](respondWithResult(_0x37796a,null))[_0x8d97('0x49')](handleError(_0x37796a,null));};function runReport(_0x3f23f7,_0x2d65a5,_0x5dce26){var _0x493eca=_0x2d65a5['name'];var _0x242ccb=0xa;var _0x548826=['join',_0x8d97('0x58'),_0x8d97('0x59'),'cross_join'];var _0x34c973={'SUM':_0x8d97('0x5b'),'COUNT':_0x8d97('0x5c'),'COUNT DISTINCT':_0x8d97('0x5d'),'MAX':_0x8d97('0x5e'),'MIN':_0x8d97('0x8c'),'AVG':_0x8d97('0x5f'),'GROUP_CONCAT':_0x8d97('0x60'),'GROUP_CONCAT ASC':_0x8d97('0x61'),'GROUP_CONCAT DESC':_0x8d97('0x62')};var _0x3a5257={'SEC_TO_TIME':_0x8d97('0x63'),'DATE':'DATE(%s)','HOUR':_0x8d97('0x65'),'ROUND':_0x8d97('0x66'),'UNIX_TIMESTAMP':_0x8d97('0x8d')};var _0x1198ff=function(_0x41e35f){return!_[_0x8d97('0x67')](['IS\x20NULL','IS\x20NOT\x20NULL',_0x8d97('0x69'),_0x8d97('0x6a')],_0x41e35f);};var _0x3a1c59=function(_0x453911){if(!_0x453911||!_0x453911['rules']['length']){return'';}for(var _0xa5f12d='(',_0x7e358e=0x0;_0x7e358e<_0x453911[_0x8d97('0x6b')]['length'];_0x7e358e+=0x1){_0x7e358e>0x0&&(_0xa5f12d+='\x20'+_0x453911[_0x8d97('0x6c')]+'\x20');_0xa5f12d+=_0x453911[_0x8d97('0x6b')][_0x7e358e][_0x8d97('0x6d')]?_0x3a1c59(_0x453911['rules'][_0x7e358e][_0x8d97('0x6d')]):_0x453911[_0x8d97('0x6b')][_0x7e358e][_0x8d97('0x77')]+'\x20'+_0x453911['rules'][_0x7e358e][_0x8d97('0x6e')]+(_0x1198ff(_0x453911[_0x8d97('0x6b')][_0x7e358e]['condition'])?'\x20'+_0x453911[_0x8d97('0x6b')][_0x7e358e][_0x8d97('0x8e')]:'');}return _0xa5f12d+')';};var _0x5456ed={'where':{'id':_0x3f23f7['id']}},_0x481b3d,_0x1bafd2,_0x2682ed,_0x47f649,_0xa81e1a;_0x5456ed=_[_0x8d97('0x43')]({},_0x5456ed,_0x5dce26);return db[_0x8d97('0x2f')][_0x8d97('0x4b')](_0x5456ed)[_0x8d97('0x26')](function(_0xe4f28c){if(_0xe4f28c){_0x481b3d=_0xe4f28c;return _0xe4f28c[_0x8d97('0x6f')]();}return null;})[_0x8d97('0x26')](function(_0x32c8d0){if(_0x32c8d0){if(!_0x32c8d0[_0x8d97('0x3b')]){throw new db['Sequelize'][(_0x8d97('0x8f'))]('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x1bafd2=_0x32c8d0;return db['AnalyticMetric'][_0x8d97('0x48')]({'raw':!![]});}return null;})['then'](function(_0x1bad57){if(_0x1bad57){_0x2682ed=_[_0x8d97('0x72')](_0x1bad57,'id');var _0x2990a2;var _0x7c589a=squel[_0x8d97('0x73')]();_0x7c589a['from'](_0x481b3d[_0x8d97('0x74')]);for(var _0x58a316=0x0;_0x58a316<_0x1bafd2[_0x8d97('0x3b')];_0x58a316+=0x1){_0x2990a2=_0x1bafd2[_0x58a316][_0x8d97('0x75')]?_0x2682ed[_0x1bafd2[_0x58a316]['MetricId']][_0x8d97('0x76')]:_0x1bafd2[_0x58a316]['field'];_0x2990a2=_0x1bafd2[_0x58a316][_0x8d97('0x78')]?_[_0x8d97('0x79')](_0x34c973[_0x1bafd2[_0x58a316]['function']],'%s',_0x2990a2):_0x2990a2;_0x2990a2=_0x1bafd2[_0x58a316][_0x8d97('0x7a')]?_[_0x8d97('0x79')](_0x3a5257[_0x1bafd2[_0x58a316][_0x8d97('0x7a')]],'%s',_0x2990a2):_0x2990a2;if(_0x1bafd2[_0x58a316]['groupBy']){_0x7c589a[_0x8d97('0x6d')](_0x2990a2);}_0x1bafd2[_0x58a316][_0x8d97('0x7c')]&&_0x7c589a[_0x8d97('0x3e')](_0x2990a2,_0x1bafd2[_0x58a316][_0x8d97('0x7c')]===_0x8d97('0x7d')?![]:!![]);_0x7c589a['field'](_0x2990a2,_0x1bafd2[_0x58a316]['alias']||_0x2990a2);}if(_0x481b3d[_0x8d97('0x7f')]){_0x481b3d['joins']=JSON['parse'](_0x481b3d['joins']);for(var _0x1f8301=0x0;_0x1f8301<_0x481b3d[_0x8d97('0x7f')][_0x8d97('0x3b')];_0x1f8301+=0x1){if(_0x481b3d[_0x8d97('0x7f')][_0x1f8301][_0x8d97('0x32')]&&_[_0x8d97('0x67')](_0x548826,_0x481b3d[_0x8d97('0x7f')][_0x1f8301][_0x8d97('0x32')])&&_0x481b3d['joins'][_0x1f8301]['parentKey']&&_0x481b3d[_0x8d97('0x7f')][_0x1f8301][_0x8d97('0x81')]&&_0x481b3d[_0x8d97('0x7f')][_0x1f8301][_0x8d97('0x82')]){_0x7c589a[_0x481b3d[_0x8d97('0x7f')][_0x1f8301]['type']](_0x481b3d[_0x8d97('0x7f')][_0x1f8301][_0x8d97('0x81')],null,util[_0x8d97('0x7a')]('%s.%s\x20=\x20%s.%s',_0x481b3d[_0x8d97('0x74')],_0x481b3d[_0x8d97('0x7f')][_0x1f8301]['parentKey'],_0x481b3d['joins'][_0x1f8301]['foreignTable'],_0x481b3d[_0x8d97('0x7f')][_0x1f8301]['foreignKey']));}}}if(_0x481b3d[_0x8d97('0x85')]){_0x481b3d[_0x8d97('0x85')]=JSON[_0x8d97('0x80')](_0x481b3d[_0x8d97('0x85')]);_0x7c589a['where'](_0x3a1c59(_0x481b3d[_0x8d97('0x85')][_0x8d97('0x6d')]));}_0xa81e1a=_0x7c589a[_0x8d97('0x86')]();_0x7c589a['limit'](_0x242ccb);_0x7c589a[_0x8d97('0x1c')](0x0);return;}})['then'](function(){if(_0x2d65a5[_0x8d97('0x90')]===_0x8d97('0x91')){return null;}var _0x3ece5e=_[_0x8d97('0x43')](_0x2d65a5,{'name':_0x2d65a5[_0x8d97('0x92')]||_0x2d65a5['name']||_0x481b3d[_0x8d97('0x34')],'basename':_0x493eca,'savename':util[_0x8d97('0x7a')](_0x8d97('0x93'),_0x2d65a5[_0x8d97('0x34')]||_0x481b3d[_0x8d97('0x34')],require(_0x8d97('0x94'))[_0x8d97('0x95')](0x4),_0x2d65a5[_0x8d97('0x90')]||_0x8d97('0x96')),'reportId':_0x481b3d['id'],'reportType':_0x8d97('0x97')});return db[_0x8d97('0x98')][_0x8d97('0x4c')](_0x3ece5e,{'raw':!![]});})[_0x8d97('0x26')](function(_0x378df0){if(_0x481b3d[_0x8d97('0x74')]==='cdr'){_0xa81e1a['where'](_0x481b3d[_0x8d97('0x74')]+'.calldate\x20BETWEEN\x20?\x20AND\x20?',_0x2d65a5['startDate'],_0x2d65a5[_0x8d97('0x99')]);}else{_0xa81e1a[_0x8d97('0x40')](_0x481b3d[_0x8d97('0x74')]+_0x8d97('0x9a'),_0x2d65a5[_0x8d97('0x9b')],_0x2d65a5['endDate']);}if(_0x378df0){logger[_0x8d97('0x9c')](_0x8d97('0x9d'),_0xa81e1a['toString']());require('child_process')[_0x8d97('0x9e')](path[_0x8d97('0x57')](__dirname,_0x8d97('0x9f'),_0x378df0[_0x8d97('0x90')]),[_0x378df0['id'],_0xa81e1a[_0x8d97('0x89')](),path[_0x8d97('0x57')](__dirname,'../../files/reports',_0x378df0[_0x8d97('0xa0')]),_0x493eca]);return _0x378df0;}else{var _0x18ffc9=squel[_0x8d97('0x73')]();_0x18ffc9[_0x8d97('0xa1')]('('+_0xa81e1a[_0x8d97('0x89')]()+')',_0x8d97('0xa2'));_0x18ffc9[_0x8d97('0x77')](_0x8d97('0xa3'),_0x8d97('0x1e'));_0xa81e1a['limit'](_0x2d65a5['limit']||_0x242ccb);_0xa81e1a[_0x8d97('0x1c')](_0x2d65a5[_0x8d97('0x1c')]||0x0);return dbH[_0x8d97('0x88')][_0x8d97('0x35')](_0x18ffc9[_0x8d97('0x89')](),{'type':dbH[_0x8d97('0x88')][_0x8d97('0x8a')][_0x8d97('0x8b')]})[_0x8d97('0x26')](function(_0x309b42){if(!_0x309b42[_0x8d97('0x3b')]){_0x47f649=0x0;}else{_0x47f649=_0x309b42[0x0]['count']||0x0;}return dbH[_0x8d97('0x88')][_0x8d97('0x35')](_0xa81e1a[_0x8d97('0x89')](),{'type':dbH[_0x8d97('0x88')][_0x8d97('0x8a')][_0x8d97('0x8b')]});})[_0x8d97('0x26')](function(_0x552a52){return{'rows':_0x552a52||[],'count':_0x47f649};});}});}exports['run']=function(_0x52191c,_0x128cfb){return runReport(_0x52191c['params'],_0x52191c['query'],_0x52191c['options'])[_0x8d97('0x26')](respondWithResult(_0x128cfb,null))[_0x8d97('0x49')](handleError(_0x128cfb,null));};exports['runReport']=runReport;exports[_0x8d97('0x35')]=function(_0x5ec9e0,_0x1a9fc0){var _0x3812d7=0xa;var _0x4a626d=[_0x8d97('0x57'),_0x8d97('0x58'),'right_join',_0x8d97('0x5a')];var _0x27a903={'SUM':'SUM(%s)','COUNT':_0x8d97('0x5c'),'COUNT DISTINCT':_0x8d97('0x5d'),'MAX':_0x8d97('0x5e'),'MIN':_0x8d97('0x8c'),'AVG':_0x8d97('0x5f'),'GROUP_CONCAT':_0x8d97('0x60'),'GROUP_CONCAT ASC':_0x8d97('0x61'),'GROUP_CONCAT DESC':_0x8d97('0x62')};var _0x439d78={'SEC_TO_TIME':_0x8d97('0x63'),'DATE':'DATE(%s)','HOUR':'HOUR(%s)','ROUND':_0x8d97('0x66'),'UNIX_TIMESTAMP':_0x8d97('0x8d')};var _0x1eaab6=function(_0x5a103e){return!_[_0x8d97('0x67')]([_0x8d97('0x68'),'IS\x20NOT\x20NULL',_0x8d97('0x69'),_0x8d97('0x6a')],_0x5a103e);};var _0x3b6b38=function(_0x50d093){if(!_0x50d093||!_0x50d093[_0x8d97('0x6b')][_0x8d97('0x3b')]){return'';}for(var _0x2fba3a='(',_0x32dfb9=0x0;_0x32dfb9<_0x50d093['rules'][_0x8d97('0x3b')];_0x32dfb9+=0x1){_0x32dfb9>0x0&&(_0x2fba3a+='\x20'+_0x50d093[_0x8d97('0x6c')]+'\x20');_0x2fba3a+=_0x50d093[_0x8d97('0x6b')][_0x32dfb9][_0x8d97('0x6d')]?_0x3b6b38(_0x50d093[_0x8d97('0x6b')][_0x32dfb9]['group']):_0x50d093[_0x8d97('0x6b')][_0x32dfb9][_0x8d97('0x77')]+'\x20'+_0x50d093[_0x8d97('0x6b')][_0x32dfb9]['condition']+(_0x1eaab6(_0x50d093['rules'][_0x32dfb9][_0x8d97('0x6e')])?'\x20'+_0x50d093['rules'][_0x32dfb9]['value']:'');}return _0x2fba3a+')';};var _0x36d50a={'where':{'id':_0x5ec9e0[_0x8d97('0x55')]['id']}},_0x5824b4,_0x1261a3,_0x307f65,_0x4920d6,_0x9452b1;_0x36d50a=_[_0x8d97('0x43')]({},_0x36d50a,_0x5ec9e0[_0x8d97('0x45')]);return db[_0x8d97('0x2f')][_0x8d97('0x4b')](_0x36d50a)['then'](function(_0x39cc07){if(_0x39cc07){_0x5824b4=_0x39cc07;return _0x39cc07[_0x8d97('0x6f')]();}return null;})['then'](function(_0x29ebc){if(_0x29ebc){if(!_0x29ebc[_0x8d97('0x3b')]){throw new db['Sequelize']['ValidationErrorItem'](_0x8d97('0xa4'),0x193);}_0x1261a3=_0x29ebc;return db[_0x8d97('0x71')][_0x8d97('0x48')]({'raw':!![]});}return null;})[_0x8d97('0x26')](function(_0x106f4c){if(_0x106f4c){_0x307f65=_[_0x8d97('0x72')](_0x106f4c,'id');var _0x7af445;var _0x3f4464=squel['select']();_0x3f4464[_0x8d97('0xa1')](_0x5824b4[_0x8d97('0x74')]);for(var _0xc8c3a7=0x0;_0xc8c3a7<_0x1261a3[_0x8d97('0x3b')];_0xc8c3a7+=0x1){_0x7af445=_0x1261a3[_0xc8c3a7]['MetricId']?_0x307f65[_0x1261a3[_0xc8c3a7]['MetricId']]['metric']:_0x1261a3[_0xc8c3a7][_0x8d97('0x77')];_0x7af445=_0x1261a3[_0xc8c3a7]['function']?_['replace'](_0x27a903[_0x1261a3[_0xc8c3a7][_0x8d97('0x78')]],'%s',_0x7af445):_0x7af445;_0x7af445=_0x1261a3[_0xc8c3a7][_0x8d97('0x7a')]?_['replace'](_0x439d78[_0x1261a3[_0xc8c3a7]['format']],'%s',_0x7af445):_0x7af445;if(_0x1261a3[_0xc8c3a7]['groupBy']){_0x3f4464['group'](_0x7af445);}_0x1261a3[_0xc8c3a7]['orderBy']&&_0x3f4464[_0x8d97('0x3e')](_0x7af445,_0x1261a3[_0xc8c3a7][_0x8d97('0x7c')]==='DESC'?![]:!![]);_0x3f4464[_0x8d97('0x77')](_0x7af445,_0x1261a3[_0xc8c3a7][_0x8d97('0x7e')]||_0x7af445);}if(_0x5824b4[_0x8d97('0x7f')]){_0x5824b4[_0x8d97('0x7f')]=JSON[_0x8d97('0x80')](_0x5824b4['joins']);for(var _0xa568c3=0x0;_0xa568c3<_0x5824b4[_0x8d97('0x7f')][_0x8d97('0x3b')];_0xa568c3+=0x1){if(_0x5824b4[_0x8d97('0x7f')][_0xa568c3][_0x8d97('0x32')]&&_[_0x8d97('0x67')](_0x4a626d,_0x5824b4[_0x8d97('0x7f')][_0xa568c3][_0x8d97('0x32')])&&_0x5824b4[_0x8d97('0x7f')][_0xa568c3][_0x8d97('0x84')]&&_0x5824b4[_0x8d97('0x7f')][_0xa568c3][_0x8d97('0x81')]&&_0x5824b4['joins'][_0xa568c3][_0x8d97('0x82')]){_0x3f4464[_0x5824b4['joins'][_0xa568c3][_0x8d97('0x32')]](_0x5824b4[_0x8d97('0x7f')][_0xa568c3]['foreignTable'],null,util['format'](_0x8d97('0x83'),_0x5824b4[_0x8d97('0x74')],_0x5824b4['joins'][_0xa568c3][_0x8d97('0x84')],_0x5824b4[_0x8d97('0x7f')][_0xa568c3][_0x8d97('0x81')],_0x5824b4[_0x8d97('0x7f')][_0xa568c3][_0x8d97('0x82')]));}}}if(_0x5824b4[_0x8d97('0x85')]){_0x5824b4['conditions']=JSON[_0x8d97('0x80')](_0x5824b4[_0x8d97('0x85')]);_0x3f4464[_0x8d97('0x40')](_0x3b6b38(_0x5824b4['conditions']['group']));}_0x9452b1=_0x3f4464[_0x8d97('0x86')]();_0x3f4464[_0x8d97('0x1d')](_0x3812d7);_0x3f4464[_0x8d97('0x1c')](0x0);logger[_0x8d97('0x87')]('Limited\x20Query:',_0x3f4464[_0x8d97('0x89')]());return dbH['sequelize'][_0x8d97('0x35')](_0x3f4464[_0x8d97('0x89')](),{'type':dbH[_0x8d97('0x88')][_0x8d97('0x8a')]['SELECT']});}})[_0x8d97('0x26')](function(){return{'sql':_0x9452b1[_0x8d97('0x89')]()};})[_0x8d97('0x26')](respondWithResult(_0x1a9fc0,null))[_0x8d97('0x49')](handleError(_0x1a9fc0,null));};
\ No newline at end of file
+var _0xe34e=['../../config/utils','../../config/environment','../../mysqldb','dbH','sendStatus','status','json','offset','limit','undefined','set','Content-Range','apply','reject','save','destroy','CustomReports','UserProfileResource','end','error','stack','name','send','map','AnalyticCustomReport','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','options','then','count','include','findAll','rows','show','params','rawAttributes','includeAll','merge','find','catch','create','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Reports','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','preview','join','left_join','right_join','cross_join','SUM(%s)','COUNT(%s)','COUNT(DISTINCT\x20%s)','MAX(%s)','MIN(%s)','AVG(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','SEC_TO_TIME(%s)','DATE(%s)','HOUR(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)','IS\x20NULL','IS\x20NOT\x20NULL','IS\x20EMPTY','rules','operator','group','field','value','getFields','Sequelize','ValidationErrorItem','AnalyticMetric','select','table','MetricId','metric','function','replace','format','orderBy','alias','joins','parse','includes','parentKey','foreignTable','foreignKey','conditions','clone','debug','Limited\x20Query:','toString','sequelize','QueryTypes','SELECT','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','IS\x20NOT\x20EMPTY','condition','Please\x20insert\x20at\x20least\x20one\x20field','keyBy','from','groupBy','%s.%s\x20=\x20%s.%s','output','web','fullPath','%s-%s.%s','randomstring','AnalyticExtractedReport','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','info','Run\x20Query:','child_process','fork','../../components/export/','savename','countTable','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','api'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0xe34e,0x132));var _0xee34=function(_0x37a6f6,_0x5200bb){_0x37a6f6=_0x37a6f6-0x0;var _0x34a7d5=_0xe34e[_0x37a6f6];return _0x34a7d5;};'use strict';var emlformat=require(_0xee34('0x0'));var rimraf=require(_0xee34('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xee34('0x2'));var rp=require(_0xee34('0x3'));var moment=require(_0xee34('0x4'));var BPromise=require(_0xee34('0x5'));var Mustache=require(_0xee34('0x6'));var util=require(_0xee34('0x7'));var path=require(_0xee34('0x8'));var sox=require(_0xee34('0x9'));var csv=require('to-csv');var ejs=require(_0xee34('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xee34('0xb'));var squel=require(_0xee34('0xc'));var crypto=require(_0xee34('0xd'));var jsforce=require(_0xee34('0xe'));var deskjs=require(_0xee34('0xf'));var toCsv=require(_0xee34('0x10'));var querystring=require(_0xee34('0x11'));var Papa=require('papaparse');var Redis=require(_0xee34('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xee34('0x13'));var as=require(_0xee34('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xee34('0x15'));var utils=require(_0xee34('0x16'));var config=require(_0xee34('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xee34('0x18'))['db'];var dbH=require(_0xee34('0x18'))[_0xee34('0x19')];function respondWithStatusCode(_0x51a3e3,_0x4c1ba8){_0x4c1ba8=_0x4c1ba8||0xcc;return function(_0x2546a0){if(_0x2546a0){return _0x51a3e3[_0xee34('0x1a')](_0x4c1ba8);}return _0x51a3e3[_0xee34('0x1b')](_0x4c1ba8)['end']();};}function respondWithResult(_0xaa7046,_0x57fae4){_0x57fae4=_0x57fae4||0xc8;return function(_0x371c45){if(_0x371c45){return _0xaa7046[_0xee34('0x1b')](_0x57fae4)[_0xee34('0x1c')](_0x371c45);}};}function respondWithFilteredResult(_0x57a0b2,_0x2da852){return function(_0x2c1f19){if(_0x2c1f19){var _0x3455a4=typeof _0x2da852[_0xee34('0x1d')]==='undefined'&&typeof _0x2da852[_0xee34('0x1e')]===_0xee34('0x1f');var _0x1f5264=_0x2c1f19['count'];var _0x3a7420=_0x3455a4?0x0:_0x2da852[_0xee34('0x1d')];var _0xfdb0c1=_0x3455a4?_0x2c1f19['count']:_0x2da852['offset']+_0x2da852[_0xee34('0x1e')];var _0x32289b;if(_0xfdb0c1>=_0x1f5264){_0xfdb0c1=_0x1f5264;_0x32289b=0xc8;}else{_0x32289b=0xce;}_0x57a0b2[_0xee34('0x1b')](_0x32289b);return _0x57a0b2[_0xee34('0x20')](_0xee34('0x21'),_0x3a7420+'-'+_0xfdb0c1+'/'+_0x1f5264)[_0xee34('0x1c')](_0x2c1f19);}return null;};}function patchUpdates(_0xd6cfe9){return function(_0x300cd7){try{jsonpatch[_0xee34('0x22')](_0x300cd7,_0xd6cfe9,!![]);}catch(_0x520d9a){return BPromise[_0xee34('0x23')](_0x520d9a);}return _0x300cd7[_0xee34('0x24')]();};}function saveUpdates(_0x1553e0,_0x36e73b){return function(_0x52d004){if(_0x52d004){return _0x52d004['update'](_0x1553e0)['then'](function(_0x24b072){return _0x24b072;});}return null;};}function removeEntity(_0x13cd62,_0x33ddfc){return function(_0x5c55c7){if(_0x5c55c7){return _0x5c55c7[_0xee34('0x25')]()['then'](function(){var _0x58fa31=_0x5c55c7['get']({'plain':!![]});var _0x337ddb=_0xee34('0x26');return db[_0xee34('0x27')]['destroy']({'where':{'type':_0x337ddb,'resourceId':_0x58fa31['id']}})['then'](function(){return _0x5c55c7;});})['then'](function(){_0x13cd62[_0xee34('0x1b')](0xcc)[_0xee34('0x28')]();});}};}function handleEntityNotFound(_0x323d66,_0x2d6280){return function(_0x3637db){if(!_0x3637db){_0x323d66['sendStatus'](0x194);}return _0x3637db;};}function handleError(_0x30d822,_0xdead50){_0xdead50=_0xdead50||0x1f4;return function(_0x35fc50){logger[_0xee34('0x29')](_0x35fc50[_0xee34('0x2a')]);if(_0x35fc50[_0xee34('0x2b')]){delete _0x35fc50[_0xee34('0x2b')];}_0x30d822[_0xee34('0x1b')](_0xdead50)[_0xee34('0x2c')](_0x35fc50);};}exports['index']=function(_0x53b4cd,_0x4d26cd){var _0x5c2bf9={},_0xf6839d={},_0x1aa647={'count':0x0,'rows':[]};var _0x3e45c0=_[_0xee34('0x2d')](db[_0xee34('0x2e')]['rawAttributes'],function(_0x3cf998){return{'name':_0x3cf998['fieldName'],'type':_0x3cf998[_0xee34('0x2f')]['key']};});_0xf6839d[_0xee34('0x30')]=_[_0xee34('0x2d')](_0x3e45c0,_0xee34('0x2b'));_0xf6839d[_0xee34('0x31')]=_[_0xee34('0x32')](_0x53b4cd[_0xee34('0x31')]);_0xf6839d[_0xee34('0x33')]=_[_0xee34('0x34')](_0xf6839d[_0xee34('0x30')],_0xf6839d[_0xee34('0x31')]);_0x5c2bf9[_0xee34('0x35')]=_[_0xee34('0x34')](_0xf6839d['model'],qs[_0xee34('0x36')](_0x53b4cd[_0xee34('0x31')]['fields']));_0x5c2bf9[_0xee34('0x35')]=_0x5c2bf9[_0xee34('0x35')][_0xee34('0x37')]?_0x5c2bf9[_0xee34('0x35')]:_0xf6839d[_0xee34('0x30')];if(!_0x53b4cd['query'][_0xee34('0x38')]('nolimit')){_0x5c2bf9[_0xee34('0x1e')]=qs[_0xee34('0x1e')](_0x53b4cd[_0xee34('0x31')][_0xee34('0x1e')]);_0x5c2bf9['offset']=qs['offset'](_0x53b4cd[_0xee34('0x31')][_0xee34('0x1d')]);}_0x5c2bf9[_0xee34('0x39')]=qs[_0xee34('0x3a')](_0x53b4cd[_0xee34('0x31')][_0xee34('0x3a')]);_0x5c2bf9[_0xee34('0x3b')]=qs[_0xee34('0x33')](_[_0xee34('0x3c')](_0x53b4cd[_0xee34('0x31')],_0xf6839d[_0xee34('0x33')]),_0x3e45c0);if(_0x53b4cd[_0xee34('0x31')][_0xee34('0x3d')]){_0x5c2bf9['where']=_['merge'](_0x5c2bf9[_0xee34('0x3b')],{'$or':_[_0xee34('0x2d')](_0x3e45c0,function(_0x2409ad){if(_0x2409ad[_0xee34('0x2f')]!=='VIRTUAL'){var _0x814539={};_0x814539[_0x2409ad[_0xee34('0x2b')]]={'$like':'%'+_0x53b4cd['query']['filter']+'%'};return _0x814539;}})});}_0x5c2bf9=_['merge']({},_0x5c2bf9,_0x53b4cd[_0xee34('0x3e')]);var _0x23be51={'where':_0x5c2bf9[_0xee34('0x3b')]};return db[_0xee34('0x2e')]['count'](_0x23be51)[_0xee34('0x3f')](function(_0x15605c){_0x1aa647[_0xee34('0x40')]=_0x15605c;if(_0x53b4cd[_0xee34('0x31')]['includeAll']){_0x5c2bf9[_0xee34('0x41')]=[{'all':!![]}];}return db[_0xee34('0x2e')][_0xee34('0x42')](_0x5c2bf9);})['then'](function(_0x40d1d3){_0x1aa647[_0xee34('0x43')]=_0x40d1d3;return _0x1aa647;})[_0xee34('0x3f')](respondWithFilteredResult(_0x4d26cd,_0x5c2bf9))['catch'](handleError(_0x4d26cd,null));};exports[_0xee34('0x44')]=function(_0x934ddd,_0x1ddd98){var _0x56cea6={'raw':![],'where':{'id':_0x934ddd[_0xee34('0x45')]['id']}},_0x531f6a={};_0x531f6a['model']=_[_0xee34('0x32')](db[_0xee34('0x2e')][_0xee34('0x46')]);_0x531f6a[_0xee34('0x31')]=_[_0xee34('0x32')](_0x934ddd[_0xee34('0x31')]);_0x531f6a[_0xee34('0x33')]=_[_0xee34('0x34')](_0x531f6a['model'],_0x531f6a['query']);_0x56cea6['attributes']=_[_0xee34('0x34')](_0x531f6a[_0xee34('0x30')],qs[_0xee34('0x36')](_0x934ddd['query']['fields']));_0x56cea6['attributes']=_0x56cea6[_0xee34('0x35')][_0xee34('0x37')]?_0x56cea6['attributes']:_0x531f6a[_0xee34('0x30')];if(_0x934ddd[_0xee34('0x31')][_0xee34('0x47')]){_0x56cea6[_0xee34('0x41')]=[{'all':!![]}];}_0x56cea6=_[_0xee34('0x48')]({},_0x56cea6,_0x934ddd[_0xee34('0x3e')]);return db[_0xee34('0x2e')][_0xee34('0x49')](_0x56cea6)[_0xee34('0x3f')](handleEntityNotFound(_0x1ddd98,null))[_0xee34('0x3f')](respondWithResult(_0x1ddd98,null))[_0xee34('0x4a')](handleError(_0x1ddd98,null));};exports[_0xee34('0x4b')]=function(_0x524e33,_0x327fbd){return db[_0xee34('0x2e')]['create'](_0x524e33['body'],{})[_0xee34('0x3f')](function(_0x3ba93d){var _0x53ecec=_0x524e33[_0xee34('0x4c')][_0xee34('0x4d')]({'plain':!![]});if(!_0x53ecec)throw new Error(_0xee34('0x4e'));if(_0x53ecec[_0xee34('0x4f')]===_0xee34('0x4c')){var _0x2b8890=_0x3ba93d[_0xee34('0x4d')]({'plain':!![]});var _0x2d6d52=_0xee34('0x50');return db[_0xee34('0x51')]['find']({'where':{'name':_0x2d6d52,'userProfileId':_0x53ecec[_0xee34('0x52')]},'raw':!![]})[_0xee34('0x3f')](function(_0x3873d5){if(_0x3873d5&&_0x3873d5[_0xee34('0x53')]===0x0){return db[_0xee34('0x27')][_0xee34('0x4b')]({'name':_0x2b8890[_0xee34('0x2b')],'resourceId':_0x2b8890['id'],'type':_0xee34('0x26'),'sectionId':_0x3873d5['id']},{})[_0xee34('0x3f')](function(){return _0x3ba93d;});}else{return _0x3ba93d;}})[_0xee34('0x4a')](function(_0x406887){logger[_0xee34('0x29')](_0xee34('0x54'),_0x406887);throw _0x406887;});}return _0x3ba93d;})['then'](respondWithResult(_0x327fbd,0xc9))[_0xee34('0x4a')](handleError(_0x327fbd,null));};exports['update']=function(_0x444f6e,_0x286a60){if(_0x444f6e[_0xee34('0x55')]['id']){delete _0x444f6e[_0xee34('0x55')]['id'];}return db[_0xee34('0x2e')]['find']({'where':{'id':_0x444f6e['params']['id']}})[_0xee34('0x3f')](handleEntityNotFound(_0x286a60,null))['then'](saveUpdates(_0x444f6e['body'],null))[_0xee34('0x3f')](respondWithResult(_0x286a60,null))[_0xee34('0x4a')](handleError(_0x286a60,null));};exports['destroy']=function(_0x47afd1,_0x31e138){return db[_0xee34('0x2e')][_0xee34('0x49')]({'where':{'id':_0x47afd1[_0xee34('0x45')]['id']}})[_0xee34('0x3f')](handleEntityNotFound(_0x31e138,null))['then'](removeEntity(_0x31e138,null))[_0xee34('0x4a')](handleError(_0x31e138,null));};exports[_0xee34('0x56')]=function(_0x590bb4,_0x4179ce){var _0x18ab82=0xa;var _0x1578aa=[_0xee34('0x57'),_0xee34('0x58'),_0xee34('0x59'),_0xee34('0x5a')];var _0x27459b={'SUM':_0xee34('0x5b'),'COUNT':_0xee34('0x5c'),'COUNT DISTINCT':_0xee34('0x5d'),'MAX':_0xee34('0x5e'),'MIN':_0xee34('0x5f'),'AVG':_0xee34('0x60'),'GROUP_CONCAT':_0xee34('0x61'),'GROUP_CONCAT ASC':_0xee34('0x62'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x3249fb={'SEC_TO_TIME':_0xee34('0x63'),'DATE':_0xee34('0x64'),'HOUR':_0xee34('0x65'),'ROUND':_0xee34('0x66'),'UNIX_TIMESTAMP':_0xee34('0x67')};var _0x42d842=function(_0x3349a8){return!_['includes']([_0xee34('0x68'),_0xee34('0x69'),_0xee34('0x6a'),'IS\x20NOT\x20EMPTY'],_0x3349a8);};var _0x4b41c1=function(_0x2a1467){if(!_0x2a1467||!_0x2a1467[_0xee34('0x6b')][_0xee34('0x37')]){return'';}for(var _0x5d5793='(',_0x274c00=0x0;_0x274c00<_0x2a1467[_0xee34('0x6b')][_0xee34('0x37')];_0x274c00+=0x1){_0x274c00>0x0&&(_0x5d5793+='\x20'+_0x2a1467[_0xee34('0x6c')]+'\x20');_0x5d5793+=_0x2a1467[_0xee34('0x6b')][_0x274c00][_0xee34('0x6d')]?_0x4b41c1(_0x2a1467[_0xee34('0x6b')][_0x274c00][_0xee34('0x6d')]):_0x2a1467[_0xee34('0x6b')][_0x274c00][_0xee34('0x6e')]+'\x20'+_0x2a1467[_0xee34('0x6b')][_0x274c00]['condition']+(_0x42d842(_0x2a1467['rules'][_0x274c00]['condition'])?'\x20'+_0x2a1467[_0xee34('0x6b')][_0x274c00][_0xee34('0x6f')]:'');}return _0x5d5793+')';};var _0x137f1d={'where':{'id':_0x590bb4[_0xee34('0x45')]['id']}},_0x1ceee1,_0x9de578,_0x5c6083,_0x88c5bd,_0x218bc5;_0x137f1d=_[_0xee34('0x48')]({},_0x137f1d,_0x590bb4['options']);return db[_0xee34('0x2e')][_0xee34('0x49')](_0x137f1d)[_0xee34('0x3f')](function(_0x3fd789){if(_0x3fd789){_0x1ceee1=_0x3fd789;return _0x3fd789[_0xee34('0x70')]();}return null;})[_0xee34('0x3f')](function(_0x1a4ed3){if(_0x1a4ed3){if(!_0x1a4ed3[_0xee34('0x37')]){throw new db[(_0xee34('0x71'))][(_0xee34('0x72'))]('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x9de578=_0x1a4ed3;return db[_0xee34('0x73')][_0xee34('0x42')]({'raw':!![]});}return null;})[_0xee34('0x3f')](function(_0x3d3f58){if(_0x3d3f58){_0x5c6083=_['keyBy'](_0x3d3f58,'id');var _0x3f763f;var _0x2fb2a0=squel[_0xee34('0x74')]();_0x2fb2a0['from'](_0x1ceee1[_0xee34('0x75')]);for(var _0x3946c7=0x0;_0x3946c7<_0x9de578['length'];_0x3946c7+=0x1){_0x3f763f=_0x9de578[_0x3946c7]['MetricId']?_0x5c6083[_0x9de578[_0x3946c7][_0xee34('0x76')]][_0xee34('0x77')]:_0x9de578[_0x3946c7][_0xee34('0x6e')];_0x3f763f=_0x9de578[_0x3946c7][_0xee34('0x78')]?_[_0xee34('0x79')](_0x27459b[_0x9de578[_0x3946c7]['function']],'%s',_0x3f763f):_0x3f763f;_0x3f763f=_0x9de578[_0x3946c7][_0xee34('0x7a')]?_[_0xee34('0x79')](_0x3249fb[_0x9de578[_0x3946c7][_0xee34('0x7a')]],'%s',_0x3f763f):_0x3f763f;if(_0x9de578[_0x3946c7]['groupBy']){_0x2fb2a0[_0xee34('0x6d')](_0x3f763f);}_0x9de578[_0x3946c7]['orderBy']&&_0x2fb2a0[_0xee34('0x39')](_0x3f763f,_0x9de578[_0x3946c7][_0xee34('0x7b')]==='DESC'?![]:!![]);_0x2fb2a0[_0xee34('0x6e')](_0x3f763f,_0x9de578[_0x3946c7][_0xee34('0x7c')]||_0x3f763f);}if(_0x1ceee1[_0xee34('0x7d')]){_0x1ceee1[_0xee34('0x7d')]=JSON[_0xee34('0x7e')](_0x1ceee1[_0xee34('0x7d')]);for(var _0x2138cd=0x0;_0x2138cd<_0x1ceee1[_0xee34('0x7d')][_0xee34('0x37')];_0x2138cd+=0x1){if(_0x1ceee1[_0xee34('0x7d')][_0x2138cd][_0xee34('0x2f')]&&_[_0xee34('0x7f')](_0x1578aa,_0x1ceee1[_0xee34('0x7d')][_0x2138cd][_0xee34('0x2f')])&&_0x1ceee1[_0xee34('0x7d')][_0x2138cd][_0xee34('0x80')]&&_0x1ceee1[_0xee34('0x7d')][_0x2138cd][_0xee34('0x81')]&&_0x1ceee1[_0xee34('0x7d')][_0x2138cd]['foreignKey']){_0x2fb2a0[_0x1ceee1[_0xee34('0x7d')][_0x2138cd][_0xee34('0x2f')]](_0x1ceee1[_0xee34('0x7d')][_0x2138cd][_0xee34('0x81')],null,util[_0xee34('0x7a')]('%s.%s\x20=\x20%s.%s',_0x1ceee1['table'],_0x1ceee1[_0xee34('0x7d')][_0x2138cd][_0xee34('0x80')],_0x1ceee1[_0xee34('0x7d')][_0x2138cd][_0xee34('0x81')],_0x1ceee1['joins'][_0x2138cd][_0xee34('0x82')]));}}}if(_0x1ceee1[_0xee34('0x83')]){_0x1ceee1[_0xee34('0x83')]=JSON['parse'](_0x1ceee1[_0xee34('0x83')]);_0x2fb2a0[_0xee34('0x3b')](_0x4b41c1(_0x1ceee1[_0xee34('0x83')][_0xee34('0x6d')]));}_0x218bc5=_0x2fb2a0[_0xee34('0x84')]();_0x2fb2a0[_0xee34('0x1e')](_0x18ab82);_0x2fb2a0[_0xee34('0x1d')](0x0);logger[_0xee34('0x85')](_0xee34('0x86'),_0x2fb2a0[_0xee34('0x87')]());return dbH[_0xee34('0x88')][_0xee34('0x31')](_0x2fb2a0['toString'](),{'type':dbH[_0xee34('0x88')][_0xee34('0x89')][_0xee34('0x8a')]});}})[_0xee34('0x3f')](respondWithResult(_0x4179ce,null))['catch'](handleError(_0x4179ce,null));};function runReport(_0x5b16ba,_0x252567,_0x5d4b99){var _0x360a90=_0x252567[_0xee34('0x2b')];var _0x77e2fa=0xa;var _0x4ae94b=[_0xee34('0x57'),_0xee34('0x58'),_0xee34('0x59'),'cross_join'];var _0x24ac44={'SUM':'SUM(%s)','COUNT':_0xee34('0x5c'),'COUNT DISTINCT':_0xee34('0x5d'),'MAX':_0xee34('0x5e'),'MIN':_0xee34('0x5f'),'AVG':_0xee34('0x60'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0xee34('0x62'),'GROUP_CONCAT DESC':_0xee34('0x8b')};var _0x26d2dc={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0xee34('0x64'),'HOUR':_0xee34('0x65'),'ROUND':_0xee34('0x66'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x1c3b13=function(_0x54a0ec){return!_['includes'](['IS\x20NULL','IS\x20NOT\x20NULL',_0xee34('0x6a'),_0xee34('0x8c')],_0x54a0ec);};var _0xacddb5=function(_0x3dce68){if(!_0x3dce68||!_0x3dce68[_0xee34('0x6b')][_0xee34('0x37')]){return'';}for(var _0x4f3494='(',_0x3d45c0=0x0;_0x3d45c0<_0x3dce68['rules']['length'];_0x3d45c0+=0x1){_0x3d45c0>0x0&&(_0x4f3494+='\x20'+_0x3dce68[_0xee34('0x6c')]+'\x20');_0x4f3494+=_0x3dce68[_0xee34('0x6b')][_0x3d45c0][_0xee34('0x6d')]?_0xacddb5(_0x3dce68['rules'][_0x3d45c0][_0xee34('0x6d')]):_0x3dce68[_0xee34('0x6b')][_0x3d45c0][_0xee34('0x6e')]+'\x20'+_0x3dce68[_0xee34('0x6b')][_0x3d45c0][_0xee34('0x8d')]+(_0x1c3b13(_0x3dce68[_0xee34('0x6b')][_0x3d45c0][_0xee34('0x8d')])?'\x20'+_0x3dce68[_0xee34('0x6b')][_0x3d45c0][_0xee34('0x6f')]:'');}return _0x4f3494+')';};var _0x38ed06={'where':{'id':_0x5b16ba['id']}},_0x3d3071,_0x137dd6,_0x4c403d,_0x4926cf,_0x30be50;_0x38ed06=_['merge']({},_0x38ed06,_0x5d4b99);return db[_0xee34('0x2e')][_0xee34('0x49')](_0x38ed06)['then'](function(_0x1e1de9){if(_0x1e1de9){_0x3d3071=_0x1e1de9;return _0x1e1de9[_0xee34('0x70')]();}return null;})[_0xee34('0x3f')](function(_0x1be5c7){if(_0x1be5c7){if(!_0x1be5c7[_0xee34('0x37')]){throw new db[(_0xee34('0x71'))][(_0xee34('0x72'))](_0xee34('0x8e'),0x193);}_0x137dd6=_0x1be5c7;return db[_0xee34('0x73')][_0xee34('0x42')]({'raw':!![]});}return null;})[_0xee34('0x3f')](function(_0x3db186){if(_0x3db186){_0x4c403d=_[_0xee34('0x8f')](_0x3db186,'id');var _0x37d25a;var _0x4c22fa=squel[_0xee34('0x74')]();_0x4c22fa[_0xee34('0x90')](_0x3d3071['table']);for(var _0x2c4e0d=0x0;_0x2c4e0d<_0x137dd6['length'];_0x2c4e0d+=0x1){_0x37d25a=_0x137dd6[_0x2c4e0d][_0xee34('0x76')]?_0x4c403d[_0x137dd6[_0x2c4e0d]['MetricId']]['metric']:_0x137dd6[_0x2c4e0d][_0xee34('0x6e')];_0x37d25a=_0x137dd6[_0x2c4e0d][_0xee34('0x78')]?_[_0xee34('0x79')](_0x24ac44[_0x137dd6[_0x2c4e0d][_0xee34('0x78')]],'%s',_0x37d25a):_0x37d25a;_0x37d25a=_0x137dd6[_0x2c4e0d]['format']?_[_0xee34('0x79')](_0x26d2dc[_0x137dd6[_0x2c4e0d]['format']],'%s',_0x37d25a):_0x37d25a;if(_0x137dd6[_0x2c4e0d][_0xee34('0x91')]){_0x4c22fa[_0xee34('0x6d')](_0x37d25a);}_0x137dd6[_0x2c4e0d][_0xee34('0x7b')]&&_0x4c22fa[_0xee34('0x39')](_0x37d25a,_0x137dd6[_0x2c4e0d]['orderBy']==='DESC'?![]:!![]);_0x4c22fa[_0xee34('0x6e')](_0x37d25a,_0x137dd6[_0x2c4e0d][_0xee34('0x7c')]||_0x37d25a);}if(_0x3d3071[_0xee34('0x7d')]){_0x3d3071[_0xee34('0x7d')]=JSON[_0xee34('0x7e')](_0x3d3071['joins']);for(var _0x366b6d=0x0;_0x366b6d<_0x3d3071['joins'][_0xee34('0x37')];_0x366b6d+=0x1){if(_0x3d3071['joins'][_0x366b6d][_0xee34('0x2f')]&&_['includes'](_0x4ae94b,_0x3d3071['joins'][_0x366b6d][_0xee34('0x2f')])&&_0x3d3071['joins'][_0x366b6d]['parentKey']&&_0x3d3071[_0xee34('0x7d')][_0x366b6d][_0xee34('0x81')]&&_0x3d3071[_0xee34('0x7d')][_0x366b6d][_0xee34('0x82')]){_0x4c22fa[_0x3d3071[_0xee34('0x7d')][_0x366b6d][_0xee34('0x2f')]](_0x3d3071[_0xee34('0x7d')][_0x366b6d]['foreignTable'],null,util[_0xee34('0x7a')](_0xee34('0x92'),_0x3d3071[_0xee34('0x75')],_0x3d3071['joins'][_0x366b6d][_0xee34('0x80')],_0x3d3071['joins'][_0x366b6d][_0xee34('0x81')],_0x3d3071[_0xee34('0x7d')][_0x366b6d]['foreignKey']));}}}if(_0x3d3071[_0xee34('0x83')]){_0x3d3071[_0xee34('0x83')]=JSON[_0xee34('0x7e')](_0x3d3071[_0xee34('0x83')]);_0x4c22fa[_0xee34('0x3b')](_0xacddb5(_0x3d3071[_0xee34('0x83')][_0xee34('0x6d')]));}_0x30be50=_0x4c22fa[_0xee34('0x84')]();_0x4c22fa[_0xee34('0x1e')](_0x77e2fa);_0x4c22fa[_0xee34('0x1d')](0x0);return;}})['then'](function(){if(_0x252567[_0xee34('0x93')]===_0xee34('0x94')){return null;}var _0x3c5580=_['merge'](_0x252567,{'name':_0x252567[_0xee34('0x95')]||_0x252567[_0xee34('0x2b')]||_0x3d3071[_0xee34('0x2b')],'basename':_0x360a90,'savename':util[_0xee34('0x7a')](_0xee34('0x96'),_0x252567[_0xee34('0x2b')]||_0x3d3071[_0xee34('0x2b')],require(_0xee34('0x97'))['generate'](0x4),_0x252567[_0xee34('0x93')]||'csv'),'reportId':_0x3d3071['id'],'reportType':'custom'});return db[_0xee34('0x98')]['create'](_0x3c5580,{'raw':!![]});})['then'](function(_0x50ad7d){if(_0x3d3071[_0xee34('0x75')]==='cdr'){_0x30be50[_0xee34('0x3b')](_0x3d3071[_0xee34('0x75')]+_0xee34('0x99'),_0x252567[_0xee34('0x9a')],_0x252567[_0xee34('0x9b')]);}else{_0x30be50[_0xee34('0x3b')](_0x3d3071[_0xee34('0x75')]+_0xee34('0x9c'),_0x252567[_0xee34('0x9a')],_0x252567[_0xee34('0x9b')]);}if(_0x50ad7d){logger[_0xee34('0x9d')](_0xee34('0x9e'),_0x30be50[_0xee34('0x87')]());require(_0xee34('0x9f'))[_0xee34('0xa0')](path[_0xee34('0x57')](__dirname,_0xee34('0xa1'),_0x50ad7d[_0xee34('0x93')]),[_0x50ad7d['id'],_0x30be50[_0xee34('0x87')](),path['join'](__dirname,'../../files/reports',_0x50ad7d[_0xee34('0xa2')]),_0x360a90]);return _0x50ad7d;}else{var _0x5e8a02=squel['select']();_0x5e8a02[_0xee34('0x90')]('('+_0x30be50[_0xee34('0x87')]()+')',_0xee34('0xa3'));_0x5e8a02[_0xee34('0x6e')]('COUNT(*)',_0xee34('0x40'));_0x30be50[_0xee34('0x1e')](_0x252567[_0xee34('0x1e')]||_0x77e2fa);_0x30be50[_0xee34('0x1d')](_0x252567['offset']||0x0);return dbH[_0xee34('0x88')][_0xee34('0x31')](_0x5e8a02['toString'](),{'type':dbH[_0xee34('0x88')][_0xee34('0x89')][_0xee34('0x8a')]})[_0xee34('0x3f')](function(_0x59818d){if(!_0x59818d[_0xee34('0x37')]){_0x4926cf=0x0;}else{_0x4926cf=_0x59818d[0x0]['count']||0x0;}return dbH[_0xee34('0x88')][_0xee34('0x31')](_0x30be50[_0xee34('0x87')](),{'type':dbH[_0xee34('0x88')][_0xee34('0x89')][_0xee34('0x8a')]});})[_0xee34('0x3f')](function(_0x30a00e){return{'rows':_0x30a00e||[],'count':_0x4926cf};});}});}exports['run']=function(_0x76ef7f,_0x357dd4){return runReport(_0x76ef7f[_0xee34('0x45')],_0x76ef7f[_0xee34('0x31')],_0x76ef7f[_0xee34('0x3e')])['then'](respondWithResult(_0x357dd4,null))['catch'](handleError(_0x357dd4,null));};exports['runReport']=runReport;exports[_0xee34('0x31')]=function(_0x3c320d,_0x3d4f6c){var _0x2d1a77=0xa;var _0x36470d=[_0xee34('0x57'),_0xee34('0x58'),_0xee34('0x59'),_0xee34('0x5a')];var _0x241a30={'SUM':_0xee34('0x5b'),'COUNT':_0xee34('0x5c'),'COUNT DISTINCT':_0xee34('0x5d'),'MAX':_0xee34('0x5e'),'MIN':_0xee34('0x5f'),'AVG':_0xee34('0x60'),'GROUP_CONCAT':_0xee34('0x61'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x2f6653={'SEC_TO_TIME':_0xee34('0x63'),'DATE':_0xee34('0x64'),'HOUR':'HOUR(%s)','ROUND':'ROUND(%s)','UNIX_TIMESTAMP':_0xee34('0x67')};var _0x4cd29a=function(_0x58bf38){return!_['includes']([_0xee34('0x68'),_0xee34('0x69'),_0xee34('0x6a'),_0xee34('0x8c')],_0x58bf38);};var _0x567600=function(_0x185712){if(!_0x185712||!_0x185712[_0xee34('0x6b')][_0xee34('0x37')]){return'';}for(var _0x56a604='(',_0x296320=0x0;_0x296320<_0x185712['rules']['length'];_0x296320+=0x1){_0x296320>0x0&&(_0x56a604+='\x20'+_0x185712[_0xee34('0x6c')]+'\x20');_0x56a604+=_0x185712['rules'][_0x296320][_0xee34('0x6d')]?_0x567600(_0x185712[_0xee34('0x6b')][_0x296320][_0xee34('0x6d')]):_0x185712['rules'][_0x296320][_0xee34('0x6e')]+'\x20'+_0x185712[_0xee34('0x6b')][_0x296320][_0xee34('0x8d')]+(_0x4cd29a(_0x185712[_0xee34('0x6b')][_0x296320][_0xee34('0x8d')])?'\x20'+_0x185712['rules'][_0x296320][_0xee34('0x6f')]:'');}return _0x56a604+')';};var _0x198c29={'where':{'id':_0x3c320d[_0xee34('0x45')]['id']}},_0x82a74b,_0xe74ce,_0x1e3c64,_0x5f5533,_0xddf112;_0x198c29=_[_0xee34('0x48')]({},_0x198c29,_0x3c320d[_0xee34('0x3e')]);return db[_0xee34('0x2e')][_0xee34('0x49')](_0x198c29)[_0xee34('0x3f')](function(_0x3205cf){if(_0x3205cf){_0x82a74b=_0x3205cf;return _0x3205cf[_0xee34('0x70')]();}return null;})[_0xee34('0x3f')](function(_0x5e90a5){if(_0x5e90a5){if(!_0x5e90a5['length']){throw new db['Sequelize'][(_0xee34('0x72'))](_0xee34('0x8e'),0x193);}_0xe74ce=_0x5e90a5;return db[_0xee34('0x73')][_0xee34('0x42')]({'raw':!![]});}return null;})['then'](function(_0x3aefe3){if(_0x3aefe3){_0x1e3c64=_[_0xee34('0x8f')](_0x3aefe3,'id');var _0x5d7818;var _0x5b4390=squel['select']();_0x5b4390[_0xee34('0x90')](_0x82a74b[_0xee34('0x75')]);for(var _0x38b8f0=0x0;_0x38b8f0<_0xe74ce['length'];_0x38b8f0+=0x1){_0x5d7818=_0xe74ce[_0x38b8f0][_0xee34('0x76')]?_0x1e3c64[_0xe74ce[_0x38b8f0]['MetricId']][_0xee34('0x77')]:_0xe74ce[_0x38b8f0][_0xee34('0x6e')];_0x5d7818=_0xe74ce[_0x38b8f0][_0xee34('0x78')]?_[_0xee34('0x79')](_0x241a30[_0xe74ce[_0x38b8f0][_0xee34('0x78')]],'%s',_0x5d7818):_0x5d7818;_0x5d7818=_0xe74ce[_0x38b8f0][_0xee34('0x7a')]?_['replace'](_0x2f6653[_0xe74ce[_0x38b8f0]['format']],'%s',_0x5d7818):_0x5d7818;if(_0xe74ce[_0x38b8f0]['groupBy']){_0x5b4390[_0xee34('0x6d')](_0x5d7818);}_0xe74ce[_0x38b8f0][_0xee34('0x7b')]&&_0x5b4390[_0xee34('0x39')](_0x5d7818,_0xe74ce[_0x38b8f0][_0xee34('0x7b')]==='DESC'?![]:!![]);_0x5b4390['field'](_0x5d7818,_0xe74ce[_0x38b8f0]['alias']||_0x5d7818);}if(_0x82a74b[_0xee34('0x7d')]){_0x82a74b[_0xee34('0x7d')]=JSON[_0xee34('0x7e')](_0x82a74b[_0xee34('0x7d')]);for(var _0x32cf5d=0x0;_0x32cf5d<_0x82a74b[_0xee34('0x7d')][_0xee34('0x37')];_0x32cf5d+=0x1){if(_0x82a74b[_0xee34('0x7d')][_0x32cf5d][_0xee34('0x2f')]&&_[_0xee34('0x7f')](_0x36470d,_0x82a74b[_0xee34('0x7d')][_0x32cf5d][_0xee34('0x2f')])&&_0x82a74b['joins'][_0x32cf5d][_0xee34('0x80')]&&_0x82a74b[_0xee34('0x7d')][_0x32cf5d][_0xee34('0x81')]&&_0x82a74b[_0xee34('0x7d')][_0x32cf5d][_0xee34('0x82')]){_0x5b4390[_0x82a74b[_0xee34('0x7d')][_0x32cf5d][_0xee34('0x2f')]](_0x82a74b[_0xee34('0x7d')][_0x32cf5d][_0xee34('0x81')],null,util[_0xee34('0x7a')]('%s.%s\x20=\x20%s.%s',_0x82a74b[_0xee34('0x75')],_0x82a74b[_0xee34('0x7d')][_0x32cf5d][_0xee34('0x80')],_0x82a74b[_0xee34('0x7d')][_0x32cf5d][_0xee34('0x81')],_0x82a74b[_0xee34('0x7d')][_0x32cf5d][_0xee34('0x82')]));}}}if(_0x82a74b['conditions']){_0x82a74b[_0xee34('0x83')]=JSON[_0xee34('0x7e')](_0x82a74b[_0xee34('0x83')]);_0x5b4390[_0xee34('0x3b')](_0x567600(_0x82a74b[_0xee34('0x83')]['group']));}_0xddf112=_0x5b4390[_0xee34('0x84')]();_0x5b4390[_0xee34('0x1e')](_0x2d1a77);_0x5b4390[_0xee34('0x1d')](0x0);logger['debug'](_0xee34('0x86'),_0x5b4390[_0xee34('0x87')]());return dbH[_0xee34('0x88')][_0xee34('0x31')](_0x5b4390[_0xee34('0x87')](),{'type':dbH[_0xee34('0x88')][_0xee34('0x89')][_0xee34('0x8a')]});}})[_0xee34('0x3f')](function(){return{'sql':_0xddf112[_0xee34('0x87')]()};})[_0xee34('0x3f')](respondWithResult(_0x3d4f6c,null))['catch'](handleError(_0x3d4f6c,null));};
\ No newline at end of file
index 14bef16..8deb68b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab02=['lodash','util','../../config/logger','api','bluebird','path','rimraf','../../config/environment','./analyticCustomReport.attributes','exports','define','analytics_custom_reports'];(function(_0x56497c,_0x2ad77f){var _0x18f66f=function(_0x460598){while(--_0x460598){_0x56497c['push'](_0x56497c['shift']());}};_0x18f66f(++_0x2ad77f);}(_0xab02,0x12c));var _0x2ab0=function(_0xeb450f,_0x483ac6){_0xeb450f=_0xeb450f-0x0;var _0xfad79f=_0xab02[_0xeb450f];return _0xfad79f;};'use strict';var _=require(_0x2ab0('0x0'));var util=require(_0x2ab0('0x1'));var logger=require(_0x2ab0('0x2'))(_0x2ab0('0x3'));var moment=require('moment');var BPromise=require(_0x2ab0('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2ab0('0x5'));var rimraf=require(_0x2ab0('0x6'));var config=require(_0x2ab0('0x7'));var attributes=require(_0x2ab0('0x8'));module[_0x2ab0('0x9')]=function(_0xab9099,_0x3f6462){return _0xab9099[_0x2ab0('0xa')]('AnalyticCustomReport',attributes,{'tableName':_0x2ab0('0xb'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf3e2=['bluebird','path','rimraf','./analyticCustomReport.attributes','exports','AnalyticCustomReport','analytics_custom_reports','util','../../config/logger','api','moment'];(function(_0x123100,_0x87542b){var _0x24659d=function(_0x32c74a){while(--_0x32c74a){_0x123100['push'](_0x123100['shift']());}};_0x24659d(++_0x87542b);}(_0xf3e2,0x1eb));var _0x2f3e=function(_0x2cada4,_0x5007f8){_0x2cada4=_0x2cada4-0x0;var _0x9b6d2e=_0xf3e2[_0x2cada4];return _0x9b6d2e;};'use strict';var _=require('lodash');var util=require(_0x2f3e('0x0'));var logger=require(_0x2f3e('0x1'))(_0x2f3e('0x2'));var moment=require(_0x2f3e('0x3'));var BPromise=require(_0x2f3e('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2f3e('0x5'));var rimraf=require(_0x2f3e('0x6'));var config=require('../../config/environment');var attributes=require(_0x2f3e('0x7'));module[_0x2f3e('0x8')]=function(_0x460ee1,_0x340bf9){return _0x460ee1['define'](_0x2f3e('0x9'),attributes,{'tableName':_0x2f3e('0xa'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index cbc7786..97af4b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc8c=['http','request','then','info','AnalyticCustomReport,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client'];(function(_0x517763,_0x3648a2){var _0x46d6f0=function(_0x9332e9){while(--_0x9332e9){_0x517763['push'](_0x517763['shift']());}};_0x46d6f0(++_0x3648a2);}(_0xdc8c,0x6d));var _0xcdc8=function(_0x8ae2ad,_0x5dece2){_0x8ae2ad=_0x8ae2ad-0x0;var _0xf971d3=_0xdc8c[_0x8ae2ad];return _0xf971d3;};'use strict';var _=require(_0xcdc8('0x0'));var util=require(_0xcdc8('0x1'));var moment=require(_0xcdc8('0x2'));var BPromise=require(_0xcdc8('0x3'));var rs=require(_0xcdc8('0x4'));var fs=require('fs');var Redis=require(_0xcdc8('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xcdc8('0x6'));var logger=require(_0xcdc8('0x7'))(_0xcdc8('0x8'));var config=require(_0xcdc8('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xcdc8('0xa')][_0xcdc8('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x30d893,_0x559013,_0x514224){return new BPromise(function(_0xdf8c00,_0x4c4b9c){return client[_0xcdc8('0xc')](_0x30d893,_0x514224)[_0xcdc8('0xd')](function(_0x2d90a7){logger[_0xcdc8('0xe')](_0xcdc8('0xf'),_0x559013,'request\x20sent');logger[_0xcdc8('0x10')]('AnalyticCustomReport,\x20%s,\x20%s,\x20%s',_0x559013,_0xcdc8('0x11'),JSON[_0xcdc8('0x12')](_0x2d90a7));if(_0x2d90a7[_0xcdc8('0x13')]){if(_0x2d90a7[_0xcdc8('0x13')][_0xcdc8('0x14')]===0x1f4){logger[_0xcdc8('0x13')](_0xcdc8('0xf'),_0x559013,_0x2d90a7[_0xcdc8('0x13')]['message']);return _0x4c4b9c(_0x2d90a7['error'][_0xcdc8('0x15')]);}logger[_0xcdc8('0x13')]('AnalyticCustomReport,\x20%s,\x20%s',_0x559013,_0x2d90a7['error']['message']);return _0xdf8c00(_0x2d90a7[_0xcdc8('0x13')][_0xcdc8('0x15')]);}else{logger[_0xcdc8('0xe')](_0xcdc8('0xf'),_0x559013,'request\x20sent');_0xdf8c00(_0x2d90a7[_0xcdc8('0x16')]['message']);}})[_0xcdc8('0x17')](function(_0x121f2d){logger[_0xcdc8('0x13')](_0xcdc8('0xf'),_0x559013,_0x121f2d);_0x4c4b9c(_0x121f2d);});});}
\ No newline at end of file
+var _0xd95d=['info','AnalyticCustomReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticCustomReport,\x20%s,\x20%s,\x20%s','error','message','result','catch','lodash','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then'];(function(_0x327455,_0x12e7fa){var _0x38885d=function(_0x523445){while(--_0x523445){_0x327455['push'](_0x327455['shift']());}};_0x38885d(++_0x12e7fa);}(_0xd95d,0xb1));var _0xdd95=function(_0x34912b,_0x12f57d){_0x34912b=_0x34912b-0x0;var _0x54a844=_0xd95d[_0x34912b];return _0x54a844;};'use strict';var _=require(_0xdd95('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xdd95('0x1'));var fs=require('fs');var Redis=require(_0xdd95('0x2'));var db=require(_0xdd95('0x3'))['db'];var utils=require(_0xdd95('0x4'));var logger=require(_0xdd95('0x5'))(_0xdd95('0x6'));var config=require(_0xdd95('0x7'));var jayson=require(_0xdd95('0x8'));var client=jayson['client'][_0xdd95('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x425cb8,_0x18f1bc,_0x4863ef){return new BPromise(function(_0x266d25,_0x25a9d8){return client[_0xdd95('0xa')](_0x425cb8,_0x4863ef)[_0xdd95('0xb')](function(_0x56ed8c){logger[_0xdd95('0xc')](_0xdd95('0xd'),_0x18f1bc,_0xdd95('0xe'));logger[_0xdd95('0xf')](_0xdd95('0x10'),_0x18f1bc,_0xdd95('0xe'),JSON['stringify'](_0x56ed8c));if(_0x56ed8c[_0xdd95('0x11')]){if(_0x56ed8c['error']['code']===0x1f4){logger[_0xdd95('0x11')](_0xdd95('0xd'),_0x18f1bc,_0x56ed8c[_0xdd95('0x11')][_0xdd95('0x12')]);return _0x25a9d8(_0x56ed8c[_0xdd95('0x11')][_0xdd95('0x12')]);}logger[_0xdd95('0x11')](_0xdd95('0xd'),_0x18f1bc,_0x56ed8c['error']['message']);return _0x266d25(_0x56ed8c[_0xdd95('0x11')][_0xdd95('0x12')]);}else{logger[_0xdd95('0xc')]('AnalyticCustomReport,\x20%s,\x20%s',_0x18f1bc,_0xdd95('0xe'));_0x266d25(_0x56ed8c[_0xdd95('0x13')]['message']);}})[_0xdd95('0x14')](function(_0x486351){logger['error'](_0xdd95('0xd'),_0x18f1bc,_0x486351);_0x25a9d8(_0x486351);});});}
\ No newline at end of file
index b17e033..adbdd1a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d5b=['exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id','show','preview','/:id/run','run','create','delete','destroy'];(function(_0x1ac052,_0x3f8942){var _0x17dfe7=function(_0xec078b){while(--_0xec078b){_0x1ac052['push'](_0x1ac052['shift']());}};_0x17dfe7(++_0x3f8942);}(_0x6d5b,0xb5));var _0xb6d5=function(_0x3e10dc,_0x230393){_0x3e10dc=_0x3e10dc-0x0;var _0x20020c=_0x6d5b[_0x3e10dc];return _0x20020c;};'use strict';var multer=require('multer');var util=require(_0xb6d5('0x0'));var path=require(_0xb6d5('0x1'));var timeout=require(_0xb6d5('0x2'));var express=require(_0xb6d5('0x3'));var router=express[_0xb6d5('0x4')]();var fs_extra=require(_0xb6d5('0x5'));var auth=require(_0xb6d5('0x6'));var interaction=require(_0xb6d5('0x7'));var config=require(_0xb6d5('0x8'));var controller=require('./analyticCustomReport.controller');router[_0xb6d5('0x9')]('/',auth[_0xb6d5('0xa')](),controller['index']);router[_0xb6d5('0x9')](_0xb6d5('0xb'),auth[_0xb6d5('0xa')](),controller[_0xb6d5('0xc')]);router['get']('/:id/preview',auth[_0xb6d5('0xa')](),controller[_0xb6d5('0xd')]);router[_0xb6d5('0x9')](_0xb6d5('0xe'),auth[_0xb6d5('0xa')](),controller[_0xb6d5('0xf')]);router[_0xb6d5('0x9')]('/:id/query',auth['isAuthenticated'](),controller['query']);router['post']('/',auth[_0xb6d5('0xa')](),controller[_0xb6d5('0x10')]);router['put'](_0xb6d5('0xb'),auth['isAuthenticated'](),controller['update']);router[_0xb6d5('0x11')](_0xb6d5('0xb'),auth[_0xb6d5('0xa')](),controller[_0xb6d5('0x12')]);module[_0xb6d5('0x13')]=router;
\ No newline at end of file
+var _0xc85b=['../../config/environment','./analyticCustomReport.controller','get','isAuthenticated','/:id','show','/:id/preview','preview','/:id/run','post','create','put','update','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra'];(function(_0x157ecc,_0x359b87){var _0x1b42a0=function(_0x267cf9){while(--_0x267cf9){_0x157ecc['push'](_0x157ecc['shift']());}};_0x1b42a0(++_0x359b87);}(_0xc85b,0x1de));var _0xbc85=function(_0x4f5d16,_0x42a71f){_0x4f5d16=_0x4f5d16-0x0;var _0xe20635=_0xc85b[_0x4f5d16];return _0xe20635;};'use strict';var multer=require(_0xbc85('0x0'));var util=require(_0xbc85('0x1'));var path=require('path');var timeout=require(_0xbc85('0x2'));var express=require(_0xbc85('0x3'));var router=express[_0xbc85('0x4')]();var fs_extra=require(_0xbc85('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xbc85('0x6'));var controller=require(_0xbc85('0x7'));router[_0xbc85('0x8')]('/',auth[_0xbc85('0x9')](),controller['index']);router[_0xbc85('0x8')](_0xbc85('0xa'),auth[_0xbc85('0x9')](),controller[_0xbc85('0xb')]);router[_0xbc85('0x8')](_0xbc85('0xc'),auth['isAuthenticated'](),controller[_0xbc85('0xd')]);router[_0xbc85('0x8')](_0xbc85('0xe'),auth[_0xbc85('0x9')](),controller['run']);router[_0xbc85('0x8')]('/:id/query',auth[_0xbc85('0x9')](),controller['query']);router[_0xbc85('0xf')]('/',auth[_0xbc85('0x9')](),controller[_0xbc85('0x10')]);router[_0xbc85('0x11')](_0xbc85('0xa'),auth[_0xbc85('0x9')](),controller[_0xbc85('0x12')]);router[_0xbc85('0x13')](_0xbc85('0xa'),auth[_0xbc85('0x9')](),controller[_0xbc85('0x14')]);module[_0xbc85('0x15')]=router;
\ No newline at end of file
index cfcd9c2..7f998bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3eea=['STRING','TEXT','sequelize'];(function(_0x1652c9,_0x19e14d){var _0x14666e=function(_0x2567db){while(--_0x2567db){_0x1652c9['push'](_0x1652c9['shift']());}};_0x14666e(++_0x19e14d);}(_0x3eea,0x1ca));var _0xa3ee=function(_0x5c12c4,_0x3bb03e){_0x5c12c4=_0x5c12c4-0x0;var _0x185df2=_0x3eea[_0x5c12c4];return _0x185df2;};'use strict';var Sequelize=require(_0xa3ee('0x0'));module['exports']={'name':{'type':Sequelize[_0xa3ee('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0xa3ee('0x1')]},'parent':{'type':Sequelize[_0xa3ee('0x1')]},'table':{'type':Sequelize[_0xa3ee('0x1')]},'conditions':{'type':Sequelize[_0xa3ee('0x2')]},'joins':{'type':Sequelize[_0xa3ee('0x2')]}};
\ No newline at end of file
+var _0xb4c7=['STRING','TEXT','sequelize','exports'];(function(_0x5a7f64,_0x347d57){var _0x3d30f1=function(_0x4bd1d6){while(--_0x4bd1d6){_0x5a7f64['push'](_0x5a7f64['shift']());}};_0x3d30f1(++_0x347d57);}(_0xb4c7,0x1ea));var _0x7b4c=function(_0x1c5d86,_0x461f9d){_0x1c5d86=_0x1c5d86-0x0;var _0x3ab30c=_0xb4c7[_0x1c5d86];return _0x3ab30c;};'use strict';var Sequelize=require(_0x7b4c('0x0'));module[_0x7b4c('0x1')]={'name':{'type':Sequelize[_0x7b4c('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x7b4c('0x2')]},'parent':{'type':Sequelize[_0x7b4c('0x2')]},'table':{'type':Sequelize['STRING']},'conditions':{'type':Sequelize[_0x7b4c('0x3')]},'joins':{'type':Sequelize[_0x7b4c('0x3')]}};
\ No newline at end of file
index f75afb9..80ec0d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2542=['getFields','ValidationErrorItem','metric','format','DESC','output','web','fullPath','%s-%s.%s','randomstring','generate','default','AnalyticExtractedReport','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','startDate','Run\x20Query:','child_process','fork','../../components/export/','savename','countTable','COUNT(*)','sequelize','SELECT','run','IS\x20NOT\x20NULL','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','dbH','sendStatus','status','json','offset','undefined','limit','count','set','save','destroy','then','get','end','error','stack','name','send','index','map','AnalyticDefaultReport','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','findAll','rows','catch','params','rawAttributes','include','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','join','left_join','right_join','cross_join','SUM(%s)','COUNT(%s)','COUNT(DISTINCT\x20%s)','MAX(%s)','MIN(%s)','AVG(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','SEC_TO_TIME(%s)','DATE(%s)','HOUR(%s)','ROUND(%s)','includes','IS\x20NULL','IS\x20NOT\x20EMPTY','rules','group','condition','Sequelize','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','keyBy','select','from','MetricId','field','replace','function','groupBy','orderBy','alias','parse','joins','parentKey','foreignTable','foreignKey','%s.%s\x20=\x20%s.%s','table','conditions','clone','debug','Limited\x20Query:','toString','QueryTypes','UNIX_TIMESTAMP(%s)','IS\x20EMPTY','operator','value'];(function(_0x3c74d7,_0x328e0f){var _0xf2cb29=function(_0x2f8675){while(--_0x2f8675){_0x3c74d7['push'](_0x3c74d7['shift']());}};_0xf2cb29(++_0x328e0f);}(_0x2542,0x169));var _0x2254=function(_0x2bf999,_0x4645b1){_0x2bf999=_0x2bf999-0x0;var _0x4cf8f8=_0x2542[_0x2bf999];return _0x4cf8f8;};'use strict';var emlformat=require(_0x2254('0x0'));var rimraf=require(_0x2254('0x1'));var zipdir=require(_0x2254('0x2'));var jsonpatch=require(_0x2254('0x3'));var rp=require('request-promise');var moment=require(_0x2254('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x2254('0x5'));var util=require(_0x2254('0x6'));var path=require(_0x2254('0x7'));var sox=require(_0x2254('0x8'));var csv=require(_0x2254('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2254('0xa'));var _=require(_0x2254('0xb'));var squel=require(_0x2254('0xc'));var crypto=require(_0x2254('0xd'));var jsforce=require(_0x2254('0xe'));var deskjs=require(_0x2254('0xf'));var toCsv=require(_0x2254('0x9'));var querystring=require(_0x2254('0x10'));var Papa=require(_0x2254('0x11'));var Redis=require(_0x2254('0x12'));var authService=require(_0x2254('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x2254('0x14'));var hardwareService=require(_0x2254('0x15'));var logger=require(_0x2254('0x16'))(_0x2254('0x17'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x2254('0x18'));var db=require(_0x2254('0x19'))['db'];var dbH=require(_0x2254('0x19'))[_0x2254('0x1a')];function respondWithStatusCode(_0x3c326b,_0x381efe){_0x381efe=_0x381efe||0xcc;return function(_0x592a4f){if(_0x592a4f){return _0x3c326b[_0x2254('0x1b')](_0x381efe);}return _0x3c326b[_0x2254('0x1c')](_0x381efe)['end']();};}function respondWithResult(_0x2f4de,_0x1e582d){_0x1e582d=_0x1e582d||0xc8;return function(_0xfb23cb){if(_0xfb23cb){return _0x2f4de[_0x2254('0x1c')](_0x1e582d)[_0x2254('0x1d')](_0xfb23cb);}};}function respondWithFilteredResult(_0xbc5548,_0x50f137){return function(_0x18baf4){if(_0x18baf4){var _0x57247a=typeof _0x50f137[_0x2254('0x1e')]===_0x2254('0x1f')&&typeof _0x50f137[_0x2254('0x20')]===_0x2254('0x1f');var _0x1ae11e=_0x18baf4[_0x2254('0x21')];var _0x497724=_0x57247a?0x0:_0x50f137['offset'];var _0x5ec98d=_0x57247a?_0x18baf4[_0x2254('0x21')]:_0x50f137[_0x2254('0x1e')]+_0x50f137[_0x2254('0x20')];var _0x1f1163;if(_0x5ec98d>=_0x1ae11e){_0x5ec98d=_0x1ae11e;_0x1f1163=0xc8;}else{_0x1f1163=0xce;}_0xbc5548[_0x2254('0x1c')](_0x1f1163);return _0xbc5548[_0x2254('0x22')]('Content-Range',_0x497724+'-'+_0x5ec98d+'/'+_0x1ae11e)[_0x2254('0x1d')](_0x18baf4);}return null;};}function patchUpdates(_0x16148d){return function(_0x906cde){try{jsonpatch['apply'](_0x906cde,_0x16148d,!![]);}catch(_0x52fedc){return BPromise['reject'](_0x52fedc);}return _0x906cde[_0x2254('0x23')]();};}function saveUpdates(_0x559af4,_0xf88b56){return function(_0x56b91e){if(_0x56b91e){return _0x56b91e['update'](_0x559af4)['then'](function(_0x540020){return _0x540020;});}return null;};}function removeEntity(_0x5e5edb,_0x4f797d){return function(_0x1aa71f){if(_0x1aa71f){return _0x1aa71f[_0x2254('0x24')]()[_0x2254('0x25')](function(){var _0x265467=_0x1aa71f[_0x2254('0x26')]({'plain':!![]});var _0x1349c9='DefaultReports';return db['UserProfileResource'][_0x2254('0x24')]({'where':{'type':_0x1349c9,'resourceId':_0x265467['id']}})['then'](function(){return _0x1aa71f;});})[_0x2254('0x25')](function(){_0x5e5edb[_0x2254('0x1c')](0xcc)[_0x2254('0x27')]();});}};}function handleEntityNotFound(_0x3aa0bd,_0x19043b){return function(_0x482688){if(!_0x482688){_0x3aa0bd[_0x2254('0x1b')](0x194);}return _0x482688;};}function handleError(_0x2a789b,_0x21285d){_0x21285d=_0x21285d||0x1f4;return function(_0x37af8b){logger[_0x2254('0x28')](_0x37af8b[_0x2254('0x29')]);if(_0x37af8b[_0x2254('0x2a')]){delete _0x37af8b[_0x2254('0x2a')];}_0x2a789b[_0x2254('0x1c')](_0x21285d)[_0x2254('0x2b')](_0x37af8b);};}exports[_0x2254('0x2c')]=function(_0xad7774,_0x220f2a){var _0x27d30a={},_0x4577f4={},_0x1b16c8={'count':0x0,'rows':[]};var _0x2c929f=_[_0x2254('0x2d')](db[_0x2254('0x2e')]['rawAttributes'],function(_0xe29526){return{'name':_0xe29526[_0x2254('0x2f')],'type':_0xe29526[_0x2254('0x30')][_0x2254('0x31')]};});_0x4577f4[_0x2254('0x32')]=_[_0x2254('0x2d')](_0x2c929f,_0x2254('0x2a'));_0x4577f4[_0x2254('0x33')]=_[_0x2254('0x34')](_0xad7774['query']);_0x4577f4[_0x2254('0x35')]=_[_0x2254('0x36')](_0x4577f4['model'],_0x4577f4[_0x2254('0x33')]);_0x27d30a[_0x2254('0x37')]=_[_0x2254('0x36')](_0x4577f4[_0x2254('0x32')],qs['fields'](_0xad7774['query'][_0x2254('0x38')]));_0x27d30a['attributes']=_0x27d30a[_0x2254('0x37')][_0x2254('0x39')]?_0x27d30a[_0x2254('0x37')]:_0x4577f4[_0x2254('0x32')];if(!_0xad7774[_0x2254('0x33')][_0x2254('0x3a')](_0x2254('0x3b'))){_0x27d30a['limit']=qs[_0x2254('0x20')](_0xad7774[_0x2254('0x33')][_0x2254('0x20')]);_0x27d30a[_0x2254('0x1e')]=qs[_0x2254('0x1e')](_0xad7774[_0x2254('0x33')][_0x2254('0x1e')]);}_0x27d30a[_0x2254('0x3c')]=qs[_0x2254('0x3d')](_0xad7774[_0x2254('0x33')]['sort']);_0x27d30a[_0x2254('0x3e')]=qs[_0x2254('0x35')](_[_0x2254('0x3f')](_0xad7774[_0x2254('0x33')],_0x4577f4['filters']),_0x2c929f);if(_0xad7774[_0x2254('0x33')][_0x2254('0x40')]){_0x27d30a[_0x2254('0x3e')]=_[_0x2254('0x41')](_0x27d30a[_0x2254('0x3e')],{'$or':_[_0x2254('0x2d')](_0x2c929f,function(_0x423377){if(_0x423377[_0x2254('0x30')]!=='VIRTUAL'){var _0x362ad1={};_0x362ad1[_0x423377['name']]={'$like':'%'+_0xad7774[_0x2254('0x33')][_0x2254('0x40')]+'%'};return _0x362ad1;}})});}_0x27d30a=_[_0x2254('0x41')]({},_0x27d30a,_0xad7774[_0x2254('0x42')]);var _0x460bb3={'where':_0x27d30a[_0x2254('0x3e')]};return db[_0x2254('0x2e')]['count'](_0x460bb3)[_0x2254('0x25')](function(_0x2f1ff9){_0x1b16c8[_0x2254('0x21')]=_0x2f1ff9;if(_0xad7774[_0x2254('0x33')][_0x2254('0x43')]){_0x27d30a['include']=[{'all':!![]}];}return db[_0x2254('0x2e')][_0x2254('0x44')](_0x27d30a);})[_0x2254('0x25')](function(_0x135ed8){_0x1b16c8[_0x2254('0x45')]=_0x135ed8;return _0x1b16c8;})['then'](respondWithFilteredResult(_0x220f2a,_0x27d30a))[_0x2254('0x46')](handleError(_0x220f2a,null));};exports['show']=function(_0x91e091,_0x1ded9a){var _0xb4d042={'raw':!![],'where':{'id':_0x91e091[_0x2254('0x47')]['id']}},_0x31c31e={};_0x31c31e[_0x2254('0x32')]=_[_0x2254('0x34')](db[_0x2254('0x2e')][_0x2254('0x48')]);_0x31c31e[_0x2254('0x33')]=_[_0x2254('0x34')](_0x91e091[_0x2254('0x33')]);_0x31c31e[_0x2254('0x35')]=_['intersection'](_0x31c31e[_0x2254('0x32')],_0x31c31e[_0x2254('0x33')]);_0xb4d042[_0x2254('0x37')]=_['intersection'](_0x31c31e[_0x2254('0x32')],qs[_0x2254('0x38')](_0x91e091[_0x2254('0x33')][_0x2254('0x38')]));_0xb4d042[_0x2254('0x37')]=_0xb4d042[_0x2254('0x37')][_0x2254('0x39')]?_0xb4d042[_0x2254('0x37')]:_0x31c31e[_0x2254('0x32')];if(_0x91e091['query'][_0x2254('0x43')]){_0xb4d042[_0x2254('0x49')]=[{'all':!![]}];}_0xb4d042=_[_0x2254('0x41')]({},_0xb4d042,_0x91e091[_0x2254('0x42')]);return db[_0x2254('0x2e')][_0x2254('0x4a')](_0xb4d042)[_0x2254('0x25')](handleEntityNotFound(_0x1ded9a,null))[_0x2254('0x25')](respondWithResult(_0x1ded9a,null))[_0x2254('0x46')](handleError(_0x1ded9a,null));};exports[_0x2254('0x4b')]=function(_0x5b14c5,_0x36b977){return db[_0x2254('0x2e')]['create'](_0x5b14c5[_0x2254('0x4c')],{})[_0x2254('0x25')](function(_0x12e2ff){var _0x4331a9=_0x5b14c5['user'][_0x2254('0x26')]({'plain':!![]});if(!_0x4331a9)throw new Error(_0x2254('0x4d'));if(_0x4331a9['role']===_0x2254('0x4e')){var _0x3f0670=_0x12e2ff[_0x2254('0x26')]({'plain':!![]});var _0x43bb88='Reports';return db[_0x2254('0x4f')][_0x2254('0x4a')]({'where':{'name':_0x43bb88,'userProfileId':_0x4331a9[_0x2254('0x50')]},'raw':!![]})['then'](function(_0x4cc18a){if(_0x4cc18a&&_0x4cc18a[_0x2254('0x51')]===0x0){return db[_0x2254('0x52')]['create']({'name':_0x3f0670[_0x2254('0x2a')],'resourceId':_0x3f0670['id'],'type':'DefaultReports','sectionId':_0x4cc18a['id']},{})['then'](function(){return _0x12e2ff;});}else{return _0x12e2ff;}})[_0x2254('0x46')](function(_0x135962){logger[_0x2254('0x28')](_0x2254('0x53'),_0x135962);throw _0x135962;});}return _0x12e2ff;})[_0x2254('0x25')](respondWithResult(_0x36b977,0xc9))['catch'](handleError(_0x36b977,null));};exports['update']=function(_0x1bd988,_0x5e3fbc){if(_0x1bd988[_0x2254('0x4c')]['id']){delete _0x1bd988[_0x2254('0x4c')]['id'];}return db[_0x2254('0x2e')][_0x2254('0x4a')]({'where':{'id':_0x1bd988['params']['id']}})[_0x2254('0x25')](handleEntityNotFound(_0x5e3fbc,null))[_0x2254('0x25')](saveUpdates(_0x1bd988['body'],null))['then'](respondWithResult(_0x5e3fbc,null))[_0x2254('0x46')](handleError(_0x5e3fbc,null));};exports['destroy']=function(_0x2cc59c,_0x305ace){return db[_0x2254('0x2e')][_0x2254('0x4a')]({'where':{'id':_0x2cc59c[_0x2254('0x47')]['id']}})['then'](handleEntityNotFound(_0x305ace,null))['then'](removeEntity(_0x305ace,null))[_0x2254('0x46')](handleError(_0x305ace,null));};exports['preview']=function(_0x335c66,_0x510fe0){var _0x4da493=0xa;var _0x5999c8=[_0x2254('0x54'),_0x2254('0x55'),_0x2254('0x56'),_0x2254('0x57')];var _0x13606e={'SUM':_0x2254('0x58'),'COUNT':_0x2254('0x59'),'COUNT DISTINCT':_0x2254('0x5a'),'MAX':_0x2254('0x5b'),'MIN':_0x2254('0x5c'),'AVG':_0x2254('0x5d'),'GROUP_CONCAT':_0x2254('0x5e'),'GROUP_CONCAT ASC':_0x2254('0x5f'),'GROUP_CONCAT DESC':_0x2254('0x60')};var _0x2f391d={'SEC_TO_TIME':_0x2254('0x61'),'DATE':_0x2254('0x62'),'HOUR':_0x2254('0x63'),'ROUND':_0x2254('0x64'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x329378=function(_0xae171c){return!_[_0x2254('0x65')]([_0x2254('0x66'),'IS\x20NOT\x20NULL','IS\x20EMPTY',_0x2254('0x67')],_0xae171c);};var _0x423c17=function(_0x1d73a3){if(!_0x1d73a3||!_0x1d73a3[_0x2254('0x68')][_0x2254('0x39')]){return'';}for(var _0x53b55b='(',_0x45b7bd=0x0;_0x45b7bd<_0x1d73a3[_0x2254('0x68')][_0x2254('0x39')];_0x45b7bd+=0x1){_0x45b7bd>0x0&&(_0x53b55b+='\x20'+_0x1d73a3['operator']+'\x20');_0x53b55b+=_0x1d73a3['rules'][_0x45b7bd][_0x2254('0x69')]?_0x423c17(_0x1d73a3['rules'][_0x45b7bd][_0x2254('0x69')]):_0x1d73a3[_0x2254('0x68')][_0x45b7bd]['field']+'\x20'+_0x1d73a3[_0x2254('0x68')][_0x45b7bd][_0x2254('0x6a')]+(_0x329378(_0x1d73a3['rules'][_0x45b7bd][_0x2254('0x6a')])?'\x20'+_0x1d73a3[_0x2254('0x68')][_0x45b7bd]['value']:'');}return _0x53b55b+')';};var _0x5cc6bd={'where':{'id':_0x335c66['params']['id']}},_0xde4e7,_0xa159a4,_0x486b82,_0x506d95,_0x48406e;_0x5cc6bd=_[_0x2254('0x41')]({},_0x5cc6bd,_0x335c66['options']);return db[_0x2254('0x2e')][_0x2254('0x4a')](_0x5cc6bd)[_0x2254('0x25')](function(_0x1ed6b9){if(_0x1ed6b9){_0xde4e7=_0x1ed6b9;return _0x1ed6b9['getFields']();}return null;})[_0x2254('0x25')](function(_0x5ecf82){if(_0x5ecf82){if(!_0x5ecf82[_0x2254('0x39')]){throw new db[(_0x2254('0x6b'))]['ValidationErrorItem'](_0x2254('0x6c'),0x193);}_0xa159a4=_0x5ecf82;return db[_0x2254('0x6d')]['findAll']({'raw':!![]});}return null;})[_0x2254('0x25')](function(_0x3b3b20){if(_0x3b3b20){_0x486b82=_[_0x2254('0x6e')](_0x3b3b20,'id');var _0x3cefbe;var _0x4f77e5=squel[_0x2254('0x6f')]();_0x4f77e5[_0x2254('0x70')](_0xde4e7['table']);for(var _0x1ac8ff=0x0;_0x1ac8ff<_0xa159a4[_0x2254('0x39')];_0x1ac8ff+=0x1){_0x3cefbe=_0xa159a4[_0x1ac8ff]['MetricId']?_0x486b82[_0xa159a4[_0x1ac8ff][_0x2254('0x71')]]['metric']:_0xa159a4[_0x1ac8ff][_0x2254('0x72')];_0x3cefbe=_0xa159a4[_0x1ac8ff]['function']?_[_0x2254('0x73')](_0x13606e[_0xa159a4[_0x1ac8ff][_0x2254('0x74')]],'%s',_0x3cefbe):_0x3cefbe;_0x3cefbe=_0xa159a4[_0x1ac8ff]['format']?_[_0x2254('0x73')](_0x2f391d[_0xa159a4[_0x1ac8ff]['format']],'%s',_0x3cefbe):_0x3cefbe;if(_0xa159a4[_0x1ac8ff][_0x2254('0x75')]){_0x4f77e5[_0x2254('0x69')](_0x3cefbe);}_0xa159a4[_0x1ac8ff][_0x2254('0x76')]&&_0x4f77e5['order'](_0x3cefbe,_0xa159a4[_0x1ac8ff][_0x2254('0x76')]==='DESC'?![]:!![]);_0x4f77e5[_0x2254('0x72')](_0x3cefbe,_0xa159a4[_0x1ac8ff][_0x2254('0x77')]||_0x3cefbe);}if(_0xde4e7['joins']){_0xde4e7['joins']=JSON[_0x2254('0x78')](_0xde4e7[_0x2254('0x79')]);for(var _0x451520=0x0;_0x451520<_0xde4e7[_0x2254('0x79')]['length'];_0x451520+=0x1){if(_0xde4e7[_0x2254('0x79')][_0x451520][_0x2254('0x30')]&&_[_0x2254('0x65')](_0x5999c8,_0xde4e7[_0x2254('0x79')][_0x451520]['type'])&&_0xde4e7[_0x2254('0x79')][_0x451520][_0x2254('0x7a')]&&_0xde4e7['joins'][_0x451520][_0x2254('0x7b')]&&_0xde4e7['joins'][_0x451520][_0x2254('0x7c')]){_0x4f77e5[_0xde4e7['joins'][_0x451520]['type']](_0xde4e7['joins'][_0x451520][_0x2254('0x7b')],null,util['format'](_0x2254('0x7d'),_0xde4e7[_0x2254('0x7e')],_0xde4e7['joins'][_0x451520][_0x2254('0x7a')],_0xde4e7[_0x2254('0x79')][_0x451520][_0x2254('0x7b')],_0xde4e7[_0x2254('0x79')][_0x451520][_0x2254('0x7c')]));}}}if(_0xde4e7[_0x2254('0x7f')]){_0xde4e7['conditions']=JSON['parse'](_0xde4e7[_0x2254('0x7f')]);_0x4f77e5[_0x2254('0x3e')](_0x423c17(_0xde4e7[_0x2254('0x7f')][_0x2254('0x69')]));}_0x48406e=_0x4f77e5[_0x2254('0x80')]();_0x4f77e5[_0x2254('0x20')](_0x4da493);_0x4f77e5[_0x2254('0x1e')](0x0);logger[_0x2254('0x81')](_0x2254('0x82'),_0x4f77e5[_0x2254('0x83')]());return dbH['sequelize'][_0x2254('0x33')](_0x4f77e5[_0x2254('0x83')](),{'type':dbH['sequelize'][_0x2254('0x84')]['SELECT']});}})[_0x2254('0x25')](respondWithResult(_0x510fe0,null))[_0x2254('0x46')](handleError(_0x510fe0,null));};function runReport(_0x4dfcb4,_0x1c317b,_0x4e699c){var _0x2ad519=_0x1c317b[_0x2254('0x2a')];var _0x30f2c9=0xa;var _0x1f7a48=['join',_0x2254('0x55'),_0x2254('0x56'),_0x2254('0x57')];var _0x3a8d4f={'SUM':'SUM(%s)','COUNT':_0x2254('0x59'),'COUNT DISTINCT':_0x2254('0x5a'),'MAX':'MAX(%s)','MIN':_0x2254('0x5c'),'AVG':_0x2254('0x5d'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0x2254('0x60')};var _0x2f3650={'SEC_TO_TIME':_0x2254('0x61'),'DATE':_0x2254('0x62'),'HOUR':_0x2254('0x63'),'ROUND':_0x2254('0x64'),'UNIX_TIMESTAMP':_0x2254('0x85')};var _0x251d70=function(_0x2c7705){return!_['includes']([_0x2254('0x66'),'IS\x20NOT\x20NULL',_0x2254('0x86'),'IS\x20NOT\x20EMPTY'],_0x2c7705);};var _0x36d121=function(_0x207a09){if(!_0x207a09||!_0x207a09[_0x2254('0x68')]['length']){return'';}for(var _0x8a3656='(',_0x1554f1=0x0;_0x1554f1<_0x207a09[_0x2254('0x68')][_0x2254('0x39')];_0x1554f1+=0x1){_0x1554f1>0x0&&(_0x8a3656+='\x20'+_0x207a09[_0x2254('0x87')]+'\x20');_0x8a3656+=_0x207a09[_0x2254('0x68')][_0x1554f1][_0x2254('0x69')]?_0x36d121(_0x207a09[_0x2254('0x68')][_0x1554f1][_0x2254('0x69')]):_0x207a09[_0x2254('0x68')][_0x1554f1][_0x2254('0x72')]+'\x20'+_0x207a09[_0x2254('0x68')][_0x1554f1][_0x2254('0x6a')]+(_0x251d70(_0x207a09['rules'][_0x1554f1][_0x2254('0x6a')])?'\x20'+_0x207a09['rules'][_0x1554f1][_0x2254('0x88')]:'');}return _0x8a3656+')';};var _0xb98b40={'where':{'id':_0x4dfcb4['id']}},_0x3b1d5c,_0x2c907a,_0x23b78c,_0x2b5dba,_0x30307a;_0xb98b40=_['merge']({},_0xb98b40,_0x4e699c);return db[_0x2254('0x2e')]['find'](_0xb98b40)[_0x2254('0x25')](function(_0x52712d){if(_0x52712d){_0x3b1d5c=_0x52712d;return _0x52712d[_0x2254('0x89')]();}return null;})[_0x2254('0x25')](function(_0x1d0c8f){if(_0x1d0c8f){if(!_0x1d0c8f['length']){throw new db[(_0x2254('0x6b'))][(_0x2254('0x8a'))](_0x2254('0x6c'),0x193);}_0x2c907a=_0x1d0c8f;return db[_0x2254('0x6d')][_0x2254('0x44')]({'raw':!![]});}return null;})[_0x2254('0x25')](function(_0x34185c){if(_0x34185c){_0x23b78c=_[_0x2254('0x6e')](_0x34185c,'id');var _0x5e94b6;var _0x56239e=squel[_0x2254('0x6f')]();_0x56239e['from'](_0x3b1d5c[_0x2254('0x7e')]);for(var _0x3a1365=0x0;_0x3a1365<_0x2c907a[_0x2254('0x39')];_0x3a1365+=0x1){_0x5e94b6=_0x2c907a[_0x3a1365][_0x2254('0x71')]?_0x23b78c[_0x2c907a[_0x3a1365][_0x2254('0x71')]][_0x2254('0x8b')]:_0x2c907a[_0x3a1365][_0x2254('0x72')];_0x5e94b6=_0x2c907a[_0x3a1365]['function']?_[_0x2254('0x73')](_0x3a8d4f[_0x2c907a[_0x3a1365][_0x2254('0x74')]],'%s',_0x5e94b6):_0x5e94b6;_0x5e94b6=_0x2c907a[_0x3a1365][_0x2254('0x8c')]?_['replace'](_0x2f3650[_0x2c907a[_0x3a1365][_0x2254('0x8c')]],'%s',_0x5e94b6):_0x5e94b6;if(_0x2c907a[_0x3a1365][_0x2254('0x75')]){_0x56239e[_0x2254('0x69')](_0x5e94b6);}_0x2c907a[_0x3a1365][_0x2254('0x76')]&&_0x56239e[_0x2254('0x3c')](_0x5e94b6,_0x2c907a[_0x3a1365][_0x2254('0x76')]===_0x2254('0x8d')?![]:!![]);_0x56239e[_0x2254('0x72')](_0x5e94b6,_0x2c907a[_0x3a1365][_0x2254('0x77')]||_0x5e94b6);}if(_0x3b1d5c['joins']){_0x3b1d5c[_0x2254('0x79')]=JSON[_0x2254('0x78')](_0x3b1d5c['joins']);for(var _0x4cec5b=0x0;_0x4cec5b<_0x3b1d5c[_0x2254('0x79')]['length'];_0x4cec5b+=0x1){if(_0x3b1d5c[_0x2254('0x79')][_0x4cec5b][_0x2254('0x30')]&&_[_0x2254('0x65')](_0x1f7a48,_0x3b1d5c[_0x2254('0x79')][_0x4cec5b][_0x2254('0x30')])&&_0x3b1d5c[_0x2254('0x79')][_0x4cec5b][_0x2254('0x7a')]&&_0x3b1d5c[_0x2254('0x79')][_0x4cec5b]['foreignTable']&&_0x3b1d5c['joins'][_0x4cec5b][_0x2254('0x7c')]){_0x56239e[_0x3b1d5c[_0x2254('0x79')][_0x4cec5b][_0x2254('0x30')]](_0x3b1d5c[_0x2254('0x79')][_0x4cec5b][_0x2254('0x7b')],null,util['format']('%s.%s\x20=\x20%s.%s',_0x3b1d5c[_0x2254('0x7e')],_0x3b1d5c['joins'][_0x4cec5b][_0x2254('0x7a')],_0x3b1d5c[_0x2254('0x79')][_0x4cec5b][_0x2254('0x7b')],_0x3b1d5c[_0x2254('0x79')][_0x4cec5b][_0x2254('0x7c')]));}}}if(_0x3b1d5c[_0x2254('0x7f')]){_0x3b1d5c[_0x2254('0x7f')]=JSON['parse'](_0x3b1d5c[_0x2254('0x7f')]);_0x56239e[_0x2254('0x3e')](_0x36d121(_0x3b1d5c['conditions'][_0x2254('0x69')]));}_0x30307a=_0x56239e[_0x2254('0x80')]();_0x56239e[_0x2254('0x20')](_0x30f2c9);_0x56239e[_0x2254('0x1e')](0x0);return;}})[_0x2254('0x25')](function(){if(_0x1c317b[_0x2254('0x8e')]===_0x2254('0x8f')){return null;}var _0x38e2df=_[_0x2254('0x41')](_0x1c317b,{'name':_0x1c317b[_0x2254('0x90')]||_0x1c317b[_0x2254('0x2a')]||_0x3b1d5c['name'],'basename':_0x2ad519,'savename':util[_0x2254('0x8c')](_0x2254('0x91'),_0x1c317b[_0x2254('0x2a')]||_0x3b1d5c[_0x2254('0x2a')],require(_0x2254('0x92'))[_0x2254('0x93')](0x4),_0x1c317b[_0x2254('0x8e')]||'csv'),'reportId':_0x3b1d5c['id'],'reportType':_0x2254('0x94')});return db[_0x2254('0x95')][_0x2254('0x4b')](_0x38e2df,{'raw':!![]});})['then'](function(_0x60f5ac){if(_0x3b1d5c[_0x2254('0x7e')]===_0x2254('0x96')){_0x30307a[_0x2254('0x3e')](_0x3b1d5c[_0x2254('0x7e')]+_0x2254('0x97'),_0x1c317b['startDate'],_0x1c317b[_0x2254('0x98')]);}else{_0x30307a[_0x2254('0x3e')](_0x3b1d5c[_0x2254('0x7e')]+_0x2254('0x99'),_0x1c317b[_0x2254('0x9a')],_0x1c317b['endDate']);}if(_0x60f5ac){logger['info'](_0x2254('0x9b'),_0x30307a['toString']());require(_0x2254('0x9c'))[_0x2254('0x9d')](path[_0x2254('0x54')](__dirname,_0x2254('0x9e'),_0x60f5ac[_0x2254('0x8e')]),[_0x60f5ac['id'],_0x30307a[_0x2254('0x83')](),path['join'](__dirname,'../../files/reports',_0x60f5ac[_0x2254('0x9f')]),_0x2ad519]);return _0x60f5ac;}else{var _0x3317d4=squel[_0x2254('0x6f')]();_0x3317d4[_0x2254('0x70')]('('+_0x30307a['toString']()+')',_0x2254('0xa0'));_0x3317d4[_0x2254('0x72')](_0x2254('0xa1'),_0x2254('0x21'));_0x30307a[_0x2254('0x20')](_0x1c317b[_0x2254('0x20')]||_0x30f2c9);_0x30307a[_0x2254('0x1e')](_0x1c317b[_0x2254('0x1e')]||0x0);return dbH[_0x2254('0xa2')]['query'](_0x3317d4[_0x2254('0x83')](),{'type':dbH[_0x2254('0xa2')][_0x2254('0x84')]['SELECT']})[_0x2254('0x25')](function(_0xe38a28){if(!_0xe38a28[_0x2254('0x39')]){_0x2b5dba=0x0;}else{_0x2b5dba=_0xe38a28[0x0]['count']||0x0;}return dbH['sequelize'][_0x2254('0x33')](_0x30307a[_0x2254('0x83')](),{'type':dbH[_0x2254('0xa2')][_0x2254('0x84')][_0x2254('0xa3')]});})[_0x2254('0x25')](function(_0x4011de){return{'rows':_0x4011de||[],'count':_0x2b5dba};});}});}exports[_0x2254('0xa4')]=function(_0x5cb3d1,_0x1d8238){return runReport(_0x5cb3d1[_0x2254('0x47')],_0x5cb3d1[_0x2254('0x33')],_0x5cb3d1[_0x2254('0x42')])[_0x2254('0x25')](respondWithResult(_0x1d8238,null))[_0x2254('0x46')](handleError(_0x1d8238,null));};exports['runReport']=runReport;exports['query']=function(_0x40339d,_0x4b3b96){var _0x59b8af=0xa;var _0x408695=[_0x2254('0x54'),_0x2254('0x55'),_0x2254('0x56'),'cross_join'];var _0x596eae={'SUM':_0x2254('0x58'),'COUNT':_0x2254('0x59'),'COUNT DISTINCT':_0x2254('0x5a'),'MAX':'MAX(%s)','MIN':_0x2254('0x5c'),'AVG':_0x2254('0x5d'),'GROUP_CONCAT':_0x2254('0x5e'),'GROUP_CONCAT ASC':_0x2254('0x5f'),'GROUP_CONCAT DESC':_0x2254('0x60')};var _0x739a29={'SEC_TO_TIME':_0x2254('0x61'),'DATE':'DATE(%s)','HOUR':_0x2254('0x63'),'ROUND':_0x2254('0x64'),'UNIX_TIMESTAMP':_0x2254('0x85')};var _0x243466=function(_0x1b8587){return!_[_0x2254('0x65')]([_0x2254('0x66'),_0x2254('0xa5'),_0x2254('0x86'),'IS\x20NOT\x20EMPTY'],_0x1b8587);};var _0xbec5d0=function(_0x18f841){if(!_0x18f841||!_0x18f841[_0x2254('0x68')][_0x2254('0x39')]){return'';}for(var _0x275b56='(',_0x315add=0x0;_0x315add<_0x18f841['rules']['length'];_0x315add+=0x1){_0x315add>0x0&&(_0x275b56+='\x20'+_0x18f841[_0x2254('0x87')]+'\x20');_0x275b56+=_0x18f841['rules'][_0x315add][_0x2254('0x69')]?_0xbec5d0(_0x18f841[_0x2254('0x68')][_0x315add][_0x2254('0x69')]):_0x18f841[_0x2254('0x68')][_0x315add]['field']+'\x20'+_0x18f841[_0x2254('0x68')][_0x315add][_0x2254('0x6a')]+(_0x243466(_0x18f841[_0x2254('0x68')][_0x315add]['condition'])?'\x20'+_0x18f841['rules'][_0x315add][_0x2254('0x88')]:'');}return _0x275b56+')';};var _0x51b02a={'where':{'id':_0x40339d[_0x2254('0x47')]['id']}},_0x3e7642,_0xe1abb6,_0x1a44d0,_0x4af6a7,_0x539aba;_0x51b02a=_[_0x2254('0x41')]({},_0x51b02a,_0x40339d[_0x2254('0x42')]);return db[_0x2254('0x2e')][_0x2254('0x4a')](_0x51b02a)['then'](function(_0x34e28b){if(_0x34e28b){_0x3e7642=_0x34e28b;return _0x34e28b[_0x2254('0x89')]();}return null;})[_0x2254('0x25')](function(_0x5d373){if(_0x5d373){if(!_0x5d373[_0x2254('0x39')]){throw new db[(_0x2254('0x6b'))]['ValidationErrorItem'](_0x2254('0x6c'),0x193);}_0xe1abb6=_0x5d373;return db[_0x2254('0x6d')]['findAll']({'raw':!![]});}return null;})[_0x2254('0x25')](function(_0x56a7ce){if(_0x56a7ce){_0x1a44d0=_[_0x2254('0x6e')](_0x56a7ce,'id');var _0x34bf19;var _0x4965c7=squel[_0x2254('0x6f')]();_0x4965c7[_0x2254('0x70')](_0x3e7642[_0x2254('0x7e')]);for(var _0x45541b=0x0;_0x45541b<_0xe1abb6[_0x2254('0x39')];_0x45541b+=0x1){_0x34bf19=_0xe1abb6[_0x45541b][_0x2254('0x71')]?_0x1a44d0[_0xe1abb6[_0x45541b][_0x2254('0x71')]][_0x2254('0x8b')]:_0xe1abb6[_0x45541b][_0x2254('0x72')];_0x34bf19=_0xe1abb6[_0x45541b][_0x2254('0x74')]?_[_0x2254('0x73')](_0x596eae[_0xe1abb6[_0x45541b][_0x2254('0x74')]],'%s',_0x34bf19):_0x34bf19;_0x34bf19=_0xe1abb6[_0x45541b][_0x2254('0x8c')]?_[_0x2254('0x73')](_0x739a29[_0xe1abb6[_0x45541b]['format']],'%s',_0x34bf19):_0x34bf19;if(_0xe1abb6[_0x45541b][_0x2254('0x75')]){_0x4965c7[_0x2254('0x69')](_0x34bf19);}_0xe1abb6[_0x45541b]['orderBy']&&_0x4965c7['order'](_0x34bf19,_0xe1abb6[_0x45541b][_0x2254('0x76')]===_0x2254('0x8d')?![]:!![]);_0x4965c7[_0x2254('0x72')](_0x34bf19,_0xe1abb6[_0x45541b][_0x2254('0x77')]||_0x34bf19);}if(_0x3e7642['joins']){_0x3e7642[_0x2254('0x79')]=JSON['parse'](_0x3e7642['joins']);for(var _0x40fec0=0x0;_0x40fec0<_0x3e7642[_0x2254('0x79')][_0x2254('0x39')];_0x40fec0+=0x1){if(_0x3e7642[_0x2254('0x79')][_0x40fec0]['type']&&_[_0x2254('0x65')](_0x408695,_0x3e7642['joins'][_0x40fec0][_0x2254('0x30')])&&_0x3e7642[_0x2254('0x79')][_0x40fec0][_0x2254('0x7a')]&&_0x3e7642[_0x2254('0x79')][_0x40fec0][_0x2254('0x7b')]&&_0x3e7642[_0x2254('0x79')][_0x40fec0][_0x2254('0x7c')]){_0x4965c7[_0x3e7642[_0x2254('0x79')][_0x40fec0][_0x2254('0x30')]](_0x3e7642[_0x2254('0x79')][_0x40fec0][_0x2254('0x7b')],null,util['format'](_0x2254('0x7d'),_0x3e7642[_0x2254('0x7e')],_0x3e7642[_0x2254('0x79')][_0x40fec0][_0x2254('0x7a')],_0x3e7642[_0x2254('0x79')][_0x40fec0][_0x2254('0x7b')],_0x3e7642[_0x2254('0x79')][_0x40fec0][_0x2254('0x7c')]));}}}if(_0x3e7642['conditions']){_0x3e7642[_0x2254('0x7f')]=JSON[_0x2254('0x78')](_0x3e7642[_0x2254('0x7f')]);_0x4965c7[_0x2254('0x3e')](_0xbec5d0(_0x3e7642[_0x2254('0x7f')]['group']));}_0x539aba=_0x4965c7[_0x2254('0x80')]();_0x4965c7[_0x2254('0x20')](_0x59b8af);_0x4965c7['offset'](0x0);logger[_0x2254('0x81')](_0x2254('0x82'),_0x4965c7[_0x2254('0x83')]());return dbH['sequelize'][_0x2254('0x33')](_0x4965c7[_0x2254('0x83')](),{'type':dbH['sequelize'][_0x2254('0x84')][_0x2254('0xa3')]});}})[_0x2254('0x25')](function(){return{'sql':_0x539aba[_0x2254('0x83')]()};})['then'](respondWithResult(_0x4b3b96,null))[_0x2254('0x46')](handleError(_0x4b3b96,null));};
\ No newline at end of file
+var _0x326f=['order','orderBy','DESC','joins','foreignTable','foreignKey','parentKey','conditions','Limited\x20Query:','toString','sequelize','SELECT','SUM(%s)','COUNT(DISTINCT\x20%s)','MAX(%s)','AVG(%s)','UNIX_TIMESTAMP(%s)','operator','AnalyticMetric','select','from','function','parse','%s.%s\x20=\x20%s.%s','output','web','fullPath','%s-%s.%s','generate','csv','default','AnalyticExtractedReport','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','endDate','Run\x20Query:','child_process','fork','join','../../files/reports','savename','countTable','COUNT(*)','QueryTypes','SEC_TO_TIME(%s)','debug','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','dbH','sendStatus','status','json','offset','undefined','count','apply','update','then','get','DefaultReports','UserProfileResource','destroy','end','error','name','send','index','map','AnalyticDefaultReport','fieldName','type','model','query','filters','intersection','attributes','fields','hasOwnProperty','limit','sort','where','pick','filter','merge','options','includeAll','include','findAll','catch','show','params','rawAttributes','keys','length','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','preview','left_join','right_join','cross_join','COUNT(%s)','MIN(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','DATE(%s)','HOUR(%s)','ROUND(%s)','includes','IS\x20NULL','IS\x20NOT\x20NULL','IS\x20EMPTY','IS\x20NOT\x20EMPTY','rules','group','field','condition','value','getFields','Sequelize','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','keyBy','table','MetricId','metric','format','replace','groupBy'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0x326f,0xd1));var _0xf326=function(_0x5a83ad,_0x36b446){_0x5a83ad=_0x5a83ad-0x0;var _0x1ce418=_0x326f[_0x5a83ad];return _0x1ce418;};'use strict';var emlformat=require(_0xf326('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xf326('0x1'));var rp=require(_0xf326('0x2'));var moment=require(_0xf326('0x3'));var BPromise=require(_0xf326('0x4'));var Mustache=require(_0xf326('0x5'));var util=require(_0xf326('0x6'));var path=require(_0xf326('0x7'));var sox=require(_0xf326('0x8'));var csv=require(_0xf326('0x9'));var ejs=require(_0xf326('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf326('0xb'));var squel=require(_0xf326('0xc'));var crypto=require(_0xf326('0xd'));var jsforce=require(_0xf326('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xf326('0xf'));var Redis=require(_0xf326('0x10'));var authService=require(_0xf326('0x11'));var qs=require(_0xf326('0x12'));var as=require(_0xf326('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xf326('0x14'))('api');var utils=require(_0xf326('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xf326('0x16'));var db=require('../../mysqldb')['db'];var dbH=require(_0xf326('0x17'))[_0xf326('0x18')];function respondWithStatusCode(_0x4b3966,_0x342fe5){_0x342fe5=_0x342fe5||0xcc;return function(_0x472632){if(_0x472632){return _0x4b3966[_0xf326('0x19')](_0x342fe5);}return _0x4b3966[_0xf326('0x1a')](_0x342fe5)['end']();};}function respondWithResult(_0x45c1b6,_0x5204ee){_0x5204ee=_0x5204ee||0xc8;return function(_0x54bd1a){if(_0x54bd1a){return _0x45c1b6[_0xf326('0x1a')](_0x5204ee)[_0xf326('0x1b')](_0x54bd1a);}};}function respondWithFilteredResult(_0x1f2e5a,_0xa63d1a){return function(_0x292f4b){if(_0x292f4b){var _0x287a2a=typeof _0xa63d1a[_0xf326('0x1c')]===_0xf326('0x1d')&&typeof _0xa63d1a['limit']===_0xf326('0x1d');var _0x453100=_0x292f4b[_0xf326('0x1e')];var _0x31ffb9=_0x287a2a?0x0:_0xa63d1a[_0xf326('0x1c')];var _0x311af0=_0x287a2a?_0x292f4b['count']:_0xa63d1a['offset']+_0xa63d1a['limit'];var _0x16e605;if(_0x311af0>=_0x453100){_0x311af0=_0x453100;_0x16e605=0xc8;}else{_0x16e605=0xce;}_0x1f2e5a[_0xf326('0x1a')](_0x16e605);return _0x1f2e5a['set']('Content-Range',_0x31ffb9+'-'+_0x311af0+'/'+_0x453100)[_0xf326('0x1b')](_0x292f4b);}return null;};}function patchUpdates(_0x4dfa76){return function(_0x5b6d3c){try{jsonpatch[_0xf326('0x1f')](_0x5b6d3c,_0x4dfa76,!![]);}catch(_0x18ead3){return BPromise['reject'](_0x18ead3);}return _0x5b6d3c['save']();};}function saveUpdates(_0x19b8ba,_0xb1efcf){return function(_0x5f21a2){if(_0x5f21a2){return _0x5f21a2[_0xf326('0x20')](_0x19b8ba)[_0xf326('0x21')](function(_0x43c53e){return _0x43c53e;});}return null;};}function removeEntity(_0x295752,_0x17c157){return function(_0x2049ec){if(_0x2049ec){return _0x2049ec['destroy']()['then'](function(){var _0x4f31f6=_0x2049ec[_0xf326('0x22')]({'plain':!![]});var _0x1a2c4e=_0xf326('0x23');return db[_0xf326('0x24')][_0xf326('0x25')]({'where':{'type':_0x1a2c4e,'resourceId':_0x4f31f6['id']}})[_0xf326('0x21')](function(){return _0x2049ec;});})['then'](function(){_0x295752[_0xf326('0x1a')](0xcc)[_0xf326('0x26')]();});}};}function handleEntityNotFound(_0x212d5d,_0x581531){return function(_0x1617d2){if(!_0x1617d2){_0x212d5d['sendStatus'](0x194);}return _0x1617d2;};}function handleError(_0x4a9abf,_0x6a8e89){_0x6a8e89=_0x6a8e89||0x1f4;return function(_0x1ae23a){logger[_0xf326('0x27')](_0x1ae23a['stack']);if(_0x1ae23a[_0xf326('0x28')]){delete _0x1ae23a[_0xf326('0x28')];}_0x4a9abf['status'](_0x6a8e89)[_0xf326('0x29')](_0x1ae23a);};}exports[_0xf326('0x2a')]=function(_0xd77aba,_0x18d110){var _0xa80156={},_0x269be9={},_0x161143={'count':0x0,'rows':[]};var _0x39a1e2=_[_0xf326('0x2b')](db[_0xf326('0x2c')]['rawAttributes'],function(_0x1035ed){return{'name':_0x1035ed[_0xf326('0x2d')],'type':_0x1035ed[_0xf326('0x2e')]['key']};});_0x269be9[_0xf326('0x2f')]=_[_0xf326('0x2b')](_0x39a1e2,_0xf326('0x28'));_0x269be9['query']=_['keys'](_0xd77aba[_0xf326('0x30')]);_0x269be9[_0xf326('0x31')]=_[_0xf326('0x32')](_0x269be9[_0xf326('0x2f')],_0x269be9[_0xf326('0x30')]);_0xa80156[_0xf326('0x33')]=_[_0xf326('0x32')](_0x269be9[_0xf326('0x2f')],qs['fields'](_0xd77aba[_0xf326('0x30')][_0xf326('0x34')]));_0xa80156['attributes']=_0xa80156[_0xf326('0x33')]['length']?_0xa80156[_0xf326('0x33')]:_0x269be9['model'];if(!_0xd77aba['query'][_0xf326('0x35')]('nolimit')){_0xa80156[_0xf326('0x36')]=qs['limit'](_0xd77aba[_0xf326('0x30')][_0xf326('0x36')]);_0xa80156[_0xf326('0x1c')]=qs['offset'](_0xd77aba[_0xf326('0x30')][_0xf326('0x1c')]);}_0xa80156['order']=qs[_0xf326('0x37')](_0xd77aba[_0xf326('0x30')][_0xf326('0x37')]);_0xa80156[_0xf326('0x38')]=qs['filters'](_[_0xf326('0x39')](_0xd77aba[_0xf326('0x30')],_0x269be9[_0xf326('0x31')]),_0x39a1e2);if(_0xd77aba[_0xf326('0x30')][_0xf326('0x3a')]){_0xa80156['where']=_[_0xf326('0x3b')](_0xa80156[_0xf326('0x38')],{'$or':_['map'](_0x39a1e2,function(_0x4dd361){if(_0x4dd361[_0xf326('0x2e')]!=='VIRTUAL'){var _0x55dfa8={};_0x55dfa8[_0x4dd361[_0xf326('0x28')]]={'$like':'%'+_0xd77aba['query'][_0xf326('0x3a')]+'%'};return _0x55dfa8;}})});}_0xa80156=_[_0xf326('0x3b')]({},_0xa80156,_0xd77aba[_0xf326('0x3c')]);var _0x39611e={'where':_0xa80156['where']};return db[_0xf326('0x2c')][_0xf326('0x1e')](_0x39611e)[_0xf326('0x21')](function(_0x365627){_0x161143[_0xf326('0x1e')]=_0x365627;if(_0xd77aba[_0xf326('0x30')][_0xf326('0x3d')]){_0xa80156[_0xf326('0x3e')]=[{'all':!![]}];}return db[_0xf326('0x2c')][_0xf326('0x3f')](_0xa80156);})[_0xf326('0x21')](function(_0x2bab13){_0x161143['rows']=_0x2bab13;return _0x161143;})[_0xf326('0x21')](respondWithFilteredResult(_0x18d110,_0xa80156))[_0xf326('0x40')](handleError(_0x18d110,null));};exports[_0xf326('0x41')]=function(_0x270288,_0x1dd262){var _0x1a2d0d={'raw':!![],'where':{'id':_0x270288[_0xf326('0x42')]['id']}},_0x4f4c51={};_0x4f4c51[_0xf326('0x2f')]=_['keys'](db[_0xf326('0x2c')][_0xf326('0x43')]);_0x4f4c51[_0xf326('0x30')]=_[_0xf326('0x44')](_0x270288[_0xf326('0x30')]);_0x4f4c51['filters']=_['intersection'](_0x4f4c51[_0xf326('0x2f')],_0x4f4c51[_0xf326('0x30')]);_0x1a2d0d['attributes']=_['intersection'](_0x4f4c51[_0xf326('0x2f')],qs[_0xf326('0x34')](_0x270288[_0xf326('0x30')]['fields']));_0x1a2d0d[_0xf326('0x33')]=_0x1a2d0d[_0xf326('0x33')][_0xf326('0x45')]?_0x1a2d0d[_0xf326('0x33')]:_0x4f4c51[_0xf326('0x2f')];if(_0x270288[_0xf326('0x30')][_0xf326('0x3d')]){_0x1a2d0d[_0xf326('0x3e')]=[{'all':!![]}];}_0x1a2d0d=_[_0xf326('0x3b')]({},_0x1a2d0d,_0x270288[_0xf326('0x3c')]);return db[_0xf326('0x2c')][_0xf326('0x46')](_0x1a2d0d)[_0xf326('0x21')](handleEntityNotFound(_0x1dd262,null))[_0xf326('0x21')](respondWithResult(_0x1dd262,null))[_0xf326('0x40')](handleError(_0x1dd262,null));};exports['create']=function(_0x199f8b,_0x1b0e03){return db[_0xf326('0x2c')][_0xf326('0x47')](_0x199f8b['body'],{})[_0xf326('0x21')](function(_0x2f5511){var _0xca88e=_0x199f8b[_0xf326('0x48')]['get']({'plain':!![]});if(!_0xca88e)throw new Error(_0xf326('0x49'));if(_0xca88e[_0xf326('0x4a')]===_0xf326('0x48')){var _0x451ac7=_0x2f5511[_0xf326('0x22')]({'plain':!![]});var _0x4970fb='Reports';return db[_0xf326('0x4b')][_0xf326('0x46')]({'where':{'name':_0x4970fb,'userProfileId':_0xca88e[_0xf326('0x4c')]},'raw':!![]})['then'](function(_0x102fba){if(_0x102fba&&_0x102fba[_0xf326('0x4d')]===0x0){return db[_0xf326('0x24')]['create']({'name':_0x451ac7['name'],'resourceId':_0x451ac7['id'],'type':_0xf326('0x23'),'sectionId':_0x102fba['id']},{})['then'](function(){return _0x2f5511;});}else{return _0x2f5511;}})[_0xf326('0x40')](function(_0x554277){logger[_0xf326('0x27')](_0xf326('0x4e'),_0x554277);throw _0x554277;});}return _0x2f5511;})[_0xf326('0x21')](respondWithResult(_0x1b0e03,0xc9))[_0xf326('0x40')](handleError(_0x1b0e03,null));};exports[_0xf326('0x20')]=function(_0x35d3c8,_0x7f7ece){if(_0x35d3c8['body']['id']){delete _0x35d3c8[_0xf326('0x4f')]['id'];}return db[_0xf326('0x2c')][_0xf326('0x46')]({'where':{'id':_0x35d3c8['params']['id']}})[_0xf326('0x21')](handleEntityNotFound(_0x7f7ece,null))[_0xf326('0x21')](saveUpdates(_0x35d3c8[_0xf326('0x4f')],null))[_0xf326('0x21')](respondWithResult(_0x7f7ece,null))[_0xf326('0x40')](handleError(_0x7f7ece,null));};exports['destroy']=function(_0x161fb3,_0x21eac7){return db[_0xf326('0x2c')][_0xf326('0x46')]({'where':{'id':_0x161fb3['params']['id']}})[_0xf326('0x21')](handleEntityNotFound(_0x21eac7,null))[_0xf326('0x21')](removeEntity(_0x21eac7,null))[_0xf326('0x40')](handleError(_0x21eac7,null));};exports[_0xf326('0x50')]=function(_0x4d3b9e,_0x5be2b1){var _0x18b46e=0xa;var _0x44d2ed=['join',_0xf326('0x51'),_0xf326('0x52'),_0xf326('0x53')];var _0x1258d1={'SUM':'SUM(%s)','COUNT':_0xf326('0x54'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':'MAX(%s)','MIN':_0xf326('0x55'),'AVG':'AVG(%s)','GROUP_CONCAT':_0xf326('0x56'),'GROUP_CONCAT ASC':_0xf326('0x57'),'GROUP_CONCAT DESC':_0xf326('0x58')};var _0x4eef49={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0xf326('0x59'),'HOUR':_0xf326('0x5a'),'ROUND':_0xf326('0x5b'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x2759d7=function(_0x487020){return!_[_0xf326('0x5c')]([_0xf326('0x5d'),_0xf326('0x5e'),_0xf326('0x5f'),_0xf326('0x60')],_0x487020);};var _0x18dbfc=function(_0x23a9e8){if(!_0x23a9e8||!_0x23a9e8[_0xf326('0x61')][_0xf326('0x45')]){return'';}for(var _0x33f9dd='(',_0x33ffb8=0x0;_0x33ffb8<_0x23a9e8[_0xf326('0x61')][_0xf326('0x45')];_0x33ffb8+=0x1){_0x33ffb8>0x0&&(_0x33f9dd+='\x20'+_0x23a9e8['operator']+'\x20');_0x33f9dd+=_0x23a9e8[_0xf326('0x61')][_0x33ffb8]['group']?_0x18dbfc(_0x23a9e8[_0xf326('0x61')][_0x33ffb8][_0xf326('0x62')]):_0x23a9e8['rules'][_0x33ffb8][_0xf326('0x63')]+'\x20'+_0x23a9e8['rules'][_0x33ffb8][_0xf326('0x64')]+(_0x2759d7(_0x23a9e8[_0xf326('0x61')][_0x33ffb8][_0xf326('0x64')])?'\x20'+_0x23a9e8[_0xf326('0x61')][_0x33ffb8][_0xf326('0x65')]:'');}return _0x33f9dd+')';};var _0x51ff5e={'where':{'id':_0x4d3b9e[_0xf326('0x42')]['id']}},_0x4ec099,_0x1209ca,_0x32fe3a,_0x15a538,_0x21b3cc;_0x51ff5e=_['merge']({},_0x51ff5e,_0x4d3b9e[_0xf326('0x3c')]);return db[_0xf326('0x2c')]['find'](_0x51ff5e)['then'](function(_0x5b25ca){if(_0x5b25ca){_0x4ec099=_0x5b25ca;return _0x5b25ca[_0xf326('0x66')]();}return null;})[_0xf326('0x21')](function(_0x4150fa){if(_0x4150fa){if(!_0x4150fa[_0xf326('0x45')]){throw new db[(_0xf326('0x67'))][(_0xf326('0x68'))](_0xf326('0x69'),0x193);}_0x1209ca=_0x4150fa;return db['AnalyticMetric'][_0xf326('0x3f')]({'raw':!![]});}return null;})[_0xf326('0x21')](function(_0x3c3379){if(_0x3c3379){_0x32fe3a=_[_0xf326('0x6a')](_0x3c3379,'id');var _0x58de1e;var _0x3717fe=squel['select']();_0x3717fe['from'](_0x4ec099[_0xf326('0x6b')]);for(var _0x540fa0=0x0;_0x540fa0<_0x1209ca[_0xf326('0x45')];_0x540fa0+=0x1){_0x58de1e=_0x1209ca[_0x540fa0][_0xf326('0x6c')]?_0x32fe3a[_0x1209ca[_0x540fa0][_0xf326('0x6c')]][_0xf326('0x6d')]:_0x1209ca[_0x540fa0][_0xf326('0x63')];_0x58de1e=_0x1209ca[_0x540fa0]['function']?_['replace'](_0x1258d1[_0x1209ca[_0x540fa0]['function']],'%s',_0x58de1e):_0x58de1e;_0x58de1e=_0x1209ca[_0x540fa0][_0xf326('0x6e')]?_[_0xf326('0x6f')](_0x4eef49[_0x1209ca[_0x540fa0][_0xf326('0x6e')]],'%s',_0x58de1e):_0x58de1e;if(_0x1209ca[_0x540fa0][_0xf326('0x70')]){_0x3717fe[_0xf326('0x62')](_0x58de1e);}_0x1209ca[_0x540fa0]['orderBy']&&_0x3717fe[_0xf326('0x71')](_0x58de1e,_0x1209ca[_0x540fa0][_0xf326('0x72')]===_0xf326('0x73')?![]:!![]);_0x3717fe['field'](_0x58de1e,_0x1209ca[_0x540fa0]['alias']||_0x58de1e);}if(_0x4ec099[_0xf326('0x74')]){_0x4ec099[_0xf326('0x74')]=JSON['parse'](_0x4ec099['joins']);for(var _0x2497fd=0x0;_0x2497fd<_0x4ec099['joins'][_0xf326('0x45')];_0x2497fd+=0x1){if(_0x4ec099['joins'][_0x2497fd]['type']&&_['includes'](_0x44d2ed,_0x4ec099[_0xf326('0x74')][_0x2497fd][_0xf326('0x2e')])&&_0x4ec099[_0xf326('0x74')][_0x2497fd]['parentKey']&&_0x4ec099[_0xf326('0x74')][_0x2497fd][_0xf326('0x75')]&&_0x4ec099[_0xf326('0x74')][_0x2497fd][_0xf326('0x76')]){_0x3717fe[_0x4ec099[_0xf326('0x74')][_0x2497fd][_0xf326('0x2e')]](_0x4ec099[_0xf326('0x74')][_0x2497fd][_0xf326('0x75')],null,util[_0xf326('0x6e')]('%s.%s\x20=\x20%s.%s',_0x4ec099[_0xf326('0x6b')],_0x4ec099['joins'][_0x2497fd][_0xf326('0x77')],_0x4ec099[_0xf326('0x74')][_0x2497fd][_0xf326('0x75')],_0x4ec099['joins'][_0x2497fd][_0xf326('0x76')]));}}}if(_0x4ec099[_0xf326('0x78')]){_0x4ec099[_0xf326('0x78')]=JSON['parse'](_0x4ec099[_0xf326('0x78')]);_0x3717fe[_0xf326('0x38')](_0x18dbfc(_0x4ec099[_0xf326('0x78')][_0xf326('0x62')]));}_0x21b3cc=_0x3717fe['clone']();_0x3717fe[_0xf326('0x36')](_0x18b46e);_0x3717fe['offset'](0x0);logger['debug'](_0xf326('0x79'),_0x3717fe[_0xf326('0x7a')]());return dbH['sequelize']['query'](_0x3717fe['toString'](),{'type':dbH[_0xf326('0x7b')]['QueryTypes'][_0xf326('0x7c')]});}})[_0xf326('0x21')](respondWithResult(_0x5be2b1,null))[_0xf326('0x40')](handleError(_0x5be2b1,null));};function runReport(_0x2ec314,_0xf76a89,_0x25b56c){var _0x5d23f0=_0xf76a89[_0xf326('0x28')];var _0x323926=0xa;var _0x5f1724=['join',_0xf326('0x51'),'right_join',_0xf326('0x53')];var _0x147d51={'SUM':_0xf326('0x7d'),'COUNT':_0xf326('0x54'),'COUNT DISTINCT':_0xf326('0x7e'),'MAX':_0xf326('0x7f'),'MIN':_0xf326('0x55'),'AVG':_0xf326('0x80'),'GROUP_CONCAT':_0xf326('0x56'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0xf326('0x58')};var _0x26bbb1={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0xf326('0x59'),'HOUR':'HOUR(%s)','ROUND':_0xf326('0x5b'),'UNIX_TIMESTAMP':_0xf326('0x81')};var _0x14e8c0=function(_0x5814ad){return!_[_0xf326('0x5c')]([_0xf326('0x5d'),_0xf326('0x5e'),_0xf326('0x5f'),_0xf326('0x60')],_0x5814ad);};var _0x1e50aa=function(_0x148779){if(!_0x148779||!_0x148779[_0xf326('0x61')][_0xf326('0x45')]){return'';}for(var _0x38b696='(',_0x384b46=0x0;_0x384b46<_0x148779[_0xf326('0x61')][_0xf326('0x45')];_0x384b46+=0x1){_0x384b46>0x0&&(_0x38b696+='\x20'+_0x148779[_0xf326('0x82')]+'\x20');_0x38b696+=_0x148779[_0xf326('0x61')][_0x384b46]['group']?_0x1e50aa(_0x148779[_0xf326('0x61')][_0x384b46][_0xf326('0x62')]):_0x148779['rules'][_0x384b46][_0xf326('0x63')]+'\x20'+_0x148779[_0xf326('0x61')][_0x384b46]['condition']+(_0x14e8c0(_0x148779[_0xf326('0x61')][_0x384b46][_0xf326('0x64')])?'\x20'+_0x148779[_0xf326('0x61')][_0x384b46][_0xf326('0x65')]:'');}return _0x38b696+')';};var _0x2ab607={'where':{'id':_0x2ec314['id']}},_0x35c228,_0x1bb7cc,_0x5794d0,_0x15d61e,_0x107c00;_0x2ab607=_[_0xf326('0x3b')]({},_0x2ab607,_0x25b56c);return db[_0xf326('0x2c')][_0xf326('0x46')](_0x2ab607)[_0xf326('0x21')](function(_0x204002){if(_0x204002){_0x35c228=_0x204002;return _0x204002[_0xf326('0x66')]();}return null;})['then'](function(_0xa8e05b){if(_0xa8e05b){if(!_0xa8e05b[_0xf326('0x45')]){throw new db['Sequelize'][(_0xf326('0x68'))]('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x1bb7cc=_0xa8e05b;return db[_0xf326('0x83')][_0xf326('0x3f')]({'raw':!![]});}return null;})[_0xf326('0x21')](function(_0x2a0f36){if(_0x2a0f36){_0x5794d0=_[_0xf326('0x6a')](_0x2a0f36,'id');var _0x3097cf;var _0xf66b70=squel[_0xf326('0x84')]();_0xf66b70[_0xf326('0x85')](_0x35c228[_0xf326('0x6b')]);for(var _0x3f073c=0x0;_0x3f073c<_0x1bb7cc[_0xf326('0x45')];_0x3f073c+=0x1){_0x3097cf=_0x1bb7cc[_0x3f073c][_0xf326('0x6c')]?_0x5794d0[_0x1bb7cc[_0x3f073c][_0xf326('0x6c')]]['metric']:_0x1bb7cc[_0x3f073c][_0xf326('0x63')];_0x3097cf=_0x1bb7cc[_0x3f073c][_0xf326('0x86')]?_[_0xf326('0x6f')](_0x147d51[_0x1bb7cc[_0x3f073c][_0xf326('0x86')]],'%s',_0x3097cf):_0x3097cf;_0x3097cf=_0x1bb7cc[_0x3f073c][_0xf326('0x6e')]?_['replace'](_0x26bbb1[_0x1bb7cc[_0x3f073c][_0xf326('0x6e')]],'%s',_0x3097cf):_0x3097cf;if(_0x1bb7cc[_0x3f073c][_0xf326('0x70')]){_0xf66b70[_0xf326('0x62')](_0x3097cf);}_0x1bb7cc[_0x3f073c][_0xf326('0x72')]&&_0xf66b70[_0xf326('0x71')](_0x3097cf,_0x1bb7cc[_0x3f073c]['orderBy']==='DESC'?![]:!![]);_0xf66b70[_0xf326('0x63')](_0x3097cf,_0x1bb7cc[_0x3f073c]['alias']||_0x3097cf);}if(_0x35c228[_0xf326('0x74')]){_0x35c228[_0xf326('0x74')]=JSON[_0xf326('0x87')](_0x35c228['joins']);for(var _0x54b023=0x0;_0x54b023<_0x35c228[_0xf326('0x74')][_0xf326('0x45')];_0x54b023+=0x1){if(_0x35c228[_0xf326('0x74')][_0x54b023][_0xf326('0x2e')]&&_[_0xf326('0x5c')](_0x5f1724,_0x35c228['joins'][_0x54b023][_0xf326('0x2e')])&&_0x35c228[_0xf326('0x74')][_0x54b023][_0xf326('0x77')]&&_0x35c228['joins'][_0x54b023]['foreignTable']&&_0x35c228['joins'][_0x54b023][_0xf326('0x76')]){_0xf66b70[_0x35c228[_0xf326('0x74')][_0x54b023][_0xf326('0x2e')]](_0x35c228[_0xf326('0x74')][_0x54b023][_0xf326('0x75')],null,util[_0xf326('0x6e')](_0xf326('0x88'),_0x35c228['table'],_0x35c228['joins'][_0x54b023][_0xf326('0x77')],_0x35c228[_0xf326('0x74')][_0x54b023][_0xf326('0x75')],_0x35c228['joins'][_0x54b023][_0xf326('0x76')]));}}}if(_0x35c228[_0xf326('0x78')]){_0x35c228[_0xf326('0x78')]=JSON['parse'](_0x35c228[_0xf326('0x78')]);_0xf66b70[_0xf326('0x38')](_0x1e50aa(_0x35c228[_0xf326('0x78')][_0xf326('0x62')]));}_0x107c00=_0xf66b70['clone']();_0xf66b70['limit'](_0x323926);_0xf66b70['offset'](0x0);return;}})[_0xf326('0x21')](function(){if(_0xf76a89[_0xf326('0x89')]===_0xf326('0x8a')){return null;}var _0x5f0b45=_[_0xf326('0x3b')](_0xf76a89,{'name':_0xf76a89[_0xf326('0x8b')]||_0xf76a89[_0xf326('0x28')]||_0x35c228['name'],'basename':_0x5d23f0,'savename':util[_0xf326('0x6e')](_0xf326('0x8c'),_0xf76a89[_0xf326('0x28')]||_0x35c228[_0xf326('0x28')],require('randomstring')[_0xf326('0x8d')](0x4),_0xf76a89['output']||_0xf326('0x8e')),'reportId':_0x35c228['id'],'reportType':_0xf326('0x8f')});return db[_0xf326('0x90')][_0xf326('0x47')](_0x5f0b45,{'raw':!![]});})['then'](function(_0x2e2f70){if(_0x35c228['table']===_0xf326('0x91')){_0x107c00[_0xf326('0x38')](_0x35c228[_0xf326('0x6b')]+_0xf326('0x92'),_0xf76a89[_0xf326('0x93')],_0xf76a89['endDate']);}else{_0x107c00['where'](_0x35c228[_0xf326('0x6b')]+_0xf326('0x94'),_0xf76a89[_0xf326('0x93')],_0xf76a89[_0xf326('0x95')]);}if(_0x2e2f70){logger['info'](_0xf326('0x96'),_0x107c00['toString']());require(_0xf326('0x97'))[_0xf326('0x98')](path[_0xf326('0x99')](__dirname,'../../components/export/',_0x2e2f70[_0xf326('0x89')]),[_0x2e2f70['id'],_0x107c00[_0xf326('0x7a')](),path[_0xf326('0x99')](__dirname,_0xf326('0x9a'),_0x2e2f70[_0xf326('0x9b')]),_0x5d23f0]);return _0x2e2f70;}else{var _0x4dc4bc=squel[_0xf326('0x84')]();_0x4dc4bc[_0xf326('0x85')]('('+_0x107c00['toString']()+')',_0xf326('0x9c'));_0x4dc4bc[_0xf326('0x63')](_0xf326('0x9d'),_0xf326('0x1e'));_0x107c00['limit'](_0xf76a89['limit']||_0x323926);_0x107c00[_0xf326('0x1c')](_0xf76a89[_0xf326('0x1c')]||0x0);return dbH['sequelize'][_0xf326('0x30')](_0x4dc4bc['toString'](),{'type':dbH['sequelize'][_0xf326('0x9e')][_0xf326('0x7c')]})[_0xf326('0x21')](function(_0x37cd6f){if(!_0x37cd6f[_0xf326('0x45')]){_0x15d61e=0x0;}else{_0x15d61e=_0x37cd6f[0x0][_0xf326('0x1e')]||0x0;}return dbH[_0xf326('0x7b')][_0xf326('0x30')](_0x107c00[_0xf326('0x7a')](),{'type':dbH['sequelize'][_0xf326('0x9e')][_0xf326('0x7c')]});})[_0xf326('0x21')](function(_0x1c7f81){return{'rows':_0x1c7f81||[],'count':_0x15d61e};});}});}exports['run']=function(_0x3e6a5d,_0x20020c){return runReport(_0x3e6a5d[_0xf326('0x42')],_0x3e6a5d[_0xf326('0x30')],_0x3e6a5d[_0xf326('0x3c')])['then'](respondWithResult(_0x20020c,null))[_0xf326('0x40')](handleError(_0x20020c,null));};exports['runReport']=runReport;exports[_0xf326('0x30')]=function(_0x14d255,_0xffd165){var _0x2bc501=0xa;var _0x4bd216=[_0xf326('0x99'),_0xf326('0x51'),_0xf326('0x52'),'cross_join'];var _0x23451e={'SUM':_0xf326('0x7d'),'COUNT':_0xf326('0x54'),'COUNT DISTINCT':_0xf326('0x7e'),'MAX':'MAX(%s)','MIN':_0xf326('0x55'),'AVG':_0xf326('0x80'),'GROUP_CONCAT':_0xf326('0x56'),'GROUP_CONCAT ASC':_0xf326('0x57'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x310223={'SEC_TO_TIME':_0xf326('0x9f'),'DATE':_0xf326('0x59'),'HOUR':'HOUR(%s)','ROUND':_0xf326('0x5b'),'UNIX_TIMESTAMP':_0xf326('0x81')};var _0x539d23=function(_0x171c53){return!_[_0xf326('0x5c')]([_0xf326('0x5d'),_0xf326('0x5e'),_0xf326('0x5f'),_0xf326('0x60')],_0x171c53);};var _0x4c7fc0=function(_0x4ffde1){if(!_0x4ffde1||!_0x4ffde1[_0xf326('0x61')][_0xf326('0x45')]){return'';}for(var _0x4307d9='(',_0x2fa05b=0x0;_0x2fa05b<_0x4ffde1[_0xf326('0x61')][_0xf326('0x45')];_0x2fa05b+=0x1){_0x2fa05b>0x0&&(_0x4307d9+='\x20'+_0x4ffde1['operator']+'\x20');_0x4307d9+=_0x4ffde1[_0xf326('0x61')][_0x2fa05b][_0xf326('0x62')]?_0x4c7fc0(_0x4ffde1[_0xf326('0x61')][_0x2fa05b][_0xf326('0x62')]):_0x4ffde1[_0xf326('0x61')][_0x2fa05b][_0xf326('0x63')]+'\x20'+_0x4ffde1[_0xf326('0x61')][_0x2fa05b][_0xf326('0x64')]+(_0x539d23(_0x4ffde1[_0xf326('0x61')][_0x2fa05b]['condition'])?'\x20'+_0x4ffde1[_0xf326('0x61')][_0x2fa05b]['value']:'');}return _0x4307d9+')';};var _0x590dc0={'where':{'id':_0x14d255[_0xf326('0x42')]['id']}},_0x32fc6e,_0x549a1f,_0x1f37f9,_0x3e0918,_0x3398fd;_0x590dc0=_[_0xf326('0x3b')]({},_0x590dc0,_0x14d255[_0xf326('0x3c')]);return db[_0xf326('0x2c')][_0xf326('0x46')](_0x590dc0)[_0xf326('0x21')](function(_0x314442){if(_0x314442){_0x32fc6e=_0x314442;return _0x314442[_0xf326('0x66')]();}return null;})[_0xf326('0x21')](function(_0x4c1fcd){if(_0x4c1fcd){if(!_0x4c1fcd[_0xf326('0x45')]){throw new db[(_0xf326('0x67'))][(_0xf326('0x68'))](_0xf326('0x69'),0x193);}_0x549a1f=_0x4c1fcd;return db[_0xf326('0x83')][_0xf326('0x3f')]({'raw':!![]});}return null;})[_0xf326('0x21')](function(_0x5429a2){if(_0x5429a2){_0x1f37f9=_[_0xf326('0x6a')](_0x5429a2,'id');var _0x15f799;var _0x320ab3=squel[_0xf326('0x84')]();_0x320ab3[_0xf326('0x85')](_0x32fc6e[_0xf326('0x6b')]);for(var _0x2094bf=0x0;_0x2094bf<_0x549a1f['length'];_0x2094bf+=0x1){_0x15f799=_0x549a1f[_0x2094bf][_0xf326('0x6c')]?_0x1f37f9[_0x549a1f[_0x2094bf][_0xf326('0x6c')]][_0xf326('0x6d')]:_0x549a1f[_0x2094bf][_0xf326('0x63')];_0x15f799=_0x549a1f[_0x2094bf][_0xf326('0x86')]?_[_0xf326('0x6f')](_0x23451e[_0x549a1f[_0x2094bf][_0xf326('0x86')]],'%s',_0x15f799):_0x15f799;_0x15f799=_0x549a1f[_0x2094bf][_0xf326('0x6e')]?_[_0xf326('0x6f')](_0x310223[_0x549a1f[_0x2094bf][_0xf326('0x6e')]],'%s',_0x15f799):_0x15f799;if(_0x549a1f[_0x2094bf][_0xf326('0x70')]){_0x320ab3[_0xf326('0x62')](_0x15f799);}_0x549a1f[_0x2094bf]['orderBy']&&_0x320ab3[_0xf326('0x71')](_0x15f799,_0x549a1f[_0x2094bf][_0xf326('0x72')]===_0xf326('0x73')?![]:!![]);_0x320ab3['field'](_0x15f799,_0x549a1f[_0x2094bf]['alias']||_0x15f799);}if(_0x32fc6e[_0xf326('0x74')]){_0x32fc6e[_0xf326('0x74')]=JSON[_0xf326('0x87')](_0x32fc6e[_0xf326('0x74')]);for(var _0x5384a5=0x0;_0x5384a5<_0x32fc6e[_0xf326('0x74')][_0xf326('0x45')];_0x5384a5+=0x1){if(_0x32fc6e[_0xf326('0x74')][_0x5384a5]['type']&&_['includes'](_0x4bd216,_0x32fc6e['joins'][_0x5384a5][_0xf326('0x2e')])&&_0x32fc6e[_0xf326('0x74')][_0x5384a5][_0xf326('0x77')]&&_0x32fc6e['joins'][_0x5384a5][_0xf326('0x75')]&&_0x32fc6e['joins'][_0x5384a5][_0xf326('0x76')]){_0x320ab3[_0x32fc6e['joins'][_0x5384a5][_0xf326('0x2e')]](_0x32fc6e[_0xf326('0x74')][_0x5384a5][_0xf326('0x75')],null,util[_0xf326('0x6e')](_0xf326('0x88'),_0x32fc6e[_0xf326('0x6b')],_0x32fc6e[_0xf326('0x74')][_0x5384a5][_0xf326('0x77')],_0x32fc6e[_0xf326('0x74')][_0x5384a5][_0xf326('0x75')],_0x32fc6e[_0xf326('0x74')][_0x5384a5][_0xf326('0x76')]));}}}if(_0x32fc6e[_0xf326('0x78')]){_0x32fc6e[_0xf326('0x78')]=JSON['parse'](_0x32fc6e[_0xf326('0x78')]);_0x320ab3[_0xf326('0x38')](_0x4c7fc0(_0x32fc6e[_0xf326('0x78')]['group']));}_0x3398fd=_0x320ab3['clone']();_0x320ab3['limit'](_0x2bc501);_0x320ab3[_0xf326('0x1c')](0x0);logger[_0xf326('0xa0')](_0xf326('0x79'),_0x320ab3[_0xf326('0x7a')]());return dbH[_0xf326('0x7b')][_0xf326('0x30')](_0x320ab3['toString'](),{'type':dbH[_0xf326('0x7b')][_0xf326('0x9e')][_0xf326('0x7c')]});}})[_0xf326('0x21')](function(){return{'sql':_0x3398fd[_0xf326('0x7a')]()};})['then'](respondWithResult(_0xffd165,null))[_0xf326('0x40')](handleError(_0xffd165,null));};
\ No newline at end of file
index 74af804..1913c13 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4335=['lodash','../../config/logger','moment','bluebird','request-promise','path','rimraf','./analyticDefaultReport.attributes','define','AnalyticDefaultReport','analytics_default_reports'];(function(_0x1c8c45,_0x4c18b0){var _0x1e139a=function(_0x4b5719){while(--_0x4b5719){_0x1c8c45['push'](_0x1c8c45['shift']());}};_0x1e139a(++_0x4c18b0);}(_0x4335,0x108));var _0x5433=function(_0x5ac84c,_0x287781){_0x5ac84c=_0x5ac84c-0x0;var _0x3c53d2=_0x4335[_0x5ac84c];return _0x3c53d2;};'use strict';var _=require(_0x5433('0x0'));var util=require('util');var logger=require(_0x5433('0x1'))('api');var moment=require(_0x5433('0x2'));var BPromise=require(_0x5433('0x3'));var rp=require(_0x5433('0x4'));var fs=require('fs');var path=require(_0x5433('0x5'));var rimraf=require(_0x5433('0x6'));var config=require('../../config/environment');var attributes=require(_0x5433('0x7'));module['exports']=function(_0x11bb70,_0x2644b1){return _0x11bb70[_0x5433('0x8')](_0x5433('0x9'),attributes,{'tableName':_0x5433('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5aea=['define','AnalyticDefaultReport','analytics_default_reports','lodash','util','moment','bluebird','request-promise','rimraf'];(function(_0x4f3c43,_0x411f0a){var _0x94567a=function(_0x13b190){while(--_0x13b190){_0x4f3c43['push'](_0x4f3c43['shift']());}};_0x94567a(++_0x411f0a);}(_0x5aea,0x16b));var _0xa5ae=function(_0x41c479,_0x15cfa0){_0x41c479=_0x41c479-0x0;var _0x2ee823=_0x5aea[_0x41c479];return _0x2ee823;};'use strict';var _=require(_0xa5ae('0x0'));var util=require(_0xa5ae('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xa5ae('0x2'));var BPromise=require(_0xa5ae('0x3'));var rp=require(_0xa5ae('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xa5ae('0x5'));var config=require('../../config/environment');var attributes=require('./analyticDefaultReport.attributes');module['exports']=function(_0x5997ef,_0xeda3cf){return _0x5997ef[_0xa5ae('0x6')](_0xa5ae('0x7'),attributes,{'tableName':_0xa5ae('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a1ff986..d755401 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcaa7=['error','code','message','info','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','AnalyticDefaultReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticDefaultReport,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x586837,_0x4f9ed1){var _0xea18c3=function(_0x3682a6){while(--_0x3682a6){_0x586837['push'](_0x586837['shift']());}};_0xea18c3(++_0x4f9ed1);}(_0xcaa7,0x13e));var _0x7caa=function(_0x8e12a1,_0x1c6949){_0x8e12a1=_0x8e12a1-0x0;var _0x4ffbc7=_0xcaa7[_0x8e12a1];return _0x4ffbc7;};'use strict';var _=require(_0x7caa('0x0'));var util=require(_0x7caa('0x1'));var moment=require('moment');var BPromise=require(_0x7caa('0x2'));var rs=require(_0x7caa('0x3'));var fs=require('fs');var Redis=require(_0x7caa('0x4'));var db=require(_0x7caa('0x5'))['db'];var utils=require(_0x7caa('0x6'));var logger=require(_0x7caa('0x7'))(_0x7caa('0x8'));var config=require(_0x7caa('0x9'));var jayson=require(_0x7caa('0xa'));var client=jayson[_0x7caa('0xb')][_0x7caa('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x503509,_0x49fe5b,_0x267f47){return new BPromise(function(_0x3318e7,_0x3c7d8c){return client[_0x7caa('0xd')](_0x503509,_0x267f47)[_0x7caa('0xe')](function(_0x531c5f){logger['info'](_0x7caa('0xf'),_0x49fe5b,_0x7caa('0x10'));logger[_0x7caa('0x11')](_0x7caa('0x12'),_0x49fe5b,_0x7caa('0x10'),JSON[_0x7caa('0x13')](_0x531c5f));if(_0x531c5f['error']){if(_0x531c5f[_0x7caa('0x14')][_0x7caa('0x15')]===0x1f4){logger[_0x7caa('0x14')](_0x7caa('0xf'),_0x49fe5b,_0x531c5f['error'][_0x7caa('0x16')]);return _0x3c7d8c(_0x531c5f[_0x7caa('0x14')]['message']);}logger[_0x7caa('0x14')]('AnalyticDefaultReport,\x20%s,\x20%s',_0x49fe5b,_0x531c5f[_0x7caa('0x14')][_0x7caa('0x16')]);return _0x3318e7(_0x531c5f[_0x7caa('0x14')][_0x7caa('0x16')]);}else{logger[_0x7caa('0x17')](_0x7caa('0xf'),_0x49fe5b,_0x7caa('0x10'));_0x3318e7(_0x531c5f[_0x7caa('0x18')]['message']);}})[_0x7caa('0x19')](function(_0x3c800f){logger[_0x7caa('0x14')](_0x7caa('0xf'),_0x49fe5b,_0x3c800f);_0x3c7d8c(_0x3c800f);});});}
\ No newline at end of file
+var _0x25a7=['catch','util','moment','../../mysqldb','../../config/utils','rpc','jayson/promise','http','info','request\x20sent','debug','AnalyticDefaultReport,\x20%s,\x20%s,\x20%s','stringify','error','message','AnalyticDefaultReport,\x20%s,\x20%s'];(function(_0x548a7d,_0x4c4cd5){var _0x22d5ed=function(_0x37e26b){while(--_0x37e26b){_0x548a7d['push'](_0x548a7d['shift']());}};_0x22d5ed(++_0x4c4cd5);}(_0x25a7,0x91));var _0x725a=function(_0x167521,_0x1a945f){_0x167521=_0x167521-0x0;var _0x29106f=_0x25a7[_0x167521];return _0x29106f;};'use strict';var _=require('lodash');var util=require(_0x725a('0x0'));var moment=require(_0x725a('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x725a('0x2'))['db'];var utils=require(_0x725a('0x3'));var logger=require('../../config/logger')(_0x725a('0x4'));var config=require('../../config/environment');var jayson=require(_0x725a('0x5'));var client=jayson['client'][_0x725a('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x28606c,_0x380c35,_0x2b115e){return new BPromise(function(_0x40793b,_0xd86efc){return client['request'](_0x28606c,_0x2b115e)['then'](function(_0x48244f){logger[_0x725a('0x7')]('AnalyticDefaultReport,\x20%s,\x20%s',_0x380c35,_0x725a('0x8'));logger[_0x725a('0x9')](_0x725a('0xa'),_0x380c35,'request\x20sent',JSON[_0x725a('0xb')](_0x48244f));if(_0x48244f[_0x725a('0xc')]){if(_0x48244f[_0x725a('0xc')]['code']===0x1f4){logger[_0x725a('0xc')]('AnalyticDefaultReport,\x20%s,\x20%s',_0x380c35,_0x48244f[_0x725a('0xc')][_0x725a('0xd')]);return _0xd86efc(_0x48244f[_0x725a('0xc')][_0x725a('0xd')]);}logger[_0x725a('0xc')](_0x725a('0xe'),_0x380c35,_0x48244f[_0x725a('0xc')][_0x725a('0xd')]);return _0x40793b(_0x48244f[_0x725a('0xc')]['message']);}else{logger[_0x725a('0x7')](_0x725a('0xe'),_0x380c35,_0x725a('0x8'));_0x40793b(_0x48244f['result'][_0x725a('0xd')]);}})[_0x725a('0xf')](function(_0x15199e){logger[_0x725a('0xc')]('AnalyticDefaultReport,\x20%s,\x20%s',_0x380c35,_0x15199e);_0xd86efc(_0x15199e);});});}
\ No newline at end of file
index 83b9f8b..45160e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3139=['get','isAuthenticated','index','show','preview','/:id/run','run','query','post','/:id','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','./analyticDefaultReport.controller'];(function(_0xedbd17,_0x2d79af){var _0x18b70e=function(_0x5f52d6){while(--_0x5f52d6){_0xedbd17['push'](_0xedbd17['shift']());}};_0x18b70e(++_0x2d79af);}(_0x3139,0x138));var _0x9313=function(_0x4ba1bf,_0x37cbdb){_0x4ba1bf=_0x4ba1bf-0x0;var _0x160d78=_0x3139[_0x4ba1bf];return _0x160d78;};'use strict';var multer=require(_0x9313('0x0'));var util=require(_0x9313('0x1'));var path=require(_0x9313('0x2'));var timeout=require(_0x9313('0x3'));var express=require('express');var router=express[_0x9313('0x4')]();var fs_extra=require(_0x9313('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x9313('0x6'));var config=require('../../config/environment');var controller=require(_0x9313('0x7'));router[_0x9313('0x8')]('/',auth[_0x9313('0x9')](),controller[_0x9313('0xa')]);router['get']('/:id',auth[_0x9313('0x9')](),controller[_0x9313('0xb')]);router['get']('/:id/preview',auth[_0x9313('0x9')](),controller[_0x9313('0xc')]);router['get'](_0x9313('0xd'),auth[_0x9313('0x9')](),controller[_0x9313('0xe')]);router[_0x9313('0x8')]('/:id/query',auth[_0x9313('0x9')](),controller[_0x9313('0xf')]);router[_0x9313('0x10')]('/',auth[_0x9313('0x9')](),controller['create']);router['put'](_0x9313('0x11'),auth['isAuthenticated'](),controller['update']);router['delete'](_0x9313('0x11'),auth[_0x9313('0x9')](),controller[_0x9313('0x12')]);module[_0x9313('0x13')]=router;
\ No newline at end of file
+var _0xff24=['post','create','put','update','/:id','destroy','exports','multer','util','path','connect-timeout','fs-extra','../../components/interaction/service','../../config/environment','./analyticDefaultReport.controller','isAuthenticated','index','get','show','/:id/preview','preview','/:id/run','run','/:id/query','query'];(function(_0x3476dd,_0x2ccef6){var _0x58fe3c=function(_0xdfc2fd){while(--_0xdfc2fd){_0x3476dd['push'](_0x3476dd['shift']());}};_0x58fe3c(++_0x2ccef6);}(_0xff24,0xb6));var _0x4ff2=function(_0x1b902b,_0x36a1f6){_0x1b902b=_0x1b902b-0x0;var _0x58c4af=_0xff24[_0x1b902b];return _0x58c4af;};'use strict';var multer=require(_0x4ff2('0x0'));var util=require(_0x4ff2('0x1'));var path=require(_0x4ff2('0x2'));var timeout=require(_0x4ff2('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x4ff2('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x4ff2('0x5'));var config=require(_0x4ff2('0x6'));var controller=require(_0x4ff2('0x7'));router['get']('/',auth[_0x4ff2('0x8')](),controller[_0x4ff2('0x9')]);router[_0x4ff2('0xa')]('/:id',auth[_0x4ff2('0x8')](),controller[_0x4ff2('0xb')]);router[_0x4ff2('0xa')](_0x4ff2('0xc'),auth[_0x4ff2('0x8')](),controller[_0x4ff2('0xd')]);router[_0x4ff2('0xa')](_0x4ff2('0xe'),auth[_0x4ff2('0x8')](),controller[_0x4ff2('0xf')]);router[_0x4ff2('0xa')](_0x4ff2('0x10'),auth['isAuthenticated'](),controller[_0x4ff2('0x11')]);router[_0x4ff2('0x12')]('/',auth['isAuthenticated'](),controller[_0x4ff2('0x13')]);router[_0x4ff2('0x14')]('/:id',auth[_0x4ff2('0x8')](),controller[_0x4ff2('0x15')]);router['delete'](_0x4ff2('0x16'),auth[_0x4ff2('0x8')](),controller[_0x4ff2('0x17')]);module[_0x4ff2('0x18')]=router;
\ No newline at end of file
index 0fc65dc..212225b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f6e=['DATE','scheduled','INTEGER','UNSIGNED','sequelize','STRING','csv'];(function(_0xafa717,_0x597a44){var _0x2614b6=function(_0x289f64){while(--_0x289f64){_0xafa717['push'](_0xafa717['shift']());}};_0x2614b6(++_0x597a44);}(_0x6f6e,0x115));var _0xe6f6=function(_0x2aa886,_0x16b6a4){_0x2aa886=_0x2aa886-0x0;var _0xd6ff3a=_0x6f6e[_0x2aa886];return _0xd6ff3a;};'use strict';var Sequelize=require(_0xe6f6('0x0'));var moment=require('moment');module['exports']={'name':{'type':Sequelize[_0xe6f6('0x1')],'allowNull':![]},'basename':{'type':Sequelize['STRING'],'allowNull':![]},'output':{'type':Sequelize['ENUM'](_0xe6f6('0x2'),'pdf','xlsx'),'allowNull':![],'defaultValue':'csv'},'savename':{'type':Sequelize['STRING'],'allowNull':![]},'startDate':{'type':Sequelize[_0xe6f6('0x3')]},'endDate':{'type':Sequelize[_0xe6f6('0x3')]},'status':{'type':Sequelize[_0xe6f6('0x1')],'defaultValue':'Loading'},'type':{'type':Sequelize['ENUM']('manual',_0xe6f6('0x4')),'allowNull':![],'defaultValue':'manual'},'reportId':{'type':Sequelize[_0xe6f6('0x5')](0xb)[_0xe6f6('0x6')]},'reportType':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xbdfd=['ENUM','xlsx','DATE','Loading','manual','scheduled','INTEGER','UNSIGNED','sequelize','moment','exports','STRING'];(function(_0x319522,_0x261324){var _0x324f26=function(_0x5b59a5){while(--_0x5b59a5){_0x319522['push'](_0x319522['shift']());}};_0x324f26(++_0x261324);}(_0xbdfd,0x80));var _0xdbdf=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xbdfd[_0x321bb2];return _0x9c12ed;};'use strict';var Sequelize=require(_0xdbdf('0x0'));var moment=require(_0xdbdf('0x1'));module[_0xdbdf('0x2')]={'name':{'type':Sequelize[_0xdbdf('0x3')],'allowNull':![]},'basename':{'type':Sequelize['STRING'],'allowNull':![]},'output':{'type':Sequelize[_0xdbdf('0x4')]('csv','pdf',_0xdbdf('0x5')),'allowNull':![],'defaultValue':'csv'},'savename':{'type':Sequelize[_0xdbdf('0x3')],'allowNull':![]},'startDate':{'type':Sequelize['DATE']},'endDate':{'type':Sequelize[_0xdbdf('0x6')]},'status':{'type':Sequelize[_0xdbdf('0x3')],'defaultValue':_0xdbdf('0x7')},'type':{'type':Sequelize[_0xdbdf('0x4')](_0xdbdf('0x8'),_0xdbdf('0x9')),'allowNull':![],'defaultValue':_0xdbdf('0x8')},'reportId':{'type':Sequelize[_0xdbdf('0xa')](0xb)[_0xdbdf('0xb')]},'reportType':{'type':Sequelize[_0xdbdf('0x3')]}};
\ No newline at end of file
index 81e33c1..86f89bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa828=['eml-format','rimraf','zip-dir','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','count','set','Content-Range','apply','reject','save','update','then','destroy','get','ExtractedReports','UserProfileResource','stack','name','map','AnalyticExtractedReport','rawAttributes','fieldName','type','key','query','keys','filters','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','userProfileId','autoAssociation','catch','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','download','basename','savename','output','existsSync','join','root','server/files/reports','Sequelize','ValidationError','Report\x20not\x20found\x20or\x20empty','exists','format','%s.%s','toLowerCase'];(function(_0x9f709c,_0x4e4f4d){var _0x4d1c7c=function(_0x2ce156){while(--_0x2ce156){_0x9f709c['push'](_0x9f709c['shift']());}};_0x4d1c7c(++_0x4e4f4d);}(_0xa828,0x126));var _0x8a82=function(_0x49f42e,_0x4a370d){_0x49f42e=_0x49f42e-0x0;var _0xbb9128=_0xa828[_0x49f42e];return _0xbb9128;};'use strict';var emlformat=require(_0x8a82('0x0'));var rimraf=require(_0x8a82('0x1'));var zipdir=require(_0x8a82('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x8a82('0x3'));var Mustache=require(_0x8a82('0x4'));var util=require(_0x8a82('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0x8a82('0x6'));var ejs=require(_0x8a82('0x7'));var fs=require('fs');var fs_extra=require(_0x8a82('0x8'));var _=require(_0x8a82('0x9'));var squel=require(_0x8a82('0xa'));var crypto=require(_0x8a82('0xb'));var jsforce=require(_0x8a82('0xc'));var deskjs=require(_0x8a82('0xd'));var toCsv=require(_0x8a82('0x6'));var querystring=require('querystring');var Papa=require(_0x8a82('0xe'));var Redis=require(_0x8a82('0xf'));var authService=require(_0x8a82('0x10'));var qs=require(_0x8a82('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x8a82('0x12'));var logger=require(_0x8a82('0x13'))('api');var utils=require(_0x8a82('0x14'));var config=require(_0x8a82('0x15'));var licenseUtil=require(_0x8a82('0x16'));var db=require(_0x8a82('0x17'))['db'];function respondWithStatusCode(_0x48be57,_0x1b105e){_0x1b105e=_0x1b105e||0xcc;return function(_0x37dba6){if(_0x37dba6){return _0x48be57[_0x8a82('0x18')](_0x1b105e);}return _0x48be57['status'](_0x1b105e)[_0x8a82('0x19')]();};}function respondWithResult(_0x40d8ef,_0x36b379){_0x36b379=_0x36b379||0xc8;return function(_0x10477b){if(_0x10477b){return _0x40d8ef[_0x8a82('0x1a')](_0x36b379)[_0x8a82('0x1b')](_0x10477b);}};}function respondWithFilteredResult(_0xd4b1f4,_0x51751b){return function(_0x4023eb){if(_0x4023eb){var _0x414a74=typeof _0x51751b['offset']==='undefined'&&typeof _0x51751b['limit']==='undefined';var _0xf94f21=_0x4023eb['count'];var _0x1a058e=_0x414a74?0x0:_0x51751b[_0x8a82('0x1c')];var _0xae790f=_0x414a74?_0x4023eb[_0x8a82('0x1d')]:_0x51751b['offset']+_0x51751b['limit'];var _0x5e9a95;if(_0xae790f>=_0xf94f21){_0xae790f=_0xf94f21;_0x5e9a95=0xc8;}else{_0x5e9a95=0xce;}_0xd4b1f4[_0x8a82('0x1a')](_0x5e9a95);return _0xd4b1f4[_0x8a82('0x1e')](_0x8a82('0x1f'),_0x1a058e+'-'+_0xae790f+'/'+_0xf94f21)[_0x8a82('0x1b')](_0x4023eb);}return null;};}function patchUpdates(_0x16e831){return function(_0x545d14){try{jsonpatch[_0x8a82('0x20')](_0x545d14,_0x16e831,!![]);}catch(_0x4bb49c){return BPromise[_0x8a82('0x21')](_0x4bb49c);}return _0x545d14[_0x8a82('0x22')]();};}function saveUpdates(_0x4a940a,_0x202cb8){return function(_0x286af5){if(_0x286af5){return _0x286af5[_0x8a82('0x23')](_0x4a940a)[_0x8a82('0x24')](function(_0x530dad){return _0x530dad;});}return null;};}function removeEntity(_0x250241,_0x1b5e76){return function(_0x11e66c){if(_0x11e66c){return _0x11e66c[_0x8a82('0x25')]()[_0x8a82('0x24')](function(){var _0x433e65=_0x11e66c[_0x8a82('0x26')]({'plain':!![]});var _0x55597b=_0x8a82('0x27');return db[_0x8a82('0x28')]['destroy']({'where':{'type':_0x55597b,'resourceId':_0x433e65['id']}})['then'](function(){return _0x11e66c;});})['then'](function(){_0x250241[_0x8a82('0x1a')](0xcc)[_0x8a82('0x19')]();});}};}function handleEntityNotFound(_0x2f7378,_0x3d2baf){return function(_0x50012d){if(!_0x50012d){_0x2f7378[_0x8a82('0x18')](0x194);}return _0x50012d;};}function handleError(_0xb3d2cc,_0x2a1df7){_0x2a1df7=_0x2a1df7||0x1f4;return function(_0xf060d0){logger['error'](_0xf060d0[_0x8a82('0x29')]);if(_0xf060d0[_0x8a82('0x2a')]){delete _0xf060d0[_0x8a82('0x2a')];}_0xb3d2cc[_0x8a82('0x1a')](_0x2a1df7)['send'](_0xf060d0);};}exports['index']=function(_0x3edf47,_0x254284){var _0x5356e1={},_0x3882d1={},_0x53657c={'count':0x0,'rows':[]};var _0x5043c8=_[_0x8a82('0x2b')](db[_0x8a82('0x2c')][_0x8a82('0x2d')],function(_0x38de7e){return{'name':_0x38de7e[_0x8a82('0x2e')],'type':_0x38de7e[_0x8a82('0x2f')][_0x8a82('0x30')]};});_0x3882d1['model']=_[_0x8a82('0x2b')](_0x5043c8,'name');_0x3882d1[_0x8a82('0x31')]=_[_0x8a82('0x32')](_0x3edf47[_0x8a82('0x31')]);_0x3882d1[_0x8a82('0x33')]=_['intersection'](_0x3882d1[_0x8a82('0x34')],_0x3882d1['query']);_0x5356e1[_0x8a82('0x35')]=_[_0x8a82('0x36')](_0x3882d1[_0x8a82('0x34')],qs[_0x8a82('0x37')](_0x3edf47[_0x8a82('0x31')][_0x8a82('0x37')]));_0x5356e1[_0x8a82('0x35')]=_0x5356e1[_0x8a82('0x35')][_0x8a82('0x38')]?_0x5356e1[_0x8a82('0x35')]:_0x3882d1['model'];if(!_0x3edf47[_0x8a82('0x31')][_0x8a82('0x39')](_0x8a82('0x3a'))){_0x5356e1[_0x8a82('0x3b')]=qs['limit'](_0x3edf47[_0x8a82('0x31')][_0x8a82('0x3b')]);_0x5356e1['offset']=qs[_0x8a82('0x1c')](_0x3edf47[_0x8a82('0x31')][_0x8a82('0x1c')]);}_0x5356e1[_0x8a82('0x3c')]=qs[_0x8a82('0x3d')](_0x3edf47[_0x8a82('0x31')][_0x8a82('0x3d')]);_0x5356e1[_0x8a82('0x3e')]=qs['filters'](_[_0x8a82('0x3f')](_0x3edf47[_0x8a82('0x31')],_0x3882d1[_0x8a82('0x33')]),_0x5043c8);if(_0x3edf47[_0x8a82('0x31')][_0x8a82('0x40')]){_0x5356e1[_0x8a82('0x3e')]=_[_0x8a82('0x41')](_0x5356e1[_0x8a82('0x3e')],{'$or':_[_0x8a82('0x2b')](_0x5043c8,function(_0x4c8a12){if(_0x4c8a12['type']!==_0x8a82('0x42')){var _0x5049af={};_0x5049af[_0x4c8a12[_0x8a82('0x2a')]]={'$like':'%'+_0x3edf47[_0x8a82('0x31')][_0x8a82('0x40')]+'%'};return _0x5049af;}})});}_0x5356e1=_[_0x8a82('0x41')]({},_0x5356e1,_0x3edf47[_0x8a82('0x43')]);var _0x3838e9={'where':_0x5356e1[_0x8a82('0x3e')]};return db[_0x8a82('0x2c')][_0x8a82('0x1d')](_0x3838e9)['then'](function(_0x4094bf){_0x53657c['count']=_0x4094bf;if(_0x3edf47['query'][_0x8a82('0x44')]){_0x5356e1[_0x8a82('0x45')]=[{'all':!![]}];}return db['AnalyticExtractedReport'][_0x8a82('0x46')](_0x5356e1);})[_0x8a82('0x24')](function(_0x4278a9){_0x53657c[_0x8a82('0x47')]=_0x4278a9;return _0x53657c;})['then'](respondWithFilteredResult(_0x254284,_0x5356e1))['catch'](handleError(_0x254284,null));};exports[_0x8a82('0x48')]=function(_0x523e97,_0x4ce275){var _0x4e252a={'raw':!![],'where':{'id':_0x523e97[_0x8a82('0x49')]['id']}},_0x1906c7={};_0x1906c7[_0x8a82('0x34')]=_['keys'](db['AnalyticExtractedReport'][_0x8a82('0x2d')]);_0x1906c7[_0x8a82('0x31')]=_[_0x8a82('0x32')](_0x523e97['query']);_0x1906c7['filters']=_[_0x8a82('0x36')](_0x1906c7['model'],_0x1906c7[_0x8a82('0x31')]);_0x4e252a[_0x8a82('0x35')]=_[_0x8a82('0x36')](_0x1906c7[_0x8a82('0x34')],qs[_0x8a82('0x37')](_0x523e97[_0x8a82('0x31')][_0x8a82('0x37')]));_0x4e252a['attributes']=_0x4e252a['attributes'][_0x8a82('0x38')]?_0x4e252a[_0x8a82('0x35')]:_0x1906c7['model'];if(_0x523e97['query'][_0x8a82('0x44')]){_0x4e252a[_0x8a82('0x45')]=[{'all':!![]}];}_0x4e252a=_[_0x8a82('0x41')]({},_0x4e252a,_0x523e97[_0x8a82('0x43')]);return db[_0x8a82('0x2c')][_0x8a82('0x4a')](_0x4e252a)[_0x8a82('0x24')](handleEntityNotFound(_0x4ce275,null))[_0x8a82('0x24')](respondWithResult(_0x4ce275,null))['catch'](handleError(_0x4ce275,null));};exports[_0x8a82('0x4b')]=function(_0x1df856,_0x16d2a1){return db['AnalyticExtractedReport'][_0x8a82('0x4b')](_0x1df856[_0x8a82('0x4c')],{})[_0x8a82('0x24')](function(_0x47ba21){var _0x2d1c6d=_0x1df856[_0x8a82('0x4d')][_0x8a82('0x26')]({'plain':!![]});if(!_0x2d1c6d)throw new Error(_0x8a82('0x4e'));if(_0x2d1c6d['role']===_0x8a82('0x4d')){var _0x4e7783=_0x47ba21['get']({'plain':!![]});var _0x3dc236=_0x8a82('0x27');return db['UserProfileSection'][_0x8a82('0x4a')]({'where':{'name':_0x3dc236,'userProfileId':_0x2d1c6d[_0x8a82('0x4f')]},'raw':!![]})[_0x8a82('0x24')](function(_0x5d7c7c){if(_0x5d7c7c&&_0x5d7c7c[_0x8a82('0x50')]===0x0){return db['UserProfileResource'][_0x8a82('0x4b')]({'name':_0x4e7783[_0x8a82('0x2a')],'resourceId':_0x4e7783['id'],'type':_0x5d7c7c[_0x8a82('0x2a')],'sectionId':_0x5d7c7c['id']},{})[_0x8a82('0x24')](function(){return _0x47ba21;});}else{return _0x47ba21;}})[_0x8a82('0x51')](function(_0x5799b0){logger['error'](_0x8a82('0x52'),_0x5799b0);throw _0x5799b0;});}return _0x47ba21;})[_0x8a82('0x24')](respondWithResult(_0x16d2a1,0xc9))[_0x8a82('0x51')](handleError(_0x16d2a1,null));};exports[_0x8a82('0x23')]=function(_0x469c94,_0x41eaf4){if(_0x469c94[_0x8a82('0x4c')]['id']){delete _0x469c94[_0x8a82('0x4c')]['id'];}return db[_0x8a82('0x2c')]['find']({'where':{'id':_0x469c94[_0x8a82('0x49')]['id']}})[_0x8a82('0x24')](handleEntityNotFound(_0x41eaf4,null))[_0x8a82('0x24')](saveUpdates(_0x469c94[_0x8a82('0x4c')],null))[_0x8a82('0x24')](respondWithResult(_0x41eaf4,null))[_0x8a82('0x51')](handleError(_0x41eaf4,null));};exports[_0x8a82('0x25')]=function(_0x14f9a6,_0x5e44ef){return db[_0x8a82('0x2c')][_0x8a82('0x4a')]({'where':{'id':_0x14f9a6[_0x8a82('0x49')]['id']}})[_0x8a82('0x24')](handleEntityNotFound(_0x5e44ef,null))[_0x8a82('0x24')](removeEntity(_0x5e44ef,null))['catch'](handleError(_0x5e44ef,null));};exports[_0x8a82('0x53')]=function(_0x2799d5,_0x327440,_0x1f08f7){return db['AnalyticExtractedReport'][_0x8a82('0x4a')]({'where':{'id':_0x2799d5[_0x8a82('0x49')]['id']},'attributes':['name',_0x8a82('0x54'),_0x8a82('0x55'),_0x8a82('0x56')],'raw':!![]})[_0x8a82('0x24')](handleEntityNotFound(_0x327440,null))[_0x8a82('0x24')](function(_0x34a0df){if(_0x34a0df){if(!fs[_0x8a82('0x57')](path[_0x8a82('0x58')](config[_0x8a82('0x59')],_0x8a82('0x5a'),_0x34a0df[_0x8a82('0x55')]))){throw new db[(_0x8a82('0x5b'))][(_0x8a82('0x5c'))](_0x8a82('0x5d'));}if(_0x2799d5[_0x8a82('0x31')][_0x8a82('0x5e')]){return _0x327440[_0x8a82('0x18')](0xc8);}return _0x327440[_0x8a82('0x53')](path[_0x8a82('0x58')](config['root'],_0x8a82('0x5a'),_0x34a0df[_0x8a82('0x55')]),util[_0x8a82('0x5f')](_0x8a82('0x60'),_0x34a0df[_0x8a82('0x54')]||_0x34a0df[_0x8a82('0x2a')],_0x34a0df['output'][_0x8a82('0x61')]()));}})[_0x8a82('0x51')](handleError(_0x327440,null));};
\ No newline at end of file
+var _0x001f=['fast-json-patch','request-promise','moment','bluebird','util','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','apply','reject','update','then','destroy','ExtractedReports','UserProfileResource','sendStatus','error','stack','name','send','index','map','AnalyticExtractedReport','fieldName','type','key','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filters','filter','VIRTUAL','merge','include','rows','catch','show','params','includeAll','options','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','get','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','basename','savename','output','existsSync','join','server/files/reports','Sequelize','ValidationError','Report\x20not\x20found\x20or\x20empty','exists','download','root','format','%s.%s','toLowerCase','eml-format','rimraf','zip-dir'];(function(_0x3bd229,_0x18a659){var _0x342bc2=function(_0x40f321){while(--_0x40f321){_0x3bd229['push'](_0x3bd229['shift']());}};_0x342bc2(++_0x18a659);}(_0x001f,0x181));var _0xf001=function(_0x36dee4,_0x3d3cfe){_0x36dee4=_0x36dee4-0x0;var _0x13872f=_0x001f[_0x36dee4];return _0x13872f;};'use strict';var emlformat=require(_0xf001('0x0'));var rimraf=require(_0xf001('0x1'));var zipdir=require(_0xf001('0x2'));var jsonpatch=require(_0xf001('0x3'));var rp=require(_0xf001('0x4'));var moment=require(_0xf001('0x5'));var BPromise=require(_0xf001('0x6'));var Mustache=require('mustache');var util=require(_0xf001('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0xf001('0x8'));var ejs=require(_0xf001('0x9'));var fs=require('fs');var fs_extra=require(_0xf001('0xa'));var _=require(_0xf001('0xb'));var squel=require(_0xf001('0xc'));var crypto=require(_0xf001('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xf001('0xe'));var toCsv=require(_0xf001('0x8'));var querystring=require(_0xf001('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xf001('0x10'));var as=require(_0xf001('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xf001('0x12'));var utils=require(_0xf001('0x13'));var config=require(_0xf001('0x14'));var licenseUtil=require(_0xf001('0x15'));var db=require(_0xf001('0x16'))['db'];function respondWithStatusCode(_0x318137,_0x33a20b){_0x33a20b=_0x33a20b||0xcc;return function(_0xa2bd6f){if(_0xa2bd6f){return _0x318137['sendStatus'](_0x33a20b);}return _0x318137[_0xf001('0x17')](_0x33a20b)[_0xf001('0x18')]();};}function respondWithResult(_0x2275d1,_0x4facbf){_0x4facbf=_0x4facbf||0xc8;return function(_0x2837a8){if(_0x2837a8){return _0x2275d1['status'](_0x4facbf)[_0xf001('0x19')](_0x2837a8);}};}function respondWithFilteredResult(_0x403448,_0x163af4){return function(_0x32dd4b){if(_0x32dd4b){var _0x2bb5d7=typeof _0x163af4[_0xf001('0x1a')]===_0xf001('0x1b')&&typeof _0x163af4[_0xf001('0x1c')]===_0xf001('0x1b');var _0x2d93ba=_0x32dd4b[_0xf001('0x1d')];var _0x3385e2=_0x2bb5d7?0x0:_0x163af4['offset'];var _0x54b3a6=_0x2bb5d7?_0x32dd4b[_0xf001('0x1d')]:_0x163af4['offset']+_0x163af4['limit'];var _0x4c3d1d;if(_0x54b3a6>=_0x2d93ba){_0x54b3a6=_0x2d93ba;_0x4c3d1d=0xc8;}else{_0x4c3d1d=0xce;}_0x403448[_0xf001('0x17')](_0x4c3d1d);return _0x403448[_0xf001('0x1e')]('Content-Range',_0x3385e2+'-'+_0x54b3a6+'/'+_0x2d93ba)[_0xf001('0x19')](_0x32dd4b);}return null;};}function patchUpdates(_0x153d84){return function(_0x81e5ef){try{jsonpatch[_0xf001('0x1f')](_0x81e5ef,_0x153d84,!![]);}catch(_0x274a52){return BPromise[_0xf001('0x20')](_0x274a52);}return _0x81e5ef['save']();};}function saveUpdates(_0x1d7309,_0xc7e3b2){return function(_0x584098){if(_0x584098){return _0x584098[_0xf001('0x21')](_0x1d7309)[_0xf001('0x22')](function(_0x260bf8){return _0x260bf8;});}return null;};}function removeEntity(_0x367671,_0x48e8f3){return function(_0x3665a9){if(_0x3665a9){return _0x3665a9[_0xf001('0x23')]()['then'](function(){var _0x216204=_0x3665a9['get']({'plain':!![]});var _0x7aaa34=_0xf001('0x24');return db[_0xf001('0x25')]['destroy']({'where':{'type':_0x7aaa34,'resourceId':_0x216204['id']}})['then'](function(){return _0x3665a9;});})[_0xf001('0x22')](function(){_0x367671[_0xf001('0x17')](0xcc)[_0xf001('0x18')]();});}};}function handleEntityNotFound(_0x32bdf4,_0x4eff76){return function(_0x45f53f){if(!_0x45f53f){_0x32bdf4[_0xf001('0x26')](0x194);}return _0x45f53f;};}function handleError(_0x26e72d,_0x37e81e){_0x37e81e=_0x37e81e||0x1f4;return function(_0x4d0a13){logger[_0xf001('0x27')](_0x4d0a13[_0xf001('0x28')]);if(_0x4d0a13['name']){delete _0x4d0a13[_0xf001('0x29')];}_0x26e72d[_0xf001('0x17')](_0x37e81e)[_0xf001('0x2a')](_0x4d0a13);};}exports[_0xf001('0x2b')]=function(_0x2f7425,_0x365e9d){var _0x495e47={},_0x31c61a={},_0x344634={'count':0x0,'rows':[]};var _0x4ed1a8=_[_0xf001('0x2c')](db[_0xf001('0x2d')]['rawAttributes'],function(_0x2dc16c){return{'name':_0x2dc16c[_0xf001('0x2e')],'type':_0x2dc16c[_0xf001('0x2f')][_0xf001('0x30')]};});_0x31c61a[_0xf001('0x31')]=_[_0xf001('0x2c')](_0x4ed1a8,_0xf001('0x29'));_0x31c61a['query']=_[_0xf001('0x32')](_0x2f7425[_0xf001('0x33')]);_0x31c61a['filters']=_[_0xf001('0x34')](_0x31c61a[_0xf001('0x31')],_0x31c61a[_0xf001('0x33')]);_0x495e47[_0xf001('0x35')]=_['intersection'](_0x31c61a[_0xf001('0x31')],qs[_0xf001('0x36')](_0x2f7425[_0xf001('0x33')]['fields']));_0x495e47[_0xf001('0x35')]=_0x495e47[_0xf001('0x35')][_0xf001('0x37')]?_0x495e47['attributes']:_0x31c61a[_0xf001('0x31')];if(!_0x2f7425[_0xf001('0x33')][_0xf001('0x38')](_0xf001('0x39'))){_0x495e47[_0xf001('0x1c')]=qs['limit'](_0x2f7425[_0xf001('0x33')][_0xf001('0x1c')]);_0x495e47[_0xf001('0x1a')]=qs[_0xf001('0x1a')](_0x2f7425[_0xf001('0x33')][_0xf001('0x1a')]);}_0x495e47['order']=qs['sort'](_0x2f7425[_0xf001('0x33')][_0xf001('0x3a')]);_0x495e47[_0xf001('0x3b')]=qs['filters'](_[_0xf001('0x3c')](_0x2f7425[_0xf001('0x33')],_0x31c61a[_0xf001('0x3d')]),_0x4ed1a8);if(_0x2f7425[_0xf001('0x33')][_0xf001('0x3e')]){_0x495e47[_0xf001('0x3b')]=_['merge'](_0x495e47[_0xf001('0x3b')],{'$or':_[_0xf001('0x2c')](_0x4ed1a8,function(_0x27439e){if(_0x27439e[_0xf001('0x2f')]!==_0xf001('0x3f')){var _0xa7a1a5={};_0xa7a1a5[_0x27439e[_0xf001('0x29')]]={'$like':'%'+_0x2f7425[_0xf001('0x33')][_0xf001('0x3e')]+'%'};return _0xa7a1a5;}})});}_0x495e47=_[_0xf001('0x40')]({},_0x495e47,_0x2f7425['options']);var _0x11a8f6={'where':_0x495e47['where']};return db['AnalyticExtractedReport'][_0xf001('0x1d')](_0x11a8f6)[_0xf001('0x22')](function(_0x23b7c1){_0x344634['count']=_0x23b7c1;if(_0x2f7425[_0xf001('0x33')]['includeAll']){_0x495e47[_0xf001('0x41')]=[{'all':!![]}];}return db[_0xf001('0x2d')]['findAll'](_0x495e47);})[_0xf001('0x22')](function(_0x3a6e47){_0x344634[_0xf001('0x42')]=_0x3a6e47;return _0x344634;})['then'](respondWithFilteredResult(_0x365e9d,_0x495e47))[_0xf001('0x43')](handleError(_0x365e9d,null));};exports[_0xf001('0x44')]=function(_0x30c5e4,_0x52fe60){var _0x1d87b4={'raw':!![],'where':{'id':_0x30c5e4[_0xf001('0x45')]['id']}},_0xc5bf16={};_0xc5bf16[_0xf001('0x31')]=_[_0xf001('0x32')](db['AnalyticExtractedReport']['rawAttributes']);_0xc5bf16[_0xf001('0x33')]=_['keys'](_0x30c5e4[_0xf001('0x33')]);_0xc5bf16[_0xf001('0x3d')]=_['intersection'](_0xc5bf16['model'],_0xc5bf16[_0xf001('0x33')]);_0x1d87b4[_0xf001('0x35')]=_[_0xf001('0x34')](_0xc5bf16['model'],qs['fields'](_0x30c5e4['query'][_0xf001('0x36')]));_0x1d87b4[_0xf001('0x35')]=_0x1d87b4[_0xf001('0x35')][_0xf001('0x37')]?_0x1d87b4[_0xf001('0x35')]:_0xc5bf16[_0xf001('0x31')];if(_0x30c5e4['query'][_0xf001('0x46')]){_0x1d87b4['include']=[{'all':!![]}];}_0x1d87b4=_[_0xf001('0x40')]({},_0x1d87b4,_0x30c5e4[_0xf001('0x47')]);return db[_0xf001('0x2d')][_0xf001('0x48')](_0x1d87b4)[_0xf001('0x22')](handleEntityNotFound(_0x52fe60,null))['then'](respondWithResult(_0x52fe60,null))[_0xf001('0x43')](handleError(_0x52fe60,null));};exports[_0xf001('0x49')]=function(_0x53471d,_0x44b414){return db[_0xf001('0x2d')]['create'](_0x53471d['body'],{})[_0xf001('0x22')](function(_0x6612e7){var _0x43449c=_0x53471d[_0xf001('0x4a')]['get']({'plain':!![]});if(!_0x43449c)throw new Error(_0xf001('0x4b'));if(_0x43449c[_0xf001('0x4c')]==='user'){var _0x20ddb1=_0x6612e7[_0xf001('0x4d')]({'plain':!![]});var _0xb44471=_0xf001('0x24');return db['UserProfileSection'][_0xf001('0x48')]({'where':{'name':_0xb44471,'userProfileId':_0x43449c[_0xf001('0x4e')]},'raw':!![]})['then'](function(_0x11abf1){if(_0x11abf1&&_0x11abf1[_0xf001('0x4f')]===0x0){return db[_0xf001('0x25')][_0xf001('0x49')]({'name':_0x20ddb1[_0xf001('0x29')],'resourceId':_0x20ddb1['id'],'type':_0x11abf1[_0xf001('0x29')],'sectionId':_0x11abf1['id']},{})['then'](function(){return _0x6612e7;});}else{return _0x6612e7;}})[_0xf001('0x43')](function(_0x5e4ba8){logger[_0xf001('0x27')](_0xf001('0x50'),_0x5e4ba8);throw _0x5e4ba8;});}return _0x6612e7;})['then'](respondWithResult(_0x44b414,0xc9))[_0xf001('0x43')](handleError(_0x44b414,null));};exports[_0xf001('0x21')]=function(_0x1bfca3,_0x4c2aaa){if(_0x1bfca3['body']['id']){delete _0x1bfca3[_0xf001('0x51')]['id'];}return db[_0xf001('0x2d')]['find']({'where':{'id':_0x1bfca3['params']['id']}})[_0xf001('0x22')](handleEntityNotFound(_0x4c2aaa,null))[_0xf001('0x22')](saveUpdates(_0x1bfca3[_0xf001('0x51')],null))[_0xf001('0x22')](respondWithResult(_0x4c2aaa,null))[_0xf001('0x43')](handleError(_0x4c2aaa,null));};exports[_0xf001('0x23')]=function(_0x3024d2,_0x214ce3){return db[_0xf001('0x2d')][_0xf001('0x48')]({'where':{'id':_0x3024d2[_0xf001('0x45')]['id']}})[_0xf001('0x22')](handleEntityNotFound(_0x214ce3,null))[_0xf001('0x22')](removeEntity(_0x214ce3,null))[_0xf001('0x43')](handleError(_0x214ce3,null));};exports['download']=function(_0x1fd2b2,_0xcd4511,_0x3145c0){return db[_0xf001('0x2d')]['find']({'where':{'id':_0x1fd2b2[_0xf001('0x45')]['id']},'attributes':[_0xf001('0x29'),_0xf001('0x52'),_0xf001('0x53'),_0xf001('0x54')],'raw':!![]})[_0xf001('0x22')](handleEntityNotFound(_0xcd4511,null))[_0xf001('0x22')](function(_0x284cb8){if(_0x284cb8){if(!fs[_0xf001('0x55')](path[_0xf001('0x56')](config['root'],_0xf001('0x57'),_0x284cb8[_0xf001('0x53')]))){throw new db[(_0xf001('0x58'))][(_0xf001('0x59'))](_0xf001('0x5a'));}if(_0x1fd2b2[_0xf001('0x33')][_0xf001('0x5b')]){return _0xcd4511[_0xf001('0x26')](0xc8);}return _0xcd4511[_0xf001('0x5c')](path[_0xf001('0x56')](config[_0xf001('0x5d')],'server/files/reports',_0x284cb8[_0xf001('0x53')]),util[_0xf001('0x5e')](_0xf001('0x5f'),_0x284cb8[_0xf001('0x52')]||_0x284cb8['name'],_0x284cb8['output'][_0xf001('0x60')]()));}})['catch'](handleError(_0xcd4511,null));};
\ No newline at end of file
index 9d5e50a..415c09d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x84cb=['analytics_extracted_reports','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./analyticExtractedReport.attributes','exports','define','AnalyticExtractedReport'];(function(_0x4c184d,_0x4278ab){var _0x23d997=function(_0x22d068){while(--_0x22d068){_0x4c184d['push'](_0x4c184d['shift']());}};_0x23d997(++_0x4278ab);}(_0x84cb,0x90));var _0xb84c=function(_0x5ccfa9,_0x415e4d){_0x5ccfa9=_0x5ccfa9-0x0;var _0x228ced=_0x84cb[_0x5ccfa9];return _0x228ced;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xb84c('0x0'))(_0xb84c('0x1'));var moment=require(_0xb84c('0x2'));var BPromise=require(_0xb84c('0x3'));var rp=require(_0xb84c('0x4'));var fs=require('fs');var path=require(_0xb84c('0x5'));var rimraf=require(_0xb84c('0x6'));var config=require(_0xb84c('0x7'));var attributes=require(_0xb84c('0x8'));module[_0xb84c('0x9')]=function(_0x7753a4,_0xc7f346){return _0x7753a4[_0xb84c('0xa')](_0xb84c('0xb'),attributes,{'tableName':_0xb84c('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe35e=['./analyticExtractedReport.attributes','define','AnalyticExtractedReport','analytics_extracted_reports','util','../../config/logger','api','moment','bluebird','rimraf','../../config/environment'];(function(_0x4f9003,_0x1e817f){var _0x543781=function(_0x260799){while(--_0x260799){_0x4f9003['push'](_0x4f9003['shift']());}};_0x543781(++_0x1e817f);}(_0xe35e,0xbf));var _0xee35=function(_0x27e811,_0x20137c){_0x27e811=_0x27e811-0x0;var _0x1627fa=_0xe35e[_0x27e811];return _0x1627fa;};'use strict';var _=require('lodash');var util=require(_0xee35('0x0'));var logger=require(_0xee35('0x1'))(_0xee35('0x2'));var moment=require(_0xee35('0x3'));var BPromise=require(_0xee35('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xee35('0x5'));var config=require(_0xee35('0x6'));var attributes=require(_0xee35('0x7'));module['exports']=function(_0x72bc1d,_0x181d2f){return _0x72bc1d[_0xee35('0x8')](_0xee35('0x9'),attributes,{'tableName':_0xee35('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ee5b0bc..3849c59 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326a=['then','AnalyticExtractedReport,\x20%s,\x20%s','request\x20sent','AnalyticExtractedReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','randomstring','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request'];(function(_0x5f51d9,_0x1d3214){var _0x2d05c7=function(_0x53fa2d){while(--_0x53fa2d){_0x5f51d9['push'](_0x5f51d9['shift']());}};_0x2d05c7(++_0x1d3214);}(_0x326a,0x136));var _0xa326=function(_0x1d24eb,_0x12295b){_0x1d24eb=_0x1d24eb-0x0;var _0x1dc576=_0x326a[_0x1d24eb];return _0x1dc576;};'use strict';var _=require(_0xa326('0x0'));var util=require(_0xa326('0x1'));var moment=require(_0xa326('0x2'));var BPromise=require('bluebird');var rs=require(_0xa326('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xa326('0x4'));var logger=require(_0xa326('0x5'))('rpc');var config=require(_0xa326('0x6'));var jayson=require(_0xa326('0x7'));var client=jayson['client'][_0xa326('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3d4185,_0x41c447,_0x7ee3ea){return new BPromise(function(_0x4af70d,_0x499388){return client[_0xa326('0x9')](_0x3d4185,_0x7ee3ea)[_0xa326('0xa')](function(_0x5247f7){logger['info'](_0xa326('0xb'),_0x41c447,_0xa326('0xc'));logger['debug'](_0xa326('0xd'),_0x41c447,_0xa326('0xc'),JSON[_0xa326('0xe')](_0x5247f7));if(_0x5247f7[_0xa326('0xf')]){if(_0x5247f7['error'][_0xa326('0x10')]===0x1f4){logger[_0xa326('0xf')](_0xa326('0xb'),_0x41c447,_0x5247f7[_0xa326('0xf')]['message']);return _0x499388(_0x5247f7[_0xa326('0xf')]['message']);}logger[_0xa326('0xf')](_0xa326('0xb'),_0x41c447,_0x5247f7['error'][_0xa326('0x11')]);return _0x4af70d(_0x5247f7[_0xa326('0xf')][_0xa326('0x11')]);}else{logger['info'](_0xa326('0xb'),_0x41c447,_0xa326('0xc'));_0x4af70d(_0x5247f7[_0xa326('0x12')][_0xa326('0x11')]);}})[_0xa326('0x13')](function(_0x578973){logger[_0xa326('0xf')](_0xa326('0xb'),_0x41c447,_0x578973);_0x499388(_0x578973);});});}
\ No newline at end of file
+var _0xb184=['request','then','info','AnalyticExtractedReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticExtractedReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x326814,_0x2dfa8b){var _0x207bd4=function(_0x4236ec){while(--_0x4236ec){_0x326814['push'](_0x326814['shift']());}};_0x207bd4(++_0x2dfa8b);}(_0xb184,0x14e));var _0x4b18=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xb184[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x4b18('0x0'));var util=require(_0x4b18('0x1'));var moment=require(_0x4b18('0x2'));var BPromise=require(_0x4b18('0x3'));var rs=require(_0x4b18('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4b18('0x5'))['db'];var utils=require(_0x4b18('0x6'));var logger=require(_0x4b18('0x7'))(_0x4b18('0x8'));var config=require(_0x4b18('0x9'));var jayson=require(_0x4b18('0xa'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x32891b,_0x8cef11,_0x19e78f){return new BPromise(function(_0x26810f,_0x137bea){return client[_0x4b18('0xb')](_0x32891b,_0x19e78f)[_0x4b18('0xc')](function(_0x10c4fe){logger[_0x4b18('0xd')](_0x4b18('0xe'),_0x8cef11,_0x4b18('0xf'));logger[_0x4b18('0x10')](_0x4b18('0x11'),_0x8cef11,_0x4b18('0xf'),JSON[_0x4b18('0x12')](_0x10c4fe));if(_0x10c4fe[_0x4b18('0x13')]){if(_0x10c4fe[_0x4b18('0x13')][_0x4b18('0x14')]===0x1f4){logger[_0x4b18('0x13')](_0x4b18('0xe'),_0x8cef11,_0x10c4fe[_0x4b18('0x13')][_0x4b18('0x15')]);return _0x137bea(_0x10c4fe['error'][_0x4b18('0x15')]);}logger['error'](_0x4b18('0xe'),_0x8cef11,_0x10c4fe[_0x4b18('0x13')][_0x4b18('0x15')]);return _0x26810f(_0x10c4fe[_0x4b18('0x13')][_0x4b18('0x15')]);}else{logger[_0x4b18('0xd')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x8cef11,_0x4b18('0xf'));_0x26810f(_0x10c4fe[_0x4b18('0x16')][_0x4b18('0x15')]);}})['catch'](function(_0x25cc3b){logger[_0x4b18('0x13')](_0x4b18('0xe'),_0x8cef11,_0x25cc3b);_0x137bea(_0x25cc3b);});});}
\ No newline at end of file
index 92d7282..29a6bdc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x393f=['index','/:id','show','post','create','put','update','delete','destroy','exports','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','./analyticExtractedReport.controller','get','isAuthenticated'];(function(_0x14442e,_0x39111d){var _0x53b3d8=function(_0x277d0e){while(--_0x277d0e){_0x14442e['push'](_0x14442e['shift']());}};_0x53b3d8(++_0x39111d);}(_0x393f,0x114));var _0xf393=function(_0x5e1b44,_0x34006b){_0x5e1b44=_0x5e1b44-0x0;var _0x5cd72d=_0x393f[_0x5e1b44];return _0x5cd72d;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xf393('0x0'));var timeout=require('connect-timeout');var express=require(_0xf393('0x1'));var router=express[_0xf393('0x2')]();var fs_extra=require(_0xf393('0x3'));var auth=require(_0xf393('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xf393('0x5'));var controller=require(_0xf393('0x6'));router[_0xf393('0x7')]('/',auth[_0xf393('0x8')](),controller[_0xf393('0x9')]);router[_0xf393('0x7')](_0xf393('0xa'),auth['isAuthenticated'](),controller[_0xf393('0xb')]);router[_0xf393('0x7')]('/:id/download',auth[_0xf393('0x8')](),controller['download']);router[_0xf393('0xc')]('/',auth['isAuthenticated'](),controller[_0xf393('0xd')]);router[_0xf393('0xe')](_0xf393('0xa'),auth[_0xf393('0x8')](),controller[_0xf393('0xf')]);router[_0xf393('0x10')](_0xf393('0xa'),auth[_0xf393('0x8')](),controller[_0xf393('0x11')]);module[_0xf393('0x12')]=router;
\ No newline at end of file
+var _0x5c71=['/:id','isAuthenticated','show','create','update','exports','express','Router','../../components/interaction/service','./analyticExtractedReport.controller','get'];(function(_0x23a0b6,_0x1625ed){var _0x276250=function(_0x5bfd35){while(--_0x5bfd35){_0x23a0b6['push'](_0x23a0b6['shift']());}};_0x276250(++_0x1625ed);}(_0x5c71,0x124));var _0x15c7=function(_0x2c41fb,_0x24b8b6){_0x2c41fb=_0x2c41fb-0x0;var _0x242bbc=_0x5c71[_0x2c41fb];return _0x242bbc;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x15c7('0x0'));var router=express[_0x15c7('0x1')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x15c7('0x2'));var config=require('../../config/environment');var controller=require(_0x15c7('0x3'));router[_0x15c7('0x4')]('/',auth['isAuthenticated'](),controller['index']);router[_0x15c7('0x4')](_0x15c7('0x5'),auth[_0x15c7('0x6')](),controller[_0x15c7('0x7')]);router[_0x15c7('0x4')]('/:id/download',auth[_0x15c7('0x6')](),controller['download']);router['post']('/',auth['isAuthenticated'](),controller[_0x15c7('0x8')]);router['put'](_0x15c7('0x5'),auth[_0x15c7('0x6')](),controller[_0x15c7('0x9')]);router['delete']('/:id',auth[_0x15c7('0x6')](),controller['destroy']);module[_0x15c7('0xa')]=router;
\ No newline at end of file
index 48d748c..bb19a63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0118=['BOOLEAN','sequelize','TEXT','STRING'];(function(_0x557fd2,_0x2c0a7a){var _0x1b54a2=function(_0x2e439b){while(--_0x2e439b){_0x557fd2['push'](_0x557fd2['shift']());}};_0x1b54a2(++_0x2c0a7a);}(_0x0118,0x1b5));var _0x8011=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x0118[_0x14add3];return _0x4a174f;};'use strict';var Sequelize=require(_0x8011('0x0'));module['exports']={'field':{'type':Sequelize[_0x8011('0x1')]},'alias':{'type':Sequelize[_0x8011('0x2')]},'function':{'type':Sequelize[_0x8011('0x2')]},'format':{'type':Sequelize[_0x8011('0x2')]},'groupBy':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'orderBy':{'type':Sequelize[_0x8011('0x2')]},'custom':{'type':Sequelize[_0x8011('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0x3454=['sequelize','TEXT','STRING','BOOLEAN'];(function(_0x3b27bd,_0x157a92){var _0x1b0b21=function(_0x4e8c4f){while(--_0x4e8c4f){_0x3b27bd['push'](_0x3b27bd['shift']());}};_0x1b0b21(++_0x157a92);}(_0x3454,0x118));var _0x4345=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x3454[_0x14add3];return _0x4a174f;};'use strict';var Sequelize=require(_0x4345('0x0'));module['exports']={'field':{'type':Sequelize[_0x4345('0x1')]},'alias':{'type':Sequelize[_0x4345('0x2')]},'function':{'type':Sequelize[_0x4345('0x2')]},'format':{'type':Sequelize[_0x4345('0x2')]},'groupBy':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'orderBy':{'type':Sequelize['STRING']},'custom':{'type':Sequelize[_0x4345('0x3')],'defaultValue':![]}};
\ No newline at end of file
index 0a22c85..04ca5df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x85e7=['map','rawAttributes','fieldName','type','model','filters','intersection','attributes','fields','query','hasOwnProperty','order','sort','where','filter','merge','VIRTUAL','options','includeAll','AnalyticFieldReport','findAll','rows','catch','show','params','keys','include','find','create','body','bulkCreate','destroy','bulkDestroy','ids','addFields','findOne','sequelize','CustomReportId','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','apply','update','then','end','error','stack','name','index'];(function(_0x17be49,_0x48e399){var _0x1c9411=function(_0x2ff174){while(--_0x2ff174){_0x17be49['push'](_0x17be49['shift']());}};_0x1c9411(++_0x48e399);}(_0x85e7,0xcc));var _0x785e=function(_0x215488,_0x497875){_0x215488=_0x215488-0x0;var _0x13db01=_0x85e7[_0x215488];return _0x13db01;};'use strict';var emlformat=require(_0x785e('0x0'));var rimraf=require(_0x785e('0x1'));var zipdir=require(_0x785e('0x2'));var jsonpatch=require(_0x785e('0x3'));var rp=require(_0x785e('0x4'));var moment=require(_0x785e('0x5'));var BPromise=require(_0x785e('0x6'));var Mustache=require(_0x785e('0x7'));var util=require(_0x785e('0x8'));var path=require(_0x785e('0x9'));var sox=require(_0x785e('0xa'));var csv=require(_0x785e('0xb'));var ejs=require(_0x785e('0xc'));var fs=require('fs');var fs_extra=require(_0x785e('0xd'));var _=require(_0x785e('0xe'));var squel=require('squel');var crypto=require(_0x785e('0xf'));var jsforce=require(_0x785e('0x10'));var deskjs=require(_0x785e('0x11'));var toCsv=require(_0x785e('0xb'));var querystring=require(_0x785e('0x12'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x785e('0x13'));var qs=require(_0x785e('0x14'));var as=require(_0x785e('0x15'));var hardwareService=require(_0x785e('0x16'));var logger=require(_0x785e('0x17'))('api');var utils=require(_0x785e('0x18'));var config=require(_0x785e('0x19'));var licenseUtil=require(_0x785e('0x1a'));var db=require(_0x785e('0x1b'))['db'];function respondWithStatusCode(_0x141ec4,_0x4cbdc7){_0x4cbdc7=_0x4cbdc7||0xcc;return function(_0x12dd94){if(_0x12dd94){return _0x141ec4[_0x785e('0x1c')](_0x4cbdc7);}return _0x141ec4[_0x785e('0x1d')](_0x4cbdc7)['end']();};}function respondWithResult(_0x174b4f,_0x59497e){_0x59497e=_0x59497e||0xc8;return function(_0x17610f){if(_0x17610f){return _0x174b4f['status'](_0x59497e)[_0x785e('0x1e')](_0x17610f);}};}function respondWithFilteredResult(_0x32fe3f,_0x5dedcb){return function(_0x46b295){if(_0x46b295){var _0x2d77cf=typeof _0x5dedcb[_0x785e('0x1f')]==='undefined'&&typeof _0x5dedcb[_0x785e('0x20')]===_0x785e('0x21');var _0x25d86d=_0x46b295[_0x785e('0x22')];var _0x72066b=_0x2d77cf?0x0:_0x5dedcb['offset'];var _0x52b92a=_0x2d77cf?_0x46b295['count']:_0x5dedcb[_0x785e('0x1f')]+_0x5dedcb[_0x785e('0x20')];var _0xeb34cf;if(_0x52b92a>=_0x25d86d){_0x52b92a=_0x25d86d;_0xeb34cf=0xc8;}else{_0xeb34cf=0xce;}_0x32fe3f[_0x785e('0x1d')](_0xeb34cf);return _0x32fe3f[_0x785e('0x23')](_0x785e('0x24'),_0x72066b+'-'+_0x52b92a+'/'+_0x25d86d)[_0x785e('0x1e')](_0x46b295);}return null;};}function patchUpdates(_0x54f10b){return function(_0x565ee6){try{jsonpatch[_0x785e('0x25')](_0x565ee6,_0x54f10b,!![]);}catch(_0x538828){return BPromise['reject'](_0x538828);}return _0x565ee6['save']();};}function saveUpdates(_0x154870,_0x13cf70){return function(_0x5aadf9){if(_0x5aadf9){return _0x5aadf9[_0x785e('0x26')](_0x154870)[_0x785e('0x27')](function(_0xd7ec06){return _0xd7ec06;});}return null;};}function removeEntity(_0x1bf307,_0x18198c){return function(_0x498ed4){if(_0x498ed4){return _0x498ed4['destroy']()[_0x785e('0x27')](function(){_0x1bf307['status'](0xcc)[_0x785e('0x28')]();});}};}function handleEntityNotFound(_0x249af1,_0x254b54){return function(_0xffa6b3){if(!_0xffa6b3){_0x249af1[_0x785e('0x1c')](0x194);}return _0xffa6b3;};}function handleError(_0x2f9522,_0x34e906){_0x34e906=_0x34e906||0x1f4;return function(_0x40a2c4){logger[_0x785e('0x29')](_0x40a2c4[_0x785e('0x2a')]);if(_0x40a2c4['name']){delete _0x40a2c4[_0x785e('0x2b')];}_0x2f9522['status'](_0x34e906)['send'](_0x40a2c4);};}exports[_0x785e('0x2c')]=function(_0x256d0d,_0x2081d5){var _0x4aa5a4={},_0x43b850={},_0x14a09c={'count':0x0,'rows':[]};var _0x5753a0=_[_0x785e('0x2d')](db['AnalyticFieldReport'][_0x785e('0x2e')],function(_0x4761c6){return{'name':_0x4761c6[_0x785e('0x2f')],'type':_0x4761c6[_0x785e('0x30')]['key']};});_0x43b850[_0x785e('0x31')]=_['map'](_0x5753a0,_0x785e('0x2b'));_0x43b850['query']=_['keys'](_0x256d0d['query']);_0x43b850[_0x785e('0x32')]=_[_0x785e('0x33')](_0x43b850[_0x785e('0x31')],_0x43b850['query']);_0x4aa5a4[_0x785e('0x34')]=_[_0x785e('0x33')](_0x43b850[_0x785e('0x31')],qs[_0x785e('0x35')](_0x256d0d['query'][_0x785e('0x35')]));_0x4aa5a4[_0x785e('0x34')]=_0x4aa5a4[_0x785e('0x34')]['length']?_0x4aa5a4[_0x785e('0x34')]:_0x43b850[_0x785e('0x31')];if(!_0x256d0d[_0x785e('0x36')][_0x785e('0x37')]('nolimit')){_0x4aa5a4[_0x785e('0x20')]=qs['limit'](_0x256d0d[_0x785e('0x36')][_0x785e('0x20')]);_0x4aa5a4['offset']=qs[_0x785e('0x1f')](_0x256d0d[_0x785e('0x36')]['offset']);}_0x4aa5a4[_0x785e('0x38')]=qs[_0x785e('0x39')](_0x256d0d[_0x785e('0x36')][_0x785e('0x39')]);_0x4aa5a4[_0x785e('0x3a')]=qs[_0x785e('0x32')](_['pick'](_0x256d0d['query'],_0x43b850['filters']),_0x5753a0);if(_0x256d0d[_0x785e('0x36')][_0x785e('0x3b')]){_0x4aa5a4[_0x785e('0x3a')]=_[_0x785e('0x3c')](_0x4aa5a4[_0x785e('0x3a')],{'$or':_[_0x785e('0x2d')](_0x5753a0,function(_0x197f56){if(_0x197f56[_0x785e('0x30')]!==_0x785e('0x3d')){var _0x172061={};_0x172061[_0x197f56['name']]={'$like':'%'+_0x256d0d[_0x785e('0x36')][_0x785e('0x3b')]+'%'};return _0x172061;}})});}_0x4aa5a4=_[_0x785e('0x3c')]({},_0x4aa5a4,_0x256d0d[_0x785e('0x3e')]);var _0x204b47={'where':_0x4aa5a4[_0x785e('0x3a')]};return db['AnalyticFieldReport'][_0x785e('0x22')](_0x204b47)[_0x785e('0x27')](function(_0x4104b2){_0x14a09c['count']=_0x4104b2;if(_0x256d0d[_0x785e('0x36')][_0x785e('0x3f')]){_0x4aa5a4['include']=[{'all':!![]}];}return db[_0x785e('0x40')][_0x785e('0x41')](_0x4aa5a4);})['then'](function(_0x3d735e){_0x14a09c[_0x785e('0x42')]=_0x3d735e;return _0x14a09c;})[_0x785e('0x27')](respondWithFilteredResult(_0x2081d5,_0x4aa5a4))[_0x785e('0x43')](handleError(_0x2081d5,null));};exports[_0x785e('0x44')]=function(_0x2e92b8,_0x328624){var _0x11929f={'raw':![],'where':{'id':_0x2e92b8[_0x785e('0x45')]['id']}},_0x489905={};_0x489905[_0x785e('0x31')]=_[_0x785e('0x46')](db['AnalyticFieldReport'][_0x785e('0x2e')]);_0x489905['query']=_['keys'](_0x2e92b8['query']);_0x489905[_0x785e('0x32')]=_[_0x785e('0x33')](_0x489905['model'],_0x489905[_0x785e('0x36')]);_0x11929f['attributes']=_[_0x785e('0x33')](_0x489905['model'],qs['fields'](_0x2e92b8[_0x785e('0x36')][_0x785e('0x35')]));_0x11929f['attributes']=_0x11929f[_0x785e('0x34')]['length']?_0x11929f[_0x785e('0x34')]:_0x489905[_0x785e('0x31')];if(_0x2e92b8[_0x785e('0x36')][_0x785e('0x3f')]){_0x11929f[_0x785e('0x47')]=[{'all':!![]}];}_0x11929f=_['merge']({},_0x11929f,_0x2e92b8['options']);return db[_0x785e('0x40')][_0x785e('0x48')](_0x11929f)[_0x785e('0x27')](handleEntityNotFound(_0x328624,null))[_0x785e('0x27')](respondWithResult(_0x328624,null))['catch'](handleError(_0x328624,null));};exports[_0x785e('0x49')]=function(_0x3a9e3e,_0x57bb16){return db[_0x785e('0x40')][_0x785e('0x49')](_0x3a9e3e[_0x785e('0x4a')],{})[_0x785e('0x27')](respondWithResult(_0x57bb16,0xc9))[_0x785e('0x43')](handleError(_0x57bb16,null));};exports['bulkCreate']=function(_0x469f74,_0x498fd9){return db[_0x785e('0x40')][_0x785e('0x4b')](_0x469f74[_0x785e('0x4a')],{'raw':![],'individualHooks':!![]})[_0x785e('0x27')](respondWithResult(_0x498fd9,0xc9))[_0x785e('0x43')](handleError(_0x498fd9,null));};exports['update']=function(_0x3a6fbf,_0x26e56a){if(_0x3a6fbf[_0x785e('0x4a')]['id']){delete _0x3a6fbf[_0x785e('0x4a')]['id'];}return db['AnalyticFieldReport']['find']({'where':{'id':_0x3a6fbf[_0x785e('0x45')]['id']}})[_0x785e('0x27')](handleEntityNotFound(_0x26e56a,null))['then'](saveUpdates(_0x3a6fbf[_0x785e('0x4a')],null))[_0x785e('0x27')](respondWithResult(_0x26e56a,null))[_0x785e('0x43')](handleError(_0x26e56a,null));};exports[_0x785e('0x4c')]=function(_0x3b09ba,_0x40fea8){return db[_0x785e('0x40')]['find']({'where':{'id':_0x3b09ba[_0x785e('0x45')]['id']}})[_0x785e('0x27')](handleEntityNotFound(_0x40fea8,null))[_0x785e('0x27')](removeEntity(_0x40fea8,null))[_0x785e('0x43')](handleError(_0x40fea8,null));};exports[_0x785e('0x4d')]=function(_0xbd09a,_0x479c5e){return db[_0x785e('0x40')][_0x785e('0x4c')]({'where':{'id':_0xbd09a[_0x785e('0x36')][_0x785e('0x4e')]||[]},'raw':![],'individualHooks':!![]})[_0x785e('0x27')](respondWithResult(_0x479c5e,0xcc))[_0x785e('0x43')](handleError(_0x479c5e,null));};exports[_0x785e('0x4f')]=function(_0x30f038,_0x24e51f,_0x188d7a){return db['AnalyticCustomReport'][_0x785e('0x50')]({'where':{'id':_0x30f038[_0x785e('0x45')]['id']}})['then'](handleEntityNotFound(_0x24e51f,null))['then'](function(_0x3a3120){if(_0x3a3120){return db[_0x785e('0x51')]['transaction'](function(_0x3e7536){return db[_0x785e('0x40')][_0x785e('0x4c')]({'where':{'CustomReportId':_0x30f038[_0x785e('0x45')]['id']},'transaction':_0x3e7536})[_0x785e('0x27')](function(_0x4c7b73){var _0x3f021d=_[_0x785e('0x2d')](_0x30f038[_0x785e('0x4a')],function(_0x1dc654){delete _0x1dc654['id'];_0x1dc654[_0x785e('0x52')]=_0x30f038[_0x785e('0x45')]['id'];return _0x1dc654;});return db[_0x785e('0x40')]['bulkCreate'](_0x3f021d,{'transaction':_0x3e7536});});})[_0x785e('0x27')](function(){return db['AnalyticFieldReport'][_0x785e('0x41')]({'where':{'CustomReportId':_0x30f038[_0x785e('0x45')]['id']}});});}})[_0x785e('0x27')](respondWithResult(_0x24e51f,null))['catch'](handleError(_0x24e51f,null));};
\ No newline at end of file
+var _0xef7b=['catch','show','fields','find','create','body','bulkCreate','params','bulkDestroy','addFields','AnalyticCustomReport','findOne','sequelize','transaction','CustomReportId','findAll','zip-dir','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','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','sendStatus','end','status','json','offset','limit','count','set','apply','reject','save','update','destroy','then','stack','name','map','AnalyticFieldReport','rawAttributes','type','key','query','keys','filters','intersection','model','attributes','length','hasOwnProperty','order','pick','merge','where','VIRTUAL','filter','options','include'];(function(_0x18afca,_0x4219d9){var _0x11603f=function(_0x21d5d1){while(--_0x21d5d1){_0x18afca['push'](_0x18afca['shift']());}};_0x11603f(++_0x4219d9);}(_0xef7b,0xf4));var _0xbef7=function(_0x49ca18,_0x5e6d05){_0x49ca18=_0x49ca18-0x0;var _0x145d54=_0xef7b[_0x49ca18];return _0x145d54;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xbef7('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0xbef7('0x1'));var moment=require(_0xbef7('0x2'));var BPromise=require(_0xbef7('0x3'));var Mustache=require(_0xbef7('0x4'));var util=require('util');var path=require(_0xbef7('0x5'));var sox=require(_0xbef7('0x6'));var csv=require(_0xbef7('0x7'));var ejs=require(_0xbef7('0x8'));var fs=require('fs');var fs_extra=require(_0xbef7('0x9'));var _=require(_0xbef7('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xbef7('0xb'));var toCsv=require(_0xbef7('0x7'));var querystring=require('querystring');var Papa=require(_0xbef7('0xc'));var Redis=require(_0xbef7('0xd'));var authService=require(_0xbef7('0xe'));var qs=require(_0xbef7('0xf'));var as=require(_0xbef7('0x10'));var hardwareService=require(_0xbef7('0x11'));var logger=require(_0xbef7('0x12'))('api');var utils=require(_0xbef7('0x13'));var config=require(_0xbef7('0x14'));var licenseUtil=require(_0xbef7('0x15'));var db=require(_0xbef7('0x16'))['db'];function respondWithStatusCode(_0x5e018a,_0x5572be){_0x5572be=_0x5572be||0xcc;return function(_0x3072a1){if(_0x3072a1){return _0x5e018a[_0xbef7('0x17')](_0x5572be);}return _0x5e018a['status'](_0x5572be)[_0xbef7('0x18')]();};}function respondWithResult(_0x40ce14,_0x484f2b){_0x484f2b=_0x484f2b||0xc8;return function(_0x143c71){if(_0x143c71){return _0x40ce14[_0xbef7('0x19')](_0x484f2b)[_0xbef7('0x1a')](_0x143c71);}};}function respondWithFilteredResult(_0x356955,_0x3f4f29){return function(_0x49750a){if(_0x49750a){var _0x2178ad=typeof _0x3f4f29[_0xbef7('0x1b')]==='undefined'&&typeof _0x3f4f29[_0xbef7('0x1c')]==='undefined';var _0x214e32=_0x49750a[_0xbef7('0x1d')];var _0x101c68=_0x2178ad?0x0:_0x3f4f29[_0xbef7('0x1b')];var _0x22515d=_0x2178ad?_0x49750a[_0xbef7('0x1d')]:_0x3f4f29[_0xbef7('0x1b')]+_0x3f4f29['limit'];var _0x22c8ce;if(_0x22515d>=_0x214e32){_0x22515d=_0x214e32;_0x22c8ce=0xc8;}else{_0x22c8ce=0xce;}_0x356955[_0xbef7('0x19')](_0x22c8ce);return _0x356955[_0xbef7('0x1e')]('Content-Range',_0x101c68+'-'+_0x22515d+'/'+_0x214e32)[_0xbef7('0x1a')](_0x49750a);}return null;};}function patchUpdates(_0x45d23b){return function(_0x3b49ce){try{jsonpatch[_0xbef7('0x1f')](_0x3b49ce,_0x45d23b,!![]);}catch(_0x58260f){return BPromise[_0xbef7('0x20')](_0x58260f);}return _0x3b49ce[_0xbef7('0x21')]();};}function saveUpdates(_0x2a2b71,_0x20ac06){return function(_0x50ad0b){if(_0x50ad0b){return _0x50ad0b[_0xbef7('0x22')](_0x2a2b71)['then'](function(_0x20d829){return _0x20d829;});}return null;};}function removeEntity(_0x5bf011,_0x48338d){return function(_0x5f4540){if(_0x5f4540){return _0x5f4540[_0xbef7('0x23')]()[_0xbef7('0x24')](function(){_0x5bf011['status'](0xcc)[_0xbef7('0x18')]();});}};}function handleEntityNotFound(_0x1e212b,_0x234332){return function(_0x464cea){if(!_0x464cea){_0x1e212b['sendStatus'](0x194);}return _0x464cea;};}function handleError(_0x562a3e,_0x893ae1){_0x893ae1=_0x893ae1||0x1f4;return function(_0x546282){logger['error'](_0x546282[_0xbef7('0x25')]);if(_0x546282[_0xbef7('0x26')]){delete _0x546282[_0xbef7('0x26')];}_0x562a3e['status'](_0x893ae1)['send'](_0x546282);};}exports['index']=function(_0x2799f6,_0x4357fb){var _0x1c8a90={},_0x51535c={},_0x3ddded={'count':0x0,'rows':[]};var _0x3d1457=_[_0xbef7('0x27')](db[_0xbef7('0x28')][_0xbef7('0x29')],function(_0x36347f){return{'name':_0x36347f['fieldName'],'type':_0x36347f[_0xbef7('0x2a')][_0xbef7('0x2b')]};});_0x51535c['model']=_[_0xbef7('0x27')](_0x3d1457,_0xbef7('0x26'));_0x51535c[_0xbef7('0x2c')]=_[_0xbef7('0x2d')](_0x2799f6[_0xbef7('0x2c')]);_0x51535c[_0xbef7('0x2e')]=_[_0xbef7('0x2f')](_0x51535c[_0xbef7('0x30')],_0x51535c[_0xbef7('0x2c')]);_0x1c8a90['attributes']=_[_0xbef7('0x2f')](_0x51535c[_0xbef7('0x30')],qs['fields'](_0x2799f6[_0xbef7('0x2c')]['fields']));_0x1c8a90[_0xbef7('0x31')]=_0x1c8a90[_0xbef7('0x31')][_0xbef7('0x32')]?_0x1c8a90[_0xbef7('0x31')]:_0x51535c[_0xbef7('0x30')];if(!_0x2799f6[_0xbef7('0x2c')][_0xbef7('0x33')]('nolimit')){_0x1c8a90[_0xbef7('0x1c')]=qs[_0xbef7('0x1c')](_0x2799f6[_0xbef7('0x2c')]['limit']);_0x1c8a90['offset']=qs['offset'](_0x2799f6[_0xbef7('0x2c')][_0xbef7('0x1b')]);}_0x1c8a90[_0xbef7('0x34')]=qs['sort'](_0x2799f6[_0xbef7('0x2c')]['sort']);_0x1c8a90['where']=qs[_0xbef7('0x2e')](_[_0xbef7('0x35')](_0x2799f6[_0xbef7('0x2c')],_0x51535c[_0xbef7('0x2e')]),_0x3d1457);if(_0x2799f6[_0xbef7('0x2c')]['filter']){_0x1c8a90['where']=_[_0xbef7('0x36')](_0x1c8a90[_0xbef7('0x37')],{'$or':_[_0xbef7('0x27')](_0x3d1457,function(_0x97570){if(_0x97570[_0xbef7('0x2a')]!==_0xbef7('0x38')){var _0x25d1d4={};_0x25d1d4[_0x97570['name']]={'$like':'%'+_0x2799f6[_0xbef7('0x2c')][_0xbef7('0x39')]+'%'};return _0x25d1d4;}})});}_0x1c8a90=_['merge']({},_0x1c8a90,_0x2799f6[_0xbef7('0x3a')]);var _0x51aaa6={'where':_0x1c8a90[_0xbef7('0x37')]};return db[_0xbef7('0x28')]['count'](_0x51aaa6)['then'](function(_0x21477f){_0x3ddded[_0xbef7('0x1d')]=_0x21477f;if(_0x2799f6[_0xbef7('0x2c')]['includeAll']){_0x1c8a90[_0xbef7('0x3b')]=[{'all':!![]}];}return db['AnalyticFieldReport']['findAll'](_0x1c8a90);})[_0xbef7('0x24')](function(_0x455fb0){_0x3ddded['rows']=_0x455fb0;return _0x3ddded;})[_0xbef7('0x24')](respondWithFilteredResult(_0x4357fb,_0x1c8a90))[_0xbef7('0x3c')](handleError(_0x4357fb,null));};exports[_0xbef7('0x3d')]=function(_0x57d9c9,_0x55bf15){var _0x399be9={'raw':![],'where':{'id':_0x57d9c9['params']['id']}},_0xa198f8={};_0xa198f8[_0xbef7('0x30')]=_[_0xbef7('0x2d')](db[_0xbef7('0x28')]['rawAttributes']);_0xa198f8[_0xbef7('0x2c')]=_['keys'](_0x57d9c9[_0xbef7('0x2c')]);_0xa198f8[_0xbef7('0x2e')]=_['intersection'](_0xa198f8['model'],_0xa198f8[_0xbef7('0x2c')]);_0x399be9[_0xbef7('0x31')]=_[_0xbef7('0x2f')](_0xa198f8['model'],qs[_0xbef7('0x3e')](_0x57d9c9[_0xbef7('0x2c')]['fields']));_0x399be9[_0xbef7('0x31')]=_0x399be9[_0xbef7('0x31')][_0xbef7('0x32')]?_0x399be9[_0xbef7('0x31')]:_0xa198f8[_0xbef7('0x30')];if(_0x57d9c9['query']['includeAll']){_0x399be9['include']=[{'all':!![]}];}_0x399be9=_['merge']({},_0x399be9,_0x57d9c9[_0xbef7('0x3a')]);return db['AnalyticFieldReport'][_0xbef7('0x3f')](_0x399be9)['then'](handleEntityNotFound(_0x55bf15,null))[_0xbef7('0x24')](respondWithResult(_0x55bf15,null))[_0xbef7('0x3c')](handleError(_0x55bf15,null));};exports[_0xbef7('0x40')]=function(_0x50bd39,_0x502e29){return db['AnalyticFieldReport'][_0xbef7('0x40')](_0x50bd39[_0xbef7('0x41')],{})[_0xbef7('0x24')](respondWithResult(_0x502e29,0xc9))[_0xbef7('0x3c')](handleError(_0x502e29,null));};exports[_0xbef7('0x42')]=function(_0x4f8b0b,_0x1b9ad2){return db[_0xbef7('0x28')]['bulkCreate'](_0x4f8b0b[_0xbef7('0x41')],{'raw':![],'individualHooks':!![]})[_0xbef7('0x24')](respondWithResult(_0x1b9ad2,0xc9))[_0xbef7('0x3c')](handleError(_0x1b9ad2,null));};exports['update']=function(_0x5cc361,_0x326a6a){if(_0x5cc361[_0xbef7('0x41')]['id']){delete _0x5cc361[_0xbef7('0x41')]['id'];}return db['AnalyticFieldReport'][_0xbef7('0x3f')]({'where':{'id':_0x5cc361[_0xbef7('0x43')]['id']}})['then'](handleEntityNotFound(_0x326a6a,null))[_0xbef7('0x24')](saveUpdates(_0x5cc361['body'],null))[_0xbef7('0x24')](respondWithResult(_0x326a6a,null))[_0xbef7('0x3c')](handleError(_0x326a6a,null));};exports['destroy']=function(_0x425553,_0x4ed906){return db['AnalyticFieldReport']['find']({'where':{'id':_0x425553[_0xbef7('0x43')]['id']}})[_0xbef7('0x24')](handleEntityNotFound(_0x4ed906,null))['then'](removeEntity(_0x4ed906,null))[_0xbef7('0x3c')](handleError(_0x4ed906,null));};exports[_0xbef7('0x44')]=function(_0x1e4dce,_0x481807){return db[_0xbef7('0x28')][_0xbef7('0x23')]({'where':{'id':_0x1e4dce[_0xbef7('0x2c')]['ids']||[]},'raw':![],'individualHooks':!![]})[_0xbef7('0x24')](respondWithResult(_0x481807,0xcc))[_0xbef7('0x3c')](handleError(_0x481807,null));};exports[_0xbef7('0x45')]=function(_0x574dbc,_0x56e8c9,_0x461322){return db[_0xbef7('0x46')][_0xbef7('0x47')]({'where':{'id':_0x574dbc[_0xbef7('0x43')]['id']}})['then'](handleEntityNotFound(_0x56e8c9,null))['then'](function(_0x499c8f){if(_0x499c8f){return db[_0xbef7('0x48')][_0xbef7('0x49')](function(_0x589b0e){return db[_0xbef7('0x28')][_0xbef7('0x23')]({'where':{'CustomReportId':_0x574dbc[_0xbef7('0x43')]['id']},'transaction':_0x589b0e})['then'](function(_0xbda630){var _0x474396=_[_0xbef7('0x27')](_0x574dbc[_0xbef7('0x41')],function(_0x33f306){delete _0x33f306['id'];_0x33f306[_0xbef7('0x4a')]=_0x574dbc['params']['id'];return _0x33f306;});return db[_0xbef7('0x28')][_0xbef7('0x42')](_0x474396,{'transaction':_0x589b0e});});})[_0xbef7('0x24')](function(){return db[_0xbef7('0x28')][_0xbef7('0x4b')]({'where':{'CustomReportId':_0x574dbc[_0xbef7('0x43')]['id']}});});}})[_0xbef7('0x24')](respondWithResult(_0x56e8c9,null))[_0xbef7('0x3c')](handleError(_0x56e8c9,null));};
\ No newline at end of file
index 05a3f2a..f0cd15f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1dd5=['request-promise','path','rimraf','./analyticFieldReport.attributes','exports','analytics_report_fields','util','../../config/logger','bluebird'];(function(_0x1beef3,_0x57c4b8){var _0x5af964=function(_0x36f463){while(--_0x36f463){_0x1beef3['push'](_0x1beef3['shift']());}};_0x5af964(++_0x57c4b8);}(_0x1dd5,0xde));var _0x51dd=function(_0xcc4532,_0x40cc5c){_0xcc4532=_0xcc4532-0x0;var _0x46c5bc=_0x1dd5[_0xcc4532];return _0x46c5bc;};'use strict';var _=require('lodash');var util=require(_0x51dd('0x0'));var logger=require(_0x51dd('0x1'))('api');var moment=require('moment');var BPromise=require(_0x51dd('0x2'));var rp=require(_0x51dd('0x3'));var fs=require('fs');var path=require(_0x51dd('0x4'));var rimraf=require(_0x51dd('0x5'));var config=require('../../config/environment');var attributes=require(_0x51dd('0x6'));module[_0x51dd('0x7')]=function(_0x96b23d,_0x1170de){return _0x96b23d['define']('AnalyticFieldReport',attributes,{'tableName':_0x51dd('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7a4a=['AnalyticFieldReport','analytics_report_fields','lodash','moment','bluebird','request-promise','path','../../config/environment','./analyticFieldReport.attributes','exports','define'];(function(_0x1fbf70,_0x7c72a1){var _0x174bbd=function(_0x2e5213){while(--_0x2e5213){_0x1fbf70['push'](_0x1fbf70['shift']());}};_0x174bbd(++_0x7c72a1);}(_0x7a4a,0x91));var _0xa7a4=function(_0x5b959e,_0x28debf){_0x5b959e=_0x5b959e-0x0;var _0x11df5a=_0x7a4a[_0x5b959e];return _0x11df5a;};'use strict';var _=require(_0xa7a4('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0xa7a4('0x1'));var BPromise=require(_0xa7a4('0x2'));var rp=require(_0xa7a4('0x3'));var fs=require('fs');var path=require(_0xa7a4('0x4'));var rimraf=require('rimraf');var config=require(_0xa7a4('0x5'));var attributes=require(_0xa7a4('0x6'));module[_0xa7a4('0x7')]=function(_0x160cce,_0x1f3b58){return _0x160cce[_0xa7a4('0x8')](_0xa7a4('0x9'),attributes,{'tableName':_0xa7a4('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 289d505..663a788 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3deb=['message','request\x20sent','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','info','AnalyticFieldReport,\x20%s,\x20%s','AnalyticFieldReport,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x1be79f,_0x4d5d55){var _0x3c58a9=function(_0x4b2137){while(--_0x4b2137){_0x1be79f['push'](_0x1be79f['shift']());}};_0x3c58a9(++_0x4d5d55);}(_0x3deb,0xdf));var _0xb3de=function(_0x51020b,_0x38c2c7){_0x51020b=_0x51020b-0x0;var _0x371e47=_0x3deb[_0x51020b];return _0x371e47;};'use strict';var _=require(_0xb3de('0x0'));var util=require(_0xb3de('0x1'));var moment=require(_0xb3de('0x2'));var BPromise=require(_0xb3de('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xb3de('0x4'));var db=require(_0xb3de('0x5'))['db'];var utils=require(_0xb3de('0x6'));var logger=require(_0xb3de('0x7'))(_0xb3de('0x8'));var config=require('../../config/environment');var jayson=require(_0xb3de('0x9'));var client=jayson[_0xb3de('0xa')][_0xb3de('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x18c6ce,_0x4183f7,_0xb752c7){return new BPromise(function(_0x2beb9c,_0x24ebd7){return client[_0xb3de('0xc')](_0x18c6ce,_0xb752c7)['then'](function(_0x3d2a6a){logger[_0xb3de('0xd')](_0xb3de('0xe'),_0x4183f7,'request\x20sent');logger['debug'](_0xb3de('0xf'),_0x4183f7,'request\x20sent',JSON[_0xb3de('0x10')](_0x3d2a6a));if(_0x3d2a6a[_0xb3de('0x11')]){if(_0x3d2a6a['error'][_0xb3de('0x12')]===0x1f4){logger[_0xb3de('0x11')]('AnalyticFieldReport,\x20%s,\x20%s',_0x4183f7,_0x3d2a6a[_0xb3de('0x11')][_0xb3de('0x13')]);return _0x24ebd7(_0x3d2a6a[_0xb3de('0x11')][_0xb3de('0x13')]);}logger[_0xb3de('0x11')](_0xb3de('0xe'),_0x4183f7,_0x3d2a6a[_0xb3de('0x11')]['message']);return _0x2beb9c(_0x3d2a6a[_0xb3de('0x11')][_0xb3de('0x13')]);}else{logger['info'](_0xb3de('0xe'),_0x4183f7,_0xb3de('0x14'));_0x2beb9c(_0x3d2a6a['result'][_0xb3de('0x13')]);}})[_0xb3de('0x15')](function(_0x31b950){logger[_0xb3de('0x11')]('AnalyticFieldReport,\x20%s,\x20%s',_0x4183f7,_0x31b950);_0x24ebd7(_0x31b950);});});}
\ No newline at end of file
+var _0x07f7=['client','http','request','then','AnalyticFieldReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticFieldReport,\x20%s,\x20%s,\x20%s','error','message','info','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise'];(function(_0x425b19,_0x2dcf14){var _0x15ecab=function(_0x317d46){while(--_0x317d46){_0x425b19['push'](_0x425b19['shift']());}};_0x15ecab(++_0x2dcf14);}(_0x07f7,0xae));var _0x707f=function(_0x596c43,_0x28647a){_0x596c43=_0x596c43-0x0;var _0x4e1315=_0x07f7[_0x596c43];return _0x4e1315;};'use strict';var _=require(_0x707f('0x0'));var util=require(_0x707f('0x1'));var moment=require(_0x707f('0x2'));var BPromise=require(_0x707f('0x3'));var rs=require(_0x707f('0x4'));var fs=require('fs');var Redis=require(_0x707f('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x707f('0x6'));var logger=require('../../config/logger')(_0x707f('0x7'));var config=require(_0x707f('0x8'));var jayson=require(_0x707f('0x9'));var client=jayson[_0x707f('0xa')][_0x707f('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x540bde,_0xe131d8,_0x5f3117){return new BPromise(function(_0x1b72f7,_0x400a60){return client[_0x707f('0xc')](_0x540bde,_0x5f3117)[_0x707f('0xd')](function(_0x418464){logger['info'](_0x707f('0xe'),_0xe131d8,_0x707f('0xf'));logger[_0x707f('0x10')](_0x707f('0x11'),_0xe131d8,_0x707f('0xf'),JSON['stringify'](_0x418464));if(_0x418464['error']){if(_0x418464[_0x707f('0x12')]['code']===0x1f4){logger['error'](_0x707f('0xe'),_0xe131d8,_0x418464[_0x707f('0x12')][_0x707f('0x13')]);return _0x400a60(_0x418464[_0x707f('0x12')][_0x707f('0x13')]);}logger[_0x707f('0x12')](_0x707f('0xe'),_0xe131d8,_0x418464[_0x707f('0x12')][_0x707f('0x13')]);return _0x1b72f7(_0x418464['error'][_0x707f('0x13')]);}else{logger[_0x707f('0x14')]('AnalyticFieldReport,\x20%s,\x20%s',_0xe131d8,_0x707f('0xf'));_0x1b72f7(_0x418464[_0x707f('0x15')]['message']);}})[_0x707f('0x16')](function(_0x3edab2){logger[_0x707f('0x12')]('AnalyticFieldReport,\x20%s,\x20%s',_0xe131d8,_0x3edab2);_0x400a60(_0x3edab2);});});}
\ No newline at end of file
index a335f0e..88aafe8 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(_0x5a40a1,_0x355774){var _0x4b1a7e=function(_0x4c1663){while(--_0x4c1663){_0x5a40a1['push'](_0x5a40a1['shift']());}};_0x4b1a7e(++_0x355774);}(_0xa9e0,0x123));var _0x0a9e=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xa9e0[_0x14add3];return _0x4a174f;};'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(_0x512667,_0x3ff127){var _0x595d7b=function(_0x27e3f3){while(--_0x27e3f3){_0x512667['push'](_0x512667['shift']());}};_0x595d7b(++_0x3ff127);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2bf141,_0x31eac7){_0x2bf141=_0x2bf141-0x0;var _0x48277b=_0xa9e0[_0x2bf141];return _0x48277b;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('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 8d2df7d..5c97bce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x976a=['sequelize','exports','STRING','TEXT'];(function(_0x23322e,_0x2cf32f){var _0x3ec2b4=function(_0x3c7321){while(--_0x3c7321){_0x23322e['push'](_0x23322e['shift']());}};_0x3ec2b4(++_0x2cf32f);}(_0x976a,0xf4));var _0xa976=function(_0x53afa6,_0x59e786){_0x53afa6=_0x53afa6-0x0;var _0x51f86a=_0x976a[_0x53afa6];return _0x51f86a;};'use strict';var Sequelize=require(_0xa976('0x0'));module[_0xa976('0x1')]={'name':{'type':Sequelize[_0xa976('0x2')],'allowNull':![],'unique':'name'},'table':{'type':Sequelize[_0xa976('0x2')]},'metric':{'type':Sequelize[_0xa976('0x3')]},'description':{'type':Sequelize[_0xa976('0x2')]}};
\ No newline at end of file
+var _0x1bca=['exports','STRING'];(function(_0x129ed0,_0xc9a96e){var _0x537c72=function(_0x2c1047){while(--_0x2c1047){_0x129ed0['push'](_0x129ed0['shift']());}};_0x537c72(++_0xc9a96e);}(_0x1bca,0xb6));var _0xa1bc=function(_0x49f522,_0x3c7ae7){_0x49f522=_0x49f522-0x0;var _0x47a27f=_0x1bca[_0x49f522];return _0x47a27f;};'use strict';var Sequelize=require('sequelize');module[_0xa1bc('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':'name'},'table':{'type':Sequelize[_0xa1bc('0x1')]},'metric':{'type':Sequelize['TEXT']},'description':{'type':Sequelize[_0xa1bc('0x1')]}};
\ No newline at end of file
index cc9124f..dff1afc 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(_0x15570d,_0x3bdc08){var _0xbeffca=function(_0x4b5dbb){while(--_0x4b5dbb){_0x15570d['push'](_0x15570d['shift']());}};_0xbeffca(++_0x3bdc08);}(_0xf2ca,0x16a));var _0xaf2c=function(_0x21b706,_0x1022f4){_0x21b706=_0x21b706-0x0;var _0x13b94a=_0xf2ca[_0x21b706];return _0x13b94a;};'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 _0xe14b=['papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','undefined','limit','count','offset','set','json','apply','save','update','then','get','Metrics','UserProfileResource','destroy','error','stack','name','send','index','map','AnalyticMetric','rawAttributes','fieldName','type','model','query','filters','attributes','intersection','fields','order','sort','pick','filter','where','merge','VIRTUAL','options','include','findAll','rows','show','keys','length','includeAll','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','params','eml-format','rimraf','request-promise','moment','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring'];(function(_0x5f4f7e,_0x53ee3f){var _0x3deb67=function(_0x3cd140){while(--_0x3cd140){_0x5f4f7e['push'](_0x5f4f7e['shift']());}};_0x3deb67(++_0x53ee3f);}(_0xe14b,0x93));var _0xbe14=function(_0x330e79,_0x33d114){_0x330e79=_0x330e79-0x0;var _0x187519=_0xe14b[_0x330e79];return _0x187519;};'use strict';var emlformat=require(_0xbe14('0x0'));var rimraf=require(_0xbe14('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xbe14('0x2'));var moment=require(_0xbe14('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xbe14('0x4'));var util=require('util');var path=require('path');var sox=require(_0xbe14('0x5'));var csv=require(_0xbe14('0x6'));var ejs=require(_0xbe14('0x7'));var fs=require('fs');var fs_extra=require(_0xbe14('0x8'));var _=require(_0xbe14('0x9'));var squel=require(_0xbe14('0xa'));var crypto=require(_0xbe14('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xbe14('0xc'));var Papa=require(_0xbe14('0xd'));var Redis=require(_0xbe14('0xe'));var authService=require(_0xbe14('0xf'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xbe14('0x10'));var logger=require(_0xbe14('0x11'))('api');var utils=require(_0xbe14('0x12'));var config=require(_0xbe14('0x13'));var licenseUtil=require(_0xbe14('0x14'));var db=require(_0xbe14('0x15'))['db'];function respondWithStatusCode(_0x27792f,_0x3b898d){_0x3b898d=_0x3b898d||0xcc;return function(_0x23a730){if(_0x23a730){return _0x27792f[_0xbe14('0x16')](_0x3b898d);}return _0x27792f[_0xbe14('0x17')](_0x3b898d)[_0xbe14('0x18')]();};}function respondWithResult(_0x1e4826,_0x33fd54){_0x33fd54=_0x33fd54||0xc8;return function(_0x813399){if(_0x813399){return _0x1e4826['status'](_0x33fd54)['json'](_0x813399);}};}function respondWithFilteredResult(_0x3f58f5,_0x3dc4a9){return function(_0xf4ac9){if(_0xf4ac9){var _0x37ce4e=typeof _0x3dc4a9['offset']===_0xbe14('0x19')&&typeof _0x3dc4a9[_0xbe14('0x1a')]===_0xbe14('0x19');var _0x123ede=_0xf4ac9[_0xbe14('0x1b')];var _0x29ab73=_0x37ce4e?0x0:_0x3dc4a9[_0xbe14('0x1c')];var _0x5ea1f8=_0x37ce4e?_0xf4ac9[_0xbe14('0x1b')]:_0x3dc4a9[_0xbe14('0x1c')]+_0x3dc4a9[_0xbe14('0x1a')];var _0x433459;if(_0x5ea1f8>=_0x123ede){_0x5ea1f8=_0x123ede;_0x433459=0xc8;}else{_0x433459=0xce;}_0x3f58f5[_0xbe14('0x17')](_0x433459);return _0x3f58f5[_0xbe14('0x1d')]('Content-Range',_0x29ab73+'-'+_0x5ea1f8+'/'+_0x123ede)[_0xbe14('0x1e')](_0xf4ac9);}return null;};}function patchUpdates(_0x4a1bbd){return function(_0x417c8d){try{jsonpatch[_0xbe14('0x1f')](_0x417c8d,_0x4a1bbd,!![]);}catch(_0x188ec4){return BPromise['reject'](_0x188ec4);}return _0x417c8d[_0xbe14('0x20')]();};}function saveUpdates(_0x56d845,_0x3c1c85){return function(_0x56e80c){if(_0x56e80c){return _0x56e80c[_0xbe14('0x21')](_0x56d845)['then'](function(_0x274018){return _0x274018;});}return null;};}function removeEntity(_0x3d3608,_0x505dbd){return function(_0x2da350){if(_0x2da350){return _0x2da350['destroy']()[_0xbe14('0x22')](function(){var _0x4851f8=_0x2da350[_0xbe14('0x23')]({'plain':!![]});var _0x5fa043=_0xbe14('0x24');return db[_0xbe14('0x25')][_0xbe14('0x26')]({'where':{'type':_0x5fa043,'resourceId':_0x4851f8['id']}})[_0xbe14('0x22')](function(){return _0x2da350;});})['then'](function(){_0x3d3608[_0xbe14('0x17')](0xcc)[_0xbe14('0x18')]();});}};}function handleEntityNotFound(_0x391556,_0x169369){return function(_0x5dd475){if(!_0x5dd475){_0x391556[_0xbe14('0x16')](0x194);}return _0x5dd475;};}function handleError(_0x29fc64,_0x59bf34){_0x59bf34=_0x59bf34||0x1f4;return function(_0x3c3613){logger[_0xbe14('0x27')](_0x3c3613[_0xbe14('0x28')]);if(_0x3c3613[_0xbe14('0x29')]){delete _0x3c3613[_0xbe14('0x29')];}_0x29fc64[_0xbe14('0x17')](_0x59bf34)[_0xbe14('0x2a')](_0x3c3613);};}exports[_0xbe14('0x2b')]=function(_0x4168c8,_0x16a159){var _0x40538f={},_0x3bf43c={},_0x39dc0a={'count':0x0,'rows':[]};var _0x10ae36=_[_0xbe14('0x2c')](db[_0xbe14('0x2d')][_0xbe14('0x2e')],function(_0x2ff48e){return{'name':_0x2ff48e[_0xbe14('0x2f')],'type':_0x2ff48e[_0xbe14('0x30')]['key']};});_0x3bf43c[_0xbe14('0x31')]=_['map'](_0x10ae36,'name');_0x3bf43c[_0xbe14('0x32')]=_['keys'](_0x4168c8[_0xbe14('0x32')]);_0x3bf43c[_0xbe14('0x33')]=_['intersection'](_0x3bf43c['model'],_0x3bf43c['query']);_0x40538f[_0xbe14('0x34')]=_[_0xbe14('0x35')](_0x3bf43c['model'],qs[_0xbe14('0x36')](_0x4168c8[_0xbe14('0x32')][_0xbe14('0x36')]));_0x40538f[_0xbe14('0x34')]=_0x40538f[_0xbe14('0x34')]['length']?_0x40538f['attributes']:_0x3bf43c[_0xbe14('0x31')];if(!_0x4168c8['query']['hasOwnProperty']('nolimit')){_0x40538f[_0xbe14('0x1a')]=qs[_0xbe14('0x1a')](_0x4168c8[_0xbe14('0x32')][_0xbe14('0x1a')]);_0x40538f[_0xbe14('0x1c')]=qs[_0xbe14('0x1c')](_0x4168c8[_0xbe14('0x32')][_0xbe14('0x1c')]);}_0x40538f[_0xbe14('0x37')]=qs[_0xbe14('0x38')](_0x4168c8[_0xbe14('0x32')][_0xbe14('0x38')]);_0x40538f['where']=qs['filters'](_[_0xbe14('0x39')](_0x4168c8[_0xbe14('0x32')],_0x3bf43c[_0xbe14('0x33')]),_0x10ae36);if(_0x4168c8['query'][_0xbe14('0x3a')]){_0x40538f[_0xbe14('0x3b')]=_[_0xbe14('0x3c')](_0x40538f[_0xbe14('0x3b')],{'$or':_[_0xbe14('0x2c')](_0x10ae36,function(_0x25ee1f){if(_0x25ee1f[_0xbe14('0x30')]!==_0xbe14('0x3d')){var _0x1b2608={};_0x1b2608[_0x25ee1f['name']]={'$like':'%'+_0x4168c8[_0xbe14('0x32')][_0xbe14('0x3a')]+'%'};return _0x1b2608;}})});}_0x40538f=_[_0xbe14('0x3c')]({},_0x40538f,_0x4168c8[_0xbe14('0x3e')]);var _0x3287b9={'where':_0x40538f[_0xbe14('0x3b')]};return db['AnalyticMetric'][_0xbe14('0x1b')](_0x3287b9)[_0xbe14('0x22')](function(_0x1220c9){_0x39dc0a[_0xbe14('0x1b')]=_0x1220c9;if(_0x4168c8['query']['includeAll']){_0x40538f[_0xbe14('0x3f')]=[{'all':!![]}];}return db[_0xbe14('0x2d')][_0xbe14('0x40')](_0x40538f);})['then'](function(_0x5d5318){_0x39dc0a[_0xbe14('0x41')]=_0x5d5318;return _0x39dc0a;})['then'](respondWithFilteredResult(_0x16a159,_0x40538f))['catch'](handleError(_0x16a159,null));};exports[_0xbe14('0x42')]=function(_0x1f0355,_0x8216c3){var _0x5051e4={'raw':!![],'where':{'id':_0x1f0355['params']['id']}},_0x558525={};_0x558525[_0xbe14('0x31')]=_[_0xbe14('0x43')](db[_0xbe14('0x2d')]['rawAttributes']);_0x558525[_0xbe14('0x32')]=_[_0xbe14('0x43')](_0x1f0355[_0xbe14('0x32')]);_0x558525[_0xbe14('0x33')]=_['intersection'](_0x558525['model'],_0x558525[_0xbe14('0x32')]);_0x5051e4[_0xbe14('0x34')]=_[_0xbe14('0x35')](_0x558525[_0xbe14('0x31')],qs[_0xbe14('0x36')](_0x1f0355['query']['fields']));_0x5051e4[_0xbe14('0x34')]=_0x5051e4[_0xbe14('0x34')][_0xbe14('0x44')]?_0x5051e4[_0xbe14('0x34')]:_0x558525['model'];if(_0x1f0355[_0xbe14('0x32')][_0xbe14('0x45')]){_0x5051e4['include']=[{'all':!![]}];}_0x5051e4=_[_0xbe14('0x3c')]({},_0x5051e4,_0x1f0355[_0xbe14('0x3e')]);return db[_0xbe14('0x2d')][_0xbe14('0x46')](_0x5051e4)['then'](handleEntityNotFound(_0x8216c3,null))['then'](respondWithResult(_0x8216c3,null))[_0xbe14('0x47')](handleError(_0x8216c3,null));};exports[_0xbe14('0x48')]=function(_0x4a1a37,_0x5acf90){return db[_0xbe14('0x2d')][_0xbe14('0x48')](_0x4a1a37[_0xbe14('0x49')],{})[_0xbe14('0x22')](function(_0xdbc6e1){var _0xd04fd5=_0x4a1a37[_0xbe14('0x4a')]['get']({'plain':!![]});if(!_0xd04fd5)throw new Error(_0xbe14('0x4b'));if(_0xd04fd5[_0xbe14('0x4c')]===_0xbe14('0x4a')){var _0x22b1f8=_0xdbc6e1[_0xbe14('0x23')]({'plain':!![]});var _0x494c32=_0xbe14('0x24');return db[_0xbe14('0x4d')][_0xbe14('0x46')]({'where':{'name':_0x494c32,'userProfileId':_0xd04fd5[_0xbe14('0x4e')]},'raw':!![]})[_0xbe14('0x22')](function(_0x2dbeb1){if(_0x2dbeb1&&_0x2dbeb1['autoAssociation']===0x0){return db['UserProfileResource'][_0xbe14('0x48')]({'name':_0x22b1f8[_0xbe14('0x29')],'resourceId':_0x22b1f8['id'],'type':_0x2dbeb1[_0xbe14('0x29')],'sectionId':_0x2dbeb1['id']},{})['then'](function(){return _0xdbc6e1;});}else{return _0xdbc6e1;}})['catch'](function(_0x44fe0d){logger[_0xbe14('0x27')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x44fe0d);throw _0x44fe0d;});}return _0xdbc6e1;})[_0xbe14('0x22')](respondWithResult(_0x5acf90,0xc9))[_0xbe14('0x47')](handleError(_0x5acf90,null));};exports['update']=function(_0x28f995,_0x4a40d2){if(_0x28f995[_0xbe14('0x49')]['id']){delete _0x28f995[_0xbe14('0x49')]['id'];}return db[_0xbe14('0x2d')]['find']({'where':{'id':_0x28f995[_0xbe14('0x4f')]['id']}})[_0xbe14('0x22')](handleEntityNotFound(_0x4a40d2,null))['then'](saveUpdates(_0x28f995[_0xbe14('0x49')],null))[_0xbe14('0x22')](respondWithResult(_0x4a40d2,null))[_0xbe14('0x47')](handleError(_0x4a40d2,null));};exports[_0xbe14('0x26')]=function(_0x49322f,_0x4f06a3){return db[_0xbe14('0x2d')][_0xbe14('0x46')]({'where':{'id':_0x49322f[_0xbe14('0x4f')]['id']}})[_0xbe14('0x22')](handleEntityNotFound(_0x4f06a3,null))[_0xbe14('0x22')](removeEntity(_0x4f06a3,null))[_0xbe14('0x47')](handleError(_0x4f06a3,null));};
\ No newline at end of file
index 60da42d..2e311a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b47=['bluebird','request-promise','path','./analyticMetric.attributes','exports','AnalyticMetric','analytics_metrics','lodash','../../config/logger','api','moment'];(function(_0x4debf0,_0x34404b){var _0x37959d=function(_0x379f3d){while(--_0x379f3d){_0x4debf0['push'](_0x4debf0['shift']());}};_0x37959d(++_0x34404b);}(_0x4b47,0x1b4));var _0x74b4=function(_0x38c509,_0xd5e48b){_0x38c509=_0x38c509-0x0;var _0xfdfb73=_0x4b47[_0x38c509];return _0xfdfb73;};'use strict';var _=require(_0x74b4('0x0'));var util=require('util');var logger=require(_0x74b4('0x1'))(_0x74b4('0x2'));var moment=require(_0x74b4('0x3'));var BPromise=require(_0x74b4('0x4'));var rp=require(_0x74b4('0x5'));var fs=require('fs');var path=require(_0x74b4('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x74b4('0x7'));module[_0x74b4('0x8')]=function(_0x4dc737,_0x4cd397){return _0x4dc737['define'](_0x74b4('0x9'),attributes,{'tableName':_0x74b4('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe829=['define','AnalyticMetric','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment'];(function(_0x2aba06,_0x4d8e53){var _0x110f2e=function(_0x296750){while(--_0x296750){_0x2aba06['push'](_0x2aba06['shift']());}};_0x110f2e(++_0x4d8e53);}(_0xe829,0xde));var _0x9e82=function(_0x145016,_0x40ba0b){_0x145016=_0x145016-0x0;var _0x4a57e8=_0xe829[_0x145016];return _0x4a57e8;};'use strict';var _=require('lodash');var util=require(_0x9e82('0x0'));var logger=require(_0x9e82('0x1'))(_0x9e82('0x2'));var moment=require(_0x9e82('0x3'));var BPromise=require(_0x9e82('0x4'));var rp=require(_0x9e82('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x9e82('0x6'));var config=require(_0x9e82('0x7'));var attributes=require('./analyticMetric.attributes');module['exports']=function(_0x4b8d53,_0x46f5db){return _0x4b8d53[_0x9e82('0x8')](_0x9e82('0x9'),attributes,{'tableName':'analytics_metrics','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b47e520..2496389 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf52=['error','message','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','request','then','info','AnalyticMetric,\x20%s,\x20%s','request\x20sent','debug','AnalyticMetric,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x4105d7,_0x2d1769){var _0x24b0f8=function(_0x4a8d52){while(--_0x4a8d52){_0x4105d7['push'](_0x4105d7['shift']());}};_0x24b0f8(++_0x2d1769);}(_0xcf52,0xf5));var _0x2cf5=function(_0x2175ca,_0x336f20){_0x2175ca=_0x2175ca-0x0;var _0x2b3b76=_0xcf52[_0x2175ca];return _0x2b3b76;};'use strict';var _=require(_0x2cf5('0x0'));var util=require('util');var moment=require(_0x2cf5('0x1'));var BPromise=require(_0x2cf5('0x2'));var rs=require(_0x2cf5('0x3'));var fs=require('fs');var Redis=require(_0x2cf5('0x4'));var db=require(_0x2cf5('0x5'))['db'];var utils=require(_0x2cf5('0x6'));var logger=require(_0x2cf5('0x7'))(_0x2cf5('0x8'));var config=require(_0x2cf5('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x2cf5('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5a9501,_0x10fdf3,_0x645c8c){return new BPromise(function(_0x411d86,_0x5dbc1c){return client[_0x2cf5('0xb')](_0x5a9501,_0x645c8c)[_0x2cf5('0xc')](function(_0xf5e23c){logger[_0x2cf5('0xd')](_0x2cf5('0xe'),_0x10fdf3,_0x2cf5('0xf'));logger[_0x2cf5('0x10')](_0x2cf5('0x11'),_0x10fdf3,'request\x20sent',JSON[_0x2cf5('0x12')](_0xf5e23c));if(_0xf5e23c['error']){if(_0xf5e23c[_0x2cf5('0x13')]['code']===0x1f4){logger['error'](_0x2cf5('0xe'),_0x10fdf3,_0xf5e23c['error'][_0x2cf5('0x14')]);return _0x5dbc1c(_0xf5e23c[_0x2cf5('0x13')][_0x2cf5('0x14')]);}logger['error'](_0x2cf5('0xe'),_0x10fdf3,_0xf5e23c[_0x2cf5('0x13')]['message']);return _0x411d86(_0xf5e23c['error'][_0x2cf5('0x14')]);}else{logger[_0x2cf5('0xd')]('AnalyticMetric,\x20%s,\x20%s',_0x10fdf3,_0x2cf5('0xf'));_0x411d86(_0xf5e23c['result'][_0x2cf5('0x14')]);}})[_0x2cf5('0x15')](function(_0x1e27ca){logger[_0x2cf5('0x13')](_0x2cf5('0xe'),_0x10fdf3,_0x1e27ca);_0x5dbc1c(_0x1e27ca);});});}
\ No newline at end of file
+var _0xee8c=['randomstring','../../mysqldb','../../config/utils','jayson/promise','client','http','then','info','request\x20sent','debug','AnalyticMetric,\x20%s,\x20%s,\x20%s','stringify','error','code','AnalyticMetric,\x20%s,\x20%s','message','result','catch','lodash','util'];(function(_0x99868f,_0xbdb8e7){var _0x27a71b=function(_0x41feca){while(--_0x41feca){_0x99868f['push'](_0x99868f['shift']());}};_0x27a71b(++_0xbdb8e7);}(_0xee8c,0xee));var _0xcee8=function(_0x1255fe,_0x176160){_0x1255fe=_0x1255fe-0x0;var _0x9e41b3=_0xee8c[_0x1255fe];return _0x9e41b3;};'use strict';var _=require(_0xcee8('0x0'));var util=require(_0xcee8('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xcee8('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xcee8('0x3'))['db'];var utils=require(_0xcee8('0x4'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0xcee8('0x5'));var client=jayson[_0xcee8('0x6')][_0xcee8('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x253153,_0x30d8ad,_0x5c1a5c){return new BPromise(function(_0x2293d2,_0x42ef72){return client['request'](_0x253153,_0x5c1a5c)[_0xcee8('0x8')](function(_0x10faee){logger[_0xcee8('0x9')]('AnalyticMetric,\x20%s,\x20%s',_0x30d8ad,_0xcee8('0xa'));logger[_0xcee8('0xb')](_0xcee8('0xc'),_0x30d8ad,_0xcee8('0xa'),JSON[_0xcee8('0xd')](_0x10faee));if(_0x10faee[_0xcee8('0xe')]){if(_0x10faee['error'][_0xcee8('0xf')]===0x1f4){logger['error'](_0xcee8('0x10'),_0x30d8ad,_0x10faee[_0xcee8('0xe')][_0xcee8('0x11')]);return _0x42ef72(_0x10faee['error'][_0xcee8('0x11')]);}logger[_0xcee8('0xe')](_0xcee8('0x10'),_0x30d8ad,_0x10faee['error'][_0xcee8('0x11')]);return _0x2293d2(_0x10faee[_0xcee8('0xe')][_0xcee8('0x11')]);}else{logger['info'](_0xcee8('0x10'),_0x30d8ad,'request\x20sent');_0x2293d2(_0x10faee[_0xcee8('0x12')][_0xcee8('0x11')]);}})[_0xcee8('0x13')](function(_0x43132f){logger[_0xcee8('0xe')](_0xcee8('0x10'),_0x30d8ad,_0x43132f);_0x42ef72(_0x43132f);});});}
\ No newline at end of file
index c96e349..5b8c4f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd9c8=['post','isAuthenticated','create','put','update','destroy','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','index','get','/:id','show'];(function(_0x35e75a,_0x5ed225){var _0xb23c7f=function(_0x2fa40c){while(--_0x2fa40c){_0x35e75a['push'](_0x35e75a['shift']());}};_0xb23c7f(++_0x5ed225);}(_0xd9c8,0x15c));var _0x8d9c=function(_0x27af45,_0x1b57aa){_0x27af45=_0x27af45-0x0;var _0x18df21=_0xd9c8[_0x27af45];return _0x18df21;};'use strict';var multer=require(_0x8d9c('0x0'));var util=require(_0x8d9c('0x1'));var path=require('path');var timeout=require(_0x8d9c('0x2'));var express=require(_0x8d9c('0x3'));var router=express[_0x8d9c('0x4')]();var fs_extra=require(_0x8d9c('0x5'));var auth=require(_0x8d9c('0x6'));var interaction=require(_0x8d9c('0x7'));var config=require(_0x8d9c('0x8'));var controller=require('./analyticMetric.controller');router['get']('/',auth['isAuthenticated'](),controller[_0x8d9c('0x9')]);router[_0x8d9c('0xa')](_0x8d9c('0xb'),auth['isAuthenticated'](),controller[_0x8d9c('0xc')]);router[_0x8d9c('0xd')]('/',auth[_0x8d9c('0xe')](),controller[_0x8d9c('0xf')]);router[_0x8d9c('0x10')](_0x8d9c('0xb'),auth[_0x8d9c('0xe')](),controller[_0x8d9c('0x11')]);router['delete'](_0x8d9c('0xb'),auth['isAuthenticated'](),controller[_0x8d9c('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0xb7b6=['util','express','Router','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/:id','post','create','put','delete','destroy','exports','multer'];(function(_0x447743,_0x59da02){var _0x3e5241=function(_0xcbf09f){while(--_0xcbf09f){_0x447743['push'](_0x447743['shift']());}};_0x3e5241(++_0x59da02);}(_0xb7b6,0x15f));var _0x6b7b=function(_0xff2851,_0x36b55a){_0xff2851=_0xff2851-0x0;var _0x29a9dc=_0xb7b6[_0xff2851];return _0x29a9dc;};'use strict';var multer=require(_0x6b7b('0x0'));var util=require(_0x6b7b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x6b7b('0x2'));var router=express[_0x6b7b('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x6b7b('0x4'));var interaction=require(_0x6b7b('0x5'));var config=require('../../config/environment');var controller=require('./analyticMetric.controller');router[_0x6b7b('0x6')]('/',auth[_0x6b7b('0x7')](),controller[_0x6b7b('0x8')]);router[_0x6b7b('0x6')](_0x6b7b('0x9'),auth['isAuthenticated'](),controller['show']);router[_0x6b7b('0xa')]('/',auth[_0x6b7b('0x7')](),controller[_0x6b7b('0xb')]);router[_0x6b7b('0xc')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0x6b7b('0xd')](_0x6b7b('0x9'),auth[_0x6b7b('0x7')](),controller[_0x6b7b('0xe')]);module[_0x6b7b('0xf')]=router;
\ No newline at end of file
index 2bb4afd..f8ad0a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa11e=['TEXT','sequelize','exports'];(function(_0x19cd6c,_0x46de98){var _0x196b4e=function(_0x10e0e4){while(--_0x10e0e4){_0x19cd6c['push'](_0x19cd6c['shift']());}};_0x196b4e(++_0x46de98);}(_0xa11e,0xfa));var _0xea11=function(_0x58006e,_0x6c6cc1){_0x58006e=_0x58006e-0x0;var _0x2c07de=_0xa11e[_0x58006e];return _0x2c07de;};'use strict';var Sequelize=require(_0xea11('0x0'));module[_0xea11('0x1')]={'tree':{'type':Sequelize[_0xea11('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0x0068=['sequelize','exports','TEXT'];(function(_0x465028,_0x4570ac){var _0xb783d4=function(_0x5458c5){while(--_0x5458c5){_0x465028['push'](_0x465028['shift']());}};_0xb783d4(++_0x4570ac);}(_0x0068,0xd5));var _0x8006=function(_0x5b10cf,_0x2b1e47){_0x5b10cf=_0x5b10cf-0x0;var _0x359633=_0x0068[_0x5b10cf];return _0x359633;};'use strict';var Sequelize=require(_0x8006('0x0'));module[_0x8006('0x1')]={'tree':{'type':Sequelize[_0x8006('0x2')],'allowNull':![]}};
\ No newline at end of file
index 305c737..4f07c3a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x44e8=['sort','where','pick','filter','merge','VIRTUAL','options','include','findAll','rows','catch','show','params','length','find','create','body','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','limit','count','set','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','AnalyticTreeReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order'];(function(_0x34b3c1,_0x1ec405){var _0x4c72f0=function(_0xcf8d2e){while(--_0xcf8d2e){_0x34b3c1['push'](_0x34b3c1['shift']());}};_0x4c72f0(++_0x1ec405);}(_0x44e8,0xf5));var _0x844e=function(_0x565957,_0x53c91a){_0x565957=_0x565957-0x0;var _0x4706b7=_0x44e8[_0x565957];return _0x4706b7;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x844e('0x0'));var zipdir=require(_0x844e('0x1'));var jsonpatch=require(_0x844e('0x2'));var rp=require(_0x844e('0x3'));var moment=require(_0x844e('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x844e('0x5'));var util=require(_0x844e('0x6'));var path=require(_0x844e('0x7'));var sox=require(_0x844e('0x8'));var csv=require(_0x844e('0x9'));var ejs=require(_0x844e('0xa'));var fs=require('fs');var fs_extra=require(_0x844e('0xb'));var _=require(_0x844e('0xc'));var squel=require(_0x844e('0xd'));var crypto=require('crypto');var jsforce=require(_0x844e('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x844e('0x9'));var querystring=require(_0x844e('0xf'));var Papa=require('papaparse');var Redis=require(_0x844e('0x10'));var authService=require(_0x844e('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x844e('0x12'));var hardwareService=require(_0x844e('0x13'));var logger=require('../../config/logger')(_0x844e('0x14'));var utils=require(_0x844e('0x15'));var config=require(_0x844e('0x16'));var licenseUtil=require(_0x844e('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3c1bf5,_0xafbbf5){_0xafbbf5=_0xafbbf5||0xcc;return function(_0x512bea){if(_0x512bea){return _0x3c1bf5[_0x844e('0x18')](_0xafbbf5);}return _0x3c1bf5[_0x844e('0x19')](_0xafbbf5)[_0x844e('0x1a')]();};}function respondWithResult(_0x34d5f9,_0x27f7dd){_0x27f7dd=_0x27f7dd||0xc8;return function(_0x59347a){if(_0x59347a){return _0x34d5f9['status'](_0x27f7dd)[_0x844e('0x1b')](_0x59347a);}};}function respondWithFilteredResult(_0x828ab3,_0x598cb3){return function(_0x3f3a7f){if(_0x3f3a7f){var _0x2ac2a5=typeof _0x598cb3[_0x844e('0x1c')]==='undefined'&&typeof _0x598cb3[_0x844e('0x1d')]==='undefined';var _0x2638a9=_0x3f3a7f[_0x844e('0x1e')];var _0x1a7785=_0x2ac2a5?0x0:_0x598cb3[_0x844e('0x1c')];var _0x301788=_0x2ac2a5?_0x3f3a7f[_0x844e('0x1e')]:_0x598cb3['offset']+_0x598cb3[_0x844e('0x1d')];var _0x101cbe;if(_0x301788>=_0x2638a9){_0x301788=_0x2638a9;_0x101cbe=0xc8;}else{_0x101cbe=0xce;}_0x828ab3[_0x844e('0x19')](_0x101cbe);return _0x828ab3[_0x844e('0x1f')]('Content-Range',_0x1a7785+'-'+_0x301788+'/'+_0x2638a9)[_0x844e('0x1b')](_0x3f3a7f);}return null;};}function patchUpdates(_0x5214c9){return function(_0x1b6f32){try{jsonpatch[_0x844e('0x20')](_0x1b6f32,_0x5214c9,!![]);}catch(_0x3157b7){return BPromise[_0x844e('0x21')](_0x3157b7);}return _0x1b6f32[_0x844e('0x22')]();};}function saveUpdates(_0x4336a5,_0x4bf909){return function(_0x9c796c){if(_0x9c796c){return _0x9c796c[_0x844e('0x23')](_0x4336a5)[_0x844e('0x24')](function(_0x430c56){return _0x430c56;});}return null;};}function removeEntity(_0x6ff083,_0x1b6615){return function(_0xe7c01f){if(_0xe7c01f){return _0xe7c01f[_0x844e('0x25')]()['then'](function(){_0x6ff083[_0x844e('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x38ae5c,_0x4149c7){return function(_0x28dc84){if(!_0x28dc84){_0x38ae5c['sendStatus'](0x194);}return _0x28dc84;};}function handleError(_0x1b83f9,_0x49a20a){_0x49a20a=_0x49a20a||0x1f4;return function(_0x5591be){logger[_0x844e('0x26')](_0x5591be[_0x844e('0x27')]);if(_0x5591be['name']){delete _0x5591be[_0x844e('0x28')];}_0x1b83f9[_0x844e('0x19')](_0x49a20a)[_0x844e('0x29')](_0x5591be);};}exports[_0x844e('0x2a')]=function(_0x4dfc7e,_0x1826f5){var _0x163f95={},_0x47d5c8={},_0x3867e8={'count':0x0,'rows':[]};var _0x4af8bb=_[_0x844e('0x2b')](db[_0x844e('0x2c')][_0x844e('0x2d')],function(_0x3e7e93){return{'name':_0x3e7e93[_0x844e('0x2e')],'type':_0x3e7e93[_0x844e('0x2f')][_0x844e('0x30')]};});_0x47d5c8[_0x844e('0x31')]=_[_0x844e('0x2b')](_0x4af8bb,_0x844e('0x28'));_0x47d5c8[_0x844e('0x32')]=_[_0x844e('0x33')](_0x4dfc7e[_0x844e('0x32')]);_0x47d5c8[_0x844e('0x34')]=_[_0x844e('0x35')](_0x47d5c8[_0x844e('0x31')],_0x47d5c8[_0x844e('0x32')]);_0x163f95[_0x844e('0x36')]=_['intersection'](_0x47d5c8[_0x844e('0x31')],qs[_0x844e('0x37')](_0x4dfc7e[_0x844e('0x32')][_0x844e('0x37')]));_0x163f95[_0x844e('0x36')]=_0x163f95['attributes']['length']?_0x163f95[_0x844e('0x36')]:_0x47d5c8[_0x844e('0x31')];if(!_0x4dfc7e[_0x844e('0x32')][_0x844e('0x38')](_0x844e('0x39'))){_0x163f95[_0x844e('0x1d')]=qs[_0x844e('0x1d')](_0x4dfc7e['query'][_0x844e('0x1d')]);_0x163f95[_0x844e('0x1c')]=qs[_0x844e('0x1c')](_0x4dfc7e[_0x844e('0x32')][_0x844e('0x1c')]);}_0x163f95[_0x844e('0x3a')]=qs[_0x844e('0x3b')](_0x4dfc7e[_0x844e('0x32')]['sort']);_0x163f95[_0x844e('0x3c')]=qs['filters'](_[_0x844e('0x3d')](_0x4dfc7e[_0x844e('0x32')],_0x47d5c8[_0x844e('0x34')]),_0x4af8bb);if(_0x4dfc7e[_0x844e('0x32')][_0x844e('0x3e')]){_0x163f95[_0x844e('0x3c')]=_[_0x844e('0x3f')](_0x163f95[_0x844e('0x3c')],{'$or':_[_0x844e('0x2b')](_0x4af8bb,function(_0x2a2679){if(_0x2a2679[_0x844e('0x2f')]!==_0x844e('0x40')){var _0x211d36={};_0x211d36[_0x2a2679[_0x844e('0x28')]]={'$like':'%'+_0x4dfc7e[_0x844e('0x32')][_0x844e('0x3e')]+'%'};return _0x211d36;}})});}_0x163f95=_[_0x844e('0x3f')]({},_0x163f95,_0x4dfc7e[_0x844e('0x41')]);var _0x4a2579={'where':_0x163f95[_0x844e('0x3c')]};return db['AnalyticTreeReport']['count'](_0x4a2579)[_0x844e('0x24')](function(_0x3ab978){_0x3867e8['count']=_0x3ab978;if(_0x4dfc7e[_0x844e('0x32')]['includeAll']){_0x163f95[_0x844e('0x42')]=[{'all':!![]}];}return db['AnalyticTreeReport'][_0x844e('0x43')](_0x163f95);})[_0x844e('0x24')](function(_0x459ccd){_0x3867e8[_0x844e('0x44')]=_0x459ccd;return _0x3867e8;})[_0x844e('0x24')](respondWithFilteredResult(_0x1826f5,_0x163f95))[_0x844e('0x45')](handleError(_0x1826f5,null));};exports[_0x844e('0x46')]=function(_0x18071e,_0x5a97d7){var _0x11b519={'raw':!![],'where':{'id':_0x18071e[_0x844e('0x47')]['id']}},_0x823bd2={};_0x823bd2['model']=_[_0x844e('0x33')](db[_0x844e('0x2c')]['rawAttributes']);_0x823bd2[_0x844e('0x32')]=_[_0x844e('0x33')](_0x18071e['query']);_0x823bd2[_0x844e('0x34')]=_[_0x844e('0x35')](_0x823bd2[_0x844e('0x31')],_0x823bd2['query']);_0x11b519[_0x844e('0x36')]=_['intersection'](_0x823bd2['model'],qs[_0x844e('0x37')](_0x18071e['query'][_0x844e('0x37')]));_0x11b519['attributes']=_0x11b519['attributes'][_0x844e('0x48')]?_0x11b519[_0x844e('0x36')]:_0x823bd2[_0x844e('0x31')];if(_0x18071e[_0x844e('0x32')]['includeAll']){_0x11b519['include']=[{'all':!![]}];}_0x11b519=_[_0x844e('0x3f')]({},_0x11b519,_0x18071e[_0x844e('0x41')]);return db['AnalyticTreeReport'][_0x844e('0x49')](_0x11b519)[_0x844e('0x24')](handleEntityNotFound(_0x5a97d7,null))['then'](respondWithResult(_0x5a97d7,null))[_0x844e('0x45')](handleError(_0x5a97d7,null));};exports[_0x844e('0x4a')]=function(_0x3c9164,_0x5442ef){return db[_0x844e('0x2c')]['create'](_0x3c9164[_0x844e('0x4b')],{})[_0x844e('0x24')](respondWithResult(_0x5442ef,0xc9))[_0x844e('0x45')](handleError(_0x5442ef,null));};exports[_0x844e('0x23')]=function(_0x174a62,_0x598dae){if(_0x174a62[_0x844e('0x4b')]['id']){delete _0x174a62['body']['id'];}return db[_0x844e('0x2c')][_0x844e('0x49')]({'where':{'id':_0x174a62['params']['id']}})[_0x844e('0x24')](handleEntityNotFound(_0x598dae,null))['then'](saveUpdates(_0x174a62[_0x844e('0x4b')],null))[_0x844e('0x24')](respondWithResult(_0x598dae,null))[_0x844e('0x45')](handleError(_0x598dae,null));};exports['destroy']=function(_0x2acbef,_0x4e85f7){return db[_0x844e('0x2c')][_0x844e('0x49')]({'where':{'id':_0x2acbef[_0x844e('0x47')]['id']}})[_0x844e('0x24')](handleEntityNotFound(_0x4e85f7,null))[_0x844e('0x24')](removeEntity(_0x4e85f7,null))['catch'](handleError(_0x4e85f7,null));};
\ No newline at end of file
+var _0x37f0=['intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filter','where','merge','options','includeAll','findAll','rows','catch','params','keys','rawAttributes','include','find','create','body','update','eml-format','rimraf','fast-json-patch','moment','bluebird','path','sox','ejs','fs-extra','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','end','json','offset','undefined','limit','count','status','set','Content-Range','apply','reject','then','destroy','sendStatus','error','stack','name','send','map','AnalyticTreeReport','type','key','model','query','filters'];(function(_0x48344e,_0xb33d4e){var _0xc4b94e=function(_0x7b996){while(--_0x7b996){_0x48344e['push'](_0x48344e['shift']());}};_0xc4b94e(++_0xb33d4e);}(_0x37f0,0xea));var _0x037f=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x37f0[_0x19e35c];return _0x3e1fe8;};'use strict';var emlformat=require(_0x037f('0x0'));var rimraf=require(_0x037f('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x037f('0x2'));var rp=require('request-promise');var moment=require(_0x037f('0x3'));var BPromise=require(_0x037f('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x037f('0x5'));var sox=require(_0x037f('0x6'));var csv=require('to-csv');var ejs=require(_0x037f('0x7'));var fs=require('fs');var fs_extra=require(_0x037f('0x8'));var _=require(_0x037f('0x9'));var squel=require('squel');var crypto=require(_0x037f('0xa'));var jsforce=require(_0x037f('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x037f('0xc'));var Papa=require(_0x037f('0xd'));var Redis=require(_0x037f('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x037f('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x037f('0x10'));var logger=require(_0x037f('0x11'))('api');var utils=require(_0x037f('0x12'));var config=require(_0x037f('0x13'));var licenseUtil=require(_0x037f('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3b675b,_0x36ab88){_0x36ab88=_0x36ab88||0xcc;return function(_0xf41ab9){if(_0xf41ab9){return _0x3b675b['sendStatus'](_0x36ab88);}return _0x3b675b['status'](_0x36ab88)[_0x037f('0x15')]();};}function respondWithResult(_0x1e701b,_0x358db1){_0x358db1=_0x358db1||0xc8;return function(_0x17d6cc){if(_0x17d6cc){return _0x1e701b['status'](_0x358db1)[_0x037f('0x16')](_0x17d6cc);}};}function respondWithFilteredResult(_0x1ed015,_0x2cf606){return function(_0x191304){if(_0x191304){var _0x51cdd6=typeof _0x2cf606[_0x037f('0x17')]===_0x037f('0x18')&&typeof _0x2cf606[_0x037f('0x19')]==='undefined';var _0x2d9ec1=_0x191304[_0x037f('0x1a')];var _0x29c47b=_0x51cdd6?0x0:_0x2cf606[_0x037f('0x17')];var _0x25913e=_0x51cdd6?_0x191304[_0x037f('0x1a')]:_0x2cf606['offset']+_0x2cf606[_0x037f('0x19')];var _0x54274a;if(_0x25913e>=_0x2d9ec1){_0x25913e=_0x2d9ec1;_0x54274a=0xc8;}else{_0x54274a=0xce;}_0x1ed015[_0x037f('0x1b')](_0x54274a);return _0x1ed015[_0x037f('0x1c')](_0x037f('0x1d'),_0x29c47b+'-'+_0x25913e+'/'+_0x2d9ec1)[_0x037f('0x16')](_0x191304);}return null;};}function patchUpdates(_0x3c22b4){return function(_0x477689){try{jsonpatch[_0x037f('0x1e')](_0x477689,_0x3c22b4,!![]);}catch(_0x73574d){return BPromise[_0x037f('0x1f')](_0x73574d);}return _0x477689['save']();};}function saveUpdates(_0x582781,_0x2bfde4){return function(_0x4e3d82){if(_0x4e3d82){return _0x4e3d82['update'](_0x582781)[_0x037f('0x20')](function(_0x506cf2){return _0x506cf2;});}return null;};}function removeEntity(_0x197637,_0x40458f){return function(_0x5794c7){if(_0x5794c7){return _0x5794c7[_0x037f('0x21')]()[_0x037f('0x20')](function(){_0x197637['status'](0xcc)[_0x037f('0x15')]();});}};}function handleEntityNotFound(_0x59085f,_0x448e63){return function(_0x311e16){if(!_0x311e16){_0x59085f[_0x037f('0x22')](0x194);}return _0x311e16;};}function handleError(_0x45ab36,_0x31d4b9){_0x31d4b9=_0x31d4b9||0x1f4;return function(_0x37dfdd){logger[_0x037f('0x23')](_0x37dfdd[_0x037f('0x24')]);if(_0x37dfdd['name']){delete _0x37dfdd[_0x037f('0x25')];}_0x45ab36[_0x037f('0x1b')](_0x31d4b9)[_0x037f('0x26')](_0x37dfdd);};}exports['index']=function(_0x3a1c35,_0x2f33e8){var _0x3f2a5f={},_0x37c4e2={},_0x24cc2d={'count':0x0,'rows':[]};var _0x132f24=_[_0x037f('0x27')](db[_0x037f('0x28')]['rawAttributes'],function(_0x2ecd11){return{'name':_0x2ecd11['fieldName'],'type':_0x2ecd11[_0x037f('0x29')][_0x037f('0x2a')]};});_0x37c4e2[_0x037f('0x2b')]=_[_0x037f('0x27')](_0x132f24,_0x037f('0x25'));_0x37c4e2[_0x037f('0x2c')]=_['keys'](_0x3a1c35[_0x037f('0x2c')]);_0x37c4e2[_0x037f('0x2d')]=_[_0x037f('0x2e')](_0x37c4e2['model'],_0x37c4e2[_0x037f('0x2c')]);_0x3f2a5f[_0x037f('0x2f')]=_[_0x037f('0x2e')](_0x37c4e2[_0x037f('0x2b')],qs[_0x037f('0x30')](_0x3a1c35[_0x037f('0x2c')]['fields']));_0x3f2a5f[_0x037f('0x2f')]=_0x3f2a5f[_0x037f('0x2f')][_0x037f('0x31')]?_0x3f2a5f['attributes']:_0x37c4e2['model'];if(!_0x3a1c35[_0x037f('0x2c')][_0x037f('0x32')](_0x037f('0x33'))){_0x3f2a5f['limit']=qs[_0x037f('0x19')](_0x3a1c35['query'][_0x037f('0x19')]);_0x3f2a5f[_0x037f('0x17')]=qs['offset'](_0x3a1c35[_0x037f('0x2c')][_0x037f('0x17')]);}_0x3f2a5f[_0x037f('0x34')]=qs[_0x037f('0x35')](_0x3a1c35[_0x037f('0x2c')][_0x037f('0x35')]);_0x3f2a5f['where']=qs[_0x037f('0x2d')](_['pick'](_0x3a1c35[_0x037f('0x2c')],_0x37c4e2[_0x037f('0x2d')]),_0x132f24);if(_0x3a1c35['query'][_0x037f('0x36')]){_0x3f2a5f[_0x037f('0x37')]=_[_0x037f('0x38')](_0x3f2a5f[_0x037f('0x37')],{'$or':_[_0x037f('0x27')](_0x132f24,function(_0x1561b1){if(_0x1561b1[_0x037f('0x29')]!=='VIRTUAL'){var _0x40240c={};_0x40240c[_0x1561b1['name']]={'$like':'%'+_0x3a1c35[_0x037f('0x2c')]['filter']+'%'};return _0x40240c;}})});}_0x3f2a5f=_[_0x037f('0x38')]({},_0x3f2a5f,_0x3a1c35[_0x037f('0x39')]);var _0x4f01a0={'where':_0x3f2a5f['where']};return db[_0x037f('0x28')][_0x037f('0x1a')](_0x4f01a0)[_0x037f('0x20')](function(_0x2a25e7){_0x24cc2d[_0x037f('0x1a')]=_0x2a25e7;if(_0x3a1c35[_0x037f('0x2c')][_0x037f('0x3a')]){_0x3f2a5f['include']=[{'all':!![]}];}return db[_0x037f('0x28')][_0x037f('0x3b')](_0x3f2a5f);})[_0x037f('0x20')](function(_0x857818){_0x24cc2d[_0x037f('0x3c')]=_0x857818;return _0x24cc2d;})['then'](respondWithFilteredResult(_0x2f33e8,_0x3f2a5f))[_0x037f('0x3d')](handleError(_0x2f33e8,null));};exports['show']=function(_0x2f7d96,_0x35200e){var _0x33dbb3={'raw':!![],'where':{'id':_0x2f7d96[_0x037f('0x3e')]['id']}},_0x4a720f={};_0x4a720f['model']=_[_0x037f('0x3f')](db[_0x037f('0x28')][_0x037f('0x40')]);_0x4a720f[_0x037f('0x2c')]=_[_0x037f('0x3f')](_0x2f7d96[_0x037f('0x2c')]);_0x4a720f[_0x037f('0x2d')]=_[_0x037f('0x2e')](_0x4a720f[_0x037f('0x2b')],_0x4a720f[_0x037f('0x2c')]);_0x33dbb3[_0x037f('0x2f')]=_['intersection'](_0x4a720f[_0x037f('0x2b')],qs[_0x037f('0x30')](_0x2f7d96[_0x037f('0x2c')][_0x037f('0x30')]));_0x33dbb3[_0x037f('0x2f')]=_0x33dbb3['attributes'][_0x037f('0x31')]?_0x33dbb3[_0x037f('0x2f')]:_0x4a720f[_0x037f('0x2b')];if(_0x2f7d96[_0x037f('0x2c')]['includeAll']){_0x33dbb3[_0x037f('0x41')]=[{'all':!![]}];}_0x33dbb3=_[_0x037f('0x38')]({},_0x33dbb3,_0x2f7d96[_0x037f('0x39')]);return db[_0x037f('0x28')][_0x037f('0x42')](_0x33dbb3)[_0x037f('0x20')](handleEntityNotFound(_0x35200e,null))[_0x037f('0x20')](respondWithResult(_0x35200e,null))[_0x037f('0x3d')](handleError(_0x35200e,null));};exports[_0x037f('0x43')]=function(_0x5dd678,_0x3cfe0c){return db['AnalyticTreeReport'][_0x037f('0x43')](_0x5dd678[_0x037f('0x44')],{})[_0x037f('0x20')](respondWithResult(_0x3cfe0c,0xc9))['catch'](handleError(_0x3cfe0c,null));};exports[_0x037f('0x45')]=function(_0x38a06a,_0xea7a8f){if(_0x38a06a[_0x037f('0x44')]['id']){delete _0x38a06a[_0x037f('0x44')]['id'];}return db[_0x037f('0x28')][_0x037f('0x42')]({'where':{'id':_0x38a06a[_0x037f('0x3e')]['id']}})[_0x037f('0x20')](handleEntityNotFound(_0xea7a8f,null))['then'](saveUpdates(_0x38a06a[_0x037f('0x44')],null))[_0x037f('0x20')](respondWithResult(_0xea7a8f,null))[_0x037f('0x3d')](handleError(_0xea7a8f,null));};exports[_0x037f('0x21')]=function(_0x5dab04,_0x55f3e6){return db[_0x037f('0x28')]['find']({'where':{'id':_0x5dab04[_0x037f('0x3e')]['id']}})[_0x037f('0x20')](handleEntityNotFound(_0x55f3e6,null))['then'](removeEntity(_0x55f3e6,null))['catch'](handleError(_0x55f3e6,null));};
\ No newline at end of file
index 7d68ba6..2e3d9b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf37d=['exports','AnalyticTreeReport','analytics_report_trees','lodash','util','../../config/logger','api','moment','request-promise','rimraf','./analyticTreeReport.attributes'];(function(_0xf273f9,_0x486198){var _0xb4abcc=function(_0x2f9418){while(--_0x2f9418){_0xf273f9['push'](_0xf273f9['shift']());}};_0xb4abcc(++_0x486198);}(_0xf37d,0x16e));var _0xdf37=function(_0x7791d5,_0xdab65f){_0x7791d5=_0x7791d5-0x0;var _0x5ce288=_0xf37d[_0x7791d5];return _0x5ce288;};'use strict';var _=require(_0xdf37('0x0'));var util=require(_0xdf37('0x1'));var logger=require(_0xdf37('0x2'))(_0xdf37('0x3'));var moment=require(_0xdf37('0x4'));var BPromise=require('bluebird');var rp=require(_0xdf37('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xdf37('0x6'));var config=require('../../config/environment');var attributes=require(_0xdf37('0x7'));module[_0xdf37('0x8')]=function(_0x47b56c,_0x39c272){return _0x47b56c['define'](_0xdf37('0x9'),attributes,{'tableName':_0xdf37('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0080=['util','../../config/logger','moment','request-promise','rimraf','../../config/environment','./analyticTreeReport.attributes','exports','define','AnalyticTreeReport','lodash'];(function(_0x594121,_0x1995b5){var _0x117d8e=function(_0x39d9fc){while(--_0x39d9fc){_0x594121['push'](_0x594121['shift']());}};_0x117d8e(++_0x1995b5);}(_0x0080,0xdb));var _0x0008=function(_0xd25e56,_0x38cf5b){_0xd25e56=_0xd25e56-0x0;var _0x1dabac=_0x0080[_0xd25e56];return _0x1dabac;};'use strict';var _=require(_0x0008('0x0'));var util=require(_0x0008('0x1'));var logger=require(_0x0008('0x2'))('api');var moment=require(_0x0008('0x3'));var BPromise=require('bluebird');var rp=require(_0x0008('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0008('0x5'));var config=require(_0x0008('0x6'));var attributes=require(_0x0008('0x7'));module[_0x0008('0x8')]=function(_0xfd47cd,_0x2e9c71){return _0xfd47cd[_0x0008('0x9')](_0x0008('0xa'),attributes,{'tableName':'analytics_report_trees','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index fb0c082..18c8f1e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ef3=['bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','request','then','info','AnalyticTreeReport,\x20%s,\x20%s','AnalyticTreeReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','lodash','util','moment'];(function(_0xf1ad4d,_0x6c476b){var _0x1275d4=function(_0x225a9d){while(--_0x225a9d){_0xf1ad4d['push'](_0xf1ad4d['shift']());}};_0x1275d4(++_0x6c476b);}(_0x2ef3,0xba));var _0x32ef=function(_0x145fdb,_0x47c911){_0x145fdb=_0x145fdb-0x0;var _0x4a6351=_0x2ef3[_0x145fdb];return _0x4a6351;};'use strict';var _=require(_0x32ef('0x0'));var util=require(_0x32ef('0x1'));var moment=require(_0x32ef('0x2'));var BPromise=require(_0x32ef('0x3'));var rs=require(_0x32ef('0x4'));var fs=require('fs');var Redis=require(_0x32ef('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x32ef('0x6'));var logger=require(_0x32ef('0x7'))('rpc');var config=require(_0x32ef('0x8'));var jayson=require(_0x32ef('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x2c0089,_0x4bfcf8,_0x367c39){return new BPromise(function(_0x2fb8eb,_0x234863){return client[_0x32ef('0xa')](_0x2c0089,_0x367c39)[_0x32ef('0xb')](function(_0x2bbb50){logger[_0x32ef('0xc')](_0x32ef('0xd'),_0x4bfcf8,'request\x20sent');logger['debug'](_0x32ef('0xe'),_0x4bfcf8,_0x32ef('0xf'),JSON[_0x32ef('0x10')](_0x2bbb50));if(_0x2bbb50[_0x32ef('0x11')]){if(_0x2bbb50['error'][_0x32ef('0x12')]===0x1f4){logger['error'](_0x32ef('0xd'),_0x4bfcf8,_0x2bbb50['error'][_0x32ef('0x13')]);return _0x234863(_0x2bbb50[_0x32ef('0x11')]['message']);}logger['error'](_0x32ef('0xd'),_0x4bfcf8,_0x2bbb50['error'][_0x32ef('0x13')]);return _0x2fb8eb(_0x2bbb50[_0x32ef('0x11')][_0x32ef('0x13')]);}else{logger[_0x32ef('0xc')]('AnalyticTreeReport,\x20%s,\x20%s',_0x4bfcf8,'request\x20sent');_0x2fb8eb(_0x2bbb50['result'][_0x32ef('0x13')]);}})[_0x32ef('0x14')](function(_0xb5aed2){logger['error']('AnalyticTreeReport,\x20%s,\x20%s',_0x4bfcf8,_0xb5aed2);_0x234863(_0xb5aed2);});});}
\ No newline at end of file
+var _0x1261=['then','info','AnalyticTreeReport,\x20%s,\x20%s','request\x20sent','AnalyticTreeReport,\x20%s,\x20%s,\x20%s','error','code','message','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','request'];(function(_0x533404,_0x47134b){var _0x3f65b9=function(_0x3b6e11){while(--_0x3b6e11){_0x533404['push'](_0x533404['shift']());}};_0x3f65b9(++_0x47134b);}(_0x1261,0x144));var _0x1126=function(_0x4ac761,_0x228735){_0x4ac761=_0x4ac761-0x0;var _0x4de38d=_0x1261[_0x4ac761];return _0x4de38d;};'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')]('AnalyticTreeReport,\x20%s,\x20%s',_0x4f239c,_0x1126('0xf'));_0x28772d(_0x59cfa1['result'][_0x1126('0x13')]);}})[_0x1126('0x14')](function(_0x257b5f){logger['error'](_0x1126('0xe'),_0x4f239c,_0x257b5f);_0x245be9(_0x257b5f);});});}
\ No newline at end of file
index e864d9d..8188d27 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x555a=['multer','util','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','./analyticTreeReport.controller','get','isAuthenticated','index','/:id','show','create','put','update','delete','destroy','exports'];(function(_0x862827,_0x47138b){var _0x4bea04=function(_0x2536bf){while(--_0x2536bf){_0x862827['push'](_0x862827['shift']());}};_0x4bea04(++_0x47138b);}(_0x555a,0x1d4));var _0xa555=function(_0x368a7d,_0x190e80){_0x368a7d=_0x368a7d-0x0;var _0x271079=_0x555a[_0x368a7d];return _0x271079;};'use strict';var multer=require(_0xa555('0x0'));var util=require(_0xa555('0x1'));var path=require('path');var timeout=require(_0xa555('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xa555('0x3'));var auth=require(_0xa555('0x4'));var interaction=require(_0xa555('0x5'));var config=require('../../config/environment');var controller=require(_0xa555('0x6'));router[_0xa555('0x7')]('/',auth[_0xa555('0x8')](),controller[_0xa555('0x9')]);router[_0xa555('0x7')](_0xa555('0xa'),auth[_0xa555('0x8')](),controller[_0xa555('0xb')]);router['post']('/',auth[_0xa555('0x8')](),controller[_0xa555('0xc')]);router[_0xa555('0xd')](_0xa555('0xa'),auth[_0xa555('0x8')](),controller[_0xa555('0xe')]);router[_0xa555('0xf')](_0xa555('0xa'),auth['isAuthenticated'](),controller[_0xa555('0x10')]);module[_0xa555('0x11')]=router;
\ No newline at end of file
+var _0x6988=['create','put','delete','destroy','exports','multer','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','./analyticTreeReport.controller','get','isAuthenticated','index','/:id','post'];(function(_0x4c260a,_0x148241){var _0x17bbdd=function(_0x4f3e9f){while(--_0x4f3e9f){_0x4c260a['push'](_0x4c260a['shift']());}};_0x17bbdd(++_0x148241);}(_0x6988,0x83));var _0x8698=function(_0x42be16,_0x1e5151){_0x42be16=_0x42be16-0x0;var _0x15a16f=_0x6988[_0x42be16];return _0x15a16f;};'use strict';var multer=require(_0x8698('0x0'));var util=require(_0x8698('0x1'));var path=require(_0x8698('0x2'));var timeout=require(_0x8698('0x3'));var express=require('express');var router=express[_0x8698('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x8698('0x5'));var interaction=require(_0x8698('0x6'));var config=require('../../config/environment');var controller=require(_0x8698('0x7'));router[_0x8698('0x8')]('/',auth[_0x8698('0x9')](),controller[_0x8698('0xa')]);router[_0x8698('0x8')](_0x8698('0xb'),auth[_0x8698('0x9')](),controller['show']);router[_0x8698('0xc')]('/',auth[_0x8698('0x9')](),controller[_0x8698('0xd')]);router[_0x8698('0xe')](_0x8698('0xb'),auth['isAuthenticated'](),controller['update']);router[_0x8698('0xf')](_0x8698('0xb'),auth['isAuthenticated'](),controller[_0x8698('0x10')]);module[_0x8698('0x11')]=router;
\ No newline at end of file
index a3222ae..4d72d65 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54da=['STRING','sequelize'];(function(_0x56de0b,_0x1c39c1){var _0x1c05f0=function(_0x5a6e7d){while(--_0x5a6e7d){_0x56de0b['push'](_0x56de0b['shift']());}};_0x1c05f0(++_0x1c39c1);}(_0x54da,0x9d));var _0xa54d=function(_0x5ba6e2,_0x48e57b){_0x5ba6e2=_0x5ba6e2-0x0;var _0x51c376=_0x54da[_0x5ba6e2];return _0x51c376;};'use strict';var Sequelize=require(_0xa54d('0x0'));module['exports']={'name':{'type':Sequelize[_0xa54d('0x1')]},'basename':{'type':Sequelize['STRING']},'type':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xd6d6=['STRING','sequelize','exports'];(function(_0x427209,_0x2d5756){var _0x427fd5=function(_0x3c9c08){while(--_0x3c9c08){_0x427209['push'](_0x427209['shift']());}};_0x427fd5(++_0x2d5756);}(_0xd6d6,0xbe));var _0x6d6d=function(_0x6f7678,_0x2a6417){_0x6f7678=_0x6f7678-0x0;var _0x274db5=_0xd6d6[_0x6f7678];return _0x274db5;};'use strict';var Sequelize=require(_0x6d6d('0x0'));module[_0x6d6d('0x1')]={'name':{'type':Sequelize[_0x6d6d('0x2')]},'basename':{'type':Sequelize[_0x6d6d('0x2')]},'type':{'type':Sequelize['STRING']}};
\ No newline at end of file
index d4c2f3d..9af04e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed9e=['set','Content-Range','apply','save','update','then','destroy','sendStatus','error','stack','name','send','index','map','rawAttributes','fieldName','key','model','query','keys','filters','attributes','intersection','fields','order','sort','pick','filter','where','merge','VIRTUAL','includeAll','Attachment','findAll','rows','catch','show','length','include','options','params','get','omit','updatedAt','body','createdAt','create','find','file','originalname','basename','filename','type','mimetype','download','findOne','ChatOfflineMessageId','join','root','server/files/attachments/','offline-chat/','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','limit','undefined','count'];(function(_0x3fca6b,_0x2414eb){var _0x1fd4b5=function(_0x4331c8){while(--_0x4331c8){_0x3fca6b['push'](_0x3fca6b['shift']());}};_0x1fd4b5(++_0x2414eb);}(_0xed9e,0xf5));var _0xeed9=function(_0x4c06a3,_0x1e6b6f){_0x4c06a3=_0x4c06a3-0x0;var _0x7ff53c=_0xed9e[_0x4c06a3];return _0x7ff53c;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xeed9('0x0'));var jsonpatch=require(_0xeed9('0x1'));var rp=require(_0xeed9('0x2'));var moment=require('moment');var BPromise=require(_0xeed9('0x3'));var Mustache=require(_0xeed9('0x4'));var util=require('util');var path=require(_0xeed9('0x5'));var sox=require(_0xeed9('0x6'));var csv=require(_0xeed9('0x7'));var ejs=require(_0xeed9('0x8'));var fs=require('fs');var fs_extra=require(_0xeed9('0x9'));var _=require(_0xeed9('0xa'));var squel=require(_0xeed9('0xb'));var crypto=require(_0xeed9('0xc'));var jsforce=require(_0xeed9('0xd'));var deskjs=require(_0xeed9('0xe'));var toCsv=require(_0xeed9('0x7'));var querystring=require('querystring');var Papa=require(_0xeed9('0xf'));var Redis=require('ioredis');var authService=require(_0xeed9('0x10'));var qs=require(_0xeed9('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xeed9('0x12'))(_0xeed9('0x13'));var utils=require(_0xeed9('0x14'));var config=require(_0xeed9('0x15'));var licenseUtil=require(_0xeed9('0x16'));var db=require(_0xeed9('0x17'))['db'];function respondWithStatusCode(_0x4dcaf9,_0x267b56){_0x267b56=_0x267b56||0xcc;return function(_0x2b5966){if(_0x2b5966){return _0x4dcaf9['sendStatus'](_0x267b56);}return _0x4dcaf9[_0xeed9('0x18')](_0x267b56)[_0xeed9('0x19')]();};}function respondWithResult(_0x5b205c,_0x5e4baf){_0x5e4baf=_0x5e4baf||0xc8;return function(_0x4d3224){if(_0x4d3224){return _0x5b205c[_0xeed9('0x18')](_0x5e4baf)[_0xeed9('0x1a')](_0x4d3224);}};}function respondWithFilteredResult(_0x41e6bf,_0x28b483){return function(_0x1f7e27){if(_0x1f7e27){var _0x5ee5ae=typeof _0x28b483[_0xeed9('0x1b')]==='undefined'&&typeof _0x28b483[_0xeed9('0x1c')]===_0xeed9('0x1d');var _0x4b3db6=_0x1f7e27[_0xeed9('0x1e')];var _0x2887a7=_0x5ee5ae?0x0:_0x28b483[_0xeed9('0x1b')];var _0x3b623b=_0x5ee5ae?_0x1f7e27[_0xeed9('0x1e')]:_0x28b483[_0xeed9('0x1b')]+_0x28b483[_0xeed9('0x1c')];var _0x53c4e4;if(_0x3b623b>=_0x4b3db6){_0x3b623b=_0x4b3db6;_0x53c4e4=0xc8;}else{_0x53c4e4=0xce;}_0x41e6bf['status'](_0x53c4e4);return _0x41e6bf[_0xeed9('0x1f')](_0xeed9('0x20'),_0x2887a7+'-'+_0x3b623b+'/'+_0x4b3db6)[_0xeed9('0x1a')](_0x1f7e27);}return null;};}function patchUpdates(_0x5a49de){return function(_0x1713f5){try{jsonpatch[_0xeed9('0x21')](_0x1713f5,_0x5a49de,!![]);}catch(_0x107d5e){return BPromise['reject'](_0x107d5e);}return _0x1713f5[_0xeed9('0x22')]();};}function saveUpdates(_0x209426,_0x30b56e){return function(_0x49fd35){if(_0x49fd35){return _0x49fd35[_0xeed9('0x23')](_0x209426)[_0xeed9('0x24')](function(_0x4f7f27){return _0x4f7f27;});}return null;};}function removeEntity(_0xe46346,_0x2dff0){return function(_0x5b6069){if(_0x5b6069){return _0x5b6069[_0xeed9('0x25')]()[_0xeed9('0x24')](function(){_0xe46346[_0xeed9('0x18')](0xcc)[_0xeed9('0x19')]();});}};}function handleEntityNotFound(_0x247d1a,_0xc40b1d){return function(_0xe40997){if(!_0xe40997){_0x247d1a[_0xeed9('0x26')](0x194);}return _0xe40997;};}function handleError(_0x50b074,_0x5435e1){_0x5435e1=_0x5435e1||0x1f4;return function(_0x43fed1){logger[_0xeed9('0x27')](_0x43fed1[_0xeed9('0x28')]);if(_0x43fed1[_0xeed9('0x29')]){delete _0x43fed1[_0xeed9('0x29')];}_0x50b074['status'](_0x5435e1)[_0xeed9('0x2a')](_0x43fed1);};}exports[_0xeed9('0x2b')]=function(_0x3dcc33,_0x2b0dec){var _0x113358={},_0x4ad7ce={},_0x3746aa={'count':0x0,'rows':[]};var _0x27cc14=_[_0xeed9('0x2c')](db['Attachment'][_0xeed9('0x2d')],function(_0x4f9fec){return{'name':_0x4f9fec[_0xeed9('0x2e')],'type':_0x4f9fec['type'][_0xeed9('0x2f')]};});_0x4ad7ce[_0xeed9('0x30')]=_['map'](_0x27cc14,'name');_0x4ad7ce[_0xeed9('0x31')]=_[_0xeed9('0x32')](_0x3dcc33[_0xeed9('0x31')]);_0x4ad7ce[_0xeed9('0x33')]=_['intersection'](_0x4ad7ce[_0xeed9('0x30')],_0x4ad7ce[_0xeed9('0x31')]);_0x113358[_0xeed9('0x34')]=_[_0xeed9('0x35')](_0x4ad7ce[_0xeed9('0x30')],qs['fields'](_0x3dcc33[_0xeed9('0x31')][_0xeed9('0x36')]));_0x113358[_0xeed9('0x34')]=_0x113358[_0xeed9('0x34')]['length']?_0x113358['attributes']:_0x4ad7ce[_0xeed9('0x30')];if(!_0x3dcc33[_0xeed9('0x31')]['hasOwnProperty']('nolimit')){_0x113358['limit']=qs[_0xeed9('0x1c')](_0x3dcc33[_0xeed9('0x31')][_0xeed9('0x1c')]);_0x113358['offset']=qs[_0xeed9('0x1b')](_0x3dcc33['query'][_0xeed9('0x1b')]);}_0x113358[_0xeed9('0x37')]=qs[_0xeed9('0x38')](_0x3dcc33[_0xeed9('0x31')]['sort']);_0x113358['where']=qs[_0xeed9('0x33')](_[_0xeed9('0x39')](_0x3dcc33['query'],_0x4ad7ce['filters']),_0x27cc14);if(_0x3dcc33[_0xeed9('0x31')][_0xeed9('0x3a')]){_0x113358[_0xeed9('0x3b')]=_[_0xeed9('0x3c')](_0x113358[_0xeed9('0x3b')],{'$or':_[_0xeed9('0x2c')](_0x27cc14,function(_0xa8a1b7){if(_0xa8a1b7['type']!==_0xeed9('0x3d')){var _0x5efa6f={};_0x5efa6f[_0xa8a1b7[_0xeed9('0x29')]]={'$like':'%'+_0x3dcc33[_0xeed9('0x31')][_0xeed9('0x3a')]+'%'};return _0x5efa6f;}})});}_0x113358=_[_0xeed9('0x3c')]({},_0x113358,_0x3dcc33['options']);var _0x39294c={'where':_0x113358[_0xeed9('0x3b')]};return db['Attachment'][_0xeed9('0x1e')](_0x39294c)[_0xeed9('0x24')](function(_0x8880a8){_0x3746aa['count']=_0x8880a8;if(_0x3dcc33['query'][_0xeed9('0x3e')]){_0x113358['include']=[{'all':!![]}];}return db[_0xeed9('0x3f')][_0xeed9('0x40')](_0x113358);})[_0xeed9('0x24')](function(_0x3c73c5){_0x3746aa[_0xeed9('0x41')]=_0x3c73c5;return _0x3746aa;})[_0xeed9('0x24')](respondWithFilteredResult(_0x2b0dec,_0x113358))[_0xeed9('0x42')](handleError(_0x2b0dec,null));};exports[_0xeed9('0x43')]=function(_0x1467c3,_0x178bf2){var _0x1ad890={'raw':!![],'where':{'id':_0x1467c3['params']['id']}},_0x4f7f95={};_0x4f7f95['model']=_['keys'](db['Attachment'][_0xeed9('0x2d')]);_0x4f7f95[_0xeed9('0x31')]=_[_0xeed9('0x32')](_0x1467c3[_0xeed9('0x31')]);_0x4f7f95[_0xeed9('0x33')]=_[_0xeed9('0x35')](_0x4f7f95[_0xeed9('0x30')],_0x4f7f95['query']);_0x1ad890[_0xeed9('0x34')]=_[_0xeed9('0x35')](_0x4f7f95[_0xeed9('0x30')],qs[_0xeed9('0x36')](_0x1467c3[_0xeed9('0x31')][_0xeed9('0x36')]));_0x1ad890[_0xeed9('0x34')]=_0x1ad890[_0xeed9('0x34')][_0xeed9('0x44')]?_0x1ad890[_0xeed9('0x34')]:_0x4f7f95['model'];if(_0x1467c3[_0xeed9('0x31')]['includeAll']){_0x1ad890[_0xeed9('0x45')]=[{'all':!![]}];}_0x1ad890=_[_0xeed9('0x3c')]({},_0x1ad890,_0x1467c3[_0xeed9('0x46')]);return db[_0xeed9('0x3f')]['find'](_0x1ad890)[_0xeed9('0x24')](handleEntityNotFound(_0x178bf2,null))[_0xeed9('0x24')](respondWithResult(_0x178bf2,null))['catch'](handleError(_0x178bf2,null));};exports['clone']=function(_0x3f3584,_0x4a229f){var _0x2dbd59={'where':{'id':_0x3f3584[_0xeed9('0x47')]['id']}},_0x478502={};_0x478502[_0xeed9('0x30')]=_[_0xeed9('0x32')](db[_0xeed9('0x3f')][_0xeed9('0x2d')]);_0x2dbd59[_0xeed9('0x34')]=_[_0xeed9('0x35')](_0x478502[_0xeed9('0x30')],qs['fields'](_0x3f3584[_0xeed9('0x31')]['fields']));_0x2dbd59[_0xeed9('0x34')]=_0x2dbd59['attributes'][_0xeed9('0x44')]?_0x2dbd59[_0xeed9('0x34')]:_0x478502[_0xeed9('0x30')];if(_0x3f3584[_0xeed9('0x31')]['includeAll']){_0x2dbd59['include']=[{'all':!![]}];}_0x2dbd59=_[_0xeed9('0x3c')]({},_0x2dbd59,_0x3f3584[_0xeed9('0x46')]);return db[_0xeed9('0x3f')]['find'](_0x2dbd59)[_0xeed9('0x24')](handleEntityNotFound(_0x4a229f,null))['then'](function(_0x3975e3){if(_0x3975e3){var _0x201ba8=_0x3975e3[_0xeed9('0x48')]({'plain':!![]});_0x201ba8=qs[_0xeed9('0x49')](_0x201ba8,['id','createdAt',_0xeed9('0x4a')]);_0x3f3584[_0xeed9('0x4b')]=_['omit'](_0x3f3584[_0xeed9('0x4b')],['id',_0xeed9('0x4c'),'updatedAt']);return db['Attachment'][_0xeed9('0x4d')](_[_0xeed9('0x3c')](_0x201ba8,_0x3f3584['body']),{'include':_0x3f3584[_0xeed9('0x31')][_0xeed9('0x3e')]?[{'all':!![]}]:undefined});}})[_0xeed9('0x24')](respondWithResult(_0x4a229f,0xc9))[_0xeed9('0x42')](handleError(_0x4a229f,null));};exports[_0xeed9('0x23')]=function(_0x5628bb,_0x32b3be){if(_0x5628bb['body']['id']){delete _0x5628bb[_0xeed9('0x4b')]['id'];}return db[_0xeed9('0x3f')][_0xeed9('0x4e')]({'where':{'id':_0x5628bb[_0xeed9('0x47')]['id']}})[_0xeed9('0x24')](handleEntityNotFound(_0x32b3be,null))['then'](saveUpdates(_0x5628bb[_0xeed9('0x4b')],null))[_0xeed9('0x24')](respondWithResult(_0x32b3be,null))[_0xeed9('0x42')](handleError(_0x32b3be,null));};exports[_0xeed9('0x25')]=function(_0x12f009,_0x2b0fe3){return db[_0xeed9('0x3f')]['find']({'where':{'id':_0x12f009[_0xeed9('0x47')]['id']}})['then'](handleEntityNotFound(_0x2b0fe3,null))[_0xeed9('0x24')](removeEntity(_0x2b0fe3,null))[_0xeed9('0x42')](handleError(_0x2b0fe3,null));};exports['create']=function(_0x52836e,_0x57cf6d,_0x33f99a){_0x52836e[_0xeed9('0x4b')][_0xeed9('0x29')]=_0x52836e[_0xeed9('0x4f')][_0xeed9('0x50')];_0x52836e[_0xeed9('0x4b')][_0xeed9('0x51')]=_0x52836e['file'][_0xeed9('0x52')];_0x52836e[_0xeed9('0x4b')][_0xeed9('0x53')]=_0x52836e[_0xeed9('0x4f')][_0xeed9('0x54')];return db[_0xeed9('0x3f')][_0xeed9('0x4d')](_0x52836e[_0xeed9('0x4b')])[_0xeed9('0x24')](respondWithResult(_0x57cf6d,0xc9))['catch'](handleError(_0x57cf6d,null));};exports[_0xeed9('0x55')]=function(_0x2515a0,_0x195d3e,_0x1972d5){return db['Attachment'][_0xeed9('0x56')]({'where':{'id':_0x2515a0['params']['id']},'raw':!![]})[_0xeed9('0x24')](handleEntityNotFound(_0x195d3e,null))['then'](function(_0x4d1d4f){if(_0x4d1d4f){var _0x1fc151=_0x4d1d4f[_0xeed9('0x57')]!==null;var _0x4e24a1=path[_0xeed9('0x58')](config[_0xeed9('0x59')],_0xeed9('0x5a'));if(_0x1fc151){_0x4e24a1=path[_0xeed9('0x58')](_0x4e24a1,_0xeed9('0x5b'));}var _0xd454ee=path[_0xeed9('0x58')](_0x4e24a1,_0x4d1d4f['basename']);return _0x195d3e[_0xeed9('0x55')](_0xd454ee);}})[_0xeed9('0x42')](handleError(_0x195d3e,null));};
\ No newline at end of file
+var _0x4bbc=['../../mysqldb','status','json','undefined','limit','count','offset','set','Content-Range','apply','reject','destroy','then','end','error','stack','name','index','Attachment','fieldName','type','key','model','map','keys','query','filters','intersection','attributes','fields','hasOwnProperty','order','sort','pick','where','merge','options','include','findAll','rows','catch','show','rawAttributes','find','params','length','omit','createdAt','updatedAt','body','create','includeAll','update','originalname','basename','file','filename','mimetype','download','findOne','ChatOfflineMessageId','join','eml-format','rimraf','zip-dir','fast-json-patch','util','to-csv','ejs','fs-extra','lodash','jsforce','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util'];(function(_0x3cb09b,_0x31c2a5){var _0x242048=function(_0x464aba){while(--_0x464aba){_0x3cb09b['push'](_0x3cb09b['shift']());}};_0x242048(++_0x31c2a5);}(_0x4bbc,0x1d3));var _0xc4bb=function(_0x64e71,_0x4c3b57){_0x64e71=_0x64e71-0x0;var _0x10c5c1=_0x4bbc[_0x64e71];return _0x10c5c1;};'use strict';var emlformat=require(_0xc4bb('0x0'));var rimraf=require(_0xc4bb('0x1'));var zipdir=require(_0xc4bb('0x2'));var jsonpatch=require(_0xc4bb('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xc4bb('0x4'));var path=require('path');var sox=require('sox');var csv=require(_0xc4bb('0x5'));var ejs=require(_0xc4bb('0x6'));var fs=require('fs');var fs_extra=require(_0xc4bb('0x7'));var _=require(_0xc4bb('0x8'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xc4bb('0x9'));var deskjs=require('desk.js');var toCsv=require(_0xc4bb('0x5'));var querystring=require(_0xc4bb('0xa'));var Papa=require('papaparse');var Redis=require(_0xc4bb('0xb'));var authService=require('../../components/auth/service');var qs=require(_0xc4bb('0xc'));var as=require(_0xc4bb('0xd'));var hardwareService=require(_0xc4bb('0xe'));var logger=require('../../config/logger')(_0xc4bb('0xf'));var utils=require(_0xc4bb('0x10'));var config=require(_0xc4bb('0x11'));var licenseUtil=require(_0xc4bb('0x12'));var db=require(_0xc4bb('0x13'))['db'];function respondWithStatusCode(_0x25f656,_0x2c76c3){_0x2c76c3=_0x2c76c3||0xcc;return function(_0x156571){if(_0x156571){return _0x25f656['sendStatus'](_0x2c76c3);}return _0x25f656[_0xc4bb('0x14')](_0x2c76c3)['end']();};}function respondWithResult(_0x55e3bd,_0x23de12){_0x23de12=_0x23de12||0xc8;return function(_0x198cf0){if(_0x198cf0){return _0x55e3bd[_0xc4bb('0x14')](_0x23de12)[_0xc4bb('0x15')](_0x198cf0);}};}function respondWithFilteredResult(_0x3d330c,_0x2707f9){return function(_0x29f9f0){if(_0x29f9f0){var _0x560ba2=typeof _0x2707f9['offset']===_0xc4bb('0x16')&&typeof _0x2707f9[_0xc4bb('0x17')]==='undefined';var _0x403fd3=_0x29f9f0[_0xc4bb('0x18')];var _0x362d5f=_0x560ba2?0x0:_0x2707f9['offset'];var _0x3e4399=_0x560ba2?_0x29f9f0[_0xc4bb('0x18')]:_0x2707f9[_0xc4bb('0x19')]+_0x2707f9[_0xc4bb('0x17')];var _0x35ff9e;if(_0x3e4399>=_0x403fd3){_0x3e4399=_0x403fd3;_0x35ff9e=0xc8;}else{_0x35ff9e=0xce;}_0x3d330c[_0xc4bb('0x14')](_0x35ff9e);return _0x3d330c[_0xc4bb('0x1a')](_0xc4bb('0x1b'),_0x362d5f+'-'+_0x3e4399+'/'+_0x403fd3)['json'](_0x29f9f0);}return null;};}function patchUpdates(_0x4c65c3){return function(_0x2211e6){try{jsonpatch[_0xc4bb('0x1c')](_0x2211e6,_0x4c65c3,!![]);}catch(_0x55a036){return BPromise[_0xc4bb('0x1d')](_0x55a036);}return _0x2211e6['save']();};}function saveUpdates(_0x23c7f4,_0x54233e){return function(_0x191b7e){if(_0x191b7e){return _0x191b7e['update'](_0x23c7f4)['then'](function(_0x9a2d8b){return _0x9a2d8b;});}return null;};}function removeEntity(_0x5be895,_0x4bfff4){return function(_0x3c99fe){if(_0x3c99fe){return _0x3c99fe[_0xc4bb('0x1e')]()[_0xc4bb('0x1f')](function(){_0x5be895[_0xc4bb('0x14')](0xcc)[_0xc4bb('0x20')]();});}};}function handleEntityNotFound(_0x74fe6d,_0x5aa8a6){return function(_0x2be45e){if(!_0x2be45e){_0x74fe6d['sendStatus'](0x194);}return _0x2be45e;};}function handleError(_0x1ed7d2,_0x409de9){_0x409de9=_0x409de9||0x1f4;return function(_0x1d251a){logger[_0xc4bb('0x21')](_0x1d251a[_0xc4bb('0x22')]);if(_0x1d251a[_0xc4bb('0x23')]){delete _0x1d251a['name'];}_0x1ed7d2[_0xc4bb('0x14')](_0x409de9)['send'](_0x1d251a);};}exports[_0xc4bb('0x24')]=function(_0x21c649,_0x4530c2){var _0x39e9b9={},_0x37ca25={},_0x23e538={'count':0x0,'rows':[]};var _0x592a50=_['map'](db[_0xc4bb('0x25')]['rawAttributes'],function(_0x32b89e){return{'name':_0x32b89e[_0xc4bb('0x26')],'type':_0x32b89e[_0xc4bb('0x27')][_0xc4bb('0x28')]};});_0x37ca25[_0xc4bb('0x29')]=_[_0xc4bb('0x2a')](_0x592a50,'name');_0x37ca25['query']=_[_0xc4bb('0x2b')](_0x21c649[_0xc4bb('0x2c')]);_0x37ca25[_0xc4bb('0x2d')]=_[_0xc4bb('0x2e')](_0x37ca25[_0xc4bb('0x29')],_0x37ca25[_0xc4bb('0x2c')]);_0x39e9b9[_0xc4bb('0x2f')]=_[_0xc4bb('0x2e')](_0x37ca25[_0xc4bb('0x29')],qs[_0xc4bb('0x30')](_0x21c649['query'][_0xc4bb('0x30')]));_0x39e9b9[_0xc4bb('0x2f')]=_0x39e9b9[_0xc4bb('0x2f')]['length']?_0x39e9b9[_0xc4bb('0x2f')]:_0x37ca25[_0xc4bb('0x29')];if(!_0x21c649[_0xc4bb('0x2c')][_0xc4bb('0x31')]('nolimit')){_0x39e9b9['limit']=qs['limit'](_0x21c649[_0xc4bb('0x2c')]['limit']);_0x39e9b9['offset']=qs[_0xc4bb('0x19')](_0x21c649['query'][_0xc4bb('0x19')]);}_0x39e9b9[_0xc4bb('0x32')]=qs[_0xc4bb('0x33')](_0x21c649[_0xc4bb('0x2c')][_0xc4bb('0x33')]);_0x39e9b9['where']=qs['filters'](_[_0xc4bb('0x34')](_0x21c649['query'],_0x37ca25[_0xc4bb('0x2d')]),_0x592a50);if(_0x21c649[_0xc4bb('0x2c')]['filter']){_0x39e9b9[_0xc4bb('0x35')]=_[_0xc4bb('0x36')](_0x39e9b9[_0xc4bb('0x35')],{'$or':_['map'](_0x592a50,function(_0xb69d56){if(_0xb69d56[_0xc4bb('0x27')]!=='VIRTUAL'){var _0x526bc8={};_0x526bc8[_0xb69d56['name']]={'$like':'%'+_0x21c649[_0xc4bb('0x2c')]['filter']+'%'};return _0x526bc8;}})});}_0x39e9b9=_[_0xc4bb('0x36')]({},_0x39e9b9,_0x21c649[_0xc4bb('0x37')]);var _0x28ffcb={'where':_0x39e9b9[_0xc4bb('0x35')]};return db[_0xc4bb('0x25')][_0xc4bb('0x18')](_0x28ffcb)['then'](function(_0x56533f){_0x23e538['count']=_0x56533f;if(_0x21c649['query']['includeAll']){_0x39e9b9[_0xc4bb('0x38')]=[{'all':!![]}];}return db[_0xc4bb('0x25')][_0xc4bb('0x39')](_0x39e9b9);})['then'](function(_0x8766dd){_0x23e538[_0xc4bb('0x3a')]=_0x8766dd;return _0x23e538;})[_0xc4bb('0x1f')](respondWithFilteredResult(_0x4530c2,_0x39e9b9))[_0xc4bb('0x3b')](handleError(_0x4530c2,null));};exports[_0xc4bb('0x3c')]=function(_0x30de98,_0x31bc3b){var _0x6144d8={'raw':!![],'where':{'id':_0x30de98['params']['id']}},_0x33248f={};_0x33248f['model']=_[_0xc4bb('0x2b')](db['Attachment'][_0xc4bb('0x3d')]);_0x33248f[_0xc4bb('0x2c')]=_[_0xc4bb('0x2b')](_0x30de98[_0xc4bb('0x2c')]);_0x33248f['filters']=_[_0xc4bb('0x2e')](_0x33248f['model'],_0x33248f[_0xc4bb('0x2c')]);_0x6144d8[_0xc4bb('0x2f')]=_[_0xc4bb('0x2e')](_0x33248f[_0xc4bb('0x29')],qs[_0xc4bb('0x30')](_0x30de98[_0xc4bb('0x2c')][_0xc4bb('0x30')]));_0x6144d8['attributes']=_0x6144d8[_0xc4bb('0x2f')]['length']?_0x6144d8[_0xc4bb('0x2f')]:_0x33248f[_0xc4bb('0x29')];if(_0x30de98[_0xc4bb('0x2c')]['includeAll']){_0x6144d8['include']=[{'all':!![]}];}_0x6144d8=_[_0xc4bb('0x36')]({},_0x6144d8,_0x30de98[_0xc4bb('0x37')]);return db[_0xc4bb('0x25')][_0xc4bb('0x3e')](_0x6144d8)[_0xc4bb('0x1f')](handleEntityNotFound(_0x31bc3b,null))[_0xc4bb('0x1f')](respondWithResult(_0x31bc3b,null))['catch'](handleError(_0x31bc3b,null));};exports['clone']=function(_0x15c614,_0x15e83c){var _0x53b2fe={'where':{'id':_0x15c614[_0xc4bb('0x3f')]['id']}},_0x18adba={};_0x18adba[_0xc4bb('0x29')]=_[_0xc4bb('0x2b')](db[_0xc4bb('0x25')]['rawAttributes']);_0x53b2fe[_0xc4bb('0x2f')]=_[_0xc4bb('0x2e')](_0x18adba[_0xc4bb('0x29')],qs[_0xc4bb('0x30')](_0x15c614[_0xc4bb('0x2c')]['fields']));_0x53b2fe['attributes']=_0x53b2fe[_0xc4bb('0x2f')][_0xc4bb('0x40')]?_0x53b2fe[_0xc4bb('0x2f')]:_0x18adba[_0xc4bb('0x29')];if(_0x15c614[_0xc4bb('0x2c')]['includeAll']){_0x53b2fe['include']=[{'all':!![]}];}_0x53b2fe=_[_0xc4bb('0x36')]({},_0x53b2fe,_0x15c614['options']);return db['Attachment']['find'](_0x53b2fe)[_0xc4bb('0x1f')](handleEntityNotFound(_0x15e83c,null))[_0xc4bb('0x1f')](function(_0x482b45){if(_0x482b45){var _0x492b0e=_0x482b45['get']({'plain':!![]});_0x492b0e=qs[_0xc4bb('0x41')](_0x492b0e,['id',_0xc4bb('0x42'),_0xc4bb('0x43')]);_0x15c614['body']=_[_0xc4bb('0x41')](_0x15c614[_0xc4bb('0x44')],['id',_0xc4bb('0x42'),_0xc4bb('0x43')]);return db[_0xc4bb('0x25')][_0xc4bb('0x45')](_[_0xc4bb('0x36')](_0x492b0e,_0x15c614[_0xc4bb('0x44')]),{'include':_0x15c614[_0xc4bb('0x2c')][_0xc4bb('0x46')]?[{'all':!![]}]:undefined});}})[_0xc4bb('0x1f')](respondWithResult(_0x15e83c,0xc9))[_0xc4bb('0x3b')](handleError(_0x15e83c,null));};exports[_0xc4bb('0x47')]=function(_0x186637,_0x5a912e){if(_0x186637['body']['id']){delete _0x186637[_0xc4bb('0x44')]['id'];}return db[_0xc4bb('0x25')]['find']({'where':{'id':_0x186637[_0xc4bb('0x3f')]['id']}})[_0xc4bb('0x1f')](handleEntityNotFound(_0x5a912e,null))[_0xc4bb('0x1f')](saveUpdates(_0x186637[_0xc4bb('0x44')],null))['then'](respondWithResult(_0x5a912e,null))[_0xc4bb('0x3b')](handleError(_0x5a912e,null));};exports[_0xc4bb('0x1e')]=function(_0x474285,_0x331c06){return db[_0xc4bb('0x25')][_0xc4bb('0x3e')]({'where':{'id':_0x474285[_0xc4bb('0x3f')]['id']}})[_0xc4bb('0x1f')](handleEntityNotFound(_0x331c06,null))[_0xc4bb('0x1f')](removeEntity(_0x331c06,null))[_0xc4bb('0x3b')](handleError(_0x331c06,null));};exports['create']=function(_0xa5307,_0x481dc6,_0x3db9a4){_0xa5307[_0xc4bb('0x44')][_0xc4bb('0x23')]=_0xa5307['file'][_0xc4bb('0x48')];_0xa5307[_0xc4bb('0x44')][_0xc4bb('0x49')]=_0xa5307[_0xc4bb('0x4a')][_0xc4bb('0x4b')];_0xa5307['body'][_0xc4bb('0x27')]=_0xa5307[_0xc4bb('0x4a')][_0xc4bb('0x4c')];return db[_0xc4bb('0x25')][_0xc4bb('0x45')](_0xa5307[_0xc4bb('0x44')])[_0xc4bb('0x1f')](respondWithResult(_0x481dc6,0xc9))[_0xc4bb('0x3b')](handleError(_0x481dc6,null));};exports[_0xc4bb('0x4d')]=function(_0x5b0947,_0x1b9440,_0x512c53){return db[_0xc4bb('0x25')][_0xc4bb('0x4e')]({'where':{'id':_0x5b0947[_0xc4bb('0x3f')]['id']},'raw':!![]})[_0xc4bb('0x1f')](handleEntityNotFound(_0x1b9440,null))[_0xc4bb('0x1f')](function(_0x41afa4){if(_0x41afa4){var _0x475916=_0x41afa4[_0xc4bb('0x4f')]!==null;var _0x1c0bed=path[_0xc4bb('0x50')](config['root'],'server/files/attachments/');if(_0x475916){_0x1c0bed=path['join'](_0x1c0bed,'offline-chat/');}var _0x47d66d=path[_0xc4bb('0x50')](_0x1c0bed,_0x41afa4[_0xc4bb('0x49')]);return _0x1b9440[_0xc4bb('0x4d')](_0x47d66d);}})[_0xc4bb('0x3b')](handleError(_0x1b9440,null));};
\ No newline at end of file
index a8e7e84..5328cac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe022=['attachments','lodash','../../config/logger','api','bluebird','request-promise','path','../../config/environment','./attachment.attributes','exports','define','Attachment'];(function(_0x668d5b,_0x47e921){var _0x26b714=function(_0x50261a){while(--_0x50261a){_0x668d5b['push'](_0x668d5b['shift']());}};_0x26b714(++_0x47e921);}(_0xe022,0x6d));var _0x2e02=function(_0x4f6c83,_0x4cec92){_0x4f6c83=_0x4f6c83-0x0;var _0x33cb29=_0xe022[_0x4f6c83];return _0x33cb29;};'use strict';var _=require(_0x2e02('0x0'));var util=require('util');var logger=require(_0x2e02('0x1'))(_0x2e02('0x2'));var moment=require('moment');var BPromise=require(_0x2e02('0x3'));var rp=require(_0x2e02('0x4'));var fs=require('fs');var path=require(_0x2e02('0x5'));var rimraf=require('rimraf');var config=require(_0x2e02('0x6'));var attributes=require(_0x2e02('0x7'));module[_0x2e02('0x8')]=function(_0x2bb714,_0x4b2b70){return _0x2bb714[_0x2e02('0x9')](_0x2e02('0xa'),attributes,{'tableName':_0x2e02('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x55c0=['exports','Attachment','lodash','util','../../config/logger','api','bluebird','request-promise','path','./attachment.attributes'];(function(_0x5c616f,_0x2a6d47){var _0x158513=function(_0x14d1d4){while(--_0x14d1d4){_0x5c616f['push'](_0x5c616f['shift']());}};_0x158513(++_0x2a6d47);}(_0x55c0,0xca));var _0x055c=function(_0x274e0e,_0x3aace4){_0x274e0e=_0x274e0e-0x0;var _0x4ca356=_0x55c0[_0x274e0e];return _0x4ca356;};'use strict';var _=require(_0x055c('0x0'));var util=require(_0x055c('0x1'));var logger=require(_0x055c('0x2'))(_0x055c('0x3'));var moment=require('moment');var BPromise=require(_0x055c('0x4'));var rp=require(_0x055c('0x5'));var fs=require('fs');var path=require(_0x055c('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x055c('0x7'));module[_0x055c('0x8')]=function(_0x1439f0,_0x10ba09){return _0x1439f0['define'](_0x055c('0x9'),attributes,{'tableName':'attachments','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2c36d9d..c82f910 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe13a=['request\x20sent','Attachment,\x20%s,\x20%s,\x20%s','stringify','error','code','message','CreateAttachment','Attachment','body','options','raw','debug','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Attachment,\x20%s,\x20%s'];(function(_0x119260,_0x565904){var _0x341137=function(_0x488905){while(--_0x488905){_0x119260['push'](_0x119260['shift']());}};_0x341137(++_0x565904);}(_0xe13a,0x178));var _0xae13=function(_0x59c7f3,_0x4f5e95){_0x59c7f3=_0x59c7f3-0x0;var _0x2c6aa0=_0xe13a[_0x59c7f3];return _0x2c6aa0;};'use strict';var _=require('lodash');var util=require(_0xae13('0x0'));var moment=require(_0xae13('0x1'));var BPromise=require(_0xae13('0x2'));var rs=require(_0xae13('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xae13('0x4'))['db'];var utils=require(_0xae13('0x5'));var logger=require(_0xae13('0x6'))(_0xae13('0x7'));var config=require(_0xae13('0x8'));var jayson=require(_0xae13('0x9'));var client=jayson[_0xae13('0xa')][_0xae13('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x341ba4,_0x4ae51f,_0x2f6d10){return new BPromise(function(_0x2b2e1f,_0x27fefd){return client[_0xae13('0xc')](_0x341ba4,_0x2f6d10)[_0xae13('0xd')](function(_0x41bf44){logger[_0xae13('0xe')](_0xae13('0xf'),_0x4ae51f,_0xae13('0x10'));logger['debug'](_0xae13('0x11'),_0x4ae51f,_0xae13('0x10'),JSON[_0xae13('0x12')](_0x41bf44));if(_0x41bf44[_0xae13('0x13')]){if(_0x41bf44[_0xae13('0x13')][_0xae13('0x14')]===0x1f4){logger[_0xae13('0x13')]('Attachment,\x20%s,\x20%s',_0x4ae51f,_0x41bf44[_0xae13('0x13')][_0xae13('0x15')]);return _0x27fefd(_0x41bf44['error']['message']);}logger['error']('Attachment,\x20%s,\x20%s',_0x4ae51f,_0x41bf44['error'][_0xae13('0x15')]);return _0x2b2e1f(_0x41bf44[_0xae13('0x13')][_0xae13('0x15')]);}else{logger[_0xae13('0xe')](_0xae13('0xf'),_0x4ae51f,_0xae13('0x10'));_0x2b2e1f(_0x41bf44['result'][_0xae13('0x15')]);}})['catch'](function(_0xe10aab){logger[_0xae13('0x13')](_0xae13('0xf'),_0x4ae51f,_0xe10aab);_0x27fefd(_0xe10aab);});});}exports[_0xae13('0x16')]=function(_0x1a9c07){var _0x1b33b7=this;return new Promise(function(_0x32dcbe,_0x326471){return db[_0xae13('0x17')]['create'](_0x1a9c07[_0xae13('0x18')],{'raw':_0x1a9c07['options']?_0x1a9c07[_0xae13('0x19')][_0xae13('0x1a')]===undefined?!![]:![]:!![]})['then'](function(_0x25a195){logger[_0xae13('0xe')](_0xae13('0x16'),_0x1a9c07);logger[_0xae13('0x1b')](_0xae13('0x16'),_0x1a9c07,JSON[_0xae13('0x12')](_0x25a195));_0x32dcbe(_0x25a195);})['catch'](function(_0x520692){logger[_0xae13('0x13')](_0xae13('0x16'),_0x520692['message'],_0x1a9c07);_0x326471(_0x1b33b7[_0xae13('0x13')](0x1f4,_0x520692['message']));});});};
\ No newline at end of file
+var _0x2242=['Attachment,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','catch','CreateAttachment','Attachment','create','body','options','raw','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','request','then','info','Attachment,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x126ce0,_0x9f3f52){var _0x26c952=function(_0x5a6721){while(--_0x5a6721){_0x126ce0['push'](_0x126ce0['shift']());}};_0x26c952(++_0x9f3f52);}(_0x2242,0x1a3));var _0x2224=function(_0x214314,_0x304d3f){_0x214314=_0x214314-0x0;var _0x3e5c16=_0x2242[_0x214314];return _0x3e5c16;};'use strict';var _=require(_0x2224('0x0'));var util=require(_0x2224('0x1'));var moment=require(_0x2224('0x2'));var BPromise=require('bluebird');var rs=require(_0x2224('0x3'));var fs=require('fs');var Redis=require(_0x2224('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x2224('0x5'));var logger=require(_0x2224('0x6'))('rpc');var config=require(_0x2224('0x7'));var jayson=require(_0x2224('0x8'));var client=jayson[_0x2224('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x28833b,_0x16893c,_0x35f807){return new BPromise(function(_0x25c6d4,_0x18149e){return client[_0x2224('0xa')](_0x28833b,_0x35f807)[_0x2224('0xb')](function(_0x147bd7){logger[_0x2224('0xc')](_0x2224('0xd'),_0x16893c,_0x2224('0xe'));logger[_0x2224('0xf')](_0x2224('0x10'),_0x16893c,_0x2224('0xe'),JSON[_0x2224('0x11')](_0x147bd7));if(_0x147bd7['error']){if(_0x147bd7['error'][_0x2224('0x12')]===0x1f4){logger[_0x2224('0x13')](_0x2224('0xd'),_0x16893c,_0x147bd7[_0x2224('0x13')]['message']);return _0x18149e(_0x147bd7[_0x2224('0x13')][_0x2224('0x14')]);}logger['error']('Attachment,\x20%s,\x20%s',_0x16893c,_0x147bd7[_0x2224('0x13')][_0x2224('0x14')]);return _0x25c6d4(_0x147bd7['error']['message']);}else{logger[_0x2224('0xc')](_0x2224('0xd'),_0x16893c,_0x2224('0xe'));_0x25c6d4(_0x147bd7[_0x2224('0x15')][_0x2224('0x14')]);}})[_0x2224('0x16')](function(_0x34d045){logger[_0x2224('0x13')]('Attachment,\x20%s,\x20%s',_0x16893c,_0x34d045);_0x18149e(_0x34d045);});});}exports[_0x2224('0x17')]=function(_0x28e8a1){var _0xffed3d=this;return new Promise(function(_0x3b47a1,_0x943a87){return db[_0x2224('0x18')][_0x2224('0x19')](_0x28e8a1[_0x2224('0x1a')],{'raw':_0x28e8a1[_0x2224('0x1b')]?_0x28e8a1[_0x2224('0x1b')][_0x2224('0x1c')]===undefined?!![]:![]:!![]})[_0x2224('0xb')](function(_0x30defb){logger[_0x2224('0xc')](_0x2224('0x17'),_0x28e8a1);logger['debug']('CreateAttachment',_0x28e8a1,JSON[_0x2224('0x11')](_0x30defb));_0x3b47a1(_0x30defb);})[_0x2224('0x16')](function(_0x14f837){logger[_0x2224('0x13')](_0x2224('0x17'),_0x14f837[_0x2224('0x14')],_0x28e8a1);_0x943a87(_0xffed3d[_0x2224('0x13')](0x1f4,_0x14f837[_0x2224('0x14')]));});});};
\ No newline at end of file
index aeb59f0..50a7621 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['originalname','replace','single','file','create','put','/:id','update','destroy','exports','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./attachment.controller','get','index','isAuthenticated','show','/:id/download','download','post','/:id/clone','diskStorage','join','server/files/attachments/','format','%s-%s'];(function(_0x3b708e,_0x35fbbc){var _0x268e60=function(_0x240369){while(--_0x240369){_0x3b708e['push'](_0x3b708e['shift']());}};_0x268e60(++_0x35fbbc);}(_0xb10b,0x12a));var _0xbb10=function(_0x521e8d,_0x23a290){_0x521e8d=_0x521e8d-0x0;var _0x518bbd=_0xb10b[_0x521e8d];return _0x518bbd;};'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('0xf')](_0xbb10('0x10'),auth['isAuthenticated'](),controller['clone']);var upload=multer({'storage':multer[_0xbb10('0x11')]({'destination':function(_0x118a74,_0xce64f3,_0x5e136d){_0x5e136d(null,path[_0xbb10('0x12')](config['root'],_0xbb10('0x13')));},'filename':function(_0x916a32,_0x285009,_0x193a27){_0x193a27(null,util[_0xbb10('0x14')](_0xbb10('0x15'),Date['now'](),_0x285009[_0xbb10('0x16')][_0xbb10('0x17')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0xbb10('0xf')]('/',upload[_0xbb10('0x18')](_0xbb10('0x19')),controller[_0xbb10('0x1a')]);router[_0xbb10('0x1b')](_0xbb10('0x1c'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x1d')]);router['delete'](_0xbb10('0x1c'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x1e')]);module[_0xbb10('0x1f')]=router;
\ No newline at end of file
+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(_0x556364,_0xe7b37c){var _0x3e6cc6=function(_0x6d7b44){while(--_0x6d7b44){_0x556364['push'](_0x556364['shift']());}};_0x3e6cc6(++_0xe7b37c);}(_0x757a,0xde));var _0xa757=function(_0x5da4f0,_0x41c76d){_0x5da4f0=_0x5da4f0-0x0;var _0x4e41a5=_0x757a[_0x5da4f0];return _0x4e41a5;};'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
index b2d3111..723ee35 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x98d8=['Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20enabled','findOne','name','password','salt','role','disabled','blocked','blockedAt','online','admin','user','minutes','getLicense','catch','send','message','login','signToken','use','ad-login','passport','Strategy','moment','activedirectory2','bluebird','../../mysqldb','../../components/auth/service','../../config/environment','../../config/logger','api','activedirectory','undefined','baseDN','url','domain','authenticate','error','Error\x20authenticate\x20%s:\x20%s','inspect','Error\x20authenticate\x20%s:\x20Wrong\x20credentials','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','Setting','adSsoEnabled','blockDuration','then'];(function(_0x1f223b,_0x2c8afd){var _0x2ed524=function(_0x3b527d){while(--_0x3b527d){_0x1f223b['push'](_0x1f223b['shift']());}};_0x2ed524(++_0x2c8afd);}(_0x98d8,0xcd));var _0x898d=function(_0x2a453b,_0x479c50){_0x2a453b=_0x2a453b-0x0;var _0x132f79=_0x98d8[_0x2a453b];return _0x132f79;};'use strict';var passport=require(_0x898d('0x0'));var LocalStrategy=require('passport-local')[_0x898d('0x1')];var moment=require(_0x898d('0x2'));var ActiveDirectory=require(_0x898d('0x3'));var BPromise=require(_0x898d('0x4'));var util=require('util');var db=require(_0x898d('0x5'))['db'];var authService=require(_0x898d('0x6'));var utils=require('../../config/utils');var config=require(_0x898d('0x7'));var logger=require(_0x898d('0x8'))(_0x898d('0x9'));function isActiveDirectoryConfigured(_0x474b36){var _0xc7814c=![];if(typeof _0x474b36[_0x898d('0xa')]!==_0x898d('0xb')){_0xc7814c=_0x474b36[_0x898d('0xa')][_0x898d('0xc')]&&_0x474b36[_0x898d('0xa')][_0x898d('0xd')]&&_0x474b36[_0x898d('0xa')][_0x898d('0xe')];}return _0xc7814c;}function adAuthenticate(_0xd4a544,_0xe201f9,_0x4615f9){return new BPromise(function(_0x195422,_0x49970b){try{var _0x24abbd=new ActiveDirectory(_0xd4a544);_0x24abbd[_0x898d('0xf')](_0xe201f9,_0x4615f9,function(_0x2adebb,_0xfd905){if(_0x2adebb){logger[_0x898d('0x10')](_0x898d('0x11'),_0xe201f9,util[_0x898d('0x12')](_0x2adebb,{'showHidden':![],'depth':null}));_0x49970b('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}else if(!_0xfd905){logger[_0x898d('0x10')](_0x898d('0x13'),_0xe201f9);_0x49970b('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}else{_0x195422(_0xfd905);}});}catch(_0x5e2b6b){_0x49970b(_0x5e2b6b);}});}function ActiveDirectoryAuthenticate(_0xeb81f0,_0x436d27,_0x5d17ea,_0x2a7e2f){var _0x162e8f,_0x1d92c2;if(!isActiveDirectoryConfigured(config)){logger[_0x898d('0x10')]('Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20configured',_0x436d27);return _0x2a7e2f(null,![],{'message':_0x898d('0x14')});}return db[_0x898d('0x15')]['findOne']({'where':{'id':0x1},'attributes':[_0x898d('0x16'),_0x898d('0x17')],'raw':!![]})[_0x898d('0x18')](function(_0x192de9){_0x162e8f=_0x192de9;if(!_0x162e8f[_0x898d('0x16')]){logger['error'](_0x898d('0x19'),_0x436d27);throw new Error('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}return _0xeb81f0[_0x898d('0x1a')]({'attributes':['id',_0x898d('0x1b'),_0x898d('0x1c'),_0x898d('0x1d'),_0x898d('0x1e'),_0x898d('0x1f'),_0x898d('0x20'),_0x898d('0x21'),_0x898d('0x22')],'where':{'name':_0x436d27,'role':{'$or':[_0x898d('0x23'),_0x898d('0x24'),'agent']},'adSsoEnabled':!![]}});})[_0x898d('0x18')](function(_0x2ce81a){if(!_0x2ce81a||_0x2ce81a&&_0x2ce81a[_0x898d('0x1b')]!==_0x436d27){throw new Error(_0x898d('0x14'));}_0x1d92c2=_0x2ce81a;var _0x17d1eb=_0x1d92c2[_0x898d('0x1b')]+'@'+config['activedirectory'][_0x898d('0xe')];return adAuthenticate(config['activedirectory'],_0x17d1eb,_0x5d17ea);})[_0x898d('0x18')](function(_0x48181a){if(_0x1d92c2[_0x898d('0x1f')]){throw new Error(_0x898d('0x14'));}if(_0x162e8f[_0x898d('0x17')]>0x0){if(_0x1d92c2[_0x898d('0x20')]){if(moment(_0x1d92c2[_0x898d('0x21')])['add'](_0x162e8f[_0x898d('0x17')],_0x898d('0x25'))>moment()){throw new Error(_0x898d('0x14'));}return utils['clearBlockUser'](_0x1d92c2,0x0,![],null)['then'](function(){return utils[_0x898d('0x26')](_0x1d92c2);})[_0x898d('0x18')](function(){return _0x2a7e2f(null,_0x1d92c2);});}else{return utils[_0x898d('0x26')](_0x1d92c2)['then'](function(){return _0x2a7e2f(null,_0x1d92c2);});}}else{return utils[_0x898d('0x26')](_0x1d92c2)[_0x898d('0x18')](function(){return _0x2a7e2f(null,_0x1d92c2);});}})[_0x898d('0x27')](function(_0x43a5b3){return _0x2a7e2f(null,![],_0x43a5b3);});}function handleError(_0x53f2e5,_0x4bf267,_0x1fdb06){return _0x53f2e5['status'](_0x4bf267||0x1f4)[_0x898d('0x28')]({'message':_0x1fdb06?_0x1fdb06[_0x898d('0x29')]||_0x1fdb06:''});}exports[_0x898d('0x2a')]=function(_0x4e09b4,_0x1b1be5,_0x4c91dd){passport[_0x898d('0xf')]('ad-login',function(_0x55dae8,_0x45d2e3,_0x376530){var _0x4ca995=_0x55dae8||_0x376530;if(_0x4ca995){return handleError(_0x1b1be5,0x191,_0x4ca995);}if(!_0x45d2e3){return handleError(_0x1b1be5,0x194,{'message':'Something\x20went\x20wrong,\x20please\x20try\x20again.'});}else{var _0x3a0ac5={'payload':{'id':_0x45d2e3['id'],'role':_0x45d2e3[_0x898d('0x1e')]},'options':{'expiresIn':0x15180}};return authService[_0x898d('0x2b')](_0x3a0ac5)[_0x898d('0x18')](function(_0x324f46){_0x1b1be5['json']({'id':_0x45d2e3['id'],'token':_0x324f46,'statusCall':'','isAlreadyLogged':_0x45d2e3['online']});});}})(_0x4e09b4,_0x1b1be5,_0x4c91dd);};passport[_0x898d('0x2c')](_0x898d('0x2d'),new LocalStrategy({'usernameField':_0x898d('0x1b'),'passwordField':_0x898d('0x1c')},function(_0x54b2f9,_0x3e6348,_0x26c605){return ActiveDirectoryAuthenticate(db['User'],_0x54b2f9,_0x3e6348,_0x26c605);}));
\ No newline at end of file
+var _0xadf0=['admin','user','agent','blockDuration','blockedAt','add','clearBlockUser','getLicense','catch','status','send','message','login','ad-login','Something\x20went\x20wrong,\x20please\x20try\x20again.','signToken','json','use','User','passport-local','Strategy','moment','activedirectory2','bluebird','util','../../mysqldb','../../config/utils','activedirectory','baseDN','domain','authenticate','error','inspect','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','Error\x20authenticate\x20%s:\x20Wrong\x20credentials','Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20configured','findOne','adSsoEnabled','then','Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20enabled','name','password','salt','role','disabled','blocked','online'];(function(_0x5b561d,_0x422b7c){var _0x431060=function(_0x401409){while(--_0x401409){_0x5b561d['push'](_0x5b561d['shift']());}};_0x431060(++_0x422b7c);}(_0xadf0,0x12d));var _0x0adf=function(_0x26d269,_0x363553){_0x26d269=_0x26d269-0x0;var _0xde76b7=_0xadf0[_0x26d269];return _0xde76b7;};'use strict';var passport=require('passport');var LocalStrategy=require(_0x0adf('0x0'))[_0x0adf('0x1')];var moment=require(_0x0adf('0x2'));var ActiveDirectory=require(_0x0adf('0x3'));var BPromise=require(_0x0adf('0x4'));var util=require(_0x0adf('0x5'));var db=require(_0x0adf('0x6'))['db'];var authService=require('../../components/auth/service');var utils=require(_0x0adf('0x7'));var config=require('../../config/environment');var logger=require('../../config/logger')('api');function isActiveDirectoryConfigured(_0x516b05){var _0xd1de43=![];if(typeof _0x516b05[_0x0adf('0x8')]!=='undefined'){_0xd1de43=_0x516b05['activedirectory'][_0x0adf('0x9')]&&_0x516b05[_0x0adf('0x8')]['url']&&_0x516b05[_0x0adf('0x8')][_0x0adf('0xa')];}return _0xd1de43;}function adAuthenticate(_0x5cb4d9,_0x4712d7,_0x169c4c){return new BPromise(function(_0x4d7775,_0x5705bb){try{var _0x46260f=new ActiveDirectory(_0x5cb4d9);_0x46260f[_0x0adf('0xb')](_0x4712d7,_0x169c4c,function(_0x456ac8,_0x1ef066){if(_0x456ac8){logger[_0x0adf('0xc')]('Error\x20authenticate\x20%s:\x20%s',_0x4712d7,util[_0x0adf('0xd')](_0x456ac8,{'showHidden':![],'depth':null}));_0x5705bb(_0x0adf('0xe'));}else if(!_0x1ef066){logger['error'](_0x0adf('0xf'),_0x4712d7);_0x5705bb('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}else{_0x4d7775(_0x1ef066);}});}catch(_0xb018be){_0x5705bb(_0xb018be);}});}function ActiveDirectoryAuthenticate(_0x4d4f0d,_0x75ddac,_0x45bbab,_0x3d7528){var _0x232cdc,_0x15dc48;if(!isActiveDirectoryConfigured(config)){logger[_0x0adf('0xc')](_0x0adf('0x10'),_0x75ddac);return _0x3d7528(null,![],{'message':_0x0adf('0xe')});}return db['Setting'][_0x0adf('0x11')]({'where':{'id':0x1},'attributes':[_0x0adf('0x12'),'blockDuration'],'raw':!![]})[_0x0adf('0x13')](function(_0x59c3b0){_0x232cdc=_0x59c3b0;if(!_0x232cdc[_0x0adf('0x12')]){logger[_0x0adf('0xc')](_0x0adf('0x14'),_0x75ddac);throw new Error(_0x0adf('0xe'));}return _0x4d4f0d['findOne']({'attributes':['id',_0x0adf('0x15'),_0x0adf('0x16'),_0x0adf('0x17'),_0x0adf('0x18'),_0x0adf('0x19'),_0x0adf('0x1a'),'blockedAt',_0x0adf('0x1b')],'where':{'name':_0x75ddac,'role':{'$or':[_0x0adf('0x1c'),_0x0adf('0x1d'),_0x0adf('0x1e')]},'adSsoEnabled':!![]}});})['then'](function(_0x1c1829){if(!_0x1c1829||_0x1c1829&&_0x1c1829[_0x0adf('0x15')]!==_0x75ddac){throw new Error(_0x0adf('0xe'));}_0x15dc48=_0x1c1829;var _0x53bfdd=_0x15dc48[_0x0adf('0x15')]+'@'+config[_0x0adf('0x8')][_0x0adf('0xa')];return adAuthenticate(config[_0x0adf('0x8')],_0x53bfdd,_0x45bbab);})[_0x0adf('0x13')](function(_0x42fffd){if(_0x15dc48['disabled']){throw new Error(_0x0adf('0xe'));}if(_0x232cdc[_0x0adf('0x1f')]>0x0){if(_0x15dc48[_0x0adf('0x1a')]){if(moment(_0x15dc48[_0x0adf('0x20')])[_0x0adf('0x21')](_0x232cdc[_0x0adf('0x1f')],'minutes')>moment()){throw new Error(_0x0adf('0xe'));}return utils[_0x0adf('0x22')](_0x15dc48,0x0,![],null)[_0x0adf('0x13')](function(){return utils['getLicense'](_0x15dc48);})['then'](function(){return _0x3d7528(null,_0x15dc48);});}else{return utils['getLicense'](_0x15dc48)[_0x0adf('0x13')](function(){return _0x3d7528(null,_0x15dc48);});}}else{return utils[_0x0adf('0x23')](_0x15dc48)[_0x0adf('0x13')](function(){return _0x3d7528(null,_0x15dc48);});}})[_0x0adf('0x24')](function(_0x24e62a){return _0x3d7528(null,![],_0x24e62a);});}function handleError(_0x1bef27,_0x19fa54,_0x26a56f){return _0x1bef27[_0x0adf('0x25')](_0x19fa54||0x1f4)[_0x0adf('0x26')]({'message':_0x26a56f?_0x26a56f[_0x0adf('0x27')]||_0x26a56f:''});}exports[_0x0adf('0x28')]=function(_0x40c1f3,_0x366d20,_0x46dbba){passport['authenticate'](_0x0adf('0x29'),function(_0x400c9b,_0x34303c,_0x44a2ba){var _0x1fe2e5=_0x400c9b||_0x44a2ba;if(_0x1fe2e5){return handleError(_0x366d20,0x191,_0x1fe2e5);}if(!_0x34303c){return handleError(_0x366d20,0x194,{'message':_0x0adf('0x2a')});}else{var _0x1931ca={'payload':{'id':_0x34303c['id'],'role':_0x34303c['role']},'options':{'expiresIn':0x15180}};return authService[_0x0adf('0x2b')](_0x1931ca)['then'](function(_0x2b79ef){_0x366d20[_0x0adf('0x2c')]({'id':_0x34303c['id'],'token':_0x2b79ef,'statusCall':'','isAlreadyLogged':_0x34303c[_0x0adf('0x1b')]});});}})(_0x40c1f3,_0x366d20,_0x46dbba);};passport[_0x0adf('0x2d')](_0x0adf('0x29'),new LocalStrategy({'usernameField':_0x0adf('0x15'),'passwordField':_0x0adf('0x16')},function(_0x2862fb,_0x232e77,_0x500a48){return ActiveDirectoryAuthenticate(db[_0x0adf('0x2e')],_0x2862fb,_0x232e77,_0x500a48);}));
\ No newline at end of file
index 1b890dc..3f71196 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2c27=['./authActiveDirectory.controller','post','login','exports','Router'];(function(_0x33e5d1,_0x55e417){var _0x418fe0=function(_0x4ce8b8){while(--_0x4ce8b8){_0x33e5d1['push'](_0x33e5d1['shift']());}};_0x418fe0(++_0x55e417);}(_0x2c27,0x117));var _0x72c2=function(_0x6af9c4,_0x3ac976){_0x6af9c4=_0x6af9c4-0x0;var _0x573dce=_0x2c27[_0x6af9c4];return _0x573dce;};'use strict';var express=require('express');var router=express[_0x72c2('0x0')]();var controller=require(_0x72c2('0x1'));router[_0x72c2('0x2')]('/',controller[_0x72c2('0x3')]);module[_0x72c2('0x4')]=router;
\ No newline at end of file
+var _0xcb0b=['login','post'];(function(_0x35c233,_0x48a932){var _0x451a7a=function(_0x47bb0a){while(--_0x47bb0a){_0x35c233['push'](_0x35c233['shift']());}};_0x451a7a(++_0x48a932);}(_0xcb0b,0x15b));var _0xbcb0=function(_0x903927,_0x49301e){_0x903927=_0x903927-0x0;var _0x517ee2=_0xcb0b[_0x903927];return _0x517ee2;};'use strict';var express=require('express');var router=express['Router']();var controller=require('./authActiveDirectory.controller');router[_0xbcb0('0x0')]('/',controller[_0xbcb0('0x1')]);module['exports']=router;
\ No newline at end of file
index 699628e..7948ead 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(_0x902e0b,_0x1aa5fa){var _0x9696a8=function(_0x3abe1d){while(--_0x3abe1d){_0x902e0b['push'](_0x902e0b['shift']());}};_0x9696a8(++_0x1aa5fa);}(_0x9957,0x93));var _0x7995=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0x9957[_0x5ddb1c];return _0x354adc;};'use strict';var _=require(_0x7995('0x0'));var passport=require(_0x7995('0x1'));var GoogleStrategy=require(_0x7995('0x2'))[_0x7995('0x3')];var moment=require('moment');var db=require(_0x7995('0x4'))['db'];var config=require(_0x7995('0x5'));var utils=require(_0x7995('0x6'));exports[_0x7995('0x7')]=passport['authenticate'](_0x7995('0x8'),{'failureRedirect':_0x7995('0x9'),'scope':[_0x7995('0xa'),_0x7995('0xb')],'session':![]});exports[_0x7995('0xc')]=passport[_0x7995('0xd')]('google',{'failureRedirect':_0x7995('0x9'),'session':![]});passport[_0x7995('0xe')](new GoogleStrategy({'clientID':config['google']?config[_0x7995('0x8')][_0x7995('0xf')]:'id','clientSecret':config[_0x7995('0x8')]?config[_0x7995('0x8')][_0x7995('0x10')]:_0x7995('0x11'),'callbackURL':config[_0x7995('0x8')]?config['google'][_0x7995('0x12')]:''},function(_0x41c652,_0x581f22,_0xb0c872,_0x2cb37a){var _0x19a27e,_0x385f00;return db[_0x7995('0x13')][_0x7995('0x14')]({'where':{'id':0x1},'attributes':[_0x7995('0x15'),'blockDuration'],'raw':!![]})['then'](function(_0x2b4e94){_0x19a27e=_0x2b4e94;return db[_0x7995('0x16')][_0x7995('0x17')]({'where':{'email':_[_0x7995('0x18')](_0xb0c872[_0x7995('0x19')],_0x7995('0x1a')),'role':{'$or':[_0x7995('0x1b'),_0x7995('0x1c'),'agent']}}});})[_0x7995('0x1d')](function(_0x565d97){_0x385f00=_0x565d97;if(_0x385f00){if(_0x385f00[_0x7995('0x1e')]){return _0x2cb37a(_0x7995('0x1f'));}else if(_0x19a27e[_0x7995('0x20')]>0x0){if(_0x385f00[_0x7995('0x21')]){if(moment(_0x385f00[_0x7995('0x22')])[_0x7995('0x23')](_0x19a27e['blockDuration'],'minutes')>moment()){return _0x2cb37a(_0x7995('0x1f'));}else{return utils['clearBlockUser'](_0x385f00,0x0,![],null)['then'](function(){return utils[_0x7995('0x24')](_0x385f00);})[_0x7995('0x1d')](function(){return _0x2cb37a(null,_0x385f00);});}}else{return utils['getLicense'](_0x385f00)[_0x7995('0x1d')](function(){return _0x2cb37a(null,_0x385f00);});}}else{return utils['getLicense'](_0x385f00)['then'](function(){return _0x2cb37a(null,_0x385f00);});}}return _0x2cb37a(_0x7995('0x1f'));})[_0x7995('0x25')](function(_0x350fd9){_0x2cb37a(_0x350fd9);});}));
\ No newline at end of file
+var _0x9957=['../../config/environment','../../config/utils','login','google','/login','profile','email','callback','authenticate','use','clientID','clientSecret','secret','callbackURL','Setting','findOne','allowedLoginAttempts','User','find','map','emails','value','admin','user','then','disabled','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','blockDuration','blocked','blockedAt','add','getLicense','catch','lodash','passport','passport-google-oauth20','Strategy','../../mysqldb'];(function(_0x144737,_0x3b059b){var _0x152c0e=function(_0x5be853){while(--_0x5be853){_0x144737['push'](_0x144737['shift']());}};_0x152c0e(++_0x3b059b);}(_0x9957,0x93));var _0x7995=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x9957[_0x5b644e];return _0x49c6bf;};'use strict';var _=require(_0x7995('0x0'));var passport=require(_0x7995('0x1'));var GoogleStrategy=require(_0x7995('0x2'))[_0x7995('0x3')];var moment=require('moment');var db=require(_0x7995('0x4'))['db'];var config=require(_0x7995('0x5'));var utils=require(_0x7995('0x6'));exports[_0x7995('0x7')]=passport['authenticate'](_0x7995('0x8'),{'failureRedirect':_0x7995('0x9'),'scope':[_0x7995('0xa'),_0x7995('0xb')],'session':![]});exports[_0x7995('0xc')]=passport[_0x7995('0xd')]('google',{'failureRedirect':_0x7995('0x9'),'session':![]});passport[_0x7995('0xe')](new GoogleStrategy({'clientID':config['google']?config[_0x7995('0x8')][_0x7995('0xf')]:'id','clientSecret':config[_0x7995('0x8')]?config[_0x7995('0x8')][_0x7995('0x10')]:_0x7995('0x11'),'callbackURL':config[_0x7995('0x8')]?config['google'][_0x7995('0x12')]:''},function(_0x41c652,_0x581f22,_0xb0c872,_0x2cb37a){var _0x19a27e,_0x385f00;return db[_0x7995('0x13')][_0x7995('0x14')]({'where':{'id':0x1},'attributes':[_0x7995('0x15'),'blockDuration'],'raw':!![]})['then'](function(_0x2b4e94){_0x19a27e=_0x2b4e94;return db[_0x7995('0x16')][_0x7995('0x17')]({'where':{'email':_[_0x7995('0x18')](_0xb0c872[_0x7995('0x19')],_0x7995('0x1a')),'role':{'$or':[_0x7995('0x1b'),_0x7995('0x1c'),'agent']}}});})[_0x7995('0x1d')](function(_0x565d97){_0x385f00=_0x565d97;if(_0x385f00){if(_0x385f00[_0x7995('0x1e')]){return _0x2cb37a(_0x7995('0x1f'));}else if(_0x19a27e[_0x7995('0x20')]>0x0){if(_0x385f00[_0x7995('0x21')]){if(moment(_0x385f00[_0x7995('0x22')])[_0x7995('0x23')](_0x19a27e['blockDuration'],'minutes')>moment()){return _0x2cb37a(_0x7995('0x1f'));}else{return utils['clearBlockUser'](_0x385f00,0x0,![],null)['then'](function(){return utils[_0x7995('0x24')](_0x385f00);})[_0x7995('0x1d')](function(){return _0x2cb37a(null,_0x385f00);});}}else{return utils['getLicense'](_0x385f00)[_0x7995('0x1d')](function(){return _0x2cb37a(null,_0x385f00);});}}else{return utils['getLicense'](_0x385f00)['then'](function(){return _0x2cb37a(null,_0x385f00);});}}return _0x2cb37a(_0x7995('0x1f'));})[_0x7995('0x25')](function(_0x350fd9){_0x2cb37a(_0x350fd9);});}));
\ No newline at end of file
index 4e5afd3..0484f39 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe78c=['setTokenCookie','exports','passport','../user/user.controller.js','get','login'];(function(_0x3635ce,_0x33a6f9){var _0x97ecd0=function(_0x123d98){while(--_0x123d98){_0x3635ce['push'](_0x3635ce['shift']());}};_0x97ecd0(++_0x33a6f9);}(_0xe78c,0xaa));var _0xce78=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0xe78c[_0x57b54c];return _0x59cc19;};'use strict';var express=require('express');var passport=require(_0xce78('0x0'));var router=express['Router']();var controller=require('./authGoogle.controller');var userController=require(_0xce78('0x1'));var authService=require('../../components/auth/service');router[_0xce78('0x2')]('/',controller[_0xce78('0x3')]);router['get']('/callback',controller['callback'],authService['isMiddleware'],userController[_0xce78('0x3')],authService[_0xce78('0x4')]);module[_0xce78('0x5')]=router;
\ No newline at end of file
+var _0x7acc=['./authGoogle.controller','../user/user.controller.js','../../components/auth/service','get','login','/callback','callback','isMiddleware','setTokenCookie','exports','express','passport','Router'];(function(_0x7c0674,_0x1e846b){var _0x4a5358=function(_0x4e9902){while(--_0x4e9902){_0x7c0674['push'](_0x7c0674['shift']());}};_0x4a5358(++_0x1e846b);}(_0x7acc,0x1b7));var _0xc7ac=function(_0x28b81a,_0x2722fe){_0x28b81a=_0x28b81a-0x0;var _0x473a8b=_0x7acc[_0x28b81a];return _0x473a8b;};'use strict';var express=require(_0xc7ac('0x0'));var passport=require(_0xc7ac('0x1'));var router=express[_0xc7ac('0x2')]();var controller=require(_0xc7ac('0x3'));var userController=require(_0xc7ac('0x4'));var authService=require(_0xc7ac('0x5'));router[_0xc7ac('0x6')]('/',controller[_0xc7ac('0x7')]);router[_0xc7ac('0x6')](_0xc7ac('0x8'),controller[_0xc7ac('0x9')],authService[_0xc7ac('0xa')],userController[_0xc7ac('0x7')],authService[_0xc7ac('0xb')]);module[_0xc7ac('0xc')]=router;
\ No newline at end of file
index bb5ede4..08b2dc0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdcfd=['name','password','salt','role','disabled','blocked','blockedAt','loginAttempts','user','then','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','minutes','clearBlockUser','add','getLicense','catch','MailAccount','find','email','MailServerOut','CloudProvider','getSmtpOptions','merge','format','Smtp','request','SendMail','error','SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!','message','stringify','status','send','login','signToken','json','online','forgot','body','Email\x20parameter\x20is\x20missing','generate','trim','User','This\x20email\x20is\x20not\x20registered.','now','save','xCally\x20Motion\x20Password\x20Reset','You\x20are\x20receiving\x20this\x20because\x20you\x20(or\x20someone\x20else)\x20have\x20requested\x20the\x20reset\x20of\x20the\x20password\x20for\x20your\x20account.\x0a\x0a','Please\x20click\x20on\x20the\x20following\x20link,\x20or\x20paste\x20this\x20into\x20your\x20browser\x20to\x20complete\x20the\x20process:\x0a\x0a','https://','headers','host','/reset/','Reset\x20Email\x20sent!','reset','params','Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.','securePassword','passwordHistoryLimit','validatePasswordPattern','enforcePasswordHistory','previousPasswords','validatePasswordHistory','resetPasswordToken','resetPasswordExpires','use','local-login','passport','Strategy','jayson/promise','randomstring','moment','../../mysqldb','../../components/auth/service','../../config/utils','Setting','findOne','allowedLoginAttempts','blockDuration'];(function(_0x3ff085,_0x27c92e){var _0x2b68c3=function(_0x37811e){while(--_0x37811e){_0x3ff085['push'](_0x3ff085['shift']());}};_0x2b68c3(++_0x27c92e);}(_0xdcfd,0x1ce));var _0xddcf=function(_0x34b87f,_0x28aef2){_0x34b87f=_0x34b87f-0x0;var _0x449805=_0xdcfd[_0x34b87f];return _0x449805;};'use strict';var util=require('util');var passport=require(_0xddcf('0x0'));var LocalStrategy=require('passport-local')[_0xddcf('0x1')];var jayson=require(_0xddcf('0x2'));var _=require('lodash');var rs=require(_0xddcf('0x3'));var moment=require(_0xddcf('0x4'));var db=require(_0xddcf('0x5'))['db'];var authService=require(_0xddcf('0x6'));var utils=require(_0xddcf('0x7'));var client=jayson['client']['http']({'port':0x232b});function localAuthenticate(_0x2b4324,_0x54b285,_0x5bdd1c,_0x54d408){var _0x5a3129,_0x33c460;return db[_0xddcf('0x8')][_0xddcf('0x9')]({'where':{'id':0x1},'attributes':[_0xddcf('0xa'),_0xddcf('0xb')],'raw':!![]})['then'](function(_0x2500b5){_0x5a3129=_0x2500b5;return _0x2b4324['findOne']({'attributes':['id',_0xddcf('0xc'),_0xddcf('0xd'),_0xddcf('0xe'),_0xddcf('0xf'),_0xddcf('0x10'),_0xddcf('0x11'),_0xddcf('0x12'),_0xddcf('0x13')],'where':{'name':_0x54b285,'role':{'$or':['admin',_0xddcf('0x14'),'agent']}}});})[_0xddcf('0x15')](function(_0x170eba){if(!_0x170eba||_0x170eba&&_0x170eba[_0xddcf('0xc')]!==_0x54b285){throw new Error(_0xddcf('0x16'));}else{_0x33c460=_0x170eba;return _0x33c460;}})[_0xddcf('0x15')](function(){_0x33c460['authenticate'](_0x5bdd1c,function(_0x1ef5fc,_0x4f5d01){var _0x31cf5e=_0x33c460['loginAttempts']+0x1;if(_0x1ef5fc){return _0x54d408(_0x1ef5fc);}else if(!_0x4f5d01){if(_0x33c460[_0xddcf('0x10')]){return _0x54d408(null,![],{'message':_0xddcf('0x16')});}else if(_0x5a3129['allowedLoginAttempts']>0x0){if(_0x33c460[_0xddcf('0x11')]){if(_0x5a3129[_0xddcf('0xb')]>0x0){if(moment(_0x33c460[_0xddcf('0x12')])['add'](_0x5a3129[_0xddcf('0xb')],_0xddcf('0x17'))>moment()){return _0x54d408(null,![],{'message':_0xddcf('0x16')});}else{return utils[_0xddcf('0x18')](_0x33c460,_0x31cf5e,![],null)[_0xddcf('0x15')](function(){return _0x54d408(null,![],{'message':_0xddcf('0x16')});});}}else{return _0x54d408(null,![],{'message':_0xddcf('0x16')});}}else{if(_0x31cf5e>=_0x5a3129[_0xddcf('0xa')]){return utils[_0xddcf('0x18')](_0x33c460,0x0,!![],moment())[_0xddcf('0x15')](function(){return _0x54d408(null,![],{'message':_0xddcf('0x16')});});}else{return utils[_0xddcf('0x18')](_0x33c460,_0x31cf5e,![],null)[_0xddcf('0x15')](function(){return _0x54d408(null,![],{'message':_0xddcf('0x16')});});}}}else{return _0x54d408(null,![],{'message':_0xddcf('0x16')});}}else{if(_0x33c460[_0xddcf('0x10')]){return _0x54d408(null,![],{'message':_0xddcf('0x16')});}else if(_0x5a3129[_0xddcf('0xa')]>0x0){if(_0x33c460[_0xddcf('0x11')]){if(_0x5a3129['blockDuration']>0x0){if(moment(_0x33c460[_0xddcf('0x12')])[_0xddcf('0x19')](_0x5a3129[_0xddcf('0xb')],_0xddcf('0x17'))>moment()){return _0x54d408(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else{return utils[_0xddcf('0x18')](_0x33c460,0x0,![],null)['then'](function(){return utils[_0xddcf('0x1a')](_0x33c460);})[_0xddcf('0x15')](function(){return _0x54d408(null,_0x33c460);});}}else{return _0x54d408(null,![],{'message':_0xddcf('0x16')});}}else{return utils[_0xddcf('0x18')](_0x33c460,0x0,![],null)['then'](function(){return utils[_0xddcf('0x1a')](_0x33c460);})['then'](function(){return _0x54d408(null,_0x33c460);})[_0xddcf('0x1b')](function(_0x386960){return _0x54d408(null,![],_0x386960);});}}else{if(_0x33c460[_0xddcf('0x11')]){return _0x54d408(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else{return utils[_0xddcf('0x1a')](_0x33c460)[_0xddcf('0x15')](function(){return _0x54d408(null,_0x33c460);});}}}});})[_0xddcf('0x1b')](function(_0x3a04e3){return _0x54d408(null,![],_0x3a04e3);});}function sendServiceMail(_0x2c2cfe){return db[_0xddcf('0x1c')][_0xddcf('0x1d')]({'where':{'service':!![]},'attributes':['id','name',_0xddcf('0x1e')],'include':[{'model':db[_0xddcf('0x1f')],'as':'Smtp','include':[{'model':db['CloudProvider'],'as':_0xddcf('0x20')}]}]})[_0xddcf('0x15')](function(_0x49e9e6){if(!_0x49e9e6){throw new Error('Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!');}var _0x3d68fb=_0x49e9e6[_0xddcf('0x21')]();var _0x311304={'account':_0x3d68fb,'message':_[_0xddcf('0x22')]({'from':util[_0xddcf('0x23')]('\x22%s\x22\x20<%s>',_0x49e9e6[_0xddcf('0xc')],_0x49e9e6['email']||_0x49e9e6[_0xddcf('0x24')]['user'])},_0x2c2cfe)};return client[_0xddcf('0x25')](_0xddcf('0x26'),_0x311304);})[_0xddcf('0x15')](function(_0xa9c7be){if(_0xa9c7be[_0xddcf('0x27')]){throw new Error(util[_0xddcf('0x23')](_0xddcf('0x28'),_0xa9c7be[_0xddcf('0x27')][_0xddcf('0x29')]||JSON[_0xddcf('0x2a')](_0xa9c7be[_0xddcf('0x27')])));}return!![];});}function handleError(_0x54d3e2,_0x35de1a,_0x19f52a){return _0x54d3e2[_0xddcf('0x2b')](_0x35de1a||0x1f4)[_0xddcf('0x2c')]({'message':_0x19f52a?_0x19f52a[_0xddcf('0x29')]||_0x19f52a:''});}exports[_0xddcf('0x2d')]=function(_0x33a487,_0x1eff80,_0x4d8fa4){passport['authenticate']('local-login',function(_0x5d3119,_0x22be19,_0x13f140){var _0x32a599=_0x5d3119||_0x13f140;if(_0x32a599){return handleError(_0x1eff80,0x191,_0x32a599);}if(!_0x22be19){return handleError(_0x1eff80,0x194,{'message':'Something\x20went\x20wrong,\x20please\x20try\x20again.'});}else{var _0x2d0501={'payload':{'id':_0x22be19['id'],'role':_0x22be19[_0xddcf('0xf')]},'options':{'expiresIn':0x15180}};return authService[_0xddcf('0x2e')](_0x2d0501)['then'](function(_0x4b1b92){_0x1eff80[_0xddcf('0x2f')]({'id':_0x22be19['id'],'token':_0x4b1b92,'statusCall':'','isAlreadyLogged':_0x22be19[_0xddcf('0x30')]});});}})(_0x33a487,_0x1eff80,_0x4d8fa4);};exports[_0xddcf('0x31')]=function(_0x1fc746,_0x40bfc7){if(!_0x1fc746[_0xddcf('0x32')][_0xddcf('0x1e')]){return handleError(_0x40bfc7,0x1f4,{'message':_0xddcf('0x33')});}var _0x1d89e6=rs[_0xddcf('0x34')]();_0x1fc746[_0xddcf('0x32')][_0xddcf('0x1e')]=_0x1fc746[_0xddcf('0x32')]['email'][_0xddcf('0x35')]()['toLowerCase']();var _0x1466c5;return db[_0xddcf('0x8')]['findOne']({'where':{'id':0x1},'attributes':['allowedLoginAttempts','blockDuration'],'raw':!![]})[_0xddcf('0x15')](function(_0x243b65){_0x1466c5=_0x243b65;return db[_0xddcf('0x36')][_0xddcf('0x1d')]({'where':{'email':_0x1fc746['body'][_0xddcf('0x1e')]}});})[_0xddcf('0x15')](function(_0x2dfc46){if(!_0x2dfc46){throw new Error(_0xddcf('0x37'));}if(_0x2dfc46['disabled']){throw new Error('The\x20user\x20is\x20disabled.\x20Please\x20contact\x20the\x20administrator.');}if(_0x2dfc46[_0xddcf('0x11')]){if(moment(_0x2dfc46['blockedAt'])[_0xddcf('0x19')](_0x1466c5[_0xddcf('0xb')],'minutes')>moment()){throw new Error('The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.');}else{_0x2dfc46[_0xddcf('0x11')]=![];_0x2dfc46[_0xddcf('0x12')]=null;}}_0x2dfc46['resetPasswordToken']=_0x1d89e6;_0x2dfc46['resetPasswordExpires']=Date[_0xddcf('0x38')]()+0x36ee80;return _0x2dfc46[_0xddcf('0x39')]();})['then'](function(){return sendServiceMail({'to':_0x1fc746['body'][_0xddcf('0x1e')],'subject':_0xddcf('0x3a'),'text':_0xddcf('0x3b')+_0xddcf('0x3c')+_0xddcf('0x3d')+_0x1fc746[_0xddcf('0x3e')][_0xddcf('0x3f')]+_0xddcf('0x40')+_0x1d89e6+'\x0a\x0a'+'If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a'});})[_0xddcf('0x15')](function(){_0x40bfc7[_0xddcf('0x2b')](0xc8)['send']({'message':_0xddcf('0x41')});})[_0xddcf('0x1b')](function(_0x372616){return handleError(_0x40bfc7,0x1f4,_0x372616);});};exports[_0xddcf('0x42')]=function(_0x363ac8,_0x5afb49){return db[_0xddcf('0x36')][_0xddcf('0x1d')]({'where':{'resetPasswordToken':_0x363ac8[_0xddcf('0x43')]['token'],'resetPasswordExpires':{'$gt':Date[_0xddcf('0x38')]()}}})['then'](function(_0x1c9499){if(!_0x1c9499){throw new Error(_0xddcf('0x44'));}return db[_0xddcf('0x8')][_0xddcf('0x9')]({'attributes':['id',_0xddcf('0x45'),'enforcePasswordHistory',_0xddcf('0x46')]})[_0xddcf('0x15')](function(_0x42af7d){if(_0x42af7d[_0xddcf('0x45')])authService[_0xddcf('0x47')](_0x363ac8['body'][_0xddcf('0xd')]);if(!_0x42af7d[_0xddcf('0x48')]||!_0x1c9499[_0xddcf('0x49')])return _0x1c9499;authService[_0xddcf('0x4a')](_0x363ac8[_0xddcf('0x32')][_0xddcf('0xd')],_0x1c9499['previousPasswords'],_0x42af7d[_0xddcf('0x46')]);return _0x1c9499;})[_0xddcf('0x15')](function(){_0x1c9499[_0xddcf('0xd')]=_0x363ac8[_0xddcf('0x32')][_0xddcf('0xd')];_0x1c9499[_0xddcf('0x4b')]=null;_0x1c9499[_0xddcf('0x4c')]=null;return _0x1c9499[_0xddcf('0x39')]();});})[_0xddcf('0x15')](function(){_0x5afb49['status'](0xc8)[_0xddcf('0x2c')]({'message':'Password\x20reset!'});})[_0xddcf('0x1b')](function(_0x4e60e8){return handleError(_0x5afb49,0x1f4,_0x4e60e8);});};passport[_0xddcf('0x4d')](_0xddcf('0x4e'),new LocalStrategy({'usernameField':_0xddcf('0xc'),'passwordField':_0xddcf('0xd')},function(_0x4f7649,_0x38e808,_0xc135c7){return localAuthenticate(db[_0xddcf('0x36')],_0x4f7649,_0x38e808,_0xc135c7);}));
\ No newline at end of file
+var _0x325b=['headers','host','If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a','send','reset','params','token','now','enforcePasswordHistory','passwordHistoryLimit','securePassword','validatePasswordPattern','previousPasswords','validatePasswordHistory','resetPasswordExpires','use','util','passport','passport-local','jayson/promise','lodash','randomstring','moment','../../mysqldb','../../components/auth/service','../../config/utils','client','http','findOne','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','allowedLoginAttempts','add','clearBlockUser','getLicense','catch','find','MailServerOut','CloudProvider','Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!','getSmtpOptions','format','\x22%s\x22\x20<%s>','email','Smtp','request','SendMail','error','SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!','message','stringify','status','login','local-login','Something\x20went\x20wrong,\x20please\x20try\x20again.','signToken','json','forgot','body','generate','trim','toLowerCase','Setting','User','This\x20email\x20is\x20not\x20registered.','The\x20user\x20is\x20disabled.\x20Please\x20contact\x20the\x20administrator.','minutes','The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.','resetPasswordToken','save','You\x20are\x20receiving\x20this\x20because\x20you\x20(or\x20someone\x20else)\x20have\x20requested\x20the\x20reset\x20of\x20the\x20password\x20for\x20your\x20account.\x0a\x0a','https://'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0x325b,0x10f));var _0xb325=function(_0x3f3664,_0x559432){_0x3f3664=_0x3f3664-0x0;var _0x1def48=_0x325b[_0x3f3664];return _0x1def48;};'use strict';var util=require(_0xb325('0x0'));var passport=require(_0xb325('0x1'));var LocalStrategy=require(_0xb325('0x2'))['Strategy'];var jayson=require(_0xb325('0x3'));var _=require(_0xb325('0x4'));var rs=require(_0xb325('0x5'));var moment=require(_0xb325('0x6'));var db=require(_0xb325('0x7'))['db'];var authService=require(_0xb325('0x8'));var utils=require(_0xb325('0x9'));var client=jayson[_0xb325('0xa')][_0xb325('0xb')]({'port':0x232b});function localAuthenticate(_0x4a02fe,_0x5b0679,_0x1ed1dc,_0x33426b){var _0x556f27,_0x51581d;return db['Setting'][_0xb325('0xc')]({'where':{'id':0x1},'attributes':['allowedLoginAttempts',_0xb325('0xd')],'raw':!![]})[_0xb325('0xe')](function(_0x4f252f){_0x556f27=_0x4f252f;return _0x4a02fe[_0xb325('0xc')]({'attributes':['id',_0xb325('0xf'),_0xb325('0x10'),_0xb325('0x11'),_0xb325('0x12'),_0xb325('0x13'),_0xb325('0x14'),_0xb325('0x15'),_0xb325('0x16')],'where':{'name':_0x5b0679,'role':{'$or':[_0xb325('0x17'),_0xb325('0x18'),_0xb325('0x19')]}}});})[_0xb325('0xe')](function(_0x1fea50){if(!_0x1fea50||_0x1fea50&&_0x1fea50[_0xb325('0xf')]!==_0x5b0679){throw new Error(_0xb325('0x1a'));}else{_0x51581d=_0x1fea50;return _0x51581d;}})[_0xb325('0xe')](function(){_0x51581d[_0xb325('0x1b')](_0x1ed1dc,function(_0x45a2f2,_0x1d0209){var _0x2484b0=_0x51581d[_0xb325('0x16')]+0x1;if(_0x45a2f2){return _0x33426b(_0x45a2f2);}else if(!_0x1d0209){if(_0x51581d[_0xb325('0x13')]){return _0x33426b(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else if(_0x556f27[_0xb325('0x1c')]>0x0){if(_0x51581d[_0xb325('0x14')]){if(_0x556f27[_0xb325('0xd')]>0x0){if(moment(_0x51581d['blockedAt'])[_0xb325('0x1d')](_0x556f27[_0xb325('0xd')],'minutes')>moment()){return _0x33426b(null,![],{'message':_0xb325('0x1a')});}else{return utils['clearBlockUser'](_0x51581d,_0x2484b0,![],null)[_0xb325('0xe')](function(){return _0x33426b(null,![],{'message':_0xb325('0x1a')});});}}else{return _0x33426b(null,![],{'message':_0xb325('0x1a')});}}else{if(_0x2484b0>=_0x556f27[_0xb325('0x1c')]){return utils[_0xb325('0x1e')](_0x51581d,0x0,!![],moment())['then'](function(){return _0x33426b(null,![],{'message':_0xb325('0x1a')});});}else{return utils[_0xb325('0x1e')](_0x51581d,_0x2484b0,![],null)[_0xb325('0xe')](function(){return _0x33426b(null,![],{'message':_0xb325('0x1a')});});}}}else{return _0x33426b(null,![],{'message':_0xb325('0x1a')});}}else{if(_0x51581d['disabled']){return _0x33426b(null,![],{'message':_0xb325('0x1a')});}else if(_0x556f27[_0xb325('0x1c')]>0x0){if(_0x51581d[_0xb325('0x14')]){if(_0x556f27[_0xb325('0xd')]>0x0){if(moment(_0x51581d['blockedAt'])[_0xb325('0x1d')](_0x556f27[_0xb325('0xd')],'minutes')>moment()){return _0x33426b(null,![],{'message':_0xb325('0x1a')});}else{return utils[_0xb325('0x1e')](_0x51581d,0x0,![],null)[_0xb325('0xe')](function(){return utils[_0xb325('0x1f')](_0x51581d);})['then'](function(){return _0x33426b(null,_0x51581d);});}}else{return _0x33426b(null,![],{'message':_0xb325('0x1a')});}}else{return utils[_0xb325('0x1e')](_0x51581d,0x0,![],null)[_0xb325('0xe')](function(){return utils[_0xb325('0x1f')](_0x51581d);})[_0xb325('0xe')](function(){return _0x33426b(null,_0x51581d);})[_0xb325('0x20')](function(_0x211037){return _0x33426b(null,![],_0x211037);});}}else{if(_0x51581d[_0xb325('0x14')]){return _0x33426b(null,![],{'message':_0xb325('0x1a')});}else{return utils['getLicense'](_0x51581d)['then'](function(){return _0x33426b(null,_0x51581d);});}}}});})['catch'](function(_0x18dfdc){return _0x33426b(null,![],_0x18dfdc);});}function sendServiceMail(_0xb86789){return db['MailAccount'][_0xb325('0x21')]({'where':{'service':!![]},'attributes':['id',_0xb325('0xf'),'email'],'include':[{'model':db[_0xb325('0x22')],'as':'Smtp','include':[{'model':db[_0xb325('0x23')],'as':_0xb325('0x23')}]}]})[_0xb325('0xe')](function(_0x5c7b27){if(!_0x5c7b27){throw new Error(_0xb325('0x24'));}var _0x50ce03=_0x5c7b27[_0xb325('0x25')]();var _0x37bca7={'account':_0x50ce03,'message':_['merge']({'from':util[_0xb325('0x26')](_0xb325('0x27'),_0x5c7b27[_0xb325('0xf')],_0x5c7b27[_0xb325('0x28')]||_0x5c7b27[_0xb325('0x29')][_0xb325('0x18')])},_0xb86789)};return client[_0xb325('0x2a')](_0xb325('0x2b'),_0x37bca7);})['then'](function(_0x156909){if(_0x156909[_0xb325('0x2c')]){throw new Error(util[_0xb325('0x26')](_0xb325('0x2d'),_0x156909[_0xb325('0x2c')][_0xb325('0x2e')]||JSON[_0xb325('0x2f')](_0x156909['error'])));}return!![];});}function handleError(_0x3f1c37,_0x45fe22,_0x3a6028){return _0x3f1c37[_0xb325('0x30')](_0x45fe22||0x1f4)['send']({'message':_0x3a6028?_0x3a6028[_0xb325('0x2e')]||_0x3a6028:''});}exports[_0xb325('0x31')]=function(_0x5c264e,_0x320901,_0x956b8b){passport[_0xb325('0x1b')](_0xb325('0x32'),function(_0x40e05b,_0x262497,_0x24f3d4){var _0x39d780=_0x40e05b||_0x24f3d4;if(_0x39d780){return handleError(_0x320901,0x191,_0x39d780);}if(!_0x262497){return handleError(_0x320901,0x194,{'message':_0xb325('0x33')});}else{var _0xc2b7a9={'payload':{'id':_0x262497['id'],'role':_0x262497[_0xb325('0x12')]},'options':{'expiresIn':0x15180}};return authService[_0xb325('0x34')](_0xc2b7a9)['then'](function(_0x348216){_0x320901[_0xb325('0x35')]({'id':_0x262497['id'],'token':_0x348216,'statusCall':'','isAlreadyLogged':_0x262497['online']});});}})(_0x5c264e,_0x320901,_0x956b8b);};exports[_0xb325('0x36')]=function(_0x5cf93c,_0x1279d2){if(!_0x5cf93c[_0xb325('0x37')][_0xb325('0x28')]){return handleError(_0x1279d2,0x1f4,{'message':'Email\x20parameter\x20is\x20missing'});}var _0x58ab87=rs[_0xb325('0x38')]();_0x5cf93c[_0xb325('0x37')][_0xb325('0x28')]=_0x5cf93c[_0xb325('0x37')][_0xb325('0x28')][_0xb325('0x39')]()[_0xb325('0x3a')]();var _0x307c67;return db[_0xb325('0x3b')][_0xb325('0xc')]({'where':{'id':0x1},'attributes':[_0xb325('0x1c'),_0xb325('0xd')],'raw':!![]})[_0xb325('0xe')](function(_0x1036a5){_0x307c67=_0x1036a5;return db[_0xb325('0x3c')]['find']({'where':{'email':_0x5cf93c['body'][_0xb325('0x28')]}});})[_0xb325('0xe')](function(_0x557a05){if(!_0x557a05){throw new Error(_0xb325('0x3d'));}if(_0x557a05[_0xb325('0x13')]){throw new Error(_0xb325('0x3e'));}if(_0x557a05[_0xb325('0x14')]){if(moment(_0x557a05[_0xb325('0x15')])['add'](_0x307c67[_0xb325('0xd')],_0xb325('0x3f'))>moment()){throw new Error(_0xb325('0x40'));}else{_0x557a05[_0xb325('0x14')]=![];_0x557a05[_0xb325('0x15')]=null;}}_0x557a05[_0xb325('0x41')]=_0x58ab87;_0x557a05['resetPasswordExpires']=Date['now']()+0x36ee80;return _0x557a05[_0xb325('0x42')]();})[_0xb325('0xe')](function(){return sendServiceMail({'to':_0x5cf93c[_0xb325('0x37')][_0xb325('0x28')],'subject':'xCally\x20Motion\x20Password\x20Reset','text':_0xb325('0x43')+'Please\x20click\x20on\x20the\x20following\x20link,\x20or\x20paste\x20this\x20into\x20your\x20browser\x20to\x20complete\x20the\x20process:\x0a\x0a'+_0xb325('0x44')+_0x5cf93c[_0xb325('0x45')][_0xb325('0x46')]+'/reset/'+_0x58ab87+'\x0a\x0a'+_0xb325('0x47')});})[_0xb325('0xe')](function(){_0x1279d2['status'](0xc8)[_0xb325('0x48')]({'message':'Reset\x20Email\x20sent!'});})[_0xb325('0x20')](function(_0x258d6e){return handleError(_0x1279d2,0x1f4,_0x258d6e);});};exports[_0xb325('0x49')]=function(_0xe6ed79,_0x19ecb9){return db[_0xb325('0x3c')][_0xb325('0x21')]({'where':{'resetPasswordToken':_0xe6ed79[_0xb325('0x4a')][_0xb325('0x4b')],'resetPasswordExpires':{'$gt':Date[_0xb325('0x4c')]()}}})[_0xb325('0xe')](function(_0x5bdd7b){if(!_0x5bdd7b){throw new Error('Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.');}return db[_0xb325('0x3b')][_0xb325('0xc')]({'attributes':['id','securePassword',_0xb325('0x4d'),_0xb325('0x4e')]})[_0xb325('0xe')](function(_0x3523f4){if(_0x3523f4[_0xb325('0x4f')])authService[_0xb325('0x50')](_0xe6ed79[_0xb325('0x37')][_0xb325('0x10')]);if(!_0x3523f4[_0xb325('0x4d')]||!_0x5bdd7b[_0xb325('0x51')])return _0x5bdd7b;authService[_0xb325('0x52')](_0xe6ed79['body'][_0xb325('0x10')],_0x5bdd7b[_0xb325('0x51')],_0x3523f4['passwordHistoryLimit']);return _0x5bdd7b;})[_0xb325('0xe')](function(){_0x5bdd7b['password']=_0xe6ed79[_0xb325('0x37')][_0xb325('0x10')];_0x5bdd7b['resetPasswordToken']=null;_0x5bdd7b[_0xb325('0x53')]=null;return _0x5bdd7b[_0xb325('0x42')]();});})[_0xb325('0xe')](function(){_0x19ecb9[_0xb325('0x30')](0xc8)[_0xb325('0x48')]({'message':'Password\x20reset!'});})['catch'](function(_0x270d94){return handleError(_0x19ecb9,0x1f4,_0x270d94);});};passport[_0xb325('0x54')](_0xb325('0x32'),new LocalStrategy({'usernameField':_0xb325('0xf'),'passwordField':_0xb325('0x10')},function(_0x4a4d69,_0x2b6091,_0x924cd1){return localAuthenticate(db[_0xb325('0x3c')],_0x4a4d69,_0x2b6091,_0x924cd1);}));
\ No newline at end of file
index d75c258..bb0f67f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7688=['post','login','/forgot','/reset/:token','reset','Router','./authLocal.controller'];(function(_0xf6bb70,_0x3b21a1){var _0x46ed1d=function(_0x4a1ba3){while(--_0x4a1ba3){_0xf6bb70['push'](_0xf6bb70['shift']());}};_0x46ed1d(++_0x3b21a1);}(_0x7688,0x155));var _0x8768=function(_0x41fcd7,_0xca7c47){_0x41fcd7=_0x41fcd7-0x0;var _0x326630=_0x7688[_0x41fcd7];return _0x326630;};'use strict';var express=require('express');var router=express[_0x8768('0x0')]();var controller=require(_0x8768('0x1'));router[_0x8768('0x2')]('/',controller[_0x8768('0x3')]);router['post'](_0x8768('0x4'),controller['forgot']);router[_0x8768('0x2')](_0x8768('0x5'),controller[_0x8768('0x6')]);module['exports']=router;
\ No newline at end of file
+var _0x8712=['login','forgot','/reset/:token','exports','./authLocal.controller','post'];(function(_0x1cb9b1,_0x263968){var _0x3f23a2=function(_0x1c0235){while(--_0x1c0235){_0x1cb9b1['push'](_0x1cb9b1['shift']());}};_0x3f23a2(++_0x263968);}(_0x8712,0x112));var _0x2871=function(_0x3c0c30,_0x2e34be){_0x3c0c30=_0x3c0c30-0x0;var _0x26b4a8=_0x8712[_0x3c0c30];return _0x26b4a8;};'use strict';var express=require('express');var router=express['Router']();var controller=require(_0x2871('0x0'));router[_0x2871('0x1')]('/',controller[_0x2871('0x2')]);router[_0x2871('0x1')]('/forgot',controller[_0x2871('0x3')]);router['post'](_0x2871('0x4'),controller['reset']);module[_0x2871('0x5')]=router;
\ No newline at end of file
index 737cdaa..6c6e31a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x169b=['INTEGER','sequelize','exports','STRING'];(function(_0x593752,_0xfc3827){var _0x4612be=function(_0x2d64c6){while(--_0x2d64c6){_0x593752['push'](_0x593752['shift']());}};_0x4612be(++_0xfc3827);}(_0x169b,0x159));var _0xb169=function(_0x2a7b20,_0x1faf56){_0x2a7b20=_0x2a7b20-0x0;var _0x591f38=_0x169b[_0x2a7b20];return _0x591f38;};'use strict';var Sequelize=require(_0xb169('0x0'));module[_0xb169('0x1')]={'name':{'type':Sequelize[_0xb169('0x2')],'allowNull':![]},'channel':{'type':Sequelize[_0xb169('0x2')]},'description':{'type':Sequelize[_0xb169('0x2')]},'status':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'timeout':{'type':Sequelize[_0xb169('0x3')],'defaultValue':0xa}};
\ No newline at end of file
+var _0x74c6=['sequelize','STRING','BOOLEAN'];(function(_0x109286,_0x3ee526){var _0x5a91a2=function(_0x3f636d){while(--_0x3f636d){_0x109286['push'](_0x109286['shift']());}};_0x5a91a2(++_0x3ee526);}(_0x74c6,0xf3));var _0x674c=function(_0x2d4267,_0x4943ee){_0x2d4267=_0x2d4267-0x0;var _0x423cea=_0x74c6[_0x2d4267];return _0x423cea;};'use strict';var Sequelize=require(_0x674c('0x0'));module['exports']={'name':{'type':Sequelize[_0x674c('0x1')],'allowNull':![]},'channel':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x674c('0x1')]},'status':{'type':Sequelize[_0x674c('0x2')],'defaultValue':![]},'timeout':{'type':Sequelize['INTEGER'],'defaultValue':0xa}};
\ No newline at end of file
index c67f3c9..1332862 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x96e4=['ids','omit','findOne','options','getConditions','addActions','Action','getActions','eml-format','rimraf','zip-dir','request-promise','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/environment','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','sendStatus','stack','map','Automation','rawAttributes','type','key','name','query','keys','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','pick','filter','where','merge','VIRTUAL','include','rows','catch','show','includeAll','find','create','body','params','addConditions','Condition'];(function(_0x507018,_0x3f8257){var _0x34d677=function(_0x17e529){while(--_0x17e529){_0x507018['push'](_0x507018['shift']());}};_0x34d677(++_0x3f8257);}(_0x96e4,0x144));var _0x496e=function(_0x43776a,_0x4eb74c){_0x43776a=_0x43776a-0x0;var _0x18eb8f=_0x96e4[_0x43776a];return _0x18eb8f;};'use strict';var emlformat=require(_0x496e('0x0'));var rimraf=require(_0x496e('0x1'));var zipdir=require(_0x496e('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x496e('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x496e('0x4'));var path=require(_0x496e('0x5'));var sox=require(_0x496e('0x6'));var csv=require(_0x496e('0x7'));var ejs=require(_0x496e('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x496e('0x9'));var squel=require(_0x496e('0xa'));var crypto=require(_0x496e('0xb'));var jsforce=require(_0x496e('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x496e('0x7'));var querystring=require(_0x496e('0xd'));var Papa=require(_0x496e('0xe'));var Redis=require('ioredis');var authService=require(_0x496e('0xf'));var qs=require(_0x496e('0x10'));var as=require(_0x496e('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x496e('0x12'))('api');var utils=require('../../config/utils');var config=require(_0x496e('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x496e('0x14'))['db'];function respondWithStatusCode(_0x42f815,_0x56d36d){_0x56d36d=_0x56d36d||0xcc;return function(_0x45349c){if(_0x45349c){return _0x42f815['sendStatus'](_0x56d36d);}return _0x42f815[_0x496e('0x15')](_0x56d36d)[_0x496e('0x16')]();};}function respondWithResult(_0x45ab4f,_0x152197){_0x152197=_0x152197||0xc8;return function(_0x32851e){if(_0x32851e){return _0x45ab4f[_0x496e('0x15')](_0x152197)[_0x496e('0x17')](_0x32851e);}};}function respondWithFilteredResult(_0x474689,_0x495599){return function(_0x2f5bba){if(_0x2f5bba){var _0x56c218=typeof _0x495599[_0x496e('0x18')]===_0x496e('0x19')&&typeof _0x495599[_0x496e('0x1a')]===_0x496e('0x19');var _0x37d0ab=_0x2f5bba[_0x496e('0x1b')];var _0xd155a=_0x56c218?0x0:_0x495599['offset'];var _0x452b7f=_0x56c218?_0x2f5bba['count']:_0x495599[_0x496e('0x18')]+_0x495599['limit'];var _0x33202d;if(_0x452b7f>=_0x37d0ab){_0x452b7f=_0x37d0ab;_0x33202d=0xc8;}else{_0x33202d=0xce;}_0x474689[_0x496e('0x15')](_0x33202d);return _0x474689[_0x496e('0x1c')](_0x496e('0x1d'),_0xd155a+'-'+_0x452b7f+'/'+_0x37d0ab)[_0x496e('0x17')](_0x2f5bba);}return null;};}function patchUpdates(_0x195c07){return function(_0x11b8d6){try{jsonpatch[_0x496e('0x1e')](_0x11b8d6,_0x195c07,!![]);}catch(_0x40eb1d){return BPromise[_0x496e('0x1f')](_0x40eb1d);}return _0x11b8d6['save']();};}function saveUpdates(_0x57af2d,_0x16753e){return function(_0x12eb62){if(_0x12eb62){return _0x12eb62[_0x496e('0x20')](_0x57af2d)[_0x496e('0x21')](function(_0x58ab8b){return _0x58ab8b;});}return null;};}function removeEntity(_0x25b058,_0x4dad6b){return function(_0xa8dd78){if(_0xa8dd78){return _0xa8dd78[_0x496e('0x22')]()[_0x496e('0x21')](function(){_0x25b058[_0x496e('0x15')](0xcc)[_0x496e('0x16')]();});}};}function handleEntityNotFound(_0x23be52,_0x4f689a){return function(_0x3edb3d){if(!_0x3edb3d){_0x23be52[_0x496e('0x23')](0x194);}return _0x3edb3d;};}function handleError(_0x4245e9,_0x17ed92){_0x17ed92=_0x17ed92||0x1f4;return function(_0x31a5f4){logger['error'](_0x31a5f4[_0x496e('0x24')]);if(_0x31a5f4['name']){delete _0x31a5f4['name'];}_0x4245e9['status'](_0x17ed92)['send'](_0x31a5f4);};}exports['index']=function(_0x9098ec,_0x35145e){var _0x5d2ca7={},_0x19f286={},_0x3fe068={'count':0x0,'rows':[]};var _0x2db3da=_[_0x496e('0x25')](db[_0x496e('0x26')][_0x496e('0x27')],function(_0x398bb2){return{'name':_0x398bb2['fieldName'],'type':_0x398bb2[_0x496e('0x28')][_0x496e('0x29')]};});_0x19f286['model']=_['map'](_0x2db3da,_0x496e('0x2a'));_0x19f286[_0x496e('0x2b')]=_[_0x496e('0x2c')](_0x9098ec[_0x496e('0x2b')]);_0x19f286['filters']=_[_0x496e('0x2d')](_0x19f286[_0x496e('0x2e')],_0x19f286[_0x496e('0x2b')]);_0x5d2ca7[_0x496e('0x2f')]=_[_0x496e('0x2d')](_0x19f286[_0x496e('0x2e')],qs[_0x496e('0x30')](_0x9098ec[_0x496e('0x2b')][_0x496e('0x30')]));_0x5d2ca7['attributes']=_0x5d2ca7[_0x496e('0x2f')][_0x496e('0x31')]?_0x5d2ca7[_0x496e('0x2f')]:_0x19f286[_0x496e('0x2e')];if(!_0x9098ec[_0x496e('0x2b')][_0x496e('0x32')](_0x496e('0x33'))){_0x5d2ca7[_0x496e('0x1a')]=qs['limit'](_0x9098ec[_0x496e('0x2b')][_0x496e('0x1a')]);_0x5d2ca7[_0x496e('0x18')]=qs[_0x496e('0x18')](_0x9098ec['query'][_0x496e('0x18')]);}_0x5d2ca7[_0x496e('0x34')]=qs[_0x496e('0x35')](_0x9098ec[_0x496e('0x2b')][_0x496e('0x35')]);_0x5d2ca7['where']=qs[_0x496e('0x36')](_[_0x496e('0x37')](_0x9098ec['query'],_0x19f286[_0x496e('0x36')]),_0x2db3da);if(_0x9098ec[_0x496e('0x2b')][_0x496e('0x38')]){_0x5d2ca7[_0x496e('0x39')]=_[_0x496e('0x3a')](_0x5d2ca7[_0x496e('0x39')],{'$or':_['map'](_0x2db3da,function(_0xb48bc9){if(_0xb48bc9[_0x496e('0x28')]!==_0x496e('0x3b')){var _0x51f5b4={};_0x51f5b4[_0xb48bc9[_0x496e('0x2a')]]={'$like':'%'+_0x9098ec['query'][_0x496e('0x38')]+'%'};return _0x51f5b4;}})});}_0x5d2ca7=_[_0x496e('0x3a')]({},_0x5d2ca7,_0x9098ec['options']);var _0xbab247={'where':_0x5d2ca7['where']};return db[_0x496e('0x26')]['count'](_0xbab247)[_0x496e('0x21')](function(_0x3e21e7){_0x3fe068[_0x496e('0x1b')]=_0x3e21e7;if(_0x9098ec[_0x496e('0x2b')]['includeAll']){_0x5d2ca7[_0x496e('0x3c')]=[{'all':!![]}];}return db[_0x496e('0x26')]['findAll'](_0x5d2ca7);})[_0x496e('0x21')](function(_0x4c97b8){_0x3fe068[_0x496e('0x3d')]=_0x4c97b8;return _0x3fe068;})[_0x496e('0x21')](respondWithFilteredResult(_0x35145e,_0x5d2ca7))[_0x496e('0x3e')](handleError(_0x35145e,null));};exports[_0x496e('0x3f')]=function(_0x495460,_0x584c70){var _0xdf20b3={'raw':![],'where':{'id':_0x495460['params']['id']}},_0x1c5fb8={};_0x1c5fb8['model']=_[_0x496e('0x2c')](db['Automation']['rawAttributes']);_0x1c5fb8[_0x496e('0x2b')]=_['keys'](_0x495460[_0x496e('0x2b')]);_0x1c5fb8[_0x496e('0x36')]=_[_0x496e('0x2d')](_0x1c5fb8['model'],_0x1c5fb8[_0x496e('0x2b')]);_0xdf20b3['attributes']=_['intersection'](_0x1c5fb8['model'],qs[_0x496e('0x30')](_0x495460[_0x496e('0x2b')][_0x496e('0x30')]));_0xdf20b3[_0x496e('0x2f')]=_0xdf20b3[_0x496e('0x2f')][_0x496e('0x31')]?_0xdf20b3[_0x496e('0x2f')]:_0x1c5fb8[_0x496e('0x2e')];if(_0x495460[_0x496e('0x2b')][_0x496e('0x40')]){_0xdf20b3[_0x496e('0x3c')]=[{'all':!![]}];}_0xdf20b3=_[_0x496e('0x3a')]({},_0xdf20b3,_0x495460['options']);return db[_0x496e('0x26')][_0x496e('0x41')](_0xdf20b3)[_0x496e('0x21')](handleEntityNotFound(_0x584c70,null))[_0x496e('0x21')](respondWithResult(_0x584c70,null))[_0x496e('0x3e')](handleError(_0x584c70,null));};exports[_0x496e('0x42')]=function(_0x450988,_0x4fbd6a){return db[_0x496e('0x26')]['create'](_0x450988['body'],{})[_0x496e('0x21')](respondWithResult(_0x4fbd6a,0xc9))[_0x496e('0x3e')](handleError(_0x4fbd6a,null));};exports['update']=function(_0x351b1c,_0x3bef51){if(_0x351b1c['body']['id']){delete _0x351b1c[_0x496e('0x43')]['id'];}return db[_0x496e('0x26')][_0x496e('0x41')]({'where':{'id':_0x351b1c[_0x496e('0x44')]['id']}})[_0x496e('0x21')](handleEntityNotFound(_0x3bef51,null))[_0x496e('0x21')](saveUpdates(_0x351b1c[_0x496e('0x43')],null))[_0x496e('0x21')](respondWithResult(_0x3bef51,null))['catch'](handleError(_0x3bef51,null));};exports[_0x496e('0x22')]=function(_0x305006,_0x4a0f60){return db[_0x496e('0x26')][_0x496e('0x41')]({'where':{'id':_0x305006[_0x496e('0x44')]['id']}})[_0x496e('0x21')](handleEntityNotFound(_0x4a0f60,null))[_0x496e('0x21')](removeEntity(_0x4a0f60,null))['catch'](handleError(_0x4a0f60,null));};exports[_0x496e('0x45')]=function(_0x163285,_0x435984,_0x56809d){return db[_0x496e('0x46')][_0x496e('0x41')]({'where':{'id':_0x163285[_0x496e('0x44')]['id']}})[_0x496e('0x21')](handleEntityNotFound(_0x435984,null))['then'](function(_0x20aa6f){if(_0x20aa6f){return _0x20aa6f[_0x496e('0x45')](_0x163285['body'][_0x496e('0x47')],_[_0x496e('0x48')](_0x163285[_0x496e('0x43')],['ids','id'])||{});}})[_0x496e('0x21')](respondWithResult(_0x435984,null))[_0x496e('0x3e')](handleError(_0x435984,null));};exports['getConditions']=function(_0x628b82,_0x33a623,_0x2d1c23){var _0x1d4e19={};var _0x19e5db={};var _0x24fd29;var _0x13c646;return db[_0x496e('0x26')][_0x496e('0x49')]({'where':{'id':_0x628b82[_0x496e('0x44')]['id']}})[_0x496e('0x21')](handleEntityNotFound(_0x33a623,null))[_0x496e('0x21')](function(_0x5939b5){if(_0x5939b5){_0x24fd29=_0x5939b5;_0x19e5db[_0x496e('0x2e')]=_[_0x496e('0x2c')](db[_0x496e('0x46')][_0x496e('0x27')]);_0x19e5db[_0x496e('0x2b')]=_['keys'](_0x628b82['query']);_0x19e5db[_0x496e('0x36')]=_[_0x496e('0x2d')](_0x19e5db['model'],_0x19e5db['query']);_0x1d4e19[_0x496e('0x2f')]=_[_0x496e('0x2d')](_0x19e5db[_0x496e('0x2e')],qs[_0x496e('0x30')](_0x628b82[_0x496e('0x2b')][_0x496e('0x30')]));_0x1d4e19[_0x496e('0x2f')]=_0x1d4e19[_0x496e('0x2f')]['length']?_0x1d4e19['attributes']:_0x19e5db['model'];_0x1d4e19[_0x496e('0x34')]=qs[_0x496e('0x35')](_0x628b82[_0x496e('0x2b')]['sort']);_0x1d4e19[_0x496e('0x39')]=qs[_0x496e('0x36')](_[_0x496e('0x37')](_0x628b82[_0x496e('0x2b')],_0x19e5db[_0x496e('0x36')]));if(_0x628b82[_0x496e('0x2b')][_0x496e('0x38')]){_0x1d4e19[_0x496e('0x39')]=_[_0x496e('0x3a')](_0x1d4e19[_0x496e('0x39')],{'$or':_[_0x496e('0x25')](_0x1d4e19[_0x496e('0x2f')],function(_0x404e17){var _0x10c7b3={};_0x10c7b3[_0x404e17]={'$like':'%'+_0x628b82[_0x496e('0x2b')]['filter']+'%'};return _0x10c7b3;})});}_0x1d4e19=_['merge']({},_0x1d4e19,_0x628b82[_0x496e('0x4a')]);return _0x24fd29[_0x496e('0x4b')](_0x1d4e19);}})[_0x496e('0x21')](function(_0x4b62c3){if(_0x4b62c3){_0x13c646=_0x4b62c3[_0x496e('0x31')];if(!_0x628b82[_0x496e('0x2b')][_0x496e('0x32')]('nolimit')){_0x1d4e19[_0x496e('0x1a')]=qs[_0x496e('0x1a')](_0x628b82[_0x496e('0x2b')][_0x496e('0x1a')]);_0x1d4e19[_0x496e('0x18')]=qs[_0x496e('0x18')](_0x628b82[_0x496e('0x2b')][_0x496e('0x18')]);}return _0x24fd29[_0x496e('0x4b')](_0x1d4e19);}})['then'](function(_0x266e9c){if(_0x266e9c){return _0x266e9c?{'count':_0x13c646,'rows':_0x266e9c}:null;}})[_0x496e('0x21')](respondWithResult(_0x33a623,null))[_0x496e('0x3e')](handleError(_0x33a623,null));};exports[_0x496e('0x4c')]=function(_0x3757e7,_0x387ad4,_0x2f7a4f){return db[_0x496e('0x4d')][_0x496e('0x41')]({'where':{'id':_0x3757e7[_0x496e('0x44')]['id']}})[_0x496e('0x21')](handleEntityNotFound(_0x387ad4,null))[_0x496e('0x21')](function(_0x5b47eb){if(_0x5b47eb){return _0x5b47eb[_0x496e('0x4c')](_0x3757e7[_0x496e('0x43')][_0x496e('0x47')],_[_0x496e('0x48')](_0x3757e7['body'],[_0x496e('0x47'),'id'])||{});}})['then'](respondWithResult(_0x387ad4,null))['catch'](handleError(_0x387ad4,null));};exports[_0x496e('0x4e')]=function(_0x51fdfc,_0x1bc498,_0xff5695){var _0x8fbff6={};var _0x255639={};var _0x118a51;var _0x413734;return db['Automation'][_0x496e('0x49')]({'where':{'id':_0x51fdfc[_0x496e('0x44')]['id']}})[_0x496e('0x21')](handleEntityNotFound(_0x1bc498,null))[_0x496e('0x21')](function(_0x20cdac){if(_0x20cdac){_0x118a51=_0x20cdac;_0x255639[_0x496e('0x2e')]=_['keys'](db[_0x496e('0x4d')]['rawAttributes']);_0x255639[_0x496e('0x2b')]=_[_0x496e('0x2c')](_0x51fdfc[_0x496e('0x2b')]);_0x255639[_0x496e('0x36')]=_[_0x496e('0x2d')](_0x255639[_0x496e('0x2e')],_0x255639[_0x496e('0x2b')]);_0x8fbff6[_0x496e('0x2f')]=_[_0x496e('0x2d')](_0x255639[_0x496e('0x2e')],qs['fields'](_0x51fdfc['query'][_0x496e('0x30')]));_0x8fbff6[_0x496e('0x2f')]=_0x8fbff6[_0x496e('0x2f')][_0x496e('0x31')]?_0x8fbff6[_0x496e('0x2f')]:_0x255639[_0x496e('0x2e')];_0x8fbff6[_0x496e('0x34')]=qs[_0x496e('0x35')](_0x51fdfc[_0x496e('0x2b')][_0x496e('0x35')]);_0x8fbff6[_0x496e('0x39')]=qs[_0x496e('0x36')](_[_0x496e('0x37')](_0x51fdfc[_0x496e('0x2b')],_0x255639[_0x496e('0x36')]));if(_0x51fdfc[_0x496e('0x2b')][_0x496e('0x38')]){_0x8fbff6[_0x496e('0x39')]=_[_0x496e('0x3a')](_0x8fbff6[_0x496e('0x39')],{'$or':_['map'](_0x8fbff6[_0x496e('0x2f')],function(_0x34a50a){var _0x5920a0={};_0x5920a0[_0x34a50a]={'$like':'%'+_0x51fdfc[_0x496e('0x2b')]['filter']+'%'};return _0x5920a0;})});}_0x8fbff6=_[_0x496e('0x3a')]({},_0x8fbff6,_0x51fdfc[_0x496e('0x4a')]);return _0x118a51[_0x496e('0x4e')](_0x8fbff6);}})['then'](function(_0x56445b){if(_0x56445b){_0x413734=_0x56445b[_0x496e('0x31')];if(!_0x51fdfc[_0x496e('0x2b')][_0x496e('0x32')](_0x496e('0x33'))){_0x8fbff6[_0x496e('0x1a')]=qs[_0x496e('0x1a')](_0x51fdfc[_0x496e('0x2b')]['limit']);_0x8fbff6[_0x496e('0x18')]=qs['offset'](_0x51fdfc['query'][_0x496e('0x18')]);}return _0x118a51[_0x496e('0x4e')](_0x8fbff6);}})['then'](function(_0x50ae72){if(_0x50ae72){return _0x50ae72?{'count':_0x413734,'rows':_0x50ae72}:null;}})[_0x496e('0x21')](respondWithResult(_0x1bc498,null))[_0x496e('0x3e')](handleError(_0x1bc498,null));};
\ No newline at end of file
+var _0xe6b0=['error','stack','name','send','index','map','Automation','rawAttributes','type','model','query','keys','filters','intersection','attributes','fields','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','include','findAll','rows','catch','show','length','includeAll','find','create','body','params','addConditions','Condition','ids','omit','findOne','getConditions','hasOwnProperty','Action','addActions','getActions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy'];(function(_0x47df54,_0x1aeb61){var _0x261b87=function(_0x54bc77){while(--_0x54bc77){_0x47df54['push'](_0x47df54['shift']());}};_0x261b87(++_0x1aeb61);}(_0xe6b0,0x130));var _0x0e6b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xe6b0[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x0e6b('0x0'));var rimraf=require(_0x0e6b('0x1'));var zipdir=require(_0x0e6b('0x2'));var jsonpatch=require(_0x0e6b('0x3'));var rp=require(_0x0e6b('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x0e6b('0x5'));var util=require(_0x0e6b('0x6'));var path=require(_0x0e6b('0x7'));var sox=require(_0x0e6b('0x8'));var csv=require(_0x0e6b('0x9'));var ejs=require(_0x0e6b('0xa'));var fs=require('fs');var fs_extra=require(_0x0e6b('0xb'));var _=require(_0x0e6b('0xc'));var squel=require('squel');var crypto=require(_0x0e6b('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x0e6b('0xe'));var toCsv=require(_0x0e6b('0x9'));var querystring=require('querystring');var Papa=require(_0x0e6b('0xf'));var Redis=require(_0x0e6b('0x10'));var authService=require(_0x0e6b('0x11'));var qs=require(_0x0e6b('0x12'));var as=require(_0x0e6b('0x13'));var hardwareService=require(_0x0e6b('0x14'));var logger=require('../../config/logger')(_0x0e6b('0x15'));var utils=require(_0x0e6b('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x0e6b('0x17'));var db=require(_0x0e6b('0x18'))['db'];function respondWithStatusCode(_0x23b330,_0x4a0706){_0x4a0706=_0x4a0706||0xcc;return function(_0x3ca5c1){if(_0x3ca5c1){return _0x23b330[_0x0e6b('0x19')](_0x4a0706);}return _0x23b330[_0x0e6b('0x1a')](_0x4a0706)[_0x0e6b('0x1b')]();};}function respondWithResult(_0x1ce3b4,_0x1fe598){_0x1fe598=_0x1fe598||0xc8;return function(_0xdeeb13){if(_0xdeeb13){return _0x1ce3b4[_0x0e6b('0x1a')](_0x1fe598)[_0x0e6b('0x1c')](_0xdeeb13);}};}function respondWithFilteredResult(_0x7115e0,_0x239c28){return function(_0x201464){if(_0x201464){var _0x248943=typeof _0x239c28[_0x0e6b('0x1d')]===_0x0e6b('0x1e')&&typeof _0x239c28[_0x0e6b('0x1f')]===_0x0e6b('0x1e');var _0xe1f17d=_0x201464[_0x0e6b('0x20')];var _0x365416=_0x248943?0x0:_0x239c28[_0x0e6b('0x1d')];var _0x512464=_0x248943?_0x201464[_0x0e6b('0x20')]:_0x239c28['offset']+_0x239c28[_0x0e6b('0x1f')];var _0x491d7f;if(_0x512464>=_0xe1f17d){_0x512464=_0xe1f17d;_0x491d7f=0xc8;}else{_0x491d7f=0xce;}_0x7115e0[_0x0e6b('0x1a')](_0x491d7f);return _0x7115e0['set'](_0x0e6b('0x21'),_0x365416+'-'+_0x512464+'/'+_0xe1f17d)[_0x0e6b('0x1c')](_0x201464);}return null;};}function patchUpdates(_0x35ae53){return function(_0x1df8d7){try{jsonpatch[_0x0e6b('0x22')](_0x1df8d7,_0x35ae53,!![]);}catch(_0x5ea8e7){return BPromise[_0x0e6b('0x23')](_0x5ea8e7);}return _0x1df8d7[_0x0e6b('0x24')]();};}function saveUpdates(_0x6c9c6b,_0x139b28){return function(_0x5a69c9){if(_0x5a69c9){return _0x5a69c9[_0x0e6b('0x25')](_0x6c9c6b)[_0x0e6b('0x26')](function(_0x53a735){return _0x53a735;});}return null;};}function removeEntity(_0x72796e,_0x140f8a){return function(_0x30a0db){if(_0x30a0db){return _0x30a0db[_0x0e6b('0x27')]()[_0x0e6b('0x26')](function(){_0x72796e[_0x0e6b('0x1a')](0xcc)[_0x0e6b('0x1b')]();});}};}function handleEntityNotFound(_0x4bd123,_0x591480){return function(_0x3cb48b){if(!_0x3cb48b){_0x4bd123[_0x0e6b('0x19')](0x194);}return _0x3cb48b;};}function handleError(_0x54cbe4,_0x302e85){_0x302e85=_0x302e85||0x1f4;return function(_0x6373a){logger[_0x0e6b('0x28')](_0x6373a[_0x0e6b('0x29')]);if(_0x6373a[_0x0e6b('0x2a')]){delete _0x6373a[_0x0e6b('0x2a')];}_0x54cbe4[_0x0e6b('0x1a')](_0x302e85)[_0x0e6b('0x2b')](_0x6373a);};}exports[_0x0e6b('0x2c')]=function(_0x4a0cc7,_0x290d9b){var _0x588cec={},_0x21ec21={},_0x32bf11={'count':0x0,'rows':[]};var _0xc54a7c=_[_0x0e6b('0x2d')](db[_0x0e6b('0x2e')][_0x0e6b('0x2f')],function(_0x9a9f7e){return{'name':_0x9a9f7e['fieldName'],'type':_0x9a9f7e[_0x0e6b('0x30')]['key']};});_0x21ec21[_0x0e6b('0x31')]=_['map'](_0xc54a7c,_0x0e6b('0x2a'));_0x21ec21[_0x0e6b('0x32')]=_[_0x0e6b('0x33')](_0x4a0cc7['query']);_0x21ec21[_0x0e6b('0x34')]=_[_0x0e6b('0x35')](_0x21ec21['model'],_0x21ec21[_0x0e6b('0x32')]);_0x588cec[_0x0e6b('0x36')]=_[_0x0e6b('0x35')](_0x21ec21[_0x0e6b('0x31')],qs[_0x0e6b('0x37')](_0x4a0cc7['query'][_0x0e6b('0x37')]));_0x588cec['attributes']=_0x588cec[_0x0e6b('0x36')]['length']?_0x588cec[_0x0e6b('0x36')]:_0x21ec21[_0x0e6b('0x31')];if(!_0x4a0cc7['query']['hasOwnProperty'](_0x0e6b('0x38'))){_0x588cec['limit']=qs[_0x0e6b('0x1f')](_0x4a0cc7[_0x0e6b('0x32')][_0x0e6b('0x1f')]);_0x588cec[_0x0e6b('0x1d')]=qs[_0x0e6b('0x1d')](_0x4a0cc7[_0x0e6b('0x32')]['offset']);}_0x588cec[_0x0e6b('0x39')]=qs[_0x0e6b('0x3a')](_0x4a0cc7[_0x0e6b('0x32')]['sort']);_0x588cec[_0x0e6b('0x3b')]=qs['filters'](_[_0x0e6b('0x3c')](_0x4a0cc7[_0x0e6b('0x32')],_0x21ec21['filters']),_0xc54a7c);if(_0x4a0cc7[_0x0e6b('0x32')][_0x0e6b('0x3d')]){_0x588cec['where']=_[_0x0e6b('0x3e')](_0x588cec[_0x0e6b('0x3b')],{'$or':_[_0x0e6b('0x2d')](_0xc54a7c,function(_0x21ea95){if(_0x21ea95[_0x0e6b('0x30')]!==_0x0e6b('0x3f')){var _0x19834f={};_0x19834f[_0x21ea95['name']]={'$like':'%'+_0x4a0cc7[_0x0e6b('0x32')]['filter']+'%'};return _0x19834f;}})});}_0x588cec=_['merge']({},_0x588cec,_0x4a0cc7[_0x0e6b('0x40')]);var _0x2bff5d={'where':_0x588cec[_0x0e6b('0x3b')]};return db[_0x0e6b('0x2e')][_0x0e6b('0x20')](_0x2bff5d)[_0x0e6b('0x26')](function(_0x39d05f){_0x32bf11[_0x0e6b('0x20')]=_0x39d05f;if(_0x4a0cc7[_0x0e6b('0x32')]['includeAll']){_0x588cec[_0x0e6b('0x41')]=[{'all':!![]}];}return db['Automation'][_0x0e6b('0x42')](_0x588cec);})[_0x0e6b('0x26')](function(_0x5c5ce7){_0x32bf11[_0x0e6b('0x43')]=_0x5c5ce7;return _0x32bf11;})['then'](respondWithFilteredResult(_0x290d9b,_0x588cec))[_0x0e6b('0x44')](handleError(_0x290d9b,null));};exports[_0x0e6b('0x45')]=function(_0x126a98,_0x1394f8){var _0x256e89={'raw':![],'where':{'id':_0x126a98['params']['id']}},_0x22d093={};_0x22d093['model']=_[_0x0e6b('0x33')](db[_0x0e6b('0x2e')][_0x0e6b('0x2f')]);_0x22d093[_0x0e6b('0x32')]=_['keys'](_0x126a98[_0x0e6b('0x32')]);_0x22d093[_0x0e6b('0x34')]=_[_0x0e6b('0x35')](_0x22d093[_0x0e6b('0x31')],_0x22d093[_0x0e6b('0x32')]);_0x256e89[_0x0e6b('0x36')]=_[_0x0e6b('0x35')](_0x22d093[_0x0e6b('0x31')],qs[_0x0e6b('0x37')](_0x126a98[_0x0e6b('0x32')][_0x0e6b('0x37')]));_0x256e89[_0x0e6b('0x36')]=_0x256e89[_0x0e6b('0x36')][_0x0e6b('0x46')]?_0x256e89[_0x0e6b('0x36')]:_0x22d093[_0x0e6b('0x31')];if(_0x126a98[_0x0e6b('0x32')][_0x0e6b('0x47')]){_0x256e89[_0x0e6b('0x41')]=[{'all':!![]}];}_0x256e89=_['merge']({},_0x256e89,_0x126a98[_0x0e6b('0x40')]);return db[_0x0e6b('0x2e')][_0x0e6b('0x48')](_0x256e89)['then'](handleEntityNotFound(_0x1394f8,null))[_0x0e6b('0x26')](respondWithResult(_0x1394f8,null))[_0x0e6b('0x44')](handleError(_0x1394f8,null));};exports['create']=function(_0x168e72,_0x6c0b59){return db['Automation'][_0x0e6b('0x49')](_0x168e72[_0x0e6b('0x4a')],{})['then'](respondWithResult(_0x6c0b59,0xc9))[_0x0e6b('0x44')](handleError(_0x6c0b59,null));};exports[_0x0e6b('0x25')]=function(_0x92f676,_0xf55c80){if(_0x92f676[_0x0e6b('0x4a')]['id']){delete _0x92f676[_0x0e6b('0x4a')]['id'];}return db[_0x0e6b('0x2e')]['find']({'where':{'id':_0x92f676[_0x0e6b('0x4b')]['id']}})[_0x0e6b('0x26')](handleEntityNotFound(_0xf55c80,null))[_0x0e6b('0x26')](saveUpdates(_0x92f676['body'],null))['then'](respondWithResult(_0xf55c80,null))['catch'](handleError(_0xf55c80,null));};exports[_0x0e6b('0x27')]=function(_0x4701ba,_0x245bd5){return db[_0x0e6b('0x2e')][_0x0e6b('0x48')]({'where':{'id':_0x4701ba[_0x0e6b('0x4b')]['id']}})['then'](handleEntityNotFound(_0x245bd5,null))['then'](removeEntity(_0x245bd5,null))['catch'](handleError(_0x245bd5,null));};exports[_0x0e6b('0x4c')]=function(_0xa0a523,_0x20c1d0,_0x335697){return db[_0x0e6b('0x4d')][_0x0e6b('0x48')]({'where':{'id':_0xa0a523[_0x0e6b('0x4b')]['id']}})[_0x0e6b('0x26')](handleEntityNotFound(_0x20c1d0,null))['then'](function(_0x3465b2){if(_0x3465b2){return _0x3465b2[_0x0e6b('0x4c')](_0xa0a523[_0x0e6b('0x4a')][_0x0e6b('0x4e')],_[_0x0e6b('0x4f')](_0xa0a523['body'],[_0x0e6b('0x4e'),'id'])||{});}})[_0x0e6b('0x26')](respondWithResult(_0x20c1d0,null))[_0x0e6b('0x44')](handleError(_0x20c1d0,null));};exports['getConditions']=function(_0x155119,_0x4d0b05,_0x5918c3){var _0x46a275={};var _0x377965={};var _0x1eeb1e;var _0x4b7b7c;return db[_0x0e6b('0x2e')][_0x0e6b('0x50')]({'where':{'id':_0x155119[_0x0e6b('0x4b')]['id']}})[_0x0e6b('0x26')](handleEntityNotFound(_0x4d0b05,null))['then'](function(_0x584a23){if(_0x584a23){_0x1eeb1e=_0x584a23;_0x377965[_0x0e6b('0x31')]=_[_0x0e6b('0x33')](db[_0x0e6b('0x4d')][_0x0e6b('0x2f')]);_0x377965['query']=_[_0x0e6b('0x33')](_0x155119['query']);_0x377965[_0x0e6b('0x34')]=_[_0x0e6b('0x35')](_0x377965[_0x0e6b('0x31')],_0x377965[_0x0e6b('0x32')]);_0x46a275[_0x0e6b('0x36')]=_[_0x0e6b('0x35')](_0x377965[_0x0e6b('0x31')],qs['fields'](_0x155119[_0x0e6b('0x32')]['fields']));_0x46a275[_0x0e6b('0x36')]=_0x46a275['attributes'][_0x0e6b('0x46')]?_0x46a275['attributes']:_0x377965[_0x0e6b('0x31')];_0x46a275[_0x0e6b('0x39')]=qs[_0x0e6b('0x3a')](_0x155119['query'][_0x0e6b('0x3a')]);_0x46a275[_0x0e6b('0x3b')]=qs[_0x0e6b('0x34')](_['pick'](_0x155119[_0x0e6b('0x32')],_0x377965[_0x0e6b('0x34')]));if(_0x155119['query'][_0x0e6b('0x3d')]){_0x46a275[_0x0e6b('0x3b')]=_[_0x0e6b('0x3e')](_0x46a275[_0x0e6b('0x3b')],{'$or':_['map'](_0x46a275[_0x0e6b('0x36')],function(_0xc6bdad){var _0x488a8e={};_0x488a8e[_0xc6bdad]={'$like':'%'+_0x155119[_0x0e6b('0x32')][_0x0e6b('0x3d')]+'%'};return _0x488a8e;})});}_0x46a275=_['merge']({},_0x46a275,_0x155119[_0x0e6b('0x40')]);return _0x1eeb1e[_0x0e6b('0x51')](_0x46a275);}})[_0x0e6b('0x26')](function(_0x21691f){if(_0x21691f){_0x4b7b7c=_0x21691f[_0x0e6b('0x46')];if(!_0x155119[_0x0e6b('0x32')][_0x0e6b('0x52')](_0x0e6b('0x38'))){_0x46a275[_0x0e6b('0x1f')]=qs['limit'](_0x155119[_0x0e6b('0x32')][_0x0e6b('0x1f')]);_0x46a275[_0x0e6b('0x1d')]=qs['offset'](_0x155119[_0x0e6b('0x32')][_0x0e6b('0x1d')]);}return _0x1eeb1e[_0x0e6b('0x51')](_0x46a275);}})['then'](function(_0x553a09){if(_0x553a09){return _0x553a09?{'count':_0x4b7b7c,'rows':_0x553a09}:null;}})[_0x0e6b('0x26')](respondWithResult(_0x4d0b05,null))[_0x0e6b('0x44')](handleError(_0x4d0b05,null));};exports['addActions']=function(_0x4f555b,_0x18dff1,_0x41ab4e){return db[_0x0e6b('0x53')][_0x0e6b('0x48')]({'where':{'id':_0x4f555b[_0x0e6b('0x4b')]['id']}})[_0x0e6b('0x26')](handleEntityNotFound(_0x18dff1,null))[_0x0e6b('0x26')](function(_0x56d62a){if(_0x56d62a){return _0x56d62a[_0x0e6b('0x54')](_0x4f555b[_0x0e6b('0x4a')][_0x0e6b('0x4e')],_['omit'](_0x4f555b[_0x0e6b('0x4a')],['ids','id'])||{});}})[_0x0e6b('0x26')](respondWithResult(_0x18dff1,null))[_0x0e6b('0x44')](handleError(_0x18dff1,null));};exports['getActions']=function(_0xff7fd6,_0xfbdd4e,_0x2a5c62){var _0x5957ac={};var _0x9e3c5c={};var _0x131721;var _0x5b6f18;return db[_0x0e6b('0x2e')]['findOne']({'where':{'id':_0xff7fd6[_0x0e6b('0x4b')]['id']}})[_0x0e6b('0x26')](handleEntityNotFound(_0xfbdd4e,null))[_0x0e6b('0x26')](function(_0x3ef863){if(_0x3ef863){_0x131721=_0x3ef863;_0x9e3c5c['model']=_[_0x0e6b('0x33')](db[_0x0e6b('0x53')][_0x0e6b('0x2f')]);_0x9e3c5c[_0x0e6b('0x32')]=_['keys'](_0xff7fd6[_0x0e6b('0x32')]);_0x9e3c5c[_0x0e6b('0x34')]=_[_0x0e6b('0x35')](_0x9e3c5c[_0x0e6b('0x31')],_0x9e3c5c[_0x0e6b('0x32')]);_0x5957ac['attributes']=_[_0x0e6b('0x35')](_0x9e3c5c[_0x0e6b('0x31')],qs['fields'](_0xff7fd6[_0x0e6b('0x32')][_0x0e6b('0x37')]));_0x5957ac['attributes']=_0x5957ac['attributes'][_0x0e6b('0x46')]?_0x5957ac[_0x0e6b('0x36')]:_0x9e3c5c['model'];_0x5957ac['order']=qs[_0x0e6b('0x3a')](_0xff7fd6['query'][_0x0e6b('0x3a')]);_0x5957ac['where']=qs[_0x0e6b('0x34')](_[_0x0e6b('0x3c')](_0xff7fd6[_0x0e6b('0x32')],_0x9e3c5c['filters']));if(_0xff7fd6['query'][_0x0e6b('0x3d')]){_0x5957ac['where']=_[_0x0e6b('0x3e')](_0x5957ac[_0x0e6b('0x3b')],{'$or':_[_0x0e6b('0x2d')](_0x5957ac[_0x0e6b('0x36')],function(_0x4789a0){var _0x2818dc={};_0x2818dc[_0x4789a0]={'$like':'%'+_0xff7fd6[_0x0e6b('0x32')][_0x0e6b('0x3d')]+'%'};return _0x2818dc;})});}_0x5957ac=_[_0x0e6b('0x3e')]({},_0x5957ac,_0xff7fd6[_0x0e6b('0x40')]);return _0x131721[_0x0e6b('0x55')](_0x5957ac);}})[_0x0e6b('0x26')](function(_0x27514d){if(_0x27514d){_0x5b6f18=_0x27514d[_0x0e6b('0x46')];if(!_0xff7fd6[_0x0e6b('0x32')][_0x0e6b('0x52')](_0x0e6b('0x38'))){_0x5957ac[_0x0e6b('0x1f')]=qs[_0x0e6b('0x1f')](_0xff7fd6[_0x0e6b('0x32')][_0x0e6b('0x1f')]);_0x5957ac[_0x0e6b('0x1d')]=qs[_0x0e6b('0x1d')](_0xff7fd6[_0x0e6b('0x32')][_0x0e6b('0x1d')]);}return _0x131721['getActions'](_0x5957ac);}})['then'](function(_0x1a7fe9){if(_0x1a7fe9){return _0x1a7fe9?{'count':_0x5b6f18,'rows':_0x1a7fe9}:null;}})[_0x0e6b('0x26')](respondWithResult(_0xfbdd4e,null))['catch'](handleError(_0xfbdd4e,null));};
\ No newline at end of file
index d2b251c..507adac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa991=['api','moment','bluebird','request-promise','path','../../config/environment','./automation.attributes','exports','define','Automation','util'];(function(_0x398447,_0x18df90){var _0x5d2094=function(_0x3c42a8){while(--_0x3c42a8){_0x398447['push'](_0x398447['shift']());}};_0x5d2094(++_0x18df90);}(_0xa991,0x6d));var _0x1a99=function(_0x17b6e3,_0x4522ed){_0x17b6e3=_0x17b6e3-0x0;var _0x3906f3=_0xa991[_0x17b6e3];return _0x3906f3;};'use strict';var _=require('lodash');var util=require(_0x1a99('0x0'));var logger=require('../../config/logger')(_0x1a99('0x1'));var moment=require(_0x1a99('0x2'));var BPromise=require(_0x1a99('0x3'));var rp=require(_0x1a99('0x4'));var fs=require('fs');var path=require(_0x1a99('0x5'));var rimraf=require('rimraf');var config=require(_0x1a99('0x6'));var attributes=require(_0x1a99('0x7'));module[_0x1a99('0x8')]=function(_0x5dea29,_0x19c92d){return _0x5dea29[_0x1a99('0x9')](_0x1a99('0xa'),attributes,{'tableName':'tools_automations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xfa55=['lodash','util','bluebird','request-promise','path','rimraf','../../config/environment','tools_automations'];(function(_0x4d3bd6,_0x1be0b0){var _0x574cf6=function(_0x49b147){while(--_0x49b147){_0x4d3bd6['push'](_0x4d3bd6['shift']());}};_0x574cf6(++_0x1be0b0);}(_0xfa55,0x178));var _0x5fa5=function(_0x16c226,_0x4969f1){_0x16c226=_0x16c226-0x0;var _0x1fc134=_0xfa55[_0x16c226];return _0x1fc134;};'use strict';var _=require(_0x5fa5('0x0'));var util=require(_0x5fa5('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x5fa5('0x2'));var rp=require(_0x5fa5('0x3'));var fs=require('fs');var path=require(_0x5fa5('0x4'));var rimraf=require(_0x5fa5('0x5'));var config=require(_0x5fa5('0x6'));var attributes=require('./automation.attributes');module['exports']=function(_0x2b4520,_0x47823c){return _0x2b4520['define']('Automation',attributes,{'tableName':_0x5fa5('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 49c9ed9..7275a6c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2272=['lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','request','then','info','request\x20sent','debug','Automation,\x20%s,\x20%s,\x20%s','stringify','error','code','Automation,\x20%s,\x20%s','message','result','catch'];(function(_0x2b72d8,_0x2fd8bf){var _0x1ec104=function(_0x7af0ec){while(--_0x7af0ec){_0x2b72d8['push'](_0x2b72d8['shift']());}};_0x1ec104(++_0x2fd8bf);}(_0x2272,0xd8));var _0x2227=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x2272[_0x14add3];return _0x4a174f;};'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')]('Automation,\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);});});}
\ No newline at end of file
+var _0x2d07=['../../config/logger','rpc','../../config/environment','jayson/promise','http','info','Automation,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x2d07,0x13a));var _0x72d0=function(_0x2db667,_0x193cf5){_0x2db667=_0x2db667-0x0;var _0x83ff9=_0x2d07[_0x2db667];return _0x83ff9;};'use strict';var _=require(_0x72d0('0x0'));var util=require(_0x72d0('0x1'));var moment=require('moment');var BPromise=require(_0x72d0('0x2'));var rs=require(_0x72d0('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x72d0('0x4'))['db'];var utils=require(_0x72d0('0x5'));var logger=require(_0x72d0('0x6'))(_0x72d0('0x7'));var config=require(_0x72d0('0x8'));var jayson=require(_0x72d0('0x9'));var client=jayson['client'][_0x72d0('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xdad2db,_0x2a4100,_0x47a826){return new BPromise(function(_0x4f2c34,_0x6d0ff6){return client['request'](_0xdad2db,_0x47a826)['then'](function(_0x5db523){logger[_0x72d0('0xb')](_0x72d0('0xc'),_0x2a4100,_0x72d0('0xd'));logger[_0x72d0('0xe')]('Automation,\x20%s,\x20%s,\x20%s',_0x2a4100,'request\x20sent',JSON['stringify'](_0x5db523));if(_0x5db523[_0x72d0('0xf')]){if(_0x5db523[_0x72d0('0xf')][_0x72d0('0x10')]===0x1f4){logger[_0x72d0('0xf')](_0x72d0('0xc'),_0x2a4100,_0x5db523['error'][_0x72d0('0x11')]);return _0x6d0ff6(_0x5db523[_0x72d0('0xf')][_0x72d0('0x11')]);}logger['error'](_0x72d0('0xc'),_0x2a4100,_0x5db523[_0x72d0('0xf')][_0x72d0('0x11')]);return _0x4f2c34(_0x5db523[_0x72d0('0xf')][_0x72d0('0x11')]);}else{logger[_0x72d0('0xb')]('Automation,\x20%s,\x20%s',_0x2a4100,_0x72d0('0xd'));_0x4f2c34(_0x5db523[_0x72d0('0x12')][_0x72d0('0x11')]);}})[_0x72d0('0x13')](function(_0x2a761c){logger[_0x72d0('0xf')](_0x72d0('0xc'),_0x2a4100,_0x2a761c);_0x6d0ff6(_0x2a761c);});});}
\ No newline at end of file
index 55505db..23fef92 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x48ea=['../../config/environment','./automation.controller','get','isAuthenticated','index','/:id','show','/:id/conditions','getConditions','/:id/actions','getActions','post','addConditions','addActions','put','update','destroy','exports','multer','path','connect-timeout','express','../../components/auth/service'];(function(_0x4fc9e6,_0xc51915){var _0x551d28=function(_0x1a603b){while(--_0x1a603b){_0x4fc9e6['push'](_0x4fc9e6['shift']());}};_0x551d28(++_0xc51915);}(_0x48ea,0x9c));var _0xa48e=function(_0x19950d,_0x448522){_0x19950d=_0x19950d-0x0;var _0x44d84f=_0x48ea[_0x19950d];return _0x44d84f;};'use strict';var multer=require(_0xa48e('0x0'));var util=require('util');var path=require(_0xa48e('0x1'));var timeout=require(_0xa48e('0x2'));var express=require(_0xa48e('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xa48e('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xa48e('0x5'));var controller=require(_0xa48e('0x6'));router[_0xa48e('0x7')]('/',auth[_0xa48e('0x8')](),controller[_0xa48e('0x9')]);router[_0xa48e('0x7')](_0xa48e('0xa'),auth[_0xa48e('0x8')](),controller[_0xa48e('0xb')]);router[_0xa48e('0x7')](_0xa48e('0xc'),auth[_0xa48e('0x8')](),controller[_0xa48e('0xd')]);router[_0xa48e('0x7')](_0xa48e('0xe'),auth['isAuthenticated'](),controller[_0xa48e('0xf')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0xa48e('0x10')](_0xa48e('0xc'),auth[_0xa48e('0x8')](),controller[_0xa48e('0x11')]);router['post'](_0xa48e('0xe'),auth[_0xa48e('0x8')](),controller[_0xa48e('0x12')]);router[_0xa48e('0x13')](_0xa48e('0xa'),auth[_0xa48e('0x8')](),controller[_0xa48e('0x14')]);router['delete'](_0xa48e('0xa'),auth[_0xa48e('0x8')](),controller[_0xa48e('0x15')]);module[_0xa48e('0x16')]=router;
\ No newline at end of file
+var _0x562d=['create','addActions','delete','destroy','exports','multer','util','path','Router','fs-extra','../../components/auth/service','../../config/environment','isAuthenticated','index','get','/:id','show','/:id/conditions','getConditions','/:id/actions','getActions','post'];(function(_0x1b5116,_0x5db602){var _0x1115f3=function(_0x51157f){while(--_0x51157f){_0x1b5116['push'](_0x1b5116['shift']());}};_0x1115f3(++_0x5db602);}(_0x562d,0xe1));var _0xd562=function(_0x161ec6,_0x580285){_0x161ec6=_0x161ec6-0x0;var _0x477176=_0x562d[_0x161ec6];return _0x477176;};'use strict';var multer=require(_0xd562('0x0'));var util=require(_0xd562('0x1'));var path=require(_0xd562('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xd562('0x3')]();var fs_extra=require(_0xd562('0x4'));var auth=require(_0xd562('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xd562('0x6'));var controller=require('./automation.controller');router['get']('/',auth[_0xd562('0x7')](),controller[_0xd562('0x8')]);router[_0xd562('0x9')](_0xd562('0xa'),auth[_0xd562('0x7')](),controller[_0xd562('0xb')]);router['get'](_0xd562('0xc'),auth['isAuthenticated'](),controller[_0xd562('0xd')]);router[_0xd562('0x9')](_0xd562('0xe'),auth[_0xd562('0x7')](),controller[_0xd562('0xf')]);router[_0xd562('0x10')]('/',auth[_0xd562('0x7')](),controller[_0xd562('0x11')]);router[_0xd562('0x10')](_0xd562('0xc'),auth[_0xd562('0x7')](),controller['addConditions']);router[_0xd562('0x10')]('/:id/actions',auth['isAuthenticated'](),controller[_0xd562('0x12')]);router['put'](_0xd562('0xa'),auth['isAuthenticated'](),controller['update']);router[_0xd562('0x13')](_0xd562('0xa'),auth[_0xd562('0x7')](),controller[_0xd562('0x14')]);module[_0xd562('0x15')]=router;
\ No newline at end of file
index 856a7be..424960a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe386=['NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Drop\x20Retry\x20(min:1,\x20max:999)','#Abandoned\x20Retry\x20(min:1,\x20max:999)','Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Machine\x20Retry\x20(min:1,\x20max:999)','#AgentReject\x20Retry\x20(min:1,\x20max:999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','exports','STRING','name','ivr','Active/Disactive\x20Campaign','INTEGER','UNSIGNED','Max\x20200\x20calls.','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','#Congestion\x20Retry\x20(min:1,\x20max:999)','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Busy\x20Retry\x20(min:1,\x20max:999)','Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#NoAnswer\x20Retry\x20(min:1,\x20max:999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','07:00-22:00,*,*,*','ENUM','never','onlyIfOpen','always','#AMD\x20Initial\x20Silence','#AMD\x20Greeting','#AMD\x20After\x20Greeting\x20Silence','#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','ASC','DESC','Random\x20Last\x20Digit\x20(min:1,\x20max:15)','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)'];(function(_0x140240,_0x101ef5){var _0x54fe10=function(_0x38fca4){while(--_0x38fca4){_0x140240['push'](_0x140240['shift']());}};_0x54fe10(++_0x101ef5);}(_0xe386,0x1db));var _0x6e38=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0xe386[_0x4565bf];return _0x5610ba;};'use strict';var Sequelize=require('sequelize');module[_0x6e38('0x0')]={'name':{'type':Sequelize[_0x6e38('0x1')],'unique':_0x6e38('0x2'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize['ENUM'](_0x6e38('0x3')),'allowNull':![],'defaultValue':_0x6e38('0x3')},'description':{'type':Sequelize[_0x6e38('0x1')]},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0x6e38('0x4')},'limitCalls':{'type':Sequelize[_0x6e38('0x5')](0x4)[_0x6e38('0x6')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':_0x6e38('0x7')},'dialOriginateCallerIdName':{'type':Sequelize[_0x6e38('0x1')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0x6e38('0x1')]},'dialOriginateTimeout':{'type':Sequelize[_0x6e38('0x5')](0x3)[_0x6e38('0x6')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0x6e38('0x8')},'dialCongestionMaxRetry':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x6e38('0x9')},'dialCongestionRetryFrequency':{'type':Sequelize[_0x6e38('0x5')](0x5)[_0x6e38('0x6')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x6e38('0xa')},'dialBusyMaxRetry':{'type':Sequelize[_0x6e38('0x5')](0x3)[_0x6e38('0x6')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x6e38('0xb')},'dialBusyRetryFrequency':{'type':Sequelize[_0x6e38('0x5')](0x5)[_0x6e38('0x6')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x6e38('0xc')},'dialNoAnswerMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x6e38('0x6')],'defaultValue':0x3,'comment':_0x6e38('0xd')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0x6e38('0x5')](0x5)[_0x6e38('0x6')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialGlobalMaxRetry':{'type':Sequelize[_0x6e38('0x5')](0x3)[_0x6e38('0x6')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0x6e38('0xe')},'dialTimezone':{'type':Sequelize['STRING'],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize['STRING'],'defaultValue':_0x6e38('0xf')},'dialCheckDuplicateType':{'type':Sequelize[_0x6e38('0x10')]('always',_0x6e38('0x11'),_0x6e38('0x12')),'defaultValue':_0x6e38('0x13')},'dialAMDActive':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':'Active/Disactive\x20AMD'},'dialAMDInitialSilence':{'type':Sequelize[_0x6e38('0x5')](0x9)['UNSIGNED'],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0x6e38('0x14')},'dialAMDGreeting':{'type':Sequelize[_0x6e38('0x5')](0x9)['UNSIGNED'],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0x6e38('0x15')},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0x6e38('0x5')](0x9)['UNSIGNED'],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0x6e38('0x16')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0x6e38('0x5')](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Total\x20Analysis\x20Time'},'dialAMDMinWordLength':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0x6e38('0x17')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0x6e38('0x5')](0x9)[_0x6e38('0x6')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0x6e38('0x18')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0x6e38('0x5')](0x9)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0x6e38('0x19')},'dialAMDSilenceThreshold':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0x6e38('0x1a')},'dialAMDMaximumWordLength':{'type':Sequelize[_0x6e38('0x5')](0x9)[_0x6e38('0x6')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x6e38('0x1b')},'dialOrderByScheduledAt':{'type':Sequelize[_0x6e38('0x10')]('DESC',_0x6e38('0x1c')),'defaultValue':_0x6e38('0x1d')},'dialPrefix':{'type':Sequelize[_0x6e38('0x1')],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0x6e38('0x5')](0x3)[_0x6e38('0x6')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x6e38('0x1e')},'dialCutDigit':{'type':Sequelize[_0x6e38('0x5')](0x3)[_0x6e38('0x6')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Cut\x20Digit\x20(min:1,\x20max:15)'},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0x6e38('0x5')](0x3)[_0x6e38('0x6')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x6e38('0x1f')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0x6e38('0x5')](0x5)[_0x6e38('0x6')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x6e38('0x20')},'dialDropMaxRetry':{'type':Sequelize[_0x6e38('0x5')](0x3)[_0x6e38('0x6')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x6e38('0x21')},'dialDropRetryFrequency':{'type':Sequelize[_0x6e38('0x5')](0x5)[_0x6e38('0x6')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialAbandonedMaxRetry':{'type':Sequelize[_0x6e38('0x5')](0x3)[_0x6e38('0x6')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x6e38('0x22')},'dialAbandonedRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x6e38('0x6')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x6e38('0x23')},'dialMachineMaxRetry':{'type':Sequelize[_0x6e38('0x5')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x6e38('0x24')},'dialMachineRetryFrequency':{'type':Sequelize[_0x6e38('0x5')](0x5)[_0x6e38('0x6')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialAgentRejectMaxRetry':{'type':Sequelize[_0x6e38('0x5')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x6e38('0x25')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0x6e38('0x5')](0x5)[_0x6e38('0x6')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x6e38('0x26')}};
\ No newline at end of file
+var _0x8bfd=['ENUM','ivr','STRING','Active/Disactive\x20Campaign','INTEGER','UNSIGNED','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Busy\x20Retry\x20(min:1,\x20max:999)','Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#NoAnswer\x20Retry\x20(min:1,\x20max:999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','07:00-22:00,*,*,*','always','never','onlyIfOpen','BOOLEAN','Active/Disactive\x20AMD','#AMD\x20Initial\x20Silence','#AMD\x20Greeting','#AMD\x20Between\x20Words\x20Silence','#AMD\x20Maximum\x20Number\x20Of\x20Words','#AMD\x20Maximum\x20Word\x20Length','DESC','ASC','Random\x20Last\x20Digit\x20(min:1,\x20max:15)','Cut\x20Digit\x20(min:1,\x20max:15)','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)','#Drop\x20Retry\x20(min:1,\x20max:999)','Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Abandoned\x20Retry\x20(min:1,\x20max:999)','Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','exports','name'];(function(_0x5c2e3e,_0x26ecd3){var _0x53f64a=function(_0x2b5df8){while(--_0x2b5df8){_0x5c2e3e['push'](_0x5c2e3e['shift']());}};_0x53f64a(++_0x26ecd3);}(_0x8bfd,0xca));var _0xd8bf=function(_0x44dcdb,_0x4ebb58){_0x44dcdb=_0x44dcdb-0x0;var _0x152a5b=_0x8bfd[_0x44dcdb];return _0x152a5b;};'use strict';var Sequelize=require('sequelize');module[_0xd8bf('0x0')]={'name':{'type':Sequelize['STRING'],'unique':_0xd8bf('0x1'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize[_0xd8bf('0x2')](_0xd8bf('0x3')),'allowNull':![],'defaultValue':_0xd8bf('0x3')},'description':{'type':Sequelize[_0xd8bf('0x4')]},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0xd8bf('0x5')},'limitCalls':{'type':Sequelize[_0xd8bf('0x6')](0x4)['UNSIGNED'],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':'Max\x20200\x20calls.'},'dialOriginateCallerIdName':{'type':Sequelize['STRING']},'dialOriginateCallerIdNumber':{'type':Sequelize['STRING']},'dialOriginateTimeout':{'type':Sequelize[_0xd8bf('0x6')](0x3)[_0xd8bf('0x7')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0xd8bf('0x8')},'dialCongestionMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xd8bf('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Congestion\x20Retry\x20(min:1,\x20max:999)'},'dialCongestionRetryFrequency':{'type':Sequelize[_0xd8bf('0x6')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xd8bf('0x9')},'dialBusyMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xd8bf('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xd8bf('0xa')},'dialBusyRetryFrequency':{'type':Sequelize[_0xd8bf('0x6')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xd8bf('0xb')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0xd8bf('0x6')](0x3)[_0xd8bf('0x7')],'defaultValue':0x3,'comment':_0xd8bf('0xc')},'dialNoAnswerRetryFrequency':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialGlobalMaxRetry':{'type':Sequelize[_0xd8bf('0x6')](0x3)[_0xd8bf('0x7')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0xd8bf('0xd')},'dialTimezone':{'type':Sequelize[_0xd8bf('0x4')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0xd8bf('0x4')],'defaultValue':_0xd8bf('0xe')},'dialCheckDuplicateType':{'type':Sequelize[_0xd8bf('0x2')](_0xd8bf('0xf'),_0xd8bf('0x10'),_0xd8bf('0x11')),'defaultValue':_0xd8bf('0xf')},'dialAMDActive':{'type':Sequelize[_0xd8bf('0x12')],'defaultValue':0x0,'comment':_0xd8bf('0x13')},'dialAMDInitialSilence':{'type':Sequelize[_0xd8bf('0x6')](0x9)[_0xd8bf('0x7')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0xd8bf('0x14')},'dialAMDGreeting':{'type':Sequelize[_0xd8bf('0x6')](0x9)[_0xd8bf('0x7')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0xd8bf('0x15')},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0xd8bf('0x6')](0x9)['UNSIGNED'],'defaultValue':0x320,'validate':{'min':0x0},'comment':'#AMD\x20After\x20Greeting\x20Silence'},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0xd8bf('0x6')](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Total\x20Analysis\x20Time'},'dialAMDMinWordLength':{'type':Sequelize[_0xd8bf('0x6')](0x9)[_0xd8bf('0x7')],'defaultValue':0x64,'validate':{'min':0x0},'comment':'#AMD\x20Min\x20Word\x20Length'},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0xd8bf('0x6')](0x9)['UNSIGNED'],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0xd8bf('0x16')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0xd8bf('0x6')](0x9)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0xd8bf('0x17')},'dialAMDSilenceThreshold':{'type':Sequelize['INTEGER'](0x5)[_0xd8bf('0x7')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':'#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)'},'dialAMDMaximumWordLength':{'type':Sequelize[_0xd8bf('0x6')](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xd8bf('0x18')},'dialOrderByScheduledAt':{'type':Sequelize[_0xd8bf('0x2')](_0xd8bf('0x19'),_0xd8bf('0x1a')),'defaultValue':_0xd8bf('0x19')},'dialPrefix':{'type':Sequelize[_0xd8bf('0x4')],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize['INTEGER'](0x3)[_0xd8bf('0x7')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xd8bf('0x1b')},'dialCutDigit':{'type':Sequelize['INTEGER'](0x3)[_0xd8bf('0x7')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xd8bf('0x1c')},'dialNoSuchNumberMaxRetry':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xd8bf('0x1d')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0xd8bf('0x6')](0x5)[_0xd8bf('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialDropMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xd8bf('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xd8bf('0x1e')},'dialDropRetryFrequency':{'type':Sequelize[_0xd8bf('0x6')](0x5)[_0xd8bf('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xd8bf('0x1f')},'dialAbandonedMaxRetry':{'type':Sequelize[_0xd8bf('0x6')](0x3)[_0xd8bf('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xd8bf('0x20')},'dialAbandonedRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xd8bf('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xd8bf('0x21')},'dialMachineMaxRetry':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Machine\x20Retry\x20(min:1,\x20max:999)'},'dialMachineRetryFrequency':{'type':Sequelize[_0xd8bf('0x6')](0x5)[_0xd8bf('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialAgentRejectMaxRetry':{'type':Sequelize[_0xd8bf('0x6')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#AgentReject\x20Retry\x20(min:1,\x20max:999)'},'dialAgentRejectRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xd8bf('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'}};
\ No newline at end of file
index 90b067b..f6bdbd1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf269=['params','omit','createdAt','updatedAt','body','getHoppers','CampaignId','CmHopper','findOne','CmHopperHistory','filter','getHopperFinals','CmHopperFinal','CmHopperBlack','getLists','CmList','addLists','format','ids','dialCheckDuplicateType','insert','into','cm_hopper','fromQuery','phone','scheduledAt','ContactId','ListId','select','field','NOW()','toString','from','cm_contacts','ListId\x20=\x20?','CmListId','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','CampaignId\x20=\x20?','COALESCE(phone,\x27\x27)','onlyIfOpen','deletedAt\x20IS\x20NULL','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?','sequelize','push','all','removeLists','getBlackLists','addBlackLists','YYYY-MM-DD\x20HH:mm:ss','spread','removeBlackLists','rimraf','zip-dir','request-promise','moment','bluebird','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','get','IvrCampaigns','UserProfileResource','error','stack','name','send','index','map','Campaign','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','options','includeAll','include','findAll','rows','catch','find','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone'];(function(_0x9fce47,_0x38c3e6){var _0x29e671=function(_0x1f4a62){while(--_0x1f4a62){_0x9fce47['push'](_0x9fce47['shift']());}};_0x29e671(++_0x38c3e6);}(_0xf269,0xd2));var _0x9f26=function(_0x34ed48,_0x2cc995){_0x34ed48=_0x34ed48-0x0;var _0x37da5c=_0xf269[_0x34ed48];return _0x37da5c;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9f26('0x0'));var zipdir=require(_0x9f26('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x9f26('0x2'));var moment=require(_0x9f26('0x3'));var BPromise=require(_0x9f26('0x4'));var Mustache=require('mustache');var util=require(_0x9f26('0x5'));var path=require('path');var sox=require(_0x9f26('0x6'));var csv=require(_0x9f26('0x7'));var ejs=require(_0x9f26('0x8'));var fs=require('fs');var fs_extra=require(_0x9f26('0x9'));var _=require(_0x9f26('0xa'));var squel=require(_0x9f26('0xb'));var crypto=require(_0x9f26('0xc'));var jsforce=require(_0x9f26('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x9f26('0xe'));var Redis=require(_0x9f26('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x9f26('0x10'));var hardwareService=require(_0x9f26('0x11'));var logger=require(_0x9f26('0x12'))(_0x9f26('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x9f26('0x14'))['db'];function respondWithStatusCode(_0x2f2c78,_0x4f24f4){_0x4f24f4=_0x4f24f4||0xcc;return function(_0xc464ee){if(_0xc464ee){return _0x2f2c78[_0x9f26('0x15')](_0x4f24f4);}return _0x2f2c78[_0x9f26('0x16')](_0x4f24f4)[_0x9f26('0x17')]();};}function respondWithResult(_0x1718f8,_0x511228){_0x511228=_0x511228||0xc8;return function(_0x259395){if(_0x259395){return _0x1718f8[_0x9f26('0x16')](_0x511228)[_0x9f26('0x18')](_0x259395);}};}function respondWithFilteredResult(_0x5f2dfa,_0x307cb4){return function(_0x71944f){if(_0x71944f){var _0x212c4e=typeof _0x307cb4[_0x9f26('0x19')]===_0x9f26('0x1a')&&typeof _0x307cb4['limit']===_0x9f26('0x1a');var _0x25c021=_0x71944f[_0x9f26('0x1b')];var _0x126996=_0x212c4e?0x0:_0x307cb4[_0x9f26('0x19')];var _0x2a0f6d=_0x212c4e?_0x71944f['count']:_0x307cb4['offset']+_0x307cb4[_0x9f26('0x1c')];var _0x573636;if(_0x2a0f6d>=_0x25c021){_0x2a0f6d=_0x25c021;_0x573636=0xc8;}else{_0x573636=0xce;}_0x5f2dfa[_0x9f26('0x16')](_0x573636);return _0x5f2dfa[_0x9f26('0x1d')](_0x9f26('0x1e'),_0x126996+'-'+_0x2a0f6d+'/'+_0x25c021)[_0x9f26('0x18')](_0x71944f);}return null;};}function patchUpdates(_0xa2a523){return function(_0x2c9bb3){try{jsonpatch[_0x9f26('0x1f')](_0x2c9bb3,_0xa2a523,!![]);}catch(_0x5a7ace){return BPromise[_0x9f26('0x20')](_0x5a7ace);}return _0x2c9bb3[_0x9f26('0x21')]();};}function saveUpdates(_0x12defd,_0x38af34){return function(_0x4503c9){if(_0x4503c9){return _0x4503c9[_0x9f26('0x22')](_0x12defd)[_0x9f26('0x23')](function(_0x1d47e7){return _0x1d47e7;});}return null;};}function removeEntity(_0xd38c5,_0x298510){return function(_0xe9d254){if(_0xe9d254){return _0xe9d254[_0x9f26('0x24')]()['then'](function(){var _0x3e7b54=_0xe9d254[_0x9f26('0x25')]({'plain':!![]});var _0x6da052=_0x9f26('0x26');return db[_0x9f26('0x27')][_0x9f26('0x24')]({'where':{'type':_0x6da052,'resourceId':_0x3e7b54['id']}})['then'](function(){return _0xe9d254;});})[_0x9f26('0x23')](function(){_0xd38c5[_0x9f26('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5f1973,_0x100fb5){return function(_0x53f00d){if(!_0x53f00d){_0x5f1973[_0x9f26('0x15')](0x194);}return _0x53f00d;};}function handleError(_0x55e50f,_0x44a51e){_0x44a51e=_0x44a51e||0x1f4;return function(_0x25168b){logger[_0x9f26('0x28')](_0x25168b[_0x9f26('0x29')]);if(_0x25168b[_0x9f26('0x2a')]){delete _0x25168b[_0x9f26('0x2a')];}_0x55e50f[_0x9f26('0x16')](_0x44a51e)[_0x9f26('0x2b')](_0x25168b);};}exports[_0x9f26('0x2c')]=function(_0x2ad80b,_0x2cc229){var _0x3844ab={},_0x2dbdf9={},_0x24fcec={'count':0x0,'rows':[]};var _0x1ad5d5=_[_0x9f26('0x2d')](db[_0x9f26('0x2e')][_0x9f26('0x2f')],function(_0x41bc57){return{'name':_0x41bc57[_0x9f26('0x30')],'type':_0x41bc57[_0x9f26('0x31')][_0x9f26('0x32')]};});_0x2dbdf9[_0x9f26('0x33')]=_[_0x9f26('0x2d')](_0x1ad5d5,'name');_0x2dbdf9[_0x9f26('0x34')]=_[_0x9f26('0x35')](_0x2ad80b[_0x9f26('0x34')]);_0x2dbdf9[_0x9f26('0x36')]=_[_0x9f26('0x37')](_0x2dbdf9[_0x9f26('0x33')],_0x2dbdf9['query']);_0x3844ab['attributes']=_['intersection'](_0x2dbdf9[_0x9f26('0x33')],qs[_0x9f26('0x38')](_0x2ad80b['query'][_0x9f26('0x38')]));_0x3844ab[_0x9f26('0x39')]=_0x3844ab[_0x9f26('0x39')][_0x9f26('0x3a')]?_0x3844ab[_0x9f26('0x39')]:_0x2dbdf9[_0x9f26('0x33')];if(!_0x2ad80b['query'][_0x9f26('0x3b')](_0x9f26('0x3c'))){_0x3844ab['limit']=qs[_0x9f26('0x1c')](_0x2ad80b['query'][_0x9f26('0x1c')]);_0x3844ab[_0x9f26('0x19')]=qs[_0x9f26('0x19')](_0x2ad80b[_0x9f26('0x34')]['offset']);}_0x3844ab[_0x9f26('0x3d')]=qs[_0x9f26('0x3e')](_0x2ad80b[_0x9f26('0x34')]['sort']);_0x3844ab[_0x9f26('0x3f')]=qs[_0x9f26('0x36')](_[_0x9f26('0x40')](_0x2ad80b[_0x9f26('0x34')],_0x2dbdf9[_0x9f26('0x36')]),_0x1ad5d5);if(_0x2ad80b[_0x9f26('0x34')]['filter']){_0x3844ab[_0x9f26('0x3f')]=_['merge'](_0x3844ab[_0x9f26('0x3f')],{'$or':_[_0x9f26('0x2d')](_0x1ad5d5,function(_0x4aa8a7){if(_0x4aa8a7[_0x9f26('0x31')]!=='VIRTUAL'){var _0xaf8c0f={};_0xaf8c0f[_0x4aa8a7['name']]={'$like':'%'+_0x2ad80b[_0x9f26('0x34')]['filter']+'%'};return _0xaf8c0f;}})});}_0x3844ab=_[_0x9f26('0x41')]({},_0x3844ab,_0x2ad80b[_0x9f26('0x42')]);var _0x34e1f6={'where':_0x3844ab[_0x9f26('0x3f')]};return db[_0x9f26('0x2e')]['count'](_0x34e1f6)[_0x9f26('0x23')](function(_0x2c5245){_0x24fcec['count']=_0x2c5245;if(_0x2ad80b['query'][_0x9f26('0x43')]){_0x3844ab[_0x9f26('0x44')]=[{'all':!![]}];}return db[_0x9f26('0x2e')][_0x9f26('0x45')](_0x3844ab);})['then'](function(_0x343801){_0x24fcec[_0x9f26('0x46')]=_0x343801;return _0x24fcec;})[_0x9f26('0x23')](respondWithFilteredResult(_0x2cc229,_0x3844ab))[_0x9f26('0x47')](handleError(_0x2cc229,null));};exports['show']=function(_0x433d25,_0x57cb8e){var _0x5d54ef={'raw':![],'where':{'id':_0x433d25['params']['id']}},_0x5ef94a={};_0x5ef94a[_0x9f26('0x33')]=_[_0x9f26('0x35')](db[_0x9f26('0x2e')]['rawAttributes']);_0x5ef94a['query']=_[_0x9f26('0x35')](_0x433d25['query']);_0x5ef94a['filters']=_['intersection'](_0x5ef94a[_0x9f26('0x33')],_0x5ef94a[_0x9f26('0x34')]);_0x5d54ef[_0x9f26('0x39')]=_[_0x9f26('0x37')](_0x5ef94a[_0x9f26('0x33')],qs[_0x9f26('0x38')](_0x433d25['query']['fields']));_0x5d54ef[_0x9f26('0x39')]=_0x5d54ef[_0x9f26('0x39')][_0x9f26('0x3a')]?_0x5d54ef[_0x9f26('0x39')]:_0x5ef94a['model'];if(_0x433d25[_0x9f26('0x34')][_0x9f26('0x43')]){_0x5d54ef['include']=[{'all':!![]}];}_0x5d54ef=_['merge']({},_0x5d54ef,_0x433d25[_0x9f26('0x42')]);return db[_0x9f26('0x2e')][_0x9f26('0x48')](_0x5d54ef)[_0x9f26('0x23')](handleEntityNotFound(_0x57cb8e,null))[_0x9f26('0x23')](respondWithResult(_0x57cb8e,null))[_0x9f26('0x47')](handleError(_0x57cb8e,null));};exports['create']=function(_0x1861dc,_0x2504f){return db[_0x9f26('0x2e')]['create'](_0x1861dc['body'],{})[_0x9f26('0x23')](function(_0x3ac946){var _0x1b6468=_0x1861dc[_0x9f26('0x49')][_0x9f26('0x25')]({'plain':!![]});if(!_0x1b6468)throw new Error(_0x9f26('0x4a'));if(_0x1b6468[_0x9f26('0x4b')]==='user'){var _0x3e0c28=_0x3ac946['get']({'plain':!![]});var _0x4722ad=_0x9f26('0x26');return db[_0x9f26('0x4c')][_0x9f26('0x48')]({'where':{'name':_0x4722ad,'userProfileId':_0x1b6468[_0x9f26('0x4d')]},'raw':!![]})[_0x9f26('0x23')](function(_0x1c024b){if(_0x1c024b&&_0x1c024b[_0x9f26('0x4e')]===0x0){return db[_0x9f26('0x27')][_0x9f26('0x4f')]({'name':_0x3e0c28['name'],'resourceId':_0x3e0c28['id'],'type':_0x1c024b[_0x9f26('0x2a')],'sectionId':_0x1c024b['id']},{})[_0x9f26('0x23')](function(){return _0x3ac946;});}else{return _0x3ac946;}})[_0x9f26('0x47')](function(_0x31566a){logger[_0x9f26('0x28')](_0x9f26('0x50'),_0x31566a);throw _0x31566a;});}return _0x3ac946;})['then'](respondWithResult(_0x2504f,0xc9))[_0x9f26('0x47')](handleError(_0x2504f,null));};exports[_0x9f26('0x51')]=function(_0x2dbf08,_0x110750){var _0x121685={'where':{'id':_0x2dbf08[_0x9f26('0x52')]['id']}},_0x416fa5={};_0x416fa5[_0x9f26('0x33')]=_['keys'](db[_0x9f26('0x2e')][_0x9f26('0x2f')]);_0x121685['attributes']=_[_0x9f26('0x37')](_0x416fa5['model'],qs[_0x9f26('0x38')](_0x2dbf08['query'][_0x9f26('0x38')]));_0x121685[_0x9f26('0x39')]=_0x121685[_0x9f26('0x39')][_0x9f26('0x3a')]?_0x121685['attributes']:_0x416fa5['model'];if(_0x2dbf08[_0x9f26('0x34')][_0x9f26('0x43')]){_0x121685['include']=[{'all':!![]}];}_0x121685=_[_0x9f26('0x41')]({},_0x121685,_0x2dbf08[_0x9f26('0x42')]);return db[_0x9f26('0x2e')][_0x9f26('0x48')](_0x121685)[_0x9f26('0x23')](handleEntityNotFound(_0x110750,null))['then'](function(_0x448c58){if(_0x448c58){var _0x25c1ba=_0x448c58[_0x9f26('0x25')]({'plain':!![]});_0x25c1ba=qs[_0x9f26('0x53')](_0x25c1ba,['id',_0x9f26('0x54'),_0x9f26('0x55')]);_0x2dbf08['body']=_[_0x9f26('0x53')](_0x2dbf08[_0x9f26('0x56')],['id',_0x9f26('0x54'),_0x9f26('0x55')]);return db['Campaign'][_0x9f26('0x4f')](_[_0x9f26('0x41')](_0x25c1ba,_0x2dbf08[_0x9f26('0x56')]),{'include':_0x2dbf08[_0x9f26('0x34')]['includeAll']?[{'all':!![]}]:undefined})['then'](function(_0x171cec){var _0x200020=_0x2dbf08['user'][_0x9f26('0x25')]({'plain':!![]});if(!_0x200020)throw new Error(_0x9f26('0x4a'));if(_0x200020[_0x9f26('0x4b')]===_0x9f26('0x49')){var _0x320950=_0x171cec['get']({'plain':!![]});var _0x271c83=_0x9f26('0x26');return db[_0x9f26('0x4c')]['find']({'where':{'name':_0x271c83,'userProfileId':_0x200020['userProfileId']},'raw':!![]})[_0x9f26('0x23')](function(_0x39c1e5){if(_0x39c1e5&&_0x39c1e5[_0x9f26('0x4e')]===0x0){return db[_0x9f26('0x27')]['create']({'name':_0x320950[_0x9f26('0x2a')],'resourceId':_0x320950['id'],'type':_0x39c1e5[_0x9f26('0x2a')],'sectionId':_0x39c1e5['id']},{})[_0x9f26('0x23')](function(){return _0x171cec;});}else{return _0x171cec;}})[_0x9f26('0x47')](function(_0x175293){logger[_0x9f26('0x28')](_0x9f26('0x50'),_0x175293);throw _0x175293;});}return _0x171cec;});}})[_0x9f26('0x23')](respondWithResult(_0x110750,0xc9))[_0x9f26('0x47')](handleError(_0x110750,null));};exports[_0x9f26('0x22')]=function(_0x281a61,_0x3c2926){if(_0x281a61[_0x9f26('0x56')]['id']){delete _0x281a61[_0x9f26('0x56')]['id'];}return db['Campaign'][_0x9f26('0x48')]({'where':{'id':_0x281a61[_0x9f26('0x52')]['id']}})[_0x9f26('0x23')](handleEntityNotFound(_0x3c2926,null))[_0x9f26('0x23')](saveUpdates(_0x281a61[_0x9f26('0x56')],null))[_0x9f26('0x23')](respondWithResult(_0x3c2926,null))['catch'](handleError(_0x3c2926,null));};exports['destroy']=function(_0x27fd0f,_0x5aba94){return db[_0x9f26('0x2e')][_0x9f26('0x48')]({'where':{'id':_0x27fd0f[_0x9f26('0x52')]['id']}})['then'](handleEntityNotFound(_0x5aba94,null))[_0x9f26('0x23')](removeEntity(_0x5aba94,null))[_0x9f26('0x47')](handleError(_0x5aba94,null));};exports[_0x9f26('0x57')]=function(_0x5e91da,_0x455859,_0x412dd8){var _0x4655b8={'raw':!![],'where':{}};var _0x244c89={};var _0x240306={'count':0x0,'rows':[]};return db[_0x9f26('0x2e')]['findOne']({'where':{'id':_0x5e91da[_0x9f26('0x52')]['id']}})['then'](handleEntityNotFound(_0x455859,null))['then'](function(_0x267a33){if(_0x267a33){_0x244c89[_0x9f26('0x33')]=_[_0x9f26('0x35')](db['CmHopper'][_0x9f26('0x2f')]);_0x244c89[_0x9f26('0x34')]=_[_0x9f26('0x35')](_0x5e91da[_0x9f26('0x34')]);_0x244c89[_0x9f26('0x36')]=_[_0x9f26('0x37')](_0x244c89[_0x9f26('0x33')],_0x244c89[_0x9f26('0x34')]);_0x4655b8[_0x9f26('0x39')]=_[_0x9f26('0x37')](_0x244c89['model'],qs['fields'](_0x5e91da[_0x9f26('0x34')][_0x9f26('0x38')]));_0x4655b8[_0x9f26('0x39')]=_0x4655b8[_0x9f26('0x39')][_0x9f26('0x3a')]?_0x4655b8['attributes']:_0x244c89[_0x9f26('0x33')];if(!_0x5e91da[_0x9f26('0x34')][_0x9f26('0x3b')]('nolimit')){_0x4655b8[_0x9f26('0x1c')]=qs['limit'](_0x5e91da[_0x9f26('0x34')][_0x9f26('0x1c')]);_0x4655b8['offset']=qs[_0x9f26('0x19')](_0x5e91da[_0x9f26('0x34')]['offset']);}_0x4655b8[_0x9f26('0x3d')]=qs[_0x9f26('0x3e')](_0x5e91da[_0x9f26('0x34')]['sort']);_0x4655b8[_0x9f26('0x3f')]=qs[_0x9f26('0x36')](_[_0x9f26('0x40')](_0x5e91da[_0x9f26('0x34')],_0x244c89['filters']));_0x4655b8[_0x9f26('0x3f')][_0x9f26('0x58')]=_0x267a33['id'];if(_0x5e91da[_0x9f26('0x34')]['filter']){_0x4655b8[_0x9f26('0x3f')]=_['merge'](_0x4655b8['where'],{'$or':_[_0x9f26('0x2d')](_0x4655b8['attributes'],function(_0x3fb2c3){var _0x3639c4={};_0x3639c4[_0x3fb2c3]={'$like':'%'+_0x5e91da[_0x9f26('0x34')]['filter']+'%'};return _0x3639c4;})});}_0x4655b8=_['merge']({},_0x4655b8,_0x5e91da['options']);return db[_0x9f26('0x59')]['count']({'where':_0x4655b8[_0x9f26('0x3f')]})[_0x9f26('0x23')](function(_0x40e736){_0x240306['count']=_0x40e736;if(_0x5e91da['query'][_0x9f26('0x43')]){_0x4655b8[_0x9f26('0x44')]=[{'all':!![]}];}return db[_0x9f26('0x59')]['findAll'](_0x4655b8);})[_0x9f26('0x23')](function(_0x4c7a80){_0x240306[_0x9f26('0x46')]=_0x4c7a80;return _0x240306;});}})[_0x9f26('0x23')](respondWithFilteredResult(_0x455859,_0x4655b8))[_0x9f26('0x47')](handleError(_0x455859,null));};exports['getHopperHistories']=function(_0x147f6d,_0x3e9309,_0x490c1a){var _0x495341={'raw':!![],'where':{}};var _0x31921f={};var _0x16d8ca={'count':0x0,'rows':[]};return db['Campaign'][_0x9f26('0x5a')]({'where':{'id':_0x147f6d['params']['id']}})[_0x9f26('0x23')](handleEntityNotFound(_0x3e9309,null))[_0x9f26('0x23')](function(_0x591713){if(_0x591713){_0x31921f[_0x9f26('0x33')]=_[_0x9f26('0x35')](db[_0x9f26('0x5b')]['rawAttributes']);_0x31921f[_0x9f26('0x34')]=_['keys'](_0x147f6d[_0x9f26('0x34')]);_0x31921f[_0x9f26('0x36')]=_[_0x9f26('0x37')](_0x31921f[_0x9f26('0x33')],_0x31921f[_0x9f26('0x34')]);_0x495341['attributes']=_[_0x9f26('0x37')](_0x31921f[_0x9f26('0x33')],qs[_0x9f26('0x38')](_0x147f6d[_0x9f26('0x34')][_0x9f26('0x38')]));_0x495341['attributes']=_0x495341[_0x9f26('0x39')][_0x9f26('0x3a')]?_0x495341[_0x9f26('0x39')]:_0x31921f['model'];if(!_0x147f6d[_0x9f26('0x34')][_0x9f26('0x3b')](_0x9f26('0x3c'))){_0x495341[_0x9f26('0x1c')]=qs[_0x9f26('0x1c')](_0x147f6d[_0x9f26('0x34')]['limit']);_0x495341[_0x9f26('0x19')]=qs['offset'](_0x147f6d[_0x9f26('0x34')][_0x9f26('0x19')]);}_0x495341[_0x9f26('0x3d')]=qs[_0x9f26('0x3e')](_0x147f6d[_0x9f26('0x34')][_0x9f26('0x3e')]);_0x495341[_0x9f26('0x3f')]=qs[_0x9f26('0x36')](_[_0x9f26('0x40')](_0x147f6d[_0x9f26('0x34')],_0x31921f[_0x9f26('0x36')]));_0x495341['where']['CampaignId']=_0x591713['id'];if(_0x147f6d[_0x9f26('0x34')][_0x9f26('0x5c')]){_0x495341[_0x9f26('0x3f')]=_['merge'](_0x495341['where'],{'$or':_[_0x9f26('0x2d')](_0x495341[_0x9f26('0x39')],function(_0xe5f90){var _0x5c77b4={};_0x5c77b4[_0xe5f90]={'$like':'%'+_0x147f6d[_0x9f26('0x34')]['filter']+'%'};return _0x5c77b4;})});}_0x495341=_[_0x9f26('0x41')]({},_0x495341,_0x147f6d['options']);return db[_0x9f26('0x5b')][_0x9f26('0x1b')]({'where':_0x495341[_0x9f26('0x3f')]})[_0x9f26('0x23')](function(_0x14301a){_0x16d8ca[_0x9f26('0x1b')]=_0x14301a;if(_0x147f6d['query'][_0x9f26('0x43')]){_0x495341[_0x9f26('0x44')]=[{'all':!![]}];}return db[_0x9f26('0x5b')]['findAll'](_0x495341);})[_0x9f26('0x23')](function(_0x10182){_0x16d8ca[_0x9f26('0x46')]=_0x10182;return _0x16d8ca;});}})['then'](respondWithFilteredResult(_0x3e9309,_0x495341))[_0x9f26('0x47')](handleError(_0x3e9309,null));};exports[_0x9f26('0x5d')]=function(_0x265bfe,_0x4cd276,_0xca1075){var _0x191c8d={'raw':!![],'where':{}};var _0x362da3={};var _0x5b6383={'count':0x0,'rows':[]};return db['Campaign']['findOne']({'where':{'id':_0x265bfe['params']['id']}})[_0x9f26('0x23')](handleEntityNotFound(_0x4cd276,null))[_0x9f26('0x23')](function(_0x3a78cc){if(_0x3a78cc){_0x362da3[_0x9f26('0x33')]=_['keys'](db[_0x9f26('0x5e')][_0x9f26('0x2f')]);_0x362da3['query']=_[_0x9f26('0x35')](_0x265bfe[_0x9f26('0x34')]);_0x362da3[_0x9f26('0x36')]=_[_0x9f26('0x37')](_0x362da3[_0x9f26('0x33')],_0x362da3[_0x9f26('0x34')]);_0x191c8d['attributes']=_[_0x9f26('0x37')](_0x362da3[_0x9f26('0x33')],qs[_0x9f26('0x38')](_0x265bfe['query'][_0x9f26('0x38')]));_0x191c8d['attributes']=_0x191c8d[_0x9f26('0x39')]['length']?_0x191c8d[_0x9f26('0x39')]:_0x362da3[_0x9f26('0x33')];if(!_0x265bfe[_0x9f26('0x34')][_0x9f26('0x3b')](_0x9f26('0x3c'))){_0x191c8d[_0x9f26('0x1c')]=qs[_0x9f26('0x1c')](_0x265bfe[_0x9f26('0x34')]['limit']);_0x191c8d['offset']=qs[_0x9f26('0x19')](_0x265bfe[_0x9f26('0x34')]['offset']);}_0x191c8d[_0x9f26('0x3d')]=qs[_0x9f26('0x3e')](_0x265bfe[_0x9f26('0x34')][_0x9f26('0x3e')]);_0x191c8d[_0x9f26('0x3f')]=qs[_0x9f26('0x36')](_[_0x9f26('0x40')](_0x265bfe[_0x9f26('0x34')],_0x362da3['filters']));_0x191c8d['where'][_0x9f26('0x58')]=_0x3a78cc['id'];if(_0x265bfe['query']['filter']){_0x191c8d[_0x9f26('0x3f')]=_[_0x9f26('0x41')](_0x191c8d[_0x9f26('0x3f')],{'$or':_[_0x9f26('0x2d')](_0x191c8d[_0x9f26('0x39')],function(_0x4d2719){var _0x261a04={};_0x261a04[_0x4d2719]={'$like':'%'+_0x265bfe['query'][_0x9f26('0x5c')]+'%'};return _0x261a04;})});}_0x191c8d=_[_0x9f26('0x41')]({},_0x191c8d,_0x265bfe[_0x9f26('0x42')]);return db[_0x9f26('0x5e')]['count']({'where':_0x191c8d[_0x9f26('0x3f')]})[_0x9f26('0x23')](function(_0x595f35){_0x5b6383['count']=_0x595f35;if(_0x265bfe[_0x9f26('0x34')][_0x9f26('0x43')]){_0x191c8d[_0x9f26('0x44')]=[{'all':!![]}];}return db['CmHopperFinal'][_0x9f26('0x45')](_0x191c8d);})[_0x9f26('0x23')](function(_0x16c281){_0x5b6383[_0x9f26('0x46')]=_0x16c281;return _0x5b6383;});}})[_0x9f26('0x23')](respondWithFilteredResult(_0x4cd276,_0x191c8d))['catch'](handleError(_0x4cd276,null));};exports['getHopperBlacks']=function(_0x40e8b5,_0x10fca9,_0x12d63a){var _0x379749={'raw':!![],'where':{}};var _0x40b9fd={};var _0x121968={'count':0x0,'rows':[]};return db['Campaign'][_0x9f26('0x5a')]({'where':{'id':_0x40e8b5['params']['id']}})[_0x9f26('0x23')](handleEntityNotFound(_0x10fca9,null))[_0x9f26('0x23')](function(_0x22da40){if(_0x22da40){_0x40b9fd['model']=_[_0x9f26('0x35')](db[_0x9f26('0x5f')][_0x9f26('0x2f')]);_0x40b9fd['query']=_[_0x9f26('0x35')](_0x40e8b5[_0x9f26('0x34')]);_0x40b9fd[_0x9f26('0x36')]=_[_0x9f26('0x37')](_0x40b9fd[_0x9f26('0x33')],_0x40b9fd['query']);_0x379749[_0x9f26('0x39')]=_[_0x9f26('0x37')](_0x40b9fd[_0x9f26('0x33')],qs['fields'](_0x40e8b5[_0x9f26('0x34')][_0x9f26('0x38')]));_0x379749['attributes']=_0x379749[_0x9f26('0x39')][_0x9f26('0x3a')]?_0x379749[_0x9f26('0x39')]:_0x40b9fd[_0x9f26('0x33')];if(!_0x40e8b5['query']['hasOwnProperty']('nolimit')){_0x379749['limit']=qs[_0x9f26('0x1c')](_0x40e8b5[_0x9f26('0x34')][_0x9f26('0x1c')]);_0x379749[_0x9f26('0x19')]=qs[_0x9f26('0x19')](_0x40e8b5[_0x9f26('0x34')][_0x9f26('0x19')]);}_0x379749[_0x9f26('0x3d')]=qs['sort'](_0x40e8b5[_0x9f26('0x34')][_0x9f26('0x3e')]);_0x379749[_0x9f26('0x3f')]=qs[_0x9f26('0x36')](_[_0x9f26('0x40')](_0x40e8b5[_0x9f26('0x34')],_0x40b9fd['filters']));_0x379749[_0x9f26('0x3f')][_0x9f26('0x58')]=_0x22da40['id'];if(_0x40e8b5[_0x9f26('0x34')][_0x9f26('0x5c')]){_0x379749[_0x9f26('0x3f')]=_[_0x9f26('0x41')](_0x379749[_0x9f26('0x3f')],{'$or':_[_0x9f26('0x2d')](_0x379749[_0x9f26('0x39')],function(_0x369fcd){var _0x567a48={};_0x567a48[_0x369fcd]={'$like':'%'+_0x40e8b5[_0x9f26('0x34')][_0x9f26('0x5c')]+'%'};return _0x567a48;})});}_0x379749=_[_0x9f26('0x41')]({},_0x379749,_0x40e8b5[_0x9f26('0x42')]);return db['CmHopperBlack'][_0x9f26('0x1b')]({'where':_0x379749['where']})[_0x9f26('0x23')](function(_0x160367){_0x121968[_0x9f26('0x1b')]=_0x160367;if(_0x40e8b5['query']['includeAll']){_0x379749[_0x9f26('0x44')]=[{'all':!![]}];}return db[_0x9f26('0x5f')][_0x9f26('0x45')](_0x379749);})[_0x9f26('0x23')](function(_0x3d5f0d){_0x121968[_0x9f26('0x46')]=_0x3d5f0d;return _0x121968;});}})[_0x9f26('0x23')](respondWithFilteredResult(_0x10fca9,_0x379749))[_0x9f26('0x47')](handleError(_0x10fca9,null));};exports[_0x9f26('0x60')]=function(_0x3fdeb3,_0x136c4a,_0xffa336){var _0xa8cc10={};var _0x167a2f={};var _0x12be76;var _0x5bc39c;return db['Campaign']['findOne']({'where':{'id':_0x3fdeb3[_0x9f26('0x52')]['id']}})[_0x9f26('0x23')](handleEntityNotFound(_0x136c4a,null))[_0x9f26('0x23')](function(_0x1f4be5){if(_0x1f4be5){_0x12be76=_0x1f4be5;_0x167a2f[_0x9f26('0x33')]=_[_0x9f26('0x35')](db[_0x9f26('0x61')][_0x9f26('0x2f')]);_0x167a2f[_0x9f26('0x34')]=_['keys'](_0x3fdeb3[_0x9f26('0x34')]);_0x167a2f[_0x9f26('0x36')]=_['intersection'](_0x167a2f[_0x9f26('0x33')],_0x167a2f['query']);_0xa8cc10[_0x9f26('0x39')]=_['intersection'](_0x167a2f[_0x9f26('0x33')],qs[_0x9f26('0x38')](_0x3fdeb3['query'][_0x9f26('0x38')]));_0xa8cc10['attributes']=_0xa8cc10[_0x9f26('0x39')][_0x9f26('0x3a')]?_0xa8cc10[_0x9f26('0x39')]:_0x167a2f[_0x9f26('0x33')];_0xa8cc10[_0x9f26('0x3d')]=qs[_0x9f26('0x3e')](_0x3fdeb3[_0x9f26('0x34')]['sort']);_0xa8cc10[_0x9f26('0x3f')]=qs[_0x9f26('0x36')](_['pick'](_0x3fdeb3[_0x9f26('0x34')],_0x167a2f['filters']));if(_0x3fdeb3['query'][_0x9f26('0x5c')]){_0xa8cc10[_0x9f26('0x3f')]=_[_0x9f26('0x41')](_0xa8cc10[_0x9f26('0x3f')],{'$or':_[_0x9f26('0x2d')](_0xa8cc10[_0x9f26('0x39')],function(_0x4ec9e5){var _0x40d9b8={};_0x40d9b8[_0x4ec9e5]={'$like':'%'+_0x3fdeb3[_0x9f26('0x34')][_0x9f26('0x5c')]+'%'};return _0x40d9b8;})});}_0xa8cc10=_[_0x9f26('0x41')]({},_0xa8cc10,_0x3fdeb3['options']);return _0x12be76['getLists'](_0xa8cc10);}})[_0x9f26('0x23')](function(_0x176243){if(_0x176243){_0x5bc39c=_0x176243['length'];if(!_0x3fdeb3[_0x9f26('0x34')][_0x9f26('0x3b')](_0x9f26('0x3c'))){_0xa8cc10[_0x9f26('0x1c')]=qs[_0x9f26('0x1c')](_0x3fdeb3[_0x9f26('0x34')][_0x9f26('0x1c')]);_0xa8cc10['offset']=qs[_0x9f26('0x19')](_0x3fdeb3[_0x9f26('0x34')][_0x9f26('0x19')]);}return _0x12be76[_0x9f26('0x60')](_0xa8cc10);}})['then'](function(_0xe6d1d5){if(_0xe6d1d5){return _0xe6d1d5?{'count':_0x5bc39c,'rows':_0xe6d1d5}:null;}})[_0x9f26('0x23')](respondWithResult(_0x136c4a,null))[_0x9f26('0x47')](handleError(_0x136c4a,null));};exports[_0x9f26('0x62')]=function(_0x53c5cb,_0x46c0d6,_0x199287){var _0x12d09e,_0x5b3419;var _0x1a6551=[];var _0x23d8a3=moment()[_0x9f26('0x63')]('YYYY-MM-DD\x20HH:mm:ss');return db[_0x9f26('0x2e')][_0x9f26('0x48')]({'where':{'id':_0x53c5cb[_0x9f26('0x52')]['id']}})['then'](handleEntityNotFound(_0x46c0d6,null))[_0x9f26('0x23')](function(_0x434dd4){if(_0x434dd4){_0x5b3419=_0x434dd4;return _0x434dd4[_0x9f26('0x62')](_0x53c5cb[_0x9f26('0x56')][_0x9f26('0x64')],_[_0x9f26('0x53')](_0x53c5cb[_0x9f26('0x56')],[_0x9f26('0x64'),'id'])||{});}return null;})['spread'](function(_0x2ca1bf){var _0x2d2ce0;var _0x416300;_0x12d09e=_0x2ca1bf||[];var _0x241145=[];if(_0x2ca1bf){for(var _0x4a88e3=0x0;_0x4a88e3<_0x2ca1bf[_0x9f26('0x3a')];_0x4a88e3+=0x1){var _0x18429a=_0x2ca1bf[_0x4a88e3]['get']({'plain':!![]});_0x5b3419[_0x9f26('0x65')]=_0x53c5cb['body']['dialCheckDuplicateType']?_0x53c5cb[_0x9f26('0x56')][_0x9f26('0x65')]:_0x5b3419[_0x9f26('0x65')];switch(_0x5b3419['dialCheckDuplicateType']){case'always':_0x2d2ce0=squel[_0x9f26('0x66')]()[_0x9f26('0x67')](_0x9f26('0x68'))[_0x9f26('0x69')]([_0x9f26('0x6a'),_0x9f26('0x6b'),_0x9f26('0x6c'),_0x9f26('0x6d'),_0x9f26('0x58'),_0x9f26('0x54'),_0x9f26('0x55')],squel[_0x9f26('0x6e')]()[_0x9f26('0x6f')](_0x9f26('0x6a'),'phone')[_0x9f26('0x6f')](_0x9f26('0x70'),_0x9f26('0x6b'))[_0x9f26('0x6f')]('id','ContactId')[_0x9f26('0x6f')](_0x18429a['CmListId'][_0x9f26('0x71')](),'ListId')[_0x9f26('0x6f')](_0x53c5cb[_0x9f26('0x52')]['id']['toString'](),_0x9f26('0x58'))[_0x9f26('0x6f')]('\x27'+_0x23d8a3+'\x27',_0x9f26('0x54'))[_0x9f26('0x6f')]('\x27'+_0x23d8a3+'\x27','updatedAt')[_0x9f26('0x72')](_0x9f26('0x73'))[_0x9f26('0x3f')]('deletedAt\x20IS\x20NULL')['where'](_0x9f26('0x74'),_0x18429a[_0x9f26('0x75')]['toString']())[_0x9f26('0x3f')](_0x9f26('0x76'))[_0x9f26('0x3f')](_0x9f26('0x77'),squel['select']()[_0x9f26('0x6f')](_0x9f26('0x78'))['from']('cm_hopper_final')[_0x9f26('0x3f')](_0x9f26('0x79'),_0x53c5cb[_0x9f26('0x52')]['id'][_0x9f26('0x71')]()))[_0x9f26('0x3f')](_0x9f26('0x77'),squel[_0x9f26('0x6e')]()[_0x9f26('0x6f')](_0x9f26('0x7a'))[_0x9f26('0x72')](_0x9f26('0x68'))['where'](_0x9f26('0x79'),_0x53c5cb['params']['id']['toString']())))[_0x9f26('0x71')]();break;case _0x9f26('0x7b'):_0x2d2ce0=squel[_0x9f26('0x66')]()['into'](_0x9f26('0x68'))[_0x9f26('0x69')](['phone','scheduledAt',_0x9f26('0x6c'),'ListId','CampaignId',_0x9f26('0x54'),_0x9f26('0x55')],squel[_0x9f26('0x6e')]()[_0x9f26('0x6f')]('phone',_0x9f26('0x6a'))[_0x9f26('0x6f')](_0x9f26('0x70'),_0x9f26('0x6b'))[_0x9f26('0x6f')]('id','ContactId')[_0x9f26('0x6f')](_0x18429a[_0x9f26('0x75')][_0x9f26('0x71')](),_0x9f26('0x6d'))[_0x9f26('0x6f')](_0x53c5cb[_0x9f26('0x52')]['id'][_0x9f26('0x71')](),_0x9f26('0x58'))[_0x9f26('0x6f')]('\x27'+_0x23d8a3+'\x27',_0x9f26('0x54'))[_0x9f26('0x6f')]('\x27'+_0x23d8a3+'\x27',_0x9f26('0x55'))[_0x9f26('0x72')]('cm_contacts')[_0x9f26('0x3f')](_0x9f26('0x7c'))['where'](_0x9f26('0x74'),_0x18429a['CmListId'][_0x9f26('0x71')]())[_0x9f26('0x3f')](_0x9f26('0x76'))[_0x9f26('0x3f')](_0x9f26('0x77'),squel[_0x9f26('0x6e')]()['field'](_0x9f26('0x7a'))[_0x9f26('0x72')]('cm_hopper')[_0x9f26('0x3f')](_0x9f26('0x79'),_0x53c5cb[_0x9f26('0x52')]['id'][_0x9f26('0x71')]())))[_0x9f26('0x71')]();break;default:_0x2d2ce0=squel[_0x9f26('0x66')]()['into'](_0x9f26('0x68'))[_0x9f26('0x69')]([_0x9f26('0x6a'),_0x9f26('0x6b'),_0x9f26('0x6c'),'ListId',_0x9f26('0x58'),_0x9f26('0x54'),_0x9f26('0x55')],squel[_0x9f26('0x6e')]()[_0x9f26('0x6f')](_0x9f26('0x6a'),'phone')['field'](_0x9f26('0x70'),_0x9f26('0x6b'))[_0x9f26('0x6f')]('id','ContactId')['field'](_0x18429a[_0x9f26('0x75')][_0x9f26('0x71')](),_0x9f26('0x6d'))[_0x9f26('0x6f')](_0x53c5cb[_0x9f26('0x52')]['id'][_0x9f26('0x71')](),_0x9f26('0x58'))[_0x9f26('0x6f')]('\x27'+_0x23d8a3+'\x27',_0x9f26('0x54'))[_0x9f26('0x6f')]('\x27'+_0x23d8a3+'\x27',_0x9f26('0x55'))[_0x9f26('0x72')](_0x9f26('0x73'))[_0x9f26('0x3f')](_0x9f26('0x7c'))[_0x9f26('0x3f')](_0x9f26('0x74'),_0x18429a[_0x9f26('0x75')][_0x9f26('0x71')]())[_0x9f26('0x3f')](_0x9f26('0x76')))['toString']();}_0x416300=squel[_0x9f26('0x66')]()[_0x9f26('0x67')](_0x9f26('0x7d'))[_0x9f26('0x69')]([_0x9f26('0x7e'),_0x9f26('0x6b'),_0x9f26('0x6a'),_0x9f26('0x7f'),_0x9f26('0x54'),_0x9f26('0x55')],squel['select']()[_0x9f26('0x6f')](_0x9f26('0x80'),'id')[_0x9f26('0x6f')](_0x9f26('0x70'),_0x9f26('0x6b'))['field'](_0x9f26('0x81'),_0x9f26('0x6a'))['field'](_0x9f26('0x82'),_0x9f26('0x7f'))[_0x9f26('0x6f')]('\x27'+_0x23d8a3+'\x27',_0x9f26('0x54'))['field']('\x27'+_0x23d8a3+'\x27',_0x9f26('0x55'))[_0x9f26('0x72')](_0x9f26('0x83'),'ci')[_0x9f26('0x84')]('cm_hopper','h',_0x9f26('0x85'))[_0x9f26('0x3f')](_0x9f26('0x86'),_0x18429a[_0x9f26('0x75')][_0x9f26('0x71')]())[_0x9f26('0x3f')](_0x9f26('0x87'),_0x53c5cb[_0x9f26('0x52')]['id'][_0x9f26('0x71')]())[_0x9f26('0x3f')](_0x9f26('0x88'),_0x23d8a3))['toString']();_0x241145['push'](db[_0x9f26('0x89')][_0x9f26('0x34')](_0x2d2ce0));_0x1a6551[_0x9f26('0x8a')](db[_0x9f26('0x89')][_0x9f26('0x34')](_0x416300));}return BPromise[_0x9f26('0x8b')](_0x241145);}})[_0x9f26('0x23')](function(){return BPromise['all'](_0x1a6551);})['then'](function(){return _0x12d09e;})[_0x9f26('0x23')](respondWithResult(_0x46c0d6,null))['catch'](handleError(_0x46c0d6,null));};exports[_0x9f26('0x8c')]=function(_0x52e353,_0x5da317,_0x430476){return db['Campaign'][_0x9f26('0x48')]({'where':{'id':_0x52e353[_0x9f26('0x52')]['id']}})[_0x9f26('0x23')](handleEntityNotFound(_0x5da317,null))[_0x9f26('0x23')](function(_0x571e36){if(_0x571e36){return _0x571e36['removeLists'](_0x52e353[_0x9f26('0x34')][_0x9f26('0x64')]);}})[_0x9f26('0x23')](function(_0x44e8ee){if(_0x44e8ee){return db['CmHopper'][_0x9f26('0x24')]({'where':{'ListId':_0x52e353[_0x9f26('0x34')][_0x9f26('0x64')],'CampaignId':_0x52e353[_0x9f26('0x52')]['id']}})['then'](function(){return _0x44e8ee;});}})[_0x9f26('0x23')](respondWithStatusCode(_0x5da317,null))[_0x9f26('0x47')](handleError(_0x5da317,null));};exports[_0x9f26('0x8d')]=function(_0x161591,_0x42b360,_0x1f8191){var _0x34d7f5={};var _0x275450={};var _0x5704d1;var _0x48d436;return db['Campaign'][_0x9f26('0x5a')]({'where':{'id':_0x161591[_0x9f26('0x52')]['id']}})[_0x9f26('0x23')](handleEntityNotFound(_0x42b360,null))[_0x9f26('0x23')](function(_0x37a50e){if(_0x37a50e){_0x5704d1=_0x37a50e;_0x275450[_0x9f26('0x33')]=_[_0x9f26('0x35')](db['CmList'][_0x9f26('0x2f')]);_0x275450['query']=_['keys'](_0x161591[_0x9f26('0x34')]);_0x275450['filters']=_[_0x9f26('0x37')](_0x275450[_0x9f26('0x33')],_0x275450[_0x9f26('0x34')]);_0x34d7f5['attributes']=_[_0x9f26('0x37')](_0x275450['model'],qs['fields'](_0x161591[_0x9f26('0x34')][_0x9f26('0x38')]));_0x34d7f5['attributes']=_0x34d7f5[_0x9f26('0x39')][_0x9f26('0x3a')]?_0x34d7f5[_0x9f26('0x39')]:_0x275450[_0x9f26('0x33')];_0x34d7f5[_0x9f26('0x3d')]=qs[_0x9f26('0x3e')](_0x161591['query'][_0x9f26('0x3e')]);_0x34d7f5[_0x9f26('0x3f')]=qs[_0x9f26('0x36')](_[_0x9f26('0x40')](_0x161591[_0x9f26('0x34')],_0x275450['filters']));if(_0x161591[_0x9f26('0x34')][_0x9f26('0x5c')]){_0x34d7f5['where']=_[_0x9f26('0x41')](_0x34d7f5[_0x9f26('0x3f')],{'$or':_[_0x9f26('0x2d')](_0x34d7f5[_0x9f26('0x39')],function(_0x27ee68){var _0x181ffb={};_0x181ffb[_0x27ee68]={'$like':'%'+_0x161591[_0x9f26('0x34')][_0x9f26('0x5c')]+'%'};return _0x181ffb;})});}_0x34d7f5=_[_0x9f26('0x41')]({},_0x34d7f5,_0x161591[_0x9f26('0x42')]);return _0x5704d1['getBlackLists'](_0x34d7f5);}})[_0x9f26('0x23')](function(_0x1a99e0){if(_0x1a99e0){_0x48d436=_0x1a99e0[_0x9f26('0x3a')];if(!_0x161591[_0x9f26('0x34')][_0x9f26('0x3b')](_0x9f26('0x3c'))){_0x34d7f5[_0x9f26('0x1c')]=qs['limit'](_0x161591['query'][_0x9f26('0x1c')]);_0x34d7f5[_0x9f26('0x19')]=qs[_0x9f26('0x19')](_0x161591[_0x9f26('0x34')][_0x9f26('0x19')]);}return _0x5704d1[_0x9f26('0x8d')](_0x34d7f5);}})[_0x9f26('0x23')](function(_0x58a6a8){if(_0x58a6a8){return _0x58a6a8?{'count':_0x48d436,'rows':_0x58a6a8}:null;}})[_0x9f26('0x23')](respondWithResult(_0x42b360,null))[_0x9f26('0x47')](handleError(_0x42b360,null));};exports[_0x9f26('0x8e')]=function(_0x4315c8,_0x1adcec,_0x33676b){var _0xbb3531,_0x3f880e;var _0x437a7c=[];var _0x1bf17b=moment()[_0x9f26('0x63')](_0x9f26('0x8f'));return db[_0x9f26('0x2e')][_0x9f26('0x48')]({'where':{'id':_0x4315c8[_0x9f26('0x52')]['id']}})[_0x9f26('0x23')](handleEntityNotFound(_0x1adcec,null))[_0x9f26('0x23')](function(_0x59ea7a){if(_0x59ea7a){_0x3f880e=_0x59ea7a;return _0x59ea7a[_0x9f26('0x8e')](_0x4315c8[_0x9f26('0x56')][_0x9f26('0x64')],_[_0x9f26('0x53')](_0x4315c8[_0x9f26('0x56')],[_0x9f26('0x64'),'id'])||{});}return null;})[_0x9f26('0x90')](function(_0x2e4ba9){var _0x451109;var _0x398950;_0xbb3531=_0x2e4ba9||[];var _0x2dec34=[];if(_0x2e4ba9){for(var _0x1e9320=0x0;_0x1e9320<_0x2e4ba9[_0x9f26('0x3a')];_0x1e9320+=0x1){var _0x5ba09f=_0x2e4ba9[_0x1e9320][_0x9f26('0x25')]({'plain':!![]});_0x451109=squel[_0x9f26('0x66')]()['into']('cm_hopper_black')[_0x9f26('0x69')]([_0x9f26('0x6a'),_0x9f26('0x6c'),_0x9f26('0x6d'),_0x9f26('0x58'),_0x9f26('0x54'),'updatedAt'],squel['select']()[_0x9f26('0x6f')](_0x9f26('0x6a'),'phone')[_0x9f26('0x6f')]('id',_0x9f26('0x6c'))['field'](_0x5ba09f['CmListId'][_0x9f26('0x71')](),_0x9f26('0x6d'))[_0x9f26('0x6f')](_0x4315c8[_0x9f26('0x52')]['id'][_0x9f26('0x71')](),_0x9f26('0x58'))[_0x9f26('0x6f')](_0x9f26('0x70'),_0x9f26('0x54'))[_0x9f26('0x6f')](_0x9f26('0x70'),_0x9f26('0x55'))[_0x9f26('0x72')](_0x9f26('0x73'))[_0x9f26('0x3f')](_0x9f26('0x7c'))['where'](_0x9f26('0x74'),_0x5ba09f[_0x9f26('0x75')][_0x9f26('0x71')]())[_0x9f26('0x3f')](_0x9f26('0x76')))[_0x9f26('0x71')]();_0x2dec34[_0x9f26('0x8a')](db[_0x9f26('0x89')][_0x9f26('0x34')](_0x451109));}return BPromise[_0x9f26('0x8b')](_0x2dec34);}})[_0x9f26('0x23')](function(){return _0xbb3531;})['then'](respondWithResult(_0x1adcec,null))[_0x9f26('0x47')](handleError(_0x1adcec,null));};exports[_0x9f26('0x91')]=function(_0x5560df,_0x21a298,_0x32d4ed){return db[_0x9f26('0x2e')][_0x9f26('0x48')]({'where':{'id':_0x5560df[_0x9f26('0x52')]['id']}})[_0x9f26('0x23')](handleEntityNotFound(_0x21a298,null))['then'](function(_0x3e09e9){if(_0x3e09e9){return _0x3e09e9[_0x9f26('0x91')](_0x5560df['query'][_0x9f26('0x64')]);}})[_0x9f26('0x23')](function(_0x233ce0){if(_0x233ce0){return db[_0x9f26('0x5f')][_0x9f26('0x24')]({'where':{'ListId':_0x5560df[_0x9f26('0x34')][_0x9f26('0x64')],'CampaignId':_0x5560df[_0x9f26('0x52')]['id']}})[_0x9f26('0x23')](function(){return _0x233ce0;});}})[_0x9f26('0x23')](respondWithStatusCode(_0x21a298,null))[_0x9f26('0x47')](handleError(_0x21a298,null));};
\ No newline at end of file
+var _0x887e=['getHopperBlacks','CmHopperBlack','getLists','CmList','addLists','format','YYYY-MM-DD\x20HH:mm:ss','spread','dialCheckDuplicateType','always','insert','cm_hopper','phone','scheduledAt','ContactId','ListId','select','field','NOW()','CmListId','toString','createdAt','from','cm_contacts','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','CampaignId\x20=\x20?','COALESCE(phone,\x27\x27)','onlyIfOpen','into','fromQuery','deletedAt\x20IS\x20NULL','cm_hopper_additional_phones','cmHopperId','OrderBy','ci.item','cm_contact_has_items','h.ListId\x20=\x20?','h.createdAt\x20=\x20?','push','sequelize','all','removeLists','ids','getBlackLists','addBlackLists','cm_hopper_black','removeBlackLists','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','sox','fs-extra','lodash','jsforce','desk.js','to-csv','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','end','status','undefined','limit','count','offset','json','apply','save','update','then','destroy','get','IvrCampaigns','UserProfileResource','error','name','send','index','Campaign','rawAttributes','fieldName','type','model','map','query','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','catch','show','params','length','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','clone','updatedAt','omit','findOne','CmHopper','order','CampaignId','CmHopperHistory','rows','CmHopperFinal'];(function(_0x28ee74,_0x289441){var _0x6cc80c=function(_0x16ee15){while(--_0x16ee15){_0x28ee74['push'](_0x28ee74['shift']());}};_0x6cc80c(++_0x289441);}(_0x887e,0x14d));var _0xe887=function(_0x488150,_0x1e0729){_0x488150=_0x488150-0x0;var _0x5739c6=_0x887e[_0x488150];return _0x5739c6;};'use strict';var emlformat=require(_0xe887('0x0'));var rimraf=require(_0xe887('0x1'));var zipdir=require(_0xe887('0x2'));var jsonpatch=require(_0xe887('0x3'));var rp=require(_0xe887('0x4'));var moment=require(_0xe887('0x5'));var BPromise=require(_0xe887('0x6'));var Mustache=require('mustache');var util=require(_0xe887('0x7'));var path=require('path');var sox=require(_0xe887('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe887('0x9'));var _=require(_0xe887('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xe887('0xb'));var deskjs=require(_0xe887('0xc'));var toCsv=require(_0xe887('0xd'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xe887('0xe'));var authService=require(_0xe887('0xf'));var qs=require(_0xe887('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xe887('0x11'));var logger=require(_0xe887('0x12'))(_0xe887('0x13'));var utils=require('../../config/utils');var config=require(_0xe887('0x14'));var licenseUtil=require(_0xe887('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x511fd1,_0x4367bf){_0x4367bf=_0x4367bf||0xcc;return function(_0x4211d8){if(_0x4211d8){return _0x511fd1[_0xe887('0x16')](_0x4367bf);}return _0x511fd1['status'](_0x4367bf)[_0xe887('0x17')]();};}function respondWithResult(_0x5032bf,_0x5a3c3c){_0x5a3c3c=_0x5a3c3c||0xc8;return function(_0x29edc2){if(_0x29edc2){return _0x5032bf[_0xe887('0x18')](_0x5a3c3c)['json'](_0x29edc2);}};}function respondWithFilteredResult(_0x345a6d,_0x5535db){return function(_0x8e6276){if(_0x8e6276){var _0x590a64=typeof _0x5535db['offset']===_0xe887('0x19')&&typeof _0x5535db[_0xe887('0x1a')]===_0xe887('0x19');var _0x42ddb4=_0x8e6276[_0xe887('0x1b')];var _0x5dc230=_0x590a64?0x0:_0x5535db[_0xe887('0x1c')];var _0x3349b5=_0x590a64?_0x8e6276[_0xe887('0x1b')]:_0x5535db[_0xe887('0x1c')]+_0x5535db['limit'];var _0x13b57f;if(_0x3349b5>=_0x42ddb4){_0x3349b5=_0x42ddb4;_0x13b57f=0xc8;}else{_0x13b57f=0xce;}_0x345a6d[_0xe887('0x18')](_0x13b57f);return _0x345a6d['set']('Content-Range',_0x5dc230+'-'+_0x3349b5+'/'+_0x42ddb4)[_0xe887('0x1d')](_0x8e6276);}return null;};}function patchUpdates(_0x36b892){return function(_0x2f6972){try{jsonpatch[_0xe887('0x1e')](_0x2f6972,_0x36b892,!![]);}catch(_0x38ab91){return BPromise['reject'](_0x38ab91);}return _0x2f6972[_0xe887('0x1f')]();};}function saveUpdates(_0x407df3,_0x4eebae){return function(_0x1d5582){if(_0x1d5582){return _0x1d5582[_0xe887('0x20')](_0x407df3)[_0xe887('0x21')](function(_0x4c1334){return _0x4c1334;});}return null;};}function removeEntity(_0x1624fa,_0xc12d64){return function(_0x18d176){if(_0x18d176){return _0x18d176[_0xe887('0x22')]()[_0xe887('0x21')](function(){var _0x2deba8=_0x18d176[_0xe887('0x23')]({'plain':!![]});var _0x4ece7f=_0xe887('0x24');return db[_0xe887('0x25')][_0xe887('0x22')]({'where':{'type':_0x4ece7f,'resourceId':_0x2deba8['id']}})[_0xe887('0x21')](function(){return _0x18d176;});})[_0xe887('0x21')](function(){_0x1624fa[_0xe887('0x18')](0xcc)[_0xe887('0x17')]();});}};}function handleEntityNotFound(_0x2a92af,_0x58cef9){return function(_0x3f3cc4){if(!_0x3f3cc4){_0x2a92af[_0xe887('0x16')](0x194);}return _0x3f3cc4;};}function handleError(_0x5db7a8,_0x447585){_0x447585=_0x447585||0x1f4;return function(_0x5b27ba){logger[_0xe887('0x26')](_0x5b27ba['stack']);if(_0x5b27ba[_0xe887('0x27')]){delete _0x5b27ba['name'];}_0x5db7a8[_0xe887('0x18')](_0x447585)[_0xe887('0x28')](_0x5b27ba);};}exports[_0xe887('0x29')]=function(_0x23e967,_0x458282){var _0x3d37cd={},_0x29ced9={},_0xf6bc9d={'count':0x0,'rows':[]};var _0x10081e=_['map'](db[_0xe887('0x2a')][_0xe887('0x2b')],function(_0x1afcd0){return{'name':_0x1afcd0[_0xe887('0x2c')],'type':_0x1afcd0[_0xe887('0x2d')]['key']};});_0x29ced9[_0xe887('0x2e')]=_[_0xe887('0x2f')](_0x10081e,'name');_0x29ced9[_0xe887('0x30')]=_[_0xe887('0x31')](_0x23e967[_0xe887('0x30')]);_0x29ced9[_0xe887('0x32')]=_[_0xe887('0x33')](_0x29ced9[_0xe887('0x2e')],_0x29ced9['query']);_0x3d37cd['attributes']=_[_0xe887('0x33')](_0x29ced9[_0xe887('0x2e')],qs[_0xe887('0x34')](_0x23e967[_0xe887('0x30')][_0xe887('0x34')]));_0x3d37cd[_0xe887('0x35')]=_0x3d37cd[_0xe887('0x35')]['length']?_0x3d37cd[_0xe887('0x35')]:_0x29ced9[_0xe887('0x2e')];if(!_0x23e967[_0xe887('0x30')][_0xe887('0x36')](_0xe887('0x37'))){_0x3d37cd['limit']=qs['limit'](_0x23e967[_0xe887('0x30')][_0xe887('0x1a')]);_0x3d37cd[_0xe887('0x1c')]=qs[_0xe887('0x1c')](_0x23e967[_0xe887('0x30')][_0xe887('0x1c')]);}_0x3d37cd['order']=qs[_0xe887('0x38')](_0x23e967[_0xe887('0x30')][_0xe887('0x38')]);_0x3d37cd[_0xe887('0x39')]=qs[_0xe887('0x32')](_[_0xe887('0x3a')](_0x23e967['query'],_0x29ced9[_0xe887('0x32')]),_0x10081e);if(_0x23e967['query'][_0xe887('0x3b')]){_0x3d37cd[_0xe887('0x39')]=_['merge'](_0x3d37cd['where'],{'$or':_[_0xe887('0x2f')](_0x10081e,function(_0x3d7a37){if(_0x3d7a37[_0xe887('0x2d')]!==_0xe887('0x3c')){var _0xff76e6={};_0xff76e6[_0x3d7a37[_0xe887('0x27')]]={'$like':'%'+_0x23e967[_0xe887('0x30')][_0xe887('0x3b')]+'%'};return _0xff76e6;}})});}_0x3d37cd=_[_0xe887('0x3d')]({},_0x3d37cd,_0x23e967[_0xe887('0x3e')]);var _0x37d524={'where':_0x3d37cd['where']};return db[_0xe887('0x2a')][_0xe887('0x1b')](_0x37d524)[_0xe887('0x21')](function(_0x5204cf){_0xf6bc9d['count']=_0x5204cf;if(_0x23e967[_0xe887('0x30')][_0xe887('0x3f')]){_0x3d37cd[_0xe887('0x40')]=[{'all':!![]}];}return db[_0xe887('0x2a')][_0xe887('0x41')](_0x3d37cd);})[_0xe887('0x21')](function(_0x242073){_0xf6bc9d['rows']=_0x242073;return _0xf6bc9d;})[_0xe887('0x21')](respondWithFilteredResult(_0x458282,_0x3d37cd))[_0xe887('0x42')](handleError(_0x458282,null));};exports[_0xe887('0x43')]=function(_0x402db6,_0x121f47){var _0x841a3c={'raw':![],'where':{'id':_0x402db6[_0xe887('0x44')]['id']}},_0x336e03={};_0x336e03[_0xe887('0x2e')]=_[_0xe887('0x31')](db['Campaign'][_0xe887('0x2b')]);_0x336e03['query']=_[_0xe887('0x31')](_0x402db6[_0xe887('0x30')]);_0x336e03[_0xe887('0x32')]=_[_0xe887('0x33')](_0x336e03[_0xe887('0x2e')],_0x336e03['query']);_0x841a3c[_0xe887('0x35')]=_['intersection'](_0x336e03[_0xe887('0x2e')],qs[_0xe887('0x34')](_0x402db6['query'][_0xe887('0x34')]));_0x841a3c[_0xe887('0x35')]=_0x841a3c[_0xe887('0x35')][_0xe887('0x45')]?_0x841a3c[_0xe887('0x35')]:_0x336e03[_0xe887('0x2e')];if(_0x402db6[_0xe887('0x30')][_0xe887('0x3f')]){_0x841a3c['include']=[{'all':!![]}];}_0x841a3c=_[_0xe887('0x3d')]({},_0x841a3c,_0x402db6[_0xe887('0x3e')]);return db[_0xe887('0x2a')][_0xe887('0x46')](_0x841a3c)['then'](handleEntityNotFound(_0x121f47,null))[_0xe887('0x21')](respondWithResult(_0x121f47,null))[_0xe887('0x42')](handleError(_0x121f47,null));};exports['create']=function(_0x2e3dd4,_0x49b17f){return db['Campaign'][_0xe887('0x47')](_0x2e3dd4[_0xe887('0x48')],{})[_0xe887('0x21')](function(_0x59cade){var _0x39f0bd=_0x2e3dd4[_0xe887('0x49')][_0xe887('0x23')]({'plain':!![]});if(!_0x39f0bd)throw new Error(_0xe887('0x4a'));if(_0x39f0bd[_0xe887('0x4b')]==='user'){var _0x1ae707=_0x59cade[_0xe887('0x23')]({'plain':!![]});var _0x1fc669=_0xe887('0x24');return db[_0xe887('0x4c')][_0xe887('0x46')]({'where':{'name':_0x1fc669,'userProfileId':_0x39f0bd[_0xe887('0x4d')]},'raw':!![]})['then'](function(_0x424d2d){if(_0x424d2d&&_0x424d2d[_0xe887('0x4e')]===0x0){return db[_0xe887('0x25')]['create']({'name':_0x1ae707[_0xe887('0x27')],'resourceId':_0x1ae707['id'],'type':_0x424d2d[_0xe887('0x27')],'sectionId':_0x424d2d['id']},{})[_0xe887('0x21')](function(){return _0x59cade;});}else{return _0x59cade;}})[_0xe887('0x42')](function(_0x54fce2){logger[_0xe887('0x26')](_0xe887('0x4f'),_0x54fce2);throw _0x54fce2;});}return _0x59cade;})[_0xe887('0x21')](respondWithResult(_0x49b17f,0xc9))[_0xe887('0x42')](handleError(_0x49b17f,null));};exports[_0xe887('0x50')]=function(_0x1255f2,_0x41ede7){var _0x34fdfc={'where':{'id':_0x1255f2[_0xe887('0x44')]['id']}},_0x478bef={};_0x478bef[_0xe887('0x2e')]=_[_0xe887('0x31')](db[_0xe887('0x2a')][_0xe887('0x2b')]);_0x34fdfc[_0xe887('0x35')]=_[_0xe887('0x33')](_0x478bef[_0xe887('0x2e')],qs['fields'](_0x1255f2[_0xe887('0x30')][_0xe887('0x34')]));_0x34fdfc[_0xe887('0x35')]=_0x34fdfc['attributes'][_0xe887('0x45')]?_0x34fdfc[_0xe887('0x35')]:_0x478bef['model'];if(_0x1255f2[_0xe887('0x30')][_0xe887('0x3f')]){_0x34fdfc[_0xe887('0x40')]=[{'all':!![]}];}_0x34fdfc=_[_0xe887('0x3d')]({},_0x34fdfc,_0x1255f2[_0xe887('0x3e')]);return db['Campaign'][_0xe887('0x46')](_0x34fdfc)['then'](handleEntityNotFound(_0x41ede7,null))[_0xe887('0x21')](function(_0x223fd8){if(_0x223fd8){var _0x236f0a=_0x223fd8[_0xe887('0x23')]({'plain':!![]});_0x236f0a=qs['omit'](_0x236f0a,['id','createdAt',_0xe887('0x51')]);_0x1255f2[_0xe887('0x48')]=_[_0xe887('0x52')](_0x1255f2[_0xe887('0x48')],['id','createdAt',_0xe887('0x51')]);return db[_0xe887('0x2a')][_0xe887('0x47')](_['merge'](_0x236f0a,_0x1255f2[_0xe887('0x48')]),{'include':_0x1255f2[_0xe887('0x30')][_0xe887('0x3f')]?[{'all':!![]}]:undefined})[_0xe887('0x21')](function(_0x4db7c3){var _0x1d1cf1=_0x1255f2[_0xe887('0x49')]['get']({'plain':!![]});if(!_0x1d1cf1)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1d1cf1[_0xe887('0x4b')]==='user'){var _0x3beb21=_0x4db7c3['get']({'plain':!![]});var _0x22e7f4=_0xe887('0x24');return db[_0xe887('0x4c')]['find']({'where':{'name':_0x22e7f4,'userProfileId':_0x1d1cf1[_0xe887('0x4d')]},'raw':!![]})[_0xe887('0x21')](function(_0x23fc21){if(_0x23fc21&&_0x23fc21[_0xe887('0x4e')]===0x0){return db[_0xe887('0x25')][_0xe887('0x47')]({'name':_0x3beb21[_0xe887('0x27')],'resourceId':_0x3beb21['id'],'type':_0x23fc21[_0xe887('0x27')],'sectionId':_0x23fc21['id']},{})[_0xe887('0x21')](function(){return _0x4db7c3;});}else{return _0x4db7c3;}})[_0xe887('0x42')](function(_0x5eae63){logger[_0xe887('0x26')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5eae63);throw _0x5eae63;});}return _0x4db7c3;});}})[_0xe887('0x21')](respondWithResult(_0x41ede7,0xc9))[_0xe887('0x42')](handleError(_0x41ede7,null));};exports[_0xe887('0x20')]=function(_0x59dee8,_0x3945be){if(_0x59dee8[_0xe887('0x48')]['id']){delete _0x59dee8[_0xe887('0x48')]['id'];}return db[_0xe887('0x2a')][_0xe887('0x46')]({'where':{'id':_0x59dee8[_0xe887('0x44')]['id']}})[_0xe887('0x21')](handleEntityNotFound(_0x3945be,null))[_0xe887('0x21')](saveUpdates(_0x59dee8[_0xe887('0x48')],null))[_0xe887('0x21')](respondWithResult(_0x3945be,null))['catch'](handleError(_0x3945be,null));};exports[_0xe887('0x22')]=function(_0x418336,_0x54cfd5){return db[_0xe887('0x2a')][_0xe887('0x46')]({'where':{'id':_0x418336['params']['id']}})['then'](handleEntityNotFound(_0x54cfd5,null))['then'](removeEntity(_0x54cfd5,null))['catch'](handleError(_0x54cfd5,null));};exports['getHoppers']=function(_0x4875e7,_0x15ed1f,_0x2cf3b2){var _0xca52fc={'raw':!![],'where':{}};var _0x673300={};var _0x5244af={'count':0x0,'rows':[]};return db[_0xe887('0x2a')][_0xe887('0x53')]({'where':{'id':_0x4875e7[_0xe887('0x44')]['id']}})[_0xe887('0x21')](handleEntityNotFound(_0x15ed1f,null))[_0xe887('0x21')](function(_0x64576b){if(_0x64576b){_0x673300['model']=_[_0xe887('0x31')](db[_0xe887('0x54')][_0xe887('0x2b')]);_0x673300[_0xe887('0x30')]=_['keys'](_0x4875e7['query']);_0x673300['filters']=_['intersection'](_0x673300[_0xe887('0x2e')],_0x673300[_0xe887('0x30')]);_0xca52fc[_0xe887('0x35')]=_['intersection'](_0x673300[_0xe887('0x2e')],qs['fields'](_0x4875e7[_0xe887('0x30')]['fields']));_0xca52fc[_0xe887('0x35')]=_0xca52fc['attributes']['length']?_0xca52fc['attributes']:_0x673300[_0xe887('0x2e')];if(!_0x4875e7[_0xe887('0x30')][_0xe887('0x36')](_0xe887('0x37'))){_0xca52fc[_0xe887('0x1a')]=qs['limit'](_0x4875e7[_0xe887('0x30')][_0xe887('0x1a')]);_0xca52fc[_0xe887('0x1c')]=qs[_0xe887('0x1c')](_0x4875e7['query']['offset']);}_0xca52fc[_0xe887('0x55')]=qs[_0xe887('0x38')](_0x4875e7[_0xe887('0x30')][_0xe887('0x38')]);_0xca52fc[_0xe887('0x39')]=qs['filters'](_['pick'](_0x4875e7[_0xe887('0x30')],_0x673300[_0xe887('0x32')]));_0xca52fc[_0xe887('0x39')][_0xe887('0x56')]=_0x64576b['id'];if(_0x4875e7[_0xe887('0x30')][_0xe887('0x3b')]){_0xca52fc[_0xe887('0x39')]=_[_0xe887('0x3d')](_0xca52fc['where'],{'$or':_['map'](_0xca52fc[_0xe887('0x35')],function(_0x3b0f1c){var _0x1cd180={};_0x1cd180[_0x3b0f1c]={'$like':'%'+_0x4875e7[_0xe887('0x30')][_0xe887('0x3b')]+'%'};return _0x1cd180;})});}_0xca52fc=_[_0xe887('0x3d')]({},_0xca52fc,_0x4875e7[_0xe887('0x3e')]);return db['CmHopper'][_0xe887('0x1b')]({'where':_0xca52fc[_0xe887('0x39')]})[_0xe887('0x21')](function(_0x3f7018){_0x5244af[_0xe887('0x1b')]=_0x3f7018;if(_0x4875e7[_0xe887('0x30')][_0xe887('0x3f')]){_0xca52fc[_0xe887('0x40')]=[{'all':!![]}];}return db[_0xe887('0x54')]['findAll'](_0xca52fc);})['then'](function(_0x568be5){_0x5244af['rows']=_0x568be5;return _0x5244af;});}})[_0xe887('0x21')](respondWithFilteredResult(_0x15ed1f,_0xca52fc))[_0xe887('0x42')](handleError(_0x15ed1f,null));};exports['getHopperHistories']=function(_0x5383b4,_0x36b823,_0x4736ce){var _0x2fca44={'raw':!![],'where':{}};var _0x3c8e0a={};var _0x21309d={'count':0x0,'rows':[]};return db[_0xe887('0x2a')][_0xe887('0x53')]({'where':{'id':_0x5383b4[_0xe887('0x44')]['id']}})[_0xe887('0x21')](handleEntityNotFound(_0x36b823,null))[_0xe887('0x21')](function(_0x596a2f){if(_0x596a2f){_0x3c8e0a['model']=_[_0xe887('0x31')](db['CmHopperHistory'][_0xe887('0x2b')]);_0x3c8e0a['query']=_[_0xe887('0x31')](_0x5383b4['query']);_0x3c8e0a[_0xe887('0x32')]=_[_0xe887('0x33')](_0x3c8e0a[_0xe887('0x2e')],_0x3c8e0a[_0xe887('0x30')]);_0x2fca44['attributes']=_[_0xe887('0x33')](_0x3c8e0a['model'],qs[_0xe887('0x34')](_0x5383b4[_0xe887('0x30')][_0xe887('0x34')]));_0x2fca44[_0xe887('0x35')]=_0x2fca44[_0xe887('0x35')][_0xe887('0x45')]?_0x2fca44[_0xe887('0x35')]:_0x3c8e0a[_0xe887('0x2e')];if(!_0x5383b4[_0xe887('0x30')][_0xe887('0x36')](_0xe887('0x37'))){_0x2fca44[_0xe887('0x1a')]=qs[_0xe887('0x1a')](_0x5383b4[_0xe887('0x30')][_0xe887('0x1a')]);_0x2fca44['offset']=qs[_0xe887('0x1c')](_0x5383b4[_0xe887('0x30')][_0xe887('0x1c')]);}_0x2fca44[_0xe887('0x55')]=qs[_0xe887('0x38')](_0x5383b4['query']['sort']);_0x2fca44[_0xe887('0x39')]=qs[_0xe887('0x32')](_['pick'](_0x5383b4[_0xe887('0x30')],_0x3c8e0a[_0xe887('0x32')]));_0x2fca44[_0xe887('0x39')]['CampaignId']=_0x596a2f['id'];if(_0x5383b4[_0xe887('0x30')][_0xe887('0x3b')]){_0x2fca44[_0xe887('0x39')]=_[_0xe887('0x3d')](_0x2fca44['where'],{'$or':_[_0xe887('0x2f')](_0x2fca44[_0xe887('0x35')],function(_0x3dc4eb){var _0x4ae6ac={};_0x4ae6ac[_0x3dc4eb]={'$like':'%'+_0x5383b4[_0xe887('0x30')]['filter']+'%'};return _0x4ae6ac;})});}_0x2fca44=_[_0xe887('0x3d')]({},_0x2fca44,_0x5383b4[_0xe887('0x3e')]);return db[_0xe887('0x57')][_0xe887('0x1b')]({'where':_0x2fca44[_0xe887('0x39')]})[_0xe887('0x21')](function(_0x34a79f){_0x21309d[_0xe887('0x1b')]=_0x34a79f;if(_0x5383b4[_0xe887('0x30')][_0xe887('0x3f')]){_0x2fca44['include']=[{'all':!![]}];}return db[_0xe887('0x57')][_0xe887('0x41')](_0x2fca44);})[_0xe887('0x21')](function(_0x338ccb){_0x21309d[_0xe887('0x58')]=_0x338ccb;return _0x21309d;});}})[_0xe887('0x21')](respondWithFilteredResult(_0x36b823,_0x2fca44))[_0xe887('0x42')](handleError(_0x36b823,null));};exports['getHopperFinals']=function(_0x38acce,_0x2f2e82,_0x2f9c0c){var _0x11bc82={'raw':!![],'where':{}};var _0x2da575={};var _0x126d16={'count':0x0,'rows':[]};return db[_0xe887('0x2a')][_0xe887('0x53')]({'where':{'id':_0x38acce[_0xe887('0x44')]['id']}})[_0xe887('0x21')](handleEntityNotFound(_0x2f2e82,null))['then'](function(_0x194030){if(_0x194030){_0x2da575[_0xe887('0x2e')]=_[_0xe887('0x31')](db[_0xe887('0x59')][_0xe887('0x2b')]);_0x2da575[_0xe887('0x30')]=_[_0xe887('0x31')](_0x38acce[_0xe887('0x30')]);_0x2da575['filters']=_['intersection'](_0x2da575[_0xe887('0x2e')],_0x2da575['query']);_0x11bc82[_0xe887('0x35')]=_[_0xe887('0x33')](_0x2da575['model'],qs[_0xe887('0x34')](_0x38acce['query'][_0xe887('0x34')]));_0x11bc82['attributes']=_0x11bc82['attributes'][_0xe887('0x45')]?_0x11bc82[_0xe887('0x35')]:_0x2da575[_0xe887('0x2e')];if(!_0x38acce[_0xe887('0x30')][_0xe887('0x36')](_0xe887('0x37'))){_0x11bc82[_0xe887('0x1a')]=qs[_0xe887('0x1a')](_0x38acce[_0xe887('0x30')][_0xe887('0x1a')]);_0x11bc82[_0xe887('0x1c')]=qs[_0xe887('0x1c')](_0x38acce[_0xe887('0x30')]['offset']);}_0x11bc82[_0xe887('0x55')]=qs[_0xe887('0x38')](_0x38acce[_0xe887('0x30')][_0xe887('0x38')]);_0x11bc82[_0xe887('0x39')]=qs[_0xe887('0x32')](_[_0xe887('0x3a')](_0x38acce[_0xe887('0x30')],_0x2da575[_0xe887('0x32')]));_0x11bc82[_0xe887('0x39')][_0xe887('0x56')]=_0x194030['id'];if(_0x38acce[_0xe887('0x30')][_0xe887('0x3b')]){_0x11bc82['where']=_[_0xe887('0x3d')](_0x11bc82['where'],{'$or':_['map'](_0x11bc82[_0xe887('0x35')],function(_0x1a7a50){var _0x5a808a={};_0x5a808a[_0x1a7a50]={'$like':'%'+_0x38acce[_0xe887('0x30')][_0xe887('0x3b')]+'%'};return _0x5a808a;})});}_0x11bc82=_[_0xe887('0x3d')]({},_0x11bc82,_0x38acce['options']);return db['CmHopperFinal'][_0xe887('0x1b')]({'where':_0x11bc82[_0xe887('0x39')]})[_0xe887('0x21')](function(_0xa7f4c8){_0x126d16[_0xe887('0x1b')]=_0xa7f4c8;if(_0x38acce[_0xe887('0x30')][_0xe887('0x3f')]){_0x11bc82[_0xe887('0x40')]=[{'all':!![]}];}return db['CmHopperFinal'][_0xe887('0x41')](_0x11bc82);})[_0xe887('0x21')](function(_0x5698d4){_0x126d16[_0xe887('0x58')]=_0x5698d4;return _0x126d16;});}})[_0xe887('0x21')](respondWithFilteredResult(_0x2f2e82,_0x11bc82))[_0xe887('0x42')](handleError(_0x2f2e82,null));};exports[_0xe887('0x5a')]=function(_0x253265,_0x1dd751,_0x169919){var _0x365a26={'raw':!![],'where':{}};var _0x3beff9={};var _0x1098f1={'count':0x0,'rows':[]};return db[_0xe887('0x2a')][_0xe887('0x53')]({'where':{'id':_0x253265[_0xe887('0x44')]['id']}})[_0xe887('0x21')](handleEntityNotFound(_0x1dd751,null))[_0xe887('0x21')](function(_0x1c4cb4){if(_0x1c4cb4){_0x3beff9['model']=_[_0xe887('0x31')](db[_0xe887('0x5b')]['rawAttributes']);_0x3beff9[_0xe887('0x30')]=_[_0xe887('0x31')](_0x253265[_0xe887('0x30')]);_0x3beff9[_0xe887('0x32')]=_[_0xe887('0x33')](_0x3beff9['model'],_0x3beff9['query']);_0x365a26[_0xe887('0x35')]=_[_0xe887('0x33')](_0x3beff9[_0xe887('0x2e')],qs[_0xe887('0x34')](_0x253265[_0xe887('0x30')][_0xe887('0x34')]));_0x365a26[_0xe887('0x35')]=_0x365a26[_0xe887('0x35')][_0xe887('0x45')]?_0x365a26[_0xe887('0x35')]:_0x3beff9[_0xe887('0x2e')];if(!_0x253265[_0xe887('0x30')]['hasOwnProperty'](_0xe887('0x37'))){_0x365a26[_0xe887('0x1a')]=qs['limit'](_0x253265['query'][_0xe887('0x1a')]);_0x365a26['offset']=qs['offset'](_0x253265[_0xe887('0x30')][_0xe887('0x1c')]);}_0x365a26['order']=qs[_0xe887('0x38')](_0x253265[_0xe887('0x30')][_0xe887('0x38')]);_0x365a26[_0xe887('0x39')]=qs[_0xe887('0x32')](_[_0xe887('0x3a')](_0x253265['query'],_0x3beff9[_0xe887('0x32')]));_0x365a26['where'][_0xe887('0x56')]=_0x1c4cb4['id'];if(_0x253265[_0xe887('0x30')]['filter']){_0x365a26[_0xe887('0x39')]=_['merge'](_0x365a26[_0xe887('0x39')],{'$or':_[_0xe887('0x2f')](_0x365a26['attributes'],function(_0x16d95d){var _0xcef706={};_0xcef706[_0x16d95d]={'$like':'%'+_0x253265[_0xe887('0x30')]['filter']+'%'};return _0xcef706;})});}_0x365a26=_[_0xe887('0x3d')]({},_0x365a26,_0x253265['options']);return db[_0xe887('0x5b')][_0xe887('0x1b')]({'where':_0x365a26['where']})[_0xe887('0x21')](function(_0x29d4a6){_0x1098f1[_0xe887('0x1b')]=_0x29d4a6;if(_0x253265[_0xe887('0x30')][_0xe887('0x3f')]){_0x365a26[_0xe887('0x40')]=[{'all':!![]}];}return db[_0xe887('0x5b')][_0xe887('0x41')](_0x365a26);})['then'](function(_0x532bb7){_0x1098f1[_0xe887('0x58')]=_0x532bb7;return _0x1098f1;});}})[_0xe887('0x21')](respondWithFilteredResult(_0x1dd751,_0x365a26))[_0xe887('0x42')](handleError(_0x1dd751,null));};exports[_0xe887('0x5c')]=function(_0x212360,_0x51431a,_0xe0cff0){var _0x7c6f95={};var _0x49aa5e={};var _0x33bce3;var _0x2d411c;return db[_0xe887('0x2a')][_0xe887('0x53')]({'where':{'id':_0x212360[_0xe887('0x44')]['id']}})[_0xe887('0x21')](handleEntityNotFound(_0x51431a,null))[_0xe887('0x21')](function(_0x4dfe93){if(_0x4dfe93){_0x33bce3=_0x4dfe93;_0x49aa5e['model']=_[_0xe887('0x31')](db[_0xe887('0x5d')][_0xe887('0x2b')]);_0x49aa5e[_0xe887('0x30')]=_[_0xe887('0x31')](_0x212360['query']);_0x49aa5e['filters']=_['intersection'](_0x49aa5e[_0xe887('0x2e')],_0x49aa5e[_0xe887('0x30')]);_0x7c6f95[_0xe887('0x35')]=_[_0xe887('0x33')](_0x49aa5e[_0xe887('0x2e')],qs[_0xe887('0x34')](_0x212360['query'][_0xe887('0x34')]));_0x7c6f95[_0xe887('0x35')]=_0x7c6f95['attributes'][_0xe887('0x45')]?_0x7c6f95[_0xe887('0x35')]:_0x49aa5e[_0xe887('0x2e')];_0x7c6f95['order']=qs[_0xe887('0x38')](_0x212360['query']['sort']);_0x7c6f95[_0xe887('0x39')]=qs[_0xe887('0x32')](_[_0xe887('0x3a')](_0x212360[_0xe887('0x30')],_0x49aa5e[_0xe887('0x32')]));if(_0x212360[_0xe887('0x30')][_0xe887('0x3b')]){_0x7c6f95['where']=_['merge'](_0x7c6f95[_0xe887('0x39')],{'$or':_[_0xe887('0x2f')](_0x7c6f95['attributes'],function(_0x37a223){var _0x3d52f0={};_0x3d52f0[_0x37a223]={'$like':'%'+_0x212360['query'][_0xe887('0x3b')]+'%'};return _0x3d52f0;})});}_0x7c6f95=_[_0xe887('0x3d')]({},_0x7c6f95,_0x212360[_0xe887('0x3e')]);return _0x33bce3[_0xe887('0x5c')](_0x7c6f95);}})[_0xe887('0x21')](function(_0x5cbb53){if(_0x5cbb53){_0x2d411c=_0x5cbb53[_0xe887('0x45')];if(!_0x212360['query'][_0xe887('0x36')](_0xe887('0x37'))){_0x7c6f95[_0xe887('0x1a')]=qs[_0xe887('0x1a')](_0x212360[_0xe887('0x30')]['limit']);_0x7c6f95[_0xe887('0x1c')]=qs[_0xe887('0x1c')](_0x212360[_0xe887('0x30')][_0xe887('0x1c')]);}return _0x33bce3['getLists'](_0x7c6f95);}})['then'](function(_0x3e4aa3){if(_0x3e4aa3){return _0x3e4aa3?{'count':_0x2d411c,'rows':_0x3e4aa3}:null;}})['then'](respondWithResult(_0x51431a,null))['catch'](handleError(_0x51431a,null));};exports[_0xe887('0x5e')]=function(_0x3b3529,_0x8c0a91,_0x58de48){var _0x336aa2,_0x5865f7;var _0x37fb12=[];var _0x22e27e=moment()[_0xe887('0x5f')](_0xe887('0x60'));return db[_0xe887('0x2a')]['find']({'where':{'id':_0x3b3529['params']['id']}})[_0xe887('0x21')](handleEntityNotFound(_0x8c0a91,null))[_0xe887('0x21')](function(_0x8c17f5){if(_0x8c17f5){_0x5865f7=_0x8c17f5;return _0x8c17f5[_0xe887('0x5e')](_0x3b3529['body']['ids'],_[_0xe887('0x52')](_0x3b3529[_0xe887('0x48')],['ids','id'])||{});}return null;})[_0xe887('0x61')](function(_0x1071b6){var _0x48eb44;var _0x5d8199;_0x336aa2=_0x1071b6||[];var _0x1cb8f8=[];if(_0x1071b6){for(var _0x23505e=0x0;_0x23505e<_0x1071b6[_0xe887('0x45')];_0x23505e+=0x1){var _0x2b7d23=_0x1071b6[_0x23505e][_0xe887('0x23')]({'plain':!![]});_0x5865f7[_0xe887('0x62')]=_0x3b3529['body'][_0xe887('0x62')]?_0x3b3529[_0xe887('0x48')][_0xe887('0x62')]:_0x5865f7[_0xe887('0x62')];switch(_0x5865f7['dialCheckDuplicateType']){case _0xe887('0x63'):_0x48eb44=squel[_0xe887('0x64')]()['into'](_0xe887('0x65'))['fromQuery']([_0xe887('0x66'),_0xe887('0x67'),_0xe887('0x68'),_0xe887('0x69'),_0xe887('0x56'),'createdAt','updatedAt'],squel[_0xe887('0x6a')]()[_0xe887('0x6b')](_0xe887('0x66'),_0xe887('0x66'))[_0xe887('0x6b')](_0xe887('0x6c'),_0xe887('0x67'))[_0xe887('0x6b')]('id',_0xe887('0x68'))[_0xe887('0x6b')](_0x2b7d23[_0xe887('0x6d')]['toString'](),_0xe887('0x69'))[_0xe887('0x6b')](_0x3b3529[_0xe887('0x44')]['id'][_0xe887('0x6e')](),_0xe887('0x56'))[_0xe887('0x6b')]('\x27'+_0x22e27e+'\x27',_0xe887('0x6f'))['field']('\x27'+_0x22e27e+'\x27',_0xe887('0x51'))[_0xe887('0x70')](_0xe887('0x71'))[_0xe887('0x39')]('deletedAt\x20IS\x20NULL')[_0xe887('0x39')](_0xe887('0x72'),_0x2b7d23[_0xe887('0x6d')][_0xe887('0x6e')]())[_0xe887('0x39')](_0xe887('0x73'))[_0xe887('0x39')](_0xe887('0x74'),squel[_0xe887('0x6a')]()[_0xe887('0x6b')](_0xe887('0x75'))[_0xe887('0x70')](_0xe887('0x76'))['where'](_0xe887('0x77'),_0x3b3529[_0xe887('0x44')]['id'][_0xe887('0x6e')]()))[_0xe887('0x39')](_0xe887('0x74'),squel[_0xe887('0x6a')]()[_0xe887('0x6b')](_0xe887('0x78'))['from'](_0xe887('0x65'))['where'](_0xe887('0x77'),_0x3b3529['params']['id'][_0xe887('0x6e')]())))[_0xe887('0x6e')]();break;case _0xe887('0x79'):_0x48eb44=squel[_0xe887('0x64')]()[_0xe887('0x7a')]('cm_hopper')[_0xe887('0x7b')]([_0xe887('0x66'),_0xe887('0x67'),_0xe887('0x68'),_0xe887('0x69'),'CampaignId',_0xe887('0x6f'),_0xe887('0x51')],squel['select']()[_0xe887('0x6b')](_0xe887('0x66'),_0xe887('0x66'))[_0xe887('0x6b')](_0xe887('0x6c'),'scheduledAt')[_0xe887('0x6b')]('id',_0xe887('0x68'))[_0xe887('0x6b')](_0x2b7d23[_0xe887('0x6d')][_0xe887('0x6e')](),_0xe887('0x69'))[_0xe887('0x6b')](_0x3b3529[_0xe887('0x44')]['id']['toString'](),_0xe887('0x56'))[_0xe887('0x6b')]('\x27'+_0x22e27e+'\x27',_0xe887('0x6f'))[_0xe887('0x6b')]('\x27'+_0x22e27e+'\x27','updatedAt')[_0xe887('0x70')]('cm_contacts')['where']('deletedAt\x20IS\x20NULL')[_0xe887('0x39')](_0xe887('0x72'),_0x2b7d23['CmListId'][_0xe887('0x6e')]())['where'](_0xe887('0x73'))['where'](_0xe887('0x74'),squel[_0xe887('0x6a')]()[_0xe887('0x6b')](_0xe887('0x78'))[_0xe887('0x70')](_0xe887('0x65'))[_0xe887('0x39')](_0xe887('0x77'),_0x3b3529['params']['id'][_0xe887('0x6e')]())))[_0xe887('0x6e')]();break;default:_0x48eb44=squel[_0xe887('0x64')]()[_0xe887('0x7a')](_0xe887('0x65'))[_0xe887('0x7b')](['phone','scheduledAt',_0xe887('0x68'),'ListId',_0xe887('0x56'),'createdAt','updatedAt'],squel[_0xe887('0x6a')]()[_0xe887('0x6b')](_0xe887('0x66'),_0xe887('0x66'))[_0xe887('0x6b')]('NOW()',_0xe887('0x67'))[_0xe887('0x6b')]('id',_0xe887('0x68'))[_0xe887('0x6b')](_0x2b7d23[_0xe887('0x6d')][_0xe887('0x6e')](),_0xe887('0x69'))[_0xe887('0x6b')](_0x3b3529[_0xe887('0x44')]['id'][_0xe887('0x6e')](),_0xe887('0x56'))[_0xe887('0x6b')]('\x27'+_0x22e27e+'\x27',_0xe887('0x6f'))[_0xe887('0x6b')]('\x27'+_0x22e27e+'\x27',_0xe887('0x51'))[_0xe887('0x70')]('cm_contacts')[_0xe887('0x39')](_0xe887('0x7c'))[_0xe887('0x39')]('ListId\x20=\x20?',_0x2b7d23[_0xe887('0x6d')][_0xe887('0x6e')]())['where'](_0xe887('0x73')))['toString']();}_0x5d8199=squel[_0xe887('0x64')]()[_0xe887('0x7a')](_0xe887('0x7d'))['fromQuery']([_0xe887('0x7e'),_0xe887('0x67'),_0xe887('0x66'),_0xe887('0x7f'),_0xe887('0x6f'),_0xe887('0x51')],squel['select']()[_0xe887('0x6b')]('h.id','id')['field']('NOW()',_0xe887('0x67'))[_0xe887('0x6b')](_0xe887('0x80'),_0xe887('0x66'))[_0xe887('0x6b')]('ci.OrderBY',_0xe887('0x7f'))[_0xe887('0x6b')]('\x27'+_0x22e27e+'\x27','createdAt')[_0xe887('0x6b')]('\x27'+_0x22e27e+'\x27',_0xe887('0x51'))[_0xe887('0x70')](_0xe887('0x81'),'ci')['join'](_0xe887('0x65'),'h','h.ContactId\x20=\x20ci.CmContactId')[_0xe887('0x39')](_0xe887('0x82'),_0x2b7d23[_0xe887('0x6d')]['toString']())[_0xe887('0x39')]('h.CampaignId=?',_0x3b3529['params']['id'][_0xe887('0x6e')]())[_0xe887('0x39')](_0xe887('0x83'),_0x22e27e))['toString']();_0x1cb8f8[_0xe887('0x84')](db[_0xe887('0x85')][_0xe887('0x30')](_0x48eb44));_0x37fb12[_0xe887('0x84')](db['sequelize'][_0xe887('0x30')](_0x5d8199));}return BPromise[_0xe887('0x86')](_0x1cb8f8);}})[_0xe887('0x21')](function(){return BPromise[_0xe887('0x86')](_0x37fb12);})[_0xe887('0x21')](function(){return _0x336aa2;})[_0xe887('0x21')](respondWithResult(_0x8c0a91,null))[_0xe887('0x42')](handleError(_0x8c0a91,null));};exports[_0xe887('0x87')]=function(_0x262cc6,_0x4d456f,_0x1f34f4){return db[_0xe887('0x2a')][_0xe887('0x46')]({'where':{'id':_0x262cc6[_0xe887('0x44')]['id']}})[_0xe887('0x21')](handleEntityNotFound(_0x4d456f,null))[_0xe887('0x21')](function(_0x3ec0b8){if(_0x3ec0b8){return _0x3ec0b8[_0xe887('0x87')](_0x262cc6[_0xe887('0x30')][_0xe887('0x88')]);}})[_0xe887('0x21')](function(_0x1c662e){if(_0x1c662e){return db[_0xe887('0x54')][_0xe887('0x22')]({'where':{'ListId':_0x262cc6[_0xe887('0x30')][_0xe887('0x88')],'CampaignId':_0x262cc6[_0xe887('0x44')]['id']}})[_0xe887('0x21')](function(){return _0x1c662e;});}})['then'](respondWithStatusCode(_0x4d456f,null))[_0xe887('0x42')](handleError(_0x4d456f,null));};exports[_0xe887('0x89')]=function(_0x36ac14,_0x551fe4,_0x552b11){var _0x242a1a={};var _0x22802d={};var _0x27768e;var _0x18894;return db[_0xe887('0x2a')][_0xe887('0x53')]({'where':{'id':_0x36ac14['params']['id']}})[_0xe887('0x21')](handleEntityNotFound(_0x551fe4,null))[_0xe887('0x21')](function(_0x5e75a7){if(_0x5e75a7){_0x27768e=_0x5e75a7;_0x22802d[_0xe887('0x2e')]=_['keys'](db[_0xe887('0x5d')][_0xe887('0x2b')]);_0x22802d[_0xe887('0x30')]=_['keys'](_0x36ac14[_0xe887('0x30')]);_0x22802d[_0xe887('0x32')]=_[_0xe887('0x33')](_0x22802d[_0xe887('0x2e')],_0x22802d[_0xe887('0x30')]);_0x242a1a[_0xe887('0x35')]=_['intersection'](_0x22802d[_0xe887('0x2e')],qs[_0xe887('0x34')](_0x36ac14['query'][_0xe887('0x34')]));_0x242a1a[_0xe887('0x35')]=_0x242a1a[_0xe887('0x35')][_0xe887('0x45')]?_0x242a1a[_0xe887('0x35')]:_0x22802d[_0xe887('0x2e')];_0x242a1a['order']=qs[_0xe887('0x38')](_0x36ac14[_0xe887('0x30')][_0xe887('0x38')]);_0x242a1a['where']=qs['filters'](_[_0xe887('0x3a')](_0x36ac14[_0xe887('0x30')],_0x22802d[_0xe887('0x32')]));if(_0x36ac14['query'][_0xe887('0x3b')]){_0x242a1a[_0xe887('0x39')]=_[_0xe887('0x3d')](_0x242a1a[_0xe887('0x39')],{'$or':_['map'](_0x242a1a[_0xe887('0x35')],function(_0x404bfc){var _0x3f4464={};_0x3f4464[_0x404bfc]={'$like':'%'+_0x36ac14[_0xe887('0x30')]['filter']+'%'};return _0x3f4464;})});}_0x242a1a=_[_0xe887('0x3d')]({},_0x242a1a,_0x36ac14['options']);return _0x27768e[_0xe887('0x89')](_0x242a1a);}})[_0xe887('0x21')](function(_0x3cf935){if(_0x3cf935){_0x18894=_0x3cf935[_0xe887('0x45')];if(!_0x36ac14[_0xe887('0x30')][_0xe887('0x36')](_0xe887('0x37'))){_0x242a1a[_0xe887('0x1a')]=qs['limit'](_0x36ac14[_0xe887('0x30')]['limit']);_0x242a1a[_0xe887('0x1c')]=qs[_0xe887('0x1c')](_0x36ac14[_0xe887('0x30')][_0xe887('0x1c')]);}return _0x27768e[_0xe887('0x89')](_0x242a1a);}})['then'](function(_0xb63f3d){if(_0xb63f3d){return _0xb63f3d?{'count':_0x18894,'rows':_0xb63f3d}:null;}})[_0xe887('0x21')](respondWithResult(_0x551fe4,null))[_0xe887('0x42')](handleError(_0x551fe4,null));};exports[_0xe887('0x8a')]=function(_0x4e1faf,_0xf1c281,_0x5e1969){var _0x4d5854,_0x5d5076;var _0x413a8b=[];var _0x33efce=moment()[_0xe887('0x5f')](_0xe887('0x60'));return db[_0xe887('0x2a')][_0xe887('0x46')]({'where':{'id':_0x4e1faf[_0xe887('0x44')]['id']}})[_0xe887('0x21')](handleEntityNotFound(_0xf1c281,null))[_0xe887('0x21')](function(_0x15f796){if(_0x15f796){_0x5d5076=_0x15f796;return _0x15f796[_0xe887('0x8a')](_0x4e1faf[_0xe887('0x48')][_0xe887('0x88')],_[_0xe887('0x52')](_0x4e1faf[_0xe887('0x48')],[_0xe887('0x88'),'id'])||{});}return null;})[_0xe887('0x61')](function(_0xce8f28){var _0x5bfd7e;var _0x356924;_0x4d5854=_0xce8f28||[];var _0x5cf78c=[];if(_0xce8f28){for(var _0x58a255=0x0;_0x58a255<_0xce8f28[_0xe887('0x45')];_0x58a255+=0x1){var _0x4a4f68=_0xce8f28[_0x58a255][_0xe887('0x23')]({'plain':!![]});_0x5bfd7e=squel[_0xe887('0x64')]()[_0xe887('0x7a')](_0xe887('0x8b'))[_0xe887('0x7b')]([_0xe887('0x66'),'ContactId',_0xe887('0x69'),'CampaignId',_0xe887('0x6f'),_0xe887('0x51')],squel[_0xe887('0x6a')]()[_0xe887('0x6b')](_0xe887('0x66'),'phone')[_0xe887('0x6b')]('id','ContactId')[_0xe887('0x6b')](_0x4a4f68[_0xe887('0x6d')]['toString'](),_0xe887('0x69'))[_0xe887('0x6b')](_0x4e1faf[_0xe887('0x44')]['id'][_0xe887('0x6e')](),'CampaignId')['field']('NOW()',_0xe887('0x6f'))['field']('NOW()',_0xe887('0x51'))[_0xe887('0x70')](_0xe887('0x71'))[_0xe887('0x39')](_0xe887('0x7c'))[_0xe887('0x39')]('ListId\x20=\x20?',_0x4a4f68[_0xe887('0x6d')][_0xe887('0x6e')]())[_0xe887('0x39')](_0xe887('0x73')))[_0xe887('0x6e')]();_0x5cf78c[_0xe887('0x84')](db['sequelize'][_0xe887('0x30')](_0x5bfd7e));}return BPromise[_0xe887('0x86')](_0x5cf78c);}})[_0xe887('0x21')](function(){return _0x4d5854;})[_0xe887('0x21')](respondWithResult(_0xf1c281,null))[_0xe887('0x42')](handleError(_0xf1c281,null));};exports[_0xe887('0x8c')]=function(_0x208875,_0x3c4e4a,_0x49a899){return db[_0xe887('0x2a')]['find']({'where':{'id':_0x208875[_0xe887('0x44')]['id']}})['then'](handleEntityNotFound(_0x3c4e4a,null))[_0xe887('0x21')](function(_0x4f7b91){if(_0x4f7b91){return _0x4f7b91['removeBlackLists'](_0x208875['query']['ids']);}})[_0xe887('0x21')](function(_0x3474e0){if(_0x3474e0){return db[_0xe887('0x5b')][_0xe887('0x22')]({'where':{'ListId':_0x208875['query'][_0xe887('0x88')],'CampaignId':_0x208875[_0xe887('0x44')]['id']}})[_0xe887('0x21')](function(){return _0x3474e0;});}})[_0xe887('0x21')](respondWithStatusCode(_0x3c4e4a,null))['catch'](handleError(_0x3c4e4a,null));};
\ No newline at end of file
index 80030c4..6f0a423 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./campaign.attributes','exports','Campaign','campaigns','lodash','util'];(function(_0x13724c,_0x4f92b2){var _0x1866d0=function(_0x5e4628){while(--_0x5e4628){_0x13724c['push'](_0x13724c['shift']());}};_0x1866d0(++_0x4f92b2);}(_0x7a54,0x106));var _0x47a5=function(_0x3cef50,_0x3c5227){_0x3cef50=_0x3cef50-0x0;var _0x5a2bfb=_0x7a54[_0x3cef50];return _0x5a2bfb;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var logger=require(_0x47a5('0x2'))('api');var moment=require(_0x47a5('0x3'));var BPromise=require(_0x47a5('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x47a5('0x5'));var rimraf=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var attributes=require(_0x47a5('0x8'));module[_0x47a5('0x9')]=function(_0x545a97,_0x3d5629){return _0x545a97['define'](_0x47a5('0xa'),attributes,{'tableName':_0x47a5('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7a54=['../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./campaign.attributes','exports','Campaign','campaigns','lodash','util'];(function(_0x381961,_0x297382){var _0x1a2de0=function(_0x461330){while(--_0x461330){_0x381961['push'](_0x381961['shift']());}};_0x1a2de0(++_0x297382);}(_0x7a54,0x106));var _0x47a5=function(_0x3d09d6,_0xcd71b3){_0x3d09d6=_0x3d09d6-0x0;var _0x478e1a=_0x7a54[_0x3d09d6];return _0x478e1a;};'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 ed8e6d7..5e01950 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9234=['randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','then','info','request\x20sent','debug','Campaign,\x20%s,\x20%s,\x20%s','stringify','error','code','Campaign,\x20%s,\x20%s','message','result','catch','GetCampaign','findAll','options','raw','where','attributes','map','include','model','lodash','moment','bluebird'];(function(_0x377c42,_0xa66fd5){var _0x597ae5=function(_0x37e8c6){while(--_0x37e8c6){_0x377c42['push'](_0x377c42['shift']());}};_0x597ae5(++_0xa66fd5);}(_0x9234,0x1bd));var _0x4923=function(_0x1c8c28,_0x3ee093){_0x1c8c28=_0x1c8c28-0x0;var _0x1f59b4=_0x9234[_0x1c8c28];return _0x1f59b4;};'use strict';var _=require(_0x4923('0x0'));var util=require('util');var moment=require(_0x4923('0x1'));var BPromise=require(_0x4923('0x2'));var rs=require(_0x4923('0x3'));var fs=require('fs');var Redis=require(_0x4923('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x4923('0x5'));var logger=require(_0x4923('0x6'))('rpc');var config=require(_0x4923('0x7'));var jayson=require(_0x4923('0x8'));var client=jayson[_0x4923('0x9')][_0x4923('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x17b854,_0x133b0d,_0x2de396){return new BPromise(function(_0x548676,_0x1fffc2){return client['request'](_0x17b854,_0x2de396)[_0x4923('0xb')](function(_0x2c4057){logger[_0x4923('0xc')]('Campaign,\x20%s,\x20%s',_0x133b0d,_0x4923('0xd'));logger[_0x4923('0xe')](_0x4923('0xf'),_0x133b0d,_0x4923('0xd'),JSON[_0x4923('0x10')](_0x2c4057));if(_0x2c4057[_0x4923('0x11')]){if(_0x2c4057[_0x4923('0x11')][_0x4923('0x12')]===0x1f4){logger[_0x4923('0x11')](_0x4923('0x13'),_0x133b0d,_0x2c4057['error']['message']);return _0x1fffc2(_0x2c4057[_0x4923('0x11')][_0x4923('0x14')]);}logger[_0x4923('0x11')]('Campaign,\x20%s,\x20%s',_0x133b0d,_0x2c4057[_0x4923('0x11')][_0x4923('0x14')]);return _0x548676(_0x2c4057[_0x4923('0x11')][_0x4923('0x14')]);}else{logger[_0x4923('0xc')](_0x4923('0x13'),_0x133b0d,_0x4923('0xd'));_0x548676(_0x2c4057[_0x4923('0x15')][_0x4923('0x14')]);}})[_0x4923('0x16')](function(_0x559e4a){logger[_0x4923('0x11')](_0x4923('0x13'),_0x133b0d,_0x559e4a);_0x1fffc2(_0x559e4a);});});}exports[_0x4923('0x17')]=function(_0x1be04d){var _0x517b95=this;return new Promise(function(_0x50fd18,_0x16955b){return db['Campaign'][_0x4923('0x18')]({'raw':_0x1be04d[_0x4923('0x19')]?_0x1be04d['options'][_0x4923('0x1a')]===undefined?!![]:![]:!![],'where':_0x1be04d[_0x4923('0x19')]?_0x1be04d[_0x4923('0x19')][_0x4923('0x1b')]||null:null,'attributes':_0x1be04d['options']?_0x1be04d[_0x4923('0x19')][_0x4923('0x1c')]||null:null,'limit':_0x1be04d['options']?_0x1be04d[_0x4923('0x19')]['limit']||null:null,'include':_0x1be04d[_0x4923('0x19')]?_0x1be04d[_0x4923('0x19')]['include']?_[_0x4923('0x1d')](_0x1be04d[_0x4923('0x19')][_0x4923('0x1e')],function(_0x161cf9){return{'model':db[_0x161cf9[_0x4923('0x1f')]],'as':_0x161cf9['as'],'attributes':_0x161cf9[_0x4923('0x1c')],'include':_0x161cf9[_0x4923('0x1e')]?_['map'](_0x161cf9['include'],function(_0x23ec97){return{'model':db[_0x23ec97[_0x4923('0x1f')]],'as':_0x23ec97['as'],'attributes':_0x23ec97[_0x4923('0x1c')],'include':_0x23ec97[_0x4923('0x1e')]?_[_0x4923('0x1d')](_0x23ec97[_0x4923('0x1e')],function(_0x13681b){return{'model':db[_0x13681b[_0x4923('0x1f')]],'as':_0x13681b['as'],'attributes':_0x13681b[_0x4923('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x4923('0xb')](function(_0x3a7852){logger['info'](_0x4923('0x17'),_0x1be04d);logger[_0x4923('0xe')](_0x4923('0x17'),_0x1be04d,JSON[_0x4923('0x10')](_0x3a7852));_0x50fd18(_0x3a7852);})[_0x4923('0x16')](function(_0x47158c){logger[_0x4923('0x11')](_0x4923('0x17'),_0x47158c[_0x4923('0x14')],_0x1be04d);_0x16955b(_0x517b95[_0x4923('0x11')](0x1f4,_0x47158c[_0x4923('0x14')]));});});};
\ No newline at end of file
+var _0x45ea=['Campaign,\x20%s,\x20%s','result','catch','GetCampaign','Campaign','findAll','options','raw','where','limit','include','map','model','attributes','stringify','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','request\x20sent','debug','Campaign,\x20%s,\x20%s,\x20%s','error','code','message','info'];(function(_0x1034ca,_0x14ecd6){var _0x1a023a=function(_0x2cfa65){while(--_0x2cfa65){_0x1034ca['push'](_0x1034ca['shift']());}};_0x1a023a(++_0x14ecd6);}(_0x45ea,0x1f0));var _0xa45e=function(_0x36b81b,_0x4e8e8e){_0x36b81b=_0x36b81b-0x0;var _0x8f02cb=_0x45ea[_0x36b81b];return _0x8f02cb;};'use strict';var _=require(_0xa45e('0x0'));var util=require(_0xa45e('0x1'));var moment=require(_0xa45e('0x2'));var BPromise=require(_0xa45e('0x3'));var rs=require(_0xa45e('0x4'));var fs=require('fs');var Redis=require(_0xa45e('0x5'));var db=require(_0xa45e('0x6'))['db'];var utils=require(_0xa45e('0x7'));var logger=require(_0xa45e('0x8'))(_0xa45e('0x9'));var config=require(_0xa45e('0xa'));var jayson=require('jayson/promise');var client=jayson[_0xa45e('0xb')][_0xa45e('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x573ff8,_0x53dd85,_0x479cd8){return new BPromise(function(_0x40befe,_0x350f60){return client[_0xa45e('0xd')](_0x573ff8,_0x479cd8)[_0xa45e('0xe')](function(_0x2d73b0){logger['info']('Campaign,\x20%s,\x20%s',_0x53dd85,_0xa45e('0xf'));logger[_0xa45e('0x10')](_0xa45e('0x11'),_0x53dd85,_0xa45e('0xf'),JSON['stringify'](_0x2d73b0));if(_0x2d73b0[_0xa45e('0x12')]){if(_0x2d73b0['error'][_0xa45e('0x13')]===0x1f4){logger[_0xa45e('0x12')]('Campaign,\x20%s,\x20%s',_0x53dd85,_0x2d73b0['error'][_0xa45e('0x14')]);return _0x350f60(_0x2d73b0['error'][_0xa45e('0x14')]);}logger['error']('Campaign,\x20%s,\x20%s',_0x53dd85,_0x2d73b0['error'][_0xa45e('0x14')]);return _0x40befe(_0x2d73b0['error'][_0xa45e('0x14')]);}else{logger[_0xa45e('0x15')](_0xa45e('0x16'),_0x53dd85,_0xa45e('0xf'));_0x40befe(_0x2d73b0[_0xa45e('0x17')]['message']);}})[_0xa45e('0x18')](function(_0x1eeb1d){logger[_0xa45e('0x12')](_0xa45e('0x16'),_0x53dd85,_0x1eeb1d);_0x350f60(_0x1eeb1d);});});}exports[_0xa45e('0x19')]=function(_0x534e87){var _0x34b6c8=this;return new Promise(function(_0x8e85c1,_0xa7a6f4){return db[_0xa45e('0x1a')][_0xa45e('0x1b')]({'raw':_0x534e87[_0xa45e('0x1c')]?_0x534e87[_0xa45e('0x1c')][_0xa45e('0x1d')]===undefined?!![]:![]:!![],'where':_0x534e87['options']?_0x534e87[_0xa45e('0x1c')][_0xa45e('0x1e')]||null:null,'attributes':_0x534e87[_0xa45e('0x1c')]?_0x534e87['options']['attributes']||null:null,'limit':_0x534e87[_0xa45e('0x1c')]?_0x534e87['options'][_0xa45e('0x1f')]||null:null,'include':_0x534e87[_0xa45e('0x1c')]?_0x534e87[_0xa45e('0x1c')][_0xa45e('0x20')]?_[_0xa45e('0x21')](_0x534e87['options'][_0xa45e('0x20')],function(_0x54f14d){return{'model':db[_0x54f14d[_0xa45e('0x22')]],'as':_0x54f14d['as'],'attributes':_0x54f14d[_0xa45e('0x23')],'include':_0x54f14d['include']?_['map'](_0x54f14d[_0xa45e('0x20')],function(_0x5aec7d){return{'model':db[_0x5aec7d[_0xa45e('0x22')]],'as':_0x5aec7d['as'],'attributes':_0x5aec7d[_0xa45e('0x23')],'include':_0x5aec7d[_0xa45e('0x20')]?_['map'](_0x5aec7d['include'],function(_0x2c7c9e){return{'model':db[_0x2c7c9e[_0xa45e('0x22')]],'as':_0x2c7c9e['as'],'attributes':_0x2c7c9e[_0xa45e('0x23')]};}):[]};}):[]};}):[]:[]})[_0xa45e('0xe')](function(_0x78a762){logger['info'](_0xa45e('0x19'),_0x534e87);logger[_0xa45e('0x10')]('GetCampaign',_0x534e87,JSON[_0xa45e('0x24')](_0x78a762));_0x8e85c1(_0x78a762);})['catch'](function(_0x552cb5){logger[_0xa45e('0x12')](_0xa45e('0x19'),_0x552cb5['message'],_0x534e87);_0xa7a6f4(_0x34b6c8['error'](0x1f4,_0x552cb5[_0xa45e('0x14')]));});});};
\ No newline at end of file
index b364a2c..58232a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c60=['util','path','express','Router','fs-extra','../../components/auth/service','get','isAuthenticated','/:id','/:id/hoppers','/:id/hopper_histories','getHopperHistories','/:id/hopper_finals','getHopperFinals','/:id/hopper_black','getHopperBlacks','/:id/lists','getLists','/:id/blacklists','post','/:id/clone','addLists','addBlackLists','update','delete','destroy','removeBlackLists','exports','multer'];(function(_0x85da9e,_0x5efac3){var _0x17ec6c=function(_0x24a652){while(--_0x24a652){_0x85da9e['push'](_0x85da9e['shift']());}};_0x17ec6c(++_0x5efac3);}(_0x7c60,0xad));var _0x07c6=function(_0x2d91e2,_0x4238e1){_0x2d91e2=_0x2d91e2-0x0;var _0x4db27f=_0x7c60[_0x2d91e2];return _0x4db27f;};'use strict';var multer=require(_0x07c6('0x0'));var util=require(_0x07c6('0x1'));var path=require(_0x07c6('0x2'));var timeout=require('connect-timeout');var express=require(_0x07c6('0x3'));var router=express[_0x07c6('0x4')]();var fs_extra=require(_0x07c6('0x5'));var auth=require(_0x07c6('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./campaign.controller');router[_0x07c6('0x7')]('/',auth[_0x07c6('0x8')](),controller['index']);router[_0x07c6('0x7')](_0x07c6('0x9'),auth[_0x07c6('0x8')](),controller['show']);router[_0x07c6('0x7')](_0x07c6('0xa'),auth[_0x07c6('0x8')](),controller['getHoppers']);router[_0x07c6('0x7')](_0x07c6('0xb'),auth[_0x07c6('0x8')](),controller[_0x07c6('0xc')]);router[_0x07c6('0x7')](_0x07c6('0xd'),auth['isAuthenticated'](),controller[_0x07c6('0xe')]);router[_0x07c6('0x7')](_0x07c6('0xf'),auth[_0x07c6('0x8')](),controller[_0x07c6('0x10')]);router['get'](_0x07c6('0x11'),auth[_0x07c6('0x8')](),controller[_0x07c6('0x12')]);router[_0x07c6('0x7')](_0x07c6('0x13'),auth[_0x07c6('0x8')](),controller['getBlackLists']);router[_0x07c6('0x14')]('/',auth['isAuthenticated'](),controller['create']);router[_0x07c6('0x14')](_0x07c6('0x15'),auth[_0x07c6('0x8')](),controller['clone']);router[_0x07c6('0x14')](_0x07c6('0x11'),auth[_0x07c6('0x8')](),controller[_0x07c6('0x16')]);router['post'](_0x07c6('0x13'),auth['isAuthenticated'](),controller[_0x07c6('0x17')]);router['put'](_0x07c6('0x9'),auth[_0x07c6('0x8')](),controller[_0x07c6('0x18')]);router[_0x07c6('0x19')]('/:id',auth['isAuthenticated'](),controller[_0x07c6('0x1a')]);router[_0x07c6('0x19')](_0x07c6('0x11'),auth[_0x07c6('0x8')](),controller['removeLists']);router[_0x07c6('0x19')](_0x07c6('0x13'),auth[_0x07c6('0x8')](),controller[_0x07c6('0x1b')]);module[_0x07c6('0x1c')]=router;
\ No newline at end of file
+var _0x1fc5=['addBlackLists','put','delete','/:id','destroy','removeBlackLists','exports','util','connect-timeout','express','Router','fs-extra','../../components/interaction/service','get','isAuthenticated','index','show','getHoppers','/:id/hopper_histories','getHopperHistories','/:id/hopper_finals','/:id/hopper_black','getHopperBlacks','/:id/blacklists','create','post','/:id/clone','/:id/lists','addLists'];(function(_0x3080ca,_0x59ecbd){var _0x2622bc=function(_0x48a391){while(--_0x48a391){_0x3080ca['push'](_0x3080ca['shift']());}};_0x2622bc(++_0x59ecbd);}(_0x1fc5,0x98));var _0x51fc=function(_0x1c0371,_0x43e266){_0x1c0371=_0x1c0371-0x0;var _0x3aaa80=_0x1fc5[_0x1c0371];return _0x3aaa80;};'use strict';var multer=require('multer');var util=require(_0x51fc('0x0'));var path=require('path');var timeout=require(_0x51fc('0x1'));var express=require(_0x51fc('0x2'));var router=express[_0x51fc('0x3')]();var fs_extra=require(_0x51fc('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x51fc('0x5'));var config=require('../../config/environment');var controller=require('./campaign.controller');router[_0x51fc('0x6')]('/',auth[_0x51fc('0x7')](),controller[_0x51fc('0x8')]);router[_0x51fc('0x6')]('/:id',auth[_0x51fc('0x7')](),controller[_0x51fc('0x9')]);router[_0x51fc('0x6')]('/:id/hoppers',auth['isAuthenticated'](),controller[_0x51fc('0xa')]);router[_0x51fc('0x6')](_0x51fc('0xb'),auth['isAuthenticated'](),controller[_0x51fc('0xc')]);router[_0x51fc('0x6')](_0x51fc('0xd'),auth['isAuthenticated'](),controller['getHopperFinals']);router[_0x51fc('0x6')](_0x51fc('0xe'),auth['isAuthenticated'](),controller[_0x51fc('0xf')]);router[_0x51fc('0x6')]('/:id/lists',auth['isAuthenticated'](),controller['getLists']);router[_0x51fc('0x6')](_0x51fc('0x10'),auth[_0x51fc('0x7')](),controller['getBlackLists']);router['post']('/',auth[_0x51fc('0x7')](),controller[_0x51fc('0x11')]);router[_0x51fc('0x12')](_0x51fc('0x13'),auth[_0x51fc('0x7')](),controller['clone']);router[_0x51fc('0x12')](_0x51fc('0x14'),auth[_0x51fc('0x7')](),controller[_0x51fc('0x15')]);router[_0x51fc('0x12')](_0x51fc('0x10'),auth['isAuthenticated'](),controller[_0x51fc('0x16')]);router[_0x51fc('0x17')]('/:id',auth[_0x51fc('0x7')](),controller['update']);router[_0x51fc('0x18')](_0x51fc('0x19'),auth[_0x51fc('0x7')](),controller[_0x51fc('0x1a')]);router['delete'](_0x51fc('0x14'),auth['isAuthenticated'](),controller['removeLists']);router[_0x51fc('0x18')](_0x51fc('0x10'),auth[_0x51fc('0x7')](),controller[_0x51fc('0x1b')]);module[_0x51fc('0x1c')]=router;
\ No newline at end of file
index 92e4354..d2d4474 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9812=['key','exports','STRING','TEXT','VIRTUAL','getDataValue'];(function(_0x1c4cca,_0x398ea1){var _0x2dedda=function(_0x10904b){while(--_0x10904b){_0x1c4cca['push'](_0x1c4cca['shift']());}};_0x2dedda(++_0x398ea1);}(_0x9812,0x1b7));var _0x2981=function(_0x42bd0e,_0x157bfa){_0x42bd0e=_0x42bd0e-0x0;var _0x4a5e2f=_0x9812[_0x42bd0e];return _0x4a5e2f;};'use strict';var Sequelize=require('sequelize');module[_0x2981('0x0')]={'key':{'type':Sequelize[_0x2981('0x1')],'allowNull':![]},'value':{'type':Sequelize[_0x2981('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x2981('0x1')]},'name':{'type':Sequelize[_0x2981('0x3')],'get':function(){return this[_0x2981('0x4')](_0x2981('0x5'));}}};
\ No newline at end of file
+var _0x5c71=['exports','TEXT','STRING','getDataValue','key','sequelize'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5c71,0x125));var _0x15c7=function(_0x1a146c,_0x24c3d4){_0x1a146c=_0x1a146c-0x0;var _0x9495ea=_0x5c71[_0x1a146c];return _0x9495ea;};'use strict';var Sequelize=require(_0x15c7('0x0'));module[_0x15c7('0x1')]={'key':{'type':Sequelize['STRING'],'allowNull':![]},'value':{'type':Sequelize[_0x15c7('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x15c7('0x3')]},'name':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0x15c7('0x4')](_0x15c7('0x5'));}}};
\ No newline at end of file
index ccae57e..de9cf42 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb19=['undefined','limit','count','Content-Range','apply','reject','save','then','get','CannedAnswers','UserProfileResource','end','error','stack','name','send','index','CannedAnswer','rawAttributes','fieldName','type','model','map','query','keys','filters','intersection','attributes','fields','length','nolimit','order','where','pick','filter','merge','options','includeAll','include','findAll','rows','catch','params','find','update','body','create','key','MailAccountId','SmsAccountId','OpenchannelAccountId','ChatWebsiteId','ValidationError','The\x20inserted\x20key\x20already\x20exists.','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','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','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset'];(function(_0x234761,_0x598fff){var _0x501944=function(_0x310d44){while(--_0x310d44){_0x234761['push'](_0x234761['shift']());}};_0x501944(++_0x598fff);}(_0xeb19,0x14b));var _0x9eb1=function(_0x280405,_0x274b31){_0x280405=_0x280405-0x0;var _0x2db04d=_0xeb19[_0x280405];return _0x2db04d;};'use strict';var emlformat=require(_0x9eb1('0x0'));var rimraf=require(_0x9eb1('0x1'));var zipdir=require(_0x9eb1('0x2'));var jsonpatch=require(_0x9eb1('0x3'));var rp=require(_0x9eb1('0x4'));var moment=require(_0x9eb1('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x9eb1('0x6'));var util=require(_0x9eb1('0x7'));var path=require(_0x9eb1('0x8'));var sox=require(_0x9eb1('0x9'));var csv=require(_0x9eb1('0xa'));var ejs=require(_0x9eb1('0xb'));var fs=require('fs');var fs_extra=require(_0x9eb1('0xc'));var _=require(_0x9eb1('0xd'));var squel=require(_0x9eb1('0xe'));var crypto=require(_0x9eb1('0xf'));var jsforce=require(_0x9eb1('0x10'));var deskjs=require(_0x9eb1('0x11'));var toCsv=require(_0x9eb1('0xa'));var querystring=require(_0x9eb1('0x12'));var Papa=require('papaparse');var Redis=require(_0x9eb1('0x13'));var authService=require(_0x9eb1('0x14'));var qs=require(_0x9eb1('0x15'));var as=require(_0x9eb1('0x16'));var hardwareService=require(_0x9eb1('0x17'));var logger=require('../../config/logger')(_0x9eb1('0x18'));var utils=require(_0x9eb1('0x19'));var config=require(_0x9eb1('0x1a'));var licenseUtil=require(_0x9eb1('0x1b'));var db=require(_0x9eb1('0x1c'))['db'];function respondWithStatusCode(_0x5afc1c,_0x389d74){_0x389d74=_0x389d74||0xcc;return function(_0x294b4e){if(_0x294b4e){return _0x5afc1c[_0x9eb1('0x1d')](_0x389d74);}return _0x5afc1c[_0x9eb1('0x1e')](_0x389d74)['end']();};}function respondWithResult(_0x41e4a6,_0x454fd7){_0x454fd7=_0x454fd7||0xc8;return function(_0x42d7ce){if(_0x42d7ce){return _0x41e4a6[_0x9eb1('0x1e')](_0x454fd7)[_0x9eb1('0x1f')](_0x42d7ce);}};}function respondWithFilteredResult(_0x359983,_0xeb84fe){return function(_0x5ea477){if(_0x5ea477){var _0x26532f=typeof _0xeb84fe[_0x9eb1('0x20')]===_0x9eb1('0x21')&&typeof _0xeb84fe[_0x9eb1('0x22')]===_0x9eb1('0x21');var _0x44a7da=_0x5ea477[_0x9eb1('0x23')];var _0x5a7ab0=_0x26532f?0x0:_0xeb84fe[_0x9eb1('0x20')];var _0x1b9d55=_0x26532f?_0x5ea477[_0x9eb1('0x23')]:_0xeb84fe[_0x9eb1('0x20')]+_0xeb84fe[_0x9eb1('0x22')];var _0x233e5a;if(_0x1b9d55>=_0x44a7da){_0x1b9d55=_0x44a7da;_0x233e5a=0xc8;}else{_0x233e5a=0xce;}_0x359983[_0x9eb1('0x1e')](_0x233e5a);return _0x359983['set'](_0x9eb1('0x24'),_0x5a7ab0+'-'+_0x1b9d55+'/'+_0x44a7da)[_0x9eb1('0x1f')](_0x5ea477);}return null;};}function patchUpdates(_0x1ff109){return function(_0x432b33){try{jsonpatch[_0x9eb1('0x25')](_0x432b33,_0x1ff109,!![]);}catch(_0x5723b8){return BPromise[_0x9eb1('0x26')](_0x5723b8);}return _0x432b33[_0x9eb1('0x27')]();};}function saveUpdates(_0x455472,_0x33b3db){return function(_0x5e1c65){if(_0x5e1c65){return _0x5e1c65['update'](_0x455472)['then'](function(_0x4db916){return _0x4db916;});}return null;};}function removeEntity(_0x186b7b,_0xf948ab){return function(_0x2d0903){if(_0x2d0903){return _0x2d0903['destroy']()[_0x9eb1('0x28')](function(){var _0x10cd18=_0x2d0903[_0x9eb1('0x29')]({'plain':!![]});var _0x27fc4d=_0x9eb1('0x2a');return db[_0x9eb1('0x2b')]['destroy']({'where':{'type':_0x27fc4d,'resourceId':_0x10cd18['id']}})[_0x9eb1('0x28')](function(){return _0x2d0903;});})[_0x9eb1('0x28')](function(){_0x186b7b[_0x9eb1('0x1e')](0xcc)[_0x9eb1('0x2c')]();});}};}function handleEntityNotFound(_0x37950b,_0x1eac12){return function(_0x28d5bf){if(!_0x28d5bf){_0x37950b[_0x9eb1('0x1d')](0x194);}return _0x28d5bf;};}function handleError(_0x178670,_0x10b5be){_0x10b5be=_0x10b5be||0x1f4;return function(_0x23f41a){logger[_0x9eb1('0x2d')](_0x23f41a[_0x9eb1('0x2e')]);if(_0x23f41a[_0x9eb1('0x2f')]){delete _0x23f41a['name'];}_0x178670['status'](_0x10b5be)[_0x9eb1('0x30')](_0x23f41a);};}exports[_0x9eb1('0x31')]=function(_0x42c87a,_0x19861a){var _0x285997={},_0x46a3b3={},_0xa0e27f={'count':0x0,'rows':[]};var _0x19fba1=_['map'](db[_0x9eb1('0x32')][_0x9eb1('0x33')],function(_0x535f97){return{'name':_0x535f97[_0x9eb1('0x34')],'type':_0x535f97[_0x9eb1('0x35')]['key']};});_0x46a3b3[_0x9eb1('0x36')]=_[_0x9eb1('0x37')](_0x19fba1,'name');_0x46a3b3[_0x9eb1('0x38')]=_[_0x9eb1('0x39')](_0x42c87a[_0x9eb1('0x38')]);_0x46a3b3[_0x9eb1('0x3a')]=_[_0x9eb1('0x3b')](_0x46a3b3[_0x9eb1('0x36')],_0x46a3b3[_0x9eb1('0x38')]);_0x285997[_0x9eb1('0x3c')]=_['intersection'](_0x46a3b3[_0x9eb1('0x36')],qs[_0x9eb1('0x3d')](_0x42c87a[_0x9eb1('0x38')][_0x9eb1('0x3d')]));_0x285997[_0x9eb1('0x3c')]=_0x285997[_0x9eb1('0x3c')][_0x9eb1('0x3e')]?_0x285997['attributes']:_0x46a3b3[_0x9eb1('0x36')];if(!_0x42c87a[_0x9eb1('0x38')]['hasOwnProperty'](_0x9eb1('0x3f'))){_0x285997['limit']=qs[_0x9eb1('0x22')](_0x42c87a[_0x9eb1('0x38')][_0x9eb1('0x22')]);_0x285997[_0x9eb1('0x20')]=qs['offset'](_0x42c87a[_0x9eb1('0x38')][_0x9eb1('0x20')]);}_0x285997[_0x9eb1('0x40')]=qs['sort'](_0x42c87a['query']['sort']);_0x285997[_0x9eb1('0x41')]=qs['filters'](_[_0x9eb1('0x42')](_0x42c87a[_0x9eb1('0x38')],_0x46a3b3['filters']),_0x19fba1);if(_0x42c87a[_0x9eb1('0x38')][_0x9eb1('0x43')]){_0x285997['where']=_[_0x9eb1('0x44')](_0x285997['where'],{'$or':[{'key':{'$like':'%'+_0x42c87a['query'][_0x9eb1('0x43')]+'%'}},{'value':{'$like':'%'+_0x42c87a[_0x9eb1('0x38')][_0x9eb1('0x43')]+'%'}}]});}_0x285997=_[_0x9eb1('0x44')]({},_0x285997,_0x42c87a[_0x9eb1('0x45')]);var _0x194b45={'where':_0x285997[_0x9eb1('0x41')]};return db[_0x9eb1('0x32')]['count'](_0x194b45)['then'](function(_0x4c4c58){_0xa0e27f['count']=_0x4c4c58;if(_0x42c87a[_0x9eb1('0x38')][_0x9eb1('0x46')]){_0x285997[_0x9eb1('0x47')]=[{'all':!![]}];}return db[_0x9eb1('0x32')][_0x9eb1('0x48')](_0x285997);})[_0x9eb1('0x28')](function(_0x5b7ce1){_0xa0e27f[_0x9eb1('0x49')]=_0x5b7ce1;return _0xa0e27f;})[_0x9eb1('0x28')](respondWithFilteredResult(_0x19861a,_0x285997))[_0x9eb1('0x4a')](handleError(_0x19861a,null));};exports['show']=function(_0x282592,_0x3e91c1){var _0x230cca={'raw':!![],'where':{'id':_0x282592[_0x9eb1('0x4b')]['id']}},_0x19db26={};_0x19db26['model']=_[_0x9eb1('0x39')](db[_0x9eb1('0x32')]['rawAttributes']);_0x19db26[_0x9eb1('0x38')]=_[_0x9eb1('0x39')](_0x282592['query']);_0x19db26[_0x9eb1('0x3a')]=_[_0x9eb1('0x3b')](_0x19db26[_0x9eb1('0x36')],_0x19db26['query']);_0x230cca[_0x9eb1('0x3c')]=_[_0x9eb1('0x3b')](_0x19db26[_0x9eb1('0x36')],qs['fields'](_0x282592[_0x9eb1('0x38')][_0x9eb1('0x3d')]));_0x230cca[_0x9eb1('0x3c')]=_0x230cca['attributes']['length']?_0x230cca[_0x9eb1('0x3c')]:_0x19db26['model'];if(_0x282592[_0x9eb1('0x38')][_0x9eb1('0x46')]){_0x230cca['include']=[{'all':!![]}];}_0x230cca=_[_0x9eb1('0x44')]({},_0x230cca,_0x282592[_0x9eb1('0x45')]);return db[_0x9eb1('0x32')][_0x9eb1('0x4c')](_0x230cca)['then'](handleEntityNotFound(_0x3e91c1,null))[_0x9eb1('0x28')](respondWithResult(_0x3e91c1,null))[_0x9eb1('0x4a')](handleError(_0x3e91c1,null));};exports[_0x9eb1('0x4d')]=function(_0x52b4ab,_0x11635f){if(_0x52b4ab[_0x9eb1('0x4e')]['id']){delete _0x52b4ab[_0x9eb1('0x4e')]['id'];}return db[_0x9eb1('0x32')]['find']({'where':{'id':_0x52b4ab[_0x9eb1('0x4b')]['id']}})['then'](handleEntityNotFound(_0x11635f,null))['then'](saveUpdates(_0x52b4ab[_0x9eb1('0x4e')],null))[_0x9eb1('0x28')](respondWithResult(_0x11635f,null))['catch'](handleError(_0x11635f,null));};exports['destroy']=function(_0x892d12,_0xfc8016){return db[_0x9eb1('0x32')][_0x9eb1('0x4c')]({'where':{'id':_0x892d12[_0x9eb1('0x4b')]['id']}})[_0x9eb1('0x28')](handleEntityNotFound(_0xfc8016,null))['then'](removeEntity(_0xfc8016,null))['catch'](handleError(_0xfc8016,null));};exports[_0x9eb1('0x4f')]=function(_0x17f8ce,_0x1b75f0){var _0x1fbf03={'key':_0x17f8ce[_0x9eb1('0x4e')][_0x9eb1('0x50')]};if(_0x17f8ce[_0x9eb1('0x4e')][_0x9eb1('0x51')]){_0x1fbf03[_0x9eb1('0x51')]=_0x17f8ce[_0x9eb1('0x4e')]['MailAccountId'];}else if(_0x17f8ce[_0x9eb1('0x4e')][_0x9eb1('0x52')]){_0x1fbf03[_0x9eb1('0x52')]=_0x17f8ce[_0x9eb1('0x4e')][_0x9eb1('0x52')];}else if(_0x17f8ce[_0x9eb1('0x4e')][_0x9eb1('0x53')]){_0x1fbf03['OpenchannelAccountId']=_0x17f8ce['body'][_0x9eb1('0x53')];}else if(_0x17f8ce[_0x9eb1('0x4e')][_0x9eb1('0x54')]){_0x1fbf03[_0x9eb1('0x54')]=_0x17f8ce[_0x9eb1('0x4e')]['ChatWebsiteId'];}return db[_0x9eb1('0x32')][_0x9eb1('0x4c')]({'where':_0x1fbf03})[_0x9eb1('0x28')](function(_0xff2305){if(_0xff2305){throw new db['Sequelize'][(_0x9eb1('0x55'))](_0x9eb1('0x56'));}return db['CannedAnswer'][_0x9eb1('0x4f')](_0x17f8ce[_0x9eb1('0x4e')]);})[_0x9eb1('0x28')](function(_0x41fc49){var _0x62ccd=_0x17f8ce[_0x9eb1('0x57')][_0x9eb1('0x29')]({'plain':!![]});if(!_0x62ccd)throw new Error(_0x9eb1('0x58'));if(_0x62ccd['role']==='user'){var _0xa619bb=_0x41fc49[_0x9eb1('0x29')]({'plain':!![]});return db['UserProfileSection'][_0x9eb1('0x4c')]({'where':{'name':'CannedAnswers','userProfileId':_0x62ccd[_0x9eb1('0x59')]},'raw':!![]})[_0x9eb1('0x28')](function(_0x4fca89){if(_0x4fca89&&_0x4fca89['autoAssociation']===0x0){return db[_0x9eb1('0x2b')][_0x9eb1('0x4f')]({'name':_0xa619bb['name'],'resourceId':_0xa619bb['id'],'type':_0x4fca89[_0x9eb1('0x2f')],'sectionId':_0x4fca89['id']},{})['then'](function(){return _0x41fc49;});}else{return _0x41fc49;}})['catch'](function(_0xdeb372){logger[_0x9eb1('0x2d')](_0x9eb1('0x5a'),_0xdeb372);throw _0xdeb372;});}return _0x41fc49;})['then'](respondWithResult(_0x1b75f0,0xc9))[_0x9eb1('0x4a')](handleError(_0x1b75f0,null));};
\ No newline at end of file
+var _0x97d8=['ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','undefined','limit','offset','count','set','json','reject','update','then','destroy','get','CannedAnswers','UserProfileResource','stack','name','send','index','map','CannedAnswer','rawAttributes','fieldName','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','pick','where','merge','filter','includeAll','include','rows','catch','show','params','find','body','MailAccountId','SmsAccountId','OpenchannelAccountId','ChatWebsiteId','Sequelize','ValidationError','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','jsforce','to-csv','querystring'];(function(_0xbbcb36,_0x586383){var _0x4278ff=function(_0x35c9da){while(--_0x35c9da){_0xbbcb36['push'](_0xbbcb36['shift']());}};_0x4278ff(++_0x586383);}(_0x97d8,0xf5));var _0x897d=function(_0x53076d,_0x3170a4){_0x53076d=_0x53076d-0x0;var _0xabdd81=_0x97d8[_0x53076d];return _0xabdd81;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x897d('0x0'));var zipdir=require(_0x897d('0x1'));var jsonpatch=require(_0x897d('0x2'));var rp=require('request-promise');var moment=require(_0x897d('0x3'));var BPromise=require(_0x897d('0x4'));var Mustache=require(_0x897d('0x5'));var util=require(_0x897d('0x6'));var path=require(_0x897d('0x7'));var sox=require(_0x897d('0x8'));var csv=require('to-csv');var ejs=require(_0x897d('0x9'));var fs=require('fs');var fs_extra=require(_0x897d('0xa'));var _=require(_0x897d('0xb'));var squel=require(_0x897d('0xc'));var crypto=require('crypto');var jsforce=require(_0x897d('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x897d('0xe'));var querystring=require(_0x897d('0xf'));var Papa=require('papaparse');var Redis=require(_0x897d('0x10'));var authService=require(_0x897d('0x11'));var qs=require(_0x897d('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x897d('0x13'));var logger=require(_0x897d('0x14'))(_0x897d('0x15'));var utils=require(_0x897d('0x16'));var config=require(_0x897d('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x897d('0x18'))['db'];function respondWithStatusCode(_0x5e9646,_0x7618cf){_0x7618cf=_0x7618cf||0xcc;return function(_0x3d278b){if(_0x3d278b){return _0x5e9646[_0x897d('0x19')](_0x7618cf);}return _0x5e9646[_0x897d('0x1a')](_0x7618cf)[_0x897d('0x1b')]();};}function respondWithResult(_0x3484b8,_0x3f6bf5){_0x3f6bf5=_0x3f6bf5||0xc8;return function(_0x4c0777){if(_0x4c0777){return _0x3484b8[_0x897d('0x1a')](_0x3f6bf5)['json'](_0x4c0777);}};}function respondWithFilteredResult(_0x19e827,_0x5ee4e9){return function(_0x33ab6f){if(_0x33ab6f){var _0x2b3f18=typeof _0x5ee4e9['offset']===_0x897d('0x1c')&&typeof _0x5ee4e9[_0x897d('0x1d')]===_0x897d('0x1c');var _0x2c1a1b=_0x33ab6f['count'];var _0x4288ac=_0x2b3f18?0x0:_0x5ee4e9[_0x897d('0x1e')];var _0x2eb5e1=_0x2b3f18?_0x33ab6f[_0x897d('0x1f')]:_0x5ee4e9[_0x897d('0x1e')]+_0x5ee4e9[_0x897d('0x1d')];var _0x42d230;if(_0x2eb5e1>=_0x2c1a1b){_0x2eb5e1=_0x2c1a1b;_0x42d230=0xc8;}else{_0x42d230=0xce;}_0x19e827[_0x897d('0x1a')](_0x42d230);return _0x19e827[_0x897d('0x20')]('Content-Range',_0x4288ac+'-'+_0x2eb5e1+'/'+_0x2c1a1b)[_0x897d('0x21')](_0x33ab6f);}return null;};}function patchUpdates(_0x4bb535){return function(_0x158fd0){try{jsonpatch['apply'](_0x158fd0,_0x4bb535,!![]);}catch(_0x4de8c5){return BPromise[_0x897d('0x22')](_0x4de8c5);}return _0x158fd0['save']();};}function saveUpdates(_0x4d5d99,_0x43f4fb){return function(_0x20c10a){if(_0x20c10a){return _0x20c10a[_0x897d('0x23')](_0x4d5d99)[_0x897d('0x24')](function(_0x42922f){return _0x42922f;});}return null;};}function removeEntity(_0x27dd6d,_0x36104a){return function(_0x5e214c){if(_0x5e214c){return _0x5e214c[_0x897d('0x25')]()[_0x897d('0x24')](function(){var _0x3b8e5f=_0x5e214c[_0x897d('0x26')]({'plain':!![]});var _0x234169=_0x897d('0x27');return db[_0x897d('0x28')]['destroy']({'where':{'type':_0x234169,'resourceId':_0x3b8e5f['id']}})[_0x897d('0x24')](function(){return _0x5e214c;});})[_0x897d('0x24')](function(){_0x27dd6d[_0x897d('0x1a')](0xcc)[_0x897d('0x1b')]();});}};}function handleEntityNotFound(_0x245eff,_0x4dc606){return function(_0x5043bf){if(!_0x5043bf){_0x245eff[_0x897d('0x19')](0x194);}return _0x5043bf;};}function handleError(_0x1a7840,_0x5aaac6){_0x5aaac6=_0x5aaac6||0x1f4;return function(_0x59d7f6){logger['error'](_0x59d7f6[_0x897d('0x29')]);if(_0x59d7f6['name']){delete _0x59d7f6[_0x897d('0x2a')];}_0x1a7840[_0x897d('0x1a')](_0x5aaac6)[_0x897d('0x2b')](_0x59d7f6);};}exports[_0x897d('0x2c')]=function(_0x5a8fec,_0x4d244e){var _0xdf15d6={},_0x1c5dd0={},_0x2114ff={'count':0x0,'rows':[]};var _0x3630b6=_[_0x897d('0x2d')](db[_0x897d('0x2e')][_0x897d('0x2f')],function(_0x313782){return{'name':_0x313782[_0x897d('0x30')],'type':_0x313782['type'][_0x897d('0x31')]};});_0x1c5dd0[_0x897d('0x32')]=_[_0x897d('0x2d')](_0x3630b6,_0x897d('0x2a'));_0x1c5dd0[_0x897d('0x33')]=_[_0x897d('0x34')](_0x5a8fec[_0x897d('0x33')]);_0x1c5dd0['filters']=_[_0x897d('0x35')](_0x1c5dd0[_0x897d('0x32')],_0x1c5dd0[_0x897d('0x33')]);_0xdf15d6[_0x897d('0x36')]=_[_0x897d('0x35')](_0x1c5dd0[_0x897d('0x32')],qs[_0x897d('0x37')](_0x5a8fec[_0x897d('0x33')][_0x897d('0x37')]));_0xdf15d6[_0x897d('0x36')]=_0xdf15d6[_0x897d('0x36')][_0x897d('0x38')]?_0xdf15d6[_0x897d('0x36')]:_0x1c5dd0[_0x897d('0x32')];if(!_0x5a8fec['query'][_0x897d('0x39')](_0x897d('0x3a'))){_0xdf15d6[_0x897d('0x1d')]=qs['limit'](_0x5a8fec[_0x897d('0x33')][_0x897d('0x1d')]);_0xdf15d6[_0x897d('0x1e')]=qs[_0x897d('0x1e')](_0x5a8fec[_0x897d('0x33')][_0x897d('0x1e')]);}_0xdf15d6[_0x897d('0x3b')]=qs[_0x897d('0x3c')](_0x5a8fec[_0x897d('0x33')][_0x897d('0x3c')]);_0xdf15d6['where']=qs[_0x897d('0x3d')](_[_0x897d('0x3e')](_0x5a8fec[_0x897d('0x33')],_0x1c5dd0[_0x897d('0x3d')]),_0x3630b6);if(_0x5a8fec[_0x897d('0x33')]['filter']){_0xdf15d6[_0x897d('0x3f')]=_[_0x897d('0x40')](_0xdf15d6['where'],{'$or':[{'key':{'$like':'%'+_0x5a8fec[_0x897d('0x33')][_0x897d('0x41')]+'%'}},{'value':{'$like':'%'+_0x5a8fec[_0x897d('0x33')][_0x897d('0x41')]+'%'}}]});}_0xdf15d6=_[_0x897d('0x40')]({},_0xdf15d6,_0x5a8fec['options']);var _0x22002b={'where':_0xdf15d6['where']};return db[_0x897d('0x2e')]['count'](_0x22002b)[_0x897d('0x24')](function(_0x406187){_0x2114ff['count']=_0x406187;if(_0x5a8fec[_0x897d('0x33')][_0x897d('0x42')]){_0xdf15d6[_0x897d('0x43')]=[{'all':!![]}];}return db['CannedAnswer']['findAll'](_0xdf15d6);})[_0x897d('0x24')](function(_0x2dd80a){_0x2114ff[_0x897d('0x44')]=_0x2dd80a;return _0x2114ff;})['then'](respondWithFilteredResult(_0x4d244e,_0xdf15d6))[_0x897d('0x45')](handleError(_0x4d244e,null));};exports[_0x897d('0x46')]=function(_0x576104,_0x40d501){var _0x5781b2={'raw':!![],'where':{'id':_0x576104[_0x897d('0x47')]['id']}},_0x126b84={};_0x126b84['model']=_[_0x897d('0x34')](db[_0x897d('0x2e')][_0x897d('0x2f')]);_0x126b84[_0x897d('0x33')]=_['keys'](_0x576104[_0x897d('0x33')]);_0x126b84[_0x897d('0x3d')]=_[_0x897d('0x35')](_0x126b84['model'],_0x126b84[_0x897d('0x33')]);_0x5781b2[_0x897d('0x36')]=_[_0x897d('0x35')](_0x126b84[_0x897d('0x32')],qs[_0x897d('0x37')](_0x576104[_0x897d('0x33')]['fields']));_0x5781b2[_0x897d('0x36')]=_0x5781b2['attributes'][_0x897d('0x38')]?_0x5781b2['attributes']:_0x126b84[_0x897d('0x32')];if(_0x576104['query'][_0x897d('0x42')]){_0x5781b2[_0x897d('0x43')]=[{'all':!![]}];}_0x5781b2=_[_0x897d('0x40')]({},_0x5781b2,_0x576104['options']);return db[_0x897d('0x2e')][_0x897d('0x48')](_0x5781b2)[_0x897d('0x24')](handleEntityNotFound(_0x40d501,null))[_0x897d('0x24')](respondWithResult(_0x40d501,null))['catch'](handleError(_0x40d501,null));};exports[_0x897d('0x23')]=function(_0x10f8d5,_0x1b4617){if(_0x10f8d5[_0x897d('0x49')]['id']){delete _0x10f8d5['body']['id'];}return db['CannedAnswer'][_0x897d('0x48')]({'where':{'id':_0x10f8d5[_0x897d('0x47')]['id']}})[_0x897d('0x24')](handleEntityNotFound(_0x1b4617,null))[_0x897d('0x24')](saveUpdates(_0x10f8d5[_0x897d('0x49')],null))['then'](respondWithResult(_0x1b4617,null))[_0x897d('0x45')](handleError(_0x1b4617,null));};exports['destroy']=function(_0x5a191c,_0x27f3af){return db[_0x897d('0x2e')][_0x897d('0x48')]({'where':{'id':_0x5a191c[_0x897d('0x47')]['id']}})[_0x897d('0x24')](handleEntityNotFound(_0x27f3af,null))['then'](removeEntity(_0x27f3af,null))[_0x897d('0x45')](handleError(_0x27f3af,null));};exports['create']=function(_0x159e93,_0x5c9cea){var _0x21c0a6={'key':_0x159e93[_0x897d('0x49')]['key']};if(_0x159e93[_0x897d('0x49')][_0x897d('0x4a')]){_0x21c0a6[_0x897d('0x4a')]=_0x159e93[_0x897d('0x49')]['MailAccountId'];}else if(_0x159e93[_0x897d('0x49')][_0x897d('0x4b')]){_0x21c0a6[_0x897d('0x4b')]=_0x159e93['body'][_0x897d('0x4b')];}else if(_0x159e93[_0x897d('0x49')][_0x897d('0x4c')]){_0x21c0a6[_0x897d('0x4c')]=_0x159e93[_0x897d('0x49')][_0x897d('0x4c')];}else if(_0x159e93['body'][_0x897d('0x4d')]){_0x21c0a6[_0x897d('0x4d')]=_0x159e93[_0x897d('0x49')][_0x897d('0x4d')];}return db[_0x897d('0x2e')][_0x897d('0x48')]({'where':_0x21c0a6})[_0x897d('0x24')](function(_0xff6f6a){if(_0xff6f6a){throw new db[(_0x897d('0x4e'))][(_0x897d('0x4f'))]('The\x20inserted\x20key\x20already\x20exists.');}return db[_0x897d('0x2e')][_0x897d('0x50')](_0x159e93[_0x897d('0x49')]);})['then'](function(_0x437871){var _0x20c020=_0x159e93[_0x897d('0x51')][_0x897d('0x26')]({'plain':!![]});if(!_0x20c020)throw new Error(_0x897d('0x52'));if(_0x20c020['role']===_0x897d('0x51')){var _0x2186aa=_0x437871['get']({'plain':!![]});return db[_0x897d('0x53')][_0x897d('0x48')]({'where':{'name':_0x897d('0x27'),'userProfileId':_0x20c020[_0x897d('0x54')]},'raw':!![]})['then'](function(_0x1be392){if(_0x1be392&&_0x1be392['autoAssociation']===0x0){return db['UserProfileResource'][_0x897d('0x50')]({'name':_0x2186aa[_0x897d('0x2a')],'resourceId':_0x2186aa['id'],'type':_0x1be392[_0x897d('0x2a')],'sectionId':_0x1be392['id']},{})[_0x897d('0x24')](function(){return _0x437871;});}else{return _0x437871;}})[_0x897d('0x45')](function(_0x41d74d){logger[_0x897d('0x55')](_0x897d('0x56'),_0x41d74d);throw _0x41d74d;});}return _0x437871;})[_0x897d('0x24')](respondWithResult(_0x5c9cea,0xc9))[_0x897d('0x45')](handleError(_0x5c9cea,null));};
\ No newline at end of file
index a580360..dd342b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbefe=['util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./cannedAnswer.attributes','define','tools_canned_answers','utf8mb4'];(function(_0x2f3852,_0x18fb67){var _0x4ce88e=function(_0xb22dcf){while(--_0xb22dcf){_0x2f3852['push'](_0x2f3852['shift']());}};_0x4ce88e(++_0x18fb67);}(_0xbefe,0x168));var _0xebef=function(_0x288371,_0x35f999){_0x288371=_0x288371-0x0;var _0x5a1ad1=_0xbefe[_0x288371];return _0x5a1ad1;};'use strict';var _=require('lodash');var util=require(_0xebef('0x0'));var logger=require('../../config/logger')(_0xebef('0x1'));var moment=require(_0xebef('0x2'));var BPromise=require(_0xebef('0x3'));var rp=require(_0xebef('0x4'));var fs=require('fs');var path=require(_0xebef('0x5'));var rimraf=require(_0xebef('0x6'));var config=require(_0xebef('0x7'));var attributes=require(_0xebef('0x8'));module['exports']=function(_0x3fe404,_0x39de80){return _0x3fe404[_0xebef('0x9')]('CannedAnswer',attributes,{'tableName':_0xebef('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xebef('0xb'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xd607=['exports','define','CannedAnswer','tools_canned_answers','utf8mb4','utf8mb4_unicode_ci','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./cannedAnswer.attributes'];(function(_0x3207bb,_0x5f2a4f){var _0x17a08b=function(_0x587053){while(--_0x587053){_0x3207bb['push'](_0x3207bb['shift']());}};_0x17a08b(++_0x5f2a4f);}(_0xd607,0x1b9));var _0x7d60=function(_0x16f14d,_0x3ce972){_0x16f14d=_0x16f14d-0x0;var _0x4452aa=_0xd607[_0x16f14d];return _0x4452aa;};'use strict';var _=require(_0x7d60('0x0'));var util=require('util');var logger=require(_0x7d60('0x1'))(_0x7d60('0x2'));var moment=require(_0x7d60('0x3'));var BPromise=require(_0x7d60('0x4'));var rp=require(_0x7d60('0x5'));var fs=require('fs');var path=require(_0x7d60('0x6'));var rimraf=require(_0x7d60('0x7'));var config=require('../../config/environment');var attributes=require(_0x7d60('0x8'));module[_0x7d60('0x9')]=function(_0x167f80,_0xb0ae5a){return _0x167f80[_0x7d60('0xa')](_0x7d60('0xb'),attributes,{'tableName':_0x7d60('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x7d60('0xd'),'collate':_0x7d60('0xe')});};
\ No newline at end of file
index 4e97799..b545275 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(_0x2367aa,_0x48a675){var _0x2e50a5=function(_0x474496){while(--_0x474496){_0x2367aa['push'](_0x2367aa['shift']());}};_0x2e50a5(++_0x48a675);}(_0xa9e0,0x123));var _0x0a9e=function(_0x18a79d,_0x57bd2c){_0x18a79d=_0x18a79d-0x0;var _0x4f8848=_0xa9e0[_0x18a79d];return _0x4f8848;};'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(_0x21f5ec,_0x4a7394){var _0x373a52=function(_0x1f14d8){while(--_0x1f14d8){_0x21f5ec['push'](_0x21f5ec['shift']());}};_0x373a52(++_0x4a7394);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0xa9e0[_0x2f5ac5];return _0x37c9a8;};'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 6a6f152..11ff4b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe61f=['Router','fs-extra','../../components/auth/service','../../config/environment','./cannedAnswer.controller','get','isAuthenticated','/:id','show','post','put','update','destroy','exports','multer','util','path'];(function(_0x38ec07,_0x5d430a){var _0x322f99=function(_0x2745e7){while(--_0x2745e7){_0x38ec07['push'](_0x38ec07['shift']());}};_0x322f99(++_0x5d430a);}(_0xe61f,0xeb));var _0xfe61=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0xe61f[_0x57b54c];return _0x59cc19;};'use strict';var multer=require(_0xfe61('0x0'));var util=require(_0xfe61('0x1'));var path=require(_0xfe61('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xfe61('0x3')]();var fs_extra=require(_0xfe61('0x4'));var auth=require(_0xfe61('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xfe61('0x6'));var controller=require(_0xfe61('0x7'));router[_0xfe61('0x8')]('/',auth[_0xfe61('0x9')](),controller['index']);router['get'](_0xfe61('0xa'),auth[_0xfe61('0x9')](),controller[_0xfe61('0xb')]);router[_0xfe61('0xc')]('/',auth['isAuthenticated'](),controller['create']);router[_0xfe61('0xd')](_0xfe61('0xa'),auth[_0xfe61('0x9')](),controller[_0xfe61('0xe')]);router['delete'](_0xfe61('0xa'),auth[_0xfe61('0x9')](),controller[_0xfe61('0xf')]);module[_0xfe61('0x10')]=router;
\ No newline at end of file
+var _0xee64=['delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','create','put','update'];(function(_0x35da42,_0x5c2610){var _0x370035=function(_0x546db5){while(--_0x546db5){_0x35da42['push'](_0x35da42['shift']());}};_0x370035(++_0x5c2610);}(_0xee64,0x12f));var _0x4ee6=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xee64[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x4ee6('0x0'));var util=require(_0x4ee6('0x1'));var path=require('path');var timeout=require(_0x4ee6('0x2'));var express=require(_0x4ee6('0x3'));var router=express[_0x4ee6('0x4')]();var fs_extra=require(_0x4ee6('0x5'));var auth=require(_0x4ee6('0x6'));var interaction=require(_0x4ee6('0x7'));var config=require(_0x4ee6('0x8'));var controller=require('./cannedAnswer.controller');router[_0x4ee6('0x9')]('/',auth[_0x4ee6('0xa')](),controller[_0x4ee6('0xb')]);router[_0x4ee6('0x9')](_0x4ee6('0xc'),auth[_0x4ee6('0xa')](),controller[_0x4ee6('0xd')]);router['post']('/',auth[_0x4ee6('0xa')](),controller[_0x4ee6('0xe')]);router[_0x4ee6('0xf')](_0x4ee6('0xc'),auth['isAuthenticated'](),controller[_0x4ee6('0x10')]);router[_0x4ee6('0x11')](_0x4ee6('0xc'),auth[_0x4ee6('0xa')](),controller[_0x4ee6('0x12')]);module[_0x4ee6('0x13')]=router;
\ No newline at end of file
index 9f38bd4..d0da260 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a72=['STRING','INTEGER','exports','DATE'];(function(_0x1b02bb,_0x3d9fde){var _0x131245=function(_0x2fd1d8){while(--_0x2fd1d8){_0x1b02bb['push'](_0x1b02bb['shift']());}};_0x131245(++_0x3d9fde);}(_0x7a72,0x1be));var _0x27a7=function(_0x5e6943,_0x2e59da){_0x5e6943=_0x5e6943-0x0;var _0x7f52f2=_0x7a72[_0x5e6943];return _0x7f52f2;};'use strict';var Sequelize=require('sequelize');module[_0x27a7('0x0')]={'calldate':{'type':Sequelize[_0x27a7('0x1')],'allowNull':![],'defaultValue':'1970-01-01\x2000:00:01'},'clid':{'type':Sequelize[_0x27a7('0x2')]},'src':{'type':Sequelize['STRING']},'dst':{'type':Sequelize[_0x27a7('0x2')]},'dcontext':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x27a7('0x2')]},'dstchannel':{'type':Sequelize['STRING']},'lastapp':{'type':Sequelize[_0x27a7('0x2')]},'lastdata':{'type':Sequelize['STRING']},'duration':{'type':Sequelize[_0x27a7('0x3')],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize[_0x27a7('0x3')],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize['STRING']},'amaflags':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize[_0x27a7('0x2')]},'userfield':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0x27a7('0x2')]},'linkedid':{'type':Sequelize[_0x27a7('0x2')]},'sequence':{'type':Sequelize[_0x27a7('0x2')]},'peeraccount':{'type':Sequelize[_0x27a7('0x2')]},'type':{'type':Sequelize['STRING']},'tag':{'type':Sequelize[_0x27a7('0x2')]}};
\ No newline at end of file
+var _0x31c2=['sequelize','1970-01-01\x2000:00:01','STRING','INTEGER'];(function(_0x4496d4,_0x35a23c){var _0x549149=function(_0x466c13){while(--_0x466c13){_0x4496d4['push'](_0x4496d4['shift']());}};_0x549149(++_0x35a23c);}(_0x31c2,0x98));var _0x231c=function(_0x144f53,_0x25d34d){_0x144f53=_0x144f53-0x0;var _0x51cb13=_0x31c2[_0x144f53];return _0x51cb13;};'use strict';var Sequelize=require(_0x231c('0x0'));module['exports']={'calldate':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':_0x231c('0x1')},'clid':{'type':Sequelize[_0x231c('0x2')]},'src':{'type':Sequelize['STRING']},'dst':{'type':Sequelize[_0x231c('0x2')]},'dcontext':{'type':Sequelize[_0x231c('0x2')]},'channel':{'type':Sequelize[_0x231c('0x2')]},'dstchannel':{'type':Sequelize[_0x231c('0x2')]},'lastapp':{'type':Sequelize[_0x231c('0x2')]},'lastdata':{'type':Sequelize[_0x231c('0x2')]},'duration':{'type':Sequelize[_0x231c('0x3')],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize[_0x231c('0x3')],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize['STRING']},'amaflags':{'type':Sequelize[_0x231c('0x3')],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize['STRING']},'userfield':{'type':Sequelize[_0x231c('0x2')]},'uniqueid':{'type':Sequelize[_0x231c('0x2')]},'linkedid':{'type':Sequelize[_0x231c('0x2')]},'sequence':{'type':Sequelize[_0x231c('0x2')]},'peeraccount':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0x231c('0x2')]},'tag':{'type':Sequelize[_0x231c('0x2')]}};
\ No newline at end of file
index 0059bff..939ebbb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab86=['fieldName','type','key','model','keys','intersection','attributes','fields','length','query','hasOwnProperty','nolimit','order','sort','filters','pick','merge','filter','options','includeAll','findAll','rows','catch','show','params','find','create','body','update','describe','eml-format','rimraf','zip-dir','moment','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','then','destroy','sendStatus','stack','name','send','map','Cdr','rawAttributes'];(function(_0xf48cce,_0x3531e4){var _0x2a5c38=function(_0x22a454){while(--_0x22a454){_0xf48cce['push'](_0xf48cce['shift']());}};_0x2a5c38(++_0x3531e4);}(_0xab86,0x13e));var _0x6ab8=function(_0x179a64,_0x443ab2){_0x179a64=_0x179a64-0x0;var _0x34a105=_0xab86[_0x179a64];return _0x34a105;};'use strict';var emlformat=require(_0x6ab8('0x0'));var rimraf=require(_0x6ab8('0x1'));var zipdir=require(_0x6ab8('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x6ab8('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x6ab8('0x4'));var util=require('util');var path=require(_0x6ab8('0x5'));var sox=require(_0x6ab8('0x6'));var csv=require(_0x6ab8('0x7'));var ejs=require(_0x6ab8('0x8'));var fs=require('fs');var fs_extra=require(_0x6ab8('0x9'));var _=require(_0x6ab8('0xa'));var squel=require(_0x6ab8('0xb'));var crypto=require(_0x6ab8('0xc'));var jsforce=require(_0x6ab8('0xd'));var deskjs=require(_0x6ab8('0xe'));var toCsv=require(_0x6ab8('0x7'));var querystring=require(_0x6ab8('0xf'));var Papa=require(_0x6ab8('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x6ab8('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x6ab8('0x12'));var logger=require(_0x6ab8('0x13'))(_0x6ab8('0x14'));var utils=require('../../config/utils');var config=require(_0x6ab8('0x15'));var licenseUtil=require(_0x6ab8('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x44d1d9,_0x1b9b34){_0x1b9b34=_0x1b9b34||0xcc;return function(_0x408ce1){if(_0x408ce1){return _0x44d1d9['sendStatus'](_0x1b9b34);}return _0x44d1d9[_0x6ab8('0x17')](_0x1b9b34)[_0x6ab8('0x18')]();};}function respondWithResult(_0x60b50,_0x968bac){_0x968bac=_0x968bac||0xc8;return function(_0x1c83a1){if(_0x1c83a1){return _0x60b50[_0x6ab8('0x17')](_0x968bac)[_0x6ab8('0x19')](_0x1c83a1);}};}function respondWithFilteredResult(_0x2043bb,_0x293389){return function(_0x5218e9){if(_0x5218e9){var _0x1f64a3=typeof _0x293389[_0x6ab8('0x1a')]===_0x6ab8('0x1b')&&typeof _0x293389['limit']===_0x6ab8('0x1b');var _0x35b790=_0x5218e9['count'];var _0x543726=_0x1f64a3?0x0:_0x293389[_0x6ab8('0x1a')];var _0x57cd18=_0x1f64a3?_0x5218e9[_0x6ab8('0x1c')]:_0x293389[_0x6ab8('0x1a')]+_0x293389[_0x6ab8('0x1d')];var _0x4e0fbd;if(_0x57cd18>=_0x35b790){_0x57cd18=_0x35b790;_0x4e0fbd=0xc8;}else{_0x4e0fbd=0xce;}_0x2043bb[_0x6ab8('0x17')](_0x4e0fbd);return _0x2043bb[_0x6ab8('0x1e')](_0x6ab8('0x1f'),_0x543726+'-'+_0x57cd18+'/'+_0x35b790)[_0x6ab8('0x19')](_0x5218e9);}return null;};}function patchUpdates(_0x5227c6){return function(_0x301004){try{jsonpatch[_0x6ab8('0x20')](_0x301004,_0x5227c6,!![]);}catch(_0x520cd8){return BPromise['reject'](_0x520cd8);}return _0x301004['save']();};}function saveUpdates(_0x190af2,_0x46cfdc){return function(_0xe2d5d8){if(_0xe2d5d8){return _0xe2d5d8['update'](_0x190af2)[_0x6ab8('0x21')](function(_0x433f37){return _0x433f37;});}return null;};}function removeEntity(_0x50fc50,_0x503f94){return function(_0x8af7e9){if(_0x8af7e9){return _0x8af7e9[_0x6ab8('0x22')]()['then'](function(){_0x50fc50[_0x6ab8('0x17')](0xcc)[_0x6ab8('0x18')]();});}};}function handleEntityNotFound(_0x24e400,_0x3d614b){return function(_0x3ddaeb){if(!_0x3ddaeb){_0x24e400[_0x6ab8('0x23')](0x194);}return _0x3ddaeb;};}function handleError(_0x2e098f,_0x1e26ed){_0x1e26ed=_0x1e26ed||0x1f4;return function(_0x5a1be3){logger['error'](_0x5a1be3[_0x6ab8('0x24')]);if(_0x5a1be3['name']){delete _0x5a1be3[_0x6ab8('0x25')];}_0x2e098f[_0x6ab8('0x17')](_0x1e26ed)[_0x6ab8('0x26')](_0x5a1be3);};}exports['index']=function(_0x525687,_0x4871e3){var _0x79dbd3={},_0x14e822={},_0x3723a7={'count':0x0,'rows':[]};var _0x2f14ea=_[_0x6ab8('0x27')](db[_0x6ab8('0x28')][_0x6ab8('0x29')],function(_0x4eda0b){return{'name':_0x4eda0b[_0x6ab8('0x2a')],'type':_0x4eda0b[_0x6ab8('0x2b')][_0x6ab8('0x2c')]};});_0x14e822[_0x6ab8('0x2d')]=_[_0x6ab8('0x27')](_0x2f14ea,'name');_0x14e822['query']=_[_0x6ab8('0x2e')](_0x525687['query']);_0x14e822['filters']=_[_0x6ab8('0x2f')](_0x14e822[_0x6ab8('0x2d')],_0x14e822['query']);_0x79dbd3[_0x6ab8('0x30')]=_['intersection'](_0x14e822[_0x6ab8('0x2d')],qs[_0x6ab8('0x31')](_0x525687['query']['fields']));_0x79dbd3[_0x6ab8('0x30')]=_0x79dbd3[_0x6ab8('0x30')][_0x6ab8('0x32')]?_0x79dbd3[_0x6ab8('0x30')]:_0x14e822[_0x6ab8('0x2d')];if(!_0x525687[_0x6ab8('0x33')][_0x6ab8('0x34')](_0x6ab8('0x35'))){_0x79dbd3['limit']=qs[_0x6ab8('0x1d')](_0x525687[_0x6ab8('0x33')][_0x6ab8('0x1d')]);_0x79dbd3[_0x6ab8('0x1a')]=qs[_0x6ab8('0x1a')](_0x525687[_0x6ab8('0x33')]['offset']);}_0x79dbd3[_0x6ab8('0x36')]=qs[_0x6ab8('0x37')](_0x525687[_0x6ab8('0x33')]['sort']);_0x79dbd3['where']=qs[_0x6ab8('0x38')](_[_0x6ab8('0x39')](_0x525687[_0x6ab8('0x33')],_0x14e822[_0x6ab8('0x38')]),_0x2f14ea);if(_0x525687[_0x6ab8('0x33')]['filter']){_0x79dbd3['where']=_[_0x6ab8('0x3a')](_0x79dbd3['where'],{'$or':_[_0x6ab8('0x27')](_0x2f14ea,function(_0x9ca6ed){if(_0x9ca6ed['type']!=='VIRTUAL'){var _0x8d76aa={};_0x8d76aa[_0x9ca6ed[_0x6ab8('0x25')]]={'$like':'%'+_0x525687[_0x6ab8('0x33')][_0x6ab8('0x3b')]+'%'};return _0x8d76aa;}})});}_0x79dbd3=_[_0x6ab8('0x3a')]({},_0x79dbd3,_0x525687[_0x6ab8('0x3c')]);var _0xef0ce5={'where':_0x79dbd3['where']};return db['Cdr'][_0x6ab8('0x1c')](_0xef0ce5)[_0x6ab8('0x21')](function(_0x146f43){_0x3723a7[_0x6ab8('0x1c')]=_0x146f43;if(_0x525687['query'][_0x6ab8('0x3d')]){_0x79dbd3['include']=[{'all':!![]}];}return db['Cdr'][_0x6ab8('0x3e')](_0x79dbd3);})[_0x6ab8('0x21')](function(_0x45735d){_0x3723a7[_0x6ab8('0x3f')]=_0x45735d;return _0x3723a7;})[_0x6ab8('0x21')](respondWithFilteredResult(_0x4871e3,_0x79dbd3))[_0x6ab8('0x40')](handleError(_0x4871e3,null));};exports[_0x6ab8('0x41')]=function(_0xf3abb8,_0x2494c3){var _0x45c70d={'raw':!![],'where':{'id':_0xf3abb8[_0x6ab8('0x42')]['id']}},_0xc32c6e={};_0xc32c6e['model']=_[_0x6ab8('0x2e')](db[_0x6ab8('0x28')][_0x6ab8('0x29')]);_0xc32c6e[_0x6ab8('0x33')]=_['keys'](_0xf3abb8[_0x6ab8('0x33')]);_0xc32c6e['filters']=_[_0x6ab8('0x2f')](_0xc32c6e[_0x6ab8('0x2d')],_0xc32c6e['query']);_0x45c70d[_0x6ab8('0x30')]=_[_0x6ab8('0x2f')](_0xc32c6e['model'],qs[_0x6ab8('0x31')](_0xf3abb8[_0x6ab8('0x33')][_0x6ab8('0x31')]));_0x45c70d[_0x6ab8('0x30')]=_0x45c70d[_0x6ab8('0x30')]['length']?_0x45c70d['attributes']:_0xc32c6e['model'];if(_0xf3abb8[_0x6ab8('0x33')][_0x6ab8('0x3d')]){_0x45c70d['include']=[{'all':!![]}];}_0x45c70d=_[_0x6ab8('0x3a')]({},_0x45c70d,_0xf3abb8[_0x6ab8('0x3c')]);return db[_0x6ab8('0x28')][_0x6ab8('0x43')](_0x45c70d)[_0x6ab8('0x21')](handleEntityNotFound(_0x2494c3,null))[_0x6ab8('0x21')](respondWithResult(_0x2494c3,null))['catch'](handleError(_0x2494c3,null));};exports[_0x6ab8('0x44')]=function(_0x74de32,_0x4b00cc){return db[_0x6ab8('0x28')][_0x6ab8('0x44')](_0x74de32[_0x6ab8('0x45')],{})['then'](respondWithResult(_0x4b00cc,0xc9))['catch'](handleError(_0x4b00cc,null));};exports[_0x6ab8('0x46')]=function(_0x4c27fa,_0x31965e){if(_0x4c27fa['body']['id']){delete _0x4c27fa[_0x6ab8('0x45')]['id'];}return db[_0x6ab8('0x28')][_0x6ab8('0x43')]({'where':{'id':_0x4c27fa[_0x6ab8('0x42')]['id']}})[_0x6ab8('0x21')](handleEntityNotFound(_0x31965e,null))[_0x6ab8('0x21')](saveUpdates(_0x4c27fa['body'],null))['then'](respondWithResult(_0x31965e,null))['catch'](handleError(_0x31965e,null));};exports[_0x6ab8('0x22')]=function(_0x54708b,_0xce83a3){return db[_0x6ab8('0x28')][_0x6ab8('0x43')]({'where':{'id':_0x54708b[_0x6ab8('0x42')]['id']}})[_0x6ab8('0x21')](handleEntityNotFound(_0xce83a3,null))[_0x6ab8('0x21')](removeEntity(_0xce83a3,null))[_0x6ab8('0x40')](handleError(_0xce83a3,null));};exports[_0x6ab8('0x47')]=function(_0x4d4e88,_0x1a372b){return db[_0x6ab8('0x28')][_0x6ab8('0x47')]()[_0x6ab8('0x21')](respondWithResult(_0x1a372b,null))['catch'](handleError(_0x1a372b,null));};
\ No newline at end of file
+var _0x0faf=['includeAll','options','find','create','body','destroy','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','update','then','error','name','send','index','Cdr','rawAttributes','type','key','model','map','query','filters','intersection','fields','attributes','length','hasOwnProperty','sort','where','pick','merge','VIRTUAL','filter','include','findAll','rows','catch','show','params','keys'];(function(_0x1ff3ca,_0x827b75){var _0x25714e=function(_0x4e2bae){while(--_0x4e2bae){_0x1ff3ca['push'](_0x1ff3ca['shift']());}};_0x25714e(++_0x827b75);}(_0x0faf,0x132));var _0xf0fa=function(_0xe66cf2,_0x32ba5f){_0xe66cf2=_0xe66cf2-0x0;var _0x2d84e7=_0x0faf[_0xe66cf2];return _0x2d84e7;};'use strict';var emlformat=require(_0xf0fa('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xf0fa('0x1'));var jsonpatch=require(_0xf0fa('0x2'));var rp=require(_0xf0fa('0x3'));var moment=require(_0xf0fa('0x4'));var BPromise=require(_0xf0fa('0x5'));var Mustache=require(_0xf0fa('0x6'));var util=require(_0xf0fa('0x7'));var path=require(_0xf0fa('0x8'));var sox=require(_0xf0fa('0x9'));var csv=require('to-csv');var ejs=require(_0xf0fa('0xa'));var fs=require('fs');var fs_extra=require(_0xf0fa('0xb'));var _=require(_0xf0fa('0xc'));var squel=require(_0xf0fa('0xd'));var crypto=require(_0xf0fa('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xf0fa('0xf'));var toCsv=require(_0xf0fa('0x10'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xf0fa('0x11'));var authService=require(_0xf0fa('0x12'));var qs=require(_0xf0fa('0x13'));var as=require(_0xf0fa('0x14'));var hardwareService=require(_0xf0fa('0x15'));var logger=require(_0xf0fa('0x16'))(_0xf0fa('0x17'));var utils=require(_0xf0fa('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0xf0fa('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2f46ff,_0x521034){_0x521034=_0x521034||0xcc;return function(_0x39ae2b){if(_0x39ae2b){return _0x2f46ff[_0xf0fa('0x1a')](_0x521034);}return _0x2f46ff[_0xf0fa('0x1b')](_0x521034)['end']();};}function respondWithResult(_0x5821ae,_0x42591b){_0x42591b=_0x42591b||0xc8;return function(_0x540a04){if(_0x540a04){return _0x5821ae[_0xf0fa('0x1b')](_0x42591b)[_0xf0fa('0x1c')](_0x540a04);}};}function respondWithFilteredResult(_0x10ce43,_0x3203ce){return function(_0x467d5f){if(_0x467d5f){var _0x33df80=typeof _0x3203ce[_0xf0fa('0x1d')]===_0xf0fa('0x1e')&&typeof _0x3203ce['limit']===_0xf0fa('0x1e');var _0x477914=_0x467d5f[_0xf0fa('0x1f')];var _0x1d3c22=_0x33df80?0x0:_0x3203ce[_0xf0fa('0x1d')];var _0x386e5f=_0x33df80?_0x467d5f['count']:_0x3203ce['offset']+_0x3203ce[_0xf0fa('0x20')];var _0x2751cc;if(_0x386e5f>=_0x477914){_0x386e5f=_0x477914;_0x2751cc=0xc8;}else{_0x2751cc=0xce;}_0x10ce43[_0xf0fa('0x1b')](_0x2751cc);return _0x10ce43[_0xf0fa('0x21')](_0xf0fa('0x22'),_0x1d3c22+'-'+_0x386e5f+'/'+_0x477914)[_0xf0fa('0x1c')](_0x467d5f);}return null;};}function patchUpdates(_0x32c9bc){return function(_0x3de639){try{jsonpatch[_0xf0fa('0x23')](_0x3de639,_0x32c9bc,!![]);}catch(_0x15942b){return BPromise[_0xf0fa('0x24')](_0x15942b);}return _0x3de639['save']();};}function saveUpdates(_0x10c93e,_0x306f3e){return function(_0x39e82d){if(_0x39e82d){return _0x39e82d[_0xf0fa('0x25')](_0x10c93e)[_0xf0fa('0x26')](function(_0x2b22c5){return _0x2b22c5;});}return null;};}function removeEntity(_0x3901aa,_0x1f0eaf){return function(_0x3feb0c){if(_0x3feb0c){return _0x3feb0c['destroy']()[_0xf0fa('0x26')](function(){_0x3901aa[_0xf0fa('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3b5d7d,_0x3703b5){return function(_0x2efe88){if(!_0x2efe88){_0x3b5d7d['sendStatus'](0x194);}return _0x2efe88;};}function handleError(_0xded80d,_0x284499){_0x284499=_0x284499||0x1f4;return function(_0x3d10fb){logger[_0xf0fa('0x27')](_0x3d10fb['stack']);if(_0x3d10fb['name']){delete _0x3d10fb[_0xf0fa('0x28')];}_0xded80d[_0xf0fa('0x1b')](_0x284499)[_0xf0fa('0x29')](_0x3d10fb);};}exports[_0xf0fa('0x2a')]=function(_0x57b8e9,_0x4058d6){var _0x409a8c={},_0x1279cf={},_0x5a4fd3={'count':0x0,'rows':[]};var _0x9ad0e3=_['map'](db[_0xf0fa('0x2b')][_0xf0fa('0x2c')],function(_0x28e057){return{'name':_0x28e057['fieldName'],'type':_0x28e057[_0xf0fa('0x2d')][_0xf0fa('0x2e')]};});_0x1279cf[_0xf0fa('0x2f')]=_[_0xf0fa('0x30')](_0x9ad0e3,_0xf0fa('0x28'));_0x1279cf[_0xf0fa('0x31')]=_['keys'](_0x57b8e9['query']);_0x1279cf[_0xf0fa('0x32')]=_[_0xf0fa('0x33')](_0x1279cf['model'],_0x1279cf[_0xf0fa('0x31')]);_0x409a8c['attributes']=_['intersection'](_0x1279cf['model'],qs[_0xf0fa('0x34')](_0x57b8e9['query'][_0xf0fa('0x34')]));_0x409a8c[_0xf0fa('0x35')]=_0x409a8c[_0xf0fa('0x35')][_0xf0fa('0x36')]?_0x409a8c[_0xf0fa('0x35')]:_0x1279cf[_0xf0fa('0x2f')];if(!_0x57b8e9[_0xf0fa('0x31')][_0xf0fa('0x37')]('nolimit')){_0x409a8c[_0xf0fa('0x20')]=qs[_0xf0fa('0x20')](_0x57b8e9[_0xf0fa('0x31')]['limit']);_0x409a8c[_0xf0fa('0x1d')]=qs[_0xf0fa('0x1d')](_0x57b8e9[_0xf0fa('0x31')][_0xf0fa('0x1d')]);}_0x409a8c['order']=qs['sort'](_0x57b8e9[_0xf0fa('0x31')][_0xf0fa('0x38')]);_0x409a8c[_0xf0fa('0x39')]=qs[_0xf0fa('0x32')](_[_0xf0fa('0x3a')](_0x57b8e9['query'],_0x1279cf['filters']),_0x9ad0e3);if(_0x57b8e9['query']['filter']){_0x409a8c[_0xf0fa('0x39')]=_[_0xf0fa('0x3b')](_0x409a8c['where'],{'$or':_['map'](_0x9ad0e3,function(_0xdada45){if(_0xdada45[_0xf0fa('0x2d')]!==_0xf0fa('0x3c')){var _0xcd5ae5={};_0xcd5ae5[_0xdada45[_0xf0fa('0x28')]]={'$like':'%'+_0x57b8e9[_0xf0fa('0x31')][_0xf0fa('0x3d')]+'%'};return _0xcd5ae5;}})});}_0x409a8c=_['merge']({},_0x409a8c,_0x57b8e9['options']);var _0x344bb0={'where':_0x409a8c[_0xf0fa('0x39')]};return db[_0xf0fa('0x2b')][_0xf0fa('0x1f')](_0x344bb0)[_0xf0fa('0x26')](function(_0x1d0129){_0x5a4fd3['count']=_0x1d0129;if(_0x57b8e9[_0xf0fa('0x31')]['includeAll']){_0x409a8c[_0xf0fa('0x3e')]=[{'all':!![]}];}return db[_0xf0fa('0x2b')][_0xf0fa('0x3f')](_0x409a8c);})[_0xf0fa('0x26')](function(_0x14bee8){_0x5a4fd3[_0xf0fa('0x40')]=_0x14bee8;return _0x5a4fd3;})[_0xf0fa('0x26')](respondWithFilteredResult(_0x4058d6,_0x409a8c))[_0xf0fa('0x41')](handleError(_0x4058d6,null));};exports[_0xf0fa('0x42')]=function(_0x57fbc5,_0x51ea79){var _0x52221a={'raw':!![],'where':{'id':_0x57fbc5[_0xf0fa('0x43')]['id']}},_0x304bae={};_0x304bae['model']=_[_0xf0fa('0x44')](db[_0xf0fa('0x2b')][_0xf0fa('0x2c')]);_0x304bae[_0xf0fa('0x31')]=_['keys'](_0x57fbc5[_0xf0fa('0x31')]);_0x304bae[_0xf0fa('0x32')]=_[_0xf0fa('0x33')](_0x304bae[_0xf0fa('0x2f')],_0x304bae[_0xf0fa('0x31')]);_0x52221a[_0xf0fa('0x35')]=_[_0xf0fa('0x33')](_0x304bae[_0xf0fa('0x2f')],qs[_0xf0fa('0x34')](_0x57fbc5['query'][_0xf0fa('0x34')]));_0x52221a[_0xf0fa('0x35')]=_0x52221a[_0xf0fa('0x35')][_0xf0fa('0x36')]?_0x52221a[_0xf0fa('0x35')]:_0x304bae[_0xf0fa('0x2f')];if(_0x57fbc5['query'][_0xf0fa('0x45')]){_0x52221a[_0xf0fa('0x3e')]=[{'all':!![]}];}_0x52221a=_['merge']({},_0x52221a,_0x57fbc5[_0xf0fa('0x46')]);return db[_0xf0fa('0x2b')][_0xf0fa('0x47')](_0x52221a)[_0xf0fa('0x26')](handleEntityNotFound(_0x51ea79,null))[_0xf0fa('0x26')](respondWithResult(_0x51ea79,null))[_0xf0fa('0x41')](handleError(_0x51ea79,null));};exports[_0xf0fa('0x48')]=function(_0x32bf89,_0x35272e){return db['Cdr'][_0xf0fa('0x48')](_0x32bf89['body'],{})[_0xf0fa('0x26')](respondWithResult(_0x35272e,0xc9))[_0xf0fa('0x41')](handleError(_0x35272e,null));};exports[_0xf0fa('0x25')]=function(_0x569ba9,_0x324765){if(_0x569ba9[_0xf0fa('0x49')]['id']){delete _0x569ba9[_0xf0fa('0x49')]['id'];}return db[_0xf0fa('0x2b')][_0xf0fa('0x47')]({'where':{'id':_0x569ba9['params']['id']}})[_0xf0fa('0x26')](handleEntityNotFound(_0x324765,null))['then'](saveUpdates(_0x569ba9[_0xf0fa('0x49')],null))[_0xf0fa('0x26')](respondWithResult(_0x324765,null))[_0xf0fa('0x41')](handleError(_0x324765,null));};exports[_0xf0fa('0x4a')]=function(_0x8090a7,_0x5dd098){return db[_0xf0fa('0x2b')][_0xf0fa('0x47')]({'where':{'id':_0x8090a7[_0xf0fa('0x43')]['id']}})[_0xf0fa('0x26')](handleEntityNotFound(_0x5dd098,null))[_0xf0fa('0x26')](removeEntity(_0x5dd098,null))[_0xf0fa('0x41')](handleError(_0x5dd098,null));};exports['describe']=function(_0x44a3bf,_0x5e1e8e){return db['Cdr']['describe']()[_0xf0fa('0x26')](respondWithResult(_0x5e1e8e,null))[_0xf0fa('0x41')](handleError(_0x5e1e8e,null));};
\ No newline at end of file
index 839bfd6..55b2be0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['dst','src','uniqueid','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./cdr.attributes','exports','define','Cdr','accountcode','calldate','disposition'];(function(_0x63416d,_0xc47f1){var _0x27b160=function(_0x3191cb){while(--_0x3191cb){_0x63416d['push'](_0x63416d['shift']());}};_0x27b160(++_0xc47f1);}(_0x9957,0x93));var _0x7995=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x9957[_0x6c993a];return _0x27f547;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var logger=require(_0x7995('0x2'))(_0x7995('0x3'));var moment=require('moment');var BPromise=require(_0x7995('0x4'));var rp=require(_0x7995('0x5'));var fs=require('fs');var path=require(_0x7995('0x6'));var rimraf=require(_0x7995('0x7'));var config=require('../../config/environment');var attributes=require(_0x7995('0x8'));module[_0x7995('0x9')]=function(_0x137b6b,_0x219534){return _0x137b6b[_0x7995('0xa')](_0x7995('0xb'),attributes,{'tableName':'cdr','paranoid':![],'indexes':[{'name':_0x7995('0xc'),'fields':[_0x7995('0xc')]},{'name':'calldate','fields':[_0x7995('0xd')]},{'name':_0x7995('0xe'),'fields':[_0x7995('0xe')]},{'name':_0x7995('0xf'),'fields':[_0x7995('0xf')]},{'name':_0x7995('0x10'),'fields':[_0x7995('0x10')]},{'name':'uniqueid','fields':[_0x7995('0x11')]}],'timestamps':![]});};
\ No newline at end of file
+var _0x7a54=['Cdr','cdr','accountcode','disposition','dst','src','uniqueid','lodash','util','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./cdr.attributes','exports'];(function(_0x3ced25,_0x3b1607){var _0x56b978=function(_0x3c4fb4){while(--_0x3c4fb4){_0x3ced25['push'](_0x3ced25['shift']());}};_0x56b978(++_0x3b1607);}(_0x7a54,0x106));var _0x47a5=function(_0x215e67,_0xd48255){_0x215e67=_0x215e67-0x0;var _0x1502bb=_0x7a54[_0x215e67];return _0x1502bb;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var logger=require(_0x47a5('0x2'))('api');var moment=require(_0x47a5('0x3'));var BPromise=require(_0x47a5('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x47a5('0x5'));var rimraf=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var attributes=require(_0x47a5('0x8'));module[_0x47a5('0x9')]=function(_0x545a97,_0x3d5629){return _0x545a97['define'](_0x47a5('0xa'),attributes,{'tableName':_0x47a5('0xb'),'paranoid':![],'indexes':[{'name':'accountcode','fields':[_0x47a5('0xc')]},{'name':'calldate','fields':['calldate']},{'name':'disposition','fields':[_0x47a5('0xd')]},{'name':_0x47a5('0xe'),'fields':['dst']},{'name':_0x47a5('0xf'),'fields':['src']},{'name':'uniqueid','fields':[_0x47a5('0x10')]}],'timestamps':![]});};
\ No newline at end of file
index 2bb5ef1..4c508a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5110=['error','result','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','request','info','Cdr,\x20%s,\x20%s','request\x20sent','debug','Cdr,\x20%s,\x20%s,\x20%s','stringify','message'];(function(_0x25d32f,_0xa94269){var _0x925e6e=function(_0x570a3a){while(--_0x570a3a){_0x25d32f['push'](_0x25d32f['shift']());}};_0x925e6e(++_0xa94269);}(_0x5110,0x16b));var _0x0511=function(_0x2311df,_0x55a309){_0x2311df=_0x2311df-0x0;var _0x1eece9=_0x5110[_0x2311df];return _0x1eece9;};'use strict';var _=require(_0x0511('0x0'));var util=require(_0x0511('0x1'));var moment=require('moment');var BPromise=require(_0x0511('0x2'));var rs=require(_0x0511('0x3'));var fs=require('fs');var Redis=require(_0x0511('0x4'));var db=require(_0x0511('0x5'))['db'];var utils=require(_0x0511('0x6'));var logger=require('../../config/logger')(_0x0511('0x7'));var config=require(_0x0511('0x8'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x315fa3,_0x4ab067,_0x43f88e){return new BPromise(function(_0x2d9d84,_0x1afade){return client[_0x0511('0x9')](_0x315fa3,_0x43f88e)['then'](function(_0x406baa){logger[_0x0511('0xa')](_0x0511('0xb'),_0x4ab067,_0x0511('0xc'));logger[_0x0511('0xd')](_0x0511('0xe'),_0x4ab067,_0x0511('0xc'),JSON[_0x0511('0xf')](_0x406baa));if(_0x406baa['error']){if(_0x406baa['error']['code']===0x1f4){logger['error'](_0x0511('0xb'),_0x4ab067,_0x406baa['error'][_0x0511('0x10')]);return _0x1afade(_0x406baa[_0x0511('0x11')][_0x0511('0x10')]);}logger[_0x0511('0x11')]('Cdr,\x20%s,\x20%s',_0x4ab067,_0x406baa[_0x0511('0x11')][_0x0511('0x10')]);return _0x2d9d84(_0x406baa['error'][_0x0511('0x10')]);}else{logger[_0x0511('0xa')](_0x0511('0xb'),_0x4ab067,_0x0511('0xc'));_0x2d9d84(_0x406baa[_0x0511('0x12')][_0x0511('0x10')]);}})['catch'](function(_0x44f5db){logger[_0x0511('0x11')](_0x0511('0xb'),_0x4ab067,_0x44f5db);_0x1afade(_0x44f5db);});});}
\ No newline at end of file
+var _0x3798=['request\x20sent','debug','Cdr,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','request','then','Cdr,\x20%s,\x20%s'];(function(_0x1288b3,_0x45e5dd){var _0xa46a94=function(_0x235487){while(--_0x235487){_0x1288b3['push'](_0x1288b3['shift']());}};_0xa46a94(++_0x45e5dd);}(_0x3798,0xcf));var _0x8379=function(_0x352bfe,_0x3dcc6c){_0x352bfe=_0x352bfe-0x0;var _0x4c22ec=_0x3798[_0x352bfe];return _0x4c22ec;};'use strict';var _=require('lodash');var util=require(_0x8379('0x0'));var moment=require(_0x8379('0x1'));var BPromise=require(_0x8379('0x2'));var rs=require(_0x8379('0x3'));var fs=require('fs');var Redis=require(_0x8379('0x4'));var db=require(_0x8379('0x5'))['db'];var utils=require(_0x8379('0x6'));var logger=require('../../config/logger')(_0x8379('0x7'));var config=require(_0x8379('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x8379('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x55afba,_0x5537a8,_0x526eed){return new BPromise(function(_0x27d5a3,_0x4ce4cc){return client[_0x8379('0xa')](_0x55afba,_0x526eed)[_0x8379('0xb')](function(_0x329a7d){logger['info'](_0x8379('0xc'),_0x5537a8,_0x8379('0xd'));logger[_0x8379('0xe')](_0x8379('0xf'),_0x5537a8,'request\x20sent',JSON[_0x8379('0x10')](_0x329a7d));if(_0x329a7d[_0x8379('0x11')]){if(_0x329a7d['error'][_0x8379('0x12')]===0x1f4){logger['error']('Cdr,\x20%s,\x20%s',_0x5537a8,_0x329a7d[_0x8379('0x11')][_0x8379('0x13')]);return _0x4ce4cc(_0x329a7d[_0x8379('0x11')][_0x8379('0x13')]);}logger[_0x8379('0x11')](_0x8379('0xc'),_0x5537a8,_0x329a7d[_0x8379('0x11')]['message']);return _0x27d5a3(_0x329a7d[_0x8379('0x11')][_0x8379('0x13')]);}else{logger['info'](_0x8379('0xc'),_0x5537a8,_0x8379('0xd'));_0x27d5a3(_0x329a7d[_0x8379('0x14')][_0x8379('0x13')]);}})[_0x8379('0x15')](function(_0x3e087a){logger[_0x8379('0x11')](_0x8379('0xc'),_0x5537a8,_0x3e087a);_0x4ce4cc(_0x3e087a);});});}
\ No newline at end of file
index dfefb91..d3fc38a 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(_0x31659b,_0x3f07a1){var _0x48b140=function(_0x3b295c){while(--_0x3b295c){_0x31659b['push'](_0x31659b['shift']());}};_0x48b140(++_0x3f07a1);}(_0xd8b0,0xad));var _0x0d8b=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xd8b0[_0xa464c9];return _0x3d73c4;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));var controller=require('./cdr.controller');router['get']('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x8')]);router[_0x0d8b('0x9')]('/describe',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xa')]);router['get'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xc')]);router[_0x0d8b('0xd')]('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xe')]);router[_0x0d8b('0xf')](_0x0d8b('0xb'),auth['isAuthenticated'](),controller[_0x0d8b('0x10')]);router['delete'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x11')]);module[_0x0d8b('0x12')]=router;
\ No newline at end of file
+var _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(_0x382a62,_0x1baa5e){var _0x490a25=function(_0x1b3427){while(--_0x1b3427){_0x382a62['push'](_0x382a62['shift']());}};_0x490a25(++_0x1baa5e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2bf141,_0x31eac7){_0x2bf141=_0x2bf141-0x0;var _0x48277b=_0xa9e0[_0x2bf141];return _0x48277b;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['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 c5709ac..40675d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa2a8=['STRING','TEXT','sequelize','exports','INTEGER'];(function(_0x367e5b,_0x5721e4){var _0x4b909e=function(_0x22c6a4){while(--_0x22c6a4){_0x367e5b['push'](_0x367e5b['shift']());}};_0x4b909e(++_0x5721e4);}(_0xa2a8,0x89));var _0x8a2a=function(_0x5d6494,_0x1f6d6a){_0x5d6494=_0x5d6494-0x0;var _0x1bde5e=_0xa2a8[_0x5d6494];return _0x1bde5e;};'use strict';var Sequelize=require(_0x8a2a('0x0'));module[_0x8a2a('0x1')]={'priority':{'type':Sequelize[_0x8a2a('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x8a2a('0x3')],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize[_0x8a2a('0x4')]()},'description':{'type':Sequelize[_0x8a2a('0x3')]},'interval':{'type':Sequelize['STRING'],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
+var _0xc52b=['*,*,*,*','sequelize','exports','STRING','noop','TEXT'];(function(_0x2d61b2,_0x142947){var _0x12df89=function(_0x31c717){while(--_0x31c717){_0x2d61b2['push'](_0x2d61b2['shift']());}};_0x12df89(++_0x142947);}(_0xc52b,0x1e7));var _0xbc52=function(_0x4837b1,_0x2a645c){_0x4837b1=_0x4837b1-0x0;var _0x17e800=_0xc52b[_0x4837b1];return _0x17e800;};'use strict';var Sequelize=require(_0xbc52('0x0'));module[_0xbc52('0x1')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0xbc52('0x2')],'allowNull':![],'defaultValue':_0xbc52('0x3')},'appdata':{'type':Sequelize[_0xbc52('0x4')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0xbc52('0x2')],'defaultValue':_0xbc52('0x5')}};
\ No newline at end of file
index 5bc1034..66ae0fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x33d2=['fields','length','includeAll','merge','options','find','catch','body','params','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','querystring','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','stack','name','show','keys','ChatApplication','rawAttributes','query','filters','intersection','model','attributes'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x33d2,0x7f));var _0x233d=function(_0x37e845,_0x219f9f){_0x37e845=_0x37e845-0x0;var _0x59e55b=_0x33d2[_0x37e845];return _0x59e55b;};'use strict';var emlformat=require(_0x233d('0x0'));var rimraf=require(_0x233d('0x1'));var zipdir=require(_0x233d('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x233d('0x3'));var moment=require(_0x233d('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x233d('0x5'));var util=require(_0x233d('0x6'));var path=require(_0x233d('0x7'));var sox=require(_0x233d('0x8'));var csv=require(_0x233d('0x9'));var ejs=require(_0x233d('0xa'));var fs=require('fs');var fs_extra=require(_0x233d('0xb'));var _=require(_0x233d('0xc'));var squel=require('squel');var crypto=require(_0x233d('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x233d('0xe'));var toCsv=require(_0x233d('0x9'));var querystring=require(_0x233d('0xf'));var Papa=require('papaparse');var Redis=require(_0x233d('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x233d('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x233d('0x12'));var logger=require(_0x233d('0x13'))(_0x233d('0x14'));var utils=require('../../config/utils');var config=require(_0x233d('0x15'));var licenseUtil=require(_0x233d('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2d36d3,_0x19f04c){_0x19f04c=_0x19f04c||0xcc;return function(_0x51c461){if(_0x51c461){return _0x2d36d3[_0x233d('0x17')](_0x19f04c);}return _0x2d36d3[_0x233d('0x18')](_0x19f04c)[_0x233d('0x19')]();};}function respondWithResult(_0x50a166,_0x36627d){_0x36627d=_0x36627d||0xc8;return function(_0x294703){if(_0x294703){return _0x50a166[_0x233d('0x18')](_0x36627d)[_0x233d('0x1a')](_0x294703);}};}function respondWithFilteredResult(_0xda6da2,_0x59b818){return function(_0xd7624c){if(_0xd7624c){var _0x552bbd=typeof _0x59b818[_0x233d('0x1b')]===_0x233d('0x1c')&&typeof _0x59b818[_0x233d('0x1d')]===_0x233d('0x1c');var _0x2b5bb0=_0xd7624c['count'];var _0x4f96c8=_0x552bbd?0x0:_0x59b818[_0x233d('0x1b')];var _0x409637=_0x552bbd?_0xd7624c[_0x233d('0x1e')]:_0x59b818[_0x233d('0x1b')]+_0x59b818[_0x233d('0x1d')];var _0x1b70da;if(_0x409637>=_0x2b5bb0){_0x409637=_0x2b5bb0;_0x1b70da=0xc8;}else{_0x1b70da=0xce;}_0xda6da2[_0x233d('0x18')](_0x1b70da);return _0xda6da2[_0x233d('0x1f')](_0x233d('0x20'),_0x4f96c8+'-'+_0x409637+'/'+_0x2b5bb0)[_0x233d('0x1a')](_0xd7624c);}return null;};}function patchUpdates(_0x3fa180){return function(_0x3ff3e3){try{jsonpatch[_0x233d('0x21')](_0x3ff3e3,_0x3fa180,!![]);}catch(_0x5aa707){return BPromise[_0x233d('0x22')](_0x5aa707);}return _0x3ff3e3[_0x233d('0x23')]();};}function saveUpdates(_0x5dd0e0,_0x12f8e8){return function(_0x19f575){if(_0x19f575){return _0x19f575[_0x233d('0x24')](_0x5dd0e0)[_0x233d('0x25')](function(_0x4f4c2a){return _0x4f4c2a;});}return null;};}function removeEntity(_0xe38aea,_0x19749f){return function(_0x3c3cba){if(_0x3c3cba){return _0x3c3cba[_0x233d('0x26')]()[_0x233d('0x25')](function(){_0xe38aea[_0x233d('0x18')](0xcc)[_0x233d('0x19')]();});}};}function handleEntityNotFound(_0x586f62,_0x517d61){return function(_0x507b5a){if(!_0x507b5a){_0x586f62['sendStatus'](0x194);}return _0x507b5a;};}function handleError(_0x24087a,_0x14cda3){_0x14cda3=_0x14cda3||0x1f4;return function(_0x1609ed){logger['error'](_0x1609ed[_0x233d('0x27')]);if(_0x1609ed[_0x233d('0x28')]){delete _0x1609ed[_0x233d('0x28')];}_0x24087a[_0x233d('0x18')](_0x14cda3)['send'](_0x1609ed);};}exports[_0x233d('0x29')]=function(_0xf10fbe,_0x3db64c){var _0x332962={'raw':!![],'where':{'id':_0xf10fbe['params']['id']}},_0x23f4a0={};_0x23f4a0['model']=_[_0x233d('0x2a')](db[_0x233d('0x2b')][_0x233d('0x2c')]);_0x23f4a0[_0x233d('0x2d')]=_[_0x233d('0x2a')](_0xf10fbe[_0x233d('0x2d')]);_0x23f4a0[_0x233d('0x2e')]=_[_0x233d('0x2f')](_0x23f4a0[_0x233d('0x30')],_0x23f4a0['query']);_0x332962[_0x233d('0x31')]=_[_0x233d('0x2f')](_0x23f4a0[_0x233d('0x30')],qs['fields'](_0xf10fbe['query'][_0x233d('0x32')]));_0x332962['attributes']=_0x332962['attributes'][_0x233d('0x33')]?_0x332962[_0x233d('0x31')]:_0x23f4a0[_0x233d('0x30')];if(_0xf10fbe[_0x233d('0x2d')][_0x233d('0x34')]){_0x332962['include']=[{'all':!![]}];}_0x332962=_[_0x233d('0x35')]({},_0x332962,_0xf10fbe[_0x233d('0x36')]);return db[_0x233d('0x2b')][_0x233d('0x37')](_0x332962)['then'](handleEntityNotFound(_0x3db64c,null))[_0x233d('0x25')](respondWithResult(_0x3db64c,null))[_0x233d('0x38')](handleError(_0x3db64c,null));};exports[_0x233d('0x24')]=function(_0xa82d72,_0x116578){if(_0xa82d72[_0x233d('0x39')]['id']){delete _0xa82d72[_0x233d('0x39')]['id'];}return db[_0x233d('0x2b')][_0x233d('0x37')]({'where':{'id':_0xa82d72[_0x233d('0x3a')]['id']}})[_0x233d('0x25')](handleEntityNotFound(_0x116578,null))[_0x233d('0x25')](saveUpdates(_0xa82d72[_0x233d('0x39')],null))[_0x233d('0x25')](respondWithResult(_0x116578,null))[_0x233d('0x38')](handleError(_0x116578,null));};exports[_0x233d('0x26')]=function(_0x573921,_0x5ec9a3){return db[_0x233d('0x2b')][_0x233d('0x37')]({'where':{'id':_0x573921[_0x233d('0x3a')]['id']}})[_0x233d('0x25')](handleEntityNotFound(_0x5ec9a3,null))[_0x233d('0x25')](removeEntity(_0x5ec9a3,null))[_0x233d('0x38')](handleError(_0x5ec9a3,null));};
\ No newline at end of file
+var _0x4627=['Content-Range','json','apply','reject','save','then','end','sendStatus','name','send','show','params','model','keys','ChatApplication','rawAttributes','query','filters','attributes','intersection','fields','length','includeAll','merge','find','catch','update','body','destroy','eml-format','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/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','offset','undefined','count'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x4627,0x115));var _0x7462=function(_0x256d6a,_0x2f002f){_0x256d6a=_0x256d6a-0x0;var _0x460058=_0x4627[_0x256d6a];return _0x460058;};'use strict';var emlformat=require(_0x7462('0x0'));var rimraf=require(_0x7462('0x1'));var zipdir=require(_0x7462('0x2'));var jsonpatch=require(_0x7462('0x3'));var rp=require(_0x7462('0x4'));var moment=require(_0x7462('0x5'));var BPromise=require(_0x7462('0x6'));var Mustache=require(_0x7462('0x7'));var util=require(_0x7462('0x8'));var path=require(_0x7462('0x9'));var sox=require(_0x7462('0xa'));var csv=require(_0x7462('0xb'));var ejs=require(_0x7462('0xc'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x7462('0xd'));var squel=require(_0x7462('0xe'));var crypto=require(_0x7462('0xf'));var jsforce=require(_0x7462('0x10'));var deskjs=require(_0x7462('0x11'));var toCsv=require(_0x7462('0xb'));var querystring=require(_0x7462('0x12'));var Papa=require(_0x7462('0x13'));var Redis=require(_0x7462('0x14'));var authService=require(_0x7462('0x15'));var qs=require(_0x7462('0x16'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x7462('0x17'))(_0x7462('0x18'));var utils=require(_0x7462('0x19'));var config=require(_0x7462('0x1a'));var licenseUtil=require(_0x7462('0x1b'));var db=require(_0x7462('0x1c'))['db'];function respondWithStatusCode(_0x31bf84,_0x4e313a){_0x4e313a=_0x4e313a||0xcc;return function(_0x5cb363){if(_0x5cb363){return _0x31bf84['sendStatus'](_0x4e313a);}return _0x31bf84[_0x7462('0x1d')](_0x4e313a)['end']();};}function respondWithResult(_0x1ba7e5,_0x461bd2){_0x461bd2=_0x461bd2||0xc8;return function(_0x368f45){if(_0x368f45){return _0x1ba7e5[_0x7462('0x1d')](_0x461bd2)['json'](_0x368f45);}};}function respondWithFilteredResult(_0x27b8f5,_0x4913ff){return function(_0x36b008){if(_0x36b008){var _0x42ed50=typeof _0x4913ff[_0x7462('0x1e')]===_0x7462('0x1f')&&typeof _0x4913ff['limit']===_0x7462('0x1f');var _0x56ed70=_0x36b008[_0x7462('0x20')];var _0x216eba=_0x42ed50?0x0:_0x4913ff[_0x7462('0x1e')];var _0x26e25f=_0x42ed50?_0x36b008['count']:_0x4913ff[_0x7462('0x1e')]+_0x4913ff['limit'];var _0x85341c;if(_0x26e25f>=_0x56ed70){_0x26e25f=_0x56ed70;_0x85341c=0xc8;}else{_0x85341c=0xce;}_0x27b8f5[_0x7462('0x1d')](_0x85341c);return _0x27b8f5['set'](_0x7462('0x21'),_0x216eba+'-'+_0x26e25f+'/'+_0x56ed70)[_0x7462('0x22')](_0x36b008);}return null;};}function patchUpdates(_0x4d0e60){return function(_0x25a44a){try{jsonpatch[_0x7462('0x23')](_0x25a44a,_0x4d0e60,!![]);}catch(_0x2e9a25){return BPromise[_0x7462('0x24')](_0x2e9a25);}return _0x25a44a[_0x7462('0x25')]();};}function saveUpdates(_0x4404eb,_0x32da06){return function(_0x3c9616){if(_0x3c9616){return _0x3c9616['update'](_0x4404eb)[_0x7462('0x26')](function(_0x52460e){return _0x52460e;});}return null;};}function removeEntity(_0x185934,_0x11caf5){return function(_0x290715){if(_0x290715){return _0x290715['destroy']()[_0x7462('0x26')](function(){_0x185934['status'](0xcc)[_0x7462('0x27')]();});}};}function handleEntityNotFound(_0x5473d1,_0x5759fa){return function(_0x29992b){if(!_0x29992b){_0x5473d1[_0x7462('0x28')](0x194);}return _0x29992b;};}function handleError(_0x51d9d9,_0x5575fc){_0x5575fc=_0x5575fc||0x1f4;return function(_0x554d21){logger['error'](_0x554d21['stack']);if(_0x554d21[_0x7462('0x29')]){delete _0x554d21[_0x7462('0x29')];}_0x51d9d9['status'](_0x5575fc)[_0x7462('0x2a')](_0x554d21);};}exports[_0x7462('0x2b')]=function(_0x3a3313,_0x10a673){var _0x4948c9={'raw':!![],'where':{'id':_0x3a3313[_0x7462('0x2c')]['id']}},_0x1f279b={};_0x1f279b[_0x7462('0x2d')]=_[_0x7462('0x2e')](db[_0x7462('0x2f')][_0x7462('0x30')]);_0x1f279b[_0x7462('0x31')]=_[_0x7462('0x2e')](_0x3a3313[_0x7462('0x31')]);_0x1f279b[_0x7462('0x32')]=_['intersection'](_0x1f279b[_0x7462('0x2d')],_0x1f279b['query']);_0x4948c9[_0x7462('0x33')]=_[_0x7462('0x34')](_0x1f279b[_0x7462('0x2d')],qs[_0x7462('0x35')](_0x3a3313['query'][_0x7462('0x35')]));_0x4948c9[_0x7462('0x33')]=_0x4948c9[_0x7462('0x33')][_0x7462('0x36')]?_0x4948c9[_0x7462('0x33')]:_0x1f279b[_0x7462('0x2d')];if(_0x3a3313['query'][_0x7462('0x37')]){_0x4948c9['include']=[{'all':!![]}];}_0x4948c9=_[_0x7462('0x38')]({},_0x4948c9,_0x3a3313['options']);return db[_0x7462('0x2f')][_0x7462('0x39')](_0x4948c9)['then'](handleEntityNotFound(_0x10a673,null))[_0x7462('0x26')](respondWithResult(_0x10a673,null))[_0x7462('0x3a')](handleError(_0x10a673,null));};exports[_0x7462('0x3b')]=function(_0x1f713b,_0x469a7e){if(_0x1f713b[_0x7462('0x3c')]['id']){delete _0x1f713b[_0x7462('0x3c')]['id'];}return db[_0x7462('0x2f')][_0x7462('0x39')]({'where':{'id':_0x1f713b[_0x7462('0x2c')]['id']}})[_0x7462('0x26')](handleEntityNotFound(_0x469a7e,null))[_0x7462('0x26')](saveUpdates(_0x1f713b[_0x7462('0x3c')],null))[_0x7462('0x26')](respondWithResult(_0x469a7e,null))['catch'](handleError(_0x469a7e,null));};exports[_0x7462('0x3d')]=function(_0x92edff,_0xb65b90){return db[_0x7462('0x2f')]['find']({'where':{'id':_0x92edff[_0x7462('0x2c')]['id']}})[_0x7462('0x26')](handleEntityNotFound(_0xb65b90,null))[_0x7462('0x26')](removeEntity(_0xb65b90,null))[_0x7462('0x3a')](handleError(_0xb65b90,null));};
\ No newline at end of file
index 93d7290..105dc83 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x901c=['exports','define','ChatApplication','chat_applications','utf8mb4','lodash','../../config/logger','moment','bluebird','path','rimraf','./chatApplication.attributes'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0x901c,0x119));var _0xc901=function(_0x336af7,_0x198a11){_0x336af7=_0x336af7-0x0;var _0x29469a=_0x901c[_0x336af7];return _0x29469a;};'use strict';var _=require(_0xc901('0x0'));var util=require('util');var logger=require(_0xc901('0x1'))('api');var moment=require(_0xc901('0x2'));var BPromise=require(_0xc901('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xc901('0x4'));var rimraf=require(_0xc901('0x5'));var config=require('../../config/environment');var attributes=require(_0xc901('0x6'));module[_0xc901('0x7')]=function(_0x29e64d,_0x5cad1b){return _0x29e64d[_0xc901('0x8')](_0xc901('0x9'),attributes,{'tableName':_0xc901('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xc901('0xb'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x4a29=['../../config/environment','./chatApplication.attributes','exports','define','ChatApplication','utf8mb4_unicode_ci','lodash','util','api','moment','request-promise','path','rimraf'];(function(_0x2aff3d,_0x43b73b){var _0x2857ec=function(_0x2dd2fe){while(--_0x2dd2fe){_0x2aff3d['push'](_0x2aff3d['shift']());}};_0x2857ec(++_0x43b73b);}(_0x4a29,0xaf));var _0x94a2=function(_0x1a4046,_0x447a80){_0x1a4046=_0x1a4046-0x0;var _0x1af849=_0x4a29[_0x1a4046];return _0x1af849;};'use strict';var _=require(_0x94a2('0x0'));var util=require(_0x94a2('0x1'));var logger=require('../../config/logger')(_0x94a2('0x2'));var moment=require(_0x94a2('0x3'));var BPromise=require('bluebird');var rp=require(_0x94a2('0x4'));var fs=require('fs');var path=require(_0x94a2('0x5'));var rimraf=require(_0x94a2('0x6'));var config=require(_0x94a2('0x7'));var attributes=require(_0x94a2('0x8'));module[_0x94a2('0x9')]=function(_0x198813,_0x244553){return _0x198813[_0x94a2('0xa')](_0x94a2('0xb'),attributes,{'tableName':'chat_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x94a2('0xc')});};
\ No newline at end of file
index 28cafd1..32d4886 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x59cf=['request\x20sent','error','code','message','result','catch','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','request','then','info','ChatApplication,\x20%s,\x20%s','ChatApplication,\x20%s,\x20%s,\x20%s'];(function(_0x1d24eb,_0x12295b){var _0x1dc576=function(_0x4d5770){while(--_0x4d5770){_0x1d24eb['push'](_0x1d24eb['shift']());}};_0x1dc576(++_0x12295b);}(_0x59cf,0x12c));var _0xf59c=function(_0x4bd67a,_0x4f9725){_0x4bd67a=_0x4bd67a-0x0;var _0x2be5fb=_0x59cf[_0x4bd67a];return _0x2be5fb;};'use strict';var _=require(_0xf59c('0x0'));var util=require(_0xf59c('0x1'));var moment=require('moment');var BPromise=require(_0xf59c('0x2'));var rs=require(_0xf59c('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf59c('0x4'))['db'];var utils=require(_0xf59c('0x5'));var logger=require('../../config/logger')(_0xf59c('0x6'));var config=require(_0xf59c('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xf59c('0x8')][_0xf59c('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2cfa4d,_0x26e042,_0x44587a){return new BPromise(function(_0x38f546,_0x227094){return client[_0xf59c('0xa')](_0x2cfa4d,_0x44587a)[_0xf59c('0xb')](function(_0x2417f9){logger[_0xf59c('0xc')](_0xf59c('0xd'),_0x26e042,'request\x20sent');logger['debug'](_0xf59c('0xe'),_0x26e042,_0xf59c('0xf'),JSON['stringify'](_0x2417f9));if(_0x2417f9['error']){if(_0x2417f9[_0xf59c('0x10')][_0xf59c('0x11')]===0x1f4){logger[_0xf59c('0x10')](_0xf59c('0xd'),_0x26e042,_0x2417f9[_0xf59c('0x10')][_0xf59c('0x12')]);return _0x227094(_0x2417f9[_0xf59c('0x10')]['message']);}logger[_0xf59c('0x10')](_0xf59c('0xd'),_0x26e042,_0x2417f9[_0xf59c('0x10')][_0xf59c('0x12')]);return _0x38f546(_0x2417f9[_0xf59c('0x10')][_0xf59c('0x12')]);}else{logger[_0xf59c('0xc')](_0xf59c('0xd'),_0x26e042,_0xf59c('0xf'));_0x38f546(_0x2417f9[_0xf59c('0x13')]['message']);}})[_0xf59c('0x14')](function(_0x4caa83){logger[_0xf59c('0x10')](_0xf59c('0xd'),_0x26e042,_0x4caa83);_0x227094(_0x4caa83);});});}
\ No newline at end of file
+var _0x9fb1=['http','request','then','info','ChatApplication,\x20%s,\x20%s','request\x20sent','debug','ChatApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise'];(function(_0x4bdf0f,_0x3ce6f9){var _0x1421ad=function(_0x4fe360){while(--_0x4fe360){_0x4bdf0f['push'](_0x4bdf0f['shift']());}};_0x1421ad(++_0x3ce6f9);}(_0x9fb1,0x176));var _0x19fb=function(_0x9cd4c3,_0x1c9b2c){_0x9cd4c3=_0x9cd4c3-0x0;var _0x4c9025=_0x9fb1[_0x9cd4c3];return _0x4c9025;};'use strict';var _=require(_0x19fb('0x0'));var util=require(_0x19fb('0x1'));var moment=require(_0x19fb('0x2'));var BPromise=require(_0x19fb('0x3'));var rs=require(_0x19fb('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x19fb('0x5'))['db'];var utils=require(_0x19fb('0x6'));var logger=require(_0x19fb('0x7'))(_0x19fb('0x8'));var config=require('../../config/environment');var jayson=require(_0x19fb('0x9'));var client=jayson['client'][_0x19fb('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x341296,_0x2eec47,_0x5b1d0f){return new BPromise(function(_0x5316b6,_0x3d2b78){return client[_0x19fb('0xb')](_0x341296,_0x5b1d0f)[_0x19fb('0xc')](function(_0x32e216){logger[_0x19fb('0xd')](_0x19fb('0xe'),_0x2eec47,_0x19fb('0xf'));logger[_0x19fb('0x10')](_0x19fb('0x11'),_0x2eec47,'request\x20sent',JSON[_0x19fb('0x12')](_0x32e216));if(_0x32e216[_0x19fb('0x13')]){if(_0x32e216['error'][_0x19fb('0x14')]===0x1f4){logger[_0x19fb('0x13')](_0x19fb('0xe'),_0x2eec47,_0x32e216['error'][_0x19fb('0x15')]);return _0x3d2b78(_0x32e216[_0x19fb('0x13')][_0x19fb('0x15')]);}logger['error']('ChatApplication,\x20%s,\x20%s',_0x2eec47,_0x32e216[_0x19fb('0x13')][_0x19fb('0x15')]);return _0x5316b6(_0x32e216[_0x19fb('0x13')][_0x19fb('0x15')]);}else{logger[_0x19fb('0xd')](_0x19fb('0xe'),_0x2eec47,_0x19fb('0xf'));_0x5316b6(_0x32e216[_0x19fb('0x16')][_0x19fb('0x15')]);}})[_0x19fb('0x17')](function(_0xb2b2cb){logger[_0x19fb('0x13')](_0x19fb('0xe'),_0x2eec47,_0xb2b2cb);_0x3d2b78(_0xb2b2cb);});});}
\ No newline at end of file
index 9b5ac0b..da7153d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf8e5=['isAuthenticated','update','delete','exports','multer','util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','get','/:id'];(function(_0x3305b5,_0x50a1a8){var _0x41fea1=function(_0x3c1fa5){while(--_0x3c1fa5){_0x3305b5['push'](_0x3305b5['shift']());}};_0x41fea1(++_0x50a1a8);}(_0xf8e5,0x170));var _0x5f8e=function(_0x441eda,_0x5af144){_0x441eda=_0x441eda-0x0;var _0x47f045=_0xf8e5[_0x441eda];return _0x47f045;};'use strict';var multer=require(_0x5f8e('0x0'));var util=require(_0x5f8e('0x1'));var path=require(_0x5f8e('0x2'));var timeout=require('connect-timeout');var express=require(_0x5f8e('0x3'));var router=express['Router']();var fs_extra=require(_0x5f8e('0x4'));var auth=require(_0x5f8e('0x5'));var interaction=require(_0x5f8e('0x6'));var config=require('../../config/environment');var controller=require('./chatApplication.controller');router[_0x5f8e('0x7')](_0x5f8e('0x8'),auth[_0x5f8e('0x9')](),controller['show']);router['put'](_0x5f8e('0x8'),auth['isAuthenticated'](),controller[_0x5f8e('0xa')]);router[_0x5f8e('0xb')]('/:id',auth[_0x5f8e('0x9')](),controller['destroy']);module[_0x5f8e('0xc')]=router;
\ No newline at end of file
+var _0xbb7c=['isAuthenticated','update','delete','destroy','multer','util','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./chatApplication.controller','get','/:id','show','put'];(function(_0x41895b,_0x3948ac){var _0x38d05c=function(_0x354188){while(--_0x354188){_0x41895b['push'](_0x41895b['shift']());}};_0x38d05c(++_0x3948ac);}(_0xbb7c,0x114));var _0xcbb7=function(_0xed50e2,_0x493e96){_0xed50e2=_0xed50e2-0x0;var _0x3d3af2=_0xbb7c[_0xed50e2];return _0x3d3af2;};'use strict';var multer=require(_0xcbb7('0x0'));var util=require(_0xcbb7('0x1'));var path=require('path');var timeout=require(_0xcbb7('0x2'));var express=require('express');var router=express[_0xcbb7('0x3')]();var fs_extra=require(_0xcbb7('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xcbb7('0x5'));var config=require(_0xcbb7('0x6'));var controller=require(_0xcbb7('0x7'));router[_0xcbb7('0x8')](_0xcbb7('0x9'),auth['isAuthenticated'](),controller[_0xcbb7('0xa')]);router[_0xcbb7('0xb')](_0xcbb7('0x9'),auth[_0xcbb7('0xc')](),controller[_0xcbb7('0xd')]);router[_0xcbb7('0xe')](_0xcbb7('0x9'),auth['isAuthenticated'](),controller[_0xcbb7('0xf')]);module['exports']=router;
\ No newline at end of file
index d8194cc..bb8dc7d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x41ec=['STRING','BOOLEAN','exports'];(function(_0x2f384e,_0x237f8b){var _0x56f0dd=function(_0x5087ff){while(--_0x5087ff){_0x2f384e['push'](_0x2f384e['shift']());}};_0x56f0dd(++_0x237f8b);}(_0x41ec,0x143));var _0xc41e=function(_0x14d800,_0x4a67bb){_0x14d800=_0x14d800-0x0;var _0x4e5d3a=_0x41ec[_0x14d800];return _0x4e5d3a;};'use strict';var Sequelize=require('sequelize');module[_0xc41e('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0xc41e('0x1')]},'write':{'type':Sequelize[_0xc41e('0x2')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x9f8d=['sequelize','exports','STRING','BOOLEAN'];(function(_0xb59bb0,_0x2965f9){var _0x1b8f7e=function(_0x5947cd){while(--_0x5947cd){_0xb59bb0['push'](_0xb59bb0['shift']());}};_0x1b8f7e(++_0x2965f9);}(_0x9f8d,0xb0));var _0xd9f8=function(_0x1a9298,_0x341ad8){_0x1a9298=_0x1a9298-0x0;var _0x3954d0=_0x9f8d[_0x1a9298];return _0x3954d0;};'use strict';var Sequelize=require(_0xd9f8('0x0'));module[_0xd9f8('0x1')]={'name':{'type':Sequelize[_0xd9f8('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0xd9f8('0x2')]},'write':{'type':Sequelize[_0xd9f8('0x3')],'defaultValue':!![]}};
\ No newline at end of file
index 4038a98..61e1eb3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa826=['User','getMembers','nolimit','removeMembers','ChatGroupId','getMessages','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','sox','ejs','fs-extra','lodash','squel','crypto','ioredis','../../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','./chatGroup.socket','register','sendStatus','status','end','offset','undefined','count','limit','Content-Range','json','save','update','then','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','pick','filter','where','merge','options','ChatGroup','includeAll','findAll','rows','catch','include','find','create','body','params','destroy','describe','getUnread','ChatInternalMessage','user','toInteger','addMembers','ids','findOne'];(function(_0x5b88c4,_0x4dd8a2){var _0x1a5de0=function(_0x40b3cf){while(--_0x40b3cf){_0x5b88c4['push'](_0x5b88c4['shift']());}};_0x1a5de0(++_0x4dd8a2);}(_0xa826,0x6a));var _0x6a82=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xa826[_0x2dafbe];return _0x58a45a;};'use strict';var emlformat=require(_0x6a82('0x0'));var rimraf=require(_0x6a82('0x1'));var zipdir=require(_0x6a82('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6a82('0x3'));var moment=require(_0x6a82('0x4'));var BPromise=require(_0x6a82('0x5'));var Mustache=require(_0x6a82('0x6'));var util=require(_0x6a82('0x7'));var path=require('path');var sox=require(_0x6a82('0x8'));var csv=require('to-csv');var ejs=require(_0x6a82('0x9'));var fs=require('fs');var fs_extra=require(_0x6a82('0xa'));var _=require(_0x6a82('0xb'));var squel=require(_0x6a82('0xc'));var crypto=require(_0x6a82('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x6a82('0xe'));var authService=require(_0x6a82('0xf'));var qs=require(_0x6a82('0x10'));var as=require(_0x6a82('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x6a82('0x12'))(_0x6a82('0x13'));var utils=require(_0x6a82('0x14'));var config=require(_0x6a82('0x15'));var licenseUtil=require(_0x6a82('0x16'));var db=require(_0x6a82('0x17'))['db'];config[_0x6a82('0x18')]=_[_0x6a82('0x19')](config[_0x6a82('0x18')],{'host':_0x6a82('0x1a'),'port':0x18eb});var socket=require(_0x6a82('0x1b'))(new Redis(config[_0x6a82('0x18')]));require(_0x6a82('0x1c'))[_0x6a82('0x1d')](socket);function respondWithStatusCode(_0x37b0ad,_0x3007bf){_0x3007bf=_0x3007bf||0xcc;return function(_0x731fcc){if(_0x731fcc){return _0x37b0ad[_0x6a82('0x1e')](_0x3007bf);}return _0x37b0ad[_0x6a82('0x1f')](_0x3007bf)[_0x6a82('0x20')]();};}function respondWithResult(_0x18c2a6,_0x5d09a5){_0x5d09a5=_0x5d09a5||0xc8;return function(_0x102fb7){if(_0x102fb7){return _0x18c2a6[_0x6a82('0x1f')](_0x5d09a5)['json'](_0x102fb7);}};}function respondWithFilteredResult(_0x224aa3,_0x35fb25){return function(_0x6fc7fc){if(_0x6fc7fc){var _0x2c6a20=typeof _0x35fb25[_0x6a82('0x21')]===_0x6a82('0x22')&&typeof _0x35fb25['limit']==='undefined';var _0x341490=_0x6fc7fc[_0x6a82('0x23')];var _0x2c303f=_0x2c6a20?0x0:_0x35fb25['offset'];var _0x587649=_0x2c6a20?_0x6fc7fc[_0x6a82('0x23')]:_0x35fb25[_0x6a82('0x21')]+_0x35fb25[_0x6a82('0x24')];var _0x4e2ddd;if(_0x587649>=_0x341490){_0x587649=_0x341490;_0x4e2ddd=0xc8;}else{_0x4e2ddd=0xce;}_0x224aa3['status'](_0x4e2ddd);return _0x224aa3['set'](_0x6a82('0x25'),_0x2c303f+'-'+_0x587649+'/'+_0x341490)[_0x6a82('0x26')](_0x6fc7fc);}return null;};}function patchUpdates(_0x17e96e){return function(_0x331d9e){try{jsonpatch['apply'](_0x331d9e,_0x17e96e,!![]);}catch(_0x22fe7f){return BPromise['reject'](_0x22fe7f);}return _0x331d9e[_0x6a82('0x27')]();};}function saveUpdates(_0x900645,_0x3964e4){return function(_0x356e61){if(_0x356e61){return _0x356e61[_0x6a82('0x28')](_0x900645)[_0x6a82('0x29')](function(_0x4710ce){return _0x4710ce;});}return null;};}function removeEntity(_0x4a874f,_0x15f0a5){return function(_0x3a7424){if(_0x3a7424){return _0x3a7424['destroy']()[_0x6a82('0x29')](function(){_0x4a874f[_0x6a82('0x1f')](0xcc)[_0x6a82('0x20')]();});}};}function handleEntityNotFound(_0x37a211,_0x1b1d3f){return function(_0x955a04){if(!_0x955a04){_0x37a211[_0x6a82('0x1e')](0x194);}return _0x955a04;};}function handleError(_0x435776,_0x177f18){_0x177f18=_0x177f18||0x1f4;return function(_0x255b18){logger['error'](_0x255b18[_0x6a82('0x2a')]);if(_0x255b18[_0x6a82('0x2b')]){delete _0x255b18[_0x6a82('0x2b')];}_0x435776[_0x6a82('0x1f')](_0x177f18)[_0x6a82('0x2c')](_0x255b18);};}exports[_0x6a82('0x2d')]=function(_0x25111b,_0x329f8c){var _0x3c3270={},_0x3c9ce6={},_0x25c30c={'count':0x0,'rows':[]};var _0xf35037=_[_0x6a82('0x2e')](db['ChatGroup'][_0x6a82('0x2f')],function(_0x2f06ef){return{'name':_0x2f06ef[_0x6a82('0x30')],'type':_0x2f06ef[_0x6a82('0x31')][_0x6a82('0x32')]};});_0x3c9ce6[_0x6a82('0x33')]=_[_0x6a82('0x2e')](_0xf35037,'name');_0x3c9ce6['query']=_[_0x6a82('0x34')](_0x25111b[_0x6a82('0x35')]);_0x3c9ce6[_0x6a82('0x36')]=_[_0x6a82('0x37')](_0x3c9ce6[_0x6a82('0x33')],_0x3c9ce6[_0x6a82('0x35')]);_0x3c3270[_0x6a82('0x38')]=_['intersection'](_0x3c9ce6[_0x6a82('0x33')],qs[_0x6a82('0x39')](_0x25111b[_0x6a82('0x35')][_0x6a82('0x39')]));_0x3c3270[_0x6a82('0x38')]=_0x3c3270[_0x6a82('0x38')][_0x6a82('0x3a')]?_0x3c3270[_0x6a82('0x38')]:_0x3c9ce6[_0x6a82('0x33')];if(!_0x25111b[_0x6a82('0x35')][_0x6a82('0x3b')]('nolimit')){_0x3c3270[_0x6a82('0x24')]=qs['limit'](_0x25111b['query'][_0x6a82('0x24')]);_0x3c3270['offset']=qs[_0x6a82('0x21')](_0x25111b[_0x6a82('0x35')][_0x6a82('0x21')]);}_0x3c3270[_0x6a82('0x3c')]=qs[_0x6a82('0x3d')](_0x25111b[_0x6a82('0x35')][_0x6a82('0x3d')]);_0x3c3270['where']=qs[_0x6a82('0x36')](_[_0x6a82('0x3e')](_0x25111b[_0x6a82('0x35')],_0x3c9ce6[_0x6a82('0x36')]),_0xf35037);if(_0x25111b[_0x6a82('0x35')][_0x6a82('0x3f')]){_0x3c3270[_0x6a82('0x40')]=_[_0x6a82('0x41')](_0x3c3270[_0x6a82('0x40')],{'$or':_[_0x6a82('0x2e')](_0xf35037,function(_0x380b3d){if(_0x380b3d['type']!=='VIRTUAL'){var _0x50fc18={};_0x50fc18[_0x380b3d['name']]={'$like':'%'+_0x25111b[_0x6a82('0x35')][_0x6a82('0x3f')]+'%'};return _0x50fc18;}})});}_0x3c3270=_[_0x6a82('0x41')]({},_0x3c3270,_0x25111b[_0x6a82('0x42')]);var _0x39bae7={'where':_0x3c3270['where']};return db[_0x6a82('0x43')][_0x6a82('0x23')](_0x39bae7)[_0x6a82('0x29')](function(_0x54701b){_0x25c30c[_0x6a82('0x23')]=_0x54701b;if(_0x25111b[_0x6a82('0x35')][_0x6a82('0x44')]){_0x3c3270['include']=[{'all':!![]}];}return db[_0x6a82('0x43')][_0x6a82('0x45')](_0x3c3270);})['then'](function(_0x2d5064){_0x25c30c[_0x6a82('0x46')]=_0x2d5064;return _0x25c30c;})[_0x6a82('0x29')](respondWithFilteredResult(_0x329f8c,_0x3c3270))[_0x6a82('0x47')](handleError(_0x329f8c,null));};exports['show']=function(_0x143559,_0x5526a5){var _0x17df8e={'raw':!![],'where':{'id':_0x143559['params']['id']}},_0x147c14={};_0x147c14[_0x6a82('0x33')]=_[_0x6a82('0x34')](db[_0x6a82('0x43')]['rawAttributes']);_0x147c14[_0x6a82('0x35')]=_['keys'](_0x143559[_0x6a82('0x35')]);_0x147c14[_0x6a82('0x36')]=_['intersection'](_0x147c14[_0x6a82('0x33')],_0x147c14[_0x6a82('0x35')]);_0x17df8e[_0x6a82('0x38')]=_[_0x6a82('0x37')](_0x147c14[_0x6a82('0x33')],qs[_0x6a82('0x39')](_0x143559[_0x6a82('0x35')][_0x6a82('0x39')]));_0x17df8e[_0x6a82('0x38')]=_0x17df8e[_0x6a82('0x38')]['length']?_0x17df8e[_0x6a82('0x38')]:_0x147c14[_0x6a82('0x33')];if(_0x143559[_0x6a82('0x35')][_0x6a82('0x44')]){_0x17df8e[_0x6a82('0x48')]=[{'all':!![]}];}_0x17df8e=_['merge']({},_0x17df8e,_0x143559[_0x6a82('0x42')]);return db[_0x6a82('0x43')][_0x6a82('0x49')](_0x17df8e)[_0x6a82('0x29')](handleEntityNotFound(_0x5526a5,null))[_0x6a82('0x29')](respondWithResult(_0x5526a5,null))[_0x6a82('0x47')](handleError(_0x5526a5,null));};exports[_0x6a82('0x4a')]=function(_0x5e561b,_0x10b53f){return db[_0x6a82('0x43')][_0x6a82('0x4a')](_0x5e561b[_0x6a82('0x4b')],{})[_0x6a82('0x29')](respondWithResult(_0x10b53f,0xc9))['catch'](handleError(_0x10b53f,null));};exports[_0x6a82('0x28')]=function(_0x23000e,_0x41f47c){if(_0x23000e[_0x6a82('0x4b')]['id']){delete _0x23000e[_0x6a82('0x4b')]['id'];}return db[_0x6a82('0x43')][_0x6a82('0x49')]({'where':{'id':_0x23000e[_0x6a82('0x4c')]['id']}})[_0x6a82('0x29')](handleEntityNotFound(_0x41f47c,null))[_0x6a82('0x29')](saveUpdates(_0x23000e['body'],null))[_0x6a82('0x29')](respondWithResult(_0x41f47c,null))[_0x6a82('0x47')](handleError(_0x41f47c,null));};exports[_0x6a82('0x4d')]=function(_0x25bd0b,_0x45378a){return db[_0x6a82('0x43')][_0x6a82('0x49')]({'where':{'id':_0x25bd0b[_0x6a82('0x4c')]['id']}})[_0x6a82('0x29')](handleEntityNotFound(_0x45378a,null))[_0x6a82('0x29')](removeEntity(_0x45378a,null))['catch'](handleError(_0x45378a,null));};exports['describe']=function(_0x127daf,_0x439771){return db[_0x6a82('0x43')][_0x6a82('0x4e')]()['then'](respondWithResult(_0x439771,null))[_0x6a82('0x47')](handleError(_0x439771,null));};exports[_0x6a82('0x4f')]=function(_0x1abf9f,_0x48c1ba,_0xb76a13){return db[_0x6a82('0x50')][_0x6a82('0x23')]({'where':{'ChatGroupId':_0x1abf9f[_0x6a82('0x4c')]['id'],'ToId':_0x1abf9f[_0x6a82('0x51')]['id'],'read':![]}})[_0x6a82('0x29')](function(_0x454021){return{'id':_[_0x6a82('0x52')](_0x1abf9f[_0x6a82('0x4c')]['id']),'count':_0x454021};})['then'](respondWithResult(_0x48c1ba,null))['catch'](handleError(_0x48c1ba,null));};exports[_0x6a82('0x53')]=function(_0x4b7f9d,_0x37648d,_0x46831b){return db[_0x6a82('0x43')][_0x6a82('0x49')]({'where':{'id':_0x4b7f9d[_0x6a82('0x4c')]['id']}})['then'](handleEntityNotFound(_0x37648d,null))[_0x6a82('0x29')](function(_0xdc75a5){if(_0xdc75a5){return _0xdc75a5['addMembers'](_0x4b7f9d['body'][_0x6a82('0x54')],_['omit'](_0x4b7f9d[_0x6a82('0x4b')],[_0x6a82('0x54'),'id'])||{});}})[_0x6a82('0x29')](respondWithResult(_0x37648d,null))[_0x6a82('0x47')](handleError(_0x37648d,null));};exports['getMembers']=function(_0x58ea78,_0x236c2d,_0x5dbb7d){var _0x247b93={};var _0x551ef4={};var _0xd597cd;var _0x14f0f5;return db[_0x6a82('0x43')][_0x6a82('0x55')]({'where':{'id':_0x58ea78[_0x6a82('0x4c')]['id']}})[_0x6a82('0x29')](handleEntityNotFound(_0x236c2d,null))[_0x6a82('0x29')](function(_0x1e4644){if(_0x1e4644){_0xd597cd=_0x1e4644;_0x551ef4[_0x6a82('0x33')]=_[_0x6a82('0x34')](db[_0x6a82('0x56')][_0x6a82('0x2f')]);_0x551ef4['query']=_[_0x6a82('0x34')](_0x58ea78['query']);_0x551ef4[_0x6a82('0x36')]=_[_0x6a82('0x37')](_0x551ef4[_0x6a82('0x33')],_0x551ef4[_0x6a82('0x35')]);_0x247b93[_0x6a82('0x38')]=_[_0x6a82('0x37')](_0x551ef4[_0x6a82('0x33')],qs[_0x6a82('0x39')](_0x58ea78['query'][_0x6a82('0x39')]));_0x247b93[_0x6a82('0x38')]=_0x247b93[_0x6a82('0x38')][_0x6a82('0x3a')]?_0x247b93[_0x6a82('0x38')]:_0x551ef4[_0x6a82('0x33')];_0x247b93[_0x6a82('0x3c')]=qs['sort'](_0x58ea78[_0x6a82('0x35')][_0x6a82('0x3d')]);_0x247b93[_0x6a82('0x40')]=qs[_0x6a82('0x36')](_[_0x6a82('0x3e')](_0x58ea78[_0x6a82('0x35')],_0x551ef4['filters']));if(_0x58ea78[_0x6a82('0x35')][_0x6a82('0x3f')]){_0x247b93[_0x6a82('0x40')]=_[_0x6a82('0x41')](_0x247b93[_0x6a82('0x40')],{'$or':_[_0x6a82('0x2e')](_0x247b93['attributes'],function(_0x1a8d0b){var _0x3b5968={};_0x3b5968[_0x1a8d0b]={'$like':'%'+_0x58ea78[_0x6a82('0x35')][_0x6a82('0x3f')]+'%'};return _0x3b5968;})});}_0x247b93=_[_0x6a82('0x41')]({},_0x247b93,_0x58ea78[_0x6a82('0x42')]);return _0xd597cd[_0x6a82('0x57')](_0x247b93);}})[_0x6a82('0x29')](function(_0x16cee0){if(_0x16cee0){_0x14f0f5=_0x16cee0[_0x6a82('0x3a')];if(!_0x58ea78[_0x6a82('0x35')]['hasOwnProperty'](_0x6a82('0x58'))){_0x247b93['limit']=qs[_0x6a82('0x24')](_0x58ea78[_0x6a82('0x35')][_0x6a82('0x24')]);_0x247b93[_0x6a82('0x21')]=qs[_0x6a82('0x21')](_0x58ea78[_0x6a82('0x35')][_0x6a82('0x21')]);}return _0xd597cd['getMembers'](_0x247b93);}})['then'](function(_0x285090){if(_0x285090){return _0x285090?{'count':_0x14f0f5,'rows':_0x285090}:null;}})[_0x6a82('0x29')](respondWithResult(_0x236c2d,null))[_0x6a82('0x47')](handleError(_0x236c2d,null));};exports['removeMembers']=function(_0x27cca5,_0x155f96,_0x4ddd45){return db[_0x6a82('0x43')][_0x6a82('0x49')]({'where':{'id':_0x27cca5[_0x6a82('0x4c')]['id']}})[_0x6a82('0x29')](handleEntityNotFound(_0x155f96,null))[_0x6a82('0x29')](function(_0x4ad215){if(_0x4ad215){return _0x4ad215[_0x6a82('0x59')](_0x27cca5[_0x6a82('0x35')][_0x6a82('0x54')]);}})['then'](respondWithStatusCode(_0x155f96,null))['catch'](handleError(_0x155f96,null));};exports['addMessage']=function(_0x1cb14a,_0xdece64,_0x138dc4){if(_0x1cb14a[_0x6a82('0x4b')]['id']){delete _0x1cb14a[_0x6a82('0x4b')]['id'];}return db['ChatGroup'][_0x6a82('0x49')]({'where':{'id':_0x1cb14a[_0x6a82('0x4c')]['id']}})['then'](handleEntityNotFound(_0xdece64,null))[_0x6a82('0x29')](function(_0x3c1547){if(_0x3c1547){_0x1cb14a[_0x6a82('0x4b')][_0x6a82('0x5a')]=_0x3c1547['id'];return db['ChatInternalMessage'][_0x6a82('0x4a')](_0x1cb14a[_0x6a82('0x4b')]);}})[_0x6a82('0x29')](respondWithResult(_0xdece64,null))[_0x6a82('0x47')](handleError(_0xdece64,null));};exports[_0x6a82('0x5b')]=function(_0x54dfbb,_0x43ea46,_0x3a5ab6){var _0x9233b8={};var _0x18aff1={};var _0x29de5a;var _0x78b79a;return db[_0x6a82('0x43')]['findOne']({'where':{'id':_0x54dfbb['params']['id']}})['then'](handleEntityNotFound(_0x43ea46,null))[_0x6a82('0x29')](function(_0x596b37){if(_0x596b37){_0x29de5a=_0x596b37;_0x18aff1['model']=_[_0x6a82('0x34')](db[_0x6a82('0x50')][_0x6a82('0x2f')]);_0x18aff1[_0x6a82('0x35')]=_['keys'](_0x54dfbb['query']);_0x18aff1[_0x6a82('0x36')]=_['intersection'](_0x18aff1[_0x6a82('0x33')],_0x18aff1[_0x6a82('0x35')]);_0x9233b8[_0x6a82('0x38')]=_[_0x6a82('0x37')](_0x18aff1[_0x6a82('0x33')],qs[_0x6a82('0x39')](_0x54dfbb[_0x6a82('0x35')][_0x6a82('0x39')]));_0x9233b8['attributes']=_0x9233b8[_0x6a82('0x38')][_0x6a82('0x3a')]?_0x9233b8['attributes']:_0x18aff1[_0x6a82('0x33')];_0x9233b8[_0x6a82('0x3c')]=qs['sort'](_0x54dfbb[_0x6a82('0x35')]['sort']);_0x9233b8[_0x6a82('0x40')]=qs[_0x6a82('0x36')](_[_0x6a82('0x3e')](_0x54dfbb[_0x6a82('0x35')],_0x18aff1['filters']));if(_0x54dfbb['query'][_0x6a82('0x3f')]){_0x9233b8[_0x6a82('0x40')]=_[_0x6a82('0x41')](_0x9233b8[_0x6a82('0x40')],{'$or':_[_0x6a82('0x2e')](_0x9233b8[_0x6a82('0x38')],function(_0x16dad2){var _0x4613f4={};_0x4613f4[_0x16dad2]={'$like':'%'+_0x54dfbb[_0x6a82('0x35')]['filter']+'%'};return _0x4613f4;})});}if(_0x54dfbb[_0x6a82('0x35')]['$gte']){var _0xf77ced=_0x54dfbb[_0x6a82('0x35')][_0x6a82('0x5c')][_0x6a82('0x5d')](',');var _0x391a40={};_0x391a40[_0xf77ced[0x0]]={'$gte':moment(_0xf77ced[0x1])[_0x6a82('0x5e')](_0x6a82('0x5f'))};_0x9233b8[_0x6a82('0x40')]=_[_0x6a82('0x41')](_0x9233b8[_0x6a82('0x40')],_0x391a40);}_0x9233b8=_[_0x6a82('0x41')]({},_0x9233b8,_0x54dfbb[_0x6a82('0x42')]);return _0x29de5a[_0x6a82('0x5b')](_0x9233b8);}})['then'](function(_0x2e296f){if(_0x2e296f){_0x78b79a=_0x2e296f['length'];if(!_0x54dfbb[_0x6a82('0x35')][_0x6a82('0x3b')](_0x6a82('0x58'))){_0x9233b8['limit']=qs[_0x6a82('0x24')](_0x54dfbb[_0x6a82('0x35')][_0x6a82('0x24')]);_0x9233b8[_0x6a82('0x21')]=qs[_0x6a82('0x21')](_0x54dfbb['query'][_0x6a82('0x21')]);}return _0x29de5a[_0x6a82('0x5b')](_0x9233b8);}})['then'](function(_0x5c29f2){if(_0x5c29f2){return _0x5c29f2?{'count':_0x78b79a,'rows':_0x5c29f2}:null;}})[_0x6a82('0x29')](respondWithResult(_0x43ea46,null))['catch'](handleError(_0x43ea46,null));};
\ No newline at end of file
+var _0x69b3=['fields','length','hasOwnProperty','order','sort','pick','filter','where','merge','options','includeAll','catch','show','params','include','find','create','body','destroy','describe','getUnread','user','addMembers','ids','omit','getMembers','findOne','nolimit','removeMembers','addMessage','ChatGroupId','ChatInternalMessage','$gte','split','getMessages','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','defaults','redis','localhost','./chatGroup.socket','register','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','save','update','then','error','stack','name','index','map','ChatGroup','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes'];(function(_0x1e381c,_0x47b5b9){var _0x9b5ea9=function(_0x6d2be5){while(--_0x6d2be5){_0x1e381c['push'](_0x1e381c['shift']());}};_0x9b5ea9(++_0x47b5b9);}(_0x69b3,0xe3));var _0x369b=function(_0x2c1fb7,_0x4ef72f){_0x2c1fb7=_0x2c1fb7-0x0;var _0x468d68=_0x69b3[_0x2c1fb7];return _0x468d68;};'use strict';var emlformat=require(_0x369b('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x369b('0x1'));var jsonpatch=require(_0x369b('0x2'));var rp=require('request-promise');var moment=require(_0x369b('0x3'));var BPromise=require(_0x369b('0x4'));var Mustache=require(_0x369b('0x5'));var util=require(_0x369b('0x6'));var path=require('path');var sox=require(_0x369b('0x7'));var csv=require(_0x369b('0x8'));var ejs=require(_0x369b('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x369b('0xa'));var squel=require(_0x369b('0xb'));var crypto=require(_0x369b('0xc'));var jsforce=require(_0x369b('0xd'));var deskjs=require(_0x369b('0xe'));var toCsv=require('to-csv');var querystring=require(_0x369b('0xf'));var Papa=require(_0x369b('0x10'));var Redis=require(_0x369b('0x11'));var authService=require(_0x369b('0x12'));var qs=require(_0x369b('0x13'));var as=require(_0x369b('0x14'));var hardwareService=require(_0x369b('0x15'));var logger=require('../../config/logger')(_0x369b('0x16'));var utils=require(_0x369b('0x17'));var config=require(_0x369b('0x18'));var licenseUtil=require(_0x369b('0x19'));var db=require('../../mysqldb')['db'];config['redis']=_[_0x369b('0x1a')](config[_0x369b('0x1b')],{'host':_0x369b('0x1c'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x369b('0x1b')]));require(_0x369b('0x1d'))[_0x369b('0x1e')](socket);function respondWithStatusCode(_0x33d36f,_0x5c067c){_0x5c067c=_0x5c067c||0xcc;return function(_0x42f9dd){if(_0x42f9dd){return _0x33d36f[_0x369b('0x1f')](_0x5c067c);}return _0x33d36f[_0x369b('0x20')](_0x5c067c)[_0x369b('0x21')]();};}function respondWithResult(_0x4a5f9b,_0x263e89){_0x263e89=_0x263e89||0xc8;return function(_0x22083d){if(_0x22083d){return _0x4a5f9b[_0x369b('0x20')](_0x263e89)['json'](_0x22083d);}};}function respondWithFilteredResult(_0x3f1377,_0x515684){return function(_0x1e3872){if(_0x1e3872){var _0x59a32e=typeof _0x515684[_0x369b('0x22')]===_0x369b('0x23')&&typeof _0x515684[_0x369b('0x24')]===_0x369b('0x23');var _0x2dca94=_0x1e3872[_0x369b('0x25')];var _0xd85d89=_0x59a32e?0x0:_0x515684[_0x369b('0x22')];var _0x3e070a=_0x59a32e?_0x1e3872['count']:_0x515684[_0x369b('0x22')]+_0x515684['limit'];var _0x24d2bf;if(_0x3e070a>=_0x2dca94){_0x3e070a=_0x2dca94;_0x24d2bf=0xc8;}else{_0x24d2bf=0xce;}_0x3f1377['status'](_0x24d2bf);return _0x3f1377[_0x369b('0x26')](_0x369b('0x27'),_0xd85d89+'-'+_0x3e070a+'/'+_0x2dca94)[_0x369b('0x28')](_0x1e3872);}return null;};}function patchUpdates(_0x2dc6f3){return function(_0x4f9761){try{jsonpatch[_0x369b('0x29')](_0x4f9761,_0x2dc6f3,!![]);}catch(_0xc17566){return BPromise['reject'](_0xc17566);}return _0x4f9761[_0x369b('0x2a')]();};}function saveUpdates(_0x4fe33a,_0x2b1f2a){return function(_0x25b15c){if(_0x25b15c){return _0x25b15c[_0x369b('0x2b')](_0x4fe33a)[_0x369b('0x2c')](function(_0x48d9d4){return _0x48d9d4;});}return null;};}function removeEntity(_0x1942e4,_0x2fc3d5){return function(_0x4b5d29){if(_0x4b5d29){return _0x4b5d29['destroy']()['then'](function(){_0x1942e4[_0x369b('0x20')](0xcc)[_0x369b('0x21')]();});}};}function handleEntityNotFound(_0x23de24,_0x235901){return function(_0x62f1ba){if(!_0x62f1ba){_0x23de24['sendStatus'](0x194);}return _0x62f1ba;};}function handleError(_0xb08521,_0x2dcf5a){_0x2dcf5a=_0x2dcf5a||0x1f4;return function(_0x7bdaba){logger[_0x369b('0x2d')](_0x7bdaba[_0x369b('0x2e')]);if(_0x7bdaba[_0x369b('0x2f')]){delete _0x7bdaba[_0x369b('0x2f')];}_0xb08521['status'](_0x2dcf5a)['send'](_0x7bdaba);};}exports[_0x369b('0x30')]=function(_0x1a0f40,_0x31c998){var _0x246391={},_0x364fe7={},_0x29c0a1={'count':0x0,'rows':[]};var _0x4bd64c=_[_0x369b('0x31')](db[_0x369b('0x32')][_0x369b('0x33')],function(_0x3fb672){return{'name':_0x3fb672[_0x369b('0x34')],'type':_0x3fb672[_0x369b('0x35')][_0x369b('0x36')]};});_0x364fe7[_0x369b('0x37')]=_[_0x369b('0x31')](_0x4bd64c,'name');_0x364fe7[_0x369b('0x38')]=_[_0x369b('0x39')](_0x1a0f40[_0x369b('0x38')]);_0x364fe7[_0x369b('0x3a')]=_[_0x369b('0x3b')](_0x364fe7['model'],_0x364fe7[_0x369b('0x38')]);_0x246391[_0x369b('0x3c')]=_['intersection'](_0x364fe7[_0x369b('0x37')],qs[_0x369b('0x3d')](_0x1a0f40[_0x369b('0x38')][_0x369b('0x3d')]));_0x246391[_0x369b('0x3c')]=_0x246391[_0x369b('0x3c')][_0x369b('0x3e')]?_0x246391[_0x369b('0x3c')]:_0x364fe7['model'];if(!_0x1a0f40['query'][_0x369b('0x3f')]('nolimit')){_0x246391['limit']=qs[_0x369b('0x24')](_0x1a0f40[_0x369b('0x38')][_0x369b('0x24')]);_0x246391[_0x369b('0x22')]=qs[_0x369b('0x22')](_0x1a0f40['query'][_0x369b('0x22')]);}_0x246391[_0x369b('0x40')]=qs[_0x369b('0x41')](_0x1a0f40[_0x369b('0x38')][_0x369b('0x41')]);_0x246391['where']=qs[_0x369b('0x3a')](_[_0x369b('0x42')](_0x1a0f40[_0x369b('0x38')],_0x364fe7['filters']),_0x4bd64c);if(_0x1a0f40[_0x369b('0x38')][_0x369b('0x43')]){_0x246391[_0x369b('0x44')]=_[_0x369b('0x45')](_0x246391[_0x369b('0x44')],{'$or':_['map'](_0x4bd64c,function(_0x187361){if(_0x187361['type']!=='VIRTUAL'){var _0x329375={};_0x329375[_0x187361[_0x369b('0x2f')]]={'$like':'%'+_0x1a0f40[_0x369b('0x38')][_0x369b('0x43')]+'%'};return _0x329375;}})});}_0x246391=_[_0x369b('0x45')]({},_0x246391,_0x1a0f40[_0x369b('0x46')]);var _0x5e00e6={'where':_0x246391[_0x369b('0x44')]};return db[_0x369b('0x32')][_0x369b('0x25')](_0x5e00e6)[_0x369b('0x2c')](function(_0x3b0bc4){_0x29c0a1[_0x369b('0x25')]=_0x3b0bc4;if(_0x1a0f40[_0x369b('0x38')][_0x369b('0x47')]){_0x246391['include']=[{'all':!![]}];}return db[_0x369b('0x32')]['findAll'](_0x246391);})[_0x369b('0x2c')](function(_0x393efa){_0x29c0a1['rows']=_0x393efa;return _0x29c0a1;})['then'](respondWithFilteredResult(_0x31c998,_0x246391))[_0x369b('0x48')](handleError(_0x31c998,null));};exports[_0x369b('0x49')]=function(_0x4ed798,_0x4beb25){var _0x2013f7={'raw':!![],'where':{'id':_0x4ed798[_0x369b('0x4a')]['id']}},_0x5d67e4={};_0x5d67e4[_0x369b('0x37')]=_[_0x369b('0x39')](db[_0x369b('0x32')][_0x369b('0x33')]);_0x5d67e4[_0x369b('0x38')]=_['keys'](_0x4ed798[_0x369b('0x38')]);_0x5d67e4[_0x369b('0x3a')]=_[_0x369b('0x3b')](_0x5d67e4[_0x369b('0x37')],_0x5d67e4[_0x369b('0x38')]);_0x2013f7[_0x369b('0x3c')]=_[_0x369b('0x3b')](_0x5d67e4[_0x369b('0x37')],qs[_0x369b('0x3d')](_0x4ed798[_0x369b('0x38')][_0x369b('0x3d')]));_0x2013f7['attributes']=_0x2013f7[_0x369b('0x3c')][_0x369b('0x3e')]?_0x2013f7['attributes']:_0x5d67e4['model'];if(_0x4ed798[_0x369b('0x38')][_0x369b('0x47')]){_0x2013f7[_0x369b('0x4b')]=[{'all':!![]}];}_0x2013f7=_[_0x369b('0x45')]({},_0x2013f7,_0x4ed798[_0x369b('0x46')]);return db[_0x369b('0x32')][_0x369b('0x4c')](_0x2013f7)[_0x369b('0x2c')](handleEntityNotFound(_0x4beb25,null))[_0x369b('0x2c')](respondWithResult(_0x4beb25,null))['catch'](handleError(_0x4beb25,null));};exports[_0x369b('0x4d')]=function(_0x487874,_0x2f13ed){return db['ChatGroup']['create'](_0x487874[_0x369b('0x4e')],{})[_0x369b('0x2c')](respondWithResult(_0x2f13ed,0xc9))[_0x369b('0x48')](handleError(_0x2f13ed,null));};exports[_0x369b('0x2b')]=function(_0x85c304,_0x40e6b9){if(_0x85c304[_0x369b('0x4e')]['id']){delete _0x85c304[_0x369b('0x4e')]['id'];}return db[_0x369b('0x32')]['find']({'where':{'id':_0x85c304[_0x369b('0x4a')]['id']}})[_0x369b('0x2c')](handleEntityNotFound(_0x40e6b9,null))[_0x369b('0x2c')](saveUpdates(_0x85c304['body'],null))[_0x369b('0x2c')](respondWithResult(_0x40e6b9,null))[_0x369b('0x48')](handleError(_0x40e6b9,null));};exports[_0x369b('0x4f')]=function(_0xf03dc,_0x1da822){return db[_0x369b('0x32')][_0x369b('0x4c')]({'where':{'id':_0xf03dc['params']['id']}})[_0x369b('0x2c')](handleEntityNotFound(_0x1da822,null))['then'](removeEntity(_0x1da822,null))[_0x369b('0x48')](handleError(_0x1da822,null));};exports['describe']=function(_0x3f1127,_0x595542){return db['ChatGroup'][_0x369b('0x50')]()[_0x369b('0x2c')](respondWithResult(_0x595542,null))['catch'](handleError(_0x595542,null));};exports[_0x369b('0x51')]=function(_0x325d3a,_0x15d92e,_0x3581b4){return db['ChatInternalMessage'][_0x369b('0x25')]({'where':{'ChatGroupId':_0x325d3a[_0x369b('0x4a')]['id'],'ToId':_0x325d3a[_0x369b('0x52')]['id'],'read':![]}})[_0x369b('0x2c')](function(_0x169fc9){return{'id':_['toInteger'](_0x325d3a[_0x369b('0x4a')]['id']),'count':_0x169fc9};})[_0x369b('0x2c')](respondWithResult(_0x15d92e,null))[_0x369b('0x48')](handleError(_0x15d92e,null));};exports['addMembers']=function(_0x26aa0d,_0x47ba5f,_0x5c505a){return db[_0x369b('0x32')][_0x369b('0x4c')]({'where':{'id':_0x26aa0d[_0x369b('0x4a')]['id']}})[_0x369b('0x2c')](handleEntityNotFound(_0x47ba5f,null))[_0x369b('0x2c')](function(_0x4254ef){if(_0x4254ef){return _0x4254ef[_0x369b('0x53')](_0x26aa0d[_0x369b('0x4e')][_0x369b('0x54')],_[_0x369b('0x55')](_0x26aa0d[_0x369b('0x4e')],[_0x369b('0x54'),'id'])||{});}})[_0x369b('0x2c')](respondWithResult(_0x47ba5f,null))[_0x369b('0x48')](handleError(_0x47ba5f,null));};exports[_0x369b('0x56')]=function(_0x10f6ca,_0x29f248,_0x28c6d2){var _0x1658e5={};var _0x55a8fa={};var _0xaccfa4;var _0xe8075e;return db['ChatGroup'][_0x369b('0x57')]({'where':{'id':_0x10f6ca[_0x369b('0x4a')]['id']}})['then'](handleEntityNotFound(_0x29f248,null))[_0x369b('0x2c')](function(_0x23d331){if(_0x23d331){_0xaccfa4=_0x23d331;_0x55a8fa[_0x369b('0x37')]=_['keys'](db['User'][_0x369b('0x33')]);_0x55a8fa[_0x369b('0x38')]=_['keys'](_0x10f6ca['query']);_0x55a8fa['filters']=_[_0x369b('0x3b')](_0x55a8fa[_0x369b('0x37')],_0x55a8fa['query']);_0x1658e5[_0x369b('0x3c')]=_[_0x369b('0x3b')](_0x55a8fa['model'],qs[_0x369b('0x3d')](_0x10f6ca[_0x369b('0x38')][_0x369b('0x3d')]));_0x1658e5[_0x369b('0x3c')]=_0x1658e5[_0x369b('0x3c')][_0x369b('0x3e')]?_0x1658e5[_0x369b('0x3c')]:_0x55a8fa[_0x369b('0x37')];_0x1658e5[_0x369b('0x40')]=qs['sort'](_0x10f6ca['query'][_0x369b('0x41')]);_0x1658e5['where']=qs[_0x369b('0x3a')](_['pick'](_0x10f6ca[_0x369b('0x38')],_0x55a8fa[_0x369b('0x3a')]));if(_0x10f6ca[_0x369b('0x38')][_0x369b('0x43')]){_0x1658e5[_0x369b('0x44')]=_[_0x369b('0x45')](_0x1658e5[_0x369b('0x44')],{'$or':_[_0x369b('0x31')](_0x1658e5['attributes'],function(_0x43073b){var _0x48f33b={};_0x48f33b[_0x43073b]={'$like':'%'+_0x10f6ca['query'][_0x369b('0x43')]+'%'};return _0x48f33b;})});}_0x1658e5=_[_0x369b('0x45')]({},_0x1658e5,_0x10f6ca[_0x369b('0x46')]);return _0xaccfa4[_0x369b('0x56')](_0x1658e5);}})[_0x369b('0x2c')](function(_0x7b11e8){if(_0x7b11e8){_0xe8075e=_0x7b11e8[_0x369b('0x3e')];if(!_0x10f6ca[_0x369b('0x38')][_0x369b('0x3f')](_0x369b('0x58'))){_0x1658e5[_0x369b('0x24')]=qs[_0x369b('0x24')](_0x10f6ca['query'][_0x369b('0x24')]);_0x1658e5[_0x369b('0x22')]=qs['offset'](_0x10f6ca[_0x369b('0x38')][_0x369b('0x22')]);}return _0xaccfa4[_0x369b('0x56')](_0x1658e5);}})[_0x369b('0x2c')](function(_0x42c0ff){if(_0x42c0ff){return _0x42c0ff?{'count':_0xe8075e,'rows':_0x42c0ff}:null;}})['then'](respondWithResult(_0x29f248,null))['catch'](handleError(_0x29f248,null));};exports[_0x369b('0x59')]=function(_0x30a66f,_0x1cde14,_0x11fc2c){return db[_0x369b('0x32')][_0x369b('0x4c')]({'where':{'id':_0x30a66f[_0x369b('0x4a')]['id']}})[_0x369b('0x2c')](handleEntityNotFound(_0x1cde14,null))[_0x369b('0x2c')](function(_0x27c12d){if(_0x27c12d){return _0x27c12d[_0x369b('0x59')](_0x30a66f[_0x369b('0x38')][_0x369b('0x54')]);}})[_0x369b('0x2c')](respondWithStatusCode(_0x1cde14,null))[_0x369b('0x48')](handleError(_0x1cde14,null));};exports[_0x369b('0x5a')]=function(_0x2a8023,_0x5526f3,_0x378a16){if(_0x2a8023[_0x369b('0x4e')]['id']){delete _0x2a8023[_0x369b('0x4e')]['id'];}return db[_0x369b('0x32')][_0x369b('0x4c')]({'where':{'id':_0x2a8023[_0x369b('0x4a')]['id']}})[_0x369b('0x2c')](handleEntityNotFound(_0x5526f3,null))['then'](function(_0x1b2739){if(_0x1b2739){_0x2a8023['body'][_0x369b('0x5b')]=_0x1b2739['id'];return db[_0x369b('0x5c')][_0x369b('0x4d')](_0x2a8023['body']);}})[_0x369b('0x2c')](respondWithResult(_0x5526f3,null))['catch'](handleError(_0x5526f3,null));};exports['getMessages']=function(_0x34f3ab,_0x4c660c,_0x2936a2){var _0x1726fb={};var _0x8c706a={};var _0x1db7b7;var _0x3189d2;return db['ChatGroup']['findOne']({'where':{'id':_0x34f3ab[_0x369b('0x4a')]['id']}})[_0x369b('0x2c')](handleEntityNotFound(_0x4c660c,null))[_0x369b('0x2c')](function(_0x1b87a9){if(_0x1b87a9){_0x1db7b7=_0x1b87a9;_0x8c706a[_0x369b('0x37')]=_['keys'](db[_0x369b('0x5c')][_0x369b('0x33')]);_0x8c706a[_0x369b('0x38')]=_[_0x369b('0x39')](_0x34f3ab[_0x369b('0x38')]);_0x8c706a[_0x369b('0x3a')]=_['intersection'](_0x8c706a[_0x369b('0x37')],_0x8c706a[_0x369b('0x38')]);_0x1726fb[_0x369b('0x3c')]=_[_0x369b('0x3b')](_0x8c706a[_0x369b('0x37')],qs['fields'](_0x34f3ab['query'][_0x369b('0x3d')]));_0x1726fb['attributes']=_0x1726fb[_0x369b('0x3c')][_0x369b('0x3e')]?_0x1726fb[_0x369b('0x3c')]:_0x8c706a[_0x369b('0x37')];_0x1726fb[_0x369b('0x40')]=qs[_0x369b('0x41')](_0x34f3ab[_0x369b('0x38')][_0x369b('0x41')]);_0x1726fb[_0x369b('0x44')]=qs[_0x369b('0x3a')](_['pick'](_0x34f3ab[_0x369b('0x38')],_0x8c706a[_0x369b('0x3a')]));if(_0x34f3ab['query']['filter']){_0x1726fb[_0x369b('0x44')]=_['merge'](_0x1726fb[_0x369b('0x44')],{'$or':_[_0x369b('0x31')](_0x1726fb['attributes'],function(_0x55aea9){var _0x3dc6ad={};_0x3dc6ad[_0x55aea9]={'$like':'%'+_0x34f3ab[_0x369b('0x38')][_0x369b('0x43')]+'%'};return _0x3dc6ad;})});}if(_0x34f3ab[_0x369b('0x38')]['$gte']){var _0xe13b1f=_0x34f3ab[_0x369b('0x38')][_0x369b('0x5d')][_0x369b('0x5e')](',');var _0x3908dc={};_0x3908dc[_0xe13b1f[0x0]]={'$gte':moment(_0xe13b1f[0x1])['format']('YYYY-MM-DD\x20HH:mm:ss')};_0x1726fb[_0x369b('0x44')]=_[_0x369b('0x45')](_0x1726fb[_0x369b('0x44')],_0x3908dc);}_0x1726fb=_[_0x369b('0x45')]({},_0x1726fb,_0x34f3ab[_0x369b('0x46')]);return _0x1db7b7[_0x369b('0x5f')](_0x1726fb);}})[_0x369b('0x2c')](function(_0x2696da){if(_0x2696da){_0x3189d2=_0x2696da['length'];if(!_0x34f3ab[_0x369b('0x38')][_0x369b('0x3f')](_0x369b('0x58'))){_0x1726fb[_0x369b('0x24')]=qs[_0x369b('0x24')](_0x34f3ab[_0x369b('0x38')]['limit']);_0x1726fb[_0x369b('0x22')]=qs[_0x369b('0x22')](_0x34f3ab[_0x369b('0x38')]['offset']);}return _0x1db7b7[_0x369b('0x5f')](_0x1726fb);}})['then'](function(_0x5dce05){if(_0x5dce05){return _0x5dce05?{'count':_0x3189d2,'rows':_0x5dce05}:null;}})[_0x369b('0x2c')](respondWithResult(_0x4c660c,null))[_0x369b('0x48')](handleError(_0x4c660c,null));};
\ No newline at end of file
index b12564d..a961b44 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd7f=['ChatGroup','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb'];(function(_0x10b4f4,_0x4f1ca0){var _0x187294=function(_0x342ed2){while(--_0x342ed2){_0x10b4f4['push'](_0x10b4f4['shift']());}};_0x187294(++_0x4f1ca0);}(_0xcd7f,0x16e));var _0xfcd7=function(_0x9d380f,_0x47dd5d){_0x9d380f=_0x9d380f-0x0;var _0x216a52=_0xcd7f[_0x9d380f];return _0x216a52;};'use strict';var EventEmitter=require(_0xfcd7('0x0'));var ChatGroup=require(_0xfcd7('0x1'))['db'][_0xfcd7('0x2')];var ChatGroupEvents=new EventEmitter();ChatGroupEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0xfcd7('0x3')};function emitEvent(_0x355263){return function(_0x2555a3,_0x45208c,_0x22d95c){ChatGroupEvents['emit'](_0x355263+':'+_0x2555a3['id'],_0x2555a3);ChatGroupEvents[_0xfcd7('0x4')](_0x355263,_0x2555a3);_0x22d95c(null);};}for(var e in events){if(events[_0xfcd7('0x5')](e)){var event=events[e];ChatGroup[_0xfcd7('0x6')](e,emitEvent(event));}}module[_0xfcd7('0x7')]=ChatGroupEvents;
\ No newline at end of file
+var _0x8ae2=['hook','events','../../mysqldb','setMaxListeners','update','emit','hasOwnProperty'];(function(_0x4c9821,_0x4611d8){var _0x48bd5e=function(_0x37f937){while(--_0x37f937){_0x4c9821['push'](_0x4c9821['shift']());}};_0x48bd5e(++_0x4611d8);}(_0x8ae2,0x143));var _0x28ae=function(_0x16546c,_0x172705){_0x16546c=_0x16546c-0x0;var _0x342df8=_0x8ae2[_0x16546c];return _0x342df8;};'use strict';var EventEmitter=require(_0x28ae('0x0'));var ChatGroup=require(_0x28ae('0x1'))['db']['ChatGroup'];var ChatGroupEvents=new EventEmitter();ChatGroupEvents[_0x28ae('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x28ae('0x3'),'afterDestroy':'remove'};function emitEvent(_0xeb0ff2){return function(_0x30ced7,_0x402180,_0x4db371){ChatGroupEvents['emit'](_0xeb0ff2+':'+_0x30ced7['id'],_0x30ced7);ChatGroupEvents[_0x28ae('0x4')](_0xeb0ff2,_0x30ced7);_0x4db371(null);};}for(var e in events){if(events[_0x28ae('0x5')](e)){var event=events[e];ChatGroup[_0x28ae('0x6')](e,emitEvent(event));}}module['exports']=ChatGroupEvents;
\ No newline at end of file
index 9f07794..308cc4c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ddf=['ChatGroup','chat_groups','lodash','util','../../config/logger','api','moment','request-promise','../../config/environment','exports'];(function(_0x50516e,_0x464fe1){var _0x2e34b5=function(_0x9c889c){while(--_0x9c889c){_0x50516e['push'](_0x50516e['shift']());}};_0x2e34b5(++_0x464fe1);}(_0x9ddf,0x142));var _0xf9dd=function(_0x4e248c,_0x3dba6e){_0x4e248c=_0x4e248c-0x0;var _0x311f49=_0x9ddf[_0x4e248c];return _0x311f49;};'use strict';var _=require(_0xf9dd('0x0'));var util=require(_0xf9dd('0x1'));var logger=require(_0xf9dd('0x2'))(_0xf9dd('0x3'));var moment=require(_0xf9dd('0x4'));var BPromise=require('bluebird');var rp=require(_0xf9dd('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xf9dd('0x6'));var attributes=require('./chatGroup.attributes');module[_0xf9dd('0x7')]=function(_0x2f17ff,_0x5b0d34){return _0x2f17ff['define'](_0xf9dd('0x8'),attributes,{'tableName':_0xf9dd('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0c52=['path','rimraf','exports','define','lodash','../../config/logger','api','moment','request-promise'];(function(_0x34b57c,_0x97c5c9){var _0x2ac76b=function(_0x57bd89){while(--_0x57bd89){_0x34b57c['push'](_0x34b57c['shift']());}};_0x2ac76b(++_0x97c5c9);}(_0x0c52,0xee));var _0x20c5=function(_0x5ab7d3,_0x3ccff1){_0x5ab7d3=_0x5ab7d3-0x0;var _0x4472cc=_0x0c52[_0x5ab7d3];return _0x4472cc;};'use strict';var _=require(_0x20c5('0x0'));var util=require('util');var logger=require(_0x20c5('0x1'))(_0x20c5('0x2'));var moment=require(_0x20c5('0x3'));var BPromise=require('bluebird');var rp=require(_0x20c5('0x4'));var fs=require('fs');var path=require(_0x20c5('0x5'));var rimraf=require(_0x20c5('0x6'));var config=require('../../config/environment');var attributes=require('./chatGroup.attributes');module[_0x20c5('0x7')]=function(_0x2d18d3,_0x5dcf7a){return _0x2d18d3[_0x20c5('0x8')]('ChatGroup',attributes,{'tableName':'chat_groups','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ef5cf64..02c1a37 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3468=['message','result','catch','lodash','bluebird','../../mysqldb','../../config/utils','../../config/logger','client','redis','defaults','localhost','socket.io-emitter','./chatGroup.socket','register','then','info','ChatGroup,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code'];(function(_0x553e3a,_0xf08208){var _0x3988f6=function(_0x4f1930){while(--_0x4f1930){_0x553e3a['push'](_0x553e3a['shift']());}};_0x3988f6(++_0xf08208);}(_0x3468,0x8d));var _0x8346=function(_0x157614,_0x1aba89){_0x157614=_0x157614-0x0;var _0x383bc8=_0x3468[_0x157614];return _0x383bc8;};'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')]('ChatGroup,\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);});});}
\ No newline at end of file
+var _0x379e=['lodash','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','socket.io-emitter','./chatGroup.socket','register','then','info','ChatGroup,\x20%s,\x20%s','ChatGroup,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch'];(function(_0x29e5e8,_0x1995a5){var _0x193fcf=function(_0x427534){while(--_0x427534){_0x29e5e8['push'](_0x29e5e8['shift']());}};_0x193fcf(++_0x1995a5);}(_0x379e,0x104));var _0xe379=function(_0x230934,_0x2c07cf){_0x230934=_0x230934-0x0;var _0x336abd=_0x379e[_0x230934];return _0x336abd;};'use strict';var _=require(_0xe379('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xe379('0x1'));var fs=require('fs');var Redis=require(_0xe379('0x2'));var db=require(_0xe379('0x3'))['db'];var utils=require(_0xe379('0x4'));var logger=require(_0xe379('0x5'))(_0xe379('0x6'));var config=require(_0xe379('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xe379('0x8')][_0xe379('0x9')]({'port':0x232a});config[_0xe379('0xa')]=_[_0xe379('0xb')](config[_0xe379('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0xe379('0xc'))(new Redis(config[_0xe379('0xa')]));require(_0xe379('0xd'))[_0xe379('0xe')](socket);function respondWithRpcPromise(_0x3ec54c,_0x1a8d3b,_0x10c156){return new BPromise(function(_0x8eb46c,_0x6c4f40){return client['request'](_0x3ec54c,_0x10c156)[_0xe379('0xf')](function(_0x19631b){logger[_0xe379('0x10')](_0xe379('0x11'),_0x1a8d3b,'request\x20sent');logger['debug'](_0xe379('0x12'),_0x1a8d3b,_0xe379('0x13'),JSON[_0xe379('0x14')](_0x19631b));if(_0x19631b[_0xe379('0x15')]){if(_0x19631b[_0xe379('0x15')][_0xe379('0x16')]===0x1f4){logger[_0xe379('0x15')](_0xe379('0x11'),_0x1a8d3b,_0x19631b['error'][_0xe379('0x17')]);return _0x6c4f40(_0x19631b[_0xe379('0x15')][_0xe379('0x17')]);}logger[_0xe379('0x15')](_0xe379('0x11'),_0x1a8d3b,_0x19631b[_0xe379('0x15')]['message']);return _0x8eb46c(_0x19631b[_0xe379('0x15')]['message']);}else{logger[_0xe379('0x10')]('ChatGroup,\x20%s,\x20%s',_0x1a8d3b,_0xe379('0x13'));_0x8eb46c(_0x19631b[_0xe379('0x18')][_0xe379('0x17')]);}})[_0xe379('0x19')](function(_0x5e1882){logger[_0xe379('0x15')](_0xe379('0x11'),_0x1a8d3b,_0x5e1882);_0x6c4f40(_0x5e1882);});});}
\ No newline at end of file
index 6296762..60418d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe351=['chatGroup:','remove','update','removeListener','register'];(function(_0x19b84f,_0x48765e){var _0x18067b=function(_0x1c69aa){while(--_0x1c69aa){_0x19b84f['push'](_0x19b84f['shift']());}};_0x18067b(++_0x48765e);}(_0xe351,0x182));var _0x1e35=function(_0xd86d0c,_0x2391ef){_0xd86d0c=_0xd86d0c-0x0;var _0x16c264=_0xe351[_0xd86d0c];return _0x16c264;};'use strict';var ChatGroupEvents=require('./chatGroup.events');var events=['save',_0x1e35('0x0'),_0x1e35('0x1')];function createListener(_0x3356c8,_0x596b28){return function(_0x5e2828){_0x596b28['emit'](_0x3356c8,_0x5e2828);};}function removeListener(_0x23bbaf,_0x4e7b35){return function(){ChatGroupEvents[_0x1e35('0x2')](_0x23bbaf,_0x4e7b35);};}exports[_0x1e35('0x3')]=function(_0x831927){for(var _0x4a0d92=0x0,_0x133971=events['length'];_0x4a0d92<_0x133971;_0x4a0d92++){var _0x19fff4=events[_0x4a0d92];var _0x5c5ea9=createListener(_0x1e35('0x4')+_0x19fff4,_0x831927);ChatGroupEvents['on'](_0x19fff4,_0x5c5ea9);}};
\ No newline at end of file
+var _0xc153=['remove','emit','removeListener','register','chatGroup:','./chatGroup.events','save'];(function(_0x185c6c,_0x194ae5){var _0x3a41ba=function(_0x3f50a2){while(--_0x3f50a2){_0x185c6c['push'](_0x185c6c['shift']());}};_0x3a41ba(++_0x194ae5);}(_0xc153,0x9f));var _0x3c15=function(_0x29d177,_0x19dc91){_0x29d177=_0x29d177-0x0;var _0x4380bb=_0xc153[_0x29d177];return _0x4380bb;};'use strict';var ChatGroupEvents=require(_0x3c15('0x0'));var events=[_0x3c15('0x1'),_0x3c15('0x2'),'update'];function createListener(_0x31263e,_0x3fe833){return function(_0x53c15f){_0x3fe833[_0x3c15('0x3')](_0x31263e,_0x53c15f);};}function removeListener(_0x54aa01,_0x111e4d){return function(){ChatGroupEvents[_0x3c15('0x4')](_0x54aa01,_0x111e4d);};}exports[_0x3c15('0x5')]=function(_0x22dddc){for(var _0x5d8fc2=0x0,_0x2cf615=events['length'];_0x5d8fc2<_0x2cf615;_0x5d8fc2++){var _0x502d5e=events[_0x5d8fc2];var _0x5cd981=createListener(_0x3c15('0x6')+_0x502d5e,_0x22dddc);ChatGroupEvents['on'](_0x502d5e,_0x5cd981);}};
\ No newline at end of file
index a148483..f2a1eee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9fdc=['post','/:id/messages','addMessage','put','update','destroy','delete','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatGroup.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/unread','getUnread','getMembers','getMessages'];(function(_0x5ce4a1,_0x15f338){var _0x437272=function(_0x39d353){while(--_0x39d353){_0x5ce4a1['push'](_0x5ce4a1['shift']());}};_0x437272(++_0x15f338);}(_0x9fdc,0x164));var _0xc9fd=function(_0x4eafed,_0x26e2bc){_0x4eafed=_0x4eafed-0x0;var _0x159c85=_0x9fdc[_0x4eafed];return _0x159c85;};'use strict';var multer=require(_0xc9fd('0x0'));var util=require(_0xc9fd('0x1'));var path=require(_0xc9fd('0x2'));var timeout=require('connect-timeout');var express=require(_0xc9fd('0x3'));var router=express[_0xc9fd('0x4')]();var fs_extra=require(_0xc9fd('0x5'));var auth=require(_0xc9fd('0x6'));var interaction=require(_0xc9fd('0x7'));var config=require(_0xc9fd('0x8'));var controller=require(_0xc9fd('0x9'));router[_0xc9fd('0xa')]('/',auth[_0xc9fd('0xb')](),controller[_0xc9fd('0xc')]);router[_0xc9fd('0xa')](_0xc9fd('0xd'),auth[_0xc9fd('0xb')](),controller[_0xc9fd('0xe')]);router[_0xc9fd('0xa')](_0xc9fd('0xf'),auth[_0xc9fd('0xb')](),controller[_0xc9fd('0x10')]);router[_0xc9fd('0xa')](_0xc9fd('0x11'),auth['isAuthenticated'](),controller[_0xc9fd('0x12')]);router['get']('/:id/members',auth[_0xc9fd('0xb')](),controller[_0xc9fd('0x13')]);router[_0xc9fd('0xa')]('/:id/messages',auth[_0xc9fd('0xb')](),controller[_0xc9fd('0x14')]);router[_0xc9fd('0x15')]('/',auth[_0xc9fd('0xb')](),controller['create']);router[_0xc9fd('0x15')]('/:id/members',auth['isAuthenticated'](),controller['addMembers']);router[_0xc9fd('0x15')](_0xc9fd('0x16'),auth[_0xc9fd('0xb')](),controller[_0xc9fd('0x17')]);router[_0xc9fd('0x18')](_0xc9fd('0xf'),auth['isAuthenticated'](),controller[_0xc9fd('0x19')]);router['delete'](_0xc9fd('0xf'),auth[_0xc9fd('0xb')](),controller[_0xc9fd('0x1a')]);router[_0xc9fd('0x1b')]('/:id/members',auth[_0xc9fd('0xb')](),controller['removeMembers']);module[_0xc9fd('0x1c')]=router;
\ No newline at end of file
+var _0x1010=['delete','removeMembers','exports','multer','path','connect-timeout','Router','../../config/environment','./chatGroup.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/unread','getUnread','/:id/members','getMessages','post','create','addMembers','addMessage','put','update','destroy'];(function(_0x81e623,_0x1dcdce){var _0x1fdd49=function(_0x189f98){while(--_0x189f98){_0x81e623['push'](_0x81e623['shift']());}};_0x1fdd49(++_0x1dcdce);}(_0x1010,0x111));var _0x0101=function(_0x616290,_0x280b7f){_0x616290=_0x616290-0x0;var _0x453879=_0x1010[_0x616290];return _0x453879;};'use strict';var multer=require(_0x0101('0x0'));var util=require('util');var path=require(_0x0101('0x1'));var timeout=require(_0x0101('0x2'));var express=require('express');var router=express[_0x0101('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x0101('0x4'));var controller=require(_0x0101('0x5'));router[_0x0101('0x6')]('/',auth[_0x0101('0x7')](),controller[_0x0101('0x8')]);router[_0x0101('0x6')](_0x0101('0x9'),auth[_0x0101('0x7')](),controller[_0x0101('0xa')]);router['get'](_0x0101('0xb'),auth['isAuthenticated'](),controller[_0x0101('0xc')]);router[_0x0101('0x6')](_0x0101('0xd'),auth[_0x0101('0x7')](),controller[_0x0101('0xe')]);router['get'](_0x0101('0xf'),auth[_0x0101('0x7')](),controller['getMembers']);router[_0x0101('0x6')]('/:id/messages',auth[_0x0101('0x7')](),controller[_0x0101('0x10')]);router[_0x0101('0x11')]('/',auth[_0x0101('0x7')](),controller[_0x0101('0x12')]);router[_0x0101('0x11')](_0x0101('0xf'),auth[_0x0101('0x7')](),controller[_0x0101('0x13')]);router['post']('/:id/messages',auth[_0x0101('0x7')](),controller[_0x0101('0x14')]);router[_0x0101('0x15')](_0x0101('0xb'),auth[_0x0101('0x7')](),controller[_0x0101('0x16')]);router['delete']('/:id',auth[_0x0101('0x7')](),controller[_0x0101('0x17')]);router[_0x0101('0x18')](_0x0101('0xf'),auth[_0x0101('0x7')](),controller[_0x0101('0x19')]);module[_0x0101('0x1a')]=router;
\ No newline at end of file
index 40e7b46..8229a7d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x80ed=['INTEGER','ENUM','thumb','star','TEXT','DATE','STRING','long','out','sequelize','BOOLEAN'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x80ed,0x11c));var _0xd80e=function(_0x1d1cb5,_0x298f33){_0x1d1cb5=_0x1d1cb5-0x0;var _0x332fbe=_0x80ed[_0x1d1cb5];return _0x332fbe;};'use strict';var Sequelize=require(_0xd80e('0x0'));module['exports']={'closed':{'type':Sequelize[_0xd80e('0x1')],'defaultValue':![]},'ratingValue':{'type':Sequelize[_0xd80e('0x2')]},'ratingType':{'type':Sequelize[_0xd80e('0x3')]('star',_0xd80e('0x4')),'defaultValue':_0xd80e('0x5')},'ratingMessage':{'type':Sequelize[_0xd80e('0x6')]},'pathTranscript':{'type':Sequelize[_0xd80e('0x6')]},'mailTranscript':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize[_0xd80e('0x7')]},'disposition':{'type':Sequelize[_0xd80e('0x8')]},'secondDisposition':{'type':Sequelize[_0xd80e('0x8')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0xd80e('0x8')]},'browserName':{'type':Sequelize[_0xd80e('0x8')]},'browserVersion':{'type':Sequelize[_0xd80e('0x8')]},'osName':{'type':Sequelize[_0xd80e('0x8')]},'osVersion':{'type':Sequelize[_0xd80e('0x8')]},'deviceModel':{'type':Sequelize[_0xd80e('0x8')]},'deviceVendor':{'type':Sequelize[_0xd80e('0x8')]},'deviceType':{'type':Sequelize[_0xd80e('0x8')]},'referer':{'type':Sequelize[_0xd80e('0x6')]},'customerIp':{'type':Sequelize[_0xd80e('0x8')]},'formData':{'type':Sequelize['TEXT'](_0xd80e('0x9'))},'read1stAt':{'type':Sequelize[_0xd80e('0x7')]},'lastMsgAt':{'type':Sequelize[_0xd80e('0x7')]},'lastMsgDirection':{'type':Sequelize[_0xd80e('0x3')]('in',_0xd80e('0xa')),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize[_0xd80e('0x8')]},'customerPort':{'type':Sequelize[_0xd80e('0x8')]},'vidaooSessionId':{'type':Sequelize[_0xd80e('0x6')]},'autoreplyExecuted':{'type':Sequelize[_0xd80e('0x1')],'defaultValue':![]}};
\ No newline at end of file
+var _0x98e5=['long','DATE','BOOLEAN','INTEGER','ENUM','thumb','star','TEXT','STRING'];(function(_0x181a69,_0x51e787){var _0x2e5f5e=function(_0x4d7d32){while(--_0x4d7d32){_0x181a69['push'](_0x181a69['shift']());}};_0x2e5f5e(++_0x51e787);}(_0x98e5,0x8a));var _0x598e=function(_0x575cdb,_0x26f72c){_0x575cdb=_0x575cdb-0x0;var _0x27dcdc=_0x98e5[_0x575cdb];return _0x27dcdc;};'use strict';var Sequelize=require('sequelize');module['exports']={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'ratingValue':{'type':Sequelize[_0x598e('0x0')]},'ratingType':{'type':Sequelize[_0x598e('0x1')]('star',_0x598e('0x2')),'defaultValue':_0x598e('0x3')},'ratingMessage':{'type':Sequelize['TEXT']},'pathTranscript':{'type':Sequelize[_0x598e('0x4')]},'mailTranscript':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0x598e('0x5')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0x598e('0x5')]},'note':{'type':Sequelize[_0x598e('0x5')]},'browserName':{'type':Sequelize[_0x598e('0x5')]},'browserVersion':{'type':Sequelize[_0x598e('0x5')]},'osName':{'type':Sequelize[_0x598e('0x5')]},'osVersion':{'type':Sequelize[_0x598e('0x5')]},'deviceModel':{'type':Sequelize[_0x598e('0x5')]},'deviceVendor':{'type':Sequelize[_0x598e('0x5')]},'deviceType':{'type':Sequelize[_0x598e('0x5')]},'referer':{'type':Sequelize[_0x598e('0x4')]},'customerIp':{'type':Sequelize[_0x598e('0x5')]},'formData':{'type':Sequelize['TEXT'](_0x598e('0x6'))},'read1stAt':{'type':Sequelize[_0x598e('0x7')]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize[_0x598e('0x1')]('in','out'),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize[_0x598e('0x5')]},'customerPort':{'type':Sequelize[_0x598e('0x5')]},'vidaooSessionId':{'type':Sequelize[_0x598e('0x4')]},'autoreplyExecuted':{'type':Sequelize[_0x598e('0x8')],'defaultValue':![]}};
\ No newline at end of file
index bf13f21..9ce65b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc013=['toString','server','tmp','files','attachments','transcript-%d-%s.zip','push','Contact','firstName','read','Account','Owner','get','mkdirSync','createdAt','closedAt','browserName','referer','customerIp','customerPort','existsSync','createWriteStream','lastName','value','renderFile','views','downloadInteraction.ejs','transcript-','.pdf','Chat','createPdfFromHTML','err','unlinkSync','rimraf','zip-dir','request-promise','bluebird','util','path','lodash','ioredis','../../components/interaction/service','../../components/parsers/qs','../../components/export/pdf','../../config/logger','api','../../config/environment','defaults','redis','localhost','socket.io-emitter','./chatInteraction.socket','jayson/promise','client','http','request','info','ChatInteraction,\x20%s,\x20%s','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','error','code','message','request\x20sent','result','catch','sendStatus','status','end','json','undefined','count','offset','limit','set','Content-Range','update','then','destroy','stack','name','send','render','body','contact','account','index','map','ChatInteraction','fieldName','type','key','getOptions','findAll','chat','query','user','show','params','model','keys','rawAttributes','filters','attributes','intersection','fields','includeAll','include','merge','create','find','describe','createVidaooSession','findOne','ChatWebsite','ChatWebsiteId','vidaooApiKey','vidaooEscalation','vidaooTopic','vidaooNote','vidaooMetadata','fullname','POST','https://api-vidaoo.xcally.com/api/v1/meetings','email','isNull','follow','parse','Sequelize','Error\x20in\x20conversion\x20vidaooMetadata','ValidationError','Error\x20in\x20Vidaoo\x20configuration','join_url','out','ChatMessage','Unable\x20to\x20create\x20Vidaoo\x20session','updateAttributes','customUpdate','CmContact','abandon','abandonInteraction,\x20%s,\x20%s,\x20%s','UserId','closed','disposition','AbandonInteraction','originalname','basename','file','mimetype','attachmentDownload','Attachment','attachId','ChatOfflineMessageId','join','root','offline-chat/','download','close','mailTranscript','transcript-%s.txt','pathTranscript','Messages','User','length','agentAlias','System','customer','format','Visitor','ContactId','website_alias','%s%d','agent_alias','[%s]\x20%s:\x20%s\x0a','direction','secret','appendFileSync','MailAccount','MailServerOut','Smtp','CloudProvider','getSmtpOptions','sendMail','\x22%s\x22\x20<%s>','Mail\x20Transcript','Hi\x20%s,\x20attached\x20you\x20can\x20find\x20your\x20transcript\x20file.\x20\x0a\x0aRegards.\x20\x0a\x0a','addMessage','ids','getMessages','sort','where','pick','ChatInteractionId','filter','$gte','split','YYYY-MM-DD\x20HH:mm:ss','options','rows','hasOwnProperty','nolimit','order','alias','setTags','omit','spread','Tag','color','emit','chatInteractionTags:save','removeTags','unix'];(function(_0x1ada47,_0x93420b){var _0x35d6c3=function(_0x5d3d56){while(--_0x5d3d56){_0x1ada47['push'](_0x1ada47['shift']());}};_0x35d6c3(++_0x93420b);}(_0xc013,0xf5));var _0x3c01=function(_0x91d019,_0x5223c4){_0x91d019=_0x91d019-0x0;var _0x19de1f=_0xc013[_0x91d019];return _0x19de1f;};'use strict';var rimraf=require(_0x3c01('0x0'));var zipdir=require(_0x3c01('0x1'));var rp=require(_0x3c01('0x2'));var moment=require('moment');var BPromise=require(_0x3c01('0x3'));var Mustache=require('mustache');var util=require(_0x3c01('0x4'));var path=require(_0x3c01('0x5'));var ejs=require('ejs');var fs=require('fs');var _=require(_0x3c01('0x6'));var Redis=require(_0x3c01('0x7'));var interaction=require(_0x3c01('0x8'));var qs=require(_0x3c01('0x9'));var pdf=require(_0x3c01('0xa'));var logger=require(_0x3c01('0xb'))(_0x3c01('0xc'));var config=require(_0x3c01('0xd'));var db=require('../../mysqldb')['db'];config['redis']=_[_0x3c01('0xe')](config[_0x3c01('0xf')],{'host':_0x3c01('0x10'),'port':0x18eb});var socket=require(_0x3c01('0x11'))(new Redis(config[_0x3c01('0xf')]));require(_0x3c01('0x12'))['register'](socket);var jayson=require(_0x3c01('0x13'));var client=jayson[_0x3c01('0x14')][_0x3c01('0x15')]({'port':0x232b});var client9004=jayson['client'][_0x3c01('0x15')]({'port':0x232c});function respondWithRpcPromise(_0x59dabb,_0x282b16,_0x49b967,_0x4dd4b9){return new BPromise(function(_0x36272d,_0x5ae76a){var _0x46a485=_0x4dd4b9||client;return _0x46a485[_0x3c01('0x16')](_0x59dabb,_0x49b967)['then'](function(_0x38e459){logger[_0x3c01('0x17')](_0x3c01('0x18'),_0x282b16,'request\x20sent');logger[_0x3c01('0x19')](_0x3c01('0x1a'),_0x282b16,'request\x20sent',JSON['stringify'](_0x38e459));if(_0x38e459[_0x3c01('0x1b')]){if(_0x38e459[_0x3c01('0x1b')][_0x3c01('0x1c')]===0x1f4){logger[_0x3c01('0x1b')](_0x3c01('0x18'),_0x282b16,_0x38e459[_0x3c01('0x1b')][_0x3c01('0x1d')]);return _0x5ae76a(_0x38e459[_0x3c01('0x1b')][_0x3c01('0x1d')]);}logger[_0x3c01('0x1b')](_0x3c01('0x18'),_0x282b16,_0x38e459['error'][_0x3c01('0x1d')]);return _0x36272d(_0x38e459[_0x3c01('0x1b')][_0x3c01('0x1d')]);}else{logger[_0x3c01('0x17')](_0x3c01('0x18'),_0x282b16,_0x3c01('0x1e'));_0x36272d(_0x38e459[_0x3c01('0x1f')][_0x3c01('0x1d')]);}})[_0x3c01('0x20')](function(_0x12cc45){logger[_0x3c01('0x1b')](_0x3c01('0x18'),_0x282b16,_0x12cc45);_0x5ae76a(_0x12cc45);});});}function respondWithStatusCode(_0x31dea6,_0x784f98){_0x784f98=_0x784f98||0xcc;return function(_0x494339){if(_0x494339){return _0x31dea6[_0x3c01('0x21')](_0x784f98);}return _0x31dea6[_0x3c01('0x22')](_0x784f98)[_0x3c01('0x23')]();};}function respondWithResult(_0x1aa5c9,_0x16f376){_0x16f376=_0x16f376||0xc8;return function(_0x965374){if(_0x965374){return _0x1aa5c9[_0x3c01('0x22')](_0x16f376)[_0x3c01('0x24')](_0x965374);}};}function respondWithFilteredResult(_0x57c0c6,_0x5589ca){return function(_0x1b3006){if(_0x1b3006){var _0x5e2273=typeof _0x5589ca['offset']===_0x3c01('0x25')&&typeof _0x5589ca['limit']===_0x3c01('0x25');var _0x460994=_0x1b3006['count'];var _0x4dab2e=_0x5e2273?0x0:_0x5589ca['offset'];var _0x48b25d=_0x5e2273?_0x1b3006[_0x3c01('0x26')]:_0x5589ca[_0x3c01('0x27')]+_0x5589ca[_0x3c01('0x28')];var _0x42c6a8;if(_0x48b25d>=_0x460994){_0x48b25d=_0x460994;_0x42c6a8=0xc8;}else{_0x42c6a8=0xce;}_0x57c0c6['status'](_0x42c6a8);return _0x57c0c6[_0x3c01('0x29')](_0x3c01('0x2a'),_0x4dab2e+'-'+_0x48b25d+'/'+_0x460994)['json'](_0x1b3006);}return null;};}function saveUpdates(_0x15786e){return function(_0x47931f){if(_0x47931f){return _0x47931f[_0x3c01('0x2b')](_0x15786e)[_0x3c01('0x2c')](function(_0x5a3e56){return _0x5a3e56;});}return null;};}function removeEntity(_0x35be7d){return function(_0x198683){if(_0x198683){return _0x198683[_0x3c01('0x2d')]()['then'](function(){_0x35be7d[_0x3c01('0x22')](0xcc)['end']();});}};}function handleEntityNotFound(_0x552580){return function(_0x3f25c6){if(!_0x3f25c6){_0x552580[_0x3c01('0x21')](0x194);}return _0x3f25c6;};}function handleError(_0x5decd7,_0x574ea0){_0x574ea0=_0x574ea0||0x1f4;return function(_0x237a79){logger[_0x3c01('0x1b')](_0x237a79[_0x3c01('0x2e')]);if(_0x237a79['name']){delete _0x237a79[_0x3c01('0x2f')];}_0x5decd7[_0x3c01('0x22')](_0x574ea0)[_0x3c01('0x30')](_0x237a79);};}function getMustacheRender(_0x5904dc,_0x2dbbcb){return Mustache[_0x3c01('0x31')](_0x5904dc,_['merge'](_0x2dbbcb[_0x3c01('0x32')],{'contact':_0x2dbbcb[_0x3c01('0x33')],'message':_0x2dbbcb[_0x3c01('0x1d')],'agent':_0x2dbbcb['agent'],'interaction':_0x2dbbcb['interaction'],'account':_0x2dbbcb[_0x3c01('0x34')]}))||'';}exports[_0x3c01('0x35')]=function(_0xf9b7eb,_0x5d30c7){var _0x5acb39={};var _0x299d16=_[_0x3c01('0x36')](db[_0x3c01('0x37')]['rawAttributes'],function(_0x4001d2){return{'name':_0x4001d2[_0x3c01('0x38')],'type':_0x4001d2[_0x3c01('0x39')][_0x3c01('0x3a')]};});_0x5acb39=qs[_0x3c01('0x3b')](_0x299d16,_0xf9b7eb);return interaction[_0x3c01('0x3c')](_0x3c01('0x3d'),_0xf9b7eb[_0x3c01('0x3e')],_0xf9b7eb[_0x3c01('0x3f')],_0x5acb39,_0x299d16)[_0x3c01('0x2c')](respondWithFilteredResult(_0x5d30c7,_0x5acb39))[_0x3c01('0x20')](handleError(_0x5d30c7,null));};exports[_0x3c01('0x40')]=function(_0xf46328,_0x63e081){var _0x248982={'raw':![],'where':{'id':_0xf46328[_0x3c01('0x41')]['id']}},_0x37d08a={};_0x37d08a[_0x3c01('0x42')]=_[_0x3c01('0x43')](db['ChatInteraction'][_0x3c01('0x44')]);_0x37d08a[_0x3c01('0x3e')]=_[_0x3c01('0x43')](_0xf46328[_0x3c01('0x3e')]);_0x37d08a[_0x3c01('0x45')]=_['intersection'](_0x37d08a['model'],_0x37d08a[_0x3c01('0x3e')]);_0x248982[_0x3c01('0x46')]=_[_0x3c01('0x47')](_0x37d08a[_0x3c01('0x42')],qs[_0x3c01('0x48')](_0xf46328[_0x3c01('0x3e')][_0x3c01('0x48')]));_0x248982[_0x3c01('0x46')]=_0x248982[_0x3c01('0x46')]['length']?_0x248982[_0x3c01('0x46')]:_0x37d08a[_0x3c01('0x42')];if(_0xf46328['query'][_0x3c01('0x49')]){_0x248982[_0x3c01('0x4a')]=[{'all':!![]}];}_0x248982=_[_0x3c01('0x4b')]({},_0x248982,_0xf46328['options']);return db['ChatInteraction']['find'](_0x248982)[_0x3c01('0x2c')](handleEntityNotFound(_0x63e081,null))[_0x3c01('0x2c')](respondWithResult(_0x63e081,null))['catch'](handleError(_0x63e081,null));};exports[_0x3c01('0x4c')]=function(_0x458cd9,_0x3cad3f){return db[_0x3c01('0x37')][_0x3c01('0x4c')](_0x458cd9[_0x3c01('0x32')],{})['then'](respondWithResult(_0x3cad3f,0xc9))['catch'](handleError(_0x3cad3f,null));};exports[_0x3c01('0x2b')]=function(_0x36ddeb,_0x1e4b29){if(_0x36ddeb[_0x3c01('0x32')]['id']){delete _0x36ddeb[_0x3c01('0x32')]['id'];}return db[_0x3c01('0x37')][_0x3c01('0x4d')]({'where':{'id':_0x36ddeb['params']['id']}})[_0x3c01('0x2c')](handleEntityNotFound(_0x1e4b29,null))[_0x3c01('0x2c')](saveUpdates(_0x36ddeb[_0x3c01('0x32')],null))['then'](respondWithResult(_0x1e4b29,null))['catch'](handleError(_0x1e4b29,null));};exports[_0x3c01('0x2d')]=function(_0xee08f7,_0x512019){return db[_0x3c01('0x37')]['find']({'where':{'id':_0xee08f7[_0x3c01('0x41')]['id']}})[_0x3c01('0x2c')](handleEntityNotFound(_0x512019,null))['then'](removeEntity(_0x512019,null))[_0x3c01('0x20')](handleError(_0x512019,null));};exports[_0x3c01('0x4e')]=function(_0x2948e0,_0x4507a8){return db['ChatInteraction']['describe']()[_0x3c01('0x2c')](respondWithResult(_0x4507a8,null))[_0x3c01('0x20')](handleError(_0x4507a8,null));};exports[_0x3c01('0x4f')]=function(_0xdedbe5,_0x262ec7){var _0x50fa46=_0xdedbe5['params']['id'];var _0x1b6ccd;var _0x15a318;var _0x5ca2ac;return db[_0x3c01('0x37')][_0x3c01('0x50')]({'where':{'id':_0x50fa46}})[_0x3c01('0x2c')](function(_0x1eb7a7){_0x1b6ccd=_0x1eb7a7;return db[_0x3c01('0x51')][_0x3c01('0x50')]({'where':{'id':_0x1eb7a7[_0x3c01('0x52')]},'attributes':['id',_0x3c01('0x53'),_0x3c01('0x54'),_0x3c01('0x55'),_0x3c01('0x56'),_0x3c01('0x57')],'raw':!![]});})[_0x3c01('0x2c')](function(_0x497ad6){if(_0x497ad6&&_0x497ad6[_0x3c01('0x53')]&&_0x497ad6[_0x3c01('0x54')]){_0x15a318=_0x497ad6;var _0x2d7e49={'interaction':{'id':_0x50fa46},'agent':{'id':_0xdedbe5[_0x3c01('0x3f')]['id'],'name':_0xdedbe5[_0x3c01('0x3f')][_0x3c01('0x2f')],'fullname':_0xdedbe5['user'][_0x3c01('0x58')],'email':_0xdedbe5[_0x3c01('0x3f')]['email']},'contact':_0xdedbe5[_0x3c01('0x32')][_0x3c01('0x33')],'account':_0xdedbe5[_0x3c01('0x32')][_0x3c01('0x34')]};var _0x49d170={'rejectUnauthorized':![],'method':_0x3c01('0x59'),'url':_0x3c01('0x5a'),'headers':{'X-APIKEY':_0x497ad6['vidaooApiKey']},'body':{'duration':null,'scheduledAt':null,'participants':[_0xdedbe5[_0x3c01('0x3f')][_0x3c01('0x5b')]],'buttons':null,'topic':_0x15a318[_0x3c01('0x55')],'note':_[_0x3c01('0x5c')](_0x15a318[_0x3c01('0x56')])?null:getMustacheRender(_0x15a318[_0x3c01('0x56')],_0x2d7e49),'metadata':null},'redirect':_0x3c01('0x5d'),'json':!![]};try{if(!_['isNull'](_0x15a318[_0x3c01('0x57')])){var _0x20d59c=getMustacheRender(_0x15a318[_0x3c01('0x57')],_0x2d7e49);var _0xaed906=JSON[_0x3c01('0x5e')](_0x20d59c);_0x49d170[_0x3c01('0x32')]['metadata']=_0xaed906;}}catch(_0x22d74e){throw new db[(_0x3c01('0x5f'))]['ValidationError'](_0x3c01('0x60'));}return rp(_0x49d170);}else{throw new db[(_0x3c01('0x5f'))][(_0x3c01('0x61'))](_0x3c01('0x62'));}})[_0x3c01('0x2c')](function(_0x1e1225){_0x5ca2ac=_0x1e1225;if(_0x5ca2ac['id']){var _0x2c51d0={'body':_0x5ca2ac[_0x3c01('0x63')],'ChatWebsiteId':_0x15a318['id'],'ChatInteractionId':_0x1b6ccd['id'],'direction':_0x3c01('0x64'),'UserId':_0xdedbe5[_0x3c01('0x3f')]['id']};return db[_0x3c01('0x65')]['create'](_0x2c51d0,{});}else{throw new db['Sequelize'][(_0x3c01('0x61'))](_0x3c01('0x66'));}})[_0x3c01('0x2c')](function(){return _0x1b6ccd[_0x3c01('0x67')]({'vidaooSessionId':_0x5ca2ac['id']});})['then'](respondWithResult(_0x262ec7,null))[_0x3c01('0x20')](handleError(_0x262ec7,null));};exports[_0x3c01('0x68')]=function(_0x2e7c76,_0x3db599){if(_0x2e7c76[_0x3c01('0x32')]['id']){delete _0x2e7c76[_0x3c01('0x32')]['id'];}return db[_0x3c01('0x37')][_0x3c01('0x4d')]({'where':{'id':_0x2e7c76[_0x3c01('0x41')]['id']},'include':[{'model':db[_0x3c01('0x69')],'as':'Contact'}]})[_0x3c01('0x2c')](handleEntityNotFound(_0x3db599,null))['then'](saveUpdates(_0x2e7c76[_0x3c01('0x32')],null))[_0x3c01('0x2c')](respondWithResult(_0x3db599,null))[_0x3c01('0x20')](handleError(_0x3db599,null));};exports[_0x3c01('0x6a')]=function(_0x26d134,_0x573013){if(_0x26d134[_0x3c01('0x32')]['id']){delete _0x26d134[_0x3c01('0x32')]['id'];}return db['ChatInteraction'][_0x3c01('0x4d')]({'where':{'id':_0x26d134[_0x3c01('0x41')]['id']}})['then'](function(_0x9e52f6){if(!_0x9e52f6){logger[_0x3c01('0x1b')](_0x3c01('0x6b'),_0x3c01('0x6a'),0x194,'entity\x20not\x20found');_0x573013[_0x3c01('0x21')](0x194);}else{if(_0x9e52f6[_0x3c01('0x6c')]){throw new db['Sequelize'][(_0x3c01('0x61'))]('Interaction\x20already\x20assigned');}}return _0x9e52f6;})['then'](function(_0x5e4135){if(_0x5e4135){return _0x5e4135[_0x3c01('0x2b')]({'closed':_0x26d134[_0x3c01('0x32')][_0x3c01('0x6d')],'disposition':_0x26d134[_0x3c01('0x32')][_0x3c01('0x6e')]})['then'](function(_0x563cfa){return _0x563cfa;});}})[_0x3c01('0x2c')](function(){return respondWithRpcPromise(_0x3c01('0x6f'),_0x3c01('0x6a'),_0x26d134[_0x3c01('0x32')],client9004);})[_0x3c01('0x2c')](respondWithResult(_0x573013,null))['catch'](handleError(_0x573013,null));};exports['attachmentUpload']=function(_0x25a1f1,_0x530562){_0x25a1f1[_0x3c01('0x32')]['name']=_0x25a1f1['file'][_0x3c01('0x70')];_0x25a1f1[_0x3c01('0x32')][_0x3c01('0x71')]=_0x25a1f1[_0x3c01('0x72')]['filename'];_0x25a1f1[_0x3c01('0x32')]['type']=_0x25a1f1[_0x3c01('0x72')][_0x3c01('0x73')];return db['Attachment'][_0x3c01('0x4c')](_0x25a1f1[_0x3c01('0x32')])[_0x3c01('0x2c')](respondWithResult(_0x530562,0xc9))[_0x3c01('0x20')](handleError(_0x530562,null));};exports[_0x3c01('0x74')]=function(_0x1bd383,_0xc85382){return db[_0x3c01('0x37')][_0x3c01('0x50')]({'where':{'id':_0x1bd383['params']['id']},'raw':!![]})['then'](handleEntityNotFound(_0xc85382,null))[_0x3c01('0x2c')](function(_0x590b5d){if(_0x590b5d){if(_0x590b5d[_0x3c01('0x6d')]){return _0xc85382[_0x3c01('0x22')](0x193)[_0x3c01('0x24')]({'status':0x193,'message':'Unauthorized'});}return db[_0x3c01('0x75')]['findOne']({'where':{'id':_0x1bd383[_0x3c01('0x3e')][_0x3c01('0x76')]},'raw':!![]})[_0x3c01('0x2c')](handleEntityNotFound(_0xc85382,null));}})['then'](function(_0x5bba60){if(_0x5bba60){var _0x4d6722=_0x5bba60[_0x3c01('0x77')]!==null;var _0x2b3407=path[_0x3c01('0x78')](config[_0x3c01('0x79')],'server/files/attachments/');if(_0x4d6722){_0x2b3407=path[_0x3c01('0x78')](_0x2b3407,_0x3c01('0x7a'));}var _0x558d7a=path['join'](_0x2b3407,_0x5bba60[_0x3c01('0x71')]);return _0xc85382[_0x3c01('0x7b')](_0x558d7a);}})[_0x3c01('0x20')](handleError(_0xc85382,null));};exports[_0x3c01('0x7c')]=function(_0x3f5720,_0x2d24b4){var _0x39d379=null;var _0x575077=null;var _0xa776d2=null;if(_0x3f5720['body']['id']){delete _0x3f5720[_0x3c01('0x32')]['id'];}if(_0x3f5720['body'][_0x3c01('0x7d')]){_0xa776d2=path[_0x3c01('0x78')](config[_0x3c01('0x79')],'server/files/chat/upload/',util['format'](_0x3c01('0x7e'),Date['now']()));_0x3f5720[_0x3c01('0x32')][_0x3c01('0x7f')]=_0xa776d2;}return db['ChatInteraction']['find']({'where':{'id':_0x3f5720[_0x3c01('0x41')]['id']},'include':[{'model':db[_0x3c01('0x65')],'as':_0x3c01('0x80'),'include':[{'model':db[_0x3c01('0x81')],'as':_0x3c01('0x81')}]}]})[_0x3c01('0x2c')](handleEntityNotFound(_0x2d24b4,null))[_0x3c01('0x2c')](saveUpdates(_0x3f5720[_0x3c01('0x32')],null))[_0x3c01('0x2c')](function(_0x27cd91){if(_0x27cd91){_0x39d379=_0x27cd91;return db[_0x3c01('0x51')][_0x3c01('0x4d')]({'where':{'id':_0x39d379[_0x3c01('0x52')]}});}})[_0x3c01('0x2c')](function(_0x530753){if(_0x530753){_0x575077=_0x530753;return db[_0x3c01('0x69')][_0x3c01('0x4d')]({'where':{'id':_0x39d379['ContactId']}});}})['then'](function(_0x57a548){if(_0x57a548){if(_0xa776d2){var _0x2184fe=null;for(var _0x57a728=0x1;_0x57a728<_0x39d379[_0x3c01('0x80')][_0x3c01('0x82')];++_0x57a728){_0x2184fe=_0x39d379[_0x3c01('0x80')][_0x57a728];var _0x17d30e=_0x2184fe[_0x3c01('0x6c')]?util['format']('%s%d',_0x575077[_0x3c01('0x83')],_0x2184fe[_0x3c01('0x6c')]):_0x3c01('0x84');var _0x21b330=_0x3f5720[_0x3c01('0x32')][_0x3c01('0x85')]||util[_0x3c01('0x86')]('%s%d',_0x3c01('0x87'),_0x2184fe[_0x3c01('0x88')]);switch(_0x575077['agentIdentifier']){case _0x3c01('0x89'):_0x17d30e=_0x2184fe[_0x3c01('0x6c')]?util['format'](_0x3c01('0x8a'),_0x575077[_0x3c01('0x83')],_0x2184fe[_0x3c01('0x6c')]):_0x3c01('0x84');break;case _0x3c01('0x8b'):_0x17d30e=_0x2184fe[_0x3c01('0x6c')]?_0x2184fe[_0x3c01('0x81')]['alias']||_0x2184fe[_0x3c01('0x81')][_0x3c01('0x58')]:'System';break;case'agent_fullname':_0x17d30e=_0x2184fe['UserId']?_0x2184fe[_0x3c01('0x81')][_0x3c01('0x58')]:'System';break;default:_0x17d30e=_0x2184fe['UserId']?util['format'](_0x3c01('0x8a'),_0x575077['agentAlias'],_0x2184fe[_0x3c01('0x6c')]):_0x3c01('0x84');}var _0x26a691=util[_0x3c01('0x86')](_0x3c01('0x8c'),moment(_0x2184fe['createdAt'])[_0x3c01('0x86')]('MM/DD/YYYY\x20HH:mm:ss'),_0x2184fe[_0x3c01('0x8d')]==='in'?_0x21b330:_0x17d30e,_0x2184fe['body']);if(!_0x2184fe[_0x3c01('0x8e')]){fs[_0x3c01('0x8f')](_0xa776d2,_0x26a691);}}return db[_0x3c01('0x90')][_0x3c01('0x50')]({'where':{'service':!![]},'include':[{'model':db[_0x3c01('0x91')],'as':_0x3c01('0x92'),'raw':!![],'include':[{'model':db['CloudProvider'],'as':_0x3c01('0x93'),'raw':!![]}]}]});}}})[_0x3c01('0x2c')](function(_0x35ad81){if(!_0x35ad81||!_0x35ad81['Smtp']||!_0x3f5720['body'])return _0x39d379;var _0x305a6b=_0x35ad81[_0x3c01('0x94')]();return respondWithRpcPromise('SendMail',_0x3c01('0x95'),{'account':_0x305a6b,'message':{'from':util[_0x3c01('0x86')](_0x3c01('0x96'),_0x35ad81[_0x3c01('0x2f')],_0x35ad81[_0x3c01('0x5b')]||_0x35ad81[_0x3c01('0x92')][_0x3c01('0x3f')]),'to':_0x3f5720[_0x3c01('0x32')]['mailTranscript'],'subject':_0x3c01('0x97'),'text':util['format'](_0x3c01('0x98'),_0x3f5720[_0x3c01('0x32')][_0x3c01('0x7d')]),'attachments':[{'path':_0xa776d2}]}})[_0x3c01('0x2c')](function(){return _0x39d379;})['catch'](function(_0x252f68){logger['error'](_0x252f68);});})[_0x3c01('0x2c')](respondWithStatusCode(_0x2d24b4,0xc8))[_0x3c01('0x20')](handleError(_0x2d24b4,null));};exports[_0x3c01('0x99')]=function(_0x310e83,_0x42ebd0){return db['ChatMessage'][_0x3c01('0x4d')]({'where':{'id':_0x310e83['params']['id']}})[_0x3c01('0x2c')](handleEntityNotFound(_0x42ebd0,null))[_0x3c01('0x2c')](function(_0x3cf14a){if(_0x3cf14a){return _0x3cf14a[_0x3c01('0x99')](_0x310e83['body']['ids'],_['omit'](_0x310e83[_0x3c01('0x32')],[_0x3c01('0x9a'),'id'])||{});}})['then'](respondWithResult(_0x42ebd0,null))['catch'](handleError(_0x42ebd0,null));};exports[_0x3c01('0x9b')]=function(_0x41c44b,_0x4f8b05){var _0x5ef6ad={'raw':![],'where':{}};var _0x2dbe11={};var _0x12bdb8={'count':0x0,'rows':[]};return db[_0x3c01('0x37')]['findOne']({'where':{'id':_0x41c44b[_0x3c01('0x41')]['id']}})[_0x3c01('0x2c')](handleEntityNotFound(_0x4f8b05,null))[_0x3c01('0x2c')](function(_0x1f9a74){if(_0x1f9a74){_0x2dbe11[_0x3c01('0x42')]=_[_0x3c01('0x43')](db[_0x3c01('0x65')][_0x3c01('0x44')]);_0x2dbe11[_0x3c01('0x3e')]=_['keys'](_0x41c44b['query']);_0x2dbe11[_0x3c01('0x45')]=_[_0x3c01('0x47')](_0x2dbe11['model'],_0x2dbe11[_0x3c01('0x3e')]);_0x5ef6ad['attributes']=_[_0x3c01('0x47')](_0x2dbe11[_0x3c01('0x42')],qs[_0x3c01('0x48')](_0x41c44b[_0x3c01('0x3e')][_0x3c01('0x48')]));_0x5ef6ad[_0x3c01('0x46')]=_0x5ef6ad[_0x3c01('0x46')][_0x3c01('0x82')]?_0x5ef6ad['attributes']:_0x2dbe11[_0x3c01('0x42')];if(!_0x41c44b[_0x3c01('0x3e')]['hasOwnProperty']('nolimit')){_0x5ef6ad[_0x3c01('0x28')]=qs[_0x3c01('0x28')](_0x41c44b[_0x3c01('0x3e')]['limit']);_0x5ef6ad[_0x3c01('0x27')]=qs[_0x3c01('0x27')](_0x41c44b['query'][_0x3c01('0x27')]);}_0x5ef6ad['order']=qs[_0x3c01('0x9c')](_0x41c44b[_0x3c01('0x3e')][_0x3c01('0x9c')]);_0x5ef6ad[_0x3c01('0x9d')]=qs[_0x3c01('0x45')](_[_0x3c01('0x9e')](_0x41c44b['query'],_0x2dbe11['filters']));_0x5ef6ad['where'][_0x3c01('0x9f')]=_0x1f9a74['id'];if(_0x41c44b[_0x3c01('0x3e')][_0x3c01('0xa0')]){_0x5ef6ad[_0x3c01('0x9d')]=_[_0x3c01('0x4b')](_0x5ef6ad[_0x3c01('0x9d')],{'$or':_[_0x3c01('0x36')](_0x5ef6ad[_0x3c01('0x46')],function(_0x2c9a8d){var _0x11c427={};_0x11c427[_0x2c9a8d]={'$like':'%'+_0x41c44b[_0x3c01('0x3e')][_0x3c01('0xa0')]+'%'};return _0x11c427;})});}if(_0x41c44b[_0x3c01('0x3e')][_0x3c01('0xa1')]){var _0x520682=_0x41c44b[_0x3c01('0x3e')][_0x3c01('0xa1')][_0x3c01('0xa2')](',');var _0x1c4f95={};_0x1c4f95[_0x520682[0x0]]={'$gte':moment(_0x520682[0x1])[_0x3c01('0x86')](_0x3c01('0xa3'))};_0x5ef6ad[_0x3c01('0x9d')]=_['merge'](_0x5ef6ad[_0x3c01('0x9d')],_0x1c4f95);}_0x5ef6ad=_[_0x3c01('0x4b')]({},_0x5ef6ad,_0x41c44b[_0x3c01('0xa4')]);return db[_0x3c01('0x65')][_0x3c01('0x26')]({'where':_0x5ef6ad[_0x3c01('0x9d')]})[_0x3c01('0x2c')](function(_0x1ce110){_0x12bdb8['count']=_0x1ce110;if(_0x41c44b[_0x3c01('0x3e')]['includeAll']){_0x5ef6ad[_0x3c01('0x4a')]=[{'all':!![]}];}return db[_0x3c01('0x65')][_0x3c01('0x3c')](_0x5ef6ad);})[_0x3c01('0x2c')](function(_0x59bcad){_0x12bdb8[_0x3c01('0xa5')]=_0x59bcad;return _0x12bdb8;});}})[_0x3c01('0x2c')](respondWithFilteredResult(_0x4f8b05,_0x5ef6ad))[_0x3c01('0x20')](handleError(_0x4f8b05,null));};exports['getMyMessages']=function(_0x47efdf,_0x1e905e){var _0x2b4881={'where':{}},_0x26c4db={},_0x3b5f91={'count':0x0,'rows':[]};return db['ChatInteraction'][_0x3c01('0x50')]({'where':{'id':_0x47efdf['params']['id']}})[_0x3c01('0x2c')](handleEntityNotFound(_0x1e905e,null))[_0x3c01('0x2c')](function(_0x34fb1d){if(_0x34fb1d){_0x26c4db[_0x3c01('0x42')]=_['keys'](db[_0x3c01('0x65')][_0x3c01('0x44')]);_0x26c4db['query']=_[_0x3c01('0x43')](_0x47efdf[_0x3c01('0x3e')]);_0x26c4db[_0x3c01('0x45')]=_[_0x3c01('0x47')](_0x26c4db[_0x3c01('0x42')],_0x26c4db['query']);_0x2b4881[_0x3c01('0x46')]=_[_0x3c01('0x47')](_0x26c4db['model'],qs[_0x3c01('0x48')](_0x47efdf[_0x3c01('0x3e')][_0x3c01('0x48')]));_0x2b4881[_0x3c01('0x46')]=_0x2b4881[_0x3c01('0x46')][_0x3c01('0x82')]?_0x2b4881[_0x3c01('0x46')]:_0x26c4db[_0x3c01('0x42')];if(!_0x47efdf['query'][_0x3c01('0xa6')](_0x3c01('0xa7'))){_0x2b4881[_0x3c01('0x28')]=qs[_0x3c01('0x28')](_0x47efdf[_0x3c01('0x3e')][_0x3c01('0x28')]);_0x2b4881[_0x3c01('0x27')]=qs['offset'](_0x47efdf[_0x3c01('0x3e')]['offset']);}_0x2b4881[_0x3c01('0xa8')]=qs['sort'](_0x47efdf[_0x3c01('0x3e')][_0x3c01('0x9c')]);_0x2b4881[_0x3c01('0x9d')]=qs[_0x3c01('0x45')](_['pick'](_0x47efdf[_0x3c01('0x3e')],_0x26c4db[_0x3c01('0x45')]));_0x2b4881[_0x3c01('0x9d')][_0x3c01('0x9f')]=_0x34fb1d['id'];if(_0x47efdf['query'][_0x3c01('0xa0')]){_0x2b4881[_0x3c01('0x9d')]=_[_0x3c01('0x4b')](_0x2b4881[_0x3c01('0x9d')],{'$or':_['map'](_0x2b4881['attributes'],function(_0x37e448){var _0x15cdcb={};_0x15cdcb[_0x37e448]={'$like':'%'+_0x47efdf[_0x3c01('0x3e')][_0x3c01('0xa0')]+'%'};return _0x15cdcb;})});}_0x2b4881[_0x3c01('0x9d')][_0x3c01('0x8e')]=![];if(_0x47efdf['query']['id']){_0x2b4881['where']['id']={'$gt':_0x47efdf[_0x3c01('0x3e')]['id']};}_0x2b4881=_['merge']({},_0x2b4881,_0x47efdf[_0x3c01('0xa4')]);return db['ChatMessage'][_0x3c01('0x26')]({'where':_0x2b4881[_0x3c01('0x9d')]})['then'](function(_0x19fc25){_0x3b5f91[_0x3c01('0x26')]=_0x19fc25;_0x2b4881[_0x3c01('0x4a')]=[];if(_0x47efdf[_0x3c01('0x3e')]['includeAgent']){_0x2b4881[_0x3c01('0x4a')]['push']({'model':db['User'],'as':_0x3c01('0x81'),'attributes':['id',_0x3c01('0x58'),_0x3c01('0xa9')]});}if(_0x47efdf['query'][_0x3c01('0x49')]){_0x2b4881['include']=[{'all':!![]}];}return db[_0x3c01('0x65')]['findAll'](_0x2b4881);})[_0x3c01('0x2c')](function(_0x5c7a9d){_0x3b5f91[_0x3c01('0xa5')]=_0x5c7a9d;return _0x3b5f91;});}})[_0x3c01('0x2c')](respondWithFilteredResult(_0x1e905e,_0x2b4881))[_0x3c01('0x20')](handleError(_0x1e905e,null));};exports['addTags']=function(_0xac8a93,_0x100ae1){return db[_0x3c01('0x37')][_0x3c01('0x4d')]({'where':{'id':_0xac8a93[_0x3c01('0x41')]['id']}})[_0x3c01('0x2c')](handleEntityNotFound(_0x100ae1,null))[_0x3c01('0x2c')](function(_0x37524c){if(_0x37524c){return _0x37524c[_0x3c01('0xaa')](_0xac8a93[_0x3c01('0x32')]['ids'],_[_0x3c01('0xab')](_0xac8a93['body'],['ids','id'])||{})[_0x3c01('0xac')](function(){return db[_0x3c01('0xad')]['findAll']({'attributes':['id',_0x3c01('0x2f'),_0x3c01('0xae')],'where':{'id':_0xac8a93[_0x3c01('0x32')][_0x3c01('0x9a')]}});})[_0x3c01('0x2c')](function(_0x3ccbb5){socket[_0x3c01('0xaf')](_0x3c01('0xb0'),{'id':Number(_0xac8a93[_0x3c01('0x41')]['id']),'tags':_0x3ccbb5||[]});return{'id':Number(_0xac8a93[_0x3c01('0x41')]['id']),'tags':_0x3ccbb5||[]};});}})[_0x3c01('0x2c')](respondWithResult(_0x100ae1,null))[_0x3c01('0x20')](handleError(_0x100ae1,null));};exports[_0x3c01('0xb1')]=function(_0x54f7fa,_0x2dba4d){return db[_0x3c01('0x37')][_0x3c01('0x4d')]({'where':{'id':_0x54f7fa[_0x3c01('0x41')]['id']}})['then'](handleEntityNotFound(_0x2dba4d,null))[_0x3c01('0x2c')](function(_0x3240a7){if(_0x3240a7){return _0x3240a7['removeTags'](_0x54f7fa[_0x3c01('0x3e')]['ids']);}})[_0x3c01('0x2c')](respondWithStatusCode(_0x2dba4d,null))[_0x3c01('0x20')](handleError(_0x2dba4d,null));};exports[_0x3c01('0x7b')]=function(_0xa49e4e,_0x5b404b){var _0x429f7d=moment()[_0x3c01('0xb2')]()[_0x3c01('0xb3')]();var _0x4ebb68=path['join'](config[_0x3c01('0x79')],_0x3c01('0xb4'),'files',_0x3c01('0xb5'));var _0x464346=path['join'](config['root'],_0x3c01('0xb4'),_0x3c01('0xb6'),_0x3c01('0xb7'));var _0x50480e=path['join'](_0x4ebb68,_0x429f7d);var _0x32800f=util[_0x3c01('0x86')](_0x3c01('0xb8'),_0xa49e4e[_0x3c01('0x41')]['id'],_0x429f7d);var _0x592986=path['join'](_0x4ebb68,_0x32800f);var _0x5a063c=[];_0x5a063c[_0x3c01('0xb9')]({'model':db[_0x3c01('0x81')],'as':'User','attributes':['id','fullname'],'raw':!![]});_0x5a063c['push']({'model':db[_0x3c01('0x69')],'as':_0x3c01('0xba'),'attributes':['id',_0x3c01('0xbb'),'lastName'],'raw':!![]});if(_0xa49e4e[_0x3c01('0x3e')][_0x3c01('0xb7')]){_0x5a063c['push']({'model':db[_0x3c01('0x75')],'as':_0x3c01('0x75'),'raw':!![]});}var _0x2035e1=[{'model':db[_0x3c01('0x65')],'as':_0x3c01('0x80'),'attributes':['id','body','createdAt','direction',_0x3c01('0x8e'),_0x3c01('0xbc')],'include':_0x5a063c}];_0x2035e1[_0x3c01('0xb9')]({'model':db[_0x3c01('0x51')],'as':_0x3c01('0xbd'),'attributes':['id',_0x3c01('0x2f')]});_0x2035e1[_0x3c01('0xb9')]({'model':db[_0x3c01('0x81')],'as':_0x3c01('0xbe'),'attributes':['id','fullname']});return db[_0x3c01('0x37')]['find']({'where':{'id':_0xa49e4e[_0x3c01('0x41')]['id']},'include':_0x2035e1})[_0x3c01('0x2c')](handleEntityNotFound(_0x5b404b,null))[_0x3c01('0x2c')](function(_0x5e7db6){if(_0x5e7db6){var _0x4b3cdc=_0x5e7db6[_0x3c01('0xbf')]({'plain':!![]});fs[_0x3c01('0xc0')](_0x50480e);var _0xe8e2af={'channel':'Chat','account':_0x4b3cdc[_0x3c01('0xbd')]['name'],'agent':_0x4b3cdc[_0x3c01('0xbe')]?_0x4b3cdc['Owner'][_0x3c01('0x58')]:'N.A.','createdAt':moment(_0x4b3cdc[_0x3c01('0xc1')])[_0x3c01('0x86')]('YYYY-MM-DD\x20HH:mm:ss')[_0x3c01('0xb3')](),'closedAt':_0x4b3cdc[_0x3c01('0x6d')]?moment(_0x4b3cdc[_0x3c01('0xc2')])[_0x3c01('0x86')](_0x3c01('0xa3'))[_0x3c01('0xb3')]():'','disposition':_0x4b3cdc[_0x3c01('0x6e')],'chatInfo':{'browser':_0x4b3cdc[_0x3c01('0xc3')],'os':_0x4b3cdc['osName'],'referer':_0x4b3cdc[_0x3c01('0xc4')],'customerIp':_0x4b3cdc[_0x3c01('0xc5')],'customerPort':_0x4b3cdc[_0x3c01('0xc6')]?_0x4b3cdc[_0x3c01('0xc6')]:'N.A.'},'messages':_(_0x4b3cdc[_0x3c01('0x80')])['tail']()[_0x3c01('0xa0')]({'secret':![]})['map'](function(_0x54a50b){if(_0x54a50b['Attachment']){var _0x4a4c68=path[_0x3c01('0x78')](_0x464346,_0x54a50b[_0x3c01('0x75')][_0x3c01('0x71')]);if(fs[_0x3c01('0xc7')](_0x4a4c68)){fs['createReadStream'](_0x4a4c68)['pipe'](fs[_0x3c01('0xc8')](path['join'](_0x50480e,_0x54a50b[_0x3c01('0x75')]['basename'])));}}return{'date':moment(_0x54a50b[_0x3c01('0xc1')])['format']('YYYY-MM-DD\x20HH:mm:ss')[_0x3c01('0xb3')](),'sender':_0x54a50b[_0x3c01('0x8d')]===_0x3c01('0x64')?_0x54a50b[_0x3c01('0x81')]?_0x54a50b[_0x3c01('0x81')][_0x3c01('0x58')]:_0x3c01('0x84'):_0x54a50b[_0x3c01('0xba')][_0x3c01('0xbb')]+(_0x54a50b[_0x3c01('0xba')][_0x3c01('0xc9')]?'\x20'+_0x54a50b['Contact'][_0x3c01('0xc9')]:''),'body':_0x54a50b[_0x3c01('0x75')]?_0x54a50b['Attachment'][_0x3c01('0x71')]:_0x54a50b['body'],'direction':_0x54a50b['direction']===_0x3c01('0x64')?'A':'C','secret':_0x54a50b[_0x3c01('0x8e')],'read':_0x54a50b[_0x3c01('0xbc')],'attachment':_0x54a50b[_0x3c01('0x75')]};})[_0x3c01('0xca')]()};return ejs[_0x3c01('0xcb')](path[_0x3c01('0x78')](config['root'],_0x3c01('0xb4'),_0x3c01('0xcc'),_0x3c01('0xcd')),{'interaction':_0xe8e2af})[_0x3c01('0x2c')](function(_0x152bec){var _0x52a09b=path[_0x3c01('0x78')](_0x50480e,_0x3c01('0xce')+_0x4b3cdc['id']+'-'+_0x429f7d+_0x3c01('0xcf'));var _0x5bd457={'path':_0x52a09b,'channel':_0x3c01('0xd0'),'interactionId':_0x4b3cdc['id']};return pdf[_0x3c01('0xd1')](_0x152bec,_0x5bd457);})[_0x3c01('0x2c')](function(){return new Promise(function(_0x554836,_0x1685f1){zipdir(_0x50480e,{'saveTo':_0x592986},function(_0x215551,_0x491be5){if(_0x215551)return _0x1685f1(_0x215551);return _0x554836(_0x491be5);});})[_0x3c01('0x2c')](function(){return new BPromise(function(_0x56fad1,_0xa7371){rimraf(_0x50480e,function(_0x9ebc12){if(_0x9ebc12)_0xa7371(_0x9ebc12);return _0x56fad1();});});})[_0x3c01('0x2c')](function(){return _0x5b404b['download'](_0x592986,_0x32800f,function(_0x44f2e8){if(_0x44f2e8){logger['error'](_0x3c01('0xd2'),_0x44f2e8);}else{fs[_0x3c01('0xd3')](_0x592986);}});});});}else{return _0x5b404b[_0x3c01('0x21')](0xc8);}})[_0x3c01('0x20')](handleError(_0x5b404b,null));};
\ No newline at end of file
+var _0xe6b0=['contact','agent','interaction','account','index','map','ChatInteraction','rawAttributes','type','key','getOptions','findAll','chat','query','user','params','model','keys','filters','intersection','fields','includeAll','include','options','find','create','update','describe','createVidaooSession','findOne','vidaooEscalation','vidaooTopic','vidaooNote','vidaooApiKey','email','POST','https://api-vidaoo.xcally.com/api/v1/meetings','isNull','follow','Sequelize','ValidationError','Error\x20in\x20conversion\x20vidaooMetadata','Error\x20in\x20Vidaoo\x20configuration','join_url','out','Unable\x20to\x20create\x20Vidaoo\x20session','updateAttributes','customUpdate','Contact','abandonInteraction,\x20%s,\x20%s,\x20%s','UserId','disposition','AbandonInteraction','abandon','attachmentUpload','originalname','filename','file','mimetype','Attachment','attachmentDownload','closed','Unauthorized','attachId','ChatOfflineMessageId','join','root','offline-chat/','download','close','server/files/chat/upload/','format','transcript-%s.txt','now','ChatMessage','Messages','User','ChatWebsiteId','ContactId','length','%s%d','agentAlias','System','customer','Visitor','website_alias','agent_alias','alias','fullname','[%s]\x20%s:\x20%s\x0a','createdAt','MM/DD/YYYY\x20HH:mm:ss','direction','secret','appendFileSync','MailAccount','MailServerOut','Smtp','CloudProvider','getSmtpOptions','sendMail','\x22%s\x22\x20<%s>','mailTranscript','Mail\x20Transcript','Hi\x20%s,\x20attached\x20you\x20can\x20find\x20your\x20transcript\x20file.\x20\x0a\x0aRegards.\x20\x0a\x0a','addMessage','omit','ids','getMessages','attributes','hasOwnProperty','nolimit','order','sort','where','ChatInteractionId','filter','$gte','split','merge','count','rows','getMyMessages','includeAgent','push','addTags','spread','Tag','color','emit','chatInteractionTags:save','removeTags','server','files','attachments','CmContact','lastName','read','ChatWebsite','Owner','mkdirSync','Chat','Account','N.A.','YYYY-MM-DD\x20HH:mm:ss','toString','closedAt','browserName','osName','referer','customerIp','customerPort','tail','existsSync','pipe','createWriteStream','basename','firstName','renderFile','views','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','err','unlinkSync','rimraf','zip-dir','request-promise','moment','bluebird','path','ejs','lodash','ioredis','../../components/parsers/qs','../../components/export/pdf','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','jayson/promise','client','http','request','info','request\x20sent','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','error','ChatInteraction,\x20%s,\x20%s','message','result','catch','status','json','undefined','limit','offset','set','Content-Range','then','destroy','end','sendStatus','name','send','render','body'];(function(_0x3bb069,_0x19acfc){var _0x276596=function(_0x56dbb2){while(--_0x56dbb2){_0x3bb069['push'](_0x3bb069['shift']());}};_0x276596(++_0x19acfc);}(_0xe6b0,0xa6));var _0x0e6b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xe6b0[_0x3dd15e];return _0x231fd0;};'use strict';var rimraf=require(_0x0e6b('0x0'));var zipdir=require(_0x0e6b('0x1'));var rp=require(_0x0e6b('0x2'));var moment=require(_0x0e6b('0x3'));var BPromise=require(_0x0e6b('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x0e6b('0x5'));var ejs=require(_0x0e6b('0x6'));var fs=require('fs');var _=require(_0x0e6b('0x7'));var Redis=require(_0x0e6b('0x8'));var interaction=require('../../components/interaction/service');var qs=require(_0x0e6b('0x9'));var pdf=require(_0x0e6b('0xa'));var logger=require(_0x0e6b('0xb'))(_0x0e6b('0xc'));var config=require(_0x0e6b('0xd'));var db=require(_0x0e6b('0xe'))['db'];config[_0x0e6b('0xf')]=_[_0x0e6b('0x10')](config['redis'],{'host':_0x0e6b('0x11'),'port':0x18eb});var socket=require(_0x0e6b('0x12'))(new Redis(config[_0x0e6b('0xf')]));require('./chatInteraction.socket')['register'](socket);var jayson=require(_0x0e6b('0x13'));var client=jayson[_0x0e6b('0x14')][_0x0e6b('0x15')]({'port':0x232b});var client9004=jayson[_0x0e6b('0x14')][_0x0e6b('0x15')]({'port':0x232c});function respondWithRpcPromise(_0xb9f5a8,_0x4f6794,_0x59a42d,_0x5f41a8){return new BPromise(function(_0xa08547,_0x4fd5f6){var _0x4f6508=_0x5f41a8||client;return _0x4f6508[_0x0e6b('0x16')](_0xb9f5a8,_0x59a42d)['then'](function(_0x53209e){logger[_0x0e6b('0x17')]('ChatInteraction,\x20%s,\x20%s',_0x4f6794,_0x0e6b('0x18'));logger[_0x0e6b('0x19')](_0x0e6b('0x1a'),_0x4f6794,_0x0e6b('0x18'),JSON[_0x0e6b('0x1b')](_0x53209e));if(_0x53209e[_0x0e6b('0x1c')]){if(_0x53209e['error']['code']===0x1f4){logger['error'](_0x0e6b('0x1d'),_0x4f6794,_0x53209e[_0x0e6b('0x1c')][_0x0e6b('0x1e')]);return _0x4fd5f6(_0x53209e['error'][_0x0e6b('0x1e')]);}logger[_0x0e6b('0x1c')](_0x0e6b('0x1d'),_0x4f6794,_0x53209e[_0x0e6b('0x1c')][_0x0e6b('0x1e')]);return _0xa08547(_0x53209e[_0x0e6b('0x1c')][_0x0e6b('0x1e')]);}else{logger[_0x0e6b('0x17')](_0x0e6b('0x1d'),_0x4f6794,_0x0e6b('0x18'));_0xa08547(_0x53209e[_0x0e6b('0x1f')][_0x0e6b('0x1e')]);}})[_0x0e6b('0x20')](function(_0x214f6f){logger['error'](_0x0e6b('0x1d'),_0x4f6794,_0x214f6f);_0x4fd5f6(_0x214f6f);});});}function respondWithStatusCode(_0x1a3f04,_0x182cff){_0x182cff=_0x182cff||0xcc;return function(_0xbf0606){if(_0xbf0606){return _0x1a3f04['sendStatus'](_0x182cff);}return _0x1a3f04[_0x0e6b('0x21')](_0x182cff)['end']();};}function respondWithResult(_0x4d06e2,_0x2645fa){_0x2645fa=_0x2645fa||0xc8;return function(_0x140f2c){if(_0x140f2c){return _0x4d06e2['status'](_0x2645fa)[_0x0e6b('0x22')](_0x140f2c);}};}function respondWithFilteredResult(_0x11a99e,_0x28d173){return function(_0x48302a){if(_0x48302a){var _0x4bf6d2=typeof _0x28d173['offset']===_0x0e6b('0x23')&&typeof _0x28d173[_0x0e6b('0x24')]==='undefined';var _0x4f75c5=_0x48302a['count'];var _0x1700a7=_0x4bf6d2?0x0:_0x28d173[_0x0e6b('0x25')];var _0x2a3139=_0x4bf6d2?_0x48302a['count']:_0x28d173['offset']+_0x28d173[_0x0e6b('0x24')];var _0x1dc895;if(_0x2a3139>=_0x4f75c5){_0x2a3139=_0x4f75c5;_0x1dc895=0xc8;}else{_0x1dc895=0xce;}_0x11a99e[_0x0e6b('0x21')](_0x1dc895);return _0x11a99e[_0x0e6b('0x26')](_0x0e6b('0x27'),_0x1700a7+'-'+_0x2a3139+'/'+_0x4f75c5)[_0x0e6b('0x22')](_0x48302a);}return null;};}function saveUpdates(_0x62db5){return function(_0x38fd28){if(_0x38fd28){return _0x38fd28['update'](_0x62db5)[_0x0e6b('0x28')](function(_0x172bd3){return _0x172bd3;});}return null;};}function removeEntity(_0x5a8693){return function(_0x1d1416){if(_0x1d1416){return _0x1d1416[_0x0e6b('0x29')]()[_0x0e6b('0x28')](function(){_0x5a8693[_0x0e6b('0x21')](0xcc)[_0x0e6b('0x2a')]();});}};}function handleEntityNotFound(_0x88103e){return function(_0x4f2dd8){if(!_0x4f2dd8){_0x88103e[_0x0e6b('0x2b')](0x194);}return _0x4f2dd8;};}function handleError(_0xeafcc6,_0x715d4b){_0x715d4b=_0x715d4b||0x1f4;return function(_0x7360e0){logger[_0x0e6b('0x1c')](_0x7360e0['stack']);if(_0x7360e0['name']){delete _0x7360e0[_0x0e6b('0x2c')];}_0xeafcc6[_0x0e6b('0x21')](_0x715d4b)[_0x0e6b('0x2d')](_0x7360e0);};}function getMustacheRender(_0x1a5651,_0xb5a0fe){return Mustache[_0x0e6b('0x2e')](_0x1a5651,_['merge'](_0xb5a0fe[_0x0e6b('0x2f')],{'contact':_0xb5a0fe[_0x0e6b('0x30')],'message':_0xb5a0fe[_0x0e6b('0x1e')],'agent':_0xb5a0fe[_0x0e6b('0x31')],'interaction':_0xb5a0fe[_0x0e6b('0x32')],'account':_0xb5a0fe[_0x0e6b('0x33')]}))||'';}exports[_0x0e6b('0x34')]=function(_0x22a214,_0x302b96){var _0x2ba04c={};var _0x36b399=_[_0x0e6b('0x35')](db[_0x0e6b('0x36')][_0x0e6b('0x37')],function(_0x39f400){return{'name':_0x39f400['fieldName'],'type':_0x39f400[_0x0e6b('0x38')][_0x0e6b('0x39')]};});_0x2ba04c=qs[_0x0e6b('0x3a')](_0x36b399,_0x22a214);return interaction[_0x0e6b('0x3b')](_0x0e6b('0x3c'),_0x22a214[_0x0e6b('0x3d')],_0x22a214[_0x0e6b('0x3e')],_0x2ba04c,_0x36b399)[_0x0e6b('0x28')](respondWithFilteredResult(_0x302b96,_0x2ba04c))[_0x0e6b('0x20')](handleError(_0x302b96,null));};exports['show']=function(_0x2e3645,_0x2f37b0){var _0x38314b={'raw':![],'where':{'id':_0x2e3645[_0x0e6b('0x3f')]['id']}},_0x3c363c={};_0x3c363c[_0x0e6b('0x40')]=_[_0x0e6b('0x41')](db[_0x0e6b('0x36')]['rawAttributes']);_0x3c363c['query']=_[_0x0e6b('0x41')](_0x2e3645['query']);_0x3c363c[_0x0e6b('0x42')]=_[_0x0e6b('0x43')](_0x3c363c['model'],_0x3c363c[_0x0e6b('0x3d')]);_0x38314b['attributes']=_[_0x0e6b('0x43')](_0x3c363c['model'],qs[_0x0e6b('0x44')](_0x2e3645['query'][_0x0e6b('0x44')]));_0x38314b['attributes']=_0x38314b['attributes']['length']?_0x38314b['attributes']:_0x3c363c[_0x0e6b('0x40')];if(_0x2e3645[_0x0e6b('0x3d')][_0x0e6b('0x45')]){_0x38314b[_0x0e6b('0x46')]=[{'all':!![]}];}_0x38314b=_['merge']({},_0x38314b,_0x2e3645[_0x0e6b('0x47')]);return db[_0x0e6b('0x36')][_0x0e6b('0x48')](_0x38314b)[_0x0e6b('0x28')](handleEntityNotFound(_0x2f37b0,null))[_0x0e6b('0x28')](respondWithResult(_0x2f37b0,null))[_0x0e6b('0x20')](handleError(_0x2f37b0,null));};exports[_0x0e6b('0x49')]=function(_0x44f5bd,_0x2c79de){return db[_0x0e6b('0x36')]['create'](_0x44f5bd[_0x0e6b('0x2f')],{})['then'](respondWithResult(_0x2c79de,0xc9))['catch'](handleError(_0x2c79de,null));};exports[_0x0e6b('0x4a')]=function(_0x4f7059,_0x2e46e7){if(_0x4f7059[_0x0e6b('0x2f')]['id']){delete _0x4f7059[_0x0e6b('0x2f')]['id'];}return db[_0x0e6b('0x36')][_0x0e6b('0x48')]({'where':{'id':_0x4f7059[_0x0e6b('0x3f')]['id']}})[_0x0e6b('0x28')](handleEntityNotFound(_0x2e46e7,null))['then'](saveUpdates(_0x4f7059['body'],null))[_0x0e6b('0x28')](respondWithResult(_0x2e46e7,null))[_0x0e6b('0x20')](handleError(_0x2e46e7,null));};exports[_0x0e6b('0x29')]=function(_0x3df0c9,_0x426ac9){return db['ChatInteraction'][_0x0e6b('0x48')]({'where':{'id':_0x3df0c9[_0x0e6b('0x3f')]['id']}})['then'](handleEntityNotFound(_0x426ac9,null))['then'](removeEntity(_0x426ac9,null))[_0x0e6b('0x20')](handleError(_0x426ac9,null));};exports[_0x0e6b('0x4b')]=function(_0x4f8cc2,_0x174186){return db[_0x0e6b('0x36')][_0x0e6b('0x4b')]()['then'](respondWithResult(_0x174186,null))[_0x0e6b('0x20')](handleError(_0x174186,null));};exports[_0x0e6b('0x4c')]=function(_0x3a4aab,_0x380aa2){var _0x3be12c=_0x3a4aab[_0x0e6b('0x3f')]['id'];var _0x35c629;var _0x5249ed;var _0x3c8ed5;return db[_0x0e6b('0x36')][_0x0e6b('0x4d')]({'where':{'id':_0x3be12c}})[_0x0e6b('0x28')](function(_0x5cf9b8){_0x35c629=_0x5cf9b8;return db['ChatWebsite'][_0x0e6b('0x4d')]({'where':{'id':_0x5cf9b8['ChatWebsiteId']},'attributes':['id','vidaooApiKey',_0x0e6b('0x4e'),_0x0e6b('0x4f'),_0x0e6b('0x50'),'vidaooMetadata'],'raw':!![]});})[_0x0e6b('0x28')](function(_0x29725a){if(_0x29725a&&_0x29725a[_0x0e6b('0x51')]&&_0x29725a[_0x0e6b('0x4e')]){_0x5249ed=_0x29725a;var _0x42cf23={'interaction':{'id':_0x3be12c},'agent':{'id':_0x3a4aab[_0x0e6b('0x3e')]['id'],'name':_0x3a4aab[_0x0e6b('0x3e')][_0x0e6b('0x2c')],'fullname':_0x3a4aab['user']['fullname'],'email':_0x3a4aab['user'][_0x0e6b('0x52')]},'contact':_0x3a4aab['body']['contact'],'account':_0x3a4aab[_0x0e6b('0x2f')][_0x0e6b('0x33')]};var _0x12a54b={'rejectUnauthorized':![],'method':_0x0e6b('0x53'),'url':_0x0e6b('0x54'),'headers':{'X-APIKEY':_0x29725a[_0x0e6b('0x51')]},'body':{'duration':null,'scheduledAt':null,'participants':[_0x3a4aab[_0x0e6b('0x3e')][_0x0e6b('0x52')]],'buttons':null,'topic':_0x5249ed[_0x0e6b('0x4f')],'note':_[_0x0e6b('0x55')](_0x5249ed[_0x0e6b('0x50')])?null:getMustacheRender(_0x5249ed[_0x0e6b('0x50')],_0x42cf23),'metadata':null},'redirect':_0x0e6b('0x56'),'json':!![]};try{if(!_['isNull'](_0x5249ed['vidaooMetadata'])){var _0x1c2f68=getMustacheRender(_0x5249ed['vidaooMetadata'],_0x42cf23);var _0x16e9ba=JSON['parse'](_0x1c2f68);_0x12a54b['body']['metadata']=_0x16e9ba;}}catch(_0x70b3f7){throw new db[(_0x0e6b('0x57'))][(_0x0e6b('0x58'))](_0x0e6b('0x59'));}return rp(_0x12a54b);}else{throw new db[(_0x0e6b('0x57'))][(_0x0e6b('0x58'))](_0x0e6b('0x5a'));}})[_0x0e6b('0x28')](function(_0x1b8e53){_0x3c8ed5=_0x1b8e53;if(_0x3c8ed5['id']){var _0x1095f3={'body':_0x3c8ed5[_0x0e6b('0x5b')],'ChatWebsiteId':_0x5249ed['id'],'ChatInteractionId':_0x35c629['id'],'direction':_0x0e6b('0x5c'),'UserId':_0x3a4aab[_0x0e6b('0x3e')]['id']};return db['ChatMessage'][_0x0e6b('0x49')](_0x1095f3,{});}else{throw new db['Sequelize'][(_0x0e6b('0x58'))](_0x0e6b('0x5d'));}})[_0x0e6b('0x28')](function(){return _0x35c629[_0x0e6b('0x5e')]({'vidaooSessionId':_0x3c8ed5['id']});})[_0x0e6b('0x28')](respondWithResult(_0x380aa2,null))['catch'](handleError(_0x380aa2,null));};exports[_0x0e6b('0x5f')]=function(_0x3e1617,_0x58a758){if(_0x3e1617['body']['id']){delete _0x3e1617['body']['id'];}return db[_0x0e6b('0x36')][_0x0e6b('0x48')]({'where':{'id':_0x3e1617['params']['id']},'include':[{'model':db['CmContact'],'as':_0x0e6b('0x60')}]})[_0x0e6b('0x28')](handleEntityNotFound(_0x58a758,null))[_0x0e6b('0x28')](saveUpdates(_0x3e1617[_0x0e6b('0x2f')],null))[_0x0e6b('0x28')](respondWithResult(_0x58a758,null))[_0x0e6b('0x20')](handleError(_0x58a758,null));};exports['abandon']=function(_0x549c97,_0x659406){if(_0x549c97['body']['id']){delete _0x549c97[_0x0e6b('0x2f')]['id'];}return db[_0x0e6b('0x36')][_0x0e6b('0x48')]({'where':{'id':_0x549c97[_0x0e6b('0x3f')]['id']}})[_0x0e6b('0x28')](function(_0x111ac5){if(!_0x111ac5){logger[_0x0e6b('0x1c')](_0x0e6b('0x61'),'abandon',0x194,'entity\x20not\x20found');_0x659406[_0x0e6b('0x2b')](0x194);}else{if(_0x111ac5[_0x0e6b('0x62')]){throw new db['Sequelize'][(_0x0e6b('0x58'))]('Interaction\x20already\x20assigned');}}return _0x111ac5;})[_0x0e6b('0x28')](function(_0x23948f){if(_0x23948f){return _0x23948f[_0x0e6b('0x4a')]({'closed':_0x549c97[_0x0e6b('0x2f')]['closed'],'disposition':_0x549c97[_0x0e6b('0x2f')][_0x0e6b('0x63')]})[_0x0e6b('0x28')](function(_0x81174){return _0x81174;});}})[_0x0e6b('0x28')](function(){return respondWithRpcPromise(_0x0e6b('0x64'),_0x0e6b('0x65'),_0x549c97[_0x0e6b('0x2f')],client9004);})['then'](respondWithResult(_0x659406,null))['catch'](handleError(_0x659406,null));};exports[_0x0e6b('0x66')]=function(_0x16b0b0,_0x134b54){_0x16b0b0[_0x0e6b('0x2f')][_0x0e6b('0x2c')]=_0x16b0b0['file'][_0x0e6b('0x67')];_0x16b0b0[_0x0e6b('0x2f')]['basename']=_0x16b0b0['file'][_0x0e6b('0x68')];_0x16b0b0['body'][_0x0e6b('0x38')]=_0x16b0b0[_0x0e6b('0x69')][_0x0e6b('0x6a')];return db[_0x0e6b('0x6b')][_0x0e6b('0x49')](_0x16b0b0[_0x0e6b('0x2f')])[_0x0e6b('0x28')](respondWithResult(_0x134b54,0xc9))[_0x0e6b('0x20')](handleError(_0x134b54,null));};exports[_0x0e6b('0x6c')]=function(_0x9a6843,_0x5f2b69){return db['ChatInteraction'][_0x0e6b('0x4d')]({'where':{'id':_0x9a6843['params']['id']},'raw':!![]})[_0x0e6b('0x28')](handleEntityNotFound(_0x5f2b69,null))['then'](function(_0x349bdd){if(_0x349bdd){if(_0x349bdd[_0x0e6b('0x6d')]){return _0x5f2b69['status'](0x193)['json']({'status':0x193,'message':_0x0e6b('0x6e')});}return db[_0x0e6b('0x6b')][_0x0e6b('0x4d')]({'where':{'id':_0x9a6843['query'][_0x0e6b('0x6f')]},'raw':!![]})['then'](handleEntityNotFound(_0x5f2b69,null));}})['then'](function(_0x26848f){if(_0x26848f){var _0x41ec79=_0x26848f[_0x0e6b('0x70')]!==null;var _0x10dc1b=path[_0x0e6b('0x71')](config[_0x0e6b('0x72')],'server/files/attachments/');if(_0x41ec79){_0x10dc1b=path[_0x0e6b('0x71')](_0x10dc1b,_0x0e6b('0x73'));}var _0x51419b=path[_0x0e6b('0x71')](_0x10dc1b,_0x26848f['basename']);return _0x5f2b69[_0x0e6b('0x74')](_0x51419b);}})[_0x0e6b('0x20')](handleError(_0x5f2b69,null));};exports[_0x0e6b('0x75')]=function(_0x4d051f,_0x86a6cd){var _0x54d345=null;var _0x3ee442=null;var _0x56a6bf=null;if(_0x4d051f[_0x0e6b('0x2f')]['id']){delete _0x4d051f['body']['id'];}if(_0x4d051f[_0x0e6b('0x2f')]['mailTranscript']){_0x56a6bf=path['join'](config[_0x0e6b('0x72')],_0x0e6b('0x76'),util[_0x0e6b('0x77')](_0x0e6b('0x78'),Date[_0x0e6b('0x79')]()));_0x4d051f[_0x0e6b('0x2f')]['pathTranscript']=_0x56a6bf;}return db[_0x0e6b('0x36')]['find']({'where':{'id':_0x4d051f[_0x0e6b('0x3f')]['id']},'include':[{'model':db[_0x0e6b('0x7a')],'as':_0x0e6b('0x7b'),'include':[{'model':db[_0x0e6b('0x7c')],'as':'User'}]}]})[_0x0e6b('0x28')](handleEntityNotFound(_0x86a6cd,null))[_0x0e6b('0x28')](saveUpdates(_0x4d051f[_0x0e6b('0x2f')],null))[_0x0e6b('0x28')](function(_0x54b058){if(_0x54b058){_0x54d345=_0x54b058;return db['ChatWebsite'][_0x0e6b('0x48')]({'where':{'id':_0x54d345[_0x0e6b('0x7d')]}});}})[_0x0e6b('0x28')](function(_0x29d669){if(_0x29d669){_0x3ee442=_0x29d669;return db['CmContact'][_0x0e6b('0x48')]({'where':{'id':_0x54d345[_0x0e6b('0x7e')]}});}})[_0x0e6b('0x28')](function(_0x446690){if(_0x446690){if(_0x56a6bf){var _0x2b3b0e=null;for(var _0x3c1522=0x1;_0x3c1522<_0x54d345[_0x0e6b('0x7b')][_0x0e6b('0x7f')];++_0x3c1522){_0x2b3b0e=_0x54d345['Messages'][_0x3c1522];var _0x3d33dd=_0x2b3b0e[_0x0e6b('0x62')]?util['format'](_0x0e6b('0x80'),_0x3ee442[_0x0e6b('0x81')],_0x2b3b0e[_0x0e6b('0x62')]):_0x0e6b('0x82');var _0x52e22a=_0x4d051f[_0x0e6b('0x2f')][_0x0e6b('0x83')]||util[_0x0e6b('0x77')](_0x0e6b('0x80'),_0x0e6b('0x84'),_0x2b3b0e[_0x0e6b('0x7e')]);switch(_0x3ee442['agentIdentifier']){case _0x0e6b('0x85'):_0x3d33dd=_0x2b3b0e[_0x0e6b('0x62')]?util[_0x0e6b('0x77')](_0x0e6b('0x80'),_0x3ee442[_0x0e6b('0x81')],_0x2b3b0e['UserId']):_0x0e6b('0x82');break;case _0x0e6b('0x86'):_0x3d33dd=_0x2b3b0e[_0x0e6b('0x62')]?_0x2b3b0e[_0x0e6b('0x7c')][_0x0e6b('0x87')]||_0x2b3b0e[_0x0e6b('0x7c')][_0x0e6b('0x88')]:_0x0e6b('0x82');break;case'agent_fullname':_0x3d33dd=_0x2b3b0e[_0x0e6b('0x62')]?_0x2b3b0e[_0x0e6b('0x7c')][_0x0e6b('0x88')]:'System';break;default:_0x3d33dd=_0x2b3b0e[_0x0e6b('0x62')]?util['format']('%s%d',_0x3ee442[_0x0e6b('0x81')],_0x2b3b0e[_0x0e6b('0x62')]):_0x0e6b('0x82');}var _0x4e9a0d=util['format'](_0x0e6b('0x89'),moment(_0x2b3b0e[_0x0e6b('0x8a')])[_0x0e6b('0x77')](_0x0e6b('0x8b')),_0x2b3b0e[_0x0e6b('0x8c')]==='in'?_0x52e22a:_0x3d33dd,_0x2b3b0e[_0x0e6b('0x2f')]);if(!_0x2b3b0e[_0x0e6b('0x8d')]){fs[_0x0e6b('0x8e')](_0x56a6bf,_0x4e9a0d);}}return db[_0x0e6b('0x8f')][_0x0e6b('0x4d')]({'where':{'service':!![]},'include':[{'model':db[_0x0e6b('0x90')],'as':_0x0e6b('0x91'),'raw':!![],'include':[{'model':db[_0x0e6b('0x92')],'as':_0x0e6b('0x92'),'raw':!![]}]}]});}}})[_0x0e6b('0x28')](function(_0x426951){if(!_0x426951||!_0x426951['Smtp']||!_0x4d051f['body'])return _0x54d345;var _0x1fe61d=_0x426951[_0x0e6b('0x93')]();return respondWithRpcPromise('SendMail',_0x0e6b('0x94'),{'account':_0x1fe61d,'message':{'from':util[_0x0e6b('0x77')](_0x0e6b('0x95'),_0x426951[_0x0e6b('0x2c')],_0x426951['email']||_0x426951[_0x0e6b('0x91')][_0x0e6b('0x3e')]),'to':_0x4d051f['body'][_0x0e6b('0x96')],'subject':_0x0e6b('0x97'),'text':util[_0x0e6b('0x77')](_0x0e6b('0x98'),_0x4d051f[_0x0e6b('0x2f')][_0x0e6b('0x96')]),'attachments':[{'path':_0x56a6bf}]}})[_0x0e6b('0x28')](function(){return _0x54d345;})[_0x0e6b('0x20')](function(_0x2e4e6e){logger[_0x0e6b('0x1c')](_0x2e4e6e);});})[_0x0e6b('0x28')](respondWithStatusCode(_0x86a6cd,0xc8))[_0x0e6b('0x20')](handleError(_0x86a6cd,null));};exports[_0x0e6b('0x99')]=function(_0x2f4f06,_0x52a78c){return db[_0x0e6b('0x7a')][_0x0e6b('0x48')]({'where':{'id':_0x2f4f06[_0x0e6b('0x3f')]['id']}})[_0x0e6b('0x28')](handleEntityNotFound(_0x52a78c,null))[_0x0e6b('0x28')](function(_0x47334e){if(_0x47334e){return _0x47334e[_0x0e6b('0x99')](_0x2f4f06[_0x0e6b('0x2f')]['ids'],_[_0x0e6b('0x9a')](_0x2f4f06[_0x0e6b('0x2f')],[_0x0e6b('0x9b'),'id'])||{});}})[_0x0e6b('0x28')](respondWithResult(_0x52a78c,null))[_0x0e6b('0x20')](handleError(_0x52a78c,null));};exports[_0x0e6b('0x9c')]=function(_0x3010bb,_0x10f747){var _0x1e89d2={'raw':![],'where':{}};var _0x4cf64a={};var _0x140d5c={'count':0x0,'rows':[]};return db[_0x0e6b('0x36')][_0x0e6b('0x4d')]({'where':{'id':_0x3010bb[_0x0e6b('0x3f')]['id']}})[_0x0e6b('0x28')](handleEntityNotFound(_0x10f747,null))['then'](function(_0x1e99a4){if(_0x1e99a4){_0x4cf64a[_0x0e6b('0x40')]=_[_0x0e6b('0x41')](db[_0x0e6b('0x7a')]['rawAttributes']);_0x4cf64a[_0x0e6b('0x3d')]=_[_0x0e6b('0x41')](_0x3010bb[_0x0e6b('0x3d')]);_0x4cf64a[_0x0e6b('0x42')]=_[_0x0e6b('0x43')](_0x4cf64a[_0x0e6b('0x40')],_0x4cf64a[_0x0e6b('0x3d')]);_0x1e89d2['attributes']=_[_0x0e6b('0x43')](_0x4cf64a[_0x0e6b('0x40')],qs['fields'](_0x3010bb[_0x0e6b('0x3d')][_0x0e6b('0x44')]));_0x1e89d2[_0x0e6b('0x9d')]=_0x1e89d2[_0x0e6b('0x9d')][_0x0e6b('0x7f')]?_0x1e89d2['attributes']:_0x4cf64a[_0x0e6b('0x40')];if(!_0x3010bb[_0x0e6b('0x3d')][_0x0e6b('0x9e')](_0x0e6b('0x9f'))){_0x1e89d2[_0x0e6b('0x24')]=qs[_0x0e6b('0x24')](_0x3010bb[_0x0e6b('0x3d')][_0x0e6b('0x24')]);_0x1e89d2['offset']=qs['offset'](_0x3010bb[_0x0e6b('0x3d')][_0x0e6b('0x25')]);}_0x1e89d2[_0x0e6b('0xa0')]=qs[_0x0e6b('0xa1')](_0x3010bb[_0x0e6b('0x3d')][_0x0e6b('0xa1')]);_0x1e89d2[_0x0e6b('0xa2')]=qs[_0x0e6b('0x42')](_['pick'](_0x3010bb['query'],_0x4cf64a[_0x0e6b('0x42')]));_0x1e89d2['where'][_0x0e6b('0xa3')]=_0x1e99a4['id'];if(_0x3010bb[_0x0e6b('0x3d')][_0x0e6b('0xa4')]){_0x1e89d2[_0x0e6b('0xa2')]=_['merge'](_0x1e89d2[_0x0e6b('0xa2')],{'$or':_[_0x0e6b('0x35')](_0x1e89d2['attributes'],function(_0x104937){var _0x2cb4a8={};_0x2cb4a8[_0x104937]={'$like':'%'+_0x3010bb[_0x0e6b('0x3d')][_0x0e6b('0xa4')]+'%'};return _0x2cb4a8;})});}if(_0x3010bb[_0x0e6b('0x3d')]['$gte']){var _0x3db079=_0x3010bb[_0x0e6b('0x3d')][_0x0e6b('0xa5')][_0x0e6b('0xa6')](',');var _0x2fc275={};_0x2fc275[_0x3db079[0x0]]={'$gte':moment(_0x3db079[0x1])[_0x0e6b('0x77')]('YYYY-MM-DD\x20HH:mm:ss')};_0x1e89d2[_0x0e6b('0xa2')]=_[_0x0e6b('0xa7')](_0x1e89d2[_0x0e6b('0xa2')],_0x2fc275);}_0x1e89d2=_[_0x0e6b('0xa7')]({},_0x1e89d2,_0x3010bb[_0x0e6b('0x47')]);return db[_0x0e6b('0x7a')][_0x0e6b('0xa8')]({'where':_0x1e89d2[_0x0e6b('0xa2')]})[_0x0e6b('0x28')](function(_0x8cfc03){_0x140d5c[_0x0e6b('0xa8')]=_0x8cfc03;if(_0x3010bb[_0x0e6b('0x3d')][_0x0e6b('0x45')]){_0x1e89d2[_0x0e6b('0x46')]=[{'all':!![]}];}return db[_0x0e6b('0x7a')][_0x0e6b('0x3b')](_0x1e89d2);})['then'](function(_0x5dbae6){_0x140d5c[_0x0e6b('0xa9')]=_0x5dbae6;return _0x140d5c;});}})[_0x0e6b('0x28')](respondWithFilteredResult(_0x10f747,_0x1e89d2))[_0x0e6b('0x20')](handleError(_0x10f747,null));};exports[_0x0e6b('0xaa')]=function(_0x1fe705,_0x975797){var _0x32e089={'where':{}},_0x1c4a5d={},_0x57b07d={'count':0x0,'rows':[]};return db['ChatInteraction'][_0x0e6b('0x4d')]({'where':{'id':_0x1fe705[_0x0e6b('0x3f')]['id']}})[_0x0e6b('0x28')](handleEntityNotFound(_0x975797,null))[_0x0e6b('0x28')](function(_0x1f7320){if(_0x1f7320){_0x1c4a5d[_0x0e6b('0x40')]=_[_0x0e6b('0x41')](db[_0x0e6b('0x7a')]['rawAttributes']);_0x1c4a5d[_0x0e6b('0x3d')]=_[_0x0e6b('0x41')](_0x1fe705[_0x0e6b('0x3d')]);_0x1c4a5d[_0x0e6b('0x42')]=_[_0x0e6b('0x43')](_0x1c4a5d['model'],_0x1c4a5d[_0x0e6b('0x3d')]);_0x32e089[_0x0e6b('0x9d')]=_['intersection'](_0x1c4a5d[_0x0e6b('0x40')],qs[_0x0e6b('0x44')](_0x1fe705['query']['fields']));_0x32e089['attributes']=_0x32e089[_0x0e6b('0x9d')][_0x0e6b('0x7f')]?_0x32e089[_0x0e6b('0x9d')]:_0x1c4a5d[_0x0e6b('0x40')];if(!_0x1fe705['query'][_0x0e6b('0x9e')](_0x0e6b('0x9f'))){_0x32e089['limit']=qs[_0x0e6b('0x24')](_0x1fe705[_0x0e6b('0x3d')][_0x0e6b('0x24')]);_0x32e089[_0x0e6b('0x25')]=qs[_0x0e6b('0x25')](_0x1fe705[_0x0e6b('0x3d')]['offset']);}_0x32e089[_0x0e6b('0xa0')]=qs[_0x0e6b('0xa1')](_0x1fe705[_0x0e6b('0x3d')][_0x0e6b('0xa1')]);_0x32e089[_0x0e6b('0xa2')]=qs[_0x0e6b('0x42')](_['pick'](_0x1fe705[_0x0e6b('0x3d')],_0x1c4a5d['filters']));_0x32e089[_0x0e6b('0xa2')]['ChatInteractionId']=_0x1f7320['id'];if(_0x1fe705['query'][_0x0e6b('0xa4')]){_0x32e089['where']=_['merge'](_0x32e089[_0x0e6b('0xa2')],{'$or':_[_0x0e6b('0x35')](_0x32e089['attributes'],function(_0x201cc6){var _0x743cca={};_0x743cca[_0x201cc6]={'$like':'%'+_0x1fe705['query'][_0x0e6b('0xa4')]+'%'};return _0x743cca;})});}_0x32e089[_0x0e6b('0xa2')]['secret']=![];if(_0x1fe705[_0x0e6b('0x3d')]['id']){_0x32e089[_0x0e6b('0xa2')]['id']={'$gt':_0x1fe705[_0x0e6b('0x3d')]['id']};}_0x32e089=_[_0x0e6b('0xa7')]({},_0x32e089,_0x1fe705[_0x0e6b('0x47')]);return db['ChatMessage'][_0x0e6b('0xa8')]({'where':_0x32e089[_0x0e6b('0xa2')]})['then'](function(_0x5b79ca){_0x57b07d[_0x0e6b('0xa8')]=_0x5b79ca;_0x32e089['include']=[];if(_0x1fe705[_0x0e6b('0x3d')][_0x0e6b('0xab')]){_0x32e089[_0x0e6b('0x46')][_0x0e6b('0xac')]({'model':db['User'],'as':_0x0e6b('0x7c'),'attributes':['id',_0x0e6b('0x88'),_0x0e6b('0x87')]});}if(_0x1fe705[_0x0e6b('0x3d')]['includeAll']){_0x32e089[_0x0e6b('0x46')]=[{'all':!![]}];}return db[_0x0e6b('0x7a')][_0x0e6b('0x3b')](_0x32e089);})[_0x0e6b('0x28')](function(_0x5ce71b){_0x57b07d[_0x0e6b('0xa9')]=_0x5ce71b;return _0x57b07d;});}})[_0x0e6b('0x28')](respondWithFilteredResult(_0x975797,_0x32e089))[_0x0e6b('0x20')](handleError(_0x975797,null));};exports[_0x0e6b('0xad')]=function(_0x19097c,_0x1c7fe5){return db[_0x0e6b('0x36')][_0x0e6b('0x48')]({'where':{'id':_0x19097c['params']['id']}})[_0x0e6b('0x28')](handleEntityNotFound(_0x1c7fe5,null))[_0x0e6b('0x28')](function(_0x250e8a){if(_0x250e8a){return _0x250e8a['setTags'](_0x19097c[_0x0e6b('0x2f')][_0x0e6b('0x9b')],_['omit'](_0x19097c[_0x0e6b('0x2f')],[_0x0e6b('0x9b'),'id'])||{})[_0x0e6b('0xae')](function(){return db[_0x0e6b('0xaf')][_0x0e6b('0x3b')]({'attributes':['id','name',_0x0e6b('0xb0')],'where':{'id':_0x19097c[_0x0e6b('0x2f')][_0x0e6b('0x9b')]}});})['then'](function(_0xa6bb05){socket[_0x0e6b('0xb1')](_0x0e6b('0xb2'),{'id':Number(_0x19097c[_0x0e6b('0x3f')]['id']),'tags':_0xa6bb05||[]});return{'id':Number(_0x19097c['params']['id']),'tags':_0xa6bb05||[]};});}})[_0x0e6b('0x28')](respondWithResult(_0x1c7fe5,null))['catch'](handleError(_0x1c7fe5,null));};exports[_0x0e6b('0xb3')]=function(_0x4ffd70,_0x2a01ee){return db['ChatInteraction'][_0x0e6b('0x48')]({'where':{'id':_0x4ffd70[_0x0e6b('0x3f')]['id']}})[_0x0e6b('0x28')](handleEntityNotFound(_0x2a01ee,null))[_0x0e6b('0x28')](function(_0x2787c2){if(_0x2787c2){return _0x2787c2[_0x0e6b('0xb3')](_0x4ffd70[_0x0e6b('0x3d')][_0x0e6b('0x9b')]);}})[_0x0e6b('0x28')](respondWithStatusCode(_0x2a01ee,null))[_0x0e6b('0x20')](handleError(_0x2a01ee,null));};exports['download']=function(_0x42c15e,_0x4ae2fc){var _0xf29a32=moment()['unix']()['toString']();var _0x3505c3=path[_0x0e6b('0x71')](config[_0x0e6b('0x72')],_0x0e6b('0xb4'),_0x0e6b('0xb5'),'tmp');var _0x452d4e=path[_0x0e6b('0x71')](config[_0x0e6b('0x72')],_0x0e6b('0xb4'),_0x0e6b('0xb5'),_0x0e6b('0xb6'));var _0x373d57=path['join'](_0x3505c3,_0xf29a32);var _0x399f9d=util[_0x0e6b('0x77')]('transcript-%d-%s.zip',_0x42c15e[_0x0e6b('0x3f')]['id'],_0xf29a32);var _0x302c0f=path[_0x0e6b('0x71')](_0x3505c3,_0x399f9d);var _0x35dba6=[];_0x35dba6[_0x0e6b('0xac')]({'model':db[_0x0e6b('0x7c')],'as':_0x0e6b('0x7c'),'attributes':['id',_0x0e6b('0x88')],'raw':!![]});_0x35dba6[_0x0e6b('0xac')]({'model':db[_0x0e6b('0xb7')],'as':'Contact','attributes':['id','firstName',_0x0e6b('0xb8')],'raw':!![]});if(_0x42c15e[_0x0e6b('0x3d')][_0x0e6b('0xb6')]){_0x35dba6[_0x0e6b('0xac')]({'model':db[_0x0e6b('0x6b')],'as':_0x0e6b('0x6b'),'raw':!![]});}var _0x54719b=[{'model':db['ChatMessage'],'as':_0x0e6b('0x7b'),'attributes':['id','body',_0x0e6b('0x8a'),_0x0e6b('0x8c'),'secret',_0x0e6b('0xb9')],'include':_0x35dba6}];_0x54719b[_0x0e6b('0xac')]({'model':db[_0x0e6b('0xba')],'as':'Account','attributes':['id',_0x0e6b('0x2c')]});_0x54719b['push']({'model':db[_0x0e6b('0x7c')],'as':_0x0e6b('0xbb'),'attributes':['id','fullname']});return db[_0x0e6b('0x36')][_0x0e6b('0x48')]({'where':{'id':_0x42c15e[_0x0e6b('0x3f')]['id']},'include':_0x54719b})[_0x0e6b('0x28')](handleEntityNotFound(_0x4ae2fc,null))[_0x0e6b('0x28')](function(_0x3bc6f0){if(_0x3bc6f0){var _0x29b23d=_0x3bc6f0['get']({'plain':!![]});fs[_0x0e6b('0xbc')](_0x373d57);var _0x2a9eab={'channel':_0x0e6b('0xbd'),'account':_0x29b23d[_0x0e6b('0xbe')][_0x0e6b('0x2c')],'agent':_0x29b23d['Owner']?_0x29b23d[_0x0e6b('0xbb')][_0x0e6b('0x88')]:_0x0e6b('0xbf'),'createdAt':moment(_0x29b23d[_0x0e6b('0x8a')])[_0x0e6b('0x77')](_0x0e6b('0xc0'))[_0x0e6b('0xc1')](),'closedAt':_0x29b23d['closed']?moment(_0x29b23d[_0x0e6b('0xc2')])[_0x0e6b('0x77')](_0x0e6b('0xc0'))['toString']():'','disposition':_0x29b23d[_0x0e6b('0x63')],'chatInfo':{'browser':_0x29b23d[_0x0e6b('0xc3')],'os':_0x29b23d[_0x0e6b('0xc4')],'referer':_0x29b23d[_0x0e6b('0xc5')],'customerIp':_0x29b23d[_0x0e6b('0xc6')],'customerPort':_0x29b23d[_0x0e6b('0xc7')]?_0x29b23d[_0x0e6b('0xc7')]:_0x0e6b('0xbf')},'messages':_(_0x29b23d['Messages'])[_0x0e6b('0xc8')]()['filter']({'secret':![]})[_0x0e6b('0x35')](function(_0x38d5d6){if(_0x38d5d6['Attachment']){var _0x122cc6=path[_0x0e6b('0x71')](_0x452d4e,_0x38d5d6[_0x0e6b('0x6b')]['basename']);if(fs[_0x0e6b('0xc9')](_0x122cc6)){fs['createReadStream'](_0x122cc6)[_0x0e6b('0xca')](fs[_0x0e6b('0xcb')](path['join'](_0x373d57,_0x38d5d6['Attachment'][_0x0e6b('0xcc')])));}}return{'date':moment(_0x38d5d6[_0x0e6b('0x8a')])[_0x0e6b('0x77')]('YYYY-MM-DD\x20HH:mm:ss')[_0x0e6b('0xc1')](),'sender':_0x38d5d6['direction']==='out'?_0x38d5d6[_0x0e6b('0x7c')]?_0x38d5d6['User'][_0x0e6b('0x88')]:_0x0e6b('0x82'):_0x38d5d6[_0x0e6b('0x60')][_0x0e6b('0xcd')]+(_0x38d5d6[_0x0e6b('0x60')][_0x0e6b('0xb8')]?'\x20'+_0x38d5d6[_0x0e6b('0x60')][_0x0e6b('0xb8')]:''),'body':_0x38d5d6['Attachment']?_0x38d5d6[_0x0e6b('0x6b')][_0x0e6b('0xcc')]:_0x38d5d6[_0x0e6b('0x2f')],'direction':_0x38d5d6['direction']===_0x0e6b('0x5c')?'A':'C','secret':_0x38d5d6[_0x0e6b('0x8d')],'read':_0x38d5d6['read'],'attachment':_0x38d5d6[_0x0e6b('0x6b')]};})['value']()};return ejs[_0x0e6b('0xce')](path[_0x0e6b('0x71')](config[_0x0e6b('0x72')],_0x0e6b('0xb4'),_0x0e6b('0xcf'),_0x0e6b('0xd0')),{'interaction':_0x2a9eab})['then'](function(_0x16a991){var _0x4b13d2=path[_0x0e6b('0x71')](_0x373d57,_0x0e6b('0xd1')+_0x29b23d['id']+'-'+_0xf29a32+_0x0e6b('0xd2'));var _0x1a3646={'path':_0x4b13d2,'channel':_0x0e6b('0xbd'),'interactionId':_0x29b23d['id']};return pdf[_0x0e6b('0xd3')](_0x16a991,_0x1a3646);})[_0x0e6b('0x28')](function(){return new Promise(function(_0x4e6ec0,_0x321adf){zipdir(_0x373d57,{'saveTo':_0x302c0f},function(_0x4745b4,_0xdb776c){if(_0x4745b4)return _0x321adf(_0x4745b4);return _0x4e6ec0(_0xdb776c);});})['then'](function(){return new BPromise(function(_0x18e261,_0x335268){rimraf(_0x373d57,function(_0x36c328){if(_0x36c328)_0x335268(_0x36c328);return _0x18e261();});});})[_0x0e6b('0x28')](function(){return _0x4ae2fc[_0x0e6b('0x74')](_0x302c0f,_0x399f9d,function(_0x3aea49){if(_0x3aea49){logger['error'](_0x0e6b('0xd4'),_0x3aea49);}else{fs[_0x0e6b('0xd5')](_0x302c0f);}});});});}else{return _0x4ae2fc[_0x0e6b('0x2b')](0xc8);}})[_0x0e6b('0x20')](handleError(_0x4ae2fc,null));};
\ No newline at end of file
index 6a6a700..d400b9c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x804e=['update','remove','getUsers','then','setDataValue','Users','map','findAll','length','emit','catch','hasOwnProperty','exports','events','../../mysqldb','ChatInteraction','ChatMessage','save'];(function(_0x242ecf,_0xcbeb0){var _0x5c8971=function(_0x234cfd){while(--_0x234cfd){_0x242ecf['push'](_0x242ecf['shift']());}};_0x5c8971(++_0xcbeb0);}(_0x804e,0x79));var _0xe804=function(_0x535bf6,_0x43a5ae){_0x535bf6=_0x535bf6-0x0;var _0x5d764c=_0x804e[_0x535bf6];return _0x5d764c;};'use strict';var EventEmitter=require(_0xe804('0x0'));var ChatInteraction=require(_0xe804('0x1'))['db'][_0xe804('0x2')];var ChatMessage=require('../../mysqldb')['db'][_0xe804('0x3')];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xe804('0x4'),'afterUpdate':_0xe804('0x5'),'afterDestroy':_0xe804('0x6')};function emitEvent(_0x19e812){return function(_0x5e52ab,_0x15cbaf,_0xe4d772){_0x5e52ab[_0xe804('0x7')]({'attributes':['id'],'raw':!![]})[_0xe804('0x8')](function(_0x274ce){_0x5e52ab[_0xe804('0x9')](_0xe804('0xa'),_0x274ce[_0xe804('0xb')](function(_0x813e3f){return{'id':_0x813e3f['id']};}));return ChatMessage[_0xe804('0xc')]({'where':{'ChatInteractionId':_0x5e52ab['id'],'direction':'in','read':![]},'raw':!![]});})[_0xe804('0x8')](function(_0x311139){_0x5e52ab[_0xe804('0x9')]('unreadMessages',_0x311139[_0xe804('0xd')]);ChatInteractionEvents[_0xe804('0xe')](_0x19e812+':'+_0x5e52ab['id'],_0x5e52ab);ChatInteractionEvents[_0xe804('0xe')](_0x19e812,_0x5e52ab);_0xe4d772(null);})[_0xe804('0xf')](_0xe4d772(null));};}for(var e in events){if(events[_0xe804('0x10')](e)){var event=events[e];ChatInteraction['hook'](e,emitEvent(event));}}module[_0xe804('0x11')]=ChatInteractionEvents;
\ No newline at end of file
+var _0x76d2=['../../mysqldb','ChatInteraction','ChatMessage','setMaxListeners','save','update','remove','getUsers','then','Users','findAll','unreadMessages','length','emit','catch','exports','events'];(function(_0x58e069,_0x1a4544){var _0x3fed36=function(_0x244e59){while(--_0x244e59){_0x58e069['push'](_0x58e069['shift']());}};_0x3fed36(++_0x1a4544);}(_0x76d2,0x87));var _0x276d=function(_0x5d6afe,_0x3176fb){_0x5d6afe=_0x5d6afe-0x0;var _0x4166f7=_0x76d2[_0x5d6afe];return _0x4166f7;};'use strict';var EventEmitter=require(_0x276d('0x0'));var ChatInteraction=require(_0x276d('0x1'))['db'][_0x276d('0x2')];var ChatMessage=require(_0x276d('0x1'))['db'][_0x276d('0x3')];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents[_0x276d('0x4')](0x0);var events={'afterCreate':_0x276d('0x5'),'afterUpdate':_0x276d('0x6'),'afterDestroy':_0x276d('0x7')};function emitEvent(_0xbf1651){return function(_0x5589a2,_0x5d3fdc,_0x1a1975){_0x5589a2[_0x276d('0x8')]({'attributes':['id'],'raw':!![]})[_0x276d('0x9')](function(_0x36ec53){_0x5589a2['setDataValue'](_0x276d('0xa'),_0x36ec53['map'](function(_0x3f5b29){return{'id':_0x3f5b29['id']};}));return ChatMessage[_0x276d('0xb')]({'where':{'ChatInteractionId':_0x5589a2['id'],'direction':'in','read':![]},'raw':!![]});})[_0x276d('0x9')](function(_0x458e2c){_0x5589a2['setDataValue'](_0x276d('0xc'),_0x458e2c[_0x276d('0xd')]);ChatInteractionEvents['emit'](_0xbf1651+':'+_0x5589a2['id'],_0x5589a2);ChatInteractionEvents[_0x276d('0xe')](_0xbf1651,_0x5589a2);_0x1a1975(null);})[_0x276d('0xf')](_0x1a1975(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatInteraction['hook'](e,emitEvent(event));}}module[_0x276d('0x10')]=ChatInteractionEvents;
\ No newline at end of file
index 0c36e3f..fde123b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd7af=['moment','bluebird','request-promise','path','rimraf','define','chat_interactions','changed','closed','closedAt','YYYY-MM-DD\x20HH:mm:ss','utf8mb4_unicode_ci','lodash','util'];(function(_0xaca408,_0x5663b4){var _0x23f079=function(_0x230c77){while(--_0x230c77){_0xaca408['push'](_0xaca408['shift']());}};_0x23f079(++_0x5663b4);}(_0xd7af,0x8a));var _0xfd7a=function(_0x27ddfb,_0x2ae31f){_0x27ddfb=_0x27ddfb-0x0;var _0x3a3efd=_0xd7af[_0x27ddfb];return _0x3a3efd;};'use strict';var _=require(_0xfd7a('0x0'));var util=require(_0xfd7a('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xfd7a('0x2'));var BPromise=require(_0xfd7a('0x3'));var rp=require(_0xfd7a('0x4'));var fs=require('fs');var path=require(_0xfd7a('0x5'));var rimraf=require(_0xfd7a('0x6'));var config=require('../../config/environment');var attributes=require('./chatInteraction.attributes');module['exports']=function(_0x3bd028,_0x202f29){return _0x3bd028[_0xfd7a('0x7')]('ChatInteraction',attributes,{'tableName':_0xfd7a('0x8'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x262deb,_0x3ccb31,_0x38e44b){if(_0x262deb[_0xfd7a('0x9')](_0xfd7a('0xa'))){_0x262deb[_0xfd7a('0xb')]=moment()['format'](_0xfd7a('0xc'));}_0x38e44b(null,_0x262deb);}},'charset':'utf8mb4','collate':_0xfd7a('0xd')});};
\ No newline at end of file
+var _0x75f2=['utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./chatInteraction.attributes','exports','define','ChatInteraction','changed','format','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x30c135,_0x880379){var _0x35c539=function(_0x498f15){while(--_0x498f15){_0x30c135['push'](_0x30c135['shift']());}};_0x35c539(++_0x880379);}(_0x75f2,0x1aa));var _0x275f=function(_0x5f5344,_0x3959a3){_0x5f5344=_0x5f5344-0x0;var _0x50a88d=_0x75f2[_0x5f5344];return _0x50a88d;};'use strict';var _=require(_0x275f('0x0'));var util=require(_0x275f('0x1'));var logger=require(_0x275f('0x2'))(_0x275f('0x3'));var moment=require(_0x275f('0x4'));var BPromise=require(_0x275f('0x5'));var rp=require(_0x275f('0x6'));var fs=require('fs');var path=require(_0x275f('0x7'));var rimraf=require('rimraf');var config=require(_0x275f('0x8'));var attributes=require(_0x275f('0x9'));module[_0x275f('0xa')]=function(_0x48bb07,_0xc4d977){return _0x48bb07[_0x275f('0xb')](_0x275f('0xc'),attributes,{'tableName':'chat_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x24ac51,_0x39f63f,_0x5f4158){if(_0x24ac51[_0x275f('0xd')]('closed')){_0x24ac51['closedAt']=moment()[_0x275f('0xe')](_0x275f('0xf'));}_0x5f4158(null,_0x24ac51);}},'charset':'utf8mb4','collate':_0x275f('0x10')});};
\ No newline at end of file
index 01002c8..52631bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7060=['request','then','info','request\x20sent','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','error','code','ChatInteraction,\x20%s,\x20%s','message','result','catch','ChatInteraction','update','options','raw','where','attributes','UpdateChatInteraction','AddTagsToChatInteraction','find','addTags','ids','omit','body','spread','AddTags','stringify','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','redis','defaults','localhost','socket.io-emitter','./chatInteraction.socket'];(function(_0x5b366f,_0x46ba68){var _0x536f9b=function(_0x3214c7){while(--_0x3214c7){_0x5b366f['push'](_0x5b366f['shift']());}};_0x536f9b(++_0x46ba68);}(_0x7060,0x1d4));var _0x0706=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7060[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x0706('0x0'));var util=require(_0x0706('0x1'));var moment=require('moment');var BPromise=require(_0x0706('0x2'));var rs=require(_0x0706('0x3'));var fs=require('fs');var Redis=require(_0x0706('0x4'));var db=require(_0x0706('0x5'))['db'];var utils=require(_0x0706('0x6'));var logger=require(_0x0706('0x7'))(_0x0706('0x8'));var config=require(_0x0706('0x9'));var jayson=require(_0x0706('0xa'));var client=jayson['client']['http']({'port':0x232a});config[_0x0706('0xb')]=_[_0x0706('0xc')](config['redis'],{'host':_0x0706('0xd'),'port':0x18eb});var socket=require(_0x0706('0xe'))(new Redis(config[_0x0706('0xb')]));require(_0x0706('0xf'))['register'](socket);function respondWithRpcPromise(_0x1373a4,_0x3031ea,_0x165522){return new BPromise(function(_0x547693,_0x9dde63){return client[_0x0706('0x10')](_0x1373a4,_0x165522)[_0x0706('0x11')](function(_0xdcf7f2){logger[_0x0706('0x12')]('ChatInteraction,\x20%s,\x20%s',_0x3031ea,_0x0706('0x13'));logger[_0x0706('0x14')](_0x0706('0x15'),_0x3031ea,'request\x20sent',JSON['stringify'](_0xdcf7f2));if(_0xdcf7f2[_0x0706('0x16')]){if(_0xdcf7f2['error'][_0x0706('0x17')]===0x1f4){logger['error'](_0x0706('0x18'),_0x3031ea,_0xdcf7f2[_0x0706('0x16')][_0x0706('0x19')]);return _0x9dde63(_0xdcf7f2[_0x0706('0x16')]['message']);}logger[_0x0706('0x16')]('ChatInteraction,\x20%s,\x20%s',_0x3031ea,_0xdcf7f2[_0x0706('0x16')]['message']);return _0x547693(_0xdcf7f2['error'][_0x0706('0x19')]);}else{logger[_0x0706('0x12')]('ChatInteraction,\x20%s,\x20%s',_0x3031ea,_0x0706('0x13'));_0x547693(_0xdcf7f2[_0x0706('0x1a')][_0x0706('0x19')]);}})[_0x0706('0x1b')](function(_0x4b81ec){logger[_0x0706('0x16')]('ChatInteraction,\x20%s,\x20%s',_0x3031ea,_0x4b81ec);_0x9dde63(_0x4b81ec);});});}exports['UpdateChatInteraction']=function(_0xe69205){var _0x507676=this;return new Promise(function(_0x182bec,_0x44eb67){return db[_0x0706('0x1c')][_0x0706('0x1d')](_0xe69205['body'],{'raw':_0xe69205['options']?_0xe69205[_0x0706('0x1e')][_0x0706('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xe69205[_0x0706('0x1e')]?_0xe69205[_0x0706('0x1e')][_0x0706('0x20')]||null:null,'attributes':_0xe69205[_0x0706('0x1e')]?_0xe69205[_0x0706('0x1e')][_0x0706('0x21')]||null:null,'limit':_0xe69205[_0x0706('0x1e')]?_0xe69205['options']['limit']||null:null})[_0x0706('0x11')](function(_0x1b2856){logger['info'](_0x0706('0x22'),_0xe69205);logger[_0x0706('0x14')](_0x0706('0x22'),_0xe69205,JSON['stringify'](_0x1b2856));_0x182bec(_0x1b2856);})[_0x0706('0x1b')](function(_0x3cf10b){logger[_0x0706('0x16')](_0x0706('0x22'),_0x3cf10b[_0x0706('0x19')],_0xe69205);_0x44eb67(_0x507676['error'](0x1f4,_0x3cf10b[_0x0706('0x19')]));});});};exports[_0x0706('0x23')]=function(_0x4e0bdf){return new Promise(function(_0x56ab89,_0x48f008){return db['ChatInteraction'][_0x0706('0x24')]({'where':_0x4e0bdf[_0x0706('0x1e')]?_0x4e0bdf[_0x0706('0x1e')]['where']||null:null})[_0x0706('0x11')](function(_0x244deb){if(_0x244deb){return _0x244deb[_0x0706('0x25')](_0x4e0bdf['body'][_0x0706('0x26')],_[_0x0706('0x27')](_0x4e0bdf[_0x0706('0x28')],[_0x0706('0x26'),'id'])||{});}})[_0x0706('0x29')](function(_0x572208){logger[_0x0706('0x12')](_0x0706('0x2a'),_0x4e0bdf);logger['debug'](_0x0706('0x2a'),_0x4e0bdf,JSON[_0x0706('0x2b')](_0x572208));_0x56ab89(_0x572208);})[_0x0706('0x1b')](function(_0x5ac10f){logger[_0x0706('0x16')](_0x0706('0x2a'),_0x5ac10f[_0x0706('0x19')],_0x4e0bdf);_0x48f008(_this[_0x0706('0x16')](0x1f4,_0x5ac10f[_0x0706('0x19')]));});});};
\ No newline at end of file
+var _0xe527=['where','attributes','limit','debug','AddTagsToChatInteraction','addTags','ids','spread','AddTags','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','redis','defaults','localhost','socket.io-emitter','./chatInteraction.socket','register','request','then','info','ChatInteraction,\x20%s,\x20%s','request\x20sent','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','UpdateChatInteraction','ChatInteraction','update','body','options','raw'];(function(_0x4709c0,_0x3396c7){var _0x13348b=function(_0x426235){while(--_0x426235){_0x4709c0['push'](_0x4709c0['shift']());}};_0x13348b(++_0x3396c7);}(_0xe527,0x199));var _0x7e52=function(_0x2687a2,_0x4f6984){_0x2687a2=_0x2687a2-0x0;var _0x24fa8d=_0xe527[_0x2687a2];return _0x24fa8d;};'use strict';var _=require(_0x7e52('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x7e52('0x1'));var rs=require(_0x7e52('0x2'));var fs=require('fs');var Redis=require(_0x7e52('0x3'));var db=require(_0x7e52('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x7e52('0x5'))(_0x7e52('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});config[_0x7e52('0x7')]=_[_0x7e52('0x8')](config[_0x7e52('0x7')],{'host':_0x7e52('0x9'),'port':0x18eb});var socket=require(_0x7e52('0xa'))(new Redis(config['redis']));require(_0x7e52('0xb'))[_0x7e52('0xc')](socket);function respondWithRpcPromise(_0xf00999,_0x3c5c28,_0x1f1290){return new BPromise(function(_0x37c5fa,_0x1feb3a){return client[_0x7e52('0xd')](_0xf00999,_0x1f1290)[_0x7e52('0xe')](function(_0x5aa3df){logger[_0x7e52('0xf')](_0x7e52('0x10'),_0x3c5c28,_0x7e52('0x11'));logger['debug'](_0x7e52('0x12'),_0x3c5c28,_0x7e52('0x11'),JSON[_0x7e52('0x13')](_0x5aa3df));if(_0x5aa3df[_0x7e52('0x14')]){if(_0x5aa3df[_0x7e52('0x14')][_0x7e52('0x15')]===0x1f4){logger[_0x7e52('0x14')](_0x7e52('0x10'),_0x3c5c28,_0x5aa3df[_0x7e52('0x14')][_0x7e52('0x16')]);return _0x1feb3a(_0x5aa3df[_0x7e52('0x14')][_0x7e52('0x16')]);}logger[_0x7e52('0x14')]('ChatInteraction,\x20%s,\x20%s',_0x3c5c28,_0x5aa3df[_0x7e52('0x14')][_0x7e52('0x16')]);return _0x37c5fa(_0x5aa3df[_0x7e52('0x14')]['message']);}else{logger[_0x7e52('0xf')](_0x7e52('0x10'),_0x3c5c28,'request\x20sent');_0x37c5fa(_0x5aa3df[_0x7e52('0x17')][_0x7e52('0x16')]);}})[_0x7e52('0x18')](function(_0x373b4e){logger[_0x7e52('0x14')](_0x7e52('0x10'),_0x3c5c28,_0x373b4e);_0x1feb3a(_0x373b4e);});});}exports[_0x7e52('0x19')]=function(_0x30ba62){var _0x2512a8=this;return new Promise(function(_0x33ff7d,_0x1cf04a){return db[_0x7e52('0x1a')][_0x7e52('0x1b')](_0x30ba62[_0x7e52('0x1c')],{'raw':_0x30ba62[_0x7e52('0x1d')]?_0x30ba62['options'][_0x7e52('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x30ba62[_0x7e52('0x1d')]?_0x30ba62[_0x7e52('0x1d')][_0x7e52('0x1f')]||null:null,'attributes':_0x30ba62[_0x7e52('0x1d')]?_0x30ba62[_0x7e52('0x1d')][_0x7e52('0x20')]||null:null,'limit':_0x30ba62[_0x7e52('0x1d')]?_0x30ba62[_0x7e52('0x1d')][_0x7e52('0x21')]||null:null})[_0x7e52('0xe')](function(_0x3b1a35){logger[_0x7e52('0xf')](_0x7e52('0x19'),_0x30ba62);logger[_0x7e52('0x22')](_0x7e52('0x19'),_0x30ba62,JSON[_0x7e52('0x13')](_0x3b1a35));_0x33ff7d(_0x3b1a35);})[_0x7e52('0x18')](function(_0x55705d){logger[_0x7e52('0x14')](_0x7e52('0x19'),_0x55705d['message'],_0x30ba62);_0x1cf04a(_0x2512a8['error'](0x1f4,_0x55705d[_0x7e52('0x16')]));});});};exports[_0x7e52('0x23')]=function(_0x18cb67){return new Promise(function(_0x4f18fb,_0x36498f){return db['ChatInteraction']['find']({'where':_0x18cb67[_0x7e52('0x1d')]?_0x18cb67['options'][_0x7e52('0x1f')]||null:null})[_0x7e52('0xe')](function(_0x176c81){if(_0x176c81){return _0x176c81[_0x7e52('0x24')](_0x18cb67[_0x7e52('0x1c')][_0x7e52('0x25')],_['omit'](_0x18cb67[_0x7e52('0x1c')],[_0x7e52('0x25'),'id'])||{});}})[_0x7e52('0x26')](function(_0x144454){logger[_0x7e52('0xf')](_0x7e52('0x27'),_0x18cb67);logger['debug']('AddTags',_0x18cb67,JSON[_0x7e52('0x13')](_0x144454));_0x4f18fb(_0x144454);})['catch'](function(_0x282e55){logger['error'](_0x7e52('0x27'),_0x282e55['message'],_0x18cb67);_0x36498f(_this[_0x7e52('0x14')](0x1f4,_0x282e55[_0x7e52('0x16')]));});});};
\ No newline at end of file
index c725530..bd3f9d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb67=['emit','removeListener','register','chatInteraction:','./chatInteraction.events'];(function(_0x4587d6,_0x1d1523){var _0x393d9e=function(_0x3bd6cd){while(--_0x3bd6cd){_0x4587d6['push'](_0x4587d6['shift']());}};_0x393d9e(++_0x1d1523);}(_0xdb67,0x90));var _0x7db6=function(_0x11b764,_0x1ecfe5){_0x11b764=_0x11b764-0x0;var _0x24f0ac=_0xdb67[_0x11b764];return _0x24f0ac;};'use strict';var ChatInteractionEvents=require(_0x7db6('0x0'));var events=['save','remove','update'];function createListener(_0x51d5ef,_0x3b4855){return function(_0x1b9867){_0x3b4855[_0x7db6('0x1')](_0x51d5ef,_0x1b9867);};}function removeListener(_0x5386e0,_0x4b02cb){return function(){ChatInteractionEvents[_0x7db6('0x2')](_0x5386e0,_0x4b02cb);};}exports[_0x7db6('0x3')]=function(_0x114dbd){for(var _0x590232=0x0,_0x59b1f6=events['length'];_0x590232<_0x59b1f6;_0x590232++){var _0x1dc63d=events[_0x590232];var _0x269d7d=createListener(_0x7db6('0x4')+_0x1dc63d,_0x114dbd);ChatInteractionEvents['on'](_0x1dc63d,_0x269d7d);}};
\ No newline at end of file
+var _0x3604=['save','remove','removeListener','register','length','chatInteraction:'];(function(_0x58dc25,_0x49b9d5){var _0x21b0a7=function(_0x38a186){while(--_0x38a186){_0x58dc25['push'](_0x58dc25['shift']());}};_0x21b0a7(++_0x49b9d5);}(_0x3604,0x174));var _0x4360=function(_0x28947d,_0x4cc9c6){_0x28947d=_0x28947d-0x0;var _0x12d2ee=_0x3604[_0x28947d];return _0x12d2ee;};'use strict';var ChatInteractionEvents=require('./chatInteraction.events');var events=[_0x4360('0x0'),_0x4360('0x1'),'update'];function createListener(_0xf349b0,_0x34c2f5){return function(_0x81da3e){_0x34c2f5['emit'](_0xf349b0,_0x81da3e);};}function removeListener(_0xca6c43,_0x4221af){return function(){ChatInteractionEvents[_0x4360('0x2')](_0xca6c43,_0x4221af);};}exports[_0x4360('0x3')]=function(_0x4d0529){for(var _0x45b4db=0x0,_0x23d6c5=events[_0x4360('0x4')];_0x45b4db<_0x23d6c5;_0x45b4db++){var _0x7badab=events[_0x45b4db];var _0x555d99=createListener(_0x4360('0x5')+_0x7badab,_0x4d0529);ChatInteractionEvents['on'](_0x7badab,_0x555d99);}};
\ No newline at end of file
index 2775ae7..4fe034d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8fc5=['getMessages','/:id/my_messages','getMyMessages','/:id/download','post','/:id/vidaoo','createVidaooSession','diskStorage','join','root','server/files/attachments/','format','%s-%s','now','originalname','replace','/:id/attachment_upload','single','file','attachmentUpload','addMessage','/:id/tags','tracked','chat','chatinteraction:addtags','addTags','put','/:id','chatinteraction:update','/:id/custom_update','customUpdate','abandon','/:id/close','close','destroy','delete','removeTags','exports','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./chatInteraction.controller','get','isAuthenticated','index','/describe','describe','isChatInteractionAuthorized','show','/:id/attachment_download','attachmentDownload','/:id/messages'];(function(_0x2e5167,_0x1cef92){var _0xfd5324=function(_0x1b5427){while(--_0x1b5427){_0x2e5167['push'](_0x2e5167['shift']());}};_0xfd5324(++_0x1cef92);}(_0x8fc5,0xce));var _0x58fc=function(_0x130b53,_0x30924b){_0x130b53=_0x130b53-0x0;var _0x358070=_0x8fc5[_0x130b53];return _0x358070;};'use strict';var multer=require('multer');var util=require(_0x58fc('0x0'));var path=require(_0x58fc('0x1'));var timeout=require(_0x58fc('0x2'));var express=require(_0x58fc('0x3'));var router=express['Router']();var fs_extra=require(_0x58fc('0x4'));var auth=require(_0x58fc('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x58fc('0x6'));var controller=require(_0x58fc('0x7'));router[_0x58fc('0x8')]('/',auth[_0x58fc('0x9')](),controller[_0x58fc('0xa')]);router['get'](_0x58fc('0xb'),auth[_0x58fc('0x9')](),controller[_0x58fc('0xc')]);router[_0x58fc('0x8')]('/:id',auth[_0x58fc('0xd')](),controller[_0x58fc('0xe')]);router['get'](_0x58fc('0xf'),auth[_0x58fc('0xd')](),controller[_0x58fc('0x10')]);router[_0x58fc('0x8')](_0x58fc('0x11'),auth[_0x58fc('0x9')](),controller[_0x58fc('0x12')]);router[_0x58fc('0x8')](_0x58fc('0x13'),auth[_0x58fc('0xd')](),controller[_0x58fc('0x14')]);router[_0x58fc('0x8')](_0x58fc('0x15'),auth[_0x58fc('0x9')](),controller['download']);router[_0x58fc('0x16')]('/',auth[_0x58fc('0x9')](),controller['create']);router[_0x58fc('0x16')](_0x58fc('0x17'),auth[_0x58fc('0x9')](),controller[_0x58fc('0x18')]);var upload=multer({'storage':multer[_0x58fc('0x19')]({'destination':function(_0x33a7b8,_0x17ff5f,_0x1e4170){_0x1e4170(null,path[_0x58fc('0x1a')](config[_0x58fc('0x1b')],_0x58fc('0x1c')));},'filename':function(_0x1e85f1,_0x1f2711,_0x2febae){_0x2febae(null,util[_0x58fc('0x1d')](_0x58fc('0x1e'),Date[_0x58fc('0x1f')](),_0x1f2711[_0x58fc('0x20')][_0x58fc('0x21')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0x58fc('0x16')](_0x58fc('0x22'),upload[_0x58fc('0x23')](_0x58fc('0x24')),controller[_0x58fc('0x25')]);router['post'](_0x58fc('0x11'),auth[_0x58fc('0xd')](),controller[_0x58fc('0x26')]);router[_0x58fc('0x16')](_0x58fc('0x27'),auth[_0x58fc('0x9')](),interaction[_0x58fc('0x28')](_0x58fc('0x29'),_0x58fc('0x2a')),controller[_0x58fc('0x2b')]);router[_0x58fc('0x2c')](_0x58fc('0x2d'),auth[_0x58fc('0x9')](),interaction[_0x58fc('0x28')](_0x58fc('0x29'),_0x58fc('0x2e')),controller['update']);router['put'](_0x58fc('0x2f'),controller[_0x58fc('0x30')]);router[_0x58fc('0x2c')]('/:id/abandon',auth['isChatInteractionAuthorized'](),controller[_0x58fc('0x31')]);router[_0x58fc('0x2c')](_0x58fc('0x32'),controller[_0x58fc('0x33')]);router['delete'](_0x58fc('0x2d'),auth[_0x58fc('0x9')](),interaction['tracked'](_0x58fc('0x29'),'chatinteraction:destroy'),controller[_0x58fc('0x34')]);router[_0x58fc('0x35')](_0x58fc('0x27'),auth[_0x58fc('0x9')](),controller[_0x58fc('0x36')]);module[_0x58fc('0x37')]=router;
\ No newline at end of file
+var _0x8dd8=['delete','chatinteraction:destroy','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./chatInteraction.controller','get','isAuthenticated','index','/describe','describe','isChatInteractionAuthorized','show','/:id/attachment_download','/:id/messages','/:id/my_messages','/:id/download','download','post','create','/:id/vidaoo','diskStorage','join','root','format','%s-%s','originalname','/:id/attachment_upload','single','file','attachmentUpload','/:id/tags','tracked','addTags','put','chat','chatinteraction:update','/:id/custom_update','abandon','/:id/close'];(function(_0x24179b,_0x3c6659){var _0x1dda8d=function(_0x50f08d){while(--_0x50f08d){_0x24179b['push'](_0x24179b['shift']());}};_0x1dda8d(++_0x3c6659);}(_0x8dd8,0x184));var _0x88dd=function(_0x163a00,_0x10fed1){_0x163a00=_0x163a00-0x0;var _0x505dd2=_0x8dd8[_0x163a00];return _0x505dd2;};'use strict';var multer=require(_0x88dd('0x0'));var util=require(_0x88dd('0x1'));var path=require(_0x88dd('0x2'));var timeout=require(_0x88dd('0x3'));var express=require(_0x88dd('0x4'));var router=express[_0x88dd('0x5')]();var fs_extra=require(_0x88dd('0x6'));var auth=require(_0x88dd('0x7'));var interaction=require(_0x88dd('0x8'));var config=require('../../config/environment');var controller=require(_0x88dd('0x9'));router[_0x88dd('0xa')]('/',auth[_0x88dd('0xb')](),controller[_0x88dd('0xc')]);router['get'](_0x88dd('0xd'),auth[_0x88dd('0xb')](),controller[_0x88dd('0xe')]);router[_0x88dd('0xa')]('/:id',auth[_0x88dd('0xf')](),controller[_0x88dd('0x10')]);router['get'](_0x88dd('0x11'),auth[_0x88dd('0xf')](),controller['attachmentDownload']);router[_0x88dd('0xa')](_0x88dd('0x12'),auth[_0x88dd('0xb')](),controller['getMessages']);router[_0x88dd('0xa')](_0x88dd('0x13'),auth['isChatInteractionAuthorized'](),controller['getMyMessages']);router[_0x88dd('0xa')](_0x88dd('0x14'),auth[_0x88dd('0xb')](),controller[_0x88dd('0x15')]);router[_0x88dd('0x16')]('/',auth[_0x88dd('0xb')](),controller[_0x88dd('0x17')]);router[_0x88dd('0x16')](_0x88dd('0x18'),auth[_0x88dd('0xb')](),controller['createVidaooSession']);var upload=multer({'storage':multer[_0x88dd('0x19')]({'destination':function(_0x3badfa,_0x5cec3e,_0x16bb10){_0x16bb10(null,path[_0x88dd('0x1a')](config[_0x88dd('0x1b')],'server/files/attachments/'));},'filename':function(_0xcf0b23,_0x24d3a5,_0x3dfec1){_0x3dfec1(null,util[_0x88dd('0x1c')](_0x88dd('0x1d'),Date['now'](),_0x24d3a5[_0x88dd('0x1e')]['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router['post'](_0x88dd('0x1f'),upload[_0x88dd('0x20')](_0x88dd('0x21')),controller[_0x88dd('0x22')]);router[_0x88dd('0x16')](_0x88dd('0x12'),auth[_0x88dd('0xf')](),controller['addMessage']);router[_0x88dd('0x16')](_0x88dd('0x23'),auth[_0x88dd('0xb')](),interaction[_0x88dd('0x24')]('chat','chatinteraction:addtags'),controller[_0x88dd('0x25')]);router[_0x88dd('0x26')]('/:id',auth['isAuthenticated'](),interaction[_0x88dd('0x24')](_0x88dd('0x27'),_0x88dd('0x28')),controller['update']);router[_0x88dd('0x26')](_0x88dd('0x29'),controller['customUpdate']);router[_0x88dd('0x26')]('/:id/abandon',auth[_0x88dd('0xf')](),controller[_0x88dd('0x2a')]);router[_0x88dd('0x26')](_0x88dd('0x2b'),controller['close']);router[_0x88dd('0x2c')]('/:id',auth[_0x88dd('0xb')](),interaction[_0x88dd('0x24')]('chat',_0x88dd('0x2d')),controller[_0x88dd('0x2e')]);router[_0x88dd('0x2c')](_0x88dd('0x23'),auth[_0x88dd('0xb')](),controller['removeTags']);module[_0x88dd('0x2f')]=router;
\ No newline at end of file
index 7214b21..a20f562 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe493=['sequelize','exports','medium','BOOLEAN'];(function(_0x2b53d0,_0x46dfb4){var _0x5b59d9=function(_0x1bfff4){while(--_0x1bfff4){_0x2b53d0['push'](_0x2b53d0['shift']());}};_0x5b59d9(++_0x46dfb4);}(_0xe493,0x158));var _0x3e49=function(_0x2feb4c,_0x488e1f){_0x2feb4c=_0x2feb4c-0x0;var _0x594db6=_0xe493[_0x2feb4c];return _0x594db6;};'use strict';var Sequelize=require(_0x3e49('0x0'));module[_0x3e49('0x1')]={'body':{'type':Sequelize['TEXT'](_0x3e49('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0x3e49('0x3')],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0xc7c2=['BOOLEAN','INTEGER','sequelize','exports','medium'];(function(_0x201490,_0x235e70){var _0x1479df=function(_0xb018ba){while(--_0xb018ba){_0x201490['push'](_0x201490['shift']());}};_0x1479df(++_0x235e70);}(_0xc7c2,0x13d));var _0x2c7c=function(_0x1f3dd8,_0x276bc1){_0x1f3dd8=_0x1f3dd8-0x0;var _0x550013=_0xc7c2[_0x1f3dd8];return _0x550013;};'use strict';var Sequelize=require(_0x2c7c('0x0'));module[_0x2c7c('0x1')]={'body':{'type':Sequelize['TEXT'](_0x2c7c('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0x2c7c('0x3')],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize[_0x2c7c('0x4')]}};
\ No newline at end of file
index 1d60282..261556b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc406=['FromId','read','-createdAt','all','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/utils','../../config/environment','../../config/license/util','redis','localhost','socket.io-emitter','./chatInternalMessage.socket','register','sendStatus','status','json','offset','undefined','limit','count','Content-Range','reject','save','then','destroy','end','error','name','send','map','ChatInternalMessage','rawAttributes','fieldName','key','model','query','keys','attributes','fields','length','order','sort','filters','pick','filter','where','merge','type','VIRTUAL','options','include','rows','catch','show','params','intersection','includeAll','find','create','body','describe','get','messages','lastMessageAt','createdAt','format','lastMessage','getUsers','User','findAll','admin','user','fullname','role','internal','allowmessenger','showWebBar','VoiceQueues','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','autoAssociation','UserProfileResource','isEmpty','agent','resourceId','push'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0xc406,0xd0));var _0x6c40=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc406[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x6c40('0x0'));var zipdir=require(_0x6c40('0x1'));var jsonpatch=require(_0x6c40('0x2'));var rp=require(_0x6c40('0x3'));var moment=require(_0x6c40('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x6c40('0x5'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x6c40('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6c40('0x7'));var _=require(_0x6c40('0x8'));var squel=require(_0x6c40('0x9'));var crypto=require(_0x6c40('0xa'));var jsforce=require(_0x6c40('0xb'));var deskjs=require(_0x6c40('0xc'));var toCsv=require(_0x6c40('0x6'));var querystring=require('querystring');var Papa=require(_0x6c40('0xd'));var Redis=require(_0x6c40('0xe'));var authService=require(_0x6c40('0xf'));var qs=require(_0x6c40('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x6c40('0x11'));var config=require(_0x6c40('0x12'));var licenseUtil=require(_0x6c40('0x13'));var db=require('../../mysqldb')['db'];config[_0x6c40('0x14')]=_['defaults'](config['redis'],{'host':_0x6c40('0x15'),'port':0x18eb});var socket=require(_0x6c40('0x16'))(new Redis(config['redis']));require(_0x6c40('0x17'))[_0x6c40('0x18')](socket);function respondWithStatusCode(_0x40f170,_0x4776ad){_0x4776ad=_0x4776ad||0xcc;return function(_0x1fe556){if(_0x1fe556){return _0x40f170[_0x6c40('0x19')](_0x4776ad);}return _0x40f170[_0x6c40('0x1a')](_0x4776ad)['end']();};}function respondWithResult(_0x360cb8,_0x13327b){_0x13327b=_0x13327b||0xc8;return function(_0x559ba4){if(_0x559ba4){return _0x360cb8[_0x6c40('0x1a')](_0x13327b)[_0x6c40('0x1b')](_0x559ba4);}};}function respondWithFilteredResult(_0xdec5d7,_0x254425){return function(_0x421372){if(_0x421372){var _0x1122d7=typeof _0x254425[_0x6c40('0x1c')]===_0x6c40('0x1d')&&typeof _0x254425[_0x6c40('0x1e')]===_0x6c40('0x1d');var _0x32a7ea=_0x421372[_0x6c40('0x1f')];var _0x1ae4fc=_0x1122d7?0x0:_0x254425[_0x6c40('0x1c')];var _0x3d855=_0x1122d7?_0x421372[_0x6c40('0x1f')]:_0x254425[_0x6c40('0x1c')]+_0x254425[_0x6c40('0x1e')];var _0x414104;if(_0x3d855>=_0x32a7ea){_0x3d855=_0x32a7ea;_0x414104=0xc8;}else{_0x414104=0xce;}_0xdec5d7[_0x6c40('0x1a')](_0x414104);return _0xdec5d7['set'](_0x6c40('0x20'),_0x1ae4fc+'-'+_0x3d855+'/'+_0x32a7ea)[_0x6c40('0x1b')](_0x421372);}return null;};}function patchUpdates(_0x5aa342){return function(_0x293dfa){try{jsonpatch['apply'](_0x293dfa,_0x5aa342,!![]);}catch(_0x2f8549){return BPromise[_0x6c40('0x21')](_0x2f8549);}return _0x293dfa[_0x6c40('0x22')]();};}function saveUpdates(_0x2397d5,_0x36bd21){return function(_0x48bc5c){if(_0x48bc5c){return _0x48bc5c['update'](_0x2397d5)[_0x6c40('0x23')](function(_0x16700c){return _0x16700c;});}return null;};}function removeEntity(_0x2bc969,_0x74427){return function(_0x1ccb84){if(_0x1ccb84){return _0x1ccb84[_0x6c40('0x24')]()['then'](function(){_0x2bc969[_0x6c40('0x1a')](0xcc)[_0x6c40('0x25')]();});}};}function handleEntityNotFound(_0x4fa07a,_0x2c9a06){return function(_0x3187f6){if(!_0x3187f6){_0x4fa07a[_0x6c40('0x19')](0x194);}return _0x3187f6;};}function handleError(_0x561e86,_0x34fecb){_0x34fecb=_0x34fecb||0x1f4;return function(_0xabf85a){logger[_0x6c40('0x26')](_0xabf85a['stack']);if(_0xabf85a[_0x6c40('0x27')]){delete _0xabf85a['name'];}_0x561e86[_0x6c40('0x1a')](_0x34fecb)[_0x6c40('0x28')](_0xabf85a);};}exports['index']=function(_0x4d0b27,_0x54db30){var _0x3ad78b={},_0x5204e3={},_0x53cda7={'count':0x0,'rows':[]};var _0x1d6775=_[_0x6c40('0x29')](db[_0x6c40('0x2a')][_0x6c40('0x2b')],function(_0x520a38){return{'name':_0x520a38[_0x6c40('0x2c')],'type':_0x520a38['type'][_0x6c40('0x2d')]};});_0x5204e3[_0x6c40('0x2e')]=_[_0x6c40('0x29')](_0x1d6775,_0x6c40('0x27'));_0x5204e3[_0x6c40('0x2f')]=_[_0x6c40('0x30')](_0x4d0b27[_0x6c40('0x2f')]);_0x5204e3['filters']=_['intersection'](_0x5204e3['model'],_0x5204e3[_0x6c40('0x2f')]);_0x3ad78b[_0x6c40('0x31')]=_['intersection'](_0x5204e3[_0x6c40('0x2e')],qs['fields'](_0x4d0b27[_0x6c40('0x2f')][_0x6c40('0x32')]));_0x3ad78b[_0x6c40('0x31')]=_0x3ad78b[_0x6c40('0x31')][_0x6c40('0x33')]?_0x3ad78b['attributes']:_0x5204e3[_0x6c40('0x2e')];if(!_0x4d0b27['query']['hasOwnProperty']('nolimit')){_0x3ad78b[_0x6c40('0x1e')]=qs[_0x6c40('0x1e')](_0x4d0b27['query']['limit']);_0x3ad78b[_0x6c40('0x1c')]=qs[_0x6c40('0x1c')](_0x4d0b27['query']['offset']);}_0x3ad78b[_0x6c40('0x34')]=qs[_0x6c40('0x35')](_0x4d0b27[_0x6c40('0x2f')]['sort']);_0x3ad78b['where']=qs[_0x6c40('0x36')](_[_0x6c40('0x37')](_0x4d0b27[_0x6c40('0x2f')],_0x5204e3[_0x6c40('0x36')]),_0x1d6775);if(_0x4d0b27['query'][_0x6c40('0x38')]){_0x3ad78b[_0x6c40('0x39')]=_[_0x6c40('0x3a')](_0x3ad78b[_0x6c40('0x39')],{'$or':_[_0x6c40('0x29')](_0x1d6775,function(_0x2e2833){if(_0x2e2833[_0x6c40('0x3b')]!==_0x6c40('0x3c')){var _0x1c0162={};_0x1c0162[_0x2e2833['name']]={'$like':'%'+_0x4d0b27['query'][_0x6c40('0x38')]+'%'};return _0x1c0162;}})});}_0x3ad78b=_[_0x6c40('0x3a')]({},_0x3ad78b,_0x4d0b27[_0x6c40('0x3d')]);var _0x44e80e={'where':_0x3ad78b['where']};return db['ChatInternalMessage'][_0x6c40('0x1f')](_0x44e80e)[_0x6c40('0x23')](function(_0x480f32){_0x53cda7[_0x6c40('0x1f')]=_0x480f32;if(_0x4d0b27[_0x6c40('0x2f')]['includeAll']){_0x3ad78b[_0x6c40('0x3e')]=[{'all':!![]}];}return db[_0x6c40('0x2a')]['findAll'](_0x3ad78b);})[_0x6c40('0x23')](function(_0x15476b){_0x53cda7[_0x6c40('0x3f')]=_0x15476b;return _0x53cda7;})[_0x6c40('0x23')](respondWithFilteredResult(_0x54db30,_0x3ad78b))[_0x6c40('0x40')](handleError(_0x54db30,null));};exports[_0x6c40('0x41')]=function(_0x163d4f,_0x4cf967){var _0x40e4a5={'raw':!![],'where':{'id':_0x163d4f[_0x6c40('0x42')]['id']}},_0x4b703d={};_0x4b703d[_0x6c40('0x2e')]=_[_0x6c40('0x30')](db[_0x6c40('0x2a')][_0x6c40('0x2b')]);_0x4b703d[_0x6c40('0x2f')]=_[_0x6c40('0x30')](_0x163d4f[_0x6c40('0x2f')]);_0x4b703d['filters']=_[_0x6c40('0x43')](_0x4b703d[_0x6c40('0x2e')],_0x4b703d[_0x6c40('0x2f')]);_0x40e4a5[_0x6c40('0x31')]=_[_0x6c40('0x43')](_0x4b703d[_0x6c40('0x2e')],qs[_0x6c40('0x32')](_0x163d4f[_0x6c40('0x2f')]['fields']));_0x40e4a5[_0x6c40('0x31')]=_0x40e4a5[_0x6c40('0x31')][_0x6c40('0x33')]?_0x40e4a5[_0x6c40('0x31')]:_0x4b703d[_0x6c40('0x2e')];if(_0x163d4f[_0x6c40('0x2f')][_0x6c40('0x44')]){_0x40e4a5[_0x6c40('0x3e')]=[{'all':!![]}];}_0x40e4a5=_[_0x6c40('0x3a')]({},_0x40e4a5,_0x163d4f[_0x6c40('0x3d')]);return db[_0x6c40('0x2a')][_0x6c40('0x45')](_0x40e4a5)[_0x6c40('0x23')](handleEntityNotFound(_0x4cf967,null))[_0x6c40('0x23')](respondWithResult(_0x4cf967,null))[_0x6c40('0x40')](handleError(_0x4cf967,null));};exports[_0x6c40('0x46')]=function(_0x2614b3,_0x2cd259){return db['ChatInternalMessage'][_0x6c40('0x46')](_0x2614b3['body'],{})['then'](respondWithResult(_0x2cd259,0xc9))[_0x6c40('0x40')](handleError(_0x2cd259,null));};exports['update']=function(_0x4b38e3,_0x1a8ff8){if(_0x4b38e3['body']['id']){delete _0x4b38e3[_0x6c40('0x47')]['id'];}return db[_0x6c40('0x2a')][_0x6c40('0x45')]({'where':{'id':_0x4b38e3[_0x6c40('0x42')]['id']}})[_0x6c40('0x23')](handleEntityNotFound(_0x1a8ff8,null))['then'](saveUpdates(_0x4b38e3[_0x6c40('0x47')],null))[_0x6c40('0x23')](respondWithResult(_0x1a8ff8,null))['catch'](handleError(_0x1a8ff8,null));};exports['destroy']=function(_0x41f669,_0x53521e){return db[_0x6c40('0x2a')][_0x6c40('0x45')]({'where':{'id':_0x41f669['params']['id']}})[_0x6c40('0x23')](handleEntityNotFound(_0x53521e,null))[_0x6c40('0x23')](removeEntity(_0x53521e,null))[_0x6c40('0x40')](handleError(_0x53521e,null));};exports[_0x6c40('0x48')]=function(_0x22c132,_0x4ddbc6){return db[_0x6c40('0x2a')][_0x6c40('0x48')]()[_0x6c40('0x23')](respondWithResult(_0x4ddbc6,null))[_0x6c40('0x40')](handleError(_0x4ddbc6,null));};function wrapUser(_0xd06380){return function(_0x410201){var _0x390339=_0xd06380[_0x6c40('0x49')]({'plain':!![]});_0x390339[_0x6c40('0x4a')]=[];if(_0x410201){_0x390339[_0x6c40('0x4b')]=_0x410201[_0x6c40('0x4c')];_0x390339['lastMessage']=_0x410201;}else{_0x390339[_0x6c40('0x4b')]=moment(0x0)[_0x6c40('0x4d')]('YYYY-MM-DD\x20HH:mm:ss');_0x390339[_0x6c40('0x4e')]={};}return _0x390339;};}exports[_0x6c40('0x4f')]=function(_0x20e3a9,_0x424d08,_0x4bda57){var _0x1f3d01=[];return db[_0x6c40('0x50')][_0x6c40('0x51')]({'where':{'role':['agent',_0x6c40('0x52'),_0x6c40('0x53')]},'attributes':['id',_0x6c40('0x54'),_0x6c40('0x27'),_0x6c40('0x55'),'userpic',_0x6c40('0x56'),'online','lastLoginAt',_0x6c40('0x57'),_0x6c40('0x58')],'order':qs['sort']('-online'),'include':[{'model':db['VoiceQueue'],'as':_0x6c40('0x59'),'attributes':['id',_0x6c40('0x27'),_0x6c40('0x3b')],'through':{'attributes':[]}}]})[_0x6c40('0x23')](function(_0x43a830){if(_0x43a830){var _0x3eb26b=_0x20e3a9['user'][_0x6c40('0x49')]({'plain':!![]});if(!_0x3eb26b)throw new Error(_0x6c40('0x5a'));if(_0x3eb26b[_0x6c40('0x55')]===_0x6c40('0x53')){return db[_0x6c40('0x5b')][_0x6c40('0x45')]({'where':{'name':'Agents','userProfileId':_0x3eb26b['userProfileId']},'raw':!![]})[_0x6c40('0x23')](function(_0x3d8cf9){if(_0x3d8cf9){if(_0x3d8cf9[_0x6c40('0x5c')]===0x0){return db[_0x6c40('0x5d')][_0x6c40('0x51')]({'where':{'sectionId':_0x3d8cf9['id']},'raw':!![]})[_0x6c40('0x23')](function(_0x29854f){var _0x460d5d=[];if(_[_0x6c40('0x5e')](_0x29854f)){_0x460d5d=_['filter'](_0x43a830,function(_0x5b448e){if(_0x5b448e[_0x6c40('0x55')]!==_0x6c40('0x5f')){return _0x5b448e;}});return _0x460d5d;}else{for(var _0x592e1b=0x0;_0x592e1b<_0x43a830['length'];_0x592e1b++){var _0x5afa37=_0x43a830[_0x592e1b];if(_0x5afa37[_0x6c40('0x55')]==='agent'){var _0x4fd117=_['find'](_0x29854f,function(_0x3f7a16){return _0x3f7a16[_0x6c40('0x60')]===_0x5afa37['id'];});if(_0x4fd117)_0x460d5d[_0x6c40('0x61')](_0x5afa37);}else{_0x460d5d['push'](_0x5afa37);}}return _0x460d5d;}});}else{return _0x43a830;}}else{var _0x58094f=_['filter'](_0x43a830,function(_0x55570b){if(_0x55570b[_0x6c40('0x55')]!==_0x6c40('0x5f')){return _0x55570b;}});return _0x58094f;}});}else{return _0x43a830;}}})[_0x6c40('0x23')](function(_0x1e67da){var _0xd05077=[];if(_0x1e67da){_0x1f3d01=_0x1e67da;for(var _0x5eae2d=0x0;_0x5eae2d<_0x1e67da['length'];_0x5eae2d+=0x1){_0x1f3d01[_0x5eae2d][_0x6c40('0x4a')]=[];_0xd05077[_0x6c40('0x61')](db['ChatInternalMessage'][_0x6c40('0x45')]({'where':{'FromId':[_0x20e3a9['user']['id'],_0x1e67da[_0x5eae2d]['id']],'ToId':[_0x20e3a9[_0x6c40('0x53')]['id'],_0x1e67da[_0x5eae2d]['id']],'ChatGroupId':null},'attributes':['id',_0x6c40('0x4c'),_0x6c40('0x62'),'ToId',_0x6c40('0x63'),_0x6c40('0x47')],'order':qs[_0x6c40('0x35')](_0x6c40('0x64')),'limit':0x1,'offset':0x0,'raw':!![]})[_0x6c40('0x23')](wrapUser(_0x1e67da[_0x5eae2d])));}return BPromise[_0x6c40('0x65')](_0xd05077);}return[];})[_0x6c40('0x23')](function(_0x4d4676){return{'rows':_0x4d4676,'count':_0x4d4676['length']};})[_0x6c40('0x23')](respondWithResult(_0x424d08,null))[_0x6c40('0x40')](handleError(_0x424d08,null));};
\ No newline at end of file
+var _0x578e=['role','userpic','internal','online','lastLoginAt','allowmessenger','showWebBar','VoiceQueue','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','autoAssociation','UserProfileResource','isEmpty','resourceId','push','FromId','read','-createdAt','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','sendStatus','end','status','offset','undefined','limit','count','set','Content-Range','json','reject','save','update','destroy','then','stack','name','send','index','map','ChatInternalMessage','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','VIRTUAL','merge','includeAll','include','rows','catch','show','params','keys','options','find','create','body','get','messages','lastMessageAt','createdAt','lastMessage','format','YYYY-MM-DD\x20HH:mm:ss','User','findAll','agent','user','fullname'];(function(_0x210068,_0x2934ae){var _0x4cf2fb=function(_0x53f3df){while(--_0x53f3df){_0x210068['push'](_0x210068['shift']());}};_0x4cf2fb(++_0x2934ae);}(_0x578e,0x80));var _0xe578=function(_0x42cf41,_0x4f7aba){_0x42cf41=_0x42cf41-0x0;var _0x30aa30=_0x578e[_0x42cf41];return _0x30aa30;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe578('0x0'));var zipdir=require(_0xe578('0x1'));var jsonpatch=require(_0xe578('0x2'));var rp=require(_0xe578('0x3'));var moment=require('moment');var BPromise=require(_0xe578('0x4'));var Mustache=require('mustache');var util=require(_0xe578('0x5'));var path=require('path');var sox=require(_0xe578('0x6'));var csv=require('to-csv');var ejs=require(_0xe578('0x7'));var fs=require('fs');var fs_extra=require(_0xe578('0x8'));var _=require(_0xe578('0x9'));var squel=require(_0xe578('0xa'));var crypto=require(_0xe578('0xb'));var jsforce=require(_0xe578('0xc'));var deskjs=require(_0xe578('0xd'));var toCsv=require(_0xe578('0xe'));var querystring=require(_0xe578('0xf'));var Papa=require(_0xe578('0x10'));var Redis=require('ioredis');var authService=require(_0xe578('0x11'));var qs=require(_0xe578('0x12'));var as=require(_0xe578('0x13'));var hardwareService=require(_0xe578('0x14'));var logger=require(_0xe578('0x15'))(_0xe578('0x16'));var utils=require(_0xe578('0x17'));var config=require(_0xe578('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xe578('0x19'))['db'];config[_0xe578('0x1a')]=_['defaults'](config[_0xe578('0x1a')],{'host':_0xe578('0x1b'),'port':0x18eb});var socket=require(_0xe578('0x1c'))(new Redis(config[_0xe578('0x1a')]));require('./chatInternalMessage.socket')['register'](socket);function respondWithStatusCode(_0x1e41ec,_0x372dad){_0x372dad=_0x372dad||0xcc;return function(_0x3b7cb0){if(_0x3b7cb0){return _0x1e41ec[_0xe578('0x1d')](_0x372dad);}return _0x1e41ec['status'](_0x372dad)[_0xe578('0x1e')]();};}function respondWithResult(_0x1346bf,_0x1c78e3){_0x1c78e3=_0x1c78e3||0xc8;return function(_0x3e5acb){if(_0x3e5acb){return _0x1346bf[_0xe578('0x1f')](_0x1c78e3)['json'](_0x3e5acb);}};}function respondWithFilteredResult(_0x576ceb,_0x307929){return function(_0x172221){if(_0x172221){var _0x49168a=typeof _0x307929[_0xe578('0x20')]===_0xe578('0x21')&&typeof _0x307929[_0xe578('0x22')]===_0xe578('0x21');var _0x598d44=_0x172221[_0xe578('0x23')];var _0x265653=_0x49168a?0x0:_0x307929[_0xe578('0x20')];var _0x96c7bf=_0x49168a?_0x172221[_0xe578('0x23')]:_0x307929['offset']+_0x307929[_0xe578('0x22')];var _0x302087;if(_0x96c7bf>=_0x598d44){_0x96c7bf=_0x598d44;_0x302087=0xc8;}else{_0x302087=0xce;}_0x576ceb['status'](_0x302087);return _0x576ceb[_0xe578('0x24')](_0xe578('0x25'),_0x265653+'-'+_0x96c7bf+'/'+_0x598d44)[_0xe578('0x26')](_0x172221);}return null;};}function patchUpdates(_0x5873c1){return function(_0x4375f7){try{jsonpatch['apply'](_0x4375f7,_0x5873c1,!![]);}catch(_0x50f638){return BPromise[_0xe578('0x27')](_0x50f638);}return _0x4375f7[_0xe578('0x28')]();};}function saveUpdates(_0x41c9a4,_0xabf20){return function(_0xdd66de){if(_0xdd66de){return _0xdd66de[_0xe578('0x29')](_0x41c9a4)['then'](function(_0x5c3eb){return _0x5c3eb;});}return null;};}function removeEntity(_0x215823,_0x1e556b){return function(_0x3cdb37){if(_0x3cdb37){return _0x3cdb37[_0xe578('0x2a')]()[_0xe578('0x2b')](function(){_0x215823[_0xe578('0x1f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5c6c78,_0x2236ad){return function(_0x2619c3){if(!_0x2619c3){_0x5c6c78[_0xe578('0x1d')](0x194);}return _0x2619c3;};}function handleError(_0x38c7d6,_0x160db6){_0x160db6=_0x160db6||0x1f4;return function(_0x4aa033){logger['error'](_0x4aa033[_0xe578('0x2c')]);if(_0x4aa033[_0xe578('0x2d')]){delete _0x4aa033['name'];}_0x38c7d6[_0xe578('0x1f')](_0x160db6)[_0xe578('0x2e')](_0x4aa033);};}exports[_0xe578('0x2f')]=function(_0x4f50f3,_0x3241c4){var _0x4f48bd={},_0x3cae1c={},_0x4d2777={'count':0x0,'rows':[]};var _0xb480eb=_[_0xe578('0x30')](db[_0xe578('0x31')][_0xe578('0x32')],function(_0x50acd5){return{'name':_0x50acd5[_0xe578('0x33')],'type':_0x50acd5[_0xe578('0x34')][_0xe578('0x35')]};});_0x3cae1c[_0xe578('0x36')]=_['map'](_0xb480eb,_0xe578('0x2d'));_0x3cae1c[_0xe578('0x37')]=_['keys'](_0x4f50f3[_0xe578('0x37')]);_0x3cae1c[_0xe578('0x38')]=_[_0xe578('0x39')](_0x3cae1c[_0xe578('0x36')],_0x3cae1c[_0xe578('0x37')]);_0x4f48bd[_0xe578('0x3a')]=_[_0xe578('0x39')](_0x3cae1c[_0xe578('0x36')],qs[_0xe578('0x3b')](_0x4f50f3[_0xe578('0x37')][_0xe578('0x3b')]));_0x4f48bd[_0xe578('0x3a')]=_0x4f48bd[_0xe578('0x3a')][_0xe578('0x3c')]?_0x4f48bd[_0xe578('0x3a')]:_0x3cae1c[_0xe578('0x36')];if(!_0x4f50f3[_0xe578('0x37')][_0xe578('0x3d')]('nolimit')){_0x4f48bd[_0xe578('0x22')]=qs[_0xe578('0x22')](_0x4f50f3[_0xe578('0x37')][_0xe578('0x22')]);_0x4f48bd[_0xe578('0x20')]=qs['offset'](_0x4f50f3[_0xe578('0x37')][_0xe578('0x20')]);}_0x4f48bd[_0xe578('0x3e')]=qs[_0xe578('0x3f')](_0x4f50f3[_0xe578('0x37')]['sort']);_0x4f48bd[_0xe578('0x40')]=qs['filters'](_[_0xe578('0x41')](_0x4f50f3[_0xe578('0x37')],_0x3cae1c['filters']),_0xb480eb);if(_0x4f50f3[_0xe578('0x37')][_0xe578('0x42')]){_0x4f48bd[_0xe578('0x40')]=_['merge'](_0x4f48bd[_0xe578('0x40')],{'$or':_['map'](_0xb480eb,function(_0x587c36){if(_0x587c36[_0xe578('0x34')]!==_0xe578('0x43')){var _0x9bdf59={};_0x9bdf59[_0x587c36[_0xe578('0x2d')]]={'$like':'%'+_0x4f50f3['query'][_0xe578('0x42')]+'%'};return _0x9bdf59;}})});}_0x4f48bd=_[_0xe578('0x44')]({},_0x4f48bd,_0x4f50f3['options']);var _0x140a5c={'where':_0x4f48bd[_0xe578('0x40')]};return db[_0xe578('0x31')]['count'](_0x140a5c)[_0xe578('0x2b')](function(_0x5cd4e2){_0x4d2777['count']=_0x5cd4e2;if(_0x4f50f3[_0xe578('0x37')][_0xe578('0x45')]){_0x4f48bd[_0xe578('0x46')]=[{'all':!![]}];}return db['ChatInternalMessage']['findAll'](_0x4f48bd);})[_0xe578('0x2b')](function(_0x4fd2ba){_0x4d2777[_0xe578('0x47')]=_0x4fd2ba;return _0x4d2777;})['then'](respondWithFilteredResult(_0x3241c4,_0x4f48bd))[_0xe578('0x48')](handleError(_0x3241c4,null));};exports[_0xe578('0x49')]=function(_0x4ff518,_0x1c3291){var _0x2f79b2={'raw':!![],'where':{'id':_0x4ff518[_0xe578('0x4a')]['id']}},_0x487b94={};_0x487b94[_0xe578('0x36')]=_[_0xe578('0x4b')](db[_0xe578('0x31')][_0xe578('0x32')]);_0x487b94[_0xe578('0x37')]=_[_0xe578('0x4b')](_0x4ff518[_0xe578('0x37')]);_0x487b94[_0xe578('0x38')]=_[_0xe578('0x39')](_0x487b94[_0xe578('0x36')],_0x487b94['query']);_0x2f79b2[_0xe578('0x3a')]=_[_0xe578('0x39')](_0x487b94[_0xe578('0x36')],qs['fields'](_0x4ff518[_0xe578('0x37')]['fields']));_0x2f79b2[_0xe578('0x3a')]=_0x2f79b2[_0xe578('0x3a')][_0xe578('0x3c')]?_0x2f79b2[_0xe578('0x3a')]:_0x487b94[_0xe578('0x36')];if(_0x4ff518['query']['includeAll']){_0x2f79b2[_0xe578('0x46')]=[{'all':!![]}];}_0x2f79b2=_[_0xe578('0x44')]({},_0x2f79b2,_0x4ff518[_0xe578('0x4c')]);return db[_0xe578('0x31')][_0xe578('0x4d')](_0x2f79b2)[_0xe578('0x2b')](handleEntityNotFound(_0x1c3291,null))[_0xe578('0x2b')](respondWithResult(_0x1c3291,null))[_0xe578('0x48')](handleError(_0x1c3291,null));};exports[_0xe578('0x4e')]=function(_0xe72170,_0x3f615e){return db[_0xe578('0x31')][_0xe578('0x4e')](_0xe72170['body'],{})[_0xe578('0x2b')](respondWithResult(_0x3f615e,0xc9))[_0xe578('0x48')](handleError(_0x3f615e,null));};exports[_0xe578('0x29')]=function(_0x3b16d2,_0x10424e){if(_0x3b16d2[_0xe578('0x4f')]['id']){delete _0x3b16d2[_0xe578('0x4f')]['id'];}return db['ChatInternalMessage']['find']({'where':{'id':_0x3b16d2[_0xe578('0x4a')]['id']}})[_0xe578('0x2b')](handleEntityNotFound(_0x10424e,null))[_0xe578('0x2b')](saveUpdates(_0x3b16d2[_0xe578('0x4f')],null))[_0xe578('0x2b')](respondWithResult(_0x10424e,null))[_0xe578('0x48')](handleError(_0x10424e,null));};exports[_0xe578('0x2a')]=function(_0x285a4e,_0x194704){return db[_0xe578('0x31')][_0xe578('0x4d')]({'where':{'id':_0x285a4e['params']['id']}})[_0xe578('0x2b')](handleEntityNotFound(_0x194704,null))[_0xe578('0x2b')](removeEntity(_0x194704,null))[_0xe578('0x48')](handleError(_0x194704,null));};exports['describe']=function(_0x5c6d9b,_0x1b332d){return db[_0xe578('0x31')]['describe']()[_0xe578('0x2b')](respondWithResult(_0x1b332d,null))['catch'](handleError(_0x1b332d,null));};function wrapUser(_0x4d9cb3){return function(_0x492599){var _0x41c24e=_0x4d9cb3[_0xe578('0x50')]({'plain':!![]});_0x41c24e[_0xe578('0x51')]=[];if(_0x492599){_0x41c24e[_0xe578('0x52')]=_0x492599[_0xe578('0x53')];_0x41c24e[_0xe578('0x54')]=_0x492599;}else{_0x41c24e[_0xe578('0x52')]=moment(0x0)[_0xe578('0x55')](_0xe578('0x56'));_0x41c24e['lastMessage']={};}return _0x41c24e;};}exports['getUsers']=function(_0x403c46,_0x3df1b1,_0x162de3){var _0x57c512=[];return db[_0xe578('0x57')][_0xe578('0x58')]({'where':{'role':[_0xe578('0x59'),'admin',_0xe578('0x5a')]},'attributes':['id',_0xe578('0x5b'),_0xe578('0x2d'),_0xe578('0x5c'),_0xe578('0x5d'),_0xe578('0x5e'),_0xe578('0x5f'),_0xe578('0x60'),_0xe578('0x61'),_0xe578('0x62')],'order':qs['sort']('-online'),'include':[{'model':db[_0xe578('0x63')],'as':'VoiceQueues','attributes':['id','name',_0xe578('0x34')],'through':{'attributes':[]}}]})['then'](function(_0x34a25b){if(_0x34a25b){var _0x26690e=_0x403c46[_0xe578('0x5a')][_0xe578('0x50')]({'plain':!![]});if(!_0x26690e)throw new Error(_0xe578('0x64'));if(_0x26690e[_0xe578('0x5c')]===_0xe578('0x5a')){return db[_0xe578('0x65')][_0xe578('0x4d')]({'where':{'name':'Agents','userProfileId':_0x26690e['userProfileId']},'raw':!![]})[_0xe578('0x2b')](function(_0x3a2fd0){if(_0x3a2fd0){if(_0x3a2fd0[_0xe578('0x66')]===0x0){return db[_0xe578('0x67')]['findAll']({'where':{'sectionId':_0x3a2fd0['id']},'raw':!![]})['then'](function(_0x2e3e67){var _0x334eb0=[];if(_[_0xe578('0x68')](_0x2e3e67)){_0x334eb0=_[_0xe578('0x42')](_0x34a25b,function(_0x46a3c8){if(_0x46a3c8[_0xe578('0x5c')]!==_0xe578('0x59')){return _0x46a3c8;}});return _0x334eb0;}else{for(var _0x50099a=0x0;_0x50099a<_0x34a25b[_0xe578('0x3c')];_0x50099a++){var _0x11103a=_0x34a25b[_0x50099a];if(_0x11103a['role']===_0xe578('0x59')){var _0x18d900=_['find'](_0x2e3e67,function(_0x5b26d0){return _0x5b26d0[_0xe578('0x69')]===_0x11103a['id'];});if(_0x18d900)_0x334eb0[_0xe578('0x6a')](_0x11103a);}else{_0x334eb0['push'](_0x11103a);}}return _0x334eb0;}});}else{return _0x34a25b;}}else{var _0xa4785a=_[_0xe578('0x42')](_0x34a25b,function(_0x475608){if(_0x475608[_0xe578('0x5c')]!=='agent'){return _0x475608;}});return _0xa4785a;}});}else{return _0x34a25b;}}})[_0xe578('0x2b')](function(_0x579041){var _0x262c3a=[];if(_0x579041){_0x57c512=_0x579041;for(var _0x3b68fe=0x0;_0x3b68fe<_0x579041[_0xe578('0x3c')];_0x3b68fe+=0x1){_0x57c512[_0x3b68fe]['messages']=[];_0x262c3a[_0xe578('0x6a')](db['ChatInternalMessage'][_0xe578('0x4d')]({'where':{'FromId':[_0x403c46[_0xe578('0x5a')]['id'],_0x579041[_0x3b68fe]['id']],'ToId':[_0x403c46[_0xe578('0x5a')]['id'],_0x579041[_0x3b68fe]['id']],'ChatGroupId':null},'attributes':['id',_0xe578('0x53'),_0xe578('0x6b'),'ToId',_0xe578('0x6c'),_0xe578('0x4f')],'order':qs[_0xe578('0x3f')](_0xe578('0x6d')),'limit':0x1,'offset':0x0,'raw':!![]})[_0xe578('0x2b')](wrapUser(_0x579041[_0x3b68fe])));}return BPromise['all'](_0x262c3a);}return[];})[_0xe578('0x2b')](function(_0x48ec02){return{'rows':_0x48ec02,'count':_0x48ec02[_0xe578('0x3c')]};})[_0xe578('0x2b')](respondWithResult(_0x3df1b1,null))[_0xe578('0x48')](handleError(_0x3df1b1,null));};
\ No newline at end of file
index e37a7ce..389bc34 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf064=['save','update','emit','hasOwnProperty','hook','exports','events','../../mysqldb','ChatInternalMessage'];(function(_0x4e7d25,_0x58285f){var _0x526fe6=function(_0x4f0aec){while(--_0x4f0aec){_0x4e7d25['push'](_0x4e7d25['shift']());}};_0x526fe6(++_0x58285f);}(_0xf064,0xcc));var _0x4f06=function(_0x58afd5,_0x534a48){_0x58afd5=_0x58afd5-0x0;var _0x3e503b=_0xf064[_0x58afd5];return _0x3e503b;};'use strict';var EventEmitter=require(_0x4f06('0x0'));var ChatInternalMessage=require(_0x4f06('0x1'))['db'][_0x4f06('0x2')];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x4f06('0x3'),'afterUpdate':_0x4f06('0x4'),'afterDestroy':'remove'};function emitEvent(_0x48764c){return function(_0x43a57a,_0x377693,_0x4d3478){ChatInternalMessageEvents[_0x4f06('0x5')](_0x48764c+':'+_0x43a57a['id'],_0x43a57a);ChatInternalMessageEvents[_0x4f06('0x5')](_0x48764c,_0x43a57a);_0x4d3478(null);};}for(var e in events){if(events[_0x4f06('0x6')](e)){var event=events[e];ChatInternalMessage[_0x4f06('0x7')](e,emitEvent(event));}}module[_0x4f06('0x8')]=ChatInternalMessageEvents;
\ No newline at end of file
+var _0xa72a=['save','remove','emit','exports','events','ChatInternalMessage','setMaxListeners'];(function(_0x49419d,_0x178785){var _0x124964=function(_0x4ae22f){while(--_0x4ae22f){_0x49419d['push'](_0x49419d['shift']());}};_0x124964(++_0x178785);}(_0xa72a,0xc8));var _0xaa72=function(_0x24ccd7,_0x2eeca9){_0x24ccd7=_0x24ccd7-0x0;var _0x26aa79=_0xa72a[_0x24ccd7];return _0x26aa79;};'use strict';var EventEmitter=require(_0xaa72('0x0'));var ChatInternalMessage=require('../../mysqldb')['db'][_0xaa72('0x1')];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents[_0xaa72('0x2')](0x0);var events={'afterCreate':_0xaa72('0x3'),'afterUpdate':'update','afterDestroy':_0xaa72('0x4')};function emitEvent(_0xcf146c){return function(_0xaa14c0,_0x4d9bd6,_0x50133e){ChatInternalMessageEvents[_0xaa72('0x5')](_0xcf146c+':'+_0xaa14c0['id'],_0xaa14c0);ChatInternalMessageEvents[_0xaa72('0x5')](_0xcf146c,_0xaa14c0);_0x50133e(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatInternalMessage['hook'](e,emitEvent(event));}}module[_0xaa72('0x6')]=ChatInternalMessageEvents;
\ No newline at end of file
index 6f5021e..ab31851 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc1e4=['exports','ChatInternalMessage','chat_internal_messages','utf8mb4','lodash','util','bluebird','../../config/environment','./chatInternalMessage.attributes'];(function(_0x496bb7,_0x32b9fa){var _0x589721=function(_0x4ca56b){while(--_0x4ca56b){_0x496bb7['push'](_0x496bb7['shift']());}};_0x589721(++_0x32b9fa);}(_0xc1e4,0x1a2));var _0x4c1e=function(_0x4e654d,_0x4565aa){_0x4e654d=_0x4e654d-0x0;var _0x261d8f=_0xc1e4[_0x4e654d];return _0x261d8f;};'use strict';var _=require(_0x4c1e('0x0'));var util=require(_0x4c1e('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x4c1e('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x4c1e('0x3'));var attributes=require(_0x4c1e('0x4'));module[_0x4c1e('0x5')]=function(_0x5f2687,_0x43bbcc){return _0x5f2687['define'](_0x4c1e('0x6'),attributes,{'tableName':_0x4c1e('0x7'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x4c1e('0x8'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x49cd=['bluebird','request-promise','path','./chatInternalMessage.attributes','exports','define','ChatInternalMessage','chat_internal_messages','util','moment'];(function(_0x4679a4,_0x50b357){var _0x4a10d7=function(_0x496fa0){while(--_0x496fa0){_0x4679a4['push'](_0x4679a4['shift']());}};_0x4a10d7(++_0x50b357);}(_0x49cd,0x134));var _0xd49c=function(_0x5a95fa,_0x4a2fc9){_0x5a95fa=_0x5a95fa-0x0;var _0x1a61b8=_0x49cd[_0x5a95fa];return _0x1a61b8;};'use strict';var _=require('lodash');var util=require(_0xd49c('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0xd49c('0x1'));var BPromise=require(_0xd49c('0x2'));var rp=require(_0xd49c('0x3'));var fs=require('fs');var path=require(_0xd49c('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xd49c('0x5'));module[_0xd49c('0x6')]=function(_0x43050b,_0x5322f9){return _0x43050b[_0xd49c('0x7')](_0xd49c('0x8'),attributes,{'tableName':_0xd49c('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 4ded27d..bbbd934 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc343=['client','http','redis','./chatInternalMessage.socket','register','request','request\x20sent','debug','ChatInternalMessage,\x20%s,\x20%s,\x20%s','error','code','message','info','ChatInternalMessage,\x20%s,\x20%s','catch','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise'];(function(_0x24919a,_0x1f9540){var _0x4e8c1d=function(_0x57b5a6){while(--_0x57b5a6){_0x24919a['push'](_0x24919a['shift']());}};_0x4e8c1d(++_0x1f9540);}(_0xc343,0x1bf));var _0x3c34=function(_0x516874,_0x3f436c){_0x516874=_0x516874-0x0;var _0x32c810=_0xc343[_0x516874];return _0x32c810;};'use strict';var _=require('lodash');var util=require(_0x3c34('0x0'));var moment=require(_0x3c34('0x1'));var BPromise=require(_0x3c34('0x2'));var rs=require(_0x3c34('0x3'));var fs=require('fs');var Redis=require(_0x3c34('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x3c34('0x5'));var logger=require('../../config/logger')(_0x3c34('0x6'));var config=require(_0x3c34('0x7'));var jayson=require(_0x3c34('0x8'));var client=jayson[_0x3c34('0x9')][_0x3c34('0xa')]({'port':0x232a});config[_0x3c34('0xb')]=_['defaults'](config[_0x3c34('0xb')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x3c34('0xc'))[_0x3c34('0xd')](socket);function respondWithRpcPromise(_0x45fc65,_0x43a119,_0x1ffde5){return new BPromise(function(_0x51b7cc,_0x55ba3c){return client[_0x3c34('0xe')](_0x45fc65,_0x1ffde5)['then'](function(_0x323f65){logger['info']('ChatInternalMessage,\x20%s,\x20%s',_0x43a119,_0x3c34('0xf'));logger[_0x3c34('0x10')](_0x3c34('0x11'),_0x43a119,_0x3c34('0xf'),JSON['stringify'](_0x323f65));if(_0x323f65[_0x3c34('0x12')]){if(_0x323f65[_0x3c34('0x12')][_0x3c34('0x13')]===0x1f4){logger[_0x3c34('0x12')]('ChatInternalMessage,\x20%s,\x20%s',_0x43a119,_0x323f65[_0x3c34('0x12')][_0x3c34('0x14')]);return _0x55ba3c(_0x323f65[_0x3c34('0x12')][_0x3c34('0x14')]);}logger[_0x3c34('0x12')]('ChatInternalMessage,\x20%s,\x20%s',_0x43a119,_0x323f65[_0x3c34('0x12')][_0x3c34('0x14')]);return _0x51b7cc(_0x323f65[_0x3c34('0x12')][_0x3c34('0x14')]);}else{logger[_0x3c34('0x15')](_0x3c34('0x16'),_0x43a119,_0x3c34('0xf'));_0x51b7cc(_0x323f65['result'][_0x3c34('0x14')]);}})[_0x3c34('0x17')](function(_0x46a203){logger['error'](_0x3c34('0x16'),_0x43a119,_0x46a203);_0x55ba3c(_0x46a203);});});}
\ No newline at end of file
+var _0x6478=['localhost','socket.io-emitter','./chatInternalMessage.socket','register','request','then','ChatInternalMessage,\x20%s,\x20%s','request\x20sent','ChatInternalMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','lodash','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','defaults','redis'];(function(_0x30d6c8,_0x192398){var _0x244aaf=function(_0x44da53){while(--_0x44da53){_0x30d6c8['push'](_0x30d6c8['shift']());}};_0x244aaf(++_0x192398);}(_0x6478,0x64));var _0x8647=function(_0x3c8168,_0x461028){_0x3c8168=_0x3c8168-0x0;var _0x20d28a=_0x6478[_0x3c8168];return _0x20d28a;};'use strict';var _=require(_0x8647('0x0'));var util=require(_0x8647('0x1'));var moment=require(_0x8647('0x2'));var BPromise=require(_0x8647('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8647('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x8647('0x5'));var logger=require(_0x8647('0x6'))('rpc');var config=require(_0x8647('0x7'));var jayson=require(_0x8647('0x8'));var client=jayson['client'][_0x8647('0x9')]({'port':0x232a});config['redis']=_[_0x8647('0xa')](config[_0x8647('0xb')],{'host':_0x8647('0xc'),'port':0x18eb});var socket=require(_0x8647('0xd'))(new Redis(config[_0x8647('0xb')]));require(_0x8647('0xe'))[_0x8647('0xf')](socket);function respondWithRpcPromise(_0xabe8e4,_0x3d783a,_0x439d23){return new BPromise(function(_0x507db6,_0x291ddf){return client[_0x8647('0x10')](_0xabe8e4,_0x439d23)[_0x8647('0x11')](function(_0x429eb6){logger['info'](_0x8647('0x12'),_0x3d783a,_0x8647('0x13'));logger['debug'](_0x8647('0x14'),_0x3d783a,_0x8647('0x13'),JSON[_0x8647('0x15')](_0x429eb6));if(_0x429eb6[_0x8647('0x16')]){if(_0x429eb6['error'][_0x8647('0x17')]===0x1f4){logger[_0x8647('0x16')]('ChatInternalMessage,\x20%s,\x20%s',_0x3d783a,_0x429eb6[_0x8647('0x16')][_0x8647('0x18')]);return _0x291ddf(_0x429eb6[_0x8647('0x16')][_0x8647('0x18')]);}logger[_0x8647('0x16')](_0x8647('0x12'),_0x3d783a,_0x429eb6['error'][_0x8647('0x18')]);return _0x507db6(_0x429eb6[_0x8647('0x16')][_0x8647('0x18')]);}else{logger[_0x8647('0x19')](_0x8647('0x12'),_0x3d783a,_0x8647('0x13'));_0x507db6(_0x429eb6[_0x8647('0x1a')][_0x8647('0x18')]);}})[_0x8647('0x1b')](function(_0x13467d){logger[_0x8647('0x16')](_0x8647('0x12'),_0x3d783a,_0x13467d);_0x291ddf(_0x13467d);});});}
\ No newline at end of file
index eef25e8..d924f16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf3aa=['removeListener','register','length','chatInternalMessage:','./chatInternalMessage.events','update','emit'];(function(_0x500470,_0x592fe9){var _0x4764df=function(_0x5f98b8){while(--_0x5f98b8){_0x500470['push'](_0x500470['shift']());}};_0x4764df(++_0x592fe9);}(_0xf3aa,0x9e));var _0xaf3a=function(_0x1fa381,_0x758c2a){_0x1fa381=_0x1fa381-0x0;var _0x47eefe=_0xf3aa[_0x1fa381];return _0x47eefe;};'use strict';var ChatInternalMessageEvents=require(_0xaf3a('0x0'));var events=['save','remove',_0xaf3a('0x1')];function createListener(_0x403964,_0x536336){return function(_0x59e89){_0x536336[_0xaf3a('0x2')](_0x403964,_0x59e89);};}function removeListener(_0x283c2b,_0x285be8){return function(){ChatInternalMessageEvents[_0xaf3a('0x3')](_0x283c2b,_0x285be8);};}exports[_0xaf3a('0x4')]=function(_0x1c3850){for(var _0x42e2f7=0x0,_0xb6e3fd=events[_0xaf3a('0x5')];_0x42e2f7<_0xb6e3fd;_0x42e2f7++){var _0x3efbe4=events[_0x42e2f7];var _0x43d188=createListener(_0xaf3a('0x6')+_0x3efbe4,_0x1c3850);ChatInternalMessageEvents['on'](_0x3efbe4,_0x43d188);}};
\ No newline at end of file
+var _0x368e=['update','removeListener','length','chatInternalMessage:','./chatInternalMessage.events','save','remove'];(function(_0x17cb63,_0x4c0e90){var _0x4340bc=function(_0x364807){while(--_0x364807){_0x17cb63['push'](_0x17cb63['shift']());}};_0x4340bc(++_0x4c0e90);}(_0x368e,0x1c4));var _0xe368=function(_0x4131da,_0x124783){_0x4131da=_0x4131da-0x0;var _0x583242=_0x368e[_0x4131da];return _0x583242;};'use strict';var ChatInternalMessageEvents=require(_0xe368('0x0'));var events=[_0xe368('0x1'),_0xe368('0x2'),_0xe368('0x3')];function createListener(_0x3a36a5,_0x3d84b8){return function(_0x8fdd18){_0x3d84b8['emit'](_0x3a36a5,_0x8fdd18);};}function removeListener(_0x22f781,_0x574798){return function(){ChatInternalMessageEvents[_0xe368('0x4')](_0x22f781,_0x574798);};}exports['register']=function(_0x46292f){for(var _0x1390d0=0x0,_0xf85b04=events[_0xe368('0x5')];_0x1390d0<_0xf85b04;_0x1390d0++){var _0x2957e4=events[_0x1390d0];var _0x2ac8c0=createListener(_0xe368('0x6')+_0x2957e4,_0x46292f);ChatInternalMessageEvents['on'](_0x2957e4,_0x2ac8c0);}};
\ No newline at end of file
index 6dd5be8..a90a9c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x82ed=['show','post','create','update','/:id','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../config/environment','./chatInternalMessage.controller','get','/describe','isAuthenticated','describe','getUsers'];(function(_0x529f1c,_0x437ed1){var _0x4d57ab=function(_0x39d479){while(--_0x39d479){_0x529f1c['push'](_0x529f1c['shift']());}};_0x4d57ab(++_0x437ed1);}(_0x82ed,0xcf));var _0xd82e=function(_0x2d3629,_0x2aa9c1){_0x2d3629=_0x2d3629-0x0;var _0x399933=_0x82ed[_0x2d3629];return _0x399933;};'use strict';var multer=require(_0xd82e('0x0'));var util=require(_0xd82e('0x1'));var path=require(_0xd82e('0x2'));var timeout=require(_0xd82e('0x3'));var express=require('express');var router=express[_0xd82e('0x4')]();var fs_extra=require(_0xd82e('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xd82e('0x6'));var controller=require(_0xd82e('0x7'));router[_0xd82e('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0xd82e('0x8')](_0xd82e('0x9'),auth[_0xd82e('0xa')](),controller[_0xd82e('0xb')]);router[_0xd82e('0x8')]('/users',auth['isAuthenticated'](),controller[_0xd82e('0xc')]);router[_0xd82e('0x8')]('/:id',auth[_0xd82e('0xa')](),controller[_0xd82e('0xd')]);router[_0xd82e('0xe')]('/',auth[_0xd82e('0xa')](),controller[_0xd82e('0xf')]);router['put']('/:id',controller[_0xd82e('0x10')]);router['delete'](_0xd82e('0x11'),auth[_0xd82e('0xa')](),controller[_0xd82e('0x12')]);module[_0xd82e('0x13')]=router;
\ No newline at end of file
+var _0x48bd=['put','update','delete','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/users','getUsers','/:id','show','create'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x48bd,0xbb));var _0xd48b=function(_0x394144,_0x208c32){_0x394144=_0x394144-0x0;var _0x1b2aec=_0x48bd[_0x394144];return _0x1b2aec;};'use strict';var multer=require(_0xd48b('0x0'));var util=require(_0xd48b('0x1'));var path=require(_0xd48b('0x2'));var timeout=require(_0xd48b('0x3'));var express=require(_0xd48b('0x4'));var router=express[_0xd48b('0x5')]();var fs_extra=require(_0xd48b('0x6'));var auth=require(_0xd48b('0x7'));var interaction=require(_0xd48b('0x8'));var config=require(_0xd48b('0x9'));var controller=require('./chatInternalMessage.controller');router[_0xd48b('0xa')]('/',auth[_0xd48b('0xb')](),controller[_0xd48b('0xc')]);router[_0xd48b('0xa')](_0xd48b('0xd'),auth[_0xd48b('0xb')](),controller[_0xd48b('0xe')]);router[_0xd48b('0xa')](_0xd48b('0xf'),auth[_0xd48b('0xb')](),controller[_0xd48b('0x10')]);router[_0xd48b('0xa')](_0xd48b('0x11'),auth[_0xd48b('0xb')](),controller[_0xd48b('0x12')]);router['post']('/',auth[_0xd48b('0xb')](),controller[_0xd48b('0x13')]);router[_0xd48b('0x14')]('/:id',controller[_0xd48b('0x15')]);router[_0xd48b('0x16')](_0xd48b('0x11'),auth[_0xd48b('0xb')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index ab79919..c44bb20 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x81cb=['DATE','TEXT','sequelize','exports','medium','BOOLEAN','ENUM','out'];(function(_0x2e7325,_0x5cfde7){var _0x3430de=function(_0x5cee86){while(--_0x5cee86){_0x2e7325['push'](_0x2e7325['shift']());}};_0x3430de(++_0x5cfde7);}(_0x81cb,0xaa));var _0xb81c=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x81cb[_0x14add3];return _0x4a174f;};'use strict';var Sequelize=require(_0xb81c('0x0'));module[_0xb81c('0x1')]={'body':{'type':Sequelize['TEXT'](_0xb81c('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0xb81c('0x3')],'defaultValue':![]},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0xb81c('0x4')]('in',_0xb81c('0x5')),'defaultValue':_0xb81c('0x5'),'allowNull':![]},'readAt':{'type':Sequelize[_0xb81c('0x6')]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize[_0xb81c('0x7')]}};
\ No newline at end of file
+var _0x0825=['TEXT','sequelize','exports','BOOLEAN','out','DATE','STRING'];(function(_0x2bc1fe,_0x45da98){var _0x1a47a5=function(_0x2e5053){while(--_0x2e5053){_0x2bc1fe['push'](_0x2bc1fe['shift']());}};_0x1a47a5(++_0x45da98);}(_0x0825,0x1e4));var _0x5082=function(_0x1f39b8,_0x38e661){_0x1f39b8=_0x1f39b8-0x0;var _0x774782=_0x0825[_0x1f39b8];return _0x774782;};'use strict';var Sequelize=require(_0x5082('0x0'));module[_0x5082('0x1')]={'body':{'type':Sequelize['TEXT']('medium'),'allowNull':![]},'read':{'type':Sequelize[_0x5082('0x2')],'defaultValue':![]},'secret':{'type':Sequelize[_0x5082('0x2')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0x5082('0x3')),'defaultValue':_0x5082('0x3'),'allowNull':![]},'readAt':{'type':Sequelize[_0x5082('0x4')]},'providerName':{'type':Sequelize[_0x5082('0x5')]},'providerResponse':{'type':Sequelize[_0x5082('0x6')]}};
\ No newline at end of file
index 974fc06..837c153 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c46=['destroy','index','map','ChatMessage','rawAttributes','fieldName','key','model','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','filters','pick','merge','where','VIRTUAL','name','filter','options','include','findAll','rows','params','keys','includeAll','find','create','body','describe','chat-interactions','accept','read','readAt','YYYY-MM-DD\x20HH:mm:ss','UserId','user','get','ChatInteraction','ChatInteractionId','isNil','read1stAt','format','interaction','[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','SELECT','contact','User','agent','email','internal','manual','interface','SIP/%s','channel','motionChannel','EventManager','acceptmessage','parse','[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','rejectMessage','fullname','event','reject','rejectmessage','formData','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','register','jayson/promise','client','http','request','then','info','ChatMessage,\x20%s,\x20%s','request\x20sent','debug','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','sendStatus','status','json','undefined','limit','count','offset','Content-Range','apply','save'];(function(_0x316413,_0x5b54e7){var _0xf2984e=function(_0x47d42d){while(--_0x47d42d){_0x316413['push'](_0x316413['shift']());}};_0xf2984e(++_0x5b54e7);}(_0x9c46,0x1e1));var _0x69c4=function(_0x10fa8d,_0x4d6063){_0x10fa8d=_0x10fa8d-0x0;var _0x5d49cb=_0x9c46[_0x10fa8d];return _0x5d49cb;};'use strict';var emlformat=require(_0x69c4('0x0'));var rimraf=require(_0x69c4('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x69c4('0x2'));var rp=require('request-promise');var moment=require(_0x69c4('0x3'));var BPromise=require(_0x69c4('0x4'));var Mustache=require(_0x69c4('0x5'));var util=require('util');var path=require(_0x69c4('0x6'));var sox=require(_0x69c4('0x7'));var csv=require(_0x69c4('0x8'));var ejs=require(_0x69c4('0x9'));var fs=require('fs');var fs_extra=require(_0x69c4('0xa'));var _=require('lodash');var squel=require(_0x69c4('0xb'));var crypto=require(_0x69c4('0xc'));var jsforce=require(_0x69c4('0xd'));var deskjs=require(_0x69c4('0xe'));var toCsv=require(_0x69c4('0x8'));var querystring=require(_0x69c4('0xf'));var Papa=require(_0x69c4('0x10'));var Redis=require(_0x69c4('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x69c4('0x12'));var as=require(_0x69c4('0x13'));var hardwareService=require(_0x69c4('0x14'));var logger=require(_0x69c4('0x15'))(_0x69c4('0x16'));var utils=require(_0x69c4('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x69c4('0x18'));var db=require(_0x69c4('0x19'))['db'];config[_0x69c4('0x1a')]=_[_0x69c4('0x1b')](config[_0x69c4('0x1a')],{'host':'localhost','port':0x18eb});var socket=require(_0x69c4('0x1c'))(new Redis(config['redis']));require('./chatMessage.socket')[_0x69c4('0x1d')](socket);var jayson=require(_0x69c4('0x1e'));var client=jayson[_0x69c4('0x1f')][_0x69c4('0x20')]({'port':0x232c});var client9002=jayson['client'][_0x69c4('0x20')]({'port':0x232a});function respondWithRpcPromise(_0x5d7b60,_0x1bbf8d,_0x168760,_0x243630){return new BPromise(function(_0x50fd75,_0x3b5007){var _0x2be021=_0x243630||client;return _0x2be021[_0x69c4('0x21')](_0x5d7b60,_0x168760)[_0x69c4('0x22')](function(_0x36b26e){logger[_0x69c4('0x23')](_0x69c4('0x24'),_0x1bbf8d,_0x69c4('0x25'));logger[_0x69c4('0x26')](_0x69c4('0x27'),_0x1bbf8d,_0x69c4('0x25'),JSON[_0x69c4('0x28')](_0x36b26e));if(_0x36b26e[_0x69c4('0x29')]){if(_0x36b26e[_0x69c4('0x29')][_0x69c4('0x2a')]===0x1f4){logger['error'](_0x69c4('0x24'),_0x1bbf8d,_0x36b26e[_0x69c4('0x29')][_0x69c4('0x2b')]);return _0x3b5007(_0x36b26e[_0x69c4('0x29')][_0x69c4('0x2b')]);}logger[_0x69c4('0x29')]('ChatMessage,\x20%s,\x20%s',_0x1bbf8d,_0x36b26e[_0x69c4('0x29')][_0x69c4('0x2b')]);return _0x50fd75(_0x36b26e[_0x69c4('0x29')][_0x69c4('0x2b')]);}else{logger[_0x69c4('0x23')](_0x69c4('0x24'),_0x1bbf8d,_0x69c4('0x25'));_0x50fd75(_0x36b26e['result'][_0x69c4('0x2b')]);}})[_0x69c4('0x2c')](function(_0x403471){logger[_0x69c4('0x29')]('ChatMessage,\x20%s,\x20%s',_0x1bbf8d,_0x403471);_0x3b5007(_0x403471);});});}function respondWithStatusCode(_0x3967ba,_0x3fa5e4){_0x3fa5e4=_0x3fa5e4||0xcc;return function(_0x4ddd19){if(_0x4ddd19){return _0x3967ba[_0x69c4('0x2d')](_0x3fa5e4);}return _0x3967ba[_0x69c4('0x2e')](_0x3fa5e4)['end']();};}function respondWithResult(_0x5f1b00,_0x42c8f3){_0x42c8f3=_0x42c8f3||0xc8;return function(_0xf4e5f5){if(_0xf4e5f5){return _0x5f1b00[_0x69c4('0x2e')](_0x42c8f3)[_0x69c4('0x2f')](_0xf4e5f5);}};}function respondWithFilteredResult(_0x41a9ec,_0x127fa2){return function(_0x4cb0b3){if(_0x4cb0b3){var _0x38985b=typeof _0x127fa2['offset']===_0x69c4('0x30')&&typeof _0x127fa2[_0x69c4('0x31')]===_0x69c4('0x30');var _0x43be9d=_0x4cb0b3[_0x69c4('0x32')];var _0x404d1e=_0x38985b?0x0:_0x127fa2[_0x69c4('0x33')];var _0x5c1b94=_0x38985b?_0x4cb0b3[_0x69c4('0x32')]:_0x127fa2[_0x69c4('0x33')]+_0x127fa2[_0x69c4('0x31')];var _0x2aaa60;if(_0x5c1b94>=_0x43be9d){_0x5c1b94=_0x43be9d;_0x2aaa60=0xc8;}else{_0x2aaa60=0xce;}_0x41a9ec[_0x69c4('0x2e')](_0x2aaa60);return _0x41a9ec['set'](_0x69c4('0x34'),_0x404d1e+'-'+_0x5c1b94+'/'+_0x43be9d)[_0x69c4('0x2f')](_0x4cb0b3);}return null;};}function patchUpdates(_0x21a5f8){return function(_0x21816d){try{jsonpatch[_0x69c4('0x35')](_0x21816d,_0x21a5f8,!![]);}catch(_0x36f3f6){return BPromise['reject'](_0x36f3f6);}return _0x21816d[_0x69c4('0x36')]();};}function saveUpdates(_0x6bd519,_0x1be93c){return function(_0x3a3d6d){if(_0x3a3d6d){return _0x3a3d6d['update'](_0x6bd519)[_0x69c4('0x22')](function(_0x2dc15b){return _0x2dc15b;});}return null;};}function removeEntity(_0x2d6aa0,_0x4c9dc2){return function(_0x34331d){if(_0x34331d){return _0x34331d[_0x69c4('0x37')]()[_0x69c4('0x22')](function(){_0x2d6aa0['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x4ce007,_0x37c48d){return function(_0x2c5e1d){if(!_0x2c5e1d){_0x4ce007[_0x69c4('0x2d')](0x194);}return _0x2c5e1d;};}function handleError(_0x56ff53,_0xf9b6b7){_0xf9b6b7=_0xf9b6b7||0x1f4;return function(_0xe2185d){logger[_0x69c4('0x29')](_0xe2185d['stack']);if(_0xe2185d['name']){delete _0xe2185d['name'];}_0x56ff53[_0x69c4('0x2e')](_0xf9b6b7)['send'](_0xe2185d);};}exports[_0x69c4('0x38')]=function(_0x1b3626,_0x54ad62){var _0x692e77={},_0xdc628f={},_0x14043f={'count':0x0,'rows':[]};var _0x473cd1=_[_0x69c4('0x39')](db[_0x69c4('0x3a')][_0x69c4('0x3b')],function(_0x5d8e13){return{'name':_0x5d8e13[_0x69c4('0x3c')],'type':_0x5d8e13['type'][_0x69c4('0x3d')]};});_0xdc628f[_0x69c4('0x3e')]=_[_0x69c4('0x39')](_0x473cd1,'name');_0xdc628f[_0x69c4('0x3f')]=_['keys'](_0x1b3626['query']);_0xdc628f['filters']=_[_0x69c4('0x40')](_0xdc628f[_0x69c4('0x3e')],_0xdc628f['query']);_0x692e77[_0x69c4('0x41')]=_[_0x69c4('0x40')](_0xdc628f[_0x69c4('0x3e')],qs[_0x69c4('0x42')](_0x1b3626[_0x69c4('0x3f')][_0x69c4('0x42')]));_0x692e77[_0x69c4('0x41')]=_0x692e77['attributes'][_0x69c4('0x43')]?_0x692e77[_0x69c4('0x41')]:_0xdc628f[_0x69c4('0x3e')];if(!_0x1b3626[_0x69c4('0x3f')][_0x69c4('0x44')](_0x69c4('0x45'))){_0x692e77['limit']=qs[_0x69c4('0x31')](_0x1b3626[_0x69c4('0x3f')][_0x69c4('0x31')]);_0x692e77[_0x69c4('0x33')]=qs[_0x69c4('0x33')](_0x1b3626[_0x69c4('0x3f')][_0x69c4('0x33')]);}_0x692e77['order']=qs[_0x69c4('0x46')](_0x1b3626[_0x69c4('0x3f')]['sort']);_0x692e77['where']=qs[_0x69c4('0x47')](_[_0x69c4('0x48')](_0x1b3626['query'],_0xdc628f[_0x69c4('0x47')]),_0x473cd1);if(_0x1b3626['query']['filter']){_0x692e77['where']=_[_0x69c4('0x49')](_0x692e77[_0x69c4('0x4a')],{'$or':_['map'](_0x473cd1,function(_0x790ba6){if(_0x790ba6['type']!==_0x69c4('0x4b')){var _0x404254={};_0x404254[_0x790ba6[_0x69c4('0x4c')]]={'$like':'%'+_0x1b3626[_0x69c4('0x3f')][_0x69c4('0x4d')]+'%'};return _0x404254;}})});}_0x692e77=_[_0x69c4('0x49')]({},_0x692e77,_0x1b3626[_0x69c4('0x4e')]);var _0x54797d={'where':_0x692e77[_0x69c4('0x4a')]};return db[_0x69c4('0x3a')][_0x69c4('0x32')](_0x54797d)[_0x69c4('0x22')](function(_0x558da3){_0x14043f[_0x69c4('0x32')]=_0x558da3;if(_0x1b3626[_0x69c4('0x3f')]['includeAll']){_0x692e77[_0x69c4('0x4f')]=[{'all':!![]}];}return db[_0x69c4('0x3a')][_0x69c4('0x50')](_0x692e77);})[_0x69c4('0x22')](function(_0x976831){_0x14043f[_0x69c4('0x51')]=_0x976831;return _0x14043f;})['then'](respondWithFilteredResult(_0x54ad62,_0x692e77))['catch'](handleError(_0x54ad62,null));};exports['show']=function(_0x43f033,_0xd5c7f7){var _0x429ac1={'raw':!![],'where':{'id':_0x43f033[_0x69c4('0x52')]['id']}},_0x3beca1={};_0x3beca1[_0x69c4('0x3e')]=_['keys'](db['ChatMessage'][_0x69c4('0x3b')]);_0x3beca1[_0x69c4('0x3f')]=_[_0x69c4('0x53')](_0x43f033[_0x69c4('0x3f')]);_0x3beca1['filters']=_[_0x69c4('0x40')](_0x3beca1[_0x69c4('0x3e')],_0x3beca1['query']);_0x429ac1[_0x69c4('0x41')]=_['intersection'](_0x3beca1[_0x69c4('0x3e')],qs[_0x69c4('0x42')](_0x43f033['query'][_0x69c4('0x42')]));_0x429ac1['attributes']=_0x429ac1[_0x69c4('0x41')][_0x69c4('0x43')]?_0x429ac1[_0x69c4('0x41')]:_0x3beca1['model'];if(_0x43f033[_0x69c4('0x3f')][_0x69c4('0x54')]){_0x429ac1[_0x69c4('0x4f')]=[{'all':!![]}];}_0x429ac1=_[_0x69c4('0x49')]({},_0x429ac1,_0x43f033[_0x69c4('0x4e')]);return db['ChatMessage'][_0x69c4('0x55')](_0x429ac1)['then'](handleEntityNotFound(_0xd5c7f7,null))['then'](respondWithResult(_0xd5c7f7,null))[_0x69c4('0x2c')](handleError(_0xd5c7f7,null));};exports[_0x69c4('0x56')]=function(_0x15610a,_0x1e14b2){return db[_0x69c4('0x3a')][_0x69c4('0x56')](_0x15610a[_0x69c4('0x57')],{})['then'](respondWithResult(_0x1e14b2,0xc9))['catch'](handleError(_0x1e14b2,null));};exports['update']=function(_0x4293ea,_0x18c907){if(_0x4293ea[_0x69c4('0x57')]['id']){delete _0x4293ea[_0x69c4('0x57')]['id'];}return db[_0x69c4('0x3a')][_0x69c4('0x55')]({'where':{'id':_0x4293ea[_0x69c4('0x52')]['id']}})[_0x69c4('0x22')](handleEntityNotFound(_0x18c907,null))[_0x69c4('0x22')](saveUpdates(_0x4293ea[_0x69c4('0x57')],null))[_0x69c4('0x22')](respondWithResult(_0x18c907,null))['catch'](handleError(_0x18c907,null));};exports[_0x69c4('0x37')]=function(_0x5ea9ca,_0x512722){return db[_0x69c4('0x3a')][_0x69c4('0x55')]({'where':{'id':_0x5ea9ca[_0x69c4('0x52')]['id']}})[_0x69c4('0x22')](handleEntityNotFound(_0x512722,null))[_0x69c4('0x22')](removeEntity(_0x512722,null))[_0x69c4('0x2c')](handleError(_0x512722,null));};exports[_0x69c4('0x58')]=function(_0x27c0b6,_0x2a2460){return db[_0x69c4('0x3a')]['describe']()[_0x69c4('0x22')](respondWithResult(_0x2a2460,null))['catch'](handleError(_0x2a2460,null));};var interaction_log=require(_0x69c4('0x15'))(_0x69c4('0x59'));exports[_0x69c4('0x5a')]=function(_0x51c474,_0x302969,_0x4a1768){var _0x5dfd7f={'agent':{},'channel':'chat'};if(_0x51c474['body']['id']){delete _0x51c474[_0x69c4('0x57')]['id'];}_0x51c474[_0x69c4('0x57')][_0x69c4('0x5b')]=!![];_0x51c474[_0x69c4('0x57')][_0x69c4('0x5c')]=moment()['format'](_0x69c4('0x5d'));_0x51c474[_0x69c4('0x57')][_0x69c4('0x5e')]=_0x51c474[_0x69c4('0x57')][_0x69c4('0x5e')]||_0x51c474[_0x69c4('0x5f')]['id'];_0x5dfd7f['agent']['id']=_0x51c474['body'][_0x69c4('0x5e')];return db[_0x69c4('0x3a')][_0x69c4('0x55')]({'where':{'id':_0x51c474[_0x69c4('0x52')]['id'],'UserId':null}})[_0x69c4('0x22')](handleEntityNotFound(_0x302969,null))[_0x69c4('0x22')](saveUpdates(_0x51c474['body'],null))[_0x69c4('0x22')](function(_0x3264b7){if(_0x3264b7){_0x5dfd7f[_0x69c4('0x2b')]=_0x3264b7[_0x69c4('0x60')]({'plain':!![]});return db[_0x69c4('0x61')][_0x69c4('0x55')]({'where':{'id':_0x3264b7[_0x69c4('0x62')]}});}return null;})['then'](handleEntityNotFound(_0x302969,null))[_0x69c4('0x22')](function(_0x5dae80){if(_0x5dae80){return _0x5dae80['update']({'UserId':_0x51c474['body']['UserId'],'read1stAt':_[_0x69c4('0x63')](_0x5dae80[_0x69c4('0x64')])?moment()[_0x69c4('0x65')](_0x69c4('0x5d')):undefined});}return null;})[_0x69c4('0x22')](function(_0xb8d6f1){if(_0xb8d6f1){_0x5dfd7f[_0x69c4('0x66')]=_0xb8d6f1['get']({'plain':!![]});interaction_log[_0x69c4('0x23')](_0x69c4('0x67'),_0x51c474[_0x69c4('0x5f')]['id'],_0x51c474['user'][_0x69c4('0x4c')],_0x51c474[_0x69c4('0x5f')][_0x69c4('0x68')],_0x5dfd7f['interaction']['id'],_0x51c474[_0x69c4('0x57')]?JSON['stringify'](_0x51c474[_0x69c4('0x57')]):_0x69c4('0x69'));return respondWithRpcPromise(_0x69c4('0x6a'),_0x69c4('0x6b'),_0x5dfd7f);}return null;})['then'](function(_0x36d14a){var _0x136787=_0x69c4('0x6c')+_0x36d14a[_0x69c4('0x2b')][_0x69c4('0x6d')];return db[_0x69c4('0x6e')]['query'](_0x136787,{'type':db[_0x69c4('0x6f')][_0x69c4('0x70')][_0x69c4('0x71')],'raw':!![]})[_0x69c4('0x22')](function(_0x27abaa){return _0x27abaa;});})[_0x69c4('0x22')](function(_0x58b3bd){if(_0x58b3bd){_0x5dfd7f['message'][_0x69c4('0x72')]=_0x58b3bd[0x0];if(!_0x51c474[_0x69c4('0x57')][_0x69c4('0x5e')])return;return db[_0x69c4('0x73')][_0x69c4('0x55')]({'where':{'id':_0x51c474[_0x69c4('0x57')][_0x69c4('0x5e')],'role':_0x69c4('0x74')},'attributes':['id',_0x69c4('0x4c'),'fullname',_0x69c4('0x75'),_0x69c4('0x76')],'raw':!![]});}return null;})['then'](function(_0x4ece6b){if(!_0x4ece6b)return null;_0x5dfd7f[_0x69c4('0x2b')][_0x69c4('0x74')]=_0x4ece6b;return _0x5dfd7f;})[_0x69c4('0x22')](function(_0x1516bf){if(_0x1516bf){if(_0x51c474[_0x69c4('0x57')][_0x69c4('0x77')]){_0x5dfd7f[_0x69c4('0x2b')][_0x69c4('0x78')]=util[_0x69c4('0x65')](_0x69c4('0x79'),_0x51c474['user'][_0x69c4('0x4c')]);_0x5dfd7f[_0x69c4('0x2b')]['channel']=_0x5dfd7f[_0x69c4('0x7a')];_0x5dfd7f['message'][_0x69c4('0x7b')]=_0x5dfd7f[_0x69c4('0x7a')];_0x5dfd7f['message']['event']=_0x69c4('0x5a');return respondWithRpcPromise(_0x69c4('0x7c'),_0x69c4('0x7c'),{'event':_0x69c4('0x7d'),'message':_[_0x69c4('0x49')](_0x5dfd7f[_0x69c4('0x2b')],JSON[_0x69c4('0x7e')](_0x5dfd7f['interaction']['formData']))},client9002)[_0x69c4('0x22')](function(){return _0x5dfd7f;});}return _0x5dfd7f;}return null;})[_0x69c4('0x22')](respondWithResult(_0x302969,null))['catch'](handleError(_0x302969,null));};var interaction_log=require('../../config/logger')(_0x69c4('0x59'));exports['reject']=function(_0x537418,_0x6755c9,_0x32c9bb){var _0xd7917a={'agent':{},'channel':'chat'};if(_0x537418['body']['id']){delete _0x537418['body']['id'];}_0x537418[_0x69c4('0x57')][_0x69c4('0x5e')]=_0x537418[_0x69c4('0x57')][_0x69c4('0x5e')]||_0x537418[_0x69c4('0x5f')]['id'];_0xd7917a[_0x69c4('0x74')]['id']=_0x537418[_0x69c4('0x57')][_0x69c4('0x5e')];return db[_0x69c4('0x3a')][_0x69c4('0x55')]({'where':{'id':_0x537418['params']['id'],'UserId':null}})[_0x69c4('0x22')](handleEntityNotFound(_0x6755c9,null))[_0x69c4('0x22')](function(_0x40bda6){if(_0x40bda6){_0xd7917a['message']=_0x40bda6[_0x69c4('0x60')]({'plain':!![]});return db[_0x69c4('0x61')][_0x69c4('0x55')]({'where':{'id':_0x40bda6[_0x69c4('0x62')]}});}return null;})[_0x69c4('0x22')](handleEntityNotFound(_0x6755c9,null))[_0x69c4('0x22')](function(_0x3f62ee){if(_0x3f62ee){_0xd7917a[_0x69c4('0x66')]=_0x3f62ee['get']({'plain':!![]});interaction_log[_0x69c4('0x23')](_0x69c4('0x7f'),_0x537418['user']['id'],_0x537418[_0x69c4('0x5f')][_0x69c4('0x4c')],_0x537418[_0x69c4('0x5f')][_0x69c4('0x68')],_0xd7917a[_0x69c4('0x66')]['id'],_0x537418[_0x69c4('0x57')]?JSON[_0x69c4('0x28')](_0x537418['body']):'null');return respondWithRpcPromise('RejectMessage',_0x69c4('0x80'),_0xd7917a);}return null;})['then'](function(_0x3c5bfb){var _0x204183='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x3c5bfb[_0x69c4('0x2b')][_0x69c4('0x6d')];return db[_0x69c4('0x6e')][_0x69c4('0x3f')](_0x204183,{'type':db[_0x69c4('0x6f')][_0x69c4('0x70')][_0x69c4('0x71')],'raw':!![]})['then'](function(_0x1c153f){return _0x1c153f;});})[_0x69c4('0x22')](function(_0x277be8){if(_0x277be8){_0xd7917a[_0x69c4('0x2b')][_0x69c4('0x72')]=_0x277be8[0x0];if(!_0x537418['body'][_0x69c4('0x5e')])return;return db[_0x69c4('0x73')]['find']({'where':{'id':_0x537418['body'][_0x69c4('0x5e')],'role':_0x69c4('0x74')},'attributes':['id',_0x69c4('0x4c'),_0x69c4('0x81'),_0x69c4('0x75'),_0x69c4('0x76')],'raw':!![]});}return null;})['then'](function(_0x5129d1){if(!_0x5129d1)return null;_0xd7917a['message'][_0x69c4('0x74')]=_0x5129d1;return _0xd7917a;})['then'](function(_0xce400a){if(_0xce400a){_0xce400a[_0x69c4('0x2b')][_0x69c4('0x78')]=util[_0x69c4('0x65')](_0x69c4('0x79'),_0x537418[_0x69c4('0x5f')][_0x69c4('0x4c')]);_0xce400a[_0x69c4('0x2b')][_0x69c4('0x7a')]=_0xd7917a['channel'];_0xce400a[_0x69c4('0x2b')][_0x69c4('0x7b')]=_0xd7917a['channel'];_0xce400a[_0x69c4('0x2b')][_0x69c4('0x82')]=_0x69c4('0x83');respondWithRpcPromise(_0x69c4('0x7c'),'EventManager',{'event':_0x69c4('0x84'),'message':_[_0x69c4('0x49')](_0xd7917a[_0x69c4('0x2b')],JSON[_0x69c4('0x7e')](_0xd7917a[_0x69c4('0x66')][_0x69c4('0x85')]))},client9002);return _0xd7917a;}return null;})[_0x69c4('0x22')](respondWithResult(_0x6755c9,null))[_0x69c4('0x2c')](handleError(_0x6755c9,null));};
\ No newline at end of file
+var _0x6a47=['sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./chatMessage.socket','jayson/promise','client','http','request','then','ChatMessage,\x20%s,\x20%s','request\x20sent','debug','ChatMessage,\x20%s,\x20%s,\x20%s','code','error','message','info','result','catch','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','destroy','name','send','index','ChatMessage','rawAttributes','fieldName','type','key','map','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','filter','findAll','rows','show','includeAll','find','create','body','params','describe','chat-interactions','accept','chat','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','ChatInteractionId','isNil','read1stAt','interaction','[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','stringify','null','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','Sequelize','QueryTypes','contact','User','fullname','email','internal','manual','interface','SIP/%s','channel','motionChannel','event','EventManager','acceptmessage','ChatInteraction','role','rejectMessage','ContactId','rejectmessage','parse','formData','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path'];(function(_0x4c2257,_0x12f07c){var _0x2a4960=function(_0xe6dcac){while(--_0xe6dcac){_0x4c2257['push'](_0x4c2257['shift']());}};_0x2a4960(++_0x12f07c);}(_0x6a47,0x84));var _0x76a4=function(_0x46698a,_0x8de1e4){_0x46698a=_0x46698a-0x0;var _0x356db0=_0x6a47[_0x46698a];return _0x356db0;};'use strict';var emlformat=require(_0x76a4('0x0'));var rimraf=require(_0x76a4('0x1'));var zipdir=require(_0x76a4('0x2'));var jsonpatch=require(_0x76a4('0x3'));var rp=require(_0x76a4('0x4'));var moment=require(_0x76a4('0x5'));var BPromise=require(_0x76a4('0x6'));var Mustache=require('mustache');var util=require(_0x76a4('0x7'));var path=require(_0x76a4('0x8'));var sox=require(_0x76a4('0x9'));var csv=require(_0x76a4('0xa'));var ejs=require(_0x76a4('0xb'));var fs=require('fs');var fs_extra=require(_0x76a4('0xc'));var _=require('lodash');var squel=require(_0x76a4('0xd'));var crypto=require(_0x76a4('0xe'));var jsforce=require(_0x76a4('0xf'));var deskjs=require(_0x76a4('0x10'));var toCsv=require('to-csv');var querystring=require(_0x76a4('0x11'));var Papa=require(_0x76a4('0x12'));var Redis=require(_0x76a4('0x13'));var authService=require(_0x76a4('0x14'));var qs=require(_0x76a4('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x76a4('0x16'));var logger=require(_0x76a4('0x17'))(_0x76a4('0x18'));var utils=require(_0x76a4('0x19'));var config=require(_0x76a4('0x1a'));var licenseUtil=require(_0x76a4('0x1b'));var db=require(_0x76a4('0x1c'))['db'];config[_0x76a4('0x1d')]=_[_0x76a4('0x1e')](config['redis'],{'host':_0x76a4('0x1f'),'port':0x18eb});var socket=require(_0x76a4('0x20'))(new Redis(config[_0x76a4('0x1d')]));require(_0x76a4('0x21'))['register'](socket);var jayson=require(_0x76a4('0x22'));var client=jayson[_0x76a4('0x23')][_0x76a4('0x24')]({'port':0x232c});var client9002=jayson[_0x76a4('0x23')][_0x76a4('0x24')]({'port':0x232a});function respondWithRpcPromise(_0x2cfed3,_0x25e50c,_0x11b558,_0xec4933){return new BPromise(function(_0xa964aa,_0x28bf86){var _0x1cfc51=_0xec4933||client;return _0x1cfc51[_0x76a4('0x25')](_0x2cfed3,_0x11b558)[_0x76a4('0x26')](function(_0x7300e9){logger['info'](_0x76a4('0x27'),_0x25e50c,_0x76a4('0x28'));logger[_0x76a4('0x29')](_0x76a4('0x2a'),_0x25e50c,_0x76a4('0x28'),JSON['stringify'](_0x7300e9));if(_0x7300e9['error']){if(_0x7300e9['error'][_0x76a4('0x2b')]===0x1f4){logger[_0x76a4('0x2c')](_0x76a4('0x27'),_0x25e50c,_0x7300e9[_0x76a4('0x2c')][_0x76a4('0x2d')]);return _0x28bf86(_0x7300e9[_0x76a4('0x2c')]['message']);}logger[_0x76a4('0x2c')](_0x76a4('0x27'),_0x25e50c,_0x7300e9[_0x76a4('0x2c')][_0x76a4('0x2d')]);return _0xa964aa(_0x7300e9['error'][_0x76a4('0x2d')]);}else{logger[_0x76a4('0x2e')]('ChatMessage,\x20%s,\x20%s',_0x25e50c,_0x76a4('0x28'));_0xa964aa(_0x7300e9[_0x76a4('0x2f')][_0x76a4('0x2d')]);}})[_0x76a4('0x30')](function(_0xe11f8f){logger[_0x76a4('0x2c')](_0x76a4('0x27'),_0x25e50c,_0xe11f8f);_0x28bf86(_0xe11f8f);});});}function respondWithStatusCode(_0x499928,_0x1e1af2){_0x1e1af2=_0x1e1af2||0xcc;return function(_0x1ce821){if(_0x1ce821){return _0x499928[_0x76a4('0x31')](_0x1e1af2);}return _0x499928[_0x76a4('0x32')](_0x1e1af2)[_0x76a4('0x33')]();};}function respondWithResult(_0xc4a263,_0x35308e){_0x35308e=_0x35308e||0xc8;return function(_0x1217d5){if(_0x1217d5){return _0xc4a263[_0x76a4('0x32')](_0x35308e)['json'](_0x1217d5);}};}function respondWithFilteredResult(_0x59c759,_0x16f343){return function(_0x1d36dc){if(_0x1d36dc){var _0x4c0230=typeof _0x16f343[_0x76a4('0x34')]===_0x76a4('0x35')&&typeof _0x16f343[_0x76a4('0x36')]===_0x76a4('0x35');var _0x5425ff=_0x1d36dc[_0x76a4('0x37')];var _0x334427=_0x4c0230?0x0:_0x16f343[_0x76a4('0x34')];var _0x1c7361=_0x4c0230?_0x1d36dc[_0x76a4('0x37')]:_0x16f343[_0x76a4('0x34')]+_0x16f343[_0x76a4('0x36')];var _0x357a7d;if(_0x1c7361>=_0x5425ff){_0x1c7361=_0x5425ff;_0x357a7d=0xc8;}else{_0x357a7d=0xce;}_0x59c759['status'](_0x357a7d);return _0x59c759[_0x76a4('0x38')](_0x76a4('0x39'),_0x334427+'-'+_0x1c7361+'/'+_0x5425ff)[_0x76a4('0x3a')](_0x1d36dc);}return null;};}function patchUpdates(_0x3f3d9f){return function(_0x4c2971){try{jsonpatch[_0x76a4('0x3b')](_0x4c2971,_0x3f3d9f,!![]);}catch(_0x4dd10d){return BPromise[_0x76a4('0x3c')](_0x4dd10d);}return _0x4c2971[_0x76a4('0x3d')]();};}function saveUpdates(_0x507042,_0x4e0826){return function(_0x160e54){if(_0x160e54){return _0x160e54[_0x76a4('0x3e')](_0x507042)[_0x76a4('0x26')](function(_0x514ed1){return _0x514ed1;});}return null;};}function removeEntity(_0xaddd0f,_0x3b3d70){return function(_0x5844f2){if(_0x5844f2){return _0x5844f2[_0x76a4('0x3f')]()[_0x76a4('0x26')](function(){_0xaddd0f[_0x76a4('0x32')](0xcc)[_0x76a4('0x33')]();});}};}function handleEntityNotFound(_0x40db80,_0x78d815){return function(_0x513a77){if(!_0x513a77){_0x40db80[_0x76a4('0x31')](0x194);}return _0x513a77;};}function handleError(_0x4a9c7c,_0x375593){_0x375593=_0x375593||0x1f4;return function(_0xf39fc){logger['error'](_0xf39fc['stack']);if(_0xf39fc[_0x76a4('0x40')]){delete _0xf39fc[_0x76a4('0x40')];}_0x4a9c7c['status'](_0x375593)[_0x76a4('0x41')](_0xf39fc);};}exports[_0x76a4('0x42')]=function(_0x209673,_0x284c82){var _0x48fbd0={},_0x54d819={},_0x3916c6={'count':0x0,'rows':[]};var _0x2789db=_['map'](db[_0x76a4('0x43')][_0x76a4('0x44')],function(_0x4d39f9){return{'name':_0x4d39f9[_0x76a4('0x45')],'type':_0x4d39f9[_0x76a4('0x46')][_0x76a4('0x47')]};});_0x54d819['model']=_[_0x76a4('0x48')](_0x2789db,_0x76a4('0x40'));_0x54d819[_0x76a4('0x49')]=_[_0x76a4('0x4a')](_0x209673[_0x76a4('0x49')]);_0x54d819[_0x76a4('0x4b')]=_[_0x76a4('0x4c')](_0x54d819[_0x76a4('0x4d')],_0x54d819[_0x76a4('0x49')]);_0x48fbd0[_0x76a4('0x4e')]=_[_0x76a4('0x4c')](_0x54d819[_0x76a4('0x4d')],qs[_0x76a4('0x4f')](_0x209673['query'][_0x76a4('0x4f')]));_0x48fbd0[_0x76a4('0x4e')]=_0x48fbd0[_0x76a4('0x4e')][_0x76a4('0x50')]?_0x48fbd0[_0x76a4('0x4e')]:_0x54d819['model'];if(!_0x209673[_0x76a4('0x49')][_0x76a4('0x51')](_0x76a4('0x52'))){_0x48fbd0[_0x76a4('0x36')]=qs[_0x76a4('0x36')](_0x209673['query'][_0x76a4('0x36')]);_0x48fbd0[_0x76a4('0x34')]=qs[_0x76a4('0x34')](_0x209673[_0x76a4('0x49')]['offset']);}_0x48fbd0[_0x76a4('0x53')]=qs[_0x76a4('0x54')](_0x209673['query'][_0x76a4('0x54')]);_0x48fbd0[_0x76a4('0x55')]=qs[_0x76a4('0x4b')](_[_0x76a4('0x56')](_0x209673[_0x76a4('0x49')],_0x54d819['filters']),_0x2789db);if(_0x209673[_0x76a4('0x49')]['filter']){_0x48fbd0[_0x76a4('0x55')]=_[_0x76a4('0x57')](_0x48fbd0[_0x76a4('0x55')],{'$or':_['map'](_0x2789db,function(_0x270ffd){if(_0x270ffd[_0x76a4('0x46')]!=='VIRTUAL'){var _0x303ebb={};_0x303ebb[_0x270ffd[_0x76a4('0x40')]]={'$like':'%'+_0x209673[_0x76a4('0x49')][_0x76a4('0x58')]+'%'};return _0x303ebb;}})});}_0x48fbd0=_[_0x76a4('0x57')]({},_0x48fbd0,_0x209673['options']);var _0x21b7bf={'where':_0x48fbd0[_0x76a4('0x55')]};return db[_0x76a4('0x43')][_0x76a4('0x37')](_0x21b7bf)[_0x76a4('0x26')](function(_0x40abce){_0x3916c6[_0x76a4('0x37')]=_0x40abce;if(_0x209673[_0x76a4('0x49')]['includeAll']){_0x48fbd0['include']=[{'all':!![]}];}return db['ChatMessage'][_0x76a4('0x59')](_0x48fbd0);})[_0x76a4('0x26')](function(_0x52c26b){_0x3916c6[_0x76a4('0x5a')]=_0x52c26b;return _0x3916c6;})[_0x76a4('0x26')](respondWithFilteredResult(_0x284c82,_0x48fbd0))[_0x76a4('0x30')](handleError(_0x284c82,null));};exports[_0x76a4('0x5b')]=function(_0x134bfe,_0x245d49){var _0x49440e={'raw':!![],'where':{'id':_0x134bfe['params']['id']}},_0x561900={};_0x561900[_0x76a4('0x4d')]=_['keys'](db[_0x76a4('0x43')][_0x76a4('0x44')]);_0x561900[_0x76a4('0x49')]=_['keys'](_0x134bfe[_0x76a4('0x49')]);_0x561900[_0x76a4('0x4b')]=_[_0x76a4('0x4c')](_0x561900['model'],_0x561900['query']);_0x49440e[_0x76a4('0x4e')]=_[_0x76a4('0x4c')](_0x561900[_0x76a4('0x4d')],qs[_0x76a4('0x4f')](_0x134bfe[_0x76a4('0x49')]['fields']));_0x49440e[_0x76a4('0x4e')]=_0x49440e[_0x76a4('0x4e')][_0x76a4('0x50')]?_0x49440e[_0x76a4('0x4e')]:_0x561900['model'];if(_0x134bfe[_0x76a4('0x49')][_0x76a4('0x5c')]){_0x49440e['include']=[{'all':!![]}];}_0x49440e=_[_0x76a4('0x57')]({},_0x49440e,_0x134bfe['options']);return db[_0x76a4('0x43')][_0x76a4('0x5d')](_0x49440e)[_0x76a4('0x26')](handleEntityNotFound(_0x245d49,null))[_0x76a4('0x26')](respondWithResult(_0x245d49,null))[_0x76a4('0x30')](handleError(_0x245d49,null));};exports['create']=function(_0x1b7aa4,_0x23ce89){return db[_0x76a4('0x43')][_0x76a4('0x5e')](_0x1b7aa4[_0x76a4('0x5f')],{})[_0x76a4('0x26')](respondWithResult(_0x23ce89,0xc9))[_0x76a4('0x30')](handleError(_0x23ce89,null));};exports[_0x76a4('0x3e')]=function(_0x5df5d5,_0x46eb51){if(_0x5df5d5['body']['id']){delete _0x5df5d5[_0x76a4('0x5f')]['id'];}return db['ChatMessage'][_0x76a4('0x5d')]({'where':{'id':_0x5df5d5[_0x76a4('0x60')]['id']}})[_0x76a4('0x26')](handleEntityNotFound(_0x46eb51,null))[_0x76a4('0x26')](saveUpdates(_0x5df5d5['body'],null))['then'](respondWithResult(_0x46eb51,null))[_0x76a4('0x30')](handleError(_0x46eb51,null));};exports[_0x76a4('0x3f')]=function(_0x5e0aad,_0x1bbb46){return db[_0x76a4('0x43')][_0x76a4('0x5d')]({'where':{'id':_0x5e0aad[_0x76a4('0x60')]['id']}})[_0x76a4('0x26')](handleEntityNotFound(_0x1bbb46,null))[_0x76a4('0x26')](removeEntity(_0x1bbb46,null))[_0x76a4('0x30')](handleError(_0x1bbb46,null));};exports[_0x76a4('0x61')]=function(_0x4fde7f,_0x3b2f1d){return db[_0x76a4('0x43')][_0x76a4('0x61')]()['then'](respondWithResult(_0x3b2f1d,null))[_0x76a4('0x30')](handleError(_0x3b2f1d,null));};var interaction_log=require('../../config/logger')(_0x76a4('0x62'));exports[_0x76a4('0x63')]=function(_0x38f89b,_0xe12040,_0x5b9fb7){var _0x17bb2c={'agent':{},'channel':_0x76a4('0x64')};if(_0x38f89b[_0x76a4('0x5f')]['id']){delete _0x38f89b['body']['id'];}_0x38f89b[_0x76a4('0x5f')][_0x76a4('0x65')]=!![];_0x38f89b['body'][_0x76a4('0x66')]=moment()[_0x76a4('0x67')](_0x76a4('0x68'));_0x38f89b[_0x76a4('0x5f')][_0x76a4('0x69')]=_0x38f89b['body']['UserId']||_0x38f89b[_0x76a4('0x6a')]['id'];_0x17bb2c[_0x76a4('0x6b')]['id']=_0x38f89b['body'][_0x76a4('0x69')];return db[_0x76a4('0x43')][_0x76a4('0x5d')]({'where':{'id':_0x38f89b[_0x76a4('0x60')]['id'],'UserId':null}})[_0x76a4('0x26')](handleEntityNotFound(_0xe12040,null))[_0x76a4('0x26')](saveUpdates(_0x38f89b['body'],null))[_0x76a4('0x26')](function(_0x35baba){if(_0x35baba){_0x17bb2c[_0x76a4('0x2d')]=_0x35baba[_0x76a4('0x6c')]({'plain':!![]});return db['ChatInteraction'][_0x76a4('0x5d')]({'where':{'id':_0x35baba[_0x76a4('0x6d')]}});}return null;})[_0x76a4('0x26')](handleEntityNotFound(_0xe12040,null))[_0x76a4('0x26')](function(_0x40798a){if(_0x40798a){return _0x40798a['update']({'UserId':_0x38f89b['body']['UserId'],'read1stAt':_[_0x76a4('0x6e')](_0x40798a[_0x76a4('0x6f')])?moment()[_0x76a4('0x67')](_0x76a4('0x68')):undefined});}return null;})['then'](function(_0x41e4ef){if(_0x41e4ef){_0x17bb2c[_0x76a4('0x70')]=_0x41e4ef[_0x76a4('0x6c')]({'plain':!![]});interaction_log['info'](_0x76a4('0x71'),_0x38f89b[_0x76a4('0x6a')]['id'],_0x38f89b[_0x76a4('0x6a')]['name'],_0x38f89b[_0x76a4('0x6a')]['role'],_0x17bb2c['interaction']['id'],_0x38f89b[_0x76a4('0x5f')]?JSON[_0x76a4('0x72')](_0x38f89b[_0x76a4('0x5f')]):_0x76a4('0x73'));return respondWithRpcPromise('AcceptMessage',_0x76a4('0x74'),_0x17bb2c);}return null;})['then'](function(_0x3e8b07){var _0x3b3556=_0x76a4('0x75')+_0x3e8b07[_0x76a4('0x2d')]['ContactId'];return db[_0x76a4('0x76')]['query'](_0x3b3556,{'type':db[_0x76a4('0x77')][_0x76a4('0x78')]['SELECT'],'raw':!![]})['then'](function(_0x46c4b1){return _0x46c4b1;});})[_0x76a4('0x26')](function(_0x520969){if(_0x520969){_0x17bb2c[_0x76a4('0x2d')][_0x76a4('0x79')]=_0x520969[0x0];if(!_0x38f89b['body'][_0x76a4('0x69')])return;return db[_0x76a4('0x7a')][_0x76a4('0x5d')]({'where':{'id':_0x38f89b['body'][_0x76a4('0x69')],'role':_0x76a4('0x6b')},'attributes':['id',_0x76a4('0x40'),_0x76a4('0x7b'),_0x76a4('0x7c'),_0x76a4('0x7d')],'raw':!![]});}return null;})[_0x76a4('0x26')](function(_0x5693d1){if(!_0x5693d1)return null;_0x17bb2c[_0x76a4('0x2d')][_0x76a4('0x6b')]=_0x5693d1;return _0x17bb2c;})['then'](function(_0x37ed6a){if(_0x37ed6a){if(_0x38f89b[_0x76a4('0x5f')][_0x76a4('0x7e')]){_0x17bb2c[_0x76a4('0x2d')][_0x76a4('0x7f')]=util['format'](_0x76a4('0x80'),_0x38f89b[_0x76a4('0x6a')]['name']);_0x17bb2c['message'][_0x76a4('0x81')]=_0x17bb2c[_0x76a4('0x81')];_0x17bb2c[_0x76a4('0x2d')][_0x76a4('0x82')]=_0x17bb2c[_0x76a4('0x81')];_0x17bb2c[_0x76a4('0x2d')][_0x76a4('0x83')]=_0x76a4('0x63');return respondWithRpcPromise(_0x76a4('0x84'),_0x76a4('0x84'),{'event':_0x76a4('0x85'),'message':_['merge'](_0x17bb2c[_0x76a4('0x2d')],JSON['parse'](_0x17bb2c['interaction']['formData']))},client9002)['then'](function(){return _0x17bb2c;});}return _0x17bb2c;}return null;})['then'](respondWithResult(_0xe12040,null))[_0x76a4('0x30')](handleError(_0xe12040,null));};var interaction_log=require(_0x76a4('0x17'))(_0x76a4('0x62'));exports[_0x76a4('0x3c')]=function(_0x25f520,_0x31dfb6,_0x1fe333){var _0x33aa78={'agent':{},'channel':'chat'};if(_0x25f520['body']['id']){delete _0x25f520[_0x76a4('0x5f')]['id'];}_0x25f520['body'][_0x76a4('0x69')]=_0x25f520[_0x76a4('0x5f')][_0x76a4('0x69')]||_0x25f520[_0x76a4('0x6a')]['id'];_0x33aa78[_0x76a4('0x6b')]['id']=_0x25f520[_0x76a4('0x5f')]['UserId'];return db['ChatMessage'][_0x76a4('0x5d')]({'where':{'id':_0x25f520['params']['id'],'UserId':null}})[_0x76a4('0x26')](handleEntityNotFound(_0x31dfb6,null))[_0x76a4('0x26')](function(_0x2a0d05){if(_0x2a0d05){_0x33aa78[_0x76a4('0x2d')]=_0x2a0d05[_0x76a4('0x6c')]({'plain':!![]});return db[_0x76a4('0x86')]['find']({'where':{'id':_0x2a0d05['ChatInteractionId']}});}return null;})[_0x76a4('0x26')](handleEntityNotFound(_0x31dfb6,null))['then'](function(_0x303922){if(_0x303922){_0x33aa78[_0x76a4('0x70')]=_0x303922[_0x76a4('0x6c')]({'plain':!![]});interaction_log[_0x76a4('0x2e')]('[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x25f520[_0x76a4('0x6a')]['id'],_0x25f520['user']['name'],_0x25f520[_0x76a4('0x6a')][_0x76a4('0x87')],_0x33aa78['interaction']['id'],_0x25f520[_0x76a4('0x5f')]?JSON[_0x76a4('0x72')](_0x25f520[_0x76a4('0x5f')]):'null');return respondWithRpcPromise('RejectMessage',_0x76a4('0x88'),_0x33aa78);}return null;})[_0x76a4('0x26')](function(_0x1dad9f){var _0x4f54f6=_0x76a4('0x75')+_0x1dad9f['message'][_0x76a4('0x89')];return db['sequelize']['query'](_0x4f54f6,{'type':db[_0x76a4('0x77')][_0x76a4('0x78')]['SELECT'],'raw':!![]})['then'](function(_0x4ecd43){return _0x4ecd43;});})[_0x76a4('0x26')](function(_0x49f495){if(_0x49f495){_0x33aa78['message'][_0x76a4('0x79')]=_0x49f495[0x0];if(!_0x25f520['body'][_0x76a4('0x69')])return;return db[_0x76a4('0x7a')]['find']({'where':{'id':_0x25f520[_0x76a4('0x5f')][_0x76a4('0x69')],'role':_0x76a4('0x6b')},'attributes':['id',_0x76a4('0x40'),_0x76a4('0x7b'),'email',_0x76a4('0x7d')],'raw':!![]});}return null;})['then'](function(_0x154f41){if(!_0x154f41)return null;_0x33aa78['message'][_0x76a4('0x6b')]=_0x154f41;return _0x33aa78;})[_0x76a4('0x26')](function(_0x4dd9b3){if(_0x4dd9b3){_0x4dd9b3[_0x76a4('0x2d')][_0x76a4('0x7f')]=util[_0x76a4('0x67')](_0x76a4('0x80'),_0x25f520[_0x76a4('0x6a')][_0x76a4('0x40')]);_0x4dd9b3[_0x76a4('0x2d')][_0x76a4('0x81')]=_0x33aa78[_0x76a4('0x81')];_0x4dd9b3[_0x76a4('0x2d')]['motionChannel']=_0x33aa78[_0x76a4('0x81')];_0x4dd9b3[_0x76a4('0x2d')][_0x76a4('0x83')]=_0x76a4('0x3c');respondWithRpcPromise('EventManager',_0x76a4('0x84'),{'event':_0x76a4('0x8a'),'message':_[_0x76a4('0x57')](_0x33aa78[_0x76a4('0x2d')],JSON[_0x76a4('0x8b')](_0x33aa78[_0x76a4('0x70')][_0x76a4('0x8c')]))},client9002);return _0x33aa78;}return null;})['then'](respondWithResult(_0x31dfb6,null))['catch'](handleError(_0x31dfb6,null));};
\ No newline at end of file
index 386fdd2..3f025aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd6b7=['hook','exports','events','../../mysqldb','ChatMessage','setMaxListeners','update','remove','emit','hasOwnProperty'];(function(_0xa9eaa0,_0x4ba2b4){var _0x30897a=function(_0x2caa01){while(--_0x2caa01){_0xa9eaa0['push'](_0xa9eaa0['shift']());}};_0x30897a(++_0x4ba2b4);}(_0xd6b7,0x1ec));var _0x7d6b=function(_0x41fb84,_0x3770b8){_0x41fb84=_0x41fb84-0x0;var _0x231304=_0xd6b7[_0x41fb84];return _0x231304;};'use strict';var EventEmitter=require(_0x7d6b('0x0'));var ChatMessage=require(_0x7d6b('0x1'))['db'][_0x7d6b('0x2')];var ChatMessageEvents=new EventEmitter();ChatMessageEvents[_0x7d6b('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x7d6b('0x4'),'afterDestroy':_0x7d6b('0x5')};function emitEvent(_0x23801e){return function(_0x1b6809,_0xa42e4f,_0x2690a0){ChatMessageEvents['emit'](_0x23801e+':'+_0x1b6809['id'],_0x1b6809);ChatMessageEvents[_0x7d6b('0x6')](_0x23801e,_0x1b6809);_0x2690a0(null);};}for(var e in events){if(events[_0x7d6b('0x7')](e)){var event=events[e];ChatMessage[_0x7d6b('0x8')](e,emitEvent(event));}}module[_0x7d6b('0x9')]=ChatMessageEvents;
\ No newline at end of file
+var _0x7e53=['exports','events','../../mysqldb','update','remove','hasOwnProperty','hook'];(function(_0x2fee16,_0xe5511c){var _0x5d0e43=function(_0x38a368){while(--_0x38a368){_0x2fee16['push'](_0x2fee16['shift']());}};_0x5d0e43(++_0xe5511c);}(_0x7e53,0x112));var _0x37e5=function(_0x36b234,_0x1a0ada){_0x36b234=_0x36b234-0x0;var _0x5db705=_0x7e53[_0x36b234];return _0x5db705;};'use strict';var EventEmitter=require(_0x37e5('0x0'));var ChatMessage=require(_0x37e5('0x1'))['db']['ChatMessage'];var ChatMessageEvents=new EventEmitter();ChatMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x37e5('0x2'),'afterDestroy':_0x37e5('0x3')};function emitEvent(_0x4b6d78){return function(_0x5afe46,_0x388f23,_0x282bfe){ChatMessageEvents['emit'](_0x4b6d78+':'+_0x5afe46['id'],_0x5afe46);ChatMessageEvents['emit'](_0x4b6d78,_0x5afe46);_0x282bfe(null);};}for(var e in events){if(events[_0x37e5('0x4')](e)){var event=events[e];ChatMessage[_0x37e5('0x5')](e,emitEvent(event));}}module[_0x37e5('0x6')]=ChatMessageEvents;
\ No newline at end of file
index 45cc632..0c72077 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc300=['../../config/environment','./chatMessage.attributes','exports','define','chat_messages','fti_chat_messages','FULLTEXT','models','get','direction','toLowerCase','isNil','UserId','ChatInteraction','findOne','ChatInteractionId','createdAt','catch','error','utf8mb4_unicode_ci','lodash','util','moment','bluebird','path','rimraf'];(function(_0xce6f11,_0x3c3137){var _0x35b709=function(_0x1755c6){while(--_0x1755c6){_0xce6f11['push'](_0xce6f11['shift']());}};_0x35b709(++_0x3c3137);}(_0xc300,0x132));var _0x0c30=function(_0x302b27,_0x26d927){_0x302b27=_0x302b27-0x0;var _0x2b2193=_0xc300[_0x302b27];return _0x2b2193;};'use strict';var _=require(_0x0c30('0x0'));var util=require(_0x0c30('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x0c30('0x2'));var BPromise=require(_0x0c30('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0c30('0x4'));var rimraf=require(_0x0c30('0x5'));var config=require(_0x0c30('0x6'));var attributes=require(_0x0c30('0x7'));module[_0x0c30('0x8')]=function(_0x99afcb,_0xc8f529){return _0x99afcb[_0x0c30('0x9')]('ChatMessage',attributes,{'tableName':_0x0c30('0xa'),'paranoid':![],'indexes':[{'name':_0x0c30('0xb'),'fields':['body'],'type':_0x0c30('0xc')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x39417c,_0x56d44a,_0x351cca){var _0x2d077e=_0x99afcb[_0x0c30('0xd')];var _0x104032=_0x39417c[_0x0c30('0xe')]({'plain':!![]});if(_0x104032['direction']['toLowerCase']()==='in'||_0x104032[_0x0c30('0xf')][_0x0c30('0x10')]()==='out'&&!_0x104032['secret']&&!_[_0x0c30('0x11')](_0x104032[_0x0c30('0x12')])){_0x2d077e[_0x0c30('0x13')][_0x0c30('0x14')]({'where':{'id':_0x104032[_0x0c30('0x15')]}})['then'](function(_0x11c0ae){if(_0x11c0ae){_0x11c0ae['update']({'lastMsgAt':_0x104032[_0x0c30('0x16')],'lastMsgDirection':_0x104032[_0x0c30('0xf')][_0x0c30('0x10')]()});}})[_0x0c30('0x17')](function(_0x295efb){console[_0x0c30('0x18')](_0x295efb);});}_0x351cca();}},'charset':'utf8mb4','collate':_0x0c30('0x19')});};
\ No newline at end of file
+var _0x2494=['then','update','createdAt','error','utf8mb4_unicode_ci','lodash','../../config/logger','api','moment','bluebird','request-promise','path','./chatMessage.attributes','define','chat_messages','fti_chat_messages','body','models','get','direction','toLowerCase','secret','isNil','ChatInteraction','findOne'];(function(_0x71e493,_0x4308b7){var _0x3d40ab=function(_0x29715){while(--_0x29715){_0x71e493['push'](_0x71e493['shift']());}};_0x3d40ab(++_0x4308b7);}(_0x2494,0x82));var _0x4249=function(_0x3b1f0f,_0x29274d){_0x3b1f0f=_0x3b1f0f-0x0;var _0xd4eaaa=_0x2494[_0x3b1f0f];return _0xd4eaaa;};'use strict';var _=require(_0x4249('0x0'));var util=require('util');var logger=require(_0x4249('0x1'))(_0x4249('0x2'));var moment=require(_0x4249('0x3'));var BPromise=require(_0x4249('0x4'));var rp=require(_0x4249('0x5'));var fs=require('fs');var path=require(_0x4249('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x4249('0x7'));module['exports']=function(_0x3c2d8d,_0x1d4ca8){return _0x3c2d8d[_0x4249('0x8')]('ChatMessage',attributes,{'tableName':_0x4249('0x9'),'paranoid':![],'indexes':[{'name':_0x4249('0xa'),'fields':[_0x4249('0xb')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x495a2c,_0x3efaa6,_0x44ca3d){var _0x46a08b=_0x3c2d8d[_0x4249('0xc')];var _0x4a8ff2=_0x495a2c[_0x4249('0xd')]({'plain':!![]});if(_0x4a8ff2[_0x4249('0xe')]['toLowerCase']()==='in'||_0x4a8ff2['direction'][_0x4249('0xf')]()==='out'&&!_0x4a8ff2[_0x4249('0x10')]&&!_[_0x4249('0x11')](_0x4a8ff2['UserId'])){_0x46a08b[_0x4249('0x12')][_0x4249('0x13')]({'where':{'id':_0x4a8ff2['ChatInteractionId']}})[_0x4249('0x14')](function(_0x40ce9c){if(_0x40ce9c){_0x40ce9c[_0x4249('0x15')]({'lastMsgAt':_0x4a8ff2[_0x4249('0x16')],'lastMsgDirection':_0x4a8ff2[_0x4249('0xe')][_0x4249('0xf')]()});}})['catch'](function(_0x7da5cf){console[_0x4249('0x17')](_0x7da5cf);});}_0x44ca3d();}},'charset':'utf8mb4','collate':_0x4249('0x18')});};
\ No newline at end of file
index 149397f..305139a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7166=['request\x20sent','error','code','ChatMessage,\x20%s,\x20%s','message','catch','ChatMessage','body','options','raw','CreateChatMessage','stringify','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','./chatMessage.socket','register','request','info','debug','ChatMessage,\x20%s,\x20%s,\x20%s'];(function(_0x382ed9,_0x523c26){var _0x20028c=function(_0x19580d){while(--_0x19580d){_0x382ed9['push'](_0x382ed9['shift']());}};_0x20028c(++_0x523c26);}(_0x7166,0x90));var _0x6716=function(_0x4bd06e,_0x593701){_0x4bd06e=_0x4bd06e-0x0;var _0x85ebb=_0x7166[_0x4bd06e];return _0x85ebb;};'use strict';var _=require(_0x6716('0x0'));var util=require(_0x6716('0x1'));var moment=require(_0x6716('0x2'));var BPromise=require('bluebird');var rs=require(_0x6716('0x3'));var fs=require('fs');var Redis=require(_0x6716('0x4'));var db=require(_0x6716('0x5'))['db'];var utils=require(_0x6716('0x6'));var logger=require('../../config/logger')(_0x6716('0x7'));var config=require(_0x6716('0x8'));var jayson=require(_0x6716('0x9'));var client=jayson[_0x6716('0xa')][_0x6716('0xb')]({'port':0x232a});config[_0x6716('0xc')]=_[_0x6716('0xd')](config[_0x6716('0xc')],{'host':_0x6716('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x6716('0xc')]));require(_0x6716('0xf'))[_0x6716('0x10')](socket);function respondWithRpcPromise(_0x392a19,_0x5d3e14,_0x3dbc74){return new BPromise(function(_0x42864c,_0x78d90d){return client[_0x6716('0x11')](_0x392a19,_0x3dbc74)['then'](function(_0x5a9a33){logger[_0x6716('0x12')]('ChatMessage,\x20%s,\x20%s',_0x5d3e14,'request\x20sent');logger[_0x6716('0x13')](_0x6716('0x14'),_0x5d3e14,_0x6716('0x15'),JSON['stringify'](_0x5a9a33));if(_0x5a9a33[_0x6716('0x16')]){if(_0x5a9a33[_0x6716('0x16')][_0x6716('0x17')]===0x1f4){logger[_0x6716('0x16')](_0x6716('0x18'),_0x5d3e14,_0x5a9a33[_0x6716('0x16')]['message']);return _0x78d90d(_0x5a9a33['error']['message']);}logger[_0x6716('0x16')](_0x6716('0x18'),_0x5d3e14,_0x5a9a33[_0x6716('0x16')][_0x6716('0x19')]);return _0x42864c(_0x5a9a33[_0x6716('0x16')][_0x6716('0x19')]);}else{logger[_0x6716('0x12')](_0x6716('0x18'),_0x5d3e14,'request\x20sent');_0x42864c(_0x5a9a33['result']['message']);}})[_0x6716('0x1a')](function(_0x200f3b){logger[_0x6716('0x16')](_0x6716('0x18'),_0x5d3e14,_0x200f3b);_0x78d90d(_0x200f3b);});});}exports['CreateChatMessage']=function(_0x340455){var _0x509843=this;return new Promise(function(_0x20053d,_0x497334){return db[_0x6716('0x1b')]['create'](_0x340455[_0x6716('0x1c')],{'raw':_0x340455[_0x6716('0x1d')]?_0x340455[_0x6716('0x1d')][_0x6716('0x1e')]===undefined?!![]:![]:!![]})['then'](function(_0x289cb6){logger[_0x6716('0x12')](_0x6716('0x1f'),_0x340455);logger[_0x6716('0x13')](_0x6716('0x1f'),_0x340455,JSON[_0x6716('0x20')](_0x289cb6));_0x20053d(_0x289cb6);})[_0x6716('0x1a')](function(_0x35487f){logger[_0x6716('0x16')]('CreateChatMessage',_0x35487f['message'],_0x340455);_0x497334(_0x509843[_0x6716('0x16')](0x1f4,_0x35487f[_0x6716('0x19')]));});});};
\ No newline at end of file
+var _0xc130=['localhost','./chatMessage.socket','then','info','ChatMessage,\x20%s,\x20%s','request\x20sent','debug','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','result','CreateChatMessage','ChatMessage','create','body','options','raw','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults'];(function(_0x17f162,_0x4b3f2f){var _0x2c97e1=function(_0x152433){while(--_0x152433){_0x17f162['push'](_0x17f162['shift']());}};_0x2c97e1(++_0x4b3f2f);}(_0xc130,0x7c));var _0x0c13=function(_0x562444,_0x2dc4e2){_0x562444=_0x562444-0x0;var _0x1501f1=_0xc130[_0x562444];return _0x1501f1;};'use strict';var _=require(_0x0c13('0x0'));var util=require(_0x0c13('0x1'));var moment=require(_0x0c13('0x2'));var BPromise=require(_0x0c13('0x3'));var rs=require(_0x0c13('0x4'));var fs=require('fs');var Redis=require(_0x0c13('0x5'));var db=require(_0x0c13('0x6'))['db'];var utils=require(_0x0c13('0x7'));var logger=require(_0x0c13('0x8'))(_0x0c13('0x9'));var config=require(_0x0c13('0xa'));var jayson=require(_0x0c13('0xb'));var client=jayson[_0x0c13('0xc')][_0x0c13('0xd')]({'port':0x232a});config[_0x0c13('0xe')]=_[_0x0c13('0xf')](config[_0x0c13('0xe')],{'host':_0x0c13('0x10'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x0c13('0xe')]));require(_0x0c13('0x11'))['register'](socket);function respondWithRpcPromise(_0x13fd17,_0x272a8f,_0x35e800){return new BPromise(function(_0x4fdb26,_0x59be98){return client['request'](_0x13fd17,_0x35e800)[_0x0c13('0x12')](function(_0x24ab5a){logger[_0x0c13('0x13')](_0x0c13('0x14'),_0x272a8f,_0x0c13('0x15'));logger[_0x0c13('0x16')](_0x0c13('0x17'),_0x272a8f,_0x0c13('0x15'),JSON[_0x0c13('0x18')](_0x24ab5a));if(_0x24ab5a[_0x0c13('0x19')]){if(_0x24ab5a['error']['code']===0x1f4){logger[_0x0c13('0x19')](_0x0c13('0x14'),_0x272a8f,_0x24ab5a[_0x0c13('0x19')]['message']);return _0x59be98(_0x24ab5a[_0x0c13('0x19')][_0x0c13('0x1a')]);}logger[_0x0c13('0x19')]('ChatMessage,\x20%s,\x20%s',_0x272a8f,_0x24ab5a[_0x0c13('0x19')][_0x0c13('0x1a')]);return _0x4fdb26(_0x24ab5a[_0x0c13('0x19')][_0x0c13('0x1a')]);}else{logger[_0x0c13('0x13')]('ChatMessage,\x20%s,\x20%s',_0x272a8f,_0x0c13('0x15'));_0x4fdb26(_0x24ab5a[_0x0c13('0x1b')]['message']);}})['catch'](function(_0x5c9ee8){logger[_0x0c13('0x19')](_0x0c13('0x14'),_0x272a8f,_0x5c9ee8);_0x59be98(_0x5c9ee8);});});}exports[_0x0c13('0x1c')]=function(_0x1affaf){var _0x1a6b45=this;return new Promise(function(_0x2387e4,_0xdb396e){return db[_0x0c13('0x1d')][_0x0c13('0x1e')](_0x1affaf[_0x0c13('0x1f')],{'raw':_0x1affaf[_0x0c13('0x20')]?_0x1affaf['options'][_0x0c13('0x21')]===undefined?!![]:![]:!![]})[_0x0c13('0x12')](function(_0x2e6e8a){logger[_0x0c13('0x13')](_0x0c13('0x1c'),_0x1affaf);logger[_0x0c13('0x16')]('CreateChatMessage',_0x1affaf,JSON[_0x0c13('0x18')](_0x2e6e8a));_0x2387e4(_0x2e6e8a);})[_0x0c13('0x22')](function(_0x1663d8){logger['error'](_0x0c13('0x1c'),_0x1663d8[_0x0c13('0x1a')],_0x1affaf);_0xdb396e(_0x1a6b45[_0x0c13('0x19')](0x1f4,_0x1663d8[_0x0c13('0x1a')]));});});};
\ No newline at end of file
index ddf2e05..3f351af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcea5=['save','remove','update','emit','register','chatMessage:','./chatMessage.events'];(function(_0x1bc18a,_0x3b586d){var _0x2f9358=function(_0x34fcac){while(--_0x34fcac){_0x1bc18a['push'](_0x1bc18a['shift']());}};_0x2f9358(++_0x3b586d);}(_0xcea5,0xed));var _0x5cea=function(_0x3177f0,_0x5142dc){_0x3177f0=_0x3177f0-0x0;var _0x55414d=_0xcea5[_0x3177f0];return _0x55414d;};'use strict';var ChatMessageEvents=require(_0x5cea('0x0'));var events=[_0x5cea('0x1'),_0x5cea('0x2'),_0x5cea('0x3')];function createListener(_0x2c6970,_0x52a9b8){return function(_0x20a2d9){_0x52a9b8[_0x5cea('0x4')](_0x2c6970,_0x20a2d9);};}function removeListener(_0x382c21,_0x319dba){return function(){ChatMessageEvents['removeListener'](_0x382c21,_0x319dba);};}exports[_0x5cea('0x5')]=function(_0x31e6f3){for(var _0x599bc5=0x0,_0x49db13=events['length'];_0x599bc5<_0x49db13;_0x599bc5++){var _0x502d95=events[_0x599bc5];var _0x3b6fbc=createListener(_0x5cea('0x6')+_0x502d95,_0x31e6f3);ChatMessageEvents['on'](_0x502d95,_0x3b6fbc);}};
\ No newline at end of file
+var _0x6eed=['emit','removeListener','register','./chatMessage.events','save','remove','update'];(function(_0x3042c5,_0x36cb88){var _0x7cd140=function(_0x4cdcd8){while(--_0x4cdcd8){_0x3042c5['push'](_0x3042c5['shift']());}};_0x7cd140(++_0x36cb88);}(_0x6eed,0xff));var _0xd6ee=function(_0x4f708f,_0x19857c){_0x4f708f=_0x4f708f-0x0;var _0xc14ea8=_0x6eed[_0x4f708f];return _0xc14ea8;};'use strict';var ChatMessageEvents=require(_0xd6ee('0x0'));var events=[_0xd6ee('0x1'),_0xd6ee('0x2'),_0xd6ee('0x3')];function createListener(_0x1a734a,_0x4e325a){return function(_0x25a92a){_0x4e325a[_0xd6ee('0x4')](_0x1a734a,_0x25a92a);};}function removeListener(_0x588715,_0x53cce9){return function(){ChatMessageEvents[_0xd6ee('0x5')](_0x588715,_0x53cce9);};}exports[_0xd6ee('0x6')]=function(_0x1c4f36){for(var _0x37abca=0x0,_0x10c1d7=events['length'];_0x37abca<_0x10c1d7;_0x37abca++){var _0x514dc3=events[_0x37abca];var _0x2e6369=createListener('chatMessage:'+_0x514dc3,_0x1c4f36);ChatMessageEvents['on'](_0x514dc3,_0x2e6369);}};
\ No newline at end of file
index 1c4b178..4029cb7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5484=['multer','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','./chatMessage.controller','get','isAuthenticated','index','describe','/:id','show','post','tracked','chat','chatmessage:create','create','put','update','accept','reject','delete','destroy','exports'];(function(_0x4d901b,_0x5f4055){var _0x37166b=function(_0x4b47c6){while(--_0x4b47c6){_0x4d901b['push'](_0x4d901b['shift']());}};_0x37166b(++_0x5f4055);}(_0x5484,0x1ba));var _0x4548=function(_0x189e27,_0x3e45f2){_0x189e27=_0x189e27-0x0;var _0x49e893=_0x5484[_0x189e27];return _0x49e893;};'use strict';var multer=require(_0x4548('0x0'));var util=require('util');var path=require(_0x4548('0x1'));var timeout=require(_0x4548('0x2'));var express=require(_0x4548('0x3'));var router=express[_0x4548('0x4')]();var fs_extra=require(_0x4548('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x4548('0x6'));var config=require('../../config/environment');var controller=require(_0x4548('0x7'));router[_0x4548('0x8')]('/',auth[_0x4548('0x9')](),controller[_0x4548('0xa')]);router[_0x4548('0x8')]('/describe',auth[_0x4548('0x9')](),controller[_0x4548('0xb')]);router[_0x4548('0x8')](_0x4548('0xc'),auth['isAuthenticated'](),controller[_0x4548('0xd')]);router[_0x4548('0xe')]('/',auth[_0x4548('0x9')](),interaction[_0x4548('0xf')](_0x4548('0x10'),_0x4548('0x11')),controller[_0x4548('0x12')]);router[_0x4548('0x13')](_0x4548('0xc'),controller[_0x4548('0x14')]);router['put']('/:id/accept',auth[_0x4548('0x9')](),controller[_0x4548('0x15')]);router[_0x4548('0x13')]('/:id/reject',auth[_0x4548('0x9')](),controller[_0x4548('0x16')]);router[_0x4548('0x17')](_0x4548('0xc'),auth[_0x4548('0x9')](),controller[_0x4548('0x18')]);module[_0x4548('0x19')]=router;
\ No newline at end of file
+var _0x80b3=['tracked','chat','chatmessage:create','create','put','update','/:id/accept','accept','/:id/reject','reject','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatMessage.controller','get','index','isAuthenticated','describe','/:id','show','post'];(function(_0x33032e,_0x31411a){var _0x13316b=function(_0x2fb049){while(--_0x2fb049){_0x33032e['push'](_0x33032e['shift']());}};_0x13316b(++_0x31411a);}(_0x80b3,0xde));var _0x380b=function(_0x5c8028,_0x1206f3){_0x5c8028=_0x5c8028-0x0;var _0x2132cc=_0x80b3[_0x5c8028];return _0x2132cc;};'use strict';var multer=require(_0x380b('0x0'));var util=require(_0x380b('0x1'));var path=require(_0x380b('0x2'));var timeout=require(_0x380b('0x3'));var express=require(_0x380b('0x4'));var router=express[_0x380b('0x5')]();var fs_extra=require(_0x380b('0x6'));var auth=require(_0x380b('0x7'));var interaction=require(_0x380b('0x8'));var config=require(_0x380b('0x9'));var controller=require(_0x380b('0xa'));router[_0x380b('0xb')]('/',auth['isAuthenticated'](),controller[_0x380b('0xc')]);router['get']('/describe',auth[_0x380b('0xd')](),controller[_0x380b('0xe')]);router[_0x380b('0xb')](_0x380b('0xf'),auth[_0x380b('0xd')](),controller[_0x380b('0x10')]);router[_0x380b('0x11')]('/',auth[_0x380b('0xd')](),interaction[_0x380b('0x12')](_0x380b('0x13'),_0x380b('0x14')),controller[_0x380b('0x15')]);router[_0x380b('0x16')](_0x380b('0xf'),controller[_0x380b('0x17')]);router['put'](_0x380b('0x18'),auth[_0x380b('0xd')](),controller[_0x380b('0x19')]);router[_0x380b('0x16')](_0x380b('0x1a'),auth[_0x380b('0xd')](),controller[_0x380b('0x1b')]);router[_0x380b('0x1c')](_0x380b('0xf'),auth[_0x380b('0xd')](),controller['destroy']);module[_0x380b('0x1d')]=router;
\ No newline at end of file
index a0eae74..d0b1f8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f2f=['exports','TEXT','medium','sequelize'];(function(_0x4908cb,_0xa5f2fe){var _0x5bd163=function(_0x514a8d){while(--_0x514a8d){_0x4908cb['push'](_0x4908cb['shift']());}};_0x5bd163(++_0xa5f2fe);}(_0x5f2f,0x73));var _0xf5f2=function(_0x32c259,_0x101e64){_0x32c259=_0x32c259-0x0;var _0x4206bf=_0x5f2f[_0x32c259];return _0x4206bf;};'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
+var _0xdb28=['TEXT','medium','sequelize','exports'];(function(_0x48883f,_0x1a15e5){var _0x3aa912=function(_0x2321c0){while(--_0x2321c0){_0x48883f['push'](_0x48883f['shift']());}};_0x3aa912(++_0x1a15e5);}(_0xdb28,0x106));var _0x8db2=function(_0x2ba88b,_0x4f780d){_0x2ba88b=_0x2ba88b-0x0;var _0x44d626=_0xdb28[_0x2ba88b];return _0x44d626;};'use strict';var Sequelize=require(_0x8db2('0x0'));module[_0x8db2('0x1')]={'body':{'type':Sequelize[_0x8db2('0x2')](_0x8db2('0x3')),'allowNull':![]},'plainBody':{'type':Sequelize['TEXT'](_0x8db2('0x3')),'allowNull':![]}};
\ No newline at end of file
index 99bcbb0..d9c74f5 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(_0x3d96e2,_0x6f46c6){var _0x459f64=function(_0x5414a2){while(--_0x5414a2){_0x3d96e2['push'](_0x3d96e2['shift']());}};_0x459f64(++_0x6f46c6);}(_0x9957,0x93));var _0x7995=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x9957[_0x4cf98e];return _0x1623ac;};'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 _0x7a54=['filter','VIRTUAL','includeAll','include','findAll','rows','show','params','length','merge','options','find','catch','body','Attachment','join','server','attachments','offline-chat','basename','remove','describe','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','desk.js','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','index','ChatOfflineMessage','fieldName','type','model','map','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick'];(function(_0x1da04e,_0x31024b){var _0xdd8c41=function(_0x2036f9){while(--_0x2036f9){_0x1da04e['push'](_0x1da04e['shift']());}};_0xdd8c41(++_0x31024b);}(_0x7a54,0x106));var _0x47a5=function(_0x118c57,_0x19c7e4){_0x118c57=_0x118c57-0x0;var _0x116fb8=_0x7a54[_0x118c57];return _0x116fb8;};'use strict';var emlformat=require(_0x47a5('0x0'));var rimraf=require(_0x47a5('0x1'));var zipdir=require(_0x47a5('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x47a5('0x3'));var moment=require(_0x47a5('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x47a5('0x5'));var util=require(_0x47a5('0x6'));var path=require(_0x47a5('0x7'));var sox=require(_0x47a5('0x8'));var csv=require(_0x47a5('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x47a5('0xa'));var _=require('lodash');var squel=require(_0x47a5('0xb'));var crypto=require(_0x47a5('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x47a5('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x47a5('0xe'));var authService=require(_0x47a5('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x47a5('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x47a5('0x11'));var utils=require(_0x47a5('0x12'));var config=require(_0x47a5('0x13'));var licenseUtil=require(_0x47a5('0x14'));var db=require(_0x47a5('0x15'))['db'];function respondWithStatusCode(_0xd308b8,_0x1eae59){_0x1eae59=_0x1eae59||0xcc;return function(_0x5beb89){if(_0x5beb89){return _0xd308b8[_0x47a5('0x16')](_0x1eae59);}return _0xd308b8[_0x47a5('0x17')](_0x1eae59)[_0x47a5('0x18')]();};}function respondWithResult(_0x711793,_0x139f25){_0x139f25=_0x139f25||0xc8;return function(_0x620ee9){if(_0x620ee9){return _0x711793[_0x47a5('0x17')](_0x139f25)[_0x47a5('0x19')](_0x620ee9);}};}function respondWithFilteredResult(_0x4e99a8,_0x362359){return function(_0x11faf5){if(_0x11faf5){var _0x3b001e=typeof _0x362359[_0x47a5('0x1a')]===_0x47a5('0x1b')&&typeof _0x362359['limit']==='undefined';var _0x138bc0=_0x11faf5['count'];var _0x5247fd=_0x3b001e?0x0:_0x362359[_0x47a5('0x1a')];var _0xaf70a6=_0x3b001e?_0x11faf5[_0x47a5('0x1c')]:_0x362359[_0x47a5('0x1a')]+_0x362359[_0x47a5('0x1d')];var _0x12b98e;if(_0xaf70a6>=_0x138bc0){_0xaf70a6=_0x138bc0;_0x12b98e=0xc8;}else{_0x12b98e=0xce;}_0x4e99a8[_0x47a5('0x17')](_0x12b98e);return _0x4e99a8[_0x47a5('0x1e')](_0x47a5('0x1f'),_0x5247fd+'-'+_0xaf70a6+'/'+_0x138bc0)['json'](_0x11faf5);}return null;};}function patchUpdates(_0x1570bc){return function(_0xf160ba){try{jsonpatch['apply'](_0xf160ba,_0x1570bc,!![]);}catch(_0x2b0360){return BPromise[_0x47a5('0x20')](_0x2b0360);}return _0xf160ba[_0x47a5('0x21')]();};}function saveUpdates(_0x4c5910,_0xb8ae6c){return function(_0x2f142b){if(_0x2f142b){return _0x2f142b[_0x47a5('0x22')](_0x4c5910)[_0x47a5('0x23')](function(_0x5ef1b1){return _0x5ef1b1;});}return null;};}function removeEntity(_0xe2dea9,_0x385687){return function(_0x513981){if(_0x513981){return _0x513981[_0x47a5('0x24')]()[_0x47a5('0x23')](function(){_0xe2dea9[_0x47a5('0x17')](0xcc)[_0x47a5('0x18')]();});}};}function handleEntityNotFound(_0x3abd6a,_0x50bf17){return function(_0x53078a){if(!_0x53078a){_0x3abd6a[_0x47a5('0x16')](0x194);}return _0x53078a;};}function handleError(_0x5686db,_0x1ea9c8){_0x1ea9c8=_0x1ea9c8||0x1f4;return function(_0x5b6c4e){logger[_0x47a5('0x25')](_0x5b6c4e[_0x47a5('0x26')]);if(_0x5b6c4e[_0x47a5('0x27')]){delete _0x5b6c4e[_0x47a5('0x27')];}_0x5686db[_0x47a5('0x17')](_0x1ea9c8)[_0x47a5('0x28')](_0x5b6c4e);};}exports[_0x47a5('0x29')]=function(_0x136b14,_0x16631f){var _0x361bfa={},_0x1127f8={},_0x11a4fa={'count':0x0,'rows':[]};var _0x3ad507=_['map'](db[_0x47a5('0x2a')]['rawAttributes'],function(_0x2ef875){return{'name':_0x2ef875[_0x47a5('0x2b')],'type':_0x2ef875[_0x47a5('0x2c')]['key']};});_0x1127f8[_0x47a5('0x2d')]=_[_0x47a5('0x2e')](_0x3ad507,_0x47a5('0x27'));_0x1127f8[_0x47a5('0x2f')]=_['keys'](_0x136b14['query']);_0x1127f8[_0x47a5('0x30')]=_[_0x47a5('0x31')](_0x1127f8['model'],_0x1127f8['query']);_0x361bfa[_0x47a5('0x32')]=_[_0x47a5('0x31')](_0x1127f8['model'],qs[_0x47a5('0x33')](_0x136b14['query'][_0x47a5('0x33')]));_0x361bfa[_0x47a5('0x32')]=_0x361bfa['attributes']['length']?_0x361bfa[_0x47a5('0x32')]:_0x1127f8['model'];if(!_0x136b14[_0x47a5('0x2f')][_0x47a5('0x34')](_0x47a5('0x35'))){_0x361bfa['limit']=qs[_0x47a5('0x1d')](_0x136b14['query']['limit']);_0x361bfa[_0x47a5('0x1a')]=qs['offset'](_0x136b14[_0x47a5('0x2f')]['offset']);}_0x361bfa[_0x47a5('0x36')]=qs[_0x47a5('0x37')](_0x136b14[_0x47a5('0x2f')][_0x47a5('0x37')]);_0x361bfa[_0x47a5('0x38')]=qs[_0x47a5('0x30')](_[_0x47a5('0x39')](_0x136b14[_0x47a5('0x2f')],_0x1127f8[_0x47a5('0x30')]),_0x3ad507);if(_0x136b14['query'][_0x47a5('0x3a')]){_0x361bfa[_0x47a5('0x38')]=_['merge'](_0x361bfa[_0x47a5('0x38')],{'$or':_[_0x47a5('0x2e')](_0x3ad507,function(_0x1d4348){if(_0x1d4348['type']!==_0x47a5('0x3b')){var _0x10f660={};_0x10f660[_0x1d4348['name']]={'$like':'%'+_0x136b14[_0x47a5('0x2f')][_0x47a5('0x3a')]+'%'};return _0x10f660;}})});}_0x361bfa=_['merge']({},_0x361bfa,_0x136b14['options']);var _0x5ebd8c={'where':_0x361bfa[_0x47a5('0x38')]};return db['ChatOfflineMessage'][_0x47a5('0x1c')](_0x5ebd8c)[_0x47a5('0x23')](function(_0x301a85){_0x11a4fa[_0x47a5('0x1c')]=_0x301a85;if(_0x136b14[_0x47a5('0x2f')][_0x47a5('0x3c')]){_0x361bfa[_0x47a5('0x3d')]=[{'all':!![]}];}return db[_0x47a5('0x2a')][_0x47a5('0x3e')](_0x361bfa);})[_0x47a5('0x23')](function(_0x280500){_0x11a4fa[_0x47a5('0x3f')]=_0x280500;return _0x11a4fa;})[_0x47a5('0x23')](respondWithFilteredResult(_0x16631f,_0x361bfa))['catch'](handleError(_0x16631f,null));};exports[_0x47a5('0x40')]=function(_0x1c36fa,_0x331474){var _0x23bd8d={'raw':!![],'where':{'id':_0x1c36fa[_0x47a5('0x41')]['id']}},_0x586f4f={};_0x586f4f['model']=_['keys'](db['ChatOfflineMessage']['rawAttributes']);_0x586f4f[_0x47a5('0x2f')]=_['keys'](_0x1c36fa[_0x47a5('0x2f')]);_0x586f4f[_0x47a5('0x30')]=_[_0x47a5('0x31')](_0x586f4f['model'],_0x586f4f[_0x47a5('0x2f')]);_0x23bd8d[_0x47a5('0x32')]=_['intersection'](_0x586f4f['model'],qs[_0x47a5('0x33')](_0x1c36fa['query'][_0x47a5('0x33')]));_0x23bd8d[_0x47a5('0x32')]=_0x23bd8d[_0x47a5('0x32')][_0x47a5('0x42')]?_0x23bd8d[_0x47a5('0x32')]:_0x586f4f[_0x47a5('0x2d')];if(_0x1c36fa[_0x47a5('0x2f')][_0x47a5('0x3c')]){_0x23bd8d[_0x47a5('0x3d')]=[{'all':!![]}];}_0x23bd8d=_[_0x47a5('0x43')]({},_0x23bd8d,_0x1c36fa[_0x47a5('0x44')]);return db[_0x47a5('0x2a')][_0x47a5('0x45')](_0x23bd8d)[_0x47a5('0x23')](handleEntityNotFound(_0x331474,null))[_0x47a5('0x23')](respondWithResult(_0x331474,null))[_0x47a5('0x46')](handleError(_0x331474,null));};exports['create']=function(_0x2d38de,_0x23bb04){return db['ChatOfflineMessage']['create'](_0x2d38de[_0x47a5('0x47')],{})['then'](respondWithResult(_0x23bb04,0xc9))[_0x47a5('0x46')](handleError(_0x23bb04,null));};exports[_0x47a5('0x22')]=function(_0x54c35f,_0x4f62d3){if(_0x54c35f[_0x47a5('0x47')]['id']){delete _0x54c35f['body']['id'];}return db[_0x47a5('0x2a')][_0x47a5('0x45')]({'where':{'id':_0x54c35f[_0x47a5('0x41')]['id']}})[_0x47a5('0x23')](handleEntityNotFound(_0x4f62d3,null))[_0x47a5('0x23')](saveUpdates(_0x54c35f[_0x47a5('0x47')],null))[_0x47a5('0x23')](respondWithResult(_0x4f62d3,null))['catch'](handleError(_0x4f62d3,null));};exports['destroy']=function(_0x2dd1db,_0x411230){return db[_0x47a5('0x48')][_0x47a5('0x3e')]({'where':{'ChatOfflineMessageId':_0x2dd1db[_0x47a5('0x41')]['id']},'raw':!![]})[_0x47a5('0x23')](function(_0x249de5){_0x249de5['forEach'](function(_0x45cca5){var _0x1c9a62=path[_0x47a5('0x49')](config['root'],_0x47a5('0x4a'),'files',_0x47a5('0x4b'),_0x47a5('0x4c'),_0x45cca5[_0x47a5('0x4d')]);var _0xf03bd5=fs['existsSync'](_0x1c9a62);if(_0xf03bd5)fs_extra[_0x47a5('0x4e')](_0x1c9a62);});})[_0x47a5('0x23')](function(){return db[_0x47a5('0x2a')][_0x47a5('0x45')]({'where':{'id':_0x2dd1db[_0x47a5('0x41')]['id']},'individualHooks':!![]});})[_0x47a5('0x23')](handleEntityNotFound(_0x411230,null))[_0x47a5('0x23')](removeEntity(_0x411230,null))['catch'](handleError(_0x411230,null));};exports[_0x47a5('0x4f')]=function(_0x43721b,_0x187d7e){return db[_0x47a5('0x2a')][_0x47a5('0x4f')]()[_0x47a5('0x23')](respondWithResult(_0x187d7e,null))['catch'](handleError(_0x187d7e,null));};
\ No newline at end of file
index 9bbbfb9..8c738af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x72a4=['exports','../../mysqldb','ChatOfflineMessage','setMaxListeners','update','remove','emit','hook'];(function(_0x99a9dc,_0x35849c){var _0x49b9ab=function(_0x1419a5){while(--_0x1419a5){_0x99a9dc['push'](_0x99a9dc['shift']());}};_0x49b9ab(++_0x35849c);}(_0x72a4,0x191));var _0x472a=function(_0x31f2dc,_0x4b13bd){_0x31f2dc=_0x31f2dc-0x0;var _0x2359b2=_0x72a4[_0x31f2dc];return _0x2359b2;};'use strict';var EventEmitter=require('events');var ChatOfflineMessage=require(_0x472a('0x0'))['db'][_0x472a('0x1')];var ChatOfflineMessageEvents=new EventEmitter();ChatOfflineMessageEvents[_0x472a('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x472a('0x3'),'afterDestroy':_0x472a('0x4')};function emitEvent(_0x1b5fc6){return function(_0x3c5f39,_0x3a238b,_0x40e22c){ChatOfflineMessageEvents[_0x472a('0x5')](_0x1b5fc6+':'+_0x3c5f39['id'],_0x3c5f39);ChatOfflineMessageEvents[_0x472a('0x5')](_0x1b5fc6,_0x3c5f39);_0x40e22c(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatOfflineMessage[_0x472a('0x6')](e,emitEvent(event));}}module[_0x472a('0x7')]=ChatOfflineMessageEvents;
\ No newline at end of file
+var _0x234b=['emit','hook','events','../../mysqldb','save','update','remove'];(function(_0x233c89,_0x1f1ad1){var _0x3deeae=function(_0x1be6fc){while(--_0x1be6fc){_0x233c89['push'](_0x233c89['shift']());}};_0x3deeae(++_0x1f1ad1);}(_0x234b,0x183));var _0xb234=function(_0xebdfb3,_0x542474){_0xebdfb3=_0xebdfb3-0x0;var _0x19f45e=_0x234b[_0xebdfb3];return _0x19f45e;};'use strict';var EventEmitter=require(_0xb234('0x0'));var ChatOfflineMessage=require(_0xb234('0x1'))['db']['ChatOfflineMessage'];var ChatOfflineMessageEvents=new EventEmitter();ChatOfflineMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xb234('0x2'),'afterUpdate':_0xb234('0x3'),'afterDestroy':_0xb234('0x4')};function emitEvent(_0xaa412){return function(_0xe29043,_0x4f3253,_0x3b9a85){ChatOfflineMessageEvents[_0xb234('0x5')](_0xaa412+':'+_0xe29043['id'],_0xe29043);ChatOfflineMessageEvents[_0xb234('0x5')](_0xaa412,_0xe29043);_0x3b9a85(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatOfflineMessage[_0xb234('0x6')](e,emitEvent(event));}}module['exports']=ChatOfflineMessageEvents;
\ No newline at end of file
index 234a53e..a6aa0e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fb6=['utf8mb4','./chatOfflineMessage.attributes','exports','define','chat_offline_messages'];(function(_0x56b878,_0x4be9aa){var _0x32b9ec=function(_0x1511ea){while(--_0x1511ea){_0x56b878['push'](_0x56b878['shift']());}};_0x32b9ec(++_0x4be9aa);}(_0x5fb6,0x178));var _0x65fb=function(_0x2761c5,_0x2587af){_0x2761c5=_0x2761c5-0x0;var _0x378f89=_0x5fb6[_0x2761c5];return _0x378f89;};'use strict';var attributes=require(_0x65fb('0x0'));module[_0x65fb('0x1')]=function(_0x5e470d){return _0x5e470d[_0x65fb('0x2')]('ChatOfflineMessage',attributes,{'tableName':_0x65fb('0x3'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x65fb('0x4'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xf0dd=['./chatOfflineMessage.attributes','ChatOfflineMessage','chat_offline_messages','utf8mb4','utf8mb4_unicode_ci'];(function(_0x7f70ec,_0x82eb8b){var _0x397ff9=function(_0x51edf4){while(--_0x51edf4){_0x7f70ec['push'](_0x7f70ec['shift']());}};_0x397ff9(++_0x82eb8b);}(_0xf0dd,0x136));var _0xdf0d=function(_0xfdf7a4,_0x37da46){_0xfdf7a4=_0xfdf7a4-0x0;var _0x59ec89=_0xf0dd[_0xfdf7a4];return _0x59ec89;};'use strict';var attributes=require(_0xdf0d('0x0'));module['exports']=function(_0x287ae8){return _0x287ae8['define'](_0xdf0d('0x1'),attributes,{'tableName':_0xdf0d('0x2'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xdf0d('0x3'),'collate':_0xdf0d('0x4')});};
\ No newline at end of file
index e89a55c..94a3afb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x400b=['catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','ChatOfflineMessage,\x20%s,\x20%s','debug','ChatOfflineMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message'];(function(_0x2c5f78,_0x1a7b3c){var _0x2616c2=function(_0x5b9151){while(--_0x5b9151){_0x2c5f78['push'](_0x2c5f78['shift']());}};_0x2616c2(++_0x1a7b3c);}(_0x400b,0x1e5));var _0xb400=function(_0x2cbe3e,_0x398788){_0x2cbe3e=_0x2cbe3e-0x0;var _0x49d320=_0x400b[_0x2cbe3e];return _0x49d320;};'use strict';var _=require(_0xb400('0x0'));var util=require(_0xb400('0x1'));var moment=require(_0xb400('0x2'));var BPromise=require(_0xb400('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xb400('0x4'));var db=require(_0xb400('0x5'))['db'];var utils=require(_0xb400('0x6'));var logger=require(_0xb400('0x7'))(_0xb400('0x8'));var config=require(_0xb400('0x9'));var jayson=require(_0xb400('0xa'));var client=jayson['client'][_0xb400('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x482574,_0xbb632c,_0x2c6b59){return new BPromise(function(_0x30e37c,_0x17c034){return client['request'](_0x482574,_0x2c6b59)['then'](function(_0x3e1b97){logger[_0xb400('0xc')](_0xb400('0xd'),_0xbb632c,'request\x20sent');logger[_0xb400('0xe')](_0xb400('0xf'),_0xbb632c,_0xb400('0x10'),JSON[_0xb400('0x11')](_0x3e1b97));if(_0x3e1b97[_0xb400('0x12')]){if(_0x3e1b97[_0xb400('0x12')][_0xb400('0x13')]===0x1f4){logger['error'](_0xb400('0xd'),_0xbb632c,_0x3e1b97[_0xb400('0x12')][_0xb400('0x14')]);return _0x17c034(_0x3e1b97[_0xb400('0x12')]['message']);}logger[_0xb400('0x12')]('ChatOfflineMessage,\x20%s,\x20%s',_0xbb632c,_0x3e1b97[_0xb400('0x12')][_0xb400('0x14')]);return _0x30e37c(_0x3e1b97[_0xb400('0x12')][_0xb400('0x14')]);}else{logger[_0xb400('0xc')]('ChatOfflineMessage,\x20%s,\x20%s',_0xbb632c,_0xb400('0x10'));_0x30e37c(_0x3e1b97['result'][_0xb400('0x14')]);}})[_0xb400('0x15')](function(_0x2f2de4){logger[_0xb400('0x12')](_0xb400('0xd'),_0xbb632c,_0x2f2de4);_0x17c034(_0x2f2de4);});});}
\ No newline at end of file
+var _0xf897=['client','request','then','ChatOfflineMessage,\x20%s,\x20%s','request\x20sent','debug','ChatOfflineMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x329d13,_0x1aff27){var _0x33efd9=function(_0x265b7d){while(--_0x265b7d){_0x329d13['push'](_0x329d13['shift']());}};_0x33efd9(++_0x1aff27);}(_0xf897,0xe4));var _0x7f89=function(_0x598a79,_0x12e39c){_0x598a79=_0x598a79-0x0;var _0x274d83=_0xf897[_0x598a79];return _0x274d83;};'use strict';var _=require(_0x7f89('0x0'));var util=require(_0x7f89('0x1'));var moment=require(_0x7f89('0x2'));var BPromise=require(_0x7f89('0x3'));var rs=require(_0x7f89('0x4'));var fs=require('fs');var Redis=require(_0x7f89('0x5'));var db=require(_0x7f89('0x6'))['db'];var utils=require(_0x7f89('0x7'));var logger=require(_0x7f89('0x8'))(_0x7f89('0x9'));var config=require(_0x7f89('0xa'));var jayson=require(_0x7f89('0xb'));var client=jayson[_0x7f89('0xc')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2d14d2,_0x30b804,_0x5ef009){return new BPromise(function(_0x48e30a,_0x5924bd){return client[_0x7f89('0xd')](_0x2d14d2,_0x5ef009)[_0x7f89('0xe')](function(_0x3acd18){logger['info'](_0x7f89('0xf'),_0x30b804,_0x7f89('0x10'));logger[_0x7f89('0x11')](_0x7f89('0x12'),_0x30b804,_0x7f89('0x10'),JSON[_0x7f89('0x13')](_0x3acd18));if(_0x3acd18[_0x7f89('0x14')]){if(_0x3acd18[_0x7f89('0x14')]['code']===0x1f4){logger[_0x7f89('0x14')](_0x7f89('0xf'),_0x30b804,_0x3acd18['error'][_0x7f89('0x15')]);return _0x5924bd(_0x3acd18[_0x7f89('0x14')][_0x7f89('0x15')]);}logger['error']('ChatOfflineMessage,\x20%s,\x20%s',_0x30b804,_0x3acd18[_0x7f89('0x14')][_0x7f89('0x15')]);return _0x48e30a(_0x3acd18[_0x7f89('0x14')][_0x7f89('0x15')]);}else{logger['info']('ChatOfflineMessage,\x20%s,\x20%s',_0x30b804,'request\x20sent');_0x48e30a(_0x3acd18[_0x7f89('0x16')][_0x7f89('0x15')]);}})[_0x7f89('0x17')](function(_0x21fee9){logger[_0x7f89('0x14')]('ChatOfflineMessage,\x20%s,\x20%s',_0x30b804,_0x21fee9);_0x5924bd(_0x21fee9);});});}
\ No newline at end of file
index 8813270..9832da4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x087a=['describe','/:id','show','create','put','delete','destroy','exports','multer','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./chatOfflineMessage.controller','get','isAuthenticated','index','/describe'];(function(_0x1cc364,_0x3f62b5){var _0x11bd5e=function(_0x35a21f){while(--_0x35a21f){_0x1cc364['push'](_0x1cc364['shift']());}};_0x11bd5e(++_0x3f62b5);}(_0x087a,0xd0));var _0xa087=function(_0x4e6e63,_0x46d1e6){_0x4e6e63=_0x4e6e63-0x0;var _0x52f08e=_0x087a[_0x4e6e63];return _0x52f08e;};'use strict';var multer=require(_0xa087('0x0'));var util=require('util');var path=require(_0xa087('0x1'));var timeout=require(_0xa087('0x2'));var express=require(_0xa087('0x3'));var router=express[_0xa087('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xa087('0x5'));var config=require(_0xa087('0x6'));var controller=require(_0xa087('0x7'));router[_0xa087('0x8')]('/',auth[_0xa087('0x9')](),controller[_0xa087('0xa')]);router[_0xa087('0x8')](_0xa087('0xb'),auth[_0xa087('0x9')](),controller[_0xa087('0xc')]);router[_0xa087('0x8')](_0xa087('0xd'),auth[_0xa087('0x9')](),controller[_0xa087('0xe')]);router['post']('/',auth[_0xa087('0x9')](),controller[_0xa087('0xf')]);router[_0xa087('0x10')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0xa087('0x11')](_0xa087('0xd'),auth[_0xa087('0x9')](),controller[_0xa087('0x12')]);module[_0xa087('0x13')]=router;
\ No newline at end of file
+var _0x8955=['fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/describe','describe','/:id','post','create','put','update','exports','multer','util','path','connect-timeout','express','Router'];(function(_0x3b86c1,_0x34f645){var _0x54abc2=function(_0x395e1d){while(--_0x395e1d){_0x3b86c1['push'](_0x3b86c1['shift']());}};_0x54abc2(++_0x34f645);}(_0x8955,0x162));var _0x5895=function(_0x1afa34,_0x4ac3c9){_0x1afa34=_0x1afa34-0x0;var _0x47fc9e=_0x8955[_0x1afa34];return _0x47fc9e;};'use strict';var multer=require(_0x5895('0x0'));var util=require(_0x5895('0x1'));var path=require(_0x5895('0x2'));var timeout=require(_0x5895('0x3'));var express=require(_0x5895('0x4'));var router=express[_0x5895('0x5')]();var fs_extra=require(_0x5895('0x6'));var auth=require(_0x5895('0x7'));var interaction=require(_0x5895('0x8'));var config=require('../../config/environment');var controller=require('./chatOfflineMessage.controller');router[_0x5895('0x9')]('/',auth[_0x5895('0xa')](),controller[_0x5895('0xb')]);router[_0x5895('0x9')](_0x5895('0xc'),auth[_0x5895('0xa')](),controller[_0x5895('0xd')]);router['get'](_0x5895('0xe'),auth['isAuthenticated'](),controller['show']);router[_0x5895('0xf')]('/',auth[_0x5895('0xa')](),controller[_0x5895('0x10')]);router[_0x5895('0x11')](_0x5895('0xe'),auth[_0x5895('0xa')](),controller[_0x5895('0x12')]);router['delete'](_0x5895('0xe'),auth[_0x5895('0xa')](),controller['destroy']);module[_0x5895('0x13')]=router;
\ No newline at end of file
index 6262894..4df51ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6cdd=['exports','STRING','timeout','mouseOver','INTEGER'];(function(_0x1b9d8c,_0x32ed07){var _0x4d09d0=function(_0xa5b28d){while(--_0xa5b28d){_0x1b9d8c['push'](_0x1b9d8c['shift']());}};_0x4d09d0(++_0x32ed07);}(_0x6cdd,0x195));var _0xd6cd=function(_0x5a8b5c,_0x333cc2){_0x5a8b5c=_0x5a8b5c-0x0;var _0x50fc5f=_0x6cdd[_0x5a8b5c];return _0x50fc5f;};'use strict';var Sequelize=require('sequelize');module[_0xd6cd('0x0')]={'name':{'type':Sequelize[_0xd6cd('0x1')],'allowNull':![]},'type':{'type':Sequelize['ENUM']('mouseOver',_0xd6cd('0x2')),'defaultValue':_0xd6cd('0x3')},'selector':{'type':Sequelize[_0xd6cd('0x1')]},'timeout':{'type':Sequelize[_0xd6cd('0x4')]}};
\ No newline at end of file
+var _0x7741=['ENUM','mouseOver','timeout','INTEGER','sequelize','exports','STRING'];(function(_0x1f59f9,_0x64fb5d){var _0x4c056c=function(_0x5f4435){while(--_0x5f4435){_0x1f59f9['push'](_0x1f59f9['shift']());}};_0x4c056c(++_0x64fb5d);}(_0x7741,0x1c4));var _0x1774=function(_0x9aada2,_0xd2d349){_0x9aada2=_0x9aada2-0x0;var _0x196dff=_0x7741[_0x9aada2];return _0x196dff;};'use strict';var Sequelize=require(_0x1774('0x0'));module[_0x1774('0x1')]={'name':{'type':Sequelize[_0x1774('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x1774('0x3')](_0x1774('0x4'),_0x1774('0x5')),'defaultValue':'mouseOver'},'selector':{'type':Sequelize[_0x1774('0x2')]},'timeout':{'type':Sequelize[_0x1774('0x6')]}};
\ No newline at end of file
index df04516..7d8f3af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa3e6=['offset','count','limit','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','show','model','ChatProactiveAction','keys','query','attributes','intersection','fields','merge','options','find','catch','create','body','eml-format','zip-dir','request-promise','moment','bluebird','util','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json'];(function(_0x49de28,_0x2751c){var _0x2ac8ed=function(_0x2ce603){while(--_0x2ce603){_0x49de28['push'](_0x49de28['shift']());}};_0x2ac8ed(++_0x2751c);}(_0xa3e6,0xbe));var _0x6a3e=function(_0x50aa06,_0x3ec2de){_0x50aa06=_0x50aa06-0x0;var _0x2dc6d9=_0xa3e6[_0x50aa06];return _0x2dc6d9;};'use strict';var emlformat=require(_0x6a3e('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x6a3e('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6a3e('0x2'));var moment=require(_0x6a3e('0x3'));var BPromise=require(_0x6a3e('0x4'));var Mustache=require('mustache');var util=require(_0x6a3e('0x5'));var path=require('path');var sox=require(_0x6a3e('0x6'));var csv=require(_0x6a3e('0x7'));var ejs=require(_0x6a3e('0x8'));var fs=require('fs');var fs_extra=require(_0x6a3e('0x9'));var _=require(_0x6a3e('0xa'));var squel=require('squel');var crypto=require(_0x6a3e('0xb'));var jsforce=require(_0x6a3e('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x6a3e('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x6a3e('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x6a3e('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x6a3e('0x10'))(_0x6a3e('0x11'));var utils=require(_0x6a3e('0x12'));var config=require(_0x6a3e('0x13'));var licenseUtil=require(_0x6a3e('0x14'));var db=require(_0x6a3e('0x15'))['db'];function respondWithStatusCode(_0x4a3a97,_0x27e169){_0x27e169=_0x27e169||0xcc;return function(_0x385c29){if(_0x385c29){return _0x4a3a97[_0x6a3e('0x16')](_0x27e169);}return _0x4a3a97[_0x6a3e('0x17')](_0x27e169)[_0x6a3e('0x18')]();};}function respondWithResult(_0x31aefa,_0x222f7c){_0x222f7c=_0x222f7c||0xc8;return function(_0x4bd05f){if(_0x4bd05f){return _0x31aefa[_0x6a3e('0x17')](_0x222f7c)[_0x6a3e('0x19')](_0x4bd05f);}};}function respondWithFilteredResult(_0x8ed74b,_0x2a62a8){return function(_0x500ccd){if(_0x500ccd){var _0x462b8d=typeof _0x2a62a8[_0x6a3e('0x1a')]==='undefined'&&typeof _0x2a62a8['limit']==='undefined';var _0x58b221=_0x500ccd['count'];var _0x3693a2=_0x462b8d?0x0:_0x2a62a8[_0x6a3e('0x1a')];var _0x31a190=_0x462b8d?_0x500ccd[_0x6a3e('0x1b')]:_0x2a62a8[_0x6a3e('0x1a')]+_0x2a62a8[_0x6a3e('0x1c')];var _0x1d6ccc;if(_0x31a190>=_0x58b221){_0x31a190=_0x58b221;_0x1d6ccc=0xc8;}else{_0x1d6ccc=0xce;}_0x8ed74b[_0x6a3e('0x17')](_0x1d6ccc);return _0x8ed74b['set'](_0x6a3e('0x1d'),_0x3693a2+'-'+_0x31a190+'/'+_0x58b221)['json'](_0x500ccd);}return null;};}function patchUpdates(_0xc0452f){return function(_0x5ae73b){try{jsonpatch[_0x6a3e('0x1e')](_0x5ae73b,_0xc0452f,!![]);}catch(_0x131d80){return BPromise[_0x6a3e('0x1f')](_0x131d80);}return _0x5ae73b[_0x6a3e('0x20')]();};}function saveUpdates(_0x58721c,_0x4f7507){return function(_0x215ac1){if(_0x215ac1){return _0x215ac1[_0x6a3e('0x21')](_0x58721c)[_0x6a3e('0x22')](function(_0x4687d0){return _0x4687d0;});}return null;};}function removeEntity(_0x4e5a25,_0x1ae966){return function(_0x21b5aa){if(_0x21b5aa){return _0x21b5aa[_0x6a3e('0x23')]()[_0x6a3e('0x22')](function(){_0x4e5a25[_0x6a3e('0x17')](0xcc)[_0x6a3e('0x18')]();});}};}function handleEntityNotFound(_0x359460,_0x83e681){return function(_0x25fc14){if(!_0x25fc14){_0x359460[_0x6a3e('0x16')](0x194);}return _0x25fc14;};}function handleError(_0x5b1ed9,_0x4ec834){_0x4ec834=_0x4ec834||0x1f4;return function(_0x150992){logger[_0x6a3e('0x24')](_0x150992[_0x6a3e('0x25')]);if(_0x150992[_0x6a3e('0x26')]){delete _0x150992[_0x6a3e('0x26')];}_0x5b1ed9[_0x6a3e('0x17')](_0x4ec834)[_0x6a3e('0x27')](_0x150992);};}exports[_0x6a3e('0x28')]=function(_0xd87198,_0x436169){var _0x3a831b={'raw':!![],'where':{'id':_0xd87198['params']['id']}},_0x508a55={};_0x508a55[_0x6a3e('0x29')]=_['keys'](db[_0x6a3e('0x2a')]['rawAttributes']);_0x508a55['query']=_[_0x6a3e('0x2b')](_0xd87198[_0x6a3e('0x2c')]);_0x508a55['filters']=_['intersection'](_0x508a55[_0x6a3e('0x29')],_0x508a55[_0x6a3e('0x2c')]);_0x3a831b[_0x6a3e('0x2d')]=_[_0x6a3e('0x2e')](_0x508a55['model'],qs['fields'](_0xd87198[_0x6a3e('0x2c')][_0x6a3e('0x2f')]));_0x3a831b[_0x6a3e('0x2d')]=_0x3a831b[_0x6a3e('0x2d')]['length']?_0x3a831b[_0x6a3e('0x2d')]:_0x508a55[_0x6a3e('0x29')];if(_0xd87198['query']['includeAll']){_0x3a831b['include']=[{'all':!![]}];}_0x3a831b=_[_0x6a3e('0x30')]({},_0x3a831b,_0xd87198[_0x6a3e('0x31')]);return db[_0x6a3e('0x2a')][_0x6a3e('0x32')](_0x3a831b)[_0x6a3e('0x22')](handleEntityNotFound(_0x436169,null))[_0x6a3e('0x22')](respondWithResult(_0x436169,null))[_0x6a3e('0x33')](handleError(_0x436169,null));};exports[_0x6a3e('0x34')]=function(_0x4044d0,_0x377226){return db[_0x6a3e('0x2a')][_0x6a3e('0x34')](_0x4044d0[_0x6a3e('0x35')],{})[_0x6a3e('0x22')](respondWithResult(_0x377226,0xc9))[_0x6a3e('0x33')](handleError(_0x377226,null));};exports['update']=function(_0x19d873,_0x38deb6){if(_0x19d873[_0x6a3e('0x35')]['id']){delete _0x19d873['body']['id'];}return db[_0x6a3e('0x2a')][_0x6a3e('0x32')]({'where':{'id':_0x19d873['params']['id']}})[_0x6a3e('0x22')](handleEntityNotFound(_0x38deb6,null))[_0x6a3e('0x22')](saveUpdates(_0x19d873[_0x6a3e('0x35')],null))['then'](respondWithResult(_0x38deb6,null))[_0x6a3e('0x33')](handleError(_0x38deb6,null));};exports[_0x6a3e('0x23')]=function(_0x37e523,_0x3e604c){return db[_0x6a3e('0x2a')][_0x6a3e('0x32')]({'where':{'id':_0x37e523['params']['id']}})[_0x6a3e('0x22')](handleEntityNotFound(_0x3e604c,null))['then'](removeEntity(_0x3e604c,null))['catch'](handleError(_0x3e604c,null));};
\ No newline at end of file
+var _0xb90d=['count','offset','set','apply','reject','update','destroy','then','end','name','send','show','params','model','keys','ChatProactiveAction','rawAttributes','query','filters','intersection','attributes','fields','length','includeAll','merge','options','find','catch','create','body','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/environment','../../config/license/util','../../mysqldb','status','json','undefined','limit'];(function(_0x1be2a5,_0x41d12a){var _0x23523d=function(_0x405b41){while(--_0x405b41){_0x1be2a5['push'](_0x1be2a5['shift']());}};_0x23523d(++_0x41d12a);}(_0xb90d,0x17a));var _0xdb90=function(_0x331a31,_0x116709){_0x331a31=_0x331a31-0x0;var _0x521de0=_0xb90d[_0x331a31];return _0x521de0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xdb90('0x0'));var zipdir=require(_0xdb90('0x1'));var jsonpatch=require(_0xdb90('0x2'));var rp=require(_0xdb90('0x3'));var moment=require(_0xdb90('0x4'));var BPromise=require(_0xdb90('0x5'));var Mustache=require('mustache');var util=require(_0xdb90('0x6'));var path=require(_0xdb90('0x7'));var sox=require(_0xdb90('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xdb90('0x9'));var _=require(_0xdb90('0xa'));var squel=require(_0xdb90('0xb'));var crypto=require(_0xdb90('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xdb90('0xd'));var toCsv=require(_0xdb90('0xe'));var querystring=require(_0xdb90('0xf'));var Papa=require('papaparse');var Redis=require(_0xdb90('0x10'));var authService=require(_0xdb90('0x11'));var qs=require(_0xdb90('0x12'));var as=require(_0xdb90('0x13'));var hardwareService=require(_0xdb90('0x14'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0xdb90('0x15'));var licenseUtil=require(_0xdb90('0x16'));var db=require(_0xdb90('0x17'))['db'];function respondWithStatusCode(_0xb5ea64,_0xdc179e){_0xdc179e=_0xdc179e||0xcc;return function(_0x113659){if(_0x113659){return _0xb5ea64['sendStatus'](_0xdc179e);}return _0xb5ea64['status'](_0xdc179e)['end']();};}function respondWithResult(_0x511592,_0x569d40){_0x569d40=_0x569d40||0xc8;return function(_0x5eb6ef){if(_0x5eb6ef){return _0x511592[_0xdb90('0x18')](_0x569d40)[_0xdb90('0x19')](_0x5eb6ef);}};}function respondWithFilteredResult(_0x5b93b1,_0x19b02e){return function(_0x1cde0d){if(_0x1cde0d){var _0x4db002=typeof _0x19b02e['offset']===_0xdb90('0x1a')&&typeof _0x19b02e[_0xdb90('0x1b')]===_0xdb90('0x1a');var _0x5101e9=_0x1cde0d[_0xdb90('0x1c')];var _0x13f6df=_0x4db002?0x0:_0x19b02e[_0xdb90('0x1d')];var _0x44d4d4=_0x4db002?_0x1cde0d[_0xdb90('0x1c')]:_0x19b02e[_0xdb90('0x1d')]+_0x19b02e[_0xdb90('0x1b')];var _0x1838ed;if(_0x44d4d4>=_0x5101e9){_0x44d4d4=_0x5101e9;_0x1838ed=0xc8;}else{_0x1838ed=0xce;}_0x5b93b1[_0xdb90('0x18')](_0x1838ed);return _0x5b93b1[_0xdb90('0x1e')]('Content-Range',_0x13f6df+'-'+_0x44d4d4+'/'+_0x5101e9)['json'](_0x1cde0d);}return null;};}function patchUpdates(_0x4110c7){return function(_0x1c2dbe){try{jsonpatch[_0xdb90('0x1f')](_0x1c2dbe,_0x4110c7,!![]);}catch(_0x13f84d){return BPromise[_0xdb90('0x20')](_0x13f84d);}return _0x1c2dbe['save']();};}function saveUpdates(_0x31f9df,_0x922395){return function(_0x590e6a){if(_0x590e6a){return _0x590e6a[_0xdb90('0x21')](_0x31f9df)['then'](function(_0x185b08){return _0x185b08;});}return null;};}function removeEntity(_0x2fdb1b,_0x1fe5ab){return function(_0x463199){if(_0x463199){return _0x463199[_0xdb90('0x22')]()[_0xdb90('0x23')](function(){_0x2fdb1b[_0xdb90('0x18')](0xcc)[_0xdb90('0x24')]();});}};}function handleEntityNotFound(_0x1ef44a,_0x1fed39){return function(_0x64268c){if(!_0x64268c){_0x1ef44a['sendStatus'](0x194);}return _0x64268c;};}function handleError(_0x1a27c3,_0xedb1a6){_0xedb1a6=_0xedb1a6||0x1f4;return function(_0x3fcafd){logger['error'](_0x3fcafd['stack']);if(_0x3fcafd[_0xdb90('0x25')]){delete _0x3fcafd[_0xdb90('0x25')];}_0x1a27c3[_0xdb90('0x18')](_0xedb1a6)[_0xdb90('0x26')](_0x3fcafd);};}exports[_0xdb90('0x27')]=function(_0x321efc,_0x46f743){var _0x67aebc={'raw':!![],'where':{'id':_0x321efc[_0xdb90('0x28')]['id']}},_0x554d8f={};_0x554d8f[_0xdb90('0x29')]=_[_0xdb90('0x2a')](db[_0xdb90('0x2b')][_0xdb90('0x2c')]);_0x554d8f[_0xdb90('0x2d')]=_[_0xdb90('0x2a')](_0x321efc[_0xdb90('0x2d')]);_0x554d8f[_0xdb90('0x2e')]=_[_0xdb90('0x2f')](_0x554d8f[_0xdb90('0x29')],_0x554d8f[_0xdb90('0x2d')]);_0x67aebc[_0xdb90('0x30')]=_[_0xdb90('0x2f')](_0x554d8f['model'],qs[_0xdb90('0x31')](_0x321efc[_0xdb90('0x2d')][_0xdb90('0x31')]));_0x67aebc[_0xdb90('0x30')]=_0x67aebc[_0xdb90('0x30')][_0xdb90('0x32')]?_0x67aebc[_0xdb90('0x30')]:_0x554d8f[_0xdb90('0x29')];if(_0x321efc[_0xdb90('0x2d')][_0xdb90('0x33')]){_0x67aebc['include']=[{'all':!![]}];}_0x67aebc=_[_0xdb90('0x34')]({},_0x67aebc,_0x321efc[_0xdb90('0x35')]);return db['ChatProactiveAction'][_0xdb90('0x36')](_0x67aebc)[_0xdb90('0x23')](handleEntityNotFound(_0x46f743,null))[_0xdb90('0x23')](respondWithResult(_0x46f743,null))[_0xdb90('0x37')](handleError(_0x46f743,null));};exports[_0xdb90('0x38')]=function(_0x579279,_0x430c37){return db[_0xdb90('0x2b')][_0xdb90('0x38')](_0x579279['body'],{})[_0xdb90('0x23')](respondWithResult(_0x430c37,0xc9))[_0xdb90('0x37')](handleError(_0x430c37,null));};exports['update']=function(_0x42d6ff,_0x2b2942){if(_0x42d6ff[_0xdb90('0x39')]['id']){delete _0x42d6ff[_0xdb90('0x39')]['id'];}return db['ChatProactiveAction'][_0xdb90('0x36')]({'where':{'id':_0x42d6ff[_0xdb90('0x28')]['id']}})['then'](handleEntityNotFound(_0x2b2942,null))['then'](saveUpdates(_0x42d6ff[_0xdb90('0x39')],null))[_0xdb90('0x23')](respondWithResult(_0x2b2942,null))[_0xdb90('0x37')](handleError(_0x2b2942,null));};exports[_0xdb90('0x22')]=function(_0x49c745,_0x13ae1b){return db['ChatProactiveAction']['find']({'where':{'id':_0x49c745['params']['id']}})[_0xdb90('0x23')](handleEntityNotFound(_0x13ae1b,null))[_0xdb90('0x23')](removeEntity(_0x13ae1b,null))[_0xdb90('0x37')](handleError(_0x13ae1b,null));};
\ No newline at end of file
index 2402d5f..9164a3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac35=['../../config/environment','./chatProactiveAction.attributes','exports','ChatProactiveAction','lodash','util','../../config/logger','api','moment','request-promise','path'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xac35,0x10c));var _0x5ac3=function(_0x2d79be,_0x3e7c70){_0x2d79be=_0x2d79be-0x0;var _0x3e6c80=_0xac35[_0x2d79be];return _0x3e6c80;};'use strict';var _=require(_0x5ac3('0x0'));var util=require(_0x5ac3('0x1'));var logger=require(_0x5ac3('0x2'))(_0x5ac3('0x3'));var moment=require(_0x5ac3('0x4'));var BPromise=require('bluebird');var rp=require(_0x5ac3('0x5'));var fs=require('fs');var path=require(_0x5ac3('0x6'));var rimraf=require('rimraf');var config=require(_0x5ac3('0x7'));var attributes=require(_0x5ac3('0x8'));module[_0x5ac3('0x9')]=function(_0x1e224c,_0x5462b3){return _0x1e224c['define'](_0x5ac3('0xa'),attributes,{'tableName':'chat_proactive_actions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0081=['define','chat_proactive_actions','util','../../config/logger','api','moment','rimraf','../../config/environment','./chatProactiveAction.attributes','exports'];(function(_0x14028b,_0x4c448a){var _0x4fa998=function(_0x373366){while(--_0x373366){_0x14028b['push'](_0x14028b['shift']());}};_0x4fa998(++_0x4c448a);}(_0x0081,0xfc));var _0x1008=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x0081[_0x14add3];return _0x4a174f;};'use strict';var _=require('lodash');var util=require(_0x1008('0x0'));var logger=require(_0x1008('0x1'))(_0x1008('0x2'));var moment=require(_0x1008('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x1008('0x4'));var config=require(_0x1008('0x5'));var attributes=require(_0x1008('0x6'));module[_0x1008('0x7')]=function(_0x97ab71,_0x1cc8e2){return _0x97ab71[_0x1008('0x8')]('ChatProactiveAction',attributes,{'tableName':_0x1008('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9f08b45..bb0e4fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x62e3=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','then','ChatProactiveAction,\x20%s,\x20%s','request\x20sent','debug','ChatProactiveAction,\x20%s,\x20%s,\x20%s','stringify','code','error','message','info','catch','util','moment'];(function(_0x2f4748,_0x24af55){var _0x18eece=function(_0x489dd6){while(--_0x489dd6){_0x2f4748['push'](_0x2f4748['shift']());}};_0x18eece(++_0x24af55);}(_0x62e3,0x174));var _0x362e=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x62e3[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0x362e('0x0'));var moment=require(_0x362e('0x1'));var BPromise=require(_0x362e('0x2'));var rs=require(_0x362e('0x3'));var fs=require('fs');var Redis=require(_0x362e('0x4'));var db=require(_0x362e('0x5'))['db'];var utils=require(_0x362e('0x6'));var logger=require('../../config/logger')(_0x362e('0x7'));var config=require(_0x362e('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x362e('0x9')][_0x362e('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x16c984,_0x28d705,_0x3e5843){return new BPromise(function(_0x47745f,_0x3be5e0){return client['request'](_0x16c984,_0x3e5843)[_0x362e('0xb')](function(_0x3b5485){logger['info'](_0x362e('0xc'),_0x28d705,_0x362e('0xd'));logger[_0x362e('0xe')](_0x362e('0xf'),_0x28d705,_0x362e('0xd'),JSON[_0x362e('0x10')](_0x3b5485));if(_0x3b5485['error']){if(_0x3b5485['error'][_0x362e('0x11')]===0x1f4){logger[_0x362e('0x12')](_0x362e('0xc'),_0x28d705,_0x3b5485[_0x362e('0x12')]['message']);return _0x3be5e0(_0x3b5485[_0x362e('0x12')]['message']);}logger[_0x362e('0x12')]('ChatProactiveAction,\x20%s,\x20%s',_0x28d705,_0x3b5485[_0x362e('0x12')][_0x362e('0x13')]);return _0x47745f(_0x3b5485[_0x362e('0x12')][_0x362e('0x13')]);}else{logger[_0x362e('0x14')](_0x362e('0xc'),_0x28d705,_0x362e('0xd'));_0x47745f(_0x3b5485['result'][_0x362e('0x13')]);}})[_0x362e('0x15')](function(_0x47a7f8){logger[_0x362e('0x12')]('ChatProactiveAction,\x20%s,\x20%s',_0x28d705,_0x47a7f8);_0x3be5e0(_0x47a7f8);});});}
\ No newline at end of file
+var _0x1b51=['info','ChatProactiveAction,\x20%s,\x20%s','ChatProactiveAction,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x1b51,0xef));var _0x11b5=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x1b51[_0x57b54c];return _0x59cc19;};'use strict';var _=require(_0x11b5('0x0'));var util=require(_0x11b5('0x1'));var moment=require(_0x11b5('0x2'));var BPromise=require(_0x11b5('0x3'));var rs=require(_0x11b5('0x4'));var fs=require('fs');var Redis=require(_0x11b5('0x5'));var db=require(_0x11b5('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x11b5('0x7'))(_0x11b5('0x8'));var config=require(_0x11b5('0x9'));var jayson=require(_0x11b5('0xa'));var client=jayson[_0x11b5('0xb')][_0x11b5('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x133fba,_0x264b23,_0x337f1b){return new BPromise(function(_0x62852e,_0x2cf38d){return client[_0x11b5('0xd')](_0x133fba,_0x337f1b)['then'](function(_0xee04c4){logger[_0x11b5('0xe')](_0x11b5('0xf'),_0x264b23,'request\x20sent');logger['debug'](_0x11b5('0x10'),_0x264b23,_0x11b5('0x11'),JSON['stringify'](_0xee04c4));if(_0xee04c4[_0x11b5('0x12')]){if(_0xee04c4[_0x11b5('0x12')][_0x11b5('0x13')]===0x1f4){logger[_0x11b5('0x12')]('ChatProactiveAction,\x20%s,\x20%s',_0x264b23,_0xee04c4[_0x11b5('0x12')][_0x11b5('0x14')]);return _0x2cf38d(_0xee04c4[_0x11b5('0x12')][_0x11b5('0x14')]);}logger[_0x11b5('0x12')](_0x11b5('0xf'),_0x264b23,_0xee04c4[_0x11b5('0x12')][_0x11b5('0x14')]);return _0x62852e(_0xee04c4[_0x11b5('0x12')][_0x11b5('0x14')]);}else{logger[_0x11b5('0xe')](_0x11b5('0xf'),_0x264b23,_0x11b5('0x11'));_0x62852e(_0xee04c4[_0x11b5('0x15')][_0x11b5('0x14')]);}})[_0x11b5('0x16')](function(_0x5070b8){logger['error'](_0x11b5('0xf'),_0x264b23,_0x5070b8);_0x2cf38d(_0x5070b8);});});}
\ No newline at end of file
index 10b6307..a592d7b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2bd8=['multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./chatProactiveAction.controller','get','/:id','show','post','isAuthenticated','create','exports'];(function(_0x2cfb58,_0x3d9412){var _0xd99951=function(_0x329afa){while(--_0x329afa){_0x2cfb58['push'](_0x2cfb58['shift']());}};_0xd99951(++_0x3d9412);}(_0x2bd8,0x130));var _0x82bd=function(_0x419a15,_0x265401){_0x419a15=_0x419a15-0x0;var _0x22a0d8=_0x2bd8[_0x419a15];return _0x22a0d8;};'use strict';var multer=require(_0x82bd('0x0'));var util=require('util');var path=require(_0x82bd('0x1'));var timeout=require(_0x82bd('0x2'));var express=require(_0x82bd('0x3'));var router=express[_0x82bd('0x4')]();var fs_extra=require(_0x82bd('0x5'));var auth=require(_0x82bd('0x6'));var interaction=require(_0x82bd('0x7'));var config=require('../../config/environment');var controller=require(_0x82bd('0x8'));router[_0x82bd('0x9')](_0x82bd('0xa'),auth['isAuthenticated'](),controller[_0x82bd('0xb')]);router[_0x82bd('0xc')]('/',auth[_0x82bd('0xd')](),controller[_0x82bd('0xe')]);router['put'](_0x82bd('0xa'),auth['isAuthenticated'](),controller['update']);router['delete'](_0x82bd('0xa'),auth['isAuthenticated'](),controller['destroy']);module[_0x82bd('0xf')]=router;
\ No newline at end of file
+var _0x5d17=['create','put','/:id','delete','destroy','exports','multer','util','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./chatProactiveAction.controller','get','isAuthenticated','show','post'];(function(_0x3c7811,_0x6238e8){var _0x4219d6=function(_0x611096){while(--_0x611096){_0x3c7811['push'](_0x3c7811['shift']());}};_0x4219d6(++_0x6238e8);}(_0x5d17,0x114));var _0x75d1=function(_0xf64026,_0x43afd3){_0xf64026=_0xf64026-0x0;var _0x1050be=_0x5d17[_0xf64026];return _0x1050be;};'use strict';var multer=require(_0x75d1('0x0'));var util=require(_0x75d1('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x75d1('0x2'));var router=express[_0x75d1('0x3')]();var fs_extra=require(_0x75d1('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x75d1('0x5'));var config=require(_0x75d1('0x6'));var controller=require(_0x75d1('0x7'));router[_0x75d1('0x8')]('/:id',auth[_0x75d1('0x9')](),controller[_0x75d1('0xa')]);router[_0x75d1('0xb')]('/',auth[_0x75d1('0x9')](),controller[_0x75d1('0xc')]);router[_0x75d1('0xd')](_0x75d1('0xe'),auth['isAuthenticated'](),controller['update']);router[_0x75d1('0xf')]('/:id',auth['isAuthenticated'](),controller[_0x75d1('0x10')]);module[_0x75d1('0x11')]=router;
\ No newline at end of file
index c67b73c..88c4458 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1fca=['sequelize','STRING','INTEGER','ENUM','beepall','roundrobin'];(function(_0x286fbe,_0x48085b){var _0x16114e=function(_0x33bd6d){while(--_0x33bd6d){_0x286fbe['push'](_0x286fbe['shift']());}};_0x16114e(++_0x48085b);}(_0x1fca,0xde));var _0xa1fc=function(_0x492fcf,_0x3f025b){_0x492fcf=_0x492fcf-0x0;var _0x41007b=_0x1fca[_0x492fcf];return _0x41007b;};'use strict';var Sequelize=require(_0xa1fc('0x0'));module['exports']={'name':{'type':Sequelize[_0xa1fc('0x1')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xa1fc('0x1')]},'timeout':{'type':Sequelize[_0xa1fc('0x2')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xa1fc('0x3')]('rrmemory',_0xa1fc('0x4'),_0xa1fc('0x5'))}};
\ No newline at end of file
+var _0x707d=['name','STRING','rrmemory','beepall','roundrobin','sequelize','exports'];(function(_0x15cfb7,_0x67d9e7){var _0x4bc585=function(_0x5b69bd){while(--_0x5b69bd){_0x15cfb7['push'](_0x15cfb7['shift']());}};_0x4bc585(++_0x67d9e7);}(_0x707d,0xfa));var _0xd707=function(_0xd1e4ac,_0x23bfc2){_0xd1e4ac=_0xd1e4ac-0x0;var _0x12af2d=_0x707d[_0xd1e4ac];return _0x12af2d;};'use strict';var Sequelize=require(_0xd707('0x0'));module[_0xd707('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0xd707('0x2'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xd707('0x3')]},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0xd707('0x4'),_0xd707('0x5'),_0xd707('0x6'))}};
\ No newline at end of file
index 3795f1c..9c122e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a21=['value','isEmpty','removeAgents','userChatQueue:remove','addAgents','omit','spread','isArray','getAgents','eml-format','rimraf','request-promise','bluebird','mustache','util','path','sox','ejs','fs-extra','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./chatQueue.socket','register','jayson/promise','client','http','info','ChatQueue,\x20%s,\x20%s','request\x20sent','debug','error','code','message','catch','sendStatus','status','json','limit','undefined','count','offset','set','Content-Range','reject','save','update','then','destroy','get','ChatQueues','UserProfileResource','end','stack','name','send','index','map','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','ChatQueue','includeAll','include','rows','show','params','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','UserChatQueue','hasOwnProperty','ChatQueueId','options','User','UserId','updatedAt','createdAt','%s/%s','SIP','getTeams','findOne','Team','addTeams','ids','findAll','Agents','interface','sequelize','transaction','each','findOrCreate','forEach','emit','userChatQueue:save','removeTeams','select','field','tq.TeamId','from','team_has_chat_queues','join','ChatQueueId\x20=\x20?','clone','toString','QueryTypes','SELECT','TeamId','all','union'];(function(_0x451052,_0x211e27){var _0x50df1b=function(_0x315764){while(--_0x315764){_0x451052['push'](_0x451052['shift']());}};_0x50df1b(++_0x211e27);}(_0x9a21,0x12f));var _0x19a2=function(_0x4f0b22,_0x586aa8){_0x4f0b22=_0x4f0b22-0x0;var _0x5c545e=_0x9a21[_0x4f0b22];return _0x5c545e;};'use strict';var emlformat=require(_0x19a2('0x0'));var rimraf=require(_0x19a2('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x19a2('0x2'));var moment=require('moment');var BPromise=require(_0x19a2('0x3'));var Mustache=require(_0x19a2('0x4'));var util=require(_0x19a2('0x5'));var path=require(_0x19a2('0x6'));var sox=require(_0x19a2('0x7'));var csv=require('to-csv');var ejs=require(_0x19a2('0x8'));var fs=require('fs');var fs_extra=require(_0x19a2('0x9'));var _=require('lodash');var squel=require(_0x19a2('0xa'));var crypto=require('crypto');var jsforce=require(_0x19a2('0xb'));var deskjs=require(_0x19a2('0xc'));var toCsv=require(_0x19a2('0xd'));var querystring=require(_0x19a2('0xe'));var Papa=require(_0x19a2('0xf'));var Redis=require(_0x19a2('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x19a2('0x11'));var logger=require(_0x19a2('0x12'))(_0x19a2('0x13'));var utils=require('../../config/utils');var config=require(_0x19a2('0x14'));var licenseUtil=require(_0x19a2('0x15'));var db=require(_0x19a2('0x16'))['db'];config['redis']=_[_0x19a2('0x17')](config[_0x19a2('0x18')],{'host':_0x19a2('0x19'),'port':0x18eb});var socket=require(_0x19a2('0x1a'))(new Redis(config[_0x19a2('0x18')]));require(_0x19a2('0x1b'))[_0x19a2('0x1c')](socket);var jayson=require(_0x19a2('0x1d'));var client=jayson[_0x19a2('0x1e')][_0x19a2('0x1f')]({'port':0x232a});function respondWithRpcPromise(_0x1fd343,_0x38c9d6,_0x1b4dd3,_0x7bccf7){return new BPromise(function(_0x1178cf,_0x1672fd){var _0x5afed7=_0x7bccf7||client;return _0x5afed7['request'](_0x1fd343,_0x1b4dd3)['then'](function(_0x36bf41){logger[_0x19a2('0x20')](_0x19a2('0x21'),_0x38c9d6,_0x19a2('0x22'));logger[_0x19a2('0x23')]('ChatQueue,\x20%s,\x20%s,\x20%s',_0x38c9d6,'request\x20sent',JSON['stringify'](_0x36bf41));if(_0x36bf41[_0x19a2('0x24')]){if(_0x36bf41[_0x19a2('0x24')][_0x19a2('0x25')]===0x1f4){logger[_0x19a2('0x24')](_0x19a2('0x21'),_0x38c9d6,_0x36bf41[_0x19a2('0x24')]['message']);return _0x1672fd(_0x36bf41['error'][_0x19a2('0x26')]);}logger[_0x19a2('0x24')](_0x19a2('0x21'),_0x38c9d6,_0x36bf41['error']['message']);return _0x1178cf(_0x36bf41['error'][_0x19a2('0x26')]);}else{logger[_0x19a2('0x20')](_0x19a2('0x21'),_0x38c9d6,_0x19a2('0x22'));_0x1178cf(_0x36bf41['result']['message']);}})[_0x19a2('0x27')](function(_0x18717b){logger[_0x19a2('0x24')](_0x19a2('0x21'),_0x38c9d6,_0x18717b);_0x1672fd(_0x18717b);});});}function respondWithStatusCode(_0x10216f,_0x445194){_0x445194=_0x445194||0xcc;return function(_0x1bb75d){if(_0x1bb75d){return _0x10216f[_0x19a2('0x28')](_0x445194);}return _0x10216f['status'](_0x445194)['end']();};}function respondWithResult(_0x4808b9,_0x2b5695){_0x2b5695=_0x2b5695||0xc8;return function(_0x11d3c2){if(_0x11d3c2){return _0x4808b9[_0x19a2('0x29')](_0x2b5695)[_0x19a2('0x2a')](_0x11d3c2);}};}function respondWithFilteredResult(_0x441a96,_0x33ba56){return function(_0x4b1a56){if(_0x4b1a56){var _0x41a8f1=typeof _0x33ba56['offset']==='undefined'&&typeof _0x33ba56[_0x19a2('0x2b')]===_0x19a2('0x2c');var _0x5d031d=_0x4b1a56[_0x19a2('0x2d')];var _0xe06d6c=_0x41a8f1?0x0:_0x33ba56[_0x19a2('0x2e')];var _0x1d4b3b=_0x41a8f1?_0x4b1a56[_0x19a2('0x2d')]:_0x33ba56[_0x19a2('0x2e')]+_0x33ba56[_0x19a2('0x2b')];var _0x15d179;if(_0x1d4b3b>=_0x5d031d){_0x1d4b3b=_0x5d031d;_0x15d179=0xc8;}else{_0x15d179=0xce;}_0x441a96['status'](_0x15d179);return _0x441a96[_0x19a2('0x2f')](_0x19a2('0x30'),_0xe06d6c+'-'+_0x1d4b3b+'/'+_0x5d031d)[_0x19a2('0x2a')](_0x4b1a56);}return null;};}function patchUpdates(_0x5a94e9){return function(_0x486030){try{jsonpatch['apply'](_0x486030,_0x5a94e9,!![]);}catch(_0x5254c1){return BPromise[_0x19a2('0x31')](_0x5254c1);}return _0x486030[_0x19a2('0x32')]();};}function saveUpdates(_0x2c4583,_0x36e8c5){return function(_0x6b5a01){if(_0x6b5a01){return _0x6b5a01[_0x19a2('0x33')](_0x2c4583)[_0x19a2('0x34')](function(_0x16d0b5){return _0x16d0b5;});}return null;};}function removeEntity(_0x5d68ac,_0x31d4dc){return function(_0x529e6b){if(_0x529e6b){return _0x529e6b[_0x19a2('0x35')]()['then'](function(){var _0x2fa11a=_0x529e6b[_0x19a2('0x36')]({'plain':!![]});var _0x32c417=_0x19a2('0x37');return db[_0x19a2('0x38')][_0x19a2('0x35')]({'where':{'type':_0x32c417,'resourceId':_0x2fa11a['id']}})[_0x19a2('0x34')](function(){return _0x529e6b;});})['then'](function(){_0x5d68ac[_0x19a2('0x29')](0xcc)[_0x19a2('0x39')]();});}};}function handleEntityNotFound(_0x5ea584,_0x43b8a0){return function(_0x471535){if(!_0x471535){_0x5ea584['sendStatus'](0x194);}return _0x471535;};}function handleError(_0xbacec5,_0x271da1){_0x271da1=_0x271da1||0x1f4;return function(_0x1480ea){logger['error'](_0x1480ea[_0x19a2('0x3a')]);if(_0x1480ea[_0x19a2('0x3b')]){delete _0x1480ea['name'];}_0xbacec5[_0x19a2('0x29')](_0x271da1)[_0x19a2('0x3c')](_0x1480ea);};}exports[_0x19a2('0x3d')]=function(_0x3bb662,_0x2725f1){var _0x524b5f={},_0x47e617={},_0x34b099={'count':0x0,'rows':[]};var _0x58ae3d=_[_0x19a2('0x3e')](db['ChatQueue'][_0x19a2('0x3f')],function(_0x54c847){return{'name':_0x54c847[_0x19a2('0x40')],'type':_0x54c847[_0x19a2('0x41')]['key']};});_0x47e617[_0x19a2('0x42')]=_[_0x19a2('0x3e')](_0x58ae3d,'name');_0x47e617[_0x19a2('0x43')]=_[_0x19a2('0x44')](_0x3bb662[_0x19a2('0x43')]);_0x47e617[_0x19a2('0x45')]=_[_0x19a2('0x46')](_0x47e617[_0x19a2('0x42')],_0x47e617[_0x19a2('0x43')]);_0x524b5f[_0x19a2('0x47')]=_[_0x19a2('0x46')](_0x47e617['model'],qs['fields'](_0x3bb662[_0x19a2('0x43')][_0x19a2('0x48')]));_0x524b5f[_0x19a2('0x47')]=_0x524b5f[_0x19a2('0x47')][_0x19a2('0x49')]?_0x524b5f[_0x19a2('0x47')]:_0x47e617['model'];if(!_0x3bb662[_0x19a2('0x43')]['hasOwnProperty'](_0x19a2('0x4a'))){_0x524b5f[_0x19a2('0x2b')]=qs[_0x19a2('0x2b')](_0x3bb662[_0x19a2('0x43')][_0x19a2('0x2b')]);_0x524b5f['offset']=qs['offset'](_0x3bb662['query'][_0x19a2('0x2e')]);}_0x524b5f[_0x19a2('0x4b')]=qs[_0x19a2('0x4c')](_0x3bb662[_0x19a2('0x43')][_0x19a2('0x4c')]);_0x524b5f[_0x19a2('0x4d')]=qs[_0x19a2('0x45')](_[_0x19a2('0x4e')](_0x3bb662[_0x19a2('0x43')],_0x47e617[_0x19a2('0x45')]),_0x58ae3d);if(_0x3bb662[_0x19a2('0x43')][_0x19a2('0x4f')]){_0x524b5f['where']=_[_0x19a2('0x50')](_0x524b5f[_0x19a2('0x4d')],{'$or':_[_0x19a2('0x3e')](_0x58ae3d,function(_0x51f663){if(_0x51f663[_0x19a2('0x41')]!==_0x19a2('0x51')){var _0x125b9e={};_0x125b9e[_0x51f663[_0x19a2('0x3b')]]={'$like':'%'+_0x3bb662[_0x19a2('0x43')][_0x19a2('0x4f')]+'%'};return _0x125b9e;}})});}_0x524b5f=_[_0x19a2('0x50')]({},_0x524b5f,_0x3bb662['options']);var _0x13ecd3={'where':_0x524b5f['where']};return db[_0x19a2('0x52')][_0x19a2('0x2d')](_0x13ecd3)[_0x19a2('0x34')](function(_0x3349c4){_0x34b099[_0x19a2('0x2d')]=_0x3349c4;if(_0x3bb662[_0x19a2('0x43')][_0x19a2('0x53')]){_0x524b5f[_0x19a2('0x54')]=[{'all':!![]}];}return db['ChatQueue']['findAll'](_0x524b5f);})[_0x19a2('0x34')](function(_0x96bad6){_0x34b099[_0x19a2('0x55')]=_0x96bad6;return _0x34b099;})[_0x19a2('0x34')](respondWithFilteredResult(_0x2725f1,_0x524b5f))['catch'](handleError(_0x2725f1,null));};exports[_0x19a2('0x56')]=function(_0x87edb6,_0x55b523){var _0x43d612={'raw':!![],'where':{'id':_0x87edb6[_0x19a2('0x57')]['id']}},_0x3565ca={};_0x3565ca['model']=_[_0x19a2('0x44')](db[_0x19a2('0x52')][_0x19a2('0x3f')]);_0x3565ca[_0x19a2('0x43')]=_[_0x19a2('0x44')](_0x87edb6[_0x19a2('0x43')]);_0x3565ca[_0x19a2('0x45')]=_[_0x19a2('0x46')](_0x3565ca[_0x19a2('0x42')],_0x3565ca[_0x19a2('0x43')]);_0x43d612[_0x19a2('0x47')]=_[_0x19a2('0x46')](_0x3565ca[_0x19a2('0x42')],qs[_0x19a2('0x48')](_0x87edb6[_0x19a2('0x43')][_0x19a2('0x48')]));_0x43d612['attributes']=_0x43d612['attributes'][_0x19a2('0x49')]?_0x43d612[_0x19a2('0x47')]:_0x3565ca[_0x19a2('0x42')];if(_0x87edb6[_0x19a2('0x43')][_0x19a2('0x53')]){_0x43d612[_0x19a2('0x54')]=[{'all':!![]}];}_0x43d612=_[_0x19a2('0x50')]({},_0x43d612,_0x87edb6['options']);return db[_0x19a2('0x52')][_0x19a2('0x58')](_0x43d612)['then'](handleEntityNotFound(_0x55b523,null))[_0x19a2('0x34')](respondWithResult(_0x55b523,null))[_0x19a2('0x27')](handleError(_0x55b523,null));};exports[_0x19a2('0x59')]=function(_0x32c4ed,_0x54c95b){return db['ChatQueue'][_0x19a2('0x59')](_0x32c4ed['body'],{})['then'](function(_0x5c6b98){var _0x41e484=_0x32c4ed[_0x19a2('0x5a')][_0x19a2('0x36')]({'plain':!![]});if(!_0x41e484)throw new Error(_0x19a2('0x5b'));if(_0x41e484[_0x19a2('0x5c')]===_0x19a2('0x5a')){var _0x22ae3a=_0x5c6b98[_0x19a2('0x36')]({'plain':!![]});var _0x41655e='ChatQueues';return db[_0x19a2('0x5d')]['find']({'where':{'name':_0x41655e,'userProfileId':_0x41e484[_0x19a2('0x5e')]},'raw':!![]})[_0x19a2('0x34')](function(_0x547628){if(_0x547628&&_0x547628['autoAssociation']===0x0){return db['UserProfileResource'][_0x19a2('0x59')]({'name':_0x22ae3a[_0x19a2('0x3b')],'resourceId':_0x22ae3a['id'],'type':_0x547628['name'],'sectionId':_0x547628['id']},{})[_0x19a2('0x34')](function(){return _0x5c6b98;});}else{return _0x5c6b98;}})['catch'](function(_0x460cb6){logger[_0x19a2('0x24')](_0x19a2('0x5f'),_0x460cb6);throw _0x460cb6;});}return _0x5c6b98;})[_0x19a2('0x34')](respondWithResult(_0x54c95b,0xc9))[_0x19a2('0x27')](handleError(_0x54c95b,null));};exports['update']=function(_0x107a87,_0x12298e){if(_0x107a87[_0x19a2('0x60')]['id']){delete _0x107a87[_0x19a2('0x60')]['id'];}return db[_0x19a2('0x52')][_0x19a2('0x58')]({'where':{'id':_0x107a87['params']['id']}})[_0x19a2('0x34')](handleEntityNotFound(_0x12298e,null))[_0x19a2('0x34')](saveUpdates(_0x107a87['body'],null))['then'](respondWithResult(_0x12298e,null))[_0x19a2('0x27')](handleError(_0x12298e,null));};exports[_0x19a2('0x35')]=function(_0x3cc5b7,_0x1bd64c){return db['ChatQueue'][_0x19a2('0x58')]({'where':{'id':_0x3cc5b7[_0x19a2('0x57')]['id']}})[_0x19a2('0x34')](handleEntityNotFound(_0x1bd64c,null))[_0x19a2('0x34')](removeEntity(_0x1bd64c,null))[_0x19a2('0x27')](handleError(_0x1bd64c,null));};exports[_0x19a2('0x61')]=function(_0x5d42f5,_0x5a83cf){return db[_0x19a2('0x52')][_0x19a2('0x61')]()[_0x19a2('0x34')](respondWithResult(_0x5a83cf,null))[_0x19a2('0x27')](handleError(_0x5a83cf,null));};exports['getMembers']=function(_0x3b03d8,_0x140ba6,_0x5d1e50){var _0x41b471={'raw':!![],'where':{}},_0x486b50={},_0x214299;return db[_0x19a2('0x52')]['findOne']({'where':{'id':_0x3b03d8[_0x19a2('0x57')]['id']}})[_0x19a2('0x34')](handleEntityNotFound(_0x140ba6,null))[_0x19a2('0x34')](function(_0x1da01f){if(_0x1da01f){_0x214299=_0x1da01f[_0x19a2('0x36')]({'plain':!![]});_0x486b50[_0x19a2('0x42')]=_[_0x19a2('0x44')](db[_0x19a2('0x62')][_0x19a2('0x3f')]);_0x486b50[_0x19a2('0x43')]=_[_0x19a2('0x44')](_0x3b03d8[_0x19a2('0x43')]);_0x486b50[_0x19a2('0x45')]=_[_0x19a2('0x46')](_0x486b50[_0x19a2('0x42')],_0x486b50['query']);_0x41b471[_0x19a2('0x47')]=_[_0x19a2('0x46')](_0x486b50['model'],qs[_0x19a2('0x48')](_0x3b03d8['query'][_0x19a2('0x48')]));_0x41b471[_0x19a2('0x47')]=_0x41b471[_0x19a2('0x47')][_0x19a2('0x49')]?_0x41b471[_0x19a2('0x47')]:_0x486b50[_0x19a2('0x42')];if(!_0x3b03d8['query'][_0x19a2('0x63')](_0x19a2('0x4a'))){_0x41b471[_0x19a2('0x2b')]=qs[_0x19a2('0x2b')](_0x3b03d8[_0x19a2('0x43')][_0x19a2('0x2b')]);_0x41b471[_0x19a2('0x2e')]=qs[_0x19a2('0x2e')](_0x3b03d8[_0x19a2('0x43')]['offset']);}_0x41b471[_0x19a2('0x4b')]=qs[_0x19a2('0x4c')](_0x3b03d8[_0x19a2('0x43')][_0x19a2('0x4c')]);_0x41b471['where']=qs[_0x19a2('0x45')](_['pick'](_0x3b03d8[_0x19a2('0x43')],_0x486b50['filters']));_0x41b471[_0x19a2('0x4d')][_0x19a2('0x64')]=_0x1da01f['id'];if(_0x3b03d8[_0x19a2('0x43')]['filter']){_0x41b471[_0x19a2('0x4d')]=_[_0x19a2('0x50')](_0x41b471[_0x19a2('0x4d')],{'$or':_['map'](_0x41b471[_0x19a2('0x47')],function(_0x2921d1){var _0x2863e2={};_0x2863e2[_0x2921d1]={'$like':'%'+_0x3b03d8['query'][_0x19a2('0x4f')]+'%'};return _0x2863e2;})});}_0x41b471=_[_0x19a2('0x50')]({},_0x41b471,_0x3b03d8[_0x19a2('0x65')]);return db['UserChatQueue']['findAll'](_0x41b471);}})[_0x19a2('0x34')](function(_0x1df4b3){if(_0x1df4b3){return db[_0x19a2('0x66')]['findAndCountAll']({'where':{'id':_['map'](_0x1df4b3,_0x19a2('0x67')),'role':'agent'},'attributes':['id',_0x19a2('0x3b'),'chatPause',_0x19a2('0x68'),_0x19a2('0x69')]});}})[_0x19a2('0x34')](function(_0x3b600f){if(_0x3b600f){return{'count':_0x3b600f['count'],'rows':_['map'](_0x3b600f[_0x19a2('0x55')],function(_0x4a5be6){return{'membername':_0x4a5be6[_0x19a2('0x3b')],'UserId':_0x4a5be6['id'],'queue_name':_0x214299[_0x19a2('0x3b')],'ChatQueueId':_0x214299['id'],'interface':util['format'](_0x19a2('0x6a'),_0x19a2('0x6b'),_0x4a5be6[_0x19a2('0x3b')]),'penalty':0x0,'paused':_0x4a5be6['chatPause'],'createdAt':_0x4a5be6['createdAt'],'updatedAt':_0x4a5be6[_0x19a2('0x68')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x140ba6,_0x41b471))[_0x19a2('0x27')](handleError(_0x140ba6,null));};exports[_0x19a2('0x6c')]=function(_0x123a32,_0x4a40fb,_0x32694e){var _0x509392={};var _0x24984a={};var _0x2a56f0;var _0x1fed33;return db[_0x19a2('0x52')][_0x19a2('0x6d')]({'where':{'id':_0x123a32['params']['id']}})['then'](handleEntityNotFound(_0x4a40fb,null))[_0x19a2('0x34')](function(_0x5ccaac){if(_0x5ccaac){_0x2a56f0=_0x5ccaac;_0x24984a[_0x19a2('0x42')]=_[_0x19a2('0x44')](db[_0x19a2('0x6e')][_0x19a2('0x3f')]);_0x24984a[_0x19a2('0x43')]=_[_0x19a2('0x44')](_0x123a32[_0x19a2('0x43')]);_0x24984a[_0x19a2('0x45')]=_[_0x19a2('0x46')](_0x24984a[_0x19a2('0x42')],_0x24984a[_0x19a2('0x43')]);_0x509392[_0x19a2('0x47')]=_['intersection'](_0x24984a[_0x19a2('0x42')],qs['fields'](_0x123a32[_0x19a2('0x43')][_0x19a2('0x48')]));_0x509392[_0x19a2('0x47')]=_0x509392[_0x19a2('0x47')][_0x19a2('0x49')]?_0x509392[_0x19a2('0x47')]:_0x24984a[_0x19a2('0x42')];_0x509392[_0x19a2('0x4b')]=qs[_0x19a2('0x4c')](_0x123a32[_0x19a2('0x43')][_0x19a2('0x4c')]);_0x509392[_0x19a2('0x4d')]=qs[_0x19a2('0x45')](_[_0x19a2('0x4e')](_0x123a32['query'],_0x24984a[_0x19a2('0x45')]));if(_0x123a32[_0x19a2('0x43')]['filter']){_0x509392[_0x19a2('0x4d')]=_[_0x19a2('0x50')](_0x509392[_0x19a2('0x4d')],{'$or':_[_0x19a2('0x3e')](_0x509392[_0x19a2('0x47')],function(_0x11ffeb){var _0x5b1ea6={};_0x5b1ea6[_0x11ffeb]={'$like':'%'+_0x123a32['query'][_0x19a2('0x4f')]+'%'};return _0x5b1ea6;})});}_0x509392=_[_0x19a2('0x50')]({},_0x509392,_0x123a32[_0x19a2('0x65')]);return _0x2a56f0['getTeams'](_0x509392);}})[_0x19a2('0x34')](function(_0x496626){if(_0x496626){_0x1fed33=_0x496626['length'];if(!_0x123a32[_0x19a2('0x43')]['hasOwnProperty'](_0x19a2('0x4a'))){_0x509392[_0x19a2('0x2b')]=qs[_0x19a2('0x2b')](_0x123a32[_0x19a2('0x43')][_0x19a2('0x2b')]);_0x509392[_0x19a2('0x2e')]=qs[_0x19a2('0x2e')](_0x123a32['query'][_0x19a2('0x2e')]);}return _0x2a56f0['getTeams'](_0x509392);}})[_0x19a2('0x34')](function(_0x58ae10){if(_0x58ae10){return _0x58ae10?{'count':_0x1fed33,'rows':_0x58ae10}:null;}})[_0x19a2('0x34')](respondWithResult(_0x4a40fb,null))[_0x19a2('0x27')](handleError(_0x4a40fb,null));};exports[_0x19a2('0x6f')]=function(_0x219957,_0x382dcf,_0x1a20c5){var _0x3ecb0c=_0x219957[_0x19a2('0x60')][_0x19a2('0x70')];return db[_0x19a2('0x6e')][_0x19a2('0x71')]({'where':{'id':_0x3ecb0c},'attributes':['id'],'include':[{'model':db['User'],'as':_0x19a2('0x72'),'attributes':['id',_0x19a2('0x3b'),'online','voicePause',_0x19a2('0x73')],'raw':!![]}]})['then'](function(_0x4f217b){if(_0x4f217b){var _0xe6876b=_['flatMap'](_0x4f217b,function(_0x4423f0){var _0x3b1381=_0x4423f0[_0x19a2('0x36')]({'plain':!![]});return _0x3b1381['Agents'];});return db[_0x19a2('0x52')]['find']({'where':{'id':_0x219957[_0x19a2('0x57')]['id']}})['then'](function(_0x72d337){return db[_0x19a2('0x74')][_0x19a2('0x75')](function(_0x241db7){return _0x72d337[_0x19a2('0x6f')](_0x3ecb0c,{'transaction':_0x241db7})[_0x19a2('0x34')](function(){return BPromise[_0x19a2('0x76')](_0xe6876b,function(_0x6f1ce4){return db['UserChatQueue'][_0x19a2('0x77')]({'where':{'UserId':_0x6f1ce4['id'],'ChatQueueId':_0x219957[_0x19a2('0x57')]['id']},'transaction':_0x241db7});});})[_0x19a2('0x34')](function(){_0xe6876b[_0x19a2('0x78')](function(_0x3bb7b0){socket[_0x19a2('0x79')](_0x19a2('0x7a'),{'UserId':_0x3bb7b0['id'],'ChatQueueId':_0x72d337['id']});});});});});}})[_0x19a2('0x34')](respondWithStatusCode(_0x382dcf,null))[_0x19a2('0x27')](handleError(_0x382dcf,null));};exports[_0x19a2('0x7b')]=function(_0x1f1de8,_0x39f30c,_0x4f5e9a){return db[_0x19a2('0x6e')][_0x19a2('0x71')]({'where':{'id':_0x1f1de8[_0x19a2('0x43')]['ids']},'attributes':['id'],'include':[{'model':db[_0x19a2('0x66')],'as':_0x19a2('0x72'),'attributes':['id'],'raw':!![]}]})[_0x19a2('0x34')](handleEntityNotFound(_0x39f30c,null))[_0x19a2('0x34')](function(_0x31344e){var _0x3e584a=_['map'](_0x31344e,'id');var _0x20f5bb=[];var _0x1c14b7=[];var _0xe5836c=squel[_0x19a2('0x7c')]();_0xe5836c[_0x19a2('0x7d')](_0x19a2('0x7e'))[_0x19a2('0x7f')](_0x19a2('0x80'),'tq')[_0x19a2('0x81')]('user_has_teams','ut','ut.TeamId\x20=\x20tq.TeamId')[_0x19a2('0x4d')](_0x19a2('0x82'),_0x1f1de8['params']['id']);for(var _0x6e5519=0x0;_0x6e5519<_0x31344e['length'];_0x6e5519+=0x1){let _0x404683=_0x31344e[_0x6e5519];for(var _0x5c9ec0=0x0;_0x5c9ec0<_0x404683[_0x19a2('0x72')][_0x19a2('0x49')];_0x5c9ec0+=0x1){let _0x63c4c7=_0x404683[_0x19a2('0x72')][_0x5c9ec0];var _0x105133=_0xe5836c[_0x19a2('0x83')]();_0x105133['where']('ut.UserId\x20=\x20?',_0x63c4c7['id']);_0x1c14b7['push'](db[_0x19a2('0x74')][_0x19a2('0x43')](_0x105133[_0x19a2('0x84')](),{'type':db[_0x19a2('0x74')][_0x19a2('0x85')][_0x19a2('0x86')]})[_0x19a2('0x34')](function(_0x2a23f3){if(_0x2a23f3['length']===0x1){return _0x63c4c7['id'];}else{var _0x5491e9=_['every'](_[_0x19a2('0x3e')](_0x2a23f3,_0x19a2('0x87')),function(_0x5ca18d){return _['includes'](_0x3e584a,_0x5ca18d);});if(_0x5491e9){return _0x63c4c7['id'];}}}));}}return BPromise[_0x19a2('0x88')](_0x1c14b7)[_0x19a2('0x34')](function(_0x3892af){_0x20f5bb=_(_0x20f5bb)[_0x19a2('0x89')](_0x3892af)['compact']()[_0x19a2('0x8a')]();return db[_0x19a2('0x52')][_0x19a2('0x58')]({'where':{'id':_0x1f1de8['params']['id']}})['then'](function(_0x13ca6c){return db[_0x19a2('0x74')][_0x19a2('0x75')](function(_0x44d833){return _0x13ca6c['removeTeams'](_0x1f1de8[_0x19a2('0x43')]['ids'],{'transaction':_0x44d833})[_0x19a2('0x34')](function(){if(!_[_0x19a2('0x8b')](_0x20f5bb)){return _0x13ca6c[_0x19a2('0x8c')](_0x20f5bb,{'transaction':_0x44d833});}})[_0x19a2('0x34')](function(){_0x20f5bb[_0x19a2('0x78')](function(_0x387a4a){socket['emit'](_0x19a2('0x8d'),{'UserId':_0x387a4a,'ChatQueueId':_0x13ca6c['id']});});});});});});})[_0x19a2('0x34')](respondWithStatusCode(_0x39f30c,null))[_0x19a2('0x27')](handleError(_0x39f30c,null));};exports[_0x19a2('0x8e')]=function(_0x4146e2,_0x4ea9ee,_0x230f17){return db['ChatQueue'][_0x19a2('0x58')]({'where':{'id':_0x4146e2[_0x19a2('0x57')]['id']}})[_0x19a2('0x34')](handleEntityNotFound(_0x4ea9ee,null))[_0x19a2('0x34')](function(_0x33bb7d){if(_0x33bb7d){return _0x33bb7d['addAgents'](_0x4146e2[_0x19a2('0x60')][_0x19a2('0x70')],_[_0x19a2('0x8f')](_0x4146e2[_0x19a2('0x60')],[_0x19a2('0x70'),'id'])||{})[_0x19a2('0x90')](function(_0x5be906){for(var _0x1ffce1=0x0;_0x1ffce1<_0x4146e2['body'][_0x19a2('0x70')]['length'];_0x1ffce1+=0x1){socket[_0x19a2('0x79')](_0x19a2('0x7a'),{'UserId':Number(_0x4146e2[_0x19a2('0x60')][_0x19a2('0x70')][_0x1ffce1]),'ChatQueueId':Number(_0x4146e2[_0x19a2('0x57')]['id'])});}return _0x5be906;});}})['then'](respondWithResult(_0x4ea9ee,null))['catch'](handleError(_0x4ea9ee,null));};exports[_0x19a2('0x8c')]=function(_0x475aed,_0x4713c0,_0x589fd0){return db['ChatQueue']['find']({'where':{'id':_0x475aed[_0x19a2('0x57')]['id']}})[_0x19a2('0x34')](handleEntityNotFound(_0x4713c0,null))['then'](function(_0x25afc9){if(_0x25afc9){return _0x25afc9[_0x19a2('0x8c')](_0x475aed[_0x19a2('0x43')][_0x19a2('0x70')])[_0x19a2('0x34')](function(){if(_[_0x19a2('0x91')](_0x475aed[_0x19a2('0x43')][_0x19a2('0x70')])){for(var _0x3d2f5e=0x0;_0x3d2f5e<_0x475aed[_0x19a2('0x43')][_0x19a2('0x70')]['length'];_0x3d2f5e+=0x1){socket[_0x19a2('0x79')]('userChatQueue:remove',{'UserId':Number(_0x475aed[_0x19a2('0x43')][_0x19a2('0x70')][_0x3d2f5e]),'ChatQueueId':Number(_0x475aed['params']['id'])});}}else{socket[_0x19a2('0x79')](_0x19a2('0x8d'),{'UserId':Number(_0x475aed[_0x19a2('0x43')]['ids']),'ChatQueueId':Number(_0x475aed[_0x19a2('0x57')]['id'])});}});}})['then'](respondWithStatusCode(_0x4713c0,null))['catch'](handleError(_0x4713c0,null));};exports[_0x19a2('0x92')]=function(_0x235aba,_0x21dcf0,_0x322821){var _0x33279f={};var _0x361dc6={};var _0x2c8683;var _0x3730d3;return db[_0x19a2('0x52')][_0x19a2('0x6d')]({'where':{'id':_0x235aba[_0x19a2('0x57')]['id']}})[_0x19a2('0x34')](handleEntityNotFound(_0x21dcf0,null))[_0x19a2('0x34')](function(_0x861e6c){if(_0x861e6c){_0x2c8683=_0x861e6c;_0x361dc6[_0x19a2('0x42')]=_[_0x19a2('0x44')](db[_0x19a2('0x66')]['rawAttributes']);_0x361dc6[_0x19a2('0x43')]=_[_0x19a2('0x44')](_0x235aba[_0x19a2('0x43')]);_0x361dc6[_0x19a2('0x45')]=_[_0x19a2('0x46')](_0x361dc6[_0x19a2('0x42')],_0x361dc6['query']);_0x33279f[_0x19a2('0x47')]=_[_0x19a2('0x46')](_0x361dc6[_0x19a2('0x42')],qs[_0x19a2('0x48')](_0x235aba[_0x19a2('0x43')]['fields']));_0x33279f[_0x19a2('0x47')]=_0x33279f['attributes']['length']?_0x33279f[_0x19a2('0x47')]:_0x361dc6[_0x19a2('0x42')];_0x33279f['order']=qs[_0x19a2('0x4c')](_0x235aba['query'][_0x19a2('0x4c')]);_0x33279f['where']=qs[_0x19a2('0x45')](_[_0x19a2('0x4e')](_0x235aba[_0x19a2('0x43')],_0x361dc6[_0x19a2('0x45')]));if(_0x235aba['query'][_0x19a2('0x4f')]){_0x33279f[_0x19a2('0x4d')]=_['merge'](_0x33279f[_0x19a2('0x4d')],{'$or':_['map'](_0x33279f[_0x19a2('0x47')],function(_0x22c6b8){var _0x44157a={};_0x44157a[_0x22c6b8]={'$like':'%'+_0x235aba['query'][_0x19a2('0x4f')]+'%'};return _0x44157a;})});}_0x33279f=_[_0x19a2('0x50')]({},_0x33279f,_0x235aba['options']);return _0x2c8683[_0x19a2('0x92')](_0x33279f);}})[_0x19a2('0x34')](function(_0x170f5a){if(_0x170f5a){_0x3730d3=_0x170f5a[_0x19a2('0x49')];if(!_0x235aba[_0x19a2('0x43')]['hasOwnProperty'](_0x19a2('0x4a'))){_0x33279f[_0x19a2('0x2b')]=qs[_0x19a2('0x2b')](_0x235aba[_0x19a2('0x43')][_0x19a2('0x2b')]);_0x33279f[_0x19a2('0x2e')]=qs['offset'](_0x235aba[_0x19a2('0x43')][_0x19a2('0x2e')]);}return _0x2c8683[_0x19a2('0x92')](_0x33279f);}})[_0x19a2('0x34')](function(_0x11c1a5){if(_0x11c1a5){return _0x11c1a5?{'count':_0x3730d3,'rows':_0x11c1a5}:null;}})[_0x19a2('0x34')](respondWithResult(_0x21dcf0,null))[_0x19a2('0x27')](handleError(_0x21dcf0,null));};
\ No newline at end of file
+var _0x3377=['destroy','get','UserProfileResource','name','send','index','fieldName','type','key','model','map','query','filters','intersection','fields','attributes','length','nolimit','order','sort','where','pick','filter','merge','options','ChatQueue','includeAll','include','rows','show','params','keys','rawAttributes','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','ChatQueues','UserProfileSection','find','userProfileId','autoAssociation','describe','getMembers','findOne','hasOwnProperty','ChatQueueId','UserChatQueue','findAll','updatedAt','createdAt','format','SIP','chatPause','getTeams','ids','Team','User','Agents','online','voicePause','interface','flatMap','sequelize','each','findOrCreate','forEach','removeTeams','field','tq.TeamId','team_has_chat_queues','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','ChatQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','toString','QueryTypes','every','TeamId','includes','all','union','compact','transaction','isEmpty','removeAgents','emit','userChatQueue:remove','omit','spread','userChatQueue:save','getAgents','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./chatQueue.socket','register','jayson/promise','client','http','ChatQueue,\x20%s,\x20%s','request\x20sent','debug','ChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','sendStatus','status','end','json','offset','limit','undefined','count','set','apply','reject','update','then'];(function(_0x5678b5,_0x1c4aa8){var _0x4c09a5=function(_0x2aa89a){while(--_0x2aa89a){_0x5678b5['push'](_0x5678b5['shift']());}};_0x4c09a5(++_0x1c4aa8);}(_0x3377,0x192));var _0x7337=function(_0x1772a7,_0x35b646){_0x1772a7=_0x1772a7-0x0;var _0x37f4fc=_0x3377[_0x1772a7];return _0x37f4fc;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7337('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x7337('0x1'));var rp=require(_0x7337('0x2'));var moment=require(_0x7337('0x3'));var BPromise=require(_0x7337('0x4'));var Mustache=require(_0x7337('0x5'));var util=require(_0x7337('0x6'));var path=require(_0x7337('0x7'));var sox=require('sox');var csv=require(_0x7337('0x8'));var ejs=require(_0x7337('0x9'));var fs=require('fs');var fs_extra=require(_0x7337('0xa'));var _=require('lodash');var squel=require(_0x7337('0xb'));var crypto=require(_0x7337('0xc'));var jsforce=require(_0x7337('0xd'));var deskjs=require(_0x7337('0xe'));var toCsv=require('to-csv');var querystring=require(_0x7337('0xf'));var Papa=require(_0x7337('0x10'));var Redis=require(_0x7337('0x11'));var authService=require(_0x7337('0x12'));var qs=require(_0x7337('0x13'));var as=require(_0x7337('0x14'));var hardwareService=require(_0x7337('0x15'));var logger=require(_0x7337('0x16'))(_0x7337('0x17'));var utils=require(_0x7337('0x18'));var config=require(_0x7337('0x19'));var licenseUtil=require(_0x7337('0x1a'));var db=require('../../mysqldb')['db'];config[_0x7337('0x1b')]=_[_0x7337('0x1c')](config['redis'],{'host':_0x7337('0x1d'),'port':0x18eb});var socket=require(_0x7337('0x1e'))(new Redis(config[_0x7337('0x1b')]));require(_0x7337('0x1f'))[_0x7337('0x20')](socket);var jayson=require(_0x7337('0x21'));var client=jayson[_0x7337('0x22')][_0x7337('0x23')]({'port':0x232a});function respondWithRpcPromise(_0x567e2a,_0x4ce6fe,_0x3b3452,_0x2d8c3){return new BPromise(function(_0x227ed0,_0x4a9d86){var _0x1b2a50=_0x2d8c3||client;return _0x1b2a50['request'](_0x567e2a,_0x3b3452)['then'](function(_0x4f88db){logger['info'](_0x7337('0x24'),_0x4ce6fe,_0x7337('0x25'));logger[_0x7337('0x26')](_0x7337('0x27'),_0x4ce6fe,_0x7337('0x25'),JSON[_0x7337('0x28')](_0x4f88db));if(_0x4f88db[_0x7337('0x29')]){if(_0x4f88db[_0x7337('0x29')][_0x7337('0x2a')]===0x1f4){logger[_0x7337('0x29')](_0x7337('0x24'),_0x4ce6fe,_0x4f88db[_0x7337('0x29')][_0x7337('0x2b')]);return _0x4a9d86(_0x4f88db[_0x7337('0x29')][_0x7337('0x2b')]);}logger[_0x7337('0x29')](_0x7337('0x24'),_0x4ce6fe,_0x4f88db['error'][_0x7337('0x2b')]);return _0x227ed0(_0x4f88db['error'][_0x7337('0x2b')]);}else{logger[_0x7337('0x2c')](_0x7337('0x24'),_0x4ce6fe,_0x7337('0x25'));_0x227ed0(_0x4f88db[_0x7337('0x2d')][_0x7337('0x2b')]);}})[_0x7337('0x2e')](function(_0x15cb78){logger[_0x7337('0x29')](_0x7337('0x24'),_0x4ce6fe,_0x15cb78);_0x4a9d86(_0x15cb78);});});}function respondWithStatusCode(_0x52c545,_0x5e05db){_0x5e05db=_0x5e05db||0xcc;return function(_0x16f563){if(_0x16f563){return _0x52c545[_0x7337('0x2f')](_0x5e05db);}return _0x52c545[_0x7337('0x30')](_0x5e05db)[_0x7337('0x31')]();};}function respondWithResult(_0x1ab080,_0x3b6a30){_0x3b6a30=_0x3b6a30||0xc8;return function(_0x3b2e6c){if(_0x3b2e6c){return _0x1ab080['status'](_0x3b6a30)[_0x7337('0x32')](_0x3b2e6c);}};}function respondWithFilteredResult(_0x1d9158,_0xa7d798){return function(_0xc34194){if(_0xc34194){var _0x3932e6=typeof _0xa7d798[_0x7337('0x33')]==='undefined'&&typeof _0xa7d798[_0x7337('0x34')]===_0x7337('0x35');var _0x28fc60=_0xc34194[_0x7337('0x36')];var _0x490160=_0x3932e6?0x0:_0xa7d798[_0x7337('0x33')];var _0x46fbc3=_0x3932e6?_0xc34194['count']:_0xa7d798[_0x7337('0x33')]+_0xa7d798[_0x7337('0x34')];var _0x153b26;if(_0x46fbc3>=_0x28fc60){_0x46fbc3=_0x28fc60;_0x153b26=0xc8;}else{_0x153b26=0xce;}_0x1d9158[_0x7337('0x30')](_0x153b26);return _0x1d9158[_0x7337('0x37')]('Content-Range',_0x490160+'-'+_0x46fbc3+'/'+_0x28fc60)[_0x7337('0x32')](_0xc34194);}return null;};}function patchUpdates(_0x2d8c2e){return function(_0x187026){try{jsonpatch[_0x7337('0x38')](_0x187026,_0x2d8c2e,!![]);}catch(_0x2225ee){return BPromise[_0x7337('0x39')](_0x2225ee);}return _0x187026['save']();};}function saveUpdates(_0x410abd,_0x5e9c21){return function(_0x583eef){if(_0x583eef){return _0x583eef[_0x7337('0x3a')](_0x410abd)[_0x7337('0x3b')](function(_0x1b9117){return _0x1b9117;});}return null;};}function removeEntity(_0x3c9f31,_0x1f061b){return function(_0x38bacd){if(_0x38bacd){return _0x38bacd[_0x7337('0x3c')]()[_0x7337('0x3b')](function(){var _0x258579=_0x38bacd[_0x7337('0x3d')]({'plain':!![]});var _0x11b6f0='ChatQueues';return db[_0x7337('0x3e')][_0x7337('0x3c')]({'where':{'type':_0x11b6f0,'resourceId':_0x258579['id']}})[_0x7337('0x3b')](function(){return _0x38bacd;});})['then'](function(){_0x3c9f31['status'](0xcc)[_0x7337('0x31')]();});}};}function handleEntityNotFound(_0x12cfb8,_0x4a17c1){return function(_0x4762da){if(!_0x4762da){_0x12cfb8['sendStatus'](0x194);}return _0x4762da;};}function handleError(_0x1cab07,_0x10f973){_0x10f973=_0x10f973||0x1f4;return function(_0x5aca00){logger[_0x7337('0x29')](_0x5aca00['stack']);if(_0x5aca00[_0x7337('0x3f')]){delete _0x5aca00[_0x7337('0x3f')];}_0x1cab07[_0x7337('0x30')](_0x10f973)[_0x7337('0x40')](_0x5aca00);};}exports[_0x7337('0x41')]=function(_0x40c234,_0x2574c2){var _0x17f5be={},_0x17d3f7={},_0x4428c4={'count':0x0,'rows':[]};var _0x77008f=_['map'](db['ChatQueue']['rawAttributes'],function(_0xa3d4c4){return{'name':_0xa3d4c4[_0x7337('0x42')],'type':_0xa3d4c4[_0x7337('0x43')][_0x7337('0x44')]};});_0x17d3f7[_0x7337('0x45')]=_[_0x7337('0x46')](_0x77008f,'name');_0x17d3f7[_0x7337('0x47')]=_['keys'](_0x40c234['query']);_0x17d3f7[_0x7337('0x48')]=_[_0x7337('0x49')](_0x17d3f7[_0x7337('0x45')],_0x17d3f7[_0x7337('0x47')]);_0x17f5be['attributes']=_[_0x7337('0x49')](_0x17d3f7[_0x7337('0x45')],qs['fields'](_0x40c234[_0x7337('0x47')][_0x7337('0x4a')]));_0x17f5be[_0x7337('0x4b')]=_0x17f5be[_0x7337('0x4b')][_0x7337('0x4c')]?_0x17f5be[_0x7337('0x4b')]:_0x17d3f7['model'];if(!_0x40c234[_0x7337('0x47')]['hasOwnProperty'](_0x7337('0x4d'))){_0x17f5be[_0x7337('0x34')]=qs[_0x7337('0x34')](_0x40c234['query'][_0x7337('0x34')]);_0x17f5be[_0x7337('0x33')]=qs[_0x7337('0x33')](_0x40c234['query']['offset']);}_0x17f5be[_0x7337('0x4e')]=qs[_0x7337('0x4f')](_0x40c234[_0x7337('0x47')][_0x7337('0x4f')]);_0x17f5be[_0x7337('0x50')]=qs[_0x7337('0x48')](_[_0x7337('0x51')](_0x40c234[_0x7337('0x47')],_0x17d3f7[_0x7337('0x48')]),_0x77008f);if(_0x40c234[_0x7337('0x47')][_0x7337('0x52')]){_0x17f5be[_0x7337('0x50')]=_[_0x7337('0x53')](_0x17f5be['where'],{'$or':_[_0x7337('0x46')](_0x77008f,function(_0x950884){if(_0x950884[_0x7337('0x43')]!=='VIRTUAL'){var _0x54f194={};_0x54f194[_0x950884[_0x7337('0x3f')]]={'$like':'%'+_0x40c234['query']['filter']+'%'};return _0x54f194;}})});}_0x17f5be=_[_0x7337('0x53')]({},_0x17f5be,_0x40c234[_0x7337('0x54')]);var _0x2f59db={'where':_0x17f5be[_0x7337('0x50')]};return db[_0x7337('0x55')][_0x7337('0x36')](_0x2f59db)[_0x7337('0x3b')](function(_0x48c4fc){_0x4428c4[_0x7337('0x36')]=_0x48c4fc;if(_0x40c234[_0x7337('0x47')][_0x7337('0x56')]){_0x17f5be[_0x7337('0x57')]=[{'all':!![]}];}return db[_0x7337('0x55')]['findAll'](_0x17f5be);})['then'](function(_0x34a373){_0x4428c4[_0x7337('0x58')]=_0x34a373;return _0x4428c4;})[_0x7337('0x3b')](respondWithFilteredResult(_0x2574c2,_0x17f5be))[_0x7337('0x2e')](handleError(_0x2574c2,null));};exports[_0x7337('0x59')]=function(_0x471482,_0x4336fd){var _0x25e7ec={'raw':!![],'where':{'id':_0x471482[_0x7337('0x5a')]['id']}},_0x41b925={};_0x41b925['model']=_[_0x7337('0x5b')](db['ChatQueue'][_0x7337('0x5c')]);_0x41b925[_0x7337('0x47')]=_[_0x7337('0x5b')](_0x471482['query']);_0x41b925[_0x7337('0x48')]=_[_0x7337('0x49')](_0x41b925['model'],_0x41b925[_0x7337('0x47')]);_0x25e7ec[_0x7337('0x4b')]=_[_0x7337('0x49')](_0x41b925[_0x7337('0x45')],qs['fields'](_0x471482['query']['fields']));_0x25e7ec[_0x7337('0x4b')]=_0x25e7ec[_0x7337('0x4b')][_0x7337('0x4c')]?_0x25e7ec['attributes']:_0x41b925['model'];if(_0x471482[_0x7337('0x47')]['includeAll']){_0x25e7ec[_0x7337('0x57')]=[{'all':!![]}];}_0x25e7ec=_[_0x7337('0x53')]({},_0x25e7ec,_0x471482[_0x7337('0x54')]);return db['ChatQueue']['find'](_0x25e7ec)['then'](handleEntityNotFound(_0x4336fd,null))[_0x7337('0x3b')](respondWithResult(_0x4336fd,null))[_0x7337('0x2e')](handleError(_0x4336fd,null));};exports[_0x7337('0x5d')]=function(_0x1c0928,_0x54e244){return db[_0x7337('0x55')]['create'](_0x1c0928[_0x7337('0x5e')],{})[_0x7337('0x3b')](function(_0x53ee4e){var _0x275004=_0x1c0928['user']['get']({'plain':!![]});if(!_0x275004)throw new Error(_0x7337('0x5f'));if(_0x275004['role']===_0x7337('0x60')){var _0x290f18=_0x53ee4e[_0x7337('0x3d')]({'plain':!![]});var _0x810e4a=_0x7337('0x61');return db[_0x7337('0x62')][_0x7337('0x63')]({'where':{'name':_0x810e4a,'userProfileId':_0x275004[_0x7337('0x64')]},'raw':!![]})[_0x7337('0x3b')](function(_0x510cd7){if(_0x510cd7&&_0x510cd7[_0x7337('0x65')]===0x0){return db[_0x7337('0x3e')][_0x7337('0x5d')]({'name':_0x290f18[_0x7337('0x3f')],'resourceId':_0x290f18['id'],'type':_0x510cd7[_0x7337('0x3f')],'sectionId':_0x510cd7['id']},{})['then'](function(){return _0x53ee4e;});}else{return _0x53ee4e;}})[_0x7337('0x2e')](function(_0x23d038){logger[_0x7337('0x29')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x23d038);throw _0x23d038;});}return _0x53ee4e;})['then'](respondWithResult(_0x54e244,0xc9))[_0x7337('0x2e')](handleError(_0x54e244,null));};exports[_0x7337('0x3a')]=function(_0x16bcc6,_0x484a90){if(_0x16bcc6[_0x7337('0x5e')]['id']){delete _0x16bcc6[_0x7337('0x5e')]['id'];}return db[_0x7337('0x55')][_0x7337('0x63')]({'where':{'id':_0x16bcc6[_0x7337('0x5a')]['id']}})[_0x7337('0x3b')](handleEntityNotFound(_0x484a90,null))[_0x7337('0x3b')](saveUpdates(_0x16bcc6[_0x7337('0x5e')],null))[_0x7337('0x3b')](respondWithResult(_0x484a90,null))[_0x7337('0x2e')](handleError(_0x484a90,null));};exports['destroy']=function(_0x4ec968,_0xf7610){return db['ChatQueue']['find']({'where':{'id':_0x4ec968[_0x7337('0x5a')]['id']}})[_0x7337('0x3b')](handleEntityNotFound(_0xf7610,null))[_0x7337('0x3b')](removeEntity(_0xf7610,null))[_0x7337('0x2e')](handleError(_0xf7610,null));};exports[_0x7337('0x66')]=function(_0x121994,_0x4e48c4){return db['ChatQueue'][_0x7337('0x66')]()['then'](respondWithResult(_0x4e48c4,null))[_0x7337('0x2e')](handleError(_0x4e48c4,null));};exports[_0x7337('0x67')]=function(_0x50febb,_0x1d6385,_0x470c98){var _0x4889a4={'raw':!![],'where':{}},_0x115070={},_0x54e144;return db['ChatQueue'][_0x7337('0x68')]({'where':{'id':_0x50febb[_0x7337('0x5a')]['id']}})['then'](handleEntityNotFound(_0x1d6385,null))[_0x7337('0x3b')](function(_0x2b1123){if(_0x2b1123){_0x54e144=_0x2b1123[_0x7337('0x3d')]({'plain':!![]});_0x115070[_0x7337('0x45')]=_[_0x7337('0x5b')](db['UserChatQueue']['rawAttributes']);_0x115070[_0x7337('0x47')]=_[_0x7337('0x5b')](_0x50febb[_0x7337('0x47')]);_0x115070[_0x7337('0x48')]=_[_0x7337('0x49')](_0x115070[_0x7337('0x45')],_0x115070[_0x7337('0x47')]);_0x4889a4[_0x7337('0x4b')]=_[_0x7337('0x49')](_0x115070['model'],qs[_0x7337('0x4a')](_0x50febb['query'][_0x7337('0x4a')]));_0x4889a4[_0x7337('0x4b')]=_0x4889a4[_0x7337('0x4b')]['length']?_0x4889a4[_0x7337('0x4b')]:_0x115070['model'];if(!_0x50febb[_0x7337('0x47')][_0x7337('0x69')](_0x7337('0x4d'))){_0x4889a4[_0x7337('0x34')]=qs[_0x7337('0x34')](_0x50febb[_0x7337('0x47')]['limit']);_0x4889a4['offset']=qs[_0x7337('0x33')](_0x50febb[_0x7337('0x47')][_0x7337('0x33')]);}_0x4889a4[_0x7337('0x4e')]=qs[_0x7337('0x4f')](_0x50febb[_0x7337('0x47')]['sort']);_0x4889a4['where']=qs['filters'](_[_0x7337('0x51')](_0x50febb['query'],_0x115070[_0x7337('0x48')]));_0x4889a4[_0x7337('0x50')][_0x7337('0x6a')]=_0x2b1123['id'];if(_0x50febb[_0x7337('0x47')][_0x7337('0x52')]){_0x4889a4['where']=_['merge'](_0x4889a4[_0x7337('0x50')],{'$or':_[_0x7337('0x46')](_0x4889a4[_0x7337('0x4b')],function(_0x4c16bf){var _0x3b5c1d={};_0x3b5c1d[_0x4c16bf]={'$like':'%'+_0x50febb[_0x7337('0x47')][_0x7337('0x52')]+'%'};return _0x3b5c1d;})});}_0x4889a4=_[_0x7337('0x53')]({},_0x4889a4,_0x50febb[_0x7337('0x54')]);return db[_0x7337('0x6b')][_0x7337('0x6c')](_0x4889a4);}})[_0x7337('0x3b')](function(_0x33c84f){if(_0x33c84f){return db['User']['findAndCountAll']({'where':{'id':_['map'](_0x33c84f,'UserId'),'role':'agent'},'attributes':['id',_0x7337('0x3f'),'chatPause',_0x7337('0x6d'),_0x7337('0x6e')]});}})[_0x7337('0x3b')](function(_0x48c56d){if(_0x48c56d){return{'count':_0x48c56d[_0x7337('0x36')],'rows':_[_0x7337('0x46')](_0x48c56d[_0x7337('0x58')],function(_0x21429f){return{'membername':_0x21429f[_0x7337('0x3f')],'UserId':_0x21429f['id'],'queue_name':_0x54e144[_0x7337('0x3f')],'ChatQueueId':_0x54e144['id'],'interface':util[_0x7337('0x6f')]('%s/%s',_0x7337('0x70'),_0x21429f[_0x7337('0x3f')]),'penalty':0x0,'paused':_0x21429f[_0x7337('0x71')],'createdAt':_0x21429f['createdAt'],'updatedAt':_0x21429f[_0x7337('0x6d')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x7337('0x3b')](respondWithFilteredResult(_0x1d6385,_0x4889a4))[_0x7337('0x2e')](handleError(_0x1d6385,null));};exports[_0x7337('0x72')]=function(_0x3f2574,_0x2e944d,_0x52b81c){var _0x113289={};var _0x59480e={};var _0x3bd490;var _0x5cf4c4;return db['ChatQueue']['findOne']({'where':{'id':_0x3f2574[_0x7337('0x5a')]['id']}})[_0x7337('0x3b')](handleEntityNotFound(_0x2e944d,null))[_0x7337('0x3b')](function(_0x46c0e2){if(_0x46c0e2){_0x3bd490=_0x46c0e2;_0x59480e['model']=_[_0x7337('0x5b')](db['Team'][_0x7337('0x5c')]);_0x59480e[_0x7337('0x47')]=_['keys'](_0x3f2574[_0x7337('0x47')]);_0x59480e['filters']=_[_0x7337('0x49')](_0x59480e[_0x7337('0x45')],_0x59480e[_0x7337('0x47')]);_0x113289[_0x7337('0x4b')]=_[_0x7337('0x49')](_0x59480e[_0x7337('0x45')],qs['fields'](_0x3f2574[_0x7337('0x47')][_0x7337('0x4a')]));_0x113289[_0x7337('0x4b')]=_0x113289[_0x7337('0x4b')][_0x7337('0x4c')]?_0x113289[_0x7337('0x4b')]:_0x59480e[_0x7337('0x45')];_0x113289[_0x7337('0x4e')]=qs[_0x7337('0x4f')](_0x3f2574[_0x7337('0x47')][_0x7337('0x4f')]);_0x113289[_0x7337('0x50')]=qs[_0x7337('0x48')](_[_0x7337('0x51')](_0x3f2574[_0x7337('0x47')],_0x59480e['filters']));if(_0x3f2574[_0x7337('0x47')][_0x7337('0x52')]){_0x113289[_0x7337('0x50')]=_[_0x7337('0x53')](_0x113289[_0x7337('0x50')],{'$or':_['map'](_0x113289['attributes'],function(_0xf8939a){var _0x3dee19={};_0x3dee19[_0xf8939a]={'$like':'%'+_0x3f2574[_0x7337('0x47')][_0x7337('0x52')]+'%'};return _0x3dee19;})});}_0x113289=_[_0x7337('0x53')]({},_0x113289,_0x3f2574[_0x7337('0x54')]);return _0x3bd490[_0x7337('0x72')](_0x113289);}})[_0x7337('0x3b')](function(_0x26355f){if(_0x26355f){_0x5cf4c4=_0x26355f[_0x7337('0x4c')];if(!_0x3f2574[_0x7337('0x47')]['hasOwnProperty'](_0x7337('0x4d'))){_0x113289[_0x7337('0x34')]=qs[_0x7337('0x34')](_0x3f2574[_0x7337('0x47')][_0x7337('0x34')]);_0x113289[_0x7337('0x33')]=qs[_0x7337('0x33')](_0x3f2574[_0x7337('0x47')][_0x7337('0x33')]);}return _0x3bd490[_0x7337('0x72')](_0x113289);}})[_0x7337('0x3b')](function(_0x12776f){if(_0x12776f){return _0x12776f?{'count':_0x5cf4c4,'rows':_0x12776f}:null;}})['then'](respondWithResult(_0x2e944d,null))[_0x7337('0x2e')](handleError(_0x2e944d,null));};exports['addTeams']=function(_0x1e9c0a,_0x6d5f61,_0x46af62){var _0x432f00=_0x1e9c0a['body'][_0x7337('0x73')];return db[_0x7337('0x74')][_0x7337('0x6c')]({'where':{'id':_0x432f00},'attributes':['id'],'include':[{'model':db[_0x7337('0x75')],'as':_0x7337('0x76'),'attributes':['id',_0x7337('0x3f'),_0x7337('0x77'),_0x7337('0x78'),_0x7337('0x79')],'raw':!![]}]})[_0x7337('0x3b')](function(_0x29c939){if(_0x29c939){var _0x58a6c4=_[_0x7337('0x7a')](_0x29c939,function(_0x52ecac){var _0x333255=_0x52ecac['get']({'plain':!![]});return _0x333255['Agents'];});return db[_0x7337('0x55')][_0x7337('0x63')]({'where':{'id':_0x1e9c0a['params']['id']}})[_0x7337('0x3b')](function(_0x4c7467){return db[_0x7337('0x7b')]['transaction'](function(_0x2d0593){return _0x4c7467['addTeams'](_0x432f00,{'transaction':_0x2d0593})['then'](function(){return BPromise[_0x7337('0x7c')](_0x58a6c4,function(_0x3a811f){return db[_0x7337('0x6b')][_0x7337('0x7d')]({'where':{'UserId':_0x3a811f['id'],'ChatQueueId':_0x1e9c0a['params']['id']},'transaction':_0x2d0593});});})['then'](function(){_0x58a6c4[_0x7337('0x7e')](function(_0x42d6dc){socket['emit']('userChatQueue:save',{'UserId':_0x42d6dc['id'],'ChatQueueId':_0x4c7467['id']});});});});});}})[_0x7337('0x3b')](respondWithStatusCode(_0x6d5f61,null))['catch'](handleError(_0x6d5f61,null));};exports[_0x7337('0x7f')]=function(_0x276c00,_0x6a1e2b,_0x35876c){return db[_0x7337('0x74')][_0x7337('0x6c')]({'where':{'id':_0x276c00['query'][_0x7337('0x73')]},'attributes':['id'],'include':[{'model':db[_0x7337('0x75')],'as':_0x7337('0x76'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x6a1e2b,null))[_0x7337('0x3b')](function(_0x3b4bc5){var _0x54d549=_['map'](_0x3b4bc5,'id');var _0x57b96b=[];var _0x5ea164=[];var _0x1b59a6=squel['select']();_0x1b59a6[_0x7337('0x80')](_0x7337('0x81'))['from'](_0x7337('0x82'),'tq')['join'](_0x7337('0x83'),'ut',_0x7337('0x84'))[_0x7337('0x50')](_0x7337('0x85'),_0x276c00[_0x7337('0x5a')]['id']);for(var _0x5c3b02=0x0;_0x5c3b02<_0x3b4bc5[_0x7337('0x4c')];_0x5c3b02+=0x1){let _0x3d0cd0=_0x3b4bc5[_0x5c3b02];for(var _0x1970b9=0x0;_0x1970b9<_0x3d0cd0[_0x7337('0x76')][_0x7337('0x4c')];_0x1970b9+=0x1){let _0x40add5=_0x3d0cd0['Agents'][_0x1970b9];var _0x4dbc37=_0x1b59a6[_0x7337('0x86')]();_0x4dbc37['where'](_0x7337('0x87'),_0x40add5['id']);_0x5ea164[_0x7337('0x88')](db[_0x7337('0x7b')]['query'](_0x4dbc37[_0x7337('0x89')](),{'type':db[_0x7337('0x7b')][_0x7337('0x8a')]['SELECT']})[_0x7337('0x3b')](function(_0x37b2f5){if(_0x37b2f5[_0x7337('0x4c')]===0x1){return _0x40add5['id'];}else{var _0x1ba25d=_[_0x7337('0x8b')](_['map'](_0x37b2f5,_0x7337('0x8c')),function(_0x46c266){return _[_0x7337('0x8d')](_0x54d549,_0x46c266);});if(_0x1ba25d){return _0x40add5['id'];}}}));}}return BPromise[_0x7337('0x8e')](_0x5ea164)[_0x7337('0x3b')](function(_0x461696){_0x57b96b=_(_0x57b96b)[_0x7337('0x8f')](_0x461696)[_0x7337('0x90')]()['value']();return db[_0x7337('0x55')][_0x7337('0x63')]({'where':{'id':_0x276c00['params']['id']}})[_0x7337('0x3b')](function(_0x5450d3){return db[_0x7337('0x7b')][_0x7337('0x91')](function(_0x551353){return _0x5450d3[_0x7337('0x7f')](_0x276c00['query'][_0x7337('0x73')],{'transaction':_0x551353})[_0x7337('0x3b')](function(){if(!_[_0x7337('0x92')](_0x57b96b)){return _0x5450d3[_0x7337('0x93')](_0x57b96b,{'transaction':_0x551353});}})[_0x7337('0x3b')](function(){_0x57b96b[_0x7337('0x7e')](function(_0x23db86){socket[_0x7337('0x94')](_0x7337('0x95'),{'UserId':_0x23db86,'ChatQueueId':_0x5450d3['id']});});});});});});})[_0x7337('0x3b')](respondWithStatusCode(_0x6a1e2b,null))[_0x7337('0x2e')](handleError(_0x6a1e2b,null));};exports['addAgents']=function(_0x49349d,_0x2e4a45,_0x1a08a2){return db['ChatQueue'][_0x7337('0x63')]({'where':{'id':_0x49349d[_0x7337('0x5a')]['id']}})[_0x7337('0x3b')](handleEntityNotFound(_0x2e4a45,null))[_0x7337('0x3b')](function(_0x5b6963){if(_0x5b6963){return _0x5b6963['addAgents'](_0x49349d[_0x7337('0x5e')]['ids'],_[_0x7337('0x96')](_0x49349d[_0x7337('0x5e')],[_0x7337('0x73'),'id'])||{})[_0x7337('0x97')](function(_0x2a7715){for(var _0x5676ba=0x0;_0x5676ba<_0x49349d[_0x7337('0x5e')][_0x7337('0x73')][_0x7337('0x4c')];_0x5676ba+=0x1){socket['emit'](_0x7337('0x98'),{'UserId':Number(_0x49349d['body'][_0x7337('0x73')][_0x5676ba]),'ChatQueueId':Number(_0x49349d[_0x7337('0x5a')]['id'])});}return _0x2a7715;});}})[_0x7337('0x3b')](respondWithResult(_0x2e4a45,null))['catch'](handleError(_0x2e4a45,null));};exports[_0x7337('0x93')]=function(_0x47c577,_0x1e3409,_0x561ba2){return db[_0x7337('0x55')][_0x7337('0x63')]({'where':{'id':_0x47c577['params']['id']}})[_0x7337('0x3b')](handleEntityNotFound(_0x1e3409,null))['then'](function(_0x163434){if(_0x163434){return _0x163434[_0x7337('0x93')](_0x47c577['query'][_0x7337('0x73')])['then'](function(){if(_['isArray'](_0x47c577[_0x7337('0x47')]['ids'])){for(var _0x373013=0x0;_0x373013<_0x47c577[_0x7337('0x47')][_0x7337('0x73')]['length'];_0x373013+=0x1){socket[_0x7337('0x94')]('userChatQueue:remove',{'UserId':Number(_0x47c577[_0x7337('0x47')][_0x7337('0x73')][_0x373013]),'ChatQueueId':Number(_0x47c577[_0x7337('0x5a')]['id'])});}}else{socket['emit'](_0x7337('0x95'),{'UserId':Number(_0x47c577[_0x7337('0x47')][_0x7337('0x73')]),'ChatQueueId':Number(_0x47c577[_0x7337('0x5a')]['id'])});}});}})['then'](respondWithStatusCode(_0x1e3409,null))[_0x7337('0x2e')](handleError(_0x1e3409,null));};exports[_0x7337('0x99')]=function(_0x4f9e7a,_0x49905b,_0x3d8d40){var _0x5f1ac2={};var _0x5d90a2={};var _0x39703e;var _0x52ecee;return db['ChatQueue'][_0x7337('0x68')]({'where':{'id':_0x4f9e7a[_0x7337('0x5a')]['id']}})[_0x7337('0x3b')](handleEntityNotFound(_0x49905b,null))[_0x7337('0x3b')](function(_0x284195){if(_0x284195){_0x39703e=_0x284195;_0x5d90a2['model']=_[_0x7337('0x5b')](db[_0x7337('0x75')][_0x7337('0x5c')]);_0x5d90a2[_0x7337('0x47')]=_[_0x7337('0x5b')](_0x4f9e7a[_0x7337('0x47')]);_0x5d90a2[_0x7337('0x48')]=_[_0x7337('0x49')](_0x5d90a2[_0x7337('0x45')],_0x5d90a2[_0x7337('0x47')]);_0x5f1ac2[_0x7337('0x4b')]=_[_0x7337('0x49')](_0x5d90a2[_0x7337('0x45')],qs['fields'](_0x4f9e7a[_0x7337('0x47')][_0x7337('0x4a')]));_0x5f1ac2[_0x7337('0x4b')]=_0x5f1ac2['attributes'][_0x7337('0x4c')]?_0x5f1ac2[_0x7337('0x4b')]:_0x5d90a2['model'];_0x5f1ac2['order']=qs['sort'](_0x4f9e7a['query'][_0x7337('0x4f')]);_0x5f1ac2[_0x7337('0x50')]=qs[_0x7337('0x48')](_[_0x7337('0x51')](_0x4f9e7a[_0x7337('0x47')],_0x5d90a2[_0x7337('0x48')]));if(_0x4f9e7a[_0x7337('0x47')][_0x7337('0x52')]){_0x5f1ac2[_0x7337('0x50')]=_['merge'](_0x5f1ac2['where'],{'$or':_[_0x7337('0x46')](_0x5f1ac2[_0x7337('0x4b')],function(_0x167353){var _0x170b6d={};_0x170b6d[_0x167353]={'$like':'%'+_0x4f9e7a[_0x7337('0x47')][_0x7337('0x52')]+'%'};return _0x170b6d;})});}_0x5f1ac2=_[_0x7337('0x53')]({},_0x5f1ac2,_0x4f9e7a['options']);return _0x39703e[_0x7337('0x99')](_0x5f1ac2);}})[_0x7337('0x3b')](function(_0x4fe1fd){if(_0x4fe1fd){_0x52ecee=_0x4fe1fd['length'];if(!_0x4f9e7a[_0x7337('0x47')][_0x7337('0x69')](_0x7337('0x4d'))){_0x5f1ac2[_0x7337('0x34')]=qs[_0x7337('0x34')](_0x4f9e7a[_0x7337('0x47')][_0x7337('0x34')]);_0x5f1ac2[_0x7337('0x33')]=qs[_0x7337('0x33')](_0x4f9e7a[_0x7337('0x47')][_0x7337('0x33')]);}return _0x39703e[_0x7337('0x99')](_0x5f1ac2);}})[_0x7337('0x3b')](function(_0x261aef){if(_0x261aef){return _0x261aef?{'count':_0x52ecee,'rows':_0x261aef}:null;}})['then'](respondWithResult(_0x49905b,null))[_0x7337('0x2e')](handleError(_0x49905b,null));};
\ No newline at end of file
index f0ca3b8..34f715c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf8fa=['setMaxListeners','save','remove','emit','hasOwnProperty','exports','events','../../mysqldb','ChatQueue'];(function(_0x3fe77c,_0xb71097){var _0x1be0cb=function(_0x14ea84){while(--_0x14ea84){_0x3fe77c['push'](_0x3fe77c['shift']());}};_0x1be0cb(++_0xb71097);}(_0xf8fa,0x1ec));var _0xaf8f=function(_0x4d8524,_0x1e8925){_0x4d8524=_0x4d8524-0x0;var _0xbdb413=_0xf8fa[_0x4d8524];return _0xbdb413;};'use strict';var EventEmitter=require(_0xaf8f('0x0'));var ChatQueue=require(_0xaf8f('0x1'))['db'][_0xaf8f('0x2')];var ChatQueueEvents=new EventEmitter();ChatQueueEvents[_0xaf8f('0x3')](0x0);var events={'afterCreate':_0xaf8f('0x4'),'afterUpdate':'update','afterDestroy':_0xaf8f('0x5')};function emitEvent(_0x339b84){return function(_0x2ac6ff,_0x34d773,_0x15d05f){ChatQueueEvents[_0xaf8f('0x6')](_0x339b84+':'+_0x2ac6ff['id'],_0x2ac6ff);ChatQueueEvents['emit'](_0x339b84,_0x2ac6ff);_0x15d05f(null);};}for(var e in events){if(events[_0xaf8f('0x7')](e)){var event=events[e];ChatQueue['hook'](e,emitEvent(event));}}module[_0xaf8f('0x8')]=ChatQueueEvents;
\ No newline at end of file
+var _0x771d=['update','remove','emit','hasOwnProperty','hook','exports','../../mysqldb','ChatQueue','setMaxListeners','save'];(function(_0x4c9cc4,_0x1b6528){var _0x4384fb=function(_0x512d47){while(--_0x512d47){_0x4c9cc4['push'](_0x4c9cc4['shift']());}};_0x4384fb(++_0x1b6528);}(_0x771d,0x132));var _0xd771=function(_0x474edb,_0x56eda4){_0x474edb=_0x474edb-0x0;var _0x4c640b=_0x771d[_0x474edb];return _0x4c640b;};'use strict';var EventEmitter=require('events');var ChatQueue=require(_0xd771('0x0'))['db'][_0xd771('0x1')];var ChatQueueEvents=new EventEmitter();ChatQueueEvents[_0xd771('0x2')](0x0);var events={'afterCreate':_0xd771('0x3'),'afterUpdate':_0xd771('0x4'),'afterDestroy':_0xd771('0x5')};function emitEvent(_0x11e70a){return function(_0x2f3d76,_0x4c95d5,_0x2bc492){ChatQueueEvents[_0xd771('0x6')](_0x11e70a+':'+_0x2f3d76['id'],_0x2f3d76);ChatQueueEvents['emit'](_0x11e70a,_0x2f3d76);_0x2bc492(null);};}for(var e in events){if(events[_0xd771('0x7')](e)){var event=events[e];ChatQueue[_0xd771('0x8')](e,emitEvent(event));}}module[_0xd771('0x9')]=ChatQueueEvents;
\ No newline at end of file
index d30904b..f5b6e8a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x77f5=['moment','bluebird','path','exports','define','ChatQueue','chat_queues','../../config/logger','api'];(function(_0x5cc203,_0x229868){var _0x13cdf5=function(_0x38f94e){while(--_0x38f94e){_0x5cc203['push'](_0x5cc203['shift']());}};_0x13cdf5(++_0x229868);}(_0x77f5,0x154));var _0x577f=function(_0x473b3a,_0x4889de){_0x473b3a=_0x473b3a-0x0;var _0x557b97=_0x77f5[_0x473b3a];return _0x557b97;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x577f('0x0'))(_0x577f('0x1'));var moment=require(_0x577f('0x2'));var BPromise=require(_0x577f('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x577f('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./chatQueue.attributes');module[_0x577f('0x5')]=function(_0x2eb541,_0x2e86e8){return _0x2eb541[_0x577f('0x6')](_0x577f('0x7'),attributes,{'tableName':_0x577f('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7f35=['moment','bluebird','path','rimraf','./chatQueue.attributes','exports','chat_queues','lodash','util','../../config/logger','api'];(function(_0x80a760,_0x44746b){var _0x5dba64=function(_0x374014){while(--_0x374014){_0x80a760['push'](_0x80a760['shift']());}};_0x5dba64(++_0x44746b);}(_0x7f35,0x15c));var _0x57f3=function(_0x23472e,_0x2808d6){_0x23472e=_0x23472e-0x0;var _0x291106=_0x7f35[_0x23472e];return _0x291106;};'use strict';var _=require(_0x57f3('0x0'));var util=require(_0x57f3('0x1'));var logger=require(_0x57f3('0x2'))(_0x57f3('0x3'));var moment=require(_0x57f3('0x4'));var BPromise=require(_0x57f3('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x57f3('0x6'));var rimraf=require(_0x57f3('0x7'));var config=require('../../config/environment');var attributes=require(_0x57f3('0x8'));module[_0x57f3('0x9')]=function(_0x56aa63,_0x2d5bd8){return _0x56aa63['define']('ChatQueue',attributes,{'tableName':_0x57f3('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 632100f..33a79b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb2b=['jayson/promise','client','http','redis','localhost','socket.io-emitter','./chatQueue.socket','register','request','info','ChatQueue,\x20%s,\x20%s','debug','ChatQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','ChatQueue','findAll','options','raw','include','attributes','map','model','then','catch','GetChatQueue','ShowChatQueue','find','where','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x47f7ec,_0x369f9d){var _0x415101=function(_0x41317a){while(--_0x41317a){_0x47f7ec['push'](_0x47f7ec['shift']());}};_0x415101(++_0x369f9d);}(_0xdb2b,0xa2));var _0xbdb2=function(_0x137ef8,_0x3384dc){_0x137ef8=_0x137ef8-0x0;var _0x3b7d28=_0xdb2b[_0x137ef8];return _0x3b7d28;};'use strict';var _=require(_0xbdb2('0x0'));var util=require('util');var moment=require(_0xbdb2('0x1'));var BPromise=require(_0xbdb2('0x2'));var rs=require(_0xbdb2('0x3'));var fs=require('fs');var Redis=require(_0xbdb2('0x4'));var db=require(_0xbdb2('0x5'))['db'];var utils=require(_0xbdb2('0x6'));var logger=require(_0xbdb2('0x7'))(_0xbdb2('0x8'));var config=require(_0xbdb2('0x9'));var jayson=require(_0xbdb2('0xa'));var client=jayson[_0xbdb2('0xb')][_0xbdb2('0xc')]({'port':0x232a});config['redis']=_['defaults'](config[_0xbdb2('0xd')],{'host':_0xbdb2('0xe'),'port':0x18eb});var socket=require(_0xbdb2('0xf'))(new Redis(config[_0xbdb2('0xd')]));require(_0xbdb2('0x10'))[_0xbdb2('0x11')](socket);function respondWithRpcPromise(_0x4cbf3b,_0xeae40,_0x4582bf){return new BPromise(function(_0x493c97,_0x209b90){return client[_0xbdb2('0x12')](_0x4cbf3b,_0x4582bf)['then'](function(_0x3fcedd){logger[_0xbdb2('0x13')](_0xbdb2('0x14'),_0xeae40,'request\x20sent');logger[_0xbdb2('0x15')](_0xbdb2('0x16'),_0xeae40,_0xbdb2('0x17'),JSON[_0xbdb2('0x18')](_0x3fcedd));if(_0x3fcedd['error']){if(_0x3fcedd[_0xbdb2('0x19')][_0xbdb2('0x1a')]===0x1f4){logger['error']('ChatQueue,\x20%s,\x20%s',_0xeae40,_0x3fcedd[_0xbdb2('0x19')][_0xbdb2('0x1b')]);return _0x209b90(_0x3fcedd[_0xbdb2('0x19')][_0xbdb2('0x1b')]);}logger[_0xbdb2('0x19')](_0xbdb2('0x14'),_0xeae40,_0x3fcedd[_0xbdb2('0x19')][_0xbdb2('0x1b')]);return _0x493c97(_0x3fcedd['error'][_0xbdb2('0x1b')]);}else{logger['info'](_0xbdb2('0x14'),_0xeae40,_0xbdb2('0x17'));_0x493c97(_0x3fcedd[_0xbdb2('0x1c')]['message']);}})['catch'](function(_0xd912eb){logger[_0xbdb2('0x19')]('ChatQueue,\x20%s,\x20%s',_0xeae40,_0xd912eb);_0x209b90(_0xd912eb);});});}exports['GetChatQueue']=function(_0x59ac40){var _0x2bb1ed=this;return new Promise(function(_0x20a754,_0x3a9629){return db[_0xbdb2('0x1d')][_0xbdb2('0x1e')]({'raw':_0x59ac40[_0xbdb2('0x1f')]?_0x59ac40['options'][_0xbdb2('0x20')]===undefined?!![]:![]:!![],'where':_0x59ac40['options']?_0x59ac40[_0xbdb2('0x1f')]['where']||null:null,'attributes':_0x59ac40[_0xbdb2('0x1f')]?_0x59ac40[_0xbdb2('0x1f')]['attributes']||null:null,'limit':_0x59ac40[_0xbdb2('0x1f')]?_0x59ac40[_0xbdb2('0x1f')]['limit']||null:null,'include':_0x59ac40[_0xbdb2('0x1f')]?_0x59ac40[_0xbdb2('0x1f')][_0xbdb2('0x21')]?_['map'](_0x59ac40['options'][_0xbdb2('0x21')],function(_0x386af6){return{'model':db[_0x386af6['model']],'as':_0x386af6['as'],'attributes':_0x386af6[_0xbdb2('0x22')],'include':_0x386af6[_0xbdb2('0x21')]?_['map'](_0x386af6['include'],function(_0x4bb221){return{'model':db[_0x4bb221['model']],'as':_0x4bb221['as'],'attributes':_0x4bb221['attributes'],'include':_0x4bb221[_0xbdb2('0x21')]?_[_0xbdb2('0x23')](_0x4bb221[_0xbdb2('0x21')],function(_0x49aace){return{'model':db[_0x49aace[_0xbdb2('0x24')]],'as':_0x49aace['as'],'attributes':_0x49aace[_0xbdb2('0x22')]};}):[]};}):[]};}):[]:[]})[_0xbdb2('0x25')](function(_0x3c3bae){logger['info']('GetChatQueue',_0x59ac40);logger['debug']('GetChatQueue',_0x59ac40,JSON[_0xbdb2('0x18')](_0x3c3bae));_0x20a754(_0x3c3bae);})[_0xbdb2('0x26')](function(_0xcc2e74){logger[_0xbdb2('0x19')](_0xbdb2('0x27'),_0xcc2e74[_0xbdb2('0x1b')],_0x59ac40);_0x3a9629(_0x2bb1ed['error'](0x1f4,_0xcc2e74['message']));});});};exports[_0xbdb2('0x28')]=function(_0x13ad0e){var _0x41c264=this;return new Promise(function(_0x2d8969,_0x58a686){return db[_0xbdb2('0x1d')][_0xbdb2('0x29')]({'raw':_0x13ad0e[_0xbdb2('0x1f')]?_0x13ad0e[_0xbdb2('0x1f')]['raw']===undefined?!![]:![]:!![],'where':_0x13ad0e[_0xbdb2('0x1f')]?_0x13ad0e[_0xbdb2('0x1f')][_0xbdb2('0x2a')]||null:null,'attributes':_0x13ad0e[_0xbdb2('0x1f')]?_0x13ad0e[_0xbdb2('0x1f')][_0xbdb2('0x22')]||null:null,'include':_0x13ad0e[_0xbdb2('0x1f')]?_0x13ad0e['options'][_0xbdb2('0x21')]?_['map'](_0x13ad0e[_0xbdb2('0x1f')][_0xbdb2('0x21')],function(_0x3ccdec){return{'model':db[_0x3ccdec[_0xbdb2('0x24')]],'as':_0x3ccdec['as'],'attributes':_0x3ccdec[_0xbdb2('0x22')],'include':_0x3ccdec[_0xbdb2('0x21')]?_['map'](_0x3ccdec[_0xbdb2('0x21')],function(_0xc53a09){return{'model':db[_0xc53a09[_0xbdb2('0x24')]],'as':_0xc53a09['as'],'attributes':_0xc53a09['attributes'],'include':_0xc53a09['include']?_[_0xbdb2('0x23')](_0xc53a09[_0xbdb2('0x21')],function(_0x58b83c){return{'model':db[_0x58b83c[_0xbdb2('0x24')]],'as':_0x58b83c['as'],'attributes':_0x58b83c[_0xbdb2('0x22')]};}):[]};}):[]};}):[]:[]})[_0xbdb2('0x25')](function(_0x364290){logger['info']('ShowChatQueue',_0x13ad0e);logger[_0xbdb2('0x15')](_0xbdb2('0x28'),_0x13ad0e,JSON['stringify'](_0x364290));_0x2d8969(_0x364290);})[_0xbdb2('0x26')](function(_0x36e957){logger[_0xbdb2('0x19')](_0xbdb2('0x28'),_0x36e957['message'],_0x13ad0e);_0x58a686(_0x41c264[_0xbdb2('0x19')](0x1f4,_0x36e957[_0xbdb2('0x1b')]));});});};
\ No newline at end of file
+var _0x186d=['find','where','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','http','redis','defaults','localhost','socket.io-emitter','register','ChatQueue,\x20%s,\x20%s','request\x20sent','debug','error','code','message','info','result','catch','GetChatQueue','ChatQueue','findAll','options','raw','attributes','include','model','map','then','stringify','ShowChatQueue'];(function(_0x3ee9b2,_0xa090bb){var _0x51ac3e=function(_0x8ba28d){while(--_0x8ba28d){_0x3ee9b2['push'](_0x3ee9b2['shift']());}};_0x51ac3e(++_0xa090bb);}(_0x186d,0x1ca));var _0xd186=function(_0x25d2fb,_0x18a774){_0x25d2fb=_0x25d2fb-0x0;var _0x1ded53=_0x186d[_0x25d2fb];return _0x1ded53;};'use strict';var _=require('lodash');var util=require(_0xd186('0x0'));var moment=require(_0xd186('0x1'));var BPromise=require(_0xd186('0x2'));var rs=require(_0xd186('0x3'));var fs=require('fs');var Redis=require(_0xd186('0x4'));var db=require(_0xd186('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xd186('0x6'))(_0xd186('0x7'));var config=require(_0xd186('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0xd186('0x9')]({'port':0x232a});config[_0xd186('0xa')]=_[_0xd186('0xb')](config['redis'],{'host':_0xd186('0xc'),'port':0x18eb});var socket=require(_0xd186('0xd'))(new Redis(config[_0xd186('0xa')]));require('./chatQueue.socket')[_0xd186('0xe')](socket);function respondWithRpcPromise(_0x434a4b,_0x2d9f08,_0xcdaf04){return new BPromise(function(_0x39ad45,_0x2fdffd){return client['request'](_0x434a4b,_0xcdaf04)['then'](function(_0x41b132){logger['info'](_0xd186('0xf'),_0x2d9f08,_0xd186('0x10'));logger[_0xd186('0x11')]('ChatQueue,\x20%s,\x20%s,\x20%s',_0x2d9f08,_0xd186('0x10'),JSON['stringify'](_0x41b132));if(_0x41b132[_0xd186('0x12')]){if(_0x41b132[_0xd186('0x12')][_0xd186('0x13')]===0x1f4){logger[_0xd186('0x12')](_0xd186('0xf'),_0x2d9f08,_0x41b132[_0xd186('0x12')][_0xd186('0x14')]);return _0x2fdffd(_0x41b132[_0xd186('0x12')][_0xd186('0x14')]);}logger[_0xd186('0x12')](_0xd186('0xf'),_0x2d9f08,_0x41b132['error'][_0xd186('0x14')]);return _0x39ad45(_0x41b132[_0xd186('0x12')][_0xd186('0x14')]);}else{logger[_0xd186('0x15')](_0xd186('0xf'),_0x2d9f08,_0xd186('0x10'));_0x39ad45(_0x41b132[_0xd186('0x16')]['message']);}})[_0xd186('0x17')](function(_0x3287a7){logger['error'](_0xd186('0xf'),_0x2d9f08,_0x3287a7);_0x2fdffd(_0x3287a7);});});}exports[_0xd186('0x18')]=function(_0x4f6f63){var _0x5f460e=this;return new Promise(function(_0x4111a8,_0x374e72){return db[_0xd186('0x19')][_0xd186('0x1a')]({'raw':_0x4f6f63[_0xd186('0x1b')]?_0x4f6f63['options'][_0xd186('0x1c')]===undefined?!![]:![]:!![],'where':_0x4f6f63[_0xd186('0x1b')]?_0x4f6f63[_0xd186('0x1b')]['where']||null:null,'attributes':_0x4f6f63['options']?_0x4f6f63[_0xd186('0x1b')][_0xd186('0x1d')]||null:null,'limit':_0x4f6f63[_0xd186('0x1b')]?_0x4f6f63['options']['limit']||null:null,'include':_0x4f6f63[_0xd186('0x1b')]?_0x4f6f63[_0xd186('0x1b')]['include']?_['map'](_0x4f6f63[_0xd186('0x1b')][_0xd186('0x1e')],function(_0x3c0a37){return{'model':db[_0x3c0a37[_0xd186('0x1f')]],'as':_0x3c0a37['as'],'attributes':_0x3c0a37[_0xd186('0x1d')],'include':_0x3c0a37[_0xd186('0x1e')]?_[_0xd186('0x20')](_0x3c0a37['include'],function(_0x5a40b8){return{'model':db[_0x5a40b8[_0xd186('0x1f')]],'as':_0x5a40b8['as'],'attributes':_0x5a40b8[_0xd186('0x1d')],'include':_0x5a40b8[_0xd186('0x1e')]?_[_0xd186('0x20')](_0x5a40b8[_0xd186('0x1e')],function(_0x5962c9){return{'model':db[_0x5962c9[_0xd186('0x1f')]],'as':_0x5962c9['as'],'attributes':_0x5962c9[_0xd186('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xd186('0x21')](function(_0x3a5284){logger[_0xd186('0x15')](_0xd186('0x18'),_0x4f6f63);logger[_0xd186('0x11')](_0xd186('0x18'),_0x4f6f63,JSON[_0xd186('0x22')](_0x3a5284));_0x4111a8(_0x3a5284);})[_0xd186('0x17')](function(_0x37c08f){logger[_0xd186('0x12')](_0xd186('0x18'),_0x37c08f[_0xd186('0x14')],_0x4f6f63);_0x374e72(_0x5f460e[_0xd186('0x12')](0x1f4,_0x37c08f[_0xd186('0x14')]));});});};exports[_0xd186('0x23')]=function(_0x74f846){var _0xd5b3e=this;return new Promise(function(_0x280bbb,_0x3e8af6){return db[_0xd186('0x19')][_0xd186('0x24')]({'raw':_0x74f846[_0xd186('0x1b')]?_0x74f846[_0xd186('0x1b')][_0xd186('0x1c')]===undefined?!![]:![]:!![],'where':_0x74f846[_0xd186('0x1b')]?_0x74f846[_0xd186('0x1b')][_0xd186('0x25')]||null:null,'attributes':_0x74f846[_0xd186('0x1b')]?_0x74f846[_0xd186('0x1b')][_0xd186('0x1d')]||null:null,'include':_0x74f846['options']?_0x74f846[_0xd186('0x1b')][_0xd186('0x1e')]?_[_0xd186('0x20')](_0x74f846[_0xd186('0x1b')][_0xd186('0x1e')],function(_0x9145e){return{'model':db[_0x9145e[_0xd186('0x1f')]],'as':_0x9145e['as'],'attributes':_0x9145e[_0xd186('0x1d')],'include':_0x9145e['include']?_[_0xd186('0x20')](_0x9145e[_0xd186('0x1e')],function(_0x3ccf89){return{'model':db[_0x3ccf89[_0xd186('0x1f')]],'as':_0x3ccf89['as'],'attributes':_0x3ccf89[_0xd186('0x1d')],'include':_0x3ccf89[_0xd186('0x1e')]?_[_0xd186('0x20')](_0x3ccf89[_0xd186('0x1e')],function(_0x3f09fc){return{'model':db[_0x3f09fc[_0xd186('0x1f')]],'as':_0x3f09fc['as'],'attributes':_0x3f09fc[_0xd186('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xd186('0x21')](function(_0x4dcd43){logger[_0xd186('0x15')](_0xd186('0x23'),_0x74f846);logger['debug'](_0xd186('0x23'),_0x74f846,JSON[_0xd186('0x22')](_0x4dcd43));_0x280bbb(_0x4dcd43);})[_0xd186('0x17')](function(_0x319bd5){logger['error'](_0xd186('0x23'),_0x319bd5['message'],_0x74f846);_0x3e8af6(_0xd5b3e[_0xd186('0x12')](0x1f4,_0x319bd5[_0xd186('0x14')]));});});};
\ No newline at end of file
index 8218e1e..0a56459 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b19=['remove','update','emit','removeListener','register','chatQueue:','./chatQueue.events'];(function(_0x134827,_0x21f6ed){var _0x366671=function(_0x4dc8d4){while(--_0x4dc8d4){_0x134827['push'](_0x134827['shift']());}};_0x366671(++_0x21f6ed);}(_0x4b19,0x195));var _0x94b1=function(_0x12e32a,_0x27eb0a){_0x12e32a=_0x12e32a-0x0;var _0xb907ba=_0x4b19[_0x12e32a];return _0xb907ba;};'use strict';var ChatQueueEvents=require(_0x94b1('0x0'));var events=['save',_0x94b1('0x1'),_0x94b1('0x2')];function createListener(_0x221ab3,_0x577f52){return function(_0x1ffdb7){_0x577f52[_0x94b1('0x3')](_0x221ab3,_0x1ffdb7);};}function removeListener(_0x2240b9,_0x4f607f){return function(){ChatQueueEvents[_0x94b1('0x4')](_0x2240b9,_0x4f607f);};}exports[_0x94b1('0x5')]=function(_0x52d6c1){for(var _0x24df76=0x0,_0x110a52=events['length'];_0x24df76<_0x110a52;_0x24df76++){var _0x40c69c=events[_0x24df76];var _0x201a02=createListener(_0x94b1('0x6')+_0x40c69c,_0x52d6c1);ChatQueueEvents['on'](_0x40c69c,_0x201a02);}};
\ No newline at end of file
+var _0xb332=['emit','register','./chatQueue.events','remove','update'];(function(_0x2112d4,_0x3c863c){var _0x434972=function(_0x477020){while(--_0x477020){_0x2112d4['push'](_0x2112d4['shift']());}};_0x434972(++_0x3c863c);}(_0xb332,0xd9));var _0x2b33=function(_0xbc4659,_0x578fba){_0xbc4659=_0xbc4659-0x0;var _0x5831f9=_0xb332[_0xbc4659];return _0x5831f9;};'use strict';var ChatQueueEvents=require(_0x2b33('0x0'));var events=['save',_0x2b33('0x1'),_0x2b33('0x2')];function createListener(_0x5ee720,_0xf8c6a7){return function(_0x548a70){_0xf8c6a7[_0x2b33('0x3')](_0x5ee720,_0x548a70);};}function removeListener(_0x4c6634,_0x34b111){return function(){ChatQueueEvents['removeListener'](_0x4c6634,_0x34b111);};}exports[_0x2b33('0x4')]=function(_0x22d66){for(var _0x478214=0x0,_0x461d44=events['length'];_0x478214<_0x461d44;_0x478214++){var _0x5ccf2d=events[_0x478214];var _0x4302b7=createListener('chatQueue:'+_0x5ccf2d,_0x22d66);ChatQueueEvents['on'](_0x5ccf2d,_0x4302b7);}};
\ No newline at end of file
index 321587d..34ba737 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x15bc81,_0x4d4f77){var _0x59440e=function(_0x1b60f2){while(--_0x1b60f2){_0x15bc81['push'](_0x15bc81['shift']());}};_0x59440e(++_0x4d4f77);}(_0x5fc3,0xa8));var _0x35fc=function(_0x409deb,_0x2b731){_0x409deb=_0x409deb-0x0;var _0x15a4f7=_0x5fc3[_0x409deb];return _0x15a4f7;};'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
+var _0x9957=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./chatQueue.controller','get','isAuthenticated','index','/describe','describe','show','/:id/members','getMembers','getTeams','/:id/users','getAgents','post','create','addTeams','addAgents','put','/:id','delete','destroy','/:id/teams','removeTeams','multer','util','path'];(function(_0x4a8a55,_0x4d5258){var _0x4369c3=function(_0xe4347){while(--_0xe4347){_0x4a8a55['push'](_0x4a8a55['shift']());}};_0x4369c3(++_0x4d5258);}(_0x9957,0x93));var _0x7995=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x9957[_0x14add3];return _0x4a174f;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x9')]('/:id/teams',auth[_0x7995('0xa')](),controller[_0x7995('0x11')]);router['get'](_0x7995('0x12'),auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x14')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router[_0x7995('0x14')]('/:id/teams',auth['isAuthenticated'](),controller[_0x7995('0x16')]);router[_0x7995('0x14')](_0x7995('0x12'),auth[_0x7995('0xa')](),controller[_0x7995('0x17')]);router[_0x7995('0x18')](_0x7995('0x19'),auth[_0x7995('0xa')](),controller['update']);router[_0x7995('0x1a')]('/:id',auth[_0x7995('0xa')](),controller[_0x7995('0x1b')]);router[_0x7995('0x1a')](_0x7995('0x1c'),auth[_0x7995('0xa')](),controller[_0x7995('0x1d')]);router['delete']('/:id/users',auth[_0x7995('0xa')](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
index 419f998..51dab5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1672=['sequelize','exports','STRING','DATE','moment'];(function(_0x167516,_0x24d7ff){var _0x177343=function(_0x35d192){while(--_0x35d192){_0x167516['push'](_0x167516['shift']());}};_0x177343(++_0x24d7ff);}(_0x1672,0x121));var _0x2167=function(_0x57a8f,_0x490836){_0x57a8f=_0x57a8f-0x0;var _0x3d67aa=_0x1672[_0x57a8f];return _0x3d67aa;};'use strict';var moment=require(_0x2167('0x0'));var Sequelize=require(_0x2167('0x1'));module[_0x2167('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize[_0x2167('0x3')]},'joinAt':{'type':Sequelize[_0x2167('0x4')]},'leaveAt':{'type':Sequelize[_0x2167('0x4')]},'acceptAt':{'type':Sequelize[_0x2167('0x4')]},'exitAt':{'type':Sequelize[_0x2167('0x4')]},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xc904=['STRING','DATE','moment','sequelize'];(function(_0x9fdd0c,_0x59b230){var _0x224beb=function(_0x4a606e){while(--_0x4a606e){_0x9fdd0c['push'](_0x9fdd0c['shift']());}};_0x224beb(++_0x59b230);}(_0xc904,0x1aa));var _0x4c90=function(_0x68ee8b,_0x3cc6c5){_0x68ee8b=_0x68ee8b-0x0;var _0x5148f7=_0xc904[_0x68ee8b];return _0x5148f7;};'use strict';var moment=require(_0x4c90('0x0'));var Sequelize=require(_0x4c90('0x1'));module['exports']={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize[_0x4c90('0x2')]},'joinAt':{'type':Sequelize[_0x4c90('0x3')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0x4c90('0x3')]},'exitAt':{'type':Sequelize[_0x4c90('0x3')]},'reason':{'type':Sequelize[_0x4c90('0x2')]}};
\ No newline at end of file
index e9ee5e2..66e9f11 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x07d7=['undefined','limit','status','set','Content-Range','json','apply','reject','save','update','destroy','then','error','stack','name','send','index','map','ChatQueueReport','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','count','includeAll','include','findAll','rows','show','params','rawAttributes','find','catch','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','sendStatus','end','offset'];(function(_0x145520,_0xaa3c75){var _0x1ae3e3=function(_0x1532da){while(--_0x1532da){_0x145520['push'](_0x145520['shift']());}};_0x1ae3e3(++_0xaa3c75);}(_0x07d7,0x85));var _0x707d=function(_0x3d27ba,_0x2671a3){_0x3d27ba=_0x3d27ba-0x0;var _0xf01885=_0x07d7[_0x3d27ba];return _0xf01885;};'use strict';var emlformat=require(_0x707d('0x0'));var rimraf=require(_0x707d('0x1'));var zipdir=require(_0x707d('0x2'));var jsonpatch=require(_0x707d('0x3'));var rp=require(_0x707d('0x4'));var moment=require(_0x707d('0x5'));var BPromise=require(_0x707d('0x6'));var Mustache=require(_0x707d('0x7'));var util=require(_0x707d('0x8'));var path=require(_0x707d('0x9'));var sox=require(_0x707d('0xa'));var csv=require(_0x707d('0xb'));var ejs=require(_0x707d('0xc'));var fs=require('fs');var fs_extra=require(_0x707d('0xd'));var _=require(_0x707d('0xe'));var squel=require(_0x707d('0xf'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x707d('0x10'));var toCsv=require(_0x707d('0xb'));var querystring=require(_0x707d('0x11'));var Papa=require(_0x707d('0x12'));var Redis=require(_0x707d('0x13'));var authService=require('../../components/auth/service');var qs=require(_0x707d('0x14'));var as=require(_0x707d('0x15'));var hardwareService=require(_0x707d('0x16'));var logger=require('../../config/logger')(_0x707d('0x17'));var utils=require(_0x707d('0x18'));var config=require(_0x707d('0x19'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5aabfe,_0x252e8c){_0x252e8c=_0x252e8c||0xcc;return function(_0x7cd32b){if(_0x7cd32b){return _0x5aabfe[_0x707d('0x1a')](_0x252e8c);}return _0x5aabfe['status'](_0x252e8c)[_0x707d('0x1b')]();};}function respondWithResult(_0x52c447,_0x1c18a6){_0x1c18a6=_0x1c18a6||0xc8;return function(_0x42e27f){if(_0x42e27f){return _0x52c447['status'](_0x1c18a6)['json'](_0x42e27f);}};}function respondWithFilteredResult(_0x30d583,_0x5b4700){return function(_0x2f993c){if(_0x2f993c){var _0x2c63c9=typeof _0x5b4700[_0x707d('0x1c')]===_0x707d('0x1d')&&typeof _0x5b4700[_0x707d('0x1e')]===_0x707d('0x1d');var _0x318251=_0x2f993c['count'];var _0x1d3fe6=_0x2c63c9?0x0:_0x5b4700[_0x707d('0x1c')];var _0x3617c3=_0x2c63c9?_0x2f993c['count']:_0x5b4700[_0x707d('0x1c')]+_0x5b4700[_0x707d('0x1e')];var _0xf5375f;if(_0x3617c3>=_0x318251){_0x3617c3=_0x318251;_0xf5375f=0xc8;}else{_0xf5375f=0xce;}_0x30d583[_0x707d('0x1f')](_0xf5375f);return _0x30d583[_0x707d('0x20')](_0x707d('0x21'),_0x1d3fe6+'-'+_0x3617c3+'/'+_0x318251)[_0x707d('0x22')](_0x2f993c);}return null;};}function patchUpdates(_0x446629){return function(_0x33a726){try{jsonpatch[_0x707d('0x23')](_0x33a726,_0x446629,!![]);}catch(_0x2da0c0){return BPromise[_0x707d('0x24')](_0x2da0c0);}return _0x33a726[_0x707d('0x25')]();};}function saveUpdates(_0x3dc9c9,_0xd97d6b){return function(_0x30d175){if(_0x30d175){return _0x30d175[_0x707d('0x26')](_0x3dc9c9)['then'](function(_0x24ba23){return _0x24ba23;});}return null;};}function removeEntity(_0x487a9c,_0xe548a4){return function(_0x139ad5){if(_0x139ad5){return _0x139ad5[_0x707d('0x27')]()[_0x707d('0x28')](function(){_0x487a9c[_0x707d('0x1f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x115e5c,_0x5b2db7){return function(_0x3760bb){if(!_0x3760bb){_0x115e5c[_0x707d('0x1a')](0x194);}return _0x3760bb;};}function handleError(_0x2d8830,_0x26d4ee){_0x26d4ee=_0x26d4ee||0x1f4;return function(_0x40551d){logger[_0x707d('0x29')](_0x40551d[_0x707d('0x2a')]);if(_0x40551d[_0x707d('0x2b')]){delete _0x40551d[_0x707d('0x2b')];}_0x2d8830[_0x707d('0x1f')](_0x26d4ee)[_0x707d('0x2c')](_0x40551d);};}exports[_0x707d('0x2d')]=function(_0x38b44b,_0xeb85df){var _0x2102e6={},_0x309ded={},_0x599ba6={'count':0x0,'rows':[]};var _0x17bb4e=_[_0x707d('0x2e')](db[_0x707d('0x2f')]['rawAttributes'],function(_0x5e0ff9){return{'name':_0x5e0ff9['fieldName'],'type':_0x5e0ff9[_0x707d('0x30')][_0x707d('0x31')]};});_0x309ded[_0x707d('0x32')]=_[_0x707d('0x2e')](_0x17bb4e,_0x707d('0x2b'));_0x309ded[_0x707d('0x33')]=_[_0x707d('0x34')](_0x38b44b[_0x707d('0x33')]);_0x309ded[_0x707d('0x35')]=_[_0x707d('0x36')](_0x309ded[_0x707d('0x32')],_0x309ded[_0x707d('0x33')]);_0x2102e6['attributes']=_[_0x707d('0x36')](_0x309ded[_0x707d('0x32')],qs[_0x707d('0x37')](_0x38b44b[_0x707d('0x33')][_0x707d('0x37')]));_0x2102e6['attributes']=_0x2102e6[_0x707d('0x38')][_0x707d('0x39')]?_0x2102e6['attributes']:_0x309ded[_0x707d('0x32')];if(!_0x38b44b[_0x707d('0x33')][_0x707d('0x3a')](_0x707d('0x3b'))){_0x2102e6[_0x707d('0x1e')]=qs[_0x707d('0x1e')](_0x38b44b[_0x707d('0x33')][_0x707d('0x1e')]);_0x2102e6[_0x707d('0x1c')]=qs['offset'](_0x38b44b[_0x707d('0x33')][_0x707d('0x1c')]);}_0x2102e6[_0x707d('0x3c')]=qs[_0x707d('0x3d')](_0x38b44b[_0x707d('0x33')]['sort']);_0x2102e6[_0x707d('0x3e')]=qs[_0x707d('0x35')](_[_0x707d('0x3f')](_0x38b44b['query'],_0x309ded[_0x707d('0x35')]),_0x17bb4e);if(_0x38b44b['query'][_0x707d('0x40')]){_0x2102e6[_0x707d('0x3e')]=_[_0x707d('0x41')](_0x2102e6[_0x707d('0x3e')],{'$or':_['map'](_0x17bb4e,function(_0x5b3260){if(_0x5b3260[_0x707d('0x30')]!==_0x707d('0x42')){var _0x48d8e6={};_0x48d8e6[_0x5b3260['name']]={'$like':'%'+_0x38b44b[_0x707d('0x33')]['filter']+'%'};return _0x48d8e6;}})});}_0x2102e6=_['merge']({},_0x2102e6,_0x38b44b[_0x707d('0x43')]);var _0x35d3a0={'where':_0x2102e6[_0x707d('0x3e')]};return db[_0x707d('0x2f')][_0x707d('0x44')](_0x35d3a0)['then'](function(_0x59aba7){_0x599ba6[_0x707d('0x44')]=_0x59aba7;if(_0x38b44b[_0x707d('0x33')][_0x707d('0x45')]){_0x2102e6[_0x707d('0x46')]=[{'all':!![]}];}return db[_0x707d('0x2f')][_0x707d('0x47')](_0x2102e6);})[_0x707d('0x28')](function(_0x6553d2){_0x599ba6[_0x707d('0x48')]=_0x6553d2;return _0x599ba6;})[_0x707d('0x28')](respondWithFilteredResult(_0xeb85df,_0x2102e6))['catch'](handleError(_0xeb85df,null));};exports[_0x707d('0x49')]=function(_0x1b5acb,_0x483ecf){var _0xd27541={'raw':!![],'where':{'id':_0x1b5acb[_0x707d('0x4a')]['id']}},_0x186035={};_0x186035[_0x707d('0x32')]=_[_0x707d('0x34')](db['ChatQueueReport'][_0x707d('0x4b')]);_0x186035[_0x707d('0x33')]=_[_0x707d('0x34')](_0x1b5acb[_0x707d('0x33')]);_0x186035[_0x707d('0x35')]=_[_0x707d('0x36')](_0x186035[_0x707d('0x32')],_0x186035[_0x707d('0x33')]);_0xd27541[_0x707d('0x38')]=_['intersection'](_0x186035[_0x707d('0x32')],qs['fields'](_0x1b5acb[_0x707d('0x33')][_0x707d('0x37')]));_0xd27541[_0x707d('0x38')]=_0xd27541[_0x707d('0x38')][_0x707d('0x39')]?_0xd27541[_0x707d('0x38')]:_0x186035[_0x707d('0x32')];if(_0x1b5acb[_0x707d('0x33')]['includeAll']){_0xd27541[_0x707d('0x46')]=[{'all':!![]}];}_0xd27541=_[_0x707d('0x41')]({},_0xd27541,_0x1b5acb[_0x707d('0x43')]);return db[_0x707d('0x2f')][_0x707d('0x4c')](_0xd27541)[_0x707d('0x28')](handleEntityNotFound(_0x483ecf,null))['then'](respondWithResult(_0x483ecf,null))[_0x707d('0x4d')](handleError(_0x483ecf,null));};exports[_0x707d('0x4e')]=function(_0x39843d,_0x3986d4){return db[_0x707d('0x2f')][_0x707d('0x4e')](_0x39843d['body'],{})['then'](respondWithResult(_0x3986d4,0xc9))[_0x707d('0x4d')](handleError(_0x3986d4,null));};exports[_0x707d('0x26')]=function(_0x5e1c34,_0x31ac73){if(_0x5e1c34[_0x707d('0x4f')]['id']){delete _0x5e1c34[_0x707d('0x4f')]['id'];}return db[_0x707d('0x2f')]['find']({'where':{'id':_0x5e1c34[_0x707d('0x4a')]['id']}})[_0x707d('0x28')](handleEntityNotFound(_0x31ac73,null))[_0x707d('0x28')](saveUpdates(_0x5e1c34['body'],null))[_0x707d('0x28')](respondWithResult(_0x31ac73,null))[_0x707d('0x4d')](handleError(_0x31ac73,null));};exports['destroy']=function(_0xe8a696,_0x4fa0f8){return db['ChatQueueReport']['find']({'where':{'id':_0xe8a696[_0x707d('0x4a')]['id']}})[_0x707d('0x28')](handleEntityNotFound(_0x4fa0f8,null))[_0x707d('0x28')](removeEntity(_0x4fa0f8,null))[_0x707d('0x4d')](handleError(_0x4fa0f8,null));};exports[_0x707d('0x50')]=function(_0x19c741,_0x4d85a9){return db[_0x707d('0x2f')][_0x707d('0x50')]()['then'](respondWithResult(_0x4d85a9,null))['catch'](handleError(_0x4d85a9,null));};
\ No newline at end of file
+var _0x933c=['describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','to-csv','ejs','lodash','crypto','jsforce','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','limit','undefined','count','offset','set','Content-Range','apply','save','update','destroy','error','stack','name','map','ChatQueueReport','fieldName','type','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','include','findAll','rows','then','catch','show','params','rawAttributes','includeAll','options','find','create','body'];(function(_0xb22229,_0x505b32){var _0x3ddf6c=function(_0x30e0c3){while(--_0x30e0c3){_0xb22229['push'](_0xb22229['shift']());}};_0x3ddf6c(++_0x505b32);}(_0x933c,0x99));var _0xc933=function(_0xdb6b05,_0x1aa1c3){_0xdb6b05=_0xdb6b05-0x0;var _0xc557ce=_0x933c[_0xdb6b05];return _0xc557ce;};'use strict';var emlformat=require(_0xc933('0x0'));var rimraf=require(_0xc933('0x1'));var zipdir=require(_0xc933('0x2'));var jsonpatch=require(_0xc933('0x3'));var rp=require(_0xc933('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xc933('0x5'));var util=require(_0xc933('0x6'));var path=require(_0xc933('0x7'));var sox=require(_0xc933('0x8'));var csv=require(_0xc933('0x9'));var ejs=require(_0xc933('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xc933('0xb'));var squel=require('squel');var crypto=require(_0xc933('0xc'));var jsforce=require(_0xc933('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xc933('0xe'));var Papa=require(_0xc933('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xc933('0x10'));var as=require(_0xc933('0x11'));var hardwareService=require(_0xc933('0x12'));var logger=require(_0xc933('0x13'))(_0xc933('0x14'));var utils=require(_0xc933('0x15'));var config=require(_0xc933('0x16'));var licenseUtil=require(_0xc933('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4928e5,_0x2c855a){_0x2c855a=_0x2c855a||0xcc;return function(_0x475cce){if(_0x475cce){return _0x4928e5[_0xc933('0x18')](_0x2c855a);}return _0x4928e5[_0xc933('0x19')](_0x2c855a)[_0xc933('0x1a')]();};}function respondWithResult(_0x4c2fad,_0x1d8c1c){_0x1d8c1c=_0x1d8c1c||0xc8;return function(_0x5b6f32){if(_0x5b6f32){return _0x4c2fad[_0xc933('0x19')](_0x1d8c1c)[_0xc933('0x1b')](_0x5b6f32);}};}function respondWithFilteredResult(_0x106146,_0x2f5784){return function(_0x490452){if(_0x490452){var _0x12a97b=typeof _0x2f5784['offset']==='undefined'&&typeof _0x2f5784[_0xc933('0x1c')]===_0xc933('0x1d');var _0xb76659=_0x490452[_0xc933('0x1e')];var _0x1611a7=_0x12a97b?0x0:_0x2f5784[_0xc933('0x1f')];var _0x186b19=_0x12a97b?_0x490452[_0xc933('0x1e')]:_0x2f5784[_0xc933('0x1f')]+_0x2f5784[_0xc933('0x1c')];var _0x5a1552;if(_0x186b19>=_0xb76659){_0x186b19=_0xb76659;_0x5a1552=0xc8;}else{_0x5a1552=0xce;}_0x106146[_0xc933('0x19')](_0x5a1552);return _0x106146[_0xc933('0x20')](_0xc933('0x21'),_0x1611a7+'-'+_0x186b19+'/'+_0xb76659)[_0xc933('0x1b')](_0x490452);}return null;};}function patchUpdates(_0x1f57db){return function(_0x318370){try{jsonpatch[_0xc933('0x22')](_0x318370,_0x1f57db,!![]);}catch(_0x20f024){return BPromise['reject'](_0x20f024);}return _0x318370[_0xc933('0x23')]();};}function saveUpdates(_0x2d7d7f,_0x176a2c){return function(_0x1113df){if(_0x1113df){return _0x1113df[_0xc933('0x24')](_0x2d7d7f)['then'](function(_0x1abfae){return _0x1abfae;});}return null;};}function removeEntity(_0x36f828,_0x3411ce){return function(_0x2a259c){if(_0x2a259c){return _0x2a259c[_0xc933('0x25')]()['then'](function(){_0x36f828[_0xc933('0x19')](0xcc)[_0xc933('0x1a')]();});}};}function handleEntityNotFound(_0x5ede22,_0x48a9a6){return function(_0x294f0d){if(!_0x294f0d){_0x5ede22[_0xc933('0x18')](0x194);}return _0x294f0d;};}function handleError(_0x31ac8b,_0x1afada){_0x1afada=_0x1afada||0x1f4;return function(_0x5a213c){logger[_0xc933('0x26')](_0x5a213c[_0xc933('0x27')]);if(_0x5a213c['name']){delete _0x5a213c[_0xc933('0x28')];}_0x31ac8b[_0xc933('0x19')](_0x1afada)['send'](_0x5a213c);};}exports['index']=function(_0x4628ec,_0x5d7b77){var _0x8598f7={},_0xaad361={},_0x4a585b={'count':0x0,'rows':[]};var _0x45daa9=_[_0xc933('0x29')](db[_0xc933('0x2a')]['rawAttributes'],function(_0x1a72b0){return{'name':_0x1a72b0[_0xc933('0x2b')],'type':_0x1a72b0[_0xc933('0x2c')]['key']};});_0xaad361[_0xc933('0x2d')]=_[_0xc933('0x29')](_0x45daa9,_0xc933('0x28'));_0xaad361[_0xc933('0x2e')]=_[_0xc933('0x2f')](_0x4628ec[_0xc933('0x2e')]);_0xaad361[_0xc933('0x30')]=_[_0xc933('0x31')](_0xaad361[_0xc933('0x2d')],_0xaad361[_0xc933('0x2e')]);_0x8598f7['attributes']=_[_0xc933('0x31')](_0xaad361[_0xc933('0x2d')],qs[_0xc933('0x32')](_0x4628ec[_0xc933('0x2e')]['fields']));_0x8598f7['attributes']=_0x8598f7[_0xc933('0x33')][_0xc933('0x34')]?_0x8598f7[_0xc933('0x33')]:_0xaad361['model'];if(!_0x4628ec[_0xc933('0x2e')][_0xc933('0x35')](_0xc933('0x36'))){_0x8598f7[_0xc933('0x1c')]=qs[_0xc933('0x1c')](_0x4628ec[_0xc933('0x2e')][_0xc933('0x1c')]);_0x8598f7[_0xc933('0x1f')]=qs[_0xc933('0x1f')](_0x4628ec['query'][_0xc933('0x1f')]);}_0x8598f7[_0xc933('0x37')]=qs[_0xc933('0x38')](_0x4628ec[_0xc933('0x2e')]['sort']);_0x8598f7[_0xc933('0x39')]=qs[_0xc933('0x30')](_[_0xc933('0x3a')](_0x4628ec[_0xc933('0x2e')],_0xaad361[_0xc933('0x30')]),_0x45daa9);if(_0x4628ec[_0xc933('0x2e')][_0xc933('0x3b')]){_0x8598f7[_0xc933('0x39')]=_[_0xc933('0x3c')](_0x8598f7[_0xc933('0x39')],{'$or':_['map'](_0x45daa9,function(_0xb76a6b){if(_0xb76a6b[_0xc933('0x2c')]!==_0xc933('0x3d')){var _0x3905fc={};_0x3905fc[_0xb76a6b['name']]={'$like':'%'+_0x4628ec[_0xc933('0x2e')]['filter']+'%'};return _0x3905fc;}})});}_0x8598f7=_[_0xc933('0x3c')]({},_0x8598f7,_0x4628ec['options']);var _0xc053cb={'where':_0x8598f7['where']};return db[_0xc933('0x2a')]['count'](_0xc053cb)['then'](function(_0xa80842){_0x4a585b[_0xc933('0x1e')]=_0xa80842;if(_0x4628ec[_0xc933('0x2e')]['includeAll']){_0x8598f7[_0xc933('0x3e')]=[{'all':!![]}];}return db[_0xc933('0x2a')][_0xc933('0x3f')](_0x8598f7);})['then'](function(_0x387271){_0x4a585b[_0xc933('0x40')]=_0x387271;return _0x4a585b;})[_0xc933('0x41')](respondWithFilteredResult(_0x5d7b77,_0x8598f7))[_0xc933('0x42')](handleError(_0x5d7b77,null));};exports[_0xc933('0x43')]=function(_0x3cb197,_0x22af84){var _0x48e944={'raw':!![],'where':{'id':_0x3cb197[_0xc933('0x44')]['id']}},_0x1974a0={};_0x1974a0['model']=_[_0xc933('0x2f')](db[_0xc933('0x2a')][_0xc933('0x45')]);_0x1974a0[_0xc933('0x2e')]=_[_0xc933('0x2f')](_0x3cb197[_0xc933('0x2e')]);_0x1974a0[_0xc933('0x30')]=_[_0xc933('0x31')](_0x1974a0[_0xc933('0x2d')],_0x1974a0[_0xc933('0x2e')]);_0x48e944['attributes']=_[_0xc933('0x31')](_0x1974a0[_0xc933('0x2d')],qs[_0xc933('0x32')](_0x3cb197[_0xc933('0x2e')][_0xc933('0x32')]));_0x48e944[_0xc933('0x33')]=_0x48e944[_0xc933('0x33')][_0xc933('0x34')]?_0x48e944['attributes']:_0x1974a0[_0xc933('0x2d')];if(_0x3cb197[_0xc933('0x2e')][_0xc933('0x46')]){_0x48e944['include']=[{'all':!![]}];}_0x48e944=_[_0xc933('0x3c')]({},_0x48e944,_0x3cb197[_0xc933('0x47')]);return db[_0xc933('0x2a')][_0xc933('0x48')](_0x48e944)[_0xc933('0x41')](handleEntityNotFound(_0x22af84,null))[_0xc933('0x41')](respondWithResult(_0x22af84,null))[_0xc933('0x42')](handleError(_0x22af84,null));};exports[_0xc933('0x49')]=function(_0x519763,_0x4a3295){return db[_0xc933('0x2a')][_0xc933('0x49')](_0x519763['body'],{})[_0xc933('0x41')](respondWithResult(_0x4a3295,0xc9))[_0xc933('0x42')](handleError(_0x4a3295,null));};exports[_0xc933('0x24')]=function(_0x72884f,_0x1ac447){if(_0x72884f['body']['id']){delete _0x72884f[_0xc933('0x4a')]['id'];}return db['ChatQueueReport']['find']({'where':{'id':_0x72884f[_0xc933('0x44')]['id']}})['then'](handleEntityNotFound(_0x1ac447,null))[_0xc933('0x41')](saveUpdates(_0x72884f[_0xc933('0x4a')],null))[_0xc933('0x41')](respondWithResult(_0x1ac447,null))[_0xc933('0x42')](handleError(_0x1ac447,null));};exports[_0xc933('0x25')]=function(_0x5a2e8e,_0x19bc58){return db['ChatQueueReport'][_0xc933('0x48')]({'where':{'id':_0x5a2e8e[_0xc933('0x44')]['id']}})[_0xc933('0x41')](handleEntityNotFound(_0x19bc58,null))[_0xc933('0x41')](removeEntity(_0x19bc58,null))[_0xc933('0x42')](handleError(_0x19bc58,null));};exports['describe']=function(_0x5377a2,_0x48d018){return db[_0xc933('0x2a')][_0xc933('0x4b')]()[_0xc933('0x41')](respondWithResult(_0x48d018,null))['catch'](handleError(_0x48d018,null));};
\ No newline at end of file
index 47b0cac..f9ac481 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['define','report_chat_queue','uniqueid','lodash','util','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x277889,_0x15b424){var _0x505e98=function(_0x3b48d7){while(--_0x3b48d7){_0x277889['push'](_0x277889['shift']());}};_0x505e98(++_0x15b424);}(_0xd8b0,0xad));var _0x0d8b=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xd8b0[_0x122ef9];return _0x42fba0;};'use strict';var _=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var 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('./chatQueueReport.attributes');module['exports']=function(_0x3f8b6f,_0x227c63){return _0x3f8b6f[_0x0d8b('0x7')]('ChatQueueReport',attributes,{'tableName':_0x0d8b('0x8'),'paranoid':![],'indexes':[{'name':_0x0d8b('0x9'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x757a=['report_chat_queue','uniqueid','util','../../config/logger','request-promise','path','rimraf','../../config/environment','./chatQueueReport.attributes','exports','define'];(function(_0x318e40,_0x142a86){var _0x33f2be=function(_0x1c0679){while(--_0x1c0679){_0x318e40['push'](_0x318e40['shift']());}};_0x33f2be(++_0x142a86);}(_0x757a,0xde));var _0xa757=function(_0x225aa6,_0x318128){_0x225aa6=_0x225aa6-0x0;var _0x1e1044=_0x757a[_0x225aa6];return _0x1e1044;};'use strict';var _=require('lodash');var util=require(_0xa757('0x0'));var logger=require(_0xa757('0x1'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xa757('0x2'));var fs=require('fs');var path=require(_0xa757('0x3'));var rimraf=require(_0xa757('0x4'));var config=require(_0xa757('0x5'));var attributes=require(_0xa757('0x6'));module[_0xa757('0x7')]=function(_0x5edca8,_0xae0e7c){return _0x5edca8[_0xa757('0x8')]('ChatQueueReport',attributes,{'tableName':_0xa757('0x9'),'paranoid':![],'indexes':[{'name':_0xa757('0xa'),'fields':[_0xa757('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index b8265b6..f5c037f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6146=['attributes','limit','UpdateChatQueueReport','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','request','then','info','ChatQueueReport,\x20%s,\x20%s','request\x20sent','debug','ChatQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','CreateChatQueueReport','ChatQueueReport','options','raw','update','body','where'];(function(_0x1e123b,_0x2482e5){var _0x31b527=function(_0x166e1a){while(--_0x166e1a){_0x1e123b['push'](_0x1e123b['shift']());}};_0x31b527(++_0x2482e5);}(_0x6146,0x111));var _0x6614=function(_0x590b72,_0x2f603e){_0x590b72=_0x590b72-0x0;var _0x37df5b=_0x6146[_0x590b72];return _0x37df5b;};'use strict';var _=require('lodash');var util=require(_0x6614('0x0'));var moment=require('moment');var BPromise=require(_0x6614('0x1'));var rs=require(_0x6614('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6614('0x3'))['db'];var utils=require(_0x6614('0x4'));var logger=require(_0x6614('0x5'))(_0x6614('0x6'));var config=require(_0x6614('0x7'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x1d9fce,_0x23d03a,_0x46224e){return new BPromise(function(_0x41725f,_0x181fdd){return client[_0x6614('0x8')](_0x1d9fce,_0x46224e)[_0x6614('0x9')](function(_0x1e4be8){logger[_0x6614('0xa')](_0x6614('0xb'),_0x23d03a,_0x6614('0xc'));logger[_0x6614('0xd')](_0x6614('0xe'),_0x23d03a,_0x6614('0xc'),JSON[_0x6614('0xf')](_0x1e4be8));if(_0x1e4be8[_0x6614('0x10')]){if(_0x1e4be8[_0x6614('0x10')][_0x6614('0x11')]===0x1f4){logger[_0x6614('0x10')](_0x6614('0xb'),_0x23d03a,_0x1e4be8[_0x6614('0x10')]['message']);return _0x181fdd(_0x1e4be8[_0x6614('0x10')]['message']);}logger[_0x6614('0x10')](_0x6614('0xb'),_0x23d03a,_0x1e4be8[_0x6614('0x10')][_0x6614('0x12')]);return _0x41725f(_0x1e4be8['error'][_0x6614('0x12')]);}else{logger[_0x6614('0xa')](_0x6614('0xb'),_0x23d03a,_0x6614('0xc'));_0x41725f(_0x1e4be8['result'][_0x6614('0x12')]);}})[_0x6614('0x13')](function(_0x11ab1a){logger['error']('ChatQueueReport,\x20%s,\x20%s',_0x23d03a,_0x11ab1a);_0x181fdd(_0x11ab1a);});});}exports[_0x6614('0x14')]=function(_0x4d1496){var _0x30e2d6=this;return new Promise(function(_0x5529fc,_0x4ead5a){return db[_0x6614('0x15')]['create'](_0x4d1496['body'],{'raw':_0x4d1496[_0x6614('0x16')]?_0x4d1496['options'][_0x6614('0x17')]===undefined?!![]:![]:!![]})[_0x6614('0x9')](function(_0x675ee6){logger[_0x6614('0xa')](_0x6614('0x14'),_0x4d1496);logger[_0x6614('0xd')](_0x6614('0x14'),_0x4d1496,JSON[_0x6614('0xf')](_0x675ee6));_0x5529fc(_0x675ee6);})[_0x6614('0x13')](function(_0x40ee29){logger[_0x6614('0x10')](_0x6614('0x14'),_0x40ee29[_0x6614('0x12')],_0x4d1496);_0x4ead5a(_0x30e2d6[_0x6614('0x10')](0x1f4,_0x40ee29[_0x6614('0x12')]));});});};exports['UpdateChatQueueReport']=function(_0x285a35){var _0x1c2d69=this;return new Promise(function(_0x205c71,_0x2bb1f8){return db[_0x6614('0x15')][_0x6614('0x18')](_0x285a35[_0x6614('0x19')],{'raw':_0x285a35[_0x6614('0x16')]?_0x285a35[_0x6614('0x16')][_0x6614('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x285a35[_0x6614('0x16')]?_0x285a35[_0x6614('0x16')][_0x6614('0x1a')]||null:null,'attributes':_0x285a35[_0x6614('0x16')]?_0x285a35['options'][_0x6614('0x1b')]||null:null,'limit':_0x285a35[_0x6614('0x16')]?_0x285a35[_0x6614('0x16')][_0x6614('0x1c')]||null:null})['then'](function(_0x45c15d){logger[_0x6614('0xa')](_0x6614('0x1d'),_0x285a35);logger[_0x6614('0xd')](_0x6614('0x1d'),_0x285a35,JSON[_0x6614('0xf')](_0x45c15d));_0x205c71(_0x45c15d);})[_0x6614('0x13')](function(_0x37975d){logger[_0x6614('0x10')]('UpdateChatQueueReport',_0x37975d[_0x6614('0x12')],_0x285a35);_0x2bb1f8(_0x1c2d69[_0x6614('0x10')](0x1f4,_0x37975d['message']));});});};
\ No newline at end of file
+var _0x0a17=['jayson/promise','client','http','request','then','info','request\x20sent','debug','ChatQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','ChatQueueReport,\x20%s,\x20%s','message','result','CreateChatQueueReport','ChatQueueReport','create','body','options','raw','catch','UpdateChatQueueReport','update','where','attributes','limit','lodash','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment'];(function(_0x5b6553,_0x2526c4){var _0x5c9e87=function(_0x2ac608){while(--_0x2ac608){_0x5b6553['push'](_0x5b6553['shift']());}};_0x5c9e87(++_0x2526c4);}(_0x0a17,0x1a6));var _0x70a1=function(_0x585cc0,_0x4899c4){_0x585cc0=_0x585cc0-0x0;var _0x57e260=_0x0a17[_0x585cc0];return _0x57e260;};'use strict';var _=require(_0x70a1('0x0'));var util=require('util');var moment=require(_0x70a1('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x70a1('0x2'));var db=require(_0x70a1('0x3'))['db'];var utils=require(_0x70a1('0x4'));var logger=require(_0x70a1('0x5'))('rpc');var config=require(_0x70a1('0x6'));var jayson=require(_0x70a1('0x7'));var client=jayson[_0x70a1('0x8')][_0x70a1('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3a01c3,_0xf780a7,_0x13e83a){return new BPromise(function(_0x1849cb,_0x512c28){return client[_0x70a1('0xa')](_0x3a01c3,_0x13e83a)[_0x70a1('0xb')](function(_0x1b13aa){logger[_0x70a1('0xc')]('ChatQueueReport,\x20%s,\x20%s',_0xf780a7,_0x70a1('0xd'));logger[_0x70a1('0xe')](_0x70a1('0xf'),_0xf780a7,_0x70a1('0xd'),JSON[_0x70a1('0x10')](_0x1b13aa));if(_0x1b13aa[_0x70a1('0x11')]){if(_0x1b13aa[_0x70a1('0x11')]['code']===0x1f4){logger['error'](_0x70a1('0x12'),_0xf780a7,_0x1b13aa[_0x70a1('0x11')][_0x70a1('0x13')]);return _0x512c28(_0x1b13aa[_0x70a1('0x11')][_0x70a1('0x13')]);}logger['error'](_0x70a1('0x12'),_0xf780a7,_0x1b13aa[_0x70a1('0x11')][_0x70a1('0x13')]);return _0x1849cb(_0x1b13aa['error'][_0x70a1('0x13')]);}else{logger[_0x70a1('0xc')](_0x70a1('0x12'),_0xf780a7,'request\x20sent');_0x1849cb(_0x1b13aa[_0x70a1('0x14')][_0x70a1('0x13')]);}})['catch'](function(_0x1ca218){logger['error'](_0x70a1('0x12'),_0xf780a7,_0x1ca218);_0x512c28(_0x1ca218);});});}exports[_0x70a1('0x15')]=function(_0x451e6f){var _0x46f39c=this;return new Promise(function(_0x37162f,_0x32dfbe){return db[_0x70a1('0x16')][_0x70a1('0x17')](_0x451e6f[_0x70a1('0x18')],{'raw':_0x451e6f['options']?_0x451e6f[_0x70a1('0x19')][_0x70a1('0x1a')]===undefined?!![]:![]:!![]})[_0x70a1('0xb')](function(_0x452150){logger[_0x70a1('0xc')](_0x70a1('0x15'),_0x451e6f);logger['debug'](_0x70a1('0x15'),_0x451e6f,JSON[_0x70a1('0x10')](_0x452150));_0x37162f(_0x452150);})[_0x70a1('0x1b')](function(_0x2f85b5){logger[_0x70a1('0x11')](_0x70a1('0x15'),_0x2f85b5[_0x70a1('0x13')],_0x451e6f);_0x32dfbe(_0x46f39c['error'](0x1f4,_0x2f85b5[_0x70a1('0x13')]));});});};exports[_0x70a1('0x1c')]=function(_0x8ae127){var _0x1e3e23=this;return new Promise(function(_0x287d7d,_0x5d764e){return db['ChatQueueReport'][_0x70a1('0x1d')](_0x8ae127[_0x70a1('0x18')],{'raw':_0x8ae127[_0x70a1('0x19')]?_0x8ae127[_0x70a1('0x19')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x8ae127[_0x70a1('0x19')]?_0x8ae127[_0x70a1('0x19')][_0x70a1('0x1e')]||null:null,'attributes':_0x8ae127[_0x70a1('0x19')]?_0x8ae127[_0x70a1('0x19')][_0x70a1('0x1f')]||null:null,'limit':_0x8ae127['options']?_0x8ae127[_0x70a1('0x19')][_0x70a1('0x20')]||null:null})['then'](function(_0x5050b4){logger[_0x70a1('0xc')](_0x70a1('0x1c'),_0x8ae127);logger[_0x70a1('0xe')](_0x70a1('0x1c'),_0x8ae127,JSON['stringify'](_0x5050b4));_0x287d7d(_0x5050b4);})['catch'](function(_0x534da0){logger[_0x70a1('0x11')](_0x70a1('0x1c'),_0x534da0[_0x70a1('0x13')],_0x8ae127);_0x5d764e(_0x1e3e23[_0x70a1('0x11')](0x1f4,_0x534da0['message']));});});};
\ No newline at end of file
index 0c9a5c4..280e18c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54be=['destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./chatQueueReport.controller','isAuthenticated','index','get','/describe','describe','/:id','show','post','create','update','delete'];(function(_0x4bdbf3,_0xc32415){var _0xa54c8b=function(_0x2a2f60){while(--_0x2a2f60){_0x4bdbf3['push'](_0x4bdbf3['shift']());}};_0xa54c8b(++_0xc32415);}(_0x54be,0x18e));var _0xe54b=function(_0x1ee65d,_0x13e80f){_0x1ee65d=_0x1ee65d-0x0;var _0x2eb5bb=_0x54be[_0x1ee65d];return _0x2eb5bb;};'use strict';var multer=require(_0xe54b('0x0'));var util=require(_0xe54b('0x1'));var path=require(_0xe54b('0x2'));var timeout=require(_0xe54b('0x3'));var express=require('express');var router=express[_0xe54b('0x4')]();var fs_extra=require(_0xe54b('0x5'));var auth=require(_0xe54b('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xe54b('0x7'));var controller=require(_0xe54b('0x8'));router['get']('/',auth[_0xe54b('0x9')](),controller[_0xe54b('0xa')]);router[_0xe54b('0xb')](_0xe54b('0xc'),auth[_0xe54b('0x9')](),controller[_0xe54b('0xd')]);router[_0xe54b('0xb')](_0xe54b('0xe'),auth[_0xe54b('0x9')](),controller[_0xe54b('0xf')]);router[_0xe54b('0x10')]('/',auth[_0xe54b('0x9')](),controller[_0xe54b('0x11')]);router['put'](_0xe54b('0xe'),auth['isAuthenticated'](),controller[_0xe54b('0x12')]);router[_0xe54b('0x13')]('/:id',auth[_0xe54b('0x9')](),controller[_0xe54b('0x14')]);module[_0xe54b('0x15')]=router;
\ No newline at end of file
+var _0x3af4=['create','put','update','delete','destroy','multer','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatQueueReport.controller','get','index','/describe','isAuthenticated','describe','/:id','show'];(function(_0x427e03,_0x9122c){var _0x5a0fa9=function(_0x5a5507){while(--_0x5a5507){_0x427e03['push'](_0x427e03['shift']());}};_0x5a0fa9(++_0x9122c);}(_0x3af4,0x16d));var _0x43af=function(_0x52684f,_0xff73fc){_0x52684f=_0x52684f-0x0;var _0x4a55f0=_0x3af4[_0x52684f];return _0x4a55f0;};'use strict';var multer=require(_0x43af('0x0'));var util=require('util');var path=require(_0x43af('0x1'));var timeout=require(_0x43af('0x2'));var express=require('express');var router=express[_0x43af('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x43af('0x4'));var interaction=require(_0x43af('0x5'));var config=require(_0x43af('0x6'));var controller=require(_0x43af('0x7'));router[_0x43af('0x8')]('/',auth['isAuthenticated'](),controller[_0x43af('0x9')]);router[_0x43af('0x8')](_0x43af('0xa'),auth[_0x43af('0xb')](),controller[_0x43af('0xc')]);router[_0x43af('0x8')](_0x43af('0xd'),auth['isAuthenticated'](),controller[_0x43af('0xe')]);router['post']('/',auth[_0x43af('0xb')](),controller[_0x43af('0xf')]);router[_0x43af('0x10')](_0x43af('0xd'),auth[_0x43af('0xb')](),controller[_0x43af('0x11')]);router[_0x43af('0x12')](_0x43af('0xd'),auth[_0x43af('0xb')](),controller[_0x43af('0x13')]);module['exports']=router;
\ No newline at end of file
index 84e3a23..36b1780 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf3cd=['exports','STRING','ENUM','account','queue','DATE','moment','sequelize'];(function(_0xf866c5,_0x23111f){var _0x3f70c1=function(_0x141b04){while(--_0x141b04){_0xf866c5['push'](_0xf866c5['shift']());}};_0x3f70c1(++_0x23111f);}(_0xf3cd,0xfe));var _0xdf3c=function(_0x1fa841,_0x37a70c){_0x1fa841=_0x1fa841-0x0;var _0x384b67=_0xf3cd[_0x1fa841];return _0x384b67;};'use strict';var moment=require(_0xdf3c('0x0'));var Sequelize=require(_0xdf3c('0x1'));module[_0xdf3c('0x2')]={'uniqueid':{'type':Sequelize[_0xdf3c('0x3')],'allowNull':![]},'type':{'type':Sequelize[_0xdf3c('0x4')](_0xdf3c('0x5'),'agent',_0xdf3c('0x6')),'allowNull':![],'defaultValue':_0xdf3c('0x6')},'transferredAt':{'type':Sequelize[_0xdf3c('0x7')],'allowNull':![],'defaultValue':Sequelize['NOW']}};
\ No newline at end of file
+var _0x008c=['ENUM','agent','queue','DATE','NOW','moment','sequelize','exports','STRING'];(function(_0x56138f,_0x1e9ebb){var _0x1acaf7=function(_0x48690d){while(--_0x48690d){_0x56138f['push'](_0x56138f['shift']());}};_0x1acaf7(++_0x1e9ebb);}(_0x008c,0x188));var _0xc008=function(_0x3e284d,_0x42c938){_0x3e284d=_0x3e284d-0x0;var _0x278746=_0x008c[_0x3e284d];return _0x278746;};'use strict';var moment=require(_0xc008('0x0'));var Sequelize=require(_0xc008('0x1'));module[_0xc008('0x2')]={'uniqueid':{'type':Sequelize[_0xc008('0x3')],'allowNull':![]},'type':{'type':Sequelize[_0xc008('0x4')]('account',_0xc008('0x5'),_0xc008('0x6')),'allowNull':![],'defaultValue':_0xc008('0x6')},'transferredAt':{'type':Sequelize[_0xc008('0x7')],'allowNull':![],'defaultValue':Sequelize[_0xc008('0x8')]}};
\ No newline at end of file
index 34ee7e9..3bac271 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x856c=['desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','Content-Range','apply','reject','save','update','then','destroy','stack','name','send','index','map','ChatTransferReport','rawAttributes','fieldName','type','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','limit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','include','findAll','rows','catch','show','params','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','path','ejs','fs-extra','crypto','jsforce'];(function(_0x2b10c6,_0x185590){var _0x3789d2=function(_0x272987){while(--_0x272987){_0x2b10c6['push'](_0x2b10c6['shift']());}};_0x3789d2(++_0x185590);}(_0x856c,0x171));var _0xc856=function(_0x2c6535,_0x3ad8ca){_0x2c6535=_0x2c6535-0x0;var _0x4f3575=_0x856c[_0x2c6535];return _0x4f3575;};'use strict';var emlformat=require(_0xc856('0x0'));var rimraf=require(_0xc856('0x1'));var zipdir=require(_0xc856('0x2'));var jsonpatch=require(_0xc856('0x3'));var rp=require('request-promise');var moment=require(_0xc856('0x4'));var BPromise=require(_0xc856('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0xc856('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xc856('0x7'));var fs=require('fs');var fs_extra=require(_0xc856('0x8'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xc856('0x9'));var jsforce=require(_0xc856('0xa'));var deskjs=require(_0xc856('0xb'));var toCsv=require('to-csv');var querystring=require(_0xc856('0xc'));var Papa=require(_0xc856('0xd'));var Redis=require(_0xc856('0xe'));var authService=require(_0xc856('0xf'));var qs=require(_0xc856('0x10'));var as=require(_0xc856('0x11'));var hardwareService=require(_0xc856('0x12'));var logger=require(_0xc856('0x13'))(_0xc856('0x14'));var utils=require(_0xc856('0x15'));var config=require(_0xc856('0x16'));var licenseUtil=require(_0xc856('0x17'));var db=require(_0xc856('0x18'))['db'];function respondWithStatusCode(_0x40b0a9,_0x472f6d){_0x472f6d=_0x472f6d||0xcc;return function(_0x1ad7e4){if(_0x1ad7e4){return _0x40b0a9[_0xc856('0x19')](_0x472f6d);}return _0x40b0a9[_0xc856('0x1a')](_0x472f6d)[_0xc856('0x1b')]();};}function respondWithResult(_0x51edf3,_0xeb83c){_0xeb83c=_0xeb83c||0xc8;return function(_0x147330){if(_0x147330){return _0x51edf3[_0xc856('0x1a')](_0xeb83c)[_0xc856('0x1c')](_0x147330);}};}function respondWithFilteredResult(_0x5ae5b6,_0x20601f){return function(_0x115a88){if(_0x115a88){var _0x52342c=typeof _0x20601f[_0xc856('0x1d')]===_0xc856('0x1e')&&typeof _0x20601f['limit']===_0xc856('0x1e');var _0x57ee9e=_0x115a88[_0xc856('0x1f')];var _0x5b805d=_0x52342c?0x0:_0x20601f[_0xc856('0x1d')];var _0x35735f=_0x52342c?_0x115a88['count']:_0x20601f[_0xc856('0x1d')]+_0x20601f['limit'];var _0xe04962;if(_0x35735f>=_0x57ee9e){_0x35735f=_0x57ee9e;_0xe04962=0xc8;}else{_0xe04962=0xce;}_0x5ae5b6[_0xc856('0x1a')](_0xe04962);return _0x5ae5b6['set'](_0xc856('0x20'),_0x5b805d+'-'+_0x35735f+'/'+_0x57ee9e)[_0xc856('0x1c')](_0x115a88);}return null;};}function patchUpdates(_0x2e9237){return function(_0x268e61){try{jsonpatch[_0xc856('0x21')](_0x268e61,_0x2e9237,!![]);}catch(_0x2cf990){return BPromise[_0xc856('0x22')](_0x2cf990);}return _0x268e61[_0xc856('0x23')]();};}function saveUpdates(_0x9133cf,_0x269f92){return function(_0x2da829){if(_0x2da829){return _0x2da829[_0xc856('0x24')](_0x9133cf)[_0xc856('0x25')](function(_0x5a37f5){return _0x5a37f5;});}return null;};}function removeEntity(_0x1994f5,_0x6421e7){return function(_0x5e6e13){if(_0x5e6e13){return _0x5e6e13[_0xc856('0x26')]()['then'](function(){_0x1994f5[_0xc856('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x58c81e,_0x1b7a6f){return function(_0x259f76){if(!_0x259f76){_0x58c81e[_0xc856('0x19')](0x194);}return _0x259f76;};}function handleError(_0x501055,_0x340d50){_0x340d50=_0x340d50||0x1f4;return function(_0x1b2162){logger['error'](_0x1b2162[_0xc856('0x27')]);if(_0x1b2162[_0xc856('0x28')]){delete _0x1b2162[_0xc856('0x28')];}_0x501055['status'](_0x340d50)[_0xc856('0x29')](_0x1b2162);};}exports[_0xc856('0x2a')]=function(_0x1e246f,_0x554768){var _0x3ed6bc={},_0x431b27={},_0x3158d7={'count':0x0,'rows':[]};var _0x352f13=_[_0xc856('0x2b')](db[_0xc856('0x2c')][_0xc856('0x2d')],function(_0x15f315){return{'name':_0x15f315[_0xc856('0x2e')],'type':_0x15f315[_0xc856('0x2f')]['key']};});_0x431b27[_0xc856('0x30')]=_[_0xc856('0x2b')](_0x352f13,_0xc856('0x28'));_0x431b27[_0xc856('0x31')]=_[_0xc856('0x32')](_0x1e246f[_0xc856('0x31')]);_0x431b27['filters']=_[_0xc856('0x33')](_0x431b27[_0xc856('0x30')],_0x431b27[_0xc856('0x31')]);_0x3ed6bc[_0xc856('0x34')]=_[_0xc856('0x33')](_0x431b27[_0xc856('0x30')],qs[_0xc856('0x35')](_0x1e246f[_0xc856('0x31')][_0xc856('0x35')]));_0x3ed6bc['attributes']=_0x3ed6bc[_0xc856('0x34')][_0xc856('0x36')]?_0x3ed6bc[_0xc856('0x34')]:_0x431b27[_0xc856('0x30')];if(!_0x1e246f[_0xc856('0x31')][_0xc856('0x37')]('nolimit')){_0x3ed6bc[_0xc856('0x38')]=qs['limit'](_0x1e246f[_0xc856('0x31')]['limit']);_0x3ed6bc[_0xc856('0x1d')]=qs[_0xc856('0x1d')](_0x1e246f[_0xc856('0x31')][_0xc856('0x1d')]);}_0x3ed6bc[_0xc856('0x39')]=qs[_0xc856('0x3a')](_0x1e246f[_0xc856('0x31')]['sort']);_0x3ed6bc[_0xc856('0x3b')]=qs[_0xc856('0x3c')](_[_0xc856('0x3d')](_0x1e246f['query'],_0x431b27[_0xc856('0x3c')]),_0x352f13);if(_0x1e246f['query'][_0xc856('0x3e')]){_0x3ed6bc['where']=_[_0xc856('0x3f')](_0x3ed6bc['where'],{'$or':_[_0xc856('0x2b')](_0x352f13,function(_0x3f8ec6){if(_0x3f8ec6[_0xc856('0x2f')]!==_0xc856('0x40')){var _0x460ce2={};_0x460ce2[_0x3f8ec6[_0xc856('0x28')]]={'$like':'%'+_0x1e246f[_0xc856('0x31')][_0xc856('0x3e')]+'%'};return _0x460ce2;}})});}_0x3ed6bc=_[_0xc856('0x3f')]({},_0x3ed6bc,_0x1e246f[_0xc856('0x41')]);var _0x4f73ca={'where':_0x3ed6bc[_0xc856('0x3b')]};return db[_0xc856('0x2c')]['count'](_0x4f73ca)[_0xc856('0x25')](function(_0x44dc8f){_0x3158d7[_0xc856('0x1f')]=_0x44dc8f;if(_0x1e246f[_0xc856('0x31')]['includeAll']){_0x3ed6bc[_0xc856('0x42')]=[{'all':!![]}];}return db[_0xc856('0x2c')][_0xc856('0x43')](_0x3ed6bc);})[_0xc856('0x25')](function(_0x432f20){_0x3158d7[_0xc856('0x44')]=_0x432f20;return _0x3158d7;})[_0xc856('0x25')](respondWithFilteredResult(_0x554768,_0x3ed6bc))[_0xc856('0x45')](handleError(_0x554768,null));};exports[_0xc856('0x46')]=function(_0x188b0a,_0x19c5e6){var _0xabf2b8={'raw':!![],'where':{'id':_0x188b0a[_0xc856('0x47')]['id']}},_0x561267={};_0x561267[_0xc856('0x30')]=_[_0xc856('0x32')](db['ChatTransferReport'][_0xc856('0x2d')]);_0x561267[_0xc856('0x31')]=_[_0xc856('0x32')](_0x188b0a[_0xc856('0x31')]);_0x561267[_0xc856('0x3c')]=_[_0xc856('0x33')](_0x561267[_0xc856('0x30')],_0x561267['query']);_0xabf2b8['attributes']=_[_0xc856('0x33')](_0x561267[_0xc856('0x30')],qs[_0xc856('0x35')](_0x188b0a[_0xc856('0x31')][_0xc856('0x35')]));_0xabf2b8[_0xc856('0x34')]=_0xabf2b8[_0xc856('0x34')][_0xc856('0x36')]?_0xabf2b8[_0xc856('0x34')]:_0x561267[_0xc856('0x30')];if(_0x188b0a[_0xc856('0x31')]['includeAll']){_0xabf2b8[_0xc856('0x42')]=[{'all':!![]}];}_0xabf2b8=_[_0xc856('0x3f')]({},_0xabf2b8,_0x188b0a[_0xc856('0x41')]);return db['ChatTransferReport'][_0xc856('0x48')](_0xabf2b8)['then'](handleEntityNotFound(_0x19c5e6,null))[_0xc856('0x25')](respondWithResult(_0x19c5e6,null))[_0xc856('0x45')](handleError(_0x19c5e6,null));};exports[_0xc856('0x49')]=function(_0x1a72f2,_0x232e67){return db[_0xc856('0x2c')][_0xc856('0x49')](_0x1a72f2[_0xc856('0x4a')],{})[_0xc856('0x25')](respondWithResult(_0x232e67,0xc9))[_0xc856('0x45')](handleError(_0x232e67,null));};exports[_0xc856('0x24')]=function(_0x3821b3,_0xb32852){if(_0x3821b3['body']['id']){delete _0x3821b3[_0xc856('0x4a')]['id'];}return db[_0xc856('0x2c')][_0xc856('0x48')]({'where':{'id':_0x3821b3[_0xc856('0x47')]['id']}})[_0xc856('0x25')](handleEntityNotFound(_0xb32852,null))[_0xc856('0x25')](saveUpdates(_0x3821b3[_0xc856('0x4a')],null))[_0xc856('0x25')](respondWithResult(_0xb32852,null))[_0xc856('0x45')](handleError(_0xb32852,null));};exports[_0xc856('0x26')]=function(_0x48868e,_0x38b3bc){return db['ChatTransferReport']['find']({'where':{'id':_0x48868e[_0xc856('0x47')]['id']}})[_0xc856('0x25')](handleEntityNotFound(_0x38b3bc,null))['then'](removeEntity(_0x38b3bc,null))['catch'](handleError(_0x38b3bc,null));};exports[_0xc856('0x4b')]=function(_0x2fe959,_0x2cbe01){return db[_0xc856('0x2c')][_0xc856('0x4b')]()['then'](respondWithResult(_0x2cbe01,null))[_0xc856('0x45')](handleError(_0x2cbe01,null));};
\ No newline at end of file
+var _0xe550=['catch','params','rawAttributes','includeAll','create','body','find','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','end','json','offset','undefined','count','limit','set','apply','reject','save','then','destroy','error','stack','name','send','index','map','fieldName','type','key','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','ChatTransferReport','include','findAll','rows'];(function(_0x9e05d1,_0x3cef4a){var _0x4f7e97=function(_0x402f40){while(--_0x402f40){_0x9e05d1['push'](_0x9e05d1['shift']());}};_0x4f7e97(++_0x3cef4a);}(_0xe550,0x18e));var _0x0e55=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xe550[_0x20a584];return _0x4b41a8;};'use strict';var emlformat=require(_0x0e55('0x0'));var rimraf=require(_0x0e55('0x1'));var zipdir=require(_0x0e55('0x2'));var jsonpatch=require(_0x0e55('0x3'));var rp=require(_0x0e55('0x4'));var moment=require('moment');var BPromise=require(_0x0e55('0x5'));var Mustache=require(_0x0e55('0x6'));var util=require(_0x0e55('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0x0e55('0x8'));var ejs=require(_0x0e55('0x9'));var fs=require('fs');var fs_extra=require(_0x0e55('0xa'));var _=require(_0x0e55('0xb'));var squel=require(_0x0e55('0xc'));var crypto=require(_0x0e55('0xd'));var jsforce=require(_0x0e55('0xe'));var deskjs=require(_0x0e55('0xf'));var toCsv=require(_0x0e55('0x8'));var querystring=require(_0x0e55('0x10'));var Papa=require(_0x0e55('0x11'));var Redis=require(_0x0e55('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x0e55('0x13'));var as=require(_0x0e55('0x14'));var hardwareService=require(_0x0e55('0x15'));var logger=require(_0x0e55('0x16'))(_0x0e55('0x17'));var utils=require(_0x0e55('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x0e55('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xab1e15,_0x54547a){_0x54547a=_0x54547a||0xcc;return function(_0x27cb53){if(_0x27cb53){return _0xab1e15[_0x0e55('0x1a')](_0x54547a);}return _0xab1e15[_0x0e55('0x1b')](_0x54547a)[_0x0e55('0x1c')]();};}function respondWithResult(_0x4eb920,_0x3cba3b){_0x3cba3b=_0x3cba3b||0xc8;return function(_0x157155){if(_0x157155){return _0x4eb920[_0x0e55('0x1b')](_0x3cba3b)[_0x0e55('0x1d')](_0x157155);}};}function respondWithFilteredResult(_0x398a30,_0x40e5a0){return function(_0xe82e0f){if(_0xe82e0f){var _0x5d1c88=typeof _0x40e5a0[_0x0e55('0x1e')]===_0x0e55('0x1f')&&typeof _0x40e5a0['limit']===_0x0e55('0x1f');var _0xac491=_0xe82e0f[_0x0e55('0x20')];var _0xe3d864=_0x5d1c88?0x0:_0x40e5a0['offset'];var _0x4cc9fd=_0x5d1c88?_0xe82e0f['count']:_0x40e5a0[_0x0e55('0x1e')]+_0x40e5a0[_0x0e55('0x21')];var _0x21be11;if(_0x4cc9fd>=_0xac491){_0x4cc9fd=_0xac491;_0x21be11=0xc8;}else{_0x21be11=0xce;}_0x398a30[_0x0e55('0x1b')](_0x21be11);return _0x398a30[_0x0e55('0x22')]('Content-Range',_0xe3d864+'-'+_0x4cc9fd+'/'+_0xac491)[_0x0e55('0x1d')](_0xe82e0f);}return null;};}function patchUpdates(_0x40d5aa){return function(_0x41bb2b){try{jsonpatch[_0x0e55('0x23')](_0x41bb2b,_0x40d5aa,!![]);}catch(_0x391e7a){return BPromise[_0x0e55('0x24')](_0x391e7a);}return _0x41bb2b[_0x0e55('0x25')]();};}function saveUpdates(_0x3864dc,_0x2489e9){return function(_0x3f3503){if(_0x3f3503){return _0x3f3503['update'](_0x3864dc)[_0x0e55('0x26')](function(_0x55a75e){return _0x55a75e;});}return null;};}function removeEntity(_0x3555a3,_0x35d59f){return function(_0x5380f4){if(_0x5380f4){return _0x5380f4[_0x0e55('0x27')]()[_0x0e55('0x26')](function(){_0x3555a3[_0x0e55('0x1b')](0xcc)[_0x0e55('0x1c')]();});}};}function handleEntityNotFound(_0x46a05c,_0x1f7619){return function(_0x39c694){if(!_0x39c694){_0x46a05c['sendStatus'](0x194);}return _0x39c694;};}function handleError(_0x24d485,_0x2504b9){_0x2504b9=_0x2504b9||0x1f4;return function(_0x25639b){logger[_0x0e55('0x28')](_0x25639b[_0x0e55('0x29')]);if(_0x25639b[_0x0e55('0x2a')]){delete _0x25639b[_0x0e55('0x2a')];}_0x24d485['status'](_0x2504b9)[_0x0e55('0x2b')](_0x25639b);};}exports[_0x0e55('0x2c')]=function(_0x9636c9,_0x4f47f8){var _0x2f346c={},_0x4ca295={},_0x23eaa7={'count':0x0,'rows':[]};var _0x425d00=_[_0x0e55('0x2d')](db['ChatTransferReport']['rawAttributes'],function(_0x33bc7b){return{'name':_0x33bc7b[_0x0e55('0x2e')],'type':_0x33bc7b[_0x0e55('0x2f')][_0x0e55('0x30')]};});_0x4ca295[_0x0e55('0x31')]=_[_0x0e55('0x2d')](_0x425d00,'name');_0x4ca295['query']=_[_0x0e55('0x32')](_0x9636c9[_0x0e55('0x33')]);_0x4ca295[_0x0e55('0x34')]=_['intersection'](_0x4ca295[_0x0e55('0x31')],_0x4ca295[_0x0e55('0x33')]);_0x2f346c['attributes']=_[_0x0e55('0x35')](_0x4ca295[_0x0e55('0x31')],qs['fields'](_0x9636c9[_0x0e55('0x33')][_0x0e55('0x36')]));_0x2f346c[_0x0e55('0x37')]=_0x2f346c[_0x0e55('0x37')][_0x0e55('0x38')]?_0x2f346c['attributes']:_0x4ca295[_0x0e55('0x31')];if(!_0x9636c9[_0x0e55('0x33')][_0x0e55('0x39')](_0x0e55('0x3a'))){_0x2f346c[_0x0e55('0x21')]=qs['limit'](_0x9636c9[_0x0e55('0x33')][_0x0e55('0x21')]);_0x2f346c[_0x0e55('0x1e')]=qs[_0x0e55('0x1e')](_0x9636c9['query'][_0x0e55('0x1e')]);}_0x2f346c[_0x0e55('0x3b')]=qs[_0x0e55('0x3c')](_0x9636c9[_0x0e55('0x33')][_0x0e55('0x3c')]);_0x2f346c[_0x0e55('0x3d')]=qs[_0x0e55('0x34')](_[_0x0e55('0x3e')](_0x9636c9['query'],_0x4ca295['filters']),_0x425d00);if(_0x9636c9[_0x0e55('0x33')][_0x0e55('0x3f')]){_0x2f346c[_0x0e55('0x3d')]=_[_0x0e55('0x40')](_0x2f346c[_0x0e55('0x3d')],{'$or':_['map'](_0x425d00,function(_0x131a94){if(_0x131a94[_0x0e55('0x2f')]!=='VIRTUAL'){var _0x51f4fc={};_0x51f4fc[_0x131a94[_0x0e55('0x2a')]]={'$like':'%'+_0x9636c9[_0x0e55('0x33')]['filter']+'%'};return _0x51f4fc;}})});}_0x2f346c=_[_0x0e55('0x40')]({},_0x2f346c,_0x9636c9[_0x0e55('0x41')]);var _0x1da0d7={'where':_0x2f346c['where']};return db[_0x0e55('0x42')][_0x0e55('0x20')](_0x1da0d7)[_0x0e55('0x26')](function(_0x53af5a){_0x23eaa7[_0x0e55('0x20')]=_0x53af5a;if(_0x9636c9[_0x0e55('0x33')]['includeAll']){_0x2f346c[_0x0e55('0x43')]=[{'all':!![]}];}return db[_0x0e55('0x42')][_0x0e55('0x44')](_0x2f346c);})[_0x0e55('0x26')](function(_0xbfdbe9){_0x23eaa7[_0x0e55('0x45')]=_0xbfdbe9;return _0x23eaa7;})[_0x0e55('0x26')](respondWithFilteredResult(_0x4f47f8,_0x2f346c))[_0x0e55('0x46')](handleError(_0x4f47f8,null));};exports['show']=function(_0xe2230d,_0x40f981){var _0x4d77e6={'raw':!![],'where':{'id':_0xe2230d[_0x0e55('0x47')]['id']}},_0x2a0966={};_0x2a0966[_0x0e55('0x31')]=_[_0x0e55('0x32')](db[_0x0e55('0x42')][_0x0e55('0x48')]);_0x2a0966[_0x0e55('0x33')]=_[_0x0e55('0x32')](_0xe2230d['query']);_0x2a0966[_0x0e55('0x34')]=_[_0x0e55('0x35')](_0x2a0966[_0x0e55('0x31')],_0x2a0966['query']);_0x4d77e6[_0x0e55('0x37')]=_['intersection'](_0x2a0966[_0x0e55('0x31')],qs[_0x0e55('0x36')](_0xe2230d[_0x0e55('0x33')][_0x0e55('0x36')]));_0x4d77e6[_0x0e55('0x37')]=_0x4d77e6[_0x0e55('0x37')][_0x0e55('0x38')]?_0x4d77e6[_0x0e55('0x37')]:_0x2a0966[_0x0e55('0x31')];if(_0xe2230d[_0x0e55('0x33')][_0x0e55('0x49')]){_0x4d77e6[_0x0e55('0x43')]=[{'all':!![]}];}_0x4d77e6=_[_0x0e55('0x40')]({},_0x4d77e6,_0xe2230d[_0x0e55('0x41')]);return db[_0x0e55('0x42')]['find'](_0x4d77e6)[_0x0e55('0x26')](handleEntityNotFound(_0x40f981,null))[_0x0e55('0x26')](respondWithResult(_0x40f981,null))[_0x0e55('0x46')](handleError(_0x40f981,null));};exports[_0x0e55('0x4a')]=function(_0x1e90a0,_0x5ea3ef){return db[_0x0e55('0x42')][_0x0e55('0x4a')](_0x1e90a0['body'],{})[_0x0e55('0x26')](respondWithResult(_0x5ea3ef,0xc9))[_0x0e55('0x46')](handleError(_0x5ea3ef,null));};exports['update']=function(_0xd8d4da,_0x377f93){if(_0xd8d4da['body']['id']){delete _0xd8d4da[_0x0e55('0x4b')]['id'];}return db['ChatTransferReport'][_0x0e55('0x4c')]({'where':{'id':_0xd8d4da[_0x0e55('0x47')]['id']}})[_0x0e55('0x26')](handleEntityNotFound(_0x377f93,null))[_0x0e55('0x26')](saveUpdates(_0xd8d4da[_0x0e55('0x4b')],null))[_0x0e55('0x26')](respondWithResult(_0x377f93,null))[_0x0e55('0x46')](handleError(_0x377f93,null));};exports[_0x0e55('0x27')]=function(_0x4ed5f5,_0x4aba5b){return db[_0x0e55('0x42')]['find']({'where':{'id':_0x4ed5f5[_0x0e55('0x47')]['id']}})[_0x0e55('0x26')](handleEntityNotFound(_0x4aba5b,null))[_0x0e55('0x26')](removeEntity(_0x4aba5b,null))['catch'](handleError(_0x4aba5b,null));};exports['describe']=function(_0x28acb0,_0x4f207a){return db[_0x0e55('0x42')][_0x0e55('0x4d')]()[_0x0e55('0x26')](respondWithResult(_0x4f207a,null))[_0x0e55('0x46')](handleError(_0x4f207a,null));};
\ No newline at end of file
index 638ca40..0c1f6e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x67ad=['ChatTransferReport','report_chat_transfer','uniqueid','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf'];(function(_0x5eb6e0,_0x3cf0aa){var _0x3b5419=function(_0x3f8a86){while(--_0x3f8a86){_0x5eb6e0['push'](_0x5eb6e0['shift']());}};_0x3b5419(++_0x3cf0aa);}(_0x67ad,0x179));var _0xd67a=function(_0x18a80a,_0x5cbf2f){_0x18a80a=_0x18a80a-0x0;var _0x4eed55=_0x67ad[_0x18a80a];return _0x4eed55;};'use strict';var _=require(_0xd67a('0x0'));var util=require(_0xd67a('0x1'));var logger=require(_0xd67a('0x2'))(_0xd67a('0x3'));var moment=require('moment');var BPromise=require(_0xd67a('0x4'));var rp=require(_0xd67a('0x5'));var fs=require('fs');var path=require(_0xd67a('0x6'));var rimraf=require(_0xd67a('0x7'));var config=require('../../config/environment');var attributes=require('./chatTransferReport.attributes');module['exports']=function(_0x31ed92,_0x59ab4e){return _0x31ed92['define'](_0xd67a('0x8'),attributes,{'tableName':_0xd67a('0x9'),'paranoid':![],'indexes':[{'name':_0xd67a('0xa'),'fields':[_0xd67a('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xe3f2=['uniqueid','lodash','util','api','moment','request-promise','rimraf','../../config/environment','./chatTransferReport.attributes','exports','define','ChatTransferReport','report_chat_transfer'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xe3f2,0x11f));var _0x2e3f=function(_0x3b100f,_0xdef47b){_0x3b100f=_0x3b100f-0x0;var _0x1afa36=_0xe3f2[_0x3b100f];return _0x1afa36;};'use strict';var _=require(_0x2e3f('0x0'));var util=require(_0x2e3f('0x1'));var logger=require('../../config/logger')(_0x2e3f('0x2'));var moment=require(_0x2e3f('0x3'));var BPromise=require('bluebird');var rp=require(_0x2e3f('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x2e3f('0x5'));var config=require(_0x2e3f('0x6'));var attributes=require(_0x2e3f('0x7'));module[_0x2e3f('0x8')]=function(_0x333253,_0x1c567f){return _0x333253[_0x2e3f('0x9')](_0x2e3f('0xa'),attributes,{'tableName':_0x2e3f('0xb'),'paranoid':![],'indexes':[{'name':_0x2e3f('0xc'),'fields':[_0x2e3f('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 63fbd5c..28780ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x35e5=['result','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','debug','ChatTransferReport,\x20%s,\x20%s,\x20%s','error','ChatTransferReport,\x20%s,\x20%s','message','request\x20sent'];(function(_0x5d34d5,_0x4f1b38){var _0xa0ac47=function(_0x54f959){while(--_0x54f959){_0x5d34d5['push'](_0x5d34d5['shift']());}};_0xa0ac47(++_0x4f1b38);}(_0x35e5,0x1cf));var _0x535e=function(_0x4ea598,_0x43d6c4){_0x4ea598=_0x4ea598-0x0;var _0x553d08=_0x35e5[_0x4ea598];return _0x553d08;};'use strict';var _=require(_0x535e('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x535e('0x1'));var rs=require(_0x535e('0x2'));var fs=require('fs');var Redis=require(_0x535e('0x3'));var db=require(_0x535e('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x535e('0x5'))(_0x535e('0x6'));var config=require(_0x535e('0x7'));var jayson=require(_0x535e('0x8'));var client=jayson[_0x535e('0x9')][_0x535e('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x50ab57,_0x28efee,_0x37a08c){return new BPromise(function(_0x2b1c18,_0x32a0b6){return client[_0x535e('0xb')](_0x50ab57,_0x37a08c)[_0x535e('0xc')](function(_0x52ad5a){logger[_0x535e('0xd')]('ChatTransferReport,\x20%s,\x20%s',_0x28efee,'request\x20sent');logger[_0x535e('0xe')](_0x535e('0xf'),_0x28efee,'request\x20sent',JSON['stringify'](_0x52ad5a));if(_0x52ad5a[_0x535e('0x10')]){if(_0x52ad5a[_0x535e('0x10')]['code']===0x1f4){logger[_0x535e('0x10')](_0x535e('0x11'),_0x28efee,_0x52ad5a[_0x535e('0x10')][_0x535e('0x12')]);return _0x32a0b6(_0x52ad5a[_0x535e('0x10')][_0x535e('0x12')]);}logger['error'](_0x535e('0x11'),_0x28efee,_0x52ad5a[_0x535e('0x10')][_0x535e('0x12')]);return _0x2b1c18(_0x52ad5a[_0x535e('0x10')][_0x535e('0x12')]);}else{logger['info'](_0x535e('0x11'),_0x28efee,_0x535e('0x13'));_0x2b1c18(_0x52ad5a[_0x535e('0x14')]['message']);}})['catch'](function(_0x7d1e2f){logger[_0x535e('0x10')](_0x535e('0x11'),_0x28efee,_0x7d1e2f);_0x32a0b6(_0x7d1e2f);});});}
\ No newline at end of file
+var _0xef6e=['../../config/utils','../../config/logger','rpc','jayson/promise','http','request','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','ioredis','../../mysqldb'];(function(_0x32f6b9,_0x2d4aa9){var _0x267d52=function(_0x10f74f){while(--_0x10f74f){_0x32f6b9['push'](_0x32f6b9['shift']());}};_0x267d52(++_0x2d4aa9);}(_0xef6e,0x182));var _0xeef6=function(_0x4fa7db,_0x1ebf43){_0x4fa7db=_0x4fa7db-0x0;var _0xdb723a=_0xef6e[_0x4fa7db];return _0xdb723a;};'use strict';var _=require(_0xeef6('0x0'));var util=require(_0xeef6('0x1'));var moment=require(_0xeef6('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xeef6('0x3'));var db=require(_0xeef6('0x4'))['db'];var utils=require(_0xeef6('0x5'));var logger=require(_0xeef6('0x6'))(_0xeef6('0x7'));var config=require('../../config/environment');var jayson=require(_0xeef6('0x8'));var client=jayson['client'][_0xeef6('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x682c3e,_0x394e6b,_0x4a0a65){return new BPromise(function(_0x2b57d9,_0x3b8091){return client[_0xeef6('0xa')](_0x682c3e,_0x4a0a65)[_0xeef6('0xb')](function(_0x5e02d6){logger[_0xeef6('0xc')](_0xeef6('0xd'),_0x394e6b,_0xeef6('0xe'));logger[_0xeef6('0xf')](_0xeef6('0x10'),_0x394e6b,_0xeef6('0xe'),JSON[_0xeef6('0x11')](_0x5e02d6));if(_0x5e02d6[_0xeef6('0x12')]){if(_0x5e02d6[_0xeef6('0x12')][_0xeef6('0x13')]===0x1f4){logger[_0xeef6('0x12')](_0xeef6('0xd'),_0x394e6b,_0x5e02d6['error'][_0xeef6('0x14')]);return _0x3b8091(_0x5e02d6[_0xeef6('0x12')][_0xeef6('0x14')]);}logger[_0xeef6('0x12')](_0xeef6('0xd'),_0x394e6b,_0x5e02d6[_0xeef6('0x12')][_0xeef6('0x14')]);return _0x2b57d9(_0x5e02d6[_0xeef6('0x12')][_0xeef6('0x14')]);}else{logger[_0xeef6('0xc')](_0xeef6('0xd'),_0x394e6b,_0xeef6('0xe'));_0x2b57d9(_0x5e02d6[_0xeef6('0x15')]['message']);}})[_0xeef6('0x16')](function(_0x75955b){logger[_0xeef6('0x12')](_0xeef6('0xd'),_0x394e6b,_0x75955b);_0x3b8091(_0x75955b);});});}
\ No newline at end of file
index 7eb4e7a..bdf48d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd149=['exports','multer','util','connect-timeout','../../config/environment','./chatTransferReport.controller','isAuthenticated','index','get','/describe','describe','/:id','show','post','delete','destroy'];(function(_0x3b3bbc,_0x5c0e75){var _0x32d1f2=function(_0x449c0b){while(--_0x449c0b){_0x3b3bbc['push'](_0x3b3bbc['shift']());}};_0x32d1f2(++_0x5c0e75);}(_0xd149,0x1d1));var _0x9d14=function(_0xfa634c,_0x414e0e){_0xfa634c=_0xfa634c-0x0;var _0x73e478=_0xd149[_0xfa634c];return _0x73e478;};'use strict';var multer=require(_0x9d14('0x0'));var util=require(_0x9d14('0x1'));var path=require('path');var timeout=require(_0x9d14('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x9d14('0x3'));var controller=require(_0x9d14('0x4'));router['get']('/',auth[_0x9d14('0x5')](),controller[_0x9d14('0x6')]);router[_0x9d14('0x7')](_0x9d14('0x8'),auth[_0x9d14('0x5')](),controller[_0x9d14('0x9')]);router['get'](_0x9d14('0xa'),auth[_0x9d14('0x5')](),controller[_0x9d14('0xb')]);router[_0x9d14('0xc')]('/',auth[_0x9d14('0x5')](),controller['create']);router['put'](_0x9d14('0xa'),auth[_0x9d14('0x5')](),controller['update']);router[_0x9d14('0xd')](_0x9d14('0xa'),auth['isAuthenticated'](),controller[_0x9d14('0xe')]);module[_0x9d14('0xf')]=router;
\ No newline at end of file
+var _0x57ff=['/describe','describe','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../config/environment','./chatTransferReport.controller','get','isAuthenticated'];(function(_0x471a59,_0x2bb489){var _0x29428c=function(_0x249e9c){while(--_0x249e9c){_0x471a59['push'](_0x471a59['shift']());}};_0x29428c(++_0x2bb489);}(_0x57ff,0x1af));var _0xf57f=function(_0x500c8b,_0xeb44d5){_0x500c8b=_0x500c8b-0x0;var _0x41666e=_0x57ff[_0x500c8b];return _0x41666e;};'use strict';var multer=require(_0xf57f('0x0'));var util=require(_0xf57f('0x1'));var path=require(_0xf57f('0x2'));var timeout=require(_0xf57f('0x3'));var express=require('express');var router=express[_0xf57f('0x4')]();var fs_extra=require(_0xf57f('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xf57f('0x6'));var controller=require(_0xf57f('0x7'));router[_0xf57f('0x8')]('/',auth[_0xf57f('0x9')](),controller['index']);router[_0xf57f('0x8')](_0xf57f('0xa'),auth[_0xf57f('0x9')](),controller[_0xf57f('0xb')]);router['get'](_0xf57f('0xc'),auth['isAuthenticated'](),controller[_0xf57f('0xd')]);router[_0xf57f('0xe')]('/',auth['isAuthenticated'](),controller[_0xf57f('0xf')]);router[_0xf57f('0x10')](_0xf57f('0xc'),auth['isAuthenticated'](),controller[_0xf57f('0x11')]);router[_0xf57f('0x12')](_0xf57f('0xc'),auth['isAuthenticated'](),controller[_0xf57f('0x13')]);module[_0xf57f('0x14')]=router;
\ No newline at end of file
index 5e727f5..952afbd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd2ea=['Comments','Leave\x20your\x20comments','offlineForm','generate','All\x20of\x20our\x20agents\x20are\x20busy\x20at\x20this\x20time.\x20Your\x20chat\x20is\x20very\x20important\x20to\x20us.','Please\x20hold\x20and\x20we\x20will\x20answer\x20your\x20request\x20as\x20soon\x20as\x20possible.','New\x20offline\x20message\x20from\x20websiteName','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','bottom_right','CHAT','alternate','#fafafa','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','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','email','#011F6A','INTEGER','BOOLEAN','ENUM','squared','We\x20are\x20here!','Chat','Send','Contact\x20us','TEXT','Do\x20you\x20want\x20to\x20close\x20the\x20interaction?','Form\x20properly\x20submitted','Form\x20submission\x20error','Note','Type\x20a\x20message','Thanks\x20you\x20for\x20your\x20time!','Skip','Feedback','star','thumb','stringify','input','name','text','getDataValue','onlineForm','parse','setDataValue','textarea'];(function(_0xd933cf,_0x1d96c7){var _0xd88807=function(_0x3422ab){while(--_0x3422ab){_0xd933cf['push'](_0xd933cf['shift']());}};_0xd88807(++_0x1d96c7);}(_0xd2ea,0x15f));var _0xad2e=function(_0x241b5b,_0x388051){_0x241b5b=_0x241b5b-0x0;var _0x28b94b=_0xd2ea[_0x241b5b];return _0x28b94b;};'use strict';var Sequelize=require(_0xad2e('0x0'));var rs=require(_0xad2e('0x1'));module[_0xad2e('0x2')]={'name':{'type':Sequelize[_0xad2e('0x3')],'allowNull':![]},'address':{'type':Sequelize[_0xad2e('0x3')],'allowNull':![],'unique':'address'},'description':{'type':Sequelize[_0xad2e('0x3')]},'mapKey':{'type':Sequelize[_0xad2e('0x3')],'defaultValue':_0xad2e('0x4')},'mapKeyOffline':{'type':Sequelize[_0xad2e('0x3')],'defaultValue':_0xad2e('0x4')},'key':{'type':Sequelize[_0xad2e('0x3')],'allowNull':![]},'agentAlias':{'type':Sequelize[_0xad2e('0x3')],'defaultValue':'Agent'},'customerAlias':{'type':Sequelize[_0xad2e('0x3')],'defaultValue':'Me'},'color':{'type':Sequelize[_0xad2e('0x3')],'allowNull':![],'defaultValue':_0xad2e('0x5'),'validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xad2e('0x5'),'validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize[_0xad2e('0x3')],'allowNull':![],'defaultValue':'#ffffff','validate':{'notEmpty':!![]}},'textButtonColor':{'type':Sequelize[_0xad2e('0x3')],'allowNull':![],'defaultValue':'#ffffff','validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize[_0xad2e('0x6')],'defaultValue':0xf},'remote':{'type':Sequelize[_0xad2e('0x3')]},'animation':{'type':Sequelize[_0xad2e('0x7')],'defaultValue':!![]},'header_shape':{'type':Sequelize[_0xad2e('0x8')]('rounded',_0xad2e('0x9')),'defaultValue':'rounded'},'header_online':{'type':Sequelize[_0xad2e('0x3')],'defaultValue':_0xad2e('0xa')},'start_chat_button':{'type':Sequelize[_0xad2e('0x3')],'defaultValue':_0xad2e('0xb')},'offline_chat_button':{'type':Sequelize['STRING'],'defaultValue':_0xad2e('0xc')},'header_offline':{'type':Sequelize['STRING'],'defaultValue':_0xad2e('0xd')},'download_transcript':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'timeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'whiteLabel':{'type':Sequelize['STRING'],'defaultValue':'Powered\x20by\x20xCALLY'},'defaultWhiteLabel':{'type':Sequelize[_0xad2e('0x7')],'defaultValue':!![]},'sitepic':{'type':Sequelize[_0xad2e('0xe')]},'closingQuestion':{'type':Sequelize[_0xad2e('0x3')],'defaultValue':_0xad2e('0xf')},'formSubmitSuccessMessage':{'type':Sequelize[_0xad2e('0x3')],'defaultValue':_0xad2e('0x10')},'formSubmitFailureMessage':{'type':Sequelize[_0xad2e('0x3')],'defaultValue':_0xad2e('0x11')},'noteTitle':{'type':Sequelize[_0xad2e('0x3')],'defaultValue':_0xad2e('0x12')},'placeholderMessage':{'type':Sequelize[_0xad2e('0x3')],'defaultValue':_0xad2e('0x13')},'closingMessage':{'type':Sequelize[_0xad2e('0x3')],'defaultValue':_0xad2e('0x14')},'closingMessageButton':{'type':Sequelize[_0xad2e('0x3')],'defaultValue':'Send'},'skipMessageButton':{'type':Sequelize[_0xad2e('0x3')],'defaultValue':_0xad2e('0x15')},'conditionAgreement':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enableRating':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enableFeedback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enableSendButton':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'feedbackTitle':{'type':Sequelize[_0xad2e('0x3')],'defaultValue':_0xad2e('0x16')},'ratingType':{'type':Sequelize[_0xad2e('0x8')](_0xad2e('0x17'),_0xad2e('0x18')),'defaultValue':_0xad2e('0x17')},'ratingStarsNumber':{'type':Sequelize[_0xad2e('0x6')],'defaultValue':0x5},'onlineForm':{'type':Sequelize[_0xad2e('0xe')],'defaultValue':function(){return JSON[_0xad2e('0x19')]({'items':[{'type':_0xad2e('0x1a'),'variable':null,'config':{'placeholder':_0xad2e('0x1b'),'type':_0xad2e('0x1c'),'required':!![]},'props':{'title':_0xad2e('0x1b'),'helpText':''}},{'type':_0xad2e('0x1a'),'props':{'title':_0xad2e('0x4'),'helpText':''},'config':{'required':!![],'placeholder':_0xad2e('0x4'),'type':'email'},'variable':null}],'fromKey':0x1});},'get':function(){return this[_0xad2e('0x1d')](_0xad2e('0x1e'))?JSON[_0xad2e('0x1f')](this[_0xad2e('0x1d')](_0xad2e('0x1e'))):{};},'set':function(_0x58acc8){return this[_0xad2e('0x20')](_0xad2e('0x1e'),JSON[_0xad2e('0x19')](_0x58acc8));}},'offlineForm':{'type':Sequelize['TEXT'],'defaultValue':function(){return JSON[_0xad2e('0x19')]({'items':[{'type':'input','props':{'title':_0xad2e('0x4'),'helpText':''},'config':{'required':!![],'placeholder':_0xad2e('0x4'),'type':_0xad2e('0x4')},'variable':null},{'type':_0xad2e('0x21'),'config':{'placeholder':_0xad2e('0x22')},'props':{'title':_0xad2e('0x22'),'helpText':_0xad2e('0x23')}}],'fromKey':0x0});},'get':function(){return this[_0xad2e('0x1d')](_0xad2e('0x24'))?JSON[_0xad2e('0x1f')](this['getDataValue'](_0xad2e('0x24'))):{};},'set':function(_0xfd2087){return this[_0xad2e('0x20')](_0xad2e('0x24'),JSON[_0xad2e('0x19')](_0xfd2087));}},'token':{'type':Sequelize[_0xad2e('0x3')],'defaultValue':function(){return rs[_0xad2e('0x25')]();}},'autoclose':{'type':Sequelize[_0xad2e('0x7')],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize[_0xad2e('0x7')],'defaultValue':![]},'forwardTranscript':{'type':Sequelize[_0xad2e('0x7')],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize[_0xad2e('0x3')]},'forwardOffline':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize[_0xad2e('0x3')]},'waitingTitle':{'type':Sequelize['STRING'],'defaultValue':_0xad2e('0x26')},'waitingMessage':{'type':Sequelize[_0xad2e('0x3')],'defaultValue':_0xad2e('0x27')},'offlineMessageSubject':{'type':Sequelize[_0xad2e('0x3')],'defaultValue':_0xad2e('0x28')},'offlineMessageBody':{'type':Sequelize['STRING'],'defaultValue':_0xad2e('0x29')},'enableUnmanagedNote':{'type':Sequelize[_0xad2e('0x7')],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize['STRING'],'defaultValue':_0xad2e('0x2a')},'skipUnmanaged':{'type':Sequelize[_0xad2e('0x3')],'defaultValue':'Skip'},'sendUnmanaged':{'type':Sequelize[_0xad2e('0x3')],'defaultValue':_0xad2e('0xc')},'enableCustomerAttachment':{'type':Sequelize[_0xad2e('0x7')],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize[_0xad2e('0x7')],'defaultValue':![]},'agentAvatar':{'type':Sequelize[_0xad2e('0xe')]},'showAgentAvatar':{'type':Sequelize[_0xad2e('0x7')],'defaultValue':![]},'timezone':{'type':Sequelize[_0xad2e('0x3')]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0xad2e('0x2b');}},'notificationSound':{'type':Sequelize[_0xad2e('0x7')],'defaultValue':!![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize[_0xad2e('0x7')],'defaultValue':![]},'agentIdentifier':{'type':Sequelize[_0xad2e('0x3')],'defaultValue':_0xad2e('0x2c')},'waitForTheAssignedAgent':{'type':Sequelize[_0xad2e('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize[_0xad2e('0x3')],'defaultValue':_0xad2e('0x2d')},'verticalAlignment':{'type':Sequelize['INTEGER'],'defaultValue':0x1e},'labelText':{'type':Sequelize['STRING'],'defaultValue':_0xad2e('0x2e')},'messagesAlignment':{'type':Sequelize['STRING'],'defaultValue':_0xad2e('0x2f')},'defaultTitle':{'type':Sequelize[_0xad2e('0x3')]},'customerAvatar':{'type':Sequelize[_0xad2e('0xe')]},'showCustomerAvatar':{'type':Sequelize[_0xad2e('0x7')],'defaultValue':![]},'messageFontSize':{'type':Sequelize[_0xad2e('0x6')],'defaultValue':0xc},'backgroundColor':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xad2e('0x30'),'validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize[_0xad2e('0x7')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize[_0xad2e('0x3')],'defaultValue':'System'},'systemAvatar':{'type':Sequelize['TEXT']},'mandatoryDispositionPauseId':{'type':Sequelize[_0xad2e('0x6')],'comment':_0xad2e('0x31')},'mandatoryDisposition':{'type':Sequelize[_0xad2e('0x7')],'defaultValue':![],'comment':_0xad2e('0x32'),'set':function(_0x6f4fbc){if(!_0x6f4fbc)this[_0xad2e('0x20')](_0xad2e('0x33'),null);this['setDataValue'](_0xad2e('0x34'),_0x6f4fbc);}},'vidaooEscalation':{'type':Sequelize[_0xad2e('0x7')],'defaultValue':![]},'vidaooApiKey':{'type':Sequelize[_0xad2e('0x3')]},'vidaooTopic':{'type':Sequelize[_0xad2e('0x3')],'allowNull':![],'defaultValue':_0xad2e('0x35')},'vidaooNote':{'type':Sequelize['STRING'],'defaultValue':function(){return _0xad2e('0x36');}},'vidaooMetadata':{'type':Sequelize['TEXT'],'defaultValue':null},'openNewInteraction':{'type':Sequelize[_0xad2e('0x7')],'defaultValue':![],'allowNull':!![]},'subjectOffline':{'type':Sequelize[_0xad2e('0xe')]}};
\ No newline at end of file
+var _0xd2ea=['Comments','Leave\x20your\x20comments','offlineForm','generate','All\x20of\x20our\x20agents\x20are\x20busy\x20at\x20this\x20time.\x20Your\x20chat\x20is\x20very\x20important\x20to\x20us.','Please\x20hold\x20and\x20we\x20will\x20answer\x20your\x20request\x20as\x20soon\x20as\x20possible.','New\x20offline\x20message\x20from\x20websiteName','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','bottom_right','CHAT','alternate','#fafafa','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','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','email','#011F6A','INTEGER','BOOLEAN','ENUM','squared','We\x20are\x20here!','Chat','Send','Contact\x20us','TEXT','Do\x20you\x20want\x20to\x20close\x20the\x20interaction?','Form\x20properly\x20submitted','Form\x20submission\x20error','Note','Type\x20a\x20message','Thanks\x20you\x20for\x20your\x20time!','Skip','Feedback','star','thumb','stringify','input','name','text','getDataValue','onlineForm','parse','setDataValue','textarea'];(function(_0x590567,_0x3c55c0){var _0x2b8345=function(_0x544396){while(--_0x544396){_0x590567['push'](_0x590567['shift']());}};_0x2b8345(++_0x3c55c0);}(_0xd2ea,0x15f));var _0xad2e=function(_0x3475cf,_0x541c04){_0x3475cf=_0x3475cf-0x0;var _0x53fa38=_0xd2ea[_0x3475cf];return _0x53fa38;};'use strict';var Sequelize=require(_0xad2e('0x0'));var rs=require(_0xad2e('0x1'));module[_0xad2e('0x2')]={'name':{'type':Sequelize[_0xad2e('0x3')],'allowNull':![]},'address':{'type':Sequelize[_0xad2e('0x3')],'allowNull':![],'unique':'address'},'description':{'type':Sequelize[_0xad2e('0x3')]},'mapKey':{'type':Sequelize[_0xad2e('0x3')],'defaultValue':_0xad2e('0x4')},'mapKeyOffline':{'type':Sequelize[_0xad2e('0x3')],'defaultValue':_0xad2e('0x4')},'key':{'type':Sequelize[_0xad2e('0x3')],'allowNull':![]},'agentAlias':{'type':Sequelize[_0xad2e('0x3')],'defaultValue':'Agent'},'customerAlias':{'type':Sequelize[_0xad2e('0x3')],'defaultValue':'Me'},'color':{'type':Sequelize[_0xad2e('0x3')],'allowNull':![],'defaultValue':_0xad2e('0x5'),'validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xad2e('0x5'),'validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize[_0xad2e('0x3')],'allowNull':![],'defaultValue':'#ffffff','validate':{'notEmpty':!![]}},'textButtonColor':{'type':Sequelize[_0xad2e('0x3')],'allowNull':![],'defaultValue':'#ffffff','validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize[_0xad2e('0x6')],'defaultValue':0xf},'remote':{'type':Sequelize[_0xad2e('0x3')]},'animation':{'type':Sequelize[_0xad2e('0x7')],'defaultValue':!![]},'header_shape':{'type':Sequelize[_0xad2e('0x8')]('rounded',_0xad2e('0x9')),'defaultValue':'rounded'},'header_online':{'type':Sequelize[_0xad2e('0x3')],'defaultValue':_0xad2e('0xa')},'start_chat_button':{'type':Sequelize[_0xad2e('0x3')],'defaultValue':_0xad2e('0xb')},'offline_chat_button':{'type':Sequelize['STRING'],'defaultValue':_0xad2e('0xc')},'header_offline':{'type':Sequelize['STRING'],'defaultValue':_0xad2e('0xd')},'download_transcript':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'timeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'whiteLabel':{'type':Sequelize['STRING'],'defaultValue':'Powered\x20by\x20xCALLY'},'defaultWhiteLabel':{'type':Sequelize[_0xad2e('0x7')],'defaultValue':!![]},'sitepic':{'type':Sequelize[_0xad2e('0xe')]},'closingQuestion':{'type':Sequelize[_0xad2e('0x3')],'defaultValue':_0xad2e('0xf')},'formSubmitSuccessMessage':{'type':Sequelize[_0xad2e('0x3')],'defaultValue':_0xad2e('0x10')},'formSubmitFailureMessage':{'type':Sequelize[_0xad2e('0x3')],'defaultValue':_0xad2e('0x11')},'noteTitle':{'type':Sequelize[_0xad2e('0x3')],'defaultValue':_0xad2e('0x12')},'placeholderMessage':{'type':Sequelize[_0xad2e('0x3')],'defaultValue':_0xad2e('0x13')},'closingMessage':{'type':Sequelize[_0xad2e('0x3')],'defaultValue':_0xad2e('0x14')},'closingMessageButton':{'type':Sequelize[_0xad2e('0x3')],'defaultValue':'Send'},'skipMessageButton':{'type':Sequelize[_0xad2e('0x3')],'defaultValue':_0xad2e('0x15')},'conditionAgreement':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enableRating':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enableFeedback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enableSendButton':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'feedbackTitle':{'type':Sequelize[_0xad2e('0x3')],'defaultValue':_0xad2e('0x16')},'ratingType':{'type':Sequelize[_0xad2e('0x8')](_0xad2e('0x17'),_0xad2e('0x18')),'defaultValue':_0xad2e('0x17')},'ratingStarsNumber':{'type':Sequelize[_0xad2e('0x6')],'defaultValue':0x5},'onlineForm':{'type':Sequelize[_0xad2e('0xe')],'defaultValue':function(){return JSON[_0xad2e('0x19')]({'items':[{'type':_0xad2e('0x1a'),'variable':null,'config':{'placeholder':_0xad2e('0x1b'),'type':_0xad2e('0x1c'),'required':!![]},'props':{'title':_0xad2e('0x1b'),'helpText':''}},{'type':_0xad2e('0x1a'),'props':{'title':_0xad2e('0x4'),'helpText':''},'config':{'required':!![],'placeholder':_0xad2e('0x4'),'type':'email'},'variable':null}],'fromKey':0x1});},'get':function(){return this[_0xad2e('0x1d')](_0xad2e('0x1e'))?JSON[_0xad2e('0x1f')](this[_0xad2e('0x1d')](_0xad2e('0x1e'))):{};},'set':function(_0x58acc8){return this[_0xad2e('0x20')](_0xad2e('0x1e'),JSON[_0xad2e('0x19')](_0x58acc8));}},'offlineForm':{'type':Sequelize['TEXT'],'defaultValue':function(){return JSON[_0xad2e('0x19')]({'items':[{'type':'input','props':{'title':_0xad2e('0x4'),'helpText':''},'config':{'required':!![],'placeholder':_0xad2e('0x4'),'type':_0xad2e('0x4')},'variable':null},{'type':_0xad2e('0x21'),'config':{'placeholder':_0xad2e('0x22')},'props':{'title':_0xad2e('0x22'),'helpText':_0xad2e('0x23')}}],'fromKey':0x0});},'get':function(){return this[_0xad2e('0x1d')](_0xad2e('0x24'))?JSON[_0xad2e('0x1f')](this['getDataValue'](_0xad2e('0x24'))):{};},'set':function(_0xfd2087){return this[_0xad2e('0x20')](_0xad2e('0x24'),JSON[_0xad2e('0x19')](_0xfd2087));}},'token':{'type':Sequelize[_0xad2e('0x3')],'defaultValue':function(){return rs[_0xad2e('0x25')]();}},'autoclose':{'type':Sequelize[_0xad2e('0x7')],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize[_0xad2e('0x7')],'defaultValue':![]},'forwardTranscript':{'type':Sequelize[_0xad2e('0x7')],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize[_0xad2e('0x3')]},'forwardOffline':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize[_0xad2e('0x3')]},'waitingTitle':{'type':Sequelize['STRING'],'defaultValue':_0xad2e('0x26')},'waitingMessage':{'type':Sequelize[_0xad2e('0x3')],'defaultValue':_0xad2e('0x27')},'offlineMessageSubject':{'type':Sequelize[_0xad2e('0x3')],'defaultValue':_0xad2e('0x28')},'offlineMessageBody':{'type':Sequelize['STRING'],'defaultValue':_0xad2e('0x29')},'enableUnmanagedNote':{'type':Sequelize[_0xad2e('0x7')],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize['STRING'],'defaultValue':_0xad2e('0x2a')},'skipUnmanaged':{'type':Sequelize[_0xad2e('0x3')],'defaultValue':'Skip'},'sendUnmanaged':{'type':Sequelize[_0xad2e('0x3')],'defaultValue':_0xad2e('0xc')},'enableCustomerAttachment':{'type':Sequelize[_0xad2e('0x7')],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize[_0xad2e('0x7')],'defaultValue':![]},'agentAvatar':{'type':Sequelize[_0xad2e('0xe')]},'showAgentAvatar':{'type':Sequelize[_0xad2e('0x7')],'defaultValue':![]},'timezone':{'type':Sequelize[_0xad2e('0x3')]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0xad2e('0x2b');}},'notificationSound':{'type':Sequelize[_0xad2e('0x7')],'defaultValue':!![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize[_0xad2e('0x7')],'defaultValue':![]},'agentIdentifier':{'type':Sequelize[_0xad2e('0x3')],'defaultValue':_0xad2e('0x2c')},'waitForTheAssignedAgent':{'type':Sequelize[_0xad2e('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize[_0xad2e('0x3')],'defaultValue':_0xad2e('0x2d')},'verticalAlignment':{'type':Sequelize['INTEGER'],'defaultValue':0x1e},'labelText':{'type':Sequelize['STRING'],'defaultValue':_0xad2e('0x2e')},'messagesAlignment':{'type':Sequelize['STRING'],'defaultValue':_0xad2e('0x2f')},'defaultTitle':{'type':Sequelize[_0xad2e('0x3')]},'customerAvatar':{'type':Sequelize[_0xad2e('0xe')]},'showCustomerAvatar':{'type':Sequelize[_0xad2e('0x7')],'defaultValue':![]},'messageFontSize':{'type':Sequelize[_0xad2e('0x6')],'defaultValue':0xc},'backgroundColor':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xad2e('0x30'),'validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize[_0xad2e('0x7')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize[_0xad2e('0x3')],'defaultValue':'System'},'systemAvatar':{'type':Sequelize['TEXT']},'mandatoryDispositionPauseId':{'type':Sequelize[_0xad2e('0x6')],'comment':_0xad2e('0x31')},'mandatoryDisposition':{'type':Sequelize[_0xad2e('0x7')],'defaultValue':![],'comment':_0xad2e('0x32'),'set':function(_0x6f4fbc){if(!_0x6f4fbc)this[_0xad2e('0x20')](_0xad2e('0x33'),null);this['setDataValue'](_0xad2e('0x34'),_0x6f4fbc);}},'vidaooEscalation':{'type':Sequelize[_0xad2e('0x7')],'defaultValue':![]},'vidaooApiKey':{'type':Sequelize[_0xad2e('0x3')]},'vidaooTopic':{'type':Sequelize[_0xad2e('0x3')],'allowNull':![],'defaultValue':_0xad2e('0x35')},'vidaooNote':{'type':Sequelize['STRING'],'defaultValue':function(){return _0xad2e('0x36');}},'vidaooMetadata':{'type':Sequelize['TEXT'],'defaultValue':null},'openNewInteraction':{'type':Sequelize[_0xad2e('0x7')],'defaultValue':![],'allowNull':!![]},'subjectOffline':{'type':Sequelize[_0xad2e('0xe')]}};
\ No newline at end of file
index ce4c68e..c472aea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53a4=['MailAccount','findOrCreate','readFileSync','server/files/templates/chatOfflineMessage.ejs','utf8','render','ChatOfflineMessage','fromString','originalname','mimetype','server','basename','openNewInteraction','sequelize','Attachment','bulkCreate','MailServerOut','Smtp','CloudProvider','forwardOffline','forwardOfflineAddress','getSmtpOptions','SendMail','sendMail','\x22%s\x22\x20<%s>','email','offlineMessageSubject','subjectOffline','toPairsIn','mapValues','Chat','MailAccountId','NotifyMailAccount','notifyMail','offline-chat','remove','Could\x20not\x20remove\x20attachment\x20file','addInteraction','omit','getInteractions','Owner','fullname','internal','Tag','Tags','color','tag','Command','getSnippet','timezone','iftime\x20%s','interval','indexOf','[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)','OFFLINE','inspect','No\x20timezone','Interval','Intervals','virtual','License','increment','chatLicenseExceeded','all','some','server/files/chat/iframe.ejs','URL','address','origin','3.1.0','remote','x-real-ip','connection','remoteAddress','replace','alignment','verticalAlignment','labelText','textColor','textButtonColor','color_button','backgroundColor','addApplications','Transaction','ISOLATION_LEVELS','READ_COMMITTED','findAndCountAll','stack','finally','getApplications','addProactiveActions','getProactiveActions','ChatProactiveAction','false','offlineForm','onlineForm','items','fromKey','getOfflineMessages','Contact','addAgents','emit','userChatWebsite:save','removeAgents','userChatWebsite:remove','getAgents','bluebird','mustache','util','path','ejs','fs-extra','lodash','ioredis','../../components/parsers/qs','../../config/logger','../../config/environment','url','../../mysqldb','redis','localhost','register','html-to-text','jayson/promise','http','client','request','then','ChatWebsite,\x20%s,\x20%s','request\x20sent','ChatWebsite,\x20%s,\x20%s,\x20%s','stringify','code','error','message','info','result','catch','sendStatus','status','offset','undefined','limit','count','set','json','update','destroy','ChatWebsites','UserProfileResource','end','name','send','index','Pause','mandatoryDispositionPause','ChatWebsite','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','merge','map','VIRTUAL','includeAll','include','findAll','show','params','options','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','getDispositions','findOne','Disposition','nolimit','pick','ChatWebsiteId','filter','rows','removeDispositions','ids','getAnswers','CannedAnswer','removeAnswers','sitepic','file','filename','addAvatar','agentAvatar','customerAvatar','addSystemAvatar','systemAvatar','server/files/images/logos/default_logo.svg','../../config/license/util','getLicense','custom','isNil','existsSync','server/files/images/logos/','join','download','root','server/files/images/avatars/default_avatar.png','server/files/images/avatars/','getCustomerAvatar','server/files/images/avatars/customer_avatar.png','showCustomerAvatar','getSystemAvatar','server/files/images/avatars/system_avatar.png','user-agent-parser','setUA','headers','user-agent','chat','CmContact','Sequelize','ValidationError','createdAt','updatedAt','CompanyId','ListId','from','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','DESC','ChatApplication','Applications','applications','orderBy','priority','asc','account','defaults','contact','cf-connecting-ip','x-forwarded-for','first','firstName','x-real-port','referer','browser','version','unknown','format','%s\x20%s','device','vendor','threadId','ChatInteraction','externalUrl','ContactId','interaction','spread','lastName','messageId','created','autoclose','push','close','unmanaged','*,*,*,*','ChatMessage','UserId','User','unshift','agent','waitForTheAssignedAgent','forcedOwnership','Start','startRouting','EventManager','notify','files','no\x20available\x20attributes','mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKeyOffline'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x53a4,0x19d));var _0x453a=function(_0x22ea80,_0x2e80ca){_0x22ea80=_0x22ea80-0x0;var _0x4adadf=_0x53a4[_0x22ea80];return _0x4adadf;};'use strict';var BPromise=require(_0x453a('0x0'));var Mustache=require(_0x453a('0x1'));var util=require(_0x453a('0x2'));var path=require(_0x453a('0x3'));var ejs=require(_0x453a('0x4'));var fs=require('fs');var fs_extra=require(_0x453a('0x5'));var _=require(_0x453a('0x6'));var querystring=require('querystring');var Redis=require(_0x453a('0x7'));var qs=require(_0x453a('0x8'));var logger=require(_0x453a('0x9'))('api');var config=require(_0x453a('0xa'));var url=require(_0x453a('0xb'));var db=require(_0x453a('0xc'))['db'];config[_0x453a('0xd')]=_['defaults'](config['redis'],{'host':_0x453a('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./chatWebsite.socket')[_0x453a('0xf')](socket);var htmlToText=require(_0x453a('0x10'));var jayson=require(_0x453a('0x11'));var client=jayson['client'][_0x453a('0x12')]({'port':0x232c});var client9002=jayson[_0x453a('0x13')][_0x453a('0x12')]({'port':0x232a});var client9003=jayson[_0x453a('0x13')][_0x453a('0x12')]({'port':0x232b});var client9001=jayson[_0x453a('0x13')][_0x453a('0x12')]({'port':0x2329});function respondWithRpcPromise(_0x118c36,_0x347f27,_0x20acef,_0x5ab583){return new BPromise(function(_0x33e339,_0x49d1dd){var _0x517258=_0x5ab583||client;return _0x517258[_0x453a('0x14')](_0x118c36,_0x20acef)[_0x453a('0x15')](function(_0x17c0a7){logger['info'](_0x453a('0x16'),_0x347f27,_0x453a('0x17'));logger['debug'](_0x453a('0x18'),_0x347f27,_0x453a('0x17'),JSON[_0x453a('0x19')](_0x17c0a7));if(_0x17c0a7['error']){if(_0x17c0a7['error'][_0x453a('0x1a')]===0x1f4){logger[_0x453a('0x1b')](_0x453a('0x16'),_0x347f27,_0x17c0a7['error']['message']);return _0x49d1dd(_0x17c0a7[_0x453a('0x1b')][_0x453a('0x1c')]);}logger[_0x453a('0x1b')](_0x453a('0x16'),_0x347f27,_0x17c0a7[_0x453a('0x1b')]['message']);return _0x33e339(_0x17c0a7[_0x453a('0x1b')][_0x453a('0x1c')]);}else{logger[_0x453a('0x1d')]('ChatWebsite,\x20%s,\x20%s',_0x347f27,'request\x20sent');_0x33e339(_0x17c0a7[_0x453a('0x1e')][_0x453a('0x1c')]);}})[_0x453a('0x1f')](function(_0x36ba87){logger[_0x453a('0x1b')](_0x453a('0x16'),_0x347f27,_0x36ba87);_0x49d1dd(_0x36ba87);});});}function respondWithStatusCode(_0x1aa74c,_0x180b1f){_0x180b1f=_0x180b1f||0xcc;return function(_0x1b230a){if(_0x1b230a){return _0x1aa74c[_0x453a('0x20')](_0x180b1f);}return _0x1aa74c[_0x453a('0x21')](_0x180b1f)['end']();};}function respondWithResult(_0x26b3c2,_0x415353){_0x415353=_0x415353||0xc8;return function(_0x208dac){if(_0x208dac){return _0x26b3c2['status'](_0x415353)['json'](_0x208dac);}};}function respondWithFilteredResult(_0x14d9d2,_0x3a0dd8){return function(_0x2e78e4){if(_0x2e78e4){var _0x6a5bca=typeof _0x3a0dd8[_0x453a('0x22')]===_0x453a('0x23')&&typeof _0x3a0dd8[_0x453a('0x24')]===_0x453a('0x23');var _0x3686c5=_0x2e78e4['count'];var _0x10433d=_0x6a5bca?0x0:_0x3a0dd8['offset'];var _0x7b6795=_0x6a5bca?_0x2e78e4[_0x453a('0x25')]:_0x3a0dd8[_0x453a('0x22')]+_0x3a0dd8[_0x453a('0x24')];var _0x30c977;if(_0x7b6795>=_0x3686c5){_0x7b6795=_0x3686c5;_0x30c977=0xc8;}else{_0x30c977=0xce;}_0x14d9d2[_0x453a('0x21')](_0x30c977);return _0x14d9d2[_0x453a('0x26')]('Content-Range',_0x10433d+'-'+_0x7b6795+'/'+_0x3686c5)[_0x453a('0x27')](_0x2e78e4);}return null;};}function saveUpdates(_0x35437c){return function(_0x3b42f8){if(_0x3b42f8){return _0x3b42f8[_0x453a('0x28')](_0x35437c)[_0x453a('0x15')](function(_0x51ec9e){return _0x51ec9e;});}return null;};}function removeEntity(_0x4c3bd8){return function(_0x23b0f0){if(_0x23b0f0){return _0x23b0f0[_0x453a('0x29')]()[_0x453a('0x15')](function(){var _0x128245=_0x23b0f0['get']({'plain':!![]});var _0x2ccb22=_0x453a('0x2a');return db[_0x453a('0x2b')][_0x453a('0x29')]({'where':{'type':_0x2ccb22,'resourceId':_0x128245['id']}})['then'](function(){return _0x23b0f0;});})[_0x453a('0x15')](function(){_0x4c3bd8['status'](0xcc)[_0x453a('0x2c')]();});}};}function handleEntityNotFound(_0x56c7fa){return function(_0x5abe84){if(!_0x5abe84){_0x56c7fa[_0x453a('0x20')](0x194);}return _0x5abe84;};}function handleError(_0x4f2c73,_0x1c7867){_0x1c7867=_0x1c7867||0x1f4;return function(_0xfe7463){logger['error'](_0xfe7463['stack']);if(_0xfe7463[_0x453a('0x2d')]){delete _0xfe7463[_0x453a('0x2d')];}_0x4f2c73['status'](_0x1c7867)[_0x453a('0x2e')](_0xfe7463);};}exports[_0x453a('0x2f')]=function(_0x35184c,_0xa2becd){var _0x7ce78={'include':[{'model':db[_0x453a('0x30')],'as':_0x453a('0x31')}]},_0x2e8438={},_0x2f7991={'count':0x0,'rows':[]};var _0x1beef2=_['map'](db[_0x453a('0x32')][_0x453a('0x33')],function(_0x3db016){return{'name':_0x3db016[_0x453a('0x34')],'type':_0x3db016[_0x453a('0x35')][_0x453a('0x36')]};});_0x2e8438[_0x453a('0x37')]=_['map'](_0x1beef2,_0x453a('0x2d'));_0x2e8438['query']=_[_0x453a('0x38')](_0x35184c[_0x453a('0x39')]);_0x2e8438[_0x453a('0x3a')]=_[_0x453a('0x3b')](_0x2e8438[_0x453a('0x37')],_0x2e8438[_0x453a('0x39')]);_0x7ce78[_0x453a('0x3c')]=_[_0x453a('0x3b')](_0x2e8438[_0x453a('0x37')],qs[_0x453a('0x3d')](_0x35184c[_0x453a('0x39')][_0x453a('0x3d')]));_0x7ce78['attributes']=_0x7ce78[_0x453a('0x3c')][_0x453a('0x3e')]?_0x7ce78[_0x453a('0x3c')]:_0x2e8438['model'];if(!_0x35184c[_0x453a('0x39')][_0x453a('0x3f')]('nolimit')){_0x7ce78['limit']=qs[_0x453a('0x24')](_0x35184c['query'][_0x453a('0x24')]);_0x7ce78['offset']=qs['offset'](_0x35184c['query'][_0x453a('0x22')]);}_0x7ce78[_0x453a('0x40')]=qs[_0x453a('0x41')](_0x35184c[_0x453a('0x39')][_0x453a('0x41')]);_0x7ce78[_0x453a('0x42')]=qs[_0x453a('0x3a')](_['pick'](_0x35184c[_0x453a('0x39')],_0x2e8438[_0x453a('0x3a')]),_0x1beef2);if(_0x35184c[_0x453a('0x39')]['filter']){_0x7ce78['where']=_[_0x453a('0x43')](_0x7ce78[_0x453a('0x42')],{'$or':_[_0x453a('0x44')](_0x1beef2,function(_0x2afd82){if(_0x2afd82[_0x453a('0x35')]!==_0x453a('0x45')){var _0xbc6e59={};_0xbc6e59[_0x2afd82[_0x453a('0x2d')]]={'$like':'%'+_0x35184c[_0x453a('0x39')]['filter']+'%'};return _0xbc6e59;}})});}_0x7ce78=_[_0x453a('0x43')]({},_0x7ce78,_0x35184c['options']);var _0x1219b0={'where':_0x7ce78['where']};return db[_0x453a('0x32')][_0x453a('0x25')](_0x1219b0)[_0x453a('0x15')](function(_0x5bd1a6){_0x2f7991[_0x453a('0x25')]=_0x5bd1a6;if(_0x35184c[_0x453a('0x39')][_0x453a('0x46')]){_0x7ce78[_0x453a('0x47')]=[{'all':!![]}];}return db[_0x453a('0x32')][_0x453a('0x48')](_0x7ce78);})[_0x453a('0x15')](function(_0x177552){_0x2f7991['rows']=_0x177552;return _0x2f7991;})[_0x453a('0x15')](respondWithFilteredResult(_0xa2becd,_0x7ce78))[_0x453a('0x1f')](handleError(_0xa2becd,null));};exports[_0x453a('0x49')]=function(_0x2e77f5,_0x46284c){var _0x4aa129={'raw':![],'where':{'id':_0x2e77f5[_0x453a('0x4a')]['id']},'include':[{'model':db[_0x453a('0x30')],'as':_0x453a('0x31')}]},_0x56a17e={};_0x56a17e[_0x453a('0x37')]=_[_0x453a('0x38')](db[_0x453a('0x32')][_0x453a('0x33')]);_0x56a17e[_0x453a('0x39')]=_[_0x453a('0x38')](_0x2e77f5['query']);_0x56a17e[_0x453a('0x3a')]=_[_0x453a('0x3b')](_0x56a17e[_0x453a('0x37')],_0x56a17e[_0x453a('0x39')]);_0x4aa129[_0x453a('0x3c')]=_[_0x453a('0x3b')](_0x56a17e['model'],qs[_0x453a('0x3d')](_0x2e77f5[_0x453a('0x39')][_0x453a('0x3d')]));_0x4aa129[_0x453a('0x3c')]=_0x4aa129[_0x453a('0x3c')][_0x453a('0x3e')]?_0x4aa129[_0x453a('0x3c')]:_0x56a17e[_0x453a('0x37')];if(_0x2e77f5[_0x453a('0x39')][_0x453a('0x46')]){_0x4aa129[_0x453a('0x47')]=[{'all':!![]}];}_0x4aa129=_[_0x453a('0x43')]({},_0x4aa129,_0x2e77f5[_0x453a('0x4b')]);return db['ChatWebsite'][_0x453a('0x4c')](_0x4aa129)['then'](handleEntityNotFound(_0x46284c,null))[_0x453a('0x15')](respondWithResult(_0x46284c,null))[_0x453a('0x1f')](handleError(_0x46284c,null));};exports[_0x453a('0x4d')]=function(_0x5576f1,_0x2b472e){return db[_0x453a('0x32')][_0x453a('0x4d')](_0x5576f1[_0x453a('0x4e')],{})[_0x453a('0x15')](function(_0x5eb883){var _0x356bb2=_0x5576f1[_0x453a('0x4f')][_0x453a('0x50')]({'plain':!![]});if(!_0x356bb2)throw new Error(_0x453a('0x51'));if(_0x356bb2[_0x453a('0x52')]===_0x453a('0x4f')){var _0x28d4ff=_0x5eb883[_0x453a('0x50')]({'plain':!![]});var _0x45eff4=_0x453a('0x2a');return db[_0x453a('0x53')][_0x453a('0x4c')]({'where':{'name':_0x45eff4,'userProfileId':_0x356bb2[_0x453a('0x54')]},'raw':!![]})[_0x453a('0x15')](function(_0x3c733c){if(_0x3c733c&&_0x3c733c[_0x453a('0x55')]===0x0){return db['UserProfileResource'][_0x453a('0x4d')]({'name':_0x28d4ff[_0x453a('0x2d')],'resourceId':_0x28d4ff['id'],'type':_0x3c733c[_0x453a('0x2d')],'sectionId':_0x3c733c['id']},{})['then'](function(){return _0x5eb883;});}else{return _0x5eb883;}})[_0x453a('0x1f')](function(_0x7dd73f){logger[_0x453a('0x1b')](_0x453a('0x56'),_0x7dd73f);throw _0x7dd73f;});}return _0x5eb883;})['then'](respondWithResult(_0x2b472e,0xc9))['catch'](handleError(_0x2b472e,null));};exports[_0x453a('0x28')]=function(_0x24154f,_0x11e154){if(_0x24154f[_0x453a('0x4e')]['id']){delete _0x24154f[_0x453a('0x4e')]['id'];}return db[_0x453a('0x32')]['find']({'where':{'id':_0x24154f[_0x453a('0x4a')]['id']},'include':[{'model':db['Pause'],'as':_0x453a('0x31')}]})[_0x453a('0x15')](handleEntityNotFound(_0x11e154,null))[_0x453a('0x15')](saveUpdates(_0x24154f[_0x453a('0x4e')],null))['then'](respondWithResult(_0x11e154,null))[_0x453a('0x1f')](handleError(_0x11e154,null));};exports[_0x453a('0x29')]=function(_0x1db30c,_0x3fa2a1){return db[_0x453a('0x32')]['find']({'where':{'id':_0x1db30c[_0x453a('0x4a')]['id']}})['then'](handleEntityNotFound(_0x3fa2a1,null))[_0x453a('0x15')](removeEntity(_0x3fa2a1,null))['catch'](handleError(_0x3fa2a1,null));};exports[_0x453a('0x57')]=function(_0x315b45,_0x41d527){return db[_0x453a('0x32')]['describe']()[_0x453a('0x15')](respondWithResult(_0x41d527,null))[_0x453a('0x1f')](handleError(_0x41d527,null));};exports[_0x453a('0x58')]=function(_0x5e7457,_0x30361d){if(_0x5e7457[_0x453a('0x4e')]['id']){delete _0x5e7457['body']['id'];}return db[_0x453a('0x32')][_0x453a('0x4c')]({'where':{'id':_0x5e7457[_0x453a('0x4a')]['id']}})[_0x453a('0x15')](handleEntityNotFound(_0x30361d,null))[_0x453a('0x15')](function(_0xb866b9){if(_0xb866b9){_0x5e7457['body']['ChatWebsiteId']=_0xb866b9['id'];return db['Disposition'][_0x453a('0x4d')](_0x5e7457[_0x453a('0x4e')]);}})[_0x453a('0x15')](respondWithResult(_0x30361d,null))[_0x453a('0x1f')](handleError(_0x30361d,null));};exports[_0x453a('0x59')]=function(_0x1210f1,_0x5ccef4){var _0x16cbb1={'raw':![],'where':{}};var _0x3990a8={};var _0x133d62={'count':0x0,'rows':[]};return db[_0x453a('0x32')][_0x453a('0x5a')]({'where':{'id':_0x1210f1['params']['id']}})['then'](handleEntityNotFound(_0x5ccef4,null))[_0x453a('0x15')](function(_0x4fca76){if(_0x4fca76){_0x3990a8[_0x453a('0x37')]=_['keys'](db[_0x453a('0x5b')]['rawAttributes']);_0x3990a8[_0x453a('0x39')]=_[_0x453a('0x38')](_0x1210f1['query']);_0x3990a8['filters']=_[_0x453a('0x3b')](_0x3990a8['model'],_0x3990a8[_0x453a('0x39')]);_0x16cbb1[_0x453a('0x3c')]=_[_0x453a('0x3b')](_0x3990a8[_0x453a('0x37')],qs['fields'](_0x1210f1['query'][_0x453a('0x3d')]));_0x16cbb1['attributes']=_0x16cbb1[_0x453a('0x3c')][_0x453a('0x3e')]?_0x16cbb1[_0x453a('0x3c')]:_0x3990a8['model'];if(!_0x1210f1[_0x453a('0x39')][_0x453a('0x3f')](_0x453a('0x5c'))){_0x16cbb1[_0x453a('0x24')]=qs['limit'](_0x1210f1['query'][_0x453a('0x24')]);_0x16cbb1[_0x453a('0x22')]=qs[_0x453a('0x22')](_0x1210f1['query'][_0x453a('0x22')]);}_0x16cbb1['order']=qs[_0x453a('0x41')](_0x1210f1[_0x453a('0x39')][_0x453a('0x41')]);_0x16cbb1['where']=qs[_0x453a('0x3a')](_[_0x453a('0x5d')](_0x1210f1[_0x453a('0x39')],_0x3990a8[_0x453a('0x3a')]));_0x16cbb1[_0x453a('0x42')][_0x453a('0x5e')]=_0x4fca76['id'];if(_0x1210f1['query'][_0x453a('0x5f')]){_0x16cbb1[_0x453a('0x42')]=_[_0x453a('0x43')](_0x16cbb1[_0x453a('0x42')],{'$or':_['map'](_0x16cbb1['attributes'],function(_0x436f32){var _0x498752={};_0x498752[_0x436f32]={'$like':'%'+_0x1210f1[_0x453a('0x39')][_0x453a('0x5f')]+'%'};return _0x498752;})});}_0x16cbb1=_[_0x453a('0x43')]({},_0x16cbb1,_0x1210f1[_0x453a('0x4b')]);return db[_0x453a('0x5b')][_0x453a('0x25')]({'where':_0x16cbb1[_0x453a('0x42')]})[_0x453a('0x15')](function(_0xbdf14c){_0x133d62[_0x453a('0x25')]=_0xbdf14c;if(_0x1210f1['query']['includeAll']){_0x16cbb1[_0x453a('0x47')]=[{'all':!![]}];}return db['Disposition'][_0x453a('0x48')](_0x16cbb1);})[_0x453a('0x15')](function(_0x500fc5){_0x133d62[_0x453a('0x60')]=_0x500fc5;return _0x133d62;});}})[_0x453a('0x15')](respondWithFilteredResult(_0x5ccef4,_0x16cbb1))[_0x453a('0x1f')](handleError(_0x5ccef4,null));};exports[_0x453a('0x61')]=function(_0x29de34,_0x394c60){return db['ChatWebsite']['find']({'where':{'id':_0x29de34[_0x453a('0x4a')]['id']}})[_0x453a('0x15')](handleEntityNotFound(_0x394c60,null))[_0x453a('0x15')](function(_0x58bb96){if(_0x58bb96){return _0x58bb96[_0x453a('0x61')](_0x29de34[_0x453a('0x39')][_0x453a('0x62')]);}})[_0x453a('0x15')](respondWithStatusCode(_0x394c60,null))[_0x453a('0x1f')](handleError(_0x394c60,null));};exports['addAnswer']=function(_0x2933e0,_0x135667){if(_0x2933e0[_0x453a('0x4e')]['id']){delete _0x2933e0[_0x453a('0x4e')]['id'];}return db[_0x453a('0x32')][_0x453a('0x4c')]({'where':{'id':_0x2933e0[_0x453a('0x4a')]['id']}})[_0x453a('0x15')](handleEntityNotFound(_0x135667,null))[_0x453a('0x15')](function(_0x24857c){if(_0x24857c){_0x2933e0[_0x453a('0x4e')][_0x453a('0x5e')]=_0x24857c['id'];return db['CannedAnswer'][_0x453a('0x4d')](_0x2933e0[_0x453a('0x4e')]);}})[_0x453a('0x15')](respondWithResult(_0x135667,null))[_0x453a('0x1f')](handleError(_0x135667,null));};exports[_0x453a('0x63')]=function(_0x362fe3,_0x4a5fb0){var _0x3d98b6={'raw':![],'where':{}};var _0x10e604={};var _0x1e832e={'count':0x0,'rows':[]};return db[_0x453a('0x32')][_0x453a('0x5a')]({'where':{'id':_0x362fe3[_0x453a('0x4a')]['id']}})[_0x453a('0x15')](handleEntityNotFound(_0x4a5fb0,null))[_0x453a('0x15')](function(_0xd079b3){if(_0xd079b3){_0x10e604[_0x453a('0x37')]=_[_0x453a('0x38')](db['CannedAnswer'][_0x453a('0x33')]);_0x10e604[_0x453a('0x39')]=_[_0x453a('0x38')](_0x362fe3['query']);_0x10e604[_0x453a('0x3a')]=_[_0x453a('0x3b')](_0x10e604[_0x453a('0x37')],_0x10e604[_0x453a('0x39')]);_0x3d98b6[_0x453a('0x3c')]=_[_0x453a('0x3b')](_0x10e604[_0x453a('0x37')],qs['fields'](_0x362fe3[_0x453a('0x39')][_0x453a('0x3d')]));_0x3d98b6[_0x453a('0x3c')]=_0x3d98b6[_0x453a('0x3c')][_0x453a('0x3e')]?_0x3d98b6[_0x453a('0x3c')]:_0x10e604[_0x453a('0x37')];if(!_0x362fe3['query'][_0x453a('0x3f')](_0x453a('0x5c'))){_0x3d98b6['limit']=qs['limit'](_0x362fe3[_0x453a('0x39')][_0x453a('0x24')]);_0x3d98b6[_0x453a('0x22')]=qs[_0x453a('0x22')](_0x362fe3[_0x453a('0x39')][_0x453a('0x22')]);}_0x3d98b6[_0x453a('0x40')]=qs['sort'](_0x362fe3[_0x453a('0x39')][_0x453a('0x41')]);_0x3d98b6[_0x453a('0x42')]=qs['filters'](_[_0x453a('0x5d')](_0x362fe3[_0x453a('0x39')],_0x10e604[_0x453a('0x3a')]));_0x3d98b6[_0x453a('0x42')][_0x453a('0x5e')]=_0xd079b3['id'];if(_0x362fe3['query'][_0x453a('0x5f')]){_0x3d98b6[_0x453a('0x42')]=_[_0x453a('0x43')](_0x3d98b6[_0x453a('0x42')],{'$or':_['map'](_0x3d98b6[_0x453a('0x3c')],function(_0xd2be9){var _0x5bc533={};_0x5bc533[_0xd2be9]={'$like':'%'+_0x362fe3[_0x453a('0x39')]['filter']+'%'};return _0x5bc533;})});}_0x3d98b6=_[_0x453a('0x43')]({},_0x3d98b6,_0x362fe3[_0x453a('0x4b')]);return db[_0x453a('0x64')][_0x453a('0x25')]({'where':_0x3d98b6[_0x453a('0x42')]})[_0x453a('0x15')](function(_0x5e2187){_0x1e832e[_0x453a('0x25')]=_0x5e2187;if(_0x362fe3[_0x453a('0x39')][_0x453a('0x46')]){_0x3d98b6[_0x453a('0x47')]=[{'all':!![]}];}return db[_0x453a('0x64')][_0x453a('0x48')](_0x3d98b6);})[_0x453a('0x15')](function(_0x5e1253){_0x1e832e['rows']=_0x5e1253;return _0x1e832e;});}})['then'](respondWithFilteredResult(_0x4a5fb0,_0x3d98b6))[_0x453a('0x1f')](handleError(_0x4a5fb0,null));};exports[_0x453a('0x65')]=function(_0x221535,_0x166c3b){return db[_0x453a('0x32')]['find']({'where':{'id':_0x221535['params']['id']}})[_0x453a('0x15')](handleEntityNotFound(_0x166c3b,null))['then'](function(_0x500a43){if(_0x500a43){return _0x500a43[_0x453a('0x65')](_0x221535[_0x453a('0x39')][_0x453a('0x62')]);}})[_0x453a('0x15')](respondWithStatusCode(_0x166c3b,null))[_0x453a('0x1f')](handleError(_0x166c3b,null));};exports['addLogo']=function(_0x546da1,_0x5009d6){_0x546da1[_0x453a('0x4e')][_0x453a('0x66')]=_0x546da1[_0x453a('0x67')][_0x453a('0x68')];return db[_0x453a('0x32')][_0x453a('0x4c')]({'where':{'id':_0x546da1[_0x453a('0x4a')]['id']}})['then'](handleEntityNotFound(_0x5009d6,null))[_0x453a('0x15')](saveUpdates(_0x546da1['body'],null))[_0x453a('0x15')](respondWithResult(_0x5009d6,null))['catch'](handleError(_0x5009d6,null));};exports[_0x453a('0x69')]=function(_0x1b9b91,_0x4c58da){_0x1b9b91['body'][_0x453a('0x6a')]=_0x1b9b91['file']['filename'];return db[_0x453a('0x32')][_0x453a('0x4c')]({'where':{'id':_0x1b9b91[_0x453a('0x4a')]['id']}})[_0x453a('0x15')](handleEntityNotFound(_0x4c58da,null))[_0x453a('0x15')](saveUpdates(_0x1b9b91[_0x453a('0x4e')],null))['then'](respondWithResult(_0x4c58da,null))[_0x453a('0x1f')](handleError(_0x4c58da,null));};exports['addCustomerAvatar']=function(_0x5d2632,_0x485a86){_0x5d2632[_0x453a('0x4e')][_0x453a('0x6b')]=_0x5d2632[_0x453a('0x67')][_0x453a('0x68')];return db['ChatWebsite'][_0x453a('0x4c')]({'where':{'id':_0x5d2632['params']['id']}})[_0x453a('0x15')](handleEntityNotFound(_0x485a86,null))['then'](saveUpdates(_0x5d2632[_0x453a('0x4e')],null))[_0x453a('0x15')](respondWithResult(_0x485a86,null))[_0x453a('0x1f')](handleError(_0x485a86,null));};exports[_0x453a('0x6c')]=function(_0x553c7b,_0x2dd440){_0x553c7b[_0x453a('0x4e')][_0x453a('0x6d')]=_0x553c7b[_0x453a('0x67')][_0x453a('0x68')];return db[_0x453a('0x32')]['find']({'where':{'id':_0x553c7b['params']['id']}})[_0x453a('0x15')](handleEntityNotFound(_0x2dd440,null))[_0x453a('0x15')](saveUpdates(_0x553c7b[_0x453a('0x4e')],null))[_0x453a('0x15')](respondWithResult(_0x2dd440,null))['catch'](handleError(_0x2dd440,null));};exports['getLogo']=function(_0x20dbb0,_0x2ffa37){var _0x4027a3=path['join'](config['root'],_0x453a('0x6e'));var _0x206614={'where':{'id':_0x20dbb0['params']['id']},'attributes':['id',_0x453a('0x66')],'raw':!![]};var _0x1fad9c=![];return require(_0x453a('0x6f'))[_0x453a('0x70')]()[_0x453a('0x15')](function(_0x4d707d){if(_0x4d707d){_0x1fad9c=_0x4d707d[_0x453a('0x71')];}})[_0x453a('0x15')](function(){return db[_0x453a('0x32')][_0x453a('0x4c')](_0x206614);})[_0x453a('0x15')](handleEntityNotFound(_0x2ffa37,null))['then'](function(_0x3cd5d8){if(_0x3cd5d8){if(!_[_0x453a('0x72')](_0x3cd5d8[_0x453a('0x66')])){if(fs[_0x453a('0x73')](path['join'](config['root'],_0x453a('0x74'),_0x3cd5d8[_0x453a('0x66')]))&&_0x1fad9c){_0x4027a3=path[_0x453a('0x75')](config['root'],_0x453a('0x74'),_0x3cd5d8[_0x453a('0x66')]);}}return _0x2ffa37[_0x453a('0x76')](_0x4027a3);}})['catch'](handleError(_0x2ffa37,null));};exports['getAvatar']=function(_0x3465c8,_0x5b2bc5){var _0x15b287=path[_0x453a('0x75')](config[_0x453a('0x77')],_0x453a('0x78'));var _0xcaefcd={'where':{'id':_0x3465c8[_0x453a('0x4a')]['id']},'attributes':['id','agentAvatar'],'raw':!![]};return db[_0x453a('0x32')]['find'](_0xcaefcd)[_0x453a('0x15')](handleEntityNotFound(_0x5b2bc5,null))[_0x453a('0x15')](function(_0x2ec4a4){if(_0x2ec4a4){if(!_[_0x453a('0x72')](_0x2ec4a4[_0x453a('0x6a')])){if(fs[_0x453a('0x73')](path[_0x453a('0x75')](config['root'],_0x453a('0x79'),_0x2ec4a4[_0x453a('0x6a')]))){_0x15b287=path[_0x453a('0x75')](config[_0x453a('0x77')],'server/files/images/avatars/',_0x2ec4a4[_0x453a('0x6a')]);}}return _0x5b2bc5[_0x453a('0x76')](_0x15b287);}})[_0x453a('0x1f')](handleError(_0x5b2bc5,null));};exports[_0x453a('0x7a')]=function(_0x4cf273,_0x372af8){var _0x4abafc=path[_0x453a('0x75')](config[_0x453a('0x77')],_0x453a('0x7b'));var _0x682c7c={'where':{'id':_0x4cf273[_0x453a('0x4a')]['id']},'attributes':['id',_0x453a('0x6b'),_0x453a('0x7c')],'raw':!![]};return db['ChatWebsite'][_0x453a('0x4c')](_0x682c7c)[_0x453a('0x15')](handleEntityNotFound(_0x372af8,null))[_0x453a('0x15')](function(_0x44f8be){if(_0x44f8be){if(!_[_0x453a('0x72')](_0x44f8be[_0x453a('0x6b')])){if(fs[_0x453a('0x73')](path[_0x453a('0x75')](config[_0x453a('0x77')],'server/files/images/avatars/',_0x44f8be['customerAvatar']))&&_0x44f8be[_0x453a('0x7c')]){_0x4abafc=path[_0x453a('0x75')](config[_0x453a('0x77')],'server/files/images/avatars/',_0x44f8be[_0x453a('0x6b')]);}}return _0x372af8[_0x453a('0x76')](_0x4abafc);}})[_0x453a('0x1f')](handleError(_0x372af8,null));};exports[_0x453a('0x7d')]=function(_0x422e1e,_0x50c3ff){var _0x54e29d=path[_0x453a('0x75')](config[_0x453a('0x77')],_0x453a('0x7e'));var _0x33892={'where':{'id':_0x422e1e[_0x453a('0x4a')]['id']},'attributes':['id',_0x453a('0x6d')],'raw':!![]};return db[_0x453a('0x32')][_0x453a('0x4c')](_0x33892)['then'](handleEntityNotFound(_0x50c3ff,null))['then'](function(_0x492504){if(_0x492504){if(!_[_0x453a('0x72')](_0x492504['systemAvatar'])){if(fs[_0x453a('0x73')](path[_0x453a('0x75')](config[_0x453a('0x77')],_0x453a('0x79'),_0x492504['systemAvatar']))){_0x54e29d=path[_0x453a('0x75')](config[_0x453a('0x77')],_0x453a('0x79'),_0x492504[_0x453a('0x6d')]);}}return _0x50c3ff[_0x453a('0x76')](_0x54e29d);}})[_0x453a('0x1f')](handleError(_0x50c3ff,null));};exports['notify']=function(_0x263751,_0x25728d){var _0x34dd8a=require(_0x453a('0x7f'));var _0x3313ba=new _0x34dd8a();var _0x22dce7=_0x3313ba[_0x453a('0x80')](_0x263751[_0x453a('0x81')][_0x453a('0x82')])['getResult']();var _0x29ef2a={'body':_0x263751[_0x453a('0x4e')],'channel':_0x453a('0x83')};var _0x287566=[];var _0xa76ba7=[];var _0x2c24ce={};var _0x543f44=![];return db[_0x453a('0x84')][_0x453a('0x57')]()[_0x453a('0x15')](function(_0x5cb76c){if(!_0x5cb76c){throw new db[(_0x453a('0x85'))][(_0x453a('0x86'))]('no\x20available\x20attributes');}_0x287566=_['difference'](_['keys'](_0x5cb76c),[_0x453a('0x87'),_0x453a('0x88')]);_0xa76ba7=_['difference'](_[_0x453a('0x38')](_0x5cb76c),[_0x453a('0x87'),_0x453a('0x88'),_0x453a('0x89'),_0x453a('0x8a')]);if(_0x263751[_0x453a('0x4e')]['id']){delete _0x263751['body']['id'];}if(_[_0x453a('0x72')](_0x263751['body'][_0x453a('0x8b')])){throw new db['Sequelize']['ValidationError'](_0x453a('0x8c'));}if(_[_0x453a('0x72')](_0x263751[_0x453a('0x4e')][_0x453a('0x4e')])||_0x263751['body']['body']===''){throw new db[(_0x453a('0x85'))][(_0x453a('0x86'))](_0x453a('0x8d'));}if(_[_0x453a('0x72')](_0x263751['body'][_0x453a('0x8e')])){throw new db[(_0x453a('0x85'))][(_0x453a('0x86'))](_0x453a('0x8f')+_0xa76ba7);}if(!_['includes'](_0xa76ba7,_0x263751[_0x453a('0x4e')][_0x453a('0x8e')])){throw new db[(_0x453a('0x85'))][(_0x453a('0x86'))](_0x453a('0x90')+_0xa76ba7);}_0x2c24ce[_0x263751[_0x453a('0x4e')]['mapKey']]=_0x263751[_0x453a('0x4e')][_0x453a('0x8b')];})['then'](function(){return db[_0x453a('0x32')][_0x453a('0x4c')]({'where':{'id':_0x263751[_0x453a('0x4a')]['id']},'include':[{'model':db[_0x453a('0x91')],'as':_0x453a('0x92'),'include':[{'model':db[_0x453a('0x84')],'as':_0x453a('0x93'),'where':_0x2c24ce,'limit':0x1,'order':[[_0x453a('0x88'),_0x453a('0x94')]]}]},{'model':db[_0x453a('0x95')],'as':_0x453a('0x96')}]});})[_0x453a('0x15')](handleEntityNotFound(_0x25728d,null))['then'](function(_0x4e6ace){if(_0x4e6ace&&_0x4e6ace[_0x453a('0x92')]){_0x29ef2a['account']=_0x4e6ace;_0x29ef2a[_0x453a('0x97')]=_0x4e6ace[_0x453a('0x96')];_0x29ef2a['list']=_0x4e6ace['List'];_0x29ef2a['applications']=_[_0x453a('0x98')](_0x29ef2a['applications'],[_0x453a('0x99')],[_0x453a('0x9a')]);if(_0x29ef2a['account'][_0x453a('0x96')]){delete _0x29ef2a[_0x453a('0x9b')][_0x453a('0x96')];}if(_0x29ef2a[_0x453a('0x9b')][_0x453a('0x92')]&&_0x29ef2a['account']['List']['Contacts'][_0x453a('0x3e')]){return _0x29ef2a['account'][_0x453a('0x92')][_0x453a('0x93')][0x0];}var _0x2e66d3=_[_0x453a('0x9c')](_0x263751[_0x453a('0x4e')],{'firstName':_0x263751[_0x453a('0x4e')][_0x453a('0x8b')],'ListId':_0x4e6ace[_0x453a('0x8a')]});_0x2e66d3[_0x263751[_0x453a('0x4e')][_0x453a('0x8e')]]=_0x263751['body'][_0x453a('0x8b')];return db[_0x453a('0x84')][_0x453a('0x4d')](_0x2e66d3,{'fields':_0x287566,'raw':!![]});}})[_0x453a('0x15')](handleEntityNotFound(_0x25728d,null))[_0x453a('0x15')](function(_0x5c78e9){_0x29ef2a[_0x453a('0x9d')]=_0x5c78e9;var _0x1d4092=_0x263751[_0x453a('0x4e')]['customerIp'];if(_0x263751[_0x453a('0x81')]['cf-connecting-ip']){_0x1d4092=_0x263751[_0x453a('0x81')][_0x453a('0x9e')];}else if(_0x263751[_0x453a('0x81')][_0x453a('0x9f')]){_0x1d4092=_[_0x453a('0xa0')](_0x263751[_0x453a('0x81')][_0x453a('0x9f')]['split'](','));}if(_0x5c78e9){var _0x3fd6={'ContactId':_0x5c78e9['id'],'ChatWebsiteId':_0x263751[_0x453a('0x4a')]['id'],'from':(_0x5c78e9[_0x453a('0xa1')]||'')+'\x20'+(_0x5c78e9['lastName']||''),'customerIp':_0x1d4092,'customerPort':_0x263751[_0x453a('0x81')][_0x453a('0xa2')]?_0x263751[_0x453a('0x81')][_0x453a('0xa2')]:null,'referer':_0x263751[_0x453a('0x4e')][_0x453a('0xa3')],'browserName':_0x22dce7[_0x453a('0xa4')]['name']&&_0x22dce7[_0x453a('0xa4')][_0x453a('0xa5')]?util['format']('%s\x20%s',_0x22dce7['browser'][_0x453a('0x2d')],_0x22dce7[_0x453a('0xa4')]['version']):_0x453a('0xa6'),'browserVersion':_0x22dce7[_0x453a('0xa4')][_0x453a('0xa5')]||_0x453a('0xa6'),'osName':util[_0x453a('0xa7')](_0x453a('0xa8'),_0x22dce7['os'][_0x453a('0x2d')],_0x22dce7['os']['version']),'osVersion':_0x22dce7['os']['version'],'deviceModel':_0x22dce7[_0x453a('0xa9')]['model']&&_0x22dce7[_0x453a('0xa9')][_0x453a('0xaa')]?util[_0x453a('0xa7')]('%s\x20%s\x20%s',_0x22dce7[_0x453a('0xa9')][_0x453a('0x37')],_0x22dce7[_0x453a('0xa9')][_0x453a('0xaa')],_0x22dce7[_0x453a('0xa9')][_0x453a('0x35')]):null,'deviceVendor':_0x22dce7[_0x453a('0xa9')][_0x453a('0xaa')],'deviceType':_0x22dce7[_0x453a('0xa9')]['type'],'formData':JSON[_0x453a('0x19')](_0x263751['body'])};var _0x2d9189={'ChatWebsiteId':_0x263751[_0x453a('0x4a')]['id'],'closed':![]};if(_0x263751[_0x453a('0x4e')]['threadId']){_0x2d9189[_0x453a('0xab')]=_0x263751['body']['threadId'];return db[_0x453a('0xac')][_0x453a('0x4c')]({'where':_0x2d9189})[_0x453a('0x15')](function(_0x56fea5){if(_0x56fea5){return[_0x56fea5,![]];}_0x3fd6['threadId']=_0x263751[_0x453a('0x4e')][_0x453a('0xab')];_0x3fd6[_0x453a('0xad')]=_0x263751[_0x453a('0x4e')][_0x453a('0xad')];return db[_0x453a('0xac')]['create'](_0x3fd6)[_0x453a('0x15')](function(_0x3a99d8){return[_0x3a99d8,!![]];});});}_0x2d9189[_0x453a('0xae')]=_0x5c78e9['id'];if(_0x263751[_0x453a('0x4e')]['interaction']&&_0x263751[_0x453a('0x4e')][_0x453a('0xaf')]['id']){_0x2d9189['id']=_0x263751['body']['interaction']['id'];return db[_0x453a('0xac')][_0x453a('0x4c')]({'where':_0x2d9189})[_0x453a('0x15')](function(_0xcb85e6){if(_0xcb85e6){return[_0xcb85e6,![]];}return db[_0x453a('0xac')][_0x453a('0x4d')](_0x3fd6)[_0x453a('0x15')](function(_0x8a868e){return[_0x8a868e,!![]];});});}return db[_0x453a('0xac')]['create'](_0x3fd6)[_0x453a('0x15')](function(_0x5bcad1){return[_0x5bcad1,!![]];});}})[_0x453a('0xb0')](function(_0x354211,_0x3a502a){if(_0x354211){_0x543f44=_0x3a502a;if(!_0x3a502a){var _0x396875={'from':(_0x29ef2a[_0x453a('0x9d')][_0x453a('0xa1')]||'')+'\x20'+(_0x29ef2a[_0x453a('0x9d')][_0x453a('0xb1')]||'')};if(_0x263751[_0x453a('0x4e')][_0x453a('0xab')]&&_0x263751[_0x453a('0x4e')][_0x453a('0xb2')]&&_0x263751[_0x453a('0x4e')][_0x453a('0xab')]!=_0x263751[_0x453a('0x4e')][_0x453a('0xb2')]){_0x396875['threadId']=_0x263751[_0x453a('0x4e')][_0x453a('0xb2')];}return _0x354211[_0x453a('0x28')](_0x396875);}else{return _0x354211;}}})[_0x453a('0x15')](function(_0x429cef){_0x29ef2a[_0x453a('0xaf')]=_0x429cef[_0x453a('0x50')]({'plain':!![]});_0x29ef2a[_0x453a('0xaf')][_0x453a('0xb3')]=_0x543f44;if(_0x29ef2a[_0x453a('0xaf')][_0x453a('0xb3')]){if(_0x29ef2a[_0x453a('0x9b')][_0x453a('0xb4')]){_0x29ef2a['applications'][_0x453a('0xb5')]({'id':0x0,'priority':_0x29ef2a['applications'][_0x453a('0x3e')]+0x1,'app':_0x453a('0xb6'),'appdata':_0x453a('0xb7'),'interval':_0x453a('0xb8')});}}return db[_0x453a('0xb9')][_0x453a('0x4d')]({'body':_0x263751[_0x453a('0x4e')]['body'],'ChatWebsiteId':_0x263751['params']['id'],'ChatInteractionId':_0x429cef['id'],'direction':'in','ContactId':_0x29ef2a[_0x453a('0x9d')]['id'],'AttachmentId':_0x263751[_0x453a('0x4e')]['AttachmentId']});})[_0x453a('0x15')](function(_0x566255){_0x29ef2a[_0x453a('0x1c')]=_0x566255;if(_0x29ef2a[_0x453a('0xaf')][_0x453a('0xba')]){return db[_0x453a('0xbb')][_0x453a('0x4c')]({'attributes':['id','name'],'where':{'id':_0x29ef2a[_0x453a('0xaf')][_0x453a('0xba')]}})['then'](function(_0x10b583){if(_0x10b583){_0x29ef2a[_0x453a('0x97')][_0x453a('0xbc')]({'id':0x0,'priority':0x0,'app':_0x453a('0xbd'),'appdata':_0x10b583[_0x453a('0x2d')]+','+(_0x29ef2a[_0x453a('0x9b')][_0x453a('0xbe')]||0xa),'interval':_0x453a('0xb8')});_0x29ef2a[_0x453a('0xbf')]=!![];}return respondWithRpcPromise(_0x453a('0xc0'),_0x453a('0xc1'),_0x29ef2a);});}return respondWithRpcPromise('Start',_0x453a('0xc1'),_0x29ef2a);})['then'](function(_0x2d1de4){respondWithRpcPromise(_0x453a('0xc2'),_0x453a('0xc2'),{'event':_0x453a('0xc3'),'message':_0x2d1de4},client9002);return _0x2d1de4;})['then'](respondWithResult(_0x25728d,null))[_0x453a('0x1f')](handleError(_0x25728d,null));};exports['offline']=function(_0xd7b74e,_0x60c0a8){var _0x2152fe,_0x1d7dc0,_0x27e805;var _0x5900cb=[];var _0x49425b={};var _0x503757=_0xd7b74e[_0x453a('0xc4')]||[];var _0x157db4=[];var _0x2960e6;return db[_0x453a('0x84')][_0x453a('0x57')]()['then'](function(_0x19754b){if(!_0x19754b){throw new db['Sequelize'][(_0x453a('0x86'))](_0x453a('0xc5'));}_0x5900cb=_['difference'](_[_0x453a('0x38')](_0x19754b),[_0x453a('0x87'),_0x453a('0x88'),'CompanyId','ListId']);if(_0xd7b74e['body']['id']){delete _0xd7b74e[_0x453a('0x4e')]['id'];}if(_[_0x453a('0x72')](_0xd7b74e['body']['from'])){throw _0x60c0a8[_0x453a('0x21')](0x1f4)['send'](new db[(_0x453a('0x85'))][(_0x453a('0x86'))](_0x453a('0x8c')));}if(_['isNil'](_0xd7b74e['body'][_0x453a('0x4e')])||_0xd7b74e[_0x453a('0x4e')][_0x453a('0x4e')]===''){throw _0x60c0a8[_0x453a('0x21')](0x1f4)[_0x453a('0x2e')](new db[(_0x453a('0x85'))][(_0x453a('0x86'))](_0x453a('0x8d')));}if(_[_0x453a('0x72')](_0xd7b74e[_0x453a('0x4e')]['mapKeyOffline'])){throw _0x60c0a8[_0x453a('0x21')](0x1f4)['send'](new db[(_0x453a('0x85'))]['ValidationError'](_0x453a('0xc6')+_0x5900cb));}if(!_[_0x453a('0xc7')](_0x5900cb,_0xd7b74e[_0x453a('0x4e')][_0x453a('0xc8')])){throw _0x60c0a8[_0x453a('0x21')](0x1f4)[_0x453a('0x2e')](new db[(_0x453a('0x85'))][(_0x453a('0x86'))]('mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x5900cb));}_0x49425b[_0xd7b74e['body'][_0x453a('0xc8')]]=_0xd7b74e['body'][_0x453a('0x8b')];})[_0x453a('0x15')](function(){return db[_0x453a('0x32')][_0x453a('0x4c')]({'where':{'id':_0xd7b74e[_0x453a('0x4a')]['id']},'include':[{'model':db[_0x453a('0x91')],'as':'List'},{'model':db[_0x453a('0xc9')],'as':'MailAccount'}]});})['then'](handleEntityNotFound(_0x60c0a8,null))[_0x453a('0x15')](function(_0x2df5d4){if(_0x2df5d4&&_0x2df5d4[_0x453a('0x92')]){_0x1d7dc0=_0x2df5d4;var _0x26a8b9=_[_0x453a('0x9c')](_0xd7b74e['body'],{'firstName':_0xd7b74e[_0x453a('0x4e')]['from'],'phone':_0xd7b74e[_0x453a('0x4e')][_0x453a('0x8b')],'ListId':_0x2df5d4[_0x453a('0x8a')]});_0x26a8b9[_0xd7b74e['body'][_0x453a('0xc8')]]=_0xd7b74e['body'][_0x453a('0x8b')];return db[_0x453a('0x84')][_0x453a('0xca')]({'where':_0x49425b,'defaults':_0x26a8b9});}})['spread'](function(_0x1f3f16){if(_0x1f3f16){_0x27e805=_0x1f3f16;var _0x3db39b=fs[_0x453a('0xcb')](path[_0x453a('0x75')](config[_0x453a('0x77')],_0x453a('0xcc')),_0x453a('0xcd'));var _0x111d87=ejs[_0x453a('0xce')](_0x3db39b,{'body':_['toPairs'](_0xd7b74e['body'][_0x453a('0x4e')]),'bodyTitle':_0x1d7dc0['offlineMessageBody']});return db[_0x453a('0xcf')][_0x453a('0x4d')]({'body':_0x111d87,'plainBody':htmlToText[_0x453a('0xd0')](_0x111d87),'ContactId':_0x1f3f16['id'],'ChatWebsiteId':_0x1d7dc0['id']});}})[_0x453a('0x15')](function(_0x39ca46){_0x2960e6=_0x39ca46;if(_0x503757[_0x453a('0x3e')]){var _0x45aaf8=_0x503757['map'](function(_0x5d000a){return{'name':_0x5d000a[_0x453a('0xd1')],'basename':_0x5d000a[_0x453a('0x68')],'type':_0x5d000a[_0x453a('0xd2')],'ChatOfflineMessageId':_0x39ca46['id']};});_0x157db4=_0x45aaf8[_0x453a('0x44')](_0x1a0ae0=>{var _0xc79bf1={'filename':_0x1a0ae0['name'],'path':path[_0x453a('0x75')](config[_0x453a('0x77')],_0x453a('0xd3'),_0x453a('0xc4'),'attachments','offline-chat',_0x1a0ae0[_0x453a('0xd4')])};return _0xc79bf1;});if(!_0x1d7dc0[_0x453a('0xd5')]){return db[_0x453a('0xd6')]['transaction'](function(_0x17c124){return db[_0x453a('0xd7')][_0x453a('0xd8')](_0x45aaf8,{'transaction':_0x17c124});});}}})[_0x453a('0x15')](function(){if(_0x2960e6){_0x2152fe=_0x2960e6;return db[_0x453a('0xc9')]['findOne']({'where':{'service':!![]},'include':[{'model':db[_0x453a('0xd9')],'as':_0x453a('0xda'),'raw':!![],'include':[{'model':db['CloudProvider'],'as':_0x453a('0xdb'),'raw':!![]}]}]});}})[_0x453a('0x15')](function(_0x3e435a){if(_0x3e435a&&_0x3e435a['Smtp']&&_0x1d7dc0[_0x453a('0xdc')]&&_0x1d7dc0[_0x453a('0xdd')]){var _0xa7e127=_0x3e435a[_0x453a('0xde')]();return respondWithRpcPromise(_0x453a('0xdf'),_0x453a('0xe0'),{'account':_0xa7e127,'message':{'from':util[_0x453a('0xa7')](_0x453a('0xe1'),_0x3e435a[_0x453a('0x2d')],_0x3e435a[_0x453a('0xe2')]||_0x3e435a['Smtp'][_0x453a('0x4f')]),'to':_0x1d7dc0[_0x453a('0xdd')],'subject':_0x1d7dc0[_0x453a('0xe3')],'html':_0x2152fe['body'],'attachments':_0x157db4}},client9003)[_0x453a('0x15')](function(){return _0x2152fe;})[_0x453a('0x1f')](function(_0x5ca414){logger[_0x453a('0x1b')](_0x5ca414);});}})[_0x453a('0x15')](function(){if(_0x1d7dc0&&_0x1d7dc0[_0x453a('0xd5')]&&_0x1d7dc0['MailAccountId']){var _0x199d28=[];if(_0x503757[_0x453a('0x3e')]){_0x199d28=_0x503757[_0x453a('0x44')](function(_0x121c1e){return{'name':_0x121c1e[_0x453a('0xd1')],'basename':_0x121c1e[_0x453a('0x68')],'type':_0x121c1e[_0x453a('0xd2')],'ChatOfflineMessageId':_0x2960e6['id']};});}var _0x470065;if(!_[_0x453a('0x72')](_0x1d7dc0[_0x453a('0xe4')])){var _0x3507db=_[_0x453a('0x44')](_0xd7b74e[_0x453a('0x4e')],function(_0x1c176d){return _0x1c176d;});var _0x116c37=_[_0x453a('0xe5')](_0x3507db)[0x0];var _0x32458d=_[_0x453a('0xe6')](_0x116c37,function(_0xefb33e){return _0xefb33e;});_0x470065=_0x32458d[0x1][_0x1d7dc0[_0x453a('0xe4')]];}var _0xb9b44c={'from':_0x27e805[_0x453a('0xe2')],'firstName':_0x27e805[_0x453a('0xa1')],'lastName':_0x27e805['lastName'],'mapKey':'email','message':{'from':_0x27e805[_0x453a('0xe2')],'to':_0x1d7dc0['MailAccount'][_0x453a('0xe2')],'cc':'','subject':_[_0x453a('0x72')](_0x470065)?_0x1d7dc0['offlineMessageSubject']:_0x470065,'messageId':'','sentAt':new Date(),'attach':_0x199d28[_0x453a('0x3e')],'attachments':_0x199d28,'originChannel':_0x453a('0xe7'),'ChatWebsiteId':_0x1d7dc0['id'],'ChatOfflineMessageId':_0x2152fe['id'],'originTo':_0x1d7dc0[_0x453a('0xc9')]['email']},'body':_0x2152fe[_0x453a('0x4e')]};var _0xf26067={'account':{'id':_0x1d7dc0[_0x453a('0xe8')]},'body':_0xb9b44c,'log':_0x453a('0xe9')};return respondWithRpcPromise(_0x453a('0xe9'),_0x453a('0xea'),_0xf26067,client9001)[_0x453a('0x15')](function(){return _0x2152fe;})['catch'](function(_0x412566){logger[_0x453a('0x1b')](_0x412566);});}return;})[_0x453a('0x15')](function(){if(_0x2152fe){return _0x2152fe;}})[_0x453a('0x15')](respondWithResult(_0x60c0a8,null))[_0x453a('0x1f')](function(_0x40a2b3){logger[_0x453a('0x1b')](_0x453a('0x1f'),_0x40a2b3);for(var _0xb30d92 of _0x503757){var _0x4b8b18=path['join'](config['root'],_0x453a('0xd3'),_0x453a('0xc4'),'attachments',_0x453a('0xeb'),_0xb30d92[_0x453a('0x68')]);fs_extra[_0x453a('0xec')](_0x4b8b18)[_0x453a('0x1f')](function(_0x135e5c){logger[_0x453a('0x1b')](_0x453a('0xed'),_0x4b8b18,_0x135e5c);});}});};exports[_0x453a('0xee')]=function(_0x381112,_0x45138f){return db[_0x453a('0xac')]['find']({'where':{'id':_0x381112[_0x453a('0x4a')]['id']}})[_0x453a('0x15')](handleEntityNotFound(_0x45138f,null))[_0x453a('0x15')](function(_0x2ccec2){if(_0x2ccec2){return _0x2ccec2[_0x453a('0xee')](_0x381112[_0x453a('0x4e')][_0x453a('0x62')],_[_0x453a('0xef')](_0x381112['body'],[_0x453a('0x62'),'id'])||{});}})[_0x453a('0x15')](respondWithResult(_0x45138f,null))['catch'](handleError(_0x45138f,null));};exports[_0x453a('0xf0')]=function(_0x291e4b,_0x38d114){var _0x440789={'raw':![],'where':{}};var _0x253c07={};var _0x5ed466={'count':0x0,'rows':[]};return db[_0x453a('0x32')][_0x453a('0x5a')]({'where':{'id':_0x291e4b[_0x453a('0x4a')]['id']}})[_0x453a('0x15')](handleEntityNotFound(_0x38d114,null))[_0x453a('0x15')](function(_0x41c4f7){if(_0x41c4f7){_0x253c07[_0x453a('0x37')]=_[_0x453a('0x38')](db[_0x453a('0xac')][_0x453a('0x33')]);_0x253c07[_0x453a('0x39')]=_[_0x453a('0x38')](_0x291e4b[_0x453a('0x39')]);_0x253c07['filters']=_[_0x453a('0x3b')](_0x253c07[_0x453a('0x37')],_0x253c07[_0x453a('0x39')]);_0x440789['attributes']=_[_0x453a('0x3b')](_0x253c07[_0x453a('0x37')],qs['fields'](_0x291e4b['query'][_0x453a('0x3d')]));_0x440789[_0x453a('0x3c')]=_0x440789[_0x453a('0x3c')][_0x453a('0x3e')]?_0x440789[_0x453a('0x3c')]:_0x253c07[_0x453a('0x37')];if(!_0x291e4b[_0x453a('0x39')][_0x453a('0x3f')]('nolimit')){_0x440789[_0x453a('0x24')]=qs['limit'](_0x291e4b['query']['limit']);_0x440789[_0x453a('0x22')]=qs['offset'](_0x291e4b[_0x453a('0x39')][_0x453a('0x22')]);}_0x440789[_0x453a('0x40')]=qs[_0x453a('0x41')](_0x291e4b['query'][_0x453a('0x41')]);_0x440789[_0x453a('0x42')]=qs['filters'](_['pick'](_0x291e4b[_0x453a('0x39')],_0x253c07[_0x453a('0x3a')]));_0x440789[_0x453a('0x42')][_0x453a('0x5e')]=_0x41c4f7['id'];if(_0x291e4b[_0x453a('0x39')][_0x453a('0x5f')]){_0x440789[_0x453a('0x42')]=_[_0x453a('0x43')](_0x440789[_0x453a('0x42')],{'$or':_[_0x453a('0x44')](_0x440789[_0x453a('0x3c')],function(_0x2b2137){var _0x5e4afc={};_0x5e4afc[_0x2b2137]={'$like':'%'+_0x291e4b['query'][_0x453a('0x5f')]+'%'};return _0x5e4afc;})});}_0x440789=_[_0x453a('0x43')]({},_0x440789,_0x291e4b[_0x453a('0x4b')]);return db[_0x453a('0xac')]['count']({'where':_0x440789[_0x453a('0x42')]})['then'](function(_0x4ebf88){_0x5ed466[_0x453a('0x25')]=_0x4ebf88;if(_0x291e4b[_0x453a('0x39')][_0x453a('0x46')]){_0x440789[_0x453a('0x47')]=[{'model':db[_0x453a('0x84')],'as':'Contact','required':![]},{'model':db[_0x453a('0xbb')],'as':_0x453a('0xf1'),'attributes':[_0x453a('0x2d'),_0x453a('0xf2'),_0x453a('0xf3')],'required':![]},{'model':db[_0x453a('0xf4')],'as':_0x453a('0xf5'),'attributes':['id','name',_0x453a('0xf6')],'where':_0x291e4b[_0x453a('0x39')]['tag']?{'id':_0x291e4b[_0x453a('0x39')]['tag']}:undefined,'required':_0x291e4b[_0x453a('0x39')][_0x453a('0xf7')]?!![]:![]}];}return db[_0x453a('0xac')]['findAll'](_0x440789);})[_0x453a('0x15')](function(_0x3656ef){_0x5ed466[_0x453a('0x60')]=_0x3656ef;return _0x5ed466;});}})[_0x453a('0x15')](respondWithFilteredResult(_0x38d114,_0x440789))[_0x453a('0x1f')](handleError(_0x38d114,null));};function iftimePromise(_0x54dd36,_0x1ff128){return respondWithRpcPromise(_0x453a('0xf8'),_0x453a('0xf9'),{'command':_0x1ff128[_0x453a('0xfa')]?util[_0x453a('0xa7')]('iftime\x20%s,%s',_0x54dd36['interval'],_0x1ff128[_0x453a('0xfa')]):util['format'](_0x453a('0xfb'),_0x54dd36[_0x453a('0xfc')])},client9002)[_0x453a('0x15')](function(_0x5bf365){var _0x235aa4=_0x5bf365&&_0x5bf365[_0x453a('0xfd')]('true')>=0x0?!![]:![];logger[_0x453a('0x1d')](_0x453a('0xfe'),_0x1ff128['id'],_0x54dd36['id'],_0x54dd36[_0x453a('0xfc')],_0x235aa4?'ONLINE':_0x453a('0xff'),_0x1ff128['timezone']?_0x1ff128[_0x453a('0xfa')]:'No\x20timezone');return _0x235aa4;})[_0x453a('0x1f')](function(_0x1e336f){logger[_0x453a('0x1b')]('[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)',_0x1ff128['id'],_0x54dd36['id'],_0x54dd36[_0x453a('0xfc')],util[_0x453a('0x100')](_0x1e336f,{'showHidden':![],'depth':null}),_0x1ff128[_0x453a('0xfa')]?_0x1ff128[_0x453a('0xfa')]:_0x453a('0x101'));return![];});}exports['getSnippet']=function(_0x28301d,_0x3b6b19){var _0x44352c=0x0;var _0x56f3e8=0x0;var _0x51c95a=![];var _0x21ace3;var _0x2ac643;return db[_0x453a('0x32')][_0x453a('0x4c')]({'where':{'id':_0x28301d[_0x453a('0x4a')]['id']},'include':[{'model':db[_0x453a('0x102')],'as':'Interval','include':[{'model':db[_0x453a('0x102')],'as':_0x453a('0x103'),'attributes':['id',_0x453a('0xfc')],'raw':!![]}]}]})[_0x453a('0x15')](handleEntityNotFound(_0x3b6b19,null))[_0x453a('0x15')](function(_0x526ca0){if(_0x526ca0){_0x21ace3=_0x526ca0;return _0x526ca0['getProactiveActions']({'raw':!![]});}})[_0x453a('0x15')](function(_0x34b1a7){if(_0x21ace3){if(_0x34b1a7){_0x2ac643=_0x34b1a7;}}return require(_0x453a('0x6f'))[_0x453a('0x70')]();})[_0x453a('0x15')](function(_0x307bf2){if(_0x307bf2){_0x56f3e8=_0x307bf2[_0x453a('0x104')];_0x51c95a=_0x307bf2[_0x453a('0x71')];}})['then'](function(){return db[_0x453a('0xac')]['count']({'where':{'closed':![]}});})[_0x453a('0x15')](function(_0x3484b4){_0x44352c=_0x3484b4;if(_0x56f3e8&&_0x3484b4>_0x56f3e8){return db[_0x453a('0x105')][_0x453a('0x5a')]({'where':{'id':0x1}})[_0x453a('0x15')](function(_0x41e25c){if(_0x41e25c){_0x41e25c[_0x453a('0x106')](_0x453a('0x107'));}});}})[_0x453a('0x15')](function(){if(_0x21ace3['Interval']&&_0x21ace3['Interval'][_0x453a('0x103')]){var _0x5d58d3=[];for(var _0x2231c2=0x0;_0x2231c2<_0x21ace3[_0x453a('0x102')][_0x453a('0x103')]['length'];_0x2231c2++){var _0x216e19=_0x21ace3[_0x453a('0x102')][_0x453a('0x103')][_0x2231c2]['get']({'plain':!![]});_0x5d58d3['push'](iftimePromise(_0x216e19,_0x21ace3));}return BPromise[_0x453a('0x108')](_0x5d58d3)[_0x453a('0x15')](function(_0x573944){return _[_0x453a('0x109')](_0x573944);});}else{return!![];}})[_0x453a('0x15')](function(_0x58d099){var _0xfef048=fs[_0x453a('0xcb')](path['join'](config[_0x453a('0x77')],_0x453a('0x10a')),_0x453a('0xcd'));var _0x2417ee=new url[(_0x453a('0x10b'))](_0x21ace3[_0x453a('0x10c')])[_0x453a('0x10d')];var _0x4cc71d=_0x453a('0x10e');var _0x4de4ee=![];var _0x1c4aae={'chatVersion':_0x4cc71d,'chatWebsiteAddressOrigin':_0x2417ee,'remote':_0x21ace3[_0x453a('0x10f')],'query':querystring[_0x453a('0x19')](_[_0x453a('0x43')](_0x21ace3[_0x453a('0x50')]({'plain':!![]}),{'customerIp':_0x28301d[_0x453a('0x81')][_0x453a('0x9f')]||_0x28301d[_0x453a('0x81')][_0x453a('0x110')]||_0x28301d[_0x453a('0x111')][_0x453a('0x112')]||_0x28301d['ip'],'referer':_0x28301d[_0x453a('0x81')]['referer'],'openedInteractions':_0x44352c,'maxInteractions':_0x56f3e8,'virtual':_0x51c95a[_0x453a('0x104')],'online':_0x58d099,'custom':_0x51c95a}))[_0x453a('0x113')](/'/g,'\x5c\x27')};_0x3b6b19[_0x453a('0x2e')](ejs['render'](Mustache[_0x453a('0xce')](_0xfef048,_0x1c4aae),{'proactiveActions':_0x2ac643,'alignment':_0x21ace3[_0x453a('0x114')],'verticalAlignment':_0x21ace3[_0x453a('0x115')],'div_color':_0x21ace3[_0x453a('0xf6')],'labelText':_0x21ace3[_0x453a('0x116')],'text_color':_0x21ace3[_0x453a('0x117')],'text_button_color':_0x21ace3[_0x453a('0x118')],'button_color':_0x21ace3[_0x453a('0x119')],'background_color':_0x21ace3[_0x453a('0x11a')],'hideWhenOffline':_0x21ace3['hideWhenOffline'],'intervalId':_0x21ace3['IntervalId'],'isDevelopment':_0x4de4ee,'chatVersion':_0x4cc71d}));})[_0x453a('0x1f')](handleError(_0x3b6b19,null));};exports[_0x453a('0x11b')]=function(_0x47d2ea,_0x3fd330){var _0x30ad99=_0x47d2ea['params']['id'];var _0x453e6c=_0x47d2ea[_0x453a('0x4e')];var _0xc8c833=0xc8;var _0x56c4b3=null;return db[_0x453a('0xd6')]['transaction']({'isolationLevel':db['sequelize'][_0x453a('0x11c')][_0x453a('0x11d')][_0x453a('0x11e')]},function(_0x242e12){return db[_0x453a('0x32')]['findOne']({'where':{'id':_0x30ad99},'transaction':_0x242e12})['then'](function(_0x2d61a5){if(_0x2d61a5){return db[_0x453a('0x95')][_0x453a('0x29')]({'where':{'ChatWebsiteId':_0x30ad99},'transaction':_0x242e12})[_0x453a('0x15')](function(){var _0x713f12=_[_0x453a('0x44')](_0x453e6c,function(_0x2e6dd5){_0x2e6dd5[_0x453a('0x5e')]=_0x30ad99;return _0x2e6dd5;});return db[_0x453a('0x95')][_0x453a('0xd8')](_0x713f12,{'transaction':_0x242e12});});}else{_0xc8c833=0x194;_0x56c4b3=[];}});})[_0x453a('0x15')](function(){if(_0xc8c833!==0x194){return db[_0x453a('0x95')][_0x453a('0x11f')]({'where':{'ChatWebsiteId':_0x30ad99},'order':_0x453a('0x99')})[_0x453a('0x15')](function(_0x4ac145){_0x56c4b3=_0x4ac145;});}})[_0x453a('0x1f')](function(_0x433dd8){_0xc8c833=0x1f4;logger[_0x453a('0x1b')](_0x433dd8[_0x453a('0x120')]);if(_0x433dd8[_0x453a('0x2d')]){delete _0x433dd8[_0x453a('0x2d')];}_0x56c4b3=_0x433dd8;})[_0x453a('0x121')](function(){if(_0x56c4b3===null){_0x3fd330[_0x453a('0x20')](_0xc8c833);}else{if(_0xc8c833===0x1f4){_0x3fd330[_0x453a('0x21')](_0xc8c833)[_0x453a('0x2e')](_0x56c4b3);}else{_0x3fd330[_0x453a('0x21')](_0xc8c833)['json'](_0x56c4b3);}}});};exports['getApplications']=function(_0x2cf1cb,_0x15a9fb){var _0x1f0cc0={};var _0x82ab8b={};var _0x17f1ff;var _0x577d55;return db[_0x453a('0x32')][_0x453a('0x5a')]({'where':{'id':_0x2cf1cb[_0x453a('0x4a')]['id']}})[_0x453a('0x15')](handleEntityNotFound(_0x15a9fb,null))['then'](function(_0x26e9dc){if(_0x26e9dc){_0x17f1ff=_0x26e9dc;_0x82ab8b['model']=_['keys'](db[_0x453a('0x95')]['rawAttributes']);_0x82ab8b[_0x453a('0x39')]=_[_0x453a('0x38')](_0x2cf1cb[_0x453a('0x39')]);_0x82ab8b[_0x453a('0x3a')]=_[_0x453a('0x3b')](_0x82ab8b[_0x453a('0x37')],_0x82ab8b['query']);_0x1f0cc0['attributes']=_[_0x453a('0x3b')](_0x82ab8b[_0x453a('0x37')],qs[_0x453a('0x3d')](_0x2cf1cb[_0x453a('0x39')][_0x453a('0x3d')]));_0x1f0cc0[_0x453a('0x3c')]=_0x1f0cc0[_0x453a('0x3c')][_0x453a('0x3e')]?_0x1f0cc0['attributes']:_0x82ab8b[_0x453a('0x37')];_0x1f0cc0[_0x453a('0x40')]=qs[_0x453a('0x41')](_0x2cf1cb[_0x453a('0x39')]['sort']);_0x1f0cc0[_0x453a('0x42')]=qs[_0x453a('0x3a')](_[_0x453a('0x5d')](_0x2cf1cb['query'],_0x82ab8b[_0x453a('0x3a')]));if(_0x2cf1cb[_0x453a('0x39')]['filter']){_0x1f0cc0['where']=_[_0x453a('0x43')](_0x1f0cc0[_0x453a('0x42')],{'$or':_['map'](_0x1f0cc0[_0x453a('0x3c')],function(_0x485128){var _0x1d3541={};_0x1d3541[_0x485128]={'$like':'%'+_0x2cf1cb[_0x453a('0x39')][_0x453a('0x5f')]+'%'};return _0x1d3541;})});}_0x1f0cc0=_[_0x453a('0x43')]({},_0x1f0cc0,_0x2cf1cb[_0x453a('0x4b')]);return _0x17f1ff[_0x453a('0x122')](_0x1f0cc0);}})['then'](function(_0x2b6dc5){if(_0x2b6dc5){_0x577d55=_0x2b6dc5['length'];if(!_0x2cf1cb['query'][_0x453a('0x3f')](_0x453a('0x5c'))){_0x1f0cc0['limit']=qs['limit'](_0x2cf1cb[_0x453a('0x39')][_0x453a('0x24')]);_0x1f0cc0[_0x453a('0x22')]=qs['offset'](_0x2cf1cb['query'][_0x453a('0x22')]);}return _0x17f1ff[_0x453a('0x122')](_0x1f0cc0);}})[_0x453a('0x15')](function(_0x4055a4){if(_0x4055a4){return _0x4055a4?{'count':_0x577d55,'rows':_0x4055a4}:null;}})['then'](respondWithResult(_0x15a9fb,null))[_0x453a('0x1f')](handleError(_0x15a9fb,null));};exports[_0x453a('0x123')]=function(_0x3fae40,_0x330412){return db['chatProactiveAction'][_0x453a('0x4c')]({'where':{'id':_0x3fae40['params']['id']}})[_0x453a('0x15')](handleEntityNotFound(_0x330412,null))[_0x453a('0x15')](function(_0x7009a4){if(_0x7009a4){return _0x7009a4[_0x453a('0x123')](_0x3fae40[_0x453a('0x4e')][_0x453a('0x62')],_[_0x453a('0xef')](_0x3fae40['body'],[_0x453a('0x62'),'id'])||{});}})[_0x453a('0x15')](respondWithResult(_0x330412,null))[_0x453a('0x1f')](handleError(_0x330412,null));};exports[_0x453a('0x124')]=function(_0x1a1a38,_0x55caca){var _0x4cd115={};var _0x20f951={};var _0xbc6bea;var _0x13481f;return db[_0x453a('0x32')][_0x453a('0x5a')]({'where':{'id':_0x1a1a38[_0x453a('0x4a')]['id']}})[_0x453a('0x15')](handleEntityNotFound(_0x55caca,null))[_0x453a('0x15')](function(_0x3f90b3){if(_0x3f90b3){_0xbc6bea=_0x3f90b3;_0x20f951[_0x453a('0x37')]=_[_0x453a('0x38')](db[_0x453a('0x125')][_0x453a('0x33')]);_0x20f951[_0x453a('0x39')]=_[_0x453a('0x38')](_0x1a1a38[_0x453a('0x39')]);_0x20f951[_0x453a('0x3a')]=_[_0x453a('0x3b')](_0x20f951['model'],_0x20f951[_0x453a('0x39')]);_0x4cd115['attributes']=_[_0x453a('0x3b')](_0x20f951[_0x453a('0x37')],qs[_0x453a('0x3d')](_0x1a1a38[_0x453a('0x39')][_0x453a('0x3d')]));_0x4cd115[_0x453a('0x3c')]=_0x4cd115[_0x453a('0x3c')][_0x453a('0x3e')]?_0x4cd115[_0x453a('0x3c')]:_0x20f951[_0x453a('0x37')];_0x4cd115['order']=qs[_0x453a('0x41')](_0x1a1a38[_0x453a('0x39')]['sort']);_0x4cd115[_0x453a('0x42')]=qs[_0x453a('0x3a')](_[_0x453a('0x5d')](_0x1a1a38[_0x453a('0x39')],_0x20f951[_0x453a('0x3a')]));if(_0x1a1a38[_0x453a('0x39')][_0x453a('0x5f')]){_0x4cd115[_0x453a('0x42')]=_[_0x453a('0x43')](_0x4cd115[_0x453a('0x42')],{'$or':_[_0x453a('0x44')](_0x4cd115[_0x453a('0x3c')],function(_0xb9583e){var _0x51ec83={};_0x51ec83[_0xb9583e]={'$like':'%'+_0x1a1a38['query']['filter']+'%'};return _0x51ec83;})});}_0x4cd115=_[_0x453a('0x43')]({},_0x4cd115,_0x1a1a38[_0x453a('0x4b')]);return _0xbc6bea['getProactiveActions'](_0x4cd115);}})[_0x453a('0x15')](function(_0x4e9528){if(_0x4e9528){_0x13481f=_0x4e9528[_0x453a('0x3e')];if(!_0x1a1a38[_0x453a('0x39')][_0x453a('0x3f')](_0x453a('0x5c'))){_0x4cd115[_0x453a('0x24')]=qs[_0x453a('0x24')](_0x1a1a38[_0x453a('0x39')]['limit']);_0x4cd115['offset']=qs['offset'](_0x1a1a38[_0x453a('0x39')][_0x453a('0x22')]);}return _0xbc6bea[_0x453a('0x124')](_0x4cd115);}})[_0x453a('0x15')](function(_0xa154b0){if(_0xa154b0){return _0xa154b0?{'count':_0x13481f,'rows':_0xa154b0}:null;}})[_0x453a('0x15')](respondWithResult(_0x55caca,null))[_0x453a('0x1f')](handleError(_0x55caca,null));};exports['getFields']=function(_0x19bbb1,_0x39ae2e){var _0x6eee22=_0x19bbb1[_0x453a('0x39')]['online']===_0x453a('0x126')?_0x453a('0x127'):_0x453a('0x128');return db[_0x453a('0x32')][_0x453a('0x4c')]({'attributes':['id',_0x6eee22],'where':{'id':_0x19bbb1[_0x453a('0x4a')]['id']}})['then'](handleEntityNotFound(_0x39ae2e,null))[_0x453a('0x15')](function(_0x3546e2){if(_0x3546e2){var _0x5e0ffc=_0x3546e2[_0x6eee22];var _0x1a5024=_0x5e0ffc&&_0x5e0ffc[_0x453a('0x129')]?_0x5e0ffc[_0x453a('0x129')]:[];_0x39ae2e[_0x453a('0x2e')]({'fromKey':_[_0x453a('0x72')](_0x5e0ffc['fromKey'])?undefined:_0x5e0ffc[_0x453a('0x12a')],'count':_0x1a5024[_0x453a('0x3e')],'rows':_0x1a5024});}})['catch'](handleError(_0x39ae2e,null));};exports[_0x453a('0x12b')]=function(_0x1117fc,_0x29c4f3){var _0x38a199={'raw':![],'where':{}};var _0x37629c={};var _0x1739c1={'count':0x0,'rows':[]};return db['ChatWebsite']['findOne']({'where':{'id':_0x1117fc[_0x453a('0x4a')]['id']}})[_0x453a('0x15')](handleEntityNotFound(_0x29c4f3,null))['then'](function(_0x466bb7){if(_0x466bb7){_0x37629c['model']=_[_0x453a('0x38')](db[_0x453a('0xcf')][_0x453a('0x33')]);_0x37629c[_0x453a('0x39')]=_[_0x453a('0x38')](_0x1117fc['query']);_0x37629c[_0x453a('0x3a')]=_['intersection'](_0x37629c[_0x453a('0x37')],_0x37629c[_0x453a('0x39')]);_0x38a199[_0x453a('0x3c')]=_[_0x453a('0x3b')](_0x37629c[_0x453a('0x37')],qs[_0x453a('0x3d')](_0x1117fc[_0x453a('0x39')][_0x453a('0x3d')]));_0x38a199[_0x453a('0x3c')]=_0x38a199[_0x453a('0x3c')][_0x453a('0x3e')]?_0x38a199['attributes']:_0x37629c[_0x453a('0x37')];if(!_0x1117fc[_0x453a('0x39')]['hasOwnProperty'](_0x453a('0x5c'))){_0x38a199[_0x453a('0x24')]=qs['limit'](_0x1117fc[_0x453a('0x39')][_0x453a('0x24')]);_0x38a199['offset']=qs[_0x453a('0x22')](_0x1117fc[_0x453a('0x39')][_0x453a('0x22')]);}_0x38a199['order']=qs[_0x453a('0x41')](_0x1117fc[_0x453a('0x39')][_0x453a('0x41')]);_0x38a199[_0x453a('0x42')]=qs[_0x453a('0x3a')](_[_0x453a('0x5d')](_0x1117fc[_0x453a('0x39')],_0x37629c['filters']));_0x38a199[_0x453a('0x42')][_0x453a('0x5e')]=_0x466bb7['id'];if(_0x1117fc[_0x453a('0x39')][_0x453a('0x5f')]){_0x38a199[_0x453a('0x42')]=_[_0x453a('0x43')](_0x38a199['where'],{'$or':_[_0x453a('0x44')](_0x38a199[_0x453a('0x3c')],function(_0x1f4a6e){var _0x216645={};_0x216645[_0x1f4a6e]={'$like':'%'+_0x1117fc['query']['filter']+'%'};return _0x216645;})});}_0x38a199=_['merge']({},_0x38a199,_0x1117fc[_0x453a('0x4b')]);return db[_0x453a('0xcf')]['count']({'where':_0x38a199['where']})[_0x453a('0x15')](function(_0x46b79e){_0x1739c1[_0x453a('0x25')]=_0x46b79e;if(_0x1117fc[_0x453a('0x39')][_0x453a('0x46')]){_0x38a199[_0x453a('0x47')]=[{'all':!![]}];}else{_0x38a199[_0x453a('0x47')]=[{'model':db['CmContact'],'as':_0x453a('0x12c'),'required':![]},{'model':db['Attachment'],'as':'Attachments','required':![]}];}return db['ChatOfflineMessage'][_0x453a('0x48')](_0x38a199);})[_0x453a('0x15')](function(_0xdc43f5){_0x1739c1[_0x453a('0x60')]=_0xdc43f5;return _0x1739c1;});}})[_0x453a('0x15')](respondWithFilteredResult(_0x29c4f3,_0x38a199))[_0x453a('0x1f')](handleError(_0x29c4f3,null));};exports[_0x453a('0x12d')]=function(_0x5c37e7,_0x5c2898){return db[_0x453a('0x32')][_0x453a('0x4c')]({'where':{'id':_0x5c37e7['params']['id']}})[_0x453a('0x15')](handleEntityNotFound(_0x5c2898,null))[_0x453a('0x15')](function(_0x16568e){if(_0x16568e){return _0x16568e[_0x453a('0x12d')](_0x5c37e7[_0x453a('0x4e')][_0x453a('0x62')],_[_0x453a('0xef')](_0x5c37e7['body'],['ids','id'])||{})[_0x453a('0xb0')](function(_0x2a7978){for(var _0x1198d5=0x0;_0x1198d5<_0x5c37e7[_0x453a('0x4e')][_0x453a('0x62')][_0x453a('0x3e')];_0x1198d5+=0x1){socket[_0x453a('0x12e')](_0x453a('0x12f'),{'UserId':Number(_0x5c37e7[_0x453a('0x4e')]['ids'][_0x1198d5]),'ChatWebsiteId':Number(_0x5c37e7['params']['id'])});}return _0x2a7978;});}})['then'](respondWithResult(_0x5c2898,null))[_0x453a('0x1f')](handleError(_0x5c2898,null));};exports[_0x453a('0x130')]=function(_0xa75ca5,_0x51949a){return db[_0x453a('0x32')]['find']({'where':{'id':_0xa75ca5[_0x453a('0x4a')]['id']}})['then'](handleEntityNotFound(_0x51949a,null))[_0x453a('0x15')](function(_0x4ce464){if(_0x4ce464){return _0x4ce464[_0x453a('0x130')](_0xa75ca5['query'][_0x453a('0x62')])[_0x453a('0x15')](function(){if(_['isArray'](_0xa75ca5['query'][_0x453a('0x62')])){for(var _0x1a275d=0x0;_0x1a275d<_0xa75ca5['query'][_0x453a('0x62')][_0x453a('0x3e')];_0x1a275d+=0x1){socket['emit'](_0x453a('0x131'),{'UserId':Number(_0xa75ca5['query']['ids'][_0x1a275d]),'ChatWebsiteId':Number(_0xa75ca5[_0x453a('0x4a')]['id'])});}}else{socket[_0x453a('0x12e')](_0x453a('0x131'),{'UserId':Number(_0xa75ca5[_0x453a('0x39')]['ids']),'ChatWebsiteId':Number(_0xa75ca5[_0x453a('0x4a')]['id'])});}});}})[_0x453a('0x15')](respondWithStatusCode(_0x51949a,null))[_0x453a('0x1f')](handleError(_0x51949a,null));};exports[_0x453a('0x132')]=function(_0x96dccb,_0xd5af15){var _0x151997={};var _0x1f58bf={};var _0xbe29d2;var _0x1606cf;return db[_0x453a('0x32')][_0x453a('0x5a')]({'where':{'id':_0x96dccb['params']['id']}})[_0x453a('0x15')](handleEntityNotFound(_0xd5af15,null))[_0x453a('0x15')](function(_0x37fb68){if(_0x37fb68){_0xbe29d2=_0x37fb68;_0x1f58bf['model']=_[_0x453a('0x38')](db[_0x453a('0xbb')][_0x453a('0x33')]);_0x1f58bf[_0x453a('0x39')]=_['keys'](_0x96dccb['query']);_0x1f58bf[_0x453a('0x3a')]=_[_0x453a('0x3b')](_0x1f58bf[_0x453a('0x37')],_0x1f58bf['query']);_0x151997[_0x453a('0x3c')]=_['intersection'](_0x1f58bf['model'],qs[_0x453a('0x3d')](_0x96dccb[_0x453a('0x39')][_0x453a('0x3d')]));_0x151997['attributes']=_0x151997[_0x453a('0x3c')][_0x453a('0x3e')]?_0x151997[_0x453a('0x3c')]:_0x1f58bf[_0x453a('0x37')];_0x151997[_0x453a('0x40')]=qs[_0x453a('0x41')](_0x96dccb[_0x453a('0x39')][_0x453a('0x41')]);_0x151997['where']=qs[_0x453a('0x3a')](_['pick'](_0x96dccb['query'],_0x1f58bf[_0x453a('0x3a')]));if(_0x96dccb[_0x453a('0x39')][_0x453a('0x5f')]){_0x151997[_0x453a('0x42')]=_['merge'](_0x151997[_0x453a('0x42')],{'$or':_[_0x453a('0x44')](_0x151997[_0x453a('0x3c')],function(_0xbf11ef){var _0x5b029f={};_0x5b029f[_0xbf11ef]={'$like':'%'+_0x96dccb[_0x453a('0x39')]['filter']+'%'};return _0x5b029f;})});}_0x151997=_['merge']({},_0x151997,_0x96dccb[_0x453a('0x4b')]);return _0xbe29d2[_0x453a('0x132')](_0x151997);}})[_0x453a('0x15')](function(_0x45e79a){if(_0x45e79a){_0x1606cf=_0x45e79a[_0x453a('0x3e')];if(!_0x96dccb[_0x453a('0x39')][_0x453a('0x3f')](_0x453a('0x5c'))){_0x151997[_0x453a('0x24')]=qs[_0x453a('0x24')](_0x96dccb[_0x453a('0x39')]['limit']);_0x151997['offset']=qs[_0x453a('0x22')](_0x96dccb[_0x453a('0x39')][_0x453a('0x22')]);}return _0xbe29d2[_0x453a('0x132')](_0x151997);}})[_0x453a('0x15')](function(_0x537878){if(_0x537878){return _0x537878?{'count':_0x1606cf,'rows':_0x537878}:null;}})['then'](respondWithResult(_0xd5af15,null))[_0x453a('0x1f')](handleError(_0xd5af15,null));};
\ No newline at end of file
+var _0xfeac=['customerAvatar','showCustomerAvatar','getSystemAvatar','server/files/images/avatars/system_avatar.png','download','user-agent-parser','setUA','headers','getResult','chat','CmContact','Sequelize','ValidationError','no\x20available\x20attributes','difference','ListId','from','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','List','Contacts','DESC','ChatApplication','account','Applications','list','applications','orderBy','priority','asc','defaults','contact','customerIp','cf-connecting-ip','x-forwarded-for','first','split','firstName','x-real-port','referer','browser','format','%s\x20%s','version','unknown','device','vendor','%s\x20%s\x20%s','stringify','threadId','ChatInteraction','externalUrl','ContactId','interaction','spread','lastName','messageId','created','push','*,*,*,*','ChatMessage','AttachmentId','UserId','User','unshift','agent','Start','startRouting','notify','offline','files','createdAt','updatedAt','mapKeyOffline','mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','send','mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','MailAccount','findOrCreate','readFileSync','server/files/templates/chatOfflineMessage.ejs','utf8','render','offlineMessageBody','ChatOfflineMessage','fromString','mimetype','server','attachments','offline-chat','basename','openNewInteraction','sequelize','transaction','Attachment','MailServerOut','Smtp','CloudProvider','forwardOffline','forwardOfflineAddress','sendMail','\x22%s\x22\x20<%s>','offlineMessageSubject','MailAccountId','originalname','subjectOffline','toPairsIn','mapValues','email','Chat','NotifyMailAccount','remove','Could\x20not\x20remove\x20attachment\x20file','addInteraction','omit','Contact','Owner','fullname','internal','Tags','color','tag','rows','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','inspect','Interval','getProactiveActions','License','increment','chatLicenseExceeded','Intervals','all','some','origin','3.1.0','remote','x-real-ip','connection','remoteAddress','virtual','replace','verticalAlignment','labelText','textColor','textButtonColor','color_button','backgroundColor','hideWhenOffline','READ_COMMITTED','bulkCreate','findAndCountAll','finally','getApplications','addProactiveActions','chatProactiveAction','getFields','online','false','offlineForm','onlineForm','items','fromKey','getOfflineMessages','Attachments','addAgents','userChatWebsite:save','removeAgents','isArray','userChatWebsite:remove','emit','getAgents','bluebird','mustache','util','path','ejs','fs-extra','lodash','querystring','ioredis','../../components/parsers/qs','api','../../config/environment','url','../../mysqldb','redis','localhost','socket.io-emitter','./chatWebsite.socket','html-to-text','jayson/promise','client','http','request','then','info','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','ChatWebsite,\x20%s,\x20%s','result','sendStatus','status','end','offset','undefined','count','limit','set','Content-Range','json','update','destroy','get','UserProfileResource','stack','name','index','Pause','mandatoryDispositionPause','map','ChatWebsite','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','order','sort','where','filter','VIRTUAL','merge','options','includeAll','include','findAll','show','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','catch','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','ChatWebsiteId','getDispositions','findOne','Disposition','nolimit','pick','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','hasOwnProperty','removeAnswers','addLogo','sitepic','file','filename','addCustomerAvatar','addSystemAvatar','systemAvatar','getLogo','join','root','server/files/images/logos/default_logo.svg','../../config/license/util','getLicense','custom','existsSync','server/files/images/logos/','getAvatar','isNil','agentAvatar','server/files/images/avatars/','server/files/images/avatars/customer_avatar.png'];(function(_0x208327,_0x26b904){var _0x3127bd=function(_0x424aa6){while(--_0x424aa6){_0x208327['push'](_0x208327['shift']());}};_0x3127bd(++_0x26b904);}(_0xfeac,0xba));var _0xcfea=function(_0x55b433,_0x1de67d){_0x55b433=_0x55b433-0x0;var _0x20e28e=_0xfeac[_0x55b433];return _0x20e28e;};'use strict';var BPromise=require(_0xcfea('0x0'));var Mustache=require(_0xcfea('0x1'));var util=require(_0xcfea('0x2'));var path=require(_0xcfea('0x3'));var ejs=require(_0xcfea('0x4'));var fs=require('fs');var fs_extra=require(_0xcfea('0x5'));var _=require(_0xcfea('0x6'));var querystring=require(_0xcfea('0x7'));var Redis=require(_0xcfea('0x8'));var qs=require(_0xcfea('0x9'));var logger=require('../../config/logger')(_0xcfea('0xa'));var config=require(_0xcfea('0xb'));var url=require(_0xcfea('0xc'));var db=require(_0xcfea('0xd'))['db'];config[_0xcfea('0xe')]=_['defaults'](config[_0xcfea('0xe')],{'host':_0xcfea('0xf'),'port':0x18eb});var socket=require(_0xcfea('0x10'))(new Redis(config[_0xcfea('0xe')]));require(_0xcfea('0x11'))['register'](socket);var htmlToText=require(_0xcfea('0x12'));var jayson=require(_0xcfea('0x13'));var client=jayson[_0xcfea('0x14')][_0xcfea('0x15')]({'port':0x232c});var client9002=jayson[_0xcfea('0x14')][_0xcfea('0x15')]({'port':0x232a});var client9003=jayson[_0xcfea('0x14')][_0xcfea('0x15')]({'port':0x232b});var client9001=jayson[_0xcfea('0x14')]['http']({'port':0x2329});function respondWithRpcPromise(_0x26fd3d,_0x4c7672,_0x14c681,_0x4e3757){return new BPromise(function(_0x2926d6,_0x40e87f){var _0x408e3a=_0x4e3757||client;return _0x408e3a[_0xcfea('0x16')](_0x26fd3d,_0x14c681)[_0xcfea('0x17')](function(_0xa73df5){logger[_0xcfea('0x18')]('ChatWebsite,\x20%s,\x20%s',_0x4c7672,'request\x20sent');logger[_0xcfea('0x19')](_0xcfea('0x1a'),_0x4c7672,_0xcfea('0x1b'),JSON['stringify'](_0xa73df5));if(_0xa73df5[_0xcfea('0x1c')]){if(_0xa73df5[_0xcfea('0x1c')][_0xcfea('0x1d')]===0x1f4){logger[_0xcfea('0x1c')]('ChatWebsite,\x20%s,\x20%s',_0x4c7672,_0xa73df5[_0xcfea('0x1c')][_0xcfea('0x1e')]);return _0x40e87f(_0xa73df5[_0xcfea('0x1c')][_0xcfea('0x1e')]);}logger['error'](_0xcfea('0x1f'),_0x4c7672,_0xa73df5['error']['message']);return _0x2926d6(_0xa73df5['error'][_0xcfea('0x1e')]);}else{logger[_0xcfea('0x18')]('ChatWebsite,\x20%s,\x20%s',_0x4c7672,_0xcfea('0x1b'));_0x2926d6(_0xa73df5[_0xcfea('0x20')][_0xcfea('0x1e')]);}})['catch'](function(_0x1ba1ef){logger[_0xcfea('0x1c')](_0xcfea('0x1f'),_0x4c7672,_0x1ba1ef);_0x40e87f(_0x1ba1ef);});});}function respondWithStatusCode(_0x4cee74,_0x9b738e){_0x9b738e=_0x9b738e||0xcc;return function(_0x3f6637){if(_0x3f6637){return _0x4cee74[_0xcfea('0x21')](_0x9b738e);}return _0x4cee74[_0xcfea('0x22')](_0x9b738e)[_0xcfea('0x23')]();};}function respondWithResult(_0x8038cd,_0x3dcde3){_0x3dcde3=_0x3dcde3||0xc8;return function(_0x3c7434){if(_0x3c7434){return _0x8038cd['status'](_0x3dcde3)['json'](_0x3c7434);}};}function respondWithFilteredResult(_0x5dcd63,_0x67dfa7){return function(_0x16babe){if(_0x16babe){var _0x1e689f=typeof _0x67dfa7[_0xcfea('0x24')]===_0xcfea('0x25')&&typeof _0x67dfa7['limit']===_0xcfea('0x25');var _0x1988b0=_0x16babe['count'];var _0x1c5a69=_0x1e689f?0x0:_0x67dfa7[_0xcfea('0x24')];var _0x3488d6=_0x1e689f?_0x16babe[_0xcfea('0x26')]:_0x67dfa7['offset']+_0x67dfa7[_0xcfea('0x27')];var _0x3279b4;if(_0x3488d6>=_0x1988b0){_0x3488d6=_0x1988b0;_0x3279b4=0xc8;}else{_0x3279b4=0xce;}_0x5dcd63[_0xcfea('0x22')](_0x3279b4);return _0x5dcd63[_0xcfea('0x28')](_0xcfea('0x29'),_0x1c5a69+'-'+_0x3488d6+'/'+_0x1988b0)[_0xcfea('0x2a')](_0x16babe);}return null;};}function saveUpdates(_0x28c14e){return function(_0x3bf88a){if(_0x3bf88a){return _0x3bf88a[_0xcfea('0x2b')](_0x28c14e)[_0xcfea('0x17')](function(_0x539a32){return _0x539a32;});}return null;};}function removeEntity(_0x1b8c6d){return function(_0xba88c0){if(_0xba88c0){return _0xba88c0[_0xcfea('0x2c')]()[_0xcfea('0x17')](function(){var _0x567429=_0xba88c0[_0xcfea('0x2d')]({'plain':!![]});var _0x475e05='ChatWebsites';return db[_0xcfea('0x2e')][_0xcfea('0x2c')]({'where':{'type':_0x475e05,'resourceId':_0x567429['id']}})['then'](function(){return _0xba88c0;});})[_0xcfea('0x17')](function(){_0x1b8c6d[_0xcfea('0x22')](0xcc)['end']();});}};}function handleEntityNotFound(_0x59030c){return function(_0x526d2e){if(!_0x526d2e){_0x59030c[_0xcfea('0x21')](0x194);}return _0x526d2e;};}function handleError(_0x1846a6,_0x8600e3){_0x8600e3=_0x8600e3||0x1f4;return function(_0x530b9d){logger[_0xcfea('0x1c')](_0x530b9d[_0xcfea('0x2f')]);if(_0x530b9d[_0xcfea('0x30')]){delete _0x530b9d[_0xcfea('0x30')];}_0x1846a6[_0xcfea('0x22')](_0x8600e3)['send'](_0x530b9d);};}exports[_0xcfea('0x31')]=function(_0x3a830f,_0x27e748){var _0x582de8={'include':[{'model':db[_0xcfea('0x32')],'as':_0xcfea('0x33')}]},_0x5bd4aa={},_0x55fb3c={'count':0x0,'rows':[]};var _0x546893=_[_0xcfea('0x34')](db[_0xcfea('0x35')][_0xcfea('0x36')],function(_0x20d0f8){return{'name':_0x20d0f8[_0xcfea('0x37')],'type':_0x20d0f8[_0xcfea('0x38')][_0xcfea('0x39')]};});_0x5bd4aa[_0xcfea('0x3a')]=_[_0xcfea('0x34')](_0x546893,_0xcfea('0x30'));_0x5bd4aa[_0xcfea('0x3b')]=_[_0xcfea('0x3c')](_0x3a830f['query']);_0x5bd4aa[_0xcfea('0x3d')]=_[_0xcfea('0x3e')](_0x5bd4aa[_0xcfea('0x3a')],_0x5bd4aa['query']);_0x582de8[_0xcfea('0x3f')]=_[_0xcfea('0x3e')](_0x5bd4aa[_0xcfea('0x3a')],qs[_0xcfea('0x40')](_0x3a830f['query'][_0xcfea('0x40')]));_0x582de8[_0xcfea('0x3f')]=_0x582de8['attributes'][_0xcfea('0x41')]?_0x582de8['attributes']:_0x5bd4aa[_0xcfea('0x3a')];if(!_0x3a830f[_0xcfea('0x3b')]['hasOwnProperty']('nolimit')){_0x582de8[_0xcfea('0x27')]=qs[_0xcfea('0x27')](_0x3a830f['query']['limit']);_0x582de8['offset']=qs[_0xcfea('0x24')](_0x3a830f['query'][_0xcfea('0x24')]);}_0x582de8[_0xcfea('0x42')]=qs[_0xcfea('0x43')](_0x3a830f[_0xcfea('0x3b')][_0xcfea('0x43')]);_0x582de8[_0xcfea('0x44')]=qs[_0xcfea('0x3d')](_['pick'](_0x3a830f[_0xcfea('0x3b')],_0x5bd4aa['filters']),_0x546893);if(_0x3a830f[_0xcfea('0x3b')][_0xcfea('0x45')]){_0x582de8[_0xcfea('0x44')]=_['merge'](_0x582de8['where'],{'$or':_[_0xcfea('0x34')](_0x546893,function(_0x1d98cd){if(_0x1d98cd[_0xcfea('0x38')]!==_0xcfea('0x46')){var _0x2a6666={};_0x2a6666[_0x1d98cd[_0xcfea('0x30')]]={'$like':'%'+_0x3a830f['query'][_0xcfea('0x45')]+'%'};return _0x2a6666;}})});}_0x582de8=_[_0xcfea('0x47')]({},_0x582de8,_0x3a830f[_0xcfea('0x48')]);var _0x25ee9b={'where':_0x582de8[_0xcfea('0x44')]};return db[_0xcfea('0x35')][_0xcfea('0x26')](_0x25ee9b)[_0xcfea('0x17')](function(_0x4f2b6d){_0x55fb3c[_0xcfea('0x26')]=_0x4f2b6d;if(_0x3a830f[_0xcfea('0x3b')][_0xcfea('0x49')]){_0x582de8[_0xcfea('0x4a')]=[{'all':!![]}];}return db[_0xcfea('0x35')][_0xcfea('0x4b')](_0x582de8);})[_0xcfea('0x17')](function(_0x47579b){_0x55fb3c['rows']=_0x47579b;return _0x55fb3c;})[_0xcfea('0x17')](respondWithFilteredResult(_0x27e748,_0x582de8))['catch'](handleError(_0x27e748,null));};exports[_0xcfea('0x4c')]=function(_0x3f91a1,_0x3ffb48){var _0x785a3d={'raw':![],'where':{'id':_0x3f91a1[_0xcfea('0x4d')]['id']},'include':[{'model':db[_0xcfea('0x32')],'as':'mandatoryDispositionPause'}]},_0x4b29e9={};_0x4b29e9[_0xcfea('0x3a')]=_['keys'](db[_0xcfea('0x35')]['rawAttributes']);_0x4b29e9[_0xcfea('0x3b')]=_['keys'](_0x3f91a1[_0xcfea('0x3b')]);_0x4b29e9[_0xcfea('0x3d')]=_['intersection'](_0x4b29e9[_0xcfea('0x3a')],_0x4b29e9[_0xcfea('0x3b')]);_0x785a3d[_0xcfea('0x3f')]=_['intersection'](_0x4b29e9[_0xcfea('0x3a')],qs[_0xcfea('0x40')](_0x3f91a1[_0xcfea('0x3b')]['fields']));_0x785a3d['attributes']=_0x785a3d['attributes']['length']?_0x785a3d[_0xcfea('0x3f')]:_0x4b29e9[_0xcfea('0x3a')];if(_0x3f91a1[_0xcfea('0x3b')][_0xcfea('0x49')]){_0x785a3d[_0xcfea('0x4a')]=[{'all':!![]}];}_0x785a3d=_[_0xcfea('0x47')]({},_0x785a3d,_0x3f91a1[_0xcfea('0x48')]);return db['ChatWebsite'][_0xcfea('0x4e')](_0x785a3d)[_0xcfea('0x17')](handleEntityNotFound(_0x3ffb48,null))[_0xcfea('0x17')](respondWithResult(_0x3ffb48,null))['catch'](handleError(_0x3ffb48,null));};exports[_0xcfea('0x4f')]=function(_0x3e4fea,_0x14ab74){return db[_0xcfea('0x35')]['create'](_0x3e4fea[_0xcfea('0x50')],{})[_0xcfea('0x17')](function(_0x4d9fd0){var _0x3accbb=_0x3e4fea[_0xcfea('0x51')][_0xcfea('0x2d')]({'plain':!![]});if(!_0x3accbb)throw new Error(_0xcfea('0x52'));if(_0x3accbb[_0xcfea('0x53')]==='user'){var _0x4f7752=_0x4d9fd0[_0xcfea('0x2d')]({'plain':!![]});var _0x5ad7d7='ChatWebsites';return db[_0xcfea('0x54')][_0xcfea('0x4e')]({'where':{'name':_0x5ad7d7,'userProfileId':_0x3accbb[_0xcfea('0x55')]},'raw':!![]})['then'](function(_0x35e6f9){if(_0x35e6f9&&_0x35e6f9['autoAssociation']===0x0){return db[_0xcfea('0x2e')][_0xcfea('0x4f')]({'name':_0x4f7752[_0xcfea('0x30')],'resourceId':_0x4f7752['id'],'type':_0x35e6f9[_0xcfea('0x30')],'sectionId':_0x35e6f9['id']},{})[_0xcfea('0x17')](function(){return _0x4d9fd0;});}else{return _0x4d9fd0;}})[_0xcfea('0x56')](function(_0x21c18f){logger[_0xcfea('0x1c')](_0xcfea('0x57'),_0x21c18f);throw _0x21c18f;});}return _0x4d9fd0;})[_0xcfea('0x17')](respondWithResult(_0x14ab74,0xc9))[_0xcfea('0x56')](handleError(_0x14ab74,null));};exports['update']=function(_0x1f6677,_0x574188){if(_0x1f6677[_0xcfea('0x50')]['id']){delete _0x1f6677['body']['id'];}return db['ChatWebsite'][_0xcfea('0x4e')]({'where':{'id':_0x1f6677[_0xcfea('0x4d')]['id']},'include':[{'model':db['Pause'],'as':'mandatoryDispositionPause'}]})['then'](handleEntityNotFound(_0x574188,null))[_0xcfea('0x17')](saveUpdates(_0x1f6677[_0xcfea('0x50')],null))[_0xcfea('0x17')](respondWithResult(_0x574188,null))['catch'](handleError(_0x574188,null));};exports[_0xcfea('0x2c')]=function(_0x70ae5f,_0x21f7ad){return db[_0xcfea('0x35')][_0xcfea('0x4e')]({'where':{'id':_0x70ae5f[_0xcfea('0x4d')]['id']}})[_0xcfea('0x17')](handleEntityNotFound(_0x21f7ad,null))[_0xcfea('0x17')](removeEntity(_0x21f7ad,null))['catch'](handleError(_0x21f7ad,null));};exports[_0xcfea('0x58')]=function(_0x1a44cb,_0x5cb1b8){return db['ChatWebsite'][_0xcfea('0x58')]()[_0xcfea('0x17')](respondWithResult(_0x5cb1b8,null))[_0xcfea('0x56')](handleError(_0x5cb1b8,null));};exports[_0xcfea('0x59')]=function(_0x5c1066,_0x42010c){if(_0x5c1066[_0xcfea('0x50')]['id']){delete _0x5c1066[_0xcfea('0x50')]['id'];}return db[_0xcfea('0x35')][_0xcfea('0x4e')]({'where':{'id':_0x5c1066['params']['id']}})[_0xcfea('0x17')](handleEntityNotFound(_0x42010c,null))[_0xcfea('0x17')](function(_0x479d03){if(_0x479d03){_0x5c1066['body'][_0xcfea('0x5a')]=_0x479d03['id'];return db['Disposition'][_0xcfea('0x4f')](_0x5c1066['body']);}})[_0xcfea('0x17')](respondWithResult(_0x42010c,null))['catch'](handleError(_0x42010c,null));};exports[_0xcfea('0x5b')]=function(_0x3b51f6,_0xd9df9d){var _0x3eab88={'raw':![],'where':{}};var _0x5d5990={};var _0x4a2a88={'count':0x0,'rows':[]};return db[_0xcfea('0x35')][_0xcfea('0x5c')]({'where':{'id':_0x3b51f6[_0xcfea('0x4d')]['id']}})[_0xcfea('0x17')](handleEntityNotFound(_0xd9df9d,null))['then'](function(_0x29de50){if(_0x29de50){_0x5d5990['model']=_[_0xcfea('0x3c')](db[_0xcfea('0x5d')][_0xcfea('0x36')]);_0x5d5990[_0xcfea('0x3b')]=_['keys'](_0x3b51f6[_0xcfea('0x3b')]);_0x5d5990[_0xcfea('0x3d')]=_[_0xcfea('0x3e')](_0x5d5990['model'],_0x5d5990[_0xcfea('0x3b')]);_0x3eab88[_0xcfea('0x3f')]=_['intersection'](_0x5d5990[_0xcfea('0x3a')],qs[_0xcfea('0x40')](_0x3b51f6[_0xcfea('0x3b')]['fields']));_0x3eab88[_0xcfea('0x3f')]=_0x3eab88[_0xcfea('0x3f')][_0xcfea('0x41')]?_0x3eab88[_0xcfea('0x3f')]:_0x5d5990[_0xcfea('0x3a')];if(!_0x3b51f6['query']['hasOwnProperty'](_0xcfea('0x5e'))){_0x3eab88['limit']=qs[_0xcfea('0x27')](_0x3b51f6[_0xcfea('0x3b')][_0xcfea('0x27')]);_0x3eab88[_0xcfea('0x24')]=qs[_0xcfea('0x24')](_0x3b51f6[_0xcfea('0x3b')]['offset']);}_0x3eab88[_0xcfea('0x42')]=qs[_0xcfea('0x43')](_0x3b51f6[_0xcfea('0x3b')][_0xcfea('0x43')]);_0x3eab88[_0xcfea('0x44')]=qs[_0xcfea('0x3d')](_[_0xcfea('0x5f')](_0x3b51f6[_0xcfea('0x3b')],_0x5d5990['filters']));_0x3eab88[_0xcfea('0x44')][_0xcfea('0x5a')]=_0x29de50['id'];if(_0x3b51f6[_0xcfea('0x3b')][_0xcfea('0x45')]){_0x3eab88[_0xcfea('0x44')]=_[_0xcfea('0x47')](_0x3eab88[_0xcfea('0x44')],{'$or':_[_0xcfea('0x34')](_0x3eab88[_0xcfea('0x3f')],function(_0x457208){var _0x5d273f={};_0x5d273f[_0x457208]={'$like':'%'+_0x3b51f6[_0xcfea('0x3b')][_0xcfea('0x45')]+'%'};return _0x5d273f;})});}_0x3eab88=_['merge']({},_0x3eab88,_0x3b51f6[_0xcfea('0x48')]);return db[_0xcfea('0x5d')][_0xcfea('0x26')]({'where':_0x3eab88[_0xcfea('0x44')]})[_0xcfea('0x17')](function(_0xcbca8d){_0x4a2a88[_0xcfea('0x26')]=_0xcbca8d;if(_0x3b51f6[_0xcfea('0x3b')][_0xcfea('0x49')]){_0x3eab88[_0xcfea('0x4a')]=[{'all':!![]}];}return db['Disposition'][_0xcfea('0x4b')](_0x3eab88);})['then'](function(_0x4d08d5){_0x4a2a88['rows']=_0x4d08d5;return _0x4a2a88;});}})['then'](respondWithFilteredResult(_0xd9df9d,_0x3eab88))[_0xcfea('0x56')](handleError(_0xd9df9d,null));};exports[_0xcfea('0x60')]=function(_0xe4f178,_0xa244ae){return db['ChatWebsite'][_0xcfea('0x4e')]({'where':{'id':_0xe4f178[_0xcfea('0x4d')]['id']}})['then'](handleEntityNotFound(_0xa244ae,null))[_0xcfea('0x17')](function(_0x59998f){if(_0x59998f){return _0x59998f['removeDispositions'](_0xe4f178[_0xcfea('0x3b')][_0xcfea('0x61')]);}})['then'](respondWithStatusCode(_0xa244ae,null))[_0xcfea('0x56')](handleError(_0xa244ae,null));};exports[_0xcfea('0x62')]=function(_0x4071d2,_0x4b7b32){if(_0x4071d2[_0xcfea('0x50')]['id']){delete _0x4071d2[_0xcfea('0x50')]['id'];}return db[_0xcfea('0x35')][_0xcfea('0x4e')]({'where':{'id':_0x4071d2[_0xcfea('0x4d')]['id']}})[_0xcfea('0x17')](handleEntityNotFound(_0x4b7b32,null))[_0xcfea('0x17')](function(_0x141535){if(_0x141535){_0x4071d2['body']['ChatWebsiteId']=_0x141535['id'];return db[_0xcfea('0x63')][_0xcfea('0x4f')](_0x4071d2[_0xcfea('0x50')]);}})['then'](respondWithResult(_0x4b7b32,null))[_0xcfea('0x56')](handleError(_0x4b7b32,null));};exports[_0xcfea('0x64')]=function(_0x5f0e1c,_0x40e39d){var _0x299ae5={'raw':![],'where':{}};var _0x1f6438={};var _0x34ece2={'count':0x0,'rows':[]};return db[_0xcfea('0x35')][_0xcfea('0x5c')]({'where':{'id':_0x5f0e1c['params']['id']}})[_0xcfea('0x17')](handleEntityNotFound(_0x40e39d,null))[_0xcfea('0x17')](function(_0x75a111){if(_0x75a111){_0x1f6438[_0xcfea('0x3a')]=_[_0xcfea('0x3c')](db[_0xcfea('0x63')][_0xcfea('0x36')]);_0x1f6438['query']=_[_0xcfea('0x3c')](_0x5f0e1c[_0xcfea('0x3b')]);_0x1f6438[_0xcfea('0x3d')]=_[_0xcfea('0x3e')](_0x1f6438[_0xcfea('0x3a')],_0x1f6438[_0xcfea('0x3b')]);_0x299ae5[_0xcfea('0x3f')]=_[_0xcfea('0x3e')](_0x1f6438[_0xcfea('0x3a')],qs[_0xcfea('0x40')](_0x5f0e1c['query'][_0xcfea('0x40')]));_0x299ae5[_0xcfea('0x3f')]=_0x299ae5[_0xcfea('0x3f')][_0xcfea('0x41')]?_0x299ae5['attributes']:_0x1f6438[_0xcfea('0x3a')];if(!_0x5f0e1c[_0xcfea('0x3b')][_0xcfea('0x65')](_0xcfea('0x5e'))){_0x299ae5[_0xcfea('0x27')]=qs[_0xcfea('0x27')](_0x5f0e1c['query']['limit']);_0x299ae5[_0xcfea('0x24')]=qs[_0xcfea('0x24')](_0x5f0e1c[_0xcfea('0x3b')][_0xcfea('0x24')]);}_0x299ae5[_0xcfea('0x42')]=qs[_0xcfea('0x43')](_0x5f0e1c[_0xcfea('0x3b')][_0xcfea('0x43')]);_0x299ae5[_0xcfea('0x44')]=qs[_0xcfea('0x3d')](_[_0xcfea('0x5f')](_0x5f0e1c[_0xcfea('0x3b')],_0x1f6438['filters']));_0x299ae5['where'][_0xcfea('0x5a')]=_0x75a111['id'];if(_0x5f0e1c[_0xcfea('0x3b')]['filter']){_0x299ae5[_0xcfea('0x44')]=_[_0xcfea('0x47')](_0x299ae5['where'],{'$or':_[_0xcfea('0x34')](_0x299ae5[_0xcfea('0x3f')],function(_0x544303){var _0x593293={};_0x593293[_0x544303]={'$like':'%'+_0x5f0e1c[_0xcfea('0x3b')][_0xcfea('0x45')]+'%'};return _0x593293;})});}_0x299ae5=_[_0xcfea('0x47')]({},_0x299ae5,_0x5f0e1c[_0xcfea('0x48')]);return db['CannedAnswer']['count']({'where':_0x299ae5[_0xcfea('0x44')]})['then'](function(_0x3b8fe3){_0x34ece2['count']=_0x3b8fe3;if(_0x5f0e1c[_0xcfea('0x3b')][_0xcfea('0x49')]){_0x299ae5[_0xcfea('0x4a')]=[{'all':!![]}];}return db['CannedAnswer'][_0xcfea('0x4b')](_0x299ae5);})[_0xcfea('0x17')](function(_0xa277bb){_0x34ece2['rows']=_0xa277bb;return _0x34ece2;});}})[_0xcfea('0x17')](respondWithFilteredResult(_0x40e39d,_0x299ae5))['catch'](handleError(_0x40e39d,null));};exports[_0xcfea('0x66')]=function(_0x319a81,_0x2a3a07){return db[_0xcfea('0x35')][_0xcfea('0x4e')]({'where':{'id':_0x319a81[_0xcfea('0x4d')]['id']}})['then'](handleEntityNotFound(_0x2a3a07,null))[_0xcfea('0x17')](function(_0x439ab5){if(_0x439ab5){return _0x439ab5[_0xcfea('0x66')](_0x319a81[_0xcfea('0x3b')][_0xcfea('0x61')]);}})[_0xcfea('0x17')](respondWithStatusCode(_0x2a3a07,null))['catch'](handleError(_0x2a3a07,null));};exports[_0xcfea('0x67')]=function(_0x3dbe2f,_0x1286f5){_0x3dbe2f[_0xcfea('0x50')][_0xcfea('0x68')]=_0x3dbe2f[_0xcfea('0x69')][_0xcfea('0x6a')];return db[_0xcfea('0x35')][_0xcfea('0x4e')]({'where':{'id':_0x3dbe2f['params']['id']}})[_0xcfea('0x17')](handleEntityNotFound(_0x1286f5,null))[_0xcfea('0x17')](saveUpdates(_0x3dbe2f[_0xcfea('0x50')],null))[_0xcfea('0x17')](respondWithResult(_0x1286f5,null))[_0xcfea('0x56')](handleError(_0x1286f5,null));};exports['addAvatar']=function(_0x7dc116,_0x348e65){_0x7dc116['body']['agentAvatar']=_0x7dc116[_0xcfea('0x69')][_0xcfea('0x6a')];return db[_0xcfea('0x35')][_0xcfea('0x4e')]({'where':{'id':_0x7dc116['params']['id']}})[_0xcfea('0x17')](handleEntityNotFound(_0x348e65,null))[_0xcfea('0x17')](saveUpdates(_0x7dc116[_0xcfea('0x50')],null))[_0xcfea('0x17')](respondWithResult(_0x348e65,null))[_0xcfea('0x56')](handleError(_0x348e65,null));};exports[_0xcfea('0x6b')]=function(_0x5704ee,_0x3709f7){_0x5704ee[_0xcfea('0x50')]['customerAvatar']=_0x5704ee[_0xcfea('0x69')]['filename'];return db[_0xcfea('0x35')]['find']({'where':{'id':_0x5704ee[_0xcfea('0x4d')]['id']}})[_0xcfea('0x17')](handleEntityNotFound(_0x3709f7,null))[_0xcfea('0x17')](saveUpdates(_0x5704ee['body'],null))[_0xcfea('0x17')](respondWithResult(_0x3709f7,null))[_0xcfea('0x56')](handleError(_0x3709f7,null));};exports[_0xcfea('0x6c')]=function(_0x59613a,_0x5b5836){_0x59613a[_0xcfea('0x50')][_0xcfea('0x6d')]=_0x59613a['file'][_0xcfea('0x6a')];return db['ChatWebsite'][_0xcfea('0x4e')]({'where':{'id':_0x59613a[_0xcfea('0x4d')]['id']}})[_0xcfea('0x17')](handleEntityNotFound(_0x5b5836,null))[_0xcfea('0x17')](saveUpdates(_0x59613a[_0xcfea('0x50')],null))[_0xcfea('0x17')](respondWithResult(_0x5b5836,null))[_0xcfea('0x56')](handleError(_0x5b5836,null));};exports[_0xcfea('0x6e')]=function(_0x6fd62f,_0xe2356d){var _0x452825=path[_0xcfea('0x6f')](config[_0xcfea('0x70')],_0xcfea('0x71'));var _0x2935be={'where':{'id':_0x6fd62f[_0xcfea('0x4d')]['id']},'attributes':['id',_0xcfea('0x68')],'raw':!![]};var _0x461568=![];return require(_0xcfea('0x72'))[_0xcfea('0x73')]()['then'](function(_0x4101a5){if(_0x4101a5){_0x461568=_0x4101a5[_0xcfea('0x74')];}})[_0xcfea('0x17')](function(){return db[_0xcfea('0x35')][_0xcfea('0x4e')](_0x2935be);})['then'](handleEntityNotFound(_0xe2356d,null))[_0xcfea('0x17')](function(_0x5ecfe5){if(_0x5ecfe5){if(!_['isNil'](_0x5ecfe5['sitepic'])){if(fs[_0xcfea('0x75')](path[_0xcfea('0x6f')](config[_0xcfea('0x70')],_0xcfea('0x76'),_0x5ecfe5[_0xcfea('0x68')]))&&_0x461568){_0x452825=path['join'](config[_0xcfea('0x70')],_0xcfea('0x76'),_0x5ecfe5[_0xcfea('0x68')]);}}return _0xe2356d['download'](_0x452825);}})['catch'](handleError(_0xe2356d,null));};exports[_0xcfea('0x77')]=function(_0xa23629,_0x578aa2){var _0x4ae185=path['join'](config['root'],'server/files/images/avatars/default_avatar.png');var _0x146ed0={'where':{'id':_0xa23629[_0xcfea('0x4d')]['id']},'attributes':['id','agentAvatar'],'raw':!![]};return db[_0xcfea('0x35')][_0xcfea('0x4e')](_0x146ed0)['then'](handleEntityNotFound(_0x578aa2,null))[_0xcfea('0x17')](function(_0x501ec3){if(_0x501ec3){if(!_[_0xcfea('0x78')](_0x501ec3[_0xcfea('0x79')])){if(fs[_0xcfea('0x75')](path[_0xcfea('0x6f')](config['root'],'server/files/images/avatars/',_0x501ec3['agentAvatar']))){_0x4ae185=path[_0xcfea('0x6f')](config[_0xcfea('0x70')],_0xcfea('0x7a'),_0x501ec3['agentAvatar']);}}return _0x578aa2['download'](_0x4ae185);}})[_0xcfea('0x56')](handleError(_0x578aa2,null));};exports['getCustomerAvatar']=function(_0x432491,_0x4ac594){var _0x15ebbc=path['join'](config[_0xcfea('0x70')],_0xcfea('0x7b'));var _0x39f48a={'where':{'id':_0x432491['params']['id']},'attributes':['id',_0xcfea('0x7c'),_0xcfea('0x7d')],'raw':!![]};return db[_0xcfea('0x35')]['find'](_0x39f48a)[_0xcfea('0x17')](handleEntityNotFound(_0x4ac594,null))[_0xcfea('0x17')](function(_0x5d0934){if(_0x5d0934){if(!_[_0xcfea('0x78')](_0x5d0934[_0xcfea('0x7c')])){if(fs[_0xcfea('0x75')](path[_0xcfea('0x6f')](config['root'],_0xcfea('0x7a'),_0x5d0934[_0xcfea('0x7c')]))&&_0x5d0934[_0xcfea('0x7d')]){_0x15ebbc=path[_0xcfea('0x6f')](config['root'],'server/files/images/avatars/',_0x5d0934[_0xcfea('0x7c')]);}}return _0x4ac594['download'](_0x15ebbc);}})[_0xcfea('0x56')](handleError(_0x4ac594,null));};exports[_0xcfea('0x7e')]=function(_0x47c5b9,_0x15c10e){var _0x540ced=path[_0xcfea('0x6f')](config['root'],_0xcfea('0x7f'));var _0x224fe6={'where':{'id':_0x47c5b9[_0xcfea('0x4d')]['id']},'attributes':['id','systemAvatar'],'raw':!![]};return db[_0xcfea('0x35')]['find'](_0x224fe6)[_0xcfea('0x17')](handleEntityNotFound(_0x15c10e,null))['then'](function(_0x104bb7){if(_0x104bb7){if(!_[_0xcfea('0x78')](_0x104bb7['systemAvatar'])){if(fs['existsSync'](path[_0xcfea('0x6f')](config[_0xcfea('0x70')],'server/files/images/avatars/',_0x104bb7[_0xcfea('0x6d')]))){_0x540ced=path[_0xcfea('0x6f')](config[_0xcfea('0x70')],'server/files/images/avatars/',_0x104bb7[_0xcfea('0x6d')]);}}return _0x15c10e[_0xcfea('0x80')](_0x540ced);}})[_0xcfea('0x56')](handleError(_0x15c10e,null));};exports['notify']=function(_0x517dfd,_0x3fcdbd){var _0x5a69df=require(_0xcfea('0x81'));var _0x518401=new _0x5a69df();var _0x59c771=_0x518401[_0xcfea('0x82')](_0x517dfd[_0xcfea('0x83')]['user-agent'])[_0xcfea('0x84')]();var _0x5b8ef0={'body':_0x517dfd[_0xcfea('0x50')],'channel':_0xcfea('0x85')};var _0x3f30dd=[];var _0x3872e6=[];var _0x370ff3={};var _0x5f2500=![];return db[_0xcfea('0x86')][_0xcfea('0x58')]()['then'](function(_0x2c3f13){if(!_0x2c3f13){throw new db[(_0xcfea('0x87'))][(_0xcfea('0x88'))](_0xcfea('0x89'));}_0x3f30dd=_[_0xcfea('0x8a')](_[_0xcfea('0x3c')](_0x2c3f13),['createdAt','updatedAt']);_0x3872e6=_[_0xcfea('0x8a')](_['keys'](_0x2c3f13),['createdAt','updatedAt','CompanyId',_0xcfea('0x8b')]);if(_0x517dfd[_0xcfea('0x50')]['id']){delete _0x517dfd['body']['id'];}if(_['isNil'](_0x517dfd['body'][_0xcfea('0x8c')])){throw new db[(_0xcfea('0x87'))]['ValidationError'](_0xcfea('0x8d'));}if(_[_0xcfea('0x78')](_0x517dfd[_0xcfea('0x50')][_0xcfea('0x50')])||_0x517dfd[_0xcfea('0x50')][_0xcfea('0x50')]===''){throw new db[(_0xcfea('0x87'))][(_0xcfea('0x88'))](_0xcfea('0x8e'));}if(_[_0xcfea('0x78')](_0x517dfd[_0xcfea('0x50')][_0xcfea('0x8f')])){throw new db[(_0xcfea('0x87'))][(_0xcfea('0x88'))](_0xcfea('0x90')+_0x3872e6);}if(!_[_0xcfea('0x91')](_0x3872e6,_0x517dfd['body'][_0xcfea('0x8f')])){throw new db[(_0xcfea('0x87'))]['ValidationError'](_0xcfea('0x92')+_0x3872e6);}_0x370ff3[_0x517dfd[_0xcfea('0x50')][_0xcfea('0x8f')]]=_0x517dfd[_0xcfea('0x50')][_0xcfea('0x8c')];})['then'](function(){return db[_0xcfea('0x35')][_0xcfea('0x4e')]({'where':{'id':_0x517dfd[_0xcfea('0x4d')]['id']},'include':[{'model':db['CmList'],'as':_0xcfea('0x93'),'include':[{'model':db['CmContact'],'as':_0xcfea('0x94'),'where':_0x370ff3,'limit':0x1,'order':[['updatedAt',_0xcfea('0x95')]]}]},{'model':db[_0xcfea('0x96')],'as':'Applications'}]});})[_0xcfea('0x17')](handleEntityNotFound(_0x3fcdbd,null))[_0xcfea('0x17')](function(_0x404470){if(_0x404470&&_0x404470[_0xcfea('0x93')]){_0x5b8ef0[_0xcfea('0x97')]=_0x404470;_0x5b8ef0['applications']=_0x404470[_0xcfea('0x98')];_0x5b8ef0[_0xcfea('0x99')]=_0x404470[_0xcfea('0x93')];_0x5b8ef0[_0xcfea('0x9a')]=_[_0xcfea('0x9b')](_0x5b8ef0['applications'],[_0xcfea('0x9c')],[_0xcfea('0x9d')]);if(_0x5b8ef0[_0xcfea('0x97')][_0xcfea('0x98')]){delete _0x5b8ef0[_0xcfea('0x97')]['Applications'];}if(_0x5b8ef0['account'][_0xcfea('0x93')]&&_0x5b8ef0[_0xcfea('0x97')][_0xcfea('0x93')][_0xcfea('0x94')][_0xcfea('0x41')]){return _0x5b8ef0[_0xcfea('0x97')][_0xcfea('0x93')][_0xcfea('0x94')][0x0];}var _0x13d11d=_[_0xcfea('0x9e')](_0x517dfd[_0xcfea('0x50')],{'firstName':_0x517dfd['body'][_0xcfea('0x8c')],'ListId':_0x404470[_0xcfea('0x8b')]});_0x13d11d[_0x517dfd[_0xcfea('0x50')]['mapKey']]=_0x517dfd[_0xcfea('0x50')][_0xcfea('0x8c')];return db[_0xcfea('0x86')][_0xcfea('0x4f')](_0x13d11d,{'fields':_0x3f30dd,'raw':!![]});}})['then'](handleEntityNotFound(_0x3fcdbd,null))['then'](function(_0x211b8c){_0x5b8ef0[_0xcfea('0x9f')]=_0x211b8c;var _0x1561c8=_0x517dfd[_0xcfea('0x50')][_0xcfea('0xa0')];if(_0x517dfd[_0xcfea('0x83')][_0xcfea('0xa1')]){_0x1561c8=_0x517dfd[_0xcfea('0x83')][_0xcfea('0xa1')];}else if(_0x517dfd[_0xcfea('0x83')][_0xcfea('0xa2')]){_0x1561c8=_[_0xcfea('0xa3')](_0x517dfd['headers'][_0xcfea('0xa2')][_0xcfea('0xa4')](','));}if(_0x211b8c){var _0xbceae8={'ContactId':_0x211b8c['id'],'ChatWebsiteId':_0x517dfd['params']['id'],'from':(_0x211b8c[_0xcfea('0xa5')]||'')+'\x20'+(_0x211b8c['lastName']||''),'customerIp':_0x1561c8,'customerPort':_0x517dfd['headers']['x-real-port']?_0x517dfd[_0xcfea('0x83')][_0xcfea('0xa6')]:null,'referer':_0x517dfd[_0xcfea('0x50')][_0xcfea('0xa7')],'browserName':_0x59c771['browser'][_0xcfea('0x30')]&&_0x59c771[_0xcfea('0xa8')]['version']?util[_0xcfea('0xa9')](_0xcfea('0xaa'),_0x59c771[_0xcfea('0xa8')][_0xcfea('0x30')],_0x59c771[_0xcfea('0xa8')][_0xcfea('0xab')]):_0xcfea('0xac'),'browserVersion':_0x59c771[_0xcfea('0xa8')][_0xcfea('0xab')]||_0xcfea('0xac'),'osName':util['format'](_0xcfea('0xaa'),_0x59c771['os']['name'],_0x59c771['os']['version']),'osVersion':_0x59c771['os'][_0xcfea('0xab')],'deviceModel':_0x59c771['device'][_0xcfea('0x3a')]&&_0x59c771[_0xcfea('0xad')][_0xcfea('0xae')]?util[_0xcfea('0xa9')](_0xcfea('0xaf'),_0x59c771[_0xcfea('0xad')][_0xcfea('0x3a')],_0x59c771[_0xcfea('0xad')][_0xcfea('0xae')],_0x59c771[_0xcfea('0xad')][_0xcfea('0x38')]):null,'deviceVendor':_0x59c771['device'][_0xcfea('0xae')],'deviceType':_0x59c771[_0xcfea('0xad')][_0xcfea('0x38')],'formData':JSON[_0xcfea('0xb0')](_0x517dfd[_0xcfea('0x50')])};var _0x242b9e={'ChatWebsiteId':_0x517dfd['params']['id'],'closed':![]};if(_0x517dfd[_0xcfea('0x50')]['threadId']){_0x242b9e[_0xcfea('0xb1')]=_0x517dfd['body'][_0xcfea('0xb1')];return db[_0xcfea('0xb2')]['find']({'where':_0x242b9e})[_0xcfea('0x17')](function(_0x153019){if(_0x153019){return[_0x153019,![]];}_0xbceae8['threadId']=_0x517dfd[_0xcfea('0x50')][_0xcfea('0xb1')];_0xbceae8[_0xcfea('0xb3')]=_0x517dfd[_0xcfea('0x50')][_0xcfea('0xb3')];return db[_0xcfea('0xb2')][_0xcfea('0x4f')](_0xbceae8)['then'](function(_0x5f3982){return[_0x5f3982,!![]];});});}_0x242b9e[_0xcfea('0xb4')]=_0x211b8c['id'];if(_0x517dfd[_0xcfea('0x50')]['interaction']&&_0x517dfd[_0xcfea('0x50')]['interaction']['id']){_0x242b9e['id']=_0x517dfd[_0xcfea('0x50')][_0xcfea('0xb5')]['id'];return db[_0xcfea('0xb2')]['find']({'where':_0x242b9e})['then'](function(_0x3ee281){if(_0x3ee281){return[_0x3ee281,![]];}return db[_0xcfea('0xb2')][_0xcfea('0x4f')](_0xbceae8)[_0xcfea('0x17')](function(_0x263f02){return[_0x263f02,!![]];});});}return db[_0xcfea('0xb2')]['create'](_0xbceae8)['then'](function(_0x4de82e){return[_0x4de82e,!![]];});}})[_0xcfea('0xb6')](function(_0x3a0ca8,_0x2d6f49){if(_0x3a0ca8){_0x5f2500=_0x2d6f49;if(!_0x2d6f49){var _0x484862={'from':(_0x5b8ef0['contact'][_0xcfea('0xa5')]||'')+'\x20'+(_0x5b8ef0[_0xcfea('0x9f')][_0xcfea('0xb7')]||'')};if(_0x517dfd['body'][_0xcfea('0xb1')]&&_0x517dfd[_0xcfea('0x50')]['messageId']&&_0x517dfd[_0xcfea('0x50')]['threadId']!=_0x517dfd[_0xcfea('0x50')][_0xcfea('0xb8')]){_0x484862[_0xcfea('0xb1')]=_0x517dfd[_0xcfea('0x50')][_0xcfea('0xb8')];}return _0x3a0ca8[_0xcfea('0x2b')](_0x484862);}else{return _0x3a0ca8;}}})[_0xcfea('0x17')](function(_0x1cad09){_0x5b8ef0[_0xcfea('0xb5')]=_0x1cad09[_0xcfea('0x2d')]({'plain':!![]});_0x5b8ef0[_0xcfea('0xb5')][_0xcfea('0xb9')]=_0x5f2500;if(_0x5b8ef0[_0xcfea('0xb5')][_0xcfea('0xb9')]){if(_0x5b8ef0[_0xcfea('0x97')]['autoclose']){_0x5b8ef0[_0xcfea('0x9a')][_0xcfea('0xba')]({'id':0x0,'priority':_0x5b8ef0[_0xcfea('0x9a')][_0xcfea('0x41')]+0x1,'app':'close','appdata':'unmanaged','interval':_0xcfea('0xbb')});}}return db[_0xcfea('0xbc')][_0xcfea('0x4f')]({'body':_0x517dfd[_0xcfea('0x50')]['body'],'ChatWebsiteId':_0x517dfd[_0xcfea('0x4d')]['id'],'ChatInteractionId':_0x1cad09['id'],'direction':'in','ContactId':_0x5b8ef0['contact']['id'],'AttachmentId':_0x517dfd[_0xcfea('0x50')][_0xcfea('0xbd')]});})[_0xcfea('0x17')](function(_0x4a736f){_0x5b8ef0['message']=_0x4a736f;if(_0x5b8ef0['interaction'][_0xcfea('0xbe')]){return db[_0xcfea('0xbf')][_0xcfea('0x4e')]({'attributes':['id','name'],'where':{'id':_0x5b8ef0[_0xcfea('0xb5')][_0xcfea('0xbe')]}})[_0xcfea('0x17')](function(_0x5b579f){if(_0x5b579f){_0x5b8ef0[_0xcfea('0x9a')][_0xcfea('0xc0')]({'id':0x0,'priority':0x0,'app':_0xcfea('0xc1'),'appdata':_0x5b579f['name']+','+(_0x5b8ef0[_0xcfea('0x97')]['waitForTheAssignedAgent']||0xa),'interval':_0xcfea('0xbb')});_0x5b8ef0['forcedOwnership']=!![];}return respondWithRpcPromise(_0xcfea('0xc2'),_0xcfea('0xc3'),_0x5b8ef0);});}return respondWithRpcPromise(_0xcfea('0xc2'),'startRouting',_0x5b8ef0);})[_0xcfea('0x17')](function(_0x2e60dd){respondWithRpcPromise('EventManager','EventManager',{'event':_0xcfea('0xc4'),'message':_0x2e60dd},client9002);return _0x2e60dd;})[_0xcfea('0x17')](respondWithResult(_0x3fcdbd,null))['catch'](handleError(_0x3fcdbd,null));};exports[_0xcfea('0xc5')]=function(_0x2000bd,_0x366bc3){var _0x15e81a,_0x41a19e,_0x766279;var _0x5f59df=[];var _0x171eaf={};var _0x3d5e62=_0x2000bd[_0xcfea('0xc6')]||[];var _0x48604f=[];var _0x5b97f6;return db[_0xcfea('0x86')][_0xcfea('0x58')]()[_0xcfea('0x17')](function(_0x907ef1){if(!_0x907ef1){throw new db['Sequelize'][(_0xcfea('0x88'))]('no\x20available\x20attributes');}_0x5f59df=_[_0xcfea('0x8a')](_['keys'](_0x907ef1),[_0xcfea('0xc7'),_0xcfea('0xc8'),'CompanyId',_0xcfea('0x8b')]);if(_0x2000bd[_0xcfea('0x50')]['id']){delete _0x2000bd[_0xcfea('0x50')]['id'];}if(_[_0xcfea('0x78')](_0x2000bd['body']['from'])){throw _0x366bc3['status'](0x1f4)['send'](new db[(_0xcfea('0x87'))][(_0xcfea('0x88'))](_0xcfea('0x8d')));}if(_['isNil'](_0x2000bd['body'][_0xcfea('0x50')])||_0x2000bd['body'][_0xcfea('0x50')]===''){throw _0x366bc3[_0xcfea('0x22')](0x1f4)['send'](new db[(_0xcfea('0x87'))]['ValidationError'](_0xcfea('0x8e')));}if(_[_0xcfea('0x78')](_0x2000bd[_0xcfea('0x50')][_0xcfea('0xc9')])){throw _0x366bc3['status'](0x1f4)['send'](new db[(_0xcfea('0x87'))][(_0xcfea('0x88'))](_0xcfea('0xca')+_0x5f59df));}if(!_[_0xcfea('0x91')](_0x5f59df,_0x2000bd[_0xcfea('0x50')][_0xcfea('0xc9')])){throw _0x366bc3[_0xcfea('0x22')](0x1f4)[_0xcfea('0xcb')](new db[(_0xcfea('0x87'))][(_0xcfea('0x88'))](_0xcfea('0xcc')+_0x5f59df));}_0x171eaf[_0x2000bd[_0xcfea('0x50')][_0xcfea('0xc9')]]=_0x2000bd[_0xcfea('0x50')][_0xcfea('0x8c')];})['then'](function(){return db['ChatWebsite'][_0xcfea('0x4e')]({'where':{'id':_0x2000bd['params']['id']},'include':[{'model':db['CmList'],'as':_0xcfea('0x93')},{'model':db[_0xcfea('0xcd')],'as':_0xcfea('0xcd')}]});})[_0xcfea('0x17')](handleEntityNotFound(_0x366bc3,null))[_0xcfea('0x17')](function(_0x366ef6){if(_0x366ef6&&_0x366ef6[_0xcfea('0x93')]){_0x41a19e=_0x366ef6;var _0x148b22=_[_0xcfea('0x9e')](_0x2000bd[_0xcfea('0x50')],{'firstName':_0x2000bd['body'][_0xcfea('0x8c')],'phone':_0x2000bd[_0xcfea('0x50')][_0xcfea('0x8c')],'ListId':_0x366ef6['ListId']});_0x148b22[_0x2000bd[_0xcfea('0x50')]['mapKeyOffline']]=_0x2000bd[_0xcfea('0x50')]['from'];return db[_0xcfea('0x86')][_0xcfea('0xce')]({'where':_0x171eaf,'defaults':_0x148b22});}})[_0xcfea('0xb6')](function(_0x3a21ca){if(_0x3a21ca){_0x766279=_0x3a21ca;var _0x470634=fs[_0xcfea('0xcf')](path[_0xcfea('0x6f')](config['root'],_0xcfea('0xd0')),_0xcfea('0xd1'));var _0x3a394b=ejs[_0xcfea('0xd2')](_0x470634,{'body':_['toPairs'](_0x2000bd['body'][_0xcfea('0x50')]),'bodyTitle':_0x41a19e[_0xcfea('0xd3')]});return db[_0xcfea('0xd4')][_0xcfea('0x4f')]({'body':_0x3a394b,'plainBody':htmlToText[_0xcfea('0xd5')](_0x3a394b),'ContactId':_0x3a21ca['id'],'ChatWebsiteId':_0x41a19e['id']});}})[_0xcfea('0x17')](function(_0x5a123a){_0x5b97f6=_0x5a123a;if(_0x3d5e62[_0xcfea('0x41')]){var _0x45bbf5=_0x3d5e62['map'](function(_0xadb458){return{'name':_0xadb458['originalname'],'basename':_0xadb458['filename'],'type':_0xadb458[_0xcfea('0xd6')],'ChatOfflineMessageId':_0x5a123a['id']};});_0x48604f=_0x45bbf5[_0xcfea('0x34')](_0x496f74=>{var _0x1e85c2={'filename':_0x496f74[_0xcfea('0x30')],'path':path[_0xcfea('0x6f')](config['root'],_0xcfea('0xd7'),_0xcfea('0xc6'),_0xcfea('0xd8'),_0xcfea('0xd9'),_0x496f74[_0xcfea('0xda')])};return _0x1e85c2;});if(!_0x41a19e[_0xcfea('0xdb')]){return db[_0xcfea('0xdc')][_0xcfea('0xdd')](function(_0x114b98){return db[_0xcfea('0xde')]['bulkCreate'](_0x45bbf5,{'transaction':_0x114b98});});}}})[_0xcfea('0x17')](function(){if(_0x5b97f6){_0x15e81a=_0x5b97f6;return db[_0xcfea('0xcd')][_0xcfea('0x5c')]({'where':{'service':!![]},'include':[{'model':db[_0xcfea('0xdf')],'as':_0xcfea('0xe0'),'raw':!![],'include':[{'model':db[_0xcfea('0xe1')],'as':'CloudProvider','raw':!![]}]}]});}})['then'](function(_0x409121){if(_0x409121&&_0x409121[_0xcfea('0xe0')]&&_0x41a19e[_0xcfea('0xe2')]&&_0x41a19e[_0xcfea('0xe3')]){var _0xede4f6=_0x409121['getSmtpOptions']();return respondWithRpcPromise('SendMail',_0xcfea('0xe4'),{'account':_0xede4f6,'message':{'from':util[_0xcfea('0xa9')](_0xcfea('0xe5'),_0x409121['name'],_0x409121['email']||_0x409121['Smtp']['user']),'to':_0x41a19e[_0xcfea('0xe3')],'subject':_0x41a19e[_0xcfea('0xe6')],'html':_0x15e81a[_0xcfea('0x50')],'attachments':_0x48604f}},client9003)[_0xcfea('0x17')](function(){return _0x15e81a;})[_0xcfea('0x56')](function(_0x254aa0){logger['error'](_0x254aa0);});}})['then'](function(){if(_0x41a19e&&_0x41a19e['openNewInteraction']&&_0x41a19e[_0xcfea('0xe7')]){var _0xeacd1c=[];if(_0x3d5e62[_0xcfea('0x41')]){_0xeacd1c=_0x3d5e62[_0xcfea('0x34')](function(_0x44683c){return{'name':_0x44683c[_0xcfea('0xe8')],'basename':_0x44683c[_0xcfea('0x6a')],'type':_0x44683c[_0xcfea('0xd6')],'ChatOfflineMessageId':_0x5b97f6['id']};});}var _0x3c89dc;if(!_[_0xcfea('0x78')](_0x41a19e[_0xcfea('0xe9')])){var _0x47b2f9=_[_0xcfea('0x34')](_0x2000bd['body'],function(_0xdc5b21){return _0xdc5b21;});var _0x50b4bc=_[_0xcfea('0xea')](_0x47b2f9)[0x0];var _0x598362=_[_0xcfea('0xeb')](_0x50b4bc,function(_0x88f986){return _0x88f986;});_0x3c89dc=_0x598362[0x1][_0x41a19e['subjectOffline']];}var _0x1fe8b5={'from':_0x766279[_0xcfea('0xec')],'firstName':_0x766279[_0xcfea('0xa5')],'lastName':_0x766279[_0xcfea('0xb7')],'mapKey':_0xcfea('0xec'),'message':{'from':_0x766279[_0xcfea('0xec')],'to':_0x41a19e['MailAccount']['email'],'cc':'','subject':_[_0xcfea('0x78')](_0x3c89dc)?_0x41a19e[_0xcfea('0xe6')]:_0x3c89dc,'messageId':'','sentAt':new Date(),'attach':_0xeacd1c[_0xcfea('0x41')],'attachments':_0xeacd1c,'originChannel':_0xcfea('0xed'),'ChatWebsiteId':_0x41a19e['id'],'ChatOfflineMessageId':_0x15e81a['id'],'originTo':_0x41a19e['MailAccount'][_0xcfea('0xec')]},'body':_0x15e81a[_0xcfea('0x50')]};var _0x4e37fd={'account':{'id':_0x41a19e[_0xcfea('0xe7')]},'body':_0x1fe8b5,'log':'NotifyMailAccount'};return respondWithRpcPromise(_0xcfea('0xee'),'notifyMail',_0x4e37fd,client9001)['then'](function(){return _0x15e81a;})[_0xcfea('0x56')](function(_0xf6d892){logger[_0xcfea('0x1c')](_0xf6d892);});}return;})[_0xcfea('0x17')](function(){if(_0x15e81a){return _0x15e81a;}})[_0xcfea('0x17')](respondWithResult(_0x366bc3,null))[_0xcfea('0x56')](function(_0xe2bd59){logger[_0xcfea('0x1c')](_0xcfea('0x56'),_0xe2bd59);for(var _0x472543 of _0x3d5e62){var _0x3c8b90=path[_0xcfea('0x6f')](config[_0xcfea('0x70')],'server',_0xcfea('0xc6'),_0xcfea('0xd8'),_0xcfea('0xd9'),_0x472543[_0xcfea('0x6a')]);fs_extra[_0xcfea('0xef')](_0x3c8b90)[_0xcfea('0x56')](function(_0x2bba9d){logger[_0xcfea('0x1c')](_0xcfea('0xf0'),_0x3c8b90,_0x2bba9d);});}});};exports['addInteraction']=function(_0x5465e5,_0x3f0d95){return db[_0xcfea('0xb2')][_0xcfea('0x4e')]({'where':{'id':_0x5465e5[_0xcfea('0x4d')]['id']}})['then'](handleEntityNotFound(_0x3f0d95,null))[_0xcfea('0x17')](function(_0x3557d5){if(_0x3557d5){return _0x3557d5[_0xcfea('0xf1')](_0x5465e5[_0xcfea('0x50')][_0xcfea('0x61')],_[_0xcfea('0xf2')](_0x5465e5['body'],[_0xcfea('0x61'),'id'])||{});}})['then'](respondWithResult(_0x3f0d95,null))['catch'](handleError(_0x3f0d95,null));};exports['getInteractions']=function(_0x218217,_0x5b8ab0){var _0x2f6286={'raw':![],'where':{}};var _0x48dba0={};var _0x255c55={'count':0x0,'rows':[]};return db['ChatWebsite'][_0xcfea('0x5c')]({'where':{'id':_0x218217['params']['id']}})[_0xcfea('0x17')](handleEntityNotFound(_0x5b8ab0,null))[_0xcfea('0x17')](function(_0x5df211){if(_0x5df211){_0x48dba0[_0xcfea('0x3a')]=_[_0xcfea('0x3c')](db['ChatInteraction']['rawAttributes']);_0x48dba0[_0xcfea('0x3b')]=_['keys'](_0x218217[_0xcfea('0x3b')]);_0x48dba0[_0xcfea('0x3d')]=_['intersection'](_0x48dba0[_0xcfea('0x3a')],_0x48dba0['query']);_0x2f6286[_0xcfea('0x3f')]=_[_0xcfea('0x3e')](_0x48dba0['model'],qs[_0xcfea('0x40')](_0x218217[_0xcfea('0x3b')]['fields']));_0x2f6286[_0xcfea('0x3f')]=_0x2f6286[_0xcfea('0x3f')][_0xcfea('0x41')]?_0x2f6286[_0xcfea('0x3f')]:_0x48dba0[_0xcfea('0x3a')];if(!_0x218217['query'][_0xcfea('0x65')]('nolimit')){_0x2f6286[_0xcfea('0x27')]=qs[_0xcfea('0x27')](_0x218217[_0xcfea('0x3b')][_0xcfea('0x27')]);_0x2f6286['offset']=qs[_0xcfea('0x24')](_0x218217[_0xcfea('0x3b')][_0xcfea('0x24')]);}_0x2f6286[_0xcfea('0x42')]=qs[_0xcfea('0x43')](_0x218217[_0xcfea('0x3b')][_0xcfea('0x43')]);_0x2f6286[_0xcfea('0x44')]=qs['filters'](_[_0xcfea('0x5f')](_0x218217[_0xcfea('0x3b')],_0x48dba0[_0xcfea('0x3d')]));_0x2f6286['where'][_0xcfea('0x5a')]=_0x5df211['id'];if(_0x218217['query'][_0xcfea('0x45')]){_0x2f6286['where']=_[_0xcfea('0x47')](_0x2f6286[_0xcfea('0x44')],{'$or':_['map'](_0x2f6286[_0xcfea('0x3f')],function(_0x3c2d77){var _0x1330f4={};_0x1330f4[_0x3c2d77]={'$like':'%'+_0x218217['query'][_0xcfea('0x45')]+'%'};return _0x1330f4;})});}_0x2f6286=_[_0xcfea('0x47')]({},_0x2f6286,_0x218217['options']);return db['ChatInteraction'][_0xcfea('0x26')]({'where':_0x2f6286['where']})[_0xcfea('0x17')](function(_0x397b20){_0x255c55[_0xcfea('0x26')]=_0x397b20;if(_0x218217[_0xcfea('0x3b')][_0xcfea('0x49')]){_0x2f6286[_0xcfea('0x4a')]=[{'model':db[_0xcfea('0x86')],'as':_0xcfea('0xf3'),'required':![]},{'model':db['User'],'as':_0xcfea('0xf4'),'attributes':[_0xcfea('0x30'),_0xcfea('0xf5'),_0xcfea('0xf6')],'required':![]},{'model':db['Tag'],'as':_0xcfea('0xf7'),'attributes':['id',_0xcfea('0x30'),_0xcfea('0xf8')],'where':_0x218217['query'][_0xcfea('0xf9')]?{'id':_0x218217[_0xcfea('0x3b')][_0xcfea('0xf9')]}:undefined,'required':_0x218217[_0xcfea('0x3b')][_0xcfea('0xf9')]?!![]:![]}];}return db[_0xcfea('0xb2')][_0xcfea('0x4b')](_0x2f6286);})['then'](function(_0xae7d5c){_0x255c55[_0xcfea('0xfa')]=_0xae7d5c;return _0x255c55;});}})['then'](respondWithFilteredResult(_0x5b8ab0,_0x2f6286))[_0xcfea('0x56')](handleError(_0x5b8ab0,null));};function iftimePromise(_0x4a9e1d,_0x584ea0){return respondWithRpcPromise(_0xcfea('0xfb'),_0xcfea('0xfc'),{'command':_0x584ea0[_0xcfea('0xfd')]?util['format'](_0xcfea('0xfe'),_0x4a9e1d['interval'],_0x584ea0[_0xcfea('0xfd')]):util[_0xcfea('0xa9')](_0xcfea('0xff'),_0x4a9e1d[_0xcfea('0x100')])},client9002)[_0xcfea('0x17')](function(_0x4ab1f8){var _0x2cec0b=_0x4ab1f8&&_0x4ab1f8[_0xcfea('0x101')](_0xcfea('0x102'))>=0x0?!![]:![];logger[_0xcfea('0x18')](_0xcfea('0x103'),_0x584ea0['id'],_0x4a9e1d['id'],_0x4a9e1d[_0xcfea('0x100')],_0x2cec0b?_0xcfea('0x104'):_0xcfea('0x105'),_0x584ea0['timezone']?_0x584ea0[_0xcfea('0xfd')]:_0xcfea('0x106'));return _0x2cec0b;})[_0xcfea('0x56')](function(_0x18fb70){logger[_0xcfea('0x1c')](_0xcfea('0x103'),_0x584ea0['id'],_0x4a9e1d['id'],_0x4a9e1d[_0xcfea('0x100')],util[_0xcfea('0x107')](_0x18fb70,{'showHidden':![],'depth':null}),_0x584ea0[_0xcfea('0xfd')]?_0x584ea0[_0xcfea('0xfd')]:_0xcfea('0x106'));return![];});}exports['getSnippet']=function(_0xcb357c,_0x47cd9b){var _0x362ee3=0x0;var _0x227ac2=0x0;var _0x1faffa=![];var _0x3f03a2;var _0x5b3308;return db['ChatWebsite'][_0xcfea('0x4e')]({'where':{'id':_0xcb357c[_0xcfea('0x4d')]['id']},'include':[{'model':db[_0xcfea('0x108')],'as':_0xcfea('0x108'),'include':[{'model':db['Interval'],'as':'Intervals','attributes':['id',_0xcfea('0x100')],'raw':!![]}]}]})[_0xcfea('0x17')](handleEntityNotFound(_0x47cd9b,null))[_0xcfea('0x17')](function(_0x53cdd7){if(_0x53cdd7){_0x3f03a2=_0x53cdd7;return _0x53cdd7[_0xcfea('0x109')]({'raw':!![]});}})[_0xcfea('0x17')](function(_0x17f8fb){if(_0x3f03a2){if(_0x17f8fb){_0x5b3308=_0x17f8fb;}}return require('../../config/license/util')[_0xcfea('0x73')]();})['then'](function(_0x1b287f){if(_0x1b287f){_0x227ac2=_0x1b287f['virtual'];_0x1faffa=_0x1b287f[_0xcfea('0x74')];}})[_0xcfea('0x17')](function(){return db[_0xcfea('0xb2')][_0xcfea('0x26')]({'where':{'closed':![]}});})[_0xcfea('0x17')](function(_0x451e11){_0x362ee3=_0x451e11;if(_0x227ac2&&_0x451e11>_0x227ac2){return db[_0xcfea('0x10a')][_0xcfea('0x5c')]({'where':{'id':0x1}})['then'](function(_0x1ffd57){if(_0x1ffd57){_0x1ffd57[_0xcfea('0x10b')](_0xcfea('0x10c'));}});}})[_0xcfea('0x17')](function(){if(_0x3f03a2[_0xcfea('0x108')]&&_0x3f03a2[_0xcfea('0x108')][_0xcfea('0x10d')]){var _0x19c356=[];for(var _0x99da58=0x0;_0x99da58<_0x3f03a2[_0xcfea('0x108')][_0xcfea('0x10d')][_0xcfea('0x41')];_0x99da58++){var _0x16f58f=_0x3f03a2[_0xcfea('0x108')][_0xcfea('0x10d')][_0x99da58][_0xcfea('0x2d')]({'plain':!![]});_0x19c356['push'](iftimePromise(_0x16f58f,_0x3f03a2));}return BPromise[_0xcfea('0x10e')](_0x19c356)[_0xcfea('0x17')](function(_0x345e45){return _[_0xcfea('0x10f')](_0x345e45);});}else{return!![];}})[_0xcfea('0x17')](function(_0xd9e7ef){var _0x2f3e64=fs[_0xcfea('0xcf')](path[_0xcfea('0x6f')](config[_0xcfea('0x70')],'server/files/chat/iframe.ejs'),_0xcfea('0xd1'));var _0x4bf605=new url['URL'](_0x3f03a2['address'])[_0xcfea('0x110')];var _0x1888df=_0xcfea('0x111');var _0x309476=![];var _0x59003a={'chatVersion':_0x1888df,'chatWebsiteAddressOrigin':_0x4bf605,'remote':_0x3f03a2[_0xcfea('0x112')],'query':querystring[_0xcfea('0xb0')](_[_0xcfea('0x47')](_0x3f03a2['get']({'plain':!![]}),{'customerIp':_0xcb357c[_0xcfea('0x83')]['x-forwarded-for']||_0xcb357c[_0xcfea('0x83')][_0xcfea('0x113')]||_0xcb357c[_0xcfea('0x114')][_0xcfea('0x115')]||_0xcb357c['ip'],'referer':_0xcb357c[_0xcfea('0x83')][_0xcfea('0xa7')],'openedInteractions':_0x362ee3,'maxInteractions':_0x227ac2,'virtual':_0x1faffa[_0xcfea('0x116')],'online':_0xd9e7ef,'custom':_0x1faffa}))[_0xcfea('0x117')](/'/g,'\x5c\x27')};_0x47cd9b[_0xcfea('0xcb')](ejs[_0xcfea('0xd2')](Mustache['render'](_0x2f3e64,_0x59003a),{'proactiveActions':_0x5b3308,'alignment':_0x3f03a2['alignment'],'verticalAlignment':_0x3f03a2[_0xcfea('0x118')],'div_color':_0x3f03a2[_0xcfea('0xf8')],'labelText':_0x3f03a2[_0xcfea('0x119')],'text_color':_0x3f03a2[_0xcfea('0x11a')],'text_button_color':_0x3f03a2[_0xcfea('0x11b')],'button_color':_0x3f03a2[_0xcfea('0x11c')],'background_color':_0x3f03a2[_0xcfea('0x11d')],'hideWhenOffline':_0x3f03a2[_0xcfea('0x11e')],'intervalId':_0x3f03a2['IntervalId'],'isDevelopment':_0x309476,'chatVersion':_0x1888df}));})['catch'](handleError(_0x47cd9b,null));};exports['addApplications']=function(_0x12e3aa,_0x5b4084){var _0x5a1888=_0x12e3aa[_0xcfea('0x4d')]['id'];var _0x56a16d=_0x12e3aa[_0xcfea('0x50')];var _0x472250=0xc8;var _0x5bf796=null;return db[_0xcfea('0xdc')]['transaction']({'isolationLevel':db[_0xcfea('0xdc')]['Transaction']['ISOLATION_LEVELS'][_0xcfea('0x11f')]},function(_0x1bf5c4){return db[_0xcfea('0x35')][_0xcfea('0x5c')]({'where':{'id':_0x5a1888},'transaction':_0x1bf5c4})['then'](function(_0x58325f){if(_0x58325f){return db[_0xcfea('0x96')][_0xcfea('0x2c')]({'where':{'ChatWebsiteId':_0x5a1888},'transaction':_0x1bf5c4})[_0xcfea('0x17')](function(){var _0x1af3fc=_[_0xcfea('0x34')](_0x56a16d,function(_0x51e7f8){_0x51e7f8['ChatWebsiteId']=_0x5a1888;return _0x51e7f8;});return db['ChatApplication'][_0xcfea('0x120')](_0x1af3fc,{'transaction':_0x1bf5c4});});}else{_0x472250=0x194;_0x5bf796=[];}});})[_0xcfea('0x17')](function(){if(_0x472250!==0x194){return db[_0xcfea('0x96')][_0xcfea('0x121')]({'where':{'ChatWebsiteId':_0x5a1888},'order':_0xcfea('0x9c')})['then'](function(_0x5d7bf8){_0x5bf796=_0x5d7bf8;});}})[_0xcfea('0x56')](function(_0x3b3187){_0x472250=0x1f4;logger[_0xcfea('0x1c')](_0x3b3187['stack']);if(_0x3b3187[_0xcfea('0x30')]){delete _0x3b3187[_0xcfea('0x30')];}_0x5bf796=_0x3b3187;})[_0xcfea('0x122')](function(){if(_0x5bf796===null){_0x5b4084[_0xcfea('0x21')](_0x472250);}else{if(_0x472250===0x1f4){_0x5b4084[_0xcfea('0x22')](_0x472250)[_0xcfea('0xcb')](_0x5bf796);}else{_0x5b4084[_0xcfea('0x22')](_0x472250)[_0xcfea('0x2a')](_0x5bf796);}}});};exports[_0xcfea('0x123')]=function(_0x1f34d8,_0xcf0d9d){var _0x45636c={};var _0x3e2e5c={};var _0xbb7350;var _0x27fb5b;return db[_0xcfea('0x35')][_0xcfea('0x5c')]({'where':{'id':_0x1f34d8['params']['id']}})[_0xcfea('0x17')](handleEntityNotFound(_0xcf0d9d,null))[_0xcfea('0x17')](function(_0x11dd9d){if(_0x11dd9d){_0xbb7350=_0x11dd9d;_0x3e2e5c[_0xcfea('0x3a')]=_[_0xcfea('0x3c')](db[_0xcfea('0x96')][_0xcfea('0x36')]);_0x3e2e5c[_0xcfea('0x3b')]=_[_0xcfea('0x3c')](_0x1f34d8['query']);_0x3e2e5c[_0xcfea('0x3d')]=_[_0xcfea('0x3e')](_0x3e2e5c[_0xcfea('0x3a')],_0x3e2e5c['query']);_0x45636c[_0xcfea('0x3f')]=_[_0xcfea('0x3e')](_0x3e2e5c['model'],qs[_0xcfea('0x40')](_0x1f34d8['query'][_0xcfea('0x40')]));_0x45636c['attributes']=_0x45636c[_0xcfea('0x3f')][_0xcfea('0x41')]?_0x45636c[_0xcfea('0x3f')]:_0x3e2e5c[_0xcfea('0x3a')];_0x45636c['order']=qs[_0xcfea('0x43')](_0x1f34d8['query'][_0xcfea('0x43')]);_0x45636c[_0xcfea('0x44')]=qs[_0xcfea('0x3d')](_[_0xcfea('0x5f')](_0x1f34d8[_0xcfea('0x3b')],_0x3e2e5c[_0xcfea('0x3d')]));if(_0x1f34d8['query'][_0xcfea('0x45')]){_0x45636c['where']=_[_0xcfea('0x47')](_0x45636c[_0xcfea('0x44')],{'$or':_[_0xcfea('0x34')](_0x45636c['attributes'],function(_0x1b16eb){var _0x4e3790={};_0x4e3790[_0x1b16eb]={'$like':'%'+_0x1f34d8[_0xcfea('0x3b')]['filter']+'%'};return _0x4e3790;})});}_0x45636c=_[_0xcfea('0x47')]({},_0x45636c,_0x1f34d8[_0xcfea('0x48')]);return _0xbb7350['getApplications'](_0x45636c);}})[_0xcfea('0x17')](function(_0x2ef9d9){if(_0x2ef9d9){_0x27fb5b=_0x2ef9d9[_0xcfea('0x41')];if(!_0x1f34d8['query']['hasOwnProperty'](_0xcfea('0x5e'))){_0x45636c['limit']=qs[_0xcfea('0x27')](_0x1f34d8[_0xcfea('0x3b')][_0xcfea('0x27')]);_0x45636c[_0xcfea('0x24')]=qs[_0xcfea('0x24')](_0x1f34d8['query'][_0xcfea('0x24')]);}return _0xbb7350[_0xcfea('0x123')](_0x45636c);}})[_0xcfea('0x17')](function(_0x292ec3){if(_0x292ec3){return _0x292ec3?{'count':_0x27fb5b,'rows':_0x292ec3}:null;}})[_0xcfea('0x17')](respondWithResult(_0xcf0d9d,null))[_0xcfea('0x56')](handleError(_0xcf0d9d,null));};exports[_0xcfea('0x124')]=function(_0x4d3218,_0x395461){return db[_0xcfea('0x125')][_0xcfea('0x4e')]({'where':{'id':_0x4d3218[_0xcfea('0x4d')]['id']}})[_0xcfea('0x17')](handleEntityNotFound(_0x395461,null))[_0xcfea('0x17')](function(_0x19499b){if(_0x19499b){return _0x19499b[_0xcfea('0x124')](_0x4d3218['body']['ids'],_['omit'](_0x4d3218[_0xcfea('0x50')],[_0xcfea('0x61'),'id'])||{});}})[_0xcfea('0x17')](respondWithResult(_0x395461,null))[_0xcfea('0x56')](handleError(_0x395461,null));};exports['getProactiveActions']=function(_0x111329,_0x4736c2){var _0x1b862b={};var _0x483a4f={};var _0x57b998;var _0x2a2172;return db[_0xcfea('0x35')][_0xcfea('0x5c')]({'where':{'id':_0x111329[_0xcfea('0x4d')]['id']}})['then'](handleEntityNotFound(_0x4736c2,null))[_0xcfea('0x17')](function(_0xaa2da4){if(_0xaa2da4){_0x57b998=_0xaa2da4;_0x483a4f[_0xcfea('0x3a')]=_[_0xcfea('0x3c')](db['ChatProactiveAction']['rawAttributes']);_0x483a4f[_0xcfea('0x3b')]=_[_0xcfea('0x3c')](_0x111329[_0xcfea('0x3b')]);_0x483a4f[_0xcfea('0x3d')]=_[_0xcfea('0x3e')](_0x483a4f[_0xcfea('0x3a')],_0x483a4f['query']);_0x1b862b[_0xcfea('0x3f')]=_[_0xcfea('0x3e')](_0x483a4f[_0xcfea('0x3a')],qs[_0xcfea('0x40')](_0x111329[_0xcfea('0x3b')][_0xcfea('0x40')]));_0x1b862b[_0xcfea('0x3f')]=_0x1b862b[_0xcfea('0x3f')][_0xcfea('0x41')]?_0x1b862b['attributes']:_0x483a4f[_0xcfea('0x3a')];_0x1b862b[_0xcfea('0x42')]=qs[_0xcfea('0x43')](_0x111329[_0xcfea('0x3b')][_0xcfea('0x43')]);_0x1b862b[_0xcfea('0x44')]=qs[_0xcfea('0x3d')](_['pick'](_0x111329[_0xcfea('0x3b')],_0x483a4f[_0xcfea('0x3d')]));if(_0x111329[_0xcfea('0x3b')][_0xcfea('0x45')]){_0x1b862b[_0xcfea('0x44')]=_[_0xcfea('0x47')](_0x1b862b[_0xcfea('0x44')],{'$or':_[_0xcfea('0x34')](_0x1b862b[_0xcfea('0x3f')],function(_0x347824){var _0x31a0fe={};_0x31a0fe[_0x347824]={'$like':'%'+_0x111329['query']['filter']+'%'};return _0x31a0fe;})});}_0x1b862b=_['merge']({},_0x1b862b,_0x111329[_0xcfea('0x48')]);return _0x57b998[_0xcfea('0x109')](_0x1b862b);}})[_0xcfea('0x17')](function(_0x306421){if(_0x306421){_0x2a2172=_0x306421[_0xcfea('0x41')];if(!_0x111329[_0xcfea('0x3b')][_0xcfea('0x65')](_0xcfea('0x5e'))){_0x1b862b[_0xcfea('0x27')]=qs[_0xcfea('0x27')](_0x111329[_0xcfea('0x3b')][_0xcfea('0x27')]);_0x1b862b[_0xcfea('0x24')]=qs['offset'](_0x111329[_0xcfea('0x3b')][_0xcfea('0x24')]);}return _0x57b998[_0xcfea('0x109')](_0x1b862b);}})['then'](function(_0x529c21){if(_0x529c21){return _0x529c21?{'count':_0x2a2172,'rows':_0x529c21}:null;}})[_0xcfea('0x17')](respondWithResult(_0x4736c2,null))[_0xcfea('0x56')](handleError(_0x4736c2,null));};exports[_0xcfea('0x126')]=function(_0x45f712,_0x25b269){var _0x34b3ee=_0x45f712['query'][_0xcfea('0x127')]===_0xcfea('0x128')?_0xcfea('0x129'):_0xcfea('0x12a');return db['ChatWebsite']['find']({'attributes':['id',_0x34b3ee],'where':{'id':_0x45f712['params']['id']}})[_0xcfea('0x17')](handleEntityNotFound(_0x25b269,null))[_0xcfea('0x17')](function(_0x150846){if(_0x150846){var _0x2e84a1=_0x150846[_0x34b3ee];var _0x2c9ead=_0x2e84a1&&_0x2e84a1[_0xcfea('0x12b')]?_0x2e84a1[_0xcfea('0x12b')]:[];_0x25b269[_0xcfea('0xcb')]({'fromKey':_[_0xcfea('0x78')](_0x2e84a1[_0xcfea('0x12c')])?undefined:_0x2e84a1[_0xcfea('0x12c')],'count':_0x2c9ead[_0xcfea('0x41')],'rows':_0x2c9ead});}})[_0xcfea('0x56')](handleError(_0x25b269,null));};exports[_0xcfea('0x12d')]=function(_0x38af27,_0x216480){var _0x5a27bf={'raw':![],'where':{}};var _0x1b63ba={};var _0x5eb6f1={'count':0x0,'rows':[]};return db[_0xcfea('0x35')][_0xcfea('0x5c')]({'where':{'id':_0x38af27[_0xcfea('0x4d')]['id']}})[_0xcfea('0x17')](handleEntityNotFound(_0x216480,null))['then'](function(_0x45a352){if(_0x45a352){_0x1b63ba[_0xcfea('0x3a')]=_['keys'](db[_0xcfea('0xd4')][_0xcfea('0x36')]);_0x1b63ba[_0xcfea('0x3b')]=_[_0xcfea('0x3c')](_0x38af27[_0xcfea('0x3b')]);_0x1b63ba[_0xcfea('0x3d')]=_[_0xcfea('0x3e')](_0x1b63ba[_0xcfea('0x3a')],_0x1b63ba[_0xcfea('0x3b')]);_0x5a27bf['attributes']=_[_0xcfea('0x3e')](_0x1b63ba['model'],qs[_0xcfea('0x40')](_0x38af27[_0xcfea('0x3b')]['fields']));_0x5a27bf[_0xcfea('0x3f')]=_0x5a27bf[_0xcfea('0x3f')][_0xcfea('0x41')]?_0x5a27bf['attributes']:_0x1b63ba['model'];if(!_0x38af27[_0xcfea('0x3b')]['hasOwnProperty'](_0xcfea('0x5e'))){_0x5a27bf[_0xcfea('0x27')]=qs['limit'](_0x38af27[_0xcfea('0x3b')][_0xcfea('0x27')]);_0x5a27bf[_0xcfea('0x24')]=qs[_0xcfea('0x24')](_0x38af27[_0xcfea('0x3b')][_0xcfea('0x24')]);}_0x5a27bf[_0xcfea('0x42')]=qs['sort'](_0x38af27[_0xcfea('0x3b')][_0xcfea('0x43')]);_0x5a27bf[_0xcfea('0x44')]=qs[_0xcfea('0x3d')](_[_0xcfea('0x5f')](_0x38af27[_0xcfea('0x3b')],_0x1b63ba['filters']));_0x5a27bf['where'][_0xcfea('0x5a')]=_0x45a352['id'];if(_0x38af27['query'][_0xcfea('0x45')]){_0x5a27bf[_0xcfea('0x44')]=_[_0xcfea('0x47')](_0x5a27bf[_0xcfea('0x44')],{'$or':_[_0xcfea('0x34')](_0x5a27bf['attributes'],function(_0x594c4d){var _0x27128c={};_0x27128c[_0x594c4d]={'$like':'%'+_0x38af27[_0xcfea('0x3b')][_0xcfea('0x45')]+'%'};return _0x27128c;})});}_0x5a27bf=_['merge']({},_0x5a27bf,_0x38af27[_0xcfea('0x48')]);return db['ChatOfflineMessage'][_0xcfea('0x26')]({'where':_0x5a27bf[_0xcfea('0x44')]})[_0xcfea('0x17')](function(_0xc2ef93){_0x5eb6f1[_0xcfea('0x26')]=_0xc2ef93;if(_0x38af27[_0xcfea('0x3b')][_0xcfea('0x49')]){_0x5a27bf[_0xcfea('0x4a')]=[{'all':!![]}];}else{_0x5a27bf['include']=[{'model':db[_0xcfea('0x86')],'as':_0xcfea('0xf3'),'required':![]},{'model':db[_0xcfea('0xde')],'as':_0xcfea('0x12e'),'required':![]}];}return db[_0xcfea('0xd4')]['findAll'](_0x5a27bf);})[_0xcfea('0x17')](function(_0x13fa4b){_0x5eb6f1['rows']=_0x13fa4b;return _0x5eb6f1;});}})[_0xcfea('0x17')](respondWithFilteredResult(_0x216480,_0x5a27bf))['catch'](handleError(_0x216480,null));};exports[_0xcfea('0x12f')]=function(_0x270ff7,_0x2a86dd){return db[_0xcfea('0x35')][_0xcfea('0x4e')]({'where':{'id':_0x270ff7[_0xcfea('0x4d')]['id']}})[_0xcfea('0x17')](handleEntityNotFound(_0x2a86dd,null))[_0xcfea('0x17')](function(_0x55fbf5){if(_0x55fbf5){return _0x55fbf5[_0xcfea('0x12f')](_0x270ff7[_0xcfea('0x50')]['ids'],_['omit'](_0x270ff7['body'],['ids','id'])||{})[_0xcfea('0xb6')](function(_0x2d5f93){for(var _0x7ec349=0x0;_0x7ec349<_0x270ff7[_0xcfea('0x50')][_0xcfea('0x61')]['length'];_0x7ec349+=0x1){socket['emit'](_0xcfea('0x130'),{'UserId':Number(_0x270ff7['body']['ids'][_0x7ec349]),'ChatWebsiteId':Number(_0x270ff7['params']['id'])});}return _0x2d5f93;});}})[_0xcfea('0x17')](respondWithResult(_0x2a86dd,null))[_0xcfea('0x56')](handleError(_0x2a86dd,null));};exports[_0xcfea('0x131')]=function(_0x151681,_0x4c997b){return db[_0xcfea('0x35')]['find']({'where':{'id':_0x151681[_0xcfea('0x4d')]['id']}})[_0xcfea('0x17')](handleEntityNotFound(_0x4c997b,null))[_0xcfea('0x17')](function(_0x430893){if(_0x430893){return _0x430893['removeAgents'](_0x151681[_0xcfea('0x3b')][_0xcfea('0x61')])['then'](function(){if(_[_0xcfea('0x132')](_0x151681[_0xcfea('0x3b')][_0xcfea('0x61')])){for(var _0x55d521=0x0;_0x55d521<_0x151681[_0xcfea('0x3b')]['ids'][_0xcfea('0x41')];_0x55d521+=0x1){socket['emit'](_0xcfea('0x133'),{'UserId':Number(_0x151681[_0xcfea('0x3b')][_0xcfea('0x61')][_0x55d521]),'ChatWebsiteId':Number(_0x151681[_0xcfea('0x4d')]['id'])});}}else{socket[_0xcfea('0x134')](_0xcfea('0x133'),{'UserId':Number(_0x151681['query'][_0xcfea('0x61')]),'ChatWebsiteId':Number(_0x151681[_0xcfea('0x4d')]['id'])});}});}})[_0xcfea('0x17')](respondWithStatusCode(_0x4c997b,null))[_0xcfea('0x56')](handleError(_0x4c997b,null));};exports[_0xcfea('0x135')]=function(_0x4a7099,_0x36218b){var _0x4c6b10={};var _0x4ca748={};var _0x1b0a0e;var _0x4400e7;return db[_0xcfea('0x35')][_0xcfea('0x5c')]({'where':{'id':_0x4a7099[_0xcfea('0x4d')]['id']}})['then'](handleEntityNotFound(_0x36218b,null))[_0xcfea('0x17')](function(_0x4a569c){if(_0x4a569c){_0x1b0a0e=_0x4a569c;_0x4ca748[_0xcfea('0x3a')]=_['keys'](db[_0xcfea('0xbf')]['rawAttributes']);_0x4ca748[_0xcfea('0x3b')]=_[_0xcfea('0x3c')](_0x4a7099[_0xcfea('0x3b')]);_0x4ca748['filters']=_[_0xcfea('0x3e')](_0x4ca748[_0xcfea('0x3a')],_0x4ca748[_0xcfea('0x3b')]);_0x4c6b10[_0xcfea('0x3f')]=_['intersection'](_0x4ca748[_0xcfea('0x3a')],qs[_0xcfea('0x40')](_0x4a7099[_0xcfea('0x3b')][_0xcfea('0x40')]));_0x4c6b10[_0xcfea('0x3f')]=_0x4c6b10[_0xcfea('0x3f')][_0xcfea('0x41')]?_0x4c6b10[_0xcfea('0x3f')]:_0x4ca748[_0xcfea('0x3a')];_0x4c6b10['order']=qs['sort'](_0x4a7099[_0xcfea('0x3b')][_0xcfea('0x43')]);_0x4c6b10[_0xcfea('0x44')]=qs[_0xcfea('0x3d')](_[_0xcfea('0x5f')](_0x4a7099[_0xcfea('0x3b')],_0x4ca748[_0xcfea('0x3d')]));if(_0x4a7099[_0xcfea('0x3b')][_0xcfea('0x45')]){_0x4c6b10[_0xcfea('0x44')]=_[_0xcfea('0x47')](_0x4c6b10[_0xcfea('0x44')],{'$or':_[_0xcfea('0x34')](_0x4c6b10[_0xcfea('0x3f')],function(_0x31d767){var _0x12b293={};_0x12b293[_0x31d767]={'$like':'%'+_0x4a7099[_0xcfea('0x3b')][_0xcfea('0x45')]+'%'};return _0x12b293;})});}_0x4c6b10=_['merge']({},_0x4c6b10,_0x4a7099['options']);return _0x1b0a0e[_0xcfea('0x135')](_0x4c6b10);}})[_0xcfea('0x17')](function(_0x374dd7){if(_0x374dd7){_0x4400e7=_0x374dd7[_0xcfea('0x41')];if(!_0x4a7099[_0xcfea('0x3b')][_0xcfea('0x65')](_0xcfea('0x5e'))){_0x4c6b10[_0xcfea('0x27')]=qs[_0xcfea('0x27')](_0x4a7099['query'][_0xcfea('0x27')]);_0x4c6b10[_0xcfea('0x24')]=qs['offset'](_0x4a7099[_0xcfea('0x3b')][_0xcfea('0x24')]);}return _0x1b0a0e[_0xcfea('0x135')](_0x4c6b10);}})[_0xcfea('0x17')](function(_0x2a72cd){if(_0x2a72cd){return _0x2a72cd?{'count':_0x4400e7,'rows':_0x2a72cd}:null;}})[_0xcfea('0x17')](respondWithResult(_0x36218b,null))['catch'](handleError(_0x36218b,null));};
\ No newline at end of file
index 8e4f9e5..721b0c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9221=['hasOwnProperty','exports','../../mysqldb','ChatWebsite','save','update','emit'];(function(_0x5bd426,_0x4878e5){var _0x23a7eb=function(_0x594b42){while(--_0x594b42){_0x5bd426['push'](_0x5bd426['shift']());}};_0x23a7eb(++_0x4878e5);}(_0x9221,0x64));var _0x1922=function(_0x995f33,_0x17fdce){_0x995f33=_0x995f33-0x0;var _0x587aec=_0x9221[_0x995f33];return _0x587aec;};'use strict';var EventEmitter=require('events');var ChatWebsite=require(_0x1922('0x0'))['db'][_0x1922('0x1')];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x1922('0x2'),'afterUpdate':_0x1922('0x3'),'afterDestroy':'remove'};function emitEvent(_0x309b6b){return function(_0x43c8a3,_0x459eee,_0xa19ed6){ChatWebsiteEvents[_0x1922('0x4')](_0x309b6b+':'+_0x43c8a3['id'],_0x43c8a3);ChatWebsiteEvents[_0x1922('0x4')](_0x309b6b,_0x43c8a3);_0xa19ed6(null);};}for(var e in events){if(events[_0x1922('0x5')](e)){var event=events[e];ChatWebsite['hook'](e,emitEvent(event));}}module[_0x1922('0x6')]=ChatWebsiteEvents;
\ No newline at end of file
+var _0x4849=['../../mysqldb','setMaxListeners','save','update','remove','emit','hook','exports','events'];(function(_0x11f22b,_0x500a7c){var _0x27f297=function(_0x26531b){while(--_0x26531b){_0x11f22b['push'](_0x11f22b['shift']());}};_0x27f297(++_0x500a7c);}(_0x4849,0x86));var _0x9484=function(_0x75c068,_0x3eb784){_0x75c068=_0x75c068-0x0;var _0x2bcd00=_0x4849[_0x75c068];return _0x2bcd00;};'use strict';var EventEmitter=require(_0x9484('0x0'));var ChatWebsite=require(_0x9484('0x1'))['db']['ChatWebsite'];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents[_0x9484('0x2')](0x0);var events={'afterCreate':_0x9484('0x3'),'afterUpdate':_0x9484('0x4'),'afterDestroy':_0x9484('0x5')};function emitEvent(_0x1f7bd1){return function(_0x3f3057,_0x6ea4d8,_0x47b8ab){ChatWebsiteEvents[_0x9484('0x6')](_0x1f7bd1+':'+_0x3f3057['id'],_0x3f3057);ChatWebsiteEvents[_0x9484('0x6')](_0x1f7bd1,_0x3f3057);_0x47b8ab(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatWebsite[_0x9484('0x7')](e,emitEvent(event));}}module[_0x9484('0x8')]=ChatWebsiteEvents;
\ No newline at end of file
index 775bcc2..246e6db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x89fa=['util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./chatWebsite.attributes','exports','define','lodash'];(function(_0xedcdc0,_0x224c29){var _0xbeac85=function(_0x3f333b){while(--_0x3f333b){_0xedcdc0['push'](_0xedcdc0['shift']());}};_0xbeac85(++_0x224c29);}(_0x89fa,0x6b));var _0xa89f=function(_0x3de8a4,_0x289a5c){_0x3de8a4=_0x3de8a4-0x0;var _0x4635cf=_0x89fa[_0x3de8a4];return _0x4635cf;};'use strict';var _=require(_0xa89f('0x0'));var util=require(_0xa89f('0x1'));var logger=require(_0xa89f('0x2'))('api');var moment=require(_0xa89f('0x3'));var BPromise=require(_0xa89f('0x4'));var rp=require(_0xa89f('0x5'));var fs=require('fs');var path=require(_0xa89f('0x6'));var rimraf=require(_0xa89f('0x7'));var config=require(_0xa89f('0x8'));var attributes=require(_0xa89f('0x9'));module[_0xa89f('0xa')]=function(_0x2612bd,_0x5db5f4){return _0x2612bd[_0xa89f('0xb')]('ChatWebsite',attributes,{'tableName':'chat_websites','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb082=['api','moment','bluebird','path','rimraf','../../config/environment','./chatWebsite.attributes','exports','define','chat_websites','lodash','util','../../config/logger'];(function(_0x2ad7f4,_0x14bb18){var _0x3a47e4=function(_0x103efd){while(--_0x103efd){_0x2ad7f4['push'](_0x2ad7f4['shift']());}};_0x3a47e4(++_0x14bb18);}(_0xb082,0xe7));var _0x2b08=function(_0x3f1f26,_0x19f435){_0x3f1f26=_0x3f1f26-0x0;var _0x4c1557=_0xb082[_0x3f1f26];return _0x4c1557;};'use strict';var _=require(_0x2b08('0x0'));var util=require(_0x2b08('0x1'));var logger=require(_0x2b08('0x2'))(_0x2b08('0x3'));var moment=require(_0x2b08('0x4'));var BPromise=require(_0x2b08('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2b08('0x6'));var rimraf=require(_0x2b08('0x7'));var config=require(_0x2b08('0x8'));var attributes=require(_0x2b08('0x9'));module[_0x2b08('0xa')]=function(_0x2a7bd0,_0x52d701){return _0x2a7bd0[_0x2b08('0xb')]('ChatWebsite',attributes,{'tableName':_0x2b08('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index aef1ac9..5a15606 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x44cd=['redis','defaults','localhost','request','then','info','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','ChatWebsite,\x20%s,\x20%s','message','catch','lodash','util','moment','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','http'];(function(_0x3957c6,_0x1c9858){var _0x257618=function(_0x2411f2){while(--_0x2411f2){_0x3957c6['push'](_0x3957c6['shift']());}};_0x257618(++_0x1c9858);}(_0x44cd,0x1d1));var _0xd44c=function(_0xa3400,_0x3a980a){_0xa3400=_0xa3400-0x0;var _0x33dba2=_0x44cd[_0xa3400];return _0x33dba2;};'use strict';var _=require(_0xd44c('0x0'));var util=require(_0xd44c('0x1'));var moment=require(_0xd44c('0x2'));var BPromise=require('bluebird');var rs=require(_0xd44c('0x3'));var fs=require('fs');var Redis=require(_0xd44c('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xd44c('0x5'))(_0xd44c('0x6'));var config=require(_0xd44c('0x7'));var jayson=require(_0xd44c('0x8'));var client=jayson['client'][_0xd44c('0x9')]({'port':0x232a});config[_0xd44c('0xa')]=_[_0xd44c('0xb')](config['redis'],{'host':_0xd44c('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xd44c('0xa')]));require('./chatWebsite.socket')['register'](socket);function respondWithRpcPromise(_0x1803d2,_0x2efd7a,_0x3fc3a6){return new BPromise(function(_0x59495e,_0x228774){return client[_0xd44c('0xd')](_0x1803d2,_0x3fc3a6)[_0xd44c('0xe')](function(_0x5b3516){logger[_0xd44c('0xf')]('ChatWebsite,\x20%s,\x20%s',_0x2efd7a,'request\x20sent');logger[_0xd44c('0x10')](_0xd44c('0x11'),_0x2efd7a,_0xd44c('0x12'),JSON[_0xd44c('0x13')](_0x5b3516));if(_0x5b3516[_0xd44c('0x14')]){if(_0x5b3516['error'][_0xd44c('0x15')]===0x1f4){logger[_0xd44c('0x14')](_0xd44c('0x16'),_0x2efd7a,_0x5b3516['error'][_0xd44c('0x17')]);return _0x228774(_0x5b3516[_0xd44c('0x14')]['message']);}logger[_0xd44c('0x14')]('ChatWebsite,\x20%s,\x20%s',_0x2efd7a,_0x5b3516[_0xd44c('0x14')]['message']);return _0x59495e(_0x5b3516[_0xd44c('0x14')][_0xd44c('0x17')]);}else{logger[_0xd44c('0xf')](_0xd44c('0x16'),_0x2efd7a,_0xd44c('0x12'));_0x59495e(_0x5b3516['result'][_0xd44c('0x17')]);}})[_0xd44c('0x18')](function(_0x5612ce){logger[_0xd44c('0x14')]('ChatWebsite,\x20%s,\x20%s',_0x2efd7a,_0x5612ce);_0x228774(_0x5612ce);});});}
\ No newline at end of file
+var _0xa831=['then','ChatWebsite,\x20%s,\x20%s','request\x20sent','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','client','http','redis','defaults','localhost','socket.io-emitter','register','request'];(function(_0x40814b,_0x4384cd){var _0x566cb0=function(_0x13e3a6){while(--_0x13e3a6){_0x40814b['push'](_0x40814b['shift']());}};_0x566cb0(++_0x4384cd);}(_0xa831,0x178));var _0x1a83=function(_0x380307,_0x440ccd){_0x380307=_0x380307-0x0;var _0x9ea14b=_0xa831[_0x380307];return _0x9ea14b;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x1a83('0x0'));var BPromise=require(_0x1a83('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1a83('0x2'));var db=require(_0x1a83('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x1a83('0x4'))(_0x1a83('0x5'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x1a83('0x6')][_0x1a83('0x7')]({'port':0x232a});config[_0x1a83('0x8')]=_[_0x1a83('0x9')](config['redis'],{'host':_0x1a83('0xa'),'port':0x18eb});var socket=require(_0x1a83('0xb'))(new Redis(config[_0x1a83('0x8')]));require('./chatWebsite.socket')[_0x1a83('0xc')](socket);function respondWithRpcPromise(_0x3dd83b,_0x43f181,_0x39dd52){return new BPromise(function(_0xb81afb,_0x14e34a){return client[_0x1a83('0xd')](_0x3dd83b,_0x39dd52)[_0x1a83('0xe')](function(_0x499a25){logger['info'](_0x1a83('0xf'),_0x43f181,_0x1a83('0x10'));logger[_0x1a83('0x11')](_0x1a83('0x12'),_0x43f181,_0x1a83('0x10'),JSON[_0x1a83('0x13')](_0x499a25));if(_0x499a25[_0x1a83('0x14')]){if(_0x499a25['error'][_0x1a83('0x15')]===0x1f4){logger[_0x1a83('0x14')](_0x1a83('0xf'),_0x43f181,_0x499a25['error'][_0x1a83('0x16')]);return _0x14e34a(_0x499a25[_0x1a83('0x14')]['message']);}logger[_0x1a83('0x14')](_0x1a83('0xf'),_0x43f181,_0x499a25[_0x1a83('0x14')][_0x1a83('0x16')]);return _0xb81afb(_0x499a25[_0x1a83('0x14')]['message']);}else{logger[_0x1a83('0x17')](_0x1a83('0xf'),_0x43f181,'request\x20sent');_0xb81afb(_0x499a25[_0x1a83('0x18')]['message']);}})[_0x1a83('0x19')](function(_0xba71bb){logger[_0x1a83('0x14')]('ChatWebsite,\x20%s,\x20%s',_0x43f181,_0xba71bb);_0x14e34a(_0xba71bb);});});}
\ No newline at end of file
index 35af651..dc7b593 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3680=['length','./chatWebsite.events','save','register'];(function(_0x263b5d,_0x30caa4){var _0x450eb6=function(_0x25e1ee){while(--_0x25e1ee){_0x263b5d['push'](_0x263b5d['shift']());}};_0x450eb6(++_0x30caa4);}(_0x3680,0x1d1));var _0x0368=function(_0x5caa0d,_0x15b8d7){_0x5caa0d=_0x5caa0d-0x0;var _0x41656a=_0x3680[_0x5caa0d];return _0x41656a;};'use strict';var ChatWebsiteEvents=require(_0x0368('0x0'));var events=[_0x0368('0x1'),'remove','update'];function createListener(_0x5ab689,_0xdc73fb){return function(_0xf7b87c){_0xdc73fb['emit'](_0x5ab689,_0xf7b87c);};}function removeListener(_0x51a8bb,_0x33f60c){return function(){ChatWebsiteEvents['removeListener'](_0x51a8bb,_0x33f60c);};}exports[_0x0368('0x2')]=function(_0x237603){for(var _0x332d3a=0x0,_0x491938=events[_0x0368('0x3')];_0x332d3a<_0x491938;_0x332d3a++){var _0xdf1607=events[_0x332d3a];var _0x1bfce3=createListener('chatWebsite:'+_0xdf1607,_0x237603);ChatWebsiteEvents['on'](_0xdf1607,_0x1bfce3);}};
\ No newline at end of file
+var _0x9573=['./chatWebsite.events','save','update','emit','length','chatWebsite:'];(function(_0x4fc9e6,_0xc51915){var _0x551d28=function(_0x1a603b){while(--_0x1a603b){_0x4fc9e6['push'](_0x4fc9e6['shift']());}};_0x551d28(++_0xc51915);}(_0x9573,0x12c));var _0x3957=function(_0x491619,_0x4f10f4){_0x491619=_0x491619-0x0;var _0x56e5c0=_0x9573[_0x491619];return _0x56e5c0;};'use strict';var ChatWebsiteEvents=require(_0x3957('0x0'));var events=[_0x3957('0x1'),'remove',_0x3957('0x2')];function createListener(_0x3bfad4,_0x5c6e84){return function(_0x23ba46){_0x5c6e84[_0x3957('0x3')](_0x3bfad4,_0x23ba46);};}function removeListener(_0x289867,_0x5b5016){return function(){ChatWebsiteEvents['removeListener'](_0x289867,_0x5b5016);};}exports['register']=function(_0x19af41){for(var _0x2d3d42=0x0,_0x12ec4b=events[_0x3957('0x4')];_0x2d3d42<_0x12ec4b;_0x2d3d42++){var _0x2408fb=events[_0x2d3d42];var _0x1dd61a=createListener(_0x3957('0x5')+_0x2408fb,_0x19af41);ChatWebsiteEvents['on'](_0x2408fb,_0x1dd61a);}};
\ No newline at end of file
index eeeafc2..6d30a47 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe827=['path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatWebsite.controller','get','isAuthenticated','index','describe','/:id','/:id/dispositions','getDispositions','/:id/canned_answers','/:id/logo','/:id/avatar','/:id/customer_avatar','/:id/system_avatar','getInteractions','/:id/snippet','getSnippet','/:id/applications','getProactiveActions','getFields','/:id/offline_messages','getOfflineMessages','/:id/users','getAgents','post','create','diskStorage','server/files/images/logos/','format','%s-%s','now','file','join','root','server/files/images/avatars/','originalname','single','addAvatar','addCustomerAvatar','/:id/notify','server/files','attachments','offline-chat','ensureDir','replace','extname','/:id/offline','any','offline','/:id/interactions','addInteraction','/:id/proactive_actions','addProactiveActions','addAgents','put','update','delete','destroy','removeDispositions','removeAgents','multer'];(function(_0x3bc298,_0x583d14){var _0x31bf58=function(_0x24563b){while(--_0x24563b){_0x3bc298['push'](_0x3bc298['shift']());}};_0x31bf58(++_0x583d14);}(_0xe827,0x1c6));var _0x7e82=function(_0x20e2f9,_0x49bf77){_0x20e2f9=_0x20e2f9-0x0;var _0x431048=_0xe827[_0x20e2f9];return _0x431048;};'use strict';var multer=require(_0x7e82('0x0'));var util=require('util');var path=require(_0x7e82('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x7e82('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x7e82('0x3'));var interaction=require(_0x7e82('0x4'));var config=require(_0x7e82('0x5'));var controller=require(_0x7e82('0x6'));router[_0x7e82('0x7')]('/',auth[_0x7e82('0x8')](),controller[_0x7e82('0x9')]);router[_0x7e82('0x7')]('/describe',auth['isAuthenticated'](),controller[_0x7e82('0xa')]);router[_0x7e82('0x7')](_0x7e82('0xb'),auth['isAuthenticated'](),controller['show']);router[_0x7e82('0x7')](_0x7e82('0xc'),auth[_0x7e82('0x8')](),controller[_0x7e82('0xd')]);router[_0x7e82('0x7')](_0x7e82('0xe'),auth[_0x7e82('0x8')](),controller['getAnswers']);router[_0x7e82('0x7')](_0x7e82('0xf'),controller['getLogo']);router[_0x7e82('0x7')](_0x7e82('0x10'),controller['getAvatar']);router[_0x7e82('0x7')](_0x7e82('0x11'),controller['getCustomerAvatar']);router[_0x7e82('0x7')](_0x7e82('0x12'),controller['getSystemAvatar']);router[_0x7e82('0x7')]('/:id/interactions',auth['isAuthenticated'](),controller[_0x7e82('0x13')]);router['get'](_0x7e82('0x14'),controller[_0x7e82('0x15')]);router[_0x7e82('0x7')](_0x7e82('0x16'),auth['isAuthenticated'](),controller['getApplications']);router[_0x7e82('0x7')]('/:id/proactive_actions',auth['isAuthenticated'](),controller[_0x7e82('0x17')]);router['get']('/:id/fields',controller[_0x7e82('0x18')]);router[_0x7e82('0x7')](_0x7e82('0x19'),auth[_0x7e82('0x8')](),controller[_0x7e82('0x1a')]);router['get'](_0x7e82('0x1b'),auth[_0x7e82('0x8')](),controller[_0x7e82('0x1c')]);router[_0x7e82('0x1d')]('/',auth[_0x7e82('0x8')](),controller[_0x7e82('0x1e')]);router[_0x7e82('0x1d')](_0x7e82('0xc'),auth[_0x7e82('0x8')](),controller['addDisposition']);router['post'](_0x7e82('0xe'),auth[_0x7e82('0x8')](),controller['addAnswer']);var upload=multer({'storage':multer[_0x7e82('0x1f')]({'destination':function(_0x5c1d2e,_0x3fc6fb,_0x12c2fc){_0x12c2fc(null,path['join'](config['root'],_0x7e82('0x20')));},'filename':function(_0x16a3a1,_0x2c9bec,_0x4190b3){_0x4190b3(null,util[_0x7e82('0x21')](_0x7e82('0x22'),Date[_0x7e82('0x23')](),_0x2c9bec['originalname']));}})});router[_0x7e82('0x1d')](_0x7e82('0xf'),upload['single'](_0x7e82('0x24')),controller['addLogo']);var upload=multer({'storage':multer[_0x7e82('0x1f')]({'destination':function(_0x4df028,_0x6d2194,_0x1769ce){_0x1769ce(null,path[_0x7e82('0x25')](config[_0x7e82('0x26')],_0x7e82('0x27')));},'filename':function(_0x198c3e,_0x52050d,_0x5b8c77){_0x5b8c77(null,util[_0x7e82('0x21')](_0x7e82('0x22'),Date[_0x7e82('0x23')](),_0x52050d[_0x7e82('0x28')]));}})});router[_0x7e82('0x1d')]('/:id/avatar',upload[_0x7e82('0x29')](_0x7e82('0x24')),controller[_0x7e82('0x2a')]);var upload=multer({'storage':multer[_0x7e82('0x1f')]({'destination':function(_0x15d54a,_0x145fab,_0x21db76){_0x21db76(null,path[_0x7e82('0x25')](config['root'],_0x7e82('0x27')));},'filename':function(_0x4b8a21,_0x196217,_0x4c8994){_0x4c8994(null,util['format'](_0x7e82('0x22'),Date[_0x7e82('0x23')](),_0x196217[_0x7e82('0x28')]));}})});router[_0x7e82('0x1d')](_0x7e82('0x11'),upload['single']('file'),controller[_0x7e82('0x2b')]);var upload=multer({'storage':multer[_0x7e82('0x1f')]({'destination':function(_0x1e309d,_0x44e4cf,_0x5c1858){_0x5c1858(null,path[_0x7e82('0x25')](config[_0x7e82('0x26')],_0x7e82('0x27')));},'filename':function(_0x65c638,_0xc5c87,_0x163810){_0x163810(null,util['format'](_0x7e82('0x22'),Date[_0x7e82('0x23')](),_0xc5c87[_0x7e82('0x28')]));}})});router['post']('/:id/system_avatar',upload[_0x7e82('0x29')]('file'),controller['addSystemAvatar']);router['post'](_0x7e82('0x2c'),controller['notify']);const offlineUploadMulter=multer({'storage':multer[_0x7e82('0x1f')]({'destination':function(_0x3f5edf,_0x381b4d,_0x302520){const _0x266b96=path[_0x7e82('0x25')](config[_0x7e82('0x26')],_0x7e82('0x2d'),_0x7e82('0x2e'),_0x7e82('0x2f'));fs_extra[_0x7e82('0x30')](_0x266b96,function(){_0x302520(null,_0x266b96);});},'filename':function(_0x402c20,_0x3e4500,_0x477ab9){const _0x293b25=_0x3e4500['originalname'][_0x7e82('0x31')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');const _0x373d65=path[_0x7e82('0x32')](_0x293b25);const _0x4f3d80=Date[_0x7e82('0x23')]()+'-'+_0x293b25[_0x7e82('0x31')](_0x373d65,'')+_0x373d65;_0x477ab9(null,_0x4f3d80);}})});router[_0x7e82('0x1d')](_0x7e82('0x33'),offlineUploadMulter[_0x7e82('0x34')](),controller[_0x7e82('0x35')]);router['post'](_0x7e82('0x36'),auth[_0x7e82('0x8')](),controller[_0x7e82('0x37')]);router[_0x7e82('0x1d')](_0x7e82('0x16'),auth[_0x7e82('0x8')](),controller['addApplications']);router[_0x7e82('0x1d')](_0x7e82('0x38'),auth['isAuthenticated'](),controller[_0x7e82('0x39')]);router['post'](_0x7e82('0x1b'),auth[_0x7e82('0x8')](),controller[_0x7e82('0x3a')]);router[_0x7e82('0x3b')]('/:id',auth['isAuthenticated'](),controller[_0x7e82('0x3c')]);router[_0x7e82('0x3d')](_0x7e82('0xb'),auth[_0x7e82('0x8')](),controller[_0x7e82('0x3e')]);router[_0x7e82('0x3d')]('/:id/dispositions',auth['isAuthenticated'](),controller[_0x7e82('0x3f')]);router[_0x7e82('0x3d')]('/:id/canned_answers',auth[_0x7e82('0x8')](),controller['removeAnswers']);router[_0x7e82('0x3d')]('/:id/users',auth['isAuthenticated'](),controller[_0x7e82('0x40')]);module['exports']=router;
\ No newline at end of file
+var _0xb56f=['removeDispositions','removeAgents','multer','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./chatWebsite.controller','get','index','/describe','isAuthenticated','describe','/:id','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/logo','getLogo','/:id/avatar','getAvatar','/:id/customer_avatar','getCustomerAvatar','/:id/system_avatar','getSystemAvatar','getInteractions','/:id/snippet','getSnippet','getApplications','/:id/proactive_actions','getProactiveActions','getFields','/:id/offline_messages','getOfflineMessages','getAgents','post','create','addDisposition','addAnswer','diskStorage','join','root','server/files/images/logos/','%s-%s','now','originalname','addLogo','server/files/images/avatars/','format','single','file','addAvatar','addSystemAvatar','/:id/notify','server/files','attachments','offline-chat','ensureDir','replace','extname','offline','/:id/interactions','addInteraction','/:id/applications','addProactiveActions','/:id/users','addAgents','put','update','delete','destroy'];(function(_0x82129b,_0x484ae9){var _0x2ae5dc=function(_0x299e34){while(--_0x299e34){_0x82129b['push'](_0x82129b['shift']());}};_0x2ae5dc(++_0x484ae9);}(_0xb56f,0x174));var _0xfb56=function(_0x389f47,_0x24f92b){_0x389f47=_0x389f47-0x0;var _0x5d7b83=_0xb56f[_0x389f47];return _0x5d7b83;};'use strict';var multer=require(_0xfb56('0x0'));var util=require('util');var path=require(_0xfb56('0x1'));var timeout=require(_0xfb56('0x2'));var express=require(_0xfb56('0x3'));var router=express[_0xfb56('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xfb56('0x5'));var interaction=require(_0xfb56('0x6'));var config=require('../../config/environment');var controller=require(_0xfb56('0x7'));router[_0xfb56('0x8')]('/',auth['isAuthenticated'](),controller[_0xfb56('0x9')]);router[_0xfb56('0x8')](_0xfb56('0xa'),auth[_0xfb56('0xb')](),controller[_0xfb56('0xc')]);router[_0xfb56('0x8')](_0xfb56('0xd'),auth[_0xfb56('0xb')](),controller['show']);router[_0xfb56('0x8')](_0xfb56('0xe'),auth[_0xfb56('0xb')](),controller[_0xfb56('0xf')]);router[_0xfb56('0x8')](_0xfb56('0x10'),auth['isAuthenticated'](),controller[_0xfb56('0x11')]);router[_0xfb56('0x8')](_0xfb56('0x12'),controller[_0xfb56('0x13')]);router['get'](_0xfb56('0x14'),controller[_0xfb56('0x15')]);router['get'](_0xfb56('0x16'),controller[_0xfb56('0x17')]);router[_0xfb56('0x8')](_0xfb56('0x18'),controller[_0xfb56('0x19')]);router[_0xfb56('0x8')]('/:id/interactions',auth[_0xfb56('0xb')](),controller[_0xfb56('0x1a')]);router['get'](_0xfb56('0x1b'),controller[_0xfb56('0x1c')]);router[_0xfb56('0x8')]('/:id/applications',auth['isAuthenticated'](),controller[_0xfb56('0x1d')]);router[_0xfb56('0x8')](_0xfb56('0x1e'),auth[_0xfb56('0xb')](),controller[_0xfb56('0x1f')]);router['get']('/:id/fields',controller[_0xfb56('0x20')]);router['get'](_0xfb56('0x21'),auth[_0xfb56('0xb')](),controller[_0xfb56('0x22')]);router[_0xfb56('0x8')]('/:id/users',auth[_0xfb56('0xb')](),controller[_0xfb56('0x23')]);router[_0xfb56('0x24')]('/',auth['isAuthenticated'](),controller[_0xfb56('0x25')]);router[_0xfb56('0x24')](_0xfb56('0xe'),auth[_0xfb56('0xb')](),controller[_0xfb56('0x26')]);router[_0xfb56('0x24')](_0xfb56('0x10'),auth[_0xfb56('0xb')](),controller[_0xfb56('0x27')]);var upload=multer({'storage':multer[_0xfb56('0x28')]({'destination':function(_0x846d3a,_0x575726,_0x297aff){_0x297aff(null,path[_0xfb56('0x29')](config[_0xfb56('0x2a')],_0xfb56('0x2b')));},'filename':function(_0x189739,_0x5da967,_0x41c625){_0x41c625(null,util['format'](_0xfb56('0x2c'),Date[_0xfb56('0x2d')](),_0x5da967[_0xfb56('0x2e')]));}})});router['post'](_0xfb56('0x12'),upload['single']('file'),controller[_0xfb56('0x2f')]);var upload=multer({'storage':multer[_0xfb56('0x28')]({'destination':function(_0x2245b3,_0x4b2a3c,_0x1c103f){_0x1c103f(null,path['join'](config['root'],_0xfb56('0x30')));},'filename':function(_0x1c0f69,_0x5b7d9e,_0x36b7aa){_0x36b7aa(null,util[_0xfb56('0x31')]('%s-%s',Date[_0xfb56('0x2d')](),_0x5b7d9e['originalname']));}})});router[_0xfb56('0x24')]('/:id/avatar',upload[_0xfb56('0x32')](_0xfb56('0x33')),controller[_0xfb56('0x34')]);var upload=multer({'storage':multer[_0xfb56('0x28')]({'destination':function(_0x40cfee,_0x5c257f,_0x6b3d80){_0x6b3d80(null,path[_0xfb56('0x29')](config[_0xfb56('0x2a')],'server/files/images/avatars/'));},'filename':function(_0x2c40f6,_0x22a309,_0x1179d6){_0x1179d6(null,util[_0xfb56('0x31')](_0xfb56('0x2c'),Date[_0xfb56('0x2d')](),_0x22a309[_0xfb56('0x2e')]));}})});router[_0xfb56('0x24')]('/:id/customer_avatar',upload['single'](_0xfb56('0x33')),controller['addCustomerAvatar']);var upload=multer({'storage':multer[_0xfb56('0x28')]({'destination':function(_0x4c1b85,_0x362bad,_0x1d63a5){_0x1d63a5(null,path[_0xfb56('0x29')](config['root'],_0xfb56('0x30')));},'filename':function(_0x17ca24,_0x381571,_0x42b73a){_0x42b73a(null,util[_0xfb56('0x31')]('%s-%s',Date[_0xfb56('0x2d')](),_0x381571[_0xfb56('0x2e')]));}})});router[_0xfb56('0x24')](_0xfb56('0x18'),upload['single'](_0xfb56('0x33')),controller[_0xfb56('0x35')]);router[_0xfb56('0x24')](_0xfb56('0x36'),controller['notify']);const offlineUploadMulter=multer({'storage':multer['diskStorage']({'destination':function(_0x5e438b,_0x1bcf8f,_0x181c06){const _0x3f4a38=path['join'](config[_0xfb56('0x2a')],_0xfb56('0x37'),_0xfb56('0x38'),_0xfb56('0x39'));fs_extra[_0xfb56('0x3a')](_0x3f4a38,function(){_0x181c06(null,_0x3f4a38);});},'filename':function(_0x8ee6f4,_0x26544c,_0x205f8e){const _0x4f746c=_0x26544c['originalname'][_0xfb56('0x3b')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');const _0x276c81=path[_0xfb56('0x3c')](_0x4f746c);const _0x15de8d=Date['now']()+'-'+_0x4f746c[_0xfb56('0x3b')](_0x276c81,'')+_0x276c81;_0x205f8e(null,_0x15de8d);}})});router['post']('/:id/offline',offlineUploadMulter['any'](),controller[_0xfb56('0x3d')]);router[_0xfb56('0x24')](_0xfb56('0x3e'),auth[_0xfb56('0xb')](),controller[_0xfb56('0x3f')]);router[_0xfb56('0x24')](_0xfb56('0x40'),auth[_0xfb56('0xb')](),controller['addApplications']);router[_0xfb56('0x24')](_0xfb56('0x1e'),auth[_0xfb56('0xb')](),controller[_0xfb56('0x41')]);router[_0xfb56('0x24')](_0xfb56('0x42'),auth[_0xfb56('0xb')](),controller[_0xfb56('0x43')]);router[_0xfb56('0x44')]('/:id',auth[_0xfb56('0xb')](),controller[_0xfb56('0x45')]);router[_0xfb56('0x46')](_0xfb56('0xd'),auth[_0xfb56('0xb')](),controller[_0xfb56('0x47')]);router[_0xfb56('0x46')](_0xfb56('0xe'),auth['isAuthenticated'](),controller[_0xfb56('0x48')]);router[_0xfb56('0x46')](_0xfb56('0x10'),auth[_0xfb56('0xb')](),controller['removeAnswers']);router[_0xfb56('0x46')]('/:id/users',auth[_0xfb56('0xb')](),controller[_0xfb56('0x49')]);module['exports']=router;
\ No newline at end of file
index d12ef3f..b5b5d33 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf9d=['express','../config/environment','Router','env','production','app','get','client-side-logger','Client-Side\x20logger\x20not\x20found!','/client-logs'];(function(_0x596dc6,_0x20d6ca){var _0x635c55=function(_0x4fc4f5){while(--_0x4fc4f5){_0x596dc6['push'](_0x596dc6['shift']());}};_0x635c55(++_0x20d6ca);}(_0xcf9d,0x1b8));var _0xdcf9=function(_0xf2e8fc,_0x350b4f){_0xf2e8fc=_0xf2e8fc-0x0;var _0x4c0466=_0xcf9d[_0xf2e8fc];return _0x4c0466;};var beaverLogger=require('beaver-logger/server');var express=require(_0xdcf9('0x0'));var auth=require('../components/auth/service');var config=require(_0xdcf9('0x1'));var router=express[_0xdcf9('0x2')]();var isProduction=config[_0xdcf9('0x3')]===_0xdcf9('0x4')||![];function clientSideLogs(_0x43e82d,_0x3cbc44,_0x4fa76b){var _0x50ab87=_0x43e82d[_0xdcf9('0x5')][_0xdcf9('0x6')](_0xdcf9('0x7'));if(!_0x50ab87){throw new Error(_0xdcf9('0x8'));}return beaverLogger['expressEndpoint']({'uri':_0xdcf9('0x9'),'logger':_0x50ab87,'enableCors':!isProduction})(_0x43e82d,_0x3cbc44,_0x4fa76b);}router['use'](auth['isAuthenticated'](),clientSideLogs);module['exports']=router;
\ No newline at end of file
+var _0xc0fb=['use','isAuthenticated','exports','../components/auth/service','Router','env','production','app','get','client-side-logger','Client-Side\x20logger\x20not\x20found!','expressEndpoint'];(function(_0x57096d,_0x15799e){var _0x7c7c44=function(_0x49a40b){while(--_0x49a40b){_0x57096d['push'](_0x57096d['shift']());}};_0x7c7c44(++_0x15799e);}(_0xc0fb,0x19b));var _0xbc0f=function(_0x951b5d,_0x2feee6){_0x951b5d=_0x951b5d-0x0;var _0x3fe65d=_0xc0fb[_0x951b5d];return _0x3fe65d;};var beaverLogger=require('beaver-logger/server');var express=require('express');var auth=require(_0xbc0f('0x0'));var config=require('../config/environment');var router=express[_0xbc0f('0x1')]();var isProduction=config[_0xbc0f('0x2')]===_0xbc0f('0x3')||![];function clientSideLogs(_0x41a30d,_0x46e428,_0x3dd95c){var _0x4b297f=_0x41a30d[_0xbc0f('0x4')][_0xbc0f('0x5')](_0xbc0f('0x6'));if(!_0x4b297f){throw new Error(_0xbc0f('0x7'));}return beaverLogger[_0xbc0f('0x8')]({'uri':'/client-logs','logger':_0x4b297f,'enableCors':!isProduction})(_0x41a30d,_0x46e428,_0x3dd95c);}router[_0xbc0f('0x9')](auth[_0xbc0f('0xa')](),clientSideLogs);module[_0xbc0f('0xb')]=router;
\ No newline at end of file
index 2a1f71e..505bb84 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd9e3=['Dynamics365','MicrosoftAzure\x20=>\x20client_id','MicrosoftAzure\x20=>\x20tenant','MicrosoftAzure\x20=>\x20redirect_uri','TEXT','MicrosoftAzure\x20=>\x20access_token','MicrosoftAzure\x20=>\x20refresh_token','MicrosoftAzure\x20=>\x20Dynamics365\x20=>\x20remote_uri','sequelize','exports','STRING','ENUM','AmazonAWS','Google','MicrosoftAzure','Outlook365'];(function(_0x3a4544,_0x107e33){var _0x448249=function(_0x2c61cc){while(--_0x2c61cc){_0x3a4544['push'](_0x3a4544['shift']());}};_0x448249(++_0x107e33);}(_0xd9e3,0xb8));var _0x3d9e=function(_0x5199d7,_0x62502c){_0x5199d7=_0x5199d7-0x0;var _0x3d77e5=_0xd9e3[_0x5199d7];return _0x3d77e5;};'use strict';var Sequelize=require(_0x3d9e('0x0'));module[_0x3d9e('0x1')]={'name':{'type':Sequelize[_0x3d9e('0x2')],'allowNull':![],'validate':{'notEmpty':!![]}},'service':{'type':Sequelize[_0x3d9e('0x3')](_0x3d9e('0x4'),_0x3d9e('0x5'),_0x3d9e('0x6')),'allowNull':![],'validate':{'notEmpty':!![]}},'type':{'type':Sequelize[_0x3d9e('0x3')](_0x3d9e('0x7'),_0x3d9e('0x8'))},'data1':{'type':Sequelize[_0x3d9e('0x2')],'comment':_0x3d9e('0x9')},'data2':{'type':Sequelize[_0x3d9e('0x2')],'comment':_0x3d9e('0xa')},'data3':{'type':Sequelize[_0x3d9e('0x2')],'comment':'MicrosoftAzure\x20=>\x20client_secret'},'data4':{'type':Sequelize[_0x3d9e('0x2')],'comment':_0x3d9e('0xb')},'data5':{'type':Sequelize[_0x3d9e('0xc')],'comment':_0x3d9e('0xd')},'data6':{'type':Sequelize[_0x3d9e('0xc')],'comment':_0x3d9e('0xe')},'data7':{'type':Sequelize[_0x3d9e('0xc')],'comment':_0x3d9e('0xf')}};
\ No newline at end of file
+var _0x8320=['MicrosoftAzure','Outlook365','Dynamics365','MicrosoftAzure\x20=>\x20client_id','MicrosoftAzure\x20=>\x20client_secret','MicrosoftAzure\x20=>\x20redirect_uri','TEXT','MicrosoftAzure\x20=>\x20access_token','MicrosoftAzure\x20=>\x20refresh_token','MicrosoftAzure\x20=>\x20Dynamics365\x20=>\x20remote_uri','exports','STRING','ENUM','AmazonAWS','Google'];(function(_0x992931,_0x9e1606){var _0x4a58f2=function(_0x4b96ff){while(--_0x4b96ff){_0x992931['push'](_0x992931['shift']());}};_0x4a58f2(++_0x9e1606);}(_0x8320,0xcd));var _0x0832=function(_0x1ee351,_0x54261b){_0x1ee351=_0x1ee351-0x0;var _0x245aaf=_0x8320[_0x1ee351];return _0x245aaf;};'use strict';var Sequelize=require('sequelize');module[_0x0832('0x0')]={'name':{'type':Sequelize[_0x0832('0x1')],'allowNull':![],'validate':{'notEmpty':!![]}},'service':{'type':Sequelize[_0x0832('0x2')](_0x0832('0x3'),_0x0832('0x4'),_0x0832('0x5')),'allowNull':![],'validate':{'notEmpty':!![]}},'type':{'type':Sequelize[_0x0832('0x2')](_0x0832('0x6'),_0x0832('0x7'))},'data1':{'type':Sequelize[_0x0832('0x1')],'comment':_0x0832('0x8')},'data2':{'type':Sequelize[_0x0832('0x1')],'comment':'MicrosoftAzure\x20=>\x20tenant'},'data3':{'type':Sequelize['STRING'],'comment':_0x0832('0x9')},'data4':{'type':Sequelize['STRING'],'comment':_0x0832('0xa')},'data5':{'type':Sequelize[_0x0832('0xb')],'comment':_0x0832('0xc')},'data6':{'type':Sequelize['TEXT'],'comment':_0x0832('0xd')},'data7':{'type':Sequelize['TEXT'],'comment':_0x0832('0xe')}};
\ No newline at end of file
index e6a0d9d..3dcf554 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc3d1=['type','options','count','includeAll','CloudProvider','findAll','service','MicrosoftAzure','data3','catch','params','keys','length','include','find','decryptString','create','body','Name\x20parameter\x20not\x20specified','Service\x20parameter\x20not\x20specified','values','includes','Invalid\x20service\x20parameter.\x20Allowed\x20values:\x20','join','encryptString','oauth2MicrosoftAuthorize','findOne','generateMicrosoftAuthorizationUrl','user','oauth2MicrosoftCallback','error','get','Invalid\x20state\x20parameter','parse','state','base64','toString','ascii','isValidIdToken','id_token','oauth2Claims','del','code','data5','access_token','refresh_token','data6','startRefreshInterval','emit','microsoftAuthorization:success','Invalid\x20authentication\x20state\x20parameter','message','Authentication\x20failed\x20for\x20cloud\x20provider\x20#%s,\x20err:%s','lodash','ioredis','../../components/encryptor','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','sendStatus','status','end','json','limit','undefined','offset','set','Content-Range','update','then','destroy','stack','name','send','padEnd','slice','index','rawAttributes','model','query','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','map'];(function(_0x15e634,_0x28558e){var _0x4d5d95=function(_0x5c3a6f){while(--_0x5c3a6f){_0x15e634['push'](_0x15e634['shift']());}};_0x4d5d95(++_0x28558e);}(_0xc3d1,0xf1));var _0x1c3d=function(_0x333800,_0x4b804f){_0x333800=_0x333800-0x0;var _0x378ac8=_0xc3d1[_0x333800];return _0x378ac8;};'use strict';var _=require(_0x1c3d('0x0'));var Redis=require(_0x1c3d('0x1'));var qs=require('../../components/parsers/qs');var encryptor=require(_0x1c3d('0x2'));var config=require(_0x1c3d('0x3'));var logger=require('../../config/logger')('api');var db=require(_0x1c3d('0x4'))['db'];var oauth=require('./cloudProvider.oauth');config['redis']=_['defaults'](config[_0x1c3d('0x5')],{'host':_0x1c3d('0x6'),'port':0x18eb});var socket=require(_0x1c3d('0x7'))(new Redis(config[_0x1c3d('0x5')]));var redis=new Redis(config[_0x1c3d('0x5')]);function respondWithStatusCode(_0x6842c1,_0x431dfd){_0x431dfd=_0x431dfd||0xcc;return function(_0x4b2aaa){if(_0x4b2aaa){return _0x6842c1[_0x1c3d('0x8')](_0x431dfd);}return _0x6842c1[_0x1c3d('0x9')](_0x431dfd)[_0x1c3d('0xa')]();};}function respondWithResult(_0x2d5917,_0x2ae053){_0x2ae053=_0x2ae053||0xc8;return function(_0xbc05af){if(_0xbc05af){return _0x2d5917[_0x1c3d('0x9')](_0x2ae053)[_0x1c3d('0xb')](_0xbc05af);}};}function respondWithFilteredResult(_0x2f0110,_0x147a1b){return function(_0x34358f){if(_0x34358f){var _0x43b4be=typeof _0x147a1b['offset']==='undefined'&&typeof _0x147a1b[_0x1c3d('0xc')]===_0x1c3d('0xd');var _0x1a7a06=_0x34358f['count'];var _0x3a1829=_0x43b4be?0x0:_0x147a1b[_0x1c3d('0xe')];var _0x1a7376=_0x43b4be?_0x34358f['count']:_0x147a1b[_0x1c3d('0xe')]+_0x147a1b[_0x1c3d('0xc')];var _0x137f65;if(_0x1a7376>=_0x1a7a06){_0x1a7376=_0x1a7a06;_0x137f65=0xc8;}else{_0x137f65=0xce;}_0x2f0110[_0x1c3d('0x9')](_0x137f65);return _0x2f0110[_0x1c3d('0xf')](_0x1c3d('0x10'),_0x3a1829+'-'+_0x1a7376+'/'+_0x1a7a06)[_0x1c3d('0xb')](_0x34358f);}return null;};}function saveUpdates(_0x201346){return function(_0x5ef8a8){if(_0x5ef8a8){return _0x5ef8a8[_0x1c3d('0x11')](_0x201346)[_0x1c3d('0x12')](function(_0x1c42db){return _0x1c42db;});}return null;};}function removeEntity(_0xb916fb){return function(_0x3ec20f){if(_0x3ec20f){return _0x3ec20f[_0x1c3d('0x13')]()['then'](function(){_0xb916fb[_0x1c3d('0x9')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2ba60a){return function(_0x7c872f){if(!_0x7c872f){_0x2ba60a['sendStatus'](0x194);}return _0x7c872f;};}function handleError(_0x54c338,_0x1f7023){_0x1f7023=_0x1f7023||0x1f4;return function(_0x17cdc4){logger['error'](_0x17cdc4[_0x1c3d('0x14')]);if(_0x17cdc4[_0x1c3d('0x15')]){delete _0x17cdc4[_0x1c3d('0x15')];}_0x54c338[_0x1c3d('0x9')](_0x1f7023)[_0x1c3d('0x16')](_0x17cdc4);};}function maskClientSecret(_0x3f9dd4){return _[_0x1c3d('0x17')](_0x3f9dd4[_0x1c3d('0x18')](0x0,0x3),0x14,'*');}exports[_0x1c3d('0x19')]=function(_0x1e8e45,_0x58896c){var _0x4ff226={},_0x3ce43={},_0x4f0c84={'count':0x0,'rows':[]};var _0x222751=_['map'](db['CloudProvider'][_0x1c3d('0x1a')],function(_0x433ce4){return{'name':_0x433ce4['fieldName'],'type':_0x433ce4['type']['key']};});_0x3ce43[_0x1c3d('0x1b')]=_['map'](_0x222751,'name');_0x3ce43[_0x1c3d('0x1c')]=_['keys'](_0x1e8e45[_0x1c3d('0x1c')]);_0x3ce43['filters']=_[_0x1c3d('0x1d')](_0x3ce43['model'],_0x3ce43[_0x1c3d('0x1c')]);_0x4ff226[_0x1c3d('0x1e')]=_[_0x1c3d('0x1d')](_0x3ce43['model'],qs[_0x1c3d('0x1f')](_0x1e8e45['query']['fields']));_0x4ff226['attributes']=_0x4ff226[_0x1c3d('0x1e')]['length']?_0x4ff226[_0x1c3d('0x1e')]:_0x3ce43[_0x1c3d('0x1b')];if(!_0x1e8e45['query'][_0x1c3d('0x20')](_0x1c3d('0x21'))){_0x4ff226[_0x1c3d('0xc')]=qs[_0x1c3d('0xc')](_0x1e8e45['query'][_0x1c3d('0xc')]);_0x4ff226['offset']=qs[_0x1c3d('0xe')](_0x1e8e45[_0x1c3d('0x1c')]['offset']);}_0x4ff226[_0x1c3d('0x22')]=qs[_0x1c3d('0x23')](_0x1e8e45[_0x1c3d('0x1c')][_0x1c3d('0x23')]);_0x4ff226[_0x1c3d('0x24')]=qs[_0x1c3d('0x25')](_[_0x1c3d('0x26')](_0x1e8e45[_0x1c3d('0x1c')],_0x3ce43[_0x1c3d('0x25')]),_0x222751);if(_0x1e8e45[_0x1c3d('0x1c')][_0x1c3d('0x27')]){_0x4ff226[_0x1c3d('0x24')]=_['merge'](_0x4ff226['where'],{'$or':_[_0x1c3d('0x28')](_0x222751,function(_0x347b78){if(_0x347b78[_0x1c3d('0x29')]!=='VIRTUAL'){var _0x3e3dbb={};_0x3e3dbb[_0x347b78[_0x1c3d('0x15')]]={'$like':'%'+_0x1e8e45['query'][_0x1c3d('0x27')]+'%'};return _0x3e3dbb;}})});}_0x4ff226=_['merge']({},_0x4ff226,_0x1e8e45[_0x1c3d('0x2a')]);var _0xc0e4c8={'where':_0x4ff226[_0x1c3d('0x24')]};return db['CloudProvider'][_0x1c3d('0x2b')](_0xc0e4c8)[_0x1c3d('0x12')](function(_0x14db9e){_0x4f0c84[_0x1c3d('0x2b')]=_0x14db9e;if(_0x1e8e45[_0x1c3d('0x1c')][_0x1c3d('0x2c')]){_0x4ff226['include']=[{'all':!![]}];}return db[_0x1c3d('0x2d')][_0x1c3d('0x2e')](_0x4ff226);})[_0x1c3d('0x12')](function(_0x26e1c3){_0x4f0c84['rows']=_['map'](_0x26e1c3,function(_0x8bc85c){if(_0x8bc85c[_0x1c3d('0x2f')]===_0x1c3d('0x30')){var _0x4f89c1=encryptor['decryptString'](_0x8bc85c[_0x1c3d('0x31')]);_0x8bc85c[_0x1c3d('0x31')]=maskClientSecret(_0x4f89c1);}return _0x8bc85c;});return _0x4f0c84;})[_0x1c3d('0x12')](respondWithFilteredResult(_0x58896c,_0x4ff226))[_0x1c3d('0x32')](handleError(_0x58896c,null));};exports['show']=function(_0xfca041,_0x1a0b02){var _0x2b2143={'raw':!![],'where':{'id':_0xfca041[_0x1c3d('0x33')]['id']}},_0x2f422b={};_0x2f422b[_0x1c3d('0x1b')]=_[_0x1c3d('0x34')](db[_0x1c3d('0x2d')][_0x1c3d('0x1a')]);_0x2f422b[_0x1c3d('0x1c')]=_['keys'](_0xfca041[_0x1c3d('0x1c')]);_0x2f422b[_0x1c3d('0x25')]=_[_0x1c3d('0x1d')](_0x2f422b['model'],_0x2f422b[_0x1c3d('0x1c')]);_0x2b2143[_0x1c3d('0x1e')]=_['intersection'](_0x2f422b[_0x1c3d('0x1b')],qs[_0x1c3d('0x1f')](_0xfca041[_0x1c3d('0x1c')]['fields']));_0x2b2143[_0x1c3d('0x1e')]=_0x2b2143[_0x1c3d('0x1e')][_0x1c3d('0x35')]?_0x2b2143[_0x1c3d('0x1e')]:_0x2f422b[_0x1c3d('0x1b')];if(_0xfca041[_0x1c3d('0x1c')]['includeAll']){_0x2b2143[_0x1c3d('0x36')]=[{'all':!![]}];}_0x2b2143=_['merge']({},_0x2b2143,_0xfca041[_0x1c3d('0x2a')]);return db[_0x1c3d('0x2d')][_0x1c3d('0x37')](_0x2b2143)['then'](handleEntityNotFound(_0x1a0b02,null))[_0x1c3d('0x12')](function(_0xa3608a){if(_0xa3608a[_0x1c3d('0x2f')]===_0x1c3d('0x30')){var _0xe4680f=encryptor[_0x1c3d('0x38')](_0xa3608a['data3']);_0xa3608a[_0x1c3d('0x31')]=maskClientSecret(_0xe4680f);}return _0xa3608a;})[_0x1c3d('0x12')](respondWithResult(_0x1a0b02,null))[_0x1c3d('0x32')](handleError(_0x1a0b02,null));};exports[_0x1c3d('0x39')]=function(_0x50cb3b,_0x535d59){if(!_0x50cb3b[_0x1c3d('0x3a')][_0x1c3d('0x15')])throw new Error(_0x1c3d('0x3b'));if(!_0x50cb3b[_0x1c3d('0x3a')][_0x1c3d('0x2f')])throw new Error(_0x1c3d('0x3c'));var _0x315058=db[_0x1c3d('0x2d')][_0x1c3d('0x1a')][_0x1c3d('0x2f')][_0x1c3d('0x3d')];if(!_0x315058[_0x1c3d('0x3e')](_0x50cb3b[_0x1c3d('0x3a')]['service']))throw new Error(_0x1c3d('0x3f')+_0x315058[_0x1c3d('0x40')](',\x20'));if(_0x50cb3b['body'][_0x1c3d('0x2f')]===_0x1c3d('0x30')&&_0x50cb3b[_0x1c3d('0x3a')][_0x1c3d('0x31')]){_0x50cb3b['body'][_0x1c3d('0x31')]=encryptor[_0x1c3d('0x41')](_0x50cb3b[_0x1c3d('0x3a')][_0x1c3d('0x31')]);}return db['CloudProvider'][_0x1c3d('0x39')](_0x50cb3b[_0x1c3d('0x3a')],{})[_0x1c3d('0x12')](respondWithResult(_0x535d59,0xc9))[_0x1c3d('0x32')](handleError(_0x535d59,null));};exports[_0x1c3d('0x11')]=function(_0x4a3d0b,_0xd74f8e){if(_0x4a3d0b[_0x1c3d('0x3a')]['id']){delete _0x4a3d0b[_0x1c3d('0x3a')]['id'];}return db['CloudProvider'][_0x1c3d('0x37')]({'where':{'id':_0x4a3d0b[_0x1c3d('0x33')]['id']}})[_0x1c3d('0x12')](handleEntityNotFound(_0xd74f8e,null))['then'](function(_0x2a424e){if(_0x2a424e[_0x1c3d('0x2f')]===_0x1c3d('0x30')&&_0x4a3d0b[_0x1c3d('0x3a')][_0x1c3d('0x31')]){_0x4a3d0b[_0x1c3d('0x3a')][_0x1c3d('0x31')]=encryptor[_0x1c3d('0x41')](_0x4a3d0b['body'][_0x1c3d('0x31')]);}return _0x2a424e;})[_0x1c3d('0x12')](saveUpdates(_0x4a3d0b[_0x1c3d('0x3a')],null))[_0x1c3d('0x12')](respondWithResult(_0xd74f8e,null))[_0x1c3d('0x32')](handleError(_0xd74f8e,null));};exports[_0x1c3d('0x13')]=function(_0x56908f,_0x25fc9f){return db[_0x1c3d('0x2d')][_0x1c3d('0x37')]({'where':{'id':_0x56908f[_0x1c3d('0x33')]['id']}})[_0x1c3d('0x12')](handleEntityNotFound(_0x25fc9f,null))['then'](removeEntity(_0x25fc9f,null))[_0x1c3d('0x32')](handleError(_0x25fc9f,null));};exports[_0x1c3d('0x42')]=function(_0xaaf2ae,_0x308df9){return db[_0x1c3d('0x2d')][_0x1c3d('0x43')]({'where':{'id':_0xaaf2ae[_0x1c3d('0x33')]['id']},'raw':!![]})[_0x1c3d('0x12')](function(_0x2fd95b){if(!_0x2fd95b)return _0x308df9[_0x1c3d('0x8')](0x194);return{'url':oauth[_0x1c3d('0x44')](_0x2fd95b,_0xaaf2ae[_0x1c3d('0x45')]['id'])};})[_0x1c3d('0x12')](respondWithResult(_0x308df9,null))[_0x1c3d('0x32')](handleError(_0x308df9,null));};exports[_0x1c3d('0x46')]=function(_0x48aa54,_0x329443){var _0x3c83bd=_0x48aa54[_0x1c3d('0x3a')];var _0x59cd32;var _0x4ccbc6;if(_0x3c83bd[_0x1c3d('0x47')])throw _0x3c83bd;redis[_0x1c3d('0x48')](_0x3c83bd['state'])[_0x1c3d('0x12')](function(_0x4739ba){if(!_0x4739ba)throw new Error(_0x1c3d('0x49'));_0x59cd32=JSON[_0x1c3d('0x4a')](_0x4739ba);var _0xbdafb9=Buffer['from'](_0x3c83bd[_0x1c3d('0x4b')],_0x1c3d('0x4c'))[_0x1c3d('0x4d')](_0x1c3d('0x4e'));_0x4ccbc6=JSON[_0x1c3d('0x4a')](_0xbdafb9);if(!oauth[_0x1c3d('0x4f')](_0x3c83bd[_0x1c3d('0x50')],_0x59cd32[_0x1c3d('0x51')]))throw new Error('Unable\x20to\x20validate\x20id_token');redis[_0x1c3d('0x52')](_0x3c83bd[_0x1c3d('0x4b')]);return oauth['getOauth2MicrosoftAccessToken'](_0x3c83bd[_0x1c3d('0x53')],_0x59cd32);})['then'](function(_0x42d3d9){_0x59cd32[_0x1c3d('0x54')]=_0x42d3d9[_0x1c3d('0x55')];_0x59cd32['data6']=_0x42d3d9[_0x1c3d('0x56')];return db[_0x1c3d('0x2d')][_0x1c3d('0x11')]({'data5':_0x59cd32[_0x1c3d('0x54')],'data6':_0x59cd32[_0x1c3d('0x57')]},{'where':{'id':_0x59cd32['id']}});})['then'](function(){oauth[_0x1c3d('0x58')](_0x59cd32);socket[_0x1c3d('0x59')](_0x1c3d('0x5a'),{'id':_0x4ccbc6['id']});return;})[_0x1c3d('0x12')](respondWithStatusCode(_0x329443,null))[_0x1c3d('0x32')](function(_0x7df9c){if(_0x4ccbc6){socket['emit']('microsoftAuthorization:error',{'id':_0x4ccbc6['id']});}if(!_0x59cd32){logger[_0x1c3d('0x47')](_0x1c3d('0x5b'),_0x7df9c);return _0x329443[_0x1c3d('0x9')](0x1f4)[_0x1c3d('0x16')](_0x7df9c[_0x1c3d('0x5c')]);}logger['error'](_0x1c3d('0x5d'),_0x59cd32['id'],JSON['stringify'](_0x7df9c));});};
\ No newline at end of file
+var _0x8d6e=['create','body','Name\x20parameter\x20not\x20specified','Service\x20parameter\x20not\x20specified','values','includes','Invalid\x20service\x20parameter.\x20Allowed\x20values:\x20','join','update','params','encryptString','destroy','oauth2MicrosoftAuthorize','generateMicrosoftAuthorizationUrl','user','oauth2MicrosoftCallback','Invalid\x20state\x20parameter','parse','state','base64','toString','ascii','isValidIdToken','id_token','oauth2Claims','Unable\x20to\x20validate\x20id_token','del','getOauth2MicrosoftAccessToken','code','data6','refresh_token','data5','emit','send','Authentication\x20failed\x20for\x20cloud\x20provider\x20#%s,\x20err:%s','stringify','lodash','ioredis','../../components/parsers/qs','../../config/logger','api','../../mysqldb','./cloudProvider.oauth','redis','defaults','localhost','sendStatus','status','json','offset','undefined','count','set','Content-Range','then','end','error','stack','name','slice','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','merge','VIRTUAL','CloudProvider','includeAll','findAll','rows','service','MicrosoftAzure','decryptString','data3','catch','options','find'];(function(_0xd3786f,_0xa1cee){var _0x3e4dc2=function(_0x384776){while(--_0x384776){_0xd3786f['push'](_0xd3786f['shift']());}};_0x3e4dc2(++_0xa1cee);}(_0x8d6e,0x83));var _0xe8d6=function(_0x5606ad,_0x476b10){_0x5606ad=_0x5606ad-0x0;var _0x58563c=_0x8d6e[_0x5606ad];return _0x58563c;};'use strict';var _=require(_0xe8d6('0x0'));var Redis=require(_0xe8d6('0x1'));var qs=require(_0xe8d6('0x2'));var encryptor=require('../../components/encryptor');var config=require('../../config/environment');var logger=require(_0xe8d6('0x3'))(_0xe8d6('0x4'));var db=require(_0xe8d6('0x5'))['db'];var oauth=require(_0xe8d6('0x6'));config[_0xe8d6('0x7')]=_[_0xe8d6('0x8')](config[_0xe8d6('0x7')],{'host':_0xe8d6('0x9'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xe8d6('0x7')]));var redis=new Redis(config['redis']);function respondWithStatusCode(_0x146559,_0x48295b){_0x48295b=_0x48295b||0xcc;return function(_0x3ad926){if(_0x3ad926){return _0x146559[_0xe8d6('0xa')](_0x48295b);}return _0x146559[_0xe8d6('0xb')](_0x48295b)['end']();};}function respondWithResult(_0x2da985,_0x29863b){_0x29863b=_0x29863b||0xc8;return function(_0xfb2b66){if(_0xfb2b66){return _0x2da985['status'](_0x29863b)[_0xe8d6('0xc')](_0xfb2b66);}};}function respondWithFilteredResult(_0x490d1a,_0x5957c4){return function(_0x3faeee){if(_0x3faeee){var _0x5e8e17=typeof _0x5957c4[_0xe8d6('0xd')]===_0xe8d6('0xe')&&typeof _0x5957c4['limit']===_0xe8d6('0xe');var _0x399e3e=_0x3faeee[_0xe8d6('0xf')];var _0x2303d9=_0x5e8e17?0x0:_0x5957c4['offset'];var _0x3294d4=_0x5e8e17?_0x3faeee[_0xe8d6('0xf')]:_0x5957c4[_0xe8d6('0xd')]+_0x5957c4['limit'];var _0x4ba568;if(_0x3294d4>=_0x399e3e){_0x3294d4=_0x399e3e;_0x4ba568=0xc8;}else{_0x4ba568=0xce;}_0x490d1a[_0xe8d6('0xb')](_0x4ba568);return _0x490d1a[_0xe8d6('0x10')](_0xe8d6('0x11'),_0x2303d9+'-'+_0x3294d4+'/'+_0x399e3e)[_0xe8d6('0xc')](_0x3faeee);}return null;};}function saveUpdates(_0x2abe53){return function(_0x310ff4){if(_0x310ff4){return _0x310ff4['update'](_0x2abe53)[_0xe8d6('0x12')](function(_0x2d8f29){return _0x2d8f29;});}return null;};}function removeEntity(_0x569065){return function(_0xf7d259){if(_0xf7d259){return _0xf7d259['destroy']()['then'](function(){_0x569065[_0xe8d6('0xb')](0xcc)[_0xe8d6('0x13')]();});}};}function handleEntityNotFound(_0x202306){return function(_0x3867fe){if(!_0x3867fe){_0x202306[_0xe8d6('0xa')](0x194);}return _0x3867fe;};}function handleError(_0x442137,_0xacc324){_0xacc324=_0xacc324||0x1f4;return function(_0x104dee){logger[_0xe8d6('0x14')](_0x104dee[_0xe8d6('0x15')]);if(_0x104dee['name']){delete _0x104dee[_0xe8d6('0x16')];}_0x442137['status'](_0xacc324)['send'](_0x104dee);};}function maskClientSecret(_0x646fba){return _['padEnd'](_0x646fba[_0xe8d6('0x17')](0x0,0x3),0x14,'*');}exports[_0xe8d6('0x18')]=function(_0x21b7de,_0xb11124){var _0x4b3fa4={},_0x2c9b8f={},_0x48ddce={'count':0x0,'rows':[]};var _0x5a26fe=_[_0xe8d6('0x19')](db['CloudProvider'][_0xe8d6('0x1a')],function(_0x322e26){return{'name':_0x322e26[_0xe8d6('0x1b')],'type':_0x322e26[_0xe8d6('0x1c')][_0xe8d6('0x1d')]};});_0x2c9b8f[_0xe8d6('0x1e')]=_[_0xe8d6('0x19')](_0x5a26fe,_0xe8d6('0x16'));_0x2c9b8f[_0xe8d6('0x1f')]=_[_0xe8d6('0x20')](_0x21b7de[_0xe8d6('0x1f')]);_0x2c9b8f[_0xe8d6('0x21')]=_[_0xe8d6('0x22')](_0x2c9b8f[_0xe8d6('0x1e')],_0x2c9b8f[_0xe8d6('0x1f')]);_0x4b3fa4[_0xe8d6('0x23')]=_[_0xe8d6('0x22')](_0x2c9b8f['model'],qs[_0xe8d6('0x24')](_0x21b7de[_0xe8d6('0x1f')][_0xe8d6('0x24')]));_0x4b3fa4[_0xe8d6('0x23')]=_0x4b3fa4[_0xe8d6('0x23')][_0xe8d6('0x25')]?_0x4b3fa4[_0xe8d6('0x23')]:_0x2c9b8f[_0xe8d6('0x1e')];if(!_0x21b7de[_0xe8d6('0x1f')][_0xe8d6('0x26')](_0xe8d6('0x27'))){_0x4b3fa4[_0xe8d6('0x28')]=qs[_0xe8d6('0x28')](_0x21b7de['query'][_0xe8d6('0x28')]);_0x4b3fa4[_0xe8d6('0xd')]=qs['offset'](_0x21b7de[_0xe8d6('0x1f')][_0xe8d6('0xd')]);}_0x4b3fa4[_0xe8d6('0x29')]=qs[_0xe8d6('0x2a')](_0x21b7de[_0xe8d6('0x1f')][_0xe8d6('0x2a')]);_0x4b3fa4[_0xe8d6('0x2b')]=qs['filters'](_[_0xe8d6('0x2c')](_0x21b7de[_0xe8d6('0x1f')],_0x2c9b8f[_0xe8d6('0x21')]),_0x5a26fe);if(_0x21b7de['query'][_0xe8d6('0x2d')]){_0x4b3fa4['where']=_[_0xe8d6('0x2e')](_0x4b3fa4[_0xe8d6('0x2b')],{'$or':_['map'](_0x5a26fe,function(_0x4ed5af){if(_0x4ed5af[_0xe8d6('0x1c')]!==_0xe8d6('0x2f')){var _0x35d346={};_0x35d346[_0x4ed5af[_0xe8d6('0x16')]]={'$like':'%'+_0x21b7de['query'][_0xe8d6('0x2d')]+'%'};return _0x35d346;}})});}_0x4b3fa4=_[_0xe8d6('0x2e')]({},_0x4b3fa4,_0x21b7de['options']);var _0x32312b={'where':_0x4b3fa4[_0xe8d6('0x2b')]};return db[_0xe8d6('0x30')][_0xe8d6('0xf')](_0x32312b)[_0xe8d6('0x12')](function(_0x1f1d75){_0x48ddce[_0xe8d6('0xf')]=_0x1f1d75;if(_0x21b7de[_0xe8d6('0x1f')][_0xe8d6('0x31')]){_0x4b3fa4['include']=[{'all':!![]}];}return db[_0xe8d6('0x30')][_0xe8d6('0x32')](_0x4b3fa4);})[_0xe8d6('0x12')](function(_0x47c125){_0x48ddce[_0xe8d6('0x33')]=_[_0xe8d6('0x19')](_0x47c125,function(_0xeab7d1){if(_0xeab7d1[_0xe8d6('0x34')]===_0xe8d6('0x35')){var _0x4cb2dc=encryptor[_0xe8d6('0x36')](_0xeab7d1['data3']);_0xeab7d1[_0xe8d6('0x37')]=maskClientSecret(_0x4cb2dc);}return _0xeab7d1;});return _0x48ddce;})[_0xe8d6('0x12')](respondWithFilteredResult(_0xb11124,_0x4b3fa4))[_0xe8d6('0x38')](handleError(_0xb11124,null));};exports['show']=function(_0x46cbd4,_0x333c73){var _0x5dc2f6={'raw':!![],'where':{'id':_0x46cbd4['params']['id']}},_0x104518={};_0x104518[_0xe8d6('0x1e')]=_[_0xe8d6('0x20')](db[_0xe8d6('0x30')][_0xe8d6('0x1a')]);_0x104518['query']=_[_0xe8d6('0x20')](_0x46cbd4[_0xe8d6('0x1f')]);_0x104518[_0xe8d6('0x21')]=_[_0xe8d6('0x22')](_0x104518[_0xe8d6('0x1e')],_0x104518[_0xe8d6('0x1f')]);_0x5dc2f6[_0xe8d6('0x23')]=_[_0xe8d6('0x22')](_0x104518[_0xe8d6('0x1e')],qs[_0xe8d6('0x24')](_0x46cbd4[_0xe8d6('0x1f')][_0xe8d6('0x24')]));_0x5dc2f6[_0xe8d6('0x23')]=_0x5dc2f6['attributes'][_0xe8d6('0x25')]?_0x5dc2f6[_0xe8d6('0x23')]:_0x104518[_0xe8d6('0x1e')];if(_0x46cbd4[_0xe8d6('0x1f')][_0xe8d6('0x31')]){_0x5dc2f6['include']=[{'all':!![]}];}_0x5dc2f6=_[_0xe8d6('0x2e')]({},_0x5dc2f6,_0x46cbd4[_0xe8d6('0x39')]);return db[_0xe8d6('0x30')][_0xe8d6('0x3a')](_0x5dc2f6)[_0xe8d6('0x12')](handleEntityNotFound(_0x333c73,null))[_0xe8d6('0x12')](function(_0x40f436){if(_0x40f436['service']===_0xe8d6('0x35')){var _0x92e2a9=encryptor['decryptString'](_0x40f436[_0xe8d6('0x37')]);_0x40f436['data3']=maskClientSecret(_0x92e2a9);}return _0x40f436;})[_0xe8d6('0x12')](respondWithResult(_0x333c73,null))['catch'](handleError(_0x333c73,null));};exports[_0xe8d6('0x3b')]=function(_0x2ba5f9,_0x4b763f){if(!_0x2ba5f9[_0xe8d6('0x3c')][_0xe8d6('0x16')])throw new Error(_0xe8d6('0x3d'));if(!_0x2ba5f9[_0xe8d6('0x3c')][_0xe8d6('0x34')])throw new Error(_0xe8d6('0x3e'));var _0x352ad8=db['CloudProvider'][_0xe8d6('0x1a')]['service'][_0xe8d6('0x3f')];if(!_0x352ad8[_0xe8d6('0x40')](_0x2ba5f9[_0xe8d6('0x3c')][_0xe8d6('0x34')]))throw new Error(_0xe8d6('0x41')+_0x352ad8[_0xe8d6('0x42')](',\x20'));if(_0x2ba5f9[_0xe8d6('0x3c')]['service']===_0xe8d6('0x35')&&_0x2ba5f9[_0xe8d6('0x3c')][_0xe8d6('0x37')]){_0x2ba5f9[_0xe8d6('0x3c')][_0xe8d6('0x37')]=encryptor['encryptString'](_0x2ba5f9[_0xe8d6('0x3c')]['data3']);}return db[_0xe8d6('0x30')]['create'](_0x2ba5f9[_0xe8d6('0x3c')],{})[_0xe8d6('0x12')](respondWithResult(_0x4b763f,0xc9))[_0xe8d6('0x38')](handleError(_0x4b763f,null));};exports[_0xe8d6('0x43')]=function(_0x512a21,_0x5dc201){if(_0x512a21['body']['id']){delete _0x512a21[_0xe8d6('0x3c')]['id'];}return db[_0xe8d6('0x30')][_0xe8d6('0x3a')]({'where':{'id':_0x512a21[_0xe8d6('0x44')]['id']}})[_0xe8d6('0x12')](handleEntityNotFound(_0x5dc201,null))[_0xe8d6('0x12')](function(_0x473f8b){if(_0x473f8b['service']===_0xe8d6('0x35')&&_0x512a21[_0xe8d6('0x3c')]['data3']){_0x512a21[_0xe8d6('0x3c')]['data3']=encryptor[_0xe8d6('0x45')](_0x512a21[_0xe8d6('0x3c')][_0xe8d6('0x37')]);}return _0x473f8b;})['then'](saveUpdates(_0x512a21[_0xe8d6('0x3c')],null))['then'](respondWithResult(_0x5dc201,null))[_0xe8d6('0x38')](handleError(_0x5dc201,null));};exports[_0xe8d6('0x46')]=function(_0x1c40fa,_0x4e9026){return db[_0xe8d6('0x30')][_0xe8d6('0x3a')]({'where':{'id':_0x1c40fa[_0xe8d6('0x44')]['id']}})[_0xe8d6('0x12')](handleEntityNotFound(_0x4e9026,null))['then'](removeEntity(_0x4e9026,null))[_0xe8d6('0x38')](handleError(_0x4e9026,null));};exports[_0xe8d6('0x47')]=function(_0x196a30,_0x4be05d){return db[_0xe8d6('0x30')]['findOne']({'where':{'id':_0x196a30[_0xe8d6('0x44')]['id']},'raw':!![]})[_0xe8d6('0x12')](function(_0xf8a0f2){if(!_0xf8a0f2)return _0x4be05d[_0xe8d6('0xa')](0x194);return{'url':oauth[_0xe8d6('0x48')](_0xf8a0f2,_0x196a30[_0xe8d6('0x49')]['id'])};})[_0xe8d6('0x12')](respondWithResult(_0x4be05d,null))['catch'](handleError(_0x4be05d,null));};exports[_0xe8d6('0x4a')]=function(_0x271a3b,_0x33c078){var _0x3a7ac6=_0x271a3b[_0xe8d6('0x3c')];var _0x11b5b5;var _0x2ba2ef;if(_0x3a7ac6[_0xe8d6('0x14')])throw _0x3a7ac6;redis['get'](_0x3a7ac6['state'])['then'](function(_0x4e2ed7){if(!_0x4e2ed7)throw new Error(_0xe8d6('0x4b'));_0x11b5b5=JSON[_0xe8d6('0x4c')](_0x4e2ed7);var _0x57a2cb=Buffer['from'](_0x3a7ac6[_0xe8d6('0x4d')],_0xe8d6('0x4e'))[_0xe8d6('0x4f')](_0xe8d6('0x50'));_0x2ba2ef=JSON['parse'](_0x57a2cb);if(!oauth[_0xe8d6('0x51')](_0x3a7ac6[_0xe8d6('0x52')],_0x11b5b5[_0xe8d6('0x53')]))throw new Error(_0xe8d6('0x54'));redis[_0xe8d6('0x55')](_0x3a7ac6[_0xe8d6('0x4d')]);return oauth[_0xe8d6('0x56')](_0x3a7ac6[_0xe8d6('0x57')],_0x11b5b5);})['then'](function(_0x4f21db){_0x11b5b5['data5']=_0x4f21db['access_token'];_0x11b5b5[_0xe8d6('0x58')]=_0x4f21db[_0xe8d6('0x59')];return db[_0xe8d6('0x30')]['update']({'data5':_0x11b5b5[_0xe8d6('0x5a')],'data6':_0x11b5b5['data6']},{'where':{'id':_0x11b5b5['id']}});})[_0xe8d6('0x12')](function(){oauth['startRefreshInterval'](_0x11b5b5);socket['emit']('microsoftAuthorization:success',{'id':_0x2ba2ef['id']});return;})[_0xe8d6('0x12')](respondWithStatusCode(_0x33c078,null))[_0xe8d6('0x38')](function(_0x573e4f){if(_0x2ba2ef){socket[_0xe8d6('0x5b')]('microsoftAuthorization:error',{'id':_0x2ba2ef['id']});}if(!_0x11b5b5){logger[_0xe8d6('0x14')]('Invalid\x20authentication\x20state\x20parameter',_0x573e4f);return _0x33c078['status'](0x1f4)[_0xe8d6('0x5c')](_0x573e4f['message']);}logger['error'](_0xe8d6('0x5d'),_0x11b5b5['id'],JSON[_0xe8d6('0x5e')](_0x573e4f));});};
\ No newline at end of file
index 3757695..291b702 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa6a=['./cloudProvider.attributes','exports','define','CloudProvider','cloud_providers','lodash','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xfa6a,0x94));var _0xafa6=function(_0x4e676e,_0x2a7c6d){_0x4e676e=_0x4e676e-0x0;var _0x336a3c=_0xfa6a[_0x4e676e];return _0x336a3c;};'use strict';var _=require(_0xafa6('0x0'));var util=require('util');var logger=require(_0xafa6('0x1'))('api');var moment=require(_0xafa6('0x2'));var BPromise=require(_0xafa6('0x3'));var rp=require(_0xafa6('0x4'));var fs=require('fs');var path=require(_0xafa6('0x5'));var rimraf=require(_0xafa6('0x6'));var config=require(_0xafa6('0x7'));var attributes=require(_0xafa6('0x8'));module[_0xafa6('0x9')]=function(_0x4d32e5,_0x450309){return _0x4d32e5[_0xafa6('0xa')](_0xafa6('0xb'),attributes,{'tableName':_0xafa6('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x614a=['./cloudProvider.attributes','exports','define','CloudProvider','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x614a,0xd4));var _0xa614=function(_0x2628ee,_0x248342){_0x2628ee=_0x2628ee-0x0;var _0x30ca8a=_0x614a[_0x2628ee];return _0x30ca8a;};'use strict';var _=require(_0xa614('0x0'));var util=require(_0xa614('0x1'));var logger=require(_0xa614('0x2'))(_0xa614('0x3'));var moment=require('moment');var BPromise=require(_0xa614('0x4'));var rp=require(_0xa614('0x5'));var fs=require('fs');var path=require(_0xa614('0x6'));var rimraf=require(_0xa614('0x7'));var config=require(_0xa614('0x8'));var attributes=require(_0xa614('0x9'));module[_0xa614('0xa')]=function(_0x562acc,_0x3045cc){return _0x562acc[_0xa614('0xb')](_0xa614('0xc'),attributes,{'tableName':'cloud_providers','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4814925..2057365 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde47=['util','../../components/encryptor','../../config/environment','../../config/schedule/cloud-provider','../../mysqldb','redis','defaults','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','map','type','push','/.default','Outlook365','Dynamics365','data7','replace','{TENANT_ID}','data2','code','id_token','from','stringify','base64','hex','join','redirect_uri','response_mode','scope','state','nonce','login','key','value','oauth2Claims','data1','set','decode','payload','iss','issuer','audience','exp','then','data3','CloudProvider','findOne','refresh_token','data4','decryptString','POST','data5','access_token','data6','update','Failed\x20to\x20refresh\x20access\x20token\x20for\x20cloud\x20provider\x20#%s,\x20-\x20err:%s','intervals','bind','findAll','catch','error','exports','lodash','crypto','ioredis','request-promise'];(function(_0x365ea9,_0x17ec94){var _0xb7a188=function(_0x5028c2){while(--_0x5028c2){_0x365ea9['push'](_0x365ea9['shift']());}};_0xb7a188(++_0x17ec94);}(_0xde47,0x1f4));var _0x7de4=function(_0x8a917c,_0x19c5f6){_0x8a917c=_0x8a917c-0x0;var _0x2c704e=_0xde47[_0x8a917c];return _0x2c704e;};'use strict';var _=require(_0x7de4('0x0'));var crypto=require(_0x7de4('0x1'));var jwt=require('jsonwebtoken');var moment=require('moment');var Redis=require(_0x7de4('0x2'));var rp=require(_0x7de4('0x3'));var util=require(_0x7de4('0x4'));var encryptor=require(_0x7de4('0x5'));var config=require(_0x7de4('0x6'));var logger=require('../../config/logger')('api');var schedule=require(_0x7de4('0x7'));var db=require(_0x7de4('0x8'))['db'];config[_0x7de4('0x9')]=_[_0x7de4('0xa')](config['redis'],{'host':'localhost','port':0x18eb});var redis=new Redis(config['redis']);var MICROSOFT_AUTH_URL='https://login.microsoftonline.com/{TENANT_ID}/oauth2/v2.0';var AZURE_AUTH_SCOPES={'Outlook365':[_0x7de4('0xb'),_0x7de4('0xc'),_0x7de4('0xd'),_0x7de4('0xe'),_0x7de4('0xf'),_0x7de4('0x10'),_0x7de4('0x11')],'Dynamics365':[_0x7de4('0xb'),'offline_access']};var MICROSOFT_AUTH_ENDPOINT=_0x7de4('0x12');var MICROSOFT_TOKEN_ENDPOINT='/token';var OAUTH_REFRESH_INTERVAL=0xfa;function getAuthorizationScopes(_0x3142db){var _0x272a19=_[_0x7de4('0x13')](AZURE_AUTH_SCOPES[_0x3142db[_0x7de4('0x14')]]);if(_0x3142db[_0x7de4('0x14')]==='Dynamics365')_0x272a19[_0x7de4('0x15')](_0x3142db['data7']+_0x7de4('0x16'));return _0x272a19['join']('\x20');}function getAccessTokenScope(_0x1f362a){if(_0x1f362a[_0x7de4('0x14')]===_0x7de4('0x17'))return _0x7de4('0xf');if(_0x1f362a['type']===_0x7de4('0x18'))return _0x1f362a[_0x7de4('0x19')]+_0x7de4('0x16');}function generateMicrosoftAuthorizationUrl(_0x5a9fb6,_0x3601a9){var _0x4fe245=MICROSOFT_AUTH_URL[_0x7de4('0x1a')](_0x7de4('0x1b'),_0x5a9fb6[_0x7de4('0x1c')]);var _0x51cbd9=[_0x7de4('0x1d'),_0x7de4('0x1e')];var _0x9c4e2b=Buffer[_0x7de4('0x1f')](JSON[_0x7de4('0x20')]({'id':_0x3601a9}))['toString'](_0x7de4('0x21'));var _0x579b76=crypto['randomBytes'](0x10)['toString'](_0x7de4('0x22'));var _0xc4d2a9=getAuthorizationScopes(_0x5a9fb6);var _0x4bb550=[{'key':'client_id','value':_0x5a9fb6['data1']},{'key':'response_type','value':encodeURIComponent(_0x51cbd9[_0x7de4('0x23')]('\x20'))},{'key':_0x7de4('0x24'),'value':_0x5a9fb6['data4']},{'key':_0x7de4('0x25'),'value':'form_post'},{'key':_0x7de4('0x26'),'value':encodeURIComponent(_0xc4d2a9)},{'key':_0x7de4('0x27'),'value':_0x9c4e2b},{'key':_0x7de4('0x28'),'value':_0x579b76},{'key':'prompt','value':_0x7de4('0x29')}];var _0x36c4ba=_0x4fe245+MICROSOFT_AUTH_ENDPOINT+'?'+_[_0x7de4('0x13')](_0x4bb550,function(_0xd5c92c){return _0xd5c92c[_0x7de4('0x2a')]+'='+_0xd5c92c[_0x7de4('0x2b')];})[_0x7de4('0x23')]('&');_0x5a9fb6[_0x7de4('0x2c')]={'issuer':_0x4fe245[_0x7de4('0x1a')]('oauth2/',''),'audience':_0x5a9fb6[_0x7de4('0x2d')],'state':_0x9c4e2b,'nonce':_0x579b76};redis[_0x7de4('0x2e')](_0x9c4e2b,JSON[_0x7de4('0x20')](_0x5a9fb6));return _0x36c4ba;}function isValidIdToken(_0x4ab4d9,_0xb83994){try{var _0x1e2069=jwt[_0x7de4('0x2f')](_0x4ab4d9,{'complete':!![]});var _0x2b9ed8=_0x1e2069[_0x7de4('0x30')];if(_0x2b9ed8[_0x7de4('0x31')]!==_0xb83994[_0x7de4('0x32')])return![];if(_0x2b9ed8['aud']!==_0xb83994[_0x7de4('0x33')])return![];if(_0x2b9ed8[_0x7de4('0x28')]!==_0xb83994[_0x7de4('0x28')])return![];if(moment()['isAfter'](moment['unix'](_0x2b9ed8[_0x7de4('0x34')])))return![];return!![];}catch(_0x36ffbc){throw _0x36ffbc;}}function refreshOauth2MicrosoftAccessToken(_0x566e85){return Promise['resolve']()[_0x7de4('0x35')](function(){if(_0x566e85[_0x7de4('0x36')])return _0x566e85;return db[_0x7de4('0x37')][_0x7de4('0x38')]({'where':{'id':_0x566e85['id']},'raw':!![]});})['then'](function(_0x355d16){var _0x153160={'grant_type':_0x7de4('0x39'),'refresh_token':_0x355d16['data6'],'scope':getAccessTokenScope(_0x355d16),'redirect_uri':_0x355d16[_0x7de4('0x3a')],'client_id':_0x355d16[_0x7de4('0x2d')],'client_secret':encryptor[_0x7de4('0x3b')](_0x355d16[_0x7de4('0x36')])};var _0x1c604e={'method':_0x7de4('0x3c'),'uri':MICROSOFT_AUTH_URL[_0x7de4('0x1a')](_0x7de4('0x1b'),_0x355d16[_0x7de4('0x1c')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x153160,'json':!![]};return rp(_0x1c604e);})[_0x7de4('0x35')](function(_0x1aa77f){_0x566e85[_0x7de4('0x3d')]=_0x1aa77f[_0x7de4('0x3e')];_0x566e85[_0x7de4('0x3f')]=_0x1aa77f[_0x7de4('0x39')];return db[_0x7de4('0x37')][_0x7de4('0x40')]({'data5':_0x566e85[_0x7de4('0x3d')],'data6':_0x566e85['data6']},{'where':{'id':_0x566e85['id']}});})['then'](function(){return _0x566e85;})['catch'](function(_0x258366){logger['error'](_0x7de4('0x41'),_0x566e85['id'],_0x258366);});}function getOauth2MicrosoftAccessToken(_0x452b2f,_0x506707){var _0x4c3618={'grant_type':'authorization_code','code':_0x452b2f,'scope':getAccessTokenScope(_0x506707),'redirect_uri':_0x506707[_0x7de4('0x3a')],'client_id':_0x506707['data1'],'client_secret':encryptor[_0x7de4('0x3b')](_0x506707[_0x7de4('0x36')])};var _0x4cbca8={'method':_0x7de4('0x3c'),'uri':MICROSOFT_AUTH_URL[_0x7de4('0x1a')](_0x7de4('0x1b'),_0x506707[_0x7de4('0x1c')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x4c3618,'json':!![]};return rp(_0x4cbca8);}function startRefreshInterval(_0x1e8257){var _0x4078ef=schedule[_0x7de4('0x42')];if(_0x4078ef[_0x1e8257['id']])clearInterval(_0x4078ef[_0x1e8257['id']]);_0x4078ef[_0x1e8257['id']]=setInterval(refreshOauth2MicrosoftAccessToken[_0x7de4('0x43')](this,{'id':_0x1e8257['id']}),OAUTH_REFRESH_INTERVAL*0x3e8);schedule[_0x7de4('0x42')]=_0x4078ef;}function startAllRefreshIntervals(){return db[_0x7de4('0x37')][_0x7de4('0x44')]({'where':{'data6':{'$ne':null}},'raw':!![]})['then'](function(_0x4872bb){var _0x56e8d1=_0x4872bb['map'](function(_0x3d4116){return refreshOauth2MicrosoftAccessToken(_0x3d4116)[_0x7de4('0x35')](function(_0x96c52f){startRefreshInterval(_0x96c52f);});});return Promise['all'](_0x56e8d1);})[_0x7de4('0x45')](function(_0x129214){var _0x2c7579=_0x129214?util['inspect'](_0x129214,{'showHidden':![],'depth':null}):'';logger[_0x7de4('0x46')]('[CLOUD_PROVIDER]\x20Error\x20while\x20refreshing\x20the\x20tokens\x20after\x20service\x20restart\x20error:%s',_0x2c7579);});}module[_0x7de4('0x47')]={'generateMicrosoftAuthorizationUrl':generateMicrosoftAuthorizationUrl,'getOauth2MicrosoftAccessToken':getOauth2MicrosoftAccessToken,'isValidIdToken':isValidIdToken,'startAllRefreshIntervals':startAllRefreshIntervals,'refreshOauth2MicrosoftAccessToken':refreshOauth2MicrosoftAccessToken,'startRefreshInterval':startRefreshInterval};
\ No newline at end of file
+var _0x3706=['oauth2Claims','oauth2/','set','decode','payload','issuer','aud','isAfter','unix','exp','then','data3','CloudProvider','findOne','data6','decryptString','POST','{TENANT_ID}','data5','access_token','refresh_token','update','Failed\x20to\x20refresh\x20access\x20token\x20for\x20cloud\x20provider\x20#%s,\x20-\x20err:%s','authorization_code','intervals','findAll','all','catch','error','exports','lodash','crypto','moment','ioredis','request-promise','util','../../config/environment','api','../../config/schedule/cloud-provider','../../mysqldb','redis','defaults','localhost','https://login.microsoftonline.com/{TENANT_ID}/oauth2/v2.0','openid','profile','offline_access','https://outlook.office365.com/IMAP.AccessAsUser.All','https://outlook.office.com/SMTP.Send','/token','map','type','push','data7','/.default','Outlook365','replace','data2','code','id_token','from','stringify','toString','hex','client_id','data1','redirect_uri','data4','response_mode','form_post','state','nonce','login','key','value','join'];(function(_0x1b0be8,_0x32859b){var _0x4276a9=function(_0x157c7a){while(--_0x157c7a){_0x1b0be8['push'](_0x1b0be8['shift']());}};_0x4276a9(++_0x32859b);}(_0x3706,0x19a));var _0x6370=function(_0x5037ab,_0x43209e){_0x5037ab=_0x5037ab-0x0;var _0x512adb=_0x3706[_0x5037ab];return _0x512adb;};'use strict';var _=require(_0x6370('0x0'));var crypto=require(_0x6370('0x1'));var jwt=require('jsonwebtoken');var moment=require(_0x6370('0x2'));var Redis=require(_0x6370('0x3'));var rp=require(_0x6370('0x4'));var util=require(_0x6370('0x5'));var encryptor=require('../../components/encryptor');var config=require(_0x6370('0x6'));var logger=require('../../config/logger')(_0x6370('0x7'));var schedule=require(_0x6370('0x8'));var db=require(_0x6370('0x9'))['db'];config[_0x6370('0xa')]=_[_0x6370('0xb')](config[_0x6370('0xa')],{'host':_0x6370('0xc'),'port':0x18eb});var redis=new Redis(config['redis']);var MICROSOFT_AUTH_URL=_0x6370('0xd');var AZURE_AUTH_SCOPES={'Outlook365':[_0x6370('0xe'),_0x6370('0xf'),'email',_0x6370('0x10'),_0x6370('0x11'),'https://outlook.office.com/POP.AccessAsUser.All',_0x6370('0x12')],'Dynamics365':[_0x6370('0xe'),_0x6370('0x10')]};var MICROSOFT_AUTH_ENDPOINT='/authorize';var MICROSOFT_TOKEN_ENDPOINT=_0x6370('0x13');var OAUTH_REFRESH_INTERVAL=0xfa;function getAuthorizationScopes(_0xb7f947){var _0x327dad=_[_0x6370('0x14')](AZURE_AUTH_SCOPES[_0xb7f947[_0x6370('0x15')]]);if(_0xb7f947['type']==='Dynamics365')_0x327dad[_0x6370('0x16')](_0xb7f947[_0x6370('0x17')]+_0x6370('0x18'));return _0x327dad['join']('\x20');}function getAccessTokenScope(_0x525192){if(_0x525192[_0x6370('0x15')]===_0x6370('0x19'))return _0x6370('0x11');if(_0x525192[_0x6370('0x15')]==='Dynamics365')return _0x525192[_0x6370('0x17')]+_0x6370('0x18');}function generateMicrosoftAuthorizationUrl(_0x56ae1c,_0x45b456){var _0x3a3070=MICROSOFT_AUTH_URL[_0x6370('0x1a')]('{TENANT_ID}',_0x56ae1c[_0x6370('0x1b')]);var _0x38562e=[_0x6370('0x1c'),_0x6370('0x1d')];var _0x201e59=Buffer[_0x6370('0x1e')](JSON[_0x6370('0x1f')]({'id':_0x45b456}))[_0x6370('0x20')]('base64');var _0x59567f=crypto['randomBytes'](0x10)[_0x6370('0x20')](_0x6370('0x21'));var _0x30171f=getAuthorizationScopes(_0x56ae1c);var _0x356cbe=[{'key':_0x6370('0x22'),'value':_0x56ae1c[_0x6370('0x23')]},{'key':'response_type','value':encodeURIComponent(_0x38562e['join']('\x20'))},{'key':_0x6370('0x24'),'value':_0x56ae1c[_0x6370('0x25')]},{'key':_0x6370('0x26'),'value':_0x6370('0x27')},{'key':'scope','value':encodeURIComponent(_0x30171f)},{'key':_0x6370('0x28'),'value':_0x201e59},{'key':_0x6370('0x29'),'value':_0x59567f},{'key':'prompt','value':_0x6370('0x2a')}];var _0xf4b13c=_0x3a3070+MICROSOFT_AUTH_ENDPOINT+'?'+_[_0x6370('0x14')](_0x356cbe,function(_0x11231c){return _0x11231c[_0x6370('0x2b')]+'='+_0x11231c[_0x6370('0x2c')];})[_0x6370('0x2d')]('&');_0x56ae1c[_0x6370('0x2e')]={'issuer':_0x3a3070[_0x6370('0x1a')](_0x6370('0x2f'),''),'audience':_0x56ae1c[_0x6370('0x23')],'state':_0x201e59,'nonce':_0x59567f};redis[_0x6370('0x30')](_0x201e59,JSON[_0x6370('0x1f')](_0x56ae1c));return _0xf4b13c;}function isValidIdToken(_0x1149b3,_0x45074f){try{var _0x5ce0bc=jwt[_0x6370('0x31')](_0x1149b3,{'complete':!![]});var _0x369849=_0x5ce0bc[_0x6370('0x32')];if(_0x369849['iss']!==_0x45074f[_0x6370('0x33')])return![];if(_0x369849[_0x6370('0x34')]!==_0x45074f['audience'])return![];if(_0x369849[_0x6370('0x29')]!==_0x45074f['nonce'])return![];if(moment()[_0x6370('0x35')](moment[_0x6370('0x36')](_0x369849[_0x6370('0x37')])))return![];return!![];}catch(_0x5561a8){throw _0x5561a8;}}function refreshOauth2MicrosoftAccessToken(_0x293b89){return Promise['resolve']()[_0x6370('0x38')](function(){if(_0x293b89[_0x6370('0x39')])return _0x293b89;return db[_0x6370('0x3a')][_0x6370('0x3b')]({'where':{'id':_0x293b89['id']},'raw':!![]});})['then'](function(_0x1fa3f0){var _0x400fe0={'grant_type':'refresh_token','refresh_token':_0x1fa3f0[_0x6370('0x3c')],'scope':getAccessTokenScope(_0x1fa3f0),'redirect_uri':_0x1fa3f0[_0x6370('0x25')],'client_id':_0x1fa3f0[_0x6370('0x23')],'client_secret':encryptor[_0x6370('0x3d')](_0x1fa3f0[_0x6370('0x39')])};var _0x336e57={'method':_0x6370('0x3e'),'uri':MICROSOFT_AUTH_URL[_0x6370('0x1a')](_0x6370('0x3f'),_0x1fa3f0[_0x6370('0x1b')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x400fe0,'json':!![]};return rp(_0x336e57);})[_0x6370('0x38')](function(_0x588e65){_0x293b89[_0x6370('0x40')]=_0x588e65[_0x6370('0x41')];_0x293b89[_0x6370('0x3c')]=_0x588e65[_0x6370('0x42')];return db[_0x6370('0x3a')][_0x6370('0x43')]({'data5':_0x293b89[_0x6370('0x40')],'data6':_0x293b89[_0x6370('0x3c')]},{'where':{'id':_0x293b89['id']}});})[_0x6370('0x38')](function(){return _0x293b89;})['catch'](function(_0x443523){logger['error'](_0x6370('0x44'),_0x293b89['id'],_0x443523);});}function getOauth2MicrosoftAccessToken(_0x49b363,_0x2347fb){var _0x2546c9={'grant_type':_0x6370('0x45'),'code':_0x49b363,'scope':getAccessTokenScope(_0x2347fb),'redirect_uri':_0x2347fb[_0x6370('0x25')],'client_id':_0x2347fb['data1'],'client_secret':encryptor['decryptString'](_0x2347fb[_0x6370('0x39')])};var _0x13c865={'method':_0x6370('0x3e'),'uri':MICROSOFT_AUTH_URL[_0x6370('0x1a')]('{TENANT_ID}',_0x2347fb[_0x6370('0x1b')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x2546c9,'json':!![]};return rp(_0x13c865);}function startRefreshInterval(_0x102225){var _0x4d925e=schedule[_0x6370('0x46')];if(_0x4d925e[_0x102225['id']])clearInterval(_0x4d925e[_0x102225['id']]);_0x4d925e[_0x102225['id']]=setInterval(refreshOauth2MicrosoftAccessToken['bind'](this,{'id':_0x102225['id']}),OAUTH_REFRESH_INTERVAL*0x3e8);schedule[_0x6370('0x46')]=_0x4d925e;}function startAllRefreshIntervals(){return db['CloudProvider'][_0x6370('0x47')]({'where':{'data6':{'$ne':null}},'raw':!![]})[_0x6370('0x38')](function(_0xd38be0){var _0x4dc501=_0xd38be0[_0x6370('0x14')](function(_0x5f1feb){return refreshOauth2MicrosoftAccessToken(_0x5f1feb)['then'](function(_0x81e19c){startRefreshInterval(_0x81e19c);});});return Promise[_0x6370('0x48')](_0x4dc501);})[_0x6370('0x49')](function(_0x1038ae){var _0x4bea6c=_0x1038ae?util['inspect'](_0x1038ae,{'showHidden':![],'depth':null}):'';logger[_0x6370('0x4a')]('[CLOUD_PROVIDER]\x20Error\x20while\x20refreshing\x20the\x20tokens\x20after\x20service\x20restart\x20error:%s',_0x4bea6c);});}module[_0x6370('0x4b')]={'generateMicrosoftAuthorizationUrl':generateMicrosoftAuthorizationUrl,'getOauth2MicrosoftAccessToken':getOauth2MicrosoftAccessToken,'isValidIdToken':isValidIdToken,'startAllRefreshIntervals':startAllRefreshIntervals,'refreshOauth2MicrosoftAccessToken':refreshOauth2MicrosoftAccessToken,'startRefreshInterval':startRefreshInterval};
\ No newline at end of file
index 974ffcd..ea7bcc3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac35=['request\x20sent','CloudProvider,\x20%s,\x20%s,\x20%s','stringify','error','code','message','CloudProvider,\x20%s,\x20%s','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info'];(function(_0x37a5a7,_0x55aa32){var _0x2f8744=function(_0x41faac){while(--_0x41faac){_0x37a5a7['push'](_0x37a5a7['shift']());}};_0x2f8744(++_0x55aa32);}(_0xac35,0x141));var _0x5ac3=function(_0x37c2ba,_0x57bd44){_0x37c2ba=_0x37c2ba-0x0;var _0x1d8220=_0xac35[_0x37c2ba];return _0x1d8220;};'use strict';var _=require(_0x5ac3('0x0'));var util=require(_0x5ac3('0x1'));var moment=require(_0x5ac3('0x2'));var BPromise=require(_0x5ac3('0x3'));var rs=require(_0x5ac3('0x4'));var fs=require('fs');var Redis=require(_0x5ac3('0x5'));var db=require(_0x5ac3('0x6'))['db'];var utils=require(_0x5ac3('0x7'));var logger=require(_0x5ac3('0x8'))(_0x5ac3('0x9'));var config=require(_0x5ac3('0xa'));var jayson=require(_0x5ac3('0xb'));var client=jayson[_0x5ac3('0xc')][_0x5ac3('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x4c9a16,_0x77dc9f,_0x5e96cb){return new BPromise(function(_0x2a19b9,_0x1754d2){return client[_0x5ac3('0xe')](_0x4c9a16,_0x5e96cb)[_0x5ac3('0xf')](function(_0x378900){logger[_0x5ac3('0x10')]('CloudProvider,\x20%s,\x20%s',_0x77dc9f,_0x5ac3('0x11'));logger['debug'](_0x5ac3('0x12'),_0x77dc9f,_0x5ac3('0x11'),JSON[_0x5ac3('0x13')](_0x378900));if(_0x378900[_0x5ac3('0x14')]){if(_0x378900[_0x5ac3('0x14')][_0x5ac3('0x15')]===0x1f4){logger[_0x5ac3('0x14')]('CloudProvider,\x20%s,\x20%s',_0x77dc9f,_0x378900[_0x5ac3('0x14')][_0x5ac3('0x16')]);return _0x1754d2(_0x378900[_0x5ac3('0x14')][_0x5ac3('0x16')]);}logger[_0x5ac3('0x14')](_0x5ac3('0x17'),_0x77dc9f,_0x378900[_0x5ac3('0x14')][_0x5ac3('0x16')]);return _0x2a19b9(_0x378900['error']['message']);}else{logger[_0x5ac3('0x10')](_0x5ac3('0x17'),_0x77dc9f,'request\x20sent');_0x2a19b9(_0x378900[_0x5ac3('0x18')]['message']);}})[_0x5ac3('0x19')](function(_0x18cad4){logger[_0x5ac3('0x14')]('CloudProvider,\x20%s,\x20%s',_0x77dc9f,_0x18cad4);_0x1754d2(_0x18cad4);});});}
\ No newline at end of file
+var _0x29b6=['CloudProvider,\x20%s,\x20%s,\x20%s','stringify','error','message','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','request','info','CloudProvider,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x4e1eac,_0x359079){var _0x42f403=function(_0x1998ac){while(--_0x1998ac){_0x4e1eac['push'](_0x4e1eac['shift']());}};_0x42f403(++_0x359079);}(_0x29b6,0x17e));var _0x629b=function(_0xc69e8b,_0x18343e){_0xc69e8b=_0xc69e8b-0x0;var _0x11c633=_0x29b6[_0xc69e8b];return _0x11c633;};'use strict';var _=require(_0x629b('0x0'));var util=require(_0x629b('0x1'));var moment=require(_0x629b('0x2'));var BPromise=require(_0x629b('0x3'));var rs=require(_0x629b('0x4'));var fs=require('fs');var Redis=require(_0x629b('0x5'));var db=require(_0x629b('0x6'))['db'];var utils=require(_0x629b('0x7'));var logger=require(_0x629b('0x8'))(_0x629b('0x9'));var config=require('../../config/environment');var jayson=require(_0x629b('0xa'));var client=jayson['client'][_0x629b('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4acc5a,_0x26e439,_0x398ecb){return new BPromise(function(_0x4e90cd,_0xc44b27){return client[_0x629b('0xc')](_0x4acc5a,_0x398ecb)['then'](function(_0x28c152){logger[_0x629b('0xd')](_0x629b('0xe'),_0x26e439,_0x629b('0xf'));logger[_0x629b('0x10')](_0x629b('0x11'),_0x26e439,_0x629b('0xf'),JSON[_0x629b('0x12')](_0x28c152));if(_0x28c152[_0x629b('0x13')]){if(_0x28c152[_0x629b('0x13')]['code']===0x1f4){logger['error'](_0x629b('0xe'),_0x26e439,_0x28c152[_0x629b('0x13')][_0x629b('0x14')]);return _0xc44b27(_0x28c152['error'][_0x629b('0x14')]);}logger[_0x629b('0x13')](_0x629b('0xe'),_0x26e439,_0x28c152[_0x629b('0x13')]['message']);return _0x4e90cd(_0x28c152[_0x629b('0x13')][_0x629b('0x14')]);}else{logger[_0x629b('0xd')](_0x629b('0xe'),_0x26e439,_0x629b('0xf'));_0x4e90cd(_0x28c152['result'][_0x629b('0x14')]);}})['catch'](function(_0x151b93){logger[_0x629b('0x13')](_0x629b('0xe'),_0x26e439,_0x151b93);_0xc44b27(_0x151b93);});});}
\ No newline at end of file
index 290d01e..3093fd2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb28=['delete','destroy','/:id/oauth2/microsoft/authorize/','oauth2MicrosoftAuthorize','/oauth2/microsoft/callback','oauth2MicrosoftCallback','express','Router','../../components/auth/service','./cloudProvider.controller','isAuthenticated','index','get','/:id','post','update'];(function(_0x516792,_0x4a6f77){var _0x572f41=function(_0x593c29){while(--_0x593c29){_0x516792['push'](_0x516792['shift']());}};_0x572f41(++_0x4a6f77);}(_0xdb28,0x106));var _0x8db2=function(_0x5677a2,_0x492eaf){_0x5677a2=_0x5677a2-0x0;var _0x483d36=_0xdb28[_0x5677a2];return _0x483d36;};'use strict';var express=require(_0x8db2('0x0'));var router=express[_0x8db2('0x1')]();var auth=require(_0x8db2('0x2'));var controller=require(_0x8db2('0x3'));router['get']('/',auth[_0x8db2('0x4')](),controller[_0x8db2('0x5')]);router[_0x8db2('0x6')](_0x8db2('0x7'),auth[_0x8db2('0x4')](),controller['show']);router[_0x8db2('0x8')]('/',auth[_0x8db2('0x4')](),controller['create']);router['put'](_0x8db2('0x7'),auth[_0x8db2('0x4')](),controller[_0x8db2('0x9')]);router[_0x8db2('0xa')](_0x8db2('0x7'),auth[_0x8db2('0x4')](),controller[_0x8db2('0xb')]);router['get'](_0x8db2('0xc'),auth[_0x8db2('0x4')](),controller[_0x8db2('0xd')]);router['post'](_0x8db2('0xe'),controller[_0x8db2('0xf')]);module['exports']=router;
\ No newline at end of file
+var _0xdb28=['delete','destroy','/:id/oauth2/microsoft/authorize/','oauth2MicrosoftAuthorize','/oauth2/microsoft/callback','oauth2MicrosoftCallback','express','Router','../../components/auth/service','./cloudProvider.controller','isAuthenticated','index','get','/:id','post','update'];(function(_0x30fa27,_0x5308f7){var _0x3e8406=function(_0x4e4992){while(--_0x4e4992){_0x30fa27['push'](_0x30fa27['shift']());}};_0x3e8406(++_0x5308f7);}(_0xdb28,0x106));var _0x8db2=function(_0x3ac90f,_0x157cdf){_0x3ac90f=_0x3ac90f-0x0;var _0x68e867=_0xdb28[_0x3ac90f];return _0x68e867;};'use strict';var express=require(_0x8db2('0x0'));var router=express[_0x8db2('0x1')]();var auth=require(_0x8db2('0x2'));var controller=require(_0x8db2('0x3'));router['get']('/',auth[_0x8db2('0x4')](),controller[_0x8db2('0x5')]);router[_0x8db2('0x6')](_0x8db2('0x7'),auth[_0x8db2('0x4')](),controller['show']);router[_0x8db2('0x8')]('/',auth[_0x8db2('0x4')](),controller['create']);router['put'](_0x8db2('0x7'),auth[_0x8db2('0x4')](),controller[_0x8db2('0x9')]);router[_0x8db2('0xa')](_0x8db2('0x7'),auth[_0x8db2('0x4')](),controller[_0x8db2('0xb')]);router['get'](_0x8db2('0xc'),auth[_0x8db2('0x4')](),controller[_0x8db2('0xd')]);router['post'](_0x8db2('0xe'),controller[_0x8db2('0xf')]);module['exports']=router;
\ No newline at end of file
index 124b2eb..32bf445 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc123=['name','exports','STRING'];(function(_0x59e7e0,_0x3ec148){var _0x26b058=function(_0x212ee2){while(--_0x212ee2){_0x59e7e0['push'](_0x59e7e0['shift']());}};_0x26b058(++_0x3ec148);}(_0xc123,0x193));var _0x3c12=function(_0x35ef6b,_0x4f9e69){_0x35ef6b=_0x35ef6b-0x0;var _0x44127e=_0xc123[_0x35ef6b];return _0x44127e;};'use strict';var Sequelize=require('sequelize');module[_0x3c12('0x0')]={'name':{'type':Sequelize[_0x3c12('0x1')],'unique':_0x3c12('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize[_0x3c12('0x1')]},'companyId':{'type':Sequelize[_0x3c12('0x1')]},'website':{'type':Sequelize[_0x3c12('0x1')]},'phone':{'type':Sequelize[_0x3c12('0x1')]},'fax':{'type':Sequelize['STRING']},'type':{'type':Sequelize['STRING']},'street':{'type':Sequelize['STRING']},'postalCode':{'type':Sequelize['STRING']},'city':{'type':Sequelize[_0x3c12('0x1')]},'country':{'type':Sequelize['STRING']},'email':{'type':Sequelize[_0x3c12('0x1')],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize[_0x3c12('0x1')]},'sStreet':{'type':Sequelize['STRING']},'sPostalCode':{'type':Sequelize['STRING']},'sCity':{'type':Sequelize['STRING']},'sCountry':{'type':Sequelize[_0x3c12('0x1')]},'description':{'type':Sequelize[_0x3c12('0x1')]}};
\ No newline at end of file
+var _0x94fe=['exports','STRING','name','sequelize'];(function(_0x4169d8,_0x3d7cd4){var _0x32084a=function(_0x5f59c6){while(--_0x5f59c6){_0x4169d8['push'](_0x4169d8['shift']());}};_0x32084a(++_0x3d7cd4);}(_0x94fe,0x167));var _0xe94f=function(_0x399fee,_0x4b5607){_0x399fee=_0x399fee-0x0;var _0x370d21=_0x94fe[_0x399fee];return _0x370d21;};'use strict';var Sequelize=require(_0xe94f('0x0'));module[_0xe94f('0x1')]={'name':{'type':Sequelize[_0xe94f('0x2')],'unique':_0xe94f('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize[_0xe94f('0x2')]},'companyId':{'type':Sequelize['STRING']},'website':{'type':Sequelize[_0xe94f('0x2')]},'phone':{'type':Sequelize[_0xe94f('0x2')]},'fax':{'type':Sequelize[_0xe94f('0x2')]},'type':{'type':Sequelize[_0xe94f('0x2')]},'street':{'type':Sequelize[_0xe94f('0x2')]},'postalCode':{'type':Sequelize[_0xe94f('0x2')]},'city':{'type':Sequelize[_0xe94f('0x2')]},'country':{'type':Sequelize[_0xe94f('0x2')]},'email':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize[_0xe94f('0x2')]},'sStreet':{'type':Sequelize[_0xe94f('0x2')]},'sPostalCode':{'type':Sequelize['STRING']},'sCity':{'type':Sequelize[_0xe94f('0x2')]},'sCountry':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xe94f('0x2')]}};
\ No newline at end of file
index d7651fb..b98b6d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa405=['length','hasOwnProperty','nolimit','order','sort','where','filter','merge','includeAll','include','findAll','rows','catch','show','params','rawAttributes','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','autoAssociation','update','addContacts','ids','getContacts','findOne','CmContact','pick','map','options','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','end','json','undefined','limit','count','offset','status','set','apply','reject','then','get','Companies','UserProfileResource','destroy','sendStatus','error','stack','name','send','index','CmCompany','describe','query','keys','filters','intersection','model','attributes','fields'];(function(_0x2b24d0,_0x49b3d7){var _0x1a2482=function(_0x4c22ad){while(--_0x4c22ad){_0x2b24d0['push'](_0x2b24d0['shift']());}};_0x1a2482(++_0x49b3d7);}(_0xa405,0x17a));var _0x5a40=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0xa405[_0x167cc1];return _0x10bc4b;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x5a40('0x0'));var jsonpatch=require(_0x5a40('0x1'));var rp=require(_0x5a40('0x2'));var moment=require(_0x5a40('0x3'));var BPromise=require(_0x5a40('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x5a40('0x5'));var sox=require('sox');var csv=require(_0x5a40('0x6'));var ejs=require(_0x5a40('0x7'));var fs=require('fs');var fs_extra=require(_0x5a40('0x8'));var _=require(_0x5a40('0x9'));var squel=require('squel');var crypto=require(_0x5a40('0xa'));var jsforce=require(_0x5a40('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x5a40('0x6'));var querystring=require(_0x5a40('0xc'));var Papa=require(_0x5a40('0xd'));var Redis=require('ioredis');var authService=require(_0x5a40('0xe'));var qs=require(_0x5a40('0xf'));var as=require(_0x5a40('0x10'));var hardwareService=require(_0x5a40('0x11'));var logger=require('../../config/logger')(_0x5a40('0x12'));var utils=require(_0x5a40('0x13'));var config=require(_0x5a40('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x5a40('0x15'))['db'];function respondWithStatusCode(_0x45e1d4,_0x210d6f){_0x210d6f=_0x210d6f||0xcc;return function(_0x3d3667){if(_0x3d3667){return _0x45e1d4['sendStatus'](_0x210d6f);}return _0x45e1d4['status'](_0x210d6f)[_0x5a40('0x16')]();};}function respondWithResult(_0x30ed53,_0x8e46ed){_0x8e46ed=_0x8e46ed||0xc8;return function(_0x1fb40d){if(_0x1fb40d){return _0x30ed53['status'](_0x8e46ed)[_0x5a40('0x17')](_0x1fb40d);}};}function respondWithFilteredResult(_0x34b51d,_0x26af94){return function(_0x427057){if(_0x427057){var _0xb5fa95=typeof _0x26af94['offset']===_0x5a40('0x18')&&typeof _0x26af94[_0x5a40('0x19')]===_0x5a40('0x18');var _0x2c4162=_0x427057[_0x5a40('0x1a')];var _0x55cf33=_0xb5fa95?0x0:_0x26af94[_0x5a40('0x1b')];var _0x5c0dc1=_0xb5fa95?_0x427057['count']:_0x26af94[_0x5a40('0x1b')]+_0x26af94[_0x5a40('0x19')];var _0x53de0b;if(_0x5c0dc1>=_0x2c4162){_0x5c0dc1=_0x2c4162;_0x53de0b=0xc8;}else{_0x53de0b=0xce;}_0x34b51d[_0x5a40('0x1c')](_0x53de0b);return _0x34b51d[_0x5a40('0x1d')]('Content-Range',_0x55cf33+'-'+_0x5c0dc1+'/'+_0x2c4162)['json'](_0x427057);}return null;};}function patchUpdates(_0x14fa97){return function(_0xc3253d){try{jsonpatch[_0x5a40('0x1e')](_0xc3253d,_0x14fa97,!![]);}catch(_0x548166){return BPromise[_0x5a40('0x1f')](_0x548166);}return _0xc3253d['save']();};}function saveUpdates(_0x42bc67,_0x22a35f){return function(_0x185005){if(_0x185005){return _0x185005['update'](_0x42bc67)[_0x5a40('0x20')](function(_0x131947){return _0x131947;});}return null;};}function removeEntity(_0x3334d1,_0x3121cd){return function(_0x57d253){if(_0x57d253){return _0x57d253['destroy']()[_0x5a40('0x20')](function(){var _0x1d1921=_0x57d253[_0x5a40('0x21')]({'plain':!![]});var _0x9eab1c=_0x5a40('0x22');return db[_0x5a40('0x23')][_0x5a40('0x24')]({'where':{'type':_0x9eab1c,'resourceId':_0x1d1921['id']}})[_0x5a40('0x20')](function(){return _0x57d253;});})[_0x5a40('0x20')](function(){_0x3334d1[_0x5a40('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x18cd35,_0x1e80bc){return function(_0x3d9bb9){if(!_0x3d9bb9){_0x18cd35[_0x5a40('0x25')](0x194);}return _0x3d9bb9;};}function handleError(_0x1902e0,_0x2f40c7){_0x2f40c7=_0x2f40c7||0x1f4;return function(_0x2d1f29){logger[_0x5a40('0x26')](_0x2d1f29[_0x5a40('0x27')]);if(_0x2d1f29[_0x5a40('0x28')]){delete _0x2d1f29['name'];}_0x1902e0[_0x5a40('0x1c')](_0x2f40c7)[_0x5a40('0x29')](_0x2d1f29);};}exports[_0x5a40('0x2a')]=function(_0x17046b,_0x162a7c){var _0x5cd22a={},_0x19b0a2={},_0x1ae9ee={'count':0x0,'rows':[]};return db[_0x5a40('0x2b')][_0x5a40('0x2c')]()[_0x5a40('0x20')](function(_0x4f44f2){_0x19b0a2['model']=_['keys'](_0x4f44f2);_0x19b0a2[_0x5a40('0x2d')]=_[_0x5a40('0x2e')](_0x17046b[_0x5a40('0x2d')]);_0x19b0a2[_0x5a40('0x2f')]=_[_0x5a40('0x30')](_0x19b0a2[_0x5a40('0x31')],_0x19b0a2['query']);_0x5cd22a[_0x5a40('0x32')]=_[_0x5a40('0x30')](_0x19b0a2['model'],qs['fields'](_0x17046b[_0x5a40('0x2d')][_0x5a40('0x33')]));_0x5cd22a['attributes']=_0x5cd22a[_0x5a40('0x32')][_0x5a40('0x34')]?_0x5cd22a['attributes']:_0x19b0a2[_0x5a40('0x31')];if(!_0x17046b['query'][_0x5a40('0x35')](_0x5a40('0x36'))){_0x5cd22a[_0x5a40('0x19')]=qs[_0x5a40('0x19')](_0x17046b['query'][_0x5a40('0x19')]);_0x5cd22a[_0x5a40('0x1b')]=qs[_0x5a40('0x1b')](_0x17046b[_0x5a40('0x2d')]['offset']);}_0x5cd22a[_0x5a40('0x37')]=qs[_0x5a40('0x38')](_0x17046b[_0x5a40('0x2d')]['sort']);_0x5cd22a[_0x5a40('0x39')]=qs[_0x5a40('0x2f')](_['pick'](_0x17046b[_0x5a40('0x2d')],_0x19b0a2['filters']),_0x4f44f2);if(_0x17046b['query'][_0x5a40('0x3a')]){_0x5cd22a['where']=_[_0x5a40('0x3b')](_0x5cd22a[_0x5a40('0x39')],{'$or':_['map'](_0x5cd22a[_0x5a40('0x32')],function(_0x20a1a6){var _0x491281={};_0x491281[_0x20a1a6]={'$like':'%'+_0x17046b[_0x5a40('0x2d')][_0x5a40('0x3a')]+'%'};return _0x491281;})});}_0x5cd22a=_[_0x5a40('0x3b')]({},_0x5cd22a,_0x17046b['options']);var _0x16e05c={'where':_0x5cd22a[_0x5a40('0x39')]};return db[_0x5a40('0x2b')][_0x5a40('0x1a')](_0x16e05c)[_0x5a40('0x20')](function(_0x8762fa){_0x1ae9ee[_0x5a40('0x1a')]=_0x8762fa;if(_0x17046b[_0x5a40('0x2d')][_0x5a40('0x3c')]){_0x5cd22a[_0x5a40('0x3d')]=[{'all':!![]}];}return db[_0x5a40('0x2b')][_0x5a40('0x3e')](_0x5cd22a);})['then'](function(_0x183a9e){_0x1ae9ee[_0x5a40('0x3f')]=_0x183a9e;return _0x1ae9ee;})[_0x5a40('0x20')](respondWithFilteredResult(_0x162a7c,_0x5cd22a))[_0x5a40('0x40')](handleError(_0x162a7c,null));})[_0x5a40('0x40')](handleError(_0x162a7c,null));};exports[_0x5a40('0x41')]=function(_0x15fa3a,_0x2ad417){var _0x2f369e={'raw':![],'where':{'id':_0x15fa3a[_0x5a40('0x42')]['id']}},_0x1e7541={};_0x1e7541[_0x5a40('0x31')]=_[_0x5a40('0x2e')](db[_0x5a40('0x2b')][_0x5a40('0x43')]);_0x1e7541[_0x5a40('0x2d')]=_['keys'](_0x15fa3a['query']);_0x1e7541[_0x5a40('0x2f')]=_['intersection'](_0x1e7541['model'],_0x1e7541['query']);_0x2f369e[_0x5a40('0x32')]=_['intersection'](_0x1e7541[_0x5a40('0x31')],qs[_0x5a40('0x33')](_0x15fa3a[_0x5a40('0x2d')][_0x5a40('0x33')]));_0x2f369e[_0x5a40('0x32')]=_0x2f369e[_0x5a40('0x32')]['length']?_0x2f369e['attributes']:_0x1e7541[_0x5a40('0x31')];if(_0x15fa3a[_0x5a40('0x2d')][_0x5a40('0x3c')]){_0x2f369e[_0x5a40('0x3d')]=[{'all':!![]}];}_0x2f369e=_['merge']({},_0x2f369e,_0x15fa3a['options']);return db['CmCompany']['find'](_0x2f369e)[_0x5a40('0x20')](handleEntityNotFound(_0x2ad417,null))[_0x5a40('0x20')](respondWithResult(_0x2ad417,null))[_0x5a40('0x40')](handleError(_0x2ad417,null));};exports[_0x5a40('0x44')]=function(_0x16debb,_0xa6c571){return db[_0x5a40('0x2b')][_0x5a40('0x44')](_0x16debb[_0x5a40('0x45')],{})['then'](function(_0x4ea44f){var _0x21317f=_0x16debb[_0x5a40('0x46')][_0x5a40('0x21')]({'plain':!![]});if(!_0x21317f)throw new Error(_0x5a40('0x47'));if(_0x21317f[_0x5a40('0x48')]==='user'){var _0x308f95=_0x4ea44f['get']({'plain':!![]});var _0x4e7e70=_0x5a40('0x22');return db[_0x5a40('0x49')][_0x5a40('0x4a')]({'where':{'name':_0x4e7e70,'userProfileId':_0x21317f[_0x5a40('0x4b')]},'raw':!![]})[_0x5a40('0x20')](function(_0x40ee41){if(_0x40ee41&&_0x40ee41[_0x5a40('0x4c')]===0x0){return db[_0x5a40('0x23')][_0x5a40('0x44')]({'name':_0x308f95[_0x5a40('0x28')],'resourceId':_0x308f95['id'],'type':_0x40ee41[_0x5a40('0x28')],'sectionId':_0x40ee41['id']},{})[_0x5a40('0x20')](function(){return _0x4ea44f;});}else{return _0x4ea44f;}})[_0x5a40('0x40')](function(_0x5e2364){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5e2364);throw _0x5e2364;});}return _0x4ea44f;})[_0x5a40('0x20')](respondWithResult(_0xa6c571,0xc9))[_0x5a40('0x40')](handleError(_0xa6c571,null));};exports[_0x5a40('0x4d')]=function(_0x24cadb,_0x28f277){if(_0x24cadb[_0x5a40('0x45')]['id']){delete _0x24cadb[_0x5a40('0x45')]['id'];}return db[_0x5a40('0x2b')][_0x5a40('0x4a')]({'where':{'id':_0x24cadb[_0x5a40('0x42')]['id']}})['then'](handleEntityNotFound(_0x28f277,null))['then'](saveUpdates(_0x24cadb[_0x5a40('0x45')],null))[_0x5a40('0x20')](respondWithResult(_0x28f277,null))[_0x5a40('0x40')](handleError(_0x28f277,null));};exports['destroy']=function(_0x375e22,_0x50bb3a){return db[_0x5a40('0x2b')][_0x5a40('0x4a')]({'where':{'id':_0x375e22['params']['id']}})[_0x5a40('0x20')](handleEntityNotFound(_0x50bb3a,null))[_0x5a40('0x20')](removeEntity(_0x50bb3a,null))['catch'](handleError(_0x50bb3a,null));};exports[_0x5a40('0x2c')]=function(_0x2d8359,_0x3ad27c){return db[_0x5a40('0x2b')][_0x5a40('0x2c')]()['then'](respondWithResult(_0x3ad27c,null))[_0x5a40('0x40')](handleError(_0x3ad27c,null));};exports[_0x5a40('0x4e')]=function(_0x587e00,_0x4b08f6,_0x35cd92){return db['CmContact'][_0x5a40('0x4a')]({'where':{'id':_0x587e00['params']['id']}})[_0x5a40('0x20')](handleEntityNotFound(_0x4b08f6,null))[_0x5a40('0x20')](function(_0x302d9a){if(_0x302d9a){return _0x302d9a['addContacts'](_0x587e00[_0x5a40('0x45')][_0x5a40('0x4f')],_['omit'](_0x587e00['body'],[_0x5a40('0x4f'),'id'])||{});}})['then'](respondWithResult(_0x4b08f6,null))[_0x5a40('0x40')](handleError(_0x4b08f6,null));};exports[_0x5a40('0x50')]=function(_0x4eab13,_0x1d16da,_0x5d7ba7){var _0x152344={};var _0x3692c8={};var _0x294495;var _0x40652f;return db[_0x5a40('0x2b')][_0x5a40('0x51')]({'where':{'id':_0x4eab13[_0x5a40('0x42')]['id']}})['then'](handleEntityNotFound(_0x1d16da,null))[_0x5a40('0x20')](function(_0x3af824){if(_0x3af824){_0x294495=_0x3af824;_0x3692c8[_0x5a40('0x31')]=_['keys'](db[_0x5a40('0x52')][_0x5a40('0x43')]);_0x3692c8[_0x5a40('0x2d')]=_[_0x5a40('0x2e')](_0x4eab13['query']);_0x3692c8['filters']=_[_0x5a40('0x30')](_0x3692c8['model'],_0x3692c8[_0x5a40('0x2d')]);_0x152344[_0x5a40('0x32')]=_[_0x5a40('0x30')](_0x3692c8[_0x5a40('0x31')],qs[_0x5a40('0x33')](_0x4eab13[_0x5a40('0x2d')]['fields']));_0x152344[_0x5a40('0x32')]=_0x152344[_0x5a40('0x32')][_0x5a40('0x34')]?_0x152344[_0x5a40('0x32')]:_0x3692c8[_0x5a40('0x31')];_0x152344['order']=qs[_0x5a40('0x38')](_0x4eab13['query'][_0x5a40('0x38')]);_0x152344[_0x5a40('0x39')]=qs[_0x5a40('0x2f')](_[_0x5a40('0x53')](_0x4eab13[_0x5a40('0x2d')],_0x3692c8[_0x5a40('0x2f')]));if(_0x4eab13['query']['filter']){_0x152344['where']=_[_0x5a40('0x3b')](_0x152344[_0x5a40('0x39')],{'$or':_[_0x5a40('0x54')](_0x152344[_0x5a40('0x32')],function(_0x3acc50){var _0xbf46e2={};_0xbf46e2[_0x3acc50]={'$like':'%'+_0x4eab13[_0x5a40('0x2d')]['filter']+'%'};return _0xbf46e2;})});}_0x152344=_['merge']({},_0x152344,_0x4eab13[_0x5a40('0x55')]);return _0x294495['getContacts'](_0x152344);}})['then'](function(_0x55a7cf){if(_0x55a7cf){_0x40652f=_0x55a7cf['length'];if(!_0x4eab13['query'][_0x5a40('0x35')](_0x5a40('0x36'))){_0x152344[_0x5a40('0x19')]=qs[_0x5a40('0x19')](_0x4eab13[_0x5a40('0x2d')][_0x5a40('0x19')]);_0x152344[_0x5a40('0x1b')]=qs[_0x5a40('0x1b')](_0x4eab13[_0x5a40('0x2d')]['offset']);}return _0x294495['getContacts'](_0x152344);}})['then'](function(_0x3a1692){if(_0x3a1692){return _0x3a1692?{'count':_0x40652f,'rows':_0x3a1692}:null;}})[_0x5a40('0x20')](respondWithResult(_0x1d16da,null))['catch'](handleError(_0x1d16da,null));};
\ No newline at end of file
+var _0x8f10=['apply','reject','save','update','then','get','Companies','UserProfileResource','destroy','error','stack','name','index','CmCompany','query','keys','filters','model','fields','attributes','length','nolimit','order','sort','pick','filter','merge','where','map','options','includeAll','include','rows','catch','show','params','rawAttributes','intersection','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','addContacts','CmContact','omit','ids','getContacts','findOne','hasOwnProperty','eml-format','rimraf','fast-json-patch','request-promise','moment','util','path','sox','ejs','fs-extra','lodash','squel','jsforce','../../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'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x8f10,0x8d));var _0x08f1=function(_0x1044c7,_0x4a0af8){_0x1044c7=_0x1044c7-0x0;var _0x3a6c7c=_0x8f10[_0x1044c7];return _0x3a6c7c;};'use strict';var emlformat=require(_0x08f1('0x0'));var rimraf=require(_0x08f1('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x08f1('0x2'));var rp=require(_0x08f1('0x3'));var moment=require(_0x08f1('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x08f1('0x5'));var path=require(_0x08f1('0x6'));var sox=require(_0x08f1('0x7'));var csv=require('to-csv');var ejs=require(_0x08f1('0x8'));var fs=require('fs');var fs_extra=require(_0x08f1('0x9'));var _=require(_0x08f1('0xa'));var squel=require(_0x08f1('0xb'));var crypto=require('crypto');var jsforce=require(_0x08f1('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x08f1('0xd'));var qs=require(_0x08f1('0xe'));var as=require(_0x08f1('0xf'));var hardwareService=require(_0x08f1('0x10'));var logger=require('../../config/logger')(_0x08f1('0x11'));var utils=require(_0x08f1('0x12'));var config=require(_0x08f1('0x13'));var licenseUtil=require(_0x08f1('0x14'));var db=require(_0x08f1('0x15'))['db'];function respondWithStatusCode(_0x1599cf,_0x38abb6){_0x38abb6=_0x38abb6||0xcc;return function(_0x286c27){if(_0x286c27){return _0x1599cf[_0x08f1('0x16')](_0x38abb6);}return _0x1599cf['status'](_0x38abb6)[_0x08f1('0x17')]();};}function respondWithResult(_0x5266c1,_0xa46a18){_0xa46a18=_0xa46a18||0xc8;return function(_0x1a9350){if(_0x1a9350){return _0x5266c1[_0x08f1('0x18')](_0xa46a18)[_0x08f1('0x19')](_0x1a9350);}};}function respondWithFilteredResult(_0x246afb,_0x455c72){return function(_0x3ae192){if(_0x3ae192){var _0x372cc0=typeof _0x455c72[_0x08f1('0x1a')]===_0x08f1('0x1b')&&typeof _0x455c72[_0x08f1('0x1c')]===_0x08f1('0x1b');var _0x2a5f01=_0x3ae192[_0x08f1('0x1d')];var _0x284bfc=_0x372cc0?0x0:_0x455c72[_0x08f1('0x1a')];var _0x7236c9=_0x372cc0?_0x3ae192[_0x08f1('0x1d')]:_0x455c72[_0x08f1('0x1a')]+_0x455c72[_0x08f1('0x1c')];var _0x41fdca;if(_0x7236c9>=_0x2a5f01){_0x7236c9=_0x2a5f01;_0x41fdca=0xc8;}else{_0x41fdca=0xce;}_0x246afb['status'](_0x41fdca);return _0x246afb[_0x08f1('0x1e')]('Content-Range',_0x284bfc+'-'+_0x7236c9+'/'+_0x2a5f01)[_0x08f1('0x19')](_0x3ae192);}return null;};}function patchUpdates(_0x2d50e3){return function(_0x567080){try{jsonpatch[_0x08f1('0x1f')](_0x567080,_0x2d50e3,!![]);}catch(_0x5d7235){return BPromise[_0x08f1('0x20')](_0x5d7235);}return _0x567080[_0x08f1('0x21')]();};}function saveUpdates(_0x262db7,_0x5174ee){return function(_0x51ada3){if(_0x51ada3){return _0x51ada3[_0x08f1('0x22')](_0x262db7)[_0x08f1('0x23')](function(_0x4abebc){return _0x4abebc;});}return null;};}function removeEntity(_0x271d9c,_0x37eebb){return function(_0x45e64b){if(_0x45e64b){return _0x45e64b['destroy']()[_0x08f1('0x23')](function(){var _0x4c3cb0=_0x45e64b[_0x08f1('0x24')]({'plain':!![]});var _0x4fc990=_0x08f1('0x25');return db[_0x08f1('0x26')][_0x08f1('0x27')]({'where':{'type':_0x4fc990,'resourceId':_0x4c3cb0['id']}})[_0x08f1('0x23')](function(){return _0x45e64b;});})[_0x08f1('0x23')](function(){_0x271d9c['status'](0xcc)[_0x08f1('0x17')]();});}};}function handleEntityNotFound(_0x4e3d12,_0xb95718){return function(_0x2b7533){if(!_0x2b7533){_0x4e3d12[_0x08f1('0x16')](0x194);}return _0x2b7533;};}function handleError(_0x331117,_0x1c3a03){_0x1c3a03=_0x1c3a03||0x1f4;return function(_0x57a470){logger[_0x08f1('0x28')](_0x57a470[_0x08f1('0x29')]);if(_0x57a470['name']){delete _0x57a470[_0x08f1('0x2a')];}_0x331117[_0x08f1('0x18')](_0x1c3a03)['send'](_0x57a470);};}exports[_0x08f1('0x2b')]=function(_0x218bae,_0x49fdf3){var _0x36651f={},_0x323996={},_0x1cd6e6={'count':0x0,'rows':[]};return db[_0x08f1('0x2c')]['describe']()[_0x08f1('0x23')](function(_0x5d0c01){_0x323996['model']=_['keys'](_0x5d0c01);_0x323996[_0x08f1('0x2d')]=_[_0x08f1('0x2e')](_0x218bae[_0x08f1('0x2d')]);_0x323996[_0x08f1('0x2f')]=_['intersection'](_0x323996[_0x08f1('0x30')],_0x323996[_0x08f1('0x2d')]);_0x36651f['attributes']=_['intersection'](_0x323996[_0x08f1('0x30')],qs[_0x08f1('0x31')](_0x218bae['query']['fields']));_0x36651f[_0x08f1('0x32')]=_0x36651f[_0x08f1('0x32')][_0x08f1('0x33')]?_0x36651f[_0x08f1('0x32')]:_0x323996[_0x08f1('0x30')];if(!_0x218bae[_0x08f1('0x2d')]['hasOwnProperty'](_0x08f1('0x34'))){_0x36651f[_0x08f1('0x1c')]=qs[_0x08f1('0x1c')](_0x218bae[_0x08f1('0x2d')][_0x08f1('0x1c')]);_0x36651f['offset']=qs[_0x08f1('0x1a')](_0x218bae[_0x08f1('0x2d')]['offset']);}_0x36651f[_0x08f1('0x35')]=qs[_0x08f1('0x36')](_0x218bae[_0x08f1('0x2d')][_0x08f1('0x36')]);_0x36651f['where']=qs[_0x08f1('0x2f')](_[_0x08f1('0x37')](_0x218bae[_0x08f1('0x2d')],_0x323996[_0x08f1('0x2f')]),_0x5d0c01);if(_0x218bae[_0x08f1('0x2d')][_0x08f1('0x38')]){_0x36651f['where']=_[_0x08f1('0x39')](_0x36651f[_0x08f1('0x3a')],{'$or':_[_0x08f1('0x3b')](_0x36651f['attributes'],function(_0x4f720d){var _0x2d1672={};_0x2d1672[_0x4f720d]={'$like':'%'+_0x218bae['query']['filter']+'%'};return _0x2d1672;})});}_0x36651f=_[_0x08f1('0x39')]({},_0x36651f,_0x218bae[_0x08f1('0x3c')]);var _0x3b28ec={'where':_0x36651f[_0x08f1('0x3a')]};return db[_0x08f1('0x2c')][_0x08f1('0x1d')](_0x3b28ec)[_0x08f1('0x23')](function(_0x16bcb2){_0x1cd6e6[_0x08f1('0x1d')]=_0x16bcb2;if(_0x218bae[_0x08f1('0x2d')][_0x08f1('0x3d')]){_0x36651f[_0x08f1('0x3e')]=[{'all':!![]}];}return db['CmCompany']['findAll'](_0x36651f);})[_0x08f1('0x23')](function(_0x56499b){_0x1cd6e6[_0x08f1('0x3f')]=_0x56499b;return _0x1cd6e6;})[_0x08f1('0x23')](respondWithFilteredResult(_0x49fdf3,_0x36651f))[_0x08f1('0x40')](handleError(_0x49fdf3,null));})[_0x08f1('0x40')](handleError(_0x49fdf3,null));};exports[_0x08f1('0x41')]=function(_0x634347,_0x210d5a){var _0x9c2810={'raw':![],'where':{'id':_0x634347[_0x08f1('0x42')]['id']}},_0x4a917d={};_0x4a917d['model']=_[_0x08f1('0x2e')](db[_0x08f1('0x2c')][_0x08f1('0x43')]);_0x4a917d[_0x08f1('0x2d')]=_[_0x08f1('0x2e')](_0x634347[_0x08f1('0x2d')]);_0x4a917d['filters']=_[_0x08f1('0x44')](_0x4a917d[_0x08f1('0x30')],_0x4a917d[_0x08f1('0x2d')]);_0x9c2810[_0x08f1('0x32')]=_[_0x08f1('0x44')](_0x4a917d[_0x08f1('0x30')],qs[_0x08f1('0x31')](_0x634347[_0x08f1('0x2d')][_0x08f1('0x31')]));_0x9c2810['attributes']=_0x9c2810['attributes'][_0x08f1('0x33')]?_0x9c2810[_0x08f1('0x32')]:_0x4a917d[_0x08f1('0x30')];if(_0x634347[_0x08f1('0x2d')][_0x08f1('0x3d')]){_0x9c2810[_0x08f1('0x3e')]=[{'all':!![]}];}_0x9c2810=_[_0x08f1('0x39')]({},_0x9c2810,_0x634347[_0x08f1('0x3c')]);return db['CmCompany'][_0x08f1('0x45')](_0x9c2810)[_0x08f1('0x23')](handleEntityNotFound(_0x210d5a,null))[_0x08f1('0x23')](respondWithResult(_0x210d5a,null))['catch'](handleError(_0x210d5a,null));};exports[_0x08f1('0x46')]=function(_0x302021,_0x439ee0){return db[_0x08f1('0x2c')][_0x08f1('0x46')](_0x302021['body'],{})[_0x08f1('0x23')](function(_0x595061){var _0x5d96bd=_0x302021[_0x08f1('0x47')][_0x08f1('0x24')]({'plain':!![]});if(!_0x5d96bd)throw new Error(_0x08f1('0x48'));if(_0x5d96bd[_0x08f1('0x49')]==='user'){var _0xe36b35=_0x595061['get']({'plain':!![]});var _0x551ee0=_0x08f1('0x25');return db['UserProfileSection'][_0x08f1('0x45')]({'where':{'name':_0x551ee0,'userProfileId':_0x5d96bd[_0x08f1('0x4a')]},'raw':!![]})['then'](function(_0xbec13c){if(_0xbec13c&&_0xbec13c[_0x08f1('0x4b')]===0x0){return db[_0x08f1('0x26')]['create']({'name':_0xe36b35[_0x08f1('0x2a')],'resourceId':_0xe36b35['id'],'type':_0xbec13c[_0x08f1('0x2a')],'sectionId':_0xbec13c['id']},{})[_0x08f1('0x23')](function(){return _0x595061;});}else{return _0x595061;}})[_0x08f1('0x40')](function(_0x459e16){logger[_0x08f1('0x28')](_0x08f1('0x4c'),_0x459e16);throw _0x459e16;});}return _0x595061;})[_0x08f1('0x23')](respondWithResult(_0x439ee0,0xc9))[_0x08f1('0x40')](handleError(_0x439ee0,null));};exports['update']=function(_0x513f34,_0x2906c3){if(_0x513f34['body']['id']){delete _0x513f34['body']['id'];}return db['CmCompany']['find']({'where':{'id':_0x513f34['params']['id']}})[_0x08f1('0x23')](handleEntityNotFound(_0x2906c3,null))['then'](saveUpdates(_0x513f34[_0x08f1('0x4d')],null))[_0x08f1('0x23')](respondWithResult(_0x2906c3,null))[_0x08f1('0x40')](handleError(_0x2906c3,null));};exports[_0x08f1('0x27')]=function(_0x56f845,_0x1b5aba){return db[_0x08f1('0x2c')]['find']({'where':{'id':_0x56f845[_0x08f1('0x42')]['id']}})['then'](handleEntityNotFound(_0x1b5aba,null))[_0x08f1('0x23')](removeEntity(_0x1b5aba,null))[_0x08f1('0x40')](handleError(_0x1b5aba,null));};exports[_0x08f1('0x4e')]=function(_0x1e09cc,_0xb50c15){return db[_0x08f1('0x2c')][_0x08f1('0x4e')]()['then'](respondWithResult(_0xb50c15,null))[_0x08f1('0x40')](handleError(_0xb50c15,null));};exports[_0x08f1('0x4f')]=function(_0x493fd9,_0x4fe106,_0x32ce99){return db[_0x08f1('0x50')][_0x08f1('0x45')]({'where':{'id':_0x493fd9['params']['id']}})[_0x08f1('0x23')](handleEntityNotFound(_0x4fe106,null))[_0x08f1('0x23')](function(_0xd55fbb){if(_0xd55fbb){return _0xd55fbb['addContacts'](_0x493fd9[_0x08f1('0x4d')]['ids'],_[_0x08f1('0x51')](_0x493fd9['body'],[_0x08f1('0x52'),'id'])||{});}})[_0x08f1('0x23')](respondWithResult(_0x4fe106,null))[_0x08f1('0x40')](handleError(_0x4fe106,null));};exports[_0x08f1('0x53')]=function(_0x5b480d,_0x45fece,_0x19cdd7){var _0xc9457f={};var _0x5aafba={};var _0x5ea46d;var _0x17514c;return db[_0x08f1('0x2c')][_0x08f1('0x54')]({'where':{'id':_0x5b480d[_0x08f1('0x42')]['id']}})[_0x08f1('0x23')](handleEntityNotFound(_0x45fece,null))[_0x08f1('0x23')](function(_0x13d9a9){if(_0x13d9a9){_0x5ea46d=_0x13d9a9;_0x5aafba[_0x08f1('0x30')]=_['keys'](db[_0x08f1('0x50')]['rawAttributes']);_0x5aafba[_0x08f1('0x2d')]=_[_0x08f1('0x2e')](_0x5b480d[_0x08f1('0x2d')]);_0x5aafba[_0x08f1('0x2f')]=_['intersection'](_0x5aafba[_0x08f1('0x30')],_0x5aafba[_0x08f1('0x2d')]);_0xc9457f[_0x08f1('0x32')]=_[_0x08f1('0x44')](_0x5aafba[_0x08f1('0x30')],qs[_0x08f1('0x31')](_0x5b480d[_0x08f1('0x2d')][_0x08f1('0x31')]));_0xc9457f['attributes']=_0xc9457f[_0x08f1('0x32')][_0x08f1('0x33')]?_0xc9457f[_0x08f1('0x32')]:_0x5aafba[_0x08f1('0x30')];_0xc9457f[_0x08f1('0x35')]=qs[_0x08f1('0x36')](_0x5b480d[_0x08f1('0x2d')]['sort']);_0xc9457f['where']=qs[_0x08f1('0x2f')](_[_0x08f1('0x37')](_0x5b480d[_0x08f1('0x2d')],_0x5aafba[_0x08f1('0x2f')]));if(_0x5b480d[_0x08f1('0x2d')]['filter']){_0xc9457f[_0x08f1('0x3a')]=_[_0x08f1('0x39')](_0xc9457f[_0x08f1('0x3a')],{'$or':_[_0x08f1('0x3b')](_0xc9457f['attributes'],function(_0x3c97f5){var _0x3cc7d0={};_0x3cc7d0[_0x3c97f5]={'$like':'%'+_0x5b480d[_0x08f1('0x2d')][_0x08f1('0x38')]+'%'};return _0x3cc7d0;})});}_0xc9457f=_['merge']({},_0xc9457f,_0x5b480d[_0x08f1('0x3c')]);return _0x5ea46d[_0x08f1('0x53')](_0xc9457f);}})[_0x08f1('0x23')](function(_0x4ce899){if(_0x4ce899){_0x17514c=_0x4ce899[_0x08f1('0x33')];if(!_0x5b480d[_0x08f1('0x2d')][_0x08f1('0x55')](_0x08f1('0x34'))){_0xc9457f[_0x08f1('0x1c')]=qs[_0x08f1('0x1c')](_0x5b480d['query'][_0x08f1('0x1c')]);_0xc9457f[_0x08f1('0x1a')]=qs[_0x08f1('0x1a')](_0x5b480d[_0x08f1('0x2d')][_0x08f1('0x1a')]);}return _0x5ea46d[_0x08f1('0x53')](_0xc9457f);}})[_0x08f1('0x23')](function(_0x4b0972){if(_0x4b0972){return _0x4b0972?{'count':_0x17514c,'rows':_0x4b0972}:null;}})[_0x08f1('0x23')](respondWithResult(_0x45fece,null))[_0x08f1('0x40')](handleError(_0x45fece,null));};
\ No newline at end of file
index c6c5609..adc859d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6069=['../../config/logger','moment','request-promise','path','rimraf','./cmCompany.attributes','CmCompany','cm_companies','lodash','util'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x6069,0x116));var _0x9606=function(_0x33b10b,_0x4e2125){_0x33b10b=_0x33b10b-0x0;var _0x1c360f=_0x6069[_0x33b10b];return _0x1c360f;};'use strict';var _=require(_0x9606('0x0'));var util=require(_0x9606('0x1'));var logger=require(_0x9606('0x2'))('api');var moment=require(_0x9606('0x3'));var BPromise=require('bluebird');var rp=require(_0x9606('0x4'));var fs=require('fs');var path=require(_0x9606('0x5'));var rimraf=require(_0x9606('0x6'));var config=require('../../config/environment');var attributes=require(_0x9606('0x7'));module['exports']=function(_0x578d5b,_0x4c7d1d){return _0x578d5b['define'](_0x9606('0x8'),attributes,{'tableName':_0x9606('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xeb95=['api','moment','bluebird','request-promise','path','./cmCompany.attributes','exports','CmCompany','cm_companies','lodash','util','../../config/logger'];(function(_0x26f874,_0x356227){var _0x5745c8=function(_0xafbf1b){while(--_0xafbf1b){_0x26f874['push'](_0x26f874['shift']());}};_0x5745c8(++_0x356227);}(_0xeb95,0x189));var _0x5eb9=function(_0x35bec6,_0x5c5c09){_0x35bec6=_0x35bec6-0x0;var _0x5ee065=_0xeb95[_0x35bec6];return _0x5ee065;};'use strict';var _=require(_0x5eb9('0x0'));var util=require(_0x5eb9('0x1'));var logger=require(_0x5eb9('0x2'))(_0x5eb9('0x3'));var moment=require(_0x5eb9('0x4'));var BPromise=require(_0x5eb9('0x5'));var rp=require(_0x5eb9('0x6'));var fs=require('fs');var path=require(_0x5eb9('0x7'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x5eb9('0x8'));module[_0x5eb9('0x9')]=function(_0x352ff4,_0x256940){return _0x352ff4['define'](_0x5eb9('0xa'),attributes,{'tableName':_0x5eb9('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4ed91d8..77c3fb2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb1c4=['info','CmCompany,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','then'];(function(_0x28ea2f,_0x4dd834){var _0x5f3a70=function(_0x4a0b8f){while(--_0x4a0b8f){_0x28ea2f['push'](_0x28ea2f['shift']());}};_0x5f3a70(++_0x4dd834);}(_0xb1c4,0x13d));var _0x4b1c=function(_0x3b2899,_0x39ea95){_0x3b2899=_0x3b2899-0x0;var _0x3baf72=_0xb1c4[_0x3b2899];return _0x3baf72;};'use strict';var _=require(_0x4b1c('0x0'));var util=require(_0x4b1c('0x1'));var moment=require(_0x4b1c('0x2'));var BPromise=require(_0x4b1c('0x3'));var rs=require(_0x4b1c('0x4'));var fs=require('fs');var Redis=require(_0x4b1c('0x5'));var db=require(_0x4b1c('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x4b1c('0x7'))(_0x4b1c('0x8'));var config=require(_0x4b1c('0x9'));var jayson=require(_0x4b1c('0xa'));var client=jayson['client'][_0x4b1c('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x154c2f,_0x3d9084,_0x24a4af){return new BPromise(function(_0x52112a,_0x51c5ad){return client['request'](_0x154c2f,_0x24a4af)[_0x4b1c('0xc')](function(_0x22b25b){logger[_0x4b1c('0xd')](_0x4b1c('0xe'),_0x3d9084,_0x4b1c('0xf'));logger[_0x4b1c('0x10')]('CmCompany,\x20%s,\x20%s,\x20%s',_0x3d9084,_0x4b1c('0xf'),JSON[_0x4b1c('0x11')](_0x22b25b));if(_0x22b25b[_0x4b1c('0x12')]){if(_0x22b25b[_0x4b1c('0x12')][_0x4b1c('0x13')]===0x1f4){logger[_0x4b1c('0x12')](_0x4b1c('0xe'),_0x3d9084,_0x22b25b['error'][_0x4b1c('0x14')]);return _0x51c5ad(_0x22b25b[_0x4b1c('0x12')][_0x4b1c('0x14')]);}logger[_0x4b1c('0x12')](_0x4b1c('0xe'),_0x3d9084,_0x22b25b[_0x4b1c('0x12')][_0x4b1c('0x14')]);return _0x52112a(_0x22b25b[_0x4b1c('0x12')][_0x4b1c('0x14')]);}else{logger[_0x4b1c('0xd')]('CmCompany,\x20%s,\x20%s',_0x3d9084,'request\x20sent');_0x52112a(_0x22b25b[_0x4b1c('0x15')][_0x4b1c('0x14')]);}})['catch'](function(_0x45b44e){logger[_0x4b1c('0x12')]('CmCompany,\x20%s,\x20%s',_0x3d9084,_0x45b44e);_0x51c5ad(_0x45b44e);});});}
\ No newline at end of file
+var _0xa7af=['CmCompany,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then','CmCompany,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x8307a7,_0x44271e){var _0x259694=function(_0xb106f){while(--_0xb106f){_0x8307a7['push'](_0x8307a7['shift']());}};_0x259694(++_0x44271e);}(_0xa7af,0xad));var _0xfa7a=function(_0x3173f2,_0x5d4f2f){_0x3173f2=_0x3173f2-0x0;var _0x488bb6=_0xa7af[_0x3173f2];return _0x488bb6;};'use strict';var _=require('lodash');var util=require(_0xfa7a('0x0'));var moment=require(_0xfa7a('0x1'));var BPromise=require(_0xfa7a('0x2'));var rs=require(_0xfa7a('0x3'));var fs=require('fs');var Redis=require(_0xfa7a('0x4'));var db=require(_0xfa7a('0x5'))['db'];var utils=require(_0xfa7a('0x6'));var logger=require(_0xfa7a('0x7'))(_0xfa7a('0x8'));var config=require('../../config/environment');var jayson=require(_0xfa7a('0x9'));var client=jayson[_0xfa7a('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x38c265,_0x58dc50,_0x3c016d){return new BPromise(function(_0x33b958,_0x5f181b){return client[_0xfa7a('0xb')](_0x38c265,_0x3c016d)[_0xfa7a('0xc')](function(_0x5c32ee){logger['info'](_0xfa7a('0xd'),_0x58dc50,_0xfa7a('0xe'));logger[_0xfa7a('0xf')](_0xfa7a('0x10'),_0x58dc50,_0xfa7a('0xe'),JSON[_0xfa7a('0x11')](_0x5c32ee));if(_0x5c32ee[_0xfa7a('0x12')]){if(_0x5c32ee[_0xfa7a('0x12')]['code']===0x1f4){logger[_0xfa7a('0x12')](_0xfa7a('0xd'),_0x58dc50,_0x5c32ee[_0xfa7a('0x12')]['message']);return _0x5f181b(_0x5c32ee[_0xfa7a('0x12')][_0xfa7a('0x13')]);}logger[_0xfa7a('0x12')](_0xfa7a('0xd'),_0x58dc50,_0x5c32ee[_0xfa7a('0x12')][_0xfa7a('0x13')]);return _0x33b958(_0x5c32ee['error'][_0xfa7a('0x13')]);}else{logger['info'](_0xfa7a('0xd'),_0x58dc50,_0xfa7a('0xe'));_0x33b958(_0x5c32ee['result'][_0xfa7a('0x13')]);}})[_0xfa7a('0x14')](function(_0x1c3fe9){logger['error'](_0xfa7a('0xd'),_0x58dc50,_0x1c3fe9);_0x5f181b(_0x1c3fe9);});});}
\ No newline at end of file
index 477fb67..dc7d422 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0517=['update','delete','destroy','multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','./cmCompany.controller','get','isAuthenticated','index','describe','/:id','show','/:id/contacts','post','create','addContacts'];(function(_0x5402e5,_0x1a70bf){var _0x5b216f=function(_0x3afff8){while(--_0x3afff8){_0x5402e5['push'](_0x5402e5['shift']());}};_0x5b216f(++_0x1a70bf);}(_0x0517,0x168));var _0x7051=function(_0x533326,_0xe6c046){_0x533326=_0x533326-0x0;var _0x206839=_0x0517[_0x533326];return _0x206839;};'use strict';var multer=require(_0x7051('0x0'));var util=require(_0x7051('0x1'));var path=require(_0x7051('0x2'));var timeout=require(_0x7051('0x3'));var express=require(_0x7051('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x7051('0x5'));var interaction=require(_0x7051('0x6'));var config=require('../../config/environment');var controller=require(_0x7051('0x7'));router[_0x7051('0x8')]('/',auth[_0x7051('0x9')](),controller[_0x7051('0xa')]);router[_0x7051('0x8')]('/describe',auth[_0x7051('0x9')](),controller[_0x7051('0xb')]);router['get'](_0x7051('0xc'),auth[_0x7051('0x9')](),controller[_0x7051('0xd')]);router[_0x7051('0x8')](_0x7051('0xe'),auth[_0x7051('0x9')](),controller['getContacts']);router[_0x7051('0xf')]('/',auth[_0x7051('0x9')](),controller[_0x7051('0x10')]);router['post'](_0x7051('0xe'),auth['isAuthenticated'](),controller[_0x7051('0x11')]);router['put']('/:id',auth[_0x7051('0x9')](),controller[_0x7051('0x12')]);router[_0x7051('0x13')](_0x7051('0xc'),auth['isAuthenticated'](),controller[_0x7051('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0x46fc=['delete','destroy','connect-timeout','express','Router','fs-extra','./cmCompany.controller','isAuthenticated','index','get','/describe','getContacts','post','create','/:id/contacts','addContacts','put','/:id','update'];(function(_0x5bcc79,_0x4a57a6){var _0x44fce1=function(_0x1ec109){while(--_0x1ec109){_0x5bcc79['push'](_0x5bcc79['shift']());}};_0x44fce1(++_0x4a57a6);}(_0x46fc,0x74));var _0xc46f=function(_0x165545,_0x319611){_0x165545=_0x165545-0x0;var _0x21c922=_0x46fc[_0x165545];return _0x21c922;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0xc46f('0x0'));var express=require(_0xc46f('0x1'));var router=express[_0xc46f('0x2')]();var fs_extra=require(_0xc46f('0x3'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xc46f('0x4'));router['get']('/',auth[_0xc46f('0x5')](),controller[_0xc46f('0x6')]);router[_0xc46f('0x7')](_0xc46f('0x8'),auth['isAuthenticated'](),controller['describe']);router[_0xc46f('0x7')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0xc46f('0x7')]('/:id/contacts',auth['isAuthenticated'](),controller[_0xc46f('0x9')]);router[_0xc46f('0xa')]('/',auth[_0xc46f('0x5')](),controller[_0xc46f('0xb')]);router[_0xc46f('0xa')](_0xc46f('0xc'),auth['isAuthenticated'](),controller[_0xc46f('0xd')]);router[_0xc46f('0xe')](_0xc46f('0xf'),auth[_0xc46f('0x5')](),controller[_0xc46f('0x10')]);router[_0xc46f('0x11')](_0xc46f('0xf'),auth[_0xc46f('0x5')](),controller[_0xc46f('0x12')]);module['exports']=router;
\ No newline at end of file
index 6785cd2..f629434 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2170=['STRING','INTEGER','UNSIGNED','DATE','NOW','lodash','sequelize','exports'];(function(_0x44f7a9,_0xbbd4a6){var _0x203e5f=function(_0x149df7){while(--_0x149df7){_0x44f7a9['push'](_0x44f7a9['shift']());}};_0x203e5f(++_0xbbd4a6);}(_0x2170,0xcd));var _0x0217=function(_0x4712ef,_0x3622c8){_0x4712ef=_0x4712ef-0x0;var _0x18d2a8=_0x2170[_0x4712ef];return _0x18d2a8;};'use strict';var _=require(_0x0217('0x0'));var Sequelize=require(_0x0217('0x1'));module[_0x0217('0x2')]={'firstName':{'type':Sequelize[_0x0217('0x3')],'allowNull':![]},'lastName':{'type':Sequelize[_0x0217('0x3')]},'street':{'type':Sequelize[_0x0217('0x3')]},'postalCode':{'type':Sequelize[_0x0217('0x3')]},'city':{'type':Sequelize[_0x0217('0x3')]},'country':{'type':Sequelize['STRING']},'dateOfBirth':{'type':Sequelize[_0x0217('0x3')]},'description':{'type':Sequelize['TEXT']},'phone':{'type':Sequelize[_0x0217('0x3')]},'mobile':{'type':Sequelize[_0x0217('0x3')]},'fax':{'type':Sequelize[_0x0217('0x3')]},'email':{'type':Sequelize['STRING']},'url':{'type':Sequelize[_0x0217('0x3')]},'facebook':{'type':Sequelize[_0x0217('0x3')]},'fb_data':{'type':Sequelize[_0x0217('0x3')]},'twitter':{'type':Sequelize[_0x0217('0x3')]},'skype':{'type':Sequelize[_0x0217('0x3')]},'teams':{'type':Sequelize[_0x0217('0x3')]},'viber':{'type':Sequelize[_0x0217('0x3')]},'line':{'type':Sequelize[_0x0217('0x3')]},'wechat':{'type':Sequelize[_0x0217('0x3')]},'telegram':{'type':Sequelize['STRING']},'UserId':{'type':Sequelize[_0x0217('0x4')]},'AdditionalPhones':{'type':Sequelize[_0x0217('0x3')]},'priority':{'type':Sequelize[_0x0217('0x4')](0x2)[_0x0217('0x5')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize[_0x0217('0x6')],'defaultValue':Sequelize[_0x0217('0x7')]},'dialTimezone':{'type':Sequelize[_0x0217('0x3')]},'utcOffset':{'type':Sequelize[_0x0217('0x4')]}};
\ No newline at end of file
+var _0xedad=['INTEGER','NOW','sequelize','exports','STRING','TEXT'];(function(_0x11ce46,_0x177a85){var _0x368a1e=function(_0x425454){while(--_0x425454){_0x11ce46['push'](_0x11ce46['shift']());}};_0x368a1e(++_0x177a85);}(_0xedad,0xb6));var _0xdeda=function(_0x18c4a8,_0x96c52e){_0x18c4a8=_0x18c4a8-0x0;var _0x189ff1=_0xedad[_0x18c4a8];return _0x189ff1;};'use strict';var _=require('lodash');var Sequelize=require(_0xdeda('0x0'));module[_0xdeda('0x1')]={'firstName':{'type':Sequelize[_0xdeda('0x2')],'allowNull':![]},'lastName':{'type':Sequelize[_0xdeda('0x2')]},'street':{'type':Sequelize[_0xdeda('0x2')]},'postalCode':{'type':Sequelize[_0xdeda('0x2')]},'city':{'type':Sequelize['STRING']},'country':{'type':Sequelize[_0xdeda('0x2')]},'dateOfBirth':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xdeda('0x3')]},'phone':{'type':Sequelize[_0xdeda('0x2')]},'mobile':{'type':Sequelize[_0xdeda('0x2')]},'fax':{'type':Sequelize[_0xdeda('0x2')]},'email':{'type':Sequelize[_0xdeda('0x2')]},'url':{'type':Sequelize['STRING']},'facebook':{'type':Sequelize[_0xdeda('0x2')]},'fb_data':{'type':Sequelize[_0xdeda('0x2')]},'twitter':{'type':Sequelize[_0xdeda('0x2')]},'skype':{'type':Sequelize[_0xdeda('0x2')]},'teams':{'type':Sequelize[_0xdeda('0x2')]},'viber':{'type':Sequelize['STRING']},'line':{'type':Sequelize[_0xdeda('0x2')]},'wechat':{'type':Sequelize[_0xdeda('0x2')]},'telegram':{'type':Sequelize['STRING']},'UserId':{'type':Sequelize[_0xdeda('0x4')]},'AdditionalPhones':{'type':Sequelize[_0xdeda('0x2')]},'priority':{'type':Sequelize[_0xdeda('0x4')](0x2)['UNSIGNED'],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize['DATE'],'defaultValue':Sequelize[_0xdeda('0x5')]},'dialTimezone':{'type':Sequelize['STRING']},'utcOffset':{'type':Sequelize[_0xdeda('0x4')]}};
\ No newline at end of file
index e41e048..a7b6600 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['source','destination','endtime','duration','note','createdAt','userDisposition','userSecondDisposition','userThirdDisposition','UserId','fullname','alias','DESC','findAndCountAll','startCase','Website','Account','closedAt','disposition','secondDisposition','thirdDisposition','Owner','browserName','customerIp','osName','ratingType','subject','substatus','externalUrl','threadId','Interaction','flatten','reverse','value','slice','moment','bluebird','util','squel','ioredis','../../components/contacts','../../components/parsers/qs','../../config/logger','api','../../config/environment/shared','../../mysqldb','redis','localhost','./cmContact.socket','register','status','offset','undefined','limit','count','Content-Range','then','destroy','end','sendStatus','stack','name','describe','getOptions','findAll','query','user','catch','CmContact','find','params','tags','keys','startsWith','cf_','displayName','analytics','CmCustomField','length','columnName','custom','type','values','forEach','hasOwnProperty','body','from','get','isArray','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','update','ChatMessage','ChatOfflineMessage','MailInteraction','MailMessage','SmsInteraction','SmsMessage','FaxInteraction','FaxMessage','OpenchannelInteraction','OpenchannelMessage','CmContactHasItem','CmHopperFinal','ReportAgentPreview','VoiceCallReport','ChatQueueReport','MailQueueReport','OpenchannelQueueReport','SmsQueueReport','WhatsappInteraction','WhatsappMessage','WhatsappQueueReport','dialTimezone','isNil','timezones','utcOffset','additionalPhones','bulkCreate','duplicates','where','$or','push','ListId','findOrCreate','spread','all','show','Tag','color','tag','Phones','ContactItemType','ItemType','literal','Phones.OrderBy','$and','map','format','omit','cf_%d','isEmpty','cm_contacts','id\x20=\x20?','toParam','text','phone','getTags','model','rawAttributes','filters','intersection','attributes','fields','order','sort','pick','filter','merge','nolimit','setTags','findOne','ids','setAdditionalPhones','OrderBy','items','item_types','ItemTypeId','description','contact\x20phone\x20exists','CmHopperAdditionalPhone','item','sequelize','`ItemType`.OrderBy','CmHopperId','ItemType.OrderBy','getAdditionalPhones','PHONE','duplicateAdditionalPhones','CmContactId','toContactId','rescheduleAdditionalPhones','ContactId','options','includeAll','include','getHopperHistories','CmHopperHistory','rows','getJscriptySessions','JscriptySessionReport','uploadCsv','No\x20ListId\x20specified','binding_keys','No\x20association\x20keys\x20specified!','binding_values','No\x20association\x20values\x20specified!','socket_timestamp','Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed','split','Incorrect\x20binding\x20parameters\x20passed!','zipObject','No\x20phone\x20column\x20specified','firstName','No\x20firstName\x20column\x20specified','root','file','chmodSync','0777','child_process','fork','../../components/import/cm/csv','CompanyId','json','File\x20uploaded\x20correctly!','pid','send','path','meta','import','agent','binding','stringify','message','start\x20child\x20process\x20correctly!','error\x20child\x20process','importUpdates','User','../../components/import/cm/csvUpdates','exit','getJourney','mail','chat','sms','openchannel','fax','whatsapp','voice','-createdAt','resolve','channel','includes','toLowerCase','Invalid\x20channel','range','parse','isValid','Invalid\x20date\x20for\x20range\x20to\x20filter','Invalid\x20createdAt\x20filter'];(function(_0x3635ce,_0x33a6f9){var _0x97ecd0=function(_0x123d98){while(--_0x123d98){_0x3635ce['push'](_0x3635ce['shift']());}};_0x97ecd0(++_0x33a6f9);}(_0xa9e0,0x123));var _0x0a9e=function(_0x110c3d,_0x12ee06){_0x110c3d=_0x110c3d-0x0;var _0x226d67=_0xa9e0[_0x110c3d];return _0x226d67;};'use strict';var moment=require(_0x0a9e('0x0'));var BPromise=require(_0x0a9e('0x1'));var util=require(_0x0a9e('0x2'));var path=require('path');var fs=require('fs');var _=require('lodash');var squel=require(_0x0a9e('0x3'));var Papa=require('papaparse');var Redis=require(_0x0a9e('0x4'));var contacts=require(_0x0a9e('0x5'));var qs=require(_0x0a9e('0x6'));var logger=require(_0x0a9e('0x7'))(_0x0a9e('0x8'));var config=require('../../config/environment');var shared=require(_0x0a9e('0x9'));var db=require(_0x0a9e('0xa'))['db'];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 respondWithResult(_0x307b3e,_0x3ab53f){_0x3ab53f=_0x3ab53f||0xc8;return function(_0xfeb75b){if(_0xfeb75b){return _0x307b3e[_0x0a9e('0xf')](_0x3ab53f)['json'](_0xfeb75b);}};}function respondWithFilteredResult(_0x50dfb2,_0x527cdd){return function(_0x4cfe67){if(_0x4cfe67){var _0x273d4d=typeof _0x527cdd[_0x0a9e('0x10')]===_0x0a9e('0x11')&&typeof _0x527cdd[_0x0a9e('0x12')]===_0x0a9e('0x11');var _0x69aeb7=_0x4cfe67['count'];var _0x4283ce=_0x273d4d?0x0:_0x527cdd[_0x0a9e('0x10')];var _0x2b4227=_0x273d4d?_0x4cfe67[_0x0a9e('0x13')]:_0x527cdd[_0x0a9e('0x10')]+_0x527cdd[_0x0a9e('0x12')];var _0x52a03d;if(_0x2b4227>=_0x69aeb7){_0x2b4227=_0x69aeb7;_0x52a03d=0xc8;}else{_0x52a03d=0xce;}_0x50dfb2[_0x0a9e('0xf')](_0x52a03d);return _0x50dfb2['set'](_0x0a9e('0x14'),_0x4283ce+'-'+_0x2b4227+'/'+_0x69aeb7)['json'](_0x4cfe67);}return null;};}function saveUpdates(_0x16033c){return function(_0x12066b){if(_0x12066b){return _0x12066b['update'](_0x16033c)[_0x0a9e('0x15')](function(_0x5a0a06){return _0x5a0a06;});}return null;};}function removeEntity(_0x459eb1){return function(_0x478723){if(_0x478723){return _0x478723[_0x0a9e('0x16')]()[_0x0a9e('0x15')](function(){_0x459eb1[_0x0a9e('0xf')](0xcc)[_0x0a9e('0x17')]();});}};}function handleEntityNotFound(_0x530eb7){return function(_0x20559e){if(!_0x20559e){_0x530eb7[_0x0a9e('0x18')](0x194);}return _0x20559e;};}function handleError(_0x112016,_0x1c696a){_0x1c696a=_0x1c696a||0x1f4;return function(_0x105080){logger['error'](_0x105080[_0x0a9e('0x19')]);if(_0x105080[_0x0a9e('0x1a')]){delete _0x105080['name'];}_0x112016[_0x0a9e('0xf')](_0x1c696a)['send'](_0x105080);};}exports['index']=function(_0x3a02e1,_0x432e56){var _0x38e7c4={};return contacts[_0x0a9e('0x1b')]()['then'](function(_0xfb6e48){_0x38e7c4=qs[_0x0a9e('0x1c')](_0xfb6e48,_0x3a02e1);return contacts[_0x0a9e('0x1d')](_0x3a02e1[_0x0a9e('0x1e')],_0x3a02e1[_0x0a9e('0x1f')],_0x38e7c4,_0xfb6e48);})[_0x0a9e('0x15')](respondWithFilteredResult(_0x432e56,_0x38e7c4))[_0x0a9e('0x20')](handleError(_0x432e56,null));};exports['destroy']=function(_0x59181e,_0x197ec0){return db[_0x0a9e('0x21')][_0x0a9e('0x22')]({'where':{'id':_0x59181e[_0x0a9e('0x23')]['id']}})['then'](handleEntityNotFound(_0x197ec0,null))[_0x0a9e('0x15')](removeEntity(_0x197ec0,null))['catch'](handleError(_0x197ec0,null));};exports[_0x0a9e('0x1b')]=function(_0x5bfb33,_0x1dc186){return db[_0x0a9e('0x21')][_0x0a9e('0x1b')]()[_0x0a9e('0x15')](function(_0x140511){delete _0x140511[_0x0a9e('0x24')];for(var _0x11c3b6=0x0;_0x11c3b6<Object[_0x0a9e('0x25')](_0x140511)['length'];_0x11c3b6++){var _0x3652a7=Object[_0x0a9e('0x25')](_0x140511)[_0x11c3b6];if(!_[_0x0a9e('0x26')](_0x3652a7,_0x0a9e('0x27'))){_0x140511[_0x3652a7]['columnName']=_0x3652a7;_0x140511[_0x3652a7][_0x0a9e('0x28')]=_0x3652a7;}}return _0x140511;})[_0x0a9e('0x15')](function(_0x1843b2){var _0x824a4f={'where':Boolean(_0x5bfb33[_0x0a9e('0x1e')][_0x0a9e('0x29')])===!![]?undefined:{'$or':[{'ListId':_0x5bfb33[_0x0a9e('0x1e')]['id']},{'ListId':null}]},'raw':!![]};return db[_0x0a9e('0x2a')][_0x0a9e('0x1d')](_0x824a4f)['then'](function(_0x426950){for(var _0x5d1e0e=0x0;_0x5d1e0e<_0x426950[_0x0a9e('0x2b')];_0x5d1e0e++){var _0x3ae878=_0x0a9e('0x27')+_0x426950[_0x5d1e0e]['id'];_0x1843b2[_0x3ae878][_0x0a9e('0x2c')]=_0x3ae878;_0x1843b2[_0x3ae878][_0x0a9e('0x28')]=_0x426950[_0x5d1e0e]['alias'];_0x1843b2[_0x3ae878][_0x0a9e('0x2d')]={'type':_0x426950[_0x5d1e0e][_0x0a9e('0x2e')],'values':_0x426950[_0x5d1e0e][_0x0a9e('0x2f')]};}Object[_0x0a9e('0x25')](_0x1843b2)[_0x0a9e('0x30')](function(_0x409319){if(!_0x1843b2[_0x409319][_0x0a9e('0x31')](_0x0a9e('0x2c'))){delete _0x1843b2[_0x409319];}});return _0x1843b2;});})['then'](respondWithResult(_0x1dc186,null))[_0x0a9e('0x20')](handleError(_0x1dc186,null));};exports['merge']=function(_0x2cc7a0,_0x14b13f){var _0x2b7e7f;var _0x3f3d41;var _0x567193;if(_0x2cc7a0[_0x0a9e('0x32')]['id']){delete _0x2cc7a0[_0x0a9e('0x32')]['id'];}return db[_0x0a9e('0x21')][_0x0a9e('0x1d')]({'where':{'id':[_0x2cc7a0['body']['to'],_0x2cc7a0['body'][_0x0a9e('0x33')]]}})['then'](function(_0x24936a){if(_0x24936a){if(_0x24936a[_0x0a9e('0x2b')]!==0x2){return null;}_0x24936a[0x0]=_0x24936a[0x0][_0x0a9e('0x34')]({'plain':!![]});_0x24936a[0x1]=_0x24936a[0x1][_0x0a9e('0x34')]({'plain':!![]});delete _0x24936a[0x0]['id'];delete _0x24936a[0x1]['id'];return _['mergeWith'](_0x24936a[0x0],_0x24936a[0x1],function(_0x31916f,_0x3bfce8){if(Array[_0x0a9e('0x35')](_0x3bfce8)&&!_0x3bfce8['length']){return _0x31916f;}else if(!_0x3bfce8){return _0x31916f;}});}})[_0x0a9e('0x15')](handleEntityNotFound(_0x14b13f,null))[_0x0a9e('0x15')](function(_0x289467){if(_0x289467){if(_0x289467['tags']&&_['isArray'](_0x289467[_0x0a9e('0x24')])){_0x289467[_0x0a9e('0x24')]=_0x289467['tags'][_0x0a9e('0x36')]();}logger[_0x0a9e('0x37')](_0x0a9e('0x38'),_0x2cc7a0[_0x0a9e('0x32')]['to'],_0x2cc7a0['body']['from']);return db[_0x0a9e('0x39')][_0x0a9e('0x16')]({'where':{'ContactId':[_0x2cc7a0['body']['to'],_0x2cc7a0[_0x0a9e('0x32')][_0x0a9e('0x33')]]}})[_0x0a9e('0x15')](function(_0x5b4f5e){logger[_0x0a9e('0x37')](_0x0a9e('0x3a'),_0x5b4f5e);return db[_0x0a9e('0x3b')][_0x0a9e('0x16')]({'where':{'ContactId':[_0x2cc7a0[_0x0a9e('0x32')]['to'],_0x2cc7a0[_0x0a9e('0x32')][_0x0a9e('0x33')]]}})[_0x0a9e('0x15')](function(_0x23b089){logger[_0x0a9e('0x37')](_0x0a9e('0x3c'),_0x23b089);return db[_0x0a9e('0x21')][_0x0a9e('0x3d')](_0x289467);});});}})[_0x0a9e('0x15')](function(_0x37f6cc){if(_0x37f6cc){_0x2b7e7f=_0x37f6cc;_0x3f3d41={'ContactId':_0x2b7e7f['id']};_0x567193={'where':{'ContactId':[_0x2cc7a0['body']['to'],_0x2cc7a0['body'][_0x0a9e('0x33')]]}};return db[_0x0a9e('0x3e')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x40')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x41')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x42')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x43')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x42')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x43')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x44')]['update'](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x45')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x46')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x47')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x48')]['update'](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x49')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x4a')][_0x0a9e('0x3f')]({'CmContactId':_0x2b7e7f['id']},{'where':{'CmContactId':[_0x2cc7a0[_0x0a9e('0x32')]['to'],_0x2cc7a0[_0x0a9e('0x32')][_0x0a9e('0x33')]]}});}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x4b')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db['CmHopperHistory']['update'](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x4c')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x4d')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x4e')]['update'](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db['FaxQueueReport'][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x4f')]['update'](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x50')]['update'](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x51')]['update'](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db['JscriptySessionReport'][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x52')]['update'](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x53')]['update'](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x54')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x21')]['destroy']({'where':{'id':[_0x2cc7a0[_0x0a9e('0x32')]['to'],_0x2cc7a0['body'][_0x0a9e('0x33')]]}});}})['then'](function(){if(_0x2b7e7f){return _0x2b7e7f;}})['then'](respondWithResult(_0x14b13f,null))['catch'](handleError(_0x14b13f,null));};exports[_0x0a9e('0x3d')]=function(_0x47de4c,_0x2f7092){return db[_0x0a9e('0x21')][_0x0a9e('0x1b')]()[_0x0a9e('0x15')](function(_0x232830){if(_0x47de4c[_0x0a9e('0x32')][_0x0a9e('0x24')]&&_[_0x0a9e('0x35')](_0x47de4c['body'][_0x0a9e('0x24')])){if(_0x47de4c[_0x0a9e('0x32')][_0x0a9e('0x24')][_0x0a9e('0x2b')]){_0x47de4c[_0x0a9e('0x32')][_0x0a9e('0x24')]=_0x47de4c['body'][_0x0a9e('0x24')][_0x0a9e('0x36')](';')+';';}else{_0x47de4c['body'][_0x0a9e('0x24')]=null;}}else{_0x47de4c['body'][_0x0a9e('0x24')]=null;}if(!_['isNil'](_0x47de4c['body']['dialTimezone'])){var _0x273cb5=_0x47de4c['body'][_0x0a9e('0x55')];if(!_[_0x0a9e('0x56')](shared[_0x0a9e('0x57')][_0x273cb5]))_0x47de4c[_0x0a9e('0x32')][_0x0a9e('0x58')]=shared[_0x0a9e('0x57')][_0x273cb5]['utcOffset'];}return db[_0x0a9e('0x21')]['create'](_0x47de4c[_0x0a9e('0x32')],{'fields':_[_0x0a9e('0x25')](_0x232830),'raw':!![]});})[_0x0a9e('0x15')](function(_0x5adf8f){if(_0x47de4c[_0x0a9e('0x32')][_0x0a9e('0x59')]){return insertAdditionalPhones(_0x5adf8f,_0x47de4c[_0x0a9e('0x32')][_0x0a9e('0x59')]);}else{return _0x5adf8f;}})['then'](respondWithResult(_0x2f7092,0xc9))[_0x0a9e('0x20')](handleError(_0x2f7092,null));};exports[_0x0a9e('0x5a')]=function(_0x54327c,_0x797b45){var _0x17e88c=0x0;var _0x88dcbf=0x0;var _0x409b29=0x0;var _0x401837=[];return db['CmContact'][_0x0a9e('0x1b')]()[_0x0a9e('0x15')](function(_0x281c7d){return BPromise['each'](_0x54327c[_0x0a9e('0x32')],function(_0x4f1e60){var _0x5211e3={'where':{'$or':[]},'defaults':_0x4f1e60,'fields':_[_0x0a9e('0x25')](_0x281c7d),'raw':!![]};if(_0x4f1e60[_0x0a9e('0x5b')]){for(var _0x9375fb=0x0;_0x9375fb<_0x4f1e60[_0x0a9e('0x5b')][_0x0a9e('0x2b')];_0x9375fb++){var _0xc8c264={};_0xc8c264[_0x4f1e60[_0x0a9e('0x5b')][_0x9375fb]]=_0x4f1e60[_0x4f1e60[_0x0a9e('0x5b')][_0x9375fb]];_0x5211e3[_0x0a9e('0x5c')][_0x0a9e('0x5d')][_0x0a9e('0x5e')](_0xc8c264);}_0x5211e3[_0x0a9e('0x5c')][_0x0a9e('0x5f')]=_0x4f1e60[_0x0a9e('0x5f')];}return db[_0x0a9e('0x21')][_0x0a9e('0x60')](_0x5211e3)[_0x0a9e('0x61')](function(_0x4257c9,_0x5150a4){if(_0x5150a4){if(_0x4f1e60[_0x0a9e('0x31')](_0x0a9e('0x59'))){_0x401837[_0x0a9e('0x5e')]({'contact':_0x4257c9,'additionalPhones':_0x4f1e60['additionalPhones']});}_0x17e88c++;}else{_0x409b29++;}})[_0x0a9e('0x20')](function(){_0x88dcbf++;});});})[_0x0a9e('0x15')](function(_0x4b341d){if(_0x4b341d){if(_0x401837[_0x0a9e('0x2b')]>0x0){return new Promise(function(_0x56e31e){var _0x3ef315=[];for(var _0x427946=0x0;_0x427946<_0x401837[_0x0a9e('0x2b')];_0x427946++){_0x3ef315['push'](insertAdditionalPhones(_0x401837[_0x427946]['contact'],_0x401837[_0x427946]['additionalPhones']));}Promise[_0x0a9e('0x62')](_0x3ef315)[_0x0a9e('0x15')](function(){_0x56e31e(0x1);});})[_0x0a9e('0x15')](function(){return{'success':_0x17e88c,'failure':_0x88dcbf,'duplicates':_0x409b29};});}else{return{'success':_0x17e88c,'failure':_0x88dcbf,'duplicates':_0x409b29};}}})[_0x0a9e('0x15')](respondWithResult(_0x797b45,0xc9))[_0x0a9e('0x20')](handleError(_0x797b45,null));};exports[_0x0a9e('0x63')]=function(_0xeef20,_0x1a0677){var _0x5512d1;return db[_0x0a9e('0x21')][_0x0a9e('0x1b')]()[_0x0a9e('0x15')](function(_0x4a4fc7){return db[_0x0a9e('0x21')]['find']({'where':{'id':_0xeef20[_0x0a9e('0x23')]['id']},'include':[{'model':db[_0x0a9e('0x64')],'as':'Tags','attributes':['id',_0x0a9e('0x1a'),_0x0a9e('0x65')],'required':_0xeef20[_0x0a9e('0x1e')][_0x0a9e('0x66')]?!![]:![]},{'model':db['CmContactHasItem'],'as':_0x0a9e('0x67'),'where':{'CmContactId':_0xeef20[_0x0a9e('0x23')]['id']},'required':![],'include':[{'model':db[_0x0a9e('0x68')],'as':_0x0a9e('0x69')}]}],'order':[db['sequelize'][_0x0a9e('0x6a')](_0x0a9e('0x6b'))],'attributes':_[_0x0a9e('0x25')](_0x4a4fc7)});})[_0x0a9e('0x15')](function(_0x4abc8f){if(!_[_0x0a9e('0x56')](_0x4abc8f)){_0x5512d1=_0x4abc8f[_0x0a9e('0x34')]({'plain':!![]});var _0x30a4c7={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x4abc8f&&_0x4abc8f[_0x0a9e('0x5f')]){if(_0x4abc8f[_0x0a9e('0x5f')]){_0x30a4c7[_0x0a9e('0x5c')][_0x0a9e('0x6c')][_0x0a9e('0x5e')]({'ListId':{'$ne':_0x4abc8f[_0x0a9e('0x5f')]}});}}return db[_0x0a9e('0x2a')][_0x0a9e('0x1d')](_0x30a4c7);}})[_0x0a9e('0x15')](function(_0x25744a){if(!_[_0x0a9e('0x56')](_0x25744a)){return _['omit'](_0x5512d1,_[_0x0a9e('0x6d')](_0x25744a,function(_0x11da9c){return util[_0x0a9e('0x6e')]('cf_%d',_0x11da9c['id']);}));}})[_0x0a9e('0x15')](handleEntityNotFound(_0x1a0677,null))[_0x0a9e('0x15')](respondWithResult(_0x1a0677,null))[_0x0a9e('0x20')](handleError(_0x1a0677,null));};exports[_0x0a9e('0x3f')]=function(_0x56d650,_0x541e80){var _0x7ebea8;if(_0x56d650[_0x0a9e('0x32')]['id']){delete _0x56d650['body']['id'];}if(!_[_0x0a9e('0x56')](_0x56d650['body'][_0x0a9e('0x55')])){var _0x8ebf02=_0x56d650['body'][_0x0a9e('0x55')];if(!_[_0x0a9e('0x56')](shared[_0x0a9e('0x57')][_0x8ebf02]))_0x56d650[_0x0a9e('0x32')][_0x0a9e('0x58')]=shared[_0x0a9e('0x57')][_0x8ebf02][_0x0a9e('0x58')];}return db['CmContact'][_0x0a9e('0x22')]({'where':{'id':_0x56d650[_0x0a9e('0x23')]['id']}})[_0x0a9e('0x15')](handleEntityNotFound(_0x541e80,null))[_0x0a9e('0x15')](saveUpdates(_0x56d650['body'],null))[_0x0a9e('0x15')](function(_0xf0db1){_0x7ebea8=_0xf0db1;var _0x4bf3a5={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0xf0db1&&_0xf0db1[_0x0a9e('0x5f')]){if(_0xf0db1['ListId']){_0x4bf3a5[_0x0a9e('0x5c')][_0x0a9e('0x6c')][_0x0a9e('0x5e')]({'ListId':{'$ne':_0xf0db1[_0x0a9e('0x5f')]}});}}return db['CmCustomField']['findAll'](_0x4bf3a5);})[_0x0a9e('0x15')](function(_0x2b9c01){if(_0x2b9c01){return _[_0x0a9e('0x6f')](_['pickBy'](_0x56d650[_0x0a9e('0x32')],function(_0x36e975,_0x524e38){return _['startsWith'](_0x524e38,_0x0a9e('0x27'));}),_['map'](_0x2b9c01,function(_0x5ea541){return util['format'](_0x0a9e('0x70'),_0x5ea541['id']);}));}})[_0x0a9e('0x15')](function(_0x9044fe){if(_0x9044fe&&!_[_0x0a9e('0x71')](_0x9044fe)){var _0x3c6dd6=squel[_0x0a9e('0x3f')]()['table'](_0x0a9e('0x72'))['setFields'](_0x9044fe)[_0x0a9e('0x5c')](_0x0a9e('0x73'),_0x56d650[_0x0a9e('0x23')]['id'])[_0x0a9e('0x74')]();return db['sequelize'][_0x0a9e('0x1e')](_0x3c6dd6[_0x0a9e('0x75')],{'replacements':_0x3c6dd6[_0x0a9e('0x2f')]});}})['then'](function(){if(_0x56d650[_0x0a9e('0x32')][_0x0a9e('0x76')]&&_0x7ebea8){return db[_0x0a9e('0x39')][_0x0a9e('0x3f')]({'phone':_0x56d650[_0x0a9e('0x32')][_0x0a9e('0x76')],'OrderBy':0x0},{'where':{'ContactId':_0x7ebea8['id']}});}})[_0x0a9e('0x15')](function(){return _0x7ebea8;})[_0x0a9e('0x15')](respondWithResult(_0x541e80,null))['catch'](handleError(_0x541e80,null));};exports[_0x0a9e('0x77')]=function(_0x3325c5,_0x589ff3){var _0x40e0f0={};var _0x982340={};var _0x3a1974;var _0x5a26c8;return db[_0x0a9e('0x21')]['findOne']({'where':{'id':_0x3325c5[_0x0a9e('0x23')]['id']}})[_0x0a9e('0x15')](handleEntityNotFound(_0x589ff3,null))[_0x0a9e('0x15')](function(_0x1f29bd){if(_0x1f29bd){_0x3a1974=_0x1f29bd;_0x982340[_0x0a9e('0x78')]=_[_0x0a9e('0x25')](db[_0x0a9e('0x64')][_0x0a9e('0x79')]);_0x982340['query']=_[_0x0a9e('0x25')](_0x3325c5[_0x0a9e('0x1e')]);_0x982340[_0x0a9e('0x7a')]=_[_0x0a9e('0x7b')](_0x982340[_0x0a9e('0x78')],_0x982340[_0x0a9e('0x1e')]);_0x40e0f0[_0x0a9e('0x7c')]=_[_0x0a9e('0x7b')](_0x982340[_0x0a9e('0x78')],qs[_0x0a9e('0x7d')](_0x3325c5[_0x0a9e('0x1e')][_0x0a9e('0x7d')]));_0x40e0f0[_0x0a9e('0x7c')]=_0x40e0f0['attributes'][_0x0a9e('0x2b')]?_0x40e0f0[_0x0a9e('0x7c')]:_0x982340[_0x0a9e('0x78')];_0x40e0f0[_0x0a9e('0x7e')]=qs[_0x0a9e('0x7f')](_0x3325c5['query'][_0x0a9e('0x7f')]);_0x40e0f0[_0x0a9e('0x5c')]=qs['filters'](_[_0x0a9e('0x80')](_0x3325c5['query'],_0x982340[_0x0a9e('0x7a')]));if(_0x3325c5[_0x0a9e('0x1e')][_0x0a9e('0x81')]){_0x40e0f0[_0x0a9e('0x5c')]=_['merge'](_0x40e0f0[_0x0a9e('0x5c')],{'$or':_['map'](_0x40e0f0[_0x0a9e('0x7c')],function(_0x3d0a77){var _0x5e5b89={};_0x5e5b89[_0x3d0a77]={'$like':'%'+_0x3325c5[_0x0a9e('0x1e')][_0x0a9e('0x81')]+'%'};return _0x5e5b89;})});}_0x40e0f0=_[_0x0a9e('0x82')]({},_0x40e0f0,_0x3325c5['options']);return _0x3a1974['getTags'](_0x40e0f0);}})[_0x0a9e('0x15')](function(_0x6ba2be){if(_0x6ba2be){_0x5a26c8=_0x6ba2be[_0x0a9e('0x2b')];if(!_0x3325c5[_0x0a9e('0x1e')][_0x0a9e('0x31')](_0x0a9e('0x83'))){_0x40e0f0[_0x0a9e('0x12')]=qs[_0x0a9e('0x12')](_0x3325c5[_0x0a9e('0x1e')]['limit']);_0x40e0f0[_0x0a9e('0x10')]=qs['offset'](_0x3325c5[_0x0a9e('0x1e')][_0x0a9e('0x10')]);}return _0x3a1974[_0x0a9e('0x77')](_0x40e0f0);}})[_0x0a9e('0x15')](function(_0x1b61d5){if(_0x1b61d5){return _0x1b61d5?{'count':_0x5a26c8,'rows':_0x1b61d5}:null;}})['then'](respondWithResult(_0x589ff3,null))[_0x0a9e('0x20')](handleError(_0x589ff3,null));};exports[_0x0a9e('0x84')]=function(_0x2791c5,_0x2aa5f2){if(_0x2791c5[_0x0a9e('0x32')]['id']){delete _0x2791c5['body']['id'];}return db['CmContact'][_0x0a9e('0x85')]({'where':{'id':_0x2791c5['params']['id']}})[_0x0a9e('0x15')](handleEntityNotFound(_0x2aa5f2,null))[_0x0a9e('0x15')](function(_0x4672e1){if(_0x4672e1){return _0x4672e1[_0x0a9e('0x84')](_0x2791c5[_0x0a9e('0x32')][_0x0a9e('0x86')]||[]);}return null;})['then'](respondWithResult(_0x2aa5f2,null))['catch'](handleError(_0x2aa5f2,null));};exports[_0x0a9e('0x87')]=function(_0x5dfbe2,_0x2469d1){var _0x5c689c=[];_0x5c689c[_0x0a9e('0x5e')](addAdditionalPhones(_0x5dfbe2['body']));Promise['all'](_0x5c689c)[_0x0a9e('0x15')](function(){_0x5c689c=[];_0x5c689c[_0x0a9e('0x5e')](deleteCmHopperPhones(_0x5dfbe2['body']['id']));_0x5c689c[_0x0a9e('0x5e')](addCmHopperPhones(_0x5dfbe2[_0x0a9e('0x32')]['id']));Promise[_0x0a9e('0x62')](_0x5c689c)[_0x0a9e('0x15')](function(){return[0x1];})[_0x0a9e('0x15')](respondWithResult(_0x2469d1,null));});};function addAdditionalPhones(_0x5ab0bc){var _0x5505f4;return new Promise(function(_0x16449b){return db[_0x0a9e('0x4a')][_0x0a9e('0x16')]({'where':{'CmContactId':_0x5ab0bc['id']}})[_0x0a9e('0x15')](function(){db[_0x0a9e('0x68')]['findAll']({'raw':!![],'attributes':['id',_0x0a9e('0x88')]})[_0x0a9e('0x15')](function(_0x5416a9){var _0x3c313d=[];for(var _0x19fd11=0x0;_0x19fd11<_0x5ab0bc[_0x0a9e('0x89')][_0x0a9e('0x2b')];_0x19fd11++){var _0x23b25b=_0x5ab0bc[_0x0a9e('0x8a')]?_[_0x0a9e('0x56')](_0x5ab0bc[_0x0a9e('0x8a')][_0x19fd11])?'':_0x5ab0bc[_0x0a9e('0x8a')][_0x19fd11]:_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11]['ItemTypeId']?_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11][_0x0a9e('0x8b')]:'';var _0x2ada60=_[_0x0a9e('0x56')](_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11]['description'])?'':_0x5ab0bc['items'][_0x19fd11][_0x0a9e('0x8c')];var _0x16ae1a=_0x23b25b+':'+_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11][_0x0a9e('0x76')]+'§'+_0x2ada60;if(_[_0x0a9e('0x56')](_0x5505f4))_0x5505f4=_0x16ae1a;else _0x5505f4+=';'+_0x16ae1a;var _0x59e46f=null;var _0x1339d0=null;if(_0x5ab0bc[_0x0a9e('0x8a')]){if(!_[_0x0a9e('0x56')](_0x5ab0bc['item_types'][_0x19fd11])){_0x1339d0=_[_0x0a9e('0x22')](_0x5416a9,function(_0x59aa7b){return _0x59aa7b['id']===_0x5ab0bc[_0x0a9e('0x8a')][_0x19fd11];});if(!_['isNil'](_0x1339d0)){_0x59e46f=_0x1339d0[_0x0a9e('0x88')];}}}else{if(!_[_0x0a9e('0x56')](_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11])){_0x1339d0=_['find'](_0x5416a9,function(_0xc9529d){return _0xc9529d['id']===_0x5ab0bc['items'][_0x19fd11][_0x0a9e('0x8b')];});if(!_[_0x0a9e('0x56')](_0x1339d0)){_0x59e46f=_0x19fd11;}}}if(_[_0x0a9e('0x56')](_0x59e46f)){_0x59e46f=0x64;}_0x3c313d[_0x0a9e('0x5e')](addAdditionalPhone(_0x5ab0bc['id'],_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11][_0x0a9e('0x76')],_0x5ab0bc[_0x0a9e('0x8a')]?_[_0x0a9e('0x56')](_0x5ab0bc[_0x0a9e('0x8a')][_0x19fd11])?null:_0x5ab0bc[_0x0a9e('0x8a')][_0x19fd11]:_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11][_0x0a9e('0x8b')]?_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11][_0x0a9e('0x8b')]:null,_0x59e46f,_0x2ada60));}Promise[_0x0a9e('0x62')](_0x3c313d)[_0x0a9e('0x15')](function(){db['CmContact']['update']({'AdditionalPhones':_0x5505f4},{'where':{'id':_0x5ab0bc['id']}})[_0x0a9e('0x15')](function(){_0x16449b(0x1);});});});});});}function addAdditionalPhone(_0x5c4be0,_0x1d999b,_0x3428c9,_0x5d6b69,_0x1a3754){return db[_0x0a9e('0x4a')][_0x0a9e('0x22')]({'where':{'CmContactId':_0x5c4be0,'item':_0x1d999b}})[_0x0a9e('0x15')](function(_0x5585d5){if(_0x5585d5)logger[_0x0a9e('0x37')](_0x0a9e('0x8d'),_0x5585d5);else{db[_0x0a9e('0x4a')][_0x0a9e('0x3d')]({'CmContactId':_0x5c4be0,'item':_0x1d999b,'ItemTypeId':_0x3428c9,'OrderBy':_0x5d6b69,'ItemClass':'PHONE','description':_0x1a3754});}});}function deleteCmHopperPhones(_0x19e9ed){return new Promise(function(_0x1a0b08){return db[_0x0a9e('0x39')]['findAll']({'raw':!![],'attributes':['id'],'where':{'ContactId':_0x19e9ed}})[_0x0a9e('0x15')](function(_0x270df8){db[_0x0a9e('0x8e')]['destroy']({'where':{'CmHopperId':{'$in':_[_0x0a9e('0x6d')](_0x270df8,'id')}}});})[_0x0a9e('0x15')](function(){_0x1a0b08(0x1);});});}function addCmHopperPhones(_0x1d9b57){return new Promise(function(_0x1a7f58){return db[_0x0a9e('0x39')]['findAll']({'raw':!![],'attributes':['id'],'where':{'ContactId':_0x1d9b57}})[_0x0a9e('0x15')](function(_0x289e65){var _0x4795ae=[];_[_0x0a9e('0x6d')](_0x289e65,function(_0x1fcfe6){_0x4795ae[_0x0a9e('0x5e')](createCmHopperPhone(_0x1d9b57,_0x1fcfe6['id']));});Promise['all'](_0x4795ae)['then'](function(){_0x1a7f58(0x1);});});});}function createCmHopperPhone(_0x523d08,_0x1015aa){return new Promise(function(_0x4a70ce){db['CmContactHasItem'][_0x0a9e('0x1d')]({'raw':!![],'attributes':[_0x0a9e('0x8f'),_0x0a9e('0x88')],'where':{'CmContactId':_0x523d08,'ItemClass':'PHONE'},'include':[{'model':db[_0x0a9e('0x68')],'attributes':[_0x0a9e('0x88')],'as':_0x0a9e('0x69')}],'order':[_0x0a9e('0x88'),db[_0x0a9e('0x90')][_0x0a9e('0x6a')](_0x0a9e('0x91'))]})[_0x0a9e('0x15')](function(_0x3b5bda){var _0x5a1848=0x1;var _0x43c397=_['map'](_0x3b5bda,function(_0x138cf5){_0x138cf5[_0x0a9e('0x92')]=_0x1015aa;_0x138cf5[_0x0a9e('0x76')]=_0x138cf5[_0x0a9e('0x8f')];_0x138cf5[_0x0a9e('0x88')]=_0x5a1848;delete _0x138cf5[_0x0a9e('0x93')];_0x5a1848=_0x5a1848+0x1;return _0x138cf5;});return db['CmHopperAdditionalPhone'][_0x0a9e('0x5a')](_0x43c397,{});})[_0x0a9e('0x15')](function(){_0x4a70ce(0x1);});});}function insertAdditionalPhones(_0xe25eb5,_0x1af799){return new Promise(function(_0x51aa2f){var _0x2e4887=[];for(var _0x3c9135=0x0;_0x3c9135<_0x1af799[_0x0a9e('0x2b')];_0x3c9135++){var _0x1c9539=_0x1af799[_0x3c9135];_0x2e4887[_0x0a9e('0x5e')](parseContactItemType(_0x1c9539));}Promise[_0x0a9e('0x62')](_0x2e4887)[_0x0a9e('0x15')](function(){var _0x25931e={'id':_0xe25eb5['id'],'items':_0x1af799};return addAdditionalPhones(_0x25931e)[_0x0a9e('0x15')](function(){return addCmHopperPhones(_0xe25eb5['id']);});})[_0x0a9e('0x15')](function(){_0x51aa2f(_0xe25eb5);});});}function parseContactItemType(_0x57f0ad){return new Promise(function(_0x2272bc){if(_0x57f0ad[_0x0a9e('0x31')](_0x0a9e('0x8b'))){_0x2272bc(_0x57f0ad);}else{return db[_0x0a9e('0x68')][_0x0a9e('0x22')]({'where':{'name':_0x57f0ad[_0x0a9e('0x69')]}})[_0x0a9e('0x15')](function(_0x20ae21){if(_['isNil'](_0x20ae21))_0x57f0ad[_0x0a9e('0x8b')]=null;else _0x57f0ad[_0x0a9e('0x8b')]=_0x20ae21['id'];_0x2272bc(_0x57f0ad);});}});}exports[_0x0a9e('0x94')]=function(_0x5c65fc,_0x1402c7){return db[_0x0a9e('0x4a')][_0x0a9e('0x1d')]({'raw':!![],'where':{'CmContactId':_0x5c65fc[_0x0a9e('0x23')]['id'],'ItemClass':_0x0a9e('0x95')},'include':[{'model':db[_0x0a9e('0x68')],'as':_0x0a9e('0x69')}],'order':[[_0x0a9e('0x88')],[db[_0x0a9e('0x90')][_0x0a9e('0x6a')]('`ItemType`.OrderBy')]]})[_0x0a9e('0x15')](function(_0x446e6){return _0x446e6;})[_0x0a9e('0x15')](respondWithResult(_0x1402c7,null))[_0x0a9e('0x20')](handleError(_0x1402c7,null));};exports[_0x0a9e('0x96')]=function(_0x3942fd,_0x5cb48d){return db[_0x0a9e('0x4a')]['findAll']({'raw':!![],'where':{'CmContactId':_0x3942fd['body']['fromContactId']}})[_0x0a9e('0x15')](function(_0x3fa3f2){var _0x426cb4=_[_0x0a9e('0x6d')](_0x3fa3f2,function(_0x4d99a8){_0x4d99a8[_0x0a9e('0x97')]=_0x3942fd[_0x0a9e('0x32')][_0x0a9e('0x98')];return _0x4d99a8;});return db[_0x0a9e('0x4a')][_0x0a9e('0x5a')](_0x426cb4,{});})['then'](function(){return addCmHopperPhones(_0x3942fd['body'][_0x0a9e('0x98')]);})[_0x0a9e('0x15')](function(){return['ok'];})[_0x0a9e('0x15')](respondWithResult(_0x5cb48d,null))['catch'](handleError(_0x5cb48d,null));};exports[_0x0a9e('0x99')]=function(_0x248a9a,_0x422f0a){var _0x4cee8c=[];_0x4cee8c[_0x0a9e('0x5e')](createCmHopperPhone(_0x248a9a[_0x0a9e('0x32')]['id'],_0x248a9a[_0x0a9e('0x32')]['hopperId']));Promise[_0x0a9e('0x62')](_0x4cee8c)[_0x0a9e('0x15')](function(){return[0x1];})[_0x0a9e('0x15')](respondWithResult(_0x422f0a,null));};exports['getHoppers']=function(_0x549697,_0x53ef46){var _0x3b04fd={'raw':![],'where':{}};var _0x1f50db={};var _0xcbc73c={'count':0x0,'rows':[]};return db[_0x0a9e('0x21')]['findOne']({'where':{'id':_0x549697[_0x0a9e('0x23')]['id']}})['then'](handleEntityNotFound(_0x53ef46,null))[_0x0a9e('0x15')](function(_0x2ff2ab){if(_0x2ff2ab){_0x1f50db[_0x0a9e('0x78')]=_['keys'](db[_0x0a9e('0x39')][_0x0a9e('0x79')]);_0x1f50db[_0x0a9e('0x1e')]=_['keys'](_0x549697[_0x0a9e('0x1e')]);_0x1f50db['filters']=_[_0x0a9e('0x7b')](_0x1f50db['model'],_0x1f50db[_0x0a9e('0x1e')]);_0x3b04fd['attributes']=_[_0x0a9e('0x7b')](_0x1f50db[_0x0a9e('0x78')],qs[_0x0a9e('0x7d')](_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x7d')]));_0x3b04fd[_0x0a9e('0x7c')]=_0x3b04fd[_0x0a9e('0x7c')]['length']?_0x3b04fd[_0x0a9e('0x7c')]:_0x1f50db[_0x0a9e('0x78')];if(!_0x549697['query'][_0x0a9e('0x31')](_0x0a9e('0x83'))){_0x3b04fd['limit']=qs[_0x0a9e('0x12')](_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x12')]);_0x3b04fd['offset']=qs[_0x0a9e('0x10')](_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x10')]);}_0x3b04fd[_0x0a9e('0x7e')]=qs[_0x0a9e('0x7f')](_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x7f')]);_0x3b04fd[_0x0a9e('0x5c')]=qs[_0x0a9e('0x7a')](_[_0x0a9e('0x80')](_0x549697['query'],_0x1f50db[_0x0a9e('0x7a')]));_0x3b04fd['where'][_0x0a9e('0x9a')]=_0x2ff2ab['id'];if(_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x81')]){_0x3b04fd[_0x0a9e('0x5c')]=_[_0x0a9e('0x82')](_0x3b04fd[_0x0a9e('0x5c')],{'$or':_['map'](_0x3b04fd[_0x0a9e('0x7c')],function(_0x469035){var _0x2977a7={};_0x2977a7[_0x469035]={'$like':'%'+_0x549697['query'][_0x0a9e('0x81')]+'%'};return _0x2977a7;})});}_0x3b04fd=_[_0x0a9e('0x82')]({},_0x3b04fd,_0x549697[_0x0a9e('0x9b')]);return db[_0x0a9e('0x39')][_0x0a9e('0x13')]({'where':_0x3b04fd[_0x0a9e('0x5c')]})[_0x0a9e('0x15')](function(_0x5f2c51){_0xcbc73c[_0x0a9e('0x13')]=_0x5f2c51;if(_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x9c')]){_0x3b04fd[_0x0a9e('0x9d')]=[{'all':!![]}];}return db[_0x0a9e('0x39')][_0x0a9e('0x1d')](_0x3b04fd);})[_0x0a9e('0x15')](function(_0x5d6a48){_0xcbc73c['rows']=_0x5d6a48;return _0xcbc73c;});}})[_0x0a9e('0x15')](respondWithFilteredResult(_0x53ef46,_0x3b04fd))[_0x0a9e('0x20')](handleError(_0x53ef46,null));};exports[_0x0a9e('0x9e')]=function(_0x1bf692,_0x40e2da){var _0x131da8={'raw':!![],'where':{}};var _0x609711={};var _0x584854={'count':0x0,'rows':[]};return db[_0x0a9e('0x21')][_0x0a9e('0x85')]({'where':{'id':_0x1bf692[_0x0a9e('0x23')]['id']}})[_0x0a9e('0x15')](handleEntityNotFound(_0x40e2da,null))[_0x0a9e('0x15')](function(_0x3c6082){if(_0x3c6082){_0x609711[_0x0a9e('0x78')]=_['keys'](db[_0x0a9e('0x9f')][_0x0a9e('0x79')]);_0x609711[_0x0a9e('0x1e')]=_['keys'](_0x1bf692[_0x0a9e('0x1e')]);_0x609711[_0x0a9e('0x7a')]=_[_0x0a9e('0x7b')](_0x609711[_0x0a9e('0x78')],_0x609711['query']);_0x131da8[_0x0a9e('0x7c')]=_[_0x0a9e('0x7b')](_0x609711[_0x0a9e('0x78')],qs[_0x0a9e('0x7d')](_0x1bf692[_0x0a9e('0x1e')][_0x0a9e('0x7d')]));_0x131da8[_0x0a9e('0x7c')]=_0x131da8[_0x0a9e('0x7c')]['length']?_0x131da8[_0x0a9e('0x7c')]:_0x609711[_0x0a9e('0x78')];if(!_0x1bf692[_0x0a9e('0x1e')][_0x0a9e('0x31')]('nolimit')){_0x131da8['limit']=qs[_0x0a9e('0x12')](_0x1bf692[_0x0a9e('0x1e')][_0x0a9e('0x12')]);_0x131da8['offset']=qs[_0x0a9e('0x10')](_0x1bf692[_0x0a9e('0x1e')]['offset']);}_0x131da8[_0x0a9e('0x7e')]=qs['sort'](_0x1bf692[_0x0a9e('0x1e')]['sort']);_0x131da8['where']=qs['filters'](_[_0x0a9e('0x80')](_0x1bf692[_0x0a9e('0x1e')],_0x609711[_0x0a9e('0x7a')]));_0x131da8[_0x0a9e('0x5c')][_0x0a9e('0x9a')]=_0x3c6082['id'];if(_0x1bf692[_0x0a9e('0x1e')]['filter']){_0x131da8[_0x0a9e('0x5c')]=_[_0x0a9e('0x82')](_0x131da8[_0x0a9e('0x5c')],{'$or':_[_0x0a9e('0x6d')](_0x131da8[_0x0a9e('0x7c')],function(_0x18dccf){var _0x31c937={};_0x31c937[_0x18dccf]={'$like':'%'+_0x1bf692['query']['filter']+'%'};return _0x31c937;})});}_0x131da8=_[_0x0a9e('0x82')]({},_0x131da8,_0x1bf692['options']);return db[_0x0a9e('0x9f')][_0x0a9e('0x13')]({'where':_0x131da8[_0x0a9e('0x5c')]})[_0x0a9e('0x15')](function(_0x37a448){_0x584854[_0x0a9e('0x13')]=_0x37a448;if(_0x1bf692['query'][_0x0a9e('0x9c')]){_0x131da8['include']=[{'all':!![]}];}return db['CmHopperHistory'][_0x0a9e('0x1d')](_0x131da8);})['then'](function(_0x38dceb){_0x584854['rows']=_0x38dceb;return _0x584854;});}})['then'](respondWithFilteredResult(_0x40e2da,_0x131da8))[_0x0a9e('0x20')](handleError(_0x40e2da,null));};exports['getHopperFinals']=function(_0x24470a,_0x142e53){var _0xe1ab0d={'raw':!![],'where':{}};var _0x48f532={};var _0x4152cd={'count':0x0,'rows':[]};return db[_0x0a9e('0x21')][_0x0a9e('0x85')]({'where':{'id':_0x24470a['params']['id']}})['then'](handleEntityNotFound(_0x142e53,null))[_0x0a9e('0x15')](function(_0x948aab){if(_0x948aab){_0x48f532[_0x0a9e('0x78')]=_[_0x0a9e('0x25')](db[_0x0a9e('0x4b')][_0x0a9e('0x79')]);_0x48f532[_0x0a9e('0x1e')]=_[_0x0a9e('0x25')](_0x24470a[_0x0a9e('0x1e')]);_0x48f532[_0x0a9e('0x7a')]=_['intersection'](_0x48f532['model'],_0x48f532['query']);_0xe1ab0d[_0x0a9e('0x7c')]=_[_0x0a9e('0x7b')](_0x48f532[_0x0a9e('0x78')],qs[_0x0a9e('0x7d')](_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x7d')]));_0xe1ab0d[_0x0a9e('0x7c')]=_0xe1ab0d[_0x0a9e('0x7c')]['length']?_0xe1ab0d['attributes']:_0x48f532[_0x0a9e('0x78')];if(!_0x24470a[_0x0a9e('0x1e')]['hasOwnProperty'](_0x0a9e('0x83'))){_0xe1ab0d[_0x0a9e('0x12')]=qs[_0x0a9e('0x12')](_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x12')]);_0xe1ab0d[_0x0a9e('0x10')]=qs[_0x0a9e('0x10')](_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x10')]);}_0xe1ab0d[_0x0a9e('0x7e')]=qs[_0x0a9e('0x7f')](_0x24470a[_0x0a9e('0x1e')]['sort']);_0xe1ab0d[_0x0a9e('0x5c')]=qs[_0x0a9e('0x7a')](_[_0x0a9e('0x80')](_0x24470a[_0x0a9e('0x1e')],_0x48f532[_0x0a9e('0x7a')]));_0xe1ab0d[_0x0a9e('0x5c')][_0x0a9e('0x9a')]=_0x948aab['id'];if(_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x81')]){_0xe1ab0d[_0x0a9e('0x5c')]=_[_0x0a9e('0x82')](_0xe1ab0d[_0x0a9e('0x5c')],{'$or':_['map'](_0xe1ab0d['attributes'],function(_0x3e5182){var _0x401207={};_0x401207[_0x3e5182]={'$like':'%'+_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x81')]+'%'};return _0x401207;})});}_0xe1ab0d=_[_0x0a9e('0x82')]({},_0xe1ab0d,_0x24470a[_0x0a9e('0x9b')]);return db[_0x0a9e('0x4b')]['count']({'where':_0xe1ab0d[_0x0a9e('0x5c')]})['then'](function(_0x26aa44){_0x4152cd[_0x0a9e('0x13')]=_0x26aa44;if(_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x9c')]){_0xe1ab0d[_0x0a9e('0x9d')]=[{'all':!![]}];}return db[_0x0a9e('0x4b')][_0x0a9e('0x1d')](_0xe1ab0d);})[_0x0a9e('0x15')](function(_0xa7a754){_0x4152cd[_0x0a9e('0xa0')]=_0xa7a754;return _0x4152cd;});}})[_0x0a9e('0x15')](respondWithFilteredResult(_0x142e53,_0xe1ab0d))[_0x0a9e('0x20')](handleError(_0x142e53,null));};exports[_0x0a9e('0xa1')]=function(_0x3f7cb6,_0x3c8a9a){var _0x2d5e00={'raw':!![],'where':{}};var _0x5b78a8={};var _0x54cf62={'count':0x0,'rows':[]};return db[_0x0a9e('0x21')][_0x0a9e('0x85')]({'where':{'id':_0x3f7cb6['params']['id']}})['then'](handleEntityNotFound(_0x3c8a9a,null))[_0x0a9e('0x15')](function(_0x1feb9){if(_0x1feb9){_0x5b78a8[_0x0a9e('0x78')]=_['keys'](db[_0x0a9e('0xa2')]['rawAttributes']);_0x5b78a8[_0x0a9e('0x1e')]=_['keys'](_0x3f7cb6[_0x0a9e('0x1e')]);_0x5b78a8['filters']=_[_0x0a9e('0x7b')](_0x5b78a8[_0x0a9e('0x78')],_0x5b78a8[_0x0a9e('0x1e')]);_0x2d5e00['attributes']=_[_0x0a9e('0x7b')](_0x5b78a8['model'],qs['fields'](_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x7d')]));_0x2d5e00[_0x0a9e('0x7c')]=_0x2d5e00[_0x0a9e('0x7c')][_0x0a9e('0x2b')]?_0x2d5e00[_0x0a9e('0x7c')]:_0x5b78a8[_0x0a9e('0x78')];if(!_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x31')](_0x0a9e('0x83'))){_0x2d5e00[_0x0a9e('0x12')]=qs[_0x0a9e('0x12')](_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x12')]);_0x2d5e00[_0x0a9e('0x10')]=qs[_0x0a9e('0x10')](_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x10')]);}_0x2d5e00[_0x0a9e('0x7e')]=qs['sort'](_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x7f')]);_0x2d5e00[_0x0a9e('0x5c')]=qs[_0x0a9e('0x7a')](_['pick'](_0x3f7cb6['query'],_0x5b78a8['filters']));_0x2d5e00[_0x0a9e('0x5c')]['ContactId']=_0x1feb9['id'];if(_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x81')]){_0x2d5e00[_0x0a9e('0x5c')]=_[_0x0a9e('0x82')](_0x2d5e00[_0x0a9e('0x5c')],{'$or':_[_0x0a9e('0x6d')](_0x2d5e00[_0x0a9e('0x7c')],function(_0x1cc73e){var _0x2154d8={};_0x2154d8[_0x1cc73e]={'$like':'%'+_0x3f7cb6[_0x0a9e('0x1e')]['filter']+'%'};return _0x2154d8;})});}_0x2d5e00=_[_0x0a9e('0x82')]({},_0x2d5e00,_0x3f7cb6['options']);return db[_0x0a9e('0xa2')]['count']({'where':_0x2d5e00[_0x0a9e('0x5c')]})[_0x0a9e('0x15')](function(_0x216791){_0x54cf62['count']=_0x216791;if(_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x9c')]){_0x2d5e00['include']=[{'all':!![]}];}return db['JscriptySessionReport'][_0x0a9e('0x1d')](_0x2d5e00);})[_0x0a9e('0x15')](function(_0x1262ff){_0x54cf62['rows']=_0x1262ff;return _0x54cf62;});}})['then'](respondWithFilteredResult(_0x3c8a9a,_0x2d5e00))['catch'](handleError(_0x3c8a9a,null));};exports[_0x0a9e('0xa3')]=function(_0x22c591,_0x2b7ba9){try{if(!_0x22c591[_0x0a9e('0x32')][_0x0a9e('0x5f')]){throw new Error(_0x0a9e('0xa4'));}if(!_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa5')]){throw new Error(_0x0a9e('0xa6'));}if(!_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa7')]){throw new Error(_0x0a9e('0xa8'));}if(!_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa9')]){throw new Error(_0x0a9e('0xaa'));}var _0x1a74c4=_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa5')]['split'](',');var _0xb33e27=_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa7')][_0x0a9e('0xab')](',');if(!_0x1a74c4[_0x0a9e('0x2b')]||!_0xb33e27[_0x0a9e('0x2b')]||_0x1a74c4['length']!==_0xb33e27[_0x0a9e('0x2b')]){throw new Error(_0x0a9e('0xac'));}_0x22c591[_0x0a9e('0x32')][_0x0a9e('0x7d')]=_[_0x0a9e('0xad')](_0x1a74c4,_0xb33e27);if(!_0x22c591[_0x0a9e('0x32')][_0x0a9e('0x7d')][_0x0a9e('0x76')]){throw new Error(_0x0a9e('0xae'));}if(!_0x22c591['body']['fields'][_0x0a9e('0xaf')]){throw new Error(_0x0a9e('0xb0'));}var _0x5c2996=path[_0x0a9e('0x36')](config[_0x0a9e('0xb1')],'server/files/tmp',_0x22c591[_0x0a9e('0xb2')]['filename']);fs[_0x0a9e('0xb3')](_0x5c2996,parseInt(_0x0a9e('0xb4'),0x8));var _0x58c53c=require(_0x0a9e('0xb5'))[_0x0a9e('0xb6')](path['join'](__dirname,_0x0a9e('0xb7')),[_0x5c2996,_0x22c591[_0x0a9e('0x32')]['binding_keys'],_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa7')],_0x22c591[_0x0a9e('0x32')][_0x0a9e('0x5f')],_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xb8')],_0x22c591['body'][_0x0a9e('0x5b')],_0x22c591[_0x0a9e('0x32')]['socket_timestamp']]);return _0x2b7ba9[_0x0a9e('0xf')](0xc8)[_0x0a9e('0xb9')]({'message':_0x0a9e('0xba'),'pid':_0x58c53c[_0x0a9e('0xbb')]});}catch(_0x3fae71){return _0x2b7ba9[_0x0a9e('0xf')](0x1f4)[_0x0a9e('0xbc')](_0x3fae71);}};exports['upload']=function(_0x49e1b8,_0x5a2013){var _0x55d764=fs['createReadStream'](_0x49e1b8[_0x0a9e('0xb2')][_0x0a9e('0xbd')]);Papa['parse'](_0x55d764,{'header':!![],'skipEmptyLines':!![],'preview':0x1,'complete':function(_0x5c23aa){return _0x5a2013[_0x0a9e('0xf')](0xc8)['json']({'file':_0x49e1b8[_0x0a9e('0xb2')],'fields':_0x5c23aa[_0x0a9e('0xbe')][_0x0a9e('0x7d')]});}});};exports[_0x0a9e('0xbf')]=function(_0x336518,_0x14a683){return db['User'][_0x0a9e('0x1d')]({'raw':!![],'attributes':['id'],'where':{'role':_0x0a9e('0xc0')}})['then'](function(_0x44cdb8){var _0x1c0d54=![];if(!_0x336518[_0x0a9e('0x32')][_0x0a9e('0x5f')]){throw new Error(_0x0a9e('0xa4'));}if(!_0x336518[_0x0a9e('0x32')][_0x0a9e('0xc1')]['phone']){throw new Error(_0x0a9e('0xae'));}if(!_0x336518['body'][_0x0a9e('0xc1')][_0x0a9e('0xaf')]){throw new Error('No\x20firstName\x20column\x20specified');}if(!_0x336518[_0x0a9e('0x32')][_0x0a9e('0xa9')]){throw new Error('Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed');}var _0x78a398=require('child_process')[_0x0a9e('0xb6')](path[_0x0a9e('0x36')](__dirname,'../../components/import/cm/csv2'),[_0x336518[_0x0a9e('0x23')]['id'],JSON['stringify'](_0x336518[_0x0a9e('0x32')]),JSON[_0x0a9e('0xc2')](_0x44cdb8)]);_0x78a398['on'](_0x0a9e('0xc3'),function(){_0x1c0d54=!![];return _0x14a683[_0x0a9e('0xf')](0xc8)[_0x0a9e('0xb9')]({'message':_0x0a9e('0xc4'),'pid':_0x78a398[_0x0a9e('0xbb')]});});_0x78a398['on']('exit',function(_0x36318d){if(_0x36318d&&!_0x1c0d54){return _0x14a683[_0x0a9e('0xf')](0x1f4)[_0x0a9e('0xb9')]({'message':_0x0a9e('0xc5'),'pid':_0x78a398[_0x0a9e('0xbb')]});}});})['catch'](handleError(_0x14a683,null));};exports[_0x0a9e('0xc6')]=function(_0x49a6b2,_0x5d1159){return db[_0x0a9e('0xc7')]['findAll']({'raw':!![],'attributes':['id'],'where':{'role':_0x0a9e('0xc0')}})[_0x0a9e('0x15')](function(_0x58d5fd){var _0x171a69=![];if(!_0x49a6b2[_0x0a9e('0x32')][_0x0a9e('0x5f')]){throw new Error(_0x0a9e('0xa4'));}if(!_0x49a6b2[_0x0a9e('0x32')][_0x0a9e('0xc1')][_0x0a9e('0x76')]){throw new Error(_0x0a9e('0xae'));}if(!_0x49a6b2[_0x0a9e('0x32')]['binding'][_0x0a9e('0xaf')]){throw new Error(_0x0a9e('0xb0'));}if(!_0x49a6b2[_0x0a9e('0x32')][_0x0a9e('0xa9')]){throw new Error('Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed');}var _0x38d95a=require(_0x0a9e('0xb5'))[_0x0a9e('0xb6')](path['join'](__dirname,_0x0a9e('0xc8')),[_0x49a6b2[_0x0a9e('0x23')]['id'],JSON[_0x0a9e('0xc2')](_0x49a6b2['body']),JSON[_0x0a9e('0xc2')](_0x58d5fd)]);_0x38d95a['on']('message',function(){_0x171a69=!![];return _0x5d1159[_0x0a9e('0xf')](0xc8)[_0x0a9e('0xb9')]({'message':_0x0a9e('0xc4'),'pid':_0x38d95a[_0x0a9e('0xbb')]});});_0x38d95a['on'](_0x0a9e('0xc9'),function(_0x1b86e6){if(_0x1b86e6&&!_0x171a69){return _0x5d1159[_0x0a9e('0xf')](0x1f4)['json']({'message':_0x0a9e('0xc5'),'pid':_0x38d95a[_0x0a9e('0xbb')]});}});})[_0x0a9e('0x20')](handleError(_0x5d1159,null));};exports[_0x0a9e('0xca')]=function(_0x1eb768,_0x117694){var _0x3a4def=[_0x0a9e('0xcb'),_0x0a9e('0xcc'),_0x0a9e('0xcd'),_0x0a9e('0xce'),_0x0a9e('0xcf'),_0x0a9e('0xd0'),_0x0a9e('0xd1')];var _0xdce963={'offset':0x0,'order':qs[_0x0a9e('0x7f')](_0x0a9e('0xd2'))},_0xfc4f={'count':0x0,'rows':[]};Promise[_0x0a9e('0xd3')]()[_0x0a9e('0x15')](function(){if(_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0xd4')]){if(!_[_0x0a9e('0xd5')](_0x3a4def,_0x1eb768['query'][_0x0a9e('0xd4')][_0x0a9e('0xd6')]())){throw new Error(_0x0a9e('0xd7'));}_0x3a4def=[_0x1eb768['query'][_0x0a9e('0xd4')]['toLowerCase']()];}if(_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0xd8')]){try{var _0x20a292=JSON[_0x0a9e('0xd9')](_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0xd8')]);if(!moment(_0x20a292[_0x0a9e('0x33')])[_0x0a9e('0xda')]()){throw new Error('Invalid\x20date\x20for\x20range\x20from\x20filter');}if(!moment(_0x20a292['to'])[_0x0a9e('0xda')]()){throw new Error(_0x0a9e('0xdb'));}}catch(_0x4d6f2d){throw new Error(_0x0a9e('0xdc'));}}if(!_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0x31')]('nolimit')){_0xdce963[_0x0a9e('0x12')]=qs[_0x0a9e('0x12')](_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0x12')]||0xa);_0xdce963['offset']=qs[_0x0a9e('0x10')](_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0x10')]);}var _0x2b8eed=_0x3a4def[_0x0a9e('0x6d')](function(_0x4ea917){if(_0x4ea917===_0x0a9e('0xd1')){var _0x3fc431={'attributes':['id','uniqueid',_0x0a9e('0x2e'),_0x0a9e('0xdd'),_0x0a9e('0xde'),'callerid','starttime',_0x0a9e('0xdf'),_0x0a9e('0xe0'),_0x0a9e('0xe1'),_0x0a9e('0xe2'),_0x0a9e('0xe3'),_0x0a9e('0xe4'),_0x0a9e('0xe5'),_0x0a9e('0xe6')],'where':{'ContactId':_0x1eb768['params']['id']},'include':[{'model':db['User'],'as':_0x0a9e('0xc7'),'attributes':['id','name',_0x0a9e('0xe7'),_0x0a9e('0xe8')]}],'order':[[_0x0a9e('0xe2'),_0x0a9e('0xe9')]]};if(_0x1eb768['query'][_0x0a9e('0xd8')]){_0x3fc431[_0x0a9e('0x5c')]['createdAt']={'$gte':_0x20a292[_0x0a9e('0x33')],'$lte':_0x20a292['to']};}return db['VoiceCallReport'][_0x0a9e('0xea')](_0x3fc431)[_0x0a9e('0x15')](function(_0xd63c87){_0xfc4f[_0x0a9e('0x13')]+=_0xd63c87[_0x0a9e('0x13')];return _[_0x0a9e('0x6d')](_0xd63c87['rows'],function(_0x16d50b){var _0x580dd2=_0x16d50b[_0x0a9e('0x34')]({'plain':!![]});_0x580dd2[_0x0a9e('0xd4')]=_0x4ea917;if(_0x580dd2[_0x0a9e('0xc7')]){_0x580dd2[_0x0a9e('0xc7')]={'id':_0x580dd2[_0x0a9e('0xc7')]['id'],'name':_0x580dd2[_0x0a9e('0xc7')][_0x0a9e('0x1a')],'fullname':_0x580dd2['User'][_0x0a9e('0xe7')],'alias':_0x580dd2[_0x0a9e('0xc7')][_0x0a9e('0xe8')]};}return _0x580dd2;});});}else{var _0x188231=_[_0x0a9e('0xeb')](_0x4ea917)+(_0x4ea917==='chat'?_0x0a9e('0xec'):_0x0a9e('0xed'));var _0x488d6c={'attributes':['id','closed',_0x0a9e('0xee'),_0x0a9e('0xe2'),_0x0a9e('0xe1'),_0x0a9e('0xef'),_0x0a9e('0xf0'),_0x0a9e('0xf1'),'UserId',_0x188231+'Id'],'where':{'ContactId':_0x1eb768[_0x0a9e('0x23')]['id']},'include':[{'model':db[_0x188231],'as':_0x0a9e('0xed'),'attributes':['id',_0x0a9e('0x1a'),'key']},{'model':db[_0x0a9e('0xc7')],'as':_0x0a9e('0xf2'),'attributes':['id',_0x0a9e('0x1a'),_0x0a9e('0xe7')]},{'model':db['Tag'],'as':'Tags','attributes':['id',_0x0a9e('0x1a'),_0x0a9e('0x65')],'through':{'attributes':[]}}],'order':[[_0x0a9e('0xe2'),_0x0a9e('0xe9')]]};if(_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0xd8')]){_0x488d6c[_0x0a9e('0x5c')][_0x0a9e('0xe2')]={'$gte':_0x20a292['from'],'$lte':_0x20a292['to']};}switch(_0x4ea917){case _0x0a9e('0xcc'):_0x488d6c['attributes'][_0x0a9e('0x5e')](_0x0a9e('0xf3'),_0x0a9e('0xf4'),'customerPort','deviceModel',_0x0a9e('0xf5'),'ratingMessage',_0x0a9e('0xf6'),'ratingValue','referer');break;case _0x0a9e('0xcb'):_0x488d6c[_0x0a9e('0x7c')][_0x0a9e('0x5e')](_0x0a9e('0xf7'),_0x0a9e('0xf8'));break;case _0x0a9e('0xce'):_0x488d6c[_0x0a9e('0x7c')][_0x0a9e('0x5e')](_0x0a9e('0xf9'),_0x0a9e('0xfa'));break;}return db[_[_0x0a9e('0xeb')](_0x4ea917)+_0x0a9e('0xfb')][_0x0a9e('0xea')](_0x488d6c)['then'](function(_0x58f251){_0xfc4f[_0x0a9e('0x13')]+=_0x58f251['count'];return _[_0x0a9e('0x6d')](_0x58f251[_0x0a9e('0xa0')],function(_0x27be90){var _0x54befc=_0x27be90['get']({'plain':!![]});_0x54befc[_0x0a9e('0xd4')]=_0x4ea917;if(_0x54befc[_0x0a9e('0xf2')]){_0x54befc[_0x0a9e('0xf2')]={'id':_0x54befc[_0x0a9e('0xf2')]['id'],'name':_0x54befc[_0x0a9e('0xf2')][_0x0a9e('0x1a')],'fullname':_0x54befc[_0x0a9e('0xf2')]['fullname']};}return _0x54befc;});});}});return Promise[_0x0a9e('0x62')](_0x2b8eed);})['then'](function(_0x46b11b){return _(_0x46b11b)[_0x0a9e('0xfc')]()['sortBy'](_0x0a9e('0xe2'))[_0x0a9e('0xfd')]()[_0x0a9e('0xfe')]();})[_0x0a9e('0x15')](function(_0xb0fb60){_0xfc4f[_0x0a9e('0xa0')]=_0xdce963['limit']?_0xb0fb60[_0x0a9e('0xff')](_0xdce963[_0x0a9e('0x10')],_0xdce963[_0x0a9e('0x10')]+_0xdce963['limit']):_0xb0fb60;return _0xfc4f;})[_0x0a9e('0x15')](respondWithFilteredResult(_0x117694,_0xdce963))[_0x0a9e('0x20')](handleError(_0x117694,null));};
\ No newline at end of file
+var _0xa9e0=['source','destination','endtime','duration','note','createdAt','userDisposition','userSecondDisposition','userThirdDisposition','UserId','fullname','alias','DESC','findAndCountAll','startCase','Website','Account','closedAt','disposition','secondDisposition','thirdDisposition','Owner','browserName','customerIp','osName','ratingType','subject','substatus','externalUrl','threadId','Interaction','flatten','reverse','value','slice','moment','bluebird','util','squel','ioredis','../../components/contacts','../../components/parsers/qs','../../config/logger','api','../../config/environment/shared','../../mysqldb','redis','localhost','./cmContact.socket','register','status','offset','undefined','limit','count','Content-Range','then','destroy','end','sendStatus','stack','name','describe','getOptions','findAll','query','user','catch','CmContact','find','params','tags','keys','startsWith','cf_','displayName','analytics','CmCustomField','length','columnName','custom','type','values','forEach','hasOwnProperty','body','from','get','isArray','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','update','ChatMessage','ChatOfflineMessage','MailInteraction','MailMessage','SmsInteraction','SmsMessage','FaxInteraction','FaxMessage','OpenchannelInteraction','OpenchannelMessage','CmContactHasItem','CmHopperFinal','ReportAgentPreview','VoiceCallReport','ChatQueueReport','MailQueueReport','OpenchannelQueueReport','SmsQueueReport','WhatsappInteraction','WhatsappMessage','WhatsappQueueReport','dialTimezone','isNil','timezones','utcOffset','additionalPhones','bulkCreate','duplicates','where','$or','push','ListId','findOrCreate','spread','all','show','Tag','color','tag','Phones','ContactItemType','ItemType','literal','Phones.OrderBy','$and','map','format','omit','cf_%d','isEmpty','cm_contacts','id\x20=\x20?','toParam','text','phone','getTags','model','rawAttributes','filters','intersection','attributes','fields','order','sort','pick','filter','merge','nolimit','setTags','findOne','ids','setAdditionalPhones','OrderBy','items','item_types','ItemTypeId','description','contact\x20phone\x20exists','CmHopperAdditionalPhone','item','sequelize','`ItemType`.OrderBy','CmHopperId','ItemType.OrderBy','getAdditionalPhones','PHONE','duplicateAdditionalPhones','CmContactId','toContactId','rescheduleAdditionalPhones','ContactId','options','includeAll','include','getHopperHistories','CmHopperHistory','rows','getJscriptySessions','JscriptySessionReport','uploadCsv','No\x20ListId\x20specified','binding_keys','No\x20association\x20keys\x20specified!','binding_values','No\x20association\x20values\x20specified!','socket_timestamp','Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed','split','Incorrect\x20binding\x20parameters\x20passed!','zipObject','No\x20phone\x20column\x20specified','firstName','No\x20firstName\x20column\x20specified','root','file','chmodSync','0777','child_process','fork','../../components/import/cm/csv','CompanyId','json','File\x20uploaded\x20correctly!','pid','send','path','meta','import','agent','binding','stringify','message','start\x20child\x20process\x20correctly!','error\x20child\x20process','importUpdates','User','../../components/import/cm/csvUpdates','exit','getJourney','mail','chat','sms','openchannel','fax','whatsapp','voice','-createdAt','resolve','channel','includes','toLowerCase','Invalid\x20channel','range','parse','isValid','Invalid\x20date\x20for\x20range\x20to\x20filter','Invalid\x20createdAt\x20filter'];(function(_0xffa198,_0x5a8940){var _0x1e4b50=function(_0x1f1c43){while(--_0x1f1c43){_0xffa198['push'](_0xffa198['shift']());}};_0x1e4b50(++_0x5a8940);}(_0xa9e0,0x123));var _0x0a9e=function(_0x9df060,_0x253d33){_0x9df060=_0x9df060-0x0;var _0x338dfe=_0xa9e0[_0x9df060];return _0x338dfe;};'use strict';var moment=require(_0x0a9e('0x0'));var BPromise=require(_0x0a9e('0x1'));var util=require(_0x0a9e('0x2'));var path=require('path');var fs=require('fs');var _=require('lodash');var squel=require(_0x0a9e('0x3'));var Papa=require('papaparse');var Redis=require(_0x0a9e('0x4'));var contacts=require(_0x0a9e('0x5'));var qs=require(_0x0a9e('0x6'));var logger=require(_0x0a9e('0x7'))(_0x0a9e('0x8'));var config=require('../../config/environment');var shared=require(_0x0a9e('0x9'));var db=require(_0x0a9e('0xa'))['db'];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 respondWithResult(_0x307b3e,_0x3ab53f){_0x3ab53f=_0x3ab53f||0xc8;return function(_0xfeb75b){if(_0xfeb75b){return _0x307b3e[_0x0a9e('0xf')](_0x3ab53f)['json'](_0xfeb75b);}};}function respondWithFilteredResult(_0x50dfb2,_0x527cdd){return function(_0x4cfe67){if(_0x4cfe67){var _0x273d4d=typeof _0x527cdd[_0x0a9e('0x10')]===_0x0a9e('0x11')&&typeof _0x527cdd[_0x0a9e('0x12')]===_0x0a9e('0x11');var _0x69aeb7=_0x4cfe67['count'];var _0x4283ce=_0x273d4d?0x0:_0x527cdd[_0x0a9e('0x10')];var _0x2b4227=_0x273d4d?_0x4cfe67[_0x0a9e('0x13')]:_0x527cdd[_0x0a9e('0x10')]+_0x527cdd[_0x0a9e('0x12')];var _0x52a03d;if(_0x2b4227>=_0x69aeb7){_0x2b4227=_0x69aeb7;_0x52a03d=0xc8;}else{_0x52a03d=0xce;}_0x50dfb2[_0x0a9e('0xf')](_0x52a03d);return _0x50dfb2['set'](_0x0a9e('0x14'),_0x4283ce+'-'+_0x2b4227+'/'+_0x69aeb7)['json'](_0x4cfe67);}return null;};}function saveUpdates(_0x16033c){return function(_0x12066b){if(_0x12066b){return _0x12066b['update'](_0x16033c)[_0x0a9e('0x15')](function(_0x5a0a06){return _0x5a0a06;});}return null;};}function removeEntity(_0x459eb1){return function(_0x478723){if(_0x478723){return _0x478723[_0x0a9e('0x16')]()[_0x0a9e('0x15')](function(){_0x459eb1[_0x0a9e('0xf')](0xcc)[_0x0a9e('0x17')]();});}};}function handleEntityNotFound(_0x530eb7){return function(_0x20559e){if(!_0x20559e){_0x530eb7[_0x0a9e('0x18')](0x194);}return _0x20559e;};}function handleError(_0x112016,_0x1c696a){_0x1c696a=_0x1c696a||0x1f4;return function(_0x105080){logger['error'](_0x105080[_0x0a9e('0x19')]);if(_0x105080[_0x0a9e('0x1a')]){delete _0x105080['name'];}_0x112016[_0x0a9e('0xf')](_0x1c696a)['send'](_0x105080);};}exports['index']=function(_0x3a02e1,_0x432e56){var _0x38e7c4={};return contacts[_0x0a9e('0x1b')]()['then'](function(_0xfb6e48){_0x38e7c4=qs[_0x0a9e('0x1c')](_0xfb6e48,_0x3a02e1);return contacts[_0x0a9e('0x1d')](_0x3a02e1[_0x0a9e('0x1e')],_0x3a02e1[_0x0a9e('0x1f')],_0x38e7c4,_0xfb6e48);})[_0x0a9e('0x15')](respondWithFilteredResult(_0x432e56,_0x38e7c4))[_0x0a9e('0x20')](handleError(_0x432e56,null));};exports['destroy']=function(_0x59181e,_0x197ec0){return db[_0x0a9e('0x21')][_0x0a9e('0x22')]({'where':{'id':_0x59181e[_0x0a9e('0x23')]['id']}})['then'](handleEntityNotFound(_0x197ec0,null))[_0x0a9e('0x15')](removeEntity(_0x197ec0,null))['catch'](handleError(_0x197ec0,null));};exports[_0x0a9e('0x1b')]=function(_0x5bfb33,_0x1dc186){return db[_0x0a9e('0x21')][_0x0a9e('0x1b')]()[_0x0a9e('0x15')](function(_0x140511){delete _0x140511[_0x0a9e('0x24')];for(var _0x11c3b6=0x0;_0x11c3b6<Object[_0x0a9e('0x25')](_0x140511)['length'];_0x11c3b6++){var _0x3652a7=Object[_0x0a9e('0x25')](_0x140511)[_0x11c3b6];if(!_[_0x0a9e('0x26')](_0x3652a7,_0x0a9e('0x27'))){_0x140511[_0x3652a7]['columnName']=_0x3652a7;_0x140511[_0x3652a7][_0x0a9e('0x28')]=_0x3652a7;}}return _0x140511;})[_0x0a9e('0x15')](function(_0x1843b2){var _0x824a4f={'where':Boolean(_0x5bfb33[_0x0a9e('0x1e')][_0x0a9e('0x29')])===!![]?undefined:{'$or':[{'ListId':_0x5bfb33[_0x0a9e('0x1e')]['id']},{'ListId':null}]},'raw':!![]};return db[_0x0a9e('0x2a')][_0x0a9e('0x1d')](_0x824a4f)['then'](function(_0x426950){for(var _0x5d1e0e=0x0;_0x5d1e0e<_0x426950[_0x0a9e('0x2b')];_0x5d1e0e++){var _0x3ae878=_0x0a9e('0x27')+_0x426950[_0x5d1e0e]['id'];_0x1843b2[_0x3ae878][_0x0a9e('0x2c')]=_0x3ae878;_0x1843b2[_0x3ae878][_0x0a9e('0x28')]=_0x426950[_0x5d1e0e]['alias'];_0x1843b2[_0x3ae878][_0x0a9e('0x2d')]={'type':_0x426950[_0x5d1e0e][_0x0a9e('0x2e')],'values':_0x426950[_0x5d1e0e][_0x0a9e('0x2f')]};}Object[_0x0a9e('0x25')](_0x1843b2)[_0x0a9e('0x30')](function(_0x409319){if(!_0x1843b2[_0x409319][_0x0a9e('0x31')](_0x0a9e('0x2c'))){delete _0x1843b2[_0x409319];}});return _0x1843b2;});})['then'](respondWithResult(_0x1dc186,null))[_0x0a9e('0x20')](handleError(_0x1dc186,null));};exports['merge']=function(_0x2cc7a0,_0x14b13f){var _0x2b7e7f;var _0x3f3d41;var _0x567193;if(_0x2cc7a0[_0x0a9e('0x32')]['id']){delete _0x2cc7a0[_0x0a9e('0x32')]['id'];}return db[_0x0a9e('0x21')][_0x0a9e('0x1d')]({'where':{'id':[_0x2cc7a0['body']['to'],_0x2cc7a0['body'][_0x0a9e('0x33')]]}})['then'](function(_0x24936a){if(_0x24936a){if(_0x24936a[_0x0a9e('0x2b')]!==0x2){return null;}_0x24936a[0x0]=_0x24936a[0x0][_0x0a9e('0x34')]({'plain':!![]});_0x24936a[0x1]=_0x24936a[0x1][_0x0a9e('0x34')]({'plain':!![]});delete _0x24936a[0x0]['id'];delete _0x24936a[0x1]['id'];return _['mergeWith'](_0x24936a[0x0],_0x24936a[0x1],function(_0x31916f,_0x3bfce8){if(Array[_0x0a9e('0x35')](_0x3bfce8)&&!_0x3bfce8['length']){return _0x31916f;}else if(!_0x3bfce8){return _0x31916f;}});}})[_0x0a9e('0x15')](handleEntityNotFound(_0x14b13f,null))[_0x0a9e('0x15')](function(_0x289467){if(_0x289467){if(_0x289467['tags']&&_['isArray'](_0x289467[_0x0a9e('0x24')])){_0x289467[_0x0a9e('0x24')]=_0x289467['tags'][_0x0a9e('0x36')]();}logger[_0x0a9e('0x37')](_0x0a9e('0x38'),_0x2cc7a0[_0x0a9e('0x32')]['to'],_0x2cc7a0['body']['from']);return db[_0x0a9e('0x39')][_0x0a9e('0x16')]({'where':{'ContactId':[_0x2cc7a0['body']['to'],_0x2cc7a0[_0x0a9e('0x32')][_0x0a9e('0x33')]]}})[_0x0a9e('0x15')](function(_0x5b4f5e){logger[_0x0a9e('0x37')](_0x0a9e('0x3a'),_0x5b4f5e);return db[_0x0a9e('0x3b')][_0x0a9e('0x16')]({'where':{'ContactId':[_0x2cc7a0[_0x0a9e('0x32')]['to'],_0x2cc7a0[_0x0a9e('0x32')][_0x0a9e('0x33')]]}})[_0x0a9e('0x15')](function(_0x23b089){logger[_0x0a9e('0x37')](_0x0a9e('0x3c'),_0x23b089);return db[_0x0a9e('0x21')][_0x0a9e('0x3d')](_0x289467);});});}})[_0x0a9e('0x15')](function(_0x37f6cc){if(_0x37f6cc){_0x2b7e7f=_0x37f6cc;_0x3f3d41={'ContactId':_0x2b7e7f['id']};_0x567193={'where':{'ContactId':[_0x2cc7a0['body']['to'],_0x2cc7a0['body'][_0x0a9e('0x33')]]}};return db[_0x0a9e('0x3e')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x40')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x41')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x42')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x43')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x42')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x43')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x44')]['update'](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x45')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x46')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x47')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x48')]['update'](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x49')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x4a')][_0x0a9e('0x3f')]({'CmContactId':_0x2b7e7f['id']},{'where':{'CmContactId':[_0x2cc7a0[_0x0a9e('0x32')]['to'],_0x2cc7a0[_0x0a9e('0x32')][_0x0a9e('0x33')]]}});}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x4b')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db['CmHopperHistory']['update'](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x4c')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x4d')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x4e')]['update'](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db['FaxQueueReport'][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x4f')]['update'](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x50')]['update'](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x51')]['update'](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db['JscriptySessionReport'][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x52')]['update'](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x53')]['update'](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x54')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x21')]['destroy']({'where':{'id':[_0x2cc7a0[_0x0a9e('0x32')]['to'],_0x2cc7a0['body'][_0x0a9e('0x33')]]}});}})['then'](function(){if(_0x2b7e7f){return _0x2b7e7f;}})['then'](respondWithResult(_0x14b13f,null))['catch'](handleError(_0x14b13f,null));};exports[_0x0a9e('0x3d')]=function(_0x47de4c,_0x2f7092){return db[_0x0a9e('0x21')][_0x0a9e('0x1b')]()[_0x0a9e('0x15')](function(_0x232830){if(_0x47de4c[_0x0a9e('0x32')][_0x0a9e('0x24')]&&_[_0x0a9e('0x35')](_0x47de4c['body'][_0x0a9e('0x24')])){if(_0x47de4c[_0x0a9e('0x32')][_0x0a9e('0x24')][_0x0a9e('0x2b')]){_0x47de4c[_0x0a9e('0x32')][_0x0a9e('0x24')]=_0x47de4c['body'][_0x0a9e('0x24')][_0x0a9e('0x36')](';')+';';}else{_0x47de4c['body'][_0x0a9e('0x24')]=null;}}else{_0x47de4c['body'][_0x0a9e('0x24')]=null;}if(!_['isNil'](_0x47de4c['body']['dialTimezone'])){var _0x273cb5=_0x47de4c['body'][_0x0a9e('0x55')];if(!_[_0x0a9e('0x56')](shared[_0x0a9e('0x57')][_0x273cb5]))_0x47de4c[_0x0a9e('0x32')][_0x0a9e('0x58')]=shared[_0x0a9e('0x57')][_0x273cb5]['utcOffset'];}return db[_0x0a9e('0x21')]['create'](_0x47de4c[_0x0a9e('0x32')],{'fields':_[_0x0a9e('0x25')](_0x232830),'raw':!![]});})[_0x0a9e('0x15')](function(_0x5adf8f){if(_0x47de4c[_0x0a9e('0x32')][_0x0a9e('0x59')]){return insertAdditionalPhones(_0x5adf8f,_0x47de4c[_0x0a9e('0x32')][_0x0a9e('0x59')]);}else{return _0x5adf8f;}})['then'](respondWithResult(_0x2f7092,0xc9))[_0x0a9e('0x20')](handleError(_0x2f7092,null));};exports[_0x0a9e('0x5a')]=function(_0x54327c,_0x797b45){var _0x17e88c=0x0;var _0x88dcbf=0x0;var _0x409b29=0x0;var _0x401837=[];return db['CmContact'][_0x0a9e('0x1b')]()[_0x0a9e('0x15')](function(_0x281c7d){return BPromise['each'](_0x54327c[_0x0a9e('0x32')],function(_0x4f1e60){var _0x5211e3={'where':{'$or':[]},'defaults':_0x4f1e60,'fields':_[_0x0a9e('0x25')](_0x281c7d),'raw':!![]};if(_0x4f1e60[_0x0a9e('0x5b')]){for(var _0x9375fb=0x0;_0x9375fb<_0x4f1e60[_0x0a9e('0x5b')][_0x0a9e('0x2b')];_0x9375fb++){var _0xc8c264={};_0xc8c264[_0x4f1e60[_0x0a9e('0x5b')][_0x9375fb]]=_0x4f1e60[_0x4f1e60[_0x0a9e('0x5b')][_0x9375fb]];_0x5211e3[_0x0a9e('0x5c')][_0x0a9e('0x5d')][_0x0a9e('0x5e')](_0xc8c264);}_0x5211e3[_0x0a9e('0x5c')][_0x0a9e('0x5f')]=_0x4f1e60[_0x0a9e('0x5f')];}return db[_0x0a9e('0x21')][_0x0a9e('0x60')](_0x5211e3)[_0x0a9e('0x61')](function(_0x4257c9,_0x5150a4){if(_0x5150a4){if(_0x4f1e60[_0x0a9e('0x31')](_0x0a9e('0x59'))){_0x401837[_0x0a9e('0x5e')]({'contact':_0x4257c9,'additionalPhones':_0x4f1e60['additionalPhones']});}_0x17e88c++;}else{_0x409b29++;}})[_0x0a9e('0x20')](function(){_0x88dcbf++;});});})[_0x0a9e('0x15')](function(_0x4b341d){if(_0x4b341d){if(_0x401837[_0x0a9e('0x2b')]>0x0){return new Promise(function(_0x56e31e){var _0x3ef315=[];for(var _0x427946=0x0;_0x427946<_0x401837[_0x0a9e('0x2b')];_0x427946++){_0x3ef315['push'](insertAdditionalPhones(_0x401837[_0x427946]['contact'],_0x401837[_0x427946]['additionalPhones']));}Promise[_0x0a9e('0x62')](_0x3ef315)[_0x0a9e('0x15')](function(){_0x56e31e(0x1);});})[_0x0a9e('0x15')](function(){return{'success':_0x17e88c,'failure':_0x88dcbf,'duplicates':_0x409b29};});}else{return{'success':_0x17e88c,'failure':_0x88dcbf,'duplicates':_0x409b29};}}})[_0x0a9e('0x15')](respondWithResult(_0x797b45,0xc9))[_0x0a9e('0x20')](handleError(_0x797b45,null));};exports[_0x0a9e('0x63')]=function(_0xeef20,_0x1a0677){var _0x5512d1;return db[_0x0a9e('0x21')][_0x0a9e('0x1b')]()[_0x0a9e('0x15')](function(_0x4a4fc7){return db[_0x0a9e('0x21')]['find']({'where':{'id':_0xeef20[_0x0a9e('0x23')]['id']},'include':[{'model':db[_0x0a9e('0x64')],'as':'Tags','attributes':['id',_0x0a9e('0x1a'),_0x0a9e('0x65')],'required':_0xeef20[_0x0a9e('0x1e')][_0x0a9e('0x66')]?!![]:![]},{'model':db['CmContactHasItem'],'as':_0x0a9e('0x67'),'where':{'CmContactId':_0xeef20[_0x0a9e('0x23')]['id']},'required':![],'include':[{'model':db[_0x0a9e('0x68')],'as':_0x0a9e('0x69')}]}],'order':[db['sequelize'][_0x0a9e('0x6a')](_0x0a9e('0x6b'))],'attributes':_[_0x0a9e('0x25')](_0x4a4fc7)});})[_0x0a9e('0x15')](function(_0x4abc8f){if(!_[_0x0a9e('0x56')](_0x4abc8f)){_0x5512d1=_0x4abc8f[_0x0a9e('0x34')]({'plain':!![]});var _0x30a4c7={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x4abc8f&&_0x4abc8f[_0x0a9e('0x5f')]){if(_0x4abc8f[_0x0a9e('0x5f')]){_0x30a4c7[_0x0a9e('0x5c')][_0x0a9e('0x6c')][_0x0a9e('0x5e')]({'ListId':{'$ne':_0x4abc8f[_0x0a9e('0x5f')]}});}}return db[_0x0a9e('0x2a')][_0x0a9e('0x1d')](_0x30a4c7);}})[_0x0a9e('0x15')](function(_0x25744a){if(!_[_0x0a9e('0x56')](_0x25744a)){return _['omit'](_0x5512d1,_[_0x0a9e('0x6d')](_0x25744a,function(_0x11da9c){return util[_0x0a9e('0x6e')]('cf_%d',_0x11da9c['id']);}));}})[_0x0a9e('0x15')](handleEntityNotFound(_0x1a0677,null))[_0x0a9e('0x15')](respondWithResult(_0x1a0677,null))[_0x0a9e('0x20')](handleError(_0x1a0677,null));};exports[_0x0a9e('0x3f')]=function(_0x56d650,_0x541e80){var _0x7ebea8;if(_0x56d650[_0x0a9e('0x32')]['id']){delete _0x56d650['body']['id'];}if(!_[_0x0a9e('0x56')](_0x56d650['body'][_0x0a9e('0x55')])){var _0x8ebf02=_0x56d650['body'][_0x0a9e('0x55')];if(!_[_0x0a9e('0x56')](shared[_0x0a9e('0x57')][_0x8ebf02]))_0x56d650[_0x0a9e('0x32')][_0x0a9e('0x58')]=shared[_0x0a9e('0x57')][_0x8ebf02][_0x0a9e('0x58')];}return db['CmContact'][_0x0a9e('0x22')]({'where':{'id':_0x56d650[_0x0a9e('0x23')]['id']}})[_0x0a9e('0x15')](handleEntityNotFound(_0x541e80,null))[_0x0a9e('0x15')](saveUpdates(_0x56d650['body'],null))[_0x0a9e('0x15')](function(_0xf0db1){_0x7ebea8=_0xf0db1;var _0x4bf3a5={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0xf0db1&&_0xf0db1[_0x0a9e('0x5f')]){if(_0xf0db1['ListId']){_0x4bf3a5[_0x0a9e('0x5c')][_0x0a9e('0x6c')][_0x0a9e('0x5e')]({'ListId':{'$ne':_0xf0db1[_0x0a9e('0x5f')]}});}}return db['CmCustomField']['findAll'](_0x4bf3a5);})[_0x0a9e('0x15')](function(_0x2b9c01){if(_0x2b9c01){return _[_0x0a9e('0x6f')](_['pickBy'](_0x56d650[_0x0a9e('0x32')],function(_0x36e975,_0x524e38){return _['startsWith'](_0x524e38,_0x0a9e('0x27'));}),_['map'](_0x2b9c01,function(_0x5ea541){return util['format'](_0x0a9e('0x70'),_0x5ea541['id']);}));}})[_0x0a9e('0x15')](function(_0x9044fe){if(_0x9044fe&&!_[_0x0a9e('0x71')](_0x9044fe)){var _0x3c6dd6=squel[_0x0a9e('0x3f')]()['table'](_0x0a9e('0x72'))['setFields'](_0x9044fe)[_0x0a9e('0x5c')](_0x0a9e('0x73'),_0x56d650[_0x0a9e('0x23')]['id'])[_0x0a9e('0x74')]();return db['sequelize'][_0x0a9e('0x1e')](_0x3c6dd6[_0x0a9e('0x75')],{'replacements':_0x3c6dd6[_0x0a9e('0x2f')]});}})['then'](function(){if(_0x56d650[_0x0a9e('0x32')][_0x0a9e('0x76')]&&_0x7ebea8){return db[_0x0a9e('0x39')][_0x0a9e('0x3f')]({'phone':_0x56d650[_0x0a9e('0x32')][_0x0a9e('0x76')],'OrderBy':0x0},{'where':{'ContactId':_0x7ebea8['id']}});}})[_0x0a9e('0x15')](function(){return _0x7ebea8;})[_0x0a9e('0x15')](respondWithResult(_0x541e80,null))['catch'](handleError(_0x541e80,null));};exports[_0x0a9e('0x77')]=function(_0x3325c5,_0x589ff3){var _0x40e0f0={};var _0x982340={};var _0x3a1974;var _0x5a26c8;return db[_0x0a9e('0x21')]['findOne']({'where':{'id':_0x3325c5[_0x0a9e('0x23')]['id']}})[_0x0a9e('0x15')](handleEntityNotFound(_0x589ff3,null))[_0x0a9e('0x15')](function(_0x1f29bd){if(_0x1f29bd){_0x3a1974=_0x1f29bd;_0x982340[_0x0a9e('0x78')]=_[_0x0a9e('0x25')](db[_0x0a9e('0x64')][_0x0a9e('0x79')]);_0x982340['query']=_[_0x0a9e('0x25')](_0x3325c5[_0x0a9e('0x1e')]);_0x982340[_0x0a9e('0x7a')]=_[_0x0a9e('0x7b')](_0x982340[_0x0a9e('0x78')],_0x982340[_0x0a9e('0x1e')]);_0x40e0f0[_0x0a9e('0x7c')]=_[_0x0a9e('0x7b')](_0x982340[_0x0a9e('0x78')],qs[_0x0a9e('0x7d')](_0x3325c5[_0x0a9e('0x1e')][_0x0a9e('0x7d')]));_0x40e0f0[_0x0a9e('0x7c')]=_0x40e0f0['attributes'][_0x0a9e('0x2b')]?_0x40e0f0[_0x0a9e('0x7c')]:_0x982340[_0x0a9e('0x78')];_0x40e0f0[_0x0a9e('0x7e')]=qs[_0x0a9e('0x7f')](_0x3325c5['query'][_0x0a9e('0x7f')]);_0x40e0f0[_0x0a9e('0x5c')]=qs['filters'](_[_0x0a9e('0x80')](_0x3325c5['query'],_0x982340[_0x0a9e('0x7a')]));if(_0x3325c5[_0x0a9e('0x1e')][_0x0a9e('0x81')]){_0x40e0f0[_0x0a9e('0x5c')]=_['merge'](_0x40e0f0[_0x0a9e('0x5c')],{'$or':_['map'](_0x40e0f0[_0x0a9e('0x7c')],function(_0x3d0a77){var _0x5e5b89={};_0x5e5b89[_0x3d0a77]={'$like':'%'+_0x3325c5[_0x0a9e('0x1e')][_0x0a9e('0x81')]+'%'};return _0x5e5b89;})});}_0x40e0f0=_[_0x0a9e('0x82')]({},_0x40e0f0,_0x3325c5['options']);return _0x3a1974['getTags'](_0x40e0f0);}})[_0x0a9e('0x15')](function(_0x6ba2be){if(_0x6ba2be){_0x5a26c8=_0x6ba2be[_0x0a9e('0x2b')];if(!_0x3325c5[_0x0a9e('0x1e')][_0x0a9e('0x31')](_0x0a9e('0x83'))){_0x40e0f0[_0x0a9e('0x12')]=qs[_0x0a9e('0x12')](_0x3325c5[_0x0a9e('0x1e')]['limit']);_0x40e0f0[_0x0a9e('0x10')]=qs['offset'](_0x3325c5[_0x0a9e('0x1e')][_0x0a9e('0x10')]);}return _0x3a1974[_0x0a9e('0x77')](_0x40e0f0);}})[_0x0a9e('0x15')](function(_0x1b61d5){if(_0x1b61d5){return _0x1b61d5?{'count':_0x5a26c8,'rows':_0x1b61d5}:null;}})['then'](respondWithResult(_0x589ff3,null))[_0x0a9e('0x20')](handleError(_0x589ff3,null));};exports[_0x0a9e('0x84')]=function(_0x2791c5,_0x2aa5f2){if(_0x2791c5[_0x0a9e('0x32')]['id']){delete _0x2791c5['body']['id'];}return db['CmContact'][_0x0a9e('0x85')]({'where':{'id':_0x2791c5['params']['id']}})[_0x0a9e('0x15')](handleEntityNotFound(_0x2aa5f2,null))[_0x0a9e('0x15')](function(_0x4672e1){if(_0x4672e1){return _0x4672e1[_0x0a9e('0x84')](_0x2791c5[_0x0a9e('0x32')][_0x0a9e('0x86')]||[]);}return null;})['then'](respondWithResult(_0x2aa5f2,null))['catch'](handleError(_0x2aa5f2,null));};exports[_0x0a9e('0x87')]=function(_0x5dfbe2,_0x2469d1){var _0x5c689c=[];_0x5c689c[_0x0a9e('0x5e')](addAdditionalPhones(_0x5dfbe2['body']));Promise['all'](_0x5c689c)[_0x0a9e('0x15')](function(){_0x5c689c=[];_0x5c689c[_0x0a9e('0x5e')](deleteCmHopperPhones(_0x5dfbe2['body']['id']));_0x5c689c[_0x0a9e('0x5e')](addCmHopperPhones(_0x5dfbe2[_0x0a9e('0x32')]['id']));Promise[_0x0a9e('0x62')](_0x5c689c)[_0x0a9e('0x15')](function(){return[0x1];})[_0x0a9e('0x15')](respondWithResult(_0x2469d1,null));});};function addAdditionalPhones(_0x5ab0bc){var _0x5505f4;return new Promise(function(_0x16449b){return db[_0x0a9e('0x4a')][_0x0a9e('0x16')]({'where':{'CmContactId':_0x5ab0bc['id']}})[_0x0a9e('0x15')](function(){db[_0x0a9e('0x68')]['findAll']({'raw':!![],'attributes':['id',_0x0a9e('0x88')]})[_0x0a9e('0x15')](function(_0x5416a9){var _0x3c313d=[];for(var _0x19fd11=0x0;_0x19fd11<_0x5ab0bc[_0x0a9e('0x89')][_0x0a9e('0x2b')];_0x19fd11++){var _0x23b25b=_0x5ab0bc[_0x0a9e('0x8a')]?_[_0x0a9e('0x56')](_0x5ab0bc[_0x0a9e('0x8a')][_0x19fd11])?'':_0x5ab0bc[_0x0a9e('0x8a')][_0x19fd11]:_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11]['ItemTypeId']?_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11][_0x0a9e('0x8b')]:'';var _0x2ada60=_[_0x0a9e('0x56')](_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11]['description'])?'':_0x5ab0bc['items'][_0x19fd11][_0x0a9e('0x8c')];var _0x16ae1a=_0x23b25b+':'+_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11][_0x0a9e('0x76')]+'§'+_0x2ada60;if(_[_0x0a9e('0x56')](_0x5505f4))_0x5505f4=_0x16ae1a;else _0x5505f4+=';'+_0x16ae1a;var _0x59e46f=null;var _0x1339d0=null;if(_0x5ab0bc[_0x0a9e('0x8a')]){if(!_[_0x0a9e('0x56')](_0x5ab0bc['item_types'][_0x19fd11])){_0x1339d0=_[_0x0a9e('0x22')](_0x5416a9,function(_0x59aa7b){return _0x59aa7b['id']===_0x5ab0bc[_0x0a9e('0x8a')][_0x19fd11];});if(!_['isNil'](_0x1339d0)){_0x59e46f=_0x1339d0[_0x0a9e('0x88')];}}}else{if(!_[_0x0a9e('0x56')](_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11])){_0x1339d0=_['find'](_0x5416a9,function(_0xc9529d){return _0xc9529d['id']===_0x5ab0bc['items'][_0x19fd11][_0x0a9e('0x8b')];});if(!_[_0x0a9e('0x56')](_0x1339d0)){_0x59e46f=_0x19fd11;}}}if(_[_0x0a9e('0x56')](_0x59e46f)){_0x59e46f=0x64;}_0x3c313d[_0x0a9e('0x5e')](addAdditionalPhone(_0x5ab0bc['id'],_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11][_0x0a9e('0x76')],_0x5ab0bc[_0x0a9e('0x8a')]?_[_0x0a9e('0x56')](_0x5ab0bc[_0x0a9e('0x8a')][_0x19fd11])?null:_0x5ab0bc[_0x0a9e('0x8a')][_0x19fd11]:_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11][_0x0a9e('0x8b')]?_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11][_0x0a9e('0x8b')]:null,_0x59e46f,_0x2ada60));}Promise[_0x0a9e('0x62')](_0x3c313d)[_0x0a9e('0x15')](function(){db['CmContact']['update']({'AdditionalPhones':_0x5505f4},{'where':{'id':_0x5ab0bc['id']}})[_0x0a9e('0x15')](function(){_0x16449b(0x1);});});});});});}function addAdditionalPhone(_0x5c4be0,_0x1d999b,_0x3428c9,_0x5d6b69,_0x1a3754){return db[_0x0a9e('0x4a')][_0x0a9e('0x22')]({'where':{'CmContactId':_0x5c4be0,'item':_0x1d999b}})[_0x0a9e('0x15')](function(_0x5585d5){if(_0x5585d5)logger[_0x0a9e('0x37')](_0x0a9e('0x8d'),_0x5585d5);else{db[_0x0a9e('0x4a')][_0x0a9e('0x3d')]({'CmContactId':_0x5c4be0,'item':_0x1d999b,'ItemTypeId':_0x3428c9,'OrderBy':_0x5d6b69,'ItemClass':'PHONE','description':_0x1a3754});}});}function deleteCmHopperPhones(_0x19e9ed){return new Promise(function(_0x1a0b08){return db[_0x0a9e('0x39')]['findAll']({'raw':!![],'attributes':['id'],'where':{'ContactId':_0x19e9ed}})[_0x0a9e('0x15')](function(_0x270df8){db[_0x0a9e('0x8e')]['destroy']({'where':{'CmHopperId':{'$in':_[_0x0a9e('0x6d')](_0x270df8,'id')}}});})[_0x0a9e('0x15')](function(){_0x1a0b08(0x1);});});}function addCmHopperPhones(_0x1d9b57){return new Promise(function(_0x1a7f58){return db[_0x0a9e('0x39')]['findAll']({'raw':!![],'attributes':['id'],'where':{'ContactId':_0x1d9b57}})[_0x0a9e('0x15')](function(_0x289e65){var _0x4795ae=[];_[_0x0a9e('0x6d')](_0x289e65,function(_0x1fcfe6){_0x4795ae[_0x0a9e('0x5e')](createCmHopperPhone(_0x1d9b57,_0x1fcfe6['id']));});Promise['all'](_0x4795ae)['then'](function(){_0x1a7f58(0x1);});});});}function createCmHopperPhone(_0x523d08,_0x1015aa){return new Promise(function(_0x4a70ce){db['CmContactHasItem'][_0x0a9e('0x1d')]({'raw':!![],'attributes':[_0x0a9e('0x8f'),_0x0a9e('0x88')],'where':{'CmContactId':_0x523d08,'ItemClass':'PHONE'},'include':[{'model':db[_0x0a9e('0x68')],'attributes':[_0x0a9e('0x88')],'as':_0x0a9e('0x69')}],'order':[_0x0a9e('0x88'),db[_0x0a9e('0x90')][_0x0a9e('0x6a')](_0x0a9e('0x91'))]})[_0x0a9e('0x15')](function(_0x3b5bda){var _0x5a1848=0x1;var _0x43c397=_['map'](_0x3b5bda,function(_0x138cf5){_0x138cf5[_0x0a9e('0x92')]=_0x1015aa;_0x138cf5[_0x0a9e('0x76')]=_0x138cf5[_0x0a9e('0x8f')];_0x138cf5[_0x0a9e('0x88')]=_0x5a1848;delete _0x138cf5[_0x0a9e('0x93')];_0x5a1848=_0x5a1848+0x1;return _0x138cf5;});return db['CmHopperAdditionalPhone'][_0x0a9e('0x5a')](_0x43c397,{});})[_0x0a9e('0x15')](function(){_0x4a70ce(0x1);});});}function insertAdditionalPhones(_0xe25eb5,_0x1af799){return new Promise(function(_0x51aa2f){var _0x2e4887=[];for(var _0x3c9135=0x0;_0x3c9135<_0x1af799[_0x0a9e('0x2b')];_0x3c9135++){var _0x1c9539=_0x1af799[_0x3c9135];_0x2e4887[_0x0a9e('0x5e')](parseContactItemType(_0x1c9539));}Promise[_0x0a9e('0x62')](_0x2e4887)[_0x0a9e('0x15')](function(){var _0x25931e={'id':_0xe25eb5['id'],'items':_0x1af799};return addAdditionalPhones(_0x25931e)[_0x0a9e('0x15')](function(){return addCmHopperPhones(_0xe25eb5['id']);});})[_0x0a9e('0x15')](function(){_0x51aa2f(_0xe25eb5);});});}function parseContactItemType(_0x57f0ad){return new Promise(function(_0x2272bc){if(_0x57f0ad[_0x0a9e('0x31')](_0x0a9e('0x8b'))){_0x2272bc(_0x57f0ad);}else{return db[_0x0a9e('0x68')][_0x0a9e('0x22')]({'where':{'name':_0x57f0ad[_0x0a9e('0x69')]}})[_0x0a9e('0x15')](function(_0x20ae21){if(_['isNil'](_0x20ae21))_0x57f0ad[_0x0a9e('0x8b')]=null;else _0x57f0ad[_0x0a9e('0x8b')]=_0x20ae21['id'];_0x2272bc(_0x57f0ad);});}});}exports[_0x0a9e('0x94')]=function(_0x5c65fc,_0x1402c7){return db[_0x0a9e('0x4a')][_0x0a9e('0x1d')]({'raw':!![],'where':{'CmContactId':_0x5c65fc[_0x0a9e('0x23')]['id'],'ItemClass':_0x0a9e('0x95')},'include':[{'model':db[_0x0a9e('0x68')],'as':_0x0a9e('0x69')}],'order':[[_0x0a9e('0x88')],[db[_0x0a9e('0x90')][_0x0a9e('0x6a')]('`ItemType`.OrderBy')]]})[_0x0a9e('0x15')](function(_0x446e6){return _0x446e6;})[_0x0a9e('0x15')](respondWithResult(_0x1402c7,null))[_0x0a9e('0x20')](handleError(_0x1402c7,null));};exports[_0x0a9e('0x96')]=function(_0x3942fd,_0x5cb48d){return db[_0x0a9e('0x4a')]['findAll']({'raw':!![],'where':{'CmContactId':_0x3942fd['body']['fromContactId']}})[_0x0a9e('0x15')](function(_0x3fa3f2){var _0x426cb4=_[_0x0a9e('0x6d')](_0x3fa3f2,function(_0x4d99a8){_0x4d99a8[_0x0a9e('0x97')]=_0x3942fd[_0x0a9e('0x32')][_0x0a9e('0x98')];return _0x4d99a8;});return db[_0x0a9e('0x4a')][_0x0a9e('0x5a')](_0x426cb4,{});})['then'](function(){return addCmHopperPhones(_0x3942fd['body'][_0x0a9e('0x98')]);})[_0x0a9e('0x15')](function(){return['ok'];})[_0x0a9e('0x15')](respondWithResult(_0x5cb48d,null))['catch'](handleError(_0x5cb48d,null));};exports[_0x0a9e('0x99')]=function(_0x248a9a,_0x422f0a){var _0x4cee8c=[];_0x4cee8c[_0x0a9e('0x5e')](createCmHopperPhone(_0x248a9a[_0x0a9e('0x32')]['id'],_0x248a9a[_0x0a9e('0x32')]['hopperId']));Promise[_0x0a9e('0x62')](_0x4cee8c)[_0x0a9e('0x15')](function(){return[0x1];})[_0x0a9e('0x15')](respondWithResult(_0x422f0a,null));};exports['getHoppers']=function(_0x549697,_0x53ef46){var _0x3b04fd={'raw':![],'where':{}};var _0x1f50db={};var _0xcbc73c={'count':0x0,'rows':[]};return db[_0x0a9e('0x21')]['findOne']({'where':{'id':_0x549697[_0x0a9e('0x23')]['id']}})['then'](handleEntityNotFound(_0x53ef46,null))[_0x0a9e('0x15')](function(_0x2ff2ab){if(_0x2ff2ab){_0x1f50db[_0x0a9e('0x78')]=_['keys'](db[_0x0a9e('0x39')][_0x0a9e('0x79')]);_0x1f50db[_0x0a9e('0x1e')]=_['keys'](_0x549697[_0x0a9e('0x1e')]);_0x1f50db['filters']=_[_0x0a9e('0x7b')](_0x1f50db['model'],_0x1f50db[_0x0a9e('0x1e')]);_0x3b04fd['attributes']=_[_0x0a9e('0x7b')](_0x1f50db[_0x0a9e('0x78')],qs[_0x0a9e('0x7d')](_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x7d')]));_0x3b04fd[_0x0a9e('0x7c')]=_0x3b04fd[_0x0a9e('0x7c')]['length']?_0x3b04fd[_0x0a9e('0x7c')]:_0x1f50db[_0x0a9e('0x78')];if(!_0x549697['query'][_0x0a9e('0x31')](_0x0a9e('0x83'))){_0x3b04fd['limit']=qs[_0x0a9e('0x12')](_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x12')]);_0x3b04fd['offset']=qs[_0x0a9e('0x10')](_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x10')]);}_0x3b04fd[_0x0a9e('0x7e')]=qs[_0x0a9e('0x7f')](_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x7f')]);_0x3b04fd[_0x0a9e('0x5c')]=qs[_0x0a9e('0x7a')](_[_0x0a9e('0x80')](_0x549697['query'],_0x1f50db[_0x0a9e('0x7a')]));_0x3b04fd['where'][_0x0a9e('0x9a')]=_0x2ff2ab['id'];if(_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x81')]){_0x3b04fd[_0x0a9e('0x5c')]=_[_0x0a9e('0x82')](_0x3b04fd[_0x0a9e('0x5c')],{'$or':_['map'](_0x3b04fd[_0x0a9e('0x7c')],function(_0x469035){var _0x2977a7={};_0x2977a7[_0x469035]={'$like':'%'+_0x549697['query'][_0x0a9e('0x81')]+'%'};return _0x2977a7;})});}_0x3b04fd=_[_0x0a9e('0x82')]({},_0x3b04fd,_0x549697[_0x0a9e('0x9b')]);return db[_0x0a9e('0x39')][_0x0a9e('0x13')]({'where':_0x3b04fd[_0x0a9e('0x5c')]})[_0x0a9e('0x15')](function(_0x5f2c51){_0xcbc73c[_0x0a9e('0x13')]=_0x5f2c51;if(_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x9c')]){_0x3b04fd[_0x0a9e('0x9d')]=[{'all':!![]}];}return db[_0x0a9e('0x39')][_0x0a9e('0x1d')](_0x3b04fd);})[_0x0a9e('0x15')](function(_0x5d6a48){_0xcbc73c['rows']=_0x5d6a48;return _0xcbc73c;});}})[_0x0a9e('0x15')](respondWithFilteredResult(_0x53ef46,_0x3b04fd))[_0x0a9e('0x20')](handleError(_0x53ef46,null));};exports[_0x0a9e('0x9e')]=function(_0x1bf692,_0x40e2da){var _0x131da8={'raw':!![],'where':{}};var _0x609711={};var _0x584854={'count':0x0,'rows':[]};return db[_0x0a9e('0x21')][_0x0a9e('0x85')]({'where':{'id':_0x1bf692[_0x0a9e('0x23')]['id']}})[_0x0a9e('0x15')](handleEntityNotFound(_0x40e2da,null))[_0x0a9e('0x15')](function(_0x3c6082){if(_0x3c6082){_0x609711[_0x0a9e('0x78')]=_['keys'](db[_0x0a9e('0x9f')][_0x0a9e('0x79')]);_0x609711[_0x0a9e('0x1e')]=_['keys'](_0x1bf692[_0x0a9e('0x1e')]);_0x609711[_0x0a9e('0x7a')]=_[_0x0a9e('0x7b')](_0x609711[_0x0a9e('0x78')],_0x609711['query']);_0x131da8[_0x0a9e('0x7c')]=_[_0x0a9e('0x7b')](_0x609711[_0x0a9e('0x78')],qs[_0x0a9e('0x7d')](_0x1bf692[_0x0a9e('0x1e')][_0x0a9e('0x7d')]));_0x131da8[_0x0a9e('0x7c')]=_0x131da8[_0x0a9e('0x7c')]['length']?_0x131da8[_0x0a9e('0x7c')]:_0x609711[_0x0a9e('0x78')];if(!_0x1bf692[_0x0a9e('0x1e')][_0x0a9e('0x31')]('nolimit')){_0x131da8['limit']=qs[_0x0a9e('0x12')](_0x1bf692[_0x0a9e('0x1e')][_0x0a9e('0x12')]);_0x131da8['offset']=qs[_0x0a9e('0x10')](_0x1bf692[_0x0a9e('0x1e')]['offset']);}_0x131da8[_0x0a9e('0x7e')]=qs['sort'](_0x1bf692[_0x0a9e('0x1e')]['sort']);_0x131da8['where']=qs['filters'](_[_0x0a9e('0x80')](_0x1bf692[_0x0a9e('0x1e')],_0x609711[_0x0a9e('0x7a')]));_0x131da8[_0x0a9e('0x5c')][_0x0a9e('0x9a')]=_0x3c6082['id'];if(_0x1bf692[_0x0a9e('0x1e')]['filter']){_0x131da8[_0x0a9e('0x5c')]=_[_0x0a9e('0x82')](_0x131da8[_0x0a9e('0x5c')],{'$or':_[_0x0a9e('0x6d')](_0x131da8[_0x0a9e('0x7c')],function(_0x18dccf){var _0x31c937={};_0x31c937[_0x18dccf]={'$like':'%'+_0x1bf692['query']['filter']+'%'};return _0x31c937;})});}_0x131da8=_[_0x0a9e('0x82')]({},_0x131da8,_0x1bf692['options']);return db[_0x0a9e('0x9f')][_0x0a9e('0x13')]({'where':_0x131da8[_0x0a9e('0x5c')]})[_0x0a9e('0x15')](function(_0x37a448){_0x584854[_0x0a9e('0x13')]=_0x37a448;if(_0x1bf692['query'][_0x0a9e('0x9c')]){_0x131da8['include']=[{'all':!![]}];}return db['CmHopperHistory'][_0x0a9e('0x1d')](_0x131da8);})['then'](function(_0x38dceb){_0x584854['rows']=_0x38dceb;return _0x584854;});}})['then'](respondWithFilteredResult(_0x40e2da,_0x131da8))[_0x0a9e('0x20')](handleError(_0x40e2da,null));};exports['getHopperFinals']=function(_0x24470a,_0x142e53){var _0xe1ab0d={'raw':!![],'where':{}};var _0x48f532={};var _0x4152cd={'count':0x0,'rows':[]};return db[_0x0a9e('0x21')][_0x0a9e('0x85')]({'where':{'id':_0x24470a['params']['id']}})['then'](handleEntityNotFound(_0x142e53,null))[_0x0a9e('0x15')](function(_0x948aab){if(_0x948aab){_0x48f532[_0x0a9e('0x78')]=_[_0x0a9e('0x25')](db[_0x0a9e('0x4b')][_0x0a9e('0x79')]);_0x48f532[_0x0a9e('0x1e')]=_[_0x0a9e('0x25')](_0x24470a[_0x0a9e('0x1e')]);_0x48f532[_0x0a9e('0x7a')]=_['intersection'](_0x48f532['model'],_0x48f532['query']);_0xe1ab0d[_0x0a9e('0x7c')]=_[_0x0a9e('0x7b')](_0x48f532[_0x0a9e('0x78')],qs[_0x0a9e('0x7d')](_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x7d')]));_0xe1ab0d[_0x0a9e('0x7c')]=_0xe1ab0d[_0x0a9e('0x7c')]['length']?_0xe1ab0d['attributes']:_0x48f532[_0x0a9e('0x78')];if(!_0x24470a[_0x0a9e('0x1e')]['hasOwnProperty'](_0x0a9e('0x83'))){_0xe1ab0d[_0x0a9e('0x12')]=qs[_0x0a9e('0x12')](_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x12')]);_0xe1ab0d[_0x0a9e('0x10')]=qs[_0x0a9e('0x10')](_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x10')]);}_0xe1ab0d[_0x0a9e('0x7e')]=qs[_0x0a9e('0x7f')](_0x24470a[_0x0a9e('0x1e')]['sort']);_0xe1ab0d[_0x0a9e('0x5c')]=qs[_0x0a9e('0x7a')](_[_0x0a9e('0x80')](_0x24470a[_0x0a9e('0x1e')],_0x48f532[_0x0a9e('0x7a')]));_0xe1ab0d[_0x0a9e('0x5c')][_0x0a9e('0x9a')]=_0x948aab['id'];if(_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x81')]){_0xe1ab0d[_0x0a9e('0x5c')]=_[_0x0a9e('0x82')](_0xe1ab0d[_0x0a9e('0x5c')],{'$or':_['map'](_0xe1ab0d['attributes'],function(_0x3e5182){var _0x401207={};_0x401207[_0x3e5182]={'$like':'%'+_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x81')]+'%'};return _0x401207;})});}_0xe1ab0d=_[_0x0a9e('0x82')]({},_0xe1ab0d,_0x24470a[_0x0a9e('0x9b')]);return db[_0x0a9e('0x4b')]['count']({'where':_0xe1ab0d[_0x0a9e('0x5c')]})['then'](function(_0x26aa44){_0x4152cd[_0x0a9e('0x13')]=_0x26aa44;if(_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x9c')]){_0xe1ab0d[_0x0a9e('0x9d')]=[{'all':!![]}];}return db[_0x0a9e('0x4b')][_0x0a9e('0x1d')](_0xe1ab0d);})[_0x0a9e('0x15')](function(_0xa7a754){_0x4152cd[_0x0a9e('0xa0')]=_0xa7a754;return _0x4152cd;});}})[_0x0a9e('0x15')](respondWithFilteredResult(_0x142e53,_0xe1ab0d))[_0x0a9e('0x20')](handleError(_0x142e53,null));};exports[_0x0a9e('0xa1')]=function(_0x3f7cb6,_0x3c8a9a){var _0x2d5e00={'raw':!![],'where':{}};var _0x5b78a8={};var _0x54cf62={'count':0x0,'rows':[]};return db[_0x0a9e('0x21')][_0x0a9e('0x85')]({'where':{'id':_0x3f7cb6['params']['id']}})['then'](handleEntityNotFound(_0x3c8a9a,null))[_0x0a9e('0x15')](function(_0x1feb9){if(_0x1feb9){_0x5b78a8[_0x0a9e('0x78')]=_['keys'](db[_0x0a9e('0xa2')]['rawAttributes']);_0x5b78a8[_0x0a9e('0x1e')]=_['keys'](_0x3f7cb6[_0x0a9e('0x1e')]);_0x5b78a8['filters']=_[_0x0a9e('0x7b')](_0x5b78a8[_0x0a9e('0x78')],_0x5b78a8[_0x0a9e('0x1e')]);_0x2d5e00['attributes']=_[_0x0a9e('0x7b')](_0x5b78a8['model'],qs['fields'](_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x7d')]));_0x2d5e00[_0x0a9e('0x7c')]=_0x2d5e00[_0x0a9e('0x7c')][_0x0a9e('0x2b')]?_0x2d5e00[_0x0a9e('0x7c')]:_0x5b78a8[_0x0a9e('0x78')];if(!_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x31')](_0x0a9e('0x83'))){_0x2d5e00[_0x0a9e('0x12')]=qs[_0x0a9e('0x12')](_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x12')]);_0x2d5e00[_0x0a9e('0x10')]=qs[_0x0a9e('0x10')](_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x10')]);}_0x2d5e00[_0x0a9e('0x7e')]=qs['sort'](_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x7f')]);_0x2d5e00[_0x0a9e('0x5c')]=qs[_0x0a9e('0x7a')](_['pick'](_0x3f7cb6['query'],_0x5b78a8['filters']));_0x2d5e00[_0x0a9e('0x5c')]['ContactId']=_0x1feb9['id'];if(_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x81')]){_0x2d5e00[_0x0a9e('0x5c')]=_[_0x0a9e('0x82')](_0x2d5e00[_0x0a9e('0x5c')],{'$or':_[_0x0a9e('0x6d')](_0x2d5e00[_0x0a9e('0x7c')],function(_0x1cc73e){var _0x2154d8={};_0x2154d8[_0x1cc73e]={'$like':'%'+_0x3f7cb6[_0x0a9e('0x1e')]['filter']+'%'};return _0x2154d8;})});}_0x2d5e00=_[_0x0a9e('0x82')]({},_0x2d5e00,_0x3f7cb6['options']);return db[_0x0a9e('0xa2')]['count']({'where':_0x2d5e00[_0x0a9e('0x5c')]})[_0x0a9e('0x15')](function(_0x216791){_0x54cf62['count']=_0x216791;if(_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x9c')]){_0x2d5e00['include']=[{'all':!![]}];}return db['JscriptySessionReport'][_0x0a9e('0x1d')](_0x2d5e00);})[_0x0a9e('0x15')](function(_0x1262ff){_0x54cf62['rows']=_0x1262ff;return _0x54cf62;});}})['then'](respondWithFilteredResult(_0x3c8a9a,_0x2d5e00))['catch'](handleError(_0x3c8a9a,null));};exports[_0x0a9e('0xa3')]=function(_0x22c591,_0x2b7ba9){try{if(!_0x22c591[_0x0a9e('0x32')][_0x0a9e('0x5f')]){throw new Error(_0x0a9e('0xa4'));}if(!_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa5')]){throw new Error(_0x0a9e('0xa6'));}if(!_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa7')]){throw new Error(_0x0a9e('0xa8'));}if(!_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa9')]){throw new Error(_0x0a9e('0xaa'));}var _0x1a74c4=_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa5')]['split'](',');var _0xb33e27=_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa7')][_0x0a9e('0xab')](',');if(!_0x1a74c4[_0x0a9e('0x2b')]||!_0xb33e27[_0x0a9e('0x2b')]||_0x1a74c4['length']!==_0xb33e27[_0x0a9e('0x2b')]){throw new Error(_0x0a9e('0xac'));}_0x22c591[_0x0a9e('0x32')][_0x0a9e('0x7d')]=_[_0x0a9e('0xad')](_0x1a74c4,_0xb33e27);if(!_0x22c591[_0x0a9e('0x32')][_0x0a9e('0x7d')][_0x0a9e('0x76')]){throw new Error(_0x0a9e('0xae'));}if(!_0x22c591['body']['fields'][_0x0a9e('0xaf')]){throw new Error(_0x0a9e('0xb0'));}var _0x5c2996=path[_0x0a9e('0x36')](config[_0x0a9e('0xb1')],'server/files/tmp',_0x22c591[_0x0a9e('0xb2')]['filename']);fs[_0x0a9e('0xb3')](_0x5c2996,parseInt(_0x0a9e('0xb4'),0x8));var _0x58c53c=require(_0x0a9e('0xb5'))[_0x0a9e('0xb6')](path['join'](__dirname,_0x0a9e('0xb7')),[_0x5c2996,_0x22c591[_0x0a9e('0x32')]['binding_keys'],_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa7')],_0x22c591[_0x0a9e('0x32')][_0x0a9e('0x5f')],_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xb8')],_0x22c591['body'][_0x0a9e('0x5b')],_0x22c591[_0x0a9e('0x32')]['socket_timestamp']]);return _0x2b7ba9[_0x0a9e('0xf')](0xc8)[_0x0a9e('0xb9')]({'message':_0x0a9e('0xba'),'pid':_0x58c53c[_0x0a9e('0xbb')]});}catch(_0x3fae71){return _0x2b7ba9[_0x0a9e('0xf')](0x1f4)[_0x0a9e('0xbc')](_0x3fae71);}};exports['upload']=function(_0x49e1b8,_0x5a2013){var _0x55d764=fs['createReadStream'](_0x49e1b8[_0x0a9e('0xb2')][_0x0a9e('0xbd')]);Papa['parse'](_0x55d764,{'header':!![],'skipEmptyLines':!![],'preview':0x1,'complete':function(_0x5c23aa){return _0x5a2013[_0x0a9e('0xf')](0xc8)['json']({'file':_0x49e1b8[_0x0a9e('0xb2')],'fields':_0x5c23aa[_0x0a9e('0xbe')][_0x0a9e('0x7d')]});}});};exports[_0x0a9e('0xbf')]=function(_0x336518,_0x14a683){return db['User'][_0x0a9e('0x1d')]({'raw':!![],'attributes':['id'],'where':{'role':_0x0a9e('0xc0')}})['then'](function(_0x44cdb8){var _0x1c0d54=![];if(!_0x336518[_0x0a9e('0x32')][_0x0a9e('0x5f')]){throw new Error(_0x0a9e('0xa4'));}if(!_0x336518[_0x0a9e('0x32')][_0x0a9e('0xc1')]['phone']){throw new Error(_0x0a9e('0xae'));}if(!_0x336518['body'][_0x0a9e('0xc1')][_0x0a9e('0xaf')]){throw new Error('No\x20firstName\x20column\x20specified');}if(!_0x336518[_0x0a9e('0x32')][_0x0a9e('0xa9')]){throw new Error('Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed');}var _0x78a398=require('child_process')[_0x0a9e('0xb6')](path[_0x0a9e('0x36')](__dirname,'../../components/import/cm/csv2'),[_0x336518[_0x0a9e('0x23')]['id'],JSON['stringify'](_0x336518[_0x0a9e('0x32')]),JSON[_0x0a9e('0xc2')](_0x44cdb8)]);_0x78a398['on'](_0x0a9e('0xc3'),function(){_0x1c0d54=!![];return _0x14a683[_0x0a9e('0xf')](0xc8)[_0x0a9e('0xb9')]({'message':_0x0a9e('0xc4'),'pid':_0x78a398[_0x0a9e('0xbb')]});});_0x78a398['on']('exit',function(_0x36318d){if(_0x36318d&&!_0x1c0d54){return _0x14a683[_0x0a9e('0xf')](0x1f4)[_0x0a9e('0xb9')]({'message':_0x0a9e('0xc5'),'pid':_0x78a398[_0x0a9e('0xbb')]});}});})['catch'](handleError(_0x14a683,null));};exports[_0x0a9e('0xc6')]=function(_0x49a6b2,_0x5d1159){return db[_0x0a9e('0xc7')]['findAll']({'raw':!![],'attributes':['id'],'where':{'role':_0x0a9e('0xc0')}})[_0x0a9e('0x15')](function(_0x58d5fd){var _0x171a69=![];if(!_0x49a6b2[_0x0a9e('0x32')][_0x0a9e('0x5f')]){throw new Error(_0x0a9e('0xa4'));}if(!_0x49a6b2[_0x0a9e('0x32')][_0x0a9e('0xc1')][_0x0a9e('0x76')]){throw new Error(_0x0a9e('0xae'));}if(!_0x49a6b2[_0x0a9e('0x32')]['binding'][_0x0a9e('0xaf')]){throw new Error(_0x0a9e('0xb0'));}if(!_0x49a6b2[_0x0a9e('0x32')][_0x0a9e('0xa9')]){throw new Error('Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed');}var _0x38d95a=require(_0x0a9e('0xb5'))[_0x0a9e('0xb6')](path['join'](__dirname,_0x0a9e('0xc8')),[_0x49a6b2[_0x0a9e('0x23')]['id'],JSON[_0x0a9e('0xc2')](_0x49a6b2['body']),JSON[_0x0a9e('0xc2')](_0x58d5fd)]);_0x38d95a['on']('message',function(){_0x171a69=!![];return _0x5d1159[_0x0a9e('0xf')](0xc8)[_0x0a9e('0xb9')]({'message':_0x0a9e('0xc4'),'pid':_0x38d95a[_0x0a9e('0xbb')]});});_0x38d95a['on'](_0x0a9e('0xc9'),function(_0x1b86e6){if(_0x1b86e6&&!_0x171a69){return _0x5d1159[_0x0a9e('0xf')](0x1f4)['json']({'message':_0x0a9e('0xc5'),'pid':_0x38d95a[_0x0a9e('0xbb')]});}});})[_0x0a9e('0x20')](handleError(_0x5d1159,null));};exports[_0x0a9e('0xca')]=function(_0x1eb768,_0x117694){var _0x3a4def=[_0x0a9e('0xcb'),_0x0a9e('0xcc'),_0x0a9e('0xcd'),_0x0a9e('0xce'),_0x0a9e('0xcf'),_0x0a9e('0xd0'),_0x0a9e('0xd1')];var _0xdce963={'offset':0x0,'order':qs[_0x0a9e('0x7f')](_0x0a9e('0xd2'))},_0xfc4f={'count':0x0,'rows':[]};Promise[_0x0a9e('0xd3')]()[_0x0a9e('0x15')](function(){if(_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0xd4')]){if(!_[_0x0a9e('0xd5')](_0x3a4def,_0x1eb768['query'][_0x0a9e('0xd4')][_0x0a9e('0xd6')]())){throw new Error(_0x0a9e('0xd7'));}_0x3a4def=[_0x1eb768['query'][_0x0a9e('0xd4')]['toLowerCase']()];}if(_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0xd8')]){try{var _0x20a292=JSON[_0x0a9e('0xd9')](_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0xd8')]);if(!moment(_0x20a292[_0x0a9e('0x33')])[_0x0a9e('0xda')]()){throw new Error('Invalid\x20date\x20for\x20range\x20from\x20filter');}if(!moment(_0x20a292['to'])[_0x0a9e('0xda')]()){throw new Error(_0x0a9e('0xdb'));}}catch(_0x4d6f2d){throw new Error(_0x0a9e('0xdc'));}}if(!_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0x31')]('nolimit')){_0xdce963[_0x0a9e('0x12')]=qs[_0x0a9e('0x12')](_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0x12')]||0xa);_0xdce963['offset']=qs[_0x0a9e('0x10')](_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0x10')]);}var _0x2b8eed=_0x3a4def[_0x0a9e('0x6d')](function(_0x4ea917){if(_0x4ea917===_0x0a9e('0xd1')){var _0x3fc431={'attributes':['id','uniqueid',_0x0a9e('0x2e'),_0x0a9e('0xdd'),_0x0a9e('0xde'),'callerid','starttime',_0x0a9e('0xdf'),_0x0a9e('0xe0'),_0x0a9e('0xe1'),_0x0a9e('0xe2'),_0x0a9e('0xe3'),_0x0a9e('0xe4'),_0x0a9e('0xe5'),_0x0a9e('0xe6')],'where':{'ContactId':_0x1eb768['params']['id']},'include':[{'model':db['User'],'as':_0x0a9e('0xc7'),'attributes':['id','name',_0x0a9e('0xe7'),_0x0a9e('0xe8')]}],'order':[[_0x0a9e('0xe2'),_0x0a9e('0xe9')]]};if(_0x1eb768['query'][_0x0a9e('0xd8')]){_0x3fc431[_0x0a9e('0x5c')]['createdAt']={'$gte':_0x20a292[_0x0a9e('0x33')],'$lte':_0x20a292['to']};}return db['VoiceCallReport'][_0x0a9e('0xea')](_0x3fc431)[_0x0a9e('0x15')](function(_0xd63c87){_0xfc4f[_0x0a9e('0x13')]+=_0xd63c87[_0x0a9e('0x13')];return _[_0x0a9e('0x6d')](_0xd63c87['rows'],function(_0x16d50b){var _0x580dd2=_0x16d50b[_0x0a9e('0x34')]({'plain':!![]});_0x580dd2[_0x0a9e('0xd4')]=_0x4ea917;if(_0x580dd2[_0x0a9e('0xc7')]){_0x580dd2[_0x0a9e('0xc7')]={'id':_0x580dd2[_0x0a9e('0xc7')]['id'],'name':_0x580dd2[_0x0a9e('0xc7')][_0x0a9e('0x1a')],'fullname':_0x580dd2['User'][_0x0a9e('0xe7')],'alias':_0x580dd2[_0x0a9e('0xc7')][_0x0a9e('0xe8')]};}return _0x580dd2;});});}else{var _0x188231=_[_0x0a9e('0xeb')](_0x4ea917)+(_0x4ea917==='chat'?_0x0a9e('0xec'):_0x0a9e('0xed'));var _0x488d6c={'attributes':['id','closed',_0x0a9e('0xee'),_0x0a9e('0xe2'),_0x0a9e('0xe1'),_0x0a9e('0xef'),_0x0a9e('0xf0'),_0x0a9e('0xf1'),'UserId',_0x188231+'Id'],'where':{'ContactId':_0x1eb768[_0x0a9e('0x23')]['id']},'include':[{'model':db[_0x188231],'as':_0x0a9e('0xed'),'attributes':['id',_0x0a9e('0x1a'),'key']},{'model':db[_0x0a9e('0xc7')],'as':_0x0a9e('0xf2'),'attributes':['id',_0x0a9e('0x1a'),_0x0a9e('0xe7')]},{'model':db['Tag'],'as':'Tags','attributes':['id',_0x0a9e('0x1a'),_0x0a9e('0x65')],'through':{'attributes':[]}}],'order':[[_0x0a9e('0xe2'),_0x0a9e('0xe9')]]};if(_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0xd8')]){_0x488d6c[_0x0a9e('0x5c')][_0x0a9e('0xe2')]={'$gte':_0x20a292['from'],'$lte':_0x20a292['to']};}switch(_0x4ea917){case _0x0a9e('0xcc'):_0x488d6c['attributes'][_0x0a9e('0x5e')](_0x0a9e('0xf3'),_0x0a9e('0xf4'),'customerPort','deviceModel',_0x0a9e('0xf5'),'ratingMessage',_0x0a9e('0xf6'),'ratingValue','referer');break;case _0x0a9e('0xcb'):_0x488d6c[_0x0a9e('0x7c')][_0x0a9e('0x5e')](_0x0a9e('0xf7'),_0x0a9e('0xf8'));break;case _0x0a9e('0xce'):_0x488d6c[_0x0a9e('0x7c')][_0x0a9e('0x5e')](_0x0a9e('0xf9'),_0x0a9e('0xfa'));break;}return db[_[_0x0a9e('0xeb')](_0x4ea917)+_0x0a9e('0xfb')][_0x0a9e('0xea')](_0x488d6c)['then'](function(_0x58f251){_0xfc4f[_0x0a9e('0x13')]+=_0x58f251['count'];return _[_0x0a9e('0x6d')](_0x58f251[_0x0a9e('0xa0')],function(_0x27be90){var _0x54befc=_0x27be90['get']({'plain':!![]});_0x54befc[_0x0a9e('0xd4')]=_0x4ea917;if(_0x54befc[_0x0a9e('0xf2')]){_0x54befc[_0x0a9e('0xf2')]={'id':_0x54befc[_0x0a9e('0xf2')]['id'],'name':_0x54befc[_0x0a9e('0xf2')][_0x0a9e('0x1a')],'fullname':_0x54befc[_0x0a9e('0xf2')]['fullname']};}return _0x54befc;});});}});return Promise[_0x0a9e('0x62')](_0x2b8eed);})['then'](function(_0x46b11b){return _(_0x46b11b)[_0x0a9e('0xfc')]()['sortBy'](_0x0a9e('0xe2'))[_0x0a9e('0xfd')]()[_0x0a9e('0xfe')]();})[_0x0a9e('0x15')](function(_0xb0fb60){_0xfc4f[_0x0a9e('0xa0')]=_0xdce963['limit']?_0xb0fb60[_0x0a9e('0xff')](_0xdce963[_0x0a9e('0x10')],_0xdce963[_0x0a9e('0x10')]+_0xdce963['limit']):_0xb0fb60;return _0xfc4f;})[_0x0a9e('0x15')](respondWithFilteredResult(_0x117694,_0xdce963))[_0x0a9e('0x20')](handleError(_0x117694,null));};
\ No newline at end of file
index 5b61858..71ee0ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdeac=['events','update','emit','hook'];(function(_0x38fff7,_0x3d2f6f){var _0x335292=function(_0x2c2470){while(--_0x2c2470){_0x38fff7['push'](_0x38fff7['shift']());}};_0x335292(++_0x3d2f6f);}(_0xdeac,0x108));var _0xcdea=function(_0x38448c,_0xf81883){_0x38448c=_0x38448c-0x0;var _0x441f82=_0xdeac[_0x38448c];return _0x441f82;};'use strict';var EventEmitter=require(_0xcdea('0x0'));var CmContact=require('../../mysqldb')['db']['CmContact'];var CmContactEvents=new EventEmitter();CmContactEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0xcdea('0x1'),'afterDestroy':'remove'};function emitEvent(_0x561e29){return function(_0x4eb266,_0x34debe,_0x71d53){CmContactEvents[_0xcdea('0x2')](_0x561e29+':'+_0x4eb266['id'],_0x4eb266);CmContactEvents['emit'](_0x561e29,_0x4eb266);_0x71d53(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];CmContact[_0xcdea('0x3')](e,emitEvent(event));}}module['exports']=CmContactEvents;
\ No newline at end of file
+var _0xcabe=['setMaxListeners','save','remove','emit','hasOwnProperty','exports','events'];(function(_0xf67198,_0x1faa1b){var _0x436886=function(_0x891da4){while(--_0x891da4){_0xf67198['push'](_0xf67198['shift']());}};_0x436886(++_0x1faa1b);}(_0xcabe,0x1cd));var _0xecab=function(_0x1f9ca5,_0x226efc){_0x1f9ca5=_0x1f9ca5-0x0;var _0x1a9040=_0xcabe[_0x1f9ca5];return _0x1a9040;};'use strict';var EventEmitter=require(_0xecab('0x0'));var CmContact=require('../../mysqldb')['db']['CmContact'];var CmContactEvents=new EventEmitter();CmContactEvents[_0xecab('0x1')](0x0);var events={'afterCreate':_0xecab('0x2'),'afterUpdate':'update','afterDestroy':_0xecab('0x3')};function emitEvent(_0x1fd7df){return function(_0x495a2f,_0x417101,_0x2c4c1b){CmContactEvents[_0xecab('0x4')](_0x1fd7df+':'+_0x495a2f['id'],_0x495a2f);CmContactEvents[_0xecab('0x4')](_0x1fd7df,_0x495a2f);_0x2c4c1b(null);};}for(var e in events){if(events[_0xecab('0x5')](e)){var event=events[e];CmContact['hook'](e,emitEvent(event));}}module[_0xecab('0x6')]=CmContactEvents;
\ No newline at end of file
index 0857d04..f264813 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x250a=['info','[CmContact][afterDestroy][Succesfull]','[CmContact][afterDestroy][Error]','util','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','exports','define','phone','firstName','lastName','mobile','fax','email','FULLTEXT','utf8mb4','utf8mb4_unicode_ci','error','cmContact','inspect','scheduledat','YYYY-MM-DD\x20HH:mm:ss','dialTimezone','VoiceQueue','findOne','then','isNil','timezones','utcOffset','add','minutes','format','ret','CmHopper','cmContact,\x20afterCreate\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','ListId','priority','callbackUniqueid','catch','CmHopperFinal','create','afterCreate','Campaign','\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','findAll','outbound','dialCheckDuplicateType','CmList','Lists','length','get','onlyIfOpen','BlackLists','CmHopperBlack','cmContact,\x20%s,\x20%s','message','always','isEmpty','destroy','ContactId','VoiceQueueId','CampaignId','all'];(function(_0x284f84,_0x1cfd9b){var _0x50a516=function(_0x382884){while(--_0x382884){_0x284f84['push'](_0x284f84['shift']());}};_0x50a516(++_0x1cfd9b);}(_0x250a,0xd2));var _0xa250=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x250a[_0x3b380d];return _0x54502b;};'use strict';var _=require('lodash');var util=require(_0xa250('0x0'));var logger=require(_0xa250('0x1'))('api');var moment=require(_0xa250('0x2'));var BPromise=require(_0xa250('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xa250('0x4'));var rimraf=require(_0xa250('0x5'));var config=require(_0xa250('0x6'));var shared=require('../../config/environment/shared');var attributes=require('./cmContact.attributes');module[_0xa250('0x7')]=function(_0x476e7f,_0x14a06d){return _0x476e7f[_0xa250('0x8')]('CmContact',attributes,{'tableName':'cm_contacts','paranoid':!![],'indexes':[{'name':_0xa250('0x9'),'fields':[_0xa250('0x9')]},{'name':'fti_cm_contacts','fields':[_0xa250('0xa'),_0xa250('0xb'),'phone',_0xa250('0xc'),_0xa250('0xd'),_0xa250('0xe')],'type':_0xa250('0xf')}],'timestamps':!![],'charset':_0xa250('0x10'),'collate':_0xa250('0x11'),'hooks':{'afterCreate':function(_0xac7c49,_0x3cf47f,_0x36575e){var _0x198574=_0x476e7f['models'];var _0x1f32d0=_0xac7c49['get']({'plain':!![]});function _0x392bbc(){return function(_0x870b0d){logger[_0xa250('0x12')](_0xa250('0x13'),'afterCreate',util[_0xa250('0x14')](_0x870b0d,{'showHidden':![],'depth':null}));};}function _0x57599e(_0x8fdbd1,_0x81fef2){var _0x30ab44=_0x81fef2[_0xa250('0x15')]?_0x81fef2['scheduledat']:moment()['format'](_0xa250('0x16'));return new BPromise(function(_0x40771a,_0x7d7ddb){if(_['isNil'](_0x81fef2[_0xa250('0x17')])){_0x40771a({'ret':_0x30ab44});}else{_0x198574[_0xa250('0x18')][_0xa250('0x19')]({'where':{'id':_0x8fdbd1['id']}})[_0xa250('0x1a')](function(_0x4fd745){if(!_[_0xa250('0x1b')](_0x4fd745)){var _0x34ceec=_0x4fd745[_0xa250('0x17')];if(!_[_0xa250('0x1b')](_0x34ceec)){var _0x4f2cf6=shared[_0xa250('0x1c')];var _0x43f513=_0x4f2cf6[_0x34ceec];var _0x3e4fd5=_0x4f2cf6[_0x81fef2['dialTimezone']];if(!_[_0xa250('0x1b')](_0x43f513)&&!_[_0xa250('0x1b')](_0x3e4fd5)){var _0x5cb228=_0x43f513[_0xa250('0x1d')]-_0x3e4fd5[_0xa250('0x1d')];_0x30ab44=_0x81fef2['scheduledat']?_0x81fef2[_0xa250('0x15')]:moment();var _0x32aca9=moment(_0x30ab44)[_0xa250('0x1e')](_0x5cb228,_0xa250('0x1f'));_0x40771a({'ret':_0x32aca9[_0xa250('0x20')](_0xa250('0x16'))});}else _0x40771a({'ret':_0x30ab44});}else _0x40771a({'ret':_0x30ab44});}else{_0x40771a({'ret':_0x30ab44});}});}});return 0xa;}var _0xb6122e=function(_0x19e4a0){return new BPromise(function(_0x3a3bce,_0x737238){_0x57599e(_0x19e4a0,_0x1f32d0)[_0xa250('0x1a')](function(_0x3ac8fd){_0x1f32d0[_0xa250('0x15')]=_0x3ac8fd[_0xa250('0x21')];_0x198574[_0xa250('0x22')][_0xa250('0x19')]({'where':{'phone':_0x1f32d0[_0xa250('0x9')],'VoiceQueueId':_0x19e4a0['id']}})[_0xa250('0x1a')](function(_0x4d8e08){if(!_[_0xa250('0x1b')](_0x4d8e08)){throw new Error(_0xa250('0x23')+_0x1f32d0['phone']+_0xa250('0x24')+_0x19e4a0['id']);}return _0x198574['CmHopper']['create']({'phone':_0x1f32d0[_0xa250('0x9')],'ContactId':_0x1f32d0['id'],'ListId':_0x1f32d0[_0xa250('0x25')],'priority':_0x1f32d0[_0xa250('0x26')]?_0x1f32d0['priority']:0x2,'scheduledat':_0x1f32d0[_0xa250('0x15')]?_0x1f32d0['scheduledat']:moment()[_0xa250('0x20')](_0xa250('0x16')),'callback':_0x1f32d0[_0xa250('0x27')]?!![]:![],'callbackuniqueid':_0x1f32d0[_0xa250('0x27')]?_0x1f32d0['callbackUniqueid']:undefined,'callbackat':_0x1f32d0[_0xa250('0x27')]?moment()['format'](_0xa250('0x16')):undefined,'VoiceQueueId':_0x19e4a0['id']});})[_0xa250('0x28')](function(_0x416ad8){_0x737238(_0x416ad8);});});});};var _0x48eadc=function(_0xeaebcf){return new BPromise(function(_0x57dbd4,_0x52b07d){_0x57599e(_0xeaebcf,_0x1f32d0)['then'](function(_0x3468e4){_0x1f32d0[_0xa250('0x15')]=_0x3468e4[_0xa250('0x21')];_0x198574[_0xa250('0x22')]['findOne']({'where':{'phone':_0x1f32d0[_0xa250('0x9')],'VoiceQueueId':_0xeaebcf['id']}})['then'](function(_0x48baa3){if(!_['isNil'](_0x48baa3)){throw new Error(_0xa250('0x23')+_0x1f32d0[_0xa250('0x9')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20'+_0xeaebcf['id']);}return _0x198574[_0xa250('0x29')][_0xa250('0x19')]({'where':{'calleridnum':_0x1f32d0[_0xa250('0x9')],'VoiceQueueId':_0xeaebcf['id']}});})[_0xa250('0x1a')](function(_0x27f369){if(!_[_0xa250('0x1b')](_0x27f369)){throw new Error('cmContact,\x20afterCreate,\x20'+_0x1f32d0[_0xa250('0x9')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20'+_0xeaebcf['id']);}return _0x198574[_0xa250('0x22')][_0xa250('0x2a')]({'phone':_0x1f32d0[_0xa250('0x9')],'ContactId':_0x1f32d0['id'],'ListId':_0x1f32d0['ListId'],'priority':_0x1f32d0['priority']?_0x1f32d0[_0xa250('0x26')]:0x2,'scheduledat':_0x1f32d0[_0xa250('0x15')]?_0x1f32d0[_0xa250('0x15')]:moment()[_0xa250('0x20')](_0xa250('0x16')),'callback':_0x1f32d0['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x1f32d0[_0xa250('0x27')]?_0x1f32d0[_0xa250('0x27')]:undefined,'callbackat':_0x1f32d0['callbackUniqueid']?moment()[_0xa250('0x20')](_0xa250('0x16')):undefined,'VoiceQueueId':_0xeaebcf['id']});})['catch'](function(_0x1ac57d){_0x52b07d(_0x1ac57d);});});});};function _0x47a2dd(){return function(_0x1dd813){logger['error'](_0xa250('0x13'),_0xa250('0x2b'),util[_0xa250('0x14')](_0x1dd813,{'showHidden':![],'depth':null}));};}function _0x5726a5(_0x40f97c,_0x3c58f0){var _0x325a09=_0x3c58f0[_0xa250('0x15')]?_0x3c58f0[_0xa250('0x15')]:moment()[_0xa250('0x20')](_0xa250('0x16'));return new BPromise(function(_0x1b3191,_0x398e99){if(_['isNil'](_0x3c58f0['dialTimezone'])){_0x1b3191({'ret':_0x325a09});}else{_0x198574[_0xa250('0x2c')][_0xa250('0x19')]({'where':{'id':_0x40f97c['id']}})[_0xa250('0x1a')](function(_0x3b0d63){if(!_[_0xa250('0x1b')](_0x3b0d63)){var _0x56c4cf=_0x3b0d63[_0xa250('0x17')];if(!_[_0xa250('0x1b')](_0x56c4cf)){var _0x10971c=shared[_0xa250('0x1c')];var _0x49d696=_0x10971c[_0x56c4cf];var _0x53175e=_0x10971c[_0x3c58f0[_0xa250('0x17')]];if(!_[_0xa250('0x1b')](_0x49d696)&&!_[_0xa250('0x1b')](_0x53175e)){var _0x6a48aa=_0x49d696[_0xa250('0x1d')]-_0x53175e[_0xa250('0x1d')];_0x325a09=_0x3c58f0[_0xa250('0x15')]?_0x3c58f0[_0xa250('0x15')]:moment();var _0x1a3c1f=moment(_0x325a09)['add'](_0x6a48aa,_0xa250('0x1f'));_0x1b3191({'ret':_0x1a3c1f[_0xa250('0x20')](_0xa250('0x16'))});}else _0x1b3191({'ret':_0x325a09});}else _0x1b3191({'ret':_0x325a09});}else{_0x1b3191({'ret':_0x325a09});}});}});return 0xa;}var _0x234e0c=function(_0x5db52a){return new BPromise(function(_0x45e2be,_0x5279e3){_0x5726a5(_0x5db52a,_0x1f32d0)[_0xa250('0x1a')](function(_0x3568ea){_0x1f32d0[_0xa250('0x15')]=_0x3568ea[_0xa250('0x21')];_0x198574['CmHopper'][_0xa250('0x19')]({'where':{'phone':_0x1f32d0[_0xa250('0x9')],'CampaignId':_0x5db52a['id']}})[_0xa250('0x1a')](function(_0x1c602c){if(!_[_0xa250('0x1b')](_0x1c602c)){throw new Error(_0xa250('0x23')+_0x1f32d0['phone']+_0xa250('0x2d')+_0x5db52a['id']);}return _0x198574[_0xa250('0x22')]['create']({'phone':_0x1f32d0[_0xa250('0x9')],'ContactId':_0x1f32d0['id'],'ListId':_0x1f32d0[_0xa250('0x25')],'priority':_0x1f32d0[_0xa250('0x26')]?_0x1f32d0[_0xa250('0x26')]:0x2,'scheduledat':_0x1f32d0[_0xa250('0x15')]?_0x1f32d0[_0xa250('0x15')]:moment()[_0xa250('0x20')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x1f32d0['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x1f32d0[_0xa250('0x27')]?_0x1f32d0[_0xa250('0x27')]:undefined,'callbackat':_0x1f32d0[_0xa250('0x27')]?moment()[_0xa250('0x20')](_0xa250('0x16')):undefined,'CampaignId':_0x5db52a['id']});})[_0xa250('0x28')](function(_0x3472e1){_0x5279e3(_0x3472e1);});});});};var _0x5b674a=function(_0x16f773){return new BPromise(function(_0x195d76,_0x12007f){_0x5726a5(_0x16f773,_0x1f32d0)[_0xa250('0x1a')](function(_0x144c9a){_0x1f32d0[_0xa250('0x15')]=_0x144c9a['ret'];_0x198574['CmHopper'][_0xa250('0x19')]({'where':{'phone':_0x1f32d0[_0xa250('0x9')],'CampaignId':_0x16f773['id']}})[_0xa250('0x1a')](function(_0x3bd797){if(!_[_0xa250('0x1b')](_0x3bd797)){throw new Error('cmContact,\x20afterCreate\x20'+_0x1f32d0[_0xa250('0x9')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20Campaign\x20'+_0x16f773['id']);}return _0x198574[_0xa250('0x29')][_0xa250('0x19')]({'where':{'calleridnum':_0x1f32d0[_0xa250('0x9')],'CampaignId':_0x16f773['id']}});})[_0xa250('0x1a')](function(_0xfb293f){if(!_[_0xa250('0x1b')](_0xfb293f)){throw new Error('cmContact,\x20afterCreate,\x20'+_0x1f32d0['phone']+_0xa250('0x2e')+_0x16f773['id']);}return _0x198574[_0xa250('0x22')]['create']({'phone':_0x1f32d0[_0xa250('0x9')],'ContactId':_0x1f32d0['id'],'ListId':_0x1f32d0['ListId'],'priority':_0x1f32d0[_0xa250('0x26')]?_0x1f32d0[_0xa250('0x26')]:0x2,'scheduledat':_0x1f32d0[_0xa250('0x15')]?_0x1f32d0[_0xa250('0x15')]:moment()[_0xa250('0x20')](_0xa250('0x16')),'callback':_0x1f32d0['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x1f32d0[_0xa250('0x27')]?_0x1f32d0[_0xa250('0x27')]:undefined,'callbackat':_0x1f32d0[_0xa250('0x27')]?moment()['format']('YYYY-MM-DD\x20HH:mm:ss'):undefined,'CampaignId':_0x16f773['id']});})[_0xa250('0x28')](function(_0x17c74b){_0x12007f(_0x17c74b);});});});};if(_0x1f32d0['ListId']){_0x198574[_0xa250('0x18')][_0xa250('0x2f')]({'where':{'type':_0xa250('0x30')},'attributes':['id',_0xa250('0x31'),_0xa250('0x17')],'include':[{'model':_0x198574[_0xa250('0x32')],'as':_0xa250('0x33'),'where':{'id':_0x1f32d0[_0xa250('0x25')]}}]})['then'](function(_0x2d8f70){if(_0x2d8f70){var _0x24a729=[];for(var _0x23a500=0x0,_0x3c5f8b;_0x23a500<_0x2d8f70[_0xa250('0x34')];_0x23a500+=0x1){_0x3c5f8b=_0x2d8f70[_0x23a500][_0xa250('0x35')]({'plain':!![]});switch(_0x3c5f8b['dialCheckDuplicateType']){case'always':_0x48eadc(_0x3c5f8b)['catch'](_0x392bbc());break;case _0xa250('0x36'):_0xb6122e(_0x3c5f8b)[_0xa250('0x28')](_0x392bbc());break;default:_0x5726a5(_0x3c5f8b,_0x1f32d0)['then'](function(_0x5b049e){_0x1f32d0[_0xa250('0x15')]=_0x5b049e[_0xa250('0x21')];_0x198574[_0xa250('0x22')][_0xa250('0x2a')]({'phone':_0x1f32d0[_0xa250('0x9')],'ContactId':_0x1f32d0['id'],'ListId':_0x1f32d0['ListId'],'scheduledat':_0x1f32d0['scheduledat']?_0x1f32d0[_0xa250('0x15')]:moment()[_0xa250('0x20')](_0xa250('0x16')),'priority':_0x1f32d0[_0xa250('0x26')]?_0x1f32d0['priority']:0x2,'callback':_0x1f32d0[_0xa250('0x27')]?!![]:![],'callbackuniqueid':_0x1f32d0[_0xa250('0x27')]?_0x1f32d0[_0xa250('0x27')]:undefined,'callbackat':_0x1f32d0['callbackUniqueid']?moment()[_0xa250('0x20')](_0xa250('0x16')):undefined,'VoiceQueueId':_0x3c5f8b['id']})[_0xa250('0x28')](_0x392bbc());});}}}})[_0xa250('0x1a')](function(){return _0x198574[_0xa250('0x18')]['findAll']({'where':{'type':_0xa250('0x30')},'attributes':['id'],'include':[{'model':_0x198574[_0xa250('0x32')],'as':_0xa250('0x37'),'where':{'id':_0x1f32d0[_0xa250('0x25')]}}]})['then'](function(_0x21d7c9){if(_0x21d7c9){var _0x340940=[];for(var _0x1ec0af=0x0,_0x3af576;_0x1ec0af<_0x21d7c9[_0xa250('0x34')];_0x1ec0af+=0x1){_0x3af576=_0x21d7c9[_0x1ec0af][_0xa250('0x35')]({'plain':!![]});_0x198574[_0xa250('0x38')][_0xa250('0x2a')]({'phone':_0x1f32d0['phone'],'ContactId':_0x1f32d0['id'],'ListId':_0x1f32d0['ListId'],'VoiceQueueId':_0x3af576['id']})[_0xa250('0x28')](function(_0x238a12){logger['error'](_0xa250('0x39'),_0xa250('0x2b'),_0x238a12[_0xa250('0x3a')]);});}}});})[_0xa250('0x1a')](function(){return _0x198574['Campaign'][_0xa250('0x2f')]({'attributes':['id',_0xa250('0x31'),_0xa250('0x17')],'include':[{'model':_0x198574[_0xa250('0x32')],'as':'Lists','where':{'id':_0x1f32d0['ListId']}}]})[_0xa250('0x1a')](function(_0x64790b){if(_0x64790b){var _0xfe2bc2=[];for(var _0x36fe3d=0x0,_0x459704;_0x36fe3d<_0x64790b[_0xa250('0x34')];_0x36fe3d+=0x1){_0x459704=_0x64790b[_0x36fe3d][_0xa250('0x35')]({'plain':!![]});switch(_0x459704[_0xa250('0x31')]){case _0xa250('0x3b'):_0x5b674a(_0x459704)['catch'](_0x47a2dd());break;case _0xa250('0x36'):_0x234e0c(_0x459704)[_0xa250('0x28')](_0x47a2dd());break;default:_0x198574[_0xa250('0x22')][_0xa250('0x2a')]({'phone':_0x1f32d0[_0xa250('0x9')],'ContactId':_0x1f32d0['id'],'ListId':_0x1f32d0['ListId'],'scheduledat':_0x1f32d0[_0xa250('0x15')]?_0x1f32d0[_0xa250('0x15')]:moment()[_0xa250('0x20')]('YYYY-MM-DD\x20HH:mm:ss'),'priority':_0x1f32d0[_0xa250('0x26')]?_0x1f32d0[_0xa250('0x26')]:0x2,'callback':_0x1f32d0[_0xa250('0x27')]?!![]:![],'callbackuniqueid':_0x1f32d0[_0xa250('0x27')]?_0x1f32d0[_0xa250('0x27')]:undefined,'callbackat':_0x1f32d0[_0xa250('0x27')]?moment()[_0xa250('0x20')](_0xa250('0x16')):undefined,'CampaignId':_0x459704['id']})[_0xa250('0x28')](_0x47a2dd());}}}});})[_0xa250('0x1a')](function(){return _0x198574['Campaign'][_0xa250('0x2f')]({'attributes':['id'],'include':[{'model':_0x198574[_0xa250('0x32')],'as':_0xa250('0x37'),'where':{'id':_0x1f32d0[_0xa250('0x25')]}}]})[_0xa250('0x1a')](function(_0x25e7db){if(_0x25e7db){var _0x19c836=[];for(var _0x5690ba=0x0,_0x3aa657;_0x5690ba<_0x25e7db[_0xa250('0x34')];_0x5690ba+=0x1){_0x3aa657=_0x25e7db[_0x5690ba][_0xa250('0x35')]({'plain':!![]});_0x198574['CmHopperBlack']['create']({'phone':_0x1f32d0[_0xa250('0x9')],'ContactId':_0x1f32d0['id'],'ListId':_0x1f32d0[_0xa250('0x25')],'CampaignId':_0x3aa657['id']})[_0xa250('0x28')](function(_0x36f808){logger[_0xa250('0x12')](_0xa250('0x39'),_0xa250('0x2b'),_0x36f808[_0xa250('0x3a')]);});}}});})[_0xa250('0x1a')](function(){_0x36575e();})[_0xa250('0x28')](function(_0xe7b44d){logger[_0xa250('0x12')](_0xa250('0x39'),'afterCreate',_0xe7b44d['message']);_0x36575e(_0xe7b44d);});}else{_0x36575e(new Error('List\x20not\x20found'));}},'afterDestroy':function(_0x18dc67,_0x1371ff,_0x76993a){var _0x546aeb=_0x476e7f['models'];var _0x5dfa6a=_0x18dc67[_0xa250('0x35')]({'plain':!![]});return _0x546aeb[_0xa250('0x22')]['findAll']({'raw':!![],'where':{'ListId':_0x5dfa6a[_0xa250('0x25')],'ContactId':_0x5dfa6a['id']}})[_0xa250('0x1a')](function(_0x1e2e60){if(!_[_0xa250('0x3c')](_0x1e2e60)){var _0x2e57e4=[];for(var _0x3c9e36=0x0;_0x3c9e36<_0x1e2e60[_0xa250('0x34')];_0x3c9e36+=0x1){var _0x144032=_0x546aeb['CmHopper'][_0xa250('0x3d')]({'where':{'ListId':_0x1e2e60[_0x3c9e36][_0xa250('0x25')],'ContactId':_0x1e2e60[_0x3c9e36][_0xa250('0x3e')],'VoiceQueueId':_0x1e2e60[_0x3c9e36][_0xa250('0x3f')],'CampaignId':_0x1e2e60[_0x3c9e36][_0xa250('0x40')]}});_0x2e57e4['push'](_0x144032);}return BPromise[_0xa250('0x41')](_0x2e57e4);}})[_0xa250('0x1a')](function(_0x4c67d5){logger[_0xa250('0x42')](_0xa250('0x43'),util['inspect'](_0x4c67d5,{'showHidden':![],'depth':null}));_0x76993a();})['catch'](function(_0x2acd9b){logger['error'](_0xa250('0x44'),util[_0xa250('0x14')](_0x2acd9b,{'showHidden':![],'depth':null}));_0x76993a(_0x2acd9b);});}}});};
\ No newline at end of file
+var _0x368f=['\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20Campaign\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20Campaign\x20','CmHopperFinal','cmContact,\x20afterCreate,\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20','findAll','dialCheckDuplicateType','length','always','onlyIfOpen','outbound','CmList','BlackLists','CmHopperBlack','cmContact,\x20%s,\x20%s','message','Lists','List\x20not\x20found','isEmpty','destroy','ContactId','CampaignId','push','all','info','[CmContact][afterDestroy][Succesfull]','[CmContact][afterDestroy][Error]','util','moment','bluebird','request-promise','path','rimraf','../../config/environment','../../config/environment/shared','exports','define','CmContact','cm_contacts','phone','fti_cm_contacts','firstName','lastName','mobile','fax','email','FULLTEXT','utf8mb4','models','get','error','afterCreate','inspect','scheduledat','YYYY-MM-DD\x20HH:mm:ss','isNil','VoiceQueue','then','dialTimezone','utcOffset','minutes','format','ret','CmHopper','findOne','create','ListId','priority','callbackUniqueid','catch','cmContact','Campaign','timezones','add','cmContact,\x20afterCreate\x20'];(function(_0x27a210,_0x453fcd){var _0x536b61=function(_0x2602a7){while(--_0x2602a7){_0x27a210['push'](_0x27a210['shift']());}};_0x536b61(++_0x453fcd);}(_0x368f,0x1dd));var _0xf368=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x368f[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0xf368('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0xf368('0x1'));var BPromise=require(_0xf368('0x2'));var rp=require(_0xf368('0x3'));var fs=require('fs');var path=require(_0xf368('0x4'));var rimraf=require(_0xf368('0x5'));var config=require(_0xf368('0x6'));var shared=require(_0xf368('0x7'));var attributes=require('./cmContact.attributes');module[_0xf368('0x8')]=function(_0x4e2783,_0x7e9e16){return _0x4e2783[_0xf368('0x9')](_0xf368('0xa'),attributes,{'tableName':_0xf368('0xb'),'paranoid':!![],'indexes':[{'name':_0xf368('0xc'),'fields':['phone']},{'name':_0xf368('0xd'),'fields':[_0xf368('0xe'),_0xf368('0xf'),_0xf368('0xc'),_0xf368('0x10'),_0xf368('0x11'),_0xf368('0x12')],'type':_0xf368('0x13')}],'timestamps':!![],'charset':_0xf368('0x14'),'collate':'utf8mb4_unicode_ci','hooks':{'afterCreate':function(_0x1f499d,_0x5f405b,_0x1a5866){var _0x5d0d4c=_0x4e2783[_0xf368('0x15')];var _0x5275df=_0x1f499d[_0xf368('0x16')]({'plain':!![]});function _0x4f0883(){return function(_0x575130){logger[_0xf368('0x17')]('cmContact',_0xf368('0x18'),util[_0xf368('0x19')](_0x575130,{'showHidden':![],'depth':null}));};}function _0x22f931(_0x43b468,_0x34d70b){var _0x53fb6d=_0x34d70b[_0xf368('0x1a')]?_0x34d70b['scheduledat']:moment()['format'](_0xf368('0x1b'));return new BPromise(function(_0x3626d0,_0x2f96fc){if(_[_0xf368('0x1c')](_0x34d70b['dialTimezone'])){_0x3626d0({'ret':_0x53fb6d});}else{_0x5d0d4c[_0xf368('0x1d')]['findOne']({'where':{'id':_0x43b468['id']}})[_0xf368('0x1e')](function(_0x9cdd9e){if(!_['isNil'](_0x9cdd9e)){var _0x41bdec=_0x9cdd9e[_0xf368('0x1f')];if(!_['isNil'](_0x41bdec)){var _0x2837f3=shared['timezones'];var _0x52412b=_0x2837f3[_0x41bdec];var _0x182c55=_0x2837f3[_0x34d70b[_0xf368('0x1f')]];if(!_[_0xf368('0x1c')](_0x52412b)&&!_['isNil'](_0x182c55)){var _0x44eb50=_0x52412b['utcOffset']-_0x182c55[_0xf368('0x20')];_0x53fb6d=_0x34d70b[_0xf368('0x1a')]?_0x34d70b[_0xf368('0x1a')]:moment();var _0x5d81ee=moment(_0x53fb6d)['add'](_0x44eb50,_0xf368('0x21'));_0x3626d0({'ret':_0x5d81ee[_0xf368('0x22')](_0xf368('0x1b'))});}else _0x3626d0({'ret':_0x53fb6d});}else _0x3626d0({'ret':_0x53fb6d});}else{_0x3626d0({'ret':_0x53fb6d});}});}});return 0xa;}var _0x1b1964=function(_0x1a095f){return new BPromise(function(_0x5395e,_0x57c526){_0x22f931(_0x1a095f,_0x5275df)[_0xf368('0x1e')](function(_0x7aeaa0){_0x5275df['scheduledat']=_0x7aeaa0[_0xf368('0x23')];_0x5d0d4c[_0xf368('0x24')][_0xf368('0x25')]({'where':{'phone':_0x5275df[_0xf368('0xc')],'VoiceQueueId':_0x1a095f['id']}})[_0xf368('0x1e')](function(_0x557e2c){if(!_['isNil'](_0x557e2c)){throw new Error('cmContact,\x20afterCreate\x20'+_0x5275df[_0xf368('0xc')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20'+_0x1a095f['id']);}return _0x5d0d4c[_0xf368('0x24')][_0xf368('0x26')]({'phone':_0x5275df['phone'],'ContactId':_0x5275df['id'],'ListId':_0x5275df[_0xf368('0x27')],'priority':_0x5275df[_0xf368('0x28')]?_0x5275df[_0xf368('0x28')]:0x2,'scheduledat':_0x5275df[_0xf368('0x1a')]?_0x5275df['scheduledat']:moment()[_0xf368('0x22')](_0xf368('0x1b')),'callback':_0x5275df[_0xf368('0x29')]?!![]:![],'callbackuniqueid':_0x5275df[_0xf368('0x29')]?_0x5275df['callbackUniqueid']:undefined,'callbackat':_0x5275df['callbackUniqueid']?moment()['format'](_0xf368('0x1b')):undefined,'VoiceQueueId':_0x1a095f['id']});})[_0xf368('0x2a')](function(_0x533cab){_0x57c526(_0x533cab);});});});};var _0x55d9cd=function(_0x44932b){return new BPromise(function(_0x13902a,_0x5bba0b){_0x22f931(_0x44932b,_0x5275df)[_0xf368('0x1e')](function(_0x2773b9){_0x5275df[_0xf368('0x1a')]=_0x2773b9[_0xf368('0x23')];_0x5d0d4c[_0xf368('0x24')][_0xf368('0x25')]({'where':{'phone':_0x5275df['phone'],'VoiceQueueId':_0x44932b['id']}})[_0xf368('0x1e')](function(_0x564f90){if(!_[_0xf368('0x1c')](_0x564f90)){throw new Error('cmContact,\x20afterCreate\x20'+_0x5275df[_0xf368('0xc')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20'+_0x44932b['id']);}return _0x5d0d4c['CmHopperFinal'][_0xf368('0x25')]({'where':{'calleridnum':_0x5275df[_0xf368('0xc')],'VoiceQueueId':_0x44932b['id']}});})[_0xf368('0x1e')](function(_0x53ae59){if(!_['isNil'](_0x53ae59)){throw new Error('cmContact,\x20afterCreate,\x20'+_0x5275df[_0xf368('0xc')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20'+_0x44932b['id']);}return _0x5d0d4c[_0xf368('0x24')][_0xf368('0x26')]({'phone':_0x5275df[_0xf368('0xc')],'ContactId':_0x5275df['id'],'ListId':_0x5275df[_0xf368('0x27')],'priority':_0x5275df[_0xf368('0x28')]?_0x5275df['priority']:0x2,'scheduledat':_0x5275df[_0xf368('0x1a')]?_0x5275df[_0xf368('0x1a')]:moment()[_0xf368('0x22')](_0xf368('0x1b')),'callback':_0x5275df[_0xf368('0x29')]?!![]:![],'callbackuniqueid':_0x5275df[_0xf368('0x29')]?_0x5275df['callbackUniqueid']:undefined,'callbackat':_0x5275df[_0xf368('0x29')]?moment()[_0xf368('0x22')](_0xf368('0x1b')):undefined,'VoiceQueueId':_0x44932b['id']});})['catch'](function(_0x3274bc){_0x5bba0b(_0x3274bc);});});});};function _0x55b51d(){return function(_0x1b9305){logger[_0xf368('0x17')](_0xf368('0x2b'),_0xf368('0x18'),util['inspect'](_0x1b9305,{'showHidden':![],'depth':null}));};}function _0x2e240b(_0x2c6ed5,_0x1516a7){var _0x2fd7ea=_0x1516a7['scheduledat']?_0x1516a7['scheduledat']:moment()['format'](_0xf368('0x1b'));return new BPromise(function(_0x2946b2,_0x5042fa){if(_['isNil'](_0x1516a7[_0xf368('0x1f')])){_0x2946b2({'ret':_0x2fd7ea});}else{_0x5d0d4c[_0xf368('0x2c')][_0xf368('0x25')]({'where':{'id':_0x2c6ed5['id']}})[_0xf368('0x1e')](function(_0x1bf374){if(!_[_0xf368('0x1c')](_0x1bf374)){var _0x151210=_0x1bf374['dialTimezone'];if(!_['isNil'](_0x151210)){var _0x3fcae3=shared[_0xf368('0x2d')];var _0x13d20e=_0x3fcae3[_0x151210];var _0x463cc2=_0x3fcae3[_0x1516a7[_0xf368('0x1f')]];if(!_[_0xf368('0x1c')](_0x13d20e)&&!_[_0xf368('0x1c')](_0x463cc2)){var _0x396463=_0x13d20e['utcOffset']-_0x463cc2[_0xf368('0x20')];_0x2fd7ea=_0x1516a7[_0xf368('0x1a')]?_0x1516a7['scheduledat']:moment();var _0x396352=moment(_0x2fd7ea)[_0xf368('0x2e')](_0x396463,'minutes');_0x2946b2({'ret':_0x396352[_0xf368('0x22')]('YYYY-MM-DD\x20HH:mm:ss')});}else _0x2946b2({'ret':_0x2fd7ea});}else _0x2946b2({'ret':_0x2fd7ea});}else{_0x2946b2({'ret':_0x2fd7ea});}});}});return 0xa;}var _0x317631=function(_0x85695f){return new BPromise(function(_0x153b17,_0x4a91d8){_0x2e240b(_0x85695f,_0x5275df)['then'](function(_0x290bb0){_0x5275df['scheduledat']=_0x290bb0[_0xf368('0x23')];_0x5d0d4c[_0xf368('0x24')][_0xf368('0x25')]({'where':{'phone':_0x5275df[_0xf368('0xc')],'CampaignId':_0x85695f['id']}})[_0xf368('0x1e')](function(_0x512c71){if(!_[_0xf368('0x1c')](_0x512c71)){throw new Error(_0xf368('0x2f')+_0x5275df['phone']+_0xf368('0x30')+_0x85695f['id']);}return _0x5d0d4c[_0xf368('0x24')][_0xf368('0x26')]({'phone':_0x5275df['phone'],'ContactId':_0x5275df['id'],'ListId':_0x5275df[_0xf368('0x27')],'priority':_0x5275df[_0xf368('0x28')]?_0x5275df[_0xf368('0x28')]:0x2,'scheduledat':_0x5275df[_0xf368('0x1a')]?_0x5275df[_0xf368('0x1a')]:moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x5275df['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x5275df[_0xf368('0x29')]?_0x5275df[_0xf368('0x29')]:undefined,'callbackat':_0x5275df[_0xf368('0x29')]?moment()[_0xf368('0x22')](_0xf368('0x1b')):undefined,'CampaignId':_0x85695f['id']});})[_0xf368('0x2a')](function(_0x4e90a0){_0x4a91d8(_0x4e90a0);});});});};var _0x3dd7a6=function(_0x392db7){return new BPromise(function(_0x526820,_0x2de00b){_0x2e240b(_0x392db7,_0x5275df)[_0xf368('0x1e')](function(_0x55ac36){_0x5275df[_0xf368('0x1a')]=_0x55ac36['ret'];_0x5d0d4c[_0xf368('0x24')][_0xf368('0x25')]({'where':{'phone':_0x5275df[_0xf368('0xc')],'CampaignId':_0x392db7['id']}})['then'](function(_0x7cccde){if(!_[_0xf368('0x1c')](_0x7cccde)){throw new Error(_0xf368('0x2f')+_0x5275df[_0xf368('0xc')]+_0xf368('0x31')+_0x392db7['id']);}return _0x5d0d4c[_0xf368('0x32')][_0xf368('0x25')]({'where':{'calleridnum':_0x5275df['phone'],'CampaignId':_0x392db7['id']}});})[_0xf368('0x1e')](function(_0x39d8c1){if(!_['isNil'](_0x39d8c1)){throw new Error(_0xf368('0x33')+_0x5275df[_0xf368('0xc')]+_0xf368('0x34')+_0x392db7['id']);}return _0x5d0d4c['CmHopper'][_0xf368('0x26')]({'phone':_0x5275df[_0xf368('0xc')],'ContactId':_0x5275df['id'],'ListId':_0x5275df[_0xf368('0x27')],'priority':_0x5275df[_0xf368('0x28')]?_0x5275df[_0xf368('0x28')]:0x2,'scheduledat':_0x5275df[_0xf368('0x1a')]?_0x5275df[_0xf368('0x1a')]:moment()[_0xf368('0x22')](_0xf368('0x1b')),'callback':_0x5275df[_0xf368('0x29')]?!![]:![],'callbackuniqueid':_0x5275df[_0xf368('0x29')]?_0x5275df['callbackUniqueid']:undefined,'callbackat':_0x5275df['callbackUniqueid']?moment()[_0xf368('0x22')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'CampaignId':_0x392db7['id']});})[_0xf368('0x2a')](function(_0x2461cd){_0x2de00b(_0x2461cd);});});});};if(_0x5275df[_0xf368('0x27')]){_0x5d0d4c[_0xf368('0x1d')][_0xf368('0x35')]({'where':{'type':'outbound'},'attributes':['id',_0xf368('0x36'),_0xf368('0x1f')],'include':[{'model':_0x5d0d4c['CmList'],'as':'Lists','where':{'id':_0x5275df[_0xf368('0x27')]}}]})['then'](function(_0x3d7e0d){if(_0x3d7e0d){var _0x105219=[];for(var _0xd1886f=0x0,_0x415370;_0xd1886f<_0x3d7e0d[_0xf368('0x37')];_0xd1886f+=0x1){_0x415370=_0x3d7e0d[_0xd1886f][_0xf368('0x16')]({'plain':!![]});switch(_0x415370[_0xf368('0x36')]){case _0xf368('0x38'):_0x55d9cd(_0x415370)[_0xf368('0x2a')](_0x4f0883());break;case _0xf368('0x39'):_0x1b1964(_0x415370)[_0xf368('0x2a')](_0x4f0883());break;default:_0x2e240b(_0x415370,_0x5275df)[_0xf368('0x1e')](function(_0x3228f2){_0x5275df[_0xf368('0x1a')]=_0x3228f2[_0xf368('0x23')];_0x5d0d4c['CmHopper'][_0xf368('0x26')]({'phone':_0x5275df[_0xf368('0xc')],'ContactId':_0x5275df['id'],'ListId':_0x5275df[_0xf368('0x27')],'scheduledat':_0x5275df[_0xf368('0x1a')]?_0x5275df[_0xf368('0x1a')]:moment()['format'](_0xf368('0x1b')),'priority':_0x5275df['priority']?_0x5275df[_0xf368('0x28')]:0x2,'callback':_0x5275df['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x5275df[_0xf368('0x29')]?_0x5275df['callbackUniqueid']:undefined,'callbackat':_0x5275df[_0xf368('0x29')]?moment()[_0xf368('0x22')](_0xf368('0x1b')):undefined,'VoiceQueueId':_0x415370['id']})[_0xf368('0x2a')](_0x4f0883());});}}}})[_0xf368('0x1e')](function(){return _0x5d0d4c[_0xf368('0x1d')][_0xf368('0x35')]({'where':{'type':_0xf368('0x3a')},'attributes':['id'],'include':[{'model':_0x5d0d4c[_0xf368('0x3b')],'as':_0xf368('0x3c'),'where':{'id':_0x5275df[_0xf368('0x27')]}}]})[_0xf368('0x1e')](function(_0x1d62f5){if(_0x1d62f5){var _0x5bb34a=[];for(var _0xf8b2d1=0x0,_0x663b81;_0xf8b2d1<_0x1d62f5[_0xf368('0x37')];_0xf8b2d1+=0x1){_0x663b81=_0x1d62f5[_0xf8b2d1][_0xf368('0x16')]({'plain':!![]});_0x5d0d4c[_0xf368('0x3d')][_0xf368('0x26')]({'phone':_0x5275df[_0xf368('0xc')],'ContactId':_0x5275df['id'],'ListId':_0x5275df[_0xf368('0x27')],'VoiceQueueId':_0x663b81['id']})[_0xf368('0x2a')](function(_0x216a0b){logger[_0xf368('0x17')](_0xf368('0x3e'),_0xf368('0x18'),_0x216a0b[_0xf368('0x3f')]);});}}});})[_0xf368('0x1e')](function(){return _0x5d0d4c[_0xf368('0x2c')][_0xf368('0x35')]({'attributes':['id','dialCheckDuplicateType','dialTimezone'],'include':[{'model':_0x5d0d4c[_0xf368('0x3b')],'as':_0xf368('0x40'),'where':{'id':_0x5275df[_0xf368('0x27')]}}]})['then'](function(_0x32a89b){if(_0x32a89b){var _0x388b09=[];for(var _0x5d6227=0x0,_0x113040;_0x5d6227<_0x32a89b[_0xf368('0x37')];_0x5d6227+=0x1){_0x113040=_0x32a89b[_0x5d6227][_0xf368('0x16')]({'plain':!![]});switch(_0x113040['dialCheckDuplicateType']){case _0xf368('0x38'):_0x3dd7a6(_0x113040)['catch'](_0x55b51d());break;case _0xf368('0x39'):_0x317631(_0x113040)[_0xf368('0x2a')](_0x55b51d());break;default:_0x5d0d4c[_0xf368('0x24')]['create']({'phone':_0x5275df[_0xf368('0xc')],'ContactId':_0x5275df['id'],'ListId':_0x5275df['ListId'],'scheduledat':_0x5275df[_0xf368('0x1a')]?_0x5275df[_0xf368('0x1a')]:moment()[_0xf368('0x22')](_0xf368('0x1b')),'priority':_0x5275df['priority']?_0x5275df[_0xf368('0x28')]:0x2,'callback':_0x5275df['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x5275df[_0xf368('0x29')]?_0x5275df[_0xf368('0x29')]:undefined,'callbackat':_0x5275df['callbackUniqueid']?moment()[_0xf368('0x22')](_0xf368('0x1b')):undefined,'CampaignId':_0x113040['id']})['catch'](_0x55b51d());}}}});})['then'](function(){return _0x5d0d4c[_0xf368('0x2c')][_0xf368('0x35')]({'attributes':['id'],'include':[{'model':_0x5d0d4c['CmList'],'as':'BlackLists','where':{'id':_0x5275df[_0xf368('0x27')]}}]})['then'](function(_0x31f7b6){if(_0x31f7b6){var _0x458471=[];for(var _0x2b1066=0x0,_0x379ee1;_0x2b1066<_0x31f7b6[_0xf368('0x37')];_0x2b1066+=0x1){_0x379ee1=_0x31f7b6[_0x2b1066][_0xf368('0x16')]({'plain':!![]});_0x5d0d4c[_0xf368('0x3d')][_0xf368('0x26')]({'phone':_0x5275df['phone'],'ContactId':_0x5275df['id'],'ListId':_0x5275df[_0xf368('0x27')],'CampaignId':_0x379ee1['id']})['catch'](function(_0x26ce23){logger[_0xf368('0x17')]('cmContact,\x20%s,\x20%s','afterCreate',_0x26ce23['message']);});}}});})[_0xf368('0x1e')](function(){_0x1a5866();})['catch'](function(_0x2417a1){logger['error'](_0xf368('0x3e'),_0xf368('0x18'),_0x2417a1[_0xf368('0x3f')]);_0x1a5866(_0x2417a1);});}else{_0x1a5866(new Error(_0xf368('0x41')));}},'afterDestroy':function(_0x26e35b,_0x43b3aa,_0x57cbb0){var _0x4fca95=_0x4e2783['models'];var _0x304aae=_0x26e35b[_0xf368('0x16')]({'plain':!![]});return _0x4fca95[_0xf368('0x24')]['findAll']({'raw':!![],'where':{'ListId':_0x304aae[_0xf368('0x27')],'ContactId':_0x304aae['id']}})['then'](function(_0x1bf1e8){if(!_[_0xf368('0x42')](_0x1bf1e8)){var _0x193f21=[];for(var _0x5e1f44=0x0;_0x5e1f44<_0x1bf1e8[_0xf368('0x37')];_0x5e1f44+=0x1){var _0x55f56b=_0x4fca95[_0xf368('0x24')][_0xf368('0x43')]({'where':{'ListId':_0x1bf1e8[_0x5e1f44][_0xf368('0x27')],'ContactId':_0x1bf1e8[_0x5e1f44][_0xf368('0x44')],'VoiceQueueId':_0x1bf1e8[_0x5e1f44]['VoiceQueueId'],'CampaignId':_0x1bf1e8[_0x5e1f44][_0xf368('0x45')]}});_0x193f21[_0xf368('0x46')](_0x55f56b);}return BPromise[_0xf368('0x47')](_0x193f21);}})[_0xf368('0x1e')](function(_0xb59377){logger[_0xf368('0x48')](_0xf368('0x49'),util['inspect'](_0xb59377,{'showHidden':![],'depth':null}));_0x57cbb0();})['catch'](function(_0x9a7c9){logger[_0xf368('0x17')](_0xf368('0x4a'),util[_0xf368('0x19')](_0x9a7c9,{'showHidden':![],'depth':null}));_0x57cbb0(_0x9a7c9);});}}});};
\ No newline at end of file
index 493d96e..03f081b 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(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xa9e0,0x123));var _0x0a9e=function(_0x12d033,_0x25fa2f){_0x12d033=_0x12d033-0x0;var _0x3b4e80=_0xa9e0[_0x12d033];return _0x3b4e80;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var squel=require('squel');var db=require(_0x0a9e('0x4'))['db'];var utils=require(_0x0a9e('0x5'));var logger=require(_0x0a9e('0x6'))(_0x0a9e('0x7'));var config=require(_0x0a9e('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x0a9e('0x9')][_0x0a9e('0xa')]({'port':0x232a});config[_0x0a9e('0xb')]=_['defaults'](config['redis'],{'host':_0x0a9e('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x0a9e('0xd'))[_0x0a9e('0xe')](socket);function respondWithRpcPromise(_0x307b3e,_0x3ab53f,_0xfeb75b){return new BPromise(function(_0xbd1168,_0x4a4c56){return client['request'](_0x307b3e,_0xfeb75b)['then'](function(_0x4cfe67){logger[_0x0a9e('0xf')](_0x0a9e('0x10'),_0x3ab53f,_0x0a9e('0x11'));logger[_0x0a9e('0x12')](_0x0a9e('0x13'),_0x3ab53f,_0x0a9e('0x11'),JSON['stringify'](_0x4cfe67));if(_0x4cfe67[_0x0a9e('0x14')]){if(_0x4cfe67[_0x0a9e('0x14')][_0x0a9e('0x15')]===0x1f4){logger[_0x0a9e('0x14')](_0x0a9e('0x10'),_0x3ab53f,_0x4cfe67[_0x0a9e('0x14')]['message']);return _0x4a4c56(_0x4cfe67[_0x0a9e('0x14')]['message']);}logger[_0x0a9e('0x14')]('CmContact,\x20%s,\x20%s',_0x3ab53f,_0x4cfe67[_0x0a9e('0x14')][_0x0a9e('0x16')]);return _0xbd1168(_0x4cfe67['error'][_0x0a9e('0x16')]);}else{logger['info'](_0x0a9e('0x10'),_0x3ab53f,_0x0a9e('0x11'));_0xbd1168(_0x4cfe67[_0x0a9e('0x17')][_0x0a9e('0x16')]);}})[_0x0a9e('0x18')](function(_0x2eb11f){logger[_0x0a9e('0x14')](_0x0a9e('0x10'),_0x3ab53f,_0x2eb11f);_0x4a4c56(_0x2eb11f);});});}exports[_0x0a9e('0x19')]=function(_0x112016){var _0x1c696a=this;return new Promise(function(_0x105080,_0x4bb1e3){return db[_0x0a9e('0x1a')][_0x0a9e('0x1b')]({'raw':_0x112016['options']?_0x112016[_0x0a9e('0x1c')]['raw']===undefined?!![]:![]:!![],'where':_0x112016['options']?_0x112016[_0x0a9e('0x1c')][_0x0a9e('0x1d')]||null:null,'attributes':_0x112016[_0x0a9e('0x1c')]?_0x112016[_0x0a9e('0x1c')]['attributes']||null:null,'limit':_0x112016[_0x0a9e('0x1c')]?_0x112016[_0x0a9e('0x1c')][_0x0a9e('0x1e')]||null:null,'include':_0x112016[_0x0a9e('0x1c')]?_0x112016[_0x0a9e('0x1c')][_0x0a9e('0x1f')]?_[_0x0a9e('0x20')](_0x112016['options']['include'],function(_0x197ec0){return{'model':db[_0x197ec0[_0x0a9e('0x21')]],'as':_0x197ec0['as'],'attributes':_0x197ec0[_0x0a9e('0x22')],'include':_0x197ec0[_0x0a9e('0x1f')]?_['map'](_0x197ec0[_0x0a9e('0x1f')],function(_0x479bc4){return{'model':db[_0x479bc4[_0x0a9e('0x21')]],'as':_0x479bc4['as'],'attributes':_0x479bc4['attributes'],'include':_0x479bc4[_0x0a9e('0x1f')]?_[_0x0a9e('0x20')](_0x479bc4[_0x0a9e('0x1f')],function(_0x14433c){return{'model':db[_0x14433c[_0x0a9e('0x21')]],'as':_0x14433c['as'],'attributes':_0x14433c[_0x0a9e('0x22')]};}):[]};}):[]};}):[]:[]})[_0x0a9e('0x23')](function(_0x14de77){logger['info'](_0x0a9e('0x19'),_0x112016);logger[_0x0a9e('0x12')](_0x0a9e('0x19'),_0x112016,JSON[_0x0a9e('0x24')](_0x14de77));if(_0x14de77['length']==0x0){return db[_0x0a9e('0x25')][_0x0a9e('0x26')]({'raw':!![],'where':{'item':_0x112016[_0x0a9e('0x1c')][_0x0a9e('0x27')]},'include':[{'model':db[_0x0a9e('0x1a')],'where':{'ListId':_0x112016[_0x0a9e('0x1c')][_0x0a9e('0x1d')][_0x0a9e('0x28')],'deletedAt':{'$eq':null}},'as':_0x0a9e('0x29')}]})['then'](function(_0x426950){if(_['isNil'](_0x426950)){_0x105080(_0x14de77);}else{var _0x2407f9=_0x426950[_0x0a9e('0x2a')];return db[_0x0a9e('0x1a')][_0x0a9e('0x1b')]({'raw':!![],'where':{'id':_0x2407f9},'attributes':_0x112016[_0x0a9e('0x1c')]?_0x112016['options'][_0x0a9e('0x22')]||null:null})[_0x0a9e('0x23')](function(_0x40cb85){_0x105080(_0x40cb85);});}});}else{_0x105080(_0x14de77);}})[_0x0a9e('0x18')](function(_0x2b45ea){logger[_0x0a9e('0x14')](_0x0a9e('0x19'),_0x2b45ea[_0x0a9e('0x16')],_0x112016);_0x4bb1e3(_0x1c696a['error'](0x1f4,_0x2b45ea[_0x0a9e('0x16')]));});});};exports['CreateCmContact']=function(_0x2cc7a0){var _0x14b13f=this;return new Promise(function(_0x2b7e7f,_0x3f3d41){return db['CmContact'][_0x0a9e('0x2b')](_0x2cc7a0[_0x0a9e('0x2c')],{'raw':_0x2cc7a0[_0x0a9e('0x1c')]?_0x2cc7a0[_0x0a9e('0x1c')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x1e8694){var _0x5640eb;for(var _0x24936a=0x0;_0x24936a<Object[_0x0a9e('0x2d')](_0x2cc7a0[_0x0a9e('0x2c')])[_0x0a9e('0x2e')];_0x24936a++){var _0x4f41ae=Object[_0x0a9e('0x2d')](_0x2cc7a0[_0x0a9e('0x2c')])[_0x24936a];if(_0x4f41ae[_0x0a9e('0x2f')]('cf_')){_0x5640eb=squel[_0x0a9e('0x30')]()[_0x0a9e('0x31')](_0x0a9e('0x32'))['set'](_0x4f41ae,_0x2cc7a0['body'][_0x4f41ae])[_0x0a9e('0x1d')](_0x0a9e('0x33'),_0x1e8694['id'])['toString']();break;}}if(!_0x5640eb)return _0x1e8694;return db[_0x0a9e('0x34')][_0x0a9e('0x35')](_0x5640eb)[_0x0a9e('0x23')](function(){return _0x1e8694;});})[_0x0a9e('0x23')](function(_0x4b38d9){logger['info'](_0x0a9e('0x36'),_0x2cc7a0);logger[_0x0a9e('0x12')]('CreateCmContact',_0x2cc7a0,JSON[_0x0a9e('0x24')](_0x4b38d9));_0x2b7e7f(_0x4b38d9);})[_0x0a9e('0x18')](function(_0x1459bb){logger['error'](_0x0a9e('0x36'),_0x1459bb[_0x0a9e('0x16')],_0x2cc7a0);_0x3f3d41(_0x14b13f[_0x0a9e('0x14')](0x1f4,_0x1459bb[_0x0a9e('0x16')]));});});};
\ No newline at end of file
+var _0xa9e0=['phone','ListId','Contact','CmContactId','create','body','keys','length','startsWith','update','table','cm_contacts','id\x20=\x20?','sequelize','query','CreateCmContact','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','localhost','./cmContact.socket','register','info','CmContact,\x20%s,\x20%s','request\x20sent','debug','CmContact,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','GetCmContact','CmContact','findAll','options','where','limit','include','map','model','attributes','then','stringify','CmContactHasItem','find'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xa9e0,0x123));var _0x0a9e=function(_0x311c35,_0x534915){_0x311c35=_0x311c35-0x0;var _0x5cc50c=_0xa9e0[_0x311c35];return _0x5cc50c;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var squel=require('squel');var db=require(_0x0a9e('0x4'))['db'];var utils=require(_0x0a9e('0x5'));var logger=require(_0x0a9e('0x6'))(_0x0a9e('0x7'));var config=require(_0x0a9e('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x0a9e('0x9')][_0x0a9e('0xa')]({'port':0x232a});config[_0x0a9e('0xb')]=_['defaults'](config['redis'],{'host':_0x0a9e('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x0a9e('0xd'))[_0x0a9e('0xe')](socket);function respondWithRpcPromise(_0x307b3e,_0x3ab53f,_0xfeb75b){return new BPromise(function(_0xbd1168,_0x4a4c56){return client['request'](_0x307b3e,_0xfeb75b)['then'](function(_0x4cfe67){logger[_0x0a9e('0xf')](_0x0a9e('0x10'),_0x3ab53f,_0x0a9e('0x11'));logger[_0x0a9e('0x12')](_0x0a9e('0x13'),_0x3ab53f,_0x0a9e('0x11'),JSON['stringify'](_0x4cfe67));if(_0x4cfe67[_0x0a9e('0x14')]){if(_0x4cfe67[_0x0a9e('0x14')][_0x0a9e('0x15')]===0x1f4){logger[_0x0a9e('0x14')](_0x0a9e('0x10'),_0x3ab53f,_0x4cfe67[_0x0a9e('0x14')]['message']);return _0x4a4c56(_0x4cfe67[_0x0a9e('0x14')]['message']);}logger[_0x0a9e('0x14')]('CmContact,\x20%s,\x20%s',_0x3ab53f,_0x4cfe67[_0x0a9e('0x14')][_0x0a9e('0x16')]);return _0xbd1168(_0x4cfe67['error'][_0x0a9e('0x16')]);}else{logger['info'](_0x0a9e('0x10'),_0x3ab53f,_0x0a9e('0x11'));_0xbd1168(_0x4cfe67[_0x0a9e('0x17')][_0x0a9e('0x16')]);}})[_0x0a9e('0x18')](function(_0x2eb11f){logger[_0x0a9e('0x14')](_0x0a9e('0x10'),_0x3ab53f,_0x2eb11f);_0x4a4c56(_0x2eb11f);});});}exports[_0x0a9e('0x19')]=function(_0x112016){var _0x1c696a=this;return new Promise(function(_0x105080,_0x4bb1e3){return db[_0x0a9e('0x1a')][_0x0a9e('0x1b')]({'raw':_0x112016['options']?_0x112016[_0x0a9e('0x1c')]['raw']===undefined?!![]:![]:!![],'where':_0x112016['options']?_0x112016[_0x0a9e('0x1c')][_0x0a9e('0x1d')]||null:null,'attributes':_0x112016[_0x0a9e('0x1c')]?_0x112016[_0x0a9e('0x1c')]['attributes']||null:null,'limit':_0x112016[_0x0a9e('0x1c')]?_0x112016[_0x0a9e('0x1c')][_0x0a9e('0x1e')]||null:null,'include':_0x112016[_0x0a9e('0x1c')]?_0x112016[_0x0a9e('0x1c')][_0x0a9e('0x1f')]?_[_0x0a9e('0x20')](_0x112016['options']['include'],function(_0x197ec0){return{'model':db[_0x197ec0[_0x0a9e('0x21')]],'as':_0x197ec0['as'],'attributes':_0x197ec0[_0x0a9e('0x22')],'include':_0x197ec0[_0x0a9e('0x1f')]?_['map'](_0x197ec0[_0x0a9e('0x1f')],function(_0x479bc4){return{'model':db[_0x479bc4[_0x0a9e('0x21')]],'as':_0x479bc4['as'],'attributes':_0x479bc4['attributes'],'include':_0x479bc4[_0x0a9e('0x1f')]?_[_0x0a9e('0x20')](_0x479bc4[_0x0a9e('0x1f')],function(_0x14433c){return{'model':db[_0x14433c[_0x0a9e('0x21')]],'as':_0x14433c['as'],'attributes':_0x14433c[_0x0a9e('0x22')]};}):[]};}):[]};}):[]:[]})[_0x0a9e('0x23')](function(_0x14de77){logger['info'](_0x0a9e('0x19'),_0x112016);logger[_0x0a9e('0x12')](_0x0a9e('0x19'),_0x112016,JSON[_0x0a9e('0x24')](_0x14de77));if(_0x14de77['length']==0x0){return db[_0x0a9e('0x25')][_0x0a9e('0x26')]({'raw':!![],'where':{'item':_0x112016[_0x0a9e('0x1c')][_0x0a9e('0x27')]},'include':[{'model':db[_0x0a9e('0x1a')],'where':{'ListId':_0x112016[_0x0a9e('0x1c')][_0x0a9e('0x1d')][_0x0a9e('0x28')],'deletedAt':{'$eq':null}},'as':_0x0a9e('0x29')}]})['then'](function(_0x426950){if(_['isNil'](_0x426950)){_0x105080(_0x14de77);}else{var _0x2407f9=_0x426950[_0x0a9e('0x2a')];return db[_0x0a9e('0x1a')][_0x0a9e('0x1b')]({'raw':!![],'where':{'id':_0x2407f9},'attributes':_0x112016[_0x0a9e('0x1c')]?_0x112016['options'][_0x0a9e('0x22')]||null:null})[_0x0a9e('0x23')](function(_0x40cb85){_0x105080(_0x40cb85);});}});}else{_0x105080(_0x14de77);}})[_0x0a9e('0x18')](function(_0x2b45ea){logger[_0x0a9e('0x14')](_0x0a9e('0x19'),_0x2b45ea[_0x0a9e('0x16')],_0x112016);_0x4bb1e3(_0x1c696a['error'](0x1f4,_0x2b45ea[_0x0a9e('0x16')]));});});};exports['CreateCmContact']=function(_0x2cc7a0){var _0x14b13f=this;return new Promise(function(_0x2b7e7f,_0x3f3d41){return db['CmContact'][_0x0a9e('0x2b')](_0x2cc7a0[_0x0a9e('0x2c')],{'raw':_0x2cc7a0[_0x0a9e('0x1c')]?_0x2cc7a0[_0x0a9e('0x1c')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x1e8694){var _0x5640eb;for(var _0x24936a=0x0;_0x24936a<Object[_0x0a9e('0x2d')](_0x2cc7a0[_0x0a9e('0x2c')])[_0x0a9e('0x2e')];_0x24936a++){var _0x4f41ae=Object[_0x0a9e('0x2d')](_0x2cc7a0[_0x0a9e('0x2c')])[_0x24936a];if(_0x4f41ae[_0x0a9e('0x2f')]('cf_')){_0x5640eb=squel[_0x0a9e('0x30')]()[_0x0a9e('0x31')](_0x0a9e('0x32'))['set'](_0x4f41ae,_0x2cc7a0['body'][_0x4f41ae])[_0x0a9e('0x1d')](_0x0a9e('0x33'),_0x1e8694['id'])['toString']();break;}}if(!_0x5640eb)return _0x1e8694;return db[_0x0a9e('0x34')][_0x0a9e('0x35')](_0x5640eb)[_0x0a9e('0x23')](function(){return _0x1e8694;});})[_0x0a9e('0x23')](function(_0x4b38d9){logger['info'](_0x0a9e('0x36'),_0x2cc7a0);logger[_0x0a9e('0x12')]('CreateCmContact',_0x2cc7a0,JSON[_0x0a9e('0x24')](_0x4b38d9));_0x2b7e7f(_0x4b38d9);})[_0x0a9e('0x18')](function(_0x1459bb){logger['error'](_0x0a9e('0x36'),_0x1459bb[_0x0a9e('0x16')],_0x2cc7a0);_0x3f3d41(_0x14b13f[_0x0a9e('0x14')](0x1f4,_0x1459bb[_0x0a9e('0x16')]));});});};
\ No newline at end of file
index a1d5272..79adc62 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(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xa9e0,0x123));var _0x0a9e=function(_0x491a7f,_0x28bb80){_0x491a7f=_0x491a7f-0x0;var _0x3d8f44=_0xa9e0[_0x491a7f];return _0x3d8f44;};'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(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xa9e0[_0x2dafbe];return _0x58a45a;};'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 3fcc38c..b283bfd 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(_0x3694fd,_0x25fdb4){var _0x4fd162=function(_0x5444ff){while(--_0x5444ff){_0x3694fd['push'](_0x3694fd['shift']());}};_0x4fd162(++_0x25fdb4);}(_0xa9e0,0x123));var _0x0a9e=function(_0x47b58b,_0x41a189){_0x47b58b=_0x47b58b-0x0;var _0x46bebe=_0xa9e0[_0x47b58b];return _0x46bebe;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['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(_0x20899b,_0x163c2e){var _0x17e1ad=function(_0x1623d7){while(--_0x1623d7){_0x20899b['push'](_0x20899b['shift']());}};_0x17e1ad(++_0x163c2e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x46aff0,_0x122890){_0x46aff0=_0x46aff0-0x0;var _0x9d78cf=_0xa9e0[_0x46aff0];return _0x9d78cf;};'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 5ec2c2b..b31b45b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd816=['INTEGER','sequelize','exports','STRING'];(function(_0x217e0a,_0x540c57){var _0xb30d91=function(_0xedb6d1){while(--_0xedb6d1){_0x217e0a['push'](_0x217e0a['shift']());}};_0xb30d91(++_0x540c57);}(_0xd816,0xd5));var _0x6d81=function(_0x267511,_0x2aeeda){_0x267511=_0x267511-0x0;var _0x24fcb7=_0xd816[_0x267511];return _0x24fcb7;};'use strict';var Sequelize=require(_0x6d81('0x0'));module[_0x6d81('0x1')]={'CmContactId':{'type':Sequelize['INTEGER'],'primaryKey':!![]},'item':{'type':Sequelize[_0x6d81('0x2')],'defaultValue':'','primaryKey':!![]},'ItemTypeId':{'type':Sequelize['INTEGER'],'defaultValue':null},'ItemClass':{'type':Sequelize['STRING'],'defaultValue':'PHONE'},'OrderBy':{'type':Sequelize[_0x6d81('0x3')],'defaultValue':null},'description':{'type':Sequelize[_0x6d81('0x2')],'defaultValue':null}};
\ No newline at end of file
+var _0x5668=['exports','INTEGER','STRING','PHONE','sequelize'];(function(_0x13d07a,_0x41efc3){var _0x5ee0ee=function(_0x4ca94a){while(--_0x4ca94a){_0x13d07a['push'](_0x13d07a['shift']());}};_0x5ee0ee(++_0x41efc3);}(_0x5668,0x8b));var _0x8566=function(_0x228689,_0x2dc1d5){_0x228689=_0x228689-0x0;var _0x157a70=_0x5668[_0x228689];return _0x157a70;};'use strict';var Sequelize=require(_0x8566('0x0'));module[_0x8566('0x1')]={'CmContactId':{'type':Sequelize[_0x8566('0x2')],'primaryKey':!![]},'item':{'type':Sequelize[_0x8566('0x3')],'defaultValue':'','primaryKey':!![]},'ItemTypeId':{'type':Sequelize[_0x8566('0x2')],'defaultValue':null},'ItemClass':{'type':Sequelize[_0x8566('0x3')],'defaultValue':_0x8566('0x4')},'OrderBy':{'type':Sequelize[_0x8566('0x2')],'defaultValue':null},'description':{'type':Sequelize[_0x8566('0x3')],'defaultValue':null}};
\ No newline at end of file
index 884e17d..5e70187 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0203=['pick','filter','where','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','length','merge','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','count','limit','set','json','reject','save','then','get','CmContactHasItems','destroy','name','index','map','CmContactHasItem','rawAttributes','fieldName','type','key','query','keys','intersection','model','fields','attributes','hasOwnProperty','nolimit','sort','filters'];(function(_0x5b65fd,_0x2af41d){var _0x1de987=function(_0x2b2cbd){while(--_0x2b2cbd){_0x5b65fd['push'](_0x5b65fd['shift']());}};_0x1de987(++_0x2af41d);}(_0x0203,0x1b8));var _0x3020=function(_0x502cf9,_0x5c720c){_0x502cf9=_0x502cf9-0x0;var _0x1ed877=_0x0203[_0x502cf9];return _0x1ed877;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x3020('0x0'));var zipdir=require(_0x3020('0x1'));var jsonpatch=require(_0x3020('0x2'));var rp=require('request-promise');var moment=require(_0x3020('0x3'));var BPromise=require(_0x3020('0x4'));var Mustache=require('mustache');var util=require(_0x3020('0x5'));var path=require(_0x3020('0x6'));var sox=require(_0x3020('0x7'));var csv=require(_0x3020('0x8'));var ejs=require(_0x3020('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x3020('0xa'));var crypto=require(_0x3020('0xb'));var jsforce=require(_0x3020('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x3020('0x8'));var querystring=require(_0x3020('0xd'));var Papa=require(_0x3020('0xe'));var Redis=require(_0x3020('0xf'));var authService=require(_0x3020('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x3020('0x11'));var hardwareService=require(_0x3020('0x12'));var logger=require(_0x3020('0x13'))(_0x3020('0x14'));var utils=require(_0x3020('0x15'));var config=require(_0x3020('0x16'));var licenseUtil=require(_0x3020('0x17'));var db=require(_0x3020('0x18'))['db'];function respondWithStatusCode(_0x1ea312,_0x588369){_0x588369=_0x588369||0xcc;return function(_0x13871f){if(_0x13871f){return _0x1ea312[_0x3020('0x19')](_0x588369);}return _0x1ea312[_0x3020('0x1a')](_0x588369)[_0x3020('0x1b')]();};}function respondWithResult(_0x4b6225,_0x253762){_0x253762=_0x253762||0xc8;return function(_0x2c9e79){if(_0x2c9e79){return _0x4b6225[_0x3020('0x1a')](_0x253762)['json'](_0x2c9e79);}};}function respondWithFilteredResult(_0x39de74,_0x7844fc){return function(_0x3ff288){if(_0x3ff288){var _0xbc8447=typeof _0x7844fc[_0x3020('0x1c')]===_0x3020('0x1d')&&typeof _0x7844fc['limit']===_0x3020('0x1d');var _0x2f7bac=_0x3ff288[_0x3020('0x1e')];var _0x33efa5=_0xbc8447?0x0:_0x7844fc[_0x3020('0x1c')];var _0x4fc8ec=_0xbc8447?_0x3ff288['count']:_0x7844fc[_0x3020('0x1c')]+_0x7844fc[_0x3020('0x1f')];var _0x4ab0eb;if(_0x4fc8ec>=_0x2f7bac){_0x4fc8ec=_0x2f7bac;_0x4ab0eb=0xc8;}else{_0x4ab0eb=0xce;}_0x39de74[_0x3020('0x1a')](_0x4ab0eb);return _0x39de74[_0x3020('0x20')]('Content-Range',_0x33efa5+'-'+_0x4fc8ec+'/'+_0x2f7bac)[_0x3020('0x21')](_0x3ff288);}return null;};}function patchUpdates(_0x2e022c){return function(_0x561bfe){try{jsonpatch['apply'](_0x561bfe,_0x2e022c,!![]);}catch(_0x4af145){return BPromise[_0x3020('0x22')](_0x4af145);}return _0x561bfe[_0x3020('0x23')]();};}function saveUpdates(_0x2c7063,_0x1c7629){return function(_0x19591e){if(_0x19591e){return _0x19591e['update'](_0x2c7063)[_0x3020('0x24')](function(_0x5643c5){return _0x5643c5;});}return null;};}function removeEntity(_0x2789db,_0xfb8fb9){return function(_0x495d1e){if(_0x495d1e){return _0x495d1e['destroy']()[_0x3020('0x24')](function(){var _0x163bde=_0x495d1e[_0x3020('0x25')]({'plain':!![]});var _0x5fb6dd=_0x3020('0x26');return db['UserProfileResource'][_0x3020('0x27')]({'where':{'type':_0x5fb6dd,'resourceId':_0x163bde['id']}})[_0x3020('0x24')](function(){return _0x495d1e;});})[_0x3020('0x24')](function(){_0x2789db[_0x3020('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5a67fb,_0x23e3c0){return function(_0x41b784){if(!_0x41b784){_0x5a67fb[_0x3020('0x19')](0x194);}return _0x41b784;};}function handleError(_0x643890,_0x3462a4){_0x3462a4=_0x3462a4||0x1f4;return function(_0x4d8393){logger['error'](_0x4d8393['stack']);if(_0x4d8393[_0x3020('0x28')]){delete _0x4d8393[_0x3020('0x28')];}_0x643890[_0x3020('0x1a')](_0x3462a4)['send'](_0x4d8393);};}exports[_0x3020('0x29')]=function(_0xfb16e8,_0x1dcec8){var _0x1dff4b={},_0x422be0={},_0x183220={'count':0x0,'rows':[]};var _0x597968=_[_0x3020('0x2a')](db[_0x3020('0x2b')][_0x3020('0x2c')],function(_0x5c4040){return{'name':_0x5c4040[_0x3020('0x2d')],'type':_0x5c4040[_0x3020('0x2e')][_0x3020('0x2f')]};});_0x422be0['model']=_[_0x3020('0x2a')](_0x597968,_0x3020('0x28'));_0x422be0[_0x3020('0x30')]=_[_0x3020('0x31')](_0xfb16e8['query']);_0x422be0['filters']=_[_0x3020('0x32')](_0x422be0[_0x3020('0x33')],_0x422be0['query']);_0x1dff4b['attributes']=_['intersection'](_0x422be0[_0x3020('0x33')],qs[_0x3020('0x34')](_0xfb16e8['query'][_0x3020('0x34')]));_0x1dff4b[_0x3020('0x35')]=_0x1dff4b[_0x3020('0x35')]['length']?_0x1dff4b['attributes']:_0x422be0['model'];if(!_0xfb16e8[_0x3020('0x30')][_0x3020('0x36')](_0x3020('0x37'))){_0x1dff4b['limit']=qs[_0x3020('0x1f')](_0xfb16e8['query'][_0x3020('0x1f')]);_0x1dff4b[_0x3020('0x1c')]=qs[_0x3020('0x1c')](_0xfb16e8[_0x3020('0x30')][_0x3020('0x1c')]);}_0x1dff4b['order']=qs['sort'](_0xfb16e8['query'][_0x3020('0x38')]);_0x1dff4b['where']=qs[_0x3020('0x39')](_[_0x3020('0x3a')](_0xfb16e8['query'],_0x422be0[_0x3020('0x39')]),_0x597968);if(_0xfb16e8[_0x3020('0x30')][_0x3020('0x3b')]){_0x1dff4b[_0x3020('0x3c')]=_['merge'](_0x1dff4b[_0x3020('0x3c')],{'$or':_[_0x3020('0x2a')](_0x597968,function(_0x16fd81){if(_0x16fd81[_0x3020('0x2e')]!==_0x3020('0x3d')){var _0x12b08e={};_0x12b08e[_0x16fd81[_0x3020('0x28')]]={'$like':'%'+_0xfb16e8[_0x3020('0x30')]['filter']+'%'};return _0x12b08e;}})});}_0x1dff4b=_['merge']({},_0x1dff4b,_0xfb16e8[_0x3020('0x3e')]);var _0x43dcec={'where':_0x1dff4b[_0x3020('0x3c')]};return db[_0x3020('0x2b')][_0x3020('0x1e')](_0x43dcec)[_0x3020('0x24')](function(_0x4718b8){_0x183220[_0x3020('0x1e')]=_0x4718b8;if(_0xfb16e8[_0x3020('0x30')][_0x3020('0x3f')]){_0x1dff4b[_0x3020('0x40')]=[{'all':!![]}];}return db['CmContactHasItem'][_0x3020('0x41')](_0x1dff4b);})[_0x3020('0x24')](function(_0xa7a722){_0x183220[_0x3020('0x42')]=_0xa7a722;return _0x183220;})['then'](respondWithFilteredResult(_0x1dcec8,_0x1dff4b))[_0x3020('0x43')](handleError(_0x1dcec8,null));};exports[_0x3020('0x44')]=function(_0x2f5b7b,_0x21c9bb){var _0x4a6f96={'raw':!![],'where':{'id':_0x2f5b7b[_0x3020('0x45')]['id']}},_0x29365a={};_0x29365a[_0x3020('0x33')]=_[_0x3020('0x31')](db[_0x3020('0x2b')][_0x3020('0x2c')]);_0x29365a['query']=_['keys'](_0x2f5b7b['query']);_0x29365a[_0x3020('0x39')]=_['intersection'](_0x29365a[_0x3020('0x33')],_0x29365a['query']);_0x4a6f96[_0x3020('0x35')]=_['intersection'](_0x29365a[_0x3020('0x33')],qs[_0x3020('0x34')](_0x2f5b7b[_0x3020('0x30')][_0x3020('0x34')]));_0x4a6f96[_0x3020('0x35')]=_0x4a6f96[_0x3020('0x35')][_0x3020('0x46')]?_0x4a6f96['attributes']:_0x29365a[_0x3020('0x33')];if(_0x2f5b7b[_0x3020('0x30')]['includeAll']){_0x4a6f96[_0x3020('0x40')]=[{'all':!![]}];}_0x4a6f96=_[_0x3020('0x47')]({},_0x4a6f96,_0x2f5b7b[_0x3020('0x3e')]);return db[_0x3020('0x2b')][_0x3020('0x48')](_0x4a6f96)['then'](handleEntityNotFound(_0x21c9bb,null))['then'](respondWithResult(_0x21c9bb,null))[_0x3020('0x43')](handleError(_0x21c9bb,null));};exports['create']=function(_0x419c48,_0x2565d5){return db[_0x3020('0x2b')][_0x3020('0x49')](_0x419c48[_0x3020('0x4a')],{})[_0x3020('0x24')](function(_0x5e35a1){var _0x2163ae=_0x419c48[_0x3020('0x4b')][_0x3020('0x25')]({'plain':!![]});if(!_0x2163ae)throw new Error(_0x3020('0x4c'));if(_0x2163ae[_0x3020('0x4d')]===_0x3020('0x4b')){var _0x2aba8e=_0x5e35a1[_0x3020('0x25')]({'plain':!![]});var _0x3697d9=_0x3020('0x26');return db[_0x3020('0x4e')][_0x3020('0x48')]({'where':{'name':_0x3697d9,'userProfileId':_0x2163ae[_0x3020('0x4f')]},'raw':!![]})['then'](function(_0x7aade2){if(_0x7aade2&&_0x7aade2[_0x3020('0x50')]===0x0){return db['UserProfileResource'][_0x3020('0x49')]({'name':_0x2aba8e['name'],'resourceId':_0x2aba8e['id'],'type':_0x7aade2[_0x3020('0x28')],'sectionId':_0x7aade2['id']},{})['then'](function(){return _0x5e35a1;});}else{return _0x5e35a1;}})[_0x3020('0x43')](function(_0x34e85c){logger[_0x3020('0x51')](_0x3020('0x52'),_0x34e85c);throw _0x34e85c;});}return _0x5e35a1;})[_0x3020('0x24')](respondWithResult(_0x2565d5,0xc9))[_0x3020('0x43')](handleError(_0x2565d5,null));};exports['update']=function(_0x220a99,_0x721b8a){if(_0x220a99[_0x3020('0x4a')]['id']){delete _0x220a99[_0x3020('0x4a')]['id'];}return db[_0x3020('0x2b')][_0x3020('0x48')]({'where':{'id':_0x220a99[_0x3020('0x45')]['id']}})[_0x3020('0x24')](handleEntityNotFound(_0x721b8a,null))[_0x3020('0x24')](saveUpdates(_0x220a99['body'],null))[_0x3020('0x24')](respondWithResult(_0x721b8a,null))[_0x3020('0x43')](handleError(_0x721b8a,null));};exports[_0x3020('0x27')]=function(_0x5813c5,_0x2e88fc){return db['CmContactHasItem'][_0x3020('0x48')]({'where':{'id':_0x5813c5[_0x3020('0x45')]['id']}})['then'](handleEntityNotFound(_0x2e88fc,null))['then'](removeEntity(_0x2e88fc,null))[_0x3020('0x43')](handleError(_0x2e88fc,null));};
\ No newline at end of file
+var _0x131e=['../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','count','apply','reject','save','then','get','CmContactHasItems','UserProfileResource','error','stack','name','send','index','map','CmContactHasItem','rawAttributes','fieldName','type','model','query','keys','filters','intersection','fields','attributes','length','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','rows','catch','show','options','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','body','destroy','params','eml-format','rimraf','fast-json-patch','moment','mustache','path','to-csv','ejs','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service'];(function(_0x3a115e,_0x3dac39){var _0x1b7e61=function(_0x393180){while(--_0x393180){_0x3a115e['push'](_0x3a115e['shift']());}};_0x1b7e61(++_0x3dac39);}(_0x131e,0x1c4));var _0xe131=function(_0x274464,_0x228be1){_0x274464=_0x274464-0x0;var _0x2c7c26=_0x131e[_0x274464];return _0x2c7c26;};'use strict';var emlformat=require(_0xe131('0x0'));var rimraf=require(_0xe131('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xe131('0x2'));var rp=require('request-promise');var moment=require(_0xe131('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xe131('0x4'));var util=require('util');var path=require(_0xe131('0x5'));var sox=require('sox');var csv=require(_0xe131('0x6'));var ejs=require(_0xe131('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xe131('0x8'));var squel=require('squel');var crypto=require(_0xe131('0x9'));var jsforce=require(_0xe131('0xa'));var deskjs=require(_0xe131('0xb'));var toCsv=require(_0xe131('0x6'));var querystring=require(_0xe131('0xc'));var Papa=require(_0xe131('0xd'));var Redis=require(_0xe131('0xe'));var authService=require(_0xe131('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xe131('0x10'));var hardwareService=require(_0xe131('0x11'));var logger=require('../../config/logger')(_0xe131('0x12'));var utils=require(_0xe131('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0xe131('0x14'));var db=require(_0xe131('0x15'))['db'];function respondWithStatusCode(_0x1b6ef7,_0x4489e7){_0x4489e7=_0x4489e7||0xcc;return function(_0x5aac36){if(_0x5aac36){return _0x1b6ef7[_0xe131('0x16')](_0x4489e7);}return _0x1b6ef7[_0xe131('0x17')](_0x4489e7)[_0xe131('0x18')]();};}function respondWithResult(_0x13f7bd,_0x273a34){_0x273a34=_0x273a34||0xc8;return function(_0x104ac6){if(_0x104ac6){return _0x13f7bd[_0xe131('0x17')](_0x273a34)[_0xe131('0x19')](_0x104ac6);}};}function respondWithFilteredResult(_0x49b51f,_0x96b11d){return function(_0x4a6847){if(_0x4a6847){var _0x1974e3=typeof _0x96b11d[_0xe131('0x1a')]==='undefined'&&typeof _0x96b11d[_0xe131('0x1b')]==='undefined';var _0x3e8fdd=_0x4a6847[_0xe131('0x1c')];var _0x5cf4b4=_0x1974e3?0x0:_0x96b11d[_0xe131('0x1a')];var _0x3000d0=_0x1974e3?_0x4a6847[_0xe131('0x1c')]:_0x96b11d[_0xe131('0x1a')]+_0x96b11d[_0xe131('0x1b')];var _0x17521d;if(_0x3000d0>=_0x3e8fdd){_0x3000d0=_0x3e8fdd;_0x17521d=0xc8;}else{_0x17521d=0xce;}_0x49b51f[_0xe131('0x17')](_0x17521d);return _0x49b51f['set']('Content-Range',_0x5cf4b4+'-'+_0x3000d0+'/'+_0x3e8fdd)[_0xe131('0x19')](_0x4a6847);}return null;};}function patchUpdates(_0x177489){return function(_0x58476b){try{jsonpatch[_0xe131('0x1d')](_0x58476b,_0x177489,!![]);}catch(_0x1568e3){return BPromise[_0xe131('0x1e')](_0x1568e3);}return _0x58476b[_0xe131('0x1f')]();};}function saveUpdates(_0x563468,_0x4af9ad){return function(_0x176053){if(_0x176053){return _0x176053['update'](_0x563468)[_0xe131('0x20')](function(_0x4d67a7){return _0x4d67a7;});}return null;};}function removeEntity(_0x1fae2a,_0x117e61){return function(_0xd09ebe){if(_0xd09ebe){return _0xd09ebe['destroy']()[_0xe131('0x20')](function(){var _0x38fc1d=_0xd09ebe[_0xe131('0x21')]({'plain':!![]});var _0x17fd28=_0xe131('0x22');return db[_0xe131('0x23')]['destroy']({'where':{'type':_0x17fd28,'resourceId':_0x38fc1d['id']}})['then'](function(){return _0xd09ebe;});})[_0xe131('0x20')](function(){_0x1fae2a[_0xe131('0x17')](0xcc)[_0xe131('0x18')]();});}};}function handleEntityNotFound(_0x3b6c91,_0x203ecf){return function(_0x35dc41){if(!_0x35dc41){_0x3b6c91[_0xe131('0x16')](0x194);}return _0x35dc41;};}function handleError(_0x17e072,_0x2a283){_0x2a283=_0x2a283||0x1f4;return function(_0x2630e4){logger[_0xe131('0x24')](_0x2630e4[_0xe131('0x25')]);if(_0x2630e4[_0xe131('0x26')]){delete _0x2630e4[_0xe131('0x26')];}_0x17e072[_0xe131('0x17')](_0x2a283)[_0xe131('0x27')](_0x2630e4);};}exports[_0xe131('0x28')]=function(_0x4d5fee,_0x3f56dc){var _0x371ac0={},_0x40d523={},_0x33289e={'count':0x0,'rows':[]};var _0x254532=_[_0xe131('0x29')](db[_0xe131('0x2a')][_0xe131('0x2b')],function(_0x3e5484){return{'name':_0x3e5484[_0xe131('0x2c')],'type':_0x3e5484[_0xe131('0x2d')]['key']};});_0x40d523[_0xe131('0x2e')]=_['map'](_0x254532,_0xe131('0x26'));_0x40d523[_0xe131('0x2f')]=_[_0xe131('0x30')](_0x4d5fee[_0xe131('0x2f')]);_0x40d523[_0xe131('0x31')]=_[_0xe131('0x32')](_0x40d523['model'],_0x40d523[_0xe131('0x2f')]);_0x371ac0['attributes']=_[_0xe131('0x32')](_0x40d523[_0xe131('0x2e')],qs['fields'](_0x4d5fee[_0xe131('0x2f')][_0xe131('0x33')]));_0x371ac0[_0xe131('0x34')]=_0x371ac0[_0xe131('0x34')][_0xe131('0x35')]?_0x371ac0[_0xe131('0x34')]:_0x40d523[_0xe131('0x2e')];if(!_0x4d5fee[_0xe131('0x2f')]['hasOwnProperty']('nolimit')){_0x371ac0[_0xe131('0x1b')]=qs[_0xe131('0x1b')](_0x4d5fee[_0xe131('0x2f')][_0xe131('0x1b')]);_0x371ac0['offset']=qs[_0xe131('0x1a')](_0x4d5fee[_0xe131('0x2f')][_0xe131('0x1a')]);}_0x371ac0[_0xe131('0x36')]=qs[_0xe131('0x37')](_0x4d5fee[_0xe131('0x2f')]['sort']);_0x371ac0[_0xe131('0x38')]=qs[_0xe131('0x31')](_[_0xe131('0x39')](_0x4d5fee[_0xe131('0x2f')],_0x40d523[_0xe131('0x31')]),_0x254532);if(_0x4d5fee[_0xe131('0x2f')][_0xe131('0x3a')]){_0x371ac0[_0xe131('0x38')]=_[_0xe131('0x3b')](_0x371ac0[_0xe131('0x38')],{'$or':_[_0xe131('0x29')](_0x254532,function(_0x7150cf){if(_0x7150cf[_0xe131('0x2d')]!==_0xe131('0x3c')){var _0x45ebdd={};_0x45ebdd[_0x7150cf['name']]={'$like':'%'+_0x4d5fee['query'][_0xe131('0x3a')]+'%'};return _0x45ebdd;}})});}_0x371ac0=_['merge']({},_0x371ac0,_0x4d5fee['options']);var _0x156869={'where':_0x371ac0[_0xe131('0x38')]};return db[_0xe131('0x2a')][_0xe131('0x1c')](_0x156869)[_0xe131('0x20')](function(_0x10b20e){_0x33289e[_0xe131('0x1c')]=_0x10b20e;if(_0x4d5fee[_0xe131('0x2f')][_0xe131('0x3d')]){_0x371ac0[_0xe131('0x3e')]=[{'all':!![]}];}return db['CmContactHasItem']['findAll'](_0x371ac0);})[_0xe131('0x20')](function(_0x240fe5){_0x33289e[_0xe131('0x3f')]=_0x240fe5;return _0x33289e;})[_0xe131('0x20')](respondWithFilteredResult(_0x3f56dc,_0x371ac0))[_0xe131('0x40')](handleError(_0x3f56dc,null));};exports[_0xe131('0x41')]=function(_0x46c2ad,_0x8f3a41){var _0x2ba63f={'raw':!![],'where':{'id':_0x46c2ad['params']['id']}},_0x266907={};_0x266907['model']=_['keys'](db['CmContactHasItem'][_0xe131('0x2b')]);_0x266907[_0xe131('0x2f')]=_[_0xe131('0x30')](_0x46c2ad['query']);_0x266907[_0xe131('0x31')]=_[_0xe131('0x32')](_0x266907['model'],_0x266907[_0xe131('0x2f')]);_0x2ba63f[_0xe131('0x34')]=_[_0xe131('0x32')](_0x266907[_0xe131('0x2e')],qs[_0xe131('0x33')](_0x46c2ad[_0xe131('0x2f')][_0xe131('0x33')]));_0x2ba63f[_0xe131('0x34')]=_0x2ba63f[_0xe131('0x34')][_0xe131('0x35')]?_0x2ba63f[_0xe131('0x34')]:_0x266907['model'];if(_0x46c2ad[_0xe131('0x2f')][_0xe131('0x3d')]){_0x2ba63f[_0xe131('0x3e')]=[{'all':!![]}];}_0x2ba63f=_[_0xe131('0x3b')]({},_0x2ba63f,_0x46c2ad[_0xe131('0x42')]);return db['CmContactHasItem'][_0xe131('0x43')](_0x2ba63f)[_0xe131('0x20')](handleEntityNotFound(_0x8f3a41,null))[_0xe131('0x20')](respondWithResult(_0x8f3a41,null))['catch'](handleError(_0x8f3a41,null));};exports['create']=function(_0x3b4ebe,_0x578803){return db[_0xe131('0x2a')][_0xe131('0x44')](_0x3b4ebe['body'],{})[_0xe131('0x20')](function(_0x20d38e){var _0x1a15d5=_0x3b4ebe[_0xe131('0x45')]['get']({'plain':!![]});if(!_0x1a15d5)throw new Error(_0xe131('0x46'));if(_0x1a15d5[_0xe131('0x47')]===_0xe131('0x45')){var _0xb788e8=_0x20d38e[_0xe131('0x21')]({'plain':!![]});var _0x464e70=_0xe131('0x22');return db[_0xe131('0x48')][_0xe131('0x43')]({'where':{'name':_0x464e70,'userProfileId':_0x1a15d5[_0xe131('0x49')]},'raw':!![]})[_0xe131('0x20')](function(_0x150f3a){if(_0x150f3a&&_0x150f3a[_0xe131('0x4a')]===0x0){return db[_0xe131('0x23')][_0xe131('0x44')]({'name':_0xb788e8[_0xe131('0x26')],'resourceId':_0xb788e8['id'],'type':_0x150f3a['name'],'sectionId':_0x150f3a['id']},{})[_0xe131('0x20')](function(){return _0x20d38e;});}else{return _0x20d38e;}})['catch'](function(_0xa89b45){logger[_0xe131('0x24')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0xa89b45);throw _0xa89b45;});}return _0x20d38e;})['then'](respondWithResult(_0x578803,0xc9))[_0xe131('0x40')](handleError(_0x578803,null));};exports['update']=function(_0x15d6ff,_0x814c78){if(_0x15d6ff[_0xe131('0x4b')]['id']){delete _0x15d6ff[_0xe131('0x4b')]['id'];}return db[_0xe131('0x2a')]['find']({'where':{'id':_0x15d6ff['params']['id']}})['then'](handleEntityNotFound(_0x814c78,null))[_0xe131('0x20')](saveUpdates(_0x15d6ff['body'],null))[_0xe131('0x20')](respondWithResult(_0x814c78,null))[_0xe131('0x40')](handleError(_0x814c78,null));};exports[_0xe131('0x4c')]=function(_0x299873,_0x99c44a){return db[_0xe131('0x2a')][_0xe131('0x43')]({'where':{'id':_0x299873[_0xe131('0x4d')]['id']}})[_0xe131('0x20')](handleEntityNotFound(_0x99c44a,null))['then'](removeEntity(_0x99c44a,null))[_0xe131('0x40')](handleError(_0x99c44a,null));};
\ No newline at end of file
index 300362a..6fbe808 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x97ec=['util','../../config/logger','api','moment','bluebird','request-promise','rimraf','./cmContactHasItem.attributes','exports','define','CmContactHasItem','cm_contact_has_items','lodash'];(function(_0x513e37,_0x206c2c){var _0x55a2dd=function(_0x42f17d){while(--_0x42f17d){_0x513e37['push'](_0x513e37['shift']());}};_0x55a2dd(++_0x206c2c);}(_0x97ec,0x192));var _0xc97e=function(_0x55a5a5,_0x476f9b){_0x55a5a5=_0x55a5a5-0x0;var _0x330dfd=_0x97ec[_0x55a5a5];return _0x330dfd;};'use strict';var _=require(_0xc97e('0x0'));var util=require(_0xc97e('0x1'));var logger=require(_0xc97e('0x2'))(_0xc97e('0x3'));var moment=require(_0xc97e('0x4'));var BPromise=require(_0xc97e('0x5'));var rp=require(_0xc97e('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xc97e('0x7'));var config=require('../../config/environment');var attributes=require(_0xc97e('0x8'));module[_0xc97e('0x9')]=function(_0x626bfe,_0x1ce9e0){return _0x626bfe[_0xc97e('0xa')](_0xc97e('0xb'),attributes,{'tableName':_0xc97e('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3583=['define','CmContactHasItem','cm_contact_has_items','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./cmContactHasItem.attributes','exports'];(function(_0x4acfed,_0x5e35a1){var _0x35103d=function(_0x409df0){while(--_0x409df0){_0x4acfed['push'](_0x4acfed['shift']());}};_0x35103d(++_0x5e35a1);}(_0x3583,0x1d7));var _0x3358=function(_0x17dc9a,_0x4917d2){_0x17dc9a=_0x17dc9a-0x0;var _0x2b1c46=_0x3583[_0x17dc9a];return _0x2b1c46;};'use strict';var _=require('lodash');var util=require(_0x3358('0x0'));var logger=require(_0x3358('0x1'))(_0x3358('0x2'));var moment=require('moment');var BPromise=require(_0x3358('0x3'));var rp=require(_0x3358('0x4'));var fs=require('fs');var path=require(_0x3358('0x5'));var rimraf=require(_0x3358('0x6'));var config=require(_0x3358('0x7'));var attributes=require(_0x3358('0x8'));module[_0x3358('0x9')]=function(_0x579843,_0x18c1ab){return _0x579843[_0x3358('0xa')](_0x3358('0xb'),attributes,{'tableName':_0x3358('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 193608d..25362ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x744b=['CmContactHasItem,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','CmContactHasItem,\x20%s,\x20%s','request\x20sent'];(function(_0x3b71f3,_0x32cac5){var _0x51789f=function(_0x53b0f5){while(--_0x53b0f5){_0x3b71f3['push'](_0x3b71f3['shift']());}};_0x51789f(++_0x32cac5);}(_0x744b,0x1eb));var _0xb744=function(_0x288602,_0x56f26f){_0x288602=_0x288602-0x0;var _0x46420c=_0x744b[_0x288602];return _0x46420c;};'use strict';var _=require(_0xb744('0x0'));var util=require(_0xb744('0x1'));var moment=require(_0xb744('0x2'));var BPromise=require(_0xb744('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb744('0x4'))['db'];var utils=require(_0xb744('0x5'));var logger=require(_0xb744('0x6'))(_0xb744('0x7'));var config=require(_0xb744('0x8'));var jayson=require(_0xb744('0x9'));var client=jayson[_0xb744('0xa')][_0xb744('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x51bbde,_0x14c8b8,_0x3d1613){return new BPromise(function(_0x46f8fb,_0x5ee4be){return client[_0xb744('0xc')](_0x51bbde,_0x3d1613)['then'](function(_0x509322){logger['info'](_0xb744('0xd'),_0x14c8b8,_0xb744('0xe'));logger['debug'](_0xb744('0xf'),_0x14c8b8,'request\x20sent',JSON[_0xb744('0x10')](_0x509322));if(_0x509322['error']){if(_0x509322[_0xb744('0x11')][_0xb744('0x12')]===0x1f4){logger[_0xb744('0x11')]('CmContactHasItem,\x20%s,\x20%s',_0x14c8b8,_0x509322['error'][_0xb744('0x13')]);return _0x5ee4be(_0x509322[_0xb744('0x11')]['message']);}logger[_0xb744('0x11')]('CmContactHasItem,\x20%s,\x20%s',_0x14c8b8,_0x509322[_0xb744('0x11')][_0xb744('0x13')]);return _0x46f8fb(_0x509322[_0xb744('0x11')][_0xb744('0x13')]);}else{logger[_0xb744('0x14')]('CmContactHasItem,\x20%s,\x20%s',_0x14c8b8,_0xb744('0xe'));_0x46f8fb(_0x509322[_0xb744('0x15')][_0xb744('0x13')]);}})[_0xb744('0x16')](function(_0x4e07f6){logger[_0xb744('0x11')](_0xb744('0xd'),_0x14c8b8,_0x4e07f6);_0x5ee4be(_0x4e07f6);});});}
\ No newline at end of file
+var _0x370f=['code','message','info','result','lodash','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','then','CmContactHasItem,\x20%s,\x20%s','request\x20sent','debug','CmContactHasItem,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x1ad0a1,_0x341e49){var _0x3b0e03=function(_0x2f4201){while(--_0x2f4201){_0x1ad0a1['push'](_0x1ad0a1['shift']());}};_0x3b0e03(++_0x341e49);}(_0x370f,0x1e8));var _0xf370=function(_0x21a0c5,_0x586032){_0x21a0c5=_0x21a0c5-0x0;var _0x13d439=_0x370f[_0x21a0c5];return _0x13d439;};'use strict';var _=require(_0xf370('0x0'));var util=require(_0xf370('0x1'));var moment=require(_0xf370('0x2'));var BPromise=require(_0xf370('0x3'));var rs=require(_0xf370('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xf370('0x5'));var logger=require(_0xf370('0x6'))(_0xf370('0x7'));var config=require(_0xf370('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xf370('0x9')][_0xf370('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x31d346,_0x1d92a6,_0x29387b){return new BPromise(function(_0x35c95b,_0x12d277){return client['request'](_0x31d346,_0x29387b)[_0xf370('0xb')](function(_0x126320){logger['info'](_0xf370('0xc'),_0x1d92a6,_0xf370('0xd'));logger[_0xf370('0xe')](_0xf370('0xf'),_0x1d92a6,_0xf370('0xd'),JSON[_0xf370('0x10')](_0x126320));if(_0x126320[_0xf370('0x11')]){if(_0x126320[_0xf370('0x11')][_0xf370('0x12')]===0x1f4){logger[_0xf370('0x11')]('CmContactHasItem,\x20%s,\x20%s',_0x1d92a6,_0x126320[_0xf370('0x11')][_0xf370('0x13')]);return _0x12d277(_0x126320['error'][_0xf370('0x13')]);}logger[_0xf370('0x11')](_0xf370('0xc'),_0x1d92a6,_0x126320[_0xf370('0x11')][_0xf370('0x13')]);return _0x35c95b(_0x126320[_0xf370('0x11')]['message']);}else{logger[_0xf370('0x14')](_0xf370('0xc'),_0x1d92a6,'request\x20sent');_0x35c95b(_0x126320[_0xf370('0x15')][_0xf370('0x13')]);}})['catch'](function(_0xaffba){logger[_0xf370('0x11')](_0xf370('0xc'),_0x1d92a6,_0xaffba);_0x12d277(_0xaffba);});});}
\ No newline at end of file
index 923ba65..02c34aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc933=['destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmContactHasItem.controller','isAuthenticated','index','/:id','show','post','create','put'];(function(_0x2eec1f,_0x1b9987){var _0x543075=function(_0x5792d2){while(--_0x5792d2){_0x2eec1f['push'](_0x2eec1f['shift']());}};_0x543075(++_0x1b9987);}(_0xc933,0xf9));var _0x3c93=function(_0x12b3f1,_0x9becd3){_0x12b3f1=_0x12b3f1-0x0;var _0x1c3577=_0xc933[_0x12b3f1];return _0x1c3577;};'use strict';var multer=require(_0x3c93('0x0'));var util=require(_0x3c93('0x1'));var path=require(_0x3c93('0x2'));var timeout=require(_0x3c93('0x3'));var express=require(_0x3c93('0x4'));var router=express['Router']();var fs_extra=require(_0x3c93('0x5'));var auth=require(_0x3c93('0x6'));var interaction=require(_0x3c93('0x7'));var config=require(_0x3c93('0x8'));var controller=require(_0x3c93('0x9'));router['get']('/',auth[_0x3c93('0xa')](),controller[_0x3c93('0xb')]);router['get'](_0x3c93('0xc'),auth['isAuthenticated'](),controller[_0x3c93('0xd')]);router[_0x3c93('0xe')]('/',auth[_0x3c93('0xa')](),controller[_0x3c93('0xf')]);router[_0x3c93('0x10')](_0x3c93('0xc'),auth['isAuthenticated'](),controller['update']);router['delete'](_0x3c93('0xc'),auth[_0x3c93('0xa')](),controller[_0x3c93('0x11')]);module[_0x3c93('0x12')]=router;
\ No newline at end of file
+var _0x2c54=['/:id','isAuthenticated','show','post','create','put','update','delete','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get'];(function(_0x535406,_0x50261b){var _0x40fa36=function(_0x2ea21f){while(--_0x2ea21f){_0x535406['push'](_0x535406['shift']());}};_0x40fa36(++_0x50261b);}(_0x2c54,0x136));var _0x42c5=function(_0x13d934,_0x2a8f43){_0x13d934=_0x13d934-0x0;var _0x2c2d5d=_0x2c54[_0x13d934];return _0x2c2d5d;};'use strict';var multer=require(_0x42c5('0x0'));var util=require(_0x42c5('0x1'));var path=require(_0x42c5('0x2'));var timeout=require('connect-timeout');var express=require(_0x42c5('0x3'));var router=express[_0x42c5('0x4')]();var fs_extra=require(_0x42c5('0x5'));var auth=require(_0x42c5('0x6'));var interaction=require(_0x42c5('0x7'));var config=require(_0x42c5('0x8'));var controller=require('./cmContactHasItem.controller');router[_0x42c5('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x42c5('0x9')](_0x42c5('0xa'),auth[_0x42c5('0xb')](),controller[_0x42c5('0xc')]);router[_0x42c5('0xd')]('/',auth[_0x42c5('0xb')](),controller[_0x42c5('0xe')]);router[_0x42c5('0xf')](_0x42c5('0xa'),auth[_0x42c5('0xb')](),controller[_0x42c5('0x10')]);router[_0x42c5('0x11')](_0x42c5('0xa'),auth[_0x42c5('0xb')](),controller[_0x42c5('0x12')]);module[_0x42c5('0x13')]=router;
\ No newline at end of file
index 8e3f2a1..baf2a28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x959f=['getDataValue','type','select','parse','values','isArray','BOOLEAN','ENUM','voice','sequelize','exports','VIRTUAL','alias','STRING','setDataValue'];(function(_0x40cbce,_0x45870f){var _0x41dfd4=function(_0x4f832f){while(--_0x4f832f){_0x40cbce['push'](_0x40cbce['shift']());}};_0x41dfd4(++_0x45870f);}(_0x959f,0xcc));var _0xf959=function(_0x5df8cb,_0x354497){_0x5df8cb=_0x5df8cb-0x0;var _0x21f113=_0x959f[_0x5df8cb];return _0x21f113;};'use strict';var Sequelize=require(_0xf959('0x0'));var _=require('lodash');module[_0xf959('0x1')]={'name':{'type':Sequelize[_0xf959('0x2')],'get':function(_0x579150){return this['getDataValue'](_0xf959('0x3'));}},'alias':{'type':Sequelize[_0xf959('0x4')],'allowNull':![],'set':function(_0x39bd6a){this[_0xf959('0x5')](_0xf959('0x3'),_0x39bd6a?_0x39bd6a:this[_0xf959('0x6')]('name'));}},'type':{'type':Sequelize[_0xf959('0x4')],'allowNull':![]},'values':{'type':Sequelize['TEXT']('long'),'get':function(){if(this[_0xf959('0x6')](_0xf959('0x7'))===_0xf959('0x8')){return JSON[_0xf959('0x9')](this[_0xf959('0x6')](_0xf959('0xa')));}else{return this[_0xf959('0x6')](_0xf959('0xa'));}},'set':function(_0x5281a7){if(Array[_0xf959('0xb')](_0x5281a7)){this['setDataValue'](_0xf959('0xa'),JSON['stringify'](_0x5281a7));}else{this['setDataValue'](_0xf959('0xa'),_0x5281a7);}}},'required':{'type':Sequelize[_0xf959('0xc')],'defaultValue':![]},'clickToAction':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'actionType':{'type':Sequelize[_0xf959('0xd')](_0xf959('0xe'))}};
\ No newline at end of file
+var _0x2f29=['BOOLEAN','ENUM','sequelize','lodash','exports','VIRTUAL','getDataValue','alias','STRING','setDataValue','TEXT','type','select','parse','values','isArray','stringify'];(function(_0x582fe5,_0x51c720){var _0x492564=function(_0x491d6c){while(--_0x491d6c){_0x582fe5['push'](_0x582fe5['shift']());}};_0x492564(++_0x51c720);}(_0x2f29,0x189));var _0x92f2=function(_0x342baa,_0x4a110f){_0x342baa=_0x342baa-0x0;var _0x1208f3=_0x2f29[_0x342baa];return _0x1208f3;};'use strict';var Sequelize=require(_0x92f2('0x0'));var _=require(_0x92f2('0x1'));module[_0x92f2('0x2')]={'name':{'type':Sequelize[_0x92f2('0x3')],'get':function(_0x3b8bb8){return this[_0x92f2('0x4')](_0x92f2('0x5'));}},'alias':{'type':Sequelize[_0x92f2('0x6')],'allowNull':![],'set':function(_0xab5cf4){this[_0x92f2('0x7')](_0x92f2('0x5'),_0xab5cf4?_0xab5cf4:this['getDataValue']('name'));}},'type':{'type':Sequelize['STRING'],'allowNull':![]},'values':{'type':Sequelize[_0x92f2('0x8')]('long'),'get':function(){if(this[_0x92f2('0x4')](_0x92f2('0x9'))===_0x92f2('0xa')){return JSON[_0x92f2('0xb')](this[_0x92f2('0x4')](_0x92f2('0xc')));}else{return this[_0x92f2('0x4')]('values');}},'set':function(_0x3fe712){if(Array[_0x92f2('0xd')](_0x3fe712)){this['setDataValue'](_0x92f2('0xc'),JSON[_0x92f2('0xe')](_0x3fe712));}else{this['setDataValue'](_0x92f2('0xc'),_0x3fe712);}}},'required':{'type':Sequelize[_0x92f2('0xf')],'defaultValue':![]},'clickToAction':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'actionType':{'type':Sequelize[_0x92f2('0x10')]('voice')}};
\ No newline at end of file
index fb8e97b..203a45d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x962b=['params','include','body','find','create','Sequelize','TEXT','text','number','INTEGER','switch','BOOLEAN','defaultValue','sequelize','queryInterface','addColumn','cm_contacts','cf_%d','eml-format','rimraf','zip-dir','fast-json-patch','mustache','util','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','json','apply','reject','save','update','destroy','then','error','name','index','rawAttributes','fieldName','type','model','differenceBy','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','merge','map','VIRTUAL','filter','CmCustomField','includeAll','findAll','rows','catch','show'];(function(_0x2cd99c,_0x1ee4ff){var _0x192867=function(_0x19dc87){while(--_0x19dc87){_0x2cd99c['push'](_0x2cd99c['shift']());}};_0x192867(++_0x1ee4ff);}(_0x962b,0xba));var _0xb962=function(_0x31f5f4,_0x3f177){_0x31f5f4=_0x31f5f4-0x0;var _0x432fd2=_0x962b[_0x31f5f4];return _0x432fd2;};'use strict';var emlformat=require(_0xb962('0x0'));var rimraf=require(_0xb962('0x1'));var zipdir=require(_0xb962('0x2'));var jsonpatch=require(_0xb962('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xb962('0x4'));var util=require(_0xb962('0x5'));var path=require('path');var sox=require(_0xb962('0x6'));var csv=require(_0xb962('0x7'));var ejs=require(_0xb962('0x8'));var fs=require('fs');var fs_extra=require(_0xb962('0x9'));var _=require(_0xb962('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xb962('0xb'));var deskjs=require(_0xb962('0xc'));var toCsv=require(_0xb962('0x7'));var querystring=require('querystring');var Papa=require(_0xb962('0xd'));var Redis=require(_0xb962('0xe'));var authService=require(_0xb962('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xb962('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xb962('0x11'))('api');var utils=require(_0xb962('0x12'));var config=require(_0xb962('0x13'));var licenseUtil=require(_0xb962('0x14'));var db=require(_0xb962('0x15'))['db'];function respondWithStatusCode(_0x30f0cb,_0x8c3772){_0x8c3772=_0x8c3772||0xcc;return function(_0x5aba87){if(_0x5aba87){return _0x30f0cb[_0xb962('0x16')](_0x8c3772);}return _0x30f0cb[_0xb962('0x17')](_0x8c3772)[_0xb962('0x18')]();};}function respondWithResult(_0x3c1994,_0x26c597){_0x26c597=_0x26c597||0xc8;return function(_0x3805c8){if(_0x3805c8){return _0x3c1994[_0xb962('0x17')](_0x26c597)['json'](_0x3805c8);}};}function respondWithFilteredResult(_0x37f2fd,_0x54f063){return function(_0xec1af1){if(_0xec1af1){var _0xfa36b0=typeof _0x54f063[_0xb962('0x19')]===_0xb962('0x1a')&&typeof _0x54f063[_0xb962('0x1b')]===_0xb962('0x1a');var _0x24e63c=_0xec1af1[_0xb962('0x1c')];var _0x152dff=_0xfa36b0?0x0:_0x54f063[_0xb962('0x19')];var _0x4885b6=_0xfa36b0?_0xec1af1[_0xb962('0x1c')]:_0x54f063[_0xb962('0x19')]+_0x54f063[_0xb962('0x1b')];var _0x3ff531;if(_0x4885b6>=_0x24e63c){_0x4885b6=_0x24e63c;_0x3ff531=0xc8;}else{_0x3ff531=0xce;}_0x37f2fd[_0xb962('0x17')](_0x3ff531);return _0x37f2fd['set']('Content-Range',_0x152dff+'-'+_0x4885b6+'/'+_0x24e63c)[_0xb962('0x1d')](_0xec1af1);}return null;};}function patchUpdates(_0x4acb02){return function(_0xfc7ffd){try{jsonpatch[_0xb962('0x1e')](_0xfc7ffd,_0x4acb02,!![]);}catch(_0x48d7e9){return BPromise[_0xb962('0x1f')](_0x48d7e9);}return _0xfc7ffd[_0xb962('0x20')]();};}function saveUpdates(_0x7e6c17,_0x101869){return function(_0x37bc5a){if(_0x37bc5a){return _0x37bc5a[_0xb962('0x21')](_0x7e6c17)['then'](function(_0x2ca1a1){return _0x2ca1a1;});}return null;};}function removeEntity(_0x152983,_0x28b33c){return function(_0x3f99de){if(_0x3f99de){return _0x3f99de[_0xb962('0x22')]()[_0xb962('0x23')](function(){_0x152983[_0xb962('0x17')](0xcc)[_0xb962('0x18')]();});}};}function handleEntityNotFound(_0x530900,_0xee399){return function(_0x5f5ab2){if(!_0x5f5ab2){_0x530900[_0xb962('0x16')](0x194);}return _0x5f5ab2;};}function handleError(_0x49a4ea,_0x5a3028){_0x5a3028=_0x5a3028||0x1f4;return function(_0x52348f){logger[_0xb962('0x24')](_0x52348f['stack']);if(_0x52348f[_0xb962('0x25')]){delete _0x52348f[_0xb962('0x25')];}_0x49a4ea['status'](_0x5a3028)['send'](_0x52348f);};}exports[_0xb962('0x26')]=function(_0x1c4423,_0x3d0b0f){var _0x5c6a06={},_0x36a949={},_0x4e6b28={'count':0x0,'rows':[]};var _0x2b7ccb=_['map'](db['CmCustomField'][_0xb962('0x27')],function(_0x3b23b4){return{'name':_0x3b23b4[_0xb962('0x28')],'type':_0x3b23b4[_0xb962('0x29')]['key']};});_0x36a949[_0xb962('0x2a')]=_[_0xb962('0x2b')](_['map'](_0x2b7ccb,_0xb962('0x25')),[_0xb962('0x25')]);_0x36a949[_0xb962('0x2c')]=_[_0xb962('0x2d')](_0x1c4423['query']);_0x36a949['filters']=_['intersection'](_0x36a949[_0xb962('0x2a')],_0x36a949[_0xb962('0x2c')]);_0x5c6a06['attributes']=_[_0xb962('0x2e')](_0x36a949[_0xb962('0x2a')],qs[_0xb962('0x2f')](_0x1c4423['query'][_0xb962('0x2f')]));_0x5c6a06[_0xb962('0x30')]=_0x5c6a06[_0xb962('0x30')][_0xb962('0x31')]?_0x5c6a06[_0xb962('0x30')]:_0x36a949[_0xb962('0x2a')];if(!_0x1c4423[_0xb962('0x2c')][_0xb962('0x32')](_0xb962('0x33'))){_0x5c6a06[_0xb962('0x1b')]=qs['limit'](_0x1c4423[_0xb962('0x2c')][_0xb962('0x1b')]);_0x5c6a06[_0xb962('0x19')]=qs['offset'](_0x1c4423[_0xb962('0x2c')][_0xb962('0x19')]);}_0x5c6a06[_0xb962('0x34')]=qs[_0xb962('0x35')](_0x1c4423[_0xb962('0x2c')][_0xb962('0x35')]);_0x5c6a06[_0xb962('0x36')]=qs[_0xb962('0x37')](_['pick'](_0x1c4423[_0xb962('0x2c')],_0x36a949[_0xb962('0x37')]),_0x2b7ccb);if(_0x1c4423['query']['filter']){_0x5c6a06[_0xb962('0x36')]=_[_0xb962('0x38')](_0x5c6a06['where'],{'$or':_[_0xb962('0x39')](_0x2b7ccb,function(_0x6cd023){if(_0x6cd023[_0xb962('0x29')]!==_0xb962('0x3a')){var _0x2aec8a={};_0x2aec8a[_0x6cd023[_0xb962('0x25')]]={'$like':'%'+_0x1c4423['query'][_0xb962('0x3b')]+'%'};return _0x2aec8a;}})});}_0x5c6a06=_[_0xb962('0x38')]({},_0x5c6a06,_0x1c4423['options']);var _0x2015c8={'where':_0x5c6a06['where']};return db[_0xb962('0x3c')]['count'](_0x2015c8)[_0xb962('0x23')](function(_0x48e0de){_0x4e6b28[_0xb962('0x1c')]=_0x48e0de;if(_0x1c4423['query'][_0xb962('0x3d')]){_0x5c6a06['include']=[{'all':!![]}];}return db['CmCustomField'][_0xb962('0x3e')](_0x5c6a06);})[_0xb962('0x23')](function(_0x4e892c){_0x4e6b28[_0xb962('0x3f')]=_0x4e892c;return _0x4e6b28;})['then'](respondWithFilteredResult(_0x3d0b0f,_0x5c6a06))[_0xb962('0x40')](handleError(_0x3d0b0f,null));};exports[_0xb962('0x41')]=function(_0x4c3d0b,_0x5bdeba){var _0x35c0f8={'raw':!![],'where':{'id':_0x4c3d0b[_0xb962('0x42')]['id']}},_0x34ed19={};_0x34ed19[_0xb962('0x2a')]=_['keys'](db[_0xb962('0x3c')][_0xb962('0x27')]);_0x34ed19[_0xb962('0x2c')]=_[_0xb962('0x2d')](_0x4c3d0b[_0xb962('0x2c')]);_0x34ed19['filters']=_[_0xb962('0x2e')](_0x34ed19[_0xb962('0x2a')],_0x34ed19[_0xb962('0x2c')]);_0x35c0f8['attributes']=_[_0xb962('0x2e')](_0x34ed19[_0xb962('0x2a')],qs[_0xb962('0x2f')](_0x4c3d0b['query'][_0xb962('0x2f')]));_0x35c0f8[_0xb962('0x30')]=_0x35c0f8['attributes'][_0xb962('0x31')]?_0x35c0f8['attributes']:_0x34ed19[_0xb962('0x2a')];if(_0x4c3d0b[_0xb962('0x2c')][_0xb962('0x3d')]){_0x35c0f8[_0xb962('0x43')]=[{'all':!![]}];}_0x35c0f8=_['merge']({},_0x35c0f8,_0x4c3d0b['options']);return db[_0xb962('0x3c')]['find'](_0x35c0f8)[_0xb962('0x23')](handleEntityNotFound(_0x5bdeba,null))['then'](respondWithResult(_0x5bdeba,null))[_0xb962('0x40')](handleError(_0x5bdeba,null));};exports[_0xb962('0x21')]=function(_0x5ba0a7,_0x513875){if(_0x5ba0a7[_0xb962('0x44')]['id']){delete _0x5ba0a7[_0xb962('0x44')]['id'];}return db[_0xb962('0x3c')][_0xb962('0x45')]({'where':{'id':_0x5ba0a7[_0xb962('0x42')]['id']}})[_0xb962('0x23')](handleEntityNotFound(_0x513875,null))['then'](saveUpdates(_0x5ba0a7[_0xb962('0x44')],null))['then'](respondWithResult(_0x513875,null))['catch'](handleError(_0x513875,null));};exports[_0xb962('0x22')]=function(_0xd90f12,_0x2b576c){return db[_0xb962('0x3c')][_0xb962('0x45')]({'where':{'id':_0xd90f12['params']['id']}})[_0xb962('0x23')](handleEntityNotFound(_0x2b576c,null))[_0xb962('0x23')](removeEntity(_0x2b576c,null))[_0xb962('0x40')](handleError(_0x2b576c,null));};exports[_0xb962('0x46')]=function(_0x624ceb,_0x2e9338){var _0x29b57d;return db['sequelize']['transaction'](function(_0x80655){return db['CmCustomField'][_0xb962('0x46')](_0x624ceb[_0xb962('0x44')],{'transaction':_0x80655})[_0xb962('0x23')](function(_0x38a4a6){_0x29b57d=_0x38a4a6;var _0x1f990e={'type':db[_0xb962('0x47')][_0xb962('0x48')],'transaction':_0x80655};switch(_0x624ceb[_0xb962('0x44')][_0xb962('0x29')]){case _0xb962('0x49'):_0x1f990e['type']=db[_0xb962('0x47')][_0xb962('0x48')];break;case _0xb962('0x4a'):_0x1f990e[_0xb962('0x29')]=db[_0xb962('0x47')][_0xb962('0x4b')];break;case _0xb962('0x4c'):_0x1f990e[_0xb962('0x29')]=db[_0xb962('0x47')][_0xb962('0x4d')];_0x1f990e[_0xb962('0x4e')]=![];break;default:}return db[_0xb962('0x4f')][_0xb962('0x50')][_0xb962('0x51')](_0xb962('0x52'),util['format'](_0xb962('0x53'),_0x29b57d['id']),_0x1f990e);})['then'](function(){return _0x29b57d;});})[_0xb962('0x23')](respondWithResult(_0x2e9338,0xc9))[_0xb962('0x40')](handleError(_0x2e9338,null));};
\ No newline at end of file
+var _0xd734=['keys','length','include','find','body','create','sequelize','transaction','Sequelize','TEXT','number','INTEGER','switch','defaultValue','queryInterface','addColumn','cm_contacts','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','sox','ejs','fs-extra','lodash','squel','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','undefined','limit','count','Content-Range','json','save','update','destroy','then','status','error','name','send','index','map','CmCustomField','rawAttributes','fieldName','type','key','model','differenceBy','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','offset','sort','where','pick','filter','merge','options','includeAll','findAll','rows','catch','params'];(function(_0x48ac40,_0x1e3beb){var _0x55df02=function(_0x5e27d6){while(--_0x5e27d6){_0x48ac40['push'](_0x48ac40['shift']());}};_0x55df02(++_0x1e3beb);}(_0xd734,0x1b5));var _0x4d73=function(_0x3c1ff0,_0x3f338c){_0x3c1ff0=_0x3c1ff0-0x0;var _0x18db0d=_0xd734[_0x3c1ff0];return _0x18db0d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x4d73('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x4d73('0x1'));var rp=require(_0x4d73('0x2'));var moment=require(_0x4d73('0x3'));var BPromise=require(_0x4d73('0x4'));var Mustache=require(_0x4d73('0x5'));var util=require('util');var path=require('path');var sox=require(_0x4d73('0x6'));var csv=require('to-csv');var ejs=require(_0x4d73('0x7'));var fs=require('fs');var fs_extra=require(_0x4d73('0x8'));var _=require(_0x4d73('0x9'));var squel=require(_0x4d73('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x4d73('0xb'));var toCsv=require(_0x4d73('0xc'));var querystring=require(_0x4d73('0xd'));var Papa=require('papaparse');var Redis=require(_0x4d73('0xe'));var authService=require(_0x4d73('0xf'));var qs=require(_0x4d73('0x10'));var as=require(_0x4d73('0x11'));var hardwareService=require(_0x4d73('0x12'));var logger=require(_0x4d73('0x13'))(_0x4d73('0x14'));var utils=require(_0x4d73('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x4d73('0x16'));var db=require(_0x4d73('0x17'))['db'];function respondWithStatusCode(_0x249a81,_0x48c80a){_0x48c80a=_0x48c80a||0xcc;return function(_0x3cc693){if(_0x3cc693){return _0x249a81[_0x4d73('0x18')](_0x48c80a);}return _0x249a81['status'](_0x48c80a)[_0x4d73('0x19')]();};}function respondWithResult(_0x3c3c74,_0x42773c){_0x42773c=_0x42773c||0xc8;return function(_0x45c988){if(_0x45c988){return _0x3c3c74['status'](_0x42773c)['json'](_0x45c988);}};}function respondWithFilteredResult(_0xab70e6,_0x46d35e){return function(_0x164d6b){if(_0x164d6b){var _0x295a5b=typeof _0x46d35e['offset']===_0x4d73('0x1a')&&typeof _0x46d35e[_0x4d73('0x1b')]===_0x4d73('0x1a');var _0x1408b0=_0x164d6b[_0x4d73('0x1c')];var _0x35eaf3=_0x295a5b?0x0:_0x46d35e['offset'];var _0x439096=_0x295a5b?_0x164d6b['count']:_0x46d35e['offset']+_0x46d35e['limit'];var _0x5ee0f5;if(_0x439096>=_0x1408b0){_0x439096=_0x1408b0;_0x5ee0f5=0xc8;}else{_0x5ee0f5=0xce;}_0xab70e6['status'](_0x5ee0f5);return _0xab70e6['set'](_0x4d73('0x1d'),_0x35eaf3+'-'+_0x439096+'/'+_0x1408b0)[_0x4d73('0x1e')](_0x164d6b);}return null;};}function patchUpdates(_0x5d120d){return function(_0x5833f8){try{jsonpatch['apply'](_0x5833f8,_0x5d120d,!![]);}catch(_0x59aa7d){return BPromise['reject'](_0x59aa7d);}return _0x5833f8[_0x4d73('0x1f')]();};}function saveUpdates(_0xe54ae0,_0x5158f7){return function(_0x4e89fa){if(_0x4e89fa){return _0x4e89fa[_0x4d73('0x20')](_0xe54ae0)['then'](function(_0x4004ee){return _0x4004ee;});}return null;};}function removeEntity(_0x405f15,_0x2ba33f){return function(_0x40433b){if(_0x40433b){return _0x40433b[_0x4d73('0x21')]()[_0x4d73('0x22')](function(){_0x405f15[_0x4d73('0x23')](0xcc)[_0x4d73('0x19')]();});}};}function handleEntityNotFound(_0x2a3d73,_0x1f5a9a){return function(_0x50a949){if(!_0x50a949){_0x2a3d73[_0x4d73('0x18')](0x194);}return _0x50a949;};}function handleError(_0x466e10,_0x4fcff3){_0x4fcff3=_0x4fcff3||0x1f4;return function(_0x22efe9){logger[_0x4d73('0x24')](_0x22efe9['stack']);if(_0x22efe9[_0x4d73('0x25')]){delete _0x22efe9[_0x4d73('0x25')];}_0x466e10['status'](_0x4fcff3)[_0x4d73('0x26')](_0x22efe9);};}exports[_0x4d73('0x27')]=function(_0x407815,_0x680056){var _0xc1a78f={},_0x370f22={},_0x59ed6e={'count':0x0,'rows':[]};var _0x2a5993=_[_0x4d73('0x28')](db[_0x4d73('0x29')][_0x4d73('0x2a')],function(_0x5e8fc1){return{'name':_0x5e8fc1[_0x4d73('0x2b')],'type':_0x5e8fc1[_0x4d73('0x2c')][_0x4d73('0x2d')]};});_0x370f22[_0x4d73('0x2e')]=_[_0x4d73('0x2f')](_['map'](_0x2a5993,_0x4d73('0x25')),[_0x4d73('0x25')]);_0x370f22[_0x4d73('0x30')]=_['keys'](_0x407815['query']);_0x370f22[_0x4d73('0x31')]=_[_0x4d73('0x32')](_0x370f22[_0x4d73('0x2e')],_0x370f22[_0x4d73('0x30')]);_0xc1a78f[_0x4d73('0x33')]=_[_0x4d73('0x32')](_0x370f22['model'],qs['fields'](_0x407815['query'][_0x4d73('0x34')]));_0xc1a78f[_0x4d73('0x33')]=_0xc1a78f[_0x4d73('0x33')]['length']?_0xc1a78f[_0x4d73('0x33')]:_0x370f22['model'];if(!_0x407815[_0x4d73('0x30')][_0x4d73('0x35')](_0x4d73('0x36'))){_0xc1a78f[_0x4d73('0x1b')]=qs[_0x4d73('0x1b')](_0x407815[_0x4d73('0x30')][_0x4d73('0x1b')]);_0xc1a78f[_0x4d73('0x37')]=qs[_0x4d73('0x37')](_0x407815[_0x4d73('0x30')][_0x4d73('0x37')]);}_0xc1a78f['order']=qs[_0x4d73('0x38')](_0x407815['query'][_0x4d73('0x38')]);_0xc1a78f[_0x4d73('0x39')]=qs[_0x4d73('0x31')](_[_0x4d73('0x3a')](_0x407815['query'],_0x370f22[_0x4d73('0x31')]),_0x2a5993);if(_0x407815[_0x4d73('0x30')][_0x4d73('0x3b')]){_0xc1a78f[_0x4d73('0x39')]=_[_0x4d73('0x3c')](_0xc1a78f[_0x4d73('0x39')],{'$or':_[_0x4d73('0x28')](_0x2a5993,function(_0x84ec0e){if(_0x84ec0e[_0x4d73('0x2c')]!=='VIRTUAL'){var _0x48f53e={};_0x48f53e[_0x84ec0e[_0x4d73('0x25')]]={'$like':'%'+_0x407815[_0x4d73('0x30')]['filter']+'%'};return _0x48f53e;}})});}_0xc1a78f=_['merge']({},_0xc1a78f,_0x407815[_0x4d73('0x3d')]);var _0x4e0300={'where':_0xc1a78f[_0x4d73('0x39')]};return db[_0x4d73('0x29')][_0x4d73('0x1c')](_0x4e0300)[_0x4d73('0x22')](function(_0xf96cee){_0x59ed6e['count']=_0xf96cee;if(_0x407815[_0x4d73('0x30')][_0x4d73('0x3e')]){_0xc1a78f['include']=[{'all':!![]}];}return db['CmCustomField'][_0x4d73('0x3f')](_0xc1a78f);})[_0x4d73('0x22')](function(_0x300503){_0x59ed6e[_0x4d73('0x40')]=_0x300503;return _0x59ed6e;})['then'](respondWithFilteredResult(_0x680056,_0xc1a78f))[_0x4d73('0x41')](handleError(_0x680056,null));};exports['show']=function(_0x581dee,_0x1d38ff){var _0x7ade83={'raw':!![],'where':{'id':_0x581dee[_0x4d73('0x42')]['id']}},_0x5ec0d8={};_0x5ec0d8[_0x4d73('0x2e')]=_[_0x4d73('0x43')](db['CmCustomField'][_0x4d73('0x2a')]);_0x5ec0d8[_0x4d73('0x30')]=_[_0x4d73('0x43')](_0x581dee['query']);_0x5ec0d8[_0x4d73('0x31')]=_[_0x4d73('0x32')](_0x5ec0d8['model'],_0x5ec0d8[_0x4d73('0x30')]);_0x7ade83['attributes']=_[_0x4d73('0x32')](_0x5ec0d8[_0x4d73('0x2e')],qs[_0x4d73('0x34')](_0x581dee[_0x4d73('0x30')][_0x4d73('0x34')]));_0x7ade83[_0x4d73('0x33')]=_0x7ade83[_0x4d73('0x33')][_0x4d73('0x44')]?_0x7ade83[_0x4d73('0x33')]:_0x5ec0d8['model'];if(_0x581dee[_0x4d73('0x30')][_0x4d73('0x3e')]){_0x7ade83[_0x4d73('0x45')]=[{'all':!![]}];}_0x7ade83=_['merge']({},_0x7ade83,_0x581dee[_0x4d73('0x3d')]);return db[_0x4d73('0x29')][_0x4d73('0x46')](_0x7ade83)[_0x4d73('0x22')](handleEntityNotFound(_0x1d38ff,null))[_0x4d73('0x22')](respondWithResult(_0x1d38ff,null))[_0x4d73('0x41')](handleError(_0x1d38ff,null));};exports[_0x4d73('0x20')]=function(_0x9faf96,_0xaac909){if(_0x9faf96['body']['id']){delete _0x9faf96[_0x4d73('0x47')]['id'];}return db[_0x4d73('0x29')]['find']({'where':{'id':_0x9faf96[_0x4d73('0x42')]['id']}})[_0x4d73('0x22')](handleEntityNotFound(_0xaac909,null))['then'](saveUpdates(_0x9faf96[_0x4d73('0x47')],null))[_0x4d73('0x22')](respondWithResult(_0xaac909,null))[_0x4d73('0x41')](handleError(_0xaac909,null));};exports[_0x4d73('0x21')]=function(_0x58a7f0,_0x125674){return db[_0x4d73('0x29')][_0x4d73('0x46')]({'where':{'id':_0x58a7f0[_0x4d73('0x42')]['id']}})[_0x4d73('0x22')](handleEntityNotFound(_0x125674,null))['then'](removeEntity(_0x125674,null))[_0x4d73('0x41')](handleError(_0x125674,null));};exports[_0x4d73('0x48')]=function(_0x3fd56d,_0x462f3c){var _0x4530fe;return db[_0x4d73('0x49')][_0x4d73('0x4a')](function(_0x6f6f46){return db[_0x4d73('0x29')][_0x4d73('0x48')](_0x3fd56d[_0x4d73('0x47')],{'transaction':_0x6f6f46})[_0x4d73('0x22')](function(_0x42e0c3){_0x4530fe=_0x42e0c3;var _0x5d9f31={'type':db[_0x4d73('0x4b')][_0x4d73('0x4c')],'transaction':_0x6f6f46};switch(_0x3fd56d[_0x4d73('0x47')]['type']){case'text':_0x5d9f31[_0x4d73('0x2c')]=db[_0x4d73('0x4b')][_0x4d73('0x4c')];break;case _0x4d73('0x4d'):_0x5d9f31[_0x4d73('0x2c')]=db[_0x4d73('0x4b')][_0x4d73('0x4e')];break;case _0x4d73('0x4f'):_0x5d9f31[_0x4d73('0x2c')]=db[_0x4d73('0x4b')]['BOOLEAN'];_0x5d9f31[_0x4d73('0x50')]=![];break;default:}return db[_0x4d73('0x49')][_0x4d73('0x51')][_0x4d73('0x52')](_0x4d73('0x53'),util['format']('cf_%d',_0x4530fe['id']),_0x5d9f31);})[_0x4d73('0x22')](function(){return _0x4530fe;});})['then'](respondWithResult(_0x462f3c,0xc9))[_0x4d73('0x41')](handleError(_0x462f3c,null));};
\ No newline at end of file
index b0607f8..c0b61d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb722=['../../config/logger','api','bluebird','request-promise','path','rimraf','./cmCustomField.attributes','exports','define','CmCustomField','util'];(function(_0x3ce937,_0x568d7d){var _0x41d2fa=function(_0x19a409){while(--_0x19a409){_0x3ce937['push'](_0x3ce937['shift']());}};_0x41d2fa(++_0x568d7d);}(_0xb722,0x1a1));var _0x2b72=function(_0x273174,_0x4b5928){_0x273174=_0x273174-0x0;var _0x46c43d=_0xb722[_0x273174];return _0x46c43d;};'use strict';var _=require('lodash');var util=require(_0x2b72('0x0'));var logger=require(_0x2b72('0x1'))(_0x2b72('0x2'));var moment=require('moment');var BPromise=require(_0x2b72('0x3'));var rp=require(_0x2b72('0x4'));var fs=require('fs');var path=require(_0x2b72('0x5'));var rimraf=require(_0x2b72('0x6'));var config=require('../../config/environment');var attributes=require(_0x2b72('0x7'));module[_0x2b72('0x8')]=function(_0x370b0d,_0x5b51c6){return _0x370b0d[_0x2b72('0x9')](_0x2b72('0xa'),attributes,{'tableName':'cm_custom_fields','paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0048=['../../config/logger','moment','request-promise','path','../../config/environment','./cmCustomField.attributes','exports','define','cm_custom_fields','lodash','util'];(function(_0x3f87a9,_0x5248fb){var _0x2cd417=function(_0x47d09c){while(--_0x47d09c){_0x3f87a9['push'](_0x3f87a9['shift']());}};_0x2cd417(++_0x5248fb);}(_0x0048,0x82));var _0x8004=function(_0x129e27,_0x4f87d3){_0x129e27=_0x129e27-0x0;var _0x802f6b=_0x0048[_0x129e27];return _0x802f6b;};'use strict';var _=require(_0x8004('0x0'));var util=require(_0x8004('0x1'));var logger=require(_0x8004('0x2'))('api');var moment=require(_0x8004('0x3'));var BPromise=require('bluebird');var rp=require(_0x8004('0x4'));var fs=require('fs');var path=require(_0x8004('0x5'));var rimraf=require('rimraf');var config=require(_0x8004('0x6'));var attributes=require(_0x8004('0x7'));module[_0x8004('0x8')]=function(_0x333e19,_0x37ee12){return _0x333e19[_0x8004('0x9')]('CmCustomField',attributes,{'tableName':_0x8004('0xa'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b67dafc..a6e09c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e39=['message','info','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','request','then','CmCustomField,\x20%s,\x20%s','CmCustomField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code'];(function(_0x4a8d49,_0x56de5b){var _0x18aa2a=function(_0x18f998){while(--_0x18f998){_0x4a8d49['push'](_0x4a8d49['shift']());}};_0x18aa2a(++_0x56de5b);}(_0x4e39,0x14d));var _0x94e3=function(_0x4702ee,_0xaf6a45){_0x4702ee=_0x4702ee-0x0;var _0x62ca7d=_0x4e39[_0x4702ee];return _0x62ca7d;};'use strict';var _=require(_0x94e3('0x0'));var util=require(_0x94e3('0x1'));var moment=require('moment');var BPromise=require(_0x94e3('0x2'));var rs=require(_0x94e3('0x3'));var fs=require('fs');var Redis=require(_0x94e3('0x4'));var db=require(_0x94e3('0x5'))['db'];var utils=require(_0x94e3('0x6'));var logger=require(_0x94e3('0x7'))(_0x94e3('0x8'));var config=require('../../config/environment');var jayson=require(_0x94e3('0x9'));var client=jayson['client'][_0x94e3('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2754e8,_0xd1cb6f,_0x5f55a9){return new BPromise(function(_0x103b2b,_0x8f229c){return client[_0x94e3('0xb')](_0x2754e8,_0x5f55a9)[_0x94e3('0xc')](function(_0x2cc24f){logger['info'](_0x94e3('0xd'),_0xd1cb6f,'request\x20sent');logger['debug'](_0x94e3('0xe'),_0xd1cb6f,_0x94e3('0xf'),JSON[_0x94e3('0x10')](_0x2cc24f));if(_0x2cc24f[_0x94e3('0x11')]){if(_0x2cc24f[_0x94e3('0x11')][_0x94e3('0x12')]===0x1f4){logger[_0x94e3('0x11')](_0x94e3('0xd'),_0xd1cb6f,_0x2cc24f[_0x94e3('0x11')][_0x94e3('0x13')]);return _0x8f229c(_0x2cc24f[_0x94e3('0x11')][_0x94e3('0x13')]);}logger[_0x94e3('0x11')](_0x94e3('0xd'),_0xd1cb6f,_0x2cc24f[_0x94e3('0x11')]['message']);return _0x103b2b(_0x2cc24f[_0x94e3('0x11')]['message']);}else{logger[_0x94e3('0x14')]('CmCustomField,\x20%s,\x20%s',_0xd1cb6f,_0x94e3('0xf'));_0x103b2b(_0x2cc24f['result'][_0x94e3('0x13')]);}})[_0x94e3('0x15')](function(_0x3c59e1){logger[_0x94e3('0x11')](_0x94e3('0xd'),_0xd1cb6f,_0x3c59e1);_0x8f229c(_0x3c59e1);});});}
\ No newline at end of file
+var _0x47ce=['../../config/logger','rpc','client','http','request','then','info','CmCustomField,\x20%s,\x20%s','CmCustomField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x5051b8,_0x593367){var _0x5dbe40=function(_0x110fba){while(--_0x110fba){_0x5051b8['push'](_0x5051b8['shift']());}};_0x5dbe40(++_0x593367);}(_0x47ce,0x82));var _0xe47c=function(_0x4ebc2a,_0x3e9a27){_0x4ebc2a=_0x4ebc2a-0x0;var _0x5a083a=_0x47ce[_0x4ebc2a];return _0x5a083a;};'use strict';var _=require(_0xe47c('0x0'));var util=require(_0xe47c('0x1'));var moment=require(_0xe47c('0x2'));var BPromise=require(_0xe47c('0x3'));var rs=require(_0xe47c('0x4'));var fs=require('fs');var Redis=require(_0xe47c('0x5'));var db=require(_0xe47c('0x6'))['db'];var utils=require(_0xe47c('0x7'));var logger=require(_0xe47c('0x8'))(_0xe47c('0x9'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xe47c('0xa')][_0xe47c('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x652dd2,_0x3a13e4,_0x3b0925){return new BPromise(function(_0x4bc10d,_0x2d20e1){return client[_0xe47c('0xc')](_0x652dd2,_0x3b0925)[_0xe47c('0xd')](function(_0x2fb904){logger[_0xe47c('0xe')](_0xe47c('0xf'),_0x3a13e4,'request\x20sent');logger['debug'](_0xe47c('0x10'),_0x3a13e4,_0xe47c('0x11'),JSON[_0xe47c('0x12')](_0x2fb904));if(_0x2fb904['error']){if(_0x2fb904[_0xe47c('0x13')][_0xe47c('0x14')]===0x1f4){logger[_0xe47c('0x13')](_0xe47c('0xf'),_0x3a13e4,_0x2fb904[_0xe47c('0x13')][_0xe47c('0x15')]);return _0x2d20e1(_0x2fb904[_0xe47c('0x13')][_0xe47c('0x15')]);}logger[_0xe47c('0x13')]('CmCustomField,\x20%s,\x20%s',_0x3a13e4,_0x2fb904[_0xe47c('0x13')][_0xe47c('0x15')]);return _0x4bc10d(_0x2fb904[_0xe47c('0x13')][_0xe47c('0x15')]);}else{logger['info'](_0xe47c('0xf'),_0x3a13e4,_0xe47c('0x11'));_0x4bc10d(_0x2fb904['result'][_0xe47c('0x15')]);}})[_0xe47c('0x16')](function(_0x35a877){logger[_0xe47c('0x13')](_0xe47c('0xf'),_0x3a13e4,_0x35a877);_0x2d20e1(_0x35a877);});});}
\ No newline at end of file
index 196d312..f4799b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb39f=['get','/:id','post','update','delete','exports','multer','util','path','connect-timeout','../../components/auth/service','../../config/environment','./cmCustomField.controller','isAuthenticated','index'];(function(_0x1e381c,_0x47b5b9){var _0x9b5ea9=function(_0x6d2be5){while(--_0x6d2be5){_0x1e381c['push'](_0x1e381c['shift']());}};_0x9b5ea9(++_0x47b5b9);}(_0xb39f,0x1e6));var _0xfb39=function(_0x24b2ac,_0x254ba8){_0x24b2ac=_0x24b2ac-0x0;var _0x51a158=_0xb39f[_0x24b2ac];return _0x51a158;};'use strict';var multer=require(_0xfb39('0x0'));var util=require(_0xfb39('0x1'));var path=require(_0xfb39('0x2'));var timeout=require(_0xfb39('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xfb39('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xfb39('0x5'));var controller=require(_0xfb39('0x6'));router['get']('/',auth[_0xfb39('0x7')](),controller[_0xfb39('0x8')]);router[_0xfb39('0x9')](_0xfb39('0xa'),auth['isAuthenticated'](),controller['show']);router[_0xfb39('0xb')]('/',auth[_0xfb39('0x7')](),controller['create']);router['put']('/:id',auth[_0xfb39('0x7')](),controller[_0xfb39('0xc')]);router[_0xfb39('0xd')](_0xfb39('0xa'),auth[_0xfb39('0x7')](),controller['destroy']);module[_0xfb39('0xe')]=router;
\ No newline at end of file
+var _0x6b27=['../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/:id','show','post','create','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra'];(function(_0x25c48c,_0x4307ef){var _0x190470=function(_0x57f1f5){while(--_0x57f1f5){_0x25c48c['push'](_0x25c48c['shift']());}};_0x190470(++_0x4307ef);}(_0x6b27,0x176));var _0x76b2=function(_0x1d9857,_0x5032e1){_0x1d9857=_0x1d9857-0x0;var _0x2a5021=_0x6b27[_0x1d9857];return _0x2a5021;};'use strict';var multer=require(_0x76b2('0x0'));var util=require(_0x76b2('0x1'));var path=require('path');var timeout=require(_0x76b2('0x2'));var express=require(_0x76b2('0x3'));var router=express[_0x76b2('0x4')]();var fs_extra=require(_0x76b2('0x5'));var auth=require(_0x76b2('0x6'));var interaction=require(_0x76b2('0x7'));var config=require(_0x76b2('0x8'));var controller=require('./cmCustomField.controller');router['get']('/',auth[_0x76b2('0x9')](),controller[_0x76b2('0xa')]);router[_0x76b2('0xb')](_0x76b2('0xc'),auth[_0x76b2('0x9')](),controller[_0x76b2('0xd')]);router[_0x76b2('0xe')]('/',auth['isAuthenticated'](),controller[_0x76b2('0xf')]);router['put'](_0x76b2('0xc'),auth[_0x76b2('0x9')](),controller['update']);router[_0x76b2('0x10')](_0x76b2('0xc'),auth[_0x76b2('0x9')](),controller[_0x76b2('0x11')]);module[_0x76b2('0x12')]=router;
\ No newline at end of file
index 14800bd..9c9336f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa744=['moment','BOOLEAN','DATE','format','INTEGER','STRING','UNSIGNED','contactListQueue'];(function(_0x205e83,_0x2df5a4){var _0x10bb19=function(_0x41a375){while(--_0x41a375){_0x205e83['push'](_0x205e83['shift']());}};_0x10bb19(++_0x2df5a4);}(_0xa744,0x150));var _0x4a74=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xa744[_0x20a584];return _0x4b41a8;};'use strict';var moment=require(_0x4a74('0x0'));var Sequelize=require('sequelize');module['exports']={'phone':{'type':Sequelize['STRING'],'allowNull':![]},'active':{'type':Sequelize[_0x4a74('0x1')],'defaultValue':![]},'scheduledat':{'type':Sequelize[_0x4a74('0x2')],'defaultValue':moment()[_0x4a74('0x3')]('YYYY-MM-DD\x20HH:mm:ss')},'countbusyretry':{'type':Sequelize[_0x4a74('0x4')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x4a74('0x4')],'defaultValue':0x0},'callback':{'type':Sequelize[_0x4a74('0x1')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x4a74('0x5')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x4a74('0x2')]},'priority':{'type':Sequelize['INTEGER'](0x2)[_0x4a74('0x6')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize[_0x4a74('0x1')],'defaultValue':![]},'ContactId':{'type':Sequelize[_0x4a74('0x4')],'unique':'contactListQueue'},'ListId':{'type':Sequelize['INTEGER'],'unique':_0x4a74('0x7')},'UserId':{'type':Sequelize[_0x4a74('0x4')]},'VoiceQueueId':{'type':Sequelize[_0x4a74('0x4')],'unique':_0x4a74('0x7')},'CampaignId':{'type':Sequelize[_0x4a74('0x4')]},'countnosuchnumberretry':{'type':Sequelize[_0x4a74('0x4')],'defaultValue':0x0},'countdropretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x4a74('0x4')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x4a74('0x4')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x4a74('0x4')],'defaultValue':0x0},'OrderBy':{'type':Sequelize[_0x4a74('0x4')],'allowNull':!![],'defaultValue':0x0},'dialTimezone':{'type':Sequelize[_0x4a74('0x5')]},'recallmeNotifiedDate':{'type':Sequelize[_0x4a74('0x2')],'allowNull':!![],'defaultValue':null}};
\ No newline at end of file
+var _0xb8e1=['moment','exports','STRING','BOOLEAN','DATE','format','YYYY-MM-DD\x20HH:mm:ss','INTEGER','contactListQueue'];(function(_0x2b0a86,_0x2ecebd){var _0x955940=function(_0x1988f8){while(--_0x1988f8){_0x2b0a86['push'](_0x2b0a86['shift']());}};_0x955940(++_0x2ecebd);}(_0xb8e1,0x13b));var _0x1b8e=function(_0x4e9c5e,_0x1d5f1b){_0x4e9c5e=_0x4e9c5e-0x0;var _0x5df9d3=_0xb8e1[_0x4e9c5e];return _0x5df9d3;};'use strict';var moment=require(_0x1b8e('0x0'));var Sequelize=require('sequelize');module[_0x1b8e('0x1')]={'phone':{'type':Sequelize[_0x1b8e('0x2')],'allowNull':![]},'active':{'type':Sequelize[_0x1b8e('0x3')],'defaultValue':![]},'scheduledat':{'type':Sequelize[_0x1b8e('0x4')],'defaultValue':moment()[_0x1b8e('0x5')](_0x1b8e('0x6'))},'countbusyretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x1b8e('0x7')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x1b8e('0x7')],'defaultValue':0x0},'callback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize['STRING'],'defaultValue':null},'callbackat':{'type':Sequelize[_0x1b8e('0x4')]},'priority':{'type':Sequelize[_0x1b8e('0x7')](0x2)['UNSIGNED'],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'ContactId':{'type':Sequelize[_0x1b8e('0x7')],'unique':_0x1b8e('0x8')},'ListId':{'type':Sequelize['INTEGER'],'unique':_0x1b8e('0x8')},'UserId':{'type':Sequelize['INTEGER']},'VoiceQueueId':{'type':Sequelize[_0x1b8e('0x7')],'unique':'contactListQueue'},'CampaignId':{'type':Sequelize[_0x1b8e('0x7')]},'countnosuchnumberretry':{'type':Sequelize[_0x1b8e('0x7')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x1b8e('0x7')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x1b8e('0x7')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x1b8e('0x7')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x1b8e('0x7')],'defaultValue':0x0},'OrderBy':{'type':Sequelize[_0x1b8e('0x7')],'allowNull':!![],'defaultValue':0x0},'dialTimezone':{'type':Sequelize[_0x1b8e('0x2')]},'recallmeNotifiedDate':{'type':Sequelize[_0x1b8e('0x4')],'allowNull':!![],'defaultValue':null}};
\ No newline at end of file
index cc8f875..bf82cfa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ab0=['find','catch','create','body','update','describe','destroy','VoiceQueueId','VoiceQueue','Campaign','CampaignId','omit','dataValues','updatedAt','state','statedesc','deleted','campaign','membername','user','UserId','deletedat','YYYY-MM-DD\x20HH:mm:ss','calleridnum','queue','ivr','CmContact','ContactId','firstName','lastName','isNil','finally','CmHopperFinal','end','getPreview','getVoiceQueues','outbound','preview','dialOrderByScheduledAt','dialPreviewAutoRecallMe','sequelize','transaction','format','value','direction','prev','isEmpty','hopperIds','ASC','DESC','literal','COALESCE(CmHopper.UserId,\x200)\x20ASC','scheduledAt','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne','scheduledat','phone','LOCK','UPDATE','Contact','Company','CmList','List','dialActive','recallme','isNumber','CmHopper,\x20%s,\x20%s,\x20%s','getOpenContacts','entity\x20not\x20found','getTimezones','push','utcOffset','getTimezone','timezones','lodash','../../components/parsers/qs','../../config/logger','api','../../config/environment','json','offset','limit','undefined','count','status','set','Content-Range','then','error','stack','name','send','index','map','CmHopper','rawAttributes','fieldName','key','query','filters','intersection','concat','$or','$gt','$gte','$lt','$lte','$ne','$eq','$not','$between','$in','$notIn','$like','$notLike','$contains','$contained','$any','attributes','fields','length','model','hasOwnProperty','nolimit','order','sort','pick','filter','merge','where','type','includeAll','include','findAll','rows','show','params','keys','options'];(function(_0x11d5a1,_0x560e85){var _0x4c1187=function(_0x455411){while(--_0x455411){_0x11d5a1['push'](_0x11d5a1['shift']());}};_0x4c1187(++_0x560e85);}(_0x4ab0,0xd5));var _0x04ab=function(_0xe21d41,_0x4ffb1a){_0xe21d41=_0xe21d41-0x0;var _0x204834=_0x4ab0[_0xe21d41];return _0x204834;};'use strict';var moment=require('moment');var _=require(_0x04ab('0x0'));var qs=require(_0x04ab('0x1'));var logger=require(_0x04ab('0x2'))(_0x04ab('0x3'));var shared=require(_0x04ab('0x4'));var db=require('../../mysqldb')['db'];function respondWithResult(_0x4c3a53,_0x45dfee){_0x45dfee=_0x45dfee||0xc8;return function(_0xb1bf2d){if(_0xb1bf2d){return _0x4c3a53['status'](_0x45dfee)[_0x04ab('0x5')](_0xb1bf2d);}};}function respondWithFilteredResult(_0x2c5730,_0x4edd2e){return function(_0x3f5901){if(_0x3f5901){var _0x293f1d=typeof _0x4edd2e[_0x04ab('0x6')]==='undefined'&&typeof _0x4edd2e[_0x04ab('0x7')]===_0x04ab('0x8');var _0x13fde9=_0x3f5901[_0x04ab('0x9')];var _0x4dc264=_0x293f1d?0x0:_0x4edd2e[_0x04ab('0x6')];var _0x3608b7=_0x293f1d?_0x3f5901[_0x04ab('0x9')]:_0x4edd2e[_0x04ab('0x6')]+_0x4edd2e['limit'];var _0x3f91fe;if(_0x3608b7>=_0x13fde9){_0x3608b7=_0x13fde9;_0x3f91fe=0xc8;}else{_0x3f91fe=0xce;}_0x2c5730[_0x04ab('0xa')](_0x3f91fe);return _0x2c5730[_0x04ab('0xb')](_0x04ab('0xc'),_0x4dc264+'-'+_0x3608b7+'/'+_0x13fde9)[_0x04ab('0x5')](_0x3f5901);}return null;};}function saveUpdates(_0x386d0a,_0x4a6b39){return function(_0x710503){if(_0x710503){return _0x710503['update'](_0x386d0a)[_0x04ab('0xd')](function(_0xef8710){return _0xef8710;});}return null;};}function handleEntityNotFound(_0x2abdf8,_0x428798){return function(_0x4f0da1){if(!_0x4f0da1){_0x2abdf8['sendStatus'](0x194);}return _0x4f0da1;};}function handleError(_0x58aef3,_0x103ca8){_0x103ca8=_0x103ca8||0x1f4;return function(_0x3cee44){logger[_0x04ab('0xe')](_0x3cee44[_0x04ab('0xf')]);if(_0x3cee44[_0x04ab('0x10')]){delete _0x3cee44[_0x04ab('0x10')];}_0x58aef3[_0x04ab('0xa')](_0x103ca8)[_0x04ab('0x11')](_0x3cee44);};}exports[_0x04ab('0x12')]=function(_0x205600,_0x5ce43c){var _0x45c328={},_0x83ab27={},_0x292eae={'count':0x0,'rows':[]};var _0xea243f=_[_0x04ab('0x13')](db[_0x04ab('0x14')][_0x04ab('0x15')],function(_0x1d3210){return{'name':_0x1d3210[_0x04ab('0x16')],'type':_0x1d3210['type'][_0x04ab('0x17')]};});_0x83ab27['model']=_[_0x04ab('0x13')](_0xea243f,_0x04ab('0x10'));_0x83ab27[_0x04ab('0x18')]=_['keys'](_0x205600[_0x04ab('0x18')]);_0x83ab27[_0x04ab('0x19')]=_[_0x04ab('0x1a')](_0x83ab27['model'],_0x83ab27['query']);_0x83ab27[_0x04ab('0x19')]=_[_0x04ab('0x1b')](_0x83ab27['filters'],['$and',_0x04ab('0x1c'),_0x04ab('0x1d'),_0x04ab('0x1e'),_0x04ab('0x1f'),_0x04ab('0x20'),_0x04ab('0x21'),_0x04ab('0x22'),_0x04ab('0x23'),_0x04ab('0x24'),'$notBetween',_0x04ab('0x25'),_0x04ab('0x26'),_0x04ab('0x27'),_0x04ab('0x28'),'$iLike','$notILike',_0x04ab('0x27'),'$overlap',_0x04ab('0x29'),_0x04ab('0x2a'),_0x04ab('0x2b')]);_0x45c328[_0x04ab('0x2c')]=_[_0x04ab('0x1a')](_0x83ab27['model'],qs['fields'](_0x205600[_0x04ab('0x18')][_0x04ab('0x2d')]));_0x45c328[_0x04ab('0x2c')]=_0x45c328[_0x04ab('0x2c')][_0x04ab('0x2e')]?_0x45c328[_0x04ab('0x2c')]:_0x83ab27[_0x04ab('0x2f')];if(!_0x205600[_0x04ab('0x18')][_0x04ab('0x30')](_0x04ab('0x31'))){_0x45c328[_0x04ab('0x7')]=qs[_0x04ab('0x7')](_0x205600[_0x04ab('0x18')]['limit']);_0x45c328[_0x04ab('0x6')]=qs[_0x04ab('0x6')](_0x205600['query'][_0x04ab('0x6')]);}_0x45c328[_0x04ab('0x32')]=qs['sort'](_0x205600[_0x04ab('0x18')][_0x04ab('0x33')]);_0x45c328['where']=qs[_0x04ab('0x19')](_[_0x04ab('0x34')](_0x205600[_0x04ab('0x18')],_0x83ab27[_0x04ab('0x19')]),_0xea243f);if(_0x205600[_0x04ab('0x18')][_0x04ab('0x35')]){_0x45c328['where']=_[_0x04ab('0x36')](_0x45c328[_0x04ab('0x37')],{'$or':_[_0x04ab('0x13')](_0xea243f,function(_0x4fb442){if(_0x4fb442[_0x04ab('0x38')]!=='VIRTUAL'){var _0x53c52b={};_0x53c52b[_0x4fb442[_0x04ab('0x10')]]={'$like':'%'+_0x205600[_0x04ab('0x18')]['filter']+'%'};return _0x53c52b;}})});}_0x45c328=_[_0x04ab('0x36')]({},_0x45c328,_0x205600['options']);var _0x3c66a8={'where':_0x45c328[_0x04ab('0x37')]};return db[_0x04ab('0x14')][_0x04ab('0x9')](_0x3c66a8)[_0x04ab('0xd')](function(_0x4018fa){_0x292eae[_0x04ab('0x9')]=_0x4018fa;if(_0x205600[_0x04ab('0x18')][_0x04ab('0x39')]){_0x45c328[_0x04ab('0x3a')]=[{'all':!![]}];}return db[_0x04ab('0x14')][_0x04ab('0x3b')](_0x45c328);})['then'](function(_0x574c6e){_0x292eae[_0x04ab('0x3c')]=_0x574c6e;return _0x292eae;})['then'](respondWithFilteredResult(_0x5ce43c,_0x45c328))['catch'](handleError(_0x5ce43c,null));};exports[_0x04ab('0x3d')]=function(_0x206f0d,_0x369e03){var _0x4327b9={'raw':!![],'where':{'id':_0x206f0d[_0x04ab('0x3e')]['id']}},_0x5b6937={};_0x5b6937[_0x04ab('0x2f')]=_[_0x04ab('0x3f')](db[_0x04ab('0x14')]['rawAttributes']);_0x5b6937[_0x04ab('0x18')]=_[_0x04ab('0x3f')](_0x206f0d[_0x04ab('0x18')]);_0x5b6937[_0x04ab('0x19')]=_[_0x04ab('0x1a')](_0x5b6937[_0x04ab('0x2f')],_0x5b6937[_0x04ab('0x18')]);_0x4327b9[_0x04ab('0x2c')]=_['intersection'](_0x5b6937['model'],qs[_0x04ab('0x2d')](_0x206f0d[_0x04ab('0x18')][_0x04ab('0x2d')]));_0x4327b9[_0x04ab('0x2c')]=_0x4327b9[_0x04ab('0x2c')]['length']?_0x4327b9[_0x04ab('0x2c')]:_0x5b6937[_0x04ab('0x2f')];if(_0x206f0d[_0x04ab('0x18')]['includeAll']){_0x4327b9[_0x04ab('0x3a')]=[{'all':!![]}];}_0x4327b9=_[_0x04ab('0x36')]({},_0x4327b9,_0x206f0d[_0x04ab('0x40')]);return db[_0x04ab('0x14')][_0x04ab('0x41')](_0x4327b9)[_0x04ab('0xd')](handleEntityNotFound(_0x369e03,null))[_0x04ab('0xd')](respondWithResult(_0x369e03,null))[_0x04ab('0x42')](handleError(_0x369e03,null));};exports[_0x04ab('0x43')]=function(_0x183464,_0x49999e){return db[_0x04ab('0x14')][_0x04ab('0x43')](_0x183464[_0x04ab('0x44')],{})[_0x04ab('0xd')](respondWithResult(_0x49999e,0xc9))[_0x04ab('0x42')](handleError(_0x49999e,null));};exports[_0x04ab('0x45')]=function(_0x4b4536,_0x272689){if(_0x4b4536[_0x04ab('0x44')]['id']){delete _0x4b4536[_0x04ab('0x44')]['id'];}return db[_0x04ab('0x14')]['find']({'where':{'id':_0x4b4536[_0x04ab('0x3e')]['id']}})[_0x04ab('0xd')](handleEntityNotFound(_0x272689,null))[_0x04ab('0xd')](saveUpdates(_0x4b4536[_0x04ab('0x44')],null))[_0x04ab('0xd')](respondWithResult(_0x272689,null))['catch'](handleError(_0x272689,null));};exports[_0x04ab('0x46')]=function(_0x15b995,_0x551f94){return db['CmHopper'][_0x04ab('0x46')]()[_0x04ab('0xd')](respondWithResult(_0x551f94,null))[_0x04ab('0x42')](handleError(_0x551f94,null));};exports[_0x04ab('0x47')]=function(_0x1c4aa2,_0x3a9056){var _0xae46c7;var _0x5d528f=_0x1c4aa2[_0x04ab('0x3e')]['id'];return db[_0x04ab('0x14')][_0x04ab('0x41')]({'where':{'id':_0x1c4aa2['params']['id']}})[_0x04ab('0xd')](handleEntityNotFound(_0x3a9056,null))[_0x04ab('0xd')](function(_0x4e92f5){if(_0x4e92f5){return _0x4e92f5[_0x04ab('0x47')]()['then'](function(_0xc9db25){return _0xc9db25;});}})['then'](function(_0x117963){_0xae46c7=_0x117963;if(_0x117963){if(_0x117963['VoiceQueueId']||_0x117963['CampaignId']){return db[_0x117963[_0x04ab('0x48')]?_0x04ab('0x49'):_0x04ab('0x4a')]['find']({'where':{'id':_0x117963['VoiceQueueId']?_0x117963[_0x04ab('0x48')]:_0x117963[_0x04ab('0x4b')]},'attributes':['id',_0x04ab('0x10')],'raw':!![]});}}})['then'](function(_0x2907b1){var _0x58e7d4={};if(_0x2907b1){_[_0x04ab('0x36')](_0x58e7d4,_[_0x04ab('0x4c')](_0xae46c7[_0x04ab('0x4d')],['createdAt',_0x04ab('0x4e'),'id']));_0x58e7d4[_0x04ab('0x4f')]=0x15;_0x58e7d4[_0x04ab('0x50')]=_0x04ab('0x51');_0x58e7d4[_0x04ab('0x52')]=_0x2907b1[_0x04ab('0x10')];_0x58e7d4[_0x04ab('0x53')]=_0x1c4aa2[_0x04ab('0x54')][_0x04ab('0x10')];_0x58e7d4[_0x04ab('0x55')]=_0x1c4aa2[_0x04ab('0x54')]['id'];_0x58e7d4['deleted']=!![];_0x58e7d4[_0x04ab('0x56')]=moment()['format'](_0x04ab('0x57'));_0x58e7d4[_0x04ab('0x58')]=_0xae46c7['phone'];_0x58e7d4['campaigntype']=_0xae46c7[_0x04ab('0x48')]?_0x04ab('0x59'):_0x04ab('0x5a');return db[_0x04ab('0x5b')][_0x04ab('0x41')]({'where':{'id':_0x58e7d4[_0x04ab('0x5c')]},'attributes':[_0x04ab('0x5d'),_0x04ab('0x5e')]})[_0x04ab('0xd')](function(_0x4936cf){if(!_[_0x04ab('0x5f')](_0x3a9056)&&!_[_0x04ab('0x5f')](_0x4936cf[_0x04ab('0x5d')])){_0x58e7d4['calleridname']=_0x4936cf[_0x04ab('0x5d')];if(!_[_0x04ab('0x5f')](_0x4936cf[_0x04ab('0x5e')])){_0x58e7d4['calleridname']+='\x20'+_0x4936cf[_0x04ab('0x5e')];}}})[_0x04ab('0x60')](function(){return db[_0x04ab('0x61')][_0x04ab('0x43')](_0x58e7d4);});}})['then'](function(_0x40cfb2){return db['CmHopperAdditionalPhone'][_0x04ab('0x47')]({'where':{'CmHopperId':_0x5d528f}});})[_0x04ab('0xd')](function(){return _0x3a9056['status'](0xcc)[_0x04ab('0x62')]();})['catch'](handleError(_0x3a9056,null));};exports[_0x04ab('0x63')]=function(_0x161e3f,_0x451ad5){var _0x275287=[];return db['CmContact'][_0x04ab('0x46')]()[_0x04ab('0xd')](function(_0x452529){_0x275287=_[_0x04ab('0x3f')](_0x452529);return _0x161e3f[_0x04ab('0x54')][_0x04ab('0x64')]({'where':{'type':_0x04ab('0x65'),'dialActive':!![],'dialMethod':_0x04ab('0x66')},'attributes':['id',_0x04ab('0x67'),_0x04ab('0x68')],'raw':!![]});})[_0x04ab('0xd')](function(_0x2a4f59){if(_0x2a4f59&&_0x2a4f59[_0x04ab('0x2e')]){return db[_0x04ab('0x69')][_0x04ab('0x6a')](function(_0xf83cf4){var _0x439d7f={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x04ab('0x6b')](_0x04ab('0x57'))},'VoiceQueueId':{'$in':_[_0x04ab('0x13')](_0x2a4f59,'id')},'$or':[{'UserId':null},{'UserId':_0x161e3f[_0x04ab('0x54')]['id']}]};var _0x192dae={'active':![],'recallme':!![],'VoiceQueueId':{'$in':_(_0x2a4f59)['filter']([_0x04ab('0x68'),0x0])['map']('id')[_0x04ab('0x6c')]()},'$or':[{'UserId':null},{'UserId':_0x161e3f[_0x04ab('0x54')]['id']}]};var _0x2e6521={'$or':[_0x439d7f,_0x192dae]};var _0x596c41=[];if(_0x161e3f[_0x04ab('0x44')][_0x04ab('0x6d')]&&_0x161e3f[_0x04ab('0x44')]['direction']===_0x04ab('0x6e')){if(!_[_0x04ab('0x6f')](_0x161e3f[_0x04ab('0x44')]['hopperIds'])){_0x2e6521['id']={'$in':_0x161e3f[_0x04ab('0x44')][_0x04ab('0x70')]};}_0x596c41=[['priority',_0x04ab('0x71')],['scheduledAt',_0x2a4f59[0x0]['dialOrderByScheduledAt']===_0x04ab('0x71')?_0x04ab('0x72'):_0x04ab('0x71')],db[_0x04ab('0x69')][_0x04ab('0x73')](_0x04ab('0x74')),['id',_0x04ab('0x72')]];}else{if(!_['isEmpty'](_0x161e3f['body'][_0x04ab('0x70')])){_0x2e6521['id']={'$notIn':_0x161e3f[_0x04ab('0x44')][_0x04ab('0x70')]};}_0x596c41=[['priority',_0x04ab('0x72')],[_0x04ab('0x75'),_0x2a4f59[0x0][_0x04ab('0x67')]],db[_0x04ab('0x69')]['literal'](_0x04ab('0x76')),['id','ASC']];}return db[_0x04ab('0x14')][_0x04ab('0x77')]({'attributes':['id',_0x04ab('0x78'),_0x04ab('0x79'),'recallme'],'where':_0x2e6521,'order':_0x596c41,'transaction':_0xf83cf4,'lock':_0xf83cf4[_0x04ab('0x7a')][_0x04ab('0x7b')],'include':[{'model':db[_0x04ab('0x5b')],'as':_0x04ab('0x7c'),'attributes':_0x275287,'include':[{'model':db['CmCompany'],'as':_0x04ab('0x7d'),'attributes':['id','name']}]},{'model':db[_0x04ab('0x7e')],'as':_0x04ab('0x7f'),'attributes':['id','name']},{'model':db[_0x04ab('0x49')],'as':'Queue','attributes':['id',_0x04ab('0x10'),_0x04ab('0x80')]}]})['then'](function(_0x2c2894){if(_0x2c2894){return _0x2c2894[_0x04ab('0x45')]({'UserId':_0x161e3f[_0x04ab('0x54')]['id']},{'transaction':_0xf83cf4});}});});}})[_0x04ab('0xd')](handleEntityNotFound(_0x451ad5,null))['then'](respondWithResult(_0x451ad5,null))[_0x04ab('0x42')](handleError(_0x451ad5,null));};exports['getPreviewRecall']=function(_0x114b38,_0x24c6b9,_0x4a7e20){var _0x4ee4c8=[];var _0x15b182=_0x114b38[_0x04ab('0x3e')]['id'];var _0x5a9dbf=_0x114b38[_0x04ab('0x54')]['id'];return db[_0x04ab('0x5b')][_0x04ab('0x46')]()['then'](function(_0x161014){_0x4ee4c8=_[_0x04ab('0x3f')](_0x161014);return db[_0x04ab('0x69')]['transaction'](function(_0x3d81d4){const _0x434340={'id':_0x15b182};return db[_0x04ab('0x14')][_0x04ab('0x77')]({'attributes':['id',_0x04ab('0x78'),_0x04ab('0x81')],'where':_0x434340,'transaction':_0x3d81d4,'lock':_0x3d81d4[_0x04ab('0x7a')]['UPDATE'],'include':[{'model':db[_0x04ab('0x5b')],'as':_0x04ab('0x7c'),'attributes':_0x4ee4c8,'include':[{'model':db['CmCompany'],'as':_0x04ab('0x7d'),'attributes':['id',_0x04ab('0x10')]}]},{'model':db['CmList'],'as':_0x04ab('0x7f'),'attributes':['id',_0x04ab('0x10')]},{'model':db[_0x04ab('0x49')],'as':'Queue','attributes':['id','name',_0x04ab('0x80')]}]})['then'](function(_0x2f778a){if(_0x2f778a){return _0x2f778a[_0x04ab('0x45')]({'UserId':_0x5a9dbf},{'transaction':_0x3d81d4});}});});})[_0x04ab('0xd')](handleEntityNotFound(_0x24c6b9,null))['then'](respondWithResult(_0x24c6b9,null))[_0x04ab('0x42')](handleError(_0x24c6b9,null));};exports['getOpenContacts']=function(_0x2af9ce,_0x31879a){return _0x2af9ce['user'][_0x04ab('0x64')]({'where':{'type':'outbound','dialActive':!![],'dialMethod':_0x04ab('0x66')},'attributes':['id'],'raw':!![]})[_0x04ab('0xd')](function(_0x11cb01){if(_0x11cb01&&_0x11cb01['length']){return db[_0x04ab('0x14')][_0x04ab('0x9')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x04ab('0x6b')](_0x04ab('0x57'))},'VoiceQueueId':{'$in':_['map'](_0x11cb01,'id')},'$or':[{'UserId':null},{'UserId':_0x2af9ce[_0x04ab('0x54')]['id']}]}});}return 0x0;})[_0x04ab('0xd')](function(_0x34cff9){if(!_[_0x04ab('0x5f')](_0x34cff9)&&_[_0x04ab('0x82')](_0x34cff9)){return _0x31879a['status'](0xc8)['json']({'contacts':_0x34cff9});}else{logger['error'](_0x04ab('0x83'),_0x04ab('0x84'),0x194,_0x04ab('0x85'));_0x31879a['sendStatus'](0x194);}})[_0x04ab('0x42')](handleError(_0x31879a,null));};exports[_0x04ab('0x86')]=function(_0x2949f5,_0x5bf83b){var _0x1c321b=shared['timezones'];var _0x539620=[];_[_0x04ab('0x13')](_0x1c321b,function(_0xb707e1){_0x539620[_0x04ab('0x87')]({'id':_0xb707e1[_0x04ab('0x10')],'name':_0xb707e1['name'],'utcOffset':_0xb707e1[_0x04ab('0x88')]});});return _0x5bf83b[_0x04ab('0xa')](0xc8)[_0x04ab('0x5')]({'tz':_0x539620});};exports[_0x04ab('0x89')]=function(_0x3c081d,_0x120da6){var _0x1331af=shared[_0x04ab('0x8a')];var _0x12b7d3={};if(!_[_0x04ab('0x5f')](_0x1331af[_0x3c081d[_0x04ab('0x44')]['id']]))_0x12b7d3=_0x1331af[_0x3c081d[_0x04ab('0x44')]['id']];return _0x120da6[_0x04ab('0xa')](0xc8)[_0x04ab('0x5')](_0x12b7d3);};
\ No newline at end of file
+var _0x7a59=['$eq','$between','$notBetween','$in','$notIn','$like','$notLike','$notILike','$contains','$contained','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','show','model','keys','rawAttributes','find','catch','create','body','params','describe','destroy','CampaignId','VoiceQueueId','VoiceQueue','dataValues','createdAt','updatedAt','campaign','membername','UserId','user','deleted','deletedat','format','YYYY-MM-DD\x20HH:mm:ss','phone','CmContact','firstName','lastName','isNil','calleridname','CmHopperFinal','CmHopperAdditionalPhone','end','getPreview','outbound','preview','sequelize','dialPreviewAutoRecallMe','value','direction','hopperIds','priority','ASC','scheduledAt','dialOrderByScheduledAt','DESC','literal','COALESCE(CmHopper.UserId,\x200)\x20ASC','isEmpty','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne','scheduledat','recallme','UPDATE','Contact','CmCompany','Company','List','Queue','transaction','LOCK','CmList','dialActive','getVoiceQueues','isNumber','CmHopper,\x20%s,\x20%s,\x20%s','getOpenContacts','entity\x20not\x20found','getTimezones','timezones','push','utcOffset','getTimezone','moment','../../config/logger','api','../../config/environment','../../mysqldb','status','json','offset','undefined','limit','count','set','update','then','sendStatus','error','stack','name','send','map','CmHopper','fieldName','type','query','filters','intersection','$and','$or','$gt','$gte','$lt','$lte','$ne'];(function(_0x3987a1,_0x447793){var _0xe2596e=function(_0x546925){while(--_0x546925){_0x3987a1['push'](_0x3987a1['shift']());}};_0xe2596e(++_0x447793);}(_0x7a59,0x16e));var _0x97a5=function(_0x9dfc10,_0x19c2d5){_0x9dfc10=_0x9dfc10-0x0;var _0x4f938a=_0x7a59[_0x9dfc10];return _0x4f938a;};'use strict';var moment=require(_0x97a5('0x0'));var _=require('lodash');var qs=require('../../components/parsers/qs');var logger=require(_0x97a5('0x1'))(_0x97a5('0x2'));var shared=require(_0x97a5('0x3'));var db=require(_0x97a5('0x4'))['db'];function respondWithResult(_0x281bfd,_0x5e2db0){_0x5e2db0=_0x5e2db0||0xc8;return function(_0x3ba155){if(_0x3ba155){return _0x281bfd[_0x97a5('0x5')](_0x5e2db0)[_0x97a5('0x6')](_0x3ba155);}};}function respondWithFilteredResult(_0x48201b,_0x438520){return function(_0x52d32f){if(_0x52d32f){var _0x2663b9=typeof _0x438520[_0x97a5('0x7')]===_0x97a5('0x8')&&typeof _0x438520[_0x97a5('0x9')]===_0x97a5('0x8');var _0x5a51bc=_0x52d32f[_0x97a5('0xa')];var _0x101c3f=_0x2663b9?0x0:_0x438520[_0x97a5('0x7')];var _0x388bd7=_0x2663b9?_0x52d32f[_0x97a5('0xa')]:_0x438520['offset']+_0x438520['limit'];var _0x11d2eb;if(_0x388bd7>=_0x5a51bc){_0x388bd7=_0x5a51bc;_0x11d2eb=0xc8;}else{_0x11d2eb=0xce;}_0x48201b[_0x97a5('0x5')](_0x11d2eb);return _0x48201b[_0x97a5('0xb')]('Content-Range',_0x101c3f+'-'+_0x388bd7+'/'+_0x5a51bc)[_0x97a5('0x6')](_0x52d32f);}return null;};}function saveUpdates(_0x350720,_0x55305a){return function(_0x4f85a0){if(_0x4f85a0){return _0x4f85a0[_0x97a5('0xc')](_0x350720)[_0x97a5('0xd')](function(_0x50d291){return _0x50d291;});}return null;};}function handleEntityNotFound(_0x595437,_0x51d5e2){return function(_0x5a4471){if(!_0x5a4471){_0x595437[_0x97a5('0xe')](0x194);}return _0x5a4471;};}function handleError(_0x3dfb08,_0x3603e4){_0x3603e4=_0x3603e4||0x1f4;return function(_0x4d8ba7){logger[_0x97a5('0xf')](_0x4d8ba7[_0x97a5('0x10')]);if(_0x4d8ba7['name']){delete _0x4d8ba7[_0x97a5('0x11')];}_0x3dfb08['status'](_0x3603e4)[_0x97a5('0x12')](_0x4d8ba7);};}exports['index']=function(_0x4b7a38,_0x52ce92){var _0x32b00d={},_0x5c5740={},_0x79a5f7={'count':0x0,'rows':[]};var _0x9863ea=_[_0x97a5('0x13')](db[_0x97a5('0x14')]['rawAttributes'],function(_0x57dc28){return{'name':_0x57dc28[_0x97a5('0x15')],'type':_0x57dc28[_0x97a5('0x16')]['key']};});_0x5c5740['model']=_[_0x97a5('0x13')](_0x9863ea,_0x97a5('0x11'));_0x5c5740[_0x97a5('0x17')]=_['keys'](_0x4b7a38[_0x97a5('0x17')]);_0x5c5740[_0x97a5('0x18')]=_[_0x97a5('0x19')](_0x5c5740['model'],_0x5c5740[_0x97a5('0x17')]);_0x5c5740[_0x97a5('0x18')]=_['concat'](_0x5c5740[_0x97a5('0x18')],[_0x97a5('0x1a'),_0x97a5('0x1b'),_0x97a5('0x1c'),_0x97a5('0x1d'),_0x97a5('0x1e'),_0x97a5('0x1f'),_0x97a5('0x20'),_0x97a5('0x21'),'$not',_0x97a5('0x22'),_0x97a5('0x23'),_0x97a5('0x24'),_0x97a5('0x25'),_0x97a5('0x26'),_0x97a5('0x27'),'$iLike',_0x97a5('0x28'),_0x97a5('0x26'),'$overlap',_0x97a5('0x29'),_0x97a5('0x2a'),'$any']);_0x32b00d[_0x97a5('0x2b')]=_[_0x97a5('0x19')](_0x5c5740['model'],qs[_0x97a5('0x2c')](_0x4b7a38['query'][_0x97a5('0x2c')]));_0x32b00d[_0x97a5('0x2b')]=_0x32b00d[_0x97a5('0x2b')][_0x97a5('0x2d')]?_0x32b00d['attributes']:_0x5c5740['model'];if(!_0x4b7a38[_0x97a5('0x17')][_0x97a5('0x2e')](_0x97a5('0x2f'))){_0x32b00d['limit']=qs[_0x97a5('0x9')](_0x4b7a38[_0x97a5('0x17')]['limit']);_0x32b00d[_0x97a5('0x7')]=qs[_0x97a5('0x7')](_0x4b7a38['query'][_0x97a5('0x7')]);}_0x32b00d[_0x97a5('0x30')]=qs[_0x97a5('0x31')](_0x4b7a38['query'][_0x97a5('0x31')]);_0x32b00d[_0x97a5('0x32')]=qs[_0x97a5('0x18')](_[_0x97a5('0x33')](_0x4b7a38[_0x97a5('0x17')],_0x5c5740[_0x97a5('0x18')]),_0x9863ea);if(_0x4b7a38[_0x97a5('0x17')]['filter']){_0x32b00d[_0x97a5('0x32')]=_[_0x97a5('0x34')](_0x32b00d[_0x97a5('0x32')],{'$or':_[_0x97a5('0x13')](_0x9863ea,function(_0x369d7b){if(_0x369d7b[_0x97a5('0x16')]!==_0x97a5('0x35')){var _0x59ba99={};_0x59ba99[_0x369d7b[_0x97a5('0x11')]]={'$like':'%'+_0x4b7a38[_0x97a5('0x17')][_0x97a5('0x36')]+'%'};return _0x59ba99;}})});}_0x32b00d=_[_0x97a5('0x34')]({},_0x32b00d,_0x4b7a38[_0x97a5('0x37')]);var _0x49b19a={'where':_0x32b00d[_0x97a5('0x32')]};return db[_0x97a5('0x14')][_0x97a5('0xa')](_0x49b19a)[_0x97a5('0xd')](function(_0x2aec4e){_0x79a5f7['count']=_0x2aec4e;if(_0x4b7a38['query'][_0x97a5('0x38')]){_0x32b00d[_0x97a5('0x39')]=[{'all':!![]}];}return db[_0x97a5('0x14')][_0x97a5('0x3a')](_0x32b00d);})[_0x97a5('0xd')](function(_0x3dd209){_0x79a5f7['rows']=_0x3dd209;return _0x79a5f7;})[_0x97a5('0xd')](respondWithFilteredResult(_0x52ce92,_0x32b00d))['catch'](handleError(_0x52ce92,null));};exports[_0x97a5('0x3b')]=function(_0x1bde97,_0x30fc3b){var _0x798318={'raw':!![],'where':{'id':_0x1bde97['params']['id']}},_0x341cba={};_0x341cba[_0x97a5('0x3c')]=_[_0x97a5('0x3d')](db[_0x97a5('0x14')][_0x97a5('0x3e')]);_0x341cba[_0x97a5('0x17')]=_['keys'](_0x1bde97['query']);_0x341cba[_0x97a5('0x18')]=_[_0x97a5('0x19')](_0x341cba[_0x97a5('0x3c')],_0x341cba[_0x97a5('0x17')]);_0x798318['attributes']=_[_0x97a5('0x19')](_0x341cba['model'],qs[_0x97a5('0x2c')](_0x1bde97[_0x97a5('0x17')][_0x97a5('0x2c')]));_0x798318['attributes']=_0x798318[_0x97a5('0x2b')][_0x97a5('0x2d')]?_0x798318['attributes']:_0x341cba[_0x97a5('0x3c')];if(_0x1bde97[_0x97a5('0x17')][_0x97a5('0x38')]){_0x798318[_0x97a5('0x39')]=[{'all':!![]}];}_0x798318=_[_0x97a5('0x34')]({},_0x798318,_0x1bde97[_0x97a5('0x37')]);return db[_0x97a5('0x14')][_0x97a5('0x3f')](_0x798318)[_0x97a5('0xd')](handleEntityNotFound(_0x30fc3b,null))[_0x97a5('0xd')](respondWithResult(_0x30fc3b,null))[_0x97a5('0x40')](handleError(_0x30fc3b,null));};exports[_0x97a5('0x41')]=function(_0x5d54cc,_0x5c73f){return db[_0x97a5('0x14')][_0x97a5('0x41')](_0x5d54cc['body'],{})[_0x97a5('0xd')](respondWithResult(_0x5c73f,0xc9))[_0x97a5('0x40')](handleError(_0x5c73f,null));};exports[_0x97a5('0xc')]=function(_0x218f2b,_0x4b816){if(_0x218f2b['body']['id']){delete _0x218f2b[_0x97a5('0x42')]['id'];}return db[_0x97a5('0x14')][_0x97a5('0x3f')]({'where':{'id':_0x218f2b[_0x97a5('0x43')]['id']}})[_0x97a5('0xd')](handleEntityNotFound(_0x4b816,null))['then'](saveUpdates(_0x218f2b[_0x97a5('0x42')],null))['then'](respondWithResult(_0x4b816,null))[_0x97a5('0x40')](handleError(_0x4b816,null));};exports[_0x97a5('0x44')]=function(_0x330f6a,_0x4b3c38){return db[_0x97a5('0x14')][_0x97a5('0x44')]()[_0x97a5('0xd')](respondWithResult(_0x4b3c38,null))[_0x97a5('0x40')](handleError(_0x4b3c38,null));};exports[_0x97a5('0x45')]=function(_0x42ced6,_0x49b215){var _0x318469;var _0x7edab1=_0x42ced6[_0x97a5('0x43')]['id'];return db[_0x97a5('0x14')]['find']({'where':{'id':_0x42ced6[_0x97a5('0x43')]['id']}})[_0x97a5('0xd')](handleEntityNotFound(_0x49b215,null))['then'](function(_0x257a5d){if(_0x257a5d){return _0x257a5d[_0x97a5('0x45')]()[_0x97a5('0xd')](function(_0x56890f){return _0x56890f;});}})[_0x97a5('0xd')](function(_0x34d934){_0x318469=_0x34d934;if(_0x34d934){if(_0x34d934['VoiceQueueId']||_0x34d934[_0x97a5('0x46')]){return db[_0x34d934[_0x97a5('0x47')]?_0x97a5('0x48'):'Campaign'][_0x97a5('0x3f')]({'where':{'id':_0x34d934[_0x97a5('0x47')]?_0x34d934[_0x97a5('0x47')]:_0x34d934['CampaignId']},'attributes':['id','name'],'raw':!![]});}}})[_0x97a5('0xd')](function(_0x7c4886){var _0x3ccb26={};if(_0x7c4886){_[_0x97a5('0x34')](_0x3ccb26,_['omit'](_0x318469[_0x97a5('0x49')],[_0x97a5('0x4a'),_0x97a5('0x4b'),'id']));_0x3ccb26['state']=0x15;_0x3ccb26['statedesc']='deleted';_0x3ccb26[_0x97a5('0x4c')]=_0x7c4886[_0x97a5('0x11')];_0x3ccb26[_0x97a5('0x4d')]=_0x42ced6['user'][_0x97a5('0x11')];_0x3ccb26[_0x97a5('0x4e')]=_0x42ced6[_0x97a5('0x4f')]['id'];_0x3ccb26[_0x97a5('0x50')]=!![];_0x3ccb26[_0x97a5('0x51')]=moment()[_0x97a5('0x52')](_0x97a5('0x53'));_0x3ccb26['calleridnum']=_0x318469[_0x97a5('0x54')];_0x3ccb26['campaigntype']=_0x318469[_0x97a5('0x47')]?'queue':'ivr';return db[_0x97a5('0x55')][_0x97a5('0x3f')]({'where':{'id':_0x3ccb26['ContactId']},'attributes':[_0x97a5('0x56'),_0x97a5('0x57')]})['then'](function(_0x116ded){if(!_['isNil'](_0x49b215)&&!_[_0x97a5('0x58')](_0x116ded['firstName'])){_0x3ccb26[_0x97a5('0x59')]=_0x116ded['firstName'];if(!_[_0x97a5('0x58')](_0x116ded[_0x97a5('0x57')])){_0x3ccb26['calleridname']+='\x20'+_0x116ded[_0x97a5('0x57')];}}})['finally'](function(){return db[_0x97a5('0x5a')]['create'](_0x3ccb26);});}})['then'](function(_0x537e29){return db[_0x97a5('0x5b')][_0x97a5('0x45')]({'where':{'CmHopperId':_0x7edab1}});})[_0x97a5('0xd')](function(){return _0x49b215[_0x97a5('0x5')](0xcc)[_0x97a5('0x5c')]();})[_0x97a5('0x40')](handleError(_0x49b215,null));};exports[_0x97a5('0x5d')]=function(_0xbfde6,_0x522e6f){var _0x5bec31=[];return db['CmContact'][_0x97a5('0x44')]()['then'](function(_0x5ba758){_0x5bec31=_[_0x97a5('0x3d')](_0x5ba758);return _0xbfde6[_0x97a5('0x4f')]['getVoiceQueues']({'where':{'type':_0x97a5('0x5e'),'dialActive':!![],'dialMethod':_0x97a5('0x5f')},'attributes':['id','dialOrderByScheduledAt','dialPreviewAutoRecallMe'],'raw':!![]});})[_0x97a5('0xd')](function(_0x2b7156){if(_0x2b7156&&_0x2b7156[_0x97a5('0x2d')]){return db[_0x97a5('0x60')]['transaction'](function(_0x30d166){var _0x270991={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x97a5('0x52')](_0x97a5('0x53'))},'VoiceQueueId':{'$in':_[_0x97a5('0x13')](_0x2b7156,'id')},'$or':[{'UserId':null},{'UserId':_0xbfde6['user']['id']}]};var _0x4914ca={'active':![],'recallme':!![],'VoiceQueueId':{'$in':_(_0x2b7156)[_0x97a5('0x36')]([_0x97a5('0x61'),0x0])['map']('id')[_0x97a5('0x62')]()},'$or':[{'UserId':null},{'UserId':_0xbfde6[_0x97a5('0x4f')]['id']}]};var _0x31460b={'$or':[_0x270991,_0x4914ca]};var _0x3ba5db=[];if(_0xbfde6['body'][_0x97a5('0x63')]&&_0xbfde6['body']['direction']==='prev'){if(!_['isEmpty'](_0xbfde6[_0x97a5('0x42')][_0x97a5('0x64')])){_0x31460b['id']={'$in':_0xbfde6[_0x97a5('0x42')][_0x97a5('0x64')]};}_0x3ba5db=[[_0x97a5('0x65'),_0x97a5('0x66')],[_0x97a5('0x67'),_0x2b7156[0x0][_0x97a5('0x68')]==='ASC'?_0x97a5('0x69'):_0x97a5('0x66')],db['sequelize'][_0x97a5('0x6a')](_0x97a5('0x6b')),['id','DESC']];}else{if(!_[_0x97a5('0x6c')](_0xbfde6[_0x97a5('0x42')]['hopperIds'])){_0x31460b['id']={'$notIn':_0xbfde6[_0x97a5('0x42')][_0x97a5('0x64')]};}_0x3ba5db=[['priority','DESC'],[_0x97a5('0x67'),_0x2b7156[0x0]['dialOrderByScheduledAt']],db[_0x97a5('0x60')]['literal'](_0x97a5('0x6d')),['id',_0x97a5('0x66')]];}return db[_0x97a5('0x14')][_0x97a5('0x6e')]({'attributes':['id',_0x97a5('0x6f'),_0x97a5('0x54'),_0x97a5('0x70')],'where':_0x31460b,'order':_0x3ba5db,'transaction':_0x30d166,'lock':_0x30d166['LOCK'][_0x97a5('0x71')],'include':[{'model':db[_0x97a5('0x55')],'as':_0x97a5('0x72'),'attributes':_0x5bec31,'include':[{'model':db[_0x97a5('0x73')],'as':_0x97a5('0x74'),'attributes':['id','name']}]},{'model':db['CmList'],'as':_0x97a5('0x75'),'attributes':['id',_0x97a5('0x11')]},{'model':db['VoiceQueue'],'as':_0x97a5('0x76'),'attributes':['id',_0x97a5('0x11'),'dialActive']}]})[_0x97a5('0xd')](function(_0x5df8b3){if(_0x5df8b3){return _0x5df8b3[_0x97a5('0xc')]({'UserId':_0xbfde6[_0x97a5('0x4f')]['id']},{'transaction':_0x30d166});}});});}})[_0x97a5('0xd')](handleEntityNotFound(_0x522e6f,null))[_0x97a5('0xd')](respondWithResult(_0x522e6f,null))[_0x97a5('0x40')](handleError(_0x522e6f,null));};exports['getPreviewRecall']=function(_0x2df3f0,_0x552e76,_0x3abe99){var _0x4f30fb=[];var _0x140320=_0x2df3f0[_0x97a5('0x43')]['id'];var _0x50979b=_0x2df3f0[_0x97a5('0x4f')]['id'];return db[_0x97a5('0x55')][_0x97a5('0x44')]()['then'](function(_0x274d85){_0x4f30fb=_[_0x97a5('0x3d')](_0x274d85);return db[_0x97a5('0x60')][_0x97a5('0x77')](function(_0x1981b9){const _0x360df4={'id':_0x140320};return db[_0x97a5('0x14')][_0x97a5('0x6e')]({'attributes':['id',_0x97a5('0x6f'),_0x97a5('0x70')],'where':_0x360df4,'transaction':_0x1981b9,'lock':_0x1981b9[_0x97a5('0x78')][_0x97a5('0x71')],'include':[{'model':db['CmContact'],'as':_0x97a5('0x72'),'attributes':_0x4f30fb,'include':[{'model':db[_0x97a5('0x73')],'as':_0x97a5('0x74'),'attributes':['id','name']}]},{'model':db[_0x97a5('0x79')],'as':'List','attributes':['id',_0x97a5('0x11')]},{'model':db[_0x97a5('0x48')],'as':_0x97a5('0x76'),'attributes':['id',_0x97a5('0x11'),_0x97a5('0x7a')]}]})['then'](function(_0x16eb72){if(_0x16eb72){return _0x16eb72[_0x97a5('0xc')]({'UserId':_0x50979b},{'transaction':_0x1981b9});}});});})[_0x97a5('0xd')](handleEntityNotFound(_0x552e76,null))[_0x97a5('0xd')](respondWithResult(_0x552e76,null))['catch'](handleError(_0x552e76,null));};exports['getOpenContacts']=function(_0x4fb59c,_0x14bab0){return _0x4fb59c[_0x97a5('0x4f')][_0x97a5('0x7b')]({'where':{'type':_0x97a5('0x5e'),'dialActive':!![],'dialMethod':_0x97a5('0x5f')},'attributes':['id'],'raw':!![]})[_0x97a5('0xd')](function(_0x277b35){if(_0x277b35&&_0x277b35[_0x97a5('0x2d')]){return db[_0x97a5('0x14')][_0x97a5('0xa')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x97a5('0x52')]('YYYY-MM-DD\x20HH:mm:ss')},'VoiceQueueId':{'$in':_[_0x97a5('0x13')](_0x277b35,'id')},'$or':[{'UserId':null},{'UserId':_0x4fb59c[_0x97a5('0x4f')]['id']}]}});}return 0x0;})[_0x97a5('0xd')](function(_0x1995a7){if(!_['isNil'](_0x1995a7)&&_[_0x97a5('0x7c')](_0x1995a7)){return _0x14bab0[_0x97a5('0x5')](0xc8)['json']({'contacts':_0x1995a7});}else{logger[_0x97a5('0xf')](_0x97a5('0x7d'),_0x97a5('0x7e'),0x194,_0x97a5('0x7f'));_0x14bab0[_0x97a5('0xe')](0x194);}})[_0x97a5('0x40')](handleError(_0x14bab0,null));};exports[_0x97a5('0x80')]=function(_0x484282,_0x2c8fee){var _0x568396=shared[_0x97a5('0x81')];var _0x5a0b6d=[];_[_0x97a5('0x13')](_0x568396,function(_0xe46572){_0x5a0b6d[_0x97a5('0x82')]({'id':_0xe46572[_0x97a5('0x11')],'name':_0xe46572[_0x97a5('0x11')],'utcOffset':_0xe46572[_0x97a5('0x83')]});});return _0x2c8fee['status'](0xc8)['json']({'tz':_0x5a0b6d});};exports[_0x97a5('0x84')]=function(_0x59facf,_0x4eacff){var _0x162d93=shared[_0x97a5('0x81')];var _0x377257={};if(!_[_0x97a5('0x58')](_0x162d93[_0x59facf[_0x97a5('0x42')]['id']]))_0x377257=_0x162d93[_0x59facf[_0x97a5('0x42')]['id']];return _0x4eacff['status'](0xc8)[_0x97a5('0x6')](_0x377257);};
\ No newline at end of file
index 22f8a55..5e22dee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xafc4=['priority','lodash','../../config/logger','moment','bluebird','request-promise','path','exports','define','CmHopper','cm_hopper','scheduledat','phone'];(function(_0x5103fd,_0x34e218){var _0x18d94f=function(_0x19aaa6){while(--_0x19aaa6){_0x5103fd['push'](_0x5103fd['shift']());}};_0x18d94f(++_0x34e218);}(_0xafc4,0x69));var _0x4afc=function(_0x2efe4d,_0x522754){_0x2efe4d=_0x2efe4d-0x0;var _0x386b0e=_0xafc4[_0x2efe4d];return _0x386b0e;};'use strict';var _=require(_0x4afc('0x0'));var util=require('util');var logger=require(_0x4afc('0x1'))('api');var moment=require(_0x4afc('0x2'));var BPromise=require(_0x4afc('0x3'));var rp=require(_0x4afc('0x4'));var fs=require('fs');var path=require(_0x4afc('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./cmHopper.attributes');module[_0x4afc('0x6')]=function(_0x471d45,_0x16953b){return _0x471d45[_0x4afc('0x7')](_0x4afc('0x8'),attributes,{'tableName':_0x4afc('0x9'),'paranoid':![],'indexes':[{'name':'scheduledat','fields':[_0x4afc('0xa')]},{'name':_0x4afc('0xb'),'fields':[_0x4afc('0xb')]},{'name':_0x4afc('0xc'),'fields':[_0x4afc('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x5fab=['./cmHopper.attributes','exports','CmHopper','cm_hopper','scheduledat','phone','priority','lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0xbf7a42,_0x9a2da){var _0x1ae925=function(_0x35c0d0){while(--_0x35c0d0){_0xbf7a42['push'](_0xbf7a42['shift']());}};_0x1ae925(++_0x9a2da);}(_0x5fab,0x177));var _0xb5fa=function(_0x10a546,_0x5ea132){_0x10a546=_0x10a546-0x0;var _0x30e897=_0x5fab[_0x10a546];return _0x30e897;};'use strict';var _=require(_0xb5fa('0x0'));var util=require(_0xb5fa('0x1'));var logger=require('../../config/logger')(_0xb5fa('0x2'));var moment=require(_0xb5fa('0x3'));var BPromise=require(_0xb5fa('0x4'));var rp=require(_0xb5fa('0x5'));var fs=require('fs');var path=require(_0xb5fa('0x6'));var rimraf=require(_0xb5fa('0x7'));var config=require(_0xb5fa('0x8'));var attributes=require(_0xb5fa('0x9'));module[_0xb5fa('0xa')]=function(_0x44df89,_0x4a0249){return _0x44df89['define'](_0xb5fa('0xb'),attributes,{'tableName':_0xb5fa('0xc'),'paranoid':![],'indexes':[{'name':_0xb5fa('0xd'),'fields':['scheduledat']},{'name':_0xb5fa('0xe'),'fields':[_0xb5fa('0xe')]},{'name':_0xb5fa('0xf'),'fields':['priority']}],'timestamps':!![]});};
\ No newline at end of file
index eb8d7f7..5c69131 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54ce=['Agent','name','length','UserId','push','includes','all','dataValues','ContactId','MoveContactManagedDialer','MoveContactManagedDialer\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]','CountReScheduled','format','YYYY-MM-DD\x20HH:mm:ss','\x20,\x201,\x20null','GetContactRecallMe','order','GetCmHopperPreview','describe','findOne','phone','dialTimezone','getContactByPhone','ResetActiveCalls','CmHopperHandlePreviewRecallNotifications','voiceQueueIds','interval','availableAgentsIds','literal','NOW()\x20+\x20INTERVAL\x20','User','voicePause','CmList','NOW()','lodash','util','moment','../../mysqldb','rpc','GetCmHopper','CmHopper','findAll','options','where','attributes','limit','include','map','model','debug','catch','error','message','ShowCmHopper','find','raw','info','stringify','create','then','CreateCmHopper','UpdateCmHopper','update','body','UpdateCmHopper\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]','active','destroy','DestroyCmHopper','GetContactDialer','CmContact','sequelize','transaction','LOCK','UPDATE','Contact','keys'];(function(_0x263bc1,_0x875094){var _0x12431f=function(_0x51cb68){while(--_0x51cb68){_0x263bc1['push'](_0x263bc1['shift']());}};_0x12431f(++_0x875094);}(_0x54ce,0x19e));var _0xe54c=function(_0x7bf64d,_0x494cb){_0x7bf64d=_0x7bf64d-0x0;var _0x2b44b1=_0x54ce[_0x7bf64d];return _0x2b44b1;};'use strict';var _=require(_0xe54c('0x0'));var util=require(_0xe54c('0x1'));var moment=require(_0xe54c('0x2'));var BPromise=require('bluebird');var db=require(_0xe54c('0x3'))['db'];var logger=require('../../config/logger')(_0xe54c('0x4'));exports[_0xe54c('0x5')]=function(_0x3f7f6a){var _0x6ec0f4=this;return new Promise(function(_0x3d4da7,_0x3b1bd3){return db[_0xe54c('0x6')][_0xe54c('0x7')]({'raw':_0x3f7f6a['options']?_0x3f7f6a[_0xe54c('0x8')]['raw']===undefined?!![]:![]:!![],'where':_0x3f7f6a['options']?_0x3f7f6a[_0xe54c('0x8')][_0xe54c('0x9')]||null:null,'attributes':_0x3f7f6a[_0xe54c('0x8')]?_0x3f7f6a['options'][_0xe54c('0xa')]||null:null,'limit':_0x3f7f6a[_0xe54c('0x8')]?_0x3f7f6a[_0xe54c('0x8')][_0xe54c('0xb')]||null:null,'include':_0x3f7f6a[_0xe54c('0x8')]?_0x3f7f6a[_0xe54c('0x8')][_0xe54c('0xc')]?_[_0xe54c('0xd')](_0x3f7f6a[_0xe54c('0x8')][_0xe54c('0xc')],function(_0x2c8026){return{'model':db[_0x2c8026['model']],'as':_0x2c8026['as'],'attributes':_0x2c8026[_0xe54c('0xa')],'include':_0x2c8026[_0xe54c('0xc')]?_[_0xe54c('0xd')](_0x2c8026[_0xe54c('0xc')],function(_0x3e8016){return{'model':db[_0x3e8016['model']],'as':_0x3e8016['as'],'attributes':_0x3e8016['attributes'],'include':_0x3e8016['include']?_[_0xe54c('0xd')](_0x3e8016[_0xe54c('0xc')],function(_0x2fb032){return{'model':db[_0x2fb032[_0xe54c('0xe')]],'as':_0x2fb032['as'],'attributes':_0x2fb032[_0xe54c('0xa')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4ff2bd){logger['info'](_0xe54c('0x5'),_0x3f7f6a);logger[_0xe54c('0xf')](_0xe54c('0x5'),_0x3f7f6a,JSON['stringify'](_0x4ff2bd));_0x3d4da7(_0x4ff2bd);})[_0xe54c('0x10')](function(_0x1ff5cb){logger[_0xe54c('0x11')]('GetCmHopper',_0x1ff5cb[_0xe54c('0x12')],_0x3f7f6a);_0x3b1bd3(_0x6ec0f4['error'](0x1f4,_0x1ff5cb[_0xe54c('0x12')]));});});};exports[_0xe54c('0x13')]=function(_0x2bf554){var _0x4cac0d=this;return new Promise(function(_0x3d9614,_0x185b6a){return db['CmHopper'][_0xe54c('0x14')]({'raw':_0x2bf554['options']?_0x2bf554['options'][_0xe54c('0x15')]===undefined?!![]:![]:!![],'where':_0x2bf554[_0xe54c('0x8')]?_0x2bf554['options'][_0xe54c('0x9')]||null:null,'attributes':_0x2bf554['options']?_0x2bf554[_0xe54c('0x8')]['attributes']||null:null,'include':_0x2bf554[_0xe54c('0x8')]?_0x2bf554['options'][_0xe54c('0xc')]?_[_0xe54c('0xd')](_0x2bf554['options'][_0xe54c('0xc')],function(_0xc76bde){return{'model':db[_0xc76bde[_0xe54c('0xe')]],'as':_0xc76bde['as'],'attributes':_0xc76bde[_0xe54c('0xa')],'include':_0xc76bde[_0xe54c('0xc')]?_[_0xe54c('0xd')](_0xc76bde['include'],function(_0x40d27f){return{'model':db[_0x40d27f[_0xe54c('0xe')]],'as':_0x40d27f['as'],'attributes':_0x40d27f['attributes'],'include':_0x40d27f[_0xe54c('0xc')]?_['map'](_0x40d27f[_0xe54c('0xc')],function(_0x3c10ef){return{'model':db[_0x3c10ef[_0xe54c('0xe')]],'as':_0x3c10ef['as'],'attributes':_0x3c10ef[_0xe54c('0xa')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1bb47c){logger[_0xe54c('0x16')]('ShowCmHopper',_0x2bf554);logger['debug'](_0xe54c('0x13'),_0x2bf554,JSON[_0xe54c('0x17')](_0x1bb47c));_0x3d9614(_0x1bb47c);})[_0xe54c('0x10')](function(_0x4f61da){logger[_0xe54c('0x11')](_0xe54c('0x13'),_0x4f61da[_0xe54c('0x12')],_0x2bf554);_0x185b6a(_0x4cac0d[_0xe54c('0x11')](0x1f4,_0x4f61da['message']));});});};exports['CreateCmHopper']=function(_0xe40a02){var _0x1ebcbf=this;return new Promise(function(_0x279e98,_0x3b150a){return db[_0xe54c('0x6')][_0xe54c('0x18')](_0xe40a02['body'],{'raw':_0xe40a02[_0xe54c('0x8')]?_0xe40a02[_0xe54c('0x8')][_0xe54c('0x15')]===undefined?!![]:![]:!![]})[_0xe54c('0x19')](function(_0x8579ef){logger[_0xe54c('0x16')](_0xe54c('0x1a'),_0xe40a02);logger['debug'](_0xe54c('0x1a'),_0xe40a02,JSON[_0xe54c('0x17')](_0x8579ef));_0x279e98(_0x8579ef);})['catch'](function(_0x57ef1e){logger[_0xe54c('0x11')](_0xe54c('0x1a'),_0x57ef1e['message'],_0xe40a02);_0x3b150a(_0x1ebcbf[_0xe54c('0x11')](0x1f4,_0x57ef1e['message']));});});};exports[_0xe54c('0x1b')]=function(_0x573239){var _0x54c0a9=this;return new Promise(function(_0x3deed1,_0x44cf31){return db[_0xe54c('0x6')][_0xe54c('0x1c')](_0x573239[_0xe54c('0x1d')],{'raw':_0x573239['options']?_0x573239['options'][_0xe54c('0x15')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x573239['options']?_0x573239[_0xe54c('0x8')]['where']||null:null,'attributes':_0x573239['options']?_0x573239[_0xe54c('0x8')][_0xe54c('0xa')]||null:null,'limit':_0x573239['options']?_0x573239['options'][_0xe54c('0xb')]||null:null})[_0xe54c('0x19')](function(_0x2b32e5){logger[_0xe54c('0x16')](_0xe54c('0x1b'),_0x573239);logger[_0xe54c('0x16')](_0xe54c('0x1e'),JSON['stringify'](_0x573239['options'][_0xe54c('0x9')]),_0x573239['body'][_0xe54c('0x1f')]);logger[_0xe54c('0xf')]('UpdateCmHopper',_0x573239,JSON[_0xe54c('0x17')](_0x2b32e5));_0x3deed1(_0x2b32e5);})[_0xe54c('0x10')](function(_0xdb3049){logger[_0xe54c('0x11')](_0xe54c('0x1b'),_0xdb3049['message'],_0x573239);_0x44cf31(_0x54c0a9[_0xe54c('0x11')](0x1f4,_0xdb3049[_0xe54c('0x12')]));});});};exports['DestroyCmHopper']=function(_0x3448fe){var _0x4acb77=this;return new Promise(function(_0x1f3663,_0xa2aed2){return db[_0xe54c('0x6')][_0xe54c('0x20')]({'where':_0x3448fe[_0xe54c('0x8')]?_0x3448fe[_0xe54c('0x8')][_0xe54c('0x9')]||null:null})[_0xe54c('0x19')](function(_0x551bb2){logger['info'](_0xe54c('0x21'),_0x3448fe);logger[_0xe54c('0xf')](_0xe54c('0x21'),_0x3448fe,JSON[_0xe54c('0x17')](_0x551bb2));_0x1f3663(_0x551bb2);})[_0xe54c('0x10')](function(_0x451bef){logger[_0xe54c('0x11')]('DestroyCmHopper',_0x451bef[_0xe54c('0x12')],_0x3448fe);_0xa2aed2(_0x4acb77[_0xe54c('0x11')](0x1f4,_0x451bef[_0xe54c('0x12')]));});});};exports[_0xe54c('0x22')]=function(_0x3bc256){var _0x5d5200=this;return new Promise(function(_0x57e37f,_0x48b5a6){return db[_0xe54c('0x23')]['describe']()['then'](function(_0x436289){return db[_0xe54c('0x24')][_0xe54c('0x25')](function(_0x177067){return db[_0xe54c('0x6')][_0xe54c('0x7')]({'where':_0x3bc256[_0xe54c('0x8')]?_0x3bc256[_0xe54c('0x8')][_0xe54c('0x9')]||null:null,'attributes':_0x3bc256[_0xe54c('0x8')]?_0x3bc256[_0xe54c('0x8')][_0xe54c('0xa')]||null:null,'limit':_0x3bc256[_0xe54c('0x8')]?_0x3bc256[_0xe54c('0x8')][_0xe54c('0xb')]||null:null,'order':_0x3bc256[_0xe54c('0x8')]?_0x3bc256[_0xe54c('0x8')]['order']||null:null,'transaction':_0x177067,'lock':_0x177067[_0xe54c('0x26')][_0xe54c('0x27')],'include':[{'model':db['CmContact'],'as':_0xe54c('0x28'),'attributes':_[_0xe54c('0x29')](_0x436289)},{'model':db['User'],'as':_0xe54c('0x2a'),'attributes':['id',_0xe54c('0x2b'),'voicePause']}]})[_0xe54c('0x19')](function(_0x17cf92){var _0x45bd38=[];var _0x137451=[];for(var _0x26180b=0x0;_0x26180b<_0x17cf92[_0xe54c('0x2c')];_0x26180b+=0x1){var _0x4b5215=_0x17cf92[_0x26180b][_0xe54c('0x2d')];if(_0x4b5215===null){_0x45bd38[_0xe54c('0x2e')](_0x17cf92[_0x26180b][_0xe54c('0x1c')](_0x3bc256[_0xe54c('0x1d')],{'transaction':_0x177067}));}else if(!_0x137451[_0xe54c('0x2f')](_0x4b5215)){_0x137451[_0xe54c('0x2e')](_0x4b5215);_0x45bd38[_0xe54c('0x2e')](_0x17cf92[_0x26180b][_0xe54c('0x1c')](_0x3bc256[_0xe54c('0x1d')],{'transaction':_0x177067}));}}return BPromise[_0xe54c('0x30')](_0x45bd38);});})[_0xe54c('0x19')](function(_0x1f8697){logger[_0xe54c('0x16')]('GetContactDialer',_0x3bc256);if(_0x1f8697[_0xe54c('0x2c')]>0x0){logger[_0xe54c('0x16')]('GetContactDialer\x20hopperId\x20[%s]\x20-\x20contactId\x20[%s]\x20-\x20active\x20status\x20[%s]',_0x1f8697[0x0][_0xe54c('0x31')]['id'],_0x1f8697[0x0][_0xe54c('0x31')][_0xe54c('0x32')],_0x1f8697[0x0][_0xe54c('0x31')]['active']);}logger[_0xe54c('0xf')](_0xe54c('0x22'),_0x3bc256,JSON['stringify'](_0x1f8697));_0x57e37f(_0x1f8697);})[_0xe54c('0x10')](function(_0x3403a4){logger['error'](_0xe54c('0x22'),_0x3403a4[_0xe54c('0x12')],_0x3bc256);_0x48b5a6(_0x5d5200[_0xe54c('0x11')](0x1f4,_0x3403a4[_0xe54c('0x12')]));});});});};exports[_0xe54c('0x33')]=function(_0x28af84){var _0x2aa431=this;return new Promise(function(_0x30cf39,_0x4089e0){return db[_0xe54c('0x24')][_0xe54c('0x25')](function(_0x427bd7){return db['CmHopperFinal']['create'](_0x28af84[_0xe54c('0x1d')],{'raw':_0x28af84['options']?_0x28af84[_0xe54c('0x8')][_0xe54c('0x15')]===undefined?!![]:![]:!![],'transaction':_0x427bd7})['then'](function(){logger['info'](_0xe54c('0x34'),JSON[_0xe54c('0x17')](_0x28af84['options']['where']),_0x28af84[_0xe54c('0x8')][_0xe54c('0x9')][_0xe54c('0x1f')]);return db['CmHopper']['destroy']({'where':_0x28af84[_0xe54c('0x8')]?_0x28af84['options']['where']||null:null,'transaction':_0x427bd7});});})[_0xe54c('0x19')](function(_0x683714){logger['info'](_0xe54c('0x33'),_0x28af84);logger['debug'](_0xe54c('0x33'),_0x28af84,JSON[_0xe54c('0x17')](_0x683714));_0x30cf39(_0x683714);})['catch'](function(_0x3e4357){logger[_0xe54c('0x11')]('MoveContactManagedDialer',_0x3e4357[_0xe54c('0x12')],_0x28af84);_0x4089e0(_0x2aa431[_0xe54c('0x11')](0x1f4,_0x3e4357[_0xe54c('0x12')]));});});};exports[_0xe54c('0x35')]=function(_0x69c3ba){var _0x3960c5=this;return new Promise(function(_0x141d30,_0x14823d){return db[_0xe54c('0x6')][_0xe54c('0x7')]({'raw':_0x69c3ba[_0xe54c('0x8')]?_0x69c3ba[_0xe54c('0x8')]['raw']===undefined?!![]:![]:!![],'where':_0x69c3ba[_0xe54c('0x8')]?_0x69c3ba[_0xe54c('0x8')][_0xe54c('0x9')]||null:null,'attributes':[[db[_0xe54c('0x24')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0xe54c('0x24')]['literal']('`scheduledat`\x20>=\x20'+util['format']('\x22%s\x22',moment()[_0xe54c('0x36')](_0xe54c('0x37')))+_0xe54c('0x38')))),'contactsRescheduled']]})[_0xe54c('0x19')](function(_0x45ab59){logger[_0xe54c('0x16')]('CountReScheduled',_0x69c3ba);logger[_0xe54c('0xf')]('CountReScheduled',_0x69c3ba,JSON[_0xe54c('0x17')](_0x45ab59));_0x141d30(_0x45ab59);})[_0xe54c('0x10')](function(_0x4845ef){logger[_0xe54c('0x11')](_0xe54c('0x35'),_0x4845ef[_0xe54c('0x12')],_0x69c3ba);_0x14823d(_0x3960c5[_0xe54c('0x11')](0x1f4,_0x4845ef[_0xe54c('0x12')]));});});};exports[_0xe54c('0x39')]=function(_0x47583a){var _0x4a5472=this;return new Promise(function(_0x2577de,_0x296e07){return db[_0xe54c('0x23')]['describe']()[_0xe54c('0x19')](function(){return db[_0xe54c('0x24')][_0xe54c('0x25')](function(_0x1df6e1){return db['CmHopper']['findAll']({'where':_0x47583a[_0xe54c('0x8')]?_0x47583a[_0xe54c('0x8')][_0xe54c('0x9')]||null:null,'attributes':_0x47583a[_0xe54c('0x8')]?_0x47583a['options'][_0xe54c('0xa')]||null:null,'limit':0x1,'order':_0x47583a['options']?_0x47583a[_0xe54c('0x8')][_0xe54c('0x3a')]||null:null,'group':db['CmHopper'][_0xe54c('0x2d')],'transaction':_0x1df6e1,'lock':_0x1df6e1[_0xe54c('0x26')][_0xe54c('0x27')],'include':_0x47583a['options']?_0x47583a[_0xe54c('0x8')][_0xe54c('0xc')]?_[_0xe54c('0xd')](_0x47583a[_0xe54c('0x8')][_0xe54c('0xc')],function(_0x3df01b){return{'model':db[_0x3df01b[_0xe54c('0xe')]],'as':_0x3df01b['as'],'attributes':_0x3df01b['attributes'],'include':_0x3df01b[_0xe54c('0xc')]?_[_0xe54c('0xd')](_0x3df01b[_0xe54c('0xc')],function(_0x128a1e){return{'model':db[_0x128a1e[_0xe54c('0xe')]],'as':_0x128a1e['as'],'attributes':_0x128a1e[_0xe54c('0xa')],'include':_0x128a1e[_0xe54c('0xc')]?_['map'](_0x128a1e[_0xe54c('0xc')],function(_0x582f59){return{'model':db[_0x582f59[_0xe54c('0xe')]],'as':_0x582f59['as'],'attributes':_0x582f59[_0xe54c('0xa')]};}):[]};}):[]};}):[]:[]})[_0xe54c('0x19')](function(_0x2de0f8){var _0x2d0f5b=[];for(var _0x56e24c=0x0;_0x56e24c<_0x2de0f8[_0xe54c('0x2c')];_0x56e24c+=0x1){_0x2d0f5b[_0xe54c('0x2e')](_0x2de0f8[_0x56e24c][_0xe54c('0x1c')](_0x47583a[_0xe54c('0x1d')],{'transaction':_0x1df6e1}));}return BPromise[_0xe54c('0x30')](_0x2d0f5b);});})[_0xe54c('0x19')](function(_0x221667){logger['info']('GetContactRecallMe',_0x47583a);logger[_0xe54c('0xf')](_0xe54c('0x39'),_0x47583a,JSON[_0xe54c('0x17')](_0x221667));_0x2577de(_0x221667);})[_0xe54c('0x10')](function(_0x6688b8){logger[_0xe54c('0x11')](_0xe54c('0x39'),_0x6688b8[_0xe54c('0x12')],_0x47583a);_0x296e07(_0x4a5472[_0xe54c('0x11')](0x1f4,_0x6688b8['message']));});});});};exports[_0xe54c('0x3b')]=function(_0x3f3107){var _0x3d8d7c=this;return new Promise(function(_0x2ca333,_0x463d6c){db[_0xe54c('0x23')][_0xe54c('0x3c')]()[_0xe54c('0x19')](function(_0x2926dd){return db[_0xe54c('0x6')][_0xe54c('0x7')]({'raw':_0x3f3107[_0xe54c('0x8')]?_0x3f3107[_0xe54c('0x8')]['raw']===undefined?!![]:![]:!![],'where':_0x3f3107['options']?_0x3f3107[_0xe54c('0x8')]['where']||null:null,'attributes':_0x3f3107[_0xe54c('0x8')]?_0x3f3107[_0xe54c('0x8')][_0xe54c('0xa')]||null:null,'limit':_0x3f3107[_0xe54c('0x8')]?_0x3f3107[_0xe54c('0x8')][_0xe54c('0xb')]||null:null,'include':_0x3f3107[_0xe54c('0x8')]?_0x3f3107[_0xe54c('0x8')][_0xe54c('0xc')]?_['map'](_0x3f3107['options'][_0xe54c('0xc')],function(_0x3c547b){return{'model':db[_0x3c547b['model']],'as':_0x3c547b['as'],'attributes':_0x3c547b['as']==='Contact'?_[_0xe54c('0x29')](_0x2926dd):_0x3c547b['attributes'],'include':_0x3c547b[_0xe54c('0xc')]?_[_0xe54c('0xd')](_0x3c547b[_0xe54c('0xc')],function(_0x33542f){return{'model':db[_0x33542f[_0xe54c('0xe')]],'as':_0x33542f['as'],'attributes':_0x33542f[_0xe54c('0xa')],'include':_0x33542f['include']?_[_0xe54c('0xd')](_0x33542f[_0xe54c('0xc')],function(_0x519a4b){return{'model':db[_0x519a4b['model']],'as':_0x519a4b['as'],'attributes':_0x519a4b[_0xe54c('0xa')]};}):[]};}):[]};}):[]:[]})[_0xe54c('0x19')](function(_0x2cf7ce){logger['info'](_0xe54c('0x5'),_0x3f3107);logger[_0xe54c('0xf')](_0xe54c('0x5'),_0x3f3107,JSON['stringify'](_0x2cf7ce));_0x2ca333(_0x2cf7ce);})[_0xe54c('0x10')](function(_0x505251){logger[_0xe54c('0x11')](_0xe54c('0x5'),_0x505251[_0xe54c('0x12')],_0x3f3107);_0x463d6c(_0x3d8d7c['error'](0x1f4,_0x505251[_0xe54c('0x12')]));});});});};exports['GetContactByPhone']=function(_0x43b716){var _0x4ec1bf=this;return new Promise(function(_0xf529c3,_0x1b30cb){return db['CmContact'][_0xe54c('0x3d')]({'raw':!![],'where':{'phone':_0x43b716[_0xe54c('0x8')][_0xe54c('0x9')][_0xe54c('0x3e')]},'attributes':['id',_0xe54c('0x3f')],'order':[['id','DESC']]})[_0xe54c('0x19')](function(_0x437a9b){logger[_0xe54c('0x16')](_0xe54c('0x40'),_0x43b716);logger['debug'](_0xe54c('0x40'),_0x43b716,JSON[_0xe54c('0x17')](_0x437a9b));_0xf529c3(_0x437a9b);})[_0xe54c('0x10')](function(_0x24dd8d){logger[_0xe54c('0x11')](_0xe54c('0x40'),_0x24dd8d[_0xe54c('0x12')],_0x43b716);_0x1b30cb(_0x4ec1bf[_0xe54c('0x11')](0x1f4,_0x24dd8d['message']));});});};exports['ResetActiveCalls']=function(_0x2f4a86){var _0x3e50c7=this;return new Promise(function(_0x2138e2,_0x139572){return db[_0xe54c('0x24')][_0xe54c('0x25')](function(_0x3f7162){var _0x82af18=_0x2f4a86[_0xe54c('0x8')]&&_0x2f4a86[_0xe54c('0x8')][_0xe54c('0x9')]?_0x2f4a86['options'][_0xe54c('0x9')]:{};return db['CmHopper'][_0xe54c('0x1c')](_0x2f4a86[_0xe54c('0x1d')],{'where':_0x82af18,'transaction':_0x3f7162})[_0xe54c('0x19')](function(_0x1d38c9){logger[_0xe54c('0x16')](_0xe54c('0x41'),_0x2f4a86);logger[_0xe54c('0xf')]('ResetActiveCalls',_0x2f4a86,JSON[_0xe54c('0x17')](_0x1d38c9));_0x2138e2(_0x1d38c9);})[_0xe54c('0x10')](function(_0xa42b2){logger[_0xe54c('0x11')](_0xe54c('0x41'),_0xa42b2['message'],_0x2f4a86);_0x139572(_0x3e50c7[_0xe54c('0x11')](0x1f4,_0xa42b2[_0xe54c('0x12')]));});});});};exports[_0xe54c('0x42')]=function(_0x585697){var _0x5f52fe=this;var _0x2388b3=_0x585697[_0xe54c('0x1d')][_0xe54c('0x9')][_0xe54c('0x43')];var _0x215298=_0x585697['body'][_0xe54c('0x9')][_0xe54c('0x44')];var _0x1ffc57=_0x585697[_0xe54c('0x1d')][_0xe54c('0x9')][_0xe54c('0x45')];return new Promise(function(_0x3fd06c,_0x55f63b){return db['CmHopper'][_0xe54c('0x7')]({'where':{'voiceQueueId':{'$in':_0x2388b3},'recallme':0x1,'active':0x0,'recallmeNotifiedDate':{'$eq':null},'scheduledat':{'$and':{'$lte':db[_0xe54c('0x24')][_0xe54c('0x46')](_0xe54c('0x47')+_0x215298+'\x20MINUTE'),'$gt':db[_0xe54c('0x24')][_0xe54c('0x46')]('NOW()')}},'UserId':{'$in':_0x1ffc57}},'include':[{'model':db['CmContact'],'as':'Contact'},{'model':db[_0xe54c('0x48')],'as':_0xe54c('0x2a'),'attributes':['id',_0xe54c('0x2b'),_0xe54c('0x49')]},{'model':db[_0xe54c('0x4a')],'as':'List'}]})['then'](function(_0x4e790c){if(_0x4e790c[_0xe54c('0x2c')]>0x0){return db[_0xe54c('0x24')][_0xe54c('0x25')](function(_0x1c6555){return db[_0xe54c('0x6')][_0xe54c('0x1c')]({'recallmeNotifiedDate':db[_0xe54c('0x24')][_0xe54c('0x46')](_0xe54c('0x4b'))},{'where':{'id':{'$in':_[_0xe54c('0xd')](_0x4e790c,'id')}},'transaction':_0x1c6555})['then'](function(){_0x3fd06c(_0x4e790c);})[_0xe54c('0x10')](function(_0x1d8915){logger[_0xe54c('0x11')](_0xe54c('0x42'),_0x1d8915[_0xe54c('0x12')],_0x585697);_0x55f63b(_0x5f52fe['error'](0x1f4,_0x1d8915[_0xe54c('0x12')]));});})[_0xe54c('0x10')](function(_0x5bd41c){logger[_0xe54c('0x11')](_0xe54c('0x42'),_0x5bd41c[_0xe54c('0x12')],_0x585697);_0x55f63b(_0x5f52fe['error'](0x1f4,_0x5bd41c[_0xe54c('0x12')]));});}else{_0x3fd06c(_0x4e790c);}});});};
\ No newline at end of file
+var _0xde0a=['\x20MINUTE','NOW()','Agent','voicePause','List','CmHopperHandlePreviewRecallNotifications','lodash','moment','bluebird','../../config/logger','rpc','GetCmHopper','CmHopper','findAll','options','where','attributes','map','include','model','then','info','debug','stringify','catch','error','message','ShowCmHopper','find','raw','CreateCmHopper','create','body','UpdateCmHopper','update','limit','UpdateCmHopper\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]','active','DestroyCmHopper','GetContactDialer','CmContact','sequelize','transaction','order','LOCK','UPDATE','User','name','includes','push','all','length','dataValues','CmHopperFinal','MoveContactManagedDialer\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]','destroy','MoveContactManagedDialer','CountReScheduled','COUNT','literal','format','\x22%s\x22','\x20,\x201,\x20null','contactsRescheduled','GetContactRecallMe','describe','UserId','GetCmHopperPreview','Contact','keys','GetContactByPhone','findOne','phone','dialTimezone','DESC','getContactByPhone','ResetActiveCalls','interval','availableAgentsIds','NOW()\x20+\x20INTERVAL\x20'];(function(_0x219bb8,_0x32f510){var _0x8f8340=function(_0xec2c6a){while(--_0xec2c6a){_0x219bb8['push'](_0x219bb8['shift']());}};_0x8f8340(++_0x32f510);}(_0xde0a,0xf6));var _0xade0=function(_0x3e6565,_0x46594b){_0x3e6565=_0x3e6565-0x0;var _0x45e6b6=_0xde0a[_0x3e6565];return _0x45e6b6;};'use strict';var _=require(_0xade0('0x0'));var util=require('util');var moment=require(_0xade0('0x1'));var BPromise=require(_0xade0('0x2'));var db=require('../../mysqldb')['db'];var logger=require(_0xade0('0x3'))(_0xade0('0x4'));exports[_0xade0('0x5')]=function(_0x4dd849){var _0x11ff5f=this;return new Promise(function(_0x154ed9,_0x1d88b0){return db[_0xade0('0x6')][_0xade0('0x7')]({'raw':_0x4dd849[_0xade0('0x8')]?_0x4dd849['options']['raw']===undefined?!![]:![]:!![],'where':_0x4dd849[_0xade0('0x8')]?_0x4dd849[_0xade0('0x8')][_0xade0('0x9')]||null:null,'attributes':_0x4dd849[_0xade0('0x8')]?_0x4dd849['options'][_0xade0('0xa')]||null:null,'limit':_0x4dd849[_0xade0('0x8')]?_0x4dd849[_0xade0('0x8')]['limit']||null:null,'include':_0x4dd849[_0xade0('0x8')]?_0x4dd849[_0xade0('0x8')]['include']?_[_0xade0('0xb')](_0x4dd849['options'][_0xade0('0xc')],function(_0x11f965){return{'model':db[_0x11f965[_0xade0('0xd')]],'as':_0x11f965['as'],'attributes':_0x11f965[_0xade0('0xa')],'include':_0x11f965[_0xade0('0xc')]?_['map'](_0x11f965['include'],function(_0x22c1d6){return{'model':db[_0x22c1d6[_0xade0('0xd')]],'as':_0x22c1d6['as'],'attributes':_0x22c1d6['attributes'],'include':_0x22c1d6[_0xade0('0xc')]?_[_0xade0('0xb')](_0x22c1d6[_0xade0('0xc')],function(_0x27afc6){return{'model':db[_0x27afc6[_0xade0('0xd')]],'as':_0x27afc6['as'],'attributes':_0x27afc6['attributes']};}):[]};}):[]};}):[]:[]})[_0xade0('0xe')](function(_0x1c2177){logger[_0xade0('0xf')]('GetCmHopper',_0x4dd849);logger[_0xade0('0x10')]('GetCmHopper',_0x4dd849,JSON[_0xade0('0x11')](_0x1c2177));_0x154ed9(_0x1c2177);})[_0xade0('0x12')](function(_0x4b079d){logger[_0xade0('0x13')]('GetCmHopper',_0x4b079d[_0xade0('0x14')],_0x4dd849);_0x1d88b0(_0x11ff5f[_0xade0('0x13')](0x1f4,_0x4b079d[_0xade0('0x14')]));});});};exports[_0xade0('0x15')]=function(_0x4a0cf3){var _0x2a23ac=this;return new Promise(function(_0xb5c041,_0x17e35b){return db[_0xade0('0x6')][_0xade0('0x16')]({'raw':_0x4a0cf3[_0xade0('0x8')]?_0x4a0cf3[_0xade0('0x8')][_0xade0('0x17')]===undefined?!![]:![]:!![],'where':_0x4a0cf3['options']?_0x4a0cf3[_0xade0('0x8')][_0xade0('0x9')]||null:null,'attributes':_0x4a0cf3[_0xade0('0x8')]?_0x4a0cf3['options'][_0xade0('0xa')]||null:null,'include':_0x4a0cf3[_0xade0('0x8')]?_0x4a0cf3['options'][_0xade0('0xc')]?_[_0xade0('0xb')](_0x4a0cf3[_0xade0('0x8')][_0xade0('0xc')],function(_0x7b945c){return{'model':db[_0x7b945c[_0xade0('0xd')]],'as':_0x7b945c['as'],'attributes':_0x7b945c['attributes'],'include':_0x7b945c['include']?_[_0xade0('0xb')](_0x7b945c['include'],function(_0x42a3a5){return{'model':db[_0x42a3a5[_0xade0('0xd')]],'as':_0x42a3a5['as'],'attributes':_0x42a3a5[_0xade0('0xa')],'include':_0x42a3a5[_0xade0('0xc')]?_[_0xade0('0xb')](_0x42a3a5[_0xade0('0xc')],function(_0x4c78f1){return{'model':db[_0x4c78f1[_0xade0('0xd')]],'as':_0x4c78f1['as'],'attributes':_0x4c78f1['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x34b1){logger['info'](_0xade0('0x15'),_0x4a0cf3);logger[_0xade0('0x10')]('ShowCmHopper',_0x4a0cf3,JSON[_0xade0('0x11')](_0x34b1));_0xb5c041(_0x34b1);})[_0xade0('0x12')](function(_0x3bb3ff){logger[_0xade0('0x13')](_0xade0('0x15'),_0x3bb3ff[_0xade0('0x14')],_0x4a0cf3);_0x17e35b(_0x2a23ac['error'](0x1f4,_0x3bb3ff[_0xade0('0x14')]));});});};exports[_0xade0('0x18')]=function(_0x5eb17f){var _0x1b5968=this;return new Promise(function(_0x1206ef,_0x1abb91){return db[_0xade0('0x6')][_0xade0('0x19')](_0x5eb17f[_0xade0('0x1a')],{'raw':_0x5eb17f[_0xade0('0x8')]?_0x5eb17f['options'][_0xade0('0x17')]===undefined?!![]:![]:!![]})['then'](function(_0x399470){logger['info']('CreateCmHopper',_0x5eb17f);logger[_0xade0('0x10')](_0xade0('0x18'),_0x5eb17f,JSON[_0xade0('0x11')](_0x399470));_0x1206ef(_0x399470);})['catch'](function(_0x5910e9){logger[_0xade0('0x13')](_0xade0('0x18'),_0x5910e9[_0xade0('0x14')],_0x5eb17f);_0x1abb91(_0x1b5968['error'](0x1f4,_0x5910e9[_0xade0('0x14')]));});});};exports[_0xade0('0x1b')]=function(_0x481295){var _0x3ef468=this;return new Promise(function(_0x88c2c5,_0x4864f9){return db[_0xade0('0x6')][_0xade0('0x1c')](_0x481295['body'],{'raw':_0x481295[_0xade0('0x8')]?_0x481295[_0xade0('0x8')][_0xade0('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x481295[_0xade0('0x8')]?_0x481295[_0xade0('0x8')][_0xade0('0x9')]||null:null,'attributes':_0x481295['options']?_0x481295['options'][_0xade0('0xa')]||null:null,'limit':_0x481295[_0xade0('0x8')]?_0x481295['options'][_0xade0('0x1d')]||null:null})['then'](function(_0x5f8282){logger[_0xade0('0xf')](_0xade0('0x1b'),_0x481295);logger[_0xade0('0xf')](_0xade0('0x1e'),JSON[_0xade0('0x11')](_0x481295['options'][_0xade0('0x9')]),_0x481295['body'][_0xade0('0x1f')]);logger['debug']('UpdateCmHopper',_0x481295,JSON[_0xade0('0x11')](_0x5f8282));_0x88c2c5(_0x5f8282);})[_0xade0('0x12')](function(_0x23498d){logger[_0xade0('0x13')](_0xade0('0x1b'),_0x23498d['message'],_0x481295);_0x4864f9(_0x3ef468[_0xade0('0x13')](0x1f4,_0x23498d[_0xade0('0x14')]));});});};exports[_0xade0('0x20')]=function(_0x1ae07f){var _0x5ab29b=this;return new Promise(function(_0x2b5048,_0x591d38){return db[_0xade0('0x6')]['destroy']({'where':_0x1ae07f[_0xade0('0x8')]?_0x1ae07f[_0xade0('0x8')]['where']||null:null})[_0xade0('0xe')](function(_0xd0e05d){logger[_0xade0('0xf')](_0xade0('0x20'),_0x1ae07f);logger[_0xade0('0x10')](_0xade0('0x20'),_0x1ae07f,JSON['stringify'](_0xd0e05d));_0x2b5048(_0xd0e05d);})[_0xade0('0x12')](function(_0x337854){logger[_0xade0('0x13')](_0xade0('0x20'),_0x337854[_0xade0('0x14')],_0x1ae07f);_0x591d38(_0x5ab29b[_0xade0('0x13')](0x1f4,_0x337854[_0xade0('0x14')]));});});};exports[_0xade0('0x21')]=function(_0x3c3e5e){var _0x1ec70a=this;return new Promise(function(_0x5f31cd,_0x45ed99){return db[_0xade0('0x22')]['describe']()['then'](function(_0x539e05){return db[_0xade0('0x23')][_0xade0('0x24')](function(_0x4b722a){return db[_0xade0('0x6')][_0xade0('0x7')]({'where':_0x3c3e5e[_0xade0('0x8')]?_0x3c3e5e['options']['where']||null:null,'attributes':_0x3c3e5e['options']?_0x3c3e5e['options'][_0xade0('0xa')]||null:null,'limit':_0x3c3e5e['options']?_0x3c3e5e[_0xade0('0x8')]['limit']||null:null,'order':_0x3c3e5e[_0xade0('0x8')]?_0x3c3e5e['options'][_0xade0('0x25')]||null:null,'transaction':_0x4b722a,'lock':_0x4b722a[_0xade0('0x26')][_0xade0('0x27')],'include':[{'model':db['CmContact'],'as':'Contact','attributes':_['keys'](_0x539e05)},{'model':db[_0xade0('0x28')],'as':'Agent','attributes':['id',_0xade0('0x29'),'voicePause']}]})['then'](function(_0x18d587){var _0x2b0c4a=[];var _0x27bf08=[];for(var _0x1da14e=0x0;_0x1da14e<_0x18d587['length'];_0x1da14e+=0x1){var _0x26003f=_0x18d587[_0x1da14e]['UserId'];if(_0x26003f===null){_0x2b0c4a['push'](_0x18d587[_0x1da14e]['update'](_0x3c3e5e[_0xade0('0x1a')],{'transaction':_0x4b722a}));}else if(!_0x27bf08[_0xade0('0x2a')](_0x26003f)){_0x27bf08['push'](_0x26003f);_0x2b0c4a[_0xade0('0x2b')](_0x18d587[_0x1da14e][_0xade0('0x1c')](_0x3c3e5e['body'],{'transaction':_0x4b722a}));}}return BPromise[_0xade0('0x2c')](_0x2b0c4a);});})[_0xade0('0xe')](function(_0x4b9d53){logger[_0xade0('0xf')](_0xade0('0x21'),_0x3c3e5e);if(_0x4b9d53[_0xade0('0x2d')]>0x0){logger[_0xade0('0xf')]('GetContactDialer\x20hopperId\x20[%s]\x20-\x20contactId\x20[%s]\x20-\x20active\x20status\x20[%s]',_0x4b9d53[0x0][_0xade0('0x2e')]['id'],_0x4b9d53[0x0][_0xade0('0x2e')]['ContactId'],_0x4b9d53[0x0][_0xade0('0x2e')]['active']);}logger[_0xade0('0x10')](_0xade0('0x21'),_0x3c3e5e,JSON[_0xade0('0x11')](_0x4b9d53));_0x5f31cd(_0x4b9d53);})[_0xade0('0x12')](function(_0x26c8ce){logger[_0xade0('0x13')](_0xade0('0x21'),_0x26c8ce[_0xade0('0x14')],_0x3c3e5e);_0x45ed99(_0x1ec70a[_0xade0('0x13')](0x1f4,_0x26c8ce[_0xade0('0x14')]));});});});};exports['MoveContactManagedDialer']=function(_0x3f9f68){var _0x10539a=this;return new Promise(function(_0x284988,_0x2466e4){return db[_0xade0('0x23')]['transaction'](function(_0x545976){return db[_0xade0('0x2f')][_0xade0('0x19')](_0x3f9f68[_0xade0('0x1a')],{'raw':_0x3f9f68[_0xade0('0x8')]?_0x3f9f68['options'][_0xade0('0x17')]===undefined?!![]:![]:!![],'transaction':_0x545976})[_0xade0('0xe')](function(){logger[_0xade0('0xf')](_0xade0('0x30'),JSON[_0xade0('0x11')](_0x3f9f68[_0xade0('0x8')][_0xade0('0x9')]),_0x3f9f68[_0xade0('0x8')]['where'][_0xade0('0x1f')]);return db[_0xade0('0x6')][_0xade0('0x31')]({'where':_0x3f9f68[_0xade0('0x8')]?_0x3f9f68[_0xade0('0x8')][_0xade0('0x9')]||null:null,'transaction':_0x545976});});})[_0xade0('0xe')](function(_0x36a3c7){logger[_0xade0('0xf')]('MoveContactManagedDialer',_0x3f9f68);logger[_0xade0('0x10')](_0xade0('0x32'),_0x3f9f68,JSON[_0xade0('0x11')](_0x36a3c7));_0x284988(_0x36a3c7);})[_0xade0('0x12')](function(_0x5e2d1d){logger[_0xade0('0x13')](_0xade0('0x32'),_0x5e2d1d[_0xade0('0x14')],_0x3f9f68);_0x2466e4(_0x10539a[_0xade0('0x13')](0x1f4,_0x5e2d1d[_0xade0('0x14')]));});});};exports[_0xade0('0x33')]=function(_0x5121d7){var _0x4244b5=this;return new Promise(function(_0x12c3f2,_0x1b69c9){return db['CmHopper'][_0xade0('0x7')]({'raw':_0x5121d7[_0xade0('0x8')]?_0x5121d7[_0xade0('0x8')]['raw']===undefined?!![]:![]:!![],'where':_0x5121d7['options']?_0x5121d7[_0xade0('0x8')][_0xade0('0x9')]||null:null,'attributes':[[db['sequelize']['fn'](_0xade0('0x34'),db['sequelize']['fn']('IF',db['sequelize'][_0xade0('0x35')]('`scheduledat`\x20>=\x20'+util[_0xade0('0x36')](_0xade0('0x37'),moment()[_0xade0('0x36')]('YYYY-MM-DD\x20HH:mm:ss'))+_0xade0('0x38')))),_0xade0('0x39')]]})[_0xade0('0xe')](function(_0x2dd0a0){logger[_0xade0('0xf')](_0xade0('0x33'),_0x5121d7);logger['debug'](_0xade0('0x33'),_0x5121d7,JSON[_0xade0('0x11')](_0x2dd0a0));_0x12c3f2(_0x2dd0a0);})[_0xade0('0x12')](function(_0x3c50ba){logger[_0xade0('0x13')](_0xade0('0x33'),_0x3c50ba[_0xade0('0x14')],_0x5121d7);_0x1b69c9(_0x4244b5[_0xade0('0x13')](0x1f4,_0x3c50ba[_0xade0('0x14')]));});});};exports[_0xade0('0x3a')]=function(_0x55c992){var _0x5cbd89=this;return new Promise(function(_0x58ba29,_0x355a31){return db['CmContact'][_0xade0('0x3b')]()[_0xade0('0xe')](function(){return db[_0xade0('0x23')][_0xade0('0x24')](function(_0x2260ba){return db[_0xade0('0x6')][_0xade0('0x7')]({'where':_0x55c992[_0xade0('0x8')]?_0x55c992['options'][_0xade0('0x9')]||null:null,'attributes':_0x55c992[_0xade0('0x8')]?_0x55c992[_0xade0('0x8')][_0xade0('0xa')]||null:null,'limit':0x1,'order':_0x55c992[_0xade0('0x8')]?_0x55c992[_0xade0('0x8')][_0xade0('0x25')]||null:null,'group':db[_0xade0('0x6')][_0xade0('0x3c')],'transaction':_0x2260ba,'lock':_0x2260ba['LOCK']['UPDATE'],'include':_0x55c992[_0xade0('0x8')]?_0x55c992['options'][_0xade0('0xc')]?_[_0xade0('0xb')](_0x55c992[_0xade0('0x8')][_0xade0('0xc')],function(_0x17c659){return{'model':db[_0x17c659[_0xade0('0xd')]],'as':_0x17c659['as'],'attributes':_0x17c659[_0xade0('0xa')],'include':_0x17c659[_0xade0('0xc')]?_[_0xade0('0xb')](_0x17c659['include'],function(_0x70c576){return{'model':db[_0x70c576[_0xade0('0xd')]],'as':_0x70c576['as'],'attributes':_0x70c576[_0xade0('0xa')],'include':_0x70c576[_0xade0('0xc')]?_['map'](_0x70c576[_0xade0('0xc')],function(_0x58e453){return{'model':db[_0x58e453[_0xade0('0xd')]],'as':_0x58e453['as'],'attributes':_0x58e453[_0xade0('0xa')]};}):[]};}):[]};}):[]:[]})[_0xade0('0xe')](function(_0x528124){var _0x179142=[];for(var _0x3e53a3=0x0;_0x3e53a3<_0x528124[_0xade0('0x2d')];_0x3e53a3+=0x1){_0x179142[_0xade0('0x2b')](_0x528124[_0x3e53a3][_0xade0('0x1c')](_0x55c992[_0xade0('0x1a')],{'transaction':_0x2260ba}));}return BPromise[_0xade0('0x2c')](_0x179142);});})[_0xade0('0xe')](function(_0x7e187c){logger[_0xade0('0xf')](_0xade0('0x3a'),_0x55c992);logger[_0xade0('0x10')](_0xade0('0x3a'),_0x55c992,JSON[_0xade0('0x11')](_0x7e187c));_0x58ba29(_0x7e187c);})[_0xade0('0x12')](function(_0x5c43d9){logger[_0xade0('0x13')](_0xade0('0x3a'),_0x5c43d9[_0xade0('0x14')],_0x55c992);_0x355a31(_0x5cbd89[_0xade0('0x13')](0x1f4,_0x5c43d9[_0xade0('0x14')]));});});});};exports[_0xade0('0x3d')]=function(_0x3b15e7){var _0x234ae5=this;return new Promise(function(_0x1ab8eb,_0x440646){db[_0xade0('0x22')]['describe']()[_0xade0('0xe')](function(_0x783afa){return db[_0xade0('0x6')][_0xade0('0x7')]({'raw':_0x3b15e7[_0xade0('0x8')]?_0x3b15e7['options'][_0xade0('0x17')]===undefined?!![]:![]:!![],'where':_0x3b15e7[_0xade0('0x8')]?_0x3b15e7[_0xade0('0x8')][_0xade0('0x9')]||null:null,'attributes':_0x3b15e7[_0xade0('0x8')]?_0x3b15e7['options'][_0xade0('0xa')]||null:null,'limit':_0x3b15e7[_0xade0('0x8')]?_0x3b15e7[_0xade0('0x8')][_0xade0('0x1d')]||null:null,'include':_0x3b15e7[_0xade0('0x8')]?_0x3b15e7[_0xade0('0x8')]['include']?_['map'](_0x3b15e7[_0xade0('0x8')]['include'],function(_0x2046bf){return{'model':db[_0x2046bf[_0xade0('0xd')]],'as':_0x2046bf['as'],'attributes':_0x2046bf['as']===_0xade0('0x3e')?_[_0xade0('0x3f')](_0x783afa):_0x2046bf[_0xade0('0xa')],'include':_0x2046bf[_0xade0('0xc')]?_['map'](_0x2046bf[_0xade0('0xc')],function(_0x36f6dd){return{'model':db[_0x36f6dd[_0xade0('0xd')]],'as':_0x36f6dd['as'],'attributes':_0x36f6dd['attributes'],'include':_0x36f6dd[_0xade0('0xc')]?_[_0xade0('0xb')](_0x36f6dd[_0xade0('0xc')],function(_0x3c0c7b){return{'model':db[_0x3c0c7b['model']],'as':_0x3c0c7b['as'],'attributes':_0x3c0c7b[_0xade0('0xa')]};}):[]};}):[]};}):[]:[]})[_0xade0('0xe')](function(_0x2af82f){logger[_0xade0('0xf')](_0xade0('0x5'),_0x3b15e7);logger[_0xade0('0x10')](_0xade0('0x5'),_0x3b15e7,JSON['stringify'](_0x2af82f));_0x1ab8eb(_0x2af82f);})[_0xade0('0x12')](function(_0x587c43){logger[_0xade0('0x13')]('GetCmHopper',_0x587c43[_0xade0('0x14')],_0x3b15e7);_0x440646(_0x234ae5['error'](0x1f4,_0x587c43[_0xade0('0x14')]));});});});};exports[_0xade0('0x40')]=function(_0x4b1d17){var _0x46c63c=this;return new Promise(function(_0x2c68e7,_0x248e18){return db[_0xade0('0x22')][_0xade0('0x41')]({'raw':!![],'where':{'phone':_0x4b1d17[_0xade0('0x8')][_0xade0('0x9')][_0xade0('0x42')]},'attributes':['id',_0xade0('0x43')],'order':[['id',_0xade0('0x44')]]})['then'](function(_0x2afc04){logger[_0xade0('0xf')](_0xade0('0x45'),_0x4b1d17);logger[_0xade0('0x10')](_0xade0('0x45'),_0x4b1d17,JSON['stringify'](_0x2afc04));_0x2c68e7(_0x2afc04);})[_0xade0('0x12')](function(_0x51a756){logger[_0xade0('0x13')](_0xade0('0x45'),_0x51a756[_0xade0('0x14')],_0x4b1d17);_0x248e18(_0x46c63c[_0xade0('0x13')](0x1f4,_0x51a756[_0xade0('0x14')]));});});};exports[_0xade0('0x46')]=function(_0x1983d7){var _0x311331=this;return new Promise(function(_0x101417,_0xfbb308){return db[_0xade0('0x23')][_0xade0('0x24')](function(_0x286a3b){var _0x51b865=_0x1983d7['options']&&_0x1983d7[_0xade0('0x8')][_0xade0('0x9')]?_0x1983d7['options'][_0xade0('0x9')]:{};return db[_0xade0('0x6')][_0xade0('0x1c')](_0x1983d7[_0xade0('0x1a')],{'where':_0x51b865,'transaction':_0x286a3b})[_0xade0('0xe')](function(_0x3f79b2){logger[_0xade0('0xf')](_0xade0('0x46'),_0x1983d7);logger[_0xade0('0x10')]('ResetActiveCalls',_0x1983d7,JSON[_0xade0('0x11')](_0x3f79b2));_0x101417(_0x3f79b2);})[_0xade0('0x12')](function(_0x5a4dbd){logger['error']('ResetActiveCalls',_0x5a4dbd['message'],_0x1983d7);_0xfbb308(_0x311331['error'](0x1f4,_0x5a4dbd[_0xade0('0x14')]));});});});};exports['CmHopperHandlePreviewRecallNotifications']=function(_0x23be95){var _0x31d8c6=this;var _0x16fff3=_0x23be95['body'][_0xade0('0x9')]['voiceQueueIds'];var _0x4da961=_0x23be95['body'][_0xade0('0x9')][_0xade0('0x47')];var _0x1c05ec=_0x23be95[_0xade0('0x1a')][_0xade0('0x9')][_0xade0('0x48')];return new Promise(function(_0x426f07,_0x1cb9c6){return db[_0xade0('0x6')][_0xade0('0x7')]({'where':{'voiceQueueId':{'$in':_0x16fff3},'recallme':0x1,'active':0x0,'recallmeNotifiedDate':{'$eq':null},'scheduledat':{'$and':{'$lte':db['sequelize'][_0xade0('0x35')](_0xade0('0x49')+_0x4da961+_0xade0('0x4a')),'$gt':db[_0xade0('0x23')]['literal'](_0xade0('0x4b'))}},'UserId':{'$in':_0x1c05ec}},'include':[{'model':db['CmContact'],'as':'Contact'},{'model':db['User'],'as':_0xade0('0x4c'),'attributes':['id','name',_0xade0('0x4d')]},{'model':db['CmList'],'as':_0xade0('0x4e')}]})[_0xade0('0xe')](function(_0x5eaa78){if(_0x5eaa78[_0xade0('0x2d')]>0x0){return db[_0xade0('0x23')]['transaction'](function(_0x127d41){return db['CmHopper']['update']({'recallmeNotifiedDate':db[_0xade0('0x23')][_0xade0('0x35')](_0xade0('0x4b'))},{'where':{'id':{'$in':_['map'](_0x5eaa78,'id')}},'transaction':_0x127d41})['then'](function(){_0x426f07(_0x5eaa78);})['catch'](function(_0x34595d){logger[_0xade0('0x13')](_0xade0('0x4f'),_0x34595d['message'],_0x23be95);_0x1cb9c6(_0x31d8c6['error'](0x1f4,_0x34595d['message']));});})[_0xade0('0x12')](function(_0x3c2838){logger[_0xade0('0x13')](_0xade0('0x4f'),_0x3c2838['message'],_0x23be95);_0x1cb9c6(_0x31d8c6[_0xade0('0x13')](0x1f4,_0x3c2838[_0xade0('0x14')]));});}else{_0x426f07(_0x5eaa78);}});});};
\ No newline at end of file
index 875f14b..7508910 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd258=['create','/preview','getPreview','/timezone','put','delete','/:id','destroy','exports','Router','isAuthenticated','index','get','/describe','/opencontacts','getOpenContacts','/timezones','getTimezones','show','getPreviewRecall'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xd258,0x185));var _0x8d25=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd258[_0x3dd15e];return _0x231fd0;};'use strict';var express=require('express');var router=express[_0x8d25('0x0')]();var auth=require('../../components/auth/service');var controller=require('./cmHopper.controller');router['get']('/',auth[_0x8d25('0x1')](),controller[_0x8d25('0x2')]);router[_0x8d25('0x3')](_0x8d25('0x4'),auth[_0x8d25('0x1')](),controller['describe']);router['get'](_0x8d25('0x5'),auth[_0x8d25('0x1')](),controller[_0x8d25('0x6')]);router[_0x8d25('0x3')](_0x8d25('0x7'),auth['isAuthenticated'](),controller[_0x8d25('0x8')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0x8d25('0x9')]);router[_0x8d25('0x3')]('/:id/previewrecall',auth[_0x8d25('0x1')](),controller[_0x8d25('0xa')]);router['post']('/',auth['isAuthenticated'](),controller[_0x8d25('0xb')]);router['post'](_0x8d25('0xc'),auth[_0x8d25('0x1')](),controller[_0x8d25('0xd')]);router['post'](_0x8d25('0xe'),auth[_0x8d25('0x1')](),controller['getTimezone']);router[_0x8d25('0xf')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0x8d25('0x10')](_0x8d25('0x11'),auth[_0x8d25('0x1')](),controller[_0x8d25('0x12')]);module[_0x8d25('0x13')]=router;
\ No newline at end of file
+var _0x20a6=['../../components/auth/service','get','isAuthenticated','/describe','getOpenContacts','/timezones','getTimezones','/:id/previewrecall','getPreviewRecall','post','create','/timezone','getTimezone','put','/:id','update','destroy','exports','express','Router'];(function(_0x217db9,_0xda9220){var _0x5c813c=function(_0x553e8b){while(--_0x553e8b){_0x217db9['push'](_0x217db9['shift']());}};_0x5c813c(++_0xda9220);}(_0x20a6,0x12a));var _0x620a=function(_0x400ef0,_0x2bf48e){_0x400ef0=_0x400ef0-0x0;var _0x417556=_0x20a6[_0x400ef0];return _0x417556;};'use strict';var express=require(_0x620a('0x0'));var router=express[_0x620a('0x1')]();var auth=require(_0x620a('0x2'));var controller=require('./cmHopper.controller');router[_0x620a('0x3')]('/',auth[_0x620a('0x4')](),controller['index']);router[_0x620a('0x3')](_0x620a('0x5'),auth['isAuthenticated'](),controller['describe']);router[_0x620a('0x3')]('/opencontacts',auth[_0x620a('0x4')](),controller[_0x620a('0x6')]);router[_0x620a('0x3')](_0x620a('0x7'),auth['isAuthenticated'](),controller[_0x620a('0x8')]);router['get']('/:id',auth[_0x620a('0x4')](),controller['show']);router['get'](_0x620a('0x9'),auth[_0x620a('0x4')](),controller[_0x620a('0xa')]);router[_0x620a('0xb')]('/',auth[_0x620a('0x4')](),controller[_0x620a('0xc')]);router['post']('/preview',auth[_0x620a('0x4')](),controller['getPreview']);router[_0x620a('0xb')](_0x620a('0xd'),auth[_0x620a('0x4')](),controller[_0x620a('0xe')]);router[_0x620a('0xf')](_0x620a('0x10'),auth[_0x620a('0x4')](),controller[_0x620a('0x11')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0x620a('0x12')]);module[_0x620a('0x13')]=router;
\ No newline at end of file
index c4cbc9b..f877b45 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe9aa=['INTEGER','STRING','DATE','format','YYYY-MM-DD\x20HH:mm:ss','moment'];(function(_0x261940,_0x1a3504){var _0x20a8ad=function(_0x22023e){while(--_0x22023e){_0x261940['push'](_0x261940['shift']());}};_0x20a8ad(++_0x1a3504);}(_0xe9aa,0x1b5));var _0xae9a=function(_0xa9797d,_0x18c051){_0xa9797d=_0xa9797d-0x0;var _0x49a3c6=_0xe9aa[_0xa9797d];return _0x49a3c6;};'use strict';var moment=require(_0xae9a('0x0'));var Sequelize=require('sequelize');module['exports']={'CmHopperId':{'type':Sequelize[_0xae9a('0x1')]},'phone':{'type':Sequelize[_0xae9a('0x2')],'allowNull':![]},'OrderBy':{'type':Sequelize[_0xae9a('0x1')],'defaultValue':0x0},'scheduledat':{'type':Sequelize[_0xae9a('0x3')],'defaultValue':moment()[_0xae9a('0x4')](_0xae9a('0x5'))},'countbusyretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0xae9a('0x1')],'defaultValue':0x0},'countnosuchnumberretry':{'type':Sequelize[_0xae9a('0x1')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0xae9a('0x1')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0xae9a('0x1')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0xae9a('0x1')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0xae9a('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x222b=['STRING','DATE','format','moment','INTEGER'];(function(_0x5e9a11,_0x22be7a){var _0x5c187a=function(_0x46de7e){while(--_0x46de7e){_0x5e9a11['push'](_0x5e9a11['shift']());}};_0x5c187a(++_0x22be7a);}(_0x222b,0x102));var _0xb222=function(_0x554047,_0x46ec41){_0x554047=_0x554047-0x0;var _0x5d11e4=_0x222b[_0x554047];return _0x5d11e4;};'use strict';var moment=require(_0xb222('0x0'));var Sequelize=require('sequelize');module['exports']={'CmHopperId':{'type':Sequelize[_0xb222('0x1')]},'phone':{'type':Sequelize[_0xb222('0x2')],'allowNull':![]},'OrderBy':{'type':Sequelize[_0xb222('0x1')],'defaultValue':0x0},'scheduledat':{'type':Sequelize[_0xb222('0x3')],'defaultValue':moment()[_0xb222('0x4')]('YYYY-MM-DD\x20HH:mm:ss')},'countbusyretry':{'type':Sequelize[_0xb222('0x1')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0xb222('0x1')],'defaultValue':0x0},'countnosuchnumberretry':{'type':Sequelize[_0xb222('0x1')],'defaultValue':0x0},'countdropretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0xb222('0x1')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0xb222('0x1')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0xb222('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index 105099d..d17fda0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd5a5=['findAll','show','params','keys','include','merge','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../mysqldb','offset','undefined','limit','count','status','Content-Range','apply','reject','save','destroy','then','get','CmHopperAdditionalPhones','UserProfileResource','end','sendStatus','stack','name','index','CmHopperAdditionalPhone','rawAttributes','fieldName','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','map','type','VIRTUAL','filter','options','includeAll'];(function(_0x5a98b1,_0x348ab8){var _0x394b02=function(_0x4fa0b9){while(--_0x4fa0b9){_0x5a98b1['push'](_0x5a98b1['shift']());}};_0x394b02(++_0x348ab8);}(_0xd5a5,0xab));var _0x5d5a=function(_0x1a08b8,_0x85e678){_0x1a08b8=_0x1a08b8-0x0;var _0x5ccf5c=_0xd5a5[_0x1a08b8];return _0x5ccf5c;};'use strict';var emlformat=require(_0x5d5a('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x5d5a('0x1'));var jsonpatch=require(_0x5d5a('0x2'));var rp=require(_0x5d5a('0x3'));var moment=require('moment');var BPromise=require(_0x5d5a('0x4'));var Mustache=require(_0x5d5a('0x5'));var util=require(_0x5d5a('0x6'));var path=require(_0x5d5a('0x7'));var sox=require(_0x5d5a('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x5d5a('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x5d5a('0xa'));var jsforce=require(_0x5d5a('0xb'));var deskjs=require(_0x5d5a('0xc'));var toCsv=require('to-csv');var querystring=require(_0x5d5a('0xd'));var Papa=require(_0x5d5a('0xe'));var Redis=require(_0x5d5a('0xf'));var authService=require(_0x5d5a('0x10'));var qs=require(_0x5d5a('0x11'));var as=require(_0x5d5a('0x12'));var hardwareService=require(_0x5d5a('0x13'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x5d5a('0x14'))['db'];function respondWithStatusCode(_0x2934fd,_0x251a1e){_0x251a1e=_0x251a1e||0xcc;return function(_0xd16615){if(_0xd16615){return _0x2934fd['sendStatus'](_0x251a1e);}return _0x2934fd['status'](_0x251a1e)['end']();};}function respondWithResult(_0x1ac89e,_0x5520eb){_0x5520eb=_0x5520eb||0xc8;return function(_0x591bf9){if(_0x591bf9){return _0x1ac89e['status'](_0x5520eb)['json'](_0x591bf9);}};}function respondWithFilteredResult(_0x43ed8a,_0x3dead4){return function(_0x2a13a6){if(_0x2a13a6){var _0x39e668=typeof _0x3dead4[_0x5d5a('0x15')]===_0x5d5a('0x16')&&typeof _0x3dead4[_0x5d5a('0x17')]==='undefined';var _0x3f1e29=_0x2a13a6[_0x5d5a('0x18')];var _0x4dd362=_0x39e668?0x0:_0x3dead4['offset'];var _0x438775=_0x39e668?_0x2a13a6[_0x5d5a('0x18')]:_0x3dead4[_0x5d5a('0x15')]+_0x3dead4[_0x5d5a('0x17')];var _0x5a87d5;if(_0x438775>=_0x3f1e29){_0x438775=_0x3f1e29;_0x5a87d5=0xc8;}else{_0x5a87d5=0xce;}_0x43ed8a[_0x5d5a('0x19')](_0x5a87d5);return _0x43ed8a['set'](_0x5d5a('0x1a'),_0x4dd362+'-'+_0x438775+'/'+_0x3f1e29)['json'](_0x2a13a6);}return null;};}function patchUpdates(_0x37515e){return function(_0x15f8f1){try{jsonpatch[_0x5d5a('0x1b')](_0x15f8f1,_0x37515e,!![]);}catch(_0x10d8f1){return BPromise[_0x5d5a('0x1c')](_0x10d8f1);}return _0x15f8f1[_0x5d5a('0x1d')]();};}function saveUpdates(_0x1b0070,_0x4cc4a3){return function(_0x341a4b){if(_0x341a4b){return _0x341a4b['update'](_0x1b0070)['then'](function(_0x5254e7){return _0x5254e7;});}return null;};}function removeEntity(_0x48bbaa,_0x1e2274){return function(_0x539e45){if(_0x539e45){return _0x539e45[_0x5d5a('0x1e')]()[_0x5d5a('0x1f')](function(){var _0x91dd8f=_0x539e45[_0x5d5a('0x20')]({'plain':!![]});var _0x431b6c=_0x5d5a('0x21');return db[_0x5d5a('0x22')][_0x5d5a('0x1e')]({'where':{'type':_0x431b6c,'resourceId':_0x91dd8f['id']}})[_0x5d5a('0x1f')](function(){return _0x539e45;});})[_0x5d5a('0x1f')](function(){_0x48bbaa[_0x5d5a('0x19')](0xcc)[_0x5d5a('0x23')]();});}};}function handleEntityNotFound(_0x4eb4a6,_0x2aa6f5){return function(_0xeab790){if(!_0xeab790){_0x4eb4a6[_0x5d5a('0x24')](0x194);}return _0xeab790;};}function handleError(_0x37f9e2,_0x4ce1e7){_0x4ce1e7=_0x4ce1e7||0x1f4;return function(_0x30e2ef){logger['error'](_0x30e2ef[_0x5d5a('0x25')]);if(_0x30e2ef[_0x5d5a('0x26')]){delete _0x30e2ef[_0x5d5a('0x26')];}_0x37f9e2['status'](_0x4ce1e7)['send'](_0x30e2ef);};}exports[_0x5d5a('0x27')]=function(_0x4f2f16,_0x5420ff){var _0x3f6bb3={},_0x5990f6={},_0x2c64e0={'count':0x0,'rows':[]};var _0x213b86=_['map'](db[_0x5d5a('0x28')][_0x5d5a('0x29')],function(_0x4ca156){return{'name':_0x4ca156[_0x5d5a('0x2a')],'type':_0x4ca156['type'][_0x5d5a('0x2b')]};});_0x5990f6[_0x5d5a('0x2c')]=_['map'](_0x213b86,_0x5d5a('0x26'));_0x5990f6['query']=_['keys'](_0x4f2f16[_0x5d5a('0x2d')]);_0x5990f6[_0x5d5a('0x2e')]=_[_0x5d5a('0x2f')](_0x5990f6[_0x5d5a('0x2c')],_0x5990f6[_0x5d5a('0x2d')]);_0x3f6bb3[_0x5d5a('0x30')]=_['intersection'](_0x5990f6['model'],qs[_0x5d5a('0x31')](_0x4f2f16[_0x5d5a('0x2d')][_0x5d5a('0x31')]));_0x3f6bb3[_0x5d5a('0x30')]=_0x3f6bb3[_0x5d5a('0x30')][_0x5d5a('0x32')]?_0x3f6bb3[_0x5d5a('0x30')]:_0x5990f6[_0x5d5a('0x2c')];if(!_0x4f2f16['query'][_0x5d5a('0x33')](_0x5d5a('0x34'))){_0x3f6bb3[_0x5d5a('0x17')]=qs[_0x5d5a('0x17')](_0x4f2f16[_0x5d5a('0x2d')][_0x5d5a('0x17')]);_0x3f6bb3[_0x5d5a('0x15')]=qs[_0x5d5a('0x15')](_0x4f2f16[_0x5d5a('0x2d')]['offset']);}_0x3f6bb3[_0x5d5a('0x35')]=qs[_0x5d5a('0x36')](_0x4f2f16['query'][_0x5d5a('0x36')]);_0x3f6bb3[_0x5d5a('0x37')]=qs['filters'](_[_0x5d5a('0x38')](_0x4f2f16[_0x5d5a('0x2d')],_0x5990f6[_0x5d5a('0x2e')]),_0x213b86);if(_0x4f2f16[_0x5d5a('0x2d')]['filter']){_0x3f6bb3[_0x5d5a('0x37')]=_['merge'](_0x3f6bb3[_0x5d5a('0x37')],{'$or':_[_0x5d5a('0x39')](_0x213b86,function(_0x47e6e2){if(_0x47e6e2[_0x5d5a('0x3a')]!==_0x5d5a('0x3b')){var _0x84d52b={};_0x84d52b[_0x47e6e2[_0x5d5a('0x26')]]={'$like':'%'+_0x4f2f16[_0x5d5a('0x2d')][_0x5d5a('0x3c')]+'%'};return _0x84d52b;}})});}_0x3f6bb3=_['merge']({},_0x3f6bb3,_0x4f2f16[_0x5d5a('0x3d')]);var _0x23438d={'where':_0x3f6bb3[_0x5d5a('0x37')]};return db[_0x5d5a('0x28')][_0x5d5a('0x18')](_0x23438d)['then'](function(_0xac3b95){_0x2c64e0['count']=_0xac3b95;if(_0x4f2f16[_0x5d5a('0x2d')][_0x5d5a('0x3e')]){_0x3f6bb3['include']=[{'all':!![]}];}return db['CmHopperAdditionalPhone'][_0x5d5a('0x3f')](_0x3f6bb3);})['then'](function(_0x887781){_0x2c64e0['rows']=_0x887781;return _0x2c64e0;})[_0x5d5a('0x1f')](respondWithFilteredResult(_0x5420ff,_0x3f6bb3))['catch'](handleError(_0x5420ff,null));};exports[_0x5d5a('0x40')]=function(_0x1da4dc,_0x263906){var _0x5462d1={'raw':!![],'where':{'id':_0x1da4dc[_0x5d5a('0x41')]['id']}},_0x5d82df={};_0x5d82df[_0x5d5a('0x2c')]=_[_0x5d5a('0x42')](db['CmHopperAdditionalPhone'][_0x5d5a('0x29')]);_0x5d82df[_0x5d5a('0x2d')]=_[_0x5d5a('0x42')](_0x1da4dc[_0x5d5a('0x2d')]);_0x5d82df['filters']=_['intersection'](_0x5d82df[_0x5d5a('0x2c')],_0x5d82df[_0x5d5a('0x2d')]);_0x5462d1[_0x5d5a('0x30')]=_[_0x5d5a('0x2f')](_0x5d82df[_0x5d5a('0x2c')],qs[_0x5d5a('0x31')](_0x1da4dc[_0x5d5a('0x2d')][_0x5d5a('0x31')]));_0x5462d1[_0x5d5a('0x30')]=_0x5462d1[_0x5d5a('0x30')][_0x5d5a('0x32')]?_0x5462d1['attributes']:_0x5d82df[_0x5d5a('0x2c')];if(_0x1da4dc[_0x5d5a('0x2d')][_0x5d5a('0x3e')]){_0x5462d1[_0x5d5a('0x43')]=[{'all':!![]}];}_0x5462d1=_[_0x5d5a('0x44')]({},_0x5462d1,_0x1da4dc[_0x5d5a('0x3d')]);return db[_0x5d5a('0x28')][_0x5d5a('0x45')](_0x5462d1)[_0x5d5a('0x1f')](handleEntityNotFound(_0x263906,null))[_0x5d5a('0x1f')](respondWithResult(_0x263906,null))[_0x5d5a('0x46')](handleError(_0x263906,null));};exports[_0x5d5a('0x47')]=function(_0x326b5e,_0x3f57bd){return db[_0x5d5a('0x28')]['create'](_0x326b5e[_0x5d5a('0x48')],{})[_0x5d5a('0x1f')](function(_0x192428){var _0x3c193c=_0x326b5e[_0x5d5a('0x49')]['get']({'plain':!![]});if(!_0x3c193c)throw new Error(_0x5d5a('0x4a'));if(_0x3c193c['role']==='user'){var _0x594c14=_0x192428['get']({'plain':!![]});var _0xf3cb74=_0x5d5a('0x21');return db[_0x5d5a('0x4b')][_0x5d5a('0x45')]({'where':{'name':_0xf3cb74,'userProfileId':_0x3c193c[_0x5d5a('0x4c')]},'raw':!![]})[_0x5d5a('0x1f')](function(_0x11ca14){if(_0x11ca14&&_0x11ca14['autoAssociation']===0x0){return db[_0x5d5a('0x22')][_0x5d5a('0x47')]({'name':_0x594c14[_0x5d5a('0x26')],'resourceId':_0x594c14['id'],'type':_0x11ca14[_0x5d5a('0x26')],'sectionId':_0x11ca14['id']},{})[_0x5d5a('0x1f')](function(){return _0x192428;});}else{return _0x192428;}})[_0x5d5a('0x46')](function(_0x2143ad){logger['error'](_0x5d5a('0x4d'),_0x2143ad);throw _0x2143ad;});}return _0x192428;})['then'](respondWithResult(_0x3f57bd,0xc9))[_0x5d5a('0x46')](handleError(_0x3f57bd,null));};exports['update']=function(_0x14139f,_0x6a8fba){if(_0x14139f[_0x5d5a('0x48')]['id']){delete _0x14139f['body']['id'];}return db['CmHopperAdditionalPhone'][_0x5d5a('0x45')]({'where':{'id':_0x14139f[_0x5d5a('0x41')]['id']}})['then'](handleEntityNotFound(_0x6a8fba,null))[_0x5d5a('0x1f')](saveUpdates(_0x14139f[_0x5d5a('0x48')],null))[_0x5d5a('0x1f')](respondWithResult(_0x6a8fba,null))[_0x5d5a('0x46')](handleError(_0x6a8fba,null));};exports[_0x5d5a('0x1e')]=function(_0x30a152,_0x20aabe){return db[_0x5d5a('0x28')]['find']({'where':{'id':_0x30a152[_0x5d5a('0x41')]['id']}})[_0x5d5a('0x1f')](handleEntityNotFound(_0x20aabe,null))[_0x5d5a('0x1f')](removeEntity(_0x20aabe,null))[_0x5d5a('0x46')](handleError(_0x20aabe,null));};
\ No newline at end of file
+var _0x39b1=['to-csv','fs-extra','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','save','update','then','get','CmHopperAdditionalPhones','UserProfileResource','error','stack','name','send','index','map','CmHopperAdditionalPhone','rawAttributes','fieldName','type','key','query','keys','model','attributes','fields','length','nolimit','order','sort','where','filters','filter','options','includeAll','include','findAll','rows','catch','show','params','intersection','merge','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','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox'];(function(_0x5483ab,_0x544f56){var _0xbd99f4=function(_0x19578a){while(--_0x19578a){_0x5483ab['push'](_0x5483ab['shift']());}};_0xbd99f4(++_0x544f56);}(_0x39b1,0x190));var _0x139b=function(_0x417383,_0x1d8a41){_0x417383=_0x417383-0x0;var _0x3ed230=_0x39b1[_0x417383];return _0x3ed230;};'use strict';var emlformat=require(_0x139b('0x0'));var rimraf=require(_0x139b('0x1'));var zipdir=require(_0x139b('0x2'));var jsonpatch=require(_0x139b('0x3'));var rp=require(_0x139b('0x4'));var moment=require(_0x139b('0x5'));var BPromise=require(_0x139b('0x6'));var Mustache=require(_0x139b('0x7'));var util=require('util');var path=require(_0x139b('0x8'));var sox=require(_0x139b('0x9'));var csv=require(_0x139b('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x139b('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x139b('0xc'));var deskjs=require(_0x139b('0xd'));var toCsv=require(_0x139b('0xa'));var querystring=require(_0x139b('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x139b('0xf'));var qs=require(_0x139b('0x10'));var as=require(_0x139b('0x11'));var hardwareService=require(_0x139b('0x12'));var logger=require(_0x139b('0x13'))('api');var utils=require(_0x139b('0x14'));var config=require(_0x139b('0x15'));var licenseUtil=require(_0x139b('0x16'));var db=require(_0x139b('0x17'))['db'];function respondWithStatusCode(_0x4ba91a,_0x29df43){_0x29df43=_0x29df43||0xcc;return function(_0x303cb5){if(_0x303cb5){return _0x4ba91a[_0x139b('0x18')](_0x29df43);}return _0x4ba91a[_0x139b('0x19')](_0x29df43)[_0x139b('0x1a')]();};}function respondWithResult(_0x4463b4,_0x1e4e59){_0x1e4e59=_0x1e4e59||0xc8;return function(_0x450d16){if(_0x450d16){return _0x4463b4[_0x139b('0x19')](_0x1e4e59)[_0x139b('0x1b')](_0x450d16);}};}function respondWithFilteredResult(_0x272752,_0x149685){return function(_0x49a2d0){if(_0x49a2d0){var _0xedc6e6=typeof _0x149685[_0x139b('0x1c')]===_0x139b('0x1d')&&typeof _0x149685[_0x139b('0x1e')]==='undefined';var _0x104da6=_0x49a2d0[_0x139b('0x1f')];var _0x56d36f=_0xedc6e6?0x0:_0x149685[_0x139b('0x1c')];var _0x557edf=_0xedc6e6?_0x49a2d0[_0x139b('0x1f')]:_0x149685['offset']+_0x149685[_0x139b('0x1e')];var _0x209795;if(_0x557edf>=_0x104da6){_0x557edf=_0x104da6;_0x209795=0xc8;}else{_0x209795=0xce;}_0x272752[_0x139b('0x19')](_0x209795);return _0x272752[_0x139b('0x20')]('Content-Range',_0x56d36f+'-'+_0x557edf+'/'+_0x104da6)[_0x139b('0x1b')](_0x49a2d0);}return null;};}function patchUpdates(_0x482f39){return function(_0x4b8a25){try{jsonpatch['apply'](_0x4b8a25,_0x482f39,!![]);}catch(_0x35c4f4){return BPromise['reject'](_0x35c4f4);}return _0x4b8a25[_0x139b('0x21')]();};}function saveUpdates(_0x846924,_0x2f4582){return function(_0x28f4f5){if(_0x28f4f5){return _0x28f4f5[_0x139b('0x22')](_0x846924)['then'](function(_0x563f44){return _0x563f44;});}return null;};}function removeEntity(_0x5b7dbd,_0x38b923){return function(_0x476ad8){if(_0x476ad8){return _0x476ad8['destroy']()[_0x139b('0x23')](function(){var _0x230adf=_0x476ad8[_0x139b('0x24')]({'plain':!![]});var _0x18b3de=_0x139b('0x25');return db[_0x139b('0x26')]['destroy']({'where':{'type':_0x18b3de,'resourceId':_0x230adf['id']}})[_0x139b('0x23')](function(){return _0x476ad8;});})['then'](function(){_0x5b7dbd['status'](0xcc)[_0x139b('0x1a')]();});}};}function handleEntityNotFound(_0x2ddea9,_0x2e230d){return function(_0x8f6677){if(!_0x8f6677){_0x2ddea9['sendStatus'](0x194);}return _0x8f6677;};}function handleError(_0x1ef57a,_0x3b4769){_0x3b4769=_0x3b4769||0x1f4;return function(_0x5c80dc){logger[_0x139b('0x27')](_0x5c80dc[_0x139b('0x28')]);if(_0x5c80dc[_0x139b('0x29')]){delete _0x5c80dc[_0x139b('0x29')];}_0x1ef57a['status'](_0x3b4769)[_0x139b('0x2a')](_0x5c80dc);};}exports[_0x139b('0x2b')]=function(_0x3707e9,_0x42fddf){var _0x2568c0={},_0x21c55d={},_0x216059={'count':0x0,'rows':[]};var _0x42d788=_[_0x139b('0x2c')](db[_0x139b('0x2d')][_0x139b('0x2e')],function(_0x1b1c66){return{'name':_0x1b1c66[_0x139b('0x2f')],'type':_0x1b1c66[_0x139b('0x30')][_0x139b('0x31')]};});_0x21c55d['model']=_[_0x139b('0x2c')](_0x42d788,'name');_0x21c55d[_0x139b('0x32')]=_[_0x139b('0x33')](_0x3707e9[_0x139b('0x32')]);_0x21c55d['filters']=_['intersection'](_0x21c55d[_0x139b('0x34')],_0x21c55d[_0x139b('0x32')]);_0x2568c0[_0x139b('0x35')]=_['intersection'](_0x21c55d['model'],qs[_0x139b('0x36')](_0x3707e9[_0x139b('0x32')]['fields']));_0x2568c0[_0x139b('0x35')]=_0x2568c0[_0x139b('0x35')][_0x139b('0x37')]?_0x2568c0[_0x139b('0x35')]:_0x21c55d['model'];if(!_0x3707e9['query']['hasOwnProperty'](_0x139b('0x38'))){_0x2568c0[_0x139b('0x1e')]=qs[_0x139b('0x1e')](_0x3707e9[_0x139b('0x32')][_0x139b('0x1e')]);_0x2568c0[_0x139b('0x1c')]=qs[_0x139b('0x1c')](_0x3707e9['query'][_0x139b('0x1c')]);}_0x2568c0[_0x139b('0x39')]=qs['sort'](_0x3707e9[_0x139b('0x32')][_0x139b('0x3a')]);_0x2568c0[_0x139b('0x3b')]=qs[_0x139b('0x3c')](_['pick'](_0x3707e9[_0x139b('0x32')],_0x21c55d[_0x139b('0x3c')]),_0x42d788);if(_0x3707e9[_0x139b('0x32')]['filter']){_0x2568c0[_0x139b('0x3b')]=_['merge'](_0x2568c0[_0x139b('0x3b')],{'$or':_[_0x139b('0x2c')](_0x42d788,function(_0x20aa43){if(_0x20aa43[_0x139b('0x30')]!=='VIRTUAL'){var _0x3deb38={};_0x3deb38[_0x20aa43[_0x139b('0x29')]]={'$like':'%'+_0x3707e9[_0x139b('0x32')][_0x139b('0x3d')]+'%'};return _0x3deb38;}})});}_0x2568c0=_['merge']({},_0x2568c0,_0x3707e9[_0x139b('0x3e')]);var _0x2a2884={'where':_0x2568c0[_0x139b('0x3b')]};return db['CmHopperAdditionalPhone'][_0x139b('0x1f')](_0x2a2884)[_0x139b('0x23')](function(_0x3f81d0){_0x216059[_0x139b('0x1f')]=_0x3f81d0;if(_0x3707e9[_0x139b('0x32')][_0x139b('0x3f')]){_0x2568c0[_0x139b('0x40')]=[{'all':!![]}];}return db[_0x139b('0x2d')][_0x139b('0x41')](_0x2568c0);})['then'](function(_0x5a88d6){_0x216059[_0x139b('0x42')]=_0x5a88d6;return _0x216059;})['then'](respondWithFilteredResult(_0x42fddf,_0x2568c0))[_0x139b('0x43')](handleError(_0x42fddf,null));};exports[_0x139b('0x44')]=function(_0x4613ca,_0x67ca23){var _0x3f5c0d={'raw':!![],'where':{'id':_0x4613ca[_0x139b('0x45')]['id']}},_0x3e1a6a={};_0x3e1a6a['model']=_[_0x139b('0x33')](db[_0x139b('0x2d')][_0x139b('0x2e')]);_0x3e1a6a[_0x139b('0x32')]=_[_0x139b('0x33')](_0x4613ca[_0x139b('0x32')]);_0x3e1a6a[_0x139b('0x3c')]=_['intersection'](_0x3e1a6a[_0x139b('0x34')],_0x3e1a6a['query']);_0x3f5c0d[_0x139b('0x35')]=_[_0x139b('0x46')](_0x3e1a6a[_0x139b('0x34')],qs[_0x139b('0x36')](_0x4613ca[_0x139b('0x32')][_0x139b('0x36')]));_0x3f5c0d[_0x139b('0x35')]=_0x3f5c0d[_0x139b('0x35')]['length']?_0x3f5c0d[_0x139b('0x35')]:_0x3e1a6a[_0x139b('0x34')];if(_0x4613ca[_0x139b('0x32')][_0x139b('0x3f')]){_0x3f5c0d[_0x139b('0x40')]=[{'all':!![]}];}_0x3f5c0d=_[_0x139b('0x47')]({},_0x3f5c0d,_0x4613ca['options']);return db['CmHopperAdditionalPhone'][_0x139b('0x48')](_0x3f5c0d)[_0x139b('0x23')](handleEntityNotFound(_0x67ca23,null))['then'](respondWithResult(_0x67ca23,null))[_0x139b('0x43')](handleError(_0x67ca23,null));};exports[_0x139b('0x49')]=function(_0x37031a,_0x3ee920){return db['CmHopperAdditionalPhone'][_0x139b('0x49')](_0x37031a[_0x139b('0x4a')],{})['then'](function(_0x48a1ce){var _0x19754c=_0x37031a['user'][_0x139b('0x24')]({'plain':!![]});if(!_0x19754c)throw new Error(_0x139b('0x4b'));if(_0x19754c[_0x139b('0x4c')]===_0x139b('0x4d')){var _0x36a2dd=_0x48a1ce[_0x139b('0x24')]({'plain':!![]});var _0x4a34d5='CmHopperAdditionalPhones';return db[_0x139b('0x4e')][_0x139b('0x48')]({'where':{'name':_0x4a34d5,'userProfileId':_0x19754c[_0x139b('0x4f')]},'raw':!![]})[_0x139b('0x23')](function(_0x2f979b){if(_0x2f979b&&_0x2f979b[_0x139b('0x50')]===0x0){return db[_0x139b('0x26')][_0x139b('0x49')]({'name':_0x36a2dd[_0x139b('0x29')],'resourceId':_0x36a2dd['id'],'type':_0x2f979b[_0x139b('0x29')],'sectionId':_0x2f979b['id']},{})[_0x139b('0x23')](function(){return _0x48a1ce;});}else{return _0x48a1ce;}})['catch'](function(_0x4cffba){logger[_0x139b('0x27')](_0x139b('0x51'),_0x4cffba);throw _0x4cffba;});}return _0x48a1ce;})['then'](respondWithResult(_0x3ee920,0xc9))[_0x139b('0x43')](handleError(_0x3ee920,null));};exports[_0x139b('0x22')]=function(_0x1b82d0,_0x4daef2){if(_0x1b82d0['body']['id']){delete _0x1b82d0[_0x139b('0x4a')]['id'];}return db['CmHopperAdditionalPhone'][_0x139b('0x48')]({'where':{'id':_0x1b82d0[_0x139b('0x45')]['id']}})[_0x139b('0x23')](handleEntityNotFound(_0x4daef2,null))[_0x139b('0x23')](saveUpdates(_0x1b82d0[_0x139b('0x4a')],null))[_0x139b('0x23')](respondWithResult(_0x4daef2,null))[_0x139b('0x43')](handleError(_0x4daef2,null));};exports['destroy']=function(_0x25a9f2,_0x376016){return db[_0x139b('0x2d')]['find']({'where':{'id':_0x25a9f2[_0x139b('0x45')]['id']}})[_0x139b('0x23')](handleEntityNotFound(_0x376016,null))[_0x139b('0x23')](removeEntity(_0x376016,null))['catch'](handleError(_0x376016,null));};
\ No newline at end of file
index 13957f9..74f5e44 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x38f5=['moment','bluebird','path','rimraf','../../config/environment','./cmHopperAdditionalPhone.attributes','exports','CmHopperAdditionalPhone','cm_hopper_additional_phones','lodash','util','api'];(function(_0x2daad4,_0x3b183f){var _0x8dcec6=function(_0x7caeef){while(--_0x7caeef){_0x2daad4['push'](_0x2daad4['shift']());}};_0x8dcec6(++_0x3b183f);}(_0x38f5,0x171));var _0x538f=function(_0x4d2c6f,_0x84b084){_0x4d2c6f=_0x4d2c6f-0x0;var _0x5df277=_0x38f5[_0x4d2c6f];return _0x5df277;};'use strict';var _=require(_0x538f('0x0'));var util=require(_0x538f('0x1'));var logger=require('../../config/logger')(_0x538f('0x2'));var moment=require(_0x538f('0x3'));var BPromise=require(_0x538f('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x538f('0x5'));var rimraf=require(_0x538f('0x6'));var config=require(_0x538f('0x7'));var attributes=require(_0x538f('0x8'));module[_0x538f('0x9')]=function(_0x32d71f,_0x338bb4){return _0x32d71f['define'](_0x538f('0xa'),attributes,{'tableName':_0x538f('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3052=['rimraf','./cmHopperAdditionalPhone.attributes','define','CmHopperAdditionalPhone','cm_hopper_additional_phones','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x10b788,_0x1c0bf6){var _0x11cb6b=function(_0x1e3d76){while(--_0x1e3d76){_0x10b788['push'](_0x10b788['shift']());}};_0x11cb6b(++_0x1c0bf6);}(_0x3052,0x164));var _0x2305=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0x3052[_0x432682];return _0x463d05;};'use strict';var _=require(_0x2305('0x0'));var util=require(_0x2305('0x1'));var logger=require(_0x2305('0x2'))(_0x2305('0x3'));var moment=require(_0x2305('0x4'));var BPromise=require(_0x2305('0x5'));var rp=require(_0x2305('0x6'));var fs=require('fs');var path=require(_0x2305('0x7'));var rimraf=require(_0x2305('0x8'));var config=require('../../config/environment');var attributes=require(_0x2305('0x9'));module['exports']=function(_0x29ae1d,_0x2e2c2a){return _0x29ae1d[_0x2305('0xa')](_0x2305('0xb'),attributes,{'tableName':_0x2305('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index cf0d7fb..0169f13 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3cac=['countagentrejectretry','VerifyAdditionalPhones','SwapAdditionalPhones','ListId','duration','waitTime','isNil','scheduledat','add','minutes','phone','countnoanswerretry','countnosuchnumberretry','countdropretry','createdAt','updatedAt','sequelize','transaction','activateAdditionalPhone','IncrementPreviewCounters','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','request','info','CmHopperAdditionalPhone,\x20%s,\x20%s','request\x20sent','debug','CmHopperAdditionalPhone,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','catch','CmHopper','ContactId','body','VoiceQueueId','CampaignId','then','CmHopperAdditionalPhone','findOne','OrderBy','ASC','countbusyretry','countcongestionretry','countabandonedretry','entity','dialGlobalMaxRetry','countmachineretry'];(function(_0x8935ce,_0x3621c3){var _0x1a422f=function(_0x35cb66){while(--_0x35cb66){_0x8935ce['push'](_0x8935ce['shift']());}};_0x1a422f(++_0x3621c3);}(_0x3cac,0x176));var _0xc3ca=function(_0x2db621,_0x427ff0){_0x2db621=_0x2db621-0x0;var _0x54633d=_0x3cac[_0x2db621];return _0x54633d;};'use strict';var _=require(_0xc3ca('0x0'));var util=require(_0xc3ca('0x1'));var moment=require('moment');var BPromise=require(_0xc3ca('0x2'));var rs=require(_0xc3ca('0x3'));var fs=require('fs');var Redis=require(_0xc3ca('0x4'));var db=require(_0xc3ca('0x5'))['db'];var utils=require(_0xc3ca('0x6'));var logger=require('../../config/logger')(_0xc3ca('0x7'));var config=require(_0xc3ca('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xc3ca('0x9')][_0xc3ca('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x46639b,_0x2ceb1a,_0x39cac2){return new BPromise(function(_0x20e477,_0x38e6ed){return client[_0xc3ca('0xb')](_0x46639b,_0x39cac2)['then'](function(_0x2e9347){logger[_0xc3ca('0xc')](_0xc3ca('0xd'),_0x2ceb1a,_0xc3ca('0xe'));logger[_0xc3ca('0xf')](_0xc3ca('0x10'),_0x2ceb1a,'request\x20sent',JSON[_0xc3ca('0x11')](_0x2e9347));if(_0x2e9347['error']){if(_0x2e9347['error'][_0xc3ca('0x12')]===0x1f4){logger[_0xc3ca('0x13')](_0xc3ca('0xd'),_0x2ceb1a,_0x2e9347['error'][_0xc3ca('0x14')]);return _0x38e6ed(_0x2e9347[_0xc3ca('0x13')][_0xc3ca('0x14')]);}logger[_0xc3ca('0x13')](_0xc3ca('0xd'),_0x2ceb1a,_0x2e9347['error'][_0xc3ca('0x14')]);return _0x20e477(_0x2e9347[_0xc3ca('0x13')][_0xc3ca('0x14')]);}else{logger[_0xc3ca('0xc')]('CmHopperAdditionalPhone,\x20%s,\x20%s',_0x2ceb1a,_0xc3ca('0xe'));_0x20e477(_0x2e9347[_0xc3ca('0x15')][_0xc3ca('0x14')]);}})[_0xc3ca('0x16')](function(_0x3cde3b){logger['error'](_0xc3ca('0xd'),_0x2ceb1a,_0x3cde3b);_0x38e6ed(_0x3cde3b);});});}exports['VerifyAdditionalPhones']=function(_0x57ee3d){var _0x5e0d15=this;return new Promise(function(_0x5cd01c,_0x3fe16b){return db[_0xc3ca('0x17')]['findOne']({'raw':!![],'where':{'ContactId':_0x57ee3d['body'][_0xc3ca('0x18')],'ListId':_0x57ee3d['body']['ListId'],'VoiceQueueId':_0x57ee3d[_0xc3ca('0x19')]['VoiceQueueId']===undefined?null:_0x57ee3d['body'][_0xc3ca('0x1a')],'CampaignId':_0x57ee3d[_0xc3ca('0x19')][_0xc3ca('0x1b')]===undefined?null:_0x57ee3d[_0xc3ca('0x19')][_0xc3ca('0x1b')]}})[_0xc3ca('0x1c')](function(_0x4f656d){if(_0x4f656d!=null){return db[_0xc3ca('0x1d')][_0xc3ca('0x1e')]({'raw':!![],'where':{'CmHopperId':_0x4f656d['id'],'OrderBy':{'$gt':_0x4f656d['OrderBy']}},'order':[[_0xc3ca('0x1f'),_0xc3ca('0x20')]]})[_0xc3ca('0x1c')](function(_0x4f4537){var _0x19c23c=0x0;if(_0x4f4537){if(_0x4f4537[_0xc3ca('0x21')]+_0x4f4537[_0xc3ca('0x22')]+_0x4f4537['countnoanswerretry']+_0x4f4537['countnosuchnumberretry']+_0x4f4537['countdropretry']+_0x4f4537[_0xc3ca('0x23')]+_0x4f4537['countmachineretry']+_0x4f4537['countagentrejectretry']<_0x57ee3d[_0xc3ca('0x24')][_0xc3ca('0x25')])_0x19c23c=0x1;_0x5cd01c({'additional':_0x19c23c});}else{return db[_0xc3ca('0x1d')][_0xc3ca('0x1e')]({'raw':!![],'where':{'CmHopperId':_0x4f656d['id']},'order':[[_0xc3ca('0x1f'),_0xc3ca('0x20')]]})['then'](function(_0x2c20cb){var _0x27cf48=0x0;if(_0x2c20cb){if(_0x2c20cb[_0xc3ca('0x21')]+_0x2c20cb[_0xc3ca('0x22')]+_0x2c20cb['countnoanswerretry']+_0x2c20cb['countnosuchnumberretry']+_0x2c20cb['countdropretry']+_0x2c20cb['countabandonedretry']+_0x2c20cb[_0xc3ca('0x26')]+_0x2c20cb[_0xc3ca('0x27')]<_0x57ee3d['entity'][_0xc3ca('0x25')])_0x27cf48=0x1;_0x5cd01c({'additional':_0x27cf48});}else{_0x5cd01c({'additional':0x0});}})['catch'](function(_0x55e577){logger[_0xc3ca('0x13')](_0xc3ca('0x28'),_0x55e577['message']);_0x3fe16b(_0x5e0d15['error'](0x1f4,_0x55e577[_0xc3ca('0x14')]));});}})[_0xc3ca('0x16')](function(_0x4bc385){logger['error'](_0xc3ca('0x28'),_0x4bc385['message']);_0x3fe16b(_0x5e0d15[_0xc3ca('0x13')](0x1f4,_0x4bc385[_0xc3ca('0x14')]));});}else _0x5cd01c({'additional':0x0});});});};exports[_0xc3ca('0x29')]=function(_0x5a7db0){var _0x4360eb=this;return new Promise(function(_0x282aa5,_0x27c6f8){return db[_0xc3ca('0x17')][_0xc3ca('0x1e')]({'raw':!![],'where':{'ContactId':_0x5a7db0[_0xc3ca('0x19')]['ContactId'],'ListId':_0x5a7db0[_0xc3ca('0x19')][_0xc3ca('0x2a')],'VoiceQueueId':_0x5a7db0[_0xc3ca('0x19')][_0xc3ca('0x1a')]===undefined?null:_0x5a7db0['body'][_0xc3ca('0x1a')],'CampaignId':_0x5a7db0[_0xc3ca('0x19')][_0xc3ca('0x1b')]===undefined?null:_0x5a7db0[_0xc3ca('0x19')][_0xc3ca('0x1b')]}})[_0xc3ca('0x1c')](function(_0x2b0fae){if(_0x2b0fae!=null){return db[_0xc3ca('0x1d')][_0xc3ca('0x1e')]({'raw':!![],'where':{'CmHopperId':_0x2b0fae['id'],'OrderBy':{'$gte':_0x2b0fae[_0xc3ca('0x1f')]}},'order':[[_0xc3ca('0x1f'),_0xc3ca('0x20')]]})[_0xc3ca('0x1c')](function(_0xbd245d){if(_0xbd245d)return activateAdditionalPhone(_0x2b0fae,_0x5a7db0[_0xc3ca('0x19')],_0xbd245d,_0x5a7db0[_0xc3ca('0x2b')],_0x5a7db0[_0xc3ca('0x2c')])[_0xc3ca('0x1c')](function(_0x4ddf3c){_0x282aa5(_0x4ddf3c);});else{return db[_0xc3ca('0x1d')][_0xc3ca('0x1e')]({'raw':!![],'where':{'CmHopperId':_0x2b0fae['id']},'order':[['OrderBy',_0xc3ca('0x20')]]})[_0xc3ca('0x1c')](function(_0x347186){if(_0x347186)return activateAdditionalPhone(_0x2b0fae,_0x5a7db0[_0xc3ca('0x19')],_0x347186,_0x5a7db0[_0xc3ca('0x2b')],_0x5a7db0['waitTime'])[_0xc3ca('0x1c')](function(_0x46de7a){_0x282aa5(_0x46de7a);});else{_0x282aa5({'id':_0x2b0fae['id'],'phone':''});}})[_0xc3ca('0x16')](function(_0x1cfd86){logger[_0xc3ca('0x13')](_0xc3ca('0x28'),_0x1cfd86[_0xc3ca('0x14')]);_0x27c6f8(_0x4360eb[_0xc3ca('0x13')](0x1f4,_0x1cfd86[_0xc3ca('0x14')]));});}})['catch'](function(_0x588311){logger[_0xc3ca('0x13')](_0xc3ca('0x28'),_0x588311['message']);_0x27c6f8(_0x4360eb[_0xc3ca('0x13')](0x1f4,_0x588311[_0xc3ca('0x14')]));});}else _0x282aa5(0x1);});});};function activateAdditionalPhone(_0xa6c974,_0x1496a3,_0x5b9f87,_0x423b53,_0x2b9453){return new Promise(function(_0x4b5145,_0x53a6a6){var _0x444634;if(_[_0xc3ca('0x2d')](_0x5b9f87[_0xc3ca('0x2e')])){_0x5b9f87[_0xc3ca('0x2e')]=moment();}if(moment()>moment(_0x5b9f87['scheduledat'])){_0x444634=moment()[_0xc3ca('0x2f')](_0x2b9453||0x3,'minutes');}else{if(_0x5b9f87[_0xc3ca('0x1f')]==0x0){_0x444634=moment(_0x5b9f87[_0xc3ca('0x2e')]);}else{_0x444634=moment()[_0xc3ca('0x2f')](_0x2b9453||0x3,_0xc3ca('0x30'));}}if(_[_0xc3ca('0x2d')](_0x444634)){_0x444634=moment()[_0xc3ca('0x2f')](_0x2b9453||0x3,_0xc3ca('0x30'));}var _0x5dee8e={'phone':_0xa6c974[_0xc3ca('0x31')],'active':0x0,'OrderBy':_['isNil'](_0xa6c974[_0xc3ca('0x1f')])?0x0:_0xa6c974[_0xc3ca('0x1f')],'scheduledat':moment()[_0xc3ca('0x2f')](_0x423b53||0x1,_0xc3ca('0x30')),'countbusyretry':_0x1496a3[_0xc3ca('0x21')],'countcongestionretry':_0x1496a3['countcongestionretry'],'countnoanswerretry':_0x1496a3[_0xc3ca('0x32')],'countnosuchnumberretry':_0x1496a3[_0xc3ca('0x33')],'countdropretry':_0x1496a3[_0xc3ca('0x34')],'countabandonedretry':_0x1496a3[_0xc3ca('0x23')],'countmachineretry':_0x1496a3[_0xc3ca('0x26')],'countagentrejectretry':_0x1496a3[_0xc3ca('0x27')],'createdAt':_0x1496a3[_0xc3ca('0x35')],'updatedAt':_0x1496a3[_0xc3ca('0x36')]};var _0x1aa59f={'CmHopperId':_0xa6c974['id'],'phone':_0x5b9f87['phone'],'active':0x0,'OrderBy':_['isNil'](_0x5b9f87[_0xc3ca('0x1f')])?0x0:_0x5b9f87[_0xc3ca('0x1f')],'scheduledat':_0x444634,'countbusyretry':_0x5b9f87['countbusyretry'],'countcongestionretry':_0x5b9f87[_0xc3ca('0x22')],'countnoanswerretry':_0x5b9f87[_0xc3ca('0x32')],'countnosuchnumberretry':_0x5b9f87[_0xc3ca('0x33')],'countdropretry':_0x5b9f87[_0xc3ca('0x34')],'countabandonedretry':_0x5b9f87[_0xc3ca('0x23')],'countmachineretry':_0x5b9f87['countmachineretry'],'countagentrejectretry':_0x5b9f87[_0xc3ca('0x27')],'createdAt':_0x5b9f87[_0xc3ca('0x35')],'updatedAt':_0x5b9f87[_0xc3ca('0x36')]};return db[_0xc3ca('0x37')][_0xc3ca('0x38')](function(_0x199e5a){return db[_0xc3ca('0x1d')]['update'](_0x5dee8e,{'where':{'id':_0x5b9f87['id']}},{'transaction':_0x199e5a})['then'](function(){return db[_0xc3ca('0x17')]['update'](_0x1aa59f,{'where':{'id':_0xa6c974['id']}},{'transaction':_0x199e5a});});})[_0xc3ca('0x1c')](function(_0x202b98){_0x4b5145({'id':_0xa6c974['id'],'phone':_0x5b9f87['phone']});})[_0xc3ca('0x16')](function(_0x3a5cfd){logger['error'](_0xc3ca('0x39'),_0x3a5cfd[_0xc3ca('0x14')]);_0x53a6a6({'error':_0x3a5cfd[_0xc3ca('0x14')]});});});}exports[_0xc3ca('0x3a')]=function(_0x103825){var _0x1b6b4c=this;return new Promise(function(_0xb7f706,_0x4dd58b){return db[_0xc3ca('0x17')]['update'](_0x103825[_0xc3ca('0x19')]['field'],{'where':{'id':_0x103825[_0xc3ca('0x19')]['id']}})[_0xc3ca('0x1c')](function(_0x156e4c){_0xb7f706(_0x156e4c);})[_0xc3ca('0x16')](function(_0x3a645e){logger[_0xc3ca('0x13')]('IncrementPreviewCounters',_0x3a645e[_0xc3ca('0x14')]);_0x4dd58b(_0x1b6b4c[_0xc3ca('0x13')](0x1f4,_0x3a645e['message']));});});};
\ No newline at end of file
+var _0xe89d=['ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','request','then','info','CmHopperAdditionalPhone,\x20%s,\x20%s','request\x20sent','debug','CmHopperAdditionalPhone,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CmHopper','body','ContactId','VoiceQueueId','CampaignId','CmHopperAdditionalPhone','findOne','OrderBy','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countmachineretry','entity','dialGlobalMaxRetry','ASC','countdropretry','countabandonedretry','VerifyAdditionalPhones','ListId','waitTime','duration','scheduledat','add','minutes','isNil','phone','countagentrejectretry','createdAt','updatedAt','update','IncrementPreviewCounters','lodash','util','moment','bluebird','randomstring'];(function(_0x48d54e,_0x9e4372){var _0x1129c8=function(_0x68b082){while(--_0x68b082){_0x48d54e['push'](_0x48d54e['shift']());}};_0x1129c8(++_0x9e4372);}(_0xe89d,0x18a));var _0xde89=function(_0x599f41,_0x4db732){_0x599f41=_0x599f41-0x0;var _0x2e4d58=_0xe89d[_0x599f41];return _0x2e4d58;};'use strict';var _=require(_0xde89('0x0'));var util=require(_0xde89('0x1'));var moment=require(_0xde89('0x2'));var BPromise=require(_0xde89('0x3'));var rs=require(_0xde89('0x4'));var fs=require('fs');var Redis=require(_0xde89('0x5'));var db=require(_0xde89('0x6'))['db'];var utils=require(_0xde89('0x7'));var logger=require('../../config/logger')('rpc');var config=require(_0xde89('0x8'));var jayson=require(_0xde89('0x9'));var client=jayson[_0xde89('0xa')][_0xde89('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2559da,_0x493fca,_0x4e5ea4){return new BPromise(function(_0x415b33,_0x2cc019){return client[_0xde89('0xc')](_0x2559da,_0x4e5ea4)[_0xde89('0xd')](function(_0x3c0318){logger[_0xde89('0xe')](_0xde89('0xf'),_0x493fca,_0xde89('0x10'));logger[_0xde89('0x11')](_0xde89('0x12'),_0x493fca,_0xde89('0x10'),JSON[_0xde89('0x13')](_0x3c0318));if(_0x3c0318[_0xde89('0x14')]){if(_0x3c0318[_0xde89('0x14')][_0xde89('0x15')]===0x1f4){logger[_0xde89('0x14')](_0xde89('0xf'),_0x493fca,_0x3c0318[_0xde89('0x14')][_0xde89('0x16')]);return _0x2cc019(_0x3c0318[_0xde89('0x14')][_0xde89('0x16')]);}logger[_0xde89('0x14')](_0xde89('0xf'),_0x493fca,_0x3c0318['error'][_0xde89('0x16')]);return _0x415b33(_0x3c0318['error'][_0xde89('0x16')]);}else{logger[_0xde89('0xe')](_0xde89('0xf'),_0x493fca,_0xde89('0x10'));_0x415b33(_0x3c0318[_0xde89('0x17')][_0xde89('0x16')]);}})[_0xde89('0x18')](function(_0x5eb3c6){logger[_0xde89('0x14')](_0xde89('0xf'),_0x493fca,_0x5eb3c6);_0x2cc019(_0x5eb3c6);});});}exports['VerifyAdditionalPhones']=function(_0xed6f13){var _0x59729c=this;return new Promise(function(_0x2629dd,_0x5d2ac8){return db[_0xde89('0x19')]['findOne']({'raw':!![],'where':{'ContactId':_0xed6f13[_0xde89('0x1a')][_0xde89('0x1b')],'ListId':_0xed6f13[_0xde89('0x1a')]['ListId'],'VoiceQueueId':_0xed6f13[_0xde89('0x1a')][_0xde89('0x1c')]===undefined?null:_0xed6f13['body'][_0xde89('0x1c')],'CampaignId':_0xed6f13[_0xde89('0x1a')][_0xde89('0x1d')]===undefined?null:_0xed6f13[_0xde89('0x1a')][_0xde89('0x1d')]}})[_0xde89('0xd')](function(_0x19b44d){if(_0x19b44d!=null){return db[_0xde89('0x1e')][_0xde89('0x1f')]({'raw':!![],'where':{'CmHopperId':_0x19b44d['id'],'OrderBy':{'$gt':_0x19b44d[_0xde89('0x20')]}},'order':[[_0xde89('0x20'),'ASC']]})['then'](function(_0x558817){var _0x231fa3=0x0;if(_0x558817){if(_0x558817[_0xde89('0x21')]+_0x558817[_0xde89('0x22')]+_0x558817[_0xde89('0x23')]+_0x558817[_0xde89('0x24')]+_0x558817['countdropretry']+_0x558817['countabandonedretry']+_0x558817[_0xde89('0x25')]+_0x558817['countagentrejectretry']<_0xed6f13[_0xde89('0x26')][_0xde89('0x27')])_0x231fa3=0x1;_0x2629dd({'additional':_0x231fa3});}else{return db[_0xde89('0x1e')]['findOne']({'raw':!![],'where':{'CmHopperId':_0x19b44d['id']},'order':[[_0xde89('0x20'),_0xde89('0x28')]]})[_0xde89('0xd')](function(_0x266271){var _0x3e028b=0x0;if(_0x266271){if(_0x266271[_0xde89('0x21')]+_0x266271[_0xde89('0x22')]+_0x266271[_0xde89('0x23')]+_0x266271[_0xde89('0x24')]+_0x266271[_0xde89('0x29')]+_0x266271[_0xde89('0x2a')]+_0x266271[_0xde89('0x25')]+_0x266271['countagentrejectretry']<_0xed6f13[_0xde89('0x26')]['dialGlobalMaxRetry'])_0x3e028b=0x1;_0x2629dd({'additional':_0x3e028b});}else{_0x2629dd({'additional':0x0});}})['catch'](function(_0x299ddc){logger[_0xde89('0x14')](_0xde89('0x2b'),_0x299ddc[_0xde89('0x16')]);_0x5d2ac8(_0x59729c[_0xde89('0x14')](0x1f4,_0x299ddc[_0xde89('0x16')]));});}})[_0xde89('0x18')](function(_0x458066){logger['error'](_0xde89('0x2b'),_0x458066[_0xde89('0x16')]);_0x5d2ac8(_0x59729c[_0xde89('0x14')](0x1f4,_0x458066[_0xde89('0x16')]));});}else _0x2629dd({'additional':0x0});});});};exports['SwapAdditionalPhones']=function(_0x2a9982){var _0x15f848=this;return new Promise(function(_0x2d5705,_0x38694a){return db[_0xde89('0x19')]['findOne']({'raw':!![],'where':{'ContactId':_0x2a9982[_0xde89('0x1a')][_0xde89('0x1b')],'ListId':_0x2a9982['body'][_0xde89('0x2c')],'VoiceQueueId':_0x2a9982[_0xde89('0x1a')][_0xde89('0x1c')]===undefined?null:_0x2a9982[_0xde89('0x1a')][_0xde89('0x1c')],'CampaignId':_0x2a9982['body'][_0xde89('0x1d')]===undefined?null:_0x2a9982[_0xde89('0x1a')][_0xde89('0x1d')]}})[_0xde89('0xd')](function(_0x3dac05){if(_0x3dac05!=null){return db[_0xde89('0x1e')][_0xde89('0x1f')]({'raw':!![],'where':{'CmHopperId':_0x3dac05['id'],'OrderBy':{'$gte':_0x3dac05[_0xde89('0x20')]}},'order':[[_0xde89('0x20'),_0xde89('0x28')]]})[_0xde89('0xd')](function(_0x4cbec7){if(_0x4cbec7)return activateAdditionalPhone(_0x3dac05,_0x2a9982[_0xde89('0x1a')],_0x4cbec7,_0x2a9982['duration'],_0x2a9982[_0xde89('0x2d')])[_0xde89('0xd')](function(_0x16fc76){_0x2d5705(_0x16fc76);});else{return db[_0xde89('0x1e')][_0xde89('0x1f')]({'raw':!![],'where':{'CmHopperId':_0x3dac05['id']},'order':[[_0xde89('0x20'),_0xde89('0x28')]]})['then'](function(_0x26b68f){if(_0x26b68f)return activateAdditionalPhone(_0x3dac05,_0x2a9982[_0xde89('0x1a')],_0x26b68f,_0x2a9982[_0xde89('0x2e')],_0x2a9982[_0xde89('0x2d')])[_0xde89('0xd')](function(_0x16cf4f){_0x2d5705(_0x16cf4f);});else{_0x2d5705({'id':_0x3dac05['id'],'phone':''});}})[_0xde89('0x18')](function(_0x233791){logger[_0xde89('0x14')](_0xde89('0x2b'),_0x233791[_0xde89('0x16')]);_0x38694a(_0x15f848[_0xde89('0x14')](0x1f4,_0x233791[_0xde89('0x16')]));});}})[_0xde89('0x18')](function(_0x50f4cf){logger[_0xde89('0x14')](_0xde89('0x2b'),_0x50f4cf[_0xde89('0x16')]);_0x38694a(_0x15f848[_0xde89('0x14')](0x1f4,_0x50f4cf[_0xde89('0x16')]));});}else _0x2d5705(0x1);});});};function activateAdditionalPhone(_0x20fbc8,_0x226a34,_0x3375d2,_0x36ca90,_0x404655){return new Promise(function(_0x37504a,_0x4c018a){var _0x59c8b4;if(_['isNil'](_0x3375d2[_0xde89('0x2f')])){_0x3375d2[_0xde89('0x2f')]=moment();}if(moment()>moment(_0x3375d2[_0xde89('0x2f')])){_0x59c8b4=moment()[_0xde89('0x30')](_0x404655||0x3,_0xde89('0x31'));}else{if(_0x3375d2[_0xde89('0x20')]==0x0){_0x59c8b4=moment(_0x3375d2['scheduledat']);}else{_0x59c8b4=moment()[_0xde89('0x30')](_0x404655||0x3,'minutes');}}if(_[_0xde89('0x32')](_0x59c8b4)){_0x59c8b4=moment()[_0xde89('0x30')](_0x404655||0x3,_0xde89('0x31'));}var _0x131647={'phone':_0x20fbc8[_0xde89('0x33')],'active':0x0,'OrderBy':_[_0xde89('0x32')](_0x20fbc8['OrderBy'])?0x0:_0x20fbc8[_0xde89('0x20')],'scheduledat':moment()['add'](_0x36ca90||0x1,_0xde89('0x31')),'countbusyretry':_0x226a34['countbusyretry'],'countcongestionretry':_0x226a34[_0xde89('0x22')],'countnoanswerretry':_0x226a34[_0xde89('0x23')],'countnosuchnumberretry':_0x226a34[_0xde89('0x24')],'countdropretry':_0x226a34[_0xde89('0x29')],'countabandonedretry':_0x226a34[_0xde89('0x2a')],'countmachineretry':_0x226a34[_0xde89('0x25')],'countagentrejectretry':_0x226a34[_0xde89('0x34')],'createdAt':_0x226a34['createdAt'],'updatedAt':_0x226a34['updatedAt']};var _0x4c517d={'CmHopperId':_0x20fbc8['id'],'phone':_0x3375d2[_0xde89('0x33')],'active':0x0,'OrderBy':_[_0xde89('0x32')](_0x3375d2[_0xde89('0x20')])?0x0:_0x3375d2[_0xde89('0x20')],'scheduledat':_0x59c8b4,'countbusyretry':_0x3375d2['countbusyretry'],'countcongestionretry':_0x3375d2['countcongestionretry'],'countnoanswerretry':_0x3375d2[_0xde89('0x23')],'countnosuchnumberretry':_0x3375d2['countnosuchnumberretry'],'countdropretry':_0x3375d2['countdropretry'],'countabandonedretry':_0x3375d2['countabandonedretry'],'countmachineretry':_0x3375d2[_0xde89('0x25')],'countagentrejectretry':_0x3375d2[_0xde89('0x34')],'createdAt':_0x3375d2[_0xde89('0x35')],'updatedAt':_0x3375d2[_0xde89('0x36')]};return db['sequelize']['transaction'](function(_0x639067){return db[_0xde89('0x1e')][_0xde89('0x37')](_0x131647,{'where':{'id':_0x3375d2['id']}},{'transaction':_0x639067})[_0xde89('0xd')](function(){return db['CmHopper'][_0xde89('0x37')](_0x4c517d,{'where':{'id':_0x20fbc8['id']}},{'transaction':_0x639067});});})[_0xde89('0xd')](function(_0x3efe3e){_0x37504a({'id':_0x20fbc8['id'],'phone':_0x3375d2['phone']});})['catch'](function(_0x13317){logger[_0xde89('0x14')]('activateAdditionalPhone',_0x13317['message']);_0x4c018a({'error':_0x13317[_0xde89('0x16')]});});});}exports[_0xde89('0x38')]=function(_0x2cc9c7){var _0x4295c0=this;return new Promise(function(_0x21e026,_0x103d3d){return db['CmHopper'][_0xde89('0x37')](_0x2cc9c7['body']['field'],{'where':{'id':_0x2cc9c7[_0xde89('0x1a')]['id']}})[_0xde89('0xd')](function(_0x1a2e55){_0x21e026(_0x1a2e55);})[_0xde89('0x18')](function(_0x16edfd){logger[_0xde89('0x14')](_0xde89('0x38'),_0x16edfd['message']);_0x103d3d(_0x4295c0[_0xde89('0x14')](0x1f4,_0x16edfd[_0xde89('0x16')]));});});};
\ No newline at end of file
index e1762d9..fcca75f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a02=['get','index','/:id','isAuthenticated','show','post','create','put','update','destroy','multer','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperAdditionalPhone.controller'];(function(_0x543770,_0x5b9f3e){var _0x366292=function(_0x46cee7){while(--_0x46cee7){_0x543770['push'](_0x543770['shift']());}};_0x366292(++_0x5b9f3e);}(_0x7a02,0x14d));var _0x27a0=function(_0x199572,_0x33e667){_0x199572=_0x199572-0x0;var _0x13cfa3=_0x7a02[_0x199572];return _0x13cfa3;};'use strict';var multer=require(_0x27a0('0x0'));var util=require(_0x27a0('0x1'));var path=require('path');var timeout=require(_0x27a0('0x2'));var express=require('express');var router=express[_0x27a0('0x3')]();var fs_extra=require(_0x27a0('0x4'));var auth=require(_0x27a0('0x5'));var interaction=require(_0x27a0('0x6'));var config=require(_0x27a0('0x7'));var controller=require(_0x27a0('0x8'));router[_0x27a0('0x9')]('/',auth['isAuthenticated'](),controller[_0x27a0('0xa')]);router[_0x27a0('0x9')](_0x27a0('0xb'),auth[_0x27a0('0xc')](),controller[_0x27a0('0xd')]);router[_0x27a0('0xe')]('/',auth[_0x27a0('0xc')](),controller[_0x27a0('0xf')]);router[_0x27a0('0x10')](_0x27a0('0xb'),auth[_0x27a0('0xc')](),controller[_0x27a0('0x11')]);router['delete'](_0x27a0('0xb'),auth[_0x27a0('0xc')](),controller[_0x27a0('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0x7ff7=['index','get','/:id','show','post','isAuthenticated','create','put','update','destroy','exports','multer','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperAdditionalPhone.controller'];(function(_0x4570d5,_0x115f91){var _0x314a34=function(_0x100d84){while(--_0x100d84){_0x4570d5['push'](_0x4570d5['shift']());}};_0x314a34(++_0x115f91);}(_0x7ff7,0xef));var _0x77ff=function(_0x3f99e0,_0x504666){_0x3f99e0=_0x3f99e0-0x0;var _0x2c539c=_0x7ff7[_0x3f99e0];return _0x2c539c;};'use strict';var multer=require(_0x77ff('0x0'));var util=require('util');var path=require(_0x77ff('0x1'));var timeout=require(_0x77ff('0x2'));var express=require(_0x77ff('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x77ff('0x4'));var interaction=require(_0x77ff('0x5'));var config=require(_0x77ff('0x6'));var controller=require(_0x77ff('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0x77ff('0x8')]);router[_0x77ff('0x9')](_0x77ff('0xa'),auth['isAuthenticated'](),controller[_0x77ff('0xb')]);router[_0x77ff('0xc')]('/',auth[_0x77ff('0xd')](),controller[_0x77ff('0xe')]);router[_0x77ff('0xf')](_0x77ff('0xa'),auth['isAuthenticated'](),controller[_0x77ff('0x10')]);router['delete']('/:id',auth[_0x77ff('0xd')](),controller[_0x77ff('0x11')]);module[_0x77ff('0x12')]=router;
\ No newline at end of file
index c07a5eb..7e0e0dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa45=['contactListQueue','moment','sequelize','exports','STRING','INTEGER'];(function(_0x341765,_0x46ac8a){var _0x14b7a0=function(_0x4de69c){while(--_0x4de69c){_0x341765['push'](_0x341765['shift']());}};_0x14b7a0(++_0x46ac8a);}(_0xfa45,0x11b));var _0x5fa4=function(_0x33aed8,_0x5361f8){_0x33aed8=_0x33aed8-0x0;var _0x32c974=_0xfa45[_0x33aed8];return _0x32c974;};'use strict';var moment=require(_0x5fa4('0x0'));var Sequelize=require(_0x5fa4('0x1'));module[_0x5fa4('0x2')]={'phone':{'type':Sequelize[_0x5fa4('0x3')],'allowNull':![]},'ContactId':{'type':Sequelize[_0x5fa4('0x4')],'unique':_0x5fa4('0x5')},'ListId':{'type':Sequelize[_0x5fa4('0x4')],'unique':'contactListQueue'},'VoiceQueueId':{'type':Sequelize[_0x5fa4('0x4')],'unique':'contactListQueue'}};
\ No newline at end of file
+var _0x02b1=['contactListQueue','moment','sequelize','exports','STRING','INTEGER'];(function(_0x54e868,_0x25d4cd){var _0x183eda=function(_0x2a235f){while(--_0x2a235f){_0x54e868['push'](_0x54e868['shift']());}};_0x183eda(++_0x25d4cd);}(_0x02b1,0x7f));var _0x102b=function(_0x1d39aa,_0x253815){_0x1d39aa=_0x1d39aa-0x0;var _0x358db4=_0x02b1[_0x1d39aa];return _0x358db4;};'use strict';var moment=require(_0x102b('0x0'));var Sequelize=require(_0x102b('0x1'));module[_0x102b('0x2')]={'phone':{'type':Sequelize[_0x102b('0x3')],'allowNull':![]},'ContactId':{'type':Sequelize[_0x102b('0x4')],'unique':'contactListQueue'},'ListId':{'type':Sequelize[_0x102b('0x4')],'unique':'contactListQueue'},'VoiceQueueId':{'type':Sequelize['INTEGER'],'unique':_0x102b('0x5')}};
\ No newline at end of file
index c457680..b1a2845 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc3a1=['body','find','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','util','sox','to-csv','ejs','fs-extra','squel','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','reject','save','update','then','error','name','send','index','map','fieldName','type','key','query','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter','merge','where','VIRTUAL','CmHopperBlack','includeAll','include','rows','catch','show','params','keys','rawAttributes'];(function(_0xac6f8,_0x31fbbc){var _0x1e193f=function(_0x53b2a9){while(--_0x53b2a9){_0xac6f8['push'](_0xac6f8['shift']());}};_0x1e193f(++_0x31fbbc);}(_0xc3a1,0xd9));var _0x1c3a=function(_0x36e2fb,_0x1b53ba){_0x36e2fb=_0x36e2fb-0x0;var _0x3fb405=_0xc3a1[_0x36e2fb];return _0x3fb405;};'use strict';var emlformat=require(_0x1c3a('0x0'));var rimraf=require(_0x1c3a('0x1'));var zipdir=require(_0x1c3a('0x2'));var jsonpatch=require(_0x1c3a('0x3'));var rp=require(_0x1c3a('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x1c3a('0x5'));var path=require('path');var sox=require(_0x1c3a('0x6'));var csv=require(_0x1c3a('0x7'));var ejs=require(_0x1c3a('0x8'));var fs=require('fs');var fs_extra=require(_0x1c3a('0x9'));var _=require('lodash');var squel=require(_0x1c3a('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x1c3a('0xb'));var toCsv=require(_0x1c3a('0x7'));var querystring=require('querystring');var Papa=require(_0x1c3a('0xc'));var Redis=require(_0x1c3a('0xd'));var authService=require(_0x1c3a('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x1c3a('0xf'));var hardwareService=require(_0x1c3a('0x10'));var logger=require(_0x1c3a('0x11'))('api');var utils=require(_0x1c3a('0x12'));var config=require(_0x1c3a('0x13'));var licenseUtil=require(_0x1c3a('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x48dbf6,_0x1ef107){_0x1ef107=_0x1ef107||0xcc;return function(_0x4a1380){if(_0x4a1380){return _0x48dbf6[_0x1c3a('0x15')](_0x1ef107);}return _0x48dbf6[_0x1c3a('0x16')](_0x1ef107)[_0x1c3a('0x17')]();};}function respondWithResult(_0x4886f8,_0x173635){_0x173635=_0x173635||0xc8;return function(_0x22b7cc){if(_0x22b7cc){return _0x4886f8['status'](_0x173635)[_0x1c3a('0x18')](_0x22b7cc);}};}function respondWithFilteredResult(_0x47cd9b,_0xad2586){return function(_0xda7bb9){if(_0xda7bb9){var _0xd1dc85=typeof _0xad2586[_0x1c3a('0x19')]===_0x1c3a('0x1a')&&typeof _0xad2586[_0x1c3a('0x1b')]===_0x1c3a('0x1a');var _0x481161=_0xda7bb9[_0x1c3a('0x1c')];var _0x166dd6=_0xd1dc85?0x0:_0xad2586[_0x1c3a('0x19')];var _0x3a7b6a=_0xd1dc85?_0xda7bb9['count']:_0xad2586['offset']+_0xad2586['limit'];var _0xd72f01;if(_0x3a7b6a>=_0x481161){_0x3a7b6a=_0x481161;_0xd72f01=0xc8;}else{_0xd72f01=0xce;}_0x47cd9b[_0x1c3a('0x16')](_0xd72f01);return _0x47cd9b[_0x1c3a('0x1d')]('Content-Range',_0x166dd6+'-'+_0x3a7b6a+'/'+_0x481161)[_0x1c3a('0x18')](_0xda7bb9);}return null;};}function patchUpdates(_0x52e64f){return function(_0x127b50){try{jsonpatch['apply'](_0x127b50,_0x52e64f,!![]);}catch(_0xa57fc3){return BPromise[_0x1c3a('0x1e')](_0xa57fc3);}return _0x127b50[_0x1c3a('0x1f')]();};}function saveUpdates(_0x25bcad,_0x404bcc){return function(_0x30bd95){if(_0x30bd95){return _0x30bd95[_0x1c3a('0x20')](_0x25bcad)[_0x1c3a('0x21')](function(_0x537ace){return _0x537ace;});}return null;};}function removeEntity(_0x26cb4e,_0x991d72){return function(_0x193ffd){if(_0x193ffd){return _0x193ffd['destroy']()[_0x1c3a('0x21')](function(){_0x26cb4e[_0x1c3a('0x16')](0xcc)[_0x1c3a('0x17')]();});}};}function handleEntityNotFound(_0x2d2b54,_0x38211b){return function(_0x181a2e){if(!_0x181a2e){_0x2d2b54[_0x1c3a('0x15')](0x194);}return _0x181a2e;};}function handleError(_0x2645b5,_0x4f8dfb){_0x4f8dfb=_0x4f8dfb||0x1f4;return function(_0xe475ae){logger[_0x1c3a('0x22')](_0xe475ae['stack']);if(_0xe475ae[_0x1c3a('0x23')]){delete _0xe475ae[_0x1c3a('0x23')];}_0x2645b5[_0x1c3a('0x16')](_0x4f8dfb)[_0x1c3a('0x24')](_0xe475ae);};}exports[_0x1c3a('0x25')]=function(_0x37f535,_0x269fa8){var _0x524803={},_0x533451={},_0x49e87d={'count':0x0,'rows':[]};var _0x14f38c=_[_0x1c3a('0x26')](db['CmHopperBlack']['rawAttributes'],function(_0x5a7665){return{'name':_0x5a7665[_0x1c3a('0x27')],'type':_0x5a7665[_0x1c3a('0x28')][_0x1c3a('0x29')]};});_0x533451['model']=_[_0x1c3a('0x26')](_0x14f38c,_0x1c3a('0x23'));_0x533451[_0x1c3a('0x2a')]=_['keys'](_0x37f535[_0x1c3a('0x2a')]);_0x533451[_0x1c3a('0x2b')]=_[_0x1c3a('0x2c')](_0x533451[_0x1c3a('0x2d')],_0x533451['query']);_0x524803['attributes']=_[_0x1c3a('0x2c')](_0x533451[_0x1c3a('0x2d')],qs['fields'](_0x37f535['query'][_0x1c3a('0x2e')]));_0x524803[_0x1c3a('0x2f')]=_0x524803['attributes'][_0x1c3a('0x30')]?_0x524803['attributes']:_0x533451[_0x1c3a('0x2d')];if(!_0x37f535[_0x1c3a('0x2a')][_0x1c3a('0x31')](_0x1c3a('0x32'))){_0x524803[_0x1c3a('0x1b')]=qs[_0x1c3a('0x1b')](_0x37f535[_0x1c3a('0x2a')]['limit']);_0x524803[_0x1c3a('0x19')]=qs['offset'](_0x37f535[_0x1c3a('0x2a')][_0x1c3a('0x19')]);}_0x524803[_0x1c3a('0x33')]=qs['sort'](_0x37f535[_0x1c3a('0x2a')][_0x1c3a('0x34')]);_0x524803['where']=qs['filters'](_[_0x1c3a('0x35')](_0x37f535[_0x1c3a('0x2a')],_0x533451[_0x1c3a('0x2b')]),_0x14f38c);if(_0x37f535['query'][_0x1c3a('0x36')]){_0x524803['where']=_[_0x1c3a('0x37')](_0x524803[_0x1c3a('0x38')],{'$or':_[_0x1c3a('0x26')](_0x14f38c,function(_0xb490c4){if(_0xb490c4['type']!==_0x1c3a('0x39')){var _0x4cc3c6={};_0x4cc3c6[_0xb490c4[_0x1c3a('0x23')]]={'$like':'%'+_0x37f535[_0x1c3a('0x2a')]['filter']+'%'};return _0x4cc3c6;}})});}_0x524803=_[_0x1c3a('0x37')]({},_0x524803,_0x37f535['options']);var _0x1ee740={'where':_0x524803['where']};return db[_0x1c3a('0x3a')][_0x1c3a('0x1c')](_0x1ee740)[_0x1c3a('0x21')](function(_0x58f3c6){_0x49e87d[_0x1c3a('0x1c')]=_0x58f3c6;if(_0x37f535[_0x1c3a('0x2a')][_0x1c3a('0x3b')]){_0x524803[_0x1c3a('0x3c')]=[{'all':!![]}];}return db[_0x1c3a('0x3a')]['findAll'](_0x524803);})[_0x1c3a('0x21')](function(_0xe44f15){_0x49e87d[_0x1c3a('0x3d')]=_0xe44f15;return _0x49e87d;})[_0x1c3a('0x21')](respondWithFilteredResult(_0x269fa8,_0x524803))[_0x1c3a('0x3e')](handleError(_0x269fa8,null));};exports[_0x1c3a('0x3f')]=function(_0x3dae16,_0x5af911){var _0x22ab3f={'raw':!![],'where':{'id':_0x3dae16[_0x1c3a('0x40')]['id']}},_0x5f1ab7={};_0x5f1ab7['model']=_[_0x1c3a('0x41')](db['CmHopperBlack'][_0x1c3a('0x42')]);_0x5f1ab7['query']=_['keys'](_0x3dae16[_0x1c3a('0x2a')]);_0x5f1ab7[_0x1c3a('0x2b')]=_[_0x1c3a('0x2c')](_0x5f1ab7[_0x1c3a('0x2d')],_0x5f1ab7[_0x1c3a('0x2a')]);_0x22ab3f['attributes']=_[_0x1c3a('0x2c')](_0x5f1ab7['model'],qs[_0x1c3a('0x2e')](_0x3dae16[_0x1c3a('0x2a')][_0x1c3a('0x2e')]));_0x22ab3f['attributes']=_0x22ab3f[_0x1c3a('0x2f')][_0x1c3a('0x30')]?_0x22ab3f[_0x1c3a('0x2f')]:_0x5f1ab7[_0x1c3a('0x2d')];if(_0x3dae16[_0x1c3a('0x2a')]['includeAll']){_0x22ab3f[_0x1c3a('0x3c')]=[{'all':!![]}];}_0x22ab3f=_['merge']({},_0x22ab3f,_0x3dae16['options']);return db['CmHopperBlack']['find'](_0x22ab3f)[_0x1c3a('0x21')](handleEntityNotFound(_0x5af911,null))[_0x1c3a('0x21')](respondWithResult(_0x5af911,null))[_0x1c3a('0x3e')](handleError(_0x5af911,null));};exports['update']=function(_0x498782,_0x4e5660){if(_0x498782[_0x1c3a('0x43')]['id']){delete _0x498782[_0x1c3a('0x43')]['id'];}return db[_0x1c3a('0x3a')][_0x1c3a('0x44')]({'where':{'id':_0x498782[_0x1c3a('0x40')]['id']}})[_0x1c3a('0x21')](handleEntityNotFound(_0x4e5660,null))['then'](saveUpdates(_0x498782[_0x1c3a('0x43')],null))[_0x1c3a('0x21')](respondWithResult(_0x4e5660,null))['catch'](handleError(_0x4e5660,null));};exports[_0x1c3a('0x45')]=function(_0x11a770,_0x4914d0){return db['CmHopperBlack'][_0x1c3a('0x44')]({'where':{'id':_0x11a770[_0x1c3a('0x40')]['id']}})[_0x1c3a('0x21')](handleEntityNotFound(_0x4914d0,null))[_0x1c3a('0x21')](removeEntity(_0x4914d0,null))['catch'](handleError(_0x4914d0,null));};exports[_0x1c3a('0x46')]=function(_0x4fb4cc,_0x9e1871){return db['CmHopperBlack'][_0x1c3a('0x46')]()[_0x1c3a('0x21')](respondWithResult(_0x9e1871,null))[_0x1c3a('0x3e')](handleError(_0x9e1871,null));};
\ No newline at end of file
+var _0x5ae9=['bluebird','mustache','path','to-csv','ejs','fs-extra','lodash','squel','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','apply','save','then','destroy','end','error','stack','name','index','map','rawAttributes','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','CmHopperBlack','includeAll','include','findAll','rows','catch','show','keys','find','update','body','params','describe','eml-format','fast-json-patch','request-promise'];(function(_0x32b542,_0x4512fa){var _0x554d54=function(_0x35cdfc){while(--_0x35cdfc){_0x32b542['push'](_0x32b542['shift']());}};_0x554d54(++_0x4512fa);}(_0x5ae9,0x19b));var _0x95ae=function(_0x263418,_0x2555a9){_0x263418=_0x263418-0x0;var _0x2a66c4=_0x5ae9[_0x263418];return _0x2a66c4;};'use strict';var emlformat=require(_0x95ae('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x95ae('0x1'));var rp=require(_0x95ae('0x2'));var moment=require('moment');var BPromise=require(_0x95ae('0x3'));var Mustache=require(_0x95ae('0x4'));var util=require('util');var path=require(_0x95ae('0x5'));var sox=require('sox');var csv=require(_0x95ae('0x6'));var ejs=require(_0x95ae('0x7'));var fs=require('fs');var fs_extra=require(_0x95ae('0x8'));var _=require(_0x95ae('0x9'));var squel=require(_0x95ae('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x95ae('0xb'));var toCsv=require(_0x95ae('0x6'));var querystring=require(_0x95ae('0xc'));var Papa=require(_0x95ae('0xd'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x95ae('0xe'));var as=require(_0x95ae('0xf'));var hardwareService=require(_0x95ae('0x10'));var logger=require(_0x95ae('0x11'))('api');var utils=require('../../config/utils');var config=require(_0x95ae('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0x95ae('0x13'))['db'];function respondWithStatusCode(_0x2a9b87,_0x530bb8){_0x530bb8=_0x530bb8||0xcc;return function(_0xc1af8f){if(_0xc1af8f){return _0x2a9b87[_0x95ae('0x14')](_0x530bb8);}return _0x2a9b87[_0x95ae('0x15')](_0x530bb8)['end']();};}function respondWithResult(_0x4685a4,_0x3af218){_0x3af218=_0x3af218||0xc8;return function(_0x308b7a){if(_0x308b7a){return _0x4685a4['status'](_0x3af218)[_0x95ae('0x16')](_0x308b7a);}};}function respondWithFilteredResult(_0x5ebbb7,_0x210e00){return function(_0x57bd67){if(_0x57bd67){var _0x2594fe=typeof _0x210e00[_0x95ae('0x17')]===_0x95ae('0x18')&&typeof _0x210e00[_0x95ae('0x19')]===_0x95ae('0x18');var _0x38b457=_0x57bd67[_0x95ae('0x1a')];var _0x24d5d2=_0x2594fe?0x0:_0x210e00[_0x95ae('0x17')];var _0x47ed05=_0x2594fe?_0x57bd67[_0x95ae('0x1a')]:_0x210e00[_0x95ae('0x17')]+_0x210e00['limit'];var _0x14a11d;if(_0x47ed05>=_0x38b457){_0x47ed05=_0x38b457;_0x14a11d=0xc8;}else{_0x14a11d=0xce;}_0x5ebbb7[_0x95ae('0x15')](_0x14a11d);return _0x5ebbb7['set']('Content-Range',_0x24d5d2+'-'+_0x47ed05+'/'+_0x38b457)[_0x95ae('0x16')](_0x57bd67);}return null;};}function patchUpdates(_0x16aa0c){return function(_0x1359a8){try{jsonpatch[_0x95ae('0x1b')](_0x1359a8,_0x16aa0c,!![]);}catch(_0x8ed1b1){return BPromise['reject'](_0x8ed1b1);}return _0x1359a8[_0x95ae('0x1c')]();};}function saveUpdates(_0x457324,_0x1ecde4){return function(_0x2ad155){if(_0x2ad155){return _0x2ad155['update'](_0x457324)[_0x95ae('0x1d')](function(_0x5b0453){return _0x5b0453;});}return null;};}function removeEntity(_0x7fd81f,_0x59f88a){return function(_0x2b46c5){if(_0x2b46c5){return _0x2b46c5[_0x95ae('0x1e')]()[_0x95ae('0x1d')](function(){_0x7fd81f['status'](0xcc)[_0x95ae('0x1f')]();});}};}function handleEntityNotFound(_0x25d81c,_0x1b3dc5){return function(_0x1437e1){if(!_0x1437e1){_0x25d81c[_0x95ae('0x14')](0x194);}return _0x1437e1;};}function handleError(_0x4d24a6,_0x455eda){_0x455eda=_0x455eda||0x1f4;return function(_0x4e2436){logger[_0x95ae('0x20')](_0x4e2436[_0x95ae('0x21')]);if(_0x4e2436[_0x95ae('0x22')]){delete _0x4e2436['name'];}_0x4d24a6[_0x95ae('0x15')](_0x455eda)['send'](_0x4e2436);};}exports[_0x95ae('0x23')]=function(_0x5f4d16,_0x611fca){var _0x424e0f={},_0x4fa625={},_0x3df451={'count':0x0,'rows':[]};var _0x2751c9=_[_0x95ae('0x24')](db['CmHopperBlack'][_0x95ae('0x25')],function(_0x4c111d){return{'name':_0x4c111d['fieldName'],'type':_0x4c111d['type'][_0x95ae('0x26')]};});_0x4fa625[_0x95ae('0x27')]=_[_0x95ae('0x24')](_0x2751c9,'name');_0x4fa625[_0x95ae('0x28')]=_['keys'](_0x5f4d16[_0x95ae('0x28')]);_0x4fa625[_0x95ae('0x29')]=_['intersection'](_0x4fa625[_0x95ae('0x27')],_0x4fa625['query']);_0x424e0f[_0x95ae('0x2a')]=_[_0x95ae('0x2b')](_0x4fa625['model'],qs[_0x95ae('0x2c')](_0x5f4d16[_0x95ae('0x28')][_0x95ae('0x2c')]));_0x424e0f[_0x95ae('0x2a')]=_0x424e0f[_0x95ae('0x2a')][_0x95ae('0x2d')]?_0x424e0f[_0x95ae('0x2a')]:_0x4fa625['model'];if(!_0x5f4d16['query'][_0x95ae('0x2e')](_0x95ae('0x2f'))){_0x424e0f[_0x95ae('0x19')]=qs[_0x95ae('0x19')](_0x5f4d16[_0x95ae('0x28')]['limit']);_0x424e0f[_0x95ae('0x17')]=qs[_0x95ae('0x17')](_0x5f4d16[_0x95ae('0x28')][_0x95ae('0x17')]);}_0x424e0f[_0x95ae('0x30')]=qs[_0x95ae('0x31')](_0x5f4d16['query'][_0x95ae('0x31')]);_0x424e0f[_0x95ae('0x32')]=qs[_0x95ae('0x29')](_[_0x95ae('0x33')](_0x5f4d16['query'],_0x4fa625[_0x95ae('0x29')]),_0x2751c9);if(_0x5f4d16['query'][_0x95ae('0x34')]){_0x424e0f[_0x95ae('0x32')]=_[_0x95ae('0x35')](_0x424e0f[_0x95ae('0x32')],{'$or':_[_0x95ae('0x24')](_0x2751c9,function(_0x2222a2){if(_0x2222a2['type']!==_0x95ae('0x36')){var _0xf65b36={};_0xf65b36[_0x2222a2['name']]={'$like':'%'+_0x5f4d16['query'][_0x95ae('0x34')]+'%'};return _0xf65b36;}})});}_0x424e0f=_[_0x95ae('0x35')]({},_0x424e0f,_0x5f4d16[_0x95ae('0x37')]);var _0x53ca83={'where':_0x424e0f[_0x95ae('0x32')]};return db[_0x95ae('0x38')][_0x95ae('0x1a')](_0x53ca83)[_0x95ae('0x1d')](function(_0x1a3b58){_0x3df451[_0x95ae('0x1a')]=_0x1a3b58;if(_0x5f4d16['query'][_0x95ae('0x39')]){_0x424e0f[_0x95ae('0x3a')]=[{'all':!![]}];}return db[_0x95ae('0x38')][_0x95ae('0x3b')](_0x424e0f);})[_0x95ae('0x1d')](function(_0xf41d5b){_0x3df451[_0x95ae('0x3c')]=_0xf41d5b;return _0x3df451;})['then'](respondWithFilteredResult(_0x611fca,_0x424e0f))[_0x95ae('0x3d')](handleError(_0x611fca,null));};exports[_0x95ae('0x3e')]=function(_0x288d33,_0x36b11b){var _0x1ea78e={'raw':!![],'where':{'id':_0x288d33['params']['id']}},_0x4ec147={};_0x4ec147[_0x95ae('0x27')]=_[_0x95ae('0x3f')](db[_0x95ae('0x38')][_0x95ae('0x25')]);_0x4ec147['query']=_['keys'](_0x288d33['query']);_0x4ec147[_0x95ae('0x29')]=_['intersection'](_0x4ec147['model'],_0x4ec147[_0x95ae('0x28')]);_0x1ea78e[_0x95ae('0x2a')]=_['intersection'](_0x4ec147[_0x95ae('0x27')],qs[_0x95ae('0x2c')](_0x288d33[_0x95ae('0x28')][_0x95ae('0x2c')]));_0x1ea78e['attributes']=_0x1ea78e[_0x95ae('0x2a')][_0x95ae('0x2d')]?_0x1ea78e[_0x95ae('0x2a')]:_0x4ec147['model'];if(_0x288d33[_0x95ae('0x28')][_0x95ae('0x39')]){_0x1ea78e[_0x95ae('0x3a')]=[{'all':!![]}];}_0x1ea78e=_[_0x95ae('0x35')]({},_0x1ea78e,_0x288d33[_0x95ae('0x37')]);return db[_0x95ae('0x38')][_0x95ae('0x40')](_0x1ea78e)[_0x95ae('0x1d')](handleEntityNotFound(_0x36b11b,null))[_0x95ae('0x1d')](respondWithResult(_0x36b11b,null))['catch'](handleError(_0x36b11b,null));};exports[_0x95ae('0x41')]=function(_0x55e6e3,_0x41cec7){if(_0x55e6e3[_0x95ae('0x42')]['id']){delete _0x55e6e3[_0x95ae('0x42')]['id'];}return db['CmHopperBlack'][_0x95ae('0x40')]({'where':{'id':_0x55e6e3[_0x95ae('0x43')]['id']}})['then'](handleEntityNotFound(_0x41cec7,null))[_0x95ae('0x1d')](saveUpdates(_0x55e6e3[_0x95ae('0x42')],null))['then'](respondWithResult(_0x41cec7,null))[_0x95ae('0x3d')](handleError(_0x41cec7,null));};exports[_0x95ae('0x1e')]=function(_0x5bfdd1,_0xb6cbd0){return db['CmHopperBlack'][_0x95ae('0x40')]({'where':{'id':_0x5bfdd1[_0x95ae('0x43')]['id']}})[_0x95ae('0x1d')](handleEntityNotFound(_0xb6cbd0,null))['then'](removeEntity(_0xb6cbd0,null))[_0x95ae('0x3d')](handleError(_0xb6cbd0,null));};exports[_0x95ae('0x44')]=function(_0x5322b1,_0xcae893){return db[_0x95ae('0x38')]['describe']()['then'](respondWithResult(_0xcae893,null))[_0x95ae('0x3d')](handleError(_0xcae893,null));};
\ No newline at end of file
index dbbfc22..eb98822 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x87f7=['../../config/logger','api','path','rimraf','../../config/environment','./cmHopperBlack.attributes','exports','lodash'];(function(_0xc0638b,_0x2fccf4){var _0xd57dfa=function(_0x322fba){while(--_0x322fba){_0xc0638b['push'](_0xc0638b['shift']());}};_0xd57dfa(++_0x2fccf4);}(_0x87f7,0xef));var _0x787f=function(_0x4deeb4,_0x52ce5d){_0x4deeb4=_0x4deeb4-0x0;var _0x319d28=_0x87f7[_0x4deeb4];return _0x319d28;};'use strict';var _=require(_0x787f('0x0'));var util=require('util');var logger=require(_0x787f('0x1'))(_0x787f('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x787f('0x3'));var rimraf=require(_0x787f('0x4'));var config=require(_0x787f('0x5'));var attributes=require(_0x787f('0x6'));module[_0x787f('0x7')]=function(_0x26561c,_0x1dc1be){return _0x26561c['define']('CmHopperBlack',attributes,{'tableName':'cm_hopper_black','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc1ad=['lodash','util','api','moment','request-promise','path','../../config/environment','./cmHopperBlack.attributes','define','CmHopperBlack','cm_hopper_black'];(function(_0x4f12c4,_0x3a95cf){var _0xae2883=function(_0x5e4d1b){while(--_0x5e4d1b){_0x4f12c4['push'](_0x4f12c4['shift']());}};_0xae2883(++_0x3a95cf);}(_0xc1ad,0x1ce));var _0xdc1a=function(_0x16729c,_0x1018e0){_0x16729c=_0x16729c-0x0;var _0x77b6f8=_0xc1ad[_0x16729c];return _0x77b6f8;};'use strict';var _=require(_0xdc1a('0x0'));var util=require(_0xdc1a('0x1'));var logger=require('../../config/logger')(_0xdc1a('0x2'));var moment=require(_0xdc1a('0x3'));var BPromise=require('bluebird');var rp=require(_0xdc1a('0x4'));var fs=require('fs');var path=require(_0xdc1a('0x5'));var rimraf=require('rimraf');var config=require(_0xdc1a('0x6'));var attributes=require(_0xdc1a('0x7'));module['exports']=function(_0x209dd1,_0x5055a2){return _0x209dd1[_0xdc1a('0x8')](_0xdc1a('0x9'),attributes,{'tableName':_0xdc1a('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c5dbd38..93b0baa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb265=['UpdateCmHopperBlack','update','body','DestroyCmHopperBlack','destroy','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','then','info','CmHopperBlack,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','GetCmHopperBlack','CmHopperBlack','findAll','options','raw','where','limit','map','include','attributes','model','debug','catch'];(function(_0x59233e,_0x5833dc){var _0xe06e55=function(_0x217ca3){while(--_0x217ca3){_0x59233e['push'](_0x59233e['shift']());}};_0xe06e55(++_0x5833dc);}(_0xb265,0x10f));var _0x5b26=function(_0x3897ac,_0x26b799){_0x3897ac=_0x3897ac-0x0;var _0x54569a=_0xb265[_0x3897ac];return _0x54569a;};'use strict';var _=require(_0x5b26('0x0'));var util=require(_0x5b26('0x1'));var moment=require(_0x5b26('0x2'));var BPromise=require(_0x5b26('0x3'));var rs=require(_0x5b26('0x4'));var fs=require('fs');var Redis=require(_0x5b26('0x5'));var db=require(_0x5b26('0x6'))['db'];var utils=require(_0x5b26('0x7'));var logger=require(_0x5b26('0x8'))(_0x5b26('0x9'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x5b26('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x33cae0,_0x1cdbaf,_0x223f90){return new BPromise(function(_0x40f1b7,_0x297200){return client['request'](_0x33cae0,_0x223f90)[_0x5b26('0xb')](function(_0x49bca9){logger[_0x5b26('0xc')](_0x5b26('0xd'),_0x1cdbaf,_0x5b26('0xe'));logger['debug']('CmHopperBlack,\x20%s,\x20%s,\x20%s',_0x1cdbaf,_0x5b26('0xe'),JSON[_0x5b26('0xf')](_0x49bca9));if(_0x49bca9[_0x5b26('0x10')]){if(_0x49bca9[_0x5b26('0x10')][_0x5b26('0x11')]===0x1f4){logger[_0x5b26('0x10')](_0x5b26('0xd'),_0x1cdbaf,_0x49bca9[_0x5b26('0x10')]['message']);return _0x297200(_0x49bca9['error']['message']);}logger[_0x5b26('0x10')]('CmHopperBlack,\x20%s,\x20%s',_0x1cdbaf,_0x49bca9['error'][_0x5b26('0x12')]);return _0x40f1b7(_0x49bca9['error'][_0x5b26('0x12')]);}else{logger['info']('CmHopperBlack,\x20%s,\x20%s',_0x1cdbaf,_0x5b26('0xe'));_0x40f1b7(_0x49bca9[_0x5b26('0x13')][_0x5b26('0x12')]);}})['catch'](function(_0x4c9132){logger['error'](_0x5b26('0xd'),_0x1cdbaf,_0x4c9132);_0x297200(_0x4c9132);});});}exports[_0x5b26('0x14')]=function(_0x59080d){var _0x417a14=this;return new Promise(function(_0x46e8e3,_0x2a3e78){return db[_0x5b26('0x15')][_0x5b26('0x16')]({'raw':_0x59080d[_0x5b26('0x17')]?_0x59080d[_0x5b26('0x17')][_0x5b26('0x18')]===undefined?!![]:![]:!![],'where':_0x59080d['options']?_0x59080d[_0x5b26('0x17')][_0x5b26('0x19')]||null:null,'attributes':_0x59080d[_0x5b26('0x17')]?_0x59080d[_0x5b26('0x17')]['attributes']||null:null,'limit':_0x59080d[_0x5b26('0x17')]?_0x59080d[_0x5b26('0x17')][_0x5b26('0x1a')]||null:null,'include':_0x59080d[_0x5b26('0x17')]?_0x59080d[_0x5b26('0x17')]['include']?_[_0x5b26('0x1b')](_0x59080d[_0x5b26('0x17')][_0x5b26('0x1c')],function(_0x53ef05){return{'model':db[_0x53ef05['model']],'as':_0x53ef05['as'],'attributes':_0x53ef05[_0x5b26('0x1d')],'include':_0x53ef05[_0x5b26('0x1c')]?_[_0x5b26('0x1b')](_0x53ef05[_0x5b26('0x1c')],function(_0x14e0cd){return{'model':db[_0x14e0cd[_0x5b26('0x1e')]],'as':_0x14e0cd['as'],'attributes':_0x14e0cd['attributes'],'include':_0x14e0cd[_0x5b26('0x1c')]?_[_0x5b26('0x1b')](_0x14e0cd['include'],function(_0x2eeabe){return{'model':db[_0x2eeabe[_0x5b26('0x1e')]],'as':_0x2eeabe['as'],'attributes':_0x2eeabe[_0x5b26('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x5b26('0xb')](function(_0x4f7571){logger['info']('GetCmHopperBlack',_0x59080d);logger[_0x5b26('0x1f')](_0x5b26('0x14'),_0x59080d,JSON[_0x5b26('0xf')](_0x4f7571));_0x46e8e3(_0x4f7571);})[_0x5b26('0x20')](function(_0x3ac81b){logger[_0x5b26('0x10')](_0x5b26('0x14'),_0x3ac81b[_0x5b26('0x12')],_0x59080d);_0x2a3e78(_0x417a14['error'](0x1f4,_0x3ac81b[_0x5b26('0x12')]));});});};exports[_0x5b26('0x21')]=function(_0x897f9f){var _0x459111=this;return new Promise(function(_0x48ab1a,_0xe13f69){return db[_0x5b26('0x15')][_0x5b26('0x22')](_0x897f9f[_0x5b26('0x23')],{'raw':_0x897f9f[_0x5b26('0x17')]?_0x897f9f[_0x5b26('0x17')][_0x5b26('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x897f9f[_0x5b26('0x17')]?_0x897f9f[_0x5b26('0x17')]['where']||null:null,'attributes':_0x897f9f['options']?_0x897f9f[_0x5b26('0x17')][_0x5b26('0x1d')]||null:null,'limit':_0x897f9f['options']?_0x897f9f[_0x5b26('0x17')][_0x5b26('0x1a')]||null:null})[_0x5b26('0xb')](function(_0x4613f4){logger[_0x5b26('0xc')]('UpdateCmHopperBlack',_0x897f9f);logger[_0x5b26('0x1f')]('UpdateCmHopperBlack',_0x897f9f,JSON['stringify'](_0x4613f4));_0x48ab1a(_0x4613f4);})[_0x5b26('0x20')](function(_0x2f5d52){logger[_0x5b26('0x10')](_0x5b26('0x21'),_0x2f5d52[_0x5b26('0x12')],_0x897f9f);_0xe13f69(_0x459111[_0x5b26('0x10')](0x1f4,_0x2f5d52[_0x5b26('0x12')]));});});};exports[_0x5b26('0x24')]=function(_0x85541){var _0x1330dd=this;return new Promise(function(_0x1f0297,_0x52deb5){return db[_0x5b26('0x15')][_0x5b26('0x25')]({'where':_0x85541[_0x5b26('0x17')]?_0x85541['options']['where']||null:null})['then'](function(_0x323e05){logger[_0x5b26('0xc')](_0x5b26('0x24'),_0x85541);logger[_0x5b26('0x1f')]('DestroyCmHopperBlack',_0x85541,JSON[_0x5b26('0xf')](_0x323e05));_0x1f0297(_0x323e05);})[_0x5b26('0x20')](function(_0x2fe3c1){logger[_0x5b26('0x10')](_0x5b26('0x24'),_0x2fe3c1['message'],_0x85541);_0x52deb5(_0x1330dd[_0x5b26('0x10')](0x1f4,_0x2fe3c1['message']));});});};
\ No newline at end of file
+var _0xe668=['client','http','request','then','info','CmHopperBlack,\x20%s,\x20%s','request\x20sent','debug','CmHopperBlack,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CmHopperBlack','findAll','options','attributes','limit','include','model','map','GetCmHopperBlack','UpdateCmHopperBlack','update','body','raw','where','DestroyCmHopperBlack','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0xe668,0xbe));var _0x8e66=function(_0x3f5c7a,_0x28a535){_0x3f5c7a=_0x3f5c7a-0x0;var _0x33d8ed=_0xe668[_0x3f5c7a];return _0x33d8ed;};'use strict';var _=require(_0x8e66('0x0'));var util=require(_0x8e66('0x1'));var moment=require('moment');var BPromise=require(_0x8e66('0x2'));var rs=require(_0x8e66('0x3'));var fs=require('fs');var Redis=require(_0x8e66('0x4'));var db=require(_0x8e66('0x5'))['db'];var utils=require(_0x8e66('0x6'));var logger=require(_0x8e66('0x7'))('rpc');var config=require(_0x8e66('0x8'));var jayson=require(_0x8e66('0x9'));var client=jayson[_0x8e66('0xa')][_0x8e66('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2320f4,_0xbeb121,_0x3e8565){return new BPromise(function(_0x3c21c4,_0x4df44a){return client[_0x8e66('0xc')](_0x2320f4,_0x3e8565)[_0x8e66('0xd')](function(_0x1b93b0){logger[_0x8e66('0xe')](_0x8e66('0xf'),_0xbeb121,_0x8e66('0x10'));logger[_0x8e66('0x11')](_0x8e66('0x12'),_0xbeb121,_0x8e66('0x10'),JSON[_0x8e66('0x13')](_0x1b93b0));if(_0x1b93b0[_0x8e66('0x14')]){if(_0x1b93b0['error'][_0x8e66('0x15')]===0x1f4){logger[_0x8e66('0x14')](_0x8e66('0xf'),_0xbeb121,_0x1b93b0[_0x8e66('0x14')][_0x8e66('0x16')]);return _0x4df44a(_0x1b93b0[_0x8e66('0x14')][_0x8e66('0x16')]);}logger[_0x8e66('0x14')](_0x8e66('0xf'),_0xbeb121,_0x1b93b0[_0x8e66('0x14')]['message']);return _0x3c21c4(_0x1b93b0[_0x8e66('0x14')][_0x8e66('0x16')]);}else{logger[_0x8e66('0xe')](_0x8e66('0xf'),_0xbeb121,_0x8e66('0x10'));_0x3c21c4(_0x1b93b0[_0x8e66('0x17')][_0x8e66('0x16')]);}})[_0x8e66('0x18')](function(_0x700600){logger[_0x8e66('0x14')](_0x8e66('0xf'),_0xbeb121,_0x700600);_0x4df44a(_0x700600);});});}exports['GetCmHopperBlack']=function(_0x75ed1b){var _0x7ba32e=this;return new Promise(function(_0x3b6236,_0x5567de){return db[_0x8e66('0x19')][_0x8e66('0x1a')]({'raw':_0x75ed1b[_0x8e66('0x1b')]?_0x75ed1b[_0x8e66('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x75ed1b['options']?_0x75ed1b[_0x8e66('0x1b')]['where']||null:null,'attributes':_0x75ed1b['options']?_0x75ed1b['options'][_0x8e66('0x1c')]||null:null,'limit':_0x75ed1b[_0x8e66('0x1b')]?_0x75ed1b['options'][_0x8e66('0x1d')]||null:null,'include':_0x75ed1b[_0x8e66('0x1b')]?_0x75ed1b['options'][_0x8e66('0x1e')]?_['map'](_0x75ed1b[_0x8e66('0x1b')][_0x8e66('0x1e')],function(_0x3b2852){return{'model':db[_0x3b2852[_0x8e66('0x1f')]],'as':_0x3b2852['as'],'attributes':_0x3b2852[_0x8e66('0x1c')],'include':_0x3b2852[_0x8e66('0x1e')]?_['map'](_0x3b2852[_0x8e66('0x1e')],function(_0x2de77c){return{'model':db[_0x2de77c[_0x8e66('0x1f')]],'as':_0x2de77c['as'],'attributes':_0x2de77c[_0x8e66('0x1c')],'include':_0x2de77c[_0x8e66('0x1e')]?_[_0x8e66('0x20')](_0x2de77c[_0x8e66('0x1e')],function(_0x3d3f4e){return{'model':db[_0x3d3f4e[_0x8e66('0x1f')]],'as':_0x3d3f4e['as'],'attributes':_0x3d3f4e[_0x8e66('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x8e66('0xd')](function(_0x558149){logger[_0x8e66('0xe')](_0x8e66('0x21'),_0x75ed1b);logger[_0x8e66('0x11')](_0x8e66('0x21'),_0x75ed1b,JSON['stringify'](_0x558149));_0x3b6236(_0x558149);})[_0x8e66('0x18')](function(_0x405f31){logger[_0x8e66('0x14')](_0x8e66('0x21'),_0x405f31[_0x8e66('0x16')],_0x75ed1b);_0x5567de(_0x7ba32e[_0x8e66('0x14')](0x1f4,_0x405f31['message']));});});};exports[_0x8e66('0x22')]=function(_0x222092){var _0x2709bb=this;return new Promise(function(_0x36ff8e,_0x1beef8){return db[_0x8e66('0x19')][_0x8e66('0x23')](_0x222092[_0x8e66('0x24')],{'raw':_0x222092[_0x8e66('0x1b')]?_0x222092[_0x8e66('0x1b')][_0x8e66('0x25')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x222092[_0x8e66('0x1b')]?_0x222092[_0x8e66('0x1b')][_0x8e66('0x26')]||null:null,'attributes':_0x222092['options']?_0x222092[_0x8e66('0x1b')]['attributes']||null:null,'limit':_0x222092[_0x8e66('0x1b')]?_0x222092[_0x8e66('0x1b')][_0x8e66('0x1d')]||null:null})[_0x8e66('0xd')](function(_0xd6deb6){logger[_0x8e66('0xe')]('UpdateCmHopperBlack',_0x222092);logger[_0x8e66('0x11')]('UpdateCmHopperBlack',_0x222092,JSON[_0x8e66('0x13')](_0xd6deb6));_0x36ff8e(_0xd6deb6);})[_0x8e66('0x18')](function(_0x450324){logger[_0x8e66('0x14')]('UpdateCmHopperBlack',_0x450324[_0x8e66('0x16')],_0x222092);_0x1beef8(_0x2709bb['error'](0x1f4,_0x450324[_0x8e66('0x16')]));});});};exports['DestroyCmHopperBlack']=function(_0x3e6e3c){var _0x54f0b3=this;return new Promise(function(_0x22e265,_0xa4c8cd){return db[_0x8e66('0x19')]['destroy']({'where':_0x3e6e3c['options']?_0x3e6e3c[_0x8e66('0x1b')]['where']||null:null})[_0x8e66('0xd')](function(_0x47467d){logger[_0x8e66('0xe')](_0x8e66('0x27'),_0x3e6e3c);logger[_0x8e66('0x11')](_0x8e66('0x27'),_0x3e6e3c,JSON[_0x8e66('0x13')](_0x47467d));_0x22e265(_0x47467d);})[_0x8e66('0x18')](function(_0x6e97c3){logger[_0x8e66('0x14')](_0x8e66('0x27'),_0x6e97c3[_0x8e66('0x16')],_0x3e6e3c);_0xa4c8cd(_0x54f0b3[_0x8e66('0x14')](0x1f4,_0x6e97c3['message']));});});};
\ No newline at end of file
index 7e6db1f..70763ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed1c=['describe','/:id','show','put','delete','destroy','exports','multer','util','fs-extra','../../components/auth/service','../../components/interaction/service','./cmHopperBlack.controller','get','isAuthenticated','index','/describe'];(function(_0x52e0e7,_0x1080d1){var _0xacb536=function(_0x35ed8c){while(--_0x35ed8c){_0x52e0e7['push'](_0x52e0e7['shift']());}};_0xacb536(++_0x1080d1);}(_0xed1c,0xe4));var _0xced1=function(_0x2e155d,_0x41186a){_0x2e155d=_0x2e155d-0x0;var _0x1a1df1=_0xed1c[_0x2e155d];return _0x1a1df1;};'use strict';var multer=require(_0xced1('0x0'));var util=require(_0xced1('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0xced1('0x2'));var auth=require(_0xced1('0x3'));var interaction=require(_0xced1('0x4'));var config=require('../../config/environment');var controller=require(_0xced1('0x5'));router[_0xced1('0x6')]('/',auth[_0xced1('0x7')](),controller[_0xced1('0x8')]);router['get'](_0xced1('0x9'),auth[_0xced1('0x7')](),controller[_0xced1('0xa')]);router[_0xced1('0x6')](_0xced1('0xb'),auth[_0xced1('0x7')](),controller[_0xced1('0xc')]);router[_0xced1('0xd')]('/:id',auth[_0xced1('0x7')](),controller['update']);router[_0xced1('0xe')](_0xced1('0xb'),auth[_0xced1('0x7')](),controller[_0xced1('0xf')]);module[_0xced1('0x10')]=router;
\ No newline at end of file
+var _0x7ee1=['Router','fs-extra','../../components/interaction/service','../../config/environment','./cmHopperBlack.controller','get','index','isAuthenticated','/:id','delete','destroy','multer','express'];(function(_0x17372a,_0x3e4929){var _0x1a3279=function(_0x31af43){while(--_0x31af43){_0x17372a['push'](_0x17372a['shift']());}};_0x1a3279(++_0x3e4929);}(_0x7ee1,0x8d));var _0x17ee=function(_0x560ffe,_0x17b91f){_0x560ffe=_0x560ffe-0x0;var _0x1f7fc7=_0x7ee1[_0x560ffe];return _0x1f7fc7;};'use strict';var multer=require(_0x17ee('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x17ee('0x1'));var router=express[_0x17ee('0x2')]();var fs_extra=require(_0x17ee('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x17ee('0x4'));var config=require(_0x17ee('0x5'));var controller=require(_0x17ee('0x6'));router[_0x17ee('0x7')]('/',auth['isAuthenticated'](),controller[_0x17ee('0x8')]);router[_0x17ee('0x7')]('/describe',auth[_0x17ee('0x9')](),controller['describe']);router[_0x17ee('0x7')](_0x17ee('0xa'),auth[_0x17ee('0x9')](),controller['show']);router['put']('/:id',auth[_0x17ee('0x9')](),controller['update']);router[_0x17ee('0xb')](_0x17ee('0xa'),auth[_0x17ee('0x9')](),controller[_0x17ee('0xc')]);module['exports']=router;
\ No newline at end of file
index d24e16d..10280a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x06a6=['BOOLEAN','sequelize','exports','INTEGER','STRING','DATE','getDataValue','endtime','setDataValue','diff','seconds'];(function(_0x5b65b9,_0x499fa0){var _0x2fd6bd=function(_0x18c17f){while(--_0x18c17f){_0x5b65b9['push'](_0x5b65b9['shift']());}};_0x2fd6bd(++_0x499fa0);}(_0x06a6,0x1e5));var _0x606a=function(_0x16d8d9,_0x2be9a4){_0x16d8d9=_0x16d8d9-0x0;var _0x274705=_0x06a6[_0x16d8d9];return _0x274705;};'use strict';var Sequelize=require(_0x606a('0x0'));var moment=require('moment');module[_0x606a('0x1')]={'state':{'type':Sequelize[_0x606a('0x2')](0x2)},'statedesc':{'type':Sequelize[_0x606a('0x3')]},'scheduledat':{'type':Sequelize[_0x606a('0x4')]},'countbusyretry':{'type':Sequelize[_0x606a('0x2')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x606a('0x2')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x606a('0x2')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x606a('0x2')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0x606a('0x3')]},'originatecalleridnum':{'type':Sequelize[_0x606a('0x3')]},'originatecalleridname':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0x606a('0x3')]},'calleridname':{'type':Sequelize[_0x606a('0x3')]},'starttime':{'type':Sequelize['DATE']},'responsetime':{'type':Sequelize['DATE']},'answertime':{'type':Sequelize[_0x606a('0x4')]},'droptime':{'type':Sequelize[_0x606a('0x4')]},'endtime':{'type':Sequelize[_0x606a('0x4')]},'ringtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0x606a('0x2')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x606a('0x2')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0x606a('0x2')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0x606a('0x3')]},'campaign':{'type':Sequelize[_0x606a('0x3')]},'campaigntype':{'type':Sequelize[_0x606a('0x3')]},'membername':{'type':Sequelize['STRING']},'reason':{'type':Sequelize[_0x606a('0x3')]},'disposition':{'type':Sequelize[_0x606a('0x3')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0x606a('0x3')]},'dispositionat':{'type':Sequelize[_0x606a('0x4')],'set':function(_0x4f174c){var _0x994a86=this[_0x606a('0x5')](_0x606a('0x6'));if(_0x994a86&&_0x4f174c){this[_0x606a('0x7')]('followuptime',moment(_0x4f174c)[_0x606a('0x8')](moment(_0x994a86),_0x606a('0x9')));}}},'amd':{'type':Sequelize[_0x606a('0xa')],'defaultValue':![]},'fax':{'type':Sequelize[_0x606a('0xa')],'defaultValue':![]},'blacklist':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'rescheduled':{'type':Sequelize[_0x606a('0xa')],'defaultValue':![]},'rescheduledat':{'type':Sequelize['DATE']},'callback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize['STRING'],'defaultValue':null},'callbackat':{'type':Sequelize[_0x606a('0x4')]},'deleted':{'type':Sequelize[_0x606a('0x3')],'defaultValue':null},'deletedat':{'type':Sequelize['DATE']},'recallme':{'type':Sequelize[_0x606a('0xa')],'defaultValue':![]},'agiafterat':{'type':Sequelize['DATE']},'countnosuchnumberretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countdropretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x606a('0x2')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0xd416=['DATE','getDataValue','endtime','setDataValue','followuptime','BOOLEAN','sequelize','INTEGER','STRING'];(function(_0x1e4508,_0x596e13){var _0x31501d=function(_0x2646d2){while(--_0x2646d2){_0x1e4508['push'](_0x1e4508['shift']());}};_0x31501d(++_0x596e13);}(_0xd416,0x1b6));var _0x6d41=function(_0x537525,_0x278616){_0x537525=_0x537525-0x0;var _0xac47d5=_0xd416[_0x537525];return _0xac47d5;};'use strict';var Sequelize=require(_0x6d41('0x0'));var moment=require('moment');module['exports']={'state':{'type':Sequelize[_0x6d41('0x1')](0x2)},'statedesc':{'type':Sequelize[_0x6d41('0x2')]},'scheduledat':{'type':Sequelize[_0x6d41('0x3')]},'countbusyretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x6d41('0x1')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x6d41('0x1')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x6d41('0x1')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0x6d41('0x2')]},'originatecalleridnum':{'type':Sequelize[_0x6d41('0x2')]},'originatecalleridname':{'type':Sequelize[_0x6d41('0x2')]},'calleridnum':{'type':Sequelize[_0x6d41('0x2')]},'calleridname':{'type':Sequelize[_0x6d41('0x2')]},'starttime':{'type':Sequelize[_0x6d41('0x3')]},'responsetime':{'type':Sequelize[_0x6d41('0x3')]},'answertime':{'type':Sequelize[_0x6d41('0x3')]},'droptime':{'type':Sequelize[_0x6d41('0x3')]},'endtime':{'type':Sequelize['DATE']},'ringtime':{'type':Sequelize[_0x6d41('0x1')],'defaultValue':0x0},'holdtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x6d41('0x1')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0x6d41('0x1')],'defaultValue':0x0},'dropreason':{'type':Sequelize['STRING']},'campaign':{'type':Sequelize[_0x6d41('0x2')]},'campaigntype':{'type':Sequelize['STRING']},'membername':{'type':Sequelize['STRING']},'reason':{'type':Sequelize[_0x6d41('0x2')]},'disposition':{'type':Sequelize[_0x6d41('0x2')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0x6d41('0x2')]},'dispositionat':{'type':Sequelize[_0x6d41('0x3')],'set':function(_0x3ccdc3){var _0x523423=this[_0x6d41('0x4')](_0x6d41('0x5'));if(_0x523423&&_0x3ccdc3){this[_0x6d41('0x6')](_0x6d41('0x7'),moment(_0x3ccdc3)['diff'](moment(_0x523423),'seconds'));}}},'amd':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'fax':{'type':Sequelize[_0x6d41('0x8')],'defaultValue':![]},'blacklist':{'type':Sequelize[_0x6d41('0x8')],'defaultValue':![]},'rescheduled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'rescheduledat':{'type':Sequelize[_0x6d41('0x3')]},'callback':{'type':Sequelize[_0x6d41('0x8')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize['STRING'],'defaultValue':null},'callbackat':{'type':Sequelize[_0x6d41('0x3')]},'deleted':{'type':Sequelize[_0x6d41('0x2')],'defaultValue':null},'deletedat':{'type':Sequelize['DATE']},'recallme':{'type':Sequelize[_0x6d41('0x8')],'defaultValue':![]},'agiafterat':{'type':Sequelize['DATE']},'countnosuchnumberretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x6d41('0x1')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x6d41('0x1')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x6d41('0x1')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 9aaafbe..f98428c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfdbd=['status','end','json','offset','undefined','count','limit','set','reject','save','update','destroy','then','error','stack','name','send','index','map','CmHopperFinal','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','show','length','find','catch','describe','body','uniqueid','countContactsQueueCampaignHopperFinal','sequelize','COUNT','literal','`state`\x20=\x200,\x201,\x20null','noSuchContacts','`state`\x20=\x203,\x201,\x20null','`state`\x20=\x205,\x201,\x20null','busyContacts','`state`\x20=\x208,\x201,\x20null','congestionContacts','`state`\x20=\x2010\x20,\x201,\x20null','dropContacts','abandonedContacts','`state`\x20=\x2022,\x201,\x20null','reCallContacts','`state`\x20=\x2019,\x201,\x20null','answeringMachine','countContactsIvrCampaignHopperFinal','params','noAnswerContacts','moveContactsQueueCampaignHopperFinal','VoiceQueue','insert','into','cm_hopper','fromQuery','phone','scheduledAt','ContactId','ListId','VoiceQueueId','createdAt','updatedAt','field','ANY_VALUE(calleridnum)','NOW()','ANY_VALUE(ListId)','ANY_VALUE(VoiceQueueId)','from','cm_hopper_final','toString','state\x20=\x20?','calleridnum\x20IS\x20NOT\x20NULL','calleridnum\x20NOT\x20IN\x20(?)','select','calleridnum','VoiceQueueId\x20=\x20?','state\x20=\x204','group','moveContactsIvrCampaignHopperFinal','CampaignId','ANY_VALUE(CampaignId)','CampaignId\x20=\x20?','state','checkContactHopper','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','ejs','fs-extra','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus'];(function(_0x586319,_0xf3ac9a){var _0x2127d2=function(_0x543805){while(--_0x543805){_0x586319['push'](_0x586319['shift']());}};_0x2127d2(++_0xf3ac9a);}(_0xfdbd,0xf0));var _0xdfdb=function(_0x2efe86,_0x4b6c3f){_0x2efe86=_0x2efe86-0x0;var _0x48e01c=_0xfdbd[_0x2efe86];return _0x48e01c;};'use strict';var emlformat=require(_0xdfdb('0x0'));var rimraf=require(_0xdfdb('0x1'));var zipdir=require(_0xdfdb('0x2'));var jsonpatch=require(_0xdfdb('0x3'));var rp=require(_0xdfdb('0x4'));var moment=require(_0xdfdb('0x5'));var BPromise=require(_0xdfdb('0x6'));var Mustache=require(_0xdfdb('0x7'));var util=require(_0xdfdb('0x8'));var path=require('path');var sox=require(_0xdfdb('0x9'));var csv=require('to-csv');var ejs=require(_0xdfdb('0xa'));var fs=require('fs');var fs_extra=require(_0xdfdb('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xdfdb('0xc'));var deskjs=require(_0xdfdb('0xd'));var toCsv=require('to-csv');var querystring=require(_0xdfdb('0xe'));var Papa=require(_0xdfdb('0xf'));var Redis=require(_0xdfdb('0x10'));var authService=require(_0xdfdb('0x11'));var qs=require(_0xdfdb('0x12'));var as=require(_0xdfdb('0x13'));var hardwareService=require(_0xdfdb('0x14'));var logger=require('../../config/logger')(_0xdfdb('0x15'));var utils=require(_0xdfdb('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xdfdb('0x17'));var db=require(_0xdfdb('0x18'))['db'];function respondWithStatusCode(_0x2bee3b,_0x1918c1){_0x1918c1=_0x1918c1||0xcc;return function(_0x2a95f1){if(_0x2a95f1){return _0x2bee3b[_0xdfdb('0x19')](_0x1918c1);}return _0x2bee3b[_0xdfdb('0x1a')](_0x1918c1)[_0xdfdb('0x1b')]();};}function respondWithResult(_0x51162f,_0x48a66a){_0x48a66a=_0x48a66a||0xc8;return function(_0x2c44dc){if(_0x2c44dc){return _0x51162f['status'](_0x48a66a)[_0xdfdb('0x1c')](_0x2c44dc);}};}function respondWithFilteredResult(_0x9f3039,_0x11a56a){return function(_0x40bc8a){if(_0x40bc8a){var _0x3bfd81=typeof _0x11a56a[_0xdfdb('0x1d')]==='undefined'&&typeof _0x11a56a['limit']===_0xdfdb('0x1e');var _0x8b9193=_0x40bc8a[_0xdfdb('0x1f')];var _0x55ab5a=_0x3bfd81?0x0:_0x11a56a[_0xdfdb('0x1d')];var _0xb677b1=_0x3bfd81?_0x40bc8a[_0xdfdb('0x1f')]:_0x11a56a[_0xdfdb('0x1d')]+_0x11a56a[_0xdfdb('0x20')];var _0x2294de;if(_0xb677b1>=_0x8b9193){_0xb677b1=_0x8b9193;_0x2294de=0xc8;}else{_0x2294de=0xce;}_0x9f3039[_0xdfdb('0x1a')](_0x2294de);return _0x9f3039[_0xdfdb('0x21')]('Content-Range',_0x55ab5a+'-'+_0xb677b1+'/'+_0x8b9193)[_0xdfdb('0x1c')](_0x40bc8a);}return null;};}function patchUpdates(_0xb7417c){return function(_0x172c63){try{jsonpatch['apply'](_0x172c63,_0xb7417c,!![]);}catch(_0x377112){return BPromise[_0xdfdb('0x22')](_0x377112);}return _0x172c63[_0xdfdb('0x23')]();};}function saveUpdates(_0x4d55e5,_0x280e53){return function(_0x789bd2){if(_0x789bd2){return _0x789bd2[_0xdfdb('0x24')](_0x4d55e5)['then'](function(_0x2a80c1){return _0x2a80c1;});}return null;};}function removeEntity(_0x526057,_0x2db1c1){return function(_0x145350){if(_0x145350){return _0x145350[_0xdfdb('0x25')]()[_0xdfdb('0x26')](function(){_0x526057['status'](0xcc)[_0xdfdb('0x1b')]();});}};}function handleEntityNotFound(_0x4363d8,_0x956843){return function(_0x400663){if(!_0x400663){_0x4363d8[_0xdfdb('0x19')](0x194);}return _0x400663;};}function handleError(_0x305954,_0x57d24f){_0x57d24f=_0x57d24f||0x1f4;return function(_0xec4d22){logger[_0xdfdb('0x27')](_0xec4d22[_0xdfdb('0x28')]);if(_0xec4d22['name']){delete _0xec4d22[_0xdfdb('0x29')];}_0x305954['status'](_0x57d24f)[_0xdfdb('0x2a')](_0xec4d22);};}exports[_0xdfdb('0x2b')]=function(_0x19c36f,_0x513fa0){var _0x5bc174={},_0x1c8ca8={},_0xc56435={'count':0x0,'rows':[]};var _0xedbb91=_[_0xdfdb('0x2c')](db[_0xdfdb('0x2d')][_0xdfdb('0x2e')],function(_0x5a9fc4){return{'name':_0x5a9fc4[_0xdfdb('0x2f')],'type':_0x5a9fc4[_0xdfdb('0x30')][_0xdfdb('0x31')]};});_0x1c8ca8[_0xdfdb('0x32')]=_[_0xdfdb('0x2c')](_0xedbb91,_0xdfdb('0x29'));_0x1c8ca8[_0xdfdb('0x33')]=_[_0xdfdb('0x34')](_0x19c36f[_0xdfdb('0x33')]);_0x1c8ca8[_0xdfdb('0x35')]=_[_0xdfdb('0x36')](_0x1c8ca8['model'],_0x1c8ca8['query']);_0x5bc174[_0xdfdb('0x37')]=_['intersection'](_0x1c8ca8[_0xdfdb('0x32')],qs[_0xdfdb('0x38')](_0x19c36f[_0xdfdb('0x33')][_0xdfdb('0x38')]));_0x5bc174['attributes']=_0x5bc174[_0xdfdb('0x37')]['length']?_0x5bc174[_0xdfdb('0x37')]:_0x1c8ca8[_0xdfdb('0x32')];if(!_0x19c36f[_0xdfdb('0x33')][_0xdfdb('0x39')](_0xdfdb('0x3a'))){_0x5bc174[_0xdfdb('0x20')]=qs['limit'](_0x19c36f[_0xdfdb('0x33')][_0xdfdb('0x20')]);_0x5bc174['offset']=qs[_0xdfdb('0x1d')](_0x19c36f[_0xdfdb('0x33')][_0xdfdb('0x1d')]);}_0x5bc174[_0xdfdb('0x3b')]=qs[_0xdfdb('0x3c')](_0x19c36f[_0xdfdb('0x33')][_0xdfdb('0x3c')]);_0x5bc174[_0xdfdb('0x3d')]=qs[_0xdfdb('0x35')](_[_0xdfdb('0x3e')](_0x19c36f[_0xdfdb('0x33')],_0x1c8ca8['filters']),_0xedbb91);if(_0x19c36f[_0xdfdb('0x33')][_0xdfdb('0x3f')]){_0x5bc174[_0xdfdb('0x3d')]=_[_0xdfdb('0x40')](_0x5bc174[_0xdfdb('0x3d')],{'$or':_[_0xdfdb('0x2c')](_0xedbb91,function(_0x3ec73a){if(_0x3ec73a[_0xdfdb('0x30')]!=='VIRTUAL'){var _0x55d707={};_0x55d707[_0x3ec73a[_0xdfdb('0x29')]]={'$like':'%'+_0x19c36f[_0xdfdb('0x33')][_0xdfdb('0x3f')]+'%'};return _0x55d707;}})});}_0x5bc174=_[_0xdfdb('0x40')]({},_0x5bc174,_0x19c36f[_0xdfdb('0x41')]);var _0x300884={'where':_0x5bc174[_0xdfdb('0x3d')]};return db[_0xdfdb('0x2d')][_0xdfdb('0x1f')](_0x300884)['then'](function(_0x175f57){_0xc56435[_0xdfdb('0x1f')]=_0x175f57;if(_0x19c36f[_0xdfdb('0x33')][_0xdfdb('0x42')]){_0x5bc174[_0xdfdb('0x43')]=[{'all':!![]}];}return db['CmHopperFinal'][_0xdfdb('0x44')](_0x5bc174);})[_0xdfdb('0x26')](function(_0x3e9f88){_0xc56435[_0xdfdb('0x45')]=_0x3e9f88;return _0xc56435;})[_0xdfdb('0x26')](respondWithFilteredResult(_0x513fa0,_0x5bc174))['catch'](handleError(_0x513fa0,null));};exports[_0xdfdb('0x46')]=function(_0xd2f8bd,_0xf0482a){var _0x5b4381={'raw':!![],'where':{'id':_0xd2f8bd['params']['id']}},_0x2b5139={};_0x2b5139[_0xdfdb('0x32')]=_['keys'](db[_0xdfdb('0x2d')][_0xdfdb('0x2e')]);_0x2b5139['query']=_[_0xdfdb('0x34')](_0xd2f8bd['query']);_0x2b5139[_0xdfdb('0x35')]=_[_0xdfdb('0x36')](_0x2b5139[_0xdfdb('0x32')],_0x2b5139[_0xdfdb('0x33')]);_0x5b4381[_0xdfdb('0x37')]=_['intersection'](_0x2b5139['model'],qs[_0xdfdb('0x38')](_0xd2f8bd[_0xdfdb('0x33')]['fields']));_0x5b4381[_0xdfdb('0x37')]=_0x5b4381['attributes'][_0xdfdb('0x47')]?_0x5b4381[_0xdfdb('0x37')]:_0x2b5139[_0xdfdb('0x32')];if(_0xd2f8bd[_0xdfdb('0x33')][_0xdfdb('0x42')]){_0x5b4381[_0xdfdb('0x43')]=[{'all':!![]}];}_0x5b4381=_[_0xdfdb('0x40')]({},_0x5b4381,_0xd2f8bd[_0xdfdb('0x41')]);return db[_0xdfdb('0x2d')][_0xdfdb('0x48')](_0x5b4381)[_0xdfdb('0x26')](handleEntityNotFound(_0xf0482a,null))[_0xdfdb('0x26')](respondWithResult(_0xf0482a,null))[_0xdfdb('0x49')](handleError(_0xf0482a,null));};exports[_0xdfdb('0x4a')]=function(_0x1c08fb,_0x273477){return db['CmHopperFinal']['describe']()[_0xdfdb('0x26')](respondWithResult(_0x273477,null))[_0xdfdb('0x49')](handleError(_0x273477,null));};exports[_0xdfdb('0x24')]=function(_0x4bbb88,_0x36149e){if(_0x4bbb88[_0xdfdb('0x4b')][_0xdfdb('0x4c')]){delete _0x4bbb88[_0xdfdb('0x4b')]['uniqueid'];}return db[_0xdfdb('0x2d')][_0xdfdb('0x48')]({'where':{'uniqueid':_0x4bbb88['params']['id']}})[_0xdfdb('0x26')](handleEntityNotFound(_0x36149e,null))[_0xdfdb('0x26')](saveUpdates(_0x4bbb88[_0xdfdb('0x4b')],null))[_0xdfdb('0x26')](respondWithResult(_0x36149e,null))[_0xdfdb('0x49')](handleError(_0x36149e,null));};exports[_0xdfdb('0x4d')]=function(_0x17dfdb,_0x1f5b88,_0x1da7af){return db['CmHopperFinal'][_0xdfdb('0x44')]({'raw':![],'where':{'VoiceQueueId':_0x17dfdb['params']['id']},'attributes':[[db[_0xdfdb('0x4e')]['fn'](_0xdfdb('0x4f'),db[_0xdfdb('0x4e')]['fn']('IF',db[_0xdfdb('0x4e')][_0xdfdb('0x50')](_0xdfdb('0x51')))),_0xdfdb('0x52')],[db['sequelize']['fn'](_0xdfdb('0x4f'),db[_0xdfdb('0x4e')]['fn']('IF',db[_0xdfdb('0x4e')][_0xdfdb('0x50')](_0xdfdb('0x53')))),'noAnswerContacts'],[db[_0xdfdb('0x4e')]['fn']('COUNT',db[_0xdfdb('0x4e')]['fn']('IF',db[_0xdfdb('0x4e')][_0xdfdb('0x50')](_0xdfdb('0x54')))),_0xdfdb('0x55')],[db['sequelize']['fn'](_0xdfdb('0x4f'),db[_0xdfdb('0x4e')]['fn']('IF',db['sequelize'][_0xdfdb('0x50')](_0xdfdb('0x56')))),_0xdfdb('0x57')],[db['sequelize']['fn'](_0xdfdb('0x4f'),db[_0xdfdb('0x4e')]['fn']('IF',db[_0xdfdb('0x4e')][_0xdfdb('0x50')](_0xdfdb('0x58')))),_0xdfdb('0x59')],[db['sequelize']['fn']('COUNT',db[_0xdfdb('0x4e')]['fn']('IF',db['sequelize']['literal']('`state`\x20=\x2011\x20,\x201,\x20null'))),_0xdfdb('0x5a')],[db[_0xdfdb('0x4e')]['fn'](_0xdfdb('0x4f'),db[_0xdfdb('0x4e')]['fn']('IF',db[_0xdfdb('0x4e')][_0xdfdb('0x50')](_0xdfdb('0x5b')))),_0xdfdb('0x5c')],[db[_0xdfdb('0x4e')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0xdfdb('0x4e')]['literal'](_0xdfdb('0x5d')))),_0xdfdb('0x5e')]]})[_0xdfdb('0x26')](handleEntityNotFound(_0x1f5b88,null))['then'](respondWithResult(_0x1f5b88,null))[_0xdfdb('0x49')](handleError(_0x1f5b88,null));};exports[_0xdfdb('0x5f')]=function(_0x349cf7,_0x2f69a8,_0x424212){return db[_0xdfdb('0x2d')][_0xdfdb('0x44')]({'raw':![],'where':{'CampaignId':_0x349cf7[_0xdfdb('0x60')]['id']},'attributes':[[db['sequelize']['fn'](_0xdfdb('0x4f'),db[_0xdfdb('0x4e')]['fn']('IF',db['sequelize'][_0xdfdb('0x50')](_0xdfdb('0x51')))),_0xdfdb('0x52')],[db[_0xdfdb('0x4e')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0xdfdb('0x4e')][_0xdfdb('0x50')]('`state`\x20=\x203,\x201,\x20null'))),_0xdfdb('0x61')],[db[_0xdfdb('0x4e')]['fn'](_0xdfdb('0x4f'),db['sequelize']['fn']('IF',db['sequelize'][_0xdfdb('0x50')](_0xdfdb('0x54')))),'busyContacts'],[db['sequelize']['fn'](_0xdfdb('0x4f'),db['sequelize']['fn']('IF',db['sequelize'][_0xdfdb('0x50')]('`state`\x20=\x208,\x201,\x20null'))),_0xdfdb('0x57')],[db[_0xdfdb('0x4e')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0xdfdb('0x4e')][_0xdfdb('0x50')]('`state`\x20=\x2010\x20,\x201,\x20null'))),_0xdfdb('0x59')],[db[_0xdfdb('0x4e')]['fn'](_0xdfdb('0x4f'),db[_0xdfdb('0x4e')]['fn']('IF',db[_0xdfdb('0x4e')]['literal']('`state`\x20=\x2011\x20,\x201,\x20null'))),_0xdfdb('0x5a')],[db[_0xdfdb('0x4e')]['fn'](_0xdfdb('0x4f'),db[_0xdfdb('0x4e')]['fn']('IF',db[_0xdfdb('0x4e')][_0xdfdb('0x50')]('`state`\x20=\x2022,\x201,\x20null'))),_0xdfdb('0x5c')],[db[_0xdfdb('0x4e')]['fn'](_0xdfdb('0x4f'),db[_0xdfdb('0x4e')]['fn']('IF',db[_0xdfdb('0x4e')][_0xdfdb('0x50')](_0xdfdb('0x5d')))),_0xdfdb('0x5e')]]})[_0xdfdb('0x26')](handleEntityNotFound(_0x2f69a8,null))[_0xdfdb('0x26')](respondWithResult(_0x2f69a8,null))['catch'](handleError(_0x2f69a8,null));};exports[_0xdfdb('0x62')]=function(_0x198cfa,_0x2831d6,_0x45bfc0){return db[_0xdfdb('0x63')]['find']({'where':{'id':_0x198cfa[_0xdfdb('0x60')]['id']}})[_0xdfdb('0x26')](handleEntityNotFound(_0x2831d6,null))[_0xdfdb('0x26')](function(_0x1a31b9){var _0x4999c4;if(_0x1a31b9){_0x4999c4=squel[_0xdfdb('0x64')]()[_0xdfdb('0x65')](_0xdfdb('0x66'))[_0xdfdb('0x67')]([_0xdfdb('0x68'),_0xdfdb('0x69'),_0xdfdb('0x6a'),_0xdfdb('0x6b'),_0xdfdb('0x6c'),_0xdfdb('0x6d'),_0xdfdb('0x6e')],squel['select']()[_0xdfdb('0x6f')](_0xdfdb('0x70'),'phone')[_0xdfdb('0x6f')](_0xdfdb('0x71'),_0xdfdb('0x69'))['field']('ANY_VALUE(ContactId)','ContactId')[_0xdfdb('0x6f')](_0xdfdb('0x72'),_0xdfdb('0x6b'))[_0xdfdb('0x6f')](_0xdfdb('0x73'),_0xdfdb('0x6c'))[_0xdfdb('0x6f')]('NOW()',_0xdfdb('0x6d'))[_0xdfdb('0x6f')](_0xdfdb('0x71'),_0xdfdb('0x6e'))[_0xdfdb('0x74')](_0xdfdb('0x75'))[_0xdfdb('0x3d')]('VoiceQueueId\x20=\x20?',_0x198cfa[_0xdfdb('0x60')]['id'][_0xdfdb('0x76')]())[_0xdfdb('0x3d')](_0xdfdb('0x77'),_0x198cfa[_0xdfdb('0x4b')]['state'][_0xdfdb('0x76')]())['where'](_0xdfdb('0x78'))[_0xdfdb('0x3d')](_0xdfdb('0x79'),squel[_0xdfdb('0x7a')]()[_0xdfdb('0x6f')]('phone')[_0xdfdb('0x74')](_0xdfdb('0x66'))['where']('VoiceQueueId\x20=\x20?',_0x198cfa[_0xdfdb('0x60')]['id']['toString']()))['where'](_0xdfdb('0x79'),squel[_0xdfdb('0x7a')]()[_0xdfdb('0x6f')](_0xdfdb('0x7b'))[_0xdfdb('0x74')](_0xdfdb('0x75'))[_0xdfdb('0x3d')](_0xdfdb('0x7c'),_0x198cfa['params']['id'][_0xdfdb('0x76')]())['where'](_0xdfdb('0x7d')))[_0xdfdb('0x7e')](_0xdfdb('0x6a')))[_0xdfdb('0x76')]();return db[_0xdfdb('0x4e')]['query'](_0x4999c4);}return[];})[_0xdfdb('0x26')](respondWithResult(_0x2831d6,null))[_0xdfdb('0x49')](handleError(_0x2831d6,null));};exports[_0xdfdb('0x7f')]=function(_0x1b6445,_0x36241c,_0x4c833f){return db['Campaign'][_0xdfdb('0x48')]({'where':{'id':_0x1b6445[_0xdfdb('0x60')]['id']}})['then'](handleEntityNotFound(_0x36241c,null))[_0xdfdb('0x26')](function(_0x50d5d4){var _0x158454;if(_0x50d5d4){_0x158454=squel[_0xdfdb('0x64')]()[_0xdfdb('0x65')]('cm_hopper')[_0xdfdb('0x67')](['phone','scheduledAt',_0xdfdb('0x6a'),'ListId',_0xdfdb('0x80'),_0xdfdb('0x6d'),_0xdfdb('0x6e')],squel[_0xdfdb('0x7a')]()[_0xdfdb('0x6f')](_0xdfdb('0x70'),_0xdfdb('0x68'))[_0xdfdb('0x6f')](_0xdfdb('0x71'),_0xdfdb('0x69'))['field']('ANY_VALUE(ContactId)',_0xdfdb('0x6a'))['field']('ANY_VALUE(ListId)','ListId')['field'](_0xdfdb('0x81'),_0xdfdb('0x80'))[_0xdfdb('0x6f')](_0xdfdb('0x71'),_0xdfdb('0x6d'))[_0xdfdb('0x6f')](_0xdfdb('0x71'),_0xdfdb('0x6e'))[_0xdfdb('0x74')](_0xdfdb('0x75'))[_0xdfdb('0x3d')](_0xdfdb('0x82'),_0x1b6445[_0xdfdb('0x60')]['id']['toString']())['where'](_0xdfdb('0x77'),_0x1b6445[_0xdfdb('0x4b')][_0xdfdb('0x83')][_0xdfdb('0x76')]())[_0xdfdb('0x3d')](_0xdfdb('0x78'))[_0xdfdb('0x3d')](_0xdfdb('0x79'),squel[_0xdfdb('0x7a')]()['field'](_0xdfdb('0x68'))[_0xdfdb('0x74')](_0xdfdb('0x66'))[_0xdfdb('0x3d')](_0xdfdb('0x82'),_0x1b6445[_0xdfdb('0x60')]['id']['toString']()))[_0xdfdb('0x3d')](_0xdfdb('0x79'),squel[_0xdfdb('0x7a')]()[_0xdfdb('0x6f')](_0xdfdb('0x7b'))[_0xdfdb('0x74')]('cm_hopper_final')[_0xdfdb('0x3d')](_0xdfdb('0x82'),_0x1b6445[_0xdfdb('0x60')]['id']['toString']())['where'](_0xdfdb('0x7d')))['group']('ContactId'))[_0xdfdb('0x76')]();return db[_0xdfdb('0x4e')]['query'](_0x158454);}return[];})['then'](respondWithResult(_0x36241c,null))[_0xdfdb('0x49')](handleError(_0x36241c,null));};exports[_0xdfdb('0x84')]=function(_0x1f87d3,_0x1bc293,_0x36b01e){return db['CmHopper']['findOne']({'where':{'VoiceQueueId':_0x1f87d3[_0xdfdb('0x4b')]['VoiceQueueId'],'CampaignId':_0x1f87d3[_0xdfdb('0x4b')][_0xdfdb('0x80')],'ContactId':_0x1f87d3[_0xdfdb('0x4b')]['ContactId']}})[_0xdfdb('0x26')](handleEntityNotFound(_0x1bc293,null))[_0xdfdb('0x26')](function(_0x3e0208){if(_0x3e0208){return _0x3e0208;}return null;})[_0xdfdb('0x26')](respondWithResult(_0x1bc293,null))['catch'](handleError(_0x1bc293,null));};
\ No newline at end of file
+var _0x4137=['squel','crypto','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','status','json','offset','limit','count','set','apply','reject','save','update','destroy','then','end','sendStatus','error','name','send','index','map','CmHopperFinal','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','order','sort','where','pick','filter','merge','VIRTUAL','include','findAll','show','params','includeAll','options','find','catch','uniqueid','body','countContactsQueueCampaignHopperFinal','sequelize','COUNT','`state`\x20=\x200,\x201,\x20null','noAnswerContacts','`state`\x20=\x205,\x201,\x20null','busyContacts','`state`\x20=\x208,\x201,\x20null','congestionContacts','`state`\x20=\x2010\x20,\x201,\x20null','literal','`state`\x20=\x2011\x20,\x201,\x20null','`state`\x20=\x2022,\x201,\x20null','reCallContacts','`state`\x20=\x2019,\x201,\x20null','answeringMachine','countContactsIvrCampaignHopperFinal','`state`\x20=\x203,\x201,\x20null','abandonedContacts','moveContactsQueueCampaignHopperFinal','VoiceQueue','insert','into','phone','scheduledAt','ContactId','VoiceQueueId','createdAt','updatedAt','select','field','ANY_VALUE(calleridnum)','NOW()','ANY_VALUE(ContactId)','ANY_VALUE(ListId)','ListId','ANY_VALUE(VoiceQueueId)','from','cm_hopper_final','VoiceQueueId\x20=\x20?','state\x20=\x20?','state','toString','calleridnum\x20IS\x20NOT\x20NULL','calleridnum\x20NOT\x20IN\x20(?)','calleridnum','moveContactsIvrCampaignHopperFinal','Campaign','cm_hopper','fromQuery','CampaignId','ANY_VALUE(CampaignId)','CampaignId\x20=\x20?','state\x20=\x204','group','checkContactHopper','CmHopper','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x4137,0xf8));var _0x7413=function(_0x27af45,_0x1b57aa){_0x27af45=_0x27af45-0x0;var _0x18df21=_0x4137[_0x27af45];return _0x18df21;};'use strict';var emlformat=require(_0x7413('0x0'));var rimraf=require(_0x7413('0x1'));var zipdir=require(_0x7413('0x2'));var jsonpatch=require(_0x7413('0x3'));var rp=require(_0x7413('0x4'));var moment=require(_0x7413('0x5'));var BPromise=require(_0x7413('0x6'));var Mustache=require(_0x7413('0x7'));var util=require(_0x7413('0x8'));var path=require(_0x7413('0x9'));var sox=require(_0x7413('0xa'));var csv=require(_0x7413('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7413('0xc'));var _=require(_0x7413('0xd'));var squel=require(_0x7413('0xe'));var crypto=require(_0x7413('0xf'));var jsforce=require('jsforce');var deskjs=require(_0x7413('0x10'));var toCsv=require(_0x7413('0xb'));var querystring=require('querystring');var Papa=require(_0x7413('0x11'));var Redis=require(_0x7413('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x7413('0x13'));var as=require(_0x7413('0x14'));var hardwareService=require(_0x7413('0x15'));var logger=require(_0x7413('0x16'))(_0x7413('0x17'));var utils=require('../../config/utils');var config=require(_0x7413('0x18'));var licenseUtil=require(_0x7413('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x18a874,_0xa26ca4){_0xa26ca4=_0xa26ca4||0xcc;return function(_0x13e6bd){if(_0x13e6bd){return _0x18a874['sendStatus'](_0xa26ca4);}return _0x18a874['status'](_0xa26ca4)['end']();};}function respondWithResult(_0x2267f6,_0x336c4c){_0x336c4c=_0x336c4c||0xc8;return function(_0x49f0f6){if(_0x49f0f6){return _0x2267f6[_0x7413('0x1a')](_0x336c4c)[_0x7413('0x1b')](_0x49f0f6);}};}function respondWithFilteredResult(_0x4955d3,_0x38b3d1){return function(_0x50f301){if(_0x50f301){var _0x4b9a5b=typeof _0x38b3d1[_0x7413('0x1c')]==='undefined'&&typeof _0x38b3d1[_0x7413('0x1d')]==='undefined';var _0x2036b6=_0x50f301[_0x7413('0x1e')];var _0x19157f=_0x4b9a5b?0x0:_0x38b3d1[_0x7413('0x1c')];var _0x2a3417=_0x4b9a5b?_0x50f301[_0x7413('0x1e')]:_0x38b3d1['offset']+_0x38b3d1[_0x7413('0x1d')];var _0x17c062;if(_0x2a3417>=_0x2036b6){_0x2a3417=_0x2036b6;_0x17c062=0xc8;}else{_0x17c062=0xce;}_0x4955d3[_0x7413('0x1a')](_0x17c062);return _0x4955d3[_0x7413('0x1f')]('Content-Range',_0x19157f+'-'+_0x2a3417+'/'+_0x2036b6)[_0x7413('0x1b')](_0x50f301);}return null;};}function patchUpdates(_0x12d94d){return function(_0x206afc){try{jsonpatch[_0x7413('0x20')](_0x206afc,_0x12d94d,!![]);}catch(_0x409392){return BPromise[_0x7413('0x21')](_0x409392);}return _0x206afc[_0x7413('0x22')]();};}function saveUpdates(_0x4e18cb,_0x56a06a){return function(_0x5f12a2){if(_0x5f12a2){return _0x5f12a2[_0x7413('0x23')](_0x4e18cb)['then'](function(_0x1585ba){return _0x1585ba;});}return null;};}function removeEntity(_0x372944,_0x3b0c81){return function(_0x2fc0f4){if(_0x2fc0f4){return _0x2fc0f4[_0x7413('0x24')]()[_0x7413('0x25')](function(){_0x372944[_0x7413('0x1a')](0xcc)[_0x7413('0x26')]();});}};}function handleEntityNotFound(_0x1d455b,_0x5a8329){return function(_0x5cb15f){if(!_0x5cb15f){_0x1d455b[_0x7413('0x27')](0x194);}return _0x5cb15f;};}function handleError(_0x48c2dc,_0x46c895){_0x46c895=_0x46c895||0x1f4;return function(_0x71cbb4){logger[_0x7413('0x28')](_0x71cbb4['stack']);if(_0x71cbb4[_0x7413('0x29')]){delete _0x71cbb4[_0x7413('0x29')];}_0x48c2dc[_0x7413('0x1a')](_0x46c895)[_0x7413('0x2a')](_0x71cbb4);};}exports[_0x7413('0x2b')]=function(_0x2e521f,_0x5eb4d9){var _0x24dce7={},_0x4ed662={},_0x1d0bde={'count':0x0,'rows':[]};var _0x23e682=_[_0x7413('0x2c')](db[_0x7413('0x2d')][_0x7413('0x2e')],function(_0x2004ea){return{'name':_0x2004ea['fieldName'],'type':_0x2004ea[_0x7413('0x2f')][_0x7413('0x30')]};});_0x4ed662[_0x7413('0x31')]=_[_0x7413('0x2c')](_0x23e682,_0x7413('0x29'));_0x4ed662[_0x7413('0x32')]=_[_0x7413('0x33')](_0x2e521f['query']);_0x4ed662[_0x7413('0x34')]=_[_0x7413('0x35')](_0x4ed662[_0x7413('0x31')],_0x4ed662[_0x7413('0x32')]);_0x24dce7[_0x7413('0x36')]=_['intersection'](_0x4ed662[_0x7413('0x31')],qs['fields'](_0x2e521f[_0x7413('0x32')][_0x7413('0x37')]));_0x24dce7[_0x7413('0x36')]=_0x24dce7['attributes'][_0x7413('0x38')]?_0x24dce7['attributes']:_0x4ed662[_0x7413('0x31')];if(!_0x2e521f[_0x7413('0x32')]['hasOwnProperty']('nolimit')){_0x24dce7[_0x7413('0x1d')]=qs[_0x7413('0x1d')](_0x2e521f[_0x7413('0x32')]['limit']);_0x24dce7['offset']=qs[_0x7413('0x1c')](_0x2e521f['query']['offset']);}_0x24dce7[_0x7413('0x39')]=qs['sort'](_0x2e521f[_0x7413('0x32')][_0x7413('0x3a')]);_0x24dce7[_0x7413('0x3b')]=qs[_0x7413('0x34')](_[_0x7413('0x3c')](_0x2e521f['query'],_0x4ed662[_0x7413('0x34')]),_0x23e682);if(_0x2e521f[_0x7413('0x32')][_0x7413('0x3d')]){_0x24dce7[_0x7413('0x3b')]=_[_0x7413('0x3e')](_0x24dce7[_0x7413('0x3b')],{'$or':_[_0x7413('0x2c')](_0x23e682,function(_0x385156){if(_0x385156[_0x7413('0x2f')]!==_0x7413('0x3f')){var _0x5c03eb={};_0x5c03eb[_0x385156[_0x7413('0x29')]]={'$like':'%'+_0x2e521f['query'][_0x7413('0x3d')]+'%'};return _0x5c03eb;}})});}_0x24dce7=_['merge']({},_0x24dce7,_0x2e521f['options']);var _0x5b592c={'where':_0x24dce7['where']};return db['CmHopperFinal'][_0x7413('0x1e')](_0x5b592c)['then'](function(_0x535e49){_0x1d0bde[_0x7413('0x1e')]=_0x535e49;if(_0x2e521f['query']['includeAll']){_0x24dce7[_0x7413('0x40')]=[{'all':!![]}];}return db[_0x7413('0x2d')][_0x7413('0x41')](_0x24dce7);})[_0x7413('0x25')](function(_0x8049c0){_0x1d0bde['rows']=_0x8049c0;return _0x1d0bde;})[_0x7413('0x25')](respondWithFilteredResult(_0x5eb4d9,_0x24dce7))['catch'](handleError(_0x5eb4d9,null));};exports[_0x7413('0x42')]=function(_0x1d8219,_0xa063d1){var _0xfe0daa={'raw':!![],'where':{'id':_0x1d8219[_0x7413('0x43')]['id']}},_0x3f7da2={};_0x3f7da2[_0x7413('0x31')]=_[_0x7413('0x33')](db[_0x7413('0x2d')][_0x7413('0x2e')]);_0x3f7da2[_0x7413('0x32')]=_[_0x7413('0x33')](_0x1d8219[_0x7413('0x32')]);_0x3f7da2['filters']=_[_0x7413('0x35')](_0x3f7da2[_0x7413('0x31')],_0x3f7da2[_0x7413('0x32')]);_0xfe0daa[_0x7413('0x36')]=_[_0x7413('0x35')](_0x3f7da2[_0x7413('0x31')],qs[_0x7413('0x37')](_0x1d8219[_0x7413('0x32')][_0x7413('0x37')]));_0xfe0daa[_0x7413('0x36')]=_0xfe0daa[_0x7413('0x36')]['length']?_0xfe0daa[_0x7413('0x36')]:_0x3f7da2['model'];if(_0x1d8219[_0x7413('0x32')][_0x7413('0x44')]){_0xfe0daa[_0x7413('0x40')]=[{'all':!![]}];}_0xfe0daa=_[_0x7413('0x3e')]({},_0xfe0daa,_0x1d8219[_0x7413('0x45')]);return db[_0x7413('0x2d')][_0x7413('0x46')](_0xfe0daa)[_0x7413('0x25')](handleEntityNotFound(_0xa063d1,null))[_0x7413('0x25')](respondWithResult(_0xa063d1,null))[_0x7413('0x47')](handleError(_0xa063d1,null));};exports['describe']=function(_0x513657,_0x3c1f1a){return db['CmHopperFinal']['describe']()[_0x7413('0x25')](respondWithResult(_0x3c1f1a,null))[_0x7413('0x47')](handleError(_0x3c1f1a,null));};exports['update']=function(_0x2aa12c,_0x586d25){if(_0x2aa12c['body'][_0x7413('0x48')]){delete _0x2aa12c['body'][_0x7413('0x48')];}return db[_0x7413('0x2d')][_0x7413('0x46')]({'where':{'uniqueid':_0x2aa12c[_0x7413('0x43')]['id']}})[_0x7413('0x25')](handleEntityNotFound(_0x586d25,null))[_0x7413('0x25')](saveUpdates(_0x2aa12c[_0x7413('0x49')],null))[_0x7413('0x25')](respondWithResult(_0x586d25,null))[_0x7413('0x47')](handleError(_0x586d25,null));};exports[_0x7413('0x4a')]=function(_0x50a27d,_0x369891,_0x501407){return db['CmHopperFinal']['findAll']({'raw':![],'where':{'VoiceQueueId':_0x50a27d[_0x7413('0x43')]['id']},'attributes':[[db[_0x7413('0x4b')]['fn'](_0x7413('0x4c'),db[_0x7413('0x4b')]['fn']('IF',db['sequelize']['literal'](_0x7413('0x4d')))),'noSuchContacts'],[db[_0x7413('0x4b')]['fn']('COUNT',db['sequelize']['fn']('IF',db['sequelize']['literal']('`state`\x20=\x203,\x201,\x20null'))),_0x7413('0x4e')],[db[_0x7413('0x4b')]['fn'](_0x7413('0x4c'),db[_0x7413('0x4b')]['fn']('IF',db[_0x7413('0x4b')]['literal'](_0x7413('0x4f')))),_0x7413('0x50')],[db[_0x7413('0x4b')]['fn']('COUNT',db[_0x7413('0x4b')]['fn']('IF',db['sequelize']['literal'](_0x7413('0x51')))),_0x7413('0x52')],[db[_0x7413('0x4b')]['fn'](_0x7413('0x4c'),db[_0x7413('0x4b')]['fn']('IF',db[_0x7413('0x4b')]['literal'](_0x7413('0x53')))),'dropContacts'],[db[_0x7413('0x4b')]['fn']('COUNT',db[_0x7413('0x4b')]['fn']('IF',db['sequelize'][_0x7413('0x54')](_0x7413('0x55')))),'abandonedContacts'],[db[_0x7413('0x4b')]['fn']('COUNT',db[_0x7413('0x4b')]['fn']('IF',db[_0x7413('0x4b')]['literal'](_0x7413('0x56')))),_0x7413('0x57')],[db['sequelize']['fn'](_0x7413('0x4c'),db[_0x7413('0x4b')]['fn']('IF',db['sequelize'][_0x7413('0x54')](_0x7413('0x58')))),_0x7413('0x59')]]})[_0x7413('0x25')](handleEntityNotFound(_0x369891,null))[_0x7413('0x25')](respondWithResult(_0x369891,null))[_0x7413('0x47')](handleError(_0x369891,null));};exports[_0x7413('0x5a')]=function(_0x28130e,_0x593571,_0x35f7e8){return db['CmHopperFinal'][_0x7413('0x41')]({'raw':![],'where':{'CampaignId':_0x28130e[_0x7413('0x43')]['id']},'attributes':[[db[_0x7413('0x4b')]['fn'](_0x7413('0x4c'),db['sequelize']['fn']('IF',db['sequelize']['literal']('`state`\x20=\x200,\x201,\x20null'))),'noSuchContacts'],[db[_0x7413('0x4b')]['fn'](_0x7413('0x4c'),db[_0x7413('0x4b')]['fn']('IF',db['sequelize'][_0x7413('0x54')](_0x7413('0x5b')))),_0x7413('0x4e')],[db[_0x7413('0x4b')]['fn'](_0x7413('0x4c'),db[_0x7413('0x4b')]['fn']('IF',db[_0x7413('0x4b')][_0x7413('0x54')](_0x7413('0x4f')))),_0x7413('0x50')],[db[_0x7413('0x4b')]['fn'](_0x7413('0x4c'),db[_0x7413('0x4b')]['fn']('IF',db['sequelize'][_0x7413('0x54')](_0x7413('0x51')))),'congestionContacts'],[db[_0x7413('0x4b')]['fn'](_0x7413('0x4c'),db[_0x7413('0x4b')]['fn']('IF',db[_0x7413('0x4b')][_0x7413('0x54')](_0x7413('0x53')))),'dropContacts'],[db[_0x7413('0x4b')]['fn'](_0x7413('0x4c'),db['sequelize']['fn']('IF',db[_0x7413('0x4b')]['literal']('`state`\x20=\x2011\x20,\x201,\x20null'))),_0x7413('0x5c')],[db[_0x7413('0x4b')]['fn'](_0x7413('0x4c'),db[_0x7413('0x4b')]['fn']('IF',db[_0x7413('0x4b')][_0x7413('0x54')](_0x7413('0x56')))),_0x7413('0x57')],[db['sequelize']['fn'](_0x7413('0x4c'),db['sequelize']['fn']('IF',db[_0x7413('0x4b')][_0x7413('0x54')](_0x7413('0x58')))),_0x7413('0x59')]]})[_0x7413('0x25')](handleEntityNotFound(_0x593571,null))[_0x7413('0x25')](respondWithResult(_0x593571,null))[_0x7413('0x47')](handleError(_0x593571,null));};exports[_0x7413('0x5d')]=function(_0x2c504e,_0x50910a,_0x5988bd){return db[_0x7413('0x5e')]['find']({'where':{'id':_0x2c504e[_0x7413('0x43')]['id']}})[_0x7413('0x25')](handleEntityNotFound(_0x50910a,null))['then'](function(_0x2be9b1){var _0x4b676a;if(_0x2be9b1){_0x4b676a=squel[_0x7413('0x5f')]()[_0x7413('0x60')]('cm_hopper')['fromQuery']([_0x7413('0x61'),_0x7413('0x62'),_0x7413('0x63'),'ListId',_0x7413('0x64'),_0x7413('0x65'),_0x7413('0x66')],squel[_0x7413('0x67')]()[_0x7413('0x68')](_0x7413('0x69'),'phone')[_0x7413('0x68')](_0x7413('0x6a'),_0x7413('0x62'))['field'](_0x7413('0x6b'),_0x7413('0x63'))[_0x7413('0x68')](_0x7413('0x6c'),_0x7413('0x6d'))[_0x7413('0x68')](_0x7413('0x6e'),_0x7413('0x64'))[_0x7413('0x68')]('NOW()',_0x7413('0x65'))[_0x7413('0x68')](_0x7413('0x6a'),_0x7413('0x66'))[_0x7413('0x6f')](_0x7413('0x70'))['where'](_0x7413('0x71'),_0x2c504e['params']['id']['toString']())[_0x7413('0x3b')](_0x7413('0x72'),_0x2c504e['body'][_0x7413('0x73')][_0x7413('0x74')]())[_0x7413('0x3b')](_0x7413('0x75'))[_0x7413('0x3b')](_0x7413('0x76'),squel[_0x7413('0x67')]()[_0x7413('0x68')]('phone')[_0x7413('0x6f')]('cm_hopper')[_0x7413('0x3b')](_0x7413('0x71'),_0x2c504e['params']['id'][_0x7413('0x74')]()))[_0x7413('0x3b')](_0x7413('0x76'),squel[_0x7413('0x67')]()[_0x7413('0x68')](_0x7413('0x77'))[_0x7413('0x6f')](_0x7413('0x70'))[_0x7413('0x3b')](_0x7413('0x71'),_0x2c504e['params']['id'][_0x7413('0x74')]())[_0x7413('0x3b')]('state\x20=\x204'))['group']('ContactId'))[_0x7413('0x74')]();return db['sequelize'][_0x7413('0x32')](_0x4b676a);}return[];})[_0x7413('0x25')](respondWithResult(_0x50910a,null))[_0x7413('0x47')](handleError(_0x50910a,null));};exports[_0x7413('0x78')]=function(_0x470c21,_0x17c115,_0xbba3c7){return db[_0x7413('0x79')][_0x7413('0x46')]({'where':{'id':_0x470c21['params']['id']}})[_0x7413('0x25')](handleEntityNotFound(_0x17c115,null))[_0x7413('0x25')](function(_0x38bb4e){var _0x4ea60e;if(_0x38bb4e){_0x4ea60e=squel[_0x7413('0x5f')]()[_0x7413('0x60')](_0x7413('0x7a'))[_0x7413('0x7b')]([_0x7413('0x61'),_0x7413('0x62'),_0x7413('0x63'),_0x7413('0x6d'),_0x7413('0x7c'),_0x7413('0x65'),'updatedAt'],squel[_0x7413('0x67')]()[_0x7413('0x68')]('ANY_VALUE(calleridnum)',_0x7413('0x61'))[_0x7413('0x68')]('NOW()',_0x7413('0x62'))[_0x7413('0x68')](_0x7413('0x6b'),'ContactId')[_0x7413('0x68')]('ANY_VALUE(ListId)',_0x7413('0x6d'))[_0x7413('0x68')](_0x7413('0x7d'),_0x7413('0x7c'))[_0x7413('0x68')](_0x7413('0x6a'),'createdAt')[_0x7413('0x68')](_0x7413('0x6a'),_0x7413('0x66'))[_0x7413('0x6f')](_0x7413('0x70'))['where'](_0x7413('0x7e'),_0x470c21[_0x7413('0x43')]['id'][_0x7413('0x74')]())[_0x7413('0x3b')](_0x7413('0x72'),_0x470c21['body']['state'][_0x7413('0x74')]())[_0x7413('0x3b')](_0x7413('0x75'))[_0x7413('0x3b')]('calleridnum\x20NOT\x20IN\x20(?)',squel['select']()[_0x7413('0x68')](_0x7413('0x61'))[_0x7413('0x6f')]('cm_hopper')['where'](_0x7413('0x7e'),_0x470c21[_0x7413('0x43')]['id'][_0x7413('0x74')]()))[_0x7413('0x3b')](_0x7413('0x76'),squel[_0x7413('0x67')]()[_0x7413('0x68')]('calleridnum')['from'](_0x7413('0x70'))[_0x7413('0x3b')]('CampaignId\x20=\x20?',_0x470c21[_0x7413('0x43')]['id'][_0x7413('0x74')]())[_0x7413('0x3b')](_0x7413('0x7f')))[_0x7413('0x80')](_0x7413('0x63')))[_0x7413('0x74')]();return db[_0x7413('0x4b')][_0x7413('0x32')](_0x4ea60e);}return[];})['then'](respondWithResult(_0x17c115,null))[_0x7413('0x47')](handleError(_0x17c115,null));};exports[_0x7413('0x81')]=function(_0x59d665,_0x1f3e26,_0xccd480){return db[_0x7413('0x82')]['findOne']({'where':{'VoiceQueueId':_0x59d665['body']['VoiceQueueId'],'CampaignId':_0x59d665[_0x7413('0x49')][_0x7413('0x7c')],'ContactId':_0x59d665[_0x7413('0x49')][_0x7413('0x63')]}})[_0x7413('0x25')](handleEntityNotFound(_0x1f3e26,null))[_0x7413('0x25')](function(_0x207293){if(_0x207293){return _0x207293;}return null;})[_0x7413('0x25')](respondWithResult(_0x1f3e26,null))['catch'](handleError(_0x1f3e26,null));};
\ No newline at end of file
index adb2fa2..cc2b8a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x689f=['./cmHopperFinal.attributes','exports','define','cm_hopper_final','calleridnum','uniqueid','lodash','../../config/logger','api','../../config/environment'];(function(_0x3d01ec,_0x484744){var _0x134254=function(_0x33ee3e){while(--_0x33ee3e){_0x3d01ec['push'](_0x3d01ec['shift']());}};_0x134254(++_0x484744);}(_0x689f,0x1e6));var _0xf689=function(_0x505173,_0x26561a){_0x505173=_0x505173-0x0;var _0x28aaa6=_0x689f[_0x505173];return _0x28aaa6;};'use strict';var _=require(_0xf689('0x0'));var util=require('util');var logger=require(_0xf689('0x1'))(_0xf689('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xf689('0x3'));var attributes=require(_0xf689('0x4'));module[_0xf689('0x5')]=function(_0xe40cf5,_0x2e987f){return _0xe40cf5[_0xf689('0x6')]('CmHopperFinal',attributes,{'tableName':_0xf689('0x7'),'paranoid':![],'indexes':[{'name':_0xf689('0x8'),'fields':[_0xf689('0x8')]},{'name':_0xf689('0x9'),'fields':[_0xf689('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xa024=['calleridnum','uniqueid','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./cmHopperFinal.attributes','exports','CmHopperFinal','cm_hopper_final'];(function(_0x5c0f66,_0x4329e2){var _0x233765=function(_0x36f7a0){while(--_0x36f7a0){_0x5c0f66['push'](_0x5c0f66['shift']());}};_0x233765(++_0x4329e2);}(_0xa024,0x1e3));var _0x4a02=function(_0x14818c,_0x34a40f){_0x14818c=_0x14818c-0x0;var _0x1d3abe=_0xa024[_0x14818c];return _0x1d3abe;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x4a02('0x0'))(_0x4a02('0x1'));var moment=require('moment');var BPromise=require(_0x4a02('0x2'));var rp=require(_0x4a02('0x3'));var fs=require('fs');var path=require(_0x4a02('0x4'));var rimraf=require(_0x4a02('0x5'));var config=require(_0x4a02('0x6'));var attributes=require(_0x4a02('0x7'));module[_0x4a02('0x8')]=function(_0x40cbf4,_0xed3ceb){return _0x40cbf4['define'](_0x4a02('0x9'),attributes,{'tableName':_0x4a02('0xa'),'paranoid':![],'indexes':[{'name':_0x4a02('0xb'),'fields':[_0x4a02('0xb')]},{'name':_0x4a02('0xc'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index cb649c7..afe6c8d 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(_0x364274,_0x19fce3){var _0xe7e89a=function(_0x32830f){while(--_0x32830f){_0x364274['push'](_0x364274['shift']());}};_0xe7e89a(++_0x19fce3);}(_0xb10b,0x12a));var _0xbb10=function(_0x4ec65f,_0x871c26){_0x4ec65f=_0x4ec65f-0x0;var _0x5d1143=_0xb10b[_0x4ec65f];return _0x5d1143;};'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(_0x18062a,_0x457b5c){var _0x4f5cc0=function(_0x23c0f1){while(--_0x23c0f1){_0x18062a['push'](_0x18062a['shift']());}};_0x4f5cc0(++_0x457b5c);}(_0x7a54,0x106));var _0x47a5=function(_0x4d3832,_0x2b9c95){_0x4d3832=_0x4d3832-0x0;var _0x1b14b6=_0x7a54[_0x4d3832];return _0x1b14b6;};'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 a3962ee..46b141b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8be9=['moveContactsIvrCampaignHopperFinal','/checkContactHopper','checkContactHopper','put','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','countContactsIvrCampaignHopperFinal','/voice/queue/moveContacts/:id','moveContactsQueueCampaignHopperFinal','post'];(function(_0x145b3c,_0x31ea4a){var _0x1b6e36=function(_0xfccee6){while(--_0xfccee6){_0x145b3c['push'](_0x145b3c['shift']());}};_0x1b6e36(++_0x31ea4a);}(_0x8be9,0x8f));var _0x98be=function(_0x40a0db,_0x9ff6f2){_0x40a0db=_0x40a0db-0x0;var _0x37c453=_0x8be9[_0x40a0db];return _0x37c453;};'use strict';var multer=require(_0x98be('0x0'));var util=require('util');var path=require(_0x98be('0x1'));var timeout=require(_0x98be('0x2'));var express=require(_0x98be('0x3'));var router=express[_0x98be('0x4')]();var fs_extra=require(_0x98be('0x5'));var auth=require(_0x98be('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x98be('0x7'));var controller=require('./cmHopperFinal.controller');router[_0x98be('0x8')]('/',auth[_0x98be('0x9')](),controller[_0x98be('0xa')]);router['get'](_0x98be('0xb'),auth[_0x98be('0x9')](),controller[_0x98be('0xc')]);router[_0x98be('0x8')](_0x98be('0xd'),auth[_0x98be('0x9')](),controller['show']);router[_0x98be('0x8')]('/voice/queue/countAttributes/:id',auth[_0x98be('0x9')](),controller['countContactsQueueCampaignHopperFinal']);router[_0x98be('0x8')]('/campaign/countAttributes/:id',auth[_0x98be('0x9')](),controller[_0x98be('0xe')]);router['post'](_0x98be('0xf'),auth[_0x98be('0x9')](),controller[_0x98be('0x10')]);router[_0x98be('0x11')]('/voice/campaign/moveContacts/:id',auth[_0x98be('0x9')](),controller[_0x98be('0x12')]);router[_0x98be('0x11')](_0x98be('0x13'),auth['isAuthenticated'](),controller[_0x98be('0x14')]);router[_0x98be('0x15')](_0x98be('0xd'),auth[_0x98be('0x9')](),controller['update']);module[_0x98be('0x16')]=router;
\ No newline at end of file
+var _0x9feb=['countContactsQueueCampaignHopperFinal','/campaign/countAttributes/:id','countContactsIvrCampaignHopperFinal','post','/voice/queue/moveContacts/:id','moveContactsQueueCampaignHopperFinal','/voice/campaign/moveContacts/:id','moveContactsIvrCampaignHopperFinal','checkContactHopper','put','multer','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','/:id','show','/voice/queue/countAttributes/:id'];(function(_0x481afd,_0x22f792){var _0x6c053=function(_0x1e9c53){while(--_0x1e9c53){_0x481afd['push'](_0x481afd['shift']());}};_0x6c053(++_0x22f792);}(_0x9feb,0x6e));var _0xb9fe=function(_0x45b7d2,_0x4709d9){_0x45b7d2=_0x45b7d2-0x0;var _0x4e7ab2=_0x9feb[_0x45b7d2];return _0x4e7ab2;};'use strict';var multer=require(_0xb9fe('0x0'));var util=require(_0xb9fe('0x1'));var path=require('path');var timeout=require(_0xb9fe('0x2'));var express=require(_0xb9fe('0x3'));var router=express[_0xb9fe('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xb9fe('0x5'));var interaction=require(_0xb9fe('0x6'));var config=require(_0xb9fe('0x7'));var controller=require('./cmHopperFinal.controller');router[_0xb9fe('0x8')]('/',auth[_0xb9fe('0x9')](),controller[_0xb9fe('0xa')]);router[_0xb9fe('0x8')](_0xb9fe('0xb'),auth[_0xb9fe('0x9')](),controller['describe']);router[_0xb9fe('0x8')](_0xb9fe('0xc'),auth['isAuthenticated'](),controller[_0xb9fe('0xd')]);router[_0xb9fe('0x8')](_0xb9fe('0xe'),auth[_0xb9fe('0x9')](),controller[_0xb9fe('0xf')]);router[_0xb9fe('0x8')](_0xb9fe('0x10'),auth[_0xb9fe('0x9')](),controller[_0xb9fe('0x11')]);router[_0xb9fe('0x12')](_0xb9fe('0x13'),auth[_0xb9fe('0x9')](),controller[_0xb9fe('0x14')]);router[_0xb9fe('0x12')](_0xb9fe('0x15'),auth[_0xb9fe('0x9')](),controller[_0xb9fe('0x16')]);router[_0xb9fe('0x12')]('/checkContactHopper',auth[_0xb9fe('0x9')](),controller[_0xb9fe('0x17')]);router[_0xb9fe('0x18')](_0xb9fe('0xc'),auth[_0xb9fe('0x9')](),controller['update']);module['exports']=router;
\ No newline at end of file
index 450a9a5..40611ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf30=['exports','STRING','DATE','INTEGER','BOOLEAN','sequelize'];(function(_0x7fab38,_0x501063){var _0xb5c718=function(_0x471181){while(--_0x471181){_0x7fab38['push'](_0x7fab38['shift']());}};_0xb5c718(++_0x501063);}(_0xcf30,0xcb));var _0x0cf3=function(_0x158d27,_0x3ca007){_0x158d27=_0x158d27-0x0;var _0x473f15=_0xcf30[_0x158d27];return _0x473f15;};'use strict';var Sequelize=require(_0x0cf3('0x0'));module[_0x0cf3('0x1')]={'state':{'type':Sequelize['INTEGER'](0x2)},'statedesc':{'type':Sequelize[_0x0cf3('0x2')]},'scheduledat':{'type':Sequelize[_0x0cf3('0x3')]},'countbusyretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x0cf3('0x4')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x0cf3('0x4')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x0cf3('0x4')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0x0cf3('0x2')]},'originatecalleridnum':{'type':Sequelize['STRING']},'originatecalleridname':{'type':Sequelize[_0x0cf3('0x2')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x0cf3('0x2')]},'starttime':{'type':Sequelize['DATE']},'responsetime':{'type':Sequelize[_0x0cf3('0x3')]},'answertime':{'type':Sequelize[_0x0cf3('0x3')]},'droptime':{'type':Sequelize[_0x0cf3('0x3')]},'endtime':{'type':Sequelize['DATE']},'ringtime':{'type':Sequelize[_0x0cf3('0x4')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0x0cf3('0x4')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x0cf3('0x4')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0x0cf3('0x4')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0x0cf3('0x2')]},'campaign':{'type':Sequelize[_0x0cf3('0x2')]},'campaigntype':{'type':Sequelize['STRING']},'membername':{'type':Sequelize[_0x0cf3('0x2')]},'reason':{'type':Sequelize['STRING']},'amd':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'fax':{'type':Sequelize[_0x0cf3('0x5')],'defaultValue':![]},'callback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x0cf3('0x2')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x0cf3('0x3')]},'recallme':{'type':Sequelize[_0x0cf3('0x5')],'defaultValue':![]},'editedat':{'type':Sequelize[_0x0cf3('0x3')]},'edited':{'type':Sequelize[_0x0cf3('0x5')],'defaultValue':![]},'countnosuchnumberretry':{'type':Sequelize[_0x0cf3('0x4')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x0cf3('0x4')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countmachineretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x0cf3('0x4')],'defaultValue':0x0},'dialTimezone':{'type':Sequelize[_0x0cf3('0x2')]}};
\ No newline at end of file
+var _0xc338=['sequelize','exports','INTEGER','DATE','STRING','BOOLEAN'];(function(_0x1d0b20,_0x15898a){var _0x563b0d=function(_0x51ccde){while(--_0x51ccde){_0x1d0b20['push'](_0x1d0b20['shift']());}};_0x563b0d(++_0x15898a);}(_0xc338,0x156));var _0x8c33=function(_0x4559b5,_0x3debb8){_0x4559b5=_0x4559b5-0x0;var _0x19a593=_0xc338[_0x4559b5];return _0x19a593;};'use strict';var Sequelize=require(_0x8c33('0x0'));module[_0x8c33('0x1')]={'state':{'type':Sequelize[_0x8c33('0x2')](0x2)},'statedesc':{'type':Sequelize['STRING']},'scheduledat':{'type':Sequelize[_0x8c33('0x3')]},'countbusyretry':{'type':Sequelize[_0x8c33('0x2')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x8c33('0x2')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x8c33('0x2')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x8c33('0x2')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0x8c33('0x4')]},'originatecalleridnum':{'type':Sequelize[_0x8c33('0x4')]},'originatecalleridname':{'type':Sequelize[_0x8c33('0x4')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x8c33('0x4')]},'starttime':{'type':Sequelize['DATE']},'responsetime':{'type':Sequelize[_0x8c33('0x3')]},'answertime':{'type':Sequelize[_0x8c33('0x3')]},'droptime':{'type':Sequelize['DATE']},'endtime':{'type':Sequelize[_0x8c33('0x3')]},'ringtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0x8c33('0x2')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x8c33('0x2')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0x8c33('0x2')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0x8c33('0x4')]},'campaign':{'type':Sequelize[_0x8c33('0x4')]},'campaigntype':{'type':Sequelize['STRING']},'membername':{'type':Sequelize['STRING']},'reason':{'type':Sequelize[_0x8c33('0x4')]},'amd':{'type':Sequelize[_0x8c33('0x5')],'defaultValue':![]},'fax':{'type':Sequelize[_0x8c33('0x5')],'defaultValue':![]},'callback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x8c33('0x4')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x8c33('0x3')]},'recallme':{'type':Sequelize[_0x8c33('0x5')],'defaultValue':![]},'editedat':{'type':Sequelize[_0x8c33('0x3')]},'edited':{'type':Sequelize[_0x8c33('0x5')],'defaultValue':![]},'countnosuchnumberretry':{'type':Sequelize[_0x8c33('0x2')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x8c33('0x2')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x8c33('0x2')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x8c33('0x2')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x8c33('0x2')],'defaultValue':0x0},'dialTimezone':{'type':Sequelize[_0x8c33('0x4')]}};
\ No newline at end of file
index ead16ad..a4a137e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x21e0=['then','destroy','error','stack','name','map','CmHopperHistory','rawAttributes','fieldName','key','model','keys','filters','intersection','query','fields','attributes','length','nolimit','order','sort','where','pick','filter','type','VIRTUAL','merge','options','includeAll','include','findAll','catch','show','params','create','body','describe','uniqueid','eml-format','rimraf','zip-dir','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','reject','save','update'];(function(_0x2ee7cc,_0x4f0ef1){var _0x3488b7=function(_0x20fb82){while(--_0x20fb82){_0x2ee7cc['push'](_0x2ee7cc['shift']());}};_0x3488b7(++_0x4f0ef1);}(_0x21e0,0xbc));var _0x021e=function(_0x21531c,_0x2adebf){_0x21531c=_0x21531c-0x0;var _0x87f052=_0x21e0[_0x21531c];return _0x87f052;};'use strict';var emlformat=require(_0x021e('0x0'));var rimraf=require(_0x021e('0x1'));var zipdir=require(_0x021e('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x021e('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x021e('0x4'));var util=require(_0x021e('0x5'));var path=require(_0x021e('0x6'));var sox=require(_0x021e('0x7'));var csv=require(_0x021e('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x021e('0x9'));var _=require(_0x021e('0xa'));var squel=require(_0x021e('0xb'));var crypto=require('crypto');var jsforce=require(_0x021e('0xc'));var deskjs=require(_0x021e('0xd'));var toCsv=require('to-csv');var querystring=require(_0x021e('0xe'));var Papa=require(_0x021e('0xf'));var Redis=require(_0x021e('0x10'));var authService=require(_0x021e('0x11'));var qs=require(_0x021e('0x12'));var as=require(_0x021e('0x13'));var hardwareService=require(_0x021e('0x14'));var logger=require('../../config/logger')('api');var utils=require(_0x021e('0x15'));var config=require(_0x021e('0x16'));var licenseUtil=require(_0x021e('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x364f6d,_0x8d1be8){_0x8d1be8=_0x8d1be8||0xcc;return function(_0x5c9645){if(_0x5c9645){return _0x364f6d[_0x021e('0x18')](_0x8d1be8);}return _0x364f6d[_0x021e('0x19')](_0x8d1be8)[_0x021e('0x1a')]();};}function respondWithResult(_0x358216,_0xde87f5){_0xde87f5=_0xde87f5||0xc8;return function(_0x11ab87){if(_0x11ab87){return _0x358216[_0x021e('0x19')](_0xde87f5)['json'](_0x11ab87);}};}function respondWithFilteredResult(_0x9e487d,_0x37318a){return function(_0x4b3b37){if(_0x4b3b37){var _0x289428=typeof _0x37318a[_0x021e('0x1b')]===_0x021e('0x1c')&&typeof _0x37318a[_0x021e('0x1d')]==='undefined';var _0x162a7e=_0x4b3b37[_0x021e('0x1e')];var _0x30ce4e=_0x289428?0x0:_0x37318a[_0x021e('0x1b')];var _0x19e193=_0x289428?_0x4b3b37[_0x021e('0x1e')]:_0x37318a['offset']+_0x37318a['limit'];var _0x280096;if(_0x19e193>=_0x162a7e){_0x19e193=_0x162a7e;_0x280096=0xc8;}else{_0x280096=0xce;}_0x9e487d[_0x021e('0x19')](_0x280096);return _0x9e487d[_0x021e('0x1f')](_0x021e('0x20'),_0x30ce4e+'-'+_0x19e193+'/'+_0x162a7e)[_0x021e('0x21')](_0x4b3b37);}return null;};}function patchUpdates(_0x5237d4){return function(_0x35298b){try{jsonpatch['apply'](_0x35298b,_0x5237d4,!![]);}catch(_0x201833){return BPromise[_0x021e('0x22')](_0x201833);}return _0x35298b[_0x021e('0x23')]();};}function saveUpdates(_0x58ae6d,_0x55a287){return function(_0xb468bf){if(_0xb468bf){return _0xb468bf[_0x021e('0x24')](_0x58ae6d)[_0x021e('0x25')](function(_0x17edf8){return _0x17edf8;});}return null;};}function removeEntity(_0x41ccf5,_0x39acf8){return function(_0x56d05e){if(_0x56d05e){return _0x56d05e[_0x021e('0x26')]()['then'](function(){_0x41ccf5[_0x021e('0x19')](0xcc)[_0x021e('0x1a')]();});}};}function handleEntityNotFound(_0x4227c9,_0x504035){return function(_0x4929ab){if(!_0x4929ab){_0x4227c9[_0x021e('0x18')](0x194);}return _0x4929ab;};}function handleError(_0x177211,_0x1e2420){_0x1e2420=_0x1e2420||0x1f4;return function(_0x19e399){logger[_0x021e('0x27')](_0x19e399[_0x021e('0x28')]);if(_0x19e399[_0x021e('0x29')]){delete _0x19e399[_0x021e('0x29')];}_0x177211[_0x021e('0x19')](_0x1e2420)['send'](_0x19e399);};}exports['index']=function(_0xfd32f4,_0x2e7a1e){var _0xb01977={},_0x2a2ef3={},_0xb3565e={'count':0x0,'rows':[]};var _0x1f74e0=_[_0x021e('0x2a')](db[_0x021e('0x2b')][_0x021e('0x2c')],function(_0x2593d0){return{'name':_0x2593d0[_0x021e('0x2d')],'type':_0x2593d0['type'][_0x021e('0x2e')]};});_0x2a2ef3[_0x021e('0x2f')]=_[_0x021e('0x2a')](_0x1f74e0,_0x021e('0x29'));_0x2a2ef3['query']=_[_0x021e('0x30')](_0xfd32f4['query']);_0x2a2ef3[_0x021e('0x31')]=_[_0x021e('0x32')](_0x2a2ef3['model'],_0x2a2ef3[_0x021e('0x33')]);_0xb01977['attributes']=_['intersection'](_0x2a2ef3[_0x021e('0x2f')],qs['fields'](_0xfd32f4[_0x021e('0x33')][_0x021e('0x34')]));_0xb01977[_0x021e('0x35')]=_0xb01977[_0x021e('0x35')][_0x021e('0x36')]?_0xb01977['attributes']:_0x2a2ef3[_0x021e('0x2f')];if(!_0xfd32f4[_0x021e('0x33')]['hasOwnProperty'](_0x021e('0x37'))){_0xb01977[_0x021e('0x1d')]=qs[_0x021e('0x1d')](_0xfd32f4['query'][_0x021e('0x1d')]);_0xb01977[_0x021e('0x1b')]=qs[_0x021e('0x1b')](_0xfd32f4[_0x021e('0x33')]['offset']);}_0xb01977[_0x021e('0x38')]=qs[_0x021e('0x39')](_0xfd32f4[_0x021e('0x33')]['sort']);_0xb01977[_0x021e('0x3a')]=qs[_0x021e('0x31')](_[_0x021e('0x3b')](_0xfd32f4['query'],_0x2a2ef3[_0x021e('0x31')]),_0x1f74e0);if(_0xfd32f4[_0x021e('0x33')][_0x021e('0x3c')]){_0xb01977[_0x021e('0x3a')]=_['merge'](_0xb01977[_0x021e('0x3a')],{'$or':_[_0x021e('0x2a')](_0x1f74e0,function(_0x343e68){if(_0x343e68[_0x021e('0x3d')]!==_0x021e('0x3e')){var _0x381ae5={};_0x381ae5[_0x343e68[_0x021e('0x29')]]={'$like':'%'+_0xfd32f4['query'][_0x021e('0x3c')]+'%'};return _0x381ae5;}})});}_0xb01977=_[_0x021e('0x3f')]({},_0xb01977,_0xfd32f4[_0x021e('0x40')]);var _0x30c885={'where':_0xb01977[_0x021e('0x3a')]};return db['CmHopperHistory'][_0x021e('0x1e')](_0x30c885)['then'](function(_0x386c1b){_0xb3565e[_0x021e('0x1e')]=_0x386c1b;if(_0xfd32f4[_0x021e('0x33')][_0x021e('0x41')]){_0xb01977[_0x021e('0x42')]=[{'all':!![]}];}return db[_0x021e('0x2b')][_0x021e('0x43')](_0xb01977);})[_0x021e('0x25')](function(_0x1a84e4){_0xb3565e['rows']=_0x1a84e4;return _0xb3565e;})[_0x021e('0x25')](respondWithFilteredResult(_0x2e7a1e,_0xb01977))[_0x021e('0x44')](handleError(_0x2e7a1e,null));};exports[_0x021e('0x45')]=function(_0xe3f481,_0x366827){var _0x2a8d05={'raw':!![],'where':{'id':_0xe3f481[_0x021e('0x46')]['id']}},_0x44e1ea={};_0x44e1ea[_0x021e('0x2f')]=_[_0x021e('0x30')](db[_0x021e('0x2b')]['rawAttributes']);_0x44e1ea[_0x021e('0x33')]=_['keys'](_0xe3f481['query']);_0x44e1ea['filters']=_[_0x021e('0x32')](_0x44e1ea['model'],_0x44e1ea[_0x021e('0x33')]);_0x2a8d05['attributes']=_[_0x021e('0x32')](_0x44e1ea[_0x021e('0x2f')],qs['fields'](_0xe3f481[_0x021e('0x33')][_0x021e('0x34')]));_0x2a8d05[_0x021e('0x35')]=_0x2a8d05[_0x021e('0x35')][_0x021e('0x36')]?_0x2a8d05['attributes']:_0x44e1ea[_0x021e('0x2f')];if(_0xe3f481[_0x021e('0x33')][_0x021e('0x41')]){_0x2a8d05[_0x021e('0x42')]=[{'all':!![]}];}_0x2a8d05=_['merge']({},_0x2a8d05,_0xe3f481[_0x021e('0x40')]);return db['CmHopperHistory']['find'](_0x2a8d05)[_0x021e('0x25')](handleEntityNotFound(_0x366827,null))[_0x021e('0x25')](respondWithResult(_0x366827,null))['catch'](handleError(_0x366827,null));};exports[_0x021e('0x47')]=function(_0x182a25,_0x14334d){return db[_0x021e('0x2b')][_0x021e('0x47')](_0x182a25[_0x021e('0x48')],{})[_0x021e('0x25')](respondWithResult(_0x14334d,0xc9))['catch'](handleError(_0x14334d,null));};exports['describe']=function(_0x4880cc,_0x1a1e89){return db[_0x021e('0x2b')][_0x021e('0x49')]()['then'](respondWithResult(_0x1a1e89,null))[_0x021e('0x44')](handleError(_0x1a1e89,null));};exports[_0x021e('0x24')]=function(_0x50a41a,_0xe47b30){if(_0x50a41a['body'][_0x021e('0x4a')]){delete _0x50a41a[_0x021e('0x48')][_0x021e('0x4a')];}return db[_0x021e('0x2b')]['find']({'where':{'uniqueid':_0x50a41a[_0x021e('0x46')]['id']}})[_0x021e('0x25')](handleEntityNotFound(_0xe47b30,null))[_0x021e('0x25')](saveUpdates(_0x50a41a[_0x021e('0x48')],null))[_0x021e('0x25')](respondWithResult(_0xe47b30,null))[_0x021e('0x44')](handleError(_0xe47b30,null));};
\ No newline at end of file
+var _0x80b8=['path','sox','ejs','lodash','squel','jsforce','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','limit','count','set','reject','update','then','destroy','end','name','send','index','type','key','model','map','query','keys','filters','intersection','attributes','fields','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','CmHopperHistory','includeAll','include','rows','catch','show','params','rawAttributes','length','find','create','body','describe','uniqueid','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util'];(function(_0x48cbd3,_0x28a0c1){var _0x1626a4=function(_0x327a9c){while(--_0x327a9c){_0x48cbd3['push'](_0x48cbd3['shift']());}};_0x1626a4(++_0x28a0c1);}(_0x80b8,0x1b9));var _0x880b=function(_0x516de6,_0x3af93b){_0x516de6=_0x516de6-0x0;var _0x38e1a1=_0x80b8[_0x516de6];return _0x38e1a1;};'use strict';var emlformat=require(_0x880b('0x0'));var rimraf=require(_0x880b('0x1'));var zipdir=require(_0x880b('0x2'));var jsonpatch=require(_0x880b('0x3'));var rp=require(_0x880b('0x4'));var moment=require(_0x880b('0x5'));var BPromise=require(_0x880b('0x6'));var Mustache=require(_0x880b('0x7'));var util=require(_0x880b('0x8'));var path=require(_0x880b('0x9'));var sox=require(_0x880b('0xa'));var csv=require('to-csv');var ejs=require(_0x880b('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x880b('0xc'));var squel=require(_0x880b('0xd'));var crypto=require('crypto');var jsforce=require(_0x880b('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x880b('0xf'));var querystring=require(_0x880b('0x10'));var Papa=require(_0x880b('0x11'));var Redis=require('ioredis');var authService=require(_0x880b('0x12'));var qs=require(_0x880b('0x13'));var as=require(_0x880b('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x880b('0x15'))(_0x880b('0x16'));var utils=require(_0x880b('0x17'));var config=require(_0x880b('0x18'));var licenseUtil=require(_0x880b('0x19'));var db=require(_0x880b('0x1a'))['db'];function respondWithStatusCode(_0x4292ec,_0x1891ab){_0x1891ab=_0x1891ab||0xcc;return function(_0x432c25){if(_0x432c25){return _0x4292ec[_0x880b('0x1b')](_0x1891ab);}return _0x4292ec['status'](_0x1891ab)['end']();};}function respondWithResult(_0x59d2f1,_0x9bbaca){_0x9bbaca=_0x9bbaca||0xc8;return function(_0x4af5df){if(_0x4af5df){return _0x59d2f1[_0x880b('0x1c')](_0x9bbaca)[_0x880b('0x1d')](_0x4af5df);}};}function respondWithFilteredResult(_0x2be8c8,_0x50d927){return function(_0x16e46e){if(_0x16e46e){var _0x3baf21=typeof _0x50d927[_0x880b('0x1e')]==='undefined'&&typeof _0x50d927[_0x880b('0x1f')]==='undefined';var _0x1028ad=_0x16e46e[_0x880b('0x20')];var _0x194795=_0x3baf21?0x0:_0x50d927[_0x880b('0x1e')];var _0xf86731=_0x3baf21?_0x16e46e['count']:_0x50d927[_0x880b('0x1e')]+_0x50d927['limit'];var _0x42860e;if(_0xf86731>=_0x1028ad){_0xf86731=_0x1028ad;_0x42860e=0xc8;}else{_0x42860e=0xce;}_0x2be8c8[_0x880b('0x1c')](_0x42860e);return _0x2be8c8[_0x880b('0x21')]('Content-Range',_0x194795+'-'+_0xf86731+'/'+_0x1028ad)[_0x880b('0x1d')](_0x16e46e);}return null;};}function patchUpdates(_0x349d3f){return function(_0x5b4799){try{jsonpatch['apply'](_0x5b4799,_0x349d3f,!![]);}catch(_0x51da3d){return BPromise[_0x880b('0x22')](_0x51da3d);}return _0x5b4799['save']();};}function saveUpdates(_0x25c074,_0x123da7){return function(_0x1267b7){if(_0x1267b7){return _0x1267b7[_0x880b('0x23')](_0x25c074)[_0x880b('0x24')](function(_0x5bbce3){return _0x5bbce3;});}return null;};}function removeEntity(_0x1303f2,_0x42f258){return function(_0x506982){if(_0x506982){return _0x506982[_0x880b('0x25')]()[_0x880b('0x24')](function(){_0x1303f2['status'](0xcc)[_0x880b('0x26')]();});}};}function handleEntityNotFound(_0x3b52ac,_0x3df24f){return function(_0x45f85d){if(!_0x45f85d){_0x3b52ac[_0x880b('0x1b')](0x194);}return _0x45f85d;};}function handleError(_0x310b84,_0x36f8dd){_0x36f8dd=_0x36f8dd||0x1f4;return function(_0x4660ae){logger['error'](_0x4660ae['stack']);if(_0x4660ae[_0x880b('0x27')]){delete _0x4660ae[_0x880b('0x27')];}_0x310b84[_0x880b('0x1c')](_0x36f8dd)[_0x880b('0x28')](_0x4660ae);};}exports[_0x880b('0x29')]=function(_0x253fc5,_0x3d7bc1){var _0xb65ceb={},_0x2a6ac1={},_0x10cbe0={'count':0x0,'rows':[]};var _0x39013e=_['map'](db['CmHopperHistory']['rawAttributes'],function(_0x5e31d1){return{'name':_0x5e31d1['fieldName'],'type':_0x5e31d1[_0x880b('0x2a')][_0x880b('0x2b')]};});_0x2a6ac1[_0x880b('0x2c')]=_[_0x880b('0x2d')](_0x39013e,_0x880b('0x27'));_0x2a6ac1[_0x880b('0x2e')]=_[_0x880b('0x2f')](_0x253fc5[_0x880b('0x2e')]);_0x2a6ac1[_0x880b('0x30')]=_[_0x880b('0x31')](_0x2a6ac1[_0x880b('0x2c')],_0x2a6ac1[_0x880b('0x2e')]);_0xb65ceb[_0x880b('0x32')]=_['intersection'](_0x2a6ac1[_0x880b('0x2c')],qs['fields'](_0x253fc5[_0x880b('0x2e')][_0x880b('0x33')]));_0xb65ceb[_0x880b('0x32')]=_0xb65ceb[_0x880b('0x32')]['length']?_0xb65ceb['attributes']:_0x2a6ac1[_0x880b('0x2c')];if(!_0x253fc5['query'][_0x880b('0x34')]('nolimit')){_0xb65ceb[_0x880b('0x1f')]=qs[_0x880b('0x1f')](_0x253fc5[_0x880b('0x2e')][_0x880b('0x1f')]);_0xb65ceb['offset']=qs[_0x880b('0x1e')](_0x253fc5[_0x880b('0x2e')]['offset']);}_0xb65ceb[_0x880b('0x35')]=qs[_0x880b('0x36')](_0x253fc5[_0x880b('0x2e')][_0x880b('0x36')]);_0xb65ceb[_0x880b('0x37')]=qs[_0x880b('0x30')](_[_0x880b('0x38')](_0x253fc5[_0x880b('0x2e')],_0x2a6ac1[_0x880b('0x30')]),_0x39013e);if(_0x253fc5[_0x880b('0x2e')][_0x880b('0x39')]){_0xb65ceb['where']=_[_0x880b('0x3a')](_0xb65ceb[_0x880b('0x37')],{'$or':_['map'](_0x39013e,function(_0x3c6865){if(_0x3c6865['type']!==_0x880b('0x3b')){var _0x394f77={};_0x394f77[_0x3c6865[_0x880b('0x27')]]={'$like':'%'+_0x253fc5[_0x880b('0x2e')]['filter']+'%'};return _0x394f77;}})});}_0xb65ceb=_['merge']({},_0xb65ceb,_0x253fc5[_0x880b('0x3c')]);var _0x219024={'where':_0xb65ceb[_0x880b('0x37')]};return db[_0x880b('0x3d')][_0x880b('0x20')](_0x219024)[_0x880b('0x24')](function(_0x4b5eee){_0x10cbe0[_0x880b('0x20')]=_0x4b5eee;if(_0x253fc5[_0x880b('0x2e')][_0x880b('0x3e')]){_0xb65ceb[_0x880b('0x3f')]=[{'all':!![]}];}return db['CmHopperHistory']['findAll'](_0xb65ceb);})[_0x880b('0x24')](function(_0x3594c2){_0x10cbe0[_0x880b('0x40')]=_0x3594c2;return _0x10cbe0;})[_0x880b('0x24')](respondWithFilteredResult(_0x3d7bc1,_0xb65ceb))[_0x880b('0x41')](handleError(_0x3d7bc1,null));};exports[_0x880b('0x42')]=function(_0x3f76f2,_0x577cd8){var _0x2bc7fc={'raw':!![],'where':{'id':_0x3f76f2[_0x880b('0x43')]['id']}},_0x2688a2={};_0x2688a2['model']=_[_0x880b('0x2f')](db['CmHopperHistory'][_0x880b('0x44')]);_0x2688a2[_0x880b('0x2e')]=_[_0x880b('0x2f')](_0x3f76f2[_0x880b('0x2e')]);_0x2688a2[_0x880b('0x30')]=_['intersection'](_0x2688a2['model'],_0x2688a2[_0x880b('0x2e')]);_0x2bc7fc['attributes']=_[_0x880b('0x31')](_0x2688a2['model'],qs[_0x880b('0x33')](_0x3f76f2[_0x880b('0x2e')]['fields']));_0x2bc7fc[_0x880b('0x32')]=_0x2bc7fc[_0x880b('0x32')][_0x880b('0x45')]?_0x2bc7fc[_0x880b('0x32')]:_0x2688a2[_0x880b('0x2c')];if(_0x3f76f2[_0x880b('0x2e')][_0x880b('0x3e')]){_0x2bc7fc['include']=[{'all':!![]}];}_0x2bc7fc=_[_0x880b('0x3a')]({},_0x2bc7fc,_0x3f76f2['options']);return db[_0x880b('0x3d')][_0x880b('0x46')](_0x2bc7fc)['then'](handleEntityNotFound(_0x577cd8,null))[_0x880b('0x24')](respondWithResult(_0x577cd8,null))['catch'](handleError(_0x577cd8,null));};exports['create']=function(_0x51720b,_0x42a376){return db['CmHopperHistory'][_0x880b('0x47')](_0x51720b[_0x880b('0x48')],{})[_0x880b('0x24')](respondWithResult(_0x42a376,0xc9))[_0x880b('0x41')](handleError(_0x42a376,null));};exports['describe']=function(_0x3e0782,_0x5127c6){return db['CmHopperHistory'][_0x880b('0x49')]()[_0x880b('0x24')](respondWithResult(_0x5127c6,null))[_0x880b('0x41')](handleError(_0x5127c6,null));};exports[_0x880b('0x23')]=function(_0x41365d,_0x238abf){if(_0x41365d[_0x880b('0x48')][_0x880b('0x4a')]){delete _0x41365d[_0x880b('0x48')][_0x880b('0x4a')];}return db[_0x880b('0x3d')]['find']({'where':{'uniqueid':_0x41365d[_0x880b('0x43')]['id']}})[_0x880b('0x24')](handleEntityNotFound(_0x238abf,null))[_0x880b('0x24')](saveUpdates(_0x41365d[_0x880b('0x48')],null))['then'](respondWithResult(_0x238abf,null))[_0x880b('0x41')](handleError(_0x238abf,null));};
\ No newline at end of file
index b573db0..d49c23c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb03e=['request-promise','path','rimraf','../../config/environment','./cmHopperHistory.attributes','exports','define','CmHopperHistory','cm_hopper_history','endtime','uniqueid','util','../../config/logger','api','moment','bluebird'];(function(_0x1757f2,_0x1b09fa){var _0x5e7212=function(_0x4f1794){while(--_0x4f1794){_0x1757f2['push'](_0x1757f2['shift']());}};_0x5e7212(++_0x1b09fa);}(_0xb03e,0x1eb));var _0xeb03=function(_0x3b3f01,_0x1d15a2){_0x3b3f01=_0x3b3f01-0x0;var _0x3ddde4=_0xb03e[_0x3b3f01];return _0x3ddde4;};'use strict';var _=require('lodash');var util=require(_0xeb03('0x0'));var logger=require(_0xeb03('0x1'))(_0xeb03('0x2'));var moment=require(_0xeb03('0x3'));var BPromise=require(_0xeb03('0x4'));var rp=require(_0xeb03('0x5'));var fs=require('fs');var path=require(_0xeb03('0x6'));var rimraf=require(_0xeb03('0x7'));var config=require(_0xeb03('0x8'));var attributes=require(_0xeb03('0x9'));module[_0xeb03('0xa')]=function(_0xee2291,_0x4e1cea){return _0xee2291[_0xeb03('0xb')](_0xeb03('0xc'),attributes,{'tableName':_0xeb03('0xd'),'paranoid':![],'indexes':[{'name':_0xeb03('0xe'),'fields':[_0xeb03('0xe')]},{'name':_0xeb03('0xf'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x6b47=['rimraf','../../config/environment','./cmHopperHistory.attributes','exports','define','CmHopperHistory','cm_hopper_history','endtime','uniqueid','util','api','moment','bluebird','request-promise'];(function(_0x543084,_0x4337f5){var _0x306a57=function(_0x2769ed){while(--_0x2769ed){_0x543084['push'](_0x543084['shift']());}};_0x306a57(++_0x4337f5);}(_0x6b47,0xe9));var _0x76b4=function(_0x1e7ead,_0x7f6227){_0x1e7ead=_0x1e7ead-0x0;var _0x3912b2=_0x6b47[_0x1e7ead];return _0x3912b2;};'use strict';var _=require('lodash');var util=require(_0x76b4('0x0'));var logger=require('../../config/logger')(_0x76b4('0x1'));var moment=require(_0x76b4('0x2'));var BPromise=require(_0x76b4('0x3'));var rp=require(_0x76b4('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x76b4('0x5'));var config=require(_0x76b4('0x6'));var attributes=require(_0x76b4('0x7'));module[_0x76b4('0x8')]=function(_0x292e27,_0x49fc2a){return _0x292e27[_0x76b4('0x9')](_0x76b4('0xa'),attributes,{'tableName':_0x76b4('0xb'),'paranoid':![],'indexes':[{'name':_0x76b4('0xc'),'fields':[_0x76b4('0xc')]},{'name':_0x76b4('0xd'),'fields':[_0x76b4('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 943fea8..dff8001 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3238=['info','CmHopperHistory,\x20%s,\x20%s','request\x20sent','debug','CmHopperHistory,\x20%s,\x20%s,\x20%s','stringify','error','message','result','CreateCmHopperHistory','CmHopperHistory','body','options','raw','catch','AvgHandleTime','findAll','where','sequelize','col','COUNT','literal','`state`\x20=\x204,\x201,\x20null','predictiveIntervalAnsweredCalls','`state`\x20=\x2010,\x201,\x20null','predictiveIntervalDroppedCallsTimeout','predictiveIntervalDroppedCallsCallersExit','AVG','`state`\x20=\x204,\x20`holdtime`,\x20null','predictiveIntervalAvgHoldtime','`state`\x20=\x204,\x20`talktime`,\x20null','predictiveIntervalAvgTalktime','campaign','name','`state`\x20=\x200,\x201,\x20null','`state`\x20=\x203,\x201,\x20null','outboundNoAnswerCallsDay','outboundAnswerCallsDay','`state`\x20=\x205,\x201,\x20null','outboundBusyCallsDay','`state`\x20=\x208,\x201,\x20null','`state`\x20=\x2012,\x201,\x20null','outboundUnknownCallsDay','`state`\x20=\x2013,\x201,\x20null','outboundBlacklistCallsDay','`state`\x20=\x2014,\x201,\x20null','`state`\x20=\x2018,\x201,\x20null','outboundRejectCallsDay','`state`\x20=\x2016,\x201,\x20null','`state`\x20=\x2020,\x201,\x20null','GetVoiceQueueHopperHistory','GetCampaignHopperHistory','ivrTotalCallsDays','ivrAnswerCallsDay','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','request','then'];(function(_0x284e6c,_0x1ddcd8){var _0xec719f=function(_0x504cbe){while(--_0x504cbe){_0x284e6c['push'](_0x284e6c['shift']());}};_0xec719f(++_0x1ddcd8);}(_0x3238,0x13e));var _0x8323=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x3238[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x8323('0x0'));var util=require('util');var moment=require(_0x8323('0x1'));var BPromise=require(_0x8323('0x2'));var rs=require(_0x8323('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8323('0x4'))['db'];var utils=require(_0x8323('0x5'));var logger=require(_0x8323('0x6'))(_0x8323('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x8323('0x8')][_0x8323('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x40b1f0,_0x14b3b5,_0x4ddf1f){return new BPromise(function(_0x232f4b,_0x5950e2){return client[_0x8323('0xa')](_0x40b1f0,_0x4ddf1f)[_0x8323('0xb')](function(_0x1577a6){logger[_0x8323('0xc')](_0x8323('0xd'),_0x14b3b5,_0x8323('0xe'));logger[_0x8323('0xf')](_0x8323('0x10'),_0x14b3b5,'request\x20sent',JSON[_0x8323('0x11')](_0x1577a6));if(_0x1577a6[_0x8323('0x12')]){if(_0x1577a6[_0x8323('0x12')]['code']===0x1f4){logger[_0x8323('0x12')](_0x8323('0xd'),_0x14b3b5,_0x1577a6[_0x8323('0x12')][_0x8323('0x13')]);return _0x5950e2(_0x1577a6[_0x8323('0x12')][_0x8323('0x13')]);}logger[_0x8323('0x12')](_0x8323('0xd'),_0x14b3b5,_0x1577a6[_0x8323('0x12')][_0x8323('0x13')]);return _0x232f4b(_0x1577a6[_0x8323('0x12')][_0x8323('0x13')]);}else{logger[_0x8323('0xc')](_0x8323('0xd'),_0x14b3b5,'request\x20sent');_0x232f4b(_0x1577a6[_0x8323('0x14')][_0x8323('0x13')]);}})['catch'](function(_0x320e7f){logger['error']('CmHopperHistory,\x20%s,\x20%s',_0x14b3b5,_0x320e7f);_0x5950e2(_0x320e7f);});});}exports[_0x8323('0x15')]=function(_0x3bb436){var _0x2bb7c5=this;return new Promise(function(_0x46a42c,_0x3b3ba9){return db[_0x8323('0x16')]['create'](_0x3bb436[_0x8323('0x17')],{'raw':_0x3bb436['options']?_0x3bb436[_0x8323('0x18')][_0x8323('0x19')]===undefined?!![]:![]:!![]})[_0x8323('0xb')](function(_0x4d1ef3){logger[_0x8323('0xc')]('CreateCmHopperHistory',_0x3bb436);logger['debug'](_0x8323('0x15'),_0x3bb436,JSON[_0x8323('0x11')](_0x4d1ef3));_0x46a42c(_0x4d1ef3);})[_0x8323('0x1a')](function(_0x49fdb1){logger['error'](_0x8323('0x15'),_0x49fdb1[_0x8323('0x13')],_0x3bb436);_0x3b3ba9(_0x2bb7c5[_0x8323('0x12')](0x1f4,_0x49fdb1[_0x8323('0x13')]));});});};exports[_0x8323('0x1b')]=function(_0x372ce6){var _0x3185d3=this;return new Promise(function(_0xe839b3,_0x2ded41){return db['CmHopperHistory'][_0x8323('0x1c')]({'raw':_0x372ce6['options']?_0x372ce6['options']['raw']===undefined?!![]:![]:!![],'where':_0x372ce6[_0x8323('0x18')]?_0x372ce6[_0x8323('0x18')][_0x8323('0x1d')]||null:null,'attributes':[[db[_0x8323('0x1e')]['fn']('COUNT',db[_0x8323('0x1e')][_0x8323('0x1f')]('id')),'predictiveIntervalTotalCalls'],[db[_0x8323('0x1e')]['fn'](_0x8323('0x20'),db[_0x8323('0x1e')]['fn']('IF',db[_0x8323('0x1e')][_0x8323('0x21')](_0x8323('0x22')))),_0x8323('0x23')],[db['sequelize']['fn'](_0x8323('0x20'),db[_0x8323('0x1e')]['fn']('IF',db['sequelize'][_0x8323('0x21')](_0x8323('0x24')))),_0x8323('0x25')],[db[_0x8323('0x1e')]['fn'](_0x8323('0x20'),db['sequelize']['fn']('IF',db['sequelize']['literal']('`state`\x20=\x2011,\x201,\x20null'))),_0x8323('0x26')],[db[_0x8323('0x1e')]['fn'](_0x8323('0x27'),db['sequelize']['fn']('IF',db['sequelize'][_0x8323('0x21')](_0x8323('0x28')))),_0x8323('0x29')],[db[_0x8323('0x1e')]['fn'](_0x8323('0x27'),db[_0x8323('0x1e')]['fn']('IF',db[_0x8323('0x1e')]['literal'](_0x8323('0x2a')))),_0x8323('0x2b')]]})['then'](function(_0x20a582){logger[_0x8323('0xc')](_0x8323('0x1b'),_0x372ce6);logger[_0x8323('0xf')](_0x8323('0x1b'),_0x372ce6,JSON[_0x8323('0x11')](_0x20a582));_0xe839b3(_0x20a582);})[_0x8323('0x1a')](function(_0x52b01b){logger[_0x8323('0x12')](_0x8323('0x1b'),_0x52b01b[_0x8323('0x13')],_0x372ce6);_0x2ded41(_0x3185d3[_0x8323('0x12')](0x1f4,_0x52b01b[_0x8323('0x13')]));});});};exports['GetVoiceQueueHopperHistory']=function(_0x580d06){var _0x41efea=this;return new Promise(function(_0x2d6c39,_0xada275){return db[_0x8323('0x16')][_0x8323('0x1c')]({'raw':_0x580d06[_0x8323('0x18')]?_0x580d06['options'][_0x8323('0x19')]===undefined?!![]:![]:!![],'where':_0x580d06[_0x8323('0x18')]?_0x580d06['options'][_0x8323('0x1d')]||null:null,'attributes':[[_0x8323('0x2c'),_0x8323('0x2d')],[db[_0x8323('0x1e')]['fn'](_0x8323('0x20'),db['sequelize']['fn']('IF',db['sequelize'][_0x8323('0x21')](_0x8323('0x2e')))),'outboundNoSuchCallsDay'],[db[_0x8323('0x1e')]['fn'](_0x8323('0x20'),db[_0x8323('0x1e')]['fn']('IF',db[_0x8323('0x1e')][_0x8323('0x21')](_0x8323('0x2f')))),_0x8323('0x30')],[db['sequelize']['fn'](_0x8323('0x20'),db[_0x8323('0x1e')]['fn']('IF',db[_0x8323('0x1e')][_0x8323('0x21')]('`state`\x20=\x204,\x201,\x20null'))),_0x8323('0x31')],[db[_0x8323('0x1e')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0x8323('0x1e')][_0x8323('0x21')](_0x8323('0x32')))),_0x8323('0x33')],[db[_0x8323('0x1e')]['fn']('COUNT',db[_0x8323('0x1e')]['fn']('IF',db[_0x8323('0x1e')][_0x8323('0x21')](_0x8323('0x34')))),'outboundCongestionCallsDay'],[db[_0x8323('0x1e')]['fn'](_0x8323('0x20'),db['sequelize']['fn']('IF',db['sequelize'][_0x8323('0x21')]('`state`\x20=\x2010\x20,\x201,\x20null'))),'outboundDropCallsDayTimeout'],[db[_0x8323('0x1e')]['fn']('COUNT',db[_0x8323('0x1e')]['fn']('IF',db['sequelize'][_0x8323('0x21')]('`state`\x20=\x2011\x20,\x201,\x20null'))),'outboundDropCallsDayCallersExit'],[db[_0x8323('0x1e')]['fn'](_0x8323('0x20'),db[_0x8323('0x1e')]['fn']('IF',db[_0x8323('0x1e')][_0x8323('0x21')](_0x8323('0x35')))),_0x8323('0x36')],[db[_0x8323('0x1e')]['fn'](_0x8323('0x20'),db['sequelize']['fn']('IF',db['sequelize'][_0x8323('0x21')](_0x8323('0x37')))),_0x8323('0x38')],[db[_0x8323('0x1e')]['fn'](_0x8323('0x20'),db[_0x8323('0x1e')]['fn']('IF',db[_0x8323('0x1e')]['literal'](_0x8323('0x39')))),'outboundOriginateFailureCallsDay'],[db[_0x8323('0x1e')]['fn']('COUNT',db[_0x8323('0x1e')]['fn']('IF',db[_0x8323('0x1e')][_0x8323('0x21')](_0x8323('0x3a')))),_0x8323('0x3b')],[db[_0x8323('0x1e')]['fn'](_0x8323('0x20'),db[_0x8323('0x1e')]['fn']('IF',db['sequelize']['literal'](_0x8323('0x3c')))),'outboundAnswerAgiCallsDay'],[db[_0x8323('0x1e')]['fn']('COUNT',db[_0x8323('0x1e')]['fn']('IF',db[_0x8323('0x1e')][_0x8323('0x21')](_0x8323('0x3d')))),'outboundRejectCallsDay'],[db[_0x8323('0x1e')]['fn']('COUNT',db['sequelize']['fn']('IF',db['sequelize']['literal']('`state`\x20=\x2022\x20or\x20`state`\x20=\x2023,\x201,\x20null'))),'outboundReCallsDay']],'group':[_0x8323('0x2c')]})[_0x8323('0xb')](function(_0x16b073){logger[_0x8323('0xc')](_0x8323('0x3e'),_0x580d06);logger[_0x8323('0xf')](_0x8323('0x3e'),_0x580d06,JSON[_0x8323('0x11')](_0x16b073));_0x2d6c39(_0x16b073);})[_0x8323('0x1a')](function(_0x14d0b1){logger[_0x8323('0x12')](_0x8323('0x3e'),_0x14d0b1[_0x8323('0x13')],_0x580d06);_0xada275(_0x41efea['error'](0x1f4,_0x14d0b1[_0x8323('0x13')]));});});};exports[_0x8323('0x3f')]=function(_0x20637e){var _0xa10750=this;return new Promise(function(_0x3b37ca,_0xd6f24){return db['CmHopperHistory']['findAll']({'raw':_0x20637e['options']?_0x20637e['options']['raw']===undefined?!![]:![]:!![],'where':_0x20637e[_0x8323('0x18')]?_0x20637e[_0x8323('0x18')][_0x8323('0x1d')]||null:null,'attributes':[[_0x8323('0x2c'),'name'],[db[_0x8323('0x1e')]['fn']('COUNT',db[_0x8323('0x1e')][_0x8323('0x1f')]('id')),_0x8323('0x40')],[db[_0x8323('0x1e')]['fn'](_0x8323('0x20'),db[_0x8323('0x1e')]['fn']('IF',db[_0x8323('0x1e')][_0x8323('0x21')](_0x8323('0x22')))),_0x8323('0x41')]],'group':['campaign']})[_0x8323('0xb')](function(_0x46cf89){logger[_0x8323('0xc')](_0x8323('0x3f'),_0x20637e);logger[_0x8323('0xf')](_0x8323('0x3f'),_0x20637e,JSON[_0x8323('0x11')](_0x46cf89));_0x3b37ca(_0x46cf89);})[_0x8323('0x1a')](function(_0x1a8a0c){logger['error'](_0x8323('0x3f'),_0x1a8a0c['message'],_0x20637e);_0xd6f24(_0xa10750[_0x8323('0x12')](0x1f4,_0x1a8a0c['message']));});});};
\ No newline at end of file
+var _0x609a=['outboundDropCallsDayTimeout','`state`\x20=\x2011\x20,\x201,\x20null','outboundUnknownCallsDay','outboundBlacklistCallsDay','`state`\x20=\x2014,\x201,\x20null','outboundOriginateFailureCallsDay','`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','CmHopperHistory','ivrAnswerCallsDay','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','CmHopperHistory,\x20%s,\x20%s,\x20%s','error','code','CmHopperHistory,\x20%s,\x20%s','message','result','catch','CreateCmHopperHistory','body','options','raw','stringify','AvgHandleTime','findAll','sequelize','COUNT','col','predictiveIntervalTotalCalls','literal','`state`\x20=\x204,\x201,\x20null','predictiveIntervalDroppedCallsTimeout','`state`\x20=\x2011,\x201,\x20null','`state`\x20=\x204,\x20`holdtime`,\x20null','GetVoiceQueueHopperHistory','where','campaign','name','`state`\x20=\x200,\x201,\x20null','outboundNoSuchCallsDay','`state`\x20=\x203,\x201,\x20null','outboundAnswerCallsDay','`state`\x20=\x205,\x201,\x20null','outboundBusyCallsDay','`state`\x20=\x208,\x201,\x20null','`state`\x20=\x2010\x20,\x201,\x20null'];(function(_0x25c980,_0x33614b){var _0x36d788=function(_0x1f11f9){while(--_0x1f11f9){_0x25c980['push'](_0x25c980['shift']());}};_0x36d788(++_0x33614b);}(_0x609a,0x1ec));var _0xa609=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x609a[_0x3947c9];return _0x2e7871;};'use strict';var _=require(_0xa609('0x0'));var util=require(_0xa609('0x1'));var moment=require(_0xa609('0x2'));var BPromise=require(_0xa609('0x3'));var rs=require(_0xa609('0x4'));var fs=require('fs');var Redis=require(_0xa609('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xa609('0x6'));var logger=require('../../config/logger')(_0xa609('0x7'));var config=require(_0xa609('0x8'));var jayson=require(_0xa609('0x9'));var client=jayson[_0xa609('0xa')][_0xa609('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x409f8d,_0x394cde,_0x269447){return new BPromise(function(_0x29f23a,_0x3b5da3){return client[_0xa609('0xc')](_0x409f8d,_0x269447)[_0xa609('0xd')](function(_0x52e06a){logger[_0xa609('0xe')]('CmHopperHistory,\x20%s,\x20%s',_0x394cde,_0xa609('0xf'));logger[_0xa609('0x10')](_0xa609('0x11'),_0x394cde,_0xa609('0xf'),JSON['stringify'](_0x52e06a));if(_0x52e06a[_0xa609('0x12')]){if(_0x52e06a[_0xa609('0x12')][_0xa609('0x13')]===0x1f4){logger['error'](_0xa609('0x14'),_0x394cde,_0x52e06a[_0xa609('0x12')][_0xa609('0x15')]);return _0x3b5da3(_0x52e06a[_0xa609('0x12')][_0xa609('0x15')]);}logger[_0xa609('0x12')](_0xa609('0x14'),_0x394cde,_0x52e06a[_0xa609('0x12')][_0xa609('0x15')]);return _0x29f23a(_0x52e06a[_0xa609('0x12')][_0xa609('0x15')]);}else{logger['info'](_0xa609('0x14'),_0x394cde,_0xa609('0xf'));_0x29f23a(_0x52e06a[_0xa609('0x16')][_0xa609('0x15')]);}})[_0xa609('0x17')](function(_0x44bab4){logger[_0xa609('0x12')](_0xa609('0x14'),_0x394cde,_0x44bab4);_0x3b5da3(_0x44bab4);});});}exports[_0xa609('0x18')]=function(_0x1c9bed){var _0x26b4ea=this;return new Promise(function(_0x3e6eac,_0x338be7){return db['CmHopperHistory']['create'](_0x1c9bed[_0xa609('0x19')],{'raw':_0x1c9bed[_0xa609('0x1a')]?_0x1c9bed[_0xa609('0x1a')][_0xa609('0x1b')]===undefined?!![]:![]:!![]})[_0xa609('0xd')](function(_0x103bce){logger['info'](_0xa609('0x18'),_0x1c9bed);logger[_0xa609('0x10')]('CreateCmHopperHistory',_0x1c9bed,JSON[_0xa609('0x1c')](_0x103bce));_0x3e6eac(_0x103bce);})[_0xa609('0x17')](function(_0x535e58){logger[_0xa609('0x12')](_0xa609('0x18'),_0x535e58[_0xa609('0x15')],_0x1c9bed);_0x338be7(_0x26b4ea[_0xa609('0x12')](0x1f4,_0x535e58[_0xa609('0x15')]));});});};exports[_0xa609('0x1d')]=function(_0x4ca2c3){var _0x56e784=this;return new Promise(function(_0x41ab1f,_0x1fe2ab){return db['CmHopperHistory'][_0xa609('0x1e')]({'raw':_0x4ca2c3[_0xa609('0x1a')]?_0x4ca2c3['options'][_0xa609('0x1b')]===undefined?!![]:![]:!![],'where':_0x4ca2c3[_0xa609('0x1a')]?_0x4ca2c3[_0xa609('0x1a')]['where']||null:null,'attributes':[[db[_0xa609('0x1f')]['fn'](_0xa609('0x20'),db[_0xa609('0x1f')][_0xa609('0x21')]('id')),_0xa609('0x22')],[db[_0xa609('0x1f')]['fn'](_0xa609('0x20'),db[_0xa609('0x1f')]['fn']('IF',db['sequelize'][_0xa609('0x23')](_0xa609('0x24')))),'predictiveIntervalAnsweredCalls'],[db[_0xa609('0x1f')]['fn'](_0xa609('0x20'),db[_0xa609('0x1f')]['fn']('IF',db[_0xa609('0x1f')][_0xa609('0x23')]('`state`\x20=\x2010,\x201,\x20null'))),_0xa609('0x25')],[db[_0xa609('0x1f')]['fn'](_0xa609('0x20'),db[_0xa609('0x1f')]['fn']('IF',db['sequelize'][_0xa609('0x23')](_0xa609('0x26')))),'predictiveIntervalDroppedCallsCallersExit'],[db[_0xa609('0x1f')]['fn']('AVG',db[_0xa609('0x1f')]['fn']('IF',db[_0xa609('0x1f')]['literal'](_0xa609('0x27')))),'predictiveIntervalAvgHoldtime'],[db[_0xa609('0x1f')]['fn']('AVG',db['sequelize']['fn']('IF',db[_0xa609('0x1f')]['literal']('`state`\x20=\x204,\x20`talktime`,\x20null'))),'predictiveIntervalAvgTalktime']]})['then'](function(_0x3c0aba){logger[_0xa609('0xe')]('AvgHandleTime',_0x4ca2c3);logger[_0xa609('0x10')](_0xa609('0x1d'),_0x4ca2c3,JSON['stringify'](_0x3c0aba));_0x41ab1f(_0x3c0aba);})['catch'](function(_0x50e183){logger[_0xa609('0x12')](_0xa609('0x1d'),_0x50e183[_0xa609('0x15')],_0x4ca2c3);_0x1fe2ab(_0x56e784[_0xa609('0x12')](0x1f4,_0x50e183[_0xa609('0x15')]));});});};exports[_0xa609('0x28')]=function(_0x31fd28){var _0x48cb9f=this;return new Promise(function(_0x572c70,_0x5de016){return db['CmHopperHistory'][_0xa609('0x1e')]({'raw':_0x31fd28[_0xa609('0x1a')]?_0x31fd28['options']['raw']===undefined?!![]:![]:!![],'where':_0x31fd28[_0xa609('0x1a')]?_0x31fd28[_0xa609('0x1a')][_0xa609('0x29')]||null:null,'attributes':[[_0xa609('0x2a'),_0xa609('0x2b')],[db['sequelize']['fn'](_0xa609('0x20'),db[_0xa609('0x1f')]['fn']('IF',db[_0xa609('0x1f')][_0xa609('0x23')](_0xa609('0x2c')))),_0xa609('0x2d')],[db[_0xa609('0x1f')]['fn'](_0xa609('0x20'),db[_0xa609('0x1f')]['fn']('IF',db['sequelize'][_0xa609('0x23')](_0xa609('0x2e')))),'outboundNoAnswerCallsDay'],[db[_0xa609('0x1f')]['fn'](_0xa609('0x20'),db['sequelize']['fn']('IF',db[_0xa609('0x1f')][_0xa609('0x23')]('`state`\x20=\x204,\x201,\x20null'))),_0xa609('0x2f')],[db['sequelize']['fn']('COUNT',db[_0xa609('0x1f')]['fn']('IF',db['sequelize'][_0xa609('0x23')](_0xa609('0x30')))),_0xa609('0x31')],[db[_0xa609('0x1f')]['fn'](_0xa609('0x20'),db['sequelize']['fn']('IF',db[_0xa609('0x1f')]['literal'](_0xa609('0x32')))),'outboundCongestionCallsDay'],[db['sequelize']['fn'](_0xa609('0x20'),db['sequelize']['fn']('IF',db[_0xa609('0x1f')][_0xa609('0x23')](_0xa609('0x33')))),_0xa609('0x34')],[db['sequelize']['fn'](_0xa609('0x20'),db[_0xa609('0x1f')]['fn']('IF',db[_0xa609('0x1f')][_0xa609('0x23')](_0xa609('0x35')))),'outboundDropCallsDayCallersExit'],[db[_0xa609('0x1f')]['fn']('COUNT',db[_0xa609('0x1f')]['fn']('IF',db[_0xa609('0x1f')][_0xa609('0x23')]('`state`\x20=\x2012,\x201,\x20null'))),_0xa609('0x36')],[db[_0xa609('0x1f')]['fn'](_0xa609('0x20'),db[_0xa609('0x1f')]['fn']('IF',db[_0xa609('0x1f')][_0xa609('0x23')]('`state`\x20=\x2013,\x201,\x20null'))),_0xa609('0x37')],[db[_0xa609('0x1f')]['fn'](_0xa609('0x20'),db['sequelize']['fn']('IF',db[_0xa609('0x1f')]['literal'](_0xa609('0x38')))),_0xa609('0x39')],[db[_0xa609('0x1f')]['fn'](_0xa609('0x20'),db['sequelize']['fn']('IF',db[_0xa609('0x1f')][_0xa609('0x23')](_0xa609('0x3a')))),_0xa609('0x3b')],[db[_0xa609('0x1f')]['fn']('COUNT',db[_0xa609('0x1f')]['fn']('IF',db[_0xa609('0x1f')][_0xa609('0x23')](_0xa609('0x3c')))),_0xa609('0x3d')],[db['sequelize']['fn'](_0xa609('0x20'),db[_0xa609('0x1f')]['fn']('IF',db[_0xa609('0x1f')][_0xa609('0x23')](_0xa609('0x3e')))),_0xa609('0x3b')],[db['sequelize']['fn'](_0xa609('0x20'),db['sequelize']['fn']('IF',db[_0xa609('0x1f')]['literal'](_0xa609('0x3f')))),_0xa609('0x40')]],'group':['campaign']})[_0xa609('0xd')](function(_0x141fc1){logger[_0xa609('0xe')](_0xa609('0x28'),_0x31fd28);logger[_0xa609('0x10')](_0xa609('0x28'),_0x31fd28,JSON[_0xa609('0x1c')](_0x141fc1));_0x572c70(_0x141fc1);})['catch'](function(_0xa21947){logger[_0xa609('0x12')](_0xa609('0x28'),_0xa21947['message'],_0x31fd28);_0x5de016(_0x48cb9f[_0xa609('0x12')](0x1f4,_0xa21947['message']));});});};exports[_0xa609('0x41')]=function(_0x8e31f2){var _0x8478c8=this;return new Promise(function(_0x1c2751,_0x3b42b1){return db[_0xa609('0x42')][_0xa609('0x1e')]({'raw':_0x8e31f2[_0xa609('0x1a')]?_0x8e31f2[_0xa609('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x8e31f2[_0xa609('0x1a')]?_0x8e31f2[_0xa609('0x1a')]['where']||null:null,'attributes':[['campaign',_0xa609('0x2b')],[db[_0xa609('0x1f')]['fn'](_0xa609('0x20'),db['sequelize'][_0xa609('0x21')]('id')),'ivrTotalCallsDays'],[db[_0xa609('0x1f')]['fn'](_0xa609('0x20'),db[_0xa609('0x1f')]['fn']('IF',db['sequelize']['literal'](_0xa609('0x24')))),_0xa609('0x43')]],'group':[_0xa609('0x2a')]})[_0xa609('0xd')](function(_0x72e269){logger[_0xa609('0xe')](_0xa609('0x41'),_0x8e31f2);logger[_0xa609('0x10')](_0xa609('0x41'),_0x8e31f2,JSON['stringify'](_0x72e269));_0x1c2751(_0x72e269);})[_0xa609('0x17')](function(_0x1d0ce4){logger[_0xa609('0x12')](_0xa609('0x41'),_0x1d0ce4['message'],_0x8e31f2);_0x3b42b1(_0x8478c8[_0xa609('0x12')](0x1f4,_0x1d0ce4[_0xa609('0x15')]));});});};
\ No newline at end of file
index 5aad093..6cbbb99 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe92d=['exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./cmHopperHistory.controller','get','isAuthenticated','index','describe','/:id','show','post','create','put','update'];(function(_0x5e206a,_0xe54632){var _0x530568=function(_0x22fa04){while(--_0x22fa04){_0x5e206a['push'](_0x5e206a['shift']());}};_0x530568(++_0xe54632);}(_0xe92d,0x86));var _0xde92=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0xe92d[_0x4cf98e];return _0x1623ac;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xde92('0x0'));var timeout=require(_0xde92('0x1'));var express=require(_0xde92('0x2'));var router=express[_0xde92('0x3')]();var fs_extra=require(_0xde92('0x4'));var auth=require(_0xde92('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xde92('0x6'));var controller=require(_0xde92('0x7'));router[_0xde92('0x8')]('/',auth[_0xde92('0x9')](),controller[_0xde92('0xa')]);router[_0xde92('0x8')]('/describe',auth['isAuthenticated'](),controller[_0xde92('0xb')]);router[_0xde92('0x8')](_0xde92('0xc'),auth[_0xde92('0x9')](),controller[_0xde92('0xd')]);router[_0xde92('0xe')]('/',auth['isAuthenticated'](),controller[_0xde92('0xf')]);router[_0xde92('0x10')](_0xde92('0xc'),auth[_0xde92('0x9')](),controller[_0xde92('0x11')]);module[_0xde92('0x12')]=router;
\ No newline at end of file
+var _0xc48b=['get','isAuthenticated','/describe','describe','/:id','show','create','update','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./cmHopperHistory.controller'];(function(_0x105c6a,_0x48c736){var _0x5b844d=function(_0x181f09){while(--_0x181f09){_0x105c6a['push'](_0x105c6a['shift']());}};_0x5b844d(++_0x48c736);}(_0xc48b,0x129));var _0xbc48=function(_0x17d713,_0x19b690){_0x17d713=_0x17d713-0x0;var _0x452666=_0xc48b[_0x17d713];return _0x452666;};'use strict';var multer=require(_0xbc48('0x0'));var util=require(_0xbc48('0x1'));var path=require(_0xbc48('0x2'));var timeout=require('connect-timeout');var express=require(_0xbc48('0x3'));var router=express[_0xbc48('0x4')]();var fs_extra=require(_0xbc48('0x5'));var auth=require(_0xbc48('0x6'));var interaction=require(_0xbc48('0x7'));var config=require('../../config/environment');var controller=require(_0xbc48('0x8'));router[_0xbc48('0x9')]('/',auth[_0xbc48('0xa')](),controller['index']);router[_0xbc48('0x9')](_0xbc48('0xb'),auth[_0xbc48('0xa')](),controller[_0xbc48('0xc')]);router[_0xbc48('0x9')](_0xbc48('0xd'),auth[_0xbc48('0xa')](),controller[_0xbc48('0xe')]);router['post']('/',auth[_0xbc48('0xa')](),controller[_0xbc48('0xf')]);router['put'](_0xbc48('0xd'),auth[_0xbc48('0xa')](),controller[_0xbc48('0x10')]);module['exports']=router;
\ No newline at end of file
index 908f6c7..9699f70 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a2a=['exports','STRING','name','sequelize'];(function(_0x4014e5,_0x125e6a){var _0x4ee8b7=function(_0x2475da){while(--_0x2475da){_0x4014e5['push'](_0x4014e5['shift']());}};_0x4ee8b7(++_0x125e6a);}(_0x5a2a,0x1c3));var _0xa5a2=function(_0x531022,_0x512cde){_0x531022=_0x531022-0x0;var _0xfc9427=_0x5a2a[_0x531022];return _0xfc9427;};'use strict';var Sequelize=require(_0xa5a2('0x0'));module[_0xa5a2('0x1')]={'name':{'type':Sequelize[_0xa5a2('0x2')],'unique':_0xa5a2('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize['STRING']},'dialPrefix':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xc01b=['sequelize','exports','STRING','name'];(function(_0x57d9b1,_0x43a431){var _0x39593b=function(_0x12bb7a){while(--_0x12bb7a){_0x57d9b1['push'](_0x57d9b1['shift']());}};_0x39593b(++_0x43a431);}(_0xc01b,0x74));var _0xbc01=function(_0x5be266,_0x3c53dc){_0x5be266=_0x5be266-0x0;var _0x1b613c=_0xc01b[_0x5be266];return _0x1b613c;};'use strict';var Sequelize=require(_0xbc01('0x0'));module[_0xbc01('0x1')]={'name':{'type':Sequelize[_0xbc01('0x2')],'unique':_0xbc01('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xbc01('0x2')]},'dialPrefix':{'type':Sequelize[_0xbc01('0x2')]}};
\ No newline at end of file
index 55072cd..5340b87 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa5d=['cf_%d','hasOwnProperty','raw','getContactsCsv','findAll','OrderBy','alias','select','cm_contacts','c.ListId\x20=\x20?','c.deletedAt\x20is\x20null','field','c.cf_','customField_','item','from','cm_contact_has_items','ItemTypeId\x20=\x20?','CmContactId\x20=\x20c.id','description','description_additionalPhone_','toString','writeFileSync','format','Content-disposition','attachment;\x20filename=','setHeader','Content-type','text/csv','download','findOne','sequelize','addCustomFields','Sequelize','TEXT','text','number','BOOLEAN','defaultValue','queryInterface','addColumn','cf_%s','getCustomFields','findAndCountAll','getGlobalCustomFields','omit','emit','userCmList:save','removeAgents','userCmList:remove','getAgents','User','eml-format','rimraf','zip-dir','bluebird','mustache','ejs','fs-extra','lodash','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','../../config/license/util','redis','defaults','socket.io-emitter','./cmList.socket','sendStatus','end','status','json','offset','limit','undefined','count','set','apply','reject','save','update','destroy','get','UserProfileResource','then','error','name','send','index','map','CmList','rawAttributes','fieldName','query','keys','intersection','model','attributes','length','nolimit','order','sort','where','filters','pick','filter','merge','type','options','includeAll','include','rows','show','params','fields','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','Disposition','getDispositions','ListId','removeDispositions','ids','addContacts','CmContact','tags','join','isArray','push','each','success','errors','message','Malformed\x20request\x20syntax','getContacts','CmCustomField','CustomFields','concat'];(function(_0x131e60,_0x5352ce){var _0x4bc497=function(_0x2a758e){while(--_0x2a758e){_0x131e60['push'](_0x131e60['shift']());}};_0x4bc497(++_0x5352ce);}(_0xaa5d,0xd2));var _0xdaa5=function(_0x16dbfd,_0x2f9431){_0x16dbfd=_0x16dbfd-0x0;var _0x382254=_0xaa5d[_0x16dbfd];return _0x382254;};'use strict';var emlformat=require(_0xdaa5('0x0'));var rimraf=require(_0xdaa5('0x1'));var zipdir=require(_0xdaa5('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xdaa5('0x3'));var Mustache=require(_0xdaa5('0x4'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xdaa5('0x5'));var fs=require('fs');var fs_extra=require(_0xdaa5('0x6'));var _=require(_0xdaa5('0x7'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xdaa5('0x8'));var deskjs=require(_0xdaa5('0x9'));var toCsv=require(_0xdaa5('0xa'));var querystring=require(_0xdaa5('0xb'));var Papa=require(_0xdaa5('0xc'));var Redis=require(_0xdaa5('0xd'));var authService=require(_0xdaa5('0xe'));var qs=require(_0xdaa5('0xf'));var as=require(_0xdaa5('0x10'));var hardwareService=require(_0xdaa5('0x11'));var logger=require(_0xdaa5('0x12'))('api');var utils=require(_0xdaa5('0x13'));var config=require(_0xdaa5('0x14'));var licenseUtil=require(_0xdaa5('0x15'));var db=require('../../mysqldb')['db'];var csv_results;config[_0xdaa5('0x16')]=_[_0xdaa5('0x17')](config[_0xdaa5('0x16')],{'host':'localhost','port':0x18eb});var socket=require(_0xdaa5('0x18'))(new Redis(config[_0xdaa5('0x16')]));require(_0xdaa5('0x19'))['register'](socket);function respondWithStatusCode(_0x16e7b5,_0x3747d4){_0x3747d4=_0x3747d4||0xcc;return function(_0x319009){if(_0x319009){return _0x16e7b5[_0xdaa5('0x1a')](_0x3747d4);}return _0x16e7b5['status'](_0x3747d4)[_0xdaa5('0x1b')]();};}function respondWithResult(_0x32577d,_0x2710b2){_0x2710b2=_0x2710b2||0xc8;return function(_0x3d3ffd){if(_0x3d3ffd){return _0x32577d[_0xdaa5('0x1c')](_0x2710b2)[_0xdaa5('0x1d')](_0x3d3ffd);}};}function respondWithFilteredResult(_0x39d970,_0x399f6b){return function(_0x34e249){if(_0x34e249){var _0x42b7fd=typeof _0x399f6b[_0xdaa5('0x1e')]==='undefined'&&typeof _0x399f6b[_0xdaa5('0x1f')]===_0xdaa5('0x20');var _0x1f89b4=_0x34e249[_0xdaa5('0x21')];var _0x534de0=_0x42b7fd?0x0:_0x399f6b[_0xdaa5('0x1e')];var _0x4af002=_0x42b7fd?_0x34e249['count']:_0x399f6b[_0xdaa5('0x1e')]+_0x399f6b[_0xdaa5('0x1f')];var _0x93a9ea;if(_0x4af002>=_0x1f89b4){_0x4af002=_0x1f89b4;_0x93a9ea=0xc8;}else{_0x93a9ea=0xce;}_0x39d970[_0xdaa5('0x1c')](_0x93a9ea);return _0x39d970[_0xdaa5('0x22')]('Content-Range',_0x534de0+'-'+_0x4af002+'/'+_0x1f89b4)[_0xdaa5('0x1d')](_0x34e249);}return null;};}function patchUpdates(_0x5d3c67){return function(_0x5ae7ae){try{jsonpatch[_0xdaa5('0x23')](_0x5ae7ae,_0x5d3c67,!![]);}catch(_0x1f6342){return BPromise[_0xdaa5('0x24')](_0x1f6342);}return _0x5ae7ae[_0xdaa5('0x25')]();};}function saveUpdates(_0x7fdbc8,_0x22eaba){return function(_0x45a3b3){if(_0x45a3b3){return _0x45a3b3[_0xdaa5('0x26')](_0x7fdbc8)['then'](function(_0x1063b0){return _0x1063b0;});}return null;};}function removeEntity(_0xe0d95,_0x3ea751){return function(_0x2550ed){if(_0x2550ed){return _0x2550ed[_0xdaa5('0x27')]()['then'](function(){var _0x270969=_0x2550ed[_0xdaa5('0x28')]({'plain':!![]});var _0x1f8bbe='Lists';return db[_0xdaa5('0x29')][_0xdaa5('0x27')]({'where':{'type':_0x1f8bbe,'resourceId':_0x270969['id']}})[_0xdaa5('0x2a')](function(){return _0x2550ed;});})[_0xdaa5('0x2a')](function(){_0xe0d95[_0xdaa5('0x1c')](0xcc)[_0xdaa5('0x1b')]();});}};}function handleEntityNotFound(_0x48c0e3,_0x327f38){return function(_0x41e522){if(!_0x41e522){_0x48c0e3[_0xdaa5('0x1a')](0x194);}return _0x41e522;};}function handleError(_0x1f55a1,_0xc167fb){_0xc167fb=_0xc167fb||0x1f4;return function(_0x26ea04){logger[_0xdaa5('0x2b')](_0x26ea04['stack']);if(_0x26ea04[_0xdaa5('0x2c')]){delete _0x26ea04[_0xdaa5('0x2c')];}_0x1f55a1[_0xdaa5('0x1c')](_0xc167fb)[_0xdaa5('0x2d')](_0x26ea04);};}exports[_0xdaa5('0x2e')]=function(_0x2d08c6,_0x4723e0){var _0x13cdf8={},_0x22416e={},_0x4703f8={'count':0x0,'rows':[]};var _0x5a37bd=_[_0xdaa5('0x2f')](db[_0xdaa5('0x30')][_0xdaa5('0x31')],function(_0x339620){return{'name':_0x339620[_0xdaa5('0x32')],'type':_0x339620['type']['key']};});_0x22416e['model']=_[_0xdaa5('0x2f')](_0x5a37bd,_0xdaa5('0x2c'));_0x22416e[_0xdaa5('0x33')]=_[_0xdaa5('0x34')](_0x2d08c6['query']);_0x22416e['filters']=_[_0xdaa5('0x35')](_0x22416e[_0xdaa5('0x36')],_0x22416e[_0xdaa5('0x33')]);_0x13cdf8[_0xdaa5('0x37')]=_[_0xdaa5('0x35')](_0x22416e[_0xdaa5('0x36')],qs['fields'](_0x2d08c6[_0xdaa5('0x33')]['fields']));_0x13cdf8[_0xdaa5('0x37')]=_0x13cdf8[_0xdaa5('0x37')][_0xdaa5('0x38')]?_0x13cdf8[_0xdaa5('0x37')]:_0x22416e['model'];if(!_0x2d08c6[_0xdaa5('0x33')]['hasOwnProperty'](_0xdaa5('0x39'))){_0x13cdf8[_0xdaa5('0x1f')]=qs[_0xdaa5('0x1f')](_0x2d08c6[_0xdaa5('0x33')][_0xdaa5('0x1f')]);_0x13cdf8[_0xdaa5('0x1e')]=qs[_0xdaa5('0x1e')](_0x2d08c6[_0xdaa5('0x33')]['offset']);}_0x13cdf8[_0xdaa5('0x3a')]=qs[_0xdaa5('0x3b')](_0x2d08c6[_0xdaa5('0x33')]['sort']);_0x13cdf8[_0xdaa5('0x3c')]=qs[_0xdaa5('0x3d')](_[_0xdaa5('0x3e')](_0x2d08c6[_0xdaa5('0x33')],_0x22416e['filters']),_0x5a37bd);if(_0x2d08c6['query'][_0xdaa5('0x3f')]){_0x13cdf8[_0xdaa5('0x3c')]=_[_0xdaa5('0x40')](_0x13cdf8[_0xdaa5('0x3c')],{'$or':_[_0xdaa5('0x2f')](_0x5a37bd,function(_0x128d75){if(_0x128d75[_0xdaa5('0x41')]!=='VIRTUAL'){var _0x5d07d6={};_0x5d07d6[_0x128d75['name']]={'$like':'%'+_0x2d08c6[_0xdaa5('0x33')][_0xdaa5('0x3f')]+'%'};return _0x5d07d6;}})});}_0x13cdf8=_[_0xdaa5('0x40')]({},_0x13cdf8,_0x2d08c6[_0xdaa5('0x42')]);var _0x492867={'where':_0x13cdf8[_0xdaa5('0x3c')]};return db['CmList'][_0xdaa5('0x21')](_0x492867)['then'](function(_0x468c7a){_0x4703f8[_0xdaa5('0x21')]=_0x468c7a;if(_0x2d08c6['query'][_0xdaa5('0x43')]){_0x13cdf8[_0xdaa5('0x44')]=[{'all':!![]}];}return db['CmList']['findAll'](_0x13cdf8);})[_0xdaa5('0x2a')](function(_0x2c5e14){_0x4703f8[_0xdaa5('0x45')]=_0x2c5e14;return _0x4703f8;})[_0xdaa5('0x2a')](respondWithFilteredResult(_0x4723e0,_0x13cdf8))['catch'](handleError(_0x4723e0,null));};exports[_0xdaa5('0x46')]=function(_0x3785a2,_0x3a0480){var _0x40f4c3={'raw':![],'where':{'id':_0x3785a2[_0xdaa5('0x47')]['id']}},_0x37743f={};_0x37743f[_0xdaa5('0x36')]=_[_0xdaa5('0x34')](db[_0xdaa5('0x30')][_0xdaa5('0x31')]);_0x37743f[_0xdaa5('0x33')]=_[_0xdaa5('0x34')](_0x3785a2[_0xdaa5('0x33')]);_0x37743f[_0xdaa5('0x3d')]=_[_0xdaa5('0x35')](_0x37743f[_0xdaa5('0x36')],_0x37743f[_0xdaa5('0x33')]);_0x40f4c3[_0xdaa5('0x37')]=_[_0xdaa5('0x35')](_0x37743f[_0xdaa5('0x36')],qs[_0xdaa5('0x48')](_0x3785a2[_0xdaa5('0x33')][_0xdaa5('0x48')]));_0x40f4c3[_0xdaa5('0x37')]=_0x40f4c3[_0xdaa5('0x37')]['length']?_0x40f4c3[_0xdaa5('0x37')]:_0x37743f[_0xdaa5('0x36')];if(_0x3785a2[_0xdaa5('0x33')][_0xdaa5('0x43')]){_0x40f4c3[_0xdaa5('0x44')]=[{'all':!![]}];}_0x40f4c3=_[_0xdaa5('0x40')]({},_0x40f4c3,_0x3785a2[_0xdaa5('0x42')]);return db['CmList'][_0xdaa5('0x49')](_0x40f4c3)[_0xdaa5('0x2a')](handleEntityNotFound(_0x3a0480,null))[_0xdaa5('0x2a')](respondWithResult(_0x3a0480,null))[_0xdaa5('0x4a')](handleError(_0x3a0480,null));};exports[_0xdaa5('0x4b')]=function(_0x12ff29,_0x4611b4){return db['CmList'][_0xdaa5('0x4b')](_0x12ff29[_0xdaa5('0x4c')],{})['then'](function(_0xf6ec7){var _0x564e77=_0x12ff29[_0xdaa5('0x4d')]['get']({'plain':!![]});if(!_0x564e77)throw new Error(_0xdaa5('0x4e'));if(_0x564e77[_0xdaa5('0x4f')]===_0xdaa5('0x4d')){var _0x55328e=_0xf6ec7[_0xdaa5('0x28')]({'plain':!![]});var _0x25a018='Lists';return db[_0xdaa5('0x50')][_0xdaa5('0x49')]({'where':{'name':_0x25a018,'userProfileId':_0x564e77[_0xdaa5('0x51')]},'raw':!![]})[_0xdaa5('0x2a')](function(_0x1e05ed){if(_0x1e05ed&&_0x1e05ed[_0xdaa5('0x52')]===0x0){return db[_0xdaa5('0x29')][_0xdaa5('0x4b')]({'name':_0x55328e['name'],'resourceId':_0x55328e['id'],'type':_0x1e05ed['name'],'sectionId':_0x1e05ed['id']},{})['then'](function(){return _0xf6ec7;});}else{return _0xf6ec7;}})[_0xdaa5('0x4a')](function(_0x2ac640){logger[_0xdaa5('0x2b')](_0xdaa5('0x53'),_0x2ac640);throw _0x2ac640;});}return _0xf6ec7;})[_0xdaa5('0x2a')](respondWithResult(_0x4611b4,0xc9))[_0xdaa5('0x4a')](handleError(_0x4611b4,null));};exports[_0xdaa5('0x26')]=function(_0x302acd,_0x21eb19){if(_0x302acd['body']['id']){delete _0x302acd['body']['id'];}return db[_0xdaa5('0x30')][_0xdaa5('0x49')]({'where':{'id':_0x302acd[_0xdaa5('0x47')]['id']}})[_0xdaa5('0x2a')](handleEntityNotFound(_0x21eb19,null))[_0xdaa5('0x2a')](saveUpdates(_0x302acd[_0xdaa5('0x4c')],null))[_0xdaa5('0x2a')](respondWithResult(_0x21eb19,null))[_0xdaa5('0x4a')](handleError(_0x21eb19,null));};exports['destroy']=function(_0x31d294,_0x31c00b){return db[_0xdaa5('0x30')]['find']({'where':{'id':_0x31d294['params']['id']}})[_0xdaa5('0x2a')](handleEntityNotFound(_0x31c00b,null))['then'](removeEntity(_0x31c00b,null))[_0xdaa5('0x4a')](handleError(_0x31c00b,null));};exports['describe']=function(_0xbe4b16,_0x14fb82){return db['CmList'][_0xdaa5('0x54')]()[_0xdaa5('0x2a')](respondWithResult(_0x14fb82,null))[_0xdaa5('0x4a')](handleError(_0x14fb82,null));};exports[_0xdaa5('0x55')]=function(_0x3e82cb,_0x2e4b87,_0x4dd66d){if(_0x3e82cb['body']['id']){delete _0x3e82cb['body']['id'];}return db[_0xdaa5('0x30')][_0xdaa5('0x49')]({'where':{'id':_0x3e82cb[_0xdaa5('0x47')]['id']}})[_0xdaa5('0x2a')](handleEntityNotFound(_0x2e4b87,null))[_0xdaa5('0x2a')](function(_0x3ce7fe){if(_0x3ce7fe){_0x3e82cb[_0xdaa5('0x4c')]['ListId']=_0x3ce7fe['id'];return db[_0xdaa5('0x56')][_0xdaa5('0x4b')](_0x3e82cb[_0xdaa5('0x4c')]);}})[_0xdaa5('0x2a')](respondWithResult(_0x2e4b87,null))['catch'](handleError(_0x2e4b87,null));};exports[_0xdaa5('0x57')]=function(_0x22b370,_0x37bef9,_0x276ec2){var _0x19780f={'raw':![],'where':{}};var _0x4101ee={};var _0x30af0c={'count':0x0,'rows':[]};return db[_0xdaa5('0x30')]['findOne']({'where':{'id':_0x22b370[_0xdaa5('0x47')]['id']}})[_0xdaa5('0x2a')](handleEntityNotFound(_0x37bef9,null))['then'](function(_0x658574){if(_0x658574){_0x4101ee[_0xdaa5('0x36')]=_[_0xdaa5('0x34')](db[_0xdaa5('0x56')][_0xdaa5('0x31')]);_0x4101ee[_0xdaa5('0x33')]=_[_0xdaa5('0x34')](_0x22b370[_0xdaa5('0x33')]);_0x4101ee[_0xdaa5('0x3d')]=_['intersection'](_0x4101ee[_0xdaa5('0x36')],_0x4101ee['query']);_0x19780f['attributes']=_['intersection'](_0x4101ee[_0xdaa5('0x36')],qs[_0xdaa5('0x48')](_0x22b370[_0xdaa5('0x33')][_0xdaa5('0x48')]));_0x19780f[_0xdaa5('0x37')]=_0x19780f['attributes']['length']?_0x19780f[_0xdaa5('0x37')]:_0x4101ee[_0xdaa5('0x36')];if(!_0x22b370[_0xdaa5('0x33')]['hasOwnProperty'](_0xdaa5('0x39'))){_0x19780f['limit']=qs[_0xdaa5('0x1f')](_0x22b370['query'][_0xdaa5('0x1f')]);_0x19780f[_0xdaa5('0x1e')]=qs[_0xdaa5('0x1e')](_0x22b370[_0xdaa5('0x33')]['offset']);}_0x19780f['order']=qs[_0xdaa5('0x3b')](_0x22b370[_0xdaa5('0x33')][_0xdaa5('0x3b')]);_0x19780f[_0xdaa5('0x3c')]=qs[_0xdaa5('0x3d')](_['pick'](_0x22b370['query'],_0x4101ee[_0xdaa5('0x3d')]));_0x19780f[_0xdaa5('0x3c')][_0xdaa5('0x58')]=_0x658574['id'];if(_0x22b370['query'][_0xdaa5('0x3f')]){_0x19780f[_0xdaa5('0x3c')]=_[_0xdaa5('0x40')](_0x19780f[_0xdaa5('0x3c')],{'$or':_['map'](_0x19780f[_0xdaa5('0x37')],function(_0x2e7f16){var _0x298648={};_0x298648[_0x2e7f16]={'$like':'%'+_0x22b370[_0xdaa5('0x33')][_0xdaa5('0x3f')]+'%'};return _0x298648;})});}_0x19780f=_['merge']({},_0x19780f,_0x22b370['options']);return db[_0xdaa5('0x56')][_0xdaa5('0x21')]({'where':_0x19780f['where']})[_0xdaa5('0x2a')](function(_0x3f52c2){_0x30af0c[_0xdaa5('0x21')]=_0x3f52c2;if(_0x22b370[_0xdaa5('0x33')][_0xdaa5('0x43')]){_0x19780f['include']=[{'all':!![]}];}return db[_0xdaa5('0x56')]['findAll'](_0x19780f);})[_0xdaa5('0x2a')](function(_0x185f12){_0x30af0c['rows']=_0x185f12;return _0x30af0c;});}})[_0xdaa5('0x2a')](respondWithFilteredResult(_0x37bef9,_0x19780f))['catch'](handleError(_0x37bef9,null));};exports[_0xdaa5('0x59')]=function(_0x14ccd6,_0x4b58b6,_0x52453e){return db[_0xdaa5('0x30')]['find']({'where':{'id':_0x14ccd6['params']['id']}})[_0xdaa5('0x2a')](handleEntityNotFound(_0x4b58b6,null))[_0xdaa5('0x2a')](function(_0x4f9585){if(_0x4f9585){return _0x4f9585['removeDispositions'](_0x14ccd6[_0xdaa5('0x33')][_0xdaa5('0x5a')]);}})[_0xdaa5('0x2a')](respondWithStatusCode(_0x4b58b6,null))[_0xdaa5('0x4a')](handleError(_0x4b58b6,null));};exports[_0xdaa5('0x5b')]=function(_0x9207ba,_0xf60bab,_0x50fb5d){return db[_0xdaa5('0x30')][_0xdaa5('0x49')]({'where':{'id':_0x9207ba[_0xdaa5('0x47')]['id']}})['then'](handleEntityNotFound(_0xf60bab,null))['then'](function(_0xff6b11){if(_0xff6b11){var _0x7cb9f5=[];var _0x55d0e6={'success':[],'errors':[]};return db[_0xdaa5('0x5c')][_0xdaa5('0x54')]()[_0xdaa5('0x2a')](function(_0x2bc50d){if(_0x9207ba[_0xdaa5('0x4c')]['tags']&&_['isArray'](_0x9207ba[_0xdaa5('0x4c')][_0xdaa5('0x5d')])){if(_0x9207ba[_0xdaa5('0x4c')][_0xdaa5('0x5d')]['length']){_0x9207ba['body']['tags']=_0x9207ba['body'][_0xdaa5('0x5d')][_0xdaa5('0x5e')](';')+';';}else{_0x9207ba[_0xdaa5('0x4c')][_0xdaa5('0x5d')]=null;}}else{_0x9207ba[_0xdaa5('0x4c')][_0xdaa5('0x5d')]=null;}if(_0x9207ba[_0xdaa5('0x4c')]&&_[_0xdaa5('0x5f')](_0x9207ba[_0xdaa5('0x4c')])){for(var _0x5aade2=0x0;_0x5aade2<_0x9207ba[_0xdaa5('0x4c')][_0xdaa5('0x38')];_0x5aade2+=0x1){_0x9207ba[_0xdaa5('0x4c')][_0x5aade2]['ListId']=_0x9207ba[_0xdaa5('0x47')]['id'];_0x7cb9f5[_0xdaa5('0x60')](_0x9207ba[_0xdaa5('0x4c')][_0x5aade2]);}return BPromise[_0xdaa5('0x61')](_0x7cb9f5,function(_0x11eaae){return db[_0xdaa5('0x5c')][_0xdaa5('0x4b')](_['omit'](_0x11eaae,['ids','id'])||{},{'fields':_['keys'](_0x2bc50d),'raw':!![]})[_0xdaa5('0x2a')](function(_0x5c7102){_0x55d0e6[_0xdaa5('0x62')][_0xdaa5('0x60')](_0x5c7102['dataValues']);})[_0xdaa5('0x4a')](function(_0x522409){_0x55d0e6[_0xdaa5('0x63')][_0xdaa5('0x60')]({'data':_0x11eaae,'error':_0x522409[_0xdaa5('0x64')]});});})[_0xdaa5('0x2a')](function(_0x3c4538){return _0x55d0e6;})[_0xdaa5('0x4a')](function(_0x109597){return _0x109597;});}else{_0xf60bab[_0xdaa5('0x1c')](0x190)[_0xdaa5('0x1d')]({'message':_0xdaa5('0x65')});}});}})[_0xdaa5('0x2a')](respondWithResult(_0xf60bab,null))[_0xdaa5('0x4a')](handleError(_0xf60bab,null));};exports[_0xdaa5('0x66')]=function(_0x1cde18,_0x1b6860,_0x52c4ef){var _0x20b794;return db['CmList']['find']({'where':{'id':_0x1cde18[_0xdaa5('0x47')]['id']},'include':[{'model':db[_0xdaa5('0x67')],'as':_0xdaa5('0x68')}]})[_0xdaa5('0x2a')](handleEntityNotFound(_0x1b6860,null))['then'](function(_0x4151d9){if(_0x4151d9){_0x20b794=_0x4151d9;return db[_0xdaa5('0x5c')][_0xdaa5('0x31')];}})[_0xdaa5('0x2a')](function(_0x47ffdf){if(_0x47ffdf){var _0x408bae={};var _0x4c78bf={};_0x4c78bf['model']=_[_0xdaa5('0x69')](_[_0xdaa5('0x34')](_0x47ffdf),_['map'](_0x20b794[_0xdaa5('0x68')],function(_0xd0dd9e){return util['format'](_0xdaa5('0x6a'),_0xd0dd9e['id']);}));_0x4c78bf['query']=_[_0xdaa5('0x34')](_0x1cde18[_0xdaa5('0x33')]);_0x4c78bf[_0xdaa5('0x3d')]=_[_0xdaa5('0x35')](_0x4c78bf['model'],_0x4c78bf[_0xdaa5('0x33')]);_0x408bae[_0xdaa5('0x37')]=_[_0xdaa5('0x35')](_0x4c78bf[_0xdaa5('0x36')],qs[_0xdaa5('0x48')](_0x1cde18[_0xdaa5('0x33')]['fields']));_0x408bae[_0xdaa5('0x37')]=_0x408bae[_0xdaa5('0x37')][_0xdaa5('0x38')]?_0x408bae[_0xdaa5('0x37')]:_0x4c78bf[_0xdaa5('0x36')];if(!_0x1cde18[_0xdaa5('0x33')][_0xdaa5('0x6b')](_0xdaa5('0x39'))){_0x408bae['limit']=qs[_0xdaa5('0x1f')](_0x1cde18[_0xdaa5('0x33')]['limit']);_0x408bae[_0xdaa5('0x1e')]=qs[_0xdaa5('0x1e')](_0x1cde18[_0xdaa5('0x33')][_0xdaa5('0x1e')]);}_0x408bae[_0xdaa5('0x3a')]=qs[_0xdaa5('0x3b')](_0x1cde18['query'][_0xdaa5('0x3b')]);_0x408bae[_0xdaa5('0x3c')]=qs[_0xdaa5('0x3d')](_['pick'](_0x1cde18['query'],_0x4c78bf['filters']));_0x408bae[_0xdaa5('0x6c')]=!![];if(_0x1cde18[_0xdaa5('0x33')][_0xdaa5('0x3f')]){_0x408bae[_0xdaa5('0x3c')]=_[_0xdaa5('0x40')](_0x408bae[_0xdaa5('0x3c')],{'$or':_[_0xdaa5('0x2f')](_0x408bae[_0xdaa5('0x37')],function(_0x47be7e){var _0x7be962={};_0x7be962[_0x47be7e]={'$like':'%'+_0x1cde18[_0xdaa5('0x33')]['filter']+'%'};return _0x7be962;})});}_0x408bae=_[_0xdaa5('0x40')]({},_0x408bae,_0x1cde18[_0xdaa5('0x42')]);return _0x20b794['getContacts'](_0x408bae);}})['then'](respondWithResult(_0x1b6860,null))[_0xdaa5('0x4a')](handleError(_0x1b6860,null));};exports[_0xdaa5('0x6d')]=function(_0xe63fb4,_0x57a9f8,_0x5a015e){var _0x3d5c49;var _0x5ba852;var _0x3af45b;var _0xbc70c6=_0xe63fb4[_0xdaa5('0x47')]['id'];csv_results=[];return db['ContactItemType'][_0xdaa5('0x6e')]({'attributes':['id',_0xdaa5('0x2c')],'raw':!![],'order':[_0xdaa5('0x6f')]})[_0xdaa5('0x2a')](function(_0x1326b3){_0x3d5c49=_0x1326b3;var _0x1f8f2d=_['keys'](db['CmContact']['rawAttributes']);return db['CmCustomField'][_0xdaa5('0x6e')]({'raw':!![],'attributes':['id',_0xdaa5('0x70')]})[_0xdaa5('0x2a')](function(_0x84ffaf){_0x5ba852=_0x84ffaf;var _0x1a76d6=squel[_0xdaa5('0x71')]()[_0xdaa5('0x48')](_0x1f8f2d)['from'](_0xdaa5('0x72'),'c')['where'](_0xdaa5('0x73'),_0xbc70c6)[_0xdaa5('0x3c')](_0xdaa5('0x74'))['distinct']();for(var _0x56c2b3=0x0;_0x56c2b3<_0x5ba852[_0xdaa5('0x38')];_0x56c2b3++){_0x1a76d6[_0xdaa5('0x75')](_0xdaa5('0x76')+_0x5ba852[_0x56c2b3]['id'],_0xdaa5('0x77')+_0x5ba852[_0x56c2b3][_0xdaa5('0x70')]);}for(var _0x56c2b3=0x0;_0x56c2b3<_0x3d5c49[_0xdaa5('0x38')];_0x56c2b3++){_0x1a76d6[_0xdaa5('0x75')](squel[_0xdaa5('0x71')]()[_0xdaa5('0x75')](_0xdaa5('0x78'))[_0xdaa5('0x79')](_0xdaa5('0x7a'))[_0xdaa5('0x3c')](_0xdaa5('0x7b'),_0x3d5c49[_0x56c2b3]['id'])[_0xdaa5('0x3c')](_0xdaa5('0x7c')),'additionalPhone_'+_0x3d5c49[_0x56c2b3]['name']);_0x1a76d6[_0xdaa5('0x75')](squel[_0xdaa5('0x71')]()[_0xdaa5('0x75')](_0xdaa5('0x7d'))[_0xdaa5('0x79')](_0xdaa5('0x7a'))[_0xdaa5('0x3c')]('ItemTypeId\x20=\x20?',_0x3d5c49[_0x56c2b3]['id'])[_0xdaa5('0x3c')](_0xdaa5('0x7c')),_0xdaa5('0x7e')+_0x3d5c49[_0x56c2b3][_0xdaa5('0x2c')]);}var _0x39fe17=[];_0x39fe17[_0xdaa5('0x60')](_0x1a76d6['toString']());BPromise[_0xdaa5('0x61')](_0x39fe17,handleQuery)[_0xdaa5('0x2a')](function(_0x3e8847){handleQuery(_0x1a76d6[_0xdaa5('0x7f')]());var _0x4b8da3=csv_results[0x0];if(!_['isEmpty'](_0x4b8da3)){var _0x4bac21=toCsv(_0x4b8da3);var _0xd71c39=Date['now']();fs[_0xdaa5('0x80')](util[_0xdaa5('0x81')]('/tmp/list_%d_%s.csv',_0xbc70c6,_0xd71c39),_0x4bac21);_0x57a9f8['setHeader'](_0xdaa5('0x82'),_0xdaa5('0x83')+util[_0xdaa5('0x81')]('list_%d_%s.csv',_0xbc70c6,_0xd71c39));_0x57a9f8[_0xdaa5('0x84')](_0xdaa5('0x85'),_0xdaa5('0x86'));return _0x57a9f8[_0xdaa5('0x87')](util[_0xdaa5('0x81')]('/tmp/list_%d_%s.csv',_0xbc70c6,_0xd71c39));}else{return _0x57a9f8[_0xdaa5('0x1a')](0xcc);}});});});};exports['addCustomField']=function(_0x5de997,_0x360ed8,_0xac19e0){var _0x5252cf;delete _0x5de997[_0xdaa5('0x4c')]['id'];return db[_0xdaa5('0x30')][_0xdaa5('0x88')]({'where':{'id':_0x5de997[_0xdaa5('0x47')]['id']}})[_0xdaa5('0x2a')](handleEntityNotFound(_0x360ed8,null))[_0xdaa5('0x2a')](function(_0x4c5ab5){if(_0x4c5ab5){return db[_0xdaa5('0x89')]['transaction'](function(_0x12187b){return db[_0xdaa5('0x67')]['create'](_0x5de997[_0xdaa5('0x4c')],{'transaction':_0x12187b})[_0xdaa5('0x2a')](function(_0x407b00){_0x5252cf=_0x407b00;return _0x4c5ab5[_0xdaa5('0x8a')](_0x407b00,{'transaction':_0x12187b});})[_0xdaa5('0x2a')](function(){var _0x130544={'type':db[_0xdaa5('0x8b')][_0xdaa5('0x8c')],'transaction':_0x12187b};switch(_0x5de997[_0xdaa5('0x4c')]['type']){case _0xdaa5('0x8d'):_0x130544[_0xdaa5('0x41')]=db['Sequelize'][_0xdaa5('0x8c')];break;case _0xdaa5('0x8e'):_0x130544[_0xdaa5('0x41')]=db[_0xdaa5('0x8b')]['INTEGER'];break;case'switch':_0x130544[_0xdaa5('0x41')]=db[_0xdaa5('0x8b')][_0xdaa5('0x8f')];_0x130544[_0xdaa5('0x90')]=![];break;default:}return db[_0xdaa5('0x89')][_0xdaa5('0x91')][_0xdaa5('0x92')]('cm_contacts',util[_0xdaa5('0x81')](_0xdaa5('0x93'),_0x5252cf['id']),_0x130544);})[_0xdaa5('0x2a')](function(){return _0x5252cf;});});}})['then'](respondWithResult(_0x360ed8,null))['catch'](handleError(_0x360ed8,null));};exports[_0xdaa5('0x94')]=function(_0x3dddb5,_0x1e838e,_0x1d65cc){var _0x5d5a8e={};var _0x31bf04={};var _0x4a62d4;var _0x192b8d;return db[_0xdaa5('0x30')]['findOne']({'where':{'id':_0x3dddb5[_0xdaa5('0x47')]['id']}})['then'](handleEntityNotFound(_0x1e838e,null))['then'](function(_0x3998ec){if(_0x3998ec){_0x4a62d4=_0x3998ec;_0x31bf04['model']=_[_0xdaa5('0x34')](db[_0xdaa5('0x67')][_0xdaa5('0x31')]);_0x31bf04[_0xdaa5('0x33')]=_[_0xdaa5('0x34')](_0x3dddb5['query']);_0x31bf04['filters']=_[_0xdaa5('0x35')](_0x31bf04[_0xdaa5('0x36')],_0x31bf04['query']);_0x5d5a8e[_0xdaa5('0x37')]=_[_0xdaa5('0x35')](_0x31bf04[_0xdaa5('0x36')],qs[_0xdaa5('0x48')](_0x3dddb5['query'][_0xdaa5('0x48')]));_0x5d5a8e['attributes']=_0x5d5a8e[_0xdaa5('0x37')][_0xdaa5('0x38')]?_0x5d5a8e[_0xdaa5('0x37')]:_0x31bf04['model'];_0x5d5a8e[_0xdaa5('0x3a')]=qs['sort'](_0x3dddb5[_0xdaa5('0x33')][_0xdaa5('0x3b')]);_0x5d5a8e[_0xdaa5('0x3c')]=qs['filters'](_[_0xdaa5('0x3e')](_0x3dddb5[_0xdaa5('0x33')],_0x31bf04['filters']));_0x5d5a8e[_0xdaa5('0x3c')]=_['merge'](_0x5d5a8e[_0xdaa5('0x3c')],{'$or':[{'ListId':_0x3998ec['id']},{'ListId':null}]});if(_0x3dddb5['query'][_0xdaa5('0x3f')]){_0x5d5a8e[_0xdaa5('0x3c')]=_['merge'](_0x5d5a8e['where'],{'$or':_[_0xdaa5('0x2f')](_0x5d5a8e[_0xdaa5('0x37')],function(_0x3f62fb){var _0x65faf={};_0x65faf[_0x3f62fb]={'$like':'%'+_0x3dddb5[_0xdaa5('0x33')][_0xdaa5('0x3f')]+'%'};return _0x65faf;})});}_0x5d5a8e=_[_0xdaa5('0x40')]({},_0x5d5a8e,_0x3dddb5[_0xdaa5('0x42')]);return db['CmCustomField'][_0xdaa5('0x95')](_0x5d5a8e);}})[_0xdaa5('0x2a')](respondWithResult(_0x1e838e,null))['catch'](handleError(_0x1e838e,null));};exports[_0xdaa5('0x96')]=function(_0x480a43,_0x8d3009){return db[_0xdaa5('0x67')][_0xdaa5('0x95')]({'where':{'ListId':null}})['then'](handleEntityNotFound(_0x8d3009,null))[_0xdaa5('0x2a')](function(_0x2700e3){return _0x2700e3;})[_0xdaa5('0x2a')](respondWithResult(_0x8d3009,null))[_0xdaa5('0x4a')](handleError(_0x8d3009,null));};exports['addAgents']=function(_0x3275a5,_0x335e2c,_0x1b7b0e){return db['CmList'][_0xdaa5('0x49')]({'where':{'id':_0x3275a5[_0xdaa5('0x47')]['id']}})['then'](handleEntityNotFound(_0x335e2c,null))[_0xdaa5('0x2a')](function(_0x2ba3d8){if(_0x2ba3d8){return _0x2ba3d8['addAgents'](_0x3275a5[_0xdaa5('0x4c')][_0xdaa5('0x5a')],_[_0xdaa5('0x97')](_0x3275a5[_0xdaa5('0x4c')],[_0xdaa5('0x5a'),'id'])||{})['spread'](function(_0x293391){for(var _0x574cd2=0x0;_0x574cd2<_0x3275a5[_0xdaa5('0x4c')][_0xdaa5('0x5a')][_0xdaa5('0x38')];_0x574cd2+=0x1){socket[_0xdaa5('0x98')](_0xdaa5('0x99'),{'UserId':Number(_0x3275a5['body'][_0xdaa5('0x5a')][_0x574cd2]),'CmListId':Number(_0x3275a5[_0xdaa5('0x47')]['id'])});}return _0x293391;});}})[_0xdaa5('0x2a')](respondWithResult(_0x335e2c,null))['catch'](handleError(_0x335e2c,null));};exports[_0xdaa5('0x9a')]=function(_0x3e0c17,_0x227a40,_0xbf5f53){return db[_0xdaa5('0x30')][_0xdaa5('0x49')]({'where':{'id':_0x3e0c17[_0xdaa5('0x47')]['id']}})[_0xdaa5('0x2a')](handleEntityNotFound(_0x227a40,null))[_0xdaa5('0x2a')](function(_0x3c249f){if(_0x3c249f){return _0x3c249f['removeAgents'](_0x3e0c17[_0xdaa5('0x33')][_0xdaa5('0x5a')])[_0xdaa5('0x2a')](function(){if(_['isArray'](_0x3e0c17[_0xdaa5('0x33')]['ids'])){for(var _0xbb71ba=0x0;_0xbb71ba<_0x3e0c17[_0xdaa5('0x33')][_0xdaa5('0x5a')]['length'];_0xbb71ba+=0x1){socket[_0xdaa5('0x98')](_0xdaa5('0x9b'),{'UserId':Number(_0x3e0c17[_0xdaa5('0x33')]['ids'][_0xbb71ba]),'CmListId':Number(_0x3e0c17['params']['id'])});}}else{socket[_0xdaa5('0x98')](_0xdaa5('0x9b'),{'UserId':Number(_0x3e0c17[_0xdaa5('0x33')]['ids']),'CmListId':Number(_0x3e0c17['params']['id'])});}});}})[_0xdaa5('0x2a')](respondWithStatusCode(_0x227a40,null))[_0xdaa5('0x4a')](handleError(_0x227a40,null));};exports[_0xdaa5('0x9c')]=function(_0x3f017f,_0x49cd2c,_0x5d573e){var _0x113a10={};var _0x5aeb2b={};var _0x443445;var _0x25d197;return db['CmList'][_0xdaa5('0x88')]({'where':{'id':_0x3f017f[_0xdaa5('0x47')]['id']}})[_0xdaa5('0x2a')](handleEntityNotFound(_0x49cd2c,null))['then'](function(_0x1b812e){if(_0x1b812e){_0x443445=_0x1b812e;_0x5aeb2b['model']=_[_0xdaa5('0x34')](db[_0xdaa5('0x9d')][_0xdaa5('0x31')]);_0x5aeb2b['query']=_[_0xdaa5('0x34')](_0x3f017f[_0xdaa5('0x33')]);_0x5aeb2b['filters']=_[_0xdaa5('0x35')](_0x5aeb2b['model'],_0x5aeb2b[_0xdaa5('0x33')]);_0x113a10[_0xdaa5('0x37')]=_['intersection'](_0x5aeb2b[_0xdaa5('0x36')],qs[_0xdaa5('0x48')](_0x3f017f[_0xdaa5('0x33')]['fields']));_0x113a10[_0xdaa5('0x37')]=_0x113a10[_0xdaa5('0x37')][_0xdaa5('0x38')]?_0x113a10['attributes']:_0x5aeb2b['model'];_0x113a10[_0xdaa5('0x3a')]=qs[_0xdaa5('0x3b')](_0x3f017f[_0xdaa5('0x33')][_0xdaa5('0x3b')]);_0x113a10[_0xdaa5('0x3c')]=qs[_0xdaa5('0x3d')](_[_0xdaa5('0x3e')](_0x3f017f[_0xdaa5('0x33')],_0x5aeb2b['filters']));if(_0x3f017f[_0xdaa5('0x33')]['filter']){_0x113a10[_0xdaa5('0x3c')]=_[_0xdaa5('0x40')](_0x113a10[_0xdaa5('0x3c')],{'$or':_[_0xdaa5('0x2f')](_0x113a10[_0xdaa5('0x37')],function(_0x23a7d5){var _0x3ddcdf={};_0x3ddcdf[_0x23a7d5]={'$like':'%'+_0x3f017f[_0xdaa5('0x33')][_0xdaa5('0x3f')]+'%'};return _0x3ddcdf;})});}_0x113a10=_['merge']({},_0x113a10,_0x3f017f[_0xdaa5('0x42')]);return _0x443445[_0xdaa5('0x9c')](_0x113a10);}})[_0xdaa5('0x2a')](function(_0x2138fd){if(_0x2138fd){_0x25d197=_0x2138fd[_0xdaa5('0x38')];if(!_0x3f017f['query'][_0xdaa5('0x6b')]('nolimit')){_0x113a10[_0xdaa5('0x1f')]=qs['limit'](_0x3f017f[_0xdaa5('0x33')][_0xdaa5('0x1f')]);_0x113a10[_0xdaa5('0x1e')]=qs[_0xdaa5('0x1e')](_0x3f017f[_0xdaa5('0x33')]['offset']);}return _0x443445[_0xdaa5('0x9c')](_0x113a10);}})[_0xdaa5('0x2a')](function(_0x243936){if(_0x243936){return _0x243936?{'count':_0x25d197,'rows':_0x243936}:null;}})[_0xdaa5('0x2a')](respondWithResult(_0x49cd2c,null))['catch'](handleError(_0x49cd2c,null));};function handleQuery(_0x1d66c2){logger['info'](_0x1d66c2);return db[_0xdaa5('0x89')]['query'](_0x1d66c2)['spread'](function(_0x519dca){csv_results[_0xdaa5('0x60')](_0x519dca);})[_0xdaa5('0x4a')](function(_0x217b90){logger[_0xdaa5('0x2b')](_0x217b90[_0xdaa5('0x64')]);});}
\ No newline at end of file
+var _0x40df=['save','update','then','get','Lists','UserProfileResource','destroy','error','stack','name','index','map','CmList','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','merge','VIRTUAL','filter','includeAll','include','findAll','rows','catch','show','keys','options','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','describe','addDisposition','getDispositions','Disposition','nolimit','ListId','removeDispositions','ids','addContacts','CmContact','tags','join','isArray','each','omit','success','push','dataValues','message','json','Malformed\x20request\x20syntax','getContacts','CmCustomField','CustomFields','format','cf_%d','raw','getContactsCsv','ContactItemType','OrderBy','select','from','cm_contacts','c.ListId\x20=\x20?','c.deletedAt\x20is\x20null','distinct','c.cf_','alias','item','cm_contact_has_items','ItemTypeId\x20=\x20?','additionalPhone_','field','description','CmContactId\x20=\x20c.id','toString','isEmpty','writeFileSync','/tmp/list_%d_%s.csv','setHeader','Content-disposition','attachment;\x20filename=','Content-type','text/csv','download','addCustomField','transaction','Sequelize','TEXT','text','number','INTEGER','switch','BOOLEAN','defaultValue','queryInterface','addColumn','cf_%s','findOne','findAndCountAll','getGlobalCustomFields','addAgents','emit','removeAgents','userCmList:remove','getAgents','User','info','spread','eml-format','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','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','socket.io-emitter','./cmList.socket','sendStatus','status','undefined','limit','count','offset','set','Content-Range','apply'];(function(_0x5be8d1,_0x251634){var _0xc65963=function(_0x560d53){while(--_0x560d53){_0x5be8d1['push'](_0x5be8d1['shift']());}};_0xc65963(++_0x251634);}(_0x40df,0x1c9));var _0xf40d=function(_0x32efc5,_0x1796c7){_0x32efc5=_0x32efc5-0x0;var _0xa65dab=_0x40df[_0x32efc5];return _0xa65dab;};'use strict';var emlformat=require(_0xf40d('0x0'));var rimraf=require(_0xf40d('0x1'));var zipdir=require(_0xf40d('0x2'));var jsonpatch=require(_0xf40d('0x3'));var rp=require(_0xf40d('0x4'));var moment=require(_0xf40d('0x5'));var BPromise=require(_0xf40d('0x6'));var Mustache=require(_0xf40d('0x7'));var util=require(_0xf40d('0x8'));var path=require(_0xf40d('0x9'));var sox=require(_0xf40d('0xa'));var csv=require(_0xf40d('0xb'));var ejs=require(_0xf40d('0xc'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf40d('0xd'));var squel=require(_0xf40d('0xe'));var crypto=require(_0xf40d('0xf'));var jsforce=require('jsforce');var deskjs=require(_0xf40d('0x10'));var toCsv=require(_0xf40d('0xb'));var querystring=require(_0xf40d('0x11'));var Papa=require('papaparse');var Redis=require(_0xf40d('0x12'));var authService=require(_0xf40d('0x13'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf40d('0x14'));var logger=require('../../config/logger')('api');var utils=require(_0xf40d('0x15'));var config=require(_0xf40d('0x16'));var licenseUtil=require(_0xf40d('0x17'));var db=require(_0xf40d('0x18'))['db'];var csv_results;config['redis']=_[_0xf40d('0x19')](config[_0xf40d('0x1a')],{'host':'localhost','port':0x18eb});var socket=require(_0xf40d('0x1b'))(new Redis(config[_0xf40d('0x1a')]));require(_0xf40d('0x1c'))['register'](socket);function respondWithStatusCode(_0x554a50,_0xf8f6f4){_0xf8f6f4=_0xf8f6f4||0xcc;return function(_0x1a8f12){if(_0x1a8f12){return _0x554a50[_0xf40d('0x1d')](_0xf8f6f4);}return _0x554a50['status'](_0xf8f6f4)['end']();};}function respondWithResult(_0x33774b,_0x1e2f50){_0x1e2f50=_0x1e2f50||0xc8;return function(_0x41b64d){if(_0x41b64d){return _0x33774b[_0xf40d('0x1e')](_0x1e2f50)['json'](_0x41b64d);}};}function respondWithFilteredResult(_0x248486,_0xfdbb3d){return function(_0x526226){if(_0x526226){var _0xb4df18=typeof _0xfdbb3d['offset']===_0xf40d('0x1f')&&typeof _0xfdbb3d[_0xf40d('0x20')]===_0xf40d('0x1f');var _0x4abbba=_0x526226[_0xf40d('0x21')];var _0x4e22e6=_0xb4df18?0x0:_0xfdbb3d[_0xf40d('0x22')];var _0x169e99=_0xb4df18?_0x526226[_0xf40d('0x21')]:_0xfdbb3d['offset']+_0xfdbb3d[_0xf40d('0x20')];var _0x6f7ed9;if(_0x169e99>=_0x4abbba){_0x169e99=_0x4abbba;_0x6f7ed9=0xc8;}else{_0x6f7ed9=0xce;}_0x248486[_0xf40d('0x1e')](_0x6f7ed9);return _0x248486[_0xf40d('0x23')](_0xf40d('0x24'),_0x4e22e6+'-'+_0x169e99+'/'+_0x4abbba)['json'](_0x526226);}return null;};}function patchUpdates(_0x269b9b){return function(_0x258296){try{jsonpatch[_0xf40d('0x25')](_0x258296,_0x269b9b,!![]);}catch(_0xda6402){return BPromise['reject'](_0xda6402);}return _0x258296[_0xf40d('0x26')]();};}function saveUpdates(_0x20dd51,_0x1daf58){return function(_0x2d1d4e){if(_0x2d1d4e){return _0x2d1d4e[_0xf40d('0x27')](_0x20dd51)[_0xf40d('0x28')](function(_0x53075c){return _0x53075c;});}return null;};}function removeEntity(_0x1d80cb,_0x1a352e){return function(_0x190430){if(_0x190430){return _0x190430['destroy']()[_0xf40d('0x28')](function(){var _0x5b437a=_0x190430[_0xf40d('0x29')]({'plain':!![]});var _0x2dbcd5=_0xf40d('0x2a');return db[_0xf40d('0x2b')][_0xf40d('0x2c')]({'where':{'type':_0x2dbcd5,'resourceId':_0x5b437a['id']}})['then'](function(){return _0x190430;});})[_0xf40d('0x28')](function(){_0x1d80cb[_0xf40d('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4f4ccc,_0x709afb){return function(_0x26310c){if(!_0x26310c){_0x4f4ccc['sendStatus'](0x194);}return _0x26310c;};}function handleError(_0x567bde,_0x28b147){_0x28b147=_0x28b147||0x1f4;return function(_0x2d2df3){logger[_0xf40d('0x2d')](_0x2d2df3[_0xf40d('0x2e')]);if(_0x2d2df3[_0xf40d('0x2f')]){delete _0x2d2df3['name'];}_0x567bde['status'](_0x28b147)['send'](_0x2d2df3);};}exports[_0xf40d('0x30')]=function(_0x8fb013,_0x59af1d){var _0x31ecfc={},_0x23a147={},_0x4a1c5c={'count':0x0,'rows':[]};var _0x5ebd0f=_[_0xf40d('0x31')](db[_0xf40d('0x32')][_0xf40d('0x33')],function(_0x342a47){return{'name':_0x342a47[_0xf40d('0x34')],'type':_0x342a47[_0xf40d('0x35')][_0xf40d('0x36')]};});_0x23a147[_0xf40d('0x37')]=_[_0xf40d('0x31')](_0x5ebd0f,_0xf40d('0x2f'));_0x23a147[_0xf40d('0x38')]=_['keys'](_0x8fb013['query']);_0x23a147[_0xf40d('0x39')]=_[_0xf40d('0x3a')](_0x23a147[_0xf40d('0x37')],_0x23a147[_0xf40d('0x38')]);_0x31ecfc[_0xf40d('0x3b')]=_[_0xf40d('0x3a')](_0x23a147['model'],qs['fields'](_0x8fb013[_0xf40d('0x38')][_0xf40d('0x3c')]));_0x31ecfc[_0xf40d('0x3b')]=_0x31ecfc[_0xf40d('0x3b')][_0xf40d('0x3d')]?_0x31ecfc[_0xf40d('0x3b')]:_0x23a147[_0xf40d('0x37')];if(!_0x8fb013[_0xf40d('0x38')][_0xf40d('0x3e')]('nolimit')){_0x31ecfc[_0xf40d('0x20')]=qs[_0xf40d('0x20')](_0x8fb013[_0xf40d('0x38')][_0xf40d('0x20')]);_0x31ecfc['offset']=qs[_0xf40d('0x22')](_0x8fb013[_0xf40d('0x38')][_0xf40d('0x22')]);}_0x31ecfc[_0xf40d('0x3f')]=qs[_0xf40d('0x40')](_0x8fb013[_0xf40d('0x38')][_0xf40d('0x40')]);_0x31ecfc[_0xf40d('0x41')]=qs[_0xf40d('0x39')](_[_0xf40d('0x42')](_0x8fb013[_0xf40d('0x38')],_0x23a147[_0xf40d('0x39')]),_0x5ebd0f);if(_0x8fb013['query']['filter']){_0x31ecfc[_0xf40d('0x41')]=_[_0xf40d('0x43')](_0x31ecfc[_0xf40d('0x41')],{'$or':_[_0xf40d('0x31')](_0x5ebd0f,function(_0x37d850){if(_0x37d850[_0xf40d('0x35')]!==_0xf40d('0x44')){var _0x5b82cf={};_0x5b82cf[_0x37d850[_0xf40d('0x2f')]]={'$like':'%'+_0x8fb013[_0xf40d('0x38')][_0xf40d('0x45')]+'%'};return _0x5b82cf;}})});}_0x31ecfc=_[_0xf40d('0x43')]({},_0x31ecfc,_0x8fb013['options']);var _0x458a5b={'where':_0x31ecfc[_0xf40d('0x41')]};return db['CmList'][_0xf40d('0x21')](_0x458a5b)[_0xf40d('0x28')](function(_0x4caa26){_0x4a1c5c[_0xf40d('0x21')]=_0x4caa26;if(_0x8fb013[_0xf40d('0x38')][_0xf40d('0x46')]){_0x31ecfc[_0xf40d('0x47')]=[{'all':!![]}];}return db[_0xf40d('0x32')][_0xf40d('0x48')](_0x31ecfc);})['then'](function(_0x3ecdd1){_0x4a1c5c[_0xf40d('0x49')]=_0x3ecdd1;return _0x4a1c5c;})[_0xf40d('0x28')](respondWithFilteredResult(_0x59af1d,_0x31ecfc))[_0xf40d('0x4a')](handleError(_0x59af1d,null));};exports[_0xf40d('0x4b')]=function(_0x6a97c0,_0x25a846){var _0x3128c1={'raw':![],'where':{'id':_0x6a97c0['params']['id']}},_0x3f8545={};_0x3f8545[_0xf40d('0x37')]=_[_0xf40d('0x4c')](db['CmList'][_0xf40d('0x33')]);_0x3f8545['query']=_[_0xf40d('0x4c')](_0x6a97c0['query']);_0x3f8545[_0xf40d('0x39')]=_['intersection'](_0x3f8545['model'],_0x3f8545['query']);_0x3128c1[_0xf40d('0x3b')]=_[_0xf40d('0x3a')](_0x3f8545[_0xf40d('0x37')],qs[_0xf40d('0x3c')](_0x6a97c0['query'][_0xf40d('0x3c')]));_0x3128c1[_0xf40d('0x3b')]=_0x3128c1[_0xf40d('0x3b')]['length']?_0x3128c1[_0xf40d('0x3b')]:_0x3f8545['model'];if(_0x6a97c0[_0xf40d('0x38')][_0xf40d('0x46')]){_0x3128c1[_0xf40d('0x47')]=[{'all':!![]}];}_0x3128c1=_['merge']({},_0x3128c1,_0x6a97c0[_0xf40d('0x4d')]);return db[_0xf40d('0x32')][_0xf40d('0x4e')](_0x3128c1)['then'](handleEntityNotFound(_0x25a846,null))[_0xf40d('0x28')](respondWithResult(_0x25a846,null))[_0xf40d('0x4a')](handleError(_0x25a846,null));};exports['create']=function(_0x1a610e,_0x1debf4){return db[_0xf40d('0x32')][_0xf40d('0x4f')](_0x1a610e[_0xf40d('0x50')],{})['then'](function(_0x1f2e55){var _0x419153=_0x1a610e['user'][_0xf40d('0x29')]({'plain':!![]});if(!_0x419153)throw new Error(_0xf40d('0x51'));if(_0x419153['role']===_0xf40d('0x52')){var _0x53b8eb=_0x1f2e55[_0xf40d('0x29')]({'plain':!![]});var _0x345873='Lists';return db['UserProfileSection'][_0xf40d('0x4e')]({'where':{'name':_0x345873,'userProfileId':_0x419153['userProfileId']},'raw':!![]})[_0xf40d('0x28')](function(_0x3547e4){if(_0x3547e4&&_0x3547e4[_0xf40d('0x53')]===0x0){return db[_0xf40d('0x2b')]['create']({'name':_0x53b8eb['name'],'resourceId':_0x53b8eb['id'],'type':_0x3547e4[_0xf40d('0x2f')],'sectionId':_0x3547e4['id']},{})[_0xf40d('0x28')](function(){return _0x1f2e55;});}else{return _0x1f2e55;}})[_0xf40d('0x4a')](function(_0x4a9953){logger[_0xf40d('0x2d')](_0xf40d('0x54'),_0x4a9953);throw _0x4a9953;});}return _0x1f2e55;})[_0xf40d('0x28')](respondWithResult(_0x1debf4,0xc9))[_0xf40d('0x4a')](handleError(_0x1debf4,null));};exports[_0xf40d('0x27')]=function(_0x27c735,_0x5430c7){if(_0x27c735[_0xf40d('0x50')]['id']){delete _0x27c735[_0xf40d('0x50')]['id'];}return db['CmList']['find']({'where':{'id':_0x27c735[_0xf40d('0x55')]['id']}})['then'](handleEntityNotFound(_0x5430c7,null))[_0xf40d('0x28')](saveUpdates(_0x27c735[_0xf40d('0x50')],null))[_0xf40d('0x28')](respondWithResult(_0x5430c7,null))[_0xf40d('0x4a')](handleError(_0x5430c7,null));};exports[_0xf40d('0x2c')]=function(_0x22216f,_0x1614a0){return db[_0xf40d('0x32')][_0xf40d('0x4e')]({'where':{'id':_0x22216f[_0xf40d('0x55')]['id']}})['then'](handleEntityNotFound(_0x1614a0,null))[_0xf40d('0x28')](removeEntity(_0x1614a0,null))[_0xf40d('0x4a')](handleError(_0x1614a0,null));};exports[_0xf40d('0x56')]=function(_0xad6712,_0x1b858a){return db[_0xf40d('0x32')]['describe']()[_0xf40d('0x28')](respondWithResult(_0x1b858a,null))[_0xf40d('0x4a')](handleError(_0x1b858a,null));};exports[_0xf40d('0x57')]=function(_0x3fa25a,_0x2884f4,_0x1de8ec){if(_0x3fa25a[_0xf40d('0x50')]['id']){delete _0x3fa25a[_0xf40d('0x50')]['id'];}return db[_0xf40d('0x32')][_0xf40d('0x4e')]({'where':{'id':_0x3fa25a['params']['id']}})['then'](handleEntityNotFound(_0x2884f4,null))['then'](function(_0x15434a){if(_0x15434a){_0x3fa25a[_0xf40d('0x50')]['ListId']=_0x15434a['id'];return db['Disposition'][_0xf40d('0x4f')](_0x3fa25a['body']);}})['then'](respondWithResult(_0x2884f4,null))[_0xf40d('0x4a')](handleError(_0x2884f4,null));};exports[_0xf40d('0x58')]=function(_0x12201a,_0x3b17e9,_0x55c6f9){var _0x111550={'raw':![],'where':{}};var _0x15fa4a={};var _0x536384={'count':0x0,'rows':[]};return db[_0xf40d('0x32')]['findOne']({'where':{'id':_0x12201a['params']['id']}})[_0xf40d('0x28')](handleEntityNotFound(_0x3b17e9,null))[_0xf40d('0x28')](function(_0x2aa8bb){if(_0x2aa8bb){_0x15fa4a[_0xf40d('0x37')]=_['keys'](db[_0xf40d('0x59')][_0xf40d('0x33')]);_0x15fa4a[_0xf40d('0x38')]=_[_0xf40d('0x4c')](_0x12201a[_0xf40d('0x38')]);_0x15fa4a[_0xf40d('0x39')]=_[_0xf40d('0x3a')](_0x15fa4a[_0xf40d('0x37')],_0x15fa4a[_0xf40d('0x38')]);_0x111550[_0xf40d('0x3b')]=_[_0xf40d('0x3a')](_0x15fa4a[_0xf40d('0x37')],qs[_0xf40d('0x3c')](_0x12201a[_0xf40d('0x38')]['fields']));_0x111550[_0xf40d('0x3b')]=_0x111550[_0xf40d('0x3b')][_0xf40d('0x3d')]?_0x111550['attributes']:_0x15fa4a[_0xf40d('0x37')];if(!_0x12201a[_0xf40d('0x38')][_0xf40d('0x3e')](_0xf40d('0x5a'))){_0x111550[_0xf40d('0x20')]=qs['limit'](_0x12201a[_0xf40d('0x38')][_0xf40d('0x20')]);_0x111550[_0xf40d('0x22')]=qs[_0xf40d('0x22')](_0x12201a[_0xf40d('0x38')][_0xf40d('0x22')]);}_0x111550[_0xf40d('0x3f')]=qs[_0xf40d('0x40')](_0x12201a['query'][_0xf40d('0x40')]);_0x111550[_0xf40d('0x41')]=qs['filters'](_[_0xf40d('0x42')](_0x12201a['query'],_0x15fa4a[_0xf40d('0x39')]));_0x111550[_0xf40d('0x41')][_0xf40d('0x5b')]=_0x2aa8bb['id'];if(_0x12201a[_0xf40d('0x38')]['filter']){_0x111550[_0xf40d('0x41')]=_[_0xf40d('0x43')](_0x111550['where'],{'$or':_[_0xf40d('0x31')](_0x111550[_0xf40d('0x3b')],function(_0x2e0351){var _0x3faa86={};_0x3faa86[_0x2e0351]={'$like':'%'+_0x12201a[_0xf40d('0x38')]['filter']+'%'};return _0x3faa86;})});}_0x111550=_[_0xf40d('0x43')]({},_0x111550,_0x12201a[_0xf40d('0x4d')]);return db[_0xf40d('0x59')][_0xf40d('0x21')]({'where':_0x111550[_0xf40d('0x41')]})['then'](function(_0x1da12e){_0x536384[_0xf40d('0x21')]=_0x1da12e;if(_0x12201a[_0xf40d('0x38')][_0xf40d('0x46')]){_0x111550[_0xf40d('0x47')]=[{'all':!![]}];}return db['Disposition'][_0xf40d('0x48')](_0x111550);})[_0xf40d('0x28')](function(_0x5e0103){_0x536384['rows']=_0x5e0103;return _0x536384;});}})['then'](respondWithFilteredResult(_0x3b17e9,_0x111550))[_0xf40d('0x4a')](handleError(_0x3b17e9,null));};exports['removeDispositions']=function(_0x3dc93f,_0x2eee96,_0x226dff){return db[_0xf40d('0x32')][_0xf40d('0x4e')]({'where':{'id':_0x3dc93f[_0xf40d('0x55')]['id']}})[_0xf40d('0x28')](handleEntityNotFound(_0x2eee96,null))[_0xf40d('0x28')](function(_0x5971c5){if(_0x5971c5){return _0x5971c5[_0xf40d('0x5c')](_0x3dc93f[_0xf40d('0x38')][_0xf40d('0x5d')]);}})[_0xf40d('0x28')](respondWithStatusCode(_0x2eee96,null))[_0xf40d('0x4a')](handleError(_0x2eee96,null));};exports[_0xf40d('0x5e')]=function(_0x3e3d57,_0x3c41e3,_0x11cd0a){return db[_0xf40d('0x32')][_0xf40d('0x4e')]({'where':{'id':_0x3e3d57[_0xf40d('0x55')]['id']}})['then'](handleEntityNotFound(_0x3c41e3,null))[_0xf40d('0x28')](function(_0xf3b6fb){if(_0xf3b6fb){var _0x3bf9d6=[];var _0x329df={'success':[],'errors':[]};return db[_0xf40d('0x5f')]['describe']()[_0xf40d('0x28')](function(_0x5d6e40){if(_0x3e3d57[_0xf40d('0x50')][_0xf40d('0x60')]&&_['isArray'](_0x3e3d57[_0xf40d('0x50')]['tags'])){if(_0x3e3d57[_0xf40d('0x50')][_0xf40d('0x60')][_0xf40d('0x3d')]){_0x3e3d57[_0xf40d('0x50')]['tags']=_0x3e3d57['body'][_0xf40d('0x60')][_0xf40d('0x61')](';')+';';}else{_0x3e3d57['body'][_0xf40d('0x60')]=null;}}else{_0x3e3d57[_0xf40d('0x50')][_0xf40d('0x60')]=null;}if(_0x3e3d57[_0xf40d('0x50')]&&_[_0xf40d('0x62')](_0x3e3d57[_0xf40d('0x50')])){for(var _0x11c9ae=0x0;_0x11c9ae<_0x3e3d57['body'][_0xf40d('0x3d')];_0x11c9ae+=0x1){_0x3e3d57['body'][_0x11c9ae]['ListId']=_0x3e3d57[_0xf40d('0x55')]['id'];_0x3bf9d6['push'](_0x3e3d57[_0xf40d('0x50')][_0x11c9ae]);}return BPromise[_0xf40d('0x63')](_0x3bf9d6,function(_0x367a1c){return db[_0xf40d('0x5f')][_0xf40d('0x4f')](_[_0xf40d('0x64')](_0x367a1c,[_0xf40d('0x5d'),'id'])||{},{'fields':_[_0xf40d('0x4c')](_0x5d6e40),'raw':!![]})['then'](function(_0x3c485b){_0x329df[_0xf40d('0x65')][_0xf40d('0x66')](_0x3c485b[_0xf40d('0x67')]);})[_0xf40d('0x4a')](function(_0x3f274a){_0x329df['errors'][_0xf40d('0x66')]({'data':_0x367a1c,'error':_0x3f274a[_0xf40d('0x68')]});});})[_0xf40d('0x28')](function(_0x1a581e){return _0x329df;})['catch'](function(_0x15de4d){return _0x15de4d;});}else{_0x3c41e3[_0xf40d('0x1e')](0x190)[_0xf40d('0x69')]({'message':_0xf40d('0x6a')});}});}})['then'](respondWithResult(_0x3c41e3,null))[_0xf40d('0x4a')](handleError(_0x3c41e3,null));};exports[_0xf40d('0x6b')]=function(_0x29d809,_0x3508ab,_0x43e99a){var _0x38e674;return db[_0xf40d('0x32')]['find']({'where':{'id':_0x29d809['params']['id']},'include':[{'model':db[_0xf40d('0x6c')],'as':_0xf40d('0x6d')}]})[_0xf40d('0x28')](handleEntityNotFound(_0x3508ab,null))[_0xf40d('0x28')](function(_0x24079c){if(_0x24079c){_0x38e674=_0x24079c;return db[_0xf40d('0x5f')]['rawAttributes'];}})[_0xf40d('0x28')](function(_0x713bb0){if(_0x713bb0){var _0x489025={};var _0xff9956={};_0xff9956[_0xf40d('0x37')]=_['concat'](_['keys'](_0x713bb0),_[_0xf40d('0x31')](_0x38e674[_0xf40d('0x6d')],function(_0x2fce9d){return util[_0xf40d('0x6e')](_0xf40d('0x6f'),_0x2fce9d['id']);}));_0xff9956[_0xf40d('0x38')]=_['keys'](_0x29d809[_0xf40d('0x38')]);_0xff9956['filters']=_['intersection'](_0xff9956[_0xf40d('0x37')],_0xff9956['query']);_0x489025['attributes']=_[_0xf40d('0x3a')](_0xff9956['model'],qs['fields'](_0x29d809[_0xf40d('0x38')]['fields']));_0x489025[_0xf40d('0x3b')]=_0x489025[_0xf40d('0x3b')]['length']?_0x489025['attributes']:_0xff9956[_0xf40d('0x37')];if(!_0x29d809['query'][_0xf40d('0x3e')](_0xf40d('0x5a'))){_0x489025[_0xf40d('0x20')]=qs[_0xf40d('0x20')](_0x29d809[_0xf40d('0x38')][_0xf40d('0x20')]);_0x489025[_0xf40d('0x22')]=qs['offset'](_0x29d809['query'][_0xf40d('0x22')]);}_0x489025[_0xf40d('0x3f')]=qs['sort'](_0x29d809['query'][_0xf40d('0x40')]);_0x489025['where']=qs[_0xf40d('0x39')](_[_0xf40d('0x42')](_0x29d809[_0xf40d('0x38')],_0xff9956[_0xf40d('0x39')]));_0x489025[_0xf40d('0x70')]=!![];if(_0x29d809[_0xf40d('0x38')][_0xf40d('0x45')]){_0x489025[_0xf40d('0x41')]=_[_0xf40d('0x43')](_0x489025['where'],{'$or':_[_0xf40d('0x31')](_0x489025[_0xf40d('0x3b')],function(_0x45b652){var _0x300c41={};_0x300c41[_0x45b652]={'$like':'%'+_0x29d809[_0xf40d('0x38')][_0xf40d('0x45')]+'%'};return _0x300c41;})});}_0x489025=_[_0xf40d('0x43')]({},_0x489025,_0x29d809[_0xf40d('0x4d')]);return _0x38e674[_0xf40d('0x6b')](_0x489025);}})[_0xf40d('0x28')](respondWithResult(_0x3508ab,null))[_0xf40d('0x4a')](handleError(_0x3508ab,null));};exports[_0xf40d('0x71')]=function(_0x2335c6,_0x112b39,_0x34fe42){var _0x45777b;var _0x4eb8e7;var _0x25a9cd;var _0x4640f1=_0x2335c6['params']['id'];csv_results=[];return db[_0xf40d('0x72')][_0xf40d('0x48')]({'attributes':['id',_0xf40d('0x2f')],'raw':!![],'order':[_0xf40d('0x73')]})[_0xf40d('0x28')](function(_0x507087){_0x45777b=_0x507087;var _0x37177a=_[_0xf40d('0x4c')](db['CmContact'][_0xf40d('0x33')]);return db[_0xf40d('0x6c')][_0xf40d('0x48')]({'raw':!![],'attributes':['id','alias']})['then'](function(_0x23654){_0x4eb8e7=_0x23654;var _0x28632d=squel[_0xf40d('0x74')]()[_0xf40d('0x3c')](_0x37177a)[_0xf40d('0x75')](_0xf40d('0x76'),'c')[_0xf40d('0x41')](_0xf40d('0x77'),_0x4640f1)[_0xf40d('0x41')](_0xf40d('0x78'))[_0xf40d('0x79')]();for(var _0x19ac58=0x0;_0x19ac58<_0x4eb8e7[_0xf40d('0x3d')];_0x19ac58++){_0x28632d['field'](_0xf40d('0x7a')+_0x4eb8e7[_0x19ac58]['id'],'customField_'+_0x4eb8e7[_0x19ac58][_0xf40d('0x7b')]);}for(var _0x19ac58=0x0;_0x19ac58<_0x45777b[_0xf40d('0x3d')];_0x19ac58++){_0x28632d['field'](squel[_0xf40d('0x74')]()['field'](_0xf40d('0x7c'))['from'](_0xf40d('0x7d'))[_0xf40d('0x41')](_0xf40d('0x7e'),_0x45777b[_0x19ac58]['id'])[_0xf40d('0x41')]('CmContactId\x20=\x20c.id'),_0xf40d('0x7f')+_0x45777b[_0x19ac58][_0xf40d('0x2f')]);_0x28632d[_0xf40d('0x80')](squel['select']()[_0xf40d('0x80')](_0xf40d('0x81'))[_0xf40d('0x75')](_0xf40d('0x7d'))[_0xf40d('0x41')](_0xf40d('0x7e'),_0x45777b[_0x19ac58]['id'])[_0xf40d('0x41')](_0xf40d('0x82')),'description_additionalPhone_'+_0x45777b[_0x19ac58]['name']);}var _0x409cac=[];_0x409cac[_0xf40d('0x66')](_0x28632d[_0xf40d('0x83')]());BPromise[_0xf40d('0x63')](_0x409cac,handleQuery)[_0xf40d('0x28')](function(_0x58d44e){handleQuery(_0x28632d[_0xf40d('0x83')]());var _0xcc801f=csv_results[0x0];if(!_[_0xf40d('0x84')](_0xcc801f)){var _0x2ef79e=toCsv(_0xcc801f);var _0x3fe411=Date['now']();fs[_0xf40d('0x85')](util[_0xf40d('0x6e')](_0xf40d('0x86'),_0x4640f1,_0x3fe411),_0x2ef79e);_0x112b39[_0xf40d('0x87')](_0xf40d('0x88'),_0xf40d('0x89')+util[_0xf40d('0x6e')]('list_%d_%s.csv',_0x4640f1,_0x3fe411));_0x112b39['setHeader'](_0xf40d('0x8a'),_0xf40d('0x8b'));return _0x112b39[_0xf40d('0x8c')](util['format'](_0xf40d('0x86'),_0x4640f1,_0x3fe411));}else{return _0x112b39[_0xf40d('0x1d')](0xcc);}});});});};exports[_0xf40d('0x8d')]=function(_0x527997,_0x388e6b,_0x5000d9){var _0xfc2a29;delete _0x527997[_0xf40d('0x50')]['id'];return db['CmList']['findOne']({'where':{'id':_0x527997['params']['id']}})[_0xf40d('0x28')](handleEntityNotFound(_0x388e6b,null))[_0xf40d('0x28')](function(_0x49c363){if(_0x49c363){return db['sequelize'][_0xf40d('0x8e')](function(_0x290f7b){return db[_0xf40d('0x6c')][_0xf40d('0x4f')](_0x527997[_0xf40d('0x50')],{'transaction':_0x290f7b})[_0xf40d('0x28')](function(_0x191322){_0xfc2a29=_0x191322;return _0x49c363['addCustomFields'](_0x191322,{'transaction':_0x290f7b});})[_0xf40d('0x28')](function(){var _0x469da7={'type':db[_0xf40d('0x8f')][_0xf40d('0x90')],'transaction':_0x290f7b};switch(_0x527997['body'][_0xf40d('0x35')]){case _0xf40d('0x91'):_0x469da7['type']=db[_0xf40d('0x8f')]['TEXT'];break;case _0xf40d('0x92'):_0x469da7[_0xf40d('0x35')]=db[_0xf40d('0x8f')][_0xf40d('0x93')];break;case _0xf40d('0x94'):_0x469da7[_0xf40d('0x35')]=db[_0xf40d('0x8f')][_0xf40d('0x95')];_0x469da7[_0xf40d('0x96')]=![];break;default:}return db['sequelize'][_0xf40d('0x97')][_0xf40d('0x98')](_0xf40d('0x76'),util[_0xf40d('0x6e')](_0xf40d('0x99'),_0xfc2a29['id']),_0x469da7);})[_0xf40d('0x28')](function(){return _0xfc2a29;});});}})[_0xf40d('0x28')](respondWithResult(_0x388e6b,null))['catch'](handleError(_0x388e6b,null));};exports['getCustomFields']=function(_0xeb9bb0,_0x5dbab6,_0x5d951a){var _0xe7fb0e={};var _0x1e522c={};var _0x318d12;var _0x1b1743;return db['CmList'][_0xf40d('0x9a')]({'where':{'id':_0xeb9bb0['params']['id']}})[_0xf40d('0x28')](handleEntityNotFound(_0x5dbab6,null))[_0xf40d('0x28')](function(_0x17bfdb){if(_0x17bfdb){_0x318d12=_0x17bfdb;_0x1e522c['model']=_[_0xf40d('0x4c')](db['CmCustomField']['rawAttributes']);_0x1e522c[_0xf40d('0x38')]=_[_0xf40d('0x4c')](_0xeb9bb0['query']);_0x1e522c[_0xf40d('0x39')]=_[_0xf40d('0x3a')](_0x1e522c['model'],_0x1e522c[_0xf40d('0x38')]);_0xe7fb0e[_0xf40d('0x3b')]=_['intersection'](_0x1e522c[_0xf40d('0x37')],qs[_0xf40d('0x3c')](_0xeb9bb0[_0xf40d('0x38')]['fields']));_0xe7fb0e['attributes']=_0xe7fb0e[_0xf40d('0x3b')]['length']?_0xe7fb0e[_0xf40d('0x3b')]:_0x1e522c['model'];_0xe7fb0e['order']=qs[_0xf40d('0x40')](_0xeb9bb0[_0xf40d('0x38')][_0xf40d('0x40')]);_0xe7fb0e[_0xf40d('0x41')]=qs[_0xf40d('0x39')](_[_0xf40d('0x42')](_0xeb9bb0[_0xf40d('0x38')],_0x1e522c[_0xf40d('0x39')]));_0xe7fb0e[_0xf40d('0x41')]=_[_0xf40d('0x43')](_0xe7fb0e['where'],{'$or':[{'ListId':_0x17bfdb['id']},{'ListId':null}]});if(_0xeb9bb0['query'][_0xf40d('0x45')]){_0xe7fb0e[_0xf40d('0x41')]=_[_0xf40d('0x43')](_0xe7fb0e[_0xf40d('0x41')],{'$or':_['map'](_0xe7fb0e[_0xf40d('0x3b')],function(_0x3eb305){var _0x150918={};_0x150918[_0x3eb305]={'$like':'%'+_0xeb9bb0[_0xf40d('0x38')][_0xf40d('0x45')]+'%'};return _0x150918;})});}_0xe7fb0e=_[_0xf40d('0x43')]({},_0xe7fb0e,_0xeb9bb0[_0xf40d('0x4d')]);return db['CmCustomField'][_0xf40d('0x9b')](_0xe7fb0e);}})[_0xf40d('0x28')](respondWithResult(_0x5dbab6,null))[_0xf40d('0x4a')](handleError(_0x5dbab6,null));};exports[_0xf40d('0x9c')]=function(_0x46a44e,_0x352448){return db['CmCustomField']['findAndCountAll']({'where':{'ListId':null}})['then'](handleEntityNotFound(_0x352448,null))[_0xf40d('0x28')](function(_0x1202fc){return _0x1202fc;})['then'](respondWithResult(_0x352448,null))[_0xf40d('0x4a')](handleError(_0x352448,null));};exports[_0xf40d('0x9d')]=function(_0x4c8a04,_0x13941a,_0x546d69){return db['CmList']['find']({'where':{'id':_0x4c8a04[_0xf40d('0x55')]['id']}})['then'](handleEntityNotFound(_0x13941a,null))[_0xf40d('0x28')](function(_0x26f08a){if(_0x26f08a){return _0x26f08a[_0xf40d('0x9d')](_0x4c8a04[_0xf40d('0x50')][_0xf40d('0x5d')],_['omit'](_0x4c8a04['body'],[_0xf40d('0x5d'),'id'])||{})['spread'](function(_0x21b118){for(var _0x43be20=0x0;_0x43be20<_0x4c8a04[_0xf40d('0x50')][_0xf40d('0x5d')][_0xf40d('0x3d')];_0x43be20+=0x1){socket[_0xf40d('0x9e')]('userCmList:save',{'UserId':Number(_0x4c8a04[_0xf40d('0x50')][_0xf40d('0x5d')][_0x43be20]),'CmListId':Number(_0x4c8a04[_0xf40d('0x55')]['id'])});}return _0x21b118;});}})[_0xf40d('0x28')](respondWithResult(_0x13941a,null))[_0xf40d('0x4a')](handleError(_0x13941a,null));};exports[_0xf40d('0x9f')]=function(_0x5b8302,_0x4e0396,_0x52c5b7){return db['CmList'][_0xf40d('0x4e')]({'where':{'id':_0x5b8302[_0xf40d('0x55')]['id']}})[_0xf40d('0x28')](handleEntityNotFound(_0x4e0396,null))[_0xf40d('0x28')](function(_0x2ef00f){if(_0x2ef00f){return _0x2ef00f[_0xf40d('0x9f')](_0x5b8302[_0xf40d('0x38')]['ids'])['then'](function(){if(_['isArray'](_0x5b8302[_0xf40d('0x38')][_0xf40d('0x5d')])){for(var _0x53fd40=0x0;_0x53fd40<_0x5b8302['query'][_0xf40d('0x5d')][_0xf40d('0x3d')];_0x53fd40+=0x1){socket['emit'](_0xf40d('0xa0'),{'UserId':Number(_0x5b8302[_0xf40d('0x38')][_0xf40d('0x5d')][_0x53fd40]),'CmListId':Number(_0x5b8302[_0xf40d('0x55')]['id'])});}}else{socket[_0xf40d('0x9e')](_0xf40d('0xa0'),{'UserId':Number(_0x5b8302[_0xf40d('0x38')][_0xf40d('0x5d')]),'CmListId':Number(_0x5b8302[_0xf40d('0x55')]['id'])});}});}})[_0xf40d('0x28')](respondWithStatusCode(_0x4e0396,null))[_0xf40d('0x4a')](handleError(_0x4e0396,null));};exports[_0xf40d('0xa1')]=function(_0x28da01,_0x314c39,_0x58ac14){var _0x216e0e={};var _0x4037bb={};var _0x2e8bc6;var _0x1e8c18;return db[_0xf40d('0x32')][_0xf40d('0x9a')]({'where':{'id':_0x28da01['params']['id']}})[_0xf40d('0x28')](handleEntityNotFound(_0x314c39,null))['then'](function(_0x825959){if(_0x825959){_0x2e8bc6=_0x825959;_0x4037bb[_0xf40d('0x37')]=_[_0xf40d('0x4c')](db[_0xf40d('0xa2')][_0xf40d('0x33')]);_0x4037bb['query']=_[_0xf40d('0x4c')](_0x28da01['query']);_0x4037bb['filters']=_[_0xf40d('0x3a')](_0x4037bb[_0xf40d('0x37')],_0x4037bb['query']);_0x216e0e[_0xf40d('0x3b')]=_[_0xf40d('0x3a')](_0x4037bb['model'],qs[_0xf40d('0x3c')](_0x28da01['query']['fields']));_0x216e0e[_0xf40d('0x3b')]=_0x216e0e[_0xf40d('0x3b')][_0xf40d('0x3d')]?_0x216e0e[_0xf40d('0x3b')]:_0x4037bb[_0xf40d('0x37')];_0x216e0e[_0xf40d('0x3f')]=qs[_0xf40d('0x40')](_0x28da01[_0xf40d('0x38')][_0xf40d('0x40')]);_0x216e0e[_0xf40d('0x41')]=qs[_0xf40d('0x39')](_[_0xf40d('0x42')](_0x28da01[_0xf40d('0x38')],_0x4037bb[_0xf40d('0x39')]));if(_0x28da01[_0xf40d('0x38')]['filter']){_0x216e0e[_0xf40d('0x41')]=_[_0xf40d('0x43')](_0x216e0e['where'],{'$or':_[_0xf40d('0x31')](_0x216e0e[_0xf40d('0x3b')],function(_0x19a6fa){var _0x56f5da={};_0x56f5da[_0x19a6fa]={'$like':'%'+_0x28da01[_0xf40d('0x38')][_0xf40d('0x45')]+'%'};return _0x56f5da;})});}_0x216e0e=_[_0xf40d('0x43')]({},_0x216e0e,_0x28da01['options']);return _0x2e8bc6[_0xf40d('0xa1')](_0x216e0e);}})[_0xf40d('0x28')](function(_0x24d578){if(_0x24d578){_0x1e8c18=_0x24d578[_0xf40d('0x3d')];if(!_0x28da01[_0xf40d('0x38')]['hasOwnProperty'](_0xf40d('0x5a'))){_0x216e0e['limit']=qs[_0xf40d('0x20')](_0x28da01[_0xf40d('0x38')]['limit']);_0x216e0e[_0xf40d('0x22')]=qs[_0xf40d('0x22')](_0x28da01['query'][_0xf40d('0x22')]);}return _0x2e8bc6[_0xf40d('0xa1')](_0x216e0e);}})[_0xf40d('0x28')](function(_0x4e366c){if(_0x4e366c){return _0x4e366c?{'count':_0x1e8c18,'rows':_0x4e366c}:null;}})[_0xf40d('0x28')](respondWithResult(_0x314c39,null))[_0xf40d('0x4a')](handleError(_0x314c39,null));};function handleQuery(_0x4967b1){logger[_0xf40d('0xa3')](_0x4967b1);return db['sequelize']['query'](_0x4967b1)[_0xf40d('0xa4')](function(_0x30150e){csv_results[_0xf40d('0x66')](_0x30150e);})[_0xf40d('0x4a')](function(_0x1169b5){logger[_0xf40d('0x2d')](_0x1169b5['message']);});}
\ No newline at end of file
index 54d1b3f..b31da62 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x814b=['update','emit','hook','exports','events','../../mysqldb','CmList','setMaxListeners','save'];(function(_0xd2811e,_0x168a67){var _0x9a2a53=function(_0x14d24b){while(--_0x14d24b){_0xd2811e['push'](_0xd2811e['shift']());}};_0x9a2a53(++_0x168a67);}(_0x814b,0x1a2));var _0xb814=function(_0x571d85,_0xda439c){_0x571d85=_0x571d85-0x0;var _0x3c2e07=_0x814b[_0x571d85];return _0x3c2e07;};'use strict';var EventEmitter=require(_0xb814('0x0'));var CmList=require(_0xb814('0x1'))['db'][_0xb814('0x2')];var CmListEvents=new EventEmitter();CmListEvents[_0xb814('0x3')](0x0);var events={'afterCreate':_0xb814('0x4'),'afterUpdate':_0xb814('0x5'),'afterDestroy':'remove'};function emitEvent(_0x38c21a){return function(_0x3e1e9,_0x258866,_0x4237bc){CmListEvents[_0xb814('0x6')](_0x38c21a+':'+_0x3e1e9['id'],_0x3e1e9);CmListEvents[_0xb814('0x6')](_0x38c21a,_0x3e1e9);_0x4237bc(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];CmList[_0xb814('0x7')](e,emitEvent(event));}}module[_0xb814('0x8')]=CmListEvents;
\ No newline at end of file
+var _0x55ca=['events','../../mysqldb','update','remove','emit','hasOwnProperty','hook'];(function(_0x45d55e,_0x2fede3){var _0x29812a=function(_0x3c6830){while(--_0x3c6830){_0x45d55e['push'](_0x45d55e['shift']());}};_0x29812a(++_0x2fede3);}(_0x55ca,0x126));var _0xa55c=function(_0x2eea9a,_0x368daf){_0x2eea9a=_0x2eea9a-0x0;var _0x1ec61e=_0x55ca[_0x2eea9a];return _0x1ec61e;};'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
index 716c0cd..7e45fa7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['rimraf','./cmList.attributes','exports','define','cm_lists','../../config/logger','api','moment','bluebird','path'];(function(_0x3d01f3,_0x4ed089){var _0xe37d51=function(_0x167561){while(--_0x167561){_0x3d01f3['push'](_0x3d01f3['shift']());}};_0xe37d51(++_0x4ed089);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x492535,_0x46524a){_0x492535=_0x492535-0x0;var _0x256620=_0xcb91[_0x492535];return _0x256620;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x1cb9('0x0'))(_0x1cb9('0x1'));var moment=require(_0x1cb9('0x2'));var BPromise=require(_0x1cb9('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1cb9('0x4'));var rimraf=require(_0x1cb9('0x5'));var config=require('../../config/environment');var attributes=require(_0x1cb9('0x6'));module[_0x1cb9('0x7')]=function(_0x53ffbd,_0x226b69){return _0x53ffbd[_0x1cb9('0x8')]('CmList',attributes,{'tableName':_0x1cb9('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0713=['moment','bluebird','request-promise','rimraf','../../config/environment','./cmList.attributes','exports','define','CmList','cm_lists','../../config/logger','api'];(function(_0x231e32,_0x1a5538){var _0x2a5000=function(_0x2539fc){while(--_0x2539fc){_0x231e32['push'](_0x231e32['shift']());}};_0x2a5000(++_0x1a5538);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x3071('0x0'))(_0x3071('0x1'));var moment=require(_0x3071('0x2'));var BPromise=require(_0x3071('0x3'));var rp=require(_0x3071('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x3071('0x5'));var config=require(_0x3071('0x6'));var attributes=require(_0x3071('0x7'));module[_0x3071('0x8')]=function(_0xabd7b6,_0x41cf76){return _0xabd7b6[_0x3071('0x9')](_0x3071('0xa'),attributes,{'tableName':_0x3071('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3aeac5a..fcc252e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedc8=['error','message','info','result','catch','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','defaults','redis','socket.io-emitter','./cmList.socket','register','request','then','CmList,\x20%s,\x20%s','debug','CmList,\x20%s,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x462fe4,_0x394d3e){var _0x82b23a=function(_0x2c071f){while(--_0x2c071f){_0x462fe4['push'](_0x462fe4['shift']());}};_0x82b23a(++_0x394d3e);}(_0xedc8,0x8c));var _0x8edc=function(_0x172747,_0x1732bd){_0x172747=_0x172747-0x0;var _0x509692=_0xedc8[_0x172747];return _0x509692;};'use strict';var _=require(_0x8edc('0x0'));var util=require(_0x8edc('0x1'));var moment=require('moment');var BPromise=require(_0x8edc('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8edc('0x3'));var db=require(_0x8edc('0x4'))['db'];var utils=require(_0x8edc('0x5'));var logger=require(_0x8edc('0x6'))(_0x8edc('0x7'));var config=require('../../config/environment');var jayson=require(_0x8edc('0x8'));var client=jayson['client'][_0x8edc('0x9')]({'port':0x232a});config['redis']=_[_0x8edc('0xa')](config[_0x8edc('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x8edc('0xc'))(new Redis(config[_0x8edc('0xb')]));require(_0x8edc('0xd'))[_0x8edc('0xe')](socket);function respondWithRpcPromise(_0x135529,_0x96f4ab,_0x6a7800){return new BPromise(function(_0x141961,_0x24a912){return client[_0x8edc('0xf')](_0x135529,_0x6a7800)[_0x8edc('0x10')](function(_0x677cfe){logger['info'](_0x8edc('0x11'),_0x96f4ab,'request\x20sent');logger[_0x8edc('0x12')](_0x8edc('0x13'),_0x96f4ab,_0x8edc('0x14'),JSON[_0x8edc('0x15')](_0x677cfe));if(_0x677cfe['error']){if(_0x677cfe[_0x8edc('0x16')]['code']===0x1f4){logger[_0x8edc('0x16')](_0x8edc('0x11'),_0x96f4ab,_0x677cfe[_0x8edc('0x16')][_0x8edc('0x17')]);return _0x24a912(_0x677cfe[_0x8edc('0x16')]['message']);}logger[_0x8edc('0x16')]('CmList,\x20%s,\x20%s',_0x96f4ab,_0x677cfe[_0x8edc('0x16')][_0x8edc('0x17')]);return _0x141961(_0x677cfe[_0x8edc('0x16')][_0x8edc('0x17')]);}else{logger[_0x8edc('0x18')](_0x8edc('0x11'),_0x96f4ab,_0x8edc('0x14'));_0x141961(_0x677cfe[_0x8edc('0x19')][_0x8edc('0x17')]);}})[_0x8edc('0x1a')](function(_0x1378b7){logger['error'](_0x8edc('0x11'),_0x96f4ab,_0x1378b7);_0x24a912(_0x1378b7);});});}
\ No newline at end of file
+var _0x504b=['moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','redis','defaults','localhost','./cmList.socket','register','request','then','info','CmList,\x20%s,\x20%s','request\x20sent','debug','CmList,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','catch','lodash'];(function(_0x793c45,_0x22a198){var _0x379aa7=function(_0x415005){while(--_0x415005){_0x793c45['push'](_0x793c45['shift']());}};_0x379aa7(++_0x22a198);}(_0x504b,0x8b));var _0xb504=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x504b[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0xb504('0x0'));var util=require('util');var moment=require(_0xb504('0x1'));var BPromise=require(_0xb504('0x2'));var rs=require(_0xb504('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb504('0x4'))['db'];var utils=require(_0xb504('0x5'));var logger=require('../../config/logger')(_0xb504('0x6'));var config=require('../../config/environment');var jayson=require(_0xb504('0x7'));var client=jayson[_0xb504('0x8')][_0xb504('0x9')]({'port':0x232a});config[_0xb504('0xa')]=_[_0xb504('0xb')](config[_0xb504('0xa')],{'host':_0xb504('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xb504('0xa')]));require(_0xb504('0xd'))[_0xb504('0xe')](socket);function respondWithRpcPromise(_0x4beb1a,_0x1d9c29,_0x275ae5){return new BPromise(function(_0xe6e7d5,_0x4f9a40){return client[_0xb504('0xf')](_0x4beb1a,_0x275ae5)[_0xb504('0x10')](function(_0x23b44c){logger[_0xb504('0x11')](_0xb504('0x12'),_0x1d9c29,_0xb504('0x13'));logger[_0xb504('0x14')](_0xb504('0x15'),_0x1d9c29,_0xb504('0x13'),JSON[_0xb504('0x16')](_0x23b44c));if(_0x23b44c['error']){if(_0x23b44c['error'][_0xb504('0x17')]===0x1f4){logger[_0xb504('0x18')](_0xb504('0x12'),_0x1d9c29,_0x23b44c[_0xb504('0x18')][_0xb504('0x19')]);return _0x4f9a40(_0x23b44c['error'][_0xb504('0x19')]);}logger[_0xb504('0x18')](_0xb504('0x12'),_0x1d9c29,_0x23b44c[_0xb504('0x18')][_0xb504('0x19')]);return _0xe6e7d5(_0x23b44c[_0xb504('0x18')][_0xb504('0x19')]);}else{logger[_0xb504('0x11')]('CmList,\x20%s,\x20%s',_0x1d9c29,'request\x20sent');_0xe6e7d5(_0x23b44c[_0xb504('0x1a')][_0xb504('0x19')]);}})[_0xb504('0x1b')](function(_0x50d9dd){logger[_0xb504('0x18')](_0xb504('0x12'),_0x1d9c29,_0x50d9dd);_0x4f9a40(_0x50d9dd);});});}
\ No newline at end of file
index 0ce8ae5..abe8dfe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfae1=['./cmList.events','save','removeListener','register','length'];(function(_0x467924,_0x3464ed){var _0x2d7f30=function(_0x588411){while(--_0x588411){_0x467924['push'](_0x467924['shift']());}};_0x2d7f30(++_0x3464ed);}(_0xfae1,0x69));var _0x1fae=function(_0x2c71c9,_0x36292b){_0x2c71c9=_0x2c71c9-0x0;var _0x29f48f=_0xfae1[_0x2c71c9];return _0x29f48f;};'use strict';var CmListEvents=require(_0x1fae('0x0'));var events=[_0x1fae('0x1'),'remove','update'];function createListener(_0x7c5482,_0x223aba){return function(_0x3014cb){_0x223aba['emit'](_0x7c5482,_0x3014cb);};}function removeListener(_0x2aaeac,_0x35b754){return function(){CmListEvents[_0x1fae('0x2')](_0x2aaeac,_0x35b754);};}exports[_0x1fae('0x3')]=function(_0x3be11b){for(var _0xe07f0c=0x0,_0xdddeb3=events[_0x1fae('0x4')];_0xe07f0c<_0xdddeb3;_0xe07f0c++){var _0x52c3da=events[_0xe07f0c];var _0x4e310d=createListener('cmList:'+_0x52c3da,_0x3be11b);CmListEvents['on'](_0x52c3da,_0x4e310d);}};
\ No newline at end of file
+var _0xb495=['removeListener','register','length','cmList:','./cmList.events','save','remove','update','emit'];(function(_0x4a9801,_0x548afb){var _0x2b089a=function(_0x4b4074){while(--_0x4b4074){_0x4a9801['push'](_0x4a9801['shift']());}};_0x2b089a(++_0x548afb);}(_0xb495,0x151));var _0x5b49=function(_0x4d295b,_0x2cfc73){_0x4d295b=_0x4d295b-0x0;var _0x45420d=_0xb495[_0x4d295b];return _0x45420d;};'use strict';var CmListEvents=require(_0x5b49('0x0'));var events=[_0x5b49('0x1'),_0x5b49('0x2'),_0x5b49('0x3')];function createListener(_0x353b65,_0x4cc157){return function(_0x345938){_0x4cc157[_0x5b49('0x4')](_0x353b65,_0x345938);};}function removeListener(_0x2bfd81,_0x211819){return function(){CmListEvents[_0x5b49('0x5')](_0x2bfd81,_0x211819);};}exports[_0x5b49('0x6')]=function(_0x218905){for(var _0x264e00=0x0,_0x24eb6b=events[_0x5b49('0x7')];_0x264e00<_0x24eb6b;_0x264e00++){var _0x40db32=events[_0x264e00];var _0x31a2ab=createListener(_0x5b49('0x8')+_0x40db32,_0x218905);CmListEvents['on'](_0x40db32,_0x31a2ab);}};
\ No newline at end of file
index affbe80..8bdeef1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e37=['express','Router','fs-extra','../../components/interaction/service','../../config/environment','./cmList.controller','get','isAuthenticated','index','describe','/:id','/:id/dispositions','getContacts','/:id/contacts/csv','getContactsCsv','/:id/fields','getCustomFields','post','create','addDisposition','/:id/contacts','addContacts','addCustomField','/:id/users','update','delete','destroy','removeDispositions','removeAgents','exports','multer'];(function(_0x96f74c,_0xfc30a4){var _0x379222=function(_0x1bbde9){while(--_0x1bbde9){_0x96f74c['push'](_0x96f74c['shift']());}};_0x379222(++_0xfc30a4);}(_0x4e37,0xd8));var _0x74e3=function(_0x40e1ed,_0x297e89){_0x40e1ed=_0x40e1ed-0x0;var _0x220ddd=_0x4e37[_0x40e1ed];return _0x220ddd;};'use strict';var multer=require(_0x74e3('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x74e3('0x1'));var router=express[_0x74e3('0x2')]();var fs_extra=require(_0x74e3('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x74e3('0x4'));var config=require(_0x74e3('0x5'));var controller=require(_0x74e3('0x6'));router[_0x74e3('0x7')]('/',auth[_0x74e3('0x8')](),controller[_0x74e3('0x9')]);router['get']('/describe',auth[_0x74e3('0x8')](),controller[_0x74e3('0xa')]);router['get']('/global_fields',auth[_0x74e3('0x8')](),controller['getGlobalCustomFields']);router[_0x74e3('0x7')](_0x74e3('0xb'),auth['isAuthenticated'](),controller['show']);router[_0x74e3('0x7')](_0x74e3('0xc'),auth[_0x74e3('0x8')](),controller['getDispositions']);router['get']('/:id/contacts',auth['isAuthenticated'](),controller[_0x74e3('0xd')]);router[_0x74e3('0x7')](_0x74e3('0xe'),auth[_0x74e3('0x8')](),controller[_0x74e3('0xf')]);router['get'](_0x74e3('0x10'),auth[_0x74e3('0x8')](),controller[_0x74e3('0x11')]);router[_0x74e3('0x7')]('/:id/users',auth[_0x74e3('0x8')](),controller['getAgents']);router[_0x74e3('0x12')]('/',auth[_0x74e3('0x8')](),controller[_0x74e3('0x13')]);router['post'](_0x74e3('0xc'),auth[_0x74e3('0x8')](),controller[_0x74e3('0x14')]);router['post'](_0x74e3('0x15'),auth[_0x74e3('0x8')](),controller[_0x74e3('0x16')]);router[_0x74e3('0x12')](_0x74e3('0x10'),auth[_0x74e3('0x8')](),controller[_0x74e3('0x17')]);router['post'](_0x74e3('0x18'),auth[_0x74e3('0x8')](),controller['addAgents']);router['put'](_0x74e3('0xb'),auth[_0x74e3('0x8')](),controller[_0x74e3('0x19')]);router[_0x74e3('0x1a')]('/:id',auth[_0x74e3('0x8')](),controller[_0x74e3('0x1b')]);router[_0x74e3('0x1a')](_0x74e3('0xc'),auth[_0x74e3('0x8')](),controller[_0x74e3('0x1c')]);router['delete'](_0x74e3('0x18'),auth[_0x74e3('0x8')](),controller[_0x74e3('0x1d')]);module[_0x74e3('0x1e')]=router;
\ No newline at end of file
+var _0x2cdc=['addDisposition','addContacts','addCustomField','addAgents','put','update','delete','destroy','removeDispositions','removeAgents','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmList.controller','isAuthenticated','index','/describe','describe','get','/global_fields','/:id','/:id/dispositions','getDispositions','/:id/contacts','getContacts','/:id/contacts/csv','getContactsCsv','/:id/fields','getCustomFields','/:id/users','getAgents','post','create'];(function(_0xc4001c,_0x1bf8f0){var _0x49f7bc=function(_0x1059b8){while(--_0x1059b8){_0xc4001c['push'](_0xc4001c['shift']());}};_0x49f7bc(++_0x1bf8f0);}(_0x2cdc,0x173));var _0xc2cd=function(_0x3a33cd,_0x5a26f5){_0x3a33cd=_0x3a33cd-0x0;var _0x356614=_0x2cdc[_0x3a33cd];return _0x356614;};'use strict';var multer=require(_0xc2cd('0x0'));var util=require(_0xc2cd('0x1'));var path=require(_0xc2cd('0x2'));var timeout=require('connect-timeout');var express=require(_0xc2cd('0x3'));var router=express[_0xc2cd('0x4')]();var fs_extra=require(_0xc2cd('0x5'));var auth=require(_0xc2cd('0x6'));var interaction=require(_0xc2cd('0x7'));var config=require(_0xc2cd('0x8'));var controller=require(_0xc2cd('0x9'));router['get']('/',auth[_0xc2cd('0xa')](),controller[_0xc2cd('0xb')]);router['get'](_0xc2cd('0xc'),auth['isAuthenticated'](),controller[_0xc2cd('0xd')]);router[_0xc2cd('0xe')](_0xc2cd('0xf'),auth['isAuthenticated'](),controller['getGlobalCustomFields']);router[_0xc2cd('0xe')](_0xc2cd('0x10'),auth[_0xc2cd('0xa')](),controller['show']);router[_0xc2cd('0xe')](_0xc2cd('0x11'),auth['isAuthenticated'](),controller[_0xc2cd('0x12')]);router['get'](_0xc2cd('0x13'),auth[_0xc2cd('0xa')](),controller[_0xc2cd('0x14')]);router[_0xc2cd('0xe')](_0xc2cd('0x15'),auth[_0xc2cd('0xa')](),controller[_0xc2cd('0x16')]);router[_0xc2cd('0xe')](_0xc2cd('0x17'),auth[_0xc2cd('0xa')](),controller[_0xc2cd('0x18')]);router['get'](_0xc2cd('0x19'),auth[_0xc2cd('0xa')](),controller[_0xc2cd('0x1a')]);router[_0xc2cd('0x1b')]('/',auth[_0xc2cd('0xa')](),controller[_0xc2cd('0x1c')]);router[_0xc2cd('0x1b')](_0xc2cd('0x11'),auth['isAuthenticated'](),controller[_0xc2cd('0x1d')]);router[_0xc2cd('0x1b')](_0xc2cd('0x13'),auth[_0xc2cd('0xa')](),controller[_0xc2cd('0x1e')]);router['post'](_0xc2cd('0x17'),auth[_0xc2cd('0xa')](),controller[_0xc2cd('0x1f')]);router[_0xc2cd('0x1b')](_0xc2cd('0x19'),auth[_0xc2cd('0xa')](),controller[_0xc2cd('0x20')]);router[_0xc2cd('0x21')](_0xc2cd('0x10'),auth['isAuthenticated'](),controller[_0xc2cd('0x22')]);router[_0xc2cd('0x23')](_0xc2cd('0x10'),auth[_0xc2cd('0xa')](),controller[_0xc2cd('0x24')]);router['delete'](_0xc2cd('0x11'),auth[_0xc2cd('0xa')](),controller[_0xc2cd('0x25')]);router['delete'](_0xc2cd('0x19'),auth[_0xc2cd('0xa')](),controller[_0xc2cd('0x26')]);module[_0xc2cd('0x27')]=router;
\ No newline at end of file
index 607c905..b373e42 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x993c=['sequelize','getDataValue','field','STRING'];(function(_0x463b5a,_0x3e4231){var _0x1ef670=function(_0x42eaa3){while(--_0x42eaa3){_0x463b5a['push'](_0x463b5a['shift']());}};_0x1ef670(++_0x3e4231);}(_0x993c,0x1ec));var _0xc993=function(_0x2a2483,_0x2cb352){_0x2a2483=_0x2a2483-0x0;var _0x59c20a=_0x993c[_0x2a2483];return _0x59c20a;};'use strict';var Sequelize=require(_0xc993('0x0'));module['exports']={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x1a5c29){return this[_0xc993('0x1')](_0xc993('0x2'));}},'field':{'type':Sequelize['STRING'],'allowNull':![]},'operator':{'type':Sequelize[_0xc993('0x3')],'allowNull':![]},'value':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
+var _0x2cc7=['VIRTUAL','getDataValue','field','STRING','sequelize','exports'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0x2cc7,0x1d2));var _0x72cc=function(_0x42cd7e,_0x3e2b9a){_0x42cd7e=_0x42cd7e-0x0;var _0x453dbe=_0x2cc7[_0x42cd7e];return _0x453dbe;};'use strict';var Sequelize=require(_0x72cc('0x0'));module[_0x72cc('0x1')]={'name':{'type':Sequelize[_0x72cc('0x2')],'get':function(_0xc38f06){return this[_0x72cc('0x3')](_0x72cc('0x4'));}},'field':{'type':Sequelize[_0x72cc('0x5')],'allowNull':![]},'operator':{'type':Sequelize[_0x72cc('0x5')],'allowNull':![]},'value':{'type':Sequelize[_0x72cc('0x5')],'allowNull':![]}};
\ No newline at end of file
index 9b432dd..362d53e 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(_0x1756e4,_0x1a2940){var _0x1911f2=function(_0xc9fc57){while(--_0xc9fc57){_0x1756e4['push'](_0x1756e4['shift']());}};_0x1911f2(++_0x1a2940);}(_0x9957,0x93));var _0x7995=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x9957[_0x3b380d];return _0x54502b;};'use strict';var emlformat=require(_0x7995('0x0'));var rimraf=require(_0x7995('0x1'));var zipdir=require(_0x7995('0x2'));var jsonpatch=require(_0x7995('0x3'));var rp=require('request-promise');var moment=require(_0x7995('0x4'));var BPromise=require(_0x7995('0x5'));var Mustache=require(_0x7995('0x6'));var util=require(_0x7995('0x7'));var path=require('path');var sox=require(_0x7995('0x8'));var csv=require(_0x7995('0x9'));var ejs=require(_0x7995('0xa'));var fs=require('fs');var fs_extra=require(_0x7995('0xb'));var _=require(_0x7995('0xc'));var squel=require(_0x7995('0xd'));var crypto=require('crypto');var jsforce=require(_0x7995('0xe'));var deskjs=require(_0x7995('0xf'));var toCsv=require('to-csv');var querystring=require(_0x7995('0x10'));var Papa=require(_0x7995('0x11'));var Redis=require(_0x7995('0x12'));var authService=require(_0x7995('0x13'));var qs=require(_0x7995('0x14'));var as=require(_0x7995('0x15'));var hardwareService=require(_0x7995('0x16'));var logger=require('../../config/logger')(_0x7995('0x17'));var utils=require(_0x7995('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x7995('0x19'));var db=require(_0x7995('0x1a'))['db'];function respondWithStatusCode(_0x19a27e,_0x385f00){_0x385f00=_0x385f00||0xcc;return function(_0x281576){if(_0x281576){return _0x19a27e[_0x7995('0x1b')](_0x385f00);}return _0x19a27e[_0x7995('0x1c')](_0x385f00)['end']();};}function respondWithResult(_0x58f5ad,_0x2b4e94){_0x2b4e94=_0x2b4e94||0xc8;return function(_0x2233dd){if(_0x2233dd){return _0x58f5ad[_0x7995('0x1c')](_0x2b4e94)[_0x7995('0x1d')](_0x2233dd);}};}function respondWithFilteredResult(_0x3f1d3e,_0x1a5310){return function(_0x2202ce){if(_0x2202ce){var _0x41cbf0=typeof _0x1a5310['offset']===_0x7995('0x1e')&&typeof _0x1a5310['limit']===_0x7995('0x1e');var _0x37f297=_0x2202ce[_0x7995('0x1f')];var _0x291317=_0x41cbf0?0x0:_0x1a5310[_0x7995('0x20')];var _0x37a7d4=_0x41cbf0?_0x2202ce['count']:_0x1a5310['offset']+_0x1a5310[_0x7995('0x21')];var _0x5e6f90;if(_0x37a7d4>=_0x37f297){_0x37a7d4=_0x37f297;_0x5e6f90=0xc8;}else{_0x5e6f90=0xce;}_0x3f1d3e['status'](_0x5e6f90);return _0x3f1d3e[_0x7995('0x22')](_0x7995('0x23'),_0x291317+'-'+_0x37a7d4+'/'+_0x37f297)['json'](_0x2202ce);}return null;};}function patchUpdates(_0x3a9b54){return function(_0x51f276){try{jsonpatch['apply'](_0x51f276,_0x3a9b54,!![]);}catch(_0x3e4c54){return BPromise[_0x7995('0x24')](_0x3e4c54);}return _0x51f276[_0x7995('0x25')]();};}function saveUpdates(_0x1a8568,_0x460924){return function(_0x1c278a){if(_0x1c278a){return _0x1c278a['update'](_0x1a8568)[_0x7995('0x26')](function(_0x46ee4b){return _0x46ee4b;});}return null;};}function removeEntity(_0x204507,_0x285437){return function(_0x563799){if(_0x563799){return _0x563799[_0x7995('0x27')]()[_0x7995('0x26')](function(){_0x204507[_0x7995('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x39df42,_0x34e70c){return function(_0x401dc3){if(!_0x401dc3){_0x39df42[_0x7995('0x1b')](0x194);}return _0x401dc3;};}function handleError(_0x3a3fcf,_0x2a307e){_0x2a307e=_0x2a307e||0x1f4;return function(_0x56691a){logger[_0x7995('0x28')](_0x56691a['stack']);if(_0x56691a[_0x7995('0x29')]){delete _0x56691a[_0x7995('0x29')];}_0x3a3fcf[_0x7995('0x1c')](_0x2a307e)[_0x7995('0x2a')](_0x56691a);};}exports[_0x7995('0x2b')]=function(_0x4b6f99,_0x9b2a15){if(_0x4b6f99['body']['id']){delete _0x4b6f99[_0x7995('0x2c')]['id'];}return db[_0x7995('0x2d')][_0x7995('0x2e')]({'where':{'id':_0x4b6f99['params']['id']}})['then'](handleEntityNotFound(_0x9b2a15,null))['then'](saveUpdates(_0x4b6f99[_0x7995('0x2c')],null))[_0x7995('0x26')](respondWithResult(_0x9b2a15,null))[_0x7995('0x2f')](handleError(_0x9b2a15,null));};exports[_0x7995('0x27')]=function(_0x2e3493,_0x1ca460){return db['Condition']['find']({'where':{'id':_0x2e3493[_0x7995('0x30')]['id']}})['then'](handleEntityNotFound(_0x1ca460,null))[_0x7995('0x26')](removeEntity(_0x1ca460,null))[_0x7995('0x2f')](handleError(_0x1ca460,null));};
\ No newline at end of file
+var _0x9957=['eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','count','offset','limit','set','Content-Range','reject','save','then','destroy','error','name','send','update','body','Condition','find','catch','params'];(function(_0xf1d043,_0x124c18){var _0x5f0c4c=function(_0x10598e){while(--_0x10598e){_0xf1d043['push'](_0xf1d043['shift']());}};_0x5f0c4c(++_0x124c18);}(_0x9957,0x93));var _0x7995=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x9957[_0x1facfa];return _0x9ec701;};'use strict';var emlformat=require(_0x7995('0x0'));var rimraf=require(_0x7995('0x1'));var zipdir=require(_0x7995('0x2'));var jsonpatch=require(_0x7995('0x3'));var rp=require('request-promise');var moment=require(_0x7995('0x4'));var BPromise=require(_0x7995('0x5'));var Mustache=require(_0x7995('0x6'));var util=require(_0x7995('0x7'));var path=require('path');var sox=require(_0x7995('0x8'));var csv=require(_0x7995('0x9'));var ejs=require(_0x7995('0xa'));var fs=require('fs');var fs_extra=require(_0x7995('0xb'));var _=require(_0x7995('0xc'));var squel=require(_0x7995('0xd'));var crypto=require('crypto');var jsforce=require(_0x7995('0xe'));var deskjs=require(_0x7995('0xf'));var toCsv=require('to-csv');var querystring=require(_0x7995('0x10'));var Papa=require(_0x7995('0x11'));var Redis=require(_0x7995('0x12'));var authService=require(_0x7995('0x13'));var qs=require(_0x7995('0x14'));var as=require(_0x7995('0x15'));var hardwareService=require(_0x7995('0x16'));var logger=require('../../config/logger')(_0x7995('0x17'));var utils=require(_0x7995('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x7995('0x19'));var db=require(_0x7995('0x1a'))['db'];function respondWithStatusCode(_0x19a27e,_0x385f00){_0x385f00=_0x385f00||0xcc;return function(_0x281576){if(_0x281576){return _0x19a27e[_0x7995('0x1b')](_0x385f00);}return _0x19a27e[_0x7995('0x1c')](_0x385f00)['end']();};}function respondWithResult(_0x58f5ad,_0x2b4e94){_0x2b4e94=_0x2b4e94||0xc8;return function(_0x2233dd){if(_0x2233dd){return _0x58f5ad[_0x7995('0x1c')](_0x2b4e94)[_0x7995('0x1d')](_0x2233dd);}};}function respondWithFilteredResult(_0x3f1d3e,_0x1a5310){return function(_0x2202ce){if(_0x2202ce){var _0x41cbf0=typeof _0x1a5310['offset']===_0x7995('0x1e')&&typeof _0x1a5310['limit']===_0x7995('0x1e');var _0x37f297=_0x2202ce[_0x7995('0x1f')];var _0x291317=_0x41cbf0?0x0:_0x1a5310[_0x7995('0x20')];var _0x37a7d4=_0x41cbf0?_0x2202ce['count']:_0x1a5310['offset']+_0x1a5310[_0x7995('0x21')];var _0x5e6f90;if(_0x37a7d4>=_0x37f297){_0x37a7d4=_0x37f297;_0x5e6f90=0xc8;}else{_0x5e6f90=0xce;}_0x3f1d3e['status'](_0x5e6f90);return _0x3f1d3e[_0x7995('0x22')](_0x7995('0x23'),_0x291317+'-'+_0x37a7d4+'/'+_0x37f297)['json'](_0x2202ce);}return null;};}function patchUpdates(_0x3a9b54){return function(_0x51f276){try{jsonpatch['apply'](_0x51f276,_0x3a9b54,!![]);}catch(_0x3e4c54){return BPromise[_0x7995('0x24')](_0x3e4c54);}return _0x51f276[_0x7995('0x25')]();};}function saveUpdates(_0x1a8568,_0x460924){return function(_0x1c278a){if(_0x1c278a){return _0x1c278a['update'](_0x1a8568)[_0x7995('0x26')](function(_0x46ee4b){return _0x46ee4b;});}return null;};}function removeEntity(_0x204507,_0x285437){return function(_0x563799){if(_0x563799){return _0x563799[_0x7995('0x27')]()[_0x7995('0x26')](function(){_0x204507[_0x7995('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x39df42,_0x34e70c){return function(_0x401dc3){if(!_0x401dc3){_0x39df42[_0x7995('0x1b')](0x194);}return _0x401dc3;};}function handleError(_0x3a3fcf,_0x2a307e){_0x2a307e=_0x2a307e||0x1f4;return function(_0x56691a){logger[_0x7995('0x28')](_0x56691a['stack']);if(_0x56691a[_0x7995('0x29')]){delete _0x56691a[_0x7995('0x29')];}_0x3a3fcf[_0x7995('0x1c')](_0x2a307e)[_0x7995('0x2a')](_0x56691a);};}exports[_0x7995('0x2b')]=function(_0x4b6f99,_0x9b2a15){if(_0x4b6f99['body']['id']){delete _0x4b6f99[_0x7995('0x2c')]['id'];}return db[_0x7995('0x2d')][_0x7995('0x2e')]({'where':{'id':_0x4b6f99['params']['id']}})['then'](handleEntityNotFound(_0x9b2a15,null))['then'](saveUpdates(_0x4b6f99[_0x7995('0x2c')],null))[_0x7995('0x26')](respondWithResult(_0x9b2a15,null))[_0x7995('0x2f')](handleError(_0x9b2a15,null));};exports[_0x7995('0x27')]=function(_0x2e3493,_0x1ca460){return db['Condition']['find']({'where':{'id':_0x2e3493[_0x7995('0x30')]['id']}})['then'](handleEntityNotFound(_0x1ca460,null))[_0x7995('0x26')](removeEntity(_0x1ca460,null))[_0x7995('0x2f')](handleError(_0x1ca460,null));};
\ No newline at end of file
index 8540988..45d076f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8a42=['../../config/environment','exports','define','Condition','tools_conditions','lodash','../../config/logger','api','request-promise','path','rimraf'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0x8a42,0x1f4));var _0x28a4=function(_0x39238c,_0x4cc91c){_0x39238c=_0x39238c-0x0;var _0xfa45b3=_0x8a42[_0x39238c];return _0xfa45b3;};'use strict';var _=require(_0x28a4('0x0'));var util=require('util');var logger=require(_0x28a4('0x1'))(_0x28a4('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x28a4('0x3'));var fs=require('fs');var path=require(_0x28a4('0x4'));var rimraf=require(_0x28a4('0x5'));var config=require(_0x28a4('0x6'));var attributes=require('./condition.attributes');module[_0x28a4('0x7')]=function(_0x1dab5d,_0xb1c062){return _0x1dab5d[_0x28a4('0x8')](_0x28a4('0x9'),attributes,{'tableName':_0x28a4('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb38d=['rimraf','../../config/environment','./condition.attributes','exports','define','Condition','tools_conditions','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x1fb8a7,_0x4bc235){var _0xdeef79=function(_0x6a63e7){while(--_0x6a63e7){_0x1fb8a7['push'](_0x1fb8a7['shift']());}};_0xdeef79(++_0x4bc235);}(_0xb38d,0x181));var _0xdb38=function(_0xe50e1,_0x30bf72){_0xe50e1=_0xe50e1-0x0;var _0x441f9a=_0xb38d[_0xe50e1];return _0x441f9a;};'use strict';var _=require(_0xdb38('0x0'));var util=require(_0xdb38('0x1'));var logger=require(_0xdb38('0x2'))(_0xdb38('0x3'));var moment=require(_0xdb38('0x4'));var BPromise=require(_0xdb38('0x5'));var rp=require(_0xdb38('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xdb38('0x7'));var config=require(_0xdb38('0x8'));var attributes=require(_0xdb38('0x9'));module[_0xdb38('0xa')]=function(_0x2a335c,_0x194da0){return _0x2a335c[_0xdb38('0xb')](_0xdb38('0xc'),attributes,{'tableName':_0xdb38('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7bc2f70..3b92c47 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4116=['jayson/promise','client','http','request','then','info','Condition,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','util','moment','ioredis','../../config/logger','rpc'];(function(_0x1649ea,_0x422343){var _0x42787d=function(_0x22f3fb){while(--_0x22f3fb){_0x1649ea['push'](_0x1649ea['shift']());}};_0x42787d(++_0x422343);}(_0x4116,0x175));var _0x6411=function(_0x4152fa,_0x6dc7a3){_0x4152fa=_0x4152fa-0x0;var _0x3c3779=_0x4116[_0x4152fa];return _0x3c3779;};'use strict';var _=require('lodash');var util=require(_0x6411('0x0'));var moment=require(_0x6411('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6411('0x2'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x6411('0x3'))(_0x6411('0x4'));var config=require('../../config/environment');var jayson=require(_0x6411('0x5'));var client=jayson[_0x6411('0x6')][_0x6411('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x418817,_0x41f39d,_0x540a56){return new BPromise(function(_0x568ba0,_0xdda973){return client[_0x6411('0x8')](_0x418817,_0x540a56)[_0x6411('0x9')](function(_0x23fac3){logger[_0x6411('0xa')](_0x6411('0xb'),_0x41f39d,_0x6411('0xc'));logger[_0x6411('0xd')]('Condition,\x20%s,\x20%s,\x20%s',_0x41f39d,'request\x20sent',JSON[_0x6411('0xe')](_0x23fac3));if(_0x23fac3[_0x6411('0xf')]){if(_0x23fac3[_0x6411('0xf')][_0x6411('0x10')]===0x1f4){logger[_0x6411('0xf')](_0x6411('0xb'),_0x41f39d,_0x23fac3[_0x6411('0xf')][_0x6411('0x11')]);return _0xdda973(_0x23fac3[_0x6411('0xf')][_0x6411('0x11')]);}logger[_0x6411('0xf')](_0x6411('0xb'),_0x41f39d,_0x23fac3[_0x6411('0xf')][_0x6411('0x11')]);return _0x568ba0(_0x23fac3[_0x6411('0xf')][_0x6411('0x11')]);}else{logger['info'](_0x6411('0xb'),_0x41f39d,_0x6411('0xc'));_0x568ba0(_0x23fac3['result']['message']);}})['catch'](function(_0x495db7){logger[_0x6411('0xf')](_0x6411('0xb'),_0x41f39d,_0x495db7);_0xdda973(_0x495db7);});});}
\ No newline at end of file
+var _0xae8e=['result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','then','info','Condition,\x20%s,\x20%s','request\x20sent','debug','Condition,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x28784a,_0x38d42e){var _0xbc557f=function(_0x9b03da){while(--_0x9b03da){_0x28784a['push'](_0x28784a['shift']());}};_0xbc557f(++_0x38d42e);}(_0xae8e,0x12c));var _0xeae8=function(_0x363f4c,_0x56dfb2){_0x363f4c=_0x363f4c-0x0;var _0x44175b=_0xae8e[_0x363f4c];return _0x44175b;};'use strict';var _=require(_0xeae8('0x0'));var util=require(_0xeae8('0x1'));var moment=require(_0xeae8('0x2'));var BPromise=require(_0xeae8('0x3'));var rs=require(_0xeae8('0x4'));var fs=require('fs');var Redis=require(_0xeae8('0x5'));var db=require(_0xeae8('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xeae8('0x7'))(_0xeae8('0x8'));var config=require(_0xeae8('0x9'));var jayson=require(_0xeae8('0xa'));var client=jayson['client'][_0xeae8('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x490896,_0x5cccde,_0x38daff){return new BPromise(function(_0x4e3e7f,_0xb736e0){return client['request'](_0x490896,_0x38daff)[_0xeae8('0xc')](function(_0x35ab6e){logger[_0xeae8('0xd')](_0xeae8('0xe'),_0x5cccde,_0xeae8('0xf'));logger[_0xeae8('0x10')](_0xeae8('0x11'),_0x5cccde,'request\x20sent',JSON[_0xeae8('0x12')](_0x35ab6e));if(_0x35ab6e[_0xeae8('0x13')]){if(_0x35ab6e[_0xeae8('0x13')][_0xeae8('0x14')]===0x1f4){logger[_0xeae8('0x13')](_0xeae8('0xe'),_0x5cccde,_0x35ab6e[_0xeae8('0x13')]['message']);return _0xb736e0(_0x35ab6e[_0xeae8('0x13')]['message']);}logger[_0xeae8('0x13')](_0xeae8('0xe'),_0x5cccde,_0x35ab6e[_0xeae8('0x13')][_0xeae8('0x15')]);return _0x4e3e7f(_0x35ab6e['error']['message']);}else{logger[_0xeae8('0xd')]('Condition,\x20%s,\x20%s',_0x5cccde,_0xeae8('0xf'));_0x4e3e7f(_0x35ab6e[_0xeae8('0x16')][_0xeae8('0x15')]);}})['catch'](function(_0x5443e5){logger['error'](_0xeae8('0xe'),_0x5cccde,_0x5443e5);_0xb736e0(_0x5443e5);});});}
\ No newline at end of file
index 09ce6d0..d47062d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x62ae=['put','/:id','isAuthenticated','update','delete','destroy','multer','util','path','express','fs-extra','../../components/auth/service','../../config/environment','./condition.controller'];(function(_0x449a5f,_0x101937){var _0x18ba64=function(_0x3ede05){while(--_0x3ede05){_0x449a5f['push'](_0x449a5f['shift']());}};_0x18ba64(++_0x101937);}(_0x62ae,0x172));var _0xe62a=function(_0x2259d8,_0x2abf29){_0x2259d8=_0x2259d8-0x0;var _0x36321b=_0x62ae[_0x2259d8];return _0x36321b;};'use strict';var multer=require(_0xe62a('0x0'));var util=require(_0xe62a('0x1'));var path=require(_0xe62a('0x2'));var timeout=require('connect-timeout');var express=require(_0xe62a('0x3'));var router=express['Router']();var fs_extra=require(_0xe62a('0x4'));var auth=require(_0xe62a('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xe62a('0x6'));var controller=require(_0xe62a('0x7'));router[_0xe62a('0x8')](_0xe62a('0x9'),auth[_0xe62a('0xa')](),controller[_0xe62a('0xb')]);router[_0xe62a('0xc')](_0xe62a('0x9'),auth[_0xe62a('0xa')](),controller[_0xe62a('0xd')]);module['exports']=router;
\ No newline at end of file
+var _0x6ecf=['/:id','isAuthenticated','update','delete','destroy','exports','path','express','Router','../../components/auth/service','../../components/interaction/service','./condition.controller','put'];(function(_0x42bda2,_0x4106ca){var _0x625d2d=function(_0x47b4ba){while(--_0x47b4ba){_0x42bda2['push'](_0x42bda2['shift']());}};_0x625d2d(++_0x4106ca);}(_0x6ecf,0xd6));var _0xf6ec=function(_0x5037ab,_0x43209e){_0x5037ab=_0x5037ab-0x0;var _0x512adb=_0x6ecf[_0x5037ab];return _0x512adb;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xf6ec('0x0'));var timeout=require('connect-timeout');var express=require(_0xf6ec('0x1'));var router=express[_0xf6ec('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0xf6ec('0x3'));var interaction=require(_0xf6ec('0x4'));var config=require('../../config/environment');var controller=require(_0xf6ec('0x5'));router[_0xf6ec('0x6')](_0xf6ec('0x7'),auth[_0xf6ec('0x8')](),controller[_0xf6ec('0x9')]);router[_0xf6ec('0xa')](_0xf6ec('0x7'),auth[_0xf6ec('0x8')](),controller[_0xf6ec('0xb')]);module[_0xf6ec('0xc')]=router;
\ No newline at end of file
index 6f9bacd..5ddaf1a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x04b4=['name','sequelize','STRING'];(function(_0x2ab65a,_0x3b280c){var _0x3520be=function(_0x3ca5c3){while(--_0x3ca5c3){_0x2ab65a['push'](_0x2ab65a['shift']());}};_0x3520be(++_0x3b280c);}(_0x04b4,0xeb));var _0x404b=function(_0x212566,_0x56e87c){_0x212566=_0x212566-0x0;var _0x34ad2e=_0x04b4[_0x212566];return _0x34ad2e;};'use strict';var Sequelize=require(_0x404b('0x0'));module['exports']={'name':{'type':Sequelize[_0x404b('0x1')],'allowNull':![],'unique':_0x404b('0x2')},'OrderBy':{'type':Sequelize['INTEGER'],'allowNull':!![]},'rgbBackgroundColor':{'type':Sequelize['STRING'],'allowNull':!![]}};
\ No newline at end of file
+var _0xddce=['exports','STRING','name','INTEGER','sequelize'];(function(_0x2b4411,_0x2625ed){var _0x8e41ef=function(_0x2aa8c1){while(--_0x2aa8c1){_0x2b4411['push'](_0x2b4411['shift']());}};_0x8e41ef(++_0x2625ed);}(_0xddce,0x1b7));var _0xeddc=function(_0x2b356e,_0x341efe){_0x2b356e=_0x2b356e-0x0;var _0x42b497=_0xddce[_0x2b356e];return _0x42b497;};'use strict';var Sequelize=require(_0xeddc('0x0'));module[_0xeddc('0x1')]={'name':{'type':Sequelize[_0xeddc('0x2')],'allowNull':![],'unique':_0xeddc('0x3')},'OrderBy':{'type':Sequelize[_0xeddc('0x4')],'allowNull':!![]},'rgbBackgroundColor':{'type':Sequelize[_0xeddc('0x2')],'allowNull':!![]}};
\ No newline at end of file
index 318c78a..be8bcd6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7916=['../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','undefined','limit','count','offset','set','Content-Range','reject','update','then','get','destroy','end','error','name','send','index','map','ContactItemType','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','fields','length','attributes','nolimit','sort','where','merge','VIRTUAL','filter','options','includeAll','findAll','rows','catch','params','include','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','CmContactHasItem','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','ejs','fs-extra','squel','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs'];(function(_0x471448,_0x1c0e9e){var _0x38190b=function(_0x41dd2f){while(--_0x41dd2f){_0x471448['push'](_0x471448['shift']());}};_0x38190b(++_0x1c0e9e);}(_0x7916,0x128));var _0x6791=function(_0x1d2d61,_0x27ab3c){_0x1d2d61=_0x1d2d61-0x0;var _0x312691=_0x7916[_0x1d2d61];return _0x312691;};'use strict';var emlformat=require(_0x6791('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x6791('0x1'));var jsonpatch=require(_0x6791('0x2'));var rp=require('request-promise');var moment=require(_0x6791('0x3'));var BPromise=require(_0x6791('0x4'));var Mustache=require(_0x6791('0x5'));var util=require(_0x6791('0x6'));var path=require('path');var sox=require(_0x6791('0x7'));var csv=require('to-csv');var ejs=require(_0x6791('0x8'));var fs=require('fs');var fs_extra=require(_0x6791('0x9'));var _=require('lodash');var squel=require(_0x6791('0xa'));var crypto=require('crypto');var jsforce=require(_0x6791('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x6791('0xc'));var Papa=require(_0x6791('0xd'));var Redis=require('ioredis');var authService=require(_0x6791('0xe'));var qs=require(_0x6791('0xf'));var as=require(_0x6791('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x6791('0x11'))(_0x6791('0x12'));var utils=require(_0x6791('0x13'));var config=require(_0x6791('0x14'));var licenseUtil=require(_0x6791('0x15'));var db=require(_0x6791('0x16'))['db'];function respondWithStatusCode(_0x61ac73,_0x16c62b){_0x16c62b=_0x16c62b||0xcc;return function(_0x423e22){if(_0x423e22){return _0x61ac73[_0x6791('0x17')](_0x16c62b);}return _0x61ac73[_0x6791('0x18')](_0x16c62b)['end']();};}function respondWithResult(_0x4b1719,_0x34b28d){_0x34b28d=_0x34b28d||0xc8;return function(_0x5122f9){if(_0x5122f9){return _0x4b1719[_0x6791('0x18')](_0x34b28d)['json'](_0x5122f9);}};}function respondWithFilteredResult(_0x3be9f0,_0x163898){return function(_0x517910){if(_0x517910){var _0x3e4792=typeof _0x163898['offset']===_0x6791('0x19')&&typeof _0x163898[_0x6791('0x1a')]==='undefined';var _0xbc35d=_0x517910[_0x6791('0x1b')];var _0x5bec14=_0x3e4792?0x0:_0x163898[_0x6791('0x1c')];var _0x4d8a79=_0x3e4792?_0x517910[_0x6791('0x1b')]:_0x163898[_0x6791('0x1c')]+_0x163898[_0x6791('0x1a')];var _0x3a72ce;if(_0x4d8a79>=_0xbc35d){_0x4d8a79=_0xbc35d;_0x3a72ce=0xc8;}else{_0x3a72ce=0xce;}_0x3be9f0[_0x6791('0x18')](_0x3a72ce);return _0x3be9f0[_0x6791('0x1d')](_0x6791('0x1e'),_0x5bec14+'-'+_0x4d8a79+'/'+_0xbc35d)['json'](_0x517910);}return null;};}function patchUpdates(_0x4a2922){return function(_0x306acb){try{jsonpatch['apply'](_0x306acb,_0x4a2922,!![]);}catch(_0x21ef16){return BPromise[_0x6791('0x1f')](_0x21ef16);}return _0x306acb['save']();};}function saveUpdates(_0x17f200,_0x309610){return function(_0x15b9ab){if(_0x15b9ab){return _0x15b9ab[_0x6791('0x20')](_0x17f200)['then'](function(_0x3e17b3){return _0x3e17b3;});}return null;};}function removeEntity(_0x1b516d,_0x4a8717){return function(_0x53bb44){if(_0x53bb44){return _0x53bb44['destroy']()[_0x6791('0x21')](function(){var _0x502043=_0x53bb44[_0x6791('0x22')]({'plain':!![]});var _0x5409f1='ContactItemTypes';return db['UserProfileResource'][_0x6791('0x23')]({'where':{'type':_0x5409f1,'resourceId':_0x502043['id']}})[_0x6791('0x21')](function(){return _0x53bb44;});})[_0x6791('0x21')](function(){_0x1b516d['status'](0xcc)[_0x6791('0x24')]();});}};}function handleEntityNotFound(_0x30cc17,_0x493a59){return function(_0x342107){if(!_0x342107){_0x30cc17['sendStatus'](0x194);}return _0x342107;};}function handleError(_0x424b0e,_0x49dd24){_0x49dd24=_0x49dd24||0x1f4;return function(_0x4fc5d5){logger[_0x6791('0x25')](_0x4fc5d5['stack']);if(_0x4fc5d5[_0x6791('0x26')]){delete _0x4fc5d5[_0x6791('0x26')];}_0x424b0e['status'](_0x49dd24)[_0x6791('0x27')](_0x4fc5d5);};}exports[_0x6791('0x28')]=function(_0x234c5e,_0xd36448){var _0x5d9d54={},_0x4f91d6={},_0x348b9c={'count':0x0,'rows':[]};var _0x5e5ac3=_[_0x6791('0x29')](db[_0x6791('0x2a')][_0x6791('0x2b')],function(_0x2b98b8){return{'name':_0x2b98b8[_0x6791('0x2c')],'type':_0x2b98b8[_0x6791('0x2d')][_0x6791('0x2e')]};});_0x4f91d6[_0x6791('0x2f')]=_[_0x6791('0x29')](_0x5e5ac3,_0x6791('0x26'));_0x4f91d6['query']=_[_0x6791('0x30')](_0x234c5e[_0x6791('0x31')]);_0x4f91d6[_0x6791('0x32')]=_[_0x6791('0x33')](_0x4f91d6[_0x6791('0x2f')],_0x4f91d6[_0x6791('0x31')]);_0x5d9d54['attributes']=_['intersection'](_0x4f91d6['model'],qs[_0x6791('0x34')](_0x234c5e[_0x6791('0x31')][_0x6791('0x34')]));_0x5d9d54['attributes']=_0x5d9d54['attributes'][_0x6791('0x35')]?_0x5d9d54[_0x6791('0x36')]:_0x4f91d6[_0x6791('0x2f')];if(!_0x234c5e[_0x6791('0x31')]['hasOwnProperty'](_0x6791('0x37'))){_0x5d9d54[_0x6791('0x1a')]=qs[_0x6791('0x1a')](_0x234c5e['query'][_0x6791('0x1a')]);_0x5d9d54['offset']=qs['offset'](_0x234c5e[_0x6791('0x31')][_0x6791('0x1c')]);}_0x5d9d54['order']=qs[_0x6791('0x38')](_0x234c5e[_0x6791('0x31')][_0x6791('0x38')]);_0x5d9d54[_0x6791('0x39')]=qs[_0x6791('0x32')](_['pick'](_0x234c5e[_0x6791('0x31')],_0x4f91d6[_0x6791('0x32')]),_0x5e5ac3);if(_0x234c5e[_0x6791('0x31')]['filter']){_0x5d9d54[_0x6791('0x39')]=_[_0x6791('0x3a')](_0x5d9d54[_0x6791('0x39')],{'$or':_['map'](_0x5e5ac3,function(_0x11a012){if(_0x11a012[_0x6791('0x2d')]!==_0x6791('0x3b')){var _0x122aa5={};_0x122aa5[_0x11a012['name']]={'$like':'%'+_0x234c5e[_0x6791('0x31')][_0x6791('0x3c')]+'%'};return _0x122aa5;}})});}_0x5d9d54=_[_0x6791('0x3a')]({},_0x5d9d54,_0x234c5e[_0x6791('0x3d')]);var _0x12f121={'where':_0x5d9d54[_0x6791('0x39')]};return db[_0x6791('0x2a')][_0x6791('0x1b')](_0x12f121)[_0x6791('0x21')](function(_0x4e4004){_0x348b9c['count']=_0x4e4004;if(_0x234c5e[_0x6791('0x31')][_0x6791('0x3e')]){_0x5d9d54['include']=[{'all':!![]}];}return db[_0x6791('0x2a')][_0x6791('0x3f')](_0x5d9d54);})[_0x6791('0x21')](function(_0x3edb86){_0x348b9c[_0x6791('0x40')]=_0x3edb86;return _0x348b9c;})[_0x6791('0x21')](respondWithFilteredResult(_0xd36448,_0x5d9d54))[_0x6791('0x41')](handleError(_0xd36448,null));};exports['show']=function(_0xb3bea8,_0x4b9fca){var _0x17ecf0={'raw':!![],'where':{'id':_0xb3bea8[_0x6791('0x42')]['id']}},_0xfc170e={};_0xfc170e[_0x6791('0x2f')]=_['keys'](db[_0x6791('0x2a')][_0x6791('0x2b')]);_0xfc170e[_0x6791('0x31')]=_[_0x6791('0x30')](_0xb3bea8[_0x6791('0x31')]);_0xfc170e[_0x6791('0x32')]=_[_0x6791('0x33')](_0xfc170e[_0x6791('0x2f')],_0xfc170e['query']);_0x17ecf0[_0x6791('0x36')]=_[_0x6791('0x33')](_0xfc170e[_0x6791('0x2f')],qs[_0x6791('0x34')](_0xb3bea8['query'][_0x6791('0x34')]));_0x17ecf0[_0x6791('0x36')]=_0x17ecf0['attributes'][_0x6791('0x35')]?_0x17ecf0['attributes']:_0xfc170e[_0x6791('0x2f')];if(_0xb3bea8[_0x6791('0x31')][_0x6791('0x3e')]){_0x17ecf0[_0x6791('0x43')]=[{'all':!![]}];}_0x17ecf0=_[_0x6791('0x3a')]({},_0x17ecf0,_0xb3bea8[_0x6791('0x3d')]);return db[_0x6791('0x2a')][_0x6791('0x44')](_0x17ecf0)[_0x6791('0x21')](handleEntityNotFound(_0x4b9fca,null))['then'](respondWithResult(_0x4b9fca,null))[_0x6791('0x41')](handleError(_0x4b9fca,null));};exports['create']=function(_0x10e806,_0x2bb86a){return db[_0x6791('0x2a')][_0x6791('0x45')](_0x10e806[_0x6791('0x46')],{})['then'](function(_0x2bc08d){var _0x35e087=_0x10e806[_0x6791('0x47')][_0x6791('0x22')]({'plain':!![]});if(!_0x35e087)throw new Error(_0x6791('0x48'));if(_0x35e087['role']===_0x6791('0x47')){var _0x42948b=_0x2bc08d['get']({'plain':!![]});var _0x3df699='ContactItemTypes';return db[_0x6791('0x49')][_0x6791('0x44')]({'where':{'name':_0x3df699,'userProfileId':_0x35e087[_0x6791('0x4a')]},'raw':!![]})[_0x6791('0x21')](function(_0x558069){if(_0x558069&&_0x558069[_0x6791('0x4b')]===0x0){return db[_0x6791('0x4c')]['create']({'name':_0x42948b[_0x6791('0x26')],'resourceId':_0x42948b['id'],'type':_0x558069[_0x6791('0x26')],'sectionId':_0x558069['id']},{})[_0x6791('0x21')](function(){return _0x2bc08d;});}else{return _0x2bc08d;}})['catch'](function(_0x355e97){logger[_0x6791('0x25')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x355e97);throw _0x355e97;});}return _0x2bc08d;})[_0x6791('0x21')](respondWithResult(_0x2bb86a,0xc9))[_0x6791('0x41')](handleError(_0x2bb86a,null));};exports['update']=function(_0x169531,_0x216498){if(_0x169531[_0x6791('0x46')]['id']){delete _0x169531[_0x6791('0x46')]['id'];}return db['ContactItemType'][_0x6791('0x44')]({'where':{'id':_0x169531[_0x6791('0x42')]['id']}})[_0x6791('0x21')](handleEntityNotFound(_0x216498,null))['then'](saveUpdates(_0x169531['body'],null))[_0x6791('0x21')](respondWithResult(_0x216498,null))[_0x6791('0x41')](handleError(_0x216498,null));};exports[_0x6791('0x23')]=function(_0x45756f,_0x288f05){return db['ContactItemType']['find']({'where':{'id':_0x45756f[_0x6791('0x42')]['id']}})['then'](handleEntityNotFound(_0x288f05,null))['then'](db[_0x6791('0x4d')][_0x6791('0x20')]({'ItemTypeId':null},{'where':{'ItemTypeId':_0x45756f[_0x6791('0x42')]['id']}}))[_0x6791('0x21')](removeEntity(_0x288f05,null))[_0x6791('0x41')](handleError(_0x288f05,null));};
\ No newline at end of file
+var _0x757a=['sox','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','status','json','offset','undefined','count','limit','Content-Range','apply','update','then','get','ContactItemTypes','UserProfileResource','destroy','end','error','name','send','map','ContactItemType','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','options','include','rows','catch','params','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','CmContactHasItem','rimraf','zip-dir','bluebird','mustache','util','path'];(function(_0x154814,_0x1416f6){var _0x15e0da=function(_0x5bd66a){while(--_0x5bd66a){_0x154814['push'](_0x154814['shift']());}};_0x15e0da(++_0x1416f6);}(_0x757a,0xde));var _0xa757=function(_0x5eab31,_0x368250){_0x5eab31=_0x5eab31-0x0;var _0x427b36=_0x757a[_0x5eab31];return _0x427b36;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xa757('0x0'));var zipdir=require(_0xa757('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xa757('0x2'));var Mustache=require(_0xa757('0x3'));var util=require(_0xa757('0x4'));var path=require(_0xa757('0x5'));var sox=require(_0xa757('0x6'));var csv=require(_0xa757('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa757('0x8'));var _=require(_0xa757('0x9'));var squel=require('squel');var crypto=require(_0xa757('0xa'));var jsforce=require(_0xa757('0xb'));var deskjs=require(_0xa757('0xc'));var toCsv=require(_0xa757('0x7'));var querystring=require(_0xa757('0xd'));var Papa=require('papaparse');var Redis=require(_0xa757('0xe'));var authService=require(_0xa757('0xf'));var qs=require(_0xa757('0x10'));var as=require(_0xa757('0x11'));var hardwareService=require(_0xa757('0x12'));var logger=require(_0xa757('0x13'))(_0xa757('0x14'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4db68e,_0x421040){_0x421040=_0x421040||0xcc;return function(_0x544b45){if(_0x544b45){return _0x4db68e['sendStatus'](_0x421040);}return _0x4db68e[_0xa757('0x15')](_0x421040)['end']();};}function respondWithResult(_0x481508,_0x32112b){_0x32112b=_0x32112b||0xc8;return function(_0x1b670e){if(_0x1b670e){return _0x481508[_0xa757('0x15')](_0x32112b)[_0xa757('0x16')](_0x1b670e);}};}function respondWithFilteredResult(_0x86abd,_0x31cfd2){return function(_0xf12b68){if(_0xf12b68){var _0x2f7947=typeof _0x31cfd2[_0xa757('0x17')]===_0xa757('0x18')&&typeof _0x31cfd2['limit']===_0xa757('0x18');var _0x44eab8=_0xf12b68[_0xa757('0x19')];var _0x4d9f58=_0x2f7947?0x0:_0x31cfd2['offset'];var _0x151c04=_0x2f7947?_0xf12b68[_0xa757('0x19')]:_0x31cfd2[_0xa757('0x17')]+_0x31cfd2[_0xa757('0x1a')];var _0x27f4ba;if(_0x151c04>=_0x44eab8){_0x151c04=_0x44eab8;_0x27f4ba=0xc8;}else{_0x27f4ba=0xce;}_0x86abd[_0xa757('0x15')](_0x27f4ba);return _0x86abd['set'](_0xa757('0x1b'),_0x4d9f58+'-'+_0x151c04+'/'+_0x44eab8)['json'](_0xf12b68);}return null;};}function patchUpdates(_0x32c2a1){return function(_0x167640){try{jsonpatch[_0xa757('0x1c')](_0x167640,_0x32c2a1,!![]);}catch(_0x2c9ec6){return BPromise['reject'](_0x2c9ec6);}return _0x167640['save']();};}function saveUpdates(_0x40ec48,_0x2159cf){return function(_0x2ba923){if(_0x2ba923){return _0x2ba923[_0xa757('0x1d')](_0x40ec48)[_0xa757('0x1e')](function(_0x40562f){return _0x40562f;});}return null;};}function removeEntity(_0x2ca10d,_0x21f1af){return function(_0x2bf276){if(_0x2bf276){return _0x2bf276['destroy']()[_0xa757('0x1e')](function(){var _0x59e9d4=_0x2bf276[_0xa757('0x1f')]({'plain':!![]});var _0x47903b=_0xa757('0x20');return db[_0xa757('0x21')][_0xa757('0x22')]({'where':{'type':_0x47903b,'resourceId':_0x59e9d4['id']}})['then'](function(){return _0x2bf276;});})[_0xa757('0x1e')](function(){_0x2ca10d[_0xa757('0x15')](0xcc)[_0xa757('0x23')]();});}};}function handleEntityNotFound(_0x3bf7f3,_0x5b4779){return function(_0x449a7d){if(!_0x449a7d){_0x3bf7f3['sendStatus'](0x194);}return _0x449a7d;};}function handleError(_0x5a5664,_0x54b75e){_0x54b75e=_0x54b75e||0x1f4;return function(_0x4f8de2){logger[_0xa757('0x24')](_0x4f8de2['stack']);if(_0x4f8de2[_0xa757('0x25')]){delete _0x4f8de2[_0xa757('0x25')];}_0x5a5664['status'](_0x54b75e)[_0xa757('0x26')](_0x4f8de2);};}exports['index']=function(_0x2c4823,_0xa6d0f6){var _0x5307c3={},_0x235e54={},_0x5ade7b={'count':0x0,'rows':[]};var _0x3a4a66=_[_0xa757('0x27')](db[_0xa757('0x28')][_0xa757('0x29')],function(_0xcc87c0){return{'name':_0xcc87c0[_0xa757('0x2a')],'type':_0xcc87c0[_0xa757('0x2b')][_0xa757('0x2c')]};});_0x235e54[_0xa757('0x2d')]=_[_0xa757('0x27')](_0x3a4a66,_0xa757('0x25'));_0x235e54[_0xa757('0x2e')]=_[_0xa757('0x2f')](_0x2c4823[_0xa757('0x2e')]);_0x235e54[_0xa757('0x30')]=_[_0xa757('0x31')](_0x235e54[_0xa757('0x2d')],_0x235e54[_0xa757('0x2e')]);_0x5307c3[_0xa757('0x32')]=_[_0xa757('0x31')](_0x235e54[_0xa757('0x2d')],qs[_0xa757('0x33')](_0x2c4823[_0xa757('0x2e')][_0xa757('0x33')]));_0x5307c3['attributes']=_0x5307c3[_0xa757('0x32')][_0xa757('0x34')]?_0x5307c3[_0xa757('0x32')]:_0x235e54[_0xa757('0x2d')];if(!_0x2c4823[_0xa757('0x2e')]['hasOwnProperty'](_0xa757('0x35'))){_0x5307c3[_0xa757('0x1a')]=qs[_0xa757('0x1a')](_0x2c4823[_0xa757('0x2e')][_0xa757('0x1a')]);_0x5307c3[_0xa757('0x17')]=qs['offset'](_0x2c4823[_0xa757('0x2e')][_0xa757('0x17')]);}_0x5307c3[_0xa757('0x36')]=qs[_0xa757('0x37')](_0x2c4823[_0xa757('0x2e')][_0xa757('0x37')]);_0x5307c3[_0xa757('0x38')]=qs[_0xa757('0x30')](_[_0xa757('0x39')](_0x2c4823['query'],_0x235e54[_0xa757('0x30')]),_0x3a4a66);if(_0x2c4823[_0xa757('0x2e')][_0xa757('0x3a')]){_0x5307c3[_0xa757('0x38')]=_[_0xa757('0x3b')](_0x5307c3[_0xa757('0x38')],{'$or':_['map'](_0x3a4a66,function(_0x10d3fd){if(_0x10d3fd[_0xa757('0x2b')]!=='VIRTUAL'){var _0x5eae0b={};_0x5eae0b[_0x10d3fd[_0xa757('0x25')]]={'$like':'%'+_0x2c4823[_0xa757('0x2e')]['filter']+'%'};return _0x5eae0b;}})});}_0x5307c3=_['merge']({},_0x5307c3,_0x2c4823[_0xa757('0x3c')]);var _0x1725a2={'where':_0x5307c3[_0xa757('0x38')]};return db['ContactItemType'][_0xa757('0x19')](_0x1725a2)[_0xa757('0x1e')](function(_0x26802c){_0x5ade7b[_0xa757('0x19')]=_0x26802c;if(_0x2c4823[_0xa757('0x2e')]['includeAll']){_0x5307c3[_0xa757('0x3d')]=[{'all':!![]}];}return db['ContactItemType']['findAll'](_0x5307c3);})[_0xa757('0x1e')](function(_0x57298b){_0x5ade7b[_0xa757('0x3e')]=_0x57298b;return _0x5ade7b;})[_0xa757('0x1e')](respondWithFilteredResult(_0xa6d0f6,_0x5307c3))[_0xa757('0x3f')](handleError(_0xa6d0f6,null));};exports['show']=function(_0x5d25bb,_0x11e141){var _0x129d77={'raw':!![],'where':{'id':_0x5d25bb[_0xa757('0x40')]['id']}},_0x2b171c={};_0x2b171c[_0xa757('0x2d')]=_[_0xa757('0x2f')](db['ContactItemType'][_0xa757('0x29')]);_0x2b171c[_0xa757('0x2e')]=_['keys'](_0x5d25bb[_0xa757('0x2e')]);_0x2b171c['filters']=_[_0xa757('0x31')](_0x2b171c[_0xa757('0x2d')],_0x2b171c['query']);_0x129d77[_0xa757('0x32')]=_[_0xa757('0x31')](_0x2b171c['model'],qs[_0xa757('0x33')](_0x5d25bb[_0xa757('0x2e')][_0xa757('0x33')]));_0x129d77[_0xa757('0x32')]=_0x129d77['attributes'][_0xa757('0x34')]?_0x129d77[_0xa757('0x32')]:_0x2b171c[_0xa757('0x2d')];if(_0x5d25bb[_0xa757('0x2e')]['includeAll']){_0x129d77[_0xa757('0x3d')]=[{'all':!![]}];}_0x129d77=_['merge']({},_0x129d77,_0x5d25bb['options']);return db[_0xa757('0x28')][_0xa757('0x41')](_0x129d77)[_0xa757('0x1e')](handleEntityNotFound(_0x11e141,null))['then'](respondWithResult(_0x11e141,null))[_0xa757('0x3f')](handleError(_0x11e141,null));};exports['create']=function(_0x2ed63f,_0x151cc3){return db[_0xa757('0x28')][_0xa757('0x42')](_0x2ed63f[_0xa757('0x43')],{})[_0xa757('0x1e')](function(_0x57bf73){var _0x505cd=_0x2ed63f['user'][_0xa757('0x1f')]({'plain':!![]});if(!_0x505cd)throw new Error(_0xa757('0x44'));if(_0x505cd[_0xa757('0x45')]===_0xa757('0x46')){var _0x319988=_0x57bf73[_0xa757('0x1f')]({'plain':!![]});var _0x15bad7=_0xa757('0x20');return db[_0xa757('0x47')][_0xa757('0x41')]({'where':{'name':_0x15bad7,'userProfileId':_0x505cd[_0xa757('0x48')]},'raw':!![]})[_0xa757('0x1e')](function(_0x2367c7){if(_0x2367c7&&_0x2367c7[_0xa757('0x49')]===0x0){return db[_0xa757('0x21')][_0xa757('0x42')]({'name':_0x319988['name'],'resourceId':_0x319988['id'],'type':_0x2367c7[_0xa757('0x25')],'sectionId':_0x2367c7['id']},{})['then'](function(){return _0x57bf73;});}else{return _0x57bf73;}})[_0xa757('0x3f')](function(_0x311c25){logger[_0xa757('0x24')](_0xa757('0x4a'),_0x311c25);throw _0x311c25;});}return _0x57bf73;})['then'](respondWithResult(_0x151cc3,0xc9))[_0xa757('0x3f')](handleError(_0x151cc3,null));};exports[_0xa757('0x1d')]=function(_0x8614f9,_0x980e1){if(_0x8614f9['body']['id']){delete _0x8614f9[_0xa757('0x43')]['id'];}return db[_0xa757('0x28')][_0xa757('0x41')]({'where':{'id':_0x8614f9[_0xa757('0x40')]['id']}})[_0xa757('0x1e')](handleEntityNotFound(_0x980e1,null))[_0xa757('0x1e')](saveUpdates(_0x8614f9['body'],null))['then'](respondWithResult(_0x980e1,null))['catch'](handleError(_0x980e1,null));};exports['destroy']=function(_0x1d8742,_0x9b3779){return db[_0xa757('0x28')][_0xa757('0x41')]({'where':{'id':_0x1d8742[_0xa757('0x40')]['id']}})[_0xa757('0x1e')](handleEntityNotFound(_0x9b3779,null))['then'](db[_0xa757('0x4b')][_0xa757('0x1d')]({'ItemTypeId':null},{'where':{'ItemTypeId':_0x1d8742[_0xa757('0x40')]['id']}}))[_0xa757('0x1e')](removeEntity(_0x9b3779,null))['catch'](handleError(_0x9b3779,null));};
\ No newline at end of file
index a7a31d8..a4fec65 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd02d=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./contactItemType.attributes','exports','define','ContactItemType','tools_contact_item_types'];(function(_0x3251d4,_0x216861){var _0x2bf61f=function(_0x302b76){while(--_0x302b76){_0x3251d4['push'](_0x3251d4['shift']());}};_0x2bf61f(++_0x216861);}(_0xd02d,0xd2));var _0xdd02=function(_0x3c8c80,_0x4d47cc){_0x3c8c80=_0x3c8c80-0x0;var _0x479a99=_0xd02d[_0x3c8c80];return _0x479a99;};'use strict';var _=require(_0xdd02('0x0'));var util=require(_0xdd02('0x1'));var logger=require(_0xdd02('0x2'))(_0xdd02('0x3'));var moment=require(_0xdd02('0x4'));var BPromise=require(_0xdd02('0x5'));var rp=require(_0xdd02('0x6'));var fs=require('fs');var path=require(_0xdd02('0x7'));var rimraf=require(_0xdd02('0x8'));var config=require(_0xdd02('0x9'));var attributes=require(_0xdd02('0xa'));module[_0xdd02('0xb')]=function(_0x5c33bc,_0x5420f3){return _0x5c33bc[_0xdd02('0xc')](_0xdd02('0xd'),attributes,{'tableName':_0xdd02('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xdebb=['define','lodash','util','moment','bluebird','path','rimraf','exports'];(function(_0x56046c,_0x48f853){var _0xfa490d=function(_0x593cf5){while(--_0x593cf5){_0x56046c['push'](_0x56046c['shift']());}};_0xfa490d(++_0x48f853);}(_0xdebb,0xf9));var _0xbdeb=function(_0x2687ee,_0x224164){_0x2687ee=_0x2687ee-0x0;var _0x3da903=_0xdebb[_0x2687ee];return _0x3da903;};'use strict';var _=require(_0xbdeb('0x0'));var util=require(_0xbdeb('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xbdeb('0x2'));var BPromise=require(_0xbdeb('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xbdeb('0x4'));var rimraf=require(_0xbdeb('0x5'));var config=require('../../config/environment');var attributes=require('./contactItemType.attributes');module[_0xbdeb('0x6')]=function(_0x13f35c,_0x1cfa72){return _0x13f35c[_0xbdeb('0x7')]('ContactItemType',attributes,{'tableName':'tools_contact_item_types','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 003e2db..b0482bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5242=['stringify','error','ContactItemType,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','then','info','request\x20sent','debug','ContactItemType,\x20%s,\x20%s,\x20%s'];(function(_0x5d5ab2,_0x1d3681){var _0xb8fe37=function(_0x29a76c){while(--_0x29a76c){_0x5d5ab2['push'](_0x5d5ab2['shift']());}};_0xb8fe37(++_0x1d3681);}(_0x5242,0x148));var _0x2524=function(_0x3d6349,_0x24b8b4){_0x3d6349=_0x3d6349-0x0;var _0x1be0b8=_0x5242[_0x3d6349];return _0x1be0b8;};'use strict';var _=require(_0x2524('0x0'));var util=require(_0x2524('0x1'));var moment=require(_0x2524('0x2'));var BPromise=require(_0x2524('0x3'));var rs=require(_0x2524('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2524('0x5'))['db'];var utils=require(_0x2524('0x6'));var logger=require(_0x2524('0x7'))(_0x2524('0x8'));var config=require(_0x2524('0x9'));var jayson=require(_0x2524('0xa'));var client=jayson[_0x2524('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2b070c,_0x1eca6b,_0x91975b){return new BPromise(function(_0x9f927c,_0x5729dd){return client['request'](_0x2b070c,_0x91975b)[_0x2524('0xc')](function(_0x2ecd8f){logger[_0x2524('0xd')]('ContactItemType,\x20%s,\x20%s',_0x1eca6b,_0x2524('0xe'));logger[_0x2524('0xf')](_0x2524('0x10'),_0x1eca6b,_0x2524('0xe'),JSON[_0x2524('0x11')](_0x2ecd8f));if(_0x2ecd8f[_0x2524('0x12')]){if(_0x2ecd8f[_0x2524('0x12')]['code']===0x1f4){logger['error'](_0x2524('0x13'),_0x1eca6b,_0x2ecd8f[_0x2524('0x12')][_0x2524('0x14')]);return _0x5729dd(_0x2ecd8f[_0x2524('0x12')][_0x2524('0x14')]);}logger[_0x2524('0x12')](_0x2524('0x13'),_0x1eca6b,_0x2ecd8f[_0x2524('0x12')][_0x2524('0x14')]);return _0x9f927c(_0x2ecd8f[_0x2524('0x12')][_0x2524('0x14')]);}else{logger[_0x2524('0xd')](_0x2524('0x13'),_0x1eca6b,_0x2524('0xe'));_0x9f927c(_0x2ecd8f[_0x2524('0x15')][_0x2524('0x14')]);}})[_0x2524('0x16')](function(_0x14c347){logger[_0x2524('0x12')]('ContactItemType,\x20%s,\x20%s',_0x1eca6b,_0x14c347);_0x5729dd(_0x14c347);});});}
\ No newline at end of file
+var _0xb665=['info','ContactItemType,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','then'];(function(_0x342baa,_0x4a110f){var _0x1208f3=function(_0x56a645){while(--_0x56a645){_0x342baa['push'](_0x342baa['shift']());}};_0x1208f3(++_0x4a110f);}(_0xb665,0x128));var _0x5b66=function(_0x12a554,_0x3d7ef8){_0x12a554=_0x12a554-0x0;var _0x244ba0=_0xb665[_0x12a554];return _0x244ba0;};'use strict';var _=require('lodash');var util=require(_0x5b66('0x0'));var moment=require(_0x5b66('0x1'));var BPromise=require('bluebird');var rs=require(_0x5b66('0x2'));var fs=require('fs');var Redis=require(_0x5b66('0x3'));var db=require(_0x5b66('0x4'))['db'];var utils=require(_0x5b66('0x5'));var logger=require(_0x5b66('0x6'))(_0x5b66('0x7'));var config=require(_0x5b66('0x8'));var jayson=require(_0x5b66('0x9'));var client=jayson[_0x5b66('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1bf631,_0x4c9cad,_0x581e33){return new BPromise(function(_0x49e969,_0xbfabb5){return client['request'](_0x1bf631,_0x581e33)[_0x5b66('0xb')](function(_0x273be6){logger[_0x5b66('0xc')](_0x5b66('0xd'),_0x4c9cad,_0x5b66('0xe'));logger[_0x5b66('0xf')]('ContactItemType,\x20%s,\x20%s,\x20%s',_0x4c9cad,'request\x20sent',JSON[_0x5b66('0x10')](_0x273be6));if(_0x273be6['error']){if(_0x273be6[_0x5b66('0x11')][_0x5b66('0x12')]===0x1f4){logger[_0x5b66('0x11')]('ContactItemType,\x20%s,\x20%s',_0x4c9cad,_0x273be6['error']['message']);return _0xbfabb5(_0x273be6[_0x5b66('0x11')][_0x5b66('0x13')]);}logger[_0x5b66('0x11')](_0x5b66('0xd'),_0x4c9cad,_0x273be6[_0x5b66('0x11')][_0x5b66('0x13')]);return _0x49e969(_0x273be6[_0x5b66('0x11')][_0x5b66('0x13')]);}else{logger['info'](_0x5b66('0xd'),_0x4c9cad,_0x5b66('0xe'));_0x49e969(_0x273be6[_0x5b66('0x14')]['message']);}})[_0x5b66('0x15')](function(_0x56d2a0){logger['error'](_0x5b66('0xd'),_0x4c9cad,_0x56d2a0);_0xbfabb5(_0x56d2a0);});});}
\ No newline at end of file
index 9c61162..6b92803 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x46a1=['get','isAuthenticated','index','/:id','show','update','delete','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x453282,_0x3acebb){var _0x387e74=function(_0x23b54f){while(--_0x23b54f){_0x453282['push'](_0x453282['shift']());}};_0x387e74(++_0x3acebb);}(_0x46a1,0x177));var _0x146a=function(_0x496071,_0xa515e9){_0x496071=_0x496071-0x0;var _0x299733=_0x46a1[_0x496071];return _0x299733;};'use strict';var multer=require(_0x146a('0x0'));var util=require(_0x146a('0x1'));var path=require('path');var timeout=require(_0x146a('0x2'));var express=require(_0x146a('0x3'));var router=express[_0x146a('0x4')]();var fs_extra=require(_0x146a('0x5'));var auth=require(_0x146a('0x6'));var interaction=require(_0x146a('0x7'));var config=require(_0x146a('0x8'));var controller=require('./contactItemType.controller');router[_0x146a('0x9')]('/',auth[_0x146a('0xa')](),controller[_0x146a('0xb')]);router[_0x146a('0x9')](_0x146a('0xc'),auth['isAuthenticated'](),controller[_0x146a('0xd')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router['put'](_0x146a('0xc'),auth[_0x146a('0xa')](),controller[_0x146a('0xe')]);router[_0x146a('0xf')](_0x146a('0xc'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xe23f=['destroy','exports','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./contactItemType.controller','get','/:id','isAuthenticated','show','post','create','put','update'];(function(_0x53c4f8,_0x44ccaf){var _0x416458=function(_0x2632aa){while(--_0x2632aa){_0x53c4f8['push'](_0x53c4f8['shift']());}};_0x416458(++_0x44ccaf);}(_0xe23f,0x16a));var _0xfe23=function(_0x5d6456,_0x58ecc7){_0x5d6456=_0x5d6456-0x0;var _0x4d66c1=_0xe23f[_0x5d6456];return _0x4d66c1;};'use strict';var multer=require('multer');var util=require(_0xfe23('0x0'));var path=require(_0xfe23('0x1'));var timeout=require(_0xfe23('0x2'));var express=require('express');var router=express[_0xfe23('0x3')]();var fs_extra=require(_0xfe23('0x4'));var auth=require(_0xfe23('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xfe23('0x6'));var controller=require(_0xfe23('0x7'));router[_0xfe23('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0xfe23('0x8')](_0xfe23('0x9'),auth[_0xfe23('0xa')](),controller[_0xfe23('0xb')]);router[_0xfe23('0xc')]('/',auth['isAuthenticated'](),controller[_0xfe23('0xd')]);router[_0xfe23('0xe')](_0xfe23('0x9'),auth[_0xfe23('0xa')](),controller[_0xfe23('0xf')]);router['delete'](_0xfe23('0x9'),auth['isAuthenticated'](),controller[_0xfe23('0x10')]);module[_0xfe23('0x11')]=router;
\ No newline at end of file
index c20d110..ed7683a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['name','sequelize','STRING'];(function(_0x1e73e2,_0x2068d9){var _0x3694ea=function(_0x1b6ab6){while(--_0x1b6ab6){_0x1e73e2['push'](_0x1e73e2['shift']());}};_0x3694ea(++_0x2068d9);}(_0xb10b,0x12a));var _0xbb10=function(_0x459baf,_0x332707){_0x459baf=_0x459baf-0x0;var _0x4a5970=_0xb10b[_0x459baf];return _0x4a5970;};'use strict';var Sequelize=require(_0xbb10('0x0'));module['exports']={'name':{'type':Sequelize[_0xbb10('0x1')],'allowNull':![],'unique':_0xbb10('0x2')},'description':{'type':Sequelize[_0xbb10('0x1')]}};
\ No newline at end of file
+var _0x2032=['name','exports','STRING'];(function(_0x4bdf64,_0x36488f){var _0x490118=function(_0x1e061f){while(--_0x1e061f){_0x4bdf64['push'](_0x4bdf64['shift']());}};_0x490118(++_0x36488f);}(_0x2032,0xd9));var _0x2203=function(_0x510b81,_0x2ec137){_0x510b81=_0x510b81-0x0;var _0x2135be=_0x2032[_0x510b81];return _0x2135be;};'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 e1b4939..6dad516 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a8e=['update','then','UserProfileResource','destroy','sendStatus','error','name','send','index','Dashboard','fieldName','type','key','model','query','keys','filters','intersection','attributes','hasOwnProperty','order','where','pick','merge','map','VIRTUAL','filter','include','findAll','catch','show','params','fields','length','includeAll','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','get','CustomDashboards','UserProfileSection','userProfileId','autoAssociation','clone','rawAttributes','omit','createdAt','updatedAt','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','iframe','attrs','value','https://','attrPath','attrHourFormat','HH:mm:ss','attrTimezone','0.00','attrFontSize','counter','total','attrVoiceQueues','attrChannel','voice','attrEmailAccounts','attrFaxAccounts','attrOpenchannelAccounts','attrWhatsappAccounts','attrChatWebsites','multibar-chart','pie-chart','attrSerie1','attrSerie2','attrSerie3','attrSmsAccounts','web-report','attrReport','reportType','attrRefresh','widgetAttributes:\x20%s','addItem','DashboardId','DashboardItem','getItems','findOne','sort','nolimit','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./dashboard.socket','register','status','end','json','undefined','offset','count','limit','set','Content-Range','apply','reject','save'];(function(_0x2410f0,_0x3b2cf2){var _0x4c643e=function(_0x1248a8){while(--_0x1248a8){_0x2410f0['push'](_0x2410f0['shift']());}};_0x4c643e(++_0x3b2cf2);}(_0x9a8e,0x1ea));var _0xe9a8=function(_0x3d2e1e,_0x2672c8){_0x3d2e1e=_0x3d2e1e-0x0;var _0x297116=_0x9a8e[_0x3d2e1e];return _0x297116;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xe9a8('0x0'));var jsonpatch=require(_0xe9a8('0x1'));var rp=require('request-promise');var moment=require(_0xe9a8('0x2'));var BPromise=require(_0xe9a8('0x3'));var Mustache=require(_0xe9a8('0x4'));var util=require(_0xe9a8('0x5'));var path=require(_0xe9a8('0x6'));var sox=require(_0xe9a8('0x7'));var csv=require('to-csv');var ejs=require(_0xe9a8('0x8'));var fs=require('fs');var fs_extra=require(_0xe9a8('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xe9a8('0xa'));var jsforce=require(_0xe9a8('0xb'));var deskjs=require(_0xe9a8('0xc'));var toCsv=require(_0xe9a8('0xd'));var querystring=require(_0xe9a8('0xe'));var Papa=require('papaparse');var Redis=require(_0xe9a8('0xf'));var authService=require(_0xe9a8('0x10'));var qs=require(_0xe9a8('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xe9a8('0x12'));var logger=require(_0xe9a8('0x13'))(_0xe9a8('0x14'));var utils=require(_0xe9a8('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xe9a8('0x16'));var db=require(_0xe9a8('0x17'))['db'];config[_0xe9a8('0x18')]=_[_0xe9a8('0x19')](config[_0xe9a8('0x18')],{'host':_0xe9a8('0x1a'),'port':0x18eb});var socket=require(_0xe9a8('0x1b'))(new Redis(config[_0xe9a8('0x18')]));require(_0xe9a8('0x1c'))[_0xe9a8('0x1d')](socket);function respondWithStatusCode(_0x59957b,_0x2b6db7){_0x2b6db7=_0x2b6db7||0xcc;return function(_0x343eaf){if(_0x343eaf){return _0x59957b['sendStatus'](_0x2b6db7);}return _0x59957b[_0xe9a8('0x1e')](_0x2b6db7)[_0xe9a8('0x1f')]();};}function respondWithResult(_0x3e31b1,_0x579262){_0x579262=_0x579262||0xc8;return function(_0xf69953){if(_0xf69953){return _0x3e31b1['status'](_0x579262)[_0xe9a8('0x20')](_0xf69953);}};}function respondWithFilteredResult(_0x7d04b9,_0x2ef73b){return function(_0x52c2fc){if(_0x52c2fc){var _0x24e5d2=typeof _0x2ef73b['offset']==='undefined'&&typeof _0x2ef73b['limit']===_0xe9a8('0x21');var _0x1121cd=_0x52c2fc['count'];var _0x276d75=_0x24e5d2?0x0:_0x2ef73b[_0xe9a8('0x22')];var _0x44fb28=_0x24e5d2?_0x52c2fc[_0xe9a8('0x23')]:_0x2ef73b[_0xe9a8('0x22')]+_0x2ef73b[_0xe9a8('0x24')];var _0x2b6932;if(_0x44fb28>=_0x1121cd){_0x44fb28=_0x1121cd;_0x2b6932=0xc8;}else{_0x2b6932=0xce;}_0x7d04b9['status'](_0x2b6932);return _0x7d04b9[_0xe9a8('0x25')](_0xe9a8('0x26'),_0x276d75+'-'+_0x44fb28+'/'+_0x1121cd)[_0xe9a8('0x20')](_0x52c2fc);}return null;};}function patchUpdates(_0xa4d0df){return function(_0x1c6380){try{jsonpatch[_0xe9a8('0x27')](_0x1c6380,_0xa4d0df,!![]);}catch(_0x6d20bc){return BPromise[_0xe9a8('0x28')](_0x6d20bc);}return _0x1c6380[_0xe9a8('0x29')]();};}function saveUpdates(_0x47c80c,_0x140234){return function(_0x3e49f1){if(_0x3e49f1){return _0x3e49f1[_0xe9a8('0x2a')](_0x47c80c)[_0xe9a8('0x2b')](function(_0x17668b){return _0x17668b;});}return null;};}function removeEntity(_0x15be1d,_0x131180){return function(_0x473b34){if(_0x473b34){return _0x473b34['destroy']()[_0xe9a8('0x2b')](function(){var _0x3fbf69=_0x473b34['get']({'plain':!![]});var _0xac69d5='CustomDashboards';return db[_0xe9a8('0x2c')][_0xe9a8('0x2d')]({'where':{'type':_0xac69d5,'resourceId':_0x3fbf69['id']}})[_0xe9a8('0x2b')](function(){return _0x473b34;});})[_0xe9a8('0x2b')](function(){_0x15be1d[_0xe9a8('0x1e')](0xcc)[_0xe9a8('0x1f')]();});}};}function handleEntityNotFound(_0x48d6cf,_0x2da72f){return function(_0xa97c88){if(!_0xa97c88){_0x48d6cf[_0xe9a8('0x2e')](0x194);}return _0xa97c88;};}function handleError(_0x79a775,_0x145b98){_0x145b98=_0x145b98||0x1f4;return function(_0x5850b8){logger[_0xe9a8('0x2f')](_0x5850b8['stack']);if(_0x5850b8[_0xe9a8('0x30')]){delete _0x5850b8[_0xe9a8('0x30')];}_0x79a775['status'](_0x145b98)[_0xe9a8('0x31')](_0x5850b8);};}exports[_0xe9a8('0x32')]=function(_0x324e6d,_0x307898){var _0xeccfe5={},_0x29609c={},_0x3a7ea6={'count':0x0,'rows':[]};var _0x516742=_['map'](db[_0xe9a8('0x33')]['rawAttributes'],function(_0x45551c){return{'name':_0x45551c[_0xe9a8('0x34')],'type':_0x45551c[_0xe9a8('0x35')][_0xe9a8('0x36')]};});_0x29609c[_0xe9a8('0x37')]=_['map'](_0x516742,_0xe9a8('0x30'));_0x29609c[_0xe9a8('0x38')]=_[_0xe9a8('0x39')](_0x324e6d[_0xe9a8('0x38')]);_0x29609c[_0xe9a8('0x3a')]=_[_0xe9a8('0x3b')](_0x29609c[_0xe9a8('0x37')],_0x29609c['query']);_0xeccfe5[_0xe9a8('0x3c')]=_['intersection'](_0x29609c[_0xe9a8('0x37')],qs['fields'](_0x324e6d[_0xe9a8('0x38')]['fields']));_0xeccfe5[_0xe9a8('0x3c')]=_0xeccfe5[_0xe9a8('0x3c')]['length']?_0xeccfe5['attributes']:_0x29609c[_0xe9a8('0x37')];if(!_0x324e6d[_0xe9a8('0x38')][_0xe9a8('0x3d')]('nolimit')){_0xeccfe5[_0xe9a8('0x24')]=qs['limit'](_0x324e6d[_0xe9a8('0x38')][_0xe9a8('0x24')]);_0xeccfe5[_0xe9a8('0x22')]=qs['offset'](_0x324e6d[_0xe9a8('0x38')][_0xe9a8('0x22')]);}_0xeccfe5[_0xe9a8('0x3e')]=qs['sort'](_0x324e6d['query']['sort']);_0xeccfe5[_0xe9a8('0x3f')]=qs['filters'](_[_0xe9a8('0x40')](_0x324e6d[_0xe9a8('0x38')],_0x29609c['filters']),_0x516742);if(_0x324e6d[_0xe9a8('0x38')]['filter']){_0xeccfe5[_0xe9a8('0x3f')]=_[_0xe9a8('0x41')](_0xeccfe5[_0xe9a8('0x3f')],{'$or':_[_0xe9a8('0x42')](_0x516742,function(_0x5cd38c){if(_0x5cd38c[_0xe9a8('0x35')]!==_0xe9a8('0x43')){var _0x25576c={};_0x25576c[_0x5cd38c[_0xe9a8('0x30')]]={'$like':'%'+_0x324e6d[_0xe9a8('0x38')][_0xe9a8('0x44')]+'%'};return _0x25576c;}})});}_0xeccfe5=_[_0xe9a8('0x41')]({},_0xeccfe5,_0x324e6d['options']);var _0x2a09f6={'where':_0xeccfe5[_0xe9a8('0x3f')]};return db[_0xe9a8('0x33')]['count'](_0x2a09f6)[_0xe9a8('0x2b')](function(_0xe6526d){_0x3a7ea6[_0xe9a8('0x23')]=_0xe6526d;if(_0x324e6d['query']['includeAll']){_0xeccfe5[_0xe9a8('0x45')]=[{'all':!![]}];}return db[_0xe9a8('0x33')][_0xe9a8('0x46')](_0xeccfe5);})[_0xe9a8('0x2b')](function(_0x3aa214){_0x3a7ea6['rows']=_0x3aa214;return _0x3a7ea6;})[_0xe9a8('0x2b')](respondWithFilteredResult(_0x307898,_0xeccfe5))[_0xe9a8('0x47')](handleError(_0x307898,null));};exports[_0xe9a8('0x48')]=function(_0x13c4d4,_0x4d482d){var _0x2043b1={'raw':![],'where':{'id':_0x13c4d4[_0xe9a8('0x49')]['id']}},_0x27f463={};_0x27f463[_0xe9a8('0x37')]=_['keys'](db['Dashboard']['rawAttributes']);_0x27f463[_0xe9a8('0x38')]=_[_0xe9a8('0x39')](_0x13c4d4[_0xe9a8('0x38')]);_0x27f463[_0xe9a8('0x3a')]=_[_0xe9a8('0x3b')](_0x27f463[_0xe9a8('0x37')],_0x27f463['query']);_0x2043b1[_0xe9a8('0x3c')]=_[_0xe9a8('0x3b')](_0x27f463['model'],qs[_0xe9a8('0x4a')](_0x13c4d4['query']['fields']));_0x2043b1[_0xe9a8('0x3c')]=_0x2043b1['attributes'][_0xe9a8('0x4b')]?_0x2043b1[_0xe9a8('0x3c')]:_0x27f463['model'];if(_0x13c4d4[_0xe9a8('0x38')][_0xe9a8('0x4c')]){_0x2043b1[_0xe9a8('0x45')]=[{'all':!![]}];}_0x2043b1=_[_0xe9a8('0x41')]({},_0x2043b1,_0x13c4d4[_0xe9a8('0x4d')]);return db[_0xe9a8('0x33')][_0xe9a8('0x4e')](_0x2043b1)['then'](handleEntityNotFound(_0x4d482d,null))[_0xe9a8('0x2b')](respondWithResult(_0x4d482d,null))[_0xe9a8('0x47')](handleError(_0x4d482d,null));};exports[_0xe9a8('0x4f')]=function(_0x32a6b7,_0x568afd){return db[_0xe9a8('0x33')][_0xe9a8('0x4f')](_0x32a6b7[_0xe9a8('0x50')],{})[_0xe9a8('0x2b')](function(_0x543bb0){var _0x413014=_0x32a6b7[_0xe9a8('0x51')]['get']({'plain':!![]});if(!_0x413014)throw new Error(_0xe9a8('0x52'));if(_0x413014[_0xe9a8('0x53')]===_0xe9a8('0x51')){var _0x3ec315=_0x543bb0[_0xe9a8('0x54')]({'plain':!![]});var _0x280ee4=_0xe9a8('0x55');return db[_0xe9a8('0x56')]['find']({'where':{'name':_0x280ee4,'userProfileId':_0x413014[_0xe9a8('0x57')]},'raw':!![]})[_0xe9a8('0x2b')](function(_0x4626d3){if(_0x4626d3&&_0x4626d3[_0xe9a8('0x58')]===0x0){return db[_0xe9a8('0x2c')][_0xe9a8('0x4f')]({'name':_0x3ec315[_0xe9a8('0x30')],'resourceId':_0x3ec315['id'],'type':_0x4626d3[_0xe9a8('0x30')],'sectionId':_0x4626d3['id']},{})[_0xe9a8('0x2b')](function(){return _0x543bb0;});}else{return _0x543bb0;}})[_0xe9a8('0x47')](function(_0x1bcb2c){logger[_0xe9a8('0x2f')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1bcb2c);throw _0x1bcb2c;});}return _0x543bb0;})[_0xe9a8('0x2b')](respondWithResult(_0x568afd,0xc9))[_0xe9a8('0x47')](handleError(_0x568afd,null));};exports[_0xe9a8('0x59')]=function(_0x260f2c,_0x405fcf){var _0x6ceb54={'where':{'id':_0x260f2c[_0xe9a8('0x49')]['id']}},_0x27cb84={};_0x27cb84[_0xe9a8('0x37')]=_[_0xe9a8('0x39')](db[_0xe9a8('0x33')][_0xe9a8('0x5a')]);_0x6ceb54[_0xe9a8('0x3c')]=_[_0xe9a8('0x3b')](_0x27cb84[_0xe9a8('0x37')],qs[_0xe9a8('0x4a')](_0x260f2c[_0xe9a8('0x38')][_0xe9a8('0x4a')]));_0x6ceb54[_0xe9a8('0x3c')]=_0x6ceb54[_0xe9a8('0x3c')][_0xe9a8('0x4b')]?_0x6ceb54[_0xe9a8('0x3c')]:_0x27cb84[_0xe9a8('0x37')];if(_0x260f2c[_0xe9a8('0x38')][_0xe9a8('0x4c')]){_0x6ceb54['include']=[{'all':!![]}];}_0x6ceb54=_['merge']({},_0x6ceb54,_0x260f2c[_0xe9a8('0x4d')]);return db[_0xe9a8('0x33')][_0xe9a8('0x4e')](_0x6ceb54)[_0xe9a8('0x2b')](handleEntityNotFound(_0x405fcf,null))[_0xe9a8('0x2b')](function(_0x1745b1){if(_0x1745b1){var _0x382b79=_0x1745b1[_0xe9a8('0x54')]({'plain':!![]});_0x382b79=qs[_0xe9a8('0x5b')](_0x382b79,['id',_0xe9a8('0x5c'),_0xe9a8('0x5d')]);_0x260f2c[_0xe9a8('0x50')]=_[_0xe9a8('0x5b')](_0x260f2c[_0xe9a8('0x50')],['id',_0xe9a8('0x5c'),_0xe9a8('0x5d')]);return db[_0xe9a8('0x33')][_0xe9a8('0x4f')](_[_0xe9a8('0x41')](_0x382b79,_0x260f2c[_0xe9a8('0x50')]),{'include':_0x260f2c[_0xe9a8('0x38')]['includeAll']?[{'all':!![]}]:undefined})[_0xe9a8('0x2b')](function(_0x20b4c7){var _0xad42e0=_0x260f2c[_0xe9a8('0x51')]['get']({'plain':!![]});if(!_0xad42e0)throw new Error(_0xe9a8('0x52'));if(_0xad42e0[_0xe9a8('0x53')]===_0xe9a8('0x51')){var _0x2cda16=_0x20b4c7[_0xe9a8('0x54')]({'plain':!![]});var _0x271c81=_0xe9a8('0x55');return db[_0xe9a8('0x56')][_0xe9a8('0x4e')]({'where':{'name':_0x271c81,'userProfileId':_0xad42e0[_0xe9a8('0x57')]},'raw':!![]})[_0xe9a8('0x2b')](function(_0x3bec3b){if(_0x3bec3b&&_0x3bec3b[_0xe9a8('0x58')]===0x0){return db['UserProfileResource'][_0xe9a8('0x4f')]({'name':_0x2cda16['name'],'resourceId':_0x2cda16['id'],'type':_0x3bec3b['name'],'sectionId':_0x3bec3b['id']},{})[_0xe9a8('0x2b')](function(){return _0x20b4c7;});}else{return _0x20b4c7;}})['catch'](function(_0x426bed){logger[_0xe9a8('0x2f')](_0xe9a8('0x5e'),_0x426bed);throw _0x426bed;});}return _0x20b4c7;});}})[_0xe9a8('0x2b')](respondWithResult(_0x405fcf,0xc9))[_0xe9a8('0x47')](handleError(_0x405fcf,null));};exports[_0xe9a8('0x2a')]=function(_0x1434cf,_0x2c993f){if(_0x1434cf['body']['id']){delete _0x1434cf[_0xe9a8('0x50')]['id'];}return db['Dashboard'][_0xe9a8('0x4e')]({'where':{'id':_0x1434cf['params']['id']}})[_0xe9a8('0x2b')](handleEntityNotFound(_0x2c993f,null))[_0xe9a8('0x2b')](saveUpdates(_0x1434cf['body'],null))[_0xe9a8('0x2b')](respondWithResult(_0x2c993f,null))['catch'](handleError(_0x2c993f,null));};exports[_0xe9a8('0x2d')]=function(_0x47ac05,_0x1bfcc9){return db[_0xe9a8('0x33')][_0xe9a8('0x4e')]({'where':{'id':_0x47ac05['params']['id']}})[_0xe9a8('0x2b')](handleEntityNotFound(_0x1bfcc9,null))[_0xe9a8('0x2b')](removeEntity(_0x1bfcc9,null))['catch'](handleError(_0x1bfcc9,null));};function widgetAttributes(_0xf5ad19){try{switch(_0xf5ad19['type']){case _0xe9a8('0x5f'):return[{'name':'attrUrl','value':_0xf5ad19['attrUrl']||(_0xf5ad19[_0xe9a8('0x60')]&&_0xf5ad19[_0xe9a8('0x60')][0x0]?_0xf5ad19[_0xe9a8('0x60')][0x0][_0xe9a8('0x61')]:undefined)||_0xe9a8('0x62')}];case'custom':return[{'name':_0xe9a8('0x63'),'value':_0xf5ad19[_0xe9a8('0x63')]||(_0xf5ad19['attrs']&&_0xf5ad19[_0xe9a8('0x60')][0x0]?_0xf5ad19['attrs'][0x0][_0xe9a8('0x61')]:undefined)||''}];case'clock':return[{'name':_0xe9a8('0x64'),'value':_0xf5ad19[_0xe9a8('0x64')]||(_0xf5ad19[_0xe9a8('0x60')]&&_0xf5ad19[_0xe9a8('0x60')][0x0]?_0xf5ad19['attrs'][0x0][_0xe9a8('0x61')]:undefined)||_0xe9a8('0x65')},{'name':_0xe9a8('0x66'),'value':_0xf5ad19[_0xe9a8('0x66')]||(_0xf5ad19[_0xe9a8('0x60')]&&_0xf5ad19['attrs'][0x1]?_0xf5ad19[_0xe9a8('0x60')][0x1][_0xe9a8('0x61')]:undefined)||_0xe9a8('0x67')},{'name':_0xe9a8('0x68'),'value':_0xf5ad19[_0xe9a8('0x68')]||(_0xf5ad19['attrs']&&_0xf5ad19[_0xe9a8('0x60')][0x2]?_0xf5ad19[_0xe9a8('0x60')][0x2][_0xe9a8('0x61')]:undefined)||0xc}];case _0xe9a8('0x69'):return[{'name':'attrMetric','value':_0xf5ad19['attrMetric']||(_0xf5ad19[_0xe9a8('0x60')]&&_0xf5ad19[_0xe9a8('0x60')][0x0]?_0xf5ad19[_0xe9a8('0x60')][0x0][_0xe9a8('0x61')]:undefined)||_0xe9a8('0x6a')},{'name':'attrVoiceQueues','value':_0xf5ad19[_0xe9a8('0x6b')]||(_0xf5ad19['attrs']&&_0xf5ad19[_0xe9a8('0x60')][0x1]?_0xf5ad19[_0xe9a8('0x60')][0x1][_0xe9a8('0x61')]:undefined)||[]},{'name':'attrFontSize','value':_0xf5ad19['attrFontSize']||(_0xf5ad19['attrs']&&_0xf5ad19[_0xe9a8('0x60')][0x2]?_0xf5ad19['attrs'][0x2][_0xe9a8('0x61')]:undefined)||0x14},{'name':_0xe9a8('0x6c'),'value':_0xf5ad19['attrChannel']||(_0xf5ad19[_0xe9a8('0x60')]&&_0xf5ad19[_0xe9a8('0x60')][0x3]?_0xf5ad19[_0xe9a8('0x60')][0x3]['value']:undefined)||_0xe9a8('0x6d')},{'name':'attrEmailAccounts','value':_0xf5ad19[_0xe9a8('0x6e')]||(_0xf5ad19[_0xe9a8('0x60')]&&_0xf5ad19[_0xe9a8('0x60')][0x4]?_0xf5ad19[_0xe9a8('0x60')][0x4][_0xe9a8('0x61')]:undefined)||''},{'name':_0xe9a8('0x6f'),'value':_0xf5ad19[_0xe9a8('0x6f')]||(_0xf5ad19['attrs']&&_0xf5ad19[_0xe9a8('0x60')][0x5]?_0xf5ad19['attrs'][0x5]['value']:undefined)||''},{'name':'attrSmsAccounts','value':_0xf5ad19['attrSmsAccounts']||(_0xf5ad19[_0xe9a8('0x60')]&&_0xf5ad19[_0xe9a8('0x60')][0x6]?_0xf5ad19[_0xe9a8('0x60')][0x6]['value']:undefined)||''},{'name':_0xe9a8('0x70'),'value':_0xf5ad19[_0xe9a8('0x70')]||(_0xf5ad19[_0xe9a8('0x60')]&&_0xf5ad19[_0xe9a8('0x60')][0x7]?_0xf5ad19['attrs'][0x7][_0xe9a8('0x61')]:undefined)||''},{'name':_0xe9a8('0x71'),'value':_0xf5ad19[_0xe9a8('0x71')]||(_0xf5ad19['attrs']&&_0xf5ad19[_0xe9a8('0x60')][0x8]?_0xf5ad19[_0xe9a8('0x60')][0x8][_0xe9a8('0x61')]:undefined)||''},{'name':_0xe9a8('0x72'),'value':_0xf5ad19[_0xe9a8('0x72')]||(_0xf5ad19[_0xe9a8('0x60')]&&_0xf5ad19['attrs'][0x9]?_0xf5ad19[_0xe9a8('0x60')][0x9][_0xe9a8('0x61')]:undefined)||''}];case _0xe9a8('0x73'):case _0xe9a8('0x74'):return[{'name':_0xe9a8('0x75'),'value':_0xf5ad19[_0xe9a8('0x75')]||(_0xf5ad19[_0xe9a8('0x60')]&&_0xf5ad19[_0xe9a8('0x60')][0x0]?_0xf5ad19[_0xe9a8('0x60')][0x0][_0xe9a8('0x61')]:undefined)||'total'},{'name':_0xe9a8('0x76'),'value':_0xf5ad19[_0xe9a8('0x76')]||(_0xf5ad19['attrs']&&_0xf5ad19['attrs'][0x1]?_0xf5ad19[_0xe9a8('0x60')][0x1][_0xe9a8('0x61')]:undefined)||null},{'name':'attrSerie3','value':_0xf5ad19[_0xe9a8('0x77')]||(_0xf5ad19[_0xe9a8('0x60')]&&_0xf5ad19[_0xe9a8('0x60')][0x2]?_0xf5ad19['attrs'][0x2][_0xe9a8('0x61')]:undefined)||null},{'name':_0xe9a8('0x6b'),'value':_0xf5ad19[_0xe9a8('0x6b')]||(_0xf5ad19['attrs']&&_0xf5ad19[_0xe9a8('0x60')][0x3]?_0xf5ad19[_0xe9a8('0x60')][0x3]['value']:undefined)||[]},{'name':_0xe9a8('0x6c'),'value':_0xf5ad19[_0xe9a8('0x6c')]||(_0xf5ad19[_0xe9a8('0x60')]&&_0xf5ad19[_0xe9a8('0x60')][0x4]?_0xf5ad19['attrs'][0x4][_0xe9a8('0x61')]:undefined)||'voice'},{'name':_0xe9a8('0x6e'),'value':_0xf5ad19['attrEmailAccounts']||(_0xf5ad19['attrs']&&_0xf5ad19[_0xe9a8('0x60')][0x5]?_0xf5ad19['attrs'][0x5]['value']:undefined)||''},{'name':'attrFaxAccounts','value':_0xf5ad19[_0xe9a8('0x6f')]||(_0xf5ad19[_0xe9a8('0x60')]&&_0xf5ad19[_0xe9a8('0x60')][0x6]?_0xf5ad19['attrs'][0x6]['value']:undefined)||''},{'name':_0xe9a8('0x78'),'value':_0xf5ad19[_0xe9a8('0x78')]||(_0xf5ad19[_0xe9a8('0x60')]&&_0xf5ad19[_0xe9a8('0x60')][0x7]?_0xf5ad19[_0xe9a8('0x60')][0x7][_0xe9a8('0x61')]:undefined)||''},{'name':_0xe9a8('0x70'),'value':_0xf5ad19[_0xe9a8('0x70')]||(_0xf5ad19[_0xe9a8('0x60')]&&_0xf5ad19['attrs'][0x8]?_0xf5ad19['attrs'][0x8][_0xe9a8('0x61')]:undefined)||''},{'name':_0xe9a8('0x71'),'value':_0xf5ad19['attrWhatsappAccounts']||(_0xf5ad19['attrs']&&_0xf5ad19[_0xe9a8('0x60')][0x9]?_0xf5ad19[_0xe9a8('0x60')][0x9][_0xe9a8('0x61')]:undefined)||''},{'name':'attrChatWebsites','value':_0xf5ad19[_0xe9a8('0x72')]||(_0xf5ad19[_0xe9a8('0x60')]&&_0xf5ad19[_0xe9a8('0x60')][0xa]?_0xf5ad19[_0xe9a8('0x60')][0xa][_0xe9a8('0x61')]:undefined)||''}];case _0xe9a8('0x79'):return[{'name':_0xe9a8('0x7a'),'type':_0xf5ad19[_0xe9a8('0x7b')]||(_0xf5ad19['attrs']&&_0xf5ad19[_0xe9a8('0x60')][0x0]?_0xf5ad19['attrs'][0x0][_0xe9a8('0x35')]:undefined)||null,'value':_0xf5ad19[_0xe9a8('0x7a')]||(_0xf5ad19[_0xe9a8('0x60')]&&_0xf5ad19[_0xe9a8('0x60')][0x0]?_0xf5ad19[_0xe9a8('0x60')][0x0][_0xe9a8('0x61')]:undefined)||null},{'name':_0xe9a8('0x7c'),'value':_0xf5ad19[_0xe9a8('0x7c')]||(_0xf5ad19[_0xe9a8('0x60')]&&_0xf5ad19['attrs'][0x1]?_0xf5ad19['attrs'][0x1][_0xe9a8('0x61')]:undefined)||0x0}];default:return[];}}catch(_0xd49367){logger[_0xe9a8('0x2f')](_0xe9a8('0x7d'),JSON['stringify'](_0xd49367));return[];}}exports[_0xe9a8('0x7e')]=function(_0x1c0e79,_0x413c65,_0x30f928){if(_0x1c0e79[_0xe9a8('0x50')]['id']){delete _0x1c0e79[_0xe9a8('0x50')]['id'];}return db['Dashboard'][_0xe9a8('0x4e')]({'where':{'id':_0x1c0e79[_0xe9a8('0x49')]['id']}})[_0xe9a8('0x2b')](handleEntityNotFound(_0x413c65,null))[_0xe9a8('0x2b')](function(_0x3643ef){if(_0x3643ef){_0x1c0e79[_0xe9a8('0x50')][_0xe9a8('0x7f')]=_0x3643ef['id'];_0x1c0e79[_0xe9a8('0x50')]['attrs']=widgetAttributes(_0x1c0e79[_0xe9a8('0x50')]);return db[_0xe9a8('0x80')][_0xe9a8('0x4f')](_0x1c0e79[_0xe9a8('0x50')]);}})[_0xe9a8('0x2b')](respondWithResult(_0x413c65,null))['catch'](handleError(_0x413c65,null));};exports[_0xe9a8('0x81')]=function(_0x5ef114,_0x1c4a9e,_0x42dd3e){var _0x3636c9={};var _0x29feb5={};var _0x22967e;var _0x4ad73f;return db[_0xe9a8('0x33')][_0xe9a8('0x82')]({'where':{'id':_0x5ef114[_0xe9a8('0x49')]['id']}})[_0xe9a8('0x2b')](handleEntityNotFound(_0x1c4a9e,null))[_0xe9a8('0x2b')](function(_0x505ea7){if(_0x505ea7){_0x22967e=_0x505ea7;_0x29feb5['model']=_['keys'](db['DashboardItem'][_0xe9a8('0x5a')]);_0x29feb5[_0xe9a8('0x38')]=_[_0xe9a8('0x39')](_0x5ef114[_0xe9a8('0x38')]);_0x29feb5['filters']=_[_0xe9a8('0x3b')](_0x29feb5[_0xe9a8('0x37')],_0x29feb5[_0xe9a8('0x38')]);_0x3636c9[_0xe9a8('0x3c')]=_['intersection'](_0x29feb5[_0xe9a8('0x37')],qs[_0xe9a8('0x4a')](_0x5ef114[_0xe9a8('0x38')]['fields']));_0x3636c9[_0xe9a8('0x3c')]=_0x3636c9[_0xe9a8('0x3c')][_0xe9a8('0x4b')]?_0x3636c9[_0xe9a8('0x3c')]:_0x29feb5[_0xe9a8('0x37')];_0x3636c9[_0xe9a8('0x3e')]=qs[_0xe9a8('0x83')](_0x5ef114['query'][_0xe9a8('0x83')]);_0x3636c9[_0xe9a8('0x3f')]=qs['filters'](_['pick'](_0x5ef114['query'],_0x29feb5[_0xe9a8('0x3a')]));if(_0x5ef114[_0xe9a8('0x38')][_0xe9a8('0x44')]){_0x3636c9[_0xe9a8('0x3f')]=_[_0xe9a8('0x41')](_0x3636c9[_0xe9a8('0x3f')],{'$or':_[_0xe9a8('0x42')](_0x3636c9[_0xe9a8('0x3c')],function(_0x1f8293){var _0x35a670={};_0x35a670[_0x1f8293]={'$like':'%'+_0x5ef114[_0xe9a8('0x38')][_0xe9a8('0x44')]+'%'};return _0x35a670;})});}_0x3636c9=_[_0xe9a8('0x41')]({},_0x3636c9,_0x5ef114['options']);return _0x22967e[_0xe9a8('0x81')](_0x3636c9);}})['then'](function(_0x470b47){if(_0x470b47){_0x4ad73f=_0x470b47['length'];if(!_0x5ef114[_0xe9a8('0x38')][_0xe9a8('0x3d')](_0xe9a8('0x84'))){_0x3636c9['limit']=qs[_0xe9a8('0x24')](_0x5ef114['query'][_0xe9a8('0x24')]);_0x3636c9[_0xe9a8('0x22')]=qs[_0xe9a8('0x22')](_0x5ef114[_0xe9a8('0x38')][_0xe9a8('0x22')]);}return _0x22967e['getItems'](_0x3636c9);}})[_0xe9a8('0x2b')](function(_0xa22930){if(_0xa22930){return _0xa22930?{'count':_0x4ad73f,'rows':_0xa22930}:null;}})[_0xe9a8('0x2b')](respondWithResult(_0x1c4a9e,null))['catch'](handleError(_0x1c4a9e,null));};
\ No newline at end of file
+var _0x786c=['destroy','get','CustomDashboards','UserProfileResource','error','stack','name','send','index','map','Dashboard','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','hasOwnProperty','nolimit','order','where','merge','VIRTUAL','filter','options','includeAll','include','rows','catch','show','params','fields','create','body','user','role','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','length','find','omit','createdAt','updatedAt','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','update','iframe','attrs','value','https://','custom','attrPath','attrHourFormat','HH:mm:ss','attrTimezone','0.00','attrFontSize','counter','attrMetric','attrChannel','attrEmailAccounts','attrFaxAccounts','attrSmsAccounts','attrOpenchannelAccounts','attrWhatsappAccounts','attrChatWebsites','multibar-chart','attrSerie1','total','attrSerie2','attrSerie3','attrVoiceQueues','voice','web-report','attrReport','reportType','attrRefresh','DashboardItem','getItems','findOne','sort','pick','eml-format','rimraf','zip-dir','request-promise','mustache','util','path','sox','lodash','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','sendStatus','end','status','json','limit','undefined','offset','count','set','Content-Range','apply','reject','save','then'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x786c,0x158));var _0xc786=function(_0x59b3d5,_0x28d433){_0x59b3d5=_0x59b3d5-0x0;var _0x252253=_0x786c[_0x59b3d5];return _0x252253;};'use strict';var emlformat=require(_0xc786('0x0'));var rimraf=require(_0xc786('0x1'));var zipdir=require(_0xc786('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xc786('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xc786('0x4'));var util=require(_0xc786('0x5'));var path=require(_0xc786('0x6'));var sox=require(_0xc786('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xc786('0x8'));var squel=require(_0xc786('0x9'));var crypto=require(_0xc786('0xa'));var jsforce=require(_0xc786('0xb'));var deskjs=require(_0xc786('0xc'));var toCsv=require(_0xc786('0xd'));var querystring=require('querystring');var Papa=require(_0xc786('0xe'));var Redis=require(_0xc786('0xf'));var authService=require(_0xc786('0x10'));var qs=require(_0xc786('0x11'));var as=require(_0xc786('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xc786('0x13'))(_0xc786('0x14'));var utils=require(_0xc786('0x15'));var config=require(_0xc786('0x16'));var licenseUtil=require(_0xc786('0x17'));var db=require(_0xc786('0x18'))['db'];config['redis']=_[_0xc786('0x19')](config[_0xc786('0x1a')],{'host':_0xc786('0x1b'),'port':0x18eb});var socket=require(_0xc786('0x1c'))(new Redis(config['redis']));require('./dashboard.socket')['register'](socket);function respondWithStatusCode(_0x10288b,_0x3530f1){_0x3530f1=_0x3530f1||0xcc;return function(_0x402628){if(_0x402628){return _0x10288b[_0xc786('0x1d')](_0x3530f1);}return _0x10288b['status'](_0x3530f1)[_0xc786('0x1e')]();};}function respondWithResult(_0x1959b3,_0x249a88){_0x249a88=_0x249a88||0xc8;return function(_0x1fbd22){if(_0x1fbd22){return _0x1959b3[_0xc786('0x1f')](_0x249a88)[_0xc786('0x20')](_0x1fbd22);}};}function respondWithFilteredResult(_0x384bd5,_0x148cb){return function(_0x4a2f2d){if(_0x4a2f2d){var _0x50cc85=typeof _0x148cb['offset']==='undefined'&&typeof _0x148cb[_0xc786('0x21')]===_0xc786('0x22');var _0x45c35e=_0x4a2f2d['count'];var _0x709122=_0x50cc85?0x0:_0x148cb[_0xc786('0x23')];var _0x13b6f9=_0x50cc85?_0x4a2f2d[_0xc786('0x24')]:_0x148cb['offset']+_0x148cb['limit'];var _0x3e91c2;if(_0x13b6f9>=_0x45c35e){_0x13b6f9=_0x45c35e;_0x3e91c2=0xc8;}else{_0x3e91c2=0xce;}_0x384bd5[_0xc786('0x1f')](_0x3e91c2);return _0x384bd5[_0xc786('0x25')](_0xc786('0x26'),_0x709122+'-'+_0x13b6f9+'/'+_0x45c35e)[_0xc786('0x20')](_0x4a2f2d);}return null;};}function patchUpdates(_0xe30aef){return function(_0x460398){try{jsonpatch[_0xc786('0x27')](_0x460398,_0xe30aef,!![]);}catch(_0x38c994){return BPromise[_0xc786('0x28')](_0x38c994);}return _0x460398[_0xc786('0x29')]();};}function saveUpdates(_0x9f9e1,_0x4bf7a2){return function(_0x48d7e9){if(_0x48d7e9){return _0x48d7e9['update'](_0x9f9e1)[_0xc786('0x2a')](function(_0xb24386){return _0xb24386;});}return null;};}function removeEntity(_0x2b1a1f,_0x15126b){return function(_0xc09e5d){if(_0xc09e5d){return _0xc09e5d[_0xc786('0x2b')]()[_0xc786('0x2a')](function(){var _0x24a072=_0xc09e5d[_0xc786('0x2c')]({'plain':!![]});var _0x416284=_0xc786('0x2d');return db[_0xc786('0x2e')][_0xc786('0x2b')]({'where':{'type':_0x416284,'resourceId':_0x24a072['id']}})[_0xc786('0x2a')](function(){return _0xc09e5d;});})['then'](function(){_0x2b1a1f['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0xb12211,_0x4427ee){return function(_0x17edbb){if(!_0x17edbb){_0xb12211[_0xc786('0x1d')](0x194);}return _0x17edbb;};}function handleError(_0x31a689,_0x67cae){_0x67cae=_0x67cae||0x1f4;return function(_0xde45f9){logger[_0xc786('0x2f')](_0xde45f9[_0xc786('0x30')]);if(_0xde45f9[_0xc786('0x31')]){delete _0xde45f9['name'];}_0x31a689[_0xc786('0x1f')](_0x67cae)[_0xc786('0x32')](_0xde45f9);};}exports[_0xc786('0x33')]=function(_0x3b9377,_0x19ea8d){var _0x5120ee={},_0x274e9b={},_0x5c8337={'count':0x0,'rows':[]};var _0x1418d9=_[_0xc786('0x34')](db[_0xc786('0x35')][_0xc786('0x36')],function(_0x4a8d67){return{'name':_0x4a8d67[_0xc786('0x37')],'type':_0x4a8d67[_0xc786('0x38')][_0xc786('0x39')]};});_0x274e9b['model']=_['map'](_0x1418d9,_0xc786('0x31'));_0x274e9b[_0xc786('0x3a')]=_[_0xc786('0x3b')](_0x3b9377[_0xc786('0x3a')]);_0x274e9b[_0xc786('0x3c')]=_[_0xc786('0x3d')](_0x274e9b[_0xc786('0x3e')],_0x274e9b[_0xc786('0x3a')]);_0x5120ee[_0xc786('0x3f')]=_[_0xc786('0x3d')](_0x274e9b[_0xc786('0x3e')],qs['fields'](_0x3b9377['query']['fields']));_0x5120ee[_0xc786('0x3f')]=_0x5120ee[_0xc786('0x3f')]['length']?_0x5120ee[_0xc786('0x3f')]:_0x274e9b[_0xc786('0x3e')];if(!_0x3b9377['query'][_0xc786('0x40')](_0xc786('0x41'))){_0x5120ee[_0xc786('0x21')]=qs['limit'](_0x3b9377['query']['limit']);_0x5120ee['offset']=qs['offset'](_0x3b9377['query'][_0xc786('0x23')]);}_0x5120ee[_0xc786('0x42')]=qs['sort'](_0x3b9377[_0xc786('0x3a')]['sort']);_0x5120ee['where']=qs[_0xc786('0x3c')](_['pick'](_0x3b9377[_0xc786('0x3a')],_0x274e9b[_0xc786('0x3c')]),_0x1418d9);if(_0x3b9377['query']['filter']){_0x5120ee[_0xc786('0x43')]=_[_0xc786('0x44')](_0x5120ee['where'],{'$or':_[_0xc786('0x34')](_0x1418d9,function(_0x3865e4){if(_0x3865e4[_0xc786('0x38')]!==_0xc786('0x45')){var _0x338176={};_0x338176[_0x3865e4[_0xc786('0x31')]]={'$like':'%'+_0x3b9377[_0xc786('0x3a')][_0xc786('0x46')]+'%'};return _0x338176;}})});}_0x5120ee=_['merge']({},_0x5120ee,_0x3b9377[_0xc786('0x47')]);var _0x400af6={'where':_0x5120ee['where']};return db['Dashboard'][_0xc786('0x24')](_0x400af6)[_0xc786('0x2a')](function(_0x327f06){_0x5c8337[_0xc786('0x24')]=_0x327f06;if(_0x3b9377['query'][_0xc786('0x48')]){_0x5120ee[_0xc786('0x49')]=[{'all':!![]}];}return db[_0xc786('0x35')]['findAll'](_0x5120ee);})[_0xc786('0x2a')](function(_0x34de63){_0x5c8337[_0xc786('0x4a')]=_0x34de63;return _0x5c8337;})[_0xc786('0x2a')](respondWithFilteredResult(_0x19ea8d,_0x5120ee))[_0xc786('0x4b')](handleError(_0x19ea8d,null));};exports[_0xc786('0x4c')]=function(_0x451df1,_0x1d42a5){var _0x5669b2={'raw':![],'where':{'id':_0x451df1[_0xc786('0x4d')]['id']}},_0x244d26={};_0x244d26['model']=_[_0xc786('0x3b')](db[_0xc786('0x35')][_0xc786('0x36')]);_0x244d26[_0xc786('0x3a')]=_[_0xc786('0x3b')](_0x451df1['query']);_0x244d26[_0xc786('0x3c')]=_[_0xc786('0x3d')](_0x244d26[_0xc786('0x3e')],_0x244d26[_0xc786('0x3a')]);_0x5669b2['attributes']=_[_0xc786('0x3d')](_0x244d26[_0xc786('0x3e')],qs[_0xc786('0x4e')](_0x451df1[_0xc786('0x3a')][_0xc786('0x4e')]));_0x5669b2[_0xc786('0x3f')]=_0x5669b2[_0xc786('0x3f')]['length']?_0x5669b2[_0xc786('0x3f')]:_0x244d26[_0xc786('0x3e')];if(_0x451df1[_0xc786('0x3a')][_0xc786('0x48')]){_0x5669b2[_0xc786('0x49')]=[{'all':!![]}];}_0x5669b2=_[_0xc786('0x44')]({},_0x5669b2,_0x451df1['options']);return db[_0xc786('0x35')]['find'](_0x5669b2)[_0xc786('0x2a')](handleEntityNotFound(_0x1d42a5,null))['then'](respondWithResult(_0x1d42a5,null))['catch'](handleError(_0x1d42a5,null));};exports[_0xc786('0x4f')]=function(_0x30be50,_0x56ab15){return db[_0xc786('0x35')][_0xc786('0x4f')](_0x30be50[_0xc786('0x50')],{})[_0xc786('0x2a')](function(_0x2fe100){var _0x6b85cb=_0x30be50[_0xc786('0x51')][_0xc786('0x2c')]({'plain':!![]});if(!_0x6b85cb)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x6b85cb[_0xc786('0x52')]===_0xc786('0x51')){var _0x22c69b=_0x2fe100[_0xc786('0x2c')]({'plain':!![]});var _0x819e1c=_0xc786('0x2d');return db['UserProfileSection']['find']({'where':{'name':_0x819e1c,'userProfileId':_0x6b85cb['userProfileId']},'raw':!![]})['then'](function(_0x292ace){if(_0x292ace&&_0x292ace[_0xc786('0x53')]===0x0){return db[_0xc786('0x2e')]['create']({'name':_0x22c69b[_0xc786('0x31')],'resourceId':_0x22c69b['id'],'type':_0x292ace[_0xc786('0x31')],'sectionId':_0x292ace['id']},{})[_0xc786('0x2a')](function(){return _0x2fe100;});}else{return _0x2fe100;}})['catch'](function(_0x5becdb){logger[_0xc786('0x2f')](_0xc786('0x54'),_0x5becdb);throw _0x5becdb;});}return _0x2fe100;})['then'](respondWithResult(_0x56ab15,0xc9))[_0xc786('0x4b')](handleError(_0x56ab15,null));};exports['clone']=function(_0x55058d,_0x15571d){var _0x1d7f8b={'where':{'id':_0x55058d[_0xc786('0x4d')]['id']}},_0x510dc4={};_0x510dc4['model']=_[_0xc786('0x3b')](db['Dashboard']['rawAttributes']);_0x1d7f8b['attributes']=_['intersection'](_0x510dc4[_0xc786('0x3e')],qs[_0xc786('0x4e')](_0x55058d[_0xc786('0x3a')][_0xc786('0x4e')]));_0x1d7f8b[_0xc786('0x3f')]=_0x1d7f8b[_0xc786('0x3f')][_0xc786('0x55')]?_0x1d7f8b[_0xc786('0x3f')]:_0x510dc4['model'];if(_0x55058d[_0xc786('0x3a')][_0xc786('0x48')]){_0x1d7f8b[_0xc786('0x49')]=[{'all':!![]}];}_0x1d7f8b=_['merge']({},_0x1d7f8b,_0x55058d[_0xc786('0x47')]);return db[_0xc786('0x35')][_0xc786('0x56')](_0x1d7f8b)[_0xc786('0x2a')](handleEntityNotFound(_0x15571d,null))[_0xc786('0x2a')](function(_0x20b9e4){if(_0x20b9e4){var _0x4d1428=_0x20b9e4[_0xc786('0x2c')]({'plain':!![]});_0x4d1428=qs[_0xc786('0x57')](_0x4d1428,['id',_0xc786('0x58'),_0xc786('0x59')]);_0x55058d[_0xc786('0x50')]=_[_0xc786('0x57')](_0x55058d[_0xc786('0x50')],['id','createdAt',_0xc786('0x59')]);return db[_0xc786('0x35')][_0xc786('0x4f')](_[_0xc786('0x44')](_0x4d1428,_0x55058d[_0xc786('0x50')]),{'include':_0x55058d[_0xc786('0x3a')][_0xc786('0x48')]?[{'all':!![]}]:undefined})[_0xc786('0x2a')](function(_0x1a064b){var _0x49e8b6=_0x55058d['user']['get']({'plain':!![]});if(!_0x49e8b6)throw new Error(_0xc786('0x5a'));if(_0x49e8b6[_0xc786('0x52')]==='user'){var _0x3521d5=_0x1a064b[_0xc786('0x2c')]({'plain':!![]});var _0x14ae47=_0xc786('0x2d');return db[_0xc786('0x5b')][_0xc786('0x56')]({'where':{'name':_0x14ae47,'userProfileId':_0x49e8b6['userProfileId']},'raw':!![]})['then'](function(_0x4ffd01){if(_0x4ffd01&&_0x4ffd01[_0xc786('0x53')]===0x0){return db['UserProfileResource']['create']({'name':_0x3521d5[_0xc786('0x31')],'resourceId':_0x3521d5['id'],'type':_0x4ffd01['name'],'sectionId':_0x4ffd01['id']},{})[_0xc786('0x2a')](function(){return _0x1a064b;});}else{return _0x1a064b;}})[_0xc786('0x4b')](function(_0x565c4c){logger['error'](_0xc786('0x54'),_0x565c4c);throw _0x565c4c;});}return _0x1a064b;});}})[_0xc786('0x2a')](respondWithResult(_0x15571d,0xc9))[_0xc786('0x4b')](handleError(_0x15571d,null));};exports[_0xc786('0x5c')]=function(_0x30c5f7,_0x5968e6){if(_0x30c5f7[_0xc786('0x50')]['id']){delete _0x30c5f7[_0xc786('0x50')]['id'];}return db[_0xc786('0x35')][_0xc786('0x56')]({'where':{'id':_0x30c5f7[_0xc786('0x4d')]['id']}})[_0xc786('0x2a')](handleEntityNotFound(_0x5968e6,null))[_0xc786('0x2a')](saveUpdates(_0x30c5f7['body'],null))[_0xc786('0x2a')](respondWithResult(_0x5968e6,null))[_0xc786('0x4b')](handleError(_0x5968e6,null));};exports[_0xc786('0x2b')]=function(_0x407d70,_0x1b0b57){return db['Dashboard']['find']({'where':{'id':_0x407d70[_0xc786('0x4d')]['id']}})[_0xc786('0x2a')](handleEntityNotFound(_0x1b0b57,null))[_0xc786('0x2a')](removeEntity(_0x1b0b57,null))[_0xc786('0x4b')](handleError(_0x1b0b57,null));};function widgetAttributes(_0x505573){try{switch(_0x505573['type']){case _0xc786('0x5d'):return[{'name':'attrUrl','value':_0x505573['attrUrl']||(_0x505573[_0xc786('0x5e')]&&_0x505573['attrs'][0x0]?_0x505573[_0xc786('0x5e')][0x0][_0xc786('0x5f')]:undefined)||_0xc786('0x60')}];case _0xc786('0x61'):return[{'name':_0xc786('0x62'),'value':_0x505573[_0xc786('0x62')]||(_0x505573[_0xc786('0x5e')]&&_0x505573[_0xc786('0x5e')][0x0]?_0x505573['attrs'][0x0][_0xc786('0x5f')]:undefined)||''}];case'clock':return[{'name':'attrHourFormat','value':_0x505573[_0xc786('0x63')]||(_0x505573['attrs']&&_0x505573[_0xc786('0x5e')][0x0]?_0x505573['attrs'][0x0]['value']:undefined)||_0xc786('0x64')},{'name':_0xc786('0x65'),'value':_0x505573[_0xc786('0x65')]||(_0x505573['attrs']&&_0x505573[_0xc786('0x5e')][0x1]?_0x505573['attrs'][0x1]['value']:undefined)||_0xc786('0x66')},{'name':_0xc786('0x67'),'value':_0x505573[_0xc786('0x67')]||(_0x505573[_0xc786('0x5e')]&&_0x505573[_0xc786('0x5e')][0x2]?_0x505573[_0xc786('0x5e')][0x2][_0xc786('0x5f')]:undefined)||0xc}];case _0xc786('0x68'):return[{'name':_0xc786('0x69'),'value':_0x505573[_0xc786('0x69')]||(_0x505573['attrs']&&_0x505573[_0xc786('0x5e')][0x0]?_0x505573[_0xc786('0x5e')][0x0][_0xc786('0x5f')]:undefined)||'total'},{'name':'attrVoiceQueues','value':_0x505573['attrVoiceQueues']||(_0x505573['attrs']&&_0x505573[_0xc786('0x5e')][0x1]?_0x505573[_0xc786('0x5e')][0x1]['value']:undefined)||[]},{'name':'attrFontSize','value':_0x505573[_0xc786('0x67')]||(_0x505573[_0xc786('0x5e')]&&_0x505573[_0xc786('0x5e')][0x2]?_0x505573[_0xc786('0x5e')][0x2][_0xc786('0x5f')]:undefined)||0x14},{'name':_0xc786('0x6a'),'value':_0x505573['attrChannel']||(_0x505573[_0xc786('0x5e')]&&_0x505573[_0xc786('0x5e')][0x3]?_0x505573[_0xc786('0x5e')][0x3]['value']:undefined)||'voice'},{'name':_0xc786('0x6b'),'value':_0x505573['attrEmailAccounts']||(_0x505573[_0xc786('0x5e')]&&_0x505573[_0xc786('0x5e')][0x4]?_0x505573['attrs'][0x4][_0xc786('0x5f')]:undefined)||''},{'name':'attrFaxAccounts','value':_0x505573[_0xc786('0x6c')]||(_0x505573[_0xc786('0x5e')]&&_0x505573[_0xc786('0x5e')][0x5]?_0x505573[_0xc786('0x5e')][0x5][_0xc786('0x5f')]:undefined)||''},{'name':_0xc786('0x6d'),'value':_0x505573[_0xc786('0x6d')]||(_0x505573['attrs']&&_0x505573[_0xc786('0x5e')][0x6]?_0x505573[_0xc786('0x5e')][0x6]['value']:undefined)||''},{'name':_0xc786('0x6e'),'value':_0x505573[_0xc786('0x6e')]||(_0x505573['attrs']&&_0x505573[_0xc786('0x5e')][0x7]?_0x505573[_0xc786('0x5e')][0x7][_0xc786('0x5f')]:undefined)||''},{'name':_0xc786('0x6f'),'value':_0x505573[_0xc786('0x6f')]||(_0x505573[_0xc786('0x5e')]&&_0x505573[_0xc786('0x5e')][0x8]?_0x505573['attrs'][0x8]['value']:undefined)||''},{'name':_0xc786('0x70'),'value':_0x505573[_0xc786('0x70')]||(_0x505573[_0xc786('0x5e')]&&_0x505573['attrs'][0x9]?_0x505573['attrs'][0x9][_0xc786('0x5f')]:undefined)||''}];case _0xc786('0x71'):case'pie-chart':return[{'name':_0xc786('0x72'),'value':_0x505573['attrSerie1']||(_0x505573[_0xc786('0x5e')]&&_0x505573['attrs'][0x0]?_0x505573['attrs'][0x0][_0xc786('0x5f')]:undefined)||_0xc786('0x73')},{'name':_0xc786('0x74'),'value':_0x505573[_0xc786('0x74')]||(_0x505573[_0xc786('0x5e')]&&_0x505573[_0xc786('0x5e')][0x1]?_0x505573[_0xc786('0x5e')][0x1]['value']:undefined)||null},{'name':_0xc786('0x75'),'value':_0x505573[_0xc786('0x75')]||(_0x505573['attrs']&&_0x505573[_0xc786('0x5e')][0x2]?_0x505573[_0xc786('0x5e')][0x2][_0xc786('0x5f')]:undefined)||null},{'name':_0xc786('0x76'),'value':_0x505573[_0xc786('0x76')]||(_0x505573[_0xc786('0x5e')]&&_0x505573[_0xc786('0x5e')][0x3]?_0x505573[_0xc786('0x5e')][0x3][_0xc786('0x5f')]:undefined)||[]},{'name':_0xc786('0x6a'),'value':_0x505573[_0xc786('0x6a')]||(_0x505573[_0xc786('0x5e')]&&_0x505573[_0xc786('0x5e')][0x4]?_0x505573[_0xc786('0x5e')][0x4][_0xc786('0x5f')]:undefined)||_0xc786('0x77')},{'name':_0xc786('0x6b'),'value':_0x505573[_0xc786('0x6b')]||(_0x505573[_0xc786('0x5e')]&&_0x505573[_0xc786('0x5e')][0x5]?_0x505573[_0xc786('0x5e')][0x5][_0xc786('0x5f')]:undefined)||''},{'name':_0xc786('0x6c'),'value':_0x505573[_0xc786('0x6c')]||(_0x505573['attrs']&&_0x505573[_0xc786('0x5e')][0x6]?_0x505573['attrs'][0x6][_0xc786('0x5f')]:undefined)||''},{'name':_0xc786('0x6d'),'value':_0x505573[_0xc786('0x6d')]||(_0x505573[_0xc786('0x5e')]&&_0x505573[_0xc786('0x5e')][0x7]?_0x505573['attrs'][0x7][_0xc786('0x5f')]:undefined)||''},{'name':'attrOpenchannelAccounts','value':_0x505573[_0xc786('0x6e')]||(_0x505573[_0xc786('0x5e')]&&_0x505573[_0xc786('0x5e')][0x8]?_0x505573['attrs'][0x8]['value']:undefined)||''},{'name':_0xc786('0x6f'),'value':_0x505573[_0xc786('0x6f')]||(_0x505573['attrs']&&_0x505573[_0xc786('0x5e')][0x9]?_0x505573[_0xc786('0x5e')][0x9]['value']:undefined)||''},{'name':_0xc786('0x70'),'value':_0x505573[_0xc786('0x70')]||(_0x505573[_0xc786('0x5e')]&&_0x505573['attrs'][0xa]?_0x505573[_0xc786('0x5e')][0xa]['value']:undefined)||''}];case _0xc786('0x78'):return[{'name':_0xc786('0x79'),'type':_0x505573[_0xc786('0x7a')]||(_0x505573['attrs']&&_0x505573[_0xc786('0x5e')][0x0]?_0x505573[_0xc786('0x5e')][0x0][_0xc786('0x38')]:undefined)||null,'value':_0x505573[_0xc786('0x79')]||(_0x505573[_0xc786('0x5e')]&&_0x505573['attrs'][0x0]?_0x505573[_0xc786('0x5e')][0x0][_0xc786('0x5f')]:undefined)||null},{'name':_0xc786('0x7b'),'value':_0x505573[_0xc786('0x7b')]||(_0x505573['attrs']&&_0x505573[_0xc786('0x5e')][0x1]?_0x505573[_0xc786('0x5e')][0x1]['value']:undefined)||0x0}];default:return[];}}catch(_0x4408a9){logger['error']('widgetAttributes:\x20%s',JSON['stringify'](_0x4408a9));return[];}}exports['addItem']=function(_0x45c7da,_0x35d7d4,_0x273ea3){if(_0x45c7da[_0xc786('0x50')]['id']){delete _0x45c7da['body']['id'];}return db[_0xc786('0x35')][_0xc786('0x56')]({'where':{'id':_0x45c7da[_0xc786('0x4d')]['id']}})[_0xc786('0x2a')](handleEntityNotFound(_0x35d7d4,null))[_0xc786('0x2a')](function(_0x391a98){if(_0x391a98){_0x45c7da[_0xc786('0x50')]['DashboardId']=_0x391a98['id'];_0x45c7da[_0xc786('0x50')][_0xc786('0x5e')]=widgetAttributes(_0x45c7da[_0xc786('0x50')]);return db[_0xc786('0x7c')][_0xc786('0x4f')](_0x45c7da[_0xc786('0x50')]);}})[_0xc786('0x2a')](respondWithResult(_0x35d7d4,null))[_0xc786('0x4b')](handleError(_0x35d7d4,null));};exports[_0xc786('0x7d')]=function(_0x34f946,_0x10bddd,_0x335fc9){var _0x296012={};var _0x35742c={};var _0x27f709;var _0x4be181;return db['Dashboard'][_0xc786('0x7e')]({'where':{'id':_0x34f946[_0xc786('0x4d')]['id']}})[_0xc786('0x2a')](handleEntityNotFound(_0x10bddd,null))[_0xc786('0x2a')](function(_0x2b5b66){if(_0x2b5b66){_0x27f709=_0x2b5b66;_0x35742c[_0xc786('0x3e')]=_[_0xc786('0x3b')](db[_0xc786('0x7c')][_0xc786('0x36')]);_0x35742c['query']=_[_0xc786('0x3b')](_0x34f946[_0xc786('0x3a')]);_0x35742c['filters']=_[_0xc786('0x3d')](_0x35742c[_0xc786('0x3e')],_0x35742c[_0xc786('0x3a')]);_0x296012[_0xc786('0x3f')]=_['intersection'](_0x35742c[_0xc786('0x3e')],qs['fields'](_0x34f946[_0xc786('0x3a')][_0xc786('0x4e')]));_0x296012[_0xc786('0x3f')]=_0x296012['attributes']['length']?_0x296012['attributes']:_0x35742c['model'];_0x296012[_0xc786('0x42')]=qs[_0xc786('0x7f')](_0x34f946['query'][_0xc786('0x7f')]);_0x296012[_0xc786('0x43')]=qs[_0xc786('0x3c')](_[_0xc786('0x80')](_0x34f946['query'],_0x35742c[_0xc786('0x3c')]));if(_0x34f946[_0xc786('0x3a')][_0xc786('0x46')]){_0x296012[_0xc786('0x43')]=_[_0xc786('0x44')](_0x296012[_0xc786('0x43')],{'$or':_[_0xc786('0x34')](_0x296012[_0xc786('0x3f')],function(_0x56db10){var _0x1ada8b={};_0x1ada8b[_0x56db10]={'$like':'%'+_0x34f946[_0xc786('0x3a')][_0xc786('0x46')]+'%'};return _0x1ada8b;})});}_0x296012=_[_0xc786('0x44')]({},_0x296012,_0x34f946[_0xc786('0x47')]);return _0x27f709[_0xc786('0x7d')](_0x296012);}})['then'](function(_0x528154){if(_0x528154){_0x4be181=_0x528154[_0xc786('0x55')];if(!_0x34f946['query'][_0xc786('0x40')](_0xc786('0x41'))){_0x296012['limit']=qs['limit'](_0x34f946[_0xc786('0x3a')][_0xc786('0x21')]);_0x296012['offset']=qs[_0xc786('0x23')](_0x34f946[_0xc786('0x3a')][_0xc786('0x23')]);}return _0x27f709[_0xc786('0x7d')](_0x296012);}})[_0xc786('0x2a')](function(_0x1f61a0){if(_0x1f61a0){return _0x1f61a0?{'count':_0x4be181,'rows':_0x1f61a0}:null;}})[_0xc786('0x2a')](respondWithResult(_0x10bddd,null))[_0xc786('0x4b')](handleError(_0x10bddd,null));};
\ No newline at end of file
index aea5d19..5e7e148 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf3e=['save','update','emit','hasOwnProperty','hook','exports','../../mysqldb','setMaxListeners'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0xbf3e,0xee));var _0xebf3=function(_0x359d99,_0x4d30fe){_0x359d99=_0x359d99-0x0;var _0xe9831e=_0xbf3e[_0x359d99];return _0xe9831e;};'use strict';var EventEmitter=require('events');var Dashboard=require(_0xebf3('0x0'))['db']['Dashboard'];var DashboardEvents=new EventEmitter();DashboardEvents[_0xebf3('0x1')](0x0);var events={'afterCreate':_0xebf3('0x2'),'afterUpdate':_0xebf3('0x3'),'afterDestroy':'remove'};function emitEvent(_0x4aa4bf){return function(_0x3f9330,_0xcbde2b,_0x3bf2f9){DashboardEvents[_0xebf3('0x4')](_0x4aa4bf+':'+_0x3f9330['id'],_0x3f9330);DashboardEvents['emit'](_0x4aa4bf,_0x3f9330);_0x3bf2f9(null);};}for(var e in events){if(events[_0xebf3('0x5')](e)){var event=events[e];Dashboard[_0xebf3('0x6')](e,emitEvent(event));}}module[_0xebf3('0x7')]=DashboardEvents;
\ No newline at end of file
+var _0x37de=['hasOwnProperty','hook','exports','events','../../mysqldb','Dashboard','setMaxListeners','update','emit'];(function(_0x3bc195,_0x3bfdfa){var _0x177eac=function(_0x3ae13a){while(--_0x3ae13a){_0x3bc195['push'](_0x3bc195['shift']());}};_0x177eac(++_0x3bfdfa);}(_0x37de,0xed));var _0xe37d=function(_0x17e3eb,_0x247074){_0x17e3eb=_0x17e3eb-0x0;var _0x51885d=_0x37de[_0x17e3eb];return _0x51885d;};'use strict';var EventEmitter=require(_0xe37d('0x0'));var Dashboard=require(_0xe37d('0x1'))['db'][_0xe37d('0x2')];var DashboardEvents=new EventEmitter();DashboardEvents[_0xe37d('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0xe37d('0x4'),'afterDestroy':'remove'};function emitEvent(_0x59559f){return function(_0x38a99e,_0x343e81,_0x4888a0){DashboardEvents[_0xe37d('0x5')](_0x59559f+':'+_0x38a99e['id'],_0x38a99e);DashboardEvents['emit'](_0x59559f,_0x38a99e);_0x4888a0(null);};}for(var e in events){if(events[_0xe37d('0x6')](e)){var event=events[e];Dashboard[_0xe37d('0x7')](e,emitEvent(event));}}module[_0xe37d('0x8')]=DashboardEvents;
\ No newline at end of file
index e54d7b3..f6edb77 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3669=['request-promise','path','rimraf','./dashboard.attributes','exports','define','lodash','util'];(function(_0x1524f7,_0x274e8c){var _0x1b045a=function(_0x47f096){while(--_0x47f096){_0x1524f7['push'](_0x1524f7['shift']());}};_0x1b045a(++_0x274e8c);}(_0x3669,0x166));var _0x9366=function(_0x5b315a,_0x5cd905){_0x5b315a=_0x5b315a-0x0;var _0x45300e=_0x3669[_0x5b315a];return _0x45300e;};'use strict';var _=require(_0x9366('0x0'));var util=require(_0x9366('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x9366('0x2'));var fs=require('fs');var path=require(_0x9366('0x3'));var rimraf=require(_0x9366('0x4'));var config=require('../../config/environment');var attributes=require(_0x9366('0x5'));module[_0x9366('0x6')]=function(_0x4abc52,_0x1acb9d){return _0x4abc52[_0x9366('0x7')]('Dashboard',attributes,{'tableName':'dashboards','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x37ee=['define','Dashboard','dashboards','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment'];(function(_0x3005ca,_0x1ac67e){var _0x3e402b=function(_0x199b19){while(--_0x199b19){_0x3005ca['push'](_0x3005ca['shift']());}};_0x3e402b(++_0x1ac67e);}(_0x37ee,0x183));var _0xe37e=function(_0x3a1319,_0x4b7375){_0x3a1319=_0x3a1319-0x0;var _0x379215=_0x37ee[_0x3a1319];return _0x379215;};'use strict';var _=require(_0xe37e('0x0'));var util=require(_0xe37e('0x1'));var logger=require(_0xe37e('0x2'))(_0xe37e('0x3'));var moment=require(_0xe37e('0x4'));var BPromise=require(_0xe37e('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xe37e('0x6'));var rimraf=require(_0xe37e('0x7'));var config=require(_0xe37e('0x8'));var attributes=require('./dashboard.attributes');module['exports']=function(_0x13e171,_0x2946ad){return _0x13e171[_0xe37e('0x9')](_0xe37e('0xa'),attributes,{'tableName':_0xe37e('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0528f36..cf0504a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x38fb=['register','request','then','info','Dashboard,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','./dashboard.socket'];(function(_0x14ad69,_0xf76368){var _0x218722=function(_0x210f59){while(--_0x210f59){_0x14ad69['push'](_0x14ad69['shift']());}};_0x218722(++_0xf76368);}(_0x38fb,0x1b0));var _0xb38f=function(_0x556927,_0x34b53f){_0x556927=_0x556927-0x0;var _0x5f1235=_0x38fb[_0x556927];return _0x5f1235;};'use strict';var _=require(_0xb38f('0x0'));var util=require(_0xb38f('0x1'));var moment=require(_0xb38f('0x2'));var BPromise=require(_0xb38f('0x3'));var rs=require(_0xb38f('0x4'));var fs=require('fs');var Redis=require(_0xb38f('0x5'));var db=require(_0xb38f('0x6'))['db'];var utils=require(_0xb38f('0x7'));var logger=require(_0xb38f('0x8'))(_0xb38f('0x9'));var config=require(_0xb38f('0xa'));var jayson=require(_0xb38f('0xb'));var client=jayson[_0xb38f('0xc')][_0xb38f('0xd')]({'port':0x232a});config[_0xb38f('0xe')]=_[_0xb38f('0xf')](config[_0xb38f('0xe')],{'host':_0xb38f('0x10'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xb38f('0xe')]));require(_0xb38f('0x11'))[_0xb38f('0x12')](socket);function respondWithRpcPromise(_0x5e037a,_0x3a5441,_0x1252b6){return new BPromise(function(_0xc17932,_0x331549){return client[_0xb38f('0x13')](_0x5e037a,_0x1252b6)[_0xb38f('0x14')](function(_0x3eb027){logger[_0xb38f('0x15')](_0xb38f('0x16'),_0x3a5441,_0xb38f('0x17'));logger[_0xb38f('0x18')]('Dashboard,\x20%s,\x20%s,\x20%s',_0x3a5441,'request\x20sent',JSON['stringify'](_0x3eb027));if(_0x3eb027['error']){if(_0x3eb027[_0xb38f('0x19')][_0xb38f('0x1a')]===0x1f4){logger[_0xb38f('0x19')](_0xb38f('0x16'),_0x3a5441,_0x3eb027[_0xb38f('0x19')][_0xb38f('0x1b')]);return _0x331549(_0x3eb027[_0xb38f('0x19')][_0xb38f('0x1b')]);}logger['error']('Dashboard,\x20%s,\x20%s',_0x3a5441,_0x3eb027[_0xb38f('0x19')]['message']);return _0xc17932(_0x3eb027[_0xb38f('0x19')][_0xb38f('0x1b')]);}else{logger[_0xb38f('0x15')](_0xb38f('0x16'),_0x3a5441,_0xb38f('0x17'));_0xc17932(_0x3eb027[_0xb38f('0x1c')][_0xb38f('0x1b')]);}})[_0xb38f('0x1d')](function(_0x57c380){logger[_0xb38f('0x19')](_0xb38f('0x16'),_0x3a5441,_0x57c380);_0x331549(_0x57c380);});});}
\ No newline at end of file
+var _0xf468=['./dashboard.socket','register','request','then','info','Dashboard,\x20%s,\x20%s','request\x20sent','debug','Dashboard,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','defaults','redis','localhost'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xf468,0x195));var _0x8f46=function(_0x297fd3,_0x115406){_0x297fd3=_0x297fd3-0x0;var _0x2af381=_0xf468[_0x297fd3];return _0x2af381;};'use strict';var _=require(_0x8f46('0x0'));var util=require(_0x8f46('0x1'));var moment=require(_0x8f46('0x2'));var BPromise=require(_0x8f46('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8f46('0x4'));var db=require(_0x8f46('0x5'))['db'];var utils=require(_0x8f46('0x6'));var logger=require(_0x8f46('0x7'))(_0x8f46('0x8'));var config=require('../../config/environment');var jayson=require(_0x8f46('0x9'));var client=jayson[_0x8f46('0xa')][_0x8f46('0xb')]({'port':0x232a});config['redis']=_[_0x8f46('0xc')](config[_0x8f46('0xd')],{'host':_0x8f46('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x8f46('0xd')]));require(_0x8f46('0xf'))[_0x8f46('0x10')](socket);function respondWithRpcPromise(_0x574cd5,_0x3622cc,_0x25427c){return new BPromise(function(_0xfbbf34,_0x41e5a5){return client[_0x8f46('0x11')](_0x574cd5,_0x25427c)[_0x8f46('0x12')](function(_0xdcacc1){logger[_0x8f46('0x13')](_0x8f46('0x14'),_0x3622cc,_0x8f46('0x15'));logger[_0x8f46('0x16')](_0x8f46('0x17'),_0x3622cc,_0x8f46('0x15'),JSON[_0x8f46('0x18')](_0xdcacc1));if(_0xdcacc1[_0x8f46('0x19')]){if(_0xdcacc1[_0x8f46('0x19')][_0x8f46('0x1a')]===0x1f4){logger['error'](_0x8f46('0x14'),_0x3622cc,_0xdcacc1[_0x8f46('0x19')][_0x8f46('0x1b')]);return _0x41e5a5(_0xdcacc1['error']['message']);}logger[_0x8f46('0x19')](_0x8f46('0x14'),_0x3622cc,_0xdcacc1['error']['message']);return _0xfbbf34(_0xdcacc1['error'][_0x8f46('0x1b')]);}else{logger[_0x8f46('0x13')]('Dashboard,\x20%s,\x20%s',_0x3622cc,_0x8f46('0x15'));_0xfbbf34(_0xdcacc1[_0x8f46('0x1c')][_0x8f46('0x1b')]);}})[_0x8f46('0x1d')](function(_0x599bf4){logger[_0x8f46('0x19')](_0x8f46('0x14'),_0x3622cc,_0x599bf4);_0x41e5a5(_0x599bf4);});});}
\ No newline at end of file
index 60f44de..df21f61 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9fa5=['dashboard:','./dashboard.events','save','remove','update','removeListener','register'];(function(_0x55a08d,_0x4b9a17){var _0x1ef93d=function(_0x21210b){while(--_0x21210b){_0x55a08d['push'](_0x55a08d['shift']());}};_0x1ef93d(++_0x4b9a17);}(_0x9fa5,0xf6));var _0x59fa=function(_0xf0bcac,_0x531755){_0xf0bcac=_0xf0bcac-0x0;var _0x4e4c65=_0x9fa5[_0xf0bcac];return _0x4e4c65;};'use strict';var DashboardEvents=require(_0x59fa('0x0'));var events=[_0x59fa('0x1'),_0x59fa('0x2'),_0x59fa('0x3')];function createListener(_0x1da24b,_0x86c9f){return function(_0x24f414){_0x86c9f['emit'](_0x1da24b,_0x24f414);};}function removeListener(_0x44047e,_0x2478bf){return function(){DashboardEvents[_0x59fa('0x4')](_0x44047e,_0x2478bf);};}exports[_0x59fa('0x5')]=function(_0x4e8ea3){for(var _0x4e8abf=0x0,_0x21d12a=events['length'];_0x4e8abf<_0x21d12a;_0x4e8abf++){var _0x4b13f6=events[_0x4e8abf];var _0x56a722=createListener(_0x59fa('0x6')+_0x4b13f6,_0x4e8ea3);DashboardEvents['on'](_0x4b13f6,_0x56a722);}};
\ No newline at end of file
+var _0xa99e=['dashboard:','remove','emit','removeListener','register','length'];(function(_0x566602,_0x1468e0){var _0x13e1a8=function(_0x25f7a6){while(--_0x25f7a6){_0x566602['push'](_0x566602['shift']());}};_0x13e1a8(++_0x1468e0);}(_0xa99e,0x1ab));var _0xea99=function(_0x58daf0,_0x31ae89){_0x58daf0=_0x58daf0-0x0;var _0x390a6b=_0xa99e[_0x58daf0];return _0x390a6b;};'use strict';var DashboardEvents=require('./dashboard.events');var events=['save',_0xea99('0x0'),'update'];function createListener(_0x3c812e,_0x268558){return function(_0x5ba5ab){_0x268558[_0xea99('0x1')](_0x3c812e,_0x5ba5ab);};}function removeListener(_0x5196c0,_0x476432){return function(){DashboardEvents[_0xea99('0x2')](_0x5196c0,_0x476432);};}exports[_0xea99('0x3')]=function(_0x1e98d9){for(var _0x33faad=0x0,_0x4eaa56=events[_0xea99('0x4')];_0x33faad<_0x4eaa56;_0x33faad++){var _0x35b27f=events[_0x33faad];var _0x55e77a=createListener(_0xea99('0x5')+_0x35b27f,_0x1e98d9);DashboardEvents['on'](_0x35b27f,_0x55e77a);}};
\ No newline at end of file
index 7036204..e99a729 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe8ec=['show','getItems','post','/:id/clone','clone','/:id/items','addItem','put','update','delete','destroy','multer','util','path','express','Router','fs-extra','../../config/environment','./dashboard.controller','isAuthenticated','index','get','/:id'];(function(_0x4dc8cf,_0x32708f){var _0x107654=function(_0x1e8a52){while(--_0x1e8a52){_0x4dc8cf['push'](_0x4dc8cf['shift']());}};_0x107654(++_0x32708f);}(_0xe8ec,0x17b));var _0xce8e=function(_0x463f08,_0x56e4cf){_0x463f08=_0x463f08-0x0;var _0x9b4b3a=_0xe8ec[_0x463f08];return _0x9b4b3a;};'use strict';var multer=require(_0xce8e('0x0'));var util=require(_0xce8e('0x1'));var path=require(_0xce8e('0x2'));var timeout=require('connect-timeout');var express=require(_0xce8e('0x3'));var router=express[_0xce8e('0x4')]();var fs_extra=require(_0xce8e('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xce8e('0x6'));var controller=require(_0xce8e('0x7'));router['get']('/',auth[_0xce8e('0x8')](),controller[_0xce8e('0x9')]);router[_0xce8e('0xa')](_0xce8e('0xb'),auth[_0xce8e('0x8')](),controller[_0xce8e('0xc')]);router[_0xce8e('0xa')]('/:id/items',auth[_0xce8e('0x8')](),controller[_0xce8e('0xd')]);router[_0xce8e('0xe')]('/',auth['isAuthenticated'](),controller['create']);router[_0xce8e('0xe')](_0xce8e('0xf'),auth[_0xce8e('0x8')](),controller[_0xce8e('0x10')]);router['post'](_0xce8e('0x11'),auth[_0xce8e('0x8')](),controller[_0xce8e('0x12')]);router[_0xce8e('0x13')](_0xce8e('0xb'),auth['isAuthenticated'](),controller[_0xce8e('0x14')]);router[_0xce8e('0x15')](_0xce8e('0xb'),auth['isAuthenticated'](),controller[_0xce8e('0x16')]);module['exports']=router;
\ No newline at end of file
+var _0x207a=['index','get','show','/:id/items','create','post','/:id/clone','clone','addItem','/:id','update','destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./dashboard.controller','isAuthenticated'];(function(_0x1194fa,_0x1b568d){var _0x3ea9c6=function(_0x3d3cd3){while(--_0x3d3cd3){_0x1194fa['push'](_0x1194fa['shift']());}};_0x3ea9c6(++_0x1b568d);}(_0x207a,0x138));var _0xa207=function(_0x487ed4,_0x312026){_0x487ed4=_0x487ed4-0x0;var _0xa1193e=_0x207a[_0x487ed4];return _0xa1193e;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xa207('0x0'));var timeout=require(_0xa207('0x1'));var express=require(_0xa207('0x2'));var router=express[_0xa207('0x3')]();var fs_extra=require(_0xa207('0x4'));var auth=require(_0xa207('0x5'));var interaction=require(_0xa207('0x6'));var config=require(_0xa207('0x7'));var controller=require(_0xa207('0x8'));router['get']('/',auth[_0xa207('0x9')](),controller[_0xa207('0xa')]);router[_0xa207('0xb')]('/:id',auth[_0xa207('0x9')](),controller[_0xa207('0xc')]);router['get'](_0xa207('0xd'),auth['isAuthenticated'](),controller['getItems']);router['post']('/',auth[_0xa207('0x9')](),controller[_0xa207('0xe')]);router[_0xa207('0xf')](_0xa207('0x10'),auth['isAuthenticated'](),controller[_0xa207('0x11')]);router['post'](_0xa207('0xd'),auth['isAuthenticated'](),controller[_0xa207('0x12')]);router['put'](_0xa207('0x13'),auth['isAuthenticated'](),controller[_0xa207('0x14')]);router['delete'](_0xa207('0x13'),auth[_0xa207('0x9')](),controller[_0xa207('0x15')]);module[_0xa207('0x16')]=router;
\ No newline at end of file
index c717fb1..12e88e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x90b1=['#2196f3','sequelize','squel','lodash','STRING','TEXT','long','parse','setDataValue','attrs','stringify','INTEGER','#ffffff'];(function(_0x136e17,_0x4cc300){var _0x5099c9=function(_0xbbbb80){while(--_0xbbbb80){_0x136e17['push'](_0x136e17['shift']());}};_0x5099c9(++_0x4cc300);}(_0x90b1,0x1bb));var _0x190b=function(_0x3236be,_0x47eb9b){_0x3236be=_0x3236be-0x0;var _0x40a904=_0x90b1[_0x3236be];return _0x40a904;};'use strict';var Sequelize=require(_0x190b('0x0'));var squel=require(_0x190b('0x1'));var _=require(_0x190b('0x2'));module['exports']={'title':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x190b('0x3')](0x14),'allowNull':![],'validate':{'len':[0x1,0x14]}},'attrs':{'type':Sequelize[_0x190b('0x4')](_0x190b('0x5')),'get':function(){try{return JSON[_0x190b('0x6')](this['getDataValue']('attrs'));}catch(_0x5cbebb){return[];}},'set':function(_0x5da9c1){try{this[_0x190b('0x7')](_0x190b('0x8'),JSON[_0x190b('0x9')](_0x5da9c1));}catch(_0x626aa1){this[_0x190b('0x7')](_0x190b('0x8'),JSON[_0x190b('0x9')]([]));}}},'sizeX':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x1},'sizeY':{'type':Sequelize[_0x190b('0xa')],'allowNull':![],'defaultValue':0x1},'row':{'type':Sequelize[_0x190b('0xa')]},'col':{'type':Sequelize[_0x190b('0xa')]},'background':{'type':Sequelize[_0x190b('0x3')],'allowNull':![],'defaultValue':_0x190b('0xb'),'validate':{'notEmpty':!![]}},'foreground':{'type':Sequelize[_0x190b('0x3')],'allowNull':![],'defaultValue':_0x190b('0xc'),'validate':{'notEmpty':!![]}},'link':{'type':Sequelize[_0x190b('0x3')]},'titleFontSize':{'type':Sequelize['INTEGER'],'defaultValue':0xc}};
\ No newline at end of file
+var _0x5d17=['#ffffff','sequelize','squel','STRING','TEXT','parse','getDataValue','attrs','setDataValue','stringify','INTEGER'];(function(_0x3b632f,_0x453380){var _0x10e788=function(_0x2228a4){while(--_0x2228a4){_0x3b632f['push'](_0x3b632f['shift']());}};_0x10e788(++_0x453380);}(_0x5d17,0x114));var _0x75d1=function(_0x284bc3,_0x22dffe){_0x284bc3=_0x284bc3-0x0;var _0x41ac81=_0x5d17[_0x284bc3];return _0x41ac81;};'use strict';var Sequelize=require(_0x75d1('0x0'));var squel=require(_0x75d1('0x1'));var _=require('lodash');module['exports']={'title':{'type':Sequelize[_0x75d1('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x75d1('0x2')](0x14),'allowNull':![],'validate':{'len':[0x1,0x14]}},'attrs':{'type':Sequelize[_0x75d1('0x3')]('long'),'get':function(){try{return JSON[_0x75d1('0x4')](this[_0x75d1('0x5')](_0x75d1('0x6')));}catch(_0x32bd45){return[];}},'set':function(_0x56ac0a){try{this[_0x75d1('0x7')](_0x75d1('0x6'),JSON[_0x75d1('0x8')](_0x56ac0a));}catch(_0x1ee61b){this[_0x75d1('0x7')](_0x75d1('0x6'),JSON[_0x75d1('0x8')]([]));}}},'sizeX':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x1},'sizeY':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x1},'row':{'type':Sequelize[_0x75d1('0x9')]},'col':{'type':Sequelize['INTEGER']},'background':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x75d1('0xa'),'validate':{'notEmpty':!![]}},'foreground':{'type':Sequelize[_0x75d1('0x2')],'allowNull':![],'defaultValue':'#2196f3','validate':{'notEmpty':!![]}},'link':{'type':Sequelize[_0x75d1('0x2')]},'titleFontSize':{'type':Sequelize[_0x75d1('0x9')],'defaultValue':0xc}};
\ No newline at end of file
index f2efbcf..79c8116 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf25=['offset','undefined','count','limit','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','params','model','keys','query','filters','intersection','fields','attributes','length','includeAll','include','options','catch','DashboardItem','attrUrl','attrs','value','https://','custom','attrHourFormat','attrTimezone','0.00','attrFontSize','attrMetric','total','attrVoiceQueues','voice','attrEmailAccounts','attrOpenchannelAccounts','attrWhatsappAccounts','attrChatWebsites','multibar-chart','pie-chart','attrSerie1','attrSerie2','attrSerie3','attrChannel','attrFaxAccounts','attrSmsAccounts','web-report','reportType','type','attrRefresh','widgetAttributes:\x20%s','body','create','find','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','to-csv','ejs','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','register','sendStatus','status','end','json'];(function(_0xade4c4,_0x314e6b){var _0x5ee0b2=function(_0x5a7c1d){while(--_0x5a7c1d){_0xade4c4['push'](_0xade4c4['shift']());}};_0x5ee0b2(++_0x314e6b);}(_0xbf25,0x15e));var _0x5bf2=function(_0x23e9d3,_0x3f0b85){_0x23e9d3=_0x23e9d3-0x0;var _0x5084e6=_0xbf25[_0x23e9d3];return _0x5084e6;};'use strict';var emlformat=require(_0x5bf2('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x5bf2('0x1'));var jsonpatch=require(_0x5bf2('0x2'));var rp=require(_0x5bf2('0x3'));var moment=require(_0x5bf2('0x4'));var BPromise=require(_0x5bf2('0x5'));var Mustache=require(_0x5bf2('0x6'));var util=require('util');var path=require(_0x5bf2('0x7'));var sox=require('sox');var csv=require(_0x5bf2('0x8'));var ejs=require(_0x5bf2('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x5bf2('0xa'));var squel=require(_0x5bf2('0xb'));var crypto=require(_0x5bf2('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x5bf2('0xd'));var toCsv=require(_0x5bf2('0x8'));var querystring=require(_0x5bf2('0xe'));var Papa=require('papaparse');var Redis=require(_0x5bf2('0xf'));var authService=require(_0x5bf2('0x10'));var qs=require(_0x5bf2('0x11'));var as=require(_0x5bf2('0x12'));var hardwareService=require(_0x5bf2('0x13'));var logger=require(_0x5bf2('0x14'))(_0x5bf2('0x15'));var utils=require(_0x5bf2('0x16'));var config=require(_0x5bf2('0x17'));var licenseUtil=require(_0x5bf2('0x18'));var db=require(_0x5bf2('0x19'))['db'];config[_0x5bf2('0x1a')]=_[_0x5bf2('0x1b')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x5bf2('0x1c'))(new Redis(config[_0x5bf2('0x1a')]));require('./dashboardItem.socket')[_0x5bf2('0x1d')](socket);function respondWithStatusCode(_0x43a83b,_0x1bdb56){_0x1bdb56=_0x1bdb56||0xcc;return function(_0x21a3a1){if(_0x21a3a1){return _0x43a83b[_0x5bf2('0x1e')](_0x1bdb56);}return _0x43a83b[_0x5bf2('0x1f')](_0x1bdb56)[_0x5bf2('0x20')]();};}function respondWithResult(_0xff9397,_0x214752){_0x214752=_0x214752||0xc8;return function(_0x326cea){if(_0x326cea){return _0xff9397[_0x5bf2('0x1f')](_0x214752)[_0x5bf2('0x21')](_0x326cea);}};}function respondWithFilteredResult(_0x4d1990,_0x4fc7c7){return function(_0x2f87ff){if(_0x2f87ff){var _0x4af54a=typeof _0x4fc7c7[_0x5bf2('0x22')]===_0x5bf2('0x23')&&typeof _0x4fc7c7['limit']==='undefined';var _0x3adc26=_0x2f87ff[_0x5bf2('0x24')];var _0x3602b8=_0x4af54a?0x0:_0x4fc7c7[_0x5bf2('0x22')];var _0x22f35a=_0x4af54a?_0x2f87ff[_0x5bf2('0x24')]:_0x4fc7c7[_0x5bf2('0x22')]+_0x4fc7c7[_0x5bf2('0x25')];var _0x44bedc;if(_0x22f35a>=_0x3adc26){_0x22f35a=_0x3adc26;_0x44bedc=0xc8;}else{_0x44bedc=0xce;}_0x4d1990['status'](_0x44bedc);return _0x4d1990['set'](_0x5bf2('0x26'),_0x3602b8+'-'+_0x22f35a+'/'+_0x3adc26)[_0x5bf2('0x21')](_0x2f87ff);}return null;};}function patchUpdates(_0x161ec2){return function(_0x2d2b7e){try{jsonpatch[_0x5bf2('0x27')](_0x2d2b7e,_0x161ec2,!![]);}catch(_0x1cb9e1){return BPromise[_0x5bf2('0x28')](_0x1cb9e1);}return _0x2d2b7e[_0x5bf2('0x29')]();};}function saveUpdates(_0x239206,_0x2825c7){return function(_0x2d9a12){if(_0x2d9a12){return _0x2d9a12[_0x5bf2('0x2a')](_0x239206)[_0x5bf2('0x2b')](function(_0x5ae161){return _0x5ae161;});}return null;};}function removeEntity(_0x1a90e7,_0x4d3067){return function(_0x36cab3){if(_0x36cab3){return _0x36cab3[_0x5bf2('0x2c')]()['then'](function(){_0x1a90e7[_0x5bf2('0x1f')](0xcc)[_0x5bf2('0x20')]();});}};}function handleEntityNotFound(_0x5cefb3,_0x5426f9){return function(_0x8c54cd){if(!_0x8c54cd){_0x5cefb3[_0x5bf2('0x1e')](0x194);}return _0x8c54cd;};}function handleError(_0x3ceabf,_0x43c2f7){_0x43c2f7=_0x43c2f7||0x1f4;return function(_0x5ca619){logger[_0x5bf2('0x2d')](_0x5ca619[_0x5bf2('0x2e')]);if(_0x5ca619[_0x5bf2('0x2f')]){delete _0x5ca619[_0x5bf2('0x2f')];}_0x3ceabf[_0x5bf2('0x1f')](_0x43c2f7)[_0x5bf2('0x30')](_0x5ca619);};}exports['show']=function(_0x3edba7,_0x2ea937){var _0x44a6a3={'raw':![],'where':{'id':_0x3edba7[_0x5bf2('0x31')]['id']}},_0x59ac8b={};_0x59ac8b[_0x5bf2('0x32')]=_[_0x5bf2('0x33')](db['DashboardItem']['rawAttributes']);_0x59ac8b['query']=_[_0x5bf2('0x33')](_0x3edba7[_0x5bf2('0x34')]);_0x59ac8b[_0x5bf2('0x35')]=_[_0x5bf2('0x36')](_0x59ac8b[_0x5bf2('0x32')],_0x59ac8b['query']);_0x44a6a3['attributes']=_[_0x5bf2('0x36')](_0x59ac8b[_0x5bf2('0x32')],qs[_0x5bf2('0x37')](_0x3edba7[_0x5bf2('0x34')][_0x5bf2('0x37')]));_0x44a6a3[_0x5bf2('0x38')]=_0x44a6a3[_0x5bf2('0x38')][_0x5bf2('0x39')]?_0x44a6a3[_0x5bf2('0x38')]:_0x59ac8b[_0x5bf2('0x32')];if(_0x3edba7[_0x5bf2('0x34')][_0x5bf2('0x3a')]){_0x44a6a3[_0x5bf2('0x3b')]=[{'all':!![]}];}_0x44a6a3=_['merge']({},_0x44a6a3,_0x3edba7[_0x5bf2('0x3c')]);return db['DashboardItem']['find'](_0x44a6a3)['then'](handleEntityNotFound(_0x2ea937,null))['then'](respondWithResult(_0x2ea937,null))[_0x5bf2('0x3d')](handleError(_0x2ea937,null));};exports[_0x5bf2('0x2c')]=function(_0x23e82c,_0xcdee4c){return db[_0x5bf2('0x3e')]['find']({'where':{'id':_0x23e82c['params']['id']}})['then'](handleEntityNotFound(_0xcdee4c,null))[_0x5bf2('0x2b')](removeEntity(_0xcdee4c,null))[_0x5bf2('0x3d')](handleError(_0xcdee4c,null));};function widgetAttributes(_0x541d7f){try{switch(_0x541d7f['type']){case'iframe':return[{'name':'attrUrl','value':_0x541d7f[_0x5bf2('0x3f')]||(_0x541d7f['attrs']&&_0x541d7f[_0x5bf2('0x40')][0x0]?_0x541d7f[_0x5bf2('0x40')][0x0][_0x5bf2('0x41')]:undefined)||_0x5bf2('0x42')}];case _0x5bf2('0x43'):return[{'name':'attrPath','value':_0x541d7f['attrPath']||(_0x541d7f[_0x5bf2('0x40')]&&_0x541d7f[_0x5bf2('0x40')][0x0]?_0x541d7f[_0x5bf2('0x40')][0x0][_0x5bf2('0x41')]:undefined)||''}];case'clock':return[{'name':'attrHourFormat','value':_0x541d7f[_0x5bf2('0x44')]||(_0x541d7f[_0x5bf2('0x40')]&&_0x541d7f[_0x5bf2('0x40')][0x0]?_0x541d7f['attrs'][0x0][_0x5bf2('0x41')]:undefined)||'HH:mm:ss'},{'name':_0x5bf2('0x45'),'value':_0x541d7f['attrTimezone']||(_0x541d7f[_0x5bf2('0x40')]&&_0x541d7f[_0x5bf2('0x40')][0x1]?_0x541d7f[_0x5bf2('0x40')][0x1][_0x5bf2('0x41')]:undefined)||_0x5bf2('0x46')},{'name':_0x5bf2('0x47'),'value':_0x541d7f[_0x5bf2('0x47')]||(_0x541d7f['attrs']&&_0x541d7f['attrs'][0x2]?_0x541d7f[_0x5bf2('0x40')][0x2]['value']:undefined)||0xc}];case'counter':return[{'name':_0x5bf2('0x48'),'value':_0x541d7f[_0x5bf2('0x48')]||(_0x541d7f[_0x5bf2('0x40')]&&_0x541d7f[_0x5bf2('0x40')][0x0]?_0x541d7f[_0x5bf2('0x40')][0x0]['value']:undefined)||_0x5bf2('0x49')},{'name':_0x5bf2('0x4a'),'value':_0x541d7f[_0x5bf2('0x4a')]||(_0x541d7f['attrs']&&_0x541d7f[_0x5bf2('0x40')][0x1]?_0x541d7f['attrs'][0x1][_0x5bf2('0x41')]:undefined)||[]},{'name':_0x5bf2('0x47'),'value':_0x541d7f['attrFontSize']||(_0x541d7f[_0x5bf2('0x40')]&&_0x541d7f['attrs'][0x2]?_0x541d7f['attrs'][0x2][_0x5bf2('0x41')]:undefined)||0x14},{'name':'attrChannel','value':_0x541d7f['attrChannel']||(_0x541d7f['attrs']&&_0x541d7f[_0x5bf2('0x40')][0x3]?_0x541d7f[_0x5bf2('0x40')][0x3]['value']:undefined)||_0x5bf2('0x4b')},{'name':_0x5bf2('0x4c'),'value':_0x541d7f[_0x5bf2('0x4c')]||(_0x541d7f[_0x5bf2('0x40')]&&_0x541d7f['attrs'][0x4]?_0x541d7f[_0x5bf2('0x40')][0x4][_0x5bf2('0x41')]:undefined)||''},{'name':'attrFaxAccounts','value':_0x541d7f['attrFaxAccounts']||(_0x541d7f[_0x5bf2('0x40')]&&_0x541d7f['attrs'][0x5]?_0x541d7f[_0x5bf2('0x40')][0x5][_0x5bf2('0x41')]:undefined)||''},{'name':'attrSmsAccounts','value':_0x541d7f['attrSmsAccounts']||(_0x541d7f[_0x5bf2('0x40')]&&_0x541d7f['attrs'][0x6]?_0x541d7f[_0x5bf2('0x40')][0x6]['value']:undefined)||''},{'name':'attrOpenchannelAccounts','value':_0x541d7f[_0x5bf2('0x4d')]||(_0x541d7f[_0x5bf2('0x40')]&&_0x541d7f[_0x5bf2('0x40')][0x7]?_0x541d7f['attrs'][0x7][_0x5bf2('0x41')]:undefined)||''},{'name':_0x5bf2('0x4e'),'value':_0x541d7f['attrWhatsappAccounts']||(_0x541d7f['attrs']&&_0x541d7f[_0x5bf2('0x40')][0x8]?_0x541d7f['attrs'][0x8][_0x5bf2('0x41')]:undefined)||''},{'name':_0x5bf2('0x4f'),'value':_0x541d7f['attrChatWebsites']||(_0x541d7f['attrs']&&_0x541d7f[_0x5bf2('0x40')][0x9]?_0x541d7f[_0x5bf2('0x40')][0x9][_0x5bf2('0x41')]:undefined)||''}];case _0x5bf2('0x50'):case _0x5bf2('0x51'):return[{'name':_0x5bf2('0x52'),'value':_0x541d7f[_0x5bf2('0x52')]||(_0x541d7f[_0x5bf2('0x40')]&&_0x541d7f[_0x5bf2('0x40')][0x0]?_0x541d7f['attrs'][0x0]['value']:undefined)||_0x5bf2('0x49')},{'name':_0x5bf2('0x53'),'value':_0x541d7f[_0x5bf2('0x53')]||(_0x541d7f['attrs']&&_0x541d7f['attrs'][0x1]?_0x541d7f['attrs'][0x1]['value']:undefined)||null},{'name':_0x5bf2('0x54'),'value':_0x541d7f['attrSerie3']||(_0x541d7f[_0x5bf2('0x40')]&&_0x541d7f[_0x5bf2('0x40')][0x2]?_0x541d7f['attrs'][0x2][_0x5bf2('0x41')]:undefined)||null},{'name':_0x5bf2('0x4a'),'value':_0x541d7f[_0x5bf2('0x4a')]||(_0x541d7f['attrs']&&_0x541d7f[_0x5bf2('0x40')][0x3]?_0x541d7f[_0x5bf2('0x40')][0x3][_0x5bf2('0x41')]:undefined)||[]},{'name':'attrChannel','value':_0x541d7f[_0x5bf2('0x55')]||(_0x541d7f[_0x5bf2('0x40')]&&_0x541d7f[_0x5bf2('0x40')][0x4]?_0x541d7f[_0x5bf2('0x40')][0x4]['value']:undefined)||_0x5bf2('0x4b')},{'name':'attrEmailAccounts','value':_0x541d7f['attrEmailAccounts']||(_0x541d7f[_0x5bf2('0x40')]&&_0x541d7f[_0x5bf2('0x40')][0x5]?_0x541d7f[_0x5bf2('0x40')][0x5]['value']:undefined)||''},{'name':_0x5bf2('0x56'),'value':_0x541d7f['attrFaxAccounts']||(_0x541d7f['attrs']&&_0x541d7f[_0x5bf2('0x40')][0x6]?_0x541d7f[_0x5bf2('0x40')][0x6][_0x5bf2('0x41')]:undefined)||''},{'name':_0x5bf2('0x57'),'value':_0x541d7f['attrSmsAccounts']||(_0x541d7f[_0x5bf2('0x40')]&&_0x541d7f[_0x5bf2('0x40')][0x7]?_0x541d7f[_0x5bf2('0x40')][0x7][_0x5bf2('0x41')]:undefined)||''},{'name':_0x5bf2('0x4d'),'value':_0x541d7f[_0x5bf2('0x4d')]||(_0x541d7f[_0x5bf2('0x40')]&&_0x541d7f[_0x5bf2('0x40')][0x8]?_0x541d7f[_0x5bf2('0x40')][0x8][_0x5bf2('0x41')]:undefined)||''},{'name':_0x5bf2('0x4e'),'value':_0x541d7f[_0x5bf2('0x4e')]||(_0x541d7f[_0x5bf2('0x40')]&&_0x541d7f[_0x5bf2('0x40')][0x9]?_0x541d7f[_0x5bf2('0x40')][0x9][_0x5bf2('0x41')]:undefined)||''},{'name':_0x5bf2('0x4f'),'value':_0x541d7f[_0x5bf2('0x4f')]||(_0x541d7f[_0x5bf2('0x40')]&&_0x541d7f[_0x5bf2('0x40')][0xa]?_0x541d7f[_0x5bf2('0x40')][0xa][_0x5bf2('0x41')]:undefined)||''}];case _0x5bf2('0x58'):return[{'name':'attrReport','type':_0x541d7f[_0x5bf2('0x59')]||(_0x541d7f['attrs']&&_0x541d7f[_0x5bf2('0x40')][0x0]?_0x541d7f[_0x5bf2('0x40')][0x0][_0x5bf2('0x5a')]:undefined)||null,'value':_0x541d7f['attrReport']||(_0x541d7f[_0x5bf2('0x40')]&&_0x541d7f[_0x5bf2('0x40')][0x0]?_0x541d7f[_0x5bf2('0x40')][0x0][_0x5bf2('0x41')]:undefined)||null},{'name':_0x5bf2('0x5b'),'value':_0x541d7f[_0x5bf2('0x5b')]||(_0x541d7f[_0x5bf2('0x40')]&&_0x541d7f[_0x5bf2('0x40')][0x1]?_0x541d7f[_0x5bf2('0x40')][0x1][_0x5bf2('0x41')]:undefined)||0x0}];default:return[];}}catch(_0x376f3d){logger[_0x5bf2('0x2d')](_0x5bf2('0x5c'),JSON['stringify'](_0x376f3d));return[];}}exports['create']=function(_0x12a55e,_0x100e65){if(_0x12a55e[_0x5bf2('0x5d')]){_0x12a55e[_0x5bf2('0x5d')]['attrs']=widgetAttributes(_0x12a55e[_0x5bf2('0x5d')]);}return db[_0x5bf2('0x3e')][_0x5bf2('0x5e')](_0x12a55e[_0x5bf2('0x5d')],{})['then'](respondWithResult(_0x100e65,0xc9))[_0x5bf2('0x3d')](handleError(_0x100e65,null));};exports[_0x5bf2('0x2a')]=function(_0x555b77,_0x3e3e16){if(_0x555b77['body']['id']){delete _0x555b77[_0x5bf2('0x5d')]['id'];}_0x555b77['body'][_0x5bf2('0x40')]=widgetAttributes(_0x555b77[_0x5bf2('0x5d')]);return db['DashboardItem'][_0x5bf2('0x5f')]({'where':{'id':_0x555b77[_0x5bf2('0x31')]['id']}})[_0x5bf2('0x2b')](handleEntityNotFound(_0x3e3e16,null))[_0x5bf2('0x2b')](saveUpdates(_0x555b77[_0x5bf2('0x5d')],null))['then'](respondWithResult(_0x3e3e16,null))[_0x5bf2('0x3d')](handleError(_0x3e3e16,null));};
\ No newline at end of file
+var _0x0c42=['reportType','attrRefresh','error','stringify','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','to-csv','fs-extra','squel','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','redis','socket.io-emitter','register','sendStatus','end','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','stack','name','send','show','params','model','keys','rawAttributes','query','intersection','fields','attributes','length','merge','options','DashboardItem','find','catch','type','iframe','attrUrl','attrs','value','https://','custom','attrPath','clock','attrHourFormat','HH:mm:ss','attrTimezone','0.00','attrFontSize','attrMetric','total','attrVoiceQueues','attrChannel','voice','attrEmailAccounts','attrFaxAccounts','attrSmsAccounts','attrOpenchannelAccounts','attrWhatsappAccounts','attrChatWebsites','pie-chart','attrSerie1','attrSerie2','attrSerie3','web-report','attrReport'];(function(_0x1f3f62,_0x27bdf8){var _0x53429d=function(_0x3fd16b){while(--_0x3fd16b){_0x1f3f62['push'](_0x1f3f62['shift']());}};_0x53429d(++_0x27bdf8);}(_0x0c42,0x191));var _0x20c4=function(_0x22f904,_0x1ae39a){_0x22f904=_0x22f904-0x0;var _0x31f5ec=_0x0c42[_0x22f904];return _0x31f5ec;};'use strict';var emlformat=require(_0x20c4('0x0'));var rimraf=require(_0x20c4('0x1'));var zipdir=require(_0x20c4('0x2'));var jsonpatch=require(_0x20c4('0x3'));var rp=require(_0x20c4('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x20c4('0x5'));var util=require(_0x20c4('0x6'));var path=require(_0x20c4('0x7'));var sox=require(_0x20c4('0x8'));var csv=require(_0x20c4('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x20c4('0xa'));var _=require('lodash');var squel=require(_0x20c4('0xb'));var crypto=require('crypto');var jsforce=require(_0x20c4('0xc'));var deskjs=require(_0x20c4('0xd'));var toCsv=require(_0x20c4('0x9'));var querystring=require('querystring');var Papa=require(_0x20c4('0xe'));var Redis=require(_0x20c4('0xf'));var authService=require(_0x20c4('0x10'));var qs=require(_0x20c4('0x11'));var as=require(_0x20c4('0x12'));var hardwareService=require(_0x20c4('0x13'));var logger=require(_0x20c4('0x14'))(_0x20c4('0x15'));var utils=require(_0x20c4('0x16'));var config=require(_0x20c4('0x17'));var licenseUtil=require(_0x20c4('0x18'));var db=require(_0x20c4('0x19'))['db'];config[_0x20c4('0x1a')]=_['defaults'](config[_0x20c4('0x1a')],{'host':'localhost','port':0x18eb});var socket=require(_0x20c4('0x1b'))(new Redis(config[_0x20c4('0x1a')]));require('./dashboardItem.socket')[_0x20c4('0x1c')](socket);function respondWithStatusCode(_0x4c6dae,_0x13213d){_0x13213d=_0x13213d||0xcc;return function(_0x3b1399){if(_0x3b1399){return _0x4c6dae[_0x20c4('0x1d')](_0x13213d);}return _0x4c6dae['status'](_0x13213d)[_0x20c4('0x1e')]();};}function respondWithResult(_0x25b671,_0x3c989a){_0x3c989a=_0x3c989a||0xc8;return function(_0x3e7c5b){if(_0x3e7c5b){return _0x25b671[_0x20c4('0x1f')](_0x3c989a)[_0x20c4('0x20')](_0x3e7c5b);}};}function respondWithFilteredResult(_0x2f79a0,_0x3fd9b7){return function(_0x3f9b92){if(_0x3f9b92){var _0x301ff1=typeof _0x3fd9b7[_0x20c4('0x21')]==='undefined'&&typeof _0x3fd9b7['limit']===_0x20c4('0x22');var _0x59c65d=_0x3f9b92[_0x20c4('0x23')];var _0x2c1892=_0x301ff1?0x0:_0x3fd9b7[_0x20c4('0x21')];var _0x294c37=_0x301ff1?_0x3f9b92[_0x20c4('0x23')]:_0x3fd9b7[_0x20c4('0x21')]+_0x3fd9b7[_0x20c4('0x24')];var _0x3fa1a5;if(_0x294c37>=_0x59c65d){_0x294c37=_0x59c65d;_0x3fa1a5=0xc8;}else{_0x3fa1a5=0xce;}_0x2f79a0[_0x20c4('0x1f')](_0x3fa1a5);return _0x2f79a0[_0x20c4('0x25')](_0x20c4('0x26'),_0x2c1892+'-'+_0x294c37+'/'+_0x59c65d)[_0x20c4('0x20')](_0x3f9b92);}return null;};}function patchUpdates(_0xbe436d){return function(_0x2d1eda){try{jsonpatch[_0x20c4('0x27')](_0x2d1eda,_0xbe436d,!![]);}catch(_0x14d2d8){return BPromise[_0x20c4('0x28')](_0x14d2d8);}return _0x2d1eda[_0x20c4('0x29')]();};}function saveUpdates(_0x20e812,_0x3e4b27){return function(_0x11cc05){if(_0x11cc05){return _0x11cc05[_0x20c4('0x2a')](_0x20e812)[_0x20c4('0x2b')](function(_0x7c7d69){return _0x7c7d69;});}return null;};}function removeEntity(_0x52bf67,_0x5efa2b){return function(_0x2192c9){if(_0x2192c9){return _0x2192c9[_0x20c4('0x2c')]()['then'](function(){_0x52bf67[_0x20c4('0x1f')](0xcc)[_0x20c4('0x1e')]();});}};}function handleEntityNotFound(_0x5bc23a,_0x18fb67){return function(_0x12e4f5){if(!_0x12e4f5){_0x5bc23a['sendStatus'](0x194);}return _0x12e4f5;};}function handleError(_0x5592dd,_0x490034){_0x490034=_0x490034||0x1f4;return function(_0x19907c){logger['error'](_0x19907c[_0x20c4('0x2d')]);if(_0x19907c[_0x20c4('0x2e')]){delete _0x19907c[_0x20c4('0x2e')];}_0x5592dd[_0x20c4('0x1f')](_0x490034)[_0x20c4('0x2f')](_0x19907c);};}exports[_0x20c4('0x30')]=function(_0x57c41d,_0x4916bb){var _0x2045ac={'raw':![],'where':{'id':_0x57c41d[_0x20c4('0x31')]['id']}},_0x1673ff={};_0x1673ff[_0x20c4('0x32')]=_[_0x20c4('0x33')](db['DashboardItem'][_0x20c4('0x34')]);_0x1673ff['query']=_[_0x20c4('0x33')](_0x57c41d['query']);_0x1673ff['filters']=_['intersection'](_0x1673ff['model'],_0x1673ff[_0x20c4('0x35')]);_0x2045ac['attributes']=_[_0x20c4('0x36')](_0x1673ff[_0x20c4('0x32')],qs[_0x20c4('0x37')](_0x57c41d['query'][_0x20c4('0x37')]));_0x2045ac[_0x20c4('0x38')]=_0x2045ac[_0x20c4('0x38')][_0x20c4('0x39')]?_0x2045ac[_0x20c4('0x38')]:_0x1673ff['model'];if(_0x57c41d['query']['includeAll']){_0x2045ac['include']=[{'all':!![]}];}_0x2045ac=_[_0x20c4('0x3a')]({},_0x2045ac,_0x57c41d[_0x20c4('0x3b')]);return db[_0x20c4('0x3c')][_0x20c4('0x3d')](_0x2045ac)[_0x20c4('0x2b')](handleEntityNotFound(_0x4916bb,null))['then'](respondWithResult(_0x4916bb,null))[_0x20c4('0x3e')](handleError(_0x4916bb,null));};exports['destroy']=function(_0x57af6c,_0x49cdb8){return db[_0x20c4('0x3c')][_0x20c4('0x3d')]({'where':{'id':_0x57af6c[_0x20c4('0x31')]['id']}})[_0x20c4('0x2b')](handleEntityNotFound(_0x49cdb8,null))[_0x20c4('0x2b')](removeEntity(_0x49cdb8,null))['catch'](handleError(_0x49cdb8,null));};function widgetAttributes(_0x39c7b1){try{switch(_0x39c7b1[_0x20c4('0x3f')]){case _0x20c4('0x40'):return[{'name':_0x20c4('0x41'),'value':_0x39c7b1[_0x20c4('0x41')]||(_0x39c7b1[_0x20c4('0x42')]&&_0x39c7b1[_0x20c4('0x42')][0x0]?_0x39c7b1[_0x20c4('0x42')][0x0][_0x20c4('0x43')]:undefined)||_0x20c4('0x44')}];case _0x20c4('0x45'):return[{'name':'attrPath','value':_0x39c7b1[_0x20c4('0x46')]||(_0x39c7b1['attrs']&&_0x39c7b1[_0x20c4('0x42')][0x0]?_0x39c7b1[_0x20c4('0x42')][0x0][_0x20c4('0x43')]:undefined)||''}];case _0x20c4('0x47'):return[{'name':_0x20c4('0x48'),'value':_0x39c7b1[_0x20c4('0x48')]||(_0x39c7b1[_0x20c4('0x42')]&&_0x39c7b1[_0x20c4('0x42')][0x0]?_0x39c7b1[_0x20c4('0x42')][0x0]['value']:undefined)||_0x20c4('0x49')},{'name':_0x20c4('0x4a'),'value':_0x39c7b1['attrTimezone']||(_0x39c7b1[_0x20c4('0x42')]&&_0x39c7b1['attrs'][0x1]?_0x39c7b1[_0x20c4('0x42')][0x1]['value']:undefined)||_0x20c4('0x4b')},{'name':'attrFontSize','value':_0x39c7b1[_0x20c4('0x4c')]||(_0x39c7b1[_0x20c4('0x42')]&&_0x39c7b1[_0x20c4('0x42')][0x2]?_0x39c7b1['attrs'][0x2]['value']:undefined)||0xc}];case'counter':return[{'name':_0x20c4('0x4d'),'value':_0x39c7b1[_0x20c4('0x4d')]||(_0x39c7b1[_0x20c4('0x42')]&&_0x39c7b1[_0x20c4('0x42')][0x0]?_0x39c7b1[_0x20c4('0x42')][0x0][_0x20c4('0x43')]:undefined)||_0x20c4('0x4e')},{'name':_0x20c4('0x4f'),'value':_0x39c7b1[_0x20c4('0x4f')]||(_0x39c7b1[_0x20c4('0x42')]&&_0x39c7b1[_0x20c4('0x42')][0x1]?_0x39c7b1[_0x20c4('0x42')][0x1][_0x20c4('0x43')]:undefined)||[]},{'name':'attrFontSize','value':_0x39c7b1[_0x20c4('0x4c')]||(_0x39c7b1[_0x20c4('0x42')]&&_0x39c7b1['attrs'][0x2]?_0x39c7b1[_0x20c4('0x42')][0x2][_0x20c4('0x43')]:undefined)||0x14},{'name':_0x20c4('0x50'),'value':_0x39c7b1[_0x20c4('0x50')]||(_0x39c7b1[_0x20c4('0x42')]&&_0x39c7b1[_0x20c4('0x42')][0x3]?_0x39c7b1['attrs'][0x3][_0x20c4('0x43')]:undefined)||_0x20c4('0x51')},{'name':_0x20c4('0x52'),'value':_0x39c7b1[_0x20c4('0x52')]||(_0x39c7b1[_0x20c4('0x42')]&&_0x39c7b1[_0x20c4('0x42')][0x4]?_0x39c7b1[_0x20c4('0x42')][0x4][_0x20c4('0x43')]:undefined)||''},{'name':_0x20c4('0x53'),'value':_0x39c7b1['attrFaxAccounts']||(_0x39c7b1[_0x20c4('0x42')]&&_0x39c7b1[_0x20c4('0x42')][0x5]?_0x39c7b1[_0x20c4('0x42')][0x5][_0x20c4('0x43')]:undefined)||''},{'name':_0x20c4('0x54'),'value':_0x39c7b1['attrSmsAccounts']||(_0x39c7b1[_0x20c4('0x42')]&&_0x39c7b1['attrs'][0x6]?_0x39c7b1[_0x20c4('0x42')][0x6][_0x20c4('0x43')]:undefined)||''},{'name':_0x20c4('0x55'),'value':_0x39c7b1['attrOpenchannelAccounts']||(_0x39c7b1[_0x20c4('0x42')]&&_0x39c7b1[_0x20c4('0x42')][0x7]?_0x39c7b1[_0x20c4('0x42')][0x7][_0x20c4('0x43')]:undefined)||''},{'name':_0x20c4('0x56'),'value':_0x39c7b1[_0x20c4('0x56')]||(_0x39c7b1['attrs']&&_0x39c7b1[_0x20c4('0x42')][0x8]?_0x39c7b1[_0x20c4('0x42')][0x8][_0x20c4('0x43')]:undefined)||''},{'name':'attrChatWebsites','value':_0x39c7b1[_0x20c4('0x57')]||(_0x39c7b1[_0x20c4('0x42')]&&_0x39c7b1[_0x20c4('0x42')][0x9]?_0x39c7b1[_0x20c4('0x42')][0x9]['value']:undefined)||''}];case'multibar-chart':case _0x20c4('0x58'):return[{'name':_0x20c4('0x59'),'value':_0x39c7b1[_0x20c4('0x59')]||(_0x39c7b1[_0x20c4('0x42')]&&_0x39c7b1['attrs'][0x0]?_0x39c7b1[_0x20c4('0x42')][0x0][_0x20c4('0x43')]:undefined)||_0x20c4('0x4e')},{'name':_0x20c4('0x5a'),'value':_0x39c7b1[_0x20c4('0x5a')]||(_0x39c7b1[_0x20c4('0x42')]&&_0x39c7b1[_0x20c4('0x42')][0x1]?_0x39c7b1['attrs'][0x1]['value']:undefined)||null},{'name':_0x20c4('0x5b'),'value':_0x39c7b1[_0x20c4('0x5b')]||(_0x39c7b1[_0x20c4('0x42')]&&_0x39c7b1['attrs'][0x2]?_0x39c7b1[_0x20c4('0x42')][0x2][_0x20c4('0x43')]:undefined)||null},{'name':'attrVoiceQueues','value':_0x39c7b1[_0x20c4('0x4f')]||(_0x39c7b1[_0x20c4('0x42')]&&_0x39c7b1['attrs'][0x3]?_0x39c7b1[_0x20c4('0x42')][0x3][_0x20c4('0x43')]:undefined)||[]},{'name':_0x20c4('0x50'),'value':_0x39c7b1[_0x20c4('0x50')]||(_0x39c7b1['attrs']&&_0x39c7b1[_0x20c4('0x42')][0x4]?_0x39c7b1[_0x20c4('0x42')][0x4][_0x20c4('0x43')]:undefined)||_0x20c4('0x51')},{'name':'attrEmailAccounts','value':_0x39c7b1[_0x20c4('0x52')]||(_0x39c7b1[_0x20c4('0x42')]&&_0x39c7b1[_0x20c4('0x42')][0x5]?_0x39c7b1['attrs'][0x5][_0x20c4('0x43')]:undefined)||''},{'name':_0x20c4('0x53'),'value':_0x39c7b1[_0x20c4('0x53')]||(_0x39c7b1['attrs']&&_0x39c7b1[_0x20c4('0x42')][0x6]?_0x39c7b1['attrs'][0x6][_0x20c4('0x43')]:undefined)||''},{'name':_0x20c4('0x54'),'value':_0x39c7b1[_0x20c4('0x54')]||(_0x39c7b1[_0x20c4('0x42')]&&_0x39c7b1[_0x20c4('0x42')][0x7]?_0x39c7b1[_0x20c4('0x42')][0x7][_0x20c4('0x43')]:undefined)||''},{'name':'attrOpenchannelAccounts','value':_0x39c7b1[_0x20c4('0x55')]||(_0x39c7b1['attrs']&&_0x39c7b1['attrs'][0x8]?_0x39c7b1[_0x20c4('0x42')][0x8]['value']:undefined)||''},{'name':_0x20c4('0x56'),'value':_0x39c7b1[_0x20c4('0x56')]||(_0x39c7b1[_0x20c4('0x42')]&&_0x39c7b1[_0x20c4('0x42')][0x9]?_0x39c7b1[_0x20c4('0x42')][0x9][_0x20c4('0x43')]:undefined)||''},{'name':_0x20c4('0x57'),'value':_0x39c7b1[_0x20c4('0x57')]||(_0x39c7b1[_0x20c4('0x42')]&&_0x39c7b1['attrs'][0xa]?_0x39c7b1[_0x20c4('0x42')][0xa][_0x20c4('0x43')]:undefined)||''}];case _0x20c4('0x5c'):return[{'name':_0x20c4('0x5d'),'type':_0x39c7b1[_0x20c4('0x5e')]||(_0x39c7b1[_0x20c4('0x42')]&&_0x39c7b1['attrs'][0x0]?_0x39c7b1[_0x20c4('0x42')][0x0][_0x20c4('0x3f')]:undefined)||null,'value':_0x39c7b1[_0x20c4('0x5d')]||(_0x39c7b1[_0x20c4('0x42')]&&_0x39c7b1[_0x20c4('0x42')][0x0]?_0x39c7b1[_0x20c4('0x42')][0x0]['value']:undefined)||null},{'name':_0x20c4('0x5f'),'value':_0x39c7b1[_0x20c4('0x5f')]||(_0x39c7b1[_0x20c4('0x42')]&&_0x39c7b1[_0x20c4('0x42')][0x1]?_0x39c7b1[_0x20c4('0x42')][0x1][_0x20c4('0x43')]:undefined)||0x0}];default:return[];}}catch(_0x438b8f){logger[_0x20c4('0x60')]('widgetAttributes:\x20%s',JSON[_0x20c4('0x61')](_0x438b8f));return[];}}exports['create']=function(_0x3d81d2,_0x2ffe8b){if(_0x3d81d2[_0x20c4('0x62')]){_0x3d81d2[_0x20c4('0x62')][_0x20c4('0x42')]=widgetAttributes(_0x3d81d2['body']);}return db[_0x20c4('0x3c')]['create'](_0x3d81d2['body'],{})['then'](respondWithResult(_0x2ffe8b,0xc9))[_0x20c4('0x3e')](handleError(_0x2ffe8b,null));};exports[_0x20c4('0x2a')]=function(_0x1d210e,_0x488dde){if(_0x1d210e[_0x20c4('0x62')]['id']){delete _0x1d210e[_0x20c4('0x62')]['id'];}_0x1d210e['body'][_0x20c4('0x42')]=widgetAttributes(_0x1d210e[_0x20c4('0x62')]);return db['DashboardItem']['find']({'where':{'id':_0x1d210e[_0x20c4('0x31')]['id']}})[_0x20c4('0x2b')](handleEntityNotFound(_0x488dde,null))[_0x20c4('0x2b')](saveUpdates(_0x1d210e[_0x20c4('0x62')],null))[_0x20c4('0x2b')](respondWithResult(_0x488dde,null))[_0x20c4('0x3e')](handleError(_0x488dde,null));};
\ No newline at end of file
index 186461a..ecc5a91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde74=['remove','emit','hook','events','../../mysqldb','DashboardItem','setMaxListeners','save','update'];(function(_0x31be28,_0x598de7){var _0x4d23f2=function(_0x53828e){while(--_0x53828e){_0x31be28['push'](_0x31be28['shift']());}};_0x4d23f2(++_0x598de7);}(_0xde74,0xc0));var _0x4de7=function(_0x2027ee,_0x3a8043){_0x2027ee=_0x2027ee-0x0;var _0x50af71=_0xde74[_0x2027ee];return _0x50af71;};'use strict';var EventEmitter=require(_0x4de7('0x0'));var DashboardItem=require(_0x4de7('0x1'))['db'][_0x4de7('0x2')];var DashboardItemEvents=new EventEmitter();DashboardItemEvents[_0x4de7('0x3')](0x0);var events={'afterCreate':_0x4de7('0x4'),'afterUpdate':_0x4de7('0x5'),'afterDestroy':_0x4de7('0x6')};function emitEvent(_0x173208){return function(_0xb144c5,_0x17b578,_0x5d724c){DashboardItemEvents[_0x4de7('0x7')](_0x173208+':'+_0xb144c5['id'],_0xb144c5);DashboardItemEvents[_0x4de7('0x7')](_0x173208,_0xb144c5);_0x5d724c(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];DashboardItem[_0x4de7('0x8')](e,emitEvent(event));}}module['exports']=DashboardItemEvents;
\ No newline at end of file
+var _0x73ac=['exports','events','DashboardItem','setMaxListeners','save','update','emit','hook'];(function(_0x8935ce,_0x3621c3){var _0x1a422f=function(_0x35cb66){while(--_0x35cb66){_0x8935ce['push'](_0x8935ce['shift']());}};_0x1a422f(++_0x3621c3);}(_0x73ac,0x1a1));var _0xc73a=function(_0x5b5a0d,_0x35b71e){_0x5b5a0d=_0x5b5a0d-0x0;var _0x3ec0f0=_0x73ac[_0x5b5a0d];return _0x3ec0f0;};'use strict';var EventEmitter=require(_0xc73a('0x0'));var DashboardItem=require('../../mysqldb')['db'][_0xc73a('0x1')];var DashboardItemEvents=new EventEmitter();DashboardItemEvents[_0xc73a('0x2')](0x0);var events={'afterCreate':_0xc73a('0x3'),'afterUpdate':_0xc73a('0x4'),'afterDestroy':'remove'};function emitEvent(_0x559f45){return function(_0x5bc250,_0x34226e,_0x352299){DashboardItemEvents['emit'](_0x559f45+':'+_0x5bc250['id'],_0x5bc250);DashboardItemEvents[_0xc73a('0x5')](_0x559f45,_0x5bc250);_0x352299(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];DashboardItem[_0xc73a('0x6')](e,emitEvent(event));}}module[_0xc73a('0x7')]=DashboardItemEvents;
\ No newline at end of file
index 0fca7f1..244bc5d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e16=['api','request-promise','rimraf','../../config/environment','exports','define','DashboardItem','lodash','util','../../config/logger'];(function(_0x29c0e5,_0x18336a){var _0x21391e=function(_0x1e290f){while(--_0x1e290f){_0x29c0e5['push'](_0x29c0e5['shift']());}};_0x21391e(++_0x18336a);}(_0x7e16,0x16f));var _0x67e1=function(_0x474dd7,_0x2f266d){_0x474dd7=_0x474dd7-0x0;var _0x523eac=_0x7e16[_0x474dd7];return _0x523eac;};'use strict';var _=require(_0x67e1('0x0'));var util=require(_0x67e1('0x1'));var logger=require(_0x67e1('0x2'))(_0x67e1('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x67e1('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x67e1('0x5'));var config=require(_0x67e1('0x6'));var attributes=require('./dashboardItem.attributes');module[_0x67e1('0x7')]=function(_0x3b5769,_0x2e0cb9){return _0x3b5769[_0x67e1('0x8')](_0x67e1('0x9'),attributes,{'tableName':'dashboard_items','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9f4b=['api','moment','bluebird','path','rimraf','../../config/environment','./dashboardItem.attributes','define','DashboardItem','dashboard_items','../../config/logger'];(function(_0x40d8d7,_0x30dd5e){var _0x3454cc=function(_0x512c1b){while(--_0x512c1b){_0x40d8d7['push'](_0x40d8d7['shift']());}};_0x3454cc(++_0x30dd5e);}(_0x9f4b,0xfc));var _0xb9f4=function(_0x1e6a0d,_0x1aed9d){_0x1e6a0d=_0x1e6a0d-0x0;var _0x1d5b99=_0x9f4b[_0x1e6a0d];return _0x1d5b99;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xb9f4('0x0'))(_0xb9f4('0x1'));var moment=require(_0xb9f4('0x2'));var BPromise=require(_0xb9f4('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xb9f4('0x4'));var rimraf=require(_0xb9f4('0x5'));var config=require(_0xb9f4('0x6'));var attributes=require(_0xb9f4('0x7'));module['exports']=function(_0x4ea31c,_0x1a74e5){return _0x4ea31c[_0xb9f4('0x8')](_0xb9f4('0x9'),attributes,{'tableName':_0xb9f4('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index fcd79d0..d742c66 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x10ed=['stringify','error','code','DashboardItem,\x20%s,\x20%s','message','info','result','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','http','redis','defaults','localhost','request','request\x20sent','DashboardItem,\x20%s,\x20%s,\x20%s'];(function(_0x413feb,_0x10477f){var _0x40ee88=function(_0x32a3f6){while(--_0x32a3f6){_0x413feb['push'](_0x413feb['shift']());}};_0x40ee88(++_0x10477f);}(_0x10ed,0x10f));var _0xd10e=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x10ed[_0x57b54c];return _0x59cc19;};'use strict';var _=require(_0xd10e('0x0'));var util=require(_0xd10e('0x1'));var moment=require('moment');var BPromise=require(_0xd10e('0x2'));var rs=require(_0xd10e('0x3'));var fs=require('fs');var Redis=require(_0xd10e('0x4'));var db=require(_0xd10e('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xd10e('0x6'))('rpc');var config=require(_0xd10e('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0xd10e('0x8')]({'port':0x232a});config[_0xd10e('0x9')]=_[_0xd10e('0xa')](config['redis'],{'host':_0xd10e('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./dashboardItem.socket')['register'](socket);function respondWithRpcPromise(_0x38b3c8,_0x329087,_0x3b0839){return new BPromise(function(_0x13b233,_0x4bdc65){return client[_0xd10e('0xc')](_0x38b3c8,_0x3b0839)['then'](function(_0x53e0f0){logger['info']('DashboardItem,\x20%s,\x20%s',_0x329087,_0xd10e('0xd'));logger['debug'](_0xd10e('0xe'),_0x329087,_0xd10e('0xd'),JSON[_0xd10e('0xf')](_0x53e0f0));if(_0x53e0f0['error']){if(_0x53e0f0[_0xd10e('0x10')][_0xd10e('0x11')]===0x1f4){logger[_0xd10e('0x10')]('DashboardItem,\x20%s,\x20%s',_0x329087,_0x53e0f0[_0xd10e('0x10')]['message']);return _0x4bdc65(_0x53e0f0[_0xd10e('0x10')]['message']);}logger[_0xd10e('0x10')](_0xd10e('0x12'),_0x329087,_0x53e0f0[_0xd10e('0x10')][_0xd10e('0x13')]);return _0x13b233(_0x53e0f0[_0xd10e('0x10')][_0xd10e('0x13')]);}else{logger[_0xd10e('0x14')](_0xd10e('0x12'),_0x329087,_0xd10e('0xd'));_0x13b233(_0x53e0f0[_0xd10e('0x15')][_0xd10e('0x13')]);}})['catch'](function(_0x42ef8f){logger['error'](_0xd10e('0x12'),_0x329087,_0x42ef8f);_0x4bdc65(_0x42ef8f);});});}
\ No newline at end of file
+var _0xcd2a=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','localhost','socket.io-emitter','./dashboardItem.socket','register','then','info','DashboardItem,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','lodash','util','moment','randomstring'];(function(_0x1c5cd2,_0x277ceb){var _0x895e35=function(_0x4b4307){while(--_0x4b4307){_0x1c5cd2['push'](_0x1c5cd2['shift']());}};_0x895e35(++_0x277ceb);}(_0xcd2a,0x88));var _0xacd2=function(_0x269e23,_0x14d11c){_0x269e23=_0x269e23-0x0;var _0x69ad53=_0xcd2a[_0x269e23];return _0x69ad53;};'use strict';var _=require(_0xacd2('0x0'));var util=require(_0xacd2('0x1'));var moment=require(_0xacd2('0x2'));var BPromise=require('bluebird');var rs=require(_0xacd2('0x3'));var fs=require('fs');var Redis=require(_0xacd2('0x4'));var db=require(_0xacd2('0x5'))['db'];var utils=require(_0xacd2('0x6'));var logger=require(_0xacd2('0x7'))(_0xacd2('0x8'));var config=require(_0xacd2('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xacd2('0xa')][_0xacd2('0xb')]({'port':0x232a});config[_0xacd2('0xc')]=_['defaults'](config[_0xacd2('0xc')],{'host':_0xacd2('0xd'),'port':0x18eb});var socket=require(_0xacd2('0xe'))(new Redis(config['redis']));require(_0xacd2('0xf'))[_0xacd2('0x10')](socket);function respondWithRpcPromise(_0x285fd3,_0x1cb7c0,_0x1fbd4b){return new BPromise(function(_0x5cd14b,_0x440fa7){return client['request'](_0x285fd3,_0x1fbd4b)[_0xacd2('0x11')](function(_0x502567){logger[_0xacd2('0x12')](_0xacd2('0x13'),_0x1cb7c0,_0xacd2('0x14'));logger[_0xacd2('0x15')]('DashboardItem,\x20%s,\x20%s,\x20%s',_0x1cb7c0,_0xacd2('0x14'),JSON[_0xacd2('0x16')](_0x502567));if(_0x502567['error']){if(_0x502567[_0xacd2('0x17')][_0xacd2('0x18')]===0x1f4){logger[_0xacd2('0x17')](_0xacd2('0x13'),_0x1cb7c0,_0x502567['error'][_0xacd2('0x19')]);return _0x440fa7(_0x502567[_0xacd2('0x17')]['message']);}logger[_0xacd2('0x17')]('DashboardItem,\x20%s,\x20%s',_0x1cb7c0,_0x502567['error']['message']);return _0x5cd14b(_0x502567[_0xacd2('0x17')]['message']);}else{logger['info'](_0xacd2('0x13'),_0x1cb7c0,_0xacd2('0x14'));_0x5cd14b(_0x502567[_0xacd2('0x1a')][_0xacd2('0x19')]);}})[_0xacd2('0x1b')](function(_0xf79043){logger[_0xacd2('0x17')](_0xacd2('0x13'),_0x1cb7c0,_0xf79043);_0x440fa7(_0xf79043);});});}
\ No newline at end of file
index 1d102fc..257f2d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb582=['dashboardItem:','./dashboardItem.events','save','remove','update','emit','removeListener','register'];(function(_0x47b887,_0x42934d){var _0x1153d0=function(_0x5c79bb){while(--_0x5c79bb){_0x47b887['push'](_0x47b887['shift']());}};_0x1153d0(++_0x42934d);}(_0xb582,0x1a9));var _0x2b58=function(_0x1035c1,_0x2d8583){_0x1035c1=_0x1035c1-0x0;var _0x308d67=_0xb582[_0x1035c1];return _0x308d67;};'use strict';var DashboardItemEvents=require(_0x2b58('0x0'));var events=[_0x2b58('0x1'),_0x2b58('0x2'),_0x2b58('0x3')];function createListener(_0x2f5f5d,_0x55470c){return function(_0x227450){_0x55470c[_0x2b58('0x4')](_0x2f5f5d,_0x227450);};}function removeListener(_0x907408,_0x34d3e4){return function(){DashboardItemEvents[_0x2b58('0x5')](_0x907408,_0x34d3e4);};}exports[_0x2b58('0x6')]=function(_0x35a3d7){for(var _0x285729=0x0,_0x3c97b6=events['length'];_0x285729<_0x3c97b6;_0x285729++){var _0x5f550d=events[_0x285729];var _0x2d12fd=createListener(_0x2b58('0x7')+_0x5f550d,_0x35a3d7);DashboardItemEvents['on'](_0x5f550d,_0x2d12fd);}};
\ No newline at end of file
+var _0x35cb=['register','length','dashboardItem:','./dashboardItem.events','save','remove','update','emit','removeListener'];(function(_0x3929de,_0x44db1a){var _0x3837db=function(_0x368849){while(--_0x368849){_0x3929de['push'](_0x3929de['shift']());}};_0x3837db(++_0x44db1a);}(_0x35cb,0xe4));var _0xb35c=function(_0x3e7c1d,_0xf97377){_0x3e7c1d=_0x3e7c1d-0x0;var _0x4606fc=_0x35cb[_0x3e7c1d];return _0x4606fc;};'use strict';var DashboardItemEvents=require(_0xb35c('0x0'));var events=[_0xb35c('0x1'),_0xb35c('0x2'),_0xb35c('0x3')];function createListener(_0x2f4850,_0x39d0d7){return function(_0x40136a){_0x39d0d7[_0xb35c('0x4')](_0x2f4850,_0x40136a);};}function removeListener(_0x559ca2,_0x4f3d1f){return function(){DashboardItemEvents[_0xb35c('0x5')](_0x559ca2,_0x4f3d1f);};}exports[_0xb35c('0x6')]=function(_0x208f73){for(var _0x4225a5=0x0,_0x540a86=events[_0xb35c('0x7')];_0x4225a5<_0x540a86;_0x4225a5++){var _0x16d2b1=events[_0x4225a5];var _0x361dbc=createListener(_0xb35c('0x8')+_0x16d2b1,_0x208f73);DashboardItemEvents['on'](_0x16d2b1,_0x361dbc);}};
\ No newline at end of file
index 7a62544..101e1a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c1a=['update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./dashboardItem.controller','get','/:id','isAuthenticated','show','post','create','put'];(function(_0x5441b0,_0x50032d){var _0x1dda5e=function(_0x1ee0a9){while(--_0x1ee0a9){_0x5441b0['push'](_0x5441b0['shift']());}};_0x1dda5e(++_0x50032d);}(_0x4c1a,0x6d));var _0xa4c1=function(_0x439c4a,_0x138ca8){_0x439c4a=_0x439c4a-0x0;var _0x5309a1=_0x4c1a[_0x439c4a];return _0x5309a1;};'use strict';var multer=require(_0xa4c1('0x0'));var util=require(_0xa4c1('0x1'));var path=require(_0xa4c1('0x2'));var timeout=require(_0xa4c1('0x3'));var express=require('express');var router=express[_0xa4c1('0x4')]();var fs_extra=require(_0xa4c1('0x5'));var auth=require(_0xa4c1('0x6'));var interaction=require(_0xa4c1('0x7'));var config=require(_0xa4c1('0x8'));var controller=require(_0xa4c1('0x9'));router[_0xa4c1('0xa')](_0xa4c1('0xb'),auth[_0xa4c1('0xc')](),controller[_0xa4c1('0xd')]);router[_0xa4c1('0xe')]('/',auth[_0xa4c1('0xc')](),controller[_0xa4c1('0xf')]);router[_0xa4c1('0x10')](_0xa4c1('0xb'),auth[_0xa4c1('0xc')](),controller[_0xa4c1('0x11')]);router[_0xa4c1('0x12')](_0xa4c1('0xb'),auth[_0xa4c1('0xc')](),controller[_0xa4c1('0x13')]);module[_0xa4c1('0x14')]=router;
\ No newline at end of file
+var _0x9211=['show','post','create','/:id','update','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./dashboardItem.controller','get','isAuthenticated'];(function(_0x45822b,_0x283658){var _0x501aa5=function(_0x4e586a){while(--_0x4e586a){_0x45822b['push'](_0x45822b['shift']());}};_0x501aa5(++_0x283658);}(_0x9211,0xaa));var _0x1921=function(_0x5f2fea,_0x9fde07){_0x5f2fea=_0x5f2fea-0x0;var _0x198a0c=_0x9211[_0x5f2fea];return _0x198a0c;};'use strict';var multer=require('multer');var util=require(_0x1921('0x0'));var path=require(_0x1921('0x1'));var timeout=require(_0x1921('0x2'));var express=require(_0x1921('0x3'));var router=express[_0x1921('0x4')]();var fs_extra=require(_0x1921('0x5'));var auth=require(_0x1921('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x1921('0x7'));router[_0x1921('0x8')]('/:id',auth[_0x1921('0x9')](),controller[_0x1921('0xa')]);router[_0x1921('0xb')]('/',auth[_0x1921('0x9')](),controller[_0x1921('0xc')]);router['put'](_0x1921('0xd'),auth[_0x1921('0x9')](),controller[_0x1921('0xe')]);router[_0x1921('0xf')]('/:id',auth[_0x1921('0x9')](),controller[_0x1921('0x10')]);module[_0x1921('0x11')]=router;
\ No newline at end of file
index 316f2a4..553a716 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb91f=['sequelize','STRING','ENUM','first','second'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xb91f,0x9b));var _0xfb91=function(_0x416cc0,_0x40a68b){_0x416cc0=_0x416cc0-0x0;var _0x468958=_0xb91f[_0x416cc0];return _0x468958;};'use strict';var Sequelize=require(_0xfb91('0x0'));module['exports']={'name':{'type':Sequelize[_0xfb91('0x1')],'allowNull':![]},'level':{'type':Sequelize[_0xfb91('0x2')](_0xfb91('0x3'),_0xfb91('0x4'),'third'),'allowNull':![],'defaultValue':_0xfb91('0x3')},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xe560=['ENUM','first','second','STRING'];(function(_0x33032e,_0x31411a){var _0x13316b=function(_0x2fb049){while(--_0x2fb049){_0x33032e['push'](_0x33032e['shift']());}};_0x13316b(++_0x31411a);}(_0xe560,0x1e3));var _0x0e56=function(_0x425a90,_0x47f575){_0x425a90=_0x425a90-0x0;var _0xdf6d9a=_0xe560[_0x425a90];return _0xdf6d9a;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x0e56('0x0')],'allowNull':![]},'level':{'type':Sequelize[_0x0e56('0x1')](_0x0e56('0x2'),_0x0e56('0x3'),'third'),'allowNull':![],'defaultValue':_0x0e56('0x2')},'description':{'type':Sequelize[_0x0e56('0x0')]}};
\ No newline at end of file
index 8d3e414..b4b7af6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x12c2=['undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','get','UserProfileResource','stack','name','send','index','Disposition','fieldName','key','model','map','query','filters','intersection','attributes','fields','length','hasOwnProperty','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','keys','rawAttributes','find','create','body','role','user','Dispositions','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','status','end','json','offset'];(function(_0x57c2b5,_0x28f98a){var _0x2ad3ff=function(_0x2d96c5){while(--_0x2d96c5){_0x57c2b5['push'](_0x57c2b5['shift']());}};_0x2ad3ff(++_0x28f98a);}(_0x12c2,0xdc));var _0x212c=function(_0x144d5b,_0xc6249f){_0x144d5b=_0x144d5b-0x0;var _0xccdcf4=_0x12c2[_0x144d5b];return _0xccdcf4;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x212c('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x212c('0x1'));var rp=require(_0x212c('0x2'));var moment=require(_0x212c('0x3'));var BPromise=require(_0x212c('0x4'));var Mustache=require(_0x212c('0x5'));var util=require(_0x212c('0x6'));var path=require(_0x212c('0x7'));var sox=require(_0x212c('0x8'));var csv=require(_0x212c('0x9'));var ejs=require(_0x212c('0xa'));var fs=require('fs');var fs_extra=require(_0x212c('0xb'));var _=require(_0x212c('0xc'));var squel=require('squel');var crypto=require(_0x212c('0xd'));var jsforce=require(_0x212c('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x212c('0x9'));var querystring=require(_0x212c('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x212c('0x10'));var qs=require(_0x212c('0x11'));var as=require(_0x212c('0x12'));var hardwareService=require(_0x212c('0x13'));var logger=require(_0x212c('0x14'))(_0x212c('0x15'));var utils=require(_0x212c('0x16'));var config=require(_0x212c('0x17'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xe9c21c,_0x1ff515){_0x1ff515=_0x1ff515||0xcc;return function(_0x6f2902){if(_0x6f2902){return _0xe9c21c[_0x212c('0x18')](_0x1ff515);}return _0xe9c21c[_0x212c('0x19')](_0x1ff515)[_0x212c('0x1a')]();};}function respondWithResult(_0x34e27b,_0x56affb){_0x56affb=_0x56affb||0xc8;return function(_0x3e30f5){if(_0x3e30f5){return _0x34e27b[_0x212c('0x19')](_0x56affb)[_0x212c('0x1b')](_0x3e30f5);}};}function respondWithFilteredResult(_0x44f224,_0x2b6bdc){return function(_0x86b703){if(_0x86b703){var _0xddfb8a=typeof _0x2b6bdc[_0x212c('0x1c')]===_0x212c('0x1d')&&typeof _0x2b6bdc[_0x212c('0x1e')]===_0x212c('0x1d');var _0x14d443=_0x86b703[_0x212c('0x1f')];var _0x14ef56=_0xddfb8a?0x0:_0x2b6bdc[_0x212c('0x1c')];var _0x41abda=_0xddfb8a?_0x86b703['count']:_0x2b6bdc[_0x212c('0x1c')]+_0x2b6bdc['limit'];var _0x42a278;if(_0x41abda>=_0x14d443){_0x41abda=_0x14d443;_0x42a278=0xc8;}else{_0x42a278=0xce;}_0x44f224[_0x212c('0x19')](_0x42a278);return _0x44f224['set'](_0x212c('0x20'),_0x14ef56+'-'+_0x41abda+'/'+_0x14d443)[_0x212c('0x1b')](_0x86b703);}return null;};}function patchUpdates(_0x5a65da){return function(_0x1c9f1b){try{jsonpatch[_0x212c('0x21')](_0x1c9f1b,_0x5a65da,!![]);}catch(_0x5d0863){return BPromise[_0x212c('0x22')](_0x5d0863);}return _0x1c9f1b[_0x212c('0x23')]();};}function saveUpdates(_0x20f77a,_0x4e536e){return function(_0x5eefab){if(_0x5eefab){return _0x5eefab[_0x212c('0x24')](_0x20f77a)[_0x212c('0x25')](function(_0x3e84ba){return _0x3e84ba;});}return null;};}function removeEntity(_0x3857db,_0x33fe6d){return function(_0x14ee86){if(_0x14ee86){return _0x14ee86[_0x212c('0x26')]()[_0x212c('0x25')](function(){var _0x35834a=_0x14ee86[_0x212c('0x27')]({'plain':!![]});var _0x3de5b4='Dispositions';return db[_0x212c('0x28')]['destroy']({'where':{'type':_0x3de5b4,'resourceId':_0x35834a['id']}})['then'](function(){return _0x14ee86;});})[_0x212c('0x25')](function(){_0x3857db['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x1590a8,_0x50bfa0){return function(_0x2ee8bc){if(!_0x2ee8bc){_0x1590a8['sendStatus'](0x194);}return _0x2ee8bc;};}function handleError(_0x19469e,_0x173684){_0x173684=_0x173684||0x1f4;return function(_0x43ba5a){logger['error'](_0x43ba5a[_0x212c('0x29')]);if(_0x43ba5a[_0x212c('0x2a')]){delete _0x43ba5a['name'];}_0x19469e['status'](_0x173684)[_0x212c('0x2b')](_0x43ba5a);};}exports[_0x212c('0x2c')]=function(_0x49f841,_0x4cb1ed){var _0x2c90ab={},_0xeff53a={},_0x3c875f={'count':0x0,'rows':[]};var _0x26054f=_['map'](db[_0x212c('0x2d')]['rawAttributes'],function(_0x100732){return{'name':_0x100732[_0x212c('0x2e')],'type':_0x100732['type'][_0x212c('0x2f')]};});_0xeff53a[_0x212c('0x30')]=_[_0x212c('0x31')](_0x26054f,_0x212c('0x2a'));_0xeff53a[_0x212c('0x32')]=_['keys'](_0x49f841[_0x212c('0x32')]);_0xeff53a[_0x212c('0x33')]=_[_0x212c('0x34')](_0xeff53a[_0x212c('0x30')],_0xeff53a[_0x212c('0x32')]);_0x2c90ab[_0x212c('0x35')]=_[_0x212c('0x34')](_0xeff53a[_0x212c('0x30')],qs[_0x212c('0x36')](_0x49f841[_0x212c('0x32')][_0x212c('0x36')]));_0x2c90ab[_0x212c('0x35')]=_0x2c90ab[_0x212c('0x35')][_0x212c('0x37')]?_0x2c90ab[_0x212c('0x35')]:_0xeff53a[_0x212c('0x30')];if(!_0x49f841[_0x212c('0x32')][_0x212c('0x38')]('nolimit')){_0x2c90ab[_0x212c('0x1e')]=qs[_0x212c('0x1e')](_0x49f841[_0x212c('0x32')]['limit']);_0x2c90ab[_0x212c('0x1c')]=qs[_0x212c('0x1c')](_0x49f841['query'][_0x212c('0x1c')]);}_0x2c90ab['order']=qs[_0x212c('0x39')](_0x49f841[_0x212c('0x32')][_0x212c('0x39')]);_0x2c90ab[_0x212c('0x3a')]=qs['filters'](_[_0x212c('0x3b')](_0x49f841[_0x212c('0x32')],_0xeff53a['filters']),_0x26054f);if(_0x49f841['query'][_0x212c('0x3c')]){_0x2c90ab[_0x212c('0x3a')]=_[_0x212c('0x3d')](_0x2c90ab[_0x212c('0x3a')],{'$or':_['map'](_0x26054f,function(_0x45745a){if(_0x45745a[_0x212c('0x3e')]!==_0x212c('0x3f')){var _0x40a663={};_0x40a663[_0x45745a[_0x212c('0x2a')]]={'$like':'%'+_0x49f841['query'][_0x212c('0x3c')]+'%'};return _0x40a663;}})});}_0x2c90ab=_[_0x212c('0x3d')]({},_0x2c90ab,_0x49f841[_0x212c('0x40')]);var _0x3001cd={'where':_0x2c90ab[_0x212c('0x3a')]};return db[_0x212c('0x2d')][_0x212c('0x1f')](_0x3001cd)['then'](function(_0x2a289e){_0x3c875f[_0x212c('0x1f')]=_0x2a289e;if(_0x49f841['query'][_0x212c('0x41')]){_0x2c90ab[_0x212c('0x42')]=[{'all':!![]}];}return db[_0x212c('0x2d')][_0x212c('0x43')](_0x2c90ab);})[_0x212c('0x25')](function(_0x1ae0ad){_0x3c875f[_0x212c('0x44')]=_0x1ae0ad;return _0x3c875f;})[_0x212c('0x25')](respondWithFilteredResult(_0x4cb1ed,_0x2c90ab))[_0x212c('0x45')](handleError(_0x4cb1ed,null));};exports[_0x212c('0x46')]=function(_0x2ba412,_0xd8e890){var _0x2fb0b7={'raw':!![],'where':{'id':_0x2ba412[_0x212c('0x47')]['id']}},_0x5981e5={};_0x5981e5[_0x212c('0x30')]=_[_0x212c('0x48')](db[_0x212c('0x2d')][_0x212c('0x49')]);_0x5981e5['query']=_['keys'](_0x2ba412[_0x212c('0x32')]);_0x5981e5['filters']=_[_0x212c('0x34')](_0x5981e5['model'],_0x5981e5[_0x212c('0x32')]);_0x2fb0b7[_0x212c('0x35')]=_[_0x212c('0x34')](_0x5981e5['model'],qs[_0x212c('0x36')](_0x2ba412[_0x212c('0x32')][_0x212c('0x36')]));_0x2fb0b7[_0x212c('0x35')]=_0x2fb0b7[_0x212c('0x35')][_0x212c('0x37')]?_0x2fb0b7[_0x212c('0x35')]:_0x5981e5['model'];if(_0x2ba412[_0x212c('0x32')][_0x212c('0x41')]){_0x2fb0b7['include']=[{'all':!![]}];}_0x2fb0b7=_[_0x212c('0x3d')]({},_0x2fb0b7,_0x2ba412[_0x212c('0x40')]);return db[_0x212c('0x2d')][_0x212c('0x4a')](_0x2fb0b7)[_0x212c('0x25')](handleEntityNotFound(_0xd8e890,null))[_0x212c('0x25')](respondWithResult(_0xd8e890,null))[_0x212c('0x45')](handleError(_0xd8e890,null));};exports[_0x212c('0x4b')]=function(_0x1c3e93,_0xd65927){return db['Disposition']['create'](_0x1c3e93[_0x212c('0x4c')],{})[_0x212c('0x25')](function(_0x19f194){var _0x2abbd8=_0x1c3e93['user'][_0x212c('0x27')]({'plain':!![]});if(!_0x2abbd8)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2abbd8[_0x212c('0x4d')]===_0x212c('0x4e')){var _0x4f6041=_0x19f194[_0x212c('0x27')]({'plain':!![]});var _0x35031a=_0x212c('0x4f');return db[_0x212c('0x50')][_0x212c('0x4a')]({'where':{'name':_0x35031a,'userProfileId':_0x2abbd8[_0x212c('0x51')]},'raw':!![]})[_0x212c('0x25')](function(_0x3c2390){if(_0x3c2390&&_0x3c2390['autoAssociation']===0x0){return db['UserProfileResource'][_0x212c('0x4b')]({'name':_0x4f6041[_0x212c('0x2a')],'resourceId':_0x4f6041['id'],'type':_0x3c2390['name'],'sectionId':_0x3c2390['id']},{})[_0x212c('0x25')](function(){return _0x19f194;});}else{return _0x19f194;}})[_0x212c('0x45')](function(_0x5b94dc){logger['error'](_0x212c('0x52'),_0x5b94dc);throw _0x5b94dc;});}return _0x19f194;})['then'](respondWithResult(_0xd65927,0xc9))[_0x212c('0x45')](handleError(_0xd65927,null));};exports[_0x212c('0x24')]=function(_0x480e50,_0x154e3f){if(_0x480e50['body']['id']){delete _0x480e50['body']['id'];}return db[_0x212c('0x2d')][_0x212c('0x4a')]({'where':{'id':_0x480e50[_0x212c('0x47')]['id']}})[_0x212c('0x25')](handleEntityNotFound(_0x154e3f,null))['then'](saveUpdates(_0x480e50[_0x212c('0x4c')],null))['then'](respondWithResult(_0x154e3f,null))[_0x212c('0x45')](handleError(_0x154e3f,null));};exports[_0x212c('0x26')]=function(_0x5b4b69,_0x570ec9){return db['Disposition']['find']({'where':{'id':_0x5b4b69[_0x212c('0x47')]['id']}})[_0x212c('0x25')](handleEntityNotFound(_0x570ec9,null))[_0x212c('0x25')](removeEntity(_0x570ec9,null))[_0x212c('0x45')](handleError(_0x570ec9,null));};
\ No newline at end of file
+var _0xb344=['find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','ejs','fs-extra','squel','jsforce','desk.js','querystring','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','reject','update','then','destroy','get','Dispositions','UserProfileResource','error','stack','name','send','index','map','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','Disposition','includeAll','include','findAll','rows','catch','show','params'];(function(_0x243e12,_0x2d7bc5){var _0x3fddfc=function(_0x2896ee){while(--_0x2896ee){_0x243e12['push'](_0x243e12['shift']());}};_0x3fddfc(++_0x2d7bc5);}(_0xb344,0x152));var _0x4b34=function(_0x57be20,_0x31e865){_0x57be20=_0x57be20-0x0;var _0x221e14=_0xb344[_0x57be20];return _0x221e14;};'use strict';var emlformat=require(_0x4b34('0x0'));var rimraf=require(_0x4b34('0x1'));var zipdir=require(_0x4b34('0x2'));var jsonpatch=require(_0x4b34('0x3'));var rp=require(_0x4b34('0x4'));var moment=require(_0x4b34('0x5'));var BPromise=require(_0x4b34('0x6'));var Mustache=require('mustache');var util=require(_0x4b34('0x7'));var path=require(_0x4b34('0x8'));var sox=require(_0x4b34('0x9'));var csv=require('to-csv');var ejs=require(_0x4b34('0xa'));var fs=require('fs');var fs_extra=require(_0x4b34('0xb'));var _=require('lodash');var squel=require(_0x4b34('0xc'));var crypto=require('crypto');var jsforce=require(_0x4b34('0xd'));var deskjs=require(_0x4b34('0xe'));var toCsv=require('to-csv');var querystring=require(_0x4b34('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x4b34('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x4b34('0x11'));var config=require(_0x4b34('0x12'));var licenseUtil=require(_0x4b34('0x13'));var db=require(_0x4b34('0x14'))['db'];function respondWithStatusCode(_0x24212a,_0x184fd3){_0x184fd3=_0x184fd3||0xcc;return function(_0xfeeaac){if(_0xfeeaac){return _0x24212a[_0x4b34('0x15')](_0x184fd3);}return _0x24212a[_0x4b34('0x16')](_0x184fd3)[_0x4b34('0x17')]();};}function respondWithResult(_0x2adf05,_0x4816c6){_0x4816c6=_0x4816c6||0xc8;return function(_0x13ce7c){if(_0x13ce7c){return _0x2adf05[_0x4b34('0x16')](_0x4816c6)['json'](_0x13ce7c);}};}function respondWithFilteredResult(_0x10ac9c,_0x19d9a4){return function(_0x4a9f83){if(_0x4a9f83){var _0x4c2681=typeof _0x19d9a4[_0x4b34('0x18')]===_0x4b34('0x19')&&typeof _0x19d9a4[_0x4b34('0x1a')]===_0x4b34('0x19');var _0x11c675=_0x4a9f83['count'];var _0x558485=_0x4c2681?0x0:_0x19d9a4['offset'];var _0x2dbab0=_0x4c2681?_0x4a9f83[_0x4b34('0x1b')]:_0x19d9a4['offset']+_0x19d9a4[_0x4b34('0x1a')];var _0x15762c;if(_0x2dbab0>=_0x11c675){_0x2dbab0=_0x11c675;_0x15762c=0xc8;}else{_0x15762c=0xce;}_0x10ac9c[_0x4b34('0x16')](_0x15762c);return _0x10ac9c[_0x4b34('0x1c')](_0x4b34('0x1d'),_0x558485+'-'+_0x2dbab0+'/'+_0x11c675)[_0x4b34('0x1e')](_0x4a9f83);}return null;};}function patchUpdates(_0x8701a7){return function(_0x5202c2){try{jsonpatch['apply'](_0x5202c2,_0x8701a7,!![]);}catch(_0x4cb93f){return BPromise[_0x4b34('0x1f')](_0x4cb93f);}return _0x5202c2['save']();};}function saveUpdates(_0x267f25,_0x18931f){return function(_0x5c4bb4){if(_0x5c4bb4){return _0x5c4bb4[_0x4b34('0x20')](_0x267f25)[_0x4b34('0x21')](function(_0x2ad189){return _0x2ad189;});}return null;};}function removeEntity(_0x1fb5b3,_0x1d88b4){return function(_0x3bcba1){if(_0x3bcba1){return _0x3bcba1[_0x4b34('0x22')]()['then'](function(){var _0x1fb7fb=_0x3bcba1[_0x4b34('0x23')]({'plain':!![]});var _0x45256b=_0x4b34('0x24');return db[_0x4b34('0x25')]['destroy']({'where':{'type':_0x45256b,'resourceId':_0x1fb7fb['id']}})[_0x4b34('0x21')](function(){return _0x3bcba1;});})[_0x4b34('0x21')](function(){_0x1fb5b3[_0x4b34('0x16')](0xcc)[_0x4b34('0x17')]();});}};}function handleEntityNotFound(_0x2f7f5e,_0xc49f85){return function(_0x2144a2){if(!_0x2144a2){_0x2f7f5e[_0x4b34('0x15')](0x194);}return _0x2144a2;};}function handleError(_0xe491a5,_0x3f3da0){_0x3f3da0=_0x3f3da0||0x1f4;return function(_0x1a02aa){logger[_0x4b34('0x26')](_0x1a02aa[_0x4b34('0x27')]);if(_0x1a02aa[_0x4b34('0x28')]){delete _0x1a02aa['name'];}_0xe491a5[_0x4b34('0x16')](_0x3f3da0)[_0x4b34('0x29')](_0x1a02aa);};}exports[_0x4b34('0x2a')]=function(_0x37a011,_0xa37c30){var _0x155010={},_0x22c659={},_0xb875e7={'count':0x0,'rows':[]};var _0x473d73=_[_0x4b34('0x2b')](db['Disposition'][_0x4b34('0x2c')],function(_0x22cd51){return{'name':_0x22cd51['fieldName'],'type':_0x22cd51[_0x4b34('0x2d')][_0x4b34('0x2e')]};});_0x22c659[_0x4b34('0x2f')]=_['map'](_0x473d73,'name');_0x22c659[_0x4b34('0x30')]=_[_0x4b34('0x31')](_0x37a011[_0x4b34('0x30')]);_0x22c659[_0x4b34('0x32')]=_[_0x4b34('0x33')](_0x22c659['model'],_0x22c659['query']);_0x155010[_0x4b34('0x34')]=_[_0x4b34('0x33')](_0x22c659['model'],qs[_0x4b34('0x35')](_0x37a011[_0x4b34('0x30')][_0x4b34('0x35')]));_0x155010[_0x4b34('0x34')]=_0x155010['attributes'][_0x4b34('0x36')]?_0x155010[_0x4b34('0x34')]:_0x22c659['model'];if(!_0x37a011[_0x4b34('0x30')][_0x4b34('0x37')](_0x4b34('0x38'))){_0x155010[_0x4b34('0x1a')]=qs[_0x4b34('0x1a')](_0x37a011[_0x4b34('0x30')][_0x4b34('0x1a')]);_0x155010[_0x4b34('0x18')]=qs[_0x4b34('0x18')](_0x37a011[_0x4b34('0x30')][_0x4b34('0x18')]);}_0x155010[_0x4b34('0x39')]=qs[_0x4b34('0x3a')](_0x37a011[_0x4b34('0x30')][_0x4b34('0x3a')]);_0x155010[_0x4b34('0x3b')]=qs[_0x4b34('0x32')](_['pick'](_0x37a011[_0x4b34('0x30')],_0x22c659[_0x4b34('0x32')]),_0x473d73);if(_0x37a011[_0x4b34('0x30')][_0x4b34('0x3c')]){_0x155010[_0x4b34('0x3b')]=_[_0x4b34('0x3d')](_0x155010[_0x4b34('0x3b')],{'$or':_['map'](_0x473d73,function(_0x15ff54){if(_0x15ff54[_0x4b34('0x2d')]!==_0x4b34('0x3e')){var _0x182b84={};_0x182b84[_0x15ff54[_0x4b34('0x28')]]={'$like':'%'+_0x37a011[_0x4b34('0x30')][_0x4b34('0x3c')]+'%'};return _0x182b84;}})});}_0x155010=_[_0x4b34('0x3d')]({},_0x155010,_0x37a011[_0x4b34('0x3f')]);var _0x3dc5d6={'where':_0x155010[_0x4b34('0x3b')]};return db[_0x4b34('0x40')][_0x4b34('0x1b')](_0x3dc5d6)[_0x4b34('0x21')](function(_0x1ae353){_0xb875e7['count']=_0x1ae353;if(_0x37a011[_0x4b34('0x30')][_0x4b34('0x41')]){_0x155010[_0x4b34('0x42')]=[{'all':!![]}];}return db[_0x4b34('0x40')][_0x4b34('0x43')](_0x155010);})['then'](function(_0x40be2e){_0xb875e7[_0x4b34('0x44')]=_0x40be2e;return _0xb875e7;})[_0x4b34('0x21')](respondWithFilteredResult(_0xa37c30,_0x155010))[_0x4b34('0x45')](handleError(_0xa37c30,null));};exports[_0x4b34('0x46')]=function(_0x474c49,_0x322b15){var _0x3d29eb={'raw':!![],'where':{'id':_0x474c49[_0x4b34('0x47')]['id']}},_0x4f9eee={};_0x4f9eee[_0x4b34('0x2f')]=_[_0x4b34('0x31')](db[_0x4b34('0x40')][_0x4b34('0x2c')]);_0x4f9eee[_0x4b34('0x30')]=_['keys'](_0x474c49['query']);_0x4f9eee[_0x4b34('0x32')]=_['intersection'](_0x4f9eee['model'],_0x4f9eee[_0x4b34('0x30')]);_0x3d29eb['attributes']=_[_0x4b34('0x33')](_0x4f9eee[_0x4b34('0x2f')],qs[_0x4b34('0x35')](_0x474c49[_0x4b34('0x30')]['fields']));_0x3d29eb[_0x4b34('0x34')]=_0x3d29eb[_0x4b34('0x34')][_0x4b34('0x36')]?_0x3d29eb[_0x4b34('0x34')]:_0x4f9eee[_0x4b34('0x2f')];if(_0x474c49[_0x4b34('0x30')][_0x4b34('0x41')]){_0x3d29eb[_0x4b34('0x42')]=[{'all':!![]}];}_0x3d29eb=_[_0x4b34('0x3d')]({},_0x3d29eb,_0x474c49[_0x4b34('0x3f')]);return db[_0x4b34('0x40')][_0x4b34('0x48')](_0x3d29eb)[_0x4b34('0x21')](handleEntityNotFound(_0x322b15,null))[_0x4b34('0x21')](respondWithResult(_0x322b15,null))['catch'](handleError(_0x322b15,null));};exports[_0x4b34('0x49')]=function(_0x497baa,_0x2367ef){return db[_0x4b34('0x40')][_0x4b34('0x49')](_0x497baa['body'],{})[_0x4b34('0x21')](function(_0x36e69f){var _0x355170=_0x497baa[_0x4b34('0x4a')][_0x4b34('0x23')]({'plain':!![]});if(!_0x355170)throw new Error(_0x4b34('0x4b'));if(_0x355170[_0x4b34('0x4c')]===_0x4b34('0x4a')){var _0x5be650=_0x36e69f[_0x4b34('0x23')]({'plain':!![]});var _0x4dd297=_0x4b34('0x24');return db[_0x4b34('0x4d')][_0x4b34('0x48')]({'where':{'name':_0x4dd297,'userProfileId':_0x355170[_0x4b34('0x4e')]},'raw':!![]})[_0x4b34('0x21')](function(_0x101f57){if(_0x101f57&&_0x101f57[_0x4b34('0x4f')]===0x0){return db[_0x4b34('0x25')][_0x4b34('0x49')]({'name':_0x5be650[_0x4b34('0x28')],'resourceId':_0x5be650['id'],'type':_0x101f57[_0x4b34('0x28')],'sectionId':_0x101f57['id']},{})['then'](function(){return _0x36e69f;});}else{return _0x36e69f;}})[_0x4b34('0x45')](function(_0x32263f){logger[_0x4b34('0x26')](_0x4b34('0x50'),_0x32263f);throw _0x32263f;});}return _0x36e69f;})['then'](respondWithResult(_0x2367ef,0xc9))[_0x4b34('0x45')](handleError(_0x2367ef,null));};exports['update']=function(_0x1d4ff3,_0x1fc90c){if(_0x1d4ff3[_0x4b34('0x51')]['id']){delete _0x1d4ff3[_0x4b34('0x51')]['id'];}return db[_0x4b34('0x40')][_0x4b34('0x48')]({'where':{'id':_0x1d4ff3['params']['id']}})[_0x4b34('0x21')](handleEntityNotFound(_0x1fc90c,null))[_0x4b34('0x21')](saveUpdates(_0x1d4ff3[_0x4b34('0x51')],null))[_0x4b34('0x21')](respondWithResult(_0x1fc90c,null))[_0x4b34('0x45')](handleError(_0x1fc90c,null));};exports['destroy']=function(_0x525f5d,_0x2ef86b){return db[_0x4b34('0x40')]['find']({'where':{'id':_0x525f5d[_0x4b34('0x47')]['id']}})[_0x4b34('0x21')](handleEntityNotFound(_0x2ef86b,null))[_0x4b34('0x21')](removeEntity(_0x2ef86b,null))['catch'](handleError(_0x2ef86b,null));};
\ No newline at end of file
index ee32e13..3b3e190 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa5d=['WhatsappAccountId','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./disposition.attributes','exports','define','Disposition','tools_dispositions','name_voice','name','ListId','name_chat','ChatWebsiteId','name_mail','MailAccountId','SmsAccountId','name_fax','FaxAccountId','name_openchannel','OpenchannelAccountId'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0xaa5d,0xb7));var _0xdaa5=function(_0x34b1b8,_0x54c9bf){_0x34b1b8=_0x34b1b8-0x0;var _0x542dd8=_0xaa5d[_0x34b1b8];return _0x542dd8;};'use strict';var _=require('lodash');var util=require(_0xdaa5('0x0'));var logger=require(_0xdaa5('0x1'))(_0xdaa5('0x2'));var moment=require(_0xdaa5('0x3'));var BPromise=require(_0xdaa5('0x4'));var rp=require(_0xdaa5('0x5'));var fs=require('fs');var path=require(_0xdaa5('0x6'));var rimraf=require('rimraf');var config=require(_0xdaa5('0x7'));var attributes=require(_0xdaa5('0x8'));module[_0xdaa5('0x9')]=function(_0x5a57d8,_0x167baf){return _0x5a57d8[_0xdaa5('0xa')](_0xdaa5('0xb'),attributes,{'tableName':_0xdaa5('0xc'),'paranoid':![],'indexes':[{'unique':!![],'name':_0xdaa5('0xd'),'fields':[_0xdaa5('0xe'),_0xdaa5('0xf')]},{'unique':!![],'name':_0xdaa5('0x10'),'fields':[_0xdaa5('0xe'),_0xdaa5('0x11')]},{'unique':!![],'name':_0xdaa5('0x12'),'fields':['name',_0xdaa5('0x13')]},{'unique':!![],'name':'name_sms','fields':[_0xdaa5('0xe'),_0xdaa5('0x14')]},{'unique':!![],'name':_0xdaa5('0x15'),'fields':[_0xdaa5('0xe'),_0xdaa5('0x16')]},{'unique':!![],'name':_0xdaa5('0x17'),'fields':[_0xdaa5('0xe'),_0xdaa5('0x18')]},{'unique':!![],'name':'name_whatsapp','fields':[_0xdaa5('0xe'),_0xdaa5('0x19')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xeb1f=['api','moment','bluebird','request-promise','path','rimraf','exports','define','Disposition','name_voice','name','ListId','name_chat','ChatWebsiteId','name_mail','MailAccountId','name_sms','name_fax','FaxAccountId','name_openchannel','OpenchannelAccountId','WhatsappAccountId','lodash','util','../../config/logger'];(function(_0x4b4d43,_0x1590f7){var _0x5706ba=function(_0x11d99b){while(--_0x11d99b){_0x4b4d43['push'](_0x4b4d43['shift']());}};_0x5706ba(++_0x1590f7);}(_0xeb1f,0x93));var _0xfeb1=function(_0x1649dd,_0x5c2c7d){_0x1649dd=_0x1649dd-0x0;var _0x1145d9=_0xeb1f[_0x1649dd];return _0x1145d9;};'use strict';var _=require(_0xfeb1('0x0'));var util=require(_0xfeb1('0x1'));var logger=require(_0xfeb1('0x2'))(_0xfeb1('0x3'));var moment=require(_0xfeb1('0x4'));var BPromise=require(_0xfeb1('0x5'));var rp=require(_0xfeb1('0x6'));var fs=require('fs');var path=require(_0xfeb1('0x7'));var rimraf=require(_0xfeb1('0x8'));var config=require('../../config/environment');var attributes=require('./disposition.attributes');module[_0xfeb1('0x9')]=function(_0x39ed0f,_0x474004){return _0x39ed0f[_0xfeb1('0xa')](_0xfeb1('0xb'),attributes,{'tableName':'tools_dispositions','paranoid':![],'indexes':[{'unique':!![],'name':_0xfeb1('0xc'),'fields':[_0xfeb1('0xd'),_0xfeb1('0xe')]},{'unique':!![],'name':_0xfeb1('0xf'),'fields':[_0xfeb1('0xd'),_0xfeb1('0x10')]},{'unique':!![],'name':_0xfeb1('0x11'),'fields':['name',_0xfeb1('0x12')]},{'unique':!![],'name':_0xfeb1('0x13'),'fields':['name','SmsAccountId']},{'unique':!![],'name':_0xfeb1('0x14'),'fields':[_0xfeb1('0xd'),_0xfeb1('0x15')]},{'unique':!![],'name':_0xfeb1('0x16'),'fields':[_0xfeb1('0xd'),_0xfeb1('0x17')]},{'unique':!![],'name':'name_whatsapp','fields':[_0xfeb1('0xd'),_0xfeb1('0x18')]}],'timestamps':!![]});};
\ No newline at end of file
index 2376db9..0c1b58b 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(_0x3dea87,_0x395002){var _0x457f76=function(_0x346053){while(--_0x346053){_0x3dea87['push'](_0x3dea87['shift']());}};_0x457f76(++_0x395002);}(_0xa9e0,0x123));var _0x0a9e=function(_0x45e98e,_0x169b60){_0x45e98e=_0x45e98e-0x0;var _0x374dba=_0xa9e0[_0x45e98e];return _0x374dba;};'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(_0x56c969,_0x536de8){var _0x3c410c=function(_0x27b04d){while(--_0x27b04d){_0x56c969['push'](_0x56c969['shift']());}};_0x3c410c(++_0x536de8);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4709c0,_0x3396c7){_0x4709c0=_0x4709c0-0x0;var _0x13348b=_0xa9e0[_0x4709c0];return _0x13348b;};'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 8d256f2..dddda65 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x734e=['path','express','Router','../../components/auth/service','../../components/interaction/service','./disposition.controller','get','isAuthenticated','/:id','create','put','delete','destroy','exports','multer','util'];(function(_0x1663ae,_0x10484a){var _0x30ffb8=function(_0x21e006){while(--_0x21e006){_0x1663ae['push'](_0x1663ae['shift']());}};_0x30ffb8(++_0x10484a);}(_0x734e,0x1be));var _0xe734=function(_0x3725ee,_0x543bd9){_0x3725ee=_0x3725ee-0x0;var _0x399c71=_0x734e[_0x3725ee];return _0x399c71;};'use strict';var multer=require(_0xe734('0x0'));var util=require(_0xe734('0x1'));var path=require(_0xe734('0x2'));var timeout=require('connect-timeout');var express=require(_0xe734('0x3'));var router=express[_0xe734('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xe734('0x5'));var interaction=require(_0xe734('0x6'));var config=require('../../config/environment');var controller=require(_0xe734('0x7'));router[_0xe734('0x8')]('/',auth[_0xe734('0x9')](),controller['index']);router[_0xe734('0x8')](_0xe734('0xa'),auth[_0xe734('0x9')](),controller['show']);router['post']('/',auth[_0xe734('0x9')](),controller[_0xe734('0xb')]);router[_0xe734('0xc')](_0xe734('0xa'),auth['isAuthenticated'](),controller['update']);router[_0xe734('0xd')](_0xe734('0xa'),auth[_0xe734('0x9')](),controller[_0xe734('0xe')]);module[_0xe734('0xf')]=router;
\ No newline at end of file
+var _0x9fb9=['post','put','/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','get','index','isAuthenticated','show'];(function(_0x327f9a,_0xe49d05){var _0x4ac67e=function(_0xe7a5f2){while(--_0xe7a5f2){_0x327f9a['push'](_0x327f9a['shift']());}};_0x4ac67e(++_0xe49d05);}(_0x9fb9,0xb2));var _0x99fb=function(_0x4b6354,_0x215e17){_0x4b6354=_0x4b6354-0x0;var _0xd6ac8f=_0x9fb9[_0x4b6354];return _0xd6ac8f;};'use strict';var multer=require(_0x99fb('0x0'));var util=require(_0x99fb('0x1'));var path=require(_0x99fb('0x2'));var timeout=require(_0x99fb('0x3'));var express=require('express');var router=express[_0x99fb('0x4')]();var fs_extra=require(_0x99fb('0x5'));var auth=require(_0x99fb('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x99fb('0x7'));var controller=require('./disposition.controller');router[_0x99fb('0x8')]('/',auth['isAuthenticated'](),controller[_0x99fb('0x9')]);router[_0x99fb('0x8')]('/:id',auth[_0x99fb('0xa')](),controller[_0x99fb('0xb')]);router[_0x99fb('0xc')]('/',auth[_0x99fb('0xa')](),controller['create']);router[_0x99fb('0xd')](_0x99fb('0xe'),auth[_0x99fb('0xa')](),controller[_0x99fb('0xf')]);router[_0x99fb('0x10')](_0x99fb('0xe'),auth[_0x99fb('0xa')](),controller[_0x99fb('0x11')]);module[_0x99fb('0x12')]=router;
\ No newline at end of file
index d07e68e..628dcd9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5cc4=['mandatoryDisposition','exports','STRING','ENUM','yes','xCALLY\x20Motion\x20Fax','2400','4800','7200','9600','14400','12000','v17,v27,v29','INTEGER','SIP','IAX','DADHI','KHOMP','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue'];(function(_0x9bb4e1,_0x3870c8){var _0x38b73e=function(_0x499f13){while(--_0x499f13){_0x9bb4e1['push'](_0x9bb4e1['shift']());}};_0x38b73e(++_0x3870c8);}(_0x5cc4,0xf3));var _0x45cc=function(_0x2f0057,_0x448b27){_0x2f0057=_0x2f0057-0x0;var _0x17f2c3=_0x5cc4[_0x2f0057];return _0x17f2c3;};'use strict';var Sequelize=require('sequelize');module[_0x45cc('0x0')]={'name':{'type':Sequelize[_0x45cc('0x1')],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x45cc('0x1')]},'ecm':{'type':Sequelize[_0x45cc('0x2')](_0x45cc('0x3'),'no'),'defaultValue':_0x45cc('0x3')},'headerinfo':{'type':Sequelize[_0x45cc('0x1')],'defaultValue':_0x45cc('0x4')},'localstationid':{'type':Sequelize[_0x45cc('0x1')],'unique':'localstationid'},'minrate':{'type':Sequelize[_0x45cc('0x2')](_0x45cc('0x5'),_0x45cc('0x6'),_0x45cc('0x7'),_0x45cc('0x8'),'12000',_0x45cc('0x9')),'defaultValue':_0x45cc('0x6')},'maxrate':{'type':Sequelize[_0x45cc('0x2')](_0x45cc('0x5'),_0x45cc('0x6'),_0x45cc('0x7'),_0x45cc('0x8'),_0x45cc('0xa'),_0x45cc('0x9')),'defaultValue':_0x45cc('0x9')},'modem':{'type':Sequelize[_0x45cc('0x1')],'defaultValue':_0x45cc('0xb')},'gateway':{'type':Sequelize[_0x45cc('0x1')],'defaultValue':'no','validate':{'is':/^(?:yes|no|[0-9]+)$/}},'faxdetect':{'type':Sequelize[_0x45cc('0x1')],'defaultValue':'no','validate':{'is':/^(?:yes|no|t38|cng|[0-9]+)$/}},'t38timeout':{'type':Sequelize[_0x45cc('0xc')],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize[_0x45cc('0x2')](_0x45cc('0xd'),_0x45cc('0xe'),_0x45cc('0xf'),_0x45cc('0x10')),'defaultValue':_0x45cc('0xd')},'key':{'type':Sequelize[_0x45cc('0x1')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0x45cc('0x11')],'defaultValue':function(){return _0x45cc('0x12');}},'notificationSound':{'type':Sequelize[_0x45cc('0x13')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x45cc('0x13')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x45cc('0xc')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x45cc('0x13')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x45cc('0xc')],'allowNull':!![],'defaultValue':null,'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0x45cc('0x14'),'set':function(_0x23d187){if(!_0x23d187)this['setDataValue']('mandatoryDispositionPauseId',null);this['setDataValue'](_0x45cc('0x15'),_0x23d187);}}};
\ No newline at end of file
+var _0x0e1f=['mandatoryDisposition','sequelize','exports','STRING','ENUM','yes','xCALLY\x20Motion\x20Fax','localstationid','4800','7200','14400','2400','9600','12000','v17,v27,v29','SIP','IAX','DADHI','KHOMP','TEXT','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId'];(function(_0x4bdaa9,_0x31d64f){var _0x116282=function(_0x1b8abd){while(--_0x1b8abd){_0x4bdaa9['push'](_0x4bdaa9['shift']());}};_0x116282(++_0x31d64f);}(_0x0e1f,0x9d));var _0xf0e1=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x0e1f[_0x1facfa];return _0x9ec701;};'use strict';var Sequelize=require(_0xf0e1('0x0'));module[_0xf0e1('0x1')]={'name':{'type':Sequelize[_0xf0e1('0x2')],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xf0e1('0x2')]},'ecm':{'type':Sequelize[_0xf0e1('0x3')](_0xf0e1('0x4'),'no'),'defaultValue':_0xf0e1('0x4')},'headerinfo':{'type':Sequelize['STRING'],'defaultValue':_0xf0e1('0x5')},'localstationid':{'type':Sequelize[_0xf0e1('0x2')],'unique':_0xf0e1('0x6')},'minrate':{'type':Sequelize[_0xf0e1('0x3')]('2400',_0xf0e1('0x7'),_0xf0e1('0x8'),'9600','12000',_0xf0e1('0x9')),'defaultValue':_0xf0e1('0x7')},'maxrate':{'type':Sequelize[_0xf0e1('0x3')](_0xf0e1('0xa'),_0xf0e1('0x7'),_0xf0e1('0x8'),_0xf0e1('0xb'),_0xf0e1('0xc'),_0xf0e1('0x9')),'defaultValue':_0xf0e1('0x9')},'modem':{'type':Sequelize['STRING'],'defaultValue':_0xf0e1('0xd')},'gateway':{'type':Sequelize[_0xf0e1('0x2')],'defaultValue':'no','validate':{'is':/^(?:yes|no|[0-9]+)$/}},'faxdetect':{'type':Sequelize[_0xf0e1('0x2')],'defaultValue':'no','validate':{'is':/^(?:yes|no|t38|cng|[0-9]+)$/}},'t38timeout':{'type':Sequelize['INTEGER'],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize[_0xf0e1('0x3')](_0xf0e1('0xe'),_0xf0e1('0xf'),_0xf0e1('0x10'),_0xf0e1('0x11')),'defaultValue':_0xf0e1('0xe')},'key':{'type':Sequelize[_0xf0e1('0x2')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0xf0e1('0x12')],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}';}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xf0e1('0x13')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xf0e1('0x14')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xf0e1('0x13')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xf0e1('0x14')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'allowNull':!![],'defaultValue':null,'comment':_0xf0e1('0x15')},'mandatoryDisposition':{'type':Sequelize[_0xf0e1('0x13')],'defaultValue':![],'comment':_0xf0e1('0x16'),'set':function(_0x516c91){if(!_0x516c91)this[_0xf0e1('0x17')](_0xf0e1('0x18'),null);this[_0xf0e1('0x17')](_0xf0e1('0x19'),_0x516c91);}}};
\ No newline at end of file
index 5c36ea9..165ca14 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfffd=['undefined','count','set','apply','reject','save','update','then','destroy','get','FaxAccounts','UserProfileResource','end','stack','name','send','index','Pause','mandatoryDispositionPause','map','rawAttributes','fieldName','type','key','model','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','FaxAccount','includeAll','include','findAll','rows','show','params','keys','options','find','create','user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','addDisposition','getDispositions','findOne','FaxAccountId','Disposition','removeDispositions','ids','CannedAnswer','getAnswers','removeAnswers','addInteraction','omit','getInteractions','FaxInteraction','CmContact','Contact','User','Owner','internal','Tag','Tags','color','tag','addApplications','sequelize','transaction','ISOLATION_LEVELS','READ_COMMITTED','FaxApplication','bulkCreate','findAndCountAll','priority','finally','getApplications','context','from-voip-provider','exten','localstationid','system','description','Fax\x20Extension','appdata','push','CDR(type)=inbound-fax','gateway','faxdetect','maxrate','minrate','t38timeout','FAXOPT(','Set','Wait','ReceiveFax','addAccountApplications','VoiceExtension','updateAccountApplications','createdAt','updatedAt','TrunkId','ListId','findById','FaxMessage','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','CmList','List','Contacts','DESC','attachments','root','basename','CheckAfterSend','isNil','from','fax','defaults','Send\x20Fax\x20failed','out','filename','Messages','spread','dataValues','SendFax','SendFaxRpc,\x20%s','addAgents','emit','userFaxAccount:save','removeAgents','isArray','userFaxAccount:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','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/license/util','../../mysqldb','redis','localhost','./faxAccount.socket','register','client','request','info','FaxAccount,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','sendStatus','status','json','offset','limit'];(function(_0x41ba6a,_0x42c5d9){var _0x315f92=function(_0x1cd96b){while(--_0x1cd96b){_0x41ba6a['push'](_0x41ba6a['shift']());}};_0x315f92(++_0x42c5d9);}(_0xfffd,0x15f));var _0xdfff=function(_0x11c6ba,_0x15a8e1){_0x11c6ba=_0x11c6ba-0x0;var _0x42a979=_0xfffd[_0x11c6ba];return _0x42a979;};'use strict';var emlformat=require(_0xdfff('0x0'));var rimraf=require(_0xdfff('0x1'));var zipdir=require(_0xdfff('0x2'));var jsonpatch=require(_0xdfff('0x3'));var rp=require(_0xdfff('0x4'));var moment=require(_0xdfff('0x5'));var BPromise=require(_0xdfff('0x6'));var Mustache=require(_0xdfff('0x7'));var util=require('util');var path=require(_0xdfff('0x8'));var sox=require(_0xdfff('0x9'));var csv=require(_0xdfff('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xdfff('0xb'));var _=require(_0xdfff('0xc'));var squel=require('squel');var crypto=require(_0xdfff('0xd'));var jsforce=require(_0xdfff('0xe'));var deskjs=require(_0xdfff('0xf'));var toCsv=require('to-csv');var querystring=require(_0xdfff('0x10'));var Papa=require(_0xdfff('0x11'));var Redis=require(_0xdfff('0x12'));var authService=require(_0xdfff('0x13'));var qs=require(_0xdfff('0x14'));var as=require(_0xdfff('0x15'));var hardwareService=require(_0xdfff('0x16'));var logger=require(_0xdfff('0x17'))(_0xdfff('0x18'));var utils=require(_0xdfff('0x19'));var config=require('../../config/environment');var licenseUtil=require(_0xdfff('0x1a'));var db=require(_0xdfff('0x1b'))['db'];config[_0xdfff('0x1c')]=_['defaults'](config[_0xdfff('0x1c')],{'host':_0xdfff('0x1d'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xdfff('0x1c')]));require(_0xdfff('0x1e'))[_0xdfff('0x1f')](socket);var jayson=require('jayson/promise');var client=jayson[_0xdfff('0x20')]['http']({'port':0x232c});var client9002=jayson[_0xdfff('0x20')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4c480f,_0x40d990,_0x54c2ba,_0x5065fa){return new BPromise(function(_0x206b2e,_0x399b3d){var _0x1d3937=_0x5065fa||client;return _0x1d3937[_0xdfff('0x21')](_0x4c480f,_0x54c2ba)['then'](function(_0x1278cb){logger[_0xdfff('0x22')](_0xdfff('0x23'),_0x40d990,_0xdfff('0x24'));logger['debug']('FaxAccount,\x20%s,\x20%s,\x20%s',_0x40d990,_0xdfff('0x24'),JSON['stringify'](_0x1278cb));if(_0x1278cb[_0xdfff('0x25')]){if(_0x1278cb['error'][_0xdfff('0x26')]===0x1f4){logger[_0xdfff('0x25')](_0xdfff('0x23'),_0x40d990,_0x1278cb[_0xdfff('0x25')][_0xdfff('0x27')]);return _0x399b3d(_0x1278cb['error']['message']);}logger['error']('FaxAccount,\x20%s,\x20%s',_0x40d990,_0x1278cb[_0xdfff('0x25')][_0xdfff('0x27')]);return _0x206b2e(_0x1278cb[_0xdfff('0x25')][_0xdfff('0x27')]);}else{logger['info']('FaxAccount,\x20%s,\x20%s',_0x40d990,'request\x20sent');_0x206b2e(_0x1278cb[_0xdfff('0x28')]['message']);}})[_0xdfff('0x29')](function(_0x4d8770){logger[_0xdfff('0x25')](_0xdfff('0x23'),_0x40d990,_0x4d8770);_0x399b3d(_0x4d8770);});});}function respondWithStatusCode(_0x51421b,_0x3b8057){_0x3b8057=_0x3b8057||0xcc;return function(_0x1aef81){if(_0x1aef81){return _0x51421b[_0xdfff('0x2a')](_0x3b8057);}return _0x51421b[_0xdfff('0x2b')](_0x3b8057)['end']();};}function respondWithResult(_0x1af191,_0x490152){_0x490152=_0x490152||0xc8;return function(_0x51340b){if(_0x51340b){return _0x1af191['status'](_0x490152)[_0xdfff('0x2c')](_0x51340b);}};}function respondWithFilteredResult(_0x37276d,_0x108ce2){return function(_0x8a09a3){if(_0x8a09a3){var _0x224cab=typeof _0x108ce2[_0xdfff('0x2d')]==='undefined'&&typeof _0x108ce2[_0xdfff('0x2e')]===_0xdfff('0x2f');var _0x43453d=_0x8a09a3[_0xdfff('0x30')];var _0x352f14=_0x224cab?0x0:_0x108ce2['offset'];var _0x4c4da9=_0x224cab?_0x8a09a3[_0xdfff('0x30')]:_0x108ce2['offset']+_0x108ce2['limit'];var _0x417efa;if(_0x4c4da9>=_0x43453d){_0x4c4da9=_0x43453d;_0x417efa=0xc8;}else{_0x417efa=0xce;}_0x37276d[_0xdfff('0x2b')](_0x417efa);return _0x37276d[_0xdfff('0x31')]('Content-Range',_0x352f14+'-'+_0x4c4da9+'/'+_0x43453d)[_0xdfff('0x2c')](_0x8a09a3);}return null;};}function patchUpdates(_0x1df756){return function(_0x1c9755){try{jsonpatch[_0xdfff('0x32')](_0x1c9755,_0x1df756,!![]);}catch(_0xce00d5){return BPromise[_0xdfff('0x33')](_0xce00d5);}return _0x1c9755[_0xdfff('0x34')]();};}function saveUpdates(_0x50da87,_0x178153){return function(_0x149d5b){if(_0x149d5b){return _0x149d5b[_0xdfff('0x35')](_0x50da87)[_0xdfff('0x36')](function(_0x329510){return _0x329510;});}return null;};}function removeEntity(_0x263482,_0x21491e){return function(_0x21191f){if(_0x21191f){return _0x21191f[_0xdfff('0x37')]()[_0xdfff('0x36')](function(){var _0x4b8a62=_0x21191f[_0xdfff('0x38')]({'plain':!![]});var _0x1c4f59=_0xdfff('0x39');return db[_0xdfff('0x3a')][_0xdfff('0x37')]({'where':{'type':_0x1c4f59,'resourceId':_0x4b8a62['id']}})['then'](function(){return _0x21191f;});})[_0xdfff('0x36')](function(){_0x263482[_0xdfff('0x2b')](0xcc)[_0xdfff('0x3b')]();});}};}function handleEntityNotFound(_0x5bab1e,_0x13d9ca){return function(_0x1124ba){if(!_0x1124ba){_0x5bab1e[_0xdfff('0x2a')](0x194);}return _0x1124ba;};}function handleError(_0x56ce23,_0x3c2814){_0x3c2814=_0x3c2814||0x1f4;return function(_0x1ebc22){logger['error'](_0x1ebc22[_0xdfff('0x3c')]);if(_0x1ebc22[_0xdfff('0x3d')]){delete _0x1ebc22[_0xdfff('0x3d')];}_0x56ce23[_0xdfff('0x2b')](_0x3c2814)[_0xdfff('0x3e')](_0x1ebc22);};}exports[_0xdfff('0x3f')]=function(_0x29e1ef,_0xf96f0c){var _0x43ff6f={'include':[{'model':db[_0xdfff('0x40')],'as':_0xdfff('0x41')}]},_0x33f8bb={},_0x27c660={'count':0x0,'rows':[]};var _0x2aa4af=_[_0xdfff('0x42')](db['FaxAccount'][_0xdfff('0x43')],function(_0x510c19){return{'name':_0x510c19[_0xdfff('0x44')],'type':_0x510c19[_0xdfff('0x45')][_0xdfff('0x46')]};});_0x33f8bb[_0xdfff('0x47')]=_[_0xdfff('0x42')](_0x2aa4af,_0xdfff('0x3d'));_0x33f8bb[_0xdfff('0x48')]=_['keys'](_0x29e1ef['query']);_0x33f8bb['filters']=_[_0xdfff('0x49')](_0x33f8bb[_0xdfff('0x47')],_0x33f8bb[_0xdfff('0x48')]);_0x43ff6f[_0xdfff('0x4a')]=_[_0xdfff('0x49')](_0x33f8bb[_0xdfff('0x47')],qs[_0xdfff('0x4b')](_0x29e1ef['query'][_0xdfff('0x4b')]));_0x43ff6f[_0xdfff('0x4a')]=_0x43ff6f['attributes'][_0xdfff('0x4c')]?_0x43ff6f['attributes']:_0x33f8bb[_0xdfff('0x47')];if(!_0x29e1ef[_0xdfff('0x48')][_0xdfff('0x4d')](_0xdfff('0x4e'))){_0x43ff6f[_0xdfff('0x2e')]=qs['limit'](_0x29e1ef[_0xdfff('0x48')][_0xdfff('0x2e')]);_0x43ff6f[_0xdfff('0x2d')]=qs['offset'](_0x29e1ef[_0xdfff('0x48')][_0xdfff('0x2d')]);}_0x43ff6f[_0xdfff('0x4f')]=qs[_0xdfff('0x50')](_0x29e1ef[_0xdfff('0x48')]['sort']);_0x43ff6f[_0xdfff('0x51')]=qs[_0xdfff('0x52')](_[_0xdfff('0x53')](_0x29e1ef[_0xdfff('0x48')],_0x33f8bb[_0xdfff('0x52')]),_0x2aa4af);if(_0x29e1ef[_0xdfff('0x48')][_0xdfff('0x54')]){_0x43ff6f[_0xdfff('0x51')]=_[_0xdfff('0x55')](_0x43ff6f[_0xdfff('0x51')],{'$or':_[_0xdfff('0x42')](_0x2aa4af,function(_0x458a85){if(_0x458a85[_0xdfff('0x45')]!==_0xdfff('0x56')){var _0x40a19c={};_0x40a19c[_0x458a85[_0xdfff('0x3d')]]={'$like':'%'+_0x29e1ef[_0xdfff('0x48')][_0xdfff('0x54')]+'%'};return _0x40a19c;}})});}_0x43ff6f=_[_0xdfff('0x55')]({},_0x43ff6f,_0x29e1ef['options']);var _0x1cc72c={'where':_0x43ff6f[_0xdfff('0x51')]};return db[_0xdfff('0x57')]['count'](_0x1cc72c)['then'](function(_0x1e2200){_0x27c660[_0xdfff('0x30')]=_0x1e2200;if(_0x29e1ef[_0xdfff('0x48')][_0xdfff('0x58')]){_0x43ff6f[_0xdfff('0x59')]=[{'all':!![]}];}return db[_0xdfff('0x57')][_0xdfff('0x5a')](_0x43ff6f);})[_0xdfff('0x36')](function(_0x18d05d){_0x27c660[_0xdfff('0x5b')]=_0x18d05d;return _0x27c660;})[_0xdfff('0x36')](respondWithFilteredResult(_0xf96f0c,_0x43ff6f))[_0xdfff('0x29')](handleError(_0xf96f0c,null));};exports[_0xdfff('0x5c')]=function(_0x2d7263,_0x2c0fe4){var _0x211898={'raw':![],'where':{'id':_0x2d7263[_0xdfff('0x5d')]['id']},'include':[{'model':db['Pause'],'as':_0xdfff('0x41')}]},_0x40f272={};_0x40f272[_0xdfff('0x47')]=_['keys'](db[_0xdfff('0x57')][_0xdfff('0x43')]);_0x40f272[_0xdfff('0x48')]=_[_0xdfff('0x5e')](_0x2d7263['query']);_0x40f272[_0xdfff('0x52')]=_[_0xdfff('0x49')](_0x40f272['model'],_0x40f272[_0xdfff('0x48')]);_0x211898[_0xdfff('0x4a')]=_['intersection'](_0x40f272['model'],qs[_0xdfff('0x4b')](_0x2d7263[_0xdfff('0x48')][_0xdfff('0x4b')]));_0x211898[_0xdfff('0x4a')]=_0x211898[_0xdfff('0x4a')]['length']?_0x211898[_0xdfff('0x4a')]:_0x40f272['model'];if(_0x2d7263['query']['includeAll']){_0x211898[_0xdfff('0x59')]=[{'all':!![]}];}_0x211898=_[_0xdfff('0x55')]({},_0x211898,_0x2d7263[_0xdfff('0x5f')]);return db[_0xdfff('0x57')][_0xdfff('0x60')](_0x211898)[_0xdfff('0x36')](handleEntityNotFound(_0x2c0fe4,null))[_0xdfff('0x36')](respondWithResult(_0x2c0fe4,null))[_0xdfff('0x29')](handleError(_0x2c0fe4,null));};exports[_0xdfff('0x61')]=function(_0x37e683,_0x44b7ac){return db['FaxAccount'][_0xdfff('0x61')](_0x37e683['body'],{})[_0xdfff('0x36')](function(_0x1710f5){var _0x4fd109=_0x37e683[_0xdfff('0x62')]['get']({'plain':!![]});if(!_0x4fd109)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4fd109[_0xdfff('0x63')]===_0xdfff('0x62')){var _0x5d42ca=_0x1710f5[_0xdfff('0x38')]({'plain':!![]});var _0x21289a=_0xdfff('0x39');return db[_0xdfff('0x64')]['find']({'where':{'name':_0x21289a,'userProfileId':_0x4fd109[_0xdfff('0x65')]},'raw':!![]})[_0xdfff('0x36')](function(_0x132eca){if(_0x132eca&&_0x132eca[_0xdfff('0x66')]===0x0){return db['UserProfileResource'][_0xdfff('0x61')]({'name':_0x5d42ca[_0xdfff('0x3d')],'resourceId':_0x5d42ca['id'],'type':_0x132eca[_0xdfff('0x3d')],'sectionId':_0x132eca['id']},{})[_0xdfff('0x36')](function(){return _0x1710f5;});}else{return _0x1710f5;}})[_0xdfff('0x29')](function(_0x1bb54d){logger[_0xdfff('0x25')](_0xdfff('0x67'),_0x1bb54d);throw _0x1bb54d;});}return _0x1710f5;})[_0xdfff('0x36')](respondWithResult(_0x44b7ac,0xc9))[_0xdfff('0x29')](handleError(_0x44b7ac,null));};exports[_0xdfff('0x35')]=function(_0x21d341,_0x52f99b){if(_0x21d341[_0xdfff('0x68')]['id']){delete _0x21d341['body']['id'];}return db[_0xdfff('0x57')][_0xdfff('0x60')]({'where':{'id':_0x21d341['params']['id']},'include':[{'model':db[_0xdfff('0x40')],'as':_0xdfff('0x41')}]})['then'](handleEntityNotFound(_0x52f99b,null))[_0xdfff('0x36')](saveUpdates(_0x21d341[_0xdfff('0x68')],null))[_0xdfff('0x36')](respondWithResult(_0x52f99b,null))[_0xdfff('0x29')](handleError(_0x52f99b,null));};exports[_0xdfff('0x37')]=function(_0x14084f,_0x16298c){return db[_0xdfff('0x57')][_0xdfff('0x60')]({'where':{'id':_0x14084f[_0xdfff('0x5d')]['id']}})['then'](handleEntityNotFound(_0x16298c,null))[_0xdfff('0x36')](removeEntity(_0x16298c,null))[_0xdfff('0x29')](handleError(_0x16298c,null));};exports[_0xdfff('0x69')]=function(_0x3ff62e,_0xc9ed5){return db['FaxAccount']['describe']()['then'](respondWithResult(_0xc9ed5,null))[_0xdfff('0x29')](handleError(_0xc9ed5,null));};exports[_0xdfff('0x6a')]=function(_0x187f05,_0x51cbfa,_0x570ddd){if(_0x187f05[_0xdfff('0x68')]['id']){delete _0x187f05['body']['id'];}return db[_0xdfff('0x57')][_0xdfff('0x60')]({'where':{'id':_0x187f05[_0xdfff('0x5d')]['id']}})[_0xdfff('0x36')](handleEntityNotFound(_0x51cbfa,null))[_0xdfff('0x36')](function(_0xeab90){if(_0xeab90){_0x187f05[_0xdfff('0x68')]['FaxAccountId']=_0xeab90['id'];return db['Disposition'][_0xdfff('0x61')](_0x187f05[_0xdfff('0x68')]);}})['then'](respondWithResult(_0x51cbfa,null))[_0xdfff('0x29')](handleError(_0x51cbfa,null));};exports[_0xdfff('0x6b')]=function(_0x130604,_0x1017c5,_0x5b85ff){var _0x5cd3d2={'raw':![],'where':{}};var _0x414dd3={};var _0x29f92d={'count':0x0,'rows':[]};return db[_0xdfff('0x57')][_0xdfff('0x6c')]({'where':{'id':_0x130604[_0xdfff('0x5d')]['id']}})[_0xdfff('0x36')](handleEntityNotFound(_0x1017c5,null))[_0xdfff('0x36')](function(_0xdeadf2){if(_0xdeadf2){_0x414dd3['model']=_[_0xdfff('0x5e')](db['Disposition'][_0xdfff('0x43')]);_0x414dd3['query']=_['keys'](_0x130604[_0xdfff('0x48')]);_0x414dd3[_0xdfff('0x52')]=_[_0xdfff('0x49')](_0x414dd3[_0xdfff('0x47')],_0x414dd3[_0xdfff('0x48')]);_0x5cd3d2['attributes']=_[_0xdfff('0x49')](_0x414dd3[_0xdfff('0x47')],qs[_0xdfff('0x4b')](_0x130604[_0xdfff('0x48')]['fields']));_0x5cd3d2[_0xdfff('0x4a')]=_0x5cd3d2[_0xdfff('0x4a')][_0xdfff('0x4c')]?_0x5cd3d2[_0xdfff('0x4a')]:_0x414dd3[_0xdfff('0x47')];if(!_0x130604[_0xdfff('0x48')][_0xdfff('0x4d')](_0xdfff('0x4e'))){_0x5cd3d2['limit']=qs[_0xdfff('0x2e')](_0x130604[_0xdfff('0x48')]['limit']);_0x5cd3d2[_0xdfff('0x2d')]=qs[_0xdfff('0x2d')](_0x130604[_0xdfff('0x48')]['offset']);}_0x5cd3d2[_0xdfff('0x4f')]=qs[_0xdfff('0x50')](_0x130604['query']['sort']);_0x5cd3d2[_0xdfff('0x51')]=qs['filters'](_[_0xdfff('0x53')](_0x130604[_0xdfff('0x48')],_0x414dd3[_0xdfff('0x52')]));_0x5cd3d2[_0xdfff('0x51')][_0xdfff('0x6d')]=_0xdeadf2['id'];if(_0x130604[_0xdfff('0x48')][_0xdfff('0x54')]){_0x5cd3d2[_0xdfff('0x51')]=_[_0xdfff('0x55')](_0x5cd3d2[_0xdfff('0x51')],{'$or':_['map'](_0x5cd3d2[_0xdfff('0x4a')],function(_0x45c9ca){var _0x330c8a={};_0x330c8a[_0x45c9ca]={'$like':'%'+_0x130604['query'][_0xdfff('0x54')]+'%'};return _0x330c8a;})});}_0x5cd3d2=_[_0xdfff('0x55')]({},_0x5cd3d2,_0x130604[_0xdfff('0x5f')]);return db[_0xdfff('0x6e')][_0xdfff('0x30')]({'where':_0x5cd3d2[_0xdfff('0x51')]})[_0xdfff('0x36')](function(_0xc3a8d9){_0x29f92d['count']=_0xc3a8d9;if(_0x130604[_0xdfff('0x48')][_0xdfff('0x58')]){_0x5cd3d2['include']=[{'all':!![]}];}return db[_0xdfff('0x6e')]['findAll'](_0x5cd3d2);})[_0xdfff('0x36')](function(_0x4b01eb){_0x29f92d[_0xdfff('0x5b')]=_0x4b01eb;return _0x29f92d;});}})[_0xdfff('0x36')](respondWithFilteredResult(_0x1017c5,_0x5cd3d2))['catch'](handleError(_0x1017c5,null));};exports[_0xdfff('0x6f')]=function(_0x5d678a,_0x2e3a57,_0x2e889b){return db[_0xdfff('0x57')][_0xdfff('0x60')]({'where':{'id':_0x5d678a[_0xdfff('0x5d')]['id']}})[_0xdfff('0x36')](handleEntityNotFound(_0x2e3a57,null))['then'](function(_0x253a08){if(_0x253a08){return _0x253a08[_0xdfff('0x6f')](_0x5d678a[_0xdfff('0x48')][_0xdfff('0x70')]);}})[_0xdfff('0x36')](respondWithStatusCode(_0x2e3a57,null))[_0xdfff('0x29')](handleError(_0x2e3a57,null));};exports['addAnswer']=function(_0x37954b,_0x51b703,_0x369e79){if(_0x37954b[_0xdfff('0x68')]['id']){delete _0x37954b[_0xdfff('0x68')]['id'];}return db['FaxAccount'][_0xdfff('0x60')]({'where':{'id':_0x37954b['params']['id']}})[_0xdfff('0x36')](handleEntityNotFound(_0x51b703,null))['then'](function(_0x297199){if(_0x297199){_0x37954b['body']['FaxAccountId']=_0x297199['id'];return db[_0xdfff('0x71')][_0xdfff('0x61')](_0x37954b[_0xdfff('0x68')]);}})[_0xdfff('0x36')](respondWithResult(_0x51b703,null))[_0xdfff('0x29')](handleError(_0x51b703,null));};exports[_0xdfff('0x72')]=function(_0x3c07d7,_0x3a0071,_0x10b46c){var _0x580eb7={'raw':![],'where':{}};var _0x218549={};var _0x4f4af6={'count':0x0,'rows':[]};return db['FaxAccount']['findOne']({'where':{'id':_0x3c07d7['params']['id']}})['then'](handleEntityNotFound(_0x3a0071,null))[_0xdfff('0x36')](function(_0xa581d9){if(_0xa581d9){_0x218549['model']=_[_0xdfff('0x5e')](db[_0xdfff('0x71')]['rawAttributes']);_0x218549[_0xdfff('0x48')]=_['keys'](_0x3c07d7['query']);_0x218549['filters']=_[_0xdfff('0x49')](_0x218549[_0xdfff('0x47')],_0x218549['query']);_0x580eb7[_0xdfff('0x4a')]=_['intersection'](_0x218549[_0xdfff('0x47')],qs['fields'](_0x3c07d7[_0xdfff('0x48')][_0xdfff('0x4b')]));_0x580eb7[_0xdfff('0x4a')]=_0x580eb7['attributes'][_0xdfff('0x4c')]?_0x580eb7[_0xdfff('0x4a')]:_0x218549[_0xdfff('0x47')];if(!_0x3c07d7[_0xdfff('0x48')][_0xdfff('0x4d')](_0xdfff('0x4e'))){_0x580eb7[_0xdfff('0x2e')]=qs[_0xdfff('0x2e')](_0x3c07d7[_0xdfff('0x48')][_0xdfff('0x2e')]);_0x580eb7[_0xdfff('0x2d')]=qs[_0xdfff('0x2d')](_0x3c07d7[_0xdfff('0x48')]['offset']);}_0x580eb7[_0xdfff('0x4f')]=qs[_0xdfff('0x50')](_0x3c07d7[_0xdfff('0x48')][_0xdfff('0x50')]);_0x580eb7[_0xdfff('0x51')]=qs[_0xdfff('0x52')](_[_0xdfff('0x53')](_0x3c07d7[_0xdfff('0x48')],_0x218549[_0xdfff('0x52')]));_0x580eb7['where']['FaxAccountId']=_0xa581d9['id'];if(_0x3c07d7[_0xdfff('0x48')][_0xdfff('0x54')]){_0x580eb7[_0xdfff('0x51')]=_[_0xdfff('0x55')](_0x580eb7[_0xdfff('0x51')],{'$or':_['map'](_0x580eb7[_0xdfff('0x4a')],function(_0x14b52a){var _0x2cffbd={};_0x2cffbd[_0x14b52a]={'$like':'%'+_0x3c07d7[_0xdfff('0x48')][_0xdfff('0x54')]+'%'};return _0x2cffbd;})});}_0x580eb7=_[_0xdfff('0x55')]({},_0x580eb7,_0x3c07d7[_0xdfff('0x5f')]);return db[_0xdfff('0x71')][_0xdfff('0x30')]({'where':_0x580eb7[_0xdfff('0x51')]})[_0xdfff('0x36')](function(_0x562771){_0x4f4af6[_0xdfff('0x30')]=_0x562771;if(_0x3c07d7['query']['includeAll']){_0x580eb7[_0xdfff('0x59')]=[{'all':!![]}];}return db[_0xdfff('0x71')][_0xdfff('0x5a')](_0x580eb7);})[_0xdfff('0x36')](function(_0x3eb848){_0x4f4af6['rows']=_0x3eb848;return _0x4f4af6;});}})[_0xdfff('0x36')](respondWithFilteredResult(_0x3a0071,_0x580eb7))[_0xdfff('0x29')](handleError(_0x3a0071,null));};exports[_0xdfff('0x73')]=function(_0x5cece5,_0x47e6cf,_0x172dba){return db[_0xdfff('0x57')][_0xdfff('0x60')]({'where':{'id':_0x5cece5['params']['id']}})[_0xdfff('0x36')](handleEntityNotFound(_0x47e6cf,null))[_0xdfff('0x36')](function(_0x36a24b){if(_0x36a24b){return _0x36a24b[_0xdfff('0x73')](_0x5cece5[_0xdfff('0x48')][_0xdfff('0x70')]);}})[_0xdfff('0x36')](respondWithStatusCode(_0x47e6cf,null))[_0xdfff('0x29')](handleError(_0x47e6cf,null));};exports[_0xdfff('0x74')]=function(_0x40c51e,_0x3d5e69,_0x385425){return db['FaxInteraction'][_0xdfff('0x60')]({'where':{'id':_0x40c51e[_0xdfff('0x5d')]['id']}})[_0xdfff('0x36')](handleEntityNotFound(_0x3d5e69,null))['then'](function(_0x192878){if(_0x192878){return _0x192878[_0xdfff('0x74')](_0x40c51e[_0xdfff('0x68')]['ids'],_[_0xdfff('0x75')](_0x40c51e[_0xdfff('0x68')],[_0xdfff('0x70'),'id'])||{});}})[_0xdfff('0x36')](respondWithResult(_0x3d5e69,null))['catch'](handleError(_0x3d5e69,null));};exports[_0xdfff('0x76')]=function(_0x16aae1,_0x14fb1b,_0x4bec70){var _0x260880={'raw':![],'where':{}};var _0x47dc3f={};var _0x5a5bf8={'count':0x0,'rows':[]};return db['FaxAccount'][_0xdfff('0x6c')]({'where':{'id':_0x16aae1[_0xdfff('0x5d')]['id']}})[_0xdfff('0x36')](handleEntityNotFound(_0x14fb1b,null))[_0xdfff('0x36')](function(_0x29285e){if(_0x29285e){_0x47dc3f['model']=_['keys'](db['FaxInteraction'][_0xdfff('0x43')]);_0x47dc3f[_0xdfff('0x48')]=_[_0xdfff('0x5e')](_0x16aae1[_0xdfff('0x48')]);_0x47dc3f[_0xdfff('0x52')]=_[_0xdfff('0x49')](_0x47dc3f['model'],_0x47dc3f[_0xdfff('0x48')]);_0x260880[_0xdfff('0x4a')]=_[_0xdfff('0x49')](_0x47dc3f[_0xdfff('0x47')],qs[_0xdfff('0x4b')](_0x16aae1[_0xdfff('0x48')][_0xdfff('0x4b')]));_0x260880[_0xdfff('0x4a')]=_0x260880[_0xdfff('0x4a')][_0xdfff('0x4c')]?_0x260880[_0xdfff('0x4a')]:_0x47dc3f[_0xdfff('0x47')];if(!_0x16aae1[_0xdfff('0x48')][_0xdfff('0x4d')](_0xdfff('0x4e'))){_0x260880[_0xdfff('0x2e')]=qs['limit'](_0x16aae1['query'][_0xdfff('0x2e')]);_0x260880[_0xdfff('0x2d')]=qs['offset'](_0x16aae1[_0xdfff('0x48')][_0xdfff('0x2d')]);}_0x260880[_0xdfff('0x4f')]=qs[_0xdfff('0x50')](_0x16aae1['query'][_0xdfff('0x50')]);_0x260880['where']=qs[_0xdfff('0x52')](_[_0xdfff('0x53')](_0x16aae1[_0xdfff('0x48')],_0x47dc3f['filters']));_0x260880['where'][_0xdfff('0x6d')]=_0x29285e['id'];if(_0x16aae1[_0xdfff('0x48')][_0xdfff('0x54')]){_0x260880['where']=_[_0xdfff('0x55')](_0x260880[_0xdfff('0x51')],{'$or':_['map'](_0x260880[_0xdfff('0x4a')],function(_0x2289f6){var _0x2a6b69={};_0x2a6b69[_0x2289f6]={'$like':'%'+_0x16aae1[_0xdfff('0x48')][_0xdfff('0x54')]+'%'};return _0x2a6b69;})});}_0x260880=_['merge']({},_0x260880,_0x16aae1[_0xdfff('0x5f')]);return db[_0xdfff('0x77')][_0xdfff('0x30')]({'where':_0x260880[_0xdfff('0x51')]})[_0xdfff('0x36')](function(_0x3697b9){_0x5a5bf8[_0xdfff('0x30')]=_0x3697b9;if(_0x16aae1[_0xdfff('0x48')]['includeAll']){_0x260880[_0xdfff('0x59')]=[{'model':db[_0xdfff('0x78')],'as':_0xdfff('0x79'),'required':![]},{'model':db[_0xdfff('0x7a')],'as':_0xdfff('0x7b'),'attributes':[_0xdfff('0x3d'),'fullname',_0xdfff('0x7c')],'required':![]},{'model':db[_0xdfff('0x7d')],'as':_0xdfff('0x7e'),'attributes':['id',_0xdfff('0x3d'),_0xdfff('0x7f')],'where':_0x16aae1[_0xdfff('0x48')][_0xdfff('0x80')]?{'id':_0x16aae1['query']['tag']}:undefined,'required':_0x16aae1['query']['tag']?!![]:![]}];}return db['FaxInteraction']['findAll'](_0x260880);})[_0xdfff('0x36')](function(_0x49988){_0x5a5bf8[_0xdfff('0x5b')]=_0x49988;return _0x5a5bf8;});}})[_0xdfff('0x36')](respondWithFilteredResult(_0x14fb1b,_0x260880))['catch'](handleError(_0x14fb1b,null));};exports[_0xdfff('0x81')]=function(_0x1bf53b,_0x3c32b0){var _0x4d835b=_0x1bf53b[_0xdfff('0x5d')]['id'];var _0x1322fc=_0x1bf53b[_0xdfff('0x68')];var _0x47063f=0xc8;var _0x2f03e1=null;return db[_0xdfff('0x82')][_0xdfff('0x83')]({'isolationLevel':db['sequelize']['Transaction'][_0xdfff('0x84')][_0xdfff('0x85')]},function(_0x1e0028){return db['FaxAccount'][_0xdfff('0x6c')]({'where':{'id':_0x4d835b},'transaction':_0x1e0028})[_0xdfff('0x36')](function(_0x126624){if(_0x126624){return db['FaxApplication']['destroy']({'where':{'FaxAccountId':_0x4d835b},'transaction':_0x1e0028})['then'](function(){var _0x1bc54e=_['map'](_0x1322fc,function(_0x375fec){_0x375fec[_0xdfff('0x6d')]=_0x4d835b;return _0x375fec;});return db[_0xdfff('0x86')][_0xdfff('0x87')](_0x1bc54e,{'transaction':_0x1e0028});});}else{_0x47063f=0x194;_0x2f03e1=[];}});})[_0xdfff('0x36')](function(){if(_0x47063f!==0x194){return db[_0xdfff('0x86')][_0xdfff('0x88')]({'where':{'FaxAccountId':_0x4d835b},'order':_0xdfff('0x89')})[_0xdfff('0x36')](function(_0x3aa07f){_0x2f03e1=_0x3aa07f;});}})[_0xdfff('0x29')](function(_0x369c7c){_0x47063f=0x1f4;logger['error'](_0x369c7c['stack']);if(_0x369c7c[_0xdfff('0x3d')]){delete _0x369c7c['name'];}_0x2f03e1=_0x369c7c;})[_0xdfff('0x8a')](function(){if(_0x2f03e1===null){_0x3c32b0['sendStatus'](_0x47063f);}else{if(_0x47063f===0x1f4){_0x3c32b0[_0xdfff('0x2b')](_0x47063f)[_0xdfff('0x3e')](_0x2f03e1);}else{_0x3c32b0[_0xdfff('0x2b')](_0x47063f)[_0xdfff('0x2c')](_0x2f03e1);}}});};exports[_0xdfff('0x8b')]=function(_0x2c8cfc,_0xf3da6d,_0x5da244){var _0x15e241={};var _0x55744b={};var _0x15b059;var _0x882718;return db['FaxAccount'][_0xdfff('0x6c')]({'where':{'id':_0x2c8cfc[_0xdfff('0x5d')]['id']}})[_0xdfff('0x36')](handleEntityNotFound(_0xf3da6d,null))['then'](function(_0x319134){if(_0x319134){_0x15b059=_0x319134;_0x55744b['model']=_[_0xdfff('0x5e')](db[_0xdfff('0x86')][_0xdfff('0x43')]);_0x55744b[_0xdfff('0x48')]=_[_0xdfff('0x5e')](_0x2c8cfc['query']);_0x55744b[_0xdfff('0x52')]=_[_0xdfff('0x49')](_0x55744b[_0xdfff('0x47')],_0x55744b['query']);_0x15e241[_0xdfff('0x4a')]=_[_0xdfff('0x49')](_0x55744b[_0xdfff('0x47')],qs[_0xdfff('0x4b')](_0x2c8cfc['query'][_0xdfff('0x4b')]));_0x15e241[_0xdfff('0x4a')]=_0x15e241['attributes'][_0xdfff('0x4c')]?_0x15e241['attributes']:_0x55744b[_0xdfff('0x47')];_0x15e241[_0xdfff('0x4f')]=qs[_0xdfff('0x50')](_0x2c8cfc[_0xdfff('0x48')][_0xdfff('0x50')]);_0x15e241['where']=qs[_0xdfff('0x52')](_[_0xdfff('0x53')](_0x2c8cfc[_0xdfff('0x48')],_0x55744b['filters']));if(_0x2c8cfc[_0xdfff('0x48')][_0xdfff('0x54')]){_0x15e241[_0xdfff('0x51')]=_[_0xdfff('0x55')](_0x15e241['where'],{'$or':_['map'](_0x15e241['attributes'],function(_0x4b992e){var _0x11d1f9={};_0x11d1f9[_0x4b992e]={'$like':'%'+_0x2c8cfc[_0xdfff('0x48')][_0xdfff('0x54')]+'%'};return _0x11d1f9;})});}_0x15e241=_[_0xdfff('0x55')]({},_0x15e241,_0x2c8cfc[_0xdfff('0x5f')]);return _0x15b059[_0xdfff('0x8b')](_0x15e241);}})[_0xdfff('0x36')](function(_0x3f9a6e){if(_0x3f9a6e){_0x882718=_0x3f9a6e['length'];if(!_0x2c8cfc[_0xdfff('0x48')][_0xdfff('0x4d')](_0xdfff('0x4e'))){_0x15e241['limit']=qs[_0xdfff('0x2e')](_0x2c8cfc['query'][_0xdfff('0x2e')]);_0x15e241[_0xdfff('0x2d')]=qs['offset'](_0x2c8cfc['query'][_0xdfff('0x2d')]);}return _0x15b059['getApplications'](_0x15e241);}})[_0xdfff('0x36')](function(_0x37b67b){if(_0x37b67b){return _0x37b67b?{'count':_0x882718,'rows':_0x37b67b}:null;}})[_0xdfff('0x36')](respondWithResult(_0xf3da6d,null))['catch'](handleError(_0xf3da6d,null));};function Extension(_0x31732f,_0x399302,_0x2612fe,_0x55a167){this[_0xdfff('0x8c')]=_0xdfff('0x8d');this[_0xdfff('0x8e')]=_0x31732f[_0xdfff('0x8f')];this['app']=_0x55a167;this['type']=_0xdfff('0x90');this[_0xdfff('0x91')]=_0xdfff('0x92');this[_0xdfff('0x6d')]=_0x31732f['id'];this[_0xdfff('0x89')]=_0x399302;this[_0xdfff('0x93')]=_0x2612fe;}function createExtensionsReciveFax(_0xaedf3c){var _0x46f6bd=0x1;var _0x2829b9=[];_0x2829b9['push'](new Extension(_0xaedf3c,_0x46f6bd,'','Answer'));_0x46f6bd+=0x1;_0x2829b9[_0xdfff('0x94')](new Extension(_0xaedf3c,_0x46f6bd,_0xdfff('0x95'),'Set'));_0x46f6bd+=0x1;for(var _0x5357de in _0xaedf3c){if(_0xaedf3c[_0xdfff('0x4d')](_0x5357de)&&(_0x5357de==='ecm'||_0x5357de==='localstationid'||_0x5357de===_0xdfff('0x96')||_0x5357de===_0xdfff('0x97')||_0x5357de==='headerinfo'||_0x5357de===_0xdfff('0x98')||_0x5357de===_0xdfff('0x99')||_0x5357de==='modem'||_0x5357de===_0xdfff('0x9a'))){_0x2829b9[_0xdfff('0x94')](new Extension(_0xaedf3c,_0x46f6bd,_0xdfff('0x9b')+_0x5357de+')='+_0xaedf3c[_0x5357de],_0xdfff('0x9c')));_0x46f6bd+=0x1;}}_0x2829b9['push'](new Extension(_0xaedf3c,_0x46f6bd,'6',_0xdfff('0x9d')));_0x46f6bd+=0x1;_0x2829b9['push'](new Extension(_0xaedf3c,_0x46f6bd,'/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',_0xdfff('0x9e')));_0x46f6bd=0x0;return _0x2829b9;}exports[_0xdfff('0x9f')]=function(_0x95cf05,_0x1f33e6,_0x50a9ab){var _0x36a3a7;return db[_0xdfff('0x82')][_0xdfff('0x83')](function(_0x4f357b){return db['FaxAccount']['create'](_0x95cf05[_0xdfff('0x68')],{'transaction':_0x4f357b})[_0xdfff('0x36')](function(_0x566792){_0x36a3a7=_0x566792[_0xdfff('0x38')]({'plain':!![]});return db[_0xdfff('0xa0')][_0xdfff('0x87')](createExtensionsReciveFax(_0x36a3a7),{'transaction':_0x4f357b});});})[_0xdfff('0x36')](function(){return _0x36a3a7;})[_0xdfff('0x36')](respondWithResult(_0x1f33e6,null))['catch'](handleError(_0x1f33e6,null));};exports[_0xdfff('0xa1')]=function(_0x1b09fd,_0x4626d1,_0x23e9be){var _0x4016ba;return db[_0xdfff('0x82')][_0xdfff('0x83')](function(_0x40dda6){return db[_0xdfff('0x57')][_0xdfff('0x35')](_0x1b09fd[_0xdfff('0x68')],{'where':{'id':_0x1b09fd[_0xdfff('0x68')]['id']},'transaction':_0x40dda6})[_0xdfff('0x36')](function(_0x5ca19e){return db[_0xdfff('0xa0')][_0xdfff('0x37')]({'where':{'FaxAccountId':_0x1b09fd['body']['id']},'transaction':_0x40dda6})['then'](function(_0x196ca8){return db[_0xdfff('0xa0')]['bulkCreate'](createExtensionsReciveFax(_[_0xdfff('0x75')](_0x1b09fd['body'],['tech',_0xdfff('0x46'),_0xdfff('0xa2'),_0xdfff('0xa3'),_0xdfff('0xa4'),_0xdfff('0xa5')])),{'transaction':_0x40dda6});});});})[_0xdfff('0x36')](function(){return db[_0xdfff('0x57')][_0xdfff('0xa6')](_0x1b09fd[_0xdfff('0x68')]['id']);})[_0xdfff('0x36')](respondWithResult(_0x4626d1,null))[_0xdfff('0x29')](handleError(_0x4626d1,null));};exports['getMessages']=function(_0x51e274,_0x747ab6,_0x2b1f71){var _0x577505={'raw':!![],'where':{}};var _0xadf81e={};var _0x32eda8={'count':0x0,'rows':[]};return db[_0xdfff('0x57')][_0xdfff('0x6c')]({'where':{'id':_0x51e274[_0xdfff('0x5d')]['id']}})[_0xdfff('0x36')](handleEntityNotFound(_0x747ab6,null))[_0xdfff('0x36')](function(_0x20f2ea){if(_0x20f2ea){_0xadf81e[_0xdfff('0x47')]=_[_0xdfff('0x5e')](db[_0xdfff('0xa7')][_0xdfff('0x43')]);_0xadf81e[_0xdfff('0x48')]=_[_0xdfff('0x5e')](_0x51e274[_0xdfff('0x48')]);_0xadf81e['filters']=_[_0xdfff('0x49')](_0xadf81e[_0xdfff('0x47')],_0xadf81e[_0xdfff('0x48')]);_0x577505[_0xdfff('0x4a')]=_[_0xdfff('0x49')](_0xadf81e[_0xdfff('0x47')],qs[_0xdfff('0x4b')](_0x51e274[_0xdfff('0x48')][_0xdfff('0x4b')]));_0x577505[_0xdfff('0x4a')]=_0x577505[_0xdfff('0x4a')]['length']?_0x577505['attributes']:_0xadf81e[_0xdfff('0x47')];if(!_0x51e274[_0xdfff('0x48')][_0xdfff('0x4d')](_0xdfff('0x4e'))){_0x577505[_0xdfff('0x2e')]=qs[_0xdfff('0x2e')](_0x51e274['query'][_0xdfff('0x2e')]);_0x577505[_0xdfff('0x2d')]=qs[_0xdfff('0x2d')](_0x51e274[_0xdfff('0x48')][_0xdfff('0x2d')]);}_0x577505[_0xdfff('0x4f')]=qs[_0xdfff('0x50')](_0x51e274[_0xdfff('0x48')]['sort']);_0x577505['where']=qs[_0xdfff('0x52')](_['pick'](_0x51e274[_0xdfff('0x48')],_0xadf81e['filters']));_0x577505[_0xdfff('0x51')][_0xdfff('0x6d')]=_0x20f2ea['id'];if(_0x51e274[_0xdfff('0x48')][_0xdfff('0x54')]){_0x577505['where']=_[_0xdfff('0x55')](_0x577505[_0xdfff('0x51')],{'$or':_[_0xdfff('0x42')](_0x577505[_0xdfff('0x4a')],function(_0x4c5869){var _0x18c596={};_0x18c596[_0x4c5869]={'$like':'%'+_0x51e274[_0xdfff('0x48')][_0xdfff('0x54')]+'%'};return _0x18c596;})});}if(_0x51e274['query'][_0xdfff('0xa8')]){var _0x46f9b5=_0x51e274[_0xdfff('0x48')][_0xdfff('0xa8')][_0xdfff('0xa9')](',');var _0x9e39b6={};_0x9e39b6[_0x46f9b5[0x0]]={'$gte':moment(_0x46f9b5[0x1])[_0xdfff('0xaa')](_0xdfff('0xab'))};_0x577505[_0xdfff('0x51')]=_['merge'](_0x577505['where'],_0x9e39b6);}_0x577505=_[_0xdfff('0x55')]({},_0x577505,_0x51e274[_0xdfff('0x5f')]);return db[_0xdfff('0xa7')][_0xdfff('0x30')]({'where':_0x577505['where']})['then'](function(_0x5be817){_0x32eda8['count']=_0x5be817;if(_0x51e274['query']['includeAll']){_0x577505[_0xdfff('0x59')]=[{'all':!![]}];}return db['FaxMessage']['findAll'](_0x577505);})[_0xdfff('0x36')](function(_0x144a0e){_0x32eda8['rows']=_0x144a0e;return _0x32eda8;});}})['then'](respondWithFilteredResult(_0x747ab6,_0x577505))[_0xdfff('0x29')](handleError(_0x747ab6,null));};exports['send']=function(_0x789046,_0x2261b1,_0x305658){var _0x1a1ed3,_0x3f6985={},_0x380b97;if(_0x789046[_0xdfff('0x68')]['to']){_0x380b97=_0x789046[_0xdfff('0x68')]['to'][0x0];}return db[_0xdfff('0x57')][_0xdfff('0x60')]({'where':{'id':_0x789046[_0xdfff('0x5d')]['id']},'include':[{'model':db[_0xdfff('0xac')],'as':_0xdfff('0xad'),'include':[{'model':db[_0xdfff('0x78')],'as':_0xdfff('0xae'),'where':{'fax':_0x380b97},'limit':0x1,'order':[[_0xdfff('0xa3'),_0xdfff('0xaf')]]}]}]})['then'](handleEntityNotFound(_0x2261b1,null))['then'](function(_0x18d8a4){_0x1a1ed3=_0x18d8a4;if(_0x789046[_0xdfff('0x68')][_0xdfff('0xb0')]&&_0x789046[_0xdfff('0x68')]['attachments']['length']){for(var _0x46b4b0=0x0;_0x46b4b0<_0x789046['body'][_0xdfff('0xb0')][_0xdfff('0x4c')];_0x46b4b0+=0x1){_0x789046[_0xdfff('0x68')]['attachments'][_0x46b4b0]={'filename':_0x789046[_0xdfff('0x68')][_0xdfff('0xb0')][_0x46b4b0][_0xdfff('0x3d')],'id':_0x789046[_0xdfff('0x68')][_0xdfff('0xb0')][_0x46b4b0]['id'],'path':path['join'](config[_0xdfff('0xb1')],'server/files/attachments',_0x789046[_0xdfff('0x68')][_0xdfff('0xb0')][_0x46b4b0][_0xdfff('0xb2')])};}}return respondWithRpcPromise(_0xdfff('0xb3'),_0xdfff('0xb3'),{'FaxAccountId':_['isNil'](_0x789046[_0xdfff('0x5d')]['id'])?undefined:_0x789046[_0xdfff('0x5d')]['id'],'path':_[_0xdfff('0xb4')](_0x789046[_0xdfff('0x68')]['attachments'][0x0][_0xdfff('0x8')])?undefined:_0x789046[_0xdfff('0x68')][_0xdfff('0xb0')][0x0][_0xdfff('0x8')],'fax':_[_0xdfff('0xb4')](_0x789046['body']['to'][0x0])?undefined:_0x789046[_0xdfff('0x68')]['to'][0x0]},client9002);})['then'](function(){if(_0x1a1ed3){if(_[_0xdfff('0xb4')](_0x789046[_0xdfff('0x68')][_0xdfff('0xb5')])){_0x789046[_0xdfff('0x68')][_0xdfff('0xb5')]=util[_0xdfff('0xaa')]('\x22%s\x22\x20<%s>',_0x1a1ed3[_0xdfff('0x3d')],_0x1a1ed3[_0xdfff('0xb6')]);}if(_0x1a1ed3['List']){if(_0x1a1ed3[_0xdfff('0xad')][_0xdfff('0xae')][_0xdfff('0x4c')]){return _0x1a1ed3['List']['Contacts'][0x0];}else{return db[_0xdfff('0x78')][_0xdfff('0x61')](_[_0xdfff('0xb7')](_0x789046['body'],{'firstName':_0x789046[_0xdfff('0x68')]['to'][0x0],'phone':_0x789046[_0xdfff('0x68')]['to'][0x0],'fax':_0x789046['body']['to'][0x0],'ListId':_0x1a1ed3[_0xdfff('0xa5')]}));}}else{throw new Error('List\x20not\x20found');}}else{throw new Error(_0xdfff('0xb8'));}})[_0xdfff('0x36')](function(_0x24e5ce){if(_0x24e5ce){return db[_0xdfff('0x77')][_0xdfff('0x60')]({'where':{'ContactId':_0x24e5ce['id'],'closed':![],'FaxAccountId':_0x1a1ed3['id']}})[_0xdfff('0x36')](function(_0x3d783c){if(_0x3d783c){return[_0x3d783c,![]];}return db[_0xdfff('0x77')][_0xdfff('0x61')]({'UserId':_0x789046['user']['id'],'ContactId':_0x24e5ce['id'],'FaxAccountId':_0x1a1ed3['id'],'fax':_0x789046[_0xdfff('0x68')]['to'][0x0],'firstMsgDirection':_0xdfff('0xb9'),'Messages':[_[_0xdfff('0x55')](_0x789046[_0xdfff('0x68')],{'read':![],'body':_0x789046[_0xdfff('0x68')]['attachments'][0x0][_0xdfff('0xba')],'FaxAccountId':_0x1a1ed3['id'],'UserId':_0x789046[_0xdfff('0x62')]['id'],'ContactId':_0x24e5ce['id'],'AttachmentId':_0x789046['body']['attachments'][0x0]['id']})]},{'include':[{'model':db[_0xdfff('0xa7')],'as':_0xdfff('0xbb')}]})[_0xdfff('0x36')](function(_0x2089a7){return[_0x2089a7,!![]];});});}else{throw new Error('Contact\x20not\x20found');}})[_0xdfff('0xbc')](function(_0x21725f,_0x5519f6){if(_0x5519f6){return _0x21725f;}return db[_0xdfff('0xa7')]['create']({'direction':_0xdfff('0xb9'),'read':![],'body':_0x789046[_0xdfff('0x68')][_0xdfff('0xb0')][0x0][_0xdfff('0xba')],'FaxAccountId':_0x1a1ed3['id'],'FaxInteractionId':_0x21725f['id'],'UserId':_0x789046[_0xdfff('0x62')]['id'],'ContactId':_0x21725f['ContactId'],'AttachmentId':_0x789046['body'][_0xdfff('0xb0')][0x0]['id']})[_0xdfff('0x36')](function(_0x2cfd0a){_0x21725f[_0xdfff('0xbd')][_0xdfff('0xbb')]=[];_0x21725f[_0xdfff('0xbd')][_0xdfff('0xbb')]['push'](_0x2cfd0a[_0xdfff('0xbd')]);return _0x21725f;});})[_0xdfff('0x36')](function(_0x2c832e){respondWithRpcPromise(_0xdfff('0xbe'),_0xdfff('0xbe'),{'FaxAccountId':_['isNil'](_0x789046['params']['id'])?undefined:_0x789046['params']['id'],'path':_[_0xdfff('0xb4')](_0x789046[_0xdfff('0x68')][_0xdfff('0xb0')][0x0][_0xdfff('0x8')])?undefined:_0x789046['body']['attachments'][0x0]['path'],'fax':_['isNil'](_0x789046[_0xdfff('0x68')]['to'][0x0])?undefined:_0x789046[_0xdfff('0x68')]['to'][0x0],'AttachmentId':_0x789046['body'][_0xdfff('0xb0')][0x0]['id']},client9002)[_0xdfff('0x36')](function(_0x17a617){logger['info'](_0xdfff('0xbf'),_0x17a617);})[_0xdfff('0x29')](function(_0x2af31c){logger[_0xdfff('0x22')](_0xdfff('0xbf'),_0x2af31c);});return _0x2c832e;})[_0xdfff('0x36')](respondWithResult(_0x2261b1,null))[_0xdfff('0x29')](handleError(_0x2261b1,null));};exports[_0xdfff('0xc0')]=function(_0x5c36b3,_0x5ba25d,_0x23bb8b){return db[_0xdfff('0x57')][_0xdfff('0x60')]({'where':{'id':_0x5c36b3[_0xdfff('0x5d')]['id']}})[_0xdfff('0x36')](handleEntityNotFound(_0x5ba25d,null))[_0xdfff('0x36')](function(_0x3f095b){if(_0x3f095b){return _0x3f095b[_0xdfff('0xc0')](_0x5c36b3[_0xdfff('0x68')]['ids'],_['omit'](_0x5c36b3[_0xdfff('0x68')],['ids','id'])||{})[_0xdfff('0xbc')](function(_0x43aaa7){for(var _0x5d66b1=0x0;_0x5d66b1<_0x5c36b3[_0xdfff('0x68')][_0xdfff('0x70')]['length'];_0x5d66b1+=0x1){socket[_0xdfff('0xc1')](_0xdfff('0xc2'),{'UserId':Number(_0x5c36b3[_0xdfff('0x68')]['ids'][_0x5d66b1]),'FaxAccountId':Number(_0x5c36b3['params']['id'])});}return _0x43aaa7;});}})['then'](respondWithResult(_0x5ba25d,null))['catch'](handleError(_0x5ba25d,null));};exports[_0xdfff('0xc3')]=function(_0x23277a,_0x55305b,_0x55783b){return db[_0xdfff('0x57')][_0xdfff('0x60')]({'where':{'id':_0x23277a[_0xdfff('0x5d')]['id']}})[_0xdfff('0x36')](handleEntityNotFound(_0x55305b,null))['then'](function(_0x12d06){if(_0x12d06){return _0x12d06[_0xdfff('0xc3')](_0x23277a[_0xdfff('0x48')]['ids'])[_0xdfff('0x36')](function(){if(_[_0xdfff('0xc4')](_0x23277a['query']['ids'])){for(var _0x556e28=0x0;_0x556e28<_0x23277a[_0xdfff('0x48')][_0xdfff('0x70')][_0xdfff('0x4c')];_0x556e28+=0x1){socket[_0xdfff('0xc1')](_0xdfff('0xc5'),{'UserId':Number(_0x23277a[_0xdfff('0x48')]['ids'][_0x556e28]),'FaxAccountId':Number(_0x23277a[_0xdfff('0x5d')]['id'])});}}else{socket[_0xdfff('0xc1')]('userFaxAccount:remove',{'UserId':Number(_0x23277a[_0xdfff('0x48')][_0xdfff('0x70')]),'FaxAccountId':Number(_0x23277a['params']['id'])});}});}})[_0xdfff('0x36')](respondWithStatusCode(_0x55305b,null))[_0xdfff('0x29')](handleError(_0x55305b,null));};exports[_0xdfff('0xc6')]=function(_0xdcac68,_0x3f9064,_0x17b854){var _0x5dd68d={};var _0x4d6680={};var _0x386542;var _0x5c0b7d;return db[_0xdfff('0x57')]['findOne']({'where':{'id':_0xdcac68['params']['id']}})[_0xdfff('0x36')](handleEntityNotFound(_0x3f9064,null))[_0xdfff('0x36')](function(_0x10f54f){if(_0x10f54f){_0x386542=_0x10f54f;_0x4d6680[_0xdfff('0x47')]=_[_0xdfff('0x5e')](db[_0xdfff('0x7a')][_0xdfff('0x43')]);_0x4d6680[_0xdfff('0x48')]=_['keys'](_0xdcac68[_0xdfff('0x48')]);_0x4d6680[_0xdfff('0x52')]=_['intersection'](_0x4d6680[_0xdfff('0x47')],_0x4d6680[_0xdfff('0x48')]);_0x5dd68d[_0xdfff('0x4a')]=_[_0xdfff('0x49')](_0x4d6680['model'],qs[_0xdfff('0x4b')](_0xdcac68['query'][_0xdfff('0x4b')]));_0x5dd68d[_0xdfff('0x4a')]=_0x5dd68d[_0xdfff('0x4a')][_0xdfff('0x4c')]?_0x5dd68d[_0xdfff('0x4a')]:_0x4d6680[_0xdfff('0x47')];_0x5dd68d['order']=qs[_0xdfff('0x50')](_0xdcac68['query'][_0xdfff('0x50')]);_0x5dd68d['where']=qs[_0xdfff('0x52')](_[_0xdfff('0x53')](_0xdcac68['query'],_0x4d6680['filters']));if(_0xdcac68[_0xdfff('0x48')][_0xdfff('0x54')]){_0x5dd68d['where']=_[_0xdfff('0x55')](_0x5dd68d[_0xdfff('0x51')],{'$or':_[_0xdfff('0x42')](_0x5dd68d['attributes'],function(_0x4d99bd){var _0x301c96={};_0x301c96[_0x4d99bd]={'$like':'%'+_0xdcac68[_0xdfff('0x48')][_0xdfff('0x54')]+'%'};return _0x301c96;})});}_0x5dd68d=_[_0xdfff('0x55')]({},_0x5dd68d,_0xdcac68[_0xdfff('0x5f')]);return _0x386542[_0xdfff('0xc6')](_0x5dd68d);}})['then'](function(_0x544188){if(_0x544188){_0x5c0b7d=_0x544188[_0xdfff('0x4c')];if(!_0xdcac68[_0xdfff('0x48')][_0xdfff('0x4d')](_0xdfff('0x4e'))){_0x5dd68d['limit']=qs['limit'](_0xdcac68[_0xdfff('0x48')][_0xdfff('0x2e')]);_0x5dd68d[_0xdfff('0x2d')]=qs[_0xdfff('0x2d')](_0xdcac68[_0xdfff('0x48')]['offset']);}return _0x386542['getAgents'](_0x5dd68d);}})[_0xdfff('0x36')](function(_0x7f6785){if(_0x7f6785){return _0x7f6785?{'count':_0x5c0b7d,'rows':_0x7f6785}:null;}})[_0xdfff('0x36')](respondWithResult(_0x3f9064,null))[_0xdfff('0x29')](handleError(_0x3f9064,null));};
\ No newline at end of file
+var _0x232b=['request','then','info','FaxAccount,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','sendStatus','status','end','undefined','limit','count','set','Content-Range','json','apply','save','update','destroy','get','FaxAccounts','stack','name','send','index','map','FaxAccount','rawAttributes','type','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','offset','order','sort','where','merge','options','includeAll','include','rows','show','params','Pause','keys','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','mandatoryDispositionPause','describe','addDisposition','FaxAccountId','Disposition','getDispositions','findOne','findAll','removeDispositions','addAnswer','CannedAnswer','filter','removeAnswers','ids','addInteraction','FaxInteraction','omit','CmContact','Contact','User','Owner','Tag','Tags','color','tag','addApplications','sequelize','transaction','Transaction','FaxApplication','bulkCreate','findAndCountAll','priority','getApplications','pick','context','from-voip-provider','exten','localstationid','app','system','description','Fax\x20Extension','appdata','push','Answer','gateway','faxdetect','headerinfo','maxrate','minrate','modem','t38timeout','FAXOPT(','Set','Wait','ReceiveFax','addAccountApplications','VoiceExtension','updateAccountApplications','createdAt','updatedAt','TrunkId','ListId','findById','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','FaxMessage','CmList','List','DESC','attachments','join','root','server/files/attachments','basename','CheckAfterSend','isNil','from','\x22%s\x22\x20<%s>','Contacts','List\x20not\x20found','Send\x20Fax\x20failed','out','Messages','Contact\x20not\x20found','spread','ContactId','dataValues','SendFax','SendFaxRpc,\x20%s','addAgents','emit','userFaxAccount:save','removeAgents','isArray','userFaxAccount:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','ejs','fs-extra','squel','crypto','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','register','jayson/promise','client','http'];(function(_0xfc1d80,_0x4dc0aa){var _0x347565=function(_0x580ddb){while(--_0x580ddb){_0xfc1d80['push'](_0xfc1d80['shift']());}};_0x347565(++_0x4dc0aa);}(_0x232b,0x16f));var _0xb232=function(_0x368161,_0x56df36){_0x368161=_0x368161-0x0;var _0x5f50e2=_0x232b[_0x368161];return _0x5f50e2;};'use strict';var emlformat=require(_0xb232('0x0'));var rimraf=require(_0xb232('0x1'));var zipdir=require(_0xb232('0x2'));var jsonpatch=require(_0xb232('0x3'));var rp=require(_0xb232('0x4'));var moment=require('moment');var BPromise=require(_0xb232('0x5'));var Mustache=require('mustache');var util=require(_0xb232('0x6'));var path=require(_0xb232('0x7'));var sox=require(_0xb232('0x8'));var csv=require('to-csv');var ejs=require(_0xb232('0x9'));var fs=require('fs');var fs_extra=require(_0xb232('0xa'));var _=require('lodash');var squel=require(_0xb232('0xb'));var crypto=require(_0xb232('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xb232('0xd'));var toCsv=require(_0xb232('0xe'));var querystring=require(_0xb232('0xf'));var Papa=require(_0xb232('0x10'));var Redis=require('ioredis');var authService=require(_0xb232('0x11'));var qs=require(_0xb232('0x12'));var as=require(_0xb232('0x13'));var hardwareService=require(_0xb232('0x14'));var logger=require(_0xb232('0x15'))(_0xb232('0x16'));var utils=require(_0xb232('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0xb232('0x18'));var db=require(_0xb232('0x19'))['db'];config[_0xb232('0x1a')]=_[_0xb232('0x1b')](config[_0xb232('0x1a')],{'host':'localhost','port':0x18eb});var socket=require(_0xb232('0x1c'))(new Redis(config[_0xb232('0x1a')]));require('./faxAccount.socket')[_0xb232('0x1d')](socket);var jayson=require(_0xb232('0x1e'));var client=jayson[_0xb232('0x1f')][_0xb232('0x20')]({'port':0x232c});var client9002=jayson[_0xb232('0x1f')][_0xb232('0x20')]({'port':0x232a});function respondWithRpcPromise(_0x293af5,_0x537ed8,_0x368f34,_0x1f7e6f){return new BPromise(function(_0x308434,_0xe08b9e){var _0x3b73ff=_0x1f7e6f||client;return _0x3b73ff[_0xb232('0x21')](_0x293af5,_0x368f34)[_0xb232('0x22')](function(_0x1b9e0d){logger[_0xb232('0x23')](_0xb232('0x24'),_0x537ed8,'request\x20sent');logger[_0xb232('0x25')]('FaxAccount,\x20%s,\x20%s,\x20%s',_0x537ed8,'request\x20sent',JSON[_0xb232('0x26')](_0x1b9e0d));if(_0x1b9e0d[_0xb232('0x27')]){if(_0x1b9e0d[_0xb232('0x27')][_0xb232('0x28')]===0x1f4){logger[_0xb232('0x27')]('FaxAccount,\x20%s,\x20%s',_0x537ed8,_0x1b9e0d[_0xb232('0x27')][_0xb232('0x29')]);return _0xe08b9e(_0x1b9e0d[_0xb232('0x27')][_0xb232('0x29')]);}logger[_0xb232('0x27')](_0xb232('0x24'),_0x537ed8,_0x1b9e0d['error'][_0xb232('0x29')]);return _0x308434(_0x1b9e0d['error']['message']);}else{logger['info'](_0xb232('0x24'),_0x537ed8,_0xb232('0x2a'));_0x308434(_0x1b9e0d[_0xb232('0x2b')][_0xb232('0x29')]);}})[_0xb232('0x2c')](function(_0x3c2128){logger['error'](_0xb232('0x24'),_0x537ed8,_0x3c2128);_0xe08b9e(_0x3c2128);});});}function respondWithStatusCode(_0x1357fc,_0x5cc6dc){_0x5cc6dc=_0x5cc6dc||0xcc;return function(_0x10bc48){if(_0x10bc48){return _0x1357fc[_0xb232('0x2d')](_0x5cc6dc);}return _0x1357fc[_0xb232('0x2e')](_0x5cc6dc)[_0xb232('0x2f')]();};}function respondWithResult(_0x2b6280,_0x11e138){_0x11e138=_0x11e138||0xc8;return function(_0x2f5212){if(_0x2f5212){return _0x2b6280['status'](_0x11e138)['json'](_0x2f5212);}};}function respondWithFilteredResult(_0x3ecd97,_0x4e036d){return function(_0x5525fc){if(_0x5525fc){var _0x26585c=typeof _0x4e036d['offset']===_0xb232('0x30')&&typeof _0x4e036d[_0xb232('0x31')]===_0xb232('0x30');var _0x261e66=_0x5525fc[_0xb232('0x32')];var _0x1866e3=_0x26585c?0x0:_0x4e036d['offset'];var _0x5d7469=_0x26585c?_0x5525fc[_0xb232('0x32')]:_0x4e036d['offset']+_0x4e036d[_0xb232('0x31')];var _0x1b7373;if(_0x5d7469>=_0x261e66){_0x5d7469=_0x261e66;_0x1b7373=0xc8;}else{_0x1b7373=0xce;}_0x3ecd97[_0xb232('0x2e')](_0x1b7373);return _0x3ecd97[_0xb232('0x33')](_0xb232('0x34'),_0x1866e3+'-'+_0x5d7469+'/'+_0x261e66)[_0xb232('0x35')](_0x5525fc);}return null;};}function patchUpdates(_0x2709fa){return function(_0x9a7101){try{jsonpatch[_0xb232('0x36')](_0x9a7101,_0x2709fa,!![]);}catch(_0x14bec6){return BPromise['reject'](_0x14bec6);}return _0x9a7101[_0xb232('0x37')]();};}function saveUpdates(_0x11e567,_0x1a1a77){return function(_0x160f97){if(_0x160f97){return _0x160f97[_0xb232('0x38')](_0x11e567)[_0xb232('0x22')](function(_0x3a66ba){return _0x3a66ba;});}return null;};}function removeEntity(_0x3f4a8c,_0x191c3d){return function(_0x454b89){if(_0x454b89){return _0x454b89[_0xb232('0x39')]()['then'](function(){var _0x143d2f=_0x454b89[_0xb232('0x3a')]({'plain':!![]});var _0x374c43=_0xb232('0x3b');return db['UserProfileResource'][_0xb232('0x39')]({'where':{'type':_0x374c43,'resourceId':_0x143d2f['id']}})[_0xb232('0x22')](function(){return _0x454b89;});})[_0xb232('0x22')](function(){_0x3f4a8c[_0xb232('0x2e')](0xcc)[_0xb232('0x2f')]();});}};}function handleEntityNotFound(_0x56aacf,_0x4510b0){return function(_0x52d1da){if(!_0x52d1da){_0x56aacf[_0xb232('0x2d')](0x194);}return _0x52d1da;};}function handleError(_0x450ee6,_0x1dc28e){_0x1dc28e=_0x1dc28e||0x1f4;return function(_0x16f3f8){logger[_0xb232('0x27')](_0x16f3f8[_0xb232('0x3c')]);if(_0x16f3f8[_0xb232('0x3d')]){delete _0x16f3f8[_0xb232('0x3d')];}_0x450ee6[_0xb232('0x2e')](_0x1dc28e)[_0xb232('0x3e')](_0x16f3f8);};}exports[_0xb232('0x3f')]=function(_0x2d32b1,_0xf8752f){var _0x38e3f2={'include':[{'model':db['Pause'],'as':'mandatoryDispositionPause'}]},_0x45434b={},_0x161f7a={'count':0x0,'rows':[]};var _0x44d454=_[_0xb232('0x40')](db[_0xb232('0x41')][_0xb232('0x42')],function(_0x3ca4c6){return{'name':_0x3ca4c6['fieldName'],'type':_0x3ca4c6[_0xb232('0x43')][_0xb232('0x44')]};});_0x45434b[_0xb232('0x45')]=_[_0xb232('0x40')](_0x44d454,_0xb232('0x3d'));_0x45434b[_0xb232('0x46')]=_['keys'](_0x2d32b1[_0xb232('0x46')]);_0x45434b[_0xb232('0x47')]=_['intersection'](_0x45434b[_0xb232('0x45')],_0x45434b['query']);_0x38e3f2[_0xb232('0x48')]=_[_0xb232('0x49')](_0x45434b[_0xb232('0x45')],qs[_0xb232('0x4a')](_0x2d32b1[_0xb232('0x46')][_0xb232('0x4a')]));_0x38e3f2[_0xb232('0x48')]=_0x38e3f2[_0xb232('0x48')][_0xb232('0x4b')]?_0x38e3f2['attributes']:_0x45434b[_0xb232('0x45')];if(!_0x2d32b1[_0xb232('0x46')][_0xb232('0x4c')](_0xb232('0x4d'))){_0x38e3f2['limit']=qs[_0xb232('0x31')](_0x2d32b1[_0xb232('0x46')][_0xb232('0x31')]);_0x38e3f2[_0xb232('0x4e')]=qs[_0xb232('0x4e')](_0x2d32b1[_0xb232('0x46')][_0xb232('0x4e')]);}_0x38e3f2[_0xb232('0x4f')]=qs[_0xb232('0x50')](_0x2d32b1['query'][_0xb232('0x50')]);_0x38e3f2[_0xb232('0x51')]=qs[_0xb232('0x47')](_['pick'](_0x2d32b1['query'],_0x45434b[_0xb232('0x47')]),_0x44d454);if(_0x2d32b1['query']['filter']){_0x38e3f2[_0xb232('0x51')]=_['merge'](_0x38e3f2[_0xb232('0x51')],{'$or':_[_0xb232('0x40')](_0x44d454,function(_0x33bc8e){if(_0x33bc8e[_0xb232('0x43')]!=='VIRTUAL'){var _0x18e09c={};_0x18e09c[_0x33bc8e['name']]={'$like':'%'+_0x2d32b1[_0xb232('0x46')]['filter']+'%'};return _0x18e09c;}})});}_0x38e3f2=_[_0xb232('0x52')]({},_0x38e3f2,_0x2d32b1[_0xb232('0x53')]);var _0x4be575={'where':_0x38e3f2[_0xb232('0x51')]};return db[_0xb232('0x41')][_0xb232('0x32')](_0x4be575)[_0xb232('0x22')](function(_0x364beb){_0x161f7a[_0xb232('0x32')]=_0x364beb;if(_0x2d32b1[_0xb232('0x46')][_0xb232('0x54')]){_0x38e3f2[_0xb232('0x55')]=[{'all':!![]}];}return db[_0xb232('0x41')]['findAll'](_0x38e3f2);})['then'](function(_0x847fbf){_0x161f7a[_0xb232('0x56')]=_0x847fbf;return _0x161f7a;})[_0xb232('0x22')](respondWithFilteredResult(_0xf8752f,_0x38e3f2))[_0xb232('0x2c')](handleError(_0xf8752f,null));};exports[_0xb232('0x57')]=function(_0x10029c,_0x25423b){var _0x3f530a={'raw':![],'where':{'id':_0x10029c[_0xb232('0x58')]['id']},'include':[{'model':db[_0xb232('0x59')],'as':'mandatoryDispositionPause'}]},_0x16641c={};_0x16641c[_0xb232('0x45')]=_[_0xb232('0x5a')](db[_0xb232('0x41')][_0xb232('0x42')]);_0x16641c[_0xb232('0x46')]=_['keys'](_0x10029c['query']);_0x16641c[_0xb232('0x47')]=_['intersection'](_0x16641c[_0xb232('0x45')],_0x16641c['query']);_0x3f530a[_0xb232('0x48')]=_[_0xb232('0x49')](_0x16641c[_0xb232('0x45')],qs[_0xb232('0x4a')](_0x10029c[_0xb232('0x46')]['fields']));_0x3f530a[_0xb232('0x48')]=_0x3f530a[_0xb232('0x48')][_0xb232('0x4b')]?_0x3f530a['attributes']:_0x16641c['model'];if(_0x10029c['query'][_0xb232('0x54')]){_0x3f530a[_0xb232('0x55')]=[{'all':!![]}];}_0x3f530a=_[_0xb232('0x52')]({},_0x3f530a,_0x10029c[_0xb232('0x53')]);return db[_0xb232('0x41')]['find'](_0x3f530a)[_0xb232('0x22')](handleEntityNotFound(_0x25423b,null))[_0xb232('0x22')](respondWithResult(_0x25423b,null))['catch'](handleError(_0x25423b,null));};exports[_0xb232('0x5b')]=function(_0x2fb69c,_0xda93d5){return db[_0xb232('0x41')][_0xb232('0x5b')](_0x2fb69c[_0xb232('0x5c')],{})['then'](function(_0x24dcec){var _0x4188e2=_0x2fb69c[_0xb232('0x5d')]['get']({'plain':!![]});if(!_0x4188e2)throw new Error(_0xb232('0x5e'));if(_0x4188e2[_0xb232('0x5f')]===_0xb232('0x5d')){var _0x2d213f=_0x24dcec[_0xb232('0x3a')]({'plain':!![]});var _0x3d701a=_0xb232('0x3b');return db[_0xb232('0x60')][_0xb232('0x61')]({'where':{'name':_0x3d701a,'userProfileId':_0x4188e2['userProfileId']},'raw':!![]})['then'](function(_0x13f618){if(_0x13f618&&_0x13f618[_0xb232('0x62')]===0x0){return db['UserProfileResource'][_0xb232('0x5b')]({'name':_0x2d213f[_0xb232('0x3d')],'resourceId':_0x2d213f['id'],'type':_0x13f618[_0xb232('0x3d')],'sectionId':_0x13f618['id']},{})[_0xb232('0x22')](function(){return _0x24dcec;});}else{return _0x24dcec;}})[_0xb232('0x2c')](function(_0x532740){logger[_0xb232('0x27')](_0xb232('0x63'),_0x532740);throw _0x532740;});}return _0x24dcec;})['then'](respondWithResult(_0xda93d5,0xc9))['catch'](handleError(_0xda93d5,null));};exports['update']=function(_0x9a4a22,_0x5953fe){if(_0x9a4a22['body']['id']){delete _0x9a4a22[_0xb232('0x5c')]['id'];}return db[_0xb232('0x41')]['find']({'where':{'id':_0x9a4a22['params']['id']},'include':[{'model':db[_0xb232('0x59')],'as':_0xb232('0x64')}]})[_0xb232('0x22')](handleEntityNotFound(_0x5953fe,null))[_0xb232('0x22')](saveUpdates(_0x9a4a22[_0xb232('0x5c')],null))['then'](respondWithResult(_0x5953fe,null))['catch'](handleError(_0x5953fe,null));};exports['destroy']=function(_0x42f597,_0x129a09){return db[_0xb232('0x41')][_0xb232('0x61')]({'where':{'id':_0x42f597[_0xb232('0x58')]['id']}})[_0xb232('0x22')](handleEntityNotFound(_0x129a09,null))['then'](removeEntity(_0x129a09,null))[_0xb232('0x2c')](handleError(_0x129a09,null));};exports[_0xb232('0x65')]=function(_0x3f5bf3,_0x24d430){return db[_0xb232('0x41')][_0xb232('0x65')]()[_0xb232('0x22')](respondWithResult(_0x24d430,null))[_0xb232('0x2c')](handleError(_0x24d430,null));};exports[_0xb232('0x66')]=function(_0x3097ae,_0x45946d,_0x36d8d7){if(_0x3097ae[_0xb232('0x5c')]['id']){delete _0x3097ae[_0xb232('0x5c')]['id'];}return db[_0xb232('0x41')][_0xb232('0x61')]({'where':{'id':_0x3097ae[_0xb232('0x58')]['id']}})[_0xb232('0x22')](handleEntityNotFound(_0x45946d,null))['then'](function(_0x411145){if(_0x411145){_0x3097ae[_0xb232('0x5c')][_0xb232('0x67')]=_0x411145['id'];return db[_0xb232('0x68')][_0xb232('0x5b')](_0x3097ae[_0xb232('0x5c')]);}})['then'](respondWithResult(_0x45946d,null))[_0xb232('0x2c')](handleError(_0x45946d,null));};exports[_0xb232('0x69')]=function(_0xd63cfd,_0x44f326,_0x49af64){var _0x347bb8={'raw':![],'where':{}};var _0x1858c1={};var _0x5fac7f={'count':0x0,'rows':[]};return db[_0xb232('0x41')][_0xb232('0x6a')]({'where':{'id':_0xd63cfd[_0xb232('0x58')]['id']}})['then'](handleEntityNotFound(_0x44f326,null))['then'](function(_0x941749){if(_0x941749){_0x1858c1[_0xb232('0x45')]=_[_0xb232('0x5a')](db[_0xb232('0x68')]['rawAttributes']);_0x1858c1['query']=_[_0xb232('0x5a')](_0xd63cfd[_0xb232('0x46')]);_0x1858c1[_0xb232('0x47')]=_[_0xb232('0x49')](_0x1858c1[_0xb232('0x45')],_0x1858c1[_0xb232('0x46')]);_0x347bb8[_0xb232('0x48')]=_[_0xb232('0x49')](_0x1858c1[_0xb232('0x45')],qs[_0xb232('0x4a')](_0xd63cfd[_0xb232('0x46')][_0xb232('0x4a')]));_0x347bb8[_0xb232('0x48')]=_0x347bb8[_0xb232('0x48')][_0xb232('0x4b')]?_0x347bb8[_0xb232('0x48')]:_0x1858c1['model'];if(!_0xd63cfd['query'][_0xb232('0x4c')]('nolimit')){_0x347bb8[_0xb232('0x31')]=qs[_0xb232('0x31')](_0xd63cfd[_0xb232('0x46')][_0xb232('0x31')]);_0x347bb8[_0xb232('0x4e')]=qs['offset'](_0xd63cfd[_0xb232('0x46')][_0xb232('0x4e')]);}_0x347bb8['order']=qs['sort'](_0xd63cfd[_0xb232('0x46')][_0xb232('0x50')]);_0x347bb8[_0xb232('0x51')]=qs[_0xb232('0x47')](_['pick'](_0xd63cfd[_0xb232('0x46')],_0x1858c1[_0xb232('0x47')]));_0x347bb8[_0xb232('0x51')]['FaxAccountId']=_0x941749['id'];if(_0xd63cfd[_0xb232('0x46')]['filter']){_0x347bb8['where']=_['merge'](_0x347bb8[_0xb232('0x51')],{'$or':_[_0xb232('0x40')](_0x347bb8[_0xb232('0x48')],function(_0x22bf88){var _0x3cf806={};_0x3cf806[_0x22bf88]={'$like':'%'+_0xd63cfd['query']['filter']+'%'};return _0x3cf806;})});}_0x347bb8=_[_0xb232('0x52')]({},_0x347bb8,_0xd63cfd['options']);return db[_0xb232('0x68')][_0xb232('0x32')]({'where':_0x347bb8[_0xb232('0x51')]})[_0xb232('0x22')](function(_0x5ecd95){_0x5fac7f[_0xb232('0x32')]=_0x5ecd95;if(_0xd63cfd[_0xb232('0x46')]['includeAll']){_0x347bb8[_0xb232('0x55')]=[{'all':!![]}];}return db[_0xb232('0x68')][_0xb232('0x6b')](_0x347bb8);})[_0xb232('0x22')](function(_0x2d9b86){_0x5fac7f[_0xb232('0x56')]=_0x2d9b86;return _0x5fac7f;});}})[_0xb232('0x22')](respondWithFilteredResult(_0x44f326,_0x347bb8))[_0xb232('0x2c')](handleError(_0x44f326,null));};exports[_0xb232('0x6c')]=function(_0x5ec70a,_0x19f0fb,_0x3db168){return db[_0xb232('0x41')][_0xb232('0x61')]({'where':{'id':_0x5ec70a[_0xb232('0x58')]['id']}})[_0xb232('0x22')](handleEntityNotFound(_0x19f0fb,null))[_0xb232('0x22')](function(_0x3d6981){if(_0x3d6981){return _0x3d6981['removeDispositions'](_0x5ec70a[_0xb232('0x46')]['ids']);}})[_0xb232('0x22')](respondWithStatusCode(_0x19f0fb,null))[_0xb232('0x2c')](handleError(_0x19f0fb,null));};exports[_0xb232('0x6d')]=function(_0x368cf5,_0x14356c,_0x5f2a64){if(_0x368cf5['body']['id']){delete _0x368cf5[_0xb232('0x5c')]['id'];}return db[_0xb232('0x41')][_0xb232('0x61')]({'where':{'id':_0x368cf5[_0xb232('0x58')]['id']}})[_0xb232('0x22')](handleEntityNotFound(_0x14356c,null))[_0xb232('0x22')](function(_0x3e90b3){if(_0x3e90b3){_0x368cf5['body'][_0xb232('0x67')]=_0x3e90b3['id'];return db[_0xb232('0x6e')][_0xb232('0x5b')](_0x368cf5[_0xb232('0x5c')]);}})[_0xb232('0x22')](respondWithResult(_0x14356c,null))[_0xb232('0x2c')](handleError(_0x14356c,null));};exports['getAnswers']=function(_0x7093f9,_0x324c56,_0x2904ce){var _0x37eb18={'raw':![],'where':{}};var _0x59546b={};var _0x394c18={'count':0x0,'rows':[]};return db[_0xb232('0x41')][_0xb232('0x6a')]({'where':{'id':_0x7093f9[_0xb232('0x58')]['id']}})[_0xb232('0x22')](handleEntityNotFound(_0x324c56,null))['then'](function(_0x1d1021){if(_0x1d1021){_0x59546b[_0xb232('0x45')]=_[_0xb232('0x5a')](db[_0xb232('0x6e')][_0xb232('0x42')]);_0x59546b[_0xb232('0x46')]=_['keys'](_0x7093f9[_0xb232('0x46')]);_0x59546b[_0xb232('0x47')]=_[_0xb232('0x49')](_0x59546b[_0xb232('0x45')],_0x59546b['query']);_0x37eb18['attributes']=_[_0xb232('0x49')](_0x59546b['model'],qs[_0xb232('0x4a')](_0x7093f9[_0xb232('0x46')][_0xb232('0x4a')]));_0x37eb18[_0xb232('0x48')]=_0x37eb18[_0xb232('0x48')][_0xb232('0x4b')]?_0x37eb18[_0xb232('0x48')]:_0x59546b[_0xb232('0x45')];if(!_0x7093f9['query']['hasOwnProperty']('nolimit')){_0x37eb18['limit']=qs[_0xb232('0x31')](_0x7093f9[_0xb232('0x46')]['limit']);_0x37eb18[_0xb232('0x4e')]=qs['offset'](_0x7093f9[_0xb232('0x46')][_0xb232('0x4e')]);}_0x37eb18[_0xb232('0x4f')]=qs[_0xb232('0x50')](_0x7093f9[_0xb232('0x46')][_0xb232('0x50')]);_0x37eb18[_0xb232('0x51')]=qs['filters'](_['pick'](_0x7093f9[_0xb232('0x46')],_0x59546b[_0xb232('0x47')]));_0x37eb18[_0xb232('0x51')][_0xb232('0x67')]=_0x1d1021['id'];if(_0x7093f9[_0xb232('0x46')][_0xb232('0x6f')]){_0x37eb18[_0xb232('0x51')]=_[_0xb232('0x52')](_0x37eb18[_0xb232('0x51')],{'$or':_[_0xb232('0x40')](_0x37eb18['attributes'],function(_0x435da7){var _0x57e1f8={};_0x57e1f8[_0x435da7]={'$like':'%'+_0x7093f9[_0xb232('0x46')][_0xb232('0x6f')]+'%'};return _0x57e1f8;})});}_0x37eb18=_[_0xb232('0x52')]({},_0x37eb18,_0x7093f9[_0xb232('0x53')]);return db['CannedAnswer']['count']({'where':_0x37eb18[_0xb232('0x51')]})[_0xb232('0x22')](function(_0x326d26){_0x394c18[_0xb232('0x32')]=_0x326d26;if(_0x7093f9[_0xb232('0x46')][_0xb232('0x54')]){_0x37eb18[_0xb232('0x55')]=[{'all':!![]}];}return db[_0xb232('0x6e')][_0xb232('0x6b')](_0x37eb18);})['then'](function(_0x37945c){_0x394c18[_0xb232('0x56')]=_0x37945c;return _0x394c18;});}})[_0xb232('0x22')](respondWithFilteredResult(_0x324c56,_0x37eb18))['catch'](handleError(_0x324c56,null));};exports[_0xb232('0x70')]=function(_0x51fb59,_0x477ef7,_0x3a4a16){return db[_0xb232('0x41')]['find']({'where':{'id':_0x51fb59[_0xb232('0x58')]['id']}})[_0xb232('0x22')](handleEntityNotFound(_0x477ef7,null))[_0xb232('0x22')](function(_0x37a4b3){if(_0x37a4b3){return _0x37a4b3[_0xb232('0x70')](_0x51fb59[_0xb232('0x46')][_0xb232('0x71')]);}})[_0xb232('0x22')](respondWithStatusCode(_0x477ef7,null))['catch'](handleError(_0x477ef7,null));};exports[_0xb232('0x72')]=function(_0x32e4c8,_0xbe22ab,_0x227187){return db[_0xb232('0x73')][_0xb232('0x61')]({'where':{'id':_0x32e4c8[_0xb232('0x58')]['id']}})[_0xb232('0x22')](handleEntityNotFound(_0xbe22ab,null))['then'](function(_0xbc2fb0){if(_0xbc2fb0){return _0xbc2fb0[_0xb232('0x72')](_0x32e4c8[_0xb232('0x5c')]['ids'],_[_0xb232('0x74')](_0x32e4c8[_0xb232('0x5c')],[_0xb232('0x71'),'id'])||{});}})[_0xb232('0x22')](respondWithResult(_0xbe22ab,null))[_0xb232('0x2c')](handleError(_0xbe22ab,null));};exports['getInteractions']=function(_0x5cc967,_0x30bbc9,_0x5d697a){var _0x4ef09a={'raw':![],'where':{}};var _0x4cb82b={};var _0x5d8d93={'count':0x0,'rows':[]};return db[_0xb232('0x41')][_0xb232('0x6a')]({'where':{'id':_0x5cc967['params']['id']}})['then'](handleEntityNotFound(_0x30bbc9,null))[_0xb232('0x22')](function(_0x16deb4){if(_0x16deb4){_0x4cb82b[_0xb232('0x45')]=_['keys'](db['FaxInteraction']['rawAttributes']);_0x4cb82b[_0xb232('0x46')]=_[_0xb232('0x5a')](_0x5cc967['query']);_0x4cb82b[_0xb232('0x47')]=_['intersection'](_0x4cb82b[_0xb232('0x45')],_0x4cb82b[_0xb232('0x46')]);_0x4ef09a[_0xb232('0x48')]=_[_0xb232('0x49')](_0x4cb82b[_0xb232('0x45')],qs[_0xb232('0x4a')](_0x5cc967['query'][_0xb232('0x4a')]));_0x4ef09a[_0xb232('0x48')]=_0x4ef09a[_0xb232('0x48')][_0xb232('0x4b')]?_0x4ef09a['attributes']:_0x4cb82b[_0xb232('0x45')];if(!_0x5cc967[_0xb232('0x46')][_0xb232('0x4c')](_0xb232('0x4d'))){_0x4ef09a[_0xb232('0x31')]=qs[_0xb232('0x31')](_0x5cc967[_0xb232('0x46')][_0xb232('0x31')]);_0x4ef09a[_0xb232('0x4e')]=qs[_0xb232('0x4e')](_0x5cc967['query'][_0xb232('0x4e')]);}_0x4ef09a[_0xb232('0x4f')]=qs['sort'](_0x5cc967[_0xb232('0x46')]['sort']);_0x4ef09a[_0xb232('0x51')]=qs['filters'](_['pick'](_0x5cc967['query'],_0x4cb82b[_0xb232('0x47')]));_0x4ef09a[_0xb232('0x51')][_0xb232('0x67')]=_0x16deb4['id'];if(_0x5cc967[_0xb232('0x46')][_0xb232('0x6f')]){_0x4ef09a['where']=_[_0xb232('0x52')](_0x4ef09a[_0xb232('0x51')],{'$or':_[_0xb232('0x40')](_0x4ef09a[_0xb232('0x48')],function(_0x213f2a){var _0x5daeb6={};_0x5daeb6[_0x213f2a]={'$like':'%'+_0x5cc967[_0xb232('0x46')]['filter']+'%'};return _0x5daeb6;})});}_0x4ef09a=_[_0xb232('0x52')]({},_0x4ef09a,_0x5cc967['options']);return db[_0xb232('0x73')][_0xb232('0x32')]({'where':_0x4ef09a[_0xb232('0x51')]})[_0xb232('0x22')](function(_0x120721){_0x5d8d93[_0xb232('0x32')]=_0x120721;if(_0x5cc967[_0xb232('0x46')]['includeAll']){_0x4ef09a[_0xb232('0x55')]=[{'model':db[_0xb232('0x75')],'as':_0xb232('0x76'),'required':![]},{'model':db[_0xb232('0x77')],'as':_0xb232('0x78'),'attributes':[_0xb232('0x3d'),'fullname','internal'],'required':![]},{'model':db[_0xb232('0x79')],'as':_0xb232('0x7a'),'attributes':['id',_0xb232('0x3d'),_0xb232('0x7b')],'where':_0x5cc967[_0xb232('0x46')][_0xb232('0x7c')]?{'id':_0x5cc967['query'][_0xb232('0x7c')]}:undefined,'required':_0x5cc967['query'][_0xb232('0x7c')]?!![]:![]}];}return db[_0xb232('0x73')][_0xb232('0x6b')](_0x4ef09a);})[_0xb232('0x22')](function(_0x3c3c75){_0x5d8d93[_0xb232('0x56')]=_0x3c3c75;return _0x5d8d93;});}})[_0xb232('0x22')](respondWithFilteredResult(_0x30bbc9,_0x4ef09a))[_0xb232('0x2c')](handleError(_0x30bbc9,null));};exports[_0xb232('0x7d')]=function(_0x351984,_0x4af131){var _0x2f182d=_0x351984[_0xb232('0x58')]['id'];var _0x42045a=_0x351984['body'];var _0x4a56f5=0xc8;var _0x4497e1=null;return db[_0xb232('0x7e')][_0xb232('0x7f')]({'isolationLevel':db[_0xb232('0x7e')][_0xb232('0x80')]['ISOLATION_LEVELS']['READ_COMMITTED']},function(_0x3e2a6f){return db[_0xb232('0x41')]['findOne']({'where':{'id':_0x2f182d},'transaction':_0x3e2a6f})[_0xb232('0x22')](function(_0xc9b5eb){if(_0xc9b5eb){return db[_0xb232('0x81')][_0xb232('0x39')]({'where':{'FaxAccountId':_0x2f182d},'transaction':_0x3e2a6f})[_0xb232('0x22')](function(){var _0x2a1efd=_[_0xb232('0x40')](_0x42045a,function(_0x3ab431){_0x3ab431['FaxAccountId']=_0x2f182d;return _0x3ab431;});return db[_0xb232('0x81')][_0xb232('0x82')](_0x2a1efd,{'transaction':_0x3e2a6f});});}else{_0x4a56f5=0x194;_0x4497e1=[];}});})['then'](function(){if(_0x4a56f5!==0x194){return db[_0xb232('0x81')][_0xb232('0x83')]({'where':{'FaxAccountId':_0x2f182d},'order':_0xb232('0x84')})['then'](function(_0x21083c){_0x4497e1=_0x21083c;});}})[_0xb232('0x2c')](function(_0x27d06b){_0x4a56f5=0x1f4;logger['error'](_0x27d06b[_0xb232('0x3c')]);if(_0x27d06b['name']){delete _0x27d06b[_0xb232('0x3d')];}_0x4497e1=_0x27d06b;})['finally'](function(){if(_0x4497e1===null){_0x4af131[_0xb232('0x2d')](_0x4a56f5);}else{if(_0x4a56f5===0x1f4){_0x4af131['status'](_0x4a56f5)[_0xb232('0x3e')](_0x4497e1);}else{_0x4af131['status'](_0x4a56f5)[_0xb232('0x35')](_0x4497e1);}}});};exports[_0xb232('0x85')]=function(_0xe8c42d,_0x2f7653,_0x290dc3){var _0x2a79fd={};var _0x275f1f={};var _0x4527d7;var _0xb4fc7b;return db[_0xb232('0x41')][_0xb232('0x6a')]({'where':{'id':_0xe8c42d[_0xb232('0x58')]['id']}})['then'](handleEntityNotFound(_0x2f7653,null))[_0xb232('0x22')](function(_0x205a0f){if(_0x205a0f){_0x4527d7=_0x205a0f;_0x275f1f['model']=_[_0xb232('0x5a')](db[_0xb232('0x81')]['rawAttributes']);_0x275f1f[_0xb232('0x46')]=_[_0xb232('0x5a')](_0xe8c42d[_0xb232('0x46')]);_0x275f1f[_0xb232('0x47')]=_[_0xb232('0x49')](_0x275f1f['model'],_0x275f1f[_0xb232('0x46')]);_0x2a79fd[_0xb232('0x48')]=_[_0xb232('0x49')](_0x275f1f['model'],qs['fields'](_0xe8c42d[_0xb232('0x46')][_0xb232('0x4a')]));_0x2a79fd[_0xb232('0x48')]=_0x2a79fd['attributes']['length']?_0x2a79fd[_0xb232('0x48')]:_0x275f1f[_0xb232('0x45')];_0x2a79fd[_0xb232('0x4f')]=qs[_0xb232('0x50')](_0xe8c42d[_0xb232('0x46')]['sort']);_0x2a79fd[_0xb232('0x51')]=qs[_0xb232('0x47')](_[_0xb232('0x86')](_0xe8c42d[_0xb232('0x46')],_0x275f1f[_0xb232('0x47')]));if(_0xe8c42d[_0xb232('0x46')]['filter']){_0x2a79fd[_0xb232('0x51')]=_['merge'](_0x2a79fd[_0xb232('0x51')],{'$or':_[_0xb232('0x40')](_0x2a79fd[_0xb232('0x48')],function(_0x3c0e94){var _0x4550b5={};_0x4550b5[_0x3c0e94]={'$like':'%'+_0xe8c42d['query']['filter']+'%'};return _0x4550b5;})});}_0x2a79fd=_[_0xb232('0x52')]({},_0x2a79fd,_0xe8c42d['options']);return _0x4527d7['getApplications'](_0x2a79fd);}})[_0xb232('0x22')](function(_0x32e89a){if(_0x32e89a){_0xb4fc7b=_0x32e89a['length'];if(!_0xe8c42d['query'][_0xb232('0x4c')](_0xb232('0x4d'))){_0x2a79fd[_0xb232('0x31')]=qs[_0xb232('0x31')](_0xe8c42d[_0xb232('0x46')][_0xb232('0x31')]);_0x2a79fd[_0xb232('0x4e')]=qs['offset'](_0xe8c42d['query'][_0xb232('0x4e')]);}return _0x4527d7['getApplications'](_0x2a79fd);}})[_0xb232('0x22')](function(_0x5dbf01){if(_0x5dbf01){return _0x5dbf01?{'count':_0xb4fc7b,'rows':_0x5dbf01}:null;}})[_0xb232('0x22')](respondWithResult(_0x2f7653,null))[_0xb232('0x2c')](handleError(_0x2f7653,null));};function Extension(_0x250b4,_0x3908ac,_0x2079e0,_0x10d8b7){this[_0xb232('0x87')]=_0xb232('0x88');this[_0xb232('0x89')]=_0x250b4[_0xb232('0x8a')];this[_0xb232('0x8b')]=_0x10d8b7;this['type']=_0xb232('0x8c');this[_0xb232('0x8d')]=_0xb232('0x8e');this[_0xb232('0x67')]=_0x250b4['id'];this[_0xb232('0x84')]=_0x3908ac;this[_0xb232('0x8f')]=_0x2079e0;}function createExtensionsReciveFax(_0x501645){var _0x4b3622=0x1;var _0x56f06d=[];_0x56f06d[_0xb232('0x90')](new Extension(_0x501645,_0x4b3622,'',_0xb232('0x91')));_0x4b3622+=0x1;_0x56f06d[_0xb232('0x90')](new Extension(_0x501645,_0x4b3622,'CDR(type)=inbound-fax','Set'));_0x4b3622+=0x1;for(var _0x26d567 in _0x501645){if(_0x501645['hasOwnProperty'](_0x26d567)&&(_0x26d567==='ecm'||_0x26d567===_0xb232('0x8a')||_0x26d567===_0xb232('0x92')||_0x26d567===_0xb232('0x93')||_0x26d567===_0xb232('0x94')||_0x26d567===_0xb232('0x95')||_0x26d567===_0xb232('0x96')||_0x26d567===_0xb232('0x97')||_0x26d567===_0xb232('0x98'))){_0x56f06d[_0xb232('0x90')](new Extension(_0x501645,_0x4b3622,_0xb232('0x99')+_0x26d567+')='+_0x501645[_0x26d567],_0xb232('0x9a')));_0x4b3622+=0x1;}}_0x56f06d[_0xb232('0x90')](new Extension(_0x501645,_0x4b3622,'6',_0xb232('0x9b')));_0x4b3622+=0x1;_0x56f06d[_0xb232('0x90')](new Extension(_0x501645,_0x4b3622,'/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',_0xb232('0x9c')));_0x4b3622=0x0;return _0x56f06d;}exports[_0xb232('0x9d')]=function(_0xfa14c2,_0x1325c3,_0x3de1d3){var _0x1bf59d;return db[_0xb232('0x7e')][_0xb232('0x7f')](function(_0x1aeeb9){return db[_0xb232('0x41')]['create'](_0xfa14c2['body'],{'transaction':_0x1aeeb9})['then'](function(_0xd36677){_0x1bf59d=_0xd36677[_0xb232('0x3a')]({'plain':!![]});return db[_0xb232('0x9e')][_0xb232('0x82')](createExtensionsReciveFax(_0x1bf59d),{'transaction':_0x1aeeb9});});})[_0xb232('0x22')](function(){return _0x1bf59d;})[_0xb232('0x22')](respondWithResult(_0x1325c3,null))[_0xb232('0x2c')](handleError(_0x1325c3,null));};exports[_0xb232('0x9f')]=function(_0x47ba9f,_0x500e40,_0x32c86a){var _0x4ddfa5;return db['sequelize'][_0xb232('0x7f')](function(_0x365874){return db[_0xb232('0x41')][_0xb232('0x38')](_0x47ba9f[_0xb232('0x5c')],{'where':{'id':_0x47ba9f[_0xb232('0x5c')]['id']},'transaction':_0x365874})['then'](function(_0x1889d6){return db[_0xb232('0x9e')][_0xb232('0x39')]({'where':{'FaxAccountId':_0x47ba9f[_0xb232('0x5c')]['id']},'transaction':_0x365874})[_0xb232('0x22')](function(_0x3f6ddd){return db[_0xb232('0x9e')]['bulkCreate'](createExtensionsReciveFax(_['omit'](_0x47ba9f['body'],['tech','key',_0xb232('0xa0'),_0xb232('0xa1'),_0xb232('0xa2'),_0xb232('0xa3')])),{'transaction':_0x365874});});});})[_0xb232('0x22')](function(){return db['FaxAccount'][_0xb232('0xa4')](_0x47ba9f[_0xb232('0x5c')]['id']);})[_0xb232('0x22')](respondWithResult(_0x500e40,null))[_0xb232('0x2c')](handleError(_0x500e40,null));};exports['getMessages']=function(_0x18b368,_0x102e41,_0x590a0b){var _0xdb8785={'raw':!![],'where':{}};var _0x44aba6={};var _0x1d3a11={'count':0x0,'rows':[]};return db[_0xb232('0x41')][_0xb232('0x6a')]({'where':{'id':_0x18b368[_0xb232('0x58')]['id']}})[_0xb232('0x22')](handleEntityNotFound(_0x102e41,null))[_0xb232('0x22')](function(_0x4f606a){if(_0x4f606a){_0x44aba6['model']=_[_0xb232('0x5a')](db['FaxMessage'][_0xb232('0x42')]);_0x44aba6[_0xb232('0x46')]=_['keys'](_0x18b368[_0xb232('0x46')]);_0x44aba6[_0xb232('0x47')]=_[_0xb232('0x49')](_0x44aba6[_0xb232('0x45')],_0x44aba6['query']);_0xdb8785[_0xb232('0x48')]=_[_0xb232('0x49')](_0x44aba6[_0xb232('0x45')],qs[_0xb232('0x4a')](_0x18b368['query'][_0xb232('0x4a')]));_0xdb8785[_0xb232('0x48')]=_0xdb8785[_0xb232('0x48')][_0xb232('0x4b')]?_0xdb8785[_0xb232('0x48')]:_0x44aba6[_0xb232('0x45')];if(!_0x18b368[_0xb232('0x46')][_0xb232('0x4c')](_0xb232('0x4d'))){_0xdb8785[_0xb232('0x31')]=qs[_0xb232('0x31')](_0x18b368[_0xb232('0x46')]['limit']);_0xdb8785[_0xb232('0x4e')]=qs[_0xb232('0x4e')](_0x18b368['query']['offset']);}_0xdb8785[_0xb232('0x4f')]=qs[_0xb232('0x50')](_0x18b368[_0xb232('0x46')][_0xb232('0x50')]);_0xdb8785[_0xb232('0x51')]=qs[_0xb232('0x47')](_[_0xb232('0x86')](_0x18b368[_0xb232('0x46')],_0x44aba6[_0xb232('0x47')]));_0xdb8785[_0xb232('0x51')][_0xb232('0x67')]=_0x4f606a['id'];if(_0x18b368[_0xb232('0x46')][_0xb232('0x6f')]){_0xdb8785['where']=_[_0xb232('0x52')](_0xdb8785[_0xb232('0x51')],{'$or':_[_0xb232('0x40')](_0xdb8785[_0xb232('0x48')],function(_0x4b359d){var _0xd5f530={};_0xd5f530[_0x4b359d]={'$like':'%'+_0x18b368[_0xb232('0x46')][_0xb232('0x6f')]+'%'};return _0xd5f530;})});}if(_0x18b368[_0xb232('0x46')][_0xb232('0xa5')]){var _0x44ed9f=_0x18b368[_0xb232('0x46')][_0xb232('0xa5')][_0xb232('0xa6')](',');var _0x404b47={};_0x404b47[_0x44ed9f[0x0]]={'$gte':moment(_0x44ed9f[0x1])[_0xb232('0xa7')](_0xb232('0xa8'))};_0xdb8785['where']=_['merge'](_0xdb8785['where'],_0x404b47);}_0xdb8785=_['merge']({},_0xdb8785,_0x18b368[_0xb232('0x53')]);return db[_0xb232('0xa9')][_0xb232('0x32')]({'where':_0xdb8785[_0xb232('0x51')]})[_0xb232('0x22')](function(_0x29d1a1){_0x1d3a11[_0xb232('0x32')]=_0x29d1a1;if(_0x18b368[_0xb232('0x46')][_0xb232('0x54')]){_0xdb8785[_0xb232('0x55')]=[{'all':!![]}];}return db[_0xb232('0xa9')][_0xb232('0x6b')](_0xdb8785);})[_0xb232('0x22')](function(_0x59ce74){_0x1d3a11['rows']=_0x59ce74;return _0x1d3a11;});}})[_0xb232('0x22')](respondWithFilteredResult(_0x102e41,_0xdb8785))['catch'](handleError(_0x102e41,null));};exports[_0xb232('0x3e')]=function(_0x3ebdae,_0x1fdd1a,_0x4bbfd3){var _0x5efd8e,_0x1c66d1={},_0x14a6f5;if(_0x3ebdae['body']['to']){_0x14a6f5=_0x3ebdae[_0xb232('0x5c')]['to'][0x0];}return db[_0xb232('0x41')][_0xb232('0x61')]({'where':{'id':_0x3ebdae[_0xb232('0x58')]['id']},'include':[{'model':db[_0xb232('0xaa')],'as':_0xb232('0xab'),'include':[{'model':db[_0xb232('0x75')],'as':'Contacts','where':{'fax':_0x14a6f5},'limit':0x1,'order':[['updatedAt',_0xb232('0xac')]]}]}]})[_0xb232('0x22')](handleEntityNotFound(_0x1fdd1a,null))[_0xb232('0x22')](function(_0x3bb2c9){_0x5efd8e=_0x3bb2c9;if(_0x3ebdae[_0xb232('0x5c')][_0xb232('0xad')]&&_0x3ebdae[_0xb232('0x5c')][_0xb232('0xad')][_0xb232('0x4b')]){for(var _0x5e3586=0x0;_0x5e3586<_0x3ebdae[_0xb232('0x5c')][_0xb232('0xad')][_0xb232('0x4b')];_0x5e3586+=0x1){_0x3ebdae['body'][_0xb232('0xad')][_0x5e3586]={'filename':_0x3ebdae[_0xb232('0x5c')][_0xb232('0xad')][_0x5e3586][_0xb232('0x3d')],'id':_0x3ebdae[_0xb232('0x5c')][_0xb232('0xad')][_0x5e3586]['id'],'path':path[_0xb232('0xae')](config[_0xb232('0xaf')],_0xb232('0xb0'),_0x3ebdae['body']['attachments'][_0x5e3586][_0xb232('0xb1')])};}}return respondWithRpcPromise(_0xb232('0xb2'),_0xb232('0xb2'),{'FaxAccountId':_[_0xb232('0xb3')](_0x3ebdae[_0xb232('0x58')]['id'])?undefined:_0x3ebdae['params']['id'],'path':_['isNil'](_0x3ebdae[_0xb232('0x5c')][_0xb232('0xad')][0x0][_0xb232('0x7')])?undefined:_0x3ebdae[_0xb232('0x5c')]['attachments'][0x0][_0xb232('0x7')],'fax':_[_0xb232('0xb3')](_0x3ebdae[_0xb232('0x5c')]['to'][0x0])?undefined:_0x3ebdae[_0xb232('0x5c')]['to'][0x0]},client9002);})['then'](function(){if(_0x5efd8e){if(_['isNil'](_0x3ebdae[_0xb232('0x5c')][_0xb232('0xb4')])){_0x3ebdae['body'][_0xb232('0xb4')]=util[_0xb232('0xa7')](_0xb232('0xb5'),_0x5efd8e[_0xb232('0x3d')],_0x5efd8e['fax']);}if(_0x5efd8e[_0xb232('0xab')]){if(_0x5efd8e['List'][_0xb232('0xb6')][_0xb232('0x4b')]){return _0x5efd8e['List'][_0xb232('0xb6')][0x0];}else{return db['CmContact'][_0xb232('0x5b')](_[_0xb232('0x1b')](_0x3ebdae[_0xb232('0x5c')],{'firstName':_0x3ebdae[_0xb232('0x5c')]['to'][0x0],'phone':_0x3ebdae['body']['to'][0x0],'fax':_0x3ebdae[_0xb232('0x5c')]['to'][0x0],'ListId':_0x5efd8e[_0xb232('0xa3')]}));}}else{throw new Error(_0xb232('0xb7'));}}else{throw new Error(_0xb232('0xb8'));}})[_0xb232('0x22')](function(_0x562e96){if(_0x562e96){return db[_0xb232('0x73')][_0xb232('0x61')]({'where':{'ContactId':_0x562e96['id'],'closed':![],'FaxAccountId':_0x5efd8e['id']}})[_0xb232('0x22')](function(_0x7c72e2){if(_0x7c72e2){return[_0x7c72e2,![]];}return db[_0xb232('0x73')][_0xb232('0x5b')]({'UserId':_0x3ebdae[_0xb232('0x5d')]['id'],'ContactId':_0x562e96['id'],'FaxAccountId':_0x5efd8e['id'],'fax':_0x3ebdae['body']['to'][0x0],'firstMsgDirection':_0xb232('0xb9'),'Messages':[_[_0xb232('0x52')](_0x3ebdae['body'],{'read':![],'body':_0x3ebdae[_0xb232('0x5c')][_0xb232('0xad')][0x0]['filename'],'FaxAccountId':_0x5efd8e['id'],'UserId':_0x3ebdae['user']['id'],'ContactId':_0x562e96['id'],'AttachmentId':_0x3ebdae['body']['attachments'][0x0]['id']})]},{'include':[{'model':db[_0xb232('0xa9')],'as':_0xb232('0xba')}]})[_0xb232('0x22')](function(_0x1ee77b){return[_0x1ee77b,!![]];});});}else{throw new Error(_0xb232('0xbb'));}})[_0xb232('0xbc')](function(_0x13d247,_0x56c723){if(_0x56c723){return _0x13d247;}return db[_0xb232('0xa9')][_0xb232('0x5b')]({'direction':_0xb232('0xb9'),'read':![],'body':_0x3ebdae[_0xb232('0x5c')][_0xb232('0xad')][0x0]['filename'],'FaxAccountId':_0x5efd8e['id'],'FaxInteractionId':_0x13d247['id'],'UserId':_0x3ebdae[_0xb232('0x5d')]['id'],'ContactId':_0x13d247[_0xb232('0xbd')],'AttachmentId':_0x3ebdae[_0xb232('0x5c')][_0xb232('0xad')][0x0]['id']})[_0xb232('0x22')](function(_0x6cf5c7){_0x13d247['dataValues'][_0xb232('0xba')]=[];_0x13d247[_0xb232('0xbe')]['Messages'][_0xb232('0x90')](_0x6cf5c7[_0xb232('0xbe')]);return _0x13d247;});})[_0xb232('0x22')](function(_0x28639c){respondWithRpcPromise(_0xb232('0xbf'),_0xb232('0xbf'),{'FaxAccountId':_[_0xb232('0xb3')](_0x3ebdae['params']['id'])?undefined:_0x3ebdae[_0xb232('0x58')]['id'],'path':_[_0xb232('0xb3')](_0x3ebdae[_0xb232('0x5c')]['attachments'][0x0]['path'])?undefined:_0x3ebdae[_0xb232('0x5c')][_0xb232('0xad')][0x0][_0xb232('0x7')],'fax':_[_0xb232('0xb3')](_0x3ebdae[_0xb232('0x5c')]['to'][0x0])?undefined:_0x3ebdae[_0xb232('0x5c')]['to'][0x0],'AttachmentId':_0x3ebdae['body'][_0xb232('0xad')][0x0]['id']},client9002)[_0xb232('0x22')](function(_0x119d61){logger[_0xb232('0x23')](_0xb232('0xc0'),_0x119d61);})[_0xb232('0x2c')](function(_0x2c73ed){logger[_0xb232('0x23')](_0xb232('0xc0'),_0x2c73ed);});return _0x28639c;})['then'](respondWithResult(_0x1fdd1a,null))[_0xb232('0x2c')](handleError(_0x1fdd1a,null));};exports[_0xb232('0xc1')]=function(_0x4fa57d,_0x5068ef,_0x127a7e){return db[_0xb232('0x41')][_0xb232('0x61')]({'where':{'id':_0x4fa57d['params']['id']}})[_0xb232('0x22')](handleEntityNotFound(_0x5068ef,null))[_0xb232('0x22')](function(_0x5ce820){if(_0x5ce820){return _0x5ce820[_0xb232('0xc1')](_0x4fa57d[_0xb232('0x5c')][_0xb232('0x71')],_['omit'](_0x4fa57d[_0xb232('0x5c')],[_0xb232('0x71'),'id'])||{})[_0xb232('0xbc')](function(_0x346afe){for(var _0x870bca=0x0;_0x870bca<_0x4fa57d[_0xb232('0x5c')][_0xb232('0x71')][_0xb232('0x4b')];_0x870bca+=0x1){socket[_0xb232('0xc2')](_0xb232('0xc3'),{'UserId':Number(_0x4fa57d[_0xb232('0x5c')]['ids'][_0x870bca]),'FaxAccountId':Number(_0x4fa57d[_0xb232('0x58')]['id'])});}return _0x346afe;});}})[_0xb232('0x22')](respondWithResult(_0x5068ef,null))['catch'](handleError(_0x5068ef,null));};exports[_0xb232('0xc4')]=function(_0x6b17dd,_0xcfccc8,_0x4b5940){return db[_0xb232('0x41')][_0xb232('0x61')]({'where':{'id':_0x6b17dd[_0xb232('0x58')]['id']}})[_0xb232('0x22')](handleEntityNotFound(_0xcfccc8,null))[_0xb232('0x22')](function(_0x37c78a){if(_0x37c78a){return _0x37c78a['removeAgents'](_0x6b17dd['query'][_0xb232('0x71')])[_0xb232('0x22')](function(){if(_[_0xb232('0xc5')](_0x6b17dd[_0xb232('0x46')]['ids'])){for(var _0x53c314=0x0;_0x53c314<_0x6b17dd[_0xb232('0x46')][_0xb232('0x71')][_0xb232('0x4b')];_0x53c314+=0x1){socket[_0xb232('0xc2')](_0xb232('0xc6'),{'UserId':Number(_0x6b17dd[_0xb232('0x46')][_0xb232('0x71')][_0x53c314]),'FaxAccountId':Number(_0x6b17dd[_0xb232('0x58')]['id'])});}}else{socket[_0xb232('0xc2')]('userFaxAccount:remove',{'UserId':Number(_0x6b17dd[_0xb232('0x46')][_0xb232('0x71')]),'FaxAccountId':Number(_0x6b17dd[_0xb232('0x58')]['id'])});}});}})[_0xb232('0x22')](respondWithStatusCode(_0xcfccc8,null))[_0xb232('0x2c')](handleError(_0xcfccc8,null));};exports[_0xb232('0xc7')]=function(_0xeaa22f,_0x5a39aa,_0x57267b){var _0x32fd0d={};var _0x53ec03={};var _0x278bf8;var _0x2b5150;return db[_0xb232('0x41')][_0xb232('0x6a')]({'where':{'id':_0xeaa22f[_0xb232('0x58')]['id']}})[_0xb232('0x22')](handleEntityNotFound(_0x5a39aa,null))[_0xb232('0x22')](function(_0x39acef){if(_0x39acef){_0x278bf8=_0x39acef;_0x53ec03['model']=_['keys'](db['User']['rawAttributes']);_0x53ec03[_0xb232('0x46')]=_[_0xb232('0x5a')](_0xeaa22f[_0xb232('0x46')]);_0x53ec03[_0xb232('0x47')]=_[_0xb232('0x49')](_0x53ec03[_0xb232('0x45')],_0x53ec03[_0xb232('0x46')]);_0x32fd0d[_0xb232('0x48')]=_[_0xb232('0x49')](_0x53ec03[_0xb232('0x45')],qs[_0xb232('0x4a')](_0xeaa22f[_0xb232('0x46')][_0xb232('0x4a')]));_0x32fd0d[_0xb232('0x48')]=_0x32fd0d[_0xb232('0x48')][_0xb232('0x4b')]?_0x32fd0d[_0xb232('0x48')]:_0x53ec03['model'];_0x32fd0d['order']=qs['sort'](_0xeaa22f['query'][_0xb232('0x50')]);_0x32fd0d[_0xb232('0x51')]=qs[_0xb232('0x47')](_[_0xb232('0x86')](_0xeaa22f[_0xb232('0x46')],_0x53ec03[_0xb232('0x47')]));if(_0xeaa22f[_0xb232('0x46')][_0xb232('0x6f')]){_0x32fd0d[_0xb232('0x51')]=_[_0xb232('0x52')](_0x32fd0d[_0xb232('0x51')],{'$or':_['map'](_0x32fd0d[_0xb232('0x48')],function(_0x1bf9f8){var _0x3d73ec={};_0x3d73ec[_0x1bf9f8]={'$like':'%'+_0xeaa22f[_0xb232('0x46')][_0xb232('0x6f')]+'%'};return _0x3d73ec;})});}_0x32fd0d=_[_0xb232('0x52')]({},_0x32fd0d,_0xeaa22f[_0xb232('0x53')]);return _0x278bf8[_0xb232('0xc7')](_0x32fd0d);}})[_0xb232('0x22')](function(_0x38c63b){if(_0x38c63b){_0x2b5150=_0x38c63b['length'];if(!_0xeaa22f[_0xb232('0x46')][_0xb232('0x4c')]('nolimit')){_0x32fd0d[_0xb232('0x31')]=qs[_0xb232('0x31')](_0xeaa22f[_0xb232('0x46')][_0xb232('0x31')]);_0x32fd0d[_0xb232('0x4e')]=qs[_0xb232('0x4e')](_0xeaa22f[_0xb232('0x46')][_0xb232('0x4e')]);}return _0x278bf8[_0xb232('0xc7')](_0x32fd0d);}})[_0xb232('0x22')](function(_0x21163b){if(_0x21163b){return _0x21163b?{'count':_0x2b5150,'rows':_0x21163b}:null;}})[_0xb232('0x22')](respondWithResult(_0x5a39aa,null))[_0xb232('0x2c')](handleError(_0x5a39aa,null));};
\ No newline at end of file
index 94a5836..06171c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d87=['events','FaxAccount','setMaxListeners','save','update','remove','emit','hasOwnProperty'];(function(_0x38cbdf,_0x4eb95f){var _0x20ebce=function(_0x2e9721){while(--_0x2e9721){_0x38cbdf['push'](_0x38cbdf['shift']());}};_0x20ebce(++_0x4eb95f);}(_0x7d87,0x178));var _0x77d8=function(_0xfdb2df,_0x5517ff){_0xfdb2df=_0xfdb2df-0x0;var _0x42dc28=_0x7d87[_0xfdb2df];return _0x42dc28;};'use strict';var EventEmitter=require(_0x77d8('0x0'));var FaxAccount=require('../../mysqldb')['db'][_0x77d8('0x1')];var FaxAccountEvents=new EventEmitter();FaxAccountEvents[_0x77d8('0x2')](0x0);var events={'afterCreate':_0x77d8('0x3'),'afterUpdate':_0x77d8('0x4'),'afterDestroy':_0x77d8('0x5')};function emitEvent(_0xdd5dd2){return function(_0x539778,_0x3da7cd,_0x1e9096){FaxAccountEvents[_0x77d8('0x6')](_0xdd5dd2+':'+_0x539778['id'],_0x539778);FaxAccountEvents[_0x77d8('0x6')](_0xdd5dd2,_0x539778);_0x1e9096(null);};}for(var e in events){if(events[_0x77d8('0x7')](e)){var event=events[e];FaxAccount['hook'](e,emitEvent(event));}}module['exports']=FaxAccountEvents;
\ No newline at end of file
+var _0xfb0b=['emit','hasOwnProperty','hook','exports','events','../../mysqldb','FaxAccount','save','update'];(function(_0x2af88f,_0x48993b){var _0x1326ed=function(_0xd45251){while(--_0xd45251){_0x2af88f['push'](_0x2af88f['shift']());}};_0x1326ed(++_0x48993b);}(_0xfb0b,0x94));var _0xbfb0=function(_0x3f486d,_0x490f99){_0x3f486d=_0x3f486d-0x0;var _0x2fc9fe=_0xfb0b[_0x3f486d];return _0x2fc9fe;};'use strict';var EventEmitter=require(_0xbfb0('0x0'));var FaxAccount=require(_0xbfb0('0x1'))['db'][_0xbfb0('0x2')];var FaxAccountEvents=new EventEmitter();FaxAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xbfb0('0x3'),'afterUpdate':_0xbfb0('0x4'),'afterDestroy':'remove'};function emitEvent(_0x4adab6){return function(_0x299a7b,_0x4ac75d,_0x238a87){FaxAccountEvents[_0xbfb0('0x5')](_0x4adab6+':'+_0x299a7b['id'],_0x299a7b);FaxAccountEvents[_0xbfb0('0x5')](_0x4adab6,_0x299a7b);_0x238a87(null);};}for(var e in events){if(events[_0xbfb0('0x6')](e)){var event=events[e];FaxAccount[_0xbfb0('0x7')](e,emitEvent(event));}}module[_0xbfb0('0x8')]=FaxAccountEvents;
\ No newline at end of file
index ddda2b5..798d8a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf80=['api','moment','request-promise','path','rimraf','../../config/environment','./faxAccount.attributes','define','FaxAccount','fax_accounts','lodash','../../config/logger'];(function(_0x51020b,_0x38c2c7){var _0x371e47=function(_0x2a538f){while(--_0x2a538f){_0x51020b['push'](_0x51020b['shift']());}};_0x371e47(++_0x38c2c7);}(_0xaf80,0x17e));var _0x0af8=function(_0x4a0740,_0x31d136){_0x4a0740=_0x4a0740-0x0;var _0x52e7e8=_0xaf80[_0x4a0740];return _0x52e7e8;};'use strict';var _=require(_0x0af8('0x0'));var util=require('util');var logger=require(_0x0af8('0x1'))(_0x0af8('0x2'));var moment=require(_0x0af8('0x3'));var BPromise=require('bluebird');var rp=require(_0x0af8('0x4'));var fs=require('fs');var path=require(_0x0af8('0x5'));var rimraf=require(_0x0af8('0x6'));var config=require(_0x0af8('0x7'));var attributes=require(_0x0af8('0x8'));module['exports']=function(_0x1e8c72,_0x5537aa){return _0x1e8c72[_0x0af8('0x9')](_0x0af8('0xa'),attributes,{'tableName':_0x0af8('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x207c=['define','FaxAccount','fax_accounts','util','api','bluebird','rimraf','../../config/environment','./faxAccount.attributes','exports'];(function(_0x23d550,_0x18c50a){var _0x37e835=function(_0x5c22fb){while(--_0x5c22fb){_0x23d550['push'](_0x23d550['shift']());}};_0x37e835(++_0x18c50a);}(_0x207c,0xe9));var _0xc207=function(_0x5cc4de,_0x2df335){_0x5cc4de=_0x5cc4de-0x0;var _0x1bf255=_0x207c[_0x5cc4de];return _0x1bf255;};'use strict';var _=require('lodash');var util=require(_0xc207('0x0'));var logger=require('../../config/logger')(_0xc207('0x1'));var moment=require('moment');var BPromise=require(_0xc207('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xc207('0x3'));var config=require(_0xc207('0x4'));var attributes=require(_0xc207('0x5'));module[_0xc207('0x6')]=function(_0xda905b,_0x5ed1f1){return _0xda905b[_0xc207('0x7')](_0xc207('0x8'),attributes,{'tableName':_0xc207('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ae45f9f..cee92bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ad3=['moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./faxAccount.socket','register','then','info','debug','FaxAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','FaxAccount,\x20%s,\x20%s','message','result','catch','GetFaxAccount','FaxAccount','findAll','options','where','limit','include','map','model','attributes','NotifyFaxAccount','body','fax','CmContact','ValidationError','difference','keys','createdAt','updatedAt','CompanyId','ListId','isNil','from','Sequelize','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','account','CmList','List','Contacts','DESC','FaxApplication','Applications','applications','priority','asc','length','create','contact','find','FaxInteraction','spread','get','autoclose','push','unmanaged','*,*,*,*','created','interaction','FaxMessage','ContactId','AttachmentId','UserId','User','name','unshift','agent','Start','startRouting','lodash','util'];(function(_0x4ec520,_0x15fee2){var _0xed49d7=function(_0x3031f2){while(--_0x3031f2){_0x4ec520['push'](_0x4ec520['shift']());}};_0xed49d7(++_0x15fee2);}(_0x2ad3,0x1bb));var _0x32ad=function(_0x18ab2a,_0x4debcd){_0x18ab2a=_0x18ab2a-0x0;var _0x16dcee=_0x2ad3[_0x18ab2a];return _0x16dcee;};'use strict';var _=require(_0x32ad('0x0'));var util=require(_0x32ad('0x1'));var moment=require(_0x32ad('0x2'));var BPromise=require(_0x32ad('0x3'));var rs=require(_0x32ad('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x32ad('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x32ad('0x6'))(_0x32ad('0x7'));var config=require(_0x32ad('0x8'));var jayson=require(_0x32ad('0x9'));var client=jayson['client'][_0x32ad('0xa')]({'port':0x232c});config[_0x32ad('0xb')]=_[_0x32ad('0xc')](config[_0x32ad('0xb')],{'host':_0x32ad('0xd'),'port':0x18eb});var socket=require(_0x32ad('0xe'))(new Redis(config[_0x32ad('0xb')]));require(_0x32ad('0xf'))[_0x32ad('0x10')](socket);function respondWithRpcPromise(_0x505901,_0x566f60,_0x28423d){return new BPromise(function(_0x5a8e49,_0x28df3c){return client['request'](_0x505901,_0x28423d)[_0x32ad('0x11')](function(_0x40d464){logger[_0x32ad('0x12')]('FaxAccount,\x20%s,\x20%s',_0x566f60,'request\x20sent');logger[_0x32ad('0x13')](_0x32ad('0x14'),_0x566f60,_0x32ad('0x15'),JSON[_0x32ad('0x16')](_0x40d464));if(_0x40d464[_0x32ad('0x17')]){if(_0x40d464[_0x32ad('0x17')]['code']===0x1f4){logger[_0x32ad('0x17')](_0x32ad('0x18'),_0x566f60,_0x40d464['error'][_0x32ad('0x19')]);return _0x28df3c(_0x40d464[_0x32ad('0x17')][_0x32ad('0x19')]);}logger[_0x32ad('0x17')](_0x32ad('0x18'),_0x566f60,_0x40d464[_0x32ad('0x17')]['message']);return _0x5a8e49(_0x40d464[_0x32ad('0x17')][_0x32ad('0x19')]);}else{logger[_0x32ad('0x12')](_0x32ad('0x18'),_0x566f60,_0x32ad('0x15'));_0x5a8e49(_0x40d464[_0x32ad('0x1a')]['message']);}})[_0x32ad('0x1b')](function(_0x307559){logger['error']('FaxAccount,\x20%s,\x20%s',_0x566f60,_0x307559);_0x28df3c(_0x307559);});});}exports[_0x32ad('0x1c')]=function(_0x2035b1){var _0x23d4e1=this;return new Promise(function(_0x25e87c,_0x5a3439){return db[_0x32ad('0x1d')][_0x32ad('0x1e')]({'raw':_0x2035b1['options']?_0x2035b1['options']['raw']===undefined?!![]:![]:!![],'where':_0x2035b1[_0x32ad('0x1f')]?_0x2035b1[_0x32ad('0x1f')][_0x32ad('0x20')]||null:null,'attributes':_0x2035b1[_0x32ad('0x1f')]?_0x2035b1[_0x32ad('0x1f')]['attributes']||null:null,'limit':_0x2035b1['options']?_0x2035b1[_0x32ad('0x1f')][_0x32ad('0x21')]||null:null,'include':_0x2035b1['options']?_0x2035b1[_0x32ad('0x1f')][_0x32ad('0x22')]?_[_0x32ad('0x23')](_0x2035b1[_0x32ad('0x1f')][_0x32ad('0x22')],function(_0x1d78b7){return{'model':db[_0x1d78b7[_0x32ad('0x24')]],'as':_0x1d78b7['as'],'attributes':_0x1d78b7[_0x32ad('0x25')],'include':_0x1d78b7[_0x32ad('0x22')]?_[_0x32ad('0x23')](_0x1d78b7[_0x32ad('0x22')],function(_0x23b22b){return{'model':db[_0x23b22b[_0x32ad('0x24')]],'as':_0x23b22b['as'],'attributes':_0x23b22b['attributes'],'include':_0x23b22b[_0x32ad('0x22')]?_['map'](_0x23b22b[_0x32ad('0x22')],function(_0x521b19){return{'model':db[_0x521b19[_0x32ad('0x24')]],'as':_0x521b19['as'],'attributes':_0x521b19[_0x32ad('0x25')]};}):[]};}):[]};}):[]:[]})[_0x32ad('0x11')](function(_0xbd487){logger['info'](_0x32ad('0x1c'),_0x2035b1);logger[_0x32ad('0x13')](_0x32ad('0x1c'),_0x2035b1,JSON['stringify'](_0xbd487));_0x25e87c(_0xbd487);})['catch'](function(_0x13ab91){logger[_0x32ad('0x17')]('GetFaxAccount',_0x13ab91[_0x32ad('0x19')],_0x2035b1);_0x5a3439(_0x23d4e1['error'](0x1f4,_0x13ab91[_0x32ad('0x19')]));});});};exports[_0x32ad('0x26')]=function(_0x314c69,_0x7f9bb5,_0x43b9d5){var _0x3e88e2=this;return new Promise(function(_0x16f58b,_0x579aa4){var _0x26eddf={'body':_0x314c69[_0x32ad('0x27')],'channel':_0x32ad('0x28')};var _0x8e030b=[];var _0x49521b=[];var _0x4b6f70={};return db[_0x32ad('0x29')]['describe']()[_0x32ad('0x11')](function(_0x4bc291){if(!_0x4bc291){throw new db['Sequelize'][(_0x32ad('0x2a'))]('no\x20available\x20attributes');}_0x8e030b=_[_0x32ad('0x2b')](_[_0x32ad('0x2c')](_0x4bc291),[_0x32ad('0x2d'),_0x32ad('0x2e')]);_0x49521b=_[_0x32ad('0x2b')](_[_0x32ad('0x2c')](_0x4bc291),[_0x32ad('0x2d'),_0x32ad('0x2e'),_0x32ad('0x2f'),_0x32ad('0x30')]);if(_0x314c69[_0x32ad('0x27')]['id']){delete _0x314c69[_0x32ad('0x27')]['id'];}if(_[_0x32ad('0x31')](_0x314c69[_0x32ad('0x27')][_0x32ad('0x32')])){throw new db[(_0x32ad('0x33'))][(_0x32ad('0x2a'))]('from\x20is\x20mandatory');}if(_[_0x32ad('0x31')](_0x314c69[_0x32ad('0x27')][_0x32ad('0x27')])||_0x314c69[_0x32ad('0x27')][_0x32ad('0x27')]===''){throw new db[(_0x32ad('0x33'))][(_0x32ad('0x2a'))](_0x32ad('0x34'));}if(_[_0x32ad('0x31')](_0x314c69[_0x32ad('0x27')][_0x32ad('0x35')])){throw new db['Sequelize'][(_0x32ad('0x2a'))]('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x49521b);}if(!_[_0x32ad('0x36')](_0x49521b,_0x314c69[_0x32ad('0x27')][_0x32ad('0x35')])){throw new db[(_0x32ad('0x33'))][(_0x32ad('0x2a'))](_0x32ad('0x37')+_0x49521b);}_0x4b6f70[_0x314c69[_0x32ad('0x27')]['mapKey']]=_0x314c69['body'][_0x32ad('0x32')];})[_0x32ad('0x11')](function(){return db[_0x32ad('0x1d')]['find']({'where':{'id':_0x314c69[_0x32ad('0x38')]['id']},'include':[{'model':db[_0x32ad('0x39')],'as':_0x32ad('0x3a'),'include':[{'model':db[_0x32ad('0x29')],'as':_0x32ad('0x3b'),'where':_0x4b6f70,'limit':0x1,'order':[[_0x32ad('0x2e'),_0x32ad('0x3c')]]}]},{'model':db[_0x32ad('0x3d')],'as':_0x32ad('0x3e')}]});})['then'](function(_0xe1c4bf){if(_0xe1c4bf&&_0xe1c4bf['List']){var _0x44e27a=_0xe1c4bf['get']({'plain':!![]});_0x26eddf[_0x32ad('0x38')]=_0x44e27a;_0x26eddf[_0x32ad('0x3f')]=_0x44e27a[_0x32ad('0x3e')];_0x26eddf['list']=_0x44e27a[_0x32ad('0x3a')];_0x26eddf['applications']=_['orderBy'](_0x26eddf[_0x32ad('0x3f')],[_0x32ad('0x40')],[_0x32ad('0x41')]);if(_0x26eddf[_0x32ad('0x38')][_0x32ad('0x3e')]){delete _0x26eddf[_0x32ad('0x38')][_0x32ad('0x3e')];}if(_0x26eddf[_0x32ad('0x38')][_0x32ad('0x3a')]&&_0x26eddf[_0x32ad('0x38')][_0x32ad('0x3a')][_0x32ad('0x3b')][_0x32ad('0x42')]){return _0x26eddf['account'][_0x32ad('0x3a')][_0x32ad('0x3b')][0x0];}var _0x347a6a=_['defaults'](_0x314c69[_0x32ad('0x27')],{'firstName':_0x314c69['body'][_0x32ad('0x32')],'ListId':_0x44e27a[_0x32ad('0x30')]});_0x347a6a[_0x314c69[_0x32ad('0x27')][_0x32ad('0x35')]]=_0x314c69['body'][_0x32ad('0x32')];return db[_0x32ad('0x29')][_0x32ad('0x43')](_0x347a6a,{'fields':_0x8e030b,'raw':!![]});}})[_0x32ad('0x11')](function(_0x13b096){_0x26eddf[_0x32ad('0x44')]=_0x13b096;if(_0x13b096){var _0x40123e={'ContactId':_0x13b096['id'],'FaxAccountId':_0x314c69['account']['id'],'fax':_0x13b096['fax']};return db['FaxInteraction'][_0x32ad('0x45')]({'where':{'ContactId':_0x13b096['id'],'closed':![],'FaxAccountId':_0x314c69[_0x32ad('0x38')]['id']}})[_0x32ad('0x11')](function(_0x1574c9){if(_0x1574c9){return[_0x1574c9,![]];}return db[_0x32ad('0x46')][_0x32ad('0x43')](_0x40123e)[_0x32ad('0x11')](function(_0xd79d57){return[_0xd79d57,!![]];});});}else{throw new Error('Contact\x20not\x20found');}})[_0x32ad('0x47')](function(_0x34bb27,_0x232645){var _0x41033c=_0x34bb27[_0x32ad('0x48')]({'plain':!![]});if(_0x232645){if(_0x26eddf[_0x32ad('0x38')][_0x32ad('0x49')]){_0x26eddf['applications'][_0x32ad('0x4a')]({'id':0x0,'priority':_0x26eddf[_0x32ad('0x3f')][_0x32ad('0x42')]+0x1,'app':'close','appdata':_0x32ad('0x4b'),'interval':_0x32ad('0x4c')});}_0x41033c[_0x32ad('0x4d')]=!![];}else{_0x41033c[_0x32ad('0x4d')]=![];}_0x26eddf[_0x32ad('0x4e')]=_0x41033c;return db[_0x32ad('0x4f')][_0x32ad('0x43')]({'body':_0x314c69['body'][_0x32ad('0x27')],'FaxAccountId':_0x314c69[_0x32ad('0x38')]['id'],'FaxInteractionId':_0x34bb27['id'],'direction':'in','ContactId':_0x34bb27[_0x32ad('0x50')],'AttachmentId':_0x314c69[_0x32ad('0x27')][_0x32ad('0x51')]});})[_0x32ad('0x11')](function(_0x19119c){_0x26eddf[_0x32ad('0x19')]=_0x19119c;if(_0x26eddf[_0x32ad('0x4e')][_0x32ad('0x52')]){return db[_0x32ad('0x53')][_0x32ad('0x45')]({'attributes':['id',_0x32ad('0x54')],'where':{'id':_0x26eddf[_0x32ad('0x4e')][_0x32ad('0x52')]}})['then'](function(_0x5bd436){if(_0x5bd436){_0x26eddf[_0x32ad('0x3f')][_0x32ad('0x55')]({'id':0x0,'priority':0x0,'app':_0x32ad('0x56'),'appdata':_0x5bd436[_0x32ad('0x54')]+','+(_0x26eddf[_0x32ad('0x38')]['waitForTheAssignedAgent']||0xa),'interval':'*,*,*,*'});}return respondWithRpcPromise(_0x32ad('0x57'),'startRouting',_0x26eddf);});}return respondWithRpcPromise(_0x32ad('0x57'),_0x32ad('0x58'),_0x26eddf);})[_0x32ad('0x11')](function(_0x1fcd13){_0x16f58b(_0x1fcd13);})[_0x32ad('0x1b')](function(_0x448f2b){_0x579aa4(_0x3e88e2[_0x32ad('0x17')](0x1f4,_0x448f2b[_0x32ad('0x19')]));});});};
\ No newline at end of file
+var _0x54e2=['ListId','from','isNil','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','find','account','CmList','Contacts','DESC','FaxApplication','Applications','List','get','applications','list','orderBy','asc','length','create','contact','fax','FaxInteraction','autoclose','*,*,*,*','created','FaxMessage','ContactId','AttachmentId','UserId','User','name','interaction','unshift','agent','waitForTheAssignedAgent','Start','startRouting','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','defaults','redis','localhost','./faxAccount.socket','register','request','then','info','request\x20sent','debug','FaxAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','FaxAccount,\x20%s,\x20%s','message','result','catch','GetFaxAccount','FaxAccount','findAll','options','raw','where','attributes','include','model','map','NotifyFaxAccount','body','CmContact','describe','Sequelize','ValidationError','no\x20available\x20attributes','keys','createdAt','updatedAt','difference','CompanyId'];(function(_0x1aaae4,_0x549d08){var _0x572829=function(_0x21f231){while(--_0x21f231){_0x1aaae4['push'](_0x1aaae4['shift']());}};_0x572829(++_0x549d08);}(_0x54e2,0x191));var _0x254e=function(_0x3d4ed6,_0x285d3a){_0x3d4ed6=_0x3d4ed6-0x0;var _0x18efd7=_0x54e2[_0x3d4ed6];return _0x18efd7;};'use strict';var _=require('lodash');var util=require(_0x254e('0x0'));var moment=require(_0x254e('0x1'));var BPromise=require(_0x254e('0x2'));var rs=require(_0x254e('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x254e('0x4'))['db'];var utils=require(_0x254e('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x254e('0x6'));var jayson=require(_0x254e('0x7'));var client=jayson[_0x254e('0x8')]['http']({'port':0x232c});config['redis']=_[_0x254e('0x9')](config[_0x254e('0xa')],{'host':_0x254e('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x254e('0xa')]));require(_0x254e('0xc'))[_0x254e('0xd')](socket);function respondWithRpcPromise(_0x2d0662,_0x5d0cdc,_0x52fa16){return new BPromise(function(_0x5d961d,_0x50801a){return client[_0x254e('0xe')](_0x2d0662,_0x52fa16)[_0x254e('0xf')](function(_0x3ef237){logger[_0x254e('0x10')]('FaxAccount,\x20%s,\x20%s',_0x5d0cdc,_0x254e('0x11'));logger[_0x254e('0x12')](_0x254e('0x13'),_0x5d0cdc,_0x254e('0x11'),JSON[_0x254e('0x14')](_0x3ef237));if(_0x3ef237['error']){if(_0x3ef237[_0x254e('0x15')][_0x254e('0x16')]===0x1f4){logger[_0x254e('0x15')](_0x254e('0x17'),_0x5d0cdc,_0x3ef237[_0x254e('0x15')][_0x254e('0x18')]);return _0x50801a(_0x3ef237[_0x254e('0x15')][_0x254e('0x18')]);}logger['error'](_0x254e('0x17'),_0x5d0cdc,_0x3ef237['error']['message']);return _0x5d961d(_0x3ef237[_0x254e('0x15')][_0x254e('0x18')]);}else{logger['info'](_0x254e('0x17'),_0x5d0cdc,_0x254e('0x11'));_0x5d961d(_0x3ef237[_0x254e('0x19')][_0x254e('0x18')]);}})[_0x254e('0x1a')](function(_0x4dff6d){logger[_0x254e('0x15')]('FaxAccount,\x20%s,\x20%s',_0x5d0cdc,_0x4dff6d);_0x50801a(_0x4dff6d);});});}exports[_0x254e('0x1b')]=function(_0xfa91bc){var _0x5e78d1=this;return new Promise(function(_0x4c8de1,_0x7ecd3f){return db[_0x254e('0x1c')][_0x254e('0x1d')]({'raw':_0xfa91bc[_0x254e('0x1e')]?_0xfa91bc[_0x254e('0x1e')][_0x254e('0x1f')]===undefined?!![]:![]:!![],'where':_0xfa91bc[_0x254e('0x1e')]?_0xfa91bc['options'][_0x254e('0x20')]||null:null,'attributes':_0xfa91bc[_0x254e('0x1e')]?_0xfa91bc[_0x254e('0x1e')][_0x254e('0x21')]||null:null,'limit':_0xfa91bc[_0x254e('0x1e')]?_0xfa91bc['options']['limit']||null:null,'include':_0xfa91bc[_0x254e('0x1e')]?_0xfa91bc[_0x254e('0x1e')][_0x254e('0x22')]?_['map'](_0xfa91bc['options']['include'],function(_0x5b9e14){return{'model':db[_0x5b9e14[_0x254e('0x23')]],'as':_0x5b9e14['as'],'attributes':_0x5b9e14[_0x254e('0x21')],'include':_0x5b9e14[_0x254e('0x22')]?_[_0x254e('0x24')](_0x5b9e14[_0x254e('0x22')],function(_0x2eb3c5){return{'model':db[_0x2eb3c5[_0x254e('0x23')]],'as':_0x2eb3c5['as'],'attributes':_0x2eb3c5[_0x254e('0x21')],'include':_0x2eb3c5['include']?_[_0x254e('0x24')](_0x2eb3c5['include'],function(_0x1a39fd){return{'model':db[_0x1a39fd['model']],'as':_0x1a39fd['as'],'attributes':_0x1a39fd[_0x254e('0x21')]};}):[]};}):[]};}):[]:[]})[_0x254e('0xf')](function(_0x5da356){logger['info']('GetFaxAccount',_0xfa91bc);logger[_0x254e('0x12')](_0x254e('0x1b'),_0xfa91bc,JSON[_0x254e('0x14')](_0x5da356));_0x4c8de1(_0x5da356);})[_0x254e('0x1a')](function(_0x3055ce){logger[_0x254e('0x15')](_0x254e('0x1b'),_0x3055ce[_0x254e('0x18')],_0xfa91bc);_0x7ecd3f(_0x5e78d1['error'](0x1f4,_0x3055ce[_0x254e('0x18')]));});});};exports[_0x254e('0x25')]=function(_0x568e08,_0xf0f2f2,_0x3ddc78){var _0x42768d=this;return new Promise(function(_0x49e935,_0x559946){var _0x204485={'body':_0x568e08[_0x254e('0x26')],'channel':'fax'};var _0x2ed087=[];var _0x4155c5=[];var _0x500fda={};return db[_0x254e('0x27')][_0x254e('0x28')]()['then'](function(_0x2ecfac){if(!_0x2ecfac){throw new db[(_0x254e('0x29'))][(_0x254e('0x2a'))](_0x254e('0x2b'));}_0x2ed087=_['difference'](_[_0x254e('0x2c')](_0x2ecfac),[_0x254e('0x2d'),_0x254e('0x2e')]);_0x4155c5=_[_0x254e('0x2f')](_[_0x254e('0x2c')](_0x2ecfac),[_0x254e('0x2d'),_0x254e('0x2e'),_0x254e('0x30'),_0x254e('0x31')]);if(_0x568e08[_0x254e('0x26')]['id']){delete _0x568e08[_0x254e('0x26')]['id'];}if(_['isNil'](_0x568e08[_0x254e('0x26')][_0x254e('0x32')])){throw new db[(_0x254e('0x29'))]['ValidationError']('from\x20is\x20mandatory');}if(_[_0x254e('0x33')](_0x568e08[_0x254e('0x26')]['body'])||_0x568e08[_0x254e('0x26')][_0x254e('0x26')]===''){throw new db[(_0x254e('0x29'))]['ValidationError'](_0x254e('0x34'));}if(_[_0x254e('0x33')](_0x568e08[_0x254e('0x26')][_0x254e('0x35')])){throw new db['Sequelize']['ValidationError'](_0x254e('0x36')+_0x4155c5);}if(!_[_0x254e('0x37')](_0x4155c5,_0x568e08[_0x254e('0x26')]['mapKey'])){throw new db[(_0x254e('0x29'))][(_0x254e('0x2a'))](_0x254e('0x38')+_0x4155c5);}_0x500fda[_0x568e08['body']['mapKey']]=_0x568e08[_0x254e('0x26')][_0x254e('0x32')];})[_0x254e('0xf')](function(){return db['FaxAccount'][_0x254e('0x39')]({'where':{'id':_0x568e08[_0x254e('0x3a')]['id']},'include':[{'model':db[_0x254e('0x3b')],'as':'List','include':[{'model':db[_0x254e('0x27')],'as':_0x254e('0x3c'),'where':_0x500fda,'limit':0x1,'order':[[_0x254e('0x2e'),_0x254e('0x3d')]]}]},{'model':db[_0x254e('0x3e')],'as':_0x254e('0x3f')}]});})[_0x254e('0xf')](function(_0x35443f){if(_0x35443f&&_0x35443f[_0x254e('0x40')]){var _0x32e734=_0x35443f[_0x254e('0x41')]({'plain':!![]});_0x204485['account']=_0x32e734;_0x204485[_0x254e('0x42')]=_0x32e734['Applications'];_0x204485[_0x254e('0x43')]=_0x32e734[_0x254e('0x40')];_0x204485[_0x254e('0x42')]=_[_0x254e('0x44')](_0x204485[_0x254e('0x42')],['priority'],[_0x254e('0x45')]);if(_0x204485[_0x254e('0x3a')][_0x254e('0x3f')]){delete _0x204485[_0x254e('0x3a')][_0x254e('0x3f')];}if(_0x204485['account'][_0x254e('0x40')]&&_0x204485['account'][_0x254e('0x40')]['Contacts'][_0x254e('0x46')]){return _0x204485[_0x254e('0x3a')][_0x254e('0x40')][_0x254e('0x3c')][0x0];}var _0x1484c5=_['defaults'](_0x568e08[_0x254e('0x26')],{'firstName':_0x568e08[_0x254e('0x26')]['from'],'ListId':_0x32e734[_0x254e('0x31')]});_0x1484c5[_0x568e08['body'][_0x254e('0x35')]]=_0x568e08[_0x254e('0x26')][_0x254e('0x32')];return db['CmContact'][_0x254e('0x47')](_0x1484c5,{'fields':_0x2ed087,'raw':!![]});}})[_0x254e('0xf')](function(_0x133bec){_0x204485[_0x254e('0x48')]=_0x133bec;if(_0x133bec){var _0x4b6a26={'ContactId':_0x133bec['id'],'FaxAccountId':_0x568e08[_0x254e('0x3a')]['id'],'fax':_0x133bec[_0x254e('0x49')]};return db['FaxInteraction'][_0x254e('0x39')]({'where':{'ContactId':_0x133bec['id'],'closed':![],'FaxAccountId':_0x568e08[_0x254e('0x3a')]['id']}})[_0x254e('0xf')](function(_0x553653){if(_0x553653){return[_0x553653,![]];}return db[_0x254e('0x4a')][_0x254e('0x47')](_0x4b6a26)[_0x254e('0xf')](function(_0x53f53a){return[_0x53f53a,!![]];});});}else{throw new Error('Contact\x20not\x20found');}})['spread'](function(_0x180faf,_0x4eb186){var _0x4cd68f=_0x180faf['get']({'plain':!![]});if(_0x4eb186){if(_0x204485[_0x254e('0x3a')][_0x254e('0x4b')]){_0x204485[_0x254e('0x42')]['push']({'id':0x0,'priority':_0x204485['applications'][_0x254e('0x46')]+0x1,'app':'close','appdata':'unmanaged','interval':_0x254e('0x4c')});}_0x4cd68f[_0x254e('0x4d')]=!![];}else{_0x4cd68f[_0x254e('0x4d')]=![];}_0x204485['interaction']=_0x4cd68f;return db[_0x254e('0x4e')][_0x254e('0x47')]({'body':_0x568e08[_0x254e('0x26')][_0x254e('0x26')],'FaxAccountId':_0x568e08[_0x254e('0x3a')]['id'],'FaxInteractionId':_0x180faf['id'],'direction':'in','ContactId':_0x180faf[_0x254e('0x4f')],'AttachmentId':_0x568e08[_0x254e('0x26')][_0x254e('0x50')]});})[_0x254e('0xf')](function(_0x4d4676){_0x204485[_0x254e('0x18')]=_0x4d4676;if(_0x204485['interaction'][_0x254e('0x51')]){return db[_0x254e('0x52')][_0x254e('0x39')]({'attributes':['id',_0x254e('0x53')],'where':{'id':_0x204485[_0x254e('0x54')]['UserId']}})[_0x254e('0xf')](function(_0x414f27){if(_0x414f27){_0x204485['applications'][_0x254e('0x55')]({'id':0x0,'priority':0x0,'app':_0x254e('0x56'),'appdata':_0x414f27['name']+','+(_0x204485[_0x254e('0x3a')][_0x254e('0x57')]||0xa),'interval':'*,*,*,*'});}return respondWithRpcPromise(_0x254e('0x58'),_0x254e('0x59'),_0x204485);});}return respondWithRpcPromise(_0x254e('0x58'),'startRouting',_0x204485);})['then'](function(_0x1288eb){_0x49e935(_0x1288eb);})[_0x254e('0x1a')](function(_0x30431e){_0x559946(_0x42768d[_0x254e('0x15')](0x1f4,_0x30431e[_0x254e('0x18')]));});});};
\ No newline at end of file
index d3cb7c0..c3230da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x52d5=['emit','register','./faxAccount.events','save','update'];(function(_0x277cdb,_0x20161e){var _0x5d7639=function(_0x2b5ef2){while(--_0x2b5ef2){_0x277cdb['push'](_0x277cdb['shift']());}};_0x5d7639(++_0x20161e);}(_0x52d5,0x93));var _0x552d=function(_0x1278ea,_0x304fc2){_0x1278ea=_0x1278ea-0x0;var _0x54ff7e=_0x52d5[_0x1278ea];return _0x54ff7e;};'use strict';var FaxAccountEvents=require(_0x552d('0x0'));var events=[_0x552d('0x1'),'remove',_0x552d('0x2')];function createListener(_0x1fa5f4,_0x22144a){return function(_0x1e6ab2){_0x22144a[_0x552d('0x3')](_0x1fa5f4,_0x1e6ab2);};}function removeListener(_0x399390,_0x19767c){return function(){FaxAccountEvents['removeListener'](_0x399390,_0x19767c);};}exports[_0x552d('0x4')]=function(_0x367308){for(var _0x431529=0x0,_0x42ab26=events['length'];_0x431529<_0x42ab26;_0x431529++){var _0x5665a5=events[_0x431529];var _0x5b8975=createListener('faxAccount:'+_0x5665a5,_0x367308);FaxAccountEvents['on'](_0x5665a5,_0x5b8975);}};
\ No newline at end of file
+var _0xd6f4=['removeListener','faxAccount:','./faxAccount.events','remove','update'];(function(_0x247fa1,_0x4ec37c){var _0x244f35=function(_0xfb98be){while(--_0xfb98be){_0x247fa1['push'](_0x247fa1['shift']());}};_0x244f35(++_0x4ec37c);}(_0xd6f4,0x1ce));var _0x4d6f=function(_0x15502b,_0x51eda4){_0x15502b=_0x15502b-0x0;var _0x124f04=_0xd6f4[_0x15502b];return _0x124f04;};'use strict';var FaxAccountEvents=require(_0x4d6f('0x0'));var events=['save',_0x4d6f('0x1'),_0x4d6f('0x2')];function createListener(_0x9ae4c9,_0x4a725a){return function(_0x1be2fd){_0x4a725a['emit'](_0x9ae4c9,_0x1be2fd);};}function removeListener(_0x367cea,_0x541641){return function(){FaxAccountEvents[_0x4d6f('0x3')](_0x367cea,_0x541641);};}exports['register']=function(_0x2e52dd){for(var _0x39a430=0x0,_0x3dad48=events['length'];_0x39a430<_0x3dad48;_0x39a430++){var _0x4db7b6=events[_0x39a430];var _0xe0b255=createListener(_0x4d6f('0x4')+_0x4db7b6,_0x2e52dd);FaxAccountEvents['on'](_0x4db7b6,_0xe0b255);}};
\ No newline at end of file
index 98df19c..595bf01 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(_0x2716b1,_0x5064d6){var _0x3625e8=function(_0x21e5fb){while(--_0x21e5fb){_0x2716b1['push'](_0x2716b1['shift']());}};_0x3625e8(++_0x5064d6);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2160a9,_0x3cbd9e){_0x2160a9=_0x2160a9-0x0;var _0xa88cf7=_0xa9e0[_0x2160a9];return _0xa88cf7;};'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(_0x1e1029,_0x1d8dad){var _0x12d5d1=function(_0x55ec02){while(--_0x55ec02){_0x1e1029['push'](_0x1e1029['shift']());}};_0x12d5d1(++_0x1d8dad);}(_0xa9e0,0x123));var _0x0a9e=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0xa9e0[_0x6c993a];return _0x27f547;};'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 14f843b..c143bf8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfffa=['TEXT','STRING','INTEGER','noop'];(function(_0x396d0d,_0x1ed99c){var _0x28afe1=function(_0xcb935e){while(--_0xcb935e){_0x396d0d['push'](_0x396d0d['shift']());}};_0x28afe1(++_0x1ed99c);}(_0xfffa,0x15e));var _0xafff=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0xfffa[_0x4565bf];return _0x5610ba;};'use strict';var Sequelize=require('sequelize');module['exports']={'priority':{'type':Sequelize[_0xafff('0x0')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xafff('0x1')},'appdata':{'type':Sequelize[_0xafff('0x2')]()},'description':{'type':Sequelize[_0xafff('0x3')]},'interval':{'type':Sequelize[_0xafff('0x3')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
+var _0x325c=['noop','TEXT','*,*,*,*','exports','STRING'];(function(_0x54f6bf,_0xec38f2){var _0x249cc0=function(_0x47f697){while(--_0x47f697){_0x54f6bf['push'](_0x54f6bf['shift']());}};_0x249cc0(++_0xec38f2);}(_0x325c,0xc1));var _0xc325=function(_0x501157,_0x12a931){_0x501157=_0x501157-0x0;var _0x5beb3a=_0x325c[_0x501157];return _0x5beb3a;};'use strict';var Sequelize=require('sequelize');module[_0xc325('0x0')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0xc325('0x1')],'allowNull':![],'defaultValue':_0xc325('0x2')},'appdata':{'type':Sequelize[_0xc325('0x3')]()},'description':{'type':Sequelize[_0xc325('0x1')]},'interval':{'type':Sequelize[_0xc325('0x1')],'defaultValue':_0xc325('0x4')}};
\ No newline at end of file
index 9100073..d745cce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed23=['path','ejs','fs-extra','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../mysqldb','status','json','offset','limit','undefined','count','set','Content-Range','reject','update','then','destroy','end','sendStatus','error','stack','name','send','index','map','FaxApplication','rawAttributes','fieldName','key','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','findAll','catch','show','params','find','create','body','eml-format','zip-dir','fast-json-patch','moment','bluebird','util'];(function(_0x4af3eb,_0x48cca9){var _0x96ebba=function(_0x23e683){while(--_0x23e683){_0x4af3eb['push'](_0x4af3eb['shift']());}};_0x96ebba(++_0x48cca9);}(_0xed23,0x88));var _0x3ed2=function(_0x21876c,_0xcd8d7b){_0x21876c=_0x21876c-0x0;var _0x5d1d5f=_0xed23[_0x21876c];return _0x5d1d5f;};'use strict';var emlformat=require(_0x3ed2('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x3ed2('0x1'));var jsonpatch=require(_0x3ed2('0x2'));var rp=require('request-promise');var moment=require(_0x3ed2('0x3'));var BPromise=require(_0x3ed2('0x4'));var Mustache=require('mustache');var util=require(_0x3ed2('0x5'));var path=require(_0x3ed2('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x3ed2('0x7'));var fs=require('fs');var fs_extra=require(_0x3ed2('0x8'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x3ed2('0x9'));var jsforce=require('jsforce');var deskjs=require(_0x3ed2('0xa'));var toCsv=require(_0x3ed2('0xb'));var querystring=require(_0x3ed2('0xc'));var Papa=require(_0x3ed2('0xd'));var Redis=require(_0x3ed2('0xe'));var authService=require(_0x3ed2('0xf'));var qs=require(_0x3ed2('0x10'));var as=require(_0x3ed2('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x3ed2('0x12'));var utils=require(_0x3ed2('0x13'));var config=require(_0x3ed2('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x3ed2('0x15'))['db'];function respondWithStatusCode(_0x36913f,_0x302837){_0x302837=_0x302837||0xcc;return function(_0x5f4b0f){if(_0x5f4b0f){return _0x36913f['sendStatus'](_0x302837);}return _0x36913f['status'](_0x302837)['end']();};}function respondWithResult(_0x55fe86,_0x1c8ca5){_0x1c8ca5=_0x1c8ca5||0xc8;return function(_0x511e32){if(_0x511e32){return _0x55fe86[_0x3ed2('0x16')](_0x1c8ca5)[_0x3ed2('0x17')](_0x511e32);}};}function respondWithFilteredResult(_0x9ddf99,_0x251d5d){return function(_0x4d7707){if(_0x4d7707){var _0xcb57b3=typeof _0x251d5d[_0x3ed2('0x18')]==='undefined'&&typeof _0x251d5d[_0x3ed2('0x19')]===_0x3ed2('0x1a');var _0xb453a1=_0x4d7707[_0x3ed2('0x1b')];var _0x19d4c7=_0xcb57b3?0x0:_0x251d5d[_0x3ed2('0x18')];var _0x277044=_0xcb57b3?_0x4d7707[_0x3ed2('0x1b')]:_0x251d5d[_0x3ed2('0x18')]+_0x251d5d[_0x3ed2('0x19')];var _0x4ba22d;if(_0x277044>=_0xb453a1){_0x277044=_0xb453a1;_0x4ba22d=0xc8;}else{_0x4ba22d=0xce;}_0x9ddf99[_0x3ed2('0x16')](_0x4ba22d);return _0x9ddf99[_0x3ed2('0x1c')](_0x3ed2('0x1d'),_0x19d4c7+'-'+_0x277044+'/'+_0xb453a1)['json'](_0x4d7707);}return null;};}function patchUpdates(_0x53629b){return function(_0x37c1b5){try{jsonpatch['apply'](_0x37c1b5,_0x53629b,!![]);}catch(_0x1b0a42){return BPromise[_0x3ed2('0x1e')](_0x1b0a42);}return _0x37c1b5['save']();};}function saveUpdates(_0x56151d,_0x1ac7ed){return function(_0x1a2565){if(_0x1a2565){return _0x1a2565[_0x3ed2('0x1f')](_0x56151d)[_0x3ed2('0x20')](function(_0x333b14){return _0x333b14;});}return null;};}function removeEntity(_0x49832c,_0x493f9e){return function(_0x2e299f){if(_0x2e299f){return _0x2e299f[_0x3ed2('0x21')]()[_0x3ed2('0x20')](function(){_0x49832c['status'](0xcc)[_0x3ed2('0x22')]();});}};}function handleEntityNotFound(_0x5299ef,_0x32fc4f){return function(_0x1b3e0a){if(!_0x1b3e0a){_0x5299ef[_0x3ed2('0x23')](0x194);}return _0x1b3e0a;};}function handleError(_0x6657bd,_0x5a8b4d){_0x5a8b4d=_0x5a8b4d||0x1f4;return function(_0x57b6d0){logger[_0x3ed2('0x24')](_0x57b6d0[_0x3ed2('0x25')]);if(_0x57b6d0[_0x3ed2('0x26')]){delete _0x57b6d0[_0x3ed2('0x26')];}_0x6657bd[_0x3ed2('0x16')](_0x5a8b4d)[_0x3ed2('0x27')](_0x57b6d0);};}exports[_0x3ed2('0x28')]=function(_0x582f64,_0xc044e8){var _0xf737dc={},_0x1b5374={},_0x514943={'count':0x0,'rows':[]};var _0x40dbf6=_[_0x3ed2('0x29')](db[_0x3ed2('0x2a')][_0x3ed2('0x2b')],function(_0x108c6c){return{'name':_0x108c6c[_0x3ed2('0x2c')],'type':_0x108c6c['type'][_0x3ed2('0x2d')]};});_0x1b5374[_0x3ed2('0x2e')]=_[_0x3ed2('0x29')](_0x40dbf6,_0x3ed2('0x26'));_0x1b5374['query']=_[_0x3ed2('0x2f')](_0x582f64[_0x3ed2('0x30')]);_0x1b5374[_0x3ed2('0x31')]=_[_0x3ed2('0x32')](_0x1b5374['model'],_0x1b5374[_0x3ed2('0x30')]);_0xf737dc['attributes']=_[_0x3ed2('0x32')](_0x1b5374['model'],qs[_0x3ed2('0x33')](_0x582f64[_0x3ed2('0x30')][_0x3ed2('0x33')]));_0xf737dc[_0x3ed2('0x34')]=_0xf737dc[_0x3ed2('0x34')][_0x3ed2('0x35')]?_0xf737dc['attributes']:_0x1b5374[_0x3ed2('0x2e')];if(!_0x582f64[_0x3ed2('0x30')][_0x3ed2('0x36')]('nolimit')){_0xf737dc[_0x3ed2('0x19')]=qs[_0x3ed2('0x19')](_0x582f64['query'][_0x3ed2('0x19')]);_0xf737dc[_0x3ed2('0x18')]=qs[_0x3ed2('0x18')](_0x582f64[_0x3ed2('0x30')][_0x3ed2('0x18')]);}_0xf737dc['order']=qs[_0x3ed2('0x37')](_0x582f64[_0x3ed2('0x30')][_0x3ed2('0x37')]);_0xf737dc[_0x3ed2('0x38')]=qs[_0x3ed2('0x31')](_[_0x3ed2('0x39')](_0x582f64[_0x3ed2('0x30')],_0x1b5374[_0x3ed2('0x31')]),_0x40dbf6);if(_0x582f64[_0x3ed2('0x30')][_0x3ed2('0x3a')]){_0xf737dc[_0x3ed2('0x38')]=_[_0x3ed2('0x3b')](_0xf737dc[_0x3ed2('0x38')],{'$or':_[_0x3ed2('0x29')](_0x40dbf6,function(_0x496876){if(_0x496876[_0x3ed2('0x3c')]!==_0x3ed2('0x3d')){var _0x11cc47={};_0x11cc47[_0x496876[_0x3ed2('0x26')]]={'$like':'%'+_0x582f64[_0x3ed2('0x30')][_0x3ed2('0x3a')]+'%'};return _0x11cc47;}})});}_0xf737dc=_['merge']({},_0xf737dc,_0x582f64[_0x3ed2('0x3e')]);var _0x287333={'where':_0xf737dc[_0x3ed2('0x38')]};return db[_0x3ed2('0x2a')][_0x3ed2('0x1b')](_0x287333)['then'](function(_0x316a8b){_0x514943[_0x3ed2('0x1b')]=_0x316a8b;if(_0x582f64[_0x3ed2('0x30')][_0x3ed2('0x3f')]){_0xf737dc['include']=[{'all':!![]}];}return db[_0x3ed2('0x2a')][_0x3ed2('0x40')](_0xf737dc);})[_0x3ed2('0x20')](function(_0x530840){_0x514943['rows']=_0x530840;return _0x514943;})['then'](respondWithFilteredResult(_0xc044e8,_0xf737dc))[_0x3ed2('0x41')](handleError(_0xc044e8,null));};exports[_0x3ed2('0x42')]=function(_0x25b84c,_0x39690e){var _0xeca62d={'raw':!![],'where':{'id':_0x25b84c[_0x3ed2('0x43')]['id']}},_0x569ca8={};_0x569ca8['model']=_[_0x3ed2('0x2f')](db[_0x3ed2('0x2a')][_0x3ed2('0x2b')]);_0x569ca8[_0x3ed2('0x30')]=_[_0x3ed2('0x2f')](_0x25b84c[_0x3ed2('0x30')]);_0x569ca8[_0x3ed2('0x31')]=_['intersection'](_0x569ca8['model'],_0x569ca8[_0x3ed2('0x30')]);_0xeca62d['attributes']=_[_0x3ed2('0x32')](_0x569ca8[_0x3ed2('0x2e')],qs[_0x3ed2('0x33')](_0x25b84c[_0x3ed2('0x30')][_0x3ed2('0x33')]));_0xeca62d[_0x3ed2('0x34')]=_0xeca62d[_0x3ed2('0x34')][_0x3ed2('0x35')]?_0xeca62d[_0x3ed2('0x34')]:_0x569ca8[_0x3ed2('0x2e')];if(_0x25b84c[_0x3ed2('0x30')][_0x3ed2('0x3f')]){_0xeca62d['include']=[{'all':!![]}];}_0xeca62d=_[_0x3ed2('0x3b')]({},_0xeca62d,_0x25b84c['options']);return db['FaxApplication'][_0x3ed2('0x44')](_0xeca62d)['then'](handleEntityNotFound(_0x39690e,null))[_0x3ed2('0x20')](respondWithResult(_0x39690e,null))['catch'](handleError(_0x39690e,null));};exports['create']=function(_0x1101b3,_0x45529d){return db['FaxApplication'][_0x3ed2('0x45')](_0x1101b3[_0x3ed2('0x46')],{})[_0x3ed2('0x20')](respondWithResult(_0x45529d,0xc9))['catch'](handleError(_0x45529d,null));};exports[_0x3ed2('0x1f')]=function(_0x68ff7d,_0xa41d48){if(_0x68ff7d['body']['id']){delete _0x68ff7d[_0x3ed2('0x46')]['id'];}return db[_0x3ed2('0x2a')][_0x3ed2('0x44')]({'where':{'id':_0x68ff7d[_0x3ed2('0x43')]['id']}})[_0x3ed2('0x20')](handleEntityNotFound(_0xa41d48,null))[_0x3ed2('0x20')](saveUpdates(_0x68ff7d[_0x3ed2('0x46')],null))[_0x3ed2('0x20')](respondWithResult(_0xa41d48,null))[_0x3ed2('0x41')](handleError(_0xa41d48,null));};exports[_0x3ed2('0x21')]=function(_0x3bceed,_0x1b0254){return db[_0x3ed2('0x2a')]['find']({'where':{'id':_0x3bceed['params']['id']}})['then'](handleEntityNotFound(_0x1b0254,null))['then'](removeEntity(_0x1b0254,null))[_0x3ed2('0x41')](handleError(_0x1b0254,null));};
\ No newline at end of file
+var _0x8a3a=['undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','error','stack','name','send','map','FaxApplication','rawAttributes','fieldName','query','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','filter','merge','where','type','options','includeAll','include','findAll','catch','show','params','keys','create','body','update','find','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x8a3a,0x1a4));var _0xa8a3=function(_0x367519,_0x1bf514){_0x367519=_0x367519-0x0;var _0x5a20cd=_0x8a3a[_0x367519];return _0x5a20cd;};'use strict';var emlformat=require(_0xa8a3('0x0'));var rimraf=require(_0xa8a3('0x1'));var zipdir=require(_0xa8a3('0x2'));var jsonpatch=require(_0xa8a3('0x3'));var rp=require(_0xa8a3('0x4'));var moment=require(_0xa8a3('0x5'));var BPromise=require(_0xa8a3('0x6'));var Mustache=require(_0xa8a3('0x7'));var util=require('util');var path=require(_0xa8a3('0x8'));var sox=require(_0xa8a3('0x9'));var csv=require(_0xa8a3('0xa'));var ejs=require(_0xa8a3('0xb'));var fs=require('fs');var fs_extra=require(_0xa8a3('0xc'));var _=require(_0xa8a3('0xd'));var squel=require(_0xa8a3('0xe'));var crypto=require(_0xa8a3('0xf'));var jsforce=require('jsforce');var deskjs=require(_0xa8a3('0x10'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xa8a3('0x11'));var Redis=require(_0xa8a3('0x12'));var authService=require(_0xa8a3('0x13'));var qs=require(_0xa8a3('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa8a3('0x15'));var logger=require('../../config/logger')(_0xa8a3('0x16'));var utils=require('../../config/utils');var config=require(_0xa8a3('0x17'));var licenseUtil=require(_0xa8a3('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3adfd5,_0x2435fb){_0x2435fb=_0x2435fb||0xcc;return function(_0x4ddf18){if(_0x4ddf18){return _0x3adfd5[_0xa8a3('0x19')](_0x2435fb);}return _0x3adfd5[_0xa8a3('0x1a')](_0x2435fb)[_0xa8a3('0x1b')]();};}function respondWithResult(_0x43aba4,_0x42b3b2){_0x42b3b2=_0x42b3b2||0xc8;return function(_0x5dbbda){if(_0x5dbbda){return _0x43aba4[_0xa8a3('0x1a')](_0x42b3b2)[_0xa8a3('0x1c')](_0x5dbbda);}};}function respondWithFilteredResult(_0x112a57,_0x57c3ae){return function(_0x363786){if(_0x363786){var _0x5f2442=typeof _0x57c3ae[_0xa8a3('0x1d')]===_0xa8a3('0x1e')&&typeof _0x57c3ae[_0xa8a3('0x1f')]==='undefined';var _0x3dcdd4=_0x363786[_0xa8a3('0x20')];var _0x14a444=_0x5f2442?0x0:_0x57c3ae[_0xa8a3('0x1d')];var _0x4ef0f5=_0x5f2442?_0x363786[_0xa8a3('0x20')]:_0x57c3ae[_0xa8a3('0x1d')]+_0x57c3ae[_0xa8a3('0x1f')];var _0x51ac0a;if(_0x4ef0f5>=_0x3dcdd4){_0x4ef0f5=_0x3dcdd4;_0x51ac0a=0xc8;}else{_0x51ac0a=0xce;}_0x112a57['status'](_0x51ac0a);return _0x112a57[_0xa8a3('0x21')](_0xa8a3('0x22'),_0x14a444+'-'+_0x4ef0f5+'/'+_0x3dcdd4)[_0xa8a3('0x1c')](_0x363786);}return null;};}function patchUpdates(_0x295e86){return function(_0x45a44b){try{jsonpatch[_0xa8a3('0x23')](_0x45a44b,_0x295e86,!![]);}catch(_0xb31700){return BPromise[_0xa8a3('0x24')](_0xb31700);}return _0x45a44b[_0xa8a3('0x25')]();};}function saveUpdates(_0x1fe7de,_0x9b3aae){return function(_0x41b9a4){if(_0x41b9a4){return _0x41b9a4['update'](_0x1fe7de)[_0xa8a3('0x26')](function(_0x3a3246){return _0x3a3246;});}return null;};}function removeEntity(_0x50f367,_0x1ca616){return function(_0x25a67e){if(_0x25a67e){return _0x25a67e[_0xa8a3('0x27')]()[_0xa8a3('0x26')](function(){_0x50f367['status'](0xcc)[_0xa8a3('0x1b')]();});}};}function handleEntityNotFound(_0xeab10e,_0x27bda6){return function(_0x13ce6c){if(!_0x13ce6c){_0xeab10e[_0xa8a3('0x19')](0x194);}return _0x13ce6c;};}function handleError(_0x2c09c1,_0x32a5d0){_0x32a5d0=_0x32a5d0||0x1f4;return function(_0x501bb4){logger[_0xa8a3('0x28')](_0x501bb4[_0xa8a3('0x29')]);if(_0x501bb4[_0xa8a3('0x2a')]){delete _0x501bb4[_0xa8a3('0x2a')];}_0x2c09c1[_0xa8a3('0x1a')](_0x32a5d0)[_0xa8a3('0x2b')](_0x501bb4);};}exports['index']=function(_0x53dcc2,_0x36e3bd){var _0x70ac48={},_0x46e662={},_0x6723e1={'count':0x0,'rows':[]};var _0x3653eb=_[_0xa8a3('0x2c')](db[_0xa8a3('0x2d')][_0xa8a3('0x2e')],function(_0x45909e){return{'name':_0x45909e[_0xa8a3('0x2f')],'type':_0x45909e['type']['key']};});_0x46e662['model']=_[_0xa8a3('0x2c')](_0x3653eb,_0xa8a3('0x2a'));_0x46e662[_0xa8a3('0x30')]=_['keys'](_0x53dcc2[_0xa8a3('0x30')]);_0x46e662[_0xa8a3('0x31')]=_[_0xa8a3('0x32')](_0x46e662[_0xa8a3('0x33')],_0x46e662[_0xa8a3('0x30')]);_0x70ac48['attributes']=_[_0xa8a3('0x32')](_0x46e662[_0xa8a3('0x33')],qs[_0xa8a3('0x34')](_0x53dcc2[_0xa8a3('0x30')][_0xa8a3('0x34')]));_0x70ac48[_0xa8a3('0x35')]=_0x70ac48[_0xa8a3('0x35')][_0xa8a3('0x36')]?_0x70ac48[_0xa8a3('0x35')]:_0x46e662[_0xa8a3('0x33')];if(!_0x53dcc2[_0xa8a3('0x30')][_0xa8a3('0x37')](_0xa8a3('0x38'))){_0x70ac48[_0xa8a3('0x1f')]=qs['limit'](_0x53dcc2[_0xa8a3('0x30')][_0xa8a3('0x1f')]);_0x70ac48[_0xa8a3('0x1d')]=qs[_0xa8a3('0x1d')](_0x53dcc2[_0xa8a3('0x30')][_0xa8a3('0x1d')]);}_0x70ac48[_0xa8a3('0x39')]=qs[_0xa8a3('0x3a')](_0x53dcc2['query'][_0xa8a3('0x3a')]);_0x70ac48['where']=qs['filters'](_['pick'](_0x53dcc2[_0xa8a3('0x30')],_0x46e662['filters']),_0x3653eb);if(_0x53dcc2[_0xa8a3('0x30')][_0xa8a3('0x3b')]){_0x70ac48['where']=_[_0xa8a3('0x3c')](_0x70ac48[_0xa8a3('0x3d')],{'$or':_[_0xa8a3('0x2c')](_0x3653eb,function(_0x5c9ca9){if(_0x5c9ca9[_0xa8a3('0x3e')]!=='VIRTUAL'){var _0x567115={};_0x567115[_0x5c9ca9[_0xa8a3('0x2a')]]={'$like':'%'+_0x53dcc2[_0xa8a3('0x30')][_0xa8a3('0x3b')]+'%'};return _0x567115;}})});}_0x70ac48=_[_0xa8a3('0x3c')]({},_0x70ac48,_0x53dcc2[_0xa8a3('0x3f')]);var _0x259f0f={'where':_0x70ac48['where']};return db[_0xa8a3('0x2d')]['count'](_0x259f0f)[_0xa8a3('0x26')](function(_0x3f2ecb){_0x6723e1['count']=_0x3f2ecb;if(_0x53dcc2[_0xa8a3('0x30')][_0xa8a3('0x40')]){_0x70ac48[_0xa8a3('0x41')]=[{'all':!![]}];}return db[_0xa8a3('0x2d')][_0xa8a3('0x42')](_0x70ac48);})['then'](function(_0x31a0be){_0x6723e1['rows']=_0x31a0be;return _0x6723e1;})[_0xa8a3('0x26')](respondWithFilteredResult(_0x36e3bd,_0x70ac48))[_0xa8a3('0x43')](handleError(_0x36e3bd,null));};exports[_0xa8a3('0x44')]=function(_0x5db3cc,_0x5c0c8d){var _0x4e1778={'raw':!![],'where':{'id':_0x5db3cc[_0xa8a3('0x45')]['id']}},_0x2286db={};_0x2286db['model']=_[_0xa8a3('0x46')](db[_0xa8a3('0x2d')][_0xa8a3('0x2e')]);_0x2286db[_0xa8a3('0x30')]=_['keys'](_0x5db3cc['query']);_0x2286db['filters']=_[_0xa8a3('0x32')](_0x2286db[_0xa8a3('0x33')],_0x2286db[_0xa8a3('0x30')]);_0x4e1778['attributes']=_[_0xa8a3('0x32')](_0x2286db['model'],qs[_0xa8a3('0x34')](_0x5db3cc[_0xa8a3('0x30')][_0xa8a3('0x34')]));_0x4e1778['attributes']=_0x4e1778['attributes'][_0xa8a3('0x36')]?_0x4e1778[_0xa8a3('0x35')]:_0x2286db[_0xa8a3('0x33')];if(_0x5db3cc[_0xa8a3('0x30')][_0xa8a3('0x40')]){_0x4e1778['include']=[{'all':!![]}];}_0x4e1778=_[_0xa8a3('0x3c')]({},_0x4e1778,_0x5db3cc[_0xa8a3('0x3f')]);return db['FaxApplication']['find'](_0x4e1778)['then'](handleEntityNotFound(_0x5c0c8d,null))[_0xa8a3('0x26')](respondWithResult(_0x5c0c8d,null))[_0xa8a3('0x43')](handleError(_0x5c0c8d,null));};exports[_0xa8a3('0x47')]=function(_0x328267,_0x108d2d){return db[_0xa8a3('0x2d')]['create'](_0x328267[_0xa8a3('0x48')],{})[_0xa8a3('0x26')](respondWithResult(_0x108d2d,0xc9))['catch'](handleError(_0x108d2d,null));};exports[_0xa8a3('0x49')]=function(_0x2f32c0,_0x597c96){if(_0x2f32c0[_0xa8a3('0x48')]['id']){delete _0x2f32c0[_0xa8a3('0x48')]['id'];}return db[_0xa8a3('0x2d')][_0xa8a3('0x4a')]({'where':{'id':_0x2f32c0[_0xa8a3('0x45')]['id']}})[_0xa8a3('0x26')](handleEntityNotFound(_0x597c96,null))[_0xa8a3('0x26')](saveUpdates(_0x2f32c0[_0xa8a3('0x48')],null))[_0xa8a3('0x26')](respondWithResult(_0x597c96,null))[_0xa8a3('0x43')](handleError(_0x597c96,null));};exports[_0xa8a3('0x27')]=function(_0x56d6a5,_0x2e7739){return db['FaxApplication']['find']({'where':{'id':_0x56d6a5[_0xa8a3('0x45')]['id']}})['then'](handleEntityNotFound(_0x2e7739,null))['then'](removeEntity(_0x2e7739,null))[_0xa8a3('0x43')](handleError(_0x2e7739,null));};
\ No newline at end of file
index 21fdfab..6222f53 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdfcc=['util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./faxApplication.attributes','exports','define','FaxApplication','fax_applications','utf8mb4','lodash'];(function(_0x4accd3,_0x59c83e){var _0x29e032=function(_0x45e61f){while(--_0x45e61f){_0x4accd3['push'](_0x4accd3['shift']());}};_0x29e032(++_0x59c83e);}(_0xdfcc,0xfe));var _0xcdfc=function(_0x2af160,_0x765b1){_0x2af160=_0x2af160-0x0;var _0x439d67=_0xdfcc[_0x2af160];return _0x439d67;};'use strict';var _=require(_0xcdfc('0x0'));var util=require(_0xcdfc('0x1'));var logger=require(_0xcdfc('0x2'))(_0xcdfc('0x3'));var moment=require(_0xcdfc('0x4'));var BPromise=require(_0xcdfc('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xcdfc('0x6'));var rimraf=require(_0xcdfc('0x7'));var config=require(_0xcdfc('0x8'));var attributes=require(_0xcdfc('0x9'));module[_0xcdfc('0xa')]=function(_0x113f32,_0x4ec872){return _0x113f32[_0xcdfc('0xb')](_0xcdfc('0xc'),attributes,{'tableName':_0xcdfc('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xcdfc('0xe'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xa5fc=['../../config/environment','exports','fax_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','request-promise','path','rimraf'];(function(_0xd2a2aa,_0x3bfcf8){var _0x113ca5=function(_0x276d58){while(--_0x276d58){_0xd2a2aa['push'](_0xd2a2aa['shift']());}};_0x113ca5(++_0x3bfcf8);}(_0xa5fc,0x177));var _0xca5f=function(_0x4a4ec1,_0x13addf){_0x4a4ec1=_0x4a4ec1-0x0;var _0x1aa076=_0xa5fc[_0x4a4ec1];return _0x1aa076;};'use strict';var _=require(_0xca5f('0x0'));var util=require(_0xca5f('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xca5f('0x2'));var fs=require('fs');var path=require(_0xca5f('0x3'));var rimraf=require(_0xca5f('0x4'));var config=require(_0xca5f('0x5'));var attributes=require('./faxApplication.attributes');module[_0xca5f('0x6')]=function(_0x569885,_0x3fcd93){return _0x569885['define']('FaxApplication',attributes,{'tableName':_0xca5f('0x7'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xca5f('0x8'),'collate':_0xca5f('0x9')});};
\ No newline at end of file
index 47e2984..dcc0c88 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe54d=['bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','FaxApplication,\x20%s,\x20%s','request\x20sent','debug','FaxApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','UpdateFaxApplication','FaxApplication','update','body','options','raw','where','attributes','then','lodash','util'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0xe54d,0xbe));var _0xde54=function(_0x33de54,_0x5434b9){_0x33de54=_0x33de54-0x0;var _0x18fe1f=_0xe54d[_0x33de54];return _0x18fe1f;};'use strict';var _=require(_0xde54('0x0'));var util=require(_0xde54('0x1'));var moment=require('moment');var BPromise=require(_0xde54('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xde54('0x3'));var db=require(_0xde54('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xde54('0x5'))(_0xde54('0x6'));var config=require(_0xde54('0x7'));var jayson=require(_0xde54('0x8'));var client=jayson[_0xde54('0x9')][_0xde54('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2e37f8,_0x1c3e07,_0x353c26){return new BPromise(function(_0x2c0414,_0x21bb11){return client[_0xde54('0xb')](_0x2e37f8,_0x353c26)['then'](function(_0x8e2891){logger[_0xde54('0xc')](_0xde54('0xd'),_0x1c3e07,_0xde54('0xe'));logger[_0xde54('0xf')](_0xde54('0x10'),_0x1c3e07,'request\x20sent',JSON[_0xde54('0x11')](_0x8e2891));if(_0x8e2891[_0xde54('0x12')]){if(_0x8e2891[_0xde54('0x12')][_0xde54('0x13')]===0x1f4){logger['error']('FaxApplication,\x20%s,\x20%s',_0x1c3e07,_0x8e2891[_0xde54('0x12')][_0xde54('0x14')]);return _0x21bb11(_0x8e2891[_0xde54('0x12')][_0xde54('0x14')]);}logger['error'](_0xde54('0xd'),_0x1c3e07,_0x8e2891[_0xde54('0x12')]['message']);return _0x2c0414(_0x8e2891[_0xde54('0x12')]['message']);}else{logger['info'](_0xde54('0xd'),_0x1c3e07,_0xde54('0xe'));_0x2c0414(_0x8e2891[_0xde54('0x15')][_0xde54('0x14')]);}})[_0xde54('0x16')](function(_0x13b48b){logger['error'](_0xde54('0xd'),_0x1c3e07,_0x13b48b);_0x21bb11(_0x13b48b);});});}exports[_0xde54('0x17')]=function(_0x38c68f){var _0x885f79=this;return new Promise(function(_0x42ab22,_0x4b90c5){return db[_0xde54('0x18')][_0xde54('0x19')](_0x38c68f[_0xde54('0x1a')],{'raw':_0x38c68f[_0xde54('0x1b')]?_0x38c68f[_0xde54('0x1b')][_0xde54('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x38c68f['options']?_0x38c68f['options'][_0xde54('0x1d')]||null:null,'attributes':_0x38c68f['options']?_0x38c68f[_0xde54('0x1b')][_0xde54('0x1e')]||null:null,'limit':_0x38c68f[_0xde54('0x1b')]?_0x38c68f[_0xde54('0x1b')]['limit']||null:null})[_0xde54('0x1f')](function(_0x36f594){logger[_0xde54('0xc')](_0xde54('0x17'),_0x38c68f);logger['debug'](_0xde54('0x17'),_0x38c68f,JSON[_0xde54('0x11')](_0x36f594));_0x42ab22(_0x36f594);})[_0xde54('0x16')](function(_0x2fe191){logger[_0xde54('0x12')](_0xde54('0x17'),_0x2fe191[_0xde54('0x14')],_0x38c68f);_0x4b90c5(_0x885f79[_0xde54('0x12')](0x1f4,_0x2fe191[_0xde54('0x14')]));});});};
\ No newline at end of file
+var _0xc285=['then','info','FaxApplication,\x20%s,\x20%s','request\x20sent','debug','FaxApplication,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','FaxApplication','update','options','raw','where','limit','UpdateFaxApplication','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request'];(function(_0x2842e5,_0x3e3266){var _0x2fd2c5=function(_0x1343cf){while(--_0x1343cf){_0x2842e5['push'](_0x2842e5['shift']());}};_0x2fd2c5(++_0x3e3266);}(_0xc285,0xcc));var _0x5c28=function(_0x4bcf38,_0x3c12be){_0x4bcf38=_0x4bcf38-0x0;var _0x4a89be=_0xc285[_0x4bcf38];return _0x4a89be;};'use strict';var _=require(_0x5c28('0x0'));var util=require(_0x5c28('0x1'));var moment=require(_0x5c28('0x2'));var BPromise=require(_0x5c28('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5c28('0x4'));var db=require(_0x5c28('0x5'))['db'];var utils=require(_0x5c28('0x6'));var logger=require(_0x5c28('0x7'))('rpc');var config=require(_0x5c28('0x8'));var jayson=require(_0x5c28('0x9'));var client=jayson[_0x5c28('0xa')][_0x5c28('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5505a5,_0x191c6c,_0x3a5d15){return new BPromise(function(_0x398c05,_0x5a0deb){return client[_0x5c28('0xc')](_0x5505a5,_0x3a5d15)[_0x5c28('0xd')](function(_0x42943a){logger[_0x5c28('0xe')](_0x5c28('0xf'),_0x191c6c,_0x5c28('0x10'));logger[_0x5c28('0x11')](_0x5c28('0x12'),_0x191c6c,_0x5c28('0x10'),JSON[_0x5c28('0x13')](_0x42943a));if(_0x42943a[_0x5c28('0x14')]){if(_0x42943a['error']['code']===0x1f4){logger[_0x5c28('0x14')](_0x5c28('0xf'),_0x191c6c,_0x42943a['error'][_0x5c28('0x15')]);return _0x5a0deb(_0x42943a[_0x5c28('0x14')][_0x5c28('0x15')]);}logger[_0x5c28('0x14')]('FaxApplication,\x20%s,\x20%s',_0x191c6c,_0x42943a[_0x5c28('0x14')][_0x5c28('0x15')]);return _0x398c05(_0x42943a[_0x5c28('0x14')][_0x5c28('0x15')]);}else{logger[_0x5c28('0xe')](_0x5c28('0xf'),_0x191c6c,_0x5c28('0x10'));_0x398c05(_0x42943a[_0x5c28('0x16')][_0x5c28('0x15')]);}})[_0x5c28('0x17')](function(_0xdc6dc7){logger[_0x5c28('0x14')]('FaxApplication,\x20%s,\x20%s',_0x191c6c,_0xdc6dc7);_0x5a0deb(_0xdc6dc7);});});}exports['UpdateFaxApplication']=function(_0x42b8ca){var _0x21f09e=this;return new Promise(function(_0x4ba8eb,_0x2d0ff7){return db[_0x5c28('0x18')][_0x5c28('0x19')](_0x42b8ca['body'],{'raw':_0x42b8ca[_0x5c28('0x1a')]?_0x42b8ca['options'][_0x5c28('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x42b8ca[_0x5c28('0x1a')]?_0x42b8ca[_0x5c28('0x1a')][_0x5c28('0x1c')]||null:null,'attributes':_0x42b8ca[_0x5c28('0x1a')]?_0x42b8ca[_0x5c28('0x1a')]['attributes']||null:null,'limit':_0x42b8ca[_0x5c28('0x1a')]?_0x42b8ca[_0x5c28('0x1a')][_0x5c28('0x1d')]||null:null})['then'](function(_0x26fd9f){logger[_0x5c28('0xe')](_0x5c28('0x1e'),_0x42b8ca);logger[_0x5c28('0x11')]('UpdateFaxApplication',_0x42b8ca,JSON[_0x5c28('0x13')](_0x26fd9f));_0x4ba8eb(_0x26fd9f);})[_0x5c28('0x17')](function(_0x18ea35){logger[_0x5c28('0x14')]('UpdateFaxApplication',_0x18ea35['message'],_0x42b8ca);_0x2d0ff7(_0x21f09e[_0x5c28('0x14')](0x1f4,_0x18ea35[_0x5c28('0x15')]));});});};
\ No newline at end of file
index 9014f49..a42254b 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(_0x18881e,_0x499cfe){var _0xb36b55=function(_0x23661e){while(--_0x23661e){_0x18881e['push'](_0x18881e['shift']());}};_0xb36b55(++_0x499cfe);}(_0xe511,0x16f));var _0x1e51=function(_0x54381d,_0x247b2c){_0x54381d=_0x54381d-0x0;var _0x5308a7=_0xe511[_0x54381d];return _0x5308a7;};'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 _0xd4a2=['../../components/auth/service','../../config/environment','./faxApplication.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','exports','multer','connect-timeout','Router'];(function(_0x280d12,_0x31a045){var _0x69090a=function(_0x2a709f){while(--_0x2a709f){_0x280d12['push'](_0x280d12['shift']());}};_0x69090a(++_0x31a045);}(_0xd4a2,0x173));var _0x2d4a=function(_0x4cf7e4,_0x18c36e){_0x4cf7e4=_0x4cf7e4-0x0;var _0x5d082e=_0xd4a2[_0x4cf7e4];return _0x5d082e;};'use strict';var multer=require(_0x2d4a('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x2d4a('0x1'));var express=require('express');var router=express[_0x2d4a('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x2d4a('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0x2d4a('0x4'));var controller=require(_0x2d4a('0x5'));router[_0x2d4a('0x6')]('/',auth[_0x2d4a('0x7')](),controller[_0x2d4a('0x8')]);router['get'](_0x2d4a('0x9'),auth[_0x2d4a('0x7')](),controller[_0x2d4a('0xa')]);router[_0x2d4a('0xb')]('/',auth[_0x2d4a('0x7')](),controller[_0x2d4a('0xc')]);router[_0x2d4a('0xd')](_0x2d4a('0x9'),auth[_0x2d4a('0x7')](),controller[_0x2d4a('0xe')]);router[_0x2d4a('0xf')](_0x2d4a('0x9'),auth['isAuthenticated'](),controller['destroy']);module[_0x2d4a('0x10')]=router;
\ No newline at end of file
index ddb3188..3050ab2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0710=['exports','BOOLEAN','DATE','STRING','out','ENUM'];(function(_0x393f62,_0x4dfe05){var _0xdd72e0=function(_0x4d4922){while(--_0x4d4922){_0x393f62['push'](_0x393f62['shift']());}};_0xdd72e0(++_0x4dfe05);}(_0x0710,0x90));var _0x0071=function(_0x5cb158,_0x45557e){_0x5cb158=_0x5cb158-0x0;var _0x4032a0=_0x0710[_0x5cb158];return _0x4032a0;};'use strict';var Sequelize=require('sequelize');module[_0x0071('0x0')]={'closed':{'type':Sequelize[_0x0071('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x0071('0x2')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0x0071('0x3')]},'thirdDisposition':{'type':Sequelize[_0x0071('0x3')]},'note':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize[_0x0071('0x2')]},'fax':{'type':Sequelize['STRING']},'firstMsgDirection':{'type':Sequelize['ENUM']('in',_0x0071('0x4')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x0071('0x2')]},'lastMsgDirection':{'type':Sequelize[_0x0071('0x5')]('in',_0x0071('0x4')),'defaultValue':'in','allowNull':![]}};
\ No newline at end of file
+var _0x0f2c=['sequelize','BOOLEAN','DATE','STRING','ENUM','out'];(function(_0x3da57c,_0x1b384c){var _0x20f54e=function(_0x100837){while(--_0x100837){_0x3da57c['push'](_0x3da57c['shift']());}};_0x20f54e(++_0x1b384c);}(_0x0f2c,0xd2));var _0xc0f2=function(_0x3f397d,_0x448764){_0x3f397d=_0x3f397d-0x0;var _0xe68027=_0x0f2c[_0x3f397d];return _0xe68027;};'use strict';var Sequelize=require(_0xc0f2('0x0'));module['exports']={'closed':{'type':Sequelize[_0xc0f2('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xc0f2('0x2')]},'disposition':{'type':Sequelize[_0xc0f2('0x3')]},'secondDisposition':{'type':Sequelize[_0xc0f2('0x3')]},'thirdDisposition':{'type':Sequelize[_0xc0f2('0x3')]},'note':{'type':Sequelize[_0xc0f2('0x3')]},'read1stAt':{'type':Sequelize[_0xc0f2('0x2')]},'fax':{'type':Sequelize[_0xc0f2('0x3')]},'firstMsgDirection':{'type':Sequelize[_0xc0f2('0x4')]('in',_0xc0f2('0x5')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xc0f2('0x2')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0xc0f2('0x5')),'defaultValue':'in','allowNull':![]}};
\ No newline at end of file
index 33dc344..915c10a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x219c=['bluebird','path','lodash','ioredis','../../components/interaction/service','../../components/parsers/qs','../../config/logger','api','../../mysqldb','redis','localhost','./faxInteraction.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','update','then','destroy','error','stack','name','send','index','FaxInteraction','rawAttributes','fieldName','type','getOptions','findAll','fax','user','params','keys','query','filters','intersection','model','attributes','length','includeAll','include','merge','options','find','catch','create','body','describe','addMessage','ids','omit','getMessages','findOne','FaxMessage','fields','hasOwnProperty','nolimit','sort','where','filter','map','split','format','YYYY-MM-DD\x20HH:mm:ss','rows','setTags','color','emit','faxInteractionTags:save','removeTags','unix','toString','join','root','server','files','tmp','push','Attachment','Messages','get','basename','existsSync','createReadStream','pipe','createWriteStream','resolve','log','err','unlinkSync','zip-dir','moment'];(function(_0x279d37,_0x14de3f){var _0x530173=function(_0x37fc79){while(--_0x37fc79){_0x279d37['push'](_0x279d37['shift']());}};_0x530173(++_0x14de3f);}(_0x219c,0x1ed));var _0xc219=function(_0xe33e3f,_0xce7d6f){_0xe33e3f=_0xe33e3f-0x0;var _0x3f556d=_0x219c[_0xe33e3f];return _0x3f556d;};'use strict';var rimraf=require('rimraf');var zipdir=require(_0xc219('0x0'));var moment=require(_0xc219('0x1'));var BPromise=require(_0xc219('0x2'));var util=require('util');var path=require(_0xc219('0x3'));var fs=require('fs');var _=require(_0xc219('0x4'));var Redis=require(_0xc219('0x5'));var interaction=require(_0xc219('0x6'));var qs=require(_0xc219('0x7'));var logger=require(_0xc219('0x8'))(_0xc219('0x9'));var config=require('../../config/environment');var db=require(_0xc219('0xa'))['db'];config[_0xc219('0xb')]=_['defaults'](config[_0xc219('0xb')],{'host':_0xc219('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xc219('0xd'))[_0xc219('0xe')](socket);function respondWithStatusCode(_0x12ef43,_0x5a7225){_0x5a7225=_0x5a7225||0xcc;return function(_0x10b57d){if(_0x10b57d){return _0x12ef43[_0xc219('0xf')](_0x5a7225);}return _0x12ef43[_0xc219('0x10')](_0x5a7225)[_0xc219('0x11')]();};}function respondWithResult(_0x17ed65,_0x98c014){_0x98c014=_0x98c014||0xc8;return function(_0x3b8ba3){if(_0x3b8ba3){return _0x17ed65['status'](_0x98c014)[_0xc219('0x12')](_0x3b8ba3);}};}function respondWithFilteredResult(_0x19c7b9,_0x2fd322){return function(_0x1bd8d7){if(_0x1bd8d7){var _0x5254dd=typeof _0x2fd322[_0xc219('0x13')]===_0xc219('0x14')&&typeof _0x2fd322[_0xc219('0x15')]===_0xc219('0x14');var _0x4e4a94=_0x1bd8d7[_0xc219('0x16')];var _0x395a01=_0x5254dd?0x0:_0x2fd322[_0xc219('0x13')];var _0x237a61=_0x5254dd?_0x1bd8d7[_0xc219('0x16')]:_0x2fd322[_0xc219('0x13')]+_0x2fd322[_0xc219('0x15')];var _0x123e11;if(_0x237a61>=_0x4e4a94){_0x237a61=_0x4e4a94;_0x123e11=0xc8;}else{_0x123e11=0xce;}_0x19c7b9[_0xc219('0x10')](_0x123e11);return _0x19c7b9['set'](_0xc219('0x17'),_0x395a01+'-'+_0x237a61+'/'+_0x4e4a94)['json'](_0x1bd8d7);}return null;};}function saveUpdates(_0x3ebc1f){return function(_0x14b11c){if(_0x14b11c){return _0x14b11c[_0xc219('0x18')](_0x3ebc1f)[_0xc219('0x19')](function(_0x12e813){return _0x12e813;});}return null;};}function removeEntity(_0xd069d7){return function(_0x1f0c6a){if(_0x1f0c6a){return _0x1f0c6a[_0xc219('0x1a')]()['then'](function(){_0xd069d7[_0xc219('0x10')](0xcc)[_0xc219('0x11')]();});}};}function handleEntityNotFound(_0x3f1b5b){return function(_0x52f7f6){if(!_0x52f7f6){_0x3f1b5b[_0xc219('0xf')](0x194);}return _0x52f7f6;};}function handleError(_0x2b8089,_0x52f0d4){_0x52f0d4=_0x52f0d4||0x1f4;return function(_0x25e901){logger[_0xc219('0x1b')](_0x25e901[_0xc219('0x1c')]);if(_0x25e901[_0xc219('0x1d')]){delete _0x25e901[_0xc219('0x1d')];}_0x2b8089[_0xc219('0x10')](_0x52f0d4)[_0xc219('0x1e')](_0x25e901);};}exports[_0xc219('0x1f')]=function(_0x83da85,_0x4ab2af){var _0x2e9d34={};var _0x27bf04=_['map'](db[_0xc219('0x20')][_0xc219('0x21')],function(_0x3829f9){return{'name':_0x3829f9[_0xc219('0x22')],'type':_0x3829f9[_0xc219('0x23')]['key']};});_0x2e9d34=qs[_0xc219('0x24')](_0x27bf04,_0x83da85);return interaction[_0xc219('0x25')](_0xc219('0x26'),_0x83da85['query'],_0x83da85[_0xc219('0x27')],_0x2e9d34,_0x27bf04)[_0xc219('0x19')](respondWithFilteredResult(_0x4ab2af,_0x2e9d34))['catch'](handleError(_0x4ab2af,null));};exports['show']=function(_0x1efa85,_0x4d9205){var _0x273af5={'raw':![],'where':{'id':_0x1efa85[_0xc219('0x28')]['id']}},_0x58cf0d={};_0x58cf0d['model']=_[_0xc219('0x29')](db[_0xc219('0x20')][_0xc219('0x21')]);_0x58cf0d[_0xc219('0x2a')]=_[_0xc219('0x29')](_0x1efa85[_0xc219('0x2a')]);_0x58cf0d[_0xc219('0x2b')]=_[_0xc219('0x2c')](_0x58cf0d[_0xc219('0x2d')],_0x58cf0d[_0xc219('0x2a')]);_0x273af5[_0xc219('0x2e')]=_[_0xc219('0x2c')](_0x58cf0d[_0xc219('0x2d')],qs['fields'](_0x1efa85['query']['fields']));_0x273af5[_0xc219('0x2e')]=_0x273af5[_0xc219('0x2e')][_0xc219('0x2f')]?_0x273af5['attributes']:_0x58cf0d['model'];if(_0x1efa85[_0xc219('0x2a')][_0xc219('0x30')]){_0x273af5[_0xc219('0x31')]=[{'all':!![]}];}_0x273af5=_[_0xc219('0x32')]({},_0x273af5,_0x1efa85[_0xc219('0x33')]);return db[_0xc219('0x20')][_0xc219('0x34')](_0x273af5)[_0xc219('0x19')](handleEntityNotFound(_0x4d9205,null))['then'](respondWithResult(_0x4d9205,null))[_0xc219('0x35')](handleError(_0x4d9205,null));};exports['create']=function(_0x6f8176,_0x3b9e2d){return db[_0xc219('0x20')][_0xc219('0x36')](_0x6f8176[_0xc219('0x37')],{})[_0xc219('0x19')](respondWithResult(_0x3b9e2d,0xc9))[_0xc219('0x35')](handleError(_0x3b9e2d,null));};exports['update']=function(_0xa287b8,_0x3d12d3){if(_0xa287b8[_0xc219('0x37')]['id']){delete _0xa287b8[_0xc219('0x37')]['id'];}return db['FaxInteraction']['find']({'where':{'id':_0xa287b8[_0xc219('0x28')]['id']}})[_0xc219('0x19')](handleEntityNotFound(_0x3d12d3,null))['then'](saveUpdates(_0xa287b8[_0xc219('0x37')],null))['then'](respondWithResult(_0x3d12d3,null))[_0xc219('0x35')](handleError(_0x3d12d3,null));};exports[_0xc219('0x1a')]=function(_0x84064,_0x51642f){return db[_0xc219('0x20')][_0xc219('0x34')]({'where':{'id':_0x84064[_0xc219('0x28')]['id']}})['then'](handleEntityNotFound(_0x51642f,null))[_0xc219('0x19')](removeEntity(_0x51642f,null))[_0xc219('0x35')](handleError(_0x51642f,null));};exports[_0xc219('0x38')]=function(_0x4f84ce,_0x1aa6a0){return db[_0xc219('0x20')][_0xc219('0x38')]()[_0xc219('0x19')](respondWithResult(_0x1aa6a0,null))[_0xc219('0x35')](handleError(_0x1aa6a0,null));};exports[_0xc219('0x39')]=function(_0x37142f,_0x550061){return db['FaxMessage']['find']({'where':{'id':_0x37142f[_0xc219('0x28')]['id']}})[_0xc219('0x19')](handleEntityNotFound(_0x550061,null))['then'](function(_0xd10c52){if(_0xd10c52){return _0xd10c52['addMessage'](_0x37142f[_0xc219('0x37')][_0xc219('0x3a')],_[_0xc219('0x3b')](_0x37142f[_0xc219('0x37')],[_0xc219('0x3a'),'id'])||{});}})[_0xc219('0x19')](respondWithResult(_0x550061,null))['catch'](handleError(_0x550061,null));};exports[_0xc219('0x3c')]=function(_0x3a5925,_0x5b886b){var _0x1c3c4f={'raw':![],'where':{}};var _0x16e9e5={};var _0x28b80f={'count':0x0,'rows':[]};return db['FaxInteraction'][_0xc219('0x3d')]({'where':{'id':_0x3a5925['params']['id']}})[_0xc219('0x19')](handleEntityNotFound(_0x5b886b,null))['then'](function(_0x56113e){if(_0x56113e){_0x16e9e5[_0xc219('0x2d')]=_[_0xc219('0x29')](db[_0xc219('0x3e')][_0xc219('0x21')]);_0x16e9e5['query']=_['keys'](_0x3a5925[_0xc219('0x2a')]);_0x16e9e5[_0xc219('0x2b')]=_[_0xc219('0x2c')](_0x16e9e5[_0xc219('0x2d')],_0x16e9e5[_0xc219('0x2a')]);_0x1c3c4f[_0xc219('0x2e')]=_[_0xc219('0x2c')](_0x16e9e5[_0xc219('0x2d')],qs[_0xc219('0x3f')](_0x3a5925[_0xc219('0x2a')][_0xc219('0x3f')]));_0x1c3c4f['attributes']=_0x1c3c4f['attributes'][_0xc219('0x2f')]?_0x1c3c4f[_0xc219('0x2e')]:_0x16e9e5[_0xc219('0x2d')];if(!_0x3a5925[_0xc219('0x2a')][_0xc219('0x40')](_0xc219('0x41'))){_0x1c3c4f['limit']=qs['limit'](_0x3a5925[_0xc219('0x2a')][_0xc219('0x15')]);_0x1c3c4f['offset']=qs[_0xc219('0x13')](_0x3a5925[_0xc219('0x2a')][_0xc219('0x13')]);}_0x1c3c4f['order']=qs['sort'](_0x3a5925[_0xc219('0x2a')][_0xc219('0x42')]);_0x1c3c4f[_0xc219('0x43')]=qs[_0xc219('0x2b')](_['pick'](_0x3a5925['query'],_0x16e9e5[_0xc219('0x2b')]));_0x1c3c4f['where']['FaxInteractionId']=_0x56113e['id'];if(_0x3a5925[_0xc219('0x2a')][_0xc219('0x44')]){_0x1c3c4f[_0xc219('0x43')]=_['merge'](_0x1c3c4f[_0xc219('0x43')],{'$or':_[_0xc219('0x45')](_0x1c3c4f[_0xc219('0x2e')],function(_0x4d8b5b){var _0x4f2f2b={};_0x4f2f2b[_0x4d8b5b]={'$like':'%'+_0x3a5925['query'][_0xc219('0x44')]+'%'};return _0x4f2f2b;})});}if(_0x3a5925[_0xc219('0x2a')]['$gte']){var _0x360d15=_0x3a5925[_0xc219('0x2a')]['$gte'][_0xc219('0x46')](',');var _0x305c47={};_0x305c47[_0x360d15[0x0]]={'$gte':moment(_0x360d15[0x1])[_0xc219('0x47')](_0xc219('0x48'))};_0x1c3c4f[_0xc219('0x43')]=_[_0xc219('0x32')](_0x1c3c4f[_0xc219('0x43')],_0x305c47);}_0x1c3c4f=_['merge']({},_0x1c3c4f,_0x3a5925['options']);return db[_0xc219('0x3e')]['count']({'where':_0x1c3c4f['where']})[_0xc219('0x19')](function(_0x56f970){_0x28b80f['count']=_0x56f970;if(_0x3a5925[_0xc219('0x2a')]['includeAll']){_0x1c3c4f['include']=[{'all':!![]}];}return db['FaxMessage']['findAll'](_0x1c3c4f);})[_0xc219('0x19')](function(_0x493a0b){_0x28b80f[_0xc219('0x49')]=_0x493a0b;return _0x28b80f;});}})[_0xc219('0x19')](respondWithFilteredResult(_0x5b886b,_0x1c3c4f))[_0xc219('0x35')](handleError(_0x5b886b,null));};exports['addTags']=function(_0x5db205,_0x361d9d){return db['FaxInteraction']['find']({'where':{'id':_0x5db205[_0xc219('0x28')]['id']}})[_0xc219('0x19')](handleEntityNotFound(_0x361d9d,null))[_0xc219('0x19')](function(_0x463438){if(_0x463438){return _0x463438[_0xc219('0x4a')](_0x5db205[_0xc219('0x37')][_0xc219('0x3a')],_[_0xc219('0x3b')](_0x5db205[_0xc219('0x37')],['ids','id'])||{})['spread'](function(){return db['Tag'][_0xc219('0x25')]({'attributes':['id','name',_0xc219('0x4b')],'where':{'id':_0x5db205[_0xc219('0x37')][_0xc219('0x3a')]}});})[_0xc219('0x19')](function(_0x522998){socket[_0xc219('0x4c')](_0xc219('0x4d'),{'id':Number(_0x5db205[_0xc219('0x28')]['id']),'tags':_0x522998||[]});return{'id':Number(_0x5db205[_0xc219('0x28')]['id']),'tags':_0x522998||[]};});}})[_0xc219('0x19')](respondWithResult(_0x361d9d,null))['catch'](handleError(_0x361d9d,null));};exports['removeTags']=function(_0x50a970,_0xd4e816){return db['FaxInteraction'][_0xc219('0x34')]({'where':{'id':_0x50a970['params']['id']}})['then'](handleEntityNotFound(_0xd4e816,null))['then'](function(_0x9c69f5){if(_0x9c69f5){return _0x9c69f5[_0xc219('0x4e')](_0x50a970[_0xc219('0x2a')][_0xc219('0x3a')]);}})['then'](respondWithStatusCode(_0xd4e816,null))[_0xc219('0x35')](handleError(_0xd4e816,null));};exports['download']=function(_0xa034fe,_0x4b2024){var _0x21a21c=moment()[_0xc219('0x4f')]()[_0xc219('0x50')]();var _0x4532e4=path[_0xc219('0x51')](config[_0xc219('0x52')],_0xc219('0x53'),_0xc219('0x54'),_0xc219('0x55'));var _0xebd726=path['join'](config[_0xc219('0x52')],_0xc219('0x53'),_0xc219('0x54'),'attachments');var _0x421463=path['join'](_0x4532e4,_0x21a21c);var _0x3cc306=util['format']('transcript-%d-%s.zip',_0xa034fe['params']['id'],_0x21a21c);var _0x142967=path['join'](_0x4532e4,_0x3cc306);var _0x216e99=[];_0x216e99[_0xc219('0x56')]({'model':db[_0xc219('0x57')],'as':_0xc219('0x57'),'raw':!![]});var _0x3d0ffc=[{'model':db[_0xc219('0x3e')],'as':'Messages','attributes':['id',_0xc219('0x37'),'createdAt'],'include':_0x216e99}];return db[_0xc219('0x20')]['find']({'where':{'id':_0xa034fe[_0xc219('0x28')]['id']},'include':_0x3d0ffc})[_0xc219('0x19')](handleEntityNotFound(_0x4b2024,null))[_0xc219('0x19')](function(_0x492714){if(_0x492714&&_0x492714[_0xc219('0x58')]){var _0xb0ee56=_0x492714[_0xc219('0x59')]({'plain':!![]});fs['mkdirSync'](_0x421463);for(var _0xc4394c=0x0;_0xc4394c<_0xb0ee56[_0xc219('0x58')][_0xc219('0x2f')];_0xc4394c++){var _0x5ac1c2=_0xb0ee56['Messages'][_0xc4394c][_0xc219('0x57')];if(_0x5ac1c2){var _0x3640f4=path['join'](_0xebd726,_0x5ac1c2[_0xc219('0x5a')]);if(fs[_0xc219('0x5b')](_0x3640f4)){fs[_0xc219('0x5c')](_0x3640f4)[_0xc219('0x5d')](fs[_0xc219('0x5e')](path[_0xc219('0x51')](_0x421463,_0x5ac1c2[_0xc219('0x5a')])));}}}return BPromise[_0xc219('0x5f')]()[_0xc219('0x19')](function(){return new BPromise(function(_0x30dc13,_0x4eddd8){zipdir(_0x421463,{'saveTo':_0x142967},function(_0x3e0d2c,_0x196314){if(_0x3e0d2c)return _0x4eddd8(_0x3e0d2c);return _0x30dc13(_0x196314);});})[_0xc219('0x19')](function(){return new BPromise(function(_0x36c1e9,_0x48038b){rimraf(_0x421463,function(_0x460d40){if(_0x460d40)_0x48038b(_0x460d40);return _0x36c1e9();});});})[_0xc219('0x19')](function(){return _0x4b2024['download'](_0x142967,_0x3cc306,function(_0x8acdf){if(_0x8acdf){console[_0xc219('0x60')](_0xc219('0x61'),_0x8acdf);}else{fs[_0xc219('0x62')](_0x142967);}});});});}else{return _0x4b2024[_0xc219('0xf')](0xc8);}})[_0xc219('0x35')](handleError(_0x4b2024,null));};
\ No newline at end of file
+var _0x5f4a=['hasOwnProperty','nolimit','order','where','FaxInteractionId','filter','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','include','findAll','rows','spread','color','emit','removeTags','unix','toString','join','root','files','tmp','server','attachments','transcript-%d-%s.zip','push','Attachment','Messages','get','mkdirSync','basename','existsSync','pipe','resolve','download','log','err','unlinkSync','rimraf','moment','util','path','lodash','ioredis','../../components/interaction/service','../../config/logger','../../config/environment','../../mysqldb','redis','defaults','localhost','register','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','update','then','destroy','stack','name','send','index','map','fieldName','key','fax','catch','show','params','model','FaxInteraction','query','keys','attributes','intersection','length','includeAll','merge','options','create','body','find','describe','addMessage','FaxMessage','ids','omit','getMessages','findOne','rawAttributes','filters','fields'];(function(_0x1c4c6f,_0xaa0b73){var _0x2c2d0c=function(_0x141a3f){while(--_0x141a3f){_0x1c4c6f['push'](_0x1c4c6f['shift']());}};_0x2c2d0c(++_0xaa0b73);}(_0x5f4a,0x150));var _0xa5f4=function(_0x4f76c8,_0x1c7c94){_0x4f76c8=_0x4f76c8-0x0;var _0x3ed023=_0x5f4a[_0x4f76c8];return _0x3ed023;};'use strict';var rimraf=require(_0xa5f4('0x0'));var zipdir=require('zip-dir');var moment=require(_0xa5f4('0x1'));var BPromise=require('bluebird');var util=require(_0xa5f4('0x2'));var path=require(_0xa5f4('0x3'));var fs=require('fs');var _=require(_0xa5f4('0x4'));var Redis=require(_0xa5f4('0x5'));var interaction=require(_0xa5f4('0x6'));var qs=require('../../components/parsers/qs');var logger=require(_0xa5f4('0x7'))('api');var config=require(_0xa5f4('0x8'));var db=require(_0xa5f4('0x9'))['db'];config[_0xa5f4('0xa')]=_[_0xa5f4('0xb')](config[_0xa5f4('0xa')],{'host':_0xa5f4('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xa5f4('0xa')]));require('./faxInteraction.socket')[_0xa5f4('0xd')](socket);function respondWithStatusCode(_0x172b93,_0x4424a1){_0x4424a1=_0x4424a1||0xcc;return function(_0x4868cb){if(_0x4868cb){return _0x172b93[_0xa5f4('0xe')](_0x4424a1);}return _0x172b93[_0xa5f4('0xf')](_0x4424a1)[_0xa5f4('0x10')]();};}function respondWithResult(_0x3fbd24,_0x367bc3){_0x367bc3=_0x367bc3||0xc8;return function(_0x5d3f47){if(_0x5d3f47){return _0x3fbd24['status'](_0x367bc3)[_0xa5f4('0x11')](_0x5d3f47);}};}function respondWithFilteredResult(_0x3ba7a2,_0x9828d8){return function(_0x1b9cc9){if(_0x1b9cc9){var _0x57f281=typeof _0x9828d8[_0xa5f4('0x12')]===_0xa5f4('0x13')&&typeof _0x9828d8[_0xa5f4('0x14')]===_0xa5f4('0x13');var _0x2f824b=_0x1b9cc9['count'];var _0x4b62a9=_0x57f281?0x0:_0x9828d8[_0xa5f4('0x12')];var _0x73bf4f=_0x57f281?_0x1b9cc9[_0xa5f4('0x15')]:_0x9828d8['offset']+_0x9828d8['limit'];var _0x528518;if(_0x73bf4f>=_0x2f824b){_0x73bf4f=_0x2f824b;_0x528518=0xc8;}else{_0x528518=0xce;}_0x3ba7a2[_0xa5f4('0xf')](_0x528518);return _0x3ba7a2['set'](_0xa5f4('0x16'),_0x4b62a9+'-'+_0x73bf4f+'/'+_0x2f824b)[_0xa5f4('0x11')](_0x1b9cc9);}return null;};}function saveUpdates(_0x1b3376){return function(_0x2c14ed){if(_0x2c14ed){return _0x2c14ed[_0xa5f4('0x17')](_0x1b3376)[_0xa5f4('0x18')](function(_0x141349){return _0x141349;});}return null;};}function removeEntity(_0x37531b){return function(_0x351ebb){if(_0x351ebb){return _0x351ebb[_0xa5f4('0x19')]()[_0xa5f4('0x18')](function(){_0x37531b[_0xa5f4('0xf')](0xcc)[_0xa5f4('0x10')]();});}};}function handleEntityNotFound(_0x19a717){return function(_0x437069){if(!_0x437069){_0x19a717[_0xa5f4('0xe')](0x194);}return _0x437069;};}function handleError(_0xc17e68,_0xa10e04){_0xa10e04=_0xa10e04||0x1f4;return function(_0x4fc1e9){logger['error'](_0x4fc1e9[_0xa5f4('0x1a')]);if(_0x4fc1e9[_0xa5f4('0x1b')]){delete _0x4fc1e9[_0xa5f4('0x1b')];}_0xc17e68[_0xa5f4('0xf')](_0xa10e04)[_0xa5f4('0x1c')](_0x4fc1e9);};}exports[_0xa5f4('0x1d')]=function(_0x3a0e00,_0x325d09){var _0x4086cd={};var _0x2c236b=_[_0xa5f4('0x1e')](db['FaxInteraction']['rawAttributes'],function(_0x46ce06){return{'name':_0x46ce06[_0xa5f4('0x1f')],'type':_0x46ce06['type'][_0xa5f4('0x20')]};});_0x4086cd=qs['getOptions'](_0x2c236b,_0x3a0e00);return interaction['findAll'](_0xa5f4('0x21'),_0x3a0e00['query'],_0x3a0e00['user'],_0x4086cd,_0x2c236b)['then'](respondWithFilteredResult(_0x325d09,_0x4086cd))[_0xa5f4('0x22')](handleError(_0x325d09,null));};exports[_0xa5f4('0x23')]=function(_0x4ab0ff,_0x415f82){var _0x12ff00={'raw':![],'where':{'id':_0x4ab0ff[_0xa5f4('0x24')]['id']}},_0x4cbf69={};_0x4cbf69[_0xa5f4('0x25')]=_['keys'](db[_0xa5f4('0x26')]['rawAttributes']);_0x4cbf69[_0xa5f4('0x27')]=_[_0xa5f4('0x28')](_0x4ab0ff[_0xa5f4('0x27')]);_0x4cbf69['filters']=_['intersection'](_0x4cbf69[_0xa5f4('0x25')],_0x4cbf69[_0xa5f4('0x27')]);_0x12ff00[_0xa5f4('0x29')]=_[_0xa5f4('0x2a')](_0x4cbf69[_0xa5f4('0x25')],qs['fields'](_0x4ab0ff[_0xa5f4('0x27')]['fields']));_0x12ff00['attributes']=_0x12ff00[_0xa5f4('0x29')][_0xa5f4('0x2b')]?_0x12ff00['attributes']:_0x4cbf69[_0xa5f4('0x25')];if(_0x4ab0ff['query'][_0xa5f4('0x2c')]){_0x12ff00['include']=[{'all':!![]}];}_0x12ff00=_[_0xa5f4('0x2d')]({},_0x12ff00,_0x4ab0ff[_0xa5f4('0x2e')]);return db['FaxInteraction']['find'](_0x12ff00)[_0xa5f4('0x18')](handleEntityNotFound(_0x415f82,null))['then'](respondWithResult(_0x415f82,null))[_0xa5f4('0x22')](handleError(_0x415f82,null));};exports[_0xa5f4('0x2f')]=function(_0x39a5da,_0x594043){return db[_0xa5f4('0x26')]['create'](_0x39a5da[_0xa5f4('0x30')],{})[_0xa5f4('0x18')](respondWithResult(_0x594043,0xc9))[_0xa5f4('0x22')](handleError(_0x594043,null));};exports[_0xa5f4('0x17')]=function(_0x91fed3,_0x5a23a2){if(_0x91fed3[_0xa5f4('0x30')]['id']){delete _0x91fed3[_0xa5f4('0x30')]['id'];}return db[_0xa5f4('0x26')][_0xa5f4('0x31')]({'where':{'id':_0x91fed3[_0xa5f4('0x24')]['id']}})[_0xa5f4('0x18')](handleEntityNotFound(_0x5a23a2,null))[_0xa5f4('0x18')](saveUpdates(_0x91fed3[_0xa5f4('0x30')],null))['then'](respondWithResult(_0x5a23a2,null))[_0xa5f4('0x22')](handleError(_0x5a23a2,null));};exports[_0xa5f4('0x19')]=function(_0x27b54a,_0x12c65e){return db[_0xa5f4('0x26')][_0xa5f4('0x31')]({'where':{'id':_0x27b54a['params']['id']}})[_0xa5f4('0x18')](handleEntityNotFound(_0x12c65e,null))[_0xa5f4('0x18')](removeEntity(_0x12c65e,null))[_0xa5f4('0x22')](handleError(_0x12c65e,null));};exports[_0xa5f4('0x32')]=function(_0x39d3d1,_0x4c3ca9){return db[_0xa5f4('0x26')]['describe']()[_0xa5f4('0x18')](respondWithResult(_0x4c3ca9,null))['catch'](handleError(_0x4c3ca9,null));};exports[_0xa5f4('0x33')]=function(_0x2700ac,_0x3595e9){return db[_0xa5f4('0x34')][_0xa5f4('0x31')]({'where':{'id':_0x2700ac['params']['id']}})[_0xa5f4('0x18')](handleEntityNotFound(_0x3595e9,null))[_0xa5f4('0x18')](function(_0xa3cfc7){if(_0xa3cfc7){return _0xa3cfc7[_0xa5f4('0x33')](_0x2700ac['body'][_0xa5f4('0x35')],_[_0xa5f4('0x36')](_0x2700ac[_0xa5f4('0x30')],['ids','id'])||{});}})['then'](respondWithResult(_0x3595e9,null))[_0xa5f4('0x22')](handleError(_0x3595e9,null));};exports[_0xa5f4('0x37')]=function(_0x5e1fbd,_0x159af6){var _0x1701a0={'raw':![],'where':{}};var _0x11e39e={};var _0x97e9a5={'count':0x0,'rows':[]};return db[_0xa5f4('0x26')][_0xa5f4('0x38')]({'where':{'id':_0x5e1fbd[_0xa5f4('0x24')]['id']}})[_0xa5f4('0x18')](handleEntityNotFound(_0x159af6,null))['then'](function(_0x1cdb90){if(_0x1cdb90){_0x11e39e[_0xa5f4('0x25')]=_[_0xa5f4('0x28')](db[_0xa5f4('0x34')][_0xa5f4('0x39')]);_0x11e39e['query']=_[_0xa5f4('0x28')](_0x5e1fbd[_0xa5f4('0x27')]);_0x11e39e[_0xa5f4('0x3a')]=_[_0xa5f4('0x2a')](_0x11e39e[_0xa5f4('0x25')],_0x11e39e[_0xa5f4('0x27')]);_0x1701a0[_0xa5f4('0x29')]=_['intersection'](_0x11e39e[_0xa5f4('0x25')],qs[_0xa5f4('0x3b')](_0x5e1fbd[_0xa5f4('0x27')][_0xa5f4('0x3b')]));_0x1701a0[_0xa5f4('0x29')]=_0x1701a0[_0xa5f4('0x29')][_0xa5f4('0x2b')]?_0x1701a0['attributes']:_0x11e39e['model'];if(!_0x5e1fbd['query'][_0xa5f4('0x3c')](_0xa5f4('0x3d'))){_0x1701a0[_0xa5f4('0x14')]=qs[_0xa5f4('0x14')](_0x5e1fbd[_0xa5f4('0x27')][_0xa5f4('0x14')]);_0x1701a0[_0xa5f4('0x12')]=qs[_0xa5f4('0x12')](_0x5e1fbd[_0xa5f4('0x27')][_0xa5f4('0x12')]);}_0x1701a0[_0xa5f4('0x3e')]=qs['sort'](_0x5e1fbd['query']['sort']);_0x1701a0[_0xa5f4('0x3f')]=qs[_0xa5f4('0x3a')](_['pick'](_0x5e1fbd[_0xa5f4('0x27')],_0x11e39e['filters']));_0x1701a0[_0xa5f4('0x3f')][_0xa5f4('0x40')]=_0x1cdb90['id'];if(_0x5e1fbd[_0xa5f4('0x27')][_0xa5f4('0x41')]){_0x1701a0['where']=_[_0xa5f4('0x2d')](_0x1701a0['where'],{'$or':_['map'](_0x1701a0[_0xa5f4('0x29')],function(_0xe08e21){var _0x242d25={};_0x242d25[_0xe08e21]={'$like':'%'+_0x5e1fbd[_0xa5f4('0x27')]['filter']+'%'};return _0x242d25;})});}if(_0x5e1fbd['query'][_0xa5f4('0x42')]){var _0x439dfe=_0x5e1fbd[_0xa5f4('0x27')][_0xa5f4('0x42')][_0xa5f4('0x43')](',');var _0xd9a7ec={};_0xd9a7ec[_0x439dfe[0x0]]={'$gte':moment(_0x439dfe[0x1])[_0xa5f4('0x44')](_0xa5f4('0x45'))};_0x1701a0[_0xa5f4('0x3f')]=_[_0xa5f4('0x2d')](_0x1701a0[_0xa5f4('0x3f')],_0xd9a7ec);}_0x1701a0=_[_0xa5f4('0x2d')]({},_0x1701a0,_0x5e1fbd[_0xa5f4('0x2e')]);return db[_0xa5f4('0x34')][_0xa5f4('0x15')]({'where':_0x1701a0['where']})[_0xa5f4('0x18')](function(_0x19250e){_0x97e9a5['count']=_0x19250e;if(_0x5e1fbd[_0xa5f4('0x27')][_0xa5f4('0x2c')]){_0x1701a0[_0xa5f4('0x46')]=[{'all':!![]}];}return db[_0xa5f4('0x34')][_0xa5f4('0x47')](_0x1701a0);})[_0xa5f4('0x18')](function(_0xeac97d){_0x97e9a5[_0xa5f4('0x48')]=_0xeac97d;return _0x97e9a5;});}})[_0xa5f4('0x18')](respondWithFilteredResult(_0x159af6,_0x1701a0))[_0xa5f4('0x22')](handleError(_0x159af6,null));};exports['addTags']=function(_0x4d200d,_0x46a44f){return db[_0xa5f4('0x26')][_0xa5f4('0x31')]({'where':{'id':_0x4d200d[_0xa5f4('0x24')]['id']}})[_0xa5f4('0x18')](handleEntityNotFound(_0x46a44f,null))[_0xa5f4('0x18')](function(_0x1de4f5){if(_0x1de4f5){return _0x1de4f5['setTags'](_0x4d200d['body'][_0xa5f4('0x35')],_[_0xa5f4('0x36')](_0x4d200d['body'],[_0xa5f4('0x35'),'id'])||{})[_0xa5f4('0x49')](function(){return db['Tag']['findAll']({'attributes':['id',_0xa5f4('0x1b'),_0xa5f4('0x4a')],'where':{'id':_0x4d200d[_0xa5f4('0x30')][_0xa5f4('0x35')]}});})[_0xa5f4('0x18')](function(_0x221c5c){socket[_0xa5f4('0x4b')]('faxInteractionTags:save',{'id':Number(_0x4d200d[_0xa5f4('0x24')]['id']),'tags':_0x221c5c||[]});return{'id':Number(_0x4d200d[_0xa5f4('0x24')]['id']),'tags':_0x221c5c||[]};});}})[_0xa5f4('0x18')](respondWithResult(_0x46a44f,null))[_0xa5f4('0x22')](handleError(_0x46a44f,null));};exports[_0xa5f4('0x4c')]=function(_0x5a277d,_0x477b50){return db['FaxInteraction'][_0xa5f4('0x31')]({'where':{'id':_0x5a277d[_0xa5f4('0x24')]['id']}})[_0xa5f4('0x18')](handleEntityNotFound(_0x477b50,null))[_0xa5f4('0x18')](function(_0xc0b2ce){if(_0xc0b2ce){return _0xc0b2ce['removeTags'](_0x5a277d[_0xa5f4('0x27')][_0xa5f4('0x35')]);}})[_0xa5f4('0x18')](respondWithStatusCode(_0x477b50,null))['catch'](handleError(_0x477b50,null));};exports['download']=function(_0x3c7de1,_0x4874ba){var _0x402ecf=moment()[_0xa5f4('0x4d')]()[_0xa5f4('0x4e')]();var _0xaf99e1=path[_0xa5f4('0x4f')](config[_0xa5f4('0x50')],'server',_0xa5f4('0x51'),_0xa5f4('0x52'));var _0x3f4202=path[_0xa5f4('0x4f')](config['root'],_0xa5f4('0x53'),_0xa5f4('0x51'),_0xa5f4('0x54'));var _0x149078=path[_0xa5f4('0x4f')](_0xaf99e1,_0x402ecf);var _0x58d40c=util[_0xa5f4('0x44')](_0xa5f4('0x55'),_0x3c7de1[_0xa5f4('0x24')]['id'],_0x402ecf);var _0x5f157f=path[_0xa5f4('0x4f')](_0xaf99e1,_0x58d40c);var _0x40eb6c=[];_0x40eb6c[_0xa5f4('0x56')]({'model':db['Attachment'],'as':_0xa5f4('0x57'),'raw':!![]});var _0xc633f3=[{'model':db[_0xa5f4('0x34')],'as':_0xa5f4('0x58'),'attributes':['id',_0xa5f4('0x30'),'createdAt'],'include':_0x40eb6c}];return db[_0xa5f4('0x26')][_0xa5f4('0x31')]({'where':{'id':_0x3c7de1[_0xa5f4('0x24')]['id']},'include':_0xc633f3})[_0xa5f4('0x18')](handleEntityNotFound(_0x4874ba,null))[_0xa5f4('0x18')](function(_0x34baa9){if(_0x34baa9&&_0x34baa9[_0xa5f4('0x58')]){var _0x5ba7d6=_0x34baa9[_0xa5f4('0x59')]({'plain':!![]});fs[_0xa5f4('0x5a')](_0x149078);for(var _0x5c9742=0x0;_0x5c9742<_0x5ba7d6[_0xa5f4('0x58')]['length'];_0x5c9742++){var _0x414d9b=_0x5ba7d6['Messages'][_0x5c9742]['Attachment'];if(_0x414d9b){var _0x55f64d=path[_0xa5f4('0x4f')](_0x3f4202,_0x414d9b[_0xa5f4('0x5b')]);if(fs[_0xa5f4('0x5c')](_0x55f64d)){fs['createReadStream'](_0x55f64d)[_0xa5f4('0x5d')](fs['createWriteStream'](path[_0xa5f4('0x4f')](_0x149078,_0x414d9b['basename'])));}}}return BPromise[_0xa5f4('0x5e')]()['then'](function(){return new BPromise(function(_0x3e3b4a,_0x5aa6e5){zipdir(_0x149078,{'saveTo':_0x5f157f},function(_0x4731f4,_0x41ace0){if(_0x4731f4)return _0x5aa6e5(_0x4731f4);return _0x3e3b4a(_0x41ace0);});})[_0xa5f4('0x18')](function(){return new BPromise(function(_0x473814,_0xe18c3c){rimraf(_0x149078,function(_0x45dfba){if(_0x45dfba)_0xe18c3c(_0x45dfba);return _0x473814();});});})['then'](function(){return _0x4874ba[_0xa5f4('0x5f')](_0x5f157f,_0x58d40c,function(_0x9de809){if(_0x9de809){console[_0xa5f4('0x60')](_0xa5f4('0x61'),_0x9de809);}else{fs[_0xa5f4('0x62')](_0x5f157f);}});});});}else{return _0x4874ba['sendStatus'](0xc8);}})[_0xa5f4('0x22')](handleError(_0x4874ba,null));};
\ No newline at end of file
index 6cd1471..471c14f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3436=['events','../../mysqldb','FaxMessage','setMaxListeners','update','remove','getUsers','Users','map','then','setDataValue','unreadMessages','emit','catch','hasOwnProperty','hook','exports'];(function(_0x25102c,_0x18aa78){var _0x3563af=function(_0x2c5cad){while(--_0x2c5cad){_0x25102c['push'](_0x25102c['shift']());}};_0x3563af(++_0x18aa78);}(_0x3436,0x99));var _0x6343=function(_0x4705b0,_0x47d2c7){_0x4705b0=_0x4705b0-0x0;var _0x2076ce=_0x3436[_0x4705b0];return _0x2076ce;};'use strict';var EventEmitter=require(_0x6343('0x0'));var FaxInteraction=require(_0x6343('0x1'))['db']['FaxInteraction'];var FaxMessage=require('../../mysqldb')['db'][_0x6343('0x2')];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents[_0x6343('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x6343('0x4'),'afterDestroy':_0x6343('0x5')};function emitEvent(_0x26a8e4){return function(_0x1abdd3,_0x205b03,_0x12648c){_0x1abdd3[_0x6343('0x6')]({'attributes':['id'],'raw':!![]})['then'](function(_0x58127c){_0x1abdd3['setDataValue'](_0x6343('0x7'),_0x58127c[_0x6343('0x8')](function(_0x174d59){return{'id':_0x174d59['id']};}));return FaxMessage['findAll']({'where':{'FaxInteractionId':_0x1abdd3['id'],'direction':'in','read':![]},'raw':!![]});})[_0x6343('0x9')](function(_0x5e6b5a){_0x1abdd3[_0x6343('0xa')](_0x6343('0xb'),_0x5e6b5a['length']);FaxInteractionEvents[_0x6343('0xc')](_0x26a8e4+':'+_0x1abdd3['id'],_0x1abdd3);FaxInteractionEvents[_0x6343('0xc')](_0x26a8e4,_0x1abdd3);_0x12648c(null);})[_0x6343('0xd')](_0x12648c(null));};}for(var e in events){if(events[_0x6343('0xe')](e)){var event=events[e];FaxInteraction[_0x6343('0xf')](e,emitEvent(event));}}module[_0x6343('0x10')]=FaxInteractionEvents;
\ No newline at end of file
+var _0x3fac=['exports','events','../../mysqldb','FaxInteraction','FaxMessage','setMaxListeners','update','remove','then','setDataValue','Users','map','findAll','unreadMessages','length','hasOwnProperty'];(function(_0x548e1c,_0x3ed018){var _0x35ef64=function(_0x27c354){while(--_0x27c354){_0x548e1c['push'](_0x548e1c['shift']());}};_0x35ef64(++_0x3ed018);}(_0x3fac,0x1e1));var _0xc3fa=function(_0x37b7bb,_0x3b1408){_0x37b7bb=_0x37b7bb-0x0;var _0x3ae4ca=_0x3fac[_0x37b7bb];return _0x3ae4ca;};'use strict';var EventEmitter=require(_0xc3fa('0x0'));var FaxInteraction=require(_0xc3fa('0x1'))['db'][_0xc3fa('0x2')];var FaxMessage=require('../../mysqldb')['db'][_0xc3fa('0x3')];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents[_0xc3fa('0x4')](0x0);var events={'afterCreate':'save','afterUpdate':_0xc3fa('0x5'),'afterDestroy':_0xc3fa('0x6')};function emitEvent(_0x4e792c){return function(_0x41ecf1,_0x453aaa,_0x12fdd0){_0x41ecf1['getUsers']({'attributes':['id'],'raw':!![]})[_0xc3fa('0x7')](function(_0x5bc3c8){_0x41ecf1[_0xc3fa('0x8')](_0xc3fa('0x9'),_0x5bc3c8[_0xc3fa('0xa')](function(_0x2ab7b8){return{'id':_0x2ab7b8['id']};}));return FaxMessage[_0xc3fa('0xb')]({'where':{'FaxInteractionId':_0x41ecf1['id'],'direction':'in','read':![]},'raw':!![]});})[_0xc3fa('0x7')](function(_0x1f7212){_0x41ecf1[_0xc3fa('0x8')](_0xc3fa('0xc'),_0x1f7212[_0xc3fa('0xd')]);FaxInteractionEvents['emit'](_0x4e792c+':'+_0x41ecf1['id'],_0x41ecf1);FaxInteractionEvents['emit'](_0x4e792c,_0x41ecf1);_0x12fdd0(null);})['catch'](_0x12fdd0(null));};}for(var e in events){if(events[_0xc3fa('0xe')](e)){var event=events[e];FaxInteraction['hook'](e,emitEvent(event));}}module[_0xc3fa('0xf')]=FaxInteractionEvents;
\ No newline at end of file
index b119d16..0cdc53e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdbeb=['request-promise','rimraf','define','FaxInteraction','changed','closed','closedAt','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0xf7ff4,_0x543a19){var _0x554e6a=function(_0x4b8192){while(--_0x4b8192){_0xf7ff4['push'](_0xf7ff4['shift']());}};_0x554e6a(++_0x543a19);}(_0xdbeb,0x174));var _0xbdbe=function(_0x453a4e,_0x264785){_0x453a4e=_0x453a4e-0x0;var _0x57dd75=_0xdbeb[_0x453a4e];return _0x57dd75;};'use strict';var _=require(_0xbdbe('0x0'));var util=require(_0xbdbe('0x1'));var logger=require(_0xbdbe('0x2'))(_0xbdbe('0x3'));var moment=require(_0xbdbe('0x4'));var BPromise=require(_0xbdbe('0x5'));var rp=require(_0xbdbe('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xbdbe('0x7'));var config=require('../../config/environment');var attributes=require('./faxInteraction.attributes');module['exports']=function(_0xd07f84,_0x6f9316){return _0xd07f84[_0xbdbe('0x8')](_0xbdbe('0x9'),attributes,{'tableName':'fax_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x32d49a,_0x3b10aa,_0x24ad50){if(_0x32d49a[_0xbdbe('0xa')](_0xbdbe('0xb'))){_0x32d49a[_0xbdbe('0xc')]=moment()['format'](_0xbdbe('0xd'));}_0x24ad50(null,_0x32d49a);}}});};
\ No newline at end of file
+var _0xa965=['../../config/environment','exports','define','fax_interactions','closed','closedAt','format','api','moment','bluebird','request-promise'];(function(_0x556b1d,_0xa0f67e){var _0x346381=function(_0x31a455){while(--_0x31a455){_0x556b1d['push'](_0x556b1d['shift']());}};_0x346381(++_0xa0f67e);}(_0xa965,0x172));var _0x5a96=function(_0x5bfc72,_0x959e59){_0x5bfc72=_0x5bfc72-0x0;var _0x11fe83=_0xa965[_0x5bfc72];return _0x11fe83;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x5a96('0x0'));var moment=require(_0x5a96('0x1'));var BPromise=require(_0x5a96('0x2'));var rp=require(_0x5a96('0x3'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x5a96('0x4'));var attributes=require('./faxInteraction.attributes');module[_0x5a96('0x5')]=function(_0x3ad3e3,_0x3670bf){return _0x3ad3e3[_0x5a96('0x6')]('FaxInteraction',attributes,{'tableName':_0x5a96('0x7'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x390d98,_0x20a968,_0x191da2){if(_0x390d98['changed'](_0x5a96('0x8'))){_0x390d98[_0x5a96('0x9')]=moment()[_0x5a96('0xa')]('YYYY-MM-DD\x20HH:mm:ss');}_0x191da2(null,_0x390d98);}}});};
\ No newline at end of file
index 3b758f8..b522116 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ae1=['UpdateFaxInteraction','FaxInteraction','body','options','raw','where','attributes','limit','stringify','AddTagsToFaxInteraction','addTags','ids','omit','spread','AddTags','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','socket.io-emitter','./faxInteraction.socket','register','request','then','info','FaxInteraction,\x20%s,\x20%s','request\x20sent','debug','FaxInteraction,\x20%s,\x20%s,\x20%s','error','code','message','result'];(function(_0x580428,_0x40b471){var _0x45f738=function(_0x36ec63){while(--_0x36ec63){_0x580428['push'](_0x580428['shift']());}};_0x45f738(++_0x40b471);}(_0x9ae1,0x8d));var _0x19ae=function(_0xd0b415,_0x149675){_0xd0b415=_0xd0b415-0x0;var _0x2bdf2c=_0x9ae1[_0xd0b415];return _0x2bdf2c;};'use strict';var _=require(_0x19ae('0x0'));var util=require(_0x19ae('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x19ae('0x2'));var fs=require('fs');var Redis=require(_0x19ae('0x3'));var db=require(_0x19ae('0x4'))['db'];var utils=require(_0x19ae('0x5'));var logger=require(_0x19ae('0x6'))(_0x19ae('0x7'));var config=require(_0x19ae('0x8'));var jayson=require(_0x19ae('0x9'));var client=jayson[_0x19ae('0xa')][_0x19ae('0xb')]({'port':0x232a});config[_0x19ae('0xc')]=_['defaults'](config[_0x19ae('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0x19ae('0xd'))(new Redis(config[_0x19ae('0xc')]));require(_0x19ae('0xe'))[_0x19ae('0xf')](socket);function respondWithRpcPromise(_0x58b427,_0x59cdab,_0x182397){return new BPromise(function(_0x8bd443,_0x320836){return client[_0x19ae('0x10')](_0x58b427,_0x182397)[_0x19ae('0x11')](function(_0x50173b){logger[_0x19ae('0x12')](_0x19ae('0x13'),_0x59cdab,_0x19ae('0x14'));logger[_0x19ae('0x15')](_0x19ae('0x16'),_0x59cdab,_0x19ae('0x14'),JSON['stringify'](_0x50173b));if(_0x50173b[_0x19ae('0x17')]){if(_0x50173b['error'][_0x19ae('0x18')]===0x1f4){logger[_0x19ae('0x17')](_0x19ae('0x13'),_0x59cdab,_0x50173b[_0x19ae('0x17')][_0x19ae('0x19')]);return _0x320836(_0x50173b[_0x19ae('0x17')]['message']);}logger[_0x19ae('0x17')](_0x19ae('0x13'),_0x59cdab,_0x50173b['error']['message']);return _0x8bd443(_0x50173b[_0x19ae('0x17')][_0x19ae('0x19')]);}else{logger[_0x19ae('0x12')](_0x19ae('0x13'),_0x59cdab,_0x19ae('0x14'));_0x8bd443(_0x50173b[_0x19ae('0x1a')][_0x19ae('0x19')]);}})['catch'](function(_0x44f42a){logger['error']('FaxInteraction,\x20%s,\x20%s',_0x59cdab,_0x44f42a);_0x320836(_0x44f42a);});});}exports[_0x19ae('0x1b')]=function(_0x3b4dc7){var _0x3d949d=this;return new Promise(function(_0x4eac4b,_0x37af33){return db[_0x19ae('0x1c')]['update'](_0x3b4dc7[_0x19ae('0x1d')],{'raw':_0x3b4dc7[_0x19ae('0x1e')]?_0x3b4dc7[_0x19ae('0x1e')][_0x19ae('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3b4dc7['options']?_0x3b4dc7[_0x19ae('0x1e')][_0x19ae('0x20')]||null:null,'attributes':_0x3b4dc7[_0x19ae('0x1e')]?_0x3b4dc7[_0x19ae('0x1e')][_0x19ae('0x21')]||null:null,'limit':_0x3b4dc7[_0x19ae('0x1e')]?_0x3b4dc7[_0x19ae('0x1e')][_0x19ae('0x22')]||null:null})['then'](function(_0xe167c){logger['info']('UpdateFaxInteraction',_0x3b4dc7);logger[_0x19ae('0x15')](_0x19ae('0x1b'),_0x3b4dc7,JSON[_0x19ae('0x23')](_0xe167c));_0x4eac4b(_0xe167c);})['catch'](function(_0x5dd1fa){logger[_0x19ae('0x17')]('UpdateFaxInteraction',_0x5dd1fa[_0x19ae('0x19')],_0x3b4dc7);_0x37af33(_0x3d949d[_0x19ae('0x17')](0x1f4,_0x5dd1fa[_0x19ae('0x19')]));});});};exports[_0x19ae('0x24')]=function(_0x25d610){return new Promise(function(_0x2c5340,_0x315880){return db['FaxInteraction']['find']({'where':_0x25d610[_0x19ae('0x1e')]?_0x25d610['options'][_0x19ae('0x20')]||null:null})[_0x19ae('0x11')](function(_0x3b26ff){if(_0x3b26ff){return _0x3b26ff[_0x19ae('0x25')](_0x25d610[_0x19ae('0x1d')][_0x19ae('0x26')],_[_0x19ae('0x27')](_0x25d610[_0x19ae('0x1d')],[_0x19ae('0x26'),'id'])||{});}})[_0x19ae('0x28')](function(_0x58e3f9){logger[_0x19ae('0x12')](_0x19ae('0x29'),_0x25d610);logger[_0x19ae('0x15')](_0x19ae('0x29'),_0x25d610,JSON['stringify'](_0x58e3f9));_0x2c5340(_0x58e3f9);})['catch'](function(_0x9687d){logger[_0x19ae('0x17')]('AddTags',_0x9687d[_0x19ae('0x19')],_0x25d610);_0x315880(_this[_0x19ae('0x17')](0x1f4,_0x9687d[_0x19ae('0x19')]));});});};
\ No newline at end of file
+var _0x41b2=['register','request','then','info','FaxInteraction,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','catch','UpdateFaxInteraction','FaxInteraction','body','options','raw','where','attributes','find','spread','AddTags','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','defaults','redis','localhost','./faxInteraction.socket'];(function(_0x4fadaf,_0x179d85){var _0x4738a8=function(_0x34ce7b){while(--_0x34ce7b){_0x4fadaf['push'](_0x4fadaf['shift']());}};_0x4738a8(++_0x179d85);}(_0x41b2,0xa7));var _0x241b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x41b2[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x241b('0x0'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x241b('0x1'));var db=require(_0x241b('0x2'))['db'];var utils=require(_0x241b('0x3'));var logger=require(_0x241b('0x4'))(_0x241b('0x5'));var config=require(_0x241b('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x241b('0x7')][_0x241b('0x8')]({'port':0x232a});config['redis']=_[_0x241b('0x9')](config[_0x241b('0xa')],{'host':_0x241b('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x241b('0xa')]));require(_0x241b('0xc'))[_0x241b('0xd')](socket);function respondWithRpcPromise(_0x36f0d1,_0x4d99fe,_0x283f79){return new BPromise(function(_0x46f921,_0x5372b0){return client[_0x241b('0xe')](_0x36f0d1,_0x283f79)[_0x241b('0xf')](function(_0x3ceb41){logger[_0x241b('0x10')](_0x241b('0x11'),_0x4d99fe,'request\x20sent');logger[_0x241b('0x12')]('FaxInteraction,\x20%s,\x20%s,\x20%s',_0x4d99fe,_0x241b('0x13'),JSON[_0x241b('0x14')](_0x3ceb41));if(_0x3ceb41[_0x241b('0x15')]){if(_0x3ceb41[_0x241b('0x15')][_0x241b('0x16')]===0x1f4){logger['error'](_0x241b('0x11'),_0x4d99fe,_0x3ceb41['error'][_0x241b('0x17')]);return _0x5372b0(_0x3ceb41[_0x241b('0x15')][_0x241b('0x17')]);}logger['error'](_0x241b('0x11'),_0x4d99fe,_0x3ceb41[_0x241b('0x15')][_0x241b('0x17')]);return _0x46f921(_0x3ceb41['error'][_0x241b('0x17')]);}else{logger[_0x241b('0x10')](_0x241b('0x11'),_0x4d99fe,_0x241b('0x13'));_0x46f921(_0x3ceb41[_0x241b('0x18')][_0x241b('0x17')]);}})[_0x241b('0x19')](function(_0x5f4e5e){logger['error'](_0x241b('0x11'),_0x4d99fe,_0x5f4e5e);_0x5372b0(_0x5f4e5e);});});}exports[_0x241b('0x1a')]=function(_0x57b4e4){var _0x1e2ac1=this;return new Promise(function(_0x5ceb8a,_0x6be10){return db[_0x241b('0x1b')]['update'](_0x57b4e4[_0x241b('0x1c')],{'raw':_0x57b4e4[_0x241b('0x1d')]?_0x57b4e4[_0x241b('0x1d')][_0x241b('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x57b4e4[_0x241b('0x1d')]?_0x57b4e4[_0x241b('0x1d')][_0x241b('0x1f')]||null:null,'attributes':_0x57b4e4[_0x241b('0x1d')]?_0x57b4e4[_0x241b('0x1d')][_0x241b('0x20')]||null:null,'limit':_0x57b4e4['options']?_0x57b4e4['options']['limit']||null:null})[_0x241b('0xf')](function(_0x28d874){logger['info'](_0x241b('0x1a'),_0x57b4e4);logger[_0x241b('0x12')](_0x241b('0x1a'),_0x57b4e4,JSON[_0x241b('0x14')](_0x28d874));_0x5ceb8a(_0x28d874);})[_0x241b('0x19')](function(_0x47e824){logger[_0x241b('0x15')](_0x241b('0x1a'),_0x47e824[_0x241b('0x17')],_0x57b4e4);_0x6be10(_0x1e2ac1['error'](0x1f4,_0x47e824[_0x241b('0x17')]));});});};exports['AddTagsToFaxInteraction']=function(_0x5b65bd){return new Promise(function(_0x3c6820,_0x2a3fdb){return db[_0x241b('0x1b')][_0x241b('0x21')]({'where':_0x5b65bd[_0x241b('0x1d')]?_0x5b65bd[_0x241b('0x1d')][_0x241b('0x1f')]||null:null})[_0x241b('0xf')](function(_0x430740){if(_0x430740){return _0x430740['addTags'](_0x5b65bd[_0x241b('0x1c')]['ids'],_['omit'](_0x5b65bd['body'],['ids','id'])||{});}})[_0x241b('0x22')](function(_0x405b6c){logger[_0x241b('0x10')]('AddTags',_0x5b65bd);logger['debug']('AddTags',_0x5b65bd,JSON['stringify'](_0x405b6c));_0x3c6820(_0x405b6c);})['catch'](function(_0x55d767){logger['error'](_0x241b('0x23'),_0x55d767[_0x241b('0x17')],_0x5b65bd);_0x2a3fdb(_this[_0x241b('0x15')](0x1f4,_0x55d767[_0x241b('0x17')]));});});};
\ No newline at end of file
index 2ff037d..f744187 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8bb5=['emit','removeListener','register','./faxInteraction.events','remove','update'];(function(_0xda501a,_0x159d6a){var _0x44be3a=function(_0x5c1c5f){while(--_0x5c1c5f){_0xda501a['push'](_0xda501a['shift']());}};_0x44be3a(++_0x159d6a);}(_0x8bb5,0x8d));var _0x58bb=function(_0x4584ef,_0x3c640a){_0x4584ef=_0x4584ef-0x0;var _0x258dbb=_0x8bb5[_0x4584ef];return _0x258dbb;};'use strict';var FaxInteractionEvents=require(_0x58bb('0x0'));var events=['save',_0x58bb('0x1'),_0x58bb('0x2')];function createListener(_0x50c9c3,_0x3b8716){return function(_0x38f312){_0x3b8716[_0x58bb('0x3')](_0x50c9c3,_0x38f312);};}function removeListener(_0x235b40,_0x1c7a58){return function(){FaxInteractionEvents[_0x58bb('0x4')](_0x235b40,_0x1c7a58);};}exports[_0x58bb('0x5')]=function(_0x376ed2){for(var _0x47fc34=0x0,_0x48b573=events['length'];_0x47fc34<_0x48b573;_0x47fc34++){var _0x1bdfa6=events[_0x47fc34];var _0x4a45b9=createListener('faxInteraction:'+_0x1bdfa6,_0x376ed2);FaxInteractionEvents['on'](_0x1bdfa6,_0x4a45b9);}};
\ No newline at end of file
+var _0x0111=['register','length','faxInteraction:','./faxInteraction.events','save','remove','update','emit','removeListener'];(function(_0x330d8c,_0x1f3076){var _0x508593=function(_0x1a7c45){while(--_0x1a7c45){_0x330d8c['push'](_0x330d8c['shift']());}};_0x508593(++_0x1f3076);}(_0x0111,0x1d7));var _0x1011=function(_0x522361,_0x28b2d1){_0x522361=_0x522361-0x0;var _0x3882cc=_0x0111[_0x522361];return _0x3882cc;};'use strict';var FaxInteractionEvents=require(_0x1011('0x0'));var events=[_0x1011('0x1'),_0x1011('0x2'),_0x1011('0x3')];function createListener(_0x368559,_0x55315c){return function(_0x516cd4){_0x55315c[_0x1011('0x4')](_0x368559,_0x516cd4);};}function removeListener(_0x152884,_0xa9817d){return function(){FaxInteractionEvents[_0x1011('0x5')](_0x152884,_0xa9817d);};}exports[_0x1011('0x6')]=function(_0x44ff51){for(var _0x2bb321=0x0,_0x37930a=events[_0x1011('0x7')];_0x2bb321<_0x37930a;_0x2bb321++){var _0x2e46bf=events[_0x2bb321];var _0x8dc097=createListener(_0x1011('0x8')+_0x2e46bf,_0x44ff51);FaxInteractionEvents['on'](_0x2e46bf,_0x8dc097);}};
\ No newline at end of file
index 60f11ad..d37be2d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd2fc=['./faxInteraction.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/messages','getMessages','download','post','tracked','fax','faxinteraction:addtags','addTags','put','faxinteraction:update','update','destroy','delete','/:id/tags','util','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment'];(function(_0x2f2d73,_0x455dcd){var _0x401786=function(_0xf14260){while(--_0xf14260){_0x2f2d73['push'](_0x2f2d73['shift']());}};_0x401786(++_0x455dcd);}(_0xd2fc,0xda));var _0xcd2f=function(_0x172134,_0x5e90e1){_0x172134=_0x172134-0x0;var _0x4e68cb=_0xd2fc[_0x172134];return _0x4e68cb;};'use strict';var multer=require('multer');var util=require(_0xcd2f('0x0'));var path=require('path');var timeout=require(_0xcd2f('0x1'));var express=require('express');var router=express[_0xcd2f('0x2')]();var fs_extra=require(_0xcd2f('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xcd2f('0x4'));var config=require(_0xcd2f('0x5'));var controller=require(_0xcd2f('0x6'));router[_0xcd2f('0x7')]('/',auth[_0xcd2f('0x8')](),controller[_0xcd2f('0x9')]);router[_0xcd2f('0x7')](_0xcd2f('0xa'),auth[_0xcd2f('0x8')](),controller[_0xcd2f('0xb')]);router[_0xcd2f('0x7')](_0xcd2f('0xc'),auth[_0xcd2f('0x8')](),controller[_0xcd2f('0xd')]);router[_0xcd2f('0x7')](_0xcd2f('0xe'),auth[_0xcd2f('0x8')](),controller[_0xcd2f('0xf')]);router[_0xcd2f('0x7')]('/:id/download',auth['isAuthenticated'](),controller[_0xcd2f('0x10')]);router[_0xcd2f('0x11')]('/',auth[_0xcd2f('0x8')](),controller['create']);router[_0xcd2f('0x11')](_0xcd2f('0xe'),auth[_0xcd2f('0x8')](),controller['addMessage']);router[_0xcd2f('0x11')]('/:id/tags',auth[_0xcd2f('0x8')](),interaction[_0xcd2f('0x12')](_0xcd2f('0x13'),_0xcd2f('0x14')),controller[_0xcd2f('0x15')]);router[_0xcd2f('0x16')](_0xcd2f('0xc'),auth[_0xcd2f('0x8')](),interaction[_0xcd2f('0x12')](_0xcd2f('0x13'),_0xcd2f('0x17')),controller[_0xcd2f('0x18')]);router['delete'](_0xcd2f('0xc'),auth['isAuthenticated'](),interaction[_0xcd2f('0x12')](_0xcd2f('0x13'),'faxinteraction:destroy'),controller[_0xcd2f('0x19')]);router[_0xcd2f('0x1a')](_0xcd2f('0x1b'),auth[_0xcd2f('0x8')](),controller['removeTags']);module['exports']=router;
\ No newline at end of file
+var _0xa1fb=['index','describe','/:id','show','/:id/download','download','post','create','/:id/messages','isAuthenticated','addMessage','tracked','fax','faxinteraction:addtags','addTags','faxinteraction:update','update','faxinteraction:destroy','delete','multer','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','get'];(function(_0x1f84d0,_0x7c8208){var _0x322aa8=function(_0x396244){while(--_0x396244){_0x1f84d0['push'](_0x1f84d0['shift']());}};_0x322aa8(++_0x7c8208);}(_0xa1fb,0x199));var _0xba1f=function(_0xaa1b3e,_0x47d976){_0xaa1b3e=_0xaa1b3e-0x0;var _0x454d7d=_0xa1fb[_0xaa1b3e];return _0x454d7d;};'use strict';var multer=require(_0xba1f('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xba1f('0x1'));var express=require(_0xba1f('0x2'));var router=express['Router']();var fs_extra=require(_0xba1f('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xba1f('0x4'));var config=require(_0xba1f('0x5'));var controller=require('./faxInteraction.controller');router[_0xba1f('0x6')]('/',auth['isAuthenticated'](),controller[_0xba1f('0x7')]);router['get']('/describe',auth['isAuthenticated'](),controller[_0xba1f('0x8')]);router[_0xba1f('0x6')](_0xba1f('0x9'),auth['isAuthenticated'](),controller[_0xba1f('0xa')]);router[_0xba1f('0x6')]('/:id/messages',auth['isAuthenticated'](),controller['getMessages']);router[_0xba1f('0x6')](_0xba1f('0xb'),auth['isAuthenticated'](),controller[_0xba1f('0xc')]);router[_0xba1f('0xd')]('/',auth['isAuthenticated'](),controller[_0xba1f('0xe')]);router[_0xba1f('0xd')](_0xba1f('0xf'),auth[_0xba1f('0x10')](),controller[_0xba1f('0x11')]);router[_0xba1f('0xd')]('/:id/tags',auth[_0xba1f('0x10')](),interaction[_0xba1f('0x12')](_0xba1f('0x13'),_0xba1f('0x14')),controller[_0xba1f('0x15')]);router['put']('/:id',auth[_0xba1f('0x10')](),interaction['tracked'](_0xba1f('0x13'),_0xba1f('0x16')),controller[_0xba1f('0x17')]);router['delete'](_0xba1f('0x9'),auth[_0xba1f('0x10')](),interaction[_0xba1f('0x12')]('fax',_0xba1f('0x18')),controller['destroy']);router[_0xba1f('0x19')]('/:id/tags',auth[_0xba1f('0x10')](),controller['removeTags']);module['exports']=router;
\ No newline at end of file
index d53ed0a..da579c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcea2=['BOOLEAN','ENUM','out','DATE','sequelize','TEXT'];(function(_0x1f27bc,_0x3f7e77){var _0x48494f=function(_0x13d41b){while(--_0x13d41b){_0x1f27bc['push'](_0x1f27bc['shift']());}};_0x48494f(++_0x3f7e77);}(_0xcea2,0x15a));var _0x2cea=function(_0x50007c,_0x1cbf11){_0x50007c=_0x50007c-0x0;var _0x5c1ec7=_0xcea2[_0x50007c];return _0x5c1ec7;};'use strict';var Sequelize=require(_0x2cea('0x0'));module['exports']={'body':{'type':Sequelize[_0x2cea('0x1')]('medium'),'allowNull':![]},'read':{'type':Sequelize[_0x2cea('0x2')],'defaultValue':![]},'direction':{'type':Sequelize[_0x2cea('0x3')]('in',_0x2cea('0x4')),'defaultValue':'out','allowNull':![]},'failMessage':{'type':Sequelize[_0x2cea('0x1')],'defaultValue':null},'readAt':{'type':Sequelize[_0x2cea('0x5')]}};
\ No newline at end of file
+var _0xdace=['TEXT','medium','BOOLEAN','out','DATE','sequelize'];(function(_0x36c648,_0x1619f3){var _0x456a95=function(_0x58b791){while(--_0x58b791){_0x36c648['push'](_0x36c648['shift']());}};_0x456a95(++_0x1619f3);}(_0xdace,0xc5));var _0xedac=function(_0x5bf2b3,_0xfcd364){_0x5bf2b3=_0x5bf2b3-0x0;var _0x5e8a9b=_0xdace[_0x5bf2b3];return _0x5e8a9b;};'use strict';var Sequelize=require(_0xedac('0x0'));module['exports']={'body':{'type':Sequelize[_0xedac('0x1')](_0xedac('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0xedac('0x3')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0xedac('0x4')),'defaultValue':_0xedac('0x4'),'allowNull':![]},'failMessage':{'type':Sequelize[_0xedac('0x1')],'defaultValue':null},'readAt':{'type':Sequelize[_0xedac('0x5')]}};
\ No newline at end of file
index 626e6da..2d6c631 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2298=['options','count','include','findAll','rows','show','params','includeAll','find','body','describe','fax-interactions','accept','fax','read','format','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','ContactId','sequelize','QueryTypes','SELECT','contact','User','fullname','internal','manual','SIP/%s','channel','motionChannel','event','EventManager','acceptmessage','RejectMessage','rejectMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','email','interface','rejectmessage','create','findOne','Attachment','SendFax','FaxAccountId','/var/opt/motion2/server/files/attachments/%s','basename','AttachmentId','download','join','root','server','files','attachments','eml-format','rimraf','request-promise','moment','mustache','util','path','sox','to-csv','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','defaults','localhost','socket.io-emitter','./faxMessage.socket','jayson/promise','client','http','request','then','info','FaxMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','FaxMessage,\x20%s,\x20%s','message','result','catch','status','json','offset','limit','set','Content-Range','apply','reject','update','destroy','end','sendStatus','stack','name','send','map','FaxMessage','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filter','where','merge'];(function(_0x415cf4,_0x1c5b67){var _0x11b6f2=function(_0x4400da){while(--_0x4400da){_0x415cf4['push'](_0x415cf4['shift']());}};_0x11b6f2(++_0x1c5b67);}(_0x2298,0x162));var _0x8229=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x2298[_0x397e5f];return _0x5302b8;};'use strict';var emlformat=require(_0x8229('0x0'));var rimraf=require(_0x8229('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x8229('0x2'));var moment=require(_0x8229('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x8229('0x4'));var util=require(_0x8229('0x5'));var path=require(_0x8229('0x6'));var sox=require(_0x8229('0x7'));var csv=require(_0x8229('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x8229('0x9'));var squel=require(_0x8229('0xa'));var crypto=require('crypto');var jsforce=require(_0x8229('0xb'));var deskjs=require(_0x8229('0xc'));var toCsv=require(_0x8229('0x8'));var querystring=require(_0x8229('0xd'));var Papa=require('papaparse');var Redis=require(_0x8229('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x8229('0xf'));var as=require(_0x8229('0x10'));var hardwareService=require(_0x8229('0x11'));var logger=require(_0x8229('0x12'))(_0x8229('0x13'));var utils=require(_0x8229('0x14'));var config=require(_0x8229('0x15'));var licenseUtil=require(_0x8229('0x16'));var db=require('../../mysqldb')['db'];config['redis']=_[_0x8229('0x17')](config['redis'],{'host':_0x8229('0x18'),'port':0x18eb});var socket=require(_0x8229('0x19'))(new Redis(config['redis']));require(_0x8229('0x1a'))['register'](socket);var jayson=require(_0x8229('0x1b'));var client=jayson[_0x8229('0x1c')][_0x8229('0x1d')]({'port':0x232c});var client9002=jayson['client'][_0x8229('0x1d')]({'port':0x232a});function respondWithRpcPromise(_0x920683,_0x4c091a,_0x442c9c,_0x19c2ba){return new BPromise(function(_0x59f1b3,_0x4cf268){var _0x2ebeba=_0x19c2ba||client;return _0x2ebeba[_0x8229('0x1e')](_0x920683,_0x442c9c)[_0x8229('0x1f')](function(_0x2d823a){logger[_0x8229('0x20')]('FaxMessage,\x20%s,\x20%s',_0x4c091a,'request\x20sent');logger['debug'](_0x8229('0x21'),_0x4c091a,_0x8229('0x22'),JSON[_0x8229('0x23')](_0x2d823a));if(_0x2d823a[_0x8229('0x24')]){if(_0x2d823a[_0x8229('0x24')][_0x8229('0x25')]===0x1f4){logger[_0x8229('0x24')](_0x8229('0x26'),_0x4c091a,_0x2d823a['error'][_0x8229('0x27')]);return _0x4cf268(_0x2d823a[_0x8229('0x24')][_0x8229('0x27')]);}logger['error'](_0x8229('0x26'),_0x4c091a,_0x2d823a[_0x8229('0x24')][_0x8229('0x27')]);return _0x59f1b3(_0x2d823a[_0x8229('0x24')]['message']);}else{logger[_0x8229('0x20')]('FaxMessage,\x20%s,\x20%s',_0x4c091a,'request\x20sent');_0x59f1b3(_0x2d823a[_0x8229('0x28')][_0x8229('0x27')]);}})[_0x8229('0x29')](function(_0x4c46e2){logger['error']('FaxMessage,\x20%s,\x20%s',_0x4c091a,_0x4c46e2);_0x4cf268(_0x4c46e2);});});}function respondWithStatusCode(_0x444411,_0x4a004a){_0x4a004a=_0x4a004a||0xcc;return function(_0x16213b){if(_0x16213b){return _0x444411['sendStatus'](_0x4a004a);}return _0x444411[_0x8229('0x2a')](_0x4a004a)['end']();};}function respondWithResult(_0x3471fc,_0x1e0003){_0x1e0003=_0x1e0003||0xc8;return function(_0x3e0f99){if(_0x3e0f99){return _0x3471fc[_0x8229('0x2a')](_0x1e0003)[_0x8229('0x2b')](_0x3e0f99);}};}function respondWithFilteredResult(_0x273cbd,_0x530b8e){return function(_0x379efb){if(_0x379efb){var _0x136f0c=typeof _0x530b8e[_0x8229('0x2c')]==='undefined'&&typeof _0x530b8e[_0x8229('0x2d')]==='undefined';var _0x40ae88=_0x379efb['count'];var _0x170540=_0x136f0c?0x0:_0x530b8e[_0x8229('0x2c')];var _0x4fac90=_0x136f0c?_0x379efb['count']:_0x530b8e[_0x8229('0x2c')]+_0x530b8e['limit'];var _0x2f8bdb;if(_0x4fac90>=_0x40ae88){_0x4fac90=_0x40ae88;_0x2f8bdb=0xc8;}else{_0x2f8bdb=0xce;}_0x273cbd['status'](_0x2f8bdb);return _0x273cbd[_0x8229('0x2e')](_0x8229('0x2f'),_0x170540+'-'+_0x4fac90+'/'+_0x40ae88)[_0x8229('0x2b')](_0x379efb);}return null;};}function patchUpdates(_0x425dc1){return function(_0x2e434e){try{jsonpatch[_0x8229('0x30')](_0x2e434e,_0x425dc1,!![]);}catch(_0x1e4583){return BPromise[_0x8229('0x31')](_0x1e4583);}return _0x2e434e['save']();};}function saveUpdates(_0x3cbcce,_0xacff09){return function(_0xa2e15f){if(_0xa2e15f){return _0xa2e15f[_0x8229('0x32')](_0x3cbcce)['then'](function(_0x514a67){return _0x514a67;});}return null;};}function removeEntity(_0x190cd7,_0x259b05){return function(_0x27ea5f){if(_0x27ea5f){return _0x27ea5f[_0x8229('0x33')]()[_0x8229('0x1f')](function(){_0x190cd7[_0x8229('0x2a')](0xcc)[_0x8229('0x34')]();});}};}function handleEntityNotFound(_0x12224e,_0x38c523){return function(_0x14aca8){if(!_0x14aca8){_0x12224e[_0x8229('0x35')](0x194);}return _0x14aca8;};}function handleError(_0x246cf3,_0xea2a19){_0xea2a19=_0xea2a19||0x1f4;return function(_0x126eff){logger[_0x8229('0x24')](_0x126eff[_0x8229('0x36')]);if(_0x126eff['name']){delete _0x126eff[_0x8229('0x37')];}_0x246cf3[_0x8229('0x2a')](_0xea2a19)[_0x8229('0x38')](_0x126eff);};}exports['index']=function(_0x429210,_0x51d45c){var _0x3bc789={},_0x4a4791={},_0x28924d={'count':0x0,'rows':[]};var _0x487245=_[_0x8229('0x39')](db[_0x8229('0x3a')][_0x8229('0x3b')],function(_0x119eeb){return{'name':_0x119eeb[_0x8229('0x3c')],'type':_0x119eeb[_0x8229('0x3d')][_0x8229('0x3e')]};});_0x4a4791['model']=_['map'](_0x487245,_0x8229('0x37'));_0x4a4791[_0x8229('0x3f')]=_[_0x8229('0x40')](_0x429210[_0x8229('0x3f')]);_0x4a4791[_0x8229('0x41')]=_[_0x8229('0x42')](_0x4a4791[_0x8229('0x43')],_0x4a4791['query']);_0x3bc789[_0x8229('0x44')]=_[_0x8229('0x42')](_0x4a4791[_0x8229('0x43')],qs[_0x8229('0x45')](_0x429210['query'][_0x8229('0x45')]));_0x3bc789[_0x8229('0x44')]=_0x3bc789[_0x8229('0x44')][_0x8229('0x46')]?_0x3bc789[_0x8229('0x44')]:_0x4a4791[_0x8229('0x43')];if(!_0x429210[_0x8229('0x3f')][_0x8229('0x47')](_0x8229('0x48'))){_0x3bc789[_0x8229('0x2d')]=qs['limit'](_0x429210[_0x8229('0x3f')][_0x8229('0x2d')]);_0x3bc789[_0x8229('0x2c')]=qs[_0x8229('0x2c')](_0x429210[_0x8229('0x3f')]['offset']);}_0x3bc789[_0x8229('0x49')]=qs[_0x8229('0x4a')](_0x429210['query']['sort']);_0x3bc789['where']=qs[_0x8229('0x41')](_['pick'](_0x429210[_0x8229('0x3f')],_0x4a4791[_0x8229('0x41')]),_0x487245);if(_0x429210[_0x8229('0x3f')][_0x8229('0x4b')]){_0x3bc789[_0x8229('0x4c')]=_[_0x8229('0x4d')](_0x3bc789[_0x8229('0x4c')],{'$or':_[_0x8229('0x39')](_0x487245,function(_0x55bc5d){if(_0x55bc5d[_0x8229('0x3d')]!=='VIRTUAL'){var _0x7b0722={};_0x7b0722[_0x55bc5d[_0x8229('0x37')]]={'$like':'%'+_0x429210['query'][_0x8229('0x4b')]+'%'};return _0x7b0722;}})});}_0x3bc789=_[_0x8229('0x4d')]({},_0x3bc789,_0x429210[_0x8229('0x4e')]);var _0x5af956={'where':_0x3bc789[_0x8229('0x4c')]};return db['FaxMessage']['count'](_0x5af956)[_0x8229('0x1f')](function(_0x3d251d){_0x28924d[_0x8229('0x4f')]=_0x3d251d;if(_0x429210[_0x8229('0x3f')]['includeAll']){_0x3bc789[_0x8229('0x50')]=[{'all':!![]}];}return db['FaxMessage'][_0x8229('0x51')](_0x3bc789);})[_0x8229('0x1f')](function(_0x4901ec){_0x28924d[_0x8229('0x52')]=_0x4901ec;return _0x28924d;})[_0x8229('0x1f')](respondWithFilteredResult(_0x51d45c,_0x3bc789))[_0x8229('0x29')](handleError(_0x51d45c,null));};exports[_0x8229('0x53')]=function(_0x45fc26,_0x47024e){var _0x5ea06a={'raw':!![],'where':{'id':_0x45fc26[_0x8229('0x54')]['id']}},_0x1f9735={};_0x1f9735[_0x8229('0x43')]=_['keys'](db[_0x8229('0x3a')][_0x8229('0x3b')]);_0x1f9735[_0x8229('0x3f')]=_[_0x8229('0x40')](_0x45fc26['query']);_0x1f9735[_0x8229('0x41')]=_[_0x8229('0x42')](_0x1f9735[_0x8229('0x43')],_0x1f9735[_0x8229('0x3f')]);_0x5ea06a[_0x8229('0x44')]=_[_0x8229('0x42')](_0x1f9735['model'],qs[_0x8229('0x45')](_0x45fc26[_0x8229('0x3f')]['fields']));_0x5ea06a[_0x8229('0x44')]=_0x5ea06a[_0x8229('0x44')][_0x8229('0x46')]?_0x5ea06a[_0x8229('0x44')]:_0x1f9735[_0x8229('0x43')];if(_0x45fc26[_0x8229('0x3f')][_0x8229('0x55')]){_0x5ea06a[_0x8229('0x50')]=[{'all':!![]}];}_0x5ea06a=_[_0x8229('0x4d')]({},_0x5ea06a,_0x45fc26['options']);return db[_0x8229('0x3a')][_0x8229('0x56')](_0x5ea06a)[_0x8229('0x1f')](handleEntityNotFound(_0x47024e,null))['then'](respondWithResult(_0x47024e,null))[_0x8229('0x29')](handleError(_0x47024e,null));};exports[_0x8229('0x32')]=function(_0x5209ca,_0x10e3ec){if(_0x5209ca[_0x8229('0x57')]['id']){delete _0x5209ca[_0x8229('0x57')]['id'];}return db[_0x8229('0x3a')]['find']({'where':{'id':_0x5209ca['params']['id']}})[_0x8229('0x1f')](handleEntityNotFound(_0x10e3ec,null))[_0x8229('0x1f')](saveUpdates(_0x5209ca[_0x8229('0x57')],null))[_0x8229('0x1f')](respondWithResult(_0x10e3ec,null))[_0x8229('0x29')](handleError(_0x10e3ec,null));};exports['destroy']=function(_0x8e8f12,_0x290d5f){return db['FaxMessage']['find']({'where':{'id':_0x8e8f12[_0x8229('0x54')]['id']}})[_0x8229('0x1f')](handleEntityNotFound(_0x290d5f,null))['then'](removeEntity(_0x290d5f,null))[_0x8229('0x29')](handleError(_0x290d5f,null));};exports[_0x8229('0x58')]=function(_0x2029c9,_0x233987){return db['FaxMessage'][_0x8229('0x58')]()[_0x8229('0x1f')](respondWithResult(_0x233987,null))[_0x8229('0x29')](handleError(_0x233987,null));};var interaction_log=require(_0x8229('0x12'))(_0x8229('0x59'));exports[_0x8229('0x5a')]=function(_0x934204,_0x3bf2b6,_0x324585){var _0x46d6f7={'agent':{},'channel':_0x8229('0x5b')};if(_0x934204['body']['id']){delete _0x934204[_0x8229('0x57')]['id'];}_0x934204[_0x8229('0x57')][_0x8229('0x5c')]=!![];_0x934204[_0x8229('0x57')]['readAt']=moment()[_0x8229('0x5d')](_0x8229('0x5e'));_0x934204[_0x8229('0x57')][_0x8229('0x5f')]=_0x934204[_0x8229('0x57')][_0x8229('0x5f')]||_0x934204[_0x8229('0x60')]['id'];_0x46d6f7[_0x8229('0x61')]['id']=_0x934204['body'][_0x8229('0x5f')];return db[_0x8229('0x3a')][_0x8229('0x56')]({'where':{'id':_0x934204[_0x8229('0x54')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x3bf2b6,null))['then'](saveUpdates(_0x934204[_0x8229('0x57')],null))[_0x8229('0x1f')](function(_0x2e4825){if(_0x2e4825){_0x46d6f7[_0x8229('0x27')]=_0x2e4825[_0x8229('0x62')]({'plain':!![]});return db[_0x8229('0x63')][_0x8229('0x56')]({'where':{'id':_0x2e4825[_0x8229('0x64')]}});}return null;})[_0x8229('0x1f')](handleEntityNotFound(_0x3bf2b6,null))[_0x8229('0x1f')](function(_0x347a5a){if(_0x347a5a){return _0x347a5a[_0x8229('0x32')]({'UserId':_0x934204['body'][_0x8229('0x5f')],'read1stAt':_[_0x8229('0x65')](_0x347a5a[_0x8229('0x66')])?moment()[_0x8229('0x5d')](_0x8229('0x5e')):undefined});}return null;})[_0x8229('0x1f')](function(_0x13517a){if(_0x13517a){_0x46d6f7[_0x8229('0x67')]=_0x13517a[_0x8229('0x62')]({'plain':!![]});interaction_log[_0x8229('0x20')](_0x8229('0x68'),_0x934204[_0x8229('0x60')]['id'],_0x934204[_0x8229('0x60')][_0x8229('0x37')],_0x934204[_0x8229('0x60')][_0x8229('0x69')],_0x46d6f7[_0x8229('0x67')]['id'],_0x934204['body']?JSON[_0x8229('0x23')](_0x934204['body']):_0x8229('0x6a'));return respondWithRpcPromise(_0x8229('0x6b'),_0x8229('0x6c'),_0x46d6f7);}return null;})[_0x8229('0x1f')](function(_0x2ddda6){var _0x450d3c='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x2ddda6[_0x8229('0x27')][_0x8229('0x6d')];return db[_0x8229('0x6e')][_0x8229('0x3f')](_0x450d3c,{'type':db['Sequelize'][_0x8229('0x6f')][_0x8229('0x70')],'raw':!![]})[_0x8229('0x1f')](function(_0x4bf432){return _0x4bf432;});})[_0x8229('0x1f')](function(_0x2194bb){if(_0x2194bb){_0x46d6f7['message'][_0x8229('0x71')]=_0x2194bb[0x0];if(!_0x934204[_0x8229('0x57')][_0x8229('0x5f')])return;return db[_0x8229('0x72')][_0x8229('0x56')]({'where':{'id':_0x934204['body'][_0x8229('0x5f')],'role':_0x8229('0x61')},'attributes':['id',_0x8229('0x37'),_0x8229('0x73'),'email',_0x8229('0x74')],'raw':!![]});}return null;})[_0x8229('0x1f')](function(_0x3bd41c){if(!_0x3bd41c)return null;_0x46d6f7['message'][_0x8229('0x61')]=_0x3bd41c;return _0x46d6f7;})[_0x8229('0x1f')](function(_0x221a70){if(_0x221a70){if(_0x934204['body'][_0x8229('0x75')]){_0x46d6f7[_0x8229('0x27')]['interface']=util[_0x8229('0x5d')](_0x8229('0x76'),_0x934204['user']['name']);_0x46d6f7[_0x8229('0x27')][_0x8229('0x77')]=_0x46d6f7[_0x8229('0x77')];_0x46d6f7[_0x8229('0x27')][_0x8229('0x78')]=_0x46d6f7[_0x8229('0x77')];_0x46d6f7['message'][_0x8229('0x79')]='accept';return respondWithRpcPromise(_0x8229('0x7a'),'EventManager',{'event':_0x8229('0x7b'),'message':_0x46d6f7[_0x8229('0x27')]},client9002)['then'](function(){return _0x46d6f7;});}return _0x46d6f7;}return null;})[_0x8229('0x1f')](respondWithResult(_0x3bf2b6,null))[_0x8229('0x29')](handleError(_0x3bf2b6,null));};var interaction_log=require(_0x8229('0x12'))(_0x8229('0x59'));exports[_0x8229('0x31')]=function(_0x32bc89,_0x4c222d,_0x43231a){var _0x2677fc={'agent':{},'channel':_0x8229('0x5b')};if(_0x32bc89[_0x8229('0x57')]['id']){delete _0x32bc89[_0x8229('0x57')]['id'];}_0x32bc89[_0x8229('0x57')][_0x8229('0x5f')]=_0x32bc89[_0x8229('0x57')][_0x8229('0x5f')]||_0x32bc89[_0x8229('0x60')]['id'];_0x2677fc['agent']['id']=_0x32bc89['body'][_0x8229('0x5f')];return db['FaxMessage']['find']({'where':{'id':_0x32bc89[_0x8229('0x54')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x4c222d,null))[_0x8229('0x1f')](function(_0x568c51){if(_0x568c51){_0x2677fc[_0x8229('0x27')]=_0x568c51[_0x8229('0x62')]({'plain':!![]});return db[_0x8229('0x63')][_0x8229('0x56')]({'where':{'id':_0x568c51['FaxInteractionId']}});}return null;})[_0x8229('0x1f')](handleEntityNotFound(_0x4c222d,null))[_0x8229('0x1f')](function(_0x2cf70a){if(_0x2cf70a){_0x2677fc[_0x8229('0x67')]=_0x2cf70a[_0x8229('0x62')]({'plain':!![]});interaction_log[_0x8229('0x20')]('[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x32bc89[_0x8229('0x60')]['id'],_0x32bc89[_0x8229('0x60')]['name'],_0x32bc89[_0x8229('0x60')][_0x8229('0x69')],_0x2677fc[_0x8229('0x67')]['id'],_0x32bc89[_0x8229('0x57')]?JSON['stringify'](_0x32bc89[_0x8229('0x57')]):_0x8229('0x6a'));return respondWithRpcPromise(_0x8229('0x7c'),_0x8229('0x7d'),_0x2677fc);}return null;})['then'](function(_0x2fb516){var _0xbcfc09=_0x8229('0x7e')+_0x2fb516[_0x8229('0x27')][_0x8229('0x6d')];return db[_0x8229('0x6e')][_0x8229('0x3f')](_0xbcfc09,{'type':db['Sequelize']['QueryTypes'][_0x8229('0x70')],'raw':!![]})[_0x8229('0x1f')](function(_0x446e16){return _0x446e16;});})[_0x8229('0x1f')](function(_0x32b6f3){if(_0x32b6f3){_0x2677fc[_0x8229('0x27')][_0x8229('0x71')]=_0x32b6f3[0x0];if(!_0x32bc89['body'][_0x8229('0x5f')])return;return db['User'][_0x8229('0x56')]({'where':{'id':_0x32bc89[_0x8229('0x57')]['UserId'],'role':'agent'},'attributes':['id',_0x8229('0x37'),_0x8229('0x73'),_0x8229('0x7f'),'internal'],'raw':!![]});}return null;})['then'](function(_0x9758b3){if(!_0x9758b3)return null;_0x2677fc[_0x8229('0x27')][_0x8229('0x61')]=_0x9758b3;return _0x2677fc;})['then'](function(_0x1c382d){if(_0x1c382d){_0x1c382d['message'][_0x8229('0x80')]=util[_0x8229('0x5d')]('SIP/%s',_0x32bc89['user'][_0x8229('0x37')]);_0x1c382d[_0x8229('0x27')]['channel']=_0x2677fc[_0x8229('0x77')];_0x1c382d[_0x8229('0x27')]['motionChannel']=_0x2677fc[_0x8229('0x77')];_0x1c382d[_0x8229('0x27')]['event']='reject';respondWithRpcPromise(_0x8229('0x7a'),_0x8229('0x7a'),{'event':_0x8229('0x81'),'message':_0x1c382d[_0x8229('0x27')]},client9002);return _0x2677fc;}return null;})['then'](respondWithResult(_0x4c222d,null))[_0x8229('0x29')](handleError(_0x4c222d,null));};exports[_0x8229('0x82')]=function(_0x5522ec,_0x26eacb){var _0x589c3b;return db['FaxMessage'][_0x8229('0x82')](_0x5522ec['body'],{})['then'](function(_0xb38820){_0x589c3b=_0xb38820;return db['CmContact'][_0x8229('0x83')]({'where':{'id':_0x589c3b[_0x8229('0x6d')]}});})[_0x8229('0x1f')](function(_0x2a22a4){if(_[_0x8229('0x65')](_0x2a22a4)){return;}else{_0x589c3b['fax']=_0x2a22a4[_0x8229('0x5b')];return db[_0x8229('0x84')][_0x8229('0x83')]({'where':{'id':_0x589c3b['AttachmentId']}});}})[_0x8229('0x1f')](function(_0x5d99e5){return respondWithRpcPromise('SendFax',_0x8229('0x85'),{'FaxAccountId':_[_0x8229('0x65')](_0x5522ec[_0x8229('0x57')])?undefined:_0x5522ec[_0x8229('0x57')][_0x8229('0x86')],'path':_[_0x8229('0x65')](_0x5d99e5)?undefined:util['format'](_0x8229('0x87'),_0x5d99e5[_0x8229('0x88')]),'fax':_['isNil'](_0x589c3b[_0x8229('0x5b')])?undefined:_0x589c3b[_0x8229('0x5b')],'AttachmentId':_0x589c3b[_0x8229('0x89')]},client9002);})['then'](respondWithResult(_0x26eacb,0xc9))[_0x8229('0x29')](handleError(_0x26eacb,null));};exports[_0x8229('0x8a')]=function(_0x5e8233,_0x493fc5){var _0x5ccd28=path[_0x8229('0x8b')](config[_0x8229('0x8c')],_0x8229('0x8d'),_0x8229('0x8e'),_0x8229('0x8f'));return db[_0x8229('0x3a')][_0x8229('0x56')]({'where':{'id':_0x5e8233[_0x8229('0x54')]['id']},'include':[{'model':db[_0x8229('0x84')],'as':_0x8229('0x84')}]})[_0x8229('0x1f')](handleEntityNotFound(_0x493fc5,null))[_0x8229('0x1f')](function(_0x2ecfcb){if(_0x2ecfcb){return _0x493fc5[_0x8229('0x8a')](path[_0x8229('0x8b')](_0x5ccd28,_0x2ecfcb[_0x8229('0x84')][_0x8229('0x88')]));}})[_0x8229('0x29')](handleError(_0x493fc5,null));};
\ No newline at end of file
+var _0x2812=['motionChannel','event','EventManager','FaxInteraction','FaxInteractionId','[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','sequelize','QueryTypes','reject','create','CmContact','findOne','isNil','Attachment','AttachmentId','SendFax','FaxAccountId','/var/opt/motion2/server/files/attachments/%s','download','join','root','server','files','basename','rimraf','fast-json-patch','moment','mustache','util','sox','to-csv','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','../../config/license/util','../../mysqldb','redis','socket.io-emitter','./faxMessage.socket','register','client','http','request','then','FaxMessage,\x20%s,\x20%s','request\x20sent','FaxMessage,\x20%s,\x20%s,\x20%s','stringify','code','error','message','info','result','catch','sendStatus','end','status','json','offset','undefined','count','limit','set','Content-Range','apply','update','name','send','index','map','rawAttributes','fieldName','type','model','query','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','merge','filter','options','FaxMessage','includeAll','findAll','rows','show','keys','include','body','params','destroy','find','describe','fax-interactions','accept','fax','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','get','read1stAt','interaction','role','null','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','Sequelize','SELECT','contact','User','agent','fullname','email','internal','manual','SIP/%s','channel'];(function(_0x52c62a,_0x6a19f0){var _0x57aa21=function(_0x1159b2){while(--_0x1159b2){_0x52c62a['push'](_0x52c62a['shift']());}};_0x57aa21(++_0x6a19f0);}(_0x2812,0x1c1));var _0x2281=function(_0x465a0c,_0x19d4d5){_0x465a0c=_0x465a0c-0x0;var _0x1e202e=_0x2812[_0x465a0c];return _0x1e202e;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2281('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x2281('0x1'));var rp=require('request-promise');var moment=require(_0x2281('0x2'));var BPromise=require('bluebird');var Mustache=require(_0x2281('0x3'));var util=require(_0x2281('0x4'));var path=require('path');var sox=require(_0x2281('0x5'));var csv=require(_0x2281('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2281('0x7'));var squel=require(_0x2281('0x8'));var crypto=require(_0x2281('0x9'));var jsforce=require('jsforce');var deskjs=require(_0x2281('0xa'));var toCsv=require(_0x2281('0x6'));var querystring=require(_0x2281('0xb'));var Papa=require(_0x2281('0xc'));var Redis=require('ioredis');var authService=require(_0x2281('0xd'));var qs=require(_0x2281('0xe'));var as=require(_0x2281('0xf'));var hardwareService=require(_0x2281('0x10'));var logger=require(_0x2281('0x11'))(_0x2281('0x12'));var utils=require(_0x2281('0x13'));var config=require(_0x2281('0x14'));var licenseUtil=require(_0x2281('0x15'));var db=require(_0x2281('0x16'))['db'];config['redis']=_['defaults'](config[_0x2281('0x17')],{'host':'localhost','port':0x18eb});var socket=require(_0x2281('0x18'))(new Redis(config[_0x2281('0x17')]));require(_0x2281('0x19'))[_0x2281('0x1a')](socket);var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232c});var client9002=jayson[_0x2281('0x1b')][_0x2281('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0x478c90,_0x5227bd,_0xfc2959,_0x172937){return new BPromise(function(_0x55b350,_0x4bae56){var _0x5abba8=_0x172937||client;return _0x5abba8[_0x2281('0x1d')](_0x478c90,_0xfc2959)[_0x2281('0x1e')](function(_0x312470){logger['info'](_0x2281('0x1f'),_0x5227bd,_0x2281('0x20'));logger['debug'](_0x2281('0x21'),_0x5227bd,_0x2281('0x20'),JSON[_0x2281('0x22')](_0x312470));if(_0x312470['error']){if(_0x312470['error'][_0x2281('0x23')]===0x1f4){logger['error'](_0x2281('0x1f'),_0x5227bd,_0x312470[_0x2281('0x24')][_0x2281('0x25')]);return _0x4bae56(_0x312470['error'][_0x2281('0x25')]);}logger[_0x2281('0x24')](_0x2281('0x1f'),_0x5227bd,_0x312470[_0x2281('0x24')][_0x2281('0x25')]);return _0x55b350(_0x312470[_0x2281('0x24')]['message']);}else{logger[_0x2281('0x26')]('FaxMessage,\x20%s,\x20%s',_0x5227bd,_0x2281('0x20'));_0x55b350(_0x312470[_0x2281('0x27')][_0x2281('0x25')]);}})[_0x2281('0x28')](function(_0x4584ee){logger[_0x2281('0x24')](_0x2281('0x1f'),_0x5227bd,_0x4584ee);_0x4bae56(_0x4584ee);});});}function respondWithStatusCode(_0xf74546,_0x5e251f){_0x5e251f=_0x5e251f||0xcc;return function(_0x12d8b5){if(_0x12d8b5){return _0xf74546[_0x2281('0x29')](_0x5e251f);}return _0xf74546['status'](_0x5e251f)[_0x2281('0x2a')]();};}function respondWithResult(_0x48a801,_0x40476d){_0x40476d=_0x40476d||0xc8;return function(_0x4b7953){if(_0x4b7953){return _0x48a801[_0x2281('0x2b')](_0x40476d)[_0x2281('0x2c')](_0x4b7953);}};}function respondWithFilteredResult(_0x9808d8,_0x468f6a){return function(_0x2c8cf5){if(_0x2c8cf5){var _0x1a3266=typeof _0x468f6a[_0x2281('0x2d')]===_0x2281('0x2e')&&typeof _0x468f6a['limit']===_0x2281('0x2e');var _0x2c4589=_0x2c8cf5[_0x2281('0x2f')];var _0x52d42c=_0x1a3266?0x0:_0x468f6a[_0x2281('0x2d')];var _0x4b86cf=_0x1a3266?_0x2c8cf5['count']:_0x468f6a[_0x2281('0x2d')]+_0x468f6a[_0x2281('0x30')];var _0x365f14;if(_0x4b86cf>=_0x2c4589){_0x4b86cf=_0x2c4589;_0x365f14=0xc8;}else{_0x365f14=0xce;}_0x9808d8[_0x2281('0x2b')](_0x365f14);return _0x9808d8[_0x2281('0x31')](_0x2281('0x32'),_0x52d42c+'-'+_0x4b86cf+'/'+_0x2c4589)[_0x2281('0x2c')](_0x2c8cf5);}return null;};}function patchUpdates(_0xf75ec6){return function(_0x2727db){try{jsonpatch[_0x2281('0x33')](_0x2727db,_0xf75ec6,!![]);}catch(_0x48d6b2){return BPromise['reject'](_0x48d6b2);}return _0x2727db['save']();};}function saveUpdates(_0x2af5ed,_0x11d4c7){return function(_0x33ca3e){if(_0x33ca3e){return _0x33ca3e[_0x2281('0x34')](_0x2af5ed)[_0x2281('0x1e')](function(_0x10da4a){return _0x10da4a;});}return null;};}function removeEntity(_0x3858d3,_0x7b29){return function(_0x4b3e94){if(_0x4b3e94){return _0x4b3e94['destroy']()[_0x2281('0x1e')](function(){_0x3858d3[_0x2281('0x2b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x33224a,_0x1a3e0e){return function(_0xba6848){if(!_0xba6848){_0x33224a[_0x2281('0x29')](0x194);}return _0xba6848;};}function handleError(_0x2455c0,_0x1b7028){_0x1b7028=_0x1b7028||0x1f4;return function(_0xa130a3){logger[_0x2281('0x24')](_0xa130a3['stack']);if(_0xa130a3[_0x2281('0x35')]){delete _0xa130a3['name'];}_0x2455c0['status'](_0x1b7028)[_0x2281('0x36')](_0xa130a3);};}exports[_0x2281('0x37')]=function(_0x11df3a,_0x4cfdad){var _0x5a0637={},_0x4eef19={},_0x5c9820={'count':0x0,'rows':[]};var _0x84bb72=_[_0x2281('0x38')](db['FaxMessage'][_0x2281('0x39')],function(_0x41ba36){return{'name':_0x41ba36[_0x2281('0x3a')],'type':_0x41ba36[_0x2281('0x3b')]['key']};});_0x4eef19[_0x2281('0x3c')]=_[_0x2281('0x38')](_0x84bb72,_0x2281('0x35'));_0x4eef19[_0x2281('0x3d')]=_['keys'](_0x11df3a[_0x2281('0x3d')]);_0x4eef19['filters']=_[_0x2281('0x3e')](_0x4eef19[_0x2281('0x3c')],_0x4eef19[_0x2281('0x3d')]);_0x5a0637['attributes']=_[_0x2281('0x3e')](_0x4eef19[_0x2281('0x3c')],qs[_0x2281('0x3f')](_0x11df3a[_0x2281('0x3d')][_0x2281('0x3f')]));_0x5a0637[_0x2281('0x40')]=_0x5a0637[_0x2281('0x40')][_0x2281('0x41')]?_0x5a0637['attributes']:_0x4eef19[_0x2281('0x3c')];if(!_0x11df3a['query'][_0x2281('0x42')](_0x2281('0x43'))){_0x5a0637[_0x2281('0x30')]=qs['limit'](_0x11df3a['query']['limit']);_0x5a0637[_0x2281('0x2d')]=qs['offset'](_0x11df3a[_0x2281('0x3d')]['offset']);}_0x5a0637[_0x2281('0x44')]=qs['sort'](_0x11df3a[_0x2281('0x3d')][_0x2281('0x45')]);_0x5a0637[_0x2281('0x46')]=qs[_0x2281('0x47')](_['pick'](_0x11df3a[_0x2281('0x3d')],_0x4eef19[_0x2281('0x47')]),_0x84bb72);if(_0x11df3a[_0x2281('0x3d')]['filter']){_0x5a0637[_0x2281('0x46')]=_[_0x2281('0x48')](_0x5a0637[_0x2281('0x46')],{'$or':_[_0x2281('0x38')](_0x84bb72,function(_0x363f96){if(_0x363f96[_0x2281('0x3b')]!=='VIRTUAL'){var _0x54743c={};_0x54743c[_0x363f96[_0x2281('0x35')]]={'$like':'%'+_0x11df3a['query'][_0x2281('0x49')]+'%'};return _0x54743c;}})});}_0x5a0637=_[_0x2281('0x48')]({},_0x5a0637,_0x11df3a[_0x2281('0x4a')]);var _0xfe64d6={'where':_0x5a0637[_0x2281('0x46')]};return db[_0x2281('0x4b')][_0x2281('0x2f')](_0xfe64d6)[_0x2281('0x1e')](function(_0x9c94a){_0x5c9820['count']=_0x9c94a;if(_0x11df3a[_0x2281('0x3d')][_0x2281('0x4c')]){_0x5a0637['include']=[{'all':!![]}];}return db['FaxMessage'][_0x2281('0x4d')](_0x5a0637);})[_0x2281('0x1e')](function(_0x895625){_0x5c9820[_0x2281('0x4e')]=_0x895625;return _0x5c9820;})[_0x2281('0x1e')](respondWithFilteredResult(_0x4cfdad,_0x5a0637))[_0x2281('0x28')](handleError(_0x4cfdad,null));};exports[_0x2281('0x4f')]=function(_0x415792,_0x381bdb){var _0x1b27f9={'raw':!![],'where':{'id':_0x415792['params']['id']}},_0x53e341={};_0x53e341[_0x2281('0x3c')]=_[_0x2281('0x50')](db[_0x2281('0x4b')][_0x2281('0x39')]);_0x53e341[_0x2281('0x3d')]=_[_0x2281('0x50')](_0x415792[_0x2281('0x3d')]);_0x53e341[_0x2281('0x47')]=_[_0x2281('0x3e')](_0x53e341[_0x2281('0x3c')],_0x53e341['query']);_0x1b27f9['attributes']=_[_0x2281('0x3e')](_0x53e341['model'],qs[_0x2281('0x3f')](_0x415792['query'][_0x2281('0x3f')]));_0x1b27f9[_0x2281('0x40')]=_0x1b27f9[_0x2281('0x40')][_0x2281('0x41')]?_0x1b27f9['attributes']:_0x53e341['model'];if(_0x415792[_0x2281('0x3d')]['includeAll']){_0x1b27f9[_0x2281('0x51')]=[{'all':!![]}];}_0x1b27f9=_[_0x2281('0x48')]({},_0x1b27f9,_0x415792[_0x2281('0x4a')]);return db[_0x2281('0x4b')]['find'](_0x1b27f9)[_0x2281('0x1e')](handleEntityNotFound(_0x381bdb,null))[_0x2281('0x1e')](respondWithResult(_0x381bdb,null))[_0x2281('0x28')](handleError(_0x381bdb,null));};exports[_0x2281('0x34')]=function(_0x2c94a5,_0x30a188){if(_0x2c94a5[_0x2281('0x52')]['id']){delete _0x2c94a5['body']['id'];}return db['FaxMessage']['find']({'where':{'id':_0x2c94a5[_0x2281('0x53')]['id']}})[_0x2281('0x1e')](handleEntityNotFound(_0x30a188,null))[_0x2281('0x1e')](saveUpdates(_0x2c94a5[_0x2281('0x52')],null))[_0x2281('0x1e')](respondWithResult(_0x30a188,null))['catch'](handleError(_0x30a188,null));};exports[_0x2281('0x54')]=function(_0x475d7e,_0x253b73){return db[_0x2281('0x4b')][_0x2281('0x55')]({'where':{'id':_0x475d7e['params']['id']}})['then'](handleEntityNotFound(_0x253b73,null))['then'](removeEntity(_0x253b73,null))[_0x2281('0x28')](handleError(_0x253b73,null));};exports[_0x2281('0x56')]=function(_0x3dea0d,_0x49c858){return db[_0x2281('0x4b')][_0x2281('0x56')]()[_0x2281('0x1e')](respondWithResult(_0x49c858,null))[_0x2281('0x28')](handleError(_0x49c858,null));};var interaction_log=require(_0x2281('0x11'))(_0x2281('0x57'));exports[_0x2281('0x58')]=function(_0x587426,_0x3c4732,_0xf1a34d){var _0x271e65={'agent':{},'channel':_0x2281('0x59')};if(_0x587426[_0x2281('0x52')]['id']){delete _0x587426[_0x2281('0x52')]['id'];}_0x587426[_0x2281('0x52')][_0x2281('0x5a')]=!![];_0x587426[_0x2281('0x52')][_0x2281('0x5b')]=moment()[_0x2281('0x5c')](_0x2281('0x5d'));_0x587426[_0x2281('0x52')]['UserId']=_0x587426[_0x2281('0x52')][_0x2281('0x5e')]||_0x587426[_0x2281('0x5f')]['id'];_0x271e65['agent']['id']=_0x587426[_0x2281('0x52')][_0x2281('0x5e')];return db[_0x2281('0x4b')][_0x2281('0x55')]({'where':{'id':_0x587426['params']['id'],'UserId':null}})['then'](handleEntityNotFound(_0x3c4732,null))[_0x2281('0x1e')](saveUpdates(_0x587426[_0x2281('0x52')],null))['then'](function(_0xd16d4e){if(_0xd16d4e){_0x271e65[_0x2281('0x25')]=_0xd16d4e[_0x2281('0x60')]({'plain':!![]});return db['FaxInteraction']['find']({'where':{'id':_0xd16d4e['FaxInteractionId']}});}return null;})[_0x2281('0x1e')](handleEntityNotFound(_0x3c4732,null))[_0x2281('0x1e')](function(_0x1e8428){if(_0x1e8428){return _0x1e8428[_0x2281('0x34')]({'UserId':_0x587426[_0x2281('0x52')][_0x2281('0x5e')],'read1stAt':_['isNil'](_0x1e8428[_0x2281('0x61')])?moment()[_0x2281('0x5c')](_0x2281('0x5d')):undefined});}return null;})[_0x2281('0x1e')](function(_0x164b27){if(_0x164b27){_0x271e65[_0x2281('0x62')]=_0x164b27[_0x2281('0x60')]({'plain':!![]});interaction_log[_0x2281('0x26')]('[FAXMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x587426[_0x2281('0x5f')]['id'],_0x587426['user'][_0x2281('0x35')],_0x587426[_0x2281('0x5f')][_0x2281('0x63')],_0x271e65[_0x2281('0x62')]['id'],_0x587426[_0x2281('0x52')]?JSON['stringify'](_0x587426['body']):_0x2281('0x64'));return respondWithRpcPromise('AcceptMessage',_0x2281('0x65'),_0x271e65);}return null;})['then'](function(_0x25db49){var _0x69235f=_0x2281('0x66')+_0x25db49[_0x2281('0x25')][_0x2281('0x67')];return db['sequelize']['query'](_0x69235f,{'type':db[_0x2281('0x68')]['QueryTypes'][_0x2281('0x69')],'raw':!![]})[_0x2281('0x1e')](function(_0x32f9ad){return _0x32f9ad;});})['then'](function(_0x228897){if(_0x228897){_0x271e65[_0x2281('0x25')][_0x2281('0x6a')]=_0x228897[0x0];if(!_0x587426['body'][_0x2281('0x5e')])return;return db[_0x2281('0x6b')][_0x2281('0x55')]({'where':{'id':_0x587426[_0x2281('0x52')][_0x2281('0x5e')],'role':_0x2281('0x6c')},'attributes':['id','name',_0x2281('0x6d'),_0x2281('0x6e'),_0x2281('0x6f')],'raw':!![]});}return null;})[_0x2281('0x1e')](function(_0x153304){if(!_0x153304)return null;_0x271e65[_0x2281('0x25')][_0x2281('0x6c')]=_0x153304;return _0x271e65;})[_0x2281('0x1e')](function(_0x2c4e4d){if(_0x2c4e4d){if(_0x587426[_0x2281('0x52')][_0x2281('0x70')]){_0x271e65['message']['interface']=util[_0x2281('0x5c')](_0x2281('0x71'),_0x587426[_0x2281('0x5f')][_0x2281('0x35')]);_0x271e65[_0x2281('0x25')][_0x2281('0x72')]=_0x271e65[_0x2281('0x72')];_0x271e65[_0x2281('0x25')][_0x2281('0x73')]=_0x271e65['channel'];_0x271e65[_0x2281('0x25')][_0x2281('0x74')]=_0x2281('0x58');return respondWithRpcPromise(_0x2281('0x75'),_0x2281('0x75'),{'event':'acceptmessage','message':_0x271e65[_0x2281('0x25')]},client9002)['then'](function(){return _0x271e65;});}return _0x271e65;}return null;})[_0x2281('0x1e')](respondWithResult(_0x3c4732,null))[_0x2281('0x28')](handleError(_0x3c4732,null));};var interaction_log=require(_0x2281('0x11'))(_0x2281('0x57'));exports['reject']=function(_0x28e029,_0x17b7d8,_0x3dcc15){var _0x2ef59d={'agent':{},'channel':_0x2281('0x59')};if(_0x28e029[_0x2281('0x52')]['id']){delete _0x28e029[_0x2281('0x52')]['id'];}_0x28e029['body'][_0x2281('0x5e')]=_0x28e029[_0x2281('0x52')]['UserId']||_0x28e029['user']['id'];_0x2ef59d[_0x2281('0x6c')]['id']=_0x28e029[_0x2281('0x52')][_0x2281('0x5e')];return db['FaxMessage'][_0x2281('0x55')]({'where':{'id':_0x28e029[_0x2281('0x53')]['id'],'UserId':null}})[_0x2281('0x1e')](handleEntityNotFound(_0x17b7d8,null))[_0x2281('0x1e')](function(_0x3c088d){if(_0x3c088d){_0x2ef59d[_0x2281('0x25')]=_0x3c088d[_0x2281('0x60')]({'plain':!![]});return db[_0x2281('0x76')][_0x2281('0x55')]({'where':{'id':_0x3c088d[_0x2281('0x77')]}});}return null;})[_0x2281('0x1e')](handleEntityNotFound(_0x17b7d8,null))[_0x2281('0x1e')](function(_0x9b3075){if(_0x9b3075){_0x2ef59d['interaction']=_0x9b3075['get']({'plain':!![]});interaction_log[_0x2281('0x26')](_0x2281('0x78'),_0x28e029[_0x2281('0x5f')]['id'],_0x28e029[_0x2281('0x5f')][_0x2281('0x35')],_0x28e029[_0x2281('0x5f')][_0x2281('0x63')],_0x2ef59d[_0x2281('0x62')]['id'],_0x28e029[_0x2281('0x52')]?JSON[_0x2281('0x22')](_0x28e029['body']):_0x2281('0x64'));return respondWithRpcPromise(_0x2281('0x79'),_0x2281('0x7a'),_0x2ef59d);}return null;})['then'](function(_0x2fe1cc){var _0x260452=_0x2281('0x66')+_0x2fe1cc['message'][_0x2281('0x67')];return db[_0x2281('0x7b')]['query'](_0x260452,{'type':db['Sequelize'][_0x2281('0x7c')][_0x2281('0x69')],'raw':!![]})['then'](function(_0xf5e39d){return _0xf5e39d;});})[_0x2281('0x1e')](function(_0x5b09d5){if(_0x5b09d5){_0x2ef59d[_0x2281('0x25')][_0x2281('0x6a')]=_0x5b09d5[0x0];if(!_0x28e029['body'][_0x2281('0x5e')])return;return db[_0x2281('0x6b')][_0x2281('0x55')]({'where':{'id':_0x28e029['body'][_0x2281('0x5e')],'role':_0x2281('0x6c')},'attributes':['id','name',_0x2281('0x6d'),_0x2281('0x6e'),'internal'],'raw':!![]});}return null;})['then'](function(_0xbafd78){if(!_0xbafd78)return null;_0x2ef59d['message'][_0x2281('0x6c')]=_0xbafd78;return _0x2ef59d;})[_0x2281('0x1e')](function(_0x24e0fd){if(_0x24e0fd){_0x24e0fd[_0x2281('0x25')]['interface']=util[_0x2281('0x5c')]('SIP/%s',_0x28e029[_0x2281('0x5f')][_0x2281('0x35')]);_0x24e0fd[_0x2281('0x25')][_0x2281('0x72')]=_0x2ef59d[_0x2281('0x72')];_0x24e0fd[_0x2281('0x25')]['motionChannel']=_0x2ef59d[_0x2281('0x72')];_0x24e0fd['message']['event']=_0x2281('0x7d');respondWithRpcPromise(_0x2281('0x75'),'EventManager',{'event':'rejectmessage','message':_0x24e0fd[_0x2281('0x25')]},client9002);return _0x2ef59d;}return null;})[_0x2281('0x1e')](respondWithResult(_0x17b7d8,null))[_0x2281('0x28')](handleError(_0x17b7d8,null));};exports[_0x2281('0x7e')]=function(_0x581f26,_0x2a0dbf){var _0x382acf;return db['FaxMessage'][_0x2281('0x7e')](_0x581f26[_0x2281('0x52')],{})[_0x2281('0x1e')](function(_0x1712cb){_0x382acf=_0x1712cb;return db[_0x2281('0x7f')][_0x2281('0x80')]({'where':{'id':_0x382acf[_0x2281('0x67')]}});})[_0x2281('0x1e')](function(_0x25bd48){if(_[_0x2281('0x81')](_0x25bd48)){return;}else{_0x382acf['fax']=_0x25bd48[_0x2281('0x59')];return db[_0x2281('0x82')][_0x2281('0x80')]({'where':{'id':_0x382acf[_0x2281('0x83')]}});}})['then'](function(_0x5e41d5){return respondWithRpcPromise(_0x2281('0x84'),_0x2281('0x84'),{'FaxAccountId':_[_0x2281('0x81')](_0x581f26[_0x2281('0x52')])?undefined:_0x581f26['body'][_0x2281('0x85')],'path':_[_0x2281('0x81')](_0x5e41d5)?undefined:util[_0x2281('0x5c')](_0x2281('0x86'),_0x5e41d5['basename']),'fax':_[_0x2281('0x81')](_0x382acf[_0x2281('0x59')])?undefined:_0x382acf[_0x2281('0x59')],'AttachmentId':_0x382acf[_0x2281('0x83')]},client9002);})['then'](respondWithResult(_0x2a0dbf,0xc9))[_0x2281('0x28')](handleError(_0x2a0dbf,null));};exports[_0x2281('0x87')]=function(_0x30607c,_0x5cdcdc){var _0xca900c=path[_0x2281('0x88')](config[_0x2281('0x89')],_0x2281('0x8a'),_0x2281('0x8b'),'attachments');return db[_0x2281('0x4b')][_0x2281('0x55')]({'where':{'id':_0x30607c[_0x2281('0x53')]['id']},'include':[{'model':db['Attachment'],'as':_0x2281('0x82')}]})[_0x2281('0x1e')](handleEntityNotFound(_0x5cdcdc,null))[_0x2281('0x1e')](function(_0x1ac514){if(_0x1ac514){return _0x5cdcdc[_0x2281('0x87')](path['join'](_0xca900c,_0x1ac514[_0x2281('0x82')][_0x2281('0x8c')]));}})[_0x2281('0x28')](handleError(_0x5cdcdc,null));};
\ No newline at end of file
index 774909a..208eb00 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f6b=['save','update','emit','hook','events','../../mysqldb','FaxMessage'];(function(_0x769407,_0x56665d){var _0x1a19c9=function(_0x27c8fc){while(--_0x27c8fc){_0x769407['push'](_0x769407['shift']());}};_0x1a19c9(++_0x56665d);}(_0x8f6b,0x146));var _0xb8f6=function(_0x40bffc,_0x3a45d7){_0x40bffc=_0x40bffc-0x0;var _0x3007e9=_0x8f6b[_0x40bffc];return _0x3007e9;};'use strict';var EventEmitter=require(_0xb8f6('0x0'));var FaxMessage=require(_0xb8f6('0x1'))['db'][_0xb8f6('0x2')];var FaxMessageEvents=new EventEmitter();FaxMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xb8f6('0x3'),'afterUpdate':_0xb8f6('0x4'),'afterDestroy':'remove'};function emitEvent(_0x36b78d){return function(_0x456df3,_0x49693f,_0x333054){FaxMessageEvents['emit'](_0x36b78d+':'+_0x456df3['id'],_0x456df3);FaxMessageEvents[_0xb8f6('0x5')](_0x36b78d,_0x456df3);_0x333054(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];FaxMessage[_0xb8f6('0x6')](e,emitEvent(event));}}module['exports']=FaxMessageEvents;
\ No newline at end of file
+var _0x3d4b=['events','../../mysqldb','setMaxListeners','save','update','emit','hasOwnProperty','hook','exports'];(function(_0x57c934,_0x275dde){var _0x49a8c4=function(_0xc30329){while(--_0xc30329){_0x57c934['push'](_0x57c934['shift']());}};_0x49a8c4(++_0x275dde);}(_0x3d4b,0xf3));var _0xb3d4=function(_0x11b841,_0x5faef4){_0x11b841=_0x11b841-0x0;var _0x41512a=_0x3d4b[_0x11b841];return _0x41512a;};'use strict';var EventEmitter=require(_0xb3d4('0x0'));var FaxMessage=require(_0xb3d4('0x1'))['db']['FaxMessage'];var FaxMessageEvents=new EventEmitter();FaxMessageEvents[_0xb3d4('0x2')](0x0);var events={'afterCreate':_0xb3d4('0x3'),'afterUpdate':_0xb3d4('0x4'),'afterDestroy':'remove'};function emitEvent(_0x6a7869){return function(_0x1f81be,_0x19a897,_0x4242a3){FaxMessageEvents[_0xb3d4('0x5')](_0x6a7869+':'+_0x1f81be['id'],_0x1f81be);FaxMessageEvents[_0xb3d4('0x5')](_0x6a7869,_0x1f81be);_0x4242a3(null);};}for(var e in events){if(events[_0xb3d4('0x6')](e)){var event=events[e];FaxMessage[_0xb3d4('0x7')](e,emitEvent(event));}}module[_0xb3d4('0x8')]=FaxMessageEvents;
\ No newline at end of file
index f29496f..b0b5103 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa258=['secret','UserId','FaxInteraction','findOne','FaxInteractionId','then','update','createdAt','catch','error','utf8mb4','util','../../config/logger','api','moment','request-promise','path','rimraf','exports','define','FaxMessage','fti_fax_messages','models','toLowerCase','direction'];(function(_0x51af00,_0x293964){var _0x25bad7=function(_0x8b078b){while(--_0x8b078b){_0x51af00['push'](_0x51af00['shift']());}};_0x25bad7(++_0x293964);}(_0xa258,0x88));var _0x8a25=function(_0x924aed,_0x3bca33){_0x924aed=_0x924aed-0x0;var _0x4f644e=_0xa258[_0x924aed];return _0x4f644e;};'use strict';var _=require('lodash');var util=require(_0x8a25('0x0'));var logger=require(_0x8a25('0x1'))(_0x8a25('0x2'));var moment=require(_0x8a25('0x3'));var BPromise=require('bluebird');var rp=require(_0x8a25('0x4'));var fs=require('fs');var path=require(_0x8a25('0x5'));var rimraf=require(_0x8a25('0x6'));var config=require('../../config/environment');var attributes=require('./faxMessage.attributes');module[_0x8a25('0x7')]=function(_0x3faf12,_0x30bf24){return _0x3faf12[_0x8a25('0x8')](_0x8a25('0x9'),attributes,{'tableName':'fax_messages','paranoid':![],'indexes':[{'name':_0x8a25('0xa'),'fields':['body'],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x168596,_0x9d8c8a,_0x350c1d){var _0x24182c=_0x3faf12[_0x8a25('0xb')];var _0x24959c=_0x168596['get']({'plain':!![]});if(_0x24959c['direction'][_0x8a25('0xc')]()==='in'||_0x24959c[_0x8a25('0xd')][_0x8a25('0xc')]()==='out'&&!_0x24959c[_0x8a25('0xe')]&&!_['isNil'](_0x24959c[_0x8a25('0xf')])){_0x24182c[_0x8a25('0x10')][_0x8a25('0x11')]({'where':{'id':_0x24959c[_0x8a25('0x12')]}})[_0x8a25('0x13')](function(_0x1f47b5){if(_0x1f47b5){_0x1f47b5[_0x8a25('0x14')]({'lastMsgAt':_0x24959c[_0x8a25('0x15')],'lastMsgDirection':_0x24959c[_0x8a25('0xd')]['toLowerCase']()});}})[_0x8a25('0x16')](function(_0x5c4bd2){console[_0x8a25('0x17')](_0x5c4bd2);});}_0x350c1d();}},'charset':_0x8a25('0x18'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xaa9d=['utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','../../config/environment','./faxMessage.attributes','exports','define','FaxMessage','fax_messages','FULLTEXT','models','direction','toLowerCase','out','secret','isNil','UserId','FaxInteraction','findOne','FaxInteractionId','then','update','createdAt','catch','error','utf8mb4'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xaa9d,0xda));var _0xdaa9=function(_0x26491d,_0x5a331e){_0x26491d=_0x26491d-0x0;var _0x1e91ed=_0xaa9d[_0x26491d];return _0x1e91ed;};'use strict';var _=require(_0xdaa9('0x0'));var util=require(_0xdaa9('0x1'));var logger=require(_0xdaa9('0x2'))(_0xdaa9('0x3'));var moment=require(_0xdaa9('0x4'));var BPromise=require(_0xdaa9('0x5'));var rp=require(_0xdaa9('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xdaa9('0x7'));var attributes=require(_0xdaa9('0x8'));module[_0xdaa9('0x9')]=function(_0x3709e2,_0x4673dd){return _0x3709e2[_0xdaa9('0xa')](_0xdaa9('0xb'),attributes,{'tableName':_0xdaa9('0xc'),'paranoid':![],'indexes':[{'name':'fti_fax_messages','fields':['body'],'type':_0xdaa9('0xd')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x51b4ef,_0x2ea98d,_0x437a6a){var _0x33453a=_0x3709e2[_0xdaa9('0xe')];var _0x276e79=_0x51b4ef['get']({'plain':!![]});if(_0x276e79[_0xdaa9('0xf')][_0xdaa9('0x10')]()==='in'||_0x276e79[_0xdaa9('0xf')][_0xdaa9('0x10')]()===_0xdaa9('0x11')&&!_0x276e79[_0xdaa9('0x12')]&&!_[_0xdaa9('0x13')](_0x276e79[_0xdaa9('0x14')])){_0x33453a[_0xdaa9('0x15')][_0xdaa9('0x16')]({'where':{'id':_0x276e79[_0xdaa9('0x17')]}})[_0xdaa9('0x18')](function(_0x1756a2){if(_0x1756a2){_0x1756a2[_0xdaa9('0x19')]({'lastMsgAt':_0x276e79[_0xdaa9('0x1a')],'lastMsgDirection':_0x276e79[_0xdaa9('0xf')]['toLowerCase']()});}})[_0xdaa9('0x1b')](function(_0x250839){console[_0xdaa9('0x1c')](_0x250839);});}_0x437a6a();}},'charset':_0xdaa9('0x1d'),'collate':_0xdaa9('0x1e')});};
\ No newline at end of file
index 600fddb..fd94679 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6aa7=['redis','defaults','socket.io-emitter','./faxMessage.socket','request','then','info','FaxMessage,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','CreateFaxMessage','FaxMessage','create','options','raw','catch','update','body','attributes','limit','UpdateFaxMessage','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','client'];(function(_0x3fac57,_0x40eebc){var _0x24c236=function(_0x2ea083){while(--_0x2ea083){_0x3fac57['push'](_0x3fac57['shift']());}};_0x24c236(++_0x40eebc);}(_0x6aa7,0x178));var _0x76aa=function(_0x4e1363,_0x222e58){_0x4e1363=_0x4e1363-0x0;var _0x5290f5=_0x6aa7[_0x4e1363];return _0x5290f5;};'use strict';var _=require(_0x76aa('0x0'));var util=require('util');var moment=require(_0x76aa('0x1'));var BPromise=require(_0x76aa('0x2'));var rs=require(_0x76aa('0x3'));var fs=require('fs');var Redis=require(_0x76aa('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x76aa('0x5'));var logger=require(_0x76aa('0x6'))(_0x76aa('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x76aa('0x8')]['http']({'port':0x232a});config[_0x76aa('0x9')]=_[_0x76aa('0xa')](config[_0x76aa('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0x76aa('0xb'))(new Redis(config[_0x76aa('0x9')]));require(_0x76aa('0xc'))['register'](socket);function respondWithRpcPromise(_0xcd99aa,_0x25856d,_0x41643a){return new BPromise(function(_0x16cb50,_0x37f1ab){return client[_0x76aa('0xd')](_0xcd99aa,_0x41643a)[_0x76aa('0xe')](function(_0x8dc35c){logger[_0x76aa('0xf')](_0x76aa('0x10'),_0x25856d,'request\x20sent');logger[_0x76aa('0x11')]('FaxMessage,\x20%s,\x20%s,\x20%s',_0x25856d,_0x76aa('0x12'),JSON[_0x76aa('0x13')](_0x8dc35c));if(_0x8dc35c[_0x76aa('0x14')]){if(_0x8dc35c[_0x76aa('0x14')][_0x76aa('0x15')]===0x1f4){logger['error']('FaxMessage,\x20%s,\x20%s',_0x25856d,_0x8dc35c[_0x76aa('0x14')]['message']);return _0x37f1ab(_0x8dc35c[_0x76aa('0x14')][_0x76aa('0x16')]);}logger['error'](_0x76aa('0x10'),_0x25856d,_0x8dc35c['error'][_0x76aa('0x16')]);return _0x16cb50(_0x8dc35c['error'][_0x76aa('0x16')]);}else{logger[_0x76aa('0xf')](_0x76aa('0x10'),_0x25856d,_0x76aa('0x12'));_0x16cb50(_0x8dc35c[_0x76aa('0x17')][_0x76aa('0x16')]);}})['catch'](function(_0x5d6202){logger[_0x76aa('0x14')](_0x76aa('0x10'),_0x25856d,_0x5d6202);_0x37f1ab(_0x5d6202);});});}exports[_0x76aa('0x18')]=function(_0x15b931){var _0x15109b=this;return new Promise(function(_0x191560,_0x19af92){return db[_0x76aa('0x19')][_0x76aa('0x1a')](_0x15b931['body'],{'raw':_0x15b931[_0x76aa('0x1b')]?_0x15b931[_0x76aa('0x1b')][_0x76aa('0x1c')]===undefined?!![]:![]:!![]})['then'](function(_0x41463a){logger[_0x76aa('0xf')](_0x76aa('0x18'),_0x15b931);logger[_0x76aa('0x11')](_0x76aa('0x18'),_0x15b931,JSON[_0x76aa('0x13')](_0x41463a));_0x191560(_0x41463a);})[_0x76aa('0x1d')](function(_0x3363b3){logger[_0x76aa('0x14')](_0x76aa('0x18'),_0x3363b3[_0x76aa('0x16')],_0x15b931);_0x19af92(_0x15109b[_0x76aa('0x14')](0x1f4,_0x3363b3[_0x76aa('0x16')]));});});};exports['UpdateFaxMessage']=function(_0xb5e8a9){var _0x1d6d15=this;return new Promise(function(_0x25c614,_0x2e7ab4){return db[_0x76aa('0x19')][_0x76aa('0x1e')](_0xb5e8a9[_0x76aa('0x1f')],{'raw':_0xb5e8a9[_0x76aa('0x1b')]?_0xb5e8a9[_0x76aa('0x1b')][_0x76aa('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xb5e8a9['options']?_0xb5e8a9[_0x76aa('0x1b')]['where']||null:null,'attributes':_0xb5e8a9[_0x76aa('0x1b')]?_0xb5e8a9[_0x76aa('0x1b')][_0x76aa('0x20')]||null:null,'limit':_0xb5e8a9[_0x76aa('0x1b')]?_0xb5e8a9[_0x76aa('0x1b')][_0x76aa('0x21')]||null:null})[_0x76aa('0xe')](function(_0x3827ec){logger[_0x76aa('0xf')](_0x76aa('0x22'),_0xb5e8a9);logger['debug'](_0x76aa('0x22'),_0xb5e8a9,JSON[_0x76aa('0x13')](_0x3827ec));_0x25c614(_0x3827ec);})[_0x76aa('0x1d')](function(_0x928ccf){logger[_0x76aa('0x14')](_0x76aa('0x22'),_0x928ccf[_0x76aa('0x16')],_0xb5e8a9);_0x2e7ab4(_0x1d6d15['error'](0x1f4,_0x928ccf[_0x76aa('0x16')]));});});};
\ No newline at end of file
+var _0x5636=['error','code','message','result','CreateFaxMessage','FaxMessage','body','options','then','UpdateFaxMessage','update','where','catch','lodash','util','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./faxMessage.socket','register','info','FaxMessage,\x20%s,\x20%s','request\x20sent','debug','FaxMessage,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x5bc75a,_0x38ce5c){var _0x51abb3=function(_0x2622c0){while(--_0x2622c0){_0x5bc75a['push'](_0x5bc75a['shift']());}};_0x51abb3(++_0x38ce5c);}(_0x5636,0x102));var _0x6563=function(_0x342570,_0x42a5ab){_0x342570=_0x342570-0x0;var _0x1deaf7=_0x5636[_0x342570];return _0x1deaf7;};'use strict';var _=require(_0x6563('0x0'));var util=require(_0x6563('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6563('0x2'));var db=require(_0x6563('0x3'))['db'];var utils=require(_0x6563('0x4'));var logger=require('../../config/logger')(_0x6563('0x5'));var config=require(_0x6563('0x6'));var jayson=require(_0x6563('0x7'));var client=jayson[_0x6563('0x8')][_0x6563('0x9')]({'port':0x232a});config[_0x6563('0xa')]=_[_0x6563('0xb')](config[_0x6563('0xa')],{'host':_0x6563('0xc'),'port':0x18eb});var socket=require(_0x6563('0xd'))(new Redis(config[_0x6563('0xa')]));require(_0x6563('0xe'))[_0x6563('0xf')](socket);function respondWithRpcPromise(_0x516d1a,_0x51fdc2,_0x2946f3){return new BPromise(function(_0x129fa3,_0x490a56){return client['request'](_0x516d1a,_0x2946f3)['then'](function(_0x1ef002){logger[_0x6563('0x10')](_0x6563('0x11'),_0x51fdc2,_0x6563('0x12'));logger[_0x6563('0x13')](_0x6563('0x14'),_0x51fdc2,_0x6563('0x12'),JSON[_0x6563('0x15')](_0x1ef002));if(_0x1ef002[_0x6563('0x16')]){if(_0x1ef002['error'][_0x6563('0x17')]===0x1f4){logger['error'](_0x6563('0x11'),_0x51fdc2,_0x1ef002[_0x6563('0x16')][_0x6563('0x18')]);return _0x490a56(_0x1ef002[_0x6563('0x16')]['message']);}logger[_0x6563('0x16')](_0x6563('0x11'),_0x51fdc2,_0x1ef002[_0x6563('0x16')][_0x6563('0x18')]);return _0x129fa3(_0x1ef002['error'][_0x6563('0x18')]);}else{logger['info']('FaxMessage,\x20%s,\x20%s',_0x51fdc2,'request\x20sent');_0x129fa3(_0x1ef002[_0x6563('0x19')]['message']);}})['catch'](function(_0x27651b){logger[_0x6563('0x16')](_0x6563('0x11'),_0x51fdc2,_0x27651b);_0x490a56(_0x27651b);});});}exports[_0x6563('0x1a')]=function(_0xf8b544){var _0x10811d=this;return new Promise(function(_0x37ba3,_0x93a45){return db[_0x6563('0x1b')]['create'](_0xf8b544[_0x6563('0x1c')],{'raw':_0xf8b544[_0x6563('0x1d')]?_0xf8b544[_0x6563('0x1d')]['raw']===undefined?!![]:![]:!![]})[_0x6563('0x1e')](function(_0x5c37bb){logger[_0x6563('0x10')](_0x6563('0x1a'),_0xf8b544);logger['debug']('CreateFaxMessage',_0xf8b544,JSON[_0x6563('0x15')](_0x5c37bb));_0x37ba3(_0x5c37bb);})['catch'](function(_0x1097d0){logger[_0x6563('0x16')](_0x6563('0x1a'),_0x1097d0['message'],_0xf8b544);_0x93a45(_0x10811d[_0x6563('0x16')](0x1f4,_0x1097d0['message']));});});};exports[_0x6563('0x1f')]=function(_0x1590e6){var _0x5e5aeb=this;return new Promise(function(_0x365b16,_0x28252d){return db['FaxMessage'][_0x6563('0x20')](_0x1590e6['body'],{'raw':_0x1590e6[_0x6563('0x1d')]?_0x1590e6['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1590e6[_0x6563('0x1d')]?_0x1590e6[_0x6563('0x1d')][_0x6563('0x21')]||null:null,'attributes':_0x1590e6[_0x6563('0x1d')]?_0x1590e6[_0x6563('0x1d')]['attributes']||null:null,'limit':_0x1590e6[_0x6563('0x1d')]?_0x1590e6['options']['limit']||null:null})[_0x6563('0x1e')](function(_0x35af37){logger[_0x6563('0x10')](_0x6563('0x1f'),_0x1590e6);logger[_0x6563('0x13')](_0x6563('0x1f'),_0x1590e6,JSON[_0x6563('0x15')](_0x35af37));_0x365b16(_0x35af37);})[_0x6563('0x22')](function(_0x101b24){logger[_0x6563('0x16')]('UpdateFaxMessage',_0x101b24[_0x6563('0x18')],_0x1590e6);_0x28252d(_0x5e5aeb[_0x6563('0x16')](0x1f4,_0x101b24[_0x6563('0x18')]));});});};
\ No newline at end of file
index 8ddc755..7aa232f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x912e=['./faxMessage.events','save','remove','update','emit','register','faxMessage:'];(function(_0x49ddfa,_0x2c2461){var _0x26be0b=function(_0x5459a4){while(--_0x5459a4){_0x49ddfa['push'](_0x49ddfa['shift']());}};_0x26be0b(++_0x2c2461);}(_0x912e,0xf5));var _0xe912=function(_0x1e7d80,_0x400a77){_0x1e7d80=_0x1e7d80-0x0;var _0x104384=_0x912e[_0x1e7d80];return _0x104384;};'use strict';var FaxMessageEvents=require(_0xe912('0x0'));var events=[_0xe912('0x1'),_0xe912('0x2'),_0xe912('0x3')];function createListener(_0x2af542,_0x4e9d29){return function(_0x1ff319){_0x4e9d29[_0xe912('0x4')](_0x2af542,_0x1ff319);};}function removeListener(_0x28f5db,_0x48d181){return function(){FaxMessageEvents['removeListener'](_0x28f5db,_0x48d181);};}exports[_0xe912('0x5')]=function(_0x1bbb2b){for(var _0x15df3c=0x0,_0x408d4c=events['length'];_0x15df3c<_0x408d4c;_0x15df3c++){var _0x1b1631=events[_0x15df3c];var _0x220a0a=createListener(_0xe912('0x6')+_0x1b1631,_0x1bbb2b);FaxMessageEvents['on'](_0x1b1631,_0x220a0a);}};
\ No newline at end of file
+var _0xcbbb=['save','emit','removeListener','register','faxMessage:','./faxMessage.events'];(function(_0xea1570,_0x2f7856){var _0x579e74=function(_0x236bcc){while(--_0x236bcc){_0xea1570['push'](_0xea1570['shift']());}};_0x579e74(++_0x2f7856);}(_0xcbbb,0x7d));var _0xbcbb=function(_0x4dc7b9,_0x319d5a){_0x4dc7b9=_0x4dc7b9-0x0;var _0x3ab114=_0xcbbb[_0x4dc7b9];return _0x3ab114;};'use strict';var FaxMessageEvents=require(_0xbcbb('0x0'));var events=[_0xbcbb('0x1'),'remove','update'];function createListener(_0x98077a,_0x436441){return function(_0x3791a3){_0x436441[_0xbcbb('0x2')](_0x98077a,_0x3791a3);};}function removeListener(_0x52805c,_0x341028){return function(){FaxMessageEvents[_0xbcbb('0x3')](_0x52805c,_0x341028);};}exports[_0xbcbb('0x4')]=function(_0x1acdaa){for(var _0x519bb7=0x0,_0x308763=events['length'];_0x519bb7<_0x308763;_0x519bb7++){var _0x1b53a8=events[_0x519bb7];var _0xc54e72=createListener(_0xbcbb('0x5')+_0x1b53a8,_0x1acdaa);FaxMessageEvents['on'](_0x1b53a8,_0xc54e72);}};
\ No newline at end of file
index 85a7bab..e23d24b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcea2=['create','put','update','/:id/accept','accept','reject','destroy','exports','multer','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./faxMessage.controller','isAuthenticated','get','/describe','describe','/:id','show','/:id/download','download','post','tracked'];(function(_0x4371a8,_0x3ac39){var _0x110901=function(_0x1b9497){while(--_0x1b9497){_0x4371a8['push'](_0x4371a8['shift']());}};_0x110901(++_0x3ac39);}(_0xcea2,0x15a));var _0x2cea=function(_0x4c12ec,_0x2e9103){_0x4c12ec=_0x4c12ec-0x0;var _0x3ae42c=_0xcea2[_0x4c12ec];return _0x3ae42c;};'use strict';var multer=require(_0x2cea('0x0'));var util=require('util');var path=require(_0x2cea('0x1'));var timeout=require('connect-timeout');var express=require(_0x2cea('0x2'));var router=express[_0x2cea('0x3')]();var fs_extra=require(_0x2cea('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x2cea('0x5'));var config=require(_0x2cea('0x6'));var controller=require(_0x2cea('0x7'));router['get']('/',auth[_0x2cea('0x8')](),controller['index']);router[_0x2cea('0x9')](_0x2cea('0xa'),auth[_0x2cea('0x8')](),controller[_0x2cea('0xb')]);router[_0x2cea('0x9')](_0x2cea('0xc'),auth['isAuthenticated'](),controller[_0x2cea('0xd')]);router[_0x2cea('0x9')](_0x2cea('0xe'),auth[_0x2cea('0x8')](),controller[_0x2cea('0xf')]);router[_0x2cea('0x10')]('/',auth[_0x2cea('0x8')](),interaction[_0x2cea('0x11')]('fax','faxmessage:create'),controller[_0x2cea('0x12')]);router[_0x2cea('0x13')]('/:id',auth['isAuthenticated'](),controller[_0x2cea('0x14')]);router['put'](_0x2cea('0x15'),auth[_0x2cea('0x8')](),controller[_0x2cea('0x16')]);router['put']('/:id/reject',auth['isAuthenticated'](),controller[_0x2cea('0x17')]);router['delete'](_0x2cea('0xc'),auth[_0x2cea('0x8')](),controller[_0x2cea('0x18')]);module[_0x2cea('0x19')]=router;
\ No newline at end of file
+var _0x97c1=['isAuthenticated','/:id','show','/:id/download','post','tracked','fax','faxmessage:create','put','update','/:id/accept','accept','/:id/reject','destroy','exports','multer','util','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxMessage.controller','index','get','/describe'];(function(_0x22a327,_0x4ed6d4){var _0x349415=function(_0x3a7bf9){while(--_0x3a7bf9){_0x22a327['push'](_0x22a327['shift']());}};_0x349415(++_0x4ed6d4);}(_0x97c1,0xdf));var _0x197c=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x97c1[_0x122ef9];return _0x42fba0;};'use strict';var multer=require(_0x197c('0x0'));var util=require(_0x197c('0x1'));var path=require('path');var timeout=require(_0x197c('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x197c('0x3'));var auth=require(_0x197c('0x4'));var interaction=require(_0x197c('0x5'));var config=require(_0x197c('0x6'));var controller=require(_0x197c('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0x197c('0x8')]);router[_0x197c('0x9')](_0x197c('0xa'),auth[_0x197c('0xb')](),controller['describe']);router['get'](_0x197c('0xc'),auth['isAuthenticated'](),controller[_0x197c('0xd')]);router[_0x197c('0x9')](_0x197c('0xe'),auth[_0x197c('0xb')](),controller['download']);router[_0x197c('0xf')]('/',auth[_0x197c('0xb')](),interaction[_0x197c('0x10')](_0x197c('0x11'),_0x197c('0x12')),controller['create']);router[_0x197c('0x13')](_0x197c('0xc'),auth[_0x197c('0xb')](),controller[_0x197c('0x14')]);router['put'](_0x197c('0x15'),auth[_0x197c('0xb')](),controller[_0x197c('0x16')]);router[_0x197c('0x13')](_0x197c('0x17'),auth[_0x197c('0xb')](),controller['reject']);router['delete'](_0x197c('0xc'),auth[_0x197c('0xb')](),controller[_0x197c('0x18')]);module[_0x197c('0x19')]=router;
\ No newline at end of file
index 63d3082..b7421c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b3b=['STRING','ENUM','rrmemory','beepall','roundrobin','name'];(function(_0x1d0847,_0x151b3e){var _0x444f72=function(_0xe3406c){while(--_0xe3406c){_0x1d0847['push'](_0x1d0847['shift']());}};_0x444f72(++_0x151b3e);}(_0x2b3b,0x83));var _0xb2b3=function(_0x397cfb,_0xb8f317){_0x397cfb=_0x397cfb-0x0;var _0x15fed9=_0x2b3b[_0x397cfb];return _0x15fed9;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0xb2b3('0x0'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xb2b3('0x1')]},'timeout':{'type':Sequelize['INTEGER'],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xb2b3('0x2')](_0xb2b3('0x3'),_0xb2b3('0x4'),_0xb2b3('0x5')),'allowNull':![]},'lastAgent':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x7353=['name','INTEGER','rrmemory','exports','STRING'];(function(_0x21a56e,_0x500473){var _0x475dc0=function(_0x3aa636){while(--_0x3aa636){_0x21a56e['push'](_0x21a56e['shift']());}};_0x475dc0(++_0x500473);}(_0x7353,0x1f2));var _0x3735=function(_0x4536ca,_0x3da9a2){_0x4536ca=_0x4536ca-0x0;var _0x337992=_0x7353[_0x4536ca];return _0x337992;};'use strict';var Sequelize=require('sequelize');module[_0x3735('0x0')]={'name':{'type':Sequelize[_0x3735('0x1')],'unique':_0x3735('0x2'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x3735('0x1')]},'timeout':{'type':Sequelize[_0x3735('0x3')],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0x3735('0x4'),'beepall','roundrobin'),'allowNull':![]},'lastAgent':{'type':Sequelize[_0x3735('0x3')],'defaultValue':0x0}};
\ No newline at end of file
index 3092d9a..67e21e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2789=['desk.js','to-csv','querystring','papaparse','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','./faxQueue.socket','register','sendStatus','status','json','count','offset','limit','set','apply','reject','save','update','destroy','then','get','FaxQueues','UserProfileResource','end','error','stack','name','send','map','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','options','FaxQueue','includeAll','include','findAll','rows','show','params','find','catch','create','body','user','role','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','rawAttributes','pick','FaxQueueId','UserFaxQueue','findAndCountAll','faxPause','updatedAt','createdAt','SIP','getTeams','findOne','Team','addTeams','ids','User','Agents','online','voicePause','flatMap','sequelize','transaction','forEach','emit','userFaxQueue:save','select','field','tq.TeamId','from','join','user_has_teams','FaxQueueId\x20=\x20?','push','toString','QueryTypes','SELECT','every','TeamId','includes','union','value','removeTeams','isEmpty','userFaxQueue:remove','addAgents','spread','removeAgents','isArray','getAgents','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','sox','fs-extra','squel','crypto','jsforce'];(function(_0x5b26be,_0x24893b){var _0x4c02c9=function(_0x17dac2){while(--_0x17dac2){_0x5b26be['push'](_0x5b26be['shift']());}};_0x4c02c9(++_0x24893b);}(_0x2789,0x107));var _0x9278=function(_0x252819,_0x451cfb){_0x252819=_0x252819-0x0;var _0x439cd0=_0x2789[_0x252819];return _0x439cd0;};'use strict';var emlformat=require(_0x9278('0x0'));var rimraf=require(_0x9278('0x1'));var zipdir=require(_0x9278('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x9278('0x3'));var moment=require(_0x9278('0x4'));var BPromise=require(_0x9278('0x5'));var Mustache=require(_0x9278('0x6'));var util=require('util');var path=require(_0x9278('0x7'));var sox=require(_0x9278('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x9278('0x9'));var _=require('lodash');var squel=require(_0x9278('0xa'));var crypto=require(_0x9278('0xb'));var jsforce=require(_0x9278('0xc'));var deskjs=require(_0x9278('0xd'));var toCsv=require(_0x9278('0xe'));var querystring=require(_0x9278('0xf'));var Papa=require(_0x9278('0x10'));var Redis=require(_0x9278('0x11'));var authService=require(_0x9278('0x12'));var qs=require(_0x9278('0x13'));var as=require(_0x9278('0x14'));var hardwareService=require(_0x9278('0x15'));var logger=require('../../config/logger')(_0x9278('0x16'));var utils=require('../../config/utils');var config=require(_0x9278('0x17'));var licenseUtil=require(_0x9278('0x18'));var db=require(_0x9278('0x19'))['db'];config['redis']=_[_0x9278('0x1a')](config[_0x9278('0x1b')],{'host':_0x9278('0x1c'),'port':0x18eb});var socket=require(_0x9278('0x1d'))(new Redis(config[_0x9278('0x1b')]));require(_0x9278('0x1e'))[_0x9278('0x1f')](socket);function respondWithStatusCode(_0x26a4f4,_0x270c7a){_0x270c7a=_0x270c7a||0xcc;return function(_0x522358){if(_0x522358){return _0x26a4f4[_0x9278('0x20')](_0x270c7a);}return _0x26a4f4[_0x9278('0x21')](_0x270c7a)['end']();};}function respondWithResult(_0xf81b7c,_0x3af74f){_0x3af74f=_0x3af74f||0xc8;return function(_0x5925ca){if(_0x5925ca){return _0xf81b7c[_0x9278('0x21')](_0x3af74f)[_0x9278('0x22')](_0x5925ca);}};}function respondWithFilteredResult(_0x28e194,_0x1b30ec){return function(_0x1e47ae){if(_0x1e47ae){var _0x1f49c2=typeof _0x1b30ec['offset']==='undefined'&&typeof _0x1b30ec['limit']==='undefined';var _0x58e49f=_0x1e47ae[_0x9278('0x23')];var _0x30a2ce=_0x1f49c2?0x0:_0x1b30ec[_0x9278('0x24')];var _0x132f51=_0x1f49c2?_0x1e47ae[_0x9278('0x23')]:_0x1b30ec['offset']+_0x1b30ec[_0x9278('0x25')];var _0x1c44d9;if(_0x132f51>=_0x58e49f){_0x132f51=_0x58e49f;_0x1c44d9=0xc8;}else{_0x1c44d9=0xce;}_0x28e194[_0x9278('0x21')](_0x1c44d9);return _0x28e194[_0x9278('0x26')]('Content-Range',_0x30a2ce+'-'+_0x132f51+'/'+_0x58e49f)['json'](_0x1e47ae);}return null;};}function patchUpdates(_0x4001d4){return function(_0x4dccea){try{jsonpatch[_0x9278('0x27')](_0x4dccea,_0x4001d4,!![]);}catch(_0x29a610){return BPromise[_0x9278('0x28')](_0x29a610);}return _0x4dccea[_0x9278('0x29')]();};}function saveUpdates(_0x5337a1,_0x2a5bab){return function(_0x3c6fbf){if(_0x3c6fbf){return _0x3c6fbf[_0x9278('0x2a')](_0x5337a1)['then'](function(_0x3376c3){return _0x3376c3;});}return null;};}function removeEntity(_0x51d9b1,_0x22a015){return function(_0x48cfb2){if(_0x48cfb2){return _0x48cfb2[_0x9278('0x2b')]()[_0x9278('0x2c')](function(){var _0xff93e9=_0x48cfb2[_0x9278('0x2d')]({'plain':!![]});var _0x15d71b=_0x9278('0x2e');return db[_0x9278('0x2f')][_0x9278('0x2b')]({'where':{'type':_0x15d71b,'resourceId':_0xff93e9['id']}})[_0x9278('0x2c')](function(){return _0x48cfb2;});})['then'](function(){_0x51d9b1[_0x9278('0x21')](0xcc)[_0x9278('0x30')]();});}};}function handleEntityNotFound(_0x4ef90f,_0x141449){return function(_0x4b6e5e){if(!_0x4b6e5e){_0x4ef90f[_0x9278('0x20')](0x194);}return _0x4b6e5e;};}function handleError(_0x2a888e,_0x326142){_0x326142=_0x326142||0x1f4;return function(_0x3e723e){logger[_0x9278('0x31')](_0x3e723e[_0x9278('0x32')]);if(_0x3e723e[_0x9278('0x33')]){delete _0x3e723e[_0x9278('0x33')];}_0x2a888e[_0x9278('0x21')](_0x326142)[_0x9278('0x34')](_0x3e723e);};}exports['index']=function(_0x6bdf09,_0x3b58f9){var _0xafca70={},_0x1471a1={},_0x155ef7={'count':0x0,'rows':[]};var _0x2f335a=_[_0x9278('0x35')](db['FaxQueue']['rawAttributes'],function(_0x498ef6){return{'name':_0x498ef6['fieldName'],'type':_0x498ef6[_0x9278('0x36')][_0x9278('0x37')]};});_0x1471a1[_0x9278('0x38')]=_[_0x9278('0x35')](_0x2f335a,'name');_0x1471a1[_0x9278('0x39')]=_[_0x9278('0x3a')](_0x6bdf09[_0x9278('0x39')]);_0x1471a1[_0x9278('0x3b')]=_[_0x9278('0x3c')](_0x1471a1[_0x9278('0x38')],_0x1471a1[_0x9278('0x39')]);_0xafca70['attributes']=_[_0x9278('0x3c')](_0x1471a1[_0x9278('0x38')],qs[_0x9278('0x3d')](_0x6bdf09[_0x9278('0x39')][_0x9278('0x3d')]));_0xafca70[_0x9278('0x3e')]=_0xafca70[_0x9278('0x3e')][_0x9278('0x3f')]?_0xafca70['attributes']:_0x1471a1['model'];if(!_0x6bdf09[_0x9278('0x39')][_0x9278('0x40')](_0x9278('0x41'))){_0xafca70[_0x9278('0x25')]=qs[_0x9278('0x25')](_0x6bdf09[_0x9278('0x39')][_0x9278('0x25')]);_0xafca70[_0x9278('0x24')]=qs[_0x9278('0x24')](_0x6bdf09[_0x9278('0x39')][_0x9278('0x24')]);}_0xafca70[_0x9278('0x42')]=qs[_0x9278('0x43')](_0x6bdf09[_0x9278('0x39')][_0x9278('0x43')]);_0xafca70[_0x9278('0x44')]=qs[_0x9278('0x3b')](_['pick'](_0x6bdf09[_0x9278('0x39')],_0x1471a1[_0x9278('0x3b')]),_0x2f335a);if(_0x6bdf09[_0x9278('0x39')][_0x9278('0x45')]){_0xafca70[_0x9278('0x44')]=_[_0x9278('0x46')](_0xafca70[_0x9278('0x44')],{'$or':_['map'](_0x2f335a,function(_0x320e0f){if(_0x320e0f['type']!=='VIRTUAL'){var _0x4551fe={};_0x4551fe[_0x320e0f[_0x9278('0x33')]]={'$like':'%'+_0x6bdf09[_0x9278('0x39')][_0x9278('0x45')]+'%'};return _0x4551fe;}})});}_0xafca70=_[_0x9278('0x46')]({},_0xafca70,_0x6bdf09[_0x9278('0x47')]);var _0x1cd053={'where':_0xafca70['where']};return db[_0x9278('0x48')][_0x9278('0x23')](_0x1cd053)[_0x9278('0x2c')](function(_0x522c56){_0x155ef7['count']=_0x522c56;if(_0x6bdf09[_0x9278('0x39')][_0x9278('0x49')]){_0xafca70[_0x9278('0x4a')]=[{'all':!![]}];}return db[_0x9278('0x48')][_0x9278('0x4b')](_0xafca70);})[_0x9278('0x2c')](function(_0x56f9cf){_0x155ef7[_0x9278('0x4c')]=_0x56f9cf;return _0x155ef7;})[_0x9278('0x2c')](respondWithFilteredResult(_0x3b58f9,_0xafca70))['catch'](handleError(_0x3b58f9,null));};exports[_0x9278('0x4d')]=function(_0x3de83f,_0x26c2b1){var _0x3bc98a={'raw':!![],'where':{'id':_0x3de83f[_0x9278('0x4e')]['id']}},_0x3d8e82={};_0x3d8e82[_0x9278('0x38')]=_[_0x9278('0x3a')](db[_0x9278('0x48')]['rawAttributes']);_0x3d8e82[_0x9278('0x39')]=_[_0x9278('0x3a')](_0x3de83f[_0x9278('0x39')]);_0x3d8e82[_0x9278('0x3b')]=_[_0x9278('0x3c')](_0x3d8e82['model'],_0x3d8e82[_0x9278('0x39')]);_0x3bc98a[_0x9278('0x3e')]=_[_0x9278('0x3c')](_0x3d8e82['model'],qs['fields'](_0x3de83f['query'][_0x9278('0x3d')]));_0x3bc98a[_0x9278('0x3e')]=_0x3bc98a[_0x9278('0x3e')][_0x9278('0x3f')]?_0x3bc98a[_0x9278('0x3e')]:_0x3d8e82['model'];if(_0x3de83f['query'][_0x9278('0x49')]){_0x3bc98a['include']=[{'all':!![]}];}_0x3bc98a=_['merge']({},_0x3bc98a,_0x3de83f[_0x9278('0x47')]);return db[_0x9278('0x48')][_0x9278('0x4f')](_0x3bc98a)[_0x9278('0x2c')](handleEntityNotFound(_0x26c2b1,null))[_0x9278('0x2c')](respondWithResult(_0x26c2b1,null))[_0x9278('0x50')](handleError(_0x26c2b1,null));};exports[_0x9278('0x51')]=function(_0x3d0dcc,_0x43b40b){return db[_0x9278('0x48')]['create'](_0x3d0dcc[_0x9278('0x52')],{})[_0x9278('0x2c')](function(_0x2bf25d){var _0x4c9eeb=_0x3d0dcc[_0x9278('0x53')][_0x9278('0x2d')]({'plain':!![]});if(!_0x4c9eeb)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4c9eeb[_0x9278('0x54')]===_0x9278('0x53')){var _0x57c41c=_0x2bf25d[_0x9278('0x2d')]({'plain':!![]});var _0x477ee5=_0x9278('0x2e');return db['UserProfileSection'][_0x9278('0x4f')]({'where':{'name':_0x477ee5,'userProfileId':_0x4c9eeb[_0x9278('0x55')]},'raw':!![]})[_0x9278('0x2c')](function(_0x47c607){if(_0x47c607&&_0x47c607[_0x9278('0x56')]===0x0){return db['UserProfileResource'][_0x9278('0x51')]({'name':_0x57c41c['name'],'resourceId':_0x57c41c['id'],'type':_0x47c607['name'],'sectionId':_0x47c607['id']},{})[_0x9278('0x2c')](function(){return _0x2bf25d;});}else{return _0x2bf25d;}})[_0x9278('0x50')](function(_0x44ea91){logger[_0x9278('0x31')](_0x9278('0x57'),_0x44ea91);throw _0x44ea91;});}return _0x2bf25d;})[_0x9278('0x2c')](respondWithResult(_0x43b40b,0xc9))[_0x9278('0x50')](handleError(_0x43b40b,null));};exports[_0x9278('0x2a')]=function(_0x15992,_0x137225){if(_0x15992['body']['id']){delete _0x15992[_0x9278('0x52')]['id'];}return db[_0x9278('0x48')][_0x9278('0x4f')]({'where':{'id':_0x15992[_0x9278('0x4e')]['id']}})[_0x9278('0x2c')](handleEntityNotFound(_0x137225,null))['then'](saveUpdates(_0x15992[_0x9278('0x52')],null))['then'](respondWithResult(_0x137225,null))[_0x9278('0x50')](handleError(_0x137225,null));};exports[_0x9278('0x2b')]=function(_0x2de9b0,_0x472296){return db[_0x9278('0x48')][_0x9278('0x4f')]({'where':{'id':_0x2de9b0[_0x9278('0x4e')]['id']}})[_0x9278('0x2c')](handleEntityNotFound(_0x472296,null))[_0x9278('0x2c')](removeEntity(_0x472296,null))['catch'](handleError(_0x472296,null));};exports[_0x9278('0x58')]=function(_0x13f4b4,_0x2d6502){return db[_0x9278('0x48')][_0x9278('0x58')]()['then'](respondWithResult(_0x2d6502,null))[_0x9278('0x50')](handleError(_0x2d6502,null));};exports[_0x9278('0x59')]=function(_0x2cc671,_0x4863b8,_0x73db09){var _0x139756={'raw':!![],'where':{}},_0x2800cb={},_0xd0c8cd;return db['FaxQueue']['findOne']({'where':{'id':_0x2cc671['params']['id']}})[_0x9278('0x2c')](handleEntityNotFound(_0x4863b8,null))[_0x9278('0x2c')](function(_0xfa87e3){if(_0xfa87e3){_0xd0c8cd=_0xfa87e3[_0x9278('0x2d')]({'plain':!![]});_0x2800cb['model']=_['keys'](db['UserFaxQueue'][_0x9278('0x5a')]);_0x2800cb[_0x9278('0x39')]=_[_0x9278('0x3a')](_0x2cc671[_0x9278('0x39')]);_0x2800cb[_0x9278('0x3b')]=_['intersection'](_0x2800cb[_0x9278('0x38')],_0x2800cb[_0x9278('0x39')]);_0x139756['attributes']=_[_0x9278('0x3c')](_0x2800cb[_0x9278('0x38')],qs[_0x9278('0x3d')](_0x2cc671[_0x9278('0x39')]['fields']));_0x139756[_0x9278('0x3e')]=_0x139756[_0x9278('0x3e')][_0x9278('0x3f')]?_0x139756[_0x9278('0x3e')]:_0x2800cb['model'];if(!_0x2cc671[_0x9278('0x39')]['hasOwnProperty']('nolimit')){_0x139756[_0x9278('0x25')]=qs['limit'](_0x2cc671['query']['limit']);_0x139756['offset']=qs[_0x9278('0x24')](_0x2cc671[_0x9278('0x39')][_0x9278('0x24')]);}_0x139756[_0x9278('0x42')]=qs[_0x9278('0x43')](_0x2cc671[_0x9278('0x39')][_0x9278('0x43')]);_0x139756[_0x9278('0x44')]=qs[_0x9278('0x3b')](_[_0x9278('0x5b')](_0x2cc671[_0x9278('0x39')],_0x2800cb[_0x9278('0x3b')]));_0x139756[_0x9278('0x44')][_0x9278('0x5c')]=_0xfa87e3['id'];if(_0x2cc671['query']['filter']){_0x139756[_0x9278('0x44')]=_[_0x9278('0x46')](_0x139756[_0x9278('0x44')],{'$or':_[_0x9278('0x35')](_0x139756[_0x9278('0x3e')],function(_0x1aec55){var _0x49ef7a={};_0x49ef7a[_0x1aec55]={'$like':'%'+_0x2cc671['query'][_0x9278('0x45')]+'%'};return _0x49ef7a;})});}_0x139756=_[_0x9278('0x46')]({},_0x139756,_0x2cc671['options']);return db[_0x9278('0x5d')][_0x9278('0x4b')](_0x139756);}})['then'](function(_0x59b1c6){if(_0x59b1c6){return db['User'][_0x9278('0x5e')]({'where':{'id':_[_0x9278('0x35')](_0x59b1c6,'UserId'),'role':'agent'},'attributes':['id',_0x9278('0x33'),_0x9278('0x5f'),_0x9278('0x60'),_0x9278('0x61')]});}})['then'](function(_0xe8d82c){if(_0xe8d82c){return{'count':_0xe8d82c[_0x9278('0x23')],'rows':_[_0x9278('0x35')](_0xe8d82c['rows'],function(_0x3563ca){return{'membername':_0x3563ca[_0x9278('0x33')],'UserId':_0x3563ca['id'],'queue_name':_0xd0c8cd[_0x9278('0x33')],'FaxQueueId':_0xd0c8cd['id'],'interface':util['format']('%s/%s',_0x9278('0x62'),_0x3563ca['name']),'penalty':0x0,'paused':_0x3563ca[_0x9278('0x5f')],'createdAt':_0x3563ca['createdAt'],'updatedAt':_0x3563ca[_0x9278('0x60')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x4863b8,_0x139756))[_0x9278('0x50')](handleError(_0x4863b8,null));};exports[_0x9278('0x63')]=function(_0x2c33a1,_0x5ccea7,_0x4a6eaf){var _0x54514b={};var _0x2fc662={};var _0xd2c700;var _0x420073;return db[_0x9278('0x48')][_0x9278('0x64')]({'where':{'id':_0x2c33a1[_0x9278('0x4e')]['id']}})[_0x9278('0x2c')](handleEntityNotFound(_0x5ccea7,null))[_0x9278('0x2c')](function(_0x1e9dc3){if(_0x1e9dc3){_0xd2c700=_0x1e9dc3;_0x2fc662[_0x9278('0x38')]=_[_0x9278('0x3a')](db[_0x9278('0x65')][_0x9278('0x5a')]);_0x2fc662[_0x9278('0x39')]=_['keys'](_0x2c33a1[_0x9278('0x39')]);_0x2fc662[_0x9278('0x3b')]=_[_0x9278('0x3c')](_0x2fc662[_0x9278('0x38')],_0x2fc662[_0x9278('0x39')]);_0x54514b[_0x9278('0x3e')]=_['intersection'](_0x2fc662[_0x9278('0x38')],qs[_0x9278('0x3d')](_0x2c33a1[_0x9278('0x39')]['fields']));_0x54514b[_0x9278('0x3e')]=_0x54514b[_0x9278('0x3e')][_0x9278('0x3f')]?_0x54514b['attributes']:_0x2fc662[_0x9278('0x38')];_0x54514b[_0x9278('0x42')]=qs[_0x9278('0x43')](_0x2c33a1[_0x9278('0x39')][_0x9278('0x43')]);_0x54514b[_0x9278('0x44')]=qs[_0x9278('0x3b')](_[_0x9278('0x5b')](_0x2c33a1[_0x9278('0x39')],_0x2fc662[_0x9278('0x3b')]));if(_0x2c33a1[_0x9278('0x39')]['filter']){_0x54514b[_0x9278('0x44')]=_['merge'](_0x54514b[_0x9278('0x44')],{'$or':_[_0x9278('0x35')](_0x54514b[_0x9278('0x3e')],function(_0x3bc1ff){var _0x29e30d={};_0x29e30d[_0x3bc1ff]={'$like':'%'+_0x2c33a1['query'][_0x9278('0x45')]+'%'};return _0x29e30d;})});}_0x54514b=_[_0x9278('0x46')]({},_0x54514b,_0x2c33a1[_0x9278('0x47')]);return _0xd2c700[_0x9278('0x63')](_0x54514b);}})['then'](function(_0x20e5ba){if(_0x20e5ba){_0x420073=_0x20e5ba['length'];if(!_0x2c33a1['query'][_0x9278('0x40')](_0x9278('0x41'))){_0x54514b[_0x9278('0x25')]=qs[_0x9278('0x25')](_0x2c33a1[_0x9278('0x39')][_0x9278('0x25')]);_0x54514b[_0x9278('0x24')]=qs[_0x9278('0x24')](_0x2c33a1[_0x9278('0x39')][_0x9278('0x24')]);}return _0xd2c700[_0x9278('0x63')](_0x54514b);}})[_0x9278('0x2c')](function(_0x4a3473){if(_0x4a3473){return _0x4a3473?{'count':_0x420073,'rows':_0x4a3473}:null;}})['then'](respondWithResult(_0x5ccea7,null))[_0x9278('0x50')](handleError(_0x5ccea7,null));};exports[_0x9278('0x66')]=function(_0x5a8a9a,_0x1483f8,_0x7a22c8){var _0xc0eeb=_0x5a8a9a[_0x9278('0x52')][_0x9278('0x67')];return db[_0x9278('0x65')][_0x9278('0x4b')]({'where':{'id':_0xc0eeb},'attributes':['id'],'include':[{'model':db[_0x9278('0x68')],'as':_0x9278('0x69'),'attributes':['id',_0x9278('0x33'),_0x9278('0x6a'),_0x9278('0x6b'),'interface'],'raw':!![]}]})['then'](function(_0x20071e){if(_0x20071e){var _0x4a223d=_[_0x9278('0x6c')](_0x20071e,function(_0x536379){var _0x2502ce=_0x536379[_0x9278('0x2d')]({'plain':!![]});return _0x2502ce[_0x9278('0x69')];});return db[_0x9278('0x48')][_0x9278('0x4f')]({'where':{'id':_0x5a8a9a[_0x9278('0x4e')]['id']}})[_0x9278('0x2c')](function(_0x32635f){return db[_0x9278('0x6d')][_0x9278('0x6e')](function(_0x5e434c){return _0x32635f[_0x9278('0x66')](_0xc0eeb,{'transaction':_0x5e434c})[_0x9278('0x2c')](function(){return BPromise['each'](_0x4a223d,function(_0x1b3f65){return db['UserFaxQueue']['findOrCreate']({'where':{'UserId':_0x1b3f65['id'],'FaxQueueId':_0x5a8a9a['params']['id']},'transaction':_0x5e434c});});})['then'](function(){_0x4a223d[_0x9278('0x6f')](function(_0x40ad90){socket[_0x9278('0x70')](_0x9278('0x71'),{'UserId':_0x40ad90['id'],'FaxQueueId':_0x32635f['id']});});});});});}})[_0x9278('0x2c')](respondWithStatusCode(_0x1483f8,null))[_0x9278('0x50')](handleError(_0x1483f8,null));};exports['removeTeams']=function(_0x432e5c,_0x28bbdb,_0x520392){return db[_0x9278('0x65')]['findAll']({'where':{'id':_0x432e5c[_0x9278('0x39')][_0x9278('0x67')]},'attributes':['id'],'include':[{'model':db[_0x9278('0x68')],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0x9278('0x2c')](handleEntityNotFound(_0x28bbdb,null))['then'](function(_0x40920c){var _0x5bb647=_[_0x9278('0x35')](_0x40920c,'id');var _0xf89e10=[];var _0x201cdd=[];var _0x582787=squel[_0x9278('0x72')]();_0x582787[_0x9278('0x73')](_0x9278('0x74'))[_0x9278('0x75')]('team_has_fax_queues','tq')[_0x9278('0x76')](_0x9278('0x77'),'ut','ut.TeamId\x20=\x20tq.TeamId')['where'](_0x9278('0x78'),_0x432e5c['params']['id']);for(var _0x453597=0x0;_0x453597<_0x40920c[_0x9278('0x3f')];_0x453597+=0x1){let _0x4eb5e4=_0x40920c[_0x453597];for(var _0x29b090=0x0;_0x29b090<_0x4eb5e4[_0x9278('0x69')][_0x9278('0x3f')];_0x29b090+=0x1){let _0x918570=_0x4eb5e4[_0x9278('0x69')][_0x29b090];var _0x4865e2=_0x582787['clone']();_0x4865e2['where']('ut.UserId\x20=\x20?',_0x918570['id']);_0x201cdd[_0x9278('0x79')](db[_0x9278('0x6d')][_0x9278('0x39')](_0x4865e2[_0x9278('0x7a')](),{'type':db[_0x9278('0x6d')][_0x9278('0x7b')][_0x9278('0x7c')]})[_0x9278('0x2c')](function(_0x3e3f5f){if(_0x3e3f5f['length']===0x1){return _0x918570['id'];}else{var _0xb13180=_[_0x9278('0x7d')](_['map'](_0x3e3f5f,_0x9278('0x7e')),function(_0x325d19){return _[_0x9278('0x7f')](_0x5bb647,_0x325d19);});if(_0xb13180){return _0x918570['id'];}}}));}}return BPromise['all'](_0x201cdd)[_0x9278('0x2c')](function(_0x3753d8){_0xf89e10=_(_0xf89e10)[_0x9278('0x80')](_0x3753d8)['compact']()[_0x9278('0x81')]();return db[_0x9278('0x48')][_0x9278('0x4f')]({'where':{'id':_0x432e5c[_0x9278('0x4e')]['id']}})['then'](function(_0x178e66){return db[_0x9278('0x6d')][_0x9278('0x6e')](function(_0x3ecbd2){return _0x178e66[_0x9278('0x82')](_0x432e5c[_0x9278('0x39')][_0x9278('0x67')],{'transaction':_0x3ecbd2})['then'](function(){if(!_[_0x9278('0x83')](_0xf89e10)){return _0x178e66['removeAgents'](_0xf89e10,{'transaction':_0x3ecbd2});}})[_0x9278('0x2c')](function(){_0xf89e10[_0x9278('0x6f')](function(_0x56b041){socket[_0x9278('0x70')](_0x9278('0x84'),{'UserId':_0x56b041,'FaxQueueId':_0x178e66['id']});});});});});});})['then'](respondWithStatusCode(_0x28bbdb,null))[_0x9278('0x50')](handleError(_0x28bbdb,null));};exports[_0x9278('0x85')]=function(_0x5be0bd,_0x4c66f0,_0x1e8a95){return db[_0x9278('0x48')]['find']({'where':{'id':_0x5be0bd[_0x9278('0x4e')]['id']}})['then'](handleEntityNotFound(_0x4c66f0,null))[_0x9278('0x2c')](function(_0x3a39a8){if(_0x3a39a8){return _0x3a39a8[_0x9278('0x85')](_0x5be0bd[_0x9278('0x52')][_0x9278('0x67')],_['omit'](_0x5be0bd[_0x9278('0x52')],[_0x9278('0x67'),'id'])||{})[_0x9278('0x86')](function(_0x5c02f3){for(var _0xd68b05=0x0;_0xd68b05<_0x5be0bd[_0x9278('0x52')][_0x9278('0x67')][_0x9278('0x3f')];_0xd68b05+=0x1){socket[_0x9278('0x70')]('userFaxQueue:save',{'UserId':Number(_0x5be0bd[_0x9278('0x52')][_0x9278('0x67')][_0xd68b05]),'FaxQueueId':Number(_0x5be0bd[_0x9278('0x4e')]['id'])});}return _0x5c02f3;});}})['then'](respondWithResult(_0x4c66f0,null))[_0x9278('0x50')](handleError(_0x4c66f0,null));};exports[_0x9278('0x87')]=function(_0x399a8e,_0x5e9219,_0x11aa93){return db[_0x9278('0x48')][_0x9278('0x4f')]({'where':{'id':_0x399a8e[_0x9278('0x4e')]['id']}})[_0x9278('0x2c')](handleEntityNotFound(_0x5e9219,null))[_0x9278('0x2c')](function(_0x3d11d0){if(_0x3d11d0){return _0x3d11d0[_0x9278('0x87')](_0x399a8e[_0x9278('0x39')][_0x9278('0x67')])[_0x9278('0x2c')](function(){if(_[_0x9278('0x88')](_0x399a8e[_0x9278('0x39')][_0x9278('0x67')])){for(var _0x3df4bf=0x0;_0x3df4bf<_0x399a8e[_0x9278('0x39')]['ids'][_0x9278('0x3f')];_0x3df4bf+=0x1){socket[_0x9278('0x70')](_0x9278('0x84'),{'UserId':Number(_0x399a8e['query'][_0x9278('0x67')][_0x3df4bf]),'FaxQueueId':Number(_0x399a8e[_0x9278('0x4e')]['id'])});}}else{socket['emit'](_0x9278('0x84'),{'UserId':Number(_0x399a8e['query'][_0x9278('0x67')]),'FaxQueueId':Number(_0x399a8e[_0x9278('0x4e')]['id'])});}});}})[_0x9278('0x2c')](respondWithStatusCode(_0x5e9219,null))[_0x9278('0x50')](handleError(_0x5e9219,null));};exports['getAgents']=function(_0x2e073c,_0x238275,_0xa09204){var _0x207685={};var _0x10069b={};var _0x5e7315;var _0x200a23;return db['FaxQueue'][_0x9278('0x64')]({'where':{'id':_0x2e073c[_0x9278('0x4e')]['id']}})['then'](handleEntityNotFound(_0x238275,null))[_0x9278('0x2c')](function(_0x1e0293){if(_0x1e0293){_0x5e7315=_0x1e0293;_0x10069b[_0x9278('0x38')]=_[_0x9278('0x3a')](db[_0x9278('0x68')][_0x9278('0x5a')]);_0x10069b[_0x9278('0x39')]=_[_0x9278('0x3a')](_0x2e073c[_0x9278('0x39')]);_0x10069b[_0x9278('0x3b')]=_['intersection'](_0x10069b[_0x9278('0x38')],_0x10069b[_0x9278('0x39')]);_0x207685[_0x9278('0x3e')]=_[_0x9278('0x3c')](_0x10069b[_0x9278('0x38')],qs[_0x9278('0x3d')](_0x2e073c[_0x9278('0x39')][_0x9278('0x3d')]));_0x207685[_0x9278('0x3e')]=_0x207685[_0x9278('0x3e')][_0x9278('0x3f')]?_0x207685[_0x9278('0x3e')]:_0x10069b[_0x9278('0x38')];_0x207685['order']=qs[_0x9278('0x43')](_0x2e073c[_0x9278('0x39')][_0x9278('0x43')]);_0x207685[_0x9278('0x44')]=qs[_0x9278('0x3b')](_['pick'](_0x2e073c['query'],_0x10069b[_0x9278('0x3b')]));if(_0x2e073c[_0x9278('0x39')][_0x9278('0x45')]){_0x207685[_0x9278('0x44')]=_[_0x9278('0x46')](_0x207685['where'],{'$or':_['map'](_0x207685['attributes'],function(_0x487317){var _0x576e24={};_0x576e24[_0x487317]={'$like':'%'+_0x2e073c['query'][_0x9278('0x45')]+'%'};return _0x576e24;})});}_0x207685=_['merge']({},_0x207685,_0x2e073c[_0x9278('0x47')]);return _0x5e7315['getAgents'](_0x207685);}})[_0x9278('0x2c')](function(_0xdf2060){if(_0xdf2060){_0x200a23=_0xdf2060[_0x9278('0x3f')];if(!_0x2e073c[_0x9278('0x39')][_0x9278('0x40')](_0x9278('0x41'))){_0x207685[_0x9278('0x25')]=qs[_0x9278('0x25')](_0x2e073c['query'][_0x9278('0x25')]);_0x207685[_0x9278('0x24')]=qs[_0x9278('0x24')](_0x2e073c[_0x9278('0x39')]['offset']);}return _0x5e7315[_0x9278('0x89')](_0x207685);}})['then'](function(_0x5a2354){if(_0x5a2354){return _0x5a2354?{'count':_0x200a23,'rows':_0x5a2354}:null;}})[_0x9278('0x2c')](respondWithResult(_0x238275,null))[_0x9278('0x50')](handleError(_0x238275,null));};
\ No newline at end of file
+var _0x9204=['FaxQueues','destroy','error','stack','name','send','index','map','fieldName','type','key','keys','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','VIRTUAL','merge','FaxQueue','includeAll','include','findAll','rows','show','params','rawAttributes','options','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','findOne','UserFaxQueue','FaxQueueId','User','findAndCountAll','UserId','agent','updatedAt','createdAt','format','%s/%s','getTeams','nolimit','addTeams','online','voicePause','flatMap','sequelize','transaction','findOrCreate','forEach','emit','removeTeams','Team','ids','Agents','select','field','tq.TeamId','from','team_has_fax_queues','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','FaxQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','every','TeamId','includes','all','union','compact','isEmpty','removeAgents','userFaxQueue:remove','addAgents','omit','spread','userFaxQueue:save','isArray','getAgents','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','squel','crypto','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','./faxQueue.socket','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','get'];(function(_0x27af45,_0x1b57aa){var _0x18df21=function(_0x4b7679){while(--_0x4b7679){_0x27af45['push'](_0x27af45['shift']());}};_0x18df21(++_0x1b57aa);}(_0x9204,0xf7));var _0x4920=function(_0x2de54e,_0x5afd91){_0x2de54e=_0x2de54e-0x0;var _0x3d5384=_0x9204[_0x2de54e];return _0x3d5384;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x4920('0x0'));var zipdir=require(_0x4920('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x4920('0x2'));var moment=require(_0x4920('0x3'));var BPromise=require(_0x4920('0x4'));var Mustache=require(_0x4920('0x5'));var util=require(_0x4920('0x6'));var path=require(_0x4920('0x7'));var sox=require('sox');var csv=require(_0x4920('0x8'));var ejs=require(_0x4920('0x9'));var fs=require('fs');var fs_extra=require(_0x4920('0xa'));var _=require('lodash');var squel=require(_0x4920('0xb'));var crypto=require(_0x4920('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x4920('0xd'));var toCsv=require(_0x4920('0x8'));var querystring=require('querystring');var Papa=require(_0x4920('0xe'));var Redis=require(_0x4920('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x4920('0x10'));var as=require(_0x4920('0x11'));var hardwareService=require(_0x4920('0x12'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0x4920('0x13'));var licenseUtil=require(_0x4920('0x14'));var db=require(_0x4920('0x15'))['db'];config['redis']=_[_0x4920('0x16')](config[_0x4920('0x17')],{'host':_0x4920('0x18'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x4920('0x17')]));require(_0x4920('0x19'))['register'](socket);function respondWithStatusCode(_0x201af5,_0x41c7f5){_0x41c7f5=_0x41c7f5||0xcc;return function(_0xbf31e0){if(_0xbf31e0){return _0x201af5[_0x4920('0x1a')](_0x41c7f5);}return _0x201af5[_0x4920('0x1b')](_0x41c7f5)[_0x4920('0x1c')]();};}function respondWithResult(_0x4bdcae,_0xd14c91){_0xd14c91=_0xd14c91||0xc8;return function(_0x3d2222){if(_0x3d2222){return _0x4bdcae[_0x4920('0x1b')](_0xd14c91)[_0x4920('0x1d')](_0x3d2222);}};}function respondWithFilteredResult(_0x12a6fa,_0x1a80f5){return function(_0x575cd4){if(_0x575cd4){var _0x20bc7b=typeof _0x1a80f5[_0x4920('0x1e')]===_0x4920('0x1f')&&typeof _0x1a80f5[_0x4920('0x20')]===_0x4920('0x1f');var _0x47f594=_0x575cd4[_0x4920('0x21')];var _0x39f74f=_0x20bc7b?0x0:_0x1a80f5['offset'];var _0x2d4628=_0x20bc7b?_0x575cd4['count']:_0x1a80f5[_0x4920('0x1e')]+_0x1a80f5[_0x4920('0x20')];var _0x293d65;if(_0x2d4628>=_0x47f594){_0x2d4628=_0x47f594;_0x293d65=0xc8;}else{_0x293d65=0xce;}_0x12a6fa[_0x4920('0x1b')](_0x293d65);return _0x12a6fa[_0x4920('0x22')](_0x4920('0x23'),_0x39f74f+'-'+_0x2d4628+'/'+_0x47f594)[_0x4920('0x1d')](_0x575cd4);}return null;};}function patchUpdates(_0xb2ccf8){return function(_0x4cf390){try{jsonpatch['apply'](_0x4cf390,_0xb2ccf8,!![]);}catch(_0x2c0e6c){return BPromise[_0x4920('0x24')](_0x2c0e6c);}return _0x4cf390[_0x4920('0x25')]();};}function saveUpdates(_0x511189,_0x2620d7){return function(_0xbc928){if(_0xbc928){return _0xbc928[_0x4920('0x26')](_0x511189)[_0x4920('0x27')](function(_0x5920eb){return _0x5920eb;});}return null;};}function removeEntity(_0x46c738,_0x2b639d){return function(_0x32b9c2){if(_0x32b9c2){return _0x32b9c2['destroy']()[_0x4920('0x27')](function(){var _0x49bb96=_0x32b9c2[_0x4920('0x28')]({'plain':!![]});var _0x55dd07=_0x4920('0x29');return db['UserProfileResource'][_0x4920('0x2a')]({'where':{'type':_0x55dd07,'resourceId':_0x49bb96['id']}})[_0x4920('0x27')](function(){return _0x32b9c2;});})['then'](function(){_0x46c738['status'](0xcc)[_0x4920('0x1c')]();});}};}function handleEntityNotFound(_0x282ee6,_0x4b16b8){return function(_0x1f53d0){if(!_0x1f53d0){_0x282ee6['sendStatus'](0x194);}return _0x1f53d0;};}function handleError(_0x34244b,_0x2dd66c){_0x2dd66c=_0x2dd66c||0x1f4;return function(_0x16d5e3){logger[_0x4920('0x2b')](_0x16d5e3[_0x4920('0x2c')]);if(_0x16d5e3[_0x4920('0x2d')]){delete _0x16d5e3[_0x4920('0x2d')];}_0x34244b[_0x4920('0x1b')](_0x2dd66c)[_0x4920('0x2e')](_0x16d5e3);};}exports[_0x4920('0x2f')]=function(_0x1bcb34,_0x551104){var _0x36e175={},_0x46d923={},_0x3f2a34={'count':0x0,'rows':[]};var _0x23551c=_[_0x4920('0x30')](db['FaxQueue']['rawAttributes'],function(_0x1df0e3){return{'name':_0x1df0e3[_0x4920('0x31')],'type':_0x1df0e3[_0x4920('0x32')][_0x4920('0x33')]};});_0x46d923['model']=_[_0x4920('0x30')](_0x23551c,'name');_0x46d923['query']=_[_0x4920('0x34')](_0x1bcb34[_0x4920('0x35')]);_0x46d923[_0x4920('0x36')]=_[_0x4920('0x37')](_0x46d923[_0x4920('0x38')],_0x46d923['query']);_0x36e175[_0x4920('0x39')]=_[_0x4920('0x37')](_0x46d923['model'],qs[_0x4920('0x3a')](_0x1bcb34[_0x4920('0x35')][_0x4920('0x3a')]));_0x36e175['attributes']=_0x36e175['attributes'][_0x4920('0x3b')]?_0x36e175[_0x4920('0x39')]:_0x46d923['model'];if(!_0x1bcb34[_0x4920('0x35')][_0x4920('0x3c')]('nolimit')){_0x36e175[_0x4920('0x20')]=qs[_0x4920('0x20')](_0x1bcb34[_0x4920('0x35')][_0x4920('0x20')]);_0x36e175[_0x4920('0x1e')]=qs[_0x4920('0x1e')](_0x1bcb34[_0x4920('0x35')]['offset']);}_0x36e175[_0x4920('0x3d')]=qs[_0x4920('0x3e')](_0x1bcb34[_0x4920('0x35')]['sort']);_0x36e175[_0x4920('0x3f')]=qs[_0x4920('0x36')](_[_0x4920('0x40')](_0x1bcb34[_0x4920('0x35')],_0x46d923[_0x4920('0x36')]),_0x23551c);if(_0x1bcb34[_0x4920('0x35')][_0x4920('0x41')]){_0x36e175[_0x4920('0x3f')]=_['merge'](_0x36e175[_0x4920('0x3f')],{'$or':_[_0x4920('0x30')](_0x23551c,function(_0xcf46cf){if(_0xcf46cf['type']!==_0x4920('0x42')){var _0x22a611={};_0x22a611[_0xcf46cf[_0x4920('0x2d')]]={'$like':'%'+_0x1bcb34[_0x4920('0x35')][_0x4920('0x41')]+'%'};return _0x22a611;}})});}_0x36e175=_[_0x4920('0x43')]({},_0x36e175,_0x1bcb34['options']);var _0x43068a={'where':_0x36e175[_0x4920('0x3f')]};return db[_0x4920('0x44')][_0x4920('0x21')](_0x43068a)[_0x4920('0x27')](function(_0x149ef0){_0x3f2a34[_0x4920('0x21')]=_0x149ef0;if(_0x1bcb34[_0x4920('0x35')][_0x4920('0x45')]){_0x36e175[_0x4920('0x46')]=[{'all':!![]}];}return db[_0x4920('0x44')][_0x4920('0x47')](_0x36e175);})[_0x4920('0x27')](function(_0xf31f65){_0x3f2a34[_0x4920('0x48')]=_0xf31f65;return _0x3f2a34;})['then'](respondWithFilteredResult(_0x551104,_0x36e175))['catch'](handleError(_0x551104,null));};exports[_0x4920('0x49')]=function(_0x3f5d7d,_0x567bf6){var _0xc4bf7e={'raw':!![],'where':{'id':_0x3f5d7d[_0x4920('0x4a')]['id']}},_0x4d1314={};_0x4d1314[_0x4920('0x38')]=_[_0x4920('0x34')](db[_0x4920('0x44')][_0x4920('0x4b')]);_0x4d1314['query']=_['keys'](_0x3f5d7d['query']);_0x4d1314[_0x4920('0x36')]=_[_0x4920('0x37')](_0x4d1314['model'],_0x4d1314[_0x4920('0x35')]);_0xc4bf7e[_0x4920('0x39')]=_[_0x4920('0x37')](_0x4d1314['model'],qs[_0x4920('0x3a')](_0x3f5d7d[_0x4920('0x35')][_0x4920('0x3a')]));_0xc4bf7e['attributes']=_0xc4bf7e[_0x4920('0x39')][_0x4920('0x3b')]?_0xc4bf7e[_0x4920('0x39')]:_0x4d1314['model'];if(_0x3f5d7d[_0x4920('0x35')][_0x4920('0x45')]){_0xc4bf7e[_0x4920('0x46')]=[{'all':!![]}];}_0xc4bf7e=_['merge']({},_0xc4bf7e,_0x3f5d7d[_0x4920('0x4c')]);return db[_0x4920('0x44')][_0x4920('0x4d')](_0xc4bf7e)[_0x4920('0x27')](handleEntityNotFound(_0x567bf6,null))[_0x4920('0x27')](respondWithResult(_0x567bf6,null))[_0x4920('0x4e')](handleError(_0x567bf6,null));};exports[_0x4920('0x4f')]=function(_0x2faea6,_0x3b74fb){return db[_0x4920('0x44')][_0x4920('0x4f')](_0x2faea6[_0x4920('0x50')],{})[_0x4920('0x27')](function(_0x7960a9){var _0x196e56=_0x2faea6[_0x4920('0x51')][_0x4920('0x28')]({'plain':!![]});if(!_0x196e56)throw new Error(_0x4920('0x52'));if(_0x196e56[_0x4920('0x53')]==='user'){var _0x9efaff=_0x7960a9[_0x4920('0x28')]({'plain':!![]});var _0x431ef9=_0x4920('0x29');return db[_0x4920('0x54')][_0x4920('0x4d')]({'where':{'name':_0x431ef9,'userProfileId':_0x196e56[_0x4920('0x55')]},'raw':!![]})[_0x4920('0x27')](function(_0x1a6a38){if(_0x1a6a38&&_0x1a6a38[_0x4920('0x56')]===0x0){return db['UserProfileResource'][_0x4920('0x4f')]({'name':_0x9efaff[_0x4920('0x2d')],'resourceId':_0x9efaff['id'],'type':_0x1a6a38[_0x4920('0x2d')],'sectionId':_0x1a6a38['id']},{})[_0x4920('0x27')](function(){return _0x7960a9;});}else{return _0x7960a9;}})[_0x4920('0x4e')](function(_0x153721){logger[_0x4920('0x2b')](_0x4920('0x57'),_0x153721);throw _0x153721;});}return _0x7960a9;})['then'](respondWithResult(_0x3b74fb,0xc9))[_0x4920('0x4e')](handleError(_0x3b74fb,null));};exports[_0x4920('0x26')]=function(_0x5ec192,_0x1630f7){if(_0x5ec192['body']['id']){delete _0x5ec192['body']['id'];}return db[_0x4920('0x44')][_0x4920('0x4d')]({'where':{'id':_0x5ec192['params']['id']}})[_0x4920('0x27')](handleEntityNotFound(_0x1630f7,null))[_0x4920('0x27')](saveUpdates(_0x5ec192[_0x4920('0x50')],null))['then'](respondWithResult(_0x1630f7,null))[_0x4920('0x4e')](handleError(_0x1630f7,null));};exports[_0x4920('0x2a')]=function(_0x48547a,_0x435185){return db['FaxQueue'][_0x4920('0x4d')]({'where':{'id':_0x48547a[_0x4920('0x4a')]['id']}})[_0x4920('0x27')](handleEntityNotFound(_0x435185,null))[_0x4920('0x27')](removeEntity(_0x435185,null))['catch'](handleError(_0x435185,null));};exports['describe']=function(_0x225137,_0x4c5279){return db['FaxQueue'][_0x4920('0x58')]()[_0x4920('0x27')](respondWithResult(_0x4c5279,null))[_0x4920('0x4e')](handleError(_0x4c5279,null));};exports[_0x4920('0x59')]=function(_0x1b3b99,_0x36cd6c,_0x24b1b0){var _0x1d843e={'raw':!![],'where':{}},_0x105bad={},_0x49d42d;return db['FaxQueue'][_0x4920('0x5a')]({'where':{'id':_0x1b3b99[_0x4920('0x4a')]['id']}})[_0x4920('0x27')](handleEntityNotFound(_0x36cd6c,null))[_0x4920('0x27')](function(_0x480189){if(_0x480189){_0x49d42d=_0x480189[_0x4920('0x28')]({'plain':!![]});_0x105bad[_0x4920('0x38')]=_[_0x4920('0x34')](db[_0x4920('0x5b')][_0x4920('0x4b')]);_0x105bad[_0x4920('0x35')]=_[_0x4920('0x34')](_0x1b3b99[_0x4920('0x35')]);_0x105bad['filters']=_[_0x4920('0x37')](_0x105bad['model'],_0x105bad[_0x4920('0x35')]);_0x1d843e['attributes']=_[_0x4920('0x37')](_0x105bad[_0x4920('0x38')],qs[_0x4920('0x3a')](_0x1b3b99[_0x4920('0x35')][_0x4920('0x3a')]));_0x1d843e[_0x4920('0x39')]=_0x1d843e['attributes'][_0x4920('0x3b')]?_0x1d843e['attributes']:_0x105bad[_0x4920('0x38')];if(!_0x1b3b99[_0x4920('0x35')][_0x4920('0x3c')]('nolimit')){_0x1d843e[_0x4920('0x20')]=qs[_0x4920('0x20')](_0x1b3b99['query']['limit']);_0x1d843e[_0x4920('0x1e')]=qs[_0x4920('0x1e')](_0x1b3b99[_0x4920('0x35')][_0x4920('0x1e')]);}_0x1d843e['order']=qs[_0x4920('0x3e')](_0x1b3b99['query']['sort']);_0x1d843e[_0x4920('0x3f')]=qs[_0x4920('0x36')](_[_0x4920('0x40')](_0x1b3b99[_0x4920('0x35')],_0x105bad[_0x4920('0x36')]));_0x1d843e[_0x4920('0x3f')][_0x4920('0x5c')]=_0x480189['id'];if(_0x1b3b99[_0x4920('0x35')][_0x4920('0x41')]){_0x1d843e[_0x4920('0x3f')]=_['merge'](_0x1d843e[_0x4920('0x3f')],{'$or':_[_0x4920('0x30')](_0x1d843e[_0x4920('0x39')],function(_0x37fac4){var _0x355081={};_0x355081[_0x37fac4]={'$like':'%'+_0x1b3b99[_0x4920('0x35')][_0x4920('0x41')]+'%'};return _0x355081;})});}_0x1d843e=_[_0x4920('0x43')]({},_0x1d843e,_0x1b3b99[_0x4920('0x4c')]);return db[_0x4920('0x5b')][_0x4920('0x47')](_0x1d843e);}})['then'](function(_0x1106e4){if(_0x1106e4){return db[_0x4920('0x5d')][_0x4920('0x5e')]({'where':{'id':_['map'](_0x1106e4,_0x4920('0x5f')),'role':_0x4920('0x60')},'attributes':['id',_0x4920('0x2d'),'faxPause',_0x4920('0x61'),_0x4920('0x62')]});}})[_0x4920('0x27')](function(_0x571a47){if(_0x571a47){return{'count':_0x571a47[_0x4920('0x21')],'rows':_[_0x4920('0x30')](_0x571a47[_0x4920('0x48')],function(_0x444889){return{'membername':_0x444889['name'],'UserId':_0x444889['id'],'queue_name':_0x49d42d[_0x4920('0x2d')],'FaxQueueId':_0x49d42d['id'],'interface':util[_0x4920('0x63')](_0x4920('0x64'),'SIP',_0x444889['name']),'penalty':0x0,'paused':_0x444889['faxPause'],'createdAt':_0x444889['createdAt'],'updatedAt':_0x444889[_0x4920('0x61')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x4920('0x27')](respondWithFilteredResult(_0x36cd6c,_0x1d843e))[_0x4920('0x4e')](handleError(_0x36cd6c,null));};exports['getTeams']=function(_0x2058db,_0x44da72,_0x1427f2){var _0x5e98bf={};var _0x46b1e={};var _0x48da32;var _0x299a42;return db[_0x4920('0x44')][_0x4920('0x5a')]({'where':{'id':_0x2058db[_0x4920('0x4a')]['id']}})[_0x4920('0x27')](handleEntityNotFound(_0x44da72,null))['then'](function(_0x56138e){if(_0x56138e){_0x48da32=_0x56138e;_0x46b1e['model']=_['keys'](db['Team']['rawAttributes']);_0x46b1e['query']=_['keys'](_0x2058db['query']);_0x46b1e[_0x4920('0x36')]=_['intersection'](_0x46b1e[_0x4920('0x38')],_0x46b1e['query']);_0x5e98bf[_0x4920('0x39')]=_[_0x4920('0x37')](_0x46b1e[_0x4920('0x38')],qs[_0x4920('0x3a')](_0x2058db[_0x4920('0x35')][_0x4920('0x3a')]));_0x5e98bf['attributes']=_0x5e98bf[_0x4920('0x39')][_0x4920('0x3b')]?_0x5e98bf[_0x4920('0x39')]:_0x46b1e['model'];_0x5e98bf[_0x4920('0x3d')]=qs[_0x4920('0x3e')](_0x2058db[_0x4920('0x35')][_0x4920('0x3e')]);_0x5e98bf[_0x4920('0x3f')]=qs[_0x4920('0x36')](_[_0x4920('0x40')](_0x2058db['query'],_0x46b1e['filters']));if(_0x2058db[_0x4920('0x35')][_0x4920('0x41')]){_0x5e98bf[_0x4920('0x3f')]=_[_0x4920('0x43')](_0x5e98bf[_0x4920('0x3f')],{'$or':_[_0x4920('0x30')](_0x5e98bf[_0x4920('0x39')],function(_0x14078c){var _0x4551df={};_0x4551df[_0x14078c]={'$like':'%'+_0x2058db[_0x4920('0x35')]['filter']+'%'};return _0x4551df;})});}_0x5e98bf=_['merge']({},_0x5e98bf,_0x2058db[_0x4920('0x4c')]);return _0x48da32[_0x4920('0x65')](_0x5e98bf);}})['then'](function(_0x22da40){if(_0x22da40){_0x299a42=_0x22da40[_0x4920('0x3b')];if(!_0x2058db[_0x4920('0x35')]['hasOwnProperty'](_0x4920('0x66'))){_0x5e98bf['limit']=qs[_0x4920('0x20')](_0x2058db['query'][_0x4920('0x20')]);_0x5e98bf[_0x4920('0x1e')]=qs['offset'](_0x2058db['query'][_0x4920('0x1e')]);}return _0x48da32['getTeams'](_0x5e98bf);}})[_0x4920('0x27')](function(_0x398f59){if(_0x398f59){return _0x398f59?{'count':_0x299a42,'rows':_0x398f59}:null;}})[_0x4920('0x27')](respondWithResult(_0x44da72,null))['catch'](handleError(_0x44da72,null));};exports[_0x4920('0x67')]=function(_0x4168a1,_0x1dd72a,_0x52af8a){var _0x4de339=_0x4168a1['body']['ids'];return db['Team'][_0x4920('0x47')]({'where':{'id':_0x4de339},'attributes':['id'],'include':[{'model':db['User'],'as':'Agents','attributes':['id',_0x4920('0x2d'),_0x4920('0x68'),_0x4920('0x69'),'interface'],'raw':!![]}]})['then'](function(_0x4b2e2a){if(_0x4b2e2a){var _0x593e4f=_[_0x4920('0x6a')](_0x4b2e2a,function(_0x25b3ce){var _0x543532=_0x25b3ce['get']({'plain':!![]});return _0x543532['Agents'];});return db['FaxQueue'][_0x4920('0x4d')]({'where':{'id':_0x4168a1[_0x4920('0x4a')]['id']}})[_0x4920('0x27')](function(_0x2a0556){return db[_0x4920('0x6b')][_0x4920('0x6c')](function(_0x274f3d){return _0x2a0556[_0x4920('0x67')](_0x4de339,{'transaction':_0x274f3d})['then'](function(){return BPromise['each'](_0x593e4f,function(_0x576e1e){return db[_0x4920('0x5b')][_0x4920('0x6d')]({'where':{'UserId':_0x576e1e['id'],'FaxQueueId':_0x4168a1['params']['id']},'transaction':_0x274f3d});});})[_0x4920('0x27')](function(){_0x593e4f[_0x4920('0x6e')](function(_0xbfc5b4){socket[_0x4920('0x6f')]('userFaxQueue:save',{'UserId':_0xbfc5b4['id'],'FaxQueueId':_0x2a0556['id']});});});});});}})[_0x4920('0x27')](respondWithStatusCode(_0x1dd72a,null))['catch'](handleError(_0x1dd72a,null));};exports[_0x4920('0x70')]=function(_0x2a386e,_0xeb112a,_0x236e6e){return db[_0x4920('0x71')][_0x4920('0x47')]({'where':{'id':_0x2a386e[_0x4920('0x35')][_0x4920('0x72')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0x4920('0x73'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0xeb112a,null))[_0x4920('0x27')](function(_0x141b10){var _0x25349b=_[_0x4920('0x30')](_0x141b10,'id');var _0x5c9602=[];var _0x2bd1cd=[];var _0x2a2430=squel[_0x4920('0x74')]();_0x2a2430[_0x4920('0x75')](_0x4920('0x76'))[_0x4920('0x77')](_0x4920('0x78'),'tq')['join'](_0x4920('0x79'),'ut',_0x4920('0x7a'))[_0x4920('0x3f')](_0x4920('0x7b'),_0x2a386e[_0x4920('0x4a')]['id']);for(var _0x4577ef=0x0;_0x4577ef<_0x141b10[_0x4920('0x3b')];_0x4577ef+=0x1){let _0x9a0596=_0x141b10[_0x4577ef];for(var _0x22f053=0x0;_0x22f053<_0x9a0596['Agents']['length'];_0x22f053+=0x1){let _0x174cc1=_0x9a0596['Agents'][_0x22f053];var _0x4adcb8=_0x2a2430['clone']();_0x4adcb8[_0x4920('0x3f')](_0x4920('0x7c'),_0x174cc1['id']);_0x2bd1cd[_0x4920('0x7d')](db[_0x4920('0x6b')]['query'](_0x4adcb8[_0x4920('0x7e')](),{'type':db[_0x4920('0x6b')][_0x4920('0x7f')][_0x4920('0x80')]})[_0x4920('0x27')](function(_0x359f7e){if(_0x359f7e['length']===0x1){return _0x174cc1['id'];}else{var _0x509f6a=_[_0x4920('0x81')](_[_0x4920('0x30')](_0x359f7e,_0x4920('0x82')),function(_0x4413d2){return _[_0x4920('0x83')](_0x25349b,_0x4413d2);});if(_0x509f6a){return _0x174cc1['id'];}}}));}}return BPromise[_0x4920('0x84')](_0x2bd1cd)[_0x4920('0x27')](function(_0x4e7e5f){_0x5c9602=_(_0x5c9602)[_0x4920('0x85')](_0x4e7e5f)[_0x4920('0x86')]()['value']();return db[_0x4920('0x44')][_0x4920('0x4d')]({'where':{'id':_0x2a386e[_0x4920('0x4a')]['id']}})['then'](function(_0x57f1f2){return db[_0x4920('0x6b')][_0x4920('0x6c')](function(_0x211a84){return _0x57f1f2[_0x4920('0x70')](_0x2a386e['query'][_0x4920('0x72')],{'transaction':_0x211a84})[_0x4920('0x27')](function(){if(!_[_0x4920('0x87')](_0x5c9602)){return _0x57f1f2[_0x4920('0x88')](_0x5c9602,{'transaction':_0x211a84});}})[_0x4920('0x27')](function(){_0x5c9602[_0x4920('0x6e')](function(_0x3ba94b){socket[_0x4920('0x6f')](_0x4920('0x89'),{'UserId':_0x3ba94b,'FaxQueueId':_0x57f1f2['id']});});});});});});})['then'](respondWithStatusCode(_0xeb112a,null))['catch'](handleError(_0xeb112a,null));};exports[_0x4920('0x8a')]=function(_0x4209a6,_0x244263,_0x1a13a7){return db['FaxQueue']['find']({'where':{'id':_0x4209a6[_0x4920('0x4a')]['id']}})[_0x4920('0x27')](handleEntityNotFound(_0x244263,null))[_0x4920('0x27')](function(_0x1d49e1){if(_0x1d49e1){return _0x1d49e1['addAgents'](_0x4209a6[_0x4920('0x50')][_0x4920('0x72')],_[_0x4920('0x8b')](_0x4209a6[_0x4920('0x50')],[_0x4920('0x72'),'id'])||{})[_0x4920('0x8c')](function(_0x4b7c1b){for(var _0x2b098d=0x0;_0x2b098d<_0x4209a6[_0x4920('0x50')][_0x4920('0x72')][_0x4920('0x3b')];_0x2b098d+=0x1){socket[_0x4920('0x6f')](_0x4920('0x8d'),{'UserId':Number(_0x4209a6[_0x4920('0x50')]['ids'][_0x2b098d]),'FaxQueueId':Number(_0x4209a6['params']['id'])});}return _0x4b7c1b;});}})[_0x4920('0x27')](respondWithResult(_0x244263,null))[_0x4920('0x4e')](handleError(_0x244263,null));};exports[_0x4920('0x88')]=function(_0x913ac6,_0x385288,_0x3f1daa){return db[_0x4920('0x44')][_0x4920('0x4d')]({'where':{'id':_0x913ac6[_0x4920('0x4a')]['id']}})[_0x4920('0x27')](handleEntityNotFound(_0x385288,null))[_0x4920('0x27')](function(_0x5d51b7){if(_0x5d51b7){return _0x5d51b7[_0x4920('0x88')](_0x913ac6[_0x4920('0x35')][_0x4920('0x72')])['then'](function(){if(_[_0x4920('0x8e')](_0x913ac6[_0x4920('0x35')][_0x4920('0x72')])){for(var _0x4fdcc8=0x0;_0x4fdcc8<_0x913ac6[_0x4920('0x35')][_0x4920('0x72')][_0x4920('0x3b')];_0x4fdcc8+=0x1){socket['emit']('userFaxQueue:remove',{'UserId':Number(_0x913ac6[_0x4920('0x35')]['ids'][_0x4fdcc8]),'FaxQueueId':Number(_0x913ac6[_0x4920('0x4a')]['id'])});}}else{socket[_0x4920('0x6f')](_0x4920('0x89'),{'UserId':Number(_0x913ac6[_0x4920('0x35')][_0x4920('0x72')]),'FaxQueueId':Number(_0x913ac6['params']['id'])});}});}})[_0x4920('0x27')](respondWithStatusCode(_0x385288,null))[_0x4920('0x4e')](handleError(_0x385288,null));};exports[_0x4920('0x8f')]=function(_0x448928,_0x1718df,_0x151d94){var _0x5ab94c={};var _0x3b22cb={};var _0x53bcad;var _0x58aa7c;return db[_0x4920('0x44')]['findOne']({'where':{'id':_0x448928[_0x4920('0x4a')]['id']}})[_0x4920('0x27')](handleEntityNotFound(_0x1718df,null))[_0x4920('0x27')](function(_0x129c98){if(_0x129c98){_0x53bcad=_0x129c98;_0x3b22cb[_0x4920('0x38')]=_[_0x4920('0x34')](db[_0x4920('0x5d')][_0x4920('0x4b')]);_0x3b22cb[_0x4920('0x35')]=_[_0x4920('0x34')](_0x448928['query']);_0x3b22cb[_0x4920('0x36')]=_['intersection'](_0x3b22cb[_0x4920('0x38')],_0x3b22cb[_0x4920('0x35')]);_0x5ab94c[_0x4920('0x39')]=_[_0x4920('0x37')](_0x3b22cb[_0x4920('0x38')],qs['fields'](_0x448928[_0x4920('0x35')][_0x4920('0x3a')]));_0x5ab94c['attributes']=_0x5ab94c[_0x4920('0x39')][_0x4920('0x3b')]?_0x5ab94c[_0x4920('0x39')]:_0x3b22cb['model'];_0x5ab94c[_0x4920('0x3d')]=qs['sort'](_0x448928[_0x4920('0x35')]['sort']);_0x5ab94c[_0x4920('0x3f')]=qs[_0x4920('0x36')](_[_0x4920('0x40')](_0x448928[_0x4920('0x35')],_0x3b22cb['filters']));if(_0x448928[_0x4920('0x35')]['filter']){_0x5ab94c['where']=_['merge'](_0x5ab94c[_0x4920('0x3f')],{'$or':_[_0x4920('0x30')](_0x5ab94c[_0x4920('0x39')],function(_0x4a5a49){var _0x3fc488={};_0x3fc488[_0x4a5a49]={'$like':'%'+_0x448928[_0x4920('0x35')]['filter']+'%'};return _0x3fc488;})});}_0x5ab94c=_['merge']({},_0x5ab94c,_0x448928['options']);return _0x53bcad[_0x4920('0x8f')](_0x5ab94c);}})['then'](function(_0x192b1b){if(_0x192b1b){_0x58aa7c=_0x192b1b['length'];if(!_0x448928['query']['hasOwnProperty']('nolimit')){_0x5ab94c[_0x4920('0x20')]=qs['limit'](_0x448928['query'][_0x4920('0x20')]);_0x5ab94c[_0x4920('0x1e')]=qs['offset'](_0x448928[_0x4920('0x35')]['offset']);}return _0x53bcad['getAgents'](_0x5ab94c);}})[_0x4920('0x27')](function(_0x2ce05c){if(_0x2ce05c){return _0x2ce05c?{'count':_0x58aa7c,'rows':_0x2ce05c}:null;}})['then'](respondWithResult(_0x1718df,null))[_0x4920('0x4e')](handleError(_0x1718df,null));};
\ No newline at end of file
index f6cc3e5..51321da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd464=['hasOwnProperty','hook','events','FaxQueue','setMaxListeners','save','remove','emit'];(function(_0x4deca4,_0x18dab3){var _0x427c34=function(_0x1e11a4){while(--_0x1e11a4){_0x4deca4['push'](_0x4deca4['shift']());}};_0x427c34(++_0x18dab3);}(_0xd464,0x182));var _0x4d46=function(_0x6f8bbb,_0x410f59){_0x6f8bbb=_0x6f8bbb-0x0;var _0x4a2bb9=_0xd464[_0x6f8bbb];return _0x4a2bb9;};'use strict';var EventEmitter=require(_0x4d46('0x0'));var FaxQueue=require('../../mysqldb')['db'][_0x4d46('0x1')];var FaxQueueEvents=new EventEmitter();FaxQueueEvents[_0x4d46('0x2')](0x0);var events={'afterCreate':_0x4d46('0x3'),'afterUpdate':'update','afterDestroy':_0x4d46('0x4')};function emitEvent(_0x35facc){return function(_0x4b85a1,_0x312131,_0x1ee554){FaxQueueEvents[_0x4d46('0x5')](_0x35facc+':'+_0x4b85a1['id'],_0x4b85a1);FaxQueueEvents[_0x4d46('0x5')](_0x35facc,_0x4b85a1);_0x1ee554(null);};}for(var e in events){if(events[_0x4d46('0x6')](e)){var event=events[e];FaxQueue[_0x4d46('0x7')](e,emitEvent(event));}}module['exports']=FaxQueueEvents;
\ No newline at end of file
+var _0x98cb=['setMaxListeners','save','remove','emit','events','../../mysqldb','FaxQueue'];(function(_0x28cfbd,_0x2f69a5){var _0x1d206b=function(_0x20c1b4){while(--_0x20c1b4){_0x28cfbd['push'](_0x28cfbd['shift']());}};_0x1d206b(++_0x2f69a5);}(_0x98cb,0x66));var _0xb98c=function(_0x3b3628,_0x365d8e){_0x3b3628=_0x3b3628-0x0;var _0x573b6b=_0x98cb[_0x3b3628];return _0x573b6b;};'use strict';var EventEmitter=require(_0xb98c('0x0'));var FaxQueue=require(_0xb98c('0x1'))['db'][_0xb98c('0x2')];var FaxQueueEvents=new EventEmitter();FaxQueueEvents[_0xb98c('0x3')](0x0);var events={'afterCreate':_0xb98c('0x4'),'afterUpdate':'update','afterDestroy':_0xb98c('0x5')};function emitEvent(_0x11a919){return function(_0x5c6457,_0x3dd5b0,_0x1c8dc0){FaxQueueEvents['emit'](_0x11a919+':'+_0x5c6457['id'],_0x5c6457);FaxQueueEvents[_0xb98c('0x6')](_0x11a919,_0x5c6457);_0x1c8dc0(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];FaxQueue['hook'](e,emitEvent(event));}}module['exports']=FaxQueueEvents;
\ No newline at end of file
index aa81e81..dd99b55 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x679f=['fax_queues','lodash','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','FaxQueue'];(function(_0x1c00d7,_0x54c5e6){var _0x5a2418=function(_0x31338c){while(--_0x31338c){_0x1c00d7['push'](_0x1c00d7['shift']());}};_0x5a2418(++_0x54c5e6);}(_0x679f,0x169));var _0xf679=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0x679f[_0x40a045];return _0x1a687c;};'use strict';var _=require(_0xf679('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xf679('0x1'));var moment=require(_0xf679('0x2'));var BPromise=require(_0xf679('0x3'));var rp=require(_0xf679('0x4'));var fs=require('fs');var path=require(_0xf679('0x5'));var rimraf=require(_0xf679('0x6'));var config=require(_0xf679('0x7'));var attributes=require('./faxQueue.attributes');module[_0xf679('0x8')]=function(_0x42e44f,_0x5582d5){return _0x42e44f[_0xf679('0x9')](_0xf679('0xa'),attributes,{'tableName':_0xf679('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x378e=['define','fax_queues','lodash','api','moment','bluebird','request-promise','rimraf','../../config/environment','exports'];(function(_0x28947d,_0x4cc9c6){var _0x12d2ee=function(_0x3f38fc){while(--_0x3f38fc){_0x28947d['push'](_0x28947d['shift']());}};_0x12d2ee(++_0x4cc9c6);}(_0x378e,0x160));var _0xe378=function(_0x5e4ea6,_0x3127e5){_0x5e4ea6=_0x5e4ea6-0x0;var _0x19d312=_0x378e[_0x5e4ea6];return _0x19d312;};'use strict';var _=require(_0xe378('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xe378('0x1'));var moment=require(_0xe378('0x2'));var BPromise=require(_0xe378('0x3'));var rp=require(_0xe378('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xe378('0x5'));var config=require(_0xe378('0x6'));var attributes=require('./faxQueue.attributes');module[_0xe378('0x7')]=function(_0x27bad1,_0x473c98){return _0x27bad1[_0xe378('0x8')]('FaxQueue',attributes,{'tableName':_0xe378('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 72edc0e..0c7610e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf1c=['catch','GetFaxQueue','FaxQueue','options','where','attributes','limit','map','model','include','then','ShowFaxQueue','find','raw','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','./faxQueue.socket','register','request','info','FaxQueue,\x20%s,\x20%s','request\x20sent','debug','FaxQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result'];(function(_0x5938a3,_0x20150c){var _0x51b960=function(_0x48fc28){while(--_0x48fc28){_0x5938a3['push'](_0x5938a3['shift']());}};_0x51b960(++_0x20150c);}(_0xaf1c,0x10a));var _0xcaf1=function(_0x560a04,_0x9a73e0){_0x560a04=_0x560a04-0x0;var _0x2a266d=_0xaf1c[_0x560a04];return _0x2a266d;};'use strict';var _=require(_0xcaf1('0x0'));var util=require(_0xcaf1('0x1'));var moment=require(_0xcaf1('0x2'));var BPromise=require('bluebird');var rs=require(_0xcaf1('0x3'));var fs=require('fs');var Redis=require(_0xcaf1('0x4'));var db=require(_0xcaf1('0x5'))['db'];var utils=require(_0xcaf1('0x6'));var logger=require(_0xcaf1('0x7'))('rpc');var config=require(_0xcaf1('0x8'));var jayson=require(_0xcaf1('0x9'));var client=jayson[_0xcaf1('0xa')][_0xcaf1('0xb')]({'port':0x232a});config[_0xcaf1('0xc')]=_[_0xcaf1('0xd')](config[_0xcaf1('0xc')],{'host':_0xcaf1('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xcaf1('0xc')]));require(_0xcaf1('0xf'))[_0xcaf1('0x10')](socket);function respondWithRpcPromise(_0xfc2726,_0x2fc85e,_0x1ec74e){return new BPromise(function(_0x489146,_0xfad8ff){return client[_0xcaf1('0x11')](_0xfc2726,_0x1ec74e)['then'](function(_0x4d07c6){logger[_0xcaf1('0x12')](_0xcaf1('0x13'),_0x2fc85e,_0xcaf1('0x14'));logger[_0xcaf1('0x15')](_0xcaf1('0x16'),_0x2fc85e,'request\x20sent',JSON[_0xcaf1('0x17')](_0x4d07c6));if(_0x4d07c6['error']){if(_0x4d07c6[_0xcaf1('0x18')][_0xcaf1('0x19')]===0x1f4){logger[_0xcaf1('0x18')](_0xcaf1('0x13'),_0x2fc85e,_0x4d07c6['error'][_0xcaf1('0x1a')]);return _0xfad8ff(_0x4d07c6[_0xcaf1('0x18')][_0xcaf1('0x1a')]);}logger[_0xcaf1('0x18')]('FaxQueue,\x20%s,\x20%s',_0x2fc85e,_0x4d07c6[_0xcaf1('0x18')][_0xcaf1('0x1a')]);return _0x489146(_0x4d07c6['error'][_0xcaf1('0x1a')]);}else{logger[_0xcaf1('0x12')]('FaxQueue,\x20%s,\x20%s',_0x2fc85e,_0xcaf1('0x14'));_0x489146(_0x4d07c6[_0xcaf1('0x1b')][_0xcaf1('0x1a')]);}})[_0xcaf1('0x1c')](function(_0x41e23d){logger[_0xcaf1('0x18')](_0xcaf1('0x13'),_0x2fc85e,_0x41e23d);_0xfad8ff(_0x41e23d);});});}exports[_0xcaf1('0x1d')]=function(_0x4b58ce){var _0x42e45a=this;return new Promise(function(_0x5072ba,_0x4ac892){return db[_0xcaf1('0x1e')]['findAll']({'raw':_0x4b58ce[_0xcaf1('0x1f')]?_0x4b58ce[_0xcaf1('0x1f')]['raw']===undefined?!![]:![]:!![],'where':_0x4b58ce[_0xcaf1('0x1f')]?_0x4b58ce[_0xcaf1('0x1f')][_0xcaf1('0x20')]||null:null,'attributes':_0x4b58ce[_0xcaf1('0x1f')]?_0x4b58ce[_0xcaf1('0x1f')][_0xcaf1('0x21')]||null:null,'limit':_0x4b58ce[_0xcaf1('0x1f')]?_0x4b58ce[_0xcaf1('0x1f')][_0xcaf1('0x22')]||null:null,'include':_0x4b58ce['options']?_0x4b58ce[_0xcaf1('0x1f')]['include']?_[_0xcaf1('0x23')](_0x4b58ce[_0xcaf1('0x1f')]['include'],function(_0x2e6d76){return{'model':db[_0x2e6d76[_0xcaf1('0x24')]],'as':_0x2e6d76['as'],'attributes':_0x2e6d76[_0xcaf1('0x21')],'include':_0x2e6d76[_0xcaf1('0x25')]?_[_0xcaf1('0x23')](_0x2e6d76['include'],function(_0x44de7e){return{'model':db[_0x44de7e[_0xcaf1('0x24')]],'as':_0x44de7e['as'],'attributes':_0x44de7e['attributes'],'include':_0x44de7e[_0xcaf1('0x25')]?_[_0xcaf1('0x23')](_0x44de7e[_0xcaf1('0x25')],function(_0x227232){return{'model':db[_0x227232[_0xcaf1('0x24')]],'as':_0x227232['as'],'attributes':_0x227232[_0xcaf1('0x21')]};}):[]};}):[]};}):[]:[]})[_0xcaf1('0x26')](function(_0xa7ac04){logger[_0xcaf1('0x12')](_0xcaf1('0x1d'),_0x4b58ce);logger[_0xcaf1('0x15')]('GetFaxQueue',_0x4b58ce,JSON[_0xcaf1('0x17')](_0xa7ac04));_0x5072ba(_0xa7ac04);})[_0xcaf1('0x1c')](function(_0x428d53){logger[_0xcaf1('0x18')](_0xcaf1('0x1d'),_0x428d53['message'],_0x4b58ce);_0x4ac892(_0x42e45a[_0xcaf1('0x18')](0x1f4,_0x428d53[_0xcaf1('0x1a')]));});});};exports[_0xcaf1('0x27')]=function(_0x5b562e){var _0xfd8fd5=this;return new Promise(function(_0x1d89b,_0x3098da){return db['FaxQueue'][_0xcaf1('0x28')]({'raw':_0x5b562e[_0xcaf1('0x1f')]?_0x5b562e[_0xcaf1('0x1f')][_0xcaf1('0x29')]===undefined?!![]:![]:!![],'where':_0x5b562e[_0xcaf1('0x1f')]?_0x5b562e[_0xcaf1('0x1f')][_0xcaf1('0x20')]||null:null,'attributes':_0x5b562e[_0xcaf1('0x1f')]?_0x5b562e[_0xcaf1('0x1f')][_0xcaf1('0x21')]||null:null,'include':_0x5b562e[_0xcaf1('0x1f')]?_0x5b562e[_0xcaf1('0x1f')][_0xcaf1('0x25')]?_['map'](_0x5b562e[_0xcaf1('0x1f')]['include'],function(_0x1436f9){return{'model':db[_0x1436f9[_0xcaf1('0x24')]],'as':_0x1436f9['as'],'attributes':_0x1436f9[_0xcaf1('0x21')],'include':_0x1436f9[_0xcaf1('0x25')]?_[_0xcaf1('0x23')](_0x1436f9[_0xcaf1('0x25')],function(_0x589e4d){return{'model':db[_0x589e4d[_0xcaf1('0x24')]],'as':_0x589e4d['as'],'attributes':_0x589e4d[_0xcaf1('0x21')],'include':_0x589e4d['include']?_[_0xcaf1('0x23')](_0x589e4d[_0xcaf1('0x25')],function(_0x31e536){return{'model':db[_0x31e536[_0xcaf1('0x24')]],'as':_0x31e536['as'],'attributes':_0x31e536[_0xcaf1('0x21')]};}):[]};}):[]};}):[]:[]})[_0xcaf1('0x26')](function(_0x3caac4){logger['info'](_0xcaf1('0x27'),_0x5b562e);logger['debug'](_0xcaf1('0x27'),_0x5b562e,JSON[_0xcaf1('0x17')](_0x3caac4));_0x1d89b(_0x3caac4);})[_0xcaf1('0x1c')](function(_0x5d19c4){logger[_0xcaf1('0x18')](_0xcaf1('0x27'),_0x5d19c4[_0xcaf1('0x1a')],_0x5b562e);_0x3098da(_0xfd8fd5[_0xcaf1('0x18')](0x1f4,_0x5d19c4[_0xcaf1('0x1a')]));});});};
\ No newline at end of file
+var _0x8c7d=['raw','where','attributes','limit','include','map','model','GetFaxQueue','ShowFaxQueue','find','catch','lodash','moment','randomstring','ioredis','../../config/utils','rpc','../../config/environment','http','redis','localhost','socket.io-emitter','./faxQueue.socket','register','request','then','info','FaxQueue,\x20%s,\x20%s','request\x20sent','debug','FaxQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','result','FaxQueue','findAll','options'];(function(_0x580238,_0x371d9d){var _0x34871f=function(_0x58c023){while(--_0x58c023){_0x580238['push'](_0x580238['shift']());}};_0x34871f(++_0x371d9d);}(_0x8c7d,0xef));var _0xd8c7=function(_0x3400c6,_0x223094){_0x3400c6=_0x3400c6-0x0;var _0x312d56=_0x8c7d[_0x3400c6];return _0x312d56;};'use strict';var _=require(_0xd8c7('0x0'));var util=require('util');var moment=require(_0xd8c7('0x1'));var BPromise=require('bluebird');var rs=require(_0xd8c7('0x2'));var fs=require('fs');var Redis=require(_0xd8c7('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xd8c7('0x4'));var logger=require('../../config/logger')(_0xd8c7('0x5'));var config=require(_0xd8c7('0x6'));var jayson=require('jayson/promise');var client=jayson['client'][_0xd8c7('0x7')]({'port':0x232a});config[_0xd8c7('0x8')]=_['defaults'](config[_0xd8c7('0x8')],{'host':_0xd8c7('0x9'),'port':0x18eb});var socket=require(_0xd8c7('0xa'))(new Redis(config['redis']));require(_0xd8c7('0xb'))[_0xd8c7('0xc')](socket);function respondWithRpcPromise(_0x12bd89,_0x23503a,_0x2bd350){return new BPromise(function(_0x517d50,_0x10be52){return client[_0xd8c7('0xd')](_0x12bd89,_0x2bd350)[_0xd8c7('0xe')](function(_0x137541){logger[_0xd8c7('0xf')](_0xd8c7('0x10'),_0x23503a,_0xd8c7('0x11'));logger[_0xd8c7('0x12')](_0xd8c7('0x13'),_0x23503a,_0xd8c7('0x11'),JSON[_0xd8c7('0x14')](_0x137541));if(_0x137541[_0xd8c7('0x15')]){if(_0x137541['error']['code']===0x1f4){logger[_0xd8c7('0x15')](_0xd8c7('0x10'),_0x23503a,_0x137541[_0xd8c7('0x15')]['message']);return _0x10be52(_0x137541['error'][_0xd8c7('0x16')]);}logger['error'](_0xd8c7('0x10'),_0x23503a,_0x137541['error'][_0xd8c7('0x16')]);return _0x517d50(_0x137541[_0xd8c7('0x15')][_0xd8c7('0x16')]);}else{logger[_0xd8c7('0xf')](_0xd8c7('0x10'),_0x23503a,_0xd8c7('0x11'));_0x517d50(_0x137541[_0xd8c7('0x17')][_0xd8c7('0x16')]);}})['catch'](function(_0x44c988){logger['error'](_0xd8c7('0x10'),_0x23503a,_0x44c988);_0x10be52(_0x44c988);});});}exports['GetFaxQueue']=function(_0x545a09){var _0xc6f1ea=this;return new Promise(function(_0x548375,_0x393d02){return db[_0xd8c7('0x18')][_0xd8c7('0x19')]({'raw':_0x545a09[_0xd8c7('0x1a')]?_0x545a09[_0xd8c7('0x1a')][_0xd8c7('0x1b')]===undefined?!![]:![]:!![],'where':_0x545a09[_0xd8c7('0x1a')]?_0x545a09[_0xd8c7('0x1a')][_0xd8c7('0x1c')]||null:null,'attributes':_0x545a09[_0xd8c7('0x1a')]?_0x545a09['options'][_0xd8c7('0x1d')]||null:null,'limit':_0x545a09[_0xd8c7('0x1a')]?_0x545a09[_0xd8c7('0x1a')][_0xd8c7('0x1e')]||null:null,'include':_0x545a09[_0xd8c7('0x1a')]?_0x545a09['options'][_0xd8c7('0x1f')]?_[_0xd8c7('0x20')](_0x545a09[_0xd8c7('0x1a')][_0xd8c7('0x1f')],function(_0x23e670){return{'model':db[_0x23e670[_0xd8c7('0x21')]],'as':_0x23e670['as'],'attributes':_0x23e670[_0xd8c7('0x1d')],'include':_0x23e670[_0xd8c7('0x1f')]?_['map'](_0x23e670[_0xd8c7('0x1f')],function(_0x27b475){return{'model':db[_0x27b475[_0xd8c7('0x21')]],'as':_0x27b475['as'],'attributes':_0x27b475[_0xd8c7('0x1d')],'include':_0x27b475[_0xd8c7('0x1f')]?_['map'](_0x27b475[_0xd8c7('0x1f')],function(_0x5dd41f){return{'model':db[_0x5dd41f[_0xd8c7('0x21')]],'as':_0x5dd41f['as'],'attributes':_0x5dd41f[_0xd8c7('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xd8c7('0xe')](function(_0x2769fa){logger['info'](_0xd8c7('0x22'),_0x545a09);logger[_0xd8c7('0x12')](_0xd8c7('0x22'),_0x545a09,JSON['stringify'](_0x2769fa));_0x548375(_0x2769fa);})['catch'](function(_0x25a739){logger[_0xd8c7('0x15')](_0xd8c7('0x22'),_0x25a739[_0xd8c7('0x16')],_0x545a09);_0x393d02(_0xc6f1ea[_0xd8c7('0x15')](0x1f4,_0x25a739['message']));});});};exports[_0xd8c7('0x23')]=function(_0x1e72fb){var _0x58b986=this;return new Promise(function(_0x4c95f2,_0xf625fd){return db[_0xd8c7('0x18')][_0xd8c7('0x24')]({'raw':_0x1e72fb[_0xd8c7('0x1a')]?_0x1e72fb[_0xd8c7('0x1a')][_0xd8c7('0x1b')]===undefined?!![]:![]:!![],'where':_0x1e72fb['options']?_0x1e72fb['options'][_0xd8c7('0x1c')]||null:null,'attributes':_0x1e72fb[_0xd8c7('0x1a')]?_0x1e72fb['options'][_0xd8c7('0x1d')]||null:null,'include':_0x1e72fb['options']?_0x1e72fb[_0xd8c7('0x1a')][_0xd8c7('0x1f')]?_[_0xd8c7('0x20')](_0x1e72fb[_0xd8c7('0x1a')]['include'],function(_0x3b886d){return{'model':db[_0x3b886d['model']],'as':_0x3b886d['as'],'attributes':_0x3b886d['attributes'],'include':_0x3b886d[_0xd8c7('0x1f')]?_['map'](_0x3b886d[_0xd8c7('0x1f')],function(_0x1e8004){return{'model':db[_0x1e8004['model']],'as':_0x1e8004['as'],'attributes':_0x1e8004[_0xd8c7('0x1d')],'include':_0x1e8004[_0xd8c7('0x1f')]?_[_0xd8c7('0x20')](_0x1e8004[_0xd8c7('0x1f')],function(_0x3f9eb3){return{'model':db[_0x3f9eb3[_0xd8c7('0x21')]],'as':_0x3f9eb3['as'],'attributes':_0x3f9eb3[_0xd8c7('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xd8c7('0xe')](function(_0x104692){logger[_0xd8c7('0xf')](_0xd8c7('0x23'),_0x1e72fb);logger['debug']('ShowFaxQueue',_0x1e72fb,JSON['stringify'](_0x104692));_0x4c95f2(_0x104692);})[_0xd8c7('0x25')](function(_0x2acfb6){logger[_0xd8c7('0x15')](_0xd8c7('0x23'),_0x2acfb6[_0xd8c7('0x16')],_0x1e72fb);_0xf625fd(_0x58b986[_0xd8c7('0x15')](0x1f4,_0x2acfb6['message']));});});};
\ No newline at end of file
index 05892b6..9640e83 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d7f=['update','removeListener','length','./faxQueue.events','save'];(function(_0x49d2df,_0x1f7534){var _0x47abfe=function(_0x16b607){while(--_0x16b607){_0x49d2df['push'](_0x49d2df['shift']());}};_0x47abfe(++_0x1f7534);}(_0x7d7f,0xa3));var _0xf7d7=function(_0x721436,_0x21de0b){_0x721436=_0x721436-0x0;var _0x45af45=_0x7d7f[_0x721436];return _0x45af45;};'use strict';var FaxQueueEvents=require(_0xf7d7('0x0'));var events=[_0xf7d7('0x1'),'remove',_0xf7d7('0x2')];function createListener(_0x3e4586,_0x92f19f){return function(_0x5cd0e0){_0x92f19f['emit'](_0x3e4586,_0x5cd0e0);};}function removeListener(_0x51d7e1,_0x53ce89){return function(){FaxQueueEvents[_0xf7d7('0x3')](_0x51d7e1,_0x53ce89);};}exports['register']=function(_0x59a417){for(var _0xb93425=0x0,_0xa46787=events[_0xf7d7('0x4')];_0xb93425<_0xa46787;_0xb93425++){var _0x1a1d70=events[_0xb93425];var _0x25989c=createListener('faxQueue:'+_0x1a1d70,_0x59a417);FaxQueueEvents['on'](_0x1a1d70,_0x25989c);}};
\ No newline at end of file
+var _0x1867=['length','faxQueue:','./faxQueue.events','save','emit','removeListener'];(function(_0x1cc8fe,_0x105328){var _0x230054=function(_0x1a1b56){while(--_0x1a1b56){_0x1cc8fe['push'](_0x1cc8fe['shift']());}};_0x230054(++_0x105328);}(_0x1867,0x134));var _0x7186=function(_0x346cf9,_0x77dcb2){_0x346cf9=_0x346cf9-0x0;var _0x33b7c9=_0x1867[_0x346cf9];return _0x33b7c9;};'use strict';var FaxQueueEvents=require(_0x7186('0x0'));var events=[_0x7186('0x1'),'remove','update'];function createListener(_0x40ffa2,_0x235c57){return function(_0x46c6c9){_0x235c57[_0x7186('0x2')](_0x40ffa2,_0x46c6c9);};}function removeListener(_0x14cee4,_0x450ff2){return function(){FaxQueueEvents[_0x7186('0x3')](_0x14cee4,_0x450ff2);};}exports['register']=function(_0x31bde6){for(var _0xfcb4e=0x0,_0x2316c6=events[_0x7186('0x4')];_0xfcb4e<_0x2316c6;_0xfcb4e++){var _0x47094f=events[_0xfcb4e];var _0x4999d6=createListener(_0x7186('0x5')+_0x47094f,_0x31bde6);FaxQueueEvents['on'](_0x47094f,_0x4999d6);}};
\ No newline at end of file
index e38a87b..4ed606c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf562=['destroy','removeTeams','/:id/users','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./faxQueue.controller','isAuthenticated','get','/describe','describe','/:id','show','getMembers','/:id/teams','post','create','addTeams','addAgents','put','delete'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xf562,0x100));var _0x2f56=function(_0x3caa82,_0x2eec8f){_0x3caa82=_0x3caa82-0x0;var _0x257182=_0xf562[_0x3caa82];return _0x257182;};'use strict';var multer=require(_0x2f56('0x0'));var util=require(_0x2f56('0x1'));var path=require(_0x2f56('0x2'));var timeout=require(_0x2f56('0x3'));var express=require(_0x2f56('0x4'));var router=express[_0x2f56('0x5')]();var fs_extra=require(_0x2f56('0x6'));var auth=require(_0x2f56('0x7'));var interaction=require(_0x2f56('0x8'));var config=require('../../config/environment');var controller=require(_0x2f56('0x9'));router['get']('/',auth[_0x2f56('0xa')](),controller['index']);router[_0x2f56('0xb')](_0x2f56('0xc'),auth[_0x2f56('0xa')](),controller[_0x2f56('0xd')]);router[_0x2f56('0xb')](_0x2f56('0xe'),auth[_0x2f56('0xa')](),controller[_0x2f56('0xf')]);router[_0x2f56('0xb')]('/:id/members',auth[_0x2f56('0xa')](),controller[_0x2f56('0x10')]);router['get'](_0x2f56('0x11'),auth[_0x2f56('0xa')](),controller['getTeams']);router[_0x2f56('0xb')]('/:id/users',auth[_0x2f56('0xa')](),controller['getAgents']);router[_0x2f56('0x12')]('/',auth[_0x2f56('0xa')](),controller[_0x2f56('0x13')]);router[_0x2f56('0x12')](_0x2f56('0x11'),auth[_0x2f56('0xa')](),controller[_0x2f56('0x14')]);router[_0x2f56('0x12')]('/:id/users',auth[_0x2f56('0xa')](),controller[_0x2f56('0x15')]);router[_0x2f56('0x16')](_0x2f56('0xe'),auth[_0x2f56('0xa')](),controller['update']);router[_0x2f56('0x17')](_0x2f56('0xe'),auth[_0x2f56('0xa')](),controller[_0x2f56('0x18')]);router[_0x2f56('0x17')]('/:id/teams',auth[_0x2f56('0xa')](),controller[_0x2f56('0x19')]);router[_0x2f56('0x17')](_0x2f56('0x1a'),auth[_0x2f56('0xa')](),controller['removeAgents']);module[_0x2f56('0x1b')]=router;
\ No newline at end of file
+var _0xeda8=['get','isAuthenticated','index','describe','/:id','getMembers','/:id/users','getAgents','post','create','addTeams','addAgents','put','delete','/:id/teams','removeAgents','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxQueue.controller'];(function(_0x2476bd,_0x2952d4){var _0x4d167d=function(_0x5e5e06){while(--_0x5e5e06){_0x2476bd['push'](_0x2476bd['shift']());}};_0x4d167d(++_0x2952d4);}(_0xeda8,0x104));var _0x8eda=function(_0x2f7bca,_0x5c879f){_0x2f7bca=_0x2f7bca-0x0;var _0x5f335c=_0xeda8[_0x2f7bca];return _0x5f335c;};'use strict';var multer=require(_0x8eda('0x0'));var util=require(_0x8eda('0x1'));var path=require('path');var timeout=require(_0x8eda('0x2'));var express=require(_0x8eda('0x3'));var router=express[_0x8eda('0x4')]();var fs_extra=require(_0x8eda('0x5'));var auth=require(_0x8eda('0x6'));var interaction=require(_0x8eda('0x7'));var config=require(_0x8eda('0x8'));var controller=require(_0x8eda('0x9'));router[_0x8eda('0xa')]('/',auth[_0x8eda('0xb')](),controller[_0x8eda('0xc')]);router[_0x8eda('0xa')]('/describe',auth[_0x8eda('0xb')](),controller[_0x8eda('0xd')]);router[_0x8eda('0xa')](_0x8eda('0xe'),auth['isAuthenticated'](),controller['show']);router['get']('/:id/members',auth[_0x8eda('0xb')](),controller[_0x8eda('0xf')]);router[_0x8eda('0xa')]('/:id/teams',auth[_0x8eda('0xb')](),controller['getTeams']);router[_0x8eda('0xa')](_0x8eda('0x10'),auth[_0x8eda('0xb')](),controller[_0x8eda('0x11')]);router[_0x8eda('0x12')]('/',auth[_0x8eda('0xb')](),controller[_0x8eda('0x13')]);router[_0x8eda('0x12')]('/:id/teams',auth['isAuthenticated'](),controller[_0x8eda('0x14')]);router[_0x8eda('0x12')]('/:id/users',auth[_0x8eda('0xb')](),controller[_0x8eda('0x15')]);router[_0x8eda('0x16')]('/:id',auth[_0x8eda('0xb')](),controller['update']);router[_0x8eda('0x17')]('/:id',auth[_0x8eda('0xb')](),controller['destroy']);router[_0x8eda('0x17')](_0x8eda('0x18'),auth['isAuthenticated'](),controller['removeTeams']);router[_0x8eda('0x17')](_0x8eda('0x10'),auth[_0x8eda('0xb')](),controller[_0x8eda('0x19')]);module[_0x8eda('0x1a')]=router;
\ No newline at end of file
index b6c3ef4..86bf297 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x273a=['STRING','DATE','exports'];(function(_0x498ed1,_0x20e53b){var _0x48f88d=function(_0x3b66f0){while(--_0x3b66f0){_0x498ed1['push'](_0x498ed1['shift']());}};_0x48f88d(++_0x20e53b);}(_0x273a,0xb6));var _0xa273=function(_0x4cfb90,_0x9135ca){_0x4cfb90=_0x4cfb90-0x0;var _0x4f37c9=_0x273a[_0x4cfb90];return _0x4f37c9;};'use strict';var moment=require('moment');var Sequelize=require('sequelize');module[_0xa273('0x0')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize[_0xa273('0x1')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0xa273('0x2')]},'acceptAt':{'type':Sequelize[_0xa273('0x2')]},'exitAt':{'type':Sequelize[_0xa273('0x2')]},'reason':{'type':Sequelize[_0xa273('0x1')]}};
\ No newline at end of file
+var _0x2690=['STRING','DATE','moment','sequelize','exports'];(function(_0x11d806,_0xd54265){var _0x524351=function(_0x70c6c3){while(--_0x70c6c3){_0x11d806['push'](_0x11d806['shift']());}};_0x524351(++_0xd54265);}(_0x2690,0xa7));var _0x0269=function(_0x2700d5,_0x1b113b){_0x2700d5=_0x2700d5-0x0;var _0xdc3338=_0x2690[_0x2700d5];return _0xdc3338;};'use strict';var moment=require(_0x0269('0x0'));var Sequelize=require(_0x0269('0x1'));module[_0x0269('0x2')]={'uniqueid':{'type':Sequelize[_0x0269('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0x0269('0x3')]},'joinAt':{'type':Sequelize[_0x0269('0x4')]},'leaveAt':{'type':Sequelize[_0x0269('0x4')]},'acceptAt':{'type':Sequelize[_0x0269('0x4')]},'exitAt':{'type':Sequelize[_0x0269('0x4')]},'reason':{'type':Sequelize[_0x0269('0x3')]}};
\ No newline at end of file
index ef369cb..6c7aeec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd136=['body','describe','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','end','error','name','index','map','FaxQueueReport','rawAttributes','type','key','query','filters','intersection','model','attributes','fields','length','nolimit','order','sort','where','pick','filter','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','keys','merge','find','create'];(function(_0x14a32b,_0x356d43){var _0x2b89a9=function(_0x13bc04){while(--_0x13bc04){_0x14a32b['push'](_0x14a32b['shift']());}};_0x2b89a9(++_0x356d43);}(_0xd136,0x94));var _0x6d13=function(_0x2f3c0e,_0x1b844a){_0x2f3c0e=_0x2f3c0e-0x0;var _0x46b864=_0xd136[_0x2f3c0e];return _0x46b864;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x6d13('0x0'));var zipdir=require(_0x6d13('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6d13('0x2'));var moment=require(_0x6d13('0x3'));var BPromise=require(_0x6d13('0x4'));var Mustache=require(_0x6d13('0x5'));var util=require(_0x6d13('0x6'));var path=require(_0x6d13('0x7'));var sox=require(_0x6d13('0x8'));var csv=require(_0x6d13('0x9'));var ejs=require(_0x6d13('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x6d13('0xb'));var squel=require(_0x6d13('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x6d13('0xd'));var toCsv=require(_0x6d13('0x9'));var querystring=require(_0x6d13('0xe'));var Papa=require(_0x6d13('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x6d13('0x10'));var as=require(_0x6d13('0x11'));var hardwareService=require(_0x6d13('0x12'));var logger=require('../../config/logger')('api');var utils=require(_0x6d13('0x13'));var config=require(_0x6d13('0x14'));var licenseUtil=require(_0x6d13('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1b4cc3,_0x5ef7e6){_0x5ef7e6=_0x5ef7e6||0xcc;return function(_0x37d3c1){if(_0x37d3c1){return _0x1b4cc3[_0x6d13('0x16')](_0x5ef7e6);}return _0x1b4cc3['status'](_0x5ef7e6)['end']();};}function respondWithResult(_0x4ca95d,_0x37efd8){_0x37efd8=_0x37efd8||0xc8;return function(_0x10709d){if(_0x10709d){return _0x4ca95d[_0x6d13('0x17')](_0x37efd8)[_0x6d13('0x18')](_0x10709d);}};}function respondWithFilteredResult(_0x2f4c2b,_0x4f1bdf){return function(_0xf27049){if(_0xf27049){var _0x405368=typeof _0x4f1bdf[_0x6d13('0x19')]===_0x6d13('0x1a')&&typeof _0x4f1bdf[_0x6d13('0x1b')]===_0x6d13('0x1a');var _0xb17857=_0xf27049[_0x6d13('0x1c')];var _0xc6c2b=_0x405368?0x0:_0x4f1bdf['offset'];var _0x276fdd=_0x405368?_0xf27049[_0x6d13('0x1c')]:_0x4f1bdf[_0x6d13('0x19')]+_0x4f1bdf[_0x6d13('0x1b')];var _0x1f3603;if(_0x276fdd>=_0xb17857){_0x276fdd=_0xb17857;_0x1f3603=0xc8;}else{_0x1f3603=0xce;}_0x2f4c2b[_0x6d13('0x17')](_0x1f3603);return _0x2f4c2b[_0x6d13('0x1d')](_0x6d13('0x1e'),_0xc6c2b+'-'+_0x276fdd+'/'+_0xb17857)[_0x6d13('0x18')](_0xf27049);}return null;};}function patchUpdates(_0x427bb8){return function(_0x40f629){try{jsonpatch[_0x6d13('0x1f')](_0x40f629,_0x427bb8,!![]);}catch(_0x18889d){return BPromise[_0x6d13('0x20')](_0x18889d);}return _0x40f629[_0x6d13('0x21')]();};}function saveUpdates(_0x208876,_0x5619fc){return function(_0x387de2){if(_0x387de2){return _0x387de2['update'](_0x208876)[_0x6d13('0x22')](function(_0x204438){return _0x204438;});}return null;};}function removeEntity(_0x151aa4,_0x5bbc9d){return function(_0x1b0f94){if(_0x1b0f94){return _0x1b0f94[_0x6d13('0x23')]()[_0x6d13('0x22')](function(){_0x151aa4[_0x6d13('0x17')](0xcc)[_0x6d13('0x24')]();});}};}function handleEntityNotFound(_0x361432,_0x66e464){return function(_0x821eea){if(!_0x821eea){_0x361432['sendStatus'](0x194);}return _0x821eea;};}function handleError(_0xacf472,_0x4f70e2){_0x4f70e2=_0x4f70e2||0x1f4;return function(_0x4c8526){logger[_0x6d13('0x25')](_0x4c8526['stack']);if(_0x4c8526[_0x6d13('0x26')]){delete _0x4c8526[_0x6d13('0x26')];}_0xacf472[_0x6d13('0x17')](_0x4f70e2)['send'](_0x4c8526);};}exports[_0x6d13('0x27')]=function(_0xd469b6,_0x573080){var _0x2fcdfd={},_0x1eda96={},_0xb82395={'count':0x0,'rows':[]};var _0x438e93=_[_0x6d13('0x28')](db[_0x6d13('0x29')][_0x6d13('0x2a')],function(_0x34abc4){return{'name':_0x34abc4['fieldName'],'type':_0x34abc4[_0x6d13('0x2b')][_0x6d13('0x2c')]};});_0x1eda96['model']=_[_0x6d13('0x28')](_0x438e93,_0x6d13('0x26'));_0x1eda96[_0x6d13('0x2d')]=_['keys'](_0xd469b6[_0x6d13('0x2d')]);_0x1eda96[_0x6d13('0x2e')]=_[_0x6d13('0x2f')](_0x1eda96[_0x6d13('0x30')],_0x1eda96[_0x6d13('0x2d')]);_0x2fcdfd[_0x6d13('0x31')]=_[_0x6d13('0x2f')](_0x1eda96['model'],qs[_0x6d13('0x32')](_0xd469b6['query'][_0x6d13('0x32')]));_0x2fcdfd[_0x6d13('0x31')]=_0x2fcdfd[_0x6d13('0x31')][_0x6d13('0x33')]?_0x2fcdfd[_0x6d13('0x31')]:_0x1eda96[_0x6d13('0x30')];if(!_0xd469b6['query']['hasOwnProperty'](_0x6d13('0x34'))){_0x2fcdfd[_0x6d13('0x1b')]=qs[_0x6d13('0x1b')](_0xd469b6[_0x6d13('0x2d')][_0x6d13('0x1b')]);_0x2fcdfd[_0x6d13('0x19')]=qs['offset'](_0xd469b6[_0x6d13('0x2d')][_0x6d13('0x19')]);}_0x2fcdfd[_0x6d13('0x35')]=qs[_0x6d13('0x36')](_0xd469b6[_0x6d13('0x2d')][_0x6d13('0x36')]);_0x2fcdfd[_0x6d13('0x37')]=qs[_0x6d13('0x2e')](_[_0x6d13('0x38')](_0xd469b6[_0x6d13('0x2d')],_0x1eda96['filters']),_0x438e93);if(_0xd469b6['query'][_0x6d13('0x39')]){_0x2fcdfd['where']=_['merge'](_0x2fcdfd[_0x6d13('0x37')],{'$or':_[_0x6d13('0x28')](_0x438e93,function(_0xba5453){if(_0xba5453['type']!==_0x6d13('0x3a')){var _0x3c5b61={};_0x3c5b61[_0xba5453[_0x6d13('0x26')]]={'$like':'%'+_0xd469b6['query'][_0x6d13('0x39')]+'%'};return _0x3c5b61;}})});}_0x2fcdfd=_['merge']({},_0x2fcdfd,_0xd469b6[_0x6d13('0x3b')]);var _0x4d2bdd={'where':_0x2fcdfd['where']};return db[_0x6d13('0x29')][_0x6d13('0x1c')](_0x4d2bdd)['then'](function(_0x4c31fe){_0xb82395[_0x6d13('0x1c')]=_0x4c31fe;if(_0xd469b6[_0x6d13('0x2d')][_0x6d13('0x3c')]){_0x2fcdfd[_0x6d13('0x3d')]=[{'all':!![]}];}return db['FaxQueueReport'][_0x6d13('0x3e')](_0x2fcdfd);})[_0x6d13('0x22')](function(_0x4b4cc5){_0xb82395[_0x6d13('0x3f')]=_0x4b4cc5;return _0xb82395;})[_0x6d13('0x22')](respondWithFilteredResult(_0x573080,_0x2fcdfd))[_0x6d13('0x40')](handleError(_0x573080,null));};exports[_0x6d13('0x41')]=function(_0x19456c,_0x112bfd){var _0x289170={'raw':!![],'where':{'id':_0x19456c[_0x6d13('0x42')]['id']}},_0x5f1238={};_0x5f1238[_0x6d13('0x30')]=_[_0x6d13('0x43')](db[_0x6d13('0x29')][_0x6d13('0x2a')]);_0x5f1238[_0x6d13('0x2d')]=_[_0x6d13('0x43')](_0x19456c['query']);_0x5f1238[_0x6d13('0x2e')]=_['intersection'](_0x5f1238[_0x6d13('0x30')],_0x5f1238[_0x6d13('0x2d')]);_0x289170[_0x6d13('0x31')]=_[_0x6d13('0x2f')](_0x5f1238[_0x6d13('0x30')],qs[_0x6d13('0x32')](_0x19456c[_0x6d13('0x2d')][_0x6d13('0x32')]));_0x289170['attributes']=_0x289170[_0x6d13('0x31')]['length']?_0x289170[_0x6d13('0x31')]:_0x5f1238[_0x6d13('0x30')];if(_0x19456c[_0x6d13('0x2d')][_0x6d13('0x3c')]){_0x289170[_0x6d13('0x3d')]=[{'all':!![]}];}_0x289170=_[_0x6d13('0x44')]({},_0x289170,_0x19456c[_0x6d13('0x3b')]);return db[_0x6d13('0x29')][_0x6d13('0x45')](_0x289170)[_0x6d13('0x22')](handleEntityNotFound(_0x112bfd,null))[_0x6d13('0x22')](respondWithResult(_0x112bfd,null))['catch'](handleError(_0x112bfd,null));};exports[_0x6d13('0x46')]=function(_0x3f6821,_0x3ae25c){return db['FaxQueueReport']['create'](_0x3f6821[_0x6d13('0x47')],{})[_0x6d13('0x22')](respondWithResult(_0x3ae25c,0xc9))[_0x6d13('0x40')](handleError(_0x3ae25c,null));};exports['update']=function(_0x3ac978,_0x31872b){if(_0x3ac978[_0x6d13('0x47')]['id']){delete _0x3ac978['body']['id'];}return db[_0x6d13('0x29')][_0x6d13('0x45')]({'where':{'id':_0x3ac978['params']['id']}})['then'](handleEntityNotFound(_0x31872b,null))[_0x6d13('0x22')](saveUpdates(_0x3ac978[_0x6d13('0x47')],null))[_0x6d13('0x22')](respondWithResult(_0x31872b,null))[_0x6d13('0x40')](handleError(_0x31872b,null));};exports[_0x6d13('0x23')]=function(_0x3d3244,_0x5037a3){return db['FaxQueueReport'][_0x6d13('0x45')]({'where':{'id':_0x3d3244[_0x6d13('0x42')]['id']}})[_0x6d13('0x22')](handleEntityNotFound(_0x5037a3,null))[_0x6d13('0x22')](removeEntity(_0x5037a3,null))[_0x6d13('0x40')](handleError(_0x5037a3,null));};exports['describe']=function(_0x1bb289,_0x48ea56){return db[_0x6d13('0x29')][_0x6d13('0x48')]()[_0x6d13('0x22')](respondWithResult(_0x48ea56,null))['catch'](handleError(_0x48ea56,null));};
\ No newline at end of file
+var _0x76a3=['filters','intersection','fields','attributes','hasOwnProperty','order','sort','where','pick','filter','VIRTUAL','merge','FaxQueueReport','includeAll','include','rows','catch','show','params','keys','length','options','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','ejs','fs-extra','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','json','undefined','limit','count','offset','set','Content-Range','reject','save','update','then','name','send','index','map','rawAttributes','fieldName','key','model','query'];(function(_0x508a0a,_0x5c01f0){var _0x239daa=function(_0x1d24d1){while(--_0x1d24d1){_0x508a0a['push'](_0x508a0a['shift']());}};_0x239daa(++_0x5c01f0);}(_0x76a3,0xf8));var _0x376a=function(_0x55ff3e,_0x41077f){_0x55ff3e=_0x55ff3e-0x0;var _0x2709eb=_0x76a3[_0x55ff3e];return _0x2709eb;};'use strict';var emlformat=require(_0x376a('0x0'));var rimraf=require(_0x376a('0x1'));var zipdir=require(_0x376a('0x2'));var jsonpatch=require(_0x376a('0x3'));var rp=require(_0x376a('0x4'));var moment=require(_0x376a('0x5'));var BPromise=require(_0x376a('0x6'));var Mustache=require(_0x376a('0x7'));var util=require(_0x376a('0x8'));var path=require(_0x376a('0x9'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x376a('0xa'));var fs=require('fs');var fs_extra=require(_0x376a('0xb'));var _=require(_0x376a('0xc'));var squel=require(_0x376a('0xd'));var crypto=require('crypto');var jsforce=require(_0x376a('0xe'));var deskjs=require(_0x376a('0xf'));var toCsv=require(_0x376a('0x10'));var querystring=require(_0x376a('0x11'));var Papa=require(_0x376a('0x12'));var Redis=require(_0x376a('0x13'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x376a('0x14'));var logger=require(_0x376a('0x15'))('api');var utils=require(_0x376a('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x376a('0x17'));var db=require(_0x376a('0x18'))['db'];function respondWithStatusCode(_0x4c643c,_0x448f95){_0x448f95=_0x448f95||0xcc;return function(_0x1c023e){if(_0x1c023e){return _0x4c643c[_0x376a('0x19')](_0x448f95);}return _0x4c643c['status'](_0x448f95)[_0x376a('0x1a')]();};}function respondWithResult(_0x541d34,_0x33ad40){_0x33ad40=_0x33ad40||0xc8;return function(_0x457027){if(_0x457027){return _0x541d34[_0x376a('0x1b')](_0x33ad40)[_0x376a('0x1c')](_0x457027);}};}function respondWithFilteredResult(_0x3c43a0,_0x1747f2){return function(_0x3f5409){if(_0x3f5409){var _0x2ec88c=typeof _0x1747f2['offset']===_0x376a('0x1d')&&typeof _0x1747f2[_0x376a('0x1e')]==='undefined';var _0x2a3c5b=_0x3f5409[_0x376a('0x1f')];var _0x2dff31=_0x2ec88c?0x0:_0x1747f2[_0x376a('0x20')];var _0x2519d4=_0x2ec88c?_0x3f5409[_0x376a('0x1f')]:_0x1747f2[_0x376a('0x20')]+_0x1747f2['limit'];var _0x3ed990;if(_0x2519d4>=_0x2a3c5b){_0x2519d4=_0x2a3c5b;_0x3ed990=0xc8;}else{_0x3ed990=0xce;}_0x3c43a0['status'](_0x3ed990);return _0x3c43a0[_0x376a('0x21')](_0x376a('0x22'),_0x2dff31+'-'+_0x2519d4+'/'+_0x2a3c5b)[_0x376a('0x1c')](_0x3f5409);}return null;};}function patchUpdates(_0xd9f03a){return function(_0x3220a6){try{jsonpatch['apply'](_0x3220a6,_0xd9f03a,!![]);}catch(_0x25d295){return BPromise[_0x376a('0x23')](_0x25d295);}return _0x3220a6[_0x376a('0x24')]();};}function saveUpdates(_0x579104,_0x4adf3d){return function(_0x3159b6){if(_0x3159b6){return _0x3159b6[_0x376a('0x25')](_0x579104)['then'](function(_0x98205d){return _0x98205d;});}return null;};}function removeEntity(_0x2b1a35,_0x44b960){return function(_0x12f812){if(_0x12f812){return _0x12f812['destroy']()[_0x376a('0x26')](function(){_0x2b1a35[_0x376a('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1dd8ac,_0x146c7c){return function(_0x34338a){if(!_0x34338a){_0x1dd8ac[_0x376a('0x19')](0x194);}return _0x34338a;};}function handleError(_0x2247ca,_0x412f64){_0x412f64=_0x412f64||0x1f4;return function(_0x581c2b){logger['error'](_0x581c2b['stack']);if(_0x581c2b[_0x376a('0x27')]){delete _0x581c2b[_0x376a('0x27')];}_0x2247ca[_0x376a('0x1b')](_0x412f64)[_0x376a('0x28')](_0x581c2b);};}exports[_0x376a('0x29')]=function(_0x54d340,_0x46cb76){var _0x1ca79f={},_0x56d0b9={},_0x510a3f={'count':0x0,'rows':[]};var _0x3103c3=_[_0x376a('0x2a')](db['FaxQueueReport'][_0x376a('0x2b')],function(_0x47f3dd){return{'name':_0x47f3dd[_0x376a('0x2c')],'type':_0x47f3dd['type'][_0x376a('0x2d')]};});_0x56d0b9[_0x376a('0x2e')]=_[_0x376a('0x2a')](_0x3103c3,'name');_0x56d0b9[_0x376a('0x2f')]=_['keys'](_0x54d340['query']);_0x56d0b9[_0x376a('0x30')]=_[_0x376a('0x31')](_0x56d0b9['model'],_0x56d0b9[_0x376a('0x2f')]);_0x1ca79f['attributes']=_[_0x376a('0x31')](_0x56d0b9['model'],qs[_0x376a('0x32')](_0x54d340[_0x376a('0x2f')]['fields']));_0x1ca79f[_0x376a('0x33')]=_0x1ca79f[_0x376a('0x33')]['length']?_0x1ca79f[_0x376a('0x33')]:_0x56d0b9[_0x376a('0x2e')];if(!_0x54d340[_0x376a('0x2f')][_0x376a('0x34')]('nolimit')){_0x1ca79f[_0x376a('0x1e')]=qs[_0x376a('0x1e')](_0x54d340['query'][_0x376a('0x1e')]);_0x1ca79f['offset']=qs[_0x376a('0x20')](_0x54d340[_0x376a('0x2f')][_0x376a('0x20')]);}_0x1ca79f[_0x376a('0x35')]=qs[_0x376a('0x36')](_0x54d340[_0x376a('0x2f')]['sort']);_0x1ca79f[_0x376a('0x37')]=qs['filters'](_[_0x376a('0x38')](_0x54d340[_0x376a('0x2f')],_0x56d0b9[_0x376a('0x30')]),_0x3103c3);if(_0x54d340[_0x376a('0x2f')][_0x376a('0x39')]){_0x1ca79f[_0x376a('0x37')]=_['merge'](_0x1ca79f[_0x376a('0x37')],{'$or':_['map'](_0x3103c3,function(_0x16d419){if(_0x16d419['type']!==_0x376a('0x3a')){var _0x557f92={};_0x557f92[_0x16d419[_0x376a('0x27')]]={'$like':'%'+_0x54d340['query'][_0x376a('0x39')]+'%'};return _0x557f92;}})});}_0x1ca79f=_[_0x376a('0x3b')]({},_0x1ca79f,_0x54d340['options']);var _0x4c48ed={'where':_0x1ca79f['where']};return db[_0x376a('0x3c')][_0x376a('0x1f')](_0x4c48ed)[_0x376a('0x26')](function(_0x57116d){_0x510a3f[_0x376a('0x1f')]=_0x57116d;if(_0x54d340[_0x376a('0x2f')][_0x376a('0x3d')]){_0x1ca79f[_0x376a('0x3e')]=[{'all':!![]}];}return db[_0x376a('0x3c')]['findAll'](_0x1ca79f);})[_0x376a('0x26')](function(_0x268a39){_0x510a3f[_0x376a('0x3f')]=_0x268a39;return _0x510a3f;})[_0x376a('0x26')](respondWithFilteredResult(_0x46cb76,_0x1ca79f))[_0x376a('0x40')](handleError(_0x46cb76,null));};exports[_0x376a('0x41')]=function(_0x37d1ef,_0xacf246){var _0x113c11={'raw':!![],'where':{'id':_0x37d1ef[_0x376a('0x42')]['id']}},_0x356727={};_0x356727[_0x376a('0x2e')]=_[_0x376a('0x43')](db[_0x376a('0x3c')][_0x376a('0x2b')]);_0x356727[_0x376a('0x2f')]=_[_0x376a('0x43')](_0x37d1ef[_0x376a('0x2f')]);_0x356727[_0x376a('0x30')]=_[_0x376a('0x31')](_0x356727[_0x376a('0x2e')],_0x356727[_0x376a('0x2f')]);_0x113c11[_0x376a('0x33')]=_['intersection'](_0x356727['model'],qs[_0x376a('0x32')](_0x37d1ef[_0x376a('0x2f')][_0x376a('0x32')]));_0x113c11[_0x376a('0x33')]=_0x113c11[_0x376a('0x33')][_0x376a('0x44')]?_0x113c11[_0x376a('0x33')]:_0x356727['model'];if(_0x37d1ef[_0x376a('0x2f')]['includeAll']){_0x113c11[_0x376a('0x3e')]=[{'all':!![]}];}_0x113c11=_['merge']({},_0x113c11,_0x37d1ef[_0x376a('0x45')]);return db[_0x376a('0x3c')][_0x376a('0x46')](_0x113c11)['then'](handleEntityNotFound(_0xacf246,null))[_0x376a('0x26')](respondWithResult(_0xacf246,null))[_0x376a('0x40')](handleError(_0xacf246,null));};exports['create']=function(_0x3ed038,_0x5f083e){return db[_0x376a('0x3c')][_0x376a('0x47')](_0x3ed038[_0x376a('0x48')],{})[_0x376a('0x26')](respondWithResult(_0x5f083e,0xc9))[_0x376a('0x40')](handleError(_0x5f083e,null));};exports['update']=function(_0x2024bc,_0xb381db){if(_0x2024bc[_0x376a('0x48')]['id']){delete _0x2024bc['body']['id'];}return db['FaxQueueReport'][_0x376a('0x46')]({'where':{'id':_0x2024bc[_0x376a('0x42')]['id']}})[_0x376a('0x26')](handleEntityNotFound(_0xb381db,null))[_0x376a('0x26')](saveUpdates(_0x2024bc['body'],null))['then'](respondWithResult(_0xb381db,null))['catch'](handleError(_0xb381db,null));};exports['destroy']=function(_0x4cf7e0,_0x2329a7){return db[_0x376a('0x3c')][_0x376a('0x46')]({'where':{'id':_0x4cf7e0[_0x376a('0x42')]['id']}})['then'](handleEntityNotFound(_0x2329a7,null))[_0x376a('0x26')](removeEntity(_0x2329a7,null))[_0x376a('0x40')](handleError(_0x2329a7,null));};exports[_0x376a('0x49')]=function(_0x54d2c6,_0x403178){return db[_0x376a('0x3c')]['describe']()[_0x376a('0x26')](respondWithResult(_0x403178,null))['catch'](handleError(_0x403178,null));};
\ No newline at end of file
index 4c29fdd..9eafbd0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x814b=['../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./faxQueueReport.attributes','exports','define','FaxQueueReport','uniqueid','lodash','util'];(function(_0x49c057,_0xc808ed){var _0xd8f0e6=function(_0x5b9042){while(--_0x5b9042){_0x49c057['push'](_0x49c057['shift']());}};_0xd8f0e6(++_0xc808ed);}(_0x814b,0x1a2));var _0xb814=function(_0x4e0eb6,_0x240784){_0x4e0eb6=_0x4e0eb6-0x0;var _0x46e432=_0x814b[_0x4e0eb6];return _0x46e432;};'use strict';var _=require(_0xb814('0x0'));var util=require(_0xb814('0x1'));var logger=require(_0xb814('0x2'))(_0xb814('0x3'));var moment=require(_0xb814('0x4'));var BPromise=require(_0xb814('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xb814('0x6'));var rimraf=require(_0xb814('0x7'));var config=require(_0xb814('0x8'));var attributes=require(_0xb814('0x9'));module[_0xb814('0xa')]=function(_0x322a70,_0x53e507){return _0x322a70[_0xb814('0xb')](_0xb814('0xc'),attributes,{'tableName':'report_fax_queue','paranoid':![],'indexes':[{'name':_0xb814('0xd'),'fields':[_0xb814('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x7fbe=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./faxQueueReport.attributes','exports','define','FaxQueueReport','uniqueid','../../config/logger','api'];(function(_0xc76034,_0xefb0b9){var _0x26dd5e=function(_0x18b56f){while(--_0x18b56f){_0xc76034['push'](_0xc76034['shift']());}};_0x26dd5e(++_0xefb0b9);}(_0x7fbe,0x1ec));var _0xe7fb=function(_0x35bd6c,_0x585087){_0x35bd6c=_0x35bd6c-0x0;var _0x2f421d=_0x7fbe[_0x35bd6c];return _0x2f421d;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xe7fb('0x0'))(_0xe7fb('0x1'));var moment=require(_0xe7fb('0x2'));var BPromise=require(_0xe7fb('0x3'));var rp=require(_0xe7fb('0x4'));var fs=require('fs');var path=require(_0xe7fb('0x5'));var rimraf=require(_0xe7fb('0x6'));var config=require(_0xe7fb('0x7'));var attributes=require(_0xe7fb('0x8'));module[_0xe7fb('0x9')]=function(_0x290172,_0x12d1b0){return _0x290172[_0xe7fb('0xa')](_0xe7fb('0xb'),attributes,{'tableName':'report_fax_queue','paranoid':![],'indexes':[{'name':_0xe7fb('0xc'),'fields':[_0xe7fb('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index b06561b..fc46163 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x658f=['stringify','error','message','result','catch','CreateFaxQueueReport','FaxQueueReport','options','raw','UpdateFaxQueueReport','body','attributes','limit','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','then','info','FaxQueueReport,\x20%s,\x20%s','request\x20sent','debug','FaxQueueReport,\x20%s,\x20%s,\x20%s'];(function(_0x3cde56,_0x27ff34){var _0x1688d3=function(_0x6c6c81){while(--_0x6c6c81){_0x3cde56['push'](_0x3cde56['shift']());}};_0x1688d3(++_0x27ff34);}(_0x658f,0x112));var _0xf658=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x658f[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xf658('0x0'));var util=require(_0xf658('0x1'));var moment=require('moment');var BPromise=require(_0xf658('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf658('0x3'));var db=require(_0xf658('0x4'))['db'];var utils=require(_0xf658('0x5'));var logger=require(_0xf658('0x6'))('rpc');var config=require(_0xf658('0x7'));var jayson=require(_0xf658('0x8'));var client=jayson['client'][_0xf658('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x17823b,_0x5141e9,_0x346790){return new BPromise(function(_0x1b0e02,_0x5c2ce4){return client['request'](_0x17823b,_0x346790)[_0xf658('0xa')](function(_0x337dd1){logger[_0xf658('0xb')](_0xf658('0xc'),_0x5141e9,_0xf658('0xd'));logger[_0xf658('0xe')](_0xf658('0xf'),_0x5141e9,_0xf658('0xd'),JSON[_0xf658('0x10')](_0x337dd1));if(_0x337dd1[_0xf658('0x11')]){if(_0x337dd1[_0xf658('0x11')]['code']===0x1f4){logger[_0xf658('0x11')](_0xf658('0xc'),_0x5141e9,_0x337dd1[_0xf658('0x11')][_0xf658('0x12')]);return _0x5c2ce4(_0x337dd1[_0xf658('0x11')][_0xf658('0x12')]);}logger[_0xf658('0x11')](_0xf658('0xc'),_0x5141e9,_0x337dd1[_0xf658('0x11')][_0xf658('0x12')]);return _0x1b0e02(_0x337dd1[_0xf658('0x11')]['message']);}else{logger[_0xf658('0xb')](_0xf658('0xc'),_0x5141e9,'request\x20sent');_0x1b0e02(_0x337dd1[_0xf658('0x13')]['message']);}})[_0xf658('0x14')](function(_0x170c67){logger[_0xf658('0x11')](_0xf658('0xc'),_0x5141e9,_0x170c67);_0x5c2ce4(_0x170c67);});});}exports[_0xf658('0x15')]=function(_0xa02387){var _0x445029=this;return new Promise(function(_0x3d6375,_0x2cd1c9){return db[_0xf658('0x16')]['create'](_0xa02387['body'],{'raw':_0xa02387[_0xf658('0x17')]?_0xa02387[_0xf658('0x17')][_0xf658('0x18')]===undefined?!![]:![]:!![]})['then'](function(_0x44c13b){logger[_0xf658('0xb')](_0xf658('0x15'),_0xa02387);logger[_0xf658('0xe')](_0xf658('0x15'),_0xa02387,JSON[_0xf658('0x10')](_0x44c13b));_0x3d6375(_0x44c13b);})[_0xf658('0x14')](function(_0x5733f4){logger['error'](_0xf658('0x15'),_0x5733f4[_0xf658('0x12')],_0xa02387);_0x2cd1c9(_0x445029['error'](0x1f4,_0x5733f4[_0xf658('0x12')]));});});};exports[_0xf658('0x19')]=function(_0x35f830){var _0x54aa7a=this;return new Promise(function(_0x5e4f91,_0x2e55a7){return db[_0xf658('0x16')]['update'](_0x35f830[_0xf658('0x1a')],{'raw':_0x35f830[_0xf658('0x17')]?_0x35f830[_0xf658('0x17')][_0xf658('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x35f830[_0xf658('0x17')]?_0x35f830['options']['where']||null:null,'attributes':_0x35f830[_0xf658('0x17')]?_0x35f830[_0xf658('0x17')][_0xf658('0x1b')]||null:null,'limit':_0x35f830['options']?_0x35f830['options'][_0xf658('0x1c')]||null:null})[_0xf658('0xa')](function(_0x4447ba){logger[_0xf658('0xb')](_0xf658('0x19'),_0x35f830);logger[_0xf658('0xe')](_0xf658('0x19'),_0x35f830,JSON[_0xf658('0x10')](_0x4447ba));_0x5e4f91(_0x4447ba);})[_0xf658('0x14')](function(_0x3e0a8a){logger[_0xf658('0x11')](_0xf658('0x19'),_0x3e0a8a['message'],_0x35f830);_0x2e55a7(_0x54aa7a[_0xf658('0x11')](0x1f4,_0x3e0a8a[_0xf658('0x12')]));});});};
\ No newline at end of file
+var _0x1ba2=['options','catch','UpdateFaxQueueReport','update','raw','where','limit','lodash','moment','bluebird','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','request','then','info','FaxQueueReport,\x20%s,\x20%s','debug','FaxQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','message','request\x20sent','result','CreateFaxQueueReport','FaxQueueReport','create','body'];(function(_0x3b98c0,_0x1a54b1){var _0x513eea=function(_0x37d8f5){while(--_0x37d8f5){_0x3b98c0['push'](_0x3b98c0['shift']());}};_0x513eea(++_0x1a54b1);}(_0x1ba2,0xe0));var _0x21ba=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1ba2[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x21ba('0x0'));var util=require('util');var moment=require(_0x21ba('0x1'));var BPromise=require(_0x21ba('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x21ba('0x3'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x21ba('0x4'));var config=require(_0x21ba('0x5'));var jayson=require(_0x21ba('0x6'));var client=jayson[_0x21ba('0x7')][_0x21ba('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1fb85f,_0x23a3ac,_0x1d0a9a){return new BPromise(function(_0x157984,_0x338ebf){return client[_0x21ba('0x9')](_0x1fb85f,_0x1d0a9a)[_0x21ba('0xa')](function(_0x5c17a4){logger[_0x21ba('0xb')](_0x21ba('0xc'),_0x23a3ac,'request\x20sent');logger[_0x21ba('0xd')](_0x21ba('0xe'),_0x23a3ac,'request\x20sent',JSON[_0x21ba('0xf')](_0x5c17a4));if(_0x5c17a4[_0x21ba('0x10')]){if(_0x5c17a4[_0x21ba('0x10')]['code']===0x1f4){logger['error'](_0x21ba('0xc'),_0x23a3ac,_0x5c17a4[_0x21ba('0x10')][_0x21ba('0x11')]);return _0x338ebf(_0x5c17a4[_0x21ba('0x10')][_0x21ba('0x11')]);}logger[_0x21ba('0x10')](_0x21ba('0xc'),_0x23a3ac,_0x5c17a4[_0x21ba('0x10')][_0x21ba('0x11')]);return _0x157984(_0x5c17a4['error'][_0x21ba('0x11')]);}else{logger['info']('FaxQueueReport,\x20%s,\x20%s',_0x23a3ac,_0x21ba('0x12'));_0x157984(_0x5c17a4[_0x21ba('0x13')][_0x21ba('0x11')]);}})['catch'](function(_0x57b945){logger[_0x21ba('0x10')](_0x21ba('0xc'),_0x23a3ac,_0x57b945);_0x338ebf(_0x57b945);});});}exports[_0x21ba('0x14')]=function(_0xe64ad4){var _0x123014=this;return new Promise(function(_0x42d46a,_0x11e680){return db[_0x21ba('0x15')][_0x21ba('0x16')](_0xe64ad4[_0x21ba('0x17')],{'raw':_0xe64ad4[_0x21ba('0x18')]?_0xe64ad4['options']['raw']===undefined?!![]:![]:!![]})[_0x21ba('0xa')](function(_0x1822b5){logger['info'](_0x21ba('0x14'),_0xe64ad4);logger[_0x21ba('0xd')](_0x21ba('0x14'),_0xe64ad4,JSON[_0x21ba('0xf')](_0x1822b5));_0x42d46a(_0x1822b5);})[_0x21ba('0x19')](function(_0x2832aa){logger[_0x21ba('0x10')]('CreateFaxQueueReport',_0x2832aa[_0x21ba('0x11')],_0xe64ad4);_0x11e680(_0x123014[_0x21ba('0x10')](0x1f4,_0x2832aa[_0x21ba('0x11')]));});});};exports[_0x21ba('0x1a')]=function(_0x3c8f0f){var _0x1d81ec=this;return new Promise(function(_0x34474c,_0x523009){return db[_0x21ba('0x15')][_0x21ba('0x1b')](_0x3c8f0f[_0x21ba('0x17')],{'raw':_0x3c8f0f['options']?_0x3c8f0f[_0x21ba('0x18')][_0x21ba('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3c8f0f[_0x21ba('0x18')]?_0x3c8f0f['options'][_0x21ba('0x1d')]||null:null,'attributes':_0x3c8f0f[_0x21ba('0x18')]?_0x3c8f0f['options']['attributes']||null:null,'limit':_0x3c8f0f[_0x21ba('0x18')]?_0x3c8f0f['options'][_0x21ba('0x1e')]||null:null})['then'](function(_0x52ad4a){logger[_0x21ba('0xb')](_0x21ba('0x1a'),_0x3c8f0f);logger[_0x21ba('0xd')](_0x21ba('0x1a'),_0x3c8f0f,JSON[_0x21ba('0xf')](_0x52ad4a));_0x34474c(_0x52ad4a);})[_0x21ba('0x19')](function(_0x3e03c3){logger['error']('UpdateFaxQueueReport',_0x3e03c3[_0x21ba('0x11')],_0x3c8f0f);_0x523009(_0x1d81ec[_0x21ba('0x10')](0x1f4,_0x3e03c3[_0x21ba('0x11')]));});});};
\ No newline at end of file
index a2f5b24..91b900a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x574a=['fs-extra','./faxQueueReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router'];(function(_0x1af19d,_0x33d24a){var _0x5c0d1d=function(_0x261ff2){while(--_0x261ff2){_0x1af19d['push'](_0x1af19d['shift']());}};_0x5c0d1d(++_0x33d24a);}(_0x574a,0x118));var _0xa574=function(_0x50c50b,_0x3a6fb3){_0x50c50b=_0x50c50b-0x0;var _0x423c29=_0x574a[_0x50c50b];return _0x423c29;};'use strict';var multer=require(_0xa574('0x0'));var util=require(_0xa574('0x1'));var path=require(_0xa574('0x2'));var timeout=require(_0xa574('0x3'));var express=require(_0xa574('0x4'));var router=express[_0xa574('0x5')]();var fs_extra=require(_0xa574('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xa574('0x7'));router[_0xa574('0x8')]('/',auth[_0xa574('0x9')](),controller[_0xa574('0xa')]);router[_0xa574('0x8')](_0xa574('0xb'),auth[_0xa574('0x9')](),controller[_0xa574('0xc')]);router[_0xa574('0x8')](_0xa574('0xd'),auth['isAuthenticated'](),controller[_0xa574('0xe')]);router[_0xa574('0xf')]('/',auth[_0xa574('0x9')](),controller[_0xa574('0x10')]);router[_0xa574('0x11')](_0xa574('0xd'),auth[_0xa574('0x9')](),controller[_0xa574('0x12')]);router[_0xa574('0x13')]('/:id',auth[_0xa574('0x9')](),controller[_0xa574('0x14')]);module[_0xa574('0x15')]=router;
\ No newline at end of file
+var _0x8ccf=['Router','../../config/environment','./faxQueueReport.controller','get','index','/describe','isAuthenticated','describe','/:id','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x8ccf,0xf7));var _0xf8cc=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x8ccf[_0x3b380d];return _0x54502b;};'use strict';var multer=require(_0xf8cc('0x0'));var util=require(_0xf8cc('0x1'));var path=require(_0xf8cc('0x2'));var timeout=require(_0xf8cc('0x3'));var express=require(_0xf8cc('0x4'));var router=express[_0xf8cc('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xf8cc('0x6'));var controller=require(_0xf8cc('0x7'));router[_0xf8cc('0x8')]('/',auth['isAuthenticated'](),controller[_0xf8cc('0x9')]);router[_0xf8cc('0x8')](_0xf8cc('0xa'),auth[_0xf8cc('0xb')](),controller[_0xf8cc('0xc')]);router['get'](_0xf8cc('0xd'),auth['isAuthenticated'](),controller['show']);router[_0xf8cc('0xe')]('/',auth['isAuthenticated'](),controller[_0xf8cc('0xf')]);router[_0xf8cc('0x10')](_0xf8cc('0xd'),auth['isAuthenticated'](),controller[_0xf8cc('0x11')]);router[_0xf8cc('0x12')](_0xf8cc('0xd'),auth[_0xf8cc('0xb')](),controller[_0xf8cc('0x13')]);module[_0xf8cc('0x14')]=router;
\ No newline at end of file
index fe7e919..2d476fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9bde=['NOW','sequelize','STRING','account','agent','queue','DATE'];(function(_0xa4c85,_0x2b52a7){var _0x172c1f=function(_0x149473){while(--_0x149473){_0xa4c85['push'](_0xa4c85['shift']());}};_0x172c1f(++_0x2b52a7);}(_0x9bde,0xe1));var _0xe9bd=function(_0x1677e9,_0x26d0ac){_0x1677e9=_0x1677e9-0x0;var _0x4bdac8=_0x9bde[_0x1677e9];return _0x4bdac8;};'use strict';var moment=require('moment');var Sequelize=require(_0xe9bd('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0xe9bd('0x1')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0xe9bd('0x2'),_0xe9bd('0x3'),_0xe9bd('0x4')),'allowNull':![],'defaultValue':_0xe9bd('0x4')},'transferredAt':{'type':Sequelize[_0xe9bd('0x5')],'allowNull':![],'defaultValue':Sequelize[_0xe9bd('0x6')]}};
\ No newline at end of file
+var _0xedd9=['account','agent','queue','NOW','sequelize','exports','STRING','ENUM'];(function(_0x48bc53,_0x133f6c){var _0x44ba60=function(_0x531abd){while(--_0x531abd){_0x48bc53['push'](_0x48bc53['shift']());}};_0x44ba60(++_0x133f6c);}(_0xedd9,0xfc));var _0x9edd=function(_0x491eed,_0x15d6e2){_0x491eed=_0x491eed-0x0;var _0x13652f=_0xedd9[_0x491eed];return _0x13652f;};'use strict';var moment=require('moment');var Sequelize=require(_0x9edd('0x0'));module[_0x9edd('0x1')]={'uniqueid':{'type':Sequelize[_0x9edd('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x9edd('0x3')](_0x9edd('0x4'),_0x9edd('0x5'),_0x9edd('0x6')),'allowNull':![],'defaultValue':_0x9edd('0x6')},'transferredAt':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':Sequelize[_0x9edd('0x7')]}};
\ No newline at end of file
index 25475d9..1293afa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x236a=['show','params','find','create','body','describe','fast-json-patch','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','api','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','reject','update','then','destroy','error','stack','name','send','index','map','FaxTransferReport','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','include','rows','catch'];(function(_0x4fb625,_0x2676f9){var _0x4fbf74=function(_0x79c300){while(--_0x79c300){_0x4fb625['push'](_0x4fb625['shift']());}};_0x4fbf74(++_0x2676f9);}(_0x236a,0x96));var _0xa236=function(_0x3bb8c3,_0x5153b7){_0x3bb8c3=_0x3bb8c3-0x0;var _0x4e0ba7=_0x236a[_0x3bb8c3];return _0x4e0ba7;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xa236('0x0'));var rp=require(_0xa236('0x1'));var moment=require(_0xa236('0x2'));var BPromise=require(_0xa236('0x3'));var Mustache=require(_0xa236('0x4'));var util=require(_0xa236('0x5'));var path=require(_0xa236('0x6'));var sox=require('sox');var csv=require(_0xa236('0x7'));var ejs=require(_0xa236('0x8'));var fs=require('fs');var fs_extra=require(_0xa236('0x9'));var _=require(_0xa236('0xa'));var squel=require(_0xa236('0xb'));var crypto=require('crypto');var jsforce=require(_0xa236('0xc'));var deskjs=require(_0xa236('0xd'));var toCsv=require('to-csv');var querystring=require(_0xa236('0xe'));var Papa=require(_0xa236('0xf'));var Redis=require(_0xa236('0x10'));var authService=require(_0xa236('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xa236('0x12'));var hardwareService=require(_0xa236('0x13'));var logger=require(_0xa236('0x14'))(_0xa236('0x15'));var utils=require('../../config/utils');var config=require(_0xa236('0x16'));var licenseUtil=require(_0xa236('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x59f68f,_0x27b11e){_0x27b11e=_0x27b11e||0xcc;return function(_0x13acec){if(_0x13acec){return _0x59f68f[_0xa236('0x18')](_0x27b11e);}return _0x59f68f[_0xa236('0x19')](_0x27b11e)[_0xa236('0x1a')]();};}function respondWithResult(_0x1623f8,_0x7dd780){_0x7dd780=_0x7dd780||0xc8;return function(_0x3d38dc){if(_0x3d38dc){return _0x1623f8[_0xa236('0x19')](_0x7dd780)[_0xa236('0x1b')](_0x3d38dc);}};}function respondWithFilteredResult(_0x5cfe6f,_0x1e5370){return function(_0x1d5fbb){if(_0x1d5fbb){var _0x23c673=typeof _0x1e5370[_0xa236('0x1c')]===_0xa236('0x1d')&&typeof _0x1e5370[_0xa236('0x1e')]==='undefined';var _0x16d432=_0x1d5fbb['count'];var _0x307259=_0x23c673?0x0:_0x1e5370[_0xa236('0x1c')];var _0x54f694=_0x23c673?_0x1d5fbb[_0xa236('0x1f')]:_0x1e5370[_0xa236('0x1c')]+_0x1e5370['limit'];var _0x38fb77;if(_0x54f694>=_0x16d432){_0x54f694=_0x16d432;_0x38fb77=0xc8;}else{_0x38fb77=0xce;}_0x5cfe6f[_0xa236('0x19')](_0x38fb77);return _0x5cfe6f[_0xa236('0x20')]('Content-Range',_0x307259+'-'+_0x54f694+'/'+_0x16d432)[_0xa236('0x1b')](_0x1d5fbb);}return null;};}function patchUpdates(_0x54715b){return function(_0x413598){try{jsonpatch['apply'](_0x413598,_0x54715b,!![]);}catch(_0x12d3e3){return BPromise[_0xa236('0x21')](_0x12d3e3);}return _0x413598['save']();};}function saveUpdates(_0x33ebd0,_0x119051){return function(_0x50677c){if(_0x50677c){return _0x50677c[_0xa236('0x22')](_0x33ebd0)[_0xa236('0x23')](function(_0x40e790){return _0x40e790;});}return null;};}function removeEntity(_0xed3599,_0x1ea0b9){return function(_0x4c5460){if(_0x4c5460){return _0x4c5460[_0xa236('0x24')]()[_0xa236('0x23')](function(){_0xed3599[_0xa236('0x19')](0xcc)[_0xa236('0x1a')]();});}};}function handleEntityNotFound(_0x1b2285,_0x9c0d59){return function(_0x537b58){if(!_0x537b58){_0x1b2285['sendStatus'](0x194);}return _0x537b58;};}function handleError(_0x576485,_0x51f2f2){_0x51f2f2=_0x51f2f2||0x1f4;return function(_0x198f3b){logger[_0xa236('0x25')](_0x198f3b[_0xa236('0x26')]);if(_0x198f3b[_0xa236('0x27')]){delete _0x198f3b[_0xa236('0x27')];}_0x576485['status'](_0x51f2f2)[_0xa236('0x28')](_0x198f3b);};}exports[_0xa236('0x29')]=function(_0x1bf05f,_0x355de6){var _0x454639={},_0x501f95={},_0x44ff07={'count':0x0,'rows':[]};var _0x4eac4d=_[_0xa236('0x2a')](db[_0xa236('0x2b')]['rawAttributes'],function(_0x48393e){return{'name':_0x48393e[_0xa236('0x2c')],'type':_0x48393e[_0xa236('0x2d')][_0xa236('0x2e')]};});_0x501f95[_0xa236('0x2f')]=_['map'](_0x4eac4d,_0xa236('0x27'));_0x501f95[_0xa236('0x30')]=_['keys'](_0x1bf05f[_0xa236('0x30')]);_0x501f95[_0xa236('0x31')]=_[_0xa236('0x32')](_0x501f95[_0xa236('0x2f')],_0x501f95[_0xa236('0x30')]);_0x454639[_0xa236('0x33')]=_['intersection'](_0x501f95[_0xa236('0x2f')],qs[_0xa236('0x34')](_0x1bf05f[_0xa236('0x30')][_0xa236('0x34')]));_0x454639[_0xa236('0x33')]=_0x454639[_0xa236('0x33')][_0xa236('0x35')]?_0x454639['attributes']:_0x501f95[_0xa236('0x2f')];if(!_0x1bf05f['query'][_0xa236('0x36')](_0xa236('0x37'))){_0x454639[_0xa236('0x1e')]=qs[_0xa236('0x1e')](_0x1bf05f[_0xa236('0x30')]['limit']);_0x454639[_0xa236('0x1c')]=qs[_0xa236('0x1c')](_0x1bf05f[_0xa236('0x30')][_0xa236('0x1c')]);}_0x454639[_0xa236('0x38')]=qs[_0xa236('0x39')](_0x1bf05f[_0xa236('0x30')]['sort']);_0x454639[_0xa236('0x3a')]=qs[_0xa236('0x31')](_['pick'](_0x1bf05f[_0xa236('0x30')],_0x501f95['filters']),_0x4eac4d);if(_0x1bf05f['query'][_0xa236('0x3b')]){_0x454639[_0xa236('0x3a')]=_[_0xa236('0x3c')](_0x454639[_0xa236('0x3a')],{'$or':_[_0xa236('0x2a')](_0x4eac4d,function(_0x28f015){if(_0x28f015['type']!==_0xa236('0x3d')){var _0x144f1f={};_0x144f1f[_0x28f015[_0xa236('0x27')]]={'$like':'%'+_0x1bf05f[_0xa236('0x30')][_0xa236('0x3b')]+'%'};return _0x144f1f;}})});}_0x454639=_[_0xa236('0x3c')]({},_0x454639,_0x1bf05f[_0xa236('0x3e')]);var _0x5e4770={'where':_0x454639[_0xa236('0x3a')]};return db[_0xa236('0x2b')][_0xa236('0x1f')](_0x5e4770)[_0xa236('0x23')](function(_0x5941d3){_0x44ff07['count']=_0x5941d3;if(_0x1bf05f[_0xa236('0x30')]['includeAll']){_0x454639[_0xa236('0x3f')]=[{'all':!![]}];}return db[_0xa236('0x2b')]['findAll'](_0x454639);})[_0xa236('0x23')](function(_0xb2dc5b){_0x44ff07[_0xa236('0x40')]=_0xb2dc5b;return _0x44ff07;})[_0xa236('0x23')](respondWithFilteredResult(_0x355de6,_0x454639))[_0xa236('0x41')](handleError(_0x355de6,null));};exports[_0xa236('0x42')]=function(_0x1b49cb,_0x1b0eaf){var _0x4e4f4f={'raw':!![],'where':{'id':_0x1b49cb[_0xa236('0x43')]['id']}},_0x4a851c={};_0x4a851c[_0xa236('0x2f')]=_['keys'](db[_0xa236('0x2b')]['rawAttributes']);_0x4a851c[_0xa236('0x30')]=_['keys'](_0x1b49cb[_0xa236('0x30')]);_0x4a851c[_0xa236('0x31')]=_[_0xa236('0x32')](_0x4a851c['model'],_0x4a851c[_0xa236('0x30')]);_0x4e4f4f['attributes']=_['intersection'](_0x4a851c[_0xa236('0x2f')],qs['fields'](_0x1b49cb[_0xa236('0x30')][_0xa236('0x34')]));_0x4e4f4f[_0xa236('0x33')]=_0x4e4f4f[_0xa236('0x33')][_0xa236('0x35')]?_0x4e4f4f[_0xa236('0x33')]:_0x4a851c['model'];if(_0x1b49cb[_0xa236('0x30')]['includeAll']){_0x4e4f4f[_0xa236('0x3f')]=[{'all':!![]}];}_0x4e4f4f=_['merge']({},_0x4e4f4f,_0x1b49cb['options']);return db[_0xa236('0x2b')][_0xa236('0x44')](_0x4e4f4f)[_0xa236('0x23')](handleEntityNotFound(_0x1b0eaf,null))['then'](respondWithResult(_0x1b0eaf,null))[_0xa236('0x41')](handleError(_0x1b0eaf,null));};exports[_0xa236('0x45')]=function(_0x4a2161,_0x1b5da5){return db[_0xa236('0x2b')][_0xa236('0x45')](_0x4a2161['body'],{})[_0xa236('0x23')](respondWithResult(_0x1b5da5,0xc9))[_0xa236('0x41')](handleError(_0x1b5da5,null));};exports[_0xa236('0x22')]=function(_0x3cee8b,_0x11adcb){if(_0x3cee8b[_0xa236('0x46')]['id']){delete _0x3cee8b[_0xa236('0x46')]['id'];}return db[_0xa236('0x2b')][_0xa236('0x44')]({'where':{'id':_0x3cee8b[_0xa236('0x43')]['id']}})[_0xa236('0x23')](handleEntityNotFound(_0x11adcb,null))['then'](saveUpdates(_0x3cee8b[_0xa236('0x46')],null))[_0xa236('0x23')](respondWithResult(_0x11adcb,null))['catch'](handleError(_0x11adcb,null));};exports[_0xa236('0x24')]=function(_0x21026a,_0x202963){return db[_0xa236('0x2b')][_0xa236('0x44')]({'where':{'id':_0x21026a[_0xa236('0x43')]['id']}})[_0xa236('0x23')](handleEntityNotFound(_0x202963,null))[_0xa236('0x23')](removeEntity(_0x202963,null))[_0xa236('0x41')](handleError(_0x202963,null));};exports[_0xa236('0x47')]=function(_0x358724,_0x1533b5){return db[_0xa236('0x2b')][_0xa236('0x47')]()['then'](respondWithResult(_0x1533b5,null))['catch'](handleError(_0x1533b5,null));};
\ No newline at end of file
+var _0x59f4=['hasOwnProperty','nolimit','limit','order','sort','pick','filter','where','merge','options','includeAll','findAll','catch','show','params','keys','include','create','body','find','describe','eml-format','zip-dir','request-promise','bluebird','mustache','util','path','sox','ejs','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','apply','reject','save','update','destroy','then','error','name','send','index','map','FaxTransferReport','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes','length'];(function(_0x578b98,_0xea63fe){var _0x2c2292=function(_0x315706){while(--_0x315706){_0x578b98['push'](_0x578b98['shift']());}};_0x2c2292(++_0xea63fe);}(_0x59f4,0x145));var _0x459f=function(_0x2731f0,_0x126b1b){_0x2731f0=_0x2731f0-0x0;var _0x36a180=_0x59f4[_0x2731f0];return _0x36a180;};'use strict';var emlformat=require(_0x459f('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x459f('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x459f('0x2'));var moment=require('moment');var BPromise=require(_0x459f('0x3'));var Mustache=require(_0x459f('0x4'));var util=require(_0x459f('0x5'));var path=require(_0x459f('0x6'));var sox=require(_0x459f('0x7'));var csv=require('to-csv');var ejs=require(_0x459f('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x459f('0x9'));var deskjs=require(_0x459f('0xa'));var toCsv=require('to-csv');var querystring=require(_0x459f('0xb'));var Papa=require(_0x459f('0xc'));var Redis=require(_0x459f('0xd'));var authService=require(_0x459f('0xe'));var qs=require(_0x459f('0xf'));var as=require(_0x459f('0x10'));var hardwareService=require(_0x459f('0x11'));var logger=require(_0x459f('0x12'))('api');var utils=require(_0x459f('0x13'));var config=require(_0x459f('0x14'));var licenseUtil=require(_0x459f('0x15'));var db=require(_0x459f('0x16'))['db'];function respondWithStatusCode(_0x387360,_0x3261ac){_0x3261ac=_0x3261ac||0xcc;return function(_0x5038dd){if(_0x5038dd){return _0x387360[_0x459f('0x17')](_0x3261ac);}return _0x387360[_0x459f('0x18')](_0x3261ac)[_0x459f('0x19')]();};}function respondWithResult(_0x963d0d,_0x271003){_0x271003=_0x271003||0xc8;return function(_0x5cf834){if(_0x5cf834){return _0x963d0d[_0x459f('0x18')](_0x271003)[_0x459f('0x1a')](_0x5cf834);}};}function respondWithFilteredResult(_0x25f3f6,_0x4505bc){return function(_0x3066bc){if(_0x3066bc){var _0x53b2de=typeof _0x4505bc[_0x459f('0x1b')]==='undefined'&&typeof _0x4505bc['limit']===_0x459f('0x1c');var _0xf9d689=_0x3066bc[_0x459f('0x1d')];var _0x1667a5=_0x53b2de?0x0:_0x4505bc[_0x459f('0x1b')];var _0x5458e7=_0x53b2de?_0x3066bc[_0x459f('0x1d')]:_0x4505bc[_0x459f('0x1b')]+_0x4505bc['limit'];var _0x50452d;if(_0x5458e7>=_0xf9d689){_0x5458e7=_0xf9d689;_0x50452d=0xc8;}else{_0x50452d=0xce;}_0x25f3f6['status'](_0x50452d);return _0x25f3f6[_0x459f('0x1e')](_0x459f('0x1f'),_0x1667a5+'-'+_0x5458e7+'/'+_0xf9d689)[_0x459f('0x1a')](_0x3066bc);}return null;};}function patchUpdates(_0x319a90){return function(_0x1cd629){try{jsonpatch[_0x459f('0x20')](_0x1cd629,_0x319a90,!![]);}catch(_0x182827){return BPromise[_0x459f('0x21')](_0x182827);}return _0x1cd629[_0x459f('0x22')]();};}function saveUpdates(_0x105e74,_0x431cc6){return function(_0x4334ae){if(_0x4334ae){return _0x4334ae[_0x459f('0x23')](_0x105e74)['then'](function(_0xc28864){return _0xc28864;});}return null;};}function removeEntity(_0x3848ea,_0x17f6d8){return function(_0x508ae5){if(_0x508ae5){return _0x508ae5[_0x459f('0x24')]()[_0x459f('0x25')](function(){_0x3848ea['status'](0xcc)[_0x459f('0x19')]();});}};}function handleEntityNotFound(_0x1e8da0,_0x2a5ce3){return function(_0x553271){if(!_0x553271){_0x1e8da0[_0x459f('0x17')](0x194);}return _0x553271;};}function handleError(_0x52a75c,_0xb784ad){_0xb784ad=_0xb784ad||0x1f4;return function(_0x3c48d4){logger[_0x459f('0x26')](_0x3c48d4['stack']);if(_0x3c48d4[_0x459f('0x27')]){delete _0x3c48d4[_0x459f('0x27')];}_0x52a75c[_0x459f('0x18')](_0xb784ad)[_0x459f('0x28')](_0x3c48d4);};}exports[_0x459f('0x29')]=function(_0x42c2ad,_0x453d8e){var _0xdc93ac={},_0x55835d={},_0x25b645={'count':0x0,'rows':[]};var _0x2be15f=_[_0x459f('0x2a')](db[_0x459f('0x2b')][_0x459f('0x2c')],function(_0x184f3e){return{'name':_0x184f3e[_0x459f('0x2d')],'type':_0x184f3e[_0x459f('0x2e')][_0x459f('0x2f')]};});_0x55835d[_0x459f('0x30')]=_[_0x459f('0x2a')](_0x2be15f,'name');_0x55835d[_0x459f('0x31')]=_['keys'](_0x42c2ad[_0x459f('0x31')]);_0x55835d[_0x459f('0x32')]=_[_0x459f('0x33')](_0x55835d[_0x459f('0x30')],_0x55835d[_0x459f('0x31')]);_0xdc93ac['attributes']=_['intersection'](_0x55835d[_0x459f('0x30')],qs[_0x459f('0x34')](_0x42c2ad['query']['fields']));_0xdc93ac[_0x459f('0x35')]=_0xdc93ac[_0x459f('0x35')][_0x459f('0x36')]?_0xdc93ac[_0x459f('0x35')]:_0x55835d[_0x459f('0x30')];if(!_0x42c2ad[_0x459f('0x31')][_0x459f('0x37')](_0x459f('0x38'))){_0xdc93ac[_0x459f('0x39')]=qs['limit'](_0x42c2ad[_0x459f('0x31')]['limit']);_0xdc93ac[_0x459f('0x1b')]=qs[_0x459f('0x1b')](_0x42c2ad[_0x459f('0x31')][_0x459f('0x1b')]);}_0xdc93ac[_0x459f('0x3a')]=qs['sort'](_0x42c2ad['query'][_0x459f('0x3b')]);_0xdc93ac['where']=qs[_0x459f('0x32')](_[_0x459f('0x3c')](_0x42c2ad[_0x459f('0x31')],_0x55835d[_0x459f('0x32')]),_0x2be15f);if(_0x42c2ad[_0x459f('0x31')][_0x459f('0x3d')]){_0xdc93ac[_0x459f('0x3e')]=_[_0x459f('0x3f')](_0xdc93ac[_0x459f('0x3e')],{'$or':_['map'](_0x2be15f,function(_0x549d23){if(_0x549d23['type']!=='VIRTUAL'){var _0x4a8794={};_0x4a8794[_0x549d23[_0x459f('0x27')]]={'$like':'%'+_0x42c2ad[_0x459f('0x31')]['filter']+'%'};return _0x4a8794;}})});}_0xdc93ac=_['merge']({},_0xdc93ac,_0x42c2ad[_0x459f('0x40')]);var _0x2a4853={'where':_0xdc93ac[_0x459f('0x3e')]};return db[_0x459f('0x2b')]['count'](_0x2a4853)[_0x459f('0x25')](function(_0x1a9153){_0x25b645[_0x459f('0x1d')]=_0x1a9153;if(_0x42c2ad[_0x459f('0x31')][_0x459f('0x41')]){_0xdc93ac['include']=[{'all':!![]}];}return db['FaxTransferReport'][_0x459f('0x42')](_0xdc93ac);})[_0x459f('0x25')](function(_0x1265f6){_0x25b645['rows']=_0x1265f6;return _0x25b645;})[_0x459f('0x25')](respondWithFilteredResult(_0x453d8e,_0xdc93ac))[_0x459f('0x43')](handleError(_0x453d8e,null));};exports[_0x459f('0x44')]=function(_0x4d7a2b,_0x34a73d){var _0x51bdff={'raw':!![],'where':{'id':_0x4d7a2b[_0x459f('0x45')]['id']}},_0x7bb98a={};_0x7bb98a[_0x459f('0x30')]=_[_0x459f('0x46')](db[_0x459f('0x2b')][_0x459f('0x2c')]);_0x7bb98a[_0x459f('0x31')]=_['keys'](_0x4d7a2b[_0x459f('0x31')]);_0x7bb98a[_0x459f('0x32')]=_[_0x459f('0x33')](_0x7bb98a[_0x459f('0x30')],_0x7bb98a['query']);_0x51bdff['attributes']=_[_0x459f('0x33')](_0x7bb98a[_0x459f('0x30')],qs[_0x459f('0x34')](_0x4d7a2b[_0x459f('0x31')][_0x459f('0x34')]));_0x51bdff[_0x459f('0x35')]=_0x51bdff[_0x459f('0x35')][_0x459f('0x36')]?_0x51bdff['attributes']:_0x7bb98a['model'];if(_0x4d7a2b[_0x459f('0x31')]['includeAll']){_0x51bdff[_0x459f('0x47')]=[{'all':!![]}];}_0x51bdff=_['merge']({},_0x51bdff,_0x4d7a2b[_0x459f('0x40')]);return db[_0x459f('0x2b')]['find'](_0x51bdff)[_0x459f('0x25')](handleEntityNotFound(_0x34a73d,null))['then'](respondWithResult(_0x34a73d,null))['catch'](handleError(_0x34a73d,null));};exports[_0x459f('0x48')]=function(_0x4ea323,_0x183706){return db['FaxTransferReport'][_0x459f('0x48')](_0x4ea323['body'],{})[_0x459f('0x25')](respondWithResult(_0x183706,0xc9))['catch'](handleError(_0x183706,null));};exports[_0x459f('0x23')]=function(_0x118b47,_0x1bb08d){if(_0x118b47[_0x459f('0x49')]['id']){delete _0x118b47[_0x459f('0x49')]['id'];}return db[_0x459f('0x2b')][_0x459f('0x4a')]({'where':{'id':_0x118b47['params']['id']}})['then'](handleEntityNotFound(_0x1bb08d,null))[_0x459f('0x25')](saveUpdates(_0x118b47[_0x459f('0x49')],null))['then'](respondWithResult(_0x1bb08d,null))[_0x459f('0x43')](handleError(_0x1bb08d,null));};exports['destroy']=function(_0x564b98,_0x12bde2){return db['FaxTransferReport']['find']({'where':{'id':_0x564b98[_0x459f('0x45')]['id']}})[_0x459f('0x25')](handleEntityNotFound(_0x12bde2,null))['then'](removeEntity(_0x12bde2,null))[_0x459f('0x43')](handleError(_0x12bde2,null));};exports[_0x459f('0x4b')]=function(_0x5636dd,_0x518510){return db['FaxTransferReport'][_0x459f('0x4b')]()['then'](respondWithResult(_0x518510,null))[_0x459f('0x43')](handleError(_0x518510,null));};
\ No newline at end of file
index 5f153a8..f200e6d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b35=['util','../../config/logger','api','request-promise','path','rimraf','../../config/environment','define','FaxTransferReport','report_fax_transfer','uniqueid'];(function(_0x5acb6d,_0x5b40d7){var _0x14c5a6=function(_0x1df497){while(--_0x1df497){_0x5acb6d['push'](_0x5acb6d['shift']());}};_0x14c5a6(++_0x5b40d7);}(_0x6b35,0x6e));var _0x56b3=function(_0x5ef114,_0x2346f5){_0x5ef114=_0x5ef114-0x0;var _0x3f29a0=_0x6b35[_0x5ef114];return _0x3f29a0;};'use strict';var _=require('lodash');var util=require(_0x56b3('0x0'));var logger=require(_0x56b3('0x1'))(_0x56b3('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x56b3('0x3'));var fs=require('fs');var path=require(_0x56b3('0x4'));var rimraf=require(_0x56b3('0x5'));var config=require(_0x56b3('0x6'));var attributes=require('./faxTransferReport.attributes');module['exports']=function(_0x49c8ca,_0x5dc45b){return _0x49c8ca[_0x56b3('0x7')](_0x56b3('0x8'),attributes,{'tableName':_0x56b3('0x9'),'paranoid':![],'indexes':[{'name':_0x56b3('0xa'),'fields':[_0x56b3('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x7932=['rimraf','../../config/environment','exports','define','FaxTransferReport','report_fax_transfer','lodash','util','api','moment','bluebird','request-promise','path'];(function(_0x26bceb,_0x124ed3){var _0xcb6fef=function(_0x22acf7){while(--_0x22acf7){_0x26bceb['push'](_0x26bceb['shift']());}};_0xcb6fef(++_0x124ed3);}(_0x7932,0xf0));var _0x2793=function(_0x20d37d,_0x900ae2){_0x20d37d=_0x20d37d-0x0;var _0x4ad45e=_0x7932[_0x20d37d];return _0x4ad45e;};'use strict';var _=require(_0x2793('0x0'));var util=require(_0x2793('0x1'));var logger=require('../../config/logger')(_0x2793('0x2'));var moment=require(_0x2793('0x3'));var BPromise=require(_0x2793('0x4'));var rp=require(_0x2793('0x5'));var fs=require('fs');var path=require(_0x2793('0x6'));var rimraf=require(_0x2793('0x7'));var config=require(_0x2793('0x8'));var attributes=require('./faxTransferReport.attributes');module[_0x2793('0x9')]=function(_0xacd552,_0x45a3d2){return _0xacd552[_0x2793('0xa')](_0x2793('0xb'),attributes,{'tableName':_0x2793('0xc'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index c073d02..2dccc87 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x424b=['jayson/promise','http','request','then','info','FaxTransferReport,\x20%s,\x20%s','request\x20sent','debug','FaxTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x424b,0x1f1));var _0xb424=function(_0x3f6fe6,_0x52243c){_0x3f6fe6=_0x3f6fe6-0x0;var _0xebbe7f=_0x424b[_0x3f6fe6];return _0xebbe7f;};'use strict';var _=require(_0xb424('0x0'));var util=require(_0xb424('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xb424('0x2'));var fs=require('fs');var Redis=require(_0xb424('0x3'));var db=require(_0xb424('0x4'))['db'];var utils=require(_0xb424('0x5'));var logger=require(_0xb424('0x6'))(_0xb424('0x7'));var config=require(_0xb424('0x8'));var jayson=require(_0xb424('0x9'));var client=jayson['client'][_0xb424('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3bd398,_0xaabd01,_0x32607c){return new BPromise(function(_0x9cd273,_0x35112f){return client[_0xb424('0xb')](_0x3bd398,_0x32607c)[_0xb424('0xc')](function(_0x4923fb){logger[_0xb424('0xd')](_0xb424('0xe'),_0xaabd01,_0xb424('0xf'));logger[_0xb424('0x10')](_0xb424('0x11'),_0xaabd01,_0xb424('0xf'),JSON[_0xb424('0x12')](_0x4923fb));if(_0x4923fb[_0xb424('0x13')]){if(_0x4923fb['error'][_0xb424('0x14')]===0x1f4){logger[_0xb424('0x13')](_0xb424('0xe'),_0xaabd01,_0x4923fb[_0xb424('0x13')]['message']);return _0x35112f(_0x4923fb[_0xb424('0x13')]['message']);}logger[_0xb424('0x13')](_0xb424('0xe'),_0xaabd01,_0x4923fb['error'][_0xb424('0x15')]);return _0x9cd273(_0x4923fb[_0xb424('0x13')][_0xb424('0x15')]);}else{logger[_0xb424('0xd')](_0xb424('0xe'),_0xaabd01,_0xb424('0xf'));_0x9cd273(_0x4923fb['result'][_0xb424('0x15')]);}})[_0xb424('0x16')](function(_0x3073e6){logger[_0xb424('0x13')]('FaxTransferReport,\x20%s,\x20%s',_0xaabd01,_0x3073e6);_0x35112f(_0x3073e6);});});}
\ No newline at end of file
+var _0xb82a=['FaxTransferReport,\x20%s,\x20%s,\x20%s','error','code','FaxTransferReport,\x20%s,\x20%s','message','catch','util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','request\x20sent','debug'];(function(_0x36c7f2,_0x2759b4){var _0x3c395e=function(_0x51f9f1){while(--_0x51f9f1){_0x36c7f2['push'](_0x36c7f2['shift']());}};_0x3c395e(++_0x2759b4);}(_0xb82a,0x84));var _0xab82=function(_0x392981,_0x4f14c5){_0x392981=_0x392981-0x0;var _0x3a688b=_0xb82a[_0x392981];return _0x3a688b;};'use strict';var _=require('lodash');var util=require(_0xab82('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xab82('0x1'));var fs=require('fs');var Redis=require(_0xab82('0x2'));var db=require(_0xab82('0x3'))['db'];var utils=require(_0xab82('0x4'));var logger=require(_0xab82('0x5'))(_0xab82('0x6'));var config=require('../../config/environment');var jayson=require(_0xab82('0x7'));var client=jayson[_0xab82('0x8')][_0xab82('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1313dd,_0x240114,_0x37d573){return new BPromise(function(_0x1f3271,_0x335e90){return client[_0xab82('0xa')](_0x1313dd,_0x37d573)[_0xab82('0xb')](function(_0x2bebdf){logger[_0xab82('0xc')]('FaxTransferReport,\x20%s,\x20%s',_0x240114,_0xab82('0xd'));logger[_0xab82('0xe')](_0xab82('0xf'),_0x240114,'request\x20sent',JSON['stringify'](_0x2bebdf));if(_0x2bebdf['error']){if(_0x2bebdf[_0xab82('0x10')][_0xab82('0x11')]===0x1f4){logger[_0xab82('0x10')](_0xab82('0x12'),_0x240114,_0x2bebdf[_0xab82('0x10')][_0xab82('0x13')]);return _0x335e90(_0x2bebdf['error'][_0xab82('0x13')]);}logger[_0xab82('0x10')](_0xab82('0x12'),_0x240114,_0x2bebdf[_0xab82('0x10')]['message']);return _0x1f3271(_0x2bebdf[_0xab82('0x10')]['message']);}else{logger[_0xab82('0xc')](_0xab82('0x12'),_0x240114,_0xab82('0xd'));_0x1f3271(_0x2bebdf['result'][_0xab82('0x13')]);}})[_0xab82('0x14')](function(_0x373d1a){logger[_0xab82('0x10')]('FaxTransferReport,\x20%s,\x20%s',_0x240114,_0x373d1a);_0x335e90(_0x373d1a);});});}
\ No newline at end of file
index 2ea8b5e..16b2c6d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb649=['../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/describe','describe','/:id','show','post','create','put','update','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x33f1f1,_0x3f2a10){var _0x3052d4=function(_0x2d62ad){while(--_0x2d62ad){_0x33f1f1['push'](_0x33f1f1['shift']());}};_0x3052d4(++_0x3f2a10);}(_0xb649,0x17f));var _0x9b64=function(_0x4b12ae,_0xf2b3b){_0x4b12ae=_0x4b12ae-0x0;var _0x16957b=_0xb649[_0x4b12ae];return _0x16957b;};'use strict';var multer=require(_0x9b64('0x0'));var util=require(_0x9b64('0x1'));var path=require(_0x9b64('0x2'));var timeout=require(_0x9b64('0x3'));var express=require(_0x9b64('0x4'));var router=express[_0x9b64('0x5')]();var fs_extra=require(_0x9b64('0x6'));var auth=require(_0x9b64('0x7'));var interaction=require(_0x9b64('0x8'));var config=require(_0x9b64('0x9'));var controller=require('./faxTransferReport.controller');router['get']('/',auth[_0x9b64('0xa')](),controller[_0x9b64('0xb')]);router[_0x9b64('0xc')](_0x9b64('0xd'),auth[_0x9b64('0xa')](),controller[_0x9b64('0xe')]);router[_0x9b64('0xc')](_0x9b64('0xf'),auth[_0x9b64('0xa')](),controller[_0x9b64('0x10')]);router[_0x9b64('0x11')]('/',auth[_0x9b64('0xa')](),controller[_0x9b64('0x12')]);router[_0x9b64('0x13')]('/:id',auth[_0x9b64('0xa')](),controller[_0x9b64('0x14')]);router[_0x9b64('0x15')](_0x9b64('0xf'),auth[_0x9b64('0xa')](),controller['destroy']);module[_0x9b64('0x16')]=router;
\ No newline at end of file
+var _0x71bb=['destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./faxTransferReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','put','update','delete'];(function(_0x5afadb,_0x413dfa){var _0x330415=function(_0x2ba279){while(--_0x2ba279){_0x5afadb['push'](_0x5afadb['shift']());}};_0x330415(++_0x413dfa);}(_0x71bb,0x12d));var _0xb71b=function(_0x595ebe,_0x279554){_0x595ebe=_0x595ebe-0x0;var _0x3a8a4f=_0x71bb[_0x595ebe];return _0x3a8a4f;};'use strict';var multer=require(_0xb71b('0x0'));var util=require('util');var path=require(_0xb71b('0x1'));var timeout=require(_0xb71b('0x2'));var express=require(_0xb71b('0x3'));var router=express[_0xb71b('0x4')]();var fs_extra=require(_0xb71b('0x5'));var auth=require(_0xb71b('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xb71b('0x7'));var controller=require(_0xb71b('0x8'));router[_0xb71b('0x9')]('/',auth[_0xb71b('0xa')](),controller[_0xb71b('0xb')]);router[_0xb71b('0x9')](_0xb71b('0xc'),auth['isAuthenticated'](),controller[_0xb71b('0xd')]);router[_0xb71b('0x9')](_0xb71b('0xe'),auth[_0xb71b('0xa')](),controller[_0xb71b('0xf')]);router[_0xb71b('0x10')]('/',auth[_0xb71b('0xa')](),controller[_0xb71b('0x11')]);router[_0xb71b('0x12')](_0xb71b('0xe'),auth['isAuthenticated'](),controller[_0xb71b('0x13')]);router[_0xb71b('0x14')](_0xb71b('0xe'),auth[_0xb71b('0xa')](),controller[_0xb71b('0x15')]);module[_0xb71b('0x16')]=router;
\ No newline at end of file
index bc1b04d..63a5ada 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x92cc=['addConfiguration','update','delete','multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/:id','/:id/configurations','getConfigurations','getFields','post'];(function(_0x341e0f,_0x4a09d0){var _0x59555a=function(_0x4343a8){while(--_0x4343a8){_0x341e0f['push'](_0x341e0f['shift']());}};_0x59555a(++_0x4a09d0);}(_0x92cc,0x17f));var _0xc92c=function(_0x452a3e,_0x1d6cc4){_0x452a3e=_0x452a3e-0x0;var _0x5bce1b=_0x92cc[_0x452a3e];return _0x5bce1b;};'use strict';var multer=require(_0xc92c('0x0'));var util=require(_0xc92c('0x1'));var path=require(_0xc92c('0x2'));var timeout=require(_0xc92c('0x3'));var express=require(_0xc92c('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xc92c('0x5'));var interaction=require(_0xc92c('0x6'));var config=require(_0xc92c('0x7'));var controller=require('./intDeskAccount.controller');router['get']('/',auth[_0xc92c('0x8')](),controller[_0xc92c('0x9')]);router[_0xc92c('0xa')](_0xc92c('0xb'),auth[_0xc92c('0x8')](),controller['show']);router[_0xc92c('0xa')](_0xc92c('0xc'),auth[_0xc92c('0x8')](),controller[_0xc92c('0xd')]);router[_0xc92c('0xa')]('/:id/fields',auth[_0xc92c('0x8')](),controller[_0xc92c('0xe')]);router[_0xc92c('0xf')]('/',auth[_0xc92c('0x8')](),controller['create']);router[_0xc92c('0xf')](_0xc92c('0xc'),auth[_0xc92c('0x8')](),controller[_0xc92c('0x10')]);router['put'](_0xc92c('0xb'),auth[_0xc92c('0x8')](),controller[_0xc92c('0x11')]);router[_0xc92c('0x12')]('/:id',auth[_0xc92c('0x8')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xc13e=['update','delete','destroy','exports','multer','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDeskAccount.controller','get','isAuthenticated','index','/:id/configurations','getConfigurations','/:id/fields','post','create','put','/:id'];(function(_0x27d29e,_0x46ddcc){var _0x174321=function(_0x4b8afd){while(--_0x4b8afd){_0x27d29e['push'](_0x27d29e['shift']());}};_0x174321(++_0x46ddcc);}(_0xc13e,0x9e));var _0xec13=function(_0x4ddea7,_0x1f6050){_0x4ddea7=_0x4ddea7-0x0;var _0x371c2f=_0xc13e[_0x4ddea7];return _0x371c2f;};'use strict';var multer=require(_0xec13('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xec13('0x1'));var express=require('express');var router=express[_0xec13('0x2')]();var fs_extra=require(_0xec13('0x3'));var auth=require(_0xec13('0x4'));var interaction=require(_0xec13('0x5'));var config=require(_0xec13('0x6'));var controller=require(_0xec13('0x7'));router[_0xec13('0x8')]('/',auth[_0xec13('0x9')](),controller[_0xec13('0xa')]);router[_0xec13('0x8')]('/:id',auth[_0xec13('0x9')](),controller['show']);router[_0xec13('0x8')](_0xec13('0xb'),auth[_0xec13('0x9')](),controller[_0xec13('0xc')]);router[_0xec13('0x8')](_0xec13('0xd'),auth['isAuthenticated'](),controller['getFields']);router[_0xec13('0xe')]('/',auth[_0xec13('0x9')](),controller[_0xec13('0xf')]);router[_0xec13('0xe')](_0xec13('0xb'),auth['isAuthenticated'](),controller['addConfiguration']);router[_0xec13('0x10')](_0xec13('0x11'),auth[_0xec13('0x9')](),controller[_0xec13('0x12')]);router[_0xec13('0x13')](_0xec13('0x11'),auth['isAuthenticated'](),controller[_0xec13('0x14')]);module[_0xec13('0x15')]=router;
\ No newline at end of file
index a97290a..6c26b17 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c0f=['newTab','sequelize','STRING','basic','ENUM','integrationTab'];(function(_0x5d6bae,_0x1624a6){var _0x11eddf=function(_0x148eb9){while(--_0x148eb9){_0x5d6bae['push'](_0x5d6bae['shift']());}};_0x11eddf(++_0x1624a6);}(_0x7c0f,0x67));var _0xf7c0=function(_0x1f5916,_0x142d3c){_0x1f5916=_0x1f5916-0x0;var _0x4a3799=_0x7c0f[_0x1f5916];return _0x4a3799;};'use strict';var Sequelize=require(_0xf7c0('0x0'));module['exports']={'name':{'type':Sequelize[_0xf7c0('0x1')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0xf7c0('0x1')]},'authType':{'type':Sequelize['ENUM']('basic'),'defaultValue':_0xf7c0('0x2')},'password':{'type':Sequelize['STRING']},'consumerKey':{'type':Sequelize[_0xf7c0('0x1')]},'consumerSecret':{'type':Sequelize[_0xf7c0('0x1')]},'token':{'type':Sequelize[_0xf7c0('0x1')]},'tokenSecret':{'type':Sequelize[_0xf7c0('0x1')]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0xf7c0('0x3')](_0xf7c0('0x4'),_0xf7c0('0x5')),'defaultValue':_0xf7c0('0x4')}};
\ No newline at end of file
+var _0x1bc9=['ENUM','integrationTab','sequelize','exports','STRING'];(function(_0x38080e,_0x95512d){var _0x4e4c87=function(_0x2be6b3){while(--_0x2be6b3){_0x38080e['push'](_0x38080e['shift']());}};_0x4e4c87(++_0x95512d);}(_0x1bc9,0xb6));var _0x91bc=function(_0x544a06,_0x479114){_0x544a06=_0x544a06-0x0;var _0x2ea061=_0x1bc9[_0x544a06];return _0x2ea061;};'use strict';var Sequelize=require(_0x91bc('0x0'));module[_0x91bc('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x91bc('0x2')]},'username':{'type':Sequelize[_0x91bc('0x2')]},'remoteUri':{'type':Sequelize[_0x91bc('0x2')]},'authType':{'type':Sequelize[_0x91bc('0x3')]('basic'),'defaultValue':'basic'},'password':{'type':Sequelize[_0x91bc('0x2')]},'consumerKey':{'type':Sequelize[_0x91bc('0x2')]},'consumerSecret':{'type':Sequelize[_0x91bc('0x2')]},'token':{'type':Sequelize['STRING']},'tokenSecret':{'type':Sequelize[_0x91bc('0x2')]},'serverUrl':{'type':Sequelize[_0x91bc('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x91bc('0x3')]('integrationTab','newTab'),'defaultValue':_0x91bc('0x4')}};
\ No newline at end of file
index 70e90bf..bb07816 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb11=['name','index','map','fieldName','key','query','keys','filters','model','attributes','fields','length','nolimit','order','sort','where','merge','type','options','DeskAccount','include','findAll','rows','show','params','intersection','includeAll','find','catch','create','update','body','getConfigurations','DeskConfiguration','rawAttributes','pick','addConfiguration','findOne','AccountId','Subjects','getSubjects','channel','DeskField','Descriptions','priority','remoteUri','authType','username','consumerKey','consumerSecret','substring','%s/custom_fields','application/json','basic','Authorization','format','Basic\x20%s','%s:%s','password','base64','concat','_embedded','entries','active','label','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','send','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','papaparse','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','then','destroy','error'];(function(_0x45ce1a,_0x4f8ea5){var _0x4926d8=function(_0x4b29d8){while(--_0x4b29d8){_0x45ce1a['push'](_0x45ce1a['shift']());}};_0x4926d8(++_0x4f8ea5);}(_0xdb11,0xb0));var _0x1db1=function(_0xe66cf2,_0x32ba5f){_0xe66cf2=_0xe66cf2-0x0;var _0x2d84e7=_0xdb11[_0xe66cf2];return _0x2d84e7;};'use strict';var emlformat=require(_0x1db1('0x0'));var rimraf=require(_0x1db1('0x1'));var zipdir=require(_0x1db1('0x2'));var jsonpatch=require(_0x1db1('0x3'));var rp=require(_0x1db1('0x4'));var moment=require('moment');var BPromise=require(_0x1db1('0x5'));var Mustache=require('mustache');var util=require(_0x1db1('0x6'));var path=require(_0x1db1('0x7'));var sox=require(_0x1db1('0x8'));var csv=require(_0x1db1('0x9'));var ejs=require(_0x1db1('0xa'));var fs=require('fs');var fs_extra=require(_0x1db1('0xb'));var _=require(_0x1db1('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x1db1('0xd'));var deskjs=require(_0x1db1('0xe'));var toCsv=require(_0x1db1('0x9'));var querystring=require('querystring');var Papa=require(_0x1db1('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x1db1('0x10'));var hardwareService=require(_0x1db1('0x11'));var logger=require('../../config/logger')(_0x1db1('0x12'));var utils=require(_0x1db1('0x13'));var config=require(_0x1db1('0x14'));var licenseUtil=require(_0x1db1('0x15'));var db=require(_0x1db1('0x16'))['db'];var integrations=require(_0x1db1('0x17'));function respondWithStatusCode(_0x32d725,_0x994b45){_0x994b45=_0x994b45||0xcc;return function(_0x1769b6){if(_0x1769b6){return _0x32d725[_0x1db1('0x18')](_0x994b45);}return _0x32d725[_0x1db1('0x19')](_0x994b45)[_0x1db1('0x1a')]();};}function respondWithResult(_0x285187,_0x19fcd6){_0x19fcd6=_0x19fcd6||0xc8;return function(_0x270996){if(_0x270996){return _0x285187[_0x1db1('0x19')](_0x19fcd6)[_0x1db1('0x1b')](_0x270996);}};}function respondWithFilteredResult(_0x128725,_0x543a18){return function(_0x464c4b){if(_0x464c4b){var _0x151891=typeof _0x543a18[_0x1db1('0x1c')]===_0x1db1('0x1d')&&typeof _0x543a18[_0x1db1('0x1e')]==='undefined';var _0x4f572d=_0x464c4b['count'];var _0x595bd4=_0x151891?0x0:_0x543a18[_0x1db1('0x1c')];var _0xb4c1f3=_0x151891?_0x464c4b[_0x1db1('0x1f')]:_0x543a18[_0x1db1('0x1c')]+_0x543a18[_0x1db1('0x1e')];var _0x4958bf;if(_0xb4c1f3>=_0x4f572d){_0xb4c1f3=_0x4f572d;_0x4958bf=0xc8;}else{_0x4958bf=0xce;}_0x128725['status'](_0x4958bf);return _0x128725[_0x1db1('0x20')](_0x1db1('0x21'),_0x595bd4+'-'+_0xb4c1f3+'/'+_0x4f572d)['json'](_0x464c4b);}return null;};}function patchUpdates(_0xa6724c){return function(_0x2d125f){try{jsonpatch[_0x1db1('0x22')](_0x2d125f,_0xa6724c,!![]);}catch(_0x51b326){return BPromise['reject'](_0x51b326);}return _0x2d125f['save']();};}function saveUpdates(_0x2dfa4e,_0x1c885f){return function(_0x4edfb1){if(_0x4edfb1){return _0x4edfb1['update'](_0x2dfa4e)[_0x1db1('0x23')](function(_0x283de2){return _0x283de2;});}return null;};}function removeEntity(_0x55c97e,_0x2ff139){return function(_0xdad3d6){if(_0xdad3d6){return _0xdad3d6[_0x1db1('0x24')]()[_0x1db1('0x23')](function(){_0x55c97e[_0x1db1('0x19')](0xcc)[_0x1db1('0x1a')]();});}};}function handleEntityNotFound(_0x52dc78,_0xd24da8){return function(_0xd7fe5c){if(!_0xd7fe5c){_0x52dc78[_0x1db1('0x18')](0x194);}return _0xd7fe5c;};}function handleError(_0x3e3c59,_0x9254c3){_0x9254c3=_0x9254c3||0x1f4;return function(_0x8ed2ec){logger[_0x1db1('0x25')](_0x8ed2ec['stack']);if(_0x8ed2ec['name']){delete _0x8ed2ec[_0x1db1('0x26')];}_0x3e3c59[_0x1db1('0x19')](_0x9254c3)['send'](_0x8ed2ec);};}exports[_0x1db1('0x27')]=function(_0x2f12cc,_0x13f2ce){var _0x436f77={},_0x3409b6={},_0x592d58={'count':0x0,'rows':[]};var _0x53bd1a=_[_0x1db1('0x28')](db['DeskAccount']['rawAttributes'],function(_0x35b5c0){return{'name':_0x35b5c0[_0x1db1('0x29')],'type':_0x35b5c0['type'][_0x1db1('0x2a')]};});_0x3409b6['model']=_[_0x1db1('0x28')](_0x53bd1a,_0x1db1('0x26'));_0x3409b6[_0x1db1('0x2b')]=_[_0x1db1('0x2c')](_0x2f12cc[_0x1db1('0x2b')]);_0x3409b6[_0x1db1('0x2d')]=_['intersection'](_0x3409b6[_0x1db1('0x2e')],_0x3409b6['query']);_0x436f77[_0x1db1('0x2f')]=_['intersection'](_0x3409b6[_0x1db1('0x2e')],qs[_0x1db1('0x30')](_0x2f12cc[_0x1db1('0x2b')]['fields']));_0x436f77[_0x1db1('0x2f')]=_0x436f77[_0x1db1('0x2f')][_0x1db1('0x31')]?_0x436f77[_0x1db1('0x2f')]:_0x3409b6['model'];if(!_0x2f12cc['query']['hasOwnProperty'](_0x1db1('0x32'))){_0x436f77[_0x1db1('0x1e')]=qs[_0x1db1('0x1e')](_0x2f12cc[_0x1db1('0x2b')][_0x1db1('0x1e')]);_0x436f77[_0x1db1('0x1c')]=qs['offset'](_0x2f12cc[_0x1db1('0x2b')][_0x1db1('0x1c')]);}_0x436f77[_0x1db1('0x33')]=qs[_0x1db1('0x34')](_0x2f12cc[_0x1db1('0x2b')][_0x1db1('0x34')]);_0x436f77[_0x1db1('0x35')]=qs[_0x1db1('0x2d')](_['pick'](_0x2f12cc['query'],_0x3409b6['filters']),_0x53bd1a);if(_0x2f12cc[_0x1db1('0x2b')]['filter']){_0x436f77[_0x1db1('0x35')]=_[_0x1db1('0x36')](_0x436f77[_0x1db1('0x35')],{'$or':_['map'](_0x53bd1a,function(_0x5b0bab){if(_0x5b0bab[_0x1db1('0x37')]!=='VIRTUAL'){var _0x4eff45={};_0x4eff45[_0x5b0bab[_0x1db1('0x26')]]={'$like':'%'+_0x2f12cc['query']['filter']+'%'};return _0x4eff45;}})});}_0x436f77=_[_0x1db1('0x36')]({},_0x436f77,_0x2f12cc[_0x1db1('0x38')]);var _0x4a1507={'where':_0x436f77[_0x1db1('0x35')]};return db[_0x1db1('0x39')]['count'](_0x4a1507)[_0x1db1('0x23')](function(_0x1f94f3){_0x592d58[_0x1db1('0x1f')]=_0x1f94f3;if(_0x2f12cc[_0x1db1('0x2b')]['includeAll']){_0x436f77[_0x1db1('0x3a')]=[{'all':!![]}];}return db[_0x1db1('0x39')][_0x1db1('0x3b')](_0x436f77);})[_0x1db1('0x23')](function(_0x48d30c){_0x592d58[_0x1db1('0x3c')]=_0x48d30c;return _0x592d58;})[_0x1db1('0x23')](respondWithFilteredResult(_0x13f2ce,_0x436f77))['catch'](handleError(_0x13f2ce,null));};exports[_0x1db1('0x3d')]=function(_0x44b5ea,_0x45f515){var _0x4f184f={'raw':![],'where':{'id':_0x44b5ea[_0x1db1('0x3e')]['id']}},_0x5d8faa={};_0x5d8faa[_0x1db1('0x2e')]=_[_0x1db1('0x2c')](db[_0x1db1('0x39')]['rawAttributes']);_0x5d8faa[_0x1db1('0x2b')]=_[_0x1db1('0x2c')](_0x44b5ea[_0x1db1('0x2b')]);_0x5d8faa['filters']=_['intersection'](_0x5d8faa['model'],_0x5d8faa[_0x1db1('0x2b')]);_0x4f184f[_0x1db1('0x2f')]=_[_0x1db1('0x3f')](_0x5d8faa[_0x1db1('0x2e')],qs[_0x1db1('0x30')](_0x44b5ea[_0x1db1('0x2b')]['fields']));_0x4f184f['attributes']=_0x4f184f[_0x1db1('0x2f')][_0x1db1('0x31')]?_0x4f184f[_0x1db1('0x2f')]:_0x5d8faa[_0x1db1('0x2e')];if(_0x44b5ea[_0x1db1('0x2b')][_0x1db1('0x40')]){_0x4f184f[_0x1db1('0x3a')]=[{'all':!![]}];}_0x4f184f=_[_0x1db1('0x36')]({},_0x4f184f,_0x44b5ea[_0x1db1('0x38')]);return db['DeskAccount'][_0x1db1('0x41')](_0x4f184f)[_0x1db1('0x23')](handleEntityNotFound(_0x45f515,null))[_0x1db1('0x23')](respondWithResult(_0x45f515,null))[_0x1db1('0x42')](handleError(_0x45f515,null));};exports[_0x1db1('0x43')]=function(_0x1ef676,_0x39c2cb){return db[_0x1db1('0x39')][_0x1db1('0x43')](_0x1ef676['body'],{})[_0x1db1('0x23')](respondWithResult(_0x39c2cb,0xc9))[_0x1db1('0x42')](handleError(_0x39c2cb,null));};exports[_0x1db1('0x44')]=function(_0x4050b8,_0x996713){if(_0x4050b8[_0x1db1('0x45')]['id']){delete _0x4050b8[_0x1db1('0x45')]['id'];}return db[_0x1db1('0x39')][_0x1db1('0x41')]({'where':{'id':_0x4050b8[_0x1db1('0x3e')]['id']}})[_0x1db1('0x23')](handleEntityNotFound(_0x996713,null))[_0x1db1('0x23')](saveUpdates(_0x4050b8[_0x1db1('0x45')],null))[_0x1db1('0x23')](respondWithResult(_0x996713,null))[_0x1db1('0x42')](handleError(_0x996713,null));};exports[_0x1db1('0x24')]=function(_0x2f55bc,_0x1c7da7){return db['DeskAccount'][_0x1db1('0x41')]({'where':{'id':_0x2f55bc[_0x1db1('0x3e')]['id']}})['then'](handleEntityNotFound(_0x1c7da7,null))[_0x1db1('0x23')](removeEntity(_0x1c7da7,null))[_0x1db1('0x42')](handleError(_0x1c7da7,null));};exports[_0x1db1('0x46')]=function(_0x5d904a,_0x18950e,_0xba7362){var _0x2aff8f={};var _0x26db84={};var _0x4f7a82;var _0x9139b;return db[_0x1db1('0x39')]['findOne']({'where':{'id':_0x5d904a['params']['id']}})[_0x1db1('0x23')](handleEntityNotFound(_0x18950e,null))[_0x1db1('0x23')](function(_0x79eb6a){if(_0x79eb6a){_0x4f7a82=_0x79eb6a;_0x26db84[_0x1db1('0x2e')]=_['keys'](db[_0x1db1('0x47')][_0x1db1('0x48')]);_0x26db84[_0x1db1('0x2b')]=_[_0x1db1('0x2c')](_0x5d904a['query']);_0x26db84['filters']=_[_0x1db1('0x3f')](_0x26db84[_0x1db1('0x2e')],_0x26db84[_0x1db1('0x2b')]);_0x2aff8f[_0x1db1('0x2f')]=_[_0x1db1('0x3f')](_0x26db84['model'],qs[_0x1db1('0x30')](_0x5d904a[_0x1db1('0x2b')][_0x1db1('0x30')]));_0x2aff8f['attributes']=_0x2aff8f[_0x1db1('0x2f')][_0x1db1('0x31')]?_0x2aff8f[_0x1db1('0x2f')]:_0x26db84[_0x1db1('0x2e')];_0x2aff8f[_0x1db1('0x33')]=qs[_0x1db1('0x34')](_0x5d904a[_0x1db1('0x2b')][_0x1db1('0x34')]);_0x2aff8f[_0x1db1('0x35')]=qs[_0x1db1('0x2d')](_[_0x1db1('0x49')](_0x5d904a[_0x1db1('0x2b')],_0x26db84['filters']));if(_0x5d904a[_0x1db1('0x2b')]['filter']){_0x2aff8f[_0x1db1('0x35')]=_[_0x1db1('0x36')](_0x2aff8f[_0x1db1('0x35')],{'$or':_[_0x1db1('0x28')](_0x2aff8f['attributes'],function(_0xad6714){var _0x4d5e5a={};_0x4d5e5a[_0xad6714]={'$like':'%'+_0x5d904a['query']['filter']+'%'};return _0x4d5e5a;})});}_0x2aff8f=_[_0x1db1('0x36')]({},_0x2aff8f,_0x5d904a[_0x1db1('0x38')]);return _0x4f7a82[_0x1db1('0x46')](_0x2aff8f);}})[_0x1db1('0x23')](function(_0x5f2888){if(_0x5f2888){_0x9139b=_0x5f2888['length'];if(!_0x5d904a[_0x1db1('0x2b')]['hasOwnProperty']('nolimit')){_0x2aff8f['limit']=qs[_0x1db1('0x1e')](_0x5d904a[_0x1db1('0x2b')]['limit']);_0x2aff8f[_0x1db1('0x1c')]=qs[_0x1db1('0x1c')](_0x5d904a[_0x1db1('0x2b')]['offset']);}return _0x4f7a82['getConfigurations'](_0x2aff8f);}})[_0x1db1('0x23')](function(_0x287d5a){if(_0x287d5a){return _0x287d5a?{'count':_0x9139b,'rows':_0x287d5a}:null;}})[_0x1db1('0x23')](respondWithResult(_0x18950e,null))[_0x1db1('0x42')](handleError(_0x18950e,null));};exports[_0x1db1('0x4a')]=function(_0xa49cb5,_0x180f5f,_0x32e889){if(_0xa49cb5[_0x1db1('0x45')]['id']){delete _0xa49cb5[_0x1db1('0x45')]['id'];}return db[_0x1db1('0x39')][_0x1db1('0x4b')]({'where':{'id':_0xa49cb5[_0x1db1('0x3e')]['id']}})[_0x1db1('0x23')](handleEntityNotFound(_0x180f5f,null))[_0x1db1('0x23')](function(_0x4f9977){if(_0x4f9977){_0xa49cb5[_0x1db1('0x45')][_0x1db1('0x4c')]=_0x4f9977['id'];_0xa49cb5['body'][_0x1db1('0x4d')]=integrations[_0x1db1('0x4e')](_0xa49cb5['body'][_0x1db1('0x4f')],_0xa49cb5[_0x1db1('0x45')][_0x1db1('0x37')]);_0xa49cb5[_0x1db1('0x45')]['Descriptions']=integrations['getDescriptions'](_0xa49cb5[_0x1db1('0x45')][_0x1db1('0x4f')],_0xa49cb5[_0x1db1('0x45')][_0x1db1('0x37')]);return db[_0x1db1('0x47')][_0x1db1('0x43')](_0xa49cb5[_0x1db1('0x45')],{'include':[{'model':db[_0x1db1('0x50')],'as':_0x1db1('0x4d')},{'model':db[_0x1db1('0x50')],'as':_0x1db1('0x51')}]});}return null;})[_0x1db1('0x23')](respondWithResult(_0x180f5f,null))[_0x1db1('0x42')](handleError(_0x180f5f,null));};exports['getFields']=function(_0xdf7805,_0x311758,_0x1a63aa){var _0xe59f13=[{'name':_0x1db1('0x52'),'label':_0x1db1('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 _0x58fa17='';return db[_0x1db1('0x39')][_0x1db1('0x4b')]({'where':{'id':_0xdf7805[_0x1db1('0x3e')]['id']},'attributes':['id',_0x1db1('0x53'),_0x1db1('0x54'),_0x1db1('0x55'),'password',_0x1db1('0x56'),_0x1db1('0x57'),'token','tokenSecret']})[_0x1db1('0x23')](handleEntityNotFound(_0x311758,null))[_0x1db1('0x23')](function(_0x6460ea){if(_0x6460ea){_0x58fa17=_0x6460ea[_0x1db1('0x53')];var _0x12eebe=_0x58fa17['slice'](-0x1);if(_0x12eebe==='/'){_0x58fa17=_0x58fa17[_0x1db1('0x58')](0x0,_0x58fa17['lastIndexOf'](_0x12eebe));}var _0x204036={'method':'GET','uri':util['format'](_0x1db1('0x59'),_0x58fa17),'headers':{'Content-Type':'application/json','Accept':_0x1db1('0x5a')},'json':!![]};if(_0x6460ea[_0x1db1('0x54')]===_0x1db1('0x5b')){_0x204036['headers'][_0x1db1('0x5c')]=util[_0x1db1('0x5d')](_0x1db1('0x5e'),new Buffer(util[_0x1db1('0x5d')](_0x1db1('0x5f'),_0x6460ea[_0x1db1('0x55')],_0x6460ea[_0x1db1('0x60')]))['toString'](_0x1db1('0x61')));}return rp(_0x204036)[_0x1db1('0x23')](function(_0x3b2c3b){return _0xe59f13[_0x1db1('0x62')](_['map'](_0x3b2c3b[_0x1db1('0x63')][_0x1db1('0x64')],function(_0x514479){return{'id':_0x514479[_0x1db1('0x26')],'name':_0x514479[_0x1db1('0x26')],'type':_0x514479['type'],'active':_0x514479[_0x1db1('0x65')],'label':_0x514479[_0x1db1('0x66')],'custom':!![]};}));});}})[_0x1db1('0x23')](function(_0x594ae7){return{'count':_0x594ae7[_0x1db1('0x31')],'rows':_0x594ae7};})['then'](respondWithResult(_0x311758,null))['catch'](function(_0x54a9bf){var _0x2beed3=_0xdf7805['query'][_0x1db1('0x67')]?0x1f4:_0x54a9bf[_0x1db1('0x68')]||0x1f4;logger[_0x1db1('0x25')](_0x1db1('0x69'),'getFields',_0x2beed3,JSON['stringify'](_0x54a9bf));delete _0x54a9bf[_0x1db1('0x26')];if(_0x2beed3===0x191){_0x2beed3=0x190;}_0x311758['status'](_0x2beed3)[_0x1db1('0x6a')](_0xdf7805[_0x1db1('0x2b')][_0x1db1('0x67')]?{'message':'Wrong\x20credentials','statusCode':_0x54a9bf[_0x1db1('0x68')]}:_0x54a9bf);});};
\ No newline at end of file
+var _0x6061=['options','includeAll','include','findAll','catch','show','params','find','create','body','findOne','getConfigurations','AccountId','Subjects','getSubjects','channel','Descriptions','DeskConfiguration','DeskField','getFields','priority','remoteUri','authType','username','password','consumerKey','consumerSecret','token','tokenSecret','substring','GET','%s/custom_fields','application/json','basic','headers','Authorization','format','Basic\x20%s','%s:%s','toString','base64','concat','_embedded','entries','active','getFields,\x20%s,\x20%s,\x20%s','stringify','test','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','offset','undefined','count','limit','json','apply','save','update','then','destroy','error','name','send','index','map','DeskAccount','rawAttributes','type','key','model','query','keys','filters','attributes','intersection','fields','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL'];(function(_0x260a4c,_0x13672f){var _0x120e4a=function(_0x3f559b){while(--_0x3f559b){_0x260a4c['push'](_0x260a4c['shift']());}};_0x120e4a(++_0x13672f);}(_0x6061,0xa1));var _0x1606=function(_0x75ad53,_0x7a2edf){_0x75ad53=_0x75ad53-0x0;var _0x33af29=_0x6061[_0x75ad53];return _0x33af29;};'use strict';var emlformat=require(_0x1606('0x0'));var rimraf=require(_0x1606('0x1'));var zipdir=require(_0x1606('0x2'));var jsonpatch=require(_0x1606('0x3'));var rp=require(_0x1606('0x4'));var moment=require(_0x1606('0x5'));var BPromise=require(_0x1606('0x6'));var Mustache=require('mustache');var util=require(_0x1606('0x7'));var path=require(_0x1606('0x8'));var sox=require('sox');var csv=require(_0x1606('0x9'));var ejs=require(_0x1606('0xa'));var fs=require('fs');var fs_extra=require(_0x1606('0xb'));var _=require(_0x1606('0xc'));var squel=require('squel');var crypto=require(_0x1606('0xd'));var jsforce=require(_0x1606('0xe'));var deskjs=require(_0x1606('0xf'));var toCsv=require(_0x1606('0x9'));var querystring=require(_0x1606('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x1606('0x11'));var as=require(_0x1606('0x12'));var hardwareService=require(_0x1606('0x13'));var logger=require('../../config/logger')(_0x1606('0x14'));var utils=require('../../config/utils');var config=require(_0x1606('0x15'));var licenseUtil=require(_0x1606('0x16'));var db=require(_0x1606('0x17'))['db'];var integrations=require(_0x1606('0x18'));function respondWithStatusCode(_0x196312,_0x2b5fd5){_0x2b5fd5=_0x2b5fd5||0xcc;return function(_0x2fbc23){if(_0x2fbc23){return _0x196312[_0x1606('0x19')](_0x2b5fd5);}return _0x196312[_0x1606('0x1a')](_0x2b5fd5)[_0x1606('0x1b')]();};}function respondWithResult(_0xf9b27a,_0x2fa3df){_0x2fa3df=_0x2fa3df||0xc8;return function(_0x1fe75b){if(_0x1fe75b){return _0xf9b27a['status'](_0x2fa3df)['json'](_0x1fe75b);}};}function respondWithFilteredResult(_0x2aec06,_0x113af1){return function(_0x58e502){if(_0x58e502){var _0x555e91=typeof _0x113af1[_0x1606('0x1c')]===_0x1606('0x1d')&&typeof _0x113af1['limit']==='undefined';var _0x55c2be=_0x58e502[_0x1606('0x1e')];var _0x3380cf=_0x555e91?0x0:_0x113af1[_0x1606('0x1c')];var _0x410f13=_0x555e91?_0x58e502[_0x1606('0x1e')]:_0x113af1[_0x1606('0x1c')]+_0x113af1[_0x1606('0x1f')];var _0x78eccd;if(_0x410f13>=_0x55c2be){_0x410f13=_0x55c2be;_0x78eccd=0xc8;}else{_0x78eccd=0xce;}_0x2aec06[_0x1606('0x1a')](_0x78eccd);return _0x2aec06['set']('Content-Range',_0x3380cf+'-'+_0x410f13+'/'+_0x55c2be)[_0x1606('0x20')](_0x58e502);}return null;};}function patchUpdates(_0x2005dd){return function(_0x233a9f){try{jsonpatch[_0x1606('0x21')](_0x233a9f,_0x2005dd,!![]);}catch(_0xdaa874){return BPromise['reject'](_0xdaa874);}return _0x233a9f[_0x1606('0x22')]();};}function saveUpdates(_0x7132b7,_0x59a856){return function(_0x356e08){if(_0x356e08){return _0x356e08[_0x1606('0x23')](_0x7132b7)[_0x1606('0x24')](function(_0x57759b){return _0x57759b;});}return null;};}function removeEntity(_0x2a6a52,_0x2d8e93){return function(_0x1589a9){if(_0x1589a9){return _0x1589a9[_0x1606('0x25')]()[_0x1606('0x24')](function(){_0x2a6a52[_0x1606('0x1a')](0xcc)[_0x1606('0x1b')]();});}};}function handleEntityNotFound(_0x5404f3,_0x22acf9){return function(_0xb1c517){if(!_0xb1c517){_0x5404f3['sendStatus'](0x194);}return _0xb1c517;};}function handleError(_0x578c51,_0x22b209){_0x22b209=_0x22b209||0x1f4;return function(_0x463019){logger[_0x1606('0x26')](_0x463019['stack']);if(_0x463019[_0x1606('0x27')]){delete _0x463019['name'];}_0x578c51[_0x1606('0x1a')](_0x22b209)[_0x1606('0x28')](_0x463019);};}exports[_0x1606('0x29')]=function(_0x24026c,_0x455d94){var _0x22c996={},_0x31d1fa={},_0x661e53={'count':0x0,'rows':[]};var _0x4f368d=_[_0x1606('0x2a')](db[_0x1606('0x2b')][_0x1606('0x2c')],function(_0x3a4da6){return{'name':_0x3a4da6['fieldName'],'type':_0x3a4da6[_0x1606('0x2d')][_0x1606('0x2e')]};});_0x31d1fa[_0x1606('0x2f')]=_[_0x1606('0x2a')](_0x4f368d,_0x1606('0x27'));_0x31d1fa[_0x1606('0x30')]=_[_0x1606('0x31')](_0x24026c[_0x1606('0x30')]);_0x31d1fa[_0x1606('0x32')]=_['intersection'](_0x31d1fa[_0x1606('0x2f')],_0x31d1fa[_0x1606('0x30')]);_0x22c996[_0x1606('0x33')]=_[_0x1606('0x34')](_0x31d1fa['model'],qs[_0x1606('0x35')](_0x24026c[_0x1606('0x30')][_0x1606('0x35')]));_0x22c996[_0x1606('0x33')]=_0x22c996['attributes'][_0x1606('0x36')]?_0x22c996[_0x1606('0x33')]:_0x31d1fa[_0x1606('0x2f')];if(!_0x24026c[_0x1606('0x30')]['hasOwnProperty'](_0x1606('0x37'))){_0x22c996[_0x1606('0x1f')]=qs[_0x1606('0x1f')](_0x24026c[_0x1606('0x30')][_0x1606('0x1f')]);_0x22c996['offset']=qs[_0x1606('0x1c')](_0x24026c[_0x1606('0x30')][_0x1606('0x1c')]);}_0x22c996[_0x1606('0x38')]=qs[_0x1606('0x39')](_0x24026c[_0x1606('0x30')][_0x1606('0x39')]);_0x22c996[_0x1606('0x3a')]=qs[_0x1606('0x32')](_[_0x1606('0x3b')](_0x24026c[_0x1606('0x30')],_0x31d1fa[_0x1606('0x32')]),_0x4f368d);if(_0x24026c[_0x1606('0x30')][_0x1606('0x3c')]){_0x22c996['where']=_[_0x1606('0x3d')](_0x22c996[_0x1606('0x3a')],{'$or':_[_0x1606('0x2a')](_0x4f368d,function(_0x1942a7){if(_0x1942a7[_0x1606('0x2d')]!==_0x1606('0x3e')){var _0x1ccb0a={};_0x1ccb0a[_0x1942a7[_0x1606('0x27')]]={'$like':'%'+_0x24026c[_0x1606('0x30')][_0x1606('0x3c')]+'%'};return _0x1ccb0a;}})});}_0x22c996=_[_0x1606('0x3d')]({},_0x22c996,_0x24026c[_0x1606('0x3f')]);var _0x1f06c4={'where':_0x22c996[_0x1606('0x3a')]};return db['DeskAccount']['count'](_0x1f06c4)[_0x1606('0x24')](function(_0x236b47){_0x661e53[_0x1606('0x1e')]=_0x236b47;if(_0x24026c[_0x1606('0x30')][_0x1606('0x40')]){_0x22c996[_0x1606('0x41')]=[{'all':!![]}];}return db[_0x1606('0x2b')][_0x1606('0x42')](_0x22c996);})[_0x1606('0x24')](function(_0x45a138){_0x661e53['rows']=_0x45a138;return _0x661e53;})[_0x1606('0x24')](respondWithFilteredResult(_0x455d94,_0x22c996))[_0x1606('0x43')](handleError(_0x455d94,null));};exports[_0x1606('0x44')]=function(_0x28e358,_0x10d5ed){var _0x9ef5e2={'raw':![],'where':{'id':_0x28e358[_0x1606('0x45')]['id']}},_0x13ee64={};_0x13ee64[_0x1606('0x2f')]=_[_0x1606('0x31')](db[_0x1606('0x2b')][_0x1606('0x2c')]);_0x13ee64[_0x1606('0x30')]=_[_0x1606('0x31')](_0x28e358[_0x1606('0x30')]);_0x13ee64[_0x1606('0x32')]=_[_0x1606('0x34')](_0x13ee64['model'],_0x13ee64['query']);_0x9ef5e2['attributes']=_['intersection'](_0x13ee64['model'],qs['fields'](_0x28e358['query'][_0x1606('0x35')]));_0x9ef5e2['attributes']=_0x9ef5e2[_0x1606('0x33')]['length']?_0x9ef5e2[_0x1606('0x33')]:_0x13ee64[_0x1606('0x2f')];if(_0x28e358[_0x1606('0x30')][_0x1606('0x40')]){_0x9ef5e2['include']=[{'all':!![]}];}_0x9ef5e2=_['merge']({},_0x9ef5e2,_0x28e358['options']);return db['DeskAccount'][_0x1606('0x46')](_0x9ef5e2)[_0x1606('0x24')](handleEntityNotFound(_0x10d5ed,null))['then'](respondWithResult(_0x10d5ed,null))['catch'](handleError(_0x10d5ed,null));};exports[_0x1606('0x47')]=function(_0x46c7b8,_0x22da0c){return db[_0x1606('0x2b')][_0x1606('0x47')](_0x46c7b8[_0x1606('0x48')],{})[_0x1606('0x24')](respondWithResult(_0x22da0c,0xc9))[_0x1606('0x43')](handleError(_0x22da0c,null));};exports[_0x1606('0x23')]=function(_0x594621,_0x23f210){if(_0x594621['body']['id']){delete _0x594621[_0x1606('0x48')]['id'];}return db[_0x1606('0x2b')][_0x1606('0x46')]({'where':{'id':_0x594621['params']['id']}})[_0x1606('0x24')](handleEntityNotFound(_0x23f210,null))[_0x1606('0x24')](saveUpdates(_0x594621[_0x1606('0x48')],null))[_0x1606('0x24')](respondWithResult(_0x23f210,null))[_0x1606('0x43')](handleError(_0x23f210,null));};exports[_0x1606('0x25')]=function(_0x436e13,_0x3cc978){return db[_0x1606('0x2b')]['find']({'where':{'id':_0x436e13[_0x1606('0x45')]['id']}})[_0x1606('0x24')](handleEntityNotFound(_0x3cc978,null))[_0x1606('0x24')](removeEntity(_0x3cc978,null))[_0x1606('0x43')](handleError(_0x3cc978,null));};exports['getConfigurations']=function(_0x8f0d62,_0x1ca6de,_0x52ccd6){var _0x38cfbe={};var _0x39bbb1={};var _0x578124;var _0x5b0eba;return db[_0x1606('0x2b')][_0x1606('0x49')]({'where':{'id':_0x8f0d62[_0x1606('0x45')]['id']}})[_0x1606('0x24')](handleEntityNotFound(_0x1ca6de,null))['then'](function(_0x10a347){if(_0x10a347){_0x578124=_0x10a347;_0x39bbb1[_0x1606('0x2f')]=_[_0x1606('0x31')](db['DeskConfiguration'][_0x1606('0x2c')]);_0x39bbb1['query']=_[_0x1606('0x31')](_0x8f0d62[_0x1606('0x30')]);_0x39bbb1[_0x1606('0x32')]=_[_0x1606('0x34')](_0x39bbb1[_0x1606('0x2f')],_0x39bbb1['query']);_0x38cfbe[_0x1606('0x33')]=_['intersection'](_0x39bbb1[_0x1606('0x2f')],qs['fields'](_0x8f0d62['query'][_0x1606('0x35')]));_0x38cfbe[_0x1606('0x33')]=_0x38cfbe[_0x1606('0x33')][_0x1606('0x36')]?_0x38cfbe[_0x1606('0x33')]:_0x39bbb1['model'];_0x38cfbe[_0x1606('0x38')]=qs['sort'](_0x8f0d62[_0x1606('0x30')]['sort']);_0x38cfbe[_0x1606('0x3a')]=qs[_0x1606('0x32')](_[_0x1606('0x3b')](_0x8f0d62[_0x1606('0x30')],_0x39bbb1[_0x1606('0x32')]));if(_0x8f0d62[_0x1606('0x30')][_0x1606('0x3c')]){_0x38cfbe['where']=_[_0x1606('0x3d')](_0x38cfbe[_0x1606('0x3a')],{'$or':_['map'](_0x38cfbe[_0x1606('0x33')],function(_0x37c039){var _0x4de2af={};_0x4de2af[_0x37c039]={'$like':'%'+_0x8f0d62[_0x1606('0x30')][_0x1606('0x3c')]+'%'};return _0x4de2af;})});}_0x38cfbe=_[_0x1606('0x3d')]({},_0x38cfbe,_0x8f0d62[_0x1606('0x3f')]);return _0x578124[_0x1606('0x4a')](_0x38cfbe);}})[_0x1606('0x24')](function(_0x1dfc2a){if(_0x1dfc2a){_0x5b0eba=_0x1dfc2a[_0x1606('0x36')];if(!_0x8f0d62['query']['hasOwnProperty'](_0x1606('0x37'))){_0x38cfbe[_0x1606('0x1f')]=qs[_0x1606('0x1f')](_0x8f0d62[_0x1606('0x30')][_0x1606('0x1f')]);_0x38cfbe[_0x1606('0x1c')]=qs[_0x1606('0x1c')](_0x8f0d62[_0x1606('0x30')][_0x1606('0x1c')]);}return _0x578124[_0x1606('0x4a')](_0x38cfbe);}})[_0x1606('0x24')](function(_0x281077){if(_0x281077){return _0x281077?{'count':_0x5b0eba,'rows':_0x281077}:null;}})['then'](respondWithResult(_0x1ca6de,null))[_0x1606('0x43')](handleError(_0x1ca6de,null));};exports['addConfiguration']=function(_0x5378a5,_0xabe521,_0x254140){if(_0x5378a5[_0x1606('0x48')]['id']){delete _0x5378a5[_0x1606('0x48')]['id'];}return db[_0x1606('0x2b')]['findOne']({'where':{'id':_0x5378a5['params']['id']}})[_0x1606('0x24')](handleEntityNotFound(_0xabe521,null))[_0x1606('0x24')](function(_0x380e82){if(_0x380e82){_0x5378a5[_0x1606('0x48')][_0x1606('0x4b')]=_0x380e82['id'];_0x5378a5[_0x1606('0x48')][_0x1606('0x4c')]=integrations[_0x1606('0x4d')](_0x5378a5[_0x1606('0x48')][_0x1606('0x4e')],_0x5378a5['body'][_0x1606('0x2d')]);_0x5378a5[_0x1606('0x48')][_0x1606('0x4f')]=integrations['getDescriptions'](_0x5378a5['body'][_0x1606('0x4e')],_0x5378a5[_0x1606('0x48')][_0x1606('0x2d')]);return db[_0x1606('0x50')][_0x1606('0x47')](_0x5378a5[_0x1606('0x48')],{'include':[{'model':db['DeskField'],'as':_0x1606('0x4c')},{'model':db[_0x1606('0x51')],'as':_0x1606('0x4f')}]});}return null;})[_0x1606('0x24')](respondWithResult(_0xabe521,null))[_0x1606('0x43')](handleError(_0xabe521,null));};exports[_0x1606('0x52')]=function(_0x50c831,_0x23b57c,_0x2ebd2b){var _0x1da78d=[{'name':'priority','label':_0x1606('0x53'),'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 _0x2d40cd='';return db['DeskAccount'][_0x1606('0x49')]({'where':{'id':_0x50c831['params']['id']},'attributes':['id',_0x1606('0x54'),_0x1606('0x55'),_0x1606('0x56'),_0x1606('0x57'),_0x1606('0x58'),_0x1606('0x59'),_0x1606('0x5a'),_0x1606('0x5b')]})['then'](handleEntityNotFound(_0x23b57c,null))['then'](function(_0x339122){if(_0x339122){_0x2d40cd=_0x339122['remoteUri'];var _0x54bad1=_0x2d40cd['slice'](-0x1);if(_0x54bad1==='/'){_0x2d40cd=_0x2d40cd[_0x1606('0x5c')](0x0,_0x2d40cd['lastIndexOf'](_0x54bad1));}var _0x267d73={'method':_0x1606('0x5d'),'uri':util['format'](_0x1606('0x5e'),_0x2d40cd),'headers':{'Content-Type':_0x1606('0x5f'),'Accept':'application/json'},'json':!![]};if(_0x339122['authType']===_0x1606('0x60')){_0x267d73[_0x1606('0x61')][_0x1606('0x62')]=util[_0x1606('0x63')](_0x1606('0x64'),new Buffer(util['format'](_0x1606('0x65'),_0x339122[_0x1606('0x56')],_0x339122['password']))[_0x1606('0x66')](_0x1606('0x67')));}return rp(_0x267d73)[_0x1606('0x24')](function(_0x1acc73){return _0x1da78d[_0x1606('0x68')](_['map'](_0x1acc73[_0x1606('0x69')][_0x1606('0x6a')],function(_0x412a58){return{'id':_0x412a58[_0x1606('0x27')],'name':_0x412a58[_0x1606('0x27')],'type':_0x412a58['type'],'active':_0x412a58[_0x1606('0x6b')],'label':_0x412a58['label'],'custom':!![]};}));});}})[_0x1606('0x24')](function(_0x456b96){return{'count':_0x456b96['length'],'rows':_0x456b96};})[_0x1606('0x24')](respondWithResult(_0x23b57c,null))[_0x1606('0x43')](function(_0x346256){var _0x1b98c2=_0x50c831[_0x1606('0x30')]['test']?0x1f4:_0x346256['statusCode']||0x1f4;logger[_0x1606('0x26')](_0x1606('0x6c'),_0x1606('0x52'),_0x1b98c2,JSON[_0x1606('0x6d')](_0x346256));delete _0x346256[_0x1606('0x27')];if(_0x1b98c2===0x191){_0x1b98c2=0x190;}_0x23b57c[_0x1606('0x1a')](_0x1b98c2)[_0x1606('0x28')](_0x50c831[_0x1606('0x30')][_0x1606('0x6e')]?{'message':_0x1606('0x6f'),'statusCode':_0x346256['statusCode']}:_0x346256);});};
\ No newline at end of file
index ffeb99d..574ee1f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x63b1=['../../config/environment','./intDeskAccount.attributes','../../components/integrations/configuration','define','int_desk_accounts','util','bluebird','request-promise','path','rimraf'];(function(_0x7918a1,_0xcdad9){var _0x436a7a=function(_0x21444f){while(--_0x21444f){_0x7918a1['push'](_0x7918a1['shift']());}};_0x436a7a(++_0xcdad9);}(_0x63b1,0x1d1));var _0x163b=function(_0x10fadc,_0x5871f2){_0x10fadc=_0x10fadc-0x0;var _0x1e0afa=_0x63b1[_0x10fadc];return _0x1e0afa;};'use strict';var _=require('lodash');var util=require(_0x163b('0x0'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x163b('0x1'));var rp=require(_0x163b('0x2'));var fs=require('fs');var path=require(_0x163b('0x3'));var rimraf=require(_0x163b('0x4'));var config=require(_0x163b('0x5'));var attributes=require(_0x163b('0x6'));var integrations=require(_0x163b('0x7'));module['exports']=function(_0x416f12,_0x5b9482){return _0x416f12[_0x163b('0x8')]('DeskAccount',attributes,{'tableName':_0x163b('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf2b8=['moment','request-promise','path','rimraf','../../config/environment','./intDeskAccount.attributes','define','DeskAccount','int_desk_accounts','lodash','util','../../config/logger','api'];(function(_0xffa198,_0x5a8940){var _0x1e4b50=function(_0x1f1c43){while(--_0x1f1c43){_0xffa198['push'](_0xffa198['shift']());}};_0x1e4b50(++_0x5a8940);}(_0xf2b8,0x71));var _0x8f2b=function(_0xb6aa38,_0x58237f){_0xb6aa38=_0xb6aa38-0x0;var _0x464230=_0xf2b8[_0xb6aa38];return _0x464230;};'use strict';var _=require(_0x8f2b('0x0'));var util=require(_0x8f2b('0x1'));var logger=require(_0x8f2b('0x2'))(_0x8f2b('0x3'));var moment=require(_0x8f2b('0x4'));var BPromise=require('bluebird');var rp=require(_0x8f2b('0x5'));var fs=require('fs');var path=require(_0x8f2b('0x6'));var rimraf=require(_0x8f2b('0x7'));var config=require(_0x8f2b('0x8'));var attributes=require(_0x8f2b('0x9'));var integrations=require('../../components/integrations/configuration');module['exports']=function(_0x118f10,_0xc63a73){return _0x118f10[_0x8f2b('0xa')](_0x8f2b('0xb'),attributes,{'tableName':_0x8f2b('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 99a9fee..91eda86 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d07=['map','ShowDeskAccount','find','then','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','DeskAccount,\x20%s,\x20%s','request\x20sent','debug','DeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','GetDeskAccount','DeskAccount','findAll','options','raw','where','attributes','limit','include','model'];(function(_0x567d04,_0x3d13a1){var _0x58ee79=function(_0x4c5548){while(--_0x4c5548){_0x567d04['push'](_0x567d04['shift']());}};_0x58ee79(++_0x3d13a1);}(_0x5d07,0xf9));var _0x75d0=function(_0x556f70,_0x540d53){_0x556f70=_0x556f70-0x0;var _0x38dc3f=_0x5d07[_0x556f70];return _0x38dc3f;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x75d0('0x0'));var fs=require('fs');var Redis=require(_0x75d0('0x1'));var db=require(_0x75d0('0x2'))['db'];var utils=require(_0x75d0('0x3'));var logger=require(_0x75d0('0x4'))(_0x75d0('0x5'));var config=require(_0x75d0('0x6'));var jayson=require(_0x75d0('0x7'));var client=jayson['client'][_0x75d0('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x5936aa,_0x3883e0,_0x4c6480){return new BPromise(function(_0x451642,_0x55419d){return client[_0x75d0('0x9')](_0x5936aa,_0x4c6480)['then'](function(_0x24092a){logger['info'](_0x75d0('0xa'),_0x3883e0,_0x75d0('0xb'));logger[_0x75d0('0xc')](_0x75d0('0xd'),_0x3883e0,_0x75d0('0xb'),JSON[_0x75d0('0xe')](_0x24092a));if(_0x24092a[_0x75d0('0xf')]){if(_0x24092a[_0x75d0('0xf')][_0x75d0('0x10')]===0x1f4){logger['error'](_0x75d0('0xa'),_0x3883e0,_0x24092a[_0x75d0('0xf')]['message']);return _0x55419d(_0x24092a[_0x75d0('0xf')]['message']);}logger[_0x75d0('0xf')](_0x75d0('0xa'),_0x3883e0,_0x24092a[_0x75d0('0xf')][_0x75d0('0x11')]);return _0x451642(_0x24092a['error'][_0x75d0('0x11')]);}else{logger[_0x75d0('0x12')](_0x75d0('0xa'),_0x3883e0,_0x75d0('0xb'));_0x451642(_0x24092a[_0x75d0('0x13')][_0x75d0('0x11')]);}})[_0x75d0('0x14')](function(_0x120efa){logger[_0x75d0('0xf')](_0x75d0('0xa'),_0x3883e0,_0x120efa);_0x55419d(_0x120efa);});});}exports[_0x75d0('0x15')]=function(_0x1e75fb){var _0x201e0f=this;return new Promise(function(_0x3021d9,_0x524054){return db[_0x75d0('0x16')][_0x75d0('0x17')]({'raw':_0x1e75fb[_0x75d0('0x18')]?_0x1e75fb[_0x75d0('0x18')][_0x75d0('0x19')]===undefined?!![]:![]:!![],'where':_0x1e75fb[_0x75d0('0x18')]?_0x1e75fb[_0x75d0('0x18')][_0x75d0('0x1a')]||null:null,'attributes':_0x1e75fb[_0x75d0('0x18')]?_0x1e75fb[_0x75d0('0x18')][_0x75d0('0x1b')]||null:null,'limit':_0x1e75fb[_0x75d0('0x18')]?_0x1e75fb[_0x75d0('0x18')][_0x75d0('0x1c')]||null:null,'include':_0x1e75fb[_0x75d0('0x18')]?_0x1e75fb[_0x75d0('0x18')][_0x75d0('0x1d')]?_['map'](_0x1e75fb['options']['include'],function(_0x62c877){return{'model':db[_0x62c877[_0x75d0('0x1e')]],'as':_0x62c877['as'],'attributes':_0x62c877['attributes'],'include':_0x62c877['include']?_[_0x75d0('0x1f')](_0x62c877[_0x75d0('0x1d')],function(_0x447a11){return{'model':db[_0x447a11['model']],'as':_0x447a11['as'],'attributes':_0x447a11['attributes'],'include':_0x447a11[_0x75d0('0x1d')]?_[_0x75d0('0x1f')](_0x447a11[_0x75d0('0x1d')],function(_0x3eb5c8){return{'model':db[_0x3eb5c8[_0x75d0('0x1e')]],'as':_0x3eb5c8['as'],'attributes':_0x3eb5c8[_0x75d0('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x43bef2){logger[_0x75d0('0x12')](_0x75d0('0x15'),_0x1e75fb);logger[_0x75d0('0xc')]('GetDeskAccount',_0x1e75fb,JSON[_0x75d0('0xe')](_0x43bef2));_0x3021d9(_0x43bef2);})[_0x75d0('0x14')](function(_0x55fc53){logger['error'](_0x75d0('0x15'),_0x55fc53[_0x75d0('0x11')],_0x1e75fb);_0x524054(_0x201e0f[_0x75d0('0xf')](0x1f4,_0x55fc53[_0x75d0('0x11')]));});});};exports[_0x75d0('0x20')]=function(_0x506119){var _0x5f2936=this;return new Promise(function(_0x515e2e,_0x317946){return db[_0x75d0('0x16')][_0x75d0('0x21')]({'raw':_0x506119[_0x75d0('0x18')]?_0x506119[_0x75d0('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x506119[_0x75d0('0x18')]?_0x506119[_0x75d0('0x18')][_0x75d0('0x1a')]||null:null,'attributes':_0x506119[_0x75d0('0x18')]?_0x506119['options']['attributes']||null:null,'include':_0x506119[_0x75d0('0x18')]?_0x506119[_0x75d0('0x18')]['include']?_[_0x75d0('0x1f')](_0x506119[_0x75d0('0x18')][_0x75d0('0x1d')],function(_0x31ab92){return{'model':db[_0x31ab92['model']],'as':_0x31ab92['as'],'attributes':_0x31ab92[_0x75d0('0x1b')],'include':_0x31ab92[_0x75d0('0x1d')]?_[_0x75d0('0x1f')](_0x31ab92[_0x75d0('0x1d')],function(_0xca5bf5){return{'model':db[_0xca5bf5[_0x75d0('0x1e')]],'as':_0xca5bf5['as'],'attributes':_0xca5bf5[_0x75d0('0x1b')],'include':_0xca5bf5['include']?_[_0x75d0('0x1f')](_0xca5bf5[_0x75d0('0x1d')],function(_0x439df2){return{'model':db[_0x439df2[_0x75d0('0x1e')]],'as':_0x439df2['as'],'attributes':_0x439df2['attributes']};}):[]};}):[]};}):[]:[]})[_0x75d0('0x22')](function(_0x3d00d8){logger['info'](_0x75d0('0x20'),_0x506119);logger[_0x75d0('0xc')](_0x75d0('0x20'),_0x506119,JSON[_0x75d0('0xe')](_0x3d00d8));_0x515e2e(_0x3d00d8);})['catch'](function(_0x55412c){logger['error'](_0x75d0('0x20'),_0x55412c[_0x75d0('0x11')],_0x506119);_0x317946(_0x5f2936[_0x75d0('0xf')](0x1f4,_0x55412c[_0x75d0('0x11')]));});});};
\ No newline at end of file
+var _0x64bf=['DeskAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','GetDeskAccount','DeskAccount','findAll','options','raw','where','limit','include','model','attributes','map','ShowDeskAccount','find','lodash','util','moment','bluebird','ioredis','../../config/logger','../../config/environment','client','http','then','info','DeskAccount,\x20%s,\x20%s','debug'];(function(_0x4b5bb4,_0x54ae82){var _0x3dd8c7=function(_0x154c91){while(--_0x154c91){_0x4b5bb4['push'](_0x4b5bb4['shift']());}};_0x3dd8c7(++_0x54ae82);}(_0x64bf,0x77));var _0xf64b=function(_0x13d2f6,_0x4b5541){_0x13d2f6=_0x13d2f6-0x0;var _0x4d2f05=_0x64bf[_0x13d2f6];return _0x4d2f05;};'use strict';var _=require(_0xf64b('0x0'));var util=require(_0xf64b('0x1'));var moment=require(_0xf64b('0x2'));var BPromise=require(_0xf64b('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf64b('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xf64b('0x5'))('rpc');var config=require(_0xf64b('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xf64b('0x7')][_0xf64b('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1b3936,_0x4e0a3a,_0x289c71){return new BPromise(function(_0x4bf209,_0x338591){return client['request'](_0x1b3936,_0x289c71)[_0xf64b('0x9')](function(_0x5c0c63){logger[_0xf64b('0xa')](_0xf64b('0xb'),_0x4e0a3a,'request\x20sent');logger[_0xf64b('0xc')](_0xf64b('0xd'),_0x4e0a3a,_0xf64b('0xe'),JSON[_0xf64b('0xf')](_0x5c0c63));if(_0x5c0c63[_0xf64b('0x10')]){if(_0x5c0c63[_0xf64b('0x10')]['code']===0x1f4){logger[_0xf64b('0x10')]('DeskAccount,\x20%s,\x20%s',_0x4e0a3a,_0x5c0c63[_0xf64b('0x10')][_0xf64b('0x11')]);return _0x338591(_0x5c0c63[_0xf64b('0x10')]['message']);}logger[_0xf64b('0x10')](_0xf64b('0xb'),_0x4e0a3a,_0x5c0c63[_0xf64b('0x10')][_0xf64b('0x11')]);return _0x4bf209(_0x5c0c63[_0xf64b('0x10')][_0xf64b('0x11')]);}else{logger['info'](_0xf64b('0xb'),_0x4e0a3a,_0xf64b('0xe'));_0x4bf209(_0x5c0c63[_0xf64b('0x12')][_0xf64b('0x11')]);}})[_0xf64b('0x13')](function(_0x285876){logger['error'](_0xf64b('0xb'),_0x4e0a3a,_0x285876);_0x338591(_0x285876);});});}exports[_0xf64b('0x14')]=function(_0x24c9df){var _0x4b9826=this;return new Promise(function(_0x3e29e1,_0x7a9d1a){return db[_0xf64b('0x15')][_0xf64b('0x16')]({'raw':_0x24c9df['options']?_0x24c9df[_0xf64b('0x17')][_0xf64b('0x18')]===undefined?!![]:![]:!![],'where':_0x24c9df[_0xf64b('0x17')]?_0x24c9df[_0xf64b('0x17')][_0xf64b('0x19')]||null:null,'attributes':_0x24c9df[_0xf64b('0x17')]?_0x24c9df[_0xf64b('0x17')]['attributes']||null:null,'limit':_0x24c9df[_0xf64b('0x17')]?_0x24c9df[_0xf64b('0x17')][_0xf64b('0x1a')]||null:null,'include':_0x24c9df['options']?_0x24c9df[_0xf64b('0x17')]['include']?_['map'](_0x24c9df[_0xf64b('0x17')][_0xf64b('0x1b')],function(_0x40b8e8){return{'model':db[_0x40b8e8[_0xf64b('0x1c')]],'as':_0x40b8e8['as'],'attributes':_0x40b8e8[_0xf64b('0x1d')],'include':_0x40b8e8['include']?_[_0xf64b('0x1e')](_0x40b8e8['include'],function(_0x4c6f68){return{'model':db[_0x4c6f68[_0xf64b('0x1c')]],'as':_0x4c6f68['as'],'attributes':_0x4c6f68[_0xf64b('0x1d')],'include':_0x4c6f68[_0xf64b('0x1b')]?_[_0xf64b('0x1e')](_0x4c6f68[_0xf64b('0x1b')],function(_0x521c3b){return{'model':db[_0x521c3b[_0xf64b('0x1c')]],'as':_0x521c3b['as'],'attributes':_0x521c3b[_0xf64b('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xf64b('0x9')](function(_0x3723d1){logger[_0xf64b('0xa')]('GetDeskAccount',_0x24c9df);logger[_0xf64b('0xc')]('GetDeskAccount',_0x24c9df,JSON['stringify'](_0x3723d1));_0x3e29e1(_0x3723d1);})['catch'](function(_0x3996da){logger[_0xf64b('0x10')]('GetDeskAccount',_0x3996da[_0xf64b('0x11')],_0x24c9df);_0x7a9d1a(_0x4b9826['error'](0x1f4,_0x3996da[_0xf64b('0x11')]));});});};exports[_0xf64b('0x1f')]=function(_0x582510){var _0x5646e5=this;return new Promise(function(_0x46e90e,_0x54652f){return db[_0xf64b('0x15')][_0xf64b('0x20')]({'raw':_0x582510[_0xf64b('0x17')]?_0x582510['options'][_0xf64b('0x18')]===undefined?!![]:![]:!![],'where':_0x582510[_0xf64b('0x17')]?_0x582510[_0xf64b('0x17')]['where']||null:null,'attributes':_0x582510[_0xf64b('0x17')]?_0x582510[_0xf64b('0x17')][_0xf64b('0x1d')]||null:null,'include':_0x582510[_0xf64b('0x17')]?_0x582510[_0xf64b('0x17')][_0xf64b('0x1b')]?_[_0xf64b('0x1e')](_0x582510[_0xf64b('0x17')]['include'],function(_0x68a652){return{'model':db[_0x68a652['model']],'as':_0x68a652['as'],'attributes':_0x68a652['attributes'],'include':_0x68a652['include']?_[_0xf64b('0x1e')](_0x68a652[_0xf64b('0x1b')],function(_0x370471){return{'model':db[_0x370471[_0xf64b('0x1c')]],'as':_0x370471['as'],'attributes':_0x370471[_0xf64b('0x1d')],'include':_0x370471[_0xf64b('0x1b')]?_[_0xf64b('0x1e')](_0x370471[_0xf64b('0x1b')],function(_0x2dc38a){return{'model':db[_0x2dc38a[_0xf64b('0x1c')]],'as':_0x2dc38a['as'],'attributes':_0x2dc38a[_0xf64b('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xf64b('0x9')](function(_0x30b038){logger[_0xf64b('0xa')]('ShowDeskAccount',_0x582510);logger['debug'](_0xf64b('0x1f'),_0x582510,JSON[_0xf64b('0xf')](_0x30b038));_0x46e90e(_0x30b038);})['catch'](function(_0x489ccb){logger[_0xf64b('0x10')]('ShowDeskAccount',_0x489ccb[_0xf64b('0x11')],_0x582510);_0x54652f(_0x5646e5[_0xf64b('0x10')](0x1f4,_0x489ccb['message']));});});};
\ No newline at end of file
index faab8fe..0c56ff5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['getTags','post','create','setTags','put','update','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intDeskConfiguration.controller','get','isAuthenticated','index','/:id','show','/:id/fields','getSubjects','/:id/descriptions','/:id/tags'];(function(_0x49dc06,_0x13c5e3){var _0x364efa=function(_0x4537bb){while(--_0x4537bb){_0x49dc06['push'](_0x49dc06['shift']());}};_0x364efa(++_0x13c5e3);}(_0xedd9,0xfc));var _0x9edd=function(_0x25c161,_0x4f6bd7){_0x25c161=_0x25c161-0x0;var _0x3df80b=_0xedd9[_0x25c161];return _0x3df80b;};'use strict';var multer=require('multer');var util=require(_0x9edd('0x0'));var path=require(_0x9edd('0x1'));var timeout=require(_0x9edd('0x2'));var express=require(_0x9edd('0x3'));var router=express[_0x9edd('0x4')]();var fs_extra=require(_0x9edd('0x5'));var auth=require(_0x9edd('0x6'));var interaction=require(_0x9edd('0x7'));var config=require('../../config/environment');var controller=require(_0x9edd('0x8'));router[_0x9edd('0x9')]('/',auth[_0x9edd('0xa')](),controller[_0x9edd('0xb')]);router['get'](_0x9edd('0xc'),auth['isAuthenticated'](),controller[_0x9edd('0xd')]);router[_0x9edd('0x9')](_0x9edd('0xe'),auth[_0x9edd('0xa')](),controller['getFields']);router[_0x9edd('0x9')]('/:id/subjects',auth[_0x9edd('0xa')](),controller[_0x9edd('0xf')]);router['get'](_0x9edd('0x10'),auth[_0x9edd('0xa')](),controller['getDescriptions']);router[_0x9edd('0x9')](_0x9edd('0x11'),auth[_0x9edd('0xa')](),controller[_0x9edd('0x12')]);router[_0x9edd('0x13')]('/',auth[_0x9edd('0xa')](),controller[_0x9edd('0x14')]);router[_0x9edd('0x13')]('/:id/tags',auth[_0x9edd('0xa')](),controller[_0x9edd('0x15')]);router[_0x9edd('0x16')](_0x9edd('0xc'),auth[_0x9edd('0xa')](),controller[_0x9edd('0x17')]);router[_0x9edd('0x18')](_0x9edd('0xc'),auth['isAuthenticated'](),controller[_0x9edd('0x19')]);module[_0x9edd('0x1a')]=router;
\ No newline at end of file
+var _0x34e8=['../../config/environment','./intDeskConfiguration.controller','get','index','/:id','isAuthenticated','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','/:id/tags','getTags','post','create','put','update','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0xe78bb2,_0x5dcfdd){var _0x161aac=function(_0x8cc912){while(--_0x8cc912){_0xe78bb2['push'](_0xe78bb2['shift']());}};_0x161aac(++_0x5dcfdd);}(_0x34e8,0x12c));var _0x834e=function(_0xe2908b,_0xe49917){_0xe2908b=_0xe2908b-0x0;var _0x24a62a=_0x34e8[_0xe2908b];return _0x24a62a;};'use strict';var multer=require(_0x834e('0x0'));var util=require(_0x834e('0x1'));var path=require(_0x834e('0x2'));var timeout=require(_0x834e('0x3'));var express=require('express');var router=express[_0x834e('0x4')]();var fs_extra=require(_0x834e('0x5'));var auth=require(_0x834e('0x6'));var interaction=require(_0x834e('0x7'));var config=require(_0x834e('0x8'));var controller=require(_0x834e('0x9'));router[_0x834e('0xa')]('/',auth['isAuthenticated'](),controller[_0x834e('0xb')]);router['get'](_0x834e('0xc'),auth[_0x834e('0xd')](),controller[_0x834e('0xe')]);router[_0x834e('0xa')](_0x834e('0xf'),auth[_0x834e('0xd')](),controller[_0x834e('0x10')]);router[_0x834e('0xa')](_0x834e('0x11'),auth[_0x834e('0xd')](),controller[_0x834e('0x12')]);router[_0x834e('0xa')](_0x834e('0x13'),auth[_0x834e('0xd')](),controller[_0x834e('0x14')]);router[_0x834e('0xa')](_0x834e('0x15'),auth['isAuthenticated'](),controller[_0x834e('0x16')]);router[_0x834e('0x17')]('/',auth['isAuthenticated'](),controller[_0x834e('0x18')]);router[_0x834e('0x17')](_0x834e('0x15'),auth[_0x834e('0xd')](),controller['setTags']);router[_0x834e('0x19')](_0x834e('0xc'),auth['isAuthenticated'](),controller[_0x834e('0x1a')]);router['delete'](_0x834e('0xc'),auth[_0x834e('0xd')](),controller['destroy']);module[_0x834e('0x1b')]=router;
\ No newline at end of file
index 1db59d7..593ea07 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x164e=['exports','STRING','sequelize'];(function(_0x113c46,_0x3c67ea){var _0xe71fd3=function(_0x4510fb){while(--_0x4510fb){_0x113c46['push'](_0x113c46['shift']());}};_0xe71fd3(++_0x3c67ea);}(_0x164e,0x182));var _0xe164=function(_0xdd1da3,_0x245e9d){_0xdd1da3=_0xdd1da3-0x0;var _0x18ae17=_0x164e[_0xdd1da3];return _0x18ae17;};'use strict';var Sequelize=require(_0xe164('0x0'));module[_0xe164('0x1')]={'name':{'type':Sequelize[_0xe164('0x2')]},'description':{'type':Sequelize[_0xe164('0x2')]}};
\ No newline at end of file
+var _0x5427=['sequelize','exports'];(function(_0x2d364e,_0x301c5e){var _0x1b9312=function(_0x1b05bb){while(--_0x1b05bb){_0x2d364e['push'](_0x2d364e['shift']());}};_0x1b9312(++_0x301c5e);}(_0x5427,0x1d6));var _0x7542=function(_0x43b79c,_0x4de0b8){_0x43b79c=_0x43b79c-0x0;var _0x59f606=_0x5427[_0x43b79c];return _0x59f606;};'use strict';var Sequelize=require(_0x7542('0x0'));module[_0x7542('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 58b1b14..381cd04 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd0e7=['Tag','setTags','ids','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','apply','reject','save','destroy','then','error','name','send','index','map','DeskConfiguration','fieldName','type','key','model','keys','filters','intersection','query','attributes','fields','length','nolimit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','params','create','body','find','getFields','findOne','pick','getSubjects','rawAttributes','hasOwnProperty','getDescriptions','DeskField','getTags'];(function(_0x3ca6c1,_0x1c9e15){var _0xc43f29=function(_0x68e585){while(--_0x68e585){_0x3ca6c1['push'](_0x3ca6c1['shift']());}};_0xc43f29(++_0x1c9e15);}(_0xd0e7,0x1bb));var _0x7d0e=function(_0x59d0cc,_0xa7c52b){_0x59d0cc=_0x59d0cc-0x0;var _0x2ae79f=_0xd0e7[_0x59d0cc];return _0x2ae79f;};'use strict';var emlformat=require(_0x7d0e('0x0'));var rimraf=require(_0x7d0e('0x1'));var zipdir=require(_0x7d0e('0x2'));var jsonpatch=require(_0x7d0e('0x3'));var rp=require(_0x7d0e('0x4'));var moment=require(_0x7d0e('0x5'));var BPromise=require(_0x7d0e('0x6'));var Mustache=require(_0x7d0e('0x7'));var util=require(_0x7d0e('0x8'));var path=require(_0x7d0e('0x9'));var sox=require(_0x7d0e('0xa'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7d0e('0xb'));var _=require(_0x7d0e('0xc'));var squel=require('squel');var crypto=require(_0x7d0e('0xd'));var jsforce=require(_0x7d0e('0xe'));var deskjs=require(_0x7d0e('0xf'));var toCsv=require(_0x7d0e('0x10'));var querystring=require(_0x7d0e('0x11'));var Papa=require(_0x7d0e('0x12'));var Redis=require('ioredis');var authService=require(_0x7d0e('0x13'));var qs=require(_0x7d0e('0x14'));var as=require(_0x7d0e('0x15'));var hardwareService=require(_0x7d0e('0x16'));var logger=require(_0x7d0e('0x17'))('api');var utils=require(_0x7d0e('0x18'));var config=require(_0x7d0e('0x19'));var licenseUtil=require(_0x7d0e('0x1a'));var db=require(_0x7d0e('0x1b'))['db'];function respondWithStatusCode(_0x34d8a8,_0x5c360d){_0x5c360d=_0x5c360d||0xcc;return function(_0x282643){if(_0x282643){return _0x34d8a8[_0x7d0e('0x1c')](_0x5c360d);}return _0x34d8a8[_0x7d0e('0x1d')](_0x5c360d)[_0x7d0e('0x1e')]();};}function respondWithResult(_0x63d331,_0x453a4d){_0x453a4d=_0x453a4d||0xc8;return function(_0x16cbbb){if(_0x16cbbb){return _0x63d331[_0x7d0e('0x1d')](_0x453a4d)[_0x7d0e('0x1f')](_0x16cbbb);}};}function respondWithFilteredResult(_0xda189,_0x59da82){return function(_0x16554b){if(_0x16554b){var _0x307a0d=typeof _0x59da82[_0x7d0e('0x20')]===_0x7d0e('0x21')&&typeof _0x59da82['limit']===_0x7d0e('0x21');var _0x428179=_0x16554b[_0x7d0e('0x22')];var _0x2177b2=_0x307a0d?0x0:_0x59da82[_0x7d0e('0x20')];var _0xee4f00=_0x307a0d?_0x16554b[_0x7d0e('0x22')]:_0x59da82['offset']+_0x59da82[_0x7d0e('0x23')];var _0x1b6ad8;if(_0xee4f00>=_0x428179){_0xee4f00=_0x428179;_0x1b6ad8=0xc8;}else{_0x1b6ad8=0xce;}_0xda189['status'](_0x1b6ad8);return _0xda189[_0x7d0e('0x24')]('Content-Range',_0x2177b2+'-'+_0xee4f00+'/'+_0x428179)['json'](_0x16554b);}return null;};}function patchUpdates(_0x32c274){return function(_0x4bcbd8){try{jsonpatch[_0x7d0e('0x25')](_0x4bcbd8,_0x32c274,!![]);}catch(_0x5abf38){return BPromise[_0x7d0e('0x26')](_0x5abf38);}return _0x4bcbd8[_0x7d0e('0x27')]();};}function saveUpdates(_0x40f553,_0xeaa5ce){return function(_0x34e6b5){if(_0x34e6b5){return _0x34e6b5['update'](_0x40f553)['then'](function(_0x1a61b5){return _0x1a61b5;});}return null;};}function removeEntity(_0x2f857b,_0x374079){return function(_0x48be45){if(_0x48be45){return _0x48be45[_0x7d0e('0x28')]()[_0x7d0e('0x29')](function(){_0x2f857b[_0x7d0e('0x1d')](0xcc)[_0x7d0e('0x1e')]();});}};}function handleEntityNotFound(_0x44522e,_0x56fac8){return function(_0x5d486a){if(!_0x5d486a){_0x44522e['sendStatus'](0x194);}return _0x5d486a;};}function handleError(_0x8deb1d,_0x333495){_0x333495=_0x333495||0x1f4;return function(_0x34cc9f){logger[_0x7d0e('0x2a')](_0x34cc9f['stack']);if(_0x34cc9f[_0x7d0e('0x2b')]){delete _0x34cc9f['name'];}_0x8deb1d['status'](_0x333495)[_0x7d0e('0x2c')](_0x34cc9f);};}exports[_0x7d0e('0x2d')]=function(_0x445aac,_0x613bbd){var _0x25767d={},_0x105b07={},_0x12d7c6={'count':0x0,'rows':[]};var _0x261774=_[_0x7d0e('0x2e')](db[_0x7d0e('0x2f')]['rawAttributes'],function(_0x9a944){return{'name':_0x9a944[_0x7d0e('0x30')],'type':_0x9a944[_0x7d0e('0x31')][_0x7d0e('0x32')]};});_0x105b07[_0x7d0e('0x33')]=_[_0x7d0e('0x2e')](_0x261774,_0x7d0e('0x2b'));_0x105b07['query']=_[_0x7d0e('0x34')](_0x445aac['query']);_0x105b07[_0x7d0e('0x35')]=_[_0x7d0e('0x36')](_0x105b07[_0x7d0e('0x33')],_0x105b07[_0x7d0e('0x37')]);_0x25767d[_0x7d0e('0x38')]=_[_0x7d0e('0x36')](_0x105b07[_0x7d0e('0x33')],qs['fields'](_0x445aac['query'][_0x7d0e('0x39')]));_0x25767d[_0x7d0e('0x38')]=_0x25767d[_0x7d0e('0x38')][_0x7d0e('0x3a')]?_0x25767d[_0x7d0e('0x38')]:_0x105b07[_0x7d0e('0x33')];if(!_0x445aac[_0x7d0e('0x37')]['hasOwnProperty'](_0x7d0e('0x3b'))){_0x25767d[_0x7d0e('0x23')]=qs[_0x7d0e('0x23')](_0x445aac[_0x7d0e('0x37')][_0x7d0e('0x23')]);_0x25767d[_0x7d0e('0x20')]=qs[_0x7d0e('0x20')](_0x445aac[_0x7d0e('0x37')][_0x7d0e('0x20')]);}_0x25767d[_0x7d0e('0x3c')]=qs[_0x7d0e('0x3d')](_0x445aac[_0x7d0e('0x37')][_0x7d0e('0x3d')]);_0x25767d[_0x7d0e('0x3e')]=qs['filters'](_['pick'](_0x445aac['query'],_0x105b07[_0x7d0e('0x35')]),_0x261774);if(_0x445aac[_0x7d0e('0x37')][_0x7d0e('0x3f')]){_0x25767d['where']=_[_0x7d0e('0x40')](_0x25767d['where'],{'$or':_['map'](_0x261774,function(_0x25ff1e){if(_0x25ff1e[_0x7d0e('0x31')]!==_0x7d0e('0x41')){var _0x62f74a={};_0x62f74a[_0x25ff1e[_0x7d0e('0x2b')]]={'$like':'%'+_0x445aac[_0x7d0e('0x37')][_0x7d0e('0x3f')]+'%'};return _0x62f74a;}})});}_0x25767d=_['merge']({},_0x25767d,_0x445aac[_0x7d0e('0x42')]);var _0xa9b928={'where':_0x25767d[_0x7d0e('0x3e')]};return db[_0x7d0e('0x2f')][_0x7d0e('0x22')](_0xa9b928)[_0x7d0e('0x29')](function(_0x2ab7c9){_0x12d7c6['count']=_0x2ab7c9;if(_0x445aac[_0x7d0e('0x37')][_0x7d0e('0x43')]){_0x25767d[_0x7d0e('0x44')]=[{'all':!![]}];}return db[_0x7d0e('0x2f')][_0x7d0e('0x45')](_0x25767d);})[_0x7d0e('0x29')](function(_0x3de610){_0x12d7c6[_0x7d0e('0x46')]=_0x3de610;return _0x12d7c6;})[_0x7d0e('0x29')](respondWithFilteredResult(_0x613bbd,_0x25767d))[_0x7d0e('0x47')](handleError(_0x613bbd,null));};exports['show']=function(_0x42017b,_0x43ec7e){var _0x3b7d50={'raw':![],'where':{'id':_0x42017b[_0x7d0e('0x48')]['id']}},_0x3d5934={};_0x3d5934[_0x7d0e('0x33')]=_['keys'](db[_0x7d0e('0x2f')]['rawAttributes']);_0x3d5934['query']=_[_0x7d0e('0x34')](_0x42017b['query']);_0x3d5934[_0x7d0e('0x35')]=_[_0x7d0e('0x36')](_0x3d5934[_0x7d0e('0x33')],_0x3d5934[_0x7d0e('0x37')]);_0x3b7d50[_0x7d0e('0x38')]=_[_0x7d0e('0x36')](_0x3d5934[_0x7d0e('0x33')],qs['fields'](_0x42017b[_0x7d0e('0x37')][_0x7d0e('0x39')]));_0x3b7d50['attributes']=_0x3b7d50[_0x7d0e('0x38')][_0x7d0e('0x3a')]?_0x3b7d50['attributes']:_0x3d5934['model'];if(_0x42017b[_0x7d0e('0x37')][_0x7d0e('0x43')]){_0x3b7d50['include']=[{'all':!![]}];}_0x3b7d50=_['merge']({},_0x3b7d50,_0x42017b[_0x7d0e('0x42')]);return db[_0x7d0e('0x2f')]['find'](_0x3b7d50)['then'](handleEntityNotFound(_0x43ec7e,null))[_0x7d0e('0x29')](respondWithResult(_0x43ec7e,null))['catch'](handleError(_0x43ec7e,null));};exports[_0x7d0e('0x49')]=function(_0x867834,_0x410169){return db[_0x7d0e('0x2f')][_0x7d0e('0x49')](_0x867834[_0x7d0e('0x4a')],{})['then'](respondWithResult(_0x410169,0xc9))[_0x7d0e('0x47')](handleError(_0x410169,null));};exports['update']=function(_0x53e9b4,_0x5d172b){if(_0x53e9b4['body']['id']){delete _0x53e9b4[_0x7d0e('0x4a')]['id'];}return db[_0x7d0e('0x2f')][_0x7d0e('0x4b')]({'where':{'id':_0x53e9b4[_0x7d0e('0x48')]['id']}})[_0x7d0e('0x29')](handleEntityNotFound(_0x5d172b,null))['then'](saveUpdates(_0x53e9b4['body'],null))[_0x7d0e('0x29')](respondWithResult(_0x5d172b,null))[_0x7d0e('0x47')](handleError(_0x5d172b,null));};exports[_0x7d0e('0x28')]=function(_0x33a765,_0x4afd23){return db[_0x7d0e('0x2f')][_0x7d0e('0x4b')]({'where':{'id':_0x33a765[_0x7d0e('0x48')]['id']}})['then'](handleEntityNotFound(_0x4afd23,null))[_0x7d0e('0x29')](removeEntity(_0x4afd23,null))[_0x7d0e('0x47')](handleError(_0x4afd23,null));};exports[_0x7d0e('0x4c')]=function(_0x57e917,_0x57df30,_0x4a6328){var _0x11782d={};var _0x27a609={};var _0x127b36;var _0x26a4b0;return db[_0x7d0e('0x2f')][_0x7d0e('0x4d')]({'where':{'id':_0x57e917[_0x7d0e('0x48')]['id']}})[_0x7d0e('0x29')](handleEntityNotFound(_0x57df30,null))['then'](function(_0x401d56){if(_0x401d56){_0x127b36=_0x401d56;_0x27a609[_0x7d0e('0x33')]=_[_0x7d0e('0x34')](db['DeskField']['rawAttributes']);_0x27a609[_0x7d0e('0x37')]=_['keys'](_0x57e917[_0x7d0e('0x37')]);_0x27a609['filters']=_[_0x7d0e('0x36')](_0x27a609[_0x7d0e('0x33')],_0x27a609[_0x7d0e('0x37')]);_0x11782d[_0x7d0e('0x38')]=_[_0x7d0e('0x36')](_0x27a609[_0x7d0e('0x33')],qs[_0x7d0e('0x39')](_0x57e917[_0x7d0e('0x37')]['fields']));_0x11782d['attributes']=_0x11782d['attributes'][_0x7d0e('0x3a')]?_0x11782d['attributes']:_0x27a609[_0x7d0e('0x33')];_0x11782d[_0x7d0e('0x3c')]=qs[_0x7d0e('0x3d')](_0x57e917[_0x7d0e('0x37')]['sort']);_0x11782d['where']=qs[_0x7d0e('0x35')](_[_0x7d0e('0x4e')](_0x57e917[_0x7d0e('0x37')],_0x27a609['filters']));if(_0x57e917[_0x7d0e('0x37')]['filter']){_0x11782d[_0x7d0e('0x3e')]=_[_0x7d0e('0x40')](_0x11782d['where'],{'$or':_[_0x7d0e('0x2e')](_0x11782d['attributes'],function(_0x2c6f77){var _0x4151e4={};_0x4151e4[_0x2c6f77]={'$like':'%'+_0x57e917['query'][_0x7d0e('0x3f')]+'%'};return _0x4151e4;})});}_0x11782d=_['merge']({},_0x11782d,_0x57e917['options']);return _0x127b36[_0x7d0e('0x4c')](_0x11782d);}})['then'](function(_0x19c488){if(_0x19c488){_0x26a4b0=_0x19c488['length'];if(!_0x57e917[_0x7d0e('0x37')]['hasOwnProperty']('nolimit')){_0x11782d[_0x7d0e('0x23')]=qs[_0x7d0e('0x23')](_0x57e917[_0x7d0e('0x37')][_0x7d0e('0x23')]);_0x11782d[_0x7d0e('0x20')]=qs[_0x7d0e('0x20')](_0x57e917[_0x7d0e('0x37')][_0x7d0e('0x20')]);}return _0x127b36[_0x7d0e('0x4c')](_0x11782d);}})[_0x7d0e('0x29')](function(_0xe3c9fd){if(_0xe3c9fd){return _0xe3c9fd?{'count':_0x26a4b0,'rows':_0xe3c9fd}:null;}})['then'](respondWithResult(_0x57df30,null))[_0x7d0e('0x47')](handleError(_0x57df30,null));};exports[_0x7d0e('0x4f')]=function(_0x5c5874,_0x3a8b0c,_0x16ae82){var _0x314971={};var _0x18b36f={};var _0x17617d;var _0x4f2cf9;return db[_0x7d0e('0x2f')][_0x7d0e('0x4d')]({'where':{'id':_0x5c5874['params']['id']}})[_0x7d0e('0x29')](handleEntityNotFound(_0x3a8b0c,null))[_0x7d0e('0x29')](function(_0xc51d19){if(_0xc51d19){_0x17617d=_0xc51d19;_0x18b36f[_0x7d0e('0x33')]=_['keys'](db['DeskField'][_0x7d0e('0x50')]);_0x18b36f[_0x7d0e('0x37')]=_[_0x7d0e('0x34')](_0x5c5874[_0x7d0e('0x37')]);_0x18b36f['filters']=_[_0x7d0e('0x36')](_0x18b36f['model'],_0x18b36f[_0x7d0e('0x37')]);_0x314971[_0x7d0e('0x38')]=_[_0x7d0e('0x36')](_0x18b36f[_0x7d0e('0x33')],qs[_0x7d0e('0x39')](_0x5c5874[_0x7d0e('0x37')][_0x7d0e('0x39')]));_0x314971[_0x7d0e('0x38')]=_0x314971[_0x7d0e('0x38')][_0x7d0e('0x3a')]?_0x314971[_0x7d0e('0x38')]:_0x18b36f[_0x7d0e('0x33')];_0x314971[_0x7d0e('0x3c')]=qs[_0x7d0e('0x3d')](_0x5c5874[_0x7d0e('0x37')]['sort']);_0x314971[_0x7d0e('0x3e')]=qs[_0x7d0e('0x35')](_[_0x7d0e('0x4e')](_0x5c5874['query'],_0x18b36f[_0x7d0e('0x35')]));if(_0x5c5874[_0x7d0e('0x37')][_0x7d0e('0x3f')]){_0x314971['where']=_['merge'](_0x314971['where'],{'$or':_[_0x7d0e('0x2e')](_0x314971[_0x7d0e('0x38')],function(_0x2ebe0d){var _0x212203={};_0x212203[_0x2ebe0d]={'$like':'%'+_0x5c5874[_0x7d0e('0x37')]['filter']+'%'};return _0x212203;})});}_0x314971=_['merge']({},_0x314971,_0x5c5874['options']);return _0x17617d[_0x7d0e('0x4f')](_0x314971);}})[_0x7d0e('0x29')](function(_0x26788c){if(_0x26788c){_0x4f2cf9=_0x26788c[_0x7d0e('0x3a')];if(!_0x5c5874[_0x7d0e('0x37')][_0x7d0e('0x51')](_0x7d0e('0x3b'))){_0x314971['limit']=qs['limit'](_0x5c5874[_0x7d0e('0x37')][_0x7d0e('0x23')]);_0x314971[_0x7d0e('0x20')]=qs[_0x7d0e('0x20')](_0x5c5874[_0x7d0e('0x37')][_0x7d0e('0x20')]);}return _0x17617d['getSubjects'](_0x314971);}})[_0x7d0e('0x29')](function(_0x577583){if(_0x577583){return _0x577583?{'count':_0x4f2cf9,'rows':_0x577583}:null;}})['then'](respondWithResult(_0x3a8b0c,null))['catch'](handleError(_0x3a8b0c,null));};exports[_0x7d0e('0x52')]=function(_0xcece11,_0x126b67,_0x2e180e){var _0x181613={};var _0x450f06={};var _0x28751c;var _0x26c258;return db[_0x7d0e('0x2f')][_0x7d0e('0x4d')]({'where':{'id':_0xcece11['params']['id']}})['then'](handleEntityNotFound(_0x126b67,null))[_0x7d0e('0x29')](function(_0x19b2d6){if(_0x19b2d6){_0x28751c=_0x19b2d6;_0x450f06[_0x7d0e('0x33')]=_['keys'](db[_0x7d0e('0x53')]['rawAttributes']);_0x450f06[_0x7d0e('0x37')]=_['keys'](_0xcece11['query']);_0x450f06['filters']=_[_0x7d0e('0x36')](_0x450f06[_0x7d0e('0x33')],_0x450f06[_0x7d0e('0x37')]);_0x181613[_0x7d0e('0x38')]=_[_0x7d0e('0x36')](_0x450f06[_0x7d0e('0x33')],qs[_0x7d0e('0x39')](_0xcece11[_0x7d0e('0x37')][_0x7d0e('0x39')]));_0x181613[_0x7d0e('0x38')]=_0x181613[_0x7d0e('0x38')][_0x7d0e('0x3a')]?_0x181613[_0x7d0e('0x38')]:_0x450f06[_0x7d0e('0x33')];_0x181613[_0x7d0e('0x3c')]=qs['sort'](_0xcece11[_0x7d0e('0x37')][_0x7d0e('0x3d')]);_0x181613[_0x7d0e('0x3e')]=qs['filters'](_['pick'](_0xcece11[_0x7d0e('0x37')],_0x450f06[_0x7d0e('0x35')]));if(_0xcece11[_0x7d0e('0x37')][_0x7d0e('0x3f')]){_0x181613['where']=_['merge'](_0x181613['where'],{'$or':_[_0x7d0e('0x2e')](_0x181613[_0x7d0e('0x38')],function(_0x5b3b26){var _0x15493e={};_0x15493e[_0x5b3b26]={'$like':'%'+_0xcece11[_0x7d0e('0x37')][_0x7d0e('0x3f')]+'%'};return _0x15493e;})});}_0x181613=_[_0x7d0e('0x40')]({},_0x181613,_0xcece11[_0x7d0e('0x42')]);return _0x28751c[_0x7d0e('0x52')](_0x181613);}})[_0x7d0e('0x29')](function(_0x5ec085){if(_0x5ec085){_0x26c258=_0x5ec085[_0x7d0e('0x3a')];if(!_0xcece11[_0x7d0e('0x37')][_0x7d0e('0x51')]('nolimit')){_0x181613[_0x7d0e('0x23')]=qs[_0x7d0e('0x23')](_0xcece11[_0x7d0e('0x37')][_0x7d0e('0x23')]);_0x181613[_0x7d0e('0x20')]=qs[_0x7d0e('0x20')](_0xcece11[_0x7d0e('0x37')][_0x7d0e('0x20')]);}return _0x28751c[_0x7d0e('0x52')](_0x181613);}})[_0x7d0e('0x29')](function(_0x37fd8d){if(_0x37fd8d){return _0x37fd8d?{'count':_0x26c258,'rows':_0x37fd8d}:null;}})[_0x7d0e('0x29')](respondWithResult(_0x126b67,null))[_0x7d0e('0x47')](handleError(_0x126b67,null));};exports[_0x7d0e('0x54')]=function(_0x17a3fe,_0x4335a1,_0x32b89a){var _0x334944={};var _0x2429df={};var _0x20cff3;var _0x4caef7;return db[_0x7d0e('0x2f')][_0x7d0e('0x4d')]({'where':{'id':_0x17a3fe[_0x7d0e('0x48')]['id']}})[_0x7d0e('0x29')](handleEntityNotFound(_0x4335a1,null))[_0x7d0e('0x29')](function(_0x58c638){if(_0x58c638){_0x20cff3=_0x58c638;_0x2429df[_0x7d0e('0x33')]=_[_0x7d0e('0x34')](db[_0x7d0e('0x55')]['rawAttributes']);_0x2429df['query']=_[_0x7d0e('0x34')](_0x17a3fe[_0x7d0e('0x37')]);_0x2429df['filters']=_[_0x7d0e('0x36')](_0x2429df[_0x7d0e('0x33')],_0x2429df[_0x7d0e('0x37')]);_0x334944[_0x7d0e('0x38')]=_[_0x7d0e('0x36')](_0x2429df['model'],qs[_0x7d0e('0x39')](_0x17a3fe['query'][_0x7d0e('0x39')]));_0x334944[_0x7d0e('0x38')]=_0x334944[_0x7d0e('0x38')][_0x7d0e('0x3a')]?_0x334944['attributes']:_0x2429df[_0x7d0e('0x33')];_0x334944[_0x7d0e('0x3c')]=qs[_0x7d0e('0x3d')](_0x17a3fe[_0x7d0e('0x37')]['sort']);_0x334944[_0x7d0e('0x3e')]=qs[_0x7d0e('0x35')](_[_0x7d0e('0x4e')](_0x17a3fe[_0x7d0e('0x37')],_0x2429df[_0x7d0e('0x35')]));if(_0x17a3fe[_0x7d0e('0x37')][_0x7d0e('0x3f')]){_0x334944[_0x7d0e('0x3e')]=_[_0x7d0e('0x40')](_0x334944[_0x7d0e('0x3e')],{'$or':_[_0x7d0e('0x2e')](_0x334944[_0x7d0e('0x38')],function(_0x2fd8ca){var _0x5486a1={};_0x5486a1[_0x2fd8ca]={'$like':'%'+_0x17a3fe['query']['filter']+'%'};return _0x5486a1;})});}_0x334944=_[_0x7d0e('0x40')]({},_0x334944,_0x17a3fe[_0x7d0e('0x42')]);return _0x20cff3[_0x7d0e('0x54')](_0x334944);}})[_0x7d0e('0x29')](function(_0x18ed1b){if(_0x18ed1b){_0x4caef7=_0x18ed1b[_0x7d0e('0x3a')];if(!_0x17a3fe[_0x7d0e('0x37')][_0x7d0e('0x51')](_0x7d0e('0x3b'))){_0x334944[_0x7d0e('0x23')]=qs['limit'](_0x17a3fe[_0x7d0e('0x37')][_0x7d0e('0x23')]);_0x334944[_0x7d0e('0x20')]=qs[_0x7d0e('0x20')](_0x17a3fe[_0x7d0e('0x37')][_0x7d0e('0x20')]);}return _0x20cff3[_0x7d0e('0x54')](_0x334944);}})[_0x7d0e('0x29')](function(_0x287940){if(_0x287940){return _0x287940?{'count':_0x4caef7,'rows':_0x287940}:null;}})[_0x7d0e('0x29')](respondWithResult(_0x4335a1,null))[_0x7d0e('0x47')](handleError(_0x4335a1,null));};exports['setTags']=function(_0x33780c,_0x2d17a3,_0x42a9c2){if(_0x33780c[_0x7d0e('0x4a')]['id']){delete _0x33780c[_0x7d0e('0x4a')]['id'];}return db['DeskConfiguration'][_0x7d0e('0x4d')]({'where':{'id':_0x33780c[_0x7d0e('0x48')]['id']}})[_0x7d0e('0x29')](handleEntityNotFound(_0x2d17a3,null))[_0x7d0e('0x29')](function(_0x28b97e){if(_0x28b97e){return _0x28b97e[_0x7d0e('0x56')](_0x33780c[_0x7d0e('0x4a')][_0x7d0e('0x57')]||[]);}return null;})[_0x7d0e('0x29')](respondWithResult(_0x2d17a3,null))[_0x7d0e('0x47')](handleError(_0x2d17a3,null));};
\ No newline at end of file
+var _0xc522=['length','includeAll','include','find','create','body','getFields','findOne','DeskField','getSubjects','getDescriptions','getTags','Tag','setTags','ids','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','fs-extra','squel','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','undefined','limit','offset','set','Content-Range','json','apply','save','update','then','destroy','error','stack','name','send','map','DeskConfiguration','fieldName','type','key','query','keys','filters','intersection','attributes','fields','model','hasOwnProperty','nolimit','order','sort','where','pick','VIRTUAL','filter','merge','options','count','findAll','catch','params','rawAttributes'];(function(_0xa4800f,_0x1795f6){var _0xa3c7a4=function(_0x1c2916){while(--_0x1c2916){_0xa4800f['push'](_0xa4800f['shift']());}};_0xa3c7a4(++_0x1795f6);}(_0xc522,0x157));var _0x2c52=function(_0x39459a,_0x4d176c){_0x39459a=_0x39459a-0x0;var _0x28a0e4=_0xc522[_0x39459a];return _0x28a0e4;};'use strict';var emlformat=require(_0x2c52('0x0'));var rimraf=require(_0x2c52('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x2c52('0x2'));var rp=require(_0x2c52('0x3'));var moment=require(_0x2c52('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x2c52('0x5'));var util=require(_0x2c52('0x6'));var path=require(_0x2c52('0x7'));var sox=require('sox');var csv=require(_0x2c52('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2c52('0x9'));var _=require('lodash');var squel=require(_0x2c52('0xa'));var crypto=require(_0x2c52('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x2c52('0x8'));var querystring=require(_0x2c52('0xc'));var Papa=require(_0x2c52('0xd'));var Redis=require(_0x2c52('0xe'));var authService=require(_0x2c52('0xf'));var qs=require(_0x2c52('0x10'));var as=require(_0x2c52('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x2c52('0x12'))('api');var utils=require(_0x2c52('0x13'));var config=require(_0x2c52('0x14'));var licenseUtil=require(_0x2c52('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x52a4a2,_0x1418f5){_0x1418f5=_0x1418f5||0xcc;return function(_0x1d4825){if(_0x1d4825){return _0x52a4a2[_0x2c52('0x16')](_0x1418f5);}return _0x52a4a2[_0x2c52('0x17')](_0x1418f5)[_0x2c52('0x18')]();};}function respondWithResult(_0x43e058,_0x3b638f){_0x3b638f=_0x3b638f||0xc8;return function(_0xb987fe){if(_0xb987fe){return _0x43e058[_0x2c52('0x17')](_0x3b638f)['json'](_0xb987fe);}};}function respondWithFilteredResult(_0x6b40bd,_0x361778){return function(_0x38aa26){if(_0x38aa26){var _0x5bf90f=typeof _0x361778['offset']===_0x2c52('0x19')&&typeof _0x361778[_0x2c52('0x1a')]===_0x2c52('0x19');var _0x17626d=_0x38aa26['count'];var _0x477d8d=_0x5bf90f?0x0:_0x361778[_0x2c52('0x1b')];var _0x1b4f37=_0x5bf90f?_0x38aa26['count']:_0x361778['offset']+_0x361778['limit'];var _0x19fee7;if(_0x1b4f37>=_0x17626d){_0x1b4f37=_0x17626d;_0x19fee7=0xc8;}else{_0x19fee7=0xce;}_0x6b40bd['status'](_0x19fee7);return _0x6b40bd[_0x2c52('0x1c')](_0x2c52('0x1d'),_0x477d8d+'-'+_0x1b4f37+'/'+_0x17626d)[_0x2c52('0x1e')](_0x38aa26);}return null;};}function patchUpdates(_0x38d7b0){return function(_0x242e56){try{jsonpatch[_0x2c52('0x1f')](_0x242e56,_0x38d7b0,!![]);}catch(_0x5ec6e9){return BPromise['reject'](_0x5ec6e9);}return _0x242e56[_0x2c52('0x20')]();};}function saveUpdates(_0x576b63,_0x366211){return function(_0x553320){if(_0x553320){return _0x553320[_0x2c52('0x21')](_0x576b63)[_0x2c52('0x22')](function(_0x336c75){return _0x336c75;});}return null;};}function removeEntity(_0x3c77a9,_0x12e302){return function(_0x5c5520){if(_0x5c5520){return _0x5c5520[_0x2c52('0x23')]()[_0x2c52('0x22')](function(){_0x3c77a9[_0x2c52('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x41fd05,_0x24b684){return function(_0x542309){if(!_0x542309){_0x41fd05[_0x2c52('0x16')](0x194);}return _0x542309;};}function handleError(_0x2f12e1,_0x2512e2){_0x2512e2=_0x2512e2||0x1f4;return function(_0x4437a9){logger[_0x2c52('0x24')](_0x4437a9[_0x2c52('0x25')]);if(_0x4437a9[_0x2c52('0x26')]){delete _0x4437a9[_0x2c52('0x26')];}_0x2f12e1[_0x2c52('0x17')](_0x2512e2)[_0x2c52('0x27')](_0x4437a9);};}exports['index']=function(_0x4227ec,_0x12d82a){var _0x5a68de={},_0x4c0e3e={},_0x223039={'count':0x0,'rows':[]};var _0x4ba71b=_[_0x2c52('0x28')](db[_0x2c52('0x29')]['rawAttributes'],function(_0x5b21c4){return{'name':_0x5b21c4[_0x2c52('0x2a')],'type':_0x5b21c4[_0x2c52('0x2b')][_0x2c52('0x2c')]};});_0x4c0e3e['model']=_[_0x2c52('0x28')](_0x4ba71b,_0x2c52('0x26'));_0x4c0e3e[_0x2c52('0x2d')]=_[_0x2c52('0x2e')](_0x4227ec[_0x2c52('0x2d')]);_0x4c0e3e[_0x2c52('0x2f')]=_[_0x2c52('0x30')](_0x4c0e3e['model'],_0x4c0e3e['query']);_0x5a68de[_0x2c52('0x31')]=_[_0x2c52('0x30')](_0x4c0e3e['model'],qs[_0x2c52('0x32')](_0x4227ec[_0x2c52('0x2d')][_0x2c52('0x32')]));_0x5a68de[_0x2c52('0x31')]=_0x5a68de[_0x2c52('0x31')]['length']?_0x5a68de[_0x2c52('0x31')]:_0x4c0e3e[_0x2c52('0x33')];if(!_0x4227ec[_0x2c52('0x2d')][_0x2c52('0x34')](_0x2c52('0x35'))){_0x5a68de[_0x2c52('0x1a')]=qs['limit'](_0x4227ec[_0x2c52('0x2d')][_0x2c52('0x1a')]);_0x5a68de[_0x2c52('0x1b')]=qs[_0x2c52('0x1b')](_0x4227ec[_0x2c52('0x2d')][_0x2c52('0x1b')]);}_0x5a68de[_0x2c52('0x36')]=qs[_0x2c52('0x37')](_0x4227ec[_0x2c52('0x2d')]['sort']);_0x5a68de[_0x2c52('0x38')]=qs[_0x2c52('0x2f')](_[_0x2c52('0x39')](_0x4227ec[_0x2c52('0x2d')],_0x4c0e3e[_0x2c52('0x2f')]),_0x4ba71b);if(_0x4227ec[_0x2c52('0x2d')]['filter']){_0x5a68de[_0x2c52('0x38')]=_['merge'](_0x5a68de[_0x2c52('0x38')],{'$or':_[_0x2c52('0x28')](_0x4ba71b,function(_0x102c90){if(_0x102c90['type']!==_0x2c52('0x3a')){var _0x576e9c={};_0x576e9c[_0x102c90[_0x2c52('0x26')]]={'$like':'%'+_0x4227ec[_0x2c52('0x2d')][_0x2c52('0x3b')]+'%'};return _0x576e9c;}})});}_0x5a68de=_[_0x2c52('0x3c')]({},_0x5a68de,_0x4227ec[_0x2c52('0x3d')]);var _0x68687={'where':_0x5a68de[_0x2c52('0x38')]};return db[_0x2c52('0x29')][_0x2c52('0x3e')](_0x68687)[_0x2c52('0x22')](function(_0x466bc4){_0x223039[_0x2c52('0x3e')]=_0x466bc4;if(_0x4227ec['query']['includeAll']){_0x5a68de['include']=[{'all':!![]}];}return db[_0x2c52('0x29')][_0x2c52('0x3f')](_0x5a68de);})[_0x2c52('0x22')](function(_0x233f1e){_0x223039['rows']=_0x233f1e;return _0x223039;})[_0x2c52('0x22')](respondWithFilteredResult(_0x12d82a,_0x5a68de))[_0x2c52('0x40')](handleError(_0x12d82a,null));};exports['show']=function(_0x1bea10,_0x7562fc){var _0x5c2ce8={'raw':![],'where':{'id':_0x1bea10[_0x2c52('0x41')]['id']}},_0x3449a3={};_0x3449a3['model']=_[_0x2c52('0x2e')](db['DeskConfiguration'][_0x2c52('0x42')]);_0x3449a3[_0x2c52('0x2d')]=_['keys'](_0x1bea10[_0x2c52('0x2d')]);_0x3449a3['filters']=_[_0x2c52('0x30')](_0x3449a3[_0x2c52('0x33')],_0x3449a3[_0x2c52('0x2d')]);_0x5c2ce8[_0x2c52('0x31')]=_[_0x2c52('0x30')](_0x3449a3[_0x2c52('0x33')],qs[_0x2c52('0x32')](_0x1bea10[_0x2c52('0x2d')][_0x2c52('0x32')]));_0x5c2ce8[_0x2c52('0x31')]=_0x5c2ce8['attributes'][_0x2c52('0x43')]?_0x5c2ce8[_0x2c52('0x31')]:_0x3449a3[_0x2c52('0x33')];if(_0x1bea10[_0x2c52('0x2d')][_0x2c52('0x44')]){_0x5c2ce8[_0x2c52('0x45')]=[{'all':!![]}];}_0x5c2ce8=_[_0x2c52('0x3c')]({},_0x5c2ce8,_0x1bea10[_0x2c52('0x3d')]);return db['DeskConfiguration'][_0x2c52('0x46')](_0x5c2ce8)['then'](handleEntityNotFound(_0x7562fc,null))['then'](respondWithResult(_0x7562fc,null))[_0x2c52('0x40')](handleError(_0x7562fc,null));};exports[_0x2c52('0x47')]=function(_0x5f293a,_0x30afc0){return db[_0x2c52('0x29')]['create'](_0x5f293a[_0x2c52('0x48')],{})[_0x2c52('0x22')](respondWithResult(_0x30afc0,0xc9))[_0x2c52('0x40')](handleError(_0x30afc0,null));};exports['update']=function(_0x901106,_0x295ece){if(_0x901106[_0x2c52('0x48')]['id']){delete _0x901106[_0x2c52('0x48')]['id'];}return db[_0x2c52('0x29')][_0x2c52('0x46')]({'where':{'id':_0x901106['params']['id']}})[_0x2c52('0x22')](handleEntityNotFound(_0x295ece,null))[_0x2c52('0x22')](saveUpdates(_0x901106[_0x2c52('0x48')],null))['then'](respondWithResult(_0x295ece,null))['catch'](handleError(_0x295ece,null));};exports[_0x2c52('0x23')]=function(_0x1fb55d,_0x881d5a){return db[_0x2c52('0x29')][_0x2c52('0x46')]({'where':{'id':_0x1fb55d[_0x2c52('0x41')]['id']}})['then'](handleEntityNotFound(_0x881d5a,null))[_0x2c52('0x22')](removeEntity(_0x881d5a,null))[_0x2c52('0x40')](handleError(_0x881d5a,null));};exports[_0x2c52('0x49')]=function(_0x4d56fc,_0x5eb329,_0x57b706){var _0x2287e3={};var _0xa6ea3e={};var _0x1f43c4;var _0x4e82d1;return db['DeskConfiguration'][_0x2c52('0x4a')]({'where':{'id':_0x4d56fc[_0x2c52('0x41')]['id']}})[_0x2c52('0x22')](handleEntityNotFound(_0x5eb329,null))['then'](function(_0x4fc3c8){if(_0x4fc3c8){_0x1f43c4=_0x4fc3c8;_0xa6ea3e[_0x2c52('0x33')]=_[_0x2c52('0x2e')](db[_0x2c52('0x4b')][_0x2c52('0x42')]);_0xa6ea3e['query']=_[_0x2c52('0x2e')](_0x4d56fc['query']);_0xa6ea3e[_0x2c52('0x2f')]=_[_0x2c52('0x30')](_0xa6ea3e['model'],_0xa6ea3e[_0x2c52('0x2d')]);_0x2287e3[_0x2c52('0x31')]=_['intersection'](_0xa6ea3e[_0x2c52('0x33')],qs[_0x2c52('0x32')](_0x4d56fc[_0x2c52('0x2d')][_0x2c52('0x32')]));_0x2287e3[_0x2c52('0x31')]=_0x2287e3[_0x2c52('0x31')][_0x2c52('0x43')]?_0x2287e3[_0x2c52('0x31')]:_0xa6ea3e[_0x2c52('0x33')];_0x2287e3['order']=qs[_0x2c52('0x37')](_0x4d56fc[_0x2c52('0x2d')][_0x2c52('0x37')]);_0x2287e3[_0x2c52('0x38')]=qs[_0x2c52('0x2f')](_[_0x2c52('0x39')](_0x4d56fc[_0x2c52('0x2d')],_0xa6ea3e[_0x2c52('0x2f')]));if(_0x4d56fc[_0x2c52('0x2d')][_0x2c52('0x3b')]){_0x2287e3['where']=_[_0x2c52('0x3c')](_0x2287e3[_0x2c52('0x38')],{'$or':_[_0x2c52('0x28')](_0x2287e3[_0x2c52('0x31')],function(_0x58371e){var _0x5119a8={};_0x5119a8[_0x58371e]={'$like':'%'+_0x4d56fc[_0x2c52('0x2d')][_0x2c52('0x3b')]+'%'};return _0x5119a8;})});}_0x2287e3=_[_0x2c52('0x3c')]({},_0x2287e3,_0x4d56fc['options']);return _0x1f43c4[_0x2c52('0x49')](_0x2287e3);}})[_0x2c52('0x22')](function(_0x3b49f0){if(_0x3b49f0){_0x4e82d1=_0x3b49f0[_0x2c52('0x43')];if(!_0x4d56fc[_0x2c52('0x2d')][_0x2c52('0x34')](_0x2c52('0x35'))){_0x2287e3['limit']=qs[_0x2c52('0x1a')](_0x4d56fc['query'][_0x2c52('0x1a')]);_0x2287e3['offset']=qs[_0x2c52('0x1b')](_0x4d56fc[_0x2c52('0x2d')]['offset']);}return _0x1f43c4[_0x2c52('0x49')](_0x2287e3);}})[_0x2c52('0x22')](function(_0x47af5f){if(_0x47af5f){return _0x47af5f?{'count':_0x4e82d1,'rows':_0x47af5f}:null;}})[_0x2c52('0x22')](respondWithResult(_0x5eb329,null))[_0x2c52('0x40')](handleError(_0x5eb329,null));};exports[_0x2c52('0x4c')]=function(_0x4e7416,_0x153b56,_0x2932cd){var _0x1130d6={};var _0x1d44f0={};var _0x43dcfa;var _0x56d8d3;return db['DeskConfiguration'][_0x2c52('0x4a')]({'where':{'id':_0x4e7416[_0x2c52('0x41')]['id']}})[_0x2c52('0x22')](handleEntityNotFound(_0x153b56,null))[_0x2c52('0x22')](function(_0x50d92e){if(_0x50d92e){_0x43dcfa=_0x50d92e;_0x1d44f0[_0x2c52('0x33')]=_['keys'](db['DeskField']['rawAttributes']);_0x1d44f0[_0x2c52('0x2d')]=_[_0x2c52('0x2e')](_0x4e7416[_0x2c52('0x2d')]);_0x1d44f0[_0x2c52('0x2f')]=_['intersection'](_0x1d44f0['model'],_0x1d44f0[_0x2c52('0x2d')]);_0x1130d6[_0x2c52('0x31')]=_[_0x2c52('0x30')](_0x1d44f0[_0x2c52('0x33')],qs[_0x2c52('0x32')](_0x4e7416[_0x2c52('0x2d')][_0x2c52('0x32')]));_0x1130d6[_0x2c52('0x31')]=_0x1130d6[_0x2c52('0x31')][_0x2c52('0x43')]?_0x1130d6[_0x2c52('0x31')]:_0x1d44f0[_0x2c52('0x33')];_0x1130d6[_0x2c52('0x36')]=qs[_0x2c52('0x37')](_0x4e7416[_0x2c52('0x2d')]['sort']);_0x1130d6[_0x2c52('0x38')]=qs[_0x2c52('0x2f')](_[_0x2c52('0x39')](_0x4e7416['query'],_0x1d44f0[_0x2c52('0x2f')]));if(_0x4e7416['query'][_0x2c52('0x3b')]){_0x1130d6[_0x2c52('0x38')]=_['merge'](_0x1130d6[_0x2c52('0x38')],{'$or':_[_0x2c52('0x28')](_0x1130d6['attributes'],function(_0x5e814f){var _0x26b19b={};_0x26b19b[_0x5e814f]={'$like':'%'+_0x4e7416[_0x2c52('0x2d')][_0x2c52('0x3b')]+'%'};return _0x26b19b;})});}_0x1130d6=_[_0x2c52('0x3c')]({},_0x1130d6,_0x4e7416['options']);return _0x43dcfa[_0x2c52('0x4c')](_0x1130d6);}})[_0x2c52('0x22')](function(_0x3c415d){if(_0x3c415d){_0x56d8d3=_0x3c415d[_0x2c52('0x43')];if(!_0x4e7416[_0x2c52('0x2d')]['hasOwnProperty'](_0x2c52('0x35'))){_0x1130d6[_0x2c52('0x1a')]=qs[_0x2c52('0x1a')](_0x4e7416['query'][_0x2c52('0x1a')]);_0x1130d6['offset']=qs[_0x2c52('0x1b')](_0x4e7416[_0x2c52('0x2d')][_0x2c52('0x1b')]);}return _0x43dcfa[_0x2c52('0x4c')](_0x1130d6);}})[_0x2c52('0x22')](function(_0x20b9d1){if(_0x20b9d1){return _0x20b9d1?{'count':_0x56d8d3,'rows':_0x20b9d1}:null;}})['then'](respondWithResult(_0x153b56,null))[_0x2c52('0x40')](handleError(_0x153b56,null));};exports[_0x2c52('0x4d')]=function(_0x20edf9,_0x507f30,_0x3c8529){var _0x4947fa={};var _0x60e8f4={};var _0x24ee20;var _0x3faa6a;return db['DeskConfiguration'][_0x2c52('0x4a')]({'where':{'id':_0x20edf9[_0x2c52('0x41')]['id']}})[_0x2c52('0x22')](handleEntityNotFound(_0x507f30,null))['then'](function(_0x38b501){if(_0x38b501){_0x24ee20=_0x38b501;_0x60e8f4[_0x2c52('0x33')]=_['keys'](db[_0x2c52('0x4b')][_0x2c52('0x42')]);_0x60e8f4[_0x2c52('0x2d')]=_[_0x2c52('0x2e')](_0x20edf9['query']);_0x60e8f4[_0x2c52('0x2f')]=_[_0x2c52('0x30')](_0x60e8f4[_0x2c52('0x33')],_0x60e8f4[_0x2c52('0x2d')]);_0x4947fa[_0x2c52('0x31')]=_[_0x2c52('0x30')](_0x60e8f4[_0x2c52('0x33')],qs[_0x2c52('0x32')](_0x20edf9[_0x2c52('0x2d')]['fields']));_0x4947fa[_0x2c52('0x31')]=_0x4947fa[_0x2c52('0x31')][_0x2c52('0x43')]?_0x4947fa[_0x2c52('0x31')]:_0x60e8f4[_0x2c52('0x33')];_0x4947fa[_0x2c52('0x36')]=qs[_0x2c52('0x37')](_0x20edf9['query'][_0x2c52('0x37')]);_0x4947fa['where']=qs[_0x2c52('0x2f')](_[_0x2c52('0x39')](_0x20edf9[_0x2c52('0x2d')],_0x60e8f4[_0x2c52('0x2f')]));if(_0x20edf9[_0x2c52('0x2d')][_0x2c52('0x3b')]){_0x4947fa[_0x2c52('0x38')]=_[_0x2c52('0x3c')](_0x4947fa[_0x2c52('0x38')],{'$or':_[_0x2c52('0x28')](_0x4947fa[_0x2c52('0x31')],function(_0x1441e8){var _0x48fcfc={};_0x48fcfc[_0x1441e8]={'$like':'%'+_0x20edf9[_0x2c52('0x2d')][_0x2c52('0x3b')]+'%'};return _0x48fcfc;})});}_0x4947fa=_[_0x2c52('0x3c')]({},_0x4947fa,_0x20edf9['options']);return _0x24ee20[_0x2c52('0x4d')](_0x4947fa);}})[_0x2c52('0x22')](function(_0xea0cff){if(_0xea0cff){_0x3faa6a=_0xea0cff['length'];if(!_0x20edf9[_0x2c52('0x2d')][_0x2c52('0x34')]('nolimit')){_0x4947fa[_0x2c52('0x1a')]=qs[_0x2c52('0x1a')](_0x20edf9['query'][_0x2c52('0x1a')]);_0x4947fa[_0x2c52('0x1b')]=qs['offset'](_0x20edf9[_0x2c52('0x2d')][_0x2c52('0x1b')]);}return _0x24ee20[_0x2c52('0x4d')](_0x4947fa);}})[_0x2c52('0x22')](function(_0x1889e1){if(_0x1889e1){return _0x1889e1?{'count':_0x3faa6a,'rows':_0x1889e1}:null;}})[_0x2c52('0x22')](respondWithResult(_0x507f30,null))[_0x2c52('0x40')](handleError(_0x507f30,null));};exports[_0x2c52('0x4e')]=function(_0x4f39af,_0x3a9b5e,_0x4b472c){var _0x397bbd={};var _0x417105={};var _0x516ab0;var _0x46e8c4;return db[_0x2c52('0x29')]['findOne']({'where':{'id':_0x4f39af[_0x2c52('0x41')]['id']}})[_0x2c52('0x22')](handleEntityNotFound(_0x3a9b5e,null))[_0x2c52('0x22')](function(_0x12e228){if(_0x12e228){_0x516ab0=_0x12e228;_0x417105[_0x2c52('0x33')]=_[_0x2c52('0x2e')](db[_0x2c52('0x4f')]['rawAttributes']);_0x417105['query']=_[_0x2c52('0x2e')](_0x4f39af[_0x2c52('0x2d')]);_0x417105[_0x2c52('0x2f')]=_[_0x2c52('0x30')](_0x417105[_0x2c52('0x33')],_0x417105[_0x2c52('0x2d')]);_0x397bbd[_0x2c52('0x31')]=_[_0x2c52('0x30')](_0x417105[_0x2c52('0x33')],qs['fields'](_0x4f39af['query']['fields']));_0x397bbd[_0x2c52('0x31')]=_0x397bbd[_0x2c52('0x31')][_0x2c52('0x43')]?_0x397bbd[_0x2c52('0x31')]:_0x417105[_0x2c52('0x33')];_0x397bbd[_0x2c52('0x36')]=qs[_0x2c52('0x37')](_0x4f39af[_0x2c52('0x2d')][_0x2c52('0x37')]);_0x397bbd['where']=qs[_0x2c52('0x2f')](_[_0x2c52('0x39')](_0x4f39af[_0x2c52('0x2d')],_0x417105[_0x2c52('0x2f')]));if(_0x4f39af['query'][_0x2c52('0x3b')]){_0x397bbd['where']=_[_0x2c52('0x3c')](_0x397bbd['where'],{'$or':_[_0x2c52('0x28')](_0x397bbd[_0x2c52('0x31')],function(_0xa12840){var _0x49d556={};_0x49d556[_0xa12840]={'$like':'%'+_0x4f39af['query'][_0x2c52('0x3b')]+'%'};return _0x49d556;})});}_0x397bbd=_[_0x2c52('0x3c')]({},_0x397bbd,_0x4f39af[_0x2c52('0x3d')]);return _0x516ab0[_0x2c52('0x4e')](_0x397bbd);}})[_0x2c52('0x22')](function(_0x5e179c){if(_0x5e179c){_0x46e8c4=_0x5e179c[_0x2c52('0x43')];if(!_0x4f39af[_0x2c52('0x2d')]['hasOwnProperty'](_0x2c52('0x35'))){_0x397bbd['limit']=qs[_0x2c52('0x1a')](_0x4f39af[_0x2c52('0x2d')][_0x2c52('0x1a')]);_0x397bbd['offset']=qs['offset'](_0x4f39af['query'][_0x2c52('0x1b')]);}return _0x516ab0[_0x2c52('0x4e')](_0x397bbd);}})['then'](function(_0x348ab0){if(_0x348ab0){return _0x348ab0?{'count':_0x46e8c4,'rows':_0x348ab0}:null;}})[_0x2c52('0x22')](respondWithResult(_0x3a9b5e,null))[_0x2c52('0x40')](handleError(_0x3a9b5e,null));};exports[_0x2c52('0x50')]=function(_0x9a7a68,_0x14f6b2,_0x25e21d){if(_0x9a7a68[_0x2c52('0x48')]['id']){delete _0x9a7a68[_0x2c52('0x48')]['id'];}return db['DeskConfiguration'][_0x2c52('0x4a')]({'where':{'id':_0x9a7a68[_0x2c52('0x41')]['id']}})[_0x2c52('0x22')](handleEntityNotFound(_0x14f6b2,null))['then'](function(_0xf6e47b){if(_0xf6e47b){return _0xf6e47b[_0x2c52('0x50')](_0x9a7a68['body'][_0x2c52('0x51')]||[]);}return null;})[_0x2c52('0x22')](respondWithResult(_0x14f6b2,null))[_0x2c52('0x40')](handleError(_0x14f6b2,null));};
\ No newline at end of file
index f331144..ca6ca06 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x06d3=['path','rimraf','../../config/environment','./intDeskConfiguration.attributes','exports','DeskConfiguration','int_desk_configurations','lodash','api','moment','request-promise'];(function(_0x33bd25,_0x26a42c){var _0x5e8c9c=function(_0x791964){while(--_0x791964){_0x33bd25['push'](_0x33bd25['shift']());}};_0x5e8c9c(++_0x26a42c);}(_0x06d3,0xcd));var _0x306d=function(_0x507ab1,_0x9d31eb){_0x507ab1=_0x507ab1-0x0;var _0x3cd4b6=_0x06d3[_0x507ab1];return _0x3cd4b6;};'use strict';var _=require(_0x306d('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x306d('0x1'));var moment=require(_0x306d('0x2'));var BPromise=require('bluebird');var rp=require(_0x306d('0x3'));var fs=require('fs');var path=require(_0x306d('0x4'));var rimraf=require(_0x306d('0x5'));var config=require(_0x306d('0x6'));var attributes=require(_0x306d('0x7'));module[_0x306d('0x8')]=function(_0x238cee,_0x251aed){return _0x238cee['define'](_0x306d('0x9'),attributes,{'tableName':_0x306d('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1756=['exports','DeskConfiguration','int_desk_configurations','lodash','util','../../config/logger','api','request-promise','path','rimraf','../../config/environment','./intDeskConfiguration.attributes'];(function(_0x1eea2e,_0x5b75d7){var _0x5c0945=function(_0xabecce){while(--_0xabecce){_0x1eea2e['push'](_0x1eea2e['shift']());}};_0x5c0945(++_0x5b75d7);}(_0x1756,0x93));var _0x6175=function(_0x335a8b,_0x48886f){_0x335a8b=_0x335a8b-0x0;var _0x221f74=_0x1756[_0x335a8b];return _0x221f74;};'use strict';var _=require(_0x6175('0x0'));var util=require(_0x6175('0x1'));var logger=require(_0x6175('0x2'))(_0x6175('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x6175('0x4'));var fs=require('fs');var path=require(_0x6175('0x5'));var rimraf=require(_0x6175('0x6'));var config=require(_0x6175('0x7'));var attributes=require(_0x6175('0x8'));module[_0x6175('0x9')]=function(_0x2259cc,_0x416ed1){return _0x2259cc['define'](_0x6175('0xa'),attributes,{'tableName':_0x6175('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 39c7f9f..bf0725e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0447=['request\x20sent','debug','DeskConfiguration,\x20%s,\x20%s,\x20%s','error','DeskConfiguration,\x20%s,\x20%s','message','result','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info'];(function(_0x273408,_0x417fdd){var _0x413f82=function(_0x4ede40){while(--_0x4ede40){_0x273408['push'](_0x273408['shift']());}};_0x413f82(++_0x417fdd);}(_0x0447,0x8b));var _0x7044=function(_0x4e0159,_0x528421){_0x4e0159=_0x4e0159-0x0;var _0x2e0d6d=_0x0447[_0x4e0159];return _0x2e0d6d;};'use strict';var _=require(_0x7044('0x0'));var util=require(_0x7044('0x1'));var moment=require(_0x7044('0x2'));var BPromise=require(_0x7044('0x3'));var rs=require(_0x7044('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7044('0x5'))['db'];var utils=require(_0x7044('0x6'));var logger=require(_0x7044('0x7'))(_0x7044('0x8'));var config=require(_0x7044('0x9'));var jayson=require(_0x7044('0xa'));var client=jayson[_0x7044('0xb')][_0x7044('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x66b8cb,_0x51de50,_0x72d341){return new BPromise(function(_0x42d53b,_0x2a2b36){return client[_0x7044('0xd')](_0x66b8cb,_0x72d341)['then'](function(_0x41616d){logger[_0x7044('0xe')]('DeskConfiguration,\x20%s,\x20%s',_0x51de50,_0x7044('0xf'));logger[_0x7044('0x10')](_0x7044('0x11'),_0x51de50,_0x7044('0xf'),JSON['stringify'](_0x41616d));if(_0x41616d[_0x7044('0x12')]){if(_0x41616d['error']['code']===0x1f4){logger['error'](_0x7044('0x13'),_0x51de50,_0x41616d[_0x7044('0x12')][_0x7044('0x14')]);return _0x2a2b36(_0x41616d[_0x7044('0x12')]['message']);}logger['error'](_0x7044('0x13'),_0x51de50,_0x41616d[_0x7044('0x12')]['message']);return _0x42d53b(_0x41616d['error'][_0x7044('0x14')]);}else{logger[_0x7044('0xe')](_0x7044('0x13'),_0x51de50,_0x7044('0xf'));_0x42d53b(_0x41616d[_0x7044('0x15')][_0x7044('0x14')]);}})['catch'](function(_0xdae8a){logger[_0x7044('0x12')](_0x7044('0x13'),_0x51de50,_0xdae8a);_0x2a2b36(_0xdae8a);});});}
\ No newline at end of file
+var _0x2250=['DeskConfiguration,\x20%s,\x20%s','request\x20sent','DeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x2250,0x178));var _0x0225=function(_0x4605dc,_0x3f7ae5){_0x4605dc=_0x4605dc-0x0;var _0x5d3e81=_0x2250[_0x4605dc];return _0x5d3e81;};'use strict';var _=require(_0x0225('0x0'));var util=require(_0x0225('0x1'));var moment=require(_0x0225('0x2'));var BPromise=require(_0x0225('0x3'));var rs=require(_0x0225('0x4'));var fs=require('fs');var Redis=require(_0x0225('0x5'));var db=require(_0x0225('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x0225('0x7'))(_0x0225('0x8'));var config=require(_0x0225('0x9'));var jayson=require(_0x0225('0xa'));var client=jayson[_0x0225('0xb')][_0x0225('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x1a9fd5,_0x229c55,_0x4b8eda){return new BPromise(function(_0x331807,_0x5b87cc){return client['request'](_0x1a9fd5,_0x4b8eda)[_0x0225('0xd')](function(_0x1991b5){logger[_0x0225('0xe')](_0x0225('0xf'),_0x229c55,_0x0225('0x10'));logger['debug'](_0x0225('0x11'),_0x229c55,_0x0225('0x10'),JSON[_0x0225('0x12')](_0x1991b5));if(_0x1991b5[_0x0225('0x13')]){if(_0x1991b5['error'][_0x0225('0x14')]===0x1f4){logger['error'](_0x0225('0xf'),_0x229c55,_0x1991b5[_0x0225('0x13')]['message']);return _0x5b87cc(_0x1991b5[_0x0225('0x13')][_0x0225('0x15')]);}logger[_0x0225('0x13')](_0x0225('0xf'),_0x229c55,_0x1991b5[_0x0225('0x13')][_0x0225('0x15')]);return _0x331807(_0x1991b5[_0x0225('0x13')][_0x0225('0x15')]);}else{logger[_0x0225('0xe')](_0x0225('0xf'),_0x229c55,_0x0225('0x10'));_0x331807(_0x1991b5['result'][_0x0225('0x15')]);}})[_0x0225('0x16')](function(_0x59e455){logger[_0x0225('0x13')]('DeskConfiguration,\x20%s,\x20%s',_0x229c55,_0x59e455);_0x5b87cc(_0x59e455);});});}
\ No newline at end of file
index 33cb15e..277b0dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe676=['isAuthenticated','/:id','show','post','create','put','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./intDeskField.controller','get'];(function(_0x3ed727,_0xfbaa56){var _0x56e015=function(_0x234677){while(--_0x234677){_0x3ed727['push'](_0x3ed727['shift']());}};_0x56e015(++_0xfbaa56);}(_0xe676,0x1d5));var _0x6e67=function(_0x30182f,_0x30ce41){_0x30182f=_0x30182f-0x0;var _0x5207db=_0xe676[_0x30182f];return _0x5207db;};'use strict';var multer=require(_0x6e67('0x0'));var util=require(_0x6e67('0x1'));var path=require(_0x6e67('0x2'));var timeout=require(_0x6e67('0x3'));var express=require(_0x6e67('0x4'));var router=express[_0x6e67('0x5')]();var fs_extra=require(_0x6e67('0x6'));var auth=require(_0x6e67('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x6e67('0x8'));var controller=require(_0x6e67('0x9'));router[_0x6e67('0xa')]('/',auth[_0x6e67('0xb')](),controller['index']);router[_0x6e67('0xa')](_0x6e67('0xc'),auth['isAuthenticated'](),controller[_0x6e67('0xd')]);router[_0x6e67('0xe')]('/',auth[_0x6e67('0xb')](),controller[_0x6e67('0xf')]);router[_0x6e67('0x10')](_0x6e67('0xc'),auth[_0x6e67('0xb')](),controller['update']);router[_0x6e67('0x11')](_0x6e67('0xc'),auth['isAuthenticated'](),controller[_0x6e67('0x12')]);module[_0x6e67('0x13')]=router;
\ No newline at end of file
+var _0x6b9d=['exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','post','create','put','delete','destroy'];(function(_0x533437,_0x4d59d1){var _0x53f4ce=function(_0x483f6b){while(--_0x483f6b){_0x533437['push'](_0x533437['shift']());}};_0x53f4ce(++_0x4d59d1);}(_0x6b9d,0x1e4));var _0xd6b9=function(_0x7ad123,_0xeeeef3){_0x7ad123=_0x7ad123-0x0;var _0x37d073=_0x6b9d[_0x7ad123];return _0x37d073;};'use strict';var multer=require(_0xd6b9('0x0'));var util=require(_0xd6b9('0x1'));var path=require(_0xd6b9('0x2'));var timeout=require(_0xd6b9('0x3'));var express=require(_0xd6b9('0x4'));var router=express[_0xd6b9('0x5')]();var fs_extra=require(_0xd6b9('0x6'));var auth=require(_0xd6b9('0x7'));var interaction=require(_0xd6b9('0x8'));var config=require(_0xd6b9('0x9'));var controller=require('./intDeskField.controller');router[_0xd6b9('0xa')]('/',auth[_0xd6b9('0xb')](),controller[_0xd6b9('0xc')]);router[_0xd6b9('0xa')](_0xd6b9('0xd'),auth[_0xd6b9('0xb')](),controller[_0xd6b9('0xe')]);router[_0xd6b9('0xf')]('/',auth[_0xd6b9('0xb')](),controller[_0xd6b9('0x10')]);router[_0xd6b9('0x11')]('/:id',auth[_0xd6b9('0xb')](),controller['update']);router[_0xd6b9('0x12')](_0xd6b9('0xd'),auth['isAuthenticated'](),controller[_0xd6b9('0x13')]);module[_0xd6b9('0x14')]=router;
\ No newline at end of file
index 8e42bd9..0d408f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ec9=['STRING','BOOLEAN','sequelize','exports','ENUM','variable','customVariable','picklist','string'];(function(_0x6eee62,_0x25680a){var _0x4d5417=function(_0x6b969a){while(--_0x6b969a){_0x6eee62['push'](_0x6eee62['shift']());}};_0x4d5417(++_0x25680a);}(_0x2ec9,0x1bb));var _0x92ec=function(_0x3a177b,_0x10d9fe){_0x3a177b=_0x3a177b-0x0;var _0x205959=_0x2ec9[_0x3a177b];return _0x205959;};'use strict';var Sequelize=require(_0x92ec('0x0'));module[_0x92ec('0x1')]={'type':{'type':Sequelize[_0x92ec('0x2')]('string',_0x92ec('0x3'),_0x92ec('0x4'),'keyValue',_0x92ec('0x5')),'defaultValue':_0x92ec('0x6')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x92ec('0x7')]},'keyType':{'type':Sequelize[_0x92ec('0x2')](_0x92ec('0x6'),'variable',_0x92ec('0x4'))},'keyContent':{'type':Sequelize[_0x92ec('0x7')]},'idField':{'type':Sequelize[_0x92ec('0x7')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x92ec('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x92ec('0x7')]}};
\ No newline at end of file
+var _0xe3c2=['customVariable','keyValue','picklist','STRING','string','sequelize','ENUM','variable'];(function(_0x482e4b,_0x30b54d){var _0x5a3901=function(_0x189f2f){while(--_0x189f2f){_0x482e4b['push'](_0x482e4b['shift']());}};_0x5a3901(++_0x30b54d);}(_0xe3c2,0x195));var _0x2e3c=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xe3c2[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x2e3c('0x0'));module['exports']={'type':{'type':Sequelize[_0x2e3c('0x1')]('string',_0x2e3c('0x2'),_0x2e3c('0x3'),_0x2e3c('0x4'),_0x2e3c('0x5')),'defaultValue':'string'},'content':{'type':Sequelize[_0x2e3c('0x6')]},'key':{'type':Sequelize[_0x2e3c('0x6')]},'keyType':{'type':Sequelize['ENUM'](_0x2e3c('0x7'),_0x2e3c('0x2'),_0x2e3c('0x3'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x2e3c('0x6')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 6c81652..771d765 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5379=['reject','save','update','then','destroy','sendStatus','error','stack','name','send','index','DeskField','fieldName','map','query','keys','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','rows','catch','show','params','rawAttributes','include','create','body','find','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','ejs','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','status','end','json','offset','undefined','limit','count','set','Content-Range','apply'];(function(_0x4ec7f2,_0x3d92d2){var _0x118004=function(_0x1ac4fb){while(--_0x1ac4fb){_0x4ec7f2['push'](_0x4ec7f2['shift']());}};_0x118004(++_0x3d92d2);}(_0x5379,0x1a2));var _0x9537=function(_0x3971bc,_0x31f003){_0x3971bc=_0x3971bc-0x0;var _0x2da5f5=_0x5379[_0x3971bc];return _0x2da5f5;};'use strict';var emlformat=require(_0x9537('0x0'));var rimraf=require(_0x9537('0x1'));var zipdir=require(_0x9537('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x9537('0x3'));var moment=require('moment');var BPromise=require(_0x9537('0x4'));var Mustache=require(_0x9537('0x5'));var util=require(_0x9537('0x6'));var path=require(_0x9537('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x9537('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9537('0x9'));var squel=require(_0x9537('0xa'));var crypto=require(_0x9537('0xb'));var jsforce=require(_0x9537('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x9537('0xd'));var querystring=require(_0x9537('0xe'));var Papa=require(_0x9537('0xf'));var Redis=require(_0x9537('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x9537('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x9537('0x12'))(_0x9537('0x13'));var utils=require(_0x9537('0x14'));var config=require(_0x9537('0x15'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x45337f,_0x2a29a6){_0x2a29a6=_0x2a29a6||0xcc;return function(_0x1afbf8){if(_0x1afbf8){return _0x45337f['sendStatus'](_0x2a29a6);}return _0x45337f[_0x9537('0x16')](_0x2a29a6)[_0x9537('0x17')]();};}function respondWithResult(_0x152d1a,_0x507e5c){_0x507e5c=_0x507e5c||0xc8;return function(_0x2e0660){if(_0x2e0660){return _0x152d1a[_0x9537('0x16')](_0x507e5c)[_0x9537('0x18')](_0x2e0660);}};}function respondWithFilteredResult(_0x55abad,_0x1a4327){return function(_0x4dcaca){if(_0x4dcaca){var _0x5e87a6=typeof _0x1a4327[_0x9537('0x19')]===_0x9537('0x1a')&&typeof _0x1a4327[_0x9537('0x1b')]===_0x9537('0x1a');var _0x34be49=_0x4dcaca[_0x9537('0x1c')];var _0x5b6d04=_0x5e87a6?0x0:_0x1a4327[_0x9537('0x19')];var _0xc2a33f=_0x5e87a6?_0x4dcaca[_0x9537('0x1c')]:_0x1a4327['offset']+_0x1a4327[_0x9537('0x1b')];var _0x108cc4;if(_0xc2a33f>=_0x34be49){_0xc2a33f=_0x34be49;_0x108cc4=0xc8;}else{_0x108cc4=0xce;}_0x55abad['status'](_0x108cc4);return _0x55abad[_0x9537('0x1d')](_0x9537('0x1e'),_0x5b6d04+'-'+_0xc2a33f+'/'+_0x34be49)['json'](_0x4dcaca);}return null;};}function patchUpdates(_0x4d0f0f){return function(_0x5bd365){try{jsonpatch[_0x9537('0x1f')](_0x5bd365,_0x4d0f0f,!![]);}catch(_0x32d54e){return BPromise[_0x9537('0x20')](_0x32d54e);}return _0x5bd365[_0x9537('0x21')]();};}function saveUpdates(_0x132ad5,_0x22e86a){return function(_0x53ea20){if(_0x53ea20){return _0x53ea20[_0x9537('0x22')](_0x132ad5)[_0x9537('0x23')](function(_0x1f3f87){return _0x1f3f87;});}return null;};}function removeEntity(_0x4f9706,_0x481aa5){return function(_0xaa3222){if(_0xaa3222){return _0xaa3222[_0x9537('0x24')]()[_0x9537('0x23')](function(){_0x4f9706[_0x9537('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1c4df8,_0xf16084){return function(_0xf1f702){if(!_0xf1f702){_0x1c4df8[_0x9537('0x25')](0x194);}return _0xf1f702;};}function handleError(_0x4aae2b,_0x204c8d){_0x204c8d=_0x204c8d||0x1f4;return function(_0x2ef7b9){logger[_0x9537('0x26')](_0x2ef7b9[_0x9537('0x27')]);if(_0x2ef7b9['name']){delete _0x2ef7b9[_0x9537('0x28')];}_0x4aae2b[_0x9537('0x16')](_0x204c8d)[_0x9537('0x29')](_0x2ef7b9);};}exports[_0x9537('0x2a')]=function(_0xfc643e,_0x4f774f){var _0x482df0={},_0x1e8207={},_0x185033={'count':0x0,'rows':[]};var _0x2b6ec1=_['map'](db[_0x9537('0x2b')]['rawAttributes'],function(_0x499c03){return{'name':_0x499c03[_0x9537('0x2c')],'type':_0x499c03['type']['key']};});_0x1e8207['model']=_[_0x9537('0x2d')](_0x2b6ec1,_0x9537('0x28'));_0x1e8207[_0x9537('0x2e')]=_[_0x9537('0x2f')](_0xfc643e[_0x9537('0x2e')]);_0x1e8207[_0x9537('0x30')]=_[_0x9537('0x31')](_0x1e8207['model'],_0x1e8207[_0x9537('0x2e')]);_0x482df0[_0x9537('0x32')]=_[_0x9537('0x31')](_0x1e8207[_0x9537('0x33')],qs['fields'](_0xfc643e[_0x9537('0x2e')][_0x9537('0x34')]));_0x482df0[_0x9537('0x32')]=_0x482df0[_0x9537('0x32')][_0x9537('0x35')]?_0x482df0[_0x9537('0x32')]:_0x1e8207[_0x9537('0x33')];if(!_0xfc643e['query'][_0x9537('0x36')](_0x9537('0x37'))){_0x482df0[_0x9537('0x1b')]=qs[_0x9537('0x1b')](_0xfc643e[_0x9537('0x2e')][_0x9537('0x1b')]);_0x482df0[_0x9537('0x19')]=qs[_0x9537('0x19')](_0xfc643e[_0x9537('0x2e')][_0x9537('0x19')]);}_0x482df0[_0x9537('0x38')]=qs[_0x9537('0x39')](_0xfc643e['query']['sort']);_0x482df0[_0x9537('0x3a')]=qs['filters'](_[_0x9537('0x3b')](_0xfc643e[_0x9537('0x2e')],_0x1e8207[_0x9537('0x30')]),_0x2b6ec1);if(_0xfc643e[_0x9537('0x2e')][_0x9537('0x3c')]){_0x482df0[_0x9537('0x3a')]=_[_0x9537('0x3d')](_0x482df0[_0x9537('0x3a')],{'$or':_['map'](_0x2b6ec1,function(_0x22e175){if(_0x22e175[_0x9537('0x3e')]!==_0x9537('0x3f')){var _0x2ac030={};_0x2ac030[_0x22e175[_0x9537('0x28')]]={'$like':'%'+_0xfc643e[_0x9537('0x2e')]['filter']+'%'};return _0x2ac030;}})});}_0x482df0=_['merge']({},_0x482df0,_0xfc643e[_0x9537('0x40')]);var _0x2d84ea={'where':_0x482df0[_0x9537('0x3a')]};return db[_0x9537('0x2b')]['count'](_0x2d84ea)['then'](function(_0x1c4878){_0x185033[_0x9537('0x1c')]=_0x1c4878;if(_0xfc643e[_0x9537('0x2e')][_0x9537('0x41')]){_0x482df0['include']=[{'all':!![]}];}return db[_0x9537('0x2b')]['findAll'](_0x482df0);})[_0x9537('0x23')](function(_0x5e21db){_0x185033[_0x9537('0x42')]=_0x5e21db;return _0x185033;})[_0x9537('0x23')](respondWithFilteredResult(_0x4f774f,_0x482df0))[_0x9537('0x43')](handleError(_0x4f774f,null));};exports[_0x9537('0x44')]=function(_0x142a4a,_0x4b04be){var _0x1ac923={'raw':!![],'where':{'id':_0x142a4a[_0x9537('0x45')]['id']}},_0x3fef71={};_0x3fef71['model']=_['keys'](db[_0x9537('0x2b')][_0x9537('0x46')]);_0x3fef71[_0x9537('0x2e')]=_[_0x9537('0x2f')](_0x142a4a[_0x9537('0x2e')]);_0x3fef71['filters']=_[_0x9537('0x31')](_0x3fef71['model'],_0x3fef71[_0x9537('0x2e')]);_0x1ac923['attributes']=_['intersection'](_0x3fef71[_0x9537('0x33')],qs[_0x9537('0x34')](_0x142a4a[_0x9537('0x2e')][_0x9537('0x34')]));_0x1ac923[_0x9537('0x32')]=_0x1ac923['attributes']['length']?_0x1ac923[_0x9537('0x32')]:_0x3fef71['model'];if(_0x142a4a[_0x9537('0x2e')][_0x9537('0x41')]){_0x1ac923[_0x9537('0x47')]=[{'all':!![]}];}_0x1ac923=_[_0x9537('0x3d')]({},_0x1ac923,_0x142a4a[_0x9537('0x40')]);return db[_0x9537('0x2b')]['find'](_0x1ac923)['then'](handleEntityNotFound(_0x4b04be,null))['then'](respondWithResult(_0x4b04be,null))[_0x9537('0x43')](handleError(_0x4b04be,null));};exports[_0x9537('0x48')]=function(_0x561745,_0x234a5e){return db[_0x9537('0x2b')][_0x9537('0x48')](_0x561745[_0x9537('0x49')],{})[_0x9537('0x23')](respondWithResult(_0x234a5e,0xc9))[_0x9537('0x43')](handleError(_0x234a5e,null));};exports[_0x9537('0x22')]=function(_0x1081cb,_0x4fb9bc){if(_0x1081cb[_0x9537('0x49')]['id']){delete _0x1081cb['body']['id'];}return db[_0x9537('0x2b')][_0x9537('0x4a')]({'where':{'id':_0x1081cb[_0x9537('0x45')]['id']}})[_0x9537('0x23')](handleEntityNotFound(_0x4fb9bc,null))[_0x9537('0x23')](saveUpdates(_0x1081cb['body'],null))['then'](respondWithResult(_0x4fb9bc,null))[_0x9537('0x43')](handleError(_0x4fb9bc,null));};exports['destroy']=function(_0x1b9d71,_0x2a37f8){return db['DeskField'][_0x9537('0x4a')]({'where':{'id':_0x1b9d71[_0x9537('0x45')]['id']}})[_0x9537('0x23')](handleEntityNotFound(_0x2a37f8,null))['then'](removeEntity(_0x2a37f8,null))[_0x9537('0x43')](handleError(_0x2a37f8,null));};
\ No newline at end of file
+var _0x1636=['rows','catch','show','params','create','body','find','eml-format','zip-dir','request-promise','moment','bluebird','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','save','update','then','destroy','stack','name','index','map','rawAttributes','type','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','DeskField','findAll'];(function(_0x31a371,_0x50828e){var _0x2a5bd6=function(_0x2fb481){while(--_0x2fb481){_0x31a371['push'](_0x31a371['shift']());}};_0x2a5bd6(++_0x50828e);}(_0x1636,0x1b1));var _0x6163=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0x1636[_0x4565bf];return _0x5610ba;};'use strict';var emlformat=require(_0x6163('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x6163('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6163('0x2'));var moment=require(_0x6163('0x3'));var BPromise=require(_0x6163('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x6163('0x5'));var sox=require(_0x6163('0x6'));var csv=require(_0x6163('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6163('0x8'));var _=require(_0x6163('0x9'));var squel=require(_0x6163('0xa'));var crypto=require(_0x6163('0xb'));var jsforce=require(_0x6163('0xc'));var deskjs=require(_0x6163('0xd'));var toCsv=require('to-csv');var querystring=require(_0x6163('0xe'));var Papa=require(_0x6163('0xf'));var Redis=require(_0x6163('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x6163('0x11'));var as=require(_0x6163('0x12'));var hardwareService=require(_0x6163('0x13'));var logger=require('../../config/logger')(_0x6163('0x14'));var utils=require('../../config/utils');var config=require(_0x6163('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x6163('0x16'))['db'];function respondWithStatusCode(_0x53e622,_0x1f9a14){_0x1f9a14=_0x1f9a14||0xcc;return function(_0x1557db){if(_0x1557db){return _0x53e622[_0x6163('0x17')](_0x1f9a14);}return _0x53e622[_0x6163('0x18')](_0x1f9a14)[_0x6163('0x19')]();};}function respondWithResult(_0x4c1db1,_0x3fc78c){_0x3fc78c=_0x3fc78c||0xc8;return function(_0x1263b0){if(_0x1263b0){return _0x4c1db1['status'](_0x3fc78c)[_0x6163('0x1a')](_0x1263b0);}};}function respondWithFilteredResult(_0x56996c,_0x455daf){return function(_0x1b1abf){if(_0x1b1abf){var _0x2f773d=typeof _0x455daf[_0x6163('0x1b')]===_0x6163('0x1c')&&typeof _0x455daf[_0x6163('0x1d')]==='undefined';var _0x14ded4=_0x1b1abf[_0x6163('0x1e')];var _0x2500e0=_0x2f773d?0x0:_0x455daf['offset'];var _0x1dffc4=_0x2f773d?_0x1b1abf[_0x6163('0x1e')]:_0x455daf['offset']+_0x455daf[_0x6163('0x1d')];var _0x10b46a;if(_0x1dffc4>=_0x14ded4){_0x1dffc4=_0x14ded4;_0x10b46a=0xc8;}else{_0x10b46a=0xce;}_0x56996c[_0x6163('0x18')](_0x10b46a);return _0x56996c['set'](_0x6163('0x1f'),_0x2500e0+'-'+_0x1dffc4+'/'+_0x14ded4)[_0x6163('0x1a')](_0x1b1abf);}return null;};}function patchUpdates(_0x36b795){return function(_0x297d4c){try{jsonpatch[_0x6163('0x20')](_0x297d4c,_0x36b795,!![]);}catch(_0x3acbb0){return BPromise['reject'](_0x3acbb0);}return _0x297d4c[_0x6163('0x21')]();};}function saveUpdates(_0x232d4f,_0x2c6ae2){return function(_0x5afde3){if(_0x5afde3){return _0x5afde3[_0x6163('0x22')](_0x232d4f)[_0x6163('0x23')](function(_0x2c93df){return _0x2c93df;});}return null;};}function removeEntity(_0x3b7122,_0x419f80){return function(_0xe7883e){if(_0xe7883e){return _0xe7883e[_0x6163('0x24')]()['then'](function(){_0x3b7122['status'](0xcc)[_0x6163('0x19')]();});}};}function handleEntityNotFound(_0x42c6d4,_0x426dd1){return function(_0x37bfa7){if(!_0x37bfa7){_0x42c6d4[_0x6163('0x17')](0x194);}return _0x37bfa7;};}function handleError(_0x55bae7,_0x5eeb09){_0x5eeb09=_0x5eeb09||0x1f4;return function(_0x218137){logger['error'](_0x218137[_0x6163('0x25')]);if(_0x218137[_0x6163('0x26')]){delete _0x218137[_0x6163('0x26')];}_0x55bae7[_0x6163('0x18')](_0x5eeb09)['send'](_0x218137);};}exports[_0x6163('0x27')]=function(_0x41511a,_0x48168d){var _0x1d648c={},_0x1021d0={},_0x4d96d8={'count':0x0,'rows':[]};var _0xdc65e4=_[_0x6163('0x28')](db['DeskField'][_0x6163('0x29')],function(_0x3fb640){return{'name':_0x3fb640['fieldName'],'type':_0x3fb640[_0x6163('0x2a')]['key']};});_0x1021d0[_0x6163('0x2b')]=_[_0x6163('0x28')](_0xdc65e4,_0x6163('0x26'));_0x1021d0[_0x6163('0x2c')]=_[_0x6163('0x2d')](_0x41511a[_0x6163('0x2c')]);_0x1021d0[_0x6163('0x2e')]=_[_0x6163('0x2f')](_0x1021d0[_0x6163('0x2b')],_0x1021d0[_0x6163('0x2c')]);_0x1d648c['attributes']=_[_0x6163('0x2f')](_0x1021d0[_0x6163('0x2b')],qs[_0x6163('0x30')](_0x41511a[_0x6163('0x2c')]['fields']));_0x1d648c[_0x6163('0x31')]=_0x1d648c[_0x6163('0x31')][_0x6163('0x32')]?_0x1d648c[_0x6163('0x31')]:_0x1021d0['model'];if(!_0x41511a[_0x6163('0x2c')][_0x6163('0x33')](_0x6163('0x34'))){_0x1d648c[_0x6163('0x1d')]=qs[_0x6163('0x1d')](_0x41511a[_0x6163('0x2c')][_0x6163('0x1d')]);_0x1d648c[_0x6163('0x1b')]=qs[_0x6163('0x1b')](_0x41511a['query'][_0x6163('0x1b')]);}_0x1d648c['order']=qs[_0x6163('0x35')](_0x41511a['query'][_0x6163('0x35')]);_0x1d648c['where']=qs['filters'](_[_0x6163('0x36')](_0x41511a[_0x6163('0x2c')],_0x1021d0[_0x6163('0x2e')]),_0xdc65e4);if(_0x41511a['query'][_0x6163('0x37')]){_0x1d648c[_0x6163('0x38')]=_[_0x6163('0x39')](_0x1d648c[_0x6163('0x38')],{'$or':_[_0x6163('0x28')](_0xdc65e4,function(_0x13524f){if(_0x13524f[_0x6163('0x2a')]!==_0x6163('0x3a')){var _0x4d15c8={};_0x4d15c8[_0x13524f['name']]={'$like':'%'+_0x41511a[_0x6163('0x2c')][_0x6163('0x37')]+'%'};return _0x4d15c8;}})});}_0x1d648c=_[_0x6163('0x39')]({},_0x1d648c,_0x41511a[_0x6163('0x3b')]);var _0x12182d={'where':_0x1d648c[_0x6163('0x38')]};return db['DeskField'][_0x6163('0x1e')](_0x12182d)['then'](function(_0x8792a7){_0x4d96d8[_0x6163('0x1e')]=_0x8792a7;if(_0x41511a['query'][_0x6163('0x3c')]){_0x1d648c[_0x6163('0x3d')]=[{'all':!![]}];}return db[_0x6163('0x3e')][_0x6163('0x3f')](_0x1d648c);})['then'](function(_0x3d9ab0){_0x4d96d8[_0x6163('0x40')]=_0x3d9ab0;return _0x4d96d8;})['then'](respondWithFilteredResult(_0x48168d,_0x1d648c))[_0x6163('0x41')](handleError(_0x48168d,null));};exports[_0x6163('0x42')]=function(_0xf3c26b,_0x3ca40e){var _0x5b20ac={'raw':!![],'where':{'id':_0xf3c26b[_0x6163('0x43')]['id']}},_0x4c8197={};_0x4c8197[_0x6163('0x2b')]=_['keys'](db[_0x6163('0x3e')][_0x6163('0x29')]);_0x4c8197[_0x6163('0x2c')]=_[_0x6163('0x2d')](_0xf3c26b[_0x6163('0x2c')]);_0x4c8197['filters']=_[_0x6163('0x2f')](_0x4c8197[_0x6163('0x2b')],_0x4c8197[_0x6163('0x2c')]);_0x5b20ac[_0x6163('0x31')]=_['intersection'](_0x4c8197[_0x6163('0x2b')],qs[_0x6163('0x30')](_0xf3c26b['query'][_0x6163('0x30')]));_0x5b20ac['attributes']=_0x5b20ac[_0x6163('0x31')][_0x6163('0x32')]?_0x5b20ac[_0x6163('0x31')]:_0x4c8197[_0x6163('0x2b')];if(_0xf3c26b[_0x6163('0x2c')][_0x6163('0x3c')]){_0x5b20ac[_0x6163('0x3d')]=[{'all':!![]}];}_0x5b20ac=_['merge']({},_0x5b20ac,_0xf3c26b[_0x6163('0x3b')]);return db[_0x6163('0x3e')]['find'](_0x5b20ac)[_0x6163('0x23')](handleEntityNotFound(_0x3ca40e,null))[_0x6163('0x23')](respondWithResult(_0x3ca40e,null))['catch'](handleError(_0x3ca40e,null));};exports['create']=function(_0x1c8f52,_0x26a6dc){return db[_0x6163('0x3e')][_0x6163('0x44')](_0x1c8f52['body'],{})[_0x6163('0x23')](respondWithResult(_0x26a6dc,0xc9))[_0x6163('0x41')](handleError(_0x26a6dc,null));};exports[_0x6163('0x22')]=function(_0x2a3295,_0x981867){if(_0x2a3295['body']['id']){delete _0x2a3295[_0x6163('0x45')]['id'];}return db[_0x6163('0x3e')][_0x6163('0x46')]({'where':{'id':_0x2a3295[_0x6163('0x43')]['id']}})[_0x6163('0x23')](handleEntityNotFound(_0x981867,null))[_0x6163('0x23')](saveUpdates(_0x2a3295[_0x6163('0x45')],null))[_0x6163('0x23')](respondWithResult(_0x981867,null))[_0x6163('0x41')](handleError(_0x981867,null));};exports[_0x6163('0x24')]=function(_0x2f76c5,_0x6be2e3){return db['DeskField'][_0x6163('0x46')]({'where':{'id':_0x2f76c5[_0x6163('0x43')]['id']}})[_0x6163('0x23')](handleEntityNotFound(_0x6be2e3,null))['then'](removeEntity(_0x6be2e3,null))[_0x6163('0x41')](handleError(_0x6be2e3,null));};
\ No newline at end of file
index 67a17fd..042e3d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d8d=['DeskField','int_desk_fields','desk_unique_index','idField','FieldId','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./intDeskField.attributes','exports','define'];(function(_0x27e83f,_0x43cc6b){var _0x146933=function(_0x435d24){while(--_0x435d24){_0x27e83f['push'](_0x27e83f['shift']());}};_0x146933(++_0x43cc6b);}(_0x4d8d,0x1f2));var _0xd4d8=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x4d8d[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0xd4d8('0x0'));var util=require(_0xd4d8('0x1'));var logger=require(_0xd4d8('0x2'))(_0xd4d8('0x3'));var moment=require(_0xd4d8('0x4'));var BPromise=require('bluebird');var rp=require(_0xd4d8('0x5'));var fs=require('fs');var path=require(_0xd4d8('0x6'));var rimraf=require(_0xd4d8('0x7'));var config=require(_0xd4d8('0x8'));var attributes=require(_0xd4d8('0x9'));module[_0xd4d8('0xa')]=function(_0x216b4b,_0x3b23bb){return _0x216b4b[_0xd4d8('0xb')](_0xd4d8('0xc'),attributes,{'tableName':_0xd4d8('0xd'),'paranoid':![],'indexes':[{'name':_0xd4d8('0xe'),'fields':[_0xd4d8('0xf'),_0xd4d8('0x10')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x11a5=['desk_unique_index','idField','FieldId','lodash','util','../../config/logger','moment','request-promise','path','rimraf','../../config/environment','./intDeskField.attributes','exports','define','DeskField','int_desk_fields'];(function(_0x569201,_0x5ef680){var _0x5af51b=function(_0x454054){while(--_0x454054){_0x569201['push'](_0x569201['shift']());}};_0x5af51b(++_0x5ef680);}(_0x11a5,0x1d3));var _0x511a=function(_0x5d68a2,_0x4304cf){_0x5d68a2=_0x5d68a2-0x0;var _0x5b3088=_0x11a5[_0x5d68a2];return _0x5b3088;};'use strict';var _=require(_0x511a('0x0'));var util=require(_0x511a('0x1'));var logger=require(_0x511a('0x2'))('api');var moment=require(_0x511a('0x3'));var BPromise=require('bluebird');var rp=require(_0x511a('0x4'));var fs=require('fs');var path=require(_0x511a('0x5'));var rimraf=require(_0x511a('0x6'));var config=require(_0x511a('0x7'));var attributes=require(_0x511a('0x8'));module[_0x511a('0x9')]=function(_0x4bd2b0,_0x58b770){return _0x4bd2b0[_0x511a('0xa')](_0x511a('0xb'),attributes,{'tableName':_0x511a('0xc'),'paranoid':![],'indexes':[{'name':_0x511a('0xd'),'fields':[_0x511a('0xe'),_0x511a('0xf')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 17759a6..eb89b38 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe9fe=['message','info','result','catch','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','request','then','DeskField,\x20%s,\x20%s','request\x20sent','DeskField,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x101d2a,_0x2e4274){var _0xa2297e=function(_0x30ffa6){while(--_0x30ffa6){_0x101d2a['push'](_0x101d2a['shift']());}};_0xa2297e(++_0x2e4274);}(_0xe9fe,0x72));var _0xee9f=function(_0x1283d4,_0x36b6f1){_0x1283d4=_0x1283d4-0x0;var _0x433643=_0xe9fe[_0x1283d4];return _0x433643;};'use strict';var _=require(_0xee9f('0x0'));var util=require(_0xee9f('0x1'));var moment=require('moment');var BPromise=require(_0xee9f('0x2'));var rs=require(_0xee9f('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xee9f('0x4'))['db'];var utils=require(_0xee9f('0x5'));var logger=require(_0xee9f('0x6'))(_0xee9f('0x7'));var config=require(_0xee9f('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xee9f('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1a2be7,_0x8eaa60,_0x2b4f12){return new BPromise(function(_0x4635f5,_0x3615e1){return client[_0xee9f('0xa')](_0x1a2be7,_0x2b4f12)[_0xee9f('0xb')](function(_0x2986d4){logger['info'](_0xee9f('0xc'),_0x8eaa60,_0xee9f('0xd'));logger['debug'](_0xee9f('0xe'),_0x8eaa60,'request\x20sent',JSON[_0xee9f('0xf')](_0x2986d4));if(_0x2986d4[_0xee9f('0x10')]){if(_0x2986d4[_0xee9f('0x10')][_0xee9f('0x11')]===0x1f4){logger[_0xee9f('0x10')](_0xee9f('0xc'),_0x8eaa60,_0x2986d4[_0xee9f('0x10')][_0xee9f('0x12')]);return _0x3615e1(_0x2986d4[_0xee9f('0x10')]['message']);}logger[_0xee9f('0x10')](_0xee9f('0xc'),_0x8eaa60,_0x2986d4[_0xee9f('0x10')][_0xee9f('0x12')]);return _0x4635f5(_0x2986d4[_0xee9f('0x10')][_0xee9f('0x12')]);}else{logger[_0xee9f('0x13')](_0xee9f('0xc'),_0x8eaa60,'request\x20sent');_0x4635f5(_0x2986d4[_0xee9f('0x14')][_0xee9f('0x12')]);}})[_0xee9f('0x15')](function(_0x4b6942){logger[_0xee9f('0x10')](_0xee9f('0xc'),_0x8eaa60,_0x4b6942);_0x3615e1(_0x4b6942);});});}
\ No newline at end of file
+var _0xb3a3=['util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','DeskField,\x20%s,\x20%s','request\x20sent','debug','DeskField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash'];(function(_0x47767d,_0x1f9a36){var _0xf5ecb4=function(_0x245174){while(--_0x245174){_0x47767d['push'](_0x47767d['shift']());}};_0xf5ecb4(++_0x1f9a36);}(_0xb3a3,0x17f));var _0x3b3a=function(_0x25da81,_0x2821b2){_0x25da81=_0x25da81-0x0;var _0x3a0ff9=_0xb3a3[_0x25da81];return _0x3a0ff9;};'use strict';var _=require(_0x3b3a('0x0'));var util=require(_0x3b3a('0x1'));var moment=require('moment');var BPromise=require(_0x3b3a('0x2'));var rs=require(_0x3b3a('0x3'));var fs=require('fs');var Redis=require(_0x3b3a('0x4'));var db=require(_0x3b3a('0x5'))['db'];var utils=require(_0x3b3a('0x6'));var logger=require(_0x3b3a('0x7'))(_0x3b3a('0x8'));var config=require(_0x3b3a('0x9'));var jayson=require(_0x3b3a('0xa'));var client=jayson[_0x3b3a('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x35f0a4,_0x17fd99,_0x2f42d9){return new BPromise(function(_0x61bc0d,_0x84eae7){return client[_0x3b3a('0xc')](_0x35f0a4,_0x2f42d9)[_0x3b3a('0xd')](function(_0x3e19d8){logger[_0x3b3a('0xe')](_0x3b3a('0xf'),_0x17fd99,_0x3b3a('0x10'));logger[_0x3b3a('0x11')](_0x3b3a('0x12'),_0x17fd99,_0x3b3a('0x10'),JSON[_0x3b3a('0x13')](_0x3e19d8));if(_0x3e19d8['error']){if(_0x3e19d8[_0x3b3a('0x14')][_0x3b3a('0x15')]===0x1f4){logger['error'](_0x3b3a('0xf'),_0x17fd99,_0x3e19d8[_0x3b3a('0x14')]['message']);return _0x84eae7(_0x3e19d8[_0x3b3a('0x14')]['message']);}logger[_0x3b3a('0x14')]('DeskField,\x20%s,\x20%s',_0x17fd99,_0x3e19d8['error'][_0x3b3a('0x16')]);return _0x61bc0d(_0x3e19d8['error'][_0x3b3a('0x16')]);}else{logger[_0x3b3a('0xe')](_0x3b3a('0xf'),_0x17fd99,_0x3b3a('0x10'));_0x61bc0d(_0x3e19d8[_0x3b3a('0x17')][_0x3b3a('0x16')]);}})['catch'](function(_0x216ce6){logger[_0x3b3a('0x14')](_0x3b3a('0xf'),_0x17fd99,_0x216ce6);_0x84eae7(_0x216ce6);});});}
\ No newline at end of file
index b772ad6..eb14963 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d48=['./intDynamics365Account.controller','isAuthenticated','get','/:id','/:id/configurations','getConfigurations','getFields','post','create','addConfiguration','update','destroy','exports','util','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0xd01c0f,_0x338f4f){var _0x498e77=function(_0x400323){while(--_0x400323){_0xd01c0f['push'](_0xd01c0f['shift']());}};_0x498e77(++_0x338f4f);}(_0x2d48,0xcb));var _0x82d4=function(_0x4d2583,_0x52bd89){_0x4d2583=_0x4d2583-0x0;var _0x57fa3a=_0x2d48[_0x4d2583];return _0x57fa3a;};'use strict';var multer=require('multer');var util=require(_0x82d4('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x82d4('0x1'));var router=express['Router']();var fs_extra=require(_0x82d4('0x2'));var auth=require(_0x82d4('0x3'));var interaction=require(_0x82d4('0x4'));var config=require(_0x82d4('0x5'));var controller=require(_0x82d4('0x6'));router['get']('/',auth[_0x82d4('0x7')](),controller['index']);router[_0x82d4('0x8')](_0x82d4('0x9'),auth[_0x82d4('0x7')](),controller['show']);router[_0x82d4('0x8')](_0x82d4('0xa'),auth[_0x82d4('0x7')](),controller[_0x82d4('0xb')]);router[_0x82d4('0x8')]('/:id/fields',auth[_0x82d4('0x7')](),controller[_0x82d4('0xc')]);router[_0x82d4('0xd')]('/',auth[_0x82d4('0x7')](),controller[_0x82d4('0xe')]);router[_0x82d4('0xd')](_0x82d4('0xa'),auth['isAuthenticated'](),controller[_0x82d4('0xf')]);router['put'](_0x82d4('0x9'),auth[_0x82d4('0x7')](),controller[_0x82d4('0x10')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0x82d4('0x11')]);module[_0x82d4('0x12')]=router;
\ No newline at end of file
+var _0x2081=['destroy','exports','util','path','express','Router','fs-extra','get','isAuthenticated','index','show','getConfigurations','getFields','create','post','/:id/configurations','addConfiguration','/:id'];(function(_0xaa0309,_0x1c8008){var _0x5de7ce=function(_0x3aa6ae){while(--_0x3aa6ae){_0xaa0309['push'](_0xaa0309['shift']());}};_0x5de7ce(++_0x1c8008);}(_0x2081,0xda));var _0x1208=function(_0x380a3f,_0x202483){_0x380a3f=_0x380a3f-0x0;var _0x2b4eca=_0x2081[_0x380a3f];return _0x2b4eca;};'use strict';var multer=require('multer');var util=require(_0x1208('0x0'));var path=require(_0x1208('0x1'));var timeout=require('connect-timeout');var express=require(_0x1208('0x2'));var router=express[_0x1208('0x3')]();var fs_extra=require(_0x1208('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./intDynamics365Account.controller');router[_0x1208('0x5')]('/',auth[_0x1208('0x6')](),controller[_0x1208('0x7')]);router[_0x1208('0x5')]('/:id',auth[_0x1208('0x6')](),controller[_0x1208('0x8')]);router[_0x1208('0x5')]('/:id/configurations',auth[_0x1208('0x6')](),controller[_0x1208('0x9')]);router[_0x1208('0x5')]('/:id/fields',auth[_0x1208('0x6')](),controller[_0x1208('0xa')]);router['post']('/',auth[_0x1208('0x6')](),controller[_0x1208('0xb')]);router[_0x1208('0xc')](_0x1208('0xd'),auth[_0x1208('0x6')](),controller[_0x1208('0xe')]);router['put'](_0x1208('0xf'),auth[_0x1208('0x6')](),controller['update']);router['delete'](_0x1208('0xf'),auth[_0x1208('0x6')](),controller[_0x1208('0x10')]);module[_0x1208('0x11')]=router;
\ No newline at end of file
index 16e2371..83534c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ce6=['sequelize','STRING'];(function(_0x11343c,_0x12857d){var _0x5603b2=function(_0x3e06bd){while(--_0x3e06bd){_0x11343c['push'](_0x11343c['shift']());}};_0x5603b2(++_0x12857d);}(_0x4ce6,0x108));var _0x64ce=function(_0x455c6c,_0x1e78b7){_0x455c6c=_0x455c6c-0x0;var _0x488242=_0x4ce6[_0x455c6c];return _0x488242;};'use strict';var Sequelize=require(_0x64ce('0x0'));module['exports']={'name':{'type':Sequelize[_0x64ce('0x1')]},'username':{'type':Sequelize[_0x64ce('0x1')]},'password':{'type':Sequelize[_0x64ce('0x1')]},'remoteUri':{'type':Sequelize[_0x64ce('0x1')]},'tenantId':{'type':Sequelize[_0x64ce('0x1')]},'clientId':{'type':Sequelize[_0x64ce('0x1')]},'clientSecret':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize[_0x64ce('0x1')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'modernAuthentication':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
+var _0x448b=['BOOLEAN','sequelize','exports','STRING'];(function(_0x555337,_0x1559d1){var _0x49b217=function(_0x3cb634){while(--_0x3cb634){_0x555337['push'](_0x555337['shift']());}};_0x49b217(++_0x1559d1);}(_0x448b,0x125));var _0xb448=function(_0x478628,_0x17f58e){_0x478628=_0x478628-0x0;var _0x3a3c60=_0x448b[_0x478628];return _0x3a3c60;};'use strict';var Sequelize=require(_0xb448('0x0'));module[_0xb448('0x1')]={'name':{'type':Sequelize[_0xb448('0x2')]},'username':{'type':Sequelize[_0xb448('0x2')]},'password':{'type':Sequelize[_0xb448('0x2')]},'remoteUri':{'type':Sequelize[_0xb448('0x2')]},'tenantId':{'type':Sequelize['STRING']},'clientId':{'type':Sequelize[_0xb448('0x2')]},'clientSecret':{'type':Sequelize[_0xb448('0x2')]},'serverUrl':{'type':Sequelize[_0xb448('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0xb448('0x2')]},'modernAuthentication':{'type':Sequelize[_0xb448('0x3')],'defaultValue':!![]}};
\ No newline at end of file
index a0798da..5982798 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x641a=['data7','access_token','https://login.microsoftonline.com/','/oauth2/token','password','GET','EntityDefinitions?$select=DisplayName,EntitySetName&$filter=SchemaName\x20eq\x20\x27','4.0','value','MetadataId','EntityDefinitions(',')?$select=LogicalName&$expand=Attributes($select=LogicalName)','Attributes','remove','includes','LogicalName','@odata.type','PicklistAttributeMetadata','push','all','forEach','BooleanAttributeMetadata','BigIntAttributeMetadata','IntegerAttributeMetadata','DateTimeAttributeMetadata','statusCode','stack','test','Wrong\x20credentials',')/Attributes(',')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?','$select=DisplayName,LogicalName&$expand=OptionSet($select=Options)','Bearer\x20','Options','Label','DisplayName','UserLocalizedLabel',')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=DisplayName,LogicalName&$expand=OptionSet($select=FalseOption,\x20TrueOption)','OptionSet','TrueOption','false',')/Microsoft.Dynamics.CRM.','request-promise','util','../../components/parsers/qs','../../config/logger','api','../../components/integrations/configuration','status','json','undefined','limit','offset','count','set','update','then','destroy','end','sendStatus','error','name','send','index','map','Dynamics365Account','rawAttributes','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','type','VIRTUAL','options','includeAll','include','rows','catch','merge','body','find','params','findOne','keys','filter','getConfigurations','addConfiguration','AccountId','Subjects','channel','Descriptions','getDescriptions','Dynamics365Configuration','create','Dynamics365Field','slice','substring','lastIndexOf','format','%s/api/data/v9.0/','incident','Incident','PhoneCall','title','description','caseorigincode','phonenumber','directioncode','accountidname','accountidyominame','actualserviceunits','contactidname','contactidyominame','contractidname','createdbyexternalpartyname','createdbyexternalpartyyominame','createdbyname','createdbyyominame','createdon','createdonbehalfbyname','createdonbehalfbyyominame','customeridyominame','entityimage_timestamp','entityimage_url','escalatedon','exchangerate','firstresponsebykpiidname','followupby','kbarticleidname','lastonholdtime','masteridname','modifiedbyexternalpartyyominame','modifiedbyname','modifiedbyyominame','modifiedonbehalfbyname','modifiedonbehalfbyyominame','msdyn_incidenttypename','numberofchildincidents','onholdtime','overriddencreatedon','owneridyominame','primarycontactidname','primarycontactidyominame','prioritycodename','productidname','resolveby','resolvebykpiidname','responseby','responsiblecontactidname','responsiblecontactidyominame','sentimentvalue','slainvokedidname','statecode','statuscode','subjectidname','ticketnumber','timezoneruleversionnumber','transactioncurrencyidname','traversedpath','utcconversiontimezonecode','versionnumber','concat','username','remoteUri','tenantId','clientId','clientSecret','modernAuthentication','CloudProvider','data5'];(function(_0x4324e3,_0x17d826){var _0x114577=function(_0x65c5bb){while(--_0x65c5bb){_0x4324e3['push'](_0x4324e3['shift']());}};_0x114577(++_0x17d826);}(_0x641a,0xde));var _0xa641=function(_0x2d2201,_0x3cfe3d){_0x2d2201=_0x2d2201-0x0;var _0x12e6cd=_0x641a[_0x2d2201];return _0x12e6cd;};'use strict';var rp=require(_0xa641('0x0'));var util=require(_0xa641('0x1'));var _=require('lodash');var qs=require(_0xa641('0x2'));var logger=require(_0xa641('0x3'))(_0xa641('0x4'));var db=require('../../mysqldb')['db'];var integrations=require(_0xa641('0x5'));function respondWithResult(_0x2ae71e,_0x5d98d2){_0x5d98d2=_0x5d98d2||0xc8;return function(_0x23e198){if(_0x23e198){return _0x2ae71e[_0xa641('0x6')](_0x5d98d2)[_0xa641('0x7')](_0x23e198);}};}function respondWithFilteredResult(_0x5f28d0,_0x4355a7){return function(_0x4e1912){if(_0x4e1912){var _0x2dd25a=typeof _0x4355a7['offset']===_0xa641('0x8')&&typeof _0x4355a7[_0xa641('0x9')]==='undefined';var _0x3dc63b=_0x4e1912['count'];var _0x1d0974=_0x2dd25a?0x0:_0x4355a7[_0xa641('0xa')];var _0x38c727=_0x2dd25a?_0x4e1912[_0xa641('0xb')]:_0x4355a7[_0xa641('0xa')]+_0x4355a7[_0xa641('0x9')];var _0x18b507;if(_0x38c727>=_0x3dc63b){_0x38c727=_0x3dc63b;_0x18b507=0xc8;}else{_0x18b507=0xce;}_0x5f28d0[_0xa641('0x6')](_0x18b507);return _0x5f28d0[_0xa641('0xc')]('Content-Range',_0x1d0974+'-'+_0x38c727+'/'+_0x3dc63b)['json'](_0x4e1912);}return null;};}function saveUpdates(_0x2dbf79){return function(_0x382e8b){if(_0x382e8b){return _0x382e8b[_0xa641('0xd')](_0x2dbf79)[_0xa641('0xe')](function(_0x418e74){return _0x418e74;});}return null;};}function removeEntity(_0x13f948){return function(_0x29f55a){if(_0x29f55a){return _0x29f55a[_0xa641('0xf')]()['then'](function(){_0x13f948['status'](0xcc)[_0xa641('0x10')]();});}};}function handleEntityNotFound(_0x5b29d9){return function(_0x472ff5){if(!_0x472ff5){_0x5b29d9[_0xa641('0x11')](0x194);}return _0x472ff5;};}function handleError(_0xee74cd,_0x52be5d){_0x52be5d=_0x52be5d||0x1f4;return function(_0xa343eb){logger[_0xa641('0x12')](_0xa343eb['stack']);if(_0xa343eb[_0xa641('0x13')]){delete _0xa343eb['name'];}_0xee74cd[_0xa641('0x6')](_0x52be5d)[_0xa641('0x14')](_0xa343eb);};}exports[_0xa641('0x15')]=function(_0x43bf3a,_0x1254c7){var _0x2d7172={},_0x2ebbfd={},_0x26babf={'count':0x0,'rows':[]};var _0x24d846=_[_0xa641('0x16')](db[_0xa641('0x17')][_0xa641('0x18')],function(_0xc14786){return{'name':_0xc14786['fieldName'],'type':_0xc14786['type'][_0xa641('0x19')]};});_0x2ebbfd[_0xa641('0x1a')]=_['map'](_0x24d846,'name');_0x2ebbfd[_0xa641('0x1b')]=_['keys'](_0x43bf3a[_0xa641('0x1b')]);_0x2ebbfd[_0xa641('0x1c')]=_[_0xa641('0x1d')](_0x2ebbfd[_0xa641('0x1a')],_0x2ebbfd[_0xa641('0x1b')]);_0x2d7172[_0xa641('0x1e')]=_[_0xa641('0x1d')](_0x2ebbfd[_0xa641('0x1a')],qs[_0xa641('0x1f')](_0x43bf3a['query'][_0xa641('0x1f')]));_0x2d7172[_0xa641('0x1e')]=_0x2d7172[_0xa641('0x1e')][_0xa641('0x20')]?_0x2d7172[_0xa641('0x1e')]:_0x2ebbfd[_0xa641('0x1a')];if(!_0x43bf3a[_0xa641('0x1b')][_0xa641('0x21')](_0xa641('0x22'))){_0x2d7172[_0xa641('0x9')]=qs['limit'](_0x43bf3a[_0xa641('0x1b')][_0xa641('0x9')]);_0x2d7172[_0xa641('0xa')]=qs[_0xa641('0xa')](_0x43bf3a[_0xa641('0x1b')]['offset']);}_0x2d7172[_0xa641('0x23')]=qs[_0xa641('0x24')](_0x43bf3a[_0xa641('0x1b')][_0xa641('0x24')]);_0x2d7172[_0xa641('0x25')]=qs[_0xa641('0x1c')](_[_0xa641('0x26')](_0x43bf3a[_0xa641('0x1b')],_0x2ebbfd[_0xa641('0x1c')]),_0x24d846);if(_0x43bf3a[_0xa641('0x1b')]['filter']){_0x2d7172['where']=_['merge'](_0x2d7172['where'],{'$or':_[_0xa641('0x16')](_0x24d846,function(_0x5d1194){if(_0x5d1194[_0xa641('0x27')]!==_0xa641('0x28')){var _0x6ef65c={};_0x6ef65c[_0x5d1194['name']]={'$like':'%'+_0x43bf3a['query']['filter']+'%'};return _0x6ef65c;}})});}_0x2d7172=_['merge']({},_0x2d7172,_0x43bf3a[_0xa641('0x29')]);var _0x481f7f={'where':_0x2d7172[_0xa641('0x25')]};return db[_0xa641('0x17')][_0xa641('0xb')](_0x481f7f)[_0xa641('0xe')](function(_0x4973a5){_0x26babf['count']=_0x4973a5;if(_0x43bf3a[_0xa641('0x1b')][_0xa641('0x2a')]){_0x2d7172[_0xa641('0x2b')]=[{'all':!![]}];}return db['Dynamics365Account']['findAll'](_0x2d7172);})[_0xa641('0xe')](function(_0xc8c85){_0x26babf[_0xa641('0x2c')]=_0xc8c85;return _0x26babf;})['then'](respondWithFilteredResult(_0x1254c7,_0x2d7172))[_0xa641('0x2d')](handleError(_0x1254c7,null));};exports['show']=function(_0xb3652d,_0x17a5b3){var _0x1a5ce2={'raw':![],'where':{'id':_0xb3652d['params']['id']}},_0x57d128={};_0x57d128['model']=_['keys'](db[_0xa641('0x17')]['rawAttributes']);_0x57d128['query']=_['keys'](_0xb3652d[_0xa641('0x1b')]);_0x57d128[_0xa641('0x1c')]=_['intersection'](_0x57d128[_0xa641('0x1a')],_0x57d128['query']);_0x1a5ce2['attributes']=_[_0xa641('0x1d')](_0x57d128[_0xa641('0x1a')],qs['fields'](_0xb3652d[_0xa641('0x1b')][_0xa641('0x1f')]));_0x1a5ce2['attributes']=_0x1a5ce2[_0xa641('0x1e')][_0xa641('0x20')]?_0x1a5ce2[_0xa641('0x1e')]:_0x57d128['model'];if(_0xb3652d[_0xa641('0x1b')][_0xa641('0x2a')]){_0x1a5ce2['include']=[{'all':!![]}];}_0x1a5ce2=_[_0xa641('0x2e')]({},_0x1a5ce2,_0xb3652d[_0xa641('0x29')]);return db[_0xa641('0x17')]['find'](_0x1a5ce2)[_0xa641('0xe')](handleEntityNotFound(_0x17a5b3,null))['then'](respondWithResult(_0x17a5b3,null))[_0xa641('0x2d')](handleError(_0x17a5b3,null));};exports['create']=function(_0x325b5d,_0x115035){return db['Dynamics365Account']['create'](_0x325b5d[_0xa641('0x2f')],{})[_0xa641('0xe')](respondWithResult(_0x115035,0xc9))['catch'](handleError(_0x115035,null));};exports[_0xa641('0xd')]=function(_0xbb057e,_0x3abc21){if(_0xbb057e[_0xa641('0x2f')]['id']){delete _0xbb057e[_0xa641('0x2f')]['id'];}return db['Dynamics365Account'][_0xa641('0x30')]({'where':{'id':_0xbb057e[_0xa641('0x31')]['id']}})[_0xa641('0xe')](handleEntityNotFound(_0x3abc21,null))[_0xa641('0xe')](saveUpdates(_0xbb057e['body'],null))[_0xa641('0xe')](respondWithResult(_0x3abc21,null))[_0xa641('0x2d')](handleError(_0x3abc21,null));};exports[_0xa641('0xf')]=function(_0x3e69f9,_0x1efd11){return db[_0xa641('0x17')][_0xa641('0x30')]({'where':{'id':_0x3e69f9[_0xa641('0x31')]['id']}})[_0xa641('0xe')](handleEntityNotFound(_0x1efd11,null))['then'](removeEntity(_0x1efd11,null))['catch'](handleError(_0x1efd11,null));};exports['getConfigurations']=function(_0x44b07d,_0x47288d){var _0x41bdc3={};var _0x48155d={};var _0x47337b;var _0x4567f5;return db[_0xa641('0x17')][_0xa641('0x32')]({'where':{'id':_0x44b07d[_0xa641('0x31')]['id']}})[_0xa641('0xe')](handleEntityNotFound(_0x47288d,null))['then'](function(_0x5c71ee){if(_0x5c71ee){_0x47337b=_0x5c71ee;_0x48155d['model']=_[_0xa641('0x33')](db['Dynamics365Configuration'][_0xa641('0x18')]);_0x48155d[_0xa641('0x1b')]=_[_0xa641('0x33')](_0x44b07d[_0xa641('0x1b')]);_0x48155d['filters']=_[_0xa641('0x1d')](_0x48155d['model'],_0x48155d[_0xa641('0x1b')]);_0x41bdc3[_0xa641('0x1e')]=_['intersection'](_0x48155d['model'],qs[_0xa641('0x1f')](_0x44b07d[_0xa641('0x1b')]['fields']));_0x41bdc3[_0xa641('0x1e')]=_0x41bdc3[_0xa641('0x1e')][_0xa641('0x20')]?_0x41bdc3[_0xa641('0x1e')]:_0x48155d[_0xa641('0x1a')];_0x41bdc3['order']=qs[_0xa641('0x24')](_0x44b07d[_0xa641('0x1b')][_0xa641('0x24')]);_0x41bdc3[_0xa641('0x25')]=qs['filters'](_[_0xa641('0x26')](_0x44b07d['query'],_0x48155d[_0xa641('0x1c')]));if(_0x44b07d[_0xa641('0x1b')]['filter']){_0x41bdc3[_0xa641('0x25')]=_[_0xa641('0x2e')](_0x41bdc3['where'],{'$or':_[_0xa641('0x16')](_0x41bdc3['attributes'],function(_0x100d61){var _0x94dffe={};_0x94dffe[_0x100d61]={'$like':'%'+_0x44b07d['query'][_0xa641('0x34')]+'%'};return _0x94dffe;})});}_0x41bdc3=_[_0xa641('0x2e')]({},_0x41bdc3,_0x44b07d['options']);return _0x47337b[_0xa641('0x35')](_0x41bdc3);}})[_0xa641('0xe')](function(_0x4a55b3){if(_0x4a55b3){_0x4567f5=_0x4a55b3[_0xa641('0x20')];if(!_0x44b07d[_0xa641('0x1b')][_0xa641('0x21')](_0xa641('0x22'))){_0x41bdc3['limit']=qs['limit'](_0x44b07d[_0xa641('0x1b')][_0xa641('0x9')]);_0x41bdc3[_0xa641('0xa')]=qs['offset'](_0x44b07d['query']['offset']);}return _0x47337b[_0xa641('0x35')](_0x41bdc3);}})[_0xa641('0xe')](function(_0x32825f){if(_0x32825f){return _0x32825f?{'count':_0x4567f5,'rows':_0x32825f}:null;}})['then'](respondWithResult(_0x47288d,null))[_0xa641('0x2d')](handleError(_0x47288d,null));};exports[_0xa641('0x36')]=function(_0x5773e6,_0x2434e3){if(_0x5773e6[_0xa641('0x2f')]['id']){delete _0x5773e6['body']['id'];}return db[_0xa641('0x17')][_0xa641('0x32')]({'where':{'id':_0x5773e6['params']['id']}})['then'](handleEntityNotFound(_0x2434e3,null))[_0xa641('0xe')](function(_0xa031cd){if(_0xa031cd){_0x5773e6['body'][_0xa641('0x37')]=_0xa031cd['id'];_0x5773e6['body'][_0xa641('0x38')]=integrations['getSubjects'](_0x5773e6['body'][_0xa641('0x39')],_0x5773e6[_0xa641('0x2f')][_0xa641('0x27')]);_0x5773e6[_0xa641('0x2f')][_0xa641('0x3a')]=integrations[_0xa641('0x3b')](_0x5773e6[_0xa641('0x2f')][_0xa641('0x39')],_0x5773e6['body'][_0xa641('0x27')]);return db[_0xa641('0x3c')][_0xa641('0x3d')](_0x5773e6[_0xa641('0x2f')],{'include':[{'model':db[_0xa641('0x3e')],'as':'Subjects'},{'model':db['Dynamics365Field'],'as':_0xa641('0x3a')}]});}return null;})[_0xa641('0xe')](respondWithResult(_0x2434e3,null))[_0xa641('0x2d')](handleError(_0x2434e3,null));};function sanitizeRemoteUri(_0x53b4b9){var _0x44e065=_0x53b4b9[_0xa641('0x3f')](-0x1);if(_0x44e065==='/')return _0x53b4b9[_0xa641('0x40')](0x0,_0x53b4b9[_0xa641('0x41')](_0x44e065));return _0x53b4b9;}function getWebApiUrl(_0x4c0e96){return util[_0xa641('0x42')](_0xa641('0x43'),_0x4c0e96);}exports['getFields']=function(_0x3763dd,_0x2d7962){var _0x150f47=_0x3763dd[_0xa641('0x1b')]['ticketType'];var _0x2545dc=_0x150f47===_0xa641('0x44')?_0xa641('0x45'):_0xa641('0x46');var _0x388b67='';var _0x239023='';var _0x1697b7='';var _0x46e0df='';var _0x169e83='';var _0x4fb2e5='';var _0x545b70='';var _0x15f506='';var _0x225d4a=[_0xa641('0x47'),_0xa641('0x48'),'customerid','ownerid',_0xa641('0x49'),'subject',_0xa641('0x4a'),'regardingobjectid',_0xa641('0x4b'),'phonecall_activity_parties'];var _0x6f6a7f=[_0xa641('0x4c'),_0xa641('0x4d'),_0xa641('0x4e'),'billedserviceunits',_0xa641('0x4f'),_0xa641('0x50'),'contractdetailidname',_0xa641('0x51'),_0xa641('0x52'),_0xa641('0x53'),_0xa641('0x54'),_0xa641('0x55'),_0xa641('0x56'),_0xa641('0x57'),_0xa641('0x58'),'customeridname','customeridtype',_0xa641('0x59'),'emailaddress','entitlementidname',_0xa641('0x5a'),_0xa641('0x5b'),_0xa641('0x5c'),_0xa641('0x5d'),_0xa641('0x5e'),_0xa641('0x5f'),'importsequencenumber','influencescore',_0xa641('0x60'),_0xa641('0x61'),_0xa641('0x62'),'modifiedbyexternalpartyname',_0xa641('0x63'),_0xa641('0x64'),_0xa641('0x65'),'modifiedon',_0xa641('0x66'),_0xa641('0x67'),_0xa641('0x68'),'msdyn_iotalertname',_0xa641('0x69'),_0xa641('0x6a'),_0xa641('0x6b'),'owneridname','owneridtype',_0xa641('0x6c'),'parentcaseidname',_0xa641('0x6d'),_0xa641('0x6e'),_0xa641('0x6f'),_0xa641('0x70'),'productserialnumber',_0xa641('0x71'),_0xa641('0x72'),_0xa641('0x73'),_0xa641('0x74'),_0xa641('0x75'),_0xa641('0x76'),_0xa641('0x77'),'slaname','socialprofileidname',_0xa641('0x78'),_0xa641('0x79'),_0xa641('0x7a'),_0xa641('0x7b'),_0xa641('0x7c'),_0xa641('0x7d'),_0xa641('0x7e'),_0xa641('0x7f'),_0xa641('0x80')];var _0x4f0cdd=_0x225d4a[_0xa641('0x81')](_0x6f6a7f);return db[_0xa641('0x17')][_0xa641('0x32')]({'where':{'id':_0x3763dd['params']['id']},'attributes':['id',_0xa641('0x82'),'password',_0xa641('0x83'),_0xa641('0x84'),_0xa641('0x85'),_0xa641('0x86'),_0xa641('0x87')],'include':[{'model':db[_0xa641('0x88')],'as':_0xa641('0x88'),'attributes':['id',_0xa641('0x89'),_0xa641('0x8a')]}]})[_0xa641('0xe')](handleEntityNotFound(_0x2d7962,null))[_0xa641('0xe')](function(_0x5bc204){if(_0x5bc204){if(_0x5bc204[_0xa641('0x87')]){_0x5bc204[_0xa641('0x8b')]=_0x5bc204[_0xa641('0x88')][_0xa641('0x89')];_0x15f506=sanitizeRemoteUri(_0x5bc204['CloudProvider'][_0xa641('0x8a')]);_0x545b70=getWebApiUrl(_0x15f506);return _0x5bc204;}_0x15f506=sanitizeRemoteUri(_0x5bc204['remoteUri']);_0x545b70=getWebApiUrl(_0x15f506);var _0x50b5e2={'method':'POST','uri':_0xa641('0x8c')+_0x5bc204[_0xa641('0x84')]+_0xa641('0x8d'),'form':{'client_id':_0x5bc204['clientId'],'resource':_0x15f506,'username':_0x5bc204[_0xa641('0x82')],'password':_0x5bc204[_0xa641('0x8e')],'grant_type':'password','client_secret':_0x5bc204[_0xa641('0x86')]},'json':!![]};return rp(_0x50b5e2);}})[_0xa641('0xe')](function(_0x232e71){_0x4fb2e5=_0x232e71[_0xa641('0x8b')];var _0x2d05f5={'method':_0xa641('0x8f'),'uri':encodeURI(_0x545b70+_0xa641('0x90')+_0x2545dc+'\x27'),'headers':{'Authorization':'Bearer\x20'+_0x4fb2e5,'If-None-Match':null,'OData-Version':_0xa641('0x91')},'json':!![]};return rp(_0x2d05f5);})[_0xa641('0xe')](function(_0x4feec2){var _0x49c272=_0x4feec2[_0xa641('0x92')][0x0];var _0x3743ec=_0x49c272[_0xa641('0x93')];var _0x3d558c={'method':_0xa641('0x8f'),'uri':_0x545b70+_0xa641('0x94')+_0x3743ec+_0xa641('0x95'),'headers':{'Authorization':'Bearer\x20'+_0x4fb2e5,'If-None-Match':null,'OData-Version':_0xa641('0x91')},'json':!![]};return rp(_0x3d558c);})[_0xa641('0xe')](function(_0x5c8b9e){_0x388b67=_0x5c8b9e;_0x239023=_0x388b67[_0xa641('0x96')];_0x239023=_[_0xa641('0x97')](_0x239023,function(_0x909a4c){return!_0x4f0cdd[_0xa641('0x98')](_0x909a4c[_0xa641('0x99')]);});var _0x1240d6=[];var _0x36a918=[];_0x239023['forEach'](function(_0x3e07e9){if(_0x3e07e9[_0xa641('0x9a')]){var _0x4431d5=_0x3e07e9[_0xa641('0x9a')][_0xa641('0x40')](_0x3e07e9['@odata.type'][_0xa641('0x41')]('.')+0x1);if(_0x4431d5===_0xa641('0x9b')){_0x1240d6[_0xa641('0x9c')](getSelectList(_0x545b70,_0x150f47,_0x36a918,_0x388b67[_0xa641('0x93')],_0x3e07e9[_0xa641('0x93')],_0x4fb2e5));}}});return Promise[_0xa641('0x9d')](_0x1240d6);})['then'](function(_0x8fdec3){_0x1697b7=_0x8fdec3[0x0];var _0x96a964=[];var _0x220f74=[];_0x239023[_0xa641('0x9e')](function(_0x1bb1e1){if(!_['isNil'](_0x1bb1e1[_0xa641('0x9a')])){var _0x80a665=_0x1bb1e1[_0xa641('0x9a')]['substring'](_0x1bb1e1[_0xa641('0x9a')]['lastIndexOf']('.')+0x1);if(_0x80a665===_0xa641('0x9f')){_0x96a964['push'](getBooleanList(_0x545b70,_0x150f47,_0x220f74,_0x388b67['MetadataId'],_0x1bb1e1['MetadataId'],_0x4fb2e5));}}});return Promise[_0xa641('0x9d')](_0x96a964);})[_0xa641('0xe')](function(_0x5ea587){_0x46e0df=_0x5ea587[0x0];var _0x404a4a=[];var _0x779fb5=[];_0x239023[_0xa641('0x9e')](function(_0x4dc7c9){if(_0x4dc7c9[_0xa641('0x9a')]){var _0x543009=_0x4dc7c9[_0xa641('0x9a')][_0xa641('0x40')](_0x4dc7c9[_0xa641('0x9a')][_0xa641('0x41')]('.')+0x1);if(_0x543009==='StringAttributeMetadata'||_0x543009==='DoubleAttributeMetadata'||_0x543009===_0xa641('0xa0')||_0x543009===_0xa641('0xa1')||_0x543009==='MemoAttributeMetadata'||_0x543009===_0xa641('0xa2')||_0x543009==='StatusAttributeMetadata'||_0x543009==='EntityNameAttributeMetadata'||_0x543009==='StateAttributeMetadata'||_0x543009==='DecimalAttributeMetadata'){_0x404a4a[_0xa641('0x9c')](getInputList(_0x545b70,_0x150f47,_0x543009,_0x779fb5,_0x388b67[_0xa641('0x93')],_0x4dc7c9[_0xa641('0x93')],_0x4fb2e5));}}});return Promise[_0xa641('0x9d')](_0x404a4a);})[_0xa641('0xe')](function(_0x10e814){_0x169e83=_0x10e814[0x0];var _0x3263ea=_0x1697b7[_0xa641('0x81')](_0x46e0df)[_0xa641('0x81')](_0x169e83);var _0x28ffad={'count':_0x3263ea[_0xa641('0x20')],'rows':_0x3263ea};return _0x28ffad;})[_0xa641('0xe')](respondWithResult(_0x2d7962,null))[_0xa641('0x2d')](function(_0x495a77){var _0x1420e7=_0x3763dd[_0xa641('0x1b')]['test']?0x1f4:_0x495a77[_0xa641('0xa3')]||0x1f4;logger[_0xa641('0x12')](_0x495a77[_0xa641('0xa4')]);delete _0x495a77['name'];if(_0x1420e7===0x191){_0x1420e7=0x190;}_0x2d7962['status'](_0x1420e7)[_0xa641('0x14')](_0x3763dd[_0xa641('0x1b')][_0xa641('0xa5')]?{'message':_0xa641('0xa6'),'statusCode':_0x495a77['statusCode']}:_0x495a77);});};function getSelectList(_0x1d2c3b,_0x18fcf5,_0x6aa2d1,_0x18308c,_0x34fa26,_0x39ff79){var _0xe72d08={'method':'GET','uri':_0x1d2c3b+_0xa641('0x94')+_0x18308c+_0xa641('0xa7')+_0x34fa26+_0xa641('0xa8')+_0xa641('0xa9'),'headers':{'Authorization':_0xa641('0xaa')+_0x39ff79,'If-None-Match':null,'OData-Version':_0xa641('0x91')},'json':!![]};return rp(_0xe72d08)['then'](function(_0x28ae96){var _0x465cbb=[];var _0x23fd57=_0x28ae96['OptionSet'][_0xa641('0xab')];_0x23fd57[_0xa641('0x9e')](function(_0xab00f9){_0x465cbb['push']({'name':_0xab00f9[_0xa641('0xac')]['UserLocalizedLabel']['Label'],'value':String(_0xab00f9['Value'])});});var _0x486e68={'id':_0x18fcf5+'_'+_0x28ae96[_0xa641('0x99')],'name':_0x28ae96[_0xa641('0xad')][_0xa641('0xae')][_0xa641('0xac')],'custom':![],'options':_0x465cbb};_0x6aa2d1[_0xa641('0x9c')](_0x486e68);return _0x6aa2d1;});}function getBooleanList(_0x133e51,_0x2b4bf8,_0x2696aa,_0x1607b1,_0x582f1b,_0x473454){var _0x212548={'method':_0xa641('0x8f'),'uri':_0x133e51+_0xa641('0x94')+_0x1607b1+_0xa641('0xa7')+_0x582f1b+_0xa641('0xaf'),'headers':{'Authorization':_0xa641('0xaa')+_0x473454,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x212548)[_0xa641('0xe')](function(_0x4b1077){var _0x37a8a1=[];_0x37a8a1[_0xa641('0x9c')]({'name':_0x4b1077[_0xa641('0xb0')][_0xa641('0xb1')]['Label'][_0xa641('0xae')][_0xa641('0xac')],'value':'true'},{'name':_0x4b1077[_0xa641('0xb0')]['FalseOption']['Label']['UserLocalizedLabel']['Label'],'value':_0xa641('0xb2')});var _0x3ebcc0={'id':_0x2b4bf8+'_'+_0x4b1077[_0xa641('0x99')],'name':_0x4b1077[_0xa641('0xad')][_0xa641('0xae')][_0xa641('0xac')],'custom':![],'options':_0x37a8a1};_0x2696aa['push'](_0x3ebcc0);return _0x2696aa;});}function getInputList(_0x1d68d4,_0x56fd05,_0x4610cb,_0x4ca409,_0x217ca8,_0x5d19f1,_0x4d1feb){var _0x33110f={'method':_0xa641('0x8f'),'uri':_0x1d68d4+'EntityDefinitions('+_0x217ca8+_0xa641('0xa7')+_0x5d19f1+_0xa641('0xb3')+_0x4610cb+'?$select=DisplayName,LogicalName','headers':{'Authorization':_0xa641('0xaa')+_0x4d1feb,'If-None-Match':null,'OData-Version':_0xa641('0x91')},'json':!![]};return rp(_0x33110f)[_0xa641('0xe')](function(_0x2f4281){var _0x180e2e={'id':_0x56fd05+'_'+_0x2f4281[_0xa641('0x99')],'name':_0x2f4281[_0xa641('0xad')]['UserLocalizedLabel']?_0x2f4281[_0xa641('0xad')][_0xa641('0xae')]['Label']:_0x2f4281['LogicalName'],'custom':![],'options':[]};_0x4ca409[_0xa641('0x9c')](_0x180e2e);return _0x4ca409;});}
\ No newline at end of file
+var _0x95e6=['contactidname','contactidyominame','contractdetailidname','contractidname','createdbyname','createdbyyominame','createdon','createdonbehalfbyyominame','customeridtype','emailaddress','entityimage_url','escalatedon','exchangerate','firstresponsebykpiidname','followupby','importsequencenumber','influencescore','lastonholdtime','modifiedbyexternalpartyname','modifiedbyexternalpartyyominame','modifiedbyname','modifiedon','modifiedonbehalfbyname','modifiedonbehalfbyyominame','msdyn_incidenttypename','msdyn_iotalertname','numberofchildincidents','onholdtime','overriddencreatedon','owneridtype','owneridyominame','parentcaseidname','primarycontactidyominame','productserialnumber','resolveby','responseby','responsiblecontactidname','responsiblecontactidyominame','slainvokedidname','socialprofileidname','statecode','statuscode','subjectidname','ticketnumber','traversedpath','utcconversiontimezonecode','versionnumber','concat','username','password','remoteUri','clientId','modernAuthentication','CloudProvider','data5','data7','POST','https://login.microsoftonline.com/','tenantId','clientSecret','Bearer\x20','value','MetadataId','GET','EntityDefinitions(',')?$select=LogicalName&$expand=Attributes($select=LogicalName)','Attributes','remove','includes','LogicalName','@odata.type','lastIndexOf','PicklistAttributeMetadata','push','forEach','isNil','BooleanAttributeMetadata','all','StringAttributeMetadata','DoubleAttributeMetadata','BigIntAttributeMetadata','IntegerAttributeMetadata','MemoAttributeMetadata','DateTimeAttributeMetadata','StatusAttributeMetadata','EntityNameAttributeMetadata','StateAttributeMetadata','DecimalAttributeMetadata','test','statusCode','stack','send','Wrong\x20credentials',')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?','$select=DisplayName,LogicalName&$expand=OptionSet($select=Options)','4.0','OptionSet','Options','Label','UserLocalizedLabel','DisplayName',')/Attributes(',')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=DisplayName,LogicalName&$expand=OptionSet($select=FalseOption,\x20TrueOption)','TrueOption','true','FalseOption','false',')/Microsoft.Dynamics.CRM.','?$select=DisplayName,LogicalName','../../config/logger','api','../../mysqldb','../../components/integrations/configuration','json','offset','limit','undefined','count','status','set','update','then','destroy','end','sendStatus','error','index','map','Dynamics365Account','rawAttributes','model','name','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','filter','merge','where','type','VIRTUAL','includeAll','include','rows','catch','options','find','create','body','params','findOne','Dynamics365Configuration','pick','getConfigurations','hasOwnProperty','addConfiguration','getSubjects','channel','getDescriptions','Dynamics365Field','Descriptions','substring','format','%s/api/data/v9.0/','getFields','ticketType','incident','Incident','PhoneCall','title','description','ownerid','caseorigincode','subject','phonenumber','regardingobjectid','directioncode','accountidname','accountidyominame','billedserviceunits'];(function(_0x11005e,_0x20c3d2){var _0x29338f=function(_0x3384e9){while(--_0x3384e9){_0x11005e['push'](_0x11005e['shift']());}};_0x29338f(++_0x20c3d2);}(_0x95e6,0x6d));var _0x695e=function(_0x4ef724,_0x2eaa8f){_0x4ef724=_0x4ef724-0x0;var _0x16b426=_0x95e6[_0x4ef724];return _0x16b426;};'use strict';var rp=require('request-promise');var util=require('util');var _=require('lodash');var qs=require('../../components/parsers/qs');var logger=require(_0x695e('0x0'))(_0x695e('0x1'));var db=require(_0x695e('0x2'))['db'];var integrations=require(_0x695e('0x3'));function respondWithResult(_0x421102,_0x58d519){_0x58d519=_0x58d519||0xc8;return function(_0x7f878c){if(_0x7f878c){return _0x421102['status'](_0x58d519)[_0x695e('0x4')](_0x7f878c);}};}function respondWithFilteredResult(_0x4d6231,_0x2f09c3){return function(_0x12eb7b){if(_0x12eb7b){var _0x58e3d6=typeof _0x2f09c3[_0x695e('0x5')]==='undefined'&&typeof _0x2f09c3[_0x695e('0x6')]===_0x695e('0x7');var _0x3070d3=_0x12eb7b[_0x695e('0x8')];var _0x52b718=_0x58e3d6?0x0:_0x2f09c3[_0x695e('0x5')];var _0x583cb5=_0x58e3d6?_0x12eb7b[_0x695e('0x8')]:_0x2f09c3[_0x695e('0x5')]+_0x2f09c3[_0x695e('0x6')];var _0x11db70;if(_0x583cb5>=_0x3070d3){_0x583cb5=_0x3070d3;_0x11db70=0xc8;}else{_0x11db70=0xce;}_0x4d6231[_0x695e('0x9')](_0x11db70);return _0x4d6231[_0x695e('0xa')]('Content-Range',_0x52b718+'-'+_0x583cb5+'/'+_0x3070d3)[_0x695e('0x4')](_0x12eb7b);}return null;};}function saveUpdates(_0x396078){return function(_0x3734be){if(_0x3734be){return _0x3734be[_0x695e('0xb')](_0x396078)[_0x695e('0xc')](function(_0x4d6f19){return _0x4d6f19;});}return null;};}function removeEntity(_0x2e594a){return function(_0x4f7ee7){if(_0x4f7ee7){return _0x4f7ee7[_0x695e('0xd')]()[_0x695e('0xc')](function(){_0x2e594a[_0x695e('0x9')](0xcc)[_0x695e('0xe')]();});}};}function handleEntityNotFound(_0x3d5525){return function(_0x28d2b4){if(!_0x28d2b4){_0x3d5525[_0x695e('0xf')](0x194);}return _0x28d2b4;};}function handleError(_0x3bed77,_0x165a9f){_0x165a9f=_0x165a9f||0x1f4;return function(_0x545fb6){logger[_0x695e('0x10')](_0x545fb6['stack']);if(_0x545fb6['name']){delete _0x545fb6['name'];}_0x3bed77[_0x695e('0x9')](_0x165a9f)['send'](_0x545fb6);};}exports[_0x695e('0x11')]=function(_0x3828c1,_0x3e2efb){var _0x150153={},_0x1fbb96={},_0xbd571b={'count':0x0,'rows':[]};var _0x3dbf85=_[_0x695e('0x12')](db[_0x695e('0x13')][_0x695e('0x14')],function(_0x4ba129){return{'name':_0x4ba129['fieldName'],'type':_0x4ba129['type']['key']};});_0x1fbb96[_0x695e('0x15')]=_[_0x695e('0x12')](_0x3dbf85,_0x695e('0x16'));_0x1fbb96[_0x695e('0x17')]=_[_0x695e('0x18')](_0x3828c1[_0x695e('0x17')]);_0x1fbb96[_0x695e('0x19')]=_[_0x695e('0x1a')](_0x1fbb96[_0x695e('0x15')],_0x1fbb96[_0x695e('0x17')]);_0x150153[_0x695e('0x1b')]=_['intersection'](_0x1fbb96[_0x695e('0x15')],qs[_0x695e('0x1c')](_0x3828c1['query']['fields']));_0x150153[_0x695e('0x1b')]=_0x150153[_0x695e('0x1b')][_0x695e('0x1d')]?_0x150153[_0x695e('0x1b')]:_0x1fbb96[_0x695e('0x15')];if(!_0x3828c1[_0x695e('0x17')]['hasOwnProperty'](_0x695e('0x1e'))){_0x150153[_0x695e('0x6')]=qs[_0x695e('0x6')](_0x3828c1[_0x695e('0x17')][_0x695e('0x6')]);_0x150153[_0x695e('0x5')]=qs[_0x695e('0x5')](_0x3828c1[_0x695e('0x17')][_0x695e('0x5')]);}_0x150153[_0x695e('0x1f')]=qs[_0x695e('0x20')](_0x3828c1[_0x695e('0x17')][_0x695e('0x20')]);_0x150153['where']=qs[_0x695e('0x19')](_['pick'](_0x3828c1['query'],_0x1fbb96[_0x695e('0x19')]),_0x3dbf85);if(_0x3828c1['query'][_0x695e('0x21')]){_0x150153['where']=_[_0x695e('0x22')](_0x150153[_0x695e('0x23')],{'$or':_[_0x695e('0x12')](_0x3dbf85,function(_0x2ee377){if(_0x2ee377[_0x695e('0x24')]!==_0x695e('0x25')){var _0xea27a3={};_0xea27a3[_0x2ee377['name']]={'$like':'%'+_0x3828c1[_0x695e('0x17')]['filter']+'%'};return _0xea27a3;}})});}_0x150153=_[_0x695e('0x22')]({},_0x150153,_0x3828c1['options']);var _0x44a8b0={'where':_0x150153[_0x695e('0x23')]};return db[_0x695e('0x13')]['count'](_0x44a8b0)[_0x695e('0xc')](function(_0x2a95d9){_0xbd571b['count']=_0x2a95d9;if(_0x3828c1[_0x695e('0x17')][_0x695e('0x26')]){_0x150153[_0x695e('0x27')]=[{'all':!![]}];}return db[_0x695e('0x13')]['findAll'](_0x150153);})[_0x695e('0xc')](function(_0x130b30){_0xbd571b[_0x695e('0x28')]=_0x130b30;return _0xbd571b;})[_0x695e('0xc')](respondWithFilteredResult(_0x3e2efb,_0x150153))[_0x695e('0x29')](handleError(_0x3e2efb,null));};exports['show']=function(_0x472f55,_0xda4393){var _0x2daf85={'raw':![],'where':{'id':_0x472f55['params']['id']}},_0x5d7dab={};_0x5d7dab[_0x695e('0x15')]=_[_0x695e('0x18')](db[_0x695e('0x13')][_0x695e('0x14')]);_0x5d7dab[_0x695e('0x17')]=_[_0x695e('0x18')](_0x472f55[_0x695e('0x17')]);_0x5d7dab[_0x695e('0x19')]=_[_0x695e('0x1a')](_0x5d7dab[_0x695e('0x15')],_0x5d7dab['query']);_0x2daf85['attributes']=_[_0x695e('0x1a')](_0x5d7dab[_0x695e('0x15')],qs['fields'](_0x472f55[_0x695e('0x17')]['fields']));_0x2daf85[_0x695e('0x1b')]=_0x2daf85[_0x695e('0x1b')][_0x695e('0x1d')]?_0x2daf85['attributes']:_0x5d7dab[_0x695e('0x15')];if(_0x472f55['query']['includeAll']){_0x2daf85['include']=[{'all':!![]}];}_0x2daf85=_['merge']({},_0x2daf85,_0x472f55[_0x695e('0x2a')]);return db['Dynamics365Account'][_0x695e('0x2b')](_0x2daf85)[_0x695e('0xc')](handleEntityNotFound(_0xda4393,null))[_0x695e('0xc')](respondWithResult(_0xda4393,null))['catch'](handleError(_0xda4393,null));};exports[_0x695e('0x2c')]=function(_0x230b21,_0x45540f){return db['Dynamics365Account'][_0x695e('0x2c')](_0x230b21[_0x695e('0x2d')],{})[_0x695e('0xc')](respondWithResult(_0x45540f,0xc9))['catch'](handleError(_0x45540f,null));};exports[_0x695e('0xb')]=function(_0x405532,_0x2a05b2){if(_0x405532['body']['id']){delete _0x405532[_0x695e('0x2d')]['id'];}return db[_0x695e('0x13')][_0x695e('0x2b')]({'where':{'id':_0x405532[_0x695e('0x2e')]['id']}})[_0x695e('0xc')](handleEntityNotFound(_0x2a05b2,null))['then'](saveUpdates(_0x405532[_0x695e('0x2d')],null))['then'](respondWithResult(_0x2a05b2,null))[_0x695e('0x29')](handleError(_0x2a05b2,null));};exports[_0x695e('0xd')]=function(_0x29e32e,_0x162909){return db[_0x695e('0x13')][_0x695e('0x2b')]({'where':{'id':_0x29e32e[_0x695e('0x2e')]['id']}})[_0x695e('0xc')](handleEntityNotFound(_0x162909,null))[_0x695e('0xc')](removeEntity(_0x162909,null))[_0x695e('0x29')](handleError(_0x162909,null));};exports['getConfigurations']=function(_0x33935c,_0x420687){var _0x42f46c={};var _0x55e531={};var _0x154ab1;var _0x248cb4;return db['Dynamics365Account'][_0x695e('0x2f')]({'where':{'id':_0x33935c[_0x695e('0x2e')]['id']}})[_0x695e('0xc')](handleEntityNotFound(_0x420687,null))[_0x695e('0xc')](function(_0x5b1108){if(_0x5b1108){_0x154ab1=_0x5b1108;_0x55e531[_0x695e('0x15')]=_[_0x695e('0x18')](db[_0x695e('0x30')]['rawAttributes']);_0x55e531[_0x695e('0x17')]=_[_0x695e('0x18')](_0x33935c[_0x695e('0x17')]);_0x55e531[_0x695e('0x19')]=_[_0x695e('0x1a')](_0x55e531[_0x695e('0x15')],_0x55e531['query']);_0x42f46c[_0x695e('0x1b')]=_['intersection'](_0x55e531['model'],qs[_0x695e('0x1c')](_0x33935c[_0x695e('0x17')]['fields']));_0x42f46c[_0x695e('0x1b')]=_0x42f46c['attributes'][_0x695e('0x1d')]?_0x42f46c[_0x695e('0x1b')]:_0x55e531[_0x695e('0x15')];_0x42f46c['order']=qs['sort'](_0x33935c[_0x695e('0x17')]['sort']);_0x42f46c[_0x695e('0x23')]=qs[_0x695e('0x19')](_[_0x695e('0x31')](_0x33935c['query'],_0x55e531[_0x695e('0x19')]));if(_0x33935c[_0x695e('0x17')][_0x695e('0x21')]){_0x42f46c[_0x695e('0x23')]=_[_0x695e('0x22')](_0x42f46c[_0x695e('0x23')],{'$or':_[_0x695e('0x12')](_0x42f46c[_0x695e('0x1b')],function(_0x383224){var _0x117aa4={};_0x117aa4[_0x383224]={'$like':'%'+_0x33935c[_0x695e('0x17')]['filter']+'%'};return _0x117aa4;})});}_0x42f46c=_['merge']({},_0x42f46c,_0x33935c[_0x695e('0x2a')]);return _0x154ab1[_0x695e('0x32')](_0x42f46c);}})[_0x695e('0xc')](function(_0x2de025){if(_0x2de025){_0x248cb4=_0x2de025[_0x695e('0x1d')];if(!_0x33935c['query'][_0x695e('0x33')]('nolimit')){_0x42f46c['limit']=qs[_0x695e('0x6')](_0x33935c[_0x695e('0x17')][_0x695e('0x6')]);_0x42f46c[_0x695e('0x5')]=qs['offset'](_0x33935c[_0x695e('0x17')][_0x695e('0x5')]);}return _0x154ab1[_0x695e('0x32')](_0x42f46c);}})[_0x695e('0xc')](function(_0x10a54f){if(_0x10a54f){return _0x10a54f?{'count':_0x248cb4,'rows':_0x10a54f}:null;}})[_0x695e('0xc')](respondWithResult(_0x420687,null))[_0x695e('0x29')](handleError(_0x420687,null));};exports[_0x695e('0x34')]=function(_0x3f5356,_0x454bdf){if(_0x3f5356[_0x695e('0x2d')]['id']){delete _0x3f5356[_0x695e('0x2d')]['id'];}return db[_0x695e('0x13')][_0x695e('0x2f')]({'where':{'id':_0x3f5356[_0x695e('0x2e')]['id']}})[_0x695e('0xc')](handleEntityNotFound(_0x454bdf,null))[_0x695e('0xc')](function(_0x41451b){if(_0x41451b){_0x3f5356['body']['AccountId']=_0x41451b['id'];_0x3f5356[_0x695e('0x2d')]['Subjects']=integrations[_0x695e('0x35')](_0x3f5356[_0x695e('0x2d')][_0x695e('0x36')],_0x3f5356[_0x695e('0x2d')][_0x695e('0x24')]);_0x3f5356[_0x695e('0x2d')]['Descriptions']=integrations[_0x695e('0x37')](_0x3f5356[_0x695e('0x2d')][_0x695e('0x36')],_0x3f5356[_0x695e('0x2d')][_0x695e('0x24')]);return db[_0x695e('0x30')][_0x695e('0x2c')](_0x3f5356[_0x695e('0x2d')],{'include':[{'model':db['Dynamics365Field'],'as':'Subjects'},{'model':db[_0x695e('0x38')],'as':_0x695e('0x39')}]});}return null;})['then'](respondWithResult(_0x454bdf,null))[_0x695e('0x29')](handleError(_0x454bdf,null));};function sanitizeRemoteUri(_0x3f8a3f){var _0x4af276=_0x3f8a3f['slice'](-0x1);if(_0x4af276==='/')return _0x3f8a3f[_0x695e('0x3a')](0x0,_0x3f8a3f['lastIndexOf'](_0x4af276));return _0x3f8a3f;}function getWebApiUrl(_0xcadb46){return util[_0x695e('0x3b')](_0x695e('0x3c'),_0xcadb46);}exports[_0x695e('0x3d')]=function(_0x8897bf,_0x5d8379){var _0x24b53e=_0x8897bf[_0x695e('0x17')][_0x695e('0x3e')];var _0x3d178c=_0x24b53e===_0x695e('0x3f')?_0x695e('0x40'):_0x695e('0x41');var _0x4f8255='';var _0x13d11d='';var _0x5c4fff='';var _0x25f52c='';var _0x2d62ca='';var _0x5eac6a='';var _0x72f53e='';var _0x55e8f6='';var _0x2c266f=[_0x695e('0x42'),_0x695e('0x43'),'customerid',_0x695e('0x44'),_0x695e('0x45'),_0x695e('0x46'),_0x695e('0x47'),_0x695e('0x48'),_0x695e('0x49'),'phonecall_activity_parties'];var _0x361ff0=[_0x695e('0x4a'),_0x695e('0x4b'),'actualserviceunits',_0x695e('0x4c'),_0x695e('0x4d'),_0x695e('0x4e'),_0x695e('0x4f'),_0x695e('0x50'),'createdbyexternalpartyname','createdbyexternalpartyyominame',_0x695e('0x51'),_0x695e('0x52'),_0x695e('0x53'),'createdonbehalfbyname',_0x695e('0x54'),'customeridname',_0x695e('0x55'),'customeridyominame',_0x695e('0x56'),'entitlementidname','entityimage_timestamp',_0x695e('0x57'),_0x695e('0x58'),_0x695e('0x59'),_0x695e('0x5a'),_0x695e('0x5b'),_0x695e('0x5c'),_0x695e('0x5d'),'kbarticleidname',_0x695e('0x5e'),'masteridname',_0x695e('0x5f'),_0x695e('0x60'),_0x695e('0x61'),'modifiedbyyominame',_0x695e('0x62'),_0x695e('0x63'),_0x695e('0x64'),_0x695e('0x65'),_0x695e('0x66'),_0x695e('0x67'),_0x695e('0x68'),_0x695e('0x69'),'owneridname',_0x695e('0x6a'),_0x695e('0x6b'),_0x695e('0x6c'),'primarycontactidname',_0x695e('0x6d'),'prioritycodename','productidname',_0x695e('0x6e'),_0x695e('0x6f'),'resolvebykpiidname',_0x695e('0x70'),_0x695e('0x71'),_0x695e('0x72'),'sentimentvalue',_0x695e('0x73'),'slaname',_0x695e('0x74'),_0x695e('0x75'),_0x695e('0x76'),_0x695e('0x77'),_0x695e('0x78'),'timezoneruleversionnumber','transactioncurrencyidname',_0x695e('0x79'),_0x695e('0x7a'),_0x695e('0x7b')];var _0x2b0b91=_0x2c266f[_0x695e('0x7c')](_0x361ff0);return db[_0x695e('0x13')]['findOne']({'where':{'id':_0x8897bf[_0x695e('0x2e')]['id']},'attributes':['id',_0x695e('0x7d'),_0x695e('0x7e'),_0x695e('0x7f'),'tenantId',_0x695e('0x80'),'clientSecret',_0x695e('0x81')],'include':[{'model':db['CloudProvider'],'as':_0x695e('0x82'),'attributes':['id',_0x695e('0x83'),_0x695e('0x84')]}]})[_0x695e('0xc')](handleEntityNotFound(_0x5d8379,null))[_0x695e('0xc')](function(_0x85b4fe){if(_0x85b4fe){if(_0x85b4fe[_0x695e('0x81')]){_0x85b4fe['access_token']=_0x85b4fe[_0x695e('0x82')][_0x695e('0x83')];_0x55e8f6=sanitizeRemoteUri(_0x85b4fe[_0x695e('0x82')][_0x695e('0x84')]);_0x72f53e=getWebApiUrl(_0x55e8f6);return _0x85b4fe;}_0x55e8f6=sanitizeRemoteUri(_0x85b4fe[_0x695e('0x7f')]);_0x72f53e=getWebApiUrl(_0x55e8f6);var _0x3d0b05={'method':_0x695e('0x85'),'uri':_0x695e('0x86')+_0x85b4fe[_0x695e('0x87')]+'/oauth2/token','form':{'client_id':_0x85b4fe['clientId'],'resource':_0x55e8f6,'username':_0x85b4fe[_0x695e('0x7d')],'password':_0x85b4fe['password'],'grant_type':_0x695e('0x7e'),'client_secret':_0x85b4fe[_0x695e('0x88')]},'json':!![]};return rp(_0x3d0b05);}})[_0x695e('0xc')](function(_0x1c8cb5){_0x5eac6a=_0x1c8cb5['access_token'];var _0x4f7959={'method':'GET','uri':encodeURI(_0x72f53e+'EntityDefinitions?$select=DisplayName,EntitySetName&$filter=SchemaName\x20eq\x20\x27'+_0x3d178c+'\x27'),'headers':{'Authorization':_0x695e('0x89')+_0x5eac6a,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x4f7959);})[_0x695e('0xc')](function(_0x518177){var _0x4289b3=_0x518177[_0x695e('0x8a')][0x0];var _0x303367=_0x4289b3[_0x695e('0x8b')];var _0xc8c4ea={'method':_0x695e('0x8c'),'uri':_0x72f53e+_0x695e('0x8d')+_0x303367+_0x695e('0x8e'),'headers':{'Authorization':_0x695e('0x89')+_0x5eac6a,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0xc8c4ea);})['then'](function(_0x496960){_0x4f8255=_0x496960;_0x13d11d=_0x4f8255[_0x695e('0x8f')];_0x13d11d=_[_0x695e('0x90')](_0x13d11d,function(_0x374e07){return!_0x2b0b91[_0x695e('0x91')](_0x374e07[_0x695e('0x92')]);});var _0x586bc9=[];var _0x1ec7bc=[];_0x13d11d['forEach'](function(_0x14f8f5){if(_0x14f8f5[_0x695e('0x93')]){var _0x433015=_0x14f8f5[_0x695e('0x93')]['substring'](_0x14f8f5[_0x695e('0x93')][_0x695e('0x94')]('.')+0x1);if(_0x433015===_0x695e('0x95')){_0x586bc9[_0x695e('0x96')](getSelectList(_0x72f53e,_0x24b53e,_0x1ec7bc,_0x4f8255[_0x695e('0x8b')],_0x14f8f5[_0x695e('0x8b')],_0x5eac6a));}}});return Promise['all'](_0x586bc9);})[_0x695e('0xc')](function(_0x2b3ccb){_0x5c4fff=_0x2b3ccb[0x0];var _0x3420ae=[];var _0x5dad0d=[];_0x13d11d[_0x695e('0x97')](function(_0x552176){if(!_[_0x695e('0x98')](_0x552176['@odata.type'])){var _0x14fd3e=_0x552176[_0x695e('0x93')]['substring'](_0x552176[_0x695e('0x93')]['lastIndexOf']('.')+0x1);if(_0x14fd3e===_0x695e('0x99')){_0x3420ae['push'](getBooleanList(_0x72f53e,_0x24b53e,_0x5dad0d,_0x4f8255['MetadataId'],_0x552176['MetadataId'],_0x5eac6a));}}});return Promise[_0x695e('0x9a')](_0x3420ae);})[_0x695e('0xc')](function(_0x554036){_0x25f52c=_0x554036[0x0];var _0x574fb3=[];var _0x18876c=[];_0x13d11d[_0x695e('0x97')](function(_0x4bfde6){if(_0x4bfde6['@odata.type']){var _0xdf38f3=_0x4bfde6[_0x695e('0x93')][_0x695e('0x3a')](_0x4bfde6[_0x695e('0x93')]['lastIndexOf']('.')+0x1);if(_0xdf38f3===_0x695e('0x9b')||_0xdf38f3===_0x695e('0x9c')||_0xdf38f3===_0x695e('0x9d')||_0xdf38f3===_0x695e('0x9e')||_0xdf38f3===_0x695e('0x9f')||_0xdf38f3===_0x695e('0xa0')||_0xdf38f3===_0x695e('0xa1')||_0xdf38f3===_0x695e('0xa2')||_0xdf38f3===_0x695e('0xa3')||_0xdf38f3===_0x695e('0xa4')){_0x574fb3[_0x695e('0x96')](getInputList(_0x72f53e,_0x24b53e,_0xdf38f3,_0x18876c,_0x4f8255['MetadataId'],_0x4bfde6[_0x695e('0x8b')],_0x5eac6a));}}});return Promise['all'](_0x574fb3);})[_0x695e('0xc')](function(_0x3da0d5){_0x2d62ca=_0x3da0d5[0x0];var _0x51d399=_0x5c4fff[_0x695e('0x7c')](_0x25f52c)[_0x695e('0x7c')](_0x2d62ca);var _0x1d55a5={'count':_0x51d399['length'],'rows':_0x51d399};return _0x1d55a5;})[_0x695e('0xc')](respondWithResult(_0x5d8379,null))[_0x695e('0x29')](function(_0x771358){var _0x122789=_0x8897bf[_0x695e('0x17')][_0x695e('0xa5')]?0x1f4:_0x771358[_0x695e('0xa6')]||0x1f4;logger[_0x695e('0x10')](_0x771358[_0x695e('0xa7')]);delete _0x771358['name'];if(_0x122789===0x191){_0x122789=0x190;}_0x5d8379[_0x695e('0x9')](_0x122789)[_0x695e('0xa8')](_0x8897bf['query'][_0x695e('0xa5')]?{'message':_0x695e('0xa9'),'statusCode':_0x771358[_0x695e('0xa6')]}:_0x771358);});};function getSelectList(_0x3c52ba,_0xa0b9a2,_0x44ae10,_0x1feb39,_0x4ae697,_0x2b82c0){var _0x4e1f4a={'method':_0x695e('0x8c'),'uri':_0x3c52ba+_0x695e('0x8d')+_0x1feb39+')/Attributes('+_0x4ae697+_0x695e('0xaa')+_0x695e('0xab'),'headers':{'Authorization':'Bearer\x20'+_0x2b82c0,'If-None-Match':null,'OData-Version':_0x695e('0xac')},'json':!![]};return rp(_0x4e1f4a)[_0x695e('0xc')](function(_0xd08c9a){var _0x5932e4=[];var _0x55fb0a=_0xd08c9a[_0x695e('0xad')][_0x695e('0xae')];_0x55fb0a['forEach'](function(_0x562680){_0x5932e4[_0x695e('0x96')]({'name':_0x562680[_0x695e('0xaf')][_0x695e('0xb0')][_0x695e('0xaf')],'value':String(_0x562680['Value'])});});var _0x4f06ad={'id':_0xa0b9a2+'_'+_0xd08c9a['LogicalName'],'name':_0xd08c9a[_0x695e('0xb1')][_0x695e('0xb0')][_0x695e('0xaf')],'custom':![],'options':_0x5932e4};_0x44ae10[_0x695e('0x96')](_0x4f06ad);return _0x44ae10;});}function getBooleanList(_0x11e043,_0x41b605,_0x1cc461,_0x298d3b,_0xe146b5,_0xd14c8c){var _0x56a88f={'method':_0x695e('0x8c'),'uri':_0x11e043+_0x695e('0x8d')+_0x298d3b+_0x695e('0xb2')+_0xe146b5+_0x695e('0xb3'),'headers':{'Authorization':'Bearer\x20'+_0xd14c8c,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x56a88f)[_0x695e('0xc')](function(_0x25342e){var _0x3a3700=[];_0x3a3700[_0x695e('0x96')]({'name':_0x25342e[_0x695e('0xad')][_0x695e('0xb4')][_0x695e('0xaf')]['UserLocalizedLabel'][_0x695e('0xaf')],'value':_0x695e('0xb5')},{'name':_0x25342e[_0x695e('0xad')][_0x695e('0xb6')][_0x695e('0xaf')][_0x695e('0xb0')]['Label'],'value':_0x695e('0xb7')});var _0x13868b={'id':_0x41b605+'_'+_0x25342e[_0x695e('0x92')],'name':_0x25342e[_0x695e('0xb1')]['UserLocalizedLabel'][_0x695e('0xaf')],'custom':![],'options':_0x3a3700};_0x1cc461[_0x695e('0x96')](_0x13868b);return _0x1cc461;});}function getInputList(_0x16e8b6,_0x5a6dd2,_0x1e2161,_0xc7f5d4,_0x39f2f6,_0x14a2fc,_0x2c2d91){var _0x591aba={'method':_0x695e('0x8c'),'uri':_0x16e8b6+_0x695e('0x8d')+_0x39f2f6+_0x695e('0xb2')+_0x14a2fc+_0x695e('0xb8')+_0x1e2161+_0x695e('0xb9'),'headers':{'Authorization':_0x695e('0x89')+_0x2c2d91,'If-None-Match':null,'OData-Version':_0x695e('0xac')},'json':!![]};return rp(_0x591aba)[_0x695e('0xc')](function(_0x940270){var _0x50472a={'id':_0x5a6dd2+'_'+_0x940270['LogicalName'],'name':_0x940270[_0x695e('0xb1')][_0x695e('0xb0')]?_0x940270['DisplayName']['UserLocalizedLabel'][_0x695e('0xaf')]:_0x940270['LogicalName'],'custom':![],'options':[]};_0xc7f5d4['push'](_0x50472a);return _0xc7f5d4;});}
\ No newline at end of file
index c683b3d..6c28d77 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaf0=['../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./intDynamics365Account.attributes','../../components/integrations/configuration','exports','define','Dynamics365Account','util'];(function(_0x4fd9ca,_0x12887f){var _0x208f49=function(_0x32b40c){while(--_0x32b40c){_0x4fd9ca['push'](_0x4fd9ca['shift']());}};_0x208f49(++_0x12887f);}(_0xbaf0,0x12a));var _0x0baf=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0xbaf0[_0x4cf98e];return _0x1623ac;};'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'));var integrations=require(_0x0baf('0x9'));module[_0x0baf('0xa')]=function(_0x335e24,_0x1a10b1){return _0x335e24[_0x0baf('0xb')](_0x0baf('0xc'),attributes,{'tableName':'int_dynamics365_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb7e7=['int_dynamics365_accounts','lodash','../../config/logger','moment','request-promise','rimraf','../../config/environment','./intDynamics365Account.attributes','define'];(function(_0x5ca9ee,_0x1ef9df){var _0x1afb04=function(_0x3f95fa){while(--_0x3f95fa){_0x5ca9ee['push'](_0x5ca9ee['shift']());}};_0x1afb04(++_0x1ef9df);}(_0xb7e7,0x121));var _0x7b7e=function(_0x432fca,_0xb0b1b5){_0x432fca=_0x432fca-0x0;var _0x3adba4=_0xb7e7[_0x432fca];return _0x3adba4;};'use strict';var _=require(_0x7b7e('0x0'));var util=require('util');var logger=require(_0x7b7e('0x1'))('api');var moment=require(_0x7b7e('0x2'));var BPromise=require('bluebird');var rp=require(_0x7b7e('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7b7e('0x4'));var config=require(_0x7b7e('0x5'));var attributes=require(_0x7b7e('0x6'));var integrations=require('../../components/integrations/configuration');module['exports']=function(_0x333fa4,_0x372bde){return _0x333fa4[_0x7b7e('0x7')]('Dynamics365Account',attributes,{'tableName':_0x7b7e('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f709615..05be45e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa5d6=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','Dynamics365Account,\x20%s,\x20%s','request\x20sent','Dynamics365Account,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','GetDynamics365Account','Dynamics365Account','options','where','attributes','limit','include','map','model','debug','catch','ShowDynamics365Account','find','raw','lodash','util','bluebird','randomstring'];(function(_0x5c97e5,_0x8c41dc){var _0x189b0a=function(_0x22b32f){while(--_0x22b32f){_0x5c97e5['push'](_0x5c97e5['shift']());}};_0x189b0a(++_0x8c41dc);}(_0xa5d6,0xb5));var _0x6a5d=function(_0xb25c7e,_0x5c8388){_0xb25c7e=_0xb25c7e-0x0;var _0x10d5d0=_0xa5d6[_0xb25c7e];return _0x10d5d0;};'use strict';var _=require(_0x6a5d('0x0'));var util=require(_0x6a5d('0x1'));var moment=require('moment');var BPromise=require(_0x6a5d('0x2'));var rs=require(_0x6a5d('0x3'));var fs=require('fs');var Redis=require(_0x6a5d('0x4'));var db=require(_0x6a5d('0x5'))['db'];var utils=require(_0x6a5d('0x6'));var logger=require(_0x6a5d('0x7'))(_0x6a5d('0x8'));var config=require(_0x6a5d('0x9'));var jayson=require(_0x6a5d('0xa'));var client=jayson[_0x6a5d('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1aeaed,_0x19c7f1,_0x437689){return new BPromise(function(_0x54b84b,_0x49eb75){return client[_0x6a5d('0xc')](_0x1aeaed,_0x437689)[_0x6a5d('0xd')](function(_0x164e4c){logger[_0x6a5d('0xe')](_0x6a5d('0xf'),_0x19c7f1,_0x6a5d('0x10'));logger['debug'](_0x6a5d('0x11'),_0x19c7f1,'request\x20sent',JSON[_0x6a5d('0x12')](_0x164e4c));if(_0x164e4c[_0x6a5d('0x13')]){if(_0x164e4c[_0x6a5d('0x13')][_0x6a5d('0x14')]===0x1f4){logger[_0x6a5d('0x13')](_0x6a5d('0xf'),_0x19c7f1,_0x164e4c[_0x6a5d('0x13')][_0x6a5d('0x15')]);return _0x49eb75(_0x164e4c[_0x6a5d('0x13')][_0x6a5d('0x15')]);}logger[_0x6a5d('0x13')](_0x6a5d('0xf'),_0x19c7f1,_0x164e4c[_0x6a5d('0x13')][_0x6a5d('0x15')]);return _0x54b84b(_0x164e4c[_0x6a5d('0x13')]['message']);}else{logger['info'](_0x6a5d('0xf'),_0x19c7f1,'request\x20sent');_0x54b84b(_0x164e4c[_0x6a5d('0x16')][_0x6a5d('0x15')]);}})['catch'](function(_0x57150f){logger[_0x6a5d('0x13')]('Dynamics365Account,\x20%s,\x20%s',_0x19c7f1,_0x57150f);_0x49eb75(_0x57150f);});});}exports[_0x6a5d('0x17')]=function(_0x308698){var _0x2ad6f9=this;return new Promise(function(_0xcfc8fa,_0x368e22){return db[_0x6a5d('0x18')]['findAll']({'raw':_0x308698[_0x6a5d('0x19')]?_0x308698[_0x6a5d('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x308698[_0x6a5d('0x19')]?_0x308698['options'][_0x6a5d('0x1a')]||null:null,'attributes':_0x308698[_0x6a5d('0x19')]?_0x308698['options'][_0x6a5d('0x1b')]||null:null,'limit':_0x308698[_0x6a5d('0x19')]?_0x308698['options'][_0x6a5d('0x1c')]||null:null,'include':_0x308698['options']?_0x308698['options'][_0x6a5d('0x1d')]?_[_0x6a5d('0x1e')](_0x308698[_0x6a5d('0x19')][_0x6a5d('0x1d')],function(_0x3a4b9b){return{'model':db[_0x3a4b9b[_0x6a5d('0x1f')]],'as':_0x3a4b9b['as'],'attributes':_0x3a4b9b[_0x6a5d('0x1b')],'include':_0x3a4b9b[_0x6a5d('0x1d')]?_['map'](_0x3a4b9b['include'],function(_0x158f4f){return{'model':db[_0x158f4f[_0x6a5d('0x1f')]],'as':_0x158f4f['as'],'attributes':_0x158f4f['attributes'],'include':_0x158f4f[_0x6a5d('0x1d')]?_[_0x6a5d('0x1e')](_0x158f4f[_0x6a5d('0x1d')],function(_0x205b8e){return{'model':db[_0x205b8e[_0x6a5d('0x1f')]],'as':_0x205b8e['as'],'attributes':_0x205b8e[_0x6a5d('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4982f1){logger[_0x6a5d('0xe')]('GetDynamics365Account',_0x308698);logger[_0x6a5d('0x20')](_0x6a5d('0x17'),_0x308698,JSON[_0x6a5d('0x12')](_0x4982f1));_0xcfc8fa(_0x4982f1);})[_0x6a5d('0x21')](function(_0x52712b){logger['error'](_0x6a5d('0x17'),_0x52712b[_0x6a5d('0x15')],_0x308698);_0x368e22(_0x2ad6f9[_0x6a5d('0x13')](0x1f4,_0x52712b[_0x6a5d('0x15')]));});});};exports[_0x6a5d('0x22')]=function(_0x4e5eb5){var _0x32ab69=this;return new Promise(function(_0x4efa87,_0x5a109c){return db[_0x6a5d('0x18')][_0x6a5d('0x23')]({'raw':_0x4e5eb5[_0x6a5d('0x19')]?_0x4e5eb5[_0x6a5d('0x19')][_0x6a5d('0x24')]===undefined?!![]:![]:!![],'where':_0x4e5eb5[_0x6a5d('0x19')]?_0x4e5eb5[_0x6a5d('0x19')][_0x6a5d('0x1a')]||null:null,'attributes':_0x4e5eb5[_0x6a5d('0x19')]?_0x4e5eb5['options'][_0x6a5d('0x1b')]||null:null,'include':_0x4e5eb5[_0x6a5d('0x19')]?_0x4e5eb5[_0x6a5d('0x19')]['include']?_[_0x6a5d('0x1e')](_0x4e5eb5['options'][_0x6a5d('0x1d')],function(_0x3be8b3){return{'model':db[_0x3be8b3['model']],'as':_0x3be8b3['as'],'attributes':_0x3be8b3[_0x6a5d('0x1b')],'include':_0x3be8b3['include']?_[_0x6a5d('0x1e')](_0x3be8b3[_0x6a5d('0x1d')],function(_0x5a011b){return{'model':db[_0x5a011b[_0x6a5d('0x1f')]],'as':_0x5a011b['as'],'attributes':_0x5a011b[_0x6a5d('0x1b')],'include':_0x5a011b[_0x6a5d('0x1d')]?_[_0x6a5d('0x1e')](_0x5a011b['include'],function(_0x5f0471){return{'model':db[_0x5f0471['model']],'as':_0x5f0471['as'],'attributes':_0x5f0471[_0x6a5d('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x6a5d('0xd')](function(_0x2e8ad9){logger[_0x6a5d('0xe')](_0x6a5d('0x22'),_0x4e5eb5);logger[_0x6a5d('0x20')](_0x6a5d('0x22'),_0x4e5eb5,JSON['stringify'](_0x2e8ad9));_0x4efa87(_0x2e8ad9);})[_0x6a5d('0x21')](function(_0x19f5ef){logger[_0x6a5d('0x13')](_0x6a5d('0x22'),_0x19f5ef['message'],_0x4e5eb5);_0x5a109c(_0x32ab69[_0x6a5d('0x13')](0x1f4,_0x19f5ef[_0x6a5d('0x15')]));});});};
\ No newline at end of file
+var _0x3d04=['request\x20sent','debug','Dynamics365Account,\x20%s,\x20%s,\x20%s','error','message','result','catch','GetDynamics365Account','Dynamics365Account','findAll','options','raw','attributes','limit','include','map','model','then','ShowDynamics365Account','find','where','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','request','info','Dynamics365Account,\x20%s,\x20%s'];(function(_0x3a80d8,_0x2589c8){var _0x4a71f8=function(_0x5efbf0){while(--_0x5efbf0){_0x3a80d8['push'](_0x3a80d8['shift']());}};_0x4a71f8(++_0x2589c8);}(_0x3d04,0x103));var _0x43d0=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x3d04[_0x1facfa];return _0x9ec701;};'use strict';var _=require(_0x43d0('0x0'));var util=require(_0x43d0('0x1'));var moment=require(_0x43d0('0x2'));var BPromise=require(_0x43d0('0x3'));var rs=require(_0x43d0('0x4'));var fs=require('fs');var Redis=require(_0x43d0('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x43d0('0x6'));var logger=require(_0x43d0('0x7'))('rpc');var config=require(_0x43d0('0x8'));var jayson=require(_0x43d0('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x267053,_0x4ee514,_0x4c4931){return new BPromise(function(_0x1c68bb,_0x4c6ecb){return client[_0x43d0('0xa')](_0x267053,_0x4c4931)['then'](function(_0x296da1){logger[_0x43d0('0xb')](_0x43d0('0xc'),_0x4ee514,_0x43d0('0xd'));logger[_0x43d0('0xe')](_0x43d0('0xf'),_0x4ee514,_0x43d0('0xd'),JSON['stringify'](_0x296da1));if(_0x296da1[_0x43d0('0x10')]){if(_0x296da1['error']['code']===0x1f4){logger[_0x43d0('0x10')](_0x43d0('0xc'),_0x4ee514,_0x296da1[_0x43d0('0x10')][_0x43d0('0x11')]);return _0x4c6ecb(_0x296da1['error'][_0x43d0('0x11')]);}logger['error'](_0x43d0('0xc'),_0x4ee514,_0x296da1[_0x43d0('0x10')][_0x43d0('0x11')]);return _0x1c68bb(_0x296da1['error'][_0x43d0('0x11')]);}else{logger[_0x43d0('0xb')](_0x43d0('0xc'),_0x4ee514,_0x43d0('0xd'));_0x1c68bb(_0x296da1[_0x43d0('0x12')][_0x43d0('0x11')]);}})[_0x43d0('0x13')](function(_0x49c436){logger['error']('Dynamics365Account,\x20%s,\x20%s',_0x4ee514,_0x49c436);_0x4c6ecb(_0x49c436);});});}exports[_0x43d0('0x14')]=function(_0x46c4bd){var _0x5b5d78=this;return new Promise(function(_0x62fac9,_0x10f009){return db[_0x43d0('0x15')][_0x43d0('0x16')]({'raw':_0x46c4bd[_0x43d0('0x17')]?_0x46c4bd['options'][_0x43d0('0x18')]===undefined?!![]:![]:!![],'where':_0x46c4bd[_0x43d0('0x17')]?_0x46c4bd['options']['where']||null:null,'attributes':_0x46c4bd[_0x43d0('0x17')]?_0x46c4bd[_0x43d0('0x17')][_0x43d0('0x19')]||null:null,'limit':_0x46c4bd[_0x43d0('0x17')]?_0x46c4bd['options'][_0x43d0('0x1a')]||null:null,'include':_0x46c4bd[_0x43d0('0x17')]?_0x46c4bd[_0x43d0('0x17')][_0x43d0('0x1b')]?_[_0x43d0('0x1c')](_0x46c4bd[_0x43d0('0x17')]['include'],function(_0x4b1a35){return{'model':db[_0x4b1a35[_0x43d0('0x1d')]],'as':_0x4b1a35['as'],'attributes':_0x4b1a35[_0x43d0('0x19')],'include':_0x4b1a35[_0x43d0('0x1b')]?_[_0x43d0('0x1c')](_0x4b1a35[_0x43d0('0x1b')],function(_0x6fd6d8){return{'model':db[_0x6fd6d8['model']],'as':_0x6fd6d8['as'],'attributes':_0x6fd6d8['attributes'],'include':_0x6fd6d8['include']?_['map'](_0x6fd6d8[_0x43d0('0x1b')],function(_0x578703){return{'model':db[_0x578703['model']],'as':_0x578703['as'],'attributes':_0x578703[_0x43d0('0x19')]};}):[]};}):[]};}):[]:[]})[_0x43d0('0x1e')](function(_0x32491c){logger['info'](_0x43d0('0x14'),_0x46c4bd);logger[_0x43d0('0xe')](_0x43d0('0x14'),_0x46c4bd,JSON['stringify'](_0x32491c));_0x62fac9(_0x32491c);})['catch'](function(_0x48f468){logger[_0x43d0('0x10')](_0x43d0('0x14'),_0x48f468[_0x43d0('0x11')],_0x46c4bd);_0x10f009(_0x5b5d78[_0x43d0('0x10')](0x1f4,_0x48f468[_0x43d0('0x11')]));});});};exports[_0x43d0('0x1f')]=function(_0x32ee52){var _0x1289a5=this;return new Promise(function(_0x1b5640,_0x5de4d9){return db[_0x43d0('0x15')][_0x43d0('0x20')]({'raw':_0x32ee52[_0x43d0('0x17')]?_0x32ee52['options'][_0x43d0('0x18')]===undefined?!![]:![]:!![],'where':_0x32ee52[_0x43d0('0x17')]?_0x32ee52[_0x43d0('0x17')][_0x43d0('0x21')]||null:null,'attributes':_0x32ee52[_0x43d0('0x17')]?_0x32ee52[_0x43d0('0x17')]['attributes']||null:null,'include':_0x32ee52['options']?_0x32ee52[_0x43d0('0x17')][_0x43d0('0x1b')]?_[_0x43d0('0x1c')](_0x32ee52['options'][_0x43d0('0x1b')],function(_0x58e80d){return{'model':db[_0x58e80d[_0x43d0('0x1d')]],'as':_0x58e80d['as'],'attributes':_0x58e80d['attributes'],'include':_0x58e80d[_0x43d0('0x1b')]?_[_0x43d0('0x1c')](_0x58e80d[_0x43d0('0x1b')],function(_0x3ae344){return{'model':db[_0x3ae344['model']],'as':_0x3ae344['as'],'attributes':_0x3ae344['attributes'],'include':_0x3ae344['include']?_[_0x43d0('0x1c')](_0x3ae344[_0x43d0('0x1b')],function(_0x126e32){return{'model':db[_0x126e32[_0x43d0('0x1d')]],'as':_0x126e32['as'],'attributes':_0x126e32[_0x43d0('0x19')]};}):[]};}):[]};}):[]:[]})[_0x43d0('0x1e')](function(_0x1134fe){logger[_0x43d0('0xb')](_0x43d0('0x1f'),_0x32ee52);logger['debug'](_0x43d0('0x1f'),_0x32ee52,JSON['stringify'](_0x1134fe));_0x1b5640(_0x1134fe);})[_0x43d0('0x13')](function(_0x455d80){logger['error']('ShowDynamics365Account',_0x455d80[_0x43d0('0x11')],_0x32ee52);_0x5de4d9(_0x1289a5[_0x43d0('0x10')](0x1f4,_0x455d80['message']));});});};
\ No newline at end of file
index db677e3..5f4a705 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd78=['connect-timeout','express','Router','fs-extra','./intDynamics365Configuration.controller','isAuthenticated','index','get','/:id/fields','/:id/subjects','getSubjects','post','create','put','/:id','update','exports','multer','util'];(function(_0x16bb0e,_0x343132){var _0x102b8b=function(_0x17a62b){while(--_0x17a62b){_0x16bb0e['push'](_0x16bb0e['shift']());}};_0x102b8b(++_0x343132);}(_0xcd78,0xa9));var _0x8cd7=function(_0x15b97a,_0x405cd8){_0x15b97a=_0x15b97a-0x0;var _0x729867=_0xcd78[_0x15b97a];return _0x729867;};'use strict';var multer=require(_0x8cd7('0x0'));var util=require(_0x8cd7('0x1'));var path=require('path');var timeout=require(_0x8cd7('0x2'));var express=require(_0x8cd7('0x3'));var router=express[_0x8cd7('0x4')]();var fs_extra=require(_0x8cd7('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x8cd7('0x6'));router['get']('/',auth[_0x8cd7('0x7')](),controller[_0x8cd7('0x8')]);router[_0x8cd7('0x9')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0x8cd7('0x9')](_0x8cd7('0xa'),auth[_0x8cd7('0x7')](),controller['getFields']);router['get'](_0x8cd7('0xb'),auth[_0x8cd7('0x7')](),controller[_0x8cd7('0xc')]);router['get']('/:id/descriptions',auth['isAuthenticated'](),controller['getDescriptions']);router[_0x8cd7('0xd')]('/',auth[_0x8cd7('0x7')](),controller[_0x8cd7('0xe')]);router[_0x8cd7('0xf')](_0x8cd7('0x10'),auth[_0x8cd7('0x7')](),controller[_0x8cd7('0x11')]);router['delete'](_0x8cd7('0x10'),auth[_0x8cd7('0x7')](),controller['destroy']);module[_0x8cd7('0x12')]=router;
\ No newline at end of file
+var _0x340e=['isAuthenticated','get','/:id','show','getFields','getSubjects','/:id/descriptions','getDescriptions','post','create','put','delete','destroy','exports','multer','path','Router','fs-extra','../../components/interaction/service','../../config/environment','./intDynamics365Configuration.controller'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x340e,0x1dc));var _0xe340=function(_0x4f47f8,_0x30a466){_0x4f47f8=_0x4f47f8-0x0;var _0x23f5fc=_0x340e[_0x4f47f8];return _0x23f5fc;};'use strict';var multer=require(_0xe340('0x0'));var util=require('util');var path=require(_0xe340('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xe340('0x2')]();var fs_extra=require(_0xe340('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xe340('0x4'));var config=require(_0xe340('0x5'));var controller=require(_0xe340('0x6'));router['get']('/',auth[_0xe340('0x7')](),controller['index']);router[_0xe340('0x8')](_0xe340('0x9'),auth[_0xe340('0x7')](),controller[_0xe340('0xa')]);router[_0xe340('0x8')]('/:id/fields',auth[_0xe340('0x7')](),controller[_0xe340('0xb')]);router[_0xe340('0x8')]('/:id/subjects',auth[_0xe340('0x7')](),controller[_0xe340('0xc')]);router[_0xe340('0x8')](_0xe340('0xd'),auth['isAuthenticated'](),controller[_0xe340('0xe')]);router[_0xe340('0xf')]('/',auth[_0xe340('0x7')](),controller[_0xe340('0x10')]);router[_0xe340('0x11')](_0xe340('0x9'),auth[_0xe340('0x7')](),controller['update']);router[_0xe340('0x12')](_0xe340('0x9'),auth[_0xe340('0x7')](),controller[_0xe340('0x13')]);module[_0xe340('0x14')]=router;
\ No newline at end of file
index 22ff495..1af33fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc942=['contact','nothing','BOOLEAN','sequelize','exports','STRING','ENUM','incident','phonecall'];(function(_0x56de7c,_0xb03126){var _0x42dcf7=function(_0x5cbba5){while(--_0x5cbba5){_0x56de7c['push'](_0x56de7c['shift']());}};_0x42dcf7(++_0xb03126);}(_0xc942,0x111));var _0x2c94=function(_0x4a5fa6,_0x235c89){_0x4a5fa6=_0x4a5fa6-0x0;var _0x5d3eb3=_0xc942[_0x4a5fa6];return _0x5d3eb3;};'use strict';var Sequelize=require(_0x2c94('0x0'));module[_0x2c94('0x1')]={'name':{'type':Sequelize[_0x2c94('0x2')]},'description':{'type':Sequelize['STRING']},'ticketType':{'type':Sequelize[_0x2c94('0x3')](_0x2c94('0x4'),_0x2c94('0x5')),'defaultValue':_0x2c94('0x4')},'moduleCreate':{'type':Sequelize[_0x2c94('0x3')](_0x2c94('0x6'),_0x2c94('0x7')),'defaultValue':_0x2c94('0x6'),'allowNull':![]},'additionalSearchContact':{'type':Sequelize[_0x2c94('0x2')],'allowNull':!![]},'openNewTab':{'type':Sequelize[_0x2c94('0x8')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x3986=['exports','STRING','ENUM','incident','phonecall','contact','nothing','BOOLEAN'];(function(_0x2c7618,_0x26be9c){var _0x5ce3f0=function(_0x1837b3){while(--_0x1837b3){_0x2c7618['push'](_0x2c7618['shift']());}};_0x5ce3f0(++_0x26be9c);}(_0x3986,0x1a0));var _0x6398=function(_0x198657,_0x477331){_0x198657=_0x198657-0x0;var _0x4334bc=_0x3986[_0x198657];return _0x4334bc;};'use strict';var Sequelize=require('sequelize');module[_0x6398('0x0')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x6398('0x1')]},'ticketType':{'type':Sequelize[_0x6398('0x2')](_0x6398('0x3'),_0x6398('0x4')),'defaultValue':_0x6398('0x3')},'moduleCreate':{'type':Sequelize[_0x6398('0x2')](_0x6398('0x5'),_0x6398('0x6')),'defaultValue':_0x6398('0x5'),'allowNull':![]},'additionalSearchContact':{'type':Sequelize[_0x6398('0x1')],'allowNull':!![]},'openNewTab':{'type':Sequelize[_0x6398('0x7')],'defaultValue':!![]}};
\ No newline at end of file
index 9e128bc..c6ea0e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3387=['includeAll','findAll','catch','show','params','options','find','create','body','destroy','getFields','findOne','Dynamics365Field','pick','hasOwnProperty','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','util','sox','ejs','fs-extra','lodash','squel','crypto','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','save','update','then','end','error','stack','name','send','rawAttributes','fieldName','type','model','map','query','keys','filters','intersection','fields','attributes','length','nolimit','order','sort','where','merge','VIRTUAL','filter','Dynamics365Configuration'];(function(_0x5e6c4d,_0x53b8a6){var _0x23855c=function(_0x3e2ce2){while(--_0x3e2ce2){_0x5e6c4d['push'](_0x5e6c4d['shift']());}};_0x23855c(++_0x53b8a6);}(_0x3387,0xf5));var _0x7338=function(_0x2d32ae,_0x77b33c){_0x2d32ae=_0x2d32ae-0x0;var _0x2520f1=_0x3387[_0x2d32ae];return _0x2520f1;};'use strict';var emlformat=require(_0x7338('0x0'));var rimraf=require(_0x7338('0x1'));var zipdir=require(_0x7338('0x2'));var jsonpatch=require(_0x7338('0x3'));var rp=require(_0x7338('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x7338('0x5'));var path=require('path');var sox=require(_0x7338('0x6'));var csv=require('to-csv');var ejs=require(_0x7338('0x7'));var fs=require('fs');var fs_extra=require(_0x7338('0x8'));var _=require(_0x7338('0x9'));var squel=require(_0x7338('0xa'));var crypto=require(_0x7338('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x7338('0xc'));var toCsv=require('to-csv');var querystring=require(_0x7338('0xd'));var Papa=require('papaparse');var Redis=require(_0x7338('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x7338('0xf'));var as=require(_0x7338('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x7338('0x11'))(_0x7338('0x12'));var utils=require(_0x7338('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x7338('0x14'));var db=require(_0x7338('0x15'))['db'];function respondWithStatusCode(_0x5ed849,_0xf3b86d){_0xf3b86d=_0xf3b86d||0xcc;return function(_0xf114fe){if(_0xf114fe){return _0x5ed849[_0x7338('0x16')](_0xf3b86d);}return _0x5ed849[_0x7338('0x17')](_0xf3b86d)['end']();};}function respondWithResult(_0x2e3a58,_0x2aca15){_0x2aca15=_0x2aca15||0xc8;return function(_0x4bfeff){if(_0x4bfeff){return _0x2e3a58[_0x7338('0x17')](_0x2aca15)[_0x7338('0x18')](_0x4bfeff);}};}function respondWithFilteredResult(_0x36f58b,_0x4c0cfd){return function(_0x1c9e94){if(_0x1c9e94){var _0x540f73=typeof _0x4c0cfd[_0x7338('0x19')]===_0x7338('0x1a')&&typeof _0x4c0cfd['limit']===_0x7338('0x1a');var _0x47f7e5=_0x1c9e94[_0x7338('0x1b')];var _0x4c7b9a=_0x540f73?0x0:_0x4c0cfd[_0x7338('0x19')];var _0x16ed73=_0x540f73?_0x1c9e94[_0x7338('0x1b')]:_0x4c0cfd[_0x7338('0x19')]+_0x4c0cfd[_0x7338('0x1c')];var _0x5f42d3;if(_0x16ed73>=_0x47f7e5){_0x16ed73=_0x47f7e5;_0x5f42d3=0xc8;}else{_0x5f42d3=0xce;}_0x36f58b[_0x7338('0x17')](_0x5f42d3);return _0x36f58b[_0x7338('0x1d')](_0x7338('0x1e'),_0x4c7b9a+'-'+_0x16ed73+'/'+_0x47f7e5)[_0x7338('0x18')](_0x1c9e94);}return null;};}function patchUpdates(_0x2f49c5){return function(_0x187e49){try{jsonpatch['apply'](_0x187e49,_0x2f49c5,!![]);}catch(_0x439472){return BPromise['reject'](_0x439472);}return _0x187e49[_0x7338('0x1f')]();};}function saveUpdates(_0x30c647,_0x48fc36){return function(_0x7af13b){if(_0x7af13b){return _0x7af13b[_0x7338('0x20')](_0x30c647)[_0x7338('0x21')](function(_0x4ee9e0){return _0x4ee9e0;});}return null;};}function removeEntity(_0x24e145,_0x20e013){return function(_0x2e0da4){if(_0x2e0da4){return _0x2e0da4['destroy']()[_0x7338('0x21')](function(){_0x24e145['status'](0xcc)[_0x7338('0x22')]();});}};}function handleEntityNotFound(_0x24e4f0,_0x5c230d){return function(_0x1b4168){if(!_0x1b4168){_0x24e4f0[_0x7338('0x16')](0x194);}return _0x1b4168;};}function handleError(_0x1cf9c1,_0x5075a6){_0x5075a6=_0x5075a6||0x1f4;return function(_0x4f8e8c){logger[_0x7338('0x23')](_0x4f8e8c[_0x7338('0x24')]);if(_0x4f8e8c[_0x7338('0x25')]){delete _0x4f8e8c[_0x7338('0x25')];}_0x1cf9c1[_0x7338('0x17')](_0x5075a6)[_0x7338('0x26')](_0x4f8e8c);};}exports['index']=function(_0x2e9597,_0x54cba3){var _0xb73f80={},_0x26bb89={},_0x3d7a67={'count':0x0,'rows':[]};var _0x59fe72=_['map'](db['Dynamics365Configuration'][_0x7338('0x27')],function(_0x5625fa){return{'name':_0x5625fa[_0x7338('0x28')],'type':_0x5625fa[_0x7338('0x29')]['key']};});_0x26bb89[_0x7338('0x2a')]=_[_0x7338('0x2b')](_0x59fe72,'name');_0x26bb89[_0x7338('0x2c')]=_[_0x7338('0x2d')](_0x2e9597[_0x7338('0x2c')]);_0x26bb89[_0x7338('0x2e')]=_[_0x7338('0x2f')](_0x26bb89[_0x7338('0x2a')],_0x26bb89[_0x7338('0x2c')]);_0xb73f80['attributes']=_[_0x7338('0x2f')](_0x26bb89['model'],qs[_0x7338('0x30')](_0x2e9597[_0x7338('0x2c')][_0x7338('0x30')]));_0xb73f80[_0x7338('0x31')]=_0xb73f80[_0x7338('0x31')][_0x7338('0x32')]?_0xb73f80['attributes']:_0x26bb89[_0x7338('0x2a')];if(!_0x2e9597[_0x7338('0x2c')]['hasOwnProperty'](_0x7338('0x33'))){_0xb73f80[_0x7338('0x1c')]=qs['limit'](_0x2e9597[_0x7338('0x2c')][_0x7338('0x1c')]);_0xb73f80[_0x7338('0x19')]=qs[_0x7338('0x19')](_0x2e9597[_0x7338('0x2c')][_0x7338('0x19')]);}_0xb73f80[_0x7338('0x34')]=qs[_0x7338('0x35')](_0x2e9597[_0x7338('0x2c')]['sort']);_0xb73f80[_0x7338('0x36')]=qs['filters'](_['pick'](_0x2e9597[_0x7338('0x2c')],_0x26bb89[_0x7338('0x2e')]),_0x59fe72);if(_0x2e9597[_0x7338('0x2c')]['filter']){_0xb73f80[_0x7338('0x36')]=_[_0x7338('0x37')](_0xb73f80[_0x7338('0x36')],{'$or':_['map'](_0x59fe72,function(_0x191492){if(_0x191492['type']!==_0x7338('0x38')){var _0x23700c={};_0x23700c[_0x191492[_0x7338('0x25')]]={'$like':'%'+_0x2e9597[_0x7338('0x2c')][_0x7338('0x39')]+'%'};return _0x23700c;}})});}_0xb73f80=_[_0x7338('0x37')]({},_0xb73f80,_0x2e9597['options']);var _0x325649={'where':_0xb73f80[_0x7338('0x36')]};return db[_0x7338('0x3a')]['count'](_0x325649)[_0x7338('0x21')](function(_0x155aa3){_0x3d7a67[_0x7338('0x1b')]=_0x155aa3;if(_0x2e9597[_0x7338('0x2c')][_0x7338('0x3b')]){_0xb73f80['include']=[{'all':!![]}];}return db['Dynamics365Configuration'][_0x7338('0x3c')](_0xb73f80);})[_0x7338('0x21')](function(_0x2ce2d5){_0x3d7a67['rows']=_0x2ce2d5;return _0x3d7a67;})[_0x7338('0x21')](respondWithFilteredResult(_0x54cba3,_0xb73f80))[_0x7338('0x3d')](handleError(_0x54cba3,null));};exports[_0x7338('0x3e')]=function(_0x1e5c85,_0x23a504){var _0x14e7cf={'raw':![],'where':{'id':_0x1e5c85[_0x7338('0x3f')]['id']}},_0x995e70={};_0x995e70['model']=_['keys'](db[_0x7338('0x3a')][_0x7338('0x27')]);_0x995e70['query']=_[_0x7338('0x2d')](_0x1e5c85[_0x7338('0x2c')]);_0x995e70[_0x7338('0x2e')]=_['intersection'](_0x995e70[_0x7338('0x2a')],_0x995e70['query']);_0x14e7cf[_0x7338('0x31')]=_[_0x7338('0x2f')](_0x995e70[_0x7338('0x2a')],qs['fields'](_0x1e5c85[_0x7338('0x2c')][_0x7338('0x30')]));_0x14e7cf[_0x7338('0x31')]=_0x14e7cf[_0x7338('0x31')][_0x7338('0x32')]?_0x14e7cf['attributes']:_0x995e70[_0x7338('0x2a')];if(_0x1e5c85[_0x7338('0x2c')][_0x7338('0x3b')]){_0x14e7cf['include']=[{'all':!![]}];}_0x14e7cf=_[_0x7338('0x37')]({},_0x14e7cf,_0x1e5c85[_0x7338('0x40')]);return db['Dynamics365Configuration'][_0x7338('0x41')](_0x14e7cf)[_0x7338('0x21')](handleEntityNotFound(_0x23a504,null))[_0x7338('0x21')](respondWithResult(_0x23a504,null))[_0x7338('0x3d')](handleError(_0x23a504,null));};exports[_0x7338('0x42')]=function(_0x4c6f16,_0x29eceb){return db[_0x7338('0x3a')]['create'](_0x4c6f16[_0x7338('0x43')],{})[_0x7338('0x21')](respondWithResult(_0x29eceb,0xc9))[_0x7338('0x3d')](handleError(_0x29eceb,null));};exports['update']=function(_0x569e77,_0x4bee15){if(_0x569e77[_0x7338('0x43')]['id']){delete _0x569e77['body']['id'];}return db[_0x7338('0x3a')][_0x7338('0x41')]({'where':{'id':_0x569e77[_0x7338('0x3f')]['id']}})[_0x7338('0x21')](handleEntityNotFound(_0x4bee15,null))[_0x7338('0x21')](saveUpdates(_0x569e77['body'],null))[_0x7338('0x21')](respondWithResult(_0x4bee15,null))['catch'](handleError(_0x4bee15,null));};exports[_0x7338('0x44')]=function(_0x483905,_0x4c412d){return db[_0x7338('0x3a')][_0x7338('0x41')]({'where':{'id':_0x483905[_0x7338('0x3f')]['id']}})['then'](handleEntityNotFound(_0x4c412d,null))[_0x7338('0x21')](removeEntity(_0x4c412d,null))[_0x7338('0x3d')](handleError(_0x4c412d,null));};exports[_0x7338('0x45')]=function(_0x55f644,_0xb5ff87,_0x708001){var _0x219f90={};var _0x40d8b5={};var _0x239491;var _0x3bbf44;return db[_0x7338('0x3a')][_0x7338('0x46')]({'where':{'id':_0x55f644[_0x7338('0x3f')]['id']}})[_0x7338('0x21')](handleEntityNotFound(_0xb5ff87,null))[_0x7338('0x21')](function(_0x44496f){if(_0x44496f){_0x239491=_0x44496f;_0x40d8b5[_0x7338('0x2a')]=_[_0x7338('0x2d')](db[_0x7338('0x47')]['rawAttributes']);_0x40d8b5[_0x7338('0x2c')]=_[_0x7338('0x2d')](_0x55f644[_0x7338('0x2c')]);_0x40d8b5[_0x7338('0x2e')]=_['intersection'](_0x40d8b5[_0x7338('0x2a')],_0x40d8b5[_0x7338('0x2c')]);_0x219f90['attributes']=_[_0x7338('0x2f')](_0x40d8b5[_0x7338('0x2a')],qs[_0x7338('0x30')](_0x55f644[_0x7338('0x2c')]['fields']));_0x219f90['attributes']=_0x219f90[_0x7338('0x31')]['length']?_0x219f90['attributes']:_0x40d8b5[_0x7338('0x2a')];_0x219f90[_0x7338('0x34')]=qs['sort'](_0x55f644['query'][_0x7338('0x35')]);_0x219f90[_0x7338('0x36')]=qs[_0x7338('0x2e')](_[_0x7338('0x48')](_0x55f644[_0x7338('0x2c')],_0x40d8b5[_0x7338('0x2e')]));if(_0x55f644[_0x7338('0x2c')][_0x7338('0x39')]){_0x219f90['where']=_['merge'](_0x219f90[_0x7338('0x36')],{'$or':_[_0x7338('0x2b')](_0x219f90[_0x7338('0x31')],function(_0x3cc3ac){var _0x2bc9b6={};_0x2bc9b6[_0x3cc3ac]={'$like':'%'+_0x55f644[_0x7338('0x2c')][_0x7338('0x39')]+'%'};return _0x2bc9b6;})});}_0x219f90=_[_0x7338('0x37')]({},_0x219f90,_0x55f644['options']);return _0x239491[_0x7338('0x45')](_0x219f90);}})[_0x7338('0x21')](function(_0x19d81d){if(_0x19d81d){_0x3bbf44=_0x19d81d[_0x7338('0x32')];if(!_0x55f644[_0x7338('0x2c')][_0x7338('0x49')](_0x7338('0x33'))){_0x219f90[_0x7338('0x1c')]=qs[_0x7338('0x1c')](_0x55f644[_0x7338('0x2c')]['limit']);_0x219f90['offset']=qs['offset'](_0x55f644[_0x7338('0x2c')][_0x7338('0x19')]);}return _0x239491[_0x7338('0x45')](_0x219f90);}})[_0x7338('0x21')](function(_0x280bfd){if(_0x280bfd){return _0x280bfd?{'count':_0x3bbf44,'rows':_0x280bfd}:null;}})['then'](respondWithResult(_0xb5ff87,null))[_0x7338('0x3d')](handleError(_0xb5ff87,null));};exports[_0x7338('0x4a')]=function(_0x1bbd36,_0x1af6f3,_0xbfcc76){var _0x3e3bfd={};var _0x41eb35={};var _0x542ce8;var _0x37ead3;return db[_0x7338('0x3a')]['findOne']({'where':{'id':_0x1bbd36[_0x7338('0x3f')]['id']}})['then'](handleEntityNotFound(_0x1af6f3,null))[_0x7338('0x21')](function(_0x5f47af){if(_0x5f47af){_0x542ce8=_0x5f47af;_0x41eb35[_0x7338('0x2a')]=_['keys'](db[_0x7338('0x47')][_0x7338('0x27')]);_0x41eb35[_0x7338('0x2c')]=_['keys'](_0x1bbd36['query']);_0x41eb35[_0x7338('0x2e')]=_[_0x7338('0x2f')](_0x41eb35['model'],_0x41eb35[_0x7338('0x2c')]);_0x3e3bfd[_0x7338('0x31')]=_[_0x7338('0x2f')](_0x41eb35['model'],qs['fields'](_0x1bbd36['query'][_0x7338('0x30')]));_0x3e3bfd['attributes']=_0x3e3bfd[_0x7338('0x31')][_0x7338('0x32')]?_0x3e3bfd['attributes']:_0x41eb35['model'];_0x3e3bfd[_0x7338('0x34')]=qs[_0x7338('0x35')](_0x1bbd36[_0x7338('0x2c')][_0x7338('0x35')]);_0x3e3bfd[_0x7338('0x36')]=qs[_0x7338('0x2e')](_[_0x7338('0x48')](_0x1bbd36[_0x7338('0x2c')],_0x41eb35['filters']));if(_0x1bbd36[_0x7338('0x2c')][_0x7338('0x39')]){_0x3e3bfd[_0x7338('0x36')]=_[_0x7338('0x37')](_0x3e3bfd[_0x7338('0x36')],{'$or':_[_0x7338('0x2b')](_0x3e3bfd[_0x7338('0x31')],function(_0x224493){var _0x2a1666={};_0x2a1666[_0x224493]={'$like':'%'+_0x1bbd36['query'][_0x7338('0x39')]+'%'};return _0x2a1666;})});}_0x3e3bfd=_['merge']({},_0x3e3bfd,_0x1bbd36[_0x7338('0x40')]);return _0x542ce8[_0x7338('0x4a')](_0x3e3bfd);}})[_0x7338('0x21')](function(_0x409cd2){if(_0x409cd2){_0x37ead3=_0x409cd2[_0x7338('0x32')];if(!_0x1bbd36[_0x7338('0x2c')][_0x7338('0x49')](_0x7338('0x33'))){_0x3e3bfd[_0x7338('0x1c')]=qs[_0x7338('0x1c')](_0x1bbd36[_0x7338('0x2c')][_0x7338('0x1c')]);_0x3e3bfd[_0x7338('0x19')]=qs[_0x7338('0x19')](_0x1bbd36[_0x7338('0x2c')][_0x7338('0x19')]);}return _0x542ce8['getSubjects'](_0x3e3bfd);}})[_0x7338('0x21')](function(_0x2ce4cb){if(_0x2ce4cb){return _0x2ce4cb?{'count':_0x37ead3,'rows':_0x2ce4cb}:null;}})[_0x7338('0x21')](respondWithResult(_0x1af6f3,null))[_0x7338('0x3d')](handleError(_0x1af6f3,null));};exports[_0x7338('0x4b')]=function(_0xe0d567,_0x2f8ccf,_0x1d75b6){var _0x11673b={};var _0x46813c={};var _0x20a21c;var _0x2452a4;return db[_0x7338('0x3a')][_0x7338('0x46')]({'where':{'id':_0xe0d567[_0x7338('0x3f')]['id']}})[_0x7338('0x21')](handleEntityNotFound(_0x2f8ccf,null))['then'](function(_0x42b7cd){if(_0x42b7cd){_0x20a21c=_0x42b7cd;_0x46813c[_0x7338('0x2a')]=_['keys'](db[_0x7338('0x47')][_0x7338('0x27')]);_0x46813c[_0x7338('0x2c')]=_['keys'](_0xe0d567[_0x7338('0x2c')]);_0x46813c['filters']=_[_0x7338('0x2f')](_0x46813c[_0x7338('0x2a')],_0x46813c[_0x7338('0x2c')]);_0x11673b['attributes']=_['intersection'](_0x46813c[_0x7338('0x2a')],qs['fields'](_0xe0d567[_0x7338('0x2c')][_0x7338('0x30')]));_0x11673b[_0x7338('0x31')]=_0x11673b[_0x7338('0x31')][_0x7338('0x32')]?_0x11673b[_0x7338('0x31')]:_0x46813c['model'];_0x11673b[_0x7338('0x34')]=qs[_0x7338('0x35')](_0xe0d567[_0x7338('0x2c')][_0x7338('0x35')]);_0x11673b[_0x7338('0x36')]=qs[_0x7338('0x2e')](_['pick'](_0xe0d567[_0x7338('0x2c')],_0x46813c[_0x7338('0x2e')]));if(_0xe0d567[_0x7338('0x2c')][_0x7338('0x39')]){_0x11673b[_0x7338('0x36')]=_[_0x7338('0x37')](_0x11673b[_0x7338('0x36')],{'$or':_['map'](_0x11673b[_0x7338('0x31')],function(_0x5dbddb){var _0x19a2ca={};_0x19a2ca[_0x5dbddb]={'$like':'%'+_0xe0d567[_0x7338('0x2c')]['filter']+'%'};return _0x19a2ca;})});}_0x11673b=_[_0x7338('0x37')]({},_0x11673b,_0xe0d567[_0x7338('0x40')]);return _0x20a21c[_0x7338('0x4b')](_0x11673b);}})['then'](function(_0x564473){if(_0x564473){_0x2452a4=_0x564473[_0x7338('0x32')];if(!_0xe0d567['query'][_0x7338('0x49')](_0x7338('0x33'))){_0x11673b['limit']=qs[_0x7338('0x1c')](_0xe0d567[_0x7338('0x2c')]['limit']);_0x11673b[_0x7338('0x19')]=qs['offset'](_0xe0d567[_0x7338('0x2c')]['offset']);}return _0x20a21c['getDescriptions'](_0x11673b);}})[_0x7338('0x21')](function(_0x3e231b){if(_0x3e231b){return _0x3e231b?{'count':_0x2452a4,'rows':_0x3e231b}:null;}})['then'](respondWithResult(_0x2f8ccf,null))[_0x7338('0x3d')](handleError(_0x2f8ccf,null));};
\ No newline at end of file
+var _0x46e4=['Content-Range','apply','save','update','then','destroy','sendStatus','error','stack','name','send','index','map','Dynamics365Configuration','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','type','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','find','create','body','getFields','findOne','Dynamics365Field','nolimit','getSubjects','getDescriptions','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','status','json','offset','undefined','limit','count','set'];(function(_0x109042,_0xc6d5f1){var _0x405dc0=function(_0xb4daa2){while(--_0xb4daa2){_0x109042['push'](_0x109042['shift']());}};_0x405dc0(++_0xc6d5f1);}(_0x46e4,0x8a));var _0x446e=function(_0x57c5e2,_0x10f331){_0x57c5e2=_0x57c5e2-0x0;var _0x19e57=_0x46e4[_0x57c5e2];return _0x19e57;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x446e('0x0'));var zipdir=require(_0x446e('0x1'));var jsonpatch=require(_0x446e('0x2'));var rp=require(_0x446e('0x3'));var moment=require(_0x446e('0x4'));var BPromise=require(_0x446e('0x5'));var Mustache=require('mustache');var util=require(_0x446e('0x6'));var path=require(_0x446e('0x7'));var sox=require(_0x446e('0x8'));var csv=require(_0x446e('0x9'));var ejs=require(_0x446e('0xa'));var fs=require('fs');var fs_extra=require(_0x446e('0xb'));var _=require('lodash');var squel=require(_0x446e('0xc'));var crypto=require(_0x446e('0xd'));var jsforce=require(_0x446e('0xe'));var deskjs=require(_0x446e('0xf'));var toCsv=require('to-csv');var querystring=require(_0x446e('0x10'));var Papa=require(_0x446e('0x11'));var Redis=require(_0x446e('0x12'));var authService=require(_0x446e('0x13'));var qs=require(_0x446e('0x14'));var as=require(_0x446e('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x446e('0x16'))(_0x446e('0x17'));var utils=require(_0x446e('0x18'));var config=require(_0x446e('0x19'));var licenseUtil=require(_0x446e('0x1a'));var db=require(_0x446e('0x1b'))['db'];function respondWithStatusCode(_0x3f4395,_0x1dd730){_0x1dd730=_0x1dd730||0xcc;return function(_0x1bf031){if(_0x1bf031){return _0x3f4395['sendStatus'](_0x1dd730);}return _0x3f4395['status'](_0x1dd730)[_0x446e('0x1c')]();};}function respondWithResult(_0x21b2a4,_0x5ec812){_0x5ec812=_0x5ec812||0xc8;return function(_0x2e9c04){if(_0x2e9c04){return _0x21b2a4[_0x446e('0x1d')](_0x5ec812)[_0x446e('0x1e')](_0x2e9c04);}};}function respondWithFilteredResult(_0x1e525d,_0x2bd496){return function(_0x1fe4ba){if(_0x1fe4ba){var _0x265cb8=typeof _0x2bd496[_0x446e('0x1f')]===_0x446e('0x20')&&typeof _0x2bd496[_0x446e('0x21')]===_0x446e('0x20');var _0x50be95=_0x1fe4ba[_0x446e('0x22')];var _0x235333=_0x265cb8?0x0:_0x2bd496[_0x446e('0x1f')];var _0x1a2332=_0x265cb8?_0x1fe4ba[_0x446e('0x22')]:_0x2bd496[_0x446e('0x1f')]+_0x2bd496[_0x446e('0x21')];var _0x1e4c8d;if(_0x1a2332>=_0x50be95){_0x1a2332=_0x50be95;_0x1e4c8d=0xc8;}else{_0x1e4c8d=0xce;}_0x1e525d[_0x446e('0x1d')](_0x1e4c8d);return _0x1e525d[_0x446e('0x23')](_0x446e('0x24'),_0x235333+'-'+_0x1a2332+'/'+_0x50be95)[_0x446e('0x1e')](_0x1fe4ba);}return null;};}function patchUpdates(_0x4170d6){return function(_0x6d429){try{jsonpatch[_0x446e('0x25')](_0x6d429,_0x4170d6,!![]);}catch(_0xec1fbb){return BPromise['reject'](_0xec1fbb);}return _0x6d429[_0x446e('0x26')]();};}function saveUpdates(_0x89ef93,_0x16c941){return function(_0x18a321){if(_0x18a321){return _0x18a321[_0x446e('0x27')](_0x89ef93)[_0x446e('0x28')](function(_0x46e581){return _0x46e581;});}return null;};}function removeEntity(_0x166d4d,_0x1f3742){return function(_0x2a5101){if(_0x2a5101){return _0x2a5101[_0x446e('0x29')]()[_0x446e('0x28')](function(){_0x166d4d['status'](0xcc)[_0x446e('0x1c')]();});}};}function handleEntityNotFound(_0x5b5141,_0x44cf40){return function(_0x272a17){if(!_0x272a17){_0x5b5141[_0x446e('0x2a')](0x194);}return _0x272a17;};}function handleError(_0x3cf52d,_0x37041d){_0x37041d=_0x37041d||0x1f4;return function(_0x3baae9){logger[_0x446e('0x2b')](_0x3baae9[_0x446e('0x2c')]);if(_0x3baae9[_0x446e('0x2d')]){delete _0x3baae9[_0x446e('0x2d')];}_0x3cf52d[_0x446e('0x1d')](_0x37041d)[_0x446e('0x2e')](_0x3baae9);};}exports[_0x446e('0x2f')]=function(_0x8c7af1,_0x21936a){var _0x8470a1={},_0x210d01={},_0x54af83={'count':0x0,'rows':[]};var _0x11b862=_[_0x446e('0x30')](db[_0x446e('0x31')]['rawAttributes'],function(_0x505980){return{'name':_0x505980[_0x446e('0x32')],'type':_0x505980['type'][_0x446e('0x33')]};});_0x210d01[_0x446e('0x34')]=_[_0x446e('0x30')](_0x11b862,_0x446e('0x2d'));_0x210d01[_0x446e('0x35')]=_[_0x446e('0x36')](_0x8c7af1[_0x446e('0x35')]);_0x210d01[_0x446e('0x37')]=_[_0x446e('0x38')](_0x210d01[_0x446e('0x34')],_0x210d01[_0x446e('0x35')]);_0x8470a1[_0x446e('0x39')]=_[_0x446e('0x38')](_0x210d01[_0x446e('0x34')],qs[_0x446e('0x3a')](_0x8c7af1[_0x446e('0x35')][_0x446e('0x3a')]));_0x8470a1[_0x446e('0x39')]=_0x8470a1[_0x446e('0x39')][_0x446e('0x3b')]?_0x8470a1['attributes']:_0x210d01[_0x446e('0x34')];if(!_0x8c7af1[_0x446e('0x35')][_0x446e('0x3c')]('nolimit')){_0x8470a1[_0x446e('0x21')]=qs['limit'](_0x8c7af1['query']['limit']);_0x8470a1[_0x446e('0x1f')]=qs[_0x446e('0x1f')](_0x8c7af1['query'][_0x446e('0x1f')]);}_0x8470a1[_0x446e('0x3d')]=qs[_0x446e('0x3e')](_0x8c7af1[_0x446e('0x35')][_0x446e('0x3e')]);_0x8470a1[_0x446e('0x3f')]=qs[_0x446e('0x37')](_[_0x446e('0x40')](_0x8c7af1['query'],_0x210d01[_0x446e('0x37')]),_0x11b862);if(_0x8c7af1[_0x446e('0x35')][_0x446e('0x41')]){_0x8470a1[_0x446e('0x3f')]=_['merge'](_0x8470a1['where'],{'$or':_['map'](_0x11b862,function(_0xe96c7f){if(_0xe96c7f[_0x446e('0x42')]!==_0x446e('0x43')){var _0x28ae29={};_0x28ae29[_0xe96c7f[_0x446e('0x2d')]]={'$like':'%'+_0x8c7af1[_0x446e('0x35')][_0x446e('0x41')]+'%'};return _0x28ae29;}})});}_0x8470a1=_[_0x446e('0x44')]({},_0x8470a1,_0x8c7af1[_0x446e('0x45')]);var _0x138ac5={'where':_0x8470a1[_0x446e('0x3f')]};return db['Dynamics365Configuration'][_0x446e('0x22')](_0x138ac5)['then'](function(_0x39d569){_0x54af83[_0x446e('0x22')]=_0x39d569;if(_0x8c7af1[_0x446e('0x35')][_0x446e('0x46')]){_0x8470a1[_0x446e('0x47')]=[{'all':!![]}];}return db[_0x446e('0x31')][_0x446e('0x48')](_0x8470a1);})[_0x446e('0x28')](function(_0x2adc0c){_0x54af83[_0x446e('0x49')]=_0x2adc0c;return _0x54af83;})['then'](respondWithFilteredResult(_0x21936a,_0x8470a1))[_0x446e('0x4a')](handleError(_0x21936a,null));};exports[_0x446e('0x4b')]=function(_0x310069,_0x1ed251){var _0x5bf65b={'raw':![],'where':{'id':_0x310069[_0x446e('0x4c')]['id']}},_0xb9b76d={};_0xb9b76d[_0x446e('0x34')]=_[_0x446e('0x36')](db[_0x446e('0x31')][_0x446e('0x4d')]);_0xb9b76d[_0x446e('0x35')]=_[_0x446e('0x36')](_0x310069[_0x446e('0x35')]);_0xb9b76d['filters']=_[_0x446e('0x38')](_0xb9b76d[_0x446e('0x34')],_0xb9b76d[_0x446e('0x35')]);_0x5bf65b[_0x446e('0x39')]=_[_0x446e('0x38')](_0xb9b76d[_0x446e('0x34')],qs['fields'](_0x310069[_0x446e('0x35')][_0x446e('0x3a')]));_0x5bf65b['attributes']=_0x5bf65b[_0x446e('0x39')][_0x446e('0x3b')]?_0x5bf65b['attributes']:_0xb9b76d['model'];if(_0x310069['query'][_0x446e('0x46')]){_0x5bf65b['include']=[{'all':!![]}];}_0x5bf65b=_['merge']({},_0x5bf65b,_0x310069[_0x446e('0x45')]);return db[_0x446e('0x31')][_0x446e('0x4e')](_0x5bf65b)[_0x446e('0x28')](handleEntityNotFound(_0x1ed251,null))['then'](respondWithResult(_0x1ed251,null))[_0x446e('0x4a')](handleError(_0x1ed251,null));};exports[_0x446e('0x4f')]=function(_0x730ae2,_0x355d67){return db[_0x446e('0x31')][_0x446e('0x4f')](_0x730ae2[_0x446e('0x50')],{})[_0x446e('0x28')](respondWithResult(_0x355d67,0xc9))['catch'](handleError(_0x355d67,null));};exports[_0x446e('0x27')]=function(_0x4e149c,_0x46a3b6){if(_0x4e149c[_0x446e('0x50')]['id']){delete _0x4e149c[_0x446e('0x50')]['id'];}return db[_0x446e('0x31')][_0x446e('0x4e')]({'where':{'id':_0x4e149c[_0x446e('0x4c')]['id']}})[_0x446e('0x28')](handleEntityNotFound(_0x46a3b6,null))['then'](saveUpdates(_0x4e149c[_0x446e('0x50')],null))['then'](respondWithResult(_0x46a3b6,null))[_0x446e('0x4a')](handleError(_0x46a3b6,null));};exports['destroy']=function(_0x3f169e,_0x4e0bbd){return db[_0x446e('0x31')]['find']({'where':{'id':_0x3f169e[_0x446e('0x4c')]['id']}})[_0x446e('0x28')](handleEntityNotFound(_0x4e0bbd,null))[_0x446e('0x28')](removeEntity(_0x4e0bbd,null))[_0x446e('0x4a')](handleError(_0x4e0bbd,null));};exports[_0x446e('0x51')]=function(_0x1542d3,_0x13dc9a,_0x6bffa3){var _0x5c8a9a={};var _0x4e1d06={};var _0x1e8082;var _0x290e02;return db[_0x446e('0x31')][_0x446e('0x52')]({'where':{'id':_0x1542d3[_0x446e('0x4c')]['id']}})[_0x446e('0x28')](handleEntityNotFound(_0x13dc9a,null))[_0x446e('0x28')](function(_0x4b2b1d){if(_0x4b2b1d){_0x1e8082=_0x4b2b1d;_0x4e1d06['model']=_[_0x446e('0x36')](db[_0x446e('0x53')][_0x446e('0x4d')]);_0x4e1d06['query']=_[_0x446e('0x36')](_0x1542d3[_0x446e('0x35')]);_0x4e1d06[_0x446e('0x37')]=_['intersection'](_0x4e1d06[_0x446e('0x34')],_0x4e1d06[_0x446e('0x35')]);_0x5c8a9a[_0x446e('0x39')]=_[_0x446e('0x38')](_0x4e1d06[_0x446e('0x34')],qs[_0x446e('0x3a')](_0x1542d3[_0x446e('0x35')][_0x446e('0x3a')]));_0x5c8a9a['attributes']=_0x5c8a9a[_0x446e('0x39')][_0x446e('0x3b')]?_0x5c8a9a[_0x446e('0x39')]:_0x4e1d06[_0x446e('0x34')];_0x5c8a9a['order']=qs[_0x446e('0x3e')](_0x1542d3[_0x446e('0x35')]['sort']);_0x5c8a9a['where']=qs['filters'](_[_0x446e('0x40')](_0x1542d3[_0x446e('0x35')],_0x4e1d06[_0x446e('0x37')]));if(_0x1542d3[_0x446e('0x35')][_0x446e('0x41')]){_0x5c8a9a[_0x446e('0x3f')]=_[_0x446e('0x44')](_0x5c8a9a['where'],{'$or':_[_0x446e('0x30')](_0x5c8a9a[_0x446e('0x39')],function(_0x58f1d9){var _0x440eb8={};_0x440eb8[_0x58f1d9]={'$like':'%'+_0x1542d3[_0x446e('0x35')]['filter']+'%'};return _0x440eb8;})});}_0x5c8a9a=_['merge']({},_0x5c8a9a,_0x1542d3['options']);return _0x1e8082[_0x446e('0x51')](_0x5c8a9a);}})['then'](function(_0x16b45b){if(_0x16b45b){_0x290e02=_0x16b45b[_0x446e('0x3b')];if(!_0x1542d3['query'][_0x446e('0x3c')](_0x446e('0x54'))){_0x5c8a9a[_0x446e('0x21')]=qs[_0x446e('0x21')](_0x1542d3[_0x446e('0x35')][_0x446e('0x21')]);_0x5c8a9a[_0x446e('0x1f')]=qs['offset'](_0x1542d3[_0x446e('0x35')][_0x446e('0x1f')]);}return _0x1e8082['getFields'](_0x5c8a9a);}})['then'](function(_0x1415c5){if(_0x1415c5){return _0x1415c5?{'count':_0x290e02,'rows':_0x1415c5}:null;}})[_0x446e('0x28')](respondWithResult(_0x13dc9a,null))[_0x446e('0x4a')](handleError(_0x13dc9a,null));};exports[_0x446e('0x55')]=function(_0x556a06,_0x178cb5,_0x24c75b){var _0x23b76e={};var _0x58cd36={};var _0x173bc3;var _0x2d6dab;return db[_0x446e('0x31')][_0x446e('0x52')]({'where':{'id':_0x556a06[_0x446e('0x4c')]['id']}})[_0x446e('0x28')](handleEntityNotFound(_0x178cb5,null))[_0x446e('0x28')](function(_0x282e68){if(_0x282e68){_0x173bc3=_0x282e68;_0x58cd36[_0x446e('0x34')]=_['keys'](db[_0x446e('0x53')][_0x446e('0x4d')]);_0x58cd36['query']=_[_0x446e('0x36')](_0x556a06['query']);_0x58cd36[_0x446e('0x37')]=_['intersection'](_0x58cd36[_0x446e('0x34')],_0x58cd36[_0x446e('0x35')]);_0x23b76e[_0x446e('0x39')]=_[_0x446e('0x38')](_0x58cd36['model'],qs['fields'](_0x556a06[_0x446e('0x35')][_0x446e('0x3a')]));_0x23b76e[_0x446e('0x39')]=_0x23b76e[_0x446e('0x39')][_0x446e('0x3b')]?_0x23b76e[_0x446e('0x39')]:_0x58cd36['model'];_0x23b76e['order']=qs[_0x446e('0x3e')](_0x556a06[_0x446e('0x35')][_0x446e('0x3e')]);_0x23b76e[_0x446e('0x3f')]=qs[_0x446e('0x37')](_[_0x446e('0x40')](_0x556a06[_0x446e('0x35')],_0x58cd36[_0x446e('0x37')]));if(_0x556a06[_0x446e('0x35')][_0x446e('0x41')]){_0x23b76e[_0x446e('0x3f')]=_['merge'](_0x23b76e[_0x446e('0x3f')],{'$or':_[_0x446e('0x30')](_0x23b76e[_0x446e('0x39')],function(_0x19a3fd){var _0x5044f9={};_0x5044f9[_0x19a3fd]={'$like':'%'+_0x556a06['query'][_0x446e('0x41')]+'%'};return _0x5044f9;})});}_0x23b76e=_[_0x446e('0x44')]({},_0x23b76e,_0x556a06[_0x446e('0x45')]);return _0x173bc3[_0x446e('0x55')](_0x23b76e);}})[_0x446e('0x28')](function(_0x3cbfa5){if(_0x3cbfa5){_0x2d6dab=_0x3cbfa5[_0x446e('0x3b')];if(!_0x556a06[_0x446e('0x35')][_0x446e('0x3c')]('nolimit')){_0x23b76e[_0x446e('0x21')]=qs[_0x446e('0x21')](_0x556a06['query'][_0x446e('0x21')]);_0x23b76e['offset']=qs[_0x446e('0x1f')](_0x556a06['query'][_0x446e('0x1f')]);}return _0x173bc3[_0x446e('0x55')](_0x23b76e);}})[_0x446e('0x28')](function(_0x236106){if(_0x236106){return _0x236106?{'count':_0x2d6dab,'rows':_0x236106}:null;}})[_0x446e('0x28')](respondWithResult(_0x178cb5,null))[_0x446e('0x4a')](handleError(_0x178cb5,null));};exports[_0x446e('0x56')]=function(_0x29c6ad,_0xddf771,_0xcd1157){var _0x2438b8={};var _0x57792b={};var _0x2bc67a;var _0x12dafb;return db[_0x446e('0x31')][_0x446e('0x52')]({'where':{'id':_0x29c6ad[_0x446e('0x4c')]['id']}})[_0x446e('0x28')](handleEntityNotFound(_0xddf771,null))[_0x446e('0x28')](function(_0x326b67){if(_0x326b67){_0x2bc67a=_0x326b67;_0x57792b['model']=_['keys'](db[_0x446e('0x53')][_0x446e('0x4d')]);_0x57792b[_0x446e('0x35')]=_['keys'](_0x29c6ad['query']);_0x57792b['filters']=_['intersection'](_0x57792b[_0x446e('0x34')],_0x57792b['query']);_0x2438b8[_0x446e('0x39')]=_[_0x446e('0x38')](_0x57792b[_0x446e('0x34')],qs[_0x446e('0x3a')](_0x29c6ad['query']['fields']));_0x2438b8[_0x446e('0x39')]=_0x2438b8[_0x446e('0x39')]['length']?_0x2438b8[_0x446e('0x39')]:_0x57792b['model'];_0x2438b8['order']=qs[_0x446e('0x3e')](_0x29c6ad[_0x446e('0x35')][_0x446e('0x3e')]);_0x2438b8['where']=qs[_0x446e('0x37')](_[_0x446e('0x40')](_0x29c6ad['query'],_0x57792b[_0x446e('0x37')]));if(_0x29c6ad[_0x446e('0x35')][_0x446e('0x41')]){_0x2438b8[_0x446e('0x3f')]=_[_0x446e('0x44')](_0x2438b8['where'],{'$or':_[_0x446e('0x30')](_0x2438b8[_0x446e('0x39')],function(_0x3020b0){var _0x19f396={};_0x19f396[_0x3020b0]={'$like':'%'+_0x29c6ad['query']['filter']+'%'};return _0x19f396;})});}_0x2438b8=_['merge']({},_0x2438b8,_0x29c6ad[_0x446e('0x45')]);return _0x2bc67a[_0x446e('0x56')](_0x2438b8);}})['then'](function(_0x384937){if(_0x384937){_0x12dafb=_0x384937['length'];if(!_0x29c6ad[_0x446e('0x35')]['hasOwnProperty']('nolimit')){_0x2438b8[_0x446e('0x21')]=qs['limit'](_0x29c6ad[_0x446e('0x35')]['limit']);_0x2438b8[_0x446e('0x1f')]=qs[_0x446e('0x1f')](_0x29c6ad[_0x446e('0x35')]['offset']);}return _0x2bc67a[_0x446e('0x56')](_0x2438b8);}})[_0x446e('0x28')](function(_0x406941){if(_0x406941){return _0x406941?{'count':_0x12dafb,'rows':_0x406941}:null;}})[_0x446e('0x28')](respondWithResult(_0xddf771,null))['catch'](handleError(_0xddf771,null));};
\ No newline at end of file
index 68f816b..6e8f2c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e8=['int_dynamics365_configurations','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./intDynamics365Configuration.attributes','exports','Dynamics365Configuration'];(function(_0x4aba20,_0x3ebc8a){var _0xb6da33=function(_0x5e94f0){while(--_0x5e94f0){_0x4aba20['push'](_0x4aba20['shift']());}};_0xb6da33(++_0x3ebc8a);}(_0x34e8,0x12c));var _0x834e=function(_0x39d06b,_0x5983b1){_0x39d06b=_0x39d06b-0x0;var _0x55140d=_0x34e8[_0x39d06b];return _0x55140d;};'use strict';var _=require(_0x834e('0x0'));var util=require(_0x834e('0x1'));var logger=require(_0x834e('0x2'))(_0x834e('0x3'));var moment=require('moment');var BPromise=require(_0x834e('0x4'));var rp=require(_0x834e('0x5'));var fs=require('fs');var path=require(_0x834e('0x6'));var rimraf=require(_0x834e('0x7'));var config=require(_0x834e('0x8'));var attributes=require(_0x834e('0x9'));module[_0x834e('0xa')]=function(_0x4a2018,_0x858aa1){return _0x4a2018['define'](_0x834e('0xb'),attributes,{'tableName':_0x834e('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb4e6=['path','rimraf','./intDynamics365Configuration.attributes','exports','define','lodash','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x50c8ab,_0xdc3f){var _0x4d3391=function(_0x583b83){while(--_0x583b83){_0x50c8ab['push'](_0x50c8ab['shift']());}};_0x4d3391(++_0xdc3f);}(_0xb4e6,0x1f4));var _0x6b4e=function(_0x21549c,_0x6d64d1){_0x21549c=_0x21549c-0x0;var _0x426cbd=_0xb4e6[_0x21549c];return _0x426cbd;};'use strict';var _=require(_0x6b4e('0x0'));var util=require('util');var logger=require(_0x6b4e('0x1'))(_0x6b4e('0x2'));var moment=require(_0x6b4e('0x3'));var BPromise=require(_0x6b4e('0x4'));var rp=require(_0x6b4e('0x5'));var fs=require('fs');var path=require(_0x6b4e('0x6'));var rimraf=require(_0x6b4e('0x7'));var config=require('../../config/environment');var attributes=require(_0x6b4e('0x8'));module[_0x6b4e('0x9')]=function(_0x1f67a2,_0x49de51){return _0x1f67a2[_0x6b4e('0xa')]('Dynamics365Configuration',attributes,{'tableName':'int_dynamics365_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6e70137..778dd80 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x23be=['Dynamics365Configuration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Dynamics365Configuration,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x1c8c28,_0x3ee093){var _0x1f59b4=function(_0x29bcc0){while(--_0x29bcc0){_0x1c8c28['push'](_0x1c8c28['shift']());}};_0x1f59b4(++_0x3ee093);}(_0x23be,0xd6));var _0xe23b=function(_0x1f8e0c,_0x4579b8){_0x1f8e0c=_0x1f8e0c-0x0;var _0x5e3d67=_0x23be[_0x1f8e0c];return _0x5e3d67;};'use strict';var _=require(_0xe23b('0x0'));var util=require(_0xe23b('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xe23b('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xe23b('0x3'))['db'];var utils=require(_0xe23b('0x4'));var logger=require('../../config/logger')(_0xe23b('0x5'));var config=require(_0xe23b('0x6'));var jayson=require(_0xe23b('0x7'));var client=jayson[_0xe23b('0x8')][_0xe23b('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x509ec2,_0x2dbb8a,_0x5d1f63){return new BPromise(function(_0xa72556,_0x32dc0e){return client[_0xe23b('0xa')](_0x509ec2,_0x5d1f63)[_0xe23b('0xb')](function(_0x2a9fde){logger[_0xe23b('0xc')](_0xe23b('0xd'),_0x2dbb8a,_0xe23b('0xe'));logger[_0xe23b('0xf')](_0xe23b('0x10'),_0x2dbb8a,_0xe23b('0xe'),JSON[_0xe23b('0x11')](_0x2a9fde));if(_0x2a9fde[_0xe23b('0x12')]){if(_0x2a9fde[_0xe23b('0x12')][_0xe23b('0x13')]===0x1f4){logger[_0xe23b('0x12')]('Dynamics365Configuration,\x20%s,\x20%s',_0x2dbb8a,_0x2a9fde[_0xe23b('0x12')][_0xe23b('0x14')]);return _0x32dc0e(_0x2a9fde[_0xe23b('0x12')][_0xe23b('0x14')]);}logger[_0xe23b('0x12')]('Dynamics365Configuration,\x20%s,\x20%s',_0x2dbb8a,_0x2a9fde[_0xe23b('0x12')][_0xe23b('0x14')]);return _0xa72556(_0x2a9fde[_0xe23b('0x12')][_0xe23b('0x14')]);}else{logger[_0xe23b('0xc')](_0xe23b('0xd'),_0x2dbb8a,_0xe23b('0xe'));_0xa72556(_0x2a9fde[_0xe23b('0x15')][_0xe23b('0x14')]);}})[_0xe23b('0x16')](function(_0x40ec5c){logger['error'](_0xe23b('0xd'),_0x2dbb8a,_0x40ec5c);_0x32dc0e(_0x40ec5c);});});}
\ No newline at end of file
+var _0x8366=['../../config/utils','rpc','jayson/promise','client','http','request','then','Dynamics365Configuration,\x20%s,\x20%s','request\x20sent','error','message','info','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb'];(function(_0x2620e0,_0x4a404a){var _0x5c33b3=function(_0x1a9109){while(--_0x1a9109){_0x2620e0['push'](_0x2620e0['shift']());}};_0x5c33b3(++_0x4a404a);}(_0x8366,0x72));var _0x6836=function(_0x5a80f2,_0x1159e6){_0x5a80f2=_0x5a80f2-0x0;var _0x6a03d=_0x8366[_0x5a80f2];return _0x6a03d;};'use strict';var _=require(_0x6836('0x0'));var util=require(_0x6836('0x1'));var moment=require(_0x6836('0x2'));var BPromise=require(_0x6836('0x3'));var rs=require(_0x6836('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6836('0x5'))['db'];var utils=require(_0x6836('0x6'));var logger=require('../../config/logger')(_0x6836('0x7'));var config=require('../../config/environment');var jayson=require(_0x6836('0x8'));var client=jayson[_0x6836('0x9')][_0x6836('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4de48f,_0x57747f,_0x45394b){return new BPromise(function(_0x2044c1,_0x3726c8){return client[_0x6836('0xb')](_0x4de48f,_0x45394b)[_0x6836('0xc')](function(_0xd906c7){logger['info'](_0x6836('0xd'),_0x57747f,_0x6836('0xe'));logger['debug']('Dynamics365Configuration,\x20%s,\x20%s,\x20%s',_0x57747f,_0x6836('0xe'),JSON['stringify'](_0xd906c7));if(_0xd906c7['error']){if(_0xd906c7['error']['code']===0x1f4){logger['error'](_0x6836('0xd'),_0x57747f,_0xd906c7[_0x6836('0xf')]['message']);return _0x3726c8(_0xd906c7['error'][_0x6836('0x10')]);}logger[_0x6836('0xf')](_0x6836('0xd'),_0x57747f,_0xd906c7[_0x6836('0xf')][_0x6836('0x10')]);return _0x2044c1(_0xd906c7[_0x6836('0xf')][_0x6836('0x10')]);}else{logger[_0x6836('0x11')](_0x6836('0xd'),_0x57747f,'request\x20sent');_0x2044c1(_0xd906c7[_0x6836('0x12')][_0x6836('0x10')]);}})[_0x6836('0x13')](function(_0x592af0){logger[_0x6836('0xf')](_0x6836('0xd'),_0x57747f,_0x592af0);_0x3726c8(_0x592af0);});});}
\ No newline at end of file
index 77f62dd..402c183 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2961=['path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./intDynamics365Field.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','exports'];(function(_0x16bf39,_0x563569){var _0x350181=function(_0x37b9e9){while(--_0x37b9e9){_0x16bf39['push'](_0x16bf39['shift']());}};_0x350181(++_0x563569);}(_0x2961,0x156));var _0x1296=function(_0x5d0108,_0x44adee){_0x5d0108=_0x5d0108-0x0;var _0x53e2e8=_0x2961[_0x5d0108];return _0x53e2e8;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x1296('0x0'));var timeout=require(_0x1296('0x1'));var express=require(_0x1296('0x2'));var router=express['Router']();var fs_extra=require(_0x1296('0x3'));var auth=require(_0x1296('0x4'));var interaction=require(_0x1296('0x5'));var config=require('../../config/environment');var controller=require(_0x1296('0x6'));router[_0x1296('0x7')]('/',auth[_0x1296('0x8')](),controller[_0x1296('0x9')]);router[_0x1296('0x7')](_0x1296('0xa'),auth[_0x1296('0x8')](),controller[_0x1296('0xb')]);router[_0x1296('0xc')]('/',auth[_0x1296('0x8')](),controller[_0x1296('0xd')]);router[_0x1296('0xe')](_0x1296('0xa'),auth[_0x1296('0x8')](),controller[_0x1296('0xf')]);router[_0x1296('0x10')](_0x1296('0xa'),auth['isAuthenticated'](),controller['destroy']);module[_0x1296('0x11')]=router;
\ No newline at end of file
+var _0xb196=['fs-extra','../../components/auth/service','../../components/interaction/service','./intDynamics365Field.controller','isAuthenticated','index','/:id','show','post','create','delete','destroy','exports','util','path','connect-timeout','express','Router'];(function(_0x35e379,_0x419739){var _0x580725=function(_0xeaac50){while(--_0xeaac50){_0x35e379['push'](_0x35e379['shift']());}};_0x580725(++_0x419739);}(_0xb196,0x1e1));var _0x6b19=function(_0x2ee669,_0xf4cdf9){_0x2ee669=_0x2ee669-0x0;var _0x5b02a3=_0xb196[_0x2ee669];return _0x5b02a3;};'use strict';var multer=require('multer');var util=require(_0x6b19('0x0'));var path=require(_0x6b19('0x1'));var timeout=require(_0x6b19('0x2'));var express=require(_0x6b19('0x3'));var router=express[_0x6b19('0x4')]();var fs_extra=require(_0x6b19('0x5'));var auth=require(_0x6b19('0x6'));var interaction=require(_0x6b19('0x7'));var config=require('../../config/environment');var controller=require(_0x6b19('0x8'));router['get']('/',auth[_0x6b19('0x9')](),controller[_0x6b19('0xa')]);router['get'](_0x6b19('0xb'),auth[_0x6b19('0x9')](),controller[_0x6b19('0xc')]);router[_0x6b19('0xd')]('/',auth[_0x6b19('0x9')](),controller[_0x6b19('0xe')]);router['put'](_0x6b19('0xb'),auth[_0x6b19('0x9')](),controller['update']);router[_0x6b19('0xf')]('/:id',auth[_0x6b19('0x9')](),controller[_0x6b19('0x10')]);module[_0x6b19('0x11')]=router;
\ No newline at end of file
index 737a06e..c7855fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x71fd=['string','variable','customVariable','keyValue','picklist','STRING','sequelize','exports'];(function(_0x143edc,_0x24df40){var _0x4ab31d=function(_0x1b8df1){while(--_0x1b8df1){_0x143edc['push'](_0x143edc['shift']());}};_0x4ab31d(++_0x24df40);}(_0x71fd,0x1a6));var _0xd71f=function(_0x3fb63b,_0x376d67){_0x3fb63b=_0x3fb63b-0x0;var _0x22c858=_0x71fd[_0x3fb63b];return _0x22c858;};'use strict';var Sequelize=require(_0xd71f('0x0'));module[_0xd71f('0x1')]={'type':{'type':Sequelize['ENUM'](_0xd71f('0x2'),_0xd71f('0x3'),_0xd71f('0x4'),_0xd71f('0x5'),_0xd71f('0x6')),'defaultValue':_0xd71f('0x2')},'content':{'type':Sequelize[_0xd71f('0x7')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize['ENUM'](_0xd71f('0x2'),_0xd71f('0x3'),_0xd71f('0x4'))},'keyContent':{'type':Sequelize[_0xd71f('0x7')]},'idField':{'type':Sequelize[_0xd71f('0x7')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x4274=['BOOLEAN','sequelize','ENUM','string','variable','customVariable','keyValue','picklist','STRING'];(function(_0x54546f,_0xaad9b8){var _0x1784bc=function(_0x375a2b){while(--_0x375a2b){_0x54546f['push'](_0x54546f['shift']());}};_0x1784bc(++_0xaad9b8);}(_0x4274,0xeb));var _0x4427=function(_0xa8899c,_0xd2186d){_0xa8899c=_0xa8899c-0x0;var _0x44aa34=_0x4274[_0xa8899c];return _0x44aa34;};'use strict';var Sequelize=require(_0x4427('0x0'));module['exports']={'type':{'type':Sequelize[_0x4427('0x1')](_0x4427('0x2'),_0x4427('0x3'),_0x4427('0x4'),_0x4427('0x5'),_0x4427('0x6')),'defaultValue':'string'},'content':{'type':Sequelize[_0x4427('0x7')]},'key':{'type':Sequelize[_0x4427('0x7')]},'keyType':{'type':Sequelize[_0x4427('0x1')](_0x4427('0x2'),_0x4427('0x3'),'customVariable')},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x4427('0x7')]},'nameField':{'type':Sequelize[_0x4427('0x7')]},'customField':{'type':Sequelize[_0x4427('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index c907ebb..6dc61dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf6ad=['show','rawAttributes','options','find','body','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/license/util','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','save','update','then','destroy','error','name','send','index','map','Dynamics365Field','fieldName','type','model','query','keys','filters','intersection','fields','attributes','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','rows','catch'];(function(_0x597eb5,_0x4cb6f4){var _0x1305ab=function(_0x24c0cb){while(--_0x24c0cb){_0x597eb5['push'](_0x597eb5['shift']());}};_0x1305ab(++_0x4cb6f4);}(_0xf6ad,0xde));var _0xdf6a=function(_0x3f6f75,_0x26d69e){_0x3f6f75=_0x3f6f75-0x0;var _0x49931f=_0xf6ad[_0x3f6f75];return _0x49931f;};'use strict';var emlformat=require(_0xdf6a('0x0'));var rimraf=require(_0xdf6a('0x1'));var zipdir=require(_0xdf6a('0x2'));var jsonpatch=require(_0xdf6a('0x3'));var rp=require(_0xdf6a('0x4'));var moment=require('moment');var BPromise=require(_0xdf6a('0x5'));var Mustache=require(_0xdf6a('0x6'));var util=require(_0xdf6a('0x7'));var path=require(_0xdf6a('0x8'));var sox=require(_0xdf6a('0x9'));var csv=require(_0xdf6a('0xa'));var ejs=require(_0xdf6a('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xdf6a('0xc'));var squel=require(_0xdf6a('0xd'));var crypto=require('crypto');var jsforce=require(_0xdf6a('0xe'));var deskjs=require(_0xdf6a('0xf'));var toCsv=require(_0xdf6a('0xa'));var querystring=require(_0xdf6a('0x10'));var Papa=require(_0xdf6a('0x11'));var Redis=require(_0xdf6a('0x12'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xdf6a('0x13'));var hardwareService=require(_0xdf6a('0x14'));var logger=require('../../config/logger')(_0xdf6a('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xdf6a('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x121150,_0x19d394){_0x19d394=_0x19d394||0xcc;return function(_0x5444d5){if(_0x5444d5){return _0x121150[_0xdf6a('0x17')](_0x19d394);}return _0x121150[_0xdf6a('0x18')](_0x19d394)[_0xdf6a('0x19')]();};}function respondWithResult(_0x3fce3d,_0x1345c3){_0x1345c3=_0x1345c3||0xc8;return function(_0x55a936){if(_0x55a936){return _0x3fce3d[_0xdf6a('0x18')](_0x1345c3)[_0xdf6a('0x1a')](_0x55a936);}};}function respondWithFilteredResult(_0x376da4,_0x19572a){return function(_0x36c0b7){if(_0x36c0b7){var _0x4901a1=typeof _0x19572a[_0xdf6a('0x1b')]==='undefined'&&typeof _0x19572a['limit']===_0xdf6a('0x1c');var _0x51ad34=_0x36c0b7[_0xdf6a('0x1d')];var _0x203bc8=_0x4901a1?0x0:_0x19572a['offset'];var _0x1bebcb=_0x4901a1?_0x36c0b7[_0xdf6a('0x1d')]:_0x19572a[_0xdf6a('0x1b')]+_0x19572a[_0xdf6a('0x1e')];var _0x26d6cc;if(_0x1bebcb>=_0x51ad34){_0x1bebcb=_0x51ad34;_0x26d6cc=0xc8;}else{_0x26d6cc=0xce;}_0x376da4[_0xdf6a('0x18')](_0x26d6cc);return _0x376da4[_0xdf6a('0x1f')](_0xdf6a('0x20'),_0x203bc8+'-'+_0x1bebcb+'/'+_0x51ad34)[_0xdf6a('0x1a')](_0x36c0b7);}return null;};}function patchUpdates(_0x3f0b57){return function(_0x122860){try{jsonpatch[_0xdf6a('0x21')](_0x122860,_0x3f0b57,!![]);}catch(_0xde159a){return BPromise['reject'](_0xde159a);}return _0x122860[_0xdf6a('0x22')]();};}function saveUpdates(_0xa78c13,_0x113193){return function(_0x33631e){if(_0x33631e){return _0x33631e[_0xdf6a('0x23')](_0xa78c13)[_0xdf6a('0x24')](function(_0xcf349c){return _0xcf349c;});}return null;};}function removeEntity(_0x406508,_0x35fed7){return function(_0x3951d8){if(_0x3951d8){return _0x3951d8[_0xdf6a('0x25')]()[_0xdf6a('0x24')](function(){_0x406508[_0xdf6a('0x18')](0xcc)[_0xdf6a('0x19')]();});}};}function handleEntityNotFound(_0x5bb4db,_0x2bc40d){return function(_0x489957){if(!_0x489957){_0x5bb4db['sendStatus'](0x194);}return _0x489957;};}function handleError(_0x53a3c2,_0x515a96){_0x515a96=_0x515a96||0x1f4;return function(_0x1a5021){logger[_0xdf6a('0x26')](_0x1a5021['stack']);if(_0x1a5021[_0xdf6a('0x27')]){delete _0x1a5021[_0xdf6a('0x27')];}_0x53a3c2[_0xdf6a('0x18')](_0x515a96)[_0xdf6a('0x28')](_0x1a5021);};}exports[_0xdf6a('0x29')]=function(_0x32cdcb,_0x2dc80c){var _0x317f90={},_0x458793={},_0x1aedf8={'count':0x0,'rows':[]};var _0x4bfc22=_[_0xdf6a('0x2a')](db[_0xdf6a('0x2b')]['rawAttributes'],function(_0x145f9b){return{'name':_0x145f9b[_0xdf6a('0x2c')],'type':_0x145f9b[_0xdf6a('0x2d')]['key']};});_0x458793[_0xdf6a('0x2e')]=_[_0xdf6a('0x2a')](_0x4bfc22,_0xdf6a('0x27'));_0x458793[_0xdf6a('0x2f')]=_[_0xdf6a('0x30')](_0x32cdcb[_0xdf6a('0x2f')]);_0x458793[_0xdf6a('0x31')]=_[_0xdf6a('0x32')](_0x458793[_0xdf6a('0x2e')],_0x458793[_0xdf6a('0x2f')]);_0x317f90['attributes']=_[_0xdf6a('0x32')](_0x458793['model'],qs[_0xdf6a('0x33')](_0x32cdcb[_0xdf6a('0x2f')]['fields']));_0x317f90['attributes']=_0x317f90[_0xdf6a('0x34')][_0xdf6a('0x35')]?_0x317f90[_0xdf6a('0x34')]:_0x458793['model'];if(!_0x32cdcb['query']['hasOwnProperty'](_0xdf6a('0x36'))){_0x317f90[_0xdf6a('0x1e')]=qs['limit'](_0x32cdcb[_0xdf6a('0x2f')][_0xdf6a('0x1e')]);_0x317f90['offset']=qs['offset'](_0x32cdcb[_0xdf6a('0x2f')][_0xdf6a('0x1b')]);}_0x317f90[_0xdf6a('0x37')]=qs[_0xdf6a('0x38')](_0x32cdcb['query']['sort']);_0x317f90[_0xdf6a('0x39')]=qs[_0xdf6a('0x31')](_[_0xdf6a('0x3a')](_0x32cdcb[_0xdf6a('0x2f')],_0x458793[_0xdf6a('0x31')]),_0x4bfc22);if(_0x32cdcb[_0xdf6a('0x2f')][_0xdf6a('0x3b')]){_0x317f90['where']=_[_0xdf6a('0x3c')](_0x317f90['where'],{'$or':_[_0xdf6a('0x2a')](_0x4bfc22,function(_0x791f9e){if(_0x791f9e[_0xdf6a('0x2d')]!==_0xdf6a('0x3d')){var _0x101ff0={};_0x101ff0[_0x791f9e[_0xdf6a('0x27')]]={'$like':'%'+_0x32cdcb[_0xdf6a('0x2f')]['filter']+'%'};return _0x101ff0;}})});}_0x317f90=_[_0xdf6a('0x3c')]({},_0x317f90,_0x32cdcb['options']);var _0xc050ff={'where':_0x317f90['where']};return db[_0xdf6a('0x2b')][_0xdf6a('0x1d')](_0xc050ff)['then'](function(_0x17d6ba){_0x1aedf8[_0xdf6a('0x1d')]=_0x17d6ba;if(_0x32cdcb[_0xdf6a('0x2f')][_0xdf6a('0x3e')]){_0x317f90[_0xdf6a('0x3f')]=[{'all':!![]}];}return db[_0xdf6a('0x2b')]['findAll'](_0x317f90);})[_0xdf6a('0x24')](function(_0x52a173){_0x1aedf8[_0xdf6a('0x40')]=_0x52a173;return _0x1aedf8;})[_0xdf6a('0x24')](respondWithFilteredResult(_0x2dc80c,_0x317f90))[_0xdf6a('0x41')](handleError(_0x2dc80c,null));};exports[_0xdf6a('0x42')]=function(_0x33b5bc,_0x1e802e){var _0x23d378={'raw':!![],'where':{'id':_0x33b5bc['params']['id']}},_0x48964e={};_0x48964e[_0xdf6a('0x2e')]=_[_0xdf6a('0x30')](db['Dynamics365Field'][_0xdf6a('0x43')]);_0x48964e[_0xdf6a('0x2f')]=_[_0xdf6a('0x30')](_0x33b5bc[_0xdf6a('0x2f')]);_0x48964e['filters']=_[_0xdf6a('0x32')](_0x48964e[_0xdf6a('0x2e')],_0x48964e[_0xdf6a('0x2f')]);_0x23d378[_0xdf6a('0x34')]=_[_0xdf6a('0x32')](_0x48964e[_0xdf6a('0x2e')],qs[_0xdf6a('0x33')](_0x33b5bc[_0xdf6a('0x2f')][_0xdf6a('0x33')]));_0x23d378['attributes']=_0x23d378[_0xdf6a('0x34')][_0xdf6a('0x35')]?_0x23d378[_0xdf6a('0x34')]:_0x48964e[_0xdf6a('0x2e')];if(_0x33b5bc[_0xdf6a('0x2f')][_0xdf6a('0x3e')]){_0x23d378[_0xdf6a('0x3f')]=[{'all':!![]}];}_0x23d378=_[_0xdf6a('0x3c')]({},_0x23d378,_0x33b5bc[_0xdf6a('0x44')]);return db[_0xdf6a('0x2b')][_0xdf6a('0x45')](_0x23d378)[_0xdf6a('0x24')](handleEntityNotFound(_0x1e802e,null))[_0xdf6a('0x24')](respondWithResult(_0x1e802e,null))[_0xdf6a('0x41')](handleError(_0x1e802e,null));};exports['create']=function(_0x436d67,_0x3237d4){return db[_0xdf6a('0x2b')]['create'](_0x436d67[_0xdf6a('0x46')],{})[_0xdf6a('0x24')](respondWithResult(_0x3237d4,0xc9))[_0xdf6a('0x41')](handleError(_0x3237d4,null));};exports[_0xdf6a('0x23')]=function(_0x1578db,_0x564355){if(_0x1578db['body']['id']){delete _0x1578db[_0xdf6a('0x46')]['id'];}return db[_0xdf6a('0x2b')][_0xdf6a('0x45')]({'where':{'id':_0x1578db[_0xdf6a('0x47')]['id']}})[_0xdf6a('0x24')](handleEntityNotFound(_0x564355,null))[_0xdf6a('0x24')](saveUpdates(_0x1578db['body'],null))['then'](respondWithResult(_0x564355,null))[_0xdf6a('0x41')](handleError(_0x564355,null));};exports[_0xdf6a('0x25')]=function(_0x2db759,_0x4d63d3){return db[_0xdf6a('0x2b')][_0xdf6a('0x45')]({'where':{'id':_0x2db759[_0xdf6a('0x47')]['id']}})[_0xdf6a('0x24')](handleEntityNotFound(_0x4d63d3,null))['then'](removeEntity(_0x4d63d3,null))[_0xdf6a('0x41')](handleError(_0x4d63d3,null));};
\ No newline at end of file
+var _0xe6a9=['bluebird','mustache','path','sox','to-csv','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','destroy','then','sendStatus','name','index','map','Dynamics365Field','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','pick','filter','where','merge','type','include','findAll','rows','catch','params','length','includeAll','options','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment'];(function(_0x261158,_0x2665a2){var _0x469dfa=function(_0x4262fe){while(--_0x4262fe){_0x261158['push'](_0x261158['shift']());}};_0x469dfa(++_0x2665a2);}(_0xe6a9,0x1eb));var _0x9e6a=function(_0x421725,_0x318a04){_0x421725=_0x421725-0x0;var _0x51b322=_0xe6a9[_0x421725];return _0x51b322;};'use strict';var emlformat=require(_0x9e6a('0x0'));var rimraf=require(_0x9e6a('0x1'));var zipdir=require(_0x9e6a('0x2'));var jsonpatch=require(_0x9e6a('0x3'));var rp=require(_0x9e6a('0x4'));var moment=require(_0x9e6a('0x5'));var BPromise=require(_0x9e6a('0x6'));var Mustache=require(_0x9e6a('0x7'));var util=require('util');var path=require(_0x9e6a('0x8'));var sox=require(_0x9e6a('0x9'));var csv=require(_0x9e6a('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x9e6a('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x9e6a('0xc'));var jsforce=require(_0x9e6a('0xd'));var deskjs=require(_0x9e6a('0xe'));var toCsv=require(_0x9e6a('0xa'));var querystring=require(_0x9e6a('0xf'));var Papa=require(_0x9e6a('0x10'));var Redis=require(_0x9e6a('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x9e6a('0x12'));var as=require(_0x9e6a('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x9e6a('0x14'))(_0x9e6a('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2c898d,_0x11b127){_0x11b127=_0x11b127||0xcc;return function(_0x1b2b0a){if(_0x1b2b0a){return _0x2c898d['sendStatus'](_0x11b127);}return _0x2c898d[_0x9e6a('0x16')](_0x11b127)[_0x9e6a('0x17')]();};}function respondWithResult(_0x45802c,_0x40858e){_0x40858e=_0x40858e||0xc8;return function(_0x573e0d){if(_0x573e0d){return _0x45802c[_0x9e6a('0x16')](_0x40858e)[_0x9e6a('0x18')](_0x573e0d);}};}function respondWithFilteredResult(_0x5027eb,_0x303c88){return function(_0x285fb5){if(_0x285fb5){var _0xb2f8e1=typeof _0x303c88[_0x9e6a('0x19')]==='undefined'&&typeof _0x303c88[_0x9e6a('0x1a')]===_0x9e6a('0x1b');var _0x33c3ce=_0x285fb5[_0x9e6a('0x1c')];var _0x500c7e=_0xb2f8e1?0x0:_0x303c88[_0x9e6a('0x19')];var _0x55d4d0=_0xb2f8e1?_0x285fb5[_0x9e6a('0x1c')]:_0x303c88[_0x9e6a('0x19')]+_0x303c88[_0x9e6a('0x1a')];var _0x288941;if(_0x55d4d0>=_0x33c3ce){_0x55d4d0=_0x33c3ce;_0x288941=0xc8;}else{_0x288941=0xce;}_0x5027eb['status'](_0x288941);return _0x5027eb[_0x9e6a('0x1d')](_0x9e6a('0x1e'),_0x500c7e+'-'+_0x55d4d0+'/'+_0x33c3ce)[_0x9e6a('0x18')](_0x285fb5);}return null;};}function patchUpdates(_0x58c7b4){return function(_0x4ec59e){try{jsonpatch[_0x9e6a('0x1f')](_0x4ec59e,_0x58c7b4,!![]);}catch(_0x509c6a){return BPromise[_0x9e6a('0x20')](_0x509c6a);}return _0x4ec59e[_0x9e6a('0x21')]();};}function saveUpdates(_0x3da871,_0x44e471){return function(_0x207290){if(_0x207290){return _0x207290[_0x9e6a('0x22')](_0x3da871)['then'](function(_0x10225d){return _0x10225d;});}return null;};}function removeEntity(_0x4cc010,_0x15e351){return function(_0x3df564){if(_0x3df564){return _0x3df564[_0x9e6a('0x23')]()[_0x9e6a('0x24')](function(){_0x4cc010['status'](0xcc)[_0x9e6a('0x17')]();});}};}function handleEntityNotFound(_0x53f8e6,_0x30467e){return function(_0x5a1dfe){if(!_0x5a1dfe){_0x53f8e6[_0x9e6a('0x25')](0x194);}return _0x5a1dfe;};}function handleError(_0x13bbe1,_0x490ca7){_0x490ca7=_0x490ca7||0x1f4;return function(_0x2f6003){logger['error'](_0x2f6003['stack']);if(_0x2f6003[_0x9e6a('0x26')]){delete _0x2f6003[_0x9e6a('0x26')];}_0x13bbe1[_0x9e6a('0x16')](_0x490ca7)['send'](_0x2f6003);};}exports[_0x9e6a('0x27')]=function(_0x16a10,_0x5c99fc){var _0x163cf8={},_0x394f4b={},_0x25a721={'count':0x0,'rows':[]};var _0x38582b=_[_0x9e6a('0x28')](db[_0x9e6a('0x29')][_0x9e6a('0x2a')],function(_0x2e01bb){return{'name':_0x2e01bb[_0x9e6a('0x2b')],'type':_0x2e01bb['type'][_0x9e6a('0x2c')]};});_0x394f4b[_0x9e6a('0x2d')]=_[_0x9e6a('0x28')](_0x38582b,'name');_0x394f4b[_0x9e6a('0x2e')]=_[_0x9e6a('0x2f')](_0x16a10[_0x9e6a('0x2e')]);_0x394f4b[_0x9e6a('0x30')]=_[_0x9e6a('0x31')](_0x394f4b['model'],_0x394f4b[_0x9e6a('0x2e')]);_0x163cf8[_0x9e6a('0x32')]=_[_0x9e6a('0x31')](_0x394f4b['model'],qs[_0x9e6a('0x33')](_0x16a10[_0x9e6a('0x2e')]['fields']));_0x163cf8[_0x9e6a('0x32')]=_0x163cf8['attributes']['length']?_0x163cf8[_0x9e6a('0x32')]:_0x394f4b['model'];if(!_0x16a10[_0x9e6a('0x2e')][_0x9e6a('0x34')](_0x9e6a('0x35'))){_0x163cf8[_0x9e6a('0x1a')]=qs[_0x9e6a('0x1a')](_0x16a10[_0x9e6a('0x2e')][_0x9e6a('0x1a')]);_0x163cf8[_0x9e6a('0x19')]=qs[_0x9e6a('0x19')](_0x16a10[_0x9e6a('0x2e')][_0x9e6a('0x19')]);}_0x163cf8['order']=qs[_0x9e6a('0x36')](_0x16a10[_0x9e6a('0x2e')][_0x9e6a('0x36')]);_0x163cf8['where']=qs[_0x9e6a('0x30')](_[_0x9e6a('0x37')](_0x16a10[_0x9e6a('0x2e')],_0x394f4b['filters']),_0x38582b);if(_0x16a10['query'][_0x9e6a('0x38')]){_0x163cf8[_0x9e6a('0x39')]=_[_0x9e6a('0x3a')](_0x163cf8['where'],{'$or':_[_0x9e6a('0x28')](_0x38582b,function(_0x31b7af){if(_0x31b7af[_0x9e6a('0x3b')]!=='VIRTUAL'){var _0x231db9={};_0x231db9[_0x31b7af['name']]={'$like':'%'+_0x16a10[_0x9e6a('0x2e')][_0x9e6a('0x38')]+'%'};return _0x231db9;}})});}_0x163cf8=_['merge']({},_0x163cf8,_0x16a10['options']);var _0x1bb8c9={'where':_0x163cf8[_0x9e6a('0x39')]};return db['Dynamics365Field'][_0x9e6a('0x1c')](_0x1bb8c9)[_0x9e6a('0x24')](function(_0x5cf5cc){_0x25a721[_0x9e6a('0x1c')]=_0x5cf5cc;if(_0x16a10[_0x9e6a('0x2e')]['includeAll']){_0x163cf8[_0x9e6a('0x3c')]=[{'all':!![]}];}return db[_0x9e6a('0x29')][_0x9e6a('0x3d')](_0x163cf8);})['then'](function(_0x58103d){_0x25a721[_0x9e6a('0x3e')]=_0x58103d;return _0x25a721;})[_0x9e6a('0x24')](respondWithFilteredResult(_0x5c99fc,_0x163cf8))[_0x9e6a('0x3f')](handleError(_0x5c99fc,null));};exports['show']=function(_0x20dc41,_0x2a56ed){var _0x3ba893={'raw':!![],'where':{'id':_0x20dc41[_0x9e6a('0x40')]['id']}},_0x585bc2={};_0x585bc2[_0x9e6a('0x2d')]=_['keys'](db[_0x9e6a('0x29')]['rawAttributes']);_0x585bc2['query']=_[_0x9e6a('0x2f')](_0x20dc41[_0x9e6a('0x2e')]);_0x585bc2[_0x9e6a('0x30')]=_['intersection'](_0x585bc2['model'],_0x585bc2['query']);_0x3ba893[_0x9e6a('0x32')]=_[_0x9e6a('0x31')](_0x585bc2['model'],qs[_0x9e6a('0x33')](_0x20dc41[_0x9e6a('0x2e')][_0x9e6a('0x33')]));_0x3ba893[_0x9e6a('0x32')]=_0x3ba893[_0x9e6a('0x32')][_0x9e6a('0x41')]?_0x3ba893['attributes']:_0x585bc2[_0x9e6a('0x2d')];if(_0x20dc41[_0x9e6a('0x2e')][_0x9e6a('0x42')]){_0x3ba893['include']=[{'all':!![]}];}_0x3ba893=_['merge']({},_0x3ba893,_0x20dc41[_0x9e6a('0x43')]);return db[_0x9e6a('0x29')][_0x9e6a('0x44')](_0x3ba893)[_0x9e6a('0x24')](handleEntityNotFound(_0x2a56ed,null))[_0x9e6a('0x24')](respondWithResult(_0x2a56ed,null))[_0x9e6a('0x3f')](handleError(_0x2a56ed,null));};exports[_0x9e6a('0x45')]=function(_0x343b2f,_0x242b58){return db[_0x9e6a('0x29')][_0x9e6a('0x45')](_0x343b2f[_0x9e6a('0x46')],{})[_0x9e6a('0x24')](respondWithResult(_0x242b58,0xc9))[_0x9e6a('0x3f')](handleError(_0x242b58,null));};exports['update']=function(_0x1d25dc,_0x12ab50){if(_0x1d25dc[_0x9e6a('0x46')]['id']){delete _0x1d25dc[_0x9e6a('0x46')]['id'];}return db[_0x9e6a('0x29')][_0x9e6a('0x44')]({'where':{'id':_0x1d25dc[_0x9e6a('0x40')]['id']}})[_0x9e6a('0x24')](handleEntityNotFound(_0x12ab50,null))[_0x9e6a('0x24')](saveUpdates(_0x1d25dc[_0x9e6a('0x46')],null))[_0x9e6a('0x24')](respondWithResult(_0x12ab50,null))[_0x9e6a('0x3f')](handleError(_0x12ab50,null));};exports[_0x9e6a('0x23')]=function(_0x7a3608,_0x3a92f9){return db[_0x9e6a('0x29')][_0x9e6a('0x44')]({'where':{'id':_0x7a3608[_0x9e6a('0x40')]['id']}})[_0x9e6a('0x24')](handleEntityNotFound(_0x3a92f9,null))[_0x9e6a('0x24')](removeEntity(_0x3a92f9,null))['catch'](handleError(_0x3a92f9,null));};
\ No newline at end of file
index afe2b84..d5e43b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf588=['util','../../config/logger','moment','request-promise','rimraf','./intDynamics365Field.attributes','exports','Dynamics365Field','int_dynamics365_fields','idField','lodash'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0xf588,0x1cd));var _0x8f58=function(_0x5d6b17,_0xead78a){_0x5d6b17=_0x5d6b17-0x0;var _0x27f93f=_0xf588[_0x5d6b17];return _0x27f93f;};'use strict';var _=require(_0x8f58('0x0'));var util=require(_0x8f58('0x1'));var logger=require(_0x8f58('0x2'))('api');var moment=require(_0x8f58('0x3'));var BPromise=require('bluebird');var rp=require(_0x8f58('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x8f58('0x5'));var config=require('../../config/environment');var attributes=require(_0x8f58('0x6'));module[_0x8f58('0x7')]=function(_0x372b89,_0x158f6){return _0x372b89['define'](_0x8f58('0x8'),attributes,{'tableName':_0x8f58('0x9'),'paranoid':![],'indexes':[{'name':'dynamics365_unique_index','fields':[_0x8f58('0xa'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x342a=['../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./intDynamics365Field.attributes','exports','define','Dynamics365Field','dynamics365_unique_index','idField','FieldId','lodash','util'];(function(_0x12b5b5,_0x591562){var _0xb9b892=function(_0x4d3cf5){while(--_0x4d3cf5){_0x12b5b5['push'](_0x12b5b5['shift']());}};_0xb9b892(++_0x591562);}(_0x342a,0xee));var _0xa342=function(_0x122096,_0x60c295){_0x122096=_0x122096-0x0;var _0x3d1966=_0x342a[_0x122096];return _0x3d1966;};'use strict';var _=require(_0xa342('0x0'));var util=require(_0xa342('0x1'));var logger=require(_0xa342('0x2'))(_0xa342('0x3'));var moment=require(_0xa342('0x4'));var BPromise=require(_0xa342('0x5'));var rp=require(_0xa342('0x6'));var fs=require('fs');var path=require(_0xa342('0x7'));var rimraf=require('rimraf');var config=require(_0xa342('0x8'));var attributes=require(_0xa342('0x9'));module[_0xa342('0xa')]=function(_0x253d5a,_0x21af7d){return _0x253d5a[_0xa342('0xb')](_0xa342('0xc'),attributes,{'tableName':'int_dynamics365_fields','paranoid':![],'indexes':[{'name':_0xa342('0xd'),'fields':[_0xa342('0xe'),_0xa342('0xf')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index aac804f..9d123b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2a0=['request\x20sent','Dynamics365Field,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','Dynamics365Field,\x20%s,\x20%s'];(function(_0x41e96,_0x4c9b00){var _0x2f16cf=function(_0x3c6cb4){while(--_0x3c6cb4){_0x41e96['push'](_0x41e96['shift']());}};_0x2f16cf(++_0x4c9b00);}(_0xe2a0,0x1d3));var _0x0e2a=function(_0x435344,_0x33239b){_0x435344=_0x435344-0x0;var _0xf0fa25=_0xe2a0[_0x435344];return _0xf0fa25;};'use strict';var _=require(_0x0e2a('0x0'));var util=require(_0x0e2a('0x1'));var moment=require('moment');var BPromise=require(_0x0e2a('0x2'));var rs=require(_0x0e2a('0x3'));var fs=require('fs');var Redis=require(_0x0e2a('0x4'));var db=require(_0x0e2a('0x5'))['db'];var utils=require(_0x0e2a('0x6'));var logger=require(_0x0e2a('0x7'))('rpc');var config=require(_0x0e2a('0x8'));var jayson=require(_0x0e2a('0x9'));var client=jayson[_0x0e2a('0xa')][_0x0e2a('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xcf535e,_0x1330b7,_0x587fdf){return new BPromise(function(_0x351022,_0x1c2d90){return client[_0x0e2a('0xc')](_0xcf535e,_0x587fdf)[_0x0e2a('0xd')](function(_0xc4f95f){logger[_0x0e2a('0xe')](_0x0e2a('0xf'),_0x1330b7,_0x0e2a('0x10'));logger['debug'](_0x0e2a('0x11'),_0x1330b7,_0x0e2a('0x10'),JSON[_0x0e2a('0x12')](_0xc4f95f));if(_0xc4f95f[_0x0e2a('0x13')]){if(_0xc4f95f[_0x0e2a('0x13')][_0x0e2a('0x14')]===0x1f4){logger[_0x0e2a('0x13')]('Dynamics365Field,\x20%s,\x20%s',_0x1330b7,_0xc4f95f[_0x0e2a('0x13')]['message']);return _0x1c2d90(_0xc4f95f[_0x0e2a('0x13')]['message']);}logger[_0x0e2a('0x13')](_0x0e2a('0xf'),_0x1330b7,_0xc4f95f[_0x0e2a('0x13')][_0x0e2a('0x15')]);return _0x351022(_0xc4f95f[_0x0e2a('0x13')][_0x0e2a('0x15')]);}else{logger['info'](_0x0e2a('0xf'),_0x1330b7,_0x0e2a('0x10'));_0x351022(_0xc4f95f[_0x0e2a('0x16')][_0x0e2a('0x15')]);}})['catch'](function(_0x20b48c){logger[_0x0e2a('0x13')]('Dynamics365Field,\x20%s,\x20%s',_0x1330b7,_0x20b48c);_0x1c2d90(_0x20b48c);});});}
\ No newline at end of file
+var _0x57d0=['../../config/environment','jayson/promise','client','http','request','then','info','Dynamics365Field,\x20%s,\x20%s','request\x20sent','debug','Dynamics365Field,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','moment','randomstring','ioredis','../../config/logger','rpc'];(function(_0x547af,_0x17abff){var _0x22f7f4=function(_0x5f0384){while(--_0x5f0384){_0x547af['push'](_0x547af['shift']());}};_0x22f7f4(++_0x17abff);}(_0x57d0,0x6d));var _0x057d=function(_0x424a9a,_0x2dd9af){_0x424a9a=_0x424a9a-0x0;var _0xa7831c=_0x57d0[_0x424a9a];return _0xa7831c;};'use strict';var _=require(_0x057d('0x0'));var util=require('util');var moment=require(_0x057d('0x1'));var BPromise=require('bluebird');var rs=require(_0x057d('0x2'));var fs=require('fs');var Redis=require(_0x057d('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x057d('0x4'))(_0x057d('0x5'));var config=require(_0x057d('0x6'));var jayson=require(_0x057d('0x7'));var client=jayson[_0x057d('0x8')][_0x057d('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x566148,_0x4e2a61,_0x3f819d){return new BPromise(function(_0x5d8f6d,_0x1d8cd5){return client[_0x057d('0xa')](_0x566148,_0x3f819d)[_0x057d('0xb')](function(_0xadb980){logger[_0x057d('0xc')](_0x057d('0xd'),_0x4e2a61,_0x057d('0xe'));logger[_0x057d('0xf')](_0x057d('0x10'),_0x4e2a61,_0x057d('0xe'),JSON[_0x057d('0x11')](_0xadb980));if(_0xadb980[_0x057d('0x12')]){if(_0xadb980[_0x057d('0x12')][_0x057d('0x13')]===0x1f4){logger[_0x057d('0x12')]('Dynamics365Field,\x20%s,\x20%s',_0x4e2a61,_0xadb980['error'][_0x057d('0x14')]);return _0x1d8cd5(_0xadb980[_0x057d('0x12')][_0x057d('0x14')]);}logger['error'](_0x057d('0xd'),_0x4e2a61,_0xadb980['error'][_0x057d('0x14')]);return _0x5d8f6d(_0xadb980['error'][_0x057d('0x14')]);}else{logger[_0x057d('0xc')](_0x057d('0xd'),_0x4e2a61,_0x057d('0xe'));_0x5d8f6d(_0xadb980[_0x057d('0x15')][_0x057d('0x14')]);}})[_0x057d('0x16')](function(_0x4ae001){logger[_0x057d('0x12')](_0x057d('0xd'),_0x4e2a61,_0x4ae001);_0x1d8cd5(_0x4ae001);});});}
\ No newline at end of file
index 4e4ef20..2584faf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc827=['/:id/configurations','getConfigurations','/:id/fields','getFields','post','put','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./intFreshdeskAccount.controller','get','isAuthenticated','index','/:id','show'];(function(_0x290d3f,_0x4ebeb7){var _0x7f91e6=function(_0x152461){while(--_0x152461){_0x290d3f['push'](_0x290d3f['shift']());}};_0x7f91e6(++_0x4ebeb7);}(_0xc827,0x1d6));var _0x7c82=function(_0x575358,_0x2bc7c2){_0x575358=_0x575358-0x0;var _0x2e36a6=_0xc827[_0x575358];return _0x2e36a6;};'use strict';var multer=require(_0x7c82('0x0'));var util=require(_0x7c82('0x1'));var path=require(_0x7c82('0x2'));var timeout=require(_0x7c82('0x3'));var express=require('express');var router=express[_0x7c82('0x4')]();var fs_extra=require(_0x7c82('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x7c82('0x6'));var config=require(_0x7c82('0x7'));var controller=require(_0x7c82('0x8'));router[_0x7c82('0x9')]('/',auth[_0x7c82('0xa')](),controller[_0x7c82('0xb')]);router[_0x7c82('0x9')](_0x7c82('0xc'),auth[_0x7c82('0xa')](),controller[_0x7c82('0xd')]);router[_0x7c82('0x9')](_0x7c82('0xe'),auth['isAuthenticated'](),controller[_0x7c82('0xf')]);router[_0x7c82('0x9')](_0x7c82('0x10'),auth[_0x7c82('0xa')](),controller[_0x7c82('0x11')]);router[_0x7c82('0x12')]('/',auth[_0x7c82('0xa')](),controller['create']);router['post'](_0x7c82('0xe'),auth[_0x7c82('0xa')](),controller['addConfiguration']);router[_0x7c82('0x13')](_0x7c82('0xc'),auth[_0x7c82('0xa')](),controller['update']);router['delete'](_0x7c82('0xc'),auth[_0x7c82('0xa')](),controller[_0x7c82('0x14')]);module[_0x7c82('0x15')]=router;
\ No newline at end of file
+var _0x39b5=['/:id/configurations','/:id/fields','post','create','addConfiguration','update','delete','/:id','destroy','exports','util','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','./intFreshdeskAccount.controller','get','isAuthenticated','index'];(function(_0x3929e2,_0x4291e0){var _0x290b5f=function(_0x303623){while(--_0x303623){_0x3929e2['push'](_0x3929e2['shift']());}};_0x290b5f(++_0x4291e0);}(_0x39b5,0x160));var _0x539b=function(_0x6a8861,_0x2e8b81){_0x6a8861=_0x6a8861-0x0;var _0x4b3e29=_0x39b5[_0x6a8861];return _0x4b3e29;};'use strict';var multer=require('multer');var util=require(_0x539b('0x0'));var path=require('path');var timeout=require(_0x539b('0x1'));var express=require('express');var router=express[_0x539b('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x539b('0x3'));var interaction=require(_0x539b('0x4'));var config=require('../../config/environment');var controller=require(_0x539b('0x5'));router[_0x539b('0x6')]('/',auth[_0x539b('0x7')](),controller[_0x539b('0x8')]);router[_0x539b('0x6')]('/:id',auth[_0x539b('0x7')](),controller['show']);router[_0x539b('0x6')](_0x539b('0x9'),auth[_0x539b('0x7')](),controller['getConfigurations']);router[_0x539b('0x6')](_0x539b('0xa'),auth[_0x539b('0x7')](),controller['getFields']);router[_0x539b('0xb')]('/',auth['isAuthenticated'](),controller[_0x539b('0xc')]);router[_0x539b('0xb')](_0x539b('0x9'),auth[_0x539b('0x7')](),controller[_0x539b('0xd')]);router['put']('/:id',auth[_0x539b('0x7')](),controller[_0x539b('0xe')]);router[_0x539b('0xf')](_0x539b('0x10'),auth['isAuthenticated'](),controller[_0x539b('0x11')]);module[_0x539b('0x12')]=router;
\ No newline at end of file
index ba1f5cc..6b7cb96 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb5=['remoteUri','exports','STRING','username'];(function(_0x4884a7,_0x18e38a){var _0x56b60e=function(_0x2ba8a3){while(--_0x2ba8a3){_0x4884a7['push'](_0x4884a7['shift']());}};_0x56b60e(++_0x18e38a);}(_0xadb5,0xad));var _0x5adb=function(_0x297350,_0x2f4dcf){_0x297350=_0x297350-0x0;var _0x95fe72=_0xadb5[_0x297350];return _0x95fe72;};'use strict';var Sequelize=require('sequelize');module[_0x5adb('0x0')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x5adb('0x1')]},'username':{'type':Sequelize[_0x5adb('0x1')],'unique':_0x5adb('0x2')},'apiKey':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0x5adb('0x1')],'unique':_0x5adb('0x3')},'serverUrl':{'type':Sequelize[_0x5adb('0x1')],'allowNull':![]}};
\ No newline at end of file
+var _0x627e=['STRING','remoteUri','sequelize','exports'];(function(_0x517440,_0x253d15){var _0x5793bb=function(_0x16ab05){while(--_0x16ab05){_0x517440['push'](_0x517440['shift']());}};_0x5793bb(++_0x253d15);}(_0x627e,0x14a));var _0xe627=function(_0x259c02,_0x40a1cb){_0x259c02=_0x259c02-0x0;var _0xd12b06=_0x627e[_0x259c02];return _0xd12b06;};'use strict';var Sequelize=require(_0xe627('0x0'));module[_0xe627('0x1')]={'name':{'type':Sequelize[_0xe627('0x2')]},'description':{'type':Sequelize[_0xe627('0x2')]},'username':{'type':Sequelize[_0xe627('0x2')],'unique':'username'},'apiKey':{'type':Sequelize[_0xe627('0x2')]},'remoteUri':{'type':Sequelize[_0xe627('0x2')],'unique':_0xe627('0x3')},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
index db67455..2da5334 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x938c=['query','filters','intersection','attributes','fields','length','hasOwnProperty','limit','order','where','filter','merge','include','findAll','rows','catch','params','includeAll','options','body','find','getConfigurations','FreshdeskConfiguration','sort','pick','addConfiguration','findOne','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','create','FreshdeskField','getFields','remoteUri','apiKey','slice','substring','lastIndexOf','format','api/v2/ticket_fields','Basic\x20%s','%s:X','toString','requester','description','group','company','remove','includes','default','custom_text','custom_dropdown','label','choices','capitalize','test','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','statusCode','eml-format','rimraf','fast-json-patch','bluebird','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','desk.js','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','apply','reject','save','update','destroy','then','error','stack','name','send','index','FreshdeskAccount','rawAttributes','fieldName','type','key','model','map','keys'];(function(_0x3b0ab9,_0x4185f1){var _0x226c29=function(_0x236629){while(--_0x236629){_0x3b0ab9['push'](_0x3b0ab9['shift']());}};_0x226c29(++_0x4185f1);}(_0x938c,0x11f));var _0xc938=function(_0x348062,_0x45684b){_0x348062=_0x348062-0x0;var _0x2cf0fd=_0x938c[_0x348062];return _0x2cf0fd;};'use strict';var emlformat=require(_0xc938('0x0'));var rimraf=require(_0xc938('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xc938('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xc938('0x3'));var Mustache=require('mustache');var util=require(_0xc938('0x4'));var path=require(_0xc938('0x5'));var sox=require(_0xc938('0x6'));var csv=require(_0xc938('0x7'));var ejs=require(_0xc938('0x8'));var fs=require('fs');var fs_extra=require(_0xc938('0x9'));var _=require('lodash');var squel=require(_0xc938('0xa'));var crypto=require(_0xc938('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xc938('0xc'));var toCsv=require(_0xc938('0x7'));var querystring=require('querystring');var Papa=require(_0xc938('0xd'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xc938('0xe'));var as=require(_0xc938('0xf'));var hardwareService=require(_0xc938('0x10'));var logger=require('../../config/logger')(_0xc938('0x11'));var utils=require(_0xc938('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0xc938('0x13'));var db=require('../../mysqldb')['db'];var integrations=require(_0xc938('0x14'));function respondWithStatusCode(_0x134bef,_0x3ec5e5){_0x3ec5e5=_0x3ec5e5||0xcc;return function(_0x5f4eca){if(_0x5f4eca){return _0x134bef[_0xc938('0x15')](_0x3ec5e5);}return _0x134bef[_0xc938('0x16')](_0x3ec5e5)[_0xc938('0x17')]();};}function respondWithResult(_0x4d9dab,_0x4bc776){_0x4bc776=_0x4bc776||0xc8;return function(_0x4fd0bf){if(_0x4fd0bf){return _0x4d9dab[_0xc938('0x16')](_0x4bc776)[_0xc938('0x18')](_0x4fd0bf);}};}function respondWithFilteredResult(_0x34e3a7,_0x52a56b){return function(_0x143c42){if(_0x143c42){var _0x4df453=typeof _0x52a56b[_0xc938('0x19')]===_0xc938('0x1a')&&typeof _0x52a56b['limit']===_0xc938('0x1a');var _0x2c1690=_0x143c42['count'];var _0x67e1d8=_0x4df453?0x0:_0x52a56b['offset'];var _0xe23b6b=_0x4df453?_0x143c42[_0xc938('0x1b')]:_0x52a56b[_0xc938('0x19')]+_0x52a56b['limit'];var _0x1d4e2e;if(_0xe23b6b>=_0x2c1690){_0xe23b6b=_0x2c1690;_0x1d4e2e=0xc8;}else{_0x1d4e2e=0xce;}_0x34e3a7[_0xc938('0x16')](_0x1d4e2e);return _0x34e3a7[_0xc938('0x1c')](_0xc938('0x1d'),_0x67e1d8+'-'+_0xe23b6b+'/'+_0x2c1690)[_0xc938('0x18')](_0x143c42);}return null;};}function patchUpdates(_0x474d1b){return function(_0x2dab15){try{jsonpatch[_0xc938('0x1e')](_0x2dab15,_0x474d1b,!![]);}catch(_0x58deae){return BPromise[_0xc938('0x1f')](_0x58deae);}return _0x2dab15[_0xc938('0x20')]();};}function saveUpdates(_0x5858b7,_0xa43304){return function(_0x47e2fe){if(_0x47e2fe){return _0x47e2fe[_0xc938('0x21')](_0x5858b7)['then'](function(_0x196481){return _0x196481;});}return null;};}function removeEntity(_0x388391,_0x20734d){return function(_0x5cd674){if(_0x5cd674){return _0x5cd674[_0xc938('0x22')]()[_0xc938('0x23')](function(){_0x388391['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x219ec4,_0x136f6f){return function(_0x2de7af){if(!_0x2de7af){_0x219ec4[_0xc938('0x15')](0x194);}return _0x2de7af;};}function handleError(_0x21194d,_0x3bcf2b){_0x3bcf2b=_0x3bcf2b||0x1f4;return function(_0xb4364c){logger[_0xc938('0x24')](_0xb4364c[_0xc938('0x25')]);if(_0xb4364c[_0xc938('0x26')]){delete _0xb4364c[_0xc938('0x26')];}_0x21194d[_0xc938('0x16')](_0x3bcf2b)[_0xc938('0x27')](_0xb4364c);};}exports[_0xc938('0x28')]=function(_0x2c8a49,_0x4c5278){var _0xf19e7b={},_0x3765a6={},_0x26ff50={'count':0x0,'rows':[]};var _0x349bb4=_['map'](db[_0xc938('0x29')][_0xc938('0x2a')],function(_0x1bc0a8){return{'name':_0x1bc0a8[_0xc938('0x2b')],'type':_0x1bc0a8[_0xc938('0x2c')][_0xc938('0x2d')]};});_0x3765a6[_0xc938('0x2e')]=_[_0xc938('0x2f')](_0x349bb4,_0xc938('0x26'));_0x3765a6['query']=_[_0xc938('0x30')](_0x2c8a49[_0xc938('0x31')]);_0x3765a6[_0xc938('0x32')]=_[_0xc938('0x33')](_0x3765a6[_0xc938('0x2e')],_0x3765a6[_0xc938('0x31')]);_0xf19e7b[_0xc938('0x34')]=_[_0xc938('0x33')](_0x3765a6[_0xc938('0x2e')],qs[_0xc938('0x35')](_0x2c8a49[_0xc938('0x31')][_0xc938('0x35')]));_0xf19e7b['attributes']=_0xf19e7b[_0xc938('0x34')][_0xc938('0x36')]?_0xf19e7b[_0xc938('0x34')]:_0x3765a6['model'];if(!_0x2c8a49[_0xc938('0x31')][_0xc938('0x37')]('nolimit')){_0xf19e7b[_0xc938('0x38')]=qs['limit'](_0x2c8a49['query'][_0xc938('0x38')]);_0xf19e7b[_0xc938('0x19')]=qs['offset'](_0x2c8a49[_0xc938('0x31')][_0xc938('0x19')]);}_0xf19e7b[_0xc938('0x39')]=qs['sort'](_0x2c8a49[_0xc938('0x31')]['sort']);_0xf19e7b[_0xc938('0x3a')]=qs[_0xc938('0x32')](_['pick'](_0x2c8a49['query'],_0x3765a6['filters']),_0x349bb4);if(_0x2c8a49[_0xc938('0x31')][_0xc938('0x3b')]){_0xf19e7b[_0xc938('0x3a')]=_[_0xc938('0x3c')](_0xf19e7b[_0xc938('0x3a')],{'$or':_[_0xc938('0x2f')](_0x349bb4,function(_0x3a4bd3){if(_0x3a4bd3[_0xc938('0x2c')]!=='VIRTUAL'){var _0x12aa77={};_0x12aa77[_0x3a4bd3[_0xc938('0x26')]]={'$like':'%'+_0x2c8a49[_0xc938('0x31')][_0xc938('0x3b')]+'%'};return _0x12aa77;}})});}_0xf19e7b=_['merge']({},_0xf19e7b,_0x2c8a49['options']);var _0x5683ff={'where':_0xf19e7b[_0xc938('0x3a')]};return db[_0xc938('0x29')][_0xc938('0x1b')](_0x5683ff)[_0xc938('0x23')](function(_0x3d943e){_0x26ff50[_0xc938('0x1b')]=_0x3d943e;if(_0x2c8a49[_0xc938('0x31')]['includeAll']){_0xf19e7b[_0xc938('0x3d')]=[{'all':!![]}];}return db[_0xc938('0x29')][_0xc938('0x3e')](_0xf19e7b);})[_0xc938('0x23')](function(_0x52b214){_0x26ff50[_0xc938('0x3f')]=_0x52b214;return _0x26ff50;})['then'](respondWithFilteredResult(_0x4c5278,_0xf19e7b))[_0xc938('0x40')](handleError(_0x4c5278,null));};exports['show']=function(_0x2a6a62,_0x303360){var _0x3c4667={'raw':![],'where':{'id':_0x2a6a62[_0xc938('0x41')]['id']}},_0x17897e={};_0x17897e[_0xc938('0x2e')]=_[_0xc938('0x30')](db['FreshdeskAccount'][_0xc938('0x2a')]);_0x17897e[_0xc938('0x31')]=_[_0xc938('0x30')](_0x2a6a62[_0xc938('0x31')]);_0x17897e[_0xc938('0x32')]=_[_0xc938('0x33')](_0x17897e[_0xc938('0x2e')],_0x17897e[_0xc938('0x31')]);_0x3c4667[_0xc938('0x34')]=_[_0xc938('0x33')](_0x17897e[_0xc938('0x2e')],qs[_0xc938('0x35')](_0x2a6a62[_0xc938('0x31')]['fields']));_0x3c4667['attributes']=_0x3c4667['attributes']['length']?_0x3c4667[_0xc938('0x34')]:_0x17897e[_0xc938('0x2e')];if(_0x2a6a62[_0xc938('0x31')][_0xc938('0x42')]){_0x3c4667[_0xc938('0x3d')]=[{'all':!![]}];}_0x3c4667=_[_0xc938('0x3c')]({},_0x3c4667,_0x2a6a62[_0xc938('0x43')]);return db[_0xc938('0x29')]['find'](_0x3c4667)['then'](handleEntityNotFound(_0x303360,null))[_0xc938('0x23')](respondWithResult(_0x303360,null))[_0xc938('0x40')](handleError(_0x303360,null));};exports['create']=function(_0x419d6d,_0x2dba29){return db[_0xc938('0x29')]['create'](_0x419d6d[_0xc938('0x44')],{})[_0xc938('0x23')](respondWithResult(_0x2dba29,0xc9))[_0xc938('0x40')](handleError(_0x2dba29,null));};exports[_0xc938('0x21')]=function(_0x390b40,_0x4eb82f){if(_0x390b40['body']['id']){delete _0x390b40[_0xc938('0x44')]['id'];}return db['FreshdeskAccount'][_0xc938('0x45')]({'where':{'id':_0x390b40[_0xc938('0x41')]['id']}})['then'](handleEntityNotFound(_0x4eb82f,null))[_0xc938('0x23')](saveUpdates(_0x390b40[_0xc938('0x44')],null))['then'](respondWithResult(_0x4eb82f,null))[_0xc938('0x40')](handleError(_0x4eb82f,null));};exports[_0xc938('0x22')]=function(_0x4926ba,_0x2fe7fc){return db['FreshdeskAccount'][_0xc938('0x45')]({'where':{'id':_0x4926ba[_0xc938('0x41')]['id']}})['then'](handleEntityNotFound(_0x2fe7fc,null))[_0xc938('0x23')](removeEntity(_0x2fe7fc,null))[_0xc938('0x40')](handleError(_0x2fe7fc,null));};exports[_0xc938('0x46')]=function(_0x17c9e5,_0x1f2223,_0x19419d){var _0x5e5f96={};var _0xcd3111={};var _0xd34391;var _0x28bbfd;return db['FreshdeskAccount']['findOne']({'where':{'id':_0x17c9e5['params']['id']}})[_0xc938('0x23')](handleEntityNotFound(_0x1f2223,null))[_0xc938('0x23')](function(_0x43af75){if(_0x43af75){_0xd34391=_0x43af75;_0xcd3111[_0xc938('0x2e')]=_[_0xc938('0x30')](db[_0xc938('0x47')][_0xc938('0x2a')]);_0xcd3111['query']=_['keys'](_0x17c9e5[_0xc938('0x31')]);_0xcd3111[_0xc938('0x32')]=_[_0xc938('0x33')](_0xcd3111[_0xc938('0x2e')],_0xcd3111[_0xc938('0x31')]);_0x5e5f96[_0xc938('0x34')]=_['intersection'](_0xcd3111['model'],qs[_0xc938('0x35')](_0x17c9e5[_0xc938('0x31')][_0xc938('0x35')]));_0x5e5f96[_0xc938('0x34')]=_0x5e5f96[_0xc938('0x34')][_0xc938('0x36')]?_0x5e5f96[_0xc938('0x34')]:_0xcd3111['model'];_0x5e5f96[_0xc938('0x39')]=qs[_0xc938('0x48')](_0x17c9e5['query'][_0xc938('0x48')]);_0x5e5f96[_0xc938('0x3a')]=qs[_0xc938('0x32')](_[_0xc938('0x49')](_0x17c9e5[_0xc938('0x31')],_0xcd3111['filters']));if(_0x17c9e5[_0xc938('0x31')]['filter']){_0x5e5f96[_0xc938('0x3a')]=_[_0xc938('0x3c')](_0x5e5f96[_0xc938('0x3a')],{'$or':_[_0xc938('0x2f')](_0x5e5f96[_0xc938('0x34')],function(_0x16aaad){var _0xae391c={};_0xae391c[_0x16aaad]={'$like':'%'+_0x17c9e5[_0xc938('0x31')]['filter']+'%'};return _0xae391c;})});}_0x5e5f96=_[_0xc938('0x3c')]({},_0x5e5f96,_0x17c9e5[_0xc938('0x43')]);return _0xd34391[_0xc938('0x46')](_0x5e5f96);}})[_0xc938('0x23')](function(_0x416837){if(_0x416837){_0x28bbfd=_0x416837[_0xc938('0x36')];if(!_0x17c9e5[_0xc938('0x31')][_0xc938('0x37')]('nolimit')){_0x5e5f96[_0xc938('0x38')]=qs[_0xc938('0x38')](_0x17c9e5[_0xc938('0x31')]['limit']);_0x5e5f96[_0xc938('0x19')]=qs[_0xc938('0x19')](_0x17c9e5[_0xc938('0x31')][_0xc938('0x19')]);}return _0xd34391[_0xc938('0x46')](_0x5e5f96);}})[_0xc938('0x23')](function(_0x397a1e){if(_0x397a1e){return _0x397a1e?{'count':_0x28bbfd,'rows':_0x397a1e}:null;}})[_0xc938('0x23')](respondWithResult(_0x1f2223,null))[_0xc938('0x40')](handleError(_0x1f2223,null));};exports[_0xc938('0x4a')]=function(_0x5b37e0,_0x44e70e,_0x565e79){if(_0x5b37e0[_0xc938('0x44')]['id']){delete _0x5b37e0['body']['id'];}return db[_0xc938('0x29')][_0xc938('0x4b')]({'where':{'id':_0x5b37e0['params']['id']}})[_0xc938('0x23')](handleEntityNotFound(_0x44e70e,null))[_0xc938('0x23')](function(_0x15250f){if(_0x15250f){_0x5b37e0[_0xc938('0x44')][_0xc938('0x4c')]=_0x15250f['id'];_0x5b37e0['body'][_0xc938('0x4d')]=integrations[_0xc938('0x4e')](_0x5b37e0[_0xc938('0x44')][_0xc938('0x4f')],_0x5b37e0[_0xc938('0x44')][_0xc938('0x2c')]);_0x5b37e0[_0xc938('0x44')][_0xc938('0x50')]=integrations[_0xc938('0x51')](_0x5b37e0[_0xc938('0x44')][_0xc938('0x4f')],_0x5b37e0[_0xc938('0x44')][_0xc938('0x2c')]);return db[_0xc938('0x47')][_0xc938('0x52')](_0x5b37e0[_0xc938('0x44')],{'include':[{'model':db[_0xc938('0x53')],'as':_0xc938('0x4d')},{'model':db[_0xc938('0x53')],'as':_0xc938('0x50')}]});}return null;})['then'](respondWithResult(_0x44e70e,null))[_0xc938('0x40')](handleError(_0x44e70e,null));};exports[_0xc938('0x54')]=function(_0x59687c,_0x2cee40,_0x4dbc47){var _0x3263b3='';return db['FreshdeskAccount'][_0xc938('0x4b')]({'where':{'id':_0x59687c['params']['id']},'attributes':['id',_0xc938('0x55'),_0xc938('0x56')]})[_0xc938('0x23')](handleEntityNotFound(_0x2cee40,null))[_0xc938('0x23')](function(_0x1bf986){if(_0x1bf986){_0x3263b3=_0x1bf986[_0xc938('0x55')];var _0x339464=_0x3263b3[_0xc938('0x57')](-0x1);if(_0x339464==='/'){_0x3263b3=_0x3263b3[_0xc938('0x58')](0x0,_0x3263b3[_0xc938('0x59')](_0x339464));}return rp({'method':'GET','uri':util[_0xc938('0x5a')]('%s/%s',_0x3263b3,_0xc938('0x5b')),'headers':{'Authorization':util[_0xc938('0x5a')](_0xc938('0x5c'),new Buffer(util[_0xc938('0x5a')](_0xc938('0x5d'),_0x1bf986['apiKey']))[_0xc938('0x5e')]('base64'))},'json':!![]});}})[_0xc938('0x23')](function(_0xdd54dd){if(_0xdd54dd){var _0x6367bc=[_0xc938('0x5f'),'subject','agent',_0xc938('0x60'),_0xc938('0x16'),'priority',_0xc938('0x61'),'source','ticket_type','group',_0xc938('0x62')];_[_0xc938('0x63')](_0xdd54dd,function(_0xba845c){return _0x6367bc[_0xc938('0x64')](_0xba845c['name'])||!_0xba845c[_0xc938('0x65')]&&_0xba845c[_0xc938('0x2c')]!==_0xc938('0x66')&&_0xba845c['type']!==_0xc938('0x67');});return{'count':_0xdd54dd[_0xc938('0x36')],'rows':_[_0xc938('0x2f')](_0xdd54dd,function(_0x122b4d){return{'id':_0x122b4d[_0xc938('0x26')],'name':_0x122b4d[_0xc938('0x68')],'custom':!_0x122b4d['default'],'options':_0x122b4d[_0xc938('0x69')]?_[_0xc938('0x2f')](_0x122b4d['choices'],function(_0x46f35c){return{'name':_[_0xc938('0x6a')](_0x46f35c),'value':_0x46f35c};}):[]};})};}})[_0xc938('0x23')](respondWithResult(_0x2cee40,null))[_0xc938('0x40')](function(_0xbbce34){var _0x541705=_0x59687c['query'][_0xc938('0x6b')]?0x1f4:_0xbbce34['statusCode']||0x1f4;logger[_0xc938('0x24')](_0xc938('0x6c'),_0xc938('0x54'),_0x541705,JSON[_0xc938('0x6d')](_0xbbce34));delete _0xbbce34[_0xc938('0x26')];if(_0x541705===0x191){_0x541705=0x190;}_0x2cee40[_0xc938('0x16')](_0x541705)[_0xc938('0x27')](_0x59687c['query']['test']?{'message':_0xc938('0x6e'),'statusCode':_0xbbce34[_0xc938('0x6f')]}:_0xbbce34);});};
\ No newline at end of file
+var _0xceb0=['channel','Descriptions','getDescriptions','FreshdeskConfiguration','FreshdeskField','remoteUri','apiKey','substring','lastIndexOf','GET','%s/%s','api/v2/ticket_fields','format','Basic\x20%s','base64','requester','subject','description','group','ticket_type','company','remove','includes','default','custom_text','custom_dropdown','label','choices','capitalize','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','getFields','stringify','Wrong\x20credentials','request-promise','bluebird','mustache','util','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','../../components/integrations/configuration','sendStatus','status','json','undefined','limit','count','offset','set','Content-Range','reject','update','then','end','error','stack','name','send','index','map','FreshdeskAccount','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','sort','pick','filter','merge','where','VIRTUAL','options','includeAll','include','findAll','rows','show','params','find','catch','create','body','getConfigurations','findOne','order','addConfiguration','Subjects','getSubjects'];(function(_0x40d4a2,_0x26bc15){var _0x48f13f=function(_0x45a3b9){while(--_0x45a3b9){_0x40d4a2['push'](_0x40d4a2['shift']());}};_0x48f13f(++_0x26bc15);}(_0xceb0,0x173));var _0x0ceb=function(_0x374cc6,_0xeec748){_0x374cc6=_0x374cc6-0x0;var _0x51e0ad=_0xceb0[_0x374cc6];return _0x51e0ad;};'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(_0x0ceb('0x0'));var moment=require('moment');var BPromise=require(_0x0ceb('0x1'));var Mustache=require(_0x0ceb('0x2'));var util=require(_0x0ceb('0x3'));var path=require('path');var sox=require('sox');var csv=require(_0x0ceb('0x4'));var ejs=require(_0x0ceb('0x5'));var fs=require('fs');var fs_extra=require(_0x0ceb('0x6'));var _=require('lodash');var squel=require(_0x0ceb('0x7'));var crypto=require(_0x0ceb('0x8'));var jsforce=require('jsforce');var deskjs=require(_0x0ceb('0x9'));var toCsv=require('to-csv');var querystring=require(_0x0ceb('0xa'));var Papa=require(_0x0ceb('0xb'));var Redis=require(_0x0ceb('0xc'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x0ceb('0xd'));var hardwareService=require(_0x0ceb('0xe'));var logger=require(_0x0ceb('0xf'))(_0x0ceb('0x10'));var utils=require(_0x0ceb('0x11'));var config=require(_0x0ceb('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0x0ceb('0x13'))['db'];var integrations=require(_0x0ceb('0x14'));function respondWithStatusCode(_0x358801,_0x26cb7a){_0x26cb7a=_0x26cb7a||0xcc;return function(_0x41f120){if(_0x41f120){return _0x358801[_0x0ceb('0x15')](_0x26cb7a);}return _0x358801[_0x0ceb('0x16')](_0x26cb7a)['end']();};}function respondWithResult(_0x416fbb,_0x54a173){_0x54a173=_0x54a173||0xc8;return function(_0x55620b){if(_0x55620b){return _0x416fbb[_0x0ceb('0x16')](_0x54a173)[_0x0ceb('0x17')](_0x55620b);}};}function respondWithFilteredResult(_0x218d6e,_0x536bdd){return function(_0x33a190){if(_0x33a190){var _0xc02d04=typeof _0x536bdd['offset']===_0x0ceb('0x18')&&typeof _0x536bdd[_0x0ceb('0x19')]===_0x0ceb('0x18');var _0x436a7c=_0x33a190[_0x0ceb('0x1a')];var _0x27fbeb=_0xc02d04?0x0:_0x536bdd[_0x0ceb('0x1b')];var _0x2a2eae=_0xc02d04?_0x33a190[_0x0ceb('0x1a')]:_0x536bdd[_0x0ceb('0x1b')]+_0x536bdd[_0x0ceb('0x19')];var _0x18f845;if(_0x2a2eae>=_0x436a7c){_0x2a2eae=_0x436a7c;_0x18f845=0xc8;}else{_0x18f845=0xce;}_0x218d6e[_0x0ceb('0x16')](_0x18f845);return _0x218d6e[_0x0ceb('0x1c')](_0x0ceb('0x1d'),_0x27fbeb+'-'+_0x2a2eae+'/'+_0x436a7c)[_0x0ceb('0x17')](_0x33a190);}return null;};}function patchUpdates(_0x241c07){return function(_0x5e13ad){try{jsonpatch['apply'](_0x5e13ad,_0x241c07,!![]);}catch(_0x25c48a){return BPromise[_0x0ceb('0x1e')](_0x25c48a);}return _0x5e13ad['save']();};}function saveUpdates(_0x2fd374,_0x54fce7){return function(_0x38a716){if(_0x38a716){return _0x38a716[_0x0ceb('0x1f')](_0x2fd374)[_0x0ceb('0x20')](function(_0x17efd7){return _0x17efd7;});}return null;};}function removeEntity(_0x27e058,_0x4a2b69){return function(_0x5c41dd){if(_0x5c41dd){return _0x5c41dd['destroy']()[_0x0ceb('0x20')](function(){_0x27e058['status'](0xcc)[_0x0ceb('0x21')]();});}};}function handleEntityNotFound(_0x4c3e4c,_0x45f2fe){return function(_0xa8be2a){if(!_0xa8be2a){_0x4c3e4c[_0x0ceb('0x15')](0x194);}return _0xa8be2a;};}function handleError(_0x72e51,_0x5a15ee){_0x5a15ee=_0x5a15ee||0x1f4;return function(_0x106916){logger[_0x0ceb('0x22')](_0x106916[_0x0ceb('0x23')]);if(_0x106916[_0x0ceb('0x24')]){delete _0x106916[_0x0ceb('0x24')];}_0x72e51['status'](_0x5a15ee)[_0x0ceb('0x25')](_0x106916);};}exports[_0x0ceb('0x26')]=function(_0x3c934b,_0x4427b8){var _0x1ca4cb={},_0x16265d={},_0x58aa8b={'count':0x0,'rows':[]};var _0x30adcb=_[_0x0ceb('0x27')](db[_0x0ceb('0x28')][_0x0ceb('0x29')],function(_0x331e98){return{'name':_0x331e98[_0x0ceb('0x2a')],'type':_0x331e98[_0x0ceb('0x2b')][_0x0ceb('0x2c')]};});_0x16265d[_0x0ceb('0x2d')]=_[_0x0ceb('0x27')](_0x30adcb,'name');_0x16265d[_0x0ceb('0x2e')]=_[_0x0ceb('0x2f')](_0x3c934b['query']);_0x16265d[_0x0ceb('0x30')]=_[_0x0ceb('0x31')](_0x16265d[_0x0ceb('0x2d')],_0x16265d['query']);_0x1ca4cb[_0x0ceb('0x32')]=_[_0x0ceb('0x31')](_0x16265d[_0x0ceb('0x2d')],qs[_0x0ceb('0x33')](_0x3c934b[_0x0ceb('0x2e')][_0x0ceb('0x33')]));_0x1ca4cb[_0x0ceb('0x32')]=_0x1ca4cb[_0x0ceb('0x32')][_0x0ceb('0x34')]?_0x1ca4cb[_0x0ceb('0x32')]:_0x16265d[_0x0ceb('0x2d')];if(!_0x3c934b[_0x0ceb('0x2e')][_0x0ceb('0x35')]('nolimit')){_0x1ca4cb[_0x0ceb('0x19')]=qs[_0x0ceb('0x19')](_0x3c934b[_0x0ceb('0x2e')][_0x0ceb('0x19')]);_0x1ca4cb[_0x0ceb('0x1b')]=qs[_0x0ceb('0x1b')](_0x3c934b['query'][_0x0ceb('0x1b')]);}_0x1ca4cb['order']=qs['sort'](_0x3c934b['query'][_0x0ceb('0x36')]);_0x1ca4cb['where']=qs[_0x0ceb('0x30')](_[_0x0ceb('0x37')](_0x3c934b['query'],_0x16265d[_0x0ceb('0x30')]),_0x30adcb);if(_0x3c934b[_0x0ceb('0x2e')][_0x0ceb('0x38')]){_0x1ca4cb['where']=_[_0x0ceb('0x39')](_0x1ca4cb[_0x0ceb('0x3a')],{'$or':_[_0x0ceb('0x27')](_0x30adcb,function(_0x8b0683){if(_0x8b0683[_0x0ceb('0x2b')]!==_0x0ceb('0x3b')){var _0x31d20e={};_0x31d20e[_0x8b0683[_0x0ceb('0x24')]]={'$like':'%'+_0x3c934b[_0x0ceb('0x2e')][_0x0ceb('0x38')]+'%'};return _0x31d20e;}})});}_0x1ca4cb=_[_0x0ceb('0x39')]({},_0x1ca4cb,_0x3c934b[_0x0ceb('0x3c')]);var _0x3c3813={'where':_0x1ca4cb[_0x0ceb('0x3a')]};return db[_0x0ceb('0x28')][_0x0ceb('0x1a')](_0x3c3813)[_0x0ceb('0x20')](function(_0x3de5c7){_0x58aa8b[_0x0ceb('0x1a')]=_0x3de5c7;if(_0x3c934b[_0x0ceb('0x2e')][_0x0ceb('0x3d')]){_0x1ca4cb[_0x0ceb('0x3e')]=[{'all':!![]}];}return db[_0x0ceb('0x28')][_0x0ceb('0x3f')](_0x1ca4cb);})[_0x0ceb('0x20')](function(_0x146bb8){_0x58aa8b[_0x0ceb('0x40')]=_0x146bb8;return _0x58aa8b;})[_0x0ceb('0x20')](respondWithFilteredResult(_0x4427b8,_0x1ca4cb))['catch'](handleError(_0x4427b8,null));};exports[_0x0ceb('0x41')]=function(_0x4d1972,_0x482889){var _0x3d2607={'raw':![],'where':{'id':_0x4d1972[_0x0ceb('0x42')]['id']}},_0x6ad0e3={};_0x6ad0e3['model']=_['keys'](db[_0x0ceb('0x28')][_0x0ceb('0x29')]);_0x6ad0e3[_0x0ceb('0x2e')]=_[_0x0ceb('0x2f')](_0x4d1972[_0x0ceb('0x2e')]);_0x6ad0e3[_0x0ceb('0x30')]=_[_0x0ceb('0x31')](_0x6ad0e3[_0x0ceb('0x2d')],_0x6ad0e3[_0x0ceb('0x2e')]);_0x3d2607['attributes']=_[_0x0ceb('0x31')](_0x6ad0e3[_0x0ceb('0x2d')],qs[_0x0ceb('0x33')](_0x4d1972[_0x0ceb('0x2e')]['fields']));_0x3d2607[_0x0ceb('0x32')]=_0x3d2607['attributes'][_0x0ceb('0x34')]?_0x3d2607['attributes']:_0x6ad0e3[_0x0ceb('0x2d')];if(_0x4d1972[_0x0ceb('0x2e')][_0x0ceb('0x3d')]){_0x3d2607[_0x0ceb('0x3e')]=[{'all':!![]}];}_0x3d2607=_[_0x0ceb('0x39')]({},_0x3d2607,_0x4d1972[_0x0ceb('0x3c')]);return db[_0x0ceb('0x28')][_0x0ceb('0x43')](_0x3d2607)['then'](handleEntityNotFound(_0x482889,null))[_0x0ceb('0x20')](respondWithResult(_0x482889,null))[_0x0ceb('0x44')](handleError(_0x482889,null));};exports['create']=function(_0x3898fe,_0x24efd4){return db[_0x0ceb('0x28')][_0x0ceb('0x45')](_0x3898fe[_0x0ceb('0x46')],{})['then'](respondWithResult(_0x24efd4,0xc9))[_0x0ceb('0x44')](handleError(_0x24efd4,null));};exports[_0x0ceb('0x1f')]=function(_0x1a7c52,_0xf17e0b){if(_0x1a7c52[_0x0ceb('0x46')]['id']){delete _0x1a7c52[_0x0ceb('0x46')]['id'];}return db[_0x0ceb('0x28')][_0x0ceb('0x43')]({'where':{'id':_0x1a7c52[_0x0ceb('0x42')]['id']}})['then'](handleEntityNotFound(_0xf17e0b,null))[_0x0ceb('0x20')](saveUpdates(_0x1a7c52[_0x0ceb('0x46')],null))[_0x0ceb('0x20')](respondWithResult(_0xf17e0b,null))[_0x0ceb('0x44')](handleError(_0xf17e0b,null));};exports['destroy']=function(_0x4aef77,_0x34a427){return db[_0x0ceb('0x28')][_0x0ceb('0x43')]({'where':{'id':_0x4aef77[_0x0ceb('0x42')]['id']}})[_0x0ceb('0x20')](handleEntityNotFound(_0x34a427,null))['then'](removeEntity(_0x34a427,null))[_0x0ceb('0x44')](handleError(_0x34a427,null));};exports[_0x0ceb('0x47')]=function(_0x4c420c,_0x4c70ab,_0x483570){var _0x348381={};var _0x33a79b={};var _0x13fa76;var _0x47c4d6;return db[_0x0ceb('0x28')][_0x0ceb('0x48')]({'where':{'id':_0x4c420c['params']['id']}})[_0x0ceb('0x20')](handleEntityNotFound(_0x4c70ab,null))[_0x0ceb('0x20')](function(_0x2d4947){if(_0x2d4947){_0x13fa76=_0x2d4947;_0x33a79b['model']=_[_0x0ceb('0x2f')](db['FreshdeskConfiguration'][_0x0ceb('0x29')]);_0x33a79b[_0x0ceb('0x2e')]=_[_0x0ceb('0x2f')](_0x4c420c[_0x0ceb('0x2e')]);_0x33a79b[_0x0ceb('0x30')]=_['intersection'](_0x33a79b[_0x0ceb('0x2d')],_0x33a79b[_0x0ceb('0x2e')]);_0x348381[_0x0ceb('0x32')]=_[_0x0ceb('0x31')](_0x33a79b[_0x0ceb('0x2d')],qs[_0x0ceb('0x33')](_0x4c420c[_0x0ceb('0x2e')][_0x0ceb('0x33')]));_0x348381[_0x0ceb('0x32')]=_0x348381[_0x0ceb('0x32')]['length']?_0x348381[_0x0ceb('0x32')]:_0x33a79b[_0x0ceb('0x2d')];_0x348381[_0x0ceb('0x49')]=qs[_0x0ceb('0x36')](_0x4c420c[_0x0ceb('0x2e')][_0x0ceb('0x36')]);_0x348381[_0x0ceb('0x3a')]=qs['filters'](_[_0x0ceb('0x37')](_0x4c420c[_0x0ceb('0x2e')],_0x33a79b[_0x0ceb('0x30')]));if(_0x4c420c[_0x0ceb('0x2e')][_0x0ceb('0x38')]){_0x348381[_0x0ceb('0x3a')]=_[_0x0ceb('0x39')](_0x348381[_0x0ceb('0x3a')],{'$or':_[_0x0ceb('0x27')](_0x348381[_0x0ceb('0x32')],function(_0x42a084){var _0x4d363e={};_0x4d363e[_0x42a084]={'$like':'%'+_0x4c420c[_0x0ceb('0x2e')][_0x0ceb('0x38')]+'%'};return _0x4d363e;})});}_0x348381=_[_0x0ceb('0x39')]({},_0x348381,_0x4c420c[_0x0ceb('0x3c')]);return _0x13fa76[_0x0ceb('0x47')](_0x348381);}})['then'](function(_0x5afd08){if(_0x5afd08){_0x47c4d6=_0x5afd08[_0x0ceb('0x34')];if(!_0x4c420c['query'][_0x0ceb('0x35')]('nolimit')){_0x348381[_0x0ceb('0x19')]=qs[_0x0ceb('0x19')](_0x4c420c[_0x0ceb('0x2e')][_0x0ceb('0x19')]);_0x348381[_0x0ceb('0x1b')]=qs['offset'](_0x4c420c[_0x0ceb('0x2e')][_0x0ceb('0x1b')]);}return _0x13fa76[_0x0ceb('0x47')](_0x348381);}})[_0x0ceb('0x20')](function(_0x4412f0){if(_0x4412f0){return _0x4412f0?{'count':_0x47c4d6,'rows':_0x4412f0}:null;}})[_0x0ceb('0x20')](respondWithResult(_0x4c70ab,null))['catch'](handleError(_0x4c70ab,null));};exports[_0x0ceb('0x4a')]=function(_0x11c6c8,_0x1d224c,_0x2b688f){if(_0x11c6c8['body']['id']){delete _0x11c6c8['body']['id'];}return db[_0x0ceb('0x28')][_0x0ceb('0x48')]({'where':{'id':_0x11c6c8[_0x0ceb('0x42')]['id']}})[_0x0ceb('0x20')](handleEntityNotFound(_0x1d224c,null))[_0x0ceb('0x20')](function(_0x27bc5e){if(_0x27bc5e){_0x11c6c8[_0x0ceb('0x46')]['AccountId']=_0x27bc5e['id'];_0x11c6c8[_0x0ceb('0x46')][_0x0ceb('0x4b')]=integrations[_0x0ceb('0x4c')](_0x11c6c8[_0x0ceb('0x46')][_0x0ceb('0x4d')],_0x11c6c8[_0x0ceb('0x46')][_0x0ceb('0x2b')]);_0x11c6c8[_0x0ceb('0x46')][_0x0ceb('0x4e')]=integrations[_0x0ceb('0x4f')](_0x11c6c8[_0x0ceb('0x46')]['channel'],_0x11c6c8[_0x0ceb('0x46')][_0x0ceb('0x2b')]);return db[_0x0ceb('0x50')][_0x0ceb('0x45')](_0x11c6c8[_0x0ceb('0x46')],{'include':[{'model':db[_0x0ceb('0x51')],'as':_0x0ceb('0x4b')},{'model':db['FreshdeskField'],'as':_0x0ceb('0x4e')}]});}return null;})[_0x0ceb('0x20')](respondWithResult(_0x1d224c,null))[_0x0ceb('0x44')](handleError(_0x1d224c,null));};exports['getFields']=function(_0x3f5c74,_0x25903d,_0x363b23){var _0x126a03='';return db[_0x0ceb('0x28')][_0x0ceb('0x48')]({'where':{'id':_0x3f5c74[_0x0ceb('0x42')]['id']},'attributes':['id',_0x0ceb('0x52'),_0x0ceb('0x53')]})[_0x0ceb('0x20')](handleEntityNotFound(_0x25903d,null))['then'](function(_0x547459){if(_0x547459){_0x126a03=_0x547459[_0x0ceb('0x52')];var _0x16bfcd=_0x126a03['slice'](-0x1);if(_0x16bfcd==='/'){_0x126a03=_0x126a03[_0x0ceb('0x54')](0x0,_0x126a03[_0x0ceb('0x55')](_0x16bfcd));}return rp({'method':_0x0ceb('0x56'),'uri':util['format'](_0x0ceb('0x57'),_0x126a03,_0x0ceb('0x58')),'headers':{'Authorization':util[_0x0ceb('0x59')](_0x0ceb('0x5a'),new Buffer(util[_0x0ceb('0x59')]('%s:X',_0x547459['apiKey']))['toString'](_0x0ceb('0x5b')))},'json':!![]});}})['then'](function(_0x162e78){if(_0x162e78){var _0x29479c=[_0x0ceb('0x5c'),_0x0ceb('0x5d'),'agent',_0x0ceb('0x5e'),_0x0ceb('0x16'),'priority',_0x0ceb('0x5f'),'source',_0x0ceb('0x60'),_0x0ceb('0x5f'),_0x0ceb('0x61')];_[_0x0ceb('0x62')](_0x162e78,function(_0x5da5f6){return _0x29479c[_0x0ceb('0x63')](_0x5da5f6[_0x0ceb('0x24')])||!_0x5da5f6[_0x0ceb('0x64')]&&_0x5da5f6['type']!==_0x0ceb('0x65')&&_0x5da5f6['type']!==_0x0ceb('0x66');});return{'count':_0x162e78[_0x0ceb('0x34')],'rows':_[_0x0ceb('0x27')](_0x162e78,function(_0x43dd7b){return{'id':_0x43dd7b[_0x0ceb('0x24')],'name':_0x43dd7b[_0x0ceb('0x67')],'custom':!_0x43dd7b['default'],'options':_0x43dd7b[_0x0ceb('0x68')]?_[_0x0ceb('0x27')](_0x43dd7b[_0x0ceb('0x68')],function(_0x27942d){return{'name':_[_0x0ceb('0x69')](_0x27942d),'value':_0x27942d};}):[]};})};}})[_0x0ceb('0x20')](respondWithResult(_0x25903d,null))[_0x0ceb('0x44')](function(_0x448051){var _0x5cba25=_0x3f5c74[_0x0ceb('0x2e')][_0x0ceb('0x6a')]?0x1f4:_0x448051[_0x0ceb('0x6b')]||0x1f4;logger['error'](_0x0ceb('0x6c'),_0x0ceb('0x6d'),_0x5cba25,JSON[_0x0ceb('0x6e')](_0x448051));delete _0x448051['name'];if(_0x5cba25===0x191){_0x5cba25=0x190;}_0x25903d[_0x0ceb('0x16')](_0x5cba25)['send'](_0x3f5c74['query'][_0x0ceb('0x6a')]?{'message':_0x0ceb('0x6f'),'statusCode':_0x448051['statusCode']}:_0x448051);});};
\ No newline at end of file
index 7bf7b49..55d3c7b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c4c=['path','./intFreshdeskAccount.attributes','FreshdeskAccount','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x42a842,_0x1eb672){var _0x1676bb=function(_0xf75015){while(--_0xf75015){_0x42a842['push'](_0x42a842['shift']());}};_0x1676bb(++_0x1eb672);}(_0x4c4c,0x108));var _0xc4c4=function(_0x3e7092,_0x141979){_0x3e7092=_0x3e7092-0x0;var _0x27d67e=_0x4c4c[_0x3e7092];return _0x27d67e;};'use strict';var _=require(_0xc4c4('0x0'));var util=require(_0xc4c4('0x1'));var logger=require(_0xc4c4('0x2'))(_0xc4c4('0x3'));var moment=require(_0xc4c4('0x4'));var BPromise=require(_0xc4c4('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xc4c4('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xc4c4('0x7'));var integrations=require('../../components/integrations/configuration');module['exports']=function(_0x24ef8f,_0x3a5771){return _0x24ef8f['define'](_0xc4c4('0x8'),attributes,{'tableName':'int_freshdesk_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x917a=['int_freshdesk_accounts','lodash','util','../../config/logger','api','moment','rimraf','../../config/environment','./intFreshdeskAccount.attributes','../../components/integrations/configuration','define'];(function(_0x5d1053,_0x38b0c2){var _0x3d5969=function(_0xb4b604){while(--_0xb4b604){_0x5d1053['push'](_0x5d1053['shift']());}};_0x3d5969(++_0x38b0c2);}(_0x917a,0x1e5));var _0xa917=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0x917a[_0x40a045];return _0x1a687c;};'use strict';var _=require(_0xa917('0x0'));var util=require(_0xa917('0x1'));var logger=require(_0xa917('0x2'))(_0xa917('0x3'));var moment=require(_0xa917('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xa917('0x5'));var config=require(_0xa917('0x6'));var attributes=require(_0xa917('0x7'));var integrations=require(_0xa917('0x8'));module['exports']=function(_0x285e25,_0x5ad050){return _0x285e25[_0xa917('0x9')]('FreshdeskAccount',attributes,{'tableName':_0xa917('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 35a1a6d..32dbe53 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd77a=['info','FreshdeskAccount,\x20%s,\x20%s','request\x20sent','debug','FreshdeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','result','FreshdeskAccount','options','where','attributes','limit','include','map','model','GetFreshdeskAccount','catch','ShowFreshdeskAccount','find','raw','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','then'];(function(_0x14ee69,_0x436a8a){var _0x4d5664=function(_0x3e69bc){while(--_0x3e69bc){_0x14ee69['push'](_0x14ee69['shift']());}};_0x4d5664(++_0x436a8a);}(_0xd77a,0x104));var _0xad77=function(_0x488066,_0x518094){_0x488066=_0x488066-0x0;var _0x4ba9a6=_0xd77a[_0x488066];return _0x4ba9a6;};'use strict';var _=require(_0xad77('0x0'));var util=require(_0xad77('0x1'));var moment=require(_0xad77('0x2'));var BPromise=require(_0xad77('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xad77('0x4'));var db=require(_0xad77('0x5'))['db'];var utils=require(_0xad77('0x6'));var logger=require(_0xad77('0x7'))('rpc');var config=require(_0xad77('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xad77('0x9')][_0xad77('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x56ac6a,_0x59ef41,_0x26afe8){return new BPromise(function(_0x31b622,_0x596b8c){return client['request'](_0x56ac6a,_0x26afe8)[_0xad77('0xb')](function(_0x4d2825){logger[_0xad77('0xc')](_0xad77('0xd'),_0x59ef41,_0xad77('0xe'));logger[_0xad77('0xf')](_0xad77('0x10'),_0x59ef41,_0xad77('0xe'),JSON[_0xad77('0x11')](_0x4d2825));if(_0x4d2825['error']){if(_0x4d2825['error']['code']===0x1f4){logger[_0xad77('0x12')](_0xad77('0xd'),_0x59ef41,_0x4d2825[_0xad77('0x12')][_0xad77('0x13')]);return _0x596b8c(_0x4d2825[_0xad77('0x12')][_0xad77('0x13')]);}logger[_0xad77('0x12')](_0xad77('0xd'),_0x59ef41,_0x4d2825[_0xad77('0x12')][_0xad77('0x13')]);return _0x31b622(_0x4d2825['error'][_0xad77('0x13')]);}else{logger[_0xad77('0xc')](_0xad77('0xd'),_0x59ef41,_0xad77('0xe'));_0x31b622(_0x4d2825[_0xad77('0x14')][_0xad77('0x13')]);}})['catch'](function(_0x3c9f44){logger[_0xad77('0x12')](_0xad77('0xd'),_0x59ef41,_0x3c9f44);_0x596b8c(_0x3c9f44);});});}exports['GetFreshdeskAccount']=function(_0x237eef){var _0x12983e=this;return new Promise(function(_0x2c5550,_0x2e762d){return db[_0xad77('0x15')]['findAll']({'raw':_0x237eef['options']?_0x237eef[_0xad77('0x16')]['raw']===undefined?!![]:![]:!![],'where':_0x237eef[_0xad77('0x16')]?_0x237eef[_0xad77('0x16')][_0xad77('0x17')]||null:null,'attributes':_0x237eef['options']?_0x237eef[_0xad77('0x16')][_0xad77('0x18')]||null:null,'limit':_0x237eef[_0xad77('0x16')]?_0x237eef[_0xad77('0x16')][_0xad77('0x19')]||null:null,'include':_0x237eef['options']?_0x237eef[_0xad77('0x16')][_0xad77('0x1a')]?_[_0xad77('0x1b')](_0x237eef[_0xad77('0x16')][_0xad77('0x1a')],function(_0x335f53){return{'model':db[_0x335f53['model']],'as':_0x335f53['as'],'attributes':_0x335f53[_0xad77('0x18')],'include':_0x335f53[_0xad77('0x1a')]?_['map'](_0x335f53[_0xad77('0x1a')],function(_0x52a38e){return{'model':db[_0x52a38e[_0xad77('0x1c')]],'as':_0x52a38e['as'],'attributes':_0x52a38e[_0xad77('0x18')],'include':_0x52a38e[_0xad77('0x1a')]?_[_0xad77('0x1b')](_0x52a38e[_0xad77('0x1a')],function(_0x2a2cb2){return{'model':db[_0x2a2cb2['model']],'as':_0x2a2cb2['as'],'attributes':_0x2a2cb2[_0xad77('0x18')]};}):[]};}):[]};}):[]:[]})[_0xad77('0xb')](function(_0x7e670d){logger[_0xad77('0xc')](_0xad77('0x1d'),_0x237eef);logger['debug'](_0xad77('0x1d'),_0x237eef,JSON[_0xad77('0x11')](_0x7e670d));_0x2c5550(_0x7e670d);})[_0xad77('0x1e')](function(_0x951de2){logger[_0xad77('0x12')]('GetFreshdeskAccount',_0x951de2['message'],_0x237eef);_0x2e762d(_0x12983e['error'](0x1f4,_0x951de2[_0xad77('0x13')]));});});};exports[_0xad77('0x1f')]=function(_0x42629b){var _0x498f7f=this;return new Promise(function(_0x2b78e3,_0x2426f7){return db['FreshdeskAccount'][_0xad77('0x20')]({'raw':_0x42629b[_0xad77('0x16')]?_0x42629b['options'][_0xad77('0x21')]===undefined?!![]:![]:!![],'where':_0x42629b[_0xad77('0x16')]?_0x42629b['options'][_0xad77('0x17')]||null:null,'attributes':_0x42629b[_0xad77('0x16')]?_0x42629b[_0xad77('0x16')][_0xad77('0x18')]||null:null,'include':_0x42629b[_0xad77('0x16')]?_0x42629b['options'][_0xad77('0x1a')]?_[_0xad77('0x1b')](_0x42629b[_0xad77('0x16')][_0xad77('0x1a')],function(_0x36faff){return{'model':db[_0x36faff[_0xad77('0x1c')]],'as':_0x36faff['as'],'attributes':_0x36faff[_0xad77('0x18')],'include':_0x36faff[_0xad77('0x1a')]?_['map'](_0x36faff[_0xad77('0x1a')],function(_0x25d227){return{'model':db[_0x25d227['model']],'as':_0x25d227['as'],'attributes':_0x25d227[_0xad77('0x18')],'include':_0x25d227[_0xad77('0x1a')]?_[_0xad77('0x1b')](_0x25d227[_0xad77('0x1a')],function(_0x30b867){return{'model':db[_0x30b867['model']],'as':_0x30b867['as'],'attributes':_0x30b867[_0xad77('0x18')]};}):[]};}):[]};}):[]:[]})[_0xad77('0xb')](function(_0x466cae){logger[_0xad77('0xc')](_0xad77('0x1f'),_0x42629b);logger[_0xad77('0xf')](_0xad77('0x1f'),_0x42629b,JSON[_0xad77('0x11')](_0x466cae));_0x2b78e3(_0x466cae);})['catch'](function(_0x1f60b4){logger[_0xad77('0x12')](_0xad77('0x1f'),_0x1f60b4[_0xad77('0x13')],_0x42629b);_0x2426f7(_0x498f7f[_0xad77('0x12')](0x1f4,_0x1f60b4[_0xad77('0x13')]));});});};
\ No newline at end of file
+var _0x293a=['message','result','catch','GetFreshdeskAccount','FreshdeskAccount','findAll','options','where','attributes','limit','map','include','model','find','then','info','ShowFreshdeskAccount','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','FreshdeskAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code'];(function(_0x1f42bc,_0x208463){var _0x23f159=function(_0x3933bb){while(--_0x3933bb){_0x1f42bc['push'](_0x1f42bc['shift']());}};_0x23f159(++_0x208463);}(_0x293a,0xc0));var _0xa293=function(_0x1ed116,_0x23bc80){_0x1ed116=_0x1ed116-0x0;var _0x574066=_0x293a[_0x1ed116];return _0x574066;};'use strict';var _=require(_0xa293('0x0'));var util=require('util');var moment=require(_0xa293('0x1'));var BPromise=require(_0xa293('0x2'));var rs=require(_0xa293('0x3'));var fs=require('fs');var Redis=require(_0xa293('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xa293('0x5'));var logger=require(_0xa293('0x6'))(_0xa293('0x7'));var config=require(_0xa293('0x8'));var jayson=require(_0xa293('0x9'));var client=jayson[_0xa293('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1c98f3,_0x281730,_0x59d8ad){return new BPromise(function(_0x208a6d,_0x2bd780){return client[_0xa293('0xb')](_0x1c98f3,_0x59d8ad)['then'](function(_0x12a6d7){logger['info'](_0xa293('0xc'),_0x281730,_0xa293('0xd'));logger[_0xa293('0xe')]('FreshdeskAccount,\x20%s,\x20%s,\x20%s',_0x281730,'request\x20sent',JSON[_0xa293('0xf')](_0x12a6d7));if(_0x12a6d7[_0xa293('0x10')]){if(_0x12a6d7[_0xa293('0x10')][_0xa293('0x11')]===0x1f4){logger['error']('FreshdeskAccount,\x20%s,\x20%s',_0x281730,_0x12a6d7[_0xa293('0x10')][_0xa293('0x12')]);return _0x2bd780(_0x12a6d7[_0xa293('0x10')]['message']);}logger[_0xa293('0x10')](_0xa293('0xc'),_0x281730,_0x12a6d7[_0xa293('0x10')]['message']);return _0x208a6d(_0x12a6d7['error'][_0xa293('0x12')]);}else{logger['info']('FreshdeskAccount,\x20%s,\x20%s',_0x281730,_0xa293('0xd'));_0x208a6d(_0x12a6d7[_0xa293('0x13')][_0xa293('0x12')]);}})[_0xa293('0x14')](function(_0x580cde){logger[_0xa293('0x10')](_0xa293('0xc'),_0x281730,_0x580cde);_0x2bd780(_0x580cde);});});}exports[_0xa293('0x15')]=function(_0x1d24d5){var _0x21e1d2=this;return new Promise(function(_0x191594,_0x3c9f53){return db[_0xa293('0x16')][_0xa293('0x17')]({'raw':_0x1d24d5['options']?_0x1d24d5[_0xa293('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x1d24d5[_0xa293('0x18')]?_0x1d24d5[_0xa293('0x18')][_0xa293('0x19')]||null:null,'attributes':_0x1d24d5[_0xa293('0x18')]?_0x1d24d5[_0xa293('0x18')][_0xa293('0x1a')]||null:null,'limit':_0x1d24d5[_0xa293('0x18')]?_0x1d24d5['options'][_0xa293('0x1b')]||null:null,'include':_0x1d24d5[_0xa293('0x18')]?_0x1d24d5[_0xa293('0x18')]['include']?_[_0xa293('0x1c')](_0x1d24d5[_0xa293('0x18')][_0xa293('0x1d')],function(_0xba5dfa){return{'model':db[_0xba5dfa['model']],'as':_0xba5dfa['as'],'attributes':_0xba5dfa[_0xa293('0x1a')],'include':_0xba5dfa[_0xa293('0x1d')]?_['map'](_0xba5dfa['include'],function(_0x20e73c){return{'model':db[_0x20e73c[_0xa293('0x1e')]],'as':_0x20e73c['as'],'attributes':_0x20e73c[_0xa293('0x1a')],'include':_0x20e73c['include']?_[_0xa293('0x1c')](_0x20e73c[_0xa293('0x1d')],function(_0x32e0eb){return{'model':db[_0x32e0eb['model']],'as':_0x32e0eb['as'],'attributes':_0x32e0eb[_0xa293('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0xa6d030){logger['info'](_0xa293('0x15'),_0x1d24d5);logger[_0xa293('0xe')](_0xa293('0x15'),_0x1d24d5,JSON[_0xa293('0xf')](_0xa6d030));_0x191594(_0xa6d030);})[_0xa293('0x14')](function(_0x478b38){logger[_0xa293('0x10')](_0xa293('0x15'),_0x478b38[_0xa293('0x12')],_0x1d24d5);_0x3c9f53(_0x21e1d2[_0xa293('0x10')](0x1f4,_0x478b38[_0xa293('0x12')]));});});};exports['ShowFreshdeskAccount']=function(_0x457527){var _0x3d0893=this;return new Promise(function(_0x47ebbb,_0x3f7040){return db[_0xa293('0x16')][_0xa293('0x1f')]({'raw':_0x457527[_0xa293('0x18')]?_0x457527['options']['raw']===undefined?!![]:![]:!![],'where':_0x457527['options']?_0x457527[_0xa293('0x18')][_0xa293('0x19')]||null:null,'attributes':_0x457527[_0xa293('0x18')]?_0x457527['options'][_0xa293('0x1a')]||null:null,'include':_0x457527[_0xa293('0x18')]?_0x457527[_0xa293('0x18')][_0xa293('0x1d')]?_[_0xa293('0x1c')](_0x457527[_0xa293('0x18')][_0xa293('0x1d')],function(_0x3d4000){return{'model':db[_0x3d4000[_0xa293('0x1e')]],'as':_0x3d4000['as'],'attributes':_0x3d4000[_0xa293('0x1a')],'include':_0x3d4000['include']?_[_0xa293('0x1c')](_0x3d4000['include'],function(_0x12b016){return{'model':db[_0x12b016[_0xa293('0x1e')]],'as':_0x12b016['as'],'attributes':_0x12b016[_0xa293('0x1a')],'include':_0x12b016[_0xa293('0x1d')]?_[_0xa293('0x1c')](_0x12b016[_0xa293('0x1d')],function(_0x3fdadb){return{'model':db[_0x3fdadb['model']],'as':_0x3fdadb['as'],'attributes':_0x3fdadb[_0xa293('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xa293('0x20')](function(_0xa65da){logger[_0xa293('0x21')](_0xa293('0x22'),_0x457527);logger[_0xa293('0xe')](_0xa293('0x22'),_0x457527,JSON['stringify'](_0xa65da));_0x47ebbb(_0xa65da);})[_0xa293('0x14')](function(_0x25ee3f){logger[_0xa293('0x10')](_0xa293('0x22'),_0x25ee3f[_0xa293('0x12')],_0x457527);_0x3f7040(_0x3d0893[_0xa293('0x10')](0x1f4,_0x25ee3f[_0xa293('0x12')]));});});};
\ No newline at end of file
index d6a975b..6986a09 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x26d9=['path','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshdeskConfiguration.controller','isAuthenticated','index','get','show','/:id/fields','getFields','/:id/subjects','getSubjects','getDescriptions','/:id/tags','getTags','post','setTags','put','/:id','delete','destroy','multer'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x26d9,0x176));var _0x926d=function(_0x4322d3,_0x1d1966){_0x4322d3=_0x4322d3-0x0;var _0x48b097=_0x26d9[_0x4322d3];return _0x48b097;};'use strict';var multer=require(_0x926d('0x0'));var util=require('util');var path=require(_0x926d('0x1'));var timeout=require('connect-timeout');var express=require(_0x926d('0x2'));var router=express['Router']();var fs_extra=require(_0x926d('0x3'));var auth=require(_0x926d('0x4'));var interaction=require(_0x926d('0x5'));var config=require(_0x926d('0x6'));var controller=require(_0x926d('0x7'));router['get']('/',auth[_0x926d('0x8')](),controller[_0x926d('0x9')]);router[_0x926d('0xa')]('/:id',auth[_0x926d('0x8')](),controller[_0x926d('0xb')]);router['get'](_0x926d('0xc'),auth[_0x926d('0x8')](),controller[_0x926d('0xd')]);router[_0x926d('0xa')](_0x926d('0xe'),auth['isAuthenticated'](),controller[_0x926d('0xf')]);router[_0x926d('0xa')]('/:id/descriptions',auth['isAuthenticated'](),controller[_0x926d('0x10')]);router[_0x926d('0xa')](_0x926d('0x11'),auth[_0x926d('0x8')](),controller[_0x926d('0x12')]);router[_0x926d('0x13')]('/',auth[_0x926d('0x8')](),controller['create']);router[_0x926d('0x13')](_0x926d('0x11'),auth[_0x926d('0x8')](),controller[_0x926d('0x14')]);router[_0x926d('0x15')](_0x926d('0x16'),auth[_0x926d('0x8')](),controller['update']);router[_0x926d('0x17')](_0x926d('0x16'),auth[_0x926d('0x8')](),controller[_0x926d('0x18')]);module['exports']=router;
\ No newline at end of file
+var _0x9293=['../../components/interaction/service','../../config/environment','./intFreshdeskConfiguration.controller','get','isAuthenticated','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','/:id/tags','getTags','post','create','setTags','/:id','delete','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service'];(function(_0x4acae5,_0x13d0ab){var _0x48bfdb=function(_0x127439){while(--_0x127439){_0x4acae5['push'](_0x4acae5['shift']());}};_0x48bfdb(++_0x13d0ab);}(_0x9293,0x95));var _0x3929=function(_0x10f50d,_0x1b200c){_0x10f50d=_0x10f50d-0x0;var _0x24128c=_0x9293[_0x10f50d];return _0x24128c;};'use strict';var multer=require(_0x3929('0x0'));var util=require(_0x3929('0x1'));var path=require(_0x3929('0x2'));var timeout=require(_0x3929('0x3'));var express=require(_0x3929('0x4'));var router=express['Router']();var fs_extra=require(_0x3929('0x5'));var auth=require(_0x3929('0x6'));var interaction=require(_0x3929('0x7'));var config=require(_0x3929('0x8'));var controller=require(_0x3929('0x9'));router[_0x3929('0xa')]('/',auth['isAuthenticated'](),controller['index']);router[_0x3929('0xa')]('/:id',auth['isAuthenticated'](),controller['show']);router['get']('/:id/fields',auth[_0x3929('0xb')](),controller[_0x3929('0xc')]);router[_0x3929('0xa')](_0x3929('0xd'),auth[_0x3929('0xb')](),controller[_0x3929('0xe')]);router['get'](_0x3929('0xf'),auth[_0x3929('0xb')](),controller[_0x3929('0x10')]);router[_0x3929('0xa')](_0x3929('0x11'),auth[_0x3929('0xb')](),controller[_0x3929('0x12')]);router[_0x3929('0x13')]('/',auth['isAuthenticated'](),controller[_0x3929('0x14')]);router[_0x3929('0x13')](_0x3929('0x11'),auth['isAuthenticated'](),controller[_0x3929('0x15')]);router['put'](_0x3929('0x16'),auth['isAuthenticated'](),controller['update']);router[_0x3929('0x17')](_0x3929('0x16'),auth[_0x3929('0xb')](),controller[_0x3929('0x18')]);module[_0x3929('0x19')]=router;
\ No newline at end of file
index 50115da..3410bb6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea2a=['exports','STRING','sequelize'];(function(_0x55e4f8,_0x292de5){var _0x1f2a5d=function(_0x23b029){while(--_0x23b029){_0x55e4f8['push'](_0x55e4f8['shift']());}};_0x1f2a5d(++_0x292de5);}(_0xea2a,0x1ca));var _0xaea2=function(_0x66a60e,_0x34b813){_0x66a60e=_0x66a60e-0x0;var _0x54f2d8=_0xea2a[_0x66a60e];return _0x54f2d8;};'use strict';var Sequelize=require(_0xaea2('0x0'));module[_0xaea2('0x1')]={'name':{'type':Sequelize[_0xaea2('0x2')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x931a=['exports','STRING','sequelize'];(function(_0x5416db,_0x55683a){var _0x243e35=function(_0x1eb623){while(--_0x1eb623){_0x5416db['push'](_0x5416db['shift']());}};_0x243e35(++_0x55683a);}(_0x931a,0x10d));var _0xa931=function(_0x88d9b6,_0x119e82){_0x88d9b6=_0x88d9b6-0x0;var _0x41b3f7=_0x931a[_0x88d9b6];return _0x41b3f7;};'use strict';var Sequelize=require(_0xa931('0x0'));module[_0xa931('0x1')]={'name':{'type':Sequelize[_0xa931('0x2')]},'description':{'type':Sequelize[_0xa931('0x2')]}};
\ No newline at end of file
index 2d2510b..c3fe69e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x05c6=['status','end','json','offset','limit','count','Content-Range','apply','reject','save','update','destroy','error','stack','send','map','FreshdeskConfiguration','rawAttributes','key','model','query','attributes','intersection','fields','hasOwnProperty','order','sort','where','filters','pick','merge','type','VIRTUAL','name','filter','then','include','findAll','rows','catch','show','params','length','find','create','body','keys','FreshdeskField','getFields','getSubjects','findOne','options','nolimit','getDescriptions','getTags','setTags','ids','rimraf','request-promise','bluebird','path','sox','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus'];(function(_0x94372b,_0x186f99){var _0x4e4ea2=function(_0x50efb0){while(--_0x50efb0){_0x94372b['push'](_0x94372b['shift']());}};_0x4e4ea2(++_0x186f99);}(_0x05c6,0x123));var _0x605c=function(_0x149112,_0x55945f){_0x149112=_0x149112-0x0;var _0x3221a6=_0x05c6[_0x149112];return _0x3221a6;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x605c('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x605c('0x1'));var moment=require('moment');var BPromise=require(_0x605c('0x2'));var Mustache=require('mustache');var util=require('util');var path=require(_0x605c('0x3'));var sox=require(_0x605c('0x4'));var csv=require(_0x605c('0x5'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x605c('0x6'));var _=require(_0x605c('0x7'));var squel=require('squel');var crypto=require(_0x605c('0x8'));var jsforce=require(_0x605c('0x9'));var deskjs=require(_0x605c('0xa'));var toCsv=require(_0x605c('0x5'));var querystring=require(_0x605c('0xb'));var Papa=require(_0x605c('0xc'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x605c('0xd'));var as=require(_0x605c('0xe'));var hardwareService=require(_0x605c('0xf'));var logger=require(_0x605c('0x10'))(_0x605c('0x11'));var utils=require(_0x605c('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0x605c('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1a93bd,_0x2a22b9){_0x2a22b9=_0x2a22b9||0xcc;return function(_0xa8fada){if(_0xa8fada){return _0x1a93bd[_0x605c('0x14')](_0x2a22b9);}return _0x1a93bd[_0x605c('0x15')](_0x2a22b9)[_0x605c('0x16')]();};}function respondWithResult(_0x15a3e1,_0x49a1d9){_0x49a1d9=_0x49a1d9||0xc8;return function(_0x56d8d6){if(_0x56d8d6){return _0x15a3e1[_0x605c('0x15')](_0x49a1d9)[_0x605c('0x17')](_0x56d8d6);}};}function respondWithFilteredResult(_0x457d19,_0x3c67f9){return function(_0x160547){if(_0x160547){var _0x413e8d=typeof _0x3c67f9[_0x605c('0x18')]==='undefined'&&typeof _0x3c67f9[_0x605c('0x19')]==='undefined';var _0x58d716=_0x160547[_0x605c('0x1a')];var _0x4cba6d=_0x413e8d?0x0:_0x3c67f9['offset'];var _0x2bb32b=_0x413e8d?_0x160547[_0x605c('0x1a')]:_0x3c67f9[_0x605c('0x18')]+_0x3c67f9[_0x605c('0x19')];var _0x5eccb8;if(_0x2bb32b>=_0x58d716){_0x2bb32b=_0x58d716;_0x5eccb8=0xc8;}else{_0x5eccb8=0xce;}_0x457d19[_0x605c('0x15')](_0x5eccb8);return _0x457d19['set'](_0x605c('0x1b'),_0x4cba6d+'-'+_0x2bb32b+'/'+_0x58d716)[_0x605c('0x17')](_0x160547);}return null;};}function patchUpdates(_0x48d69c){return function(_0xc2302a){try{jsonpatch[_0x605c('0x1c')](_0xc2302a,_0x48d69c,!![]);}catch(_0x406b70){return BPromise[_0x605c('0x1d')](_0x406b70);}return _0xc2302a[_0x605c('0x1e')]();};}function saveUpdates(_0x90adce,_0x5b0852){return function(_0x17811d){if(_0x17811d){return _0x17811d[_0x605c('0x1f')](_0x90adce)['then'](function(_0x3d08fd){return _0x3d08fd;});}return null;};}function removeEntity(_0x1124bd,_0x34ef31){return function(_0xd1adbc){if(_0xd1adbc){return _0xd1adbc[_0x605c('0x20')]()['then'](function(){_0x1124bd[_0x605c('0x15')](0xcc)[_0x605c('0x16')]();});}};}function handleEntityNotFound(_0x2ff44a,_0x2381df){return function(_0x41fcb3){if(!_0x41fcb3){_0x2ff44a[_0x605c('0x14')](0x194);}return _0x41fcb3;};}function handleError(_0x2f2895,_0xb67717){_0xb67717=_0xb67717||0x1f4;return function(_0xdcfdf9){logger[_0x605c('0x21')](_0xdcfdf9[_0x605c('0x22')]);if(_0xdcfdf9['name']){delete _0xdcfdf9['name'];}_0x2f2895[_0x605c('0x15')](_0xb67717)[_0x605c('0x23')](_0xdcfdf9);};}exports['index']=function(_0x88948a,_0x20b7a0){var _0x133cb1={},_0xfe9423={},_0x16f5f5={'count':0x0,'rows':[]};var _0x502fa1=_[_0x605c('0x24')](db[_0x605c('0x25')][_0x605c('0x26')],function(_0x39bc6d){return{'name':_0x39bc6d['fieldName'],'type':_0x39bc6d['type'][_0x605c('0x27')]};});_0xfe9423[_0x605c('0x28')]=_['map'](_0x502fa1,'name');_0xfe9423['query']=_['keys'](_0x88948a[_0x605c('0x29')]);_0xfe9423['filters']=_['intersection'](_0xfe9423[_0x605c('0x28')],_0xfe9423[_0x605c('0x29')]);_0x133cb1[_0x605c('0x2a')]=_[_0x605c('0x2b')](_0xfe9423[_0x605c('0x28')],qs[_0x605c('0x2c')](_0x88948a[_0x605c('0x29')][_0x605c('0x2c')]));_0x133cb1[_0x605c('0x2a')]=_0x133cb1[_0x605c('0x2a')]['length']?_0x133cb1[_0x605c('0x2a')]:_0xfe9423[_0x605c('0x28')];if(!_0x88948a[_0x605c('0x29')][_0x605c('0x2d')]('nolimit')){_0x133cb1['limit']=qs[_0x605c('0x19')](_0x88948a['query'][_0x605c('0x19')]);_0x133cb1[_0x605c('0x18')]=qs[_0x605c('0x18')](_0x88948a[_0x605c('0x29')][_0x605c('0x18')]);}_0x133cb1[_0x605c('0x2e')]=qs[_0x605c('0x2f')](_0x88948a[_0x605c('0x29')][_0x605c('0x2f')]);_0x133cb1[_0x605c('0x30')]=qs[_0x605c('0x31')](_[_0x605c('0x32')](_0x88948a[_0x605c('0x29')],_0xfe9423[_0x605c('0x31')]),_0x502fa1);if(_0x88948a[_0x605c('0x29')]['filter']){_0x133cb1['where']=_[_0x605c('0x33')](_0x133cb1[_0x605c('0x30')],{'$or':_[_0x605c('0x24')](_0x502fa1,function(_0x4bb55e){if(_0x4bb55e[_0x605c('0x34')]!==_0x605c('0x35')){var _0x3d6afe={};_0x3d6afe[_0x4bb55e[_0x605c('0x36')]]={'$like':'%'+_0x88948a[_0x605c('0x29')][_0x605c('0x37')]+'%'};return _0x3d6afe;}})});}_0x133cb1=_['merge']({},_0x133cb1,_0x88948a['options']);var _0x27ffa4={'where':_0x133cb1[_0x605c('0x30')]};return db[_0x605c('0x25')][_0x605c('0x1a')](_0x27ffa4)[_0x605c('0x38')](function(_0x38bd51){_0x16f5f5['count']=_0x38bd51;if(_0x88948a[_0x605c('0x29')]['includeAll']){_0x133cb1[_0x605c('0x39')]=[{'all':!![]}];}return db[_0x605c('0x25')][_0x605c('0x3a')](_0x133cb1);})[_0x605c('0x38')](function(_0x3c1f62){_0x16f5f5[_0x605c('0x3b')]=_0x3c1f62;return _0x16f5f5;})[_0x605c('0x38')](respondWithFilteredResult(_0x20b7a0,_0x133cb1))[_0x605c('0x3c')](handleError(_0x20b7a0,null));};exports[_0x605c('0x3d')]=function(_0x103467,_0xc45be1){var _0x33e55a={'raw':![],'where':{'id':_0x103467[_0x605c('0x3e')]['id']}},_0x4d2e4f={};_0x4d2e4f[_0x605c('0x28')]=_['keys'](db[_0x605c('0x25')]['rawAttributes']);_0x4d2e4f[_0x605c('0x29')]=_['keys'](_0x103467[_0x605c('0x29')]);_0x4d2e4f[_0x605c('0x31')]=_[_0x605c('0x2b')](_0x4d2e4f['model'],_0x4d2e4f[_0x605c('0x29')]);_0x33e55a[_0x605c('0x2a')]=_[_0x605c('0x2b')](_0x4d2e4f[_0x605c('0x28')],qs[_0x605c('0x2c')](_0x103467[_0x605c('0x29')][_0x605c('0x2c')]));_0x33e55a[_0x605c('0x2a')]=_0x33e55a['attributes'][_0x605c('0x3f')]?_0x33e55a[_0x605c('0x2a')]:_0x4d2e4f[_0x605c('0x28')];if(_0x103467[_0x605c('0x29')]['includeAll']){_0x33e55a[_0x605c('0x39')]=[{'all':!![]}];}_0x33e55a=_[_0x605c('0x33')]({},_0x33e55a,_0x103467['options']);return db[_0x605c('0x25')][_0x605c('0x40')](_0x33e55a)[_0x605c('0x38')](handleEntityNotFound(_0xc45be1,null))[_0x605c('0x38')](respondWithResult(_0xc45be1,null))['catch'](handleError(_0xc45be1,null));};exports['create']=function(_0x31c98b,_0x167d2c){return db['FreshdeskConfiguration'][_0x605c('0x41')](_0x31c98b['body'],{})['then'](respondWithResult(_0x167d2c,0xc9))[_0x605c('0x3c')](handleError(_0x167d2c,null));};exports['update']=function(_0x296f2e,_0x3b439d){if(_0x296f2e['body']['id']){delete _0x296f2e['body']['id'];}return db[_0x605c('0x25')][_0x605c('0x40')]({'where':{'id':_0x296f2e[_0x605c('0x3e')]['id']}})[_0x605c('0x38')](handleEntityNotFound(_0x3b439d,null))[_0x605c('0x38')](saveUpdates(_0x296f2e[_0x605c('0x42')],null))[_0x605c('0x38')](respondWithResult(_0x3b439d,null))[_0x605c('0x3c')](handleError(_0x3b439d,null));};exports[_0x605c('0x20')]=function(_0x3156cd,_0x1c345e){return db['FreshdeskConfiguration'][_0x605c('0x40')]({'where':{'id':_0x3156cd[_0x605c('0x3e')]['id']}})[_0x605c('0x38')](handleEntityNotFound(_0x1c345e,null))[_0x605c('0x38')](removeEntity(_0x1c345e,null))[_0x605c('0x3c')](handleError(_0x1c345e,null));};exports['getFields']=function(_0x3cf707,_0x16db68,_0x5848d3){var _0x4049f9={};var _0x4433b0={};var _0x31fb77;var _0x459484;return db[_0x605c('0x25')]['findOne']({'where':{'id':_0x3cf707[_0x605c('0x3e')]['id']}})[_0x605c('0x38')](handleEntityNotFound(_0x16db68,null))[_0x605c('0x38')](function(_0x32fae5){if(_0x32fae5){_0x31fb77=_0x32fae5;_0x4433b0[_0x605c('0x28')]=_[_0x605c('0x43')](db[_0x605c('0x44')][_0x605c('0x26')]);_0x4433b0[_0x605c('0x29')]=_['keys'](_0x3cf707[_0x605c('0x29')]);_0x4433b0[_0x605c('0x31')]=_[_0x605c('0x2b')](_0x4433b0[_0x605c('0x28')],_0x4433b0[_0x605c('0x29')]);_0x4049f9['attributes']=_['intersection'](_0x4433b0[_0x605c('0x28')],qs[_0x605c('0x2c')](_0x3cf707[_0x605c('0x29')]['fields']));_0x4049f9[_0x605c('0x2a')]=_0x4049f9[_0x605c('0x2a')][_0x605c('0x3f')]?_0x4049f9['attributes']:_0x4433b0['model'];_0x4049f9[_0x605c('0x2e')]=qs[_0x605c('0x2f')](_0x3cf707[_0x605c('0x29')]['sort']);_0x4049f9[_0x605c('0x30')]=qs['filters'](_[_0x605c('0x32')](_0x3cf707[_0x605c('0x29')],_0x4433b0[_0x605c('0x31')]));if(_0x3cf707[_0x605c('0x29')]['filter']){_0x4049f9['where']=_[_0x605c('0x33')](_0x4049f9[_0x605c('0x30')],{'$or':_[_0x605c('0x24')](_0x4049f9[_0x605c('0x2a')],function(_0x3c9cdb){var _0x2c4718={};_0x2c4718[_0x3c9cdb]={'$like':'%'+_0x3cf707[_0x605c('0x29')][_0x605c('0x37')]+'%'};return _0x2c4718;})});}_0x4049f9=_[_0x605c('0x33')]({},_0x4049f9,_0x3cf707['options']);return _0x31fb77[_0x605c('0x45')](_0x4049f9);}})['then'](function(_0x124a1d){if(_0x124a1d){_0x459484=_0x124a1d[_0x605c('0x3f')];if(!_0x3cf707[_0x605c('0x29')]['hasOwnProperty']('nolimit')){_0x4049f9['limit']=qs[_0x605c('0x19')](_0x3cf707['query'][_0x605c('0x19')]);_0x4049f9[_0x605c('0x18')]=qs[_0x605c('0x18')](_0x3cf707[_0x605c('0x29')][_0x605c('0x18')]);}return _0x31fb77[_0x605c('0x45')](_0x4049f9);}})[_0x605c('0x38')](function(_0x137791){if(_0x137791){return _0x137791?{'count':_0x459484,'rows':_0x137791}:null;}})['then'](respondWithResult(_0x16db68,null))[_0x605c('0x3c')](handleError(_0x16db68,null));};exports[_0x605c('0x46')]=function(_0x19421f,_0x264e79,_0x2d9963){var _0x458ecb={};var _0x2f2c65={};var _0xcb8a35;var _0x138cb6;return db[_0x605c('0x25')][_0x605c('0x47')]({'where':{'id':_0x19421f[_0x605c('0x3e')]['id']}})[_0x605c('0x38')](handleEntityNotFound(_0x264e79,null))[_0x605c('0x38')](function(_0x181488){if(_0x181488){_0xcb8a35=_0x181488;_0x2f2c65[_0x605c('0x28')]=_['keys'](db['FreshdeskField'][_0x605c('0x26')]);_0x2f2c65[_0x605c('0x29')]=_[_0x605c('0x43')](_0x19421f[_0x605c('0x29')]);_0x2f2c65[_0x605c('0x31')]=_[_0x605c('0x2b')](_0x2f2c65[_0x605c('0x28')],_0x2f2c65['query']);_0x458ecb[_0x605c('0x2a')]=_[_0x605c('0x2b')](_0x2f2c65[_0x605c('0x28')],qs[_0x605c('0x2c')](_0x19421f[_0x605c('0x29')][_0x605c('0x2c')]));_0x458ecb[_0x605c('0x2a')]=_0x458ecb[_0x605c('0x2a')][_0x605c('0x3f')]?_0x458ecb[_0x605c('0x2a')]:_0x2f2c65['model'];_0x458ecb[_0x605c('0x2e')]=qs[_0x605c('0x2f')](_0x19421f[_0x605c('0x29')]['sort']);_0x458ecb[_0x605c('0x30')]=qs['filters'](_[_0x605c('0x32')](_0x19421f[_0x605c('0x29')],_0x2f2c65['filters']));if(_0x19421f[_0x605c('0x29')][_0x605c('0x37')]){_0x458ecb[_0x605c('0x30')]=_['merge'](_0x458ecb[_0x605c('0x30')],{'$or':_[_0x605c('0x24')](_0x458ecb['attributes'],function(_0x35b0d0){var _0x5eb3e6={};_0x5eb3e6[_0x35b0d0]={'$like':'%'+_0x19421f[_0x605c('0x29')][_0x605c('0x37')]+'%'};return _0x5eb3e6;})});}_0x458ecb=_['merge']({},_0x458ecb,_0x19421f[_0x605c('0x48')]);return _0xcb8a35[_0x605c('0x46')](_0x458ecb);}})[_0x605c('0x38')](function(_0x4d868e){if(_0x4d868e){_0x138cb6=_0x4d868e[_0x605c('0x3f')];if(!_0x19421f[_0x605c('0x29')][_0x605c('0x2d')](_0x605c('0x49'))){_0x458ecb[_0x605c('0x19')]=qs[_0x605c('0x19')](_0x19421f['query'][_0x605c('0x19')]);_0x458ecb[_0x605c('0x18')]=qs[_0x605c('0x18')](_0x19421f['query'][_0x605c('0x18')]);}return _0xcb8a35['getSubjects'](_0x458ecb);}})[_0x605c('0x38')](function(_0x32a9e4){if(_0x32a9e4){return _0x32a9e4?{'count':_0x138cb6,'rows':_0x32a9e4}:null;}})[_0x605c('0x38')](respondWithResult(_0x264e79,null))[_0x605c('0x3c')](handleError(_0x264e79,null));};exports[_0x605c('0x4a')]=function(_0x442ec3,_0x57e99a,_0x503c64){var _0x51f048={};var _0x238b8d={};var _0x102b58;var _0x40568c;return db['FreshdeskConfiguration'][_0x605c('0x47')]({'where':{'id':_0x442ec3[_0x605c('0x3e')]['id']}})[_0x605c('0x38')](handleEntityNotFound(_0x57e99a,null))[_0x605c('0x38')](function(_0x46893b){if(_0x46893b){_0x102b58=_0x46893b;_0x238b8d[_0x605c('0x28')]=_['keys'](db[_0x605c('0x44')]['rawAttributes']);_0x238b8d[_0x605c('0x29')]=_[_0x605c('0x43')](_0x442ec3[_0x605c('0x29')]);_0x238b8d['filters']=_['intersection'](_0x238b8d[_0x605c('0x28')],_0x238b8d[_0x605c('0x29')]);_0x51f048[_0x605c('0x2a')]=_[_0x605c('0x2b')](_0x238b8d[_0x605c('0x28')],qs[_0x605c('0x2c')](_0x442ec3[_0x605c('0x29')]['fields']));_0x51f048[_0x605c('0x2a')]=_0x51f048[_0x605c('0x2a')]['length']?_0x51f048[_0x605c('0x2a')]:_0x238b8d[_0x605c('0x28')];_0x51f048[_0x605c('0x2e')]=qs[_0x605c('0x2f')](_0x442ec3[_0x605c('0x29')][_0x605c('0x2f')]);_0x51f048[_0x605c('0x30')]=qs['filters'](_[_0x605c('0x32')](_0x442ec3[_0x605c('0x29')],_0x238b8d[_0x605c('0x31')]));if(_0x442ec3['query']['filter']){_0x51f048[_0x605c('0x30')]=_[_0x605c('0x33')](_0x51f048[_0x605c('0x30')],{'$or':_[_0x605c('0x24')](_0x51f048[_0x605c('0x2a')],function(_0x483c92){var _0x2f2ba={};_0x2f2ba[_0x483c92]={'$like':'%'+_0x442ec3[_0x605c('0x29')][_0x605c('0x37')]+'%'};return _0x2f2ba;})});}_0x51f048=_['merge']({},_0x51f048,_0x442ec3[_0x605c('0x48')]);return _0x102b58['getDescriptions'](_0x51f048);}})[_0x605c('0x38')](function(_0x256f51){if(_0x256f51){_0x40568c=_0x256f51['length'];if(!_0x442ec3['query']['hasOwnProperty'](_0x605c('0x49'))){_0x51f048[_0x605c('0x19')]=qs[_0x605c('0x19')](_0x442ec3[_0x605c('0x29')][_0x605c('0x19')]);_0x51f048['offset']=qs[_0x605c('0x18')](_0x442ec3[_0x605c('0x29')][_0x605c('0x18')]);}return _0x102b58[_0x605c('0x4a')](_0x51f048);}})[_0x605c('0x38')](function(_0x35714e){if(_0x35714e){return _0x35714e?{'count':_0x40568c,'rows':_0x35714e}:null;}})[_0x605c('0x38')](respondWithResult(_0x57e99a,null))[_0x605c('0x3c')](handleError(_0x57e99a,null));};exports['getTags']=function(_0x226ec3,_0x37832b,_0x1212c7){var _0x5839ee={};var _0x2da450={};var _0x564d10;var _0x1c54e5;return db[_0x605c('0x25')][_0x605c('0x47')]({'where':{'id':_0x226ec3[_0x605c('0x3e')]['id']}})[_0x605c('0x38')](handleEntityNotFound(_0x37832b,null))[_0x605c('0x38')](function(_0x386cad){if(_0x386cad){_0x564d10=_0x386cad;_0x2da450[_0x605c('0x28')]=_[_0x605c('0x43')](db['Tag'][_0x605c('0x26')]);_0x2da450[_0x605c('0x29')]=_['keys'](_0x226ec3[_0x605c('0x29')]);_0x2da450[_0x605c('0x31')]=_[_0x605c('0x2b')](_0x2da450['model'],_0x2da450['query']);_0x5839ee[_0x605c('0x2a')]=_['intersection'](_0x2da450[_0x605c('0x28')],qs[_0x605c('0x2c')](_0x226ec3[_0x605c('0x29')][_0x605c('0x2c')]));_0x5839ee[_0x605c('0x2a')]=_0x5839ee[_0x605c('0x2a')]['length']?_0x5839ee[_0x605c('0x2a')]:_0x2da450[_0x605c('0x28')];_0x5839ee[_0x605c('0x2e')]=qs[_0x605c('0x2f')](_0x226ec3[_0x605c('0x29')][_0x605c('0x2f')]);_0x5839ee[_0x605c('0x30')]=qs['filters'](_['pick'](_0x226ec3[_0x605c('0x29')],_0x2da450['filters']));if(_0x226ec3[_0x605c('0x29')]['filter']){_0x5839ee[_0x605c('0x30')]=_[_0x605c('0x33')](_0x5839ee[_0x605c('0x30')],{'$or':_['map'](_0x5839ee[_0x605c('0x2a')],function(_0x1098e4){var _0x598fb3={};_0x598fb3[_0x1098e4]={'$like':'%'+_0x226ec3[_0x605c('0x29')]['filter']+'%'};return _0x598fb3;})});}_0x5839ee=_[_0x605c('0x33')]({},_0x5839ee,_0x226ec3[_0x605c('0x48')]);return _0x564d10[_0x605c('0x4b')](_0x5839ee);}})[_0x605c('0x38')](function(_0x4216bf){if(_0x4216bf){_0x1c54e5=_0x4216bf[_0x605c('0x3f')];if(!_0x226ec3[_0x605c('0x29')][_0x605c('0x2d')](_0x605c('0x49'))){_0x5839ee[_0x605c('0x19')]=qs[_0x605c('0x19')](_0x226ec3['query'][_0x605c('0x19')]);_0x5839ee[_0x605c('0x18')]=qs[_0x605c('0x18')](_0x226ec3[_0x605c('0x29')][_0x605c('0x18')]);}return _0x564d10['getTags'](_0x5839ee);}})[_0x605c('0x38')](function(_0x1936d7){if(_0x1936d7){return _0x1936d7?{'count':_0x1c54e5,'rows':_0x1936d7}:null;}})[_0x605c('0x38')](respondWithResult(_0x37832b,null))['catch'](handleError(_0x37832b,null));};exports[_0x605c('0x4c')]=function(_0x277b77,_0x671a69,_0x17b93d){if(_0x277b77[_0x605c('0x42')]['id']){delete _0x277b77['body']['id'];}return db[_0x605c('0x25')][_0x605c('0x47')]({'where':{'id':_0x277b77[_0x605c('0x3e')]['id']}})[_0x605c('0x38')](handleEntityNotFound(_0x671a69,null))['then'](function(_0x2a6933){if(_0x2a6933){return _0x2a6933[_0x605c('0x4c')](_0x277b77['body'][_0x605c('0x4d')]||[]);}return null;})['then'](respondWithResult(_0x671a69,null))['catch'](handleError(_0x671a69,null));};
\ No newline at end of file
+var _0xded7=['../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','save','update','destroy','error','stack','name','send','index','FreshdeskConfiguration','rawAttributes','fieldName','type','query','keys','intersection','model','attributes','fields','length','hasOwnProperty','sort','filters','pick','filter','where','VIRTUAL','options','then','includeAll','include','findAll','rows','catch','show','params','merge','find','create','body','getFields','findOne','order','map','nolimit','getSubjects','getDescriptions','getTags','Tag','setTags','ids','eml-format','rimraf','zip-dir','fast-json-patch','moment','util','fs-extra','squel','crypto','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0xded7,0x93));var _0x7ded=function(_0x4bf3e6,_0x29f2ed){_0x4bf3e6=_0x4bf3e6-0x0;var _0x10e012=_0xded7[_0x4bf3e6];return _0x10e012;};'use strict';var emlformat=require(_0x7ded('0x0'));var rimraf=require(_0x7ded('0x1'));var zipdir=require(_0x7ded('0x2'));var jsonpatch=require(_0x7ded('0x3'));var rp=require('request-promise');var moment=require(_0x7ded('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x7ded('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(_0x7ded('0x6'));var _=require('lodash');var squel=require(_0x7ded('0x7'));var crypto=require(_0x7ded('0x8'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x7ded('0x9'));var querystring=require(_0x7ded('0xa'));var Papa=require(_0x7ded('0xb'));var Redis=require(_0x7ded('0xc'));var authService=require(_0x7ded('0xd'));var qs=require(_0x7ded('0xe'));var as=require(_0x7ded('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x7ded('0x10'))('api');var utils=require(_0x7ded('0x11'));var config=require(_0x7ded('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0x7ded('0x13'))['db'];function respondWithStatusCode(_0x107e86,_0x4171d7){_0x4171d7=_0x4171d7||0xcc;return function(_0x3ee8f5){if(_0x3ee8f5){return _0x107e86[_0x7ded('0x14')](_0x4171d7);}return _0x107e86[_0x7ded('0x15')](_0x4171d7)[_0x7ded('0x16')]();};}function respondWithResult(_0x416494,_0x2766a8){_0x2766a8=_0x2766a8||0xc8;return function(_0x3d21fb){if(_0x3d21fb){return _0x416494[_0x7ded('0x15')](_0x2766a8)['json'](_0x3d21fb);}};}function respondWithFilteredResult(_0x5ef34c,_0x5d88c9){return function(_0x589534){if(_0x589534){var _0xe0c6b6=typeof _0x5d88c9[_0x7ded('0x17')]===_0x7ded('0x18')&&typeof _0x5d88c9[_0x7ded('0x19')]===_0x7ded('0x18');var _0x33269d=_0x589534[_0x7ded('0x1a')];var _0x3fbb98=_0xe0c6b6?0x0:_0x5d88c9[_0x7ded('0x17')];var _0x3c8932=_0xe0c6b6?_0x589534['count']:_0x5d88c9[_0x7ded('0x17')]+_0x5d88c9['limit'];var _0x4d87b8;if(_0x3c8932>=_0x33269d){_0x3c8932=_0x33269d;_0x4d87b8=0xc8;}else{_0x4d87b8=0xce;}_0x5ef34c[_0x7ded('0x15')](_0x4d87b8);return _0x5ef34c[_0x7ded('0x1b')](_0x7ded('0x1c'),_0x3fbb98+'-'+_0x3c8932+'/'+_0x33269d)[_0x7ded('0x1d')](_0x589534);}return null;};}function patchUpdates(_0x4c2baf){return function(_0x5c1029){try{jsonpatch[_0x7ded('0x1e')](_0x5c1029,_0x4c2baf,!![]);}catch(_0x2f086d){return BPromise['reject'](_0x2f086d);}return _0x5c1029[_0x7ded('0x1f')]();};}function saveUpdates(_0x5a0439,_0x34659c){return function(_0x16b9bf){if(_0x16b9bf){return _0x16b9bf[_0x7ded('0x20')](_0x5a0439)['then'](function(_0x47b643){return _0x47b643;});}return null;};}function removeEntity(_0xe9c8ce,_0x7d9a01){return function(_0x3a3b98){if(_0x3a3b98){return _0x3a3b98[_0x7ded('0x21')]()['then'](function(){_0xe9c8ce[_0x7ded('0x15')](0xcc)[_0x7ded('0x16')]();});}};}function handleEntityNotFound(_0xa8923e,_0x4778fa){return function(_0x2525c4){if(!_0x2525c4){_0xa8923e[_0x7ded('0x14')](0x194);}return _0x2525c4;};}function handleError(_0x185508,_0x366a06){_0x366a06=_0x366a06||0x1f4;return function(_0x1af5e1){logger[_0x7ded('0x22')](_0x1af5e1[_0x7ded('0x23')]);if(_0x1af5e1[_0x7ded('0x24')]){delete _0x1af5e1[_0x7ded('0x24')];}_0x185508[_0x7ded('0x15')](_0x366a06)[_0x7ded('0x25')](_0x1af5e1);};}exports[_0x7ded('0x26')]=function(_0x24d1a8,_0x5be956){var _0x5b131f={},_0x49db30={},_0x88107a={'count':0x0,'rows':[]};var _0x31ac99=_['map'](db[_0x7ded('0x27')][_0x7ded('0x28')],function(_0x2a5b42){return{'name':_0x2a5b42[_0x7ded('0x29')],'type':_0x2a5b42[_0x7ded('0x2a')]['key']};});_0x49db30['model']=_['map'](_0x31ac99,_0x7ded('0x24'));_0x49db30[_0x7ded('0x2b')]=_[_0x7ded('0x2c')](_0x24d1a8[_0x7ded('0x2b')]);_0x49db30['filters']=_[_0x7ded('0x2d')](_0x49db30[_0x7ded('0x2e')],_0x49db30[_0x7ded('0x2b')]);_0x5b131f[_0x7ded('0x2f')]=_[_0x7ded('0x2d')](_0x49db30[_0x7ded('0x2e')],qs[_0x7ded('0x30')](_0x24d1a8['query'][_0x7ded('0x30')]));_0x5b131f[_0x7ded('0x2f')]=_0x5b131f['attributes'][_0x7ded('0x31')]?_0x5b131f[_0x7ded('0x2f')]:_0x49db30['model'];if(!_0x24d1a8[_0x7ded('0x2b')][_0x7ded('0x32')]('nolimit')){_0x5b131f[_0x7ded('0x19')]=qs[_0x7ded('0x19')](_0x24d1a8[_0x7ded('0x2b')][_0x7ded('0x19')]);_0x5b131f[_0x7ded('0x17')]=qs[_0x7ded('0x17')](_0x24d1a8[_0x7ded('0x2b')]['offset']);}_0x5b131f['order']=qs[_0x7ded('0x33')](_0x24d1a8['query'][_0x7ded('0x33')]);_0x5b131f['where']=qs[_0x7ded('0x34')](_[_0x7ded('0x35')](_0x24d1a8[_0x7ded('0x2b')],_0x49db30[_0x7ded('0x34')]),_0x31ac99);if(_0x24d1a8[_0x7ded('0x2b')][_0x7ded('0x36')]){_0x5b131f[_0x7ded('0x37')]=_['merge'](_0x5b131f[_0x7ded('0x37')],{'$or':_['map'](_0x31ac99,function(_0x4f2230){if(_0x4f2230[_0x7ded('0x2a')]!==_0x7ded('0x38')){var _0x5197ad={};_0x5197ad[_0x4f2230[_0x7ded('0x24')]]={'$like':'%'+_0x24d1a8[_0x7ded('0x2b')][_0x7ded('0x36')]+'%'};return _0x5197ad;}})});}_0x5b131f=_['merge']({},_0x5b131f,_0x24d1a8[_0x7ded('0x39')]);var _0x3d5dd4={'where':_0x5b131f['where']};return db[_0x7ded('0x27')][_0x7ded('0x1a')](_0x3d5dd4)[_0x7ded('0x3a')](function(_0x1363b1){_0x88107a['count']=_0x1363b1;if(_0x24d1a8[_0x7ded('0x2b')][_0x7ded('0x3b')]){_0x5b131f[_0x7ded('0x3c')]=[{'all':!![]}];}return db[_0x7ded('0x27')][_0x7ded('0x3d')](_0x5b131f);})[_0x7ded('0x3a')](function(_0x388b7a){_0x88107a[_0x7ded('0x3e')]=_0x388b7a;return _0x88107a;})[_0x7ded('0x3a')](respondWithFilteredResult(_0x5be956,_0x5b131f))[_0x7ded('0x3f')](handleError(_0x5be956,null));};exports[_0x7ded('0x40')]=function(_0x2a9b50,_0x173f3a){var _0x5041ee={'raw':![],'where':{'id':_0x2a9b50[_0x7ded('0x41')]['id']}},_0x15781d={};_0x15781d[_0x7ded('0x2e')]=_[_0x7ded('0x2c')](db[_0x7ded('0x27')][_0x7ded('0x28')]);_0x15781d[_0x7ded('0x2b')]=_['keys'](_0x2a9b50[_0x7ded('0x2b')]);_0x15781d[_0x7ded('0x34')]=_[_0x7ded('0x2d')](_0x15781d['model'],_0x15781d[_0x7ded('0x2b')]);_0x5041ee[_0x7ded('0x2f')]=_[_0x7ded('0x2d')](_0x15781d['model'],qs[_0x7ded('0x30')](_0x2a9b50[_0x7ded('0x2b')][_0x7ded('0x30')]));_0x5041ee[_0x7ded('0x2f')]=_0x5041ee[_0x7ded('0x2f')][_0x7ded('0x31')]?_0x5041ee[_0x7ded('0x2f')]:_0x15781d[_0x7ded('0x2e')];if(_0x2a9b50[_0x7ded('0x2b')][_0x7ded('0x3b')]){_0x5041ee[_0x7ded('0x3c')]=[{'all':!![]}];}_0x5041ee=_[_0x7ded('0x42')]({},_0x5041ee,_0x2a9b50[_0x7ded('0x39')]);return db[_0x7ded('0x27')][_0x7ded('0x43')](_0x5041ee)[_0x7ded('0x3a')](handleEntityNotFound(_0x173f3a,null))['then'](respondWithResult(_0x173f3a,null))[_0x7ded('0x3f')](handleError(_0x173f3a,null));};exports[_0x7ded('0x44')]=function(_0x4c9bbd,_0x495831){return db[_0x7ded('0x27')]['create'](_0x4c9bbd['body'],{})['then'](respondWithResult(_0x495831,0xc9))[_0x7ded('0x3f')](handleError(_0x495831,null));};exports[_0x7ded('0x20')]=function(_0x3983d4,_0x4078fc){if(_0x3983d4[_0x7ded('0x45')]['id']){delete _0x3983d4[_0x7ded('0x45')]['id'];}return db[_0x7ded('0x27')][_0x7ded('0x43')]({'where':{'id':_0x3983d4['params']['id']}})[_0x7ded('0x3a')](handleEntityNotFound(_0x4078fc,null))['then'](saveUpdates(_0x3983d4['body'],null))[_0x7ded('0x3a')](respondWithResult(_0x4078fc,null))[_0x7ded('0x3f')](handleError(_0x4078fc,null));};exports[_0x7ded('0x21')]=function(_0x27824c,_0x416af3){return db[_0x7ded('0x27')]['find']({'where':{'id':_0x27824c[_0x7ded('0x41')]['id']}})[_0x7ded('0x3a')](handleEntityNotFound(_0x416af3,null))['then'](removeEntity(_0x416af3,null))[_0x7ded('0x3f')](handleError(_0x416af3,null));};exports[_0x7ded('0x46')]=function(_0x48b9b9,_0x190c52,_0x2b3a59){var _0xf18e14={};var _0x588b0e={};var _0x394c0f;var _0x51f155;return db[_0x7ded('0x27')][_0x7ded('0x47')]({'where':{'id':_0x48b9b9[_0x7ded('0x41')]['id']}})[_0x7ded('0x3a')](handleEntityNotFound(_0x190c52,null))['then'](function(_0x54a66e){if(_0x54a66e){_0x394c0f=_0x54a66e;_0x588b0e['model']=_[_0x7ded('0x2c')](db['FreshdeskField'][_0x7ded('0x28')]);_0x588b0e[_0x7ded('0x2b')]=_[_0x7ded('0x2c')](_0x48b9b9[_0x7ded('0x2b')]);_0x588b0e[_0x7ded('0x34')]=_[_0x7ded('0x2d')](_0x588b0e[_0x7ded('0x2e')],_0x588b0e['query']);_0xf18e14[_0x7ded('0x2f')]=_[_0x7ded('0x2d')](_0x588b0e[_0x7ded('0x2e')],qs[_0x7ded('0x30')](_0x48b9b9[_0x7ded('0x2b')][_0x7ded('0x30')]));_0xf18e14[_0x7ded('0x2f')]=_0xf18e14[_0x7ded('0x2f')]['length']?_0xf18e14['attributes']:_0x588b0e['model'];_0xf18e14[_0x7ded('0x48')]=qs[_0x7ded('0x33')](_0x48b9b9['query'][_0x7ded('0x33')]);_0xf18e14[_0x7ded('0x37')]=qs[_0x7ded('0x34')](_[_0x7ded('0x35')](_0x48b9b9[_0x7ded('0x2b')],_0x588b0e[_0x7ded('0x34')]));if(_0x48b9b9['query'][_0x7ded('0x36')]){_0xf18e14[_0x7ded('0x37')]=_[_0x7ded('0x42')](_0xf18e14[_0x7ded('0x37')],{'$or':_[_0x7ded('0x49')](_0xf18e14['attributes'],function(_0x5ab0e9){var _0x1043da={};_0x1043da[_0x5ab0e9]={'$like':'%'+_0x48b9b9[_0x7ded('0x2b')]['filter']+'%'};return _0x1043da;})});}_0xf18e14=_[_0x7ded('0x42')]({},_0xf18e14,_0x48b9b9[_0x7ded('0x39')]);return _0x394c0f[_0x7ded('0x46')](_0xf18e14);}})[_0x7ded('0x3a')](function(_0x40fce5){if(_0x40fce5){_0x51f155=_0x40fce5['length'];if(!_0x48b9b9['query'][_0x7ded('0x32')](_0x7ded('0x4a'))){_0xf18e14[_0x7ded('0x19')]=qs[_0x7ded('0x19')](_0x48b9b9[_0x7ded('0x2b')][_0x7ded('0x19')]);_0xf18e14[_0x7ded('0x17')]=qs[_0x7ded('0x17')](_0x48b9b9['query'][_0x7ded('0x17')]);}return _0x394c0f[_0x7ded('0x46')](_0xf18e14);}})[_0x7ded('0x3a')](function(_0x18cc4c){if(_0x18cc4c){return _0x18cc4c?{'count':_0x51f155,'rows':_0x18cc4c}:null;}})[_0x7ded('0x3a')](respondWithResult(_0x190c52,null))[_0x7ded('0x3f')](handleError(_0x190c52,null));};exports[_0x7ded('0x4b')]=function(_0x22c0df,_0x978097,_0x242a17){var _0x371b16={};var _0x4b09de={};var _0x4f35bc;var _0x39a04f;return db[_0x7ded('0x27')][_0x7ded('0x47')]({'where':{'id':_0x22c0df['params']['id']}})[_0x7ded('0x3a')](handleEntityNotFound(_0x978097,null))['then'](function(_0x12a2ac){if(_0x12a2ac){_0x4f35bc=_0x12a2ac;_0x4b09de[_0x7ded('0x2e')]=_[_0x7ded('0x2c')](db['FreshdeskField']['rawAttributes']);_0x4b09de['query']=_[_0x7ded('0x2c')](_0x22c0df['query']);_0x4b09de[_0x7ded('0x34')]=_[_0x7ded('0x2d')](_0x4b09de[_0x7ded('0x2e')],_0x4b09de['query']);_0x371b16[_0x7ded('0x2f')]=_['intersection'](_0x4b09de['model'],qs[_0x7ded('0x30')](_0x22c0df['query']['fields']));_0x371b16[_0x7ded('0x2f')]=_0x371b16[_0x7ded('0x2f')][_0x7ded('0x31')]?_0x371b16['attributes']:_0x4b09de[_0x7ded('0x2e')];_0x371b16[_0x7ded('0x48')]=qs[_0x7ded('0x33')](_0x22c0df['query'][_0x7ded('0x33')]);_0x371b16[_0x7ded('0x37')]=qs['filters'](_[_0x7ded('0x35')](_0x22c0df[_0x7ded('0x2b')],_0x4b09de[_0x7ded('0x34')]));if(_0x22c0df['query'][_0x7ded('0x36')]){_0x371b16[_0x7ded('0x37')]=_[_0x7ded('0x42')](_0x371b16['where'],{'$or':_['map'](_0x371b16[_0x7ded('0x2f')],function(_0x594877){var _0x5d6d84={};_0x5d6d84[_0x594877]={'$like':'%'+_0x22c0df[_0x7ded('0x2b')][_0x7ded('0x36')]+'%'};return _0x5d6d84;})});}_0x371b16=_[_0x7ded('0x42')]({},_0x371b16,_0x22c0df[_0x7ded('0x39')]);return _0x4f35bc[_0x7ded('0x4b')](_0x371b16);}})[_0x7ded('0x3a')](function(_0x1668b7){if(_0x1668b7){_0x39a04f=_0x1668b7['length'];if(!_0x22c0df[_0x7ded('0x2b')][_0x7ded('0x32')](_0x7ded('0x4a'))){_0x371b16[_0x7ded('0x19')]=qs[_0x7ded('0x19')](_0x22c0df[_0x7ded('0x2b')][_0x7ded('0x19')]);_0x371b16[_0x7ded('0x17')]=qs[_0x7ded('0x17')](_0x22c0df[_0x7ded('0x2b')][_0x7ded('0x17')]);}return _0x4f35bc[_0x7ded('0x4b')](_0x371b16);}})[_0x7ded('0x3a')](function(_0x206e6a){if(_0x206e6a){return _0x206e6a?{'count':_0x39a04f,'rows':_0x206e6a}:null;}})[_0x7ded('0x3a')](respondWithResult(_0x978097,null))[_0x7ded('0x3f')](handleError(_0x978097,null));};exports['getDescriptions']=function(_0x145fea,_0x2c3943,_0x605625){var _0xda8a5b={};var _0x4a34a8={};var _0x5104f7;var _0x24918f;return db[_0x7ded('0x27')]['findOne']({'where':{'id':_0x145fea[_0x7ded('0x41')]['id']}})[_0x7ded('0x3a')](handleEntityNotFound(_0x2c3943,null))[_0x7ded('0x3a')](function(_0x5ed58c){if(_0x5ed58c){_0x5104f7=_0x5ed58c;_0x4a34a8[_0x7ded('0x2e')]=_['keys'](db['FreshdeskField'][_0x7ded('0x28')]);_0x4a34a8[_0x7ded('0x2b')]=_['keys'](_0x145fea[_0x7ded('0x2b')]);_0x4a34a8['filters']=_[_0x7ded('0x2d')](_0x4a34a8[_0x7ded('0x2e')],_0x4a34a8[_0x7ded('0x2b')]);_0xda8a5b[_0x7ded('0x2f')]=_[_0x7ded('0x2d')](_0x4a34a8[_0x7ded('0x2e')],qs[_0x7ded('0x30')](_0x145fea[_0x7ded('0x2b')][_0x7ded('0x30')]));_0xda8a5b[_0x7ded('0x2f')]=_0xda8a5b[_0x7ded('0x2f')]['length']?_0xda8a5b['attributes']:_0x4a34a8[_0x7ded('0x2e')];_0xda8a5b[_0x7ded('0x48')]=qs[_0x7ded('0x33')](_0x145fea[_0x7ded('0x2b')][_0x7ded('0x33')]);_0xda8a5b[_0x7ded('0x37')]=qs['filters'](_[_0x7ded('0x35')](_0x145fea[_0x7ded('0x2b')],_0x4a34a8[_0x7ded('0x34')]));if(_0x145fea[_0x7ded('0x2b')][_0x7ded('0x36')]){_0xda8a5b[_0x7ded('0x37')]=_[_0x7ded('0x42')](_0xda8a5b[_0x7ded('0x37')],{'$or':_['map'](_0xda8a5b['attributes'],function(_0x3f00b7){var _0x21e1b5={};_0x21e1b5[_0x3f00b7]={'$like':'%'+_0x145fea[_0x7ded('0x2b')]['filter']+'%'};return _0x21e1b5;})});}_0xda8a5b=_['merge']({},_0xda8a5b,_0x145fea[_0x7ded('0x39')]);return _0x5104f7[_0x7ded('0x4c')](_0xda8a5b);}})[_0x7ded('0x3a')](function(_0x183cbb){if(_0x183cbb){_0x24918f=_0x183cbb[_0x7ded('0x31')];if(!_0x145fea['query'][_0x7ded('0x32')](_0x7ded('0x4a'))){_0xda8a5b[_0x7ded('0x19')]=qs[_0x7ded('0x19')](_0x145fea['query'][_0x7ded('0x19')]);_0xda8a5b['offset']=qs['offset'](_0x145fea[_0x7ded('0x2b')][_0x7ded('0x17')]);}return _0x5104f7[_0x7ded('0x4c')](_0xda8a5b);}})[_0x7ded('0x3a')](function(_0x32c056){if(_0x32c056){return _0x32c056?{'count':_0x24918f,'rows':_0x32c056}:null;}})['then'](respondWithResult(_0x2c3943,null))['catch'](handleError(_0x2c3943,null));};exports[_0x7ded('0x4d')]=function(_0x8e4c3a,_0x14cdd8,_0x328e5a){var _0x18ff0f={};var _0x2bb1ab={};var _0x46ab9a;var _0x2d72eb;return db[_0x7ded('0x27')][_0x7ded('0x47')]({'where':{'id':_0x8e4c3a[_0x7ded('0x41')]['id']}})[_0x7ded('0x3a')](handleEntityNotFound(_0x14cdd8,null))[_0x7ded('0x3a')](function(_0x50013a){if(_0x50013a){_0x46ab9a=_0x50013a;_0x2bb1ab[_0x7ded('0x2e')]=_[_0x7ded('0x2c')](db[_0x7ded('0x4e')]['rawAttributes']);_0x2bb1ab[_0x7ded('0x2b')]=_[_0x7ded('0x2c')](_0x8e4c3a[_0x7ded('0x2b')]);_0x2bb1ab[_0x7ded('0x34')]=_['intersection'](_0x2bb1ab[_0x7ded('0x2e')],_0x2bb1ab[_0x7ded('0x2b')]);_0x18ff0f[_0x7ded('0x2f')]=_['intersection'](_0x2bb1ab[_0x7ded('0x2e')],qs[_0x7ded('0x30')](_0x8e4c3a[_0x7ded('0x2b')][_0x7ded('0x30')]));_0x18ff0f[_0x7ded('0x2f')]=_0x18ff0f['attributes']['length']?_0x18ff0f[_0x7ded('0x2f')]:_0x2bb1ab[_0x7ded('0x2e')];_0x18ff0f[_0x7ded('0x48')]=qs[_0x7ded('0x33')](_0x8e4c3a[_0x7ded('0x2b')]['sort']);_0x18ff0f[_0x7ded('0x37')]=qs[_0x7ded('0x34')](_['pick'](_0x8e4c3a[_0x7ded('0x2b')],_0x2bb1ab[_0x7ded('0x34')]));if(_0x8e4c3a[_0x7ded('0x2b')][_0x7ded('0x36')]){_0x18ff0f[_0x7ded('0x37')]=_['merge'](_0x18ff0f['where'],{'$or':_['map'](_0x18ff0f['attributes'],function(_0x2fe043){var _0x22809e={};_0x22809e[_0x2fe043]={'$like':'%'+_0x8e4c3a[_0x7ded('0x2b')]['filter']+'%'};return _0x22809e;})});}_0x18ff0f=_[_0x7ded('0x42')]({},_0x18ff0f,_0x8e4c3a[_0x7ded('0x39')]);return _0x46ab9a[_0x7ded('0x4d')](_0x18ff0f);}})[_0x7ded('0x3a')](function(_0x10df75){if(_0x10df75){_0x2d72eb=_0x10df75[_0x7ded('0x31')];if(!_0x8e4c3a['query'][_0x7ded('0x32')](_0x7ded('0x4a'))){_0x18ff0f[_0x7ded('0x19')]=qs['limit'](_0x8e4c3a[_0x7ded('0x2b')]['limit']);_0x18ff0f[_0x7ded('0x17')]=qs[_0x7ded('0x17')](_0x8e4c3a[_0x7ded('0x2b')][_0x7ded('0x17')]);}return _0x46ab9a['getTags'](_0x18ff0f);}})['then'](function(_0x11a4a8){if(_0x11a4a8){return _0x11a4a8?{'count':_0x2d72eb,'rows':_0x11a4a8}:null;}})[_0x7ded('0x3a')](respondWithResult(_0x14cdd8,null))[_0x7ded('0x3f')](handleError(_0x14cdd8,null));};exports[_0x7ded('0x4f')]=function(_0xbc4b7e,_0x33a18d,_0x1b163a){if(_0xbc4b7e[_0x7ded('0x45')]['id']){delete _0xbc4b7e[_0x7ded('0x45')]['id'];}return db[_0x7ded('0x27')][_0x7ded('0x47')]({'where':{'id':_0xbc4b7e['params']['id']}})[_0x7ded('0x3a')](handleEntityNotFound(_0x33a18d,null))['then'](function(_0x44ce00){if(_0x44ce00){return _0x44ce00['setTags'](_0xbc4b7e[_0x7ded('0x45')][_0x7ded('0x50')]||[]);}return null;})[_0x7ded('0x3a')](respondWithResult(_0x33a18d,null))[_0x7ded('0x3f')](handleError(_0x33a18d,null));};
\ No newline at end of file
index e0b5952..31f7d1b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec02=['FreshdeskConfiguration','../../config/logger','bluebird','path','../../config/environment','./intFreshdeskConfiguration.attributes','exports'];(function(_0x42c6b8,_0x192769){var _0x3f4df1=function(_0x52bf77){while(--_0x52bf77){_0x42c6b8['push'](_0x42c6b8['shift']());}};_0x3f4df1(++_0x192769);}(_0xec02,0x158));var _0x2ec0=function(_0x53ccf2,_0x13cb67){_0x53ccf2=_0x53ccf2-0x0;var _0x5a2964=_0xec02[_0x53ccf2];return _0x5a2964;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x2ec0('0x0'))('api');var moment=require('moment');var BPromise=require(_0x2ec0('0x1'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2ec0('0x2'));var rimraf=require('rimraf');var config=require(_0x2ec0('0x3'));var attributes=require(_0x2ec0('0x4'));module[_0x2ec0('0x5')]=function(_0x1c7ed4,_0xf85dca){return _0x1c7ed4['define'](_0x2ec0('0x6'),attributes,{'tableName':'int_freshdesk_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x00b7=['util','../../config/logger','api','bluebird','request-promise','path','rimraf','./intFreshdeskConfiguration.attributes','exports','define','FreshdeskConfiguration','int_freshdesk_configurations','lodash'];(function(_0x7d3b45,_0x460881){var _0x1c8edc=function(_0x40881a){while(--_0x40881a){_0x7d3b45['push'](_0x7d3b45['shift']());}};_0x1c8edc(++_0x460881);}(_0x00b7,0xa8));var _0x700b=function(_0x45bf2f,_0x14efce){_0x45bf2f=_0x45bf2f-0x0;var _0x202857=_0x00b7[_0x45bf2f];return _0x202857;};'use strict';var _=require(_0x700b('0x0'));var util=require(_0x700b('0x1'));var logger=require(_0x700b('0x2'))(_0x700b('0x3'));var moment=require('moment');var BPromise=require(_0x700b('0x4'));var rp=require(_0x700b('0x5'));var fs=require('fs');var path=require(_0x700b('0x6'));var rimraf=require(_0x700b('0x7'));var config=require('../../config/environment');var attributes=require(_0x700b('0x8'));module[_0x700b('0x9')]=function(_0x4a9294,_0x3a8079){return _0x4a9294[_0x700b('0xa')](_0x700b('0xb'),attributes,{'tableName':_0x700b('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 82a1072..fd5520f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1856=['randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','request','info','FreshdeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','FreshdeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','lodash','util','bluebird'];(function(_0x413feb,_0x10477f){var _0x40ee88=function(_0x32a3f6){while(--_0x32a3f6){_0x413feb['push'](_0x413feb['shift']());}};_0x40ee88(++_0x10477f);}(_0x1856,0x1b5));var _0x6185=function(_0xe64c1,_0x107b70){_0xe64c1=_0xe64c1-0x0;var _0x2732d9=_0x1856[_0xe64c1];return _0x2732d9;};'use strict';var _=require(_0x6185('0x0'));var util=require(_0x6185('0x1'));var moment=require('moment');var BPromise=require(_0x6185('0x2'));var rs=require(_0x6185('0x3'));var fs=require('fs');var Redis=require(_0x6185('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x6185('0x5'));var logger=require(_0x6185('0x6'))(_0x6185('0x7'));var config=require(_0x6185('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x6185('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x44e480,_0x1aa8ff,_0x5c9d7c){return new BPromise(function(_0x4b033c,_0x545f39){return client[_0x6185('0xa')](_0x44e480,_0x5c9d7c)['then'](function(_0x415da4){logger[_0x6185('0xb')](_0x6185('0xc'),_0x1aa8ff,_0x6185('0xd'));logger[_0x6185('0xe')](_0x6185('0xf'),_0x1aa8ff,_0x6185('0xd'),JSON[_0x6185('0x10')](_0x415da4));if(_0x415da4[_0x6185('0x11')]){if(_0x415da4[_0x6185('0x11')]['code']===0x1f4){logger[_0x6185('0x11')]('FreshdeskConfiguration,\x20%s,\x20%s',_0x1aa8ff,_0x415da4[_0x6185('0x11')][_0x6185('0x12')]);return _0x545f39(_0x415da4[_0x6185('0x11')][_0x6185('0x12')]);}logger[_0x6185('0x11')]('FreshdeskConfiguration,\x20%s,\x20%s',_0x1aa8ff,_0x415da4[_0x6185('0x11')][_0x6185('0x12')]);return _0x4b033c(_0x415da4[_0x6185('0x11')]['message']);}else{logger[_0x6185('0xb')](_0x6185('0xc'),_0x1aa8ff,'request\x20sent');_0x4b033c(_0x415da4['result']['message']);}})[_0x6185('0x13')](function(_0x186f0a){logger[_0x6185('0x11')](_0x6185('0xc'),_0x1aa8ff,_0x186f0a);_0x545f39(_0x186f0a);});});}
\ No newline at end of file
+var _0x6690=['FreshdeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch','util','moment','bluebird','randomstring','ioredis','../../config/logger','../../config/environment','jayson/promise','client','then','FreshdeskConfiguration,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x3764e9,_0x42b19c){var _0x8074a7=function(_0x56345d){while(--_0x56345d){_0x3764e9['push'](_0x3764e9['shift']());}};_0x8074a7(++_0x42b19c);}(_0x6690,0xf7));var _0x0669=function(_0x4fc9e6,_0xc51915){_0x4fc9e6=_0x4fc9e6-0x0;var _0x551d28=_0x6690[_0x4fc9e6];return _0x551d28;};'use strict';var _=require('lodash');var util=require(_0x0669('0x0'));var moment=require(_0x0669('0x1'));var BPromise=require(_0x0669('0x2'));var rs=require(_0x0669('0x3'));var fs=require('fs');var Redis=require(_0x0669('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x0669('0x5'))('rpc');var config=require(_0x0669('0x6'));var jayson=require(_0x0669('0x7'));var client=jayson[_0x0669('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x29b825,_0x162cfa,_0x544f7c){return new BPromise(function(_0x4beb9c,_0x10e0c2){return client['request'](_0x29b825,_0x544f7c)[_0x0669('0x9')](function(_0x1d2946){logger['info'](_0x0669('0xa'),_0x162cfa,_0x0669('0xb'));logger[_0x0669('0xc')](_0x0669('0xd'),_0x162cfa,_0x0669('0xb'),JSON[_0x0669('0xe')](_0x1d2946));if(_0x1d2946[_0x0669('0xf')]){if(_0x1d2946[_0x0669('0xf')]['code']===0x1f4){logger[_0x0669('0xf')](_0x0669('0xa'),_0x162cfa,_0x1d2946[_0x0669('0xf')][_0x0669('0x10')]);return _0x10e0c2(_0x1d2946[_0x0669('0xf')][_0x0669('0x10')]);}logger['error'](_0x0669('0xa'),_0x162cfa,_0x1d2946[_0x0669('0xf')]['message']);return _0x4beb9c(_0x1d2946[_0x0669('0xf')][_0x0669('0x10')]);}else{logger[_0x0669('0x11')](_0x0669('0xa'),_0x162cfa,'request\x20sent');_0x4beb9c(_0x1d2946[_0x0669('0x12')][_0x0669('0x10')]);}})[_0x0669('0x13')](function(_0x37023b){logger['error'](_0x0669('0xa'),_0x162cfa,_0x37023b);_0x10e0c2(_0x37023b);});});}
\ No newline at end of file
index 6d8c627..fad4b67 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a8c=['util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intFreshdeskField.controller','get','isAuthenticated','index','/:id','update','exports','multer'];(function(_0x19e53d,_0x753a2f){var _0x593edf=function(_0x4b53b7){while(--_0x4b53b7){_0x19e53d['push'](_0x19e53d['shift']());}};_0x593edf(++_0x753a2f);}(_0x6a8c,0xef));var _0xc6a8=function(_0x16fe4c,_0x2421e8){_0x16fe4c=_0x16fe4c-0x0;var _0x9999d=_0x6a8c[_0x16fe4c];return _0x9999d;};'use strict';var multer=require(_0xc6a8('0x0'));var util=require(_0xc6a8('0x1'));var path=require(_0xc6a8('0x2'));var timeout=require(_0xc6a8('0x3'));var express=require(_0xc6a8('0x4'));var router=express[_0xc6a8('0x5')]();var fs_extra=require(_0xc6a8('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xc6a8('0x7'));var config=require(_0xc6a8('0x8'));var controller=require(_0xc6a8('0x9'));router[_0xc6a8('0xa')]('/',auth[_0xc6a8('0xb')](),controller[_0xc6a8('0xc')]);router[_0xc6a8('0xa')]('/:id',auth[_0xc6a8('0xb')](),controller['show']);router['post']('/',auth[_0xc6a8('0xb')](),controller['create']);router['put'](_0xc6a8('0xd'),auth[_0xc6a8('0xb')](),controller[_0xc6a8('0xe')]);router['delete'](_0xc6a8('0xd'),auth[_0xc6a8('0xb')](),controller['destroy']);module[_0xc6a8('0xf')]=router;
\ No newline at end of file
+var _0xa4f8=['util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/:id','show','create','put','update','delete','destroy','exports','multer'];(function(_0x2b98f4,_0x19bacd){var _0x452450=function(_0x140274){while(--_0x140274){_0x2b98f4['push'](_0x2b98f4['shift']());}};_0x452450(++_0x19bacd);}(_0xa4f8,0x1df));var _0x8a4f=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xa4f8[_0x321bb2];return _0x9c12ed;};'use strict';var multer=require(_0x8a4f('0x0'));var util=require(_0x8a4f('0x1'));var path=require(_0x8a4f('0x2'));var timeout=require(_0x8a4f('0x3'));var express=require(_0x8a4f('0x4'));var router=express['Router']();var fs_extra=require(_0x8a4f('0x5'));var auth=require(_0x8a4f('0x6'));var interaction=require(_0x8a4f('0x7'));var config=require(_0x8a4f('0x8'));var controller=require('./intFreshdeskField.controller');router['get']('/',auth[_0x8a4f('0x9')](),controller[_0x8a4f('0xa')]);router[_0x8a4f('0xb')](_0x8a4f('0xc'),auth['isAuthenticated'](),controller[_0x8a4f('0xd')]);router['post']('/',auth['isAuthenticated'](),controller[_0x8a4f('0xe')]);router[_0x8a4f('0xf')](_0x8a4f('0xc'),auth[_0x8a4f('0x9')](),controller[_0x8a4f('0x10')]);router[_0x8a4f('0x11')](_0x8a4f('0xc'),auth[_0x8a4f('0x9')](),controller[_0x8a4f('0x12')]);module[_0x8a4f('0x13')]=router;
\ No newline at end of file
index dec2e2c..fbedc25 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe7bc=['ENUM','sequelize','exports','string','customVariable','picklist','STRING'];(function(_0x2de0bb,_0x5defee){var _0x276417=function(_0x1cbf8a){while(--_0x1cbf8a){_0x2de0bb['push'](_0x2de0bb['shift']());}};_0x276417(++_0x5defee);}(_0xe7bc,0x78));var _0xce7b=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0xe7bc[_0x40a045];return _0x1a687c;};'use strict';var Sequelize=require(_0xce7b('0x0'));module[_0xce7b('0x1')]={'type':{'type':Sequelize['ENUM'](_0xce7b('0x2'),'variable',_0xce7b('0x3'),'keyValue',_0xce7b('0x4')),'defaultValue':_0xce7b('0x2')},'content':{'type':Sequelize[_0xce7b('0x5')]},'key':{'type':Sequelize[_0xce7b('0x5')]},'keyType':{'type':Sequelize[_0xce7b('0x6')](_0xce7b('0x2'),'variable','customVariable')},'keyContent':{'type':Sequelize[_0xce7b('0x5')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0xce7b('0x5')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xa20a=['STRING','BOOLEAN','exports','ENUM','string','variable','keyValue'];(function(_0x4bd748,_0x2f731d){var _0x3c9e26=function(_0x22c2a1){while(--_0x22c2a1){_0x4bd748['push'](_0x4bd748['shift']());}};_0x3c9e26(++_0x2f731d);}(_0xa20a,0xb1));var _0xaa20=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0xa20a[_0x57b54c];return _0x59cc19;};'use strict';var Sequelize=require('sequelize');module[_0xaa20('0x0')]={'type':{'type':Sequelize[_0xaa20('0x1')](_0xaa20('0x2'),_0xaa20('0x3'),'customVariable',_0xaa20('0x4'),'picklist'),'defaultValue':_0xaa20('0x2')},'content':{'type':Sequelize[_0xaa20('0x5')]},'key':{'type':Sequelize[_0xaa20('0x5')]},'keyType':{'type':Sequelize['ENUM'](_0xaa20('0x2'),_0xaa20('0x3'),'customVariable')},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0xaa20('0x5')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0xaa20('0x6')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xaa20('0x5')]}};
\ No newline at end of file
index 5cb3382..a6f9db5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb469=['undefined','count','limit','set','Content-Range','apply','update','then','error','stack','name','index','map','FreshdeskField','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','offset','order','sort','pick','filter','where','merge','VIRTUAL','include','rows','catch','params','includeAll','options','find','body','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','ejs','lodash','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json'];(function(_0x38c652,_0x1ea1b7){var _0x218a37=function(_0x5dcb2a){while(--_0x5dcb2a){_0x38c652['push'](_0x38c652['shift']());}};_0x218a37(++_0x1ea1b7);}(_0xb469,0x13b));var _0x9b46=function(_0x1dabcf,_0x19161a){_0x1dabcf=_0x1dabcf-0x0;var _0x2c98a7=_0xb469[_0x1dabcf];return _0x2c98a7;};'use strict';var emlformat=require(_0x9b46('0x0'));var rimraf=require(_0x9b46('0x1'));var zipdir=require(_0x9b46('0x2'));var jsonpatch=require(_0x9b46('0x3'));var rp=require(_0x9b46('0x4'));var moment=require(_0x9b46('0x5'));var BPromise=require(_0x9b46('0x6'));var Mustache=require('mustache');var util=require(_0x9b46('0x7'));var path=require(_0x9b46('0x8'));var sox=require('sox');var csv=require(_0x9b46('0x9'));var ejs=require(_0x9b46('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9b46('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x9b46('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x9b46('0x9'));var querystring=require(_0x9b46('0xd'));var Papa=require(_0x9b46('0xe'));var Redis=require('ioredis');var authService=require(_0x9b46('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x9b46('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x9b46('0x11'))('api');var utils=require(_0x9b46('0x12'));var config=require(_0x9b46('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x9b46('0x14'))['db'];function respondWithStatusCode(_0x417df5,_0x5b65c2){_0x5b65c2=_0x5b65c2||0xcc;return function(_0x14362a){if(_0x14362a){return _0x417df5[_0x9b46('0x15')](_0x5b65c2);}return _0x417df5[_0x9b46('0x16')](_0x5b65c2)[_0x9b46('0x17')]();};}function respondWithResult(_0xa8f4ac,_0x35c5c1){_0x35c5c1=_0x35c5c1||0xc8;return function(_0x2136bc){if(_0x2136bc){return _0xa8f4ac[_0x9b46('0x16')](_0x35c5c1)[_0x9b46('0x18')](_0x2136bc);}};}function respondWithFilteredResult(_0x178293,_0xbc1ba6){return function(_0x135cc2){if(_0x135cc2){var _0x1e6911=typeof _0xbc1ba6['offset']==='undefined'&&typeof _0xbc1ba6['limit']===_0x9b46('0x19');var _0x5a380c=_0x135cc2[_0x9b46('0x1a')];var _0x5c5cc9=_0x1e6911?0x0:_0xbc1ba6['offset'];var _0x3d9efa=_0x1e6911?_0x135cc2['count']:_0xbc1ba6['offset']+_0xbc1ba6[_0x9b46('0x1b')];var _0x3a15cc;if(_0x3d9efa>=_0x5a380c){_0x3d9efa=_0x5a380c;_0x3a15cc=0xc8;}else{_0x3a15cc=0xce;}_0x178293['status'](_0x3a15cc);return _0x178293[_0x9b46('0x1c')](_0x9b46('0x1d'),_0x5c5cc9+'-'+_0x3d9efa+'/'+_0x5a380c)['json'](_0x135cc2);}return null;};}function patchUpdates(_0x55aece){return function(_0xbec2ea){try{jsonpatch[_0x9b46('0x1e')](_0xbec2ea,_0x55aece,!![]);}catch(_0x204098){return BPromise['reject'](_0x204098);}return _0xbec2ea['save']();};}function saveUpdates(_0x2b3440,_0x51d2ca){return function(_0x21dacb){if(_0x21dacb){return _0x21dacb[_0x9b46('0x1f')](_0x2b3440)['then'](function(_0xadff19){return _0xadff19;});}return null;};}function removeEntity(_0x5182b1,_0x141cb6){return function(_0x2b6f72){if(_0x2b6f72){return _0x2b6f72['destroy']()[_0x9b46('0x20')](function(){_0x5182b1[_0x9b46('0x16')](0xcc)[_0x9b46('0x17')]();});}};}function handleEntityNotFound(_0x319930,_0x33ea06){return function(_0x3e4899){if(!_0x3e4899){_0x319930[_0x9b46('0x15')](0x194);}return _0x3e4899;};}function handleError(_0x5dc377,_0xdd756c){_0xdd756c=_0xdd756c||0x1f4;return function(_0x3ac37e){logger[_0x9b46('0x21')](_0x3ac37e[_0x9b46('0x22')]);if(_0x3ac37e[_0x9b46('0x23')]){delete _0x3ac37e[_0x9b46('0x23')];}_0x5dc377[_0x9b46('0x16')](_0xdd756c)['send'](_0x3ac37e);};}exports[_0x9b46('0x24')]=function(_0xee519e,_0x3630bf){var _0x376ccc={},_0x28b289={},_0x869993={'count':0x0,'rows':[]};var _0xc062ec=_[_0x9b46('0x25')](db[_0x9b46('0x26')][_0x9b46('0x27')],function(_0x2e1c51){return{'name':_0x2e1c51['fieldName'],'type':_0x2e1c51[_0x9b46('0x28')][_0x9b46('0x29')]};});_0x28b289[_0x9b46('0x2a')]=_[_0x9b46('0x25')](_0xc062ec,_0x9b46('0x23'));_0x28b289[_0x9b46('0x2b')]=_[_0x9b46('0x2c')](_0xee519e[_0x9b46('0x2b')]);_0x28b289[_0x9b46('0x2d')]=_[_0x9b46('0x2e')](_0x28b289[_0x9b46('0x2a')],_0x28b289['query']);_0x376ccc[_0x9b46('0x2f')]=_['intersection'](_0x28b289[_0x9b46('0x2a')],qs[_0x9b46('0x30')](_0xee519e[_0x9b46('0x2b')]['fields']));_0x376ccc[_0x9b46('0x2f')]=_0x376ccc[_0x9b46('0x2f')][_0x9b46('0x31')]?_0x376ccc[_0x9b46('0x2f')]:_0x28b289[_0x9b46('0x2a')];if(!_0xee519e['query']['hasOwnProperty'](_0x9b46('0x32'))){_0x376ccc[_0x9b46('0x1b')]=qs[_0x9b46('0x1b')](_0xee519e[_0x9b46('0x2b')]['limit']);_0x376ccc[_0x9b46('0x33')]=qs['offset'](_0xee519e[_0x9b46('0x2b')][_0x9b46('0x33')]);}_0x376ccc[_0x9b46('0x34')]=qs[_0x9b46('0x35')](_0xee519e['query'][_0x9b46('0x35')]);_0x376ccc['where']=qs[_0x9b46('0x2d')](_[_0x9b46('0x36')](_0xee519e[_0x9b46('0x2b')],_0x28b289[_0x9b46('0x2d')]),_0xc062ec);if(_0xee519e[_0x9b46('0x2b')][_0x9b46('0x37')]){_0x376ccc[_0x9b46('0x38')]=_[_0x9b46('0x39')](_0x376ccc[_0x9b46('0x38')],{'$or':_[_0x9b46('0x25')](_0xc062ec,function(_0x1c4147){if(_0x1c4147['type']!==_0x9b46('0x3a')){var _0x5aac02={};_0x5aac02[_0x1c4147[_0x9b46('0x23')]]={'$like':'%'+_0xee519e[_0x9b46('0x2b')]['filter']+'%'};return _0x5aac02;}})});}_0x376ccc=_[_0x9b46('0x39')]({},_0x376ccc,_0xee519e['options']);var _0x416538={'where':_0x376ccc['where']};return db[_0x9b46('0x26')][_0x9b46('0x1a')](_0x416538)[_0x9b46('0x20')](function(_0x22ab5d){_0x869993[_0x9b46('0x1a')]=_0x22ab5d;if(_0xee519e['query']['includeAll']){_0x376ccc[_0x9b46('0x3b')]=[{'all':!![]}];}return db['FreshdeskField']['findAll'](_0x376ccc);})['then'](function(_0x4e1911){_0x869993[_0x9b46('0x3c')]=_0x4e1911;return _0x869993;})['then'](respondWithFilteredResult(_0x3630bf,_0x376ccc))[_0x9b46('0x3d')](handleError(_0x3630bf,null));};exports['show']=function(_0x3fa46c,_0xe807bf){var _0x2e92aa={'raw':!![],'where':{'id':_0x3fa46c[_0x9b46('0x3e')]['id']}},_0xa14b={};_0xa14b[_0x9b46('0x2a')]=_[_0x9b46('0x2c')](db[_0x9b46('0x26')][_0x9b46('0x27')]);_0xa14b['query']=_[_0x9b46('0x2c')](_0x3fa46c[_0x9b46('0x2b')]);_0xa14b[_0x9b46('0x2d')]=_[_0x9b46('0x2e')](_0xa14b[_0x9b46('0x2a')],_0xa14b[_0x9b46('0x2b')]);_0x2e92aa[_0x9b46('0x2f')]=_[_0x9b46('0x2e')](_0xa14b[_0x9b46('0x2a')],qs[_0x9b46('0x30')](_0x3fa46c[_0x9b46('0x2b')][_0x9b46('0x30')]));_0x2e92aa[_0x9b46('0x2f')]=_0x2e92aa[_0x9b46('0x2f')]['length']?_0x2e92aa['attributes']:_0xa14b[_0x9b46('0x2a')];if(_0x3fa46c[_0x9b46('0x2b')][_0x9b46('0x3f')]){_0x2e92aa['include']=[{'all':!![]}];}_0x2e92aa=_['merge']({},_0x2e92aa,_0x3fa46c[_0x9b46('0x40')]);return db[_0x9b46('0x26')][_0x9b46('0x41')](_0x2e92aa)[_0x9b46('0x20')](handleEntityNotFound(_0xe807bf,null))[_0x9b46('0x20')](respondWithResult(_0xe807bf,null))[_0x9b46('0x3d')](handleError(_0xe807bf,null));};exports['create']=function(_0x6d1e73,_0x32e34d){return db[_0x9b46('0x26')]['create'](_0x6d1e73[_0x9b46('0x42')],{})['then'](respondWithResult(_0x32e34d,0xc9))[_0x9b46('0x3d')](handleError(_0x32e34d,null));};exports[_0x9b46('0x1f')]=function(_0x16e6d8,_0x566bad){if(_0x16e6d8[_0x9b46('0x42')]['id']){delete _0x16e6d8[_0x9b46('0x42')]['id'];}return db[_0x9b46('0x26')][_0x9b46('0x41')]({'where':{'id':_0x16e6d8[_0x9b46('0x3e')]['id']}})[_0x9b46('0x20')](handleEntityNotFound(_0x566bad,null))['then'](saveUpdates(_0x16e6d8[_0x9b46('0x42')],null))[_0x9b46('0x20')](respondWithResult(_0x566bad,null))[_0x9b46('0x3d')](handleError(_0x566bad,null));};exports[_0x9b46('0x43')]=function(_0x362311,_0x36a492){return db['FreshdeskField'][_0x9b46('0x41')]({'where':{'id':_0x362311['params']['id']}})[_0x9b46('0x20')](handleEntityNotFound(_0x36a492,null))[_0x9b46('0x20')](removeEntity(_0x36a492,null))[_0x9b46('0x3d')](handleError(_0x36a492,null));};
\ No newline at end of file
+var _0x8cc8=['jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','end','error','stack','name','index','FreshdeskField','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','pick','merge','map','VIRTUAL','filter','options','where','includeAll','include','findAll','rows','catch','show','params','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','squel','crypto'];(function(_0x2aecb2,_0x343312){var _0x3ebb80=function(_0x19fab3){while(--_0x19fab3){_0x2aecb2['push'](_0x2aecb2['shift']());}};_0x3ebb80(++_0x343312);}(_0x8cc8,0x177));var _0x88cc=function(_0x1bf0d7,_0x242ea4){_0x1bf0d7=_0x1bf0d7-0x0;var _0x2c7a97=_0x8cc8[_0x1bf0d7];return _0x2c7a97;};'use strict';var emlformat=require(_0x88cc('0x0'));var rimraf=require(_0x88cc('0x1'));var zipdir=require(_0x88cc('0x2'));var jsonpatch=require(_0x88cc('0x3'));var rp=require(_0x88cc('0x4'));var moment=require(_0x88cc('0x5'));var BPromise=require(_0x88cc('0x6'));var Mustache=require(_0x88cc('0x7'));var util=require(_0x88cc('0x8'));var path=require(_0x88cc('0x9'));var sox=require(_0x88cc('0xa'));var csv=require(_0x88cc('0xb'));var ejs=require(_0x88cc('0xc'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x88cc('0xd'));var crypto=require(_0x88cc('0xe'));var jsforce=require(_0x88cc('0xf'));var deskjs=require(_0x88cc('0x10'));var toCsv=require('to-csv');var querystring=require(_0x88cc('0x11'));var Papa=require(_0x88cc('0x12'));var Redis=require('ioredis');var authService=require(_0x88cc('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x88cc('0x14'));var hardwareService=require(_0x88cc('0x15'));var logger=require(_0x88cc('0x16'))(_0x88cc('0x17'));var utils=require('../../config/utils');var config=require(_0x88cc('0x18'));var licenseUtil=require(_0x88cc('0x19'));var db=require(_0x88cc('0x1a'))['db'];function respondWithStatusCode(_0x2219e1,_0x297ca5){_0x297ca5=_0x297ca5||0xcc;return function(_0x1289d0){if(_0x1289d0){return _0x2219e1[_0x88cc('0x1b')](_0x297ca5);}return _0x2219e1[_0x88cc('0x1c')](_0x297ca5)['end']();};}function respondWithResult(_0x20193f,_0x3d1a38){_0x3d1a38=_0x3d1a38||0xc8;return function(_0x3d462b){if(_0x3d462b){return _0x20193f[_0x88cc('0x1c')](_0x3d1a38)[_0x88cc('0x1d')](_0x3d462b);}};}function respondWithFilteredResult(_0x4255bb,_0x49741f){return function(_0x3305f3){if(_0x3305f3){var _0x468101=typeof _0x49741f[_0x88cc('0x1e')]===_0x88cc('0x1f')&&typeof _0x49741f[_0x88cc('0x20')]==='undefined';var _0x30edea=_0x3305f3[_0x88cc('0x21')];var _0x34fb65=_0x468101?0x0:_0x49741f[_0x88cc('0x1e')];var _0x33144a=_0x468101?_0x3305f3['count']:_0x49741f[_0x88cc('0x1e')]+_0x49741f[_0x88cc('0x20')];var _0x5dbfef;if(_0x33144a>=_0x30edea){_0x33144a=_0x30edea;_0x5dbfef=0xc8;}else{_0x5dbfef=0xce;}_0x4255bb[_0x88cc('0x1c')](_0x5dbfef);return _0x4255bb['set'](_0x88cc('0x22'),_0x34fb65+'-'+_0x33144a+'/'+_0x30edea)[_0x88cc('0x1d')](_0x3305f3);}return null;};}function patchUpdates(_0x50cdaf){return function(_0x2cfe2d){try{jsonpatch[_0x88cc('0x23')](_0x2cfe2d,_0x50cdaf,!![]);}catch(_0xe55e9d){return BPromise[_0x88cc('0x24')](_0xe55e9d);}return _0x2cfe2d[_0x88cc('0x25')]();};}function saveUpdates(_0xa2e3eb,_0x4e5edb){return function(_0x155635){if(_0x155635){return _0x155635[_0x88cc('0x26')](_0xa2e3eb)[_0x88cc('0x27')](function(_0xac6e45){return _0xac6e45;});}return null;};}function removeEntity(_0x443631,_0x3c2353){return function(_0x420279){if(_0x420279){return _0x420279[_0x88cc('0x28')]()[_0x88cc('0x27')](function(){_0x443631[_0x88cc('0x1c')](0xcc)[_0x88cc('0x29')]();});}};}function handleEntityNotFound(_0x35c695,_0x22d711){return function(_0x5657ef){if(!_0x5657ef){_0x35c695[_0x88cc('0x1b')](0x194);}return _0x5657ef;};}function handleError(_0x337bab,_0x44ae48){_0x44ae48=_0x44ae48||0x1f4;return function(_0x3474b6){logger[_0x88cc('0x2a')](_0x3474b6[_0x88cc('0x2b')]);if(_0x3474b6[_0x88cc('0x2c')]){delete _0x3474b6[_0x88cc('0x2c')];}_0x337bab['status'](_0x44ae48)['send'](_0x3474b6);};}exports[_0x88cc('0x2d')]=function(_0x45f1c6,_0x1c1d57){var _0x5b77ae={},_0x570ea0={},_0x18ced1={'count':0x0,'rows':[]};var _0x2cc552=_['map'](db[_0x88cc('0x2e')][_0x88cc('0x2f')],function(_0x10248e){return{'name':_0x10248e['fieldName'],'type':_0x10248e[_0x88cc('0x30')][_0x88cc('0x31')]};});_0x570ea0[_0x88cc('0x32')]=_['map'](_0x2cc552,_0x88cc('0x2c'));_0x570ea0[_0x88cc('0x33')]=_[_0x88cc('0x34')](_0x45f1c6[_0x88cc('0x33')]);_0x570ea0[_0x88cc('0x35')]=_[_0x88cc('0x36')](_0x570ea0['model'],_0x570ea0[_0x88cc('0x33')]);_0x5b77ae[_0x88cc('0x37')]=_[_0x88cc('0x36')](_0x570ea0[_0x88cc('0x32')],qs[_0x88cc('0x38')](_0x45f1c6[_0x88cc('0x33')][_0x88cc('0x38')]));_0x5b77ae['attributes']=_0x5b77ae['attributes'][_0x88cc('0x39')]?_0x5b77ae[_0x88cc('0x37')]:_0x570ea0[_0x88cc('0x32')];if(!_0x45f1c6[_0x88cc('0x33')][_0x88cc('0x3a')]('nolimit')){_0x5b77ae[_0x88cc('0x20')]=qs[_0x88cc('0x20')](_0x45f1c6[_0x88cc('0x33')][_0x88cc('0x20')]);_0x5b77ae[_0x88cc('0x1e')]=qs[_0x88cc('0x1e')](_0x45f1c6[_0x88cc('0x33')][_0x88cc('0x1e')]);}_0x5b77ae[_0x88cc('0x3b')]=qs[_0x88cc('0x3c')](_0x45f1c6[_0x88cc('0x33')][_0x88cc('0x3c')]);_0x5b77ae['where']=qs[_0x88cc('0x35')](_[_0x88cc('0x3d')](_0x45f1c6['query'],_0x570ea0[_0x88cc('0x35')]),_0x2cc552);if(_0x45f1c6['query']['filter']){_0x5b77ae['where']=_[_0x88cc('0x3e')](_0x5b77ae['where'],{'$or':_[_0x88cc('0x3f')](_0x2cc552,function(_0x1fb2ca){if(_0x1fb2ca['type']!==_0x88cc('0x40')){var _0x57ecf7={};_0x57ecf7[_0x1fb2ca[_0x88cc('0x2c')]]={'$like':'%'+_0x45f1c6['query'][_0x88cc('0x41')]+'%'};return _0x57ecf7;}})});}_0x5b77ae=_['merge']({},_0x5b77ae,_0x45f1c6[_0x88cc('0x42')]);var _0x35342a={'where':_0x5b77ae[_0x88cc('0x43')]};return db[_0x88cc('0x2e')]['count'](_0x35342a)[_0x88cc('0x27')](function(_0x510e5b){_0x18ced1[_0x88cc('0x21')]=_0x510e5b;if(_0x45f1c6[_0x88cc('0x33')][_0x88cc('0x44')]){_0x5b77ae[_0x88cc('0x45')]=[{'all':!![]}];}return db[_0x88cc('0x2e')][_0x88cc('0x46')](_0x5b77ae);})[_0x88cc('0x27')](function(_0x2138dd){_0x18ced1[_0x88cc('0x47')]=_0x2138dd;return _0x18ced1;})['then'](respondWithFilteredResult(_0x1c1d57,_0x5b77ae))[_0x88cc('0x48')](handleError(_0x1c1d57,null));};exports[_0x88cc('0x49')]=function(_0x1481df,_0x5af511){var _0x188fee={'raw':!![],'where':{'id':_0x1481df[_0x88cc('0x4a')]['id']}},_0x37ad9f={};_0x37ad9f['model']=_[_0x88cc('0x34')](db[_0x88cc('0x2e')][_0x88cc('0x2f')]);_0x37ad9f[_0x88cc('0x33')]=_[_0x88cc('0x34')](_0x1481df['query']);_0x37ad9f[_0x88cc('0x35')]=_[_0x88cc('0x36')](_0x37ad9f[_0x88cc('0x32')],_0x37ad9f[_0x88cc('0x33')]);_0x188fee[_0x88cc('0x37')]=_['intersection'](_0x37ad9f[_0x88cc('0x32')],qs['fields'](_0x1481df['query'][_0x88cc('0x38')]));_0x188fee[_0x88cc('0x37')]=_0x188fee['attributes']['length']?_0x188fee[_0x88cc('0x37')]:_0x37ad9f[_0x88cc('0x32')];if(_0x1481df[_0x88cc('0x33')][_0x88cc('0x44')]){_0x188fee['include']=[{'all':!![]}];}_0x188fee=_[_0x88cc('0x3e')]({},_0x188fee,_0x1481df[_0x88cc('0x42')]);return db[_0x88cc('0x2e')][_0x88cc('0x4b')](_0x188fee)[_0x88cc('0x27')](handleEntityNotFound(_0x5af511,null))[_0x88cc('0x27')](respondWithResult(_0x5af511,null))[_0x88cc('0x48')](handleError(_0x5af511,null));};exports[_0x88cc('0x4c')]=function(_0x14e889,_0x6615dd){return db[_0x88cc('0x2e')]['create'](_0x14e889[_0x88cc('0x4d')],{})[_0x88cc('0x27')](respondWithResult(_0x6615dd,0xc9))[_0x88cc('0x48')](handleError(_0x6615dd,null));};exports['update']=function(_0x2e04e5,_0xdc32cb){if(_0x2e04e5['body']['id']){delete _0x2e04e5[_0x88cc('0x4d')]['id'];}return db[_0x88cc('0x2e')][_0x88cc('0x4b')]({'where':{'id':_0x2e04e5[_0x88cc('0x4a')]['id']}})['then'](handleEntityNotFound(_0xdc32cb,null))[_0x88cc('0x27')](saveUpdates(_0x2e04e5[_0x88cc('0x4d')],null))['then'](respondWithResult(_0xdc32cb,null))[_0x88cc('0x48')](handleError(_0xdc32cb,null));};exports[_0x88cc('0x28')]=function(_0x14912f,_0xa043e){return db[_0x88cc('0x2e')][_0x88cc('0x4b')]({'where':{'id':_0x14912f[_0x88cc('0x4a')]['id']}})[_0x88cc('0x27')](handleEntityNotFound(_0xa043e,null))[_0x88cc('0x27')](removeEntity(_0xa043e,null))[_0x88cc('0x48')](handleError(_0xa043e,null));};
\ No newline at end of file
index b63df1f..e39d864 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc8c=['rimraf','../../config/environment','./intFreshdeskField.attributes','define','FreshdeskField','int_freshdesk_fields','freshdesk_unique_index','idField','FieldId','lodash','util','moment','request-promise'];(function(_0x1bddad,_0x376905){var _0x58d346=function(_0x1ea804){while(--_0x1ea804){_0x1bddad['push'](_0x1bddad['shift']());}};_0x58d346(++_0x376905);}(_0xdc8c,0xd9));var _0xcdc8=function(_0x458bd0,_0x5f54ad){_0x458bd0=_0x458bd0-0x0;var _0x1f5916=_0xdc8c[_0x458bd0];return _0x1f5916;};'use strict';var _=require(_0xcdc8('0x0'));var util=require(_0xcdc8('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xcdc8('0x2'));var BPromise=require('bluebird');var rp=require(_0xcdc8('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xcdc8('0x4'));var config=require(_0xcdc8('0x5'));var attributes=require(_0xcdc8('0x6'));module['exports']=function(_0x2808b1,_0x36e0db){return _0x2808b1[_0xcdc8('0x7')](_0xcdc8('0x8'),attributes,{'tableName':_0xcdc8('0x9'),'paranoid':![],'indexes':[{'name':_0xcdc8('0xa'),'fields':[_0xcdc8('0xb'),_0xcdc8('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x54f3=['util','../../config/logger','api','moment','bluebird','rimraf','../../config/environment','./intFreshdeskField.attributes','FreshdeskField','int_freshdesk_fields','freshdesk_unique_index','idField'];(function(_0x54169f,_0x234960){var _0x45f08b=function(_0x2a2886){while(--_0x2a2886){_0x54169f['push'](_0x54169f['shift']());}};_0x45f08b(++_0x234960);}(_0x54f3,0x120));var _0x354f=function(_0x8c43de,_0x90ff31){_0x8c43de=_0x8c43de-0x0;var _0xa6591b=_0x54f3[_0x8c43de];return _0xa6591b;};'use strict';var _=require('lodash');var util=require(_0x354f('0x0'));var logger=require(_0x354f('0x1'))(_0x354f('0x2'));var moment=require(_0x354f('0x3'));var BPromise=require(_0x354f('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x354f('0x5'));var config=require(_0x354f('0x6'));var attributes=require(_0x354f('0x7'));module['exports']=function(_0x5618ac,_0x234ac6){return _0x5618ac['define'](_0x354f('0x8'),attributes,{'tableName':_0x354f('0x9'),'paranoid':![],'indexes':[{'name':_0x354f('0xa'),'fields':[_0x354f('0xb'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 14dfa8f..51845c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2bd6=['result','catch','lodash','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','FreshdeskField,\x20%s,\x20%s','request\x20sent','debug','FreshdeskField,\x20%s,\x20%s,\x20%s','stringify','error','message'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x2bd6,0x17c));var _0x62bd=function(_0x2f3794,_0x3c3bec){_0x2f3794=_0x2f3794-0x0;var _0x1c9fbe=_0x2bd6[_0x2f3794];return _0x1c9fbe;};'use strict';var _=require(_0x62bd('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x62bd('0x1'));var rs=require(_0x62bd('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x62bd('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x62bd('0x4'))(_0x62bd('0x5'));var config=require(_0x62bd('0x6'));var jayson=require(_0x62bd('0x7'));var client=jayson[_0x62bd('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2dc29f,_0x5e963e,_0x543200){return new BPromise(function(_0x50c606,_0x1ab523){return client[_0x62bd('0x9')](_0x2dc29f,_0x543200)[_0x62bd('0xa')](function(_0x2627c1){logger[_0x62bd('0xb')](_0x62bd('0xc'),_0x5e963e,_0x62bd('0xd'));logger[_0x62bd('0xe')](_0x62bd('0xf'),_0x5e963e,_0x62bd('0xd'),JSON[_0x62bd('0x10')](_0x2627c1));if(_0x2627c1[_0x62bd('0x11')]){if(_0x2627c1[_0x62bd('0x11')]['code']===0x1f4){logger['error'](_0x62bd('0xc'),_0x5e963e,_0x2627c1['error'][_0x62bd('0x12')]);return _0x1ab523(_0x2627c1[_0x62bd('0x11')][_0x62bd('0x12')]);}logger[_0x62bd('0x11')](_0x62bd('0xc'),_0x5e963e,_0x2627c1[_0x62bd('0x11')][_0x62bd('0x12')]);return _0x50c606(_0x2627c1[_0x62bd('0x11')]['message']);}else{logger[_0x62bd('0xb')](_0x62bd('0xc'),_0x5e963e,_0x62bd('0xd'));_0x50c606(_0x2627c1[_0x62bd('0x13')][_0x62bd('0x12')]);}})[_0x62bd('0x14')](function(_0x128aa6){logger['error'](_0x62bd('0xc'),_0x5e963e,_0x128aa6);_0x1ab523(_0x128aa6);});});}
\ No newline at end of file
+var _0x4d90=['message','result','catch','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','request','then','info','FreshdeskField,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code'];(function(_0x42bafb,_0x513a4a){var _0x1719be=function(_0x53f581){while(--_0x53f581){_0x42bafb['push'](_0x42bafb['shift']());}};_0x1719be(++_0x513a4a);}(_0x4d90,0xb3));var _0x04d9=function(_0x9aada2,_0xd2d349){_0x9aada2=_0x9aada2-0x0;var _0x196dff=_0x4d90[_0x9aada2];return _0x196dff;};'use strict';var _=require(_0x04d9('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x04d9('0x1'));var rs=require(_0x04d9('0x2'));var fs=require('fs');var Redis=require(_0x04d9('0x3'));var db=require(_0x04d9('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x04d9('0x5'))(_0x04d9('0x6'));var config=require(_0x04d9('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x04d9('0x8')][_0x04d9('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x24811e,_0x216e66,_0x30f248){return new BPromise(function(_0x328591,_0x172d1e){return client[_0x04d9('0xa')](_0x24811e,_0x30f248)[_0x04d9('0xb')](function(_0xc062dd){logger[_0x04d9('0xc')](_0x04d9('0xd'),_0x216e66,_0x04d9('0xe'));logger[_0x04d9('0xf')]('FreshdeskField,\x20%s,\x20%s,\x20%s',_0x216e66,_0x04d9('0xe'),JSON[_0x04d9('0x10')](_0xc062dd));if(_0xc062dd[_0x04d9('0x11')]){if(_0xc062dd[_0x04d9('0x11')][_0x04d9('0x12')]===0x1f4){logger['error'](_0x04d9('0xd'),_0x216e66,_0xc062dd[_0x04d9('0x11')][_0x04d9('0x13')]);return _0x172d1e(_0xc062dd[_0x04d9('0x11')][_0x04d9('0x13')]);}logger[_0x04d9('0x11')](_0x04d9('0xd'),_0x216e66,_0xc062dd[_0x04d9('0x11')][_0x04d9('0x13')]);return _0x328591(_0xc062dd[_0x04d9('0x11')][_0x04d9('0x13')]);}else{logger[_0x04d9('0xc')](_0x04d9('0xd'),_0x216e66,_0x04d9('0xe'));_0x328591(_0xc062dd[_0x04d9('0x14')]['message']);}})[_0x04d9('0x15')](function(_0x1e24a0){logger[_0x04d9('0x11')](_0x04d9('0xd'),_0x216e66,_0x1e24a0);_0x172d1e(_0x1e24a0);});});}
\ No newline at end of file
index e7282fb..7a594ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x39cb=['put','update','delete','destroy','exports','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshsalesAccount.controller','get','index','/:id','isAuthenticated','/:id/configurations','getConfigurations','post','create','addConfiguration'];(function(_0x4e29e5,_0x5ce388){var _0x312749=function(_0x5cce82){while(--_0x5cce82){_0x4e29e5['push'](_0x4e29e5['shift']());}};_0x312749(++_0x5ce388);}(_0x39cb,0x1bd));var _0xb39c=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0x39cb[_0x167cc1];return _0x10bc4b;};'use strict';var multer=require('multer');var util=require(_0xb39c('0x0'));var path=require(_0xb39c('0x1'));var timeout=require('connect-timeout');var express=require(_0xb39c('0x2'));var router=express[_0xb39c('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xb39c('0x4'));var interaction=require(_0xb39c('0x5'));var config=require(_0xb39c('0x6'));var controller=require(_0xb39c('0x7'));router[_0xb39c('0x8')]('/',auth['isAuthenticated'](),controller[_0xb39c('0x9')]);router[_0xb39c('0x8')](_0xb39c('0xa'),auth[_0xb39c('0xb')](),controller['show']);router['get'](_0xb39c('0xc'),auth[_0xb39c('0xb')](),controller[_0xb39c('0xd')]);router[_0xb39c('0x8')]('/:id/fields',auth['isAuthenticated'](),controller['getFields']);router[_0xb39c('0xe')]('/',auth[_0xb39c('0xb')](),controller[_0xb39c('0xf')]);router[_0xb39c('0xe')](_0xb39c('0xc'),auth[_0xb39c('0xb')](),controller[_0xb39c('0x10')]);router[_0xb39c('0x11')]('/:id',auth[_0xb39c('0xb')](),controller[_0xb39c('0x12')]);router[_0xb39c('0x13')]('/:id',auth[_0xb39c('0xb')](),controller[_0xb39c('0x14')]);module[_0xb39c('0x15')]=router;
\ No newline at end of file
+var _0x4024=['express','fs-extra','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/:id/configurations','post','create','addConfiguration','put','update','delete','/:id','destroy','exports','multer','util','connect-timeout'];(function(_0x127e8d,_0x39caa7){var _0x17b407=function(_0x3d1b14){while(--_0x3d1b14){_0x127e8d['push'](_0x127e8d['shift']());}};_0x17b407(++_0x39caa7);}(_0x4024,0x89));var _0x4402=function(_0x28f729,_0x5dbd61){_0x28f729=_0x28f729-0x0;var _0x264ce0=_0x4024[_0x28f729];return _0x264ce0;};'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('./intFreshsalesAccount.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['getConfigurations']);router[_0x4402('0x9')]('/:id/fields',auth[_0x4402('0x7')](),controller['getFields']);router[_0x4402('0xb')]('/',auth['isAuthenticated'](),controller[_0x4402('0xc')]);router[_0x4402('0xb')]('/:id/configurations',auth[_0x4402('0x7')](),controller[_0x4402('0xd')]);router[_0x4402('0xe')]('/:id',auth[_0x4402('0x7')](),controller[_0x4402('0xf')]);router[_0x4402('0x10')](_0x4402('0x11'),auth[_0x4402('0x7')](),controller[_0x4402('0x12')]);module[_0x4402('0x13')]=router;
\ No newline at end of file
index c2affd0..32d76ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b84=['sequelize','exports','STRING','username','remoteUri'];(function(_0x1203f,_0x554bbc){var _0x365f0a=function(_0x3531d0){while(--_0x3531d0){_0x1203f['push'](_0x1203f['shift']());}};_0x365f0a(++_0x554bbc);}(_0x7b84,0x17c));var _0x47b8=function(_0x14653b,_0x4cdecc){_0x14653b=_0x14653b-0x0;var _0x25967b=_0x7b84[_0x14653b];return _0x25967b;};'use strict';var Sequelize=require(_0x47b8('0x0'));module[_0x47b8('0x1')]={'name':{'type':Sequelize[_0x47b8('0x2')]},'description':{'type':Sequelize[_0x47b8('0x2')]},'username':{'type':Sequelize[_0x47b8('0x2')],'unique':_0x47b8('0x3')},'apiKey':{'type':Sequelize[_0x47b8('0x2')]},'remoteUri':{'type':Sequelize['STRING'],'unique':_0x47b8('0x4')},'serverUrl':{'type':Sequelize[_0x47b8('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0x77d4=['exports','STRING','username'];(function(_0x2a87e9,_0x25c03e){var _0x5de0e6=function(_0x15e7e7){while(--_0x15e7e7){_0x2a87e9['push'](_0x2a87e9['shift']());}};_0x5de0e6(++_0x25c03e);}(_0x77d4,0x108));var _0x477d=function(_0x831eff,_0x3c447c){_0x831eff=_0x831eff-0x0;var _0x4a3f84=_0x77d4[_0x831eff];return _0x4a3f84;};'use strict';var Sequelize=require('sequelize');module[_0x477d('0x0')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x477d('0x1')]},'username':{'type':Sequelize['STRING'],'unique':_0x477d('0x2')},'apiKey':{'type':Sequelize[_0x477d('0x1')]},'remoteUri':{'type':Sequelize['STRING'],'unique':'remoteUri'},'serverUrl':{'type':Sequelize[_0x477d('0x1')],'allowNull':![]}};
\ No newline at end of file
index a6ec3a3..2b8646e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa778=['username','remoteUri','apiKey','slice','substring','GET','format','/api/selector/owners','Token\x20token=','users','email','Requested\x20Resource\x20not\x20Found','test','statusCode','error','stringify','send','Wrong\x20credentials','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../components/integrations/configuration','status','end','offset','undefined','limit','count','set','apply','reject','save','update','destroy','then','sendStatus','stack','name','index','map','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','attributes','length','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','FreshsalesAccount','includeAll','rows','catch','show','fields','include','options','find','create','body','params','getConfigurations','FreshsalesConfiguration','findOne','AccountId','getSubjects','channel','Descriptions','getDescriptions','Subjects','FreshsalesField'];(function(_0x46d7b2,_0x547b66){var _0x5a6376=function(_0x20ce4d){while(--_0x20ce4d){_0x46d7b2['push'](_0x46d7b2['shift']());}};_0x5a6376(++_0x547b66);}(_0xa778,0x14d));var _0x8a77=function(_0x44a783,_0x11b91d){_0x44a783=_0x44a783-0x0;var _0x24b728=_0xa778[_0x44a783];return _0x24b728;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8a77('0x0'));var zipdir=require(_0x8a77('0x1'));var jsonpatch=require(_0x8a77('0x2'));var rp=require('request-promise');var moment=require(_0x8a77('0x3'));var BPromise=require(_0x8a77('0x4'));var Mustache=require(_0x8a77('0x5'));var util=require(_0x8a77('0x6'));var path=require(_0x8a77('0x7'));var sox=require(_0x8a77('0x8'));var csv=require(_0x8a77('0x9'));var ejs=require(_0x8a77('0xa'));var fs=require('fs');var fs_extra=require(_0x8a77('0xb'));var _=require(_0x8a77('0xc'));var squel=require(_0x8a77('0xd'));var crypto=require(_0x8a77('0xe'));var jsforce=require(_0x8a77('0xf'));var deskjs=require(_0x8a77('0x10'));var toCsv=require(_0x8a77('0x9'));var querystring=require(_0x8a77('0x11'));var Papa=require(_0x8a77('0x12'));var Redis=require(_0x8a77('0x13'));var authService=require(_0x8a77('0x14'));var qs=require(_0x8a77('0x15'));var as=require(_0x8a77('0x16'));var hardwareService=require(_0x8a77('0x17'));var logger=require(_0x8a77('0x18'))(_0x8a77('0x19'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x8a77('0x1a'));var db=require('../../mysqldb')['db'];var integrations=require(_0x8a77('0x1b'));function respondWithStatusCode(_0x169541,_0x3329c3){_0x3329c3=_0x3329c3||0xcc;return function(_0x31743d){if(_0x31743d){return _0x169541['sendStatus'](_0x3329c3);}return _0x169541[_0x8a77('0x1c')](_0x3329c3)[_0x8a77('0x1d')]();};}function respondWithResult(_0x468ee7,_0x59a334){_0x59a334=_0x59a334||0xc8;return function(_0x43fc21){if(_0x43fc21){return _0x468ee7[_0x8a77('0x1c')](_0x59a334)['json'](_0x43fc21);}};}function respondWithFilteredResult(_0x508866,_0x3a1396){return function(_0x38e150){if(_0x38e150){var _0x515770=typeof _0x3a1396[_0x8a77('0x1e')]===_0x8a77('0x1f')&&typeof _0x3a1396[_0x8a77('0x20')]===_0x8a77('0x1f');var _0x372b30=_0x38e150[_0x8a77('0x21')];var _0x30b2d1=_0x515770?0x0:_0x3a1396[_0x8a77('0x1e')];var _0x3ef19b=_0x515770?_0x38e150[_0x8a77('0x21')]:_0x3a1396[_0x8a77('0x1e')]+_0x3a1396[_0x8a77('0x20')];var _0x1c500e;if(_0x3ef19b>=_0x372b30){_0x3ef19b=_0x372b30;_0x1c500e=0xc8;}else{_0x1c500e=0xce;}_0x508866[_0x8a77('0x1c')](_0x1c500e);return _0x508866[_0x8a77('0x22')]('Content-Range',_0x30b2d1+'-'+_0x3ef19b+'/'+_0x372b30)['json'](_0x38e150);}return null;};}function patchUpdates(_0x3f2d07){return function(_0x344700){try{jsonpatch[_0x8a77('0x23')](_0x344700,_0x3f2d07,!![]);}catch(_0x525242){return BPromise[_0x8a77('0x24')](_0x525242);}return _0x344700[_0x8a77('0x25')]();};}function saveUpdates(_0x497131,_0x46f549){return function(_0x11013d){if(_0x11013d){return _0x11013d[_0x8a77('0x26')](_0x497131)['then'](function(_0x4e2ea4){return _0x4e2ea4;});}return null;};}function removeEntity(_0x6908a1,_0x2d8f8f){return function(_0x159982){if(_0x159982){return _0x159982[_0x8a77('0x27')]()[_0x8a77('0x28')](function(){_0x6908a1['status'](0xcc)[_0x8a77('0x1d')]();});}};}function handleEntityNotFound(_0x34aae1,_0x3aeeee){return function(_0x3d44c5){if(!_0x3d44c5){_0x34aae1[_0x8a77('0x29')](0x194);}return _0x3d44c5;};}function handleError(_0x1f9316,_0x295d8f){_0x295d8f=_0x295d8f||0x1f4;return function(_0x142747){logger['error'](_0x142747[_0x8a77('0x2a')]);if(_0x142747[_0x8a77('0x2b')]){delete _0x142747['name'];}_0x1f9316[_0x8a77('0x1c')](_0x295d8f)['send'](_0x142747);};}exports[_0x8a77('0x2c')]=function(_0x264e8b,_0x4f1936){var _0x545032={},_0x1752c6={},_0x35d1aa={'count':0x0,'rows':[]};var _0x24fd7d=_[_0x8a77('0x2d')](db['FreshsalesAccount'][_0x8a77('0x2e')],function(_0x134231){return{'name':_0x134231[_0x8a77('0x2f')],'type':_0x134231[_0x8a77('0x30')][_0x8a77('0x31')]};});_0x1752c6[_0x8a77('0x32')]=_[_0x8a77('0x2d')](_0x24fd7d,'name');_0x1752c6['query']=_[_0x8a77('0x33')](_0x264e8b[_0x8a77('0x34')]);_0x1752c6[_0x8a77('0x35')]=_[_0x8a77('0x36')](_0x1752c6[_0x8a77('0x32')],_0x1752c6[_0x8a77('0x34')]);_0x545032[_0x8a77('0x37')]=_[_0x8a77('0x36')](_0x1752c6[_0x8a77('0x32')],qs['fields'](_0x264e8b['query']['fields']));_0x545032[_0x8a77('0x37')]=_0x545032['attributes'][_0x8a77('0x38')]?_0x545032['attributes']:_0x1752c6['model'];if(!_0x264e8b[_0x8a77('0x34')]['hasOwnProperty'](_0x8a77('0x39'))){_0x545032[_0x8a77('0x20')]=qs['limit'](_0x264e8b[_0x8a77('0x34')][_0x8a77('0x20')]);_0x545032['offset']=qs['offset'](_0x264e8b[_0x8a77('0x34')]['offset']);}_0x545032[_0x8a77('0x3a')]=qs[_0x8a77('0x3b')](_0x264e8b[_0x8a77('0x34')][_0x8a77('0x3b')]);_0x545032['where']=qs[_0x8a77('0x35')](_[_0x8a77('0x3c')](_0x264e8b[_0x8a77('0x34')],_0x1752c6['filters']),_0x24fd7d);if(_0x264e8b[_0x8a77('0x34')][_0x8a77('0x3d')]){_0x545032[_0x8a77('0x3e')]=_[_0x8a77('0x3f')](_0x545032[_0x8a77('0x3e')],{'$or':_[_0x8a77('0x2d')](_0x24fd7d,function(_0x2abcb9){if(_0x2abcb9[_0x8a77('0x30')]!==_0x8a77('0x40')){var _0xa76a0e={};_0xa76a0e[_0x2abcb9[_0x8a77('0x2b')]]={'$like':'%'+_0x264e8b[_0x8a77('0x34')]['filter']+'%'};return _0xa76a0e;}})});}_0x545032=_[_0x8a77('0x3f')]({},_0x545032,_0x264e8b['options']);var _0x4d2139={'where':_0x545032['where']};return db[_0x8a77('0x41')][_0x8a77('0x21')](_0x4d2139)['then'](function(_0x1220d6){_0x35d1aa[_0x8a77('0x21')]=_0x1220d6;if(_0x264e8b[_0x8a77('0x34')][_0x8a77('0x42')]){_0x545032['include']=[{'all':!![]}];}return db[_0x8a77('0x41')]['findAll'](_0x545032);})[_0x8a77('0x28')](function(_0x533adf){_0x35d1aa[_0x8a77('0x43')]=_0x533adf;return _0x35d1aa;})[_0x8a77('0x28')](respondWithFilteredResult(_0x4f1936,_0x545032))[_0x8a77('0x44')](handleError(_0x4f1936,null));};exports[_0x8a77('0x45')]=function(_0x36079e,_0x386e13){var _0x19cf21={'raw':![],'where':{'id':_0x36079e['params']['id']}},_0x1ae3cd={};_0x1ae3cd[_0x8a77('0x32')]=_['keys'](db[_0x8a77('0x41')][_0x8a77('0x2e')]);_0x1ae3cd['query']=_[_0x8a77('0x33')](_0x36079e[_0x8a77('0x34')]);_0x1ae3cd[_0x8a77('0x35')]=_[_0x8a77('0x36')](_0x1ae3cd[_0x8a77('0x32')],_0x1ae3cd[_0x8a77('0x34')]);_0x19cf21[_0x8a77('0x37')]=_[_0x8a77('0x36')](_0x1ae3cd[_0x8a77('0x32')],qs[_0x8a77('0x46')](_0x36079e[_0x8a77('0x34')][_0x8a77('0x46')]));_0x19cf21[_0x8a77('0x37')]=_0x19cf21[_0x8a77('0x37')]['length']?_0x19cf21[_0x8a77('0x37')]:_0x1ae3cd[_0x8a77('0x32')];if(_0x36079e[_0x8a77('0x34')][_0x8a77('0x42')]){_0x19cf21[_0x8a77('0x47')]=[{'all':!![]}];}_0x19cf21=_['merge']({},_0x19cf21,_0x36079e[_0x8a77('0x48')]);return db['FreshsalesAccount'][_0x8a77('0x49')](_0x19cf21)[_0x8a77('0x28')](handleEntityNotFound(_0x386e13,null))[_0x8a77('0x28')](respondWithResult(_0x386e13,null))['catch'](handleError(_0x386e13,null));};exports[_0x8a77('0x4a')]=function(_0x5e3182,_0x348e8c){return db['FreshsalesAccount'][_0x8a77('0x4a')](_0x5e3182['body'],{})[_0x8a77('0x28')](respondWithResult(_0x348e8c,0xc9))['catch'](handleError(_0x348e8c,null));};exports[_0x8a77('0x26')]=function(_0x53e0e3,_0x24e3bc){if(_0x53e0e3[_0x8a77('0x4b')]['id']){delete _0x53e0e3[_0x8a77('0x4b')]['id'];}return db[_0x8a77('0x41')]['find']({'where':{'id':_0x53e0e3[_0x8a77('0x4c')]['id']}})[_0x8a77('0x28')](handleEntityNotFound(_0x24e3bc,null))[_0x8a77('0x28')](saveUpdates(_0x53e0e3[_0x8a77('0x4b')],null))['then'](respondWithResult(_0x24e3bc,null))[_0x8a77('0x44')](handleError(_0x24e3bc,null));};exports[_0x8a77('0x27')]=function(_0x5264d,_0x16a6ce){return db[_0x8a77('0x41')]['find']({'where':{'id':_0x5264d[_0x8a77('0x4c')]['id']}})[_0x8a77('0x28')](handleEntityNotFound(_0x16a6ce,null))[_0x8a77('0x28')](removeEntity(_0x16a6ce,null))['catch'](handleError(_0x16a6ce,null));};exports[_0x8a77('0x4d')]=function(_0x1d195f,_0x11c2db,_0x3a1322){var _0x14bd4d={};var _0x4c0aed={};var _0xc96ff7;var _0x2b0f6c;return db['FreshsalesAccount']['findOne']({'where':{'id':_0x1d195f[_0x8a77('0x4c')]['id']}})[_0x8a77('0x28')](handleEntityNotFound(_0x11c2db,null))[_0x8a77('0x28')](function(_0x4d4f70){if(_0x4d4f70){_0xc96ff7=_0x4d4f70;_0x4c0aed[_0x8a77('0x32')]=_[_0x8a77('0x33')](db[_0x8a77('0x4e')][_0x8a77('0x2e')]);_0x4c0aed[_0x8a77('0x34')]=_[_0x8a77('0x33')](_0x1d195f[_0x8a77('0x34')]);_0x4c0aed[_0x8a77('0x35')]=_[_0x8a77('0x36')](_0x4c0aed[_0x8a77('0x32')],_0x4c0aed[_0x8a77('0x34')]);_0x14bd4d['attributes']=_[_0x8a77('0x36')](_0x4c0aed['model'],qs['fields'](_0x1d195f['query'][_0x8a77('0x46')]));_0x14bd4d[_0x8a77('0x37')]=_0x14bd4d[_0x8a77('0x37')][_0x8a77('0x38')]?_0x14bd4d[_0x8a77('0x37')]:_0x4c0aed['model'];_0x14bd4d[_0x8a77('0x3a')]=qs[_0x8a77('0x3b')](_0x1d195f['query'][_0x8a77('0x3b')]);_0x14bd4d['where']=qs['filters'](_[_0x8a77('0x3c')](_0x1d195f['query'],_0x4c0aed[_0x8a77('0x35')]));if(_0x1d195f[_0x8a77('0x34')][_0x8a77('0x3d')]){_0x14bd4d[_0x8a77('0x3e')]=_[_0x8a77('0x3f')](_0x14bd4d[_0x8a77('0x3e')],{'$or':_[_0x8a77('0x2d')](_0x14bd4d[_0x8a77('0x37')],function(_0x3f04e9){var _0x569a66={};_0x569a66[_0x3f04e9]={'$like':'%'+_0x1d195f[_0x8a77('0x34')][_0x8a77('0x3d')]+'%'};return _0x569a66;})});}_0x14bd4d=_['merge']({},_0x14bd4d,_0x1d195f[_0x8a77('0x48')]);return _0xc96ff7['getConfigurations'](_0x14bd4d);}})[_0x8a77('0x28')](function(_0x487bbd){if(_0x487bbd){_0x2b0f6c=_0x487bbd['length'];if(!_0x1d195f[_0x8a77('0x34')]['hasOwnProperty'](_0x8a77('0x39'))){_0x14bd4d[_0x8a77('0x20')]=qs[_0x8a77('0x20')](_0x1d195f['query'][_0x8a77('0x20')]);_0x14bd4d[_0x8a77('0x1e')]=qs[_0x8a77('0x1e')](_0x1d195f[_0x8a77('0x34')][_0x8a77('0x1e')]);}return _0xc96ff7[_0x8a77('0x4d')](_0x14bd4d);}})[_0x8a77('0x28')](function(_0x25cf10){if(_0x25cf10){return _0x25cf10?{'count':_0x2b0f6c,'rows':_0x25cf10}:null;}})['then'](respondWithResult(_0x11c2db,null))[_0x8a77('0x44')](handleError(_0x11c2db,null));};exports['addConfiguration']=function(_0xbe397d,_0x21e02e,_0xe6940){if(_0xbe397d[_0x8a77('0x4b')]['id']){delete _0xbe397d[_0x8a77('0x4b')]['id'];}return db[_0x8a77('0x41')][_0x8a77('0x4f')]({'where':{'id':_0xbe397d[_0x8a77('0x4c')]['id']}})[_0x8a77('0x28')](handleEntityNotFound(_0x21e02e,null))[_0x8a77('0x28')](function(_0x1ea88b){if(_0x1ea88b){_0xbe397d[_0x8a77('0x4b')][_0x8a77('0x50')]=_0x1ea88b['id'];_0xbe397d[_0x8a77('0x4b')]['Subjects']=integrations[_0x8a77('0x51')](_0xbe397d['body'][_0x8a77('0x52')],_0xbe397d[_0x8a77('0x4b')][_0x8a77('0x30')]);_0xbe397d[_0x8a77('0x4b')][_0x8a77('0x53')]=integrations[_0x8a77('0x54')](_0xbe397d['body']['channel'],_0xbe397d['body'][_0x8a77('0x30')]);return db['FreshsalesConfiguration'][_0x8a77('0x4a')](_0xbe397d[_0x8a77('0x4b')],{'include':[{'model':db['FreshsalesField'],'as':_0x8a77('0x55')},{'model':db[_0x8a77('0x56')],'as':_0x8a77('0x53')}]});}return null;})['then'](respondWithResult(_0x21e02e,null))[_0x8a77('0x44')](handleError(_0x21e02e,null));};exports['getFields']=function(_0x593413,_0x265c98,_0x6a23e8){var _0x1e35b9='';var _0x4dfa8d='';return db['FreshsalesAccount'][_0x8a77('0x4f')]({'where':{'id':_0x593413[_0x8a77('0x4c')]['id']},'attributes':['id',_0x8a77('0x57'),_0x8a77('0x58'),_0x8a77('0x59')]})['then'](handleEntityNotFound(_0x265c98,null))[_0x8a77('0x28')](function(_0x1c6e5d){if(_0x1c6e5d){_0x4dfa8d=_0x1c6e5d[_0x8a77('0x57')];_0x1e35b9=_0x1c6e5d[_0x8a77('0x58')];var _0x43c05a=_0x1c6e5d[_0x8a77('0x58')][_0x8a77('0x5a')](-0x1);if(_0x43c05a==='/'){_0x1e35b9=_0x1e35b9[_0x8a77('0x5b')](0x0,_0x1e35b9['lastIndexOf'](_0x43c05a));}return rp({'method':_0x8a77('0x5c'),'uri':util[_0x8a77('0x5d')]('%s%s',_0x1e35b9,_0x8a77('0x5e')),'headers':{'Authorization':_0x8a77('0x5f')+_0x1c6e5d[_0x8a77('0x59')]},'json':!![]});}})['then'](function(_0x40de19){if(_0x40de19){var _0x57996b=_0x40de19[_0x8a77('0x60')];var _0x441747=![];var _0x25157b=null;for(_0x25157b=0x0;_0x25157b<_0x57996b[_0x8a77('0x38')];_0x25157b++){if(_0x57996b[_0x25157b][_0x8a77('0x61')]===_0x4dfa8d){_0x441747=!![];}}if(_0x441747){return!![];}else{throw new Error({'statusCode':0x194,'message':_0x8a77('0x62')});}}})[_0x8a77('0x28')](respondWithResult(_0x265c98,null))[_0x8a77('0x44')](function(_0x4a645c){var _0x1379c3=_0x593413[_0x8a77('0x34')][_0x8a77('0x63')]?0x1f4:_0x4a645c[_0x8a77('0x64')]||0x1f4;logger[_0x8a77('0x65')]('getFields,\x20%s,\x20%s,\x20%s','getFields',_0x1379c3,JSON[_0x8a77('0x66')](_0x4a645c));delete _0x4a645c[_0x8a77('0x2b')];if(_0x1379c3===0x191){_0x1379c3=0x190;}_0x265c98[_0x8a77('0x1c')](_0x1379c3)[_0x8a77('0x67')](_0x593413['query'][_0x8a77('0x63')]?{'message':_0x8a77('0x68'),'statusCode':_0x4a645c[_0x8a77('0x64')]}:_0x4a645c);});};
\ No newline at end of file
+var _0x4a60=['index','map','FreshsalesAccount','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','filter','VIRTUAL','merge','options','then','includeAll','include','findAll','find','catch','create','body','update','params','getConfigurations','findOne','FreshsalesConfiguration','pick','AccountId','Subjects','getDescriptions','channel','FreshsalesField','Descriptions','getFields','username','remoteUri','apiKey','slice','substring','lastIndexOf','GET','format','%s%s','/api/selector/owners','Token\x20token=','users','email','Requested\x20Resource\x20not\x20Found','test','statusCode','stringify','send','Wrong\x20credentials','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','count','Content-Range','apply','reject','save','destroy','error','stack','name'];(function(_0x14146a,_0x1f0c8a){var _0x5100bd=function(_0x2fd56d){while(--_0x2fd56d){_0x14146a['push'](_0x14146a['shift']());}};_0x5100bd(++_0x1f0c8a);}(_0x4a60,0x181));var _0x04a6=function(_0x575818,_0xa55f3f){_0x575818=_0x575818-0x0;var _0x13bd05=_0x4a60[_0x575818];return _0x13bd05;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x04a6('0x0'));var zipdir=require(_0x04a6('0x1'));var jsonpatch=require(_0x04a6('0x2'));var rp=require('request-promise');var moment=require(_0x04a6('0x3'));var BPromise=require(_0x04a6('0x4'));var Mustache=require(_0x04a6('0x5'));var util=require(_0x04a6('0x6'));var path=require(_0x04a6('0x7'));var sox=require(_0x04a6('0x8'));var csv=require(_0x04a6('0x9'));var ejs=require(_0x04a6('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x04a6('0xb'));var squel=require(_0x04a6('0xc'));var crypto=require(_0x04a6('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x04a6('0xe'));var toCsv=require(_0x04a6('0x9'));var querystring=require(_0x04a6('0xf'));var Papa=require(_0x04a6('0x10'));var Redis=require('ioredis');var authService=require(_0x04a6('0x11'));var qs=require(_0x04a6('0x12'));var as=require(_0x04a6('0x13'));var hardwareService=require(_0x04a6('0x14'));var logger=require(_0x04a6('0x15'))(_0x04a6('0x16'));var utils=require(_0x04a6('0x17'));var config=require(_0x04a6('0x18'));var licenseUtil=require(_0x04a6('0x19'));var db=require(_0x04a6('0x1a'))['db'];var integrations=require(_0x04a6('0x1b'));function respondWithStatusCode(_0x48aad0,_0x59ce85){_0x59ce85=_0x59ce85||0xcc;return function(_0x2bcecb){if(_0x2bcecb){return _0x48aad0[_0x04a6('0x1c')](_0x59ce85);}return _0x48aad0[_0x04a6('0x1d')](_0x59ce85)[_0x04a6('0x1e')]();};}function respondWithResult(_0x220714,_0x34f3b9){_0x34f3b9=_0x34f3b9||0xc8;return function(_0xe03ef9){if(_0xe03ef9){return _0x220714[_0x04a6('0x1d')](_0x34f3b9)[_0x04a6('0x1f')](_0xe03ef9);}};}function respondWithFilteredResult(_0x127343,_0x2ff681){return function(_0x5e71ea){if(_0x5e71ea){var _0x4c8ed1=typeof _0x2ff681[_0x04a6('0x20')]==='undefined'&&typeof _0x2ff681['limit']===_0x04a6('0x21');var _0x5a9e46=_0x5e71ea[_0x04a6('0x22')];var _0x5a7995=_0x4c8ed1?0x0:_0x2ff681[_0x04a6('0x20')];var _0x14f3b4=_0x4c8ed1?_0x5e71ea[_0x04a6('0x22')]:_0x2ff681[_0x04a6('0x20')]+_0x2ff681['limit'];var _0x904151;if(_0x14f3b4>=_0x5a9e46){_0x14f3b4=_0x5a9e46;_0x904151=0xc8;}else{_0x904151=0xce;}_0x127343[_0x04a6('0x1d')](_0x904151);return _0x127343['set'](_0x04a6('0x23'),_0x5a7995+'-'+_0x14f3b4+'/'+_0x5a9e46)[_0x04a6('0x1f')](_0x5e71ea);}return null;};}function patchUpdates(_0x27bdc6){return function(_0x1f5a7e){try{jsonpatch[_0x04a6('0x24')](_0x1f5a7e,_0x27bdc6,!![]);}catch(_0x4782bc){return BPromise[_0x04a6('0x25')](_0x4782bc);}return _0x1f5a7e[_0x04a6('0x26')]();};}function saveUpdates(_0x14fc78,_0x1ae29f){return function(_0x10177a){if(_0x10177a){return _0x10177a['update'](_0x14fc78)['then'](function(_0x50c8ca){return _0x50c8ca;});}return null;};}function removeEntity(_0x4671d3,_0x30facd){return function(_0x2e3fdb){if(_0x2e3fdb){return _0x2e3fdb[_0x04a6('0x27')]()['then'](function(){_0x4671d3[_0x04a6('0x1d')](0xcc)[_0x04a6('0x1e')]();});}};}function handleEntityNotFound(_0xfe39c9,_0x251bf8){return function(_0x5603f1){if(!_0x5603f1){_0xfe39c9['sendStatus'](0x194);}return _0x5603f1;};}function handleError(_0x2bf679,_0x31f846){_0x31f846=_0x31f846||0x1f4;return function(_0x55b1c2){logger[_0x04a6('0x28')](_0x55b1c2[_0x04a6('0x29')]);if(_0x55b1c2[_0x04a6('0x2a')]){delete _0x55b1c2[_0x04a6('0x2a')];}_0x2bf679[_0x04a6('0x1d')](_0x31f846)['send'](_0x55b1c2);};}exports[_0x04a6('0x2b')]=function(_0x6a666b,_0x5a9366){var _0x9765bd={},_0x2d0bfb={},_0x114145={'count':0x0,'rows':[]};var _0x230ed3=_[_0x04a6('0x2c')](db[_0x04a6('0x2d')][_0x04a6('0x2e')],function(_0x429b28){return{'name':_0x429b28[_0x04a6('0x2f')],'type':_0x429b28['type'][_0x04a6('0x30')]};});_0x2d0bfb[_0x04a6('0x31')]=_['map'](_0x230ed3,_0x04a6('0x2a'));_0x2d0bfb[_0x04a6('0x32')]=_[_0x04a6('0x33')](_0x6a666b[_0x04a6('0x32')]);_0x2d0bfb[_0x04a6('0x34')]=_[_0x04a6('0x35')](_0x2d0bfb[_0x04a6('0x31')],_0x2d0bfb[_0x04a6('0x32')]);_0x9765bd[_0x04a6('0x36')]=_[_0x04a6('0x35')](_0x2d0bfb[_0x04a6('0x31')],qs[_0x04a6('0x37')](_0x6a666b['query'][_0x04a6('0x37')]));_0x9765bd[_0x04a6('0x36')]=_0x9765bd[_0x04a6('0x36')][_0x04a6('0x38')]?_0x9765bd[_0x04a6('0x36')]:_0x2d0bfb[_0x04a6('0x31')];if(!_0x6a666b[_0x04a6('0x32')][_0x04a6('0x39')](_0x04a6('0x3a'))){_0x9765bd[_0x04a6('0x3b')]=qs[_0x04a6('0x3b')](_0x6a666b[_0x04a6('0x32')][_0x04a6('0x3b')]);_0x9765bd[_0x04a6('0x20')]=qs['offset'](_0x6a666b['query'][_0x04a6('0x20')]);}_0x9765bd[_0x04a6('0x3c')]=qs[_0x04a6('0x3d')](_0x6a666b[_0x04a6('0x32')][_0x04a6('0x3d')]);_0x9765bd[_0x04a6('0x3e')]=qs[_0x04a6('0x34')](_['pick'](_0x6a666b[_0x04a6('0x32')],_0x2d0bfb[_0x04a6('0x34')]),_0x230ed3);if(_0x6a666b['query'][_0x04a6('0x3f')]){_0x9765bd[_0x04a6('0x3e')]=_['merge'](_0x9765bd[_0x04a6('0x3e')],{'$or':_['map'](_0x230ed3,function(_0x21359b){if(_0x21359b['type']!==_0x04a6('0x40')){var _0x38f093={};_0x38f093[_0x21359b[_0x04a6('0x2a')]]={'$like':'%'+_0x6a666b[_0x04a6('0x32')][_0x04a6('0x3f')]+'%'};return _0x38f093;}})});}_0x9765bd=_[_0x04a6('0x41')]({},_0x9765bd,_0x6a666b[_0x04a6('0x42')]);var _0x4c91df={'where':_0x9765bd[_0x04a6('0x3e')]};return db[_0x04a6('0x2d')][_0x04a6('0x22')](_0x4c91df)[_0x04a6('0x43')](function(_0x20024e){_0x114145['count']=_0x20024e;if(_0x6a666b[_0x04a6('0x32')][_0x04a6('0x44')]){_0x9765bd[_0x04a6('0x45')]=[{'all':!![]}];}return db[_0x04a6('0x2d')][_0x04a6('0x46')](_0x9765bd);})[_0x04a6('0x43')](function(_0x23f68e){_0x114145['rows']=_0x23f68e;return _0x114145;})[_0x04a6('0x43')](respondWithFilteredResult(_0x5a9366,_0x9765bd))['catch'](handleError(_0x5a9366,null));};exports['show']=function(_0x7abadc,_0x4d48e6){var _0x506cb1={'raw':![],'where':{'id':_0x7abadc['params']['id']}},_0x2986fb={};_0x2986fb[_0x04a6('0x31')]=_['keys'](db['FreshsalesAccount']['rawAttributes']);_0x2986fb[_0x04a6('0x32')]=_['keys'](_0x7abadc[_0x04a6('0x32')]);_0x2986fb[_0x04a6('0x34')]=_[_0x04a6('0x35')](_0x2986fb[_0x04a6('0x31')],_0x2986fb[_0x04a6('0x32')]);_0x506cb1['attributes']=_[_0x04a6('0x35')](_0x2986fb[_0x04a6('0x31')],qs[_0x04a6('0x37')](_0x7abadc[_0x04a6('0x32')][_0x04a6('0x37')]));_0x506cb1['attributes']=_0x506cb1[_0x04a6('0x36')][_0x04a6('0x38')]?_0x506cb1[_0x04a6('0x36')]:_0x2986fb[_0x04a6('0x31')];if(_0x7abadc[_0x04a6('0x32')][_0x04a6('0x44')]){_0x506cb1[_0x04a6('0x45')]=[{'all':!![]}];}_0x506cb1=_['merge']({},_0x506cb1,_0x7abadc[_0x04a6('0x42')]);return db[_0x04a6('0x2d')][_0x04a6('0x47')](_0x506cb1)['then'](handleEntityNotFound(_0x4d48e6,null))[_0x04a6('0x43')](respondWithResult(_0x4d48e6,null))[_0x04a6('0x48')](handleError(_0x4d48e6,null));};exports[_0x04a6('0x49')]=function(_0x34f82c,_0x4d327d){return db[_0x04a6('0x2d')][_0x04a6('0x49')](_0x34f82c[_0x04a6('0x4a')],{})[_0x04a6('0x43')](respondWithResult(_0x4d327d,0xc9))[_0x04a6('0x48')](handleError(_0x4d327d,null));};exports[_0x04a6('0x4b')]=function(_0x13b618,_0x52d621){if(_0x13b618['body']['id']){delete _0x13b618['body']['id'];}return db[_0x04a6('0x2d')]['find']({'where':{'id':_0x13b618[_0x04a6('0x4c')]['id']}})[_0x04a6('0x43')](handleEntityNotFound(_0x52d621,null))[_0x04a6('0x43')](saveUpdates(_0x13b618[_0x04a6('0x4a')],null))[_0x04a6('0x43')](respondWithResult(_0x52d621,null))[_0x04a6('0x48')](handleError(_0x52d621,null));};exports[_0x04a6('0x27')]=function(_0x383e36,_0x10a7c3){return db['FreshsalesAccount']['find']({'where':{'id':_0x383e36[_0x04a6('0x4c')]['id']}})[_0x04a6('0x43')](handleEntityNotFound(_0x10a7c3,null))[_0x04a6('0x43')](removeEntity(_0x10a7c3,null))[_0x04a6('0x48')](handleError(_0x10a7c3,null));};exports[_0x04a6('0x4d')]=function(_0xa5a4ea,_0x2756cc,_0x3b5233){var _0x252b99={};var _0x5b89da={};var _0x55ab43;var _0x3c9cec;return db['FreshsalesAccount'][_0x04a6('0x4e')]({'where':{'id':_0xa5a4ea[_0x04a6('0x4c')]['id']}})[_0x04a6('0x43')](handleEntityNotFound(_0x2756cc,null))[_0x04a6('0x43')](function(_0x12db17){if(_0x12db17){_0x55ab43=_0x12db17;_0x5b89da[_0x04a6('0x31')]=_[_0x04a6('0x33')](db[_0x04a6('0x4f')][_0x04a6('0x2e')]);_0x5b89da[_0x04a6('0x32')]=_['keys'](_0xa5a4ea[_0x04a6('0x32')]);_0x5b89da[_0x04a6('0x34')]=_[_0x04a6('0x35')](_0x5b89da['model'],_0x5b89da[_0x04a6('0x32')]);_0x252b99['attributes']=_['intersection'](_0x5b89da['model'],qs[_0x04a6('0x37')](_0xa5a4ea[_0x04a6('0x32')][_0x04a6('0x37')]));_0x252b99[_0x04a6('0x36')]=_0x252b99['attributes'][_0x04a6('0x38')]?_0x252b99[_0x04a6('0x36')]:_0x5b89da[_0x04a6('0x31')];_0x252b99[_0x04a6('0x3c')]=qs[_0x04a6('0x3d')](_0xa5a4ea[_0x04a6('0x32')]['sort']);_0x252b99[_0x04a6('0x3e')]=qs[_0x04a6('0x34')](_[_0x04a6('0x50')](_0xa5a4ea['query'],_0x5b89da[_0x04a6('0x34')]));if(_0xa5a4ea['query']['filter']){_0x252b99[_0x04a6('0x3e')]=_['merge'](_0x252b99['where'],{'$or':_[_0x04a6('0x2c')](_0x252b99[_0x04a6('0x36')],function(_0x1c6941){var _0x4d61bd={};_0x4d61bd[_0x1c6941]={'$like':'%'+_0xa5a4ea[_0x04a6('0x32')][_0x04a6('0x3f')]+'%'};return _0x4d61bd;})});}_0x252b99=_[_0x04a6('0x41')]({},_0x252b99,_0xa5a4ea[_0x04a6('0x42')]);return _0x55ab43['getConfigurations'](_0x252b99);}})[_0x04a6('0x43')](function(_0x398475){if(_0x398475){_0x3c9cec=_0x398475[_0x04a6('0x38')];if(!_0xa5a4ea[_0x04a6('0x32')]['hasOwnProperty'](_0x04a6('0x3a'))){_0x252b99[_0x04a6('0x3b')]=qs['limit'](_0xa5a4ea['query'][_0x04a6('0x3b')]);_0x252b99['offset']=qs[_0x04a6('0x20')](_0xa5a4ea[_0x04a6('0x32')]['offset']);}return _0x55ab43[_0x04a6('0x4d')](_0x252b99);}})['then'](function(_0xabc7a){if(_0xabc7a){return _0xabc7a?{'count':_0x3c9cec,'rows':_0xabc7a}:null;}})[_0x04a6('0x43')](respondWithResult(_0x2756cc,null))['catch'](handleError(_0x2756cc,null));};exports['addConfiguration']=function(_0x109f4f,_0x18368a,_0x51d2dd){if(_0x109f4f['body']['id']){delete _0x109f4f[_0x04a6('0x4a')]['id'];}return db[_0x04a6('0x2d')][_0x04a6('0x4e')]({'where':{'id':_0x109f4f[_0x04a6('0x4c')]['id']}})['then'](handleEntityNotFound(_0x18368a,null))[_0x04a6('0x43')](function(_0x5dd866){if(_0x5dd866){_0x109f4f[_0x04a6('0x4a')][_0x04a6('0x51')]=_0x5dd866['id'];_0x109f4f['body'][_0x04a6('0x52')]=integrations['getSubjects'](_0x109f4f[_0x04a6('0x4a')]['channel'],_0x109f4f[_0x04a6('0x4a')]['type']);_0x109f4f['body']['Descriptions']=integrations[_0x04a6('0x53')](_0x109f4f[_0x04a6('0x4a')][_0x04a6('0x54')],_0x109f4f[_0x04a6('0x4a')]['type']);return db[_0x04a6('0x4f')][_0x04a6('0x49')](_0x109f4f[_0x04a6('0x4a')],{'include':[{'model':db['FreshsalesField'],'as':_0x04a6('0x52')},{'model':db[_0x04a6('0x55')],'as':_0x04a6('0x56')}]});}return null;})[_0x04a6('0x43')](respondWithResult(_0x18368a,null))['catch'](handleError(_0x18368a,null));};exports[_0x04a6('0x57')]=function(_0x3ee0e9,_0x5c3d73,_0x24f537){var _0x3291be='';var _0x48c867='';return db[_0x04a6('0x2d')][_0x04a6('0x4e')]({'where':{'id':_0x3ee0e9[_0x04a6('0x4c')]['id']},'attributes':['id',_0x04a6('0x58'),_0x04a6('0x59'),_0x04a6('0x5a')]})['then'](handleEntityNotFound(_0x5c3d73,null))[_0x04a6('0x43')](function(_0xb0188b){if(_0xb0188b){_0x48c867=_0xb0188b['username'];_0x3291be=_0xb0188b['remoteUri'];var _0x1d33eb=_0xb0188b[_0x04a6('0x59')][_0x04a6('0x5b')](-0x1);if(_0x1d33eb==='/'){_0x3291be=_0x3291be[_0x04a6('0x5c')](0x0,_0x3291be[_0x04a6('0x5d')](_0x1d33eb));}return rp({'method':_0x04a6('0x5e'),'uri':util[_0x04a6('0x5f')](_0x04a6('0x60'),_0x3291be,_0x04a6('0x61')),'headers':{'Authorization':_0x04a6('0x62')+_0xb0188b[_0x04a6('0x5a')]},'json':!![]});}})[_0x04a6('0x43')](function(_0x44953f){if(_0x44953f){var _0x34734=_0x44953f[_0x04a6('0x63')];var _0x30c177=![];var _0x5b3283=null;for(_0x5b3283=0x0;_0x5b3283<_0x34734[_0x04a6('0x38')];_0x5b3283++){if(_0x34734[_0x5b3283][_0x04a6('0x64')]===_0x48c867){_0x30c177=!![];}}if(_0x30c177){return!![];}else{throw new Error({'statusCode':0x194,'message':_0x04a6('0x65')});}}})[_0x04a6('0x43')](respondWithResult(_0x5c3d73,null))[_0x04a6('0x48')](function(_0xd97a0d){var _0x6dec13=_0x3ee0e9[_0x04a6('0x32')][_0x04a6('0x66')]?0x1f4:_0xd97a0d[_0x04a6('0x67')]||0x1f4;logger['error']('getFields,\x20%s,\x20%s,\x20%s',_0x04a6('0x57'),_0x6dec13,JSON[_0x04a6('0x68')](_0xd97a0d));delete _0xd97a0d[_0x04a6('0x2a')];if(_0x6dec13===0x191){_0x6dec13=0x190;}_0x5c3d73[_0x04a6('0x1d')](_0x6dec13)[_0x04a6('0x69')](_0x3ee0e9[_0x04a6('0x32')][_0x04a6('0x66')]?{'message':_0x04a6('0x6a'),'statusCode':_0xd97a0d[_0x04a6('0x67')]}:_0xd97a0d);});};
\ No newline at end of file
index f249419..98ae62a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb5=['../../components/integrations/configuration','exports','define','FreshsalesAccount','int_freshsales_accounts','util','api','moment','bluebird','path','rimraf','../../config/environment'];(function(_0x411add,_0x1aed38){var _0x238242=function(_0x4a1cd5){while(--_0x4a1cd5){_0x411add['push'](_0x411add['shift']());}};_0x238242(++_0x1aed38);}(_0xadb5,0xad));var _0x5adb=function(_0x321bcf,_0xbf87a9){_0x321bcf=_0x321bcf-0x0;var _0x5356ed=_0xadb5[_0x321bcf];return _0x5356ed;};'use strict';var _=require('lodash');var util=require(_0x5adb('0x0'));var logger=require('../../config/logger')(_0x5adb('0x1'));var moment=require(_0x5adb('0x2'));var BPromise=require(_0x5adb('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x5adb('0x4'));var rimraf=require(_0x5adb('0x5'));var config=require(_0x5adb('0x6'));var attributes=require('./intFreshsalesAccount.attributes');var integrations=require(_0x5adb('0x7'));module[_0x5adb('0x8')]=function(_0x3e2555,_0x3213e8){return _0x3e2555[_0x5adb('0x9')](_0x5adb('0xa'),attributes,{'tableName':_0x5adb('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x27a0=['int_freshsales_accounts','util','../../config/logger','api','moment','bluebird','./intFreshsalesAccount.attributes','../../components/integrations/configuration','exports','define'];(function(_0x26cce7,_0x5b48a8){var _0x787e01=function(_0x54ea2b){while(--_0x54ea2b){_0x26cce7['push'](_0x26cce7['shift']());}};_0x787e01(++_0x5b48a8);}(_0x27a0,0xbf));var _0x027a=function(_0x1a6d97,_0x21a58c){_0x1a6d97=_0x1a6d97-0x0;var _0x36659a=_0x27a0[_0x1a6d97];return _0x36659a;};'use strict';var _=require('lodash');var util=require(_0x027a('0x0'));var logger=require(_0x027a('0x1'))(_0x027a('0x2'));var moment=require(_0x027a('0x3'));var BPromise=require(_0x027a('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x027a('0x5'));var integrations=require(_0x027a('0x6'));module[_0x027a('0x7')]=function(_0x639bec,_0xe233ed){return _0x639bec[_0x027a('0x8')]('FreshsalesAccount',attributes,{'tableName':_0x027a('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c77e8bf..153d865 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4745=['debug','FreshsalesAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','GetFreshsalesAccount','FreshsalesAccount','findAll','options','attributes','limit','include','map','model','then','raw','ShowFreshsalesAccount','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','info','FreshsalesAccount,\x20%s,\x20%s','request\x20sent'];(function(_0x488ca1,_0xf6858e){var _0x4dd0a4=function(_0x40fb65){while(--_0x40fb65){_0x488ca1['push'](_0x488ca1['shift']());}};_0x4dd0a4(++_0xf6858e);}(_0x4745,0x1e7));var _0x5474=function(_0x3ce3c,_0x319337){_0x3ce3c=_0x3ce3c-0x0;var _0x55a2c9=_0x4745[_0x3ce3c];return _0x55a2c9;};'use strict';var _=require(_0x5474('0x0'));var util=require(_0x5474('0x1'));var moment=require(_0x5474('0x2'));var BPromise=require(_0x5474('0x3'));var rs=require(_0x5474('0x4'));var fs=require('fs');var Redis=require(_0x5474('0x5'));var db=require(_0x5474('0x6'))['db'];var utils=require(_0x5474('0x7'));var logger=require(_0x5474('0x8'))(_0x5474('0x9'));var config=require(_0x5474('0xa'));var jayson=require(_0x5474('0xb'));var client=jayson['client'][_0x5474('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x431f81,_0x57add7,_0x13929f){return new BPromise(function(_0x5d778b,_0x902ba8){return client[_0x5474('0xd')](_0x431f81,_0x13929f)['then'](function(_0xf876f8){logger[_0x5474('0xe')](_0x5474('0xf'),_0x57add7,_0x5474('0x10'));logger[_0x5474('0x11')](_0x5474('0x12'),_0x57add7,_0x5474('0x10'),JSON[_0x5474('0x13')](_0xf876f8));if(_0xf876f8['error']){if(_0xf876f8[_0x5474('0x14')][_0x5474('0x15')]===0x1f4){logger[_0x5474('0x14')](_0x5474('0xf'),_0x57add7,_0xf876f8[_0x5474('0x14')][_0x5474('0x16')]);return _0x902ba8(_0xf876f8[_0x5474('0x14')][_0x5474('0x16')]);}logger[_0x5474('0x14')]('FreshsalesAccount,\x20%s,\x20%s',_0x57add7,_0xf876f8[_0x5474('0x14')][_0x5474('0x16')]);return _0x5d778b(_0xf876f8[_0x5474('0x14')][_0x5474('0x16')]);}else{logger['info']('FreshsalesAccount,\x20%s,\x20%s',_0x57add7,'request\x20sent');_0x5d778b(_0xf876f8['result'][_0x5474('0x16')]);}})[_0x5474('0x17')](function(_0x2da774){logger['error'](_0x5474('0xf'),_0x57add7,_0x2da774);_0x902ba8(_0x2da774);});});}exports[_0x5474('0x18')]=function(_0x56dbfa){var _0x22b37d=this;return new Promise(function(_0x198fc8,_0x18b0fe){return db[_0x5474('0x19')][_0x5474('0x1a')]({'raw':_0x56dbfa['options']?_0x56dbfa[_0x5474('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x56dbfa[_0x5474('0x1b')]?_0x56dbfa[_0x5474('0x1b')]['where']||null:null,'attributes':_0x56dbfa['options']?_0x56dbfa['options'][_0x5474('0x1c')]||null:null,'limit':_0x56dbfa[_0x5474('0x1b')]?_0x56dbfa[_0x5474('0x1b')][_0x5474('0x1d')]||null:null,'include':_0x56dbfa[_0x5474('0x1b')]?_0x56dbfa[_0x5474('0x1b')][_0x5474('0x1e')]?_[_0x5474('0x1f')](_0x56dbfa[_0x5474('0x1b')][_0x5474('0x1e')],function(_0x542d1f){return{'model':db[_0x542d1f['model']],'as':_0x542d1f['as'],'attributes':_0x542d1f[_0x5474('0x1c')],'include':_0x542d1f[_0x5474('0x1e')]?_[_0x5474('0x1f')](_0x542d1f['include'],function(_0x24997a){return{'model':db[_0x24997a['model']],'as':_0x24997a['as'],'attributes':_0x24997a[_0x5474('0x1c')],'include':_0x24997a[_0x5474('0x1e')]?_['map'](_0x24997a[_0x5474('0x1e')],function(_0x5d4cd7){return{'model':db[_0x5d4cd7[_0x5474('0x20')]],'as':_0x5d4cd7['as'],'attributes':_0x5d4cd7['attributes']};}):[]};}):[]};}):[]:[]})[_0x5474('0x21')](function(_0x1384e4){logger[_0x5474('0xe')]('GetFreshsalesAccount',_0x56dbfa);logger[_0x5474('0x11')](_0x5474('0x18'),_0x56dbfa,JSON['stringify'](_0x1384e4));_0x198fc8(_0x1384e4);})['catch'](function(_0x5d2381){logger['error'](_0x5474('0x18'),_0x5d2381[_0x5474('0x16')],_0x56dbfa);_0x18b0fe(_0x22b37d['error'](0x1f4,_0x5d2381[_0x5474('0x16')]));});});};exports['ShowFreshsalesAccount']=function(_0xc1e0ce){var _0x58f27a=this;return new Promise(function(_0x70774f,_0x530cdb){return db[_0x5474('0x19')]['find']({'raw':_0xc1e0ce[_0x5474('0x1b')]?_0xc1e0ce[_0x5474('0x1b')][_0x5474('0x22')]===undefined?!![]:![]:!![],'where':_0xc1e0ce[_0x5474('0x1b')]?_0xc1e0ce['options']['where']||null:null,'attributes':_0xc1e0ce[_0x5474('0x1b')]?_0xc1e0ce[_0x5474('0x1b')][_0x5474('0x1c')]||null:null,'include':_0xc1e0ce[_0x5474('0x1b')]?_0xc1e0ce['options']['include']?_[_0x5474('0x1f')](_0xc1e0ce[_0x5474('0x1b')]['include'],function(_0x3ce359){return{'model':db[_0x3ce359[_0x5474('0x20')]],'as':_0x3ce359['as'],'attributes':_0x3ce359[_0x5474('0x1c')],'include':_0x3ce359[_0x5474('0x1e')]?_['map'](_0x3ce359[_0x5474('0x1e')],function(_0x409111){return{'model':db[_0x409111[_0x5474('0x20')]],'as':_0x409111['as'],'attributes':_0x409111['attributes'],'include':_0x409111[_0x5474('0x1e')]?_[_0x5474('0x1f')](_0x409111[_0x5474('0x1e')],function(_0x2f4589){return{'model':db[_0x2f4589['model']],'as':_0x2f4589['as'],'attributes':_0x2f4589['attributes']};}):[]};}):[]};}):[]:[]})[_0x5474('0x21')](function(_0x3eccef){logger[_0x5474('0xe')](_0x5474('0x23'),_0xc1e0ce);logger['debug'](_0x5474('0x23'),_0xc1e0ce,JSON[_0x5474('0x13')](_0x3eccef));_0x70774f(_0x3eccef);})[_0x5474('0x17')](function(_0x22009e){logger['error']('ShowFreshsalesAccount',_0x22009e['message'],_0xc1e0ce);_0x530cdb(_0x58f27a[_0x5474('0x14')](0x1f4,_0x22009e['message']));});});};
\ No newline at end of file
+var _0x583c=['raw','where','attributes','limit','map','include','model','debug','stringify','catch','ShowFreshsalesAccount','lodash','util','moment','bluebird','ioredis','../../mysqldb','rpc','../../config/environment','client','http','then','info','FreshsalesAccount,\x20%s,\x20%s','request\x20sent','FreshsalesAccount,\x20%s,\x20%s,\x20%s','error','message','result','GetFreshsalesAccount','FreshsalesAccount','options'];(function(_0x1344d6,_0x2181e6){var _0xf45b24=function(_0x2d90c1){while(--_0x2d90c1){_0x1344d6['push'](_0x1344d6['shift']());}};_0xf45b24(++_0x2181e6);}(_0x583c,0x12b));var _0xc583=function(_0x1acc2d,_0x597696){_0x1acc2d=_0x1acc2d-0x0;var _0xabfa6d=_0x583c[_0x1acc2d];return _0xabfa6d;};'use strict';var _=require(_0xc583('0x0'));var util=require(_0xc583('0x1'));var moment=require(_0xc583('0x2'));var BPromise=require(_0xc583('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc583('0x4'));var db=require(_0xc583('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xc583('0x6'));var config=require(_0xc583('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xc583('0x8')][_0xc583('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2719df,_0x1dd37c,_0x48a8d4){return new BPromise(function(_0x21ed88,_0x26cec0){return client['request'](_0x2719df,_0x48a8d4)[_0xc583('0xa')](function(_0x24ab4f){logger[_0xc583('0xb')](_0xc583('0xc'),_0x1dd37c,_0xc583('0xd'));logger['debug'](_0xc583('0xe'),_0x1dd37c,_0xc583('0xd'),JSON['stringify'](_0x24ab4f));if(_0x24ab4f[_0xc583('0xf')]){if(_0x24ab4f[_0xc583('0xf')]['code']===0x1f4){logger[_0xc583('0xf')](_0xc583('0xc'),_0x1dd37c,_0x24ab4f[_0xc583('0xf')][_0xc583('0x10')]);return _0x26cec0(_0x24ab4f[_0xc583('0xf')][_0xc583('0x10')]);}logger[_0xc583('0xf')](_0xc583('0xc'),_0x1dd37c,_0x24ab4f[_0xc583('0xf')]['message']);return _0x21ed88(_0x24ab4f[_0xc583('0xf')]['message']);}else{logger[_0xc583('0xb')](_0xc583('0xc'),_0x1dd37c,'request\x20sent');_0x21ed88(_0x24ab4f[_0xc583('0x11')][_0xc583('0x10')]);}})['catch'](function(_0x7d1690){logger[_0xc583('0xf')]('FreshsalesAccount,\x20%s,\x20%s',_0x1dd37c,_0x7d1690);_0x26cec0(_0x7d1690);});});}exports[_0xc583('0x12')]=function(_0x8a2d84){var _0x12aac2=this;return new Promise(function(_0x36e0fd,_0x5433ec){return db[_0xc583('0x13')]['findAll']({'raw':_0x8a2d84[_0xc583('0x14')]?_0x8a2d84[_0xc583('0x14')][_0xc583('0x15')]===undefined?!![]:![]:!![],'where':_0x8a2d84[_0xc583('0x14')]?_0x8a2d84[_0xc583('0x14')][_0xc583('0x16')]||null:null,'attributes':_0x8a2d84[_0xc583('0x14')]?_0x8a2d84[_0xc583('0x14')][_0xc583('0x17')]||null:null,'limit':_0x8a2d84[_0xc583('0x14')]?_0x8a2d84[_0xc583('0x14')][_0xc583('0x18')]||null:null,'include':_0x8a2d84[_0xc583('0x14')]?_0x8a2d84['options']['include']?_[_0xc583('0x19')](_0x8a2d84[_0xc583('0x14')][_0xc583('0x1a')],function(_0x5ceef1){return{'model':db[_0x5ceef1[_0xc583('0x1b')]],'as':_0x5ceef1['as'],'attributes':_0x5ceef1[_0xc583('0x17')],'include':_0x5ceef1[_0xc583('0x1a')]?_[_0xc583('0x19')](_0x5ceef1[_0xc583('0x1a')],function(_0x48c95e){return{'model':db[_0x48c95e['model']],'as':_0x48c95e['as'],'attributes':_0x48c95e[_0xc583('0x17')],'include':_0x48c95e['include']?_[_0xc583('0x19')](_0x48c95e[_0xc583('0x1a')],function(_0xbabf24){return{'model':db[_0xbabf24[_0xc583('0x1b')]],'as':_0xbabf24['as'],'attributes':_0xbabf24[_0xc583('0x17')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2dafb4){logger[_0xc583('0xb')]('GetFreshsalesAccount',_0x8a2d84);logger[_0xc583('0x1c')]('GetFreshsalesAccount',_0x8a2d84,JSON[_0xc583('0x1d')](_0x2dafb4));_0x36e0fd(_0x2dafb4);})[_0xc583('0x1e')](function(_0x1c80b1){logger[_0xc583('0xf')](_0xc583('0x12'),_0x1c80b1[_0xc583('0x10')],_0x8a2d84);_0x5433ec(_0x12aac2[_0xc583('0xf')](0x1f4,_0x1c80b1['message']));});});};exports[_0xc583('0x1f')]=function(_0x390bc3){var _0x23f3a4=this;return new Promise(function(_0xcbf1f1,_0x1dd665){return db[_0xc583('0x13')]['find']({'raw':_0x390bc3[_0xc583('0x14')]?_0x390bc3['options']['raw']===undefined?!![]:![]:!![],'where':_0x390bc3[_0xc583('0x14')]?_0x390bc3[_0xc583('0x14')][_0xc583('0x16')]||null:null,'attributes':_0x390bc3[_0xc583('0x14')]?_0x390bc3[_0xc583('0x14')]['attributes']||null:null,'include':_0x390bc3[_0xc583('0x14')]?_0x390bc3[_0xc583('0x14')][_0xc583('0x1a')]?_['map'](_0x390bc3[_0xc583('0x14')]['include'],function(_0x1aa62a){return{'model':db[_0x1aa62a[_0xc583('0x1b')]],'as':_0x1aa62a['as'],'attributes':_0x1aa62a[_0xc583('0x17')],'include':_0x1aa62a[_0xc583('0x1a')]?_[_0xc583('0x19')](_0x1aa62a['include'],function(_0x242728){return{'model':db[_0x242728['model']],'as':_0x242728['as'],'attributes':_0x242728[_0xc583('0x17')],'include':_0x242728['include']?_[_0xc583('0x19')](_0x242728[_0xc583('0x1a')],function(_0x7d89d0){return{'model':db[_0x7d89d0[_0xc583('0x1b')]],'as':_0x7d89d0['as'],'attributes':_0x7d89d0[_0xc583('0x17')]};}):[]};}):[]};}):[]:[]})[_0xc583('0xa')](function(_0x54200c){logger['info'](_0xc583('0x1f'),_0x390bc3);logger[_0xc583('0x1c')]('ShowFreshsalesAccount',_0x390bc3,JSON[_0xc583('0x1d')](_0x54200c));_0xcbf1f1(_0x54200c);})[_0xc583('0x1e')](function(_0x22de5a){logger[_0xc583('0xf')](_0xc583('0x1f'),_0x22de5a[_0xc583('0x10')],_0x390bc3);_0x1dd665(_0x23f3a4['error'](0x1f4,_0x22de5a[_0xc583('0x10')]));});});};
\ No newline at end of file
index be0b5f5..179de36 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4829=['isAuthenticated','/:id','show','/:id/subjects','getSubjects','/:id/fields','getFields','create','update','connect-timeout','Router','../../components/auth/service','../../config/environment','get'];(function(_0x576d8a,_0x2d7bde){var _0x3dc3ef=function(_0xc76758){while(--_0xc76758){_0x576d8a['push'](_0x576d8a['shift']());}};_0x3dc3ef(++_0x2d7bde);}(_0x4829,0xa3));var _0x9482=function(_0x556bb1,_0x34830d){_0x556bb1=_0x556bb1-0x0;var _0x45455f=_0x4829[_0x556bb1];return _0x45455f;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0x9482('0x0'));var express=require('express');var router=express[_0x9482('0x1')]();var fs_extra=require('fs-extra');var auth=require(_0x9482('0x2'));var interaction=require('../../components/interaction/service');var config=require(_0x9482('0x3'));var controller=require('./intFreshsalesConfiguration.controller');router[_0x9482('0x4')]('/',auth[_0x9482('0x5')](),controller['index']);router[_0x9482('0x4')](_0x9482('0x6'),auth[_0x9482('0x5')](),controller[_0x9482('0x7')]);router['get'](_0x9482('0x8'),auth[_0x9482('0x5')](),controller[_0x9482('0x9')]);router[_0x9482('0x4')]('/:id/descriptions',auth[_0x9482('0x5')](),controller['getDescriptions']);router[_0x9482('0x4')](_0x9482('0xa'),auth[_0x9482('0x5')](),controller[_0x9482('0xb')]);router['post']('/',auth[_0x9482('0x5')](),controller[_0x9482('0xc')]);router['put'](_0x9482('0x6'),auth[_0x9482('0x5')](),controller[_0x9482('0xd')]);router['delete'](_0x9482('0x6'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x6a3f=['destroy','multer','util','connect-timeout','Router','fs-extra','../../components/auth/service','./intFreshsalesConfiguration.controller','get','isAuthenticated','index','/:id','show','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','/:id/fields','getFields','post','put','update'];(function(_0x133277,_0xb1d6b2){var _0x5b4a22=function(_0x484c26){while(--_0x484c26){_0x133277['push'](_0x133277['shift']());}};_0x5b4a22(++_0xb1d6b2);}(_0x6a3f,0x11f));var _0xf6a3=function(_0x617eb,_0x2f2f57){_0x617eb=_0x617eb-0x0;var _0x3e5dbf=_0x6a3f[_0x617eb];return _0x3e5dbf;};'use strict';var multer=require(_0xf6a3('0x0'));var util=require(_0xf6a3('0x1'));var path=require('path');var timeout=require(_0xf6a3('0x2'));var express=require('express');var router=express[_0xf6a3('0x3')]();var fs_extra=require(_0xf6a3('0x4'));var auth=require(_0xf6a3('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xf6a3('0x6'));router[_0xf6a3('0x7')]('/',auth[_0xf6a3('0x8')](),controller[_0xf6a3('0x9')]);router[_0xf6a3('0x7')](_0xf6a3('0xa'),auth['isAuthenticated'](),controller[_0xf6a3('0xb')]);router[_0xf6a3('0x7')](_0xf6a3('0xc'),auth[_0xf6a3('0x8')](),controller[_0xf6a3('0xd')]);router['get'](_0xf6a3('0xe'),auth[_0xf6a3('0x8')](),controller[_0xf6a3('0xf')]);router[_0xf6a3('0x7')](_0xf6a3('0x10'),auth[_0xf6a3('0x8')](),controller[_0xf6a3('0x11')]);router[_0xf6a3('0x12')]('/',auth[_0xf6a3('0x8')](),controller['create']);router[_0xf6a3('0x13')]('/:id',auth['isAuthenticated'](),controller[_0xf6a3('0x14')]);router['delete'](_0xf6a3('0xa'),auth[_0xf6a3('0x8')](),controller[_0xf6a3('0x15')]);module['exports']=router;
\ No newline at end of file
index af0006d..e5d50fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9367=['sequelize','exports','STRING'];(function(_0x170f4c,_0x4a4c80){var _0x52eedd=function(_0x473905){while(--_0x473905){_0x170f4c['push'](_0x170f4c['shift']());}};_0x52eedd(++_0x4a4c80);}(_0x9367,0x150));var _0x7936=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x9367[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x7936('0x0'));module[_0x7936('0x1')]={'name':{'type':Sequelize[_0x7936('0x2')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x43de=['STRING','sequelize','exports'];(function(_0x91d498,_0x482a89){var _0x1e0294=function(_0x214950){while(--_0x214950){_0x91d498['push'](_0x91d498['shift']());}};_0x1e0294(++_0x482a89);}(_0x43de,0x163));var _0xe43d=function(_0x17dcaf,_0x4a79fd){_0x17dcaf=_0x17dcaf-0x0;var _0x264e2a=_0x43de[_0x17dcaf];return _0x264e2a;};'use strict';var Sequelize=require(_0xe43d('0x0'));module[_0xe43d('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xe43d('0x2')]}};
\ No newline at end of file
index 5a42907..4e1efb4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x662a=['options','create','body','find','destroy','getSubjects','findOne','FreshsalesField','pick','filter','nolimit','getDescriptions','hasOwnProperty','getFields','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','reject','end','error','stack','name','send','index','map','FreshsalesConfiguration','rawAttributes','fieldName','type','key','model','keys','query','intersection','fields','attributes','length','order','sort','where','filters','merge','then','includeAll','include','findAll','rows','catch','show','params'];(function(_0x3d822c,_0x4fec1d){var _0x564515=function(_0x14ae8a){while(--_0x14ae8a){_0x3d822c['push'](_0x3d822c['shift']());}};_0x564515(++_0x4fec1d);}(_0x662a,0xae));var _0xa662=function(_0x45980f,_0x4324a0){_0x45980f=_0x45980f-0x0;var _0x5c8029=_0x662a[_0x45980f];return _0x5c8029;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xa662('0x0'));var zipdir=require(_0xa662('0x1'));var jsonpatch=require(_0xa662('0x2'));var rp=require(_0xa662('0x3'));var moment=require('moment');var BPromise=require(_0xa662('0x4'));var Mustache=require(_0xa662('0x5'));var util=require(_0xa662('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0xa662('0x7'));var ejs=require(_0xa662('0x8'));var fs=require('fs');var fs_extra=require(_0xa662('0x9'));var _=require(_0xa662('0xa'));var squel=require(_0xa662('0xb'));var crypto=require(_0xa662('0xc'));var jsforce=require(_0xa662('0xd'));var deskjs=require(_0xa662('0xe'));var toCsv=require(_0xa662('0x7'));var querystring=require('querystring');var Papa=require(_0xa662('0xf'));var Redis=require('ioredis');var authService=require(_0xa662('0x10'));var qs=require(_0xa662('0x11'));var as=require(_0xa662('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xa662('0x13'))(_0xa662('0x14'));var utils=require('../../config/utils');var config=require(_0xa662('0x15'));var licenseUtil=require(_0xa662('0x16'));var db=require(_0xa662('0x17'))['db'];function respondWithStatusCode(_0x177549,_0x3a57e7){_0x3a57e7=_0x3a57e7||0xcc;return function(_0xece161){if(_0xece161){return _0x177549[_0xa662('0x18')](_0x3a57e7);}return _0x177549[_0xa662('0x19')](_0x3a57e7)['end']();};}function respondWithResult(_0x27b19b,_0x44e17e){_0x44e17e=_0x44e17e||0xc8;return function(_0x4ea91b){if(_0x4ea91b){return _0x27b19b[_0xa662('0x19')](_0x44e17e)[_0xa662('0x1a')](_0x4ea91b);}};}function respondWithFilteredResult(_0x4f09ab,_0x31ee39){return function(_0x22516f){if(_0x22516f){var _0x1cd9cd=typeof _0x31ee39[_0xa662('0x1b')]===_0xa662('0x1c')&&typeof _0x31ee39[_0xa662('0x1d')]==='undefined';var _0x121f86=_0x22516f[_0xa662('0x1e')];var _0x4e049c=_0x1cd9cd?0x0:_0x31ee39[_0xa662('0x1b')];var _0x29d945=_0x1cd9cd?_0x22516f[_0xa662('0x1e')]:_0x31ee39[_0xa662('0x1b')]+_0x31ee39['limit'];var _0x169edd;if(_0x29d945>=_0x121f86){_0x29d945=_0x121f86;_0x169edd=0xc8;}else{_0x169edd=0xce;}_0x4f09ab[_0xa662('0x19')](_0x169edd);return _0x4f09ab[_0xa662('0x1f')](_0xa662('0x20'),_0x4e049c+'-'+_0x29d945+'/'+_0x121f86)[_0xa662('0x1a')](_0x22516f);}return null;};}function patchUpdates(_0x10b214){return function(_0x14249d){try{jsonpatch['apply'](_0x14249d,_0x10b214,!![]);}catch(_0x56f901){return BPromise[_0xa662('0x21')](_0x56f901);}return _0x14249d['save']();};}function saveUpdates(_0x2fbcee,_0x5a4999){return function(_0x166495){if(_0x166495){return _0x166495['update'](_0x2fbcee)['then'](function(_0x90fdb0){return _0x90fdb0;});}return null;};}function removeEntity(_0x47c251,_0x18f215){return function(_0x12a5ae){if(_0x12a5ae){return _0x12a5ae['destroy']()['then'](function(){_0x47c251[_0xa662('0x19')](0xcc)[_0xa662('0x22')]();});}};}function handleEntityNotFound(_0x406699,_0x1e905b){return function(_0x268ff2){if(!_0x268ff2){_0x406699['sendStatus'](0x194);}return _0x268ff2;};}function handleError(_0x4da8ea,_0x37369d){_0x37369d=_0x37369d||0x1f4;return function(_0x572927){logger[_0xa662('0x23')](_0x572927[_0xa662('0x24')]);if(_0x572927[_0xa662('0x25')]){delete _0x572927['name'];}_0x4da8ea[_0xa662('0x19')](_0x37369d)[_0xa662('0x26')](_0x572927);};}exports[_0xa662('0x27')]=function(_0x4c45cc,_0x4299fd){var _0x10a0e6={},_0x1dc05b={},_0x12b359={'count':0x0,'rows':[]};var _0x1ff272=_[_0xa662('0x28')](db[_0xa662('0x29')][_0xa662('0x2a')],function(_0x2ad84e){return{'name':_0x2ad84e[_0xa662('0x2b')],'type':_0x2ad84e[_0xa662('0x2c')][_0xa662('0x2d')]};});_0x1dc05b[_0xa662('0x2e')]=_[_0xa662('0x28')](_0x1ff272,_0xa662('0x25'));_0x1dc05b['query']=_[_0xa662('0x2f')](_0x4c45cc['query']);_0x1dc05b['filters']=_['intersection'](_0x1dc05b[_0xa662('0x2e')],_0x1dc05b[_0xa662('0x30')]);_0x10a0e6['attributes']=_[_0xa662('0x31')](_0x1dc05b[_0xa662('0x2e')],qs[_0xa662('0x32')](_0x4c45cc['query']['fields']));_0x10a0e6[_0xa662('0x33')]=_0x10a0e6[_0xa662('0x33')][_0xa662('0x34')]?_0x10a0e6[_0xa662('0x33')]:_0x1dc05b['model'];if(!_0x4c45cc[_0xa662('0x30')]['hasOwnProperty']('nolimit')){_0x10a0e6['limit']=qs[_0xa662('0x1d')](_0x4c45cc[_0xa662('0x30')]['limit']);_0x10a0e6[_0xa662('0x1b')]=qs[_0xa662('0x1b')](_0x4c45cc['query'][_0xa662('0x1b')]);}_0x10a0e6[_0xa662('0x35')]=qs[_0xa662('0x36')](_0x4c45cc[_0xa662('0x30')]['sort']);_0x10a0e6[_0xa662('0x37')]=qs[_0xa662('0x38')](_['pick'](_0x4c45cc['query'],_0x1dc05b[_0xa662('0x38')]),_0x1ff272);if(_0x4c45cc[_0xa662('0x30')]['filter']){_0x10a0e6['where']=_[_0xa662('0x39')](_0x10a0e6[_0xa662('0x37')],{'$or':_[_0xa662('0x28')](_0x1ff272,function(_0x6309f7){if(_0x6309f7[_0xa662('0x2c')]!=='VIRTUAL'){var _0x5c640e={};_0x5c640e[_0x6309f7['name']]={'$like':'%'+_0x4c45cc[_0xa662('0x30')]['filter']+'%'};return _0x5c640e;}})});}_0x10a0e6=_[_0xa662('0x39')]({},_0x10a0e6,_0x4c45cc['options']);var _0x6fbf1={'where':_0x10a0e6['where']};return db['FreshsalesConfiguration'][_0xa662('0x1e')](_0x6fbf1)[_0xa662('0x3a')](function(_0x70a999){_0x12b359[_0xa662('0x1e')]=_0x70a999;if(_0x4c45cc[_0xa662('0x30')][_0xa662('0x3b')]){_0x10a0e6[_0xa662('0x3c')]=[{'all':!![]}];}return db['FreshsalesConfiguration'][_0xa662('0x3d')](_0x10a0e6);})[_0xa662('0x3a')](function(_0x492acd){_0x12b359[_0xa662('0x3e')]=_0x492acd;return _0x12b359;})[_0xa662('0x3a')](respondWithFilteredResult(_0x4299fd,_0x10a0e6))[_0xa662('0x3f')](handleError(_0x4299fd,null));};exports[_0xa662('0x40')]=function(_0x4860c7,_0x27a96c){var _0x436a99={'raw':![],'where':{'id':_0x4860c7[_0xa662('0x41')]['id']}},_0x373923={};_0x373923[_0xa662('0x2e')]=_[_0xa662('0x2f')](db[_0xa662('0x29')][_0xa662('0x2a')]);_0x373923[_0xa662('0x30')]=_[_0xa662('0x2f')](_0x4860c7['query']);_0x373923[_0xa662('0x38')]=_[_0xa662('0x31')](_0x373923['model'],_0x373923[_0xa662('0x30')]);_0x436a99[_0xa662('0x33')]=_[_0xa662('0x31')](_0x373923[_0xa662('0x2e')],qs[_0xa662('0x32')](_0x4860c7[_0xa662('0x30')]['fields']));_0x436a99['attributes']=_0x436a99[_0xa662('0x33')]['length']?_0x436a99[_0xa662('0x33')]:_0x373923[_0xa662('0x2e')];if(_0x4860c7['query'][_0xa662('0x3b')]){_0x436a99['include']=[{'all':!![]}];}_0x436a99=_[_0xa662('0x39')]({},_0x436a99,_0x4860c7[_0xa662('0x42')]);return db[_0xa662('0x29')]['find'](_0x436a99)['then'](handleEntityNotFound(_0x27a96c,null))[_0xa662('0x3a')](respondWithResult(_0x27a96c,null))[_0xa662('0x3f')](handleError(_0x27a96c,null));};exports[_0xa662('0x43')]=function(_0x4ce640,_0x4ab44e){return db[_0xa662('0x29')][_0xa662('0x43')](_0x4ce640[_0xa662('0x44')],{})['then'](respondWithResult(_0x4ab44e,0xc9))[_0xa662('0x3f')](handleError(_0x4ab44e,null));};exports['update']=function(_0x1d7d35,_0x33ac26){if(_0x1d7d35[_0xa662('0x44')]['id']){delete _0x1d7d35['body']['id'];}return db[_0xa662('0x29')][_0xa662('0x45')]({'where':{'id':_0x1d7d35[_0xa662('0x41')]['id']}})[_0xa662('0x3a')](handleEntityNotFound(_0x33ac26,null))[_0xa662('0x3a')](saveUpdates(_0x1d7d35[_0xa662('0x44')],null))[_0xa662('0x3a')](respondWithResult(_0x33ac26,null))[_0xa662('0x3f')](handleError(_0x33ac26,null));};exports[_0xa662('0x46')]=function(_0x2af025,_0x2d5898){return db[_0xa662('0x29')]['find']({'where':{'id':_0x2af025['params']['id']}})[_0xa662('0x3a')](handleEntityNotFound(_0x2d5898,null))[_0xa662('0x3a')](removeEntity(_0x2d5898,null))[_0xa662('0x3f')](handleError(_0x2d5898,null));};exports[_0xa662('0x47')]=function(_0x136aa0,_0x3bb877,_0x3e5aa5){var _0x49a9f0={};var _0x204798={};var _0x5223d6;var _0x35c227;return db[_0xa662('0x29')][_0xa662('0x48')]({'where':{'id':_0x136aa0[_0xa662('0x41')]['id']}})[_0xa662('0x3a')](handleEntityNotFound(_0x3bb877,null))[_0xa662('0x3a')](function(_0x3899e6){if(_0x3899e6){_0x5223d6=_0x3899e6;_0x204798[_0xa662('0x2e')]=_[_0xa662('0x2f')](db[_0xa662('0x49')][_0xa662('0x2a')]);_0x204798[_0xa662('0x30')]=_[_0xa662('0x2f')](_0x136aa0[_0xa662('0x30')]);_0x204798[_0xa662('0x38')]=_[_0xa662('0x31')](_0x204798[_0xa662('0x2e')],_0x204798['query']);_0x49a9f0[_0xa662('0x33')]=_[_0xa662('0x31')](_0x204798['model'],qs['fields'](_0x136aa0[_0xa662('0x30')][_0xa662('0x32')]));_0x49a9f0[_0xa662('0x33')]=_0x49a9f0[_0xa662('0x33')][_0xa662('0x34')]?_0x49a9f0[_0xa662('0x33')]:_0x204798[_0xa662('0x2e')];_0x49a9f0[_0xa662('0x35')]=qs[_0xa662('0x36')](_0x136aa0[_0xa662('0x30')][_0xa662('0x36')]);_0x49a9f0[_0xa662('0x37')]=qs[_0xa662('0x38')](_[_0xa662('0x4a')](_0x136aa0['query'],_0x204798[_0xa662('0x38')]));if(_0x136aa0[_0xa662('0x30')][_0xa662('0x4b')]){_0x49a9f0[_0xa662('0x37')]=_[_0xa662('0x39')](_0x49a9f0[_0xa662('0x37')],{'$or':_[_0xa662('0x28')](_0x49a9f0[_0xa662('0x33')],function(_0x3dfe96){var _0xf55380={};_0xf55380[_0x3dfe96]={'$like':'%'+_0x136aa0['query']['filter']+'%'};return _0xf55380;})});}_0x49a9f0=_['merge']({},_0x49a9f0,_0x136aa0[_0xa662('0x42')]);return _0x5223d6['getSubjects'](_0x49a9f0);}})[_0xa662('0x3a')](function(_0x1baba9){if(_0x1baba9){_0x35c227=_0x1baba9[_0xa662('0x34')];if(!_0x136aa0['query']['hasOwnProperty'](_0xa662('0x4c'))){_0x49a9f0['limit']=qs[_0xa662('0x1d')](_0x136aa0['query']['limit']);_0x49a9f0[_0xa662('0x1b')]=qs['offset'](_0x136aa0[_0xa662('0x30')][_0xa662('0x1b')]);}return _0x5223d6['getSubjects'](_0x49a9f0);}})['then'](function(_0x114a7f){if(_0x114a7f){return _0x114a7f?{'count':_0x35c227,'rows':_0x114a7f}:null;}})[_0xa662('0x3a')](respondWithResult(_0x3bb877,null))[_0xa662('0x3f')](handleError(_0x3bb877,null));};exports[_0xa662('0x4d')]=function(_0xb5ac8b,_0x40806a,_0x418a79){var _0x1fe5e0={};var _0xabb838={};var _0x9d6cee;var _0x468004;return db[_0xa662('0x29')][_0xa662('0x48')]({'where':{'id':_0xb5ac8b['params']['id']}})[_0xa662('0x3a')](handleEntityNotFound(_0x40806a,null))[_0xa662('0x3a')](function(_0xd0dacc){if(_0xd0dacc){_0x9d6cee=_0xd0dacc;_0xabb838[_0xa662('0x2e')]=_[_0xa662('0x2f')](db[_0xa662('0x49')][_0xa662('0x2a')]);_0xabb838[_0xa662('0x30')]=_[_0xa662('0x2f')](_0xb5ac8b['query']);_0xabb838[_0xa662('0x38')]=_[_0xa662('0x31')](_0xabb838['model'],_0xabb838[_0xa662('0x30')]);_0x1fe5e0[_0xa662('0x33')]=_[_0xa662('0x31')](_0xabb838[_0xa662('0x2e')],qs[_0xa662('0x32')](_0xb5ac8b[_0xa662('0x30')][_0xa662('0x32')]));_0x1fe5e0[_0xa662('0x33')]=_0x1fe5e0[_0xa662('0x33')][_0xa662('0x34')]?_0x1fe5e0[_0xa662('0x33')]:_0xabb838[_0xa662('0x2e')];_0x1fe5e0[_0xa662('0x35')]=qs[_0xa662('0x36')](_0xb5ac8b[_0xa662('0x30')]['sort']);_0x1fe5e0[_0xa662('0x37')]=qs[_0xa662('0x38')](_[_0xa662('0x4a')](_0xb5ac8b[_0xa662('0x30')],_0xabb838[_0xa662('0x38')]));if(_0xb5ac8b[_0xa662('0x30')]['filter']){_0x1fe5e0[_0xa662('0x37')]=_['merge'](_0x1fe5e0[_0xa662('0x37')],{'$or':_['map'](_0x1fe5e0['attributes'],function(_0x50b995){var _0x12e7b0={};_0x12e7b0[_0x50b995]={'$like':'%'+_0xb5ac8b[_0xa662('0x30')]['filter']+'%'};return _0x12e7b0;})});}_0x1fe5e0=_[_0xa662('0x39')]({},_0x1fe5e0,_0xb5ac8b[_0xa662('0x42')]);return _0x9d6cee[_0xa662('0x4d')](_0x1fe5e0);}})[_0xa662('0x3a')](function(_0x1b0778){if(_0x1b0778){_0x468004=_0x1b0778[_0xa662('0x34')];if(!_0xb5ac8b[_0xa662('0x30')][_0xa662('0x4e')](_0xa662('0x4c'))){_0x1fe5e0[_0xa662('0x1d')]=qs[_0xa662('0x1d')](_0xb5ac8b[_0xa662('0x30')][_0xa662('0x1d')]);_0x1fe5e0[_0xa662('0x1b')]=qs[_0xa662('0x1b')](_0xb5ac8b[_0xa662('0x30')]['offset']);}return _0x9d6cee[_0xa662('0x4d')](_0x1fe5e0);}})[_0xa662('0x3a')](function(_0x3671c2){if(_0x3671c2){return _0x3671c2?{'count':_0x468004,'rows':_0x3671c2}:null;}})[_0xa662('0x3a')](respondWithResult(_0x40806a,null))[_0xa662('0x3f')](handleError(_0x40806a,null));};exports['getFields']=function(_0x2c415d,_0x9a71bc,_0xc25de5){var _0x3501f9={};var _0x6a0443={};var _0x5dcfb9;var _0x3c3f4c;return db[_0xa662('0x29')]['findOne']({'where':{'id':_0x2c415d[_0xa662('0x41')]['id']}})[_0xa662('0x3a')](handleEntityNotFound(_0x9a71bc,null))[_0xa662('0x3a')](function(_0x3636e6){if(_0x3636e6){_0x5dcfb9=_0x3636e6;_0x6a0443['model']=_[_0xa662('0x2f')](db[_0xa662('0x49')][_0xa662('0x2a')]);_0x6a0443[_0xa662('0x30')]=_[_0xa662('0x2f')](_0x2c415d[_0xa662('0x30')]);_0x6a0443[_0xa662('0x38')]=_[_0xa662('0x31')](_0x6a0443[_0xa662('0x2e')],_0x6a0443[_0xa662('0x30')]);_0x3501f9[_0xa662('0x33')]=_[_0xa662('0x31')](_0x6a0443['model'],qs['fields'](_0x2c415d[_0xa662('0x30')][_0xa662('0x32')]));_0x3501f9[_0xa662('0x33')]=_0x3501f9['attributes']['length']?_0x3501f9[_0xa662('0x33')]:_0x6a0443['model'];_0x3501f9['order']=qs[_0xa662('0x36')](_0x2c415d[_0xa662('0x30')][_0xa662('0x36')]);_0x3501f9[_0xa662('0x37')]=qs[_0xa662('0x38')](_[_0xa662('0x4a')](_0x2c415d['query'],_0x6a0443[_0xa662('0x38')]));if(_0x2c415d['query'][_0xa662('0x4b')]){_0x3501f9['where']=_['merge'](_0x3501f9[_0xa662('0x37')],{'$or':_[_0xa662('0x28')](_0x3501f9[_0xa662('0x33')],function(_0x12828c){var _0x2fc9ef={};_0x2fc9ef[_0x12828c]={'$like':'%'+_0x2c415d[_0xa662('0x30')]['filter']+'%'};return _0x2fc9ef;})});}_0x3501f9=_['merge']({},_0x3501f9,_0x2c415d[_0xa662('0x42')]);return _0x5dcfb9[_0xa662('0x4f')](_0x3501f9);}})[_0xa662('0x3a')](function(_0xb04a1b){if(_0xb04a1b){_0x3c3f4c=_0xb04a1b[_0xa662('0x34')];if(!_0x2c415d[_0xa662('0x30')][_0xa662('0x4e')](_0xa662('0x4c'))){_0x3501f9['limit']=qs['limit'](_0x2c415d['query'][_0xa662('0x1d')]);_0x3501f9[_0xa662('0x1b')]=qs[_0xa662('0x1b')](_0x2c415d[_0xa662('0x30')][_0xa662('0x1b')]);}return _0x5dcfb9['getFields'](_0x3501f9);}})['then'](function(_0x391b14){if(_0x391b14){return _0x391b14?{'count':_0x3c3f4c,'rows':_0x391b14}:null;}})[_0xa662('0x3a')](respondWithResult(_0x9a71bc,null))[_0xa662('0x3f')](handleError(_0x9a71bc,null));};
\ No newline at end of file
+var _0xe043=['ejs','fs-extra','squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','limit','count','offset','set','Content-Range','apply','reject','then','destroy','end','name','send','index','FreshsalesConfiguration','rawAttributes','key','model','query','keys','filters','attributes','intersection','fields','length','order','sort','where','pick','filter','map','VIRTUAL','includeAll','include','findAll','catch','show','merge','options','find','create','body','update','params','getSubjects','findOne','FreshsalesField','nolimit','getDescriptions','hasOwnProperty','getFields','eml-format','rimraf','zip-dir','util','sox','to-csv'];(function(_0x4cdfa7,_0x1661f6){var _0x5299b2=function(_0x47e52c){while(--_0x47e52c){_0x4cdfa7['push'](_0x4cdfa7['shift']());}};_0x5299b2(++_0x1661f6);}(_0xe043,0x1b6));var _0x3e04=function(_0xbfc467,_0x2eb680){_0xbfc467=_0xbfc467-0x0;var _0x2971d2=_0xe043[_0xbfc467];return _0x2971d2;};'use strict';var emlformat=require(_0x3e04('0x0'));var rimraf=require(_0x3e04('0x1'));var zipdir=require(_0x3e04('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x3e04('0x3'));var path=require('path');var sox=require(_0x3e04('0x4'));var csv=require(_0x3e04('0x5'));var ejs=require(_0x3e04('0x6'));var fs=require('fs');var fs_extra=require(_0x3e04('0x7'));var _=require('lodash');var squel=require(_0x3e04('0x8'));var crypto=require(_0x3e04('0x9'));var jsforce=require(_0x3e04('0xa'));var deskjs=require('desk.js');var toCsv=require(_0x3e04('0x5'));var querystring=require(_0x3e04('0xb'));var Papa=require('papaparse');var Redis=require(_0x3e04('0xc'));var authService=require(_0x3e04('0xd'));var qs=require(_0x3e04('0xe'));var as=require(_0x3e04('0xf'));var hardwareService=require(_0x3e04('0x10'));var logger=require('../../config/logger')('api');var utils=require(_0x3e04('0x11'));var config=require('../../config/environment');var licenseUtil=require(_0x3e04('0x12'));var db=require(_0x3e04('0x13'))['db'];function respondWithStatusCode(_0x4156dd,_0x56608a){_0x56608a=_0x56608a||0xcc;return function(_0x2541cf){if(_0x2541cf){return _0x4156dd[_0x3e04('0x14')](_0x56608a);}return _0x4156dd[_0x3e04('0x15')](_0x56608a)['end']();};}function respondWithResult(_0x60862d,_0x5d4308){_0x5d4308=_0x5d4308||0xc8;return function(_0x23ccbd){if(_0x23ccbd){return _0x60862d['status'](_0x5d4308)[_0x3e04('0x16')](_0x23ccbd);}};}function respondWithFilteredResult(_0x12a880,_0x311008){return function(_0x887af2){if(_0x887af2){var _0x5291b1=typeof _0x311008['offset']===_0x3e04('0x17')&&typeof _0x311008[_0x3e04('0x18')]==='undefined';var _0xcfc148=_0x887af2[_0x3e04('0x19')];var _0x230931=_0x5291b1?0x0:_0x311008['offset'];var _0xdedde8=_0x5291b1?_0x887af2[_0x3e04('0x19')]:_0x311008[_0x3e04('0x1a')]+_0x311008[_0x3e04('0x18')];var _0x3dc472;if(_0xdedde8>=_0xcfc148){_0xdedde8=_0xcfc148;_0x3dc472=0xc8;}else{_0x3dc472=0xce;}_0x12a880[_0x3e04('0x15')](_0x3dc472);return _0x12a880[_0x3e04('0x1b')](_0x3e04('0x1c'),_0x230931+'-'+_0xdedde8+'/'+_0xcfc148)[_0x3e04('0x16')](_0x887af2);}return null;};}function patchUpdates(_0x3b46d0){return function(_0x36d57e){try{jsonpatch[_0x3e04('0x1d')](_0x36d57e,_0x3b46d0,!![]);}catch(_0x19963b){return BPromise[_0x3e04('0x1e')](_0x19963b);}return _0x36d57e['save']();};}function saveUpdates(_0x374bc6,_0x25c0c4){return function(_0x28d22d){if(_0x28d22d){return _0x28d22d['update'](_0x374bc6)[_0x3e04('0x1f')](function(_0x3dd9a5){return _0x3dd9a5;});}return null;};}function removeEntity(_0x34dba9,_0x3e4f54){return function(_0x1828c7){if(_0x1828c7){return _0x1828c7[_0x3e04('0x20')]()[_0x3e04('0x1f')](function(){_0x34dba9[_0x3e04('0x15')](0xcc)[_0x3e04('0x21')]();});}};}function handleEntityNotFound(_0x3c1c5a,_0x5cc7c7){return function(_0x299fc1){if(!_0x299fc1){_0x3c1c5a[_0x3e04('0x14')](0x194);}return _0x299fc1;};}function handleError(_0x56fce7,_0x41f44a){_0x41f44a=_0x41f44a||0x1f4;return function(_0x32654b){logger['error'](_0x32654b['stack']);if(_0x32654b[_0x3e04('0x22')]){delete _0x32654b[_0x3e04('0x22')];}_0x56fce7[_0x3e04('0x15')](_0x41f44a)[_0x3e04('0x23')](_0x32654b);};}exports[_0x3e04('0x24')]=function(_0x341442,_0x2c0515){var _0x17d216={},_0x5f317e={},_0xdc9b86={'count':0x0,'rows':[]};var _0x4c6702=_['map'](db[_0x3e04('0x25')][_0x3e04('0x26')],function(_0x493174){return{'name':_0x493174['fieldName'],'type':_0x493174['type'][_0x3e04('0x27')]};});_0x5f317e[_0x3e04('0x28')]=_['map'](_0x4c6702,_0x3e04('0x22'));_0x5f317e[_0x3e04('0x29')]=_[_0x3e04('0x2a')](_0x341442['query']);_0x5f317e[_0x3e04('0x2b')]=_['intersection'](_0x5f317e['model'],_0x5f317e[_0x3e04('0x29')]);_0x17d216[_0x3e04('0x2c')]=_[_0x3e04('0x2d')](_0x5f317e[_0x3e04('0x28')],qs[_0x3e04('0x2e')](_0x341442[_0x3e04('0x29')]['fields']));_0x17d216[_0x3e04('0x2c')]=_0x17d216[_0x3e04('0x2c')][_0x3e04('0x2f')]?_0x17d216[_0x3e04('0x2c')]:_0x5f317e[_0x3e04('0x28')];if(!_0x341442[_0x3e04('0x29')]['hasOwnProperty']('nolimit')){_0x17d216[_0x3e04('0x18')]=qs['limit'](_0x341442[_0x3e04('0x29')][_0x3e04('0x18')]);_0x17d216[_0x3e04('0x1a')]=qs[_0x3e04('0x1a')](_0x341442['query'][_0x3e04('0x1a')]);}_0x17d216[_0x3e04('0x30')]=qs[_0x3e04('0x31')](_0x341442['query'][_0x3e04('0x31')]);_0x17d216[_0x3e04('0x32')]=qs['filters'](_[_0x3e04('0x33')](_0x341442[_0x3e04('0x29')],_0x5f317e[_0x3e04('0x2b')]),_0x4c6702);if(_0x341442[_0x3e04('0x29')][_0x3e04('0x34')]){_0x17d216[_0x3e04('0x32')]=_['merge'](_0x17d216[_0x3e04('0x32')],{'$or':_[_0x3e04('0x35')](_0x4c6702,function(_0x8fb0e){if(_0x8fb0e['type']!==_0x3e04('0x36')){var _0x50dc27={};_0x50dc27[_0x8fb0e[_0x3e04('0x22')]]={'$like':'%'+_0x341442[_0x3e04('0x29')][_0x3e04('0x34')]+'%'};return _0x50dc27;}})});}_0x17d216=_['merge']({},_0x17d216,_0x341442['options']);var _0x33e7bb={'where':_0x17d216[_0x3e04('0x32')]};return db[_0x3e04('0x25')][_0x3e04('0x19')](_0x33e7bb)[_0x3e04('0x1f')](function(_0x3caafe){_0xdc9b86[_0x3e04('0x19')]=_0x3caafe;if(_0x341442[_0x3e04('0x29')][_0x3e04('0x37')]){_0x17d216[_0x3e04('0x38')]=[{'all':!![]}];}return db[_0x3e04('0x25')][_0x3e04('0x39')](_0x17d216);})[_0x3e04('0x1f')](function(_0x1f1f15){_0xdc9b86['rows']=_0x1f1f15;return _0xdc9b86;})[_0x3e04('0x1f')](respondWithFilteredResult(_0x2c0515,_0x17d216))[_0x3e04('0x3a')](handleError(_0x2c0515,null));};exports[_0x3e04('0x3b')]=function(_0x361b6a,_0x1d6f6e){var _0x25b7ba={'raw':![],'where':{'id':_0x361b6a['params']['id']}},_0x44a24f={};_0x44a24f[_0x3e04('0x28')]=_['keys'](db[_0x3e04('0x25')]['rawAttributes']);_0x44a24f[_0x3e04('0x29')]=_['keys'](_0x361b6a[_0x3e04('0x29')]);_0x44a24f[_0x3e04('0x2b')]=_['intersection'](_0x44a24f[_0x3e04('0x28')],_0x44a24f[_0x3e04('0x29')]);_0x25b7ba[_0x3e04('0x2c')]=_[_0x3e04('0x2d')](_0x44a24f[_0x3e04('0x28')],qs[_0x3e04('0x2e')](_0x361b6a[_0x3e04('0x29')][_0x3e04('0x2e')]));_0x25b7ba[_0x3e04('0x2c')]=_0x25b7ba[_0x3e04('0x2c')]['length']?_0x25b7ba[_0x3e04('0x2c')]:_0x44a24f[_0x3e04('0x28')];if(_0x361b6a['query'][_0x3e04('0x37')]){_0x25b7ba['include']=[{'all':!![]}];}_0x25b7ba=_[_0x3e04('0x3c')]({},_0x25b7ba,_0x361b6a[_0x3e04('0x3d')]);return db['FreshsalesConfiguration'][_0x3e04('0x3e')](_0x25b7ba)[_0x3e04('0x1f')](handleEntityNotFound(_0x1d6f6e,null))[_0x3e04('0x1f')](respondWithResult(_0x1d6f6e,null))[_0x3e04('0x3a')](handleError(_0x1d6f6e,null));};exports[_0x3e04('0x3f')]=function(_0x47f25e,_0x230a65){return db[_0x3e04('0x25')][_0x3e04('0x3f')](_0x47f25e[_0x3e04('0x40')],{})[_0x3e04('0x1f')](respondWithResult(_0x230a65,0xc9))[_0x3e04('0x3a')](handleError(_0x230a65,null));};exports[_0x3e04('0x41')]=function(_0x257914,_0x2e14af){if(_0x257914['body']['id']){delete _0x257914[_0x3e04('0x40')]['id'];}return db[_0x3e04('0x25')][_0x3e04('0x3e')]({'where':{'id':_0x257914[_0x3e04('0x42')]['id']}})[_0x3e04('0x1f')](handleEntityNotFound(_0x2e14af,null))[_0x3e04('0x1f')](saveUpdates(_0x257914[_0x3e04('0x40')],null))[_0x3e04('0x1f')](respondWithResult(_0x2e14af,null))[_0x3e04('0x3a')](handleError(_0x2e14af,null));};exports[_0x3e04('0x20')]=function(_0x187807,_0x49fc70){return db[_0x3e04('0x25')]['find']({'where':{'id':_0x187807[_0x3e04('0x42')]['id']}})[_0x3e04('0x1f')](handleEntityNotFound(_0x49fc70,null))[_0x3e04('0x1f')](removeEntity(_0x49fc70,null))[_0x3e04('0x3a')](handleError(_0x49fc70,null));};exports[_0x3e04('0x43')]=function(_0x1df937,_0xa60287,_0x436e8d){var _0x4cf5d8={};var _0x45636e={};var _0x11a581;var _0x37be2f;return db[_0x3e04('0x25')][_0x3e04('0x44')]({'where':{'id':_0x1df937[_0x3e04('0x42')]['id']}})[_0x3e04('0x1f')](handleEntityNotFound(_0xa60287,null))[_0x3e04('0x1f')](function(_0x1d37e9){if(_0x1d37e9){_0x11a581=_0x1d37e9;_0x45636e[_0x3e04('0x28')]=_[_0x3e04('0x2a')](db[_0x3e04('0x45')][_0x3e04('0x26')]);_0x45636e['query']=_['keys'](_0x1df937['query']);_0x45636e[_0x3e04('0x2b')]=_[_0x3e04('0x2d')](_0x45636e[_0x3e04('0x28')],_0x45636e[_0x3e04('0x29')]);_0x4cf5d8[_0x3e04('0x2c')]=_['intersection'](_0x45636e[_0x3e04('0x28')],qs[_0x3e04('0x2e')](_0x1df937[_0x3e04('0x29')]['fields']));_0x4cf5d8[_0x3e04('0x2c')]=_0x4cf5d8[_0x3e04('0x2c')][_0x3e04('0x2f')]?_0x4cf5d8[_0x3e04('0x2c')]:_0x45636e[_0x3e04('0x28')];_0x4cf5d8[_0x3e04('0x30')]=qs[_0x3e04('0x31')](_0x1df937[_0x3e04('0x29')][_0x3e04('0x31')]);_0x4cf5d8[_0x3e04('0x32')]=qs[_0x3e04('0x2b')](_['pick'](_0x1df937[_0x3e04('0x29')],_0x45636e[_0x3e04('0x2b')]));if(_0x1df937[_0x3e04('0x29')][_0x3e04('0x34')]){_0x4cf5d8[_0x3e04('0x32')]=_[_0x3e04('0x3c')](_0x4cf5d8[_0x3e04('0x32')],{'$or':_[_0x3e04('0x35')](_0x4cf5d8[_0x3e04('0x2c')],function(_0x4e9653){var _0x33414a={};_0x33414a[_0x4e9653]={'$like':'%'+_0x1df937[_0x3e04('0x29')][_0x3e04('0x34')]+'%'};return _0x33414a;})});}_0x4cf5d8=_[_0x3e04('0x3c')]({},_0x4cf5d8,_0x1df937['options']);return _0x11a581['getSubjects'](_0x4cf5d8);}})[_0x3e04('0x1f')](function(_0x3d7b5e){if(_0x3d7b5e){_0x37be2f=_0x3d7b5e['length'];if(!_0x1df937[_0x3e04('0x29')]['hasOwnProperty'](_0x3e04('0x46'))){_0x4cf5d8[_0x3e04('0x18')]=qs['limit'](_0x1df937[_0x3e04('0x29')][_0x3e04('0x18')]);_0x4cf5d8[_0x3e04('0x1a')]=qs[_0x3e04('0x1a')](_0x1df937[_0x3e04('0x29')][_0x3e04('0x1a')]);}return _0x11a581[_0x3e04('0x43')](_0x4cf5d8);}})[_0x3e04('0x1f')](function(_0xb2ae11){if(_0xb2ae11){return _0xb2ae11?{'count':_0x37be2f,'rows':_0xb2ae11}:null;}})[_0x3e04('0x1f')](respondWithResult(_0xa60287,null))['catch'](handleError(_0xa60287,null));};exports['getDescriptions']=function(_0x13e59d,_0x428596,_0x42fd81){var _0x1806fa={};var _0x3b4a61={};var _0x41e7d1;var _0x166f5e;return db[_0x3e04('0x25')][_0x3e04('0x44')]({'where':{'id':_0x13e59d['params']['id']}})[_0x3e04('0x1f')](handleEntityNotFound(_0x428596,null))[_0x3e04('0x1f')](function(_0x433d7c){if(_0x433d7c){_0x41e7d1=_0x433d7c;_0x3b4a61[_0x3e04('0x28')]=_[_0x3e04('0x2a')](db[_0x3e04('0x45')][_0x3e04('0x26')]);_0x3b4a61['query']=_[_0x3e04('0x2a')](_0x13e59d[_0x3e04('0x29')]);_0x3b4a61['filters']=_['intersection'](_0x3b4a61[_0x3e04('0x28')],_0x3b4a61[_0x3e04('0x29')]);_0x1806fa[_0x3e04('0x2c')]=_[_0x3e04('0x2d')](_0x3b4a61[_0x3e04('0x28')],qs['fields'](_0x13e59d[_0x3e04('0x29')][_0x3e04('0x2e')]));_0x1806fa[_0x3e04('0x2c')]=_0x1806fa[_0x3e04('0x2c')][_0x3e04('0x2f')]?_0x1806fa['attributes']:_0x3b4a61[_0x3e04('0x28')];_0x1806fa['order']=qs[_0x3e04('0x31')](_0x13e59d[_0x3e04('0x29')][_0x3e04('0x31')]);_0x1806fa[_0x3e04('0x32')]=qs['filters'](_[_0x3e04('0x33')](_0x13e59d[_0x3e04('0x29')],_0x3b4a61[_0x3e04('0x2b')]));if(_0x13e59d[_0x3e04('0x29')]['filter']){_0x1806fa[_0x3e04('0x32')]=_[_0x3e04('0x3c')](_0x1806fa[_0x3e04('0x32')],{'$or':_[_0x3e04('0x35')](_0x1806fa[_0x3e04('0x2c')],function(_0x3051e6){var _0x5710e7={};_0x5710e7[_0x3051e6]={'$like':'%'+_0x13e59d[_0x3e04('0x29')][_0x3e04('0x34')]+'%'};return _0x5710e7;})});}_0x1806fa=_[_0x3e04('0x3c')]({},_0x1806fa,_0x13e59d['options']);return _0x41e7d1[_0x3e04('0x47')](_0x1806fa);}})[_0x3e04('0x1f')](function(_0x41e229){if(_0x41e229){_0x166f5e=_0x41e229[_0x3e04('0x2f')];if(!_0x13e59d[_0x3e04('0x29')][_0x3e04('0x48')](_0x3e04('0x46'))){_0x1806fa['limit']=qs['limit'](_0x13e59d['query'][_0x3e04('0x18')]);_0x1806fa[_0x3e04('0x1a')]=qs[_0x3e04('0x1a')](_0x13e59d[_0x3e04('0x29')][_0x3e04('0x1a')]);}return _0x41e7d1[_0x3e04('0x47')](_0x1806fa);}})[_0x3e04('0x1f')](function(_0x25ee1d){if(_0x25ee1d){return _0x25ee1d?{'count':_0x166f5e,'rows':_0x25ee1d}:null;}})['then'](respondWithResult(_0x428596,null))[_0x3e04('0x3a')](handleError(_0x428596,null));};exports[_0x3e04('0x49')]=function(_0x1976c3,_0x7ab46c,_0x42a363){var _0x21738b={};var _0x2180b5={};var _0x127574;var _0x1459bb;return db['FreshsalesConfiguration'][_0x3e04('0x44')]({'where':{'id':_0x1976c3[_0x3e04('0x42')]['id']}})[_0x3e04('0x1f')](handleEntityNotFound(_0x7ab46c,null))[_0x3e04('0x1f')](function(_0x1657df){if(_0x1657df){_0x127574=_0x1657df;_0x2180b5[_0x3e04('0x28')]=_['keys'](db[_0x3e04('0x45')][_0x3e04('0x26')]);_0x2180b5[_0x3e04('0x29')]=_[_0x3e04('0x2a')](_0x1976c3[_0x3e04('0x29')]);_0x2180b5[_0x3e04('0x2b')]=_[_0x3e04('0x2d')](_0x2180b5[_0x3e04('0x28')],_0x2180b5[_0x3e04('0x29')]);_0x21738b[_0x3e04('0x2c')]=_['intersection'](_0x2180b5[_0x3e04('0x28')],qs[_0x3e04('0x2e')](_0x1976c3[_0x3e04('0x29')]['fields']));_0x21738b[_0x3e04('0x2c')]=_0x21738b[_0x3e04('0x2c')][_0x3e04('0x2f')]?_0x21738b['attributes']:_0x2180b5[_0x3e04('0x28')];_0x21738b[_0x3e04('0x30')]=qs[_0x3e04('0x31')](_0x1976c3[_0x3e04('0x29')]['sort']);_0x21738b[_0x3e04('0x32')]=qs[_0x3e04('0x2b')](_[_0x3e04('0x33')](_0x1976c3[_0x3e04('0x29')],_0x2180b5[_0x3e04('0x2b')]));if(_0x1976c3['query']['filter']){_0x21738b[_0x3e04('0x32')]=_['merge'](_0x21738b[_0x3e04('0x32')],{'$or':_['map'](_0x21738b[_0x3e04('0x2c')],function(_0x35f62f){var _0x8603={};_0x8603[_0x35f62f]={'$like':'%'+_0x1976c3[_0x3e04('0x29')][_0x3e04('0x34')]+'%'};return _0x8603;})});}_0x21738b=_[_0x3e04('0x3c')]({},_0x21738b,_0x1976c3[_0x3e04('0x3d')]);return _0x127574[_0x3e04('0x49')](_0x21738b);}})[_0x3e04('0x1f')](function(_0x1b0ce5){if(_0x1b0ce5){_0x1459bb=_0x1b0ce5[_0x3e04('0x2f')];if(!_0x1976c3[_0x3e04('0x29')][_0x3e04('0x48')]('nolimit')){_0x21738b[_0x3e04('0x18')]=qs[_0x3e04('0x18')](_0x1976c3['query'][_0x3e04('0x18')]);_0x21738b['offset']=qs[_0x3e04('0x1a')](_0x1976c3[_0x3e04('0x29')][_0x3e04('0x1a')]);}return _0x127574[_0x3e04('0x49')](_0x21738b);}})['then'](function(_0x164f92){if(_0x164f92){return _0x164f92?{'count':_0x1459bb,'rows':_0x164f92}:null;}})[_0x3e04('0x1f')](respondWithResult(_0x7ab46c,null))[_0x3e04('0x3a')](handleError(_0x7ab46c,null));};
\ No newline at end of file
index be58261..27a7f6c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3593=['bluebird','request-promise','path','rimraf','../../config/environment','./intFreshsalesConfiguration.attributes','FreshsalesConfiguration','int_freshsales_configurations','lodash','util','../../config/logger','api'];(function(_0x399e3b,_0x5dd3d2){var _0x28c6a4=function(_0x7d77c1){while(--_0x7d77c1){_0x399e3b['push'](_0x399e3b['shift']());}};_0x28c6a4(++_0x5dd3d2);}(_0x3593,0x8c));var _0x3359=function(_0x585f6c,_0x537b7a){_0x585f6c=_0x585f6c-0x0;var _0x598331=_0x3593[_0x585f6c];return _0x598331;};'use strict';var _=require(_0x3359('0x0'));var util=require(_0x3359('0x1'));var logger=require(_0x3359('0x2'))(_0x3359('0x3'));var moment=require('moment');var BPromise=require(_0x3359('0x4'));var rp=require(_0x3359('0x5'));var fs=require('fs');var path=require(_0x3359('0x6'));var rimraf=require(_0x3359('0x7'));var config=require(_0x3359('0x8'));var attributes=require(_0x3359('0x9'));module['exports']=function(_0x286c04,_0x39c4ec){return _0x286c04['define'](_0x3359('0xa'),attributes,{'tableName':_0x3359('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe558=['FreshsalesConfiguration','int_freshsales_configurations','util','api','moment','bluebird','request-promise','path','../../config/environment','./intFreshsalesConfiguration.attributes','exports','define'];(function(_0x382169,_0xfe2c6b){var _0x501ed2=function(_0x237e43){while(--_0x237e43){_0x382169['push'](_0x382169['shift']());}};_0x501ed2(++_0xfe2c6b);}(_0xe558,0xda));var _0x8e55=function(_0x2a9228,_0x174b26){_0x2a9228=_0x2a9228-0x0;var _0xc7acde=_0xe558[_0x2a9228];return _0xc7acde;};'use strict';var _=require('lodash');var util=require(_0x8e55('0x0'));var logger=require('../../config/logger')(_0x8e55('0x1'));var moment=require(_0x8e55('0x2'));var BPromise=require(_0x8e55('0x3'));var rp=require(_0x8e55('0x4'));var fs=require('fs');var path=require(_0x8e55('0x5'));var rimraf=require('rimraf');var config=require(_0x8e55('0x6'));var attributes=require(_0x8e55('0x7'));module[_0x8e55('0x8')]=function(_0x94f0b1,_0x43a3fb){return _0x94f0b1[_0x8e55('0x9')](_0x8e55('0xa'),attributes,{'tableName':_0x8e55('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d67760a..81798d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x91a6=['code','message','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/environment','client','http','request','then','info','FreshsalesConfiguration,\x20%s,\x20%s','request\x20sent','FreshsalesConfiguration,\x20%s,\x20%s,\x20%s','error'];(function(_0xa4c22b,_0xcc6a14){var _0x3adac5=function(_0x1a57e5){while(--_0x1a57e5){_0xa4c22b['push'](_0xa4c22b['shift']());}};_0x3adac5(++_0xcc6a14);}(_0x91a6,0x67));var _0x691a=function(_0x4d4345,_0x32a68a){_0x4d4345=_0x4d4345-0x0;var _0x23d12e=_0x91a6[_0x4d4345];return _0x23d12e;};'use strict';var _=require(_0x691a('0x0'));var util=require(_0x691a('0x1'));var moment=require(_0x691a('0x2'));var BPromise=require(_0x691a('0x3'));var rs=require(_0x691a('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x691a('0x5'))['db'];var utils=require(_0x691a('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x691a('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x691a('0x8')][_0x691a('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1be3c7,_0x499408,_0xc098eb){return new BPromise(function(_0x580e52,_0x3f839f){return client[_0x691a('0xa')](_0x1be3c7,_0xc098eb)[_0x691a('0xb')](function(_0x4c6b7f){logger[_0x691a('0xc')](_0x691a('0xd'),_0x499408,_0x691a('0xe'));logger['debug'](_0x691a('0xf'),_0x499408,'request\x20sent',JSON['stringify'](_0x4c6b7f));if(_0x4c6b7f[_0x691a('0x10')]){if(_0x4c6b7f[_0x691a('0x10')][_0x691a('0x11')]===0x1f4){logger[_0x691a('0x10')]('FreshsalesConfiguration,\x20%s,\x20%s',_0x499408,_0x4c6b7f[_0x691a('0x10')][_0x691a('0x12')]);return _0x3f839f(_0x4c6b7f[_0x691a('0x10')]['message']);}logger[_0x691a('0x10')]('FreshsalesConfiguration,\x20%s,\x20%s',_0x499408,_0x4c6b7f[_0x691a('0x10')]['message']);return _0x580e52(_0x4c6b7f['error'][_0x691a('0x12')]);}else{logger[_0x691a('0xc')](_0x691a('0xd'),_0x499408,_0x691a('0xe'));_0x580e52(_0x4c6b7f['result'][_0x691a('0x12')]);}})[_0x691a('0x13')](function(_0x4f56ba){logger[_0x691a('0x10')](_0x691a('0xd'),_0x499408,_0x4f56ba);_0x3f839f(_0x4f56ba);});});}
\ No newline at end of file
+var _0x7cba=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','info','FreshsalesConfiguration,\x20%s,\x20%s','debug','FreshsalesConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash'];(function(_0x5799c3,_0xc1b797){var _0x358a9d=function(_0x466bfb){while(--_0x466bfb){_0x5799c3['push'](_0x5799c3['shift']());}};_0x358a9d(++_0xc1b797);}(_0x7cba,0xf1));var _0xa7cb=function(_0x344bfa,_0x5bfa9a){_0x344bfa=_0x344bfa-0x0;var _0x486048=_0x7cba[_0x344bfa];return _0x486048;};'use strict';var _=require(_0xa7cb('0x0'));var util=require('util');var moment=require(_0xa7cb('0x1'));var BPromise=require(_0xa7cb('0x2'));var rs=require(_0xa7cb('0x3'));var fs=require('fs');var Redis=require(_0xa7cb('0x4'));var db=require(_0xa7cb('0x5'))['db'];var utils=require(_0xa7cb('0x6'));var logger=require(_0xa7cb('0x7'))(_0xa7cb('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xa7cb('0x9')][_0xa7cb('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xfabf6e,_0x47287d,_0x24c9ea){return new BPromise(function(_0x4f960d,_0x22e3e5){return client['request'](_0xfabf6e,_0x24c9ea)['then'](function(_0x12b590){logger[_0xa7cb('0xb')](_0xa7cb('0xc'),_0x47287d,'request\x20sent');logger[_0xa7cb('0xd')](_0xa7cb('0xe'),_0x47287d,_0xa7cb('0xf'),JSON[_0xa7cb('0x10')](_0x12b590));if(_0x12b590[_0xa7cb('0x11')]){if(_0x12b590[_0xa7cb('0x11')][_0xa7cb('0x12')]===0x1f4){logger[_0xa7cb('0x11')](_0xa7cb('0xc'),_0x47287d,_0x12b590[_0xa7cb('0x11')][_0xa7cb('0x13')]);return _0x22e3e5(_0x12b590[_0xa7cb('0x11')][_0xa7cb('0x13')]);}logger[_0xa7cb('0x11')]('FreshsalesConfiguration,\x20%s,\x20%s',_0x47287d,_0x12b590[_0xa7cb('0x11')]['message']);return _0x4f960d(_0x12b590[_0xa7cb('0x11')][_0xa7cb('0x13')]);}else{logger[_0xa7cb('0xb')](_0xa7cb('0xc'),_0x47287d,_0xa7cb('0xf'));_0x4f960d(_0x12b590[_0xa7cb('0x14')][_0xa7cb('0x13')]);}})[_0xa7cb('0x15')](function(_0x1d2782){logger[_0xa7cb('0x11')]('FreshsalesConfiguration,\x20%s,\x20%s',_0x47287d,_0x1d2782);_0x22e3e5(_0x1d2782);});});}
\ No newline at end of file
index 52302af..e50fdd1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3164=['post','create','put','update','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/:id','show'];(function(_0x339765,_0x111d76){var _0x5e6ba8=function(_0xc6e8a){while(--_0xc6e8a){_0x339765['push'](_0x339765['shift']());}};_0x5e6ba8(++_0x111d76);}(_0x3164,0x182));var _0x4316=function(_0x5dfc2a,_0x1a953f){_0x5dfc2a=_0x5dfc2a-0x0;var _0x3f1a71=_0x3164[_0x5dfc2a];return _0x3f1a71;};'use strict';var multer=require(_0x4316('0x0'));var util=require(_0x4316('0x1'));var path=require(_0x4316('0x2'));var timeout=require(_0x4316('0x3'));var express=require(_0x4316('0x4'));var router=express['Router']();var fs_extra=require(_0x4316('0x5'));var auth=require(_0x4316('0x6'));var interaction=require(_0x4316('0x7'));var config=require('../../config/environment');var controller=require('./intFreshsalesField.controller');router[_0x4316('0x8')]('/',auth[_0x4316('0x9')](),controller[_0x4316('0xa')]);router[_0x4316('0x8')](_0x4316('0xb'),auth[_0x4316('0x9')](),controller[_0x4316('0xc')]);router[_0x4316('0xd')]('/',auth[_0x4316('0x9')](),controller[_0x4316('0xe')]);router[_0x4316('0xf')](_0x4316('0xb'),auth[_0x4316('0x9')](),controller[_0x4316('0x10')]);router['delete'](_0x4316('0xb'),auth[_0x4316('0x9')](),controller[_0x4316('0x11')]);module[_0x4316('0x12')]=router;
\ No newline at end of file
+var _0x2029=['isAuthenticated','index','show','create','/:id','update','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshsalesField.controller','get'];(function(_0x43f910,_0x1dc742){var _0x398173=function(_0x164550){while(--_0x164550){_0x43f910['push'](_0x43f910['shift']());}};_0x398173(++_0x1dc742);}(_0x2029,0x171));var _0x9202=function(_0x2947c2,_0x351f7a){_0x2947c2=_0x2947c2-0x0;var _0x56003f=_0x2029[_0x2947c2];return _0x56003f;};'use strict';var multer=require(_0x9202('0x0'));var util=require(_0x9202('0x1'));var path=require('path');var timeout=require(_0x9202('0x2'));var express=require(_0x9202('0x3'));var router=express[_0x9202('0x4')]();var fs_extra=require(_0x9202('0x5'));var auth=require(_0x9202('0x6'));var interaction=require(_0x9202('0x7'));var config=require(_0x9202('0x8'));var controller=require(_0x9202('0x9'));router[_0x9202('0xa')]('/',auth[_0x9202('0xb')](),controller[_0x9202('0xc')]);router[_0x9202('0xa')]('/:id',auth['isAuthenticated'](),controller[_0x9202('0xd')]);router['post']('/',auth[_0x9202('0xb')](),controller[_0x9202('0xe')]);router['put'](_0x9202('0xf'),auth[_0x9202('0xb')](),controller[_0x9202('0x10')]);router[_0x9202('0x11')](_0x9202('0xf'),auth[_0x9202('0xb')](),controller[_0x9202('0x12')]);module[_0x9202('0x13')]=router;
\ No newline at end of file
index fc46e5f..31a1dae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb82b=['exports','string','variable','picklist','STRING','ENUM'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xb82b,0x1ce));var _0xbb82=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0xb82b[_0x1facfa];return _0x9ec701;};'use strict';var Sequelize=require('sequelize');module[_0xbb82('0x0')]={'type':{'type':Sequelize['ENUM'](_0xbb82('0x1'),_0xbb82('0x2'),'customVariable','keyValue',_0xbb82('0x3')),'defaultValue':_0xbb82('0x1')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0xbb82('0x4')]},'keyType':{'type':Sequelize[_0xbb82('0x5')](_0xbb82('0x1'),'variable','customVariable')},'keyContent':{'type':Sequelize[_0xbb82('0x4')]},'idField':{'type':Sequelize[_0xbb82('0x4')]},'nameField':{'type':Sequelize[_0xbb82('0x4')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xbb82('0x4')]}};
\ No newline at end of file
+var _0xdba7=['exports','ENUM','string','variable','customVariable','picklist','STRING','BOOLEAN','sequelize'];(function(_0x23657d,_0x4f88a4){var _0xd6370a=function(_0x5efceb){while(--_0x5efceb){_0x23657d['push'](_0x23657d['shift']());}};_0xd6370a(++_0x4f88a4);}(_0xdba7,0xbc));var _0x7dba=function(_0x40fbb1,_0x32dc52){_0x40fbb1=_0x40fbb1-0x0;var _0x1f5c3c=_0xdba7[_0x40fbb1];return _0x1f5c3c;};'use strict';var Sequelize=require(_0x7dba('0x0'));module[_0x7dba('0x1')]={'type':{'type':Sequelize[_0x7dba('0x2')](_0x7dba('0x3'),_0x7dba('0x4'),_0x7dba('0x5'),'keyValue',_0x7dba('0x6')),'defaultValue':_0x7dba('0x3')},'content':{'type':Sequelize[_0x7dba('0x7')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x7dba('0x2')](_0x7dba('0x3'),'variable',_0x7dba('0x5'))},'keyContent':{'type':Sequelize[_0x7dba('0x7')]},'idField':{'type':Sequelize[_0x7dba('0x7')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x7dba('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x7dba('0x7')]}};
\ No newline at end of file
index 8f23bda..a9ffcf1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xceff=['lodash','crypto','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../mysqldb','status','end','json','offset','undefined','limit','count','set','update','then','destroy','sendStatus','error','stack','name','send','index','FreshsalesField','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','nolimit','sort','filter','merge','where','VIRTUAL','options','includeAll','rows','catch','show','params','find','create','body','eml-format','zip-dir','fast-json-patch','mustache','path','sox','to-csv'];(function(_0x4b55a9,_0x321895){var _0x9791cd=function(_0x57a008){while(--_0x57a008){_0x4b55a9['push'](_0x4b55a9['shift']());}};_0x9791cd(++_0x321895);}(_0xceff,0xb0));var _0xfcef=function(_0x1b2ff7,_0x12a034){_0x1b2ff7=_0x1b2ff7-0x0;var _0x31656a=_0xceff[_0x1b2ff7];return _0x31656a;};'use strict';var emlformat=require(_0xfcef('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xfcef('0x1'));var jsonpatch=require(_0xfcef('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xfcef('0x3'));var util=require('util');var path=require(_0xfcef('0x4'));var sox=require(_0xfcef('0x5'));var csv=require(_0xfcef('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xfcef('0x7'));var squel=require('squel');var crypto=require(_0xfcef('0x8'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xfcef('0x6'));var querystring=require('querystring');var Papa=require(_0xfcef('0x9'));var Redis=require(_0xfcef('0xa'));var authService=require(_0xfcef('0xb'));var qs=require('../../components/parsers/qs');var as=require(_0xfcef('0xc'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xfcef('0xd'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xfcef('0xe'))['db'];function respondWithStatusCode(_0xed71ab,_0x186582){_0x186582=_0x186582||0xcc;return function(_0x69f04e){if(_0x69f04e){return _0xed71ab['sendStatus'](_0x186582);}return _0xed71ab[_0xfcef('0xf')](_0x186582)[_0xfcef('0x10')]();};}function respondWithResult(_0x29f284,_0xf59f8f){_0xf59f8f=_0xf59f8f||0xc8;return function(_0x55c3c1){if(_0x55c3c1){return _0x29f284[_0xfcef('0xf')](_0xf59f8f)[_0xfcef('0x11')](_0x55c3c1);}};}function respondWithFilteredResult(_0x271ed1,_0x293ec2){return function(_0x4130ba){if(_0x4130ba){var _0x21e583=typeof _0x293ec2[_0xfcef('0x12')]===_0xfcef('0x13')&&typeof _0x293ec2[_0xfcef('0x14')]===_0xfcef('0x13');var _0x58f0cc=_0x4130ba[_0xfcef('0x15')];var _0x3f328c=_0x21e583?0x0:_0x293ec2['offset'];var _0x1dc1f4=_0x21e583?_0x4130ba[_0xfcef('0x15')]:_0x293ec2[_0xfcef('0x12')]+_0x293ec2[_0xfcef('0x14')];var _0x574ea7;if(_0x1dc1f4>=_0x58f0cc){_0x1dc1f4=_0x58f0cc;_0x574ea7=0xc8;}else{_0x574ea7=0xce;}_0x271ed1[_0xfcef('0xf')](_0x574ea7);return _0x271ed1[_0xfcef('0x16')]('Content-Range',_0x3f328c+'-'+_0x1dc1f4+'/'+_0x58f0cc)['json'](_0x4130ba);}return null;};}function patchUpdates(_0x5d6cfe){return function(_0x373a41){try{jsonpatch['apply'](_0x373a41,_0x5d6cfe,!![]);}catch(_0x4e59c5){return BPromise['reject'](_0x4e59c5);}return _0x373a41['save']();};}function saveUpdates(_0x119537,_0x36ae6b){return function(_0x1ddc20){if(_0x1ddc20){return _0x1ddc20[_0xfcef('0x17')](_0x119537)[_0xfcef('0x18')](function(_0x5770a2){return _0x5770a2;});}return null;};}function removeEntity(_0x2157fd,_0x31a545){return function(_0x3c6546){if(_0x3c6546){return _0x3c6546[_0xfcef('0x19')]()[_0xfcef('0x18')](function(){_0x2157fd[_0xfcef('0xf')](0xcc)[_0xfcef('0x10')]();});}};}function handleEntityNotFound(_0x368f74,_0xf3fa5d){return function(_0x48e26c){if(!_0x48e26c){_0x368f74[_0xfcef('0x1a')](0x194);}return _0x48e26c;};}function handleError(_0x33882b,_0xecc03a){_0xecc03a=_0xecc03a||0x1f4;return function(_0x5c9f0){logger[_0xfcef('0x1b')](_0x5c9f0[_0xfcef('0x1c')]);if(_0x5c9f0[_0xfcef('0x1d')]){delete _0x5c9f0['name'];}_0x33882b[_0xfcef('0xf')](_0xecc03a)[_0xfcef('0x1e')](_0x5c9f0);};}exports[_0xfcef('0x1f')]=function(_0x4cab,_0x53157a){var _0x53b7a9={},_0x1b453d={},_0x1d0840={'count':0x0,'rows':[]};var _0x154e07=_['map'](db[_0xfcef('0x20')][_0xfcef('0x21')],function(_0x8f65b2){return{'name':_0x8f65b2[_0xfcef('0x22')],'type':_0x8f65b2[_0xfcef('0x23')][_0xfcef('0x24')]};});_0x1b453d[_0xfcef('0x25')]=_[_0xfcef('0x26')](_0x154e07,'name');_0x1b453d[_0xfcef('0x27')]=_[_0xfcef('0x28')](_0x4cab[_0xfcef('0x27')]);_0x1b453d[_0xfcef('0x29')]=_[_0xfcef('0x2a')](_0x1b453d['model'],_0x1b453d['query']);_0x53b7a9[_0xfcef('0x2b')]=_[_0xfcef('0x2a')](_0x1b453d[_0xfcef('0x25')],qs['fields'](_0x4cab[_0xfcef('0x27')][_0xfcef('0x2c')]));_0x53b7a9['attributes']=_0x53b7a9[_0xfcef('0x2b')][_0xfcef('0x2d')]?_0x53b7a9[_0xfcef('0x2b')]:_0x1b453d[_0xfcef('0x25')];if(!_0x4cab['query']['hasOwnProperty'](_0xfcef('0x2e'))){_0x53b7a9[_0xfcef('0x14')]=qs[_0xfcef('0x14')](_0x4cab[_0xfcef('0x27')][_0xfcef('0x14')]);_0x53b7a9[_0xfcef('0x12')]=qs['offset'](_0x4cab['query']['offset']);}_0x53b7a9['order']=qs[_0xfcef('0x2f')](_0x4cab[_0xfcef('0x27')][_0xfcef('0x2f')]);_0x53b7a9['where']=qs['filters'](_['pick'](_0x4cab[_0xfcef('0x27')],_0x1b453d[_0xfcef('0x29')]),_0x154e07);if(_0x4cab[_0xfcef('0x27')][_0xfcef('0x30')]){_0x53b7a9['where']=_[_0xfcef('0x31')](_0x53b7a9[_0xfcef('0x32')],{'$or':_['map'](_0x154e07,function(_0x25be72){if(_0x25be72[_0xfcef('0x23')]!==_0xfcef('0x33')){var _0x4b5423={};_0x4b5423[_0x25be72[_0xfcef('0x1d')]]={'$like':'%'+_0x4cab[_0xfcef('0x27')][_0xfcef('0x30')]+'%'};return _0x4b5423;}})});}_0x53b7a9=_[_0xfcef('0x31')]({},_0x53b7a9,_0x4cab[_0xfcef('0x34')]);var _0x19dfa4={'where':_0x53b7a9[_0xfcef('0x32')]};return db[_0xfcef('0x20')][_0xfcef('0x15')](_0x19dfa4)[_0xfcef('0x18')](function(_0x58bb41){_0x1d0840[_0xfcef('0x15')]=_0x58bb41;if(_0x4cab['query'][_0xfcef('0x35')]){_0x53b7a9['include']=[{'all':!![]}];}return db[_0xfcef('0x20')]['findAll'](_0x53b7a9);})[_0xfcef('0x18')](function(_0x14d4c9){_0x1d0840[_0xfcef('0x36')]=_0x14d4c9;return _0x1d0840;})['then'](respondWithFilteredResult(_0x53157a,_0x53b7a9))[_0xfcef('0x37')](handleError(_0x53157a,null));};exports[_0xfcef('0x38')]=function(_0x161591,_0x3f4f0b){var _0x53e249={'raw':!![],'where':{'id':_0x161591[_0xfcef('0x39')]['id']}},_0x2afad9={};_0x2afad9['model']=_[_0xfcef('0x28')](db['FreshsalesField'][_0xfcef('0x21')]);_0x2afad9[_0xfcef('0x27')]=_[_0xfcef('0x28')](_0x161591[_0xfcef('0x27')]);_0x2afad9['filters']=_[_0xfcef('0x2a')](_0x2afad9[_0xfcef('0x25')],_0x2afad9[_0xfcef('0x27')]);_0x53e249[_0xfcef('0x2b')]=_[_0xfcef('0x2a')](_0x2afad9[_0xfcef('0x25')],qs[_0xfcef('0x2c')](_0x161591[_0xfcef('0x27')][_0xfcef('0x2c')]));_0x53e249[_0xfcef('0x2b')]=_0x53e249[_0xfcef('0x2b')]['length']?_0x53e249['attributes']:_0x2afad9[_0xfcef('0x25')];if(_0x161591[_0xfcef('0x27')]['includeAll']){_0x53e249['include']=[{'all':!![]}];}_0x53e249=_[_0xfcef('0x31')]({},_0x53e249,_0x161591[_0xfcef('0x34')]);return db[_0xfcef('0x20')][_0xfcef('0x3a')](_0x53e249)['then'](handleEntityNotFound(_0x3f4f0b,null))[_0xfcef('0x18')](respondWithResult(_0x3f4f0b,null))['catch'](handleError(_0x3f4f0b,null));};exports[_0xfcef('0x3b')]=function(_0x24ff80,_0x46e9ce){return db['FreshsalesField'][_0xfcef('0x3b')](_0x24ff80[_0xfcef('0x3c')],{})[_0xfcef('0x18')](respondWithResult(_0x46e9ce,0xc9))['catch'](handleError(_0x46e9ce,null));};exports[_0xfcef('0x17')]=function(_0x55394f,_0x38422f){if(_0x55394f[_0xfcef('0x3c')]['id']){delete _0x55394f['body']['id'];}return db[_0xfcef('0x20')]['find']({'where':{'id':_0x55394f[_0xfcef('0x39')]['id']}})[_0xfcef('0x18')](handleEntityNotFound(_0x38422f,null))['then'](saveUpdates(_0x55394f[_0xfcef('0x3c')],null))[_0xfcef('0x18')](respondWithResult(_0x38422f,null))['catch'](handleError(_0x38422f,null));};exports[_0xfcef('0x19')]=function(_0x97b84d,_0x20701c){return db['FreshsalesField'][_0xfcef('0x3a')]({'where':{'id':_0x97b84d['params']['id']}})['then'](handleEntityNotFound(_0x20701c,null))[_0xfcef('0x18')](removeEntity(_0x20701c,null))[_0xfcef('0x37')](handleError(_0x20701c,null));};
\ No newline at end of file
+var _0x8731=['model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','type','merge','options','includeAll','findAll','rows','catch','params','include','find','create','body','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','error','name','send','index','map','FreshsalesField','rawAttributes','fieldName','key'];(function(_0xb749ea,_0x13e2ce){var _0x34b226=function(_0x4c6f5f){while(--_0x4c6f5f){_0xb749ea['push'](_0xb749ea['shift']());}};_0x34b226(++_0x13e2ce);}(_0x8731,0x153));var _0x1873=function(_0x12833b,_0x26c1d2){_0x12833b=_0x12833b-0x0;var _0x3acad3=_0x8731[_0x12833b];return _0x3acad3;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x1873('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x1873('0x1'));var rp=require(_0x1873('0x2'));var moment=require(_0x1873('0x3'));var BPromise=require(_0x1873('0x4'));var Mustache=require(_0x1873('0x5'));var util=require(_0x1873('0x6'));var path=require(_0x1873('0x7'));var sox=require(_0x1873('0x8'));var csv=require(_0x1873('0x9'));var ejs=require(_0x1873('0xa'));var fs=require('fs');var fs_extra=require(_0x1873('0xb'));var _=require(_0x1873('0xc'));var squel=require(_0x1873('0xd'));var crypto=require(_0x1873('0xe'));var jsforce=require(_0x1873('0xf'));var deskjs=require(_0x1873('0x10'));var toCsv=require(_0x1873('0x9'));var querystring=require(_0x1873('0x11'));var Papa=require('papaparse');var Redis=require(_0x1873('0x12'));var authService=require(_0x1873('0x13'));var qs=require(_0x1873('0x14'));var as=require(_0x1873('0x15'));var hardwareService=require(_0x1873('0x16'));var logger=require('../../config/logger')(_0x1873('0x17'));var utils=require(_0x1873('0x18'));var config=require(_0x1873('0x19'));var licenseUtil=require(_0x1873('0x1a'));var db=require(_0x1873('0x1b'))['db'];function respondWithStatusCode(_0x103ea5,_0x4ec1db){_0x4ec1db=_0x4ec1db||0xcc;return function(_0x2c3094){if(_0x2c3094){return _0x103ea5['sendStatus'](_0x4ec1db);}return _0x103ea5[_0x1873('0x1c')](_0x4ec1db)[_0x1873('0x1d')]();};}function respondWithResult(_0x11de0d,_0x29fe9e){_0x29fe9e=_0x29fe9e||0xc8;return function(_0x4f5548){if(_0x4f5548){return _0x11de0d[_0x1873('0x1c')](_0x29fe9e)[_0x1873('0x1e')](_0x4f5548);}};}function respondWithFilteredResult(_0x47fd33,_0x972ceb){return function(_0x1ad1a3){if(_0x1ad1a3){var _0x558d29=typeof _0x972ceb[_0x1873('0x1f')]===_0x1873('0x20')&&typeof _0x972ceb[_0x1873('0x21')]===_0x1873('0x20');var _0x21f744=_0x1ad1a3[_0x1873('0x22')];var _0xcc04de=_0x558d29?0x0:_0x972ceb['offset'];var _0x3f34d5=_0x558d29?_0x1ad1a3[_0x1873('0x22')]:_0x972ceb[_0x1873('0x1f')]+_0x972ceb[_0x1873('0x21')];var _0x1f07cc;if(_0x3f34d5>=_0x21f744){_0x3f34d5=_0x21f744;_0x1f07cc=0xc8;}else{_0x1f07cc=0xce;}_0x47fd33[_0x1873('0x1c')](_0x1f07cc);return _0x47fd33['set'](_0x1873('0x23'),_0xcc04de+'-'+_0x3f34d5+'/'+_0x21f744)[_0x1873('0x1e')](_0x1ad1a3);}return null;};}function patchUpdates(_0x317385){return function(_0x4b3b6c){try{jsonpatch[_0x1873('0x24')](_0x4b3b6c,_0x317385,!![]);}catch(_0x2444c7){return BPromise[_0x1873('0x25')](_0x2444c7);}return _0x4b3b6c[_0x1873('0x26')]();};}function saveUpdates(_0x4c07e2,_0xded887){return function(_0x599551){if(_0x599551){return _0x599551[_0x1873('0x27')](_0x4c07e2)[_0x1873('0x28')](function(_0x2e7d8c){return _0x2e7d8c;});}return null;};}function removeEntity(_0x4b5ac7,_0x4ef143){return function(_0x43af17){if(_0x43af17){return _0x43af17[_0x1873('0x29')]()['then'](function(){_0x4b5ac7['status'](0xcc)[_0x1873('0x1d')]();});}};}function handleEntityNotFound(_0x4c4622,_0x343938){return function(_0x572acb){if(!_0x572acb){_0x4c4622['sendStatus'](0x194);}return _0x572acb;};}function handleError(_0x2a50eb,_0x44e92b){_0x44e92b=_0x44e92b||0x1f4;return function(_0x4bc4e9){logger[_0x1873('0x2a')](_0x4bc4e9['stack']);if(_0x4bc4e9[_0x1873('0x2b')]){delete _0x4bc4e9[_0x1873('0x2b')];}_0x2a50eb[_0x1873('0x1c')](_0x44e92b)[_0x1873('0x2c')](_0x4bc4e9);};}exports[_0x1873('0x2d')]=function(_0x37942b,_0x33b9f6){var _0x2c1830={},_0x34b2bd={},_0x570161={'count':0x0,'rows':[]};var _0x28da77=_[_0x1873('0x2e')](db[_0x1873('0x2f')][_0x1873('0x30')],function(_0x29351f){return{'name':_0x29351f[_0x1873('0x31')],'type':_0x29351f['type'][_0x1873('0x32')]};});_0x34b2bd[_0x1873('0x33')]=_['map'](_0x28da77,_0x1873('0x2b'));_0x34b2bd[_0x1873('0x34')]=_[_0x1873('0x35')](_0x37942b[_0x1873('0x34')]);_0x34b2bd[_0x1873('0x36')]=_[_0x1873('0x37')](_0x34b2bd['model'],_0x34b2bd['query']);_0x2c1830[_0x1873('0x38')]=_['intersection'](_0x34b2bd[_0x1873('0x33')],qs[_0x1873('0x39')](_0x37942b[_0x1873('0x34')][_0x1873('0x39')]));_0x2c1830[_0x1873('0x38')]=_0x2c1830[_0x1873('0x38')][_0x1873('0x3a')]?_0x2c1830[_0x1873('0x38')]:_0x34b2bd[_0x1873('0x33')];if(!_0x37942b[_0x1873('0x34')][_0x1873('0x3b')](_0x1873('0x3c'))){_0x2c1830[_0x1873('0x21')]=qs[_0x1873('0x21')](_0x37942b[_0x1873('0x34')][_0x1873('0x21')]);_0x2c1830[_0x1873('0x1f')]=qs[_0x1873('0x1f')](_0x37942b[_0x1873('0x34')]['offset']);}_0x2c1830[_0x1873('0x3d')]=qs[_0x1873('0x3e')](_0x37942b['query'][_0x1873('0x3e')]);_0x2c1830[_0x1873('0x3f')]=qs['filters'](_[_0x1873('0x40')](_0x37942b[_0x1873('0x34')],_0x34b2bd['filters']),_0x28da77);if(_0x37942b[_0x1873('0x34')][_0x1873('0x41')]){_0x2c1830[_0x1873('0x3f')]=_['merge'](_0x2c1830['where'],{'$or':_['map'](_0x28da77,function(_0x1dbfec){if(_0x1dbfec[_0x1873('0x42')]!=='VIRTUAL'){var _0x4a4844={};_0x4a4844[_0x1dbfec[_0x1873('0x2b')]]={'$like':'%'+_0x37942b[_0x1873('0x34')][_0x1873('0x41')]+'%'};return _0x4a4844;}})});}_0x2c1830=_[_0x1873('0x43')]({},_0x2c1830,_0x37942b[_0x1873('0x44')]);var _0x55cf25={'where':_0x2c1830[_0x1873('0x3f')]};return db[_0x1873('0x2f')][_0x1873('0x22')](_0x55cf25)[_0x1873('0x28')](function(_0x29176d){_0x570161[_0x1873('0x22')]=_0x29176d;if(_0x37942b[_0x1873('0x34')][_0x1873('0x45')]){_0x2c1830['include']=[{'all':!![]}];}return db[_0x1873('0x2f')][_0x1873('0x46')](_0x2c1830);})[_0x1873('0x28')](function(_0x4c661c){_0x570161[_0x1873('0x47')]=_0x4c661c;return _0x570161;})['then'](respondWithFilteredResult(_0x33b9f6,_0x2c1830))[_0x1873('0x48')](handleError(_0x33b9f6,null));};exports['show']=function(_0x2587bc,_0x2b0434){var _0x427ba0={'raw':!![],'where':{'id':_0x2587bc[_0x1873('0x49')]['id']}},_0x459c82={};_0x459c82[_0x1873('0x33')]=_[_0x1873('0x35')](db[_0x1873('0x2f')]['rawAttributes']);_0x459c82[_0x1873('0x34')]=_[_0x1873('0x35')](_0x2587bc['query']);_0x459c82['filters']=_[_0x1873('0x37')](_0x459c82[_0x1873('0x33')],_0x459c82[_0x1873('0x34')]);_0x427ba0['attributes']=_['intersection'](_0x459c82['model'],qs[_0x1873('0x39')](_0x2587bc[_0x1873('0x34')][_0x1873('0x39')]));_0x427ba0[_0x1873('0x38')]=_0x427ba0[_0x1873('0x38')]['length']?_0x427ba0['attributes']:_0x459c82[_0x1873('0x33')];if(_0x2587bc[_0x1873('0x34')][_0x1873('0x45')]){_0x427ba0[_0x1873('0x4a')]=[{'all':!![]}];}_0x427ba0=_[_0x1873('0x43')]({},_0x427ba0,_0x2587bc['options']);return db[_0x1873('0x2f')][_0x1873('0x4b')](_0x427ba0)['then'](handleEntityNotFound(_0x2b0434,null))['then'](respondWithResult(_0x2b0434,null))[_0x1873('0x48')](handleError(_0x2b0434,null));};exports['create']=function(_0x4c0a2c,_0x4adc38){return db[_0x1873('0x2f')][_0x1873('0x4c')](_0x4c0a2c[_0x1873('0x4d')],{})[_0x1873('0x28')](respondWithResult(_0x4adc38,0xc9))[_0x1873('0x48')](handleError(_0x4adc38,null));};exports[_0x1873('0x27')]=function(_0xef86e7,_0x5c825c){if(_0xef86e7[_0x1873('0x4d')]['id']){delete _0xef86e7[_0x1873('0x4d')]['id'];}return db[_0x1873('0x2f')]['find']({'where':{'id':_0xef86e7[_0x1873('0x49')]['id']}})[_0x1873('0x28')](handleEntityNotFound(_0x5c825c,null))[_0x1873('0x28')](saveUpdates(_0xef86e7['body'],null))['then'](respondWithResult(_0x5c825c,null))['catch'](handleError(_0x5c825c,null));};exports[_0x1873('0x29')]=function(_0x563094,_0x1b8e91){return db[_0x1873('0x2f')][_0x1873('0x4b')]({'where':{'id':_0x563094[_0x1873('0x49')]['id']}})[_0x1873('0x28')](handleEntityNotFound(_0x1b8e91,null))[_0x1873('0x28')](removeEntity(_0x1b8e91,null))[_0x1873('0x48')](handleError(_0x1b8e91,null));};
\ No newline at end of file
index 8cd958a..abf1887 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x93e9=['request-promise','../../config/environment','./intFreshsalesField.attributes','exports','define','FreshsalesField','int_freshsales_fields','idField','FieldId','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x46a742,_0x3d237e){var _0x4436e7=function(_0x2a12e6){while(--_0x2a12e6){_0x46a742['push'](_0x46a742['shift']());}};_0x4436e7(++_0x3d237e);}(_0x93e9,0xcc));var _0x993e=function(_0x3c5482,_0x8f4ac1){_0x3c5482=_0x3c5482-0x0;var _0x465531=_0x93e9[_0x3c5482];return _0x465531;};'use strict';var _=require(_0x993e('0x0'));var util=require(_0x993e('0x1'));var logger=require(_0x993e('0x2'))(_0x993e('0x3'));var moment=require(_0x993e('0x4'));var BPromise=require(_0x993e('0x5'));var rp=require(_0x993e('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x993e('0x7'));var attributes=require(_0x993e('0x8'));module[_0x993e('0x9')]=function(_0x45f52e,_0x1da414){return _0x45f52e[_0x993e('0xa')](_0x993e('0xb'),attributes,{'tableName':_0x993e('0xc'),'paranoid':![],'indexes':[{'name':'freshsales_unique_index','fields':[_0x993e('0xd'),_0x993e('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x1b0e=['rimraf','../../config/environment','exports','FreshsalesField','int_freshsales_fields','idField','FieldId','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x3f9a64,_0x224930){var _0x353b88=function(_0x4fdb95){while(--_0x4fdb95){_0x3f9a64['push'](_0x3f9a64['shift']());}};_0x353b88(++_0x224930);}(_0x1b0e,0x132));var _0xe1b0=function(_0x551077,_0x3dd27d){_0x551077=_0x551077-0x0;var _0x2d24fa=_0x1b0e[_0x551077];return _0x2d24fa;};'use strict';var _=require(_0xe1b0('0x0'));var util=require(_0xe1b0('0x1'));var logger=require(_0xe1b0('0x2'))(_0xe1b0('0x3'));var moment=require(_0xe1b0('0x4'));var BPromise=require(_0xe1b0('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xe1b0('0x6'));var config=require(_0xe1b0('0x7'));var attributes=require('./intFreshsalesField.attributes');module[_0xe1b0('0x8')]=function(_0x2a049f,_0xfb57ae){return _0x2a049f['define'](_0xe1b0('0x9'),attributes,{'tableName':_0xe1b0('0xa'),'paranoid':![],'indexes':[{'name':'freshsales_unique_index','fields':[_0xe1b0('0xb'),_0xe1b0('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 85055cf..fd3e043 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7096=['code','message','result','catch','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','FreshsalesField,\x20%s,\x20%s','request\x20sent','debug','stringify','error'];(function(_0x2742db,_0x58e00c){var _0x18659e=function(_0x5bd3ac){while(--_0x5bd3ac){_0x2742db['push'](_0x2742db['shift']());}};_0x18659e(++_0x58e00c);}(_0x7096,0x10c));var _0x6709=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x7096[_0x6c993a];return _0x27f547;};'use strict';var _=require('lodash');var util=require(_0x6709('0x0'));var moment=require('moment');var BPromise=require(_0x6709('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6709('0x2'));var db=require(_0x6709('0x3'))['db'];var utils=require(_0x6709('0x4'));var logger=require(_0x6709('0x5'))(_0x6709('0x6'));var config=require(_0x6709('0x7'));var jayson=require(_0x6709('0x8'));var client=jayson[_0x6709('0x9')][_0x6709('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3e2223,_0x11ad23,_0x985814){return new BPromise(function(_0x30147f,_0x513ab6){return client['request'](_0x3e2223,_0x985814)[_0x6709('0xb')](function(_0x2d8c0b){logger[_0x6709('0xc')](_0x6709('0xd'),_0x11ad23,_0x6709('0xe'));logger[_0x6709('0xf')]('FreshsalesField,\x20%s,\x20%s,\x20%s',_0x11ad23,'request\x20sent',JSON[_0x6709('0x10')](_0x2d8c0b));if(_0x2d8c0b[_0x6709('0x11')]){if(_0x2d8c0b[_0x6709('0x11')][_0x6709('0x12')]===0x1f4){logger[_0x6709('0x11')](_0x6709('0xd'),_0x11ad23,_0x2d8c0b[_0x6709('0x11')][_0x6709('0x13')]);return _0x513ab6(_0x2d8c0b['error'][_0x6709('0x13')]);}logger[_0x6709('0x11')](_0x6709('0xd'),_0x11ad23,_0x2d8c0b[_0x6709('0x11')]['message']);return _0x30147f(_0x2d8c0b[_0x6709('0x11')]['message']);}else{logger[_0x6709('0xc')]('FreshsalesField,\x20%s,\x20%s',_0x11ad23,_0x6709('0xe'));_0x30147f(_0x2d8c0b[_0x6709('0x14')][_0x6709('0x13')]);}})[_0x6709('0x15')](function(_0x4cab30){logger['error']('FreshsalesField,\x20%s,\x20%s',_0x11ad23,_0x4cab30);_0x513ab6(_0x4cab30);});});}
\ No newline at end of file
+var _0xacf4=['message','result','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','then','info','FreshsalesField,\x20%s,\x20%s','request\x20sent','FreshsalesField,\x20%s,\x20%s,\x20%s','error'];(function(_0x4a3898,_0x4c9853){var _0x25ceb0=function(_0x528b6d){while(--_0x528b6d){_0x4a3898['push'](_0x4a3898['shift']());}};_0x25ceb0(++_0x4c9853);}(_0xacf4,0xe7));var _0x4acf=function(_0x25fc28,_0x7a8430){_0x25fc28=_0x25fc28-0x0;var _0xa616df=_0xacf4[_0x25fc28];return _0xa616df;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x4acf('0x0'));var BPromise=require(_0x4acf('0x1'));var rs=require(_0x4acf('0x2'));var fs=require('fs');var Redis=require(_0x4acf('0x3'));var db=require(_0x4acf('0x4'))['db'];var utils=require(_0x4acf('0x5'));var logger=require(_0x4acf('0x6'))('rpc');var config=require(_0x4acf('0x7'));var jayson=require(_0x4acf('0x8'));var client=jayson['client'][_0x4acf('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2ba08a,_0x649ad2,_0x45a5a4){return new BPromise(function(_0x25d345,_0x50f5f4){return client['request'](_0x2ba08a,_0x45a5a4)[_0x4acf('0xa')](function(_0x59f559){logger[_0x4acf('0xb')](_0x4acf('0xc'),_0x649ad2,_0x4acf('0xd'));logger['debug'](_0x4acf('0xe'),_0x649ad2,_0x4acf('0xd'),JSON['stringify'](_0x59f559));if(_0x59f559['error']){if(_0x59f559[_0x4acf('0xf')]['code']===0x1f4){logger['error'](_0x4acf('0xc'),_0x649ad2,_0x59f559[_0x4acf('0xf')][_0x4acf('0x10')]);return _0x50f5f4(_0x59f559[_0x4acf('0xf')][_0x4acf('0x10')]);}logger[_0x4acf('0xf')](_0x4acf('0xc'),_0x649ad2,_0x59f559[_0x4acf('0xf')][_0x4acf('0x10')]);return _0x25d345(_0x59f559[_0x4acf('0xf')][_0x4acf('0x10')]);}else{logger['info'](_0x4acf('0xc'),_0x649ad2,'request\x20sent');_0x25d345(_0x59f559[_0x4acf('0x11')][_0x4acf('0x10')]);}})[_0x4acf('0x12')](function(_0x5d934a){logger['error'](_0x4acf('0xc'),_0x649ad2,_0x5d934a);_0x50f5f4(_0x5d934a);});});}
\ No newline at end of file
index 50168a4..2ae1113 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(_0x98ec80,_0x937897){var _0x1cbb96=function(_0x3b628b){while(--_0x3b628b){_0x98ec80['push'](_0x98ec80['shift']());}};_0x1cbb96(++_0x937897);}(_0x9957,0x93));var _0x7995=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x9957[_0x3b380d];return _0x54502b;};'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','./intSalesforceAccount.controller','get','index','/:id','getConfigurations','/:id/fields','isAuthenticated','getFields','post','addConfiguration','put','update','destroy','exports','multer','util','path'];(function(_0x5b4a98,_0x376257){var _0x222b95=function(_0x2013e6){while(--_0x2013e6){_0x5b4a98['push'](_0x5b4a98['shift']());}};_0x222b95(++_0x376257);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2763f2,_0x416af8){_0x2763f2=_0x2763f2-0x0;var _0x3ef471=_0xa9e0[_0x2763f2];return _0x3ef471;};'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 1992cd8..5ecf2d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc36=['integrationTab','sequelize','STRING','username','ENUM'];(function(_0x5bb271,_0x35153d){var _0x5a6b7f=function(_0x23f88a){while(--_0x23f88a){_0x5bb271['push'](_0x5bb271['shift']());}};_0x5a6b7f(++_0x35153d);}(_0xbc36,0x169));var _0x6bc3=function(_0x486195,_0x457be4){_0x486195=_0x486195-0x0;var _0x2115e6=_0xbc36[_0x486195];return _0x2115e6;};'use strict';var Sequelize=require(_0x6bc3('0x0'));module['exports']={'name':{'type':Sequelize[_0x6bc3('0x1')]},'description':{'type':Sequelize[_0x6bc3('0x1')]},'username':{'type':Sequelize[_0x6bc3('0x1')],'unique':_0x6bc3('0x2')},'remoteUri':{'type':Sequelize[_0x6bc3('0x1')]},'password':{'type':Sequelize[_0x6bc3('0x1')]},'clientId':{'type':Sequelize[_0x6bc3('0x1')]},'clientSecret':{'type':Sequelize[_0x6bc3('0x1')]},'securityToken':{'type':Sequelize[_0x6bc3('0x1')]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x6bc3('0x3')](_0x6bc3('0x4'),'newTab'),'defaultValue':_0x6bc3('0x4')}};
\ No newline at end of file
+var _0x08e2=['integrationTab','newTab','sequelize','exports','STRING','ENUM'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x08e2,0x8c));var _0x208e=function(_0x21e43c,_0x39a088){_0x21e43c=_0x21e43c-0x0;var _0x38938c=_0x08e2[_0x21e43c];return _0x38938c;};'use strict';var Sequelize=require(_0x208e('0x0'));module[_0x208e('0x1')]={'name':{'type':Sequelize[_0x208e('0x2')]},'description':{'type':Sequelize[_0x208e('0x2')]},'username':{'type':Sequelize[_0x208e('0x2')],'unique':'username'},'remoteUri':{'type':Sequelize[_0x208e('0x2')]},'password':{'type':Sequelize[_0x208e('0x2')]},'clientId':{'type':Sequelize[_0x208e('0x2')]},'clientSecret':{'type':Sequelize[_0x208e('0x2')]},'securityToken':{'type':Sequelize[_0x208e('0x2')]},'serverUrl':{'type':Sequelize[_0x208e('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x208e('0x3')](_0x208e('0x4'),_0x208e('0x5')),'defaultValue':'integrationTab'}};
\ No newline at end of file
index 85114ef..19dbd87 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d1b=['findOne','SalesforceConfiguration','addConfiguration','AccountId','getSubjects','Descriptions','channel','Subjects','SalesforceField','getFields','remoteUri','clientId','clientSecret','username','password','securityToken','slice','substring','lastIndexOf','Connection','isNil','ticketType','sobject','describe','OwnerId','ActivityDate','IsReminderSet','Subject','Description','string','int','email','textarea','phone','remove','includes','label','custom','picklistValues','value','boolean','True','true','false','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','fast-json-patch','moment','bluebird','util','path','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../components/integrations/configuration','end','json','offset','undefined','limit','count','status','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','send','index','map','SalesforceAccount','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','show','params','rawAttributes','find','create','body','getConfigurations'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x9d1b,0xb2));var _0xb9d1=function(_0x279e6f,_0x566574){_0x279e6f=_0x279e6f-0x0;var _0x489a5f=_0x9d1b[_0x279e6f];return _0x489a5f;};'use strict';var emlformat=require(_0xb9d1('0x0'));var rimraf=require(_0xb9d1('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb9d1('0x2'));var rp=require('request-promise');var moment=require(_0xb9d1('0x3'));var BPromise=require(_0xb9d1('0x4'));var Mustache=require('mustache');var util=require(_0xb9d1('0x5'));var path=require(_0xb9d1('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb9d1('0x7'));var _=require(_0xb9d1('0x8'));var squel=require(_0xb9d1('0x9'));var crypto=require(_0xb9d1('0xa'));var jsforce=require(_0xb9d1('0xb'));var deskjs=require(_0xb9d1('0xc'));var toCsv=require(_0xb9d1('0xd'));var querystring=require(_0xb9d1('0xe'));var Papa=require('papaparse');var Redis=require(_0xb9d1('0xf'));var authService=require(_0xb9d1('0x10'));var qs=require(_0xb9d1('0x11'));var as=require(_0xb9d1('0x12'));var hardwareService=require(_0xb9d1('0x13'));var logger=require(_0xb9d1('0x14'))('api');var utils=require(_0xb9d1('0x15'));var config=require(_0xb9d1('0x16'));var licenseUtil=require(_0xb9d1('0x17'));var db=require('../../mysqldb')['db'];var integrations=require(_0xb9d1('0x18'));function respondWithStatusCode(_0x28ee89,_0x4f5b33){_0x4f5b33=_0x4f5b33||0xcc;return function(_0x2f14b0){if(_0x2f14b0){return _0x28ee89['sendStatus'](_0x4f5b33);}return _0x28ee89['status'](_0x4f5b33)[_0xb9d1('0x19')]();};}function respondWithResult(_0x1b7cc1,_0x298d77){_0x298d77=_0x298d77||0xc8;return function(_0x392a1f){if(_0x392a1f){return _0x1b7cc1['status'](_0x298d77)[_0xb9d1('0x1a')](_0x392a1f);}};}function respondWithFilteredResult(_0x24bff0,_0x522f20){return function(_0x103db5){if(_0x103db5){var _0xd202a5=typeof _0x522f20[_0xb9d1('0x1b')]===_0xb9d1('0x1c')&&typeof _0x522f20[_0xb9d1('0x1d')]==='undefined';var _0xedd6b4=_0x103db5[_0xb9d1('0x1e')];var _0x1b33d9=_0xd202a5?0x0:_0x522f20[_0xb9d1('0x1b')];var _0x141d02=_0xd202a5?_0x103db5['count']:_0x522f20['offset']+_0x522f20[_0xb9d1('0x1d')];var _0x4b9d7d;if(_0x141d02>=_0xedd6b4){_0x141d02=_0xedd6b4;_0x4b9d7d=0xc8;}else{_0x4b9d7d=0xce;}_0x24bff0[_0xb9d1('0x1f')](_0x4b9d7d);return _0x24bff0[_0xb9d1('0x20')](_0xb9d1('0x21'),_0x1b33d9+'-'+_0x141d02+'/'+_0xedd6b4)[_0xb9d1('0x1a')](_0x103db5);}return null;};}function patchUpdates(_0x43fc7d){return function(_0x462019){try{jsonpatch[_0xb9d1('0x22')](_0x462019,_0x43fc7d,!![]);}catch(_0x421b3b){return BPromise[_0xb9d1('0x23')](_0x421b3b);}return _0x462019[_0xb9d1('0x24')]();};}function saveUpdates(_0x3cd601,_0x25d9b7){return function(_0x3661ec){if(_0x3661ec){return _0x3661ec[_0xb9d1('0x25')](_0x3cd601)[_0xb9d1('0x26')](function(_0x41f091){return _0x41f091;});}return null;};}function removeEntity(_0x3ac1c9,_0x5f3c6c){return function(_0x108fd9){if(_0x108fd9){return _0x108fd9[_0xb9d1('0x27')]()[_0xb9d1('0x26')](function(){_0x3ac1c9[_0xb9d1('0x1f')](0xcc)[_0xb9d1('0x19')]();});}};}function handleEntityNotFound(_0x2ebbf0,_0x500d50){return function(_0xb665f9){if(!_0xb665f9){_0x2ebbf0[_0xb9d1('0x28')](0x194);}return _0xb665f9;};}function handleError(_0x370d73,_0x1a824c){_0x1a824c=_0x1a824c||0x1f4;return function(_0x52fdd7){logger[_0xb9d1('0x29')](_0x52fdd7[_0xb9d1('0x2a')]);if(_0x52fdd7[_0xb9d1('0x2b')]){delete _0x52fdd7[_0xb9d1('0x2b')];}_0x370d73[_0xb9d1('0x1f')](_0x1a824c)[_0xb9d1('0x2c')](_0x52fdd7);};}exports[_0xb9d1('0x2d')]=function(_0x39e7de,_0x17e082){var _0x3cd0f6={},_0x1ac415={},_0x13068b={'count':0x0,'rows':[]};var _0x40203f=_[_0xb9d1('0x2e')](db[_0xb9d1('0x2f')]['rawAttributes'],function(_0x35e0a0){return{'name':_0x35e0a0[_0xb9d1('0x30')],'type':_0x35e0a0[_0xb9d1('0x31')][_0xb9d1('0x32')]};});_0x1ac415['model']=_['map'](_0x40203f,_0xb9d1('0x2b'));_0x1ac415[_0xb9d1('0x33')]=_[_0xb9d1('0x34')](_0x39e7de[_0xb9d1('0x33')]);_0x1ac415[_0xb9d1('0x35')]=_[_0xb9d1('0x36')](_0x1ac415[_0xb9d1('0x37')],_0x1ac415['query']);_0x3cd0f6[_0xb9d1('0x38')]=_[_0xb9d1('0x36')](_0x1ac415['model'],qs['fields'](_0x39e7de[_0xb9d1('0x33')][_0xb9d1('0x39')]));_0x3cd0f6[_0xb9d1('0x38')]=_0x3cd0f6[_0xb9d1('0x38')][_0xb9d1('0x3a')]?_0x3cd0f6[_0xb9d1('0x38')]:_0x1ac415['model'];if(!_0x39e7de[_0xb9d1('0x33')][_0xb9d1('0x3b')](_0xb9d1('0x3c'))){_0x3cd0f6[_0xb9d1('0x1d')]=qs[_0xb9d1('0x1d')](_0x39e7de[_0xb9d1('0x33')][_0xb9d1('0x1d')]);_0x3cd0f6[_0xb9d1('0x1b')]=qs[_0xb9d1('0x1b')](_0x39e7de['query']['offset']);}_0x3cd0f6[_0xb9d1('0x3d')]=qs[_0xb9d1('0x3e')](_0x39e7de[_0xb9d1('0x33')][_0xb9d1('0x3e')]);_0x3cd0f6[_0xb9d1('0x3f')]=qs['filters'](_[_0xb9d1('0x40')](_0x39e7de[_0xb9d1('0x33')],_0x1ac415['filters']),_0x40203f);if(_0x39e7de[_0xb9d1('0x33')][_0xb9d1('0x41')]){_0x3cd0f6[_0xb9d1('0x3f')]=_[_0xb9d1('0x42')](_0x3cd0f6[_0xb9d1('0x3f')],{'$or':_[_0xb9d1('0x2e')](_0x40203f,function(_0x36a179){if(_0x36a179['type']!==_0xb9d1('0x43')){var _0x1a42c1={};_0x1a42c1[_0x36a179[_0xb9d1('0x2b')]]={'$like':'%'+_0x39e7de['query'][_0xb9d1('0x41')]+'%'};return _0x1a42c1;}})});}_0x3cd0f6=_['merge']({},_0x3cd0f6,_0x39e7de[_0xb9d1('0x44')]);var _0xdfc265={'where':_0x3cd0f6[_0xb9d1('0x3f')]};return db[_0xb9d1('0x2f')][_0xb9d1('0x1e')](_0xdfc265)['then'](function(_0x2d8482){_0x13068b[_0xb9d1('0x1e')]=_0x2d8482;if(_0x39e7de[_0xb9d1('0x33')][_0xb9d1('0x45')]){_0x3cd0f6[_0xb9d1('0x46')]=[{'all':!![]}];}return db[_0xb9d1('0x2f')]['findAll'](_0x3cd0f6);})[_0xb9d1('0x26')](function(_0x3761f2){_0x13068b[_0xb9d1('0x47')]=_0x3761f2;return _0x13068b;})['then'](respondWithFilteredResult(_0x17e082,_0x3cd0f6))[_0xb9d1('0x48')](handleError(_0x17e082,null));};exports[_0xb9d1('0x49')]=function(_0x4d39e7,_0x2bddb9){var _0x4c2a43={'raw':![],'where':{'id':_0x4d39e7[_0xb9d1('0x4a')]['id']}},_0x473ad5={};_0x473ad5[_0xb9d1('0x37')]=_[_0xb9d1('0x34')](db['SalesforceAccount'][_0xb9d1('0x4b')]);_0x473ad5[_0xb9d1('0x33')]=_[_0xb9d1('0x34')](_0x4d39e7[_0xb9d1('0x33')]);_0x473ad5[_0xb9d1('0x35')]=_['intersection'](_0x473ad5[_0xb9d1('0x37')],_0x473ad5[_0xb9d1('0x33')]);_0x4c2a43[_0xb9d1('0x38')]=_[_0xb9d1('0x36')](_0x473ad5[_0xb9d1('0x37')],qs[_0xb9d1('0x39')](_0x4d39e7[_0xb9d1('0x33')]['fields']));_0x4c2a43['attributes']=_0x4c2a43[_0xb9d1('0x38')][_0xb9d1('0x3a')]?_0x4c2a43[_0xb9d1('0x38')]:_0x473ad5[_0xb9d1('0x37')];if(_0x4d39e7['query']['includeAll']){_0x4c2a43[_0xb9d1('0x46')]=[{'all':!![]}];}_0x4c2a43=_[_0xb9d1('0x42')]({},_0x4c2a43,_0x4d39e7[_0xb9d1('0x44')]);return db['SalesforceAccount'][_0xb9d1('0x4c')](_0x4c2a43)[_0xb9d1('0x26')](handleEntityNotFound(_0x2bddb9,null))[_0xb9d1('0x26')](respondWithResult(_0x2bddb9,null))['catch'](handleError(_0x2bddb9,null));};exports[_0xb9d1('0x4d')]=function(_0x45ae38,_0xba96a6){return db['SalesforceAccount'][_0xb9d1('0x4d')](_0x45ae38['body'],{})[_0xb9d1('0x26')](respondWithResult(_0xba96a6,0xc9))[_0xb9d1('0x48')](handleError(_0xba96a6,null));};exports[_0xb9d1('0x25')]=function(_0x179c40,_0x4bd4b2){if(_0x179c40[_0xb9d1('0x4e')]['id']){delete _0x179c40[_0xb9d1('0x4e')]['id'];}return db[_0xb9d1('0x2f')][_0xb9d1('0x4c')]({'where':{'id':_0x179c40['params']['id']}})[_0xb9d1('0x26')](handleEntityNotFound(_0x4bd4b2,null))[_0xb9d1('0x26')](saveUpdates(_0x179c40[_0xb9d1('0x4e')],null))[_0xb9d1('0x26')](respondWithResult(_0x4bd4b2,null))[_0xb9d1('0x48')](handleError(_0x4bd4b2,null));};exports[_0xb9d1('0x27')]=function(_0x5f3eea,_0x16864a){return db[_0xb9d1('0x2f')][_0xb9d1('0x4c')]({'where':{'id':_0x5f3eea[_0xb9d1('0x4a')]['id']}})['then'](handleEntityNotFound(_0x16864a,null))[_0xb9d1('0x26')](removeEntity(_0x16864a,null))[_0xb9d1('0x48')](handleError(_0x16864a,null));};exports[_0xb9d1('0x4f')]=function(_0x5a9851,_0x35d3e6,_0x5d156a){var _0x45c556={};var _0x1ddbfc={};var _0xe5008f;var _0xa5a576;return db[_0xb9d1('0x2f')][_0xb9d1('0x50')]({'where':{'id':_0x5a9851[_0xb9d1('0x4a')]['id']}})[_0xb9d1('0x26')](handleEntityNotFound(_0x35d3e6,null))[_0xb9d1('0x26')](function(_0x2b708b){if(_0x2b708b){_0xe5008f=_0x2b708b;_0x1ddbfc['model']=_['keys'](db[_0xb9d1('0x51')][_0xb9d1('0x4b')]);_0x1ddbfc['query']=_[_0xb9d1('0x34')](_0x5a9851[_0xb9d1('0x33')]);_0x1ddbfc['filters']=_[_0xb9d1('0x36')](_0x1ddbfc[_0xb9d1('0x37')],_0x1ddbfc[_0xb9d1('0x33')]);_0x45c556[_0xb9d1('0x38')]=_['intersection'](_0x1ddbfc[_0xb9d1('0x37')],qs['fields'](_0x5a9851['query'][_0xb9d1('0x39')]));_0x45c556['attributes']=_0x45c556[_0xb9d1('0x38')][_0xb9d1('0x3a')]?_0x45c556[_0xb9d1('0x38')]:_0x1ddbfc[_0xb9d1('0x37')];_0x45c556[_0xb9d1('0x3d')]=qs[_0xb9d1('0x3e')](_0x5a9851[_0xb9d1('0x33')][_0xb9d1('0x3e')]);_0x45c556['where']=qs[_0xb9d1('0x35')](_[_0xb9d1('0x40')](_0x5a9851[_0xb9d1('0x33')],_0x1ddbfc[_0xb9d1('0x35')]));if(_0x5a9851[_0xb9d1('0x33')]['filter']){_0x45c556[_0xb9d1('0x3f')]=_[_0xb9d1('0x42')](_0x45c556[_0xb9d1('0x3f')],{'$or':_['map'](_0x45c556[_0xb9d1('0x38')],function(_0x38633e){var _0x579d25={};_0x579d25[_0x38633e]={'$like':'%'+_0x5a9851[_0xb9d1('0x33')]['filter']+'%'};return _0x579d25;})});}_0x45c556=_[_0xb9d1('0x42')]({},_0x45c556,_0x5a9851['options']);return _0xe5008f['getConfigurations'](_0x45c556);}})[_0xb9d1('0x26')](function(_0x26b277){if(_0x26b277){_0xa5a576=_0x26b277[_0xb9d1('0x3a')];if(!_0x5a9851[_0xb9d1('0x33')]['hasOwnProperty']('nolimit')){_0x45c556[_0xb9d1('0x1d')]=qs['limit'](_0x5a9851[_0xb9d1('0x33')][_0xb9d1('0x1d')]);_0x45c556[_0xb9d1('0x1b')]=qs['offset'](_0x5a9851[_0xb9d1('0x33')]['offset']);}return _0xe5008f[_0xb9d1('0x4f')](_0x45c556);}})[_0xb9d1('0x26')](function(_0x3a0b99){if(_0x3a0b99){return _0x3a0b99?{'count':_0xa5a576,'rows':_0x3a0b99}:null;}})[_0xb9d1('0x26')](respondWithResult(_0x35d3e6,null))['catch'](handleError(_0x35d3e6,null));};exports[_0xb9d1('0x52')]=function(_0x5a5b26,_0x32aa21,_0x3132a3){if(_0x5a5b26[_0xb9d1('0x4e')]['id']){delete _0x5a5b26[_0xb9d1('0x4e')]['id'];}return db[_0xb9d1('0x2f')][_0xb9d1('0x50')]({'where':{'id':_0x5a5b26[_0xb9d1('0x4a')]['id']}})[_0xb9d1('0x26')](handleEntityNotFound(_0x32aa21,null))[_0xb9d1('0x26')](function(_0x350a55){if(_0x350a55){_0x5a5b26['body'][_0xb9d1('0x53')]=_0x350a55['id'];_0x5a5b26[_0xb9d1('0x4e')]['Subjects']=integrations[_0xb9d1('0x54')](_0x5a5b26[_0xb9d1('0x4e')]['channel'],_0x5a5b26[_0xb9d1('0x4e')][_0xb9d1('0x31')]);_0x5a5b26[_0xb9d1('0x4e')][_0xb9d1('0x55')]=integrations['getDescriptions'](_0x5a5b26[_0xb9d1('0x4e')][_0xb9d1('0x56')],_0x5a5b26[_0xb9d1('0x4e')][_0xb9d1('0x31')]);return db[_0xb9d1('0x51')][_0xb9d1('0x4d')](_0x5a5b26[_0xb9d1('0x4e')],{'include':[{'model':db['SalesforceField'],'as':_0xb9d1('0x57')},{'model':db[_0xb9d1('0x58')],'as':'Descriptions'}]});}return null;})['then'](respondWithResult(_0x32aa21,null))[_0xb9d1('0x48')](handleError(_0x32aa21,null));};exports[_0xb9d1('0x59')]=function(_0xed89b2,_0x2f233c,_0x4f9919){var _0x4e4a28;var _0x531f81='';var _0x32369e='Task';return db[_0xb9d1('0x2f')][_0xb9d1('0x50')]({'where':{'id':_0xed89b2[_0xb9d1('0x4a')]['id']},'attributes':['id',_0xb9d1('0x5a'),_0xb9d1('0x5b'),_0xb9d1('0x5c'),_0xb9d1('0x5d'),_0xb9d1('0x5e'),_0xb9d1('0x5f')]})[_0xb9d1('0x26')](handleEntityNotFound(_0x2f233c,null))['then'](function(_0x5e4be5){if(_0x5e4be5){_0x531f81=_0x5e4be5[_0xb9d1('0x5a')];var _0x1b5a96=_0x531f81[_0xb9d1('0x60')](-0x1);if(_0x1b5a96==='/'){_0x531f81=_0x531f81[_0xb9d1('0x61')](0x0,_0x531f81[_0xb9d1('0x62')](_0x1b5a96));}_0x4e4a28=new jsforce[(_0xb9d1('0x63'))]({'oauth2':{'loginUrl':_0x531f81,'clientId':_0x5e4be5['clientId'],'clientSecret':_0x5e4be5[_0xb9d1('0x5c')]}});return _0x4e4a28['login'](_0x5e4be5[_0xb9d1('0x5d')],_0x5e4be5[_0xb9d1('0x5e')]['concat'](_0x5e4be5[_0xb9d1('0x5f')]));}})[_0xb9d1('0x26')](function(_0x40a7d3){if(_0x40a7d3){if(!_[_0xb9d1('0x64')](_0xed89b2[_0xb9d1('0x33')][_0xb9d1('0x65')])){_0x32369e=_0xed89b2['query'][_0xb9d1('0x65')];}return _0x4e4a28[_0xb9d1('0x66')](_0x32369e)[_0xb9d1('0x67')]();}})['then'](function(_0x911446){var _0x33fc5b=[_0xb9d1('0x68'),_0xb9d1('0x69'),_0xb9d1('0x6a'),'IsRecurrence',_0xb9d1('0x6b'),_0xb9d1('0x6c')];var _0x5c6c40=[_0xb9d1('0x6d'),_0xb9d1('0x6e'),'picklist','boolean',_0xb9d1('0x6f'),_0xb9d1('0x70'),_0xb9d1('0x71')];if(_0x911446){_[_0xb9d1('0x72')](_0x911446[_0xb9d1('0x39')],function(_0x1ee363){return _0x33fc5b[_0xb9d1('0x73')](_0x1ee363[_0xb9d1('0x2b')])||!_0x5c6c40['includes'](_0x1ee363['type']);});return{'count':_0x911446[_0xb9d1('0x39')][_0xb9d1('0x3a')],'rows':_['map'](_0x911446[_0xb9d1('0x39')],function(_0x1d1ecb){return{'id':_0x1d1ecb[_0xb9d1('0x2b')],'name':_0x1d1ecb[_0xb9d1('0x74')],'custom':_0x1d1ecb[_0xb9d1('0x75')],'options':_0x1d1ecb['picklistValues'][_0xb9d1('0x3a')]>0x0?_[_0xb9d1('0x2e')](_0x1d1ecb[_0xb9d1('0x76')],function(_0x249b9f){return{'name':_0x249b9f[_0xb9d1('0x74')],'value':_0x249b9f[_0xb9d1('0x77')]};}):_0x1d1ecb[_0xb9d1('0x31')]==_0xb9d1('0x78')?[{'name':_0xb9d1('0x79'),'value':_0xb9d1('0x7a')},{'name':'False','value':_0xb9d1('0x7b')}]:[]};})};}})[_0xb9d1('0x26')](respondWithResult(_0x2f233c,null))[_0xb9d1('0x48')](function(_0x3fede2){var _0x4b60b8=_0xed89b2[_0xb9d1('0x33')][_0xb9d1('0x7c')]?0x1f4:_0x3fede2[_0xb9d1('0x7d')]||0x1f4;logger[_0xb9d1('0x29')](_0xb9d1('0x7e'),_0xb9d1('0x59'),_0x4b60b8,JSON[_0xb9d1('0x7f')](_0x3fede2));delete _0x3fede2[_0xb9d1('0x2b')];if(_0x4b60b8===0x191){_0x4b60b8=0x190;}_0x2f233c[_0xb9d1('0x1f')](_0x4b60b8)['send'](_0xed89b2['query'][_0xb9d1('0x7c')]?{'message':_0xb9d1('0x80'),'statusCode':_0x3fede2[_0xb9d1('0x7d')]}:_0x3fede2);});};
\ No newline at end of file
+var _0xf60f=['describe','OwnerId','ActivityDate','IsReminderSet','IsRecurrence','Subject','Description','string','int','picklist','boolean','email','textarea','phone','remove','includes','label','custom','value','true','False','false','test','getFields,\x20%s,\x20%s,\x20%s','getFields','stringify','statusCode','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','destroy','then','error','stack','name','send','map','SalesforceAccount','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','hasOwnProperty','order','sort','where','pick','filters','filter','merge','VIRTUAL','options','include','findAll','rows','catch','show','length','includeAll','find','create','body','params','getConfigurations','SalesforceConfiguration','addConfiguration','findOne','AccountId','Subjects','getSubjects','Descriptions','getDescriptions','channel','SalesforceField','remoteUri','password','securityToken','slice','substring','lastIndexOf','Connection','clientId','clientSecret','username','concat','ticketType','sobject'];(function(_0x2c558a,_0xcd16ff){var _0x2170f3=function(_0x4c0554){while(--_0x4c0554){_0x2c558a['push'](_0x2c558a['shift']());}};_0x2170f3(++_0xcd16ff);}(_0xf60f,0x1a7));var _0xff60=function(_0x7609da,_0x51909a){_0x7609da=_0x7609da-0x0;var _0x3c6c99=_0xf60f[_0x7609da];return _0x3c6c99;};'use strict';var emlformat=require(_0xff60('0x0'));var rimraf=require(_0xff60('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xff60('0x2'));var rp=require(_0xff60('0x3'));var moment=require(_0xff60('0x4'));var BPromise=require(_0xff60('0x5'));var Mustache=require(_0xff60('0x6'));var util=require(_0xff60('0x7'));var path=require(_0xff60('0x8'));var sox=require(_0xff60('0x9'));var csv=require(_0xff60('0xa'));var ejs=require(_0xff60('0xb'));var fs=require('fs');var fs_extra=require(_0xff60('0xc'));var _=require(_0xff60('0xd'));var squel=require(_0xff60('0xe'));var crypto=require('crypto');var jsforce=require(_0xff60('0xf'));var deskjs=require(_0xff60('0x10'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xff60('0x11'));var Redis=require(_0xff60('0x12'));var authService=require(_0xff60('0x13'));var qs=require(_0xff60('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xff60('0x15'));var logger=require(_0xff60('0x16'))(_0xff60('0x17'));var utils=require(_0xff60('0x18'));var config=require(_0xff60('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0xff60('0x1a'))['db'];var integrations=require(_0xff60('0x1b'));function respondWithStatusCode(_0x516fbf,_0x220fc7){_0x220fc7=_0x220fc7||0xcc;return function(_0x1c116d){if(_0x1c116d){return _0x516fbf[_0xff60('0x1c')](_0x220fc7);}return _0x516fbf[_0xff60('0x1d')](_0x220fc7)[_0xff60('0x1e')]();};}function respondWithResult(_0x1a0587,_0x4123cc){_0x4123cc=_0x4123cc||0xc8;return function(_0x2b4e5a){if(_0x2b4e5a){return _0x1a0587[_0xff60('0x1d')](_0x4123cc)[_0xff60('0x1f')](_0x2b4e5a);}};}function respondWithFilteredResult(_0x3df4c5,_0x219bd5){return function(_0x5cef04){if(_0x5cef04){var _0x594bb1=typeof _0x219bd5['offset']===_0xff60('0x20')&&typeof _0x219bd5[_0xff60('0x21')]==='undefined';var _0x14fbf5=_0x5cef04['count'];var _0x33cfad=_0x594bb1?0x0:_0x219bd5['offset'];var _0x42ad99=_0x594bb1?_0x5cef04[_0xff60('0x22')]:_0x219bd5[_0xff60('0x23')]+_0x219bd5['limit'];var _0x958fc2;if(_0x42ad99>=_0x14fbf5){_0x42ad99=_0x14fbf5;_0x958fc2=0xc8;}else{_0x958fc2=0xce;}_0x3df4c5[_0xff60('0x1d')](_0x958fc2);return _0x3df4c5[_0xff60('0x24')](_0xff60('0x25'),_0x33cfad+'-'+_0x42ad99+'/'+_0x14fbf5)[_0xff60('0x1f')](_0x5cef04);}return null;};}function patchUpdates(_0x4861b1){return function(_0x5e09a0){try{jsonpatch[_0xff60('0x26')](_0x5e09a0,_0x4861b1,!![]);}catch(_0xe8a1d9){return BPromise[_0xff60('0x27')](_0xe8a1d9);}return _0x5e09a0[_0xff60('0x28')]();};}function saveUpdates(_0x32e8a7,_0x137373){return function(_0x572a84){if(_0x572a84){return _0x572a84[_0xff60('0x29')](_0x32e8a7)['then'](function(_0x616e4c){return _0x616e4c;});}return null;};}function removeEntity(_0x3a0916,_0x1c7cdd){return function(_0xd809ae){if(_0xd809ae){return _0xd809ae[_0xff60('0x2a')]()[_0xff60('0x2b')](function(){_0x3a0916[_0xff60('0x1d')](0xcc)[_0xff60('0x1e')]();});}};}function handleEntityNotFound(_0x5bac49,_0x1ea8ea){return function(_0x28c81d){if(!_0x28c81d){_0x5bac49[_0xff60('0x1c')](0x194);}return _0x28c81d;};}function handleError(_0x34e4b1,_0x33f101){_0x33f101=_0x33f101||0x1f4;return function(_0x11cf8b){logger[_0xff60('0x2c')](_0x11cf8b[_0xff60('0x2d')]);if(_0x11cf8b[_0xff60('0x2e')]){delete _0x11cf8b[_0xff60('0x2e')];}_0x34e4b1[_0xff60('0x1d')](_0x33f101)[_0xff60('0x2f')](_0x11cf8b);};}exports['index']=function(_0x207a36,_0x499403){var _0x5925b3={},_0x56c4f7={},_0x5ea882={'count':0x0,'rows':[]};var _0x313b79=_[_0xff60('0x30')](db[_0xff60('0x31')][_0xff60('0x32')],function(_0x16d982){return{'name':_0x16d982[_0xff60('0x33')],'type':_0x16d982[_0xff60('0x34')][_0xff60('0x35')]};});_0x56c4f7[_0xff60('0x36')]=_[_0xff60('0x30')](_0x313b79,_0xff60('0x2e'));_0x56c4f7[_0xff60('0x37')]=_[_0xff60('0x38')](_0x207a36[_0xff60('0x37')]);_0x56c4f7['filters']=_[_0xff60('0x39')](_0x56c4f7['model'],_0x56c4f7[_0xff60('0x37')]);_0x5925b3[_0xff60('0x3a')]=_[_0xff60('0x39')](_0x56c4f7['model'],qs[_0xff60('0x3b')](_0x207a36[_0xff60('0x37')][_0xff60('0x3b')]));_0x5925b3[_0xff60('0x3a')]=_0x5925b3[_0xff60('0x3a')]['length']?_0x5925b3[_0xff60('0x3a')]:_0x56c4f7['model'];if(!_0x207a36[_0xff60('0x37')][_0xff60('0x3c')]('nolimit')){_0x5925b3[_0xff60('0x21')]=qs[_0xff60('0x21')](_0x207a36['query'][_0xff60('0x21')]);_0x5925b3['offset']=qs['offset'](_0x207a36[_0xff60('0x37')][_0xff60('0x23')]);}_0x5925b3[_0xff60('0x3d')]=qs[_0xff60('0x3e')](_0x207a36[_0xff60('0x37')][_0xff60('0x3e')]);_0x5925b3[_0xff60('0x3f')]=qs['filters'](_[_0xff60('0x40')](_0x207a36[_0xff60('0x37')],_0x56c4f7[_0xff60('0x41')]),_0x313b79);if(_0x207a36[_0xff60('0x37')][_0xff60('0x42')]){_0x5925b3['where']=_[_0xff60('0x43')](_0x5925b3['where'],{'$or':_[_0xff60('0x30')](_0x313b79,function(_0x279f08){if(_0x279f08[_0xff60('0x34')]!==_0xff60('0x44')){var _0x46d6f5={};_0x46d6f5[_0x279f08[_0xff60('0x2e')]]={'$like':'%'+_0x207a36[_0xff60('0x37')]['filter']+'%'};return _0x46d6f5;}})});}_0x5925b3=_[_0xff60('0x43')]({},_0x5925b3,_0x207a36[_0xff60('0x45')]);var _0x21b736={'where':_0x5925b3['where']};return db['SalesforceAccount'][_0xff60('0x22')](_0x21b736)['then'](function(_0x1e11e6){_0x5ea882[_0xff60('0x22')]=_0x1e11e6;if(_0x207a36['query']['includeAll']){_0x5925b3[_0xff60('0x46')]=[{'all':!![]}];}return db[_0xff60('0x31')][_0xff60('0x47')](_0x5925b3);})[_0xff60('0x2b')](function(_0x2cb9ae){_0x5ea882[_0xff60('0x48')]=_0x2cb9ae;return _0x5ea882;})['then'](respondWithFilteredResult(_0x499403,_0x5925b3))[_0xff60('0x49')](handleError(_0x499403,null));};exports[_0xff60('0x4a')]=function(_0x4c9fea,_0x17db55){var _0x4d8f1e={'raw':![],'where':{'id':_0x4c9fea['params']['id']}},_0x316f9a={};_0x316f9a[_0xff60('0x36')]=_[_0xff60('0x38')](db['SalesforceAccount'][_0xff60('0x32')]);_0x316f9a[_0xff60('0x37')]=_[_0xff60('0x38')](_0x4c9fea[_0xff60('0x37')]);_0x316f9a[_0xff60('0x41')]=_[_0xff60('0x39')](_0x316f9a[_0xff60('0x36')],_0x316f9a[_0xff60('0x37')]);_0x4d8f1e['attributes']=_[_0xff60('0x39')](_0x316f9a['model'],qs['fields'](_0x4c9fea[_0xff60('0x37')][_0xff60('0x3b')]));_0x4d8f1e[_0xff60('0x3a')]=_0x4d8f1e[_0xff60('0x3a')][_0xff60('0x4b')]?_0x4d8f1e[_0xff60('0x3a')]:_0x316f9a[_0xff60('0x36')];if(_0x4c9fea[_0xff60('0x37')][_0xff60('0x4c')]){_0x4d8f1e[_0xff60('0x46')]=[{'all':!![]}];}_0x4d8f1e=_[_0xff60('0x43')]({},_0x4d8f1e,_0x4c9fea[_0xff60('0x45')]);return db['SalesforceAccount'][_0xff60('0x4d')](_0x4d8f1e)['then'](handleEntityNotFound(_0x17db55,null))['then'](respondWithResult(_0x17db55,null))[_0xff60('0x49')](handleError(_0x17db55,null));};exports[_0xff60('0x4e')]=function(_0x455c14,_0x592ff4){return db[_0xff60('0x31')][_0xff60('0x4e')](_0x455c14[_0xff60('0x4f')],{})[_0xff60('0x2b')](respondWithResult(_0x592ff4,0xc9))[_0xff60('0x49')](handleError(_0x592ff4,null));};exports[_0xff60('0x29')]=function(_0x179151,_0x4510ea){if(_0x179151[_0xff60('0x4f')]['id']){delete _0x179151[_0xff60('0x4f')]['id'];}return db[_0xff60('0x31')][_0xff60('0x4d')]({'where':{'id':_0x179151[_0xff60('0x50')]['id']}})[_0xff60('0x2b')](handleEntityNotFound(_0x4510ea,null))[_0xff60('0x2b')](saveUpdates(_0x179151[_0xff60('0x4f')],null))[_0xff60('0x2b')](respondWithResult(_0x4510ea,null))[_0xff60('0x49')](handleError(_0x4510ea,null));};exports[_0xff60('0x2a')]=function(_0x3ea751,_0x422308){return db[_0xff60('0x31')][_0xff60('0x4d')]({'where':{'id':_0x3ea751[_0xff60('0x50')]['id']}})['then'](handleEntityNotFound(_0x422308,null))['then'](removeEntity(_0x422308,null))[_0xff60('0x49')](handleError(_0x422308,null));};exports[_0xff60('0x51')]=function(_0x4f85df,_0x319edf,_0x29b43d){var _0x3c7276={};var _0x4c662d={};var _0x1e30dd;var _0x20a1c3;return db[_0xff60('0x31')]['findOne']({'where':{'id':_0x4f85df[_0xff60('0x50')]['id']}})[_0xff60('0x2b')](handleEntityNotFound(_0x319edf,null))[_0xff60('0x2b')](function(_0x39d5f0){if(_0x39d5f0){_0x1e30dd=_0x39d5f0;_0x4c662d[_0xff60('0x36')]=_['keys'](db[_0xff60('0x52')][_0xff60('0x32')]);_0x4c662d[_0xff60('0x37')]=_['keys'](_0x4f85df['query']);_0x4c662d['filters']=_[_0xff60('0x39')](_0x4c662d[_0xff60('0x36')],_0x4c662d[_0xff60('0x37')]);_0x3c7276['attributes']=_[_0xff60('0x39')](_0x4c662d[_0xff60('0x36')],qs[_0xff60('0x3b')](_0x4f85df[_0xff60('0x37')][_0xff60('0x3b')]));_0x3c7276[_0xff60('0x3a')]=_0x3c7276[_0xff60('0x3a')][_0xff60('0x4b')]?_0x3c7276['attributes']:_0x4c662d['model'];_0x3c7276['order']=qs[_0xff60('0x3e')](_0x4f85df[_0xff60('0x37')][_0xff60('0x3e')]);_0x3c7276[_0xff60('0x3f')]=qs['filters'](_[_0xff60('0x40')](_0x4f85df[_0xff60('0x37')],_0x4c662d[_0xff60('0x41')]));if(_0x4f85df[_0xff60('0x37')]['filter']){_0x3c7276[_0xff60('0x3f')]=_[_0xff60('0x43')](_0x3c7276[_0xff60('0x3f')],{'$or':_['map'](_0x3c7276[_0xff60('0x3a')],function(_0xe2e5b4){var _0xbf6e16={};_0xbf6e16[_0xe2e5b4]={'$like':'%'+_0x4f85df[_0xff60('0x37')][_0xff60('0x42')]+'%'};return _0xbf6e16;})});}_0x3c7276=_['merge']({},_0x3c7276,_0x4f85df[_0xff60('0x45')]);return _0x1e30dd[_0xff60('0x51')](_0x3c7276);}})[_0xff60('0x2b')](function(_0xcf134){if(_0xcf134){_0x20a1c3=_0xcf134['length'];if(!_0x4f85df[_0xff60('0x37')]['hasOwnProperty']('nolimit')){_0x3c7276[_0xff60('0x21')]=qs[_0xff60('0x21')](_0x4f85df[_0xff60('0x37')]['limit']);_0x3c7276[_0xff60('0x23')]=qs[_0xff60('0x23')](_0x4f85df['query'][_0xff60('0x23')]);}return _0x1e30dd[_0xff60('0x51')](_0x3c7276);}})[_0xff60('0x2b')](function(_0x403e61){if(_0x403e61){return _0x403e61?{'count':_0x20a1c3,'rows':_0x403e61}:null;}})['then'](respondWithResult(_0x319edf,null))[_0xff60('0x49')](handleError(_0x319edf,null));};exports[_0xff60('0x53')]=function(_0x46070c,_0x1af50a,_0x303c4a){if(_0x46070c['body']['id']){delete _0x46070c[_0xff60('0x4f')]['id'];}return db[_0xff60('0x31')][_0xff60('0x54')]({'where':{'id':_0x46070c[_0xff60('0x50')]['id']}})['then'](handleEntityNotFound(_0x1af50a,null))[_0xff60('0x2b')](function(_0x1ea5fa){if(_0x1ea5fa){_0x46070c[_0xff60('0x4f')][_0xff60('0x55')]=_0x1ea5fa['id'];_0x46070c[_0xff60('0x4f')][_0xff60('0x56')]=integrations[_0xff60('0x57')](_0x46070c[_0xff60('0x4f')]['channel'],_0x46070c[_0xff60('0x4f')][_0xff60('0x34')]);_0x46070c[_0xff60('0x4f')][_0xff60('0x58')]=integrations[_0xff60('0x59')](_0x46070c[_0xff60('0x4f')][_0xff60('0x5a')],_0x46070c['body']['type']);return db[_0xff60('0x52')][_0xff60('0x4e')](_0x46070c[_0xff60('0x4f')],{'include':[{'model':db[_0xff60('0x5b')],'as':'Subjects'},{'model':db['SalesforceField'],'as':_0xff60('0x58')}]});}return null;})[_0xff60('0x2b')](respondWithResult(_0x1af50a,null))[_0xff60('0x49')](handleError(_0x1af50a,null));};exports['getFields']=function(_0x31e8ca,_0x53c0cb,_0x5c1121){var _0x31e8a6;var _0xee9101='';var _0x3cdab2='Task';return db['SalesforceAccount'][_0xff60('0x54')]({'where':{'id':_0x31e8ca['params']['id']},'attributes':['id',_0xff60('0x5c'),'clientId','clientSecret','username',_0xff60('0x5d'),_0xff60('0x5e')]})[_0xff60('0x2b')](handleEntityNotFound(_0x53c0cb,null))[_0xff60('0x2b')](function(_0x3331e4){if(_0x3331e4){_0xee9101=_0x3331e4[_0xff60('0x5c')];var _0x3253c8=_0xee9101[_0xff60('0x5f')](-0x1);if(_0x3253c8==='/'){_0xee9101=_0xee9101[_0xff60('0x60')](0x0,_0xee9101[_0xff60('0x61')](_0x3253c8));}_0x31e8a6=new jsforce[(_0xff60('0x62'))]({'oauth2':{'loginUrl':_0xee9101,'clientId':_0x3331e4[_0xff60('0x63')],'clientSecret':_0x3331e4[_0xff60('0x64')]}});return _0x31e8a6['login'](_0x3331e4[_0xff60('0x65')],_0x3331e4[_0xff60('0x5d')][_0xff60('0x66')](_0x3331e4['securityToken']));}})['then'](function(_0x248dbe){if(_0x248dbe){if(!_['isNil'](_0x31e8ca[_0xff60('0x37')][_0xff60('0x67')])){_0x3cdab2=_0x31e8ca['query'][_0xff60('0x67')];}return _0x31e8a6[_0xff60('0x68')](_0x3cdab2)[_0xff60('0x69')]();}})[_0xff60('0x2b')](function(_0x2ab8bb){var _0x1e6908=[_0xff60('0x6a'),_0xff60('0x6b'),_0xff60('0x6c'),_0xff60('0x6d'),_0xff60('0x6e'),_0xff60('0x6f')];var _0x1fc494=[_0xff60('0x70'),_0xff60('0x71'),_0xff60('0x72'),_0xff60('0x73'),_0xff60('0x74'),_0xff60('0x75'),_0xff60('0x76')];if(_0x2ab8bb){_[_0xff60('0x77')](_0x2ab8bb[_0xff60('0x3b')],function(_0x336c19){return _0x1e6908[_0xff60('0x78')](_0x336c19[_0xff60('0x2e')])||!_0x1fc494[_0xff60('0x78')](_0x336c19[_0xff60('0x34')]);});return{'count':_0x2ab8bb[_0xff60('0x3b')][_0xff60('0x4b')],'rows':_[_0xff60('0x30')](_0x2ab8bb[_0xff60('0x3b')],function(_0x219774){return{'id':_0x219774['name'],'name':_0x219774[_0xff60('0x79')],'custom':_0x219774[_0xff60('0x7a')],'options':_0x219774['picklistValues'][_0xff60('0x4b')]>0x0?_[_0xff60('0x30')](_0x219774['picklistValues'],function(_0x121984){return{'name':_0x121984[_0xff60('0x79')],'value':_0x121984[_0xff60('0x7b')]};}):_0x219774[_0xff60('0x34')]==_0xff60('0x73')?[{'name':'True','value':_0xff60('0x7c')},{'name':_0xff60('0x7d'),'value':_0xff60('0x7e')}]:[]};})};}})[_0xff60('0x2b')](respondWithResult(_0x53c0cb,null))['catch'](function(_0xe6893b){var _0x7443f8=_0x31e8ca[_0xff60('0x37')][_0xff60('0x7f')]?0x1f4:_0xe6893b['statusCode']||0x1f4;logger[_0xff60('0x2c')](_0xff60('0x80'),_0xff60('0x81'),_0x7443f8,JSON[_0xff60('0x82')](_0xe6893b));delete _0xe6893b[_0xff60('0x2e')];if(_0x7443f8===0x191){_0x7443f8=0x190;}_0x53c0cb['status'](_0x7443f8)[_0xff60('0x2f')](_0x31e8ca[_0xff60('0x37')]['test']?{'message':'Wrong\x20credentials','statusCode':_0xe6893b[_0xff60('0x83')]}:_0xe6893b);});};
\ No newline at end of file
index 15a19ee..8724a35 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2746=['exports','define','SalesforceAccount','int_salesforce_accounts','../../config/logger','api','moment','bluebird','request-promise','path','./intSalesforceAccount.attributes','../../components/integrations/configuration'];(function(_0x2d0f29,_0x9c8f1b){var _0x30d0df=function(_0x48d52e){while(--_0x48d52e){_0x2d0f29['push'](_0x2d0f29['shift']());}};_0x30d0df(++_0x9c8f1b);}(_0x2746,0x19c));var _0x6274=function(_0x354136,_0xf63e85){_0x354136=_0x354136-0x0;var _0x3ce09b=_0x2746[_0x354136];return _0x3ce09b;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x6274('0x0'))(_0x6274('0x1'));var moment=require(_0x6274('0x2'));var BPromise=require(_0x6274('0x3'));var rp=require(_0x6274('0x4'));var fs=require('fs');var path=require(_0x6274('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x6274('0x6'));var integrations=require(_0x6274('0x7'));module[_0x6274('0x8')]=function(_0x534aee,_0x1d22fb){return _0x534aee[_0x6274('0x9')](_0x6274('0xa'),attributes,{'tableName':_0x6274('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc99a=['exports','define','SalesforceAccount','int_salesforce_accounts','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./intSalesforceAccount.attributes','../../components/integrations/configuration'];(function(_0x5f5495,_0x30d087){var _0x14d8a3=function(_0x40e773){while(--_0x40e773){_0x5f5495['push'](_0x5f5495['shift']());}};_0x14d8a3(++_0x30d087);}(_0xc99a,0x7c));var _0xac99=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc99a[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xac99('0x0'));var util=require(_0xac99('0x1'));var logger=require(_0xac99('0x2'))(_0xac99('0x3'));var moment=require(_0xac99('0x4'));var BPromise=require(_0xac99('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xac99('0x6'));var rimraf=require(_0xac99('0x7'));var config=require(_0xac99('0x8'));var attributes=require(_0xac99('0x9'));var integrations=require(_0xac99('0xa'));module[_0xac99('0xb')]=function(_0x1a9116,_0x4594ec){return _0x1a9116[_0xac99('0xc')](_0xac99('0xd'),attributes,{'tableName':_0xac99('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e98eb21..0c6f338 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf952=['raw','where','attributes','limit','include','map','model','ShowSalesforceAccount','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','request\x20sent','debug','SalesforceAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','SalesforceAccount,\x20%s,\x20%s','message','catch','GetSalesforceAccount','SalesforceAccount','options'];(function(_0x51bda1,_0x44f80d){var _0x1ce08c=function(_0x5b788e){while(--_0x5b788e){_0x51bda1['push'](_0x51bda1['shift']());}};_0x1ce08c(++_0x44f80d);}(_0xf952,0x173));var _0x2f95=function(_0x5affdd,_0x4187a0){_0x5affdd=_0x5affdd-0x0;var _0x394ad2=_0xf952[_0x5affdd];return _0x394ad2;};'use strict';var _=require('lodash');var util=require(_0x2f95('0x0'));var moment=require('moment');var BPromise=require(_0x2f95('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2f95('0x2'));var db=require(_0x2f95('0x3'))['db'];var utils=require(_0x2f95('0x4'));var logger=require(_0x2f95('0x5'))(_0x2f95('0x6'));var config=require(_0x2f95('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x2f95('0x8')][_0x2f95('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3f8e68,_0x33762d,_0x5bbd9c){return new BPromise(function(_0x233ae1,_0x3eaf08){return client[_0x2f95('0xa')](_0x3f8e68,_0x5bbd9c)[_0x2f95('0xb')](function(_0x1183ad){logger[_0x2f95('0xc')]('SalesforceAccount,\x20%s,\x20%s',_0x33762d,_0x2f95('0xd'));logger[_0x2f95('0xe')](_0x2f95('0xf'),_0x33762d,_0x2f95('0xd'),JSON[_0x2f95('0x10')](_0x1183ad));if(_0x1183ad[_0x2f95('0x11')]){if(_0x1183ad['error'][_0x2f95('0x12')]===0x1f4){logger[_0x2f95('0x11')](_0x2f95('0x13'),_0x33762d,_0x1183ad['error']['message']);return _0x3eaf08(_0x1183ad['error'][_0x2f95('0x14')]);}logger[_0x2f95('0x11')]('SalesforceAccount,\x20%s,\x20%s',_0x33762d,_0x1183ad[_0x2f95('0x11')][_0x2f95('0x14')]);return _0x233ae1(_0x1183ad['error'][_0x2f95('0x14')]);}else{logger[_0x2f95('0xc')](_0x2f95('0x13'),_0x33762d,_0x2f95('0xd'));_0x233ae1(_0x1183ad['result']['message']);}})[_0x2f95('0x15')](function(_0x2466cb){logger[_0x2f95('0x11')](_0x2f95('0x13'),_0x33762d,_0x2466cb);_0x3eaf08(_0x2466cb);});});}exports[_0x2f95('0x16')]=function(_0xdf77ae){var _0x1af5e8=this;return new Promise(function(_0x2439fe,_0x451286){return db[_0x2f95('0x17')]['findAll']({'raw':_0xdf77ae[_0x2f95('0x18')]?_0xdf77ae[_0x2f95('0x18')][_0x2f95('0x19')]===undefined?!![]:![]:!![],'where':_0xdf77ae[_0x2f95('0x18')]?_0xdf77ae['options'][_0x2f95('0x1a')]||null:null,'attributes':_0xdf77ae[_0x2f95('0x18')]?_0xdf77ae[_0x2f95('0x18')][_0x2f95('0x1b')]||null:null,'limit':_0xdf77ae['options']?_0xdf77ae[_0x2f95('0x18')][_0x2f95('0x1c')]||null:null,'include':_0xdf77ae[_0x2f95('0x18')]?_0xdf77ae[_0x2f95('0x18')][_0x2f95('0x1d')]?_[_0x2f95('0x1e')](_0xdf77ae[_0x2f95('0x18')][_0x2f95('0x1d')],function(_0x3ce790){return{'model':db[_0x3ce790[_0x2f95('0x1f')]],'as':_0x3ce790['as'],'attributes':_0x3ce790['attributes'],'include':_0x3ce790['include']?_['map'](_0x3ce790['include'],function(_0x613593){return{'model':db[_0x613593['model']],'as':_0x613593['as'],'attributes':_0x613593[_0x2f95('0x1b')],'include':_0x613593[_0x2f95('0x1d')]?_[_0x2f95('0x1e')](_0x613593['include'],function(_0x39150f){return{'model':db[_0x39150f[_0x2f95('0x1f')]],'as':_0x39150f['as'],'attributes':_0x39150f[_0x2f95('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1378ad){logger['info']('GetSalesforceAccount',_0xdf77ae);logger[_0x2f95('0xe')](_0x2f95('0x16'),_0xdf77ae,JSON[_0x2f95('0x10')](_0x1378ad));_0x2439fe(_0x1378ad);})[_0x2f95('0x15')](function(_0x5954a5){logger[_0x2f95('0x11')](_0x2f95('0x16'),_0x5954a5['message'],_0xdf77ae);_0x451286(_0x1af5e8[_0x2f95('0x11')](0x1f4,_0x5954a5[_0x2f95('0x14')]));});});};exports[_0x2f95('0x20')]=function(_0x274ae5){var _0x3660b4=this;return new Promise(function(_0x3d0118,_0x29cccd){return db[_0x2f95('0x17')]['find']({'raw':_0x274ae5[_0x2f95('0x18')]?_0x274ae5[_0x2f95('0x18')][_0x2f95('0x19')]===undefined?!![]:![]:!![],'where':_0x274ae5['options']?_0x274ae5[_0x2f95('0x18')][_0x2f95('0x1a')]||null:null,'attributes':_0x274ae5[_0x2f95('0x18')]?_0x274ae5[_0x2f95('0x18')][_0x2f95('0x1b')]||null:null,'include':_0x274ae5[_0x2f95('0x18')]?_0x274ae5[_0x2f95('0x18')][_0x2f95('0x1d')]?_[_0x2f95('0x1e')](_0x274ae5['options'][_0x2f95('0x1d')],function(_0x32e414){return{'model':db[_0x32e414['model']],'as':_0x32e414['as'],'attributes':_0x32e414[_0x2f95('0x1b')],'include':_0x32e414[_0x2f95('0x1d')]?_[_0x2f95('0x1e')](_0x32e414[_0x2f95('0x1d')],function(_0x53c3ec){return{'model':db[_0x53c3ec[_0x2f95('0x1f')]],'as':_0x53c3ec['as'],'attributes':_0x53c3ec['attributes'],'include':_0x53c3ec[_0x2f95('0x1d')]?_[_0x2f95('0x1e')](_0x53c3ec[_0x2f95('0x1d')],function(_0x24b83b){return{'model':db[_0x24b83b[_0x2f95('0x1f')]],'as':_0x24b83b['as'],'attributes':_0x24b83b['attributes']};}):[]};}):[]};}):[]:[]})[_0x2f95('0xb')](function(_0x2d7c6e){logger[_0x2f95('0xc')](_0x2f95('0x20'),_0x274ae5);logger[_0x2f95('0xe')](_0x2f95('0x20'),_0x274ae5,JSON['stringify'](_0x2d7c6e));_0x3d0118(_0x2d7c6e);})[_0x2f95('0x15')](function(_0x5305d0){logger[_0x2f95('0x11')](_0x2f95('0x20'),_0x5305d0[_0x2f95('0x14')],_0x274ae5);_0x29cccd(_0x3660b4[_0x2f95('0x11')](0x1f4,_0x5305d0[_0x2f95('0x14')]));});});};
\ No newline at end of file
+var _0x3f5a=['limit','include','model','ShowSalesforceAccount','find','map','debug','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','then','request\x20sent','SalesforceAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','SalesforceAccount,\x20%s,\x20%s','message','info','catch','GetSalesforceAccount','SalesforceAccount','findAll','options','where','attributes'];(function(_0x131a3f,_0x2b9dd4){var _0xb66809=function(_0x2c0c6c){while(--_0x2c0c6c){_0x131a3f['push'](_0x131a3f['shift']());}};_0xb66809(++_0x2b9dd4);}(_0x3f5a,0x142));var _0xa3f5=function(_0x24061a,_0x1c9f4d){_0x24061a=_0x24061a-0x0;var _0x82054e=_0x3f5a[_0x24061a];return _0x82054e;};'use strict';var _=require(_0xa3f5('0x0'));var util=require(_0xa3f5('0x1'));var moment=require(_0xa3f5('0x2'));var BPromise=require(_0xa3f5('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa3f5('0x4'));var db=require(_0xa3f5('0x5'))['db'];var utils=require(_0xa3f5('0x6'));var logger=require('../../config/logger')(_0xa3f5('0x7'));var config=require(_0xa3f5('0x8'));var jayson=require(_0xa3f5('0x9'));var client=jayson[_0xa3f5('0xa')][_0xa3f5('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x51eec1,_0x17bb18,_0x5bd513){return new BPromise(function(_0x4ab871,_0x4e96d9){return client['request'](_0x51eec1,_0x5bd513)[_0xa3f5('0xc')](function(_0x100d6d){logger['info']('SalesforceAccount,\x20%s,\x20%s',_0x17bb18,_0xa3f5('0xd'));logger['debug'](_0xa3f5('0xe'),_0x17bb18,'request\x20sent',JSON[_0xa3f5('0xf')](_0x100d6d));if(_0x100d6d[_0xa3f5('0x10')]){if(_0x100d6d[_0xa3f5('0x10')][_0xa3f5('0x11')]===0x1f4){logger['error'](_0xa3f5('0x12'),_0x17bb18,_0x100d6d['error']['message']);return _0x4e96d9(_0x100d6d[_0xa3f5('0x10')][_0xa3f5('0x13')]);}logger[_0xa3f5('0x10')](_0xa3f5('0x12'),_0x17bb18,_0x100d6d[_0xa3f5('0x10')][_0xa3f5('0x13')]);return _0x4ab871(_0x100d6d['error']['message']);}else{logger[_0xa3f5('0x14')](_0xa3f5('0x12'),_0x17bb18,'request\x20sent');_0x4ab871(_0x100d6d['result'][_0xa3f5('0x13')]);}})[_0xa3f5('0x15')](function(_0x506ba0){logger[_0xa3f5('0x10')](_0xa3f5('0x12'),_0x17bb18,_0x506ba0);_0x4e96d9(_0x506ba0);});});}exports[_0xa3f5('0x16')]=function(_0xfe183d){var _0x436674=this;return new Promise(function(_0x1442aa,_0x379182){return db[_0xa3f5('0x17')][_0xa3f5('0x18')]({'raw':_0xfe183d[_0xa3f5('0x19')]?_0xfe183d['options']['raw']===undefined?!![]:![]:!![],'where':_0xfe183d[_0xa3f5('0x19')]?_0xfe183d['options'][_0xa3f5('0x1a')]||null:null,'attributes':_0xfe183d[_0xa3f5('0x19')]?_0xfe183d[_0xa3f5('0x19')][_0xa3f5('0x1b')]||null:null,'limit':_0xfe183d[_0xa3f5('0x19')]?_0xfe183d[_0xa3f5('0x19')][_0xa3f5('0x1c')]||null:null,'include':_0xfe183d[_0xa3f5('0x19')]?_0xfe183d[_0xa3f5('0x19')]['include']?_['map'](_0xfe183d[_0xa3f5('0x19')][_0xa3f5('0x1d')],function(_0x13a74e){return{'model':db[_0x13a74e[_0xa3f5('0x1e')]],'as':_0x13a74e['as'],'attributes':_0x13a74e[_0xa3f5('0x1b')],'include':_0x13a74e[_0xa3f5('0x1d')]?_['map'](_0x13a74e[_0xa3f5('0x1d')],function(_0x3a5cde){return{'model':db[_0x3a5cde['model']],'as':_0x3a5cde['as'],'attributes':_0x3a5cde['attributes'],'include':_0x3a5cde['include']?_['map'](_0x3a5cde[_0xa3f5('0x1d')],function(_0x50b246){return{'model':db[_0x50b246['model']],'as':_0x50b246['as'],'attributes':_0x50b246[_0xa3f5('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xa3f5('0xc')](function(_0xe2ec74){logger[_0xa3f5('0x14')](_0xa3f5('0x16'),_0xfe183d);logger['debug'](_0xa3f5('0x16'),_0xfe183d,JSON['stringify'](_0xe2ec74));_0x1442aa(_0xe2ec74);})['catch'](function(_0x2d2385){logger[_0xa3f5('0x10')](_0xa3f5('0x16'),_0x2d2385[_0xa3f5('0x13')],_0xfe183d);_0x379182(_0x436674[_0xa3f5('0x10')](0x1f4,_0x2d2385[_0xa3f5('0x13')]));});});};exports[_0xa3f5('0x1f')]=function(_0x1b233e){var _0x510da2=this;return new Promise(function(_0x27fc54,_0x1b8447){return db[_0xa3f5('0x17')][_0xa3f5('0x20')]({'raw':_0x1b233e[_0xa3f5('0x19')]?_0x1b233e[_0xa3f5('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x1b233e['options']?_0x1b233e[_0xa3f5('0x19')][_0xa3f5('0x1a')]||null:null,'attributes':_0x1b233e['options']?_0x1b233e[_0xa3f5('0x19')][_0xa3f5('0x1b')]||null:null,'include':_0x1b233e[_0xa3f5('0x19')]?_0x1b233e[_0xa3f5('0x19')][_0xa3f5('0x1d')]?_[_0xa3f5('0x21')](_0x1b233e[_0xa3f5('0x19')][_0xa3f5('0x1d')],function(_0x2aadc2){return{'model':db[_0x2aadc2[_0xa3f5('0x1e')]],'as':_0x2aadc2['as'],'attributes':_0x2aadc2[_0xa3f5('0x1b')],'include':_0x2aadc2['include']?_[_0xa3f5('0x21')](_0x2aadc2[_0xa3f5('0x1d')],function(_0x27c76d){return{'model':db[_0x27c76d[_0xa3f5('0x1e')]],'as':_0x27c76d['as'],'attributes':_0x27c76d[_0xa3f5('0x1b')],'include':_0x27c76d[_0xa3f5('0x1d')]?_[_0xa3f5('0x21')](_0x27c76d[_0xa3f5('0x1d')],function(_0x2a4370){return{'model':db[_0x2a4370[_0xa3f5('0x1e')]],'as':_0x2a4370['as'],'attributes':_0x2a4370[_0xa3f5('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xa3f5('0xc')](function(_0x5d5a49){logger[_0xa3f5('0x14')]('ShowSalesforceAccount',_0x1b233e);logger[_0xa3f5('0x22')](_0xa3f5('0x1f'),_0x1b233e,JSON[_0xa3f5('0xf')](_0x5d5a49));_0x27fc54(_0x5d5a49);})['catch'](function(_0x1e3ff7){logger[_0xa3f5('0x10')](_0xa3f5('0x1f'),_0x1e3ff7['message'],_0x1b233e);_0x1b8447(_0x510da2[_0xa3f5('0x10')](0x1f4,_0x1e3ff7[_0xa3f5('0x13')]));});});};
\ No newline at end of file
index 0552552..9e736f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb28=['path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','post','create','put','delete','destroy','exports','multer','util'];(function(_0x13b8f3,_0x442821){var _0x1a6d06=function(_0x5126f2){while(--_0x5126f2){_0x13b8f3['push'](_0x13b8f3['shift']());}};_0x1a6d06(++_0x442821);}(_0xdb28,0x106));var _0x8db2=function(_0x41e19b,_0x171f8c){_0x41e19b=_0x41e19b-0x0;var _0x468b47=_0xdb28[_0x41e19b];return _0x468b47;};'use strict';var multer=require(_0x8db2('0x0'));var util=require(_0x8db2('0x1'));var path=require(_0x8db2('0x2'));var timeout=require(_0x8db2('0x3'));var express=require('express');var router=express[_0x8db2('0x4')]();var fs_extra=require(_0x8db2('0x5'));var auth=require(_0x8db2('0x6'));var interaction=require(_0x8db2('0x7'));var config=require(_0x8db2('0x8'));var controller=require('./intSalesforceConfiguration.controller');router[_0x8db2('0x9')]('/',auth[_0x8db2('0xa')](),controller['index']);router['get'](_0x8db2('0xb'),auth[_0x8db2('0xa')](),controller[_0x8db2('0xc')]);router[_0x8db2('0x9')](_0x8db2('0xd'),auth[_0x8db2('0xa')](),controller[_0x8db2('0xe')]);router['get'](_0x8db2('0xf'),auth[_0x8db2('0xa')](),controller[_0x8db2('0x10')]);router['get'](_0x8db2('0x11'),auth[_0x8db2('0xa')](),controller['getDescriptions']);router[_0x8db2('0x12')]('/',auth[_0x8db2('0xa')](),controller[_0x8db2('0x13')]);router[_0x8db2('0x14')](_0x8db2('0xb'),auth['isAuthenticated'](),controller['update']);router[_0x8db2('0x15')](_0x8db2('0xb'),auth[_0x8db2('0xa')](),controller[_0x8db2('0x16')]);module[_0x8db2('0x17')]=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(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x2032,0xd9));var _0x2203=function(_0x1179ab,_0x18fd1d){_0x1179ab=_0x1179ab-0x0;var _0x16c426=_0x2032[_0x1179ab];return _0x16c426;};'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 4548037..6a67826 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55c7=['ENUM','Task','Case','contact','account_contact_lead','account','contact_lead','nothing','lead','exports','STRING'];(function(_0x5a10d5,_0x10a3a5){var _0x12ec3b=function(_0x393907){while(--_0x393907){_0x5a10d5['push'](_0x5a10d5['shift']());}};_0x12ec3b(++_0x10a3a5);}(_0x55c7,0x127));var _0x755c=function(_0xf6fc68,_0x359662){_0xf6fc68=_0xf6fc68-0x0;var _0x59fb82=_0x55c7[_0xf6fc68];return _0x59fb82;};'use strict';var Sequelize=require('sequelize');module[_0x755c('0x0')]={'name':{'type':Sequelize[_0x755c('0x1')]},'description':{'type':Sequelize[_0x755c('0x1')]},'ticketType':{'type':Sequelize[_0x755c('0x2')](_0x755c('0x3'),_0x755c('0x4')),'defaultValue':'Task'},'moduleSearch':{'type':Sequelize[_0x755c('0x2')]('contact_lead',_0x755c('0x5'),'lead',_0x755c('0x6'),_0x755c('0x7')),'defaultValue':_0x755c('0x8')},'moduleCreate':{'type':Sequelize['ENUM'](_0x755c('0x9'),_0x755c('0x5'),'lead','account'),'defaultValue':_0x755c('0xa')},'leadId':{'type':Sequelize['STRING']},'additionalSearchAccount':{'type':Sequelize[_0x755c('0x1')]},'additionalSearchContact':{'type':Sequelize[_0x755c('0x1')]},'additionalSearchLead':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xdd8f=['Task','Case','contact','lead','account_contact_lead','account','nothing','exports','STRING','ENUM'];(function(_0x5438a2,_0x3ada34){var _0x4ffb18=function(_0x1fe043){while(--_0x1fe043){_0x5438a2['push'](_0x5438a2['shift']());}};_0x4ffb18(++_0x3ada34);}(_0xdd8f,0x6b));var _0xfdd8=function(_0x16dae0,_0x31f6cd){_0x16dae0=_0x16dae0-0x0;var _0x10460c=_0xdd8f[_0x16dae0];return _0x10460c;};'use strict';var Sequelize=require('sequelize');module[_0xfdd8('0x0')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xfdd8('0x1')]},'ticketType':{'type':Sequelize[_0xfdd8('0x2')](_0xfdd8('0x3'),_0xfdd8('0x4')),'defaultValue':_0xfdd8('0x3')},'moduleSearch':{'type':Sequelize[_0xfdd8('0x2')]('contact_lead',_0xfdd8('0x5'),_0xfdd8('0x6'),_0xfdd8('0x7'),_0xfdd8('0x8')),'defaultValue':'contact_lead'},'moduleCreate':{'type':Sequelize[_0xfdd8('0x2')](_0xfdd8('0x9'),_0xfdd8('0x5'),_0xfdd8('0x6'),'account'),'defaultValue':_0xfdd8('0x6')},'leadId':{'type':Sequelize[_0xfdd8('0x1')]},'additionalSearchAccount':{'type':Sequelize[_0xfdd8('0x1')]},'additionalSearchContact':{'type':Sequelize['STRING']},'additionalSearchLead':{'type':Sequelize['STRING']}};
\ No newline at end of file
index c87ca6f..45e7280 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc813=['body','getFields','findOne','intersection','getSubjects','SalesforceField','getDescriptions','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','name','index','map','SalesforceConfiguration','rawAttributes','fieldName','type','key','model','keys','filters','query','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','catch','params','fields','find','create'];(function(_0x1e3195,_0x2d8492){var _0x1b75d0=function(_0x52d368){while(--_0x52d368){_0x1e3195['push'](_0x1e3195['shift']());}};_0x1b75d0(++_0x2d8492);}(_0xc813,0x1db));var _0x3c81=function(_0x51b10b,_0x311567){_0x51b10b=_0x51b10b-0x0;var _0x45b2cf=_0xc813[_0x51b10b];return _0x45b2cf;};'use strict';var emlformat=require(_0x3c81('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x3c81('0x1'));var jsonpatch=require(_0x3c81('0x2'));var rp=require(_0x3c81('0x3'));var moment=require(_0x3c81('0x4'));var BPromise=require(_0x3c81('0x5'));var Mustache=require(_0x3c81('0x6'));var util=require(_0x3c81('0x7'));var path=require(_0x3c81('0x8'));var sox=require(_0x3c81('0x9'));var csv=require(_0x3c81('0xa'));var ejs=require(_0x3c81('0xb'));var fs=require('fs');var fs_extra=require(_0x3c81('0xc'));var _=require('lodash');var squel=require(_0x3c81('0xd'));var crypto=require('crypto');var jsforce=require(_0x3c81('0xe'));var deskjs=require(_0x3c81('0xf'));var toCsv=require(_0x3c81('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x3c81('0x10'));var authService=require(_0x3c81('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x3c81('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x3c81('0x13'))(_0x3c81('0x14'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x3c81('0x15'));var db=require(_0x3c81('0x16'))['db'];function respondWithStatusCode(_0x39613e,_0x2c61ae){_0x2c61ae=_0x2c61ae||0xcc;return function(_0x51887a){if(_0x51887a){return _0x39613e[_0x3c81('0x17')](_0x2c61ae);}return _0x39613e[_0x3c81('0x18')](_0x2c61ae)[_0x3c81('0x19')]();};}function respondWithResult(_0x53aaec,_0x2e8993){_0x2e8993=_0x2e8993||0xc8;return function(_0x1113a8){if(_0x1113a8){return _0x53aaec[_0x3c81('0x18')](_0x2e8993)[_0x3c81('0x1a')](_0x1113a8);}};}function respondWithFilteredResult(_0x2af43f,_0xd045ab){return function(_0x4d3d04){if(_0x4d3d04){var _0x2cbbb2=typeof _0xd045ab[_0x3c81('0x1b')]===_0x3c81('0x1c')&&typeof _0xd045ab[_0x3c81('0x1d')]===_0x3c81('0x1c');var _0x143ed0=_0x4d3d04[_0x3c81('0x1e')];var _0x355805=_0x2cbbb2?0x0:_0xd045ab[_0x3c81('0x1b')];var _0x18fa6c=_0x2cbbb2?_0x4d3d04['count']:_0xd045ab[_0x3c81('0x1b')]+_0xd045ab['limit'];var _0xa0c16b;if(_0x18fa6c>=_0x143ed0){_0x18fa6c=_0x143ed0;_0xa0c16b=0xc8;}else{_0xa0c16b=0xce;}_0x2af43f[_0x3c81('0x18')](_0xa0c16b);return _0x2af43f[_0x3c81('0x1f')](_0x3c81('0x20'),_0x355805+'-'+_0x18fa6c+'/'+_0x143ed0)[_0x3c81('0x1a')](_0x4d3d04);}return null;};}function patchUpdates(_0x33c450){return function(_0x4f2c67){try{jsonpatch[_0x3c81('0x21')](_0x4f2c67,_0x33c450,!![]);}catch(_0x1cb471){return BPromise[_0x3c81('0x22')](_0x1cb471);}return _0x4f2c67[_0x3c81('0x23')]();};}function saveUpdates(_0x3f1e87,_0x1f5933){return function(_0x47fbff){if(_0x47fbff){return _0x47fbff[_0x3c81('0x24')](_0x3f1e87)[_0x3c81('0x25')](function(_0x3c3987){return _0x3c3987;});}return null;};}function removeEntity(_0x1ea3ef,_0x53ce15){return function(_0x52d7e3){if(_0x52d7e3){return _0x52d7e3[_0x3c81('0x26')]()[_0x3c81('0x25')](function(){_0x1ea3ef[_0x3c81('0x18')](0xcc)[_0x3c81('0x19')]();});}};}function handleEntityNotFound(_0x5d2773,_0xff1a39){return function(_0x22d7ed){if(!_0x22d7ed){_0x5d2773['sendStatus'](0x194);}return _0x22d7ed;};}function handleError(_0x43642e,_0x3375e7){_0x3375e7=_0x3375e7||0x1f4;return function(_0x1a4dd9){logger[_0x3c81('0x27')](_0x1a4dd9['stack']);if(_0x1a4dd9[_0x3c81('0x28')]){delete _0x1a4dd9[_0x3c81('0x28')];}_0x43642e[_0x3c81('0x18')](_0x3375e7)['send'](_0x1a4dd9);};}exports[_0x3c81('0x29')]=function(_0x553054,_0xaba94d){var _0x37da24={},_0x3bc617={},_0x4745a4={'count':0x0,'rows':[]};var _0x404757=_[_0x3c81('0x2a')](db[_0x3c81('0x2b')][_0x3c81('0x2c')],function(_0x532b4a){return{'name':_0x532b4a[_0x3c81('0x2d')],'type':_0x532b4a[_0x3c81('0x2e')][_0x3c81('0x2f')]};});_0x3bc617[_0x3c81('0x30')]=_['map'](_0x404757,_0x3c81('0x28'));_0x3bc617['query']=_[_0x3c81('0x31')](_0x553054['query']);_0x3bc617[_0x3c81('0x32')]=_['intersection'](_0x3bc617[_0x3c81('0x30')],_0x3bc617['query']);_0x37da24['attributes']=_['intersection'](_0x3bc617[_0x3c81('0x30')],qs['fields'](_0x553054[_0x3c81('0x33')]['fields']));_0x37da24[_0x3c81('0x34')]=_0x37da24[_0x3c81('0x34')][_0x3c81('0x35')]?_0x37da24['attributes']:_0x3bc617[_0x3c81('0x30')];if(!_0x553054[_0x3c81('0x33')][_0x3c81('0x36')](_0x3c81('0x37'))){_0x37da24['limit']=qs[_0x3c81('0x1d')](_0x553054[_0x3c81('0x33')][_0x3c81('0x1d')]);_0x37da24[_0x3c81('0x1b')]=qs[_0x3c81('0x1b')](_0x553054['query'][_0x3c81('0x1b')]);}_0x37da24[_0x3c81('0x38')]=qs[_0x3c81('0x39')](_0x553054[_0x3c81('0x33')][_0x3c81('0x39')]);_0x37da24[_0x3c81('0x3a')]=qs[_0x3c81('0x32')](_[_0x3c81('0x3b')](_0x553054[_0x3c81('0x33')],_0x3bc617[_0x3c81('0x32')]),_0x404757);if(_0x553054['query'][_0x3c81('0x3c')]){_0x37da24[_0x3c81('0x3a')]=_[_0x3c81('0x3d')](_0x37da24[_0x3c81('0x3a')],{'$or':_['map'](_0x404757,function(_0x37a487){if(_0x37a487[_0x3c81('0x2e')]!==_0x3c81('0x3e')){var _0x11eec9={};_0x11eec9[_0x37a487[_0x3c81('0x28')]]={'$like':'%'+_0x553054[_0x3c81('0x33')][_0x3c81('0x3c')]+'%'};return _0x11eec9;}})});}_0x37da24=_['merge']({},_0x37da24,_0x553054[_0x3c81('0x3f')]);var _0x1e5ae1={'where':_0x37da24[_0x3c81('0x3a')]};return db[_0x3c81('0x2b')]['count'](_0x1e5ae1)[_0x3c81('0x25')](function(_0x159e5d){_0x4745a4['count']=_0x159e5d;if(_0x553054[_0x3c81('0x33')][_0x3c81('0x40')]){_0x37da24['include']=[{'all':!![]}];}return db['SalesforceConfiguration'][_0x3c81('0x41')](_0x37da24);})[_0x3c81('0x25')](function(_0x5465ff){_0x4745a4['rows']=_0x5465ff;return _0x4745a4;})[_0x3c81('0x25')](respondWithFilteredResult(_0xaba94d,_0x37da24))[_0x3c81('0x42')](handleError(_0xaba94d,null));};exports['show']=function(_0x5440ed,_0x57a3c6){var _0x2fa355={'raw':![],'where':{'id':_0x5440ed[_0x3c81('0x43')]['id']}},_0x570fba={};_0x570fba[_0x3c81('0x30')]=_[_0x3c81('0x31')](db['SalesforceConfiguration']['rawAttributes']);_0x570fba['query']=_['keys'](_0x5440ed[_0x3c81('0x33')]);_0x570fba[_0x3c81('0x32')]=_['intersection'](_0x570fba[_0x3c81('0x30')],_0x570fba[_0x3c81('0x33')]);_0x2fa355[_0x3c81('0x34')]=_['intersection'](_0x570fba[_0x3c81('0x30')],qs[_0x3c81('0x44')](_0x5440ed[_0x3c81('0x33')]['fields']));_0x2fa355[_0x3c81('0x34')]=_0x2fa355[_0x3c81('0x34')][_0x3c81('0x35')]?_0x2fa355['attributes']:_0x570fba[_0x3c81('0x30')];if(_0x5440ed[_0x3c81('0x33')][_0x3c81('0x40')]){_0x2fa355['include']=[{'all':!![]}];}_0x2fa355=_[_0x3c81('0x3d')]({},_0x2fa355,_0x5440ed[_0x3c81('0x3f')]);return db[_0x3c81('0x2b')][_0x3c81('0x45')](_0x2fa355)[_0x3c81('0x25')](handleEntityNotFound(_0x57a3c6,null))[_0x3c81('0x25')](respondWithResult(_0x57a3c6,null))[_0x3c81('0x42')](handleError(_0x57a3c6,null));};exports[_0x3c81('0x46')]=function(_0x4543d5,_0x434661){return db[_0x3c81('0x2b')][_0x3c81('0x46')](_0x4543d5[_0x3c81('0x47')],{})[_0x3c81('0x25')](respondWithResult(_0x434661,0xc9))[_0x3c81('0x42')](handleError(_0x434661,null));};exports[_0x3c81('0x24')]=function(_0x130289,_0x235568){if(_0x130289[_0x3c81('0x47')]['id']){delete _0x130289['body']['id'];}return db['SalesforceConfiguration']['find']({'where':{'id':_0x130289[_0x3c81('0x43')]['id']}})[_0x3c81('0x25')](handleEntityNotFound(_0x235568,null))[_0x3c81('0x25')](saveUpdates(_0x130289['body'],null))['then'](respondWithResult(_0x235568,null))[_0x3c81('0x42')](handleError(_0x235568,null));};exports[_0x3c81('0x26')]=function(_0x5877d6,_0x40c572){return db['SalesforceConfiguration'][_0x3c81('0x45')]({'where':{'id':_0x5877d6[_0x3c81('0x43')]['id']}})[_0x3c81('0x25')](handleEntityNotFound(_0x40c572,null))[_0x3c81('0x25')](removeEntity(_0x40c572,null))[_0x3c81('0x42')](handleError(_0x40c572,null));};exports[_0x3c81('0x48')]=function(_0x21edbe,_0x52d2fb,_0x139dc2){var _0x271c01={};var _0x45f0ee={};var _0x1860d7;var _0xd08d7a;return db[_0x3c81('0x2b')][_0x3c81('0x49')]({'where':{'id':_0x21edbe[_0x3c81('0x43')]['id']}})['then'](handleEntityNotFound(_0x52d2fb,null))[_0x3c81('0x25')](function(_0xf90888){if(_0xf90888){_0x1860d7=_0xf90888;_0x45f0ee['model']=_[_0x3c81('0x31')](db['SalesforceField'][_0x3c81('0x2c')]);_0x45f0ee[_0x3c81('0x33')]=_[_0x3c81('0x31')](_0x21edbe[_0x3c81('0x33')]);_0x45f0ee[_0x3c81('0x32')]=_[_0x3c81('0x4a')](_0x45f0ee[_0x3c81('0x30')],_0x45f0ee['query']);_0x271c01[_0x3c81('0x34')]=_['intersection'](_0x45f0ee['model'],qs[_0x3c81('0x44')](_0x21edbe[_0x3c81('0x33')][_0x3c81('0x44')]));_0x271c01['attributes']=_0x271c01['attributes'][_0x3c81('0x35')]?_0x271c01[_0x3c81('0x34')]:_0x45f0ee[_0x3c81('0x30')];_0x271c01['order']=qs['sort'](_0x21edbe['query']['sort']);_0x271c01['where']=qs[_0x3c81('0x32')](_[_0x3c81('0x3b')](_0x21edbe[_0x3c81('0x33')],_0x45f0ee['filters']));if(_0x21edbe[_0x3c81('0x33')][_0x3c81('0x3c')]){_0x271c01['where']=_[_0x3c81('0x3d')](_0x271c01[_0x3c81('0x3a')],{'$or':_[_0x3c81('0x2a')](_0x271c01[_0x3c81('0x34')],function(_0x6bb6b2){var _0x191590={};_0x191590[_0x6bb6b2]={'$like':'%'+_0x21edbe[_0x3c81('0x33')][_0x3c81('0x3c')]+'%'};return _0x191590;})});}_0x271c01=_[_0x3c81('0x3d')]({},_0x271c01,_0x21edbe[_0x3c81('0x3f')]);return _0x1860d7[_0x3c81('0x48')](_0x271c01);}})[_0x3c81('0x25')](function(_0x2d57ba){if(_0x2d57ba){_0xd08d7a=_0x2d57ba[_0x3c81('0x35')];if(!_0x21edbe[_0x3c81('0x33')][_0x3c81('0x36')](_0x3c81('0x37'))){_0x271c01['limit']=qs['limit'](_0x21edbe[_0x3c81('0x33')][_0x3c81('0x1d')]);_0x271c01[_0x3c81('0x1b')]=qs[_0x3c81('0x1b')](_0x21edbe[_0x3c81('0x33')][_0x3c81('0x1b')]);}return _0x1860d7[_0x3c81('0x48')](_0x271c01);}})[_0x3c81('0x25')](function(_0x16dcfd){if(_0x16dcfd){return _0x16dcfd?{'count':_0xd08d7a,'rows':_0x16dcfd}:null;}})[_0x3c81('0x25')](respondWithResult(_0x52d2fb,null))[_0x3c81('0x42')](handleError(_0x52d2fb,null));};exports[_0x3c81('0x4b')]=function(_0x36f88d,_0x23f84f,_0x12effc){var _0x2b52d7={};var _0x3c7304={};var _0x47ad80;var _0x53ef7e;return db[_0x3c81('0x2b')]['findOne']({'where':{'id':_0x36f88d[_0x3c81('0x43')]['id']}})['then'](handleEntityNotFound(_0x23f84f,null))[_0x3c81('0x25')](function(_0x29009c){if(_0x29009c){_0x47ad80=_0x29009c;_0x3c7304[_0x3c81('0x30')]=_[_0x3c81('0x31')](db['SalesforceField']['rawAttributes']);_0x3c7304[_0x3c81('0x33')]=_[_0x3c81('0x31')](_0x36f88d[_0x3c81('0x33')]);_0x3c7304['filters']=_[_0x3c81('0x4a')](_0x3c7304[_0x3c81('0x30')],_0x3c7304['query']);_0x2b52d7[_0x3c81('0x34')]=_['intersection'](_0x3c7304[_0x3c81('0x30')],qs[_0x3c81('0x44')](_0x36f88d[_0x3c81('0x33')][_0x3c81('0x44')]));_0x2b52d7[_0x3c81('0x34')]=_0x2b52d7[_0x3c81('0x34')][_0x3c81('0x35')]?_0x2b52d7[_0x3c81('0x34')]:_0x3c7304['model'];_0x2b52d7[_0x3c81('0x38')]=qs[_0x3c81('0x39')](_0x36f88d[_0x3c81('0x33')][_0x3c81('0x39')]);_0x2b52d7[_0x3c81('0x3a')]=qs[_0x3c81('0x32')](_[_0x3c81('0x3b')](_0x36f88d['query'],_0x3c7304[_0x3c81('0x32')]));if(_0x36f88d[_0x3c81('0x33')][_0x3c81('0x3c')]){_0x2b52d7[_0x3c81('0x3a')]=_[_0x3c81('0x3d')](_0x2b52d7[_0x3c81('0x3a')],{'$or':_[_0x3c81('0x2a')](_0x2b52d7[_0x3c81('0x34')],function(_0x535a28){var _0x38901c={};_0x38901c[_0x535a28]={'$like':'%'+_0x36f88d[_0x3c81('0x33')][_0x3c81('0x3c')]+'%'};return _0x38901c;})});}_0x2b52d7=_[_0x3c81('0x3d')]({},_0x2b52d7,_0x36f88d[_0x3c81('0x3f')]);return _0x47ad80[_0x3c81('0x4b')](_0x2b52d7);}})[_0x3c81('0x25')](function(_0x2da0cd){if(_0x2da0cd){_0x53ef7e=_0x2da0cd[_0x3c81('0x35')];if(!_0x36f88d[_0x3c81('0x33')][_0x3c81('0x36')](_0x3c81('0x37'))){_0x2b52d7['limit']=qs['limit'](_0x36f88d[_0x3c81('0x33')]['limit']);_0x2b52d7['offset']=qs[_0x3c81('0x1b')](_0x36f88d[_0x3c81('0x33')][_0x3c81('0x1b')]);}return _0x47ad80[_0x3c81('0x4b')](_0x2b52d7);}})[_0x3c81('0x25')](function(_0x1947ed){if(_0x1947ed){return _0x1947ed?{'count':_0x53ef7e,'rows':_0x1947ed}:null;}})[_0x3c81('0x25')](respondWithResult(_0x23f84f,null))[_0x3c81('0x42')](handleError(_0x23f84f,null));};exports['getDescriptions']=function(_0x19afcb,_0x4f4263,_0x58233b){var _0x53aed4={};var _0x23b425={};var _0x3e02bf;var _0x26a3c8;return db[_0x3c81('0x2b')][_0x3c81('0x49')]({'where':{'id':_0x19afcb[_0x3c81('0x43')]['id']}})[_0x3c81('0x25')](handleEntityNotFound(_0x4f4263,null))[_0x3c81('0x25')](function(_0x12f570){if(_0x12f570){_0x3e02bf=_0x12f570;_0x23b425[_0x3c81('0x30')]=_['keys'](db[_0x3c81('0x4c')][_0x3c81('0x2c')]);_0x23b425['query']=_[_0x3c81('0x31')](_0x19afcb[_0x3c81('0x33')]);_0x23b425['filters']=_[_0x3c81('0x4a')](_0x23b425[_0x3c81('0x30')],_0x23b425['query']);_0x53aed4[_0x3c81('0x34')]=_[_0x3c81('0x4a')](_0x23b425[_0x3c81('0x30')],qs[_0x3c81('0x44')](_0x19afcb[_0x3c81('0x33')]['fields']));_0x53aed4[_0x3c81('0x34')]=_0x53aed4[_0x3c81('0x34')][_0x3c81('0x35')]?_0x53aed4['attributes']:_0x23b425[_0x3c81('0x30')];_0x53aed4[_0x3c81('0x38')]=qs[_0x3c81('0x39')](_0x19afcb[_0x3c81('0x33')]['sort']);_0x53aed4['where']=qs['filters'](_[_0x3c81('0x3b')](_0x19afcb['query'],_0x23b425[_0x3c81('0x32')]));if(_0x19afcb[_0x3c81('0x33')]['filter']){_0x53aed4[_0x3c81('0x3a')]=_[_0x3c81('0x3d')](_0x53aed4[_0x3c81('0x3a')],{'$or':_[_0x3c81('0x2a')](_0x53aed4[_0x3c81('0x34')],function(_0x44085d){var _0x4b766d={};_0x4b766d[_0x44085d]={'$like':'%'+_0x19afcb[_0x3c81('0x33')][_0x3c81('0x3c')]+'%'};return _0x4b766d;})});}_0x53aed4=_[_0x3c81('0x3d')]({},_0x53aed4,_0x19afcb['options']);return _0x3e02bf[_0x3c81('0x4d')](_0x53aed4);}})[_0x3c81('0x25')](function(_0x45b90a){if(_0x45b90a){_0x26a3c8=_0x45b90a['length'];if(!_0x19afcb[_0x3c81('0x33')]['hasOwnProperty']('nolimit')){_0x53aed4['limit']=qs[_0x3c81('0x1d')](_0x19afcb[_0x3c81('0x33')]['limit']);_0x53aed4['offset']=qs[_0x3c81('0x1b')](_0x19afcb['query'][_0x3c81('0x1b')]);}return _0x3e02bf[_0x3c81('0x4d')](_0x53aed4);}})[_0x3c81('0x25')](function(_0x10d617){if(_0x10d617){return _0x10d617?{'count':_0x26a3c8,'rows':_0x10d617}:null;}})[_0x3c81('0x25')](respondWithResult(_0x4f4263,null))['catch'](handleError(_0x4f4263,null));};
\ No newline at end of file
+var _0xd50d=['end','offset','limit','count','Content-Range','json','apply','reject','update','then','destroy','stack','name','send','map','SalesforceConfiguration','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','merge','VIRTUAL','options','includeAll','include','catch','show','params','create','body','find','getFields','findOne','SalesforceField','pick','filter','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','fs-extra','squel','jsforce','desk.js','querystring','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status'];(function(_0x215797,_0x49d505){var _0x4a3697=function(_0x23a93a){while(--_0x23a93a){_0x215797['push'](_0x215797['shift']());}};_0x4a3697(++_0x49d505);}(_0xd50d,0xc9));var _0xdd50=function(_0x31119e,_0x59831f){_0x31119e=_0x31119e-0x0;var _0x4a8763=_0xd50d[_0x31119e];return _0x4a8763;};'use strict';var emlformat=require(_0xdd50('0x0'));var rimraf=require(_0xdd50('0x1'));var zipdir=require(_0xdd50('0x2'));var jsonpatch=require(_0xdd50('0x3'));var rp=require(_0xdd50('0x4'));var moment=require('moment');var BPromise=require(_0xdd50('0x5'));var Mustache=require(_0xdd50('0x6'));var util=require(_0xdd50('0x7'));var path=require(_0xdd50('0x8'));var sox=require(_0xdd50('0x9'));var csv=require(_0xdd50('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xdd50('0xb'));var _=require('lodash');var squel=require(_0xdd50('0xc'));var crypto=require('crypto');var jsforce=require(_0xdd50('0xd'));var deskjs=require(_0xdd50('0xe'));var toCsv=require('to-csv');var querystring=require(_0xdd50('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xdd50('0x10'));var as=require(_0xdd50('0x11'));var hardwareService=require(_0xdd50('0x12'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0xdd50('0x13'));var licenseUtil=require(_0xdd50('0x14'));var db=require(_0xdd50('0x15'))['db'];function respondWithStatusCode(_0x4fe870,_0x53ac58){_0x53ac58=_0x53ac58||0xcc;return function(_0x3b5587){if(_0x3b5587){return _0x4fe870[_0xdd50('0x16')](_0x53ac58);}return _0x4fe870[_0xdd50('0x17')](_0x53ac58)[_0xdd50('0x18')]();};}function respondWithResult(_0x17e605,_0x51197c){_0x51197c=_0x51197c||0xc8;return function(_0xa1b324){if(_0xa1b324){return _0x17e605[_0xdd50('0x17')](_0x51197c)['json'](_0xa1b324);}};}function respondWithFilteredResult(_0x36e23e,_0x128559){return function(_0x10c254){if(_0x10c254){var _0x5256a3=typeof _0x128559[_0xdd50('0x19')]==='undefined'&&typeof _0x128559[_0xdd50('0x1a')]==='undefined';var _0x16bddb=_0x10c254[_0xdd50('0x1b')];var _0x2ad032=_0x5256a3?0x0:_0x128559['offset'];var _0x5aeec1=_0x5256a3?_0x10c254[_0xdd50('0x1b')]:_0x128559[_0xdd50('0x19')]+_0x128559[_0xdd50('0x1a')];var _0x28b873;if(_0x5aeec1>=_0x16bddb){_0x5aeec1=_0x16bddb;_0x28b873=0xc8;}else{_0x28b873=0xce;}_0x36e23e['status'](_0x28b873);return _0x36e23e['set'](_0xdd50('0x1c'),_0x2ad032+'-'+_0x5aeec1+'/'+_0x16bddb)[_0xdd50('0x1d')](_0x10c254);}return null;};}function patchUpdates(_0xdc11da){return function(_0x59b023){try{jsonpatch[_0xdd50('0x1e')](_0x59b023,_0xdc11da,!![]);}catch(_0x2e1a77){return BPromise[_0xdd50('0x1f')](_0x2e1a77);}return _0x59b023['save']();};}function saveUpdates(_0x4cd38c,_0x3b2ffd){return function(_0x4d3240){if(_0x4d3240){return _0x4d3240[_0xdd50('0x20')](_0x4cd38c)[_0xdd50('0x21')](function(_0xf43cd5){return _0xf43cd5;});}return null;};}function removeEntity(_0x475034,_0x5ef4ad){return function(_0x41c77e){if(_0x41c77e){return _0x41c77e[_0xdd50('0x22')]()[_0xdd50('0x21')](function(){_0x475034[_0xdd50('0x17')](0xcc)[_0xdd50('0x18')]();});}};}function handleEntityNotFound(_0x287b67,_0x317819){return function(_0x50c91c){if(!_0x50c91c){_0x287b67[_0xdd50('0x16')](0x194);}return _0x50c91c;};}function handleError(_0x5d2263,_0x3287b2){_0x3287b2=_0x3287b2||0x1f4;return function(_0x143abf){logger['error'](_0x143abf[_0xdd50('0x23')]);if(_0x143abf[_0xdd50('0x24')]){delete _0x143abf['name'];}_0x5d2263[_0xdd50('0x17')](_0x3287b2)[_0xdd50('0x25')](_0x143abf);};}exports['index']=function(_0x1810d2,_0x21ae45){var _0x3b9d36={},_0x357001={},_0x1b8966={'count':0x0,'rows':[]};var _0x478d3c=_[_0xdd50('0x26')](db[_0xdd50('0x27')][_0xdd50('0x28')],function(_0x5d6e35){return{'name':_0x5d6e35[_0xdd50('0x29')],'type':_0x5d6e35[_0xdd50('0x2a')][_0xdd50('0x2b')]};});_0x357001[_0xdd50('0x2c')]=_[_0xdd50('0x26')](_0x478d3c,'name');_0x357001[_0xdd50('0x2d')]=_[_0xdd50('0x2e')](_0x1810d2[_0xdd50('0x2d')]);_0x357001[_0xdd50('0x2f')]=_[_0xdd50('0x30')](_0x357001['model'],_0x357001[_0xdd50('0x2d')]);_0x3b9d36[_0xdd50('0x31')]=_['intersection'](_0x357001[_0xdd50('0x2c')],qs[_0xdd50('0x32')](_0x1810d2[_0xdd50('0x2d')]['fields']));_0x3b9d36[_0xdd50('0x31')]=_0x3b9d36['attributes'][_0xdd50('0x33')]?_0x3b9d36[_0xdd50('0x31')]:_0x357001[_0xdd50('0x2c')];if(!_0x1810d2[_0xdd50('0x2d')][_0xdd50('0x34')](_0xdd50('0x35'))){_0x3b9d36[_0xdd50('0x1a')]=qs[_0xdd50('0x1a')](_0x1810d2['query'][_0xdd50('0x1a')]);_0x3b9d36[_0xdd50('0x19')]=qs[_0xdd50('0x19')](_0x1810d2[_0xdd50('0x2d')][_0xdd50('0x19')]);}_0x3b9d36[_0xdd50('0x36')]=qs['sort'](_0x1810d2[_0xdd50('0x2d')][_0xdd50('0x37')]);_0x3b9d36[_0xdd50('0x38')]=qs[_0xdd50('0x2f')](_['pick'](_0x1810d2['query'],_0x357001[_0xdd50('0x2f')]),_0x478d3c);if(_0x1810d2[_0xdd50('0x2d')]['filter']){_0x3b9d36[_0xdd50('0x38')]=_[_0xdd50('0x39')](_0x3b9d36[_0xdd50('0x38')],{'$or':_[_0xdd50('0x26')](_0x478d3c,function(_0x287d49){if(_0x287d49[_0xdd50('0x2a')]!==_0xdd50('0x3a')){var _0xd99025={};_0xd99025[_0x287d49[_0xdd50('0x24')]]={'$like':'%'+_0x1810d2[_0xdd50('0x2d')]['filter']+'%'};return _0xd99025;}})});}_0x3b9d36=_[_0xdd50('0x39')]({},_0x3b9d36,_0x1810d2[_0xdd50('0x3b')]);var _0x4c0072={'where':_0x3b9d36[_0xdd50('0x38')]};return db['SalesforceConfiguration'][_0xdd50('0x1b')](_0x4c0072)[_0xdd50('0x21')](function(_0x5e9882){_0x1b8966[_0xdd50('0x1b')]=_0x5e9882;if(_0x1810d2[_0xdd50('0x2d')][_0xdd50('0x3c')]){_0x3b9d36[_0xdd50('0x3d')]=[{'all':!![]}];}return db[_0xdd50('0x27')]['findAll'](_0x3b9d36);})[_0xdd50('0x21')](function(_0xc002bd){_0x1b8966['rows']=_0xc002bd;return _0x1b8966;})[_0xdd50('0x21')](respondWithFilteredResult(_0x21ae45,_0x3b9d36))[_0xdd50('0x3e')](handleError(_0x21ae45,null));};exports[_0xdd50('0x3f')]=function(_0x2970ba,_0x39f656){var _0x9ce37e={'raw':![],'where':{'id':_0x2970ba[_0xdd50('0x40')]['id']}},_0xd428a9={};_0xd428a9['model']=_[_0xdd50('0x2e')](db[_0xdd50('0x27')][_0xdd50('0x28')]);_0xd428a9[_0xdd50('0x2d')]=_[_0xdd50('0x2e')](_0x2970ba[_0xdd50('0x2d')]);_0xd428a9[_0xdd50('0x2f')]=_[_0xdd50('0x30')](_0xd428a9['model'],_0xd428a9['query']);_0x9ce37e[_0xdd50('0x31')]=_['intersection'](_0xd428a9['model'],qs[_0xdd50('0x32')](_0x2970ba[_0xdd50('0x2d')][_0xdd50('0x32')]));_0x9ce37e[_0xdd50('0x31')]=_0x9ce37e[_0xdd50('0x31')][_0xdd50('0x33')]?_0x9ce37e['attributes']:_0xd428a9[_0xdd50('0x2c')];if(_0x2970ba['query'][_0xdd50('0x3c')]){_0x9ce37e['include']=[{'all':!![]}];}_0x9ce37e=_['merge']({},_0x9ce37e,_0x2970ba[_0xdd50('0x3b')]);return db[_0xdd50('0x27')]['find'](_0x9ce37e)[_0xdd50('0x21')](handleEntityNotFound(_0x39f656,null))[_0xdd50('0x21')](respondWithResult(_0x39f656,null))[_0xdd50('0x3e')](handleError(_0x39f656,null));};exports[_0xdd50('0x41')]=function(_0x592fea,_0x153d44){return db[_0xdd50('0x27')]['create'](_0x592fea['body'],{})[_0xdd50('0x21')](respondWithResult(_0x153d44,0xc9))['catch'](handleError(_0x153d44,null));};exports[_0xdd50('0x20')]=function(_0x52fabd,_0x1c1977){if(_0x52fabd[_0xdd50('0x42')]['id']){delete _0x52fabd[_0xdd50('0x42')]['id'];}return db[_0xdd50('0x27')][_0xdd50('0x43')]({'where':{'id':_0x52fabd[_0xdd50('0x40')]['id']}})[_0xdd50('0x21')](handleEntityNotFound(_0x1c1977,null))[_0xdd50('0x21')](saveUpdates(_0x52fabd[_0xdd50('0x42')],null))[_0xdd50('0x21')](respondWithResult(_0x1c1977,null))[_0xdd50('0x3e')](handleError(_0x1c1977,null));};exports[_0xdd50('0x22')]=function(_0x590bb0,_0x1e0701){return db[_0xdd50('0x27')][_0xdd50('0x43')]({'where':{'id':_0x590bb0['params']['id']}})[_0xdd50('0x21')](handleEntityNotFound(_0x1e0701,null))[_0xdd50('0x21')](removeEntity(_0x1e0701,null))[_0xdd50('0x3e')](handleError(_0x1e0701,null));};exports[_0xdd50('0x44')]=function(_0x137228,_0xe8845e,_0x48084d){var _0x12f708={};var _0x32583c={};var _0x11e2ba;var _0x4d204f;return db['SalesforceConfiguration'][_0xdd50('0x45')]({'where':{'id':_0x137228[_0xdd50('0x40')]['id']}})[_0xdd50('0x21')](handleEntityNotFound(_0xe8845e,null))[_0xdd50('0x21')](function(_0x391d0d){if(_0x391d0d){_0x11e2ba=_0x391d0d;_0x32583c[_0xdd50('0x2c')]=_[_0xdd50('0x2e')](db[_0xdd50('0x46')][_0xdd50('0x28')]);_0x32583c[_0xdd50('0x2d')]=_[_0xdd50('0x2e')](_0x137228[_0xdd50('0x2d')]);_0x32583c[_0xdd50('0x2f')]=_[_0xdd50('0x30')](_0x32583c[_0xdd50('0x2c')],_0x32583c['query']);_0x12f708[_0xdd50('0x31')]=_[_0xdd50('0x30')](_0x32583c[_0xdd50('0x2c')],qs[_0xdd50('0x32')](_0x137228[_0xdd50('0x2d')]['fields']));_0x12f708['attributes']=_0x12f708['attributes'][_0xdd50('0x33')]?_0x12f708[_0xdd50('0x31')]:_0x32583c[_0xdd50('0x2c')];_0x12f708[_0xdd50('0x36')]=qs['sort'](_0x137228['query'][_0xdd50('0x37')]);_0x12f708[_0xdd50('0x38')]=qs[_0xdd50('0x2f')](_[_0xdd50('0x47')](_0x137228[_0xdd50('0x2d')],_0x32583c[_0xdd50('0x2f')]));if(_0x137228[_0xdd50('0x2d')][_0xdd50('0x48')]){_0x12f708[_0xdd50('0x38')]=_[_0xdd50('0x39')](_0x12f708['where'],{'$or':_[_0xdd50('0x26')](_0x12f708[_0xdd50('0x31')],function(_0x4fb83c){var _0x4dcb98={};_0x4dcb98[_0x4fb83c]={'$like':'%'+_0x137228[_0xdd50('0x2d')][_0xdd50('0x48')]+'%'};return _0x4dcb98;})});}_0x12f708=_['merge']({},_0x12f708,_0x137228[_0xdd50('0x3b')]);return _0x11e2ba['getFields'](_0x12f708);}})['then'](function(_0x3eb4d5){if(_0x3eb4d5){_0x4d204f=_0x3eb4d5[_0xdd50('0x33')];if(!_0x137228[_0xdd50('0x2d')]['hasOwnProperty'](_0xdd50('0x35'))){_0x12f708[_0xdd50('0x1a')]=qs['limit'](_0x137228[_0xdd50('0x2d')][_0xdd50('0x1a')]);_0x12f708[_0xdd50('0x19')]=qs[_0xdd50('0x19')](_0x137228[_0xdd50('0x2d')]['offset']);}return _0x11e2ba[_0xdd50('0x44')](_0x12f708);}})['then'](function(_0x3f6606){if(_0x3f6606){return _0x3f6606?{'count':_0x4d204f,'rows':_0x3f6606}:null;}})['then'](respondWithResult(_0xe8845e,null))[_0xdd50('0x3e')](handleError(_0xe8845e,null));};exports[_0xdd50('0x49')]=function(_0x159c0a,_0x3cef2a,_0x58892a){var _0x3c1b7c={};var _0x2c013f={};var _0x54dcd3;var _0x5d9760;return db[_0xdd50('0x27')]['findOne']({'where':{'id':_0x159c0a[_0xdd50('0x40')]['id']}})[_0xdd50('0x21')](handleEntityNotFound(_0x3cef2a,null))[_0xdd50('0x21')](function(_0x16d28f){if(_0x16d28f){_0x54dcd3=_0x16d28f;_0x2c013f['model']=_['keys'](db[_0xdd50('0x46')]['rawAttributes']);_0x2c013f[_0xdd50('0x2d')]=_['keys'](_0x159c0a['query']);_0x2c013f[_0xdd50('0x2f')]=_['intersection'](_0x2c013f[_0xdd50('0x2c')],_0x2c013f['query']);_0x3c1b7c['attributes']=_['intersection'](_0x2c013f[_0xdd50('0x2c')],qs[_0xdd50('0x32')](_0x159c0a['query']['fields']));_0x3c1b7c[_0xdd50('0x31')]=_0x3c1b7c[_0xdd50('0x31')][_0xdd50('0x33')]?_0x3c1b7c[_0xdd50('0x31')]:_0x2c013f['model'];_0x3c1b7c['order']=qs['sort'](_0x159c0a[_0xdd50('0x2d')]['sort']);_0x3c1b7c[_0xdd50('0x38')]=qs[_0xdd50('0x2f')](_[_0xdd50('0x47')](_0x159c0a[_0xdd50('0x2d')],_0x2c013f['filters']));if(_0x159c0a[_0xdd50('0x2d')][_0xdd50('0x48')]){_0x3c1b7c['where']=_[_0xdd50('0x39')](_0x3c1b7c[_0xdd50('0x38')],{'$or':_['map'](_0x3c1b7c['attributes'],function(_0x3444d6){var _0x83f060={};_0x83f060[_0x3444d6]={'$like':'%'+_0x159c0a[_0xdd50('0x2d')]['filter']+'%'};return _0x83f060;})});}_0x3c1b7c=_['merge']({},_0x3c1b7c,_0x159c0a[_0xdd50('0x3b')]);return _0x54dcd3[_0xdd50('0x49')](_0x3c1b7c);}})[_0xdd50('0x21')](function(_0x5983f8){if(_0x5983f8){_0x5d9760=_0x5983f8[_0xdd50('0x33')];if(!_0x159c0a[_0xdd50('0x2d')][_0xdd50('0x34')](_0xdd50('0x35'))){_0x3c1b7c[_0xdd50('0x1a')]=qs[_0xdd50('0x1a')](_0x159c0a['query'][_0xdd50('0x1a')]);_0x3c1b7c['offset']=qs[_0xdd50('0x19')](_0x159c0a[_0xdd50('0x2d')]['offset']);}return _0x54dcd3[_0xdd50('0x49')](_0x3c1b7c);}})[_0xdd50('0x21')](function(_0x13bee8){if(_0x13bee8){return _0x13bee8?{'count':_0x5d9760,'rows':_0x13bee8}:null;}})[_0xdd50('0x21')](respondWithResult(_0x3cef2a,null))[_0xdd50('0x3e')](handleError(_0x3cef2a,null));};exports['getDescriptions']=function(_0x2def9a,_0x27511b,_0x2187c4){var _0x2eb181={};var _0x29154c={};var _0x2e6999;var _0x1c7cc2;return db[_0xdd50('0x27')][_0xdd50('0x45')]({'where':{'id':_0x2def9a[_0xdd50('0x40')]['id']}})[_0xdd50('0x21')](handleEntityNotFound(_0x27511b,null))[_0xdd50('0x21')](function(_0x212a21){if(_0x212a21){_0x2e6999=_0x212a21;_0x29154c[_0xdd50('0x2c')]=_[_0xdd50('0x2e')](db['SalesforceField'][_0xdd50('0x28')]);_0x29154c['query']=_[_0xdd50('0x2e')](_0x2def9a[_0xdd50('0x2d')]);_0x29154c[_0xdd50('0x2f')]=_[_0xdd50('0x30')](_0x29154c['model'],_0x29154c[_0xdd50('0x2d')]);_0x2eb181['attributes']=_[_0xdd50('0x30')](_0x29154c['model'],qs[_0xdd50('0x32')](_0x2def9a[_0xdd50('0x2d')][_0xdd50('0x32')]));_0x2eb181[_0xdd50('0x31')]=_0x2eb181[_0xdd50('0x31')][_0xdd50('0x33')]?_0x2eb181[_0xdd50('0x31')]:_0x29154c[_0xdd50('0x2c')];_0x2eb181[_0xdd50('0x36')]=qs[_0xdd50('0x37')](_0x2def9a[_0xdd50('0x2d')]['sort']);_0x2eb181[_0xdd50('0x38')]=qs['filters'](_['pick'](_0x2def9a['query'],_0x29154c['filters']));if(_0x2def9a[_0xdd50('0x2d')][_0xdd50('0x48')]){_0x2eb181[_0xdd50('0x38')]=_['merge'](_0x2eb181['where'],{'$or':_[_0xdd50('0x26')](_0x2eb181[_0xdd50('0x31')],function(_0xb562f9){var _0x3f83fc={};_0x3f83fc[_0xb562f9]={'$like':'%'+_0x2def9a[_0xdd50('0x2d')]['filter']+'%'};return _0x3f83fc;})});}_0x2eb181=_['merge']({},_0x2eb181,_0x2def9a[_0xdd50('0x3b')]);return _0x2e6999['getDescriptions'](_0x2eb181);}})[_0xdd50('0x21')](function(_0x4f6d36){if(_0x4f6d36){_0x1c7cc2=_0x4f6d36['length'];if(!_0x2def9a[_0xdd50('0x2d')][_0xdd50('0x34')](_0xdd50('0x35'))){_0x2eb181[_0xdd50('0x1a')]=qs[_0xdd50('0x1a')](_0x2def9a[_0xdd50('0x2d')]['limit']);_0x2eb181[_0xdd50('0x19')]=qs['offset'](_0x2def9a['query'][_0xdd50('0x19')]);}return _0x2e6999[_0xdd50('0x4a')](_0x2eb181);}})[_0xdd50('0x21')](function(_0x57e101){if(_0x57e101){return _0x57e101?{'count':_0x1c7cc2,'rows':_0x57e101}:null;}})[_0xdd50('0x21')](respondWithResult(_0x27511b,null))[_0xdd50('0x3e')](handleError(_0x27511b,null));};
\ No newline at end of file
index 1b7c9dd..111e2f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbeac=['../../config/logger','moment','bluebird','request-promise','path','../../config/environment','./intSalesforceConfiguration.attributes','exports','define','SalesforceConfiguration','int_salesforce_configurations','lodash','util'];(function(_0x4d9255,_0x374413){var _0x19442c=function(_0x10ed9b){while(--_0x10ed9b){_0x4d9255['push'](_0x4d9255['shift']());}};_0x19442c(++_0x374413);}(_0xbeac,0x191));var _0xcbea=function(_0x281b52,_0x17d7b7){_0x281b52=_0x281b52-0x0;var _0x14981c=_0xbeac[_0x281b52];return _0x14981c;};'use strict';var _=require(_0xcbea('0x0'));var util=require(_0xcbea('0x1'));var logger=require(_0xcbea('0x2'))('api');var moment=require(_0xcbea('0x3'));var BPromise=require(_0xcbea('0x4'));var rp=require(_0xcbea('0x5'));var fs=require('fs');var path=require(_0xcbea('0x6'));var rimraf=require('rimraf');var config=require(_0xcbea('0x7'));var attributes=require(_0xcbea('0x8'));module[_0xcbea('0x9')]=function(_0x2c2b2b,_0x2a0d38){return _0x2c2b2b[_0xcbea('0xa')](_0xcbea('0xb'),attributes,{'tableName':_0xcbea('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x48fc=['exports','define','int_salesforce_configurations','lodash','../../config/logger','api','moment','request-promise','path','rimraf','./intSalesforceConfiguration.attributes'];(function(_0x5b5923,_0x320696){var _0x29a4fc=function(_0x1ea236){while(--_0x1ea236){_0x5b5923['push'](_0x5b5923['shift']());}};_0x29a4fc(++_0x320696);}(_0x48fc,0x158));var _0xc48f=function(_0x2b1dbe,_0x35825e){_0x2b1dbe=_0x2b1dbe-0x0;var _0x2b5e10=_0x48fc[_0x2b1dbe];return _0x2b5e10;};'use strict';var _=require(_0xc48f('0x0'));var util=require('util');var logger=require(_0xc48f('0x1'))(_0xc48f('0x2'));var moment=require(_0xc48f('0x3'));var BPromise=require('bluebird');var rp=require(_0xc48f('0x4'));var fs=require('fs');var path=require(_0xc48f('0x5'));var rimraf=require(_0xc48f('0x6'));var config=require('../../config/environment');var attributes=require(_0xc48f('0x7'));module[_0xc48f('0x8')]=function(_0xe4ebf2,_0x5dca11){return _0xe4ebf2[_0xc48f('0x9')]('SalesforceConfiguration',attributes,{'tableName':_0xc48f('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 06a5a2d..bb947b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc87=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','SalesforceConfiguration,\x20%s,\x20%s','request\x20sent','debug','SalesforceConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','bluebird','randomstring','ioredis'];(function(_0x4c3817,_0x5be1bb){var _0x3a2936=function(_0x5ca525){while(--_0x5ca525){_0x4c3817['push'](_0x4c3817['shift']());}};_0x3a2936(++_0x5be1bb);}(_0xcc87,0x14d));var _0x7cc8=function(_0x1fbffe,_0x1e2725){_0x1fbffe=_0x1fbffe-0x0;var _0xa058cf=_0xcc87[_0x1fbffe];return _0xa058cf;};'use strict';var _=require(_0x7cc8('0x0'));var util=require(_0x7cc8('0x1'));var moment=require('moment');var BPromise=require(_0x7cc8('0x2'));var rs=require(_0x7cc8('0x3'));var fs=require('fs');var Redis=require(_0x7cc8('0x4'));var db=require(_0x7cc8('0x5'))['db'];var utils=require(_0x7cc8('0x6'));var logger=require(_0x7cc8('0x7'))(_0x7cc8('0x8'));var config=require(_0x7cc8('0x9'));var jayson=require(_0x7cc8('0xa'));var client=jayson[_0x7cc8('0xb')][_0x7cc8('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x4b94ed,_0x2e7355,_0x1fff56){return new BPromise(function(_0x424302,_0x3dfb1c){return client[_0x7cc8('0xd')](_0x4b94ed,_0x1fff56)[_0x7cc8('0xe')](function(_0x36e05d){logger[_0x7cc8('0xf')](_0x7cc8('0x10'),_0x2e7355,_0x7cc8('0x11'));logger[_0x7cc8('0x12')](_0x7cc8('0x13'),_0x2e7355,'request\x20sent',JSON[_0x7cc8('0x14')](_0x36e05d));if(_0x36e05d[_0x7cc8('0x15')]){if(_0x36e05d[_0x7cc8('0x15')][_0x7cc8('0x16')]===0x1f4){logger[_0x7cc8('0x15')](_0x7cc8('0x10'),_0x2e7355,_0x36e05d[_0x7cc8('0x15')][_0x7cc8('0x17')]);return _0x3dfb1c(_0x36e05d[_0x7cc8('0x15')][_0x7cc8('0x17')]);}logger[_0x7cc8('0x15')](_0x7cc8('0x10'),_0x2e7355,_0x36e05d[_0x7cc8('0x15')][_0x7cc8('0x17')]);return _0x424302(_0x36e05d[_0x7cc8('0x15')]['message']);}else{logger[_0x7cc8('0xf')]('SalesforceConfiguration,\x20%s,\x20%s',_0x2e7355,_0x7cc8('0x11'));_0x424302(_0x36e05d[_0x7cc8('0x18')][_0x7cc8('0x17')]);}})[_0x7cc8('0x19')](function(_0x198e55){logger[_0x7cc8('0x15')](_0x7cc8('0x10'),_0x2e7355,_0x198e55);_0x3dfb1c(_0x198e55);});});}
\ No newline at end of file
+var _0x5045=['message','catch','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','SalesforceConfiguration,\x20%s,\x20%s','request\x20sent','debug','SalesforceConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x22ae56,_0x16955c){var _0x1544f5=function(_0x2d525f){while(--_0x2d525f){_0x22ae56['push'](_0x22ae56['shift']());}};_0x1544f5(++_0x16955c);}(_0x5045,0x75));var _0x5504=function(_0x3b2f14,_0x363cb6){_0x3b2f14=_0x3b2f14-0x0;var _0x5e0846=_0x5045[_0x3b2f14];return _0x5e0846;};'use strict';var _=require('lodash');var util=require(_0x5504('0x0'));var moment=require(_0x5504('0x1'));var BPromise=require(_0x5504('0x2'));var rs=require(_0x5504('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5504('0x4'))['db'];var utils=require(_0x5504('0x5'));var logger=require(_0x5504('0x6'))('rpc');var config=require(_0x5504('0x7'));var jayson=require(_0x5504('0x8'));var client=jayson[_0x5504('0x9')][_0x5504('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x441602,_0x3d7e1d,_0x310388){return new BPromise(function(_0x34a3f1,_0xdf4eaa){return client[_0x5504('0xb')](_0x441602,_0x310388)[_0x5504('0xc')](function(_0x4b9451){logger[_0x5504('0xd')](_0x5504('0xe'),_0x3d7e1d,_0x5504('0xf'));logger[_0x5504('0x10')](_0x5504('0x11'),_0x3d7e1d,_0x5504('0xf'),JSON[_0x5504('0x12')](_0x4b9451));if(_0x4b9451['error']){if(_0x4b9451[_0x5504('0x13')][_0x5504('0x14')]===0x1f4){logger['error'](_0x5504('0xe'),_0x3d7e1d,_0x4b9451[_0x5504('0x13')][_0x5504('0x15')]);return _0xdf4eaa(_0x4b9451[_0x5504('0x13')][_0x5504('0x15')]);}logger[_0x5504('0x13')](_0x5504('0xe'),_0x3d7e1d,_0x4b9451[_0x5504('0x13')][_0x5504('0x15')]);return _0x34a3f1(_0x4b9451[_0x5504('0x13')][_0x5504('0x15')]);}else{logger[_0x5504('0xd')]('SalesforceConfiguration,\x20%s,\x20%s',_0x3d7e1d,_0x5504('0xf'));_0x34a3f1(_0x4b9451['result'][_0x5504('0x15')]);}})[_0x5504('0x16')](function(_0x7560d3){logger[_0x5504('0x13')]('SalesforceConfiguration,\x20%s,\x20%s',_0x3d7e1d,_0x7560d3);_0xdf4eaa(_0x7560d3);});});}
\ No newline at end of file
index df3a237..40ec032 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5458=['index','/:id','isAuthenticated','show','post','put','update','delete','destroy','exports','util','path','express','Router','../../components/auth/service','../../config/environment','./intSalesforceField.controller','get'];(function(_0x1d9088,_0x1cc0bd){var _0x4ee896=function(_0x438cf9){while(--_0x438cf9){_0x1d9088['push'](_0x1d9088['shift']());}};_0x4ee896(++_0x1cc0bd);}(_0x5458,0x14e));var _0x8545=function(_0x405531,_0x1c6e9b){_0x405531=_0x405531-0x0;var _0x2784f6=_0x5458[_0x405531];return _0x2784f6;};'use strict';var multer=require('multer');var util=require(_0x8545('0x0'));var path=require(_0x8545('0x1'));var timeout=require('connect-timeout');var express=require(_0x8545('0x2'));var router=express[_0x8545('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x8545('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x8545('0x5'));var controller=require(_0x8545('0x6'));router[_0x8545('0x7')]('/',auth['isAuthenticated'](),controller[_0x8545('0x8')]);router[_0x8545('0x7')](_0x8545('0x9'),auth[_0x8545('0xa')](),controller[_0x8545('0xb')]);router[_0x8545('0xc')]('/',auth[_0x8545('0xa')](),controller['create']);router[_0x8545('0xd')]('/:id',auth['isAuthenticated'](),controller[_0x8545('0xe')]);router[_0x8545('0xf')](_0x8545('0x9'),auth[_0x8545('0xa')](),controller[_0x8545('0x10')]);module[_0x8545('0x11')]=router;
\ No newline at end of file
+var _0x6f74=['isAuthenticated','index','post','create','put','delete','/:id','destroy','exports','multer','util','connect-timeout','Router','../../components/auth/service','../../config/environment','./intSalesforceField.controller','get'];(function(_0x32836f,_0x309156){var _0x47b725=function(_0xa5e191){while(--_0xa5e191){_0x32836f['push'](_0x32836f['shift']());}};_0x47b725(++_0x309156);}(_0x6f74,0xf7));var _0x46f7=function(_0x2d9d42,_0x46bb08){_0x2d9d42=_0x2d9d42-0x0;var _0x325e9f=_0x6f74[_0x2d9d42];return _0x325e9f;};'use strict';var multer=require(_0x46f7('0x0'));var util=require(_0x46f7('0x1'));var path=require('path');var timeout=require(_0x46f7('0x2'));var express=require('express');var router=express[_0x46f7('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x46f7('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x46f7('0x5'));var controller=require(_0x46f7('0x6'));router[_0x46f7('0x7')]('/',auth[_0x46f7('0x8')](),controller[_0x46f7('0x9')]);router['get']('/:id',auth[_0x46f7('0x8')](),controller['show']);router[_0x46f7('0xa')]('/',auth[_0x46f7('0x8')](),controller[_0x46f7('0xb')]);router[_0x46f7('0xc')]('/:id',auth[_0x46f7('0x8')](),controller['update']);router[_0x46f7('0xd')](_0x46f7('0xe'),auth[_0x46f7('0x8')](),controller[_0x46f7('0xf')]);module[_0x46f7('0x10')]=router;
\ No newline at end of file
index 59b3946..3fc5ef4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5de=['STRING','exports','ENUM','string','variable','customVariable','keyValue'];(function(_0xef440e,_0xed0726){var _0x186b1f=function(_0x241847){while(--_0x241847){_0xef440e['push'](_0xef440e['shift']());}};_0x186b1f(++_0xed0726);}(_0xe5de,0x94));var _0xee5d=function(_0x275795,_0x11bb93){_0x275795=_0x275795-0x0;var _0x4e7cee=_0xe5de[_0x275795];return _0x4e7cee;};'use strict';var Sequelize=require('sequelize');module[_0xee5d('0x0')]={'type':{'type':Sequelize[_0xee5d('0x1')](_0xee5d('0x2'),_0xee5d('0x3'),_0xee5d('0x4'),_0xee5d('0x5'),'picklist'),'defaultValue':_0xee5d('0x2')},'content':{'type':Sequelize[_0xee5d('0x6')]},'key':{'type':Sequelize[_0xee5d('0x6')]},'keyType':{'type':Sequelize[_0xee5d('0x1')]('string',_0xee5d('0x3'),'customVariable')},'keyContent':{'type':Sequelize[_0xee5d('0x6')]},'idField':{'type':Sequelize['STRING']},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x72b1=['ENUM','string','variable','customVariable','picklist','STRING','sequelize'];(function(_0x50f957,_0x351291){var _0x4fecea=function(_0x118324){while(--_0x118324){_0x50f957['push'](_0x50f957['shift']());}};_0x4fecea(++_0x351291);}(_0x72b1,0xbc));var _0x172b=function(_0x8976c,_0x30913f){_0x8976c=_0x8976c-0x0;var _0x3053be=_0x72b1[_0x8976c];return _0x3053be;};'use strict';var Sequelize=require(_0x172b('0x0'));module['exports']={'type':{'type':Sequelize[_0x172b('0x1')](_0x172b('0x2'),_0x172b('0x3'),_0x172b('0x4'),'keyValue',_0x172b('0x5')),'defaultValue':_0x172b('0x2')},'content':{'type':Sequelize[_0x172b('0x6')]},'key':{'type':Sequelize[_0x172b('0x6')]},'keyType':{'type':Sequelize[_0x172b('0x1')](_0x172b('0x2'),_0x172b('0x3'),'customVariable')},'keyContent':{'type':Sequelize[_0x172b('0x6')]},'idField':{'type':Sequelize[_0x172b('0x6')]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 72d7351..48254de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc154=['find','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','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','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','count','limit','set','Content-Range','json','apply','save','update','destroy','error','send','index','map','fieldName','type','name','keys','query','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filters','pick','merge','VIRTUAL','filter','SalesforceField','then','includeAll','rows','catch','show','length','include','options','create','body','params'];(function(_0x3135f7,_0x13571d){var _0x22294a=function(_0x338155){while(--_0x338155){_0x3135f7['push'](_0x3135f7['shift']());}};_0x22294a(++_0x13571d);}(_0xc154,0x1cf));var _0x4c15=function(_0x2bda85,_0x5466b1){_0x2bda85=_0x2bda85-0x0;var _0xbff55f=_0xc154[_0x2bda85];return _0xbff55f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x4c15('0x0'));var zipdir=require(_0x4c15('0x1'));var jsonpatch=require(_0x4c15('0x2'));var rp=require(_0x4c15('0x3'));var moment=require(_0x4c15('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x4c15('0x5'));var util=require('util');var path=require('path');var sox=require(_0x4c15('0x6'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4c15('0x7'));var _=require(_0x4c15('0x8'));var squel=require(_0x4c15('0x9'));var crypto=require(_0x4c15('0xa'));var jsforce=require(_0x4c15('0xb'));var deskjs=require(_0x4c15('0xc'));var toCsv=require(_0x4c15('0xd'));var querystring=require(_0x4c15('0xe'));var Papa=require(_0x4c15('0xf'));var Redis=require(_0x4c15('0x10'));var authService=require(_0x4c15('0x11'));var qs=require(_0x4c15('0x12'));var as=require(_0x4c15('0x13'));var hardwareService=require(_0x4c15('0x14'));var logger=require(_0x4c15('0x15'))(_0x4c15('0x16'));var utils=require(_0x4c15('0x17'));var config=require(_0x4c15('0x18'));var licenseUtil=require(_0x4c15('0x19'));var db=require(_0x4c15('0x1a'))['db'];function respondWithStatusCode(_0x713855,_0xdc15dc){_0xdc15dc=_0xdc15dc||0xcc;return function(_0x1b8568){if(_0x1b8568){return _0x713855[_0x4c15('0x1b')](_0xdc15dc);}return _0x713855[_0x4c15('0x1c')](_0xdc15dc)[_0x4c15('0x1d')]();};}function respondWithResult(_0x5cd5f8,_0x23acb6){_0x23acb6=_0x23acb6||0xc8;return function(_0x2a0419){if(_0x2a0419){return _0x5cd5f8[_0x4c15('0x1c')](_0x23acb6)['json'](_0x2a0419);}};}function respondWithFilteredResult(_0x5ad2f4,_0x366705){return function(_0xcdacdd){if(_0xcdacdd){var _0x536041=typeof _0x366705[_0x4c15('0x1e')]===_0x4c15('0x1f')&&typeof _0x366705['limit']===_0x4c15('0x1f');var _0x3d49b8=_0xcdacdd[_0x4c15('0x20')];var _0x59b3e6=_0x536041?0x0:_0x366705[_0x4c15('0x1e')];var _0x2880d0=_0x536041?_0xcdacdd[_0x4c15('0x20')]:_0x366705['offset']+_0x366705[_0x4c15('0x21')];var _0x519f49;if(_0x2880d0>=_0x3d49b8){_0x2880d0=_0x3d49b8;_0x519f49=0xc8;}else{_0x519f49=0xce;}_0x5ad2f4[_0x4c15('0x1c')](_0x519f49);return _0x5ad2f4[_0x4c15('0x22')](_0x4c15('0x23'),_0x59b3e6+'-'+_0x2880d0+'/'+_0x3d49b8)[_0x4c15('0x24')](_0xcdacdd);}return null;};}function patchUpdates(_0x801196){return function(_0x5d2a4c){try{jsonpatch[_0x4c15('0x25')](_0x5d2a4c,_0x801196,!![]);}catch(_0x1864ec){return BPromise['reject'](_0x1864ec);}return _0x5d2a4c[_0x4c15('0x26')]();};}function saveUpdates(_0x1daa64,_0x381895){return function(_0x5679ca){if(_0x5679ca){return _0x5679ca[_0x4c15('0x27')](_0x1daa64)['then'](function(_0x357211){return _0x357211;});}return null;};}function removeEntity(_0x4a6d93,_0x4c4ae8){return function(_0x187419){if(_0x187419){return _0x187419[_0x4c15('0x28')]()['then'](function(){_0x4a6d93[_0x4c15('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x184365,_0x9b2757){return function(_0x4a081c){if(!_0x4a081c){_0x184365['sendStatus'](0x194);}return _0x4a081c;};}function handleError(_0x22206f,_0x2901b1){_0x2901b1=_0x2901b1||0x1f4;return function(_0x369ef1){logger[_0x4c15('0x29')](_0x369ef1['stack']);if(_0x369ef1['name']){delete _0x369ef1['name'];}_0x22206f[_0x4c15('0x1c')](_0x2901b1)[_0x4c15('0x2a')](_0x369ef1);};}exports[_0x4c15('0x2b')]=function(_0x2b9b08,_0x33ddad){var _0x32c8e4={},_0x3029b2={},_0x2b3bb6={'count':0x0,'rows':[]};var _0x2e56fa=_[_0x4c15('0x2c')](db['SalesforceField']['rawAttributes'],function(_0x73fe3b){return{'name':_0x73fe3b[_0x4c15('0x2d')],'type':_0x73fe3b[_0x4c15('0x2e')]['key']};});_0x3029b2['model']=_[_0x4c15('0x2c')](_0x2e56fa,_0x4c15('0x2f'));_0x3029b2['query']=_[_0x4c15('0x30')](_0x2b9b08[_0x4c15('0x31')]);_0x3029b2['filters']=_[_0x4c15('0x32')](_0x3029b2[_0x4c15('0x33')],_0x3029b2[_0x4c15('0x31')]);_0x32c8e4[_0x4c15('0x34')]=_['intersection'](_0x3029b2[_0x4c15('0x33')],qs[_0x4c15('0x35')](_0x2b9b08['query']['fields']));_0x32c8e4[_0x4c15('0x34')]=_0x32c8e4['attributes']['length']?_0x32c8e4[_0x4c15('0x34')]:_0x3029b2[_0x4c15('0x33')];if(!_0x2b9b08[_0x4c15('0x31')][_0x4c15('0x36')](_0x4c15('0x37'))){_0x32c8e4[_0x4c15('0x21')]=qs[_0x4c15('0x21')](_0x2b9b08[_0x4c15('0x31')][_0x4c15('0x21')]);_0x32c8e4[_0x4c15('0x1e')]=qs[_0x4c15('0x1e')](_0x2b9b08[_0x4c15('0x31')][_0x4c15('0x1e')]);}_0x32c8e4[_0x4c15('0x38')]=qs['sort'](_0x2b9b08[_0x4c15('0x31')][_0x4c15('0x39')]);_0x32c8e4[_0x4c15('0x3a')]=qs[_0x4c15('0x3b')](_[_0x4c15('0x3c')](_0x2b9b08['query'],_0x3029b2[_0x4c15('0x3b')]),_0x2e56fa);if(_0x2b9b08[_0x4c15('0x31')]['filter']){_0x32c8e4['where']=_[_0x4c15('0x3d')](_0x32c8e4[_0x4c15('0x3a')],{'$or':_[_0x4c15('0x2c')](_0x2e56fa,function(_0x30f553){if(_0x30f553[_0x4c15('0x2e')]!==_0x4c15('0x3e')){var _0x504afe={};_0x504afe[_0x30f553[_0x4c15('0x2f')]]={'$like':'%'+_0x2b9b08[_0x4c15('0x31')][_0x4c15('0x3f')]+'%'};return _0x504afe;}})});}_0x32c8e4=_[_0x4c15('0x3d')]({},_0x32c8e4,_0x2b9b08['options']);var _0x21ab1f={'where':_0x32c8e4['where']};return db[_0x4c15('0x40')][_0x4c15('0x20')](_0x21ab1f)[_0x4c15('0x41')](function(_0x224f50){_0x2b3bb6['count']=_0x224f50;if(_0x2b9b08[_0x4c15('0x31')][_0x4c15('0x42')]){_0x32c8e4['include']=[{'all':!![]}];}return db[_0x4c15('0x40')]['findAll'](_0x32c8e4);})[_0x4c15('0x41')](function(_0x60edc4){_0x2b3bb6[_0x4c15('0x43')]=_0x60edc4;return _0x2b3bb6;})[_0x4c15('0x41')](respondWithFilteredResult(_0x33ddad,_0x32c8e4))[_0x4c15('0x44')](handleError(_0x33ddad,null));};exports[_0x4c15('0x45')]=function(_0x26e471,_0x3990fa){var _0xc77a58={'raw':!![],'where':{'id':_0x26e471['params']['id']}},_0x11e8c2={};_0x11e8c2[_0x4c15('0x33')]=_[_0x4c15('0x30')](db[_0x4c15('0x40')]['rawAttributes']);_0x11e8c2[_0x4c15('0x31')]=_[_0x4c15('0x30')](_0x26e471['query']);_0x11e8c2[_0x4c15('0x3b')]=_['intersection'](_0x11e8c2['model'],_0x11e8c2['query']);_0xc77a58['attributes']=_[_0x4c15('0x32')](_0x11e8c2['model'],qs[_0x4c15('0x35')](_0x26e471[_0x4c15('0x31')][_0x4c15('0x35')]));_0xc77a58[_0x4c15('0x34')]=_0xc77a58[_0x4c15('0x34')][_0x4c15('0x46')]?_0xc77a58[_0x4c15('0x34')]:_0x11e8c2[_0x4c15('0x33')];if(_0x26e471[_0x4c15('0x31')][_0x4c15('0x42')]){_0xc77a58[_0x4c15('0x47')]=[{'all':!![]}];}_0xc77a58=_[_0x4c15('0x3d')]({},_0xc77a58,_0x26e471[_0x4c15('0x48')]);return db[_0x4c15('0x40')]['find'](_0xc77a58)['then'](handleEntityNotFound(_0x3990fa,null))['then'](respondWithResult(_0x3990fa,null))[_0x4c15('0x44')](handleError(_0x3990fa,null));};exports[_0x4c15('0x49')]=function(_0x5cf422,_0x74eb4c){return db[_0x4c15('0x40')][_0x4c15('0x49')](_0x5cf422[_0x4c15('0x4a')],{})[_0x4c15('0x41')](respondWithResult(_0x74eb4c,0xc9))[_0x4c15('0x44')](handleError(_0x74eb4c,null));};exports[_0x4c15('0x27')]=function(_0xe41e9d,_0x34dae1){if(_0xe41e9d[_0x4c15('0x4a')]['id']){delete _0xe41e9d['body']['id'];}return db[_0x4c15('0x40')]['find']({'where':{'id':_0xe41e9d[_0x4c15('0x4b')]['id']}})[_0x4c15('0x41')](handleEntityNotFound(_0x34dae1,null))[_0x4c15('0x41')](saveUpdates(_0xe41e9d[_0x4c15('0x4a')],null))[_0x4c15('0x41')](respondWithResult(_0x34dae1,null))['catch'](handleError(_0x34dae1,null));};exports[_0x4c15('0x28')]=function(_0x25fb48,_0x2b6caa){return db[_0x4c15('0x40')][_0x4c15('0x4c')]({'where':{'id':_0x25fb48[_0x4c15('0x4b')]['id']}})[_0x4c15('0x41')](handleEntityNotFound(_0x2b6caa,null))[_0x4c15('0x41')](removeEntity(_0x2b6caa,null))[_0x4c15('0x44')](handleError(_0x2b6caa,null));};
\ No newline at end of file
+var _0x786e=['then','error','name','send','map','SalesforceField','rawAttributes','fieldName','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','pick','filter','where','merge','type','VIRTUAL','options','includeAll','include','findAll','catch','show','params','find','create','body','update','destroy','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','ejs','lodash','squel','crypto','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save'];(function(_0x441025,_0x3333b6){var _0x33d7f7=function(_0x5f0a9f){while(--_0x5f0a9f){_0x441025['push'](_0x441025['shift']());}};_0x33d7f7(++_0x3333b6);}(_0x786e,0x193));var _0xe786=function(_0x36284b,_0x2b7436){_0x36284b=_0x36284b-0x0;var _0x23c34a=_0x786e[_0x36284b];return _0x23c34a;};'use strict';var emlformat=require(_0xe786('0x0'));var rimraf=require(_0xe786('0x1'));var zipdir=require(_0xe786('0x2'));var jsonpatch=require(_0xe786('0x3'));var rp=require('request-promise');var moment=require(_0xe786('0x4'));var BPromise=require(_0xe786('0x5'));var Mustache=require(_0xe786('0x6'));var util=require(_0xe786('0x7'));var path=require('path');var sox=require(_0xe786('0x8'));var csv=require('to-csv');var ejs=require(_0xe786('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xe786('0xa'));var squel=require(_0xe786('0xb'));var crypto=require(_0xe786('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xe786('0xd'));var querystring=require(_0xe786('0xe'));var Papa=require(_0xe786('0xf'));var Redis=require(_0xe786('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xe786('0x11'));var as=require(_0xe786('0x12'));var hardwareService=require(_0xe786('0x13'));var logger=require('../../config/logger')(_0xe786('0x14'));var utils=require('../../config/utils');var config=require(_0xe786('0x15'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x390efa,_0x2dddc8){_0x2dddc8=_0x2dddc8||0xcc;return function(_0x3e2457){if(_0x3e2457){return _0x390efa[_0xe786('0x16')](_0x2dddc8);}return _0x390efa[_0xe786('0x17')](_0x2dddc8)[_0xe786('0x18')]();};}function respondWithResult(_0x1ba9f7,_0x3e0670){_0x3e0670=_0x3e0670||0xc8;return function(_0x45f35d){if(_0x45f35d){return _0x1ba9f7['status'](_0x3e0670)[_0xe786('0x19')](_0x45f35d);}};}function respondWithFilteredResult(_0x1bec60,_0x523ddf){return function(_0x25156d){if(_0x25156d){var _0x1ec3e2=typeof _0x523ddf[_0xe786('0x1a')]===_0xe786('0x1b')&&typeof _0x523ddf[_0xe786('0x1c')]===_0xe786('0x1b');var _0xc3f340=_0x25156d[_0xe786('0x1d')];var _0xfb174d=_0x1ec3e2?0x0:_0x523ddf[_0xe786('0x1a')];var _0x30d0cd=_0x1ec3e2?_0x25156d[_0xe786('0x1d')]:_0x523ddf[_0xe786('0x1a')]+_0x523ddf[_0xe786('0x1c')];var _0x4654dd;if(_0x30d0cd>=_0xc3f340){_0x30d0cd=_0xc3f340;_0x4654dd=0xc8;}else{_0x4654dd=0xce;}_0x1bec60[_0xe786('0x17')](_0x4654dd);return _0x1bec60[_0xe786('0x1e')](_0xe786('0x1f'),_0xfb174d+'-'+_0x30d0cd+'/'+_0xc3f340)['json'](_0x25156d);}return null;};}function patchUpdates(_0x27b771){return function(_0x2af209){try{jsonpatch[_0xe786('0x20')](_0x2af209,_0x27b771,!![]);}catch(_0x1431a0){return BPromise[_0xe786('0x21')](_0x1431a0);}return _0x2af209[_0xe786('0x22')]();};}function saveUpdates(_0x20bdaa,_0x569330){return function(_0x2af244){if(_0x2af244){return _0x2af244['update'](_0x20bdaa)[_0xe786('0x23')](function(_0xd0609a){return _0xd0609a;});}return null;};}function removeEntity(_0x57f303,_0x3e9011){return function(_0x3683ef){if(_0x3683ef){return _0x3683ef['destroy']()[_0xe786('0x23')](function(){_0x57f303['status'](0xcc)[_0xe786('0x18')]();});}};}function handleEntityNotFound(_0x46f150,_0x244759){return function(_0x5b9732){if(!_0x5b9732){_0x46f150['sendStatus'](0x194);}return _0x5b9732;};}function handleError(_0x23a842,_0x1a6c9e){_0x1a6c9e=_0x1a6c9e||0x1f4;return function(_0x45e84b){logger[_0xe786('0x24')](_0x45e84b['stack']);if(_0x45e84b[_0xe786('0x25')]){delete _0x45e84b[_0xe786('0x25')];}_0x23a842[_0xe786('0x17')](_0x1a6c9e)[_0xe786('0x26')](_0x45e84b);};}exports['index']=function(_0x4141d9,_0x35a255){var _0x55153f={},_0x5b31d2={},_0x1d0004={'count':0x0,'rows':[]};var _0x948018=_[_0xe786('0x27')](db[_0xe786('0x28')][_0xe786('0x29')],function(_0x4d741b){return{'name':_0x4d741b[_0xe786('0x2a')],'type':_0x4d741b['type'][_0xe786('0x2b')]};});_0x5b31d2[_0xe786('0x2c')]=_['map'](_0x948018,_0xe786('0x25'));_0x5b31d2[_0xe786('0x2d')]=_[_0xe786('0x2e')](_0x4141d9[_0xe786('0x2d')]);_0x5b31d2[_0xe786('0x2f')]=_['intersection'](_0x5b31d2[_0xe786('0x2c')],_0x5b31d2[_0xe786('0x2d')]);_0x55153f['attributes']=_[_0xe786('0x30')](_0x5b31d2['model'],qs[_0xe786('0x31')](_0x4141d9[_0xe786('0x2d')]['fields']));_0x55153f[_0xe786('0x32')]=_0x55153f['attributes'][_0xe786('0x33')]?_0x55153f['attributes']:_0x5b31d2[_0xe786('0x2c')];if(!_0x4141d9[_0xe786('0x2d')][_0xe786('0x34')](_0xe786('0x35'))){_0x55153f['limit']=qs['limit'](_0x4141d9['query']['limit']);_0x55153f[_0xe786('0x1a')]=qs[_0xe786('0x1a')](_0x4141d9[_0xe786('0x2d')][_0xe786('0x1a')]);}_0x55153f['order']=qs[_0xe786('0x36')](_0x4141d9[_0xe786('0x2d')][_0xe786('0x36')]);_0x55153f['where']=qs[_0xe786('0x2f')](_[_0xe786('0x37')](_0x4141d9['query'],_0x5b31d2[_0xe786('0x2f')]),_0x948018);if(_0x4141d9['query'][_0xe786('0x38')]){_0x55153f[_0xe786('0x39')]=_[_0xe786('0x3a')](_0x55153f['where'],{'$or':_['map'](_0x948018,function(_0x3dd8af){if(_0x3dd8af[_0xe786('0x3b')]!==_0xe786('0x3c')){var _0x3e458b={};_0x3e458b[_0x3dd8af[_0xe786('0x25')]]={'$like':'%'+_0x4141d9[_0xe786('0x2d')][_0xe786('0x38')]+'%'};return _0x3e458b;}})});}_0x55153f=_[_0xe786('0x3a')]({},_0x55153f,_0x4141d9[_0xe786('0x3d')]);var _0x3ce3fd={'where':_0x55153f['where']};return db[_0xe786('0x28')][_0xe786('0x1d')](_0x3ce3fd)[_0xe786('0x23')](function(_0x4b66aa){_0x1d0004[_0xe786('0x1d')]=_0x4b66aa;if(_0x4141d9['query'][_0xe786('0x3e')]){_0x55153f[_0xe786('0x3f')]=[{'all':!![]}];}return db['SalesforceField'][_0xe786('0x40')](_0x55153f);})[_0xe786('0x23')](function(_0x2f2907){_0x1d0004['rows']=_0x2f2907;return _0x1d0004;})[_0xe786('0x23')](respondWithFilteredResult(_0x35a255,_0x55153f))[_0xe786('0x41')](handleError(_0x35a255,null));};exports[_0xe786('0x42')]=function(_0x18e0a3,_0x594ac3){var _0x37cc2c={'raw':!![],'where':{'id':_0x18e0a3[_0xe786('0x43')]['id']}},_0x3d3cc3={};_0x3d3cc3[_0xe786('0x2c')]=_['keys'](db[_0xe786('0x28')][_0xe786('0x29')]);_0x3d3cc3[_0xe786('0x2d')]=_[_0xe786('0x2e')](_0x18e0a3[_0xe786('0x2d')]);_0x3d3cc3[_0xe786('0x2f')]=_['intersection'](_0x3d3cc3[_0xe786('0x2c')],_0x3d3cc3[_0xe786('0x2d')]);_0x37cc2c['attributes']=_[_0xe786('0x30')](_0x3d3cc3[_0xe786('0x2c')],qs[_0xe786('0x31')](_0x18e0a3[_0xe786('0x2d')][_0xe786('0x31')]));_0x37cc2c['attributes']=_0x37cc2c[_0xe786('0x32')][_0xe786('0x33')]?_0x37cc2c[_0xe786('0x32')]:_0x3d3cc3[_0xe786('0x2c')];if(_0x18e0a3[_0xe786('0x2d')][_0xe786('0x3e')]){_0x37cc2c[_0xe786('0x3f')]=[{'all':!![]}];}_0x37cc2c=_['merge']({},_0x37cc2c,_0x18e0a3[_0xe786('0x3d')]);return db[_0xe786('0x28')][_0xe786('0x44')](_0x37cc2c)['then'](handleEntityNotFound(_0x594ac3,null))[_0xe786('0x23')](respondWithResult(_0x594ac3,null))[_0xe786('0x41')](handleError(_0x594ac3,null));};exports[_0xe786('0x45')]=function(_0x1d3cec,_0x4caf99){return db[_0xe786('0x28')]['create'](_0x1d3cec[_0xe786('0x46')],{})['then'](respondWithResult(_0x4caf99,0xc9))['catch'](handleError(_0x4caf99,null));};exports[_0xe786('0x47')]=function(_0x131338,_0x4e4a5f){if(_0x131338[_0xe786('0x46')]['id']){delete _0x131338[_0xe786('0x46')]['id'];}return db[_0xe786('0x28')]['find']({'where':{'id':_0x131338[_0xe786('0x43')]['id']}})[_0xe786('0x23')](handleEntityNotFound(_0x4e4a5f,null))[_0xe786('0x23')](saveUpdates(_0x131338[_0xe786('0x46')],null))[_0xe786('0x23')](respondWithResult(_0x4e4a5f,null))['catch'](handleError(_0x4e4a5f,null));};exports[_0xe786('0x48')]=function(_0x3a2985,_0x12bd04){return db[_0xe786('0x28')][_0xe786('0x44')]({'where':{'id':_0x3a2985[_0xe786('0x43')]['id']}})[_0xe786('0x23')](handleEntityNotFound(_0x12bd04,null))[_0xe786('0x23')](removeEntity(_0x12bd04,null))[_0xe786('0x41')](handleError(_0x12bd04,null));};
\ No newline at end of file
index fe72ac2..8c7f651 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7781=['request-promise','path','./intSalesforceField.attributes','exports','define','SalesforceField','salesforce_unique_index','idField','FieldId','lodash','util','../../config/logger','api','bluebird'];(function(_0x413feb,_0x10477f){var _0x40ee88=function(_0x32a3f6){while(--_0x32a3f6){_0x413feb['push'](_0x413feb['shift']());}};_0x40ee88(++_0x10477f);}(_0x7781,0x19f));var _0x1778=function(_0x5168ad,_0x278244){_0x5168ad=_0x5168ad-0x0;var _0x4b4b9f=_0x7781[_0x5168ad];return _0x4b4b9f;};'use strict';var _=require(_0x1778('0x0'));var util=require(_0x1778('0x1'));var logger=require(_0x1778('0x2'))(_0x1778('0x3'));var moment=require('moment');var BPromise=require(_0x1778('0x4'));var rp=require(_0x1778('0x5'));var fs=require('fs');var path=require(_0x1778('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x1778('0x7'));module[_0x1778('0x8')]=function(_0x4b3aad,_0x506ddc){return _0x4b3aad[_0x1778('0x9')](_0x1778('0xa'),attributes,{'tableName':'int_salesforce_fields','paranoid':![],'indexes':[{'name':_0x1778('0xb'),'fields':[_0x1778('0xc'),_0x1778('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x4375=['salesforce_unique_index','FieldId','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intSalesforceField.attributes','exports','define','SalesforceField','int_salesforce_fields'];(function(_0x51f031,_0x2b24c1){var _0x414bda=function(_0xc1a017){while(--_0xc1a017){_0x51f031['push'](_0x51f031['shift']());}};_0x414bda(++_0x2b24c1);}(_0x4375,0x1a2));var _0x5437=function(_0x2ea9e5,_0x4546cc){_0x2ea9e5=_0x2ea9e5-0x0;var _0x2e9550=_0x4375[_0x2ea9e5];return _0x2e9550;};'use strict';var _=require(_0x5437('0x0'));var util=require('util');var logger=require(_0x5437('0x1'))(_0x5437('0x2'));var moment=require(_0x5437('0x3'));var BPromise=require(_0x5437('0x4'));var rp=require(_0x5437('0x5'));var fs=require('fs');var path=require(_0x5437('0x6'));var rimraf=require(_0x5437('0x7'));var config=require(_0x5437('0x8'));var attributes=require(_0x5437('0x9'));module[_0x5437('0xa')]=function(_0x3169cc,_0x55b9a4){return _0x3169cc[_0x5437('0xb')](_0x5437('0xc'),attributes,{'tableName':_0x5437('0xd'),'paranoid':![],'indexes':[{'name':_0x5437('0xe'),'fields':['idField',_0x5437('0xf')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 1311bc7..6b7a8a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x143a=['SalesforceField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','then','info','SalesforceField,\x20%s,\x20%s'];(function(_0xd0b415,_0x149675){var _0x2bdf2c=function(_0x59fbfa){while(--_0x59fbfa){_0xd0b415['push'](_0xd0b415['shift']());}};_0x2bdf2c(++_0x149675);}(_0x143a,0x170));var _0xa143=function(_0x31b132,_0x431a5f){_0x31b132=_0x31b132-0x0;var _0x1b172e=_0x143a[_0x31b132];return _0x1b172e;};'use strict';var _=require('lodash');var util=require(_0xa143('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xa143('0x1'));var fs=require('fs');var Redis=require(_0xa143('0x2'));var db=require(_0xa143('0x3'))['db'];var utils=require(_0xa143('0x4'));var logger=require(_0xa143('0x5'))(_0xa143('0x6'));var config=require(_0xa143('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0xa143('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x240588,_0x506fa0,_0x1dd89c){return new BPromise(function(_0x2749b5,_0x4f4c4d){return client['request'](_0x240588,_0x1dd89c)[_0xa143('0x9')](function(_0x46e2cc){logger[_0xa143('0xa')](_0xa143('0xb'),_0x506fa0,'request\x20sent');logger['debug'](_0xa143('0xc'),_0x506fa0,_0xa143('0xd'),JSON[_0xa143('0xe')](_0x46e2cc));if(_0x46e2cc['error']){if(_0x46e2cc[_0xa143('0xf')]['code']===0x1f4){logger[_0xa143('0xf')](_0xa143('0xb'),_0x506fa0,_0x46e2cc[_0xa143('0xf')][_0xa143('0x10')]);return _0x4f4c4d(_0x46e2cc[_0xa143('0xf')][_0xa143('0x10')]);}logger[_0xa143('0xf')]('SalesforceField,\x20%s,\x20%s',_0x506fa0,_0x46e2cc[_0xa143('0xf')][_0xa143('0x10')]);return _0x2749b5(_0x46e2cc[_0xa143('0xf')][_0xa143('0x10')]);}else{logger[_0xa143('0xa')](_0xa143('0xb'),_0x506fa0,_0xa143('0xd'));_0x2749b5(_0x46e2cc[_0xa143('0x11')][_0xa143('0x10')]);}})[_0xa143('0x12')](function(_0x1dc299){logger[_0xa143('0xf')](_0xa143('0xb'),_0x506fa0,_0x1dc299);_0x4f4c4d(_0x1dc299);});});}
\ No newline at end of file
+var _0x627a=['request\x20sent','SalesforceField,\x20%s,\x20%s,\x20%s','stringify','error','SalesforceField,\x20%s,\x20%s','message','info','result','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/environment','client','http','request','then'];(function(_0x30949b,_0x397e5a){var _0x4cdc35=function(_0x134ac6){while(--_0x134ac6){_0x30949b['push'](_0x30949b['shift']());}};_0x4cdc35(++_0x397e5a);}(_0x627a,0x1e8));var _0xa627=function(_0x16f6c8,_0x4f72b8){_0x16f6c8=_0x16f6c8-0x0;var _0x1068c9=_0x627a[_0x16f6c8];return _0x1068c9;};'use strict';var _=require(_0xa627('0x0'));var util=require(_0xa627('0x1'));var moment=require(_0xa627('0x2'));var BPromise=require(_0xa627('0x3'));var rs=require(_0xa627('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa627('0x5'))['db'];var utils=require(_0xa627('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0xa627('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xa627('0x8')][_0xa627('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x24fb78,_0x4e86f2,_0x43923b){return new BPromise(function(_0x42e3f7,_0x4cfbd1){return client[_0xa627('0xa')](_0x24fb78,_0x43923b)[_0xa627('0xb')](function(_0x3ae249){logger['info']('SalesforceField,\x20%s,\x20%s',_0x4e86f2,_0xa627('0xc'));logger['debug'](_0xa627('0xd'),_0x4e86f2,'request\x20sent',JSON[_0xa627('0xe')](_0x3ae249));if(_0x3ae249[_0xa627('0xf')]){if(_0x3ae249[_0xa627('0xf')]['code']===0x1f4){logger[_0xa627('0xf')](_0xa627('0x10'),_0x4e86f2,_0x3ae249['error'][_0xa627('0x11')]);return _0x4cfbd1(_0x3ae249[_0xa627('0xf')]['message']);}logger['error'](_0xa627('0x10'),_0x4e86f2,_0x3ae249['error'][_0xa627('0x11')]);return _0x42e3f7(_0x3ae249[_0xa627('0xf')][_0xa627('0x11')]);}else{logger[_0xa627('0x12')](_0xa627('0x10'),_0x4e86f2,_0xa627('0xc'));_0x42e3f7(_0x3ae249[_0xa627('0x13')][_0xa627('0x11')]);}})['catch'](function(_0x400fd6){logger[_0xa627('0xf')](_0xa627('0x10'),_0x4e86f2,_0x400fd6);_0x4cfbd1(_0x400fd6);});});}
\ No newline at end of file
index 77051e9..273ddf7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdddf=['show','/:id/configurations','/:id/fields','post','addConfiguration','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/:id'];(function(_0x5a24e7,_0x155edc){var _0x3c177c=function(_0x1e1281){while(--_0x1e1281){_0x5a24e7['push'](_0x5a24e7['shift']());}};_0x3c177c(++_0x155edc);}(_0xdddf,0x17a));var _0xfddd=function(_0x42b594,_0x517a49){_0x42b594=_0x42b594-0x0;var _0xb611b8=_0xdddf[_0x42b594];return _0xb611b8;};'use strict';var multer=require(_0xfddd('0x0'));var util=require(_0xfddd('0x1'));var path=require(_0xfddd('0x2'));var timeout=require(_0xfddd('0x3'));var express=require(_0xfddd('0x4'));var router=express[_0xfddd('0x5')]();var fs_extra=require(_0xfddd('0x6'));var auth=require(_0xfddd('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0xfddd('0x8'));var controller=require('./intServicenowAccount.controller');router[_0xfddd('0x9')]('/',auth[_0xfddd('0xa')](),controller[_0xfddd('0xb')]);router[_0xfddd('0x9')](_0xfddd('0xc'),auth['isAuthenticated'](),controller[_0xfddd('0xd')]);router[_0xfddd('0x9')](_0xfddd('0xe'),auth['isAuthenticated'](),controller['getConfigurations']);router['get'](_0xfddd('0xf'),auth[_0xfddd('0xa')](),controller['getFields']);router[_0xfddd('0x10')]('/',auth[_0xfddd('0xa')](),controller['create']);router['post'](_0xfddd('0xe'),auth[_0xfddd('0xa')](),controller[_0xfddd('0x11')]);router[_0xfddd('0x12')](_0xfddd('0xc'),auth['isAuthenticated'](),controller[_0xfddd('0x13')]);router[_0xfddd('0x14')](_0xfddd('0xc'),auth['isAuthenticated'](),controller[_0xfddd('0x15')]);module[_0xfddd('0x16')]=router;
\ No newline at end of file
+var _0x556d=['/:id','destroy','exports','multer','util','path','express','Router','../../components/auth/service','./intServicenowAccount.controller','get','isAuthenticated','/:id/fields','getFields','create','post'];(function(_0x23e7c1,_0x35110c){var _0x1add43=function(_0x238918){while(--_0x238918){_0x23e7c1['push'](_0x23e7c1['shift']());}};_0x1add43(++_0x35110c);}(_0x556d,0x83));var _0xd556=function(_0x11ed93,_0x50b9dd){_0x11ed93=_0x11ed93-0x0;var _0x196847=_0x556d[_0x11ed93];return _0x196847;};'use strict';var multer=require(_0xd556('0x0'));var util=require(_0xd556('0x1'));var path=require(_0xd556('0x2'));var timeout=require('connect-timeout');var express=require(_0xd556('0x3'));var router=express[_0xd556('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xd556('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xd556('0x6'));router[_0xd556('0x7')]('/',auth[_0xd556('0x8')](),controller['index']);router[_0xd556('0x7')]('/:id',auth[_0xd556('0x8')](),controller['show']);router[_0xd556('0x7')]('/:id/configurations',auth['isAuthenticated'](),controller['getConfigurations']);router['get'](_0xd556('0x9'),auth['isAuthenticated'](),controller[_0xd556('0xa')]);router['post']('/',auth['isAuthenticated'](),controller[_0xd556('0xb')]);router[_0xd556('0xc')]('/:id/configurations',auth[_0xd556('0x8')](),controller['addConfiguration']);router['put'](_0xd556('0xd'),auth['isAuthenticated'](),controller['update']);router['delete']('/:id',auth[_0xd556('0x8')](),controller[_0xd556('0xe')]);module[_0xd556('0xf')]=router;
\ No newline at end of file
index 7a9f0e3..bf93c2c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd79=['exports','STRING','username'];(function(_0x19db25,_0x4244be){var _0x5ec07c=function(_0x3330b2){while(--_0x3330b2){_0x19db25['push'](_0x19db25['shift']());}};_0x5ec07c(++_0x4244be);}(_0xbd79,0xab));var _0x9bd7=function(_0x42835a,_0x5259a7){_0x42835a=_0x42835a-0x0;var _0xa4f23b=_0xbd79[_0x42835a];return _0xa4f23b;};'use strict';var Sequelize=require('sequelize');module[_0x9bd7('0x0')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x9bd7('0x1')]},'username':{'type':Sequelize[_0x9bd7('0x1')],'unique':_0x9bd7('0x2')},'password':{'type':Sequelize[_0x9bd7('0x1')]},'email':{'type':Sequelize[_0x9bd7('0x1')]},'remoteUri':{'type':Sequelize['STRING'],'unique':'remoteUri'},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
+var _0x7a20=['remoteUri','STRING','username'];(function(_0x183306,_0x442f6a){var _0x181d88=function(_0x2fc4e5){while(--_0x2fc4e5){_0x183306['push'](_0x183306['shift']());}};_0x181d88(++_0x442f6a);}(_0x7a20,0x1c9));var _0x07a2=function(_0x5018fb,_0x4f6b29){_0x5018fb=_0x5018fb-0x0;var _0x132f87=_0x7a20[_0x5018fb];return _0x132f87;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x07a2('0x0')]},'description':{'type':Sequelize[_0x07a2('0x0')]},'username':{'type':Sequelize[_0x07a2('0x0')],'unique':_0x07a2('0x1')},'password':{'type':Sequelize[_0x07a2('0x0')]},'email':{'type':Sequelize[_0x07a2('0x0')]},'remoteUri':{'type':Sequelize[_0x07a2('0x0')],'unique':_0x07a2('0x2')},'serverUrl':{'type':Sequelize[_0x07a2('0x0')],'allowNull':![]}};
\ No newline at end of file
index dd24cb9..4652524 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2980=['sys_id','contact_type','urgency','problem_id','company','reassignment_count','activity_due','severity','sla_due','approval','comments_and_work_notes','sys_mod_count','reopen_count','sys_tags','escalation','upon_approval','correlation_id','username','remoteUri','serverUrl','lastIndexOf','format','password','GET','incident?sysparm_display_value=all','result','log','incident\x20table\x20objects','remove','includes','forEach','internalType','label','push','assign','TCL:\x20_object','TCL:\x20exports.getEntityFields\x20->\x20_objectsCustom','concat','statusCode','error','boolean','True','False','inactive','false','value','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','../../components/integrations/configuration','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','end','sendStatus','stack','name','send','index','map','ServicenowAccount','fieldName','type','model','query','keys','intersection','attributes','fields','length','sort','where','filters','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','find','body','findOne','order','pick','getConfigurations','nolimit','addConfiguration','AccountId','Subjects','getSubjects','Descriptions','getDescriptions','channel','ServicenowConfiguration','create','ServicenowField','getFields','hold_reason','knowledge','subcategory','close_code','notify','category','made_sla','caused_by','watch_list','upon_reject','sys_updated_on','child_incidents','number','resolved_by','sys_updated_by','user_input','sys_domain','state','sys_created_by','calendar_stc','delivery_plan','impact','work_notes_list','business_service','sys_domain_path','rfc','time_worked','business_duration','work_end','reopened_time','resolved_at','caller_id','approval_set','work_notes','short_description','correlation_display','work_start','assignment_group','business_stc','additional_assignee_list','calendar_duration','close_notes','closed_by','follow_up','parent_incident'];(function(_0x106b21,_0x22cefc){var _0x5b079f=function(_0x5b99aa){while(--_0x5b99aa){_0x106b21['push'](_0x106b21['shift']());}};_0x5b079f(++_0x22cefc);}(_0x2980,0x19a));var _0x0298=function(_0x4b3303,_0x9107f3){_0x4b3303=_0x4b3303-0x0;var _0x535f64=_0x2980[_0x4b3303];return _0x535f64;};'use strict';var emlformat=require(_0x0298('0x0'));var rimraf=require(_0x0298('0x1'));var zipdir=require(_0x0298('0x2'));var jsonpatch=require(_0x0298('0x3'));var rp=require(_0x0298('0x4'));var moment=require(_0x0298('0x5'));var BPromise=require(_0x0298('0x6'));var Mustache=require(_0x0298('0x7'));var util=require(_0x0298('0x8'));var path=require(_0x0298('0x9'));var sox=require(_0x0298('0xa'));var csv=require(_0x0298('0xb'));var ejs=require(_0x0298('0xc'));var fs=require('fs');var fs_extra=require(_0x0298('0xd'));var _=require('lodash');var squel=require(_0x0298('0xe'));var crypto=require(_0x0298('0xf'));var jsforce=require(_0x0298('0x10'));var deskjs=require(_0x0298('0x11'));var toCsv=require('to-csv');var querystring=require(_0x0298('0x12'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x0298('0x13'));var as=require(_0x0298('0x14'));var hardwareService=require(_0x0298('0x15'));var logger=require(_0x0298('0x16'))(_0x0298('0x17'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x0298('0x18'));var db=require(_0x0298('0x19'))['db'];var integrations=require(_0x0298('0x1a'));function respondWithStatusCode(_0x5f0f0a,_0x4498b1){_0x4498b1=_0x4498b1||0xcc;return function(_0x2ab8ca){if(_0x2ab8ca){return _0x5f0f0a['sendStatus'](_0x4498b1);}return _0x5f0f0a['status'](_0x4498b1)['end']();};}function respondWithResult(_0x494e88,_0x501f2c){_0x501f2c=_0x501f2c||0xc8;return function(_0x1b5ac2){if(_0x1b5ac2){return _0x494e88[_0x0298('0x1b')](_0x501f2c)[_0x0298('0x1c')](_0x1b5ac2);}};}function respondWithFilteredResult(_0x4b7646,_0x478ed4){return function(_0x52bb97){if(_0x52bb97){var _0x5c1db7=typeof _0x478ed4[_0x0298('0x1d')]===_0x0298('0x1e')&&typeof _0x478ed4[_0x0298('0x1f')]===_0x0298('0x1e');var _0xa8bf00=_0x52bb97[_0x0298('0x20')];var _0x55c089=_0x5c1db7?0x0:_0x478ed4[_0x0298('0x1d')];var _0x2d0183=_0x5c1db7?_0x52bb97[_0x0298('0x20')]:_0x478ed4[_0x0298('0x1d')]+_0x478ed4['limit'];var _0x4cb518;if(_0x2d0183>=_0xa8bf00){_0x2d0183=_0xa8bf00;_0x4cb518=0xc8;}else{_0x4cb518=0xce;}_0x4b7646[_0x0298('0x1b')](_0x4cb518);return _0x4b7646[_0x0298('0x21')](_0x0298('0x22'),_0x55c089+'-'+_0x2d0183+'/'+_0xa8bf00)[_0x0298('0x1c')](_0x52bb97);}return null;};}function patchUpdates(_0x167098){return function(_0x5ecad6){try{jsonpatch[_0x0298('0x23')](_0x5ecad6,_0x167098,!![]);}catch(_0x56b79d){return BPromise[_0x0298('0x24')](_0x56b79d);}return _0x5ecad6[_0x0298('0x25')]();};}function saveUpdates(_0x53adcf,_0x2456a6){return function(_0x1b20ab){if(_0x1b20ab){return _0x1b20ab[_0x0298('0x26')](_0x53adcf)[_0x0298('0x27')](function(_0x41ce7d){return _0x41ce7d;});}return null;};}function removeEntity(_0x139448,_0x19df15){return function(_0x4f3413){if(_0x4f3413){return _0x4f3413[_0x0298('0x28')]()[_0x0298('0x27')](function(){_0x139448[_0x0298('0x1b')](0xcc)[_0x0298('0x29')]();});}};}function handleEntityNotFound(_0x167fc5,_0x42349e){return function(_0x3acee5){if(!_0x3acee5){_0x167fc5[_0x0298('0x2a')](0x194);}return _0x3acee5;};}function handleError(_0x37ef26,_0x1b476d){_0x1b476d=_0x1b476d||0x1f4;return function(_0x128ce0){logger['error'](_0x128ce0[_0x0298('0x2b')]);if(_0x128ce0[_0x0298('0x2c')]){delete _0x128ce0[_0x0298('0x2c')];}_0x37ef26['status'](_0x1b476d)[_0x0298('0x2d')](_0x128ce0);};}exports[_0x0298('0x2e')]=function(_0x178a3d,_0x5d64a8){var _0x226878={},_0xf8df55={},_0x36f3d2={'count':0x0,'rows':[]};var _0x4cd0f1=_[_0x0298('0x2f')](db[_0x0298('0x30')]['rawAttributes'],function(_0x1b9e1b){return{'name':_0x1b9e1b[_0x0298('0x31')],'type':_0x1b9e1b[_0x0298('0x32')]['key']};});_0xf8df55[_0x0298('0x33')]=_['map'](_0x4cd0f1,_0x0298('0x2c'));_0xf8df55[_0x0298('0x34')]=_[_0x0298('0x35')](_0x178a3d[_0x0298('0x34')]);_0xf8df55['filters']=_[_0x0298('0x36')](_0xf8df55[_0x0298('0x33')],_0xf8df55[_0x0298('0x34')]);_0x226878[_0x0298('0x37')]=_[_0x0298('0x36')](_0xf8df55[_0x0298('0x33')],qs[_0x0298('0x38')](_0x178a3d[_0x0298('0x34')][_0x0298('0x38')]));_0x226878[_0x0298('0x37')]=_0x226878['attributes'][_0x0298('0x39')]?_0x226878['attributes']:_0xf8df55[_0x0298('0x33')];if(!_0x178a3d['query']['hasOwnProperty']('nolimit')){_0x226878[_0x0298('0x1f')]=qs[_0x0298('0x1f')](_0x178a3d[_0x0298('0x34')]['limit']);_0x226878['offset']=qs[_0x0298('0x1d')](_0x178a3d[_0x0298('0x34')]['offset']);}_0x226878['order']=qs['sort'](_0x178a3d[_0x0298('0x34')][_0x0298('0x3a')]);_0x226878[_0x0298('0x3b')]=qs[_0x0298('0x3c')](_['pick'](_0x178a3d['query'],_0xf8df55['filters']),_0x4cd0f1);if(_0x178a3d['query'][_0x0298('0x3d')]){_0x226878['where']=_[_0x0298('0x3e')](_0x226878[_0x0298('0x3b')],{'$or':_[_0x0298('0x2f')](_0x4cd0f1,function(_0x5b6ca7){if(_0x5b6ca7[_0x0298('0x32')]!==_0x0298('0x3f')){var _0x3daffa={};_0x3daffa[_0x5b6ca7[_0x0298('0x2c')]]={'$like':'%'+_0x178a3d[_0x0298('0x34')][_0x0298('0x3d')]+'%'};return _0x3daffa;}})});}_0x226878=_[_0x0298('0x3e')]({},_0x226878,_0x178a3d[_0x0298('0x40')]);var _0xdb46f4={'where':_0x226878[_0x0298('0x3b')]};return db[_0x0298('0x30')][_0x0298('0x20')](_0xdb46f4)[_0x0298('0x27')](function(_0x561e9d){_0x36f3d2[_0x0298('0x20')]=_0x561e9d;if(_0x178a3d[_0x0298('0x34')][_0x0298('0x41')]){_0x226878[_0x0298('0x42')]=[{'all':!![]}];}return db['ServicenowAccount'][_0x0298('0x43')](_0x226878);})[_0x0298('0x27')](function(_0x349301){_0x36f3d2[_0x0298('0x44')]=_0x349301;return _0x36f3d2;})[_0x0298('0x27')](respondWithFilteredResult(_0x5d64a8,_0x226878))[_0x0298('0x45')](handleError(_0x5d64a8,null));};exports[_0x0298('0x46')]=function(_0x53e296,_0x2ab413){var _0x191485={'raw':![],'where':{'id':_0x53e296[_0x0298('0x47')]['id']}},_0x1c405f={};_0x1c405f['model']=_[_0x0298('0x35')](db['ServicenowAccount'][_0x0298('0x48')]);_0x1c405f[_0x0298('0x34')]=_[_0x0298('0x35')](_0x53e296[_0x0298('0x34')]);_0x1c405f[_0x0298('0x3c')]=_[_0x0298('0x36')](_0x1c405f[_0x0298('0x33')],_0x1c405f[_0x0298('0x34')]);_0x191485[_0x0298('0x37')]=_[_0x0298('0x36')](_0x1c405f[_0x0298('0x33')],qs[_0x0298('0x38')](_0x53e296[_0x0298('0x34')][_0x0298('0x38')]));_0x191485[_0x0298('0x37')]=_0x191485['attributes'][_0x0298('0x39')]?_0x191485[_0x0298('0x37')]:_0x1c405f[_0x0298('0x33')];if(_0x53e296[_0x0298('0x34')][_0x0298('0x41')]){_0x191485[_0x0298('0x42')]=[{'all':!![]}];}_0x191485=_[_0x0298('0x3e')]({},_0x191485,_0x53e296[_0x0298('0x40')]);return db['ServicenowAccount'][_0x0298('0x49')](_0x191485)[_0x0298('0x27')](handleEntityNotFound(_0x2ab413,null))[_0x0298('0x27')](respondWithResult(_0x2ab413,null))['catch'](handleError(_0x2ab413,null));};exports['create']=function(_0x2a8e41,_0xde5ee9){return db[_0x0298('0x30')]['create'](_0x2a8e41[_0x0298('0x4a')],{})[_0x0298('0x27')](respondWithResult(_0xde5ee9,0xc9))[_0x0298('0x45')](handleError(_0xde5ee9,null));};exports[_0x0298('0x26')]=function(_0x20d470,_0x1fef9e){if(_0x20d470[_0x0298('0x4a')]['id']){delete _0x20d470['body']['id'];}return db[_0x0298('0x30')]['find']({'where':{'id':_0x20d470['params']['id']}})['then'](handleEntityNotFound(_0x1fef9e,null))[_0x0298('0x27')](saveUpdates(_0x20d470[_0x0298('0x4a')],null))['then'](respondWithResult(_0x1fef9e,null))[_0x0298('0x45')](handleError(_0x1fef9e,null));};exports[_0x0298('0x28')]=function(_0x5e70d8,_0x8e5c29){return db['ServicenowAccount'][_0x0298('0x49')]({'where':{'id':_0x5e70d8[_0x0298('0x47')]['id']}})[_0x0298('0x27')](handleEntityNotFound(_0x8e5c29,null))[_0x0298('0x27')](removeEntity(_0x8e5c29,null))[_0x0298('0x45')](handleError(_0x8e5c29,null));};exports['getConfigurations']=function(_0x4799bd,_0x5ad754,_0x1324f3){var _0x3bfd8f={};var _0x15c562={};var _0x3afb6d;var _0x2bd06;return db[_0x0298('0x30')][_0x0298('0x4b')]({'where':{'id':_0x4799bd[_0x0298('0x47')]['id']}})[_0x0298('0x27')](handleEntityNotFound(_0x5ad754,null))['then'](function(_0x498b42){if(_0x498b42){_0x3afb6d=_0x498b42;_0x15c562['model']=_[_0x0298('0x35')](db['ServicenowConfiguration'][_0x0298('0x48')]);_0x15c562['query']=_[_0x0298('0x35')](_0x4799bd['query']);_0x15c562[_0x0298('0x3c')]=_[_0x0298('0x36')](_0x15c562[_0x0298('0x33')],_0x15c562[_0x0298('0x34')]);_0x3bfd8f[_0x0298('0x37')]=_[_0x0298('0x36')](_0x15c562[_0x0298('0x33')],qs[_0x0298('0x38')](_0x4799bd[_0x0298('0x34')][_0x0298('0x38')]));_0x3bfd8f[_0x0298('0x37')]=_0x3bfd8f[_0x0298('0x37')][_0x0298('0x39')]?_0x3bfd8f[_0x0298('0x37')]:_0x15c562['model'];_0x3bfd8f[_0x0298('0x4c')]=qs[_0x0298('0x3a')](_0x4799bd[_0x0298('0x34')]['sort']);_0x3bfd8f[_0x0298('0x3b')]=qs[_0x0298('0x3c')](_[_0x0298('0x4d')](_0x4799bd[_0x0298('0x34')],_0x15c562[_0x0298('0x3c')]));if(_0x4799bd[_0x0298('0x34')]['filter']){_0x3bfd8f[_0x0298('0x3b')]=_[_0x0298('0x3e')](_0x3bfd8f['where'],{'$or':_[_0x0298('0x2f')](_0x3bfd8f[_0x0298('0x37')],function(_0x25156a){var _0x24fa03={};_0x24fa03[_0x25156a]={'$like':'%'+_0x4799bd[_0x0298('0x34')][_0x0298('0x3d')]+'%'};return _0x24fa03;})});}_0x3bfd8f=_[_0x0298('0x3e')]({},_0x3bfd8f,_0x4799bd[_0x0298('0x40')]);return _0x3afb6d[_0x0298('0x4e')](_0x3bfd8f);}})[_0x0298('0x27')](function(_0x433c9e){if(_0x433c9e){_0x2bd06=_0x433c9e['length'];if(!_0x4799bd[_0x0298('0x34')]['hasOwnProperty'](_0x0298('0x4f'))){_0x3bfd8f[_0x0298('0x1f')]=qs[_0x0298('0x1f')](_0x4799bd[_0x0298('0x34')]['limit']);_0x3bfd8f['offset']=qs['offset'](_0x4799bd[_0x0298('0x34')]['offset']);}return _0x3afb6d['getConfigurations'](_0x3bfd8f);}})['then'](function(_0x425296){if(_0x425296){return _0x425296?{'count':_0x2bd06,'rows':_0x425296}:null;}})[_0x0298('0x27')](respondWithResult(_0x5ad754,null))['catch'](handleError(_0x5ad754,null));};exports[_0x0298('0x50')]=function(_0x1fc4fd,_0x4e0ca2,_0x195a37){if(_0x1fc4fd[_0x0298('0x4a')]['id']){delete _0x1fc4fd[_0x0298('0x4a')]['id'];}return db['ServicenowAccount'][_0x0298('0x4b')]({'where':{'id':_0x1fc4fd[_0x0298('0x47')]['id']}})['then'](handleEntityNotFound(_0x4e0ca2,null))['then'](function(_0x9cdcdf){if(_0x9cdcdf){_0x1fc4fd[_0x0298('0x4a')][_0x0298('0x51')]=_0x9cdcdf['id'];_0x1fc4fd['body'][_0x0298('0x52')]=integrations[_0x0298('0x53')](_0x1fc4fd[_0x0298('0x4a')]['channel'],_0x1fc4fd[_0x0298('0x4a')]['type']);_0x1fc4fd['body'][_0x0298('0x54')]=integrations[_0x0298('0x55')](_0x1fc4fd[_0x0298('0x4a')][_0x0298('0x56')],_0x1fc4fd[_0x0298('0x4a')][_0x0298('0x32')]);return db[_0x0298('0x57')][_0x0298('0x58')](_0x1fc4fd[_0x0298('0x4a')],{'include':[{'model':db[_0x0298('0x59')],'as':_0x0298('0x52')},{'model':db[_0x0298('0x59')],'as':_0x0298('0x54')}]});}return null;})[_0x0298('0x27')](respondWithResult(_0x4e0ca2,null))['catch'](handleError(_0x4e0ca2,null));};exports[_0x0298('0x5a')]=function(_0x47ade7,_0x1386e4,_0x37b128){var _0x440a92=['made_sla',_0x0298('0x5b'),_0x0298('0x5c'),_0x0298('0x5d'),_0x0298('0x5e'),_0x0298('0x5f'),'incident_state','severity',_0x0298('0x60')];var _0x1495b6=['parent',_0x0298('0x61'),_0x0298('0x62'),_0x0298('0x63'),_0x0298('0x64'),_0x0298('0x65'),_0x0298('0x66'),_0x0298('0x5b'),'approval_history',_0x0298('0x67'),_0x0298('0x68'),_0x0298('0x69'),'opened_by',_0x0298('0x6a'),'sys_created_on',_0x0298('0x6b'),_0x0298('0x6c'),_0x0298('0x6d'),_0x0298('0x5c'),'order',_0x0298('0x6e'),'closed_at','cmdb_ci',_0x0298('0x6f'),_0x0298('0x70'),'active',_0x0298('0x71'),_0x0298('0x72'),'priority',_0x0298('0x73'),_0x0298('0x74'),_0x0298('0x75'),'expected_start','opened_at',_0x0298('0x76'),'group_list',_0x0298('0x77'),_0x0298('0x78'),_0x0298('0x79'),_0x0298('0x7a'),_0x0298('0x7b'),_0x0298('0x5d'),_0x0298('0x7c'),_0x0298('0x7d'),_0x0298('0x5e'),_0x0298('0x7e'),'delivery_task',_0x0298('0x7f'),_0x0298('0x80'),_0x0298('0x81'),_0x0298('0x82'),'description',_0x0298('0x83'),_0x0298('0x5f'),'sys_class_name',_0x0298('0x84'),_0x0298('0x85'),_0x0298('0x86'),_0x0298('0x87'),_0x0298('0x88'),_0x0298('0x89'),'reopened_by','incident_state',_0x0298('0x8a'),_0x0298('0x8b'),_0x0298('0x8c'),_0x0298('0x8d'),_0x0298('0x8e'),'assigned_to',_0x0298('0x8f'),'comments',_0x0298('0x90'),_0x0298('0x91'),_0x0298('0x92'),'due_date',_0x0298('0x93'),_0x0298('0x94'),_0x0298('0x95'),_0x0298('0x96'),_0x0298('0x97'),_0x0298('0x98'),'location','category'];var _0x437161='';var _0x3222ae='';var _0x56d87d=[];var _0x119c4b='';var _0x16c9ee='';var _0x3865cc=[];var _0x1f7211='';var _0x19bb29='';var _0x81092f={};var _0x26beee='';return db[_0x0298('0x30')][_0x0298('0x4b')]({'where':{'id':_0x47ade7['params']['id']},'attributes':['id',_0x0298('0x99'),'password','email',_0x0298('0x9a'),_0x0298('0x9b')]})['then'](handleEntityNotFound(_0x1386e4,null))[_0x0298('0x27')](function(_0x4889e7){if(_0x4889e7){_0x26beee=_0x4889e7[_0x0298('0x9a')];var _0x233385=_0x26beee['slice'](-0x1);if(_0x233385==='/'){_0x26beee=_0x26beee['substring'](0x0,_0x26beee[_0x0298('0x9c')](_0x233385));}_0x19bb29=util[_0x0298('0x9d')]('%s/api/now/doc/table/schema/',_0x26beee);_0x1f7211=util[_0x0298('0x9d')]('%s/api/now/table/',_0x26beee);_0x81092f={'user':_0x4889e7[_0x0298('0x99')],'pass':_0x4889e7[_0x0298('0x9e')]};var _0x5ea1c6={'method':_0x0298('0x9f'),'uri':_0x19bb29+_0x0298('0xa0'),'auth':_0x81092f,'json':!![]};return rp(_0x5ea1c6);}})[_0x0298('0x27')](function(_0x52f08c){if(_0x52f08c[_0x0298('0xa1')]['length']>0x0){_0x437161=_0x52f08c[_0x0298('0xa1')];}console[_0x0298('0xa2')](_0x0298('0xa3'),_0x437161);_0x3865cc=[];_0x3222ae=Object['assign']([],_0x437161);_[_0x0298('0xa4')](_0x3222ae,function(_0x3bb699){return!_0x440a92[_0x0298('0xa5')](_0x3bb699[_0x0298('0x2c')]);});_0x3222ae[_0x0298('0xa6')](function(_0x2b4b24){var _0x122f41=createFieldObject(_0x1f7211,_0x81092f,_0x2b4b24[_0x0298('0xa7')],_0x2b4b24['name'],_0x2b4b24[_0x0298('0xa8')],![]);_0x3865cc[_0x0298('0xa9')](_0x122f41);});return Promise['all'](_0x3865cc);})['then'](function(_0x478669){_0x56d87d=_0x478669;_0x119c4b=Object[_0x0298('0xaa')]([],_0x437161);console[_0x0298('0xa2')](_0x0298('0xab'),_0x437161);_[_0x0298('0xa4')](_0x119c4b,function(_0x3c1fe7){return _0x1495b6[_0x0298('0xa5')](_0x3c1fe7[_0x0298('0x2c')]);});console[_0x0298('0xa2')](_0x0298('0xac'),_0x119c4b);_0x3865cc=[];_0x119c4b[_0x0298('0xa6')](function(_0x1e468d){var _0x5847cf=createFieldObject(_0x1f7211,_0x81092f,_0x1e468d[_0x0298('0xa7')],_0x1e468d[_0x0298('0x2c')],_0x1e468d[_0x0298('0xa8')],!![]);_0x3865cc[_0x0298('0xa9')](_0x5847cf);});return Promise['all'](_0x3865cc);})[_0x0298('0x27')](function(_0xf5133e){_0x16c9ee=_0xf5133e;var _0x5f0259=_0x56d87d[_0x0298('0xad')](_0x16c9ee);return{'count':_0x5f0259[_0x0298('0x39')],'rows':_0x5f0259};})[_0x0298('0x27')](respondWithResult(_0x1386e4,null))[_0x0298('0x45')](function(_0x55de93){console[_0x0298('0xa2')]('ServiceNow\x20error:\x20'+_0x55de93);var _0x50f892=_0x47ade7[_0x0298('0x34')]['test']?0x1f4:_0x55de93[_0x0298('0xae')]||0x1f4;logger[_0x0298('0xaf')](_0x55de93['stack']);delete _0x55de93[_0x0298('0x2c')];if(_0x50f892===0x191){_0x50f892=0x190;}_0x1386e4[_0x0298('0x1b')](_0x50f892)['send'](_0x47ade7[_0x0298('0x34')]['test']?{'message':'Wrong\x20credentials','statusCode':_0x55de93[_0x0298('0xae')]}:_0x55de93);});};function createFieldObject(_0x457e31,_0x2ad44d,_0x5c7042,_0x3804ef,_0x178a1a,_0x1d046e){return new Promise(function(_0x406ad9,_0x54265e){var _0x1561f4={'id':_0x3804ef,'name':_0x178a1a,'custom':_0x1d046e};if(_0x5c7042===_0x0298('0xb0')){_0x1561f4[_0x0298('0x40')]=[{'name':_0x0298('0xb1'),'value':'true'},{'name':_0x0298('0xb2'),'value':'false'}];_0x406ad9(_0x1561f4);}else{var _0x401c23={'method':_0x0298('0x9f'),'uri':_0x457e31+'sys_choice?sysparm_query=name=incident^element='+_0x3804ef,'auth':_0x2ad44d,'json':!![]};return rp(_0x401c23)[_0x0298('0x27')](function(_0x40497a){var _0x31163f=[];if(_0x40497a[_0x0298('0xa1')][_0x0298('0x39')]>0x0){_0x40497a[_0x0298('0xa1')][_0x0298('0xa6')](function(_0x38e219){if(_0x38e219[_0x0298('0xb3')]===_0x0298('0xb4')){var _0x1154cd={'name':_0x38e219[_0x0298('0xa8')],'value':_0x38e219[_0x0298('0xb5')]};_0x31163f[_0x0298('0xa9')](_0x1154cd);}});}_0x1561f4[_0x0298('0x40')]=_0x31163f;if(_0x1561f4[_0x0298('0x40')]['length']>0x0){_0x406ad9(_0x1561f4);}else{if(_0x1d046e==![]){_0x406ad9();}else{_0x406ad9(_0x1561f4);}}});}});}
\ No newline at end of file
+var _0x04b4=['../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','update','then','error','stack','name','send','index','ServicenowAccount','rawAttributes','fieldName','type','map','query','filters','intersection','model','fields','attributes','length','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','keys','find','create','body','params','destroy','getConfigurations','ServicenowConfiguration','nolimit','findOne','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','ServicenowField','getFields','made_sla','subcategory','close_code','notify','severity','parent','caused_by','watch_list','upon_reject','sys_updated_on','child_incidents','hold_reason','approval_history','number','resolved_by','sys_updated_by','opened_by','user_input','sys_domain','state','sys_created_by','knowledge','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','resolved_at','caller_id','correlation_display','work_start','assignment_group','business_stc','additional_assignee_list','description','calendar_duration','sys_class_name','follow_up','parent_incident','sys_id','contact_type','reopened_by','incident_state','problem_id','company','reassignment_count','activity_due','sla_due','approval','comments_and_work_notes','due_date','reopen_count','escalation','upon_approval','location','category','password','email','remoteUri','slice','lastIndexOf','format','%s/api/now/doc/table/schema/','%s/api/now/table/','username','incident?sysparm_display_value=all','result','log','assign','remove','forEach','internalType','label','push','all','TCL:\x20_object','concat','ServiceNow\x20error:\x20','test','Wrong\x20credentials','statusCode','boolean','True','true','False','GET','inactive','false','value','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','ejs','fs-extra','squel','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'];(function(_0x6f43b9,_0xdb7a3a){var _0x4bf5cb=function(_0x16d6a8){while(--_0x16d6a8){_0x6f43b9['push'](_0x6f43b9['shift']());}};_0x4bf5cb(++_0xdb7a3a);}(_0x04b4,0x15b));var _0x404b=function(_0x58adde,_0x1b9344){_0x58adde=_0x58adde-0x0;var _0x380afe=_0x04b4[_0x58adde];return _0x380afe;};'use strict';var emlformat=require(_0x404b('0x0'));var rimraf=require(_0x404b('0x1'));var zipdir=require(_0x404b('0x2'));var jsonpatch=require(_0x404b('0x3'));var rp=require(_0x404b('0x4'));var moment=require('moment');var BPromise=require(_0x404b('0x5'));var Mustache=require('mustache');var util=require(_0x404b('0x6'));var path=require(_0x404b('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x404b('0x8'));var fs=require('fs');var fs_extra=require(_0x404b('0x9'));var _=require('lodash');var squel=require(_0x404b('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x404b('0xb'));var toCsv=require(_0x404b('0xc'));var querystring=require(_0x404b('0xd'));var Papa=require(_0x404b('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x404b('0xf'));var as=require(_0x404b('0x10'));var hardwareService=require(_0x404b('0x11'));var logger=require(_0x404b('0x12'))(_0x404b('0x13'));var utils=require(_0x404b('0x14'));var config=require(_0x404b('0x15'));var licenseUtil=require(_0x404b('0x16'));var db=require(_0x404b('0x17'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x5c5eca,_0x5b8920){_0x5b8920=_0x5b8920||0xcc;return function(_0x554057){if(_0x554057){return _0x5c5eca[_0x404b('0x18')](_0x5b8920);}return _0x5c5eca[_0x404b('0x19')](_0x5b8920)[_0x404b('0x1a')]();};}function respondWithResult(_0x6fa78b,_0x6a98d9){_0x6a98d9=_0x6a98d9||0xc8;return function(_0x1d1407){if(_0x1d1407){return _0x6fa78b[_0x404b('0x19')](_0x6a98d9)[_0x404b('0x1b')](_0x1d1407);}};}function respondWithFilteredResult(_0x3d89fe,_0x238c71){return function(_0x27d88c){if(_0x27d88c){var _0x3bd400=typeof _0x238c71[_0x404b('0x1c')]===_0x404b('0x1d')&&typeof _0x238c71[_0x404b('0x1e')]===_0x404b('0x1d');var _0x173f4e=_0x27d88c[_0x404b('0x1f')];var _0x3ed701=_0x3bd400?0x0:_0x238c71['offset'];var _0x53a4fc=_0x3bd400?_0x27d88c['count']:_0x238c71['offset']+_0x238c71[_0x404b('0x1e')];var _0x5b07e3;if(_0x53a4fc>=_0x173f4e){_0x53a4fc=_0x173f4e;_0x5b07e3=0xc8;}else{_0x5b07e3=0xce;}_0x3d89fe[_0x404b('0x19')](_0x5b07e3);return _0x3d89fe[_0x404b('0x20')](_0x404b('0x21'),_0x3ed701+'-'+_0x53a4fc+'/'+_0x173f4e)[_0x404b('0x1b')](_0x27d88c);}return null;};}function patchUpdates(_0x183d3e){return function(_0x5f53b9){try{jsonpatch[_0x404b('0x22')](_0x5f53b9,_0x183d3e,!![]);}catch(_0x1ae301){return BPromise['reject'](_0x1ae301);}return _0x5f53b9['save']();};}function saveUpdates(_0x5be04c,_0x4fb1f1){return function(_0x2aa702){if(_0x2aa702){return _0x2aa702[_0x404b('0x23')](_0x5be04c)[_0x404b('0x24')](function(_0x514ca4){return _0x514ca4;});}return null;};}function removeEntity(_0x3fcdd2,_0x1d3807){return function(_0x491710){if(_0x491710){return _0x491710['destroy']()[_0x404b('0x24')](function(){_0x3fcdd2['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x548332,_0x22e5bb){return function(_0x5d4572){if(!_0x5d4572){_0x548332[_0x404b('0x18')](0x194);}return _0x5d4572;};}function handleError(_0x2b2533,_0x280e7f){_0x280e7f=_0x280e7f||0x1f4;return function(_0x376132){logger[_0x404b('0x25')](_0x376132[_0x404b('0x26')]);if(_0x376132[_0x404b('0x27')]){delete _0x376132[_0x404b('0x27')];}_0x2b2533[_0x404b('0x19')](_0x280e7f)[_0x404b('0x28')](_0x376132);};}exports[_0x404b('0x29')]=function(_0x2e1135,_0x3fea4b){var _0x4bcdee={},_0x4ebd7e={},_0x478de0={'count':0x0,'rows':[]};var _0x23bfba=_['map'](db[_0x404b('0x2a')][_0x404b('0x2b')],function(_0x1478d6){return{'name':_0x1478d6[_0x404b('0x2c')],'type':_0x1478d6[_0x404b('0x2d')]['key']};});_0x4ebd7e['model']=_[_0x404b('0x2e')](_0x23bfba,_0x404b('0x27'));_0x4ebd7e[_0x404b('0x2f')]=_['keys'](_0x2e1135[_0x404b('0x2f')]);_0x4ebd7e[_0x404b('0x30')]=_['intersection'](_0x4ebd7e['model'],_0x4ebd7e[_0x404b('0x2f')]);_0x4bcdee['attributes']=_[_0x404b('0x31')](_0x4ebd7e[_0x404b('0x32')],qs[_0x404b('0x33')](_0x2e1135[_0x404b('0x2f')][_0x404b('0x33')]));_0x4bcdee[_0x404b('0x34')]=_0x4bcdee['attributes'][_0x404b('0x35')]?_0x4bcdee[_0x404b('0x34')]:_0x4ebd7e[_0x404b('0x32')];if(!_0x2e1135[_0x404b('0x2f')]['hasOwnProperty']('nolimit')){_0x4bcdee[_0x404b('0x1e')]=qs['limit'](_0x2e1135[_0x404b('0x2f')][_0x404b('0x1e')]);_0x4bcdee[_0x404b('0x1c')]=qs[_0x404b('0x1c')](_0x2e1135[_0x404b('0x2f')]['offset']);}_0x4bcdee[_0x404b('0x36')]=qs['sort'](_0x2e1135[_0x404b('0x2f')][_0x404b('0x37')]);_0x4bcdee[_0x404b('0x38')]=qs[_0x404b('0x30')](_[_0x404b('0x39')](_0x2e1135[_0x404b('0x2f')],_0x4ebd7e[_0x404b('0x30')]),_0x23bfba);if(_0x2e1135[_0x404b('0x2f')]['filter']){_0x4bcdee[_0x404b('0x38')]=_[_0x404b('0x3a')](_0x4bcdee['where'],{'$or':_[_0x404b('0x2e')](_0x23bfba,function(_0x575f94){if(_0x575f94[_0x404b('0x2d')]!==_0x404b('0x3b')){var _0x1d0c44={};_0x1d0c44[_0x575f94[_0x404b('0x27')]]={'$like':'%'+_0x2e1135['query'][_0x404b('0x3c')]+'%'};return _0x1d0c44;}})});}_0x4bcdee=_[_0x404b('0x3a')]({},_0x4bcdee,_0x2e1135[_0x404b('0x3d')]);var _0x5c166c={'where':_0x4bcdee['where']};return db[_0x404b('0x2a')][_0x404b('0x1f')](_0x5c166c)['then'](function(_0x34bde9){_0x478de0[_0x404b('0x1f')]=_0x34bde9;if(_0x2e1135[_0x404b('0x2f')][_0x404b('0x3e')]){_0x4bcdee[_0x404b('0x3f')]=[{'all':!![]}];}return db[_0x404b('0x2a')][_0x404b('0x40')](_0x4bcdee);})[_0x404b('0x24')](function(_0x3d4e60){_0x478de0[_0x404b('0x41')]=_0x3d4e60;return _0x478de0;})[_0x404b('0x24')](respondWithFilteredResult(_0x3fea4b,_0x4bcdee))[_0x404b('0x42')](handleError(_0x3fea4b,null));};exports[_0x404b('0x43')]=function(_0xf82f00,_0x4a80a2){var _0x4a43bd={'raw':![],'where':{'id':_0xf82f00['params']['id']}},_0x1704e6={};_0x1704e6[_0x404b('0x32')]=_[_0x404b('0x44')](db[_0x404b('0x2a')][_0x404b('0x2b')]);_0x1704e6['query']=_[_0x404b('0x44')](_0xf82f00['query']);_0x1704e6[_0x404b('0x30')]=_['intersection'](_0x1704e6['model'],_0x1704e6[_0x404b('0x2f')]);_0x4a43bd[_0x404b('0x34')]=_[_0x404b('0x31')](_0x1704e6[_0x404b('0x32')],qs[_0x404b('0x33')](_0xf82f00[_0x404b('0x2f')][_0x404b('0x33')]));_0x4a43bd['attributes']=_0x4a43bd[_0x404b('0x34')][_0x404b('0x35')]?_0x4a43bd['attributes']:_0x1704e6[_0x404b('0x32')];if(_0xf82f00['query']['includeAll']){_0x4a43bd[_0x404b('0x3f')]=[{'all':!![]}];}_0x4a43bd=_['merge']({},_0x4a43bd,_0xf82f00[_0x404b('0x3d')]);return db[_0x404b('0x2a')][_0x404b('0x45')](_0x4a43bd)['then'](handleEntityNotFound(_0x4a80a2,null))[_0x404b('0x24')](respondWithResult(_0x4a80a2,null))[_0x404b('0x42')](handleError(_0x4a80a2,null));};exports[_0x404b('0x46')]=function(_0xba5d57,_0x159d3d){return db[_0x404b('0x2a')][_0x404b('0x46')](_0xba5d57[_0x404b('0x47')],{})[_0x404b('0x24')](respondWithResult(_0x159d3d,0xc9))[_0x404b('0x42')](handleError(_0x159d3d,null));};exports[_0x404b('0x23')]=function(_0x7f0c8a,_0x5f0aab){if(_0x7f0c8a[_0x404b('0x47')]['id']){delete _0x7f0c8a['body']['id'];}return db[_0x404b('0x2a')][_0x404b('0x45')]({'where':{'id':_0x7f0c8a[_0x404b('0x48')]['id']}})[_0x404b('0x24')](handleEntityNotFound(_0x5f0aab,null))[_0x404b('0x24')](saveUpdates(_0x7f0c8a[_0x404b('0x47')],null))['then'](respondWithResult(_0x5f0aab,null))['catch'](handleError(_0x5f0aab,null));};exports[_0x404b('0x49')]=function(_0x802247,_0x44590d){return db[_0x404b('0x2a')]['find']({'where':{'id':_0x802247[_0x404b('0x48')]['id']}})[_0x404b('0x24')](handleEntityNotFound(_0x44590d,null))[_0x404b('0x24')](removeEntity(_0x44590d,null))[_0x404b('0x42')](handleError(_0x44590d,null));};exports[_0x404b('0x4a')]=function(_0x4d726,_0x5eff54,_0x42ed17){var _0x5c1216={};var _0x18775c={};var _0x2f3ffb;var _0x2c7d6c;return db[_0x404b('0x2a')]['findOne']({'where':{'id':_0x4d726[_0x404b('0x48')]['id']}})[_0x404b('0x24')](handleEntityNotFound(_0x5eff54,null))[_0x404b('0x24')](function(_0x4c164e){if(_0x4c164e){_0x2f3ffb=_0x4c164e;_0x18775c['model']=_[_0x404b('0x44')](db[_0x404b('0x4b')][_0x404b('0x2b')]);_0x18775c['query']=_['keys'](_0x4d726[_0x404b('0x2f')]);_0x18775c['filters']=_[_0x404b('0x31')](_0x18775c['model'],_0x18775c[_0x404b('0x2f')]);_0x5c1216[_0x404b('0x34')]=_['intersection'](_0x18775c[_0x404b('0x32')],qs['fields'](_0x4d726[_0x404b('0x2f')]['fields']));_0x5c1216[_0x404b('0x34')]=_0x5c1216[_0x404b('0x34')][_0x404b('0x35')]?_0x5c1216[_0x404b('0x34')]:_0x18775c[_0x404b('0x32')];_0x5c1216[_0x404b('0x36')]=qs[_0x404b('0x37')](_0x4d726[_0x404b('0x2f')]['sort']);_0x5c1216['where']=qs[_0x404b('0x30')](_['pick'](_0x4d726[_0x404b('0x2f')],_0x18775c[_0x404b('0x30')]));if(_0x4d726['query'][_0x404b('0x3c')]){_0x5c1216[_0x404b('0x38')]=_[_0x404b('0x3a')](_0x5c1216[_0x404b('0x38')],{'$or':_[_0x404b('0x2e')](_0x5c1216[_0x404b('0x34')],function(_0x1dfb57){var _0x20ef0e={};_0x20ef0e[_0x1dfb57]={'$like':'%'+_0x4d726['query'][_0x404b('0x3c')]+'%'};return _0x20ef0e;})});}_0x5c1216=_[_0x404b('0x3a')]({},_0x5c1216,_0x4d726[_0x404b('0x3d')]);return _0x2f3ffb[_0x404b('0x4a')](_0x5c1216);}})[_0x404b('0x24')](function(_0x23f7b3){if(_0x23f7b3){_0x2c7d6c=_0x23f7b3['length'];if(!_0x4d726[_0x404b('0x2f')]['hasOwnProperty'](_0x404b('0x4c'))){_0x5c1216[_0x404b('0x1e')]=qs[_0x404b('0x1e')](_0x4d726[_0x404b('0x2f')][_0x404b('0x1e')]);_0x5c1216[_0x404b('0x1c')]=qs[_0x404b('0x1c')](_0x4d726[_0x404b('0x2f')][_0x404b('0x1c')]);}return _0x2f3ffb['getConfigurations'](_0x5c1216);}})['then'](function(_0x4ba6e4){if(_0x4ba6e4){return _0x4ba6e4?{'count':_0x2c7d6c,'rows':_0x4ba6e4}:null;}})['then'](respondWithResult(_0x5eff54,null))[_0x404b('0x42')](handleError(_0x5eff54,null));};exports['addConfiguration']=function(_0x53716b,_0x506134,_0x565539){if(_0x53716b[_0x404b('0x47')]['id']){delete _0x53716b[_0x404b('0x47')]['id'];}return db[_0x404b('0x2a')][_0x404b('0x4d')]({'where':{'id':_0x53716b[_0x404b('0x48')]['id']}})[_0x404b('0x24')](handleEntityNotFound(_0x506134,null))[_0x404b('0x24')](function(_0x145b83){if(_0x145b83){_0x53716b[_0x404b('0x47')][_0x404b('0x4e')]=_0x145b83['id'];_0x53716b[_0x404b('0x47')][_0x404b('0x4f')]=integrations[_0x404b('0x50')](_0x53716b[_0x404b('0x47')][_0x404b('0x51')],_0x53716b['body'][_0x404b('0x2d')]);_0x53716b[_0x404b('0x47')][_0x404b('0x52')]=integrations[_0x404b('0x53')](_0x53716b['body'][_0x404b('0x51')],_0x53716b[_0x404b('0x47')]['type']);return db[_0x404b('0x4b')][_0x404b('0x46')](_0x53716b[_0x404b('0x47')],{'include':[{'model':db['ServicenowField'],'as':_0x404b('0x4f')},{'model':db[_0x404b('0x54')],'as':_0x404b('0x52')}]});}return null;})['then'](respondWithResult(_0x506134,null))['catch'](handleError(_0x506134,null));};exports[_0x404b('0x55')]=function(_0x11cf50,_0x393b33,_0x75e13d){var _0x1e05d9=[_0x404b('0x56'),'hold_reason','knowledge',_0x404b('0x57'),_0x404b('0x58'),_0x404b('0x59'),'incident_state',_0x404b('0x5a'),'category'];var _0x3abbb0=[_0x404b('0x5b'),_0x404b('0x56'),_0x404b('0x5c'),_0x404b('0x5d'),_0x404b('0x5e'),_0x404b('0x5f'),_0x404b('0x60'),_0x404b('0x61'),_0x404b('0x62'),_0x404b('0x63'),_0x404b('0x64'),_0x404b('0x65'),_0x404b('0x66'),_0x404b('0x67'),'sys_created_on',_0x404b('0x68'),_0x404b('0x69'),_0x404b('0x6a'),_0x404b('0x6b'),_0x404b('0x36'),_0x404b('0x6c'),_0x404b('0x6d'),_0x404b('0x6e'),_0x404b('0x6f'),_0x404b('0x70'),_0x404b('0x71'),_0x404b('0x72'),_0x404b('0x73'),'priority',_0x404b('0x74'),_0x404b('0x75'),_0x404b('0x76'),_0x404b('0x77'),'opened_at',_0x404b('0x78'),_0x404b('0x79'),_0x404b('0x7a'),'reopened_time',_0x404b('0x7b'),_0x404b('0x7c'),'approval_set',_0x404b('0x57'),'work_notes','short_description',_0x404b('0x58'),_0x404b('0x7d'),'delivery_task',_0x404b('0x7e'),_0x404b('0x7f'),_0x404b('0x80'),_0x404b('0x81'),_0x404b('0x82'),_0x404b('0x83'),_0x404b('0x59'),_0x404b('0x84'),'close_notes','closed_by',_0x404b('0x85'),_0x404b('0x86'),_0x404b('0x87'),_0x404b('0x88'),_0x404b('0x89'),_0x404b('0x8a'),'urgency',_0x404b('0x8b'),_0x404b('0x8c'),_0x404b('0x8d'),_0x404b('0x8e'),'assigned_to',_0x404b('0x5a'),'comments',_0x404b('0x8f'),_0x404b('0x90'),_0x404b('0x91'),_0x404b('0x92'),'sys_mod_count',_0x404b('0x93'),'sys_tags',_0x404b('0x94'),_0x404b('0x95'),'correlation_id',_0x404b('0x96'),_0x404b('0x97')];var _0x4fa931='';var _0x42f2c5='';var _0x4b3370=[];var _0x12f521='';var _0x2832ab='';var _0x16602c=[];var _0x49a9e7='';var _0x51abd7='';var _0x1cd9cb={};var _0x132d6a='';return db[_0x404b('0x2a')][_0x404b('0x4d')]({'where':{'id':_0x11cf50[_0x404b('0x48')]['id']},'attributes':['id','username',_0x404b('0x98'),_0x404b('0x99'),_0x404b('0x9a'),'serverUrl']})[_0x404b('0x24')](handleEntityNotFound(_0x393b33,null))[_0x404b('0x24')](function(_0x271599){if(_0x271599){_0x132d6a=_0x271599[_0x404b('0x9a')];var _0xa3b58f=_0x132d6a[_0x404b('0x9b')](-0x1);if(_0xa3b58f==='/'){_0x132d6a=_0x132d6a['substring'](0x0,_0x132d6a[_0x404b('0x9c')](_0xa3b58f));}_0x51abd7=util[_0x404b('0x9d')](_0x404b('0x9e'),_0x132d6a);_0x49a9e7=util[_0x404b('0x9d')](_0x404b('0x9f'),_0x132d6a);_0x1cd9cb={'user':_0x271599[_0x404b('0xa0')],'pass':_0x271599['password']};var _0x4a6e9e={'method':'GET','uri':_0x51abd7+_0x404b('0xa1'),'auth':_0x1cd9cb,'json':!![]};return rp(_0x4a6e9e);}})[_0x404b('0x24')](function(_0x359b79){if(_0x359b79[_0x404b('0xa2')][_0x404b('0x35')]>0x0){_0x4fa931=_0x359b79[_0x404b('0xa2')];}console[_0x404b('0xa3')]('incident\x20table\x20objects',_0x4fa931);_0x16602c=[];_0x42f2c5=Object[_0x404b('0xa4')]([],_0x4fa931);_[_0x404b('0xa5')](_0x42f2c5,function(_0x2b9be1){return!_0x1e05d9['includes'](_0x2b9be1['name']);});_0x42f2c5[_0x404b('0xa6')](function(_0x2191aa){var _0x17bc42=createFieldObject(_0x49a9e7,_0x1cd9cb,_0x2191aa[_0x404b('0xa7')],_0x2191aa['name'],_0x2191aa[_0x404b('0xa8')],![]);_0x16602c[_0x404b('0xa9')](_0x17bc42);});return Promise[_0x404b('0xaa')](_0x16602c);})[_0x404b('0x24')](function(_0xde5e34){_0x4b3370=_0xde5e34;_0x12f521=Object[_0x404b('0xa4')]([],_0x4fa931);console['log'](_0x404b('0xab'),_0x4fa931);_[_0x404b('0xa5')](_0x12f521,function(_0x1ad693){return _0x3abbb0['includes'](_0x1ad693[_0x404b('0x27')]);});console[_0x404b('0xa3')]('TCL:\x20exports.getEntityFields\x20->\x20_objectsCustom',_0x12f521);_0x16602c=[];_0x12f521[_0x404b('0xa6')](function(_0x3f69c7){var _0x3e79a0=createFieldObject(_0x49a9e7,_0x1cd9cb,_0x3f69c7[_0x404b('0xa7')],_0x3f69c7[_0x404b('0x27')],_0x3f69c7[_0x404b('0xa8')],!![]);_0x16602c['push'](_0x3e79a0);});return Promise[_0x404b('0xaa')](_0x16602c);})[_0x404b('0x24')](function(_0x566d51){_0x2832ab=_0x566d51;var _0x5232ad=_0x4b3370[_0x404b('0xac')](_0x2832ab);return{'count':_0x5232ad[_0x404b('0x35')],'rows':_0x5232ad};})['then'](respondWithResult(_0x393b33,null))[_0x404b('0x42')](function(_0x92e4ef){console[_0x404b('0xa3')](_0x404b('0xad')+_0x92e4ef);var _0x41d110=_0x11cf50['query'][_0x404b('0xae')]?0x1f4:_0x92e4ef['statusCode']||0x1f4;logger[_0x404b('0x25')](_0x92e4ef[_0x404b('0x26')]);delete _0x92e4ef[_0x404b('0x27')];if(_0x41d110===0x191){_0x41d110=0x190;}_0x393b33[_0x404b('0x19')](_0x41d110)['send'](_0x11cf50[_0x404b('0x2f')][_0x404b('0xae')]?{'message':_0x404b('0xaf'),'statusCode':_0x92e4ef[_0x404b('0xb0')]}:_0x92e4ef);});};function createFieldObject(_0x41111a,_0x2d4c8f,_0xcfa60c,_0x3f9c52,_0x276917,_0x3f36b9){return new Promise(function(_0x272e17,_0x5e8a72){var _0x3ecc18={'id':_0x3f9c52,'name':_0x276917,'custom':_0x3f36b9};if(_0xcfa60c===_0x404b('0xb1')){_0x3ecc18[_0x404b('0x3d')]=[{'name':_0x404b('0xb2'),'value':_0x404b('0xb3')},{'name':_0x404b('0xb4'),'value':'false'}];_0x272e17(_0x3ecc18);}else{var _0x3367fb={'method':_0x404b('0xb5'),'uri':_0x41111a+'sys_choice?sysparm_query=name=incident^element='+_0x3f9c52,'auth':_0x2d4c8f,'json':!![]};return rp(_0x3367fb)[_0x404b('0x24')](function(_0x327829){var _0xfbcd16=[];if(_0x327829[_0x404b('0xa2')][_0x404b('0x35')]>0x0){_0x327829[_0x404b('0xa2')]['forEach'](function(_0x144ecc){if(_0x144ecc[_0x404b('0xb6')]===_0x404b('0xb7')){var _0x35fe46={'name':_0x144ecc[_0x404b('0xa8')],'value':_0x144ecc[_0x404b('0xb8')]};_0xfbcd16[_0x404b('0xa9')](_0x35fe46);}});}_0x3ecc18[_0x404b('0x3d')]=_0xfbcd16;if(_0x3ecc18[_0x404b('0x3d')][_0x404b('0x35')]>0x0){_0x272e17(_0x3ecc18);}else{if(_0x3f36b9==![]){_0x272e17();}else{_0x272e17(_0x3ecc18);}}});}});}
\ No newline at end of file
index 7cd6645..e6c1b93 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d17=['lodash','util','moment','bluebird','request-promise','rimraf','../../config/environment','./intServicenowAccount.attributes','../../components/integrations/configuration','define','ServicenowAccount','int_servicenow_accounts'];(function(_0x45eaed,_0x21e3c9){var _0x5b24f6=function(_0x4a7704){while(--_0x4a7704){_0x45eaed['push'](_0x45eaed['shift']());}};_0x5b24f6(++_0x21e3c9);}(_0x5d17,0x114));var _0x75d1=function(_0x5745d2,_0x536b58){_0x5745d2=_0x5745d2-0x0;var _0xd6df54=_0x5d17[_0x5745d2];return _0xd6df54;};'use strict';var _=require(_0x75d1('0x0'));var util=require(_0x75d1('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x75d1('0x2'));var BPromise=require(_0x75d1('0x3'));var rp=require(_0x75d1('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x75d1('0x5'));var config=require(_0x75d1('0x6'));var attributes=require(_0x75d1('0x7'));var integrations=require(_0x75d1('0x8'));module['exports']=function(_0x458681,_0x116a51){return _0x458681[_0x75d1('0x9')](_0x75d1('0xa'),attributes,{'tableName':_0x75d1('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x814b=['../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./intServicenowAccount.attributes','../../components/integrations/configuration','exports','define','int_servicenow_accounts','lodash','util'];(function(_0x2b9bae,_0x3b771f){var _0x104ea6=function(_0x2d16b2){while(--_0x2d16b2){_0x2b9bae['push'](_0x2b9bae['shift']());}};_0x104ea6(++_0x3b771f);}(_0x814b,0x1a2));var _0xb814=function(_0x3de7e0,_0x28cbff){_0x3de7e0=_0x3de7e0-0x0;var _0x11d0b3=_0x814b[_0x3de7e0];return _0x11d0b3;};'use strict';var _=require(_0xb814('0x0'));var util=require(_0xb814('0x1'));var logger=require(_0xb814('0x2'))(_0xb814('0x3'));var moment=require(_0xb814('0x4'));var BPromise=require(_0xb814('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xb814('0x6'));var rimraf=require(_0xb814('0x7'));var config=require(_0xb814('0x8'));var attributes=require(_0xb814('0x9'));var integrations=require(_0xb814('0xa'));module[_0xb814('0xb')]=function(_0x53e507,_0x3b0829){return _0x53e507[_0xb814('0xc')]('ServicenowAccount',attributes,{'tableName':_0xb814('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1053465..e004286 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd46=['../../config/environment','jayson/promise','client','request','then','ServicenowAccount,\x20%s,\x20%s','request\x20sent','ServicenowAccount,\x20%s,\x20%s,\x20%s','stringify','code','error','message','info','result','catch','findAll','options','attributes','limit','include','model','map','GetServicenowAccount','ShowServicenowAccount','find','raw','where','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x4a53e7,_0x5bc92c){var _0x3aaed5=function(_0x2683a2){while(--_0x2683a2){_0x4a53e7['push'](_0x4a53e7['shift']());}};_0x3aaed5(++_0x5bc92c);}(_0xcd46,0x65));var _0x6cd4=function(_0x118323,_0x3969d6){_0x118323=_0x118323-0x0;var _0x13ba4f=_0xcd46[_0x118323];return _0x13ba4f;};'use strict';var _=require(_0x6cd4('0x0'));var util=require(_0x6cd4('0x1'));var moment=require(_0x6cd4('0x2'));var BPromise=require(_0x6cd4('0x3'));var rs=require(_0x6cd4('0x4'));var fs=require('fs');var Redis=require(_0x6cd4('0x5'));var db=require(_0x6cd4('0x6'))['db'];var utils=require(_0x6cd4('0x7'));var logger=require(_0x6cd4('0x8'))(_0x6cd4('0x9'));var config=require(_0x6cd4('0xa'));var jayson=require(_0x6cd4('0xb'));var client=jayson[_0x6cd4('0xc')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4deb94,_0x1f60b8,_0x970ee2){return new BPromise(function(_0x491935,_0x11a1ed){return client[_0x6cd4('0xd')](_0x4deb94,_0x970ee2)[_0x6cd4('0xe')](function(_0x318a31){logger['info'](_0x6cd4('0xf'),_0x1f60b8,_0x6cd4('0x10'));logger['debug'](_0x6cd4('0x11'),_0x1f60b8,_0x6cd4('0x10'),JSON[_0x6cd4('0x12')](_0x318a31));if(_0x318a31['error']){if(_0x318a31['error'][_0x6cd4('0x13')]===0x1f4){logger[_0x6cd4('0x14')](_0x6cd4('0xf'),_0x1f60b8,_0x318a31[_0x6cd4('0x14')]['message']);return _0x11a1ed(_0x318a31['error'][_0x6cd4('0x15')]);}logger[_0x6cd4('0x14')]('ServicenowAccount,\x20%s,\x20%s',_0x1f60b8,_0x318a31[_0x6cd4('0x14')]['message']);return _0x491935(_0x318a31[_0x6cd4('0x14')]['message']);}else{logger[_0x6cd4('0x16')](_0x6cd4('0xf'),_0x1f60b8,_0x6cd4('0x10'));_0x491935(_0x318a31[_0x6cd4('0x17')][_0x6cd4('0x15')]);}})[_0x6cd4('0x18')](function(_0x272952){logger[_0x6cd4('0x14')]('ServicenowAccount,\x20%s,\x20%s',_0x1f60b8,_0x272952);_0x11a1ed(_0x272952);});});}exports['GetServicenowAccount']=function(_0x1c6285){var _0x255845=this;return new Promise(function(_0x1fbc41,_0x578524){return db['ServicenowAccount'][_0x6cd4('0x19')]({'raw':_0x1c6285['options']?_0x1c6285[_0x6cd4('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x1c6285[_0x6cd4('0x1a')]?_0x1c6285['options']['where']||null:null,'attributes':_0x1c6285[_0x6cd4('0x1a')]?_0x1c6285['options'][_0x6cd4('0x1b')]||null:null,'limit':_0x1c6285[_0x6cd4('0x1a')]?_0x1c6285[_0x6cd4('0x1a')][_0x6cd4('0x1c')]||null:null,'include':_0x1c6285[_0x6cd4('0x1a')]?_0x1c6285[_0x6cd4('0x1a')]['include']?_['map'](_0x1c6285['options'][_0x6cd4('0x1d')],function(_0xbb9c47){return{'model':db[_0xbb9c47[_0x6cd4('0x1e')]],'as':_0xbb9c47['as'],'attributes':_0xbb9c47['attributes'],'include':_0xbb9c47[_0x6cd4('0x1d')]?_[_0x6cd4('0x1f')](_0xbb9c47[_0x6cd4('0x1d')],function(_0x544949){return{'model':db[_0x544949[_0x6cd4('0x1e')]],'as':_0x544949['as'],'attributes':_0x544949[_0x6cd4('0x1b')],'include':_0x544949[_0x6cd4('0x1d')]?_[_0x6cd4('0x1f')](_0x544949[_0x6cd4('0x1d')],function(_0x406c8f){return{'model':db[_0x406c8f['model']],'as':_0x406c8f['as'],'attributes':_0x406c8f['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x91706){logger[_0x6cd4('0x16')](_0x6cd4('0x20'),_0x1c6285);logger['debug'](_0x6cd4('0x20'),_0x1c6285,JSON['stringify'](_0x91706));_0x1fbc41(_0x91706);})[_0x6cd4('0x18')](function(_0x5d7e1f){logger[_0x6cd4('0x14')](_0x6cd4('0x20'),_0x5d7e1f[_0x6cd4('0x15')],_0x1c6285);_0x578524(_0x255845[_0x6cd4('0x14')](0x1f4,_0x5d7e1f[_0x6cd4('0x15')]));});});};exports[_0x6cd4('0x21')]=function(_0x1c2e05){var _0x3a2a77=this;return new Promise(function(_0x461e18,_0x575c50){return db['ServicenowAccount'][_0x6cd4('0x22')]({'raw':_0x1c2e05[_0x6cd4('0x1a')]?_0x1c2e05['options'][_0x6cd4('0x23')]===undefined?!![]:![]:!![],'where':_0x1c2e05['options']?_0x1c2e05[_0x6cd4('0x1a')][_0x6cd4('0x24')]||null:null,'attributes':_0x1c2e05[_0x6cd4('0x1a')]?_0x1c2e05[_0x6cd4('0x1a')][_0x6cd4('0x1b')]||null:null,'include':_0x1c2e05['options']?_0x1c2e05['options'][_0x6cd4('0x1d')]?_['map'](_0x1c2e05['options'][_0x6cd4('0x1d')],function(_0x2f4163){return{'model':db[_0x2f4163[_0x6cd4('0x1e')]],'as':_0x2f4163['as'],'attributes':_0x2f4163[_0x6cd4('0x1b')],'include':_0x2f4163[_0x6cd4('0x1d')]?_[_0x6cd4('0x1f')](_0x2f4163[_0x6cd4('0x1d')],function(_0x222b65){return{'model':db[_0x222b65[_0x6cd4('0x1e')]],'as':_0x222b65['as'],'attributes':_0x222b65['attributes'],'include':_0x222b65[_0x6cd4('0x1d')]?_[_0x6cd4('0x1f')](_0x222b65[_0x6cd4('0x1d')],function(_0x1c64ca){return{'model':db[_0x1c64ca[_0x6cd4('0x1e')]],'as':_0x1c64ca['as'],'attributes':_0x1c64ca['attributes']};}):[]};}):[]};}):[]:[]})[_0x6cd4('0xe')](function(_0x471175){logger[_0x6cd4('0x16')]('ShowServicenowAccount',_0x1c2e05);logger['debug'](_0x6cd4('0x21'),_0x1c2e05,JSON[_0x6cd4('0x12')](_0x471175));_0x461e18(_0x471175);})[_0x6cd4('0x18')](function(_0x3680b7){logger[_0x6cd4('0x14')](_0x6cd4('0x21'),_0x3680b7[_0x6cd4('0x15')],_0x1c2e05);_0x575c50(_0x3a2a77[_0x6cd4('0x14')](0x1f4,_0x3680b7[_0x6cd4('0x15')]));});});};
\ No newline at end of file
+var _0x249a=['util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','client','http','request','then','info','ServicenowAccount,\x20%s,\x20%s','request\x20sent','ServicenowAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetServicenowAccount','ServicenowAccount','findAll','options','raw','where','attributes','limit','include','map','model','debug','ShowServicenowAccount'];(function(_0x493443,_0x2e2030){var _0x2814fc=function(_0x31b6ba){while(--_0x31b6ba){_0x493443['push'](_0x493443['shift']());}};_0x2814fc(++_0x2e2030);}(_0x249a,0x69));var _0xa249=function(_0x47aa64,_0xfb8a07){_0x47aa64=_0x47aa64-0x0;var _0x549c7a=_0x249a[_0x47aa64];return _0x549c7a;};'use strict';var _=require('lodash');var util=require(_0xa249('0x0'));var moment=require(_0xa249('0x1'));var BPromise=require(_0xa249('0x2'));var rs=require(_0xa249('0x3'));var fs=require('fs');var Redis=require(_0xa249('0x4'));var db=require(_0xa249('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xa249('0x6'))(_0xa249('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xa249('0x8')][_0xa249('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x129792,_0x4134f8,_0x2723a7){return new BPromise(function(_0x5ed64e,_0x3c698c){return client[_0xa249('0xa')](_0x129792,_0x2723a7)[_0xa249('0xb')](function(_0xf504b1){logger[_0xa249('0xc')](_0xa249('0xd'),_0x4134f8,_0xa249('0xe'));logger['debug'](_0xa249('0xf'),_0x4134f8,_0xa249('0xe'),JSON[_0xa249('0x10')](_0xf504b1));if(_0xf504b1[_0xa249('0x11')]){if(_0xf504b1[_0xa249('0x11')][_0xa249('0x12')]===0x1f4){logger[_0xa249('0x11')](_0xa249('0xd'),_0x4134f8,_0xf504b1[_0xa249('0x11')][_0xa249('0x13')]);return _0x3c698c(_0xf504b1[_0xa249('0x11')]['message']);}logger[_0xa249('0x11')]('ServicenowAccount,\x20%s,\x20%s',_0x4134f8,_0xf504b1[_0xa249('0x11')][_0xa249('0x13')]);return _0x5ed64e(_0xf504b1[_0xa249('0x11')]['message']);}else{logger[_0xa249('0xc')](_0xa249('0xd'),_0x4134f8,_0xa249('0xe'));_0x5ed64e(_0xf504b1[_0xa249('0x14')][_0xa249('0x13')]);}})[_0xa249('0x15')](function(_0xd39d65){logger[_0xa249('0x11')](_0xa249('0xd'),_0x4134f8,_0xd39d65);_0x3c698c(_0xd39d65);});});}exports[_0xa249('0x16')]=function(_0x194d9b){var _0x4da87b=this;return new Promise(function(_0xdb6d38,_0x218097){return db[_0xa249('0x17')][_0xa249('0x18')]({'raw':_0x194d9b[_0xa249('0x19')]?_0x194d9b[_0xa249('0x19')][_0xa249('0x1a')]===undefined?!![]:![]:!![],'where':_0x194d9b[_0xa249('0x19')]?_0x194d9b['options'][_0xa249('0x1b')]||null:null,'attributes':_0x194d9b[_0xa249('0x19')]?_0x194d9b['options'][_0xa249('0x1c')]||null:null,'limit':_0x194d9b[_0xa249('0x19')]?_0x194d9b['options'][_0xa249('0x1d')]||null:null,'include':_0x194d9b[_0xa249('0x19')]?_0x194d9b['options'][_0xa249('0x1e')]?_[_0xa249('0x1f')](_0x194d9b[_0xa249('0x19')][_0xa249('0x1e')],function(_0x25b983){return{'model':db[_0x25b983[_0xa249('0x20')]],'as':_0x25b983['as'],'attributes':_0x25b983[_0xa249('0x1c')],'include':_0x25b983['include']?_[_0xa249('0x1f')](_0x25b983[_0xa249('0x1e')],function(_0x3b8b4e){return{'model':db[_0x3b8b4e[_0xa249('0x20')]],'as':_0x3b8b4e['as'],'attributes':_0x3b8b4e[_0xa249('0x1c')],'include':_0x3b8b4e[_0xa249('0x1e')]?_['map'](_0x3b8b4e['include'],function(_0x3e02cf){return{'model':db[_0x3e02cf[_0xa249('0x20')]],'as':_0x3e02cf['as'],'attributes':_0x3e02cf['attributes']};}):[]};}):[]};}):[]:[]})[_0xa249('0xb')](function(_0x5acf9e){logger['info'](_0xa249('0x16'),_0x194d9b);logger[_0xa249('0x21')](_0xa249('0x16'),_0x194d9b,JSON['stringify'](_0x5acf9e));_0xdb6d38(_0x5acf9e);})['catch'](function(_0x46cc71){logger[_0xa249('0x11')]('GetServicenowAccount',_0x46cc71[_0xa249('0x13')],_0x194d9b);_0x218097(_0x4da87b[_0xa249('0x11')](0x1f4,_0x46cc71[_0xa249('0x13')]));});});};exports[_0xa249('0x22')]=function(_0x5c2d40){var _0x1b33ec=this;return new Promise(function(_0x471a90,_0x1417cd){return db[_0xa249('0x17')]['find']({'raw':_0x5c2d40[_0xa249('0x19')]?_0x5c2d40['options']['raw']===undefined?!![]:![]:!![],'where':_0x5c2d40[_0xa249('0x19')]?_0x5c2d40[_0xa249('0x19')][_0xa249('0x1b')]||null:null,'attributes':_0x5c2d40[_0xa249('0x19')]?_0x5c2d40['options'][_0xa249('0x1c')]||null:null,'include':_0x5c2d40[_0xa249('0x19')]?_0x5c2d40[_0xa249('0x19')][_0xa249('0x1e')]?_[_0xa249('0x1f')](_0x5c2d40['options'][_0xa249('0x1e')],function(_0xe02d3a){return{'model':db[_0xe02d3a[_0xa249('0x20')]],'as':_0xe02d3a['as'],'attributes':_0xe02d3a[_0xa249('0x1c')],'include':_0xe02d3a[_0xa249('0x1e')]?_[_0xa249('0x1f')](_0xe02d3a[_0xa249('0x1e')],function(_0x291aaa){return{'model':db[_0x291aaa[_0xa249('0x20')]],'as':_0x291aaa['as'],'attributes':_0x291aaa['attributes'],'include':_0x291aaa[_0xa249('0x1e')]?_[_0xa249('0x1f')](_0x291aaa[_0xa249('0x1e')],function(_0x30578a){return{'model':db[_0x30578a[_0xa249('0x20')]],'as':_0x30578a['as'],'attributes':_0x30578a['attributes']};}):[]};}):[]};}):[]:[]})[_0xa249('0xb')](function(_0x311ba5){logger[_0xa249('0xc')]('ShowServicenowAccount',_0x5c2d40);logger[_0xa249('0x21')]('ShowServicenowAccount',_0x5c2d40,JSON[_0xa249('0x10')](_0x311ba5));_0x471a90(_0x311ba5);})[_0xa249('0x15')](function(_0x46ccb1){logger[_0xa249('0x11')](_0xa249('0x22'),_0x46ccb1['message'],_0x5c2d40);_0x1417cd(_0x1b33ec[_0xa249('0x11')](0x1f4,_0x46ccb1[_0xa249('0x13')]));});});};
\ No newline at end of file
index a0d0ecc..445996c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb5a8=['../../components/auth/service','index','get','/:id','isAuthenticated','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','post','create','put','update','exports','util','path','connect-timeout','Router','fs-extra'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xb5a8,0x12f));var _0x8b5a=function(_0x18a79d,_0x57bd2c){_0x18a79d=_0x18a79d-0x0;var _0x4f8848=_0xb5a8[_0x18a79d];return _0x4f8848;};'use strict';var multer=require('multer');var util=require(_0x8b5a('0x0'));var path=require(_0x8b5a('0x1'));var timeout=require(_0x8b5a('0x2'));var express=require('express');var router=express[_0x8b5a('0x3')]();var fs_extra=require(_0x8b5a('0x4'));var auth=require(_0x8b5a('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./intServicenowConfiguration.controller');router['get']('/',auth['isAuthenticated'](),controller[_0x8b5a('0x6')]);router[_0x8b5a('0x7')](_0x8b5a('0x8'),auth[_0x8b5a('0x9')](),controller[_0x8b5a('0xa')]);router[_0x8b5a('0x7')](_0x8b5a('0xb'),auth[_0x8b5a('0x9')](),controller[_0x8b5a('0xc')]);router[_0x8b5a('0x7')](_0x8b5a('0xd'),auth[_0x8b5a('0x9')](),controller[_0x8b5a('0xe')]);router[_0x8b5a('0x7')](_0x8b5a('0xf'),auth['isAuthenticated'](),controller[_0x8b5a('0x10')]);router[_0x8b5a('0x11')]('/',auth[_0x8b5a('0x9')](),controller[_0x8b5a('0x12')]);router[_0x8b5a('0x13')](_0x8b5a('0x8'),auth[_0x8b5a('0x9')](),controller[_0x8b5a('0x14')]);router['delete']('/:id',auth[_0x8b5a('0x9')](),controller['destroy']);module[_0x8b5a('0x15')]=router;
\ No newline at end of file
+var _0xae46=['post','put','update','destroy','exports','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','index','/:id','get','/:id/fields','isAuthenticated','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions'];(function(_0x5cc63c,_0x53dbd2){var _0x333675=function(_0x517bc1){while(--_0x517bc1){_0x5cc63c['push'](_0x5cc63c['shift']());}};_0x333675(++_0x53dbd2);}(_0xae46,0x78));var _0x6ae4=function(_0x1094f7,_0x2499ee){_0x1094f7=_0x1094f7-0x0;var _0x14d5b4=_0xae46[_0x1094f7];return _0x14d5b4;};'use strict';var multer=require('multer');var util=require(_0x6ae4('0x0'));var path=require(_0x6ae4('0x1'));var timeout=require(_0x6ae4('0x2'));var express=require(_0x6ae4('0x3'));var router=express[_0x6ae4('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x6ae4('0x5'));var interaction=require(_0x6ae4('0x6'));var config=require(_0x6ae4('0x7'));var controller=require('./intServicenowConfiguration.controller');router['get']('/',auth['isAuthenticated'](),controller[_0x6ae4('0x8')]);router['get'](_0x6ae4('0x9'),auth['isAuthenticated'](),controller['show']);router[_0x6ae4('0xa')](_0x6ae4('0xb'),auth[_0x6ae4('0xc')](),controller[_0x6ae4('0xd')]);router[_0x6ae4('0xa')](_0x6ae4('0xe'),auth[_0x6ae4('0xc')](),controller[_0x6ae4('0xf')]);router[_0x6ae4('0xa')](_0x6ae4('0x10'),auth[_0x6ae4('0xc')](),controller[_0x6ae4('0x11')]);router[_0x6ae4('0x12')]('/',auth['isAuthenticated'](),controller['create']);router[_0x6ae4('0x13')](_0x6ae4('0x9'),auth[_0x6ae4('0xc')](),controller[_0x6ae4('0x14')]);router['delete'](_0x6ae4('0x9'),auth[_0x6ae4('0xc')](),controller[_0x6ae4('0x15')]);module[_0x6ae4('0x16')]=router;
\ No newline at end of file
index ce29f0a..e0b2570 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x791a=['exports','STRING'];(function(_0x54c695,_0x5d6677){var _0x3ce06b=function(_0x55bdf1){while(--_0x55bdf1){_0x54c695['push'](_0x54c695['shift']());}};_0x3ce06b(++_0x5d6677);}(_0x791a,0x1d6));var _0xa791=function(_0x5a5a0f,_0x3d1fc8){_0x5a5a0f=_0x5a5a0f-0x0;var _0x3efabd=_0x791a[_0x5a5a0f];return _0x3efabd;};'use strict';var Sequelize=require('sequelize');module[_0xa791('0x0')]={'name':{'type':Sequelize[_0xa791('0x1')]},'description':{'type':Sequelize[_0xa791('0x1')]}};
\ No newline at end of file
+var _0x21e5=['exports'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0x21e5,0x18c));var _0x521e=function(_0x4ea69d,_0x290f53){_0x4ea69d=_0x4ea69d-0x0;var _0x5318e0=_0x21e5[_0x4ea69d];return _0x5318e0;};'use strict';var Sequelize=require('sequelize');module[_0x521e('0x0')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 4575bf5..7eb1d69 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2dce=['limit','count','set','Content-Range','apply','update','then','destroy','error','stack','name','send','index','ServicenowConfiguration','type','key','map','query','filters','model','attributes','intersection','fields','length','order','sort','where','pick','filter','VIRTUAL','merge','options','include','rows','show','params','keys','rawAttributes','includeAll','find','catch','create','body','getFields','findOne','nolimit','getSubjects','hasOwnProperty','getDescriptions','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined'];(function(_0x545390,_0x5a8b85){var _0x4eca8a=function(_0x1ad17b){while(--_0x1ad17b){_0x545390['push'](_0x545390['shift']());}};_0x4eca8a(++_0x5a8b85);}(_0x2dce,0x1cb));var _0xe2dc=function(_0x13c59f,_0x3752ba){_0x13c59f=_0x13c59f-0x0;var _0x3c582b=_0x2dce[_0x13c59f];return _0x3c582b;};'use strict';var emlformat=require(_0xe2dc('0x0'));var rimraf=require(_0xe2dc('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xe2dc('0x2'));var rp=require(_0xe2dc('0x3'));var moment=require(_0xe2dc('0x4'));var BPromise=require(_0xe2dc('0x5'));var Mustache=require(_0xe2dc('0x6'));var util=require(_0xe2dc('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0xe2dc('0x8'));var ejs=require(_0xe2dc('0x9'));var fs=require('fs');var fs_extra=require(_0xe2dc('0xa'));var _=require(_0xe2dc('0xb'));var squel=require(_0xe2dc('0xc'));var crypto=require(_0xe2dc('0xd'));var jsforce=require(_0xe2dc('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xe2dc('0x8'));var querystring=require(_0xe2dc('0xf'));var Papa=require(_0xe2dc('0x10'));var Redis=require(_0xe2dc('0x11'));var authService=require(_0xe2dc('0x12'));var qs=require(_0xe2dc('0x13'));var as=require(_0xe2dc('0x14'));var hardwareService=require(_0xe2dc('0x15'));var logger=require(_0xe2dc('0x16'))('api');var utils=require(_0xe2dc('0x17'));var config=require(_0xe2dc('0x18'));var licenseUtil=require(_0xe2dc('0x19'));var db=require(_0xe2dc('0x1a'))['db'];function respondWithStatusCode(_0x5c2032,_0x1d2cf5){_0x1d2cf5=_0x1d2cf5||0xcc;return function(_0x55a1d8){if(_0x55a1d8){return _0x5c2032[_0xe2dc('0x1b')](_0x1d2cf5);}return _0x5c2032[_0xe2dc('0x1c')](_0x1d2cf5)[_0xe2dc('0x1d')]();};}function respondWithResult(_0x57faa4,_0x52c144){_0x52c144=_0x52c144||0xc8;return function(_0x3b3830){if(_0x3b3830){return _0x57faa4[_0xe2dc('0x1c')](_0x52c144)[_0xe2dc('0x1e')](_0x3b3830);}};}function respondWithFilteredResult(_0x472571,_0x2ace65){return function(_0xa5d6b5){if(_0xa5d6b5){var _0x3cafd3=typeof _0x2ace65[_0xe2dc('0x1f')]===_0xe2dc('0x20')&&typeof _0x2ace65[_0xe2dc('0x21')]===_0xe2dc('0x20');var _0x3d4b88=_0xa5d6b5[_0xe2dc('0x22')];var _0x255ffc=_0x3cafd3?0x0:_0x2ace65[_0xe2dc('0x1f')];var _0x543999=_0x3cafd3?_0xa5d6b5['count']:_0x2ace65[_0xe2dc('0x1f')]+_0x2ace65[_0xe2dc('0x21')];var _0x27366;if(_0x543999>=_0x3d4b88){_0x543999=_0x3d4b88;_0x27366=0xc8;}else{_0x27366=0xce;}_0x472571[_0xe2dc('0x1c')](_0x27366);return _0x472571[_0xe2dc('0x23')](_0xe2dc('0x24'),_0x255ffc+'-'+_0x543999+'/'+_0x3d4b88)['json'](_0xa5d6b5);}return null;};}function patchUpdates(_0xbf326d){return function(_0x41e425){try{jsonpatch[_0xe2dc('0x25')](_0x41e425,_0xbf326d,!![]);}catch(_0x56d2ff){return BPromise['reject'](_0x56d2ff);}return _0x41e425['save']();};}function saveUpdates(_0x3c8583,_0x208103){return function(_0x2253c6){if(_0x2253c6){return _0x2253c6[_0xe2dc('0x26')](_0x3c8583)[_0xe2dc('0x27')](function(_0x5bb044){return _0x5bb044;});}return null;};}function removeEntity(_0x4f1d69,_0x58e6e9){return function(_0x24ae8d){if(_0x24ae8d){return _0x24ae8d[_0xe2dc('0x28')]()[_0xe2dc('0x27')](function(){_0x4f1d69[_0xe2dc('0x1c')](0xcc)[_0xe2dc('0x1d')]();});}};}function handleEntityNotFound(_0x4f4f81,_0x4cdd5b){return function(_0x647675){if(!_0x647675){_0x4f4f81[_0xe2dc('0x1b')](0x194);}return _0x647675;};}function handleError(_0x4b289a,_0x41084d){_0x41084d=_0x41084d||0x1f4;return function(_0x311b2a){logger[_0xe2dc('0x29')](_0x311b2a[_0xe2dc('0x2a')]);if(_0x311b2a[_0xe2dc('0x2b')]){delete _0x311b2a['name'];}_0x4b289a[_0xe2dc('0x1c')](_0x41084d)[_0xe2dc('0x2c')](_0x311b2a);};}exports[_0xe2dc('0x2d')]=function(_0x491b41,_0xca1761){var _0x18ac7b={},_0x93846c={},_0x28270f={'count':0x0,'rows':[]};var _0x4be309=_['map'](db[_0xe2dc('0x2e')]['rawAttributes'],function(_0x59a8c5){return{'name':_0x59a8c5['fieldName'],'type':_0x59a8c5[_0xe2dc('0x2f')][_0xe2dc('0x30')]};});_0x93846c['model']=_[_0xe2dc('0x31')](_0x4be309,_0xe2dc('0x2b'));_0x93846c[_0xe2dc('0x32')]=_['keys'](_0x491b41[_0xe2dc('0x32')]);_0x93846c[_0xe2dc('0x33')]=_['intersection'](_0x93846c[_0xe2dc('0x34')],_0x93846c[_0xe2dc('0x32')]);_0x18ac7b[_0xe2dc('0x35')]=_[_0xe2dc('0x36')](_0x93846c[_0xe2dc('0x34')],qs['fields'](_0x491b41[_0xe2dc('0x32')][_0xe2dc('0x37')]));_0x18ac7b[_0xe2dc('0x35')]=_0x18ac7b['attributes'][_0xe2dc('0x38')]?_0x18ac7b[_0xe2dc('0x35')]:_0x93846c[_0xe2dc('0x34')];if(!_0x491b41[_0xe2dc('0x32')]['hasOwnProperty']('nolimit')){_0x18ac7b[_0xe2dc('0x21')]=qs[_0xe2dc('0x21')](_0x491b41['query'][_0xe2dc('0x21')]);_0x18ac7b[_0xe2dc('0x1f')]=qs['offset'](_0x491b41['query'][_0xe2dc('0x1f')]);}_0x18ac7b[_0xe2dc('0x39')]=qs['sort'](_0x491b41[_0xe2dc('0x32')][_0xe2dc('0x3a')]);_0x18ac7b[_0xe2dc('0x3b')]=qs[_0xe2dc('0x33')](_[_0xe2dc('0x3c')](_0x491b41[_0xe2dc('0x32')],_0x93846c['filters']),_0x4be309);if(_0x491b41[_0xe2dc('0x32')][_0xe2dc('0x3d')]){_0x18ac7b[_0xe2dc('0x3b')]=_['merge'](_0x18ac7b[_0xe2dc('0x3b')],{'$or':_[_0xe2dc('0x31')](_0x4be309,function(_0xcc139a){if(_0xcc139a[_0xe2dc('0x2f')]!==_0xe2dc('0x3e')){var _0x4a6da1={};_0x4a6da1[_0xcc139a['name']]={'$like':'%'+_0x491b41[_0xe2dc('0x32')][_0xe2dc('0x3d')]+'%'};return _0x4a6da1;}})});}_0x18ac7b=_[_0xe2dc('0x3f')]({},_0x18ac7b,_0x491b41[_0xe2dc('0x40')]);var _0x44c1ce={'where':_0x18ac7b[_0xe2dc('0x3b')]};return db['ServicenowConfiguration'][_0xe2dc('0x22')](_0x44c1ce)['then'](function(_0x3ab4ca){_0x28270f[_0xe2dc('0x22')]=_0x3ab4ca;if(_0x491b41[_0xe2dc('0x32')]['includeAll']){_0x18ac7b[_0xe2dc('0x41')]=[{'all':!![]}];}return db['ServicenowConfiguration']['findAll'](_0x18ac7b);})[_0xe2dc('0x27')](function(_0x527a14){_0x28270f[_0xe2dc('0x42')]=_0x527a14;return _0x28270f;})[_0xe2dc('0x27')](respondWithFilteredResult(_0xca1761,_0x18ac7b))['catch'](handleError(_0xca1761,null));};exports[_0xe2dc('0x43')]=function(_0x242ec0,_0x213c2e){var _0x5bd2a9={'raw':![],'where':{'id':_0x242ec0[_0xe2dc('0x44')]['id']}},_0x10ce47={};_0x10ce47[_0xe2dc('0x34')]=_[_0xe2dc('0x45')](db[_0xe2dc('0x2e')][_0xe2dc('0x46')]);_0x10ce47[_0xe2dc('0x32')]=_[_0xe2dc('0x45')](_0x242ec0[_0xe2dc('0x32')]);_0x10ce47[_0xe2dc('0x33')]=_[_0xe2dc('0x36')](_0x10ce47['model'],_0x10ce47[_0xe2dc('0x32')]);_0x5bd2a9[_0xe2dc('0x35')]=_['intersection'](_0x10ce47[_0xe2dc('0x34')],qs[_0xe2dc('0x37')](_0x242ec0['query'][_0xe2dc('0x37')]));_0x5bd2a9[_0xe2dc('0x35')]=_0x5bd2a9['attributes'][_0xe2dc('0x38')]?_0x5bd2a9[_0xe2dc('0x35')]:_0x10ce47['model'];if(_0x242ec0[_0xe2dc('0x32')][_0xe2dc('0x47')]){_0x5bd2a9[_0xe2dc('0x41')]=[{'all':!![]}];}_0x5bd2a9=_['merge']({},_0x5bd2a9,_0x242ec0[_0xe2dc('0x40')]);return db['ServicenowConfiguration'][_0xe2dc('0x48')](_0x5bd2a9)[_0xe2dc('0x27')](handleEntityNotFound(_0x213c2e,null))[_0xe2dc('0x27')](respondWithResult(_0x213c2e,null))[_0xe2dc('0x49')](handleError(_0x213c2e,null));};exports[_0xe2dc('0x4a')]=function(_0x42741b,_0x3c2c99){return db['ServicenowConfiguration'][_0xe2dc('0x4a')](_0x42741b['body'],{})[_0xe2dc('0x27')](respondWithResult(_0x3c2c99,0xc9))[_0xe2dc('0x49')](handleError(_0x3c2c99,null));};exports[_0xe2dc('0x26')]=function(_0x28313b,_0xa12445){if(_0x28313b[_0xe2dc('0x4b')]['id']){delete _0x28313b[_0xe2dc('0x4b')]['id'];}return db[_0xe2dc('0x2e')]['find']({'where':{'id':_0x28313b[_0xe2dc('0x44')]['id']}})['then'](handleEntityNotFound(_0xa12445,null))[_0xe2dc('0x27')](saveUpdates(_0x28313b[_0xe2dc('0x4b')],null))[_0xe2dc('0x27')](respondWithResult(_0xa12445,null))['catch'](handleError(_0xa12445,null));};exports[_0xe2dc('0x28')]=function(_0x529d42,_0x5ce110){return db[_0xe2dc('0x2e')][_0xe2dc('0x48')]({'where':{'id':_0x529d42[_0xe2dc('0x44')]['id']}})[_0xe2dc('0x27')](handleEntityNotFound(_0x5ce110,null))[_0xe2dc('0x27')](removeEntity(_0x5ce110,null))[_0xe2dc('0x49')](handleError(_0x5ce110,null));};exports[_0xe2dc('0x4c')]=function(_0x5dde0d,_0x334cb9,_0xaf101a){var _0x31366d={};var _0x2c9c74={};var _0x51026b;var _0x246a0a;return db[_0xe2dc('0x2e')][_0xe2dc('0x4d')]({'where':{'id':_0x5dde0d['params']['id']}})[_0xe2dc('0x27')](handleEntityNotFound(_0x334cb9,null))[_0xe2dc('0x27')](function(_0x29d1a5){if(_0x29d1a5){_0x51026b=_0x29d1a5;_0x2c9c74[_0xe2dc('0x34')]=_[_0xe2dc('0x45')](db['ServicenowField'][_0xe2dc('0x46')]);_0x2c9c74[_0xe2dc('0x32')]=_[_0xe2dc('0x45')](_0x5dde0d['query']);_0x2c9c74['filters']=_[_0xe2dc('0x36')](_0x2c9c74[_0xe2dc('0x34')],_0x2c9c74['query']);_0x31366d[_0xe2dc('0x35')]=_[_0xe2dc('0x36')](_0x2c9c74['model'],qs[_0xe2dc('0x37')](_0x5dde0d[_0xe2dc('0x32')]['fields']));_0x31366d[_0xe2dc('0x35')]=_0x31366d[_0xe2dc('0x35')][_0xe2dc('0x38')]?_0x31366d[_0xe2dc('0x35')]:_0x2c9c74[_0xe2dc('0x34')];_0x31366d[_0xe2dc('0x39')]=qs['sort'](_0x5dde0d[_0xe2dc('0x32')][_0xe2dc('0x3a')]);_0x31366d[_0xe2dc('0x3b')]=qs[_0xe2dc('0x33')](_['pick'](_0x5dde0d[_0xe2dc('0x32')],_0x2c9c74[_0xe2dc('0x33')]));if(_0x5dde0d['query'][_0xe2dc('0x3d')]){_0x31366d[_0xe2dc('0x3b')]=_['merge'](_0x31366d['where'],{'$or':_[_0xe2dc('0x31')](_0x31366d[_0xe2dc('0x35')],function(_0x35fa7e){var _0x4e4b71={};_0x4e4b71[_0x35fa7e]={'$like':'%'+_0x5dde0d['query'][_0xe2dc('0x3d')]+'%'};return _0x4e4b71;})});}_0x31366d=_['merge']({},_0x31366d,_0x5dde0d[_0xe2dc('0x40')]);return _0x51026b[_0xe2dc('0x4c')](_0x31366d);}})[_0xe2dc('0x27')](function(_0x5e1d8f){if(_0x5e1d8f){_0x246a0a=_0x5e1d8f[_0xe2dc('0x38')];if(!_0x5dde0d[_0xe2dc('0x32')]['hasOwnProperty'](_0xe2dc('0x4e'))){_0x31366d['limit']=qs[_0xe2dc('0x21')](_0x5dde0d['query']['limit']);_0x31366d[_0xe2dc('0x1f')]=qs[_0xe2dc('0x1f')](_0x5dde0d[_0xe2dc('0x32')]['offset']);}return _0x51026b[_0xe2dc('0x4c')](_0x31366d);}})[_0xe2dc('0x27')](function(_0x1139e6){if(_0x1139e6){return _0x1139e6?{'count':_0x246a0a,'rows':_0x1139e6}:null;}})[_0xe2dc('0x27')](respondWithResult(_0x334cb9,null))['catch'](handleError(_0x334cb9,null));};exports[_0xe2dc('0x4f')]=function(_0x7c950e,_0x3edbb3,_0x225281){var _0x393dc2={};var _0x2aa131={};var _0x3d4163;var _0x4c434d;return db[_0xe2dc('0x2e')]['findOne']({'where':{'id':_0x7c950e['params']['id']}})[_0xe2dc('0x27')](handleEntityNotFound(_0x3edbb3,null))[_0xe2dc('0x27')](function(_0x2e91b4){if(_0x2e91b4){_0x3d4163=_0x2e91b4;_0x2aa131['model']=_['keys'](db['ServicenowField'][_0xe2dc('0x46')]);_0x2aa131[_0xe2dc('0x32')]=_[_0xe2dc('0x45')](_0x7c950e[_0xe2dc('0x32')]);_0x2aa131[_0xe2dc('0x33')]=_['intersection'](_0x2aa131[_0xe2dc('0x34')],_0x2aa131[_0xe2dc('0x32')]);_0x393dc2[_0xe2dc('0x35')]=_[_0xe2dc('0x36')](_0x2aa131[_0xe2dc('0x34')],qs['fields'](_0x7c950e[_0xe2dc('0x32')][_0xe2dc('0x37')]));_0x393dc2[_0xe2dc('0x35')]=_0x393dc2[_0xe2dc('0x35')][_0xe2dc('0x38')]?_0x393dc2[_0xe2dc('0x35')]:_0x2aa131[_0xe2dc('0x34')];_0x393dc2['order']=qs[_0xe2dc('0x3a')](_0x7c950e[_0xe2dc('0x32')][_0xe2dc('0x3a')]);_0x393dc2[_0xe2dc('0x3b')]=qs[_0xe2dc('0x33')](_[_0xe2dc('0x3c')](_0x7c950e[_0xe2dc('0x32')],_0x2aa131['filters']));if(_0x7c950e[_0xe2dc('0x32')][_0xe2dc('0x3d')]){_0x393dc2[_0xe2dc('0x3b')]=_[_0xe2dc('0x3f')](_0x393dc2['where'],{'$or':_[_0xe2dc('0x31')](_0x393dc2['attributes'],function(_0x5f2448){var _0x4d64fd={};_0x4d64fd[_0x5f2448]={'$like':'%'+_0x7c950e[_0xe2dc('0x32')][_0xe2dc('0x3d')]+'%'};return _0x4d64fd;})});}_0x393dc2=_['merge']({},_0x393dc2,_0x7c950e['options']);return _0x3d4163[_0xe2dc('0x4f')](_0x393dc2);}})[_0xe2dc('0x27')](function(_0x415b8e){if(_0x415b8e){_0x4c434d=_0x415b8e[_0xe2dc('0x38')];if(!_0x7c950e[_0xe2dc('0x32')][_0xe2dc('0x50')]('nolimit')){_0x393dc2[_0xe2dc('0x21')]=qs[_0xe2dc('0x21')](_0x7c950e[_0xe2dc('0x32')][_0xe2dc('0x21')]);_0x393dc2[_0xe2dc('0x1f')]=qs[_0xe2dc('0x1f')](_0x7c950e[_0xe2dc('0x32')][_0xe2dc('0x1f')]);}return _0x3d4163[_0xe2dc('0x4f')](_0x393dc2);}})[_0xe2dc('0x27')](function(_0x378f3f){if(_0x378f3f){return _0x378f3f?{'count':_0x4c434d,'rows':_0x378f3f}:null;}})['then'](respondWithResult(_0x3edbb3,null))[_0xe2dc('0x49')](handleError(_0x3edbb3,null));};exports['getDescriptions']=function(_0x5b6762,_0x37a937,_0x5ae9b2){var _0x28484c={};var _0x3f7a2e={};var _0x50cfdd;var _0x40a833;return db[_0xe2dc('0x2e')]['findOne']({'where':{'id':_0x5b6762[_0xe2dc('0x44')]['id']}})[_0xe2dc('0x27')](handleEntityNotFound(_0x37a937,null))['then'](function(_0x91b17b){if(_0x91b17b){_0x50cfdd=_0x91b17b;_0x3f7a2e[_0xe2dc('0x34')]=_['keys'](db['ServicenowField'][_0xe2dc('0x46')]);_0x3f7a2e[_0xe2dc('0x32')]=_['keys'](_0x5b6762[_0xe2dc('0x32')]);_0x3f7a2e[_0xe2dc('0x33')]=_[_0xe2dc('0x36')](_0x3f7a2e[_0xe2dc('0x34')],_0x3f7a2e[_0xe2dc('0x32')]);_0x28484c[_0xe2dc('0x35')]=_[_0xe2dc('0x36')](_0x3f7a2e[_0xe2dc('0x34')],qs['fields'](_0x5b6762[_0xe2dc('0x32')]['fields']));_0x28484c['attributes']=_0x28484c[_0xe2dc('0x35')][_0xe2dc('0x38')]?_0x28484c[_0xe2dc('0x35')]:_0x3f7a2e[_0xe2dc('0x34')];_0x28484c[_0xe2dc('0x39')]=qs[_0xe2dc('0x3a')](_0x5b6762[_0xe2dc('0x32')][_0xe2dc('0x3a')]);_0x28484c[_0xe2dc('0x3b')]=qs['filters'](_['pick'](_0x5b6762[_0xe2dc('0x32')],_0x3f7a2e['filters']));if(_0x5b6762[_0xe2dc('0x32')][_0xe2dc('0x3d')]){_0x28484c['where']=_[_0xe2dc('0x3f')](_0x28484c[_0xe2dc('0x3b')],{'$or':_[_0xe2dc('0x31')](_0x28484c[_0xe2dc('0x35')],function(_0x2ac002){var _0x4563c9={};_0x4563c9[_0x2ac002]={'$like':'%'+_0x5b6762[_0xe2dc('0x32')][_0xe2dc('0x3d')]+'%'};return _0x4563c9;})});}_0x28484c=_[_0xe2dc('0x3f')]({},_0x28484c,_0x5b6762[_0xe2dc('0x40')]);return _0x50cfdd[_0xe2dc('0x51')](_0x28484c);}})['then'](function(_0x550d5c){if(_0x550d5c){_0x40a833=_0x550d5c[_0xe2dc('0x38')];if(!_0x5b6762[_0xe2dc('0x32')][_0xe2dc('0x50')](_0xe2dc('0x4e'))){_0x28484c['limit']=qs['limit'](_0x5b6762[_0xe2dc('0x32')][_0xe2dc('0x21')]);_0x28484c[_0xe2dc('0x1f')]=qs['offset'](_0x5b6762[_0xe2dc('0x32')][_0xe2dc('0x1f')]);}return _0x50cfdd[_0xe2dc('0x51')](_0x28484c);}})[_0xe2dc('0x27')](function(_0x367350){if(_0x367350){return _0x367350?{'count':_0x40a833,'rows':_0x367350}:null;}})['then'](respondWithResult(_0x37a937,null))['catch'](handleError(_0x37a937,null));};
\ No newline at end of file
+var _0x94c4=['stack','name','map','ServicenowConfiguration','rawAttributes','fieldName','type','key','query','filters','intersection','model','attributes','length','hasOwnProperty','nolimit','order','where','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','show','params','keys','fields','find','create','body','getFields','findOne','sort','getSubjects','ServicenowField','rimraf','zip-dir','fast-json-patch','moment','mustache','util','to-csv','fs-extra','lodash','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','limit','count','offset','set','apply','reject','save','update','then','destroy'];(function(_0x564e89,_0x2fc282){var _0x2b222d=function(_0x357796){while(--_0x357796){_0x564e89['push'](_0x564e89['shift']());}};_0x2b222d(++_0x2fc282);}(_0x94c4,0x102));var _0x494c=function(_0x1628f6,_0x56a603){_0x1628f6=_0x1628f6-0x0;var _0x10ae25=_0x94c4[_0x1628f6];return _0x10ae25;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x494c('0x0'));var zipdir=require(_0x494c('0x1'));var jsonpatch=require(_0x494c('0x2'));var rp=require('request-promise');var moment=require(_0x494c('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x494c('0x4'));var util=require(_0x494c('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0x494c('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x494c('0x7'));var _=require(_0x494c('0x8'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x494c('0x9'));var deskjs=require('desk.js');var toCsv=require(_0x494c('0x6'));var querystring=require(_0x494c('0xa'));var Papa=require(_0x494c('0xb'));var Redis=require('ioredis');var authService=require(_0x494c('0xc'));var qs=require(_0x494c('0xd'));var as=require(_0x494c('0xe'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x494c('0xf'))(_0x494c('0x10'));var utils=require(_0x494c('0x11'));var config=require('../../config/environment');var licenseUtil=require(_0x494c('0x12'));var db=require(_0x494c('0x13'))['db'];function respondWithStatusCode(_0x3c9cad,_0xa5e81b){_0xa5e81b=_0xa5e81b||0xcc;return function(_0x4fa74b){if(_0x4fa74b){return _0x3c9cad[_0x494c('0x14')](_0xa5e81b);}return _0x3c9cad[_0x494c('0x15')](_0xa5e81b)['end']();};}function respondWithResult(_0x49b30e,_0x54f3a6){_0x54f3a6=_0x54f3a6||0xc8;return function(_0x7a74a4){if(_0x7a74a4){return _0x49b30e[_0x494c('0x15')](_0x54f3a6)[_0x494c('0x16')](_0x7a74a4);}};}function respondWithFilteredResult(_0x28fd16,_0x37d2ec){return function(_0x5006d8){if(_0x5006d8){var _0x4e8dc3=typeof _0x37d2ec['offset']===_0x494c('0x17')&&typeof _0x37d2ec[_0x494c('0x18')]===_0x494c('0x17');var _0x3e62ae=_0x5006d8[_0x494c('0x19')];var _0x2101a9=_0x4e8dc3?0x0:_0x37d2ec[_0x494c('0x1a')];var _0x1f48c7=_0x4e8dc3?_0x5006d8[_0x494c('0x19')]:_0x37d2ec[_0x494c('0x1a')]+_0x37d2ec[_0x494c('0x18')];var _0xd516a4;if(_0x1f48c7>=_0x3e62ae){_0x1f48c7=_0x3e62ae;_0xd516a4=0xc8;}else{_0xd516a4=0xce;}_0x28fd16['status'](_0xd516a4);return _0x28fd16[_0x494c('0x1b')]('Content-Range',_0x2101a9+'-'+_0x1f48c7+'/'+_0x3e62ae)[_0x494c('0x16')](_0x5006d8);}return null;};}function patchUpdates(_0x18c746){return function(_0x4603e0){try{jsonpatch[_0x494c('0x1c')](_0x4603e0,_0x18c746,!![]);}catch(_0x45c67d){return BPromise[_0x494c('0x1d')](_0x45c67d);}return _0x4603e0[_0x494c('0x1e')]();};}function saveUpdates(_0x108182,_0x21be71){return function(_0x3e1bb9){if(_0x3e1bb9){return _0x3e1bb9[_0x494c('0x1f')](_0x108182)[_0x494c('0x20')](function(_0xeddbe0){return _0xeddbe0;});}return null;};}function removeEntity(_0x5b1e32,_0x9a521){return function(_0x256fe6){if(_0x256fe6){return _0x256fe6[_0x494c('0x21')]()[_0x494c('0x20')](function(){_0x5b1e32[_0x494c('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x51f134,_0x403bdd){return function(_0x3a16ca){if(!_0x3a16ca){_0x51f134['sendStatus'](0x194);}return _0x3a16ca;};}function handleError(_0x25fe3b,_0x5b9856){_0x5b9856=_0x5b9856||0x1f4;return function(_0x4e6adf){logger['error'](_0x4e6adf[_0x494c('0x22')]);if(_0x4e6adf[_0x494c('0x23')]){delete _0x4e6adf[_0x494c('0x23')];}_0x25fe3b[_0x494c('0x15')](_0x5b9856)['send'](_0x4e6adf);};}exports['index']=function(_0x1bbfbf,_0x5d726e){var _0x2a4d1f={},_0x2fee9a={},_0xd1ee51={'count':0x0,'rows':[]};var _0x19a97b=_[_0x494c('0x24')](db[_0x494c('0x25')][_0x494c('0x26')],function(_0x315e79){return{'name':_0x315e79[_0x494c('0x27')],'type':_0x315e79[_0x494c('0x28')][_0x494c('0x29')]};});_0x2fee9a['model']=_[_0x494c('0x24')](_0x19a97b,'name');_0x2fee9a[_0x494c('0x2a')]=_['keys'](_0x1bbfbf[_0x494c('0x2a')]);_0x2fee9a[_0x494c('0x2b')]=_[_0x494c('0x2c')](_0x2fee9a[_0x494c('0x2d')],_0x2fee9a[_0x494c('0x2a')]);_0x2a4d1f['attributes']=_[_0x494c('0x2c')](_0x2fee9a[_0x494c('0x2d')],qs['fields'](_0x1bbfbf[_0x494c('0x2a')]['fields']));_0x2a4d1f[_0x494c('0x2e')]=_0x2a4d1f[_0x494c('0x2e')][_0x494c('0x2f')]?_0x2a4d1f[_0x494c('0x2e')]:_0x2fee9a[_0x494c('0x2d')];if(!_0x1bbfbf[_0x494c('0x2a')][_0x494c('0x30')](_0x494c('0x31'))){_0x2a4d1f[_0x494c('0x18')]=qs[_0x494c('0x18')](_0x1bbfbf[_0x494c('0x2a')][_0x494c('0x18')]);_0x2a4d1f[_0x494c('0x1a')]=qs['offset'](_0x1bbfbf['query']['offset']);}_0x2a4d1f[_0x494c('0x32')]=qs['sort'](_0x1bbfbf['query']['sort']);_0x2a4d1f[_0x494c('0x33')]=qs[_0x494c('0x2b')](_[_0x494c('0x34')](_0x1bbfbf['query'],_0x2fee9a[_0x494c('0x2b')]),_0x19a97b);if(_0x1bbfbf[_0x494c('0x2a')][_0x494c('0x35')]){_0x2a4d1f[_0x494c('0x33')]=_[_0x494c('0x36')](_0x2a4d1f['where'],{'$or':_[_0x494c('0x24')](_0x19a97b,function(_0x3958dd){if(_0x3958dd[_0x494c('0x28')]!==_0x494c('0x37')){var _0x21c0ec={};_0x21c0ec[_0x3958dd[_0x494c('0x23')]]={'$like':'%'+_0x1bbfbf[_0x494c('0x2a')][_0x494c('0x35')]+'%'};return _0x21c0ec;}})});}_0x2a4d1f=_['merge']({},_0x2a4d1f,_0x1bbfbf[_0x494c('0x38')]);var _0x3daec0={'where':_0x2a4d1f[_0x494c('0x33')]};return db[_0x494c('0x25')][_0x494c('0x19')](_0x3daec0)[_0x494c('0x20')](function(_0x11121e){_0xd1ee51[_0x494c('0x19')]=_0x11121e;if(_0x1bbfbf[_0x494c('0x2a')][_0x494c('0x39')]){_0x2a4d1f[_0x494c('0x3a')]=[{'all':!![]}];}return db[_0x494c('0x25')]['findAll'](_0x2a4d1f);})[_0x494c('0x20')](function(_0x44f6ec){_0xd1ee51[_0x494c('0x3b')]=_0x44f6ec;return _0xd1ee51;})['then'](respondWithFilteredResult(_0x5d726e,_0x2a4d1f))[_0x494c('0x3c')](handleError(_0x5d726e,null));};exports[_0x494c('0x3d')]=function(_0x5479a2,_0x3236c4){var _0x3018ac={'raw':![],'where':{'id':_0x5479a2[_0x494c('0x3e')]['id']}},_0x3cc784={};_0x3cc784[_0x494c('0x2d')]=_[_0x494c('0x3f')](db['ServicenowConfiguration'][_0x494c('0x26')]);_0x3cc784[_0x494c('0x2a')]=_[_0x494c('0x3f')](_0x5479a2[_0x494c('0x2a')]);_0x3cc784[_0x494c('0x2b')]=_[_0x494c('0x2c')](_0x3cc784[_0x494c('0x2d')],_0x3cc784['query']);_0x3018ac[_0x494c('0x2e')]=_[_0x494c('0x2c')](_0x3cc784['model'],qs[_0x494c('0x40')](_0x5479a2[_0x494c('0x2a')][_0x494c('0x40')]));_0x3018ac[_0x494c('0x2e')]=_0x3018ac[_0x494c('0x2e')][_0x494c('0x2f')]?_0x3018ac[_0x494c('0x2e')]:_0x3cc784[_0x494c('0x2d')];if(_0x5479a2['query'][_0x494c('0x39')]){_0x3018ac['include']=[{'all':!![]}];}_0x3018ac=_[_0x494c('0x36')]({},_0x3018ac,_0x5479a2[_0x494c('0x38')]);return db[_0x494c('0x25')][_0x494c('0x41')](_0x3018ac)['then'](handleEntityNotFound(_0x3236c4,null))['then'](respondWithResult(_0x3236c4,null))['catch'](handleError(_0x3236c4,null));};exports[_0x494c('0x42')]=function(_0x147356,_0x555147){return db[_0x494c('0x25')][_0x494c('0x42')](_0x147356[_0x494c('0x43')],{})['then'](respondWithResult(_0x555147,0xc9))[_0x494c('0x3c')](handleError(_0x555147,null));};exports['update']=function(_0x1f5641,_0x598e83){if(_0x1f5641[_0x494c('0x43')]['id']){delete _0x1f5641[_0x494c('0x43')]['id'];}return db[_0x494c('0x25')]['find']({'where':{'id':_0x1f5641[_0x494c('0x3e')]['id']}})[_0x494c('0x20')](handleEntityNotFound(_0x598e83,null))['then'](saveUpdates(_0x1f5641['body'],null))[_0x494c('0x20')](respondWithResult(_0x598e83,null))[_0x494c('0x3c')](handleError(_0x598e83,null));};exports[_0x494c('0x21')]=function(_0x3fc988,_0x4a6119){return db[_0x494c('0x25')][_0x494c('0x41')]({'where':{'id':_0x3fc988[_0x494c('0x3e')]['id']}})[_0x494c('0x20')](handleEntityNotFound(_0x4a6119,null))[_0x494c('0x20')](removeEntity(_0x4a6119,null))['catch'](handleError(_0x4a6119,null));};exports[_0x494c('0x44')]=function(_0x4f6973,_0x1ba73b,_0x5b0cdf){var _0xca0cc7={};var _0x78e865={};var _0x517896;var _0x205eb1;return db[_0x494c('0x25')][_0x494c('0x45')]({'where':{'id':_0x4f6973[_0x494c('0x3e')]['id']}})[_0x494c('0x20')](handleEntityNotFound(_0x1ba73b,null))[_0x494c('0x20')](function(_0x32de84){if(_0x32de84){_0x517896=_0x32de84;_0x78e865[_0x494c('0x2d')]=_[_0x494c('0x3f')](db['ServicenowField'][_0x494c('0x26')]);_0x78e865[_0x494c('0x2a')]=_['keys'](_0x4f6973[_0x494c('0x2a')]);_0x78e865[_0x494c('0x2b')]=_['intersection'](_0x78e865['model'],_0x78e865[_0x494c('0x2a')]);_0xca0cc7['attributes']=_[_0x494c('0x2c')](_0x78e865[_0x494c('0x2d')],qs[_0x494c('0x40')](_0x4f6973['query'][_0x494c('0x40')]));_0xca0cc7[_0x494c('0x2e')]=_0xca0cc7[_0x494c('0x2e')]['length']?_0xca0cc7[_0x494c('0x2e')]:_0x78e865[_0x494c('0x2d')];_0xca0cc7['order']=qs[_0x494c('0x46')](_0x4f6973[_0x494c('0x2a')]['sort']);_0xca0cc7[_0x494c('0x33')]=qs[_0x494c('0x2b')](_[_0x494c('0x34')](_0x4f6973['query'],_0x78e865['filters']));if(_0x4f6973['query']['filter']){_0xca0cc7[_0x494c('0x33')]=_['merge'](_0xca0cc7[_0x494c('0x33')],{'$or':_[_0x494c('0x24')](_0xca0cc7[_0x494c('0x2e')],function(_0x499556){var _0x58481b={};_0x58481b[_0x499556]={'$like':'%'+_0x4f6973['query']['filter']+'%'};return _0x58481b;})});}_0xca0cc7=_[_0x494c('0x36')]({},_0xca0cc7,_0x4f6973[_0x494c('0x38')]);return _0x517896[_0x494c('0x44')](_0xca0cc7);}})[_0x494c('0x20')](function(_0x1fa41e){if(_0x1fa41e){_0x205eb1=_0x1fa41e[_0x494c('0x2f')];if(!_0x4f6973[_0x494c('0x2a')]['hasOwnProperty'](_0x494c('0x31'))){_0xca0cc7[_0x494c('0x18')]=qs[_0x494c('0x18')](_0x4f6973['query'][_0x494c('0x18')]);_0xca0cc7['offset']=qs[_0x494c('0x1a')](_0x4f6973[_0x494c('0x2a')][_0x494c('0x1a')]);}return _0x517896[_0x494c('0x44')](_0xca0cc7);}})[_0x494c('0x20')](function(_0x1b6960){if(_0x1b6960){return _0x1b6960?{'count':_0x205eb1,'rows':_0x1b6960}:null;}})[_0x494c('0x20')](respondWithResult(_0x1ba73b,null))['catch'](handleError(_0x1ba73b,null));};exports[_0x494c('0x47')]=function(_0x4f2115,_0x227ebd,_0x3b3786){var _0x4e9700={};var _0x39315e={};var _0x5c88e0;var _0x5a3b94;return db[_0x494c('0x25')]['findOne']({'where':{'id':_0x4f2115[_0x494c('0x3e')]['id']}})[_0x494c('0x20')](handleEntityNotFound(_0x227ebd,null))[_0x494c('0x20')](function(_0x1420e4){if(_0x1420e4){_0x5c88e0=_0x1420e4;_0x39315e[_0x494c('0x2d')]=_['keys'](db[_0x494c('0x48')][_0x494c('0x26')]);_0x39315e[_0x494c('0x2a')]=_[_0x494c('0x3f')](_0x4f2115['query']);_0x39315e[_0x494c('0x2b')]=_[_0x494c('0x2c')](_0x39315e[_0x494c('0x2d')],_0x39315e[_0x494c('0x2a')]);_0x4e9700['attributes']=_[_0x494c('0x2c')](_0x39315e[_0x494c('0x2d')],qs['fields'](_0x4f2115[_0x494c('0x2a')][_0x494c('0x40')]));_0x4e9700[_0x494c('0x2e')]=_0x4e9700[_0x494c('0x2e')][_0x494c('0x2f')]?_0x4e9700[_0x494c('0x2e')]:_0x39315e[_0x494c('0x2d')];_0x4e9700[_0x494c('0x32')]=qs[_0x494c('0x46')](_0x4f2115[_0x494c('0x2a')]['sort']);_0x4e9700['where']=qs[_0x494c('0x2b')](_[_0x494c('0x34')](_0x4f2115[_0x494c('0x2a')],_0x39315e[_0x494c('0x2b')]));if(_0x4f2115['query'][_0x494c('0x35')]){_0x4e9700[_0x494c('0x33')]=_[_0x494c('0x36')](_0x4e9700[_0x494c('0x33')],{'$or':_[_0x494c('0x24')](_0x4e9700[_0x494c('0x2e')],function(_0x4db632){var _0x57043f={};_0x57043f[_0x4db632]={'$like':'%'+_0x4f2115[_0x494c('0x2a')][_0x494c('0x35')]+'%'};return _0x57043f;})});}_0x4e9700=_[_0x494c('0x36')]({},_0x4e9700,_0x4f2115[_0x494c('0x38')]);return _0x5c88e0[_0x494c('0x47')](_0x4e9700);}})[_0x494c('0x20')](function(_0x554646){if(_0x554646){_0x5a3b94=_0x554646[_0x494c('0x2f')];if(!_0x4f2115[_0x494c('0x2a')][_0x494c('0x30')](_0x494c('0x31'))){_0x4e9700[_0x494c('0x18')]=qs[_0x494c('0x18')](_0x4f2115[_0x494c('0x2a')]['limit']);_0x4e9700['offset']=qs[_0x494c('0x1a')](_0x4f2115[_0x494c('0x2a')][_0x494c('0x1a')]);}return _0x5c88e0[_0x494c('0x47')](_0x4e9700);}})[_0x494c('0x20')](function(_0xf0d0aa){if(_0xf0d0aa){return _0xf0d0aa?{'count':_0x5a3b94,'rows':_0xf0d0aa}:null;}})['then'](respondWithResult(_0x227ebd,null))[_0x494c('0x3c')](handleError(_0x227ebd,null));};exports['getDescriptions']=function(_0x3182ac,_0x4bf2f8,_0x1d6f66){var _0x5a7997={};var _0xc20875={};var _0x27ae53;var _0x4d37bd;return db[_0x494c('0x25')]['findOne']({'where':{'id':_0x3182ac['params']['id']}})[_0x494c('0x20')](handleEntityNotFound(_0x4bf2f8,null))['then'](function(_0x2862db){if(_0x2862db){_0x27ae53=_0x2862db;_0xc20875[_0x494c('0x2d')]=_[_0x494c('0x3f')](db['ServicenowField'][_0x494c('0x26')]);_0xc20875[_0x494c('0x2a')]=_[_0x494c('0x3f')](_0x3182ac[_0x494c('0x2a')]);_0xc20875[_0x494c('0x2b')]=_[_0x494c('0x2c')](_0xc20875['model'],_0xc20875[_0x494c('0x2a')]);_0x5a7997[_0x494c('0x2e')]=_[_0x494c('0x2c')](_0xc20875['model'],qs[_0x494c('0x40')](_0x3182ac[_0x494c('0x2a')][_0x494c('0x40')]));_0x5a7997['attributes']=_0x5a7997[_0x494c('0x2e')][_0x494c('0x2f')]?_0x5a7997[_0x494c('0x2e')]:_0xc20875['model'];_0x5a7997[_0x494c('0x32')]=qs[_0x494c('0x46')](_0x3182ac[_0x494c('0x2a')][_0x494c('0x46')]);_0x5a7997[_0x494c('0x33')]=qs[_0x494c('0x2b')](_[_0x494c('0x34')](_0x3182ac[_0x494c('0x2a')],_0xc20875[_0x494c('0x2b')]));if(_0x3182ac[_0x494c('0x2a')][_0x494c('0x35')]){_0x5a7997[_0x494c('0x33')]=_[_0x494c('0x36')](_0x5a7997[_0x494c('0x33')],{'$or':_[_0x494c('0x24')](_0x5a7997[_0x494c('0x2e')],function(_0x362695){var _0x1a5c9c={};_0x1a5c9c[_0x362695]={'$like':'%'+_0x3182ac[_0x494c('0x2a')][_0x494c('0x35')]+'%'};return _0x1a5c9c;})});}_0x5a7997=_[_0x494c('0x36')]({},_0x5a7997,_0x3182ac['options']);return _0x27ae53['getDescriptions'](_0x5a7997);}})[_0x494c('0x20')](function(_0x574a82){if(_0x574a82){_0x4d37bd=_0x574a82['length'];if(!_0x3182ac['query']['hasOwnProperty'](_0x494c('0x31'))){_0x5a7997[_0x494c('0x18')]=qs[_0x494c('0x18')](_0x3182ac[_0x494c('0x2a')][_0x494c('0x18')]);_0x5a7997[_0x494c('0x1a')]=qs[_0x494c('0x1a')](_0x3182ac['query'][_0x494c('0x1a')]);}return _0x27ae53['getDescriptions'](_0x5a7997);}})[_0x494c('0x20')](function(_0x1ba833){if(_0x1ba833){return _0x1ba833?{'count':_0x4d37bd,'rows':_0x1ba833}:null;}})['then'](respondWithResult(_0x4bf2f8,null))[_0x494c('0x3c')](handleError(_0x4bf2f8,null));};
\ No newline at end of file
index f9eb4c9..821a489 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fea=['moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','ServicenowConfiguration','int_servicenow_configurations','util'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x7fea,0x149));var _0xa7fe=function(_0x54b171,_0x1a9b61){_0x54b171=_0x54b171-0x0;var _0x3326d3=_0x7fea[_0x54b171];return _0x3326d3;};'use strict';var _=require('lodash');var util=require(_0xa7fe('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0xa7fe('0x1'));var BPromise=require(_0xa7fe('0x2'));var rp=require(_0xa7fe('0x3'));var fs=require('fs');var path=require(_0xa7fe('0x4'));var rimraf=require(_0xa7fe('0x5'));var config=require(_0xa7fe('0x6'));var attributes=require('./intServicenowConfiguration.attributes');module[_0xa7fe('0x7')]=function(_0x2bcfad,_0x1fbc99){return _0x2bcfad[_0xa7fe('0x8')](_0xa7fe('0x9'),attributes,{'tableName':_0xa7fe('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x81fa=['lodash','util','api','moment','bluebird','request-promise','rimraf','../../config/environment','./intServicenowConfiguration.attributes','exports','define','ServicenowConfiguration','int_servicenow_configurations'];(function(_0x51ba10,_0xf449c7){var _0xf7a8e9=function(_0x24ed83){while(--_0x24ed83){_0x51ba10['push'](_0x51ba10['shift']());}};_0xf7a8e9(++_0xf449c7);}(_0x81fa,0xdd));var _0xa81f=function(_0x13cb09,_0x2516f4){_0x13cb09=_0x13cb09-0x0;var _0x5a04af=_0x81fa[_0x13cb09];return _0x5a04af;};'use strict';var _=require(_0xa81f('0x0'));var util=require(_0xa81f('0x1'));var logger=require('../../config/logger')(_0xa81f('0x2'));var moment=require(_0xa81f('0x3'));var BPromise=require(_0xa81f('0x4'));var rp=require(_0xa81f('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xa81f('0x6'));var config=require(_0xa81f('0x7'));var attributes=require(_0xa81f('0x8'));module[_0xa81f('0x9')]=function(_0x1dc233,_0x158719){return _0x1dc233[_0xa81f('0xa')](_0xa81f('0xb'),attributes,{'tableName':_0xa81f('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index cbaa13f..f442254 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8481=['request\x20sent','debug','error','code','message','info','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','ServicenowConfiguration,\x20%s,\x20%s'];(function(_0x75cfd6,_0x44b213){var _0x4692e6=function(_0xf9f5ea){while(--_0xf9f5ea){_0x75cfd6['push'](_0x75cfd6['shift']());}};_0x4692e6(++_0x44b213);}(_0x8481,0xb0));var _0x1848=function(_0x43d16c,_0x2b5447){_0x43d16c=_0x43d16c-0x0;var _0x208cce=_0x8481[_0x43d16c];return _0x208cce;};'use strict';var _=require('lodash');var util=require(_0x1848('0x0'));var moment=require(_0x1848('0x1'));var BPromise=require(_0x1848('0x2'));var rs=require(_0x1848('0x3'));var fs=require('fs');var Redis=require(_0x1848('0x4'));var db=require(_0x1848('0x5'))['db'];var utils=require(_0x1848('0x6'));var logger=require(_0x1848('0x7'))(_0x1848('0x8'));var config=require(_0x1848('0x9'));var jayson=require(_0x1848('0xa'));var client=jayson[_0x1848('0xb')][_0x1848('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x56325a,_0x4947f9,_0x38b895){return new BPromise(function(_0x10cf04,_0x56809f){return client[_0x1848('0xd')](_0x56325a,_0x38b895)[_0x1848('0xe')](function(_0x400a5b){logger['info'](_0x1848('0xf'),_0x4947f9,_0x1848('0x10'));logger[_0x1848('0x11')]('ServicenowConfiguration,\x20%s,\x20%s,\x20%s',_0x4947f9,_0x1848('0x10'),JSON['stringify'](_0x400a5b));if(_0x400a5b[_0x1848('0x12')]){if(_0x400a5b[_0x1848('0x12')][_0x1848('0x13')]===0x1f4){logger[_0x1848('0x12')](_0x1848('0xf'),_0x4947f9,_0x400a5b['error']['message']);return _0x56809f(_0x400a5b[_0x1848('0x12')][_0x1848('0x14')]);}logger['error'](_0x1848('0xf'),_0x4947f9,_0x400a5b[_0x1848('0x12')]['message']);return _0x10cf04(_0x400a5b[_0x1848('0x12')][_0x1848('0x14')]);}else{logger[_0x1848('0x15')](_0x1848('0xf'),_0x4947f9,'request\x20sent');_0x10cf04(_0x400a5b[_0x1848('0x16')][_0x1848('0x14')]);}})[_0x1848('0x17')](function(_0x4a7424){logger[_0x1848('0x12')](_0x1848('0xf'),_0x4947f9,_0x4a7424);_0x56809f(_0x4a7424);});});}
\ No newline at end of file
+var _0x789f=['client','http','request','then','info','ServicenowConfiguration,\x20%s,\x20%s','request\x20sent','debug','ServicenowConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x30007d,_0x343e2a){var _0x47d7eb=function(_0x2b4f4b){while(--_0x2b4f4b){_0x30007d['push'](_0x30007d['shift']());}};_0x47d7eb(++_0x343e2a);}(_0x789f,0x10c));var _0xf789=function(_0x1fb4e1,_0x3d4ce6){_0x1fb4e1=_0x1fb4e1-0x0;var _0x22d1b0=_0x789f[_0x1fb4e1];return _0x22d1b0;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xf789('0x0'));var BPromise=require(_0xf789('0x1'));var rs=require(_0xf789('0x2'));var fs=require('fs');var Redis=require(_0xf789('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xf789('0x4'));var logger=require(_0xf789('0x5'))(_0xf789('0x6'));var config=require(_0xf789('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xf789('0x8')][_0xf789('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x55303d,_0x5414da,_0x1a1a38){return new BPromise(function(_0x3e9372,_0x1cb6de){return client[_0xf789('0xa')](_0x55303d,_0x1a1a38)[_0xf789('0xb')](function(_0x9aecfa){logger[_0xf789('0xc')](_0xf789('0xd'),_0x5414da,_0xf789('0xe'));logger[_0xf789('0xf')](_0xf789('0x10'),_0x5414da,'request\x20sent',JSON[_0xf789('0x11')](_0x9aecfa));if(_0x9aecfa[_0xf789('0x12')]){if(_0x9aecfa[_0xf789('0x12')][_0xf789('0x13')]===0x1f4){logger[_0xf789('0x12')]('ServicenowConfiguration,\x20%s,\x20%s',_0x5414da,_0x9aecfa['error']['message']);return _0x1cb6de(_0x9aecfa['error']['message']);}logger[_0xf789('0x12')]('ServicenowConfiguration,\x20%s,\x20%s',_0x5414da,_0x9aecfa[_0xf789('0x12')][_0xf789('0x14')]);return _0x3e9372(_0x9aecfa[_0xf789('0x12')][_0xf789('0x14')]);}else{logger[_0xf789('0xc')](_0xf789('0xd'),_0x5414da,_0xf789('0xe'));_0x3e9372(_0x9aecfa[_0xf789('0x15')][_0xf789('0x14')]);}})[_0xf789('0x16')](function(_0x31a79e){logger['error']('ServicenowConfiguration,\x20%s,\x20%s',_0x5414da,_0x31a79e);_0x1cb6de(_0x31a79e);});});}
\ No newline at end of file
index d5618dd..f1206a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3724=['isAuthenticated','show','post','create','put','delete','multer','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intServicenowField.controller','get','index','/:id'];(function(_0x2adefb,_0x21670d){var _0xa413c8=function(_0x17c1f6){while(--_0x17c1f6){_0x2adefb['push'](_0x2adefb['shift']());}};_0xa413c8(++_0x21670d);}(_0x3724,0x84));var _0x4372=function(_0x4474c2,_0x59cf02){_0x4474c2=_0x4474c2-0x0;var _0x435fbb=_0x3724[_0x4474c2];return _0x435fbb;};'use strict';var multer=require(_0x4372('0x0'));var util=require(_0x4372('0x1'));var path=require(_0x4372('0x2'));var timeout=require(_0x4372('0x3'));var express=require('express');var router=express[_0x4372('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x4372('0x5'));var interaction=require(_0x4372('0x6'));var config=require(_0x4372('0x7'));var controller=require(_0x4372('0x8'));router[_0x4372('0x9')]('/',auth['isAuthenticated'](),controller[_0x4372('0xa')]);router[_0x4372('0x9')](_0x4372('0xb'),auth[_0x4372('0xc')](),controller[_0x4372('0xd')]);router[_0x4372('0xe')]('/',auth[_0x4372('0xc')](),controller[_0x4372('0xf')]);router[_0x4372('0x10')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0x4372('0x11')]('/:id',auth[_0x4372('0xc')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xb728=['get','index','/:id','isAuthenticated','show','create','put','update','delete','destroy','multer','util','connect-timeout','Router','../../components/auth/service','../../config/environment'];(function(_0x51a6d6,_0x3c9c49){var _0x5ef1a8=function(_0x8ff84a){while(--_0x8ff84a){_0x51a6d6['push'](_0x51a6d6['shift']());}};_0x5ef1a8(++_0x3c9c49);}(_0xb728,0xea));var _0x8b72=function(_0x7fbd8c,_0xa9c0a8){_0x7fbd8c=_0x7fbd8c-0x0;var _0x99ac7a=_0xb728[_0x7fbd8c];return _0x99ac7a;};'use strict';var multer=require(_0x8b72('0x0'));var util=require(_0x8b72('0x1'));var path=require('path');var timeout=require(_0x8b72('0x2'));var express=require('express');var router=express[_0x8b72('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x8b72('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x8b72('0x5'));var controller=require('./intServicenowField.controller');router[_0x8b72('0x6')]('/',auth['isAuthenticated'](),controller[_0x8b72('0x7')]);router[_0x8b72('0x6')](_0x8b72('0x8'),auth[_0x8b72('0x9')](),controller[_0x8b72('0xa')]);router['post']('/',auth['isAuthenticated'](),controller[_0x8b72('0xb')]);router[_0x8b72('0xc')]('/:id',auth['isAuthenticated'](),controller[_0x8b72('0xd')]);router[_0x8b72('0xe')](_0x8b72('0x8'),auth['isAuthenticated'](),controller[_0x8b72('0xf')]);module['exports']=router;
\ No newline at end of file
index 06f289b..56967c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a6f=['string','picklist','STRING','variable','customVariable','BOOLEAN','sequelize','exports','ENUM'];(function(_0x404276,_0x194e57){var _0x4a7e75=function(_0x268fc4){while(--_0x268fc4){_0x404276['push'](_0x404276['shift']());}};_0x4a7e75(++_0x194e57);}(_0x6a6f,0x69));var _0xf6a6=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x6a6f[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xf6a6('0x0'));module[_0xf6a6('0x1')]={'type':{'type':Sequelize[_0xf6a6('0x2')](_0xf6a6('0x3'),'variable','customVariable','keyValue',_0xf6a6('0x4')),'defaultValue':_0xf6a6('0x3')},'content':{'type':Sequelize[_0xf6a6('0x5')]},'key':{'type':Sequelize[_0xf6a6('0x5')]},'keyType':{'type':Sequelize[_0xf6a6('0x2')](_0xf6a6('0x3'),_0xf6a6('0x6'),_0xf6a6('0x7'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0xf6a6('0x5')]},'nameField':{'type':Sequelize[_0xf6a6('0x5')]},'customField':{'type':Sequelize[_0xf6a6('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x4453=['ENUM','string','variable','customVariable','keyValue','STRING','BOOLEAN','sequelize','exports'];(function(_0x56916d,_0x37b935){var _0x2b7f1f=function(_0x206eb1){while(--_0x206eb1){_0x56916d['push'](_0x56916d['shift']());}};_0x2b7f1f(++_0x37b935);}(_0x4453,0x6a));var _0x3445=function(_0x116632,_0x360d43){_0x116632=_0x116632-0x0;var _0xbed9e3=_0x4453[_0x116632];return _0xbed9e3;};'use strict';var Sequelize=require(_0x3445('0x0'));module[_0x3445('0x1')]={'type':{'type':Sequelize[_0x3445('0x2')](_0x3445('0x3'),_0x3445('0x4'),_0x3445('0x5'),_0x3445('0x6'),'picklist'),'defaultValue':_0x3445('0x3')},'content':{'type':Sequelize[_0x3445('0x7')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x3445('0x2')](_0x3445('0x3'),'variable','customVariable')},'keyContent':{'type':Sequelize[_0x3445('0x7')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x3445('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x3445('0x7')]}};
\ No newline at end of file
index 4a1203c..7df044a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff99=['stack','name','index','map','rawAttributes','type','key','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','order','sort','where','merge','VIRTUAL','filter','options','include','ServicenowField','findAll','rows','show','params','length','includeAll','find','catch','create','body','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../mysqldb','status','offset','limit','undefined','count','set','Content-Range','apply','reject','update','then','destroy','end','sendStatus'];(function(_0x50a4c2,_0x19837c){var _0x3e1839=function(_0x801725){while(--_0x801725){_0x50a4c2['push'](_0x50a4c2['shift']());}};_0x3e1839(++_0x19837c);}(_0xff99,0xb4));var _0x9ff9=function(_0x481837,_0x10e935){_0x481837=_0x481837-0x0;var _0x54c12c=_0xff99[_0x481837];return _0x54c12c;};'use strict';var emlformat=require(_0x9ff9('0x0'));var rimraf=require(_0x9ff9('0x1'));var zipdir=require(_0x9ff9('0x2'));var jsonpatch=require(_0x9ff9('0x3'));var rp=require('request-promise');var moment=require(_0x9ff9('0x4'));var BPromise=require(_0x9ff9('0x5'));var Mustache=require(_0x9ff9('0x6'));var util=require(_0x9ff9('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0x9ff9('0x8'));var ejs=require(_0x9ff9('0x9'));var fs=require('fs');var fs_extra=require(_0x9ff9('0xa'));var _=require(_0x9ff9('0xb'));var squel=require(_0x9ff9('0xc'));var crypto=require(_0x9ff9('0xd'));var jsforce=require(_0x9ff9('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x9ff9('0xf'));var Papa=require(_0x9ff9('0x10'));var Redis=require(_0x9ff9('0x11'));var authService=require(_0x9ff9('0x12'));var qs=require(_0x9ff9('0x13'));var as=require(_0x9ff9('0x14'));var hardwareService=require(_0x9ff9('0x15'));var logger=require(_0x9ff9('0x16'))('api');var utils=require(_0x9ff9('0x17'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x9ff9('0x18'))['db'];function respondWithStatusCode(_0x137894,_0x50b598){_0x50b598=_0x50b598||0xcc;return function(_0x54ba83){if(_0x54ba83){return _0x137894['sendStatus'](_0x50b598);}return _0x137894[_0x9ff9('0x19')](_0x50b598)['end']();};}function respondWithResult(_0x3191c8,_0x3717bb){_0x3717bb=_0x3717bb||0xc8;return function(_0x54425b){if(_0x54425b){return _0x3191c8['status'](_0x3717bb)['json'](_0x54425b);}};}function respondWithFilteredResult(_0x723573,_0x47f03a){return function(_0x18b2ac){if(_0x18b2ac){var _0xedac0a=typeof _0x47f03a[_0x9ff9('0x1a')]==='undefined'&&typeof _0x47f03a[_0x9ff9('0x1b')]===_0x9ff9('0x1c');var _0x4066b9=_0x18b2ac['count'];var _0x36ab0a=_0xedac0a?0x0:_0x47f03a[_0x9ff9('0x1a')];var _0x1e187a=_0xedac0a?_0x18b2ac[_0x9ff9('0x1d')]:_0x47f03a[_0x9ff9('0x1a')]+_0x47f03a[_0x9ff9('0x1b')];var _0x409eea;if(_0x1e187a>=_0x4066b9){_0x1e187a=_0x4066b9;_0x409eea=0xc8;}else{_0x409eea=0xce;}_0x723573[_0x9ff9('0x19')](_0x409eea);return _0x723573[_0x9ff9('0x1e')](_0x9ff9('0x1f'),_0x36ab0a+'-'+_0x1e187a+'/'+_0x4066b9)['json'](_0x18b2ac);}return null;};}function patchUpdates(_0x28ced4){return function(_0x1b3c29){try{jsonpatch[_0x9ff9('0x20')](_0x1b3c29,_0x28ced4,!![]);}catch(_0x10ec15){return BPromise[_0x9ff9('0x21')](_0x10ec15);}return _0x1b3c29['save']();};}function saveUpdates(_0x91b01d,_0x4b971d){return function(_0x35a034){if(_0x35a034){return _0x35a034[_0x9ff9('0x22')](_0x91b01d)[_0x9ff9('0x23')](function(_0x38c205){return _0x38c205;});}return null;};}function removeEntity(_0x3ab76c,_0x31b329){return function(_0x42ab6d){if(_0x42ab6d){return _0x42ab6d[_0x9ff9('0x24')]()['then'](function(){_0x3ab76c[_0x9ff9('0x19')](0xcc)[_0x9ff9('0x25')]();});}};}function handleEntityNotFound(_0x398370,_0x71d2c3){return function(_0x15a035){if(!_0x15a035){_0x398370[_0x9ff9('0x26')](0x194);}return _0x15a035;};}function handleError(_0x515598,_0x3ef52c){_0x3ef52c=_0x3ef52c||0x1f4;return function(_0x41fcfa){logger['error'](_0x41fcfa[_0x9ff9('0x27')]);if(_0x41fcfa['name']){delete _0x41fcfa[_0x9ff9('0x28')];}_0x515598[_0x9ff9('0x19')](_0x3ef52c)['send'](_0x41fcfa);};}exports[_0x9ff9('0x29')]=function(_0x5d0240,_0x1ded2b){var _0x5c426c={},_0x47b297={},_0xe53cfa={'count':0x0,'rows':[]};var _0x3ff90f=_[_0x9ff9('0x2a')](db['ServicenowField'][_0x9ff9('0x2b')],function(_0x375c4c){return{'name':_0x375c4c['fieldName'],'type':_0x375c4c[_0x9ff9('0x2c')][_0x9ff9('0x2d')]};});_0x47b297['model']=_[_0x9ff9('0x2a')](_0x3ff90f,_0x9ff9('0x28'));_0x47b297[_0x9ff9('0x2e')]=_[_0x9ff9('0x2f')](_0x5d0240[_0x9ff9('0x2e')]);_0x47b297[_0x9ff9('0x30')]=_[_0x9ff9('0x31')](_0x47b297[_0x9ff9('0x32')],_0x47b297[_0x9ff9('0x2e')]);_0x5c426c[_0x9ff9('0x33')]=_['intersection'](_0x47b297[_0x9ff9('0x32')],qs['fields'](_0x5d0240[_0x9ff9('0x2e')][_0x9ff9('0x34')]));_0x5c426c['attributes']=_0x5c426c['attributes']['length']?_0x5c426c[_0x9ff9('0x33')]:_0x47b297[_0x9ff9('0x32')];if(!_0x5d0240[_0x9ff9('0x2e')][_0x9ff9('0x35')]('nolimit')){_0x5c426c[_0x9ff9('0x1b')]=qs[_0x9ff9('0x1b')](_0x5d0240[_0x9ff9('0x2e')][_0x9ff9('0x1b')]);_0x5c426c[_0x9ff9('0x1a')]=qs[_0x9ff9('0x1a')](_0x5d0240[_0x9ff9('0x2e')]['offset']);}_0x5c426c[_0x9ff9('0x36')]=qs[_0x9ff9('0x37')](_0x5d0240['query'][_0x9ff9('0x37')]);_0x5c426c[_0x9ff9('0x38')]=qs[_0x9ff9('0x30')](_['pick'](_0x5d0240[_0x9ff9('0x2e')],_0x47b297[_0x9ff9('0x30')]),_0x3ff90f);if(_0x5d0240[_0x9ff9('0x2e')]['filter']){_0x5c426c['where']=_[_0x9ff9('0x39')](_0x5c426c[_0x9ff9('0x38')],{'$or':_[_0x9ff9('0x2a')](_0x3ff90f,function(_0xe0c00){if(_0xe0c00[_0x9ff9('0x2c')]!==_0x9ff9('0x3a')){var _0x50c9b1={};_0x50c9b1[_0xe0c00[_0x9ff9('0x28')]]={'$like':'%'+_0x5d0240[_0x9ff9('0x2e')][_0x9ff9('0x3b')]+'%'};return _0x50c9b1;}})});}_0x5c426c=_[_0x9ff9('0x39')]({},_0x5c426c,_0x5d0240[_0x9ff9('0x3c')]);var _0x528150={'where':_0x5c426c[_0x9ff9('0x38')]};return db['ServicenowField'][_0x9ff9('0x1d')](_0x528150)['then'](function(_0x33ee88){_0xe53cfa[_0x9ff9('0x1d')]=_0x33ee88;if(_0x5d0240[_0x9ff9('0x2e')]['includeAll']){_0x5c426c[_0x9ff9('0x3d')]=[{'all':!![]}];}return db[_0x9ff9('0x3e')][_0x9ff9('0x3f')](_0x5c426c);})['then'](function(_0xd0c7f3){_0xe53cfa[_0x9ff9('0x40')]=_0xd0c7f3;return _0xe53cfa;})[_0x9ff9('0x23')](respondWithFilteredResult(_0x1ded2b,_0x5c426c))['catch'](handleError(_0x1ded2b,null));};exports[_0x9ff9('0x41')]=function(_0x3451ee,_0x223a93){var _0x19481b={'raw':!![],'where':{'id':_0x3451ee[_0x9ff9('0x42')]['id']}},_0x43af51={};_0x43af51[_0x9ff9('0x32')]=_[_0x9ff9('0x2f')](db[_0x9ff9('0x3e')]['rawAttributes']);_0x43af51['query']=_['keys'](_0x3451ee[_0x9ff9('0x2e')]);_0x43af51[_0x9ff9('0x30')]=_[_0x9ff9('0x31')](_0x43af51[_0x9ff9('0x32')],_0x43af51[_0x9ff9('0x2e')]);_0x19481b[_0x9ff9('0x33')]=_[_0x9ff9('0x31')](_0x43af51[_0x9ff9('0x32')],qs[_0x9ff9('0x34')](_0x3451ee[_0x9ff9('0x2e')][_0x9ff9('0x34')]));_0x19481b['attributes']=_0x19481b[_0x9ff9('0x33')][_0x9ff9('0x43')]?_0x19481b[_0x9ff9('0x33')]:_0x43af51[_0x9ff9('0x32')];if(_0x3451ee['query'][_0x9ff9('0x44')]){_0x19481b[_0x9ff9('0x3d')]=[{'all':!![]}];}_0x19481b=_[_0x9ff9('0x39')]({},_0x19481b,_0x3451ee[_0x9ff9('0x3c')]);return db['ServicenowField'][_0x9ff9('0x45')](_0x19481b)[_0x9ff9('0x23')](handleEntityNotFound(_0x223a93,null))[_0x9ff9('0x23')](respondWithResult(_0x223a93,null))[_0x9ff9('0x46')](handleError(_0x223a93,null));};exports[_0x9ff9('0x47')]=function(_0x2f5ffe,_0x4ece61){return db[_0x9ff9('0x3e')][_0x9ff9('0x47')](_0x2f5ffe['body'],{})['then'](respondWithResult(_0x4ece61,0xc9))['catch'](handleError(_0x4ece61,null));};exports[_0x9ff9('0x22')]=function(_0x6446f4,_0x171a00){if(_0x6446f4['body']['id']){delete _0x6446f4[_0x9ff9('0x48')]['id'];}return db[_0x9ff9('0x3e')][_0x9ff9('0x45')]({'where':{'id':_0x6446f4['params']['id']}})[_0x9ff9('0x23')](handleEntityNotFound(_0x171a00,null))[_0x9ff9('0x23')](saveUpdates(_0x6446f4[_0x9ff9('0x48')],null))[_0x9ff9('0x23')](respondWithResult(_0x171a00,null))[_0x9ff9('0x46')](handleError(_0x171a00,null));};exports['destroy']=function(_0x2fdc2c,_0x39df18){return db[_0x9ff9('0x3e')][_0x9ff9('0x45')]({'where':{'id':_0x2fdc2c[_0x9ff9('0x42')]['id']}})[_0x9ff9('0x23')](handleEntityNotFound(_0x39df18,null))['then'](removeEntity(_0x39df18,null))[_0x9ff9('0x46')](handleError(_0x39df18,null));};
\ No newline at end of file
+var _0xb605=['filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','ejs','fs-extra','lodash','jsforce','desk.js','to-csv','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','map','ServicenowField','rawAttributes','fieldName','key','model','query','keys'];(function(_0x2070e0,_0x547748){var _0x56d65f=function(_0x2bbff2){while(--_0x2bbff2){_0x2070e0['push'](_0x2070e0['shift']());}};_0x56d65f(++_0x547748);}(_0xb605,0x195));var _0x5b60=function(_0x39bfb6,_0x4272c8){_0x39bfb6=_0x39bfb6-0x0;var _0x23fef9=_0xb605[_0x39bfb6];return _0x23fef9;};'use strict';var emlformat=require(_0x5b60('0x0'));var rimraf=require(_0x5b60('0x1'));var zipdir=require(_0x5b60('0x2'));var jsonpatch=require(_0x5b60('0x3'));var rp=require(_0x5b60('0x4'));var moment=require(_0x5b60('0x5'));var BPromise=require(_0x5b60('0x6'));var Mustache=require(_0x5b60('0x7'));var util=require('util');var path=require(_0x5b60('0x8'));var sox=require(_0x5b60('0x9'));var csv=require('to-csv');var ejs=require(_0x5b60('0xa'));var fs=require('fs');var fs_extra=require(_0x5b60('0xb'));var _=require(_0x5b60('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x5b60('0xd'));var deskjs=require(_0x5b60('0xe'));var toCsv=require(_0x5b60('0xf'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x5b60('0x10'));var authService=require(_0x5b60('0x11'));var qs=require(_0x5b60('0x12'));var as=require(_0x5b60('0x13'));var hardwareService=require(_0x5b60('0x14'));var logger=require(_0x5b60('0x15'))('api');var utils=require(_0x5b60('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x5b60('0x17'))['db'];function respondWithStatusCode(_0xef06c1,_0x28b4f3){_0x28b4f3=_0x28b4f3||0xcc;return function(_0x4cc000){if(_0x4cc000){return _0xef06c1[_0x5b60('0x18')](_0x28b4f3);}return _0xef06c1[_0x5b60('0x19')](_0x28b4f3)[_0x5b60('0x1a')]();};}function respondWithResult(_0x4b3a09,_0x503549){_0x503549=_0x503549||0xc8;return function(_0x337763){if(_0x337763){return _0x4b3a09[_0x5b60('0x19')](_0x503549)[_0x5b60('0x1b')](_0x337763);}};}function respondWithFilteredResult(_0x4c5399,_0x295562){return function(_0x23fd83){if(_0x23fd83){var _0x4c0726=typeof _0x295562[_0x5b60('0x1c')]===_0x5b60('0x1d')&&typeof _0x295562[_0x5b60('0x1e')]===_0x5b60('0x1d');var _0x39347a=_0x23fd83[_0x5b60('0x1f')];var _0x594f14=_0x4c0726?0x0:_0x295562['offset'];var _0x31d90f=_0x4c0726?_0x23fd83['count']:_0x295562[_0x5b60('0x1c')]+_0x295562[_0x5b60('0x1e')];var _0x2dce1f;if(_0x31d90f>=_0x39347a){_0x31d90f=_0x39347a;_0x2dce1f=0xc8;}else{_0x2dce1f=0xce;}_0x4c5399[_0x5b60('0x19')](_0x2dce1f);return _0x4c5399[_0x5b60('0x20')](_0x5b60('0x21'),_0x594f14+'-'+_0x31d90f+'/'+_0x39347a)['json'](_0x23fd83);}return null;};}function patchUpdates(_0x210eb2){return function(_0xd35e58){try{jsonpatch['apply'](_0xd35e58,_0x210eb2,!![]);}catch(_0x5edea9){return BPromise[_0x5b60('0x22')](_0x5edea9);}return _0xd35e58[_0x5b60('0x23')]();};}function saveUpdates(_0x3ccb77,_0x3121dd){return function(_0x4cf3d0){if(_0x4cf3d0){return _0x4cf3d0[_0x5b60('0x24')](_0x3ccb77)[_0x5b60('0x25')](function(_0x59407f){return _0x59407f;});}return null;};}function removeEntity(_0x5edefc,_0x54b26f){return function(_0x9aad95){if(_0x9aad95){return _0x9aad95[_0x5b60('0x26')]()[_0x5b60('0x25')](function(){_0x5edefc['status'](0xcc)[_0x5b60('0x1a')]();});}};}function handleEntityNotFound(_0x5203f0,_0x3ae4d0){return function(_0x3c27a0){if(!_0x3c27a0){_0x5203f0[_0x5b60('0x18')](0x194);}return _0x3c27a0;};}function handleError(_0x26ebde,_0x491552){_0x491552=_0x491552||0x1f4;return function(_0x5338eb){logger[_0x5b60('0x27')](_0x5338eb[_0x5b60('0x28')]);if(_0x5338eb[_0x5b60('0x29')]){delete _0x5338eb['name'];}_0x26ebde[_0x5b60('0x19')](_0x491552)[_0x5b60('0x2a')](_0x5338eb);};}exports['index']=function(_0x5ccb7f,_0x387954){var _0x225799={},_0x160b82={},_0x117ddf={'count':0x0,'rows':[]};var _0xa93f83=_[_0x5b60('0x2b')](db[_0x5b60('0x2c')][_0x5b60('0x2d')],function(_0x30f941){return{'name':_0x30f941[_0x5b60('0x2e')],'type':_0x30f941['type'][_0x5b60('0x2f')]};});_0x160b82[_0x5b60('0x30')]=_[_0x5b60('0x2b')](_0xa93f83,_0x5b60('0x29'));_0x160b82[_0x5b60('0x31')]=_[_0x5b60('0x32')](_0x5ccb7f[_0x5b60('0x31')]);_0x160b82[_0x5b60('0x33')]=_['intersection'](_0x160b82['model'],_0x160b82[_0x5b60('0x31')]);_0x225799[_0x5b60('0x34')]=_[_0x5b60('0x35')](_0x160b82[_0x5b60('0x30')],qs[_0x5b60('0x36')](_0x5ccb7f[_0x5b60('0x31')][_0x5b60('0x36')]));_0x225799[_0x5b60('0x34')]=_0x225799[_0x5b60('0x34')][_0x5b60('0x37')]?_0x225799[_0x5b60('0x34')]:_0x160b82[_0x5b60('0x30')];if(!_0x5ccb7f['query'][_0x5b60('0x38')](_0x5b60('0x39'))){_0x225799['limit']=qs['limit'](_0x5ccb7f[_0x5b60('0x31')]['limit']);_0x225799[_0x5b60('0x1c')]=qs[_0x5b60('0x1c')](_0x5ccb7f[_0x5b60('0x31')][_0x5b60('0x1c')]);}_0x225799[_0x5b60('0x3a')]=qs['sort'](_0x5ccb7f[_0x5b60('0x31')][_0x5b60('0x3b')]);_0x225799[_0x5b60('0x3c')]=qs[_0x5b60('0x33')](_[_0x5b60('0x3d')](_0x5ccb7f['query'],_0x160b82[_0x5b60('0x33')]),_0xa93f83);if(_0x5ccb7f[_0x5b60('0x31')][_0x5b60('0x3e')]){_0x225799[_0x5b60('0x3c')]=_['merge'](_0x225799[_0x5b60('0x3c')],{'$or':_[_0x5b60('0x2b')](_0xa93f83,function(_0xc68844){if(_0xc68844[_0x5b60('0x3f')]!==_0x5b60('0x40')){var _0x4338c5={};_0x4338c5[_0xc68844[_0x5b60('0x29')]]={'$like':'%'+_0x5ccb7f[_0x5b60('0x31')]['filter']+'%'};return _0x4338c5;}})});}_0x225799=_['merge']({},_0x225799,_0x5ccb7f[_0x5b60('0x41')]);var _0x121776={'where':_0x225799[_0x5b60('0x3c')]};return db[_0x5b60('0x2c')][_0x5b60('0x1f')](_0x121776)['then'](function(_0x120f49){_0x117ddf[_0x5b60('0x1f')]=_0x120f49;if(_0x5ccb7f[_0x5b60('0x31')][_0x5b60('0x42')]){_0x225799[_0x5b60('0x43')]=[{'all':!![]}];}return db['ServicenowField'][_0x5b60('0x44')](_0x225799);})['then'](function(_0x1a443b){_0x117ddf[_0x5b60('0x45')]=_0x1a443b;return _0x117ddf;})[_0x5b60('0x25')](respondWithFilteredResult(_0x387954,_0x225799))[_0x5b60('0x46')](handleError(_0x387954,null));};exports[_0x5b60('0x47')]=function(_0x52e79b,_0x14733c){var _0x3061cb={'raw':!![],'where':{'id':_0x52e79b[_0x5b60('0x48')]['id']}},_0x1a884d={};_0x1a884d[_0x5b60('0x30')]=_[_0x5b60('0x32')](db[_0x5b60('0x2c')][_0x5b60('0x2d')]);_0x1a884d[_0x5b60('0x31')]=_['keys'](_0x52e79b[_0x5b60('0x31')]);_0x1a884d[_0x5b60('0x33')]=_[_0x5b60('0x35')](_0x1a884d[_0x5b60('0x30')],_0x1a884d[_0x5b60('0x31')]);_0x3061cb[_0x5b60('0x34')]=_[_0x5b60('0x35')](_0x1a884d['model'],qs[_0x5b60('0x36')](_0x52e79b[_0x5b60('0x31')][_0x5b60('0x36')]));_0x3061cb[_0x5b60('0x34')]=_0x3061cb[_0x5b60('0x34')][_0x5b60('0x37')]?_0x3061cb[_0x5b60('0x34')]:_0x1a884d[_0x5b60('0x30')];if(_0x52e79b[_0x5b60('0x31')][_0x5b60('0x42')]){_0x3061cb[_0x5b60('0x43')]=[{'all':!![]}];}_0x3061cb=_['merge']({},_0x3061cb,_0x52e79b[_0x5b60('0x41')]);return db['ServicenowField'][_0x5b60('0x49')](_0x3061cb)['then'](handleEntityNotFound(_0x14733c,null))[_0x5b60('0x25')](respondWithResult(_0x14733c,null))[_0x5b60('0x46')](handleError(_0x14733c,null));};exports[_0x5b60('0x4a')]=function(_0x5533a6,_0x532575){return db['ServicenowField']['create'](_0x5533a6[_0x5b60('0x4b')],{})[_0x5b60('0x25')](respondWithResult(_0x532575,0xc9))[_0x5b60('0x46')](handleError(_0x532575,null));};exports[_0x5b60('0x24')]=function(_0xf862a,_0x149a7c){if(_0xf862a['body']['id']){delete _0xf862a[_0x5b60('0x4b')]['id'];}return db['ServicenowField'][_0x5b60('0x49')]({'where':{'id':_0xf862a[_0x5b60('0x48')]['id']}})[_0x5b60('0x25')](handleEntityNotFound(_0x149a7c,null))[_0x5b60('0x25')](saveUpdates(_0xf862a[_0x5b60('0x4b')],null))[_0x5b60('0x25')](respondWithResult(_0x149a7c,null))[_0x5b60('0x46')](handleError(_0x149a7c,null));};exports[_0x5b60('0x26')]=function(_0x550937,_0x54a2c2){return db['ServicenowField']['find']({'where':{'id':_0x550937[_0x5b60('0x48')]['id']}})[_0x5b60('0x25')](handleEntityNotFound(_0x54a2c2,null))[_0x5b60('0x25')](removeEntity(_0x54a2c2,null))[_0x5b60('0x46')](handleError(_0x54a2c2,null));};
\ No newline at end of file
index afa97a8..5ef7b45 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x39ad=['api','moment','bluebird','path','rimraf','../../config/environment','exports','ServicenowField','servicenow_unique_index','idField','FieldId','lodash','util','../../config/logger'];(function(_0x1762b4,_0x33d836){var _0x29beda=function(_0x31c2fa){while(--_0x31c2fa){_0x1762b4['push'](_0x1762b4['shift']());}};_0x29beda(++_0x33d836);}(_0x39ad,0xcf));var _0xd39a=function(_0x18afd7,_0x2bb7c3){_0x18afd7=_0x18afd7-0x0;var _0x4d212a=_0x39ad[_0x18afd7];return _0x4d212a;};'use strict';var _=require(_0xd39a('0x0'));var util=require(_0xd39a('0x1'));var logger=require(_0xd39a('0x2'))(_0xd39a('0x3'));var moment=require(_0xd39a('0x4'));var BPromise=require(_0xd39a('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xd39a('0x6'));var rimraf=require(_0xd39a('0x7'));var config=require(_0xd39a('0x8'));var attributes=require('./intServicenowField.attributes');module[_0xd39a('0x9')]=function(_0xb6f2,_0x1579b8){return _0xb6f2['define'](_0xd39a('0xa'),attributes,{'tableName':'int_servicenow_fields','paranoid':![],'indexes':[{'name':_0xd39a('0xb'),'fields':[_0xd39a('0xc'),_0xd39a('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x58ab=['../../config/environment','./intServicenowField.attributes','exports','define','ServicenowField','int_servicenow_fields','idField','lodash','util','api','request-promise','path','rimraf'];(function(_0x34af5f,_0x2938fd){var _0xd88b8d=function(_0x23d35e){while(--_0x23d35e){_0x34af5f['push'](_0x34af5f['shift']());}};_0xd88b8d(++_0x2938fd);}(_0x58ab,0xe4));var _0xb58a=function(_0x102f39,_0x35e82e){_0x102f39=_0x102f39-0x0;var _0x1aa102=_0x58ab[_0x102f39];return _0x1aa102;};'use strict';var _=require(_0xb58a('0x0'));var util=require(_0xb58a('0x1'));var logger=require('../../config/logger')(_0xb58a('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xb58a('0x3'));var fs=require('fs');var path=require(_0xb58a('0x4'));var rimraf=require(_0xb58a('0x5'));var config=require(_0xb58a('0x6'));var attributes=require(_0xb58a('0x7'));module[_0xb58a('0x8')]=function(_0x4ed5e4,_0x165fa2){return _0x4ed5e4[_0xb58a('0x9')](_0xb58a('0xa'),attributes,{'tableName':_0xb58a('0xb'),'paranoid':![],'indexes':[{'name':'servicenow_unique_index','fields':[_0xb58a('0xc'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index eb34e8b..d883148 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['ServicenowField,\x20%s,\x20%s','request\x20sent','debug','ServicenowField,\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(_0x1f7f08,_0x408158){var _0x4701ca=function(_0x505d9c){while(--_0x505d9c){_0x1f7f08['push'](_0x1f7f08['shift']());}};_0x4701ca(++_0x408158);}(_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')]('ServicenowField,\x20%s,\x20%s',_0x2f1e87,_0x4a36ec['error'][_0x3071('0x15')]);return _0x3e9a5e(_0x4a36ec['error'][_0x3071('0x15')]);}logger[_0x3071('0x13')]('ServicenowField,\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')]('ServicenowField,\x20%s,\x20%s',_0x2f1e87,_0x21aad3);_0x3e9a5e(_0x21aad3);});});}
\ No newline at end of file
+var _0xb43b=['rpc','../../config/environment','http','request','info','request\x20sent','debug','ServicenowField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','ServicenowField,\x20%s,\x20%s','catch','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger'];(function(_0x1b1b13,_0x1eab3f){var _0x40e609=function(_0x3fe646){while(--_0x3fe646){_0x1b1b13['push'](_0x1b1b13['shift']());}};_0x40e609(++_0x1eab3f);}(_0xb43b,0x1b2));var _0xbb43=function(_0x711c20,_0x2ac0ba){_0x711c20=_0x711c20-0x0;var _0x198e32=_0xb43b[_0x711c20];return _0x198e32;};'use strict';var _=require(_0xbb43('0x0'));var util=require(_0xbb43('0x1'));var moment=require('moment');var BPromise=require(_0xbb43('0x2'));var rs=require(_0xbb43('0x3'));var fs=require('fs');var Redis=require(_0xbb43('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xbb43('0x5'));var logger=require(_0xbb43('0x6'))(_0xbb43('0x7'));var config=require(_0xbb43('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0xbb43('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x553520,_0x80fe61,_0x1ccd49){return new BPromise(function(_0x2a2f11,_0x29ae1a){return client[_0xbb43('0xa')](_0x553520,_0x1ccd49)['then'](function(_0x208c2b){logger[_0xbb43('0xb')]('ServicenowField,\x20%s,\x20%s',_0x80fe61,_0xbb43('0xc'));logger[_0xbb43('0xd')](_0xbb43('0xe'),_0x80fe61,_0xbb43('0xc'),JSON[_0xbb43('0xf')](_0x208c2b));if(_0x208c2b[_0xbb43('0x10')]){if(_0x208c2b['error'][_0xbb43('0x11')]===0x1f4){logger[_0xbb43('0x10')]('ServicenowField,\x20%s,\x20%s',_0x80fe61,_0x208c2b['error'][_0xbb43('0x12')]);return _0x29ae1a(_0x208c2b['error']['message']);}logger[_0xbb43('0x10')]('ServicenowField,\x20%s,\x20%s',_0x80fe61,_0x208c2b[_0xbb43('0x10')][_0xbb43('0x12')]);return _0x2a2f11(_0x208c2b['error']['message']);}else{logger['info'](_0xbb43('0x13'),_0x80fe61,_0xbb43('0xc'));_0x2a2f11(_0x208c2b['result']['message']);}})[_0xbb43('0x14')](function(_0x563ce1){logger['error'](_0xbb43('0x13'),_0x80fe61,_0x563ce1);_0x29ae1a(_0x563ce1);});});}
\ No newline at end of file
index 1c27b86..8e1badf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSugarcrmAccount.controller','get','index','/:id','getConfigurations','/:id/fields','isAuthenticated','getFields','post','addConfiguration','put','update','destroy','exports','multer','util','path'];(function(_0x53d11d,_0x4a704e){var _0x3231ab=function(_0x4e2511){while(--_0x4e2511){_0x53d11d['push'](_0x53d11d['shift']());}};_0x3231ab(++_0x4a704e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1cfa0d,_0x4391f2){_0x1cfa0d=_0x1cfa0d-0x0;var _0xe33279=_0xa9e0[_0x1cfa0d];return _0xe33279;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0x8')]('/:id/configurations',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xf')]('/',auth['isAuthenticated'](),controller['create']);router['post']('/:id/configurations',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x11')](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x12')]);router['delete'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);module[_0x0a9e('0x14')]=router;
\ No newline at end of file
+var _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(_0x543551,_0x234a59){var _0x35d2a6=function(_0x1de8c2){while(--_0x1de8c2){_0x543551['push'](_0x543551['shift']());}};_0x35d2a6(++_0x234a59);}(_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 866b949..0c13dda 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['remoteUri','sequelize','exports','STRING','username'];(function(_0x20d0d5,_0x234e4d){var _0xd88495=function(_0x2c955e){while(--_0x2c955e){_0x20d0d5['push'](_0x20d0d5['shift']());}};_0xd88495(++_0x234e4d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5b561d,_0x422b7c){_0x5b561d=_0x5b561d-0x0;var _0x431060=_0xa9e0[_0x5b561d];return _0x431060;};'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(_0x419d60,_0x4a681c){var _0x5672f5=function(_0x41bc4a){while(--_0x41bc4a){_0x419d60['push'](_0x419d60['shift']());}};_0x5672f5(++_0x4a681c);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4154a6,_0x2c0b8e){_0x4154a6=_0x4154a6-0x0;var _0x3b2786=_0xa9e0[_0x4154a6];return _0x3b2786;};'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 a787370..7bce7d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3aae=['duration_minutes','parent_type','username','password','remoteUri','slice','substring','lastIndexOf','POST','format','/service/v4_1/rest.php','JSON','stringify','Invalid\x20Login','Password\x20Expired','get_module_fields','Calls','values','endsWith','value','statusCode','error','getFields,\x20%s,\x20%s,\x20%s','send','test','Wrong\x20credentials','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','stack','name','index','map','SugarcrmAccount','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','VIRTUAL','merge','options','includeAll','include','rows','catch','params','find','create','body','getConfigurations','findOne','SugarcrmConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','SugarcrmField','getFields','assigned_user_id','description','date_start'];(function(_0x50ed47,_0x28cc70){var _0x2260c1=function(_0x3cc8d6){while(--_0x3cc8d6){_0x50ed47['push'](_0x50ed47['shift']());}};_0x2260c1(++_0x28cc70);}(_0x3aae,0x167));var _0xe3aa=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0x3aae[_0x502c7d];return _0x30b7ed;};'use strict';var emlformat=require(_0xe3aa('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xe3aa('0x1'));var jsonpatch=require(_0xe3aa('0x2'));var rp=require(_0xe3aa('0x3'));var moment=require('moment');var BPromise=require(_0xe3aa('0x4'));var Mustache=require(_0xe3aa('0x5'));var util=require('util');var path=require(_0xe3aa('0x6'));var sox=require(_0xe3aa('0x7'));var csv=require(_0xe3aa('0x8'));var ejs=require(_0xe3aa('0x9'));var fs=require('fs');var fs_extra=require(_0xe3aa('0xa'));var _=require(_0xe3aa('0xb'));var squel=require(_0xe3aa('0xc'));var crypto=require(_0xe3aa('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xe3aa('0xe'));var toCsv=require(_0xe3aa('0x8'));var querystring=require(_0xe3aa('0xf'));var Papa=require('papaparse');var Redis=require(_0xe3aa('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xe3aa('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xe3aa('0x12'));var logger=require(_0xe3aa('0x13'))('api');var utils=require(_0xe3aa('0x14'));var config=require(_0xe3aa('0x15'));var licenseUtil=require(_0xe3aa('0x16'));var db=require('../../mysqldb')['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x1279f0,_0xfd8dac){_0xfd8dac=_0xfd8dac||0xcc;return function(_0x349baf){if(_0x349baf){return _0x1279f0[_0xe3aa('0x17')](_0xfd8dac);}return _0x1279f0[_0xe3aa('0x18')](_0xfd8dac)[_0xe3aa('0x19')]();};}function respondWithResult(_0x45e273,_0x5bc0c0){_0x5bc0c0=_0x5bc0c0||0xc8;return function(_0x26df54){if(_0x26df54){return _0x45e273[_0xe3aa('0x18')](_0x5bc0c0)[_0xe3aa('0x1a')](_0x26df54);}};}function respondWithFilteredResult(_0x3e0530,_0x109696){return function(_0x29d22f){if(_0x29d22f){var _0x4d8059=typeof _0x109696[_0xe3aa('0x1b')]===_0xe3aa('0x1c')&&typeof _0x109696[_0xe3aa('0x1d')]===_0xe3aa('0x1c');var _0x4a6b41=_0x29d22f[_0xe3aa('0x1e')];var _0x285af2=_0x4d8059?0x0:_0x109696[_0xe3aa('0x1b')];var _0x3d3122=_0x4d8059?_0x29d22f[_0xe3aa('0x1e')]:_0x109696[_0xe3aa('0x1b')]+_0x109696[_0xe3aa('0x1d')];var _0x235918;if(_0x3d3122>=_0x4a6b41){_0x3d3122=_0x4a6b41;_0x235918=0xc8;}else{_0x235918=0xce;}_0x3e0530[_0xe3aa('0x18')](_0x235918);return _0x3e0530[_0xe3aa('0x1f')]('Content-Range',_0x285af2+'-'+_0x3d3122+'/'+_0x4a6b41)[_0xe3aa('0x1a')](_0x29d22f);}return null;};}function patchUpdates(_0x546e00){return function(_0x12841c){try{jsonpatch[_0xe3aa('0x20')](_0x12841c,_0x546e00,!![]);}catch(_0x43120f){return BPromise[_0xe3aa('0x21')](_0x43120f);}return _0x12841c[_0xe3aa('0x22')]();};}function saveUpdates(_0x31709e,_0x395c37){return function(_0x236707){if(_0x236707){return _0x236707[_0xe3aa('0x23')](_0x31709e)[_0xe3aa('0x24')](function(_0x3c9259){return _0x3c9259;});}return null;};}function removeEntity(_0x50e337,_0x279f70){return function(_0x3b9aba){if(_0x3b9aba){return _0x3b9aba[_0xe3aa('0x25')]()[_0xe3aa('0x24')](function(){_0x50e337[_0xe3aa('0x18')](0xcc)[_0xe3aa('0x19')]();});}};}function handleEntityNotFound(_0xe9ebeb,_0x3a6919){return function(_0x28ca59){if(!_0x28ca59){_0xe9ebeb[_0xe3aa('0x17')](0x194);}return _0x28ca59;};}function handleError(_0x380a44,_0x127117){_0x127117=_0x127117||0x1f4;return function(_0x4b5171){logger['error'](_0x4b5171[_0xe3aa('0x26')]);if(_0x4b5171[_0xe3aa('0x27')]){delete _0x4b5171[_0xe3aa('0x27')];}_0x380a44['status'](_0x127117)['send'](_0x4b5171);};}exports[_0xe3aa('0x28')]=function(_0x165d41,_0x3675a0){var _0x4cdbea={},_0x3ec8b6={},_0x2e9625={'count':0x0,'rows':[]};var _0x4f3e17=_[_0xe3aa('0x29')](db[_0xe3aa('0x2a')][_0xe3aa('0x2b')],function(_0x478378){return{'name':_0x478378[_0xe3aa('0x2c')],'type':_0x478378[_0xe3aa('0x2d')][_0xe3aa('0x2e')]};});_0x3ec8b6[_0xe3aa('0x2f')]=_[_0xe3aa('0x29')](_0x4f3e17,'name');_0x3ec8b6[_0xe3aa('0x30')]=_[_0xe3aa('0x31')](_0x165d41['query']);_0x3ec8b6['filters']=_[_0xe3aa('0x32')](_0x3ec8b6['model'],_0x3ec8b6[_0xe3aa('0x30')]);_0x4cdbea[_0xe3aa('0x33')]=_['intersection'](_0x3ec8b6[_0xe3aa('0x2f')],qs['fields'](_0x165d41[_0xe3aa('0x30')][_0xe3aa('0x34')]));_0x4cdbea[_0xe3aa('0x33')]=_0x4cdbea[_0xe3aa('0x33')][_0xe3aa('0x35')]?_0x4cdbea[_0xe3aa('0x33')]:_0x3ec8b6[_0xe3aa('0x2f')];if(!_0x165d41[_0xe3aa('0x30')][_0xe3aa('0x36')](_0xe3aa('0x37'))){_0x4cdbea[_0xe3aa('0x1d')]=qs[_0xe3aa('0x1d')](_0x165d41[_0xe3aa('0x30')]['limit']);_0x4cdbea[_0xe3aa('0x1b')]=qs['offset'](_0x165d41[_0xe3aa('0x30')][_0xe3aa('0x1b')]);}_0x4cdbea['order']=qs[_0xe3aa('0x38')](_0x165d41[_0xe3aa('0x30')][_0xe3aa('0x38')]);_0x4cdbea[_0xe3aa('0x39')]=qs[_0xe3aa('0x3a')](_[_0xe3aa('0x3b')](_0x165d41['query'],_0x3ec8b6[_0xe3aa('0x3a')]),_0x4f3e17);if(_0x165d41[_0xe3aa('0x30')][_0xe3aa('0x3c')]){_0x4cdbea[_0xe3aa('0x39')]=_['merge'](_0x4cdbea[_0xe3aa('0x39')],{'$or':_[_0xe3aa('0x29')](_0x4f3e17,function(_0x3fa00f){if(_0x3fa00f['type']!==_0xe3aa('0x3d')){var _0x2f0a2b={};_0x2f0a2b[_0x3fa00f[_0xe3aa('0x27')]]={'$like':'%'+_0x165d41[_0xe3aa('0x30')][_0xe3aa('0x3c')]+'%'};return _0x2f0a2b;}})});}_0x4cdbea=_[_0xe3aa('0x3e')]({},_0x4cdbea,_0x165d41[_0xe3aa('0x3f')]);var _0x15dab7={'where':_0x4cdbea[_0xe3aa('0x39')]};return db[_0xe3aa('0x2a')]['count'](_0x15dab7)[_0xe3aa('0x24')](function(_0x41e202){_0x2e9625[_0xe3aa('0x1e')]=_0x41e202;if(_0x165d41[_0xe3aa('0x30')][_0xe3aa('0x40')]){_0x4cdbea[_0xe3aa('0x41')]=[{'all':!![]}];}return db[_0xe3aa('0x2a')]['findAll'](_0x4cdbea);})[_0xe3aa('0x24')](function(_0x21520e){_0x2e9625[_0xe3aa('0x42')]=_0x21520e;return _0x2e9625;})[_0xe3aa('0x24')](respondWithFilteredResult(_0x3675a0,_0x4cdbea))[_0xe3aa('0x43')](handleError(_0x3675a0,null));};exports['show']=function(_0x1163b8,_0x22c287){var _0x929939={'raw':![],'where':{'id':_0x1163b8[_0xe3aa('0x44')]['id']}},_0x18e333={};_0x18e333[_0xe3aa('0x2f')]=_[_0xe3aa('0x31')](db['SugarcrmAccount'][_0xe3aa('0x2b')]);_0x18e333[_0xe3aa('0x30')]=_[_0xe3aa('0x31')](_0x1163b8[_0xe3aa('0x30')]);_0x18e333[_0xe3aa('0x3a')]=_[_0xe3aa('0x32')](_0x18e333[_0xe3aa('0x2f')],_0x18e333[_0xe3aa('0x30')]);_0x929939[_0xe3aa('0x33')]=_[_0xe3aa('0x32')](_0x18e333[_0xe3aa('0x2f')],qs[_0xe3aa('0x34')](_0x1163b8['query']['fields']));_0x929939[_0xe3aa('0x33')]=_0x929939['attributes'][_0xe3aa('0x35')]?_0x929939[_0xe3aa('0x33')]:_0x18e333[_0xe3aa('0x2f')];if(_0x1163b8[_0xe3aa('0x30')]['includeAll']){_0x929939[_0xe3aa('0x41')]=[{'all':!![]}];}_0x929939=_[_0xe3aa('0x3e')]({},_0x929939,_0x1163b8[_0xe3aa('0x3f')]);return db[_0xe3aa('0x2a')][_0xe3aa('0x45')](_0x929939)['then'](handleEntityNotFound(_0x22c287,null))[_0xe3aa('0x24')](respondWithResult(_0x22c287,null))[_0xe3aa('0x43')](handleError(_0x22c287,null));};exports[_0xe3aa('0x46')]=function(_0x2dca83,_0x4b15bc){return db[_0xe3aa('0x2a')]['create'](_0x2dca83['body'],{})['then'](respondWithResult(_0x4b15bc,0xc9))[_0xe3aa('0x43')](handleError(_0x4b15bc,null));};exports[_0xe3aa('0x23')]=function(_0x1217a7,_0x151758){if(_0x1217a7[_0xe3aa('0x47')]['id']){delete _0x1217a7[_0xe3aa('0x47')]['id'];}return db[_0xe3aa('0x2a')][_0xe3aa('0x45')]({'where':{'id':_0x1217a7[_0xe3aa('0x44')]['id']}})['then'](handleEntityNotFound(_0x151758,null))[_0xe3aa('0x24')](saveUpdates(_0x1217a7[_0xe3aa('0x47')],null))[_0xe3aa('0x24')](respondWithResult(_0x151758,null))[_0xe3aa('0x43')](handleError(_0x151758,null));};exports[_0xe3aa('0x25')]=function(_0x1110e1,_0x2b56eb){return db[_0xe3aa('0x2a')][_0xe3aa('0x45')]({'where':{'id':_0x1110e1[_0xe3aa('0x44')]['id']}})['then'](handleEntityNotFound(_0x2b56eb,null))[_0xe3aa('0x24')](removeEntity(_0x2b56eb,null))[_0xe3aa('0x43')](handleError(_0x2b56eb,null));};exports[_0xe3aa('0x48')]=function(_0x57d049,_0xfb6629,_0x196749){var _0x18a375={};var _0x4954f8={};var _0x2a1752;var _0x1101c9;return db[_0xe3aa('0x2a')][_0xe3aa('0x49')]({'where':{'id':_0x57d049[_0xe3aa('0x44')]['id']}})['then'](handleEntityNotFound(_0xfb6629,null))[_0xe3aa('0x24')](function(_0x560c64){if(_0x560c64){_0x2a1752=_0x560c64;_0x4954f8[_0xe3aa('0x2f')]=_['keys'](db[_0xe3aa('0x4a')]['rawAttributes']);_0x4954f8[_0xe3aa('0x30')]=_[_0xe3aa('0x31')](_0x57d049[_0xe3aa('0x30')]);_0x4954f8['filters']=_['intersection'](_0x4954f8['model'],_0x4954f8[_0xe3aa('0x30')]);_0x18a375['attributes']=_[_0xe3aa('0x32')](_0x4954f8[_0xe3aa('0x2f')],qs[_0xe3aa('0x34')](_0x57d049[_0xe3aa('0x30')][_0xe3aa('0x34')]));_0x18a375[_0xe3aa('0x33')]=_0x18a375[_0xe3aa('0x33')]['length']?_0x18a375[_0xe3aa('0x33')]:_0x4954f8[_0xe3aa('0x2f')];_0x18a375['order']=qs[_0xe3aa('0x38')](_0x57d049[_0xe3aa('0x30')][_0xe3aa('0x38')]);_0x18a375[_0xe3aa('0x39')]=qs[_0xe3aa('0x3a')](_[_0xe3aa('0x3b')](_0x57d049[_0xe3aa('0x30')],_0x4954f8[_0xe3aa('0x3a')]));if(_0x57d049[_0xe3aa('0x30')][_0xe3aa('0x3c')]){_0x18a375[_0xe3aa('0x39')]=_['merge'](_0x18a375[_0xe3aa('0x39')],{'$or':_[_0xe3aa('0x29')](_0x18a375['attributes'],function(_0x2aecc9){var _0x135e7a={};_0x135e7a[_0x2aecc9]={'$like':'%'+_0x57d049[_0xe3aa('0x30')]['filter']+'%'};return _0x135e7a;})});}_0x18a375=_[_0xe3aa('0x3e')]({},_0x18a375,_0x57d049['options']);return _0x2a1752['getConfigurations'](_0x18a375);}})['then'](function(_0xfb58a5){if(_0xfb58a5){_0x1101c9=_0xfb58a5[_0xe3aa('0x35')];if(!_0x57d049[_0xe3aa('0x30')]['hasOwnProperty']('nolimit')){_0x18a375['limit']=qs[_0xe3aa('0x1d')](_0x57d049[_0xe3aa('0x30')][_0xe3aa('0x1d')]);_0x18a375[_0xe3aa('0x1b')]=qs[_0xe3aa('0x1b')](_0x57d049[_0xe3aa('0x30')][_0xe3aa('0x1b')]);}return _0x2a1752['getConfigurations'](_0x18a375);}})[_0xe3aa('0x24')](function(_0x4efd9f){if(_0x4efd9f){return _0x4efd9f?{'count':_0x1101c9,'rows':_0x4efd9f}:null;}})[_0xe3aa('0x24')](respondWithResult(_0xfb6629,null))['catch'](handleError(_0xfb6629,null));};exports['addConfiguration']=function(_0x2456b1,_0x44486d,_0x58bf49){if(_0x2456b1[_0xe3aa('0x47')]['id']){delete _0x2456b1[_0xe3aa('0x47')]['id'];}return db['SugarcrmAccount']['findOne']({'where':{'id':_0x2456b1[_0xe3aa('0x44')]['id']}})[_0xe3aa('0x24')](handleEntityNotFound(_0x44486d,null))['then'](function(_0x25e34d){if(_0x25e34d){_0x2456b1[_0xe3aa('0x47')][_0xe3aa('0x4b')]=_0x25e34d['id'];_0x2456b1[_0xe3aa('0x47')][_0xe3aa('0x4c')]=integrations[_0xe3aa('0x4d')](_0x2456b1['body'][_0xe3aa('0x4e')],_0x2456b1[_0xe3aa('0x47')]['type']);_0x2456b1[_0xe3aa('0x47')][_0xe3aa('0x4f')]=integrations['getDescriptions'](_0x2456b1[_0xe3aa('0x47')][_0xe3aa('0x4e')],_0x2456b1['body'][_0xe3aa('0x2d')]);return db[_0xe3aa('0x4a')][_0xe3aa('0x46')](_0x2456b1[_0xe3aa('0x47')],{'include':[{'model':db[_0xe3aa('0x50')],'as':_0xe3aa('0x4c')},{'model':db[_0xe3aa('0x50')],'as':_0xe3aa('0x4f')}]});}return null;})[_0xe3aa('0x24')](respondWithResult(_0x44486d,null))[_0xe3aa('0x43')](handleError(_0x44486d,null));};exports[_0xe3aa('0x51')]=function(_0x2a0e2f,_0xa6c740,_0x30df6f){var _0xf7d042='';var _0x346b72=['id','name',_0xe3aa('0x52'),'created_by',_0xe3aa('0x53'),_0xe3aa('0x54'),'duration_hours',_0xe3aa('0x55'),'parent_id',_0xe3aa('0x56'),'parent_name','direction'];return db[_0xe3aa('0x2a')][_0xe3aa('0x49')]({'where':{'id':_0x2a0e2f[_0xe3aa('0x44')]['id']},'attributes':['id',_0xe3aa('0x57'),_0xe3aa('0x58'),_0xe3aa('0x59')]})[_0xe3aa('0x24')](handleEntityNotFound(_0xa6c740,null))['then'](function(_0x49a88c){if(_0x49a88c){_0xf7d042=_0x49a88c[_0xe3aa('0x59')];var _0x109fe5=_0xf7d042[_0xe3aa('0x5a')](-0x1);if(_0x109fe5==='/'){_0xf7d042=_0xf7d042[_0xe3aa('0x5b')](0x0,_0xf7d042[_0xe3aa('0x5c')](_0x109fe5));}return rp({'method':_0xe3aa('0x5d'),'uri':util[_0xe3aa('0x5e')]('%s%s',_0xf7d042,_0xe3aa('0x5f')),'json':!![],'form':{'method':'login','input_type':_0xe3aa('0x60'),'response_type':'JSON','rest_data':JSON[_0xe3aa('0x61')]({'user_auth':{'user_name':_0x49a88c[_0xe3aa('0x57')],'password':_0x49a88c[_0xe3aa('0x58')],'encryption':'PLAIN'},'application':'xCALLY\x20Motion\x20Integration'})}});}})[_0xe3aa('0x24')](function(_0x4b33ae){if(_0x4b33ae&&_0x4b33ae[_0xe3aa('0x27')]!==_0xe3aa('0x62')&&_0x4b33ae[_0xe3aa('0x27')]!==_0xe3aa('0x63')){return rp({'method':_0xe3aa('0x5d'),'uri':util[_0xe3aa('0x5e')]('%s%s',_0xf7d042,_0xe3aa('0x5f')),'json':!![],'form':{'method':_0xe3aa('0x64'),'input_type':_0xe3aa('0x60'),'response_type':_0xe3aa('0x60'),'rest_data':JSON[_0xe3aa('0x61')]({'session':_0x4b33ae['id'],'module_name':_0xe3aa('0x65')})}})['then'](function(_0x5de588){if(_0x5de588){var _0x211d6a=_[_0xe3aa('0x66')](_0x5de588['module_fields']);_['remove'](_0x211d6a,function(_0x5771a1){return _0x346b72['includes'](_0x5771a1['name']);});return{'count':_0x211d6a[_0xe3aa('0x35')],'rows':_['map'](_0x211d6a,function(_0x38c7ab){return{'id':_0x38c7ab['name'],'name':_0x38c7ab['label'],'custom':_[_0xe3aa('0x67')](_0x38c7ab[_0xe3aa('0x27')],'_c')?!![]:![],'options':_0x38c7ab['options']?_['map'](_[_0xe3aa('0x66')](_0x38c7ab[_0xe3aa('0x3f')]),function(_0x3dcd13){return{'name':_0x3dcd13[_0xe3aa('0x68')],'value':_0x3dcd13[_0xe3aa('0x27')]};}):[]};})};}})[_0xe3aa('0x24')](respondWithResult(_0xa6c740,null))[_0xe3aa('0x43')](function(_0x43169c){var _0x5e4039=_0x2a0e2f['query']['test']?0x1f4:_0x43169c[_0xe3aa('0x69')]||0x1f4;logger[_0xe3aa('0x6a')](_0xe3aa('0x6b'),'getFields',_0x5e4039,JSON[_0xe3aa('0x61')](_0x43169c));delete _0x43169c[_0xe3aa('0x27')];if(_0x5e4039===0x191){_0x5e4039=0x190;}_0xa6c740[_0xe3aa('0x18')](_0x5e4039)[_0xe3aa('0x6c')](_0x2a0e2f[_0xe3aa('0x30')][_0xe3aa('0x6d')]?{'message':'Wrong\x20credentials','statusCode':_0x43169c[_0xe3aa('0x69')]}:_0x43169c);});}else{var _0x4a2105=0x1f4;_0xa6c740[_0xe3aa('0x18')](_0x4a2105)['send']({'message':_0xe3aa('0x6e'),'statusCode':0x190});}});};
\ No newline at end of file
+var _0x1abd=['moment','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','limit','count','apply','reject','save','update','then','destroy','error','stack','name','index','map','rawAttributes','fieldName','type','model','keys','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','SugarcrmAccount','include','rows','catch','show','params','length','includeAll','find','create','body','getConfigurations','findOne','SugarcrmConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','SugarcrmField','getFields','created_by','date_start','duration_hours','duration_minutes','parent_id','parent_type','parent_name','direction','username','remoteUri','slice','POST','format','%s%s','/service/v4_1/rest.php','JSON','password','PLAIN','Password\x20Expired','get_module_fields','stringify','values','module_fields','remove','includes','label','value','test','getFields,\x20%s,\x20%s,\x20%s','send','statusCode','Wrong\x20credentials','rimraf','fast-json-patch','request-promise'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x1abd,0x1c9));var _0xd1ab=function(_0x5cd7a3,_0x1aa14f){_0x5cd7a3=_0x5cd7a3-0x0;var _0x21235d=_0x1abd[_0x5cd7a3];return _0x21235d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xd1ab('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xd1ab('0x1'));var rp=require(_0xd1ab('0x2'));var moment=require(_0xd1ab('0x3'));var BPromise=require(_0xd1ab('0x4'));var Mustache=require(_0xd1ab('0x5'));var util=require(_0xd1ab('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0xd1ab('0x7'));var ejs=require(_0xd1ab('0x8'));var fs=require('fs');var fs_extra=require(_0xd1ab('0x9'));var _=require(_0xd1ab('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xd1ab('0xb'));var toCsv=require(_0xd1ab('0x7'));var querystring=require(_0xd1ab('0xc'));var Papa=require(_0xd1ab('0xd'));var Redis=require(_0xd1ab('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xd1ab('0xf'));var as=require(_0xd1ab('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0xd1ab('0x11'));var config=require(_0xd1ab('0x12'));var licenseUtil=require(_0xd1ab('0x13'));var db=require(_0xd1ab('0x14'))['db'];var integrations=require(_0xd1ab('0x15'));function respondWithStatusCode(_0x24a23a,_0x478793){_0x478793=_0x478793||0xcc;return function(_0x28a14c){if(_0x28a14c){return _0x24a23a[_0xd1ab('0x16')](_0x478793);}return _0x24a23a[_0xd1ab('0x17')](_0x478793)[_0xd1ab('0x18')]();};}function respondWithResult(_0xa7b751,_0x53fd6d){_0x53fd6d=_0x53fd6d||0xc8;return function(_0x26192b){if(_0x26192b){return _0xa7b751['status'](_0x53fd6d)[_0xd1ab('0x19')](_0x26192b);}};}function respondWithFilteredResult(_0x82865b,_0x5f5cee){return function(_0x42f80f){if(_0x42f80f){var _0x2660ea=typeof _0x5f5cee[_0xd1ab('0x1a')]===_0xd1ab('0x1b')&&typeof _0x5f5cee[_0xd1ab('0x1c')]===_0xd1ab('0x1b');var _0x280fcb=_0x42f80f[_0xd1ab('0x1d')];var _0x83a6eb=_0x2660ea?0x0:_0x5f5cee[_0xd1ab('0x1a')];var _0xfac009=_0x2660ea?_0x42f80f[_0xd1ab('0x1d')]:_0x5f5cee[_0xd1ab('0x1a')]+_0x5f5cee[_0xd1ab('0x1c')];var _0x1c245d;if(_0xfac009>=_0x280fcb){_0xfac009=_0x280fcb;_0x1c245d=0xc8;}else{_0x1c245d=0xce;}_0x82865b[_0xd1ab('0x17')](_0x1c245d);return _0x82865b['set']('Content-Range',_0x83a6eb+'-'+_0xfac009+'/'+_0x280fcb)[_0xd1ab('0x19')](_0x42f80f);}return null;};}function patchUpdates(_0x1a9b2c){return function(_0x2663b7){try{jsonpatch[_0xd1ab('0x1e')](_0x2663b7,_0x1a9b2c,!![]);}catch(_0x5be5bf){return BPromise[_0xd1ab('0x1f')](_0x5be5bf);}return _0x2663b7[_0xd1ab('0x20')]();};}function saveUpdates(_0x244ae6,_0xb6fbfb){return function(_0x2f158e){if(_0x2f158e){return _0x2f158e[_0xd1ab('0x21')](_0x244ae6)[_0xd1ab('0x22')](function(_0x252014){return _0x252014;});}return null;};}function removeEntity(_0x368f99,_0x584abe){return function(_0x220e8c){if(_0x220e8c){return _0x220e8c[_0xd1ab('0x23')]()[_0xd1ab('0x22')](function(){_0x368f99[_0xd1ab('0x17')](0xcc)[_0xd1ab('0x18')]();});}};}function handleEntityNotFound(_0x3fc2dd,_0x55e509){return function(_0x50e8ac){if(!_0x50e8ac){_0x3fc2dd['sendStatus'](0x194);}return _0x50e8ac;};}function handleError(_0x112628,_0x4b1e16){_0x4b1e16=_0x4b1e16||0x1f4;return function(_0x58b635){logger[_0xd1ab('0x24')](_0x58b635[_0xd1ab('0x25')]);if(_0x58b635[_0xd1ab('0x26')]){delete _0x58b635[_0xd1ab('0x26')];}_0x112628[_0xd1ab('0x17')](_0x4b1e16)['send'](_0x58b635);};}exports[_0xd1ab('0x27')]=function(_0xd5a9f1,_0x40843e){var _0x10e90e={},_0x1738e6={},_0xd9fbab={'count':0x0,'rows':[]};var _0x1a3044=_[_0xd1ab('0x28')](db['SugarcrmAccount'][_0xd1ab('0x29')],function(_0x4db25b){return{'name':_0x4db25b[_0xd1ab('0x2a')],'type':_0x4db25b[_0xd1ab('0x2b')]['key']};});_0x1738e6[_0xd1ab('0x2c')]=_['map'](_0x1a3044,_0xd1ab('0x26'));_0x1738e6['query']=_[_0xd1ab('0x2d')](_0xd5a9f1[_0xd1ab('0x2e')]);_0x1738e6[_0xd1ab('0x2f')]=_[_0xd1ab('0x30')](_0x1738e6[_0xd1ab('0x2c')],_0x1738e6['query']);_0x10e90e[_0xd1ab('0x31')]=_['intersection'](_0x1738e6[_0xd1ab('0x2c')],qs[_0xd1ab('0x32')](_0xd5a9f1['query'][_0xd1ab('0x32')]));_0x10e90e['attributes']=_0x10e90e[_0xd1ab('0x31')]['length']?_0x10e90e['attributes']:_0x1738e6[_0xd1ab('0x2c')];if(!_0xd5a9f1[_0xd1ab('0x2e')][_0xd1ab('0x33')](_0xd1ab('0x34'))){_0x10e90e[_0xd1ab('0x1c')]=qs['limit'](_0xd5a9f1[_0xd1ab('0x2e')][_0xd1ab('0x1c')]);_0x10e90e[_0xd1ab('0x1a')]=qs[_0xd1ab('0x1a')](_0xd5a9f1[_0xd1ab('0x2e')][_0xd1ab('0x1a')]);}_0x10e90e[_0xd1ab('0x35')]=qs[_0xd1ab('0x36')](_0xd5a9f1[_0xd1ab('0x2e')][_0xd1ab('0x36')]);_0x10e90e['where']=qs['filters'](_[_0xd1ab('0x37')](_0xd5a9f1['query'],_0x1738e6[_0xd1ab('0x2f')]),_0x1a3044);if(_0xd5a9f1[_0xd1ab('0x2e')][_0xd1ab('0x38')]){_0x10e90e[_0xd1ab('0x39')]=_[_0xd1ab('0x3a')](_0x10e90e['where'],{'$or':_[_0xd1ab('0x28')](_0x1a3044,function(_0x116250){if(_0x116250[_0xd1ab('0x2b')]!==_0xd1ab('0x3b')){var _0x32e2d2={};_0x32e2d2[_0x116250[_0xd1ab('0x26')]]={'$like':'%'+_0xd5a9f1[_0xd1ab('0x2e')][_0xd1ab('0x38')]+'%'};return _0x32e2d2;}})});}_0x10e90e=_[_0xd1ab('0x3a')]({},_0x10e90e,_0xd5a9f1[_0xd1ab('0x3c')]);var _0x32f189={'where':_0x10e90e['where']};return db[_0xd1ab('0x3d')][_0xd1ab('0x1d')](_0x32f189)[_0xd1ab('0x22')](function(_0x3d2520){_0xd9fbab[_0xd1ab('0x1d')]=_0x3d2520;if(_0xd5a9f1[_0xd1ab('0x2e')]['includeAll']){_0x10e90e[_0xd1ab('0x3e')]=[{'all':!![]}];}return db[_0xd1ab('0x3d')]['findAll'](_0x10e90e);})[_0xd1ab('0x22')](function(_0x41e552){_0xd9fbab[_0xd1ab('0x3f')]=_0x41e552;return _0xd9fbab;})[_0xd1ab('0x22')](respondWithFilteredResult(_0x40843e,_0x10e90e))[_0xd1ab('0x40')](handleError(_0x40843e,null));};exports[_0xd1ab('0x41')]=function(_0x1c2dca,_0x1c5ce6){var _0x627e87={'raw':![],'where':{'id':_0x1c2dca[_0xd1ab('0x42')]['id']}},_0x58ecb9={};_0x58ecb9[_0xd1ab('0x2c')]=_[_0xd1ab('0x2d')](db[_0xd1ab('0x3d')][_0xd1ab('0x29')]);_0x58ecb9[_0xd1ab('0x2e')]=_[_0xd1ab('0x2d')](_0x1c2dca['query']);_0x58ecb9['filters']=_[_0xd1ab('0x30')](_0x58ecb9[_0xd1ab('0x2c')],_0x58ecb9[_0xd1ab('0x2e')]);_0x627e87['attributes']=_[_0xd1ab('0x30')](_0x58ecb9['model'],qs[_0xd1ab('0x32')](_0x1c2dca[_0xd1ab('0x2e')][_0xd1ab('0x32')]));_0x627e87['attributes']=_0x627e87[_0xd1ab('0x31')][_0xd1ab('0x43')]?_0x627e87['attributes']:_0x58ecb9[_0xd1ab('0x2c')];if(_0x1c2dca[_0xd1ab('0x2e')][_0xd1ab('0x44')]){_0x627e87['include']=[{'all':!![]}];}_0x627e87=_['merge']({},_0x627e87,_0x1c2dca['options']);return db[_0xd1ab('0x3d')][_0xd1ab('0x45')](_0x627e87)[_0xd1ab('0x22')](handleEntityNotFound(_0x1c5ce6,null))[_0xd1ab('0x22')](respondWithResult(_0x1c5ce6,null))[_0xd1ab('0x40')](handleError(_0x1c5ce6,null));};exports[_0xd1ab('0x46')]=function(_0x2066d4,_0xaf5b00){return db[_0xd1ab('0x3d')][_0xd1ab('0x46')](_0x2066d4['body'],{})[_0xd1ab('0x22')](respondWithResult(_0xaf5b00,0xc9))['catch'](handleError(_0xaf5b00,null));};exports['update']=function(_0x3bae01,_0x351fb7){if(_0x3bae01[_0xd1ab('0x47')]['id']){delete _0x3bae01[_0xd1ab('0x47')]['id'];}return db[_0xd1ab('0x3d')][_0xd1ab('0x45')]({'where':{'id':_0x3bae01[_0xd1ab('0x42')]['id']}})['then'](handleEntityNotFound(_0x351fb7,null))[_0xd1ab('0x22')](saveUpdates(_0x3bae01[_0xd1ab('0x47')],null))[_0xd1ab('0x22')](respondWithResult(_0x351fb7,null))[_0xd1ab('0x40')](handleError(_0x351fb7,null));};exports[_0xd1ab('0x23')]=function(_0x17f025,_0x191dac){return db[_0xd1ab('0x3d')][_0xd1ab('0x45')]({'where':{'id':_0x17f025['params']['id']}})[_0xd1ab('0x22')](handleEntityNotFound(_0x191dac,null))[_0xd1ab('0x22')](removeEntity(_0x191dac,null))[_0xd1ab('0x40')](handleError(_0x191dac,null));};exports[_0xd1ab('0x48')]=function(_0x5c9ac8,_0x52a531,_0x19cda6){var _0x4efb7e={};var _0x42dfa1={};var _0x4e133d;var _0x50e7eb;return db[_0xd1ab('0x3d')][_0xd1ab('0x49')]({'where':{'id':_0x5c9ac8[_0xd1ab('0x42')]['id']}})[_0xd1ab('0x22')](handleEntityNotFound(_0x52a531,null))[_0xd1ab('0x22')](function(_0x12afab){if(_0x12afab){_0x4e133d=_0x12afab;_0x42dfa1[_0xd1ab('0x2c')]=_[_0xd1ab('0x2d')](db[_0xd1ab('0x4a')][_0xd1ab('0x29')]);_0x42dfa1[_0xd1ab('0x2e')]=_[_0xd1ab('0x2d')](_0x5c9ac8['query']);_0x42dfa1[_0xd1ab('0x2f')]=_[_0xd1ab('0x30')](_0x42dfa1['model'],_0x42dfa1['query']);_0x4efb7e[_0xd1ab('0x31')]=_[_0xd1ab('0x30')](_0x42dfa1[_0xd1ab('0x2c')],qs['fields'](_0x5c9ac8[_0xd1ab('0x2e')][_0xd1ab('0x32')]));_0x4efb7e[_0xd1ab('0x31')]=_0x4efb7e['attributes'][_0xd1ab('0x43')]?_0x4efb7e[_0xd1ab('0x31')]:_0x42dfa1[_0xd1ab('0x2c')];_0x4efb7e[_0xd1ab('0x35')]=qs[_0xd1ab('0x36')](_0x5c9ac8[_0xd1ab('0x2e')][_0xd1ab('0x36')]);_0x4efb7e['where']=qs[_0xd1ab('0x2f')](_[_0xd1ab('0x37')](_0x5c9ac8[_0xd1ab('0x2e')],_0x42dfa1[_0xd1ab('0x2f')]));if(_0x5c9ac8[_0xd1ab('0x2e')][_0xd1ab('0x38')]){_0x4efb7e[_0xd1ab('0x39')]=_[_0xd1ab('0x3a')](_0x4efb7e[_0xd1ab('0x39')],{'$or':_[_0xd1ab('0x28')](_0x4efb7e['attributes'],function(_0x199d79){var _0x3b2482={};_0x3b2482[_0x199d79]={'$like':'%'+_0x5c9ac8[_0xd1ab('0x2e')][_0xd1ab('0x38')]+'%'};return _0x3b2482;})});}_0x4efb7e=_['merge']({},_0x4efb7e,_0x5c9ac8['options']);return _0x4e133d[_0xd1ab('0x48')](_0x4efb7e);}})[_0xd1ab('0x22')](function(_0x52e404){if(_0x52e404){_0x50e7eb=_0x52e404[_0xd1ab('0x43')];if(!_0x5c9ac8[_0xd1ab('0x2e')][_0xd1ab('0x33')](_0xd1ab('0x34'))){_0x4efb7e[_0xd1ab('0x1c')]=qs[_0xd1ab('0x1c')](_0x5c9ac8['query']['limit']);_0x4efb7e[_0xd1ab('0x1a')]=qs[_0xd1ab('0x1a')](_0x5c9ac8['query']['offset']);}return _0x4e133d[_0xd1ab('0x48')](_0x4efb7e);}})[_0xd1ab('0x22')](function(_0x211491){if(_0x211491){return _0x211491?{'count':_0x50e7eb,'rows':_0x211491}:null;}})[_0xd1ab('0x22')](respondWithResult(_0x52a531,null))['catch'](handleError(_0x52a531,null));};exports['addConfiguration']=function(_0x3b2ecb,_0x4d3696,_0x7d0acb){if(_0x3b2ecb[_0xd1ab('0x47')]['id']){delete _0x3b2ecb[_0xd1ab('0x47')]['id'];}return db[_0xd1ab('0x3d')][_0xd1ab('0x49')]({'where':{'id':_0x3b2ecb[_0xd1ab('0x42')]['id']}})[_0xd1ab('0x22')](handleEntityNotFound(_0x4d3696,null))[_0xd1ab('0x22')](function(_0x3949b1){if(_0x3949b1){_0x3b2ecb['body'][_0xd1ab('0x4b')]=_0x3949b1['id'];_0x3b2ecb[_0xd1ab('0x47')][_0xd1ab('0x4c')]=integrations[_0xd1ab('0x4d')](_0x3b2ecb[_0xd1ab('0x47')][_0xd1ab('0x4e')],_0x3b2ecb['body'][_0xd1ab('0x2b')]);_0x3b2ecb['body'][_0xd1ab('0x4f')]=integrations[_0xd1ab('0x50')](_0x3b2ecb[_0xd1ab('0x47')][_0xd1ab('0x4e')],_0x3b2ecb[_0xd1ab('0x47')][_0xd1ab('0x2b')]);return db['SugarcrmConfiguration']['create'](_0x3b2ecb['body'],{'include':[{'model':db[_0xd1ab('0x51')],'as':'Subjects'},{'model':db['SugarcrmField'],'as':'Descriptions'}]});}return null;})['then'](respondWithResult(_0x4d3696,null))[_0xd1ab('0x40')](handleError(_0x4d3696,null));};exports[_0xd1ab('0x52')]=function(_0x475347,_0x28689f,_0x2fa052){var _0x4840de='';var _0x479a17=['id',_0xd1ab('0x26'),'assigned_user_id',_0xd1ab('0x53'),'description',_0xd1ab('0x54'),_0xd1ab('0x55'),_0xd1ab('0x56'),_0xd1ab('0x57'),_0xd1ab('0x58'),_0xd1ab('0x59'),_0xd1ab('0x5a')];return db[_0xd1ab('0x3d')][_0xd1ab('0x49')]({'where':{'id':_0x475347[_0xd1ab('0x42')]['id']},'attributes':['id',_0xd1ab('0x5b'),'password',_0xd1ab('0x5c')]})[_0xd1ab('0x22')](handleEntityNotFound(_0x28689f,null))['then'](function(_0x5a4a6b){if(_0x5a4a6b){_0x4840de=_0x5a4a6b[_0xd1ab('0x5c')];var _0x59d1d6=_0x4840de[_0xd1ab('0x5d')](-0x1);if(_0x59d1d6==='/'){_0x4840de=_0x4840de['substring'](0x0,_0x4840de['lastIndexOf'](_0x59d1d6));}return rp({'method':_0xd1ab('0x5e'),'uri':util[_0xd1ab('0x5f')](_0xd1ab('0x60'),_0x4840de,_0xd1ab('0x61')),'json':!![],'form':{'method':'login','input_type':_0xd1ab('0x62'),'response_type':_0xd1ab('0x62'),'rest_data':JSON['stringify']({'user_auth':{'user_name':_0x5a4a6b[_0xd1ab('0x5b')],'password':_0x5a4a6b[_0xd1ab('0x63')],'encryption':_0xd1ab('0x64')},'application':'xCALLY\x20Motion\x20Integration'})}});}})[_0xd1ab('0x22')](function(_0x3d6834){if(_0x3d6834&&_0x3d6834['name']!=='Invalid\x20Login'&&_0x3d6834['name']!==_0xd1ab('0x65')){return rp({'method':_0xd1ab('0x5e'),'uri':util[_0xd1ab('0x5f')](_0xd1ab('0x60'),_0x4840de,_0xd1ab('0x61')),'json':!![],'form':{'method':_0xd1ab('0x66'),'input_type':_0xd1ab('0x62'),'response_type':'JSON','rest_data':JSON[_0xd1ab('0x67')]({'session':_0x3d6834['id'],'module_name':'Calls'})}})[_0xd1ab('0x22')](function(_0x433951){if(_0x433951){var _0x4b65b9=_[_0xd1ab('0x68')](_0x433951[_0xd1ab('0x69')]);_[_0xd1ab('0x6a')](_0x4b65b9,function(_0x55e2aa){return _0x479a17[_0xd1ab('0x6b')](_0x55e2aa[_0xd1ab('0x26')]);});return{'count':_0x4b65b9[_0xd1ab('0x43')],'rows':_[_0xd1ab('0x28')](_0x4b65b9,function(_0x1e77b7){return{'id':_0x1e77b7[_0xd1ab('0x26')],'name':_0x1e77b7[_0xd1ab('0x6c')],'custom':_['endsWith'](_0x1e77b7[_0xd1ab('0x26')],'_c')?!![]:![],'options':_0x1e77b7[_0xd1ab('0x3c')]?_[_0xd1ab('0x28')](_['values'](_0x1e77b7[_0xd1ab('0x3c')]),function(_0x3c94b2){return{'name':_0x3c94b2[_0xd1ab('0x6d')],'value':_0x3c94b2[_0xd1ab('0x26')]};}):[]};})};}})[_0xd1ab('0x22')](respondWithResult(_0x28689f,null))['catch'](function(_0x42bd25){var _0x34a1a3=_0x475347['query'][_0xd1ab('0x6e')]?0x1f4:_0x42bd25['statusCode']||0x1f4;logger[_0xd1ab('0x24')](_0xd1ab('0x6f'),_0xd1ab('0x52'),_0x34a1a3,JSON[_0xd1ab('0x67')](_0x42bd25));delete _0x42bd25['name'];if(_0x34a1a3===0x191){_0x34a1a3=0x190;}_0x28689f['status'](_0x34a1a3)[_0xd1ab('0x70')](_0x475347[_0xd1ab('0x2e')]['test']?{'message':'Wrong\x20credentials','statusCode':_0x42bd25[_0xd1ab('0x71')]}:_0x42bd25);});}else{var _0x41732c=0x1f4;_0x28689f[_0xd1ab('0x17')](_0x41732c)[_0xd1ab('0x70')]({'message':_0xd1ab('0x72'),'statusCode':0x190});}});};
\ No newline at end of file
index 653d30d..c4c915a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c45=['../../config/logger','api','moment','bluebird','request-promise','path','./intSugarcrmAccount.attributes','../../components/integrations/configuration','exports','define','SugarcrmAccount','int_sugarcrm_accounts','lodash','util'];(function(_0x307a7d,_0x43d87b){var _0x5894a4=function(_0x46526c){while(--_0x46526c){_0x307a7d['push'](_0x307a7d['shift']());}};_0x5894a4(++_0x43d87b);}(_0x1c45,0x1b0));var _0x51c4=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0x1c45[_0x432682];return _0x463d05;};'use strict';var _=require(_0x51c4('0x0'));var util=require(_0x51c4('0x1'));var logger=require(_0x51c4('0x2'))(_0x51c4('0x3'));var moment=require(_0x51c4('0x4'));var BPromise=require(_0x51c4('0x5'));var rp=require(_0x51c4('0x6'));var fs=require('fs');var path=require(_0x51c4('0x7'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x51c4('0x8'));var integrations=require(_0x51c4('0x9'));module[_0x51c4('0xa')]=function(_0x609bef,_0x1f22a2){return _0x609bef[_0x51c4('0xb')](_0x51c4('0xc'),attributes,{'tableName':_0x51c4('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6cac=['moment','bluebird','request-promise','rimraf','../../config/environment','./intSugarcrmAccount.attributes','../../components/integrations/configuration','exports','SugarcrmAccount','int_sugarcrm_accounts','lodash','../../config/logger','api'];(function(_0xd7d3b5,_0x1072d0){var _0xa67a64=function(_0x3f342e){while(--_0x3f342e){_0xd7d3b5['push'](_0xd7d3b5['shift']());}};_0xa67a64(++_0x1072d0);}(_0x6cac,0xe7));var _0xc6ca=function(_0x13d07a,_0x41efc3){_0x13d07a=_0x13d07a-0x0;var _0x5ee0ee=_0x6cac[_0x13d07a];return _0x5ee0ee;};'use strict';var _=require(_0xc6ca('0x0'));var util=require('util');var logger=require(_0xc6ca('0x1'))(_0xc6ca('0x2'));var moment=require(_0xc6ca('0x3'));var BPromise=require(_0xc6ca('0x4'));var rp=require(_0xc6ca('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xc6ca('0x6'));var config=require(_0xc6ca('0x7'));var attributes=require(_0xc6ca('0x8'));var integrations=require(_0xc6ca('0x9'));module[_0xc6ca('0xa')]=function(_0x41f84e,_0x5a3de1){return _0x41f84e['define'](_0xc6ca('0xb'),attributes,{'tableName':_0xc6ca('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e5407ac..ec3c609 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e89=['stringify','error','message','info','catch','GetSugarcrmAccount','SugarcrmAccount','findAll','options','where','attributes','include','map','model','ShowSugarcrmAccount','find','raw','lodash','util','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','then','SugarcrmAccount,\x20%s,\x20%s','request\x20sent','debug','SugarcrmAccount,\x20%s,\x20%s,\x20%s'];(function(_0x3be2e2,_0x5c166d){var _0x53b9c5=function(_0x248aa7){while(--_0x248aa7){_0x3be2e2['push'](_0x3be2e2['shift']());}};_0x53b9c5(++_0x5c166d);}(_0x4e89,0xf1));var _0x94e8=function(_0x304971,_0x345c46){_0x304971=_0x304971-0x0;var _0x2eb301=_0x4e89[_0x304971];return _0x2eb301;};'use strict';var _=require(_0x94e8('0x0'));var util=require(_0x94e8('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x94e8('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x94e8('0x3'))['db'];var utils=require(_0x94e8('0x4'));var logger=require(_0x94e8('0x5'))(_0x94e8('0x6'));var config=require(_0x94e8('0x7'));var jayson=require(_0x94e8('0x8'));var client=jayson['client'][_0x94e8('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3392cb,_0x3f551c,_0x27d011){return new BPromise(function(_0x5bacf7,_0x188f5c){return client['request'](_0x3392cb,_0x27d011)[_0x94e8('0xa')](function(_0x1b0f65){logger['info'](_0x94e8('0xb'),_0x3f551c,_0x94e8('0xc'));logger[_0x94e8('0xd')](_0x94e8('0xe'),_0x3f551c,_0x94e8('0xc'),JSON[_0x94e8('0xf')](_0x1b0f65));if(_0x1b0f65['error']){if(_0x1b0f65['error']['code']===0x1f4){logger[_0x94e8('0x10')]('SugarcrmAccount,\x20%s,\x20%s',_0x3f551c,_0x1b0f65['error'][_0x94e8('0x11')]);return _0x188f5c(_0x1b0f65[_0x94e8('0x10')][_0x94e8('0x11')]);}logger[_0x94e8('0x10')](_0x94e8('0xb'),_0x3f551c,_0x1b0f65[_0x94e8('0x10')]['message']);return _0x5bacf7(_0x1b0f65[_0x94e8('0x10')][_0x94e8('0x11')]);}else{logger[_0x94e8('0x12')](_0x94e8('0xb'),_0x3f551c,'request\x20sent');_0x5bacf7(_0x1b0f65['result'][_0x94e8('0x11')]);}})[_0x94e8('0x13')](function(_0x23cb83){logger[_0x94e8('0x10')](_0x94e8('0xb'),_0x3f551c,_0x23cb83);_0x188f5c(_0x23cb83);});});}exports[_0x94e8('0x14')]=function(_0x3d4610){var _0x5a2220=this;return new Promise(function(_0x34b3c8,_0x21bc19){return db[_0x94e8('0x15')][_0x94e8('0x16')]({'raw':_0x3d4610['options']?_0x3d4610['options']['raw']===undefined?!![]:![]:!![],'where':_0x3d4610['options']?_0x3d4610[_0x94e8('0x17')][_0x94e8('0x18')]||null:null,'attributes':_0x3d4610['options']?_0x3d4610[_0x94e8('0x17')][_0x94e8('0x19')]||null:null,'limit':_0x3d4610[_0x94e8('0x17')]?_0x3d4610[_0x94e8('0x17')]['limit']||null:null,'include':_0x3d4610[_0x94e8('0x17')]?_0x3d4610[_0x94e8('0x17')][_0x94e8('0x1a')]?_[_0x94e8('0x1b')](_0x3d4610[_0x94e8('0x17')]['include'],function(_0x3266fa){return{'model':db[_0x3266fa['model']],'as':_0x3266fa['as'],'attributes':_0x3266fa['attributes'],'include':_0x3266fa[_0x94e8('0x1a')]?_[_0x94e8('0x1b')](_0x3266fa[_0x94e8('0x1a')],function(_0x5b19c4){return{'model':db[_0x5b19c4[_0x94e8('0x1c')]],'as':_0x5b19c4['as'],'attributes':_0x5b19c4[_0x94e8('0x19')],'include':_0x5b19c4[_0x94e8('0x1a')]?_['map'](_0x5b19c4[_0x94e8('0x1a')],function(_0x4fa4e9){return{'model':db[_0x4fa4e9[_0x94e8('0x1c')]],'as':_0x4fa4e9['as'],'attributes':_0x4fa4e9[_0x94e8('0x19')]};}):[]};}):[]};}):[]:[]})[_0x94e8('0xa')](function(_0x4baed0){logger['info'](_0x94e8('0x14'),_0x3d4610);logger[_0x94e8('0xd')](_0x94e8('0x14'),_0x3d4610,JSON[_0x94e8('0xf')](_0x4baed0));_0x34b3c8(_0x4baed0);})[_0x94e8('0x13')](function(_0x2a5b75){logger['error'](_0x94e8('0x14'),_0x2a5b75[_0x94e8('0x11')],_0x3d4610);_0x21bc19(_0x5a2220[_0x94e8('0x10')](0x1f4,_0x2a5b75['message']));});});};exports[_0x94e8('0x1d')]=function(_0x125144){var _0x592cce=this;return new Promise(function(_0x4df829,_0x4b9d02){return db[_0x94e8('0x15')][_0x94e8('0x1e')]({'raw':_0x125144[_0x94e8('0x17')]?_0x125144['options'][_0x94e8('0x1f')]===undefined?!![]:![]:!![],'where':_0x125144[_0x94e8('0x17')]?_0x125144[_0x94e8('0x17')][_0x94e8('0x18')]||null:null,'attributes':_0x125144[_0x94e8('0x17')]?_0x125144['options'][_0x94e8('0x19')]||null:null,'include':_0x125144[_0x94e8('0x17')]?_0x125144[_0x94e8('0x17')][_0x94e8('0x1a')]?_['map'](_0x125144[_0x94e8('0x17')][_0x94e8('0x1a')],function(_0x5f19d9){return{'model':db[_0x5f19d9[_0x94e8('0x1c')]],'as':_0x5f19d9['as'],'attributes':_0x5f19d9['attributes'],'include':_0x5f19d9['include']?_[_0x94e8('0x1b')](_0x5f19d9[_0x94e8('0x1a')],function(_0x18a985){return{'model':db[_0x18a985[_0x94e8('0x1c')]],'as':_0x18a985['as'],'attributes':_0x18a985[_0x94e8('0x19')],'include':_0x18a985['include']?_['map'](_0x18a985[_0x94e8('0x1a')],function(_0x4e4519){return{'model':db[_0x4e4519[_0x94e8('0x1c')]],'as':_0x4e4519['as'],'attributes':_0x4e4519[_0x94e8('0x19')]};}):[]};}):[]};}):[]:[]})[_0x94e8('0xa')](function(_0x4b59fd){logger[_0x94e8('0x12')](_0x94e8('0x1d'),_0x125144);logger[_0x94e8('0xd')]('ShowSugarcrmAccount',_0x125144,JSON[_0x94e8('0xf')](_0x4b59fd));_0x4df829(_0x4b59fd);})[_0x94e8('0x13')](function(_0x411658){logger[_0x94e8('0x10')](_0x94e8('0x1d'),_0x411658[_0x94e8('0x11')],_0x125144);_0x4b9d02(_0x592cce[_0x94e8('0x10')](0x1f4,_0x411658[_0x94e8('0x11')]));});});};
\ No newline at end of file
+var _0x4797=['lodash','util','bluebird','randomstring','ioredis','../../config/logger','rpc','client','http','request','then','info','request\x20sent','debug','SugarcrmAccount,\x20%s,\x20%s,\x20%s','stringify','error','SugarcrmAccount,\x20%s,\x20%s','message','result','catch','GetSugarcrmAccount','SugarcrmAccount','findAll','options','where','attributes','limit','include','map','model','ShowSugarcrmAccount','find','raw'];(function(_0x57530f,_0x5aa5d9){var _0x1df36c=function(_0x499078){while(--_0x499078){_0x57530f['push'](_0x57530f['shift']());}};_0x1df36c(++_0x5aa5d9);}(_0x4797,0x154));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 moment=require('moment');var BPromise=require(_0x7479('0x2'));var rs=require(_0x7479('0x3'));var fs=require('fs');var Redis=require(_0x7479('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x7479('0x5'))(_0x7479('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x7479('0x7')][_0x7479('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x21bcc0,_0x1f9d67,_0xe39efc){return new BPromise(function(_0x34831c,_0x112eac){return client[_0x7479('0x9')](_0x21bcc0,_0xe39efc)[_0x7479('0xa')](function(_0x18a58c){logger[_0x7479('0xb')]('SugarcrmAccount,\x20%s,\x20%s',_0x1f9d67,_0x7479('0xc'));logger[_0x7479('0xd')](_0x7479('0xe'),_0x1f9d67,_0x7479('0xc'),JSON[_0x7479('0xf')](_0x18a58c));if(_0x18a58c[_0x7479('0x10')]){if(_0x18a58c[_0x7479('0x10')]['code']===0x1f4){logger['error'](_0x7479('0x11'),_0x1f9d67,_0x18a58c['error']['message']);return _0x112eac(_0x18a58c[_0x7479('0x10')][_0x7479('0x12')]);}logger[_0x7479('0x10')]('SugarcrmAccount,\x20%s,\x20%s',_0x1f9d67,_0x18a58c[_0x7479('0x10')][_0x7479('0x12')]);return _0x34831c(_0x18a58c[_0x7479('0x10')][_0x7479('0x12')]);}else{logger['info'](_0x7479('0x11'),_0x1f9d67,_0x7479('0xc'));_0x34831c(_0x18a58c[_0x7479('0x13')][_0x7479('0x12')]);}})[_0x7479('0x14')](function(_0x363f67){logger['error']('SugarcrmAccount,\x20%s,\x20%s',_0x1f9d67,_0x363f67);_0x112eac(_0x363f67);});});}exports[_0x7479('0x15')]=function(_0x484dd9){var _0x185203=this;return new Promise(function(_0xfe5c1e,_0x386322){return db[_0x7479('0x16')][_0x7479('0x17')]({'raw':_0x484dd9['options']?_0x484dd9['options']['raw']===undefined?!![]:![]:!![],'where':_0x484dd9['options']?_0x484dd9[_0x7479('0x18')][_0x7479('0x19')]||null:null,'attributes':_0x484dd9[_0x7479('0x18')]?_0x484dd9[_0x7479('0x18')][_0x7479('0x1a')]||null:null,'limit':_0x484dd9[_0x7479('0x18')]?_0x484dd9[_0x7479('0x18')][_0x7479('0x1b')]||null:null,'include':_0x484dd9[_0x7479('0x18')]?_0x484dd9['options'][_0x7479('0x1c')]?_[_0x7479('0x1d')](_0x484dd9[_0x7479('0x18')][_0x7479('0x1c')],function(_0x47082b){return{'model':db[_0x47082b[_0x7479('0x1e')]],'as':_0x47082b['as'],'attributes':_0x47082b[_0x7479('0x1a')],'include':_0x47082b['include']?_['map'](_0x47082b[_0x7479('0x1c')],function(_0x341d11){return{'model':db[_0x341d11[_0x7479('0x1e')]],'as':_0x341d11['as'],'attributes':_0x341d11[_0x7479('0x1a')],'include':_0x341d11[_0x7479('0x1c')]?_[_0x7479('0x1d')](_0x341d11[_0x7479('0x1c')],function(_0x2a8dbd){return{'model':db[_0x2a8dbd[_0x7479('0x1e')]],'as':_0x2a8dbd['as'],'attributes':_0x2a8dbd['attributes']};}):[]};}):[]};}):[]:[]})[_0x7479('0xa')](function(_0x513365){logger['info'](_0x7479('0x15'),_0x484dd9);logger[_0x7479('0xd')](_0x7479('0x15'),_0x484dd9,JSON['stringify'](_0x513365));_0xfe5c1e(_0x513365);})[_0x7479('0x14')](function(_0x518074){logger['error'](_0x7479('0x15'),_0x518074[_0x7479('0x12')],_0x484dd9);_0x386322(_0x185203['error'](0x1f4,_0x518074[_0x7479('0x12')]));});});};exports[_0x7479('0x1f')]=function(_0xaf4119){var _0x34238d=this;return new Promise(function(_0x298d62,_0x322900){return db[_0x7479('0x16')][_0x7479('0x20')]({'raw':_0xaf4119['options']?_0xaf4119['options'][_0x7479('0x21')]===undefined?!![]:![]:!![],'where':_0xaf4119[_0x7479('0x18')]?_0xaf4119['options'][_0x7479('0x19')]||null:null,'attributes':_0xaf4119[_0x7479('0x18')]?_0xaf4119[_0x7479('0x18')]['attributes']||null:null,'include':_0xaf4119['options']?_0xaf4119[_0x7479('0x18')][_0x7479('0x1c')]?_[_0x7479('0x1d')](_0xaf4119[_0x7479('0x18')]['include'],function(_0x5366d2){return{'model':db[_0x5366d2[_0x7479('0x1e')]],'as':_0x5366d2['as'],'attributes':_0x5366d2[_0x7479('0x1a')],'include':_0x5366d2['include']?_[_0x7479('0x1d')](_0x5366d2[_0x7479('0x1c')],function(_0x1b31f2){return{'model':db[_0x1b31f2['model']],'as':_0x1b31f2['as'],'attributes':_0x1b31f2[_0x7479('0x1a')],'include':_0x1b31f2[_0x7479('0x1c')]?_[_0x7479('0x1d')](_0x1b31f2[_0x7479('0x1c')],function(_0x2ea406){return{'model':db[_0x2ea406[_0x7479('0x1e')]],'as':_0x2ea406['as'],'attributes':_0x2ea406[_0x7479('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x7479('0xa')](function(_0x2ee2c6){logger[_0x7479('0xb')](_0x7479('0x1f'),_0xaf4119);logger[_0x7479('0xd')](_0x7479('0x1f'),_0xaf4119,JSON[_0x7479('0xf')](_0x2ee2c6));_0x298d62(_0x2ee2c6);})['catch'](function(_0x47415b){logger[_0x7479('0x10')](_0x7479('0x1f'),_0x47415b[_0x7479('0x12')],_0xaf4119);_0x322900(_0x34238d[_0x7479('0x10')](0x1f4,_0x47415b[_0x7479('0x12')]));});});};
\ No newline at end of file
index 88d799e..329ddc8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf0a2=['create','put','update','delete','destroy','exports','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSugarcrmConfiguration.controller','get','isAuthenticated','/:id','show','/:id/fields','getFields','/:id/descriptions','getDescriptions','post'];(function(_0x9c692,_0x4671ce){var _0x3160b5=function(_0x3eacf2){while(--_0x3eacf2){_0x9c692['push'](_0x9c692['shift']());}};_0x3160b5(++_0x4671ce);}(_0xf0a2,0xf6));var _0x2f0a=function(_0x112168,_0x5bbd60){_0x112168=_0x112168-0x0;var _0x529296=_0xf0a2[_0x112168];return _0x529296;};'use strict';var multer=require(_0x2f0a('0x0'));var util=require(_0x2f0a('0x1'));var path=require(_0x2f0a('0x2'));var timeout=require('connect-timeout');var express=require(_0x2f0a('0x3'));var router=express[_0x2f0a('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x2f0a('0x5'));var interaction=require(_0x2f0a('0x6'));var config=require(_0x2f0a('0x7'));var controller=require(_0x2f0a('0x8'));router[_0x2f0a('0x9')]('/',auth[_0x2f0a('0xa')](),controller['index']);router[_0x2f0a('0x9')](_0x2f0a('0xb'),auth[_0x2f0a('0xa')](),controller[_0x2f0a('0xc')]);router[_0x2f0a('0x9')](_0x2f0a('0xd'),auth[_0x2f0a('0xa')](),controller[_0x2f0a('0xe')]);router[_0x2f0a('0x9')]('/:id/subjects',auth[_0x2f0a('0xa')](),controller['getSubjects']);router[_0x2f0a('0x9')](_0x2f0a('0xf'),auth[_0x2f0a('0xa')](),controller[_0x2f0a('0x10')]);router[_0x2f0a('0x11')]('/',auth['isAuthenticated'](),controller[_0x2f0a('0x12')]);router[_0x2f0a('0x13')](_0x2f0a('0xb'),auth[_0x2f0a('0xa')](),controller[_0x2f0a('0x14')]);router[_0x2f0a('0x15')](_0x2f0a('0xb'),auth[_0x2f0a('0xa')](),controller[_0x2f0a('0x16')]);module[_0x2f0a('0x17')]=router;
\ No newline at end of file
+var _0xc4ec=['delete','destroy','exports','util','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intSugarcrmConfiguration.controller','get','index','isAuthenticated','show','getFields','getSubjects','/:id/descriptions','create','/:id','update'];(function(_0xea4b97,_0x3c0f0f){var _0x5056d3=function(_0x4cc940){while(--_0x4cc940){_0xea4b97['push'](_0xea4b97['shift']());}};_0x5056d3(++_0x3c0f0f);}(_0xc4ec,0x153));var _0xcc4e=function(_0x4b73a2,_0x40b5fe){_0x4b73a2=_0x4b73a2-0x0;var _0x383c66=_0xc4ec[_0x4b73a2];return _0x383c66;};'use strict';var multer=require('multer');var util=require(_0xcc4e('0x0'));var path=require(_0xcc4e('0x1'));var timeout=require('connect-timeout');var express=require(_0xcc4e('0x2'));var router=express[_0xcc4e('0x3')]();var fs_extra=require(_0xcc4e('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xcc4e('0x5'));var config=require(_0xcc4e('0x6'));var controller=require(_0xcc4e('0x7'));router[_0xcc4e('0x8')]('/',auth['isAuthenticated'](),controller[_0xcc4e('0x9')]);router['get']('/:id',auth[_0xcc4e('0xa')](),controller[_0xcc4e('0xb')]);router[_0xcc4e('0x8')]('/:id/fields',auth['isAuthenticated'](),controller[_0xcc4e('0xc')]);router[_0xcc4e('0x8')]('/:id/subjects',auth[_0xcc4e('0xa')](),controller[_0xcc4e('0xd')]);router[_0xcc4e('0x8')](_0xcc4e('0xe'),auth[_0xcc4e('0xa')](),controller['getDescriptions']);router['post']('/',auth[_0xcc4e('0xa')](),controller[_0xcc4e('0xf')]);router['put'](_0xcc4e('0x10'),auth[_0xcc4e('0xa')](),controller[_0xcc4e('0x11')]);router[_0xcc4e('0x12')](_0xcc4e('0x10'),auth[_0xcc4e('0xa')](),controller[_0xcc4e('0x13')]);module[_0xcc4e('0x14')]=router;
\ No newline at end of file
index b0e0fa3..897c446 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8655=['STRING','exports'];(function(_0x1dc8ce,_0x46f0a2){var _0xc1fadd=function(_0x5acf3f){while(--_0x5acf3f){_0x1dc8ce['push'](_0x1dc8ce['shift']());}};_0xc1fadd(++_0x46f0a2);}(_0x8655,0x16f));var _0x5865=function(_0x6b8fcc,_0x36f061){_0x6b8fcc=_0x6b8fcc-0x0;var _0x1c46aa=_0x8655[_0x6b8fcc];return _0x1c46aa;};'use strict';var Sequelize=require('sequelize');module[_0x5865('0x0')]={'name':{'type':Sequelize[_0x5865('0x1')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xc77d=['STRING','exports'];(function(_0x5d06b1,_0x2e4f16){var _0xc91907=function(_0x339109){while(--_0x339109){_0x5d06b1['push'](_0x5d06b1['shift']());}};_0xc91907(++_0x2e4f16);}(_0xc77d,0xfb));var _0xdc77=function(_0x341569,_0x1edec3){_0x341569=_0x341569-0x0;var _0x2cb5c7=_0xc77d[_0x341569];return _0x2cb5c7;};'use strict';var Sequelize=require('sequelize');module[_0xdc77('0x0')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xdc77('0x1')]}};
\ No newline at end of file
index da2ee75..36764e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe0db=['../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','error','stack','name','send','index','map','rawAttributes','type','key','query','keys','filters','intersection','model','fields','attributes','length','order','sort','where','pick','VIRTUAL','options','SugarcrmConfiguration','includeAll','include','findAll','rows','catch','show','params','find','create','body','getFields','SugarcrmField','filter','merge','hasOwnProperty','getSubjects','findOne','nolimit','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','querystring','papaparse','ioredis','../../components/auth/service'];(function(_0x587fb5,_0x59cb3b){var _0x551105=function(_0x5bbef4){while(--_0x5bbef4){_0x587fb5['push'](_0x587fb5['shift']());}};_0x551105(++_0x59cb3b);}(_0xe0db,0xe1));var _0xbe0d=function(_0x58dc25,_0x49b9d5){_0x58dc25=_0x58dc25-0x0;var _0x21b0a7=_0xe0db[_0x58dc25];return _0x21b0a7;};'use strict';var emlformat=require(_0xbe0d('0x0'));var rimraf=require(_0xbe0d('0x1'));var zipdir=require(_0xbe0d('0x2'));var jsonpatch=require(_0xbe0d('0x3'));var rp=require('request-promise');var moment=require(_0xbe0d('0x4'));var BPromise=require(_0xbe0d('0x5'));var Mustache=require(_0xbe0d('0x6'));var util=require('util');var path=require(_0xbe0d('0x7'));var sox=require(_0xbe0d('0x8'));var csv=require(_0xbe0d('0x9'));var ejs=require(_0xbe0d('0xa'));var fs=require('fs');var fs_extra=require(_0xbe0d('0xb'));var _=require(_0xbe0d('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xbe0d('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xbe0d('0x9'));var querystring=require(_0xbe0d('0xe'));var Papa=require(_0xbe0d('0xf'));var Redis=require(_0xbe0d('0x10'));var authService=require(_0xbe0d('0x11'));var qs=require(_0xbe0d('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xbe0d('0x13'));var logger=require('../../config/logger')(_0xbe0d('0x14'));var utils=require(_0xbe0d('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xbe0d('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3bdfa,_0x1344ff){_0x1344ff=_0x1344ff||0xcc;return function(_0x4556c0){if(_0x4556c0){return _0x3bdfa[_0xbe0d('0x17')](_0x1344ff);}return _0x3bdfa[_0xbe0d('0x18')](_0x1344ff)[_0xbe0d('0x19')]();};}function respondWithResult(_0x2d8c41,_0x43e823){_0x43e823=_0x43e823||0xc8;return function(_0x5786ba){if(_0x5786ba){return _0x2d8c41[_0xbe0d('0x18')](_0x43e823)[_0xbe0d('0x1a')](_0x5786ba);}};}function respondWithFilteredResult(_0x2849ed,_0x7a0aca){return function(_0x18becc){if(_0x18becc){var _0x3cd50b=typeof _0x7a0aca[_0xbe0d('0x1b')]===_0xbe0d('0x1c')&&typeof _0x7a0aca[_0xbe0d('0x1d')]===_0xbe0d('0x1c');var _0x3eaa1e=_0x18becc[_0xbe0d('0x1e')];var _0x4cdc30=_0x3cd50b?0x0:_0x7a0aca[_0xbe0d('0x1b')];var _0xe195da=_0x3cd50b?_0x18becc[_0xbe0d('0x1e')]:_0x7a0aca[_0xbe0d('0x1b')]+_0x7a0aca[_0xbe0d('0x1d')];var _0x320650;if(_0xe195da>=_0x3eaa1e){_0xe195da=_0x3eaa1e;_0x320650=0xc8;}else{_0x320650=0xce;}_0x2849ed['status'](_0x320650);return _0x2849ed[_0xbe0d('0x1f')](_0xbe0d('0x20'),_0x4cdc30+'-'+_0xe195da+'/'+_0x3eaa1e)[_0xbe0d('0x1a')](_0x18becc);}return null;};}function patchUpdates(_0x172c55){return function(_0x290689){try{jsonpatch[_0xbe0d('0x21')](_0x290689,_0x172c55,!![]);}catch(_0x217367){return BPromise[_0xbe0d('0x22')](_0x217367);}return _0x290689['save']();};}function saveUpdates(_0x379617,_0x5a78e1){return function(_0x416208){if(_0x416208){return _0x416208[_0xbe0d('0x23')](_0x379617)[_0xbe0d('0x24')](function(_0x6f51c4){return _0x6f51c4;});}return null;};}function removeEntity(_0x440402,_0x3a2e21){return function(_0x4f1f0b){if(_0x4f1f0b){return _0x4f1f0b[_0xbe0d('0x25')]()[_0xbe0d('0x24')](function(){_0x440402['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x3928ae,_0x4b0da1){return function(_0x540d85){if(!_0x540d85){_0x3928ae['sendStatus'](0x194);}return _0x540d85;};}function handleError(_0x15868d,_0x3af25f){_0x3af25f=_0x3af25f||0x1f4;return function(_0x1d24bf){logger[_0xbe0d('0x26')](_0x1d24bf[_0xbe0d('0x27')]);if(_0x1d24bf[_0xbe0d('0x28')]){delete _0x1d24bf[_0xbe0d('0x28')];}_0x15868d[_0xbe0d('0x18')](_0x3af25f)[_0xbe0d('0x29')](_0x1d24bf);};}exports[_0xbe0d('0x2a')]=function(_0x1d62ba,_0xb739ba){var _0x4889c4={},_0x1c33d2={},_0x57ccd8={'count':0x0,'rows':[]};var _0x27dce1=_[_0xbe0d('0x2b')](db['SugarcrmConfiguration'][_0xbe0d('0x2c')],function(_0xbdc0dc){return{'name':_0xbdc0dc['fieldName'],'type':_0xbdc0dc[_0xbe0d('0x2d')][_0xbe0d('0x2e')]};});_0x1c33d2['model']=_[_0xbe0d('0x2b')](_0x27dce1,'name');_0x1c33d2[_0xbe0d('0x2f')]=_[_0xbe0d('0x30')](_0x1d62ba['query']);_0x1c33d2[_0xbe0d('0x31')]=_[_0xbe0d('0x32')](_0x1c33d2[_0xbe0d('0x33')],_0x1c33d2[_0xbe0d('0x2f')]);_0x4889c4['attributes']=_[_0xbe0d('0x32')](_0x1c33d2['model'],qs[_0xbe0d('0x34')](_0x1d62ba[_0xbe0d('0x2f')][_0xbe0d('0x34')]));_0x4889c4[_0xbe0d('0x35')]=_0x4889c4['attributes'][_0xbe0d('0x36')]?_0x4889c4[_0xbe0d('0x35')]:_0x1c33d2[_0xbe0d('0x33')];if(!_0x1d62ba[_0xbe0d('0x2f')]['hasOwnProperty']('nolimit')){_0x4889c4[_0xbe0d('0x1d')]=qs['limit'](_0x1d62ba[_0xbe0d('0x2f')]['limit']);_0x4889c4[_0xbe0d('0x1b')]=qs['offset'](_0x1d62ba[_0xbe0d('0x2f')]['offset']);}_0x4889c4[_0xbe0d('0x37')]=qs[_0xbe0d('0x38')](_0x1d62ba[_0xbe0d('0x2f')]['sort']);_0x4889c4[_0xbe0d('0x39')]=qs[_0xbe0d('0x31')](_[_0xbe0d('0x3a')](_0x1d62ba['query'],_0x1c33d2['filters']),_0x27dce1);if(_0x1d62ba['query']['filter']){_0x4889c4[_0xbe0d('0x39')]=_['merge'](_0x4889c4[_0xbe0d('0x39')],{'$or':_['map'](_0x27dce1,function(_0x16498d){if(_0x16498d[_0xbe0d('0x2d')]!==_0xbe0d('0x3b')){var _0x54f96d={};_0x54f96d[_0x16498d[_0xbe0d('0x28')]]={'$like':'%'+_0x1d62ba['query']['filter']+'%'};return _0x54f96d;}})});}_0x4889c4=_['merge']({},_0x4889c4,_0x1d62ba[_0xbe0d('0x3c')]);var _0x1de34f={'where':_0x4889c4[_0xbe0d('0x39')]};return db[_0xbe0d('0x3d')][_0xbe0d('0x1e')](_0x1de34f)[_0xbe0d('0x24')](function(_0x20cc70){_0x57ccd8[_0xbe0d('0x1e')]=_0x20cc70;if(_0x1d62ba[_0xbe0d('0x2f')][_0xbe0d('0x3e')]){_0x4889c4[_0xbe0d('0x3f')]=[{'all':!![]}];}return db[_0xbe0d('0x3d')][_0xbe0d('0x40')](_0x4889c4);})['then'](function(_0x533f03){_0x57ccd8[_0xbe0d('0x41')]=_0x533f03;return _0x57ccd8;})[_0xbe0d('0x24')](respondWithFilteredResult(_0xb739ba,_0x4889c4))[_0xbe0d('0x42')](handleError(_0xb739ba,null));};exports[_0xbe0d('0x43')]=function(_0x6f173d,_0x11f044){var _0x4c9da0={'raw':![],'where':{'id':_0x6f173d[_0xbe0d('0x44')]['id']}},_0x2074e4={};_0x2074e4['model']=_[_0xbe0d('0x30')](db['SugarcrmConfiguration'][_0xbe0d('0x2c')]);_0x2074e4[_0xbe0d('0x2f')]=_[_0xbe0d('0x30')](_0x6f173d[_0xbe0d('0x2f')]);_0x2074e4['filters']=_[_0xbe0d('0x32')](_0x2074e4['model'],_0x2074e4['query']);_0x4c9da0[_0xbe0d('0x35')]=_[_0xbe0d('0x32')](_0x2074e4['model'],qs[_0xbe0d('0x34')](_0x6f173d[_0xbe0d('0x2f')]['fields']));_0x4c9da0[_0xbe0d('0x35')]=_0x4c9da0[_0xbe0d('0x35')]['length']?_0x4c9da0[_0xbe0d('0x35')]:_0x2074e4['model'];if(_0x6f173d[_0xbe0d('0x2f')][_0xbe0d('0x3e')]){_0x4c9da0['include']=[{'all':!![]}];}_0x4c9da0=_['merge']({},_0x4c9da0,_0x6f173d[_0xbe0d('0x3c')]);return db[_0xbe0d('0x3d')][_0xbe0d('0x45')](_0x4c9da0)[_0xbe0d('0x24')](handleEntityNotFound(_0x11f044,null))[_0xbe0d('0x24')](respondWithResult(_0x11f044,null))[_0xbe0d('0x42')](handleError(_0x11f044,null));};exports[_0xbe0d('0x46')]=function(_0x25ab24,_0x146620){return db[_0xbe0d('0x3d')][_0xbe0d('0x46')](_0x25ab24[_0xbe0d('0x47')],{})[_0xbe0d('0x24')](respondWithResult(_0x146620,0xc9))['catch'](handleError(_0x146620,null));};exports['update']=function(_0x544bf9,_0x4986d0){if(_0x544bf9[_0xbe0d('0x47')]['id']){delete _0x544bf9[_0xbe0d('0x47')]['id'];}return db[_0xbe0d('0x3d')]['find']({'where':{'id':_0x544bf9['params']['id']}})[_0xbe0d('0x24')](handleEntityNotFound(_0x4986d0,null))['then'](saveUpdates(_0x544bf9[_0xbe0d('0x47')],null))['then'](respondWithResult(_0x4986d0,null))[_0xbe0d('0x42')](handleError(_0x4986d0,null));};exports['destroy']=function(_0x172c7b,_0x55d25e){return db[_0xbe0d('0x3d')][_0xbe0d('0x45')]({'where':{'id':_0x172c7b['params']['id']}})['then'](handleEntityNotFound(_0x55d25e,null))[_0xbe0d('0x24')](removeEntity(_0x55d25e,null))[_0xbe0d('0x42')](handleError(_0x55d25e,null));};exports[_0xbe0d('0x48')]=function(_0x244b86,_0x2073d4,_0x45cdea){var _0x22d372={};var _0x24c354={};var _0x35141f;var _0x567026;return db[_0xbe0d('0x3d')]['findOne']({'where':{'id':_0x244b86[_0xbe0d('0x44')]['id']}})[_0xbe0d('0x24')](handleEntityNotFound(_0x2073d4,null))[_0xbe0d('0x24')](function(_0x5e01ae){if(_0x5e01ae){_0x35141f=_0x5e01ae;_0x24c354[_0xbe0d('0x33')]=_[_0xbe0d('0x30')](db[_0xbe0d('0x49')][_0xbe0d('0x2c')]);_0x24c354[_0xbe0d('0x2f')]=_[_0xbe0d('0x30')](_0x244b86['query']);_0x24c354[_0xbe0d('0x31')]=_[_0xbe0d('0x32')](_0x24c354[_0xbe0d('0x33')],_0x24c354['query']);_0x22d372['attributes']=_[_0xbe0d('0x32')](_0x24c354['model'],qs[_0xbe0d('0x34')](_0x244b86[_0xbe0d('0x2f')][_0xbe0d('0x34')]));_0x22d372[_0xbe0d('0x35')]=_0x22d372[_0xbe0d('0x35')][_0xbe0d('0x36')]?_0x22d372[_0xbe0d('0x35')]:_0x24c354['model'];_0x22d372[_0xbe0d('0x37')]=qs[_0xbe0d('0x38')](_0x244b86['query'][_0xbe0d('0x38')]);_0x22d372[_0xbe0d('0x39')]=qs[_0xbe0d('0x31')](_[_0xbe0d('0x3a')](_0x244b86[_0xbe0d('0x2f')],_0x24c354[_0xbe0d('0x31')]));if(_0x244b86[_0xbe0d('0x2f')][_0xbe0d('0x4a')]){_0x22d372[_0xbe0d('0x39')]=_[_0xbe0d('0x4b')](_0x22d372[_0xbe0d('0x39')],{'$or':_[_0xbe0d('0x2b')](_0x22d372[_0xbe0d('0x35')],function(_0x7d03d5){var _0x2d8ddc={};_0x2d8ddc[_0x7d03d5]={'$like':'%'+_0x244b86[_0xbe0d('0x2f')][_0xbe0d('0x4a')]+'%'};return _0x2d8ddc;})});}_0x22d372=_[_0xbe0d('0x4b')]({},_0x22d372,_0x244b86[_0xbe0d('0x3c')]);return _0x35141f['getFields'](_0x22d372);}})[_0xbe0d('0x24')](function(_0xcf6f99){if(_0xcf6f99){_0x567026=_0xcf6f99['length'];if(!_0x244b86['query'][_0xbe0d('0x4c')]('nolimit')){_0x22d372['limit']=qs['limit'](_0x244b86[_0xbe0d('0x2f')][_0xbe0d('0x1d')]);_0x22d372[_0xbe0d('0x1b')]=qs['offset'](_0x244b86[_0xbe0d('0x2f')][_0xbe0d('0x1b')]);}return _0x35141f[_0xbe0d('0x48')](_0x22d372);}})['then'](function(_0x2d5c66){if(_0x2d5c66){return _0x2d5c66?{'count':_0x567026,'rows':_0x2d5c66}:null;}})['then'](respondWithResult(_0x2073d4,null))[_0xbe0d('0x42')](handleError(_0x2073d4,null));};exports[_0xbe0d('0x4d')]=function(_0x4c5a60,_0x237c8e,_0x5ba372){var _0x2482af={};var _0x3fba18={};var _0x5de554;var _0x1e3799;return db[_0xbe0d('0x3d')][_0xbe0d('0x4e')]({'where':{'id':_0x4c5a60[_0xbe0d('0x44')]['id']}})[_0xbe0d('0x24')](handleEntityNotFound(_0x237c8e,null))['then'](function(_0x12f1af){if(_0x12f1af){_0x5de554=_0x12f1af;_0x3fba18[_0xbe0d('0x33')]=_[_0xbe0d('0x30')](db[_0xbe0d('0x49')][_0xbe0d('0x2c')]);_0x3fba18[_0xbe0d('0x2f')]=_['keys'](_0x4c5a60[_0xbe0d('0x2f')]);_0x3fba18['filters']=_[_0xbe0d('0x32')](_0x3fba18['model'],_0x3fba18['query']);_0x2482af[_0xbe0d('0x35')]=_[_0xbe0d('0x32')](_0x3fba18['model'],qs[_0xbe0d('0x34')](_0x4c5a60['query'][_0xbe0d('0x34')]));_0x2482af[_0xbe0d('0x35')]=_0x2482af[_0xbe0d('0x35')][_0xbe0d('0x36')]?_0x2482af[_0xbe0d('0x35')]:_0x3fba18[_0xbe0d('0x33')];_0x2482af[_0xbe0d('0x37')]=qs[_0xbe0d('0x38')](_0x4c5a60['query'][_0xbe0d('0x38')]);_0x2482af[_0xbe0d('0x39')]=qs[_0xbe0d('0x31')](_['pick'](_0x4c5a60[_0xbe0d('0x2f')],_0x3fba18['filters']));if(_0x4c5a60['query']['filter']){_0x2482af[_0xbe0d('0x39')]=_[_0xbe0d('0x4b')](_0x2482af[_0xbe0d('0x39')],{'$or':_['map'](_0x2482af[_0xbe0d('0x35')],function(_0x4035db){var _0x48ed48={};_0x48ed48[_0x4035db]={'$like':'%'+_0x4c5a60[_0xbe0d('0x2f')][_0xbe0d('0x4a')]+'%'};return _0x48ed48;})});}_0x2482af=_[_0xbe0d('0x4b')]({},_0x2482af,_0x4c5a60['options']);return _0x5de554[_0xbe0d('0x4d')](_0x2482af);}})[_0xbe0d('0x24')](function(_0x2f0cf1){if(_0x2f0cf1){_0x1e3799=_0x2f0cf1[_0xbe0d('0x36')];if(!_0x4c5a60['query'][_0xbe0d('0x4c')](_0xbe0d('0x4f'))){_0x2482af[_0xbe0d('0x1d')]=qs[_0xbe0d('0x1d')](_0x4c5a60['query'][_0xbe0d('0x1d')]);_0x2482af['offset']=qs[_0xbe0d('0x1b')](_0x4c5a60[_0xbe0d('0x2f')]['offset']);}return _0x5de554[_0xbe0d('0x4d')](_0x2482af);}})['then'](function(_0x3c35ee){if(_0x3c35ee){return _0x3c35ee?{'count':_0x1e3799,'rows':_0x3c35ee}:null;}})[_0xbe0d('0x24')](respondWithResult(_0x237c8e,null))['catch'](handleError(_0x237c8e,null));};exports['getDescriptions']=function(_0x4821fd,_0x26964c,_0x2602bc){var _0x5af110={};var _0x5e49d7={};var _0x3f86e1;var _0x565595;return db[_0xbe0d('0x3d')][_0xbe0d('0x4e')]({'where':{'id':_0x4821fd[_0xbe0d('0x44')]['id']}})[_0xbe0d('0x24')](handleEntityNotFound(_0x26964c,null))[_0xbe0d('0x24')](function(_0x172ef8){if(_0x172ef8){_0x3f86e1=_0x172ef8;_0x5e49d7['model']=_[_0xbe0d('0x30')](db[_0xbe0d('0x49')][_0xbe0d('0x2c')]);_0x5e49d7[_0xbe0d('0x2f')]=_[_0xbe0d('0x30')](_0x4821fd[_0xbe0d('0x2f')]);_0x5e49d7[_0xbe0d('0x31')]=_[_0xbe0d('0x32')](_0x5e49d7[_0xbe0d('0x33')],_0x5e49d7[_0xbe0d('0x2f')]);_0x5af110['attributes']=_[_0xbe0d('0x32')](_0x5e49d7[_0xbe0d('0x33')],qs[_0xbe0d('0x34')](_0x4821fd['query'][_0xbe0d('0x34')]));_0x5af110[_0xbe0d('0x35')]=_0x5af110['attributes']['length']?_0x5af110['attributes']:_0x5e49d7[_0xbe0d('0x33')];_0x5af110[_0xbe0d('0x37')]=qs[_0xbe0d('0x38')](_0x4821fd[_0xbe0d('0x2f')][_0xbe0d('0x38')]);_0x5af110[_0xbe0d('0x39')]=qs[_0xbe0d('0x31')](_[_0xbe0d('0x3a')](_0x4821fd[_0xbe0d('0x2f')],_0x5e49d7['filters']));if(_0x4821fd[_0xbe0d('0x2f')][_0xbe0d('0x4a')]){_0x5af110['where']=_['merge'](_0x5af110[_0xbe0d('0x39')],{'$or':_[_0xbe0d('0x2b')](_0x5af110[_0xbe0d('0x35')],function(_0x4c2cfb){var _0x52fa90={};_0x52fa90[_0x4c2cfb]={'$like':'%'+_0x4821fd[_0xbe0d('0x2f')][_0xbe0d('0x4a')]+'%'};return _0x52fa90;})});}_0x5af110=_[_0xbe0d('0x4b')]({},_0x5af110,_0x4821fd[_0xbe0d('0x3c')]);return _0x3f86e1[_0xbe0d('0x50')](_0x5af110);}})[_0xbe0d('0x24')](function(_0x358970){if(_0x358970){_0x565595=_0x358970['length'];if(!_0x4821fd['query'][_0xbe0d('0x4c')](_0xbe0d('0x4f'))){_0x5af110[_0xbe0d('0x1d')]=qs[_0xbe0d('0x1d')](_0x4821fd['query'][_0xbe0d('0x1d')]);_0x5af110[_0xbe0d('0x1b')]=qs[_0xbe0d('0x1b')](_0x4821fd[_0xbe0d('0x2f')][_0xbe0d('0x1b')]);}return _0x3f86e1[_0xbe0d('0x50')](_0x5af110);}})['then'](function(_0x5812e9){if(_0x5812e9){return _0x5812e9?{'count':_0x565595,'rows':_0x5812e9}:null;}})['then'](respondWithResult(_0x26964c,null))[_0xbe0d('0x42')](handleError(_0x26964c,null));};
\ No newline at end of file
+var _0xe1d1=['index','map','SugarcrmConfiguration','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','include','rows','catch','show','params','includeAll','create','body','find','destroy','getFields','findOne','SugarcrmField','getSubjects','getDescriptions','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','ejs','squel','jsforce','desk.js','to-csv','papaparse','ioredis','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','count','limit','set','reject','save','update','then','stack','name'];(function(_0x3ab9ee,_0x4a74b8){var _0x82ee88=function(_0x6ccc7e){while(--_0x6ccc7e){_0x3ab9ee['push'](_0x3ab9ee['shift']());}};_0x82ee88(++_0x4a74b8);}(_0xe1d1,0x1ef));var _0x1e1d=function(_0x16b9ed,_0x56517a){_0x16b9ed=_0x16b9ed-0x0;var _0x66b1f8=_0xe1d1[_0x16b9ed];return _0x66b1f8;};'use strict';var emlformat=require(_0x1e1d('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x1e1d('0x1'));var jsonpatch=require(_0x1e1d('0x2'));var rp=require(_0x1e1d('0x3'));var moment=require(_0x1e1d('0x4'));var BPromise=require(_0x1e1d('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x1e1d('0x6'));var sox=require(_0x1e1d('0x7'));var csv=require('to-csv');var ejs=require(_0x1e1d('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x1e1d('0x9'));var crypto=require('crypto');var jsforce=require(_0x1e1d('0xa'));var deskjs=require(_0x1e1d('0xb'));var toCsv=require(_0x1e1d('0xc'));var querystring=require('querystring');var Papa=require(_0x1e1d('0xd'));var Redis=require(_0x1e1d('0xe'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x1e1d('0xf'));var logger=require(_0x1e1d('0x10'))(_0x1e1d('0x11'));var utils=require(_0x1e1d('0x12'));var config=require(_0x1e1d('0x13'));var licenseUtil=require(_0x1e1d('0x14'));var db=require(_0x1e1d('0x15'))['db'];function respondWithStatusCode(_0x556014,_0x6404b8){_0x6404b8=_0x6404b8||0xcc;return function(_0x1c6270){if(_0x1c6270){return _0x556014[_0x1e1d('0x16')](_0x6404b8);}return _0x556014['status'](_0x6404b8)[_0x1e1d('0x17')]();};}function respondWithResult(_0x1ccc1c,_0x2e327d){_0x2e327d=_0x2e327d||0xc8;return function(_0x2bc238){if(_0x2bc238){return _0x1ccc1c[_0x1e1d('0x18')](_0x2e327d)[_0x1e1d('0x19')](_0x2bc238);}};}function respondWithFilteredResult(_0x11c022,_0x416336){return function(_0x330b37){if(_0x330b37){var _0x13b2a4=typeof _0x416336[_0x1e1d('0x1a')]===_0x1e1d('0x1b')&&typeof _0x416336['limit']==='undefined';var _0x8f27be=_0x330b37['count'];var _0x32722d=_0x13b2a4?0x0:_0x416336[_0x1e1d('0x1a')];var _0x318519=_0x13b2a4?_0x330b37[_0x1e1d('0x1c')]:_0x416336[_0x1e1d('0x1a')]+_0x416336[_0x1e1d('0x1d')];var _0xb8724b;if(_0x318519>=_0x8f27be){_0x318519=_0x8f27be;_0xb8724b=0xc8;}else{_0xb8724b=0xce;}_0x11c022[_0x1e1d('0x18')](_0xb8724b);return _0x11c022[_0x1e1d('0x1e')]('Content-Range',_0x32722d+'-'+_0x318519+'/'+_0x8f27be)[_0x1e1d('0x19')](_0x330b37);}return null;};}function patchUpdates(_0xcb1edc){return function(_0x38ef6a){try{jsonpatch['apply'](_0x38ef6a,_0xcb1edc,!![]);}catch(_0x3063ee){return BPromise[_0x1e1d('0x1f')](_0x3063ee);}return _0x38ef6a[_0x1e1d('0x20')]();};}function saveUpdates(_0x51cce8,_0x11e661){return function(_0x407f17){if(_0x407f17){return _0x407f17[_0x1e1d('0x21')](_0x51cce8)['then'](function(_0x1052d3){return _0x1052d3;});}return null;};}function removeEntity(_0x5d53fb,_0x56ed6d){return function(_0x12cdc8){if(_0x12cdc8){return _0x12cdc8['destroy']()[_0x1e1d('0x22')](function(){_0x5d53fb['status'](0xcc)[_0x1e1d('0x17')]();});}};}function handleEntityNotFound(_0x3a5fd9,_0x300719){return function(_0x205c37){if(!_0x205c37){_0x3a5fd9[_0x1e1d('0x16')](0x194);}return _0x205c37;};}function handleError(_0x1d3493,_0x54b1ed){_0x54b1ed=_0x54b1ed||0x1f4;return function(_0x5c7c92){logger['error'](_0x5c7c92[_0x1e1d('0x23')]);if(_0x5c7c92[_0x1e1d('0x24')]){delete _0x5c7c92[_0x1e1d('0x24')];}_0x1d3493[_0x1e1d('0x18')](_0x54b1ed)['send'](_0x5c7c92);};}exports[_0x1e1d('0x25')]=function(_0x5abb78,_0x82147f){var _0x55525f={},_0x1be049={},_0x46045c={'count':0x0,'rows':[]};var _0x15f2c7=_[_0x1e1d('0x26')](db[_0x1e1d('0x27')][_0x1e1d('0x28')],function(_0x5afc03){return{'name':_0x5afc03['fieldName'],'type':_0x5afc03[_0x1e1d('0x29')][_0x1e1d('0x2a')]};});_0x1be049[_0x1e1d('0x2b')]=_[_0x1e1d('0x26')](_0x15f2c7,'name');_0x1be049[_0x1e1d('0x2c')]=_[_0x1e1d('0x2d')](_0x5abb78[_0x1e1d('0x2c')]);_0x1be049[_0x1e1d('0x2e')]=_[_0x1e1d('0x2f')](_0x1be049[_0x1e1d('0x2b')],_0x1be049[_0x1e1d('0x2c')]);_0x55525f[_0x1e1d('0x30')]=_['intersection'](_0x1be049[_0x1e1d('0x2b')],qs['fields'](_0x5abb78[_0x1e1d('0x2c')][_0x1e1d('0x31')]));_0x55525f[_0x1e1d('0x30')]=_0x55525f['attributes'][_0x1e1d('0x32')]?_0x55525f[_0x1e1d('0x30')]:_0x1be049[_0x1e1d('0x2b')];if(!_0x5abb78[_0x1e1d('0x2c')][_0x1e1d('0x33')](_0x1e1d('0x34'))){_0x55525f[_0x1e1d('0x1d')]=qs[_0x1e1d('0x1d')](_0x5abb78[_0x1e1d('0x2c')]['limit']);_0x55525f[_0x1e1d('0x1a')]=qs['offset'](_0x5abb78[_0x1e1d('0x2c')][_0x1e1d('0x1a')]);}_0x55525f[_0x1e1d('0x35')]=qs[_0x1e1d('0x36')](_0x5abb78[_0x1e1d('0x2c')][_0x1e1d('0x36')]);_0x55525f[_0x1e1d('0x37')]=qs[_0x1e1d('0x2e')](_[_0x1e1d('0x38')](_0x5abb78[_0x1e1d('0x2c')],_0x1be049[_0x1e1d('0x2e')]),_0x15f2c7);if(_0x5abb78['query'][_0x1e1d('0x39')]){_0x55525f[_0x1e1d('0x37')]=_[_0x1e1d('0x3a')](_0x55525f[_0x1e1d('0x37')],{'$or':_['map'](_0x15f2c7,function(_0xea7eff){if(_0xea7eff['type']!==_0x1e1d('0x3b')){var _0x4d2130={};_0x4d2130[_0xea7eff[_0x1e1d('0x24')]]={'$like':'%'+_0x5abb78[_0x1e1d('0x2c')][_0x1e1d('0x39')]+'%'};return _0x4d2130;}})});}_0x55525f=_[_0x1e1d('0x3a')]({},_0x55525f,_0x5abb78[_0x1e1d('0x3c')]);var _0x128868={'where':_0x55525f['where']};return db[_0x1e1d('0x27')]['count'](_0x128868)[_0x1e1d('0x22')](function(_0x20bb55){_0x46045c[_0x1e1d('0x1c')]=_0x20bb55;if(_0x5abb78['query']['includeAll']){_0x55525f[_0x1e1d('0x3d')]=[{'all':!![]}];}return db[_0x1e1d('0x27')]['findAll'](_0x55525f);})['then'](function(_0x5a1c7e){_0x46045c[_0x1e1d('0x3e')]=_0x5a1c7e;return _0x46045c;})[_0x1e1d('0x22')](respondWithFilteredResult(_0x82147f,_0x55525f))[_0x1e1d('0x3f')](handleError(_0x82147f,null));};exports[_0x1e1d('0x40')]=function(_0x14b05e,_0x3e963f){var _0x275c0f={'raw':![],'where':{'id':_0x14b05e[_0x1e1d('0x41')]['id']}},_0x50b372={};_0x50b372[_0x1e1d('0x2b')]=_[_0x1e1d('0x2d')](db['SugarcrmConfiguration'][_0x1e1d('0x28')]);_0x50b372['query']=_['keys'](_0x14b05e[_0x1e1d('0x2c')]);_0x50b372[_0x1e1d('0x2e')]=_[_0x1e1d('0x2f')](_0x50b372['model'],_0x50b372[_0x1e1d('0x2c')]);_0x275c0f[_0x1e1d('0x30')]=_[_0x1e1d('0x2f')](_0x50b372[_0x1e1d('0x2b')],qs[_0x1e1d('0x31')](_0x14b05e[_0x1e1d('0x2c')][_0x1e1d('0x31')]));_0x275c0f['attributes']=_0x275c0f[_0x1e1d('0x30')][_0x1e1d('0x32')]?_0x275c0f[_0x1e1d('0x30')]:_0x50b372[_0x1e1d('0x2b')];if(_0x14b05e[_0x1e1d('0x2c')][_0x1e1d('0x42')]){_0x275c0f[_0x1e1d('0x3d')]=[{'all':!![]}];}_0x275c0f=_[_0x1e1d('0x3a')]({},_0x275c0f,_0x14b05e['options']);return db['SugarcrmConfiguration']['find'](_0x275c0f)['then'](handleEntityNotFound(_0x3e963f,null))[_0x1e1d('0x22')](respondWithResult(_0x3e963f,null))['catch'](handleError(_0x3e963f,null));};exports[_0x1e1d('0x43')]=function(_0x3d441c,_0x30c9c9){return db[_0x1e1d('0x27')]['create'](_0x3d441c[_0x1e1d('0x44')],{})['then'](respondWithResult(_0x30c9c9,0xc9))[_0x1e1d('0x3f')](handleError(_0x30c9c9,null));};exports[_0x1e1d('0x21')]=function(_0x19d038,_0x508a69){if(_0x19d038[_0x1e1d('0x44')]['id']){delete _0x19d038[_0x1e1d('0x44')]['id'];}return db[_0x1e1d('0x27')][_0x1e1d('0x45')]({'where':{'id':_0x19d038[_0x1e1d('0x41')]['id']}})[_0x1e1d('0x22')](handleEntityNotFound(_0x508a69,null))[_0x1e1d('0x22')](saveUpdates(_0x19d038[_0x1e1d('0x44')],null))[_0x1e1d('0x22')](respondWithResult(_0x508a69,null))[_0x1e1d('0x3f')](handleError(_0x508a69,null));};exports[_0x1e1d('0x46')]=function(_0x283eba,_0x34a731){return db[_0x1e1d('0x27')]['find']({'where':{'id':_0x283eba[_0x1e1d('0x41')]['id']}})[_0x1e1d('0x22')](handleEntityNotFound(_0x34a731,null))[_0x1e1d('0x22')](removeEntity(_0x34a731,null))[_0x1e1d('0x3f')](handleError(_0x34a731,null));};exports[_0x1e1d('0x47')]=function(_0x44bde4,_0x3b70ff,_0x2ca1e2){var _0x922881={};var _0x1fbf87={};var _0x352417;var _0x7d5aab;return db['SugarcrmConfiguration'][_0x1e1d('0x48')]({'where':{'id':_0x44bde4[_0x1e1d('0x41')]['id']}})[_0x1e1d('0x22')](handleEntityNotFound(_0x3b70ff,null))['then'](function(_0x326859){if(_0x326859){_0x352417=_0x326859;_0x1fbf87[_0x1e1d('0x2b')]=_[_0x1e1d('0x2d')](db[_0x1e1d('0x49')][_0x1e1d('0x28')]);_0x1fbf87[_0x1e1d('0x2c')]=_[_0x1e1d('0x2d')](_0x44bde4[_0x1e1d('0x2c')]);_0x1fbf87['filters']=_['intersection'](_0x1fbf87[_0x1e1d('0x2b')],_0x1fbf87[_0x1e1d('0x2c')]);_0x922881[_0x1e1d('0x30')]=_[_0x1e1d('0x2f')](_0x1fbf87[_0x1e1d('0x2b')],qs[_0x1e1d('0x31')](_0x44bde4[_0x1e1d('0x2c')]['fields']));_0x922881[_0x1e1d('0x30')]=_0x922881[_0x1e1d('0x30')]['length']?_0x922881[_0x1e1d('0x30')]:_0x1fbf87[_0x1e1d('0x2b')];_0x922881[_0x1e1d('0x35')]=qs[_0x1e1d('0x36')](_0x44bde4['query']['sort']);_0x922881['where']=qs[_0x1e1d('0x2e')](_['pick'](_0x44bde4['query'],_0x1fbf87['filters']));if(_0x44bde4['query'][_0x1e1d('0x39')]){_0x922881['where']=_[_0x1e1d('0x3a')](_0x922881[_0x1e1d('0x37')],{'$or':_[_0x1e1d('0x26')](_0x922881[_0x1e1d('0x30')],function(_0x4ca2b8){var _0x471a3a={};_0x471a3a[_0x4ca2b8]={'$like':'%'+_0x44bde4[_0x1e1d('0x2c')]['filter']+'%'};return _0x471a3a;})});}_0x922881=_['merge']({},_0x922881,_0x44bde4[_0x1e1d('0x3c')]);return _0x352417[_0x1e1d('0x47')](_0x922881);}})[_0x1e1d('0x22')](function(_0x55ed4a){if(_0x55ed4a){_0x7d5aab=_0x55ed4a[_0x1e1d('0x32')];if(!_0x44bde4[_0x1e1d('0x2c')][_0x1e1d('0x33')](_0x1e1d('0x34'))){_0x922881[_0x1e1d('0x1d')]=qs['limit'](_0x44bde4['query'][_0x1e1d('0x1d')]);_0x922881['offset']=qs[_0x1e1d('0x1a')](_0x44bde4['query'][_0x1e1d('0x1a')]);}return _0x352417[_0x1e1d('0x47')](_0x922881);}})['then'](function(_0x1e1b15){if(_0x1e1b15){return _0x1e1b15?{'count':_0x7d5aab,'rows':_0x1e1b15}:null;}})[_0x1e1d('0x22')](respondWithResult(_0x3b70ff,null))[_0x1e1d('0x3f')](handleError(_0x3b70ff,null));};exports[_0x1e1d('0x4a')]=function(_0x201635,_0x1c0866,_0x14cbba){var _0xb2f0cd={};var _0x7571ae={};var _0x2877d4;var _0x3b2d8e;return db[_0x1e1d('0x27')][_0x1e1d('0x48')]({'where':{'id':_0x201635[_0x1e1d('0x41')]['id']}})[_0x1e1d('0x22')](handleEntityNotFound(_0x1c0866,null))['then'](function(_0x32e200){if(_0x32e200){_0x2877d4=_0x32e200;_0x7571ae[_0x1e1d('0x2b')]=_[_0x1e1d('0x2d')](db[_0x1e1d('0x49')][_0x1e1d('0x28')]);_0x7571ae[_0x1e1d('0x2c')]=_[_0x1e1d('0x2d')](_0x201635[_0x1e1d('0x2c')]);_0x7571ae['filters']=_[_0x1e1d('0x2f')](_0x7571ae[_0x1e1d('0x2b')],_0x7571ae[_0x1e1d('0x2c')]);_0xb2f0cd['attributes']=_[_0x1e1d('0x2f')](_0x7571ae[_0x1e1d('0x2b')],qs[_0x1e1d('0x31')](_0x201635[_0x1e1d('0x2c')]['fields']));_0xb2f0cd[_0x1e1d('0x30')]=_0xb2f0cd['attributes'][_0x1e1d('0x32')]?_0xb2f0cd[_0x1e1d('0x30')]:_0x7571ae[_0x1e1d('0x2b')];_0xb2f0cd['order']=qs['sort'](_0x201635[_0x1e1d('0x2c')][_0x1e1d('0x36')]);_0xb2f0cd[_0x1e1d('0x37')]=qs['filters'](_['pick'](_0x201635['query'],_0x7571ae['filters']));if(_0x201635[_0x1e1d('0x2c')][_0x1e1d('0x39')]){_0xb2f0cd['where']=_['merge'](_0xb2f0cd['where'],{'$or':_[_0x1e1d('0x26')](_0xb2f0cd[_0x1e1d('0x30')],function(_0x1f1308){var _0x1b798c={};_0x1b798c[_0x1f1308]={'$like':'%'+_0x201635[_0x1e1d('0x2c')][_0x1e1d('0x39')]+'%'};return _0x1b798c;})});}_0xb2f0cd=_[_0x1e1d('0x3a')]({},_0xb2f0cd,_0x201635[_0x1e1d('0x3c')]);return _0x2877d4[_0x1e1d('0x4a')](_0xb2f0cd);}})[_0x1e1d('0x22')](function(_0x42924f){if(_0x42924f){_0x3b2d8e=_0x42924f[_0x1e1d('0x32')];if(!_0x201635['query'][_0x1e1d('0x33')](_0x1e1d('0x34'))){_0xb2f0cd[_0x1e1d('0x1d')]=qs['limit'](_0x201635[_0x1e1d('0x2c')]['limit']);_0xb2f0cd[_0x1e1d('0x1a')]=qs[_0x1e1d('0x1a')](_0x201635[_0x1e1d('0x2c')][_0x1e1d('0x1a')]);}return _0x2877d4[_0x1e1d('0x4a')](_0xb2f0cd);}})[_0x1e1d('0x22')](function(_0x4ddf42){if(_0x4ddf42){return _0x4ddf42?{'count':_0x3b2d8e,'rows':_0x4ddf42}:null;}})['then'](respondWithResult(_0x1c0866,null))[_0x1e1d('0x3f')](handleError(_0x1c0866,null));};exports[_0x1e1d('0x4b')]=function(_0x4f5dac,_0xa7aaa,_0x5f0b77){var _0x5bc6a0={};var _0x55544e={};var _0x5ceccb;var _0x13275e;return db[_0x1e1d('0x27')][_0x1e1d('0x48')]({'where':{'id':_0x4f5dac[_0x1e1d('0x41')]['id']}})[_0x1e1d('0x22')](handleEntityNotFound(_0xa7aaa,null))[_0x1e1d('0x22')](function(_0x21aece){if(_0x21aece){_0x5ceccb=_0x21aece;_0x55544e[_0x1e1d('0x2b')]=_[_0x1e1d('0x2d')](db['SugarcrmField'][_0x1e1d('0x28')]);_0x55544e['query']=_[_0x1e1d('0x2d')](_0x4f5dac[_0x1e1d('0x2c')]);_0x55544e['filters']=_[_0x1e1d('0x2f')](_0x55544e['model'],_0x55544e[_0x1e1d('0x2c')]);_0x5bc6a0[_0x1e1d('0x30')]=_['intersection'](_0x55544e[_0x1e1d('0x2b')],qs[_0x1e1d('0x31')](_0x4f5dac[_0x1e1d('0x2c')][_0x1e1d('0x31')]));_0x5bc6a0[_0x1e1d('0x30')]=_0x5bc6a0[_0x1e1d('0x30')][_0x1e1d('0x32')]?_0x5bc6a0['attributes']:_0x55544e['model'];_0x5bc6a0[_0x1e1d('0x35')]=qs[_0x1e1d('0x36')](_0x4f5dac[_0x1e1d('0x2c')][_0x1e1d('0x36')]);_0x5bc6a0[_0x1e1d('0x37')]=qs[_0x1e1d('0x2e')](_[_0x1e1d('0x38')](_0x4f5dac[_0x1e1d('0x2c')],_0x55544e[_0x1e1d('0x2e')]));if(_0x4f5dac['query'][_0x1e1d('0x39')]){_0x5bc6a0[_0x1e1d('0x37')]=_['merge'](_0x5bc6a0[_0x1e1d('0x37')],{'$or':_['map'](_0x5bc6a0[_0x1e1d('0x30')],function(_0x2a10d9){var _0x22feb2={};_0x22feb2[_0x2a10d9]={'$like':'%'+_0x4f5dac[_0x1e1d('0x2c')][_0x1e1d('0x39')]+'%'};return _0x22feb2;})});}_0x5bc6a0=_['merge']({},_0x5bc6a0,_0x4f5dac[_0x1e1d('0x3c')]);return _0x5ceccb[_0x1e1d('0x4b')](_0x5bc6a0);}})[_0x1e1d('0x22')](function(_0xeb5bf9){if(_0xeb5bf9){_0x13275e=_0xeb5bf9[_0x1e1d('0x32')];if(!_0x4f5dac[_0x1e1d('0x2c')]['hasOwnProperty'](_0x1e1d('0x34'))){_0x5bc6a0[_0x1e1d('0x1d')]=qs[_0x1e1d('0x1d')](_0x4f5dac[_0x1e1d('0x2c')][_0x1e1d('0x1d')]);_0x5bc6a0[_0x1e1d('0x1a')]=qs['offset'](_0x4f5dac[_0x1e1d('0x2c')][_0x1e1d('0x1a')]);}return _0x5ceccb[_0x1e1d('0x4b')](_0x5bc6a0);}})[_0x1e1d('0x22')](function(_0x577121){if(_0x577121){return _0x577121?{'count':_0x13275e,'rows':_0x577121}:null;}})[_0x1e1d('0x22')](respondWithResult(_0xa7aaa,null))['catch'](handleError(_0xa7aaa,null));};
\ No newline at end of file
index 97eefd4..a3cf6e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a92=['bluebird','path','rimraf','../../config/environment','exports','define','SugarcrmConfiguration','int_sugarcrm_configurations','../../config/logger','moment'];(function(_0x1ee003,_0x3de654){var _0x12f06a=function(_0xaa0bed){while(--_0xaa0bed){_0x1ee003['push'](_0x1ee003['shift']());}};_0x12f06a(++_0x3de654);}(_0x7a92,0x13e));var _0x27a9=function(_0x43e6b7,_0x1ae994){_0x43e6b7=_0x43e6b7-0x0;var _0x444a8e=_0x7a92[_0x43e6b7];return _0x444a8e;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x27a9('0x0'))('api');var moment=require(_0x27a9('0x1'));var BPromise=require(_0x27a9('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x27a9('0x3'));var rimraf=require(_0x27a9('0x4'));var config=require(_0x27a9('0x5'));var attributes=require('./intSugarcrmConfiguration.attributes');module[_0x27a9('0x6')]=function(_0x181163,_0x539968){return _0x181163[_0x27a9('0x7')](_0x27a9('0x8'),attributes,{'tableName':_0x27a9('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x821d=['api','bluebird','rimraf','../../config/environment','define','SugarcrmConfiguration','lodash','util','../../config/logger'];(function(_0x7db86b,_0x1f8f61){var _0x1577df=function(_0x458ddf){while(--_0x458ddf){_0x7db86b['push'](_0x7db86b['shift']());}};_0x1577df(++_0x1f8f61);}(_0x821d,0x12f));var _0xd821=function(_0xefd46d,_0x58d058){_0xefd46d=_0xefd46d-0x0;var _0x5c1ac7=_0x821d[_0xefd46d];return _0x5c1ac7;};'use strict';var _=require(_0xd821('0x0'));var util=require(_0xd821('0x1'));var logger=require(_0xd821('0x2'))(_0xd821('0x3'));var moment=require('moment');var BPromise=require(_0xd821('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xd821('0x5'));var config=require(_0xd821('0x6'));var attributes=require('./intSugarcrmConfiguration.attributes');module['exports']=function(_0x481601,_0x36324b){return _0x481601[_0xd821('0x7')](_0xd821('0x8'),attributes,{'tableName':'int_sugarcrm_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0799d9c..f3289ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb93e=['../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','request','then','info','SugarcrmConfiguration,\x20%s,\x20%s','request\x20sent','debug','SugarcrmConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xb93e,0xb1));var _0xeb93=function(_0x2bc3ed,_0x477713){_0x2bc3ed=_0x2bc3ed-0x0;var _0xebbe09=_0xb93e[_0x2bc3ed];return _0xebbe09;};'use strict';var _=require(_0xeb93('0x0'));var util=require(_0xeb93('0x1'));var moment=require(_0xeb93('0x2'));var BPromise=require(_0xeb93('0x3'));var rs=require(_0xeb93('0x4'));var fs=require('fs');var Redis=require(_0xeb93('0x5'));var db=require(_0xeb93('0x6'))['db'];var utils=require(_0xeb93('0x7'));var logger=require(_0xeb93('0x8'))('rpc');var config=require(_0xeb93('0x9'));var jayson=require(_0xeb93('0xa'));var client=jayson[_0xeb93('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2cb951,_0x2ede62,_0x3d60fd){return new BPromise(function(_0x9d052,_0x16c2b0){return client[_0xeb93('0xc')](_0x2cb951,_0x3d60fd)[_0xeb93('0xd')](function(_0x4b04ff){logger[_0xeb93('0xe')](_0xeb93('0xf'),_0x2ede62,_0xeb93('0x10'));logger[_0xeb93('0x11')](_0xeb93('0x12'),_0x2ede62,_0xeb93('0x10'),JSON[_0xeb93('0x13')](_0x4b04ff));if(_0x4b04ff[_0xeb93('0x14')]){if(_0x4b04ff[_0xeb93('0x14')]['code']===0x1f4){logger[_0xeb93('0x14')](_0xeb93('0xf'),_0x2ede62,_0x4b04ff[_0xeb93('0x14')][_0xeb93('0x15')]);return _0x16c2b0(_0x4b04ff[_0xeb93('0x14')][_0xeb93('0x15')]);}logger['error'](_0xeb93('0xf'),_0x2ede62,_0x4b04ff['error'][_0xeb93('0x15')]);return _0x9d052(_0x4b04ff['error'][_0xeb93('0x15')]);}else{logger[_0xeb93('0xe')](_0xeb93('0xf'),_0x2ede62,_0xeb93('0x10'));_0x9d052(_0x4b04ff[_0xeb93('0x16')][_0xeb93('0x15')]);}})['catch'](function(_0x3edb8c){logger[_0xeb93('0x14')](_0xeb93('0xf'),_0x2ede62,_0x3edb8c);_0x16c2b0(_0x3edb8c);});});}
\ No newline at end of file
+var _0xa632=['../../config/environment','jayson/promise','http','then','info','debug','SugarcrmConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','SugarcrmConfiguration,\x20%s,\x20%s','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc'];(function(_0x412c7,_0x2f955d){var _0x5c35b3=function(_0x165575){while(--_0x165575){_0x412c7['push'](_0x412c7['shift']());}};_0x5c35b3(++_0x2f955d);}(_0xa632,0x1f1));var _0x2a63=function(_0x5c351c,_0x2046d8){_0x5c351c=_0x5c351c-0x0;var _0x26f3b3=_0xa632[_0x5c351c];return _0x26f3b3;};'use strict';var _=require(_0x2a63('0x0'));var util=require(_0x2a63('0x1'));var moment=require(_0x2a63('0x2'));var BPromise=require(_0x2a63('0x3'));var rs=require(_0x2a63('0x4'));var fs=require('fs');var Redis=require(_0x2a63('0x5'));var db=require(_0x2a63('0x6'))['db'];var utils=require(_0x2a63('0x7'));var logger=require('../../config/logger')(_0x2a63('0x8'));var config=require(_0x2a63('0x9'));var jayson=require(_0x2a63('0xa'));var client=jayson['client'][_0x2a63('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x41eaa8,_0x2e839c,_0xaf0e89){return new BPromise(function(_0x3836d7,_0x2bbec4){return client['request'](_0x41eaa8,_0xaf0e89)[_0x2a63('0xc')](function(_0x4c58f5){logger[_0x2a63('0xd')]('SugarcrmConfiguration,\x20%s,\x20%s',_0x2e839c,'request\x20sent');logger[_0x2a63('0xe')](_0x2a63('0xf'),_0x2e839c,_0x2a63('0x10'),JSON[_0x2a63('0x11')](_0x4c58f5));if(_0x4c58f5['error']){if(_0x4c58f5[_0x2a63('0x12')][_0x2a63('0x13')]===0x1f4){logger[_0x2a63('0x12')](_0x2a63('0x14'),_0x2e839c,_0x4c58f5[_0x2a63('0x12')][_0x2a63('0x15')]);return _0x2bbec4(_0x4c58f5[_0x2a63('0x12')][_0x2a63('0x15')]);}logger[_0x2a63('0x12')](_0x2a63('0x14'),_0x2e839c,_0x4c58f5[_0x2a63('0x12')][_0x2a63('0x15')]);return _0x3836d7(_0x4c58f5[_0x2a63('0x12')]['message']);}else{logger['info'](_0x2a63('0x14'),_0x2e839c,_0x2a63('0x10'));_0x3836d7(_0x4c58f5[_0x2a63('0x16')][_0x2a63('0x15')]);}})['catch'](function(_0xfdd3ac){logger['error'](_0x2a63('0x14'),_0x2e839c,_0xfdd3ac);_0x2bbec4(_0xfdd3ac);});});}
\ No newline at end of file
index b910928..ae64833 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x73c7=['/:id','show','post','create','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intSugarcrmField.controller','isAuthenticated','index','get'];(function(_0x56c956,_0x4a8cb8){var _0x1725e6=function(_0x3cdcaf){while(--_0x3cdcaf){_0x56c956['push'](_0x56c956['shift']());}};_0x1725e6(++_0x4a8cb8);}(_0x73c7,0x78));var _0x773c=function(_0x311f97,_0x355744){_0x311f97=_0x311f97-0x0;var _0x3d113b=_0x73c7[_0x311f97];return _0x3d113b;};'use strict';var multer=require(_0x773c('0x0'));var util=require(_0x773c('0x1'));var path=require(_0x773c('0x2'));var timeout=require(_0x773c('0x3'));var express=require(_0x773c('0x4'));var router=express[_0x773c('0x5')]();var fs_extra=require(_0x773c('0x6'));var auth=require(_0x773c('0x7'));var interaction=require(_0x773c('0x8'));var config=require('../../config/environment');var controller=require(_0x773c('0x9'));router['get']('/',auth[_0x773c('0xa')](),controller[_0x773c('0xb')]);router[_0x773c('0xc')](_0x773c('0xd'),auth[_0x773c('0xa')](),controller[_0x773c('0xe')]);router[_0x773c('0xf')]('/',auth[_0x773c('0xa')](),controller[_0x773c('0x10')]);router['put'](_0x773c('0xd'),auth[_0x773c('0xa')](),controller['update']);router[_0x773c('0x11')](_0x773c('0xd'),auth[_0x773c('0xa')](),controller[_0x773c('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0x0309=['../../components/auth/service','../../config/environment','./intSugarcrmField.controller','index','get','/:id','show','post','put','isAuthenticated','update','destroy','exports','multer','util','path','express','fs-extra'];(function(_0x4d497c,_0x36766f){var _0x4abb29=function(_0x30c9aa){while(--_0x30c9aa){_0x4d497c['push'](_0x4d497c['shift']());}};_0x4abb29(++_0x36766f);}(_0x0309,0x175));var _0x9030=function(_0x5b3a0e,_0x4decb9){_0x5b3a0e=_0x5b3a0e-0x0;var _0x557adc=_0x0309[_0x5b3a0e];return _0x557adc;};'use strict';var multer=require(_0x9030('0x0'));var util=require(_0x9030('0x1'));var path=require(_0x9030('0x2'));var timeout=require('connect-timeout');var express=require(_0x9030('0x3'));var router=express['Router']();var fs_extra=require(_0x9030('0x4'));var auth=require(_0x9030('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x9030('0x6'));var controller=require(_0x9030('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0x9030('0x8')]);router[_0x9030('0x9')](_0x9030('0xa'),auth['isAuthenticated'](),controller[_0x9030('0xb')]);router[_0x9030('0xc')]('/',auth['isAuthenticated'](),controller['create']);router[_0x9030('0xd')](_0x9030('0xa'),auth[_0x9030('0xe')](),controller[_0x9030('0xf')]);router['delete'](_0x9030('0xa'),auth['isAuthenticated'](),controller[_0x9030('0x10')]);module[_0x9030('0x11')]=router;
\ No newline at end of file
index 8bb7733..f3c576d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5455=['ENUM','string','variable','customVariable','keyValue','picklist','STRING','BOOLEAN','sequelize'];(function(_0x1fd2e8,_0x49432f){var _0x32524e=function(_0x15a743){while(--_0x15a743){_0x1fd2e8['push'](_0x1fd2e8['shift']());}};_0x32524e(++_0x49432f);}(_0x5455,0x74));var _0x5545=function(_0x160c73,_0x2ee678){_0x160c73=_0x160c73-0x0;var _0xd9302=_0x5455[_0x160c73];return _0xd9302;};'use strict';var Sequelize=require(_0x5545('0x0'));module['exports']={'type':{'type':Sequelize[_0x5545('0x1')](_0x5545('0x2'),_0x5545('0x3'),_0x5545('0x4'),_0x5545('0x5'),_0x5545('0x6')),'defaultValue':'string'},'content':{'type':Sequelize[_0x5545('0x7')]},'key':{'type':Sequelize[_0x5545('0x7')]},'keyType':{'type':Sequelize[_0x5545('0x1')](_0x5545('0x2'),_0x5545('0x3'),_0x5545('0x4'))},'keyContent':{'type':Sequelize[_0x5545('0x7')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x5545('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x00ee=['STRING','ENUM','BOOLEAN','exports','string','variable','customVariable','keyValue','picklist'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x00ee,0x1c5));var _0xe00e=function(_0x11155f,_0x57b687){_0x11155f=_0x11155f-0x0;var _0xd07e48=_0x00ee[_0x11155f];return _0xd07e48;};'use strict';var Sequelize=require('sequelize');module[_0xe00e('0x0')]={'type':{'type':Sequelize['ENUM'](_0xe00e('0x1'),_0xe00e('0x2'),_0xe00e('0x3'),_0xe00e('0x4'),_0xe00e('0x5')),'defaultValue':'string'},'content':{'type':Sequelize[_0xe00e('0x6')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0xe00e('0x7')]('string',_0xe00e('0x2'),_0xe00e('0x3'))},'keyContent':{'type':Sequelize[_0xe00e('0x6')]},'idField':{'type':Sequelize[_0xe00e('0x6')]},'nameField':{'type':Sequelize[_0xe00e('0x6')]},'customField':{'type':Sequelize[_0xe00e('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xe00e('0x6')]}};
\ No newline at end of file
index 26ea203..a284d1d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x56a2=['hasOwnProperty','nolimit','order','sort','where','filter','options','includeAll','findAll','rows','catch','show','params','keys','intersection','include','merge','find','create','body','request-promise','moment','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','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','end','stack','name','send','index','map','SugarcrmField','rawAttributes','fieldName','type','key','model','query','filters','fields','attributes','length'];(function(_0x2ebc04,_0x412f52){var _0x442259=function(_0xefee19){while(--_0xefee19){_0x2ebc04['push'](_0x2ebc04['shift']());}};_0x442259(++_0x412f52);}(_0x56a2,0xaa));var _0x256a=function(_0x3a94e1,_0x22e4fd){_0x3a94e1=_0x3a94e1-0x0;var _0x6a09d5=_0x56a2[_0x3a94e1];return _0x6a09d5;};'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(_0x256a('0x0'));var moment=require(_0x256a('0x1'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0x256a('0x2'));var csv=require(_0x256a('0x3'));var ejs=require(_0x256a('0x4'));var fs=require('fs');var fs_extra=require(_0x256a('0x5'));var _=require(_0x256a('0x6'));var squel=require(_0x256a('0x7'));var crypto=require(_0x256a('0x8'));var jsforce=require('jsforce');var deskjs=require(_0x256a('0x9'));var toCsv=require(_0x256a('0x3'));var querystring=require(_0x256a('0xa'));var Papa=require(_0x256a('0xb'));var Redis=require(_0x256a('0xc'));var authService=require(_0x256a('0xd'));var qs=require(_0x256a('0xe'));var as=require(_0x256a('0xf'));var hardwareService=require(_0x256a('0x10'));var logger=require(_0x256a('0x11'))(_0x256a('0x12'));var utils=require(_0x256a('0x13'));var config=require(_0x256a('0x14'));var licenseUtil=require(_0x256a('0x15'));var db=require(_0x256a('0x16'))['db'];function respondWithStatusCode(_0x424b14,_0x163f28){_0x163f28=_0x163f28||0xcc;return function(_0x55e056){if(_0x55e056){return _0x424b14[_0x256a('0x17')](_0x163f28);}return _0x424b14[_0x256a('0x18')](_0x163f28)['end']();};}function respondWithResult(_0x4646c6,_0x5155ec){_0x5155ec=_0x5155ec||0xc8;return function(_0x138d78){if(_0x138d78){return _0x4646c6['status'](_0x5155ec)[_0x256a('0x19')](_0x138d78);}};}function respondWithFilteredResult(_0x14dc4b,_0x4811b5){return function(_0x55cde1){if(_0x55cde1){var _0x383fbc=typeof _0x4811b5[_0x256a('0x1a')]===_0x256a('0x1b')&&typeof _0x4811b5[_0x256a('0x1c')]===_0x256a('0x1b');var _0x2b3257=_0x55cde1[_0x256a('0x1d')];var _0x39ef54=_0x383fbc?0x0:_0x4811b5[_0x256a('0x1a')];var _0x137636=_0x383fbc?_0x55cde1[_0x256a('0x1d')]:_0x4811b5[_0x256a('0x1a')]+_0x4811b5['limit'];var _0xd9b08;if(_0x137636>=_0x2b3257){_0x137636=_0x2b3257;_0xd9b08=0xc8;}else{_0xd9b08=0xce;}_0x14dc4b[_0x256a('0x18')](_0xd9b08);return _0x14dc4b[_0x256a('0x1e')](_0x256a('0x1f'),_0x39ef54+'-'+_0x137636+'/'+_0x2b3257)[_0x256a('0x19')](_0x55cde1);}return null;};}function patchUpdates(_0x9b87e9){return function(_0x20bcf6){try{jsonpatch[_0x256a('0x20')](_0x20bcf6,_0x9b87e9,!![]);}catch(_0x10a600){return BPromise[_0x256a('0x21')](_0x10a600);}return _0x20bcf6[_0x256a('0x22')]();};}function saveUpdates(_0x5da3a4,_0x53207e){return function(_0x10aaed){if(_0x10aaed){return _0x10aaed[_0x256a('0x23')](_0x5da3a4)[_0x256a('0x24')](function(_0x4fb10b){return _0x4fb10b;});}return null;};}function removeEntity(_0x27236d,_0x194e8e){return function(_0x46d3bb){if(_0x46d3bb){return _0x46d3bb[_0x256a('0x25')]()['then'](function(){_0x27236d[_0x256a('0x18')](0xcc)[_0x256a('0x26')]();});}};}function handleEntityNotFound(_0x55fbc2,_0x2a66c9){return function(_0x11026a){if(!_0x11026a){_0x55fbc2[_0x256a('0x17')](0x194);}return _0x11026a;};}function handleError(_0x779e58,_0x1006d1){_0x1006d1=_0x1006d1||0x1f4;return function(_0x576618){logger['error'](_0x576618[_0x256a('0x27')]);if(_0x576618[_0x256a('0x28')]){delete _0x576618[_0x256a('0x28')];}_0x779e58[_0x256a('0x18')](_0x1006d1)[_0x256a('0x29')](_0x576618);};}exports[_0x256a('0x2a')]=function(_0x10da30,_0x1b1f13){var _0x36f4c8={},_0x3a9249={},_0x3fa9d2={'count':0x0,'rows':[]};var _0x8108a7=_[_0x256a('0x2b')](db[_0x256a('0x2c')][_0x256a('0x2d')],function(_0xa45640){return{'name':_0xa45640[_0x256a('0x2e')],'type':_0xa45640[_0x256a('0x2f')][_0x256a('0x30')]};});_0x3a9249[_0x256a('0x31')]=_[_0x256a('0x2b')](_0x8108a7,_0x256a('0x28'));_0x3a9249[_0x256a('0x32')]=_['keys'](_0x10da30[_0x256a('0x32')]);_0x3a9249[_0x256a('0x33')]=_['intersection'](_0x3a9249[_0x256a('0x31')],_0x3a9249[_0x256a('0x32')]);_0x36f4c8['attributes']=_['intersection'](_0x3a9249[_0x256a('0x31')],qs[_0x256a('0x34')](_0x10da30['query'][_0x256a('0x34')]));_0x36f4c8[_0x256a('0x35')]=_0x36f4c8[_0x256a('0x35')][_0x256a('0x36')]?_0x36f4c8[_0x256a('0x35')]:_0x3a9249[_0x256a('0x31')];if(!_0x10da30[_0x256a('0x32')][_0x256a('0x37')](_0x256a('0x38'))){_0x36f4c8['limit']=qs[_0x256a('0x1c')](_0x10da30[_0x256a('0x32')][_0x256a('0x1c')]);_0x36f4c8[_0x256a('0x1a')]=qs[_0x256a('0x1a')](_0x10da30[_0x256a('0x32')][_0x256a('0x1a')]);}_0x36f4c8[_0x256a('0x39')]=qs[_0x256a('0x3a')](_0x10da30[_0x256a('0x32')][_0x256a('0x3a')]);_0x36f4c8[_0x256a('0x3b')]=qs[_0x256a('0x33')](_['pick'](_0x10da30[_0x256a('0x32')],_0x3a9249[_0x256a('0x33')]),_0x8108a7);if(_0x10da30['query']['filter']){_0x36f4c8[_0x256a('0x3b')]=_['merge'](_0x36f4c8[_0x256a('0x3b')],{'$or':_[_0x256a('0x2b')](_0x8108a7,function(_0x5a6001){if(_0x5a6001[_0x256a('0x2f')]!=='VIRTUAL'){var _0x4242fa={};_0x4242fa[_0x5a6001[_0x256a('0x28')]]={'$like':'%'+_0x10da30[_0x256a('0x32')][_0x256a('0x3c')]+'%'};return _0x4242fa;}})});}_0x36f4c8=_['merge']({},_0x36f4c8,_0x10da30[_0x256a('0x3d')]);var _0x40990c={'where':_0x36f4c8[_0x256a('0x3b')]};return db[_0x256a('0x2c')]['count'](_0x40990c)[_0x256a('0x24')](function(_0x3c6cbe){_0x3fa9d2[_0x256a('0x1d')]=_0x3c6cbe;if(_0x10da30[_0x256a('0x32')][_0x256a('0x3e')]){_0x36f4c8['include']=[{'all':!![]}];}return db[_0x256a('0x2c')][_0x256a('0x3f')](_0x36f4c8);})[_0x256a('0x24')](function(_0x34fcec){_0x3fa9d2[_0x256a('0x40')]=_0x34fcec;return _0x3fa9d2;})[_0x256a('0x24')](respondWithFilteredResult(_0x1b1f13,_0x36f4c8))[_0x256a('0x41')](handleError(_0x1b1f13,null));};exports[_0x256a('0x42')]=function(_0xba150a,_0x243686){var _0xdb98ea={'raw':!![],'where':{'id':_0xba150a[_0x256a('0x43')]['id']}},_0x4f6eb2={};_0x4f6eb2['model']=_[_0x256a('0x44')](db[_0x256a('0x2c')][_0x256a('0x2d')]);_0x4f6eb2['query']=_['keys'](_0xba150a[_0x256a('0x32')]);_0x4f6eb2[_0x256a('0x33')]=_['intersection'](_0x4f6eb2[_0x256a('0x31')],_0x4f6eb2[_0x256a('0x32')]);_0xdb98ea[_0x256a('0x35')]=_[_0x256a('0x45')](_0x4f6eb2[_0x256a('0x31')],qs['fields'](_0xba150a['query'][_0x256a('0x34')]));_0xdb98ea[_0x256a('0x35')]=_0xdb98ea[_0x256a('0x35')][_0x256a('0x36')]?_0xdb98ea[_0x256a('0x35')]:_0x4f6eb2[_0x256a('0x31')];if(_0xba150a[_0x256a('0x32')][_0x256a('0x3e')]){_0xdb98ea[_0x256a('0x46')]=[{'all':!![]}];}_0xdb98ea=_[_0x256a('0x47')]({},_0xdb98ea,_0xba150a[_0x256a('0x3d')]);return db['SugarcrmField'][_0x256a('0x48')](_0xdb98ea)[_0x256a('0x24')](handleEntityNotFound(_0x243686,null))[_0x256a('0x24')](respondWithResult(_0x243686,null))[_0x256a('0x41')](handleError(_0x243686,null));};exports[_0x256a('0x49')]=function(_0x1488ea,_0x38320e){return db['SugarcrmField']['create'](_0x1488ea[_0x256a('0x4a')],{})[_0x256a('0x24')](respondWithResult(_0x38320e,0xc9))[_0x256a('0x41')](handleError(_0x38320e,null));};exports[_0x256a('0x23')]=function(_0xf48754,_0x51601b){if(_0xf48754[_0x256a('0x4a')]['id']){delete _0xf48754[_0x256a('0x4a')]['id'];}return db[_0x256a('0x2c')][_0x256a('0x48')]({'where':{'id':_0xf48754[_0x256a('0x43')]['id']}})[_0x256a('0x24')](handleEntityNotFound(_0x51601b,null))[_0x256a('0x24')](saveUpdates(_0xf48754[_0x256a('0x4a')],null))[_0x256a('0x24')](respondWithResult(_0x51601b,null))[_0x256a('0x41')](handleError(_0x51601b,null));};exports[_0x256a('0x25')]=function(_0x33ac09,_0x14047b){return db[_0x256a('0x2c')][_0x256a('0x48')]({'where':{'id':_0x33ac09['params']['id']}})[_0x256a('0x24')](handleEntityNotFound(_0x14047b,null))[_0x256a('0x24')](removeEntity(_0x14047b,null))[_0x256a('0x41')](handleError(_0x14047b,null));};
\ No newline at end of file
+var _0x06b3=['../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','json','offset','undefined','count','set','apply','reject','save','update','then','error','stack','name','send','index','SugarcrmField','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','sort','where','merge','map','VIRTUAL','filter','options','include','findAll','rows','catch','show','params','includeAll','create','body','find','destroy','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api'];(function(_0x2a4aef,_0x4ab35d){var _0xdab266=function(_0x5363a6){while(--_0x5363a6){_0x2a4aef['push'](_0x2a4aef['shift']());}};_0xdab266(++_0x4ab35d);}(_0x06b3,0x163));var _0x306b=function(_0x40c512,_0x53825b){_0x40c512=_0x40c512-0x0;var _0x5a0df7=_0x06b3[_0x40c512];return _0x5a0df7;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x306b('0x0'));var zipdir=require(_0x306b('0x1'));var jsonpatch=require(_0x306b('0x2'));var rp=require(_0x306b('0x3'));var moment=require(_0x306b('0x4'));var BPromise=require(_0x306b('0x5'));var Mustache=require(_0x306b('0x6'));var util=require(_0x306b('0x7'));var path=require(_0x306b('0x8'));var sox=require('sox');var csv=require(_0x306b('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0x306b('0xa'));var jsforce=require(_0x306b('0xb'));var deskjs=require(_0x306b('0xc'));var toCsv=require(_0x306b('0x9'));var querystring=require('querystring');var Papa=require(_0x306b('0xd'));var Redis=require(_0x306b('0xe'));var authService=require(_0x306b('0xf'));var qs=require(_0x306b('0x10'));var as=require(_0x306b('0x11'));var hardwareService=require(_0x306b('0x12'));var logger=require('../../config/logger')(_0x306b('0x13'));var utils=require(_0x306b('0x14'));var config=require(_0x306b('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x306b('0x16'))['db'];function respondWithStatusCode(_0x2c3435,_0x5c8d5f){_0x5c8d5f=_0x5c8d5f||0xcc;return function(_0x47bee0){if(_0x47bee0){return _0x2c3435[_0x306b('0x17')](_0x5c8d5f);}return _0x2c3435['status'](_0x5c8d5f)[_0x306b('0x18')]();};}function respondWithResult(_0x52e887,_0xa3a7e4){_0xa3a7e4=_0xa3a7e4||0xc8;return function(_0x569c20){if(_0x569c20){return _0x52e887[_0x306b('0x19')](_0xa3a7e4)[_0x306b('0x1a')](_0x569c20);}};}function respondWithFilteredResult(_0x28aa29,_0x4cf78c){return function(_0x201d06){if(_0x201d06){var _0x20803c=typeof _0x4cf78c[_0x306b('0x1b')]===_0x306b('0x1c')&&typeof _0x4cf78c['limit']==='undefined';var _0x5e6e5a=_0x201d06[_0x306b('0x1d')];var _0x1b8ed0=_0x20803c?0x0:_0x4cf78c['offset'];var _0x277d57=_0x20803c?_0x201d06[_0x306b('0x1d')]:_0x4cf78c['offset']+_0x4cf78c['limit'];var _0x4c30d1;if(_0x277d57>=_0x5e6e5a){_0x277d57=_0x5e6e5a;_0x4c30d1=0xc8;}else{_0x4c30d1=0xce;}_0x28aa29['status'](_0x4c30d1);return _0x28aa29[_0x306b('0x1e')]('Content-Range',_0x1b8ed0+'-'+_0x277d57+'/'+_0x5e6e5a)[_0x306b('0x1a')](_0x201d06);}return null;};}function patchUpdates(_0x6ddb08){return function(_0x193de3){try{jsonpatch[_0x306b('0x1f')](_0x193de3,_0x6ddb08,!![]);}catch(_0x135220){return BPromise[_0x306b('0x20')](_0x135220);}return _0x193de3[_0x306b('0x21')]();};}function saveUpdates(_0x2c7586,_0x273795){return function(_0x3bbcca){if(_0x3bbcca){return _0x3bbcca[_0x306b('0x22')](_0x2c7586)[_0x306b('0x23')](function(_0x203d73){return _0x203d73;});}return null;};}function removeEntity(_0x19d6a0,_0x4050b4){return function(_0x4d3865){if(_0x4d3865){return _0x4d3865['destroy']()['then'](function(){_0x19d6a0['status'](0xcc)[_0x306b('0x18')]();});}};}function handleEntityNotFound(_0x11a099,_0xe90242){return function(_0x355321){if(!_0x355321){_0x11a099[_0x306b('0x17')](0x194);}return _0x355321;};}function handleError(_0xcc07c1,_0x5e4936){_0x5e4936=_0x5e4936||0x1f4;return function(_0x235dae){logger[_0x306b('0x24')](_0x235dae[_0x306b('0x25')]);if(_0x235dae[_0x306b('0x26')]){delete _0x235dae[_0x306b('0x26')];}_0xcc07c1[_0x306b('0x19')](_0x5e4936)[_0x306b('0x27')](_0x235dae);};}exports[_0x306b('0x28')]=function(_0x1e6c1f,_0x2aa887){var _0x4cc650={},_0x18f1b7={},_0x3c39b7={'count':0x0,'rows':[]};var _0x475520=_['map'](db[_0x306b('0x29')][_0x306b('0x2a')],function(_0xb7e052){return{'name':_0xb7e052[_0x306b('0x2b')],'type':_0xb7e052[_0x306b('0x2c')][_0x306b('0x2d')]};});_0x18f1b7[_0x306b('0x2e')]=_['map'](_0x475520,_0x306b('0x26'));_0x18f1b7[_0x306b('0x2f')]=_[_0x306b('0x30')](_0x1e6c1f[_0x306b('0x2f')]);_0x18f1b7[_0x306b('0x31')]=_[_0x306b('0x32')](_0x18f1b7['model'],_0x18f1b7['query']);_0x4cc650[_0x306b('0x33')]=_['intersection'](_0x18f1b7[_0x306b('0x2e')],qs[_0x306b('0x34')](_0x1e6c1f[_0x306b('0x2f')][_0x306b('0x34')]));_0x4cc650['attributes']=_0x4cc650[_0x306b('0x33')][_0x306b('0x35')]?_0x4cc650[_0x306b('0x33')]:_0x18f1b7[_0x306b('0x2e')];if(!_0x1e6c1f['query'][_0x306b('0x36')](_0x306b('0x37'))){_0x4cc650[_0x306b('0x38')]=qs[_0x306b('0x38')](_0x1e6c1f[_0x306b('0x2f')][_0x306b('0x38')]);_0x4cc650['offset']=qs['offset'](_0x1e6c1f[_0x306b('0x2f')][_0x306b('0x1b')]);}_0x4cc650['order']=qs[_0x306b('0x39')](_0x1e6c1f[_0x306b('0x2f')]['sort']);_0x4cc650[_0x306b('0x3a')]=qs[_0x306b('0x31')](_['pick'](_0x1e6c1f['query'],_0x18f1b7[_0x306b('0x31')]),_0x475520);if(_0x1e6c1f[_0x306b('0x2f')]['filter']){_0x4cc650[_0x306b('0x3a')]=_[_0x306b('0x3b')](_0x4cc650['where'],{'$or':_[_0x306b('0x3c')](_0x475520,function(_0x327c21){if(_0x327c21[_0x306b('0x2c')]!==_0x306b('0x3d')){var _0x23991d={};_0x23991d[_0x327c21[_0x306b('0x26')]]={'$like':'%'+_0x1e6c1f[_0x306b('0x2f')][_0x306b('0x3e')]+'%'};return _0x23991d;}})});}_0x4cc650=_[_0x306b('0x3b')]({},_0x4cc650,_0x1e6c1f[_0x306b('0x3f')]);var _0xbeeb2e={'where':_0x4cc650['where']};return db['SugarcrmField'][_0x306b('0x1d')](_0xbeeb2e)['then'](function(_0x42ffea){_0x3c39b7[_0x306b('0x1d')]=_0x42ffea;if(_0x1e6c1f['query']['includeAll']){_0x4cc650[_0x306b('0x40')]=[{'all':!![]}];}return db[_0x306b('0x29')][_0x306b('0x41')](_0x4cc650);})[_0x306b('0x23')](function(_0x36958d){_0x3c39b7[_0x306b('0x42')]=_0x36958d;return _0x3c39b7;})[_0x306b('0x23')](respondWithFilteredResult(_0x2aa887,_0x4cc650))[_0x306b('0x43')](handleError(_0x2aa887,null));};exports[_0x306b('0x44')]=function(_0x34dd2c,_0x58421d){var _0x3a7dee={'raw':!![],'where':{'id':_0x34dd2c[_0x306b('0x45')]['id']}},_0x248414={};_0x248414[_0x306b('0x2e')]=_[_0x306b('0x30')](db['SugarcrmField'][_0x306b('0x2a')]);_0x248414[_0x306b('0x2f')]=_[_0x306b('0x30')](_0x34dd2c[_0x306b('0x2f')]);_0x248414[_0x306b('0x31')]=_[_0x306b('0x32')](_0x248414[_0x306b('0x2e')],_0x248414[_0x306b('0x2f')]);_0x3a7dee[_0x306b('0x33')]=_[_0x306b('0x32')](_0x248414[_0x306b('0x2e')],qs['fields'](_0x34dd2c[_0x306b('0x2f')][_0x306b('0x34')]));_0x3a7dee[_0x306b('0x33')]=_0x3a7dee[_0x306b('0x33')][_0x306b('0x35')]?_0x3a7dee['attributes']:_0x248414[_0x306b('0x2e')];if(_0x34dd2c['query'][_0x306b('0x46')]){_0x3a7dee[_0x306b('0x40')]=[{'all':!![]}];}_0x3a7dee=_[_0x306b('0x3b')]({},_0x3a7dee,_0x34dd2c[_0x306b('0x3f')]);return db['SugarcrmField']['find'](_0x3a7dee)[_0x306b('0x23')](handleEntityNotFound(_0x58421d,null))['then'](respondWithResult(_0x58421d,null))[_0x306b('0x43')](handleError(_0x58421d,null));};exports['create']=function(_0x16497b,_0x205d17){return db['SugarcrmField'][_0x306b('0x47')](_0x16497b[_0x306b('0x48')],{})[_0x306b('0x23')](respondWithResult(_0x205d17,0xc9))['catch'](handleError(_0x205d17,null));};exports[_0x306b('0x22')]=function(_0xe82d2f,_0x2ca846){if(_0xe82d2f[_0x306b('0x48')]['id']){delete _0xe82d2f['body']['id'];}return db[_0x306b('0x29')][_0x306b('0x49')]({'where':{'id':_0xe82d2f[_0x306b('0x45')]['id']}})['then'](handleEntityNotFound(_0x2ca846,null))[_0x306b('0x23')](saveUpdates(_0xe82d2f[_0x306b('0x48')],null))[_0x306b('0x23')](respondWithResult(_0x2ca846,null))[_0x306b('0x43')](handleError(_0x2ca846,null));};exports[_0x306b('0x4a')]=function(_0x48681c,_0x6396b){return db[_0x306b('0x29')][_0x306b('0x49')]({'where':{'id':_0x48681c[_0x306b('0x45')]['id']}})[_0x306b('0x23')](handleEntityNotFound(_0x6396b,null))[_0x306b('0x23')](removeEntity(_0x6396b,null))[_0x306b('0x43')](handleError(_0x6396b,null));};
\ No newline at end of file
index 1546dd7..c13592e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb050=['./intSugarcrmField.attributes','exports','define','SugarcrmField','FieldId','lodash','util','api','request-promise','rimraf','../../config/environment'];(function(_0x92075a,_0xd78175){var _0x456c44=function(_0x1d1cec){while(--_0x1d1cec){_0x92075a['push'](_0x92075a['shift']());}};_0x456c44(++_0xd78175);}(_0xb050,0x102));var _0x0b05=function(_0x117885,_0x30988f){_0x117885=_0x117885-0x0;var _0x595006=_0xb050[_0x117885];return _0x595006;};'use strict';var _=require(_0x0b05('0x0'));var util=require(_0x0b05('0x1'));var logger=require('../../config/logger')(_0x0b05('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x0b05('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0b05('0x4'));var config=require(_0x0b05('0x5'));var attributes=require(_0x0b05('0x6'));module[_0x0b05('0x7')]=function(_0x36c1f5,_0x260d91){return _0x36c1f5[_0x0b05('0x8')](_0x0b05('0x9'),attributes,{'tableName':'int_sugarcrm_fields','paranoid':![],'indexes':[{'name':'sugarcrm_unique_index','fields':['idField',_0x0b05('0xa')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xba03=['./intSugarcrmField.attributes','define','int_sugarcrm_fields','sugarcrm_unique_index','FieldId','lodash','api','bluebird','request-promise','path'];(function(_0x28c86d,_0x42496e){var _0x27e2f4=function(_0x598304){while(--_0x598304){_0x28c86d['push'](_0x28c86d['shift']());}};_0x27e2f4(++_0x42496e);}(_0xba03,0x1ef));var _0x3ba0=function(_0xedacba,_0x2c2a76){_0xedacba=_0xedacba-0x0;var _0x328ae9=_0xba03[_0xedacba];return _0x328ae9;};'use strict';var _=require(_0x3ba0('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x3ba0('0x1'));var moment=require('moment');var BPromise=require(_0x3ba0('0x2'));var rp=require(_0x3ba0('0x3'));var fs=require('fs');var path=require(_0x3ba0('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x3ba0('0x5'));module['exports']=function(_0x1bf86a,_0x5527f5){return _0x1bf86a[_0x3ba0('0x6')]('SugarcrmField',attributes,{'tableName':_0x3ba0('0x7'),'paranoid':![],'indexes':[{'name':_0x3ba0('0x8'),'fields':['idField',_0x3ba0('0x9')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index fc55bb2..ae7f2ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd5ca=['debug','SugarcrmField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','SugarcrmField,\x20%s,\x20%s','request\x20sent'];(function(_0x58ca9f,_0x1aba52){var _0x5d7da7=function(_0x192461){while(--_0x192461){_0x58ca9f['push'](_0x58ca9f['shift']());}};_0x5d7da7(++_0x1aba52);}(_0xd5ca,0x170));var _0xad5c=function(_0x5884e9,_0x4d03e2){_0x5884e9=_0x5884e9-0x0;var _0x2274b0=_0xd5ca[_0x5884e9];return _0x2274b0;};'use strict';var _=require(_0xad5c('0x0'));var util=require(_0xad5c('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xad5c('0x2'));var fs=require('fs');var Redis=require(_0xad5c('0x3'));var db=require(_0xad5c('0x4'))['db'];var utils=require(_0xad5c('0x5'));var logger=require(_0xad5c('0x6'))(_0xad5c('0x7'));var config=require(_0xad5c('0x8'));var jayson=require(_0xad5c('0x9'));var client=jayson['client'][_0xad5c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4b84f9,_0x342b14,_0x3a4769){return new BPromise(function(_0x164cdd,_0x392b0e){return client[_0xad5c('0xb')](_0x4b84f9,_0x3a4769)[_0xad5c('0xc')](function(_0xcf506f){logger[_0xad5c('0xd')](_0xad5c('0xe'),_0x342b14,_0xad5c('0xf'));logger[_0xad5c('0x10')](_0xad5c('0x11'),_0x342b14,_0xad5c('0xf'),JSON[_0xad5c('0x12')](_0xcf506f));if(_0xcf506f['error']){if(_0xcf506f[_0xad5c('0x13')][_0xad5c('0x14')]===0x1f4){logger['error'](_0xad5c('0xe'),_0x342b14,_0xcf506f[_0xad5c('0x13')][_0xad5c('0x15')]);return _0x392b0e(_0xcf506f[_0xad5c('0x13')][_0xad5c('0x15')]);}logger[_0xad5c('0x13')](_0xad5c('0xe'),_0x342b14,_0xcf506f[_0xad5c('0x13')]['message']);return _0x164cdd(_0xcf506f[_0xad5c('0x13')]['message']);}else{logger[_0xad5c('0xd')](_0xad5c('0xe'),_0x342b14,'request\x20sent');_0x164cdd(_0xcf506f[_0xad5c('0x16')]['message']);}})[_0xad5c('0x17')](function(_0x355309){logger[_0xad5c('0x13')](_0xad5c('0xe'),_0x342b14,_0x355309);_0x392b0e(_0x355309);});});}
\ No newline at end of file
+var _0xa7ec=['lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','SugarcrmField,\x20%s,\x20%s','debug','SugarcrmField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','info','result','catch'];(function(_0xbdcb81,_0x8ae579){var _0x3b40a0=function(_0xe679de){while(--_0xe679de){_0xbdcb81['push'](_0xbdcb81['shift']());}};_0x3b40a0(++_0x8ae579);}(_0xa7ec,0x1b5));var _0xca7e=function(_0x5adfc3,_0x30f54e){_0x5adfc3=_0x5adfc3-0x0;var _0x413e2e=_0xa7ec[_0x5adfc3];return _0x413e2e;};'use strict';var _=require(_0xca7e('0x0'));var util=require(_0xca7e('0x1'));var moment=require('moment');var BPromise=require(_0xca7e('0x2'));var rs=require(_0xca7e('0x3'));var fs=require('fs');var Redis=require(_0xca7e('0x4'));var db=require(_0xca7e('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xca7e('0x6'))(_0xca7e('0x7'));var config=require(_0xca7e('0x8'));var jayson=require(_0xca7e('0x9'));var client=jayson['client'][_0xca7e('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x27fd6b,_0x8b2d17,_0x2e70f5){return new BPromise(function(_0x4b8596,_0x4b4ebd){return client[_0xca7e('0xb')](_0x27fd6b,_0x2e70f5)[_0xca7e('0xc')](function(_0x993cd6){logger['info'](_0xca7e('0xd'),_0x8b2d17,'request\x20sent');logger[_0xca7e('0xe')](_0xca7e('0xf'),_0x8b2d17,_0xca7e('0x10'),JSON[_0xca7e('0x11')](_0x993cd6));if(_0x993cd6['error']){if(_0x993cd6[_0xca7e('0x12')]['code']===0x1f4){logger[_0xca7e('0x12')](_0xca7e('0xd'),_0x8b2d17,_0x993cd6['error'][_0xca7e('0x13')]);return _0x4b4ebd(_0x993cd6[_0xca7e('0x12')][_0xca7e('0x13')]);}logger[_0xca7e('0x12')](_0xca7e('0xd'),_0x8b2d17,_0x993cd6[_0xca7e('0x12')]['message']);return _0x4b8596(_0x993cd6[_0xca7e('0x12')][_0xca7e('0x13')]);}else{logger[_0xca7e('0x14')](_0xca7e('0xd'),_0x8b2d17,_0xca7e('0x10'));_0x4b8596(_0x993cd6[_0xca7e('0x15')][_0xca7e('0x13')]);}})[_0xca7e('0x16')](function(_0x46854c){logger[_0xca7e('0x12')](_0xca7e('0xd'),_0x8b2d17,_0x46854c);_0x4b4ebd(_0x46854c);});});}
\ No newline at end of file
index 9e13160..acc9aa2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe920=['exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/:id','isAuthenticated','/:id/configurations','getConfigurations','post','addConfiguration','delete','destroy'];(function(_0x2c021b,_0x521d59){var _0x27ac93=function(_0x583cbe){while(--_0x583cbe){_0x2c021b['push'](_0x2c021b['shift']());}};_0x27ac93(++_0x521d59);}(_0xe920,0xbe));var _0x0e92=function(_0x3bab09,_0x217c29){_0x3bab09=_0x3bab09-0x0;var _0x164376=_0xe920[_0x3bab09];return _0x164376;};'use strict';var multer=require(_0x0e92('0x0'));var util=require(_0x0e92('0x1'));var path=require(_0x0e92('0x2'));var timeout=require(_0x0e92('0x3'));var express=require(_0x0e92('0x4'));var router=express[_0x0e92('0x5')]();var fs_extra=require(_0x0e92('0x6'));var auth=require(_0x0e92('0x7'));var interaction=require(_0x0e92('0x8'));var config=require(_0x0e92('0x9'));var controller=require('./intVtigerAccount.controller');router[_0x0e92('0xa')]('/',auth['isAuthenticated'](),controller[_0x0e92('0xb')]);router[_0x0e92('0xa')](_0x0e92('0xc'),auth[_0x0e92('0xd')](),controller['show']);router[_0x0e92('0xa')](_0x0e92('0xe'),auth[_0x0e92('0xd')](),controller[_0x0e92('0xf')]);router[_0x0e92('0xa')]('/:id/fields',auth['isAuthenticated'](),controller['getFields']);router[_0x0e92('0x10')]('/',auth[_0x0e92('0xd')](),controller['create']);router['post']('/:id/configurations',auth[_0x0e92('0xd')](),controller[_0x0e92('0x11')]);router['put'](_0x0e92('0xc'),auth[_0x0e92('0xd')](),controller['update']);router[_0x0e92('0x12')](_0x0e92('0xc'),auth[_0x0e92('0xd')](),controller[_0x0e92('0x13')]);module[_0x0e92('0x14')]=router;
\ No newline at end of file
+var _0x897d=['update','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intVtigerAccount.controller','get','isAuthenticated','index','/:id','show','getConfigurations','getFields','post','create','addConfiguration','put'];(function(_0x39f8eb,_0x47150d){var _0x58479e=function(_0x484b19){while(--_0x484b19){_0x39f8eb['push'](_0x39f8eb['shift']());}};_0x58479e(++_0x47150d);}(_0x897d,0x80));var _0xd897=function(_0x2c1270,_0x5667b1){_0x2c1270=_0x2c1270-0x0;var _0x321a36=_0x897d[_0x2c1270];return _0x321a36;};'use strict';var multer=require(_0xd897('0x0'));var util=require(_0xd897('0x1'));var path=require(_0xd897('0x2'));var timeout=require(_0xd897('0x3'));var express=require(_0xd897('0x4'));var router=express[_0xd897('0x5')]();var fs_extra=require(_0xd897('0x6'));var auth=require(_0xd897('0x7'));var interaction=require(_0xd897('0x8'));var config=require(_0xd897('0x9'));var controller=require(_0xd897('0xa'));router[_0xd897('0xb')]('/',auth[_0xd897('0xc')](),controller[_0xd897('0xd')]);router[_0xd897('0xb')](_0xd897('0xe'),auth[_0xd897('0xc')](),controller[_0xd897('0xf')]);router[_0xd897('0xb')]('/:id/configurations',auth['isAuthenticated'](),controller[_0xd897('0x10')]);router[_0xd897('0xb')]('/:id/fields',auth[_0xd897('0xc')](),controller[_0xd897('0x11')]);router[_0xd897('0x12')]('/',auth[_0xd897('0xc')](),controller[_0xd897('0x13')]);router[_0xd897('0x12')]('/:id/configurations',auth[_0xd897('0xc')](),controller[_0xd897('0x14')]);router[_0xd897('0x15')]('/:id',auth[_0xd897('0xc')](),controller[_0xd897('0x16')]);router['delete'](_0xd897('0xe'),auth[_0xd897('0xc')](),controller[_0xd897('0x17')]);module[_0xd897('0x18')]=router;
\ No newline at end of file
index 82fdc25..dd1df1f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x83ba=['HelpDesk','sequelize','exports','STRING'];(function(_0x142b0b,_0x50b597){var _0x4b7181=function(_0x1001e5){while(--_0x1001e5){_0x142b0b['push'](_0x142b0b['shift']());}};_0x4b7181(++_0x50b597);}(_0x83ba,0xf1));var _0xa83b=function(_0x568df7,_0x27c02f){_0x568df7=_0x568df7-0x0;var _0x16cc04=_0x83ba[_0x568df7];return _0x16cc04;};'use strict';var Sequelize=require(_0xa83b('0x0'));module[_0xa83b('0x1')]={'name':{'type':Sequelize[_0xa83b('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0xa83b('0x2')]},'username':{'type':Sequelize['STRING'],'allowNull':![]},'moduleName':{'type':Sequelize[_0xa83b('0x2')],'allowNull':![],'defaultValue':_0xa83b('0x3')},'remoteUri':{'type':Sequelize[_0xa83b('0x2')],'allowNull':![]},'serverUrl':{'type':Sequelize[_0xa83b('0x2')],'allowNull':![]},'accessKey':{'type':Sequelize[_0xa83b('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0x5d11=['STRING','HelpDesk','sequelize','exports'];(function(_0x32e7d6,_0x214dda){var _0x481e8c=function(_0x1c800a){while(--_0x1c800a){_0x32e7d6['push'](_0x32e7d6['shift']());}};_0x481e8c(++_0x214dda);}(_0x5d11,0xce));var _0x15d1=function(_0x1168c2,_0x1ed2ce){_0x1168c2=_0x1168c2-0x0;var _0x5ab8b5=_0x5d11[_0x1168c2];return _0x5ab8b5;};'use strict';var Sequelize=require(_0x15d1('0x0'));module[_0x15d1('0x1')]={'name':{'type':Sequelize[_0x15d1('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x15d1('0x2')]},'username':{'type':Sequelize['STRING'],'allowNull':![]},'moduleName':{'type':Sequelize[_0x15d1('0x2')],'allowNull':![],'defaultValue':_0x15d1('0x3')},'remoteUri':{'type':Sequelize[_0x15d1('0x2')],'allowNull':![]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'accessKey':{'type':Sequelize[_0x15d1('0x2')],'allowNull':![]}};
\ No newline at end of file
index 0dc0e5c..eb93b0d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x836f=['findAll','rows','catch','show','params','options','find','create','body','update','getConfigurations','VtigerConfiguration','map','addConfiguration','findOne','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','VtigerField','md5','getFields','username','moduleName','remoteUri','serverUrl','accessKey','substring','format','%s/webservice.php','GET','getchallenge','success','POST','login','token','describe','result','autogenerated','reference','owner','remove','includes','editable','false','cf_','picklistValues','label','value','log','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','rimraf','zip-dir','fast-json-patch','bluebird','mustache','path','sox','to-csv','ejs','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','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','then','destroy','error','stack','name','send','index','VtigerAccount','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','includeAll'];(function(_0x2b47a0,_0x21c4aa){var _0x54e5f5=function(_0x4fc1f9){while(--_0x4fc1f9){_0x2b47a0['push'](_0x2b47a0['shift']());}};_0x54e5f5(++_0x21c4aa);}(_0x836f,0x12f));var _0xf836=function(_0x37f9c5,_0x277779){_0x37f9c5=_0x37f9c5-0x0;var _0x3e423b=_0x836f[_0x37f9c5];return _0x3e423b;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf836('0x0'));var zipdir=require(_0xf836('0x1'));var jsonpatch=require(_0xf836('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xf836('0x3'));var Mustache=require(_0xf836('0x4'));var util=require('util');var path=require(_0xf836('0x5'));var sox=require(_0xf836('0x6'));var csv=require(_0xf836('0x7'));var ejs=require(_0xf836('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf836('0x9'));var squel=require(_0xf836('0xa'));var crypto=require('crypto');var jsforce=require(_0xf836('0xb'));var deskjs=require(_0xf836('0xc'));var toCsv=require(_0xf836('0x7'));var querystring=require('querystring');var Papa=require(_0xf836('0xd'));var Redis=require(_0xf836('0xe'));var authService=require(_0xf836('0xf'));var qs=require(_0xf836('0x10'));var as=require(_0xf836('0x11'));var hardwareService=require(_0xf836('0x12'));var logger=require(_0xf836('0x13'))('api');var utils=require(_0xf836('0x14'));var config=require(_0xf836('0x15'));var licenseUtil=require(_0xf836('0x16'));var db=require(_0xf836('0x17'))['db'];var integrations=require(_0xf836('0x18'));function respondWithStatusCode(_0x498737,_0x1b7301){_0x1b7301=_0x1b7301||0xcc;return function(_0x1a7a5f){if(_0x1a7a5f){return _0x498737[_0xf836('0x19')](_0x1b7301);}return _0x498737[_0xf836('0x1a')](_0x1b7301)[_0xf836('0x1b')]();};}function respondWithResult(_0xe5ecce,_0x5c0b01){_0x5c0b01=_0x5c0b01||0xc8;return function(_0x5623df){if(_0x5623df){return _0xe5ecce[_0xf836('0x1a')](_0x5c0b01)[_0xf836('0x1c')](_0x5623df);}};}function respondWithFilteredResult(_0x17981a,_0x17db4a){return function(_0x1ad14d){if(_0x1ad14d){var _0x36164c=typeof _0x17db4a[_0xf836('0x1d')]===_0xf836('0x1e')&&typeof _0x17db4a[_0xf836('0x1f')]===_0xf836('0x1e');var _0x556760=_0x1ad14d[_0xf836('0x20')];var _0x21454f=_0x36164c?0x0:_0x17db4a['offset'];var _0x19446c=_0x36164c?_0x1ad14d[_0xf836('0x20')]:_0x17db4a[_0xf836('0x1d')]+_0x17db4a['limit'];var _0x1c11d8;if(_0x19446c>=_0x556760){_0x19446c=_0x556760;_0x1c11d8=0xc8;}else{_0x1c11d8=0xce;}_0x17981a[_0xf836('0x1a')](_0x1c11d8);return _0x17981a['set'](_0xf836('0x21'),_0x21454f+'-'+_0x19446c+'/'+_0x556760)[_0xf836('0x1c')](_0x1ad14d);}return null;};}function patchUpdates(_0x2cbe67){return function(_0x1ae75b){try{jsonpatch[_0xf836('0x22')](_0x1ae75b,_0x2cbe67,!![]);}catch(_0x1b0772){return BPromise[_0xf836('0x23')](_0x1b0772);}return _0x1ae75b[_0xf836('0x24')]();};}function saveUpdates(_0x280584,_0x2907e0){return function(_0x25fd9c){if(_0x25fd9c){return _0x25fd9c['update'](_0x280584)[_0xf836('0x25')](function(_0x4f73d8){return _0x4f73d8;});}return null;};}function removeEntity(_0x2d9137,_0x5a361f){return function(_0x2ba695){if(_0x2ba695){return _0x2ba695[_0xf836('0x26')]()[_0xf836('0x25')](function(){_0x2d9137[_0xf836('0x1a')](0xcc)[_0xf836('0x1b')]();});}};}function handleEntityNotFound(_0x5445a5,_0x568f27){return function(_0x191056){if(!_0x191056){_0x5445a5[_0xf836('0x19')](0x194);}return _0x191056;};}function handleError(_0x372286,_0x57ba4d){_0x57ba4d=_0x57ba4d||0x1f4;return function(_0x5290fe){logger[_0xf836('0x27')](_0x5290fe[_0xf836('0x28')]);if(_0x5290fe[_0xf836('0x29')]){delete _0x5290fe[_0xf836('0x29')];}_0x372286[_0xf836('0x1a')](_0x57ba4d)[_0xf836('0x2a')](_0x5290fe);};}exports[_0xf836('0x2b')]=function(_0x458cd5,_0x3744ea){var _0x3a6627={},_0x213619={},_0xcdde3d={'count':0x0,'rows':[]};var _0x10c32f=_['map'](db[_0xf836('0x2c')][_0xf836('0x2d')],function(_0x5aa451){return{'name':_0x5aa451[_0xf836('0x2e')],'type':_0x5aa451[_0xf836('0x2f')][_0xf836('0x30')]};});_0x213619['model']=_['map'](_0x10c32f,_0xf836('0x29'));_0x213619[_0xf836('0x31')]=_[_0xf836('0x32')](_0x458cd5[_0xf836('0x31')]);_0x213619[_0xf836('0x33')]=_[_0xf836('0x34')](_0x213619[_0xf836('0x35')],_0x213619['query']);_0x3a6627[_0xf836('0x36')]=_['intersection'](_0x213619[_0xf836('0x35')],qs[_0xf836('0x37')](_0x458cd5[_0xf836('0x31')][_0xf836('0x37')]));_0x3a6627['attributes']=_0x3a6627['attributes'][_0xf836('0x38')]?_0x3a6627['attributes']:_0x213619[_0xf836('0x35')];if(!_0x458cd5[_0xf836('0x31')][_0xf836('0x39')](_0xf836('0x3a'))){_0x3a6627[_0xf836('0x1f')]=qs[_0xf836('0x1f')](_0x458cd5[_0xf836('0x31')][_0xf836('0x1f')]);_0x3a6627[_0xf836('0x1d')]=qs[_0xf836('0x1d')](_0x458cd5[_0xf836('0x31')][_0xf836('0x1d')]);}_0x3a6627[_0xf836('0x3b')]=qs[_0xf836('0x3c')](_0x458cd5[_0xf836('0x31')][_0xf836('0x3c')]);_0x3a6627['where']=qs[_0xf836('0x33')](_[_0xf836('0x3d')](_0x458cd5[_0xf836('0x31')],_0x213619['filters']),_0x10c32f);if(_0x458cd5[_0xf836('0x31')][_0xf836('0x3e')]){_0x3a6627[_0xf836('0x3f')]=_[_0xf836('0x40')](_0x3a6627['where'],{'$or':_['map'](_0x10c32f,function(_0x3cd5a3){if(_0x3cd5a3[_0xf836('0x2f')]!=='VIRTUAL'){var _0x132fdc={};_0x132fdc[_0x3cd5a3[_0xf836('0x29')]]={'$like':'%'+_0x458cd5['query'][_0xf836('0x3e')]+'%'};return _0x132fdc;}})});}_0x3a6627=_[_0xf836('0x40')]({},_0x3a6627,_0x458cd5['options']);var _0x519ba9={'where':_0x3a6627[_0xf836('0x3f')]};return db[_0xf836('0x2c')][_0xf836('0x20')](_0x519ba9)[_0xf836('0x25')](function(_0x32b31f){_0xcdde3d['count']=_0x32b31f;if(_0x458cd5[_0xf836('0x31')][_0xf836('0x41')]){_0x3a6627['include']=[{'all':!![]}];}return db[_0xf836('0x2c')][_0xf836('0x42')](_0x3a6627);})[_0xf836('0x25')](function(_0x587a30){_0xcdde3d[_0xf836('0x43')]=_0x587a30;return _0xcdde3d;})[_0xf836('0x25')](respondWithFilteredResult(_0x3744ea,_0x3a6627))[_0xf836('0x44')](handleError(_0x3744ea,null));};exports[_0xf836('0x45')]=function(_0x1476c1,_0x1ce159){var _0xc03a61={'raw':![],'where':{'id':_0x1476c1[_0xf836('0x46')]['id']}},_0x2c27a6={};_0x2c27a6['model']=_[_0xf836('0x32')](db[_0xf836('0x2c')][_0xf836('0x2d')]);_0x2c27a6[_0xf836('0x31')]=_[_0xf836('0x32')](_0x1476c1[_0xf836('0x31')]);_0x2c27a6[_0xf836('0x33')]=_[_0xf836('0x34')](_0x2c27a6[_0xf836('0x35')],_0x2c27a6[_0xf836('0x31')]);_0xc03a61['attributes']=_['intersection'](_0x2c27a6[_0xf836('0x35')],qs['fields'](_0x1476c1['query'][_0xf836('0x37')]));_0xc03a61[_0xf836('0x36')]=_0xc03a61[_0xf836('0x36')][_0xf836('0x38')]?_0xc03a61[_0xf836('0x36')]:_0x2c27a6[_0xf836('0x35')];if(_0x1476c1[_0xf836('0x31')][_0xf836('0x41')]){_0xc03a61['include']=[{'all':!![]}];}_0xc03a61=_[_0xf836('0x40')]({},_0xc03a61,_0x1476c1[_0xf836('0x47')]);return db[_0xf836('0x2c')][_0xf836('0x48')](_0xc03a61)[_0xf836('0x25')](handleEntityNotFound(_0x1ce159,null))[_0xf836('0x25')](respondWithResult(_0x1ce159,null))['catch'](handleError(_0x1ce159,null));};exports[_0xf836('0x49')]=function(_0x366ef3,_0x107520){return db['VtigerAccount']['create'](_0x366ef3[_0xf836('0x4a')],{})[_0xf836('0x25')](respondWithResult(_0x107520,0xc9))[_0xf836('0x44')](handleError(_0x107520,null));};exports[_0xf836('0x4b')]=function(_0x274fc1,_0x29bb61){if(_0x274fc1[_0xf836('0x4a')]['id']){delete _0x274fc1[_0xf836('0x4a')]['id'];}return db['VtigerAccount'][_0xf836('0x48')]({'where':{'id':_0x274fc1[_0xf836('0x46')]['id']}})['then'](handleEntityNotFound(_0x29bb61,null))[_0xf836('0x25')](saveUpdates(_0x274fc1[_0xf836('0x4a')],null))[_0xf836('0x25')](respondWithResult(_0x29bb61,null))[_0xf836('0x44')](handleError(_0x29bb61,null));};exports[_0xf836('0x26')]=function(_0x4c1235,_0x3ca7dc){return db[_0xf836('0x2c')]['find']({'where':{'id':_0x4c1235[_0xf836('0x46')]['id']}})[_0xf836('0x25')](handleEntityNotFound(_0x3ca7dc,null))[_0xf836('0x25')](removeEntity(_0x3ca7dc,null))[_0xf836('0x44')](handleError(_0x3ca7dc,null));};exports[_0xf836('0x4c')]=function(_0x5d557d,_0x17a68b,_0x5a32a0){var _0x5c9a47={};var _0x2159e9={};var _0x4d5add;var _0x3ad78e;return db['VtigerAccount']['findOne']({'where':{'id':_0x5d557d[_0xf836('0x46')]['id']}})[_0xf836('0x25')](handleEntityNotFound(_0x17a68b,null))[_0xf836('0x25')](function(_0x5459e6){if(_0x5459e6){_0x4d5add=_0x5459e6;_0x2159e9[_0xf836('0x35')]=_[_0xf836('0x32')](db[_0xf836('0x4d')][_0xf836('0x2d')]);_0x2159e9['query']=_[_0xf836('0x32')](_0x5d557d['query']);_0x2159e9[_0xf836('0x33')]=_[_0xf836('0x34')](_0x2159e9['model'],_0x2159e9['query']);_0x5c9a47[_0xf836('0x36')]=_[_0xf836('0x34')](_0x2159e9['model'],qs[_0xf836('0x37')](_0x5d557d[_0xf836('0x31')][_0xf836('0x37')]));_0x5c9a47[_0xf836('0x36')]=_0x5c9a47[_0xf836('0x36')][_0xf836('0x38')]?_0x5c9a47[_0xf836('0x36')]:_0x2159e9[_0xf836('0x35')];_0x5c9a47['order']=qs[_0xf836('0x3c')](_0x5d557d[_0xf836('0x31')]['sort']);_0x5c9a47['where']=qs['filters'](_['pick'](_0x5d557d[_0xf836('0x31')],_0x2159e9['filters']));if(_0x5d557d['query']['filter']){_0x5c9a47[_0xf836('0x3f')]=_[_0xf836('0x40')](_0x5c9a47[_0xf836('0x3f')],{'$or':_[_0xf836('0x4e')](_0x5c9a47['attributes'],function(_0x3a0e8a){var _0x171e39={};_0x171e39[_0x3a0e8a]={'$like':'%'+_0x5d557d[_0xf836('0x31')]['filter']+'%'};return _0x171e39;})});}_0x5c9a47=_[_0xf836('0x40')]({},_0x5c9a47,_0x5d557d[_0xf836('0x47')]);return _0x4d5add['getConfigurations'](_0x5c9a47);}})['then'](function(_0x48df96){if(_0x48df96){_0x3ad78e=_0x48df96[_0xf836('0x38')];if(!_0x5d557d[_0xf836('0x31')][_0xf836('0x39')]('nolimit')){_0x5c9a47[_0xf836('0x1f')]=qs[_0xf836('0x1f')](_0x5d557d[_0xf836('0x31')][_0xf836('0x1f')]);_0x5c9a47[_0xf836('0x1d')]=qs[_0xf836('0x1d')](_0x5d557d[_0xf836('0x31')]['offset']);}return _0x4d5add[_0xf836('0x4c')](_0x5c9a47);}})['then'](function(_0x44c496){if(_0x44c496){return _0x44c496?{'count':_0x3ad78e,'rows':_0x44c496}:null;}})[_0xf836('0x25')](respondWithResult(_0x17a68b,null))[_0xf836('0x44')](handleError(_0x17a68b,null));};exports[_0xf836('0x4f')]=function(_0x2b71b0,_0x10c9fd,_0x5ab0cf){if(_0x2b71b0['body']['id']){delete _0x2b71b0['body']['id'];}return db['VtigerAccount'][_0xf836('0x50')]({'where':{'id':_0x2b71b0[_0xf836('0x46')]['id']}})[_0xf836('0x25')](handleEntityNotFound(_0x10c9fd,null))[_0xf836('0x25')](function(_0x45df80){if(_0x45df80){_0x2b71b0[_0xf836('0x4a')][_0xf836('0x51')]=_0x45df80['id'];_0x2b71b0[_0xf836('0x4a')][_0xf836('0x52')]=integrations[_0xf836('0x53')](_0x2b71b0[_0xf836('0x4a')][_0xf836('0x54')],_0x2b71b0[_0xf836('0x4a')][_0xf836('0x2f')]);_0x2b71b0['body'][_0xf836('0x55')]=integrations[_0xf836('0x56')](_0x2b71b0[_0xf836('0x4a')][_0xf836('0x54')],_0x2b71b0[_0xf836('0x4a')][_0xf836('0x2f')]);return db['VtigerConfiguration'][_0xf836('0x49')](_0x2b71b0[_0xf836('0x4a')],{'include':[{'model':db[_0xf836('0x57')],'as':_0xf836('0x52')},{'model':db[_0xf836('0x57')],'as':_0xf836('0x55')}]});}return null;})[_0xf836('0x25')](respondWithResult(_0x10c9fd,null))[_0xf836('0x44')](handleError(_0x10c9fd,null));};var md5=require(_0xf836('0x58'));exports[_0xf836('0x59')]=function(_0xe5e52d,_0x476151,_0x4b0741){var _0x3a1d69=null;var _0x2374d3=null;var _0x20af84=null;var _0x367930=null;var _0x4017d4='';return db['VtigerAccount'][_0xf836('0x50')]({'where':{'id':_0xe5e52d[_0xf836('0x46')]['id']},'attributes':['id',_0xf836('0x29'),_0xf836('0x5a'),'description',_0xf836('0x5b'),_0xf836('0x5c'),_0xf836('0x5d'),_0xf836('0x5e')]})[_0xf836('0x25')](handleEntityNotFound(_0x476151,null))[_0xf836('0x25')](function(_0x46bb2e){if(_0x46bb2e){_0x3a1d69=_0x46bb2e[_0xf836('0x5a')];_0x2374d3=_0x46bb2e['accessKey'];_0x20af84=_0x46bb2e[_0xf836('0x5b')];_0x4017d4=_0x46bb2e['remoteUri'];var _0x488e9f=_0x4017d4['slice'](-0x1);if(_0x488e9f==='/'){_0x4017d4=_0x4017d4[_0xf836('0x5f')](0x0,_0x4017d4['lastIndexOf'](_0x488e9f));}_0x367930=util[_0xf836('0x60')](_0xf836('0x61'),_0x4017d4);var _0x1f83f9={'method':_0xf836('0x62'),'uri':_0x367930,'qs':{'operation':_0xf836('0x63'),'username':_0x46bb2e[_0xf836('0x5a')]},'json':!![]};return rp(_0x1f83f9);}})[_0xf836('0x25')](function(_0x4708f5){if(_0x4708f5[_0xf836('0x64')]){var _0x532a4d={'method':_0xf836('0x65'),'uri':_0x367930,'form':{'operation':_0xf836('0x66'),'username':_0x3a1d69,'accessKey':md5(_0x4708f5['result'][_0xf836('0x67')]+_0x2374d3)},'json':!![]};return rp(_0x532a4d);}})[_0xf836('0x25')](function(_0x2c963a){if(_0x2c963a[_0xf836('0x64')]){var _0x299773={'method':'GET','uri':_0x367930,'qs':{'operation':_0xf836('0x68'),'username':_0x3a1d69,'sessionName':_0x2c963a[_0xf836('0x69')]['sessionName'],'elementType':_0x20af84},'json':!![]};return rp(_0x299773);}})[_0xf836('0x25')](function(_0x243e0d){if(_0x243e0d[_0xf836('0x64')]){var _0x4f861a=[_0xf836('0x6a'),_0xf836('0x6b'),_0xf836('0x6c')];_[_0xf836('0x6d')](_0x243e0d[_0xf836('0x69')][_0xf836('0x37')],function(_0x348e21){return _0x4f861a[_0xf836('0x6e')](_0x348e21[_0xf836('0x2f')][_0xf836('0x29')]);});_[_0xf836('0x6d')](_0x243e0d[_0xf836('0x69')]['fields'],function(_0x2b559c){return _0x2b559c[_0xf836('0x6f')]===_0xf836('0x70');});return{'count':_0x243e0d[_0xf836('0x69')][_0xf836('0x37')][_0xf836('0x38')],'rows':_['map'](_0x243e0d['result'][_0xf836('0x37')],function(_0x4a4753){return{'id':_0x4a4753[_0xf836('0x29')],'name':_0x4a4753['label'],'custom':_['startsWith'](_0x4a4753[_0xf836('0x29')],_0xf836('0x71'))?!![]:![],'options':_0x4a4753[_0xf836('0x2f')]['name']==='picklist'&&_0x4a4753[_0xf836('0x2f')][_0xf836('0x72')][_0xf836('0x38')]>0x0?_[_0xf836('0x4e')](_0x4a4753['type']['picklistValues'],function(_0x1f4f9c){return{'name':_0x1f4f9c[_0xf836('0x73')],'value':_0x1f4f9c[_0xf836('0x74')]};}):[]};})};}})[_0xf836('0x25')](respondWithResult(_0x476151,null))[_0xf836('0x44')](function(_0x64f55){console[_0xf836('0x75')]('vTiger\x20error:\x20'+_0x64f55);var _0x2f12ce=_0xe5e52d['query'][_0xf836('0x76')]?0x1f4:_0x64f55[_0xf836('0x77')]||0x1f4;logger[_0xf836('0x27')](_0xf836('0x78'),'getFields',_0x2f12ce,JSON[_0xf836('0x79')](_0x64f55));delete _0x64f55['name'];if(_0x2f12ce===0x191){_0x2f12ce=0x190;}_0x476151[_0xf836('0x1a')](_0x2f12ce)[_0xf836('0x2a')](_0xe5e52d[_0xf836('0x31')][_0xf836('0x76')]?{'message':_0xf836('0x7a'),'statusCode':_0x64f55[_0xf836('0x77')]}:_0x64f55);});};
\ No newline at end of file
+var _0x885b=['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','limit','undefined','count','Content-Range','json','apply','reject','then','destroy','error','stack','name','send','map','rawAttributes','fieldName','type','key','model','query','keys','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','filter','merge','VtigerAccount','include','findAll','rows','show','includeAll','options','find','catch','create','params','body','getConfigurations','findOne','pick','AccountId','getSubjects','Descriptions','getDescriptions','channel','VtigerConfiguration','VtigerField','Subjects','md5','getFields','username','remoteUri','serverUrl','accessKey','moduleName','slice','lastIndexOf','format','%s/webservice.php','getchallenge','success','login','result','GET','describe','autogenerated','reference','owner','remove','includes','editable','false','label','startsWith','cf_','picklist','picklistValues','value','log','vTiger\x20error:\x20','test','statusCode','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','crypto','jsforce','desk.js'];(function(_0x10e93f,_0x28a0d9){var _0x232293=function(_0x545acd){while(--_0x545acd){_0x10e93f['push'](_0x10e93f['shift']());}};_0x232293(++_0x28a0d9);}(_0x885b,0x15d));var _0xb885=function(_0x4620ba,_0x5132de){_0x4620ba=_0x4620ba-0x0;var _0x45cf39=_0x885b[_0x4620ba];return _0x45cf39;};'use strict';var emlformat=require(_0xb885('0x0'));var rimraf=require(_0xb885('0x1'));var zipdir=require(_0xb885('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xb885('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xb885('0x4'));var util=require(_0xb885('0x5'));var path=require(_0xb885('0x6'));var sox=require(_0xb885('0x7'));var csv=require(_0xb885('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb885('0x9'));var _=require(_0xb885('0xa'));var squel=require('squel');var crypto=require(_0xb885('0xb'));var jsforce=require(_0xb885('0xc'));var deskjs=require(_0xb885('0xd'));var toCsv=require(_0xb885('0x8'));var querystring=require(_0xb885('0xe'));var Papa=require(_0xb885('0xf'));var Redis=require(_0xb885('0x10'));var authService=require(_0xb885('0x11'));var qs=require(_0xb885('0x12'));var as=require(_0xb885('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xb885('0x14'));var utils=require(_0xb885('0x15'));var config=require(_0xb885('0x16'));var licenseUtil=require(_0xb885('0x17'));var db=require(_0xb885('0x18'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x2ae507,_0x22337a){_0x22337a=_0x22337a||0xcc;return function(_0x5131d3){if(_0x5131d3){return _0x2ae507[_0xb885('0x19')](_0x22337a);}return _0x2ae507[_0xb885('0x1a')](_0x22337a)[_0xb885('0x1b')]();};}function respondWithResult(_0x25bc75,_0x4b5248){_0x4b5248=_0x4b5248||0xc8;return function(_0x388448){if(_0x388448){return _0x25bc75[_0xb885('0x1a')](_0x4b5248)['json'](_0x388448);}};}function respondWithFilteredResult(_0x4b644e,_0x4ccb65){return function(_0x547ada){if(_0x547ada){var _0x217399=typeof _0x4ccb65[_0xb885('0x1c')]==='undefined'&&typeof _0x4ccb65[_0xb885('0x1d')]===_0xb885('0x1e');var _0x410a68=_0x547ada[_0xb885('0x1f')];var _0x5db8ad=_0x217399?0x0:_0x4ccb65[_0xb885('0x1c')];var _0x2b2abb=_0x217399?_0x547ada[_0xb885('0x1f')]:_0x4ccb65[_0xb885('0x1c')]+_0x4ccb65[_0xb885('0x1d')];var _0x336a94;if(_0x2b2abb>=_0x410a68){_0x2b2abb=_0x410a68;_0x336a94=0xc8;}else{_0x336a94=0xce;}_0x4b644e[_0xb885('0x1a')](_0x336a94);return _0x4b644e['set'](_0xb885('0x20'),_0x5db8ad+'-'+_0x2b2abb+'/'+_0x410a68)[_0xb885('0x21')](_0x547ada);}return null;};}function patchUpdates(_0x570e2e){return function(_0x78e7f){try{jsonpatch[_0xb885('0x22')](_0x78e7f,_0x570e2e,!![]);}catch(_0x57301b){return BPromise[_0xb885('0x23')](_0x57301b);}return _0x78e7f['save']();};}function saveUpdates(_0x3faea2,_0x433502){return function(_0x3d3291){if(_0x3d3291){return _0x3d3291['update'](_0x3faea2)[_0xb885('0x24')](function(_0x298ac7){return _0x298ac7;});}return null;};}function removeEntity(_0x2c4c8f,_0x7d05d5){return function(_0x1e8a44){if(_0x1e8a44){return _0x1e8a44[_0xb885('0x25')]()[_0xb885('0x24')](function(){_0x2c4c8f['status'](0xcc)[_0xb885('0x1b')]();});}};}function handleEntityNotFound(_0x144082,_0xd53f8c){return function(_0x47dcc6){if(!_0x47dcc6){_0x144082[_0xb885('0x19')](0x194);}return _0x47dcc6;};}function handleError(_0xaa0ca7,_0xdbd271){_0xdbd271=_0xdbd271||0x1f4;return function(_0x4e85e){logger[_0xb885('0x26')](_0x4e85e[_0xb885('0x27')]);if(_0x4e85e[_0xb885('0x28')]){delete _0x4e85e[_0xb885('0x28')];}_0xaa0ca7[_0xb885('0x1a')](_0xdbd271)[_0xb885('0x29')](_0x4e85e);};}exports['index']=function(_0x1f337e,_0x59baf3){var _0x2d161f={},_0x1aad62={},_0x3b828e={'count':0x0,'rows':[]};var _0x366e1b=_[_0xb885('0x2a')](db['VtigerAccount'][_0xb885('0x2b')],function(_0x30a0d1){return{'name':_0x30a0d1[_0xb885('0x2c')],'type':_0x30a0d1[_0xb885('0x2d')][_0xb885('0x2e')]};});_0x1aad62[_0xb885('0x2f')]=_[_0xb885('0x2a')](_0x366e1b,_0xb885('0x28'));_0x1aad62[_0xb885('0x30')]=_[_0xb885('0x31')](_0x1f337e[_0xb885('0x30')]);_0x1aad62['filters']=_['intersection'](_0x1aad62[_0xb885('0x2f')],_0x1aad62[_0xb885('0x30')]);_0x2d161f[_0xb885('0x32')]=_[_0xb885('0x33')](_0x1aad62[_0xb885('0x2f')],qs[_0xb885('0x34')](_0x1f337e[_0xb885('0x30')][_0xb885('0x34')]));_0x2d161f[_0xb885('0x32')]=_0x2d161f[_0xb885('0x32')][_0xb885('0x35')]?_0x2d161f['attributes']:_0x1aad62[_0xb885('0x2f')];if(!_0x1f337e[_0xb885('0x30')][_0xb885('0x36')](_0xb885('0x37'))){_0x2d161f[_0xb885('0x1d')]=qs[_0xb885('0x1d')](_0x1f337e[_0xb885('0x30')][_0xb885('0x1d')]);_0x2d161f[_0xb885('0x1c')]=qs[_0xb885('0x1c')](_0x1f337e[_0xb885('0x30')][_0xb885('0x1c')]);}_0x2d161f[_0xb885('0x38')]=qs[_0xb885('0x39')](_0x1f337e[_0xb885('0x30')][_0xb885('0x39')]);_0x2d161f[_0xb885('0x3a')]=qs['filters'](_['pick'](_0x1f337e[_0xb885('0x30')],_0x1aad62[_0xb885('0x3b')]),_0x366e1b);if(_0x1f337e['query'][_0xb885('0x3c')]){_0x2d161f['where']=_['merge'](_0x2d161f[_0xb885('0x3a')],{'$or':_[_0xb885('0x2a')](_0x366e1b,function(_0x597c61){if(_0x597c61[_0xb885('0x2d')]!=='VIRTUAL'){var _0x216f50={};_0x216f50[_0x597c61[_0xb885('0x28')]]={'$like':'%'+_0x1f337e[_0xb885('0x30')][_0xb885('0x3c')]+'%'};return _0x216f50;}})});}_0x2d161f=_[_0xb885('0x3d')]({},_0x2d161f,_0x1f337e['options']);var _0x23b294={'where':_0x2d161f['where']};return db[_0xb885('0x3e')]['count'](_0x23b294)[_0xb885('0x24')](function(_0x40ff31){_0x3b828e[_0xb885('0x1f')]=_0x40ff31;if(_0x1f337e['query']['includeAll']){_0x2d161f[_0xb885('0x3f')]=[{'all':!![]}];}return db['VtigerAccount'][_0xb885('0x40')](_0x2d161f);})[_0xb885('0x24')](function(_0x540b0e){_0x3b828e[_0xb885('0x41')]=_0x540b0e;return _0x3b828e;})['then'](respondWithFilteredResult(_0x59baf3,_0x2d161f))['catch'](handleError(_0x59baf3,null));};exports[_0xb885('0x42')]=function(_0x163ede,_0x235ec8){var _0x22ee21={'raw':![],'where':{'id':_0x163ede['params']['id']}},_0x4e2ebf={};_0x4e2ebf[_0xb885('0x2f')]=_[_0xb885('0x31')](db[_0xb885('0x3e')][_0xb885('0x2b')]);_0x4e2ebf[_0xb885('0x30')]=_['keys'](_0x163ede[_0xb885('0x30')]);_0x4e2ebf[_0xb885('0x3b')]=_[_0xb885('0x33')](_0x4e2ebf['model'],_0x4e2ebf[_0xb885('0x30')]);_0x22ee21['attributes']=_[_0xb885('0x33')](_0x4e2ebf['model'],qs[_0xb885('0x34')](_0x163ede[_0xb885('0x30')][_0xb885('0x34')]));_0x22ee21[_0xb885('0x32')]=_0x22ee21['attributes'][_0xb885('0x35')]?_0x22ee21['attributes']:_0x4e2ebf[_0xb885('0x2f')];if(_0x163ede[_0xb885('0x30')][_0xb885('0x43')]){_0x22ee21[_0xb885('0x3f')]=[{'all':!![]}];}_0x22ee21=_[_0xb885('0x3d')]({},_0x22ee21,_0x163ede[_0xb885('0x44')]);return db[_0xb885('0x3e')][_0xb885('0x45')](_0x22ee21)['then'](handleEntityNotFound(_0x235ec8,null))['then'](respondWithResult(_0x235ec8,null))[_0xb885('0x46')](handleError(_0x235ec8,null));};exports['create']=function(_0x6a45cd,_0x208d4e){return db['VtigerAccount'][_0xb885('0x47')](_0x6a45cd['body'],{})[_0xb885('0x24')](respondWithResult(_0x208d4e,0xc9))[_0xb885('0x46')](handleError(_0x208d4e,null));};exports['update']=function(_0x4798dc,_0x2c93b5){if(_0x4798dc['body']['id']){delete _0x4798dc['body']['id'];}return db[_0xb885('0x3e')][_0xb885('0x45')]({'where':{'id':_0x4798dc[_0xb885('0x48')]['id']}})[_0xb885('0x24')](handleEntityNotFound(_0x2c93b5,null))[_0xb885('0x24')](saveUpdates(_0x4798dc[_0xb885('0x49')],null))[_0xb885('0x24')](respondWithResult(_0x2c93b5,null))['catch'](handleError(_0x2c93b5,null));};exports[_0xb885('0x25')]=function(_0x39c8e8,_0x35a709){return db[_0xb885('0x3e')][_0xb885('0x45')]({'where':{'id':_0x39c8e8[_0xb885('0x48')]['id']}})[_0xb885('0x24')](handleEntityNotFound(_0x35a709,null))[_0xb885('0x24')](removeEntity(_0x35a709,null))[_0xb885('0x46')](handleError(_0x35a709,null));};exports[_0xb885('0x4a')]=function(_0x3dd8e4,_0x24c557,_0x223e43){var _0x48cfec={};var _0x45ae9c={};var _0x3df7a0;var _0x20ad33;return db[_0xb885('0x3e')][_0xb885('0x4b')]({'where':{'id':_0x3dd8e4['params']['id']}})[_0xb885('0x24')](handleEntityNotFound(_0x24c557,null))[_0xb885('0x24')](function(_0x1756cb){if(_0x1756cb){_0x3df7a0=_0x1756cb;_0x45ae9c[_0xb885('0x2f')]=_[_0xb885('0x31')](db['VtigerConfiguration'][_0xb885('0x2b')]);_0x45ae9c[_0xb885('0x30')]=_['keys'](_0x3dd8e4[_0xb885('0x30')]);_0x45ae9c[_0xb885('0x3b')]=_[_0xb885('0x33')](_0x45ae9c[_0xb885('0x2f')],_0x45ae9c[_0xb885('0x30')]);_0x48cfec[_0xb885('0x32')]=_[_0xb885('0x33')](_0x45ae9c['model'],qs[_0xb885('0x34')](_0x3dd8e4[_0xb885('0x30')][_0xb885('0x34')]));_0x48cfec[_0xb885('0x32')]=_0x48cfec[_0xb885('0x32')][_0xb885('0x35')]?_0x48cfec['attributes']:_0x45ae9c[_0xb885('0x2f')];_0x48cfec[_0xb885('0x38')]=qs[_0xb885('0x39')](_0x3dd8e4['query'][_0xb885('0x39')]);_0x48cfec[_0xb885('0x3a')]=qs[_0xb885('0x3b')](_[_0xb885('0x4c')](_0x3dd8e4['query'],_0x45ae9c['filters']));if(_0x3dd8e4[_0xb885('0x30')][_0xb885('0x3c')]){_0x48cfec[_0xb885('0x3a')]=_[_0xb885('0x3d')](_0x48cfec['where'],{'$or':_[_0xb885('0x2a')](_0x48cfec[_0xb885('0x32')],function(_0x49bf68){var _0x27a7e7={};_0x27a7e7[_0x49bf68]={'$like':'%'+_0x3dd8e4['query'][_0xb885('0x3c')]+'%'};return _0x27a7e7;})});}_0x48cfec=_[_0xb885('0x3d')]({},_0x48cfec,_0x3dd8e4[_0xb885('0x44')]);return _0x3df7a0[_0xb885('0x4a')](_0x48cfec);}})['then'](function(_0x3e6f09){if(_0x3e6f09){_0x20ad33=_0x3e6f09[_0xb885('0x35')];if(!_0x3dd8e4['query'][_0xb885('0x36')](_0xb885('0x37'))){_0x48cfec[_0xb885('0x1d')]=qs[_0xb885('0x1d')](_0x3dd8e4[_0xb885('0x30')][_0xb885('0x1d')]);_0x48cfec[_0xb885('0x1c')]=qs[_0xb885('0x1c')](_0x3dd8e4[_0xb885('0x30')][_0xb885('0x1c')]);}return _0x3df7a0[_0xb885('0x4a')](_0x48cfec);}})[_0xb885('0x24')](function(_0x1d6e52){if(_0x1d6e52){return _0x1d6e52?{'count':_0x20ad33,'rows':_0x1d6e52}:null;}})['then'](respondWithResult(_0x24c557,null))['catch'](handleError(_0x24c557,null));};exports['addConfiguration']=function(_0x14712e,_0x4c0893,_0xe7ed17){if(_0x14712e[_0xb885('0x49')]['id']){delete _0x14712e[_0xb885('0x49')]['id'];}return db[_0xb885('0x3e')][_0xb885('0x4b')]({'where':{'id':_0x14712e[_0xb885('0x48')]['id']}})[_0xb885('0x24')](handleEntityNotFound(_0x4c0893,null))[_0xb885('0x24')](function(_0x44da9b){if(_0x44da9b){_0x14712e[_0xb885('0x49')][_0xb885('0x4d')]=_0x44da9b['id'];_0x14712e[_0xb885('0x49')]['Subjects']=integrations[_0xb885('0x4e')](_0x14712e[_0xb885('0x49')]['channel'],_0x14712e[_0xb885('0x49')][_0xb885('0x2d')]);_0x14712e[_0xb885('0x49')][_0xb885('0x4f')]=integrations[_0xb885('0x50')](_0x14712e[_0xb885('0x49')][_0xb885('0x51')],_0x14712e[_0xb885('0x49')]['type']);return db[_0xb885('0x52')]['create'](_0x14712e[_0xb885('0x49')],{'include':[{'model':db[_0xb885('0x53')],'as':_0xb885('0x54')},{'model':db[_0xb885('0x53')],'as':_0xb885('0x4f')}]});}return null;})['then'](respondWithResult(_0x4c0893,null))[_0xb885('0x46')](handleError(_0x4c0893,null));};var md5=require(_0xb885('0x55'));exports[_0xb885('0x56')]=function(_0x453f23,_0x5e5c24,_0x45ed31){var _0x4e0215=null;var _0x43c844=null;var _0x248e41=null;var _0x54fc98=null;var _0x498b5b='';return db[_0xb885('0x3e')][_0xb885('0x4b')]({'where':{'id':_0x453f23[_0xb885('0x48')]['id']},'attributes':['id','name',_0xb885('0x57'),'description','moduleName',_0xb885('0x58'),_0xb885('0x59'),_0xb885('0x5a')]})[_0xb885('0x24')](handleEntityNotFound(_0x5e5c24,null))[_0xb885('0x24')](function(_0x1345b2){if(_0x1345b2){_0x4e0215=_0x1345b2[_0xb885('0x57')];_0x43c844=_0x1345b2['accessKey'];_0x248e41=_0x1345b2[_0xb885('0x5b')];_0x498b5b=_0x1345b2[_0xb885('0x58')];var _0x41af32=_0x498b5b[_0xb885('0x5c')](-0x1);if(_0x41af32==='/'){_0x498b5b=_0x498b5b['substring'](0x0,_0x498b5b[_0xb885('0x5d')](_0x41af32));}_0x54fc98=util[_0xb885('0x5e')](_0xb885('0x5f'),_0x498b5b);var _0xfab95a={'method':'GET','uri':_0x54fc98,'qs':{'operation':_0xb885('0x60'),'username':_0x1345b2[_0xb885('0x57')]},'json':!![]};return rp(_0xfab95a);}})[_0xb885('0x24')](function(_0x37f7d3){if(_0x37f7d3[_0xb885('0x61')]){var _0x25721d={'method':'POST','uri':_0x54fc98,'form':{'operation':_0xb885('0x62'),'username':_0x4e0215,'accessKey':md5(_0x37f7d3[_0xb885('0x63')]['token']+_0x43c844)},'json':!![]};return rp(_0x25721d);}})[_0xb885('0x24')](function(_0x15396b){if(_0x15396b[_0xb885('0x61')]){var _0xedd30={'method':_0xb885('0x64'),'uri':_0x54fc98,'qs':{'operation':_0xb885('0x65'),'username':_0x4e0215,'sessionName':_0x15396b['result']['sessionName'],'elementType':_0x248e41},'json':!![]};return rp(_0xedd30);}})['then'](function(_0x445d77){if(_0x445d77[_0xb885('0x61')]){var _0x34d041=[_0xb885('0x66'),_0xb885('0x67'),_0xb885('0x68')];_[_0xb885('0x69')](_0x445d77[_0xb885('0x63')][_0xb885('0x34')],function(_0x49686f){return _0x34d041[_0xb885('0x6a')](_0x49686f[_0xb885('0x2d')][_0xb885('0x28')]);});_[_0xb885('0x69')](_0x445d77['result'][_0xb885('0x34')],function(_0x395ba6){return _0x395ba6[_0xb885('0x6b')]===_0xb885('0x6c');});return{'count':_0x445d77['result']['fields'][_0xb885('0x35')],'rows':_['map'](_0x445d77['result'][_0xb885('0x34')],function(_0x21faa3){return{'id':_0x21faa3[_0xb885('0x28')],'name':_0x21faa3[_0xb885('0x6d')],'custom':_[_0xb885('0x6e')](_0x21faa3[_0xb885('0x28')],_0xb885('0x6f'))?!![]:![],'options':_0x21faa3[_0xb885('0x2d')]['name']===_0xb885('0x70')&&_0x21faa3['type'][_0xb885('0x71')][_0xb885('0x35')]>0x0?_['map'](_0x21faa3['type'][_0xb885('0x71')],function(_0x55fccf){return{'name':_0x55fccf[_0xb885('0x6d')],'value':_0x55fccf[_0xb885('0x72')]};}):[]};})};}})[_0xb885('0x24')](respondWithResult(_0x5e5c24,null))[_0xb885('0x46')](function(_0x2c10ca){console[_0xb885('0x73')](_0xb885('0x74')+_0x2c10ca);var _0x764853=_0x453f23['query'][_0xb885('0x75')]?0x1f4:_0x2c10ca[_0xb885('0x76')]||0x1f4;logger[_0xb885('0x26')]('getFields,\x20%s,\x20%s,\x20%s',_0xb885('0x56'),_0x764853,JSON[_0xb885('0x77')](_0x2c10ca));delete _0x2c10ca['name'];if(_0x764853===0x191){_0x764853=0x190;}_0x5e5c24[_0xb885('0x1a')](_0x764853)['send'](_0x453f23[_0xb885('0x30')][_0xb885('0x75')]?{'message':_0xb885('0x78'),'statusCode':_0x2c10ca[_0xb885('0x76')]}:_0x2c10ca);});};
\ No newline at end of file
index 1095c57..4c3ff02 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf76a=['VtigerAccount','int_vtiger_accounts','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./intVtigerAccount.attributes','../../components/integrations/configuration','exports','define'];(function(_0x2536ea,_0x4aa898){var _0x6248be=function(_0x3f4a1c){while(--_0x3f4a1c){_0x2536ea['push'](_0x2536ea['shift']());}};_0x6248be(++_0x4aa898);}(_0xf76a,0xd4));var _0xaf76=function(_0x228b77,_0x47215f){_0x228b77=_0x228b77-0x0;var _0x527bbd=_0xf76a[_0x228b77];return _0x527bbd;};'use strict';var _=require(_0xaf76('0x0'));var util=require(_0xaf76('0x1'));var logger=require(_0xaf76('0x2'))(_0xaf76('0x3'));var moment=require(_0xaf76('0x4'));var BPromise=require(_0xaf76('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xaf76('0x6'));var rimraf=require(_0xaf76('0x7'));var config=require(_0xaf76('0x8'));var attributes=require(_0xaf76('0x9'));var integrations=require(_0xaf76('0xa'));module[_0xaf76('0xb')]=function(_0x3ad8bc,_0x50d8a6){return _0x3ad8bc[_0xaf76('0xc')](_0xaf76('0xd'),attributes,{'tableName':_0xaf76('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x53a2=['api','bluebird','request-promise','path','rimraf','../../config/environment','./intVtigerAccount.attributes','../../components/integrations/configuration','exports','VtigerAccount','int_vtiger_accounts','lodash','util','../../config/logger'];(function(_0x43a6ae,_0x4add90){var _0x43ea4a=function(_0x5c8e43){while(--_0x5c8e43){_0x43a6ae['push'](_0x43a6ae['shift']());}};_0x43ea4a(++_0x4add90);}(_0x53a2,0xeb));var _0x253a=function(_0x92c450,_0x41f1e3){_0x92c450=_0x92c450-0x0;var _0x2a9599=_0x53a2[_0x92c450];return _0x2a9599;};'use strict';var _=require(_0x253a('0x0'));var util=require(_0x253a('0x1'));var logger=require(_0x253a('0x2'))(_0x253a('0x3'));var moment=require('moment');var BPromise=require(_0x253a('0x4'));var rp=require(_0x253a('0x5'));var fs=require('fs');var path=require(_0x253a('0x6'));var rimraf=require(_0x253a('0x7'));var config=require(_0x253a('0x8'));var attributes=require(_0x253a('0x9'));var integrations=require(_0x253a('0xa'));module[_0x253a('0xb')]=function(_0x874a1d,_0x5bbd4e){return _0x874a1d['define'](_0x253a('0xc'),attributes,{'tableName':_0x253a('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8e45062..b61aed7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e6c=['where','limit','include','map','attributes','model','GetVtigerAccount','ShowVtigerAccount','find','lodash','util','bluebird','randomstring','../../config/utils','rpc','jayson/promise','client','then','info','VtigerAccount,\x20%s,\x20%s','request\x20sent','debug','VtigerAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','VtigerAccount','findAll','options','raw'];(function(_0x74071,_0x3c574a){var _0x29a146=function(_0x4b70a0){while(--_0x4b70a0){_0x74071['push'](_0x74071['shift']());}};_0x29a146(++_0x3c574a);}(_0x6e6c,0xc3));var _0xc6e6=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x6e6c[_0x2dafbe];return _0x58a45a;};'use strict';var _=require(_0xc6e6('0x0'));var util=require(_0xc6e6('0x1'));var moment=require('moment');var BPromise=require(_0xc6e6('0x2'));var rs=require(_0xc6e6('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xc6e6('0x4'));var logger=require('../../config/logger')(_0xc6e6('0x5'));var config=require('../../config/environment');var jayson=require(_0xc6e6('0x6'));var client=jayson[_0xc6e6('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x301f55,_0x30a10b,_0x4da7bd){return new BPromise(function(_0x324706,_0x15d268){return client['request'](_0x301f55,_0x4da7bd)[_0xc6e6('0x8')](function(_0x481799){logger[_0xc6e6('0x9')](_0xc6e6('0xa'),_0x30a10b,_0xc6e6('0xb'));logger[_0xc6e6('0xc')](_0xc6e6('0xd'),_0x30a10b,_0xc6e6('0xb'),JSON[_0xc6e6('0xe')](_0x481799));if(_0x481799[_0xc6e6('0xf')]){if(_0x481799[_0xc6e6('0xf')]['code']===0x1f4){logger[_0xc6e6('0xf')]('VtigerAccount,\x20%s,\x20%s',_0x30a10b,_0x481799[_0xc6e6('0xf')][_0xc6e6('0x10')]);return _0x15d268(_0x481799[_0xc6e6('0xf')][_0xc6e6('0x10')]);}logger['error'](_0xc6e6('0xa'),_0x30a10b,_0x481799[_0xc6e6('0xf')][_0xc6e6('0x10')]);return _0x324706(_0x481799[_0xc6e6('0xf')][_0xc6e6('0x10')]);}else{logger['info'](_0xc6e6('0xa'),_0x30a10b,_0xc6e6('0xb'));_0x324706(_0x481799['result'][_0xc6e6('0x10')]);}})[_0xc6e6('0x11')](function(_0xedf127){logger['error']('VtigerAccount,\x20%s,\x20%s',_0x30a10b,_0xedf127);_0x15d268(_0xedf127);});});}exports['GetVtigerAccount']=function(_0x3a1ccc){var _0x554262=this;return new Promise(function(_0x46e58f,_0x2069e4){return db[_0xc6e6('0x12')][_0xc6e6('0x13')]({'raw':_0x3a1ccc[_0xc6e6('0x14')]?_0x3a1ccc[_0xc6e6('0x14')][_0xc6e6('0x15')]===undefined?!![]:![]:!![],'where':_0x3a1ccc[_0xc6e6('0x14')]?_0x3a1ccc[_0xc6e6('0x14')][_0xc6e6('0x16')]||null:null,'attributes':_0x3a1ccc['options']?_0x3a1ccc[_0xc6e6('0x14')]['attributes']||null:null,'limit':_0x3a1ccc[_0xc6e6('0x14')]?_0x3a1ccc[_0xc6e6('0x14')][_0xc6e6('0x17')]||null:null,'include':_0x3a1ccc[_0xc6e6('0x14')]?_0x3a1ccc['options'][_0xc6e6('0x18')]?_[_0xc6e6('0x19')](_0x3a1ccc[_0xc6e6('0x14')][_0xc6e6('0x18')],function(_0x107561){return{'model':db[_0x107561['model']],'as':_0x107561['as'],'attributes':_0x107561[_0xc6e6('0x1a')],'include':_0x107561['include']?_[_0xc6e6('0x19')](_0x107561[_0xc6e6('0x18')],function(_0x2e5e0e){return{'model':db[_0x2e5e0e[_0xc6e6('0x1b')]],'as':_0x2e5e0e['as'],'attributes':_0x2e5e0e['attributes'],'include':_0x2e5e0e[_0xc6e6('0x18')]?_['map'](_0x2e5e0e[_0xc6e6('0x18')],function(_0x534745){return{'model':db[_0x534745[_0xc6e6('0x1b')]],'as':_0x534745['as'],'attributes':_0x534745[_0xc6e6('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xc6e6('0x8')](function(_0x41e7c2){logger[_0xc6e6('0x9')]('GetVtigerAccount',_0x3a1ccc);logger[_0xc6e6('0xc')](_0xc6e6('0x1c'),_0x3a1ccc,JSON[_0xc6e6('0xe')](_0x41e7c2));_0x46e58f(_0x41e7c2);})[_0xc6e6('0x11')](function(_0x4d1284){logger[_0xc6e6('0xf')]('GetVtigerAccount',_0x4d1284[_0xc6e6('0x10')],_0x3a1ccc);_0x2069e4(_0x554262[_0xc6e6('0xf')](0x1f4,_0x4d1284[_0xc6e6('0x10')]));});});};exports[_0xc6e6('0x1d')]=function(_0xd3b63){var _0x402598=this;return new Promise(function(_0x43ff9c,_0x337442){return db[_0xc6e6('0x12')][_0xc6e6('0x1e')]({'raw':_0xd3b63[_0xc6e6('0x14')]?_0xd3b63[_0xc6e6('0x14')][_0xc6e6('0x15')]===undefined?!![]:![]:!![],'where':_0xd3b63[_0xc6e6('0x14')]?_0xd3b63[_0xc6e6('0x14')][_0xc6e6('0x16')]||null:null,'attributes':_0xd3b63[_0xc6e6('0x14')]?_0xd3b63['options'][_0xc6e6('0x1a')]||null:null,'include':_0xd3b63[_0xc6e6('0x14')]?_0xd3b63['options']['include']?_[_0xc6e6('0x19')](_0xd3b63[_0xc6e6('0x14')][_0xc6e6('0x18')],function(_0x152e45){return{'model':db[_0x152e45[_0xc6e6('0x1b')]],'as':_0x152e45['as'],'attributes':_0x152e45[_0xc6e6('0x1a')],'include':_0x152e45['include']?_[_0xc6e6('0x19')](_0x152e45[_0xc6e6('0x18')],function(_0x1fff39){return{'model':db[_0x1fff39['model']],'as':_0x1fff39['as'],'attributes':_0x1fff39['attributes'],'include':_0x1fff39[_0xc6e6('0x18')]?_[_0xc6e6('0x19')](_0x1fff39[_0xc6e6('0x18')],function(_0x2db0a2){return{'model':db[_0x2db0a2['model']],'as':_0x2db0a2['as'],'attributes':_0x2db0a2['attributes']};}):[]};}):[]};}):[]:[]})[_0xc6e6('0x8')](function(_0x4e94ea){logger[_0xc6e6('0x9')]('ShowVtigerAccount',_0xd3b63);logger[_0xc6e6('0xc')](_0xc6e6('0x1d'),_0xd3b63,JSON[_0xc6e6('0xe')](_0x4e94ea));_0x43ff9c(_0x4e94ea);})[_0xc6e6('0x11')](function(_0x58b972){logger['error'](_0xc6e6('0x1d'),_0x58b972[_0xc6e6('0x10')],_0xd3b63);_0x337442(_0x402598[_0xc6e6('0xf')](0x1f4,_0x58b972[_0xc6e6('0x10')]));});});};
\ No newline at end of file
+var _0x04b8=['jayson/promise','http','then','info','VtigerAccount,\x20%s,\x20%s','request\x20sent','VtigerAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','GetVtigerAccount','VtigerAccount','findAll','options','where','attributes','limit','map','model','include','debug','catch','ShowVtigerAccount','find','util','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment'];(function(_0x2741d1,_0x501426){var _0x521e37=function(_0x31b546){while(--_0x31b546){_0x2741d1['push'](_0x2741d1['shift']());}};_0x521e37(++_0x501426);}(_0x04b8,0x159));var _0x804b=function(_0x1ca4e4,_0x64ed76){_0x1ca4e4=_0x1ca4e4-0x0;var _0x2ad214=_0x04b8[_0x1ca4e4];return _0x2ad214;};'use strict';var _=require('lodash');var util=require(_0x804b('0x0'));var moment=require('moment');var BPromise=require(_0x804b('0x1'));var rs=require(_0x804b('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x804b('0x3'))['db'];var utils=require(_0x804b('0x4'));var logger=require('../../config/logger')(_0x804b('0x5'));var config=require(_0x804b('0x6'));var jayson=require(_0x804b('0x7'));var client=jayson['client'][_0x804b('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3c5404,_0x476262,_0x50826d){return new BPromise(function(_0x27e950,_0x1071b4){return client['request'](_0x3c5404,_0x50826d)[_0x804b('0x9')](function(_0x336325){logger[_0x804b('0xa')](_0x804b('0xb'),_0x476262,_0x804b('0xc'));logger['debug'](_0x804b('0xd'),_0x476262,_0x804b('0xc'),JSON[_0x804b('0xe')](_0x336325));if(_0x336325[_0x804b('0xf')]){if(_0x336325[_0x804b('0xf')][_0x804b('0x10')]===0x1f4){logger['error'](_0x804b('0xb'),_0x476262,_0x336325['error'][_0x804b('0x11')]);return _0x1071b4(_0x336325[_0x804b('0xf')][_0x804b('0x11')]);}logger[_0x804b('0xf')]('VtigerAccount,\x20%s,\x20%s',_0x476262,_0x336325[_0x804b('0xf')][_0x804b('0x11')]);return _0x27e950(_0x336325[_0x804b('0xf')][_0x804b('0x11')]);}else{logger['info'](_0x804b('0xb'),_0x476262,_0x804b('0xc'));_0x27e950(_0x336325['result'][_0x804b('0x11')]);}})['catch'](function(_0x2c90b9){logger[_0x804b('0xf')](_0x804b('0xb'),_0x476262,_0x2c90b9);_0x1071b4(_0x2c90b9);});});}exports[_0x804b('0x12')]=function(_0x3a05c0){var _0x5a0a82=this;return new Promise(function(_0x871d6c,_0x50b4fe){return db[_0x804b('0x13')][_0x804b('0x14')]({'raw':_0x3a05c0[_0x804b('0x15')]?_0x3a05c0[_0x804b('0x15')]['raw']===undefined?!![]:![]:!![],'where':_0x3a05c0[_0x804b('0x15')]?_0x3a05c0[_0x804b('0x15')][_0x804b('0x16')]||null:null,'attributes':_0x3a05c0[_0x804b('0x15')]?_0x3a05c0[_0x804b('0x15')][_0x804b('0x17')]||null:null,'limit':_0x3a05c0[_0x804b('0x15')]?_0x3a05c0[_0x804b('0x15')][_0x804b('0x18')]||null:null,'include':_0x3a05c0[_0x804b('0x15')]?_0x3a05c0[_0x804b('0x15')]['include']?_[_0x804b('0x19')](_0x3a05c0[_0x804b('0x15')]['include'],function(_0x44a921){return{'model':db[_0x44a921[_0x804b('0x1a')]],'as':_0x44a921['as'],'attributes':_0x44a921[_0x804b('0x17')],'include':_0x44a921[_0x804b('0x1b')]?_[_0x804b('0x19')](_0x44a921['include'],function(_0x2de812){return{'model':db[_0x2de812[_0x804b('0x1a')]],'as':_0x2de812['as'],'attributes':_0x2de812['attributes'],'include':_0x2de812[_0x804b('0x1b')]?_[_0x804b('0x19')](_0x2de812[_0x804b('0x1b')],function(_0x27d5ec){return{'model':db[_0x27d5ec[_0x804b('0x1a')]],'as':_0x27d5ec['as'],'attributes':_0x27d5ec['attributes']};}):[]};}):[]};}):[]:[]})[_0x804b('0x9')](function(_0x22f822){logger[_0x804b('0xa')](_0x804b('0x12'),_0x3a05c0);logger[_0x804b('0x1c')]('GetVtigerAccount',_0x3a05c0,JSON[_0x804b('0xe')](_0x22f822));_0x871d6c(_0x22f822);})[_0x804b('0x1d')](function(_0x410871){logger['error'](_0x804b('0x12'),_0x410871[_0x804b('0x11')],_0x3a05c0);_0x50b4fe(_0x5a0a82[_0x804b('0xf')](0x1f4,_0x410871['message']));});});};exports[_0x804b('0x1e')]=function(_0x471c04){var _0x5e8f85=this;return new Promise(function(_0x391376,_0x37dd3e){return db[_0x804b('0x13')][_0x804b('0x1f')]({'raw':_0x471c04[_0x804b('0x15')]?_0x471c04[_0x804b('0x15')]['raw']===undefined?!![]:![]:!![],'where':_0x471c04[_0x804b('0x15')]?_0x471c04[_0x804b('0x15')][_0x804b('0x16')]||null:null,'attributes':_0x471c04[_0x804b('0x15')]?_0x471c04[_0x804b('0x15')][_0x804b('0x17')]||null:null,'include':_0x471c04[_0x804b('0x15')]?_0x471c04[_0x804b('0x15')][_0x804b('0x1b')]?_[_0x804b('0x19')](_0x471c04[_0x804b('0x15')][_0x804b('0x1b')],function(_0x34d5d0){return{'model':db[_0x34d5d0[_0x804b('0x1a')]],'as':_0x34d5d0['as'],'attributes':_0x34d5d0[_0x804b('0x17')],'include':_0x34d5d0[_0x804b('0x1b')]?_[_0x804b('0x19')](_0x34d5d0[_0x804b('0x1b')],function(_0xf47023){return{'model':db[_0xf47023[_0x804b('0x1a')]],'as':_0xf47023['as'],'attributes':_0xf47023[_0x804b('0x17')],'include':_0xf47023[_0x804b('0x1b')]?_[_0x804b('0x19')](_0xf47023[_0x804b('0x1b')],function(_0x35150b){return{'model':db[_0x35150b['model']],'as':_0x35150b['as'],'attributes':_0x35150b['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x3da331){logger[_0x804b('0xa')](_0x804b('0x1e'),_0x471c04);logger['debug']('ShowVtigerAccount',_0x471c04,JSON['stringify'](_0x3da331));_0x391376(_0x3da331);})[_0x804b('0x1d')](function(_0x1aaa47){logger[_0x804b('0xf')](_0x804b('0x1e'),_0x1aaa47[_0x804b('0x11')],_0x471c04);_0x37dd3e(_0x5e8f85[_0x804b('0xf')](0x1f4,_0x1aaa47[_0x804b('0x11')]));});});};
\ No newline at end of file
index 42f7d10..d58218b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x87cc=['../../config/environment','./intVtigerConfiguration.controller','get','isAuthenticated','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','post','create','put','delete','exports','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0xca1643,_0x3eaf18){var _0x5dec49=function(_0x5e0bd9){while(--_0x5e0bd9){_0xca1643['push'](_0xca1643['shift']());}};_0x5dec49(++_0x3eaf18);}(_0x87cc,0xec));var _0xc87c=function(_0x4158c8,_0xa26189){_0x4158c8=_0x4158c8-0x0;var _0x20a22c=_0x87cc[_0x4158c8];return _0x20a22c;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xc87c('0x0'));var timeout=require(_0xc87c('0x1'));var express=require('express');var router=express[_0xc87c('0x2')]();var fs_extra=require(_0xc87c('0x3'));var auth=require(_0xc87c('0x4'));var interaction=require(_0xc87c('0x5'));var config=require(_0xc87c('0x6'));var controller=require(_0xc87c('0x7'));router[_0xc87c('0x8')]('/',auth[_0xc87c('0x9')](),controller['index']);router[_0xc87c('0x8')]('/:id',auth[_0xc87c('0x9')](),controller[_0xc87c('0xa')]);router['get'](_0xc87c('0xb'),auth[_0xc87c('0x9')](),controller[_0xc87c('0xc')]);router[_0xc87c('0x8')](_0xc87c('0xd'),auth['isAuthenticated'](),controller[_0xc87c('0xe')]);router[_0xc87c('0x8')](_0xc87c('0xf'),auth[_0xc87c('0x9')](),controller[_0xc87c('0x10')]);router[_0xc87c('0x11')]('/',auth[_0xc87c('0x9')](),controller[_0xc87c('0x12')]);router[_0xc87c('0x13')]('/:id',auth[_0xc87c('0x9')](),controller['update']);router[_0xc87c('0x14')]('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0xc87c('0x15')]=router;
\ No newline at end of file
+var _0x9d6a=['./intVtigerConfiguration.controller','isAuthenticated','index','get','/:id','show','/:id/subjects','/:id/descriptions','getDescriptions','post','create','put','update','destroy','multer','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x822f7f,_0x355c78){var _0x4c2a28=function(_0x933b07){while(--_0x933b07){_0x822f7f['push'](_0x822f7f['shift']());}};_0x4c2a28(++_0x355c78);}(_0x9d6a,0xe0));var _0xa9d6=function(_0x5bf2cf,_0x2b9a8a){_0x5bf2cf=_0x5bf2cf-0x0;var _0x1715e6=_0x9d6a[_0x5bf2cf];return _0x1715e6;};'use strict';var multer=require(_0xa9d6('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xa9d6('0x1'));var express=require('express');var router=express[_0xa9d6('0x2')]();var fs_extra=require(_0xa9d6('0x3'));var auth=require(_0xa9d6('0x4'));var interaction=require(_0xa9d6('0x5'));var config=require(_0xa9d6('0x6'));var controller=require(_0xa9d6('0x7'));router['get']('/',auth[_0xa9d6('0x8')](),controller[_0xa9d6('0x9')]);router[_0xa9d6('0xa')](_0xa9d6('0xb'),auth[_0xa9d6('0x8')](),controller[_0xa9d6('0xc')]);router['get']('/:id/fields',auth[_0xa9d6('0x8')](),controller['getFields']);router['get'](_0xa9d6('0xd'),auth[_0xa9d6('0x8')](),controller['getSubjects']);router[_0xa9d6('0xa')](_0xa9d6('0xe'),auth['isAuthenticated'](),controller[_0xa9d6('0xf')]);router[_0xa9d6('0x10')]('/',auth['isAuthenticated'](),controller[_0xa9d6('0x11')]);router[_0xa9d6('0x12')](_0xa9d6('0xb'),auth['isAuthenticated'](),controller[_0xa9d6('0x13')]);router['delete'](_0xa9d6('0xb'),auth[_0xa9d6('0x8')](),controller[_0xa9d6('0x14')]);module['exports']=router;
\ No newline at end of file
index bc1beef..60d8f89 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x047c=['sequelize','exports','STRING'];(function(_0x369268,_0x401490){var _0x346f5a=function(_0x2ea126){while(--_0x2ea126){_0x369268['push'](_0x369268['shift']());}};_0x346f5a(++_0x401490);}(_0x047c,0xd5));var _0xc047=function(_0x1a03e1,_0x3f5037){_0x1a03e1=_0x1a03e1-0x0;var _0x528919=_0x047c[_0x1a03e1];return _0x528919;};'use strict';var Sequelize=require(_0xc047('0x0'));module[_0xc047('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xc047('0x2')]}};
\ No newline at end of file
+var _0x875f=['STRING'];(function(_0x4e1a81,_0x4c3697){var _0x52ea72=function(_0x4cda82){while(--_0x4cda82){_0x4e1a81['push'](_0x4e1a81['shift']());}};_0x52ea72(++_0x4c3697);}(_0x875f,0xfa));var _0xf875=function(_0x1d2662,_0xd527e9){_0x1d2662=_0x1d2662-0x0;var _0x5c1c0a=_0x875f[_0x1d2662];return _0x5c1c0a;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xf875('0x0')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index e36eeb9..bb4cde9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad53=['VtigerField','nolimit','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','apply','save','update','then','name','send','map','VtigerConfiguration','rawAttributes','fieldName','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','limit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','show','keys','find','catch','create','body','params','destroy','getFields','findOne'];(function(_0x3bdd40,_0x414ee6){var _0x216370=function(_0x3e6252){while(--_0x3e6252){_0x3bdd40['push'](_0x3bdd40['shift']());}};_0x216370(++_0x414ee6);}(_0xad53,0x1ea));var _0x3ad5=function(_0x470faa,_0x369fdb){_0x470faa=_0x470faa-0x0;var _0x188e51=_0xad53[_0x470faa];return _0x188e51;};'use strict';var emlformat=require(_0x3ad5('0x0'));var rimraf=require(_0x3ad5('0x1'));var zipdir=require(_0x3ad5('0x2'));var jsonpatch=require(_0x3ad5('0x3'));var rp=require(_0x3ad5('0x4'));var moment=require(_0x3ad5('0x5'));var BPromise=require(_0x3ad5('0x6'));var Mustache=require(_0x3ad5('0x7'));var util=require('util');var path=require(_0x3ad5('0x8'));var sox=require(_0x3ad5('0x9'));var csv=require(_0x3ad5('0xa'));var ejs=require(_0x3ad5('0xb'));var fs=require('fs');var fs_extra=require(_0x3ad5('0xc'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x3ad5('0xd'));var deskjs=require(_0x3ad5('0xe'));var toCsv=require(_0x3ad5('0xa'));var querystring=require(_0x3ad5('0xf'));var Papa=require(_0x3ad5('0x10'));var Redis=require(_0x3ad5('0x11'));var authService=require(_0x3ad5('0x12'));var qs=require(_0x3ad5('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3ad5('0x14'));var logger=require(_0x3ad5('0x15'))(_0x3ad5('0x16'));var utils=require(_0x3ad5('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x3ad5('0x18'));var db=require(_0x3ad5('0x19'))['db'];function respondWithStatusCode(_0x1dc68b,_0x542e82){_0x542e82=_0x542e82||0xcc;return function(_0x1bd82f){if(_0x1bd82f){return _0x1dc68b[_0x3ad5('0x1a')](_0x542e82);}return _0x1dc68b[_0x3ad5('0x1b')](_0x542e82)[_0x3ad5('0x1c')]();};}function respondWithResult(_0x2cfe73,_0x28d6ad){_0x28d6ad=_0x28d6ad||0xc8;return function(_0x50758e){if(_0x50758e){return _0x2cfe73['status'](_0x28d6ad)[_0x3ad5('0x1d')](_0x50758e);}};}function respondWithFilteredResult(_0x278364,_0xabcbc0){return function(_0x70aec9){if(_0x70aec9){var _0x1d5868=typeof _0xabcbc0[_0x3ad5('0x1e')]==='undefined'&&typeof _0xabcbc0['limit']===_0x3ad5('0x1f');var _0x421d09=_0x70aec9['count'];var _0x5d557e=_0x1d5868?0x0:_0xabcbc0[_0x3ad5('0x1e')];var _0xd8775=_0x1d5868?_0x70aec9[_0x3ad5('0x20')]:_0xabcbc0[_0x3ad5('0x1e')]+_0xabcbc0['limit'];var _0xb97fb9;if(_0xd8775>=_0x421d09){_0xd8775=_0x421d09;_0xb97fb9=0xc8;}else{_0xb97fb9=0xce;}_0x278364[_0x3ad5('0x1b')](_0xb97fb9);return _0x278364[_0x3ad5('0x21')](_0x3ad5('0x22'),_0x5d557e+'-'+_0xd8775+'/'+_0x421d09)[_0x3ad5('0x1d')](_0x70aec9);}return null;};}function patchUpdates(_0x1c37c7){return function(_0x3aaef8){try{jsonpatch[_0x3ad5('0x23')](_0x3aaef8,_0x1c37c7,!![]);}catch(_0x177760){return BPromise['reject'](_0x177760);}return _0x3aaef8[_0x3ad5('0x24')]();};}function saveUpdates(_0x4d00e2,_0x936a29){return function(_0x58a06f){if(_0x58a06f){return _0x58a06f[_0x3ad5('0x25')](_0x4d00e2)[_0x3ad5('0x26')](function(_0x1dcde4){return _0x1dcde4;});}return null;};}function removeEntity(_0xeaf8f7,_0x24d2ee){return function(_0x26b402){if(_0x26b402){return _0x26b402['destroy']()[_0x3ad5('0x26')](function(){_0xeaf8f7[_0x3ad5('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0xaa80a,_0x24f7e1){return function(_0x42c242){if(!_0x42c242){_0xaa80a['sendStatus'](0x194);}return _0x42c242;};}function handleError(_0x8ef5c,_0x429ea6){_0x429ea6=_0x429ea6||0x1f4;return function(_0x40da5d){logger['error'](_0x40da5d['stack']);if(_0x40da5d['name']){delete _0x40da5d[_0x3ad5('0x27')];}_0x8ef5c[_0x3ad5('0x1b')](_0x429ea6)[_0x3ad5('0x28')](_0x40da5d);};}exports['index']=function(_0x1aa234,_0x1724fc){var _0x489de6={},_0x4c66f7={},_0x2a402c={'count':0x0,'rows':[]};var _0x5c2d1e=_[_0x3ad5('0x29')](db[_0x3ad5('0x2a')][_0x3ad5('0x2b')],function(_0x389abd){return{'name':_0x389abd[_0x3ad5('0x2c')],'type':_0x389abd['type']['key']};});_0x4c66f7[_0x3ad5('0x2d')]=_[_0x3ad5('0x29')](_0x5c2d1e,_0x3ad5('0x27'));_0x4c66f7[_0x3ad5('0x2e')]=_['keys'](_0x1aa234[_0x3ad5('0x2e')]);_0x4c66f7[_0x3ad5('0x2f')]=_[_0x3ad5('0x30')](_0x4c66f7[_0x3ad5('0x2d')],_0x4c66f7[_0x3ad5('0x2e')]);_0x489de6[_0x3ad5('0x31')]=_[_0x3ad5('0x30')](_0x4c66f7[_0x3ad5('0x2d')],qs[_0x3ad5('0x32')](_0x1aa234[_0x3ad5('0x2e')]['fields']));_0x489de6[_0x3ad5('0x31')]=_0x489de6[_0x3ad5('0x31')][_0x3ad5('0x33')]?_0x489de6[_0x3ad5('0x31')]:_0x4c66f7[_0x3ad5('0x2d')];if(!_0x1aa234[_0x3ad5('0x2e')][_0x3ad5('0x34')]('nolimit')){_0x489de6['limit']=qs[_0x3ad5('0x35')](_0x1aa234[_0x3ad5('0x2e')]['limit']);_0x489de6[_0x3ad5('0x1e')]=qs[_0x3ad5('0x1e')](_0x1aa234[_0x3ad5('0x2e')][_0x3ad5('0x1e')]);}_0x489de6[_0x3ad5('0x36')]=qs[_0x3ad5('0x37')](_0x1aa234[_0x3ad5('0x2e')][_0x3ad5('0x37')]);_0x489de6[_0x3ad5('0x38')]=qs[_0x3ad5('0x2f')](_[_0x3ad5('0x39')](_0x1aa234[_0x3ad5('0x2e')],_0x4c66f7[_0x3ad5('0x2f')]),_0x5c2d1e);if(_0x1aa234['query'][_0x3ad5('0x3a')]){_0x489de6['where']=_[_0x3ad5('0x3b')](_0x489de6[_0x3ad5('0x38')],{'$or':_[_0x3ad5('0x29')](_0x5c2d1e,function(_0x31cc70){if(_0x31cc70[_0x3ad5('0x3c')]!==_0x3ad5('0x3d')){var _0x183dcb={};_0x183dcb[_0x31cc70['name']]={'$like':'%'+_0x1aa234['query'][_0x3ad5('0x3a')]+'%'};return _0x183dcb;}})});}_0x489de6=_[_0x3ad5('0x3b')]({},_0x489de6,_0x1aa234[_0x3ad5('0x3e')]);var _0x1a9b61={'where':_0x489de6[_0x3ad5('0x38')]};return db[_0x3ad5('0x2a')][_0x3ad5('0x20')](_0x1a9b61)[_0x3ad5('0x26')](function(_0x462e00){_0x2a402c[_0x3ad5('0x20')]=_0x462e00;if(_0x1aa234[_0x3ad5('0x2e')][_0x3ad5('0x3f')]){_0x489de6[_0x3ad5('0x40')]=[{'all':!![]}];}return db[_0x3ad5('0x2a')][_0x3ad5('0x41')](_0x489de6);})[_0x3ad5('0x26')](function(_0x26ae59){_0x2a402c[_0x3ad5('0x42')]=_0x26ae59;return _0x2a402c;})['then'](respondWithFilteredResult(_0x1724fc,_0x489de6))['catch'](handleError(_0x1724fc,null));};exports[_0x3ad5('0x43')]=function(_0x6d237e,_0x550c1c){var _0x6a73f3={'raw':![],'where':{'id':_0x6d237e['params']['id']}},_0x47f797={};_0x47f797[_0x3ad5('0x2d')]=_[_0x3ad5('0x44')](db[_0x3ad5('0x2a')][_0x3ad5('0x2b')]);_0x47f797[_0x3ad5('0x2e')]=_[_0x3ad5('0x44')](_0x6d237e[_0x3ad5('0x2e')]);_0x47f797['filters']=_[_0x3ad5('0x30')](_0x47f797[_0x3ad5('0x2d')],_0x47f797[_0x3ad5('0x2e')]);_0x6a73f3[_0x3ad5('0x31')]=_[_0x3ad5('0x30')](_0x47f797['model'],qs[_0x3ad5('0x32')](_0x6d237e[_0x3ad5('0x2e')][_0x3ad5('0x32')]));_0x6a73f3[_0x3ad5('0x31')]=_0x6a73f3['attributes']['length']?_0x6a73f3['attributes']:_0x47f797[_0x3ad5('0x2d')];if(_0x6d237e[_0x3ad5('0x2e')][_0x3ad5('0x3f')]){_0x6a73f3[_0x3ad5('0x40')]=[{'all':!![]}];}_0x6a73f3=_['merge']({},_0x6a73f3,_0x6d237e['options']);return db[_0x3ad5('0x2a')][_0x3ad5('0x45')](_0x6a73f3)[_0x3ad5('0x26')](handleEntityNotFound(_0x550c1c,null))['then'](respondWithResult(_0x550c1c,null))[_0x3ad5('0x46')](handleError(_0x550c1c,null));};exports[_0x3ad5('0x47')]=function(_0x597c62,_0x26acf4){return db[_0x3ad5('0x2a')][_0x3ad5('0x47')](_0x597c62['body'],{})['then'](respondWithResult(_0x26acf4,0xc9))[_0x3ad5('0x46')](handleError(_0x26acf4,null));};exports['update']=function(_0x256c1d,_0x5351d9){if(_0x256c1d[_0x3ad5('0x48')]['id']){delete _0x256c1d[_0x3ad5('0x48')]['id'];}return db['VtigerConfiguration'][_0x3ad5('0x45')]({'where':{'id':_0x256c1d[_0x3ad5('0x49')]['id']}})[_0x3ad5('0x26')](handleEntityNotFound(_0x5351d9,null))['then'](saveUpdates(_0x256c1d['body'],null))[_0x3ad5('0x26')](respondWithResult(_0x5351d9,null))[_0x3ad5('0x46')](handleError(_0x5351d9,null));};exports[_0x3ad5('0x4a')]=function(_0x3cd138,_0x1b423c){return db['VtigerConfiguration'][_0x3ad5('0x45')]({'where':{'id':_0x3cd138[_0x3ad5('0x49')]['id']}})['then'](handleEntityNotFound(_0x1b423c,null))[_0x3ad5('0x26')](removeEntity(_0x1b423c,null))['catch'](handleError(_0x1b423c,null));};exports[_0x3ad5('0x4b')]=function(_0x101f05,_0x28ca27,_0x13f65b){var _0x38634a={};var _0x204bae={};var _0x386f76;var _0x3b4609;return db[_0x3ad5('0x2a')][_0x3ad5('0x4c')]({'where':{'id':_0x101f05['params']['id']}})[_0x3ad5('0x26')](handleEntityNotFound(_0x28ca27,null))[_0x3ad5('0x26')](function(_0x57177c){if(_0x57177c){_0x386f76=_0x57177c;_0x204bae[_0x3ad5('0x2d')]=_['keys'](db[_0x3ad5('0x4d')]['rawAttributes']);_0x204bae[_0x3ad5('0x2e')]=_[_0x3ad5('0x44')](_0x101f05['query']);_0x204bae[_0x3ad5('0x2f')]=_['intersection'](_0x204bae[_0x3ad5('0x2d')],_0x204bae[_0x3ad5('0x2e')]);_0x38634a[_0x3ad5('0x31')]=_['intersection'](_0x204bae[_0x3ad5('0x2d')],qs['fields'](_0x101f05[_0x3ad5('0x2e')]['fields']));_0x38634a[_0x3ad5('0x31')]=_0x38634a[_0x3ad5('0x31')][_0x3ad5('0x33')]?_0x38634a[_0x3ad5('0x31')]:_0x204bae['model'];_0x38634a['order']=qs[_0x3ad5('0x37')](_0x101f05[_0x3ad5('0x2e')][_0x3ad5('0x37')]);_0x38634a['where']=qs['filters'](_[_0x3ad5('0x39')](_0x101f05[_0x3ad5('0x2e')],_0x204bae[_0x3ad5('0x2f')]));if(_0x101f05[_0x3ad5('0x2e')]['filter']){_0x38634a[_0x3ad5('0x38')]=_[_0x3ad5('0x3b')](_0x38634a[_0x3ad5('0x38')],{'$or':_[_0x3ad5('0x29')](_0x38634a[_0x3ad5('0x31')],function(_0x141b4f){var _0x5b5845={};_0x5b5845[_0x141b4f]={'$like':'%'+_0x101f05['query'][_0x3ad5('0x3a')]+'%'};return _0x5b5845;})});}_0x38634a=_[_0x3ad5('0x3b')]({},_0x38634a,_0x101f05[_0x3ad5('0x3e')]);return _0x386f76['getFields'](_0x38634a);}})['then'](function(_0x5cc254){if(_0x5cc254){_0x3b4609=_0x5cc254['length'];if(!_0x101f05['query']['hasOwnProperty'](_0x3ad5('0x4e'))){_0x38634a['limit']=qs[_0x3ad5('0x35')](_0x101f05['query'][_0x3ad5('0x35')]);_0x38634a[_0x3ad5('0x1e')]=qs[_0x3ad5('0x1e')](_0x101f05[_0x3ad5('0x2e')][_0x3ad5('0x1e')]);}return _0x386f76[_0x3ad5('0x4b')](_0x38634a);}})['then'](function(_0x42ea5c){if(_0x42ea5c){return _0x42ea5c?{'count':_0x3b4609,'rows':_0x42ea5c}:null;}})['then'](respondWithResult(_0x28ca27,null))['catch'](handleError(_0x28ca27,null));};exports['getSubjects']=function(_0xde030c,_0x3121d1,_0x24f4fa){var _0x15bf13={};var _0x18424f={};var _0x259ada;var _0x57ba6a;return db[_0x3ad5('0x2a')][_0x3ad5('0x4c')]({'where':{'id':_0xde030c[_0x3ad5('0x49')]['id']}})[_0x3ad5('0x26')](handleEntityNotFound(_0x3121d1,null))[_0x3ad5('0x26')](function(_0x367e3c){if(_0x367e3c){_0x259ada=_0x367e3c;_0x18424f[_0x3ad5('0x2d')]=_[_0x3ad5('0x44')](db['VtigerField'][_0x3ad5('0x2b')]);_0x18424f['query']=_[_0x3ad5('0x44')](_0xde030c[_0x3ad5('0x2e')]);_0x18424f[_0x3ad5('0x2f')]=_[_0x3ad5('0x30')](_0x18424f[_0x3ad5('0x2d')],_0x18424f[_0x3ad5('0x2e')]);_0x15bf13[_0x3ad5('0x31')]=_[_0x3ad5('0x30')](_0x18424f['model'],qs['fields'](_0xde030c[_0x3ad5('0x2e')][_0x3ad5('0x32')]));_0x15bf13['attributes']=_0x15bf13['attributes'][_0x3ad5('0x33')]?_0x15bf13[_0x3ad5('0x31')]:_0x18424f[_0x3ad5('0x2d')];_0x15bf13['order']=qs[_0x3ad5('0x37')](_0xde030c[_0x3ad5('0x2e')][_0x3ad5('0x37')]);_0x15bf13['where']=qs['filters'](_[_0x3ad5('0x39')](_0xde030c[_0x3ad5('0x2e')],_0x18424f[_0x3ad5('0x2f')]));if(_0xde030c[_0x3ad5('0x2e')][_0x3ad5('0x3a')]){_0x15bf13[_0x3ad5('0x38')]=_[_0x3ad5('0x3b')](_0x15bf13[_0x3ad5('0x38')],{'$or':_[_0x3ad5('0x29')](_0x15bf13[_0x3ad5('0x31')],function(_0x220335){var _0x6dd459={};_0x6dd459[_0x220335]={'$like':'%'+_0xde030c[_0x3ad5('0x2e')][_0x3ad5('0x3a')]+'%'};return _0x6dd459;})});}_0x15bf13=_[_0x3ad5('0x3b')]({},_0x15bf13,_0xde030c[_0x3ad5('0x3e')]);return _0x259ada['getSubjects'](_0x15bf13);}})[_0x3ad5('0x26')](function(_0x2b427){if(_0x2b427){_0x57ba6a=_0x2b427['length'];if(!_0xde030c[_0x3ad5('0x2e')][_0x3ad5('0x34')](_0x3ad5('0x4e'))){_0x15bf13[_0x3ad5('0x35')]=qs[_0x3ad5('0x35')](_0xde030c['query'][_0x3ad5('0x35')]);_0x15bf13['offset']=qs['offset'](_0xde030c[_0x3ad5('0x2e')]['offset']);}return _0x259ada[_0x3ad5('0x4f')](_0x15bf13);}})['then'](function(_0x4fb098){if(_0x4fb098){return _0x4fb098?{'count':_0x57ba6a,'rows':_0x4fb098}:null;}})[_0x3ad5('0x26')](respondWithResult(_0x3121d1,null))[_0x3ad5('0x46')](handleError(_0x3121d1,null));};exports[_0x3ad5('0x50')]=function(_0x19f5af,_0x48a3eb,_0x5cc738){var _0x4603b8={};var _0x2ef921={};var _0x246abe;var _0x2722a9;return db['VtigerConfiguration'][_0x3ad5('0x4c')]({'where':{'id':_0x19f5af[_0x3ad5('0x49')]['id']}})[_0x3ad5('0x26')](handleEntityNotFound(_0x48a3eb,null))[_0x3ad5('0x26')](function(_0x158d8d){if(_0x158d8d){_0x246abe=_0x158d8d;_0x2ef921[_0x3ad5('0x2d')]=_[_0x3ad5('0x44')](db['VtigerField']['rawAttributes']);_0x2ef921[_0x3ad5('0x2e')]=_['keys'](_0x19f5af['query']);_0x2ef921['filters']=_['intersection'](_0x2ef921[_0x3ad5('0x2d')],_0x2ef921[_0x3ad5('0x2e')]);_0x4603b8[_0x3ad5('0x31')]=_[_0x3ad5('0x30')](_0x2ef921[_0x3ad5('0x2d')],qs[_0x3ad5('0x32')](_0x19f5af[_0x3ad5('0x2e')][_0x3ad5('0x32')]));_0x4603b8[_0x3ad5('0x31')]=_0x4603b8['attributes'][_0x3ad5('0x33')]?_0x4603b8[_0x3ad5('0x31')]:_0x2ef921[_0x3ad5('0x2d')];_0x4603b8[_0x3ad5('0x36')]=qs[_0x3ad5('0x37')](_0x19f5af[_0x3ad5('0x2e')][_0x3ad5('0x37')]);_0x4603b8[_0x3ad5('0x38')]=qs[_0x3ad5('0x2f')](_['pick'](_0x19f5af[_0x3ad5('0x2e')],_0x2ef921['filters']));if(_0x19f5af[_0x3ad5('0x2e')][_0x3ad5('0x3a')]){_0x4603b8[_0x3ad5('0x38')]=_[_0x3ad5('0x3b')](_0x4603b8[_0x3ad5('0x38')],{'$or':_['map'](_0x4603b8['attributes'],function(_0x37f98c){var _0x2c4d30={};_0x2c4d30[_0x37f98c]={'$like':'%'+_0x19f5af[_0x3ad5('0x2e')][_0x3ad5('0x3a')]+'%'};return _0x2c4d30;})});}_0x4603b8=_['merge']({},_0x4603b8,_0x19f5af[_0x3ad5('0x3e')]);return _0x246abe[_0x3ad5('0x50')](_0x4603b8);}})['then'](function(_0x1811ee){if(_0x1811ee){_0x2722a9=_0x1811ee[_0x3ad5('0x33')];if(!_0x19f5af[_0x3ad5('0x2e')]['hasOwnProperty'](_0x3ad5('0x4e'))){_0x4603b8['limit']=qs[_0x3ad5('0x35')](_0x19f5af[_0x3ad5('0x2e')][_0x3ad5('0x35')]);_0x4603b8['offset']=qs['offset'](_0x19f5af[_0x3ad5('0x2e')][_0x3ad5('0x1e')]);}return _0x246abe['getDescriptions'](_0x4603b8);}})['then'](function(_0x3a70c9){if(_0x3a70c9){return _0x3a70c9?{'count':_0x2722a9,'rows':_0x3a70c9}:null;}})[_0x3ad5('0x26')](respondWithResult(_0x48a3eb,null))[_0x3ad5('0x46')](handleError(_0x48a3eb,null));};
\ No newline at end of file
+var _0x55e0=['querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','limit','count','offset','Content-Range','apply','save','update','then','end','stack','name','index','VtigerConfiguration','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','include','findAll','rows','fields','includeAll','find','catch','create','body','params','destroy','findOne','VtigerField','getFields','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','path','sox','to-csv','lodash','crypto','jsforce','desk.js'];(function(_0x2adf72,_0x1a88a9){var _0x234214=function(_0x1bf232){while(--_0x1bf232){_0x2adf72['push'](_0x2adf72['shift']());}};_0x234214(++_0x1a88a9);}(_0x55e0,0xdc));var _0x055e=function(_0x1a021b,_0xf4ee94){_0x1a021b=_0x1a021b-0x0;var _0x1a34a3=_0x55e0[_0x1a021b];return _0x1a34a3;};'use strict';var emlformat=require(_0x055e('0x0'));var rimraf=require(_0x055e('0x1'));var zipdir=require(_0x055e('0x2'));var jsonpatch=require(_0x055e('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x055e('0x4'));var Mustache=require(_0x055e('0x5'));var util=require(_0x055e('0x6'));var path=require(_0x055e('0x7'));var sox=require(_0x055e('0x8'));var csv=require(_0x055e('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x055e('0xa'));var squel=require('squel');var crypto=require(_0x055e('0xb'));var jsforce=require(_0x055e('0xc'));var deskjs=require(_0x055e('0xd'));var toCsv=require(_0x055e('0x9'));var querystring=require(_0x055e('0xe'));var Papa=require('papaparse');var Redis=require(_0x055e('0xf'));var authService=require(_0x055e('0x10'));var qs=require(_0x055e('0x11'));var as=require(_0x055e('0x12'));var hardwareService=require(_0x055e('0x13'));var logger=require('../../config/logger')('api');var utils=require(_0x055e('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x055e('0x15'));var db=require(_0x055e('0x16'))['db'];function respondWithStatusCode(_0x72d424,_0x101bc3){_0x101bc3=_0x101bc3||0xcc;return function(_0xc98c6a){if(_0xc98c6a){return _0x72d424[_0x055e('0x17')](_0x101bc3);}return _0x72d424[_0x055e('0x18')](_0x101bc3)['end']();};}function respondWithResult(_0x14064d,_0xb80d83){_0xb80d83=_0xb80d83||0xc8;return function(_0x3cfd14){if(_0x3cfd14){return _0x14064d[_0x055e('0x18')](_0xb80d83)[_0x055e('0x19')](_0x3cfd14);}};}function respondWithFilteredResult(_0x56af18,_0x230674){return function(_0x2fe55f){if(_0x2fe55f){var _0x111cdb=typeof _0x230674['offset']===_0x055e('0x1a')&&typeof _0x230674[_0x055e('0x1b')]===_0x055e('0x1a');var _0x2bad86=_0x2fe55f[_0x055e('0x1c')];var _0x4c85dd=_0x111cdb?0x0:_0x230674[_0x055e('0x1d')];var _0x2cf3de=_0x111cdb?_0x2fe55f[_0x055e('0x1c')]:_0x230674[_0x055e('0x1d')]+_0x230674['limit'];var _0x4004ce;if(_0x2cf3de>=_0x2bad86){_0x2cf3de=_0x2bad86;_0x4004ce=0xc8;}else{_0x4004ce=0xce;}_0x56af18[_0x055e('0x18')](_0x4004ce);return _0x56af18['set'](_0x055e('0x1e'),_0x4c85dd+'-'+_0x2cf3de+'/'+_0x2bad86)[_0x055e('0x19')](_0x2fe55f);}return null;};}function patchUpdates(_0x10258f){return function(_0x124d86){try{jsonpatch[_0x055e('0x1f')](_0x124d86,_0x10258f,!![]);}catch(_0x4675ff){return BPromise['reject'](_0x4675ff);}return _0x124d86[_0x055e('0x20')]();};}function saveUpdates(_0x2f0346,_0x211594){return function(_0x5930ff){if(_0x5930ff){return _0x5930ff[_0x055e('0x21')](_0x2f0346)[_0x055e('0x22')](function(_0x32c64e){return _0x32c64e;});}return null;};}function removeEntity(_0x37243b,_0x51df23){return function(_0x71a6e1){if(_0x71a6e1){return _0x71a6e1['destroy']()[_0x055e('0x22')](function(){_0x37243b[_0x055e('0x18')](0xcc)[_0x055e('0x23')]();});}};}function handleEntityNotFound(_0x1a76c6,_0x40c62a){return function(_0x4c653c){if(!_0x4c653c){_0x1a76c6['sendStatus'](0x194);}return _0x4c653c;};}function handleError(_0x2fb49b,_0x1f90a9){_0x1f90a9=_0x1f90a9||0x1f4;return function(_0x2a82f8){logger['error'](_0x2a82f8[_0x055e('0x24')]);if(_0x2a82f8[_0x055e('0x25')]){delete _0x2a82f8[_0x055e('0x25')];}_0x2fb49b[_0x055e('0x18')](_0x1f90a9)['send'](_0x2a82f8);};}exports[_0x055e('0x26')]=function(_0x5958ef,_0x1528c3){var _0x35def0={},_0x23a506={},_0x7822db={'count':0x0,'rows':[]};var _0x1610f1=_['map'](db[_0x055e('0x27')][_0x055e('0x28')],function(_0x293062){return{'name':_0x293062[_0x055e('0x29')],'type':_0x293062[_0x055e('0x2a')][_0x055e('0x2b')]};});_0x23a506[_0x055e('0x2c')]=_[_0x055e('0x2d')](_0x1610f1,'name');_0x23a506[_0x055e('0x2e')]=_[_0x055e('0x2f')](_0x5958ef['query']);_0x23a506[_0x055e('0x30')]=_[_0x055e('0x31')](_0x23a506[_0x055e('0x2c')],_0x23a506[_0x055e('0x2e')]);_0x35def0[_0x055e('0x32')]=_[_0x055e('0x31')](_0x23a506['model'],qs['fields'](_0x5958ef[_0x055e('0x2e')]['fields']));_0x35def0['attributes']=_0x35def0['attributes'][_0x055e('0x33')]?_0x35def0[_0x055e('0x32')]:_0x23a506[_0x055e('0x2c')];if(!_0x5958ef[_0x055e('0x2e')][_0x055e('0x34')](_0x055e('0x35'))){_0x35def0[_0x055e('0x1b')]=qs[_0x055e('0x1b')](_0x5958ef[_0x055e('0x2e')][_0x055e('0x1b')]);_0x35def0[_0x055e('0x1d')]=qs[_0x055e('0x1d')](_0x5958ef['query']['offset']);}_0x35def0[_0x055e('0x36')]=qs[_0x055e('0x37')](_0x5958ef[_0x055e('0x2e')][_0x055e('0x37')]);_0x35def0[_0x055e('0x38')]=qs[_0x055e('0x30')](_[_0x055e('0x39')](_0x5958ef['query'],_0x23a506[_0x055e('0x30')]),_0x1610f1);if(_0x5958ef[_0x055e('0x2e')][_0x055e('0x3a')]){_0x35def0[_0x055e('0x38')]=_[_0x055e('0x3b')](_0x35def0['where'],{'$or':_[_0x055e('0x2d')](_0x1610f1,function(_0x3017f4){if(_0x3017f4['type']!==_0x055e('0x3c')){var _0x1a109f={};_0x1a109f[_0x3017f4['name']]={'$like':'%'+_0x5958ef[_0x055e('0x2e')][_0x055e('0x3a')]+'%'};return _0x1a109f;}})});}_0x35def0=_['merge']({},_0x35def0,_0x5958ef[_0x055e('0x3d')]);var _0x233423={'where':_0x35def0['where']};return db[_0x055e('0x27')][_0x055e('0x1c')](_0x233423)[_0x055e('0x22')](function(_0x4ac128){_0x7822db[_0x055e('0x1c')]=_0x4ac128;if(_0x5958ef[_0x055e('0x2e')]['includeAll']){_0x35def0[_0x055e('0x3e')]=[{'all':!![]}];}return db[_0x055e('0x27')][_0x055e('0x3f')](_0x35def0);})['then'](function(_0x228eca){_0x7822db[_0x055e('0x40')]=_0x228eca;return _0x7822db;})[_0x055e('0x22')](respondWithFilteredResult(_0x1528c3,_0x35def0))['catch'](handleError(_0x1528c3,null));};exports['show']=function(_0x27c49c,_0x237318){var _0x4ff19e={'raw':![],'where':{'id':_0x27c49c['params']['id']}},_0x3a5bc5={};_0x3a5bc5[_0x055e('0x2c')]=_['keys'](db[_0x055e('0x27')][_0x055e('0x28')]);_0x3a5bc5[_0x055e('0x2e')]=_['keys'](_0x27c49c['query']);_0x3a5bc5[_0x055e('0x30')]=_[_0x055e('0x31')](_0x3a5bc5[_0x055e('0x2c')],_0x3a5bc5[_0x055e('0x2e')]);_0x4ff19e['attributes']=_['intersection'](_0x3a5bc5[_0x055e('0x2c')],qs[_0x055e('0x41')](_0x27c49c['query'][_0x055e('0x41')]));_0x4ff19e[_0x055e('0x32')]=_0x4ff19e[_0x055e('0x32')][_0x055e('0x33')]?_0x4ff19e[_0x055e('0x32')]:_0x3a5bc5[_0x055e('0x2c')];if(_0x27c49c['query'][_0x055e('0x42')]){_0x4ff19e[_0x055e('0x3e')]=[{'all':!![]}];}_0x4ff19e=_['merge']({},_0x4ff19e,_0x27c49c[_0x055e('0x3d')]);return db[_0x055e('0x27')][_0x055e('0x43')](_0x4ff19e)[_0x055e('0x22')](handleEntityNotFound(_0x237318,null))[_0x055e('0x22')](respondWithResult(_0x237318,null))[_0x055e('0x44')](handleError(_0x237318,null));};exports[_0x055e('0x45')]=function(_0x4ee2f8,_0x35b2c6){return db['VtigerConfiguration'][_0x055e('0x45')](_0x4ee2f8[_0x055e('0x46')],{})[_0x055e('0x22')](respondWithResult(_0x35b2c6,0xc9))['catch'](handleError(_0x35b2c6,null));};exports['update']=function(_0x45845e,_0x20114c){if(_0x45845e[_0x055e('0x46')]['id']){delete _0x45845e[_0x055e('0x46')]['id'];}return db[_0x055e('0x27')][_0x055e('0x43')]({'where':{'id':_0x45845e[_0x055e('0x47')]['id']}})[_0x055e('0x22')](handleEntityNotFound(_0x20114c,null))[_0x055e('0x22')](saveUpdates(_0x45845e['body'],null))[_0x055e('0x22')](respondWithResult(_0x20114c,null))[_0x055e('0x44')](handleError(_0x20114c,null));};exports[_0x055e('0x48')]=function(_0x17695b,_0x335415){return db['VtigerConfiguration'][_0x055e('0x43')]({'where':{'id':_0x17695b[_0x055e('0x47')]['id']}})[_0x055e('0x22')](handleEntityNotFound(_0x335415,null))['then'](removeEntity(_0x335415,null))[_0x055e('0x44')](handleError(_0x335415,null));};exports['getFields']=function(_0x15e442,_0x12f449,_0x49129a){var _0x132752={};var _0x221550={};var _0x3e6329;var _0x5dae63;return db['VtigerConfiguration'][_0x055e('0x49')]({'where':{'id':_0x15e442[_0x055e('0x47')]['id']}})[_0x055e('0x22')](handleEntityNotFound(_0x12f449,null))[_0x055e('0x22')](function(_0x144c77){if(_0x144c77){_0x3e6329=_0x144c77;_0x221550[_0x055e('0x2c')]=_[_0x055e('0x2f')](db[_0x055e('0x4a')][_0x055e('0x28')]);_0x221550[_0x055e('0x2e')]=_['keys'](_0x15e442[_0x055e('0x2e')]);_0x221550[_0x055e('0x30')]=_[_0x055e('0x31')](_0x221550[_0x055e('0x2c')],_0x221550['query']);_0x132752[_0x055e('0x32')]=_[_0x055e('0x31')](_0x221550[_0x055e('0x2c')],qs[_0x055e('0x41')](_0x15e442['query']['fields']));_0x132752[_0x055e('0x32')]=_0x132752[_0x055e('0x32')][_0x055e('0x33')]?_0x132752[_0x055e('0x32')]:_0x221550[_0x055e('0x2c')];_0x132752[_0x055e('0x36')]=qs[_0x055e('0x37')](_0x15e442[_0x055e('0x2e')]['sort']);_0x132752['where']=qs[_0x055e('0x30')](_[_0x055e('0x39')](_0x15e442['query'],_0x221550[_0x055e('0x30')]));if(_0x15e442[_0x055e('0x2e')][_0x055e('0x3a')]){_0x132752[_0x055e('0x38')]=_['merge'](_0x132752[_0x055e('0x38')],{'$or':_[_0x055e('0x2d')](_0x132752[_0x055e('0x32')],function(_0x1ec58d){var _0x41fa58={};_0x41fa58[_0x1ec58d]={'$like':'%'+_0x15e442[_0x055e('0x2e')][_0x055e('0x3a')]+'%'};return _0x41fa58;})});}_0x132752=_[_0x055e('0x3b')]({},_0x132752,_0x15e442['options']);return _0x3e6329[_0x055e('0x4b')](_0x132752);}})[_0x055e('0x22')](function(_0x5bd8f0){if(_0x5bd8f0){_0x5dae63=_0x5bd8f0[_0x055e('0x33')];if(!_0x15e442[_0x055e('0x2e')][_0x055e('0x34')](_0x055e('0x35'))){_0x132752['limit']=qs[_0x055e('0x1b')](_0x15e442[_0x055e('0x2e')][_0x055e('0x1b')]);_0x132752['offset']=qs[_0x055e('0x1d')](_0x15e442[_0x055e('0x2e')][_0x055e('0x1d')]);}return _0x3e6329[_0x055e('0x4b')](_0x132752);}})[_0x055e('0x22')](function(_0x584e60){if(_0x584e60){return _0x584e60?{'count':_0x5dae63,'rows':_0x584e60}:null;}})[_0x055e('0x22')](respondWithResult(_0x12f449,null))[_0x055e('0x44')](handleError(_0x12f449,null));};exports[_0x055e('0x4c')]=function(_0x2934bf,_0xf41173,_0x5df41e){var _0x43f475={};var _0x34c805={};var _0x107b88;var _0x4d65e3;return db[_0x055e('0x27')][_0x055e('0x49')]({'where':{'id':_0x2934bf[_0x055e('0x47')]['id']}})[_0x055e('0x22')](handleEntityNotFound(_0xf41173,null))[_0x055e('0x22')](function(_0x553e16){if(_0x553e16){_0x107b88=_0x553e16;_0x34c805[_0x055e('0x2c')]=_['keys'](db[_0x055e('0x4a')][_0x055e('0x28')]);_0x34c805['query']=_[_0x055e('0x2f')](_0x2934bf[_0x055e('0x2e')]);_0x34c805[_0x055e('0x30')]=_[_0x055e('0x31')](_0x34c805['model'],_0x34c805['query']);_0x43f475[_0x055e('0x32')]=_['intersection'](_0x34c805[_0x055e('0x2c')],qs[_0x055e('0x41')](_0x2934bf[_0x055e('0x2e')][_0x055e('0x41')]));_0x43f475[_0x055e('0x32')]=_0x43f475[_0x055e('0x32')][_0x055e('0x33')]?_0x43f475[_0x055e('0x32')]:_0x34c805[_0x055e('0x2c')];_0x43f475[_0x055e('0x36')]=qs['sort'](_0x2934bf['query'][_0x055e('0x37')]);_0x43f475[_0x055e('0x38')]=qs['filters'](_[_0x055e('0x39')](_0x2934bf['query'],_0x34c805[_0x055e('0x30')]));if(_0x2934bf[_0x055e('0x2e')][_0x055e('0x3a')]){_0x43f475[_0x055e('0x38')]=_[_0x055e('0x3b')](_0x43f475[_0x055e('0x38')],{'$or':_[_0x055e('0x2d')](_0x43f475[_0x055e('0x32')],function(_0x4dfdb0){var _0x144fa1={};_0x144fa1[_0x4dfdb0]={'$like':'%'+_0x2934bf[_0x055e('0x2e')][_0x055e('0x3a')]+'%'};return _0x144fa1;})});}_0x43f475=_[_0x055e('0x3b')]({},_0x43f475,_0x2934bf[_0x055e('0x3d')]);return _0x107b88[_0x055e('0x4c')](_0x43f475);}})[_0x055e('0x22')](function(_0x406bef){if(_0x406bef){_0x4d65e3=_0x406bef[_0x055e('0x33')];if(!_0x2934bf['query'][_0x055e('0x34')](_0x055e('0x35'))){_0x43f475['limit']=qs[_0x055e('0x1b')](_0x2934bf[_0x055e('0x2e')][_0x055e('0x1b')]);_0x43f475[_0x055e('0x1d')]=qs['offset'](_0x2934bf[_0x055e('0x2e')][_0x055e('0x1d')]);}return _0x107b88[_0x055e('0x4c')](_0x43f475);}})[_0x055e('0x22')](function(_0x23aa2b){if(_0x23aa2b){return _0x23aa2b?{'count':_0x4d65e3,'rows':_0x23aa2b}:null;}})['then'](respondWithResult(_0xf41173,null))[_0x055e('0x44')](handleError(_0xf41173,null));};exports[_0x055e('0x4d')]=function(_0x99ef23,_0xe21a0e,_0x51c538){var _0xb8d1b7={};var _0x3101e3={};var _0x2e7b2e;var _0x8e92b4;return db[_0x055e('0x27')]['findOne']({'where':{'id':_0x99ef23[_0x055e('0x47')]['id']}})[_0x055e('0x22')](handleEntityNotFound(_0xe21a0e,null))[_0x055e('0x22')](function(_0x1f3ba4){if(_0x1f3ba4){_0x2e7b2e=_0x1f3ba4;_0x3101e3['model']=_[_0x055e('0x2f')](db[_0x055e('0x4a')][_0x055e('0x28')]);_0x3101e3[_0x055e('0x2e')]=_['keys'](_0x99ef23[_0x055e('0x2e')]);_0x3101e3[_0x055e('0x30')]=_[_0x055e('0x31')](_0x3101e3[_0x055e('0x2c')],_0x3101e3[_0x055e('0x2e')]);_0xb8d1b7['attributes']=_[_0x055e('0x31')](_0x3101e3[_0x055e('0x2c')],qs[_0x055e('0x41')](_0x99ef23['query']['fields']));_0xb8d1b7[_0x055e('0x32')]=_0xb8d1b7['attributes'][_0x055e('0x33')]?_0xb8d1b7[_0x055e('0x32')]:_0x3101e3['model'];_0xb8d1b7[_0x055e('0x36')]=qs[_0x055e('0x37')](_0x99ef23[_0x055e('0x2e')][_0x055e('0x37')]);_0xb8d1b7[_0x055e('0x38')]=qs[_0x055e('0x30')](_[_0x055e('0x39')](_0x99ef23[_0x055e('0x2e')],_0x3101e3[_0x055e('0x30')]));if(_0x99ef23[_0x055e('0x2e')][_0x055e('0x3a')]){_0xb8d1b7[_0x055e('0x38')]=_[_0x055e('0x3b')](_0xb8d1b7[_0x055e('0x38')],{'$or':_[_0x055e('0x2d')](_0xb8d1b7[_0x055e('0x32')],function(_0x5d0ca3){var _0x27e80f={};_0x27e80f[_0x5d0ca3]={'$like':'%'+_0x99ef23['query']['filter']+'%'};return _0x27e80f;})});}_0xb8d1b7=_[_0x055e('0x3b')]({},_0xb8d1b7,_0x99ef23[_0x055e('0x3d')]);return _0x2e7b2e[_0x055e('0x4d')](_0xb8d1b7);}})['then'](function(_0x460fd1){if(_0x460fd1){_0x8e92b4=_0x460fd1[_0x055e('0x33')];if(!_0x99ef23['query'][_0x055e('0x34')](_0x055e('0x35'))){_0xb8d1b7['limit']=qs[_0x055e('0x1b')](_0x99ef23['query'][_0x055e('0x1b')]);_0xb8d1b7[_0x055e('0x1d')]=qs[_0x055e('0x1d')](_0x99ef23[_0x055e('0x2e')]['offset']);}return _0x2e7b2e['getDescriptions'](_0xb8d1b7);}})['then'](function(_0x2f4324){if(_0x2f4324){return _0x2f4324?{'count':_0x8e92b4,'rows':_0x2f4324}:null;}})['then'](respondWithResult(_0xe21a0e,null))['catch'](handleError(_0xe21a0e,null));};
\ No newline at end of file
index 35b5960..be78b2b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc440=['define','int_vtiger_configurations','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intVtigerConfiguration.attributes','exports'];(function(_0x2b7c61,_0x5d8d5b){var _0x127d9d=function(_0xcefacb){while(--_0xcefacb){_0x2b7c61['push'](_0x2b7c61['shift']());}};_0x127d9d(++_0x5d8d5b);}(_0xc440,0x9e));var _0x0c44=function(_0x23d77a,_0x5c651b){_0x23d77a=_0x23d77a-0x0;var _0xffcbc5=_0xc440[_0x23d77a];return _0xffcbc5;};'use strict';var _=require(_0x0c44('0x0'));var util=require('util');var logger=require(_0x0c44('0x1'))(_0x0c44('0x2'));var moment=require(_0x0c44('0x3'));var BPromise=require(_0x0c44('0x4'));var rp=require(_0x0c44('0x5'));var fs=require('fs');var path=require(_0x0c44('0x6'));var rimraf=require(_0x0c44('0x7'));var config=require(_0x0c44('0x8'));var attributes=require(_0x0c44('0x9'));module[_0x0c44('0xa')]=function(_0x29041d,_0x1a0c81){return _0x29041d[_0x0c44('0xb')]('VtigerConfiguration',attributes,{'tableName':_0x0c44('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x837e=['exports','define','VtigerConfiguration','../../config/logger','bluebird','rimraf'];(function(_0x515cad,_0x1c0f21){var _0x11f932=function(_0x270e9d){while(--_0x270e9d){_0x515cad['push'](_0x515cad['shift']());}};_0x11f932(++_0x1c0f21);}(_0x837e,0x159));var _0xe837=function(_0x1cb107,_0x3106a4){_0x1cb107=_0x1cb107-0x0;var _0x25f4a1=_0x837e[_0x1cb107];return _0x25f4a1;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xe837('0x0'))('api');var moment=require('moment');var BPromise=require(_0xe837('0x1'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xe837('0x2'));var config=require('../../config/environment');var attributes=require('./intVtigerConfiguration.attributes');module[_0xe837('0x3')]=function(_0x4395dd,_0x2172e8){return _0x4395dd[_0xe837('0x4')](_0xe837('0x5'),attributes,{'tableName':'int_vtiger_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0675417..4c8a4fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x47b2=['info','VtigerConfiguration,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request'];(function(_0x17406a,_0x1e2320){var _0x1501ff=function(_0x4b075a){while(--_0x4b075a){_0x17406a['push'](_0x17406a['shift']());}};_0x1501ff(++_0x1e2320);}(_0x47b2,0x111));var _0x247b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x47b2[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x247b('0x0'));var util=require(_0x247b('0x1'));var moment=require(_0x247b('0x2'));var BPromise=require(_0x247b('0x3'));var rs=require(_0x247b('0x4'));var fs=require('fs');var Redis=require(_0x247b('0x5'));var db=require(_0x247b('0x6'))['db'];var utils=require(_0x247b('0x7'));var logger=require(_0x247b('0x8'))(_0x247b('0x9'));var config=require(_0x247b('0xa'));var jayson=require(_0x247b('0xb'));var client=jayson[_0x247b('0xc')][_0x247b('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x4d6145,_0x15bdf3,_0x283f88){return new BPromise(function(_0x1cb04f,_0x3577d4){return client[_0x247b('0xe')](_0x4d6145,_0x283f88)['then'](function(_0x4bf273){logger[_0x247b('0xf')](_0x247b('0x10'),_0x15bdf3,_0x247b('0x11'));logger[_0x247b('0x12')]('VtigerConfiguration,\x20%s,\x20%s,\x20%s',_0x15bdf3,_0x247b('0x11'),JSON['stringify'](_0x4bf273));if(_0x4bf273[_0x247b('0x13')]){if(_0x4bf273['error'][_0x247b('0x14')]===0x1f4){logger[_0x247b('0x13')]('VtigerConfiguration,\x20%s,\x20%s',_0x15bdf3,_0x4bf273[_0x247b('0x13')][_0x247b('0x15')]);return _0x3577d4(_0x4bf273[_0x247b('0x13')][_0x247b('0x15')]);}logger[_0x247b('0x13')](_0x247b('0x10'),_0x15bdf3,_0x4bf273[_0x247b('0x13')]['message']);return _0x1cb04f(_0x4bf273[_0x247b('0x13')][_0x247b('0x15')]);}else{logger[_0x247b('0xf')](_0x247b('0x10'),_0x15bdf3,_0x247b('0x11'));_0x1cb04f(_0x4bf273[_0x247b('0x16')][_0x247b('0x15')]);}})[_0x247b('0x17')](function(_0x118df6){logger[_0x247b('0x13')]('VtigerConfiguration,\x20%s,\x20%s',_0x15bdf3,_0x118df6);_0x3577d4(_0x118df6);});});}
\ No newline at end of file
+var _0xd321=['debug','stringify','error','code','VtigerConfiguration,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','then','info','request\x20sent'];(function(_0x1ea57e,_0x40925d){var _0x1564bb=function(_0x493a47){while(--_0x493a47){_0x1ea57e['push'](_0x1ea57e['shift']());}};_0x1564bb(++_0x40925d);}(_0xd321,0x8c));var _0x1d32=function(_0x6c3c46,_0x4ae7df){_0x6c3c46=_0x6c3c46-0x0;var _0x434c10=_0xd321[_0x6c3c46];return _0x434c10;};'use strict';var _=require(_0x1d32('0x0'));var util=require(_0x1d32('0x1'));var moment=require(_0x1d32('0x2'));var BPromise=require(_0x1d32('0x3'));var rs=require(_0x1d32('0x4'));var fs=require('fs');var Redis=require(_0x1d32('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x1d32('0x6'));var logger=require(_0x1d32('0x7'))(_0x1d32('0x8'));var config=require('../../config/environment');var jayson=require(_0x1d32('0x9'));var client=jayson[_0x1d32('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x354a19,_0x8e12a9,_0x4fb8da){return new BPromise(function(_0x319ce6,_0x17edfb){return client['request'](_0x354a19,_0x4fb8da)[_0x1d32('0xb')](function(_0x1c28f9){logger[_0x1d32('0xc')]('VtigerConfiguration,\x20%s,\x20%s',_0x8e12a9,_0x1d32('0xd'));logger[_0x1d32('0xe')]('VtigerConfiguration,\x20%s,\x20%s,\x20%s',_0x8e12a9,_0x1d32('0xd'),JSON[_0x1d32('0xf')](_0x1c28f9));if(_0x1c28f9[_0x1d32('0x10')]){if(_0x1c28f9[_0x1d32('0x10')][_0x1d32('0x11')]===0x1f4){logger[_0x1d32('0x10')](_0x1d32('0x12'),_0x8e12a9,_0x1c28f9[_0x1d32('0x10')][_0x1d32('0x13')]);return _0x17edfb(_0x1c28f9['error'][_0x1d32('0x13')]);}logger[_0x1d32('0x10')](_0x1d32('0x12'),_0x8e12a9,_0x1c28f9[_0x1d32('0x10')][_0x1d32('0x13')]);return _0x319ce6(_0x1c28f9['error'][_0x1d32('0x13')]);}else{logger[_0x1d32('0xc')](_0x1d32('0x12'),_0x8e12a9,'request\x20sent');_0x319ce6(_0x1c28f9[_0x1d32('0x14')]['message']);}})[_0x1d32('0x15')](function(_0x20dc9b){logger['error'](_0x1d32('0x12'),_0x8e12a9,_0x20dc9b);_0x17edfb(_0x20dc9b);});});}
\ No newline at end of file
index d72fd5c..f58f85e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9dd0=['get','index','/:id','isAuthenticated','show','post','create','delete','destroy','exports','multer','util','express','Router','../../components/interaction/service','./intVtigerField.controller'];(function(_0xebd1b6,_0xddbad6){var _0x126016=function(_0x4b7e34){while(--_0x4b7e34){_0xebd1b6['push'](_0xebd1b6['shift']());}};_0x126016(++_0xddbad6);}(_0x9dd0,0x6a));var _0x09dd=function(_0x479c7f,_0x420811){_0x479c7f=_0x479c7f-0x0;var _0xcf7508=_0x9dd0[_0x479c7f];return _0xcf7508;};'use strict';var multer=require(_0x09dd('0x0'));var util=require(_0x09dd('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x09dd('0x2'));var router=express[_0x09dd('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x09dd('0x4'));var config=require('../../config/environment');var controller=require(_0x09dd('0x5'));router[_0x09dd('0x6')]('/',auth['isAuthenticated'](),controller[_0x09dd('0x7')]);router[_0x09dd('0x6')](_0x09dd('0x8'),auth[_0x09dd('0x9')](),controller[_0x09dd('0xa')]);router[_0x09dd('0xb')]('/',auth[_0x09dd('0x9')](),controller[_0x09dd('0xc')]);router['put'](_0x09dd('0x8'),auth['isAuthenticated'](),controller['update']);router[_0x09dd('0xd')](_0x09dd('0x8'),auth[_0x09dd('0x9')](),controller[_0x09dd('0xe')]);module[_0x09dd('0xf')]=router;
\ No newline at end of file
+var _0xfb9d=['show','post','create','put','update','delete','multer','util','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./intVtigerField.controller','get','isAuthenticated','/:id'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0xfb9d,0x72));var _0xdfb9=function(_0x51dc5c,_0x232d88){_0x51dc5c=_0x51dc5c-0x0;var _0xc29c30=_0xfb9d[_0x51dc5c];return _0xc29c30;};'use strict';var multer=require(_0xdfb9('0x0'));var util=require(_0xdfb9('0x1'));var path=require(_0xdfb9('0x2'));var timeout=require(_0xdfb9('0x3'));var express=require(_0xdfb9('0x4'));var router=express[_0xdfb9('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xdfb9('0x6'));var config=require(_0xdfb9('0x7'));var controller=require(_0xdfb9('0x8'));router[_0xdfb9('0x9')]('/',auth[_0xdfb9('0xa')](),controller['index']);router[_0xdfb9('0x9')](_0xdfb9('0xb'),auth[_0xdfb9('0xa')](),controller[_0xdfb9('0xc')]);router[_0xdfb9('0xd')]('/',auth[_0xdfb9('0xa')](),controller[_0xdfb9('0xe')]);router[_0xdfb9('0xf')](_0xdfb9('0xb'),auth['isAuthenticated'](),controller[_0xdfb9('0x10')]);router[_0xdfb9('0x11')](_0xdfb9('0xb'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 1d1b194..ba0cdf0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3095=['keyValue','picklist','STRING','sequelize','ENUM','string','variable','customVariable'];(function(_0x396836,_0x396ec1){var _0x8c5477=function(_0x1e38f1){while(--_0x1e38f1){_0x396836['push'](_0x396836['shift']());}};_0x8c5477(++_0x396ec1);}(_0x3095,0x153));var _0x5309=function(_0x1024ca,_0x2562fe){_0x1024ca=_0x1024ca-0x0;var _0x390f5c=_0x3095[_0x1024ca];return _0x390f5c;};'use strict';var Sequelize=require(_0x5309('0x0'));module['exports']={'type':{'type':Sequelize[_0x5309('0x1')](_0x5309('0x2'),_0x5309('0x3'),_0x5309('0x4'),_0x5309('0x5'),_0x5309('0x6')),'defaultValue':_0x5309('0x2')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize['ENUM'](_0x5309('0x2'),'variable',_0x5309('0x4'))},'keyContent':{'type':Sequelize[_0x5309('0x7')]},'idField':{'type':Sequelize[_0x5309('0x7')]},'nameField':{'type':Sequelize[_0x5309('0x7')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x5309('0x7')]}};
\ No newline at end of file
+var _0x5953=['variable','customVariable','picklist','STRING','exports','ENUM','string'];(function(_0x1928c9,_0x13a6d1){var _0x51b5fb=function(_0x24cf70){while(--_0x24cf70){_0x1928c9['push'](_0x1928c9['shift']());}};_0x51b5fb(++_0x13a6d1);}(_0x5953,0x1d2));var _0x3595=function(_0x3987bb,_0xceaf48){_0x3987bb=_0x3987bb-0x0;var _0x534a24=_0x5953[_0x3987bb];return _0x534a24;};'use strict';var Sequelize=require('sequelize');module[_0x3595('0x0')]={'type':{'type':Sequelize[_0x3595('0x1')](_0x3595('0x2'),_0x3595('0x3'),_0x3595('0x4'),'keyValue',_0x3595('0x5')),'defaultValue':_0x3595('0x2')},'content':{'type':Sequelize[_0x3595('0x6')]},'key':{'type':Sequelize[_0x3595('0x6')]},'keyType':{'type':Sequelize['ENUM'](_0x3595('0x2'),_0x3595('0x3'),'customVariable')},'keyContent':{'type':Sequelize[_0x3595('0x6')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0x3595('0x6')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x3595('0x6')]}};
\ No newline at end of file
index a1b4779..0fe69cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd45=['crypto','desk.js','ioredis','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','offset','undefined','count','set','json','apply','save','update','then','error','stack','name','index','map','rawAttributes','fieldName','type','model','query','attributes','intersection','fields','hasOwnProperty','nolimit','limit','order','sort','filters','pick','filter','where','VIRTUAL','options','VtigerField','includeAll','findAll','rows','catch','params','keys','length','merge','create','body','find','destroy','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash'];(function(_0xc0374e,_0x2de1fc){var _0x3cabe1=function(_0x2cfcae){while(--_0x2cfcae){_0xc0374e['push'](_0xc0374e['shift']());}};_0x3cabe1(++_0x2de1fc);}(_0xfd45,0x156));var _0x5fd4=function(_0x1da04e,_0x31024b){_0x1da04e=_0x1da04e-0x0;var _0xdd8c41=_0xfd45[_0x1da04e];return _0xdd8c41;};'use strict';var emlformat=require(_0x5fd4('0x0'));var rimraf=require(_0x5fd4('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5fd4('0x2'));var rp=require(_0x5fd4('0x3'));var moment=require(_0x5fd4('0x4'));var BPromise=require(_0x5fd4('0x5'));var Mustache=require(_0x5fd4('0x6'));var util=require(_0x5fd4('0x7'));var path=require(_0x5fd4('0x8'));var sox=require(_0x5fd4('0x9'));var csv=require(_0x5fd4('0xa'));var ejs=require(_0x5fd4('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x5fd4('0xc'));var squel=require('squel');var crypto=require(_0x5fd4('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x5fd4('0xe'));var toCsv=require(_0x5fd4('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x5fd4('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x5fd4('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5fd4('0x11'));var logger=require('../../config/logger')(_0x5fd4('0x12'));var utils=require(_0x5fd4('0x13'));var config=require(_0x5fd4('0x14'));var licenseUtil=require(_0x5fd4('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2739a6,_0x52fa31){_0x52fa31=_0x52fa31||0xcc;return function(_0x54ebaf){if(_0x54ebaf){return _0x2739a6[_0x5fd4('0x16')](_0x52fa31);}return _0x2739a6[_0x5fd4('0x17')](_0x52fa31)[_0x5fd4('0x18')]();};}function respondWithResult(_0x2f8488,_0x588b77){_0x588b77=_0x588b77||0xc8;return function(_0x230e5e){if(_0x230e5e){return _0x2f8488['status'](_0x588b77)['json'](_0x230e5e);}};}function respondWithFilteredResult(_0x1a4269,_0x1b6470){return function(_0xd93780){if(_0xd93780){var _0x500110=typeof _0x1b6470[_0x5fd4('0x19')]===_0x5fd4('0x1a')&&typeof _0x1b6470['limit']===_0x5fd4('0x1a');var _0x37362e=_0xd93780[_0x5fd4('0x1b')];var _0x4f1e72=_0x500110?0x0:_0x1b6470[_0x5fd4('0x19')];var _0x4b3eca=_0x500110?_0xd93780['count']:_0x1b6470[_0x5fd4('0x19')]+_0x1b6470['limit'];var _0x31b1c8;if(_0x4b3eca>=_0x37362e){_0x4b3eca=_0x37362e;_0x31b1c8=0xc8;}else{_0x31b1c8=0xce;}_0x1a4269['status'](_0x31b1c8);return _0x1a4269[_0x5fd4('0x1c')]('Content-Range',_0x4f1e72+'-'+_0x4b3eca+'/'+_0x37362e)[_0x5fd4('0x1d')](_0xd93780);}return null;};}function patchUpdates(_0x44c597){return function(_0x29c9ae){try{jsonpatch[_0x5fd4('0x1e')](_0x29c9ae,_0x44c597,!![]);}catch(_0x3e7fd2){return BPromise['reject'](_0x3e7fd2);}return _0x29c9ae[_0x5fd4('0x1f')]();};}function saveUpdates(_0x4c6e1f,_0x149eab){return function(_0x40ce24){if(_0x40ce24){return _0x40ce24[_0x5fd4('0x20')](_0x4c6e1f)[_0x5fd4('0x21')](function(_0x2e71ad){return _0x2e71ad;});}return null;};}function removeEntity(_0x48e017,_0x473d07){return function(_0x48a75b){if(_0x48a75b){return _0x48a75b['destroy']()['then'](function(){_0x48e017[_0x5fd4('0x17')](0xcc)[_0x5fd4('0x18')]();});}};}function handleEntityNotFound(_0xde6714,_0x1e1af5){return function(_0x48a387){if(!_0x48a387){_0xde6714[_0x5fd4('0x16')](0x194);}return _0x48a387;};}function handleError(_0x526df0,_0x5cab07){_0x5cab07=_0x5cab07||0x1f4;return function(_0xeae3d9){logger[_0x5fd4('0x22')](_0xeae3d9[_0x5fd4('0x23')]);if(_0xeae3d9[_0x5fd4('0x24')]){delete _0xeae3d9[_0x5fd4('0x24')];}_0x526df0[_0x5fd4('0x17')](_0x5cab07)['send'](_0xeae3d9);};}exports[_0x5fd4('0x25')]=function(_0x1049b8,_0x5c961f){var _0x35ace0={},_0x138a97={},_0x4fdd3e={'count':0x0,'rows':[]};var _0x3d7699=_[_0x5fd4('0x26')](db['VtigerField'][_0x5fd4('0x27')],function(_0x50215c){return{'name':_0x50215c[_0x5fd4('0x28')],'type':_0x50215c[_0x5fd4('0x29')]['key']};});_0x138a97[_0x5fd4('0x2a')]=_[_0x5fd4('0x26')](_0x3d7699,_0x5fd4('0x24'));_0x138a97['query']=_['keys'](_0x1049b8[_0x5fd4('0x2b')]);_0x138a97['filters']=_['intersection'](_0x138a97[_0x5fd4('0x2a')],_0x138a97[_0x5fd4('0x2b')]);_0x35ace0[_0x5fd4('0x2c')]=_[_0x5fd4('0x2d')](_0x138a97['model'],qs['fields'](_0x1049b8[_0x5fd4('0x2b')][_0x5fd4('0x2e')]));_0x35ace0['attributes']=_0x35ace0[_0x5fd4('0x2c')]['length']?_0x35ace0[_0x5fd4('0x2c')]:_0x138a97[_0x5fd4('0x2a')];if(!_0x1049b8['query'][_0x5fd4('0x2f')](_0x5fd4('0x30'))){_0x35ace0[_0x5fd4('0x31')]=qs[_0x5fd4('0x31')](_0x1049b8[_0x5fd4('0x2b')][_0x5fd4('0x31')]);_0x35ace0['offset']=qs[_0x5fd4('0x19')](_0x1049b8[_0x5fd4('0x2b')][_0x5fd4('0x19')]);}_0x35ace0[_0x5fd4('0x32')]=qs[_0x5fd4('0x33')](_0x1049b8[_0x5fd4('0x2b')][_0x5fd4('0x33')]);_0x35ace0['where']=qs[_0x5fd4('0x34')](_[_0x5fd4('0x35')](_0x1049b8[_0x5fd4('0x2b')],_0x138a97[_0x5fd4('0x34')]),_0x3d7699);if(_0x1049b8[_0x5fd4('0x2b')][_0x5fd4('0x36')]){_0x35ace0[_0x5fd4('0x37')]=_['merge'](_0x35ace0[_0x5fd4('0x37')],{'$or':_[_0x5fd4('0x26')](_0x3d7699,function(_0x2cf57f){if(_0x2cf57f['type']!==_0x5fd4('0x38')){var _0x3a8042={};_0x3a8042[_0x2cf57f[_0x5fd4('0x24')]]={'$like':'%'+_0x1049b8[_0x5fd4('0x2b')]['filter']+'%'};return _0x3a8042;}})});}_0x35ace0=_['merge']({},_0x35ace0,_0x1049b8[_0x5fd4('0x39')]);var _0x414176={'where':_0x35ace0['where']};return db[_0x5fd4('0x3a')][_0x5fd4('0x1b')](_0x414176)[_0x5fd4('0x21')](function(_0x5ac00a){_0x4fdd3e['count']=_0x5ac00a;if(_0x1049b8[_0x5fd4('0x2b')][_0x5fd4('0x3b')]){_0x35ace0['include']=[{'all':!![]}];}return db['VtigerField'][_0x5fd4('0x3c')](_0x35ace0);})[_0x5fd4('0x21')](function(_0x1992d9){_0x4fdd3e[_0x5fd4('0x3d')]=_0x1992d9;return _0x4fdd3e;})[_0x5fd4('0x21')](respondWithFilteredResult(_0x5c961f,_0x35ace0))[_0x5fd4('0x3e')](handleError(_0x5c961f,null));};exports['show']=function(_0x32276d,_0x50a1f2){var _0x53ec27={'raw':!![],'where':{'id':_0x32276d[_0x5fd4('0x3f')]['id']}},_0x4b6c13={};_0x4b6c13[_0x5fd4('0x2a')]=_[_0x5fd4('0x40')](db[_0x5fd4('0x3a')][_0x5fd4('0x27')]);_0x4b6c13['query']=_['keys'](_0x32276d[_0x5fd4('0x2b')]);_0x4b6c13['filters']=_[_0x5fd4('0x2d')](_0x4b6c13['model'],_0x4b6c13['query']);_0x53ec27[_0x5fd4('0x2c')]=_[_0x5fd4('0x2d')](_0x4b6c13['model'],qs[_0x5fd4('0x2e')](_0x32276d[_0x5fd4('0x2b')][_0x5fd4('0x2e')]));_0x53ec27[_0x5fd4('0x2c')]=_0x53ec27[_0x5fd4('0x2c')][_0x5fd4('0x41')]?_0x53ec27[_0x5fd4('0x2c')]:_0x4b6c13[_0x5fd4('0x2a')];if(_0x32276d[_0x5fd4('0x2b')][_0x5fd4('0x3b')]){_0x53ec27['include']=[{'all':!![]}];}_0x53ec27=_[_0x5fd4('0x42')]({},_0x53ec27,_0x32276d['options']);return db['VtigerField']['find'](_0x53ec27)[_0x5fd4('0x21')](handleEntityNotFound(_0x50a1f2,null))[_0x5fd4('0x21')](respondWithResult(_0x50a1f2,null))[_0x5fd4('0x3e')](handleError(_0x50a1f2,null));};exports[_0x5fd4('0x43')]=function(_0x2dbb29,_0x39aeb5){return db[_0x5fd4('0x3a')]['create'](_0x2dbb29[_0x5fd4('0x44')],{})[_0x5fd4('0x21')](respondWithResult(_0x39aeb5,0xc9))[_0x5fd4('0x3e')](handleError(_0x39aeb5,null));};exports['update']=function(_0x57b243,_0x445e7a){if(_0x57b243[_0x5fd4('0x44')]['id']){delete _0x57b243[_0x5fd4('0x44')]['id'];}return db['VtigerField'][_0x5fd4('0x45')]({'where':{'id':_0x57b243[_0x5fd4('0x3f')]['id']}})[_0x5fd4('0x21')](handleEntityNotFound(_0x445e7a,null))['then'](saveUpdates(_0x57b243['body'],null))[_0x5fd4('0x21')](respondWithResult(_0x445e7a,null))['catch'](handleError(_0x445e7a,null));};exports[_0x5fd4('0x46')]=function(_0x2dd149,_0x4937a){return db['VtigerField'][_0x5fd4('0x45')]({'where':{'id':_0x2dd149[_0x5fd4('0x3f')]['id']}})[_0x5fd4('0x21')](handleEntityNotFound(_0x4937a,null))['then'](removeEntity(_0x4937a,null))['catch'](handleError(_0x4937a,null));};
\ No newline at end of file
+var _0x460e=['then','destroy','error','name','index','type','key','query','keys','intersection','model','fields','attributes','length','nolimit','order','sort','where','filters','filter','map','VIRTUAL','VtigerField','count','includeAll','include','findAll','rows','catch','show','rawAttributes','merge','options','find','create','body','params','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','ejs','fs-extra','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','set','apply','reject','save','update'];(function(_0x2798d0,_0x3ff5be){var _0x58d19e=function(_0x185c96){while(--_0x185c96){_0x2798d0['push'](_0x2798d0['shift']());}};_0x58d19e(++_0x3ff5be);}(_0x460e,0x1e7));var _0xe460=function(_0xdaab62,_0x2728ab){_0xdaab62=_0xdaab62-0x0;var _0x13d767=_0x460e[_0xdaab62];return _0x13d767;};'use strict';var emlformat=require(_0xe460('0x0'));var rimraf=require(_0xe460('0x1'));var zipdir=require(_0xe460('0x2'));var jsonpatch=require(_0xe460('0x3'));var rp=require('request-promise');var moment=require(_0xe460('0x4'));var BPromise=require(_0xe460('0x5'));var Mustache=require(_0xe460('0x6'));var util=require(_0xe460('0x7'));var path=require(_0xe460('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xe460('0x9'));var fs=require('fs');var fs_extra=require(_0xe460('0xa'));var _=require(_0xe460('0xb'));var squel=require(_0xe460('0xc'));var crypto=require('crypto');var jsforce=require(_0xe460('0xd'));var deskjs=require(_0xe460('0xe'));var toCsv=require(_0xe460('0xf'));var querystring=require(_0xe460('0x10'));var Papa=require(_0xe460('0x11'));var Redis=require(_0xe460('0x12'));var authService=require(_0xe460('0x13'));var qs=require(_0xe460('0x14'));var as=require(_0xe460('0x15'));var hardwareService=require(_0xe460('0x16'));var logger=require('../../config/logger')('api');var utils=require(_0xe460('0x17'));var config=require(_0xe460('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xe460('0x19'))['db'];function respondWithStatusCode(_0x13e320,_0x470215){_0x470215=_0x470215||0xcc;return function(_0x40b1b9){if(_0x40b1b9){return _0x13e320[_0xe460('0x1a')](_0x470215);}return _0x13e320[_0xe460('0x1b')](_0x470215)[_0xe460('0x1c')]();};}function respondWithResult(_0x260f16,_0x2ab58c){_0x2ab58c=_0x2ab58c||0xc8;return function(_0x3a5a41){if(_0x3a5a41){return _0x260f16[_0xe460('0x1b')](_0x2ab58c)[_0xe460('0x1d')](_0x3a5a41);}};}function respondWithFilteredResult(_0x4083be,_0x11d692){return function(_0x276be7){if(_0x276be7){var _0x19842e=typeof _0x11d692[_0xe460('0x1e')]===_0xe460('0x1f')&&typeof _0x11d692[_0xe460('0x20')]===_0xe460('0x1f');var _0xef1b7b=_0x276be7['count'];var _0x13dea1=_0x19842e?0x0:_0x11d692[_0xe460('0x1e')];var _0xfe6ce0=_0x19842e?_0x276be7['count']:_0x11d692[_0xe460('0x1e')]+_0x11d692[_0xe460('0x20')];var _0x1a31ef;if(_0xfe6ce0>=_0xef1b7b){_0xfe6ce0=_0xef1b7b;_0x1a31ef=0xc8;}else{_0x1a31ef=0xce;}_0x4083be[_0xe460('0x1b')](_0x1a31ef);return _0x4083be[_0xe460('0x21')]('Content-Range',_0x13dea1+'-'+_0xfe6ce0+'/'+_0xef1b7b)[_0xe460('0x1d')](_0x276be7);}return null;};}function patchUpdates(_0xd488db){return function(_0x217b73){try{jsonpatch[_0xe460('0x22')](_0x217b73,_0xd488db,!![]);}catch(_0x38a03d){return BPromise[_0xe460('0x23')](_0x38a03d);}return _0x217b73[_0xe460('0x24')]();};}function saveUpdates(_0x55d5c4,_0x165d49){return function(_0x4ae2a2){if(_0x4ae2a2){return _0x4ae2a2[_0xe460('0x25')](_0x55d5c4)[_0xe460('0x26')](function(_0x57b1f7){return _0x57b1f7;});}return null;};}function removeEntity(_0x4814cf,_0x237e79){return function(_0x5f5795){if(_0x5f5795){return _0x5f5795[_0xe460('0x27')]()['then'](function(){_0x4814cf['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x5a7db5,_0x27e42c){return function(_0x20adc8){if(!_0x20adc8){_0x5a7db5['sendStatus'](0x194);}return _0x20adc8;};}function handleError(_0x31988b,_0x533c80){_0x533c80=_0x533c80||0x1f4;return function(_0x319c3f){logger[_0xe460('0x28')](_0x319c3f['stack']);if(_0x319c3f[_0xe460('0x29')]){delete _0x319c3f[_0xe460('0x29')];}_0x31988b[_0xe460('0x1b')](_0x533c80)['send'](_0x319c3f);};}exports[_0xe460('0x2a')]=function(_0x25ff84,_0x423202){var _0x275033={},_0x386b98={},_0x2021c9={'count':0x0,'rows':[]};var _0x4550bf=_['map'](db['VtigerField']['rawAttributes'],function(_0x3e1b19){return{'name':_0x3e1b19['fieldName'],'type':_0x3e1b19[_0xe460('0x2b')][_0xe460('0x2c')]};});_0x386b98['model']=_['map'](_0x4550bf,_0xe460('0x29'));_0x386b98[_0xe460('0x2d')]=_[_0xe460('0x2e')](_0x25ff84['query']);_0x386b98['filters']=_[_0xe460('0x2f')](_0x386b98[_0xe460('0x30')],_0x386b98['query']);_0x275033['attributes']=_['intersection'](_0x386b98[_0xe460('0x30')],qs[_0xe460('0x31')](_0x25ff84[_0xe460('0x2d')][_0xe460('0x31')]));_0x275033[_0xe460('0x32')]=_0x275033[_0xe460('0x32')][_0xe460('0x33')]?_0x275033[_0xe460('0x32')]:_0x386b98['model'];if(!_0x25ff84[_0xe460('0x2d')]['hasOwnProperty'](_0xe460('0x34'))){_0x275033[_0xe460('0x20')]=qs[_0xe460('0x20')](_0x25ff84[_0xe460('0x2d')]['limit']);_0x275033['offset']=qs[_0xe460('0x1e')](_0x25ff84[_0xe460('0x2d')][_0xe460('0x1e')]);}_0x275033[_0xe460('0x35')]=qs[_0xe460('0x36')](_0x25ff84[_0xe460('0x2d')][_0xe460('0x36')]);_0x275033[_0xe460('0x37')]=qs[_0xe460('0x38')](_['pick'](_0x25ff84[_0xe460('0x2d')],_0x386b98[_0xe460('0x38')]),_0x4550bf);if(_0x25ff84[_0xe460('0x2d')][_0xe460('0x39')]){_0x275033[_0xe460('0x37')]=_['merge'](_0x275033[_0xe460('0x37')],{'$or':_[_0xe460('0x3a')](_0x4550bf,function(_0x12ad71){if(_0x12ad71[_0xe460('0x2b')]!==_0xe460('0x3b')){var _0x3dd475={};_0x3dd475[_0x12ad71[_0xe460('0x29')]]={'$like':'%'+_0x25ff84[_0xe460('0x2d')]['filter']+'%'};return _0x3dd475;}})});}_0x275033=_['merge']({},_0x275033,_0x25ff84['options']);var _0x2f9b4d={'where':_0x275033['where']};return db[_0xe460('0x3c')][_0xe460('0x3d')](_0x2f9b4d)[_0xe460('0x26')](function(_0x358d5e){_0x2021c9[_0xe460('0x3d')]=_0x358d5e;if(_0x25ff84[_0xe460('0x2d')][_0xe460('0x3e')]){_0x275033[_0xe460('0x3f')]=[{'all':!![]}];}return db[_0xe460('0x3c')][_0xe460('0x40')](_0x275033);})[_0xe460('0x26')](function(_0x549acb){_0x2021c9[_0xe460('0x41')]=_0x549acb;return _0x2021c9;})['then'](respondWithFilteredResult(_0x423202,_0x275033))[_0xe460('0x42')](handleError(_0x423202,null));};exports[_0xe460('0x43')]=function(_0x49bd8c,_0x32f15a){var _0x3bf812={'raw':!![],'where':{'id':_0x49bd8c['params']['id']}},_0x70f4ba={};_0x70f4ba[_0xe460('0x30')]=_[_0xe460('0x2e')](db[_0xe460('0x3c')][_0xe460('0x44')]);_0x70f4ba['query']=_[_0xe460('0x2e')](_0x49bd8c[_0xe460('0x2d')]);_0x70f4ba[_0xe460('0x38')]=_[_0xe460('0x2f')](_0x70f4ba[_0xe460('0x30')],_0x70f4ba[_0xe460('0x2d')]);_0x3bf812[_0xe460('0x32')]=_[_0xe460('0x2f')](_0x70f4ba[_0xe460('0x30')],qs[_0xe460('0x31')](_0x49bd8c[_0xe460('0x2d')]['fields']));_0x3bf812[_0xe460('0x32')]=_0x3bf812[_0xe460('0x32')]['length']?_0x3bf812[_0xe460('0x32')]:_0x70f4ba[_0xe460('0x30')];if(_0x49bd8c['query']['includeAll']){_0x3bf812['include']=[{'all':!![]}];}_0x3bf812=_[_0xe460('0x45')]({},_0x3bf812,_0x49bd8c[_0xe460('0x46')]);return db[_0xe460('0x3c')][_0xe460('0x47')](_0x3bf812)[_0xe460('0x26')](handleEntityNotFound(_0x32f15a,null))['then'](respondWithResult(_0x32f15a,null))[_0xe460('0x42')](handleError(_0x32f15a,null));};exports['create']=function(_0x58a959,_0x3f2666){return db[_0xe460('0x3c')][_0xe460('0x48')](_0x58a959[_0xe460('0x49')],{})[_0xe460('0x26')](respondWithResult(_0x3f2666,0xc9))['catch'](handleError(_0x3f2666,null));};exports[_0xe460('0x25')]=function(_0x4d3317,_0x5dff09){if(_0x4d3317[_0xe460('0x49')]['id']){delete _0x4d3317[_0xe460('0x49')]['id'];}return db[_0xe460('0x3c')][_0xe460('0x47')]({'where':{'id':_0x4d3317[_0xe460('0x4a')]['id']}})[_0xe460('0x26')](handleEntityNotFound(_0x5dff09,null))[_0xe460('0x26')](saveUpdates(_0x4d3317[_0xe460('0x49')],null))[_0xe460('0x26')](respondWithResult(_0x5dff09,null))[_0xe460('0x42')](handleError(_0x5dff09,null));};exports[_0xe460('0x27')]=function(_0xc90bf6,_0x3904ee){return db[_0xe460('0x3c')]['find']({'where':{'id':_0xc90bf6[_0xe460('0x4a')]['id']}})[_0xe460('0x26')](handleEntityNotFound(_0x3904ee,null))[_0xe460('0x26')](removeEntity(_0x3904ee,null))[_0xe460('0x42')](handleError(_0x3904ee,null));};
\ No newline at end of file
index 717914a..cfa1559 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x79d9=['define','VtigerField','vtiger_unique_index','idField','FieldId','lodash','../../config/logger','api','bluebird','request-promise','./intVtigerField.attributes'];(function(_0x5f0ec9,_0xa394f0){var _0x4909b6=function(_0x3f8354){while(--_0x3f8354){_0x5f0ec9['push'](_0x5f0ec9['shift']());}};_0x4909b6(++_0xa394f0);}(_0x79d9,0xaa));var _0x979d=function(_0x4f5b13,_0x4a33bd){_0x4f5b13=_0x4f5b13-0x0;var _0x556ef7=_0x79d9[_0x4f5b13];return _0x556ef7;};'use strict';var _=require(_0x979d('0x0'));var util=require('util');var logger=require(_0x979d('0x1'))(_0x979d('0x2'));var moment=require('moment');var BPromise=require(_0x979d('0x3'));var rp=require(_0x979d('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x979d('0x5'));module['exports']=function(_0x1d3ae5,_0x5cb024){return _0x1d3ae5[_0x979d('0x6')](_0x979d('0x7'),attributes,{'tableName':'int_vtiger_fields','paranoid':![],'indexes':[{'name':_0x979d('0x8'),'fields':[_0x979d('0x9'),_0x979d('0xa')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xe979=['vtiger_unique_index','idField','util','request-promise','path','./intVtigerField.attributes','define','VtigerField','int_vtiger_fields'];(function(_0x1edf2f,_0x4c8248){var _0x1fa04a=function(_0x33f3c2){while(--_0x33f3c2){_0x1edf2f['push'](_0x1edf2f['shift']());}};_0x1fa04a(++_0x4c8248);}(_0xe979,0xe3));var _0x9e97=function(_0x4f70a0,_0x4423d1){_0x4f70a0=_0x4f70a0-0x0;var _0x2b6fea=_0xe979[_0x4f70a0];return _0x2b6fea;};'use strict';var _=require('lodash');var util=require(_0x9e97('0x0'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x9e97('0x1'));var fs=require('fs');var path=require(_0x9e97('0x2'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x9e97('0x3'));module['exports']=function(_0x496096,_0x350e1e){return _0x496096[_0x9e97('0x4')](_0x9e97('0x5'),attributes,{'tableName':_0x9e97('0x6'),'paranoid':![],'indexes':[{'name':_0x9e97('0x7'),'fields':[_0x9e97('0x8'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 116e627..fbe74b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0165=['result','catch','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','VtigerField,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0165,0xde));var _0x5016=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x0165[_0x3947c9];return _0x2e7871;};'use strict';var _=require(_0x5016('0x0'));var util=require(_0x5016('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x5016('0x2'));var fs=require('fs');var Redis=require(_0x5016('0x3'));var db=require(_0x5016('0x4'))['db'];var utils=require(_0x5016('0x5'));var logger=require('../../config/logger')(_0x5016('0x6'));var config=require(_0x5016('0x7'));var jayson=require(_0x5016('0x8'));var client=jayson[_0x5016('0x9')][_0x5016('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x33a8bb,_0x3076e6,_0x6ed40){return new BPromise(function(_0x27e6c7,_0x42bc41){return client[_0x5016('0xb')](_0x33a8bb,_0x6ed40)[_0x5016('0xc')](function(_0x3b02f8){logger['info'](_0x5016('0xd'),_0x3076e6,_0x5016('0xe'));logger[_0x5016('0xf')]('VtigerField,\x20%s,\x20%s,\x20%s',_0x3076e6,'request\x20sent',JSON[_0x5016('0x10')](_0x3b02f8));if(_0x3b02f8[_0x5016('0x11')]){if(_0x3b02f8[_0x5016('0x11')][_0x5016('0x12')]===0x1f4){logger['error'](_0x5016('0xd'),_0x3076e6,_0x3b02f8[_0x5016('0x11')][_0x5016('0x13')]);return _0x42bc41(_0x3b02f8[_0x5016('0x11')][_0x5016('0x13')]);}logger['error'](_0x5016('0xd'),_0x3076e6,_0x3b02f8[_0x5016('0x11')]['message']);return _0x27e6c7(_0x3b02f8[_0x5016('0x11')][_0x5016('0x13')]);}else{logger['info'](_0x5016('0xd'),_0x3076e6,_0x5016('0xe'));_0x27e6c7(_0x3b02f8[_0x5016('0x14')][_0x5016('0x13')]);}})[_0x5016('0x15')](function(_0x446202){logger[_0x5016('0x11')](_0x5016('0xd'),_0x3076e6,_0x446202);_0x42bc41(_0x446202);});});}
\ No newline at end of file
+var _0xf605=['../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','VtigerField,\x20%s,\x20%s','request\x20sent','debug','VtigerField,\x20%s,\x20%s,\x20%s','error','code','message','catch','lodash','util','moment','bluebird'];(function(_0x101dce,_0x3b887c){var _0x5a92bb=function(_0x5bac04){while(--_0x5bac04){_0x101dce['push'](_0x101dce['shift']());}};_0x5a92bb(++_0x3b887c);}(_0xf605,0xd8));var _0x5f60=function(_0x2711b2,_0x187b7d){_0x2711b2=_0x2711b2-0x0;var _0x33cdef=_0xf605[_0x2711b2];return _0x33cdef;};'use strict';var _=require(_0x5f60('0x0'));var util=require(_0x5f60('0x1'));var moment=require(_0x5f60('0x2'));var BPromise=require(_0x5f60('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5f60('0x4'))['db'];var utils=require(_0x5f60('0x5'));var logger=require('../../config/logger')(_0x5f60('0x6'));var config=require(_0x5f60('0x7'));var jayson=require(_0x5f60('0x8'));var client=jayson[_0x5f60('0x9')][_0x5f60('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4f84c0,_0x2b11ba,_0xae577e){return new BPromise(function(_0x7e51a7,_0x16c787){return client[_0x5f60('0xb')](_0x4f84c0,_0xae577e)[_0x5f60('0xc')](function(_0x3c89ea){logger[_0x5f60('0xd')](_0x5f60('0xe'),_0x2b11ba,_0x5f60('0xf'));logger[_0x5f60('0x10')](_0x5f60('0x11'),_0x2b11ba,_0x5f60('0xf'),JSON['stringify'](_0x3c89ea));if(_0x3c89ea[_0x5f60('0x12')]){if(_0x3c89ea[_0x5f60('0x12')][_0x5f60('0x13')]===0x1f4){logger[_0x5f60('0x12')](_0x5f60('0xe'),_0x2b11ba,_0x3c89ea[_0x5f60('0x12')][_0x5f60('0x14')]);return _0x16c787(_0x3c89ea[_0x5f60('0x12')]['message']);}logger['error']('VtigerField,\x20%s,\x20%s',_0x2b11ba,_0x3c89ea[_0x5f60('0x12')]['message']);return _0x7e51a7(_0x3c89ea[_0x5f60('0x12')][_0x5f60('0x14')]);}else{logger['info'](_0x5f60('0xe'),_0x2b11ba,'request\x20sent');_0x7e51a7(_0x3c89ea['result'][_0x5f60('0x14')]);}})[_0x5f60('0x15')](function(_0x15b8ef){logger[_0x5f60('0x12')]('VtigerField,\x20%s,\x20%s',_0x2b11ba,_0x15b8ef);_0x16c787(_0x15b8ef);});});}
\ No newline at end of file
index 5323565..4ec1206 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x56d8=['../../components/interaction/service','./intZendeskAccount.controller','get','isAuthenticated','index','/:id','getConfigurations','/:id/fields','post','create','addConfiguration','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x1e71b8,_0x2ba29c){var _0x32f86e=function(_0x112457){while(--_0x112457){_0x1e71b8['push'](_0x1e71b8['shift']());}};_0x32f86e(++_0x2ba29c);}(_0x56d8,0x11f));var _0x856d=function(_0x13b8f3,_0x442821){_0x13b8f3=_0x13b8f3-0x0;var _0x1a6d06=_0x56d8[_0x13b8f3];return _0x1a6d06;};'use strict';var multer=require(_0x856d('0x0'));var util=require('util');var path=require(_0x856d('0x1'));var timeout=require(_0x856d('0x2'));var express=require(_0x856d('0x3'));var router=express[_0x856d('0x4')]();var fs_extra=require(_0x856d('0x5'));var auth=require(_0x856d('0x6'));var interaction=require(_0x856d('0x7'));var config=require('../../config/environment');var controller=require(_0x856d('0x8'));router[_0x856d('0x9')]('/',auth[_0x856d('0xa')](),controller[_0x856d('0xb')]);router[_0x856d('0x9')](_0x856d('0xc'),auth[_0x856d('0xa')](),controller['show']);router[_0x856d('0x9')]('/:id/configurations',auth[_0x856d('0xa')](),controller[_0x856d('0xd')]);router['get'](_0x856d('0xe'),auth['isAuthenticated'](),controller['getFields']);router[_0x856d('0xf')]('/',auth[_0x856d('0xa')](),controller[_0x856d('0x10')]);router[_0x856d('0xf')]('/:id/configurations',auth[_0x856d('0xa')](),controller[_0x856d('0x11')]);router['put']('/:id',auth['isAuthenticated'](),controller['update']);router[_0x856d('0x12')]('/:id',auth[_0x856d('0xa')](),controller[_0x856d('0x13')]);module[_0x856d('0x14')]=router;
\ No newline at end of file
+var _0x39c4=['isAuthenticated','index','get','/:id','/:id/configurations','getConfigurations','/:id/fields','getFields','create','post','addConfiguration','update','delete','multer','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZendeskAccount.controller'];(function(_0x414cc8,_0x1f184b){var _0xae0512=function(_0x2964c5){while(--_0x2964c5){_0x414cc8['push'](_0x414cc8['shift']());}};_0xae0512(++_0x1f184b);}(_0x39c4,0xdf));var _0x439c=function(_0xcf8e3a,_0x10e8c4){_0xcf8e3a=_0xcf8e3a-0x0;var _0x426f62=_0x39c4[_0xcf8e3a];return _0x426f62;};'use strict';var multer=require(_0x439c('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x439c('0x1'));var express=require(_0x439c('0x2'));var router=express['Router']();var fs_extra=require(_0x439c('0x3'));var auth=require(_0x439c('0x4'));var interaction=require(_0x439c('0x5'));var config=require(_0x439c('0x6'));var controller=require(_0x439c('0x7'));router['get']('/',auth[_0x439c('0x8')](),controller[_0x439c('0x9')]);router[_0x439c('0xa')](_0x439c('0xb'),auth['isAuthenticated'](),controller['show']);router[_0x439c('0xa')](_0x439c('0xc'),auth[_0x439c('0x8')](),controller[_0x439c('0xd')]);router[_0x439c('0xa')](_0x439c('0xe'),auth[_0x439c('0x8')](),controller[_0x439c('0xf')]);router['post']('/',auth['isAuthenticated'](),controller[_0x439c('0x10')]);router[_0x439c('0x11')](_0x439c('0xc'),auth[_0x439c('0x8')](),controller[_0x439c('0x12')]);router['put'](_0x439c('0xb'),auth[_0x439c('0x8')](),controller[_0x439c('0x13')]);router[_0x439c('0x14')](_0x439c('0xb'),auth[_0x439c('0x8')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 9faa1dc..84ee34f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb67=['remoteUri','ENUM','password','token','integrationTab','sequelize','exports','STRING','username'];(function(_0x5e7af9,_0x30ced1){var _0x374f0b=function(_0x25afda){while(--_0x25afda){_0x5e7af9['push'](_0x5e7af9['shift']());}};_0x374f0b(++_0x30ced1);}(_0xfb67,0xdd));var _0x7fb6=function(_0x34844b,_0x4fe97e){_0x34844b=_0x34844b-0x0;var _0x1a1a2b=_0xfb67[_0x34844b];return _0x1a1a2b;};'use strict';var Sequelize=require(_0x7fb6('0x0'));module[_0x7fb6('0x1')]={'name':{'type':Sequelize[_0x7fb6('0x2')]},'description':{'type':Sequelize[_0x7fb6('0x2')]},'username':{'type':Sequelize[_0x7fb6('0x2')],'unique':_0x7fb6('0x3')},'password':{'type':Sequelize[_0x7fb6('0x2')]},'token':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0x7fb6('0x2')],'unique':_0x7fb6('0x4')},'authType':{'type':Sequelize[_0x7fb6('0x5')](_0x7fb6('0x6'),_0x7fb6('0x7')),'defaultValue':'password'},'serverUrl':{'type':Sequelize[_0x7fb6('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x7fb6('0x5')](_0x7fb6('0x8'),'newTab'),'defaultValue':_0x7fb6('0x8')}};
\ No newline at end of file
+var _0xb4d9=['remoteUri','ENUM','password','token','integrationTab','newTab','sequelize','exports','STRING','username'];(function(_0x2ef53f,_0x5a4d76){var _0x5fe361=function(_0x45ab22){while(--_0x45ab22){_0x2ef53f['push'](_0x2ef53f['shift']());}};_0x5fe361(++_0x5a4d76);}(_0xb4d9,0xce));var _0x9b4d=function(_0x39096d,_0x51f8a0){_0x39096d=_0x39096d-0x0;var _0x13da4f=_0xb4d9[_0x39096d];return _0x13da4f;};'use strict';var Sequelize=require(_0x9b4d('0x0'));module[_0x9b4d('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x9b4d('0x2')]},'username':{'type':Sequelize[_0x9b4d('0x2')],'unique':_0x9b4d('0x3')},'password':{'type':Sequelize['STRING']},'token':{'type':Sequelize[_0x9b4d('0x2')]},'remoteUri':{'type':Sequelize[_0x9b4d('0x2')],'unique':_0x9b4d('0x4')},'authType':{'type':Sequelize[_0x9b4d('0x5')](_0x9b4d('0x6'),_0x9b4d('0x7')),'defaultValue':_0x9b4d('0x6')},'serverUrl':{'type':Sequelize[_0x9b4d('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x9b4d('0x5')](_0x9b4d('0x8'),_0x9b4d('0x9')),'defaultValue':'integrationTab'}};
\ No newline at end of file
index 7888a43..709538c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5eb8=['sort','where','filter','merge','type','options','includeAll','findAll','catch','show','params','keys','length','include','find','create','body','update','getConfigurations','findOne','ZendeskConfiguration','pick','addConfiguration','AccountId','Subjects','getSubjects','channel','getDescriptions','ZendeskField','getFields','username','password','token','authType','remoteUri','slice','substring','lastIndexOf','format','ticket_fields','headers','Basic\x20%s','%s:%s','toString','base64','Sequelize','ValidationError','Unknown\x20authentication\x20type','subject','description','group','remove','includes','title','position','system_field_options','custom_field_options','send','Wrong\x20credentials','statusCode','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/logger','../../config/utils','../../config/environment','../../mysqldb','../../components/integrations/configuration','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','destroy','then','sendStatus','error','stack','name','map','ZendeskAccount','rawAttributes','fieldName','key','model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order'];(function(_0x4bfcbe,_0x4630f5){var _0x5b65e6=function(_0x5dcfc8){while(--_0x5dcfc8){_0x4bfcbe['push'](_0x4bfcbe['shift']());}};_0x5b65e6(++_0x4630f5);}(_0x5eb8,0xb0));var _0x85eb=function(_0x4756a1,_0x3f8d1){_0x4756a1=_0x4756a1-0x0;var _0x177c4f=_0x5eb8[_0x4756a1];return _0x177c4f;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x85eb('0x0'));var jsonpatch=require(_0x85eb('0x1'));var rp=require(_0x85eb('0x2'));var moment=require(_0x85eb('0x3'));var BPromise=require(_0x85eb('0x4'));var Mustache=require(_0x85eb('0x5'));var util=require(_0x85eb('0x6'));var path=require(_0x85eb('0x7'));var sox=require(_0x85eb('0x8'));var csv=require(_0x85eb('0x9'));var ejs=require(_0x85eb('0xa'));var fs=require('fs');var fs_extra=require(_0x85eb('0xb'));var _=require('lodash');var squel=require(_0x85eb('0xc'));var crypto=require(_0x85eb('0xd'));var jsforce=require(_0x85eb('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x85eb('0x9'));var querystring=require('querystring');var Papa=require(_0x85eb('0xf'));var Redis=require(_0x85eb('0x10'));var authService=require(_0x85eb('0x11'));var qs=require(_0x85eb('0x12'));var as=require(_0x85eb('0x13'));var hardwareService=require(_0x85eb('0x14'));var logger=require(_0x85eb('0x15'))('api');var utils=require(_0x85eb('0x16'));var config=require(_0x85eb('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x85eb('0x18'))['db'];var integrations=require(_0x85eb('0x19'));function respondWithStatusCode(_0x2f42ba,_0x259f72){_0x259f72=_0x259f72||0xcc;return function(_0x4db167){if(_0x4db167){return _0x2f42ba['sendStatus'](_0x259f72);}return _0x2f42ba[_0x85eb('0x1a')](_0x259f72)['end']();};}function respondWithResult(_0x18ca53,_0x23a82a){_0x23a82a=_0x23a82a||0xc8;return function(_0x600a7f){if(_0x600a7f){return _0x18ca53[_0x85eb('0x1a')](_0x23a82a)[_0x85eb('0x1b')](_0x600a7f);}};}function respondWithFilteredResult(_0x49efdf,_0x2e5c0a){return function(_0x59237b){if(_0x59237b){var _0x17140b=typeof _0x2e5c0a[_0x85eb('0x1c')]===_0x85eb('0x1d')&&typeof _0x2e5c0a[_0x85eb('0x1e')]==='undefined';var _0x5c5cbb=_0x59237b['count'];var _0xe198ca=_0x17140b?0x0:_0x2e5c0a[_0x85eb('0x1c')];var _0x10cf2f=_0x17140b?_0x59237b[_0x85eb('0x1f')]:_0x2e5c0a[_0x85eb('0x1c')]+_0x2e5c0a[_0x85eb('0x1e')];var _0x5acd3d;if(_0x10cf2f>=_0x5c5cbb){_0x10cf2f=_0x5c5cbb;_0x5acd3d=0xc8;}else{_0x5acd3d=0xce;}_0x49efdf[_0x85eb('0x1a')](_0x5acd3d);return _0x49efdf[_0x85eb('0x20')](_0x85eb('0x21'),_0xe198ca+'-'+_0x10cf2f+'/'+_0x5c5cbb)['json'](_0x59237b);}return null;};}function patchUpdates(_0x4b4b38){return function(_0x48bd86){try{jsonpatch['apply'](_0x48bd86,_0x4b4b38,!![]);}catch(_0x244667){return BPromise[_0x85eb('0x22')](_0x244667);}return _0x48bd86[_0x85eb('0x23')]();};}function saveUpdates(_0x255ca7,_0x465c74){return function(_0x3fc6da){if(_0x3fc6da){return _0x3fc6da['update'](_0x255ca7)['then'](function(_0x5b48d9){return _0x5b48d9;});}return null;};}function removeEntity(_0x298e84,_0x1426c8){return function(_0x3f7a4d){if(_0x3f7a4d){return _0x3f7a4d[_0x85eb('0x24')]()[_0x85eb('0x25')](function(){_0x298e84[_0x85eb('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x39d3fe,_0x3453cd){return function(_0x4709ad){if(!_0x4709ad){_0x39d3fe[_0x85eb('0x26')](0x194);}return _0x4709ad;};}function handleError(_0x3e2326,_0x57a03c){_0x57a03c=_0x57a03c||0x1f4;return function(_0x2e5aa3){logger[_0x85eb('0x27')](_0x2e5aa3[_0x85eb('0x28')]);if(_0x2e5aa3[_0x85eb('0x29')]){delete _0x2e5aa3[_0x85eb('0x29')];}_0x3e2326[_0x85eb('0x1a')](_0x57a03c)['send'](_0x2e5aa3);};}exports['index']=function(_0x37515c,_0x585f2a){var _0xa9b14f={},_0x5255eb={},_0x4229e9={'count':0x0,'rows':[]};var _0x3570f7=_[_0x85eb('0x2a')](db[_0x85eb('0x2b')][_0x85eb('0x2c')],function(_0xf4ac13){return{'name':_0xf4ac13[_0x85eb('0x2d')],'type':_0xf4ac13['type'][_0x85eb('0x2e')]};});_0x5255eb[_0x85eb('0x2f')]=_['map'](_0x3570f7,_0x85eb('0x29'));_0x5255eb['query']=_['keys'](_0x37515c[_0x85eb('0x30')]);_0x5255eb[_0x85eb('0x31')]=_[_0x85eb('0x32')](_0x5255eb[_0x85eb('0x2f')],_0x5255eb[_0x85eb('0x30')]);_0xa9b14f[_0x85eb('0x33')]=_[_0x85eb('0x32')](_0x5255eb[_0x85eb('0x2f')],qs[_0x85eb('0x34')](_0x37515c[_0x85eb('0x30')]['fields']));_0xa9b14f[_0x85eb('0x33')]=_0xa9b14f[_0x85eb('0x33')]['length']?_0xa9b14f['attributes']:_0x5255eb[_0x85eb('0x2f')];if(!_0x37515c[_0x85eb('0x30')][_0x85eb('0x35')](_0x85eb('0x36'))){_0xa9b14f[_0x85eb('0x1e')]=qs[_0x85eb('0x1e')](_0x37515c[_0x85eb('0x30')][_0x85eb('0x1e')]);_0xa9b14f[_0x85eb('0x1c')]=qs[_0x85eb('0x1c')](_0x37515c[_0x85eb('0x30')][_0x85eb('0x1c')]);}_0xa9b14f[_0x85eb('0x37')]=qs[_0x85eb('0x38')](_0x37515c['query'][_0x85eb('0x38')]);_0xa9b14f[_0x85eb('0x39')]=qs['filters'](_['pick'](_0x37515c[_0x85eb('0x30')],_0x5255eb[_0x85eb('0x31')]),_0x3570f7);if(_0x37515c['query'][_0x85eb('0x3a')]){_0xa9b14f['where']=_[_0x85eb('0x3b')](_0xa9b14f['where'],{'$or':_[_0x85eb('0x2a')](_0x3570f7,function(_0x5ce7e4){if(_0x5ce7e4[_0x85eb('0x3c')]!=='VIRTUAL'){var _0x38ab0f={};_0x38ab0f[_0x5ce7e4[_0x85eb('0x29')]]={'$like':'%'+_0x37515c['query'][_0x85eb('0x3a')]+'%'};return _0x38ab0f;}})});}_0xa9b14f=_['merge']({},_0xa9b14f,_0x37515c[_0x85eb('0x3d')]);var _0x331260={'where':_0xa9b14f['where']};return db[_0x85eb('0x2b')]['count'](_0x331260)['then'](function(_0x1b8a71){_0x4229e9['count']=_0x1b8a71;if(_0x37515c[_0x85eb('0x30')][_0x85eb('0x3e')]){_0xa9b14f['include']=[{'all':!![]}];}return db['ZendeskAccount'][_0x85eb('0x3f')](_0xa9b14f);})[_0x85eb('0x25')](function(_0x48160e){_0x4229e9['rows']=_0x48160e;return _0x4229e9;})[_0x85eb('0x25')](respondWithFilteredResult(_0x585f2a,_0xa9b14f))[_0x85eb('0x40')](handleError(_0x585f2a,null));};exports[_0x85eb('0x41')]=function(_0x202681,_0x3be961){var _0x5b7411={'raw':![],'where':{'id':_0x202681[_0x85eb('0x42')]['id']}},_0x5ccf8a={};_0x5ccf8a[_0x85eb('0x2f')]=_[_0x85eb('0x43')](db[_0x85eb('0x2b')][_0x85eb('0x2c')]);_0x5ccf8a[_0x85eb('0x30')]=_[_0x85eb('0x43')](_0x202681[_0x85eb('0x30')]);_0x5ccf8a['filters']=_[_0x85eb('0x32')](_0x5ccf8a[_0x85eb('0x2f')],_0x5ccf8a['query']);_0x5b7411[_0x85eb('0x33')]=_[_0x85eb('0x32')](_0x5ccf8a[_0x85eb('0x2f')],qs[_0x85eb('0x34')](_0x202681[_0x85eb('0x30')][_0x85eb('0x34')]));_0x5b7411['attributes']=_0x5b7411[_0x85eb('0x33')][_0x85eb('0x44')]?_0x5b7411[_0x85eb('0x33')]:_0x5ccf8a[_0x85eb('0x2f')];if(_0x202681[_0x85eb('0x30')][_0x85eb('0x3e')]){_0x5b7411[_0x85eb('0x45')]=[{'all':!![]}];}_0x5b7411=_[_0x85eb('0x3b')]({},_0x5b7411,_0x202681['options']);return db[_0x85eb('0x2b')][_0x85eb('0x46')](_0x5b7411)[_0x85eb('0x25')](handleEntityNotFound(_0x3be961,null))[_0x85eb('0x25')](respondWithResult(_0x3be961,null))[_0x85eb('0x40')](handleError(_0x3be961,null));};exports[_0x85eb('0x47')]=function(_0x3c387a,_0x77fdc4){return db[_0x85eb('0x2b')][_0x85eb('0x47')](_0x3c387a[_0x85eb('0x48')],{})[_0x85eb('0x25')](respondWithResult(_0x77fdc4,0xc9))['catch'](handleError(_0x77fdc4,null));};exports[_0x85eb('0x49')]=function(_0x2c951b,_0x22d9d6){if(_0x2c951b['body']['id']){delete _0x2c951b[_0x85eb('0x48')]['id'];}return db[_0x85eb('0x2b')][_0x85eb('0x46')]({'where':{'id':_0x2c951b[_0x85eb('0x42')]['id']}})[_0x85eb('0x25')](handleEntityNotFound(_0x22d9d6,null))['then'](saveUpdates(_0x2c951b[_0x85eb('0x48')],null))[_0x85eb('0x25')](respondWithResult(_0x22d9d6,null))[_0x85eb('0x40')](handleError(_0x22d9d6,null));};exports['destroy']=function(_0xc5cb43,_0x4550fd){return db[_0x85eb('0x2b')]['find']({'where':{'id':_0xc5cb43['params']['id']}})[_0x85eb('0x25')](handleEntityNotFound(_0x4550fd,null))['then'](removeEntity(_0x4550fd,null))['catch'](handleError(_0x4550fd,null));};exports[_0x85eb('0x4a')]=function(_0x593723,_0x39316d,_0xfb0ac){var _0x4e3d96={};var _0x4abe5e={};var _0x27ce2a;var _0x249511;return db[_0x85eb('0x2b')][_0x85eb('0x4b')]({'where':{'id':_0x593723[_0x85eb('0x42')]['id']}})['then'](handleEntityNotFound(_0x39316d,null))[_0x85eb('0x25')](function(_0x30062e){if(_0x30062e){_0x27ce2a=_0x30062e;_0x4abe5e[_0x85eb('0x2f')]=_[_0x85eb('0x43')](db[_0x85eb('0x4c')]['rawAttributes']);_0x4abe5e[_0x85eb('0x30')]=_['keys'](_0x593723[_0x85eb('0x30')]);_0x4abe5e[_0x85eb('0x31')]=_['intersection'](_0x4abe5e[_0x85eb('0x2f')],_0x4abe5e[_0x85eb('0x30')]);_0x4e3d96[_0x85eb('0x33')]=_[_0x85eb('0x32')](_0x4abe5e[_0x85eb('0x2f')],qs[_0x85eb('0x34')](_0x593723['query'][_0x85eb('0x34')]));_0x4e3d96['attributes']=_0x4e3d96[_0x85eb('0x33')][_0x85eb('0x44')]?_0x4e3d96['attributes']:_0x4abe5e[_0x85eb('0x2f')];_0x4e3d96[_0x85eb('0x37')]=qs['sort'](_0x593723[_0x85eb('0x30')]['sort']);_0x4e3d96[_0x85eb('0x39')]=qs[_0x85eb('0x31')](_[_0x85eb('0x4d')](_0x593723[_0x85eb('0x30')],_0x4abe5e[_0x85eb('0x31')]));if(_0x593723[_0x85eb('0x30')]['filter']){_0x4e3d96[_0x85eb('0x39')]=_[_0x85eb('0x3b')](_0x4e3d96[_0x85eb('0x39')],{'$or':_[_0x85eb('0x2a')](_0x4e3d96[_0x85eb('0x33')],function(_0x1529dd){var _0x2024df={};_0x2024df[_0x1529dd]={'$like':'%'+_0x593723[_0x85eb('0x30')][_0x85eb('0x3a')]+'%'};return _0x2024df;})});}_0x4e3d96=_[_0x85eb('0x3b')]({},_0x4e3d96,_0x593723[_0x85eb('0x3d')]);return _0x27ce2a['getConfigurations'](_0x4e3d96);}})[_0x85eb('0x25')](function(_0x21b873){if(_0x21b873){_0x249511=_0x21b873[_0x85eb('0x44')];if(!_0x593723[_0x85eb('0x30')][_0x85eb('0x35')](_0x85eb('0x36'))){_0x4e3d96['limit']=qs[_0x85eb('0x1e')](_0x593723['query'][_0x85eb('0x1e')]);_0x4e3d96[_0x85eb('0x1c')]=qs[_0x85eb('0x1c')](_0x593723[_0x85eb('0x30')][_0x85eb('0x1c')]);}return _0x27ce2a['getConfigurations'](_0x4e3d96);}})[_0x85eb('0x25')](function(_0x143d65){if(_0x143d65){return _0x143d65?{'count':_0x249511,'rows':_0x143d65}:null;}})[_0x85eb('0x25')](respondWithResult(_0x39316d,null))[_0x85eb('0x40')](handleError(_0x39316d,null));};exports[_0x85eb('0x4e')]=function(_0x14cab8,_0x23fcf9,_0x5de716){if(_0x14cab8['body']['id']){delete _0x14cab8[_0x85eb('0x48')]['id'];}return db['ZendeskAccount'][_0x85eb('0x4b')]({'where':{'id':_0x14cab8[_0x85eb('0x42')]['id']}})[_0x85eb('0x25')](handleEntityNotFound(_0x23fcf9,null))[_0x85eb('0x25')](function(_0x259ee3){if(_0x259ee3){_0x14cab8['body'][_0x85eb('0x4f')]=_0x259ee3['id'];_0x14cab8[_0x85eb('0x48')][_0x85eb('0x50')]=integrations[_0x85eb('0x51')](_0x14cab8[_0x85eb('0x48')][_0x85eb('0x52')],_0x14cab8['body']['type']);_0x14cab8[_0x85eb('0x48')]['Descriptions']=integrations[_0x85eb('0x53')](_0x14cab8[_0x85eb('0x48')][_0x85eb('0x52')],_0x14cab8[_0x85eb('0x48')][_0x85eb('0x3c')]);return db[_0x85eb('0x4c')]['create'](_0x14cab8[_0x85eb('0x48')],{'include':[{'model':db[_0x85eb('0x54')],'as':_0x85eb('0x50')},{'model':db[_0x85eb('0x54')],'as':'Descriptions'}]});}return null;})[_0x85eb('0x25')](respondWithResult(_0x23fcf9,null))[_0x85eb('0x40')](handleError(_0x23fcf9,null));};exports[_0x85eb('0x55')]=function(_0x14bf0e,_0x5037c7,_0x459317){var _0x2e6734='';return db[_0x85eb('0x2b')][_0x85eb('0x4b')]({'where':{'id':_0x14bf0e[_0x85eb('0x42')]['id']},'attributes':['id',_0x85eb('0x56'),_0x85eb('0x57'),_0x85eb('0x58'),_0x85eb('0x59'),_0x85eb('0x5a')]})[_0x85eb('0x25')](handleEntityNotFound(_0x5037c7,null))[_0x85eb('0x25')](function(_0x1d9d3a){if(_0x1d9d3a){_0x2e6734=_0x1d9d3a[_0x85eb('0x5a')];var _0x2f2464=_0x2e6734[_0x85eb('0x5b')](-0x1);if(_0x2f2464==='/'){_0x2e6734=_0x2e6734[_0x85eb('0x5c')](0x0,_0x2e6734[_0x85eb('0x5d')](_0x2f2464));}var _0x106caa={'method':'GET','uri':util[_0x85eb('0x5e')]('%s/%s',_0x2e6734,_0x85eb('0x5f')),'json':!![]};switch(_0x1d9d3a[_0x85eb('0x59')]){case _0x85eb('0x57'):_0x106caa[_0x85eb('0x60')]={'Authorization':util[_0x85eb('0x5e')](_0x85eb('0x61'),new Buffer(util[_0x85eb('0x5e')](_0x85eb('0x62'),_0x1d9d3a[_0x85eb('0x56')],_0x1d9d3a['password']))[_0x85eb('0x63')](_0x85eb('0x64')))};break;case _0x85eb('0x58'):_0x106caa[_0x85eb('0x60')]={'Authorization':util[_0x85eb('0x5e')]('Basic\x20%s',new Buffer(util[_0x85eb('0x5e')]('%s/token:%s',_0x1d9d3a[_0x85eb('0x56')],_0x1d9d3a[_0x85eb('0x58')]))[_0x85eb('0x63')]('base64'))};break;default:throw new db[(_0x85eb('0x65'))][(_0x85eb('0x66'))](_0x85eb('0x67'));}return rp(_0x106caa);}})['then'](function(_0x588c72){if(_0x588c72){var _0x45a1ef=[_0x85eb('0x68'),_0x85eb('0x69'),_0x85eb('0x6a'),'assignee'];_[_0x85eb('0x6b')](_0x588c72['ticket_fields'],function(_0x11a3bd){return _0x45a1ef[_0x85eb('0x6c')](_0x11a3bd[_0x85eb('0x3c')]);});return{'count':_0x588c72[_0x85eb('0x5f')][_0x85eb('0x44')],'rows':_[_0x85eb('0x2a')](_0x588c72['ticket_fields'],function(_0x9a80a1){return{'id':_0x9a80a1['id'],'name':_0x9a80a1['position']>0x7?_0x9a80a1[_0x85eb('0x6d')]:_0x9a80a1[_0x85eb('0x3c')],'custom':_0x9a80a1[_0x85eb('0x6e')]>0x7?!![]:![],'options':_0x9a80a1[_0x85eb('0x6f')]?_0x9a80a1[_0x85eb('0x6f')]:_0x9a80a1[_0x85eb('0x70')]?_0x9a80a1[_0x85eb('0x70')]:[]};})};}})[_0x85eb('0x25')](respondWithResult(_0x5037c7,null))[_0x85eb('0x40')](function(_0x543146){var _0x3358c8=_0x14bf0e[_0x85eb('0x30')]['test']?0x1f4:_0x543146['statusCode']||0x1f4;logger[_0x85eb('0x27')]('getFields,\x20%s,\x20%s,\x20%s',_0x85eb('0x55'),_0x3358c8,JSON['stringify'](_0x543146));delete _0x543146[_0x85eb('0x29')];if(_0x3358c8===0x191){_0x3358c8=0x190;}_0x5037c7['status'](_0x3358c8)[_0x85eb('0x71')](_0x14bf0e[_0x85eb('0x30')]['test']?{'message':_0x85eb('0x72'),'statusCode':_0x543146[_0x85eb('0x73')]}:_0x543146);});};
\ No newline at end of file
+var _0x57f8=['fields','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','show','params','find','create','body','update','getConfigurations','findOne','ZendeskConfiguration','hasOwnProperty','addConfiguration','AccountId','channel','Descriptions','ZendeskField','Subjects','username','password','token','authType','remoteUri','slice','substring','GET','format','%s/%s','ticket_fields','Basic\x20%s','headers','toString','base64','Sequelize','ValidationError','Unknown\x20authentication\x20type','subject','description','includes','title','system_field_options','custom_field_options','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','getFields','stringify','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','map','ZendeskAccount','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes'];(function(_0x1034ca,_0x14ecd6){var _0x1a023a=function(_0x2cfa65){while(--_0x2cfa65){_0x1034ca['push'](_0x1034ca['shift']());}};_0x1a023a(++_0x14ecd6);}(_0x57f8,0x198));var _0x857f=function(_0x264d6f,_0x2bf363){_0x264d6f=_0x264d6f-0x0;var _0x26bb6f=_0x57f8[_0x264d6f];return _0x26bb6f;};'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['ZendeskAccount'][_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['ZendeskAccount'][_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['ZendeskAccount'][_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['ZendeskAccount'][_0x857f('0x4e')]({'where':{'id':_0x35cd3e['params']['id']},'attributes':['id',_0x857f('0x57'),_0x857f('0x58'),_0x857f('0x59'),_0x857f('0x5a'),'remoteUri']})[_0x857f('0x26')](handleEntityNotFound(_0x48e588,null))[_0x857f('0x26')](function(_0x3100aa){if(_0x3100aa){_0x2e2cf3=_0x3100aa[_0x857f('0x5b')];var _0x387aaa=_0x2e2cf3[_0x857f('0x5c')](-0x1);if(_0x387aaa==='/'){_0x2e2cf3=_0x2e2cf3[_0x857f('0x5d')](0x0,_0x2e2cf3['lastIndexOf'](_0x387aaa));}var _0x54e75d={'method':_0x857f('0x5e'),'uri':util[_0x857f('0x5f')](_0x857f('0x60'),_0x2e2cf3,_0x857f('0x61')),'json':!![]};switch(_0x3100aa[_0x857f('0x5a')]){case _0x857f('0x58'):_0x54e75d['headers']={'Authorization':util[_0x857f('0x5f')](_0x857f('0x62'),new Buffer(util[_0x857f('0x5f')]('%s:%s',_0x3100aa['username'],_0x3100aa[_0x857f('0x58')]))['toString']('base64'))};break;case _0x857f('0x59'):_0x54e75d[_0x857f('0x63')]={'Authorization':util['format'](_0x857f('0x62'),new Buffer(util[_0x857f('0x5f')]('%s/token:%s',_0x3100aa[_0x857f('0x57')],_0x3100aa[_0x857f('0x59')]))[_0x857f('0x64')](_0x857f('0x65')))};break;default:throw new db[(_0x857f('0x66'))][(_0x857f('0x67'))](_0x857f('0x68'));}return rp(_0x54e75d);}})[_0x857f('0x26')](function(_0x415fd3){if(_0x415fd3){var _0x465857=[_0x857f('0x69'),_0x857f('0x6a'),'group','assignee'];_['remove'](_0x415fd3[_0x857f('0x61')],function(_0x310b18){return _0x465857[_0x857f('0x6b')](_0x310b18[_0x857f('0x30')]);});return{'count':_0x415fd3[_0x857f('0x61')][_0x857f('0x39')],'rows':_[_0x857f('0x2c')](_0x415fd3['ticket_fields'],function(_0x40077e){return{'id':_0x40077e['id'],'name':_0x40077e['position']>0x7?_0x40077e[_0x857f('0x6c')]:_0x40077e['type'],'custom':_0x40077e['position']>0x7?!![]:![],'options':_0x40077e[_0x857f('0x6d')]?_0x40077e['system_field_options']:_0x40077e[_0x857f('0x6e')]?_0x40077e[_0x857f('0x6e')]:[]};})};}})[_0x857f('0x26')](respondWithResult(_0x48e588,null))['catch'](function(_0x45be3d){var _0x19456f=_0x35cd3e[_0x857f('0x33')][_0x857f('0x6f')]?0x1f4:_0x45be3d[_0x857f('0x70')]||0x1f4;logger[_0x857f('0x29')](_0x857f('0x71'),_0x857f('0x72'),_0x19456f,JSON[_0x857f('0x73')](_0x45be3d));delete _0x45be3d['name'];if(_0x19456f===0x191){_0x19456f=0x190;}_0x48e588[_0x857f('0x1c')](_0x19456f)[_0x857f('0x2b')](_0x35cd3e[_0x857f('0x33')][_0x857f('0x6f')]?{'message':'Wrong\x20credentials','statusCode':_0x45be3d[_0x857f('0x70')]}:_0x45be3d);});};
\ No newline at end of file
index a00f942..e4ceee3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8386=['../../config/environment','./intZendeskAccount.attributes','../../components/integrations/configuration','exports','define','ZendeskAccount','int_zendesk_accounts','lodash','util','../../config/logger','api','moment','request-promise','path'];(function(_0x469fe3,_0x2d209e){var _0x47a1d3=function(_0x309bdf){while(--_0x309bdf){_0x469fe3['push'](_0x469fe3['shift']());}};_0x47a1d3(++_0x2d209e);}(_0x8386,0x85));var _0x6838=function(_0x31c0ef,_0x3913e4){_0x31c0ef=_0x31c0ef-0x0;var _0x5f1aca=_0x8386[_0x31c0ef];return _0x5f1aca;};'use strict';var _=require(_0x6838('0x0'));var util=require(_0x6838('0x1'));var logger=require(_0x6838('0x2'))(_0x6838('0x3'));var moment=require(_0x6838('0x4'));var BPromise=require('bluebird');var rp=require(_0x6838('0x5'));var fs=require('fs');var path=require(_0x6838('0x6'));var rimraf=require('rimraf');var config=require(_0x6838('0x7'));var attributes=require(_0x6838('0x8'));var integrations=require(_0x6838('0x9'));module[_0x6838('0xa')]=function(_0x41e5dd,_0x5242db){return _0x41e5dd[_0x6838('0xb')](_0x6838('0xc'),attributes,{'tableName':_0x6838('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf33c=['../../config/logger','api','moment','request-promise','rimraf','./intZendeskAccount.attributes','../../components/integrations/configuration','exports','ZendeskAccount','int_zendesk_accounts','lodash','util'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0xf33c,0xd6));var _0xcf33=function(_0xc9ea92,_0x2b4f7f){_0xc9ea92=_0xc9ea92-0x0;var _0x2e9827=_0xf33c[_0xc9ea92];return _0x2e9827;};'use strict';var _=require(_0xcf33('0x0'));var util=require(_0xcf33('0x1'));var logger=require(_0xcf33('0x2'))(_0xcf33('0x3'));var moment=require(_0xcf33('0x4'));var BPromise=require('bluebird');var rp=require(_0xcf33('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xcf33('0x6'));var config=require('../../config/environment');var attributes=require(_0xcf33('0x7'));var integrations=require(_0xcf33('0x8'));module[_0xcf33('0x9')]=function(_0x1bcd62,_0x206d55){return _0x1bcd62['define'](_0xcf33('0xa'),attributes,{'tableName':_0xcf33('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6fb9d14..749a262 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a5d=['util','moment','randomstring','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request\x20sent','debug','ZendeskAccount,\x20%s,\x20%s,\x20%s','error','code','ZendeskAccount,\x20%s,\x20%s','message','info','result','catch','GetZendeskAccount','ZendeskAccount','findAll','options','raw','where','map','include','model','attributes','then','stringify','find','ShowZendeskAccount','lodash'];(function(_0x5bd426,_0x4878e5){var _0x23a7eb=function(_0x594b42){while(--_0x594b42){_0x5bd426['push'](_0x5bd426['shift']());}};_0x23a7eb(++_0x4878e5);}(_0x5a5d,0x131));var _0xd5a5=function(_0x4b055c,_0x4b870b){_0x4b055c=_0x4b055c-0x0;var _0x4b62bb=_0x5a5d[_0x4b055c];return _0x4b62bb;};'use strict';var _=require(_0xd5a5('0x0'));var util=require(_0xd5a5('0x1'));var moment=require(_0xd5a5('0x2'));var BPromise=require('bluebird');var rs=require(_0xd5a5('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xd5a5('0x4'));var logger=require(_0xd5a5('0x5'))(_0xd5a5('0x6'));var config=require('../../config/environment');var jayson=require(_0xd5a5('0x7'));var client=jayson[_0xd5a5('0x8')][_0xd5a5('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2ec2fd,_0x294f59,_0x23ddba){return new BPromise(function(_0x40d77a,_0x358ec4){return client['request'](_0x2ec2fd,_0x23ddba)['then'](function(_0x37ff5d){logger['info']('ZendeskAccount,\x20%s,\x20%s',_0x294f59,_0xd5a5('0xa'));logger[_0xd5a5('0xb')](_0xd5a5('0xc'),_0x294f59,_0xd5a5('0xa'),JSON['stringify'](_0x37ff5d));if(_0x37ff5d[_0xd5a5('0xd')]){if(_0x37ff5d['error'][_0xd5a5('0xe')]===0x1f4){logger[_0xd5a5('0xd')](_0xd5a5('0xf'),_0x294f59,_0x37ff5d[_0xd5a5('0xd')][_0xd5a5('0x10')]);return _0x358ec4(_0x37ff5d[_0xd5a5('0xd')][_0xd5a5('0x10')]);}logger['error'](_0xd5a5('0xf'),_0x294f59,_0x37ff5d['error'][_0xd5a5('0x10')]);return _0x40d77a(_0x37ff5d[_0xd5a5('0xd')]['message']);}else{logger[_0xd5a5('0x11')]('ZendeskAccount,\x20%s,\x20%s',_0x294f59,_0xd5a5('0xa'));_0x40d77a(_0x37ff5d[_0xd5a5('0x12')][_0xd5a5('0x10')]);}})[_0xd5a5('0x13')](function(_0x7d0315){logger['error']('ZendeskAccount,\x20%s,\x20%s',_0x294f59,_0x7d0315);_0x358ec4(_0x7d0315);});});}exports[_0xd5a5('0x14')]=function(_0x75601){var _0x36c327=this;return new Promise(function(_0x2c40ce,_0x45677f){return db[_0xd5a5('0x15')][_0xd5a5('0x16')]({'raw':_0x75601[_0xd5a5('0x17')]?_0x75601[_0xd5a5('0x17')][_0xd5a5('0x18')]===undefined?!![]:![]:!![],'where':_0x75601[_0xd5a5('0x17')]?_0x75601[_0xd5a5('0x17')][_0xd5a5('0x19')]||null:null,'attributes':_0x75601[_0xd5a5('0x17')]?_0x75601[_0xd5a5('0x17')]['attributes']||null:null,'limit':_0x75601['options']?_0x75601[_0xd5a5('0x17')]['limit']||null:null,'include':_0x75601[_0xd5a5('0x17')]?_0x75601[_0xd5a5('0x17')]['include']?_[_0xd5a5('0x1a')](_0x75601[_0xd5a5('0x17')][_0xd5a5('0x1b')],function(_0x2e939b){return{'model':db[_0x2e939b[_0xd5a5('0x1c')]],'as':_0x2e939b['as'],'attributes':_0x2e939b[_0xd5a5('0x1d')],'include':_0x2e939b['include']?_[_0xd5a5('0x1a')](_0x2e939b['include'],function(_0xb3415e){return{'model':db[_0xb3415e[_0xd5a5('0x1c')]],'as':_0xb3415e['as'],'attributes':_0xb3415e[_0xd5a5('0x1d')],'include':_0xb3415e[_0xd5a5('0x1b')]?_['map'](_0xb3415e[_0xd5a5('0x1b')],function(_0x30d339){return{'model':db[_0x30d339[_0xd5a5('0x1c')]],'as':_0x30d339['as'],'attributes':_0x30d339[_0xd5a5('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xd5a5('0x1e')](function(_0x274871){logger[_0xd5a5('0x11')](_0xd5a5('0x14'),_0x75601);logger[_0xd5a5('0xb')]('GetZendeskAccount',_0x75601,JSON[_0xd5a5('0x1f')](_0x274871));_0x2c40ce(_0x274871);})[_0xd5a5('0x13')](function(_0x239ee7){logger[_0xd5a5('0xd')]('GetZendeskAccount',_0x239ee7[_0xd5a5('0x10')],_0x75601);_0x45677f(_0x36c327[_0xd5a5('0xd')](0x1f4,_0x239ee7[_0xd5a5('0x10')]));});});};exports['ShowZendeskAccount']=function(_0x375941){var _0x1f89ef=this;return new Promise(function(_0x40afa5,_0x16594a){return db['ZendeskAccount'][_0xd5a5('0x20')]({'raw':_0x375941[_0xd5a5('0x17')]?_0x375941[_0xd5a5('0x17')][_0xd5a5('0x18')]===undefined?!![]:![]:!![],'where':_0x375941[_0xd5a5('0x17')]?_0x375941[_0xd5a5('0x17')][_0xd5a5('0x19')]||null:null,'attributes':_0x375941[_0xd5a5('0x17')]?_0x375941[_0xd5a5('0x17')][_0xd5a5('0x1d')]||null:null,'include':_0x375941[_0xd5a5('0x17')]?_0x375941['options'][_0xd5a5('0x1b')]?_['map'](_0x375941[_0xd5a5('0x17')]['include'],function(_0x30fd78){return{'model':db[_0x30fd78[_0xd5a5('0x1c')]],'as':_0x30fd78['as'],'attributes':_0x30fd78[_0xd5a5('0x1d')],'include':_0x30fd78[_0xd5a5('0x1b')]?_[_0xd5a5('0x1a')](_0x30fd78['include'],function(_0x17c7cb){return{'model':db[_0x17c7cb[_0xd5a5('0x1c')]],'as':_0x17c7cb['as'],'attributes':_0x17c7cb[_0xd5a5('0x1d')],'include':_0x17c7cb[_0xd5a5('0x1b')]?_['map'](_0x17c7cb[_0xd5a5('0x1b')],function(_0x2099f1){return{'model':db[_0x2099f1[_0xd5a5('0x1c')]],'as':_0x2099f1['as'],'attributes':_0x2099f1['attributes']};}):[]};}):[]};}):[]:[]})[_0xd5a5('0x1e')](function(_0x1a996d){logger['info'](_0xd5a5('0x21'),_0x375941);logger[_0xd5a5('0xb')]('ShowZendeskAccount',_0x375941,JSON[_0xd5a5('0x1f')](_0x1a996d));_0x40afa5(_0x1a996d);})[_0xd5a5('0x13')](function(_0x1a4d7c){logger[_0xd5a5('0xd')](_0xd5a5('0x21'),_0x1a4d7c[_0xd5a5('0x10')],_0x375941);_0x16594a(_0x1f89ef[_0xd5a5('0xd')](0x1f4,_0x1a4d7c[_0xd5a5('0x10')]));});});};
\ No newline at end of file
+var _0xc9cb=['ZendeskAccount,\x20%s,\x20%s','debug','ZendeskAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','GetZendeskAccount','ZendeskAccount','findAll','options','raw','where','include','model','attributes','map','ShowZendeskAccount','find','util','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','then','info'];(function(_0x3d4114,_0x5c94c6){var _0x2f13ce=function(_0x525365){while(--_0x525365){_0x3d4114['push'](_0x3d4114['shift']());}};_0x2f13ce(++_0x5c94c6);}(_0xc9cb,0x91));var _0xbc9c=function(_0x100fa9,_0x36f01a){_0x100fa9=_0x100fa9-0x0;var _0x4dae30=_0xc9cb[_0x100fa9];return _0x4dae30;};'use strict';var _=require('lodash');var util=require(_0xbc9c('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xbc9c('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xbc9c('0x2'))['db'];var utils=require('../../config/utils');var logger=require(_0xbc9c('0x3'))(_0xbc9c('0x4'));var config=require(_0xbc9c('0x5'));var jayson=require(_0xbc9c('0x6'));var client=jayson['client'][_0xbc9c('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x25540b,_0x5c23dd,_0x4a525e){return new BPromise(function(_0x47b1ee,_0x2f80c2){return client['request'](_0x25540b,_0x4a525e)[_0xbc9c('0x8')](function(_0x282e6b){logger[_0xbc9c('0x9')](_0xbc9c('0xa'),_0x5c23dd,'request\x20sent');logger[_0xbc9c('0xb')](_0xbc9c('0xc'),_0x5c23dd,_0xbc9c('0xd'),JSON[_0xbc9c('0xe')](_0x282e6b));if(_0x282e6b[_0xbc9c('0xf')]){if(_0x282e6b[_0xbc9c('0xf')][_0xbc9c('0x10')]===0x1f4){logger[_0xbc9c('0xf')](_0xbc9c('0xa'),_0x5c23dd,_0x282e6b[_0xbc9c('0xf')]['message']);return _0x2f80c2(_0x282e6b[_0xbc9c('0xf')][_0xbc9c('0x11')]);}logger[_0xbc9c('0xf')](_0xbc9c('0xa'),_0x5c23dd,_0x282e6b[_0xbc9c('0xf')]['message']);return _0x47b1ee(_0x282e6b[_0xbc9c('0xf')][_0xbc9c('0x11')]);}else{logger[_0xbc9c('0x9')](_0xbc9c('0xa'),_0x5c23dd,_0xbc9c('0xd'));_0x47b1ee(_0x282e6b['result'][_0xbc9c('0x11')]);}})[_0xbc9c('0x12')](function(_0x4dfc64){logger[_0xbc9c('0xf')]('ZendeskAccount,\x20%s,\x20%s',_0x5c23dd,_0x4dfc64);_0x2f80c2(_0x4dfc64);});});}exports[_0xbc9c('0x13')]=function(_0x5c6fb2){var _0x577742=this;return new Promise(function(_0x1097b6,_0x43c4b2){return db[_0xbc9c('0x14')][_0xbc9c('0x15')]({'raw':_0x5c6fb2['options']?_0x5c6fb2[_0xbc9c('0x16')][_0xbc9c('0x17')]===undefined?!![]:![]:!![],'where':_0x5c6fb2[_0xbc9c('0x16')]?_0x5c6fb2[_0xbc9c('0x16')][_0xbc9c('0x18')]||null:null,'attributes':_0x5c6fb2['options']?_0x5c6fb2[_0xbc9c('0x16')]['attributes']||null:null,'limit':_0x5c6fb2[_0xbc9c('0x16')]?_0x5c6fb2['options']['limit']||null:null,'include':_0x5c6fb2[_0xbc9c('0x16')]?_0x5c6fb2[_0xbc9c('0x16')]['include']?_['map'](_0x5c6fb2['options'][_0xbc9c('0x19')],function(_0x471ede){return{'model':db[_0x471ede[_0xbc9c('0x1a')]],'as':_0x471ede['as'],'attributes':_0x471ede[_0xbc9c('0x1b')],'include':_0x471ede[_0xbc9c('0x19')]?_[_0xbc9c('0x1c')](_0x471ede['include'],function(_0xb04459){return{'model':db[_0xb04459[_0xbc9c('0x1a')]],'as':_0xb04459['as'],'attributes':_0xb04459[_0xbc9c('0x1b')],'include':_0xb04459[_0xbc9c('0x19')]?_[_0xbc9c('0x1c')](_0xb04459[_0xbc9c('0x19')],function(_0x595303){return{'model':db[_0x595303[_0xbc9c('0x1a')]],'as':_0x595303['as'],'attributes':_0x595303[_0xbc9c('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xbc9c('0x8')](function(_0x122605){logger[_0xbc9c('0x9')]('GetZendeskAccount',_0x5c6fb2);logger[_0xbc9c('0xb')]('GetZendeskAccount',_0x5c6fb2,JSON[_0xbc9c('0xe')](_0x122605));_0x1097b6(_0x122605);})[_0xbc9c('0x12')](function(_0x23e5d8){logger[_0xbc9c('0xf')]('GetZendeskAccount',_0x23e5d8[_0xbc9c('0x11')],_0x5c6fb2);_0x43c4b2(_0x577742[_0xbc9c('0xf')](0x1f4,_0x23e5d8['message']));});});};exports[_0xbc9c('0x1d')]=function(_0x26b7ef){var _0xfeeb04=this;return new Promise(function(_0xab09ec,_0x397552){return db[_0xbc9c('0x14')][_0xbc9c('0x1e')]({'raw':_0x26b7ef[_0xbc9c('0x16')]?_0x26b7ef['options'][_0xbc9c('0x17')]===undefined?!![]:![]:!![],'where':_0x26b7ef[_0xbc9c('0x16')]?_0x26b7ef[_0xbc9c('0x16')]['where']||null:null,'attributes':_0x26b7ef['options']?_0x26b7ef['options'][_0xbc9c('0x1b')]||null:null,'include':_0x26b7ef[_0xbc9c('0x16')]?_0x26b7ef['options'][_0xbc9c('0x19')]?_[_0xbc9c('0x1c')](_0x26b7ef['options'][_0xbc9c('0x19')],function(_0xcec3ee){return{'model':db[_0xcec3ee[_0xbc9c('0x1a')]],'as':_0xcec3ee['as'],'attributes':_0xcec3ee[_0xbc9c('0x1b')],'include':_0xcec3ee[_0xbc9c('0x19')]?_[_0xbc9c('0x1c')](_0xcec3ee[_0xbc9c('0x19')],function(_0x41ae6f){return{'model':db[_0x41ae6f[_0xbc9c('0x1a')]],'as':_0x41ae6f['as'],'attributes':_0x41ae6f[_0xbc9c('0x1b')],'include':_0x41ae6f['include']?_['map'](_0x41ae6f[_0xbc9c('0x19')],function(_0x54adcc){return{'model':db[_0x54adcc['model']],'as':_0x54adcc['as'],'attributes':_0x54adcc[_0xbc9c('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xbc9c('0x8')](function(_0x4a2623){logger[_0xbc9c('0x9')](_0xbc9c('0x1d'),_0x26b7ef);logger[_0xbc9c('0xb')](_0xbc9c('0x1d'),_0x26b7ef,JSON['stringify'](_0x4a2623));_0xab09ec(_0x4a2623);})[_0xbc9c('0x12')](function(_0x5b915e){logger['error'](_0xbc9c('0x1d'),_0x5b915e['message'],_0x26b7ef);_0x397552(_0xfeeb04['error'](0x1f4,_0x5b915e[_0xbc9c('0x11')]));});});};
\ No newline at end of file
index 479be63..84c855e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['get','index','isAuthenticated','show','/:id/fields','/:id/subjects','getSubjects','getDescriptions','/:id/tags','create','post','put','/:id','update','delete','destroy','exports','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./intZendeskConfiguration.controller'];(function(_0x51e897,_0x3d9a7e){var _0x54a1b8=function(_0x32089d){while(--_0x32089d){_0x51e897['push'](_0x51e897['shift']());}};_0x54a1b8(++_0x3d9a7e);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x259d17,_0x220710){_0x259d17=_0x259d17-0x0;var _0x407535=_0xcb91[_0x259d17];return _0x407535;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x1cb9('0x0'));var timeout=require(_0x1cb9('0x1'));var express=require(_0x1cb9('0x2'));var router=express[_0x1cb9('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1cb9('0x4'));var interaction=require(_0x1cb9('0x5'));var config=require('../../config/environment');var controller=require(_0x1cb9('0x6'));router[_0x1cb9('0x7')]('/',auth['isAuthenticated'](),controller[_0x1cb9('0x8')]);router[_0x1cb9('0x7')]('/:id',auth[_0x1cb9('0x9')](),controller[_0x1cb9('0xa')]);router['get'](_0x1cb9('0xb'),auth['isAuthenticated'](),controller['getFields']);router[_0x1cb9('0x7')](_0x1cb9('0xc'),auth[_0x1cb9('0x9')](),controller[_0x1cb9('0xd')]);router[_0x1cb9('0x7')]('/:id/descriptions',auth[_0x1cb9('0x9')](),controller[_0x1cb9('0xe')]);router[_0x1cb9('0x7')](_0x1cb9('0xf'),auth[_0x1cb9('0x9')](),controller['getTags']);router['post']('/',auth['isAuthenticated'](),controller[_0x1cb9('0x10')]);router[_0x1cb9('0x11')](_0x1cb9('0xf'),auth[_0x1cb9('0x9')](),controller['setTags']);router[_0x1cb9('0x12')](_0x1cb9('0x13'),auth[_0x1cb9('0x9')](),controller[_0x1cb9('0x14')]);router[_0x1cb9('0x15')]('/:id',auth['isAuthenticated'](),controller[_0x1cb9('0x16')]);module[_0x1cb9('0x17')]=router;
\ No newline at end of file
+var _0xcb91=['get','index','isAuthenticated','show','/:id/fields','/:id/subjects','getSubjects','getDescriptions','/:id/tags','create','post','put','/:id','update','delete','destroy','exports','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./intZendeskConfiguration.controller'];(function(_0x2dd7fc,_0x42c03c){var _0x1eac5d=function(_0x48fe12){while(--_0x48fe12){_0x2dd7fc['push'](_0x2dd7fc['shift']());}};_0x1eac5d(++_0x42c03c);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x16aaef,_0x410651){_0x16aaef=_0x16aaef-0x0;var _0x1c82ef=_0xcb91[_0x16aaef];return _0x1c82ef;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x1cb9('0x0'));var timeout=require(_0x1cb9('0x1'));var express=require(_0x1cb9('0x2'));var router=express[_0x1cb9('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1cb9('0x4'));var interaction=require(_0x1cb9('0x5'));var config=require('../../config/environment');var controller=require(_0x1cb9('0x6'));router[_0x1cb9('0x7')]('/',auth['isAuthenticated'](),controller[_0x1cb9('0x8')]);router[_0x1cb9('0x7')]('/:id',auth[_0x1cb9('0x9')](),controller[_0x1cb9('0xa')]);router['get'](_0x1cb9('0xb'),auth['isAuthenticated'](),controller['getFields']);router[_0x1cb9('0x7')](_0x1cb9('0xc'),auth[_0x1cb9('0x9')](),controller[_0x1cb9('0xd')]);router[_0x1cb9('0x7')]('/:id/descriptions',auth[_0x1cb9('0x9')](),controller[_0x1cb9('0xe')]);router[_0x1cb9('0x7')](_0x1cb9('0xf'),auth[_0x1cb9('0x9')](),controller['getTags']);router['post']('/',auth['isAuthenticated'](),controller[_0x1cb9('0x10')]);router[_0x1cb9('0x11')](_0x1cb9('0xf'),auth[_0x1cb9('0x9')](),controller['setTags']);router[_0x1cb9('0x12')](_0x1cb9('0x13'),auth[_0x1cb9('0x9')](),controller[_0x1cb9('0x14')]);router[_0x1cb9('0x15')]('/:id',auth['isAuthenticated'](),controller[_0x1cb9('0x16')]);module[_0x1cb9('0x17')]=router;
\ No newline at end of file
index 6985404..b349768 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b83=['sequelize','exports','STRING'];(function(_0x211664,_0x1282c7){var _0x53ff61=function(_0x387f7a){while(--_0x387f7a){_0x211664['push'](_0x211664['shift']());}};_0x53ff61(++_0x1282c7);}(_0x2b83,0x14a));var _0x32b8=function(_0x5c0f18,_0x5f0394){_0x5c0f18=_0x5c0f18-0x0;var _0x4dad1a=_0x2b83[_0x5c0f18];return _0x4dad1a;};'use strict';var Sequelize=require(_0x32b8('0x0'));module[_0x32b8('0x1')]={'name':{'type':Sequelize[_0x32b8('0x2')]},'description':{'type':Sequelize[_0x32b8('0x2')]}};
\ No newline at end of file
+var _0x9826=['sequelize','exports','STRING'];(function(_0x776483,_0x5c97e8){var _0x982b14=function(_0x5c3c39){while(--_0x5c3c39){_0x776483['push'](_0x776483['shift']());}};_0x982b14(++_0x5c97e8);}(_0x9826,0xcf));var _0x6982=function(_0xd2847a,_0xbdb093){_0xd2847a=_0xd2847a-0x0;var _0x53d87f=_0x9826[_0xd2847a];return _0x53d87f;};'use strict';var Sequelize=require(_0x6982('0x0'));module[_0x6982('0x1')]={'name':{'type':Sequelize[_0x6982('0x2')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 4ffacad..6a23d59 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf5e3=['catch','show','find','create','body','params','getFields','ZendeskField','hasOwnProperty','findOne','getSubjects','getDescriptions','getTags','Tag','setTags','ids','eml-format','zip-dir','fast-json-patch','request-promise','mustache','util','sox','ejs','crypto','jsforce','desk.js','to-csv','querystring','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','limit','undefined','count','set','Content-Range','json','apply','reject','save','update','destroy','error','stack','name','send','index','map','ZendeskConfiguration','rawAttributes','fieldName','key','model','query','keys','intersection','attributes','fields','length','nolimit','order','sort','where','filters','pick','merge','type','filter','options','then','includeAll','include','findAll','rows'];(function(_0x181398,_0x281eae){var _0x135f1d=function(_0x1f976e){while(--_0x1f976e){_0x181398['push'](_0x181398['shift']());}};_0x135f1d(++_0x281eae);}(_0xf5e3,0x1af));var _0x3f5e=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0xf5e3[_0x397e5f];return _0x5302b8;};'use strict';var emlformat=require(_0x3f5e('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x3f5e('0x1'));var jsonpatch=require(_0x3f5e('0x2'));var rp=require(_0x3f5e('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x3f5e('0x4'));var util=require(_0x3f5e('0x5'));var path=require('path');var sox=require(_0x3f5e('0x6'));var csv=require('to-csv');var ejs=require(_0x3f5e('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0x3f5e('0x8'));var jsforce=require(_0x3f5e('0x9'));var deskjs=require(_0x3f5e('0xa'));var toCsv=require(_0x3f5e('0xb'));var querystring=require(_0x3f5e('0xc'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x3f5e('0xd'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3f5e('0xe'));var logger=require(_0x3f5e('0xf'))('api');var utils=require(_0x3f5e('0x10'));var config=require(_0x3f5e('0x11'));var licenseUtil=require(_0x3f5e('0x12'));var db=require(_0x3f5e('0x13'))['db'];function respondWithStatusCode(_0x210bb5,_0x2bf439){_0x2bf439=_0x2bf439||0xcc;return function(_0x28d8ae){if(_0x28d8ae){return _0x210bb5[_0x3f5e('0x14')](_0x2bf439);}return _0x210bb5[_0x3f5e('0x15')](_0x2bf439)[_0x3f5e('0x16')]();};}function respondWithResult(_0x3384dc,_0x15d3a6){_0x15d3a6=_0x15d3a6||0xc8;return function(_0x183a26){if(_0x183a26){return _0x3384dc[_0x3f5e('0x15')](_0x15d3a6)['json'](_0x183a26);}};}function respondWithFilteredResult(_0x36a7ae,_0x396447){return function(_0x5631e8){if(_0x5631e8){var _0x49b451=typeof _0x396447[_0x3f5e('0x17')]==='undefined'&&typeof _0x396447[_0x3f5e('0x18')]===_0x3f5e('0x19');var _0x2c2da1=_0x5631e8['count'];var _0x437895=_0x49b451?0x0:_0x396447[_0x3f5e('0x17')];var _0x39e8eb=_0x49b451?_0x5631e8[_0x3f5e('0x1a')]:_0x396447[_0x3f5e('0x17')]+_0x396447['limit'];var _0x3a33f5;if(_0x39e8eb>=_0x2c2da1){_0x39e8eb=_0x2c2da1;_0x3a33f5=0xc8;}else{_0x3a33f5=0xce;}_0x36a7ae['status'](_0x3a33f5);return _0x36a7ae[_0x3f5e('0x1b')](_0x3f5e('0x1c'),_0x437895+'-'+_0x39e8eb+'/'+_0x2c2da1)[_0x3f5e('0x1d')](_0x5631e8);}return null;};}function patchUpdates(_0x50bfbb){return function(_0x2d81ca){try{jsonpatch[_0x3f5e('0x1e')](_0x2d81ca,_0x50bfbb,!![]);}catch(_0x1b171d){return BPromise[_0x3f5e('0x1f')](_0x1b171d);}return _0x2d81ca[_0x3f5e('0x20')]();};}function saveUpdates(_0x5043b2,_0x4c9097){return function(_0x156c01){if(_0x156c01){return _0x156c01[_0x3f5e('0x21')](_0x5043b2)['then'](function(_0x3cfe84){return _0x3cfe84;});}return null;};}function removeEntity(_0x50f6b1,_0x1df7cb){return function(_0x3d479c){if(_0x3d479c){return _0x3d479c[_0x3f5e('0x22')]()['then'](function(){_0x50f6b1[_0x3f5e('0x15')](0xcc)[_0x3f5e('0x16')]();});}};}function handleEntityNotFound(_0x2c1192,_0x5641e8){return function(_0x21fc55){if(!_0x21fc55){_0x2c1192[_0x3f5e('0x14')](0x194);}return _0x21fc55;};}function handleError(_0x5d4d36,_0x10f617){_0x10f617=_0x10f617||0x1f4;return function(_0xb8e39){logger[_0x3f5e('0x23')](_0xb8e39[_0x3f5e('0x24')]);if(_0xb8e39[_0x3f5e('0x25')]){delete _0xb8e39[_0x3f5e('0x25')];}_0x5d4d36['status'](_0x10f617)[_0x3f5e('0x26')](_0xb8e39);};}exports[_0x3f5e('0x27')]=function(_0x2c3008,_0x548e76){var _0x2fe68b={},_0x409873={},_0x456e49={'count':0x0,'rows':[]};var _0x69a9b0=_[_0x3f5e('0x28')](db[_0x3f5e('0x29')][_0x3f5e('0x2a')],function(_0x574a2c){return{'name':_0x574a2c[_0x3f5e('0x2b')],'type':_0x574a2c['type'][_0x3f5e('0x2c')]};});_0x409873[_0x3f5e('0x2d')]=_[_0x3f5e('0x28')](_0x69a9b0,'name');_0x409873[_0x3f5e('0x2e')]=_[_0x3f5e('0x2f')](_0x2c3008[_0x3f5e('0x2e')]);_0x409873['filters']=_[_0x3f5e('0x30')](_0x409873[_0x3f5e('0x2d')],_0x409873[_0x3f5e('0x2e')]);_0x2fe68b[_0x3f5e('0x31')]=_[_0x3f5e('0x30')](_0x409873['model'],qs['fields'](_0x2c3008['query'][_0x3f5e('0x32')]));_0x2fe68b[_0x3f5e('0x31')]=_0x2fe68b['attributes'][_0x3f5e('0x33')]?_0x2fe68b[_0x3f5e('0x31')]:_0x409873[_0x3f5e('0x2d')];if(!_0x2c3008[_0x3f5e('0x2e')]['hasOwnProperty'](_0x3f5e('0x34'))){_0x2fe68b['limit']=qs[_0x3f5e('0x18')](_0x2c3008[_0x3f5e('0x2e')]['limit']);_0x2fe68b['offset']=qs[_0x3f5e('0x17')](_0x2c3008[_0x3f5e('0x2e')]['offset']);}_0x2fe68b[_0x3f5e('0x35')]=qs['sort'](_0x2c3008[_0x3f5e('0x2e')][_0x3f5e('0x36')]);_0x2fe68b[_0x3f5e('0x37')]=qs[_0x3f5e('0x38')](_[_0x3f5e('0x39')](_0x2c3008[_0x3f5e('0x2e')],_0x409873[_0x3f5e('0x38')]),_0x69a9b0);if(_0x2c3008[_0x3f5e('0x2e')]['filter']){_0x2fe68b[_0x3f5e('0x37')]=_[_0x3f5e('0x3a')](_0x2fe68b['where'],{'$or':_[_0x3f5e('0x28')](_0x69a9b0,function(_0x7bdc8a){if(_0x7bdc8a[_0x3f5e('0x3b')]!=='VIRTUAL'){var _0x1d61a9={};_0x1d61a9[_0x7bdc8a[_0x3f5e('0x25')]]={'$like':'%'+_0x2c3008['query'][_0x3f5e('0x3c')]+'%'};return _0x1d61a9;}})});}_0x2fe68b=_[_0x3f5e('0x3a')]({},_0x2fe68b,_0x2c3008[_0x3f5e('0x3d')]);var _0x5c49ca={'where':_0x2fe68b[_0x3f5e('0x37')]};return db[_0x3f5e('0x29')][_0x3f5e('0x1a')](_0x5c49ca)[_0x3f5e('0x3e')](function(_0x30a3ed){_0x456e49[_0x3f5e('0x1a')]=_0x30a3ed;if(_0x2c3008[_0x3f5e('0x2e')][_0x3f5e('0x3f')]){_0x2fe68b[_0x3f5e('0x40')]=[{'all':!![]}];}return db[_0x3f5e('0x29')][_0x3f5e('0x41')](_0x2fe68b);})[_0x3f5e('0x3e')](function(_0xfd8b83){_0x456e49[_0x3f5e('0x42')]=_0xfd8b83;return _0x456e49;})[_0x3f5e('0x3e')](respondWithFilteredResult(_0x548e76,_0x2fe68b))[_0x3f5e('0x43')](handleError(_0x548e76,null));};exports[_0x3f5e('0x44')]=function(_0x4c954a,_0x59c75f){var _0x1e40a4={'raw':![],'where':{'id':_0x4c954a['params']['id']}},_0x31cd83={};_0x31cd83[_0x3f5e('0x2d')]=_[_0x3f5e('0x2f')](db['ZendeskConfiguration'][_0x3f5e('0x2a')]);_0x31cd83[_0x3f5e('0x2e')]=_[_0x3f5e('0x2f')](_0x4c954a[_0x3f5e('0x2e')]);_0x31cd83['filters']=_[_0x3f5e('0x30')](_0x31cd83['model'],_0x31cd83['query']);_0x1e40a4['attributes']=_[_0x3f5e('0x30')](_0x31cd83['model'],qs[_0x3f5e('0x32')](_0x4c954a[_0x3f5e('0x2e')][_0x3f5e('0x32')]));_0x1e40a4[_0x3f5e('0x31')]=_0x1e40a4[_0x3f5e('0x31')][_0x3f5e('0x33')]?_0x1e40a4[_0x3f5e('0x31')]:_0x31cd83['model'];if(_0x4c954a['query']['includeAll']){_0x1e40a4[_0x3f5e('0x40')]=[{'all':!![]}];}_0x1e40a4=_['merge']({},_0x1e40a4,_0x4c954a[_0x3f5e('0x3d')]);return db['ZendeskConfiguration'][_0x3f5e('0x45')](_0x1e40a4)[_0x3f5e('0x3e')](handleEntityNotFound(_0x59c75f,null))[_0x3f5e('0x3e')](respondWithResult(_0x59c75f,null))[_0x3f5e('0x43')](handleError(_0x59c75f,null));};exports[_0x3f5e('0x46')]=function(_0x484cf3,_0x287548){return db['ZendeskConfiguration'][_0x3f5e('0x46')](_0x484cf3[_0x3f5e('0x47')],{})[_0x3f5e('0x3e')](respondWithResult(_0x287548,0xc9))[_0x3f5e('0x43')](handleError(_0x287548,null));};exports[_0x3f5e('0x21')]=function(_0x5fd4b,_0x4dbcb5){if(_0x5fd4b['body']['id']){delete _0x5fd4b[_0x3f5e('0x47')]['id'];}return db['ZendeskConfiguration'][_0x3f5e('0x45')]({'where':{'id':_0x5fd4b['params']['id']}})[_0x3f5e('0x3e')](handleEntityNotFound(_0x4dbcb5,null))['then'](saveUpdates(_0x5fd4b[_0x3f5e('0x47')],null))[_0x3f5e('0x3e')](respondWithResult(_0x4dbcb5,null))[_0x3f5e('0x43')](handleError(_0x4dbcb5,null));};exports[_0x3f5e('0x22')]=function(_0x33987f,_0x192f40){return db[_0x3f5e('0x29')][_0x3f5e('0x45')]({'where':{'id':_0x33987f[_0x3f5e('0x48')]['id']}})['then'](handleEntityNotFound(_0x192f40,null))[_0x3f5e('0x3e')](removeEntity(_0x192f40,null))[_0x3f5e('0x43')](handleError(_0x192f40,null));};exports[_0x3f5e('0x49')]=function(_0x3b6485,_0x2d1616,_0x375352){var _0x50a446={};var _0x52bba8={};var _0xe3195a;var _0x5eaba9;return db['ZendeskConfiguration']['findOne']({'where':{'id':_0x3b6485['params']['id']}})[_0x3f5e('0x3e')](handleEntityNotFound(_0x2d1616,null))['then'](function(_0x1b2b01){if(_0x1b2b01){_0xe3195a=_0x1b2b01;_0x52bba8[_0x3f5e('0x2d')]=_[_0x3f5e('0x2f')](db[_0x3f5e('0x4a')][_0x3f5e('0x2a')]);_0x52bba8[_0x3f5e('0x2e')]=_[_0x3f5e('0x2f')](_0x3b6485['query']);_0x52bba8[_0x3f5e('0x38')]=_[_0x3f5e('0x30')](_0x52bba8[_0x3f5e('0x2d')],_0x52bba8[_0x3f5e('0x2e')]);_0x50a446[_0x3f5e('0x31')]=_[_0x3f5e('0x30')](_0x52bba8[_0x3f5e('0x2d')],qs['fields'](_0x3b6485['query']['fields']));_0x50a446[_0x3f5e('0x31')]=_0x50a446['attributes'][_0x3f5e('0x33')]?_0x50a446['attributes']:_0x52bba8[_0x3f5e('0x2d')];_0x50a446['order']=qs[_0x3f5e('0x36')](_0x3b6485[_0x3f5e('0x2e')]['sort']);_0x50a446[_0x3f5e('0x37')]=qs[_0x3f5e('0x38')](_['pick'](_0x3b6485['query'],_0x52bba8[_0x3f5e('0x38')]));if(_0x3b6485['query']['filter']){_0x50a446[_0x3f5e('0x37')]=_[_0x3f5e('0x3a')](_0x50a446['where'],{'$or':_[_0x3f5e('0x28')](_0x50a446[_0x3f5e('0x31')],function(_0x53168f){var _0x13f4a5={};_0x13f4a5[_0x53168f]={'$like':'%'+_0x3b6485[_0x3f5e('0x2e')][_0x3f5e('0x3c')]+'%'};return _0x13f4a5;})});}_0x50a446=_[_0x3f5e('0x3a')]({},_0x50a446,_0x3b6485[_0x3f5e('0x3d')]);return _0xe3195a[_0x3f5e('0x49')](_0x50a446);}})[_0x3f5e('0x3e')](function(_0x3df67a){if(_0x3df67a){_0x5eaba9=_0x3df67a[_0x3f5e('0x33')];if(!_0x3b6485[_0x3f5e('0x2e')][_0x3f5e('0x4b')](_0x3f5e('0x34'))){_0x50a446['limit']=qs[_0x3f5e('0x18')](_0x3b6485[_0x3f5e('0x2e')][_0x3f5e('0x18')]);_0x50a446[_0x3f5e('0x17')]=qs[_0x3f5e('0x17')](_0x3b6485['query'][_0x3f5e('0x17')]);}return _0xe3195a[_0x3f5e('0x49')](_0x50a446);}})[_0x3f5e('0x3e')](function(_0x385d67){if(_0x385d67){return _0x385d67?{'count':_0x5eaba9,'rows':_0x385d67}:null;}})[_0x3f5e('0x3e')](respondWithResult(_0x2d1616,null))[_0x3f5e('0x43')](handleError(_0x2d1616,null));};exports['getSubjects']=function(_0x88d0e0,_0x364aef,_0x4b519f){var _0x34d8c8={};var _0x59f064={};var _0x648db4;var _0x5f0705;return db[_0x3f5e('0x29')][_0x3f5e('0x4c')]({'where':{'id':_0x88d0e0['params']['id']}})[_0x3f5e('0x3e')](handleEntityNotFound(_0x364aef,null))[_0x3f5e('0x3e')](function(_0x387a5b){if(_0x387a5b){_0x648db4=_0x387a5b;_0x59f064['model']=_[_0x3f5e('0x2f')](db[_0x3f5e('0x4a')][_0x3f5e('0x2a')]);_0x59f064[_0x3f5e('0x2e')]=_[_0x3f5e('0x2f')](_0x88d0e0[_0x3f5e('0x2e')]);_0x59f064[_0x3f5e('0x38')]=_[_0x3f5e('0x30')](_0x59f064[_0x3f5e('0x2d')],_0x59f064[_0x3f5e('0x2e')]);_0x34d8c8[_0x3f5e('0x31')]=_[_0x3f5e('0x30')](_0x59f064[_0x3f5e('0x2d')],qs[_0x3f5e('0x32')](_0x88d0e0[_0x3f5e('0x2e')][_0x3f5e('0x32')]));_0x34d8c8[_0x3f5e('0x31')]=_0x34d8c8[_0x3f5e('0x31')][_0x3f5e('0x33')]?_0x34d8c8[_0x3f5e('0x31')]:_0x59f064['model'];_0x34d8c8[_0x3f5e('0x35')]=qs[_0x3f5e('0x36')](_0x88d0e0[_0x3f5e('0x2e')]['sort']);_0x34d8c8[_0x3f5e('0x37')]=qs[_0x3f5e('0x38')](_[_0x3f5e('0x39')](_0x88d0e0['query'],_0x59f064[_0x3f5e('0x38')]));if(_0x88d0e0['query'][_0x3f5e('0x3c')]){_0x34d8c8[_0x3f5e('0x37')]=_[_0x3f5e('0x3a')](_0x34d8c8['where'],{'$or':_['map'](_0x34d8c8[_0x3f5e('0x31')],function(_0x10aa09){var _0x1876b2={};_0x1876b2[_0x10aa09]={'$like':'%'+_0x88d0e0[_0x3f5e('0x2e')][_0x3f5e('0x3c')]+'%'};return _0x1876b2;})});}_0x34d8c8=_[_0x3f5e('0x3a')]({},_0x34d8c8,_0x88d0e0[_0x3f5e('0x3d')]);return _0x648db4[_0x3f5e('0x4d')](_0x34d8c8);}})['then'](function(_0x42b3e8){if(_0x42b3e8){_0x5f0705=_0x42b3e8[_0x3f5e('0x33')];if(!_0x88d0e0['query'][_0x3f5e('0x4b')](_0x3f5e('0x34'))){_0x34d8c8[_0x3f5e('0x18')]=qs[_0x3f5e('0x18')](_0x88d0e0[_0x3f5e('0x2e')][_0x3f5e('0x18')]);_0x34d8c8[_0x3f5e('0x17')]=qs[_0x3f5e('0x17')](_0x88d0e0[_0x3f5e('0x2e')][_0x3f5e('0x17')]);}return _0x648db4[_0x3f5e('0x4d')](_0x34d8c8);}})[_0x3f5e('0x3e')](function(_0x2dc1d1){if(_0x2dc1d1){return _0x2dc1d1?{'count':_0x5f0705,'rows':_0x2dc1d1}:null;}})['then'](respondWithResult(_0x364aef,null))[_0x3f5e('0x43')](handleError(_0x364aef,null));};exports[_0x3f5e('0x4e')]=function(_0x46ae23,_0x59aa3c,_0x1809b2){var _0x411c66={};var _0x3642cd={};var _0x16739b;var _0x1fcb39;return db[_0x3f5e('0x29')][_0x3f5e('0x4c')]({'where':{'id':_0x46ae23['params']['id']}})['then'](handleEntityNotFound(_0x59aa3c,null))['then'](function(_0x573399){if(_0x573399){_0x16739b=_0x573399;_0x3642cd[_0x3f5e('0x2d')]=_[_0x3f5e('0x2f')](db[_0x3f5e('0x4a')][_0x3f5e('0x2a')]);_0x3642cd[_0x3f5e('0x2e')]=_['keys'](_0x46ae23[_0x3f5e('0x2e')]);_0x3642cd[_0x3f5e('0x38')]=_[_0x3f5e('0x30')](_0x3642cd[_0x3f5e('0x2d')],_0x3642cd[_0x3f5e('0x2e')]);_0x411c66[_0x3f5e('0x31')]=_['intersection'](_0x3642cd['model'],qs[_0x3f5e('0x32')](_0x46ae23[_0x3f5e('0x2e')][_0x3f5e('0x32')]));_0x411c66[_0x3f5e('0x31')]=_0x411c66['attributes'][_0x3f5e('0x33')]?_0x411c66[_0x3f5e('0x31')]:_0x3642cd[_0x3f5e('0x2d')];_0x411c66[_0x3f5e('0x35')]=qs['sort'](_0x46ae23[_0x3f5e('0x2e')][_0x3f5e('0x36')]);_0x411c66[_0x3f5e('0x37')]=qs[_0x3f5e('0x38')](_['pick'](_0x46ae23[_0x3f5e('0x2e')],_0x3642cd[_0x3f5e('0x38')]));if(_0x46ae23[_0x3f5e('0x2e')][_0x3f5e('0x3c')]){_0x411c66[_0x3f5e('0x37')]=_[_0x3f5e('0x3a')](_0x411c66[_0x3f5e('0x37')],{'$or':_[_0x3f5e('0x28')](_0x411c66[_0x3f5e('0x31')],function(_0x26411c){var _0x5993d1={};_0x5993d1[_0x26411c]={'$like':'%'+_0x46ae23[_0x3f5e('0x2e')]['filter']+'%'};return _0x5993d1;})});}_0x411c66=_[_0x3f5e('0x3a')]({},_0x411c66,_0x46ae23['options']);return _0x16739b[_0x3f5e('0x4e')](_0x411c66);}})[_0x3f5e('0x3e')](function(_0x1d6912){if(_0x1d6912){_0x1fcb39=_0x1d6912[_0x3f5e('0x33')];if(!_0x46ae23['query'][_0x3f5e('0x4b')](_0x3f5e('0x34'))){_0x411c66[_0x3f5e('0x18')]=qs[_0x3f5e('0x18')](_0x46ae23['query'][_0x3f5e('0x18')]);_0x411c66['offset']=qs[_0x3f5e('0x17')](_0x46ae23[_0x3f5e('0x2e')][_0x3f5e('0x17')]);}return _0x16739b[_0x3f5e('0x4e')](_0x411c66);}})[_0x3f5e('0x3e')](function(_0x4ef1f7){if(_0x4ef1f7){return _0x4ef1f7?{'count':_0x1fcb39,'rows':_0x4ef1f7}:null;}})[_0x3f5e('0x3e')](respondWithResult(_0x59aa3c,null))['catch'](handleError(_0x59aa3c,null));};exports[_0x3f5e('0x4f')]=function(_0x46e3ed,_0x592229,_0x538198){var _0x55a32d={};var _0x57508d={};var _0x4f8805;var _0x3c4f83;return db[_0x3f5e('0x29')][_0x3f5e('0x4c')]({'where':{'id':_0x46e3ed[_0x3f5e('0x48')]['id']}})[_0x3f5e('0x3e')](handleEntityNotFound(_0x592229,null))[_0x3f5e('0x3e')](function(_0x1c9647){if(_0x1c9647){_0x4f8805=_0x1c9647;_0x57508d[_0x3f5e('0x2d')]=_[_0x3f5e('0x2f')](db[_0x3f5e('0x50')][_0x3f5e('0x2a')]);_0x57508d[_0x3f5e('0x2e')]=_['keys'](_0x46e3ed[_0x3f5e('0x2e')]);_0x57508d[_0x3f5e('0x38')]=_[_0x3f5e('0x30')](_0x57508d[_0x3f5e('0x2d')],_0x57508d[_0x3f5e('0x2e')]);_0x55a32d[_0x3f5e('0x31')]=_[_0x3f5e('0x30')](_0x57508d[_0x3f5e('0x2d')],qs[_0x3f5e('0x32')](_0x46e3ed[_0x3f5e('0x2e')][_0x3f5e('0x32')]));_0x55a32d[_0x3f5e('0x31')]=_0x55a32d[_0x3f5e('0x31')]['length']?_0x55a32d[_0x3f5e('0x31')]:_0x57508d['model'];_0x55a32d['order']=qs[_0x3f5e('0x36')](_0x46e3ed[_0x3f5e('0x2e')][_0x3f5e('0x36')]);_0x55a32d[_0x3f5e('0x37')]=qs[_0x3f5e('0x38')](_['pick'](_0x46e3ed['query'],_0x57508d[_0x3f5e('0x38')]));if(_0x46e3ed[_0x3f5e('0x2e')]['filter']){_0x55a32d[_0x3f5e('0x37')]=_[_0x3f5e('0x3a')](_0x55a32d['where'],{'$or':_[_0x3f5e('0x28')](_0x55a32d[_0x3f5e('0x31')],function(_0x5ccfc8){var _0x2aba73={};_0x2aba73[_0x5ccfc8]={'$like':'%'+_0x46e3ed[_0x3f5e('0x2e')]['filter']+'%'};return _0x2aba73;})});}_0x55a32d=_['merge']({},_0x55a32d,_0x46e3ed['options']);return _0x4f8805[_0x3f5e('0x4f')](_0x55a32d);}})['then'](function(_0x56e223){if(_0x56e223){_0x3c4f83=_0x56e223['length'];if(!_0x46e3ed[_0x3f5e('0x2e')][_0x3f5e('0x4b')]('nolimit')){_0x55a32d[_0x3f5e('0x18')]=qs[_0x3f5e('0x18')](_0x46e3ed[_0x3f5e('0x2e')][_0x3f5e('0x18')]);_0x55a32d[_0x3f5e('0x17')]=qs[_0x3f5e('0x17')](_0x46e3ed[_0x3f5e('0x2e')][_0x3f5e('0x17')]);}return _0x4f8805['getTags'](_0x55a32d);}})[_0x3f5e('0x3e')](function(_0x41573d){if(_0x41573d){return _0x41573d?{'count':_0x3c4f83,'rows':_0x41573d}:null;}})[_0x3f5e('0x3e')](respondWithResult(_0x592229,null))['catch'](handleError(_0x592229,null));};exports[_0x3f5e('0x51')]=function(_0x384673,_0x66d003,_0x4fb326){if(_0x384673[_0x3f5e('0x47')]['id']){delete _0x384673[_0x3f5e('0x47')]['id'];}return db[_0x3f5e('0x29')][_0x3f5e('0x4c')]({'where':{'id':_0x384673[_0x3f5e('0x48')]['id']}})['then'](handleEntityNotFound(_0x66d003,null))[_0x3f5e('0x3e')](function(_0x24f52f){if(_0x24f52f){return _0x24f52f[_0x3f5e('0x51')](_0x384673[_0x3f5e('0x47')][_0x3f5e('0x52')]||[]);}return null;})[_0x3f5e('0x3e')](respondWithResult(_0x66d003,null))[_0x3f5e('0x43')](handleError(_0x66d003,null));};
\ No newline at end of file
+var _0xd69a=['update','body','getFields','findOne','ZendeskField','hasOwnProperty','nolimit','getSubjects','options','getDescriptions','getTags','Tag','setTags','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','limit','set','apply','reject','save','then','destroy','error','stack','name','send','index','ZendeskConfiguration','rawAttributes','key','model','query','keys','filters','intersection','fields','attributes','length','order','sort','where','pick','map','type','VIRTUAL','filter','count','includeAll','include','rows','catch','show','params','merge','find'];(function(_0x41f69d,_0xde8d57){var _0x1b163b=function(_0x532f7e){while(--_0x532f7e){_0x41f69d['push'](_0x41f69d['shift']());}};_0x1b163b(++_0xde8d57);}(_0xd69a,0x103));var _0xad69=function(_0x62f07,_0x5ad04e){_0x62f07=_0x62f07-0x0;var _0x9ea91e=_0xd69a[_0x62f07];return _0x9ea91e;};'use strict';var emlformat=require(_0xad69('0x0'));var rimraf=require(_0xad69('0x1'));var zipdir=require(_0xad69('0x2'));var jsonpatch=require(_0xad69('0x3'));var rp=require(_0xad69('0x4'));var moment=require('moment');var BPromise=require(_0xad69('0x5'));var Mustache=require(_0xad69('0x6'));var util=require(_0xad69('0x7'));var path=require(_0xad69('0x8'));var sox=require(_0xad69('0x9'));var csv=require(_0xad69('0xa'));var ejs=require(_0xad69('0xb'));var fs=require('fs');var fs_extra=require(_0xad69('0xc'));var _=require(_0xad69('0xd'));var squel=require(_0xad69('0xe'));var crypto=require(_0xad69('0xf'));var jsforce=require(_0xad69('0x10'));var deskjs=require(_0xad69('0x11'));var toCsv=require('to-csv');var querystring=require(_0xad69('0x12'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xad69('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xad69('0x14'));var utils=require(_0xad69('0x15'));var config=require(_0xad69('0x16'));var licenseUtil=require(_0xad69('0x17'));var db=require(_0xad69('0x18'))['db'];function respondWithStatusCode(_0x125969,_0x3b8c82){_0x3b8c82=_0x3b8c82||0xcc;return function(_0x3a4112){if(_0x3a4112){return _0x125969[_0xad69('0x19')](_0x3b8c82);}return _0x125969[_0xad69('0x1a')](_0x3b8c82)['end']();};}function respondWithResult(_0x39c694,_0x3ae0b3){_0x3ae0b3=_0x3ae0b3||0xc8;return function(_0x2dc6b2){if(_0x2dc6b2){return _0x39c694[_0xad69('0x1a')](_0x3ae0b3)[_0xad69('0x1b')](_0x2dc6b2);}};}function respondWithFilteredResult(_0x197766,_0x3b908b){return function(_0x5c1475){if(_0x5c1475){var _0x355e01=typeof _0x3b908b[_0xad69('0x1c')]==='undefined'&&typeof _0x3b908b[_0xad69('0x1d')]==='undefined';var _0x37ed43=_0x5c1475['count'];var _0x5f25a9=_0x355e01?0x0:_0x3b908b[_0xad69('0x1c')];var _0x2ae903=_0x355e01?_0x5c1475['count']:_0x3b908b[_0xad69('0x1c')]+_0x3b908b['limit'];var _0x5a18ec;if(_0x2ae903>=_0x37ed43){_0x2ae903=_0x37ed43;_0x5a18ec=0xc8;}else{_0x5a18ec=0xce;}_0x197766[_0xad69('0x1a')](_0x5a18ec);return _0x197766[_0xad69('0x1e')]('Content-Range',_0x5f25a9+'-'+_0x2ae903+'/'+_0x37ed43)[_0xad69('0x1b')](_0x5c1475);}return null;};}function patchUpdates(_0x1bfa47){return function(_0x15e20f){try{jsonpatch[_0xad69('0x1f')](_0x15e20f,_0x1bfa47,!![]);}catch(_0x58a485){return BPromise[_0xad69('0x20')](_0x58a485);}return _0x15e20f[_0xad69('0x21')]();};}function saveUpdates(_0x486e47,_0x3255ed){return function(_0x5e187c){if(_0x5e187c){return _0x5e187c['update'](_0x486e47)[_0xad69('0x22')](function(_0x137ff1){return _0x137ff1;});}return null;};}function removeEntity(_0x2b10d8,_0x17b18f){return function(_0x5ece0f){if(_0x5ece0f){return _0x5ece0f[_0xad69('0x23')]()[_0xad69('0x22')](function(){_0x2b10d8[_0xad69('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4234b2,_0x5bff49){return function(_0x890764){if(!_0x890764){_0x4234b2['sendStatus'](0x194);}return _0x890764;};}function handleError(_0x583271,_0x1b545d){_0x1b545d=_0x1b545d||0x1f4;return function(_0x504b96){logger[_0xad69('0x24')](_0x504b96[_0xad69('0x25')]);if(_0x504b96[_0xad69('0x26')]){delete _0x504b96[_0xad69('0x26')];}_0x583271['status'](_0x1b545d)[_0xad69('0x27')](_0x504b96);};}exports[_0xad69('0x28')]=function(_0x3baba0,_0x1b3b47){var _0x5557b7={},_0x56a772={},_0x78e948={'count':0x0,'rows':[]};var _0x2b1d05=_['map'](db[_0xad69('0x29')][_0xad69('0x2a')],function(_0x2e0d5a){return{'name':_0x2e0d5a['fieldName'],'type':_0x2e0d5a['type'][_0xad69('0x2b')]};});_0x56a772[_0xad69('0x2c')]=_['map'](_0x2b1d05,_0xad69('0x26'));_0x56a772[_0xad69('0x2d')]=_[_0xad69('0x2e')](_0x3baba0[_0xad69('0x2d')]);_0x56a772[_0xad69('0x2f')]=_[_0xad69('0x30')](_0x56a772[_0xad69('0x2c')],_0x56a772['query']);_0x5557b7['attributes']=_[_0xad69('0x30')](_0x56a772[_0xad69('0x2c')],qs[_0xad69('0x31')](_0x3baba0[_0xad69('0x2d')][_0xad69('0x31')]));_0x5557b7['attributes']=_0x5557b7[_0xad69('0x32')][_0xad69('0x33')]?_0x5557b7[_0xad69('0x32')]:_0x56a772[_0xad69('0x2c')];if(!_0x3baba0[_0xad69('0x2d')]['hasOwnProperty']('nolimit')){_0x5557b7[_0xad69('0x1d')]=qs['limit'](_0x3baba0[_0xad69('0x2d')][_0xad69('0x1d')]);_0x5557b7[_0xad69('0x1c')]=qs[_0xad69('0x1c')](_0x3baba0[_0xad69('0x2d')][_0xad69('0x1c')]);}_0x5557b7[_0xad69('0x34')]=qs[_0xad69('0x35')](_0x3baba0[_0xad69('0x2d')][_0xad69('0x35')]);_0x5557b7[_0xad69('0x36')]=qs[_0xad69('0x2f')](_[_0xad69('0x37')](_0x3baba0['query'],_0x56a772[_0xad69('0x2f')]),_0x2b1d05);if(_0x3baba0[_0xad69('0x2d')]['filter']){_0x5557b7[_0xad69('0x36')]=_['merge'](_0x5557b7['where'],{'$or':_[_0xad69('0x38')](_0x2b1d05,function(_0x2a62f9){if(_0x2a62f9[_0xad69('0x39')]!==_0xad69('0x3a')){var _0x40f4b5={};_0x40f4b5[_0x2a62f9['name']]={'$like':'%'+_0x3baba0['query'][_0xad69('0x3b')]+'%'};return _0x40f4b5;}})});}_0x5557b7=_['merge']({},_0x5557b7,_0x3baba0['options']);var _0x2c88dd={'where':_0x5557b7[_0xad69('0x36')]};return db['ZendeskConfiguration'][_0xad69('0x3c')](_0x2c88dd)['then'](function(_0x30119b){_0x78e948[_0xad69('0x3c')]=_0x30119b;if(_0x3baba0[_0xad69('0x2d')][_0xad69('0x3d')]){_0x5557b7[_0xad69('0x3e')]=[{'all':!![]}];}return db[_0xad69('0x29')]['findAll'](_0x5557b7);})['then'](function(_0x475a35){_0x78e948[_0xad69('0x3f')]=_0x475a35;return _0x78e948;})['then'](respondWithFilteredResult(_0x1b3b47,_0x5557b7))[_0xad69('0x40')](handleError(_0x1b3b47,null));};exports[_0xad69('0x41')]=function(_0x386dc7,_0x9a75aa){var _0x1c08ed={'raw':![],'where':{'id':_0x386dc7[_0xad69('0x42')]['id']}},_0x27fdcd={};_0x27fdcd[_0xad69('0x2c')]=_['keys'](db[_0xad69('0x29')][_0xad69('0x2a')]);_0x27fdcd['query']=_[_0xad69('0x2e')](_0x386dc7['query']);_0x27fdcd[_0xad69('0x2f')]=_[_0xad69('0x30')](_0x27fdcd[_0xad69('0x2c')],_0x27fdcd[_0xad69('0x2d')]);_0x1c08ed[_0xad69('0x32')]=_['intersection'](_0x27fdcd['model'],qs['fields'](_0x386dc7[_0xad69('0x2d')][_0xad69('0x31')]));_0x1c08ed['attributes']=_0x1c08ed[_0xad69('0x32')][_0xad69('0x33')]?_0x1c08ed[_0xad69('0x32')]:_0x27fdcd[_0xad69('0x2c')];if(_0x386dc7[_0xad69('0x2d')][_0xad69('0x3d')]){_0x1c08ed[_0xad69('0x3e')]=[{'all':!![]}];}_0x1c08ed=_[_0xad69('0x43')]({},_0x1c08ed,_0x386dc7['options']);return db[_0xad69('0x29')][_0xad69('0x44')](_0x1c08ed)[_0xad69('0x22')](handleEntityNotFound(_0x9a75aa,null))[_0xad69('0x22')](respondWithResult(_0x9a75aa,null))[_0xad69('0x40')](handleError(_0x9a75aa,null));};exports['create']=function(_0x3783ee,_0xc109da){return db['ZendeskConfiguration']['create'](_0x3783ee['body'],{})[_0xad69('0x22')](respondWithResult(_0xc109da,0xc9))[_0xad69('0x40')](handleError(_0xc109da,null));};exports[_0xad69('0x45')]=function(_0x25e45c,_0x45c977){if(_0x25e45c[_0xad69('0x46')]['id']){delete _0x25e45c[_0xad69('0x46')]['id'];}return db['ZendeskConfiguration'][_0xad69('0x44')]({'where':{'id':_0x25e45c[_0xad69('0x42')]['id']}})[_0xad69('0x22')](handleEntityNotFound(_0x45c977,null))[_0xad69('0x22')](saveUpdates(_0x25e45c['body'],null))[_0xad69('0x22')](respondWithResult(_0x45c977,null))[_0xad69('0x40')](handleError(_0x45c977,null));};exports[_0xad69('0x23')]=function(_0x4fc37a,_0x51a869){return db[_0xad69('0x29')]['find']({'where':{'id':_0x4fc37a[_0xad69('0x42')]['id']}})[_0xad69('0x22')](handleEntityNotFound(_0x51a869,null))['then'](removeEntity(_0x51a869,null))['catch'](handleError(_0x51a869,null));};exports[_0xad69('0x47')]=function(_0x55013b,_0xdc873d,_0xb22b56){var _0x3ab9a2={};var _0x824943={};var _0x39135c;var _0x25a7d6;return db[_0xad69('0x29')][_0xad69('0x48')]({'where':{'id':_0x55013b[_0xad69('0x42')]['id']}})['then'](handleEntityNotFound(_0xdc873d,null))[_0xad69('0x22')](function(_0x54d0ee){if(_0x54d0ee){_0x39135c=_0x54d0ee;_0x824943[_0xad69('0x2c')]=_[_0xad69('0x2e')](db[_0xad69('0x49')][_0xad69('0x2a')]);_0x824943[_0xad69('0x2d')]=_[_0xad69('0x2e')](_0x55013b[_0xad69('0x2d')]);_0x824943[_0xad69('0x2f')]=_['intersection'](_0x824943[_0xad69('0x2c')],_0x824943[_0xad69('0x2d')]);_0x3ab9a2['attributes']=_[_0xad69('0x30')](_0x824943[_0xad69('0x2c')],qs[_0xad69('0x31')](_0x55013b[_0xad69('0x2d')][_0xad69('0x31')]));_0x3ab9a2[_0xad69('0x32')]=_0x3ab9a2[_0xad69('0x32')][_0xad69('0x33')]?_0x3ab9a2[_0xad69('0x32')]:_0x824943['model'];_0x3ab9a2[_0xad69('0x34')]=qs['sort'](_0x55013b[_0xad69('0x2d')][_0xad69('0x35')]);_0x3ab9a2['where']=qs['filters'](_[_0xad69('0x37')](_0x55013b[_0xad69('0x2d')],_0x824943['filters']));if(_0x55013b[_0xad69('0x2d')][_0xad69('0x3b')]){_0x3ab9a2[_0xad69('0x36')]=_[_0xad69('0x43')](_0x3ab9a2['where'],{'$or':_[_0xad69('0x38')](_0x3ab9a2[_0xad69('0x32')],function(_0x41fe98){var _0x3e357d={};_0x3e357d[_0x41fe98]={'$like':'%'+_0x55013b['query'][_0xad69('0x3b')]+'%'};return _0x3e357d;})});}_0x3ab9a2=_[_0xad69('0x43')]({},_0x3ab9a2,_0x55013b['options']);return _0x39135c[_0xad69('0x47')](_0x3ab9a2);}})[_0xad69('0x22')](function(_0x4fb86e){if(_0x4fb86e){_0x25a7d6=_0x4fb86e['length'];if(!_0x55013b[_0xad69('0x2d')][_0xad69('0x4a')](_0xad69('0x4b'))){_0x3ab9a2['limit']=qs[_0xad69('0x1d')](_0x55013b[_0xad69('0x2d')][_0xad69('0x1d')]);_0x3ab9a2['offset']=qs['offset'](_0x55013b[_0xad69('0x2d')][_0xad69('0x1c')]);}return _0x39135c[_0xad69('0x47')](_0x3ab9a2);}})[_0xad69('0x22')](function(_0x517e30){if(_0x517e30){return _0x517e30?{'count':_0x25a7d6,'rows':_0x517e30}:null;}})[_0xad69('0x22')](respondWithResult(_0xdc873d,null))['catch'](handleError(_0xdc873d,null));};exports[_0xad69('0x4c')]=function(_0x291c17,_0x3b292b,_0x33e282){var _0x3e694d={};var _0x1a2782={};var _0x8158ec;var _0x12530e;return db[_0xad69('0x29')][_0xad69('0x48')]({'where':{'id':_0x291c17['params']['id']}})[_0xad69('0x22')](handleEntityNotFound(_0x3b292b,null))[_0xad69('0x22')](function(_0x387726){if(_0x387726){_0x8158ec=_0x387726;_0x1a2782[_0xad69('0x2c')]=_[_0xad69('0x2e')](db[_0xad69('0x49')]['rawAttributes']);_0x1a2782[_0xad69('0x2d')]=_[_0xad69('0x2e')](_0x291c17[_0xad69('0x2d')]);_0x1a2782[_0xad69('0x2f')]=_[_0xad69('0x30')](_0x1a2782['model'],_0x1a2782['query']);_0x3e694d['attributes']=_[_0xad69('0x30')](_0x1a2782[_0xad69('0x2c')],qs[_0xad69('0x31')](_0x291c17[_0xad69('0x2d')][_0xad69('0x31')]));_0x3e694d[_0xad69('0x32')]=_0x3e694d[_0xad69('0x32')][_0xad69('0x33')]?_0x3e694d[_0xad69('0x32')]:_0x1a2782['model'];_0x3e694d['order']=qs[_0xad69('0x35')](_0x291c17[_0xad69('0x2d')][_0xad69('0x35')]);_0x3e694d[_0xad69('0x36')]=qs[_0xad69('0x2f')](_[_0xad69('0x37')](_0x291c17[_0xad69('0x2d')],_0x1a2782[_0xad69('0x2f')]));if(_0x291c17[_0xad69('0x2d')][_0xad69('0x3b')]){_0x3e694d[_0xad69('0x36')]=_[_0xad69('0x43')](_0x3e694d[_0xad69('0x36')],{'$or':_[_0xad69('0x38')](_0x3e694d[_0xad69('0x32')],function(_0x529e97){var _0x463007={};_0x463007[_0x529e97]={'$like':'%'+_0x291c17[_0xad69('0x2d')][_0xad69('0x3b')]+'%'};return _0x463007;})});}_0x3e694d=_[_0xad69('0x43')]({},_0x3e694d,_0x291c17[_0xad69('0x4d')]);return _0x8158ec['getSubjects'](_0x3e694d);}})['then'](function(_0x590753){if(_0x590753){_0x12530e=_0x590753[_0xad69('0x33')];if(!_0x291c17[_0xad69('0x2d')]['hasOwnProperty'](_0xad69('0x4b'))){_0x3e694d[_0xad69('0x1d')]=qs['limit'](_0x291c17[_0xad69('0x2d')][_0xad69('0x1d')]);_0x3e694d['offset']=qs['offset'](_0x291c17[_0xad69('0x2d')][_0xad69('0x1c')]);}return _0x8158ec[_0xad69('0x4c')](_0x3e694d);}})[_0xad69('0x22')](function(_0x58f1aa){if(_0x58f1aa){return _0x58f1aa?{'count':_0x12530e,'rows':_0x58f1aa}:null;}})[_0xad69('0x22')](respondWithResult(_0x3b292b,null))[_0xad69('0x40')](handleError(_0x3b292b,null));};exports['getDescriptions']=function(_0x4be631,_0xf1aa73,_0x237095){var _0x31d262={};var _0x1051b6={};var _0x3bbfa4;var _0xe595f3;return db[_0xad69('0x29')][_0xad69('0x48')]({'where':{'id':_0x4be631[_0xad69('0x42')]['id']}})[_0xad69('0x22')](handleEntityNotFound(_0xf1aa73,null))['then'](function(_0x23dffd){if(_0x23dffd){_0x3bbfa4=_0x23dffd;_0x1051b6[_0xad69('0x2c')]=_['keys'](db[_0xad69('0x49')][_0xad69('0x2a')]);_0x1051b6['query']=_[_0xad69('0x2e')](_0x4be631[_0xad69('0x2d')]);_0x1051b6[_0xad69('0x2f')]=_[_0xad69('0x30')](_0x1051b6[_0xad69('0x2c')],_0x1051b6[_0xad69('0x2d')]);_0x31d262['attributes']=_['intersection'](_0x1051b6['model'],qs[_0xad69('0x31')](_0x4be631[_0xad69('0x2d')]['fields']));_0x31d262[_0xad69('0x32')]=_0x31d262['attributes'][_0xad69('0x33')]?_0x31d262[_0xad69('0x32')]:_0x1051b6[_0xad69('0x2c')];_0x31d262[_0xad69('0x34')]=qs['sort'](_0x4be631[_0xad69('0x2d')][_0xad69('0x35')]);_0x31d262[_0xad69('0x36')]=qs[_0xad69('0x2f')](_['pick'](_0x4be631[_0xad69('0x2d')],_0x1051b6[_0xad69('0x2f')]));if(_0x4be631[_0xad69('0x2d')]['filter']){_0x31d262[_0xad69('0x36')]=_[_0xad69('0x43')](_0x31d262[_0xad69('0x36')],{'$or':_[_0xad69('0x38')](_0x31d262[_0xad69('0x32')],function(_0x996e0b){var _0x445f9b={};_0x445f9b[_0x996e0b]={'$like':'%'+_0x4be631[_0xad69('0x2d')][_0xad69('0x3b')]+'%'};return _0x445f9b;})});}_0x31d262=_[_0xad69('0x43')]({},_0x31d262,_0x4be631[_0xad69('0x4d')]);return _0x3bbfa4['getDescriptions'](_0x31d262);}})[_0xad69('0x22')](function(_0x103d43){if(_0x103d43){_0xe595f3=_0x103d43[_0xad69('0x33')];if(!_0x4be631[_0xad69('0x2d')][_0xad69('0x4a')](_0xad69('0x4b'))){_0x31d262[_0xad69('0x1d')]=qs[_0xad69('0x1d')](_0x4be631[_0xad69('0x2d')][_0xad69('0x1d')]);_0x31d262[_0xad69('0x1c')]=qs[_0xad69('0x1c')](_0x4be631[_0xad69('0x2d')][_0xad69('0x1c')]);}return _0x3bbfa4[_0xad69('0x4e')](_0x31d262);}})[_0xad69('0x22')](function(_0x54666b){if(_0x54666b){return _0x54666b?{'count':_0xe595f3,'rows':_0x54666b}:null;}})['then'](respondWithResult(_0xf1aa73,null))[_0xad69('0x40')](handleError(_0xf1aa73,null));};exports[_0xad69('0x4f')]=function(_0x3116a2,_0x12392f,_0x592c98){var _0x9423a0={};var _0x534ec1={};var _0x41e7e7;var _0x576d52;return db['ZendeskConfiguration'][_0xad69('0x48')]({'where':{'id':_0x3116a2['params']['id']}})[_0xad69('0x22')](handleEntityNotFound(_0x12392f,null))[_0xad69('0x22')](function(_0xaf26fa){if(_0xaf26fa){_0x41e7e7=_0xaf26fa;_0x534ec1[_0xad69('0x2c')]=_[_0xad69('0x2e')](db[_0xad69('0x50')][_0xad69('0x2a')]);_0x534ec1['query']=_[_0xad69('0x2e')](_0x3116a2[_0xad69('0x2d')]);_0x534ec1[_0xad69('0x2f')]=_[_0xad69('0x30')](_0x534ec1[_0xad69('0x2c')],_0x534ec1[_0xad69('0x2d')]);_0x9423a0[_0xad69('0x32')]=_[_0xad69('0x30')](_0x534ec1[_0xad69('0x2c')],qs['fields'](_0x3116a2[_0xad69('0x2d')]['fields']));_0x9423a0[_0xad69('0x32')]=_0x9423a0[_0xad69('0x32')][_0xad69('0x33')]?_0x9423a0[_0xad69('0x32')]:_0x534ec1[_0xad69('0x2c')];_0x9423a0[_0xad69('0x34')]=qs[_0xad69('0x35')](_0x3116a2[_0xad69('0x2d')][_0xad69('0x35')]);_0x9423a0[_0xad69('0x36')]=qs['filters'](_['pick'](_0x3116a2['query'],_0x534ec1[_0xad69('0x2f')]));if(_0x3116a2['query'][_0xad69('0x3b')]){_0x9423a0[_0xad69('0x36')]=_[_0xad69('0x43')](_0x9423a0['where'],{'$or':_[_0xad69('0x38')](_0x9423a0[_0xad69('0x32')],function(_0x194a48){var _0x5c45d5={};_0x5c45d5[_0x194a48]={'$like':'%'+_0x3116a2[_0xad69('0x2d')][_0xad69('0x3b')]+'%'};return _0x5c45d5;})});}_0x9423a0=_[_0xad69('0x43')]({},_0x9423a0,_0x3116a2['options']);return _0x41e7e7[_0xad69('0x4f')](_0x9423a0);}})[_0xad69('0x22')](function(_0x28a6a3){if(_0x28a6a3){_0x576d52=_0x28a6a3[_0xad69('0x33')];if(!_0x3116a2[_0xad69('0x2d')][_0xad69('0x4a')](_0xad69('0x4b'))){_0x9423a0[_0xad69('0x1d')]=qs[_0xad69('0x1d')](_0x3116a2[_0xad69('0x2d')][_0xad69('0x1d')]);_0x9423a0[_0xad69('0x1c')]=qs[_0xad69('0x1c')](_0x3116a2[_0xad69('0x2d')][_0xad69('0x1c')]);}return _0x41e7e7[_0xad69('0x4f')](_0x9423a0);}})['then'](function(_0x55299d){if(_0x55299d){return _0x55299d?{'count':_0x576d52,'rows':_0x55299d}:null;}})[_0xad69('0x22')](respondWithResult(_0x12392f,null))[_0xad69('0x40')](handleError(_0x12392f,null));};exports[_0xad69('0x51')]=function(_0x19dd0a,_0x3b6dcb,_0x74ae85){if(_0x19dd0a[_0xad69('0x46')]['id']){delete _0x19dd0a['body']['id'];}return db[_0xad69('0x29')][_0xad69('0x48')]({'where':{'id':_0x19dd0a[_0xad69('0x42')]['id']}})['then'](handleEntityNotFound(_0x3b6dcb,null))[_0xad69('0x22')](function(_0x16d288){if(_0x16d288){return _0x16d288['setTags'](_0x19dd0a[_0xad69('0x46')]['ids']||[]);}return null;})['then'](respondWithResult(_0x3b6dcb,null))[_0xad69('0x40')](handleError(_0x3b6dcb,null));};
\ No newline at end of file
index 8c02e16..e92e322 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5423=['request-promise','path','rimraf','../../config/environment','exports','define','ZendeskConfiguration','lodash','util','api','moment'];(function(_0x1bc059,_0x5c56ae){var _0x5488ce=function(_0x4d62ef){while(--_0x4d62ef){_0x1bc059['push'](_0x1bc059['shift']());}};_0x5488ce(++_0x5c56ae);}(_0x5423,0xe3));var _0x3542=function(_0x2a8ba5,_0x1f7e3c){_0x2a8ba5=_0x2a8ba5-0x0;var _0x467d44=_0x5423[_0x2a8ba5];return _0x467d44;};'use strict';var _=require(_0x3542('0x0'));var util=require(_0x3542('0x1'));var logger=require('../../config/logger')(_0x3542('0x2'));var moment=require(_0x3542('0x3'));var BPromise=require('bluebird');var rp=require(_0x3542('0x4'));var fs=require('fs');var path=require(_0x3542('0x5'));var rimraf=require(_0x3542('0x6'));var config=require(_0x3542('0x7'));var attributes=require('./intZendeskConfiguration.attributes');module[_0x3542('0x8')]=function(_0x2d2ae9,_0x15ee3b){return _0x2d2ae9[_0x3542('0x9')](_0x3542('0xa'),attributes,{'tableName':'int_zendesk_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd824=['rimraf','../../config/environment','ZendeskConfiguration','int_zendesk_configurations','lodash','util','moment','bluebird','request-promise','path'];(function(_0x554bbf,_0x4b17fb){var _0x4aac61=function(_0x219a96){while(--_0x219a96){_0x554bbf['push'](_0x554bbf['shift']());}};_0x4aac61(++_0x4b17fb);}(_0xd824,0xc2));var _0x4d82=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xd824[_0x122ef9];return _0x42fba0;};'use strict';var _=require(_0x4d82('0x0'));var util=require(_0x4d82('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x4d82('0x2'));var BPromise=require(_0x4d82('0x3'));var rp=require(_0x4d82('0x4'));var fs=require('fs');var path=require(_0x4d82('0x5'));var rimraf=require(_0x4d82('0x6'));var config=require(_0x4d82('0x7'));var attributes=require('./intZendeskConfiguration.attributes');module['exports']=function(_0xd00023,_0x583c7c){return _0xd00023['define'](_0x4d82('0x8'),attributes,{'tableName':_0x4d82('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 25675e6..aef8317 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x016b=['moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','request','info','ZendeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','ZendeskConfiguration,\x20%s,\x20%s,\x20%s','error','code','message','result','lodash','util'];(function(_0x231ede,_0x4856bb){var _0x3fdd8a=function(_0x4e622c){while(--_0x4e622c){_0x231ede['push'](_0x231ede['shift']());}};_0x3fdd8a(++_0x4856bb);}(_0x016b,0x1e1));var _0xb016=function(_0x10ca20,_0x38a470){_0x10ca20=_0x10ca20-0x0;var _0x1b2447=_0x016b[_0x10ca20];return _0x1b2447;};'use strict';var _=require(_0xb016('0x0'));var util=require(_0xb016('0x1'));var moment=require(_0xb016('0x2'));var BPromise=require('bluebird');var rs=require(_0xb016('0x3'));var fs=require('fs');var Redis=require(_0xb016('0x4'));var db=require(_0xb016('0x5'))['db'];var utils=require(_0xb016('0x6'));var logger=require(_0xb016('0x7'))(_0xb016('0x8'));var config=require(_0xb016('0x9'));var jayson=require(_0xb016('0xa'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x1c70fa,_0x47c2c7,_0x4ea948){return new BPromise(function(_0x89794a,_0xb9f1bc){return client[_0xb016('0xb')](_0x1c70fa,_0x4ea948)['then'](function(_0xda0473){logger[_0xb016('0xc')](_0xb016('0xd'),_0x47c2c7,_0xb016('0xe'));logger[_0xb016('0xf')](_0xb016('0x10'),_0x47c2c7,_0xb016('0xe'),JSON['stringify'](_0xda0473));if(_0xda0473[_0xb016('0x11')]){if(_0xda0473[_0xb016('0x11')][_0xb016('0x12')]===0x1f4){logger[_0xb016('0x11')](_0xb016('0xd'),_0x47c2c7,_0xda0473[_0xb016('0x11')]['message']);return _0xb9f1bc(_0xda0473[_0xb016('0x11')][_0xb016('0x13')]);}logger[_0xb016('0x11')](_0xb016('0xd'),_0x47c2c7,_0xda0473[_0xb016('0x11')][_0xb016('0x13')]);return _0x89794a(_0xda0473[_0xb016('0x11')][_0xb016('0x13')]);}else{logger[_0xb016('0xc')](_0xb016('0xd'),_0x47c2c7,'request\x20sent');_0x89794a(_0xda0473[_0xb016('0x14')]['message']);}})['catch'](function(_0x58a613){logger[_0xb016('0x11')](_0xb016('0xd'),_0x47c2c7,_0x58a613);_0xb9f1bc(_0x58a613);});});}
\ No newline at end of file
+var _0x7636=['bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','ZendeskConfiguration,\x20%s,\x20%s','debug','ZendeskConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','lodash','util','moment'];(function(_0x3e2c23,_0x36ab16){var _0x34f410=function(_0x31eddd){while(--_0x31eddd){_0x3e2c23['push'](_0x3e2c23['shift']());}};_0x34f410(++_0x36ab16);}(_0x7636,0x105));var _0x6763=function(_0x6d0c3e,_0xbc2aed){_0x6d0c3e=_0x6d0c3e-0x0;var _0x2895ce=_0x7636[_0x6d0c3e];return _0x2895ce;};'use strict';var _=require(_0x6763('0x0'));var util=require(_0x6763('0x1'));var moment=require(_0x6763('0x2'));var BPromise=require(_0x6763('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6763('0x4'));var db=require(_0x6763('0x5'))['db'];var utils=require(_0x6763('0x6'));var logger=require(_0x6763('0x7'))(_0x6763('0x8'));var config=require('../../config/environment');var jayson=require(_0x6763('0x9'));var client=jayson[_0x6763('0xa')][_0x6763('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x20c701,_0x55ba58,_0x1392d5){return new BPromise(function(_0x11c5c8,_0x4ed2c5){return client[_0x6763('0xc')](_0x20c701,_0x1392d5)[_0x6763('0xd')](function(_0x5defc8){logger[_0x6763('0xe')](_0x6763('0xf'),_0x55ba58,'request\x20sent');logger[_0x6763('0x10')](_0x6763('0x11'),_0x55ba58,_0x6763('0x12'),JSON[_0x6763('0x13')](_0x5defc8));if(_0x5defc8[_0x6763('0x14')]){if(_0x5defc8[_0x6763('0x14')]['code']===0x1f4){logger[_0x6763('0x14')](_0x6763('0xf'),_0x55ba58,_0x5defc8['error'][_0x6763('0x15')]);return _0x4ed2c5(_0x5defc8[_0x6763('0x14')][_0x6763('0x15')]);}logger[_0x6763('0x14')](_0x6763('0xf'),_0x55ba58,_0x5defc8[_0x6763('0x14')][_0x6763('0x15')]);return _0x11c5c8(_0x5defc8[_0x6763('0x14')]['message']);}else{logger[_0x6763('0xe')]('ZendeskConfiguration,\x20%s,\x20%s',_0x55ba58,'request\x20sent');_0x11c5c8(_0x5defc8[_0x6763('0x16')][_0x6763('0x15')]);}})[_0x6763('0x17')](function(_0x15a8b1){logger[_0x6763('0x14')]('ZendeskConfiguration,\x20%s,\x20%s',_0x55ba58,_0x15a8b1);_0x4ed2c5(_0x15a8b1);});});}
\ No newline at end of file
index dff3872..40109a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c5b=['connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZendeskField.controller','isAuthenticated','/:id','show','post','create','update','delete','destroy','util','path'];(function(_0x544b1f,_0x456faf){var _0x1367ac=function(_0x47ff30){while(--_0x47ff30){_0x544b1f['push'](_0x544b1f['shift']());}};_0x1367ac(++_0x456faf);}(_0x3c5b,0x15e));var _0xb3c5=function(_0x34c8c6,_0x390bb5){_0x34c8c6=_0x34c8c6-0x0;var _0x40b304=_0x3c5b[_0x34c8c6];return _0x40b304;};'use strict';var multer=require('multer');var util=require(_0xb3c5('0x0'));var path=require(_0xb3c5('0x1'));var timeout=require(_0xb3c5('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xb3c5('0x3'));var auth=require(_0xb3c5('0x4'));var interaction=require(_0xb3c5('0x5'));var config=require(_0xb3c5('0x6'));var controller=require(_0xb3c5('0x7'));router['get']('/',auth[_0xb3c5('0x8')](),controller['index']);router['get'](_0xb3c5('0x9'),auth['isAuthenticated'](),controller[_0xb3c5('0xa')]);router[_0xb3c5('0xb')]('/',auth[_0xb3c5('0x8')](),controller[_0xb3c5('0xc')]);router['put'](_0xb3c5('0x9'),auth['isAuthenticated'](),controller[_0xb3c5('0xd')]);router[_0xb3c5('0xe')](_0xb3c5('0x9'),auth[_0xb3c5('0x8')](),controller[_0xb3c5('0xf')]);module['exports']=router;
\ No newline at end of file
+var _0x97b5=['post','create','put','update','delete','destroy','exports','multer','connect-timeout','express','fs-extra','../../config/environment','./intZendeskField.controller','get','index','/:id','isAuthenticated'];(function(_0xfb5342,_0x52aa26){var _0x22838a=function(_0x581b16){while(--_0x581b16){_0xfb5342['push'](_0xfb5342['shift']());}};_0x22838a(++_0x52aa26);}(_0x97b5,0x18e));var _0x597b=function(_0x3ed0ec,_0x44ece7){_0x3ed0ec=_0x3ed0ec-0x0;var _0x4b32f4=_0x97b5[_0x3ed0ec];return _0x4b32f4;};'use strict';var multer=require(_0x597b('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x597b('0x1'));var express=require(_0x597b('0x2'));var router=express['Router']();var fs_extra=require(_0x597b('0x3'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x597b('0x4'));var controller=require(_0x597b('0x5'));router[_0x597b('0x6')]('/',auth['isAuthenticated'](),controller[_0x597b('0x7')]);router[_0x597b('0x6')](_0x597b('0x8'),auth[_0x597b('0x9')](),controller['show']);router[_0x597b('0xa')]('/',auth[_0x597b('0x9')](),controller[_0x597b('0xb')]);router[_0x597b('0xc')]('/:id',auth[_0x597b('0x9')](),controller[_0x597b('0xd')]);router[_0x597b('0xe')](_0x597b('0x8'),auth[_0x597b('0x9')](),controller[_0x597b('0xf')]);module[_0x597b('0x10')]=router;
\ No newline at end of file
index bfa2715..7547aee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff00=['keyValue','picklist','STRING','BOOLEAN','sequelize','exports','string','variable','customVariable'];(function(_0x137ba5,_0x206556){var _0x4a84d1=function(_0x5a3fb1){while(--_0x5a3fb1){_0x137ba5['push'](_0x137ba5['shift']());}};_0x4a84d1(++_0x206556);}(_0xff00,0x15a));var _0x0ff0=function(_0x5a4ab3,_0xb441b){_0x5a4ab3=_0x5a4ab3-0x0;var _0x34b201=_0xff00[_0x5a4ab3];return _0x34b201;};'use strict';var Sequelize=require(_0x0ff0('0x0'));module[_0x0ff0('0x1')]={'type':{'type':Sequelize['ENUM'](_0x0ff0('0x2'),_0x0ff0('0x3'),_0x0ff0('0x4'),_0x0ff0('0x5'),_0x0ff0('0x6')),'defaultValue':_0x0ff0('0x2')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x0ff0('0x7')]},'keyType':{'type':Sequelize['ENUM'](_0x0ff0('0x2'),_0x0ff0('0x3'),_0x0ff0('0x4'))},'keyContent':{'type':Sequelize[_0x0ff0('0x7')]},'idField':{'type':Sequelize[_0x0ff0('0x7')]},'nameField':{'type':Sequelize[_0x0ff0('0x7')]},'customField':{'type':Sequelize[_0x0ff0('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xf078=['keyValue','picklist','STRING','customVariable','ENUM','string','variable'];(function(_0x427217,_0x4039b1){var _0x5b28fb=function(_0x3eaa08){while(--_0x3eaa08){_0x427217['push'](_0x427217['shift']());}};_0x5b28fb(++_0x4039b1);}(_0xf078,0x82));var _0x8f07=function(_0x35fa55,_0x4b5859){_0x35fa55=_0x35fa55-0x0;var _0x55714c=_0xf078[_0x35fa55];return _0x55714c;};'use strict';var Sequelize=require('sequelize');module['exports']={'type':{'type':Sequelize[_0x8f07('0x0')](_0x8f07('0x1'),_0x8f07('0x2'),'customVariable',_0x8f07('0x3'),_0x8f07('0x4')),'defaultValue':'string'},'content':{'type':Sequelize[_0x8f07('0x5')]},'key':{'type':Sequelize[_0x8f07('0x5')]},'keyType':{'type':Sequelize[_0x8f07('0x0')](_0x8f07('0x1'),_0x8f07('0x2'),_0x8f07('0x6'))},'keyContent':{'type':Sequelize[_0x8f07('0x5')]},'idField':{'type':Sequelize[_0x8f07('0x5')]},'nameField':{'type':Sequelize[_0x8f07('0x5')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x8f07('0x5')]}};
\ No newline at end of file
index 998b1f5..f78dba1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3095=['key','model','query','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','ZendeskField','includeAll','include','findAll','rows','catch','params','keys','rawAttributes','intersection','find','create','body','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','path','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/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','then','end','error','name','send','index','map','type'];(function(_0x11de67,_0x40da2d){var _0x1854cf=function(_0x26b2b4){while(--_0x26b2b4){_0x11de67['push'](_0x11de67['shift']());}};_0x1854cf(++_0x40da2d);}(_0x3095,0x158));var _0x5309=function(_0x47078c,_0x2dd424){_0x47078c=_0x47078c-0x0;var _0x2a7dd2=_0x3095[_0x47078c];return _0x2a7dd2;};'use strict';var emlformat=require(_0x5309('0x0'));var rimraf=require(_0x5309('0x1'));var zipdir=require(_0x5309('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x5309('0x3'));var BPromise=require(_0x5309('0x4'));var Mustache=require(_0x5309('0x5'));var util=require(_0x5309('0x6'));var path=require(_0x5309('0x7'));var sox=require(_0x5309('0x8'));var csv=require(_0x5309('0x9'));var ejs=require(_0x5309('0xa'));var fs=require('fs');var fs_extra=require(_0x5309('0xb'));var _=require(_0x5309('0xc'));var squel=require(_0x5309('0xd'));var crypto=require(_0x5309('0xe'));var jsforce=require(_0x5309('0xf'));var deskjs=require(_0x5309('0x10'));var toCsv=require(_0x5309('0x9'));var querystring=require(_0x5309('0x11'));var Papa=require(_0x5309('0x12'));var Redis=require('ioredis');var authService=require(_0x5309('0x13'));var qs=require(_0x5309('0x14'));var as=require(_0x5309('0x15'));var hardwareService=require(_0x5309('0x16'));var logger=require(_0x5309('0x17'))(_0x5309('0x18'));var utils=require(_0x5309('0x19'));var config=require(_0x5309('0x1a'));var licenseUtil=require(_0x5309('0x1b'));var db=require(_0x5309('0x1c'))['db'];function respondWithStatusCode(_0x3404e2,_0x4f4e82){_0x4f4e82=_0x4f4e82||0xcc;return function(_0x5e949d){if(_0x5e949d){return _0x3404e2[_0x5309('0x1d')](_0x4f4e82);}return _0x3404e2['status'](_0x4f4e82)['end']();};}function respondWithResult(_0x3bc3d8,_0x3dda22){_0x3dda22=_0x3dda22||0xc8;return function(_0x1b6410){if(_0x1b6410){return _0x3bc3d8[_0x5309('0x1e')](_0x3dda22)[_0x5309('0x1f')](_0x1b6410);}};}function respondWithFilteredResult(_0x591c28,_0x55ceea){return function(_0xde3215){if(_0xde3215){var _0x786c45=typeof _0x55ceea[_0x5309('0x20')]===_0x5309('0x21')&&typeof _0x55ceea[_0x5309('0x22')]==='undefined';var _0x5d8ee0=_0xde3215[_0x5309('0x23')];var _0x3980ee=_0x786c45?0x0:_0x55ceea['offset'];var _0x319a0b=_0x786c45?_0xde3215[_0x5309('0x23')]:_0x55ceea['offset']+_0x55ceea[_0x5309('0x22')];var _0x55f9ff;if(_0x319a0b>=_0x5d8ee0){_0x319a0b=_0x5d8ee0;_0x55f9ff=0xc8;}else{_0x55f9ff=0xce;}_0x591c28[_0x5309('0x1e')](_0x55f9ff);return _0x591c28[_0x5309('0x24')](_0x5309('0x25'),_0x3980ee+'-'+_0x319a0b+'/'+_0x5d8ee0)[_0x5309('0x1f')](_0xde3215);}return null;};}function patchUpdates(_0x3c745e){return function(_0x551a1c){try{jsonpatch[_0x5309('0x26')](_0x551a1c,_0x3c745e,!![]);}catch(_0x3e0d3b){return BPromise[_0x5309('0x27')](_0x3e0d3b);}return _0x551a1c[_0x5309('0x28')]();};}function saveUpdates(_0x327e7e,_0xdf261d){return function(_0x2a096d){if(_0x2a096d){return _0x2a096d[_0x5309('0x29')](_0x327e7e)['then'](function(_0x18daaa){return _0x18daaa;});}return null;};}function removeEntity(_0x51dd4d,_0x35f2ca){return function(_0x2c4adf){if(_0x2c4adf){return _0x2c4adf[_0x5309('0x2a')]()[_0x5309('0x2b')](function(){_0x51dd4d[_0x5309('0x1e')](0xcc)[_0x5309('0x2c')]();});}};}function handleEntityNotFound(_0x3793e0,_0x271633){return function(_0x35afe1){if(!_0x35afe1){_0x3793e0[_0x5309('0x1d')](0x194);}return _0x35afe1;};}function handleError(_0x1c2e95,_0x1d640a){_0x1d640a=_0x1d640a||0x1f4;return function(_0x474a75){logger[_0x5309('0x2d')](_0x474a75['stack']);if(_0x474a75[_0x5309('0x2e')]){delete _0x474a75[_0x5309('0x2e')];}_0x1c2e95[_0x5309('0x1e')](_0x1d640a)[_0x5309('0x2f')](_0x474a75);};}exports[_0x5309('0x30')]=function(_0x465135,_0x4ce08e){var _0x32af40={},_0x1acca7={},_0x420b7e={'count':0x0,'rows':[]};var _0x21b7da=_[_0x5309('0x31')](db['ZendeskField']['rawAttributes'],function(_0x369917){return{'name':_0x369917['fieldName'],'type':_0x369917[_0x5309('0x32')][_0x5309('0x33')]};});_0x1acca7[_0x5309('0x34')]=_[_0x5309('0x31')](_0x21b7da,'name');_0x1acca7[_0x5309('0x35')]=_['keys'](_0x465135['query']);_0x1acca7['filters']=_['intersection'](_0x1acca7[_0x5309('0x34')],_0x1acca7[_0x5309('0x35')]);_0x32af40[_0x5309('0x36')]=_['intersection'](_0x1acca7['model'],qs['fields'](_0x465135[_0x5309('0x35')][_0x5309('0x37')]));_0x32af40[_0x5309('0x36')]=_0x32af40[_0x5309('0x36')][_0x5309('0x38')]?_0x32af40[_0x5309('0x36')]:_0x1acca7['model'];if(!_0x465135[_0x5309('0x35')]['hasOwnProperty'](_0x5309('0x39'))){_0x32af40[_0x5309('0x22')]=qs['limit'](_0x465135[_0x5309('0x35')][_0x5309('0x22')]);_0x32af40[_0x5309('0x20')]=qs[_0x5309('0x20')](_0x465135[_0x5309('0x35')][_0x5309('0x20')]);}_0x32af40[_0x5309('0x3a')]=qs[_0x5309('0x3b')](_0x465135['query'][_0x5309('0x3b')]);_0x32af40[_0x5309('0x3c')]=qs['filters'](_[_0x5309('0x3d')](_0x465135[_0x5309('0x35')],_0x1acca7['filters']),_0x21b7da);if(_0x465135['query'][_0x5309('0x3e')]){_0x32af40[_0x5309('0x3c')]=_[_0x5309('0x3f')](_0x32af40['where'],{'$or':_['map'](_0x21b7da,function(_0x1fd921){if(_0x1fd921['type']!==_0x5309('0x40')){var _0x221cf9={};_0x221cf9[_0x1fd921[_0x5309('0x2e')]]={'$like':'%'+_0x465135[_0x5309('0x35')]['filter']+'%'};return _0x221cf9;}})});}_0x32af40=_['merge']({},_0x32af40,_0x465135[_0x5309('0x41')]);var _0x35bca8={'where':_0x32af40[_0x5309('0x3c')]};return db[_0x5309('0x42')]['count'](_0x35bca8)[_0x5309('0x2b')](function(_0x5840c0){_0x420b7e['count']=_0x5840c0;if(_0x465135[_0x5309('0x35')][_0x5309('0x43')]){_0x32af40[_0x5309('0x44')]=[{'all':!![]}];}return db[_0x5309('0x42')][_0x5309('0x45')](_0x32af40);})[_0x5309('0x2b')](function(_0x2a92e3){_0x420b7e[_0x5309('0x46')]=_0x2a92e3;return _0x420b7e;})[_0x5309('0x2b')](respondWithFilteredResult(_0x4ce08e,_0x32af40))[_0x5309('0x47')](handleError(_0x4ce08e,null));};exports['show']=function(_0x890fdb,_0x27fc33){var _0x3af032={'raw':!![],'where':{'id':_0x890fdb[_0x5309('0x48')]['id']}},_0x5e91af={};_0x5e91af[_0x5309('0x34')]=_[_0x5309('0x49')](db['ZendeskField'][_0x5309('0x4a')]);_0x5e91af['query']=_[_0x5309('0x49')](_0x890fdb[_0x5309('0x35')]);_0x5e91af['filters']=_['intersection'](_0x5e91af[_0x5309('0x34')],_0x5e91af[_0x5309('0x35')]);_0x3af032[_0x5309('0x36')]=_[_0x5309('0x4b')](_0x5e91af[_0x5309('0x34')],qs[_0x5309('0x37')](_0x890fdb[_0x5309('0x35')]['fields']));_0x3af032['attributes']=_0x3af032[_0x5309('0x36')][_0x5309('0x38')]?_0x3af032[_0x5309('0x36')]:_0x5e91af[_0x5309('0x34')];if(_0x890fdb[_0x5309('0x35')][_0x5309('0x43')]){_0x3af032[_0x5309('0x44')]=[{'all':!![]}];}_0x3af032=_[_0x5309('0x3f')]({},_0x3af032,_0x890fdb['options']);return db['ZendeskField'][_0x5309('0x4c')](_0x3af032)[_0x5309('0x2b')](handleEntityNotFound(_0x27fc33,null))[_0x5309('0x2b')](respondWithResult(_0x27fc33,null))[_0x5309('0x47')](handleError(_0x27fc33,null));};exports[_0x5309('0x4d')]=function(_0x14e951,_0x5ced9d){return db[_0x5309('0x42')]['create'](_0x14e951[_0x5309('0x4e')],{})[_0x5309('0x2b')](respondWithResult(_0x5ced9d,0xc9))[_0x5309('0x47')](handleError(_0x5ced9d,null));};exports['update']=function(_0x4c6fdb,_0x4f845b){if(_0x4c6fdb[_0x5309('0x4e')]['id']){delete _0x4c6fdb[_0x5309('0x4e')]['id'];}return db['ZendeskField'][_0x5309('0x4c')]({'where':{'id':_0x4c6fdb['params']['id']}})[_0x5309('0x2b')](handleEntityNotFound(_0x4f845b,null))[_0x5309('0x2b')](saveUpdates(_0x4c6fdb[_0x5309('0x4e')],null))[_0x5309('0x2b')](respondWithResult(_0x4f845b,null))[_0x5309('0x47')](handleError(_0x4f845b,null));};exports[_0x5309('0x2a')]=function(_0x51c32d,_0x568243){return db[_0x5309('0x42')]['find']({'where':{'id':_0x51c32d[_0x5309('0x48')]['id']}})[_0x5309('0x2b')](handleEntityNotFound(_0x568243,null))[_0x5309('0x2b')](removeEntity(_0x568243,null))['catch'](handleError(_0x568243,null));};
\ No newline at end of file
+var _0x3f7e=['params','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','count','apply','reject','save','update','destroy','then','end','sendStatus','stack','name','send','index','map','ZendeskField','rawAttributes','fieldName','type','key','query','keys','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','VIRTUAL','merge','options','include','findAll','rows','show','find','create','body','catch'];(function(_0x459cc3,_0xb497ab){var _0x5a9807=function(_0x1bce7b){while(--_0x1bce7b){_0x459cc3['push'](_0x459cc3['shift']());}};_0x5a9807(++_0xb497ab);}(_0x3f7e,0x1c3));var _0xe3f7=function(_0x31d4ac,_0x1fedea){_0x31d4ac=_0x31d4ac-0x0;var _0x3c3362=_0x3f7e[_0x31d4ac];return _0x3c3362;};'use strict';var emlformat=require(_0xe3f7('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xe3f7('0x1'));var jsonpatch=require(_0xe3f7('0x2'));var rp=require(_0xe3f7('0x3'));var moment=require(_0xe3f7('0x4'));var BPromise=require(_0xe3f7('0x5'));var Mustache=require('mustache');var util=require(_0xe3f7('0x6'));var path=require('path');var sox=require(_0xe3f7('0x7'));var csv=require(_0xe3f7('0x8'));var ejs=require(_0xe3f7('0x9'));var fs=require('fs');var fs_extra=require(_0xe3f7('0xa'));var _=require(_0xe3f7('0xb'));var squel=require(_0xe3f7('0xc'));var crypto=require(_0xe3f7('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xe3f7('0xe'));var Papa=require(_0xe3f7('0xf'));var Redis=require(_0xe3f7('0x10'));var authService=require(_0xe3f7('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xe3f7('0x12'));var hardwareService=require(_0xe3f7('0x13'));var logger=require(_0xe3f7('0x14'))(_0xe3f7('0x15'));var utils=require(_0xe3f7('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xe3f7('0x17'));var db=require(_0xe3f7('0x18'))['db'];function respondWithStatusCode(_0x22f3fb,_0x25f940){_0x25f940=_0x25f940||0xcc;return function(_0x1c08a9){if(_0x1c08a9){return _0x22f3fb['sendStatus'](_0x25f940);}return _0x22f3fb[_0xe3f7('0x19')](_0x25f940)['end']();};}function respondWithResult(_0x2548a1,_0x3da0d9){_0x3da0d9=_0x3da0d9||0xc8;return function(_0xcbc22){if(_0xcbc22){return _0x2548a1[_0xe3f7('0x19')](_0x3da0d9)[_0xe3f7('0x1a')](_0xcbc22);}};}function respondWithFilteredResult(_0x207ab4,_0x12fbb2){return function(_0x462ff6){if(_0x462ff6){var _0x53e1c5=typeof _0x12fbb2[_0xe3f7('0x1b')]===_0xe3f7('0x1c')&&typeof _0x12fbb2[_0xe3f7('0x1d')]===_0xe3f7('0x1c');var _0x131a4c=_0x462ff6['count'];var _0x1ea2bc=_0x53e1c5?0x0:_0x12fbb2[_0xe3f7('0x1b')];var _0x448d40=_0x53e1c5?_0x462ff6[_0xe3f7('0x1e')]:_0x12fbb2[_0xe3f7('0x1b')]+_0x12fbb2[_0xe3f7('0x1d')];var _0x4a4935;if(_0x448d40>=_0x131a4c){_0x448d40=_0x131a4c;_0x4a4935=0xc8;}else{_0x4a4935=0xce;}_0x207ab4['status'](_0x4a4935);return _0x207ab4['set']('Content-Range',_0x1ea2bc+'-'+_0x448d40+'/'+_0x131a4c)[_0xe3f7('0x1a')](_0x462ff6);}return null;};}function patchUpdates(_0x288264){return function(_0x576c04){try{jsonpatch[_0xe3f7('0x1f')](_0x576c04,_0x288264,!![]);}catch(_0x1aaaa4){return BPromise[_0xe3f7('0x20')](_0x1aaaa4);}return _0x576c04[_0xe3f7('0x21')]();};}function saveUpdates(_0x1c4507,_0x4d7abe){return function(_0x3d1b33){if(_0x3d1b33){return _0x3d1b33[_0xe3f7('0x22')](_0x1c4507)['then'](function(_0x2cde3b){return _0x2cde3b;});}return null;};}function removeEntity(_0x3d77f5,_0x48e2e3){return function(_0x53e596){if(_0x53e596){return _0x53e596[_0xe3f7('0x23')]()[_0xe3f7('0x24')](function(){_0x3d77f5[_0xe3f7('0x19')](0xcc)[_0xe3f7('0x25')]();});}};}function handleEntityNotFound(_0x313e77,_0x5e2c26){return function(_0x426d48){if(!_0x426d48){_0x313e77[_0xe3f7('0x26')](0x194);}return _0x426d48;};}function handleError(_0x2d8523,_0x2d9a6f){_0x2d9a6f=_0x2d9a6f||0x1f4;return function(_0x1f3930){logger['error'](_0x1f3930[_0xe3f7('0x27')]);if(_0x1f3930[_0xe3f7('0x28')]){delete _0x1f3930['name'];}_0x2d8523['status'](_0x2d9a6f)[_0xe3f7('0x29')](_0x1f3930);};}exports[_0xe3f7('0x2a')]=function(_0xd8fd65,_0x2499fa){var _0x7658f3={},_0x47b3e5={},_0x417253={'count':0x0,'rows':[]};var _0x4fab58=_[_0xe3f7('0x2b')](db[_0xe3f7('0x2c')][_0xe3f7('0x2d')],function(_0x1b6485){return{'name':_0x1b6485[_0xe3f7('0x2e')],'type':_0x1b6485[_0xe3f7('0x2f')][_0xe3f7('0x30')]};});_0x47b3e5['model']=_[_0xe3f7('0x2b')](_0x4fab58,_0xe3f7('0x28'));_0x47b3e5[_0xe3f7('0x31')]=_[_0xe3f7('0x32')](_0xd8fd65[_0xe3f7('0x31')]);_0x47b3e5[_0xe3f7('0x33')]=_[_0xe3f7('0x34')](_0x47b3e5['model'],_0x47b3e5[_0xe3f7('0x31')]);_0x7658f3[_0xe3f7('0x35')]=_[_0xe3f7('0x34')](_0x47b3e5[_0xe3f7('0x36')],qs[_0xe3f7('0x37')](_0xd8fd65[_0xe3f7('0x31')][_0xe3f7('0x37')]));_0x7658f3['attributes']=_0x7658f3[_0xe3f7('0x35')][_0xe3f7('0x38')]?_0x7658f3[_0xe3f7('0x35')]:_0x47b3e5[_0xe3f7('0x36')];if(!_0xd8fd65[_0xe3f7('0x31')][_0xe3f7('0x39')](_0xe3f7('0x3a'))){_0x7658f3[_0xe3f7('0x1d')]=qs['limit'](_0xd8fd65[_0xe3f7('0x31')][_0xe3f7('0x1d')]);_0x7658f3[_0xe3f7('0x1b')]=qs[_0xe3f7('0x1b')](_0xd8fd65['query']['offset']);}_0x7658f3[_0xe3f7('0x3b')]=qs[_0xe3f7('0x3c')](_0xd8fd65[_0xe3f7('0x31')][_0xe3f7('0x3c')]);_0x7658f3[_0xe3f7('0x3d')]=qs['filters'](_[_0xe3f7('0x3e')](_0xd8fd65[_0xe3f7('0x31')],_0x47b3e5[_0xe3f7('0x33')]),_0x4fab58);if(_0xd8fd65[_0xe3f7('0x31')]['filter']){_0x7658f3[_0xe3f7('0x3d')]=_['merge'](_0x7658f3[_0xe3f7('0x3d')],{'$or':_[_0xe3f7('0x2b')](_0x4fab58,function(_0x147da6){if(_0x147da6['type']!==_0xe3f7('0x3f')){var _0x3806e6={};_0x3806e6[_0x147da6[_0xe3f7('0x28')]]={'$like':'%'+_0xd8fd65[_0xe3f7('0x31')]['filter']+'%'};return _0x3806e6;}})});}_0x7658f3=_[_0xe3f7('0x40')]({},_0x7658f3,_0xd8fd65[_0xe3f7('0x41')]);var _0x3ed0ad={'where':_0x7658f3['where']};return db[_0xe3f7('0x2c')][_0xe3f7('0x1e')](_0x3ed0ad)['then'](function(_0x1755e0){_0x417253[_0xe3f7('0x1e')]=_0x1755e0;if(_0xd8fd65[_0xe3f7('0x31')]['includeAll']){_0x7658f3[_0xe3f7('0x42')]=[{'all':!![]}];}return db[_0xe3f7('0x2c')][_0xe3f7('0x43')](_0x7658f3);})['then'](function(_0x33dd45){_0x417253[_0xe3f7('0x44')]=_0x33dd45;return _0x417253;})[_0xe3f7('0x24')](respondWithFilteredResult(_0x2499fa,_0x7658f3))['catch'](handleError(_0x2499fa,null));};exports[_0xe3f7('0x45')]=function(_0x482c7e,_0xd96cec){var _0x3895b9={'raw':!![],'where':{'id':_0x482c7e['params']['id']}},_0x33ee57={};_0x33ee57[_0xe3f7('0x36')]=_[_0xe3f7('0x32')](db['ZendeskField'][_0xe3f7('0x2d')]);_0x33ee57[_0xe3f7('0x31')]=_[_0xe3f7('0x32')](_0x482c7e[_0xe3f7('0x31')]);_0x33ee57['filters']=_[_0xe3f7('0x34')](_0x33ee57[_0xe3f7('0x36')],_0x33ee57[_0xe3f7('0x31')]);_0x3895b9[_0xe3f7('0x35')]=_[_0xe3f7('0x34')](_0x33ee57[_0xe3f7('0x36')],qs['fields'](_0x482c7e[_0xe3f7('0x31')][_0xe3f7('0x37')]));_0x3895b9[_0xe3f7('0x35')]=_0x3895b9['attributes'][_0xe3f7('0x38')]?_0x3895b9[_0xe3f7('0x35')]:_0x33ee57[_0xe3f7('0x36')];if(_0x482c7e[_0xe3f7('0x31')]['includeAll']){_0x3895b9[_0xe3f7('0x42')]=[{'all':!![]}];}_0x3895b9=_['merge']({},_0x3895b9,_0x482c7e[_0xe3f7('0x41')]);return db[_0xe3f7('0x2c')][_0xe3f7('0x46')](_0x3895b9)[_0xe3f7('0x24')](handleEntityNotFound(_0xd96cec,null))[_0xe3f7('0x24')](respondWithResult(_0xd96cec,null))['catch'](handleError(_0xd96cec,null));};exports[_0xe3f7('0x47')]=function(_0x1900f3,_0x54704f){return db[_0xe3f7('0x2c')][_0xe3f7('0x47')](_0x1900f3[_0xe3f7('0x48')],{})[_0xe3f7('0x24')](respondWithResult(_0x54704f,0xc9))[_0xe3f7('0x49')](handleError(_0x54704f,null));};exports[_0xe3f7('0x22')]=function(_0x1cd3b6,_0x359dc7){if(_0x1cd3b6[_0xe3f7('0x48')]['id']){delete _0x1cd3b6[_0xe3f7('0x48')]['id'];}return db[_0xe3f7('0x2c')][_0xe3f7('0x46')]({'where':{'id':_0x1cd3b6[_0xe3f7('0x4a')]['id']}})[_0xe3f7('0x24')](handleEntityNotFound(_0x359dc7,null))[_0xe3f7('0x24')](saveUpdates(_0x1cd3b6[_0xe3f7('0x48')],null))[_0xe3f7('0x24')](respondWithResult(_0x359dc7,null))['catch'](handleError(_0x359dc7,null));};exports[_0xe3f7('0x23')]=function(_0x1f47ae,_0x10cc20){return db['ZendeskField'][_0xe3f7('0x46')]({'where':{'id':_0x1f47ae[_0xe3f7('0x4a')]['id']}})[_0xe3f7('0x24')](handleEntityNotFound(_0x10cc20,null))[_0xe3f7('0x24')](removeEntity(_0x10cc20,null))[_0xe3f7('0x49')](handleError(_0x10cc20,null));};
\ No newline at end of file
index 46a58ac..9032cd3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x57ea=['util','request-promise','path','rimraf','../../config/environment','exports','define','ZendeskField','zendesk_unique_index','idField','FieldId'];(function(_0x2d3975,_0x2a6856){var _0x3e86e8=function(_0x956e0e){while(--_0x956e0e){_0x2d3975['push'](_0x2d3975['shift']());}};_0x3e86e8(++_0x2a6856);}(_0x57ea,0x181));var _0xa57e=function(_0x1a6bc2,_0x126f66){_0x1a6bc2=_0x1a6bc2-0x0;var _0x147952=_0x57ea[_0x1a6bc2];return _0x147952;};'use strict';var _=require('lodash');var util=require(_0xa57e('0x0'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xa57e('0x1'));var fs=require('fs');var path=require(_0xa57e('0x2'));var rimraf=require(_0xa57e('0x3'));var config=require(_0xa57e('0x4'));var attributes=require('./intZendeskField.attributes');module[_0xa57e('0x5')]=function(_0x5c9995,_0x5bb3f8){return _0x5c9995[_0xa57e('0x6')](_0xa57e('0x7'),attributes,{'tableName':'int_zendesk_fields','paranoid':![],'indexes':[{'name':_0xa57e('0x8'),'fields':[_0xa57e('0x9'),_0xa57e('0xa')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xdbc1=['path','rimraf','../../config/environment','./intZendeskField.attributes','exports','ZendeskField','int_zendesk_fields','zendesk_unique_index','idField','FieldId','lodash','util','../../config/logger','api','bluebird'];(function(_0x5f061f,_0x537423){var _0x59d574=function(_0x368e8a){while(--_0x368e8a){_0x5f061f['push'](_0x5f061f['shift']());}};_0x59d574(++_0x537423);}(_0xdbc1,0x19f));var _0x1dbc=function(_0x31b5b2,_0x5ab927){_0x31b5b2=_0x31b5b2-0x0;var _0x364f13=_0xdbc1[_0x31b5b2];return _0x364f13;};'use strict';var _=require(_0x1dbc('0x0'));var util=require(_0x1dbc('0x1'));var logger=require(_0x1dbc('0x2'))(_0x1dbc('0x3'));var moment=require('moment');var BPromise=require(_0x1dbc('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1dbc('0x5'));var rimraf=require(_0x1dbc('0x6'));var config=require(_0x1dbc('0x7'));var attributes=require(_0x1dbc('0x8'));module[_0x1dbc('0x9')]=function(_0x643892,_0x1aca14){return _0x643892['define'](_0x1dbc('0xa'),attributes,{'tableName':_0x1dbc('0xb'),'paranoid':![],'indexes':[{'name':_0x1dbc('0xc'),'fields':[_0x1dbc('0xd'),_0x1dbc('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index d76de39..d7383ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x44fa=['http','request','then','info','ZendeskField,\x20%s,\x20%s','request\x20sent','debug','ZendeskField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client'];(function(_0x36c6f8,_0x17cb72){var _0x240ff0=function(_0x3a369d){while(--_0x3a369d){_0x36c6f8['push'](_0x36c6f8['shift']());}};_0x240ff0(++_0x17cb72);}(_0x44fa,0x1b7));var _0xa44f=function(_0x1205b1,_0x2a7010){_0x1205b1=_0x1205b1-0x0;var _0x2d3bad=_0x44fa[_0x1205b1];return _0x2d3bad;};'use strict';var _=require(_0xa44f('0x0'));var util=require(_0xa44f('0x1'));var moment=require(_0xa44f('0x2'));var BPromise=require(_0xa44f('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa44f('0x4'));var db=require(_0xa44f('0x5'))['db'];var utils=require(_0xa44f('0x6'));var logger=require(_0xa44f('0x7'))('rpc');var config=require(_0xa44f('0x8'));var jayson=require(_0xa44f('0x9'));var client=jayson[_0xa44f('0xa')][_0xa44f('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xb79317,_0x99f50d,_0x2a8ac9){return new BPromise(function(_0x4c2747,_0x44eda5){return client[_0xa44f('0xc')](_0xb79317,_0x2a8ac9)[_0xa44f('0xd')](function(_0x58382d){logger[_0xa44f('0xe')](_0xa44f('0xf'),_0x99f50d,_0xa44f('0x10'));logger[_0xa44f('0x11')](_0xa44f('0x12'),_0x99f50d,_0xa44f('0x10'),JSON[_0xa44f('0x13')](_0x58382d));if(_0x58382d['error']){if(_0x58382d[_0xa44f('0x14')][_0xa44f('0x15')]===0x1f4){logger['error'](_0xa44f('0xf'),_0x99f50d,_0x58382d[_0xa44f('0x14')][_0xa44f('0x16')]);return _0x44eda5(_0x58382d[_0xa44f('0x14')][_0xa44f('0x16')]);}logger['error'](_0xa44f('0xf'),_0x99f50d,_0x58382d['error'][_0xa44f('0x16')]);return _0x4c2747(_0x58382d[_0xa44f('0x14')][_0xa44f('0x16')]);}else{logger[_0xa44f('0xe')]('ZendeskField,\x20%s,\x20%s',_0x99f50d,'request\x20sent');_0x4c2747(_0x58382d[_0xa44f('0x17')][_0xa44f('0x16')]);}})[_0xa44f('0x18')](function(_0x4f0e34){logger[_0xa44f('0x14')](_0xa44f('0xf'),_0x99f50d,_0x4f0e34);_0x44eda5(_0x4f0e34);});});}
\ No newline at end of file
+var _0x58e7=['http','request','then','request\x20sent','debug','ZendeskField,\x20%s,\x20%s,\x20%s','stringify','error','ZendeskField,\x20%s,\x20%s','message','info','result','catch','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client'];(function(_0x45059b,_0x2117a0){var _0x4b29f4=function(_0x58ea13){while(--_0x58ea13){_0x45059b['push'](_0x45059b['shift']());}};_0x4b29f4(++_0x2117a0);}(_0x58e7,0x138));var _0x758e=function(_0x562367,_0xaba81b){_0x562367=_0x562367-0x0;var _0x3ed7cc=_0x58e7[_0x562367];return _0x3ed7cc;};'use strict';var _=require('lodash');var util=require(_0x758e('0x0'));var moment=require(_0x758e('0x1'));var BPromise=require(_0x758e('0x2'));var rs=require(_0x758e('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x758e('0x4'))['db'];var utils=require(_0x758e('0x5'));var logger=require(_0x758e('0x6'))('rpc');var config=require(_0x758e('0x7'));var jayson=require(_0x758e('0x8'));var client=jayson[_0x758e('0x9')][_0x758e('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5dfc1a,_0x2c27d5,_0x5d20df){return new BPromise(function(_0x416e46,_0x24adc4){return client[_0x758e('0xb')](_0x5dfc1a,_0x5d20df)[_0x758e('0xc')](function(_0xce4aae){logger['info']('ZendeskField,\x20%s,\x20%s',_0x2c27d5,_0x758e('0xd'));logger[_0x758e('0xe')](_0x758e('0xf'),_0x2c27d5,_0x758e('0xd'),JSON[_0x758e('0x10')](_0xce4aae));if(_0xce4aae['error']){if(_0xce4aae[_0x758e('0x11')]['code']===0x1f4){logger[_0x758e('0x11')](_0x758e('0x12'),_0x2c27d5,_0xce4aae[_0x758e('0x11')][_0x758e('0x13')]);return _0x24adc4(_0xce4aae[_0x758e('0x11')][_0x758e('0x13')]);}logger['error']('ZendeskField,\x20%s,\x20%s',_0x2c27d5,_0xce4aae[_0x758e('0x11')][_0x758e('0x13')]);return _0x416e46(_0xce4aae[_0x758e('0x11')][_0x758e('0x13')]);}else{logger[_0x758e('0x14')](_0x758e('0x12'),_0x2c27d5,_0x758e('0xd'));_0x416e46(_0xce4aae[_0x758e('0x15')]['message']);}})[_0x758e('0x16')](function(_0x1548e3){logger['error'](_0x758e('0x12'),_0x2c27d5,_0x1548e3);_0x24adc4(_0x1548e3);});});}
\ No newline at end of file
index affaa88..9d80f7a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfafb=['post','addConfiguration','put','/:id','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZohoAccount.controller','get','isAuthenticated','show','/:id/configurations','getConfigurations','/:id/fields','getFields','create'];(function(_0x4931d3,_0x1f94f0){var _0x4a4816=function(_0x3bd6e3){while(--_0x3bd6e3){_0x4931d3['push'](_0x4931d3['shift']());}};_0x4a4816(++_0x1f94f0);}(_0xfafb,0xf2));var _0xbfaf=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xfafb[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0xbfaf('0x0'));var util=require('util');var path=require(_0xbfaf('0x1'));var timeout=require(_0xbfaf('0x2'));var express=require(_0xbfaf('0x3'));var router=express[_0xbfaf('0x4')]();var fs_extra=require(_0xbfaf('0x5'));var auth=require(_0xbfaf('0x6'));var interaction=require(_0xbfaf('0x7'));var config=require(_0xbfaf('0x8'));var controller=require(_0xbfaf('0x9'));router[_0xbfaf('0xa')]('/',auth[_0xbfaf('0xb')](),controller['index']);router[_0xbfaf('0xa')]('/:id',auth[_0xbfaf('0xb')](),controller[_0xbfaf('0xc')]);router[_0xbfaf('0xa')](_0xbfaf('0xd'),auth[_0xbfaf('0xb')](),controller[_0xbfaf('0xe')]);router['get'](_0xbfaf('0xf'),auth['isAuthenticated'](),controller[_0xbfaf('0x10')]);router['post']('/',auth[_0xbfaf('0xb')](),controller[_0xbfaf('0x11')]);router[_0xbfaf('0x12')](_0xbfaf('0xd'),auth[_0xbfaf('0xb')](),controller[_0xbfaf('0x13')]);router[_0xbfaf('0x14')](_0xbfaf('0x15'),auth['isAuthenticated'](),controller[_0xbfaf('0x16')]);router[_0xbfaf('0x17')](_0xbfaf('0x15'),auth[_0xbfaf('0xb')](),controller[_0xbfaf('0x18')]);module[_0xbfaf('0x19')]=router;
\ No newline at end of file
+var _0x49e9=['../../components/auth/service','../../components/interaction/service','./intZohoAccount.controller','get','index','isAuthenticated','show','getConfigurations','/:id/fields','getFields','create','post','/:id/configurations','addConfiguration','put','/:id','delete','multer','util','path','connect-timeout','express','Router','fs-extra'];(function(_0x392f67,_0x773cc4){var _0x5810d6=function(_0x1da556){while(--_0x1da556){_0x392f67['push'](_0x392f67['shift']());}};_0x5810d6(++_0x773cc4);}(_0x49e9,0x1c1));var _0x949e=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x49e9[_0x14add3];return _0x4a174f;};'use strict';var multer=require(_0x949e('0x0'));var util=require(_0x949e('0x1'));var path=require(_0x949e('0x2'));var timeout=require(_0x949e('0x3'));var express=require(_0x949e('0x4'));var router=express[_0x949e('0x5')]();var fs_extra=require(_0x949e('0x6'));var auth=require(_0x949e('0x7'));var interaction=require(_0x949e('0x8'));var config=require('../../config/environment');var controller=require(_0x949e('0x9'));router[_0x949e('0xa')]('/',auth['isAuthenticated'](),controller[_0x949e('0xb')]);router[_0x949e('0xa')]('/:id',auth[_0x949e('0xc')](),controller[_0x949e('0xd')]);router[_0x949e('0xa')]('/:id/configurations',auth[_0x949e('0xc')](),controller[_0x949e('0xe')]);router['get'](_0x949e('0xf'),auth[_0x949e('0xc')](),controller[_0x949e('0x10')]);router['post']('/',auth['isAuthenticated'](),controller[_0x949e('0x11')]);router[_0x949e('0x12')](_0x949e('0x13'),auth[_0x949e('0xc')](),controller[_0x949e('0x14')]);router[_0x949e('0x15')](_0x949e('0x16'),auth[_0x949e('0xc')](),controller['update']);router[_0x949e('0x17')](_0x949e('0x16'),auth[_0x949e('0xc')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index d19f1dc..8103cda 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd0bb=['exports','STRING','sequelize'];(function(_0x4bc0f7,_0x329c69){var _0x1fa851=function(_0x53173d){while(--_0x53173d){_0x4bc0f7['push'](_0x4bc0f7['shift']());}};_0x1fa851(++_0x329c69);}(_0xd0bb,0x1eb));var _0xbd0b=function(_0xb1ee0e,_0x2126df){_0xb1ee0e=_0xb1ee0e-0x0;var _0x376116=_0xd0bb[_0xb1ee0e];return _0x376116;};'use strict';var Sequelize=require(_0xbd0b('0x0'));module[_0xbd0b('0x1')]={'name':{'type':Sequelize[_0xbd0b('0x2')]},'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0xbd0b('0x2')]},'zone':{'type':Sequelize['STRING']},'clientId':{'type':Sequelize[_0xbd0b('0x2')]},'clientSecret':{'type':Sequelize[_0xbd0b('0x2')]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'code':{'type':Sequelize[_0xbd0b('0x2')]},'refreshToken':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x1be1=['STRING'];(function(_0x36eab2,_0x1188bb){var _0x47ba2d=function(_0xb0672c){while(--_0xb0672c){_0x36eab2['push'](_0x36eab2['shift']());}};_0x47ba2d(++_0x1188bb);}(_0x1be1,0x192));var _0x11be=function(_0x539166,_0x405f9d){_0x539166=_0x539166-0x0;var _0x417f63=_0x1be1[_0x539166];return _0x417f63;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x11be('0x0')]},'description':{'type':Sequelize[_0x11be('0x0')]},'host':{'type':Sequelize['STRING']},'zone':{'type':Sequelize[_0x11be('0x0')]},'clientId':{'type':Sequelize[_0x11be('0x0')]},'clientSecret':{'type':Sequelize[_0x11be('0x0')]},'serverUrl':{'type':Sequelize[_0x11be('0x0')],'allowNull':![]},'code':{'type':Sequelize['STRING']},'refreshToken':{'type':Sequelize[_0x11be('0x0')]}};
\ No newline at end of file
index 419549b..173cf42 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f9a=['then','destroy','sendStatus','error','stack','name','send','index','map','ZohoAccount','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','nolimit','sort','where','pick','filter','merge','options','includeAll','findAll','rows','catch','show','include','find','create','body','params','getConfigurations','findOne','ZohoConfiguration','addConfiguration','AccountId','Subjects','getSubjects','Descriptions','getDescriptions','channel','ZohoField','zone','https://accounts.zoho.com','https://accounts.zoho.eu','https://accounts.zoho.in','https://accounts.zoho.com.cn','POST','/oauth/v2/token','refreshToken','clientSecret','refresh_token','access_token','getFields','host','com','substring','lastIndexOf','GET','response','message','Owner','Subject','Description','WhoId','Call_Duration','Call_Result','Call_Start_Time','Call_Type','remove','system_mandatory','display_label','custom_field','data_type','picklist','pick_list_values','test','statusCode','Wrong\x20credentials','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','status','end','json','limit','undefined','count','offset','Content-Range','apply','reject','save','update'];(function(_0x163000,_0x1c14e5){var _0x3b3fdd=function(_0x1a4427){while(--_0x1a4427){_0x163000['push'](_0x163000['shift']());}};_0x3b3fdd(++_0x1c14e5);}(_0x2f9a,0xd0));var _0xa2f9=function(_0x2f479d,_0x1d6836){_0x2f479d=_0x2f479d-0x0;var _0x300d48=_0x2f9a[_0x2f479d];return _0x300d48;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xa2f9('0x0'));var zipdir=require(_0xa2f9('0x1'));var jsonpatch=require(_0xa2f9('0x2'));var rp=require('request-promise');var moment=require(_0xa2f9('0x3'));var BPromise=require(_0xa2f9('0x4'));var Mustache=require(_0xa2f9('0x5'));var util=require(_0xa2f9('0x6'));var path=require(_0xa2f9('0x7'));var sox=require('sox');var csv=require(_0xa2f9('0x8'));var ejs=require(_0xa2f9('0x9'));var fs=require('fs');var fs_extra=require(_0xa2f9('0xa'));var _=require(_0xa2f9('0xb'));var squel=require(_0xa2f9('0xc'));var crypto=require(_0xa2f9('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xa2f9('0xe'));var Papa=require(_0xa2f9('0xf'));var Redis=require(_0xa2f9('0x10'));var authService=require(_0xa2f9('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xa2f9('0x12'));var hardwareService=require(_0xa2f9('0x13'));var logger=require(_0xa2f9('0x14'))('api');var utils=require(_0xa2f9('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xa2f9('0x16'));var db=require(_0xa2f9('0x17'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x4d54f9,_0x39a790){_0x39a790=_0x39a790||0xcc;return function(_0x4ecb0d){if(_0x4ecb0d){return _0x4d54f9['sendStatus'](_0x39a790);}return _0x4d54f9[_0xa2f9('0x18')](_0x39a790)[_0xa2f9('0x19')]();};}function respondWithResult(_0x4afd45,_0x19e91b){_0x19e91b=_0x19e91b||0xc8;return function(_0x3e6762){if(_0x3e6762){return _0x4afd45[_0xa2f9('0x18')](_0x19e91b)[_0xa2f9('0x1a')](_0x3e6762);}};}function respondWithFilteredResult(_0x357e7a,_0x19abe6){return function(_0x56dda9){if(_0x56dda9){var _0x58bc54=typeof _0x19abe6['offset']==='undefined'&&typeof _0x19abe6[_0xa2f9('0x1b')]===_0xa2f9('0x1c');var _0x5a96df=_0x56dda9[_0xa2f9('0x1d')];var _0x490c8e=_0x58bc54?0x0:_0x19abe6[_0xa2f9('0x1e')];var _0x4bbfc8=_0x58bc54?_0x56dda9['count']:_0x19abe6[_0xa2f9('0x1e')]+_0x19abe6[_0xa2f9('0x1b')];var _0x3e41ac;if(_0x4bbfc8>=_0x5a96df){_0x4bbfc8=_0x5a96df;_0x3e41ac=0xc8;}else{_0x3e41ac=0xce;}_0x357e7a[_0xa2f9('0x18')](_0x3e41ac);return _0x357e7a['set'](_0xa2f9('0x1f'),_0x490c8e+'-'+_0x4bbfc8+'/'+_0x5a96df)[_0xa2f9('0x1a')](_0x56dda9);}return null;};}function patchUpdates(_0x2e9334){return function(_0x2551a3){try{jsonpatch[_0xa2f9('0x20')](_0x2551a3,_0x2e9334,!![]);}catch(_0x527bdf){return BPromise[_0xa2f9('0x21')](_0x527bdf);}return _0x2551a3[_0xa2f9('0x22')]();};}function saveUpdates(_0x94c570,_0x28f544){return function(_0x81e816){if(_0x81e816){return _0x81e816[_0xa2f9('0x23')](_0x94c570)[_0xa2f9('0x24')](function(_0x37477a){return _0x37477a;});}return null;};}function removeEntity(_0x4f7411,_0x394902){return function(_0x37d1d2){if(_0x37d1d2){return _0x37d1d2[_0xa2f9('0x25')]()[_0xa2f9('0x24')](function(){_0x4f7411[_0xa2f9('0x18')](0xcc)[_0xa2f9('0x19')]();});}};}function handleEntityNotFound(_0x4a8fc4,_0x5d6604){return function(_0x178269){if(!_0x178269){_0x4a8fc4[_0xa2f9('0x26')](0x194);}return _0x178269;};}function handleError(_0x14fa5a,_0x5f4f73){_0x5f4f73=_0x5f4f73||0x1f4;return function(_0x57df84){logger[_0xa2f9('0x27')](_0x57df84[_0xa2f9('0x28')]);if(_0x57df84[_0xa2f9('0x29')]){delete _0x57df84[_0xa2f9('0x29')];}_0x14fa5a[_0xa2f9('0x18')](_0x5f4f73)[_0xa2f9('0x2a')](_0x57df84);};}exports[_0xa2f9('0x2b')]=function(_0x40456d,_0x5853f1){var _0x2b63d1={},_0x3d43e6={},_0x165fde={'count':0x0,'rows':[]};var _0x329d56=_[_0xa2f9('0x2c')](db[_0xa2f9('0x2d')][_0xa2f9('0x2e')],function(_0x14ee78){return{'name':_0x14ee78[_0xa2f9('0x2f')],'type':_0x14ee78[_0xa2f9('0x30')]['key']};});_0x3d43e6[_0xa2f9('0x31')]=_[_0xa2f9('0x2c')](_0x329d56,_0xa2f9('0x29'));_0x3d43e6[_0xa2f9('0x32')]=_[_0xa2f9('0x33')](_0x40456d[_0xa2f9('0x32')]);_0x3d43e6[_0xa2f9('0x34')]=_[_0xa2f9('0x35')](_0x3d43e6[_0xa2f9('0x31')],_0x3d43e6[_0xa2f9('0x32')]);_0x2b63d1[_0xa2f9('0x36')]=_[_0xa2f9('0x35')](_0x3d43e6[_0xa2f9('0x31')],qs[_0xa2f9('0x37')](_0x40456d['query'][_0xa2f9('0x37')]));_0x2b63d1[_0xa2f9('0x36')]=_0x2b63d1[_0xa2f9('0x36')][_0xa2f9('0x38')]?_0x2b63d1[_0xa2f9('0x36')]:_0x3d43e6[_0xa2f9('0x31')];if(!_0x40456d[_0xa2f9('0x32')]['hasOwnProperty'](_0xa2f9('0x39'))){_0x2b63d1[_0xa2f9('0x1b')]=qs['limit'](_0x40456d['query'][_0xa2f9('0x1b')]);_0x2b63d1['offset']=qs['offset'](_0x40456d['query']['offset']);}_0x2b63d1['order']=qs['sort'](_0x40456d[_0xa2f9('0x32')][_0xa2f9('0x3a')]);_0x2b63d1[_0xa2f9('0x3b')]=qs[_0xa2f9('0x34')](_[_0xa2f9('0x3c')](_0x40456d[_0xa2f9('0x32')],_0x3d43e6[_0xa2f9('0x34')]),_0x329d56);if(_0x40456d['query'][_0xa2f9('0x3d')]){_0x2b63d1['where']=_[_0xa2f9('0x3e')](_0x2b63d1[_0xa2f9('0x3b')],{'$or':_[_0xa2f9('0x2c')](_0x329d56,function(_0x565890){if(_0x565890[_0xa2f9('0x30')]!=='VIRTUAL'){var _0x1565f1={};_0x1565f1[_0x565890[_0xa2f9('0x29')]]={'$like':'%'+_0x40456d[_0xa2f9('0x32')][_0xa2f9('0x3d')]+'%'};return _0x1565f1;}})});}_0x2b63d1=_[_0xa2f9('0x3e')]({},_0x2b63d1,_0x40456d[_0xa2f9('0x3f')]);var _0x428956={'where':_0x2b63d1['where']};return db['ZohoAccount']['count'](_0x428956)[_0xa2f9('0x24')](function(_0x221921){_0x165fde['count']=_0x221921;if(_0x40456d[_0xa2f9('0x32')][_0xa2f9('0x40')]){_0x2b63d1['include']=[{'all':!![]}];}return db[_0xa2f9('0x2d')][_0xa2f9('0x41')](_0x2b63d1);})['then'](function(_0x1309d0){_0x165fde[_0xa2f9('0x42')]=_0x1309d0;return _0x165fde;})[_0xa2f9('0x24')](respondWithFilteredResult(_0x5853f1,_0x2b63d1))[_0xa2f9('0x43')](handleError(_0x5853f1,null));};exports[_0xa2f9('0x44')]=function(_0xf304fc,_0x1136a2){var _0x50e679={'raw':![],'where':{'id':_0xf304fc['params']['id']}},_0x3b7149={};_0x3b7149[_0xa2f9('0x31')]=_[_0xa2f9('0x33')](db[_0xa2f9('0x2d')][_0xa2f9('0x2e')]);_0x3b7149['query']=_[_0xa2f9('0x33')](_0xf304fc[_0xa2f9('0x32')]);_0x3b7149[_0xa2f9('0x34')]=_[_0xa2f9('0x35')](_0x3b7149[_0xa2f9('0x31')],_0x3b7149['query']);_0x50e679[_0xa2f9('0x36')]=_[_0xa2f9('0x35')](_0x3b7149[_0xa2f9('0x31')],qs[_0xa2f9('0x37')](_0xf304fc['query'][_0xa2f9('0x37')]));_0x50e679[_0xa2f9('0x36')]=_0x50e679[_0xa2f9('0x36')][_0xa2f9('0x38')]?_0x50e679[_0xa2f9('0x36')]:_0x3b7149[_0xa2f9('0x31')];if(_0xf304fc[_0xa2f9('0x32')][_0xa2f9('0x40')]){_0x50e679[_0xa2f9('0x45')]=[{'all':!![]}];}_0x50e679=_[_0xa2f9('0x3e')]({},_0x50e679,_0xf304fc['options']);return db[_0xa2f9('0x2d')][_0xa2f9('0x46')](_0x50e679)[_0xa2f9('0x24')](handleEntityNotFound(_0x1136a2,null))['then'](respondWithResult(_0x1136a2,null))[_0xa2f9('0x43')](handleError(_0x1136a2,null));};exports[_0xa2f9('0x47')]=function(_0x5766c4,_0x52f347){return db[_0xa2f9('0x2d')][_0xa2f9('0x47')](_0x5766c4['body'],{})[_0xa2f9('0x24')](respondWithResult(_0x52f347,0xc9))[_0xa2f9('0x43')](handleError(_0x52f347,null));};exports['update']=function(_0x57c22f,_0x15af94){if(_0x57c22f[_0xa2f9('0x48')]['id']){delete _0x57c22f[_0xa2f9('0x48')]['id'];}return db[_0xa2f9('0x2d')][_0xa2f9('0x46')]({'where':{'id':_0x57c22f[_0xa2f9('0x49')]['id']}})['then'](handleEntityNotFound(_0x15af94,null))[_0xa2f9('0x24')](saveUpdates(_0x57c22f[_0xa2f9('0x48')],null))[_0xa2f9('0x24')](respondWithResult(_0x15af94,null))[_0xa2f9('0x43')](handleError(_0x15af94,null));};exports[_0xa2f9('0x25')]=function(_0x436702,_0x5aff04){return db['ZohoAccount'][_0xa2f9('0x46')]({'where':{'id':_0x436702[_0xa2f9('0x49')]['id']}})[_0xa2f9('0x24')](handleEntityNotFound(_0x5aff04,null))[_0xa2f9('0x24')](removeEntity(_0x5aff04,null))[_0xa2f9('0x43')](handleError(_0x5aff04,null));};exports[_0xa2f9('0x4a')]=function(_0xbf9a35,_0x3d6bb8,_0xcd0013){var _0x416e36={};var _0x2b4732={};var _0x500eba;var _0x4bbd2d;return db[_0xa2f9('0x2d')][_0xa2f9('0x4b')]({'where':{'id':_0xbf9a35[_0xa2f9('0x49')]['id']}})[_0xa2f9('0x24')](handleEntityNotFound(_0x3d6bb8,null))['then'](function(_0x2c7155){if(_0x2c7155){_0x500eba=_0x2c7155;_0x2b4732['model']=_[_0xa2f9('0x33')](db[_0xa2f9('0x4c')][_0xa2f9('0x2e')]);_0x2b4732[_0xa2f9('0x32')]=_[_0xa2f9('0x33')](_0xbf9a35[_0xa2f9('0x32')]);_0x2b4732[_0xa2f9('0x34')]=_[_0xa2f9('0x35')](_0x2b4732[_0xa2f9('0x31')],_0x2b4732[_0xa2f9('0x32')]);_0x416e36[_0xa2f9('0x36')]=_[_0xa2f9('0x35')](_0x2b4732[_0xa2f9('0x31')],qs['fields'](_0xbf9a35[_0xa2f9('0x32')][_0xa2f9('0x37')]));_0x416e36['attributes']=_0x416e36['attributes']['length']?_0x416e36[_0xa2f9('0x36')]:_0x2b4732['model'];_0x416e36['order']=qs[_0xa2f9('0x3a')](_0xbf9a35['query'][_0xa2f9('0x3a')]);_0x416e36['where']=qs[_0xa2f9('0x34')](_[_0xa2f9('0x3c')](_0xbf9a35['query'],_0x2b4732['filters']));if(_0xbf9a35[_0xa2f9('0x32')][_0xa2f9('0x3d')]){_0x416e36[_0xa2f9('0x3b')]=_[_0xa2f9('0x3e')](_0x416e36[_0xa2f9('0x3b')],{'$or':_[_0xa2f9('0x2c')](_0x416e36['attributes'],function(_0x390a8d){var _0x3da6bd={};_0x3da6bd[_0x390a8d]={'$like':'%'+_0xbf9a35[_0xa2f9('0x32')]['filter']+'%'};return _0x3da6bd;})});}_0x416e36=_['merge']({},_0x416e36,_0xbf9a35[_0xa2f9('0x3f')]);return _0x500eba[_0xa2f9('0x4a')](_0x416e36);}})[_0xa2f9('0x24')](function(_0x251cdb){if(_0x251cdb){_0x4bbd2d=_0x251cdb[_0xa2f9('0x38')];if(!_0xbf9a35[_0xa2f9('0x32')]['hasOwnProperty']('nolimit')){_0x416e36[_0xa2f9('0x1b')]=qs[_0xa2f9('0x1b')](_0xbf9a35['query'][_0xa2f9('0x1b')]);_0x416e36['offset']=qs[_0xa2f9('0x1e')](_0xbf9a35[_0xa2f9('0x32')][_0xa2f9('0x1e')]);}return _0x500eba[_0xa2f9('0x4a')](_0x416e36);}})[_0xa2f9('0x24')](function(_0x2ddc5f){if(_0x2ddc5f){return _0x2ddc5f?{'count':_0x4bbd2d,'rows':_0x2ddc5f}:null;}})[_0xa2f9('0x24')](respondWithResult(_0x3d6bb8,null))[_0xa2f9('0x43')](handleError(_0x3d6bb8,null));};exports[_0xa2f9('0x4d')]=function(_0x2a4d1d,_0x1c0d7d,_0x7f0d1c){if(_0x2a4d1d[_0xa2f9('0x48')]['id']){delete _0x2a4d1d[_0xa2f9('0x48')]['id'];}return db[_0xa2f9('0x2d')][_0xa2f9('0x4b')]({'where':{'id':_0x2a4d1d[_0xa2f9('0x49')]['id']}})[_0xa2f9('0x24')](handleEntityNotFound(_0x1c0d7d,null))[_0xa2f9('0x24')](function(_0x5aa648){if(_0x5aa648){_0x2a4d1d['body'][_0xa2f9('0x4e')]=_0x5aa648['id'];_0x2a4d1d[_0xa2f9('0x48')][_0xa2f9('0x4f')]=integrations[_0xa2f9('0x50')](_0x2a4d1d[_0xa2f9('0x48')]['channel'],_0x2a4d1d[_0xa2f9('0x48')][_0xa2f9('0x30')]);_0x2a4d1d['body'][_0xa2f9('0x51')]=integrations[_0xa2f9('0x52')](_0x2a4d1d[_0xa2f9('0x48')][_0xa2f9('0x53')],_0x2a4d1d[_0xa2f9('0x48')][_0xa2f9('0x30')]);return db['ZohoConfiguration']['create'](_0x2a4d1d[_0xa2f9('0x48')],{'include':[{'model':db[_0xa2f9('0x54')],'as':_0xa2f9('0x4f')},{'model':db[_0xa2f9('0x54')],'as':'Descriptions'}]});}return null;})[_0xa2f9('0x24')](respondWithResult(_0x1c0d7d,null))[_0xa2f9('0x43')](handleError(_0x1c0d7d,null));};function getAccessToken(_0x4edadb){return new Promise(function(_0x116d1a,_0x5fcbf8){var _0x401976;switch(_0x4edadb[_0xa2f9('0x55')]){case'US':_0x401976=_0xa2f9('0x56');break;case'AU':_0x401976='https://accounts.zoho.com.au';break;case'EU':_0x401976=_0xa2f9('0x57');break;case'IN':_0x401976=_0xa2f9('0x58');break;case'CN':_0x401976=_0xa2f9('0x59');break;default:_0x401976=_0xa2f9('0x57');break;}var _0x47991d={'method':_0xa2f9('0x5a'),'uri':_0x401976+_0xa2f9('0x5b'),'qs':{'refresh_token':_0x4edadb[_0xa2f9('0x5c')],'client_id':_0x4edadb['clientId'],'client_secret':_0x4edadb[_0xa2f9('0x5d')],'grant_type':_0xa2f9('0x5e')},'json':!![]};return rp(_0x47991d)['then'](function(_0x18b084){if(_0x18b084['access_token']){_0x116d1a(_0x18b084[_0xa2f9('0x5f')]);}else{_0x5fcbf8('Unable\x20to\x20retrieve\x20the\x20access\x20token');}})[_0xa2f9('0x43')](function(_0x3019aa){_0x5fcbf8(_0x3019aa);});});}exports[_0xa2f9('0x60')]=function(_0x41f546,_0x4c9d1a,_0x2047ce){var _0x15fcf8,_0xf4b3cf,_0x3630d0,_0x3a6881,_0x2525c9;return db[_0xa2f9('0x2d')][_0xa2f9('0x4b')]({'where':{'id':_0x41f546['params']['id']},'attributes':['id',_0xa2f9('0x61'),_0xa2f9('0x55'),'clientId',_0xa2f9('0x5d'),'serverUrl','code',_0xa2f9('0x5c')]})[_0xa2f9('0x24')](handleEntityNotFound(_0x4c9d1a,null))[_0xa2f9('0x24')](function(_0x4de74b){_0x2525c9=_0x4de74b;_0x15fcf8=_0x2525c9[_0xa2f9('0x61')];_0xf4b3cf=_0x15fcf8==='zoho.eu'?'eu':_0xa2f9('0x62');_0x3630d0=_0x2525c9['serverUrl'];var _0x471f1a=_0x3630d0['slice'](-0x1);if(_0x471f1a==='/'||_0x471f1a==='\x5c'||_0x471f1a===':'){_0x3630d0=_0x3630d0[_0xa2f9('0x63')](0x0,_0x3630d0[_0xa2f9('0x64')](_0x471f1a));}if(!_0x2525c9[_0xa2f9('0x5c')]){throw new Error('Refresh\x20Token\x20not\x20available\x20for\x20the\x20account');}return getAccessToken(_0x2525c9);})[_0xa2f9('0x24')](function(_0x5e2149){if(_0x5e2149){return rp({'method':_0xa2f9('0x65'),'uri':util['format']('https://www.zohoapis.%s/crm/v2/settings/fields',_0xf4b3cf),'qs':{'module':'Calls'},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x5e2149},'json':!![]});}})['then'](function(_0x407a18){if(_0x407a18){if(_0x407a18[_0xa2f9('0x66')]&&_0x407a18[_0xa2f9('0x66')][_0xa2f9('0x27')]){throw new Error(_0x407a18[_0xa2f9('0x66')][_0xa2f9('0x27')][_0xa2f9('0x67')]);}var _0x429756=[];var _0x134714=[];var _0x52ba53=[_0xa2f9('0x68'),_0xa2f9('0x69'),_0xa2f9('0x6a'),_0xa2f9('0x6b'),_0xa2f9('0x6c'),_0xa2f9('0x6d'),_0xa2f9('0x6e'),_0xa2f9('0x6f')];_0x134714=_[_0xa2f9('0x70')](_0x407a18[_0xa2f9('0x37')],function(_0x6a6397){return _0x52ba53['includes'](_0x6a6397['api_name']);});for(var _0x415b57=0x0;_0x415b57<_0x134714['length'];_0x415b57++){if(_0x134714[_0x415b57][_0xa2f9('0x71')]===![]){_0x429756['push']({'id':_0x134714[_0x415b57]['id'],'name':_0x134714[_0x415b57][_0xa2f9('0x72')],'custom':_0x134714[_0x415b57][_0xa2f9('0x73')],'options':_0x134714[_0x415b57][_0xa2f9('0x74')]===_0xa2f9('0x75')&&_0x134714[_0x415b57][_0xa2f9('0x76')][_0xa2f9('0x38')]>-0x1?_[_0xa2f9('0x2c')](_0x134714[_0x415b57][_0xa2f9('0x76')],function(_0x1d77b8){return{'name':_0x1d77b8,'value':_0x1d77b8};}):[]});}}return{'count':_0x429756[_0xa2f9('0x38')],'rows':_0x429756};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithResult(_0x4c9d1a,null))[_0xa2f9('0x43')](function(_0x58086b){var _0x6f082=_0x41f546[_0xa2f9('0x32')][_0xa2f9('0x77')]?0x1f4:_0x58086b[_0xa2f9('0x78')]||0x1f4;logger[_0xa2f9('0x27')]('getFields,\x20%s,\x20%s,\x20%s',_0xa2f9('0x60'),_0x6f082,JSON['stringify'](_0x58086b));delete _0x58086b['name'];if(_0x6f082===0x191){_0x6f082=0x190;}_0x4c9d1a[_0xa2f9('0x18')](_0x6f082)[_0xa2f9('0x2a')](_0x41f546['query']['test']?{'message':_0xa2f9('0x79'),'statusCode':_0x58086b['statusCode']}:_0x58086b);});};
\ No newline at end of file
+var _0x5767=['desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','limit','undefined','count','offset','set','Content-Range','apply','save','update','then','destroy','error','stack','name','send','index','map','ZohoAccount','rawAttributes','fieldName','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','pick','filter','where','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','params','find','create','body','getConfigurations','findOne','ZohoConfiguration','order','addConfiguration','AccountId','channel','Descriptions','getDescriptions','ZohoField','Subjects','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.in','https://accounts.zoho.com.cn','POST','clientId','clientSecret','refresh_token','access_token','Unable\x20to\x20retrieve\x20the\x20access\x20token','host','code','refreshToken','zoho.eu','com','serverUrl','substring','lastIndexOf','Refresh\x20Token\x20not\x20available\x20for\x20the\x20account','GET','https://www.zohoapis.%s/crm/v2/settings/fields','Calls','Zoho-oauthtoken\x20','response','Owner','Subject','Description','WhoId','Call_Duration','Call_Result','Call_Start_Time','Call_Type','includes','system_mandatory','display_label','custom_field','picklist','pick_list_values','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','getFields','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','ejs','fs-extra','lodash','jsforce'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x5767,0x77));var _0x7576=function(_0x168c4f,_0x32c2d4){_0x168c4f=_0x168c4f-0x0;var _0x3f7006=_0x5767[_0x168c4f];return _0x3f7006;};'use strict';var emlformat=require(_0x7576('0x0'));var rimraf=require(_0x7576('0x1'));var zipdir=require(_0x7576('0x2'));var jsonpatch=require(_0x7576('0x3'));var rp=require('request-promise');var moment=require(_0x7576('0x4'));var BPromise=require(_0x7576('0x5'));var Mustache=require(_0x7576('0x6'));var util=require('util');var path=require(_0x7576('0x7'));var sox=require(_0x7576('0x8'));var csv=require('to-csv');var ejs=require(_0x7576('0x9'));var fs=require('fs');var fs_extra=require(_0x7576('0xa'));var _=require(_0x7576('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x7576('0xc'));var deskjs=require(_0x7576('0xd'));var toCsv=require('to-csv');var querystring=require(_0x7576('0xe'));var Papa=require(_0x7576('0xf'));var Redis=require(_0x7576('0x10'));var authService=require(_0x7576('0x11'));var qs=require(_0x7576('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x7576('0x13'));var logger=require(_0x7576('0x14'))(_0x7576('0x15'));var utils=require(_0x7576('0x16'));var config=require(_0x7576('0x17'));var licenseUtil=require(_0x7576('0x18'));var db=require(_0x7576('0x19'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x538962,_0x5d48eb){_0x5d48eb=_0x5d48eb||0xcc;return function(_0x14364b){if(_0x14364b){return _0x538962[_0x7576('0x1a')](_0x5d48eb);}return _0x538962[_0x7576('0x1b')](_0x5d48eb)[_0x7576('0x1c')]();};}function respondWithResult(_0x2e7a57,_0x1ecf69){_0x1ecf69=_0x1ecf69||0xc8;return function(_0x55c097){if(_0x55c097){return _0x2e7a57[_0x7576('0x1b')](_0x1ecf69)[_0x7576('0x1d')](_0x55c097);}};}function respondWithFilteredResult(_0x3cf0a0,_0x3ff41c){return function(_0x377d5e){if(_0x377d5e){var _0x31fdfd=typeof _0x3ff41c['offset']==='undefined'&&typeof _0x3ff41c[_0x7576('0x1e')]===_0x7576('0x1f');var _0x2c1862=_0x377d5e[_0x7576('0x20')];var _0x176efd=_0x31fdfd?0x0:_0x3ff41c[_0x7576('0x21')];var _0x4bf939=_0x31fdfd?_0x377d5e[_0x7576('0x20')]:_0x3ff41c[_0x7576('0x21')]+_0x3ff41c['limit'];var _0x3a7bb5;if(_0x4bf939>=_0x2c1862){_0x4bf939=_0x2c1862;_0x3a7bb5=0xc8;}else{_0x3a7bb5=0xce;}_0x3cf0a0[_0x7576('0x1b')](_0x3a7bb5);return _0x3cf0a0[_0x7576('0x22')](_0x7576('0x23'),_0x176efd+'-'+_0x4bf939+'/'+_0x2c1862)[_0x7576('0x1d')](_0x377d5e);}return null;};}function patchUpdates(_0x48ac95){return function(_0xdc9224){try{jsonpatch[_0x7576('0x24')](_0xdc9224,_0x48ac95,!![]);}catch(_0xb20d02){return BPromise['reject'](_0xb20d02);}return _0xdc9224[_0x7576('0x25')]();};}function saveUpdates(_0x30b335,_0x376c81){return function(_0x284d2b){if(_0x284d2b){return _0x284d2b[_0x7576('0x26')](_0x30b335)[_0x7576('0x27')](function(_0xe70425){return _0xe70425;});}return null;};}function removeEntity(_0x8ef470,_0x58e811){return function(_0x33288c){if(_0x33288c){return _0x33288c[_0x7576('0x28')]()[_0x7576('0x27')](function(){_0x8ef470[_0x7576('0x1b')](0xcc)[_0x7576('0x1c')]();});}};}function handleEntityNotFound(_0x47f4db,_0x12e89b){return function(_0x1f9e2a){if(!_0x1f9e2a){_0x47f4db[_0x7576('0x1a')](0x194);}return _0x1f9e2a;};}function handleError(_0x288984,_0x17c3fe){_0x17c3fe=_0x17c3fe||0x1f4;return function(_0x22092f){logger[_0x7576('0x29')](_0x22092f[_0x7576('0x2a')]);if(_0x22092f['name']){delete _0x22092f[_0x7576('0x2b')];}_0x288984[_0x7576('0x1b')](_0x17c3fe)[_0x7576('0x2c')](_0x22092f);};}exports[_0x7576('0x2d')]=function(_0x3d54a8,_0x17406a){var _0x108e4a={},_0x5751c1={},_0x31f944={'count':0x0,'rows':[]};var _0x5c3dea=_[_0x7576('0x2e')](db[_0x7576('0x2f')][_0x7576('0x30')],function(_0x31ea31){return{'name':_0x31ea31[_0x7576('0x31')],'type':_0x31ea31['type']['key']};});_0x5751c1[_0x7576('0x32')]=_[_0x7576('0x2e')](_0x5c3dea,_0x7576('0x2b'));_0x5751c1[_0x7576('0x33')]=_[_0x7576('0x34')](_0x3d54a8[_0x7576('0x33')]);_0x5751c1[_0x7576('0x35')]=_[_0x7576('0x36')](_0x5751c1[_0x7576('0x32')],_0x5751c1[_0x7576('0x33')]);_0x108e4a['attributes']=_[_0x7576('0x36')](_0x5751c1[_0x7576('0x32')],qs[_0x7576('0x37')](_0x3d54a8['query'][_0x7576('0x37')]));_0x108e4a[_0x7576('0x38')]=_0x108e4a[_0x7576('0x38')][_0x7576('0x39')]?_0x108e4a[_0x7576('0x38')]:_0x5751c1['model'];if(!_0x3d54a8[_0x7576('0x33')][_0x7576('0x3a')](_0x7576('0x3b'))){_0x108e4a[_0x7576('0x1e')]=qs[_0x7576('0x1e')](_0x3d54a8[_0x7576('0x33')][_0x7576('0x1e')]);_0x108e4a['offset']=qs[_0x7576('0x21')](_0x3d54a8['query'][_0x7576('0x21')]);}_0x108e4a['order']=qs['sort'](_0x3d54a8[_0x7576('0x33')][_0x7576('0x3c')]);_0x108e4a['where']=qs[_0x7576('0x35')](_[_0x7576('0x3d')](_0x3d54a8[_0x7576('0x33')],_0x5751c1[_0x7576('0x35')]),_0x5c3dea);if(_0x3d54a8[_0x7576('0x33')][_0x7576('0x3e')]){_0x108e4a[_0x7576('0x3f')]=_[_0x7576('0x40')](_0x108e4a[_0x7576('0x3f')],{'$or':_['map'](_0x5c3dea,function(_0x5b9313){if(_0x5b9313[_0x7576('0x41')]!==_0x7576('0x42')){var _0x8a6291={};_0x8a6291[_0x5b9313[_0x7576('0x2b')]]={'$like':'%'+_0x3d54a8[_0x7576('0x33')][_0x7576('0x3e')]+'%'};return _0x8a6291;}})});}_0x108e4a=_[_0x7576('0x40')]({},_0x108e4a,_0x3d54a8[_0x7576('0x43')]);var _0x4e0e30={'where':_0x108e4a[_0x7576('0x3f')]};return db[_0x7576('0x2f')][_0x7576('0x20')](_0x4e0e30)[_0x7576('0x27')](function(_0x1bbd75){_0x31f944[_0x7576('0x20')]=_0x1bbd75;if(_0x3d54a8[_0x7576('0x33')][_0x7576('0x44')]){_0x108e4a[_0x7576('0x45')]=[{'all':!![]}];}return db[_0x7576('0x2f')][_0x7576('0x46')](_0x108e4a);})[_0x7576('0x27')](function(_0x326d01){_0x31f944[_0x7576('0x47')]=_0x326d01;return _0x31f944;})['then'](respondWithFilteredResult(_0x17406a,_0x108e4a))[_0x7576('0x48')](handleError(_0x17406a,null));};exports['show']=function(_0x32a2bd,_0x4a87f5){var _0x3cebdc={'raw':![],'where':{'id':_0x32a2bd[_0x7576('0x49')]['id']}},_0xeebb93={};_0xeebb93[_0x7576('0x32')]=_['keys'](db[_0x7576('0x2f')]['rawAttributes']);_0xeebb93[_0x7576('0x33')]=_['keys'](_0x32a2bd[_0x7576('0x33')]);_0xeebb93['filters']=_[_0x7576('0x36')](_0xeebb93[_0x7576('0x32')],_0xeebb93[_0x7576('0x33')]);_0x3cebdc[_0x7576('0x38')]=_['intersection'](_0xeebb93['model'],qs[_0x7576('0x37')](_0x32a2bd['query'][_0x7576('0x37')]));_0x3cebdc[_0x7576('0x38')]=_0x3cebdc['attributes'][_0x7576('0x39')]?_0x3cebdc[_0x7576('0x38')]:_0xeebb93['model'];if(_0x32a2bd['query']['includeAll']){_0x3cebdc[_0x7576('0x45')]=[{'all':!![]}];}_0x3cebdc=_['merge']({},_0x3cebdc,_0x32a2bd[_0x7576('0x43')]);return db[_0x7576('0x2f')][_0x7576('0x4a')](_0x3cebdc)[_0x7576('0x27')](handleEntityNotFound(_0x4a87f5,null))[_0x7576('0x27')](respondWithResult(_0x4a87f5,null))[_0x7576('0x48')](handleError(_0x4a87f5,null));};exports[_0x7576('0x4b')]=function(_0x836a91,_0x3f5b79){return db[_0x7576('0x2f')]['create'](_0x836a91[_0x7576('0x4c')],{})[_0x7576('0x27')](respondWithResult(_0x3f5b79,0xc9))['catch'](handleError(_0x3f5b79,null));};exports[_0x7576('0x26')]=function(_0x57863b,_0x36cdab){if(_0x57863b[_0x7576('0x4c')]['id']){delete _0x57863b[_0x7576('0x4c')]['id'];}return db['ZohoAccount'][_0x7576('0x4a')]({'where':{'id':_0x57863b['params']['id']}})[_0x7576('0x27')](handleEntityNotFound(_0x36cdab,null))['then'](saveUpdates(_0x57863b[_0x7576('0x4c')],null))[_0x7576('0x27')](respondWithResult(_0x36cdab,null))[_0x7576('0x48')](handleError(_0x36cdab,null));};exports['destroy']=function(_0x4f71f0,_0x41f680){return db[_0x7576('0x2f')][_0x7576('0x4a')]({'where':{'id':_0x4f71f0[_0x7576('0x49')]['id']}})[_0x7576('0x27')](handleEntityNotFound(_0x41f680,null))[_0x7576('0x27')](removeEntity(_0x41f680,null))['catch'](handleError(_0x41f680,null));};exports[_0x7576('0x4d')]=function(_0x35dd16,_0x3f7a00,_0x185cfc){var _0x5b3891={};var _0x232a7c={};var _0x4e2132;var _0x2e9ada;return db['ZohoAccount'][_0x7576('0x4e')]({'where':{'id':_0x35dd16['params']['id']}})[_0x7576('0x27')](handleEntityNotFound(_0x3f7a00,null))[_0x7576('0x27')](function(_0x4fd325){if(_0x4fd325){_0x4e2132=_0x4fd325;_0x232a7c[_0x7576('0x32')]=_[_0x7576('0x34')](db[_0x7576('0x4f')][_0x7576('0x30')]);_0x232a7c[_0x7576('0x33')]=_[_0x7576('0x34')](_0x35dd16[_0x7576('0x33')]);_0x232a7c[_0x7576('0x35')]=_[_0x7576('0x36')](_0x232a7c[_0x7576('0x32')],_0x232a7c[_0x7576('0x33')]);_0x5b3891[_0x7576('0x38')]=_[_0x7576('0x36')](_0x232a7c[_0x7576('0x32')],qs[_0x7576('0x37')](_0x35dd16[_0x7576('0x33')][_0x7576('0x37')]));_0x5b3891['attributes']=_0x5b3891['attributes']['length']?_0x5b3891['attributes']:_0x232a7c[_0x7576('0x32')];_0x5b3891[_0x7576('0x50')]=qs['sort'](_0x35dd16[_0x7576('0x33')][_0x7576('0x3c')]);_0x5b3891['where']=qs[_0x7576('0x35')](_['pick'](_0x35dd16[_0x7576('0x33')],_0x232a7c['filters']));if(_0x35dd16[_0x7576('0x33')][_0x7576('0x3e')]){_0x5b3891['where']=_[_0x7576('0x40')](_0x5b3891[_0x7576('0x3f')],{'$or':_['map'](_0x5b3891[_0x7576('0x38')],function(_0x18cb77){var _0x3e1f4d={};_0x3e1f4d[_0x18cb77]={'$like':'%'+_0x35dd16[_0x7576('0x33')][_0x7576('0x3e')]+'%'};return _0x3e1f4d;})});}_0x5b3891=_[_0x7576('0x40')]({},_0x5b3891,_0x35dd16['options']);return _0x4e2132[_0x7576('0x4d')](_0x5b3891);}})[_0x7576('0x27')](function(_0x2fa706){if(_0x2fa706){_0x2e9ada=_0x2fa706[_0x7576('0x39')];if(!_0x35dd16[_0x7576('0x33')][_0x7576('0x3a')](_0x7576('0x3b'))){_0x5b3891[_0x7576('0x1e')]=qs[_0x7576('0x1e')](_0x35dd16[_0x7576('0x33')][_0x7576('0x1e')]);_0x5b3891['offset']=qs[_0x7576('0x21')](_0x35dd16[_0x7576('0x33')][_0x7576('0x21')]);}return _0x4e2132[_0x7576('0x4d')](_0x5b3891);}})[_0x7576('0x27')](function(_0x3a61aa){if(_0x3a61aa){return _0x3a61aa?{'count':_0x2e9ada,'rows':_0x3a61aa}:null;}})[_0x7576('0x27')](respondWithResult(_0x3f7a00,null))[_0x7576('0x48')](handleError(_0x3f7a00,null));};exports[_0x7576('0x51')]=function(_0xb4a1e7,_0x2304aa,_0x2af644){if(_0xb4a1e7[_0x7576('0x4c')]['id']){delete _0xb4a1e7['body']['id'];}return db[_0x7576('0x2f')][_0x7576('0x4e')]({'where':{'id':_0xb4a1e7[_0x7576('0x49')]['id']}})['then'](handleEntityNotFound(_0x2304aa,null))[_0x7576('0x27')](function(_0x1f78a4){if(_0x1f78a4){_0xb4a1e7['body'][_0x7576('0x52')]=_0x1f78a4['id'];_0xb4a1e7[_0x7576('0x4c')]['Subjects']=integrations['getSubjects'](_0xb4a1e7['body'][_0x7576('0x53')],_0xb4a1e7[_0x7576('0x4c')][_0x7576('0x41')]);_0xb4a1e7[_0x7576('0x4c')][_0x7576('0x54')]=integrations[_0x7576('0x55')](_0xb4a1e7[_0x7576('0x4c')][_0x7576('0x53')],_0xb4a1e7[_0x7576('0x4c')]['type']);return db[_0x7576('0x4f')]['create'](_0xb4a1e7['body'],{'include':[{'model':db[_0x7576('0x56')],'as':_0x7576('0x57')},{'model':db[_0x7576('0x56')],'as':_0x7576('0x54')}]});}return null;})['then'](respondWithResult(_0x2304aa,null))[_0x7576('0x48')](handleError(_0x2304aa,null));};function getAccessToken(_0x15aa9f){return new Promise(function(_0x273299,_0x4fc85f){var _0x22e952;switch(_0x15aa9f['zone']){case'US':_0x22e952=_0x7576('0x58');break;case'AU':_0x22e952=_0x7576('0x59');break;case'EU':_0x22e952=_0x7576('0x5a');break;case'IN':_0x22e952=_0x7576('0x5b');break;case'CN':_0x22e952=_0x7576('0x5c');break;default:_0x22e952=_0x7576('0x5a');break;}var _0x10ea76={'method':_0x7576('0x5d'),'uri':_0x22e952+'/oauth/v2/token','qs':{'refresh_token':_0x15aa9f['refreshToken'],'client_id':_0x15aa9f[_0x7576('0x5e')],'client_secret':_0x15aa9f[_0x7576('0x5f')],'grant_type':_0x7576('0x60')},'json':!![]};return rp(_0x10ea76)[_0x7576('0x27')](function(_0x4e14a3){if(_0x4e14a3[_0x7576('0x61')]){_0x273299(_0x4e14a3[_0x7576('0x61')]);}else{_0x4fc85f(_0x7576('0x62'));}})[_0x7576('0x48')](function(_0x2a0ec8){_0x4fc85f(_0x2a0ec8);});});}exports['getFields']=function(_0x347284,_0x4d06fa,_0x39ec37){var _0x430693,_0x27e12c,_0x5077ea,_0x3b49d3,_0x375466;return db[_0x7576('0x2f')][_0x7576('0x4e')]({'where':{'id':_0x347284['params']['id']},'attributes':['id',_0x7576('0x63'),'zone','clientId',_0x7576('0x5f'),'serverUrl',_0x7576('0x64'),_0x7576('0x65')]})['then'](handleEntityNotFound(_0x4d06fa,null))[_0x7576('0x27')](function(_0x3c7eb5){_0x375466=_0x3c7eb5;_0x430693=_0x375466[_0x7576('0x63')];_0x27e12c=_0x430693===_0x7576('0x66')?'eu':_0x7576('0x67');_0x5077ea=_0x375466[_0x7576('0x68')];var _0x54d6f0=_0x5077ea['slice'](-0x1);if(_0x54d6f0==='/'||_0x54d6f0==='\x5c'||_0x54d6f0===':'){_0x5077ea=_0x5077ea[_0x7576('0x69')](0x0,_0x5077ea[_0x7576('0x6a')](_0x54d6f0));}if(!_0x375466[_0x7576('0x65')]){throw new Error(_0x7576('0x6b'));}return getAccessToken(_0x375466);})['then'](function(_0x5d776f){if(_0x5d776f){return rp({'method':_0x7576('0x6c'),'uri':util['format'](_0x7576('0x6d'),_0x27e12c),'qs':{'module':_0x7576('0x6e')},'headers':{'Authorization':_0x7576('0x6f')+_0x5d776f},'json':!![]});}})[_0x7576('0x27')](function(_0x1d0a21){if(_0x1d0a21){if(_0x1d0a21['response']&&_0x1d0a21[_0x7576('0x70')][_0x7576('0x29')]){throw new Error(_0x1d0a21[_0x7576('0x70')][_0x7576('0x29')]['message']);}var _0x1d116e=[];var _0x165640=[];var _0x39dac9=[_0x7576('0x71'),_0x7576('0x72'),_0x7576('0x73'),_0x7576('0x74'),_0x7576('0x75'),_0x7576('0x76'),_0x7576('0x77'),_0x7576('0x78')];_0x165640=_['remove'](_0x1d0a21[_0x7576('0x37')],function(_0x44df6d){return _0x39dac9[_0x7576('0x79')](_0x44df6d['api_name']);});for(var _0x339cbe=0x0;_0x339cbe<_0x165640[_0x7576('0x39')];_0x339cbe++){if(_0x165640[_0x339cbe][_0x7576('0x7a')]===![]){_0x1d116e['push']({'id':_0x165640[_0x339cbe]['id'],'name':_0x165640[_0x339cbe][_0x7576('0x7b')],'custom':_0x165640[_0x339cbe][_0x7576('0x7c')],'options':_0x165640[_0x339cbe]['data_type']===_0x7576('0x7d')&&_0x165640[_0x339cbe][_0x7576('0x7e')]['length']>-0x1?_[_0x7576('0x2e')](_0x165640[_0x339cbe]['pick_list_values'],function(_0x387ecb){return{'name':_0x387ecb,'value':_0x387ecb};}):[]});}}return{'count':_0x1d116e['length'],'rows':_0x1d116e};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithResult(_0x4d06fa,null))['catch'](function(_0x1d87d5){var _0x5bc6a2=_0x347284['query'][_0x7576('0x7f')]?0x1f4:_0x1d87d5[_0x7576('0x80')]||0x1f4;logger[_0x7576('0x29')](_0x7576('0x81'),_0x7576('0x82'),_0x5bc6a2,JSON['stringify'](_0x1d87d5));delete _0x1d87d5['name'];if(_0x5bc6a2===0x191){_0x5bc6a2=0x190;}_0x4d06fa[_0x7576('0x1b')](_0x5bc6a2)['send'](_0x347284['query']['test']?{'message':_0x7576('0x83'),'statusCode':_0x1d87d5[_0x7576('0x80')]}:_0x1d87d5);});};
\ No newline at end of file
index e95855a..0fce03f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b97=['parse','refresh_token','format','name','ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d','inspect','catch','error','lastIndexOf','https://accounts.zoho.com.cn','authorization_code','refreshToken','info','ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d','lodash','util','../../config/logger','api','moment','path','rimraf','../../config/environment','./intZohoAccount.attributes','../../components/integrations/configuration','exports','define','ZohoAccount','zone','changed','serverUrl','clientId','clientSecret','code','host','slice','substring','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.in','https://accounts.zoho.eu','POST'];(function(_0x50cd9b,_0xa3b69d){var _0xb000b9=function(_0x348102){while(--_0x348102){_0x50cd9b['push'](_0x50cd9b['shift']());}};_0xb000b9(++_0xa3b69d);}(_0x8b97,0x12d));var _0x78b9=function(_0xa4e9d,_0x5436d){_0xa4e9d=_0xa4e9d-0x0;var _0x4c577e=_0x8b97[_0xa4e9d];return _0x4c577e;};'use strict';var _=require(_0x78b9('0x0'));var util=require(_0x78b9('0x1'));var logger=require(_0x78b9('0x2'))(_0x78b9('0x3'));var moment=require(_0x78b9('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x78b9('0x5'));var rimraf=require(_0x78b9('0x6'));var config=require(_0x78b9('0x7'));var attributes=require(_0x78b9('0x8'));var integrations=require(_0x78b9('0x9'));module[_0x78b9('0xa')]=function(_0x17630c,_0x274d82){return _0x17630c[_0x78b9('0xb')](_0x78b9('0xc'),attributes,{'tableName':'int_zoho_accounts','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0x1f0ecd,_0x2f7486,_0x38b8fc){if(_0x1f0ecd['changed'](_0x78b9('0xd'))||_0x1f0ecd[_0x78b9('0xe')](_0x78b9('0xf'))||_0x1f0ecd['changed'](_0x78b9('0x10'))||_0x1f0ecd['changed'](_0x78b9('0x11'))||_0x1f0ecd[_0x78b9('0xe')](_0x78b9('0x12'))||_0x1f0ecd[_0x78b9('0xe')](_0x78b9('0x13'))){var _0x3d2ef3,_0x1cd974;_0x3d2ef3=_0x1f0ecd[_0x78b9('0xf')];var _0x1dbdf6=_0x3d2ef3[_0x78b9('0x14')](-0x1);if(_0x1dbdf6==='/'||_0x1dbdf6==='\x5c'||_0x1dbdf6===':'){_0x3d2ef3=_0x3d2ef3[_0x78b9('0x15')](0x0,_0x3d2ef3['lastIndexOf'](_0x1dbdf6));}switch(_0x1f0ecd[_0x78b9('0xd')]){case'US':_0x1cd974=_0x78b9('0x16');break;case'AU':_0x1cd974=_0x78b9('0x17');break;case'IN':_0x1cd974=_0x78b9('0x18');break;case'CN':_0x1cd974='https://accounts.zoho.com.cn';break;default:_0x1cd974=_0x78b9('0x19');break;}var _0x19aa12={'method':_0x78b9('0x1a'),'uri':_0x1cd974+'/oauth/v2/token','form':{'grant_type':'authorization_code','client_id':_0x1f0ecd[_0x78b9('0x10')],'client_secret':_0x1f0ecd['clientSecret'],'redirect_uri':_0x1f0ecd[_0x78b9('0xf')],'code':_0x1f0ecd[_0x78b9('0x12')]},'headers':{'Content-Type':'application/x-www-form-urlencoded'}};return rp(_0x19aa12)['then'](function(_0x4e44f4){var _0x27bd3f=JSON[_0x78b9('0x1b')](_0x4e44f4);if(_0x27bd3f[_0x78b9('0x1c')]){_0x1f0ecd['refreshToken']=_0x27bd3f[_0x78b9('0x1c')];logger['info'](util[_0x78b9('0x1d')]('ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d',_0x1f0ecd[_0x78b9('0x1e')],_0x1f0ecd['id']));}else{logger['error'](util[_0x78b9('0x1d')](_0x78b9('0x1f'),_0x1f0ecd['name'],_0x1f0ecd['id']),util[_0x78b9('0x20')](_0x27bd3f,{'showHidden':![],'depth':null}));}return _0x38b8fc(null,_0x2f7486);})[_0x78b9('0x21')](function(_0x473449){logger[_0x78b9('0x22')](util[_0x78b9('0x1d')](_0x78b9('0x1f'),_0x1f0ecd['name'],_0x1f0ecd['id']),util[_0x78b9('0x20')](parsedResult,{'showHidden':![],'depth':null}));return _0x38b8fc(_0x473449);});}else{return _0x38b8fc(null,_0x2f7486);}},'beforeUpdate':function(_0x1d2e44,_0x50ce13,_0x4bf331){if(_0x1d2e44[_0x78b9('0xe')](_0x78b9('0xd'))||_0x1d2e44[_0x78b9('0xe')](_0x78b9('0xf'))||_0x1d2e44[_0x78b9('0xe')](_0x78b9('0x10'))||_0x1d2e44[_0x78b9('0xe')](_0x78b9('0x11'))||_0x1d2e44['changed']('code')||_0x1d2e44[_0x78b9('0xe')](_0x78b9('0x13'))){var _0x3d3973,_0x34576e;_0x3d3973=_0x1d2e44[_0x78b9('0xf')];var _0x456e48=_0x3d3973['slice'](-0x1);if(_0x456e48==='/'||_0x456e48==='\x5c'||_0x456e48===':'){_0x3d3973=_0x3d3973[_0x78b9('0x15')](0x0,_0x3d3973[_0x78b9('0x23')](_0x456e48));}switch(_0x1d2e44[_0x78b9('0xd')]){case'US':_0x34576e='https://accounts.zoho.com';break;case'AU':_0x34576e=_0x78b9('0x17');break;case'IN':_0x34576e=_0x78b9('0x18');break;case'CN':_0x34576e=_0x78b9('0x24');break;default:_0x34576e=_0x78b9('0x19');break;}var _0x2f429a={'method':_0x78b9('0x1a'),'uri':_0x34576e+'/oauth/v2/token','form':{'grant_type':_0x78b9('0x25'),'client_id':_0x1d2e44[_0x78b9('0x10')],'client_secret':_0x1d2e44[_0x78b9('0x11')],'redirect_uri':_0x1d2e44['serverUrl'],'code':_0x1d2e44[_0x78b9('0x12')]},'headers':{'Content-Type':'application/x-www-form-urlencoded'}};return rp(_0x2f429a)['then'](function(_0xf2c7c5){var _0x3bc1ce=JSON[_0x78b9('0x1b')](_0xf2c7c5);if(_0x3bc1ce[_0x78b9('0x1c')]){_0x1d2e44[_0x78b9('0x26')]=_0x3bc1ce[_0x78b9('0x1c')];logger[_0x78b9('0x27')](util[_0x78b9('0x1d')](_0x78b9('0x28'),_0x1d2e44[_0x78b9('0x1e')],_0x1d2e44['id']));}else{logger[_0x78b9('0x22')](util['format'](_0x78b9('0x1f'),_0x1d2e44[_0x78b9('0x1e')],_0x1d2e44['id']),util['inspect'](_0x3bc1ce,{'showHidden':![],'depth':null}));}return _0x4bf331(null,_0x50ce13);})[_0x78b9('0x21')](function(_0x45a968){logger[_0x78b9('0x22')](util[_0x78b9('0x1d')]('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x1d2e44['name'],_0x1d2e44['id']),util['inspect'](parsedResult,{'showHidden':![],'depth':null}));return _0x4bf331(_0x45a968);});}else{return _0x4bf331(null,_0x50ce13);}}}});};
\ No newline at end of file
+var _0xb118=['code','host','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','refreshToken','refresh_token','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','catch','parse','util','../../config/logger','moment','request-promise','rimraf','./intZohoAccount.attributes','../../components/integrations/configuration','exports','ZohoAccount','int_zoho_accounts','changed','zone','serverUrl','clientSecret'];(function(_0x59879f,_0x179e98){var _0x500d21=function(_0x5b428e){while(--_0x5b428e){_0x59879f['push'](_0x59879f['shift']());}};_0x500d21(++_0x179e98);}(_0xb118,0x1de));var _0x8b11=function(_0x52d38b,_0x51b6f8){_0x52d38b=_0x52d38b-0x0;var _0x3be46b=_0xb118[_0x52d38b];return _0x3be46b;};'use strict';var _=require('lodash');var util=require(_0x8b11('0x0'));var logger=require(_0x8b11('0x1'))('api');var moment=require(_0x8b11('0x2'));var BPromise=require('bluebird');var rp=require(_0x8b11('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x8b11('0x4'));var config=require('../../config/environment');var attributes=require(_0x8b11('0x5'));var integrations=require(_0x8b11('0x6'));module[_0x8b11('0x7')]=function(_0x3fcc7a,_0x5c6208){return _0x3fcc7a['define'](_0x8b11('0x8'),attributes,{'tableName':_0x8b11('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0x4765e7,_0xb30a6b,_0x59754b){if(_0x4765e7[_0x8b11('0xa')](_0x8b11('0xb'))||_0x4765e7[_0x8b11('0xa')](_0x8b11('0xc'))||_0x4765e7[_0x8b11('0xa')]('clientId')||_0x4765e7[_0x8b11('0xa')](_0x8b11('0xd'))||_0x4765e7[_0x8b11('0xa')](_0x8b11('0xe'))||_0x4765e7[_0x8b11('0xa')](_0x8b11('0xf'))){var _0x206d8a,_0x1d4e9e;_0x206d8a=_0x4765e7[_0x8b11('0xc')];var _0xfdff9b=_0x206d8a[_0x8b11('0x10')](-0x1);if(_0xfdff9b==='/'||_0xfdff9b==='\x5c'||_0xfdff9b===':'){_0x206d8a=_0x206d8a[_0x8b11('0x11')](0x0,_0x206d8a[_0x8b11('0x12')](_0xfdff9b));}switch(_0x4765e7[_0x8b11('0xb')]){case'US':_0x1d4e9e=_0x8b11('0x13');break;case'AU':_0x1d4e9e=_0x8b11('0x14');break;case'IN':_0x1d4e9e=_0x8b11('0x15');break;case'CN':_0x1d4e9e=_0x8b11('0x16');break;default:_0x1d4e9e=_0x8b11('0x17');break;}var _0x34732d={'method':_0x8b11('0x18'),'uri':_0x1d4e9e+_0x8b11('0x19'),'form':{'grant_type':_0x8b11('0x1a'),'client_id':_0x4765e7[_0x8b11('0x1b')],'client_secret':_0x4765e7[_0x8b11('0xd')],'redirect_uri':_0x4765e7[_0x8b11('0xc')],'code':_0x4765e7['code']},'headers':{'Content-Type':_0x8b11('0x1c')}};return rp(_0x34732d)[_0x8b11('0x1d')](function(_0x3eeece){var _0x457d3b=JSON['parse'](_0x3eeece);if(_0x457d3b['refresh_token']){_0x4765e7[_0x8b11('0x1e')]=_0x457d3b[_0x8b11('0x1f')];logger[_0x8b11('0x20')](util[_0x8b11('0x21')](_0x8b11('0x22'),_0x4765e7[_0x8b11('0x23')],_0x4765e7['id']));}else{logger[_0x8b11('0x24')](util['format'](_0x8b11('0x25'),_0x4765e7[_0x8b11('0x23')],_0x4765e7['id']),util[_0x8b11('0x26')](_0x457d3b,{'showHidden':![],'depth':null}));}return _0x59754b(null,_0xb30a6b);})[_0x8b11('0x27')](function(_0x2d3d50){logger['error'](util['format'](_0x8b11('0x25'),_0x4765e7[_0x8b11('0x23')],_0x4765e7['id']),util[_0x8b11('0x26')](parsedResult,{'showHidden':![],'depth':null}));return _0x59754b(_0x2d3d50);});}else{return _0x59754b(null,_0xb30a6b);}},'beforeUpdate':function(_0x45cc10,_0x522234,_0x5135a9){if(_0x45cc10[_0x8b11('0xa')]('zone')||_0x45cc10[_0x8b11('0xa')](_0x8b11('0xc'))||_0x45cc10[_0x8b11('0xa')](_0x8b11('0x1b'))||_0x45cc10['changed'](_0x8b11('0xd'))||_0x45cc10[_0x8b11('0xa')](_0x8b11('0xe'))||_0x45cc10[_0x8b11('0xa')](_0x8b11('0xf'))){var _0x440323,_0x6cb01a;_0x440323=_0x45cc10[_0x8b11('0xc')];var _0x3bf1b4=_0x440323[_0x8b11('0x10')](-0x1);if(_0x3bf1b4==='/'||_0x3bf1b4==='\x5c'||_0x3bf1b4===':'){_0x440323=_0x440323['substring'](0x0,_0x440323[_0x8b11('0x12')](_0x3bf1b4));}switch(_0x45cc10[_0x8b11('0xb')]){case'US':_0x6cb01a=_0x8b11('0x13');break;case'AU':_0x6cb01a=_0x8b11('0x14');break;case'IN':_0x6cb01a=_0x8b11('0x15');break;case'CN':_0x6cb01a=_0x8b11('0x16');break;default:_0x6cb01a='https://accounts.zoho.eu';break;}var _0x354a3b={'method':_0x8b11('0x18'),'uri':_0x6cb01a+_0x8b11('0x19'),'form':{'grant_type':_0x8b11('0x1a'),'client_id':_0x45cc10[_0x8b11('0x1b')],'client_secret':_0x45cc10[_0x8b11('0xd')],'redirect_uri':_0x45cc10[_0x8b11('0xc')],'code':_0x45cc10[_0x8b11('0xe')]},'headers':{'Content-Type':_0x8b11('0x1c')}};return rp(_0x354a3b)['then'](function(_0x495ff0){var _0x3e0515=JSON[_0x8b11('0x28')](_0x495ff0);if(_0x3e0515[_0x8b11('0x1f')]){_0x45cc10['refreshToken']=_0x3e0515[_0x8b11('0x1f')];logger[_0x8b11('0x20')](util[_0x8b11('0x21')](_0x8b11('0x22'),_0x45cc10[_0x8b11('0x23')],_0x45cc10['id']));}else{logger['error'](util[_0x8b11('0x21')](_0x8b11('0x25'),_0x45cc10[_0x8b11('0x23')],_0x45cc10['id']),util[_0x8b11('0x26')](_0x3e0515,{'showHidden':![],'depth':null}));}return _0x5135a9(null,_0x522234);})['catch'](function(_0x42f15a){logger[_0x8b11('0x24')](util[_0x8b11('0x21')](_0x8b11('0x25'),_0x45cc10[_0x8b11('0x23')],_0x45cc10['id']),util[_0x8b11('0x26')](parsedResult,{'showHidden':![],'depth':null}));return _0x5135a9(_0x42f15a);});}else{return _0x5135a9(null,_0x522234);}}}});};
\ No newline at end of file
index fb855f4..3b3996f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x01d9=['bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','ZohoAccount,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','GetZohoAccount','ZohoAccount','findAll','options','raw','attributes','limit','include','map','model','ShowZohoAccount','find','where','stringify','lodash','util','moment'];(function(_0xfcdd74,_0x3c721f){var _0x4af489=function(_0x2612bb){while(--_0x2612bb){_0xfcdd74['push'](_0xfcdd74['shift']());}};_0x4af489(++_0x3c721f);}(_0x01d9,0x6c));var _0x901d=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x01d9[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x901d('0x0'));var util=require(_0x901d('0x1'));var moment=require(_0x901d('0x2'));var BPromise=require(_0x901d('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x901d('0x4'));var db=require(_0x901d('0x5'))['db'];var utils=require(_0x901d('0x6'));var logger=require(_0x901d('0x7'))(_0x901d('0x8'));var config=require(_0x901d('0x9'));var jayson=require(_0x901d('0xa'));var client=jayson['client'][_0x901d('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x6c9ac8,_0x21e1d7,_0x12c39f){return new BPromise(function(_0x313f85,_0x39fc94){return client[_0x901d('0xc')](_0x6c9ac8,_0x12c39f)[_0x901d('0xd')](function(_0x15076e){logger[_0x901d('0xe')](_0x901d('0xf'),_0x21e1d7,_0x901d('0x10'));logger[_0x901d('0x11')]('ZohoAccount,\x20%s,\x20%s,\x20%s',_0x21e1d7,_0x901d('0x10'),JSON['stringify'](_0x15076e));if(_0x15076e[_0x901d('0x12')]){if(_0x15076e[_0x901d('0x12')][_0x901d('0x13')]===0x1f4){logger[_0x901d('0x12')](_0x901d('0xf'),_0x21e1d7,_0x15076e['error'][_0x901d('0x14')]);return _0x39fc94(_0x15076e[_0x901d('0x12')][_0x901d('0x14')]);}logger[_0x901d('0x12')](_0x901d('0xf'),_0x21e1d7,_0x15076e[_0x901d('0x12')]['message']);return _0x313f85(_0x15076e[_0x901d('0x12')][_0x901d('0x14')]);}else{logger[_0x901d('0xe')](_0x901d('0xf'),_0x21e1d7,_0x901d('0x10'));_0x313f85(_0x15076e[_0x901d('0x15')][_0x901d('0x14')]);}})[_0x901d('0x16')](function(_0x3368fc){logger[_0x901d('0x12')](_0x901d('0xf'),_0x21e1d7,_0x3368fc);_0x39fc94(_0x3368fc);});});}exports[_0x901d('0x17')]=function(_0x285353){var _0x403db9=this;return new Promise(function(_0x38f42b,_0x414171){return db[_0x901d('0x18')][_0x901d('0x19')]({'raw':_0x285353['options']?_0x285353[_0x901d('0x1a')][_0x901d('0x1b')]===undefined?!![]:![]:!![],'where':_0x285353['options']?_0x285353['options']['where']||null:null,'attributes':_0x285353['options']?_0x285353[_0x901d('0x1a')][_0x901d('0x1c')]||null:null,'limit':_0x285353['options']?_0x285353[_0x901d('0x1a')][_0x901d('0x1d')]||null:null,'include':_0x285353['options']?_0x285353[_0x901d('0x1a')][_0x901d('0x1e')]?_[_0x901d('0x1f')](_0x285353[_0x901d('0x1a')][_0x901d('0x1e')],function(_0x1818d3){return{'model':db[_0x1818d3[_0x901d('0x20')]],'as':_0x1818d3['as'],'attributes':_0x1818d3[_0x901d('0x1c')],'include':_0x1818d3['include']?_[_0x901d('0x1f')](_0x1818d3[_0x901d('0x1e')],function(_0xbc89a5){return{'model':db[_0xbc89a5[_0x901d('0x20')]],'as':_0xbc89a5['as'],'attributes':_0xbc89a5['attributes'],'include':_0xbc89a5[_0x901d('0x1e')]?_[_0x901d('0x1f')](_0xbc89a5[_0x901d('0x1e')],function(_0x3cbe43){return{'model':db[_0x3cbe43[_0x901d('0x20')]],'as':_0x3cbe43['as'],'attributes':_0x3cbe43['attributes']};}):[]};}):[]};}):[]:[]})[_0x901d('0xd')](function(_0xc52d0f){logger[_0x901d('0xe')](_0x901d('0x17'),_0x285353);logger[_0x901d('0x11')](_0x901d('0x17'),_0x285353,JSON['stringify'](_0xc52d0f));_0x38f42b(_0xc52d0f);})[_0x901d('0x16')](function(_0x533038){logger[_0x901d('0x12')](_0x901d('0x17'),_0x533038[_0x901d('0x14')],_0x285353);_0x414171(_0x403db9[_0x901d('0x12')](0x1f4,_0x533038[_0x901d('0x14')]));});});};exports[_0x901d('0x21')]=function(_0x4137b7){var _0x115676=this;return new Promise(function(_0x530c4b,_0x336f28){return db[_0x901d('0x18')][_0x901d('0x22')]({'raw':_0x4137b7[_0x901d('0x1a')]?_0x4137b7[_0x901d('0x1a')][_0x901d('0x1b')]===undefined?!![]:![]:!![],'where':_0x4137b7['options']?_0x4137b7[_0x901d('0x1a')][_0x901d('0x23')]||null:null,'attributes':_0x4137b7[_0x901d('0x1a')]?_0x4137b7['options'][_0x901d('0x1c')]||null:null,'include':_0x4137b7[_0x901d('0x1a')]?_0x4137b7[_0x901d('0x1a')][_0x901d('0x1e')]?_[_0x901d('0x1f')](_0x4137b7[_0x901d('0x1a')][_0x901d('0x1e')],function(_0x1b8d3){return{'model':db[_0x1b8d3[_0x901d('0x20')]],'as':_0x1b8d3['as'],'attributes':_0x1b8d3[_0x901d('0x1c')],'include':_0x1b8d3['include']?_['map'](_0x1b8d3[_0x901d('0x1e')],function(_0x4e66b4){return{'model':db[_0x4e66b4[_0x901d('0x20')]],'as':_0x4e66b4['as'],'attributes':_0x4e66b4[_0x901d('0x1c')],'include':_0x4e66b4['include']?_[_0x901d('0x1f')](_0x4e66b4[_0x901d('0x1e')],function(_0x2f5e22){return{'model':db[_0x2f5e22['model']],'as':_0x2f5e22['as'],'attributes':_0x2f5e22[_0x901d('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x901d('0xd')](function(_0x1a1f9c){logger[_0x901d('0xe')](_0x901d('0x21'),_0x4137b7);logger[_0x901d('0x11')](_0x901d('0x21'),_0x4137b7,JSON[_0x901d('0x24')](_0x1a1f9c));_0x530c4b(_0x1a1f9c);})[_0x901d('0x16')](function(_0x384d82){logger[_0x901d('0x12')](_0x901d('0x21'),_0x384d82[_0x901d('0x14')],_0x4137b7);_0x336f28(_0x115676[_0x901d('0x12')](0x1f4,_0x384d82[_0x901d('0x14')]));});});};
\ No newline at end of file
+var _0x8a9a=['then','info','ZohoAccount,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','GetZohoAccount','ZohoAccount','options','raw','where','attributes','limit','map','include','model','find','ShowZohoAccount','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request'];(function(_0x555481,_0x4eb0bf){var _0x4dcd18=function(_0x29c1b8){while(--_0x29c1b8){_0x555481['push'](_0x555481['shift']());}};_0x4dcd18(++_0x4eb0bf);}(_0x8a9a,0x17f));var _0xa8a9=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x8a9a[_0x397e5f];return _0x5302b8;};'use strict';var _=require('lodash');var util=require(_0xa8a9('0x0'));var moment=require(_0xa8a9('0x1'));var BPromise=require(_0xa8a9('0x2'));var rs=require(_0xa8a9('0x3'));var fs=require('fs');var Redis=require(_0xa8a9('0x4'));var db=require(_0xa8a9('0x5'))['db'];var utils=require(_0xa8a9('0x6'));var logger=require(_0xa8a9('0x7'))(_0xa8a9('0x8'));var config=require(_0xa8a9('0x9'));var jayson=require(_0xa8a9('0xa'));var client=jayson[_0xa8a9('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x24a2bc,_0x4a091d,_0x1b4873){return new BPromise(function(_0x129e9f,_0x1477b0){return client[_0xa8a9('0xc')](_0x24a2bc,_0x1b4873)[_0xa8a9('0xd')](function(_0x4ebe24){logger[_0xa8a9('0xe')](_0xa8a9('0xf'),_0x4a091d,'request\x20sent');logger[_0xa8a9('0x10')]('ZohoAccount,\x20%s,\x20%s,\x20%s',_0x4a091d,_0xa8a9('0x11'),JSON[_0xa8a9('0x12')](_0x4ebe24));if(_0x4ebe24['error']){if(_0x4ebe24[_0xa8a9('0x13')][_0xa8a9('0x14')]===0x1f4){logger[_0xa8a9('0x13')](_0xa8a9('0xf'),_0x4a091d,_0x4ebe24[_0xa8a9('0x13')][_0xa8a9('0x15')]);return _0x1477b0(_0x4ebe24['error'][_0xa8a9('0x15')]);}logger[_0xa8a9('0x13')](_0xa8a9('0xf'),_0x4a091d,_0x4ebe24['error']['message']);return _0x129e9f(_0x4ebe24[_0xa8a9('0x13')][_0xa8a9('0x15')]);}else{logger[_0xa8a9('0xe')]('ZohoAccount,\x20%s,\x20%s',_0x4a091d,_0xa8a9('0x11'));_0x129e9f(_0x4ebe24[_0xa8a9('0x16')]['message']);}})['catch'](function(_0x1039c9){logger[_0xa8a9('0x13')](_0xa8a9('0xf'),_0x4a091d,_0x1039c9);_0x1477b0(_0x1039c9);});});}exports[_0xa8a9('0x17')]=function(_0x46a89d){var _0x4456aa=this;return new Promise(function(_0x5cd106,_0x499e5b){return db[_0xa8a9('0x18')]['findAll']({'raw':_0x46a89d['options']?_0x46a89d[_0xa8a9('0x19')][_0xa8a9('0x1a')]===undefined?!![]:![]:!![],'where':_0x46a89d[_0xa8a9('0x19')]?_0x46a89d[_0xa8a9('0x19')][_0xa8a9('0x1b')]||null:null,'attributes':_0x46a89d[_0xa8a9('0x19')]?_0x46a89d[_0xa8a9('0x19')][_0xa8a9('0x1c')]||null:null,'limit':_0x46a89d[_0xa8a9('0x19')]?_0x46a89d['options'][_0xa8a9('0x1d')]||null:null,'include':_0x46a89d['options']?_0x46a89d[_0xa8a9('0x19')]['include']?_[_0xa8a9('0x1e')](_0x46a89d[_0xa8a9('0x19')]['include'],function(_0x58f832){return{'model':db[_0x58f832['model']],'as':_0x58f832['as'],'attributes':_0x58f832['attributes'],'include':_0x58f832[_0xa8a9('0x1f')]?_['map'](_0x58f832[_0xa8a9('0x1f')],function(_0x5276bd){return{'model':db[_0x5276bd[_0xa8a9('0x20')]],'as':_0x5276bd['as'],'attributes':_0x5276bd[_0xa8a9('0x1c')],'include':_0x5276bd[_0xa8a9('0x1f')]?_[_0xa8a9('0x1e')](_0x5276bd[_0xa8a9('0x1f')],function(_0x34d84a){return{'model':db[_0x34d84a['model']],'as':_0x34d84a['as'],'attributes':_0x34d84a[_0xa8a9('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x45578f){logger[_0xa8a9('0xe')](_0xa8a9('0x17'),_0x46a89d);logger[_0xa8a9('0x10')](_0xa8a9('0x17'),_0x46a89d,JSON[_0xa8a9('0x12')](_0x45578f));_0x5cd106(_0x45578f);})['catch'](function(_0x24021c){logger[_0xa8a9('0x13')](_0xa8a9('0x17'),_0x24021c['message'],_0x46a89d);_0x499e5b(_0x4456aa[_0xa8a9('0x13')](0x1f4,_0x24021c[_0xa8a9('0x15')]));});});};exports['ShowZohoAccount']=function(_0x4d42fc){var _0x5c9246=this;return new Promise(function(_0x5b4022,_0x294137){return db['ZohoAccount'][_0xa8a9('0x21')]({'raw':_0x4d42fc[_0xa8a9('0x19')]?_0x4d42fc[_0xa8a9('0x19')][_0xa8a9('0x1a')]===undefined?!![]:![]:!![],'where':_0x4d42fc['options']?_0x4d42fc['options'][_0xa8a9('0x1b')]||null:null,'attributes':_0x4d42fc[_0xa8a9('0x19')]?_0x4d42fc[_0xa8a9('0x19')]['attributes']||null:null,'include':_0x4d42fc[_0xa8a9('0x19')]?_0x4d42fc[_0xa8a9('0x19')][_0xa8a9('0x1f')]?_[_0xa8a9('0x1e')](_0x4d42fc[_0xa8a9('0x19')]['include'],function(_0x2c890d){return{'model':db[_0x2c890d[_0xa8a9('0x20')]],'as':_0x2c890d['as'],'attributes':_0x2c890d[_0xa8a9('0x1c')],'include':_0x2c890d['include']?_[_0xa8a9('0x1e')](_0x2c890d['include'],function(_0x52df35){return{'model':db[_0x52df35['model']],'as':_0x52df35['as'],'attributes':_0x52df35[_0xa8a9('0x1c')],'include':_0x52df35['include']?_[_0xa8a9('0x1e')](_0x52df35[_0xa8a9('0x1f')],function(_0x1c065e){return{'model':db[_0x1c065e['model']],'as':_0x1c065e['as'],'attributes':_0x1c065e[_0xa8a9('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xa8a9('0xd')](function(_0x559f9b){logger['info'](_0xa8a9('0x22'),_0x4d42fc);logger[_0xa8a9('0x10')]('ShowZohoAccount',_0x4d42fc,JSON[_0xa8a9('0x12')](_0x559f9b));_0x5b4022(_0x559f9b);})[_0xa8a9('0x23')](function(_0x598bf8){logger[_0xa8a9('0x13')](_0xa8a9('0x22'),_0x598bf8[_0xa8a9('0x15')],_0x4d42fc);_0x294137(_0x5c9246['error'](0x1f4,_0x598bf8[_0xa8a9('0x15')]));});});};
\ No newline at end of file
index 3bb639c..929aee7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f3f=['put','update','delete','multer','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZohoConfiguration.controller','index','get','/:id','isAuthenticated','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','create'];(function(_0x5bf593,_0x4b8f39){var _0x4bef25=function(_0x95769){while(--_0x95769){_0x5bf593['push'](_0x5bf593['shift']());}};_0x4bef25(++_0x4b8f39);}(_0x1f3f,0x145));var _0xf1f3=function(_0x5a6e32,_0x573b46){_0x5a6e32=_0x5a6e32-0x0;var _0x168e07=_0x1f3f[_0x5a6e32];return _0x168e07;};'use strict';var multer=require(_0xf1f3('0x0'));var util=require(_0xf1f3('0x1'));var path=require(_0xf1f3('0x2'));var timeout=require(_0xf1f3('0x3'));var express=require('express');var router=express[_0xf1f3('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xf1f3('0x5'));var interaction=require(_0xf1f3('0x6'));var config=require(_0xf1f3('0x7'));var controller=require(_0xf1f3('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0xf1f3('0x9')]);router[_0xf1f3('0xa')](_0xf1f3('0xb'),auth[_0xf1f3('0xc')](),controller['show']);router[_0xf1f3('0xa')](_0xf1f3('0xd'),auth['isAuthenticated'](),controller[_0xf1f3('0xe')]);router[_0xf1f3('0xa')](_0xf1f3('0xf'),auth[_0xf1f3('0xc')](),controller[_0xf1f3('0x10')]);router[_0xf1f3('0xa')](_0xf1f3('0x11'),auth['isAuthenticated'](),controller[_0xf1f3('0x12')]);router['post']('/',auth[_0xf1f3('0xc')](),controller[_0xf1f3('0x13')]);router[_0xf1f3('0x14')](_0xf1f3('0xb'),auth[_0xf1f3('0xc')](),controller[_0xf1f3('0x15')]);router[_0xf1f3('0x16')]('/:id',auth[_0xf1f3('0xc')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xf9df=['path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/fields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','post','create','put','update','exports','multer','util'];(function(_0x15b206,_0x191dd6){var _0x2f1a79=function(_0x10fba7){while(--_0x10fba7){_0x15b206['push'](_0x15b206['shift']());}};_0x2f1a79(++_0x191dd6);}(_0xf9df,0x15c));var _0xff9d=function(_0x1ab232,_0x5707e2){_0x1ab232=_0x1ab232-0x0;var _0x2dbf6d=_0xf9df[_0x1ab232];return _0x2dbf6d;};'use strict';var multer=require(_0xff9d('0x0'));var util=require(_0xff9d('0x1'));var path=require(_0xff9d('0x2'));var timeout=require(_0xff9d('0x3'));var express=require(_0xff9d('0x4'));var router=express[_0xff9d('0x5')]();var fs_extra=require(_0xff9d('0x6'));var auth=require(_0xff9d('0x7'));var interaction=require(_0xff9d('0x8'));var config=require(_0xff9d('0x9'));var controller=require('./intZohoConfiguration.controller');router[_0xff9d('0xa')]('/',auth[_0xff9d('0xb')](),controller[_0xff9d('0xc')]);router[_0xff9d('0xa')](_0xff9d('0xd'),auth[_0xff9d('0xb')](),controller[_0xff9d('0xe')]);router[_0xff9d('0xa')](_0xff9d('0xf'),auth[_0xff9d('0xb')](),controller['getFields']);router[_0xff9d('0xa')](_0xff9d('0x10'),auth[_0xff9d('0xb')](),controller[_0xff9d('0x11')]);router[_0xff9d('0xa')](_0xff9d('0x12'),auth[_0xff9d('0xb')](),controller[_0xff9d('0x13')]);router[_0xff9d('0x14')]('/',auth[_0xff9d('0xb')](),controller[_0xff9d('0x15')]);router[_0xff9d('0x16')]('/:id',auth[_0xff9d('0xb')](),controller[_0xff9d('0x17')]);router['delete'](_0xff9d('0xd'),auth[_0xff9d('0xb')](),controller['destroy']);module[_0xff9d('0x18')]=router;
\ No newline at end of file
index 19b2908..f40399a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8347=['contact_lead','sequelize','exports','ENUM','lead','contact'];(function(_0x9e069c,_0x43f38c){var _0x448ce7=function(_0x258a6a){while(--_0x258a6a){_0x9e069c['push'](_0x9e069c['shift']());}};_0x448ce7(++_0x43f38c);}(_0x8347,0xa9));var _0x7834=function(_0x138aa9,_0x44d435){_0x138aa9=_0x138aa9-0x0;var _0x3c50dd=_0x8347[_0x138aa9];return _0x3c50dd;};'use strict';var Sequelize=require(_0x7834('0x0'));module[_0x7834('0x1')]={'name':{'type':Sequelize['STRING']},'moduleCreate':{'type':Sequelize[_0x7834('0x2')](_0x7834('0x3'),_0x7834('0x4'),'nothing'),'defaultValue':_0x7834('0x3')},'moduleSearch':{'type':Sequelize[_0x7834('0x2')](_0x7834('0x5'),_0x7834('0x4'),_0x7834('0x3')),'defaultValue':'contact_lead'},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xe338=['contact_lead','sequelize','exports','STRING','lead','contact','nothing','ENUM'];(function(_0x681867,_0x21d44e){var _0x3844cb=function(_0x4c9ca4){while(--_0x4c9ca4){_0x681867['push'](_0x681867['shift']());}};_0x3844cb(++_0x21d44e);}(_0xe338,0x99));var _0x8e33=function(_0x32d151,_0x4aeaf8){_0x32d151=_0x32d151-0x0;var _0x146b76=_0xe338[_0x32d151];return _0x146b76;};'use strict';var Sequelize=require(_0x8e33('0x0'));module[_0x8e33('0x1')]={'name':{'type':Sequelize[_0x8e33('0x2')]},'moduleCreate':{'type':Sequelize['ENUM'](_0x8e33('0x3'),_0x8e33('0x4'),_0x8e33('0x5')),'defaultValue':_0x8e33('0x3')},'moduleSearch':{'type':Sequelize[_0x8e33('0x6')](_0x8e33('0x7'),_0x8e33('0x4'),_0x8e33('0x3')),'defaultValue':_0x8e33('0x7')},'description':{'type':Sequelize[_0x8e33('0x2')]}};
\ No newline at end of file
index 23b1cdf..f39a9f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x343a=['../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','error','stack','name','index','map','ZohoConfiguration','rawAttributes','type','key','query','keys','filters','intersection','model','attributes','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','fields','find','create','body','getFields','findOne','nolimit','getSubjects','ZohoField','getDescriptions','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils'];(function(_0x447550,_0x477c3b){var _0x50ce12=function(_0x1941da){while(--_0x1941da){_0x447550['push'](_0x447550['shift']());}};_0x50ce12(++_0x477c3b);}(_0x343a,0x87));var _0xa343=function(_0x2585ef,_0x3b2545){_0x2585ef=_0x2585ef-0x0;var _0x5db7e4=_0x343a[_0x2585ef];return _0x5db7e4;};'use strict';var emlformat=require(_0xa343('0x0'));var rimraf=require(_0xa343('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa343('0x2'));var rp=require('request-promise');var moment=require(_0xa343('0x3'));var BPromise=require(_0xa343('0x4'));var Mustache=require(_0xa343('0x5'));var util=require(_0xa343('0x6'));var path=require(_0xa343('0x7'));var sox=require(_0xa343('0x8'));var csv=require(_0xa343('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xa343('0xa'));var crypto=require(_0xa343('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xa343('0xc'));var toCsv=require(_0xa343('0x9'));var querystring=require(_0xa343('0xd'));var Papa=require(_0xa343('0xe'));var Redis=require(_0xa343('0xf'));var authService=require(_0xa343('0x10'));var qs=require(_0xa343('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa343('0x12'));var logger=require('../../config/logger')(_0xa343('0x13'));var utils=require(_0xa343('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xa343('0x15'));var db=require(_0xa343('0x16'))['db'];function respondWithStatusCode(_0x200855,_0x1779fb){_0x1779fb=_0x1779fb||0xcc;return function(_0x323422){if(_0x323422){return _0x200855[_0xa343('0x17')](_0x1779fb);}return _0x200855[_0xa343('0x18')](_0x1779fb)[_0xa343('0x19')]();};}function respondWithResult(_0x229666,_0x320573){_0x320573=_0x320573||0xc8;return function(_0x2e1d0b){if(_0x2e1d0b){return _0x229666['status'](_0x320573)['json'](_0x2e1d0b);}};}function respondWithFilteredResult(_0x5f5b47,_0x2d1239){return function(_0x30c6c0){if(_0x30c6c0){var _0x413141=typeof _0x2d1239[_0xa343('0x1a')]===_0xa343('0x1b')&&typeof _0x2d1239[_0xa343('0x1c')]===_0xa343('0x1b');var _0x376541=_0x30c6c0[_0xa343('0x1d')];var _0x5ca186=_0x413141?0x0:_0x2d1239[_0xa343('0x1a')];var _0x47c86e=_0x413141?_0x30c6c0[_0xa343('0x1d')]:_0x2d1239[_0xa343('0x1a')]+_0x2d1239[_0xa343('0x1c')];var _0x2585c6;if(_0x47c86e>=_0x376541){_0x47c86e=_0x376541;_0x2585c6=0xc8;}else{_0x2585c6=0xce;}_0x5f5b47[_0xa343('0x18')](_0x2585c6);return _0x5f5b47[_0xa343('0x1e')](_0xa343('0x1f'),_0x5ca186+'-'+_0x47c86e+'/'+_0x376541)['json'](_0x30c6c0);}return null;};}function patchUpdates(_0x4fa306){return function(_0x2a5d6a){try{jsonpatch[_0xa343('0x20')](_0x2a5d6a,_0x4fa306,!![]);}catch(_0xd9a27){return BPromise['reject'](_0xd9a27);}return _0x2a5d6a[_0xa343('0x21')]();};}function saveUpdates(_0x5ec1da,_0x526fb3){return function(_0x39763d){if(_0x39763d){return _0x39763d[_0xa343('0x22')](_0x5ec1da)[_0xa343('0x23')](function(_0x44a509){return _0x44a509;});}return null;};}function removeEntity(_0x126855,_0x1fe076){return function(_0x12916c){if(_0x12916c){return _0x12916c['destroy']()[_0xa343('0x23')](function(){_0x126855['status'](0xcc)[_0xa343('0x19')]();});}};}function handleEntityNotFound(_0x1f66d9,_0x38dfb1){return function(_0x102455){if(!_0x102455){_0x1f66d9[_0xa343('0x17')](0x194);}return _0x102455;};}function handleError(_0x959d88,_0x4bca90){_0x4bca90=_0x4bca90||0x1f4;return function(_0x161363){logger[_0xa343('0x24')](_0x161363[_0xa343('0x25')]);if(_0x161363['name']){delete _0x161363[_0xa343('0x26')];}_0x959d88[_0xa343('0x18')](_0x4bca90)['send'](_0x161363);};}exports[_0xa343('0x27')]=function(_0x5d8d25,_0x5d35b8){var _0x365e7e={},_0x1d7a60={},_0x440edb={'count':0x0,'rows':[]};var _0xcfd981=_[_0xa343('0x28')](db[_0xa343('0x29')][_0xa343('0x2a')],function(_0x558bbe){return{'name':_0x558bbe['fieldName'],'type':_0x558bbe[_0xa343('0x2b')][_0xa343('0x2c')]};});_0x1d7a60['model']=_[_0xa343('0x28')](_0xcfd981,_0xa343('0x26'));_0x1d7a60[_0xa343('0x2d')]=_[_0xa343('0x2e')](_0x5d8d25[_0xa343('0x2d')]);_0x1d7a60[_0xa343('0x2f')]=_[_0xa343('0x30')](_0x1d7a60[_0xa343('0x31')],_0x1d7a60['query']);_0x365e7e[_0xa343('0x32')]=_[_0xa343('0x30')](_0x1d7a60['model'],qs['fields'](_0x5d8d25[_0xa343('0x2d')]['fields']));_0x365e7e['attributes']=_0x365e7e[_0xa343('0x32')][_0xa343('0x33')]?_0x365e7e[_0xa343('0x32')]:_0x1d7a60[_0xa343('0x31')];if(!_0x5d8d25[_0xa343('0x2d')][_0xa343('0x34')]('nolimit')){_0x365e7e[_0xa343('0x1c')]=qs[_0xa343('0x1c')](_0x5d8d25[_0xa343('0x2d')][_0xa343('0x1c')]);_0x365e7e['offset']=qs[_0xa343('0x1a')](_0x5d8d25[_0xa343('0x2d')]['offset']);}_0x365e7e[_0xa343('0x35')]=qs[_0xa343('0x36')](_0x5d8d25[_0xa343('0x2d')][_0xa343('0x36')]);_0x365e7e[_0xa343('0x37')]=qs[_0xa343('0x2f')](_[_0xa343('0x38')](_0x5d8d25['query'],_0x1d7a60[_0xa343('0x2f')]),_0xcfd981);if(_0x5d8d25[_0xa343('0x2d')][_0xa343('0x39')]){_0x365e7e[_0xa343('0x37')]=_[_0xa343('0x3a')](_0x365e7e[_0xa343('0x37')],{'$or':_[_0xa343('0x28')](_0xcfd981,function(_0x469a90){if(_0x469a90[_0xa343('0x2b')]!==_0xa343('0x3b')){var _0x550ca8={};_0x550ca8[_0x469a90[_0xa343('0x26')]]={'$like':'%'+_0x5d8d25['query'][_0xa343('0x39')]+'%'};return _0x550ca8;}})});}_0x365e7e=_['merge']({},_0x365e7e,_0x5d8d25[_0xa343('0x3c')]);var _0x21a67d={'where':_0x365e7e[_0xa343('0x37')]};return db[_0xa343('0x29')][_0xa343('0x1d')](_0x21a67d)[_0xa343('0x23')](function(_0xee6a1d){_0x440edb['count']=_0xee6a1d;if(_0x5d8d25[_0xa343('0x2d')][_0xa343('0x3d')]){_0x365e7e[_0xa343('0x3e')]=[{'all':!![]}];}return db[_0xa343('0x29')][_0xa343('0x3f')](_0x365e7e);})[_0xa343('0x23')](function(_0x411956){_0x440edb[_0xa343('0x40')]=_0x411956;return _0x440edb;})['then'](respondWithFilteredResult(_0x5d35b8,_0x365e7e))[_0xa343('0x41')](handleError(_0x5d35b8,null));};exports[_0xa343('0x42')]=function(_0x31774d,_0x217dbd){var _0x2d2ea8={'raw':![],'where':{'id':_0x31774d[_0xa343('0x43')]['id']}},_0x4be925={};_0x4be925[_0xa343('0x31')]=_['keys'](db['ZohoConfiguration']['rawAttributes']);_0x4be925['query']=_[_0xa343('0x2e')](_0x31774d[_0xa343('0x2d')]);_0x4be925[_0xa343('0x2f')]=_[_0xa343('0x30')](_0x4be925[_0xa343('0x31')],_0x4be925[_0xa343('0x2d')]);_0x2d2ea8[_0xa343('0x32')]=_[_0xa343('0x30')](_0x4be925[_0xa343('0x31')],qs[_0xa343('0x44')](_0x31774d[_0xa343('0x2d')][_0xa343('0x44')]));_0x2d2ea8[_0xa343('0x32')]=_0x2d2ea8['attributes']['length']?_0x2d2ea8[_0xa343('0x32')]:_0x4be925['model'];if(_0x31774d[_0xa343('0x2d')][_0xa343('0x3d')]){_0x2d2ea8[_0xa343('0x3e')]=[{'all':!![]}];}_0x2d2ea8=_[_0xa343('0x3a')]({},_0x2d2ea8,_0x31774d[_0xa343('0x3c')]);return db[_0xa343('0x29')][_0xa343('0x45')](_0x2d2ea8)[_0xa343('0x23')](handleEntityNotFound(_0x217dbd,null))[_0xa343('0x23')](respondWithResult(_0x217dbd,null))[_0xa343('0x41')](handleError(_0x217dbd,null));};exports[_0xa343('0x46')]=function(_0x1f8ba1,_0x5be8f5){return db[_0xa343('0x29')][_0xa343('0x46')](_0x1f8ba1['body'],{})[_0xa343('0x23')](respondWithResult(_0x5be8f5,0xc9))[_0xa343('0x41')](handleError(_0x5be8f5,null));};exports[_0xa343('0x22')]=function(_0xcd64ed,_0x29f7ac){if(_0xcd64ed[_0xa343('0x47')]['id']){delete _0xcd64ed['body']['id'];}return db[_0xa343('0x29')]['find']({'where':{'id':_0xcd64ed[_0xa343('0x43')]['id']}})[_0xa343('0x23')](handleEntityNotFound(_0x29f7ac,null))[_0xa343('0x23')](saveUpdates(_0xcd64ed[_0xa343('0x47')],null))[_0xa343('0x23')](respondWithResult(_0x29f7ac,null))[_0xa343('0x41')](handleError(_0x29f7ac,null));};exports['destroy']=function(_0x547116,_0x29cbfc){return db['ZohoConfiguration'][_0xa343('0x45')]({'where':{'id':_0x547116[_0xa343('0x43')]['id']}})['then'](handleEntityNotFound(_0x29cbfc,null))[_0xa343('0x23')](removeEntity(_0x29cbfc,null))[_0xa343('0x41')](handleError(_0x29cbfc,null));};exports[_0xa343('0x48')]=function(_0x52c474,_0x3ccc36,_0x800bf7){var _0x23244c={};var _0x564e2b={};var _0x4b4601;var _0x3691ec;return db[_0xa343('0x29')][_0xa343('0x49')]({'where':{'id':_0x52c474[_0xa343('0x43')]['id']}})['then'](handleEntityNotFound(_0x3ccc36,null))['then'](function(_0x50df8f){if(_0x50df8f){_0x4b4601=_0x50df8f;_0x564e2b['model']=_[_0xa343('0x2e')](db['ZohoField'][_0xa343('0x2a')]);_0x564e2b[_0xa343('0x2d')]=_[_0xa343('0x2e')](_0x52c474['query']);_0x564e2b[_0xa343('0x2f')]=_[_0xa343('0x30')](_0x564e2b[_0xa343('0x31')],_0x564e2b['query']);_0x23244c[_0xa343('0x32')]=_[_0xa343('0x30')](_0x564e2b[_0xa343('0x31')],qs[_0xa343('0x44')](_0x52c474[_0xa343('0x2d')]['fields']));_0x23244c[_0xa343('0x32')]=_0x23244c[_0xa343('0x32')][_0xa343('0x33')]?_0x23244c['attributes']:_0x564e2b[_0xa343('0x31')];_0x23244c[_0xa343('0x35')]=qs[_0xa343('0x36')](_0x52c474['query']['sort']);_0x23244c[_0xa343('0x37')]=qs['filters'](_[_0xa343('0x38')](_0x52c474[_0xa343('0x2d')],_0x564e2b[_0xa343('0x2f')]));if(_0x52c474[_0xa343('0x2d')][_0xa343('0x39')]){_0x23244c[_0xa343('0x37')]=_['merge'](_0x23244c[_0xa343('0x37')],{'$or':_['map'](_0x23244c[_0xa343('0x32')],function(_0x2df441){var _0x1e395d={};_0x1e395d[_0x2df441]={'$like':'%'+_0x52c474[_0xa343('0x2d')][_0xa343('0x39')]+'%'};return _0x1e395d;})});}_0x23244c=_[_0xa343('0x3a')]({},_0x23244c,_0x52c474[_0xa343('0x3c')]);return _0x4b4601[_0xa343('0x48')](_0x23244c);}})[_0xa343('0x23')](function(_0x342a44){if(_0x342a44){_0x3691ec=_0x342a44[_0xa343('0x33')];if(!_0x52c474['query']['hasOwnProperty'](_0xa343('0x4a'))){_0x23244c[_0xa343('0x1c')]=qs[_0xa343('0x1c')](_0x52c474['query'][_0xa343('0x1c')]);_0x23244c[_0xa343('0x1a')]=qs[_0xa343('0x1a')](_0x52c474[_0xa343('0x2d')][_0xa343('0x1a')]);}return _0x4b4601[_0xa343('0x48')](_0x23244c);}})['then'](function(_0x12ed42){if(_0x12ed42){return _0x12ed42?{'count':_0x3691ec,'rows':_0x12ed42}:null;}})[_0xa343('0x23')](respondWithResult(_0x3ccc36,null))['catch'](handleError(_0x3ccc36,null));};exports[_0xa343('0x4b')]=function(_0xe5a99f,_0x21c68d,_0x2776a6){var _0x3222f2={};var _0x2cb399={};var _0x2b8f01;var _0x592e19;return db[_0xa343('0x29')]['findOne']({'where':{'id':_0xe5a99f[_0xa343('0x43')]['id']}})[_0xa343('0x23')](handleEntityNotFound(_0x21c68d,null))[_0xa343('0x23')](function(_0x1d3ce2){if(_0x1d3ce2){_0x2b8f01=_0x1d3ce2;_0x2cb399[_0xa343('0x31')]=_[_0xa343('0x2e')](db[_0xa343('0x4c')]['rawAttributes']);_0x2cb399[_0xa343('0x2d')]=_[_0xa343('0x2e')](_0xe5a99f[_0xa343('0x2d')]);_0x2cb399['filters']=_[_0xa343('0x30')](_0x2cb399[_0xa343('0x31')],_0x2cb399[_0xa343('0x2d')]);_0x3222f2[_0xa343('0x32')]=_[_0xa343('0x30')](_0x2cb399['model'],qs[_0xa343('0x44')](_0xe5a99f[_0xa343('0x2d')][_0xa343('0x44')]));_0x3222f2[_0xa343('0x32')]=_0x3222f2[_0xa343('0x32')][_0xa343('0x33')]?_0x3222f2[_0xa343('0x32')]:_0x2cb399[_0xa343('0x31')];_0x3222f2['order']=qs[_0xa343('0x36')](_0xe5a99f[_0xa343('0x2d')][_0xa343('0x36')]);_0x3222f2[_0xa343('0x37')]=qs['filters'](_[_0xa343('0x38')](_0xe5a99f[_0xa343('0x2d')],_0x2cb399['filters']));if(_0xe5a99f[_0xa343('0x2d')]['filter']){_0x3222f2[_0xa343('0x37')]=_['merge'](_0x3222f2['where'],{'$or':_[_0xa343('0x28')](_0x3222f2[_0xa343('0x32')],function(_0xa20e80){var _0x568c5e={};_0x568c5e[_0xa20e80]={'$like':'%'+_0xe5a99f[_0xa343('0x2d')]['filter']+'%'};return _0x568c5e;})});}_0x3222f2=_[_0xa343('0x3a')]({},_0x3222f2,_0xe5a99f['options']);return _0x2b8f01[_0xa343('0x4b')](_0x3222f2);}})[_0xa343('0x23')](function(_0x466c8a){if(_0x466c8a){_0x592e19=_0x466c8a[_0xa343('0x33')];if(!_0xe5a99f[_0xa343('0x2d')][_0xa343('0x34')]('nolimit')){_0x3222f2[_0xa343('0x1c')]=qs[_0xa343('0x1c')](_0xe5a99f['query'][_0xa343('0x1c')]);_0x3222f2[_0xa343('0x1a')]=qs[_0xa343('0x1a')](_0xe5a99f[_0xa343('0x2d')][_0xa343('0x1a')]);}return _0x2b8f01[_0xa343('0x4b')](_0x3222f2);}})['then'](function(_0x162f9d){if(_0x162f9d){return _0x162f9d?{'count':_0x592e19,'rows':_0x162f9d}:null;}})['then'](respondWithResult(_0x21c68d,null))[_0xa343('0x41')](handleError(_0x21c68d,null));};exports[_0xa343('0x4d')]=function(_0x391a06,_0x5d117d,_0x27ece7){var _0x4d2b4b={};var _0x53d17a={};var _0x5972b9;var _0x221ab8;return db[_0xa343('0x29')][_0xa343('0x49')]({'where':{'id':_0x391a06['params']['id']}})[_0xa343('0x23')](handleEntityNotFound(_0x5d117d,null))['then'](function(_0x5b9e11){if(_0x5b9e11){_0x5972b9=_0x5b9e11;_0x53d17a[_0xa343('0x31')]=_['keys'](db['ZohoField'][_0xa343('0x2a')]);_0x53d17a[_0xa343('0x2d')]=_['keys'](_0x391a06[_0xa343('0x2d')]);_0x53d17a['filters']=_['intersection'](_0x53d17a['model'],_0x53d17a[_0xa343('0x2d')]);_0x4d2b4b[_0xa343('0x32')]=_[_0xa343('0x30')](_0x53d17a[_0xa343('0x31')],qs['fields'](_0x391a06[_0xa343('0x2d')][_0xa343('0x44')]));_0x4d2b4b[_0xa343('0x32')]=_0x4d2b4b[_0xa343('0x32')][_0xa343('0x33')]?_0x4d2b4b[_0xa343('0x32')]:_0x53d17a[_0xa343('0x31')];_0x4d2b4b[_0xa343('0x35')]=qs[_0xa343('0x36')](_0x391a06[_0xa343('0x2d')][_0xa343('0x36')]);_0x4d2b4b[_0xa343('0x37')]=qs[_0xa343('0x2f')](_[_0xa343('0x38')](_0x391a06['query'],_0x53d17a['filters']));if(_0x391a06[_0xa343('0x2d')][_0xa343('0x39')]){_0x4d2b4b['where']=_[_0xa343('0x3a')](_0x4d2b4b[_0xa343('0x37')],{'$or':_[_0xa343('0x28')](_0x4d2b4b['attributes'],function(_0x5b0377){var _0x39ed30={};_0x39ed30[_0x5b0377]={'$like':'%'+_0x391a06[_0xa343('0x2d')]['filter']+'%'};return _0x39ed30;})});}_0x4d2b4b=_['merge']({},_0x4d2b4b,_0x391a06[_0xa343('0x3c')]);return _0x5972b9[_0xa343('0x4d')](_0x4d2b4b);}})[_0xa343('0x23')](function(_0x44ebb7){if(_0x44ebb7){_0x221ab8=_0x44ebb7[_0xa343('0x33')];if(!_0x391a06[_0xa343('0x2d')][_0xa343('0x34')](_0xa343('0x4a'))){_0x4d2b4b[_0xa343('0x1c')]=qs['limit'](_0x391a06[_0xa343('0x2d')][_0xa343('0x1c')]);_0x4d2b4b[_0xa343('0x1a')]=qs['offset'](_0x391a06[_0xa343('0x2d')][_0xa343('0x1a')]);}return _0x5972b9['getDescriptions'](_0x4d2b4b);}})[_0xa343('0x23')](function(_0x3497f8){if(_0x3497f8){return _0x3497f8?{'count':_0x221ab8,'rows':_0x3497f8}:null;}})[_0xa343('0x23')](respondWithResult(_0x5d117d,null))[_0xa343('0x41')](handleError(_0x5d117d,null));};
\ No newline at end of file
+var _0xd93c=['reject','save','update','destroy','then','end','error','name','ZohoConfiguration','rawAttributes','fieldName','type','map','keys','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','where','merge','filter','options','includeAll','include','findAll','rows','show','params','catch','create','body','find','getFields','ZohoField','sort','pick','getSubjects','findOne','order','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','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/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','apply'];(function(_0x53ccb0,_0x26725){var _0x172563=function(_0x14963a){while(--_0x14963a){_0x53ccb0['push'](_0x53ccb0['shift']());}};_0x172563(++_0x26725);}(_0xd93c,0x1bd));var _0xcd93=function(_0x1fedcf,_0xfb1f43){_0x1fedcf=_0x1fedcf-0x0;var _0x388ae0=_0xd93c[_0x1fedcf];return _0x388ae0;};'use strict';var emlformat=require(_0xcd93('0x0'));var rimraf=require(_0xcd93('0x1'));var zipdir=require(_0xcd93('0x2'));var jsonpatch=require(_0xcd93('0x3'));var rp=require(_0xcd93('0x4'));var moment=require(_0xcd93('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0xcd93('0x6'));var sox=require(_0xcd93('0x7'));var csv=require(_0xcd93('0x8'));var ejs=require(_0xcd93('0x9'));var fs=require('fs');var fs_extra=require(_0xcd93('0xa'));var _=require(_0xcd93('0xb'));var squel=require(_0xcd93('0xc'));var crypto=require(_0xcd93('0xd'));var jsforce=require(_0xcd93('0xe'));var deskjs=require(_0xcd93('0xf'));var toCsv=require('to-csv');var querystring=require(_0xcd93('0x10'));var Papa=require(_0xcd93('0x11'));var Redis=require(_0xcd93('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xcd93('0x13'));var as=require(_0xcd93('0x14'));var hardwareService=require(_0xcd93('0x15'));var logger=require('../../config/logger')('api');var utils=require(_0xcd93('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xcd93('0x17'));var db=require(_0xcd93('0x18'))['db'];function respondWithStatusCode(_0x1ad91b,_0x226e0f){_0x226e0f=_0x226e0f||0xcc;return function(_0x44023f){if(_0x44023f){return _0x1ad91b[_0xcd93('0x19')](_0x226e0f);}return _0x1ad91b[_0xcd93('0x1a')](_0x226e0f)['end']();};}function respondWithResult(_0x107247,_0x210645){_0x210645=_0x210645||0xc8;return function(_0x42e881){if(_0x42e881){return _0x107247['status'](_0x210645)[_0xcd93('0x1b')](_0x42e881);}};}function respondWithFilteredResult(_0x11c369,_0x30dfb1){return function(_0x5d289c){if(_0x5d289c){var _0x2df247=typeof _0x30dfb1[_0xcd93('0x1c')]==='undefined'&&typeof _0x30dfb1['limit']===_0xcd93('0x1d');var _0x27b1af=_0x5d289c[_0xcd93('0x1e')];var _0x5f4088=_0x2df247?0x0:_0x30dfb1['offset'];var _0x5a7256=_0x2df247?_0x5d289c['count']:_0x30dfb1[_0xcd93('0x1c')]+_0x30dfb1[_0xcd93('0x1f')];var _0x472331;if(_0x5a7256>=_0x27b1af){_0x5a7256=_0x27b1af;_0x472331=0xc8;}else{_0x472331=0xce;}_0x11c369['status'](_0x472331);return _0x11c369[_0xcd93('0x20')](_0xcd93('0x21'),_0x5f4088+'-'+_0x5a7256+'/'+_0x27b1af)[_0xcd93('0x1b')](_0x5d289c);}return null;};}function patchUpdates(_0x5a3a46){return function(_0x114e57){try{jsonpatch[_0xcd93('0x22')](_0x114e57,_0x5a3a46,!![]);}catch(_0x58a77b){return BPromise[_0xcd93('0x23')](_0x58a77b);}return _0x114e57[_0xcd93('0x24')]();};}function saveUpdates(_0x4cfdb8,_0x44cb2a){return function(_0x3095e0){if(_0x3095e0){return _0x3095e0[_0xcd93('0x25')](_0x4cfdb8)['then'](function(_0x3beed5){return _0x3beed5;});}return null;};}function removeEntity(_0x42427f,_0x162713){return function(_0x4340af){if(_0x4340af){return _0x4340af[_0xcd93('0x26')]()[_0xcd93('0x27')](function(){_0x42427f[_0xcd93('0x1a')](0xcc)[_0xcd93('0x28')]();});}};}function handleEntityNotFound(_0x53585d,_0x29d48f){return function(_0x41c357){if(!_0x41c357){_0x53585d[_0xcd93('0x19')](0x194);}return _0x41c357;};}function handleError(_0x1f11ff,_0x1f7d0c){_0x1f7d0c=_0x1f7d0c||0x1f4;return function(_0x862d5c){logger[_0xcd93('0x29')](_0x862d5c['stack']);if(_0x862d5c[_0xcd93('0x2a')]){delete _0x862d5c[_0xcd93('0x2a')];}_0x1f11ff[_0xcd93('0x1a')](_0x1f7d0c)['send'](_0x862d5c);};}exports['index']=function(_0x3de63b,_0x1c1304){var _0x473dd1={},_0x351961={},_0xae1b42={'count':0x0,'rows':[]};var _0x4a6136=_['map'](db[_0xcd93('0x2b')][_0xcd93('0x2c')],function(_0x4edd40){return{'name':_0x4edd40[_0xcd93('0x2d')],'type':_0x4edd40[_0xcd93('0x2e')]['key']};});_0x351961['model']=_[_0xcd93('0x2f')](_0x4a6136,_0xcd93('0x2a'));_0x351961['query']=_[_0xcd93('0x30')](_0x3de63b[_0xcd93('0x31')]);_0x351961[_0xcd93('0x32')]=_[_0xcd93('0x33')](_0x351961[_0xcd93('0x34')],_0x351961[_0xcd93('0x31')]);_0x473dd1[_0xcd93('0x35')]=_[_0xcd93('0x33')](_0x351961[_0xcd93('0x34')],qs['fields'](_0x3de63b[_0xcd93('0x31')][_0xcd93('0x36')]));_0x473dd1[_0xcd93('0x35')]=_0x473dd1['attributes'][_0xcd93('0x37')]?_0x473dd1[_0xcd93('0x35')]:_0x351961['model'];if(!_0x3de63b['query'][_0xcd93('0x38')](_0xcd93('0x39'))){_0x473dd1[_0xcd93('0x1f')]=qs[_0xcd93('0x1f')](_0x3de63b[_0xcd93('0x31')][_0xcd93('0x1f')]);_0x473dd1['offset']=qs[_0xcd93('0x1c')](_0x3de63b['query'][_0xcd93('0x1c')]);}_0x473dd1['order']=qs['sort'](_0x3de63b[_0xcd93('0x31')]['sort']);_0x473dd1[_0xcd93('0x3a')]=qs[_0xcd93('0x32')](_['pick'](_0x3de63b[_0xcd93('0x31')],_0x351961[_0xcd93('0x32')]),_0x4a6136);if(_0x3de63b['query']['filter']){_0x473dd1[_0xcd93('0x3a')]=_[_0xcd93('0x3b')](_0x473dd1['where'],{'$or':_[_0xcd93('0x2f')](_0x4a6136,function(_0x3469ac){if(_0x3469ac[_0xcd93('0x2e')]!=='VIRTUAL'){var _0x4cfa85={};_0x4cfa85[_0x3469ac[_0xcd93('0x2a')]]={'$like':'%'+_0x3de63b[_0xcd93('0x31')][_0xcd93('0x3c')]+'%'};return _0x4cfa85;}})});}_0x473dd1=_[_0xcd93('0x3b')]({},_0x473dd1,_0x3de63b[_0xcd93('0x3d')]);var _0x4b29ac={'where':_0x473dd1[_0xcd93('0x3a')]};return db['ZohoConfiguration']['count'](_0x4b29ac)[_0xcd93('0x27')](function(_0x313284){_0xae1b42[_0xcd93('0x1e')]=_0x313284;if(_0x3de63b[_0xcd93('0x31')][_0xcd93('0x3e')]){_0x473dd1[_0xcd93('0x3f')]=[{'all':!![]}];}return db[_0xcd93('0x2b')][_0xcd93('0x40')](_0x473dd1);})[_0xcd93('0x27')](function(_0x57329a){_0xae1b42[_0xcd93('0x41')]=_0x57329a;return _0xae1b42;})[_0xcd93('0x27')](respondWithFilteredResult(_0x1c1304,_0x473dd1))['catch'](handleError(_0x1c1304,null));};exports[_0xcd93('0x42')]=function(_0x20a943,_0x2c20a6){var _0x12a7d8={'raw':![],'where':{'id':_0x20a943[_0xcd93('0x43')]['id']}},_0x735b6a={};_0x735b6a[_0xcd93('0x34')]=_[_0xcd93('0x30')](db['ZohoConfiguration'][_0xcd93('0x2c')]);_0x735b6a[_0xcd93('0x31')]=_[_0xcd93('0x30')](_0x20a943['query']);_0x735b6a['filters']=_[_0xcd93('0x33')](_0x735b6a[_0xcd93('0x34')],_0x735b6a[_0xcd93('0x31')]);_0x12a7d8['attributes']=_[_0xcd93('0x33')](_0x735b6a['model'],qs['fields'](_0x20a943[_0xcd93('0x31')][_0xcd93('0x36')]));_0x12a7d8['attributes']=_0x12a7d8[_0xcd93('0x35')][_0xcd93('0x37')]?_0x12a7d8[_0xcd93('0x35')]:_0x735b6a[_0xcd93('0x34')];if(_0x20a943[_0xcd93('0x31')][_0xcd93('0x3e')]){_0x12a7d8[_0xcd93('0x3f')]=[{'all':!![]}];}_0x12a7d8=_[_0xcd93('0x3b')]({},_0x12a7d8,_0x20a943['options']);return db[_0xcd93('0x2b')]['find'](_0x12a7d8)[_0xcd93('0x27')](handleEntityNotFound(_0x2c20a6,null))[_0xcd93('0x27')](respondWithResult(_0x2c20a6,null))[_0xcd93('0x44')](handleError(_0x2c20a6,null));};exports[_0xcd93('0x45')]=function(_0x191f9e,_0x9e27e0){return db[_0xcd93('0x2b')][_0xcd93('0x45')](_0x191f9e[_0xcd93('0x46')],{})['then'](respondWithResult(_0x9e27e0,0xc9))[_0xcd93('0x44')](handleError(_0x9e27e0,null));};exports[_0xcd93('0x25')]=function(_0x545c34,_0x2c6bde){if(_0x545c34['body']['id']){delete _0x545c34['body']['id'];}return db[_0xcd93('0x2b')][_0xcd93('0x47')]({'where':{'id':_0x545c34[_0xcd93('0x43')]['id']}})[_0xcd93('0x27')](handleEntityNotFound(_0x2c6bde,null))[_0xcd93('0x27')](saveUpdates(_0x545c34[_0xcd93('0x46')],null))[_0xcd93('0x27')](respondWithResult(_0x2c6bde,null))['catch'](handleError(_0x2c6bde,null));};exports['destroy']=function(_0x4345f3,_0x94bfba){return db[_0xcd93('0x2b')]['find']({'where':{'id':_0x4345f3[_0xcd93('0x43')]['id']}})[_0xcd93('0x27')](handleEntityNotFound(_0x94bfba,null))[_0xcd93('0x27')](removeEntity(_0x94bfba,null))[_0xcd93('0x44')](handleError(_0x94bfba,null));};exports[_0xcd93('0x48')]=function(_0x8e8735,_0x56e8c1,_0xc04f79){var _0x1e26eb={};var _0x401d86={};var _0x157706;var _0x22e405;return db[_0xcd93('0x2b')]['findOne']({'where':{'id':_0x8e8735[_0xcd93('0x43')]['id']}})['then'](handleEntityNotFound(_0x56e8c1,null))[_0xcd93('0x27')](function(_0x365357){if(_0x365357){_0x157706=_0x365357;_0x401d86[_0xcd93('0x34')]=_['keys'](db[_0xcd93('0x49')][_0xcd93('0x2c')]);_0x401d86[_0xcd93('0x31')]=_[_0xcd93('0x30')](_0x8e8735[_0xcd93('0x31')]);_0x401d86[_0xcd93('0x32')]=_['intersection'](_0x401d86[_0xcd93('0x34')],_0x401d86[_0xcd93('0x31')]);_0x1e26eb['attributes']=_['intersection'](_0x401d86['model'],qs[_0xcd93('0x36')](_0x8e8735[_0xcd93('0x31')]['fields']));_0x1e26eb[_0xcd93('0x35')]=_0x1e26eb[_0xcd93('0x35')][_0xcd93('0x37')]?_0x1e26eb[_0xcd93('0x35')]:_0x401d86[_0xcd93('0x34')];_0x1e26eb['order']=qs[_0xcd93('0x4a')](_0x8e8735[_0xcd93('0x31')][_0xcd93('0x4a')]);_0x1e26eb['where']=qs['filters'](_[_0xcd93('0x4b')](_0x8e8735[_0xcd93('0x31')],_0x401d86[_0xcd93('0x32')]));if(_0x8e8735[_0xcd93('0x31')][_0xcd93('0x3c')]){_0x1e26eb[_0xcd93('0x3a')]=_[_0xcd93('0x3b')](_0x1e26eb['where'],{'$or':_[_0xcd93('0x2f')](_0x1e26eb['attributes'],function(_0x271753){var _0x205d0c={};_0x205d0c[_0x271753]={'$like':'%'+_0x8e8735[_0xcd93('0x31')][_0xcd93('0x3c')]+'%'};return _0x205d0c;})});}_0x1e26eb=_[_0xcd93('0x3b')]({},_0x1e26eb,_0x8e8735[_0xcd93('0x3d')]);return _0x157706[_0xcd93('0x48')](_0x1e26eb);}})[_0xcd93('0x27')](function(_0x3a3298){if(_0x3a3298){_0x22e405=_0x3a3298[_0xcd93('0x37')];if(!_0x8e8735['query'][_0xcd93('0x38')]('nolimit')){_0x1e26eb['limit']=qs[_0xcd93('0x1f')](_0x8e8735[_0xcd93('0x31')][_0xcd93('0x1f')]);_0x1e26eb[_0xcd93('0x1c')]=qs[_0xcd93('0x1c')](_0x8e8735[_0xcd93('0x31')]['offset']);}return _0x157706[_0xcd93('0x48')](_0x1e26eb);}})['then'](function(_0x4fa4e9){if(_0x4fa4e9){return _0x4fa4e9?{'count':_0x22e405,'rows':_0x4fa4e9}:null;}})[_0xcd93('0x27')](respondWithResult(_0x56e8c1,null))[_0xcd93('0x44')](handleError(_0x56e8c1,null));};exports[_0xcd93('0x4c')]=function(_0x3fb1d1,_0x2ed4aa,_0x58fe2f){var _0x2488c3={};var _0xbd650b={};var _0x5b2f45;var _0x8620d8;return db[_0xcd93('0x2b')][_0xcd93('0x4d')]({'where':{'id':_0x3fb1d1['params']['id']}})[_0xcd93('0x27')](handleEntityNotFound(_0x2ed4aa,null))[_0xcd93('0x27')](function(_0x1bc1a4){if(_0x1bc1a4){_0x5b2f45=_0x1bc1a4;_0xbd650b['model']=_[_0xcd93('0x30')](db[_0xcd93('0x49')][_0xcd93('0x2c')]);_0xbd650b[_0xcd93('0x31')]=_[_0xcd93('0x30')](_0x3fb1d1['query']);_0xbd650b[_0xcd93('0x32')]=_[_0xcd93('0x33')](_0xbd650b['model'],_0xbd650b[_0xcd93('0x31')]);_0x2488c3['attributes']=_['intersection'](_0xbd650b['model'],qs['fields'](_0x3fb1d1[_0xcd93('0x31')][_0xcd93('0x36')]));_0x2488c3[_0xcd93('0x35')]=_0x2488c3[_0xcd93('0x35')]['length']?_0x2488c3[_0xcd93('0x35')]:_0xbd650b['model'];_0x2488c3[_0xcd93('0x4e')]=qs[_0xcd93('0x4a')](_0x3fb1d1[_0xcd93('0x31')][_0xcd93('0x4a')]);_0x2488c3[_0xcd93('0x3a')]=qs[_0xcd93('0x32')](_[_0xcd93('0x4b')](_0x3fb1d1[_0xcd93('0x31')],_0xbd650b[_0xcd93('0x32')]));if(_0x3fb1d1[_0xcd93('0x31')]['filter']){_0x2488c3[_0xcd93('0x3a')]=_['merge'](_0x2488c3[_0xcd93('0x3a')],{'$or':_[_0xcd93('0x2f')](_0x2488c3[_0xcd93('0x35')],function(_0x315b71){var _0x3f7428={};_0x3f7428[_0x315b71]={'$like':'%'+_0x3fb1d1[_0xcd93('0x31')][_0xcd93('0x3c')]+'%'};return _0x3f7428;})});}_0x2488c3=_[_0xcd93('0x3b')]({},_0x2488c3,_0x3fb1d1[_0xcd93('0x3d')]);return _0x5b2f45[_0xcd93('0x4c')](_0x2488c3);}})['then'](function(_0x17b2f1){if(_0x17b2f1){_0x8620d8=_0x17b2f1[_0xcd93('0x37')];if(!_0x3fb1d1[_0xcd93('0x31')][_0xcd93('0x38')]('nolimit')){_0x2488c3[_0xcd93('0x1f')]=qs[_0xcd93('0x1f')](_0x3fb1d1['query'][_0xcd93('0x1f')]);_0x2488c3['offset']=qs[_0xcd93('0x1c')](_0x3fb1d1[_0xcd93('0x31')][_0xcd93('0x1c')]);}return _0x5b2f45[_0xcd93('0x4c')](_0x2488c3);}})[_0xcd93('0x27')](function(_0x3ae500){if(_0x3ae500){return _0x3ae500?{'count':_0x8620d8,'rows':_0x3ae500}:null;}})[_0xcd93('0x27')](respondWithResult(_0x2ed4aa,null))[_0xcd93('0x44')](handleError(_0x2ed4aa,null));};exports[_0xcd93('0x4f')]=function(_0x53c793,_0x2700ed,_0x5997ee){var _0x15a606={};var _0x400d7c={};var _0x1180fe;var _0x4bae46;return db[_0xcd93('0x2b')][_0xcd93('0x4d')]({'where':{'id':_0x53c793[_0xcd93('0x43')]['id']}})[_0xcd93('0x27')](handleEntityNotFound(_0x2700ed,null))[_0xcd93('0x27')](function(_0x350d7b){if(_0x350d7b){_0x1180fe=_0x350d7b;_0x400d7c[_0xcd93('0x34')]=_['keys'](db[_0xcd93('0x49')][_0xcd93('0x2c')]);_0x400d7c['query']=_['keys'](_0x53c793['query']);_0x400d7c['filters']=_[_0xcd93('0x33')](_0x400d7c[_0xcd93('0x34')],_0x400d7c['query']);_0x15a606['attributes']=_[_0xcd93('0x33')](_0x400d7c[_0xcd93('0x34')],qs[_0xcd93('0x36')](_0x53c793[_0xcd93('0x31')][_0xcd93('0x36')]));_0x15a606['attributes']=_0x15a606[_0xcd93('0x35')][_0xcd93('0x37')]?_0x15a606[_0xcd93('0x35')]:_0x400d7c[_0xcd93('0x34')];_0x15a606[_0xcd93('0x4e')]=qs[_0xcd93('0x4a')](_0x53c793['query'][_0xcd93('0x4a')]);_0x15a606[_0xcd93('0x3a')]=qs[_0xcd93('0x32')](_[_0xcd93('0x4b')](_0x53c793[_0xcd93('0x31')],_0x400d7c['filters']));if(_0x53c793[_0xcd93('0x31')]['filter']){_0x15a606['where']=_[_0xcd93('0x3b')](_0x15a606['where'],{'$or':_['map'](_0x15a606[_0xcd93('0x35')],function(_0x2aeac5){var _0x238592={};_0x238592[_0x2aeac5]={'$like':'%'+_0x53c793[_0xcd93('0x31')]['filter']+'%'};return _0x238592;})});}_0x15a606=_[_0xcd93('0x3b')]({},_0x15a606,_0x53c793[_0xcd93('0x3d')]);return _0x1180fe['getDescriptions'](_0x15a606);}})[_0xcd93('0x27')](function(_0x43c75b){if(_0x43c75b){_0x4bae46=_0x43c75b[_0xcd93('0x37')];if(!_0x53c793[_0xcd93('0x31')][_0xcd93('0x38')](_0xcd93('0x39'))){_0x15a606['limit']=qs['limit'](_0x53c793['query'][_0xcd93('0x1f')]);_0x15a606[_0xcd93('0x1c')]=qs[_0xcd93('0x1c')](_0x53c793[_0xcd93('0x31')]['offset']);}return _0x1180fe['getDescriptions'](_0x15a606);}})['then'](function(_0x1b2bb3){if(_0x1b2bb3){return _0x1b2bb3?{'count':_0x4bae46,'rows':_0x1b2bb3}:null;}})['then'](respondWithResult(_0x2700ed,null))['catch'](handleError(_0x2700ed,null));};
\ No newline at end of file
index c9eae33..f2779f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6dd6=['../../config/environment','exports','ZohoConfiguration','int_zoho_configurations','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf'];(function(_0x19a631,_0x4861c8){var _0x443a16=function(_0x585ff6){while(--_0x585ff6){_0x19a631['push'](_0x19a631['shift']());}};_0x443a16(++_0x4861c8);}(_0x6dd6,0x13c));var _0x66dd=function(_0x188bfe,_0x2517cc){_0x188bfe=_0x188bfe-0x0;var _0x1a9efa=_0x6dd6[_0x188bfe];return _0x1a9efa;};'use strict';var _=require(_0x66dd('0x0'));var util=require(_0x66dd('0x1'));var logger=require(_0x66dd('0x2'))(_0x66dd('0x3'));var moment=require(_0x66dd('0x4'));var BPromise=require('bluebird');var rp=require(_0x66dd('0x5'));var fs=require('fs');var path=require(_0x66dd('0x6'));var rimraf=require(_0x66dd('0x7'));var config=require(_0x66dd('0x8'));var attributes=require('./intZohoConfiguration.attributes');module[_0x66dd('0x9')]=function(_0x4673c9,_0x5c6578){return _0x4673c9['define'](_0x66dd('0xa'),attributes,{'tableName':_0x66dd('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x65aa=['util','../../config/logger','moment','bluebird','request-promise','path','rimraf','./intZohoConfiguration.attributes','exports','define','int_zoho_configurations'];(function(_0x340907,_0x4a9781){var _0x1cd555=function(_0x29b4b5){while(--_0x29b4b5){_0x340907['push'](_0x340907['shift']());}};_0x1cd555(++_0x4a9781);}(_0x65aa,0xbb));var _0xa65a=function(_0x5cf236,_0x5dcc97){_0x5cf236=_0x5cf236-0x0;var _0x3ef894=_0x65aa[_0x5cf236];return _0x3ef894;};'use strict';var _=require('lodash');var util=require(_0xa65a('0x0'));var logger=require(_0xa65a('0x1'))('api');var moment=require(_0xa65a('0x2'));var BPromise=require(_0xa65a('0x3'));var rp=require(_0xa65a('0x4'));var fs=require('fs');var path=require(_0xa65a('0x5'));var rimraf=require(_0xa65a('0x6'));var config=require('../../config/environment');var attributes=require(_0xa65a('0x7'));module[_0xa65a('0x8')]=function(_0x368437,_0x14fe45){return _0x368437[_0xa65a('0x9')]('ZohoConfiguration',attributes,{'tableName':_0xa65a('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e89ed4f..4414860 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa50a=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','request\x20sent','debug','ZohoConfiguration,\x20%s,\x20%s,\x20%s','error','code','ZohoConfiguration,\x20%s,\x20%s','message','info','result','util','moment','bluebird','ioredis'];(function(_0x3810fb,_0x109b23){var _0x458d27=function(_0x109e56){while(--_0x109e56){_0x3810fb['push'](_0x3810fb['shift']());}};_0x458d27(++_0x109b23);}(_0xa50a,0xd8));var _0xaa50=function(_0x546af3,_0x904a3f){_0x546af3=_0x546af3-0x0;var _0x1c156a=_0xa50a[_0x546af3];return _0x1c156a;};'use strict';var _=require('lodash');var util=require(_0xaa50('0x0'));var moment=require(_0xaa50('0x1'));var BPromise=require(_0xaa50('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xaa50('0x3'));var db=require(_0xaa50('0x4'))['db'];var utils=require(_0xaa50('0x5'));var logger=require(_0xaa50('0x6'))(_0xaa50('0x7'));var config=require(_0xaa50('0x8'));var jayson=require(_0xaa50('0x9'));var client=jayson['client'][_0xaa50('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xda6ac1,_0x15152e,_0x3640ad){return new BPromise(function(_0x5ac8af,_0x5c5399){return client[_0xaa50('0xb')](_0xda6ac1,_0x3640ad)[_0xaa50('0xc')](function(_0x408a20){logger['info']('ZohoConfiguration,\x20%s,\x20%s',_0x15152e,_0xaa50('0xd'));logger[_0xaa50('0xe')](_0xaa50('0xf'),_0x15152e,_0xaa50('0xd'),JSON['stringify'](_0x408a20));if(_0x408a20['error']){if(_0x408a20[_0xaa50('0x10')][_0xaa50('0x11')]===0x1f4){logger[_0xaa50('0x10')](_0xaa50('0x12'),_0x15152e,_0x408a20[_0xaa50('0x10')][_0xaa50('0x13')]);return _0x5c5399(_0x408a20[_0xaa50('0x10')][_0xaa50('0x13')]);}logger['error'](_0xaa50('0x12'),_0x15152e,_0x408a20[_0xaa50('0x10')][_0xaa50('0x13')]);return _0x5ac8af(_0x408a20[_0xaa50('0x10')][_0xaa50('0x13')]);}else{logger[_0xaa50('0x14')](_0xaa50('0x12'),_0x15152e,'request\x20sent');_0x5ac8af(_0x408a20[_0xaa50('0x15')][_0xaa50('0x13')]);}})['catch'](function(_0x19968e){logger[_0xaa50('0x10')](_0xaa50('0x12'),_0x15152e,_0x19968e);_0x5c5399(_0x19968e);});});}
\ No newline at end of file
+var _0xcdb0=['message','info','result','catch','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','ZohoConfiguration,\x20%s,\x20%s','debug','ZohoConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','code','error'];(function(_0x47f88e,_0x3c7056){var _0xcb8ff8=function(_0x287856){while(--_0x287856){_0x47f88e['push'](_0x47f88e['shift']());}};_0xcb8ff8(++_0x3c7056);}(_0xcdb0,0xdc));var _0x0cdb=function(_0x4aa06c,_0x10fbf5){_0x4aa06c=_0x4aa06c-0x0;var _0x41cfdf=_0xcdb0[_0x4aa06c];return _0x41cfdf;};'use strict';var _=require(_0x0cdb('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x0cdb('0x1'));var rs=require(_0x0cdb('0x2'));var fs=require('fs');var Redis=require(_0x0cdb('0x3'));var db=require(_0x0cdb('0x4'))['db'];var utils=require(_0x0cdb('0x5'));var logger=require(_0x0cdb('0x6'))('rpc');var config=require(_0x0cdb('0x7'));var jayson=require(_0x0cdb('0x8'));var client=jayson[_0x0cdb('0x9')][_0x0cdb('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x31e608,_0x359eef,_0x38cee8){return new BPromise(function(_0x5c129f,_0xf0541c){return client[_0x0cdb('0xb')](_0x31e608,_0x38cee8)[_0x0cdb('0xc')](function(_0x1084d6){logger['info'](_0x0cdb('0xd'),_0x359eef,'request\x20sent');logger[_0x0cdb('0xe')](_0x0cdb('0xf'),_0x359eef,_0x0cdb('0x10'),JSON[_0x0cdb('0x11')](_0x1084d6));if(_0x1084d6['error']){if(_0x1084d6['error'][_0x0cdb('0x12')]===0x1f4){logger[_0x0cdb('0x13')](_0x0cdb('0xd'),_0x359eef,_0x1084d6[_0x0cdb('0x13')][_0x0cdb('0x14')]);return _0xf0541c(_0x1084d6[_0x0cdb('0x13')][_0x0cdb('0x14')]);}logger['error']('ZohoConfiguration,\x20%s,\x20%s',_0x359eef,_0x1084d6[_0x0cdb('0x13')][_0x0cdb('0x14')]);return _0x5c129f(_0x1084d6['error'][_0x0cdb('0x14')]);}else{logger[_0x0cdb('0x15')](_0x0cdb('0xd'),_0x359eef,'request\x20sent');_0x5c129f(_0x1084d6[_0x0cdb('0x16')]['message']);}})[_0x0cdb('0x17')](function(_0x3d14c4){logger[_0x0cdb('0x13')](_0x0cdb('0xd'),_0x359eef,_0x3d14c4);_0xf0541c(_0x3d14c4);});});}
\ No newline at end of file
index 26a1e9e..3469be8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x72db=['multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZohoField.controller','get','index','/:id','isAuthenticated','post','create','put','update','delete','destroy','exports'];(function(_0x58ee32,_0x2450cc){var _0x22a1d9=function(_0x253807){while(--_0x253807){_0x58ee32['push'](_0x58ee32['shift']());}};_0x22a1d9(++_0x2450cc);}(_0x72db,0xa8));var _0xb72d=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x72db[_0x14add3];return _0x4a174f;};'use strict';var multer=require(_0xb72d('0x0'));var util=require(_0xb72d('0x1'));var path=require(_0xb72d('0x2'));var timeout=require('connect-timeout');var express=require(_0xb72d('0x3'));var router=express[_0xb72d('0x4')]();var fs_extra=require(_0xb72d('0x5'));var auth=require(_0xb72d('0x6'));var interaction=require(_0xb72d('0x7'));var config=require(_0xb72d('0x8'));var controller=require(_0xb72d('0x9'));router[_0xb72d('0xa')]('/',auth['isAuthenticated'](),controller[_0xb72d('0xb')]);router[_0xb72d('0xa')](_0xb72d('0xc'),auth[_0xb72d('0xd')](),controller['show']);router[_0xb72d('0xe')]('/',auth[_0xb72d('0xd')](),controller[_0xb72d('0xf')]);router[_0xb72d('0x10')](_0xb72d('0xc'),auth['isAuthenticated'](),controller[_0xb72d('0x11')]);router[_0xb72d('0x12')](_0xb72d('0xc'),auth[_0xb72d('0xd')](),controller[_0xb72d('0x13')]);module[_0xb72d('0x14')]=router;
\ No newline at end of file
+var _0x5785=['show','post','put','update','delete','/:id','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./intZohoField.controller','get','isAuthenticated'];(function(_0x37bc02,_0x158c65){var _0x34f974=function(_0x366178){while(--_0x366178){_0x37bc02['push'](_0x37bc02['shift']());}};_0x34f974(++_0x158c65);}(_0x5785,0x1af));var _0x5578=function(_0x1203f,_0x554bbc){_0x1203f=_0x1203f-0x0;var _0x365f0a=_0x5785[_0x1203f];return _0x365f0a;};'use strict';var multer=require(_0x5578('0x0'));var util=require(_0x5578('0x1'));var path=require(_0x5578('0x2'));var timeout=require(_0x5578('0x3'));var express=require(_0x5578('0x4'));var router=express[_0x5578('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x5578('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x5578('0x7'));var controller=require(_0x5578('0x8'));router[_0x5578('0x9')]('/',auth[_0x5578('0xa')](),controller['index']);router['get']('/:id',auth[_0x5578('0xa')](),controller[_0x5578('0xb')]);router[_0x5578('0xc')]('/',auth[_0x5578('0xa')](),controller['create']);router[_0x5578('0xd')]('/:id',auth[_0x5578('0xa')](),controller[_0x5578('0xe')]);router[_0x5578('0xf')](_0x5578('0x10'),auth[_0x5578('0xa')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 1c95589..e149303 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbfbe=['ENUM','string','customVariable','keyValue','picklist','STRING','variable','BOOLEAN','sequelize','exports'];(function(_0x5136f6,_0x2c5ede){var _0x20a13a=function(_0x2acc5c){while(--_0x2acc5c){_0x5136f6['push'](_0x5136f6['shift']());}};_0x20a13a(++_0x2c5ede);}(_0xbfbe,0x148));var _0xebfb=function(_0xbcd604,_0x5c6862){_0xbcd604=_0xbcd604-0x0;var _0x16a71e=_0xbfbe[_0xbcd604];return _0x16a71e;};'use strict';var Sequelize=require(_0xebfb('0x0'));module[_0xebfb('0x1')]={'type':{'type':Sequelize[_0xebfb('0x2')](_0xebfb('0x3'),'variable',_0xebfb('0x4'),_0xebfb('0x5'),_0xebfb('0x6')),'defaultValue':_0xebfb('0x3')},'content':{'type':Sequelize[_0xebfb('0x7')]},'key':{'type':Sequelize[_0xebfb('0x7')]},'keyType':{'type':Sequelize[_0xebfb('0x2')](_0xebfb('0x3'),_0xebfb('0x8'),_0xebfb('0x4'))},'keyContent':{'type':Sequelize[_0xebfb('0x7')]},'idField':{'type':Sequelize[_0xebfb('0x7')]},'nameField':{'type':Sequelize[_0xebfb('0x7')]},'customField':{'type':Sequelize[_0xebfb('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xebfb('0x7')]}};
\ No newline at end of file
+var _0xe18e=['ENUM','string','variable','STRING','customVariable','BOOLEAN','sequelize','exports'];(function(_0x30ab9d,_0x4245fc){var _0x8dea6a=function(_0x49aefb){while(--_0x49aefb){_0x30ab9d['push'](_0x30ab9d['shift']());}};_0x8dea6a(++_0x4245fc);}(_0xe18e,0x1ce));var _0xee18=function(_0xe7351f,_0xf69fa1){_0xe7351f=_0xe7351f-0x0;var _0x482839=_0xe18e[_0xe7351f];return _0x482839;};'use strict';var Sequelize=require(_0xee18('0x0'));module[_0xee18('0x1')]={'type':{'type':Sequelize[_0xee18('0x2')](_0xee18('0x3'),_0xee18('0x4'),'customVariable','keyValue','picklist'),'defaultValue':_0xee18('0x3')},'content':{'type':Sequelize[_0xee18('0x5')]},'key':{'type':Sequelize[_0xee18('0x5')]},'keyType':{'type':Sequelize['ENUM']('string',_0xee18('0x4'),_0xee18('0x6'))},'keyContent':{'type':Sequelize[_0xee18('0x5')]},'idField':{'type':Sequelize[_0xee18('0x5')]},'nameField':{'type':Sequelize[_0xee18('0x5')]},'customField':{'type':Sequelize[_0xee18('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 5932e40..cd3c4db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c71=['filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','findAll','rows','catch','show','params','include','find','create','ZohoField','body','rimraf','fast-json-patch','request-promise','moment','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','sendStatus','error','send','index','map','rawAttributes','type','key','model','name','query','keys'];(function(_0x58153d,_0x3a4932){var _0x2ff1b1=function(_0xc4d0ce){while(--_0xc4d0ce){_0x58153d['push'](_0x58153d['shift']());}};_0x2ff1b1(++_0x3a4932);}(_0x0c71,0xfb));var _0x10c7=function(_0x40dfca,_0x563819){_0x40dfca=_0x40dfca-0x0;var _0x28e6e6=_0x0c71[_0x40dfca];return _0x28e6e6;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x10c7('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x10c7('0x1'));var rp=require(_0x10c7('0x2'));var moment=require(_0x10c7('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x10c7('0x4'));var path=require('path');var sox=require(_0x10c7('0x5'));var csv=require(_0x10c7('0x6'));var ejs=require(_0x10c7('0x7'));var fs=require('fs');var fs_extra=require(_0x10c7('0x8'));var _=require(_0x10c7('0x9'));var squel=require(_0x10c7('0xa'));var crypto=require('crypto');var jsforce=require(_0x10c7('0xb'));var deskjs=require(_0x10c7('0xc'));var toCsv=require('to-csv');var querystring=require(_0x10c7('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x10c7('0xe'));var qs=require(_0x10c7('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x10c7('0x10'));var logger=require(_0x10c7('0x11'))(_0x10c7('0x12'));var utils=require(_0x10c7('0x13'));var config=require(_0x10c7('0x14'));var licenseUtil=require(_0x10c7('0x15'));var db=require(_0x10c7('0x16'))['db'];function respondWithStatusCode(_0x2fcb9f,_0x3e0507){_0x3e0507=_0x3e0507||0xcc;return function(_0x15f838){if(_0x15f838){return _0x2fcb9f['sendStatus'](_0x3e0507);}return _0x2fcb9f[_0x10c7('0x17')](_0x3e0507)[_0x10c7('0x18')]();};}function respondWithResult(_0x3fbf7a,_0x253c65){_0x253c65=_0x253c65||0xc8;return function(_0x45568c){if(_0x45568c){return _0x3fbf7a[_0x10c7('0x17')](_0x253c65)[_0x10c7('0x19')](_0x45568c);}};}function respondWithFilteredResult(_0x4ea8b3,_0x28ed15){return function(_0xe44546){if(_0xe44546){var _0x53aaae=typeof _0x28ed15[_0x10c7('0x1a')]===_0x10c7('0x1b')&&typeof _0x28ed15[_0x10c7('0x1c')]===_0x10c7('0x1b');var _0x2f4966=_0xe44546[_0x10c7('0x1d')];var _0x3168e1=_0x53aaae?0x0:_0x28ed15[_0x10c7('0x1a')];var _0x2ecb76=_0x53aaae?_0xe44546['count']:_0x28ed15['offset']+_0x28ed15[_0x10c7('0x1c')];var _0x28c0bd;if(_0x2ecb76>=_0x2f4966){_0x2ecb76=_0x2f4966;_0x28c0bd=0xc8;}else{_0x28c0bd=0xce;}_0x4ea8b3['status'](_0x28c0bd);return _0x4ea8b3[_0x10c7('0x1e')](_0x10c7('0x1f'),_0x3168e1+'-'+_0x2ecb76+'/'+_0x2f4966)[_0x10c7('0x19')](_0xe44546);}return null;};}function patchUpdates(_0x5373cf){return function(_0x41a5ba){try{jsonpatch['apply'](_0x41a5ba,_0x5373cf,!![]);}catch(_0x3bc5e0){return BPromise[_0x10c7('0x20')](_0x3bc5e0);}return _0x41a5ba[_0x10c7('0x21')]();};}function saveUpdates(_0x5a2b7f,_0x29a2e5){return function(_0xc4dc9e){if(_0xc4dc9e){return _0xc4dc9e[_0x10c7('0x22')](_0x5a2b7f)[_0x10c7('0x23')](function(_0x1450f3){return _0x1450f3;});}return null;};}function removeEntity(_0xcafdc1,_0x9c658f){return function(_0x308e3a){if(_0x308e3a){return _0x308e3a[_0x10c7('0x24')]()[_0x10c7('0x23')](function(){_0xcafdc1[_0x10c7('0x17')](0xcc)[_0x10c7('0x18')]();});}};}function handleEntityNotFound(_0x3bc016,_0xe53724){return function(_0x3c40c3){if(!_0x3c40c3){_0x3bc016[_0x10c7('0x25')](0x194);}return _0x3c40c3;};}function handleError(_0xec403,_0x2cc3d0){_0x2cc3d0=_0x2cc3d0||0x1f4;return function(_0x33093e){logger[_0x10c7('0x26')](_0x33093e['stack']);if(_0x33093e['name']){delete _0x33093e['name'];}_0xec403[_0x10c7('0x17')](_0x2cc3d0)[_0x10c7('0x27')](_0x33093e);};}exports[_0x10c7('0x28')]=function(_0x206e1d,_0x27ac7e){var _0x3284c4={},_0x4844cc={},_0x4630c8={'count':0x0,'rows':[]};var _0x5cf4dd=_[_0x10c7('0x29')](db['ZohoField'][_0x10c7('0x2a')],function(_0x14efa1){return{'name':_0x14efa1['fieldName'],'type':_0x14efa1[_0x10c7('0x2b')][_0x10c7('0x2c')]};});_0x4844cc[_0x10c7('0x2d')]=_['map'](_0x5cf4dd,_0x10c7('0x2e'));_0x4844cc[_0x10c7('0x2f')]=_[_0x10c7('0x30')](_0x206e1d[_0x10c7('0x2f')]);_0x4844cc[_0x10c7('0x31')]=_[_0x10c7('0x32')](_0x4844cc[_0x10c7('0x2d')],_0x4844cc['query']);_0x3284c4['attributes']=_[_0x10c7('0x32')](_0x4844cc[_0x10c7('0x2d')],qs[_0x10c7('0x33')](_0x206e1d[_0x10c7('0x2f')][_0x10c7('0x33')]));_0x3284c4[_0x10c7('0x34')]=_0x3284c4[_0x10c7('0x34')][_0x10c7('0x35')]?_0x3284c4[_0x10c7('0x34')]:_0x4844cc[_0x10c7('0x2d')];if(!_0x206e1d[_0x10c7('0x2f')][_0x10c7('0x36')](_0x10c7('0x37'))){_0x3284c4[_0x10c7('0x1c')]=qs['limit'](_0x206e1d[_0x10c7('0x2f')][_0x10c7('0x1c')]);_0x3284c4[_0x10c7('0x1a')]=qs[_0x10c7('0x1a')](_0x206e1d['query'][_0x10c7('0x1a')]);}_0x3284c4[_0x10c7('0x38')]=qs[_0x10c7('0x39')](_0x206e1d[_0x10c7('0x2f')][_0x10c7('0x39')]);_0x3284c4[_0x10c7('0x3a')]=qs[_0x10c7('0x31')](_[_0x10c7('0x3b')](_0x206e1d[_0x10c7('0x2f')],_0x4844cc[_0x10c7('0x31')]),_0x5cf4dd);if(_0x206e1d['query'][_0x10c7('0x3c')]){_0x3284c4[_0x10c7('0x3a')]=_['merge'](_0x3284c4[_0x10c7('0x3a')],{'$or':_['map'](_0x5cf4dd,function(_0x41e06b){if(_0x41e06b[_0x10c7('0x2b')]!==_0x10c7('0x3d')){var _0x148afa={};_0x148afa[_0x41e06b[_0x10c7('0x2e')]]={'$like':'%'+_0x206e1d[_0x10c7('0x2f')][_0x10c7('0x3c')]+'%'};return _0x148afa;}})});}_0x3284c4=_[_0x10c7('0x3e')]({},_0x3284c4,_0x206e1d[_0x10c7('0x3f')]);var _0x181515={'where':_0x3284c4[_0x10c7('0x3a')]};return db['ZohoField'][_0x10c7('0x1d')](_0x181515)[_0x10c7('0x23')](function(_0x444475){_0x4630c8[_0x10c7('0x1d')]=_0x444475;if(_0x206e1d['query'][_0x10c7('0x40')]){_0x3284c4['include']=[{'all':!![]}];}return db['ZohoField'][_0x10c7('0x41')](_0x3284c4);})['then'](function(_0xe022ce){_0x4630c8[_0x10c7('0x42')]=_0xe022ce;return _0x4630c8;})[_0x10c7('0x23')](respondWithFilteredResult(_0x27ac7e,_0x3284c4))[_0x10c7('0x43')](handleError(_0x27ac7e,null));};exports[_0x10c7('0x44')]=function(_0x1b0175,_0xa79ce3){var _0x2712d4={'raw':!![],'where':{'id':_0x1b0175[_0x10c7('0x45')]['id']}},_0x5b73d2={};_0x5b73d2[_0x10c7('0x2d')]=_[_0x10c7('0x30')](db['ZohoField'][_0x10c7('0x2a')]);_0x5b73d2[_0x10c7('0x2f')]=_['keys'](_0x1b0175[_0x10c7('0x2f')]);_0x5b73d2[_0x10c7('0x31')]=_[_0x10c7('0x32')](_0x5b73d2[_0x10c7('0x2d')],_0x5b73d2[_0x10c7('0x2f')]);_0x2712d4[_0x10c7('0x34')]=_['intersection'](_0x5b73d2[_0x10c7('0x2d')],qs['fields'](_0x1b0175['query']['fields']));_0x2712d4[_0x10c7('0x34')]=_0x2712d4['attributes']['length']?_0x2712d4['attributes']:_0x5b73d2[_0x10c7('0x2d')];if(_0x1b0175[_0x10c7('0x2f')][_0x10c7('0x40')]){_0x2712d4[_0x10c7('0x46')]=[{'all':!![]}];}_0x2712d4=_[_0x10c7('0x3e')]({},_0x2712d4,_0x1b0175[_0x10c7('0x3f')]);return db['ZohoField'][_0x10c7('0x47')](_0x2712d4)[_0x10c7('0x23')](handleEntityNotFound(_0xa79ce3,null))['then'](respondWithResult(_0xa79ce3,null))[_0x10c7('0x43')](handleError(_0xa79ce3,null));};exports[_0x10c7('0x48')]=function(_0x1d9331,_0x5039bb){return db[_0x10c7('0x49')][_0x10c7('0x48')](_0x1d9331[_0x10c7('0x4a')],{})[_0x10c7('0x23')](respondWithResult(_0x5039bb,0xc9))[_0x10c7('0x43')](handleError(_0x5039bb,null));};exports[_0x10c7('0x22')]=function(_0x2c204f,_0xeb2c86){if(_0x2c204f[_0x10c7('0x4a')]['id']){delete _0x2c204f[_0x10c7('0x4a')]['id'];}return db[_0x10c7('0x49')]['find']({'where':{'id':_0x2c204f[_0x10c7('0x45')]['id']}})[_0x10c7('0x23')](handleEntityNotFound(_0xeb2c86,null))['then'](saveUpdates(_0x2c204f[_0x10c7('0x4a')],null))[_0x10c7('0x23')](respondWithResult(_0xeb2c86,null))[_0x10c7('0x43')](handleError(_0xeb2c86,null));};exports[_0x10c7('0x24')]=function(_0x57a4fe,_0x1621f3){return db[_0x10c7('0x49')][_0x10c7('0x47')]({'where':{'id':_0x57a4fe[_0x10c7('0x45')]['id']}})[_0x10c7('0x23')](handleEntityNotFound(_0x1621f3,null))['then'](removeEntity(_0x1621f3,null))['catch'](handleError(_0x1621f3,null));};
\ No newline at end of file
+var _0x5163=['findAll','rows','catch','show','length','includeAll','find','create','body','update','params','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','end','status','offset','undefined','count','limit','set','Content-Range','apply','reject','save','then','sendStatus','stack','name','send','index','map','ZohoField','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','include'];(function(_0xd80897,_0x529151){var _0x38f1f3=function(_0x5c2ceb){while(--_0x5c2ceb){_0xd80897['push'](_0xd80897['shift']());}};_0x38f1f3(++_0x529151);}(_0x5163,0xe6));var _0x3516=function(_0x2ce0d9,_0x4e7e12){_0x2ce0d9=_0x2ce0d9-0x0;var _0x16320a=_0x5163[_0x2ce0d9];return _0x16320a;};'use strict';var emlformat=require(_0x3516('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x3516('0x1'));var jsonpatch=require(_0x3516('0x2'));var rp=require(_0x3516('0x3'));var moment=require(_0x3516('0x4'));var BPromise=require(_0x3516('0x5'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0x3516('0x6'));var csv=require(_0x3516('0x7'));var ejs=require(_0x3516('0x8'));var fs=require('fs');var fs_extra=require(_0x3516('0x9'));var _=require(_0x3516('0xa'));var squel=require(_0x3516('0xb'));var crypto=require(_0x3516('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x3516('0xd'));var toCsv=require('to-csv');var querystring=require(_0x3516('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x3516('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x3516('0x10'));var hardwareService=require(_0x3516('0x11'));var logger=require(_0x3516('0x12'))(_0x3516('0x13'));var utils=require(_0x3516('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x3516('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3e507b,_0x43b88c){_0x43b88c=_0x43b88c||0xcc;return function(_0x134483){if(_0x134483){return _0x3e507b['sendStatus'](_0x43b88c);}return _0x3e507b['status'](_0x43b88c)[_0x3516('0x16')]();};}function respondWithResult(_0x39f9ae,_0x588b90){_0x588b90=_0x588b90||0xc8;return function(_0x3ceee3){if(_0x3ceee3){return _0x39f9ae[_0x3516('0x17')](_0x588b90)['json'](_0x3ceee3);}};}function respondWithFilteredResult(_0x2a45da,_0x1de780){return function(_0x574367){if(_0x574367){var _0x2dd6d6=typeof _0x1de780[_0x3516('0x18')]==='undefined'&&typeof _0x1de780['limit']===_0x3516('0x19');var _0x2bb4ad=_0x574367[_0x3516('0x1a')];var _0x3b353c=_0x2dd6d6?0x0:_0x1de780[_0x3516('0x18')];var _0x570e98=_0x2dd6d6?_0x574367[_0x3516('0x1a')]:_0x1de780[_0x3516('0x18')]+_0x1de780[_0x3516('0x1b')];var _0x43e1ad;if(_0x570e98>=_0x2bb4ad){_0x570e98=_0x2bb4ad;_0x43e1ad=0xc8;}else{_0x43e1ad=0xce;}_0x2a45da[_0x3516('0x17')](_0x43e1ad);return _0x2a45da[_0x3516('0x1c')](_0x3516('0x1d'),_0x3b353c+'-'+_0x570e98+'/'+_0x2bb4ad)['json'](_0x574367);}return null;};}function patchUpdates(_0xee9b32){return function(_0x446f8f){try{jsonpatch[_0x3516('0x1e')](_0x446f8f,_0xee9b32,!![]);}catch(_0x38147b){return BPromise[_0x3516('0x1f')](_0x38147b);}return _0x446f8f[_0x3516('0x20')]();};}function saveUpdates(_0xa02612,_0x400d98){return function(_0x4b9a04){if(_0x4b9a04){return _0x4b9a04['update'](_0xa02612)['then'](function(_0x3f6f96){return _0x3f6f96;});}return null;};}function removeEntity(_0x4f6978,_0x387c61){return function(_0x368aef){if(_0x368aef){return _0x368aef['destroy']()[_0x3516('0x21')](function(){_0x4f6978[_0x3516('0x17')](0xcc)[_0x3516('0x16')]();});}};}function handleEntityNotFound(_0x2feb16,_0x370130){return function(_0x5c6665){if(!_0x5c6665){_0x2feb16[_0x3516('0x22')](0x194);}return _0x5c6665;};}function handleError(_0x2b5111,_0x2539fa){_0x2539fa=_0x2539fa||0x1f4;return function(_0x40e3fe){logger['error'](_0x40e3fe[_0x3516('0x23')]);if(_0x40e3fe[_0x3516('0x24')]){delete _0x40e3fe[_0x3516('0x24')];}_0x2b5111[_0x3516('0x17')](_0x2539fa)[_0x3516('0x25')](_0x40e3fe);};}exports[_0x3516('0x26')]=function(_0x330051,_0x13e5f5){var _0x13eff8={},_0x5ca736={},_0x185039={'count':0x0,'rows':[]};var _0x5e7a8a=_[_0x3516('0x27')](db[_0x3516('0x28')][_0x3516('0x29')],function(_0x3fdbb6){return{'name':_0x3fdbb6[_0x3516('0x2a')],'type':_0x3fdbb6[_0x3516('0x2b')][_0x3516('0x2c')]};});_0x5ca736[_0x3516('0x2d')]=_[_0x3516('0x27')](_0x5e7a8a,_0x3516('0x24'));_0x5ca736[_0x3516('0x2e')]=_[_0x3516('0x2f')](_0x330051[_0x3516('0x2e')]);_0x5ca736[_0x3516('0x30')]=_[_0x3516('0x31')](_0x5ca736[_0x3516('0x2d')],_0x5ca736[_0x3516('0x2e')]);_0x13eff8[_0x3516('0x32')]=_['intersection'](_0x5ca736[_0x3516('0x2d')],qs[_0x3516('0x33')](_0x330051['query']['fields']));_0x13eff8[_0x3516('0x32')]=_0x13eff8[_0x3516('0x32')]['length']?_0x13eff8[_0x3516('0x32')]:_0x5ca736[_0x3516('0x2d')];if(!_0x330051['query'][_0x3516('0x34')]('nolimit')){_0x13eff8['limit']=qs[_0x3516('0x1b')](_0x330051[_0x3516('0x2e')][_0x3516('0x1b')]);_0x13eff8[_0x3516('0x18')]=qs[_0x3516('0x18')](_0x330051[_0x3516('0x2e')]['offset']);}_0x13eff8[_0x3516('0x35')]=qs['sort'](_0x330051[_0x3516('0x2e')][_0x3516('0x36')]);_0x13eff8[_0x3516('0x37')]=qs[_0x3516('0x30')](_[_0x3516('0x38')](_0x330051[_0x3516('0x2e')],_0x5ca736[_0x3516('0x30')]),_0x5e7a8a);if(_0x330051['query'][_0x3516('0x39')]){_0x13eff8[_0x3516('0x37')]=_[_0x3516('0x3a')](_0x13eff8['where'],{'$or':_[_0x3516('0x27')](_0x5e7a8a,function(_0x34f9f8){if(_0x34f9f8[_0x3516('0x2b')]!==_0x3516('0x3b')){var _0xd6c683={};_0xd6c683[_0x34f9f8[_0x3516('0x24')]]={'$like':'%'+_0x330051[_0x3516('0x2e')][_0x3516('0x39')]+'%'};return _0xd6c683;}})});}_0x13eff8=_[_0x3516('0x3a')]({},_0x13eff8,_0x330051[_0x3516('0x3c')]);var _0x1fe7f1={'where':_0x13eff8[_0x3516('0x37')]};return db[_0x3516('0x28')][_0x3516('0x1a')](_0x1fe7f1)[_0x3516('0x21')](function(_0x4d7585){_0x185039[_0x3516('0x1a')]=_0x4d7585;if(_0x330051['query']['includeAll']){_0x13eff8[_0x3516('0x3d')]=[{'all':!![]}];}return db[_0x3516('0x28')][_0x3516('0x3e')](_0x13eff8);})[_0x3516('0x21')](function(_0xf6d550){_0x185039[_0x3516('0x3f')]=_0xf6d550;return _0x185039;})['then'](respondWithFilteredResult(_0x13e5f5,_0x13eff8))[_0x3516('0x40')](handleError(_0x13e5f5,null));};exports[_0x3516('0x41')]=function(_0x30123e,_0x418f98){var _0x212554={'raw':!![],'where':{'id':_0x30123e['params']['id']}},_0x22fa3e={};_0x22fa3e['model']=_[_0x3516('0x2f')](db[_0x3516('0x28')][_0x3516('0x29')]);_0x22fa3e['query']=_[_0x3516('0x2f')](_0x30123e[_0x3516('0x2e')]);_0x22fa3e['filters']=_[_0x3516('0x31')](_0x22fa3e['model'],_0x22fa3e['query']);_0x212554[_0x3516('0x32')]=_[_0x3516('0x31')](_0x22fa3e['model'],qs['fields'](_0x30123e[_0x3516('0x2e')][_0x3516('0x33')]));_0x212554[_0x3516('0x32')]=_0x212554[_0x3516('0x32')][_0x3516('0x42')]?_0x212554[_0x3516('0x32')]:_0x22fa3e[_0x3516('0x2d')];if(_0x30123e['query'][_0x3516('0x43')]){_0x212554['include']=[{'all':!![]}];}_0x212554=_[_0x3516('0x3a')]({},_0x212554,_0x30123e[_0x3516('0x3c')]);return db[_0x3516('0x28')][_0x3516('0x44')](_0x212554)[_0x3516('0x21')](handleEntityNotFound(_0x418f98,null))['then'](respondWithResult(_0x418f98,null))[_0x3516('0x40')](handleError(_0x418f98,null));};exports['create']=function(_0x36865e,_0x19cdc8){return db[_0x3516('0x28')][_0x3516('0x45')](_0x36865e[_0x3516('0x46')],{})[_0x3516('0x21')](respondWithResult(_0x19cdc8,0xc9))[_0x3516('0x40')](handleError(_0x19cdc8,null));};exports[_0x3516('0x47')]=function(_0x11297f,_0x462d67){if(_0x11297f['body']['id']){delete _0x11297f[_0x3516('0x46')]['id'];}return db[_0x3516('0x28')][_0x3516('0x44')]({'where':{'id':_0x11297f[_0x3516('0x48')]['id']}})[_0x3516('0x21')](handleEntityNotFound(_0x462d67,null))[_0x3516('0x21')](saveUpdates(_0x11297f[_0x3516('0x46')],null))[_0x3516('0x21')](respondWithResult(_0x462d67,null))['catch'](handleError(_0x462d67,null));};exports['destroy']=function(_0x4a784e,_0xe5a68d){return db[_0x3516('0x28')][_0x3516('0x44')]({'where':{'id':_0x4a784e['params']['id']}})['then'](handleEntityNotFound(_0xe5a68d,null))[_0x3516('0x21')](removeEntity(_0xe5a68d,null))[_0x3516('0x40')](handleError(_0xe5a68d,null));};
\ No newline at end of file
index 0188247..4bd6ece 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xafc4=['bluebird','request-promise','path','exports','define','ZohoField','int_zoho_fields','idField','FieldId','lodash','../../config/logger','moment'];(function(_0x29bb73,_0x2afece){var _0xc2f389=function(_0x2c7b70){while(--_0x2c7b70){_0x29bb73['push'](_0x29bb73['shift']());}};_0xc2f389(++_0x2afece);}(_0xafc4,0x69));var _0x4afc=function(_0x57ba1b,_0x374ef2){_0x57ba1b=_0x57ba1b-0x0;var _0x29a979=_0xafc4[_0x57ba1b];return _0x29a979;};'use strict';var _=require(_0x4afc('0x0'));var util=require('util');var logger=require(_0x4afc('0x1'))('api');var moment=require(_0x4afc('0x2'));var BPromise=require(_0x4afc('0x3'));var rp=require(_0x4afc('0x4'));var fs=require('fs');var path=require(_0x4afc('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./intZohoField.attributes');module[_0x4afc('0x6')]=function(_0x471d45,_0x16953b){return _0x471d45[_0x4afc('0x7')](_0x4afc('0x8'),attributes,{'tableName':_0x4afc('0x9'),'paranoid':![],'indexes':[{'name':'zoho_unique_index','fields':[_0x4afc('0xa'),_0x4afc('0xb')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x627e=['define','ZohoField','int_zoho_fields','zoho_unique_index','FieldId','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf'];(function(_0x453523,_0x24b223){var _0x3917c1=function(_0x3cb438){while(--_0x3cb438){_0x453523['push'](_0x453523['shift']());}};_0x3917c1(++_0x24b223);}(_0x627e,0x14a));var _0xe627=function(_0x27837c,_0xeced04){_0x27837c=_0x27837c-0x0;var _0xbb6899=_0x627e[_0x27837c];return _0xbb6899;};'use strict';var _=require(_0xe627('0x0'));var util=require(_0xe627('0x1'));var logger=require(_0xe627('0x2'))(_0xe627('0x3'));var moment=require(_0xe627('0x4'));var BPromise=require('bluebird');var rp=require(_0xe627('0x5'));var fs=require('fs');var path=require(_0xe627('0x6'));var rimraf=require(_0xe627('0x7'));var config=require('../../config/environment');var attributes=require('./intZohoField.attributes');module['exports']=function(_0x1a1a3d,_0x3f2791){return _0x1a1a3d[_0xe627('0x8')](_0xe627('0x9'),attributes,{'tableName':_0xe627('0xa'),'paranoid':![],'indexes':[{'name':_0xe627('0xb'),'fields':['idField',_0xe627('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 65b0128..9814e88 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1025=['request','then','info','ZohoField,\x20%s,\x20%s','debug','ZohoField,\x20%s,\x20%s,\x20%s','error','code','message','request\x20sent','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http'];(function(_0x2aea9e,_0x1f587f){var _0x430b92=function(_0x416c37){while(--_0x416c37){_0x2aea9e['push'](_0x2aea9e['shift']());}};_0x430b92(++_0x1f587f);}(_0x1025,0x1ef));var _0x5102=function(_0xa277de,_0x2ad712){_0xa277de=_0xa277de-0x0;var _0x27c2da=_0x1025[_0xa277de];return _0x27c2da;};'use strict';var _=require(_0x5102('0x0'));var util=require('util');var moment=require(_0x5102('0x1'));var BPromise=require(_0x5102('0x2'));var rs=require(_0x5102('0x3'));var fs=require('fs');var Redis=require(_0x5102('0x4'));var db=require(_0x5102('0x5'))['db'];var utils=require(_0x5102('0x6'));var logger=require('../../config/logger')(_0x5102('0x7'));var config=require(_0x5102('0x8'));var jayson=require(_0x5102('0x9'));var client=jayson['client'][_0x5102('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x390e04,_0x21fb22,_0x30aa25){return new BPromise(function(_0x45fe1f,_0x3024ee){return client[_0x5102('0xb')](_0x390e04,_0x30aa25)[_0x5102('0xc')](function(_0x4c5fa6){logger[_0x5102('0xd')](_0x5102('0xe'),_0x21fb22,'request\x20sent');logger[_0x5102('0xf')](_0x5102('0x10'),_0x21fb22,'request\x20sent',JSON['stringify'](_0x4c5fa6));if(_0x4c5fa6[_0x5102('0x11')]){if(_0x4c5fa6['error'][_0x5102('0x12')]===0x1f4){logger[_0x5102('0x11')](_0x5102('0xe'),_0x21fb22,_0x4c5fa6[_0x5102('0x11')][_0x5102('0x13')]);return _0x3024ee(_0x4c5fa6[_0x5102('0x11')][_0x5102('0x13')]);}logger['error'](_0x5102('0xe'),_0x21fb22,_0x4c5fa6[_0x5102('0x11')][_0x5102('0x13')]);return _0x45fe1f(_0x4c5fa6[_0x5102('0x11')][_0x5102('0x13')]);}else{logger['info'](_0x5102('0xe'),_0x21fb22,_0x5102('0x14'));_0x45fe1f(_0x4c5fa6[_0x5102('0x15')][_0x5102('0x13')]);}})[_0x5102('0x16')](function(_0xab239d){logger[_0x5102('0x11')](_0x5102('0xe'),_0x21fb22,_0xab239d);_0x3024ee(_0xab239d);});});}
\ No newline at end of file
+var _0x6abe=['lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','info','request\x20sent','ZohoField,\x20%s,\x20%s,\x20%s','stringify','error','code','ZohoField,\x20%s,\x20%s','message','result','catch'];(function(_0x31efe7,_0x52fe9e){var _0x24b6ee=function(_0x65ae94){while(--_0x65ae94){_0x31efe7['push'](_0x31efe7['shift']());}};_0x24b6ee(++_0x52fe9e);}(_0x6abe,0x176));var _0xe6ab=function(_0x59f8c7,_0x55714b){_0x59f8c7=_0x59f8c7-0x0;var _0x1eb6f3=_0x6abe[_0x59f8c7];return _0x1eb6f3;};'use strict';var _=require(_0xe6ab('0x0'));var util=require('util');var moment=require(_0xe6ab('0x1'));var BPromise=require(_0xe6ab('0x2'));var rs=require(_0xe6ab('0x3'));var fs=require('fs');var Redis=require(_0xe6ab('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xe6ab('0x5'));var logger=require(_0xe6ab('0x6'))(_0xe6ab('0x7'));var config=require(_0xe6ab('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xe6ab('0x9')][_0xe6ab('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x51058a,_0x547923,_0x289ad8){return new BPromise(function(_0x17f593,_0x1ff222){return client[_0xe6ab('0xb')](_0x51058a,_0x289ad8)['then'](function(_0x103ae4){logger[_0xe6ab('0xc')]('ZohoField,\x20%s,\x20%s',_0x547923,_0xe6ab('0xd'));logger['debug'](_0xe6ab('0xe'),_0x547923,'request\x20sent',JSON[_0xe6ab('0xf')](_0x103ae4));if(_0x103ae4[_0xe6ab('0x10')]){if(_0x103ae4['error'][_0xe6ab('0x11')]===0x1f4){logger[_0xe6ab('0x10')](_0xe6ab('0x12'),_0x547923,_0x103ae4[_0xe6ab('0x10')][_0xe6ab('0x13')]);return _0x1ff222(_0x103ae4[_0xe6ab('0x10')]['message']);}logger[_0xe6ab('0x10')]('ZohoField,\x20%s,\x20%s',_0x547923,_0x103ae4[_0xe6ab('0x10')][_0xe6ab('0x13')]);return _0x17f593(_0x103ae4[_0xe6ab('0x10')][_0xe6ab('0x13')]);}else{logger[_0xe6ab('0xc')](_0xe6ab('0x12'),_0x547923,_0xe6ab('0xd'));_0x17f593(_0x103ae4[_0xe6ab('0x14')][_0xe6ab('0x13')]);}})[_0xe6ab('0x15')](function(_0x2d7323){logger[_0xe6ab('0x10')]('ZohoField,\x20%s,\x20%s',_0x547923,_0x2d7323);_0x1ff222(_0x2d7323);});});}
\ No newline at end of file
index aa62567..ca6b96f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x37ffbd,_0x236a17){var _0x5104d0=function(_0xf957f7){while(--_0xf957f7){_0x37ffbd['push'](_0x37ffbd['shift']());}};_0x5104d0(++_0x236a17);}(_0xe706,0xa3));var _0x6e70=function(_0xa5c63f,_0x2aaaa8){_0xa5c63f=_0xa5c63f-0x0;var _0xf352b1=_0xe706[_0xa5c63f];return _0xf352b1;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));module[_0x6e70('0x9')]=router;
\ No newline at end of file
+var _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x2484f5,_0x2f1f6d){var _0x2e724a=function(_0x8d684b){while(--_0x8d684b){_0x2484f5['push'](_0x2484f5['shift']());}};_0x2e724a(++_0x2f1f6d);}(_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 216a60d..beafa25 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b81=['app.js','INTEGER','exports','STRING','unique_name_and_version'];(function(_0x2c1dcd,_0x350452){var _0x158ce5=function(_0x5c1c57){while(--_0x5c1c57){_0x2c1dcd['push'](_0x2c1dcd['shift']());}};_0x158ce5(++_0x350452);}(_0x1b81,0x124));var _0x11b8=function(_0x1fb0a,_0x58b76b){_0x1fb0a=_0x1fb0a-0x0;var _0xf302d1=_0x1b81[_0x1fb0a];return _0xf302d1;};'use strict';var Sequelize=require('sequelize');module[_0x11b8('0x0')]={'name':{'type':Sequelize[_0x11b8('0x1')],'allowNull':![],'unique':'unique_name_and_version'},'version':{'type':Sequelize[_0x11b8('0x1')],'allowNull':![],'unique':_0x11b8('0x2')},'main':{'type':Sequelize[_0x11b8('0x1')],'defaultValue':_0x11b8('0x3')},'filename':{'type':Sequelize[_0x11b8('0x1')]},'path':{'type':Sequelize[_0x11b8('0x1')]},'type':{'type':Sequelize[_0x11b8('0x1')]},'size':{'type':Sequelize[_0x11b8('0x4')]},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'author':{'type':Sequelize[_0x11b8('0x1')]},'logo':{'type':Sequelize[_0x11b8('0x1')]},'state':{'type':Sequelize[_0x11b8('0x1')],'unique':'state'},'description':{'type':Sequelize[_0x11b8('0x1')]},'title':{'type':Sequelize[_0x11b8('0x1')]},'remoteUri':{'type':Sequelize['STRING']},'link':{'type':Sequelize[_0x11b8('0x1')],'defaultValue':'#'}};
\ No newline at end of file
+var _0xda3f=['state','exports','STRING','INTEGER','BOOLEAN'];(function(_0x1b8b81,_0xb30fc5){var _0x4a84ca=function(_0xb5b0d2){while(--_0xb5b0d2){_0x1b8b81['push'](_0x1b8b81['shift']());}};_0x4a84ca(++_0xb30fc5);}(_0xda3f,0xec));var _0xfda3=function(_0x239e37,_0x353627){_0x239e37=_0x239e37-0x0;var _0x384326=_0xda3f[_0x239e37];return _0x384326;};'use strict';var Sequelize=require('sequelize');module[_0xfda3('0x0')]={'name':{'type':Sequelize[_0xfda3('0x1')],'allowNull':![],'unique':'unique_name_and_version'},'version':{'type':Sequelize['STRING'],'allowNull':![],'unique':'unique_name_and_version'},'main':{'type':Sequelize[_0xfda3('0x1')],'defaultValue':'app.js'},'filename':{'type':Sequelize[_0xfda3('0x1')]},'path':{'type':Sequelize[_0xfda3('0x1')]},'type':{'type':Sequelize['STRING']},'size':{'type':Sequelize[_0xfda3('0x2')]},'active':{'type':Sequelize[_0xfda3('0x3')],'defaultValue':![]},'author':{'type':Sequelize['STRING']},'logo':{'type':Sequelize['STRING']},'state':{'type':Sequelize[_0xfda3('0x1')],'unique':_0xfda3('0x4')},'description':{'type':Sequelize[_0xfda3('0x1')]},'title':{'type':Sequelize[_0xfda3('0x1')]},'remoteUri':{'type':Sequelize[_0xfda3('0x1')]},'link':{'type':Sequelize[_0xfda3('0x1')],'defaultValue':'#'}};
\ No newline at end of file
index 424cb3d..647feaa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c60=['api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','reject','then','destroy','end','error','stack','name','index','map','Integration','rawAttributes','key','keys','query','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','VIRTUAL','merge','options','include','findAll','rows','catch','show','includeAll','find','create','update','body','params','eml-format','rimraf','zip-dir','fast-json-patch','moment','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','../../components/parsers/advancedSearch','../../config/logger'];(function(_0x17928f,_0x4ad33f){var _0x500b63=function(_0x127644){while(--_0x127644){_0x17928f['push'](_0x17928f['shift']());}};_0x500b63(++_0x4ad33f);}(_0x4c60,0xc1));var _0x04c6=function(_0x2c2bd8,_0x5586bc){_0x2c2bd8=_0x2c2bd8-0x0;var _0x74d971=_0x4c60[_0x2c2bd8];return _0x74d971;};'use strict';var emlformat=require(_0x04c6('0x0'));var rimraf=require(_0x04c6('0x1'));var zipdir=require(_0x04c6('0x2'));var jsonpatch=require(_0x04c6('0x3'));var rp=require('request-promise');var moment=require(_0x04c6('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0x04c6('0x5'));var csv=require(_0x04c6('0x6'));var ejs=require(_0x04c6('0x7'));var fs=require('fs');var fs_extra=require(_0x04c6('0x8'));var _=require(_0x04c6('0x9'));var squel=require(_0x04c6('0xa'));var crypto=require(_0x04c6('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x04c6('0xc'));var toCsv=require(_0x04c6('0x6'));var querystring=require(_0x04c6('0xd'));var Papa=require(_0x04c6('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x04c6('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x04c6('0x10'))(_0x04c6('0x11'));var utils=require('../../config/utils');var config=require(_0x04c6('0x12'));var licenseUtil=require(_0x04c6('0x13'));var db=require(_0x04c6('0x14'))['db'];function respondWithStatusCode(_0x4e5e6,_0x52cdcf){_0x52cdcf=_0x52cdcf||0xcc;return function(_0x257a0a){if(_0x257a0a){return _0x4e5e6[_0x04c6('0x15')](_0x52cdcf);}return _0x4e5e6[_0x04c6('0x16')](_0x52cdcf)['end']();};}function respondWithResult(_0x12d1c5,_0x15cbe0){_0x15cbe0=_0x15cbe0||0xc8;return function(_0x28632e){if(_0x28632e){return _0x12d1c5[_0x04c6('0x16')](_0x15cbe0)[_0x04c6('0x17')](_0x28632e);}};}function respondWithFilteredResult(_0x19a26f,_0x1cd963){return function(_0x3d46a9){if(_0x3d46a9){var _0x5a5a66=typeof _0x1cd963[_0x04c6('0x18')]===_0x04c6('0x19')&&typeof _0x1cd963[_0x04c6('0x1a')]===_0x04c6('0x19');var _0x43596a=_0x3d46a9[_0x04c6('0x1b')];var _0x21674a=_0x5a5a66?0x0:_0x1cd963[_0x04c6('0x18')];var _0x47f400=_0x5a5a66?_0x3d46a9[_0x04c6('0x1b')]:_0x1cd963[_0x04c6('0x18')]+_0x1cd963[_0x04c6('0x1a')];var _0x558b43;if(_0x47f400>=_0x43596a){_0x47f400=_0x43596a;_0x558b43=0xc8;}else{_0x558b43=0xce;}_0x19a26f['status'](_0x558b43);return _0x19a26f['set'](_0x04c6('0x1c'),_0x21674a+'-'+_0x47f400+'/'+_0x43596a)[_0x04c6('0x17')](_0x3d46a9);}return null;};}function patchUpdates(_0x50dd61){return function(_0x5a5e9e){try{jsonpatch[_0x04c6('0x1d')](_0x5a5e9e,_0x50dd61,!![]);}catch(_0x2eed94){return BPromise[_0x04c6('0x1e')](_0x2eed94);}return _0x5a5e9e['save']();};}function saveUpdates(_0x33a0f7,_0x13f2dc){return function(_0x9d41f8){if(_0x9d41f8){return _0x9d41f8['update'](_0x33a0f7)[_0x04c6('0x1f')](function(_0x41e29f){return _0x41e29f;});}return null;};}function removeEntity(_0x562491,_0x54a8b0){return function(_0x4c8d72){if(_0x4c8d72){return _0x4c8d72[_0x04c6('0x20')]()[_0x04c6('0x1f')](function(){_0x562491[_0x04c6('0x16')](0xcc)[_0x04c6('0x21')]();});}};}function handleEntityNotFound(_0x3e1328,_0x52e5f5){return function(_0x562952){if(!_0x562952){_0x3e1328[_0x04c6('0x15')](0x194);}return _0x562952;};}function handleError(_0x2ab1d2,_0x9acfa){_0x9acfa=_0x9acfa||0x1f4;return function(_0x3233d7){logger[_0x04c6('0x22')](_0x3233d7[_0x04c6('0x23')]);if(_0x3233d7['name']){delete _0x3233d7[_0x04c6('0x24')];}_0x2ab1d2[_0x04c6('0x16')](_0x9acfa)['send'](_0x3233d7);};}exports[_0x04c6('0x25')]=function(_0x1cd16a,_0x5f1331){var _0x5c9003={},_0x115d84={},_0x3a6d92={'count':0x0,'rows':[]};var _0x2a191f=_[_0x04c6('0x26')](db[_0x04c6('0x27')][_0x04c6('0x28')],function(_0x49c4ed){return{'name':_0x49c4ed['fieldName'],'type':_0x49c4ed['type'][_0x04c6('0x29')]};});_0x115d84['model']=_[_0x04c6('0x26')](_0x2a191f,_0x04c6('0x24'));_0x115d84['query']=_[_0x04c6('0x2a')](_0x1cd16a[_0x04c6('0x2b')]);_0x115d84[_0x04c6('0x2c')]=_[_0x04c6('0x2d')](_0x115d84['model'],_0x115d84[_0x04c6('0x2b')]);_0x5c9003[_0x04c6('0x2e')]=_[_0x04c6('0x2d')](_0x115d84[_0x04c6('0x2f')],qs[_0x04c6('0x30')](_0x1cd16a[_0x04c6('0x2b')][_0x04c6('0x30')]));_0x5c9003[_0x04c6('0x2e')]=_0x5c9003[_0x04c6('0x2e')][_0x04c6('0x31')]?_0x5c9003[_0x04c6('0x2e')]:_0x115d84[_0x04c6('0x2f')];if(!_0x1cd16a[_0x04c6('0x2b')][_0x04c6('0x32')](_0x04c6('0x33'))){_0x5c9003['limit']=qs[_0x04c6('0x1a')](_0x1cd16a[_0x04c6('0x2b')][_0x04c6('0x1a')]);_0x5c9003[_0x04c6('0x18')]=qs['offset'](_0x1cd16a[_0x04c6('0x2b')][_0x04c6('0x18')]);}_0x5c9003['order']=qs['sort'](_0x1cd16a['query'][_0x04c6('0x34')]);_0x5c9003[_0x04c6('0x35')]=qs['filters'](_[_0x04c6('0x36')](_0x1cd16a['query'],_0x115d84[_0x04c6('0x2c')]),_0x2a191f);if(_0x1cd16a[_0x04c6('0x2b')][_0x04c6('0x37')]){_0x5c9003[_0x04c6('0x35')]=_['merge'](_0x5c9003['where'],{'$or':_[_0x04c6('0x26')](_0x2a191f,function(_0x3a9a3b){if(_0x3a9a3b['type']!==_0x04c6('0x38')){var _0x5ce4b0={};_0x5ce4b0[_0x3a9a3b['name']]={'$like':'%'+_0x1cd16a[_0x04c6('0x2b')]['filter']+'%'};return _0x5ce4b0;}})});}_0x5c9003=_[_0x04c6('0x39')]({},_0x5c9003,_0x1cd16a[_0x04c6('0x3a')]);var _0x59ca18={'where':_0x5c9003[_0x04c6('0x35')]};return db['Integration'][_0x04c6('0x1b')](_0x59ca18)[_0x04c6('0x1f')](function(_0x2d83eb){_0x3a6d92[_0x04c6('0x1b')]=_0x2d83eb;if(_0x1cd16a[_0x04c6('0x2b')]['includeAll']){_0x5c9003[_0x04c6('0x3b')]=[{'all':!![]}];}return db['Integration'][_0x04c6('0x3c')](_0x5c9003);})['then'](function(_0x1f7ead){_0x3a6d92[_0x04c6('0x3d')]=_0x1f7ead;return _0x3a6d92;})[_0x04c6('0x1f')](respondWithFilteredResult(_0x5f1331,_0x5c9003))[_0x04c6('0x3e')](handleError(_0x5f1331,null));};exports[_0x04c6('0x3f')]=function(_0x2cdf34,_0x40477f){var _0x4a3c45={'raw':![],'where':{'id':_0x2cdf34['params']['id']}},_0xdfdc34={};_0xdfdc34[_0x04c6('0x2f')]=_['keys'](db['Integration'][_0x04c6('0x28')]);_0xdfdc34['query']=_[_0x04c6('0x2a')](_0x2cdf34[_0x04c6('0x2b')]);_0xdfdc34[_0x04c6('0x2c')]=_['intersection'](_0xdfdc34[_0x04c6('0x2f')],_0xdfdc34[_0x04c6('0x2b')]);_0x4a3c45[_0x04c6('0x2e')]=_[_0x04c6('0x2d')](_0xdfdc34[_0x04c6('0x2f')],qs[_0x04c6('0x30')](_0x2cdf34[_0x04c6('0x2b')]['fields']));_0x4a3c45['attributes']=_0x4a3c45[_0x04c6('0x2e')][_0x04c6('0x31')]?_0x4a3c45[_0x04c6('0x2e')]:_0xdfdc34['model'];if(_0x2cdf34[_0x04c6('0x2b')][_0x04c6('0x40')]){_0x4a3c45[_0x04c6('0x3b')]=[{'all':!![]}];}_0x4a3c45=_['merge']({},_0x4a3c45,_0x2cdf34['options']);return db['Integration'][_0x04c6('0x41')](_0x4a3c45)[_0x04c6('0x1f')](handleEntityNotFound(_0x40477f,null))['then'](respondWithResult(_0x40477f,null))[_0x04c6('0x3e')](handleError(_0x40477f,null));};exports[_0x04c6('0x42')]=function(_0x2bd045,_0x4ef366){return db[_0x04c6('0x27')][_0x04c6('0x42')](_0x2bd045['body'],{})[_0x04c6('0x1f')](respondWithResult(_0x4ef366,0xc9))[_0x04c6('0x3e')](handleError(_0x4ef366,null));};exports[_0x04c6('0x43')]=function(_0xee2822,_0x4cfde2){if(_0xee2822[_0x04c6('0x44')]['id']){delete _0xee2822[_0x04c6('0x44')]['id'];}return db[_0x04c6('0x27')][_0x04c6('0x41')]({'where':{'id':_0xee2822['params']['id']}})[_0x04c6('0x1f')](handleEntityNotFound(_0x4cfde2,null))[_0x04c6('0x1f')](saveUpdates(_0xee2822[_0x04c6('0x44')],null))[_0x04c6('0x1f')](respondWithResult(_0x4cfde2,null))['catch'](handleError(_0x4cfde2,null));};exports[_0x04c6('0x20')]=function(_0x42273e,_0x15ec61){return db['Integration'][_0x04c6('0x41')]({'where':{'id':_0x42273e[_0x04c6('0x45')]['id']}})[_0x04c6('0x1f')](handleEntityNotFound(_0x15ec61,null))[_0x04c6('0x1f')](removeEntity(_0x15ec61,null))[_0x04c6('0x3e')](handleError(_0x15ec61,null));};
\ No newline at end of file
+var _0xba34=['../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','error','stack','name','send','map','Integration','rawAttributes','fieldName','type','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','find','body','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service'];(function(_0x1da4d5,_0xcd947f){var _0x3c6021=function(_0x2df531){while(--_0x2df531){_0x1da4d5['push'](_0x1da4d5['shift']());}};_0x3c6021(++_0xcd947f);}(_0xba34,0x119));var _0x4ba3=function(_0x40e090,_0xd32bce){_0x40e090=_0x40e090-0x0;var _0xc4f05b=_0xba34[_0x40e090];return _0xc4f05b;};'use strict';var emlformat=require(_0x4ba3('0x0'));var rimraf=require(_0x4ba3('0x1'));var zipdir=require(_0x4ba3('0x2'));var jsonpatch=require(_0x4ba3('0x3'));var rp=require(_0x4ba3('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x4ba3('0x5'));var path=require(_0x4ba3('0x6'));var sox=require(_0x4ba3('0x7'));var csv=require(_0x4ba3('0x8'));var ejs=require(_0x4ba3('0x9'));var fs=require('fs');var fs_extra=require(_0x4ba3('0xa'));var _=require(_0x4ba3('0xb'));var squel=require('squel');var crypto=require(_0x4ba3('0xc'));var jsforce=require(_0x4ba3('0xd'));var deskjs=require(_0x4ba3('0xe'));var toCsv=require(_0x4ba3('0x8'));var querystring=require(_0x4ba3('0xf'));var Papa=require(_0x4ba3('0x10'));var Redis=require(_0x4ba3('0x11'));var authService=require(_0x4ba3('0x12'));var qs=require(_0x4ba3('0x13'));var as=require(_0x4ba3('0x14'));var hardwareService=require(_0x4ba3('0x15'));var logger=require('../../config/logger')(_0x4ba3('0x16'));var utils=require(_0x4ba3('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x4ba3('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1073d4,_0x52f55c){_0x52f55c=_0x52f55c||0xcc;return function(_0x256f02){if(_0x256f02){return _0x1073d4[_0x4ba3('0x19')](_0x52f55c);}return _0x1073d4[_0x4ba3('0x1a')](_0x52f55c)[_0x4ba3('0x1b')]();};}function respondWithResult(_0x2bc796,_0x3d2ace){_0x3d2ace=_0x3d2ace||0xc8;return function(_0x3a74f7){if(_0x3a74f7){return _0x2bc796[_0x4ba3('0x1a')](_0x3d2ace)[_0x4ba3('0x1c')](_0x3a74f7);}};}function respondWithFilteredResult(_0x401366,_0x36638b){return function(_0x301359){if(_0x301359){var _0x29a9d1=typeof _0x36638b[_0x4ba3('0x1d')]===_0x4ba3('0x1e')&&typeof _0x36638b[_0x4ba3('0x1f')]==='undefined';var _0x382fd0=_0x301359[_0x4ba3('0x20')];var _0x5ff7ce=_0x29a9d1?0x0:_0x36638b[_0x4ba3('0x1d')];var _0x556290=_0x29a9d1?_0x301359[_0x4ba3('0x20')]:_0x36638b[_0x4ba3('0x1d')]+_0x36638b[_0x4ba3('0x1f')];var _0x1e2ce5;if(_0x556290>=_0x382fd0){_0x556290=_0x382fd0;_0x1e2ce5=0xc8;}else{_0x1e2ce5=0xce;}_0x401366[_0x4ba3('0x1a')](_0x1e2ce5);return _0x401366[_0x4ba3('0x21')]('Content-Range',_0x5ff7ce+'-'+_0x556290+'/'+_0x382fd0)['json'](_0x301359);}return null;};}function patchUpdates(_0x2278b0){return function(_0x579d9f){try{jsonpatch[_0x4ba3('0x22')](_0x579d9f,_0x2278b0,!![]);}catch(_0x163967){return BPromise[_0x4ba3('0x23')](_0x163967);}return _0x579d9f[_0x4ba3('0x24')]();};}function saveUpdates(_0x46f1f5,_0x278a23){return function(_0x4a0823){if(_0x4a0823){return _0x4a0823[_0x4ba3('0x25')](_0x46f1f5)[_0x4ba3('0x26')](function(_0x5c28f9){return _0x5c28f9;});}return null;};}function removeEntity(_0x28bb3d,_0x4ffe39){return function(_0x1ae4de){if(_0x1ae4de){return _0x1ae4de[_0x4ba3('0x27')]()[_0x4ba3('0x26')](function(){_0x28bb3d[_0x4ba3('0x1a')](0xcc)[_0x4ba3('0x1b')]();});}};}function handleEntityNotFound(_0xe29a49,_0x159596){return function(_0xe1f7d2){if(!_0xe1f7d2){_0xe29a49[_0x4ba3('0x19')](0x194);}return _0xe1f7d2;};}function handleError(_0x2e67a0,_0x50c729){_0x50c729=_0x50c729||0x1f4;return function(_0x252f37){logger[_0x4ba3('0x28')](_0x252f37[_0x4ba3('0x29')]);if(_0x252f37['name']){delete _0x252f37[_0x4ba3('0x2a')];}_0x2e67a0[_0x4ba3('0x1a')](_0x50c729)[_0x4ba3('0x2b')](_0x252f37);};}exports['index']=function(_0x10cae6,_0x843276){var _0x34ecb4={},_0x22394d={},_0x4a339e={'count':0x0,'rows':[]};var _0x590108=_[_0x4ba3('0x2c')](db[_0x4ba3('0x2d')][_0x4ba3('0x2e')],function(_0x19f039){return{'name':_0x19f039[_0x4ba3('0x2f')],'type':_0x19f039[_0x4ba3('0x30')]['key']};});_0x22394d[_0x4ba3('0x31')]=_[_0x4ba3('0x2c')](_0x590108,_0x4ba3('0x2a'));_0x22394d[_0x4ba3('0x32')]=_[_0x4ba3('0x33')](_0x10cae6[_0x4ba3('0x32')]);_0x22394d[_0x4ba3('0x34')]=_[_0x4ba3('0x35')](_0x22394d[_0x4ba3('0x31')],_0x22394d[_0x4ba3('0x32')]);_0x34ecb4['attributes']=_['intersection'](_0x22394d['model'],qs[_0x4ba3('0x36')](_0x10cae6[_0x4ba3('0x32')][_0x4ba3('0x36')]));_0x34ecb4[_0x4ba3('0x37')]=_0x34ecb4[_0x4ba3('0x37')][_0x4ba3('0x38')]?_0x34ecb4[_0x4ba3('0x37')]:_0x22394d[_0x4ba3('0x31')];if(!_0x10cae6[_0x4ba3('0x32')][_0x4ba3('0x39')](_0x4ba3('0x3a'))){_0x34ecb4[_0x4ba3('0x1f')]=qs['limit'](_0x10cae6[_0x4ba3('0x32')][_0x4ba3('0x1f')]);_0x34ecb4[_0x4ba3('0x1d')]=qs['offset'](_0x10cae6[_0x4ba3('0x32')]['offset']);}_0x34ecb4[_0x4ba3('0x3b')]=qs[_0x4ba3('0x3c')](_0x10cae6[_0x4ba3('0x32')][_0x4ba3('0x3c')]);_0x34ecb4[_0x4ba3('0x3d')]=qs[_0x4ba3('0x34')](_['pick'](_0x10cae6[_0x4ba3('0x32')],_0x22394d[_0x4ba3('0x34')]),_0x590108);if(_0x10cae6[_0x4ba3('0x32')]['filter']){_0x34ecb4[_0x4ba3('0x3d')]=_[_0x4ba3('0x3e')](_0x34ecb4['where'],{'$or':_[_0x4ba3('0x2c')](_0x590108,function(_0x503777){if(_0x503777['type']!==_0x4ba3('0x3f')){var _0x1acc74={};_0x1acc74[_0x503777[_0x4ba3('0x2a')]]={'$like':'%'+_0x10cae6[_0x4ba3('0x32')][_0x4ba3('0x40')]+'%'};return _0x1acc74;}})});}_0x34ecb4=_['merge']({},_0x34ecb4,_0x10cae6[_0x4ba3('0x41')]);var _0x10e4b5={'where':_0x34ecb4[_0x4ba3('0x3d')]};return db[_0x4ba3('0x2d')][_0x4ba3('0x20')](_0x10e4b5)[_0x4ba3('0x26')](function(_0x349af4){_0x4a339e[_0x4ba3('0x20')]=_0x349af4;if(_0x10cae6['query'][_0x4ba3('0x42')]){_0x34ecb4[_0x4ba3('0x43')]=[{'all':!![]}];}return db[_0x4ba3('0x2d')][_0x4ba3('0x44')](_0x34ecb4);})[_0x4ba3('0x26')](function(_0x25b2c9){_0x4a339e[_0x4ba3('0x45')]=_0x25b2c9;return _0x4a339e;})[_0x4ba3('0x26')](respondWithFilteredResult(_0x843276,_0x34ecb4))[_0x4ba3('0x46')](handleError(_0x843276,null));};exports[_0x4ba3('0x47')]=function(_0x3b9a0a,_0x1c58d2){var _0x1d031b={'raw':![],'where':{'id':_0x3b9a0a['params']['id']}},_0x28b649={};_0x28b649['model']=_['keys'](db['Integration']['rawAttributes']);_0x28b649[_0x4ba3('0x32')]=_['keys'](_0x3b9a0a[_0x4ba3('0x32')]);_0x28b649['filters']=_[_0x4ba3('0x35')](_0x28b649[_0x4ba3('0x31')],_0x28b649[_0x4ba3('0x32')]);_0x1d031b[_0x4ba3('0x37')]=_[_0x4ba3('0x35')](_0x28b649['model'],qs[_0x4ba3('0x36')](_0x3b9a0a['query'][_0x4ba3('0x36')]));_0x1d031b['attributes']=_0x1d031b[_0x4ba3('0x37')][_0x4ba3('0x38')]?_0x1d031b[_0x4ba3('0x37')]:_0x28b649[_0x4ba3('0x31')];if(_0x3b9a0a[_0x4ba3('0x32')][_0x4ba3('0x42')]){_0x1d031b[_0x4ba3('0x43')]=[{'all':!![]}];}_0x1d031b=_['merge']({},_0x1d031b,_0x3b9a0a[_0x4ba3('0x41')]);return db[_0x4ba3('0x2d')][_0x4ba3('0x48')](_0x1d031b)[_0x4ba3('0x26')](handleEntityNotFound(_0x1c58d2,null))[_0x4ba3('0x26')](respondWithResult(_0x1c58d2,null))['catch'](handleError(_0x1c58d2,null));};exports['create']=function(_0xa4bbb2,_0x1fe115){return db[_0x4ba3('0x2d')]['create'](_0xa4bbb2[_0x4ba3('0x49')],{})[_0x4ba3('0x26')](respondWithResult(_0x1fe115,0xc9))[_0x4ba3('0x46')](handleError(_0x1fe115,null));};exports['update']=function(_0x47f588,_0x34dc04){if(_0x47f588['body']['id']){delete _0x47f588[_0x4ba3('0x49')]['id'];}return db[_0x4ba3('0x2d')][_0x4ba3('0x48')]({'where':{'id':_0x47f588[_0x4ba3('0x4a')]['id']}})[_0x4ba3('0x26')](handleEntityNotFound(_0x34dc04,null))[_0x4ba3('0x26')](saveUpdates(_0x47f588['body'],null))[_0x4ba3('0x26')](respondWithResult(_0x34dc04,null))[_0x4ba3('0x46')](handleError(_0x34dc04,null));};exports['destroy']=function(_0x325475,_0x12ae6f){return db[_0x4ba3('0x2d')][_0x4ba3('0x48')]({'where':{'id':_0x325475[_0x4ba3('0x4a')]['id']}})['then'](handleEntityNotFound(_0x12ae6f,null))[_0x4ba3('0x26')](removeEntity(_0x12ae6f,null))[_0x4ba3('0x46')](handleError(_0x12ae6f,null));};
\ No newline at end of file
index 032f65d..837d5d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x27e8=['Integration','integrations','lodash','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./integration.attributes','exports','define'];(function(_0x49aa7d,_0x5d46d8){var _0xdd0d26=function(_0x159df7){while(--_0x159df7){_0x49aa7d['push'](_0x49aa7d['shift']());}};_0xdd0d26(++_0x5d46d8);}(_0x27e8,0xd2));var _0x827e=function(_0x29d49e,_0x1430c7){_0x29d49e=_0x29d49e-0x0;var _0x528bff=_0x27e8[_0x29d49e];return _0x528bff;};'use strict';var _=require(_0x827e('0x0'));var util=require('util');var logger=require(_0x827e('0x1'))(_0x827e('0x2'));var moment=require(_0x827e('0x3'));var BPromise=require(_0x827e('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x827e('0x5'));var rimraf=require(_0x827e('0x6'));var config=require(_0x827e('0x7'));var attributes=require(_0x827e('0x8'));module[_0x827e('0x9')]=function(_0x3463a4,_0x3af024){return _0x3463a4[_0x827e('0xa')](_0x827e('0xb'),attributes,{'tableName':_0x827e('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3113=['define','Integration','integrations','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./integration.attributes','exports'];(function(_0x2df84d,_0x56d874){var _0x2634ce=function(_0x8e8e31){while(--_0x8e8e31){_0x2df84d['push'](_0x2df84d['shift']());}};_0x2634ce(++_0x56d874);}(_0x3113,0x120));var _0x3311=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x3113[_0x122ef9];return _0x42fba0;};'use strict';var _=require(_0x3311('0x0'));var util=require(_0x3311('0x1'));var logger=require(_0x3311('0x2'))(_0x3311('0x3'));var moment=require(_0x3311('0x4'));var BPromise=require(_0x3311('0x5'));var rp=require(_0x3311('0x6'));var fs=require('fs');var path=require(_0x3311('0x7'));var rimraf=require(_0x3311('0x8'));var config=require(_0x3311('0x9'));var attributes=require(_0x3311('0xa'));module[_0x3311('0xb')]=function(_0x620cb3,_0x3f5536){return _0x620cb3[_0x3311('0xc')](_0x3311('0xd'),attributes,{'tableName':_0x3311('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e3af6b8..cc8bf01 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f0e=['../../config/environment','jayson/promise','request','then','info','Integration,\x20%s,\x20%s','request\x20sent','debug','Integration,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc'];(function(_0x19562d,_0x2a77ab){var _0x396e97=function(_0x1734fe){while(--_0x1734fe){_0x19562d['push'](_0x19562d['shift']());}};_0x396e97(++_0x2a77ab);}(_0x9f0e,0x116));var _0xe9f0=function(_0x4320c3,_0x5f0185){_0x4320c3=_0x4320c3-0x0;var _0x2433c7=_0x9f0e[_0x4320c3];return _0x2433c7;};'use strict';var _=require(_0xe9f0('0x0'));var util=require(_0xe9f0('0x1'));var moment=require(_0xe9f0('0x2'));var BPromise=require(_0xe9f0('0x3'));var rs=require(_0xe9f0('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xe9f0('0x5'));var logger=require(_0xe9f0('0x6'))(_0xe9f0('0x7'));var config=require(_0xe9f0('0x8'));var jayson=require(_0xe9f0('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x3a17b3,_0x167198,_0xe64a79){return new BPromise(function(_0x4be6a6,_0xf4a256){return client[_0xe9f0('0xa')](_0x3a17b3,_0xe64a79)[_0xe9f0('0xb')](function(_0x3386a8){logger[_0xe9f0('0xc')](_0xe9f0('0xd'),_0x167198,_0xe9f0('0xe'));logger[_0xe9f0('0xf')](_0xe9f0('0x10'),_0x167198,'request\x20sent',JSON[_0xe9f0('0x11')](_0x3386a8));if(_0x3386a8[_0xe9f0('0x12')]){if(_0x3386a8[_0xe9f0('0x12')]['code']===0x1f4){logger[_0xe9f0('0x12')]('Integration,\x20%s,\x20%s',_0x167198,_0x3386a8[_0xe9f0('0x12')][_0xe9f0('0x13')]);return _0xf4a256(_0x3386a8[_0xe9f0('0x12')][_0xe9f0('0x13')]);}logger['error'](_0xe9f0('0xd'),_0x167198,_0x3386a8['error'][_0xe9f0('0x13')]);return _0x4be6a6(_0x3386a8[_0xe9f0('0x12')][_0xe9f0('0x13')]);}else{logger['info'](_0xe9f0('0xd'),_0x167198,_0xe9f0('0xe'));_0x4be6a6(_0x3386a8[_0xe9f0('0x14')]['message']);}})[_0xe9f0('0x15')](function(_0x1e16e0){logger[_0xe9f0('0x12')](_0xe9f0('0xd'),_0x167198,_0x1e16e0);_0xf4a256(_0x1e16e0);});});}
\ No newline at end of file
+var _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(_0x353011,_0x10b35d){var _0x48ef29=function(_0x2b6222){while(--_0x2b6222){_0x353011['push'](_0x353011['shift']());}};_0x48ef29(++_0x10b35d);}(_0x5f2f,0x73));var _0xf5f2=function(_0x2e202e,_0x20da26){_0x2e202e=_0x2e202e-0x0;var _0x337771=_0x5f2f[_0x2e202e];return _0x337771;};'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
index d5157ce..b4b6641 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x66fa=['index','get','/describe','post','/:id','delete','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated'];(function(_0x39f794,_0x212dc5){var _0x180134=function(_0x1b6401){while(--_0x1b6401){_0x39f794['push'](_0x39f794['shift']());}};_0x180134(++_0x212dc5);}(_0x66fa,0x117));var _0xa66f=function(_0xd2ed63,_0x432465){_0xd2ed63=_0xd2ed63-0x0;var _0x36e128=_0x66fa[_0xd2ed63];return _0x36e128;};'use strict';var multer=require(_0xa66f('0x0'));var util=require(_0xa66f('0x1'));var path=require('path');var timeout=require(_0xa66f('0x2'));var express=require(_0xa66f('0x3'));var router=express[_0xa66f('0x4')]();var fs_extra=require(_0xa66f('0x5'));var auth=require(_0xa66f('0x6'));var interaction=require(_0xa66f('0x7'));var config=require(_0xa66f('0x8'));var controller=require('./integrationReport.controller');router['get']('/',auth[_0xa66f('0x9')](),controller[_0xa66f('0xa')]);router[_0xa66f('0xb')](_0xa66f('0xc'),auth[_0xa66f('0x9')](),controller['describe']);router[_0xa66f('0xb')]('/:id',auth[_0xa66f('0x9')](),controller['show']);router[_0xa66f('0xd')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0xa66f('0xe'),auth[_0xa66f('0x9')](),controller['update']);router[_0xa66f('0xf')]('/:id',auth[_0xa66f('0x9')](),controller['destroy']);module[_0xa66f('0x10')]=router;
\ No newline at end of file
+var _0x896e=['show','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./integrationReport.controller','get','index','/describe','isAuthenticated','describe','/:id'];(function(_0x209941,_0x5c9988){var _0x1e8729=function(_0x51a9b8){while(--_0x51a9b8){_0x209941['push'](_0x209941['shift']());}};_0x1e8729(++_0x5c9988);}(_0x896e,0x1e9));var _0xe896=function(_0x5aeb41,_0x13ef7a){_0x5aeb41=_0x5aeb41-0x0;var _0x2843e6=_0x896e[_0x5aeb41];return _0x2843e6;};'use strict';var multer=require(_0xe896('0x0'));var util=require(_0xe896('0x1'));var path=require(_0xe896('0x2'));var timeout=require(_0xe896('0x3'));var express=require(_0xe896('0x4'));var router=express[_0xe896('0x5')]();var fs_extra=require(_0xe896('0x6'));var auth=require(_0xe896('0x7'));var interaction=require(_0xe896('0x8'));var config=require(_0xe896('0x9'));var controller=require(_0xe896('0xa'));router[_0xe896('0xb')]('/',auth['isAuthenticated'](),controller[_0xe896('0xc')]);router[_0xe896('0xb')](_0xe896('0xd'),auth[_0xe896('0xe')](),controller[_0xe896('0xf')]);router['get'](_0xe896('0x10'),auth[_0xe896('0xe')](),controller[_0xe896('0x11')]);router['post']('/',auth[_0xe896('0xe')](),controller['create']);router[_0xe896('0x12')]('/:id',auth[_0xe896('0xe')](),controller[_0xe896('0x13')]);router[_0xe896('0x14')]('/:id',auth[_0xe896('0xe')](),controller[_0xe896('0x15')]);module[_0xe896('0x16')]=router;
\ No newline at end of file
index e6529da..7652a1a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd995=['TEXT','ENUM','SENT','RECEIVED','FAILED','sequelize','STRING','INTEGER','DATE','BOOLEAN'];(function(_0x535c96,_0x39e449){var _0x568db0=function(_0x19a517){while(--_0x19a517){_0x535c96['push'](_0x535c96['shift']());}};_0x568db0(++_0x39e449);}(_0xd995,0x18b));var _0x5d99=function(_0x5d69d2,_0x155523){_0x5d69d2=_0x5d69d2-0x0;var _0x351133=_0xd995[_0x5d69d2];return _0x351133;};'use strict';var Sequelize=require(_0x5d99('0x0'));module['exports']={'integration':{'type':Sequelize['STRING']},'eventChannel':{'type':Sequelize[_0x5d99('0x1')]},'exitStatus':{'type':Sequelize[_0x5d99('0x1')]},'ticketId':{'type':Sequelize[_0x5d99('0x1')]},'integrationId':{'type':Sequelize[_0x5d99('0x2')]},'contacts':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0x5d99('0x1')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x5d99('0x1')]},'queue':{'type':Sequelize[_0x5d99('0x1')]},'interface':{'type':Sequelize['STRING']},'membername':{'type':Sequelize[_0x5d99('0x1')]},'agentcalledAt':{'type':Sequelize[_0x5d99('0x3')]},'agentconnectAt':{'type':Sequelize[_0x5d99('0x3')]},'holdtime':{'type':Sequelize[_0x5d99('0x2')]},'agentcomplete':{'type':Sequelize[_0x5d99('0x4')],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize['DATE']},'talktime':{'type':Sequelize[_0x5d99('0x2')]},'agentacw':{'type':Sequelize[_0x5d99('0x4')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0x5d99('0x2')]},'reason':{'type':Sequelize[_0x5d99('0x1')]},'agentringnoanswer':{'type':Sequelize[_0x5d99('0x4')],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize[_0x5d99('0x3')]},'agentdump':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentdumpAt':{'type':Sequelize[_0x5d99('0x3')]},'lastevent':{'type':Sequelize[_0x5d99('0x1')]},'channel':{'type':Sequelize[_0x5d99('0x1')]},'channelstate':{'type':Sequelize['INTEGER']},'channelstatedesc':{'type':Sequelize[_0x5d99('0x1')]},'connectedlinenum':{'type':Sequelize[_0x5d99('0x1')]},'connectedlinename':{'type':Sequelize[_0x5d99('0x1')]},'language':{'type':Sequelize[_0x5d99('0x1')]},'accountcode':{'type':Sequelize[_0x5d99('0x1')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0x5d99('0x1')]},'priority':{'type':Sequelize[_0x5d99('0x1')]},'destchannel':{'type':Sequelize[_0x5d99('0x1')]},'destchannelstate':{'type':Sequelize[_0x5d99('0x2')]},'destchannelstatedesc':{'type':Sequelize[_0x5d99('0x1')]},'destcalleridnum':{'type':Sequelize['STRING']},'destcalleridname':{'type':Sequelize[_0x5d99('0x1')]},'destconnectedlinenum':{'type':Sequelize[_0x5d99('0x1')]},'destconnectedlinename':{'type':Sequelize[_0x5d99('0x1')]},'destlanguage':{'type':Sequelize['STRING']},'destaccountcode':{'type':Sequelize['STRING']},'destcontext':{'type':Sequelize['STRING']},'destexten':{'type':Sequelize[_0x5d99('0x1')]},'destpriority':{'type':Sequelize[_0x5d99('0x1')]},'destuniqueid':{'type':Sequelize[_0x5d99('0x1')]},'messageId':{'type':Sequelize['STRING']},'inReplyTo':{'type':Sequelize[_0x5d99('0x1')]},'subject':{'type':Sequelize[_0x5d99('0x1')]},'from':{'type':Sequelize['STRING']},'to':{'type':Sequelize[_0x5d99('0x1')]},'cc':{'type':Sequelize[_0x5d99('0x1')]},'attachment':{'type':Sequelize[_0x5d99('0x5')]},'html':{'type':Sequelize['TEXT']},'text':{'type':Sequelize[_0x5d99('0x5')]},'status':{'type':Sequelize[_0x5d99('0x6')](_0x5d99('0x7'),'SENDING',_0x5d99('0x8'),_0x5d99('0x9'))},'url':{'type':Sequelize[_0x5d99('0x1')]},'app':{'type':Sequelize[_0x5d99('0x1')]},'appdata':{'type':Sequelize[_0x5d99('0x1')]},'projectId':{'type':Sequelize[_0x5d99('0x2')]}};
\ No newline at end of file
+var _0x4252=['INTEGER','BOOLEAN','TEXT','ENUM','SENT','SENDING','RECEIVED','FAILED','exports','STRING','DATE'];(function(_0x4817f9,_0x4070d1){var _0x2dcfa6=function(_0x408973){while(--_0x408973){_0x4817f9['push'](_0x4817f9['shift']());}};_0x2dcfa6(++_0x4070d1);}(_0x4252,0x105));var _0x2425=function(_0x151b96,_0x2372f0){_0x151b96=_0x151b96-0x0;var _0x129b8d=_0x4252[_0x151b96];return _0x129b8d;};'use strict';var Sequelize=require('sequelize');module[_0x2425('0x0')]={'integration':{'type':Sequelize['STRING']},'eventChannel':{'type':Sequelize[_0x2425('0x1')]},'exitStatus':{'type':Sequelize[_0x2425('0x1')]},'ticketId':{'type':Sequelize[_0x2425('0x1')]},'integrationId':{'type':Sequelize['INTEGER']},'contacts':{'type':Sequelize[_0x2425('0x1')]},'uniqueid':{'type':Sequelize[_0x2425('0x1')]},'calleridnum':{'type':Sequelize[_0x2425('0x1')]},'calleridname':{'type':Sequelize[_0x2425('0x1')]},'queue':{'type':Sequelize['STRING']},'interface':{'type':Sequelize['STRING']},'membername':{'type':Sequelize[_0x2425('0x1')]},'agentcalledAt':{'type':Sequelize[_0x2425('0x2')]},'agentconnectAt':{'type':Sequelize['DATE']},'holdtime':{'type':Sequelize[_0x2425('0x3')]},'agentcomplete':{'type':Sequelize[_0x2425('0x4')],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize[_0x2425('0x2')]},'talktime':{'type':Sequelize[_0x2425('0x3')]},'agentacw':{'type':Sequelize[_0x2425('0x4')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0x2425('0x3')]},'reason':{'type':Sequelize[_0x2425('0x1')]},'agentringnoanswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize[_0x2425('0x2')]},'agentdump':{'type':Sequelize[_0x2425('0x4')],'defaultValue':![]},'agentdumpAt':{'type':Sequelize['DATE']},'lastevent':{'type':Sequelize[_0x2425('0x1')]},'channel':{'type':Sequelize[_0x2425('0x1')]},'channelstate':{'type':Sequelize[_0x2425('0x3')]},'channelstatedesc':{'type':Sequelize[_0x2425('0x1')]},'connectedlinenum':{'type':Sequelize[_0x2425('0x1')]},'connectedlinename':{'type':Sequelize[_0x2425('0x1')]},'language':{'type':Sequelize[_0x2425('0x1')]},'accountcode':{'type':Sequelize[_0x2425('0x1')]},'context':{'type':Sequelize[_0x2425('0x1')]},'exten':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0x2425('0x1')]},'destchannel':{'type':Sequelize[_0x2425('0x1')]},'destchannelstate':{'type':Sequelize['INTEGER']},'destchannelstatedesc':{'type':Sequelize[_0x2425('0x1')]},'destcalleridnum':{'type':Sequelize[_0x2425('0x1')]},'destcalleridname':{'type':Sequelize[_0x2425('0x1')]},'destconnectedlinenum':{'type':Sequelize[_0x2425('0x1')]},'destconnectedlinename':{'type':Sequelize[_0x2425('0x1')]},'destlanguage':{'type':Sequelize['STRING']},'destaccountcode':{'type':Sequelize[_0x2425('0x1')]},'destcontext':{'type':Sequelize[_0x2425('0x1')]},'destexten':{'type':Sequelize[_0x2425('0x1')]},'destpriority':{'type':Sequelize[_0x2425('0x1')]},'destuniqueid':{'type':Sequelize[_0x2425('0x1')]},'messageId':{'type':Sequelize[_0x2425('0x1')]},'inReplyTo':{'type':Sequelize['STRING']},'subject':{'type':Sequelize[_0x2425('0x1')]},'from':{'type':Sequelize['STRING']},'to':{'type':Sequelize[_0x2425('0x1')]},'cc':{'type':Sequelize[_0x2425('0x1')]},'attachment':{'type':Sequelize[_0x2425('0x5')]},'html':{'type':Sequelize[_0x2425('0x5')]},'text':{'type':Sequelize[_0x2425('0x5')]},'status':{'type':Sequelize[_0x2425('0x6')](_0x2425('0x7'),_0x2425('0x8'),_0x2425('0x9'),_0x2425('0xa'))},'url':{'type':Sequelize[_0x2425('0x1')]},'app':{'type':Sequelize[_0x2425('0x1')]},'appdata':{'type':Sequelize[_0x2425('0x1')]},'projectId':{'type':Sequelize[_0x2425('0x3')]}};
\ No newline at end of file
index 3ee1d0f..b5ebf4a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7137=['../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','count','limit','Content-Range','apply','reject','update','then','error','stack','name','map','rawAttributes','fieldName','type','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','filters','pick','filter','where','merge','VIRTUAL','IntegrationReport','findAll','rows','catch','show','params','include','find','create','body','destroy','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs'];(function(_0x49eed1,_0x334fa0){var _0x51eda0=function(_0x3611a4){while(--_0x3611a4){_0x49eed1['push'](_0x49eed1['shift']());}};_0x51eda0(++_0x334fa0);}(_0x7137,0xc4));var _0x7713=function(_0x11d3bc,_0x46a8b2){_0x11d3bc=_0x11d3bc-0x0;var _0x114a67=_0x7137[_0x11d3bc];return _0x114a67;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7713('0x0'));var zipdir=require(_0x7713('0x1'));var jsonpatch=require(_0x7713('0x2'));var rp=require(_0x7713('0x3'));var moment=require(_0x7713('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x7713('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0x7713('0x6'));var ejs=require(_0x7713('0x7'));var fs=require('fs');var fs_extra=require(_0x7713('0x8'));var _=require(_0x7713('0x9'));var squel=require(_0x7713('0xa'));var crypto=require(_0x7713('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x7713('0xc'));var toCsv=require(_0x7713('0x6'));var querystring=require(_0x7713('0xd'));var Papa=require('papaparse');var Redis=require(_0x7713('0xe'));var authService=require(_0x7713('0xf'));var qs=require(_0x7713('0x10'));var as=require(_0x7713('0x11'));var hardwareService=require(_0x7713('0x12'));var logger=require(_0x7713('0x13'))('api');var utils=require(_0x7713('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x7713('0x15'));var db=require(_0x7713('0x16'))['db'];function respondWithStatusCode(_0x30112c,_0x5ad748){_0x5ad748=_0x5ad748||0xcc;return function(_0x4ff6a7){if(_0x4ff6a7){return _0x30112c[_0x7713('0x17')](_0x5ad748);}return _0x30112c['status'](_0x5ad748)[_0x7713('0x18')]();};}function respondWithResult(_0xbfa2f9,_0x45073d){_0x45073d=_0x45073d||0xc8;return function(_0x4cb0ee){if(_0x4cb0ee){return _0xbfa2f9[_0x7713('0x19')](_0x45073d)[_0x7713('0x1a')](_0x4cb0ee);}};}function respondWithFilteredResult(_0x5b632f,_0x55358d){return function(_0xddc3c2){if(_0xddc3c2){var _0x5d6b3d=typeof _0x55358d[_0x7713('0x1b')]===_0x7713('0x1c')&&typeof _0x55358d['limit']==='undefined';var _0x593733=_0xddc3c2['count'];var _0x272fd8=_0x5d6b3d?0x0:_0x55358d[_0x7713('0x1b')];var _0x312877=_0x5d6b3d?_0xddc3c2[_0x7713('0x1d')]:_0x55358d[_0x7713('0x1b')]+_0x55358d[_0x7713('0x1e')];var _0x3f264b;if(_0x312877>=_0x593733){_0x312877=_0x593733;_0x3f264b=0xc8;}else{_0x3f264b=0xce;}_0x5b632f[_0x7713('0x19')](_0x3f264b);return _0x5b632f['set'](_0x7713('0x1f'),_0x272fd8+'-'+_0x312877+'/'+_0x593733)[_0x7713('0x1a')](_0xddc3c2);}return null;};}function patchUpdates(_0x401c74){return function(_0x3f9c7c){try{jsonpatch[_0x7713('0x20')](_0x3f9c7c,_0x401c74,!![]);}catch(_0x546051){return BPromise[_0x7713('0x21')](_0x546051);}return _0x3f9c7c['save']();};}function saveUpdates(_0x247312,_0xfad84){return function(_0x27a7e3){if(_0x27a7e3){return _0x27a7e3[_0x7713('0x22')](_0x247312)[_0x7713('0x23')](function(_0xbf94eb){return _0xbf94eb;});}return null;};}function removeEntity(_0x1d639d,_0x2c3915){return function(_0x3889d2){if(_0x3889d2){return _0x3889d2['destroy']()[_0x7713('0x23')](function(){_0x1d639d[_0x7713('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x357500,_0x21960c){return function(_0x400247){if(!_0x400247){_0x357500[_0x7713('0x17')](0x194);}return _0x400247;};}function handleError(_0x377b56,_0x4dbd38){_0x4dbd38=_0x4dbd38||0x1f4;return function(_0x5c5f81){logger[_0x7713('0x24')](_0x5c5f81[_0x7713('0x25')]);if(_0x5c5f81[_0x7713('0x26')]){delete _0x5c5f81['name'];}_0x377b56[_0x7713('0x19')](_0x4dbd38)['send'](_0x5c5f81);};}exports['index']=function(_0xcbc0c3,_0x512940){var _0x3638c9={},_0x2da272={},_0x46109d={'count':0x0,'rows':[]};var _0x5307c7=_[_0x7713('0x27')](db['IntegrationReport'][_0x7713('0x28')],function(_0xd0bf00){return{'name':_0xd0bf00[_0x7713('0x29')],'type':_0xd0bf00[_0x7713('0x2a')]['key']};});_0x2da272[_0x7713('0x2b')]=_[_0x7713('0x27')](_0x5307c7,_0x7713('0x26'));_0x2da272['query']=_[_0x7713('0x2c')](_0xcbc0c3[_0x7713('0x2d')]);_0x2da272['filters']=_[_0x7713('0x2e')](_0x2da272[_0x7713('0x2b')],_0x2da272[_0x7713('0x2d')]);_0x3638c9[_0x7713('0x2f')]=_['intersection'](_0x2da272[_0x7713('0x2b')],qs[_0x7713('0x30')](_0xcbc0c3[_0x7713('0x2d')][_0x7713('0x30')]));_0x3638c9[_0x7713('0x2f')]=_0x3638c9[_0x7713('0x2f')][_0x7713('0x31')]?_0x3638c9[_0x7713('0x2f')]:_0x2da272['model'];if(!_0xcbc0c3['query'][_0x7713('0x32')](_0x7713('0x33'))){_0x3638c9[_0x7713('0x1e')]=qs[_0x7713('0x1e')](_0xcbc0c3[_0x7713('0x2d')][_0x7713('0x1e')]);_0x3638c9['offset']=qs[_0x7713('0x1b')](_0xcbc0c3['query'][_0x7713('0x1b')]);}_0x3638c9['order']=qs['sort'](_0xcbc0c3[_0x7713('0x2d')][_0x7713('0x34')]);_0x3638c9['where']=qs[_0x7713('0x35')](_[_0x7713('0x36')](_0xcbc0c3['query'],_0x2da272[_0x7713('0x35')]),_0x5307c7);if(_0xcbc0c3[_0x7713('0x2d')][_0x7713('0x37')]){_0x3638c9[_0x7713('0x38')]=_[_0x7713('0x39')](_0x3638c9[_0x7713('0x38')],{'$or':_[_0x7713('0x27')](_0x5307c7,function(_0x5c4797){if(_0x5c4797[_0x7713('0x2a')]!==_0x7713('0x3a')){var _0x1a22b4={};_0x1a22b4[_0x5c4797[_0x7713('0x26')]]={'$like':'%'+_0xcbc0c3[_0x7713('0x2d')][_0x7713('0x37')]+'%'};return _0x1a22b4;}})});}_0x3638c9=_[_0x7713('0x39')]({},_0x3638c9,_0xcbc0c3['options']);var _0x35bb1a={'where':_0x3638c9[_0x7713('0x38')]};return db['IntegrationReport'][_0x7713('0x1d')](_0x35bb1a)[_0x7713('0x23')](function(_0x1d4614){_0x46109d['count']=_0x1d4614;if(_0xcbc0c3[_0x7713('0x2d')]['includeAll']){_0x3638c9['include']=[{'all':!![]}];}return db[_0x7713('0x3b')][_0x7713('0x3c')](_0x3638c9);})[_0x7713('0x23')](function(_0x309569){_0x46109d[_0x7713('0x3d')]=_0x309569;return _0x46109d;})[_0x7713('0x23')](respondWithFilteredResult(_0x512940,_0x3638c9))[_0x7713('0x3e')](handleError(_0x512940,null));};exports[_0x7713('0x3f')]=function(_0x3ff478,_0xd415d3){var _0x19e6ce={'raw':![],'where':{'id':_0x3ff478[_0x7713('0x40')]['id']}},_0x2f3a4c={};_0x2f3a4c['model']=_['keys'](db[_0x7713('0x3b')][_0x7713('0x28')]);_0x2f3a4c['query']=_['keys'](_0x3ff478[_0x7713('0x2d')]);_0x2f3a4c[_0x7713('0x35')]=_[_0x7713('0x2e')](_0x2f3a4c[_0x7713('0x2b')],_0x2f3a4c[_0x7713('0x2d')]);_0x19e6ce[_0x7713('0x2f')]=_[_0x7713('0x2e')](_0x2f3a4c[_0x7713('0x2b')],qs[_0x7713('0x30')](_0x3ff478[_0x7713('0x2d')]['fields']));_0x19e6ce[_0x7713('0x2f')]=_0x19e6ce['attributes'][_0x7713('0x31')]?_0x19e6ce[_0x7713('0x2f')]:_0x2f3a4c[_0x7713('0x2b')];if(_0x3ff478[_0x7713('0x2d')]['includeAll']){_0x19e6ce[_0x7713('0x41')]=[{'all':!![]}];}_0x19e6ce=_[_0x7713('0x39')]({},_0x19e6ce,_0x3ff478['options']);return db[_0x7713('0x3b')][_0x7713('0x42')](_0x19e6ce)[_0x7713('0x23')](handleEntityNotFound(_0xd415d3,null))[_0x7713('0x23')](respondWithResult(_0xd415d3,null))['catch'](handleError(_0xd415d3,null));};exports[_0x7713('0x43')]=function(_0x7bf9da,_0x38dab0){return db[_0x7713('0x3b')]['create'](_0x7bf9da[_0x7713('0x44')],{})[_0x7713('0x23')](respondWithResult(_0x38dab0,0xc9))[_0x7713('0x3e')](handleError(_0x38dab0,null));};exports['update']=function(_0x3d4253,_0x2af062){if(_0x3d4253[_0x7713('0x44')]['id']){delete _0x3d4253['body']['id'];}return db['IntegrationReport'][_0x7713('0x42')]({'where':{'id':_0x3d4253[_0x7713('0x40')]['id']}})['then'](handleEntityNotFound(_0x2af062,null))[_0x7713('0x23')](saveUpdates(_0x3d4253[_0x7713('0x44')],null))[_0x7713('0x23')](respondWithResult(_0x2af062,null))[_0x7713('0x3e')](handleError(_0x2af062,null));};exports[_0x7713('0x45')]=function(_0x3489cf,_0x5497e9){return db[_0x7713('0x3b')][_0x7713('0x42')]({'where':{'id':_0x3489cf[_0x7713('0x40')]['id']}})[_0x7713('0x23')](handleEntityNotFound(_0x5497e9,null))[_0x7713('0x23')](removeEntity(_0x5497e9,null))['catch'](handleError(_0x5497e9,null));};exports[_0x7713('0x46')]=function(_0x15c160,_0x427c11){return db['IntegrationReport'][_0x7713('0x46')]()[_0x7713('0x23')](respondWithResult(_0x427c11,null))[_0x7713('0x3e')](handleError(_0x427c11,null));};
\ No newline at end of file
+var _0xfe5f=['IntegrationReport','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','pick','filter','where','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','find','create','body','update','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','json','undefined','limit','count','offset','Content-Range','apply','reject','save','then','destroy','end','name','send','index'];(function(_0xd2effe,_0x1ac251){var _0x11c610=function(_0x711bbc){while(--_0x711bbc){_0xd2effe['push'](_0xd2effe['shift']());}};_0x11c610(++_0x1ac251);}(_0xfe5f,0x15e));var _0xffe5=function(_0x54c878,_0xd655ad){_0x54c878=_0x54c878-0x0;var _0x3dc181=_0xfe5f[_0x54c878];return _0x3dc181;};'use strict';var emlformat=require(_0xffe5('0x0'));var rimraf=require(_0xffe5('0x1'));var zipdir=require(_0xffe5('0x2'));var jsonpatch=require(_0xffe5('0x3'));var rp=require(_0xffe5('0x4'));var moment=require(_0xffe5('0x5'));var BPromise=require(_0xffe5('0x6'));var Mustache=require(_0xffe5('0x7'));var util=require(_0xffe5('0x8'));var path=require(_0xffe5('0x9'));var sox=require(_0xffe5('0xa'));var csv=require(_0xffe5('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xffe5('0xc'));var _=require(_0xffe5('0xd'));var squel=require(_0xffe5('0xe'));var crypto=require('crypto');var jsforce=require(_0xffe5('0xf'));var deskjs=require(_0xffe5('0x10'));var toCsv=require(_0xffe5('0xb'));var querystring=require(_0xffe5('0x11'));var Papa=require(_0xffe5('0x12'));var Redis=require(_0xffe5('0x13'));var authService=require(_0xffe5('0x14'));var qs=require(_0xffe5('0x15'));var as=require(_0xffe5('0x16'));var hardwareService=require(_0xffe5('0x17'));var logger=require(_0xffe5('0x18'))(_0xffe5('0x19'));var utils=require(_0xffe5('0x1a'));var config=require('../../config/environment');var licenseUtil=require(_0xffe5('0x1b'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2051b6,_0x372770){_0x372770=_0x372770||0xcc;return function(_0x43c312){if(_0x43c312){return _0x2051b6[_0xffe5('0x1c')](_0x372770);}return _0x2051b6[_0xffe5('0x1d')](_0x372770)['end']();};}function respondWithResult(_0x545d1e,_0x8e24f4){_0x8e24f4=_0x8e24f4||0xc8;return function(_0x5cb2ec){if(_0x5cb2ec){return _0x545d1e['status'](_0x8e24f4)[_0xffe5('0x1e')](_0x5cb2ec);}};}function respondWithFilteredResult(_0x38bf02,_0x25d419){return function(_0x514f46){if(_0x514f46){var _0x20379e=typeof _0x25d419['offset']===_0xffe5('0x1f')&&typeof _0x25d419[_0xffe5('0x20')]==='undefined';var _0x17c6d8=_0x514f46[_0xffe5('0x21')];var _0x19db64=_0x20379e?0x0:_0x25d419['offset'];var _0x1179cd=_0x20379e?_0x514f46[_0xffe5('0x21')]:_0x25d419[_0xffe5('0x22')]+_0x25d419['limit'];var _0x3450d5;if(_0x1179cd>=_0x17c6d8){_0x1179cd=_0x17c6d8;_0x3450d5=0xc8;}else{_0x3450d5=0xce;}_0x38bf02[_0xffe5('0x1d')](_0x3450d5);return _0x38bf02['set'](_0xffe5('0x23'),_0x19db64+'-'+_0x1179cd+'/'+_0x17c6d8)['json'](_0x514f46);}return null;};}function patchUpdates(_0x52ca83){return function(_0x4baecc){try{jsonpatch[_0xffe5('0x24')](_0x4baecc,_0x52ca83,!![]);}catch(_0x35ffc6){return BPromise[_0xffe5('0x25')](_0x35ffc6);}return _0x4baecc[_0xffe5('0x26')]();};}function saveUpdates(_0x27136a,_0x4a0cf6){return function(_0x35f8ba){if(_0x35f8ba){return _0x35f8ba['update'](_0x27136a)[_0xffe5('0x27')](function(_0x14455d){return _0x14455d;});}return null;};}function removeEntity(_0x4c9d63,_0x10e837){return function(_0x3c4b61){if(_0x3c4b61){return _0x3c4b61[_0xffe5('0x28')]()[_0xffe5('0x27')](function(){_0x4c9d63[_0xffe5('0x1d')](0xcc)[_0xffe5('0x29')]();});}};}function handleEntityNotFound(_0x422816,_0x136219){return function(_0x138ed3){if(!_0x138ed3){_0x422816[_0xffe5('0x1c')](0x194);}return _0x138ed3;};}function handleError(_0x342c75,_0x22ed84){_0x22ed84=_0x22ed84||0x1f4;return function(_0x25f599){logger['error'](_0x25f599['stack']);if(_0x25f599[_0xffe5('0x2a')]){delete _0x25f599[_0xffe5('0x2a')];}_0x342c75['status'](_0x22ed84)[_0xffe5('0x2b')](_0x25f599);};}exports[_0xffe5('0x2c')]=function(_0x392bd1,_0x55f4be){var _0x2ba110={},_0x1e8d28={},_0x21dc22={'count':0x0,'rows':[]};var _0x354942=_['map'](db[_0xffe5('0x2d')]['rawAttributes'],function(_0x348112){return{'name':_0x348112[_0xffe5('0x2e')],'type':_0x348112[_0xffe5('0x2f')][_0xffe5('0x30')]};});_0x1e8d28[_0xffe5('0x31')]=_[_0xffe5('0x32')](_0x354942,'name');_0x1e8d28[_0xffe5('0x33')]=_[_0xffe5('0x34')](_0x392bd1[_0xffe5('0x33')]);_0x1e8d28[_0xffe5('0x35')]=_[_0xffe5('0x36')](_0x1e8d28[_0xffe5('0x31')],_0x1e8d28[_0xffe5('0x33')]);_0x2ba110[_0xffe5('0x37')]=_[_0xffe5('0x36')](_0x1e8d28[_0xffe5('0x31')],qs[_0xffe5('0x38')](_0x392bd1[_0xffe5('0x33')][_0xffe5('0x38')]));_0x2ba110[_0xffe5('0x37')]=_0x2ba110[_0xffe5('0x37')][_0xffe5('0x39')]?_0x2ba110[_0xffe5('0x37')]:_0x1e8d28[_0xffe5('0x31')];if(!_0x392bd1[_0xffe5('0x33')][_0xffe5('0x3a')]('nolimit')){_0x2ba110[_0xffe5('0x20')]=qs['limit'](_0x392bd1['query'][_0xffe5('0x20')]);_0x2ba110[_0xffe5('0x22')]=qs[_0xffe5('0x22')](_0x392bd1[_0xffe5('0x33')][_0xffe5('0x22')]);}_0x2ba110[_0xffe5('0x3b')]=qs[_0xffe5('0x3c')](_0x392bd1[_0xffe5('0x33')][_0xffe5('0x3c')]);_0x2ba110['where']=qs[_0xffe5('0x35')](_[_0xffe5('0x3d')](_0x392bd1[_0xffe5('0x33')],_0x1e8d28['filters']),_0x354942);if(_0x392bd1[_0xffe5('0x33')][_0xffe5('0x3e')]){_0x2ba110['where']=_['merge'](_0x2ba110[_0xffe5('0x3f')],{'$or':_['map'](_0x354942,function(_0x1f31af){if(_0x1f31af['type']!==_0xffe5('0x40')){var _0x8f7f43={};_0x8f7f43[_0x1f31af[_0xffe5('0x2a')]]={'$like':'%'+_0x392bd1[_0xffe5('0x33')]['filter']+'%'};return _0x8f7f43;}})});}_0x2ba110=_[_0xffe5('0x41')]({},_0x2ba110,_0x392bd1[_0xffe5('0x42')]);var _0xf5c067={'where':_0x2ba110['where']};return db['IntegrationReport'][_0xffe5('0x21')](_0xf5c067)[_0xffe5('0x27')](function(_0x1af688){_0x21dc22['count']=_0x1af688;if(_0x392bd1[_0xffe5('0x33')][_0xffe5('0x43')]){_0x2ba110[_0xffe5('0x44')]=[{'all':!![]}];}return db['IntegrationReport'][_0xffe5('0x45')](_0x2ba110);})[_0xffe5('0x27')](function(_0x5ea32c){_0x21dc22[_0xffe5('0x46')]=_0x5ea32c;return _0x21dc22;})[_0xffe5('0x27')](respondWithFilteredResult(_0x55f4be,_0x2ba110))[_0xffe5('0x47')](handleError(_0x55f4be,null));};exports[_0xffe5('0x48')]=function(_0x1e4e57,_0x37fdb6){var _0xd38fca={'raw':![],'where':{'id':_0x1e4e57['params']['id']}},_0x590f5e={};_0x590f5e[_0xffe5('0x31')]=_[_0xffe5('0x34')](db[_0xffe5('0x2d')]['rawAttributes']);_0x590f5e[_0xffe5('0x33')]=_[_0xffe5('0x34')](_0x1e4e57[_0xffe5('0x33')]);_0x590f5e[_0xffe5('0x35')]=_['intersection'](_0x590f5e['model'],_0x590f5e[_0xffe5('0x33')]);_0xd38fca[_0xffe5('0x37')]=_[_0xffe5('0x36')](_0x590f5e[_0xffe5('0x31')],qs[_0xffe5('0x38')](_0x1e4e57['query'][_0xffe5('0x38')]));_0xd38fca[_0xffe5('0x37')]=_0xd38fca[_0xffe5('0x37')]['length']?_0xd38fca[_0xffe5('0x37')]:_0x590f5e['model'];if(_0x1e4e57[_0xffe5('0x33')]['includeAll']){_0xd38fca['include']=[{'all':!![]}];}_0xd38fca=_['merge']({},_0xd38fca,_0x1e4e57[_0xffe5('0x42')]);return db[_0xffe5('0x2d')][_0xffe5('0x49')](_0xd38fca)[_0xffe5('0x27')](handleEntityNotFound(_0x37fdb6,null))[_0xffe5('0x27')](respondWithResult(_0x37fdb6,null))[_0xffe5('0x47')](handleError(_0x37fdb6,null));};exports['create']=function(_0x39b3eb,_0x57a603){return db[_0xffe5('0x2d')][_0xffe5('0x4a')](_0x39b3eb[_0xffe5('0x4b')],{})[_0xffe5('0x27')](respondWithResult(_0x57a603,0xc9))[_0xffe5('0x47')](handleError(_0x57a603,null));};exports[_0xffe5('0x4c')]=function(_0x311746,_0x346289){if(_0x311746[_0xffe5('0x4b')]['id']){delete _0x311746['body']['id'];}return db[_0xffe5('0x2d')]['find']({'where':{'id':_0x311746[_0xffe5('0x4d')]['id']}})['then'](handleEntityNotFound(_0x346289,null))[_0xffe5('0x27')](saveUpdates(_0x311746[_0xffe5('0x4b')],null))[_0xffe5('0x27')](respondWithResult(_0x346289,null))['catch'](handleError(_0x346289,null));};exports[_0xffe5('0x28')]=function(_0x5cf820,_0x1b1913){return db[_0xffe5('0x2d')][_0xffe5('0x49')]({'where':{'id':_0x5cf820[_0xffe5('0x4d')]['id']}})[_0xffe5('0x27')](handleEntityNotFound(_0x1b1913,null))[_0xffe5('0x27')](removeEntity(_0x1b1913,null))['catch'](handleError(_0x1b1913,null));};exports[_0xffe5('0x4e')]=function(_0x4b4706,_0x5ed55c){return db[_0xffe5('0x2d')][_0xffe5('0x4e')]()['then'](respondWithResult(_0x5ed55c,null))[_0xffe5('0x47')](handleError(_0x5ed55c,null));};
\ No newline at end of file
index d81fba4..87c86c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf0e=['request-promise','path','rimraf','../../config/environment','./integrationReport.attributes','exports','define','IntegrationReport','report_integration','lodash','util','api','moment'];(function(_0x1da558,_0x14c9d8){var _0x5b7c3e=function(_0x1bb0fa){while(--_0x1bb0fa){_0x1da558['push'](_0x1da558['shift']());}};_0x5b7c3e(++_0x14c9d8);}(_0xbf0e,0xa5));var _0xebf0=function(_0x14d7d9,_0x440f9b){_0x14d7d9=_0x14d7d9-0x0;var _0x4f0c52=_0xbf0e[_0x14d7d9];return _0x4f0c52;};'use strict';var _=require(_0xebf0('0x0'));var util=require(_0xebf0('0x1'));var logger=require('../../config/logger')(_0xebf0('0x2'));var moment=require(_0xebf0('0x3'));var BPromise=require('bluebird');var rp=require(_0xebf0('0x4'));var fs=require('fs');var path=require(_0xebf0('0x5'));var rimraf=require(_0xebf0('0x6'));var config=require(_0xebf0('0x7'));var attributes=require(_0xebf0('0x8'));module[_0xebf0('0x9')]=function(_0x39185e,_0x38c02f){return _0x39185e[_0xebf0('0xa')](_0xebf0('0xb'),attributes,{'tableName':_0xebf0('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1d3f=['util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./integrationReport.attributes','exports','define','report_integration'];(function(_0x32acfd,_0x7d216d){var _0x5820d7=function(_0x262a01){while(--_0x262a01){_0x32acfd['push'](_0x32acfd['shift']());}};_0x5820d7(++_0x7d216d);}(_0x1d3f,0x1a4));var _0xf1d3=function(_0x8153ce,_0xcb6429){_0x8153ce=_0x8153ce-0x0;var _0x3294bc=_0x1d3f[_0x8153ce];return _0x3294bc;};'use strict';var _=require('lodash');var util=require(_0xf1d3('0x0'));var logger=require(_0xf1d3('0x1'))('api');var moment=require(_0xf1d3('0x2'));var BPromise=require(_0xf1d3('0x3'));var rp=require(_0xf1d3('0x4'));var fs=require('fs');var path=require(_0xf1d3('0x5'));var rimraf=require(_0xf1d3('0x6'));var config=require(_0xf1d3('0x7'));var attributes=require(_0xf1d3('0x8'));module[_0xf1d3('0x9')]=function(_0x168307,_0x573bb3){return _0x168307[_0xf1d3('0xa')]('IntegrationReport',attributes,{'tableName':_0xf1d3('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 549acb2..a5fa1e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda19=['error','message','info','result','util','moment','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','IntegrationReport,\x20%s,\x20%s','request\x20sent','debug','IntegrationReport,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x4016aa,_0x50d0fe){var _0x15815e=function(_0x325597){while(--_0x325597){_0x4016aa['push'](_0x4016aa['shift']());}};_0x15815e(++_0x50d0fe);}(_0xda19,0xd5));var _0x9da1=function(_0x52635a,_0x5da3c0){_0x52635a=_0x52635a-0x0;var _0xdac9dc=_0xda19[_0x52635a];return _0xdac9dc;};'use strict';var _=require('lodash');var util=require(_0x9da1('0x0'));var moment=require(_0x9da1('0x1'));var BPromise=require('bluebird');var rs=require(_0x9da1('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9da1('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x9da1('0x4'))(_0x9da1('0x5'));var config=require(_0x9da1('0x6'));var jayson=require(_0x9da1('0x7'));var client=jayson[_0x9da1('0x8')][_0x9da1('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x23e4f7,_0x2c3cdd,_0x1c24e6){return new BPromise(function(_0x5e2d18,_0x47df89){return client['request'](_0x23e4f7,_0x1c24e6)['then'](function(_0x417312){logger['info'](_0x9da1('0xa'),_0x2c3cdd,_0x9da1('0xb'));logger[_0x9da1('0xc')](_0x9da1('0xd'),_0x2c3cdd,_0x9da1('0xb'),JSON[_0x9da1('0xe')](_0x417312));if(_0x417312[_0x9da1('0xf')]){if(_0x417312['error']['code']===0x1f4){logger[_0x9da1('0xf')]('IntegrationReport,\x20%s,\x20%s',_0x2c3cdd,_0x417312[_0x9da1('0xf')][_0x9da1('0x10')]);return _0x47df89(_0x417312[_0x9da1('0xf')][_0x9da1('0x10')]);}logger['error'](_0x9da1('0xa'),_0x2c3cdd,_0x417312['error']['message']);return _0x5e2d18(_0x417312[_0x9da1('0xf')]['message']);}else{logger[_0x9da1('0x11')](_0x9da1('0xa'),_0x2c3cdd,_0x9da1('0xb'));_0x5e2d18(_0x417312[_0x9da1('0x12')][_0x9da1('0x10')]);}})['catch'](function(_0x16f75a){logger[_0x9da1('0xf')](_0x9da1('0xa'),_0x2c3cdd,_0x16f75a);_0x47df89(_0x16f75a);});});}
\ No newline at end of file
+var _0xc4aa=['moment','bluebird','randomstring','ioredis','rpc','../../config/environment','jayson/promise','client','http','request','then','IntegrationReport,\x20%s,\x20%s','request\x20sent','debug','error','code','message','info','catch','lodash','util'];(function(_0x248f36,_0x5ba700){var _0x7cf823=function(_0x1dc166){while(--_0x1dc166){_0x248f36['push'](_0x248f36['shift']());}};_0x7cf823(++_0x5ba700);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xc4aa[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0xac4a('0x0'));var util=require(_0xac4a('0x1'));var moment=require(_0xac4a('0x2'));var BPromise=require(_0xac4a('0x3'));var rs=require(_0xac4a('0x4'));var fs=require('fs');var Redis=require(_0xac4a('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xac4a('0x6'));var config=require(_0xac4a('0x7'));var jayson=require(_0xac4a('0x8'));var client=jayson[_0xac4a('0x9')][_0xac4a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x15cd34,_0x3ef77c,_0x10525b){return new BPromise(function(_0x5c6179,_0x5b8339){return client[_0xac4a('0xb')](_0x15cd34,_0x10525b)[_0xac4a('0xc')](function(_0x26ec84){logger['info'](_0xac4a('0xd'),_0x3ef77c,_0xac4a('0xe'));logger[_0xac4a('0xf')]('IntegrationReport,\x20%s,\x20%s,\x20%s',_0x3ef77c,_0xac4a('0xe'),JSON['stringify'](_0x26ec84));if(_0x26ec84[_0xac4a('0x10')]){if(_0x26ec84['error'][_0xac4a('0x11')]===0x1f4){logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x26ec84['error'][_0xac4a('0x12')]);return _0x5b8339(_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);}logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);return _0x5c6179(_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);}else{logger[_0xac4a('0x13')](_0xac4a('0xd'),_0x3ef77c,_0xac4a('0xe'));_0x5c6179(_0x26ec84['result'][_0xac4a('0x12')]);}})[_0xac4a('0x14')](function(_0x23eb66){logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x23eb66);_0x5b8339(_0x23eb66);});});}
\ No newline at end of file
index e5ecf44..21d98eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x65f9=['/:id','show','/:id/sub_intervals','getIntervals','post','create','addInterval','/:id/sub_intervals/create_many','addIntervals','put','delete','destroy','exports','multer','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./interval.controller','get','isAuthenticated','index'];(function(_0x216b5f,_0x459043){var _0x4ca9bd=function(_0x4f0428){while(--_0x4f0428){_0x216b5f['push'](_0x216b5f['shift']());}};_0x4ca9bd(++_0x459043);}(_0x65f9,0x19d));var _0x965f=function(_0x12d92a,_0x4c65fc){_0x12d92a=_0x12d92a-0x0;var _0x1c7657=_0x65f9[_0x12d92a];return _0x1c7657;};'use strict';var multer=require(_0x965f('0x0'));var util=require(_0x965f('0x1'));var path=require(_0x965f('0x2'));var timeout=require(_0x965f('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x965f('0x4'));var auth=require(_0x965f('0x5'));var interaction=require(_0x965f('0x6'));var config=require(_0x965f('0x7'));var controller=require(_0x965f('0x8'));router[_0x965f('0x9')]('/',auth[_0x965f('0xa')](),controller[_0x965f('0xb')]);router[_0x965f('0x9')](_0x965f('0xc'),auth[_0x965f('0xa')](),controller[_0x965f('0xd')]);router['get'](_0x965f('0xe'),auth[_0x965f('0xa')](),controller[_0x965f('0xf')]);router[_0x965f('0x10')]('/',auth['isAuthenticated'](),controller[_0x965f('0x11')]);router[_0x965f('0x10')](_0x965f('0xe'),auth[_0x965f('0xa')](),controller[_0x965f('0x12')]);router[_0x965f('0x10')](_0x965f('0x13'),auth[_0x965f('0xa')](),controller[_0x965f('0x14')]);router[_0x965f('0x15')](_0x965f('0xc'),auth[_0x965f('0xa')](),controller['update']);router[_0x965f('0x16')]('/:id',auth[_0x965f('0xa')](),controller[_0x965f('0x17')]);module[_0x965f('0x18')]=router;
\ No newline at end of file
+var _0x15c6=['exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','get','isAuthenticated','index','/:id','show','post','create','addInterval','/:id/sub_intervals/create_many','delete','destroy'];(function(_0x33fa36,_0x25c064){var _0x9ab83b=function(_0x2df16f){while(--_0x2df16f){_0x33fa36['push'](_0x33fa36['shift']());}};_0x9ab83b(++_0x25c064);}(_0x15c6,0x1cd));var _0x615c=function(_0x1c08f6,_0x14c077){_0x1c08f6=_0x1c08f6-0x0;var _0xbc156a=_0x15c6[_0x1c08f6];return _0xbc156a;};'use strict';var multer=require(_0x615c('0x0'));var util=require(_0x615c('0x1'));var path=require(_0x615c('0x2'));var timeout=require(_0x615c('0x3'));var express=require(_0x615c('0x4'));var router=express[_0x615c('0x5')]();var fs_extra=require(_0x615c('0x6'));var auth=require(_0x615c('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./interval.controller');router[_0x615c('0x8')]('/',auth[_0x615c('0x9')](),controller[_0x615c('0xa')]);router['get'](_0x615c('0xb'),auth[_0x615c('0x9')](),controller[_0x615c('0xc')]);router[_0x615c('0x8')]('/:id/sub_intervals',auth[_0x615c('0x9')](),controller['getIntervals']);router[_0x615c('0xd')]('/',auth[_0x615c('0x9')](),controller[_0x615c('0xe')]);router[_0x615c('0xd')]('/:id/sub_intervals',auth['isAuthenticated'](),controller[_0x615c('0xf')]);router[_0x615c('0xd')](_0x615c('0x10'),auth[_0x615c('0x9')](),controller['addIntervals']);router['put'](_0x615c('0xb'),auth[_0x615c('0x9')](),controller['update']);router[_0x615c('0x11')]('/:id',auth['isAuthenticated'](),controller[_0x615c('0x12')]);module[_0x615c('0x13')]=router;
\ No newline at end of file
index 5c48231..b95ba88 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x64c7=['STRING','sequelize','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x64c7,0xdc));var _0x764c=function(_0x18f64a,_0x1c8248){_0x18f64a=_0x18f64a-0x0;var _0x44687f=_0x64c7[_0x18f64a];return _0x44687f;};'use strict';var Sequelize=require(_0x764c('0x0'));module[_0x764c('0x1')]={'name':{'type':Sequelize[_0x764c('0x2')]},'description':{'type':Sequelize[_0x764c('0x2')]},'interval':{'type':Sequelize[_0x764c('0x2')],'allowNull':!![]}};
\ No newline at end of file
+var _0xa8a4=['exports','STRING'];(function(_0x311403,_0x5ed6a2){var _0x3d1d15=function(_0x28c0d4){while(--_0x28c0d4){_0x311403['push'](_0x311403['shift']());}};_0x3d1d15(++_0x5ed6a2);}(_0xa8a4,0xd2));var _0x4a8a=function(_0x42433b,_0x305e39){_0x42433b=_0x42433b-0x0;var _0xb07e65=_0xa8a4[_0x42433b];return _0xb07e65;};'use strict';var Sequelize=require('sequelize');module[_0x4a8a('0x0')]={'name':{'type':Sequelize[_0x4a8a('0x1')]},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize['STRING'],'allowNull':!![]}};
\ No newline at end of file
index aca1f59..bc86c36 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d8b=['rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/extensions/rewrite','sendStatus','end','json','offset','undefined','count','limit','status','Content-Range','reject','update','destroy','then','get','Intervals','error','stack','name','map','Interval','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','merge','where','VIRTUAL','filter','includeAll','include','rows','catch','show','params','options','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find','addInterval','IntervalId','findOne','getIntervals','addIntervals','sequelize','transaction','bulkCreate','findAll','eml-format'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x6d8b,0x125));var _0xb6d8=function(_0x4ed1d,_0x170a36){_0x4ed1d=_0x4ed1d-0x0;var _0x2d0a69=_0x6d8b[_0x4ed1d];return _0x2d0a69;};'use strict';var emlformat=require(_0xb6d8('0x0'));var rimraf=require(_0xb6d8('0x1'));var zipdir=require(_0xb6d8('0x2'));var jsonpatch=require(_0xb6d8('0x3'));var rp=require(_0xb6d8('0x4'));var moment=require('moment');var BPromise=require(_0xb6d8('0x5'));var Mustache=require(_0xb6d8('0x6'));var util=require(_0xb6d8('0x7'));var path=require(_0xb6d8('0x8'));var sox=require(_0xb6d8('0x9'));var csv=require(_0xb6d8('0xa'));var ejs=require(_0xb6d8('0xb'));var fs=require('fs');var fs_extra=require(_0xb6d8('0xc'));var _=require(_0xb6d8('0xd'));var squel=require(_0xb6d8('0xe'));var crypto=require(_0xb6d8('0xf'));var jsforce=require(_0xb6d8('0x10'));var deskjs=require(_0xb6d8('0x11'));var toCsv=require(_0xb6d8('0xa'));var querystring=require(_0xb6d8('0x12'));var Papa=require(_0xb6d8('0x13'));var Redis=require(_0xb6d8('0x14'));var authService=require(_0xb6d8('0x15'));var qs=require(_0xb6d8('0x16'));var as=require(_0xb6d8('0x17'));var hardwareService=require(_0xb6d8('0x18'));var logger=require(_0xb6d8('0x19'))(_0xb6d8('0x1a'));var utils=require(_0xb6d8('0x1b'));var config=require(_0xb6d8('0x1c'));var licenseUtil=require(_0xb6d8('0x1d'));var db=require(_0xb6d8('0x1e'))['db'];var extensions=require(_0xb6d8('0x1f'));function respondWithStatusCode(_0x11f6e5,_0x37f05f){_0x37f05f=_0x37f05f||0xcc;return function(_0x4573a0){if(_0x4573a0){return _0x11f6e5[_0xb6d8('0x20')](_0x37f05f);}return _0x11f6e5['status'](_0x37f05f)[_0xb6d8('0x21')]();};}function respondWithResult(_0x554bdb,_0x2579c3){_0x2579c3=_0x2579c3||0xc8;return function(_0x33b000){if(_0x33b000){return _0x554bdb['status'](_0x2579c3)[_0xb6d8('0x22')](_0x33b000);}};}function respondWithFilteredResult(_0x2afc5c,_0x38ab80){return function(_0x5a9c5d){if(_0x5a9c5d){var _0x45b928=typeof _0x38ab80[_0xb6d8('0x23')]===_0xb6d8('0x24')&&typeof _0x38ab80['limit']==='undefined';var _0x49635f=_0x5a9c5d[_0xb6d8('0x25')];var _0x4b6b4c=_0x45b928?0x0:_0x38ab80[_0xb6d8('0x23')];var _0x36ab02=_0x45b928?_0x5a9c5d[_0xb6d8('0x25')]:_0x38ab80[_0xb6d8('0x23')]+_0x38ab80[_0xb6d8('0x26')];var _0x3cdc18;if(_0x36ab02>=_0x49635f){_0x36ab02=_0x49635f;_0x3cdc18=0xc8;}else{_0x3cdc18=0xce;}_0x2afc5c[_0xb6d8('0x27')](_0x3cdc18);return _0x2afc5c['set'](_0xb6d8('0x28'),_0x4b6b4c+'-'+_0x36ab02+'/'+_0x49635f)[_0xb6d8('0x22')](_0x5a9c5d);}return null;};}function patchUpdates(_0x25da83){return function(_0x427037){try{jsonpatch['apply'](_0x427037,_0x25da83,!![]);}catch(_0x210720){return BPromise[_0xb6d8('0x29')](_0x210720);}return _0x427037['save']();};}function saveUpdates(_0x7cbef2,_0x456ce6){return function(_0x4c7a8b){if(_0x4c7a8b){return _0x4c7a8b[_0xb6d8('0x2a')](_0x7cbef2)['then'](function(_0x2a0a0b){return _0x2a0a0b;});}return null;};}function removeEntity(_0x50a581,_0xadbe92){return function(_0x3d069a){if(_0x3d069a){return _0x3d069a[_0xb6d8('0x2b')]()[_0xb6d8('0x2c')](function(){var _0x230b88=_0x3d069a[_0xb6d8('0x2d')]({'plain':!![]});var _0x19d589=_0xb6d8('0x2e');return db['UserProfileResource'][_0xb6d8('0x2b')]({'where':{'type':_0x19d589,'resourceId':_0x230b88['id']}})[_0xb6d8('0x2c')](function(){return _0x3d069a;});})['then'](function(){_0x50a581[_0xb6d8('0x27')](0xcc)[_0xb6d8('0x21')]();});}};}function handleEntityNotFound(_0x6fb558,_0x4f193a){return function(_0x5a0edf){if(!_0x5a0edf){_0x6fb558['sendStatus'](0x194);}return _0x5a0edf;};}function handleError(_0x5b38e2,_0x3de3f2){_0x3de3f2=_0x3de3f2||0x1f4;return function(_0x540f3d){logger[_0xb6d8('0x2f')](_0x540f3d[_0xb6d8('0x30')]);if(_0x540f3d[_0xb6d8('0x31')]){delete _0x540f3d[_0xb6d8('0x31')];}_0x5b38e2[_0xb6d8('0x27')](_0x3de3f2)['send'](_0x540f3d);};}exports['index']=function(_0x125615,_0x4a9689){var _0x59a9ca={},_0x4be98e={},_0x39d32a={'count':0x0,'rows':[]};var _0x3e5980=_[_0xb6d8('0x32')](db[_0xb6d8('0x33')][_0xb6d8('0x34')],function(_0x137205){return{'name':_0x137205[_0xb6d8('0x35')],'type':_0x137205[_0xb6d8('0x36')][_0xb6d8('0x37')]};});_0x4be98e['model']=_[_0xb6d8('0x32')](_0x3e5980,_0xb6d8('0x31'));_0x4be98e[_0xb6d8('0x38')]=_[_0xb6d8('0x39')](_0x125615[_0xb6d8('0x38')]);_0x4be98e[_0xb6d8('0x3a')]=_[_0xb6d8('0x3b')](_0x4be98e[_0xb6d8('0x3c')],_0x4be98e['query']);_0x59a9ca[_0xb6d8('0x3d')]=_[_0xb6d8('0x3b')](_0x4be98e[_0xb6d8('0x3c')],qs[_0xb6d8('0x3e')](_0x125615[_0xb6d8('0x38')][_0xb6d8('0x3e')]));_0x59a9ca[_0xb6d8('0x3d')]=_0x59a9ca[_0xb6d8('0x3d')][_0xb6d8('0x3f')]?_0x59a9ca[_0xb6d8('0x3d')]:_0x4be98e[_0xb6d8('0x3c')];if(!_0x125615[_0xb6d8('0x38')][_0xb6d8('0x40')](_0xb6d8('0x41'))){_0x59a9ca['limit']=qs[_0xb6d8('0x26')](_0x125615['query'][_0xb6d8('0x26')]);_0x59a9ca[_0xb6d8('0x23')]=qs[_0xb6d8('0x23')](_0x125615['query']['offset']);}_0x59a9ca[_0xb6d8('0x42')]=qs[_0xb6d8('0x43')](_0x125615[_0xb6d8('0x38')]['sort']);_0x59a9ca['where']=qs[_0xb6d8('0x3a')](_['pick'](_0x125615['query'],_0x4be98e[_0xb6d8('0x3a')]),_0x3e5980);if(_0x125615['query']['filter']){_0x59a9ca['where']=_[_0xb6d8('0x44')](_0x59a9ca[_0xb6d8('0x45')],{'$or':_['map'](_0x3e5980,function(_0x20228f){if(_0x20228f[_0xb6d8('0x36')]!==_0xb6d8('0x46')){var _0x2a7317={};_0x2a7317[_0x20228f['name']]={'$like':'%'+_0x125615[_0xb6d8('0x38')][_0xb6d8('0x47')]+'%'};return _0x2a7317;}})});}_0x59a9ca=_[_0xb6d8('0x44')]({},_0x59a9ca,_0x125615['options']);var _0x36f3ca={'where':_0x59a9ca[_0xb6d8('0x45')]};return db[_0xb6d8('0x33')]['count'](_0x36f3ca)[_0xb6d8('0x2c')](function(_0x474e2e){_0x39d32a[_0xb6d8('0x25')]=_0x474e2e;if(_0x125615[_0xb6d8('0x38')][_0xb6d8('0x48')]){_0x59a9ca[_0xb6d8('0x49')]=[{'all':!![]}];}return db[_0xb6d8('0x33')]['findAll'](_0x59a9ca);})['then'](function(_0x4abc0d){_0x39d32a[_0xb6d8('0x4a')]=_0x4abc0d;return _0x39d32a;})[_0xb6d8('0x2c')](respondWithFilteredResult(_0x4a9689,_0x59a9ca))[_0xb6d8('0x4b')](handleError(_0x4a9689,null));};exports[_0xb6d8('0x4c')]=function(_0x34be6e,_0x221cfd){var _0xaef064={'raw':!![],'where':{'id':_0x34be6e[_0xb6d8('0x4d')]['id']}},_0x409d0d={};_0x409d0d[_0xb6d8('0x3c')]=_[_0xb6d8('0x39')](db[_0xb6d8('0x33')]['rawAttributes']);_0x409d0d[_0xb6d8('0x38')]=_[_0xb6d8('0x39')](_0x34be6e['query']);_0x409d0d[_0xb6d8('0x3a')]=_[_0xb6d8('0x3b')](_0x409d0d[_0xb6d8('0x3c')],_0x409d0d[_0xb6d8('0x38')]);_0xaef064[_0xb6d8('0x3d')]=_[_0xb6d8('0x3b')](_0x409d0d[_0xb6d8('0x3c')],qs[_0xb6d8('0x3e')](_0x34be6e['query']['fields']));_0xaef064[_0xb6d8('0x3d')]=_0xaef064['attributes'][_0xb6d8('0x3f')]?_0xaef064['attributes']:_0x409d0d[_0xb6d8('0x3c')];if(_0x34be6e[_0xb6d8('0x38')][_0xb6d8('0x48')]){_0xaef064[_0xb6d8('0x49')]=[{'all':!![]}];}_0xaef064=_[_0xb6d8('0x44')]({},_0xaef064,_0x34be6e[_0xb6d8('0x4e')]);return db['Interval']['find'](_0xaef064)['then'](handleEntityNotFound(_0x221cfd,null))[_0xb6d8('0x2c')](respondWithResult(_0x221cfd,null))['catch'](handleError(_0x221cfd,null));};exports[_0xb6d8('0x4f')]=function(_0x14b642,_0x48fe55){return db[_0xb6d8('0x33')][_0xb6d8('0x4f')](_0x14b642[_0xb6d8('0x50')],{})[_0xb6d8('0x2c')](function(_0x5dbfd4){var _0x25aa2c=_0x14b642['user'][_0xb6d8('0x2d')]({'plain':!![]});if(!_0x25aa2c)throw new Error(_0xb6d8('0x51'));if(_0x25aa2c['role']===_0xb6d8('0x52')){var _0x449f2a=_0x5dbfd4[_0xb6d8('0x2d')]({'plain':!![]});var _0x4ad3d9=_0xb6d8('0x2e');return db[_0xb6d8('0x53')]['find']({'where':{'name':_0x4ad3d9,'userProfileId':_0x25aa2c[_0xb6d8('0x54')]},'raw':!![]})['then'](function(_0x3e91e2){if(_0x3e91e2&&_0x3e91e2[_0xb6d8('0x55')]===0x0){return db[_0xb6d8('0x56')][_0xb6d8('0x4f')]({'name':_0x449f2a['name'],'resourceId':_0x449f2a['id'],'type':_0x3e91e2[_0xb6d8('0x31')],'sectionId':_0x3e91e2['id']},{})[_0xb6d8('0x2c')](function(){return _0x5dbfd4;});}else{return _0x5dbfd4;}})['catch'](function(_0x218e6f){logger[_0xb6d8('0x2f')](_0xb6d8('0x57'),_0x218e6f);throw _0x218e6f;});}return _0x5dbfd4;})['then'](respondWithResult(_0x48fe55,0xc9))[_0xb6d8('0x4b')](handleError(_0x48fe55,null));};exports['update']=function(_0x5d3ce0,_0x3e1ef0){if(_0x5d3ce0[_0xb6d8('0x50')]['id']){delete _0x5d3ce0['body']['id'];}return db[_0xb6d8('0x33')][_0xb6d8('0x58')]({'where':{'id':_0x5d3ce0[_0xb6d8('0x4d')]['id']}})[_0xb6d8('0x2c')](handleEntityNotFound(_0x3e1ef0,null))[_0xb6d8('0x2c')](saveUpdates(_0x5d3ce0['body'],null))[_0xb6d8('0x2c')](respondWithResult(_0x3e1ef0,null))['catch'](handleError(_0x3e1ef0,null));};exports['destroy']=function(_0x47ae58,_0x888536){return db[_0xb6d8('0x33')][_0xb6d8('0x58')]({'where':{'id':_0x47ae58['params']['id']}})['then'](handleEntityNotFound(_0x888536,null))[_0xb6d8('0x2c')](removeEntity(_0x888536,null))[_0xb6d8('0x4b')](handleError(_0x888536,null));};exports[_0xb6d8('0x59')]=function(_0x55f77c,_0x2becc0,_0x5f0e80){if(_0x55f77c[_0xb6d8('0x50')]['id']){delete _0x55f77c[_0xb6d8('0x50')]['id'];}return db[_0xb6d8('0x33')]['find']({'where':{'id':_0x55f77c[_0xb6d8('0x4d')]['id']}})[_0xb6d8('0x2c')](handleEntityNotFound(_0x2becc0,null))[_0xb6d8('0x2c')](function(_0x8893bf){if(_0x8893bf){_0x55f77c[_0xb6d8('0x50')][_0xb6d8('0x5a')]=_0x8893bf['id'];return db[_0xb6d8('0x33')][_0xb6d8('0x4f')](_0x55f77c[_0xb6d8('0x50')]);}})[_0xb6d8('0x2c')](respondWithResult(_0x2becc0,null))[_0xb6d8('0x4b')](handleError(_0x2becc0,null));};exports['getIntervals']=function(_0x1216ef,_0x462e22,_0x5dcbf7){var _0x2af5a6={};var _0x3ee2e4={};var _0x85fb2a;var _0x1a1885;return db['Interval'][_0xb6d8('0x5b')]({'where':{'id':_0x1216ef[_0xb6d8('0x4d')]['id']}})['then'](handleEntityNotFound(_0x462e22,null))[_0xb6d8('0x2c')](function(_0x443bce){if(_0x443bce){_0x85fb2a=_0x443bce;_0x3ee2e4[_0xb6d8('0x3c')]=_[_0xb6d8('0x39')](db[_0xb6d8('0x33')][_0xb6d8('0x34')]);_0x3ee2e4[_0xb6d8('0x38')]=_[_0xb6d8('0x39')](_0x1216ef['query']);_0x3ee2e4[_0xb6d8('0x3a')]=_[_0xb6d8('0x3b')](_0x3ee2e4['model'],_0x3ee2e4[_0xb6d8('0x38')]);_0x2af5a6[_0xb6d8('0x3d')]=_[_0xb6d8('0x3b')](_0x3ee2e4[_0xb6d8('0x3c')],qs[_0xb6d8('0x3e')](_0x1216ef[_0xb6d8('0x38')][_0xb6d8('0x3e')]));_0x2af5a6[_0xb6d8('0x3d')]=_0x2af5a6[_0xb6d8('0x3d')][_0xb6d8('0x3f')]?_0x2af5a6[_0xb6d8('0x3d')]:_0x3ee2e4[_0xb6d8('0x3c')];_0x2af5a6['order']=qs[_0xb6d8('0x43')](_0x1216ef['query'][_0xb6d8('0x43')]);_0x2af5a6[_0xb6d8('0x45')]=qs[_0xb6d8('0x3a')](_['pick'](_0x1216ef[_0xb6d8('0x38')],_0x3ee2e4[_0xb6d8('0x3a')]));if(_0x1216ef['query'][_0xb6d8('0x47')]){_0x2af5a6[_0xb6d8('0x45')]=_[_0xb6d8('0x44')](_0x2af5a6['where'],{'$or':_[_0xb6d8('0x32')](_0x2af5a6['attributes'],function(_0x5ee293){var _0x4ced79={};_0x4ced79[_0x5ee293]={'$like':'%'+_0x1216ef['query'][_0xb6d8('0x47')]+'%'};return _0x4ced79;})});}_0x2af5a6=_[_0xb6d8('0x44')]({},_0x2af5a6,_0x1216ef[_0xb6d8('0x4e')]);return _0x85fb2a[_0xb6d8('0x5c')](_0x2af5a6);}})['then'](function(_0x31e04d){if(_0x31e04d){_0x1a1885=_0x31e04d[_0xb6d8('0x3f')];if(!_0x1216ef[_0xb6d8('0x38')][_0xb6d8('0x40')](_0xb6d8('0x41'))){_0x2af5a6[_0xb6d8('0x26')]=qs[_0xb6d8('0x26')](_0x1216ef[_0xb6d8('0x38')]['limit']);_0x2af5a6[_0xb6d8('0x23')]=qs[_0xb6d8('0x23')](_0x1216ef[_0xb6d8('0x38')][_0xb6d8('0x23')]);}return _0x85fb2a['getIntervals'](_0x2af5a6);}})[_0xb6d8('0x2c')](function(_0x5d5d11){if(_0x5d5d11){return _0x5d5d11?{'count':_0x1a1885,'rows':_0x5d5d11}:null;}})[_0xb6d8('0x2c')](respondWithResult(_0x462e22,null))[_0xb6d8('0x4b')](handleError(_0x462e22,null));};exports[_0xb6d8('0x5d')]=function(_0x472fd7,_0x43b2d2,_0x19364d){return db[_0xb6d8('0x33')][_0xb6d8('0x5b')]({'where':{'id':_0x472fd7[_0xb6d8('0x4d')]['id']}})[_0xb6d8('0x2c')](handleEntityNotFound(_0x43b2d2,null))['then'](function(_0x3a3ca8){if(_0x3a3ca8){return db[_0xb6d8('0x5e')][_0xb6d8('0x5f')](function(_0xadbe6f){return db[_0xb6d8('0x33')][_0xb6d8('0x2b')]({'where':{'IntervalId':_0x472fd7[_0xb6d8('0x4d')]['id']},'transaction':_0xadbe6f})[_0xb6d8('0x2c')](function(_0x262749){var _0x164f1=_['map'](_0x472fd7[_0xb6d8('0x50')],function(_0x4afc64){delete _0x4afc64['id'];_0x4afc64[_0xb6d8('0x5a')]=_0x472fd7['params']['id'];return _0x4afc64;});return db['Interval'][_0xb6d8('0x60')](_0x164f1,{'transaction':_0xadbe6f});});})[_0xb6d8('0x2c')](function(){return db[_0xb6d8('0x33')][_0xb6d8('0x61')]({'where':{'IntervalId':_0x472fd7[_0xb6d8('0x4d')]['id']}});});}})['then'](respondWithResult(_0x43b2d2,null))[_0xb6d8('0x4b')](handleError(_0x43b2d2,null));};
\ No newline at end of file
+var _0x06b9=['save','destroy','get','Intervals','UserProfileResource','then','error','stack','name','send','index','map','Interval','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','show','params','find','catch','create','user','role','UserProfileSection','userProfileId','autoAssociation','update','body','addInterval','IntervalId','getIntervals','findOne','order','addIntervals','sequelize','transaction','bulkCreate','findAll','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/extensions/rewrite','sendStatus','status','end','json','offset','limit','undefined','count','set','apply'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x06b9,0xff));var _0x906b=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x06b9[_0x321bb2];return _0x9c12ed;};'use strict';var emlformat=require(_0x906b('0x0'));var rimraf=require(_0x906b('0x1'));var zipdir=require(_0x906b('0x2'));var jsonpatch=require(_0x906b('0x3'));var rp=require('request-promise');var moment=require(_0x906b('0x4'));var BPromise=require(_0x906b('0x5'));var Mustache=require(_0x906b('0x6'));var util=require('util');var path=require(_0x906b('0x7'));var sox=require(_0x906b('0x8'));var csv=require(_0x906b('0x9'));var ejs=require(_0x906b('0xa'));var fs=require('fs');var fs_extra=require(_0x906b('0xb'));var _=require('lodash');var squel=require(_0x906b('0xc'));var crypto=require(_0x906b('0xd'));var jsforce=require(_0x906b('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x906b('0x9'));var querystring=require(_0x906b('0xf'));var Papa=require(_0x906b('0x10'));var Redis=require(_0x906b('0x11'));var authService=require(_0x906b('0x12'));var qs=require(_0x906b('0x13'));var as=require(_0x906b('0x14'));var hardwareService=require(_0x906b('0x15'));var logger=require(_0x906b('0x16'))(_0x906b('0x17'));var utils=require(_0x906b('0x18'));var config=require(_0x906b('0x19'));var licenseUtil=require(_0x906b('0x1a'));var db=require(_0x906b('0x1b'))['db'];var extensions=require(_0x906b('0x1c'));function respondWithStatusCode(_0x23c316,_0x5a029a){_0x5a029a=_0x5a029a||0xcc;return function(_0xe16e75){if(_0xe16e75){return _0x23c316[_0x906b('0x1d')](_0x5a029a);}return _0x23c316[_0x906b('0x1e')](_0x5a029a)[_0x906b('0x1f')]();};}function respondWithResult(_0x8e209d,_0x23b488){_0x23b488=_0x23b488||0xc8;return function(_0x4c6af5){if(_0x4c6af5){return _0x8e209d[_0x906b('0x1e')](_0x23b488)[_0x906b('0x20')](_0x4c6af5);}};}function respondWithFilteredResult(_0x7b3dbb,_0x2541c1){return function(_0x190ea6){if(_0x190ea6){var _0x2e883a=typeof _0x2541c1[_0x906b('0x21')]==='undefined'&&typeof _0x2541c1[_0x906b('0x22')]===_0x906b('0x23');var _0x211784=_0x190ea6[_0x906b('0x24')];var _0x2ad8b2=_0x2e883a?0x0:_0x2541c1[_0x906b('0x21')];var _0x125a59=_0x2e883a?_0x190ea6['count']:_0x2541c1[_0x906b('0x21')]+_0x2541c1[_0x906b('0x22')];var _0x56669d;if(_0x125a59>=_0x211784){_0x125a59=_0x211784;_0x56669d=0xc8;}else{_0x56669d=0xce;}_0x7b3dbb['status'](_0x56669d);return _0x7b3dbb[_0x906b('0x25')]('Content-Range',_0x2ad8b2+'-'+_0x125a59+'/'+_0x211784)['json'](_0x190ea6);}return null;};}function patchUpdates(_0x314452){return function(_0x1848fb){try{jsonpatch[_0x906b('0x26')](_0x1848fb,_0x314452,!![]);}catch(_0x2f7a67){return BPromise['reject'](_0x2f7a67);}return _0x1848fb[_0x906b('0x27')]();};}function saveUpdates(_0x400664,_0x89be64){return function(_0x5da5a9){if(_0x5da5a9){return _0x5da5a9['update'](_0x400664)['then'](function(_0x40f3ce){return _0x40f3ce;});}return null;};}function removeEntity(_0x3d159d,_0x2da5b0){return function(_0x562b23){if(_0x562b23){return _0x562b23[_0x906b('0x28')]()['then'](function(){var _0x1686ad=_0x562b23[_0x906b('0x29')]({'plain':!![]});var _0x4c4e2e=_0x906b('0x2a');return db[_0x906b('0x2b')][_0x906b('0x28')]({'where':{'type':_0x4c4e2e,'resourceId':_0x1686ad['id']}})[_0x906b('0x2c')](function(){return _0x562b23;});})[_0x906b('0x2c')](function(){_0x3d159d['status'](0xcc)[_0x906b('0x1f')]();});}};}function handleEntityNotFound(_0x2f5cc7,_0x127c90){return function(_0x187dec){if(!_0x187dec){_0x2f5cc7['sendStatus'](0x194);}return _0x187dec;};}function handleError(_0x30dbb7,_0x2dd421){_0x2dd421=_0x2dd421||0x1f4;return function(_0x305e64){logger[_0x906b('0x2d')](_0x305e64[_0x906b('0x2e')]);if(_0x305e64[_0x906b('0x2f')]){delete _0x305e64['name'];}_0x30dbb7[_0x906b('0x1e')](_0x2dd421)[_0x906b('0x30')](_0x305e64);};}exports[_0x906b('0x31')]=function(_0x269cd2,_0x2acc4c){var _0x5b59a6={},_0x523024={},_0x48b5d0={'count':0x0,'rows':[]};var _0xd6cf59=_[_0x906b('0x32')](db[_0x906b('0x33')][_0x906b('0x34')],function(_0x24bd60){return{'name':_0x24bd60[_0x906b('0x35')],'type':_0x24bd60[_0x906b('0x36')][_0x906b('0x37')]};});_0x523024[_0x906b('0x38')]=_[_0x906b('0x32')](_0xd6cf59,_0x906b('0x2f'));_0x523024[_0x906b('0x39')]=_[_0x906b('0x3a')](_0x269cd2['query']);_0x523024[_0x906b('0x3b')]=_[_0x906b('0x3c')](_0x523024['model'],_0x523024['query']);_0x5b59a6[_0x906b('0x3d')]=_[_0x906b('0x3c')](_0x523024[_0x906b('0x38')],qs[_0x906b('0x3e')](_0x269cd2[_0x906b('0x39')][_0x906b('0x3e')]));_0x5b59a6['attributes']=_0x5b59a6[_0x906b('0x3d')][_0x906b('0x3f')]?_0x5b59a6[_0x906b('0x3d')]:_0x523024[_0x906b('0x38')];if(!_0x269cd2[_0x906b('0x39')][_0x906b('0x40')](_0x906b('0x41'))){_0x5b59a6[_0x906b('0x22')]=qs['limit'](_0x269cd2[_0x906b('0x39')][_0x906b('0x22')]);_0x5b59a6['offset']=qs[_0x906b('0x21')](_0x269cd2[_0x906b('0x39')][_0x906b('0x21')]);}_0x5b59a6['order']=qs[_0x906b('0x42')](_0x269cd2['query'][_0x906b('0x42')]);_0x5b59a6[_0x906b('0x43')]=qs[_0x906b('0x3b')](_[_0x906b('0x44')](_0x269cd2[_0x906b('0x39')],_0x523024['filters']),_0xd6cf59);if(_0x269cd2['query'][_0x906b('0x45')]){_0x5b59a6[_0x906b('0x43')]=_[_0x906b('0x46')](_0x5b59a6[_0x906b('0x43')],{'$or':_[_0x906b('0x32')](_0xd6cf59,function(_0x24cadf){if(_0x24cadf[_0x906b('0x36')]!==_0x906b('0x47')){var _0x131b43={};_0x131b43[_0x24cadf[_0x906b('0x2f')]]={'$like':'%'+_0x269cd2[_0x906b('0x39')][_0x906b('0x45')]+'%'};return _0x131b43;}})});}_0x5b59a6=_[_0x906b('0x46')]({},_0x5b59a6,_0x269cd2[_0x906b('0x48')]);var _0x3cd595={'where':_0x5b59a6[_0x906b('0x43')]};return db[_0x906b('0x33')]['count'](_0x3cd595)[_0x906b('0x2c')](function(_0x55ccb6){_0x48b5d0[_0x906b('0x24')]=_0x55ccb6;if(_0x269cd2[_0x906b('0x39')][_0x906b('0x49')]){_0x5b59a6[_0x906b('0x4a')]=[{'all':!![]}];}return db[_0x906b('0x33')]['findAll'](_0x5b59a6);})[_0x906b('0x2c')](function(_0xc133f2){_0x48b5d0[_0x906b('0x4b')]=_0xc133f2;return _0x48b5d0;})[_0x906b('0x2c')](respondWithFilteredResult(_0x2acc4c,_0x5b59a6))['catch'](handleError(_0x2acc4c,null));};exports[_0x906b('0x4c')]=function(_0x22725b,_0xb905f0){var _0x1dd7eb={'raw':!![],'where':{'id':_0x22725b[_0x906b('0x4d')]['id']}},_0x547ad9={};_0x547ad9[_0x906b('0x38')]=_[_0x906b('0x3a')](db[_0x906b('0x33')][_0x906b('0x34')]);_0x547ad9[_0x906b('0x39')]=_[_0x906b('0x3a')](_0x22725b['query']);_0x547ad9['filters']=_[_0x906b('0x3c')](_0x547ad9['model'],_0x547ad9[_0x906b('0x39')]);_0x1dd7eb[_0x906b('0x3d')]=_[_0x906b('0x3c')](_0x547ad9[_0x906b('0x38')],qs[_0x906b('0x3e')](_0x22725b[_0x906b('0x39')]['fields']));_0x1dd7eb[_0x906b('0x3d')]=_0x1dd7eb[_0x906b('0x3d')][_0x906b('0x3f')]?_0x1dd7eb[_0x906b('0x3d')]:_0x547ad9['model'];if(_0x22725b[_0x906b('0x39')][_0x906b('0x49')]){_0x1dd7eb[_0x906b('0x4a')]=[{'all':!![]}];}_0x1dd7eb=_['merge']({},_0x1dd7eb,_0x22725b[_0x906b('0x48')]);return db[_0x906b('0x33')][_0x906b('0x4e')](_0x1dd7eb)[_0x906b('0x2c')](handleEntityNotFound(_0xb905f0,null))['then'](respondWithResult(_0xb905f0,null))[_0x906b('0x4f')](handleError(_0xb905f0,null));};exports[_0x906b('0x50')]=function(_0x55115e,_0x5580d0){return db['Interval'][_0x906b('0x50')](_0x55115e['body'],{})[_0x906b('0x2c')](function(_0x17028b){var _0x2d5fdf=_0x55115e[_0x906b('0x51')][_0x906b('0x29')]({'plain':!![]});if(!_0x2d5fdf)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2d5fdf[_0x906b('0x52')]===_0x906b('0x51')){var _0x34baa5=_0x17028b[_0x906b('0x29')]({'plain':!![]});var _0x47568f=_0x906b('0x2a');return db[_0x906b('0x53')][_0x906b('0x4e')]({'where':{'name':_0x47568f,'userProfileId':_0x2d5fdf[_0x906b('0x54')]},'raw':!![]})[_0x906b('0x2c')](function(_0x1f6a82){if(_0x1f6a82&&_0x1f6a82[_0x906b('0x55')]===0x0){return db[_0x906b('0x2b')]['create']({'name':_0x34baa5['name'],'resourceId':_0x34baa5['id'],'type':_0x1f6a82[_0x906b('0x2f')],'sectionId':_0x1f6a82['id']},{})['then'](function(){return _0x17028b;});}else{return _0x17028b;}})[_0x906b('0x4f')](function(_0x525713){logger[_0x906b('0x2d')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x525713);throw _0x525713;});}return _0x17028b;})['then'](respondWithResult(_0x5580d0,0xc9))[_0x906b('0x4f')](handleError(_0x5580d0,null));};exports[_0x906b('0x56')]=function(_0x106ef7,_0x169325){if(_0x106ef7[_0x906b('0x57')]['id']){delete _0x106ef7[_0x906b('0x57')]['id'];}return db[_0x906b('0x33')][_0x906b('0x4e')]({'where':{'id':_0x106ef7[_0x906b('0x4d')]['id']}})[_0x906b('0x2c')](handleEntityNotFound(_0x169325,null))['then'](saveUpdates(_0x106ef7['body'],null))['then'](respondWithResult(_0x169325,null))[_0x906b('0x4f')](handleError(_0x169325,null));};exports[_0x906b('0x28')]=function(_0x253bf2,_0x36c2b6){return db[_0x906b('0x33')][_0x906b('0x4e')]({'where':{'id':_0x253bf2['params']['id']}})[_0x906b('0x2c')](handleEntityNotFound(_0x36c2b6,null))[_0x906b('0x2c')](removeEntity(_0x36c2b6,null))[_0x906b('0x4f')](handleError(_0x36c2b6,null));};exports[_0x906b('0x58')]=function(_0x3e8b48,_0x1f8c60,_0x3eaf4c){if(_0x3e8b48['body']['id']){delete _0x3e8b48[_0x906b('0x57')]['id'];}return db['Interval']['find']({'where':{'id':_0x3e8b48[_0x906b('0x4d')]['id']}})[_0x906b('0x2c')](handleEntityNotFound(_0x1f8c60,null))[_0x906b('0x2c')](function(_0x154d68){if(_0x154d68){_0x3e8b48[_0x906b('0x57')][_0x906b('0x59')]=_0x154d68['id'];return db[_0x906b('0x33')][_0x906b('0x50')](_0x3e8b48[_0x906b('0x57')]);}})[_0x906b('0x2c')](respondWithResult(_0x1f8c60,null))[_0x906b('0x4f')](handleError(_0x1f8c60,null));};exports[_0x906b('0x5a')]=function(_0x25af1a,_0x55bf71,_0x24a171){var _0x3f3b7f={};var _0x86e42a={};var _0x556fda;var _0x2d3619;return db['Interval'][_0x906b('0x5b')]({'where':{'id':_0x25af1a[_0x906b('0x4d')]['id']}})[_0x906b('0x2c')](handleEntityNotFound(_0x55bf71,null))[_0x906b('0x2c')](function(_0xd7c4f7){if(_0xd7c4f7){_0x556fda=_0xd7c4f7;_0x86e42a[_0x906b('0x38')]=_[_0x906b('0x3a')](db[_0x906b('0x33')]['rawAttributes']);_0x86e42a['query']=_[_0x906b('0x3a')](_0x25af1a['query']);_0x86e42a[_0x906b('0x3b')]=_['intersection'](_0x86e42a['model'],_0x86e42a[_0x906b('0x39')]);_0x3f3b7f['attributes']=_[_0x906b('0x3c')](_0x86e42a[_0x906b('0x38')],qs[_0x906b('0x3e')](_0x25af1a[_0x906b('0x39')][_0x906b('0x3e')]));_0x3f3b7f['attributes']=_0x3f3b7f[_0x906b('0x3d')][_0x906b('0x3f')]?_0x3f3b7f['attributes']:_0x86e42a[_0x906b('0x38')];_0x3f3b7f[_0x906b('0x5c')]=qs[_0x906b('0x42')](_0x25af1a[_0x906b('0x39')][_0x906b('0x42')]);_0x3f3b7f[_0x906b('0x43')]=qs[_0x906b('0x3b')](_['pick'](_0x25af1a['query'],_0x86e42a[_0x906b('0x3b')]));if(_0x25af1a[_0x906b('0x39')][_0x906b('0x45')]){_0x3f3b7f[_0x906b('0x43')]=_['merge'](_0x3f3b7f['where'],{'$or':_[_0x906b('0x32')](_0x3f3b7f[_0x906b('0x3d')],function(_0x26845f){var _0x3e7bd6={};_0x3e7bd6[_0x26845f]={'$like':'%'+_0x25af1a[_0x906b('0x39')][_0x906b('0x45')]+'%'};return _0x3e7bd6;})});}_0x3f3b7f=_[_0x906b('0x46')]({},_0x3f3b7f,_0x25af1a[_0x906b('0x48')]);return _0x556fda[_0x906b('0x5a')](_0x3f3b7f);}})['then'](function(_0x42ad56){if(_0x42ad56){_0x2d3619=_0x42ad56[_0x906b('0x3f')];if(!_0x25af1a[_0x906b('0x39')][_0x906b('0x40')](_0x906b('0x41'))){_0x3f3b7f[_0x906b('0x22')]=qs[_0x906b('0x22')](_0x25af1a['query']['limit']);_0x3f3b7f[_0x906b('0x21')]=qs['offset'](_0x25af1a[_0x906b('0x39')][_0x906b('0x21')]);}return _0x556fda[_0x906b('0x5a')](_0x3f3b7f);}})['then'](function(_0x5ed724){if(_0x5ed724){return _0x5ed724?{'count':_0x2d3619,'rows':_0x5ed724}:null;}})[_0x906b('0x2c')](respondWithResult(_0x55bf71,null))[_0x906b('0x4f')](handleError(_0x55bf71,null));};exports[_0x906b('0x5d')]=function(_0x29ee69,_0x15082e,_0x33bbc8){return db[_0x906b('0x33')][_0x906b('0x5b')]({'where':{'id':_0x29ee69[_0x906b('0x4d')]['id']}})['then'](handleEntityNotFound(_0x15082e,null))[_0x906b('0x2c')](function(_0x3b831f){if(_0x3b831f){return db[_0x906b('0x5e')][_0x906b('0x5f')](function(_0x479ea6){return db[_0x906b('0x33')][_0x906b('0x28')]({'where':{'IntervalId':_0x29ee69[_0x906b('0x4d')]['id']},'transaction':_0x479ea6})['then'](function(_0x429415){var _0x2b89f9=_[_0x906b('0x32')](_0x29ee69[_0x906b('0x57')],function(_0x5a0bd8){delete _0x5a0bd8['id'];_0x5a0bd8[_0x906b('0x59')]=_0x29ee69['params']['id'];return _0x5a0bd8;});return db['Interval'][_0x906b('0x60')](_0x2b89f9,{'transaction':_0x479ea6});});})['then'](function(){return db[_0x906b('0x33')][_0x906b('0x61')]({'where':{'IntervalId':_0x29ee69[_0x906b('0x4d')]['id']}});});}})[_0x906b('0x2c')](respondWithResult(_0x15082e,null))[_0x906b('0x4f')](handleError(_0x15082e,null));};
\ No newline at end of file
index 300a61a..e4788c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x35d3=['Interval','tools_intervals','rewrite','interval','string','getIntervals','then','all','map','ifTime','reduce','./interval.attributes','../../components/extensions/rewrite','../../utils/iftime','iftime','exports','define'];(function(_0x443894,_0x4f080b){var _0x3c05c6=function(_0x4ce5d4){while(--_0x4ce5d4){_0x443894['push'](_0x443894['shift']());}};_0x3c05c6(++_0x4f080b);}(_0x35d3,0x11b));var _0x335d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x35d3[_0x3dd15e];return _0x231fd0;};'use strict';var attributes=require(_0x335d('0x0'));var extensions=require(_0x335d('0x1'));var iftime=require(_0x335d('0x2'))[_0x335d('0x3')];module[_0x335d('0x4')]=function(_0x429dc9){return _0x429dc9[_0x335d('0x5')](_0x335d('0x6'),attributes,{'tableName':_0x335d('0x7'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0xccf037){extensions['rewrite'](_0x429dc9,_0xccf037);},'afterBulkCreate':function(_0x51a06d,_0x5b1268,_0x147ebd){_0x147ebd();extensions[_0x335d('0x8')](_0x429dc9,_0x51a06d[0x0]);},'afterUpdate':function(_0x4214c5){extensions[_0x335d('0x8')](_0x429dc9,_0x4214c5);},'afterDestroy':function(_0x56824c){extensions['rewrite'](_0x429dc9,_0x56824c);}},'instanceMethods':{'ifTime':function(_0x9d0234=undefined,_0x130578=new Date()){if(typeof this[_0x335d('0x9')]===_0x335d('0xa')){return iftime(this[_0x335d('0x9')],_0x9d0234,_0x130578);}else{return this[_0x335d('0xb')]()[_0x335d('0xc')](function(_0xcbc9cc){return Promise[_0x335d('0xd')](_0xcbc9cc[_0x335d('0xe')](function(_0x37909a){return _0x37909a[_0x335d('0xf')](_0x9d0234,_0x130578);}));})[_0x335d('0xc')](function(_0x265a1b){return _0x265a1b[_0x335d('0x10')](function(_0x21178b,_0x356abe){return _0x21178b||_0x356abe;},![]);});}}}});};
\ No newline at end of file
+var _0xac47=['map','ifTime','reduce','./interval.attributes','../../components/extensions/rewrite','../../utils/iftime','iftime','Interval','tools_intervals','rewrite','interval','string','then','all'];(function(_0x54dbf2,_0x3b77b7){var _0x26b30b=function(_0x3960c8){while(--_0x3960c8){_0x54dbf2['push'](_0x54dbf2['shift']());}};_0x26b30b(++_0x3b77b7);}(_0xac47,0xab));var _0x7ac4=function(_0x9b7721,_0x36ef2f){_0x9b7721=_0x9b7721-0x0;var _0x2c92de=_0xac47[_0x9b7721];return _0x2c92de;};'use strict';var attributes=require(_0x7ac4('0x0'));var extensions=require(_0x7ac4('0x1'));var iftime=require(_0x7ac4('0x2'))[_0x7ac4('0x3')];module['exports']=function(_0x2c9389){return _0x2c9389['define'](_0x7ac4('0x4'),attributes,{'tableName':_0x7ac4('0x5'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x1a5e8a){extensions[_0x7ac4('0x6')](_0x2c9389,_0x1a5e8a);},'afterBulkCreate':function(_0x469f12,_0x581628,_0x2bc9ed){_0x2bc9ed();extensions['rewrite'](_0x2c9389,_0x469f12[0x0]);},'afterUpdate':function(_0x52a398){extensions['rewrite'](_0x2c9389,_0x52a398);},'afterDestroy':function(_0x37a855){extensions[_0x7ac4('0x6')](_0x2c9389,_0x37a855);}},'instanceMethods':{'ifTime':function(_0x46706c=undefined,_0x4c0247=new Date()){if(typeof this[_0x7ac4('0x7')]===_0x7ac4('0x8')){return iftime(this['interval'],_0x46706c,_0x4c0247);}else{return this['getIntervals']()[_0x7ac4('0x9')](function(_0x3c3837){return Promise[_0x7ac4('0xa')](_0x3c3837[_0x7ac4('0xb')](function(_0x14b166){return _0x14b166[_0x7ac4('0xc')](_0x46706c,_0x4c0247);}));})[_0x7ac4('0x9')](function(_0x1d0424){return _0x1d0424[_0x7ac4('0xd')](function(_0x2f6aff,_0x2bdbd7){return _0x2f6aff||_0x2bdbd7;},![]);});}}}});};
\ No newline at end of file
index aa3354a..6da8d99 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1ce1=['limit','include','model','attributes','map','then','info','debug','catch','error','message','ShowInterval','stringify','all','ifTime','reduce','format','IntervalIftime:\x20intervals\x20=\x20%s\x20(ids\x20=\x20%s)','name','join','findById','IntervalIftime:\x20interval\x20=\x20%s\x20(id\x20=\x20%s)','IntervalIftime','intervalIds','intervals','string','length','IntervalIftime:\x20interval\x20strings\x20=\x20%s','Iftime','silly','isArray','lodash','util','../../mysqldb','../../config/logger','rpc','GetInterval','Interval','findAll','options','raw','where'];(function(_0x1f4c09,_0x75df9d){var _0x564684=function(_0x30bb1f){while(--_0x30bb1f){_0x1f4c09['push'](_0x1f4c09['shift']());}};_0x564684(++_0x75df9d);}(_0x1ce1,0x1ed));var _0x11ce=function(_0x5ecdb0,_0x507e96){_0x5ecdb0=_0x5ecdb0-0x0;var _0x2a1652=_0x1ce1[_0x5ecdb0];return _0x2a1652;};'use strict';var _=require(_0x11ce('0x0'));var util=require(_0x11ce('0x1'));var db=require(_0x11ce('0x2'))['db'];var iftime=require('../../utils/iftime')['iftime'];var logger=require(_0x11ce('0x3'))(_0x11ce('0x4'));exports[_0x11ce('0x5')]=function(_0x5e17e9){var _0x4aa679=this;return new Promise(function(_0x2d059b,_0x3402ad){return db[_0x11ce('0x6')][_0x11ce('0x7')]({'raw':_0x5e17e9[_0x11ce('0x8')]?_0x5e17e9[_0x11ce('0x8')][_0x11ce('0x9')]===undefined?!![]:![]:!![],'where':_0x5e17e9[_0x11ce('0x8')]?_0x5e17e9['options'][_0x11ce('0xa')]||null:null,'attributes':_0x5e17e9[_0x11ce('0x8')]?_0x5e17e9[_0x11ce('0x8')]['attributes']||null:null,'limit':_0x5e17e9[_0x11ce('0x8')]?_0x5e17e9[_0x11ce('0x8')][_0x11ce('0xb')]||null:null,'include':_0x5e17e9['options']?_0x5e17e9[_0x11ce('0x8')][_0x11ce('0xc')]?_['map'](_0x5e17e9[_0x11ce('0x8')][_0x11ce('0xc')],function(_0x3701e5){return{'model':db[_0x3701e5[_0x11ce('0xd')]],'as':_0x3701e5['as'],'attributes':_0x3701e5[_0x11ce('0xe')],'include':_0x3701e5[_0x11ce('0xc')]?_[_0x11ce('0xf')](_0x3701e5[_0x11ce('0xc')],function(_0x5619c8){return{'model':db[_0x5619c8[_0x11ce('0xd')]],'as':_0x5619c8['as'],'attributes':_0x5619c8['attributes'],'include':_0x5619c8[_0x11ce('0xc')]?_[_0x11ce('0xf')](_0x5619c8[_0x11ce('0xc')],function(_0x40a8c7){return{'model':db[_0x40a8c7[_0x11ce('0xd')]],'as':_0x40a8c7['as'],'attributes':_0x40a8c7[_0x11ce('0xe')]};}):[]};}):[]};}):[]:[]})[_0x11ce('0x10')](function(_0x10b946){logger[_0x11ce('0x11')](_0x11ce('0x5'),_0x5e17e9);logger[_0x11ce('0x12')](_0x11ce('0x5'),_0x5e17e9,JSON['stringify'](_0x10b946));_0x2d059b(_0x10b946);})[_0x11ce('0x13')](function(_0x394f68){logger[_0x11ce('0x14')](_0x11ce('0x5'),_0x394f68['message'],_0x5e17e9);_0x3402ad(_0x4aa679[_0x11ce('0x14')](0x1f4,_0x394f68[_0x11ce('0x15')]));});});};exports[_0x11ce('0x16')]=function(_0x3668a7){var _0x1213f0=this;return new Promise(function(_0x13777f,_0x5a4a03){return db[_0x11ce('0x6')]['find']({'raw':_0x3668a7[_0x11ce('0x8')]?_0x3668a7[_0x11ce('0x8')][_0x11ce('0x9')]===undefined?!![]:![]:!![],'where':_0x3668a7['options']?_0x3668a7[_0x11ce('0x8')][_0x11ce('0xa')]||null:null,'attributes':_0x3668a7[_0x11ce('0x8')]?_0x3668a7[_0x11ce('0x8')][_0x11ce('0xe')]||null:null,'include':_0x3668a7[_0x11ce('0x8')]?_0x3668a7[_0x11ce('0x8')][_0x11ce('0xc')]?_['map'](_0x3668a7[_0x11ce('0x8')][_0x11ce('0xc')],function(_0x4f030e){return{'model':db[_0x4f030e['model']],'as':_0x4f030e['as'],'attributes':_0x4f030e[_0x11ce('0xe')],'include':_0x4f030e[_0x11ce('0xc')]?_[_0x11ce('0xf')](_0x4f030e[_0x11ce('0xc')],function(_0x2c1c16){return{'model':db[_0x2c1c16['model']],'as':_0x2c1c16['as'],'attributes':_0x2c1c16['attributes'],'include':_0x2c1c16[_0x11ce('0xc')]?_[_0x11ce('0xf')](_0x2c1c16[_0x11ce('0xc')],function(_0x4adaf6){return{'model':db[_0x4adaf6[_0x11ce('0xd')]],'as':_0x4adaf6['as'],'attributes':_0x4adaf6[_0x11ce('0xe')]};}):[]};}):[]};}):[]:[]})[_0x11ce('0x10')](function(_0x30370b){logger[_0x11ce('0x11')](_0x11ce('0x16'),_0x3668a7);logger[_0x11ce('0x12')](_0x11ce('0x16'),_0x3668a7,JSON[_0x11ce('0x17')](_0x30370b));_0x13777f(_0x30370b);})[_0x11ce('0x13')](function(_0x434b5d){logger[_0x11ce('0x14')](_0x11ce('0x16'),_0x434b5d['message'],_0x3668a7);_0x5a4a03(_0x1213f0[_0x11ce('0x14')](0x1f4,_0x434b5d[_0x11ce('0x15')]));});});};function checkArrayOfIntervals(_0x3fce8a,_0xc64b2d){var _0x389d0d=[];return db['Interval'][_0x11ce('0x7')]({'where':{'id':_0x3fce8a}})[_0x11ce('0x10')](function(_0x441778){_0x389d0d=_0x441778;return Promise[_0x11ce('0x18')](_0x389d0d['map'](function(_0x24b201){return _0x24b201[_0x11ce('0x19')](_0xc64b2d);}));})['then'](function(_0x56320e){var _0x1715ba=_0x56320e[_0x11ce('0x1a')](function(_0x35b47f,_0x4fbcf0){return _0x35b47f||_0x4fbcf0;},![]);logger[_0x11ce('0x11')](util[_0x11ce('0x1b')](_0x11ce('0x1c'),_0x389d0d[_0x11ce('0xf')](function(_0x47fade){return _0x47fade[_0x11ce('0x1d')];})['join'](',\x20'),_0x389d0d[_0x11ce('0xf')](function(_0x5485d5){return _0x5485d5['id'];})[_0x11ce('0x1e')](',\x20')));return _0x1715ba;});}function checkSingleInterval(_0x1d346a,_0x482c70){return db[_0x11ce('0x6')][_0x11ce('0x1f')](_0x1d346a)[_0x11ce('0x10')](function(_0x1b1698){if(_0x1b1698){logger[_0x11ce('0x11')](util[_0x11ce('0x1b')](_0x11ce('0x20'),_0x1b1698[_0x11ce('0x1d')],_0x1b1698['id']));return _0x1b1698[_0x11ce('0x19')](_0x482c70);}});}exports[_0x11ce('0x21')]=function(_0x119c82){var _0x4fa05b=_0x119c82[_0x11ce('0x22')];var _0x23a143=Array['isArray'](_0x119c82['intervals'])?_0x119c82[_0x11ce('0x23')]:typeof _0x119c82['intervals']===_0x11ce('0x24')?[_0x119c82[_0x11ce('0x23')]]:[];var _0x314724=_0x119c82['timezone']||undefined;var _0x271406=![];if(_0x23a143[_0x11ce('0x25')]){logger[_0x11ce('0x11')](util[_0x11ce('0x1b')](_0x11ce('0x26'),_0x23a143[_0x11ce('0x1e')](';\x20')));}if(_0x314724){logger[_0x11ce('0x11')](util[_0x11ce('0x1b')]('IntervalIftime:\x20timezone\x20=\x20%s',_0x314724));}logger[_0x11ce('0x12')](_0x11ce('0x27'),_0x271406);logger[_0x11ce('0x28')](_0x11ce('0x21'),_0x119c82);return Promise['resolve']()['then'](function(){if(Array[_0x11ce('0x29')](_0x4fa05b)){return checkArrayOfIntervals(_0x4fa05b,_0x314724);}else if(_0x4fa05b){return checkSingleInterval(_0x4fa05b,_0x314724);}})[_0x11ce('0x10')](function(_0x582c3b){var _0x360379=_0x23a143[_0x11ce('0x1a')](function(_0x1325ed,_0x399ecb){return _0x1325ed||iftime(_0x399ecb,_0x314724);},![]);_0x271406=_0x582c3b||_0x360379;return _0x271406;})['catch'](function(_0x51cdb4){logger[_0x11ce('0x14')](_0x11ce('0x21'),_0x119c82,_0x51cdb4);throw this['error'](0x1f4,_0x51cdb4[_0x11ce('0x15')]);});};
\ No newline at end of file
+var _0x69bf=['limit','include','map','model','then','info','stringify','catch','message','ShowInterval','raw','debug','error','findAll','all','ifTime','reduce','IntervalIftime:\x20intervals\x20=\x20%s\x20(ids\x20=\x20%s)','IntervalIftime:\x20interval\x20=\x20%s\x20(id\x20=\x20%s)','name','IntervalIftime','intervalIds','isArray','intervals','string','timezone','format','IntervalIftime:\x20interval\x20strings\x20=\x20%s','join','IntervalIftime:\x20timezone\x20=\x20%s','silly','resolve','../../mysqldb','iftime','rpc','GetInterval','Interval','options','where','attributes'];(function(_0x44646d,_0x31f9cd){var _0x1f125e=function(_0x5a16a1){while(--_0x5a16a1){_0x44646d['push'](_0x44646d['shift']());}};_0x1f125e(++_0x31f9cd);}(_0x69bf,0x160));var _0xf69b=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x69bf[_0x122ef9];return _0x42fba0;};'use strict';var _=require('lodash');var util=require('util');var db=require(_0xf69b('0x0'))['db'];var iftime=require('../../utils/iftime')[_0xf69b('0x1')];var logger=require('../../config/logger')(_0xf69b('0x2'));exports[_0xf69b('0x3')]=function(_0x4b51f5){var _0x15bccb=this;return new Promise(function(_0x36184a,_0xe6a4b1){return db[_0xf69b('0x4')]['findAll']({'raw':_0x4b51f5['options']?_0x4b51f5[_0xf69b('0x5')]['raw']===undefined?!![]:![]:!![],'where':_0x4b51f5['options']?_0x4b51f5[_0xf69b('0x5')][_0xf69b('0x6')]||null:null,'attributes':_0x4b51f5['options']?_0x4b51f5[_0xf69b('0x5')][_0xf69b('0x7')]||null:null,'limit':_0x4b51f5[_0xf69b('0x5')]?_0x4b51f5[_0xf69b('0x5')][_0xf69b('0x8')]||null:null,'include':_0x4b51f5[_0xf69b('0x5')]?_0x4b51f5[_0xf69b('0x5')][_0xf69b('0x9')]?_[_0xf69b('0xa')](_0x4b51f5[_0xf69b('0x5')][_0xf69b('0x9')],function(_0x132097){return{'model':db[_0x132097[_0xf69b('0xb')]],'as':_0x132097['as'],'attributes':_0x132097[_0xf69b('0x7')],'include':_0x132097[_0xf69b('0x9')]?_[_0xf69b('0xa')](_0x132097[_0xf69b('0x9')],function(_0x1b4a2a){return{'model':db[_0x1b4a2a['model']],'as':_0x1b4a2a['as'],'attributes':_0x1b4a2a[_0xf69b('0x7')],'include':_0x1b4a2a[_0xf69b('0x9')]?_[_0xf69b('0xa')](_0x1b4a2a[_0xf69b('0x9')],function(_0x5aa197){return{'model':db[_0x5aa197[_0xf69b('0xb')]],'as':_0x5aa197['as'],'attributes':_0x5aa197[_0xf69b('0x7')]};}):[]};}):[]};}):[]:[]})[_0xf69b('0xc')](function(_0x426058){logger[_0xf69b('0xd')](_0xf69b('0x3'),_0x4b51f5);logger['debug'](_0xf69b('0x3'),_0x4b51f5,JSON[_0xf69b('0xe')](_0x426058));_0x36184a(_0x426058);})[_0xf69b('0xf')](function(_0x4a04e1){logger['error'](_0xf69b('0x3'),_0x4a04e1[_0xf69b('0x10')],_0x4b51f5);_0xe6a4b1(_0x15bccb['error'](0x1f4,_0x4a04e1[_0xf69b('0x10')]));});});};exports[_0xf69b('0x11')]=function(_0x1eb2d6){var _0x5e2bfc=this;return new Promise(function(_0x57f1a9,_0x5f5575){return db['Interval']['find']({'raw':_0x1eb2d6[_0xf69b('0x5')]?_0x1eb2d6['options'][_0xf69b('0x12')]===undefined?!![]:![]:!![],'where':_0x1eb2d6[_0xf69b('0x5')]?_0x1eb2d6[_0xf69b('0x5')]['where']||null:null,'attributes':_0x1eb2d6['options']?_0x1eb2d6[_0xf69b('0x5')][_0xf69b('0x7')]||null:null,'include':_0x1eb2d6[_0xf69b('0x5')]?_0x1eb2d6[_0xf69b('0x5')][_0xf69b('0x9')]?_[_0xf69b('0xa')](_0x1eb2d6[_0xf69b('0x5')][_0xf69b('0x9')],function(_0x534306){return{'model':db[_0x534306[_0xf69b('0xb')]],'as':_0x534306['as'],'attributes':_0x534306[_0xf69b('0x7')],'include':_0x534306[_0xf69b('0x9')]?_[_0xf69b('0xa')](_0x534306['include'],function(_0x544e95){return{'model':db[_0x544e95[_0xf69b('0xb')]],'as':_0x544e95['as'],'attributes':_0x544e95['attributes'],'include':_0x544e95[_0xf69b('0x9')]?_[_0xf69b('0xa')](_0x544e95[_0xf69b('0x9')],function(_0xcb8091){return{'model':db[_0xcb8091[_0xf69b('0xb')]],'as':_0xcb8091['as'],'attributes':_0xcb8091[_0xf69b('0x7')]};}):[]};}):[]};}):[]:[]})[_0xf69b('0xc')](function(_0x20cf74){logger[_0xf69b('0xd')](_0xf69b('0x11'),_0x1eb2d6);logger[_0xf69b('0x13')](_0xf69b('0x11'),_0x1eb2d6,JSON[_0xf69b('0xe')](_0x20cf74));_0x57f1a9(_0x20cf74);})[_0xf69b('0xf')](function(_0xa472b1){logger[_0xf69b('0x14')]('ShowInterval',_0xa472b1[_0xf69b('0x10')],_0x1eb2d6);_0x5f5575(_0x5e2bfc[_0xf69b('0x14')](0x1f4,_0xa472b1[_0xf69b('0x10')]));});});};function checkArrayOfIntervals(_0x13fc39,_0x12acc0){var _0x22a2fc=[];return db[_0xf69b('0x4')][_0xf69b('0x15')]({'where':{'id':_0x13fc39}})[_0xf69b('0xc')](function(_0x465daf){_0x22a2fc=_0x465daf;return Promise[_0xf69b('0x16')](_0x22a2fc[_0xf69b('0xa')](function(_0x579381){return _0x579381[_0xf69b('0x17')](_0x12acc0);}));})[_0xf69b('0xc')](function(_0xca3d20){var _0x3147d7=_0xca3d20[_0xf69b('0x18')](function(_0x34238c,_0x1a7820){return _0x34238c||_0x1a7820;},![]);logger[_0xf69b('0xd')](util['format'](_0xf69b('0x19'),_0x22a2fc[_0xf69b('0xa')](function(_0x2c4f96){return _0x2c4f96['name'];})['join'](',\x20'),_0x22a2fc[_0xf69b('0xa')](function(_0x29dae2){return _0x29dae2['id'];})['join'](',\x20')));return _0x3147d7;});}function checkSingleInterval(_0x2e5363,_0x377b31){return db[_0xf69b('0x4')]['findById'](_0x2e5363)[_0xf69b('0xc')](function(_0x578ef2){if(_0x578ef2){logger[_0xf69b('0xd')](util['format'](_0xf69b('0x1a'),_0x578ef2[_0xf69b('0x1b')],_0x578ef2['id']));return _0x578ef2[_0xf69b('0x17')](_0x377b31);}});}exports[_0xf69b('0x1c')]=function(_0x4c6725){var _0x5dd2f9=_0x4c6725[_0xf69b('0x1d')];var _0x2c9de5=Array[_0xf69b('0x1e')](_0x4c6725[_0xf69b('0x1f')])?_0x4c6725['intervals']:typeof _0x4c6725[_0xf69b('0x1f')]===_0xf69b('0x20')?[_0x4c6725['intervals']]:[];var _0x2b2f15=_0x4c6725[_0xf69b('0x21')]||undefined;var _0x4dd14f=![];if(_0x2c9de5['length']){logger[_0xf69b('0xd')](util[_0xf69b('0x22')](_0xf69b('0x23'),_0x2c9de5[_0xf69b('0x24')](';\x20')));}if(_0x2b2f15){logger[_0xf69b('0xd')](util[_0xf69b('0x22')](_0xf69b('0x25'),_0x2b2f15));}logger[_0xf69b('0x13')]('Iftime',_0x4dd14f);logger[_0xf69b('0x26')](_0xf69b('0x1c'),_0x4c6725);return Promise[_0xf69b('0x27')]()[_0xf69b('0xc')](function(){if(Array['isArray'](_0x5dd2f9)){return checkArrayOfIntervals(_0x5dd2f9,_0x2b2f15);}else if(_0x5dd2f9){return checkSingleInterval(_0x5dd2f9,_0x2b2f15);}})[_0xf69b('0xc')](function(_0x302ba8){var _0x574b96=_0x2c9de5[_0xf69b('0x18')](function(_0x40b3c6,_0x46434a){return _0x40b3c6||iftime(_0x46434a,_0x2b2f15);},![]);_0x4dd14f=_0x302ba8||_0x574b96;return _0x4dd14f;})[_0xf69b('0xf')](function(_0x2a2d45){logger[_0xf69b('0x14')](_0xf69b('0x1c'),_0x4c6725,_0x2a2d45);throw this['error'](0x1f4,_0x2a2d45[_0xf69b('0x10')]);});};
\ No newline at end of file
index 35ad3a1..4fed3b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2032=['isAuthenticated','send','Router','../../components/auth/service','./jira.controller'];(function(_0x3e23dd,_0x2bdb68){var _0x5de564=function(_0x7d27fc){while(--_0x7d27fc){_0x3e23dd['push'](_0x3e23dd['shift']());}};_0x5de564(++_0x2bdb68);}(_0x2032,0xd9));var _0x2203=function(_0x43f709,_0x3aa3ed){_0x43f709=_0x43f709-0x0;var _0x361443=_0x2032[_0x43f709];return _0x361443;};'use strict';var express=require('express');var router=express[_0x2203('0x0')]();var auth=require(_0x2203('0x1'));var controller=require(_0x2203('0x2'));router['post']('/',auth[_0x2203('0x3')](),controller[_0x2203('0x4')]);module['exports']=router;
\ No newline at end of file
+var _0x0b0e=['exports','express','../../components/auth/service','post','isAuthenticated','send'];(function(_0x2d2c16,_0x4e88b6){var _0x53f2fb=function(_0x6b6dac){while(--_0x6b6dac){_0x2d2c16['push'](_0x2d2c16['shift']());}};_0x53f2fb(++_0x4e88b6);}(_0x0b0e,0x187));var _0xe0b0=function(_0xb47dc0,_0x407032){_0xb47dc0=_0xb47dc0-0x0;var _0x57f0b0=_0x0b0e[_0xb47dc0];return _0x57f0b0;};'use strict';var express=require(_0xe0b0('0x0'));var router=express['Router']();var auth=require(_0xe0b0('0x1'));var controller=require('./jira.controller');router[_0xe0b0('0x2')]('/',auth[_0xe0b0('0x3')](),controller[_0xe0b0('0x4')]);module[_0xe0b0('0x5')]=router;
\ No newline at end of file
index 2fd9d63..43ff270 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc7a7=['MOTGUI','summary','Report','\x20from\x20','description','Bug','fields','customfield_11500','email','oldToken','name','customfield_11504','reason','customfield_10102','track.xcallymotion.com','/rest/api/2/issue','POST','Basic\x20','toString','base64','stringify','utf8','data','end','status','statusCode','json','parse','error','Error\x20during\x20license\x20request.\x20Please\x20contact\x20our\x20license\x20team\x20at\x20license@xcally.com\x20with\x20your\x20request','write','openIssue','send','body','headers','x-forwarded-for','connection','remoteAddress','socket','bluebird','https','api','support','3eAmWpBVP0','key'];(function(_0x2e00f7,_0x4d54c6){var _0x25e0aa=function(_0x245fae){while(--_0x245fae){_0x2e00f7['push'](_0x2e00f7['shift']());}};_0x25e0aa(++_0x4d54c6);}(_0xc7a7,0x135));var _0x7c7a=function(_0x5368cb,_0x26ed7b){_0x5368cb=_0x5368cb-0x0;var _0x3989f9=_0xc7a7[_0x5368cb];return _0x3989f9;};'use strict';var BPromise=require(_0x7c7a('0x0'));var https=require(_0x7c7a('0x1'));var logger=require('../../config/logger')(_0x7c7a('0x2'));var USERNAME=_0x7c7a('0x3');var PASSWORD=_0x7c7a('0x4');function openIssue(_0x1b98aa,_0x2eb04b){var _0x5f1f0e={'fields':{'project':{'key':_0x1b98aa[_0x7c7a('0x5')]||_0x7c7a('0x6')},'summary':(_0x1b98aa[_0x7c7a('0x7')]||_0x7c7a('0x8'))+_0x7c7a('0x9')+_0x1b98aa['ip'],'description':_0x1b98aa[_0x7c7a('0xa')]||JSON['stringify'](_0x1b98aa),'issuetype':{'name':_0x1b98aa['issuetype']||_0x7c7a('0xb')}}};_0x5f1f0e[_0x7c7a('0xc')][_0x7c7a('0xd')]=_0x1b98aa[_0x7c7a('0xe')];_0x5f1f0e[_0x7c7a('0xc')]['customfield_11501']=_0x1b98aa[_0x7c7a('0xf')];_0x5f1f0e['fields']['customfield_11502']=_0x1b98aa['newToken'];_0x5f1f0e[_0x7c7a('0xc')]['customfield_11503']=_0x1b98aa[_0x7c7a('0x10')];_0x5f1f0e[_0x7c7a('0xc')][_0x7c7a('0x11')]=_0x1b98aa[_0x7c7a('0x12')];_0x5f1f0e[_0x7c7a('0xc')][_0x7c7a('0x13')]=_0x1b98aa['ip'];var _0x592ebb={'host':_0x7c7a('0x14'),'port':0x1bb,'path':_0x7c7a('0x15'),'method':_0x7c7a('0x16'),'timeout':0x4e20,'headers':{'Content-Type':'application/json','Authorization':_0x7c7a('0x17')+new Buffer(USERNAME+':'+PASSWORD)[_0x7c7a('0x18')](_0x7c7a('0x19'))}};var _0x3dec81=JSON[_0x7c7a('0x1a')](_0x5f1f0e);var _0x5c22c8=https['request'](_0x592ebb,function(_0xda56a6){_0xda56a6['setEncoding'](_0x7c7a('0x1b'));var _0x44fcbc='';_0xda56a6['on'](_0x7c7a('0x1c'),function(_0x4e7447){_0x44fcbc+=_0x4e7447;});_0xda56a6['on'](_0x7c7a('0x1d'),function(){if(_0x2eb04b){return _0x2eb04b[_0x7c7a('0x1e')](_0xda56a6[_0x7c7a('0x1f')])[_0x7c7a('0x20')](JSON[_0x7c7a('0x21')](_0x44fcbc));}});});_0x5c22c8['on'](_0x7c7a('0x22'),function(_0xeadbf6){if(_0x2eb04b){return _0x2eb04b['status'](0x1f4)[_0x7c7a('0x20')]({'errors':[{'message':_0x7c7a('0x23'),'type':'api.jira'}]});}});_0x5c22c8[_0x7c7a('0x24')](_0x3dec81);_0x5c22c8[_0x7c7a('0x1d')]();}exports[_0x7c7a('0x25')]=openIssue;exports[_0x7c7a('0x26')]=function(_0x2dded7,_0x304799){_0x2dded7[_0x7c7a('0x27')]['ip']=_0x2dded7[_0x7c7a('0x28')][_0x7c7a('0x29')]||_0x2dded7[_0x7c7a('0x2a')][_0x7c7a('0x2b')]||_0x2dded7['socket'][_0x7c7a('0x2b')]||_0x2dded7[_0x7c7a('0x2a')][_0x7c7a('0x2c')]['remoteAddress'];return openIssue(_0x2dded7[_0x7c7a('0x27')],_0x304799);};
\ No newline at end of file
+var _0x70b3=['../../config/logger','api','support','3eAmWpBVP0','key','MOTGUI','summary','description','issuetype','Bug','fields','customfield_11500','email','customfield_11501','oldToken','customfield_11502','customfield_11503','name','customfield_11504','reason','customfield_10102','track.xcallymotion.com','/rest/api/2/issue','POST','application/json','Basic\x20','toString','base64','stringify','request','setEncoding','data','end','statusCode','json','error','status','Error\x20during\x20license\x20request.\x20Please\x20contact\x20our\x20license\x20team\x20at\x20license@xcally.com\x20with\x20your\x20request','api.jira','write','openIssue','send','body','headers','x-forwarded-for','connection','remoteAddress','socket','bluebird','https'];(function(_0x33c8c9,_0x5eacd3){var _0x1663d6=function(_0xef8d05){while(--_0xef8d05){_0x33c8c9['push'](_0x33c8c9['shift']());}};_0x1663d6(++_0x5eacd3);}(_0x70b3,0x12a));var _0x370b=function(_0x4d7ecf,_0x266ed9){_0x4d7ecf=_0x4d7ecf-0x0;var _0x3c90c1=_0x70b3[_0x4d7ecf];return _0x3c90c1;};'use strict';var BPromise=require(_0x370b('0x0'));var https=require(_0x370b('0x1'));var logger=require(_0x370b('0x2'))(_0x370b('0x3'));var USERNAME=_0x370b('0x4');var PASSWORD=_0x370b('0x5');function openIssue(_0x1eecec,_0x3d1c34){var _0x23f181={'fields':{'project':{'key':_0x1eecec[_0x370b('0x6')]||_0x370b('0x7')},'summary':(_0x1eecec[_0x370b('0x8')]||'Report')+'\x20from\x20'+_0x1eecec['ip'],'description':_0x1eecec[_0x370b('0x9')]||JSON['stringify'](_0x1eecec),'issuetype':{'name':_0x1eecec[_0x370b('0xa')]||_0x370b('0xb')}}};_0x23f181[_0x370b('0xc')][_0x370b('0xd')]=_0x1eecec[_0x370b('0xe')];_0x23f181[_0x370b('0xc')][_0x370b('0xf')]=_0x1eecec[_0x370b('0x10')];_0x23f181['fields'][_0x370b('0x11')]=_0x1eecec['newToken'];_0x23f181['fields'][_0x370b('0x12')]=_0x1eecec[_0x370b('0x13')];_0x23f181['fields'][_0x370b('0x14')]=_0x1eecec[_0x370b('0x15')];_0x23f181[_0x370b('0xc')][_0x370b('0x16')]=_0x1eecec['ip'];var _0x552560={'host':_0x370b('0x17'),'port':0x1bb,'path':_0x370b('0x18'),'method':_0x370b('0x19'),'timeout':0x4e20,'headers':{'Content-Type':_0x370b('0x1a'),'Authorization':_0x370b('0x1b')+new Buffer(USERNAME+':'+PASSWORD)[_0x370b('0x1c')](_0x370b('0x1d'))}};var _0xbc6c52=JSON[_0x370b('0x1e')](_0x23f181);var _0x293285=https[_0x370b('0x1f')](_0x552560,function(_0x241742){_0x241742[_0x370b('0x20')]('utf8');var _0x4ca828='';_0x241742['on'](_0x370b('0x21'),function(_0x2e7ece){_0x4ca828+=_0x2e7ece;});_0x241742['on'](_0x370b('0x22'),function(){if(_0x3d1c34){return _0x3d1c34['status'](_0x241742[_0x370b('0x23')])[_0x370b('0x24')](JSON['parse'](_0x4ca828));}});});_0x293285['on'](_0x370b('0x25'),function(_0x12984b){if(_0x3d1c34){return _0x3d1c34[_0x370b('0x26')](0x1f4)[_0x370b('0x24')]({'errors':[{'message':_0x370b('0x27'),'type':_0x370b('0x28')}]});}});_0x293285[_0x370b('0x29')](_0xbc6c52);_0x293285[_0x370b('0x22')]();}exports[_0x370b('0x2a')]=openIssue;exports[_0x370b('0x2b')]=function(_0x5dc9a8,_0x468d7e){_0x5dc9a8[_0x370b('0x2c')]['ip']=_0x5dc9a8[_0x370b('0x2d')][_0x370b('0x2e')]||_0x5dc9a8[_0x370b('0x2f')][_0x370b('0x30')]||_0x5dc9a8[_0x370b('0x31')][_0x370b('0x30')]||_0x5dc9a8[_0x370b('0x2f')][_0x370b('0x31')]['remoteAddress'];return openIssue(_0x5dc9a8[_0x370b('0x2c')],_0x468d7e);};
\ No newline at end of file
index 8e9f809..e9ada9f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x99e9=['update','delete','destroy','exports','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./jscriptyAnswerReport.controller','isAuthenticated','index','get','/describe','describe','/:id','show','post','create','put'];(function(_0x2d452b,_0x4a837a){var _0x2034b2=function(_0x4c9e02){while(--_0x4c9e02){_0x2d452b['push'](_0x2d452b['shift']());}};_0x2034b2(++_0x4a837a);}(_0x99e9,0xb4));var _0x999e=function(_0x8bf471,_0x2e9da0){_0x8bf471=_0x8bf471-0x0;var _0x3d93d7=_0x99e9[_0x8bf471];return _0x3d93d7;};'use strict';var multer=require('multer');var util=require(_0x999e('0x0'));var path=require(_0x999e('0x1'));var timeout=require(_0x999e('0x2'));var express=require(_0x999e('0x3'));var router=express['Router']();var fs_extra=require(_0x999e('0x4'));var auth=require(_0x999e('0x5'));var interaction=require(_0x999e('0x6'));var config=require('../../config/environment');var controller=require(_0x999e('0x7'));router['get']('/',auth[_0x999e('0x8')](),controller[_0x999e('0x9')]);router[_0x999e('0xa')](_0x999e('0xb'),auth['isAuthenticated'](),controller[_0x999e('0xc')]);router[_0x999e('0xa')](_0x999e('0xd'),auth[_0x999e('0x8')](),controller[_0x999e('0xe')]);router[_0x999e('0xf')]('/',auth[_0x999e('0x8')](),controller[_0x999e('0x10')]);router[_0x999e('0x11')](_0x999e('0xd'),auth[_0x999e('0x8')](),controller[_0x999e('0x12')]);router[_0x999e('0x13')](_0x999e('0xd'),auth[_0x999e('0x8')](),controller[_0x999e('0x14')]);module[_0x999e('0x15')]=router;
\ No newline at end of file
+var _0xf3cd=['delete','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','show','post','create','put','/:id','update'];(function(_0x49c1d9,_0x22aa91){var _0x487896=function(_0x22a070){while(--_0x22a070){_0x49c1d9['push'](_0x49c1d9['shift']());}};_0x487896(++_0x22aa91);}(_0xf3cd,0xfe));var _0xdf3c=function(_0x4f750b,_0x4e3e43){_0x4f750b=_0x4f750b-0x0;var _0x918b39=_0xf3cd[_0x4f750b];return _0x918b39;};'use strict';var multer=require(_0xdf3c('0x0'));var util=require(_0xdf3c('0x1'));var path=require(_0xdf3c('0x2'));var timeout=require(_0xdf3c('0x3'));var express=require(_0xdf3c('0x4'));var router=express[_0xdf3c('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xdf3c('0x6'));var interaction=require(_0xdf3c('0x7'));var config=require(_0xdf3c('0x8'));var controller=require('./jscriptyAnswerReport.controller');router[_0xdf3c('0x9')]('/',auth[_0xdf3c('0xa')](),controller[_0xdf3c('0xb')]);router[_0xdf3c('0x9')](_0xdf3c('0xc'),auth[_0xdf3c('0xa')](),controller['describe']);router[_0xdf3c('0x9')]('/:id',auth['isAuthenticated'](),controller[_0xdf3c('0xd')]);router[_0xdf3c('0xe')]('/',auth['isAuthenticated'](),controller[_0xdf3c('0xf')]);router[_0xdf3c('0x10')](_0xdf3c('0x11'),auth[_0xdf3c('0xa')](),controller[_0xdf3c('0x12')]);router[_0xdf3c('0x13')](_0xdf3c('0x11'),auth[_0xdf3c('0xa')](),controller['destroy']);module[_0xdf3c('0x14')]=router;
\ No newline at end of file
index ba6ce16..9f38e88 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x2e4aa2,_0x11956a){var _0x5e6092=function(_0x4c12c2){while(--_0x4c12c2){_0x2e4aa2['push'](_0x2e4aa2['shift']());}};_0x5e6092(++_0x11956a);}(_0x7a54,0x106));var _0x47a5=function(_0x1b59e4,_0x36edbb){_0x1b59e4=_0x1b59e4-0x0;var _0x48ceb9=_0x7a54[_0x1b59e4];return _0x48ceb9;};'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(_0xaa1b3e,_0x47d976){var _0x454d7d=function(_0x575b32){while(--_0x575b32){_0xaa1b3e['push'](_0xaa1b3e['shift']());}};_0x454d7d(++_0x47d976);}(_0x7a54,0x106));var _0x47a5=function(_0x46a344,_0x43bd94){_0x46a344=_0x46a344-0x0;var _0x40bc8f=_0x7a54[_0x46a344];return _0x40bc8f;};'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 871ccc4..2896c62 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6075=['end','json','offset','limit','undefined','count','Content-Range','apply','reject','update','then','destroy','error','stack','name','index','map','JscriptyAnswerReport','type','key','model','keys','query','filters','intersection','attributes','fields','hasOwnProperty','sort','filter','where','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','length','options','find','create','body','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status'];(function(_0x3921a2,_0x5e9bab){var _0x4687e9=function(_0x32f991){while(--_0x32f991){_0x3921a2['push'](_0x3921a2['shift']());}};_0x4687e9(++_0x5e9bab);}(_0x6075,0x191));var _0x5607=function(_0x31c78d,_0x594960){_0x31c78d=_0x31c78d-0x0;var _0x4fc2cb=_0x6075[_0x31c78d];return _0x4fc2cb;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5607('0x0'));var zipdir=require(_0x5607('0x1'));var jsonpatch=require(_0x5607('0x2'));var rp=require(_0x5607('0x3'));var moment=require(_0x5607('0x4'));var BPromise=require(_0x5607('0x5'));var Mustache=require(_0x5607('0x6'));var util=require(_0x5607('0x7'));var path=require(_0x5607('0x8'));var sox=require('sox');var csv=require(_0x5607('0x9'));var ejs=require(_0x5607('0xa'));var fs=require('fs');var fs_extra=require(_0x5607('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x5607('0xc'));var jsforce=require(_0x5607('0xd'));var deskjs=require(_0x5607('0xe'));var toCsv=require(_0x5607('0x9'));var querystring=require(_0x5607('0xf'));var Papa=require('papaparse');var Redis=require(_0x5607('0x10'));var authService=require(_0x5607('0x11'));var qs=require(_0x5607('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5607('0x13'));var logger=require('../../config/logger')('api');var utils=require(_0x5607('0x14'));var config=require(_0x5607('0x15'));var licenseUtil=require(_0x5607('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2c8013,_0x42a405){_0x42a405=_0x42a405||0xcc;return function(_0xc534bd){if(_0xc534bd){return _0x2c8013[_0x5607('0x17')](_0x42a405);}return _0x2c8013[_0x5607('0x18')](_0x42a405)[_0x5607('0x19')]();};}function respondWithResult(_0x138d74,_0x1c8cbc){_0x1c8cbc=_0x1c8cbc||0xc8;return function(_0x2daf4c){if(_0x2daf4c){return _0x138d74['status'](_0x1c8cbc)[_0x5607('0x1a')](_0x2daf4c);}};}function respondWithFilteredResult(_0x275c5d,_0xe3e004){return function(_0x505b12){if(_0x505b12){var _0x556397=typeof _0xe3e004[_0x5607('0x1b')]==='undefined'&&typeof _0xe3e004[_0x5607('0x1c')]===_0x5607('0x1d');var _0x1fa238=_0x505b12[_0x5607('0x1e')];var _0x3eaaa0=_0x556397?0x0:_0xe3e004[_0x5607('0x1b')];var _0x55689e=_0x556397?_0x505b12[_0x5607('0x1e')]:_0xe3e004['offset']+_0xe3e004[_0x5607('0x1c')];var _0x3e071b;if(_0x55689e>=_0x1fa238){_0x55689e=_0x1fa238;_0x3e071b=0xc8;}else{_0x3e071b=0xce;}_0x275c5d[_0x5607('0x18')](_0x3e071b);return _0x275c5d['set'](_0x5607('0x1f'),_0x3eaaa0+'-'+_0x55689e+'/'+_0x1fa238)[_0x5607('0x1a')](_0x505b12);}return null;};}function patchUpdates(_0x303089){return function(_0x4e66f0){try{jsonpatch[_0x5607('0x20')](_0x4e66f0,_0x303089,!![]);}catch(_0x2fdc13){return BPromise[_0x5607('0x21')](_0x2fdc13);}return _0x4e66f0['save']();};}function saveUpdates(_0x44f7a2,_0x4feb1c){return function(_0x49f918){if(_0x49f918){return _0x49f918[_0x5607('0x22')](_0x44f7a2)[_0x5607('0x23')](function(_0x32d30a){return _0x32d30a;});}return null;};}function removeEntity(_0x2d983f,_0x351c32){return function(_0x34df69){if(_0x34df69){return _0x34df69[_0x5607('0x24')]()[_0x5607('0x23')](function(){_0x2d983f[_0x5607('0x18')](0xcc)[_0x5607('0x19')]();});}};}function handleEntityNotFound(_0x593df7,_0x20ae60){return function(_0x27e144){if(!_0x27e144){_0x593df7['sendStatus'](0x194);}return _0x27e144;};}function handleError(_0xa83081,_0x14dd08){_0x14dd08=_0x14dd08||0x1f4;return function(_0xdb07c8){logger[_0x5607('0x25')](_0xdb07c8[_0x5607('0x26')]);if(_0xdb07c8[_0x5607('0x27')]){delete _0xdb07c8[_0x5607('0x27')];}_0xa83081[_0x5607('0x18')](_0x14dd08)['send'](_0xdb07c8);};}exports[_0x5607('0x28')]=function(_0x309ede,_0x51b7d5){var _0x5932ae={},_0x12f58f={},_0x40f20e={'count':0x0,'rows':[]};var _0xe8788=_[_0x5607('0x29')](db[_0x5607('0x2a')]['rawAttributes'],function(_0x2575c3){return{'name':_0x2575c3['fieldName'],'type':_0x2575c3[_0x5607('0x2b')][_0x5607('0x2c')]};});_0x12f58f[_0x5607('0x2d')]=_['map'](_0xe8788,_0x5607('0x27'));_0x12f58f['query']=_[_0x5607('0x2e')](_0x309ede[_0x5607('0x2f')]);_0x12f58f[_0x5607('0x30')]=_[_0x5607('0x31')](_0x12f58f[_0x5607('0x2d')],_0x12f58f['query']);_0x5932ae[_0x5607('0x32')]=_['intersection'](_0x12f58f[_0x5607('0x2d')],qs[_0x5607('0x33')](_0x309ede['query'][_0x5607('0x33')]));_0x5932ae[_0x5607('0x32')]=_0x5932ae[_0x5607('0x32')]['length']?_0x5932ae[_0x5607('0x32')]:_0x12f58f[_0x5607('0x2d')];if(!_0x309ede[_0x5607('0x2f')][_0x5607('0x34')]('nolimit')){_0x5932ae[_0x5607('0x1c')]=qs[_0x5607('0x1c')](_0x309ede['query'][_0x5607('0x1c')]);_0x5932ae[_0x5607('0x1b')]=qs[_0x5607('0x1b')](_0x309ede['query'][_0x5607('0x1b')]);}_0x5932ae['order']=qs[_0x5607('0x35')](_0x309ede[_0x5607('0x2f')][_0x5607('0x35')]);_0x5932ae['where']=qs['filters'](_['pick'](_0x309ede[_0x5607('0x2f')],_0x12f58f[_0x5607('0x30')]),_0xe8788);if(_0x309ede[_0x5607('0x2f')][_0x5607('0x36')]){_0x5932ae[_0x5607('0x37')]=_[_0x5607('0x38')](_0x5932ae[_0x5607('0x37')],{'$or':_[_0x5607('0x29')](_0xe8788,function(_0x54cc53){if(_0x54cc53[_0x5607('0x2b')]!==_0x5607('0x39')){var _0x1671f0={};_0x1671f0[_0x54cc53[_0x5607('0x27')]]={'$like':'%'+_0x309ede['query'][_0x5607('0x36')]+'%'};return _0x1671f0;}})});}_0x5932ae=_[_0x5607('0x38')]({},_0x5932ae,_0x309ede['options']);var _0x4a5cef={'where':_0x5932ae[_0x5607('0x37')]};return db[_0x5607('0x2a')][_0x5607('0x1e')](_0x4a5cef)['then'](function(_0x562fa6){_0x40f20e['count']=_0x562fa6;if(_0x309ede[_0x5607('0x2f')][_0x5607('0x3a')]){_0x5932ae[_0x5607('0x3b')]=[{'all':!![]}];}return db['JscriptyAnswerReport'][_0x5607('0x3c')](_0x5932ae);})[_0x5607('0x23')](function(_0x458e15){_0x40f20e[_0x5607('0x3d')]=_0x458e15;return _0x40f20e;})[_0x5607('0x23')](respondWithFilteredResult(_0x51b7d5,_0x5932ae))[_0x5607('0x3e')](handleError(_0x51b7d5,null));};exports[_0x5607('0x3f')]=function(_0x5058b5,_0x57be05){var _0x2b34b4={'raw':!![],'where':{'id':_0x5058b5[_0x5607('0x40')]['id']}},_0x3b8397={};_0x3b8397['model']=_[_0x5607('0x2e')](db[_0x5607('0x2a')]['rawAttributes']);_0x3b8397[_0x5607('0x2f')]=_[_0x5607('0x2e')](_0x5058b5['query']);_0x3b8397['filters']=_[_0x5607('0x31')](_0x3b8397[_0x5607('0x2d')],_0x3b8397[_0x5607('0x2f')]);_0x2b34b4['attributes']=_[_0x5607('0x31')](_0x3b8397[_0x5607('0x2d')],qs['fields'](_0x5058b5[_0x5607('0x2f')][_0x5607('0x33')]));_0x2b34b4['attributes']=_0x2b34b4[_0x5607('0x32')][_0x5607('0x41')]?_0x2b34b4[_0x5607('0x32')]:_0x3b8397['model'];if(_0x5058b5[_0x5607('0x2f')][_0x5607('0x3a')]){_0x2b34b4[_0x5607('0x3b')]=[{'all':!![]}];}_0x2b34b4=_[_0x5607('0x38')]({},_0x2b34b4,_0x5058b5[_0x5607('0x42')]);return db['JscriptyAnswerReport'][_0x5607('0x43')](_0x2b34b4)[_0x5607('0x23')](handleEntityNotFound(_0x57be05,null))[_0x5607('0x23')](respondWithResult(_0x57be05,null))[_0x5607('0x3e')](handleError(_0x57be05,null));};exports[_0x5607('0x44')]=function(_0x51c1fc,_0x1a5483){return db['JscriptyAnswerReport'][_0x5607('0x44')](_0x51c1fc[_0x5607('0x45')],{})[_0x5607('0x23')](respondWithResult(_0x1a5483,0xc9))[_0x5607('0x3e')](handleError(_0x1a5483,null));};exports[_0x5607('0x22')]=function(_0x416060,_0x4a904b){if(_0x416060['body']['id']){delete _0x416060['body']['id'];}return db[_0x5607('0x2a')][_0x5607('0x43')]({'where':{'id':_0x416060['params']['id']}})[_0x5607('0x23')](handleEntityNotFound(_0x4a904b,null))[_0x5607('0x23')](saveUpdates(_0x416060[_0x5607('0x45')],null))[_0x5607('0x23')](respondWithResult(_0x4a904b,null))[_0x5607('0x3e')](handleError(_0x4a904b,null));};exports[_0x5607('0x24')]=function(_0xccd4f5,_0xf554a0){return db[_0x5607('0x2a')][_0x5607('0x43')]({'where':{'id':_0xccd4f5[_0x5607('0x40')]['id']}})[_0x5607('0x23')](handleEntityNotFound(_0xf554a0,null))[_0x5607('0x23')](removeEntity(_0xf554a0,null))[_0x5607('0x3e')](handleError(_0xf554a0,null));};exports[_0x5607('0x46')]=function(_0x3edc1d,_0x2955e8){return db['JscriptyAnswerReport'][_0x5607('0x46')]()['then'](respondWithResult(_0x2955e8,null))[_0x5607('0x3e')](handleError(_0x2955e8,null));};
\ No newline at end of file
+var _0x0689=['end','json','offset','undefined','count','limit','set','Content-Range','apply','then','destroy','error','name','send','index','map','JscriptyAnswerReport','fieldName','type','key','model','query','keys','filters','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','where','merge','VIRTUAL','filter','options','includeAll','include','findAll','catch','show','params','intersection','length','find','create','body','update','describe','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status'];(function(_0x1546eb,_0x2b6de2){var _0x128f64=function(_0x23bc22){while(--_0x23bc22){_0x1546eb['push'](_0x1546eb['shift']());}};_0x128f64(++_0x2b6de2);}(_0x0689,0x161));var _0x9068=function(_0x1ba907,_0x256d25){_0x1ba907=_0x1ba907-0x0;var _0x4053dd=_0x0689[_0x1ba907];return _0x4053dd;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9068('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x9068('0x1'));var rp=require(_0x9068('0x2'));var moment=require(_0x9068('0x3'));var BPromise=require(_0x9068('0x4'));var Mustache=require(_0x9068('0x5'));var util=require(_0x9068('0x6'));var path=require(_0x9068('0x7'));var sox=require(_0x9068('0x8'));var csv=require(_0x9068('0x9'));var ejs=require(_0x9068('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9068('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x9068('0xc'));var deskjs=require(_0x9068('0xd'));var toCsv=require(_0x9068('0x9'));var querystring=require(_0x9068('0xe'));var Papa=require(_0x9068('0xf'));var Redis=require(_0x9068('0x10'));var authService=require(_0x9068('0x11'));var qs=require(_0x9068('0x12'));var as=require(_0x9068('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x9068('0x14'))(_0x9068('0x15'));var utils=require(_0x9068('0x16'));var config=require(_0x9068('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x9068('0x18'))['db'];function respondWithStatusCode(_0x1a89d4,_0x39eae8){_0x39eae8=_0x39eae8||0xcc;return function(_0x4ba797){if(_0x4ba797){return _0x1a89d4[_0x9068('0x19')](_0x39eae8);}return _0x1a89d4[_0x9068('0x1a')](_0x39eae8)[_0x9068('0x1b')]();};}function respondWithResult(_0x479675,_0x322640){_0x322640=_0x322640||0xc8;return function(_0x3ea030){if(_0x3ea030){return _0x479675['status'](_0x322640)[_0x9068('0x1c')](_0x3ea030);}};}function respondWithFilteredResult(_0x2952f8,_0x486714){return function(_0x1ad536){if(_0x1ad536){var _0x412dbf=typeof _0x486714[_0x9068('0x1d')]===_0x9068('0x1e')&&typeof _0x486714['limit']===_0x9068('0x1e');var _0x376f6d=_0x1ad536[_0x9068('0x1f')];var _0x36d591=_0x412dbf?0x0:_0x486714[_0x9068('0x1d')];var _0x1d09bf=_0x412dbf?_0x1ad536[_0x9068('0x1f')]:_0x486714[_0x9068('0x1d')]+_0x486714[_0x9068('0x20')];var _0x5844b6;if(_0x1d09bf>=_0x376f6d){_0x1d09bf=_0x376f6d;_0x5844b6=0xc8;}else{_0x5844b6=0xce;}_0x2952f8[_0x9068('0x1a')](_0x5844b6);return _0x2952f8[_0x9068('0x21')](_0x9068('0x22'),_0x36d591+'-'+_0x1d09bf+'/'+_0x376f6d)[_0x9068('0x1c')](_0x1ad536);}return null;};}function patchUpdates(_0xb6bf1e){return function(_0x427744){try{jsonpatch[_0x9068('0x23')](_0x427744,_0xb6bf1e,!![]);}catch(_0x1bc81b){return BPromise['reject'](_0x1bc81b);}return _0x427744['save']();};}function saveUpdates(_0x48a2de,_0x4537e7){return function(_0x5cab20){if(_0x5cab20){return _0x5cab20['update'](_0x48a2de)[_0x9068('0x24')](function(_0x290d94){return _0x290d94;});}return null;};}function removeEntity(_0x32231b,_0x3673b9){return function(_0x5d708a){if(_0x5d708a){return _0x5d708a[_0x9068('0x25')]()[_0x9068('0x24')](function(){_0x32231b[_0x9068('0x1a')](0xcc)[_0x9068('0x1b')]();});}};}function handleEntityNotFound(_0x12f17f,_0x28615e){return function(_0x4b93d9){if(!_0x4b93d9){_0x12f17f[_0x9068('0x19')](0x194);}return _0x4b93d9;};}function handleError(_0x3ee9aa,_0x4f48c3){_0x4f48c3=_0x4f48c3||0x1f4;return function(_0x12369a){logger[_0x9068('0x26')](_0x12369a['stack']);if(_0x12369a['name']){delete _0x12369a[_0x9068('0x27')];}_0x3ee9aa['status'](_0x4f48c3)[_0x9068('0x28')](_0x12369a);};}exports[_0x9068('0x29')]=function(_0x422e89,_0x1ceef5){var _0x2f14ab={},_0x4fd2e2={},_0x94b290={'count':0x0,'rows':[]};var _0x412b82=_[_0x9068('0x2a')](db[_0x9068('0x2b')]['rawAttributes'],function(_0x5a49b8){return{'name':_0x5a49b8[_0x9068('0x2c')],'type':_0x5a49b8[_0x9068('0x2d')][_0x9068('0x2e')]};});_0x4fd2e2[_0x9068('0x2f')]=_[_0x9068('0x2a')](_0x412b82,_0x9068('0x27'));_0x4fd2e2[_0x9068('0x30')]=_[_0x9068('0x31')](_0x422e89[_0x9068('0x30')]);_0x4fd2e2[_0x9068('0x32')]=_['intersection'](_0x4fd2e2[_0x9068('0x2f')],_0x4fd2e2[_0x9068('0x30')]);_0x2f14ab[_0x9068('0x33')]=_['intersection'](_0x4fd2e2[_0x9068('0x2f')],qs[_0x9068('0x34')](_0x422e89[_0x9068('0x30')][_0x9068('0x34')]));_0x2f14ab['attributes']=_0x2f14ab[_0x9068('0x33')]['length']?_0x2f14ab[_0x9068('0x33')]:_0x4fd2e2['model'];if(!_0x422e89[_0x9068('0x30')][_0x9068('0x35')](_0x9068('0x36'))){_0x2f14ab[_0x9068('0x20')]=qs[_0x9068('0x20')](_0x422e89['query'][_0x9068('0x20')]);_0x2f14ab[_0x9068('0x1d')]=qs[_0x9068('0x1d')](_0x422e89[_0x9068('0x30')][_0x9068('0x1d')]);}_0x2f14ab[_0x9068('0x37')]=qs[_0x9068('0x38')](_0x422e89[_0x9068('0x30')][_0x9068('0x38')]);_0x2f14ab['where']=qs[_0x9068('0x32')](_[_0x9068('0x39')](_0x422e89[_0x9068('0x30')],_0x4fd2e2[_0x9068('0x32')]),_0x412b82);if(_0x422e89['query']['filter']){_0x2f14ab[_0x9068('0x3a')]=_[_0x9068('0x3b')](_0x2f14ab[_0x9068('0x3a')],{'$or':_[_0x9068('0x2a')](_0x412b82,function(_0x108e98){if(_0x108e98[_0x9068('0x2d')]!==_0x9068('0x3c')){var _0x3e3dc0={};_0x3e3dc0[_0x108e98[_0x9068('0x27')]]={'$like':'%'+_0x422e89[_0x9068('0x30')][_0x9068('0x3d')]+'%'};return _0x3e3dc0;}})});}_0x2f14ab=_[_0x9068('0x3b')]({},_0x2f14ab,_0x422e89[_0x9068('0x3e')]);var _0x3749ff={'where':_0x2f14ab[_0x9068('0x3a')]};return db[_0x9068('0x2b')][_0x9068('0x1f')](_0x3749ff)[_0x9068('0x24')](function(_0x53201f){_0x94b290[_0x9068('0x1f')]=_0x53201f;if(_0x422e89[_0x9068('0x30')][_0x9068('0x3f')]){_0x2f14ab[_0x9068('0x40')]=[{'all':!![]}];}return db['JscriptyAnswerReport'][_0x9068('0x41')](_0x2f14ab);})['then'](function(_0x36bfb2){_0x94b290['rows']=_0x36bfb2;return _0x94b290;})[_0x9068('0x24')](respondWithFilteredResult(_0x1ceef5,_0x2f14ab))[_0x9068('0x42')](handleError(_0x1ceef5,null));};exports[_0x9068('0x43')]=function(_0x2a911a,_0x4a1efd){var _0x399dfd={'raw':!![],'where':{'id':_0x2a911a[_0x9068('0x44')]['id']}},_0x2e7480={};_0x2e7480[_0x9068('0x2f')]=_[_0x9068('0x31')](db[_0x9068('0x2b')]['rawAttributes']);_0x2e7480['query']=_[_0x9068('0x31')](_0x2a911a[_0x9068('0x30')]);_0x2e7480[_0x9068('0x32')]=_[_0x9068('0x45')](_0x2e7480[_0x9068('0x2f')],_0x2e7480[_0x9068('0x30')]);_0x399dfd[_0x9068('0x33')]=_[_0x9068('0x45')](_0x2e7480[_0x9068('0x2f')],qs[_0x9068('0x34')](_0x2a911a['query'][_0x9068('0x34')]));_0x399dfd[_0x9068('0x33')]=_0x399dfd['attributes'][_0x9068('0x46')]?_0x399dfd['attributes']:_0x2e7480[_0x9068('0x2f')];if(_0x2a911a['query'][_0x9068('0x3f')]){_0x399dfd[_0x9068('0x40')]=[{'all':!![]}];}_0x399dfd=_['merge']({},_0x399dfd,_0x2a911a[_0x9068('0x3e')]);return db[_0x9068('0x2b')][_0x9068('0x47')](_0x399dfd)[_0x9068('0x24')](handleEntityNotFound(_0x4a1efd,null))['then'](respondWithResult(_0x4a1efd,null))[_0x9068('0x42')](handleError(_0x4a1efd,null));};exports[_0x9068('0x48')]=function(_0x5ace24,_0x18430f){return db[_0x9068('0x2b')][_0x9068('0x48')](_0x5ace24[_0x9068('0x49')],{})[_0x9068('0x24')](respondWithResult(_0x18430f,0xc9))[_0x9068('0x42')](handleError(_0x18430f,null));};exports[_0x9068('0x4a')]=function(_0x552933,_0x49513f){if(_0x552933['body']['id']){delete _0x552933['body']['id'];}return db['JscriptyAnswerReport'][_0x9068('0x47')]({'where':{'id':_0x552933[_0x9068('0x44')]['id']}})[_0x9068('0x24')](handleEntityNotFound(_0x49513f,null))[_0x9068('0x24')](saveUpdates(_0x552933[_0x9068('0x49')],null))[_0x9068('0x24')](respondWithResult(_0x49513f,null))['catch'](handleError(_0x49513f,null));};exports[_0x9068('0x25')]=function(_0x4cea5d,_0x146964){return db[_0x9068('0x2b')]['find']({'where':{'id':_0x4cea5d[_0x9068('0x44')]['id']}})[_0x9068('0x24')](handleEntityNotFound(_0x146964,null))[_0x9068('0x24')](removeEntity(_0x146964,null))[_0x9068('0x42')](handleError(_0x146964,null));};exports[_0x9068('0x4b')]=function(_0x2a6deb,_0x228f22){return db[_0x9068('0x2b')][_0x9068('0x4b')]()[_0x9068('0x24')](respondWithResult(_0x228f22,null))[_0x9068('0x42')](handleError(_0x228f22,null));};
\ No newline at end of file
index ed0389a..e45d785 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbfb8=['request-promise','path','../../config/environment','exports','define','JscriptyAnswerReport','report_jscripty_answers','lodash','util','api','moment'];(function(_0x5d4eec,_0x2126e6){var _0x208d98=function(_0x56a0cb){while(--_0x56a0cb){_0x5d4eec['push'](_0x5d4eec['shift']());}};_0x208d98(++_0x2126e6);}(_0xbfb8,0xf9));var _0x8bfb=function(_0x27b2ac,_0x4abdb6){_0x27b2ac=_0x27b2ac-0x0;var _0x3697a9=_0xbfb8[_0x27b2ac];return _0x3697a9;};'use strict';var _=require(_0x8bfb('0x0'));var util=require(_0x8bfb('0x1'));var logger=require('../../config/logger')(_0x8bfb('0x2'));var moment=require(_0x8bfb('0x3'));var BPromise=require('bluebird');var rp=require(_0x8bfb('0x4'));var fs=require('fs');var path=require(_0x8bfb('0x5'));var rimraf=require('rimraf');var config=require(_0x8bfb('0x6'));var attributes=require('./jscriptyAnswerReport.attributes');module[_0x8bfb('0x7')]=function(_0x5db7f4,_0x413c3c){return _0x5db7f4[_0x8bfb('0x8')](_0x8bfb('0x9'),attributes,{'tableName':_0x8bfb('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3e45=['../../config/environment','./jscriptyAnswerReport.attributes','define','JscriptyAnswerReport','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x1cffde,_0x46e288){var _0x4db15c=function(_0x4467d8){while(--_0x4467d8){_0x1cffde['push'](_0x1cffde['shift']());}};_0x4db15c(++_0x46e288);}(_0x3e45,0x14e));var _0x53e4=function(_0x54b8d8,_0x26db09){_0x54b8d8=_0x54b8d8-0x0;var _0x2b84bf=_0x3e45[_0x54b8d8];return _0x2b84bf;};'use strict';var _=require('lodash');var util=require(_0x53e4('0x0'));var logger=require(_0x53e4('0x1'))(_0x53e4('0x2'));var moment=require(_0x53e4('0x3'));var BPromise=require(_0x53e4('0x4'));var rp=require(_0x53e4('0x5'));var fs=require('fs');var path=require(_0x53e4('0x6'));var rimraf=require('rimraf');var config=require(_0x53e4('0x7'));var attributes=require(_0x53e4('0x8'));module['exports']=function(_0x3ead1a,_0x2f0765){return _0x3ead1a[_0x53e4('0x9')](_0x53e4('0xa'),attributes,{'tableName':'report_jscripty_answers','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 555b7f5..c445ba0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea08=['catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','then','info','request\x20sent','debug','JscriptyAnswerReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','JscriptyAnswerReport,\x20%s,\x20%s','result'];(function(_0x5b3950,_0x4e5556){var _0x41e436=function(_0x139e30){while(--_0x139e30){_0x5b3950['push'](_0x5b3950['shift']());}};_0x41e436(++_0x4e5556);}(_0xea08,0x1b6));var _0x8ea0=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xea08[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x8ea0('0x0'));var util=require('util');var moment=require(_0x8ea0('0x1'));var BPromise=require(_0x8ea0('0x2'));var rs=require(_0x8ea0('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8ea0('0x4'))['db'];var utils=require(_0x8ea0('0x5'));var logger=require(_0x8ea0('0x6'))('rpc');var config=require(_0x8ea0('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x8ea0('0x8')][_0x8ea0('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x129514,_0xa365c5,_0x444a06){return new BPromise(function(_0x305305,_0x4e06c6){return client[_0x8ea0('0xa')](_0x129514,_0x444a06)[_0x8ea0('0xb')](function(_0x5f0403){logger[_0x8ea0('0xc')]('JscriptyAnswerReport,\x20%s,\x20%s',_0xa365c5,_0x8ea0('0xd'));logger[_0x8ea0('0xe')](_0x8ea0('0xf'),_0xa365c5,_0x8ea0('0xd'),JSON[_0x8ea0('0x10')](_0x5f0403));if(_0x5f0403['error']){if(_0x5f0403[_0x8ea0('0x11')][_0x8ea0('0x12')]===0x1f4){logger[_0x8ea0('0x11')]('JscriptyAnswerReport,\x20%s,\x20%s',_0xa365c5,_0x5f0403['error'][_0x8ea0('0x13')]);return _0x4e06c6(_0x5f0403[_0x8ea0('0x11')][_0x8ea0('0x13')]);}logger['error'](_0x8ea0('0x14'),_0xa365c5,_0x5f0403['error'][_0x8ea0('0x13')]);return _0x305305(_0x5f0403['error'][_0x8ea0('0x13')]);}else{logger['info'](_0x8ea0('0x14'),_0xa365c5,_0x8ea0('0xd'));_0x305305(_0x5f0403[_0x8ea0('0x15')]['message']);}})[_0x8ea0('0x16')](function(_0x400ba4){logger[_0x8ea0('0x11')](_0x8ea0('0x14'),_0xa365c5,_0x400ba4);_0x4e06c6(_0x400ba4);});});}
\ No newline at end of file
+var _0x69da=['ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','JscriptyAnswerReport,\x20%s,\x20%s','request\x20sent','debug','JscriptyAnswerReport,\x20%s,\x20%s,\x20%s','error','message','result','lodash','util','moment','bluebird','randomstring'];(function(_0x4ec20c,_0x43558e){var _0x142983=function(_0x5a6f86){while(--_0x5a6f86){_0x4ec20c['push'](_0x4ec20c['shift']());}};_0x142983(++_0x43558e);}(_0x69da,0xca));var _0xa69d=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x69da[_0xa464c9];return _0x3d73c4;};'use strict';var _=require(_0xa69d('0x0'));var util=require(_0xa69d('0x1'));var moment=require(_0xa69d('0x2'));var BPromise=require(_0xa69d('0x3'));var rs=require(_0xa69d('0x4'));var fs=require('fs');var Redis=require(_0xa69d('0x5'));var db=require(_0xa69d('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xa69d('0x7'))(_0xa69d('0x8'));var config=require(_0xa69d('0x9'));var jayson=require(_0xa69d('0xa'));var client=jayson[_0xa69d('0xb')][_0xa69d('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x1545a8,_0x5d47c9,_0x2d4ff5){return new BPromise(function(_0xc37d41,_0x277bab){return client[_0xa69d('0xd')](_0x1545a8,_0x2d4ff5)[_0xa69d('0xe')](function(_0x4880e4){logger[_0xa69d('0xf')](_0xa69d('0x10'),_0x5d47c9,_0xa69d('0x11'));logger[_0xa69d('0x12')](_0xa69d('0x13'),_0x5d47c9,_0xa69d('0x11'),JSON['stringify'](_0x4880e4));if(_0x4880e4[_0xa69d('0x14')]){if(_0x4880e4[_0xa69d('0x14')]['code']===0x1f4){logger[_0xa69d('0x14')](_0xa69d('0x10'),_0x5d47c9,_0x4880e4[_0xa69d('0x14')][_0xa69d('0x15')]);return _0x277bab(_0x4880e4[_0xa69d('0x14')][_0xa69d('0x15')]);}logger['error'](_0xa69d('0x10'),_0x5d47c9,_0x4880e4[_0xa69d('0x14')][_0xa69d('0x15')]);return _0xc37d41(_0x4880e4[_0xa69d('0x14')][_0xa69d('0x15')]);}else{logger[_0xa69d('0xf')](_0xa69d('0x10'),_0x5d47c9,_0xa69d('0x11'));_0xc37d41(_0x4880e4[_0xa69d('0x16')][_0xa69d('0x15')]);}})['catch'](function(_0x1347a2){logger[_0xa69d('0x14')](_0xa69d('0x10'),_0x5d47c9,_0x1347a2);_0x277bab(_0x1347a2);});});}
\ No newline at end of file
index 1970b7f..437e151 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f27=['post','create','put','/:id','update','delete','destroy','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id/sessions','getSessions','/:id/answers','/:id/summary','30s'];(function(_0x567488,_0x14a925){var _0x3e9524=function(_0x42ee51){while(--_0x42ee51){_0x567488['push'](_0x567488['shift']());}};_0x3e9524(++_0x14a925);}(_0x9f27,0xe3));var _0x79f2=function(_0x45da96,_0x7b8876){_0x45da96=_0x45da96-0x0;var _0x192a94=_0x9f27[_0x45da96];return _0x192a94;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x79f2('0x0'));var timeout=require(_0x79f2('0x1'));var express=require(_0x79f2('0x2'));var router=express[_0x79f2('0x3')]();var fs_extra=require(_0x79f2('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x79f2('0x5'));var config=require(_0x79f2('0x6'));var controller=require('./jscriptyProject.controller');router[_0x79f2('0x7')]('/',auth[_0x79f2('0x8')](),controller[_0x79f2('0x9')]);router[_0x79f2('0x7')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0x79f2('0x7')](_0x79f2('0xa'),auth[_0x79f2('0x8')](),controller[_0x79f2('0xb')]);router[_0x79f2('0x7')](_0x79f2('0xc'),auth[_0x79f2('0x8')](),controller['getAnswers']);router[_0x79f2('0x7')](_0x79f2('0xd'),auth[_0x79f2('0x8')](),timeout(_0x79f2('0xe')),controller['getSummary']);router[_0x79f2('0xf')]('/',auth[_0x79f2('0x8')](),controller[_0x79f2('0x10')]);router[_0x79f2('0xf')]('/:id/clone',auth[_0x79f2('0x8')](),controller['clone']);router[_0x79f2('0x11')](_0x79f2('0x12'),auth['isAuthenticated'](),controller[_0x79f2('0x13')]);router[_0x79f2('0x14')](_0x79f2('0x12'),auth[_0x79f2('0x8')](),controller[_0x79f2('0x15')]);module['exports']=router;
\ No newline at end of file
+var _0x4873=['./jscriptyProject.controller','get','isAuthenticated','/:id','show','/:id/sessions','getSessions','/:id/answers','getAnswers','30s','getSummary','post','create','/:id/clone','clone','put','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0x4873,0x164));var _0x3487=function(_0x31cdd8,_0x457afb){_0x31cdd8=_0x31cdd8-0x0;var _0x80d9d4=_0x4873[_0x31cdd8];return _0x80d9d4;};'use strict';var multer=require(_0x3487('0x0'));var util=require('util');var path=require(_0x3487('0x1'));var timeout=require(_0x3487('0x2'));var express=require(_0x3487('0x3'));var router=express[_0x3487('0x4')]();var fs_extra=require(_0x3487('0x5'));var auth=require(_0x3487('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x3487('0x7'));var controller=require(_0x3487('0x8'));router[_0x3487('0x9')]('/',auth[_0x3487('0xa')](),controller['index']);router[_0x3487('0x9')](_0x3487('0xb'),auth[_0x3487('0xa')](),controller[_0x3487('0xc')]);router[_0x3487('0x9')](_0x3487('0xd'),auth[_0x3487('0xa')](),controller[_0x3487('0xe')]);router[_0x3487('0x9')](_0x3487('0xf'),auth['isAuthenticated'](),controller[_0x3487('0x10')]);router['get']('/:id/summary',auth['isAuthenticated'](),timeout(_0x3487('0x11')),controller[_0x3487('0x12')]);router[_0x3487('0x13')]('/',auth[_0x3487('0xa')](),controller[_0x3487('0x14')]);router[_0x3487('0x13')](_0x3487('0x15'),auth[_0x3487('0xa')](),controller[_0x3487('0x16')]);router[_0x3487('0x17')](_0x3487('0xb'),auth[_0x3487('0xa')](),controller[_0x3487('0x18')]);router[_0x3487('0x19')](_0x3487('0xb'),auth[_0x3487('0xa')](),controller[_0x3487('0x1a')]);module[_0x3487('0x1b')]=router;
\ No newline at end of file
index e6d1ee5..c6a2802 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f6f=['STRING','name','TEXT','stringify','isString','setDataValue','format','{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}','getDataValue','description','BOOLEAN','sequelize'];(function(_0x308a1d,_0x3d379d){var _0x5eb875=function(_0x464dbe){while(--_0x464dbe){_0x308a1d['push'](_0x308a1d['shift']());}};_0x5eb875(++_0x3d379d);}(_0x1f6f,0xbf));var _0xf1f6=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x1f6f[_0x2dafbe];return _0x58a45a;};'use strict';var Sequelize=require(_0xf1f6('0x0'));var _=require('lodash');var util=require('util');module['exports']={'name':{'type':Sequelize[_0xf1f6('0x1')],'unique':_0xf1f6('0x2')},'description':{'type':Sequelize[_0xf1f6('0x1')]},'formData':{'type':Sequelize[_0xf1f6('0x3')]('long'),'set':function(_0x454df7){if(_['isObjectLike'](_0x454df7)){this['setDataValue']('formData',JSON[_0xf1f6('0x4')](_0x454df7));}else if(_[_0xf1f6('0x5')](_0x454df7)){this['setDataValue']('formData',_0x454df7);}else{this[_0xf1f6('0x6')]('formData',util[_0xf1f6('0x7')](_0xf1f6('0x8'),this[_0xf1f6('0x9')](_0xf1f6('0x2'))||'',this[_0xf1f6('0x9')](_0xf1f6('0xa'))||''));}}},'enableUncompleteSave':{'type':Sequelize[_0xf1f6('0xb')],'defaultValue':!![]},'sendUnpauseOnSubmit':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0xd3fc=['BOOLEAN','sequelize','util','STRING','name','TEXT','long','isObjectLike','setDataValue','formData','stringify','isString','format','{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}','getDataValue','description'];(function(_0x81dcac,_0x8ff7db){var _0xc7803b=function(_0x499b29){while(--_0x499b29){_0x81dcac['push'](_0x81dcac['shift']());}};_0xc7803b(++_0x8ff7db);}(_0xd3fc,0x101));var _0xcd3f=function(_0x2b29b3,_0x7da1d0){_0x2b29b3=_0x2b29b3-0x0;var _0x1c8d5c=_0xd3fc[_0x2b29b3];return _0x1c8d5c;};'use strict';var Sequelize=require(_0xcd3f('0x0'));var _=require('lodash');var util=require(_0xcd3f('0x1'));module['exports']={'name':{'type':Sequelize[_0xcd3f('0x2')],'unique':_0xcd3f('0x3')},'description':{'type':Sequelize[_0xcd3f('0x2')]},'formData':{'type':Sequelize[_0xcd3f('0x4')](_0xcd3f('0x5')),'set':function(_0x37dc8f){if(_[_0xcd3f('0x6')](_0x37dc8f)){this[_0xcd3f('0x7')](_0xcd3f('0x8'),JSON[_0xcd3f('0x9')](_0x37dc8f));}else if(_[_0xcd3f('0xa')](_0x37dc8f)){this['setDataValue'](_0xcd3f('0x8'),_0x37dc8f);}else{this['setDataValue'](_0xcd3f('0x8'),util[_0xcd3f('0xb')](_0xcd3f('0xc'),this[_0xcd3f('0xd')]('name')||'',this[_0xcd3f('0xd')](_0xcd3f('0xe'))||''));}}},'enableUncompleteSave':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'sendUnpauseOnSubmit':{'type':Sequelize[_0xcd3f('0xf')],'defaultValue':![]}};
\ No newline at end of file
index f2b9fad..e376305 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1dcc=['request-promise','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','count','offset','limit','Content-Range','apply','reject','update','destroy','then','get','Projects','error','stack','index','map','JscriptyProject','fieldName','key','name','query','intersection','model','fields','length','attributes','order','sort','filters','pick','filter','where','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','params','rawAttributes','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','omit','createdAt','updatedAt','UserProfileSection','getSessions','findOne','keys','JscriptySessionReport','nolimit','ProjectId','getAnswers','JscriptyAnswerReport','hasOwnProperty','fromCharCode','toString','indexOf','replace','getSummary','startTime','parse','JscriptyQuestionReport','-createdAt','questionId','question','starttime','format','YYYY-MM-DD\x20HH:mm:ss','SessionId','answer','push','isEmpty','now','writeFileSync','setHeader','attachment;\x20filename=','Jscripty_Project_%d_Summary_%s.csv','Content-type','text/csv','download','/tmp/Jscripty_Project_%d_Summary_%s.csv','eml-format','fast-json-patch'];(function(_0x44d15b,_0xf4adaa){var _0x5d9e81=function(_0x211f00){while(--_0x211f00){_0x44d15b['push'](_0x44d15b['shift']());}};_0x5d9e81(++_0xf4adaa);}(_0x1dcc,0x77));var _0xc1dc=function(_0xc5e82e,_0x12aaf1){_0xc5e82e=_0xc5e82e-0x0;var _0x1bbdb9=_0x1dcc[_0xc5e82e];return _0x1bbdb9;};'use strict';var emlformat=require(_0xc1dc('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xc1dc('0x1'));var rp=require(_0xc1dc('0x2'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xc1dc('0x3'));var util=require(_0xc1dc('0x4'));var path=require(_0xc1dc('0x5'));var sox=require(_0xc1dc('0x6'));var csv=require(_0xc1dc('0x7'));var ejs=require(_0xc1dc('0x8'));var fs=require('fs');var fs_extra=require(_0xc1dc('0x9'));var _=require('lodash');var squel=require(_0xc1dc('0xa'));var crypto=require(_0xc1dc('0xb'));var jsforce=require(_0xc1dc('0xc'));var deskjs=require(_0xc1dc('0xd'));var toCsv=require(_0xc1dc('0x7'));var querystring=require(_0xc1dc('0xe'));var Papa=require(_0xc1dc('0xf'));var Redis=require(_0xc1dc('0x10'));var authService=require(_0xc1dc('0x11'));var qs=require(_0xc1dc('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc1dc('0x13'));var logger=require(_0xc1dc('0x14'))('api');var utils=require(_0xc1dc('0x15'));var config=require(_0xc1dc('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xc1dc('0x17'))['db'];function respondWithStatusCode(_0x2545e8,_0x31cd63){_0x31cd63=_0x31cd63||0xcc;return function(_0x2d407c){if(_0x2d407c){return _0x2545e8[_0xc1dc('0x18')](_0x31cd63);}return _0x2545e8[_0xc1dc('0x19')](_0x31cd63)[_0xc1dc('0x1a')]();};}function respondWithResult(_0x4d9d5e,_0x48abc3){_0x48abc3=_0x48abc3||0xc8;return function(_0x140b0b){if(_0x140b0b){return _0x4d9d5e[_0xc1dc('0x19')](_0x48abc3)[_0xc1dc('0x1b')](_0x140b0b);}};}function respondWithFilteredResult(_0xdfbe60,_0x31191a){return function(_0x209355){if(_0x209355){var _0x1edb66=typeof _0x31191a['offset']==='undefined'&&typeof _0x31191a['limit']==='undefined';var _0x2e2d8e=_0x209355[_0xc1dc('0x1c')];var _0x12510a=_0x1edb66?0x0:_0x31191a[_0xc1dc('0x1d')];var _0x6d7e23=_0x1edb66?_0x209355[_0xc1dc('0x1c')]:_0x31191a['offset']+_0x31191a[_0xc1dc('0x1e')];var _0xcac31f;if(_0x6d7e23>=_0x2e2d8e){_0x6d7e23=_0x2e2d8e;_0xcac31f=0xc8;}else{_0xcac31f=0xce;}_0xdfbe60[_0xc1dc('0x19')](_0xcac31f);return _0xdfbe60['set'](_0xc1dc('0x1f'),_0x12510a+'-'+_0x6d7e23+'/'+_0x2e2d8e)['json'](_0x209355);}return null;};}function patchUpdates(_0xabf65a){return function(_0x214ce3){try{jsonpatch[_0xc1dc('0x20')](_0x214ce3,_0xabf65a,!![]);}catch(_0x3939af){return BPromise[_0xc1dc('0x21')](_0x3939af);}return _0x214ce3['save']();};}function saveUpdates(_0x3d7a8f,_0x1a92f6){return function(_0x3ce279){if(_0x3ce279){return _0x3ce279[_0xc1dc('0x22')](_0x3d7a8f)['then'](function(_0x31f5eb){return _0x31f5eb;});}return null;};}function removeEntity(_0x2c5e5a,_0x57582b){return function(_0x71bf72){if(_0x71bf72){return _0x71bf72[_0xc1dc('0x23')]()[_0xc1dc('0x24')](function(){var _0x21a887=_0x71bf72[_0xc1dc('0x25')]({'plain':!![]});var _0x454ed2=_0xc1dc('0x26');return db['UserProfileResource']['destroy']({'where':{'type':_0x454ed2,'resourceId':_0x21a887['id']}})[_0xc1dc('0x24')](function(){return _0x71bf72;});})['then'](function(){_0x2c5e5a[_0xc1dc('0x19')](0xcc)[_0xc1dc('0x1a')]();});}};}function handleEntityNotFound(_0x413bc7,_0x4dc1ae){return function(_0x580ffc){if(!_0x580ffc){_0x413bc7[_0xc1dc('0x18')](0x194);}return _0x580ffc;};}function handleError(_0x418072,_0x3a8b7f){_0x3a8b7f=_0x3a8b7f||0x1f4;return function(_0x1dc7bc){logger[_0xc1dc('0x27')](_0x1dc7bc[_0xc1dc('0x28')]);if(_0x1dc7bc['name']){delete _0x1dc7bc['name'];}_0x418072[_0xc1dc('0x19')](_0x3a8b7f)['send'](_0x1dc7bc);};}exports[_0xc1dc('0x29')]=function(_0x577fe5,_0x51f940){var _0x10e03f={},_0xc1e849={},_0xfeab2a={'count':0x0,'rows':[]};var _0x2aface=_[_0xc1dc('0x2a')](db[_0xc1dc('0x2b')]['rawAttributes'],function(_0x453412){return{'name':_0x453412[_0xc1dc('0x2c')],'type':_0x453412['type'][_0xc1dc('0x2d')]};});_0xc1e849['model']=_[_0xc1dc('0x2a')](_0x2aface,_0xc1dc('0x2e'));_0xc1e849[_0xc1dc('0x2f')]=_['keys'](_0x577fe5[_0xc1dc('0x2f')]);_0xc1e849['filters']=_[_0xc1dc('0x30')](_0xc1e849[_0xc1dc('0x31')],_0xc1e849[_0xc1dc('0x2f')]);_0x10e03f['attributes']=_[_0xc1dc('0x30')](_0xc1e849[_0xc1dc('0x31')],qs[_0xc1dc('0x32')](_0x577fe5[_0xc1dc('0x2f')]['fields']));_0x10e03f['attributes']=_0x10e03f['attributes'][_0xc1dc('0x33')]?_0x10e03f[_0xc1dc('0x34')]:_0xc1e849[_0xc1dc('0x31')];if(!_0x577fe5[_0xc1dc('0x2f')]['hasOwnProperty']('nolimit')){_0x10e03f['limit']=qs[_0xc1dc('0x1e')](_0x577fe5[_0xc1dc('0x2f')][_0xc1dc('0x1e')]);_0x10e03f['offset']=qs[_0xc1dc('0x1d')](_0x577fe5[_0xc1dc('0x2f')][_0xc1dc('0x1d')]);}_0x10e03f[_0xc1dc('0x35')]=qs['sort'](_0x577fe5['query'][_0xc1dc('0x36')]);_0x10e03f['where']=qs[_0xc1dc('0x37')](_[_0xc1dc('0x38')](_0x577fe5[_0xc1dc('0x2f')],_0xc1e849[_0xc1dc('0x37')]),_0x2aface);if(_0x577fe5[_0xc1dc('0x2f')][_0xc1dc('0x39')]){_0x10e03f[_0xc1dc('0x3a')]=_[_0xc1dc('0x3b')](_0x10e03f[_0xc1dc('0x3a')],{'$or':_[_0xc1dc('0x2a')](_0x2aface,function(_0x422f37){if(_0x422f37[_0xc1dc('0x3c')]!==_0xc1dc('0x3d')){var _0x248311={};_0x248311[_0x422f37['name']]={'$like':'%'+_0x577fe5[_0xc1dc('0x2f')][_0xc1dc('0x39')]+'%'};return _0x248311;}})});}_0x10e03f=_[_0xc1dc('0x3b')]({},_0x10e03f,_0x577fe5[_0xc1dc('0x3e')]);var _0x141f2e={'where':_0x10e03f['where']};return db[_0xc1dc('0x2b')][_0xc1dc('0x1c')](_0x141f2e)[_0xc1dc('0x24')](function(_0x322368){_0xfeab2a[_0xc1dc('0x1c')]=_0x322368;if(_0x577fe5[_0xc1dc('0x2f')][_0xc1dc('0x3f')]){_0x10e03f[_0xc1dc('0x40')]=[{'all':!![]}];}return db[_0xc1dc('0x2b')][_0xc1dc('0x41')](_0x10e03f);})['then'](function(_0x24d976){_0xfeab2a[_0xc1dc('0x42')]=_0x24d976;return _0xfeab2a;})['then'](respondWithFilteredResult(_0x51f940,_0x10e03f))[_0xc1dc('0x43')](handleError(_0x51f940,null));};exports['show']=function(_0x376fe2,_0x457d3a){var _0x7e535={'raw':![],'where':{'id':_0x376fe2[_0xc1dc('0x44')]['id']}},_0x1193b4={};_0x1193b4[_0xc1dc('0x31')]=_['keys'](db[_0xc1dc('0x2b')][_0xc1dc('0x45')]);_0x1193b4[_0xc1dc('0x2f')]=_['keys'](_0x376fe2[_0xc1dc('0x2f')]);_0x1193b4[_0xc1dc('0x37')]=_['intersection'](_0x1193b4['model'],_0x1193b4['query']);_0x7e535[_0xc1dc('0x34')]=_[_0xc1dc('0x30')](_0x1193b4[_0xc1dc('0x31')],qs[_0xc1dc('0x32')](_0x376fe2['query'][_0xc1dc('0x32')]));_0x7e535[_0xc1dc('0x34')]=_0x7e535['attributes'][_0xc1dc('0x33')]?_0x7e535[_0xc1dc('0x34')]:_0x1193b4[_0xc1dc('0x31')];if(_0x376fe2['query']['includeAll']){_0x7e535[_0xc1dc('0x40')]=[{'all':!![]}];}_0x7e535=_[_0xc1dc('0x3b')]({},_0x7e535,_0x376fe2[_0xc1dc('0x3e')]);return db[_0xc1dc('0x2b')][_0xc1dc('0x46')](_0x7e535)[_0xc1dc('0x24')](handleEntityNotFound(_0x457d3a,null))[_0xc1dc('0x24')](respondWithResult(_0x457d3a,null))[_0xc1dc('0x43')](handleError(_0x457d3a,null));};exports[_0xc1dc('0x47')]=function(_0x51b970,_0x74756){return db['JscriptyProject'][_0xc1dc('0x47')](_0x51b970[_0xc1dc('0x48')],{})[_0xc1dc('0x24')](function(_0x46f7c4){var _0x8e6a96=_0x51b970[_0xc1dc('0x49')][_0xc1dc('0x25')]({'plain':!![]});if(!_0x8e6a96)throw new Error(_0xc1dc('0x4a'));if(_0x8e6a96[_0xc1dc('0x4b')]===_0xc1dc('0x49')){var _0xcc3f55=_0x46f7c4[_0xc1dc('0x25')]({'plain':!![]});var _0x203b8e=_0xc1dc('0x26');return db['UserProfileSection']['find']({'where':{'name':_0x203b8e,'userProfileId':_0x8e6a96[_0xc1dc('0x4c')]},'raw':!![]})[_0xc1dc('0x24')](function(_0x4de388){if(_0x4de388&&_0x4de388[_0xc1dc('0x4d')]===0x0){return db[_0xc1dc('0x4e')]['create']({'name':_0xcc3f55[_0xc1dc('0x2e')],'resourceId':_0xcc3f55['id'],'type':_0x4de388['name'],'sectionId':_0x4de388['id']},{})[_0xc1dc('0x24')](function(){return _0x46f7c4;});}else{return _0x46f7c4;}})[_0xc1dc('0x43')](function(_0x3c6b1d){logger[_0xc1dc('0x27')](_0xc1dc('0x4f'),_0x3c6b1d);throw _0x3c6b1d;});}return _0x46f7c4;})[_0xc1dc('0x24')](respondWithResult(_0x74756,0xc9))[_0xc1dc('0x43')](handleError(_0x74756,null));};exports[_0xc1dc('0x50')]=function(_0x22c10e,_0x42be97){var _0x50ae51={'where':{'id':_0x22c10e[_0xc1dc('0x44')]['id']}},_0x4f97c0={};_0x4f97c0[_0xc1dc('0x31')]=_['keys'](db['JscriptyProject'][_0xc1dc('0x45')]);_0x50ae51[_0xc1dc('0x34')]=_[_0xc1dc('0x30')](_0x4f97c0[_0xc1dc('0x31')],qs[_0xc1dc('0x32')](_0x22c10e[_0xc1dc('0x2f')][_0xc1dc('0x32')]));_0x50ae51[_0xc1dc('0x34')]=_0x50ae51[_0xc1dc('0x34')]['length']?_0x50ae51[_0xc1dc('0x34')]:_0x4f97c0['model'];if(_0x22c10e[_0xc1dc('0x2f')][_0xc1dc('0x3f')]){_0x50ae51[_0xc1dc('0x40')]=[{'all':!![]}];}_0x50ae51=_[_0xc1dc('0x3b')]({},_0x50ae51,_0x22c10e[_0xc1dc('0x3e')]);return db['JscriptyProject'][_0xc1dc('0x46')](_0x50ae51)[_0xc1dc('0x24')](handleEntityNotFound(_0x42be97,null))[_0xc1dc('0x24')](function(_0x5b1fd6){if(_0x5b1fd6){var _0x3b5b1d=_0x5b1fd6[_0xc1dc('0x25')]({'plain':!![]});_0x3b5b1d=qs[_0xc1dc('0x51')](_0x3b5b1d,['id',_0xc1dc('0x52'),_0xc1dc('0x53')]);_0x22c10e[_0xc1dc('0x48')]=_[_0xc1dc('0x51')](_0x22c10e['body'],['id','createdAt','updatedAt']);return db[_0xc1dc('0x2b')][_0xc1dc('0x47')](_[_0xc1dc('0x3b')](_0x3b5b1d,_0x22c10e['body']),{'include':_0x22c10e[_0xc1dc('0x2f')][_0xc1dc('0x3f')]?[{'all':!![]}]:undefined})[_0xc1dc('0x24')](function(_0x41091d){var _0x17d5e7=_0x22c10e['user']['get']({'plain':!![]});if(!_0x17d5e7)throw new Error(_0xc1dc('0x4a'));if(_0x17d5e7['role']===_0xc1dc('0x49')){var _0x382ba1=_0x41091d['get']({'plain':!![]});var _0x4d26a8=_0xc1dc('0x26');return db[_0xc1dc('0x54')]['find']({'where':{'name':_0x4d26a8,'userProfileId':_0x17d5e7[_0xc1dc('0x4c')]},'raw':!![]})[_0xc1dc('0x24')](function(_0x19ea11){if(_0x19ea11&&_0x19ea11[_0xc1dc('0x4d')]===0x0){return db['UserProfileResource']['create']({'name':_0x382ba1['name'],'resourceId':_0x382ba1['id'],'type':_0x19ea11['name'],'sectionId':_0x19ea11['id']},{})['then'](function(){return _0x41091d;});}else{return _0x41091d;}})['catch'](function(_0x3055f8){logger['error'](_0xc1dc('0x4f'),_0x3055f8);throw _0x3055f8;});}return _0x41091d;});}})['then'](respondWithResult(_0x42be97,0xc9))[_0xc1dc('0x43')](handleError(_0x42be97,null));};exports['update']=function(_0x157d03,_0x37e90f){if(_0x157d03[_0xc1dc('0x48')]['id']){delete _0x157d03[_0xc1dc('0x48')]['id'];}return db[_0xc1dc('0x2b')][_0xc1dc('0x46')]({'where':{'id':_0x157d03[_0xc1dc('0x44')]['id']}})[_0xc1dc('0x24')](handleEntityNotFound(_0x37e90f,null))[_0xc1dc('0x24')](saveUpdates(_0x157d03['body'],null))['then'](respondWithResult(_0x37e90f,null))[_0xc1dc('0x43')](handleError(_0x37e90f,null));};exports[_0xc1dc('0x23')]=function(_0x444095,_0x382990){return db[_0xc1dc('0x2b')][_0xc1dc('0x46')]({'where':{'id':_0x444095['params']['id']}})[_0xc1dc('0x24')](handleEntityNotFound(_0x382990,null))[_0xc1dc('0x24')](removeEntity(_0x382990,null))[_0xc1dc('0x43')](handleError(_0x382990,null));};exports[_0xc1dc('0x55')]=function(_0x588be8,_0xe3cce7,_0x78bf5f){var _0x2df251={'raw':!![],'where':{}};var _0x48768a={};var _0x4599f6={'count':0x0,'rows':[]};return db['JscriptyProject'][_0xc1dc('0x56')]({'where':{'id':_0x588be8[_0xc1dc('0x44')]['id']}})[_0xc1dc('0x24')](handleEntityNotFound(_0xe3cce7,null))[_0xc1dc('0x24')](function(_0x36e903){if(_0x36e903){_0x48768a['model']=_[_0xc1dc('0x57')](db[_0xc1dc('0x58')][_0xc1dc('0x45')]);_0x48768a['query']=_['keys'](_0x588be8['query']);_0x48768a[_0xc1dc('0x37')]=_['intersection'](_0x48768a[_0xc1dc('0x31')],_0x48768a['query']);_0x2df251[_0xc1dc('0x34')]=_[_0xc1dc('0x30')](_0x48768a['model'],qs[_0xc1dc('0x32')](_0x588be8[_0xc1dc('0x2f')][_0xc1dc('0x32')]));_0x2df251[_0xc1dc('0x34')]=_0x2df251[_0xc1dc('0x34')]['length']?_0x2df251[_0xc1dc('0x34')]:_0x48768a[_0xc1dc('0x31')];if(!_0x588be8['query']['hasOwnProperty'](_0xc1dc('0x59'))){_0x2df251[_0xc1dc('0x1e')]=qs['limit'](_0x588be8[_0xc1dc('0x2f')][_0xc1dc('0x1e')]);_0x2df251['offset']=qs[_0xc1dc('0x1d')](_0x588be8['query']['offset']);}_0x2df251[_0xc1dc('0x35')]=qs[_0xc1dc('0x36')](_0x588be8['query'][_0xc1dc('0x36')]);_0x2df251[_0xc1dc('0x3a')]=qs['filters'](_['pick'](_0x588be8[_0xc1dc('0x2f')],_0x48768a[_0xc1dc('0x37')]));_0x2df251[_0xc1dc('0x3a')][_0xc1dc('0x5a')]=_0x36e903['id'];if(_0x588be8[_0xc1dc('0x2f')][_0xc1dc('0x39')]){_0x2df251['where']=_[_0xc1dc('0x3b')](_0x2df251[_0xc1dc('0x3a')],{'$or':_['map'](_0x2df251[_0xc1dc('0x34')],function(_0x1cfb1c){var _0x1fabb1={};_0x1fabb1[_0x1cfb1c]={'$like':'%'+_0x588be8[_0xc1dc('0x2f')][_0xc1dc('0x39')]+'%'};return _0x1fabb1;})});}_0x2df251=_[_0xc1dc('0x3b')]({},_0x2df251,_0x588be8['options']);return db[_0xc1dc('0x58')][_0xc1dc('0x1c')]({'where':_0x2df251[_0xc1dc('0x3a')]})['then'](function(_0x2cc1e2){_0x4599f6[_0xc1dc('0x1c')]=_0x2cc1e2;if(_0x588be8[_0xc1dc('0x2f')][_0xc1dc('0x3f')]){_0x2df251[_0xc1dc('0x40')]=[{'all':!![]}];}return db[_0xc1dc('0x58')][_0xc1dc('0x41')](_0x2df251);})[_0xc1dc('0x24')](function(_0x2c6c1d){_0x4599f6[_0xc1dc('0x42')]=_0x2c6c1d;return _0x4599f6;});}})['then'](respondWithFilteredResult(_0xe3cce7,_0x2df251))['catch'](handleError(_0xe3cce7,null));};exports[_0xc1dc('0x5b')]=function(_0x5f10e8,_0x116e90,_0x327993){var _0x27529f={'raw':!![],'where':{}};var _0x6dbca3={};var _0x2d60ac={'count':0x0,'rows':[]};return db['JscriptyProject'][_0xc1dc('0x56')]({'where':{'id':_0x5f10e8[_0xc1dc('0x44')]['id']}})[_0xc1dc('0x24')](handleEntityNotFound(_0x116e90,null))['then'](function(_0xc4c708){if(_0xc4c708){_0x6dbca3[_0xc1dc('0x31')]=_[_0xc1dc('0x57')](db[_0xc1dc('0x5c')][_0xc1dc('0x45')]);_0x6dbca3[_0xc1dc('0x2f')]=_[_0xc1dc('0x57')](_0x5f10e8[_0xc1dc('0x2f')]);_0x6dbca3[_0xc1dc('0x37')]=_[_0xc1dc('0x30')](_0x6dbca3[_0xc1dc('0x31')],_0x6dbca3['query']);_0x27529f['attributes']=_[_0xc1dc('0x30')](_0x6dbca3['model'],qs[_0xc1dc('0x32')](_0x5f10e8['query'][_0xc1dc('0x32')]));_0x27529f['attributes']=_0x27529f[_0xc1dc('0x34')][_0xc1dc('0x33')]?_0x27529f[_0xc1dc('0x34')]:_0x6dbca3['model'];if(!_0x5f10e8[_0xc1dc('0x2f')][_0xc1dc('0x5d')]('nolimit')){_0x27529f['limit']=qs[_0xc1dc('0x1e')](_0x5f10e8['query'][_0xc1dc('0x1e')]);_0x27529f['offset']=qs[_0xc1dc('0x1d')](_0x5f10e8[_0xc1dc('0x2f')][_0xc1dc('0x1d')]);}_0x27529f[_0xc1dc('0x35')]=qs['sort'](_0x5f10e8[_0xc1dc('0x2f')][_0xc1dc('0x36')]);_0x27529f[_0xc1dc('0x3a')]=qs[_0xc1dc('0x37')](_[_0xc1dc('0x38')](_0x5f10e8[_0xc1dc('0x2f')],_0x6dbca3['filters']));_0x27529f['where'][_0xc1dc('0x5a')]=_0xc4c708['id'];if(_0x5f10e8[_0xc1dc('0x2f')][_0xc1dc('0x39')]){_0x27529f[_0xc1dc('0x3a')]=_[_0xc1dc('0x3b')](_0x27529f[_0xc1dc('0x3a')],{'$or':_['map'](_0x27529f['attributes'],function(_0x22c2de){var _0x3231c1={};_0x3231c1[_0x22c2de]={'$like':'%'+_0x5f10e8[_0xc1dc('0x2f')][_0xc1dc('0x39')]+'%'};return _0x3231c1;})});}_0x27529f=_['merge']({},_0x27529f,_0x5f10e8[_0xc1dc('0x3e')]);return db[_0xc1dc('0x5c')][_0xc1dc('0x1c')]({'where':_0x27529f[_0xc1dc('0x3a')]})[_0xc1dc('0x24')](function(_0x457643){_0x2d60ac[_0xc1dc('0x1c')]=_0x457643;if(_0x5f10e8[_0xc1dc('0x2f')][_0xc1dc('0x3f')]){_0x27529f[_0xc1dc('0x40')]=[{'all':!![]}];}return db['JscriptyAnswerReport'][_0xc1dc('0x41')](_0x27529f);})[_0xc1dc('0x24')](function(_0x2a762a){_0x2d60ac['rows']=_0x2a762a;return _0x2d60ac;});}})[_0xc1dc('0x24')](respondWithFilteredResult(_0x116e90,_0x27529f))[_0xc1dc('0x43')](handleError(_0x116e90,null));};function char(_0x36b712){return'number'===typeof _0x36b712?String[_0xc1dc('0x5e')][_0xc1dc('0x20')](null,arguments):_0x36b712;}function needsEncapsulation(_0x1918b4){return!!_0x1918b4&&(_0x1918b4[_0xc1dc('0x5f')]()[_0xc1dc('0x60')](char(0xd))>=0x0||_0x1918b4[_0xc1dc('0x5f')]()[_0xc1dc('0x60')](char(0xa))>=0x0||_0x1918b4[_0xc1dc('0x5f')]()[_0xc1dc('0x60')](char(0x2c))>=0x0||_0x1918b4[_0xc1dc('0x5f')]()[_0xc1dc('0x60')](char(0x22))>=0x0);}function encapsulate(_0x721f51){var _0x1a6bca=char(0x22),_0x41d99c='\x5c'+char(0x22),_0x175706=_0x721f51[_0xc1dc('0x5f')]()[_0xc1dc('0x61')](new RegExp(_0x1a6bca,'g'),_0x41d99c);return _0x1a6bca+_0x175706+_0x1a6bca;}exports[_0xc1dc('0x62')]=function(_0xa8a711,_0x1a8ebf,_0x621756){var _0x58e6f1,_0x45e11b;var _0x15ab26={'where':{'ProjectId':_0xa8a711[_0xc1dc('0x44')]['id']}};if(_0xa8a711['query'][_0xc1dc('0x63')]){_0x15ab26[_0xc1dc('0x3a')]['starttime']=JSON[_0xc1dc('0x64')](_0xa8a711[_0xc1dc('0x2f')][_0xc1dc('0x63')]);}return db[_0xc1dc('0x58')][_0xc1dc('0x41')](_0x15ab26)[_0xc1dc('0x24')](handleEntityNotFound(_0x1a8ebf,null))[_0xc1dc('0x24')](function(_0x3f1358){if(_0x3f1358){_0x58e6f1=_0x3f1358;return db[_0xc1dc('0x65')][_0xc1dc('0x41')]({'where':{'SessionId':{'$in':_[_0xc1dc('0x2a')](_0x58e6f1,'id')},'ProjectId':_0xa8a711[_0xc1dc('0x44')]['id']},'order':_0xc1dc('0x66')});}})['then'](handleEntityNotFound(_0x1a8ebf,null))[_0xc1dc('0x24')](function(_0x4a8ca1){if(_0x4a8ca1){_0x45e11b=_0x4a8ca1;var _0x509873={};for(var _0x5bd3ea=0x0,_0x7bb24e=_0x45e11b[_0xc1dc('0x33')];_0x5bd3ea<_0x7bb24e;_0x5bd3ea++){if(!_0x509873[_0xc1dc('0x5d')](_0x45e11b[_0x5bd3ea][_0xc1dc('0x67')])){_0x509873[_0x45e11b[_0x5bd3ea]['questionId']]=needsEncapsulation(_0x45e11b[_0x5bd3ea][_0xc1dc('0x68')])?encapsulate(_0x45e11b[_0x5bd3ea][_0xc1dc('0x68')]):_0x45e11b[_0x5bd3ea]['question'];}}var _0x3cb914=[],_0x4c4db2={};for(var _0x1a704f=0x0,_0x28e6bf=_0x58e6f1['length'];_0x1a704f<_0x28e6bf;_0x1a704f++){_0x4c4db2={'ProjectId':_0xa8a711[_0xc1dc('0x44')]['id'],'SessionId':_0x58e6f1[_0x1a704f]['id'],'StartTime':moment(_0x58e6f1[_0x1a704f][_0xc1dc('0x69')])[_0xc1dc('0x6a')](_0xc1dc('0x6b'))};for(var _0x485b53=0x0,_0x4c860e=_0x45e11b[_0xc1dc('0x33')];_0x485b53<_0x4c860e;_0x485b53++){if(_0x45e11b[_0x485b53][_0xc1dc('0x6c')]==_0x58e6f1[_0x1a704f]['id']&&_0x509873[_0xc1dc('0x5d')](_0x45e11b[_0x485b53][_0xc1dc('0x67')])){_0x4c4db2[_0x509873[_0x45e11b[_0x485b53][_0xc1dc('0x67')]]]=_0x45e11b[_0x485b53][_0xc1dc('0x6d')];}}for(var _0x4d1c45 in _0x509873){if(!_0x4c4db2[_0xc1dc('0x5d')](_0x509873[_0x4d1c45])){_0x4c4db2[_0x509873[_0x4d1c45]]=null;}}_0x3cb914[_0xc1dc('0x6e')](_0x4c4db2);}return _0x3cb914;}})[_0xc1dc('0x24')](function(_0x3a9170){if(!_[_0xc1dc('0x6f')](_0x3a9170)){var _0xcd2261=toCsv(_0x3a9170);var _0x700725=Date[_0xc1dc('0x70')]();fs[_0xc1dc('0x71')](util[_0xc1dc('0x6a')]('/tmp/Jscripty_Project_%d_Summary_%s.csv',_0xa8a711['params']['id'],_0x700725),_0xcd2261);_0x1a8ebf[_0xc1dc('0x72')]('Content-disposition',_0xc1dc('0x73')+util[_0xc1dc('0x6a')](_0xc1dc('0x74'),_0xa8a711['params']['id'],_0x700725));_0x1a8ebf[_0xc1dc('0x72')](_0xc1dc('0x75'),_0xc1dc('0x76'));return _0x1a8ebf[_0xc1dc('0x77')](util[_0xc1dc('0x6a')](_0xc1dc('0x78'),_0xa8a711['params']['id'],_0x700725));}else{return _0x1a8ebf[_0xc1dc('0x18')](0xcc);}})['catch'](handleError(_0x1a8ebf,null));};
\ No newline at end of file
+var _0x6c9f=['text/csv','download','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','end','offset','undefined','limit','count','set','Content-Range','json','save','update','then','get','UserProfileResource','sendStatus','error','stack','name','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','where','pick','filter','VIRTUAL','options','JscriptyProject','includeAll','include','findAll','rows','catch','params','find','create','body','user','role','Projects','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','updatedAt','merge','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','autoAssociation','destroy','getSessions','JscriptySessionReport','sort','getAnswers','findOne','JscriptyAnswerReport','hasOwnProperty','number','fromCharCode','apply','toString','indexOf','replace','startTime','parse','JscriptyQuestionReport','-createdAt','questionId','question','starttime','format','YYYY-MM-DD\x20HH:mm:ss','SessionId','answer','push','writeFileSync','/tmp/Jscripty_Project_%d_Summary_%s.csv','setHeader','Content-disposition','Jscripty_Project_%d_Summary_%s.csv','Content-type'];(function(_0x1d9aa0,_0x272488){var _0x226868=function(_0x17127c){while(--_0x17127c){_0x1d9aa0['push'](_0x1d9aa0['shift']());}};_0x226868(++_0x272488);}(_0x6c9f,0x16a));var _0xf6c9=function(_0x59d6ad,_0x227750){_0x59d6ad=_0x59d6ad-0x0;var _0x2be8d3=_0x6c9f[_0x59d6ad];return _0x2be8d3;};'use strict';var emlformat=require(_0xf6c9('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xf6c9('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xf6c9('0x2'));var moment=require(_0xf6c9('0x3'));var BPromise=require(_0xf6c9('0x4'));var Mustache=require(_0xf6c9('0x5'));var util=require(_0xf6c9('0x6'));var path=require(_0xf6c9('0x7'));var sox=require('sox');var csv=require(_0xf6c9('0x8'));var ejs=require(_0xf6c9('0x9'));var fs=require('fs');var fs_extra=require(_0xf6c9('0xa'));var _=require(_0xf6c9('0xb'));var squel=require(_0xf6c9('0xc'));var crypto=require(_0xf6c9('0xd'));var jsforce=require(_0xf6c9('0xe'));var deskjs=require(_0xf6c9('0xf'));var toCsv=require(_0xf6c9('0x8'));var querystring=require('querystring');var Papa=require(_0xf6c9('0x10'));var Redis=require(_0xf6c9('0x11'));var authService=require(_0xf6c9('0x12'));var qs=require(_0xf6c9('0x13'));var as=require(_0xf6c9('0x14'));var hardwareService=require(_0xf6c9('0x15'));var logger=require(_0xf6c9('0x16'))(_0xf6c9('0x17'));var utils=require(_0xf6c9('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0xf6c9('0x19'));var db=require(_0xf6c9('0x1a'))['db'];function respondWithStatusCode(_0x1c5b31,_0x2f99db){_0x2f99db=_0x2f99db||0xcc;return function(_0x564e64){if(_0x564e64){return _0x1c5b31['sendStatus'](_0x2f99db);}return _0x1c5b31[_0xf6c9('0x1b')](_0x2f99db)[_0xf6c9('0x1c')]();};}function respondWithResult(_0x1f3ebb,_0x38a2f4){_0x38a2f4=_0x38a2f4||0xc8;return function(_0x281018){if(_0x281018){return _0x1f3ebb[_0xf6c9('0x1b')](_0x38a2f4)['json'](_0x281018);}};}function respondWithFilteredResult(_0x53c990,_0x16e14b){return function(_0x3954ca){if(_0x3954ca){var _0x5cb57e=typeof _0x16e14b[_0xf6c9('0x1d')]===_0xf6c9('0x1e')&&typeof _0x16e14b[_0xf6c9('0x1f')]===_0xf6c9('0x1e');var _0x218ac6=_0x3954ca[_0xf6c9('0x20')];var _0x56baee=_0x5cb57e?0x0:_0x16e14b[_0xf6c9('0x1d')];var _0x6749b3=_0x5cb57e?_0x3954ca[_0xf6c9('0x20')]:_0x16e14b[_0xf6c9('0x1d')]+_0x16e14b[_0xf6c9('0x1f')];var _0x4330ed;if(_0x6749b3>=_0x218ac6){_0x6749b3=_0x218ac6;_0x4330ed=0xc8;}else{_0x4330ed=0xce;}_0x53c990[_0xf6c9('0x1b')](_0x4330ed);return _0x53c990[_0xf6c9('0x21')](_0xf6c9('0x22'),_0x56baee+'-'+_0x6749b3+'/'+_0x218ac6)[_0xf6c9('0x23')](_0x3954ca);}return null;};}function patchUpdates(_0xdaf3c5){return function(_0x27a65c){try{jsonpatch['apply'](_0x27a65c,_0xdaf3c5,!![]);}catch(_0x4ba539){return BPromise['reject'](_0x4ba539);}return _0x27a65c[_0xf6c9('0x24')]();};}function saveUpdates(_0x4b2340,_0x2ef5a6){return function(_0x569226){if(_0x569226){return _0x569226[_0xf6c9('0x25')](_0x4b2340)['then'](function(_0xacc99){return _0xacc99;});}return null;};}function removeEntity(_0x1ea7f8,_0x11bb78){return function(_0x4663f3){if(_0x4663f3){return _0x4663f3['destroy']()[_0xf6c9('0x26')](function(){var _0x32870e=_0x4663f3[_0xf6c9('0x27')]({'plain':!![]});var _0x1a1a90='Projects';return db[_0xf6c9('0x28')]['destroy']({'where':{'type':_0x1a1a90,'resourceId':_0x32870e['id']}})['then'](function(){return _0x4663f3;});})[_0xf6c9('0x26')](function(){_0x1ea7f8[_0xf6c9('0x1b')](0xcc)[_0xf6c9('0x1c')]();});}};}function handleEntityNotFound(_0x530fef,_0x554c7b){return function(_0x2c5f51){if(!_0x2c5f51){_0x530fef[_0xf6c9('0x29')](0x194);}return _0x2c5f51;};}function handleError(_0x16d29e,_0x8acdb1){_0x8acdb1=_0x8acdb1||0x1f4;return function(_0x2a4b56){logger[_0xf6c9('0x2a')](_0x2a4b56[_0xf6c9('0x2b')]);if(_0x2a4b56['name']){delete _0x2a4b56[_0xf6c9('0x2c')];}_0x16d29e['status'](_0x8acdb1)['send'](_0x2a4b56);};}exports[_0xf6c9('0x2d')]=function(_0x25fd5e,_0x2985a8){var _0x476aa5={},_0x59df42={},_0x383c11={'count':0x0,'rows':[]};var _0x246ac4=_[_0xf6c9('0x2e')](db['JscriptyProject'][_0xf6c9('0x2f')],function(_0x417475){return{'name':_0x417475[_0xf6c9('0x30')],'type':_0x417475[_0xf6c9('0x31')][_0xf6c9('0x32')]};});_0x59df42[_0xf6c9('0x33')]=_[_0xf6c9('0x2e')](_0x246ac4,_0xf6c9('0x2c'));_0x59df42[_0xf6c9('0x34')]=_[_0xf6c9('0x35')](_0x25fd5e[_0xf6c9('0x34')]);_0x59df42[_0xf6c9('0x36')]=_[_0xf6c9('0x37')](_0x59df42['model'],_0x59df42[_0xf6c9('0x34')]);_0x476aa5[_0xf6c9('0x38')]=_[_0xf6c9('0x37')](_0x59df42[_0xf6c9('0x33')],qs[_0xf6c9('0x39')](_0x25fd5e[_0xf6c9('0x34')][_0xf6c9('0x39')]));_0x476aa5[_0xf6c9('0x38')]=_0x476aa5['attributes'][_0xf6c9('0x3a')]?_0x476aa5['attributes']:_0x59df42['model'];if(!_0x25fd5e[_0xf6c9('0x34')]['hasOwnProperty'](_0xf6c9('0x3b'))){_0x476aa5['limit']=qs[_0xf6c9('0x1f')](_0x25fd5e[_0xf6c9('0x34')][_0xf6c9('0x1f')]);_0x476aa5['offset']=qs[_0xf6c9('0x1d')](_0x25fd5e[_0xf6c9('0x34')][_0xf6c9('0x1d')]);}_0x476aa5[_0xf6c9('0x3c')]=qs['sort'](_0x25fd5e[_0xf6c9('0x34')]['sort']);_0x476aa5[_0xf6c9('0x3d')]=qs['filters'](_[_0xf6c9('0x3e')](_0x25fd5e[_0xf6c9('0x34')],_0x59df42[_0xf6c9('0x36')]),_0x246ac4);if(_0x25fd5e[_0xf6c9('0x34')][_0xf6c9('0x3f')]){_0x476aa5[_0xf6c9('0x3d')]=_['merge'](_0x476aa5[_0xf6c9('0x3d')],{'$or':_[_0xf6c9('0x2e')](_0x246ac4,function(_0x5ea1ee){if(_0x5ea1ee['type']!==_0xf6c9('0x40')){var _0x4f9767={};_0x4f9767[_0x5ea1ee[_0xf6c9('0x2c')]]={'$like':'%'+_0x25fd5e[_0xf6c9('0x34')][_0xf6c9('0x3f')]+'%'};return _0x4f9767;}})});}_0x476aa5=_['merge']({},_0x476aa5,_0x25fd5e[_0xf6c9('0x41')]);var _0x370e42={'where':_0x476aa5['where']};return db[_0xf6c9('0x42')]['count'](_0x370e42)[_0xf6c9('0x26')](function(_0x42b21c){_0x383c11[_0xf6c9('0x20')]=_0x42b21c;if(_0x25fd5e[_0xf6c9('0x34')][_0xf6c9('0x43')]){_0x476aa5[_0xf6c9('0x44')]=[{'all':!![]}];}return db[_0xf6c9('0x42')][_0xf6c9('0x45')](_0x476aa5);})[_0xf6c9('0x26')](function(_0x49e951){_0x383c11[_0xf6c9('0x46')]=_0x49e951;return _0x383c11;})['then'](respondWithFilteredResult(_0x2985a8,_0x476aa5))[_0xf6c9('0x47')](handleError(_0x2985a8,null));};exports['show']=function(_0x3062de,_0x4d7f2f){var _0x370d96={'raw':![],'where':{'id':_0x3062de[_0xf6c9('0x48')]['id']}},_0x5803a6={};_0x5803a6['model']=_[_0xf6c9('0x35')](db['JscriptyProject'][_0xf6c9('0x2f')]);_0x5803a6[_0xf6c9('0x34')]=_[_0xf6c9('0x35')](_0x3062de[_0xf6c9('0x34')]);_0x5803a6[_0xf6c9('0x36')]=_[_0xf6c9('0x37')](_0x5803a6[_0xf6c9('0x33')],_0x5803a6[_0xf6c9('0x34')]);_0x370d96['attributes']=_[_0xf6c9('0x37')](_0x5803a6[_0xf6c9('0x33')],qs[_0xf6c9('0x39')](_0x3062de[_0xf6c9('0x34')][_0xf6c9('0x39')]));_0x370d96[_0xf6c9('0x38')]=_0x370d96['attributes'][_0xf6c9('0x3a')]?_0x370d96[_0xf6c9('0x38')]:_0x5803a6[_0xf6c9('0x33')];if(_0x3062de[_0xf6c9('0x34')][_0xf6c9('0x43')]){_0x370d96[_0xf6c9('0x44')]=[{'all':!![]}];}_0x370d96=_['merge']({},_0x370d96,_0x3062de['options']);return db[_0xf6c9('0x42')][_0xf6c9('0x49')](_0x370d96)[_0xf6c9('0x26')](handleEntityNotFound(_0x4d7f2f,null))[_0xf6c9('0x26')](respondWithResult(_0x4d7f2f,null))[_0xf6c9('0x47')](handleError(_0x4d7f2f,null));};exports['create']=function(_0x5a62c4,_0x92bac2){return db[_0xf6c9('0x42')][_0xf6c9('0x4a')](_0x5a62c4[_0xf6c9('0x4b')],{})[_0xf6c9('0x26')](function(_0x156545){var _0x1169a9=_0x5a62c4[_0xf6c9('0x4c')][_0xf6c9('0x27')]({'plain':!![]});if(!_0x1169a9)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1169a9[_0xf6c9('0x4d')]==='user'){var _0x38b410=_0x156545[_0xf6c9('0x27')]({'plain':!![]});var _0x38f562=_0xf6c9('0x4e');return db['UserProfileSection'][_0xf6c9('0x49')]({'where':{'name':_0x38f562,'userProfileId':_0x1169a9[_0xf6c9('0x4f')]},'raw':!![]})['then'](function(_0x6ba309){if(_0x6ba309&&_0x6ba309['autoAssociation']===0x0){return db[_0xf6c9('0x28')][_0xf6c9('0x4a')]({'name':_0x38b410[_0xf6c9('0x2c')],'resourceId':_0x38b410['id'],'type':_0x6ba309['name'],'sectionId':_0x6ba309['id']},{})[_0xf6c9('0x26')](function(){return _0x156545;});}else{return _0x156545;}})[_0xf6c9('0x47')](function(_0x490beb){logger[_0xf6c9('0x2a')](_0xf6c9('0x50'),_0x490beb);throw _0x490beb;});}return _0x156545;})[_0xf6c9('0x26')](respondWithResult(_0x92bac2,0xc9))[_0xf6c9('0x47')](handleError(_0x92bac2,null));};exports['clone']=function(_0x3c430c,_0x60512f){var _0x254893={'where':{'id':_0x3c430c['params']['id']}},_0x1f7c9a={};_0x1f7c9a[_0xf6c9('0x33')]=_[_0xf6c9('0x35')](db[_0xf6c9('0x42')][_0xf6c9('0x2f')]);_0x254893[_0xf6c9('0x38')]=_['intersection'](_0x1f7c9a[_0xf6c9('0x33')],qs[_0xf6c9('0x39')](_0x3c430c[_0xf6c9('0x34')]['fields']));_0x254893[_0xf6c9('0x38')]=_0x254893[_0xf6c9('0x38')][_0xf6c9('0x3a')]?_0x254893[_0xf6c9('0x38')]:_0x1f7c9a[_0xf6c9('0x33')];if(_0x3c430c[_0xf6c9('0x34')]['includeAll']){_0x254893[_0xf6c9('0x44')]=[{'all':!![]}];}_0x254893=_['merge']({},_0x254893,_0x3c430c[_0xf6c9('0x41')]);return db[_0xf6c9('0x42')][_0xf6c9('0x49')](_0x254893)[_0xf6c9('0x26')](handleEntityNotFound(_0x60512f,null))[_0xf6c9('0x26')](function(_0x1debd4){if(_0x1debd4){var _0x327901=_0x1debd4[_0xf6c9('0x27')]({'plain':!![]});_0x327901=qs['omit'](_0x327901,['id','createdAt','updatedAt']);_0x3c430c['body']=_['omit'](_0x3c430c['body'],['id','createdAt',_0xf6c9('0x51')]);return db[_0xf6c9('0x42')]['create'](_[_0xf6c9('0x52')](_0x327901,_0x3c430c[_0xf6c9('0x4b')]),{'include':_0x3c430c[_0xf6c9('0x34')][_0xf6c9('0x43')]?[{'all':!![]}]:undefined})[_0xf6c9('0x26')](function(_0x3ec51f){var _0x596288=_0x3c430c[_0xf6c9('0x4c')]['get']({'plain':!![]});if(!_0x596288)throw new Error(_0xf6c9('0x53'));if(_0x596288[_0xf6c9('0x4d')]===_0xf6c9('0x4c')){var _0x2a93e4=_0x3ec51f['get']({'plain':!![]});var _0x2cd127=_0xf6c9('0x4e');return db[_0xf6c9('0x54')][_0xf6c9('0x49')]({'where':{'name':_0x2cd127,'userProfileId':_0x596288[_0xf6c9('0x4f')]},'raw':!![]})[_0xf6c9('0x26')](function(_0x34ba7b){if(_0x34ba7b&&_0x34ba7b[_0xf6c9('0x55')]===0x0){return db[_0xf6c9('0x28')][_0xf6c9('0x4a')]({'name':_0x2a93e4[_0xf6c9('0x2c')],'resourceId':_0x2a93e4['id'],'type':_0x34ba7b[_0xf6c9('0x2c')],'sectionId':_0x34ba7b['id']},{})['then'](function(){return _0x3ec51f;});}else{return _0x3ec51f;}})[_0xf6c9('0x47')](function(_0x8d6e2d){logger[_0xf6c9('0x2a')](_0xf6c9('0x50'),_0x8d6e2d);throw _0x8d6e2d;});}return _0x3ec51f;});}})[_0xf6c9('0x26')](respondWithResult(_0x60512f,0xc9))[_0xf6c9('0x47')](handleError(_0x60512f,null));};exports[_0xf6c9('0x25')]=function(_0x4f6aa5,_0x57b991){if(_0x4f6aa5[_0xf6c9('0x4b')]['id']){delete _0x4f6aa5[_0xf6c9('0x4b')]['id'];}return db['JscriptyProject'][_0xf6c9('0x49')]({'where':{'id':_0x4f6aa5[_0xf6c9('0x48')]['id']}})[_0xf6c9('0x26')](handleEntityNotFound(_0x57b991,null))[_0xf6c9('0x26')](saveUpdates(_0x4f6aa5['body'],null))[_0xf6c9('0x26')](respondWithResult(_0x57b991,null))[_0xf6c9('0x47')](handleError(_0x57b991,null));};exports[_0xf6c9('0x56')]=function(_0x1153e4,_0x28edc4){return db[_0xf6c9('0x42')][_0xf6c9('0x49')]({'where':{'id':_0x1153e4[_0xf6c9('0x48')]['id']}})[_0xf6c9('0x26')](handleEntityNotFound(_0x28edc4,null))[_0xf6c9('0x26')](removeEntity(_0x28edc4,null))[_0xf6c9('0x47')](handleError(_0x28edc4,null));};exports[_0xf6c9('0x57')]=function(_0x5b0e95,_0x4345ec,_0xed5323){var _0x291413={'raw':!![],'where':{}};var _0x1b1242={};var _0x5c2e7d={'count':0x0,'rows':[]};return db[_0xf6c9('0x42')]['findOne']({'where':{'id':_0x5b0e95[_0xf6c9('0x48')]['id']}})[_0xf6c9('0x26')](handleEntityNotFound(_0x4345ec,null))['then'](function(_0x570a69){if(_0x570a69){_0x1b1242[_0xf6c9('0x33')]=_['keys'](db[_0xf6c9('0x58')][_0xf6c9('0x2f')]);_0x1b1242[_0xf6c9('0x34')]=_[_0xf6c9('0x35')](_0x5b0e95[_0xf6c9('0x34')]);_0x1b1242['filters']=_[_0xf6c9('0x37')](_0x1b1242[_0xf6c9('0x33')],_0x1b1242[_0xf6c9('0x34')]);_0x291413[_0xf6c9('0x38')]=_[_0xf6c9('0x37')](_0x1b1242['model'],qs['fields'](_0x5b0e95['query'][_0xf6c9('0x39')]));_0x291413[_0xf6c9('0x38')]=_0x291413[_0xf6c9('0x38')][_0xf6c9('0x3a')]?_0x291413[_0xf6c9('0x38')]:_0x1b1242['model'];if(!_0x5b0e95[_0xf6c9('0x34')]['hasOwnProperty'](_0xf6c9('0x3b'))){_0x291413[_0xf6c9('0x1f')]=qs[_0xf6c9('0x1f')](_0x5b0e95[_0xf6c9('0x34')][_0xf6c9('0x1f')]);_0x291413[_0xf6c9('0x1d')]=qs[_0xf6c9('0x1d')](_0x5b0e95[_0xf6c9('0x34')][_0xf6c9('0x1d')]);}_0x291413[_0xf6c9('0x3c')]=qs[_0xf6c9('0x59')](_0x5b0e95[_0xf6c9('0x34')]['sort']);_0x291413[_0xf6c9('0x3d')]=qs[_0xf6c9('0x36')](_[_0xf6c9('0x3e')](_0x5b0e95['query'],_0x1b1242[_0xf6c9('0x36')]));_0x291413[_0xf6c9('0x3d')]['ProjectId']=_0x570a69['id'];if(_0x5b0e95[_0xf6c9('0x34')][_0xf6c9('0x3f')]){_0x291413[_0xf6c9('0x3d')]=_[_0xf6c9('0x52')](_0x291413[_0xf6c9('0x3d')],{'$or':_['map'](_0x291413[_0xf6c9('0x38')],function(_0x559ba5){var _0x21fa01={};_0x21fa01[_0x559ba5]={'$like':'%'+_0x5b0e95[_0xf6c9('0x34')][_0xf6c9('0x3f')]+'%'};return _0x21fa01;})});}_0x291413=_[_0xf6c9('0x52')]({},_0x291413,_0x5b0e95['options']);return db[_0xf6c9('0x58')][_0xf6c9('0x20')]({'where':_0x291413[_0xf6c9('0x3d')]})[_0xf6c9('0x26')](function(_0x10b711){_0x5c2e7d[_0xf6c9('0x20')]=_0x10b711;if(_0x5b0e95['query']['includeAll']){_0x291413[_0xf6c9('0x44')]=[{'all':!![]}];}return db['JscriptySessionReport'][_0xf6c9('0x45')](_0x291413);})[_0xf6c9('0x26')](function(_0x5b145d){_0x5c2e7d[_0xf6c9('0x46')]=_0x5b145d;return _0x5c2e7d;});}})[_0xf6c9('0x26')](respondWithFilteredResult(_0x4345ec,_0x291413))['catch'](handleError(_0x4345ec,null));};exports[_0xf6c9('0x5a')]=function(_0x37a8fc,_0x188d5e,_0xa28fc3){var _0x2a3e0d={'raw':!![],'where':{}};var _0x3e7f61={};var _0x544a2b={'count':0x0,'rows':[]};return db['JscriptyProject'][_0xf6c9('0x5b')]({'where':{'id':_0x37a8fc[_0xf6c9('0x48')]['id']}})[_0xf6c9('0x26')](handleEntityNotFound(_0x188d5e,null))[_0xf6c9('0x26')](function(_0x12ef4d){if(_0x12ef4d){_0x3e7f61[_0xf6c9('0x33')]=_[_0xf6c9('0x35')](db[_0xf6c9('0x5c')][_0xf6c9('0x2f')]);_0x3e7f61[_0xf6c9('0x34')]=_[_0xf6c9('0x35')](_0x37a8fc[_0xf6c9('0x34')]);_0x3e7f61['filters']=_[_0xf6c9('0x37')](_0x3e7f61[_0xf6c9('0x33')],_0x3e7f61['query']);_0x2a3e0d[_0xf6c9('0x38')]=_['intersection'](_0x3e7f61[_0xf6c9('0x33')],qs[_0xf6c9('0x39')](_0x37a8fc['query']['fields']));_0x2a3e0d['attributes']=_0x2a3e0d[_0xf6c9('0x38')][_0xf6c9('0x3a')]?_0x2a3e0d['attributes']:_0x3e7f61[_0xf6c9('0x33')];if(!_0x37a8fc[_0xf6c9('0x34')][_0xf6c9('0x5d')](_0xf6c9('0x3b'))){_0x2a3e0d['limit']=qs[_0xf6c9('0x1f')](_0x37a8fc[_0xf6c9('0x34')]['limit']);_0x2a3e0d[_0xf6c9('0x1d')]=qs['offset'](_0x37a8fc['query'][_0xf6c9('0x1d')]);}_0x2a3e0d[_0xf6c9('0x3c')]=qs[_0xf6c9('0x59')](_0x37a8fc[_0xf6c9('0x34')][_0xf6c9('0x59')]);_0x2a3e0d[_0xf6c9('0x3d')]=qs['filters'](_[_0xf6c9('0x3e')](_0x37a8fc[_0xf6c9('0x34')],_0x3e7f61['filters']));_0x2a3e0d[_0xf6c9('0x3d')]['ProjectId']=_0x12ef4d['id'];if(_0x37a8fc[_0xf6c9('0x34')][_0xf6c9('0x3f')]){_0x2a3e0d[_0xf6c9('0x3d')]=_[_0xf6c9('0x52')](_0x2a3e0d[_0xf6c9('0x3d')],{'$or':_['map'](_0x2a3e0d[_0xf6c9('0x38')],function(_0x13551f){var _0x57cc46={};_0x57cc46[_0x13551f]={'$like':'%'+_0x37a8fc[_0xf6c9('0x34')]['filter']+'%'};return _0x57cc46;})});}_0x2a3e0d=_[_0xf6c9('0x52')]({},_0x2a3e0d,_0x37a8fc[_0xf6c9('0x41')]);return db[_0xf6c9('0x5c')][_0xf6c9('0x20')]({'where':_0x2a3e0d[_0xf6c9('0x3d')]})['then'](function(_0x41fffa){_0x544a2b[_0xf6c9('0x20')]=_0x41fffa;if(_0x37a8fc[_0xf6c9('0x34')][_0xf6c9('0x43')]){_0x2a3e0d[_0xf6c9('0x44')]=[{'all':!![]}];}return db[_0xf6c9('0x5c')][_0xf6c9('0x45')](_0x2a3e0d);})[_0xf6c9('0x26')](function(_0x2cd225){_0x544a2b[_0xf6c9('0x46')]=_0x2cd225;return _0x544a2b;});}})[_0xf6c9('0x26')](respondWithFilteredResult(_0x188d5e,_0x2a3e0d))['catch'](handleError(_0x188d5e,null));};function char(_0x29b7ab){return _0xf6c9('0x5e')===typeof _0x29b7ab?String[_0xf6c9('0x5f')][_0xf6c9('0x60')](null,arguments):_0x29b7ab;}function needsEncapsulation(_0x5c75ae){return!!_0x5c75ae&&(_0x5c75ae[_0xf6c9('0x61')]()[_0xf6c9('0x62')](char(0xd))>=0x0||_0x5c75ae[_0xf6c9('0x61')]()['indexOf'](char(0xa))>=0x0||_0x5c75ae[_0xf6c9('0x61')]()[_0xf6c9('0x62')](char(0x2c))>=0x0||_0x5c75ae[_0xf6c9('0x61')]()[_0xf6c9('0x62')](char(0x22))>=0x0);}function encapsulate(_0x433747){var _0x20b92c=char(0x22),_0x37c422='\x5c'+char(0x22),_0x5a3989=_0x433747[_0xf6c9('0x61')]()[_0xf6c9('0x63')](new RegExp(_0x20b92c,'g'),_0x37c422);return _0x20b92c+_0x5a3989+_0x20b92c;}exports['getSummary']=function(_0x3f37d3,_0x501761,_0x481328){var _0x4cb62b,_0x336b9d;var _0x454802={'where':{'ProjectId':_0x3f37d3[_0xf6c9('0x48')]['id']}};if(_0x3f37d3[_0xf6c9('0x34')][_0xf6c9('0x64')]){_0x454802[_0xf6c9('0x3d')]['starttime']=JSON[_0xf6c9('0x65')](_0x3f37d3[_0xf6c9('0x34')][_0xf6c9('0x64')]);}return db[_0xf6c9('0x58')][_0xf6c9('0x45')](_0x454802)['then'](handleEntityNotFound(_0x501761,null))['then'](function(_0x59fe27){if(_0x59fe27){_0x4cb62b=_0x59fe27;return db[_0xf6c9('0x66')][_0xf6c9('0x45')]({'where':{'SessionId':{'$in':_[_0xf6c9('0x2e')](_0x4cb62b,'id')},'ProjectId':_0x3f37d3[_0xf6c9('0x48')]['id']},'order':_0xf6c9('0x67')});}})[_0xf6c9('0x26')](handleEntityNotFound(_0x501761,null))[_0xf6c9('0x26')](function(_0x5b2fb0){if(_0x5b2fb0){_0x336b9d=_0x5b2fb0;var _0x3e19b5={};for(var _0x16ec6c=0x0,_0x8b6076=_0x336b9d[_0xf6c9('0x3a')];_0x16ec6c<_0x8b6076;_0x16ec6c++){if(!_0x3e19b5[_0xf6c9('0x5d')](_0x336b9d[_0x16ec6c][_0xf6c9('0x68')])){_0x3e19b5[_0x336b9d[_0x16ec6c]['questionId']]=needsEncapsulation(_0x336b9d[_0x16ec6c][_0xf6c9('0x69')])?encapsulate(_0x336b9d[_0x16ec6c][_0xf6c9('0x69')]):_0x336b9d[_0x16ec6c][_0xf6c9('0x69')];}}var _0x27479a=[],_0x137b95={};for(var _0x3fbb1b=0x0,_0x50adaf=_0x4cb62b[_0xf6c9('0x3a')];_0x3fbb1b<_0x50adaf;_0x3fbb1b++){_0x137b95={'ProjectId':_0x3f37d3[_0xf6c9('0x48')]['id'],'SessionId':_0x4cb62b[_0x3fbb1b]['id'],'StartTime':moment(_0x4cb62b[_0x3fbb1b][_0xf6c9('0x6a')])[_0xf6c9('0x6b')](_0xf6c9('0x6c'))};for(var _0xd9288f=0x0,_0x4e56cb=_0x336b9d[_0xf6c9('0x3a')];_0xd9288f<_0x4e56cb;_0xd9288f++){if(_0x336b9d[_0xd9288f][_0xf6c9('0x6d')]==_0x4cb62b[_0x3fbb1b]['id']&&_0x3e19b5[_0xf6c9('0x5d')](_0x336b9d[_0xd9288f][_0xf6c9('0x68')])){_0x137b95[_0x3e19b5[_0x336b9d[_0xd9288f]['questionId']]]=_0x336b9d[_0xd9288f][_0xf6c9('0x6e')];}}for(var _0x5cb7f7 in _0x3e19b5){if(!_0x137b95[_0xf6c9('0x5d')](_0x3e19b5[_0x5cb7f7])){_0x137b95[_0x3e19b5[_0x5cb7f7]]=null;}}_0x27479a[_0xf6c9('0x6f')](_0x137b95);}return _0x27479a;}})[_0xf6c9('0x26')](function(_0x55ae11){if(!_['isEmpty'](_0x55ae11)){var _0x458249=toCsv(_0x55ae11);var _0x36f818=Date['now']();fs[_0xf6c9('0x70')](util['format'](_0xf6c9('0x71'),_0x3f37d3[_0xf6c9('0x48')]['id'],_0x36f818),_0x458249);_0x501761[_0xf6c9('0x72')](_0xf6c9('0x73'),'attachment;\x20filename='+util[_0xf6c9('0x6b')](_0xf6c9('0x74'),_0x3f37d3['params']['id'],_0x36f818));_0x501761[_0xf6c9('0x72')](_0xf6c9('0x75'),_0xf6c9('0x76'));return _0x501761[_0xf6c9('0x77')](util[_0xf6c9('0x6b')](_0xf6c9('0x71'),_0x3f37d3['params']['id'],_0x36f818));}else{return _0x501761[_0xf6c9('0x29')](0xcc);}})['catch'](handleError(_0x501761,null));};
\ No newline at end of file
index bb3a9d2..2ca9d36 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x093a=['JscriptyProject','jscripty_projects','util','../../config/logger','api','request-promise','path','rimraf','../../config/environment','./jscriptyProject.attributes','exports','define'];(function(_0x1780f8,_0x11ba93){var _0x33a410=function(_0x2a015f){while(--_0x2a015f){_0x1780f8['push'](_0x1780f8['shift']());}};_0x33a410(++_0x11ba93);}(_0x093a,0x16a));var _0xa093=function(_0x356127,_0x4873ac){_0x356127=_0x356127-0x0;var _0x5d4c75=_0x093a[_0x356127];return _0x5d4c75;};'use strict';var _=require('lodash');var util=require(_0xa093('0x0'));var logger=require(_0xa093('0x1'))(_0xa093('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xa093('0x3'));var fs=require('fs');var path=require(_0xa093('0x4'));var rimraf=require(_0xa093('0x5'));var config=require(_0xa093('0x6'));var attributes=require(_0xa093('0x7'));module[_0xa093('0x8')]=function(_0x2346f1,_0x145f58){return _0x2346f1[_0xa093('0x9')](_0xa093('0xa'),attributes,{'tableName':_0xa093('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1a8f=['../../config/logger','api','moment','bluebird','request-promise','exports','JscriptyProject','lodash'];(function(_0x4bf7e6,_0x44e900){var _0xdb83cd=function(_0x1d9c97){while(--_0x1d9c97){_0x4bf7e6['push'](_0x4bf7e6['shift']());}};_0xdb83cd(++_0x44e900);}(_0x1a8f,0x87));var _0xf1a8=function(_0x1d5677,_0x342d27){_0x1d5677=_0x1d5677-0x0;var _0x274227=_0x1a8f[_0x1d5677];return _0x274227;};'use strict';var _=require(_0xf1a8('0x0'));var util=require('util');var logger=require(_0xf1a8('0x1'))(_0xf1a8('0x2'));var moment=require(_0xf1a8('0x3'));var BPromise=require(_0xf1a8('0x4'));var rp=require(_0xf1a8('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./jscriptyProject.attributes');module[_0xf1a8('0x6')]=function(_0x515ff3,_0x29dc33){return _0x515ff3['define'](_0xf1a8('0x7'),attributes,{'tableName':'jscripty_projects','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1c75f94..6c11af7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac4a=['JscriptyProject,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','client','then','info','debug','JscriptyProject,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xac4a,0x13f));var _0xaac4=function(_0x2d5d3c,_0x4e0363){_0x2d5d3c=_0x2d5d3c-0x0;var _0x32725b=_0xac4a[_0x2d5d3c];return _0x32725b;};'use strict';var _=require(_0xaac4('0x0'));var util=require(_0xaac4('0x1'));var moment=require(_0xaac4('0x2'));var BPromise=require(_0xaac4('0x3'));var rs=require(_0xaac4('0x4'));var fs=require('fs');var Redis=require(_0xaac4('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xaac4('0x6'))(_0xaac4('0x7'));var config=require(_0xaac4('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xaac4('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1cdfc5,_0x5870e8,_0x1e4283){return new BPromise(function(_0x27354c,_0x567295){return client['request'](_0x1cdfc5,_0x1e4283)[_0xaac4('0xa')](function(_0x50d114){logger[_0xaac4('0xb')]('JscriptyProject,\x20%s,\x20%s',_0x5870e8,'request\x20sent');logger[_0xaac4('0xc')](_0xaac4('0xd'),_0x5870e8,_0xaac4('0xe'),JSON[_0xaac4('0xf')](_0x50d114));if(_0x50d114[_0xaac4('0x10')]){if(_0x50d114['error']['code']===0x1f4){logger[_0xaac4('0x10')](_0xaac4('0x11'),_0x5870e8,_0x50d114[_0xaac4('0x10')]['message']);return _0x567295(_0x50d114[_0xaac4('0x10')][_0xaac4('0x12')]);}logger['error'](_0xaac4('0x11'),_0x5870e8,_0x50d114[_0xaac4('0x10')][_0xaac4('0x12')]);return _0x27354c(_0x50d114[_0xaac4('0x10')][_0xaac4('0x12')]);}else{logger[_0xaac4('0xb')](_0xaac4('0x11'),_0x5870e8,_0xaac4('0xe'));_0x27354c(_0x50d114[_0xaac4('0x13')][_0xaac4('0x12')]);}})[_0xaac4('0x14')](function(_0x1766c2){logger[_0xaac4('0x10')]('JscriptyProject,\x20%s,\x20%s',_0x5870e8,_0x1766c2);_0x567295(_0x1766c2);});});}
\ No newline at end of file
+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(_0x56b442,_0x17c145){var _0x4ddd97=function(_0x3aa5de){while(--_0x3aa5de){_0x56b442['push'](_0x56b442['shift']());}};_0x4ddd97(++_0x17c145);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x4bdf64,_0x3022b2){_0x4bdf64=_0x4bdf64-0x0;var _0x9a1a19=_0xcb91[_0x4bdf64];return _0x9a1a19;};'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 03c6e6a..50024ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa6e2=['index','describe','show','post','put','/:id','update','destroy','exports','multer','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./jscriptyQuestionReport.controller','get','isAuthenticated'];(function(_0x2f5ac5,_0x1ee939){var _0x37c9a8=function(_0x15031f){while(--_0x15031f){_0x2f5ac5['push'](_0x2f5ac5['shift']());}};_0x37c9a8(++_0x1ee939);}(_0xa6e2,0x1cb));var _0x2a6e=function(_0xd8d798,_0x247af1){_0xd8d798=_0xd8d798-0x0;var _0x28aa53=_0xa6e2[_0xd8d798];return _0x28aa53;};'use strict';var multer=require(_0x2a6e('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x2a6e('0x1'));var express=require(_0x2a6e('0x2'));var router=express[_0x2a6e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x2a6e('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x2a6e('0x5'));var controller=require(_0x2a6e('0x6'));router[_0x2a6e('0x7')]('/',auth[_0x2a6e('0x8')](),controller[_0x2a6e('0x9')]);router['get']('/describe',auth[_0x2a6e('0x8')](),controller[_0x2a6e('0xa')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0x2a6e('0xb')]);router[_0x2a6e('0xc')]('/',auth[_0x2a6e('0x8')](),controller['create']);router[_0x2a6e('0xd')](_0x2a6e('0xe'),auth[_0x2a6e('0x8')](),controller[_0x2a6e('0xf')]);router['delete'](_0x2a6e('0xe'),auth[_0x2a6e('0x8')](),controller[_0x2a6e('0x10')]);module[_0x2a6e('0x11')]=router;
\ No newline at end of file
+var _0x3e6f=['path','connect-timeout','express','Router','fs-extra','../../config/environment','./jscriptyQuestionReport.controller','get','isAuthenticated','/describe','describe','/:id','show','post','create','put','update','delete','destroy','multer','util'];(function(_0x8f52c7,_0x10f91c){var _0x48bb92=function(_0xe65f7a){while(--_0xe65f7a){_0x8f52c7['push'](_0x8f52c7['shift']());}};_0x48bb92(++_0x10f91c);}(_0x3e6f,0x139));var _0xf3e6=function(_0x402b7b,_0x4bc2e9){_0x402b7b=_0x402b7b-0x0;var _0x3a4c31=_0x3e6f[_0x402b7b];return _0x3a4c31;};'use strict';var multer=require(_0xf3e6('0x0'));var util=require(_0xf3e6('0x1'));var path=require(_0xf3e6('0x2'));var timeout=require(_0xf3e6('0x3'));var express=require(_0xf3e6('0x4'));var router=express[_0xf3e6('0x5')]();var fs_extra=require(_0xf3e6('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xf3e6('0x7'));var controller=require(_0xf3e6('0x8'));router[_0xf3e6('0x9')]('/',auth[_0xf3e6('0xa')](),controller['index']);router[_0xf3e6('0x9')](_0xf3e6('0xb'),auth[_0xf3e6('0xa')](),controller[_0xf3e6('0xc')]);router[_0xf3e6('0x9')](_0xf3e6('0xd'),auth['isAuthenticated'](),controller[_0xf3e6('0xe')]);router[_0xf3e6('0xf')]('/',auth[_0xf3e6('0xa')](),controller[_0xf3e6('0x10')]);router[_0xf3e6('0x11')]('/:id',auth[_0xf3e6('0xa')](),controller[_0xf3e6('0x12')]);router[_0xf3e6('0x13')](_0xf3e6('0xd'),auth[_0xf3e6('0xa')](),controller[_0xf3e6('0x14')]);module['exports']=router;
\ No newline at end of file
index 1122ef5..177d7d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x4f9b18,_0x2cb5ca){var _0x29f20c=function(_0x268b3d){while(--_0x268b3d){_0x4f9b18['push'](_0x4f9b18['shift']());}};_0x29f20c(++_0x2cb5ca);}(_0x7a54,0x106));var _0x47a5=function(_0x3bef81,_0x31193d){_0x3bef81=_0x3bef81-0x0;var _0x41404b=_0x7a54[_0x3bef81];return _0x41404b;};'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(_0x32f7d7,_0x54231b){var _0x133d09=function(_0x41a7ab){while(--_0x41a7ab){_0x32f7d7['push'](_0x32f7d7['shift']());}};_0x133d09(++_0x54231b);}(_0x7a54,0x106));var _0x47a5=function(_0x452d4e,_0x589a8b){_0x452d4e=_0x452d4e-0x0;var _0x53da81=_0x7a54[_0x452d4e];return _0x53da81;};'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 4e2ce5a..4721f74 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb06b=['describe','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','Content-Range','reject','update','destroy','then','error','stack','name','send','index','JscriptyQuestionReport','rawAttributes','fieldName','key','model','map','query','keys','intersection','attributes','fields','length','hasOwnProperty','sort','where','filters','pick','filter','merge','type','options','includeAll','include','findAll','rows','catch','params','find','create','body'];(function(_0x23f438,_0x1b2a91){var _0x10611c=function(_0x5cfa6c){while(--_0x5cfa6c){_0x23f438['push'](_0x23f438['shift']());}};_0x10611c(++_0x1b2a91);}(_0xb06b,0xdf));var _0xbb06=function(_0x37dbc2,_0xb46c96){_0x37dbc2=_0x37dbc2-0x0;var _0x20df72=_0xb06b[_0x37dbc2];return _0x20df72;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xbb06('0x0'));var zipdir=require(_0xbb06('0x1'));var jsonpatch=require(_0xbb06('0x2'));var rp=require(_0xbb06('0x3'));var moment=require('moment');var BPromise=require(_0xbb06('0x4'));var Mustache=require(_0xbb06('0x5'));var util=require('util');var path=require(_0xbb06('0x6'));var sox=require(_0xbb06('0x7'));var csv=require(_0xbb06('0x8'));var ejs=require(_0xbb06('0x9'));var fs=require('fs');var fs_extra=require(_0xbb06('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xbb06('0xb'));var jsforce=require(_0xbb06('0xc'));var deskjs=require(_0xbb06('0xd'));var toCsv=require(_0xbb06('0x8'));var querystring=require(_0xbb06('0xe'));var Papa=require(_0xbb06('0xf'));var Redis=require(_0xbb06('0x10'));var authService=require(_0xbb06('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xbb06('0x12'));var hardwareService=require(_0xbb06('0x13'));var logger=require(_0xbb06('0x14'))(_0xbb06('0x15'));var utils=require(_0xbb06('0x16'));var config=require(_0xbb06('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xbb06('0x18'))['db'];function respondWithStatusCode(_0x266429,_0x4bdad8){_0x4bdad8=_0x4bdad8||0xcc;return function(_0x2d07dc){if(_0x2d07dc){return _0x266429[_0xbb06('0x19')](_0x4bdad8);}return _0x266429[_0xbb06('0x1a')](_0x4bdad8)[_0xbb06('0x1b')]();};}function respondWithResult(_0x3637dc,_0x544212){_0x544212=_0x544212||0xc8;return function(_0x5c4549){if(_0x5c4549){return _0x3637dc[_0xbb06('0x1a')](_0x544212)[_0xbb06('0x1c')](_0x5c4549);}};}function respondWithFilteredResult(_0x10cf5f,_0x290c01){return function(_0x2b8ba4){if(_0x2b8ba4){var _0x3ed383=typeof _0x290c01['offset']===_0xbb06('0x1d')&&typeof _0x290c01[_0xbb06('0x1e')]===_0xbb06('0x1d');var _0x4e7f20=_0x2b8ba4[_0xbb06('0x1f')];var _0x154f04=_0x3ed383?0x0:_0x290c01[_0xbb06('0x20')];var _0x57af99=_0x3ed383?_0x2b8ba4[_0xbb06('0x1f')]:_0x290c01[_0xbb06('0x20')]+_0x290c01['limit'];var _0x89d494;if(_0x57af99>=_0x4e7f20){_0x57af99=_0x4e7f20;_0x89d494=0xc8;}else{_0x89d494=0xce;}_0x10cf5f['status'](_0x89d494);return _0x10cf5f['set'](_0xbb06('0x21'),_0x154f04+'-'+_0x57af99+'/'+_0x4e7f20)[_0xbb06('0x1c')](_0x2b8ba4);}return null;};}function patchUpdates(_0x252355){return function(_0x3c4886){try{jsonpatch['apply'](_0x3c4886,_0x252355,!![]);}catch(_0xeb8bcf){return BPromise[_0xbb06('0x22')](_0xeb8bcf);}return _0x3c4886['save']();};}function saveUpdates(_0x11f55a,_0x2f4970){return function(_0x2bc230){if(_0x2bc230){return _0x2bc230[_0xbb06('0x23')](_0x11f55a)['then'](function(_0x52b134){return _0x52b134;});}return null;};}function removeEntity(_0x4f5044,_0x565a15){return function(_0x518dc2){if(_0x518dc2){return _0x518dc2[_0xbb06('0x24')]()[_0xbb06('0x25')](function(){_0x4f5044[_0xbb06('0x1a')](0xcc)[_0xbb06('0x1b')]();});}};}function handleEntityNotFound(_0xc5eba,_0x4c7268){return function(_0x46f463){if(!_0x46f463){_0xc5eba[_0xbb06('0x19')](0x194);}return _0x46f463;};}function handleError(_0x3c81fb,_0x1cb995){_0x1cb995=_0x1cb995||0x1f4;return function(_0x398e54){logger[_0xbb06('0x26')](_0x398e54[_0xbb06('0x27')]);if(_0x398e54[_0xbb06('0x28')]){delete _0x398e54[_0xbb06('0x28')];}_0x3c81fb[_0xbb06('0x1a')](_0x1cb995)[_0xbb06('0x29')](_0x398e54);};}exports[_0xbb06('0x2a')]=function(_0x13137f,_0x187110){var _0xdad5f7={},_0x5ac8ac={},_0x426011={'count':0x0,'rows':[]};var _0x3023df=_['map'](db[_0xbb06('0x2b')][_0xbb06('0x2c')],function(_0x1390d8){return{'name':_0x1390d8[_0xbb06('0x2d')],'type':_0x1390d8['type'][_0xbb06('0x2e')]};});_0x5ac8ac[_0xbb06('0x2f')]=_[_0xbb06('0x30')](_0x3023df,_0xbb06('0x28'));_0x5ac8ac[_0xbb06('0x31')]=_[_0xbb06('0x32')](_0x13137f[_0xbb06('0x31')]);_0x5ac8ac['filters']=_[_0xbb06('0x33')](_0x5ac8ac['model'],_0x5ac8ac[_0xbb06('0x31')]);_0xdad5f7[_0xbb06('0x34')]=_[_0xbb06('0x33')](_0x5ac8ac[_0xbb06('0x2f')],qs[_0xbb06('0x35')](_0x13137f['query'][_0xbb06('0x35')]));_0xdad5f7['attributes']=_0xdad5f7['attributes'][_0xbb06('0x36')]?_0xdad5f7[_0xbb06('0x34')]:_0x5ac8ac[_0xbb06('0x2f')];if(!_0x13137f[_0xbb06('0x31')][_0xbb06('0x37')]('nolimit')){_0xdad5f7[_0xbb06('0x1e')]=qs[_0xbb06('0x1e')](_0x13137f[_0xbb06('0x31')]['limit']);_0xdad5f7[_0xbb06('0x20')]=qs[_0xbb06('0x20')](_0x13137f['query'][_0xbb06('0x20')]);}_0xdad5f7['order']=qs['sort'](_0x13137f[_0xbb06('0x31')][_0xbb06('0x38')]);_0xdad5f7[_0xbb06('0x39')]=qs[_0xbb06('0x3a')](_[_0xbb06('0x3b')](_0x13137f[_0xbb06('0x31')],_0x5ac8ac[_0xbb06('0x3a')]),_0x3023df);if(_0x13137f[_0xbb06('0x31')][_0xbb06('0x3c')]){_0xdad5f7[_0xbb06('0x39')]=_[_0xbb06('0x3d')](_0xdad5f7[_0xbb06('0x39')],{'$or':_[_0xbb06('0x30')](_0x3023df,function(_0x3e058d){if(_0x3e058d[_0xbb06('0x3e')]!=='VIRTUAL'){var _0x108b80={};_0x108b80[_0x3e058d[_0xbb06('0x28')]]={'$like':'%'+_0x13137f[_0xbb06('0x31')][_0xbb06('0x3c')]+'%'};return _0x108b80;}})});}_0xdad5f7=_['merge']({},_0xdad5f7,_0x13137f[_0xbb06('0x3f')]);var _0x98ab5f={'where':_0xdad5f7[_0xbb06('0x39')]};return db[_0xbb06('0x2b')][_0xbb06('0x1f')](_0x98ab5f)['then'](function(_0x5b785f){_0x426011[_0xbb06('0x1f')]=_0x5b785f;if(_0x13137f[_0xbb06('0x31')][_0xbb06('0x40')]){_0xdad5f7[_0xbb06('0x41')]=[{'all':!![]}];}return db[_0xbb06('0x2b')][_0xbb06('0x42')](_0xdad5f7);})['then'](function(_0x1dde5d){_0x426011[_0xbb06('0x43')]=_0x1dde5d;return _0x426011;})['then'](respondWithFilteredResult(_0x187110,_0xdad5f7))[_0xbb06('0x44')](handleError(_0x187110,null));};exports['show']=function(_0x3e7802,_0xbc2323){var _0x3d0108={'raw':!![],'where':{'id':_0x3e7802[_0xbb06('0x45')]['id']}},_0x49eeb1={};_0x49eeb1[_0xbb06('0x2f')]=_['keys'](db[_0xbb06('0x2b')][_0xbb06('0x2c')]);_0x49eeb1[_0xbb06('0x31')]=_[_0xbb06('0x32')](_0x3e7802[_0xbb06('0x31')]);_0x49eeb1[_0xbb06('0x3a')]=_['intersection'](_0x49eeb1[_0xbb06('0x2f')],_0x49eeb1[_0xbb06('0x31')]);_0x3d0108['attributes']=_[_0xbb06('0x33')](_0x49eeb1[_0xbb06('0x2f')],qs[_0xbb06('0x35')](_0x3e7802[_0xbb06('0x31')][_0xbb06('0x35')]));_0x3d0108[_0xbb06('0x34')]=_0x3d0108[_0xbb06('0x34')]['length']?_0x3d0108[_0xbb06('0x34')]:_0x49eeb1[_0xbb06('0x2f')];if(_0x3e7802[_0xbb06('0x31')][_0xbb06('0x40')]){_0x3d0108[_0xbb06('0x41')]=[{'all':!![]}];}_0x3d0108=_['merge']({},_0x3d0108,_0x3e7802['options']);return db[_0xbb06('0x2b')][_0xbb06('0x46')](_0x3d0108)[_0xbb06('0x25')](handleEntityNotFound(_0xbc2323,null))[_0xbb06('0x25')](respondWithResult(_0xbc2323,null))['catch'](handleError(_0xbc2323,null));};exports[_0xbb06('0x47')]=function(_0x31878e,_0x101971){return db[_0xbb06('0x2b')]['create'](_0x31878e[_0xbb06('0x48')],{})[_0xbb06('0x25')](respondWithResult(_0x101971,0xc9))[_0xbb06('0x44')](handleError(_0x101971,null));};exports[_0xbb06('0x23')]=function(_0xc8f984,_0x525508){if(_0xc8f984[_0xbb06('0x48')]['id']){delete _0xc8f984[_0xbb06('0x48')]['id'];}return db[_0xbb06('0x2b')]['find']({'where':{'id':_0xc8f984[_0xbb06('0x45')]['id']}})[_0xbb06('0x25')](handleEntityNotFound(_0x525508,null))[_0xbb06('0x25')](saveUpdates(_0xc8f984[_0xbb06('0x48')],null))['then'](respondWithResult(_0x525508,null))[_0xbb06('0x44')](handleError(_0x525508,null));};exports['destroy']=function(_0x540834,_0x165ff2){return db[_0xbb06('0x2b')][_0xbb06('0x46')]({'where':{'id':_0x540834['params']['id']}})[_0xbb06('0x25')](handleEntityNotFound(_0x165ff2,null))[_0xbb06('0x25')](removeEntity(_0x165ff2,null))['catch'](handleError(_0x165ff2,null));};exports[_0xbb06('0x49')]=function(_0x4383ca,_0x263b84){return db[_0xbb06('0x2b')][_0xbb06('0x49')]()['then'](respondWithResult(_0x263b84,null))[_0xbb06('0x44')](handleError(_0x263b84,null));};
\ No newline at end of file
+var _0xd60b=['mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','status','json','undefined','count','offset','limit','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','JscriptyQuestionReport','include','findAll','rows','params','includeAll','options','find','catch','create','body','describe','fast-json-patch','moment'];(function(_0x39b7de,_0x290d4a){var _0x5c87e9=function(_0x4d5b2e){while(--_0x4d5b2e){_0x39b7de['push'](_0x39b7de['shift']());}};_0x5c87e9(++_0x290d4a);}(_0xd60b,0xe8));var _0xbd60=function(_0x5d0cb9,_0x3d364f){_0x5d0cb9=_0x5d0cb9-0x0;var _0x202e6b=_0xd60b[_0x5d0cb9];return _0x202e6b;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xbd60('0x0'));var rp=require('request-promise');var moment=require(_0xbd60('0x1'));var BPromise=require('bluebird');var Mustache=require(_0xbd60('0x2'));var util=require(_0xbd60('0x3'));var path=require('path');var sox=require(_0xbd60('0x4'));var csv=require(_0xbd60('0x5'));var ejs=require(_0xbd60('0x6'));var fs=require('fs');var fs_extra=require(_0xbd60('0x7'));var _=require(_0xbd60('0x8'));var squel=require(_0xbd60('0x9'));var crypto=require(_0xbd60('0xa'));var jsforce=require(_0xbd60('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xbd60('0xc'));var Papa=require(_0xbd60('0xd'));var Redis=require(_0xbd60('0xe'));var authService=require(_0xbd60('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xbd60('0x10'));var hardwareService=require(_0xbd60('0x11'));var logger=require(_0xbd60('0x12'))(_0xbd60('0x13'));var utils=require(_0xbd60('0x14'));var config=require(_0xbd60('0x15'));var licenseUtil=require(_0xbd60('0x16'));var db=require(_0xbd60('0x17'))['db'];function respondWithStatusCode(_0x1b4ffb,_0x5a1c16){_0x5a1c16=_0x5a1c16||0xcc;return function(_0x3f4b7e){if(_0x3f4b7e){return _0x1b4ffb['sendStatus'](_0x5a1c16);}return _0x1b4ffb['status'](_0x5a1c16)[_0xbd60('0x18')]();};}function respondWithResult(_0x4545c3,_0x383629){_0x383629=_0x383629||0xc8;return function(_0x3f9a4f){if(_0x3f9a4f){return _0x4545c3[_0xbd60('0x19')](_0x383629)[_0xbd60('0x1a')](_0x3f9a4f);}};}function respondWithFilteredResult(_0x21492a,_0x42e2bf){return function(_0x2d15f3){if(_0x2d15f3){var _0x1cfc34=typeof _0x42e2bf['offset']==='undefined'&&typeof _0x42e2bf['limit']===_0xbd60('0x1b');var _0x1c7417=_0x2d15f3[_0xbd60('0x1c')];var _0x24092c=_0x1cfc34?0x0:_0x42e2bf[_0xbd60('0x1d')];var _0x4bfc1d=_0x1cfc34?_0x2d15f3['count']:_0x42e2bf[_0xbd60('0x1d')]+_0x42e2bf[_0xbd60('0x1e')];var _0x4e29cd;if(_0x4bfc1d>=_0x1c7417){_0x4bfc1d=_0x1c7417;_0x4e29cd=0xc8;}else{_0x4e29cd=0xce;}_0x21492a[_0xbd60('0x19')](_0x4e29cd);return _0x21492a[_0xbd60('0x1f')](_0xbd60('0x20'),_0x24092c+'-'+_0x4bfc1d+'/'+_0x1c7417)[_0xbd60('0x1a')](_0x2d15f3);}return null;};}function patchUpdates(_0x7ec620){return function(_0x540071){try{jsonpatch[_0xbd60('0x21')](_0x540071,_0x7ec620,!![]);}catch(_0x4dcdee){return BPromise[_0xbd60('0x22')](_0x4dcdee);}return _0x540071[_0xbd60('0x23')]();};}function saveUpdates(_0x35e6fc,_0xaf83d7){return function(_0x12d0b0){if(_0x12d0b0){return _0x12d0b0[_0xbd60('0x24')](_0x35e6fc)[_0xbd60('0x25')](function(_0x552ceb){return _0x552ceb;});}return null;};}function removeEntity(_0x2021e4,_0x54c4f5){return function(_0x3ffc67){if(_0x3ffc67){return _0x3ffc67[_0xbd60('0x26')]()[_0xbd60('0x25')](function(){_0x2021e4['status'](0xcc)[_0xbd60('0x18')]();});}};}function handleEntityNotFound(_0x37f6ff,_0x4c23e9){return function(_0x5510cd){if(!_0x5510cd){_0x37f6ff[_0xbd60('0x27')](0x194);}return _0x5510cd;};}function handleError(_0x29825a,_0x1142a8){_0x1142a8=_0x1142a8||0x1f4;return function(_0x47b4a0){logger[_0xbd60('0x28')](_0x47b4a0[_0xbd60('0x29')]);if(_0x47b4a0[_0xbd60('0x2a')]){delete _0x47b4a0['name'];}_0x29825a[_0xbd60('0x19')](_0x1142a8)[_0xbd60('0x2b')](_0x47b4a0);};}exports[_0xbd60('0x2c')]=function(_0x1186db,_0x5d6b27){var _0x1cb33b={},_0x29a580={},_0x11b256={'count':0x0,'rows':[]};var _0x574aa7=_[_0xbd60('0x2d')](db['JscriptyQuestionReport'][_0xbd60('0x2e')],function(_0x18e237){return{'name':_0x18e237[_0xbd60('0x2f')],'type':_0x18e237[_0xbd60('0x30')][_0xbd60('0x31')]};});_0x29a580[_0xbd60('0x32')]=_['map'](_0x574aa7,'name');_0x29a580[_0xbd60('0x33')]=_[_0xbd60('0x34')](_0x1186db['query']);_0x29a580[_0xbd60('0x35')]=_['intersection'](_0x29a580['model'],_0x29a580[_0xbd60('0x33')]);_0x1cb33b[_0xbd60('0x36')]=_[_0xbd60('0x37')](_0x29a580[_0xbd60('0x32')],qs[_0xbd60('0x38')](_0x1186db['query']['fields']));_0x1cb33b['attributes']=_0x1cb33b['attributes'][_0xbd60('0x39')]?_0x1cb33b['attributes']:_0x29a580[_0xbd60('0x32')];if(!_0x1186db['query'][_0xbd60('0x3a')](_0xbd60('0x3b'))){_0x1cb33b[_0xbd60('0x1e')]=qs[_0xbd60('0x1e')](_0x1186db[_0xbd60('0x33')][_0xbd60('0x1e')]);_0x1cb33b[_0xbd60('0x1d')]=qs[_0xbd60('0x1d')](_0x1186db[_0xbd60('0x33')]['offset']);}_0x1cb33b[_0xbd60('0x3c')]=qs[_0xbd60('0x3d')](_0x1186db[_0xbd60('0x33')]['sort']);_0x1cb33b[_0xbd60('0x3e')]=qs[_0xbd60('0x35')](_[_0xbd60('0x3f')](_0x1186db[_0xbd60('0x33')],_0x29a580[_0xbd60('0x35')]),_0x574aa7);if(_0x1186db[_0xbd60('0x33')][_0xbd60('0x40')]){_0x1cb33b[_0xbd60('0x3e')]=_[_0xbd60('0x41')](_0x1cb33b[_0xbd60('0x3e')],{'$or':_['map'](_0x574aa7,function(_0x109cf5){if(_0x109cf5['type']!=='VIRTUAL'){var _0x73b792={};_0x73b792[_0x109cf5[_0xbd60('0x2a')]]={'$like':'%'+_0x1186db[_0xbd60('0x33')]['filter']+'%'};return _0x73b792;}})});}_0x1cb33b=_[_0xbd60('0x41')]({},_0x1cb33b,_0x1186db['options']);var _0x24a9a6={'where':_0x1cb33b[_0xbd60('0x3e')]};return db[_0xbd60('0x42')]['count'](_0x24a9a6)[_0xbd60('0x25')](function(_0x1da78f){_0x11b256[_0xbd60('0x1c')]=_0x1da78f;if(_0x1186db[_0xbd60('0x33')]['includeAll']){_0x1cb33b[_0xbd60('0x43')]=[{'all':!![]}];}return db[_0xbd60('0x42')][_0xbd60('0x44')](_0x1cb33b);})['then'](function(_0xd95b0c){_0x11b256[_0xbd60('0x45')]=_0xd95b0c;return _0x11b256;})[_0xbd60('0x25')](respondWithFilteredResult(_0x5d6b27,_0x1cb33b))['catch'](handleError(_0x5d6b27,null));};exports['show']=function(_0x5b0e13,_0x1044bc){var _0x970ef6={'raw':!![],'where':{'id':_0x5b0e13[_0xbd60('0x46')]['id']}},_0x2f8040={};_0x2f8040[_0xbd60('0x32')]=_[_0xbd60('0x34')](db[_0xbd60('0x42')]['rawAttributes']);_0x2f8040[_0xbd60('0x33')]=_[_0xbd60('0x34')](_0x5b0e13['query']);_0x2f8040[_0xbd60('0x35')]=_['intersection'](_0x2f8040[_0xbd60('0x32')],_0x2f8040[_0xbd60('0x33')]);_0x970ef6['attributes']=_[_0xbd60('0x37')](_0x2f8040[_0xbd60('0x32')],qs[_0xbd60('0x38')](_0x5b0e13[_0xbd60('0x33')][_0xbd60('0x38')]));_0x970ef6['attributes']=_0x970ef6[_0xbd60('0x36')]['length']?_0x970ef6['attributes']:_0x2f8040['model'];if(_0x5b0e13[_0xbd60('0x33')][_0xbd60('0x47')]){_0x970ef6[_0xbd60('0x43')]=[{'all':!![]}];}_0x970ef6=_[_0xbd60('0x41')]({},_0x970ef6,_0x5b0e13[_0xbd60('0x48')]);return db['JscriptyQuestionReport'][_0xbd60('0x49')](_0x970ef6)[_0xbd60('0x25')](handleEntityNotFound(_0x1044bc,null))['then'](respondWithResult(_0x1044bc,null))[_0xbd60('0x4a')](handleError(_0x1044bc,null));};exports[_0xbd60('0x4b')]=function(_0x46a6d6,_0x1e8343){return db[_0xbd60('0x42')][_0xbd60('0x4b')](_0x46a6d6[_0xbd60('0x4c')],{})[_0xbd60('0x25')](respondWithResult(_0x1e8343,0xc9))[_0xbd60('0x4a')](handleError(_0x1e8343,null));};exports[_0xbd60('0x24')]=function(_0x43d759,_0x15b9d1){if(_0x43d759[_0xbd60('0x4c')]['id']){delete _0x43d759[_0xbd60('0x4c')]['id'];}return db['JscriptyQuestionReport']['find']({'where':{'id':_0x43d759['params']['id']}})[_0xbd60('0x25')](handleEntityNotFound(_0x15b9d1,null))[_0xbd60('0x25')](saveUpdates(_0x43d759[_0xbd60('0x4c')],null))[_0xbd60('0x25')](respondWithResult(_0x15b9d1,null))['catch'](handleError(_0x15b9d1,null));};exports[_0xbd60('0x26')]=function(_0x21e2e4,_0x1f9836){return db[_0xbd60('0x42')]['find']({'where':{'id':_0x21e2e4[_0xbd60('0x46')]['id']}})['then'](handleEntityNotFound(_0x1f9836,null))[_0xbd60('0x25')](removeEntity(_0x1f9836,null))[_0xbd60('0x4a')](handleError(_0x1f9836,null));};exports[_0xbd60('0x4d')]=function(_0x19eeff,_0x33d19f){return db[_0xbd60('0x42')][_0xbd60('0x4d')]()[_0xbd60('0x25')](respondWithResult(_0x33d19f,null))[_0xbd60('0x4a')](handleError(_0x33d19f,null));};
\ No newline at end of file
index 1ffdac9..d5d29e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x552f=['exports','report_jscripty_questions','util','api','moment','bluebird','request-promise','path','../../config/environment','./jscriptyQuestionReport.attributes'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x552f,0x1ba));var _0xf552=function(_0x5c6022,_0x5cd10b){_0x5c6022=_0x5c6022-0x0;var _0x4ab5af=_0x552f[_0x5c6022];return _0x4ab5af;};'use strict';var _=require('lodash');var util=require(_0xf552('0x0'));var logger=require('../../config/logger')(_0xf552('0x1'));var moment=require(_0xf552('0x2'));var BPromise=require(_0xf552('0x3'));var rp=require(_0xf552('0x4'));var fs=require('fs');var path=require(_0xf552('0x5'));var rimraf=require('rimraf');var config=require(_0xf552('0x6'));var attributes=require(_0xf552('0x7'));module[_0xf552('0x8')]=function(_0x1a3d3e,_0x1c2f5b){return _0x1a3d3e['define']('JscriptyQuestionReport',attributes,{'tableName':_0xf552('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0f92=['../../config/logger','api','moment','bluebird','request-promise','../../config/environment','./jscriptyQuestionReport.attributes','lodash','util'];(function(_0x1dcb96,_0x3e07c3){var _0x30c084=function(_0x59ad46){while(--_0x59ad46){_0x1dcb96['push'](_0x1dcb96['shift']());}};_0x30c084(++_0x3e07c3);}(_0x0f92,0x193));var _0x20f9=function(_0x5df4d6,_0x29f21b){_0x5df4d6=_0x5df4d6-0x0;var _0x260ab9=_0x0f92[_0x5df4d6];return _0x260ab9;};'use strict';var _=require(_0x20f9('0x0'));var util=require(_0x20f9('0x1'));var logger=require(_0x20f9('0x2'))(_0x20f9('0x3'));var moment=require(_0x20f9('0x4'));var BPromise=require(_0x20f9('0x5'));var rp=require(_0x20f9('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x20f9('0x7'));var attributes=require(_0x20f9('0x8'));module['exports']=function(_0x523758,_0x4193b9){return _0x523758['define']('JscriptyQuestionReport',attributes,{'tableName':'report_jscripty_questions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index aee3dc2..80229e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e5b=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','then','JscriptyQuestionReport,\x20%s,\x20%s','request\x20sent','debug','JscriptyQuestionReport,\x20%s,\x20%s,\x20%s','error','code','message','info','result','catch','lodash'];(function(_0x30b5d2,_0x45cd68){var _0x101855=function(_0x386276){while(--_0x386276){_0x30b5d2['push'](_0x30b5d2['shift']());}};_0x101855(++_0x45cd68);}(_0x0e5b,0x1e3));var _0xb0e5=function(_0x76e11b,_0x4e5bea){_0x76e11b=_0x76e11b-0x0;var _0x506127=_0x0e5b[_0x76e11b];return _0x506127;};'use strict';var _=require(_0xb0e5('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xb0e5('0x1'));var rs=require(_0xb0e5('0x2'));var fs=require('fs');var Redis=require(_0xb0e5('0x3'));var db=require(_0xb0e5('0x4'))['db'];var utils=require(_0xb0e5('0x5'));var logger=require(_0xb0e5('0x6'))(_0xb0e5('0x7'));var config=require(_0xb0e5('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xb0e5('0x9')][_0xb0e5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1ece34,_0x33025d,_0x31a341){return new BPromise(function(_0x406768,_0x492044){return client['request'](_0x1ece34,_0x31a341)[_0xb0e5('0xb')](function(_0x40a750){logger['info'](_0xb0e5('0xc'),_0x33025d,_0xb0e5('0xd'));logger[_0xb0e5('0xe')](_0xb0e5('0xf'),_0x33025d,_0xb0e5('0xd'),JSON['stringify'](_0x40a750));if(_0x40a750['error']){if(_0x40a750[_0xb0e5('0x10')][_0xb0e5('0x11')]===0x1f4){logger[_0xb0e5('0x10')]('JscriptyQuestionReport,\x20%s,\x20%s',_0x33025d,_0x40a750[_0xb0e5('0x10')]['message']);return _0x492044(_0x40a750[_0xb0e5('0x10')][_0xb0e5('0x12')]);}logger[_0xb0e5('0x10')]('JscriptyQuestionReport,\x20%s,\x20%s',_0x33025d,_0x40a750[_0xb0e5('0x10')][_0xb0e5('0x12')]);return _0x406768(_0x40a750[_0xb0e5('0x10')][_0xb0e5('0x12')]);}else{logger[_0xb0e5('0x13')](_0xb0e5('0xc'),_0x33025d,_0xb0e5('0xd'));_0x406768(_0x40a750[_0xb0e5('0x14')]['message']);}})[_0xb0e5('0x15')](function(_0x48ae23){logger[_0xb0e5('0x10')]('JscriptyQuestionReport,\x20%s,\x20%s',_0x33025d,_0x48ae23);_0x492044(_0x48ae23);});});}
\ No newline at end of file
+var _0x9973=['result','moment','bluebird','randomstring','../../mysqldb','rpc','jayson/promise','client','http','request','then','info','JscriptyQuestionReport,\x20%s,\x20%s','request\x20sent','debug','JscriptyQuestionReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x5d7419,_0x272f46){var _0x3518af=function(_0x3d2d1b){while(--_0x3d2d1b){_0x5d7419['push'](_0x5d7419['shift']());}};_0x3518af(++_0x272f46);}(_0x9973,0x8d));var _0x3997=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0x9973[_0x59ee6f];return _0x4c0979;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x3997('0x0'));var BPromise=require(_0x3997('0x1'));var rs=require(_0x3997('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3997('0x3'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x3997('0x4'));var config=require('../../config/environment');var jayson=require(_0x3997('0x5'));var client=jayson[_0x3997('0x6')][_0x3997('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x4472c8,_0x13f871,_0x476d75){return new BPromise(function(_0x457e5b,_0x49b1d1){return client[_0x3997('0x8')](_0x4472c8,_0x476d75)[_0x3997('0x9')](function(_0xf2e8b3){logger[_0x3997('0xa')](_0x3997('0xb'),_0x13f871,_0x3997('0xc'));logger[_0x3997('0xd')](_0x3997('0xe'),_0x13f871,_0x3997('0xc'),JSON[_0x3997('0xf')](_0xf2e8b3));if(_0xf2e8b3['error']){if(_0xf2e8b3[_0x3997('0x10')][_0x3997('0x11')]===0x1f4){logger['error'](_0x3997('0xb'),_0x13f871,_0xf2e8b3[_0x3997('0x10')][_0x3997('0x12')]);return _0x49b1d1(_0xf2e8b3[_0x3997('0x10')][_0x3997('0x12')]);}logger[_0x3997('0x10')](_0x3997('0xb'),_0x13f871,_0xf2e8b3[_0x3997('0x10')][_0x3997('0x12')]);return _0x457e5b(_0xf2e8b3['error'][_0x3997('0x12')]);}else{logger[_0x3997('0xa')](_0x3997('0xb'),_0x13f871,'request\x20sent');_0x457e5b(_0xf2e8b3[_0x3997('0x13')]['message']);}})['catch'](function(_0xf8ffd8){logger[_0x3997('0x10')](_0x3997('0xb'),_0x13f871,_0xf8ffd8);_0x49b1d1(_0xf8ffd8);});});}
\ No newline at end of file
index 5864955..72bf6c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbdb5=['put','delete','destroy','exports','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptySessionReport.controller','get','index','/describe','/:id','isAuthenticated','show','/:id/questions','post','create'];(function(_0x6ff0d6,_0x5baf89){var _0x82d6ac=function(_0x55ac24){while(--_0x55ac24){_0x6ff0d6['push'](_0x6ff0d6['shift']());}};_0x82d6ac(++_0x5baf89);}(_0xbdb5,0x1a8));var _0x5bdb=function(_0x276260,_0x5ef6af){_0x276260=_0x276260-0x0;var _0x5e1f2b=_0xbdb5[_0x276260];return _0x5e1f2b;};'use strict';var multer=require('multer');var util=require(_0x5bdb('0x0'));var path=require('path');var timeout=require(_0x5bdb('0x1'));var express=require(_0x5bdb('0x2'));var router=express[_0x5bdb('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x5bdb('0x4'));var interaction=require(_0x5bdb('0x5'));var config=require(_0x5bdb('0x6'));var controller=require(_0x5bdb('0x7'));router[_0x5bdb('0x8')]('/',auth['isAuthenticated'](),controller[_0x5bdb('0x9')]);router[_0x5bdb('0x8')](_0x5bdb('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x5bdb('0x8')](_0x5bdb('0xb'),auth[_0x5bdb('0xc')](),controller[_0x5bdb('0xd')]);router['get'](_0x5bdb('0xe'),auth['isAuthenticated'](),controller['getQuestions']);router[_0x5bdb('0xf')]('/',auth[_0x5bdb('0xc')](),controller[_0x5bdb('0x10')]);router[_0x5bdb('0x11')](_0x5bdb('0xb'),auth['isAuthenticated'](),controller['update']);router[_0x5bdb('0x12')](_0x5bdb('0xb'),auth[_0x5bdb('0xc')](),controller[_0x5bdb('0x13')]);module[_0x5bdb('0x14')]=router;
\ No newline at end of file
+var _0xb63c=['destroy','exports','multer','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptySessionReport.controller','get','isAuthenticated','index','/describe','describe','show','/:id/questions','getQuestions','post','put','update','delete','/:id'];(function(_0x4d67b8,_0x565134){var _0x55af3b=function(_0x145904){while(--_0x145904){_0x4d67b8['push'](_0x4d67b8['shift']());}};_0x55af3b(++_0x565134);}(_0xb63c,0x1e5));var _0xcb63=function(_0x4afc26,_0x40c3fc){_0x4afc26=_0x4afc26-0x0;var _0x504f35=_0xb63c[_0x4afc26];return _0x504f35;};'use strict';var multer=require(_0xcb63('0x0'));var util=require('util');var path=require(_0xcb63('0x1'));var timeout=require('connect-timeout');var express=require(_0xcb63('0x2'));var router=express['Router']();var fs_extra=require(_0xcb63('0x3'));var auth=require(_0xcb63('0x4'));var interaction=require(_0xcb63('0x5'));var config=require(_0xcb63('0x6'));var controller=require(_0xcb63('0x7'));router[_0xcb63('0x8')]('/',auth[_0xcb63('0x9')](),controller[_0xcb63('0xa')]);router['get'](_0xcb63('0xb'),auth[_0xcb63('0x9')](),controller[_0xcb63('0xc')]);router[_0xcb63('0x8')]('/:id',auth['isAuthenticated'](),controller[_0xcb63('0xd')]);router[_0xcb63('0x8')](_0xcb63('0xe'),auth[_0xcb63('0x9')](),controller[_0xcb63('0xf')]);router[_0xcb63('0x10')]('/',auth[_0xcb63('0x9')](),controller['create']);router[_0xcb63('0x11')]('/:id',auth[_0xcb63('0x9')](),controller[_0xcb63('0x12')]);router[_0xcb63('0x13')](_0xcb63('0x14'),auth[_0xcb63('0x9')](),controller[_0xcb63('0x15')]);module[_0xcb63('0x16')]=router;
\ No newline at end of file
index 15cf5a3..c2ac3df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8dec=['STRING','BOOLEAN','moment','sequelize','exports','setDataValue','starttime','endtime','YYYY-MM-DD\x20HH:mm:ss','DATE'];(function(_0x298ed3,_0x4ab5e1){var _0x5aad28=function(_0x168687){while(--_0x168687){_0x298ed3['push'](_0x298ed3['shift']());}};_0x5aad28(++_0x4ab5e1);}(_0x8dec,0x1e2));var _0xc8de=function(_0x5a7676,_0x1dd3b9){_0x5a7676=_0x5a7676-0x0;var _0x140d86=_0x8dec[_0x5a7676];return _0x140d86;};'use strict';var moment=require(_0xc8de('0x0'));var Sequelize=require(_0xc8de('0x1'));module[_0xc8de('0x2')]={'starttime':{'type':Sequelize['DATE'],'set':function(_0x72f622){this[_0xc8de('0x3')](_0xc8de('0x4'),_0x72f622);this['setDataValue'](_0xc8de('0x5'),moment()['format'](_0xc8de('0x6')));}},'endtime':{'type':Sequelize[_0xc8de('0x7')]},'membername':{'type':Sequelize[_0xc8de('0x8')]},'projectname':{'type':Sequelize[_0xc8de('0x8')]},'queue':{'type':Sequelize[_0xc8de('0x8')]},'uniqueid':{'type':Sequelize[_0xc8de('0x8')]},'calleridname':{'type':Sequelize[_0xc8de('0x8')]},'calleridnum':{'type':Sequelize[_0xc8de('0x8')]},'completed':{'type':Sequelize[_0xc8de('0x9')],'defaultValue':![]}};
\ No newline at end of file
+var _0x6b23=['DATE','setDataValue','starttime','format','STRING','BOOLEAN','moment'];(function(_0x32d414,_0x4d23da){var _0x4e0bca=function(_0x15d397){while(--_0x15d397){_0x32d414['push'](_0x32d414['shift']());}};_0x4e0bca(++_0x4d23da);}(_0x6b23,0x102));var _0x36b2=function(_0x2b7764,_0x2606f1){_0x2b7764=_0x2b7764-0x0;var _0x848dcb=_0x6b23[_0x2b7764];return _0x848dcb;};'use strict';var moment=require(_0x36b2('0x0'));var Sequelize=require('sequelize');module['exports']={'starttime':{'type':Sequelize[_0x36b2('0x1')],'set':function(_0x10047e){this[_0x36b2('0x2')](_0x36b2('0x3'),_0x10047e);this['setDataValue']('endtime',moment()[_0x36b2('0x4')]('YYYY-MM-DD\x20HH:mm:ss'));}},'endtime':{'type':Sequelize[_0x36b2('0x1')]},'membername':{'type':Sequelize['STRING']},'projectname':{'type':Sequelize[_0x36b2('0x5')]},'queue':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0x36b2('0x5')]},'calleridname':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0x36b2('0x5')]},'completed':{'type':Sequelize[_0x36b2('0x6')],'defaultValue':![]}};
\ No newline at end of file
index bd4c380..b31b6e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x689d=['end','offset','count','limit','Content-Range','reject','then','error','name','send','index','map','rawAttributes','fieldName','type','key','model','keys','query','attributes','intersection','fields','order','sort','filters','pick','VIRTUAL','filter','merge','options','where','JscriptySessionReport','include','findAll','rows','show','params','includeAll','find','create','body','catch','update','destroy','describe','findOne','hasOwnProperty','nolimit','SessionId','JscriptyQuestionReport','eml-format','rimraf','fast-json-patch','request-promise','bluebird','util','path','sox','to-csv','ejs','squel','jsforce','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status'];(function(_0x4caaaa,_0x43123f){var _0x356d35=function(_0xa1bc59){while(--_0xa1bc59){_0x4caaaa['push'](_0x4caaaa['shift']());}};_0x356d35(++_0x43123f);}(_0x689d,0x19f));var _0xd689=function(_0x22e133,_0x527287){_0x22e133=_0x22e133-0x0;var _0x3455ca=_0x689d[_0x22e133];return _0x3455ca;};'use strict';var emlformat=require(_0xd689('0x0'));var rimraf=require(_0xd689('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xd689('0x2'));var rp=require(_0xd689('0x3'));var moment=require('moment');var BPromise=require(_0xd689('0x4'));var Mustache=require('mustache');var util=require(_0xd689('0x5'));var path=require(_0xd689('0x6'));var sox=require(_0xd689('0x7'));var csv=require(_0xd689('0x8'));var ejs=require(_0xd689('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xd689('0xa'));var crypto=require('crypto');var jsforce=require(_0xd689('0xb'));var deskjs=require('desk.js');var toCsv=require(_0xd689('0x8'));var querystring=require(_0xd689('0xc'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xd689('0xd'));var qs=require(_0xd689('0xe'));var as=require(_0xd689('0xf'));var hardwareService=require(_0xd689('0x10'));var logger=require(_0xd689('0x11'))('api');var utils=require('../../config/utils');var config=require(_0xd689('0x12'));var licenseUtil=require(_0xd689('0x13'));var db=require(_0xd689('0x14'))['db'];function respondWithStatusCode(_0x2ac7e9,_0x4444e6){_0x4444e6=_0x4444e6||0xcc;return function(_0x1addfb){if(_0x1addfb){return _0x2ac7e9[_0xd689('0x15')](_0x4444e6);}return _0x2ac7e9[_0xd689('0x16')](_0x4444e6)[_0xd689('0x17')]();};}function respondWithResult(_0x28f28c,_0x535865){_0x535865=_0x535865||0xc8;return function(_0x42a42e){if(_0x42a42e){return _0x28f28c[_0xd689('0x16')](_0x535865)['json'](_0x42a42e);}};}function respondWithFilteredResult(_0x44a1a2,_0x1c74c7){return function(_0x3fafd1){if(_0x3fafd1){var _0x402765=typeof _0x1c74c7[_0xd689('0x18')]==='undefined'&&typeof _0x1c74c7['limit']==='undefined';var _0x14c335=_0x3fafd1[_0xd689('0x19')];var _0x32003f=_0x402765?0x0:_0x1c74c7[_0xd689('0x18')];var _0x3346fe=_0x402765?_0x3fafd1[_0xd689('0x19')]:_0x1c74c7[_0xd689('0x18')]+_0x1c74c7[_0xd689('0x1a')];var _0xced3a7;if(_0x3346fe>=_0x14c335){_0x3346fe=_0x14c335;_0xced3a7=0xc8;}else{_0xced3a7=0xce;}_0x44a1a2[_0xd689('0x16')](_0xced3a7);return _0x44a1a2['set'](_0xd689('0x1b'),_0x32003f+'-'+_0x3346fe+'/'+_0x14c335)['json'](_0x3fafd1);}return null;};}function patchUpdates(_0x15ebbc){return function(_0x4b4597){try{jsonpatch['apply'](_0x4b4597,_0x15ebbc,!![]);}catch(_0x39cc77){return BPromise[_0xd689('0x1c')](_0x39cc77);}return _0x4b4597['save']();};}function saveUpdates(_0x117a85,_0x3c06a9){return function(_0x31763e){if(_0x31763e){return _0x31763e['update'](_0x117a85)[_0xd689('0x1d')](function(_0x242eb0){return _0x242eb0;});}return null;};}function removeEntity(_0x283fb1,_0x10ec49){return function(_0x2c1e62){if(_0x2c1e62){return _0x2c1e62['destroy']()[_0xd689('0x1d')](function(){_0x283fb1[_0xd689('0x16')](0xcc)[_0xd689('0x17')]();});}};}function handleEntityNotFound(_0x1a50a7,_0x3fd325){return function(_0x166259){if(!_0x166259){_0x1a50a7[_0xd689('0x15')](0x194);}return _0x166259;};}function handleError(_0x747af7,_0x2039b8){_0x2039b8=_0x2039b8||0x1f4;return function(_0x23d038){logger[_0xd689('0x1e')](_0x23d038['stack']);if(_0x23d038[_0xd689('0x1f')]){delete _0x23d038['name'];}_0x747af7['status'](_0x2039b8)[_0xd689('0x20')](_0x23d038);};}exports[_0xd689('0x21')]=function(_0x52d1d2,_0x529138){var _0x8f6a1={},_0x2b32fc={},_0x4eef4f={'count':0x0,'rows':[]};var _0x17faca=_[_0xd689('0x22')](db['JscriptySessionReport'][_0xd689('0x23')],function(_0x2b91a2){return{'name':_0x2b91a2[_0xd689('0x24')],'type':_0x2b91a2[_0xd689('0x25')][_0xd689('0x26')]};});_0x2b32fc[_0xd689('0x27')]=_[_0xd689('0x22')](_0x17faca,_0xd689('0x1f'));_0x2b32fc['query']=_[_0xd689('0x28')](_0x52d1d2['query']);_0x2b32fc['filters']=_['intersection'](_0x2b32fc[_0xd689('0x27')],_0x2b32fc[_0xd689('0x29')]);_0x8f6a1[_0xd689('0x2a')]=_[_0xd689('0x2b')](_0x2b32fc['model'],qs[_0xd689('0x2c')](_0x52d1d2[_0xd689('0x29')][_0xd689('0x2c')]));_0x8f6a1[_0xd689('0x2a')]=_0x8f6a1[_0xd689('0x2a')]['length']?_0x8f6a1[_0xd689('0x2a')]:_0x2b32fc['model'];if(!_0x52d1d2[_0xd689('0x29')]['hasOwnProperty']('nolimit')){_0x8f6a1[_0xd689('0x1a')]=qs[_0xd689('0x1a')](_0x52d1d2[_0xd689('0x29')]['limit']);_0x8f6a1[_0xd689('0x18')]=qs[_0xd689('0x18')](_0x52d1d2[_0xd689('0x29')]['offset']);}_0x8f6a1[_0xd689('0x2d')]=qs['sort'](_0x52d1d2['query'][_0xd689('0x2e')]);_0x8f6a1['where']=qs[_0xd689('0x2f')](_[_0xd689('0x30')](_0x52d1d2[_0xd689('0x29')],_0x2b32fc[_0xd689('0x2f')]),_0x17faca);if(_0x52d1d2[_0xd689('0x29')]['filter']){_0x8f6a1['where']=_['merge'](_0x8f6a1['where'],{'$or':_['map'](_0x17faca,function(_0x1952ae){if(_0x1952ae['type']!==_0xd689('0x31')){var _0x3f8e2d={};_0x3f8e2d[_0x1952ae['name']]={'$like':'%'+_0x52d1d2[_0xd689('0x29')][_0xd689('0x32')]+'%'};return _0x3f8e2d;}})});}_0x8f6a1=_[_0xd689('0x33')]({},_0x8f6a1,_0x52d1d2[_0xd689('0x34')]);var _0xa04af4={'where':_0x8f6a1[_0xd689('0x35')]};return db[_0xd689('0x36')]['count'](_0xa04af4)[_0xd689('0x1d')](function(_0x31b959){_0x4eef4f[_0xd689('0x19')]=_0x31b959;if(_0x52d1d2[_0xd689('0x29')]['includeAll']){_0x8f6a1[_0xd689('0x37')]=[{'all':!![]}];}return db[_0xd689('0x36')][_0xd689('0x38')](_0x8f6a1);})[_0xd689('0x1d')](function(_0xe914b2){_0x4eef4f[_0xd689('0x39')]=_0xe914b2;return _0x4eef4f;})[_0xd689('0x1d')](respondWithFilteredResult(_0x529138,_0x8f6a1))['catch'](handleError(_0x529138,null));};exports[_0xd689('0x3a')]=function(_0x10174f,_0x57e78c){var _0xa14dbd={'raw':!![],'where':{'id':_0x10174f[_0xd689('0x3b')]['id']}},_0x2074ac={};_0x2074ac['model']=_[_0xd689('0x28')](db[_0xd689('0x36')][_0xd689('0x23')]);_0x2074ac['query']=_['keys'](_0x10174f['query']);_0x2074ac['filters']=_[_0xd689('0x2b')](_0x2074ac['model'],_0x2074ac['query']);_0xa14dbd[_0xd689('0x2a')]=_[_0xd689('0x2b')](_0x2074ac['model'],qs[_0xd689('0x2c')](_0x10174f[_0xd689('0x29')][_0xd689('0x2c')]));_0xa14dbd[_0xd689('0x2a')]=_0xa14dbd[_0xd689('0x2a')]['length']?_0xa14dbd[_0xd689('0x2a')]:_0x2074ac[_0xd689('0x27')];if(_0x10174f['query'][_0xd689('0x3c')]){_0xa14dbd[_0xd689('0x37')]=[{'all':!![]}];}_0xa14dbd=_['merge']({},_0xa14dbd,_0x10174f['options']);return db['JscriptySessionReport'][_0xd689('0x3d')](_0xa14dbd)[_0xd689('0x1d')](handleEntityNotFound(_0x57e78c,null))['then'](respondWithResult(_0x57e78c,null))['catch'](handleError(_0x57e78c,null));};exports[_0xd689('0x3e')]=function(_0x42943d,_0x103825){return db[_0xd689('0x36')][_0xd689('0x3e')](_0x42943d[_0xd689('0x3f')],{})[_0xd689('0x1d')](respondWithResult(_0x103825,0xc9))[_0xd689('0x40')](handleError(_0x103825,null));};exports[_0xd689('0x41')]=function(_0x30017b,_0x1f380b){if(_0x30017b['body']['id']){delete _0x30017b[_0xd689('0x3f')]['id'];}return db[_0xd689('0x36')][_0xd689('0x3d')]({'where':{'id':_0x30017b[_0xd689('0x3b')]['id']}})[_0xd689('0x1d')](handleEntityNotFound(_0x1f380b,null))[_0xd689('0x1d')](saveUpdates(_0x30017b[_0xd689('0x3f')],null))[_0xd689('0x1d')](respondWithResult(_0x1f380b,null))[_0xd689('0x40')](handleError(_0x1f380b,null));};exports[_0xd689('0x42')]=function(_0x218853,_0x1bfc3a){return db[_0xd689('0x36')][_0xd689('0x3d')]({'where':{'id':_0x218853[_0xd689('0x3b')]['id']}})[_0xd689('0x1d')](handleEntityNotFound(_0x1bfc3a,null))[_0xd689('0x1d')](removeEntity(_0x1bfc3a,null))[_0xd689('0x40')](handleError(_0x1bfc3a,null));};exports[_0xd689('0x43')]=function(_0x9f576e,_0xf6edb1){return db[_0xd689('0x36')][_0xd689('0x43')]()[_0xd689('0x1d')](respondWithResult(_0xf6edb1,null))['catch'](handleError(_0xf6edb1,null));};exports['getQuestions']=function(_0x241aaa,_0x48b5ea,_0x220cc2){var _0x284538={'raw':!![],'where':{}};var _0x3002bd={};var _0x9ac5a3={'count':0x0,'rows':[]};return db['JscriptySessionReport'][_0xd689('0x44')]({'where':{'id':_0x241aaa[_0xd689('0x3b')]['id']}})[_0xd689('0x1d')](handleEntityNotFound(_0x48b5ea,null))['then'](function(_0x59e5c6){if(_0x59e5c6){_0x3002bd['model']=_[_0xd689('0x28')](db['JscriptyQuestionReport'][_0xd689('0x23')]);_0x3002bd[_0xd689('0x29')]=_[_0xd689('0x28')](_0x241aaa[_0xd689('0x29')]);_0x3002bd[_0xd689('0x2f')]=_[_0xd689('0x2b')](_0x3002bd['model'],_0x3002bd['query']);_0x284538['attributes']=_[_0xd689('0x2b')](_0x3002bd[_0xd689('0x27')],qs[_0xd689('0x2c')](_0x241aaa['query'][_0xd689('0x2c')]));_0x284538[_0xd689('0x2a')]=_0x284538[_0xd689('0x2a')]['length']?_0x284538['attributes']:_0x3002bd[_0xd689('0x27')];if(!_0x241aaa['query'][_0xd689('0x45')](_0xd689('0x46'))){_0x284538[_0xd689('0x1a')]=qs[_0xd689('0x1a')](_0x241aaa['query'][_0xd689('0x1a')]);_0x284538[_0xd689('0x18')]=qs[_0xd689('0x18')](_0x241aaa[_0xd689('0x29')]['offset']);}_0x284538[_0xd689('0x2d')]=qs['sort'](_0x241aaa[_0xd689('0x29')]['sort']);_0x284538[_0xd689('0x35')]=qs[_0xd689('0x2f')](_[_0xd689('0x30')](_0x241aaa[_0xd689('0x29')],_0x3002bd[_0xd689('0x2f')]));_0x284538[_0xd689('0x35')][_0xd689('0x47')]=_0x59e5c6['id'];if(_0x241aaa[_0xd689('0x29')][_0xd689('0x32')]){_0x284538[_0xd689('0x35')]=_['merge'](_0x284538[_0xd689('0x35')],{'$or':_['map'](_0x284538['attributes'],function(_0x4bf226){var _0x4268ae={};_0x4268ae[_0x4bf226]={'$like':'%'+_0x241aaa[_0xd689('0x29')][_0xd689('0x32')]+'%'};return _0x4268ae;})});}_0x284538=_[_0xd689('0x33')]({},_0x284538,_0x241aaa['options']);return db[_0xd689('0x48')]['count']({'where':_0x284538[_0xd689('0x35')]})[_0xd689('0x1d')](function(_0x572af7){_0x9ac5a3[_0xd689('0x19')]=_0x572af7;if(_0x241aaa['query']['includeAll']){_0x284538[_0xd689('0x37')]=[{'all':!![]}];}return db[_0xd689('0x48')][_0xd689('0x38')](_0x284538);})[_0xd689('0x1d')](function(_0x2a47a5){_0x9ac5a3[_0xd689('0x39')]=_0x2a47a5;return _0x9ac5a3;});}})[_0xd689('0x1d')](respondWithFilteredResult(_0x48b5ea,_0x284538))[_0xd689('0x40')](handleError(_0x48b5ea,null));};
\ No newline at end of file
+var _0x408a=['stack','name','index','map','JscriptySessionReport','rawAttributes','fieldName','type','key','query','filters','attributes','intersection','model','fields','length','hasOwnProperty','sort','where','pick','filter','merge','VIRTUAL','includeAll','catch','show','params','keys','include','options','find','create','body','update','describe','findOne','JscriptyQuestionReport','nolimit','order','SessionId','findAll','rows','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','destroy','then'];(function(_0x242a98,_0x13988e){var _0x580999=function(_0x341927){while(--_0x341927){_0x242a98['push'](_0x242a98['shift']());}};_0x580999(++_0x13988e);}(_0x408a,0x1d3));var _0xa408=function(_0x465028,_0x4570ac){_0x465028=_0x465028-0x0;var _0xb783d4=_0x408a[_0x465028];return _0xb783d4;};'use strict';var emlformat=require(_0xa408('0x0'));var rimraf=require(_0xa408('0x1'));var zipdir=require(_0xa408('0x2'));var jsonpatch=require(_0xa408('0x3'));var rp=require('request-promise');var moment=require(_0xa408('0x4'));var BPromise=require(_0xa408('0x5'));var Mustache=require(_0xa408('0x6'));var util=require('util');var path=require(_0xa408('0x7'));var sox=require(_0xa408('0x8'));var csv=require(_0xa408('0x9'));var ejs=require(_0xa408('0xa'));var fs=require('fs');var fs_extra=require(_0xa408('0xb'));var _=require('lodash');var squel=require(_0xa408('0xc'));var crypto=require(_0xa408('0xd'));var jsforce=require(_0xa408('0xe'));var deskjs=require(_0xa408('0xf'));var toCsv=require(_0xa408('0x9'));var querystring=require(_0xa408('0x10'));var Papa=require(_0xa408('0x11'));var Redis=require(_0xa408('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xa408('0x13'));var as=require(_0xa408('0x14'));var hardwareService=require(_0xa408('0x15'));var logger=require(_0xa408('0x16'))(_0xa408('0x17'));var utils=require(_0xa408('0x18'));var config=require(_0xa408('0x19'));var licenseUtil=require(_0xa408('0x1a'));var db=require(_0xa408('0x1b'))['db'];function respondWithStatusCode(_0x5a8cee,_0x4c64e1){_0x4c64e1=_0x4c64e1||0xcc;return function(_0x53c966){if(_0x53c966){return _0x5a8cee[_0xa408('0x1c')](_0x4c64e1);}return _0x5a8cee[_0xa408('0x1d')](_0x4c64e1)[_0xa408('0x1e')]();};}function respondWithResult(_0x489541,_0x17e003){_0x17e003=_0x17e003||0xc8;return function(_0x2d0c03){if(_0x2d0c03){return _0x489541[_0xa408('0x1d')](_0x17e003)[_0xa408('0x1f')](_0x2d0c03);}};}function respondWithFilteredResult(_0x3d6c7c,_0x4f9b6c){return function(_0x1b788c){if(_0x1b788c){var _0x486cef=typeof _0x4f9b6c[_0xa408('0x20')]===_0xa408('0x21')&&typeof _0x4f9b6c['limit']===_0xa408('0x21');var _0x3c4162=_0x1b788c[_0xa408('0x22')];var _0x1ff146=_0x486cef?0x0:_0x4f9b6c[_0xa408('0x20')];var _0x496c74=_0x486cef?_0x1b788c[_0xa408('0x22')]:_0x4f9b6c[_0xa408('0x20')]+_0x4f9b6c[_0xa408('0x23')];var _0xa5b944;if(_0x496c74>=_0x3c4162){_0x496c74=_0x3c4162;_0xa5b944=0xc8;}else{_0xa5b944=0xce;}_0x3d6c7c[_0xa408('0x1d')](_0xa5b944);return _0x3d6c7c[_0xa408('0x24')](_0xa408('0x25'),_0x1ff146+'-'+_0x496c74+'/'+_0x3c4162)[_0xa408('0x1f')](_0x1b788c);}return null;};}function patchUpdates(_0x2be229){return function(_0x44b46a){try{jsonpatch[_0xa408('0x26')](_0x44b46a,_0x2be229,!![]);}catch(_0x3cf28e){return BPromise[_0xa408('0x27')](_0x3cf28e);}return _0x44b46a[_0xa408('0x28')]();};}function saveUpdates(_0x319702,_0x5640f1){return function(_0x3f5ef3){if(_0x3f5ef3){return _0x3f5ef3['update'](_0x319702)['then'](function(_0x5e752a){return _0x5e752a;});}return null;};}function removeEntity(_0x44ff12,_0x41b444){return function(_0x139c6a){if(_0x139c6a){return _0x139c6a[_0xa408('0x29')]()[_0xa408('0x2a')](function(){_0x44ff12[_0xa408('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x48db99,_0x4459ff){return function(_0x2f3ab6){if(!_0x2f3ab6){_0x48db99['sendStatus'](0x194);}return _0x2f3ab6;};}function handleError(_0x2868b5,_0x3bb96c){_0x3bb96c=_0x3bb96c||0x1f4;return function(_0x4f43d0){logger['error'](_0x4f43d0[_0xa408('0x2b')]);if(_0x4f43d0[_0xa408('0x2c')]){delete _0x4f43d0[_0xa408('0x2c')];}_0x2868b5[_0xa408('0x1d')](_0x3bb96c)['send'](_0x4f43d0);};}exports[_0xa408('0x2d')]=function(_0x44c145,_0x2a2841){var _0xbbeb9e={},_0x2246da={},_0x240859={'count':0x0,'rows':[]};var _0x52ae54=_[_0xa408('0x2e')](db[_0xa408('0x2f')][_0xa408('0x30')],function(_0xb72529){return{'name':_0xb72529[_0xa408('0x31')],'type':_0xb72529[_0xa408('0x32')][_0xa408('0x33')]};});_0x2246da['model']=_[_0xa408('0x2e')](_0x52ae54,_0xa408('0x2c'));_0x2246da[_0xa408('0x34')]=_['keys'](_0x44c145['query']);_0x2246da[_0xa408('0x35')]=_['intersection'](_0x2246da['model'],_0x2246da[_0xa408('0x34')]);_0xbbeb9e[_0xa408('0x36')]=_[_0xa408('0x37')](_0x2246da[_0xa408('0x38')],qs[_0xa408('0x39')](_0x44c145[_0xa408('0x34')][_0xa408('0x39')]));_0xbbeb9e[_0xa408('0x36')]=_0xbbeb9e[_0xa408('0x36')][_0xa408('0x3a')]?_0xbbeb9e[_0xa408('0x36')]:_0x2246da[_0xa408('0x38')];if(!_0x44c145[_0xa408('0x34')][_0xa408('0x3b')]('nolimit')){_0xbbeb9e[_0xa408('0x23')]=qs['limit'](_0x44c145['query']['limit']);_0xbbeb9e[_0xa408('0x20')]=qs[_0xa408('0x20')](_0x44c145[_0xa408('0x34')]['offset']);}_0xbbeb9e['order']=qs['sort'](_0x44c145['query'][_0xa408('0x3c')]);_0xbbeb9e[_0xa408('0x3d')]=qs[_0xa408('0x35')](_[_0xa408('0x3e')](_0x44c145[_0xa408('0x34')],_0x2246da['filters']),_0x52ae54);if(_0x44c145[_0xa408('0x34')][_0xa408('0x3f')]){_0xbbeb9e['where']=_[_0xa408('0x40')](_0xbbeb9e[_0xa408('0x3d')],{'$or':_[_0xa408('0x2e')](_0x52ae54,function(_0x18c7f2){if(_0x18c7f2[_0xa408('0x32')]!==_0xa408('0x41')){var _0x4c47b7={};_0x4c47b7[_0x18c7f2[_0xa408('0x2c')]]={'$like':'%'+_0x44c145['query'][_0xa408('0x3f')]+'%'};return _0x4c47b7;}})});}_0xbbeb9e=_[_0xa408('0x40')]({},_0xbbeb9e,_0x44c145['options']);var _0x4a743b={'where':_0xbbeb9e[_0xa408('0x3d')]};return db[_0xa408('0x2f')][_0xa408('0x22')](_0x4a743b)[_0xa408('0x2a')](function(_0x385ef9){_0x240859[_0xa408('0x22')]=_0x385ef9;if(_0x44c145[_0xa408('0x34')][_0xa408('0x42')]){_0xbbeb9e['include']=[{'all':!![]}];}return db[_0xa408('0x2f')]['findAll'](_0xbbeb9e);})[_0xa408('0x2a')](function(_0x21d533){_0x240859['rows']=_0x21d533;return _0x240859;})[_0xa408('0x2a')](respondWithFilteredResult(_0x2a2841,_0xbbeb9e))[_0xa408('0x43')](handleError(_0x2a2841,null));};exports[_0xa408('0x44')]=function(_0x59e819,_0x14bf73){var _0x364051={'raw':!![],'where':{'id':_0x59e819[_0xa408('0x45')]['id']}},_0x3f1171={};_0x3f1171[_0xa408('0x38')]=_[_0xa408('0x46')](db[_0xa408('0x2f')][_0xa408('0x30')]);_0x3f1171['query']=_['keys'](_0x59e819[_0xa408('0x34')]);_0x3f1171[_0xa408('0x35')]=_[_0xa408('0x37')](_0x3f1171[_0xa408('0x38')],_0x3f1171[_0xa408('0x34')]);_0x364051[_0xa408('0x36')]=_[_0xa408('0x37')](_0x3f1171[_0xa408('0x38')],qs['fields'](_0x59e819[_0xa408('0x34')][_0xa408('0x39')]));_0x364051[_0xa408('0x36')]=_0x364051[_0xa408('0x36')][_0xa408('0x3a')]?_0x364051[_0xa408('0x36')]:_0x3f1171[_0xa408('0x38')];if(_0x59e819[_0xa408('0x34')][_0xa408('0x42')]){_0x364051[_0xa408('0x47')]=[{'all':!![]}];}_0x364051=_['merge']({},_0x364051,_0x59e819[_0xa408('0x48')]);return db[_0xa408('0x2f')][_0xa408('0x49')](_0x364051)[_0xa408('0x2a')](handleEntityNotFound(_0x14bf73,null))[_0xa408('0x2a')](respondWithResult(_0x14bf73,null))['catch'](handleError(_0x14bf73,null));};exports['create']=function(_0x47fe3c,_0x383d06){return db[_0xa408('0x2f')][_0xa408('0x4a')](_0x47fe3c[_0xa408('0x4b')],{})[_0xa408('0x2a')](respondWithResult(_0x383d06,0xc9))['catch'](handleError(_0x383d06,null));};exports[_0xa408('0x4c')]=function(_0x3106d3,_0x2522b6){if(_0x3106d3[_0xa408('0x4b')]['id']){delete _0x3106d3[_0xa408('0x4b')]['id'];}return db[_0xa408('0x2f')]['find']({'where':{'id':_0x3106d3[_0xa408('0x45')]['id']}})[_0xa408('0x2a')](handleEntityNotFound(_0x2522b6,null))['then'](saveUpdates(_0x3106d3[_0xa408('0x4b')],null))[_0xa408('0x2a')](respondWithResult(_0x2522b6,null))['catch'](handleError(_0x2522b6,null));};exports[_0xa408('0x29')]=function(_0xc2fa13,_0x415d5b){return db[_0xa408('0x2f')][_0xa408('0x49')]({'where':{'id':_0xc2fa13[_0xa408('0x45')]['id']}})['then'](handleEntityNotFound(_0x415d5b,null))[_0xa408('0x2a')](removeEntity(_0x415d5b,null))['catch'](handleError(_0x415d5b,null));};exports[_0xa408('0x4d')]=function(_0x5a2a83,_0x1ed753){return db[_0xa408('0x2f')][_0xa408('0x4d')]()[_0xa408('0x2a')](respondWithResult(_0x1ed753,null))[_0xa408('0x43')](handleError(_0x1ed753,null));};exports['getQuestions']=function(_0x2d2fe1,_0x2a26bc,_0x77ee94){var _0x5d3977={'raw':!![],'where':{}};var _0x1c9cfe={};var _0x1252b={'count':0x0,'rows':[]};return db[_0xa408('0x2f')][_0xa408('0x4e')]({'where':{'id':_0x2d2fe1[_0xa408('0x45')]['id']}})[_0xa408('0x2a')](handleEntityNotFound(_0x2a26bc,null))[_0xa408('0x2a')](function(_0x4459c6){if(_0x4459c6){_0x1c9cfe['model']=_[_0xa408('0x46')](db[_0xa408('0x4f')][_0xa408('0x30')]);_0x1c9cfe[_0xa408('0x34')]=_['keys'](_0x2d2fe1[_0xa408('0x34')]);_0x1c9cfe[_0xa408('0x35')]=_[_0xa408('0x37')](_0x1c9cfe['model'],_0x1c9cfe[_0xa408('0x34')]);_0x5d3977[_0xa408('0x36')]=_[_0xa408('0x37')](_0x1c9cfe[_0xa408('0x38')],qs[_0xa408('0x39')](_0x2d2fe1['query'][_0xa408('0x39')]));_0x5d3977['attributes']=_0x5d3977[_0xa408('0x36')][_0xa408('0x3a')]?_0x5d3977[_0xa408('0x36')]:_0x1c9cfe[_0xa408('0x38')];if(!_0x2d2fe1[_0xa408('0x34')][_0xa408('0x3b')](_0xa408('0x50'))){_0x5d3977['limit']=qs[_0xa408('0x23')](_0x2d2fe1[_0xa408('0x34')][_0xa408('0x23')]);_0x5d3977[_0xa408('0x20')]=qs['offset'](_0x2d2fe1[_0xa408('0x34')]['offset']);}_0x5d3977[_0xa408('0x51')]=qs[_0xa408('0x3c')](_0x2d2fe1[_0xa408('0x34')][_0xa408('0x3c')]);_0x5d3977['where']=qs[_0xa408('0x35')](_['pick'](_0x2d2fe1[_0xa408('0x34')],_0x1c9cfe[_0xa408('0x35')]));_0x5d3977[_0xa408('0x3d')][_0xa408('0x52')]=_0x4459c6['id'];if(_0x2d2fe1[_0xa408('0x34')][_0xa408('0x3f')]){_0x5d3977[_0xa408('0x3d')]=_['merge'](_0x5d3977[_0xa408('0x3d')],{'$or':_[_0xa408('0x2e')](_0x5d3977[_0xa408('0x36')],function(_0x47fa73){var _0x1dbe89={};_0x1dbe89[_0x47fa73]={'$like':'%'+_0x2d2fe1[_0xa408('0x34')][_0xa408('0x3f')]+'%'};return _0x1dbe89;})});}_0x5d3977=_[_0xa408('0x40')]({},_0x5d3977,_0x2d2fe1[_0xa408('0x48')]);return db[_0xa408('0x4f')][_0xa408('0x22')]({'where':_0x5d3977['where']})[_0xa408('0x2a')](function(_0x428d21){_0x1252b[_0xa408('0x22')]=_0x428d21;if(_0x2d2fe1['query']['includeAll']){_0x5d3977['include']=[{'all':!![]}];}return db['JscriptyQuestionReport'][_0xa408('0x53')](_0x5d3977);})[_0xa408('0x2a')](function(_0x35f891){_0x1252b[_0xa408('0x54')]=_0x35f891;return _0x1252b;});}})[_0xa408('0x2a')](respondWithFilteredResult(_0x2a26bc,_0x5d3977))['catch'](handleError(_0x2a26bc,null));};
\ No newline at end of file
index 81b5fc0..ea9bc96 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeff8=['rimraf','../../config/environment','./jscriptySessionReport.attributes','define','JscriptySessionReport','lodash','util','api','moment','bluebird','path'];(function(_0xa0e3e3,_0x1ebf50){var _0x517992=function(_0x57adf9){while(--_0x57adf9){_0xa0e3e3['push'](_0xa0e3e3['shift']());}};_0x517992(++_0x1ebf50);}(_0xeff8,0x186));var _0x8eff=function(_0x1beef3,_0x57c4b8){_0x1beef3=_0x1beef3-0x0;var _0x5af964=_0xeff8[_0x1beef3];return _0x5af964;};'use strict';var _=require(_0x8eff('0x0'));var util=require(_0x8eff('0x1'));var logger=require('../../config/logger')(_0x8eff('0x2'));var moment=require(_0x8eff('0x3'));var BPromise=require(_0x8eff('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x8eff('0x5'));var rimraf=require(_0x8eff('0x6'));var config=require(_0x8eff('0x7'));var attributes=require(_0x8eff('0x8'));module['exports']=function(_0x469641,_0xb54063){return _0x469641[_0x8eff('0x9')](_0x8eff('0xa'),attributes,{'tableName':'report_jscripty_sessions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2d72=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./jscriptySessionReport.attributes','exports','JscriptySessionReport','report_jscripty_sessions'];(function(_0x3943f0,_0x46d4a6){var _0x4bb2f6=function(_0xcd7ef7){while(--_0xcd7ef7){_0x3943f0['push'](_0x3943f0['shift']());}};_0x4bb2f6(++_0x46d4a6);}(_0x2d72,0xa8));var _0x22d7=function(_0x4d37b8,_0x3d7d82){_0x4d37b8=_0x4d37b8-0x0;var _0x44a71f=_0x2d72[_0x4d37b8];return _0x44a71f;};'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'));module[_0x22d7('0xb')]=function(_0x208b5b,_0x100426){return _0x208b5b['define'](_0x22d7('0xc'),attributes,{'tableName':_0x22d7('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 56eaafc..dc4998a 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(_0x3fa6bd,_0x54de34){var _0x1bd448=function(_0x3df4f9){while(--_0x3df4f9){_0x3fa6bd['push'](_0x3fa6bd['shift']());}};_0x1bd448(++_0x54de34);}(_0xc1c6,0xf7));var _0x6c1c=function(_0xed8a98,_0xe1231c){_0xed8a98=_0xed8a98-0x0;var _0x2eafe1=_0xc1c6[_0xed8a98];return _0x2eafe1;};'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 _0x0adf=['request\x20sent','debug','JscriptySessionReport,\x20%s,\x20%s,\x20%s','stringify','code','error','JscriptySessionReport,\x20%s,\x20%s','message','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','request','then','info'];(function(_0x5a9130,_0x1a32f3){var _0x53580d=function(_0x357363){while(--_0x357363){_0x5a9130['push'](_0x5a9130['shift']());}};_0x53580d(++_0x1a32f3);}(_0x0adf,0x1d2));var _0xf0ad=function(_0x6aef8,_0x4bda74){_0x6aef8=_0x6aef8-0x0;var _0x4f1c04=_0x0adf[_0x6aef8];return _0x4f1c04;};'use strict';var _=require(_0xf0ad('0x0'));var util=require(_0xf0ad('0x1'));var moment=require(_0xf0ad('0x2'));var BPromise=require('bluebird');var rs=require(_0xf0ad('0x3'));var fs=require('fs');var Redis=require(_0xf0ad('0x4'));var db=require(_0xf0ad('0x5'))['db'];var utils=require(_0xf0ad('0x6'));var logger=require(_0xf0ad('0x7'))(_0xf0ad('0x8'));var config=require(_0xf0ad('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xf0ad('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2eca0e,_0x44cf37,_0x170574){return new BPromise(function(_0x41c99d,_0xa9a315){return client[_0xf0ad('0xb')](_0x2eca0e,_0x170574)[_0xf0ad('0xc')](function(_0x5bdf69){logger[_0xf0ad('0xd')]('JscriptySessionReport,\x20%s,\x20%s',_0x44cf37,_0xf0ad('0xe'));logger[_0xf0ad('0xf')](_0xf0ad('0x10'),_0x44cf37,_0xf0ad('0xe'),JSON[_0xf0ad('0x11')](_0x5bdf69));if(_0x5bdf69['error']){if(_0x5bdf69['error'][_0xf0ad('0x12')]===0x1f4){logger[_0xf0ad('0x13')](_0xf0ad('0x14'),_0x44cf37,_0x5bdf69[_0xf0ad('0x13')]['message']);return _0xa9a315(_0x5bdf69[_0xf0ad('0x13')][_0xf0ad('0x15')]);}logger['error']('JscriptySessionReport,\x20%s,\x20%s',_0x44cf37,_0x5bdf69['error'][_0xf0ad('0x15')]);return _0x41c99d(_0x5bdf69['error'][_0xf0ad('0x15')]);}else{logger[_0xf0ad('0xd')](_0xf0ad('0x14'),_0x44cf37,_0xf0ad('0xe'));_0x41c99d(_0x5bdf69[_0xf0ad('0x16')]['message']);}})[_0xf0ad('0x17')](function(_0x285ab0){logger[_0xf0ad('0x13')](_0xf0ad('0x14'),_0x44cf37,_0x285ab0);_0xa9a315(_0x285ab0);});});}
\ No newline at end of file
index 7ae9ce1..db705ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e30=['../../config/environment','get','index','put','isAuthenticated','update','/download_log_file','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x5e30,0x1ca));var _0x05e3=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x5e30[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x05e3('0x0'));var util=require(_0x05e3('0x1'));var path=require(_0x05e3('0x2'));var timeout=require(_0x05e3('0x3'));var express=require(_0x05e3('0x4'));var router=express['Router']();var fs_extra=require(_0x05e3('0x5'));var auth=require(_0x05e3('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x05e3('0x7'));var controller=require('./license.controller');router[_0x05e3('0x8')]('/',controller[_0x05e3('0x9')]);router[_0x05e3('0xa')]('/:id',auth[_0x05e3('0xb')](),controller[_0x05e3('0xc')]);router['get'](_0x05e3('0xd'),auth[_0x05e3('0xb')](),controller['downloadLogFile']);module[_0x05e3('0xe')]=router;
\ No newline at end of file
+var _0x9cea=['fs-extra','../../components/interaction/service','./license.controller','put','/:id','isAuthenticated','update','downloadLogFile','exports','multer','util','path','express','Router'];(function(_0x3450b2,_0xbe7157){var _0x13382c=function(_0x48e511){while(--_0x48e511){_0x3450b2['push'](_0x3450b2['shift']());}};_0x13382c(++_0xbe7157);}(_0x9cea,0xe9));var _0xa9ce=function(_0x24f31b,_0x44b8f3){_0x24f31b=_0x24f31b-0x0;var _0x488401=_0x9cea[_0x24f31b];return _0x488401;};'use strict';var multer=require(_0xa9ce('0x0'));var util=require(_0xa9ce('0x1'));var path=require(_0xa9ce('0x2'));var timeout=require('connect-timeout');var express=require(_0xa9ce('0x3'));var router=express[_0xa9ce('0x4')]();var fs_extra=require(_0xa9ce('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xa9ce('0x6'));var config=require('../../config/environment');var controller=require(_0xa9ce('0x7'));router['get']('/',controller['index']);router[_0xa9ce('0x8')](_0xa9ce('0x9'),auth[_0xa9ce('0xa')](),controller[_0xa9ce('0xb')]);router['get']('/download_log_file',auth[_0xa9ce('0xa')](),controller[_0xa9ce('0xc')]);module[_0xa9ce('0xd')]=router;
\ No newline at end of file
index b13d459..fadcb48 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9748=['STRING','sequelize','exports','TEXT'];(function(_0x31587e,_0x1eec2b){var _0x5b64f9=function(_0x5d514c){while(--_0x5d514c){_0x31587e['push'](_0x31587e['shift']());}};_0x5b64f9(++_0x1eec2b);}(_0x9748,0x1e9));var _0x8974=function(_0xa29d93,_0xfdb711){_0xa29d93=_0xa29d93-0x0;var _0x379ec3=_0x9748[_0xa29d93];return _0x379ec3;};'use strict';var Sequelize=require(_0x8974('0x0'));module[_0x8974('0x1')]={'license':{'type':Sequelize[_0x8974('0x2')]},'data1':{'type':Sequelize[_0x8974('0x3')]},'data2':{'type':Sequelize[_0x8974('0x3')]},'chatLicenseExceeded':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x4c62=['TEXT','STRING','INTEGER','sequelize'];(function(_0x36568b,_0x225f28){var _0x555d0d=function(_0x45d9aa){while(--_0x45d9aa){_0x36568b['push'](_0x36568b['shift']());}};_0x555d0d(++_0x225f28);}(_0x4c62,0xc3));var _0x24c6=function(_0x5ca159,_0x56fd25){_0x5ca159=_0x5ca159-0x0;var _0x278230=_0x4c62[_0x5ca159];return _0x278230;};'use strict';var Sequelize=require(_0x24c6('0x0'));module['exports']={'license':{'type':Sequelize[_0x24c6('0x1')]},'data1':{'type':Sequelize[_0x24c6('0x2')]},'data2':{'type':Sequelize[_0x24c6('0x2')]},'chatLicenseExceeded':{'type':Sequelize[_0x24c6('0x3')],'defaultValue':0x0}};
\ No newline at end of file
index 14472cc..84a190f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd160=['setHeader','attachment;\x20filename=','Content-Type','text/plain','download','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/environment','../../mysqldb','status','end','offset','undefined','limit','set','json','apply','reject','then','sendStatus','error','stack','name','send','../../config/license/util','index','model','rawAttributes','query','keys','intersection','attributes','fields','length','options','getLicense','update','body','find','params','key','demo','catch','join','/var','xcally'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xd160,0xc8));var _0x0d16=function(_0x23b655,_0x4feb2b){_0x23b655=_0x23b655-0x0;var _0x364b32=_0xd160[_0x23b655];return _0x364b32;};'use strict';var emlformat=require(_0x0d16('0x0'));var rimraf=require(_0x0d16('0x1'));var zipdir=require(_0x0d16('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x0d16('0x3'));var moment=require('moment');var BPromise=require(_0x0d16('0x4'));var Mustache=require(_0x0d16('0x5'));var util=require(_0x0d16('0x6'));var path=require('path');var sox=require(_0x0d16('0x7'));var csv=require(_0x0d16('0x8'));var ejs=require(_0x0d16('0x9'));var fs=require('fs');var fs_extra=require(_0x0d16('0xa'));var _=require(_0x0d16('0xb'));var squel=require(_0x0d16('0xc'));var crypto=require(_0x0d16('0xd'));var jsforce=require(_0x0d16('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x0d16('0x8'));var querystring=require(_0x0d16('0xf'));var Papa=require(_0x0d16('0x10'));var Redis=require('ioredis');var authService=require(_0x0d16('0x11'));var qs=require(_0x0d16('0x12'));var as=require(_0x0d16('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x0d16('0x14'));var utils=require('../../config/utils');var config=require(_0x0d16('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x0d16('0x16'))['db'];function respondWithStatusCode(_0x1f1273,_0x14b3f9){_0x14b3f9=_0x14b3f9||0xcc;return function(_0x3a1eef){if(_0x3a1eef){return _0x1f1273['sendStatus'](_0x14b3f9);}return _0x1f1273[_0x0d16('0x17')](_0x14b3f9)[_0x0d16('0x18')]();};}function respondWithResult(_0x556a0f,_0xf5d51a){_0xf5d51a=_0xf5d51a||0xc8;return function(_0x29317f){if(_0x29317f){return _0x556a0f['status'](_0xf5d51a)['json'](_0x29317f);}};}function respondWithFilteredResult(_0x507c12,_0x1908d9){return function(_0x4bebcd){if(_0x4bebcd){var _0x63d98d=typeof _0x1908d9[_0x0d16('0x19')]===_0x0d16('0x1a')&&typeof _0x1908d9[_0x0d16('0x1b')]===_0x0d16('0x1a');var _0x56abe9=_0x4bebcd['count'];var _0x33ab05=_0x63d98d?0x0:_0x1908d9[_0x0d16('0x19')];var _0x48dd8b=_0x63d98d?_0x4bebcd['count']:_0x1908d9[_0x0d16('0x19')]+_0x1908d9[_0x0d16('0x1b')];var _0x3b7b10;if(_0x48dd8b>=_0x56abe9){_0x48dd8b=_0x56abe9;_0x3b7b10=0xc8;}else{_0x3b7b10=0xce;}_0x507c12[_0x0d16('0x17')](_0x3b7b10);return _0x507c12[_0x0d16('0x1c')]('Content-Range',_0x33ab05+'-'+_0x48dd8b+'/'+_0x56abe9)[_0x0d16('0x1d')](_0x4bebcd);}return null;};}function patchUpdates(_0x145d9d){return function(_0x1bcce0){try{jsonpatch[_0x0d16('0x1e')](_0x1bcce0,_0x145d9d,!![]);}catch(_0x517a1a){return BPromise[_0x0d16('0x1f')](_0x517a1a);}return _0x1bcce0['save']();};}function saveUpdates(_0x586585,_0x5a7088){return function(_0x115d63){if(_0x115d63){return _0x115d63['update'](_0x586585)[_0x0d16('0x20')](function(_0x5e1710){return _0x5e1710;});}return null;};}function removeEntity(_0x241e75,_0x266092){return function(_0x4da20f){if(_0x4da20f){return _0x4da20f['destroy']()[_0x0d16('0x20')](function(){_0x241e75['status'](0xcc)[_0x0d16('0x18')]();});}};}function handleEntityNotFound(_0x1651a4,_0xc1bc49){return function(_0x189bd1){if(!_0x189bd1){_0x1651a4[_0x0d16('0x21')](0x194);}return _0x189bd1;};}function handleError(_0x1ced90,_0x3ce194){_0x3ce194=_0x3ce194||0x1f4;return function(_0x140f53){logger[_0x0d16('0x22')](_0x140f53[_0x0d16('0x23')]);if(_0x140f53['name']){delete _0x140f53[_0x0d16('0x24')];}_0x1ced90[_0x0d16('0x17')](_0x3ce194)[_0x0d16('0x25')](_0x140f53);};}var utilLicense=require(_0x0d16('0x26'));exports[_0x0d16('0x27')]=function(_0x2657b8,_0x52ecaa){var _0x48fdd4={'raw':!![],'where':{'id':0x1}},_0x592a8b={};_0x592a8b[_0x0d16('0x28')]=_['keys'](db['License'][_0x0d16('0x29')]);_0x592a8b[_0x0d16('0x2a')]=_[_0x0d16('0x2b')](_0x2657b8['query']);_0x592a8b['filters']=_[_0x0d16('0x2c')](_0x592a8b[_0x0d16('0x28')],_0x592a8b['query']);_0x48fdd4[_0x0d16('0x2d')]=_['intersection'](_0x592a8b['model'],qs[_0x0d16('0x2e')](_0x2657b8[_0x0d16('0x2a')][_0x0d16('0x2e')]));_0x48fdd4[_0x0d16('0x2d')]=_0x48fdd4[_0x0d16('0x2d')][_0x0d16('0x2f')]?_0x48fdd4[_0x0d16('0x2d')]:_0x592a8b[_0x0d16('0x28')];_0x48fdd4=_['merge']({},_0x48fdd4,_0x2657b8[_0x0d16('0x30')]);return utilLicense[_0x0d16('0x31')](_0x48fdd4)[_0x0d16('0x20')](respondWithResult(_0x52ecaa,null))['catch'](handleError(_0x52ecaa,null));};exports[_0x0d16('0x32')]=function(_0x5e64c5,_0x34531d){if(_0x5e64c5[_0x0d16('0x33')]['id']){delete _0x5e64c5[_0x0d16('0x33')]['id'];}return db['License'][_0x0d16('0x34')]({'where':{'id':_0x5e64c5[_0x0d16('0x35')]['id']}})[_0x0d16('0x20')](handleEntityNotFound(_0x34531d,null))[_0x0d16('0x20')](function(_0x4ce47a){var _0x61ee31=_0x4ce47a['get']({'plain':!![]});return utilLicense['checkLicense'](_0x61ee31,_0x5e64c5[_0x0d16('0x33')][_0x0d16('0x36')]);})[_0x0d16('0x20')](function(_0x30c0a1){if(!_0x30c0a1[_0x0d16('0x37')]){return saveUpdates(_0x5e64c5[_0x0d16('0x33')],null);}return _0x30c0a1;})['then'](respondWithResult(_0x34531d,null))[_0x0d16('0x38')](handleError(_0x34531d,null));};exports['downloadLogFile']=function(_0x292e19,_0x2497e1){var _0x366071='license-info.log';var _0x37c06c=path[_0x0d16('0x39')](_0x0d16('0x3a'),'log',_0x0d16('0x3b'),_0x366071);_0x2497e1[_0x0d16('0x3c')]('Content-disposition',_0x0d16('0x3d')+_0x366071);_0x2497e1['set'](_0x0d16('0x3e'),_0x0d16('0x3f'));_0x2497e1[_0x0d16('0x40')](_0x37c06c);};
\ No newline at end of file
+var _0xbd3a=['body','catch','downloadLogFile','license-info.log','join','/var','log','setHeader','Content-disposition','text/plain','eml-format','zip-dir','request-promise','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','limit','count','set','Content-Range','reject','save','update','then','destroy','error','name','index','model','keys','License','rawAttributes','query','filters','intersection','attributes','fields','length','merge','options','getLicense','find','params','get','key'];(function(_0x12fc8d,_0x19ee33){var _0x3f9d04=function(_0x52e51c){while(--_0x52e51c){_0x12fc8d['push'](_0x12fc8d['shift']());}};_0x3f9d04(++_0x19ee33);}(_0xbd3a,0x184));var _0xabd3=function(_0xce55ba,_0x3701a3){_0xce55ba=_0xce55ba-0x0;var _0x336a12=_0xbd3a[_0xce55ba];return _0x336a12;};'use strict';var emlformat=require(_0xabd3('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xabd3('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xabd3('0x2'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xabd3('0x3'));var util=require(_0xabd3('0x4'));var path=require(_0xabd3('0x5'));var sox=require(_0xabd3('0x6'));var csv=require(_0xabd3('0x7'));var ejs=require(_0xabd3('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xabd3('0x9'));var squel=require(_0xabd3('0xa'));var crypto=require(_0xabd3('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xabd3('0x7'));var querystring=require(_0xabd3('0xc'));var Papa=require('papaparse');var Redis=require(_0xabd3('0xd'));var authService=require('../../components/auth/service');var qs=require(_0xabd3('0xe'));var as=require(_0xabd3('0xf'));var hardwareService=require(_0xabd3('0x10'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0xabd3('0x11'));var licenseUtil=require(_0xabd3('0x12'));var db=require(_0xabd3('0x13'))['db'];function respondWithStatusCode(_0x3525b3,_0x4fe1ad){_0x4fe1ad=_0x4fe1ad||0xcc;return function(_0x28dd7c){if(_0x28dd7c){return _0x3525b3[_0xabd3('0x14')](_0x4fe1ad);}return _0x3525b3[_0xabd3('0x15')](_0x4fe1ad)[_0xabd3('0x16')]();};}function respondWithResult(_0x3e5a24,_0x10b151){_0x10b151=_0x10b151||0xc8;return function(_0x2ba897){if(_0x2ba897){return _0x3e5a24['status'](_0x10b151)['json'](_0x2ba897);}};}function respondWithFilteredResult(_0x1fc756,_0xbc5986){return function(_0x5c4d8c){if(_0x5c4d8c){var _0x9902b9=typeof _0xbc5986[_0xabd3('0x17')]==='undefined'&&typeof _0xbc5986[_0xabd3('0x18')]==='undefined';var _0x4bdcea=_0x5c4d8c[_0xabd3('0x19')];var _0x509a54=_0x9902b9?0x0:_0xbc5986['offset'];var _0x581e5f=_0x9902b9?_0x5c4d8c[_0xabd3('0x19')]:_0xbc5986[_0xabd3('0x17')]+_0xbc5986[_0xabd3('0x18')];var _0xdb6ca1;if(_0x581e5f>=_0x4bdcea){_0x581e5f=_0x4bdcea;_0xdb6ca1=0xc8;}else{_0xdb6ca1=0xce;}_0x1fc756[_0xabd3('0x15')](_0xdb6ca1);return _0x1fc756[_0xabd3('0x1a')](_0xabd3('0x1b'),_0x509a54+'-'+_0x581e5f+'/'+_0x4bdcea)['json'](_0x5c4d8c);}return null;};}function patchUpdates(_0x2f6980){return function(_0x11b3db){try{jsonpatch['apply'](_0x11b3db,_0x2f6980,!![]);}catch(_0x2c32ec){return BPromise[_0xabd3('0x1c')](_0x2c32ec);}return _0x11b3db[_0xabd3('0x1d')]();};}function saveUpdates(_0x447817,_0x20f7c0){return function(_0x37024c){if(_0x37024c){return _0x37024c[_0xabd3('0x1e')](_0x447817)[_0xabd3('0x1f')](function(_0xbc099c){return _0xbc099c;});}return null;};}function removeEntity(_0x13a9b6,_0x17eee0){return function(_0x5926c3){if(_0x5926c3){return _0x5926c3[_0xabd3('0x20')]()[_0xabd3('0x1f')](function(){_0x13a9b6[_0xabd3('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x312057,_0x2d0a9f){return function(_0x57cf92){if(!_0x57cf92){_0x312057[_0xabd3('0x14')](0x194);}return _0x57cf92;};}function handleError(_0x779de8,_0x264c01){_0x264c01=_0x264c01||0x1f4;return function(_0x592220){logger[_0xabd3('0x21')](_0x592220['stack']);if(_0x592220[_0xabd3('0x22')]){delete _0x592220[_0xabd3('0x22')];}_0x779de8[_0xabd3('0x15')](_0x264c01)['send'](_0x592220);};}var utilLicense=require('../../config/license/util');exports[_0xabd3('0x23')]=function(_0xd41996,_0xb33c0e){var _0x5a0ecb={'raw':!![],'where':{'id':0x1}},_0x25d948={};_0x25d948[_0xabd3('0x24')]=_[_0xabd3('0x25')](db[_0xabd3('0x26')][_0xabd3('0x27')]);_0x25d948['query']=_['keys'](_0xd41996[_0xabd3('0x28')]);_0x25d948[_0xabd3('0x29')]=_[_0xabd3('0x2a')](_0x25d948['model'],_0x25d948[_0xabd3('0x28')]);_0x5a0ecb[_0xabd3('0x2b')]=_[_0xabd3('0x2a')](_0x25d948[_0xabd3('0x24')],qs['fields'](_0xd41996[_0xabd3('0x28')][_0xabd3('0x2c')]));_0x5a0ecb[_0xabd3('0x2b')]=_0x5a0ecb[_0xabd3('0x2b')][_0xabd3('0x2d')]?_0x5a0ecb[_0xabd3('0x2b')]:_0x25d948[_0xabd3('0x24')];_0x5a0ecb=_[_0xabd3('0x2e')]({},_0x5a0ecb,_0xd41996[_0xabd3('0x2f')]);return utilLicense[_0xabd3('0x30')](_0x5a0ecb)[_0xabd3('0x1f')](respondWithResult(_0xb33c0e,null))['catch'](handleError(_0xb33c0e,null));};exports[_0xabd3('0x1e')]=function(_0x283b2d,_0x4063a2){if(_0x283b2d['body']['id']){delete _0x283b2d['body']['id'];}return db[_0xabd3('0x26')][_0xabd3('0x31')]({'where':{'id':_0x283b2d[_0xabd3('0x32')]['id']}})[_0xabd3('0x1f')](handleEntityNotFound(_0x4063a2,null))[_0xabd3('0x1f')](function(_0x158276){var _0x535878=_0x158276[_0xabd3('0x33')]({'plain':!![]});return utilLicense['checkLicense'](_0x535878,_0x283b2d['body'][_0xabd3('0x34')]);})[_0xabd3('0x1f')](function(_0x5370be){if(!_0x5370be['demo']){return saveUpdates(_0x283b2d[_0xabd3('0x35')],null);}return _0x5370be;})[_0xabd3('0x1f')](respondWithResult(_0x4063a2,null))[_0xabd3('0x36')](handleError(_0x4063a2,null));};exports[_0xabd3('0x37')]=function(_0x3f26d1,_0x2afffd){var _0x349606=_0xabd3('0x38');var _0x3ce827=path[_0xabd3('0x39')](_0xabd3('0x3a'),_0xabd3('0x3b'),'xcally',_0x349606);_0x2afffd[_0xabd3('0x3c')](_0xabd3('0x3d'),'attachment;\x20filename='+_0x349606);_0x2afffd[_0xabd3('0x1a')]('Content-Type',_0xabd3('0x3e'));_0x2afffd['download'](_0x3ce827);};
\ No newline at end of file
index ac03fad..1613cf7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfe96=['define','License','license','lodash','util','../../config/logger','bluebird','request-promise','path','rimraf','../../config/environment','./license.attributes','exports'];(function(_0x35cfcd,_0x388f3e){var _0x47819a=function(_0x31ef78){while(--_0x31ef78){_0x35cfcd['push'](_0x35cfcd['shift']());}};_0x47819a(++_0x388f3e);}(_0xfe96,0x107));var _0x6fe9=function(_0x9fb3d9,_0x19a3be){_0x9fb3d9=_0x9fb3d9-0x0;var _0xcd3a61=_0xfe96[_0x9fb3d9];return _0xcd3a61;};'use strict';var _=require(_0x6fe9('0x0'));var util=require(_0x6fe9('0x1'));var logger=require(_0x6fe9('0x2'))('api');var moment=require('moment');var BPromise=require(_0x6fe9('0x3'));var rp=require(_0x6fe9('0x4'));var fs=require('fs');var path=require(_0x6fe9('0x5'));var rimraf=require(_0x6fe9('0x6'));var config=require(_0x6fe9('0x7'));var attributes=require(_0x6fe9('0x8'));module[_0x6fe9('0x9')]=function(_0x2a64ba,_0x41aed3){return _0x2a64ba[_0x6fe9('0xa')](_0x6fe9('0xb'),attributes,{'tableName':_0x6fe9('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x003e=['license','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./license.attributes','define'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x003e,0xb5));var _0xe003=function(_0x59710f,_0x44c7f0){_0x59710f=_0x59710f-0x0;var _0xaae66a=_0x003e[_0x59710f];return _0xaae66a;};'use strict';var _=require(_0xe003('0x0'));var util=require(_0xe003('0x1'));var logger=require(_0xe003('0x2'))(_0xe003('0x3'));var moment=require(_0xe003('0x4'));var BPromise=require(_0xe003('0x5'));var rp=require(_0xe003('0x6'));var fs=require('fs');var path=require(_0xe003('0x7'));var rimraf=require(_0xe003('0x8'));var config=require('../../config/environment');var attributes=require(_0xe003('0x9'));module['exports']=function(_0xcd1b8,_0x186786){return _0xcd1b8[_0xe003('0xa')]('License',attributes,{'tableName':_0xe003('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a65e9d5..0e6bdf9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9cd5=['code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','License,\x20%s,\x20%s','request\x20sent','License,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x19a4ed,_0x476e25){var _0x4f8121=function(_0x29276c){while(--_0x29276c){_0x19a4ed['push'](_0x19a4ed['shift']());}};_0x4f8121(++_0x476e25);}(_0x9cd5,0x1f2));var _0x59cd=function(_0x30fa93,_0x3ba6a4){_0x30fa93=_0x30fa93-0x0;var _0x53d09f=_0x9cd5[_0x30fa93];return _0x53d09f;};'use strict';var _=require(_0x59cd('0x0'));var util=require(_0x59cd('0x1'));var moment=require(_0x59cd('0x2'));var BPromise=require(_0x59cd('0x3'));var rs=require(_0x59cd('0x4'));var fs=require('fs');var Redis=require(_0x59cd('0x5'));var db=require(_0x59cd('0x6'))['db'];var utils=require(_0x59cd('0x7'));var logger=require(_0x59cd('0x8'))(_0x59cd('0x9'));var config=require(_0x59cd('0xa'));var jayson=require(_0x59cd('0xb'));var client=jayson[_0x59cd('0xc')][_0x59cd('0xd')]({'port':0x232a});function respondWithRpcPromise(_0xeca5ed,_0x30a30a,_0x27a5ef){return new BPromise(function(_0x47c86f,_0x29d8fd){return client[_0x59cd('0xe')](_0xeca5ed,_0x27a5ef)[_0x59cd('0xf')](function(_0x2ff482){logger[_0x59cd('0x10')](_0x59cd('0x11'),_0x30a30a,_0x59cd('0x12'));logger['debug'](_0x59cd('0x13'),_0x30a30a,_0x59cd('0x12'),JSON[_0x59cd('0x14')](_0x2ff482));if(_0x2ff482[_0x59cd('0x15')]){if(_0x2ff482[_0x59cd('0x15')][_0x59cd('0x16')]===0x1f4){logger[_0x59cd('0x15')](_0x59cd('0x11'),_0x30a30a,_0x2ff482[_0x59cd('0x15')][_0x59cd('0x17')]);return _0x29d8fd(_0x2ff482[_0x59cd('0x15')]['message']);}logger[_0x59cd('0x15')]('License,\x20%s,\x20%s',_0x30a30a,_0x2ff482[_0x59cd('0x15')][_0x59cd('0x17')]);return _0x47c86f(_0x2ff482[_0x59cd('0x15')][_0x59cd('0x17')]);}else{logger['info'](_0x59cd('0x11'),_0x30a30a,_0x59cd('0x12'));_0x47c86f(_0x2ff482[_0x59cd('0x18')][_0x59cd('0x17')]);}})[_0x59cd('0x19')](function(_0x2261b7){logger[_0x59cd('0x15')]('License,\x20%s,\x20%s',_0x30a30a,_0x2261b7);_0x29d8fd(_0x2261b7);});});}
\ No newline at end of file
+var _0xba10=['result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','http','request','then','License,\x20%s,\x20%s','debug','request\x20sent','error','message','info'];(function(_0x31cb5f,_0x2df766){var _0x586042=function(_0x53c807){while(--_0x53c807){_0x31cb5f['push'](_0x31cb5f['shift']());}};_0x586042(++_0x2df766);}(_0xba10,0x106));var _0x0ba1=function(_0x31eeb3,_0x4f3abb){_0x31eeb3=_0x31eeb3-0x0;var _0x31b430=_0xba10[_0x31eeb3];return _0x31b430;};'use strict';var _=require(_0x0ba1('0x0'));var util=require(_0x0ba1('0x1'));var moment=require(_0x0ba1('0x2'));var BPromise=require('bluebird');var rs=require(_0x0ba1('0x3'));var fs=require('fs');var Redis=require(_0x0ba1('0x4'));var db=require(_0x0ba1('0x5'))['db'];var utils=require(_0x0ba1('0x6'));var logger=require('../../config/logger')(_0x0ba1('0x7'));var config=require('../../config/environment');var jayson=require(_0x0ba1('0x8'));var client=jayson['client'][_0x0ba1('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x14d64f,_0x1a9c50,_0x276106){return new BPromise(function(_0x345884,_0x1c30ad){return client[_0x0ba1('0xa')](_0x14d64f,_0x276106)[_0x0ba1('0xb')](function(_0x2a8cd2){logger['info'](_0x0ba1('0xc'),_0x1a9c50,'request\x20sent');logger[_0x0ba1('0xd')]('License,\x20%s,\x20%s,\x20%s',_0x1a9c50,_0x0ba1('0xe'),JSON['stringify'](_0x2a8cd2));if(_0x2a8cd2[_0x0ba1('0xf')]){if(_0x2a8cd2[_0x0ba1('0xf')]['code']===0x1f4){logger[_0x0ba1('0xf')](_0x0ba1('0xc'),_0x1a9c50,_0x2a8cd2[_0x0ba1('0xf')][_0x0ba1('0x10')]);return _0x1c30ad(_0x2a8cd2['error'][_0x0ba1('0x10')]);}logger['error'](_0x0ba1('0xc'),_0x1a9c50,_0x2a8cd2['error']['message']);return _0x345884(_0x2a8cd2[_0x0ba1('0xf')][_0x0ba1('0x10')]);}else{logger[_0x0ba1('0x11')](_0x0ba1('0xc'),_0x1a9c50,'request\x20sent');_0x345884(_0x2a8cd2[_0x0ba1('0x12')][_0x0ba1('0x10')]);}})[_0x0ba1('0x13')](function(_0x2e6315){logger[_0x0ba1('0xf')]('License,\x20%s,\x20%s',_0x1a9c50,_0x2e6315);_0x1c30ad(_0x2e6315);});});}
\ No newline at end of file
index 35750e3..aaf27cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe4b=['/describe','isAuthenticated','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/in_servers','getSmtp','/:id/interactions','getInteractions','/:id/applications','getMessages','/:id/verify','verifySmtp','/:id/users','getAgents','post','addDisposition','create','addImap','/:id/out_servers','addInteraction','addApplications','/:id/send','send','addAgents','put','update','delete','removeDispositions','removeImap','removeSmtp','removeAgents','multer','util','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','./mailAccount.controller','get','index'];(function(_0x191230,_0xa67052){var _0x2046ec=function(_0x58ad0a){while(--_0x58ad0a){_0x191230['push'](_0x191230['shift']());}};_0x2046ec(++_0xa67052);}(_0xbe4b,0x15e));var _0xbbe4=function(_0x565c49,_0x54acd0){_0x565c49=_0x565c49-0x0;var _0x20ca34=_0xbe4b[_0x565c49];return _0x20ca34;};'use strict';var multer=require(_0xbbe4('0x0'));var util=require(_0xbbe4('0x1'));var path=require('path');var timeout=require(_0xbbe4('0x2'));var express=require(_0xbbe4('0x3'));var router=express['Router']();var fs_extra=require(_0xbbe4('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xbbe4('0x5'));var config=require(_0xbbe4('0x6'));var controller=require(_0xbbe4('0x7'));router[_0xbbe4('0x8')]('/',auth['isAuthenticated'](),controller[_0xbbe4('0x9')]);router[_0xbbe4('0x8')](_0xbbe4('0xa'),auth[_0xbbe4('0xb')](),controller['describe']);router['get'](_0xbbe4('0xc'),auth[_0xbbe4('0xb')](),controller[_0xbbe4('0xd')]);router[_0xbbe4('0x8')](_0xbbe4('0xe'),auth[_0xbbe4('0xb')](),controller[_0xbbe4('0xf')]);router['get'](_0xbbe4('0x10'),auth[_0xbbe4('0xb')](),controller[_0xbbe4('0x11')]);router[_0xbbe4('0x8')](_0xbbe4('0x12'),auth['isAuthenticated'](),controller['getImap']);router['get']('/:id/out_servers',auth[_0xbbe4('0xb')](),controller[_0xbbe4('0x13')]);router['get'](_0xbbe4('0x14'),auth[_0xbbe4('0xb')](),controller[_0xbbe4('0x15')]);router[_0xbbe4('0x8')](_0xbbe4('0x16'),auth[_0xbbe4('0xb')](),controller['getApplications']);router[_0xbbe4('0x8')]('/:id/messages',auth[_0xbbe4('0xb')](),controller[_0xbbe4('0x17')]);router[_0xbbe4('0x8')](_0xbbe4('0x18'),auth['isAuthenticated'](),controller[_0xbbe4('0x19')]);router[_0xbbe4('0x8')](_0xbbe4('0x1a'),auth['isAuthenticated'](),controller[_0xbbe4('0x1b')]);router[_0xbbe4('0x1c')](_0xbbe4('0xe'),auth['isAuthenticated'](),controller[_0xbbe4('0x1d')]);router[_0xbbe4('0x1c')](_0xbbe4('0x10'),auth[_0xbbe4('0xb')](),controller['addAnswer']);router[_0xbbe4('0x1c')]('/',auth['isAuthenticated'](),controller[_0xbbe4('0x1e')]);router[_0xbbe4('0x1c')]('/:id/in_servers',auth[_0xbbe4('0xb')](),controller[_0xbbe4('0x1f')]);router[_0xbbe4('0x1c')](_0xbbe4('0x20'),auth[_0xbbe4('0xb')](),controller['addSmtp']);router[_0xbbe4('0x1c')](_0xbbe4('0x14'),auth[_0xbbe4('0xb')](),controller[_0xbbe4('0x21')]);router['post']('/:id/applications',auth[_0xbbe4('0xb')](),controller[_0xbbe4('0x22')]);router[_0xbbe4('0x1c')](_0xbbe4('0x23'),auth[_0xbbe4('0xb')](),controller[_0xbbe4('0x24')]);router[_0xbbe4('0x1c')](_0xbbe4('0x1a'),auth[_0xbbe4('0xb')](),controller[_0xbbe4('0x25')]);router[_0xbbe4('0x26')](_0xbbe4('0xc'),auth[_0xbbe4('0xb')](),controller[_0xbbe4('0x27')]);router[_0xbbe4('0x28')]('/:id/dispositions',auth[_0xbbe4('0xb')](),controller[_0xbbe4('0x29')]);router[_0xbbe4('0x28')]('/:id/canned_answers',auth[_0xbbe4('0xb')](),controller['removeAnswers']);router[_0xbbe4('0x28')]('/:id/in_servers',auth[_0xbbe4('0xb')](),controller[_0xbbe4('0x2a')]);router[_0xbbe4('0x28')](_0xbbe4('0x20'),auth['isAuthenticated'](),controller[_0xbbe4('0x2b')]);router['delete'](_0xbbe4('0xc'),auth[_0xbbe4('0xb')](),controller['destroy']);router['delete'](_0xbbe4('0x1a'),auth['isAuthenticated'](),controller[_0xbbe4('0x2c')]);module['exports']=router;
\ No newline at end of file
+var _0x0149=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/describe','describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/in_servers','getImap','/:id/out_servers','getSmtp','/:id/applications','getApplications','/:id/messages','getMessages','/:id/verify','verifySmtp','/:id/users','getAgents','addDisposition','post','addAnswer','create','addImap','addSmtp','addApplications','/:id/send','addAgents','put','update','delete','removeAnswers','destroy','removeAgents','exports','multer','util','path','connect-timeout'];(function(_0x491a68,_0x5a636c){var _0x194b92=function(_0x15b274){while(--_0x15b274){_0x491a68['push'](_0x491a68['shift']());}};_0x194b92(++_0x5a636c);}(_0x0149,0x8f));var _0x9014=function(_0x76052,_0x128fc6){_0x76052=_0x76052-0x0;var _0xd77ccf=_0x0149[_0x76052];return _0xd77ccf;};'use strict';var multer=require(_0x9014('0x0'));var util=require(_0x9014('0x1'));var path=require(_0x9014('0x2'));var timeout=require(_0x9014('0x3'));var express=require(_0x9014('0x4'));var router=express[_0x9014('0x5')]();var fs_extra=require(_0x9014('0x6'));var auth=require(_0x9014('0x7'));var interaction=require(_0x9014('0x8'));var config=require(_0x9014('0x9'));var controller=require('./mailAccount.controller');router['get']('/',auth[_0x9014('0xa')](),controller[_0x9014('0xb')]);router[_0x9014('0xc')](_0x9014('0xd'),auth[_0x9014('0xa')](),controller[_0x9014('0xe')]);router['get'](_0x9014('0xf'),auth['isAuthenticated'](),controller[_0x9014('0x10')]);router[_0x9014('0xc')](_0x9014('0x11'),auth['isAuthenticated'](),controller[_0x9014('0x12')]);router['get'](_0x9014('0x13'),auth['isAuthenticated'](),controller[_0x9014('0x14')]);router['get'](_0x9014('0x15'),auth['isAuthenticated'](),controller[_0x9014('0x16')]);router[_0x9014('0xc')](_0x9014('0x17'),auth['isAuthenticated'](),controller[_0x9014('0x18')]);router[_0x9014('0xc')]('/:id/interactions',auth['isAuthenticated'](),controller['getInteractions']);router[_0x9014('0xc')](_0x9014('0x19'),auth['isAuthenticated'](),controller[_0x9014('0x1a')]);router[_0x9014('0xc')](_0x9014('0x1b'),auth['isAuthenticated'](),controller[_0x9014('0x1c')]);router[_0x9014('0xc')](_0x9014('0x1d'),auth[_0x9014('0xa')](),controller[_0x9014('0x1e')]);router[_0x9014('0xc')](_0x9014('0x1f'),auth[_0x9014('0xa')](),controller[_0x9014('0x20')]);router['post'](_0x9014('0x11'),auth[_0x9014('0xa')](),controller[_0x9014('0x21')]);router[_0x9014('0x22')](_0x9014('0x13'),auth[_0x9014('0xa')](),controller[_0x9014('0x23')]);router['post']('/',auth['isAuthenticated'](),controller[_0x9014('0x24')]);router['post']('/:id/in_servers',auth[_0x9014('0xa')](),controller[_0x9014('0x25')]);router[_0x9014('0x22')](_0x9014('0x17'),auth['isAuthenticated'](),controller[_0x9014('0x26')]);router[_0x9014('0x22')]('/:id/interactions',auth[_0x9014('0xa')](),controller['addInteraction']);router[_0x9014('0x22')](_0x9014('0x19'),auth[_0x9014('0xa')](),controller[_0x9014('0x27')]);router[_0x9014('0x22')](_0x9014('0x28'),auth[_0x9014('0xa')](),controller['send']);router['post'](_0x9014('0x1f'),auth[_0x9014('0xa')](),controller[_0x9014('0x29')]);router[_0x9014('0x2a')]('/:id',auth[_0x9014('0xa')](),controller[_0x9014('0x2b')]);router['delete'](_0x9014('0x11'),auth['isAuthenticated'](),controller['removeDispositions']);router[_0x9014('0x2c')](_0x9014('0x13'),auth[_0x9014('0xa')](),controller[_0x9014('0x2d')]);router[_0x9014('0x2c')](_0x9014('0x15'),auth[_0x9014('0xa')](),controller['removeImap']);router[_0x9014('0x2c')](_0x9014('0x17'),auth[_0x9014('0xa')](),controller['removeSmtp']);router[_0x9014('0x2c')](_0x9014('0xf'),auth[_0x9014('0xa')](),controller[_0x9014('0x2e')]);router[_0x9014('0x2c')](_0x9014('0x1f'),auth[_0x9014('0xa')](),controller[_0x9014('0x2f')]);module[_0x9014('0x30')]=router;
\ No newline at end of file
index ac682f2..c1c8846 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2805=['outlook365','custom','getDataValue','provider','sequelize','exports','BOOLEAN','TEXT','STRING','Arial,Helvetica,sans-serif','INTEGER','UNSIGNED','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}<br/>Subject\x20:\x20{{message.subject}}','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','ENUM','gmail','hotmail'];(function(_0xf66b2f,_0x2a116a){var _0x352545=function(_0x394b05){while(--_0x394b05){_0xf66b2f['push'](_0xf66b2f['shift']());}};_0x352545(++_0x2a116a);}(_0x2805,0x16c));var _0x5280=function(_0x11ce46,_0x177a85){_0x11ce46=_0x11ce46-0x0;var _0x368a1e=_0x2805[_0x11ce46];return _0x368a1e;};'use strict';var Sequelize=require(_0x5280('0x0'));module[_0x5280('0x1')]={'description':{'type':Sequelize['STRING']},'name':{'type':Sequelize['STRING'],'allowNull':![]},'service':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'email':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]}},'active':{'type':Sequelize[_0x5280('0x2')],'defaultValue':!![]},'key':{'type':Sequelize['STRING'],'allowNull':![]},'template':{'type':Sequelize[_0x5280('0x3')]},'markAsUnread':{'type':Sequelize[_0x5280('0x2')],'defaultValue':![]},'fontFamily':{'type':Sequelize[_0x5280('0x4')],'allowNull':![],'defaultValue':_0x5280('0x5')},'fontSize':{'type':Sequelize[_0x5280('0x6')](0x2)[_0x5280('0x7')],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0x5280('0x8');}},'notificationSound':{'type':Sequelize[_0x5280('0x2')],'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[_0x5280('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x5280('0x2')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x5280('0x6')],'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[_0x5280('0x2')],'defaultValue':![],'comment':_0x5280('0x9'),'set':function(_0x3a86c9){if(!_0x3a86c9)this[_0x5280('0xa')](_0x5280('0xb'),null);this[_0x5280('0xa')](_0x5280('0xc'),_0x3a86c9);}},'provider':{'type':Sequelize[_0x5280('0xd')](_0x5280('0xe'),_0x5280('0xf'),'yahoo',_0x5280('0x10')),'defaultValue':null,'get':function(){if(!this['getDataValue']('provider'))return _0x5280('0x11');return this[_0x5280('0x12')](_0x5280('0x13'));},'set':function(_0x5692d5){if(_0x5692d5===_0x5280('0x11'))_0x5692d5=null;return this['setDataValue'](_0x5280('0x13'),_0x5692d5);}}};
\ No newline at end of file
+var _0x071f=['yahoo','outlook365','getDataValue','provider','custom','sequelize','STRING','BOOLEAN','TEXT','Arial,Helvetica,sans-serif','INTEGER','UNSIGNED','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}<br/>Subject\x20:\x20{{message.subject}}','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDisposition','ENUM','gmail'];(function(_0x1fa1f9,_0x3c7794){var _0xa3d4fb=function(_0xb7c8fb){while(--_0xb7c8fb){_0x1fa1f9['push'](_0x1fa1f9['shift']());}};_0xa3d4fb(++_0x3c7794);}(_0x071f,0xb9));var _0xf071=function(_0x5d61d6,_0x34cd1c){_0x5d61d6=_0x5d61d6-0x0;var _0x23cfcb=_0x071f[_0x5d61d6];return _0x23cfcb;};'use strict';var Sequelize=require(_0xf071('0x0'));module['exports']={'description':{'type':Sequelize[_0xf071('0x1')]},'name':{'type':Sequelize['STRING'],'allowNull':![]},'service':{'type':Sequelize[_0xf071('0x2')],'defaultValue':![]},'email':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]}},'active':{'type':Sequelize[_0xf071('0x2')],'defaultValue':!![]},'key':{'type':Sequelize[_0xf071('0x1')],'allowNull':![]},'template':{'type':Sequelize[_0xf071('0x3')]},'markAsUnread':{'type':Sequelize[_0xf071('0x2')],'defaultValue':![]},'fontFamily':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xf071('0x4')},'fontSize':{'type':Sequelize[_0xf071('0x5')](0x2)[_0xf071('0x6')],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize[_0xf071('0x3')],'defaultValue':function(){return _0xf071('0x7');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xf071('0x2')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xf071('0x2')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xf071('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xf071('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xf071('0x5')],'allowNull':!![],'defaultValue':null,'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0xf071('0x2')],'defaultValue':![],'comment':_0xf071('0x8'),'set':function(_0x5ebd5c){if(!_0x5ebd5c)this[_0xf071('0x9')]('mandatoryDispositionPauseId',null);this[_0xf071('0x9')](_0xf071('0xa'),_0x5ebd5c);}},'provider':{'type':Sequelize[_0xf071('0xb')](_0xf071('0xc'),'hotmail',_0xf071('0xd'),_0xf071('0xe')),'defaultValue':null,'get':function(){if(!this[_0xf071('0xf')](_0xf071('0x10')))return _0xf071('0x11');return this[_0xf071('0xf')]('provider');},'set':function(_0xaa0334){if(_0xaa0334==='custom')_0xaa0334=null;return this[_0xf071('0x9')]('provider',_0xaa0334);}}};
\ No newline at end of file
index 54c9cb6..8821efc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x85e1=['sendStatus','status','json','undefined','limit','count','set','Content-Range','destroy','get','UserProfileResource','end','stack','name','gmail','imap.gmail.com','imap.mail.yahoo.com','hotmail','imap-mail.outlook.com','Unknown\x20email\x20service\x20provider','smtp.gmail.com','yahoo','smtp.mail.yahoo.com','smtp.office365.com','user','username','password','pass','modernAuthentication','CloudProviderId','host','port','secure','service','authentication','Imap','Smtp','index','MailServerIn','MailServerOut','Pause','map','MailAccount','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','offset','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','show','params','mandatoryDispositionPause','find','update','body','provider','custom','Mail\x20Account\x20not\x20found','describe','addDisposition','MailAccountId','Disposition','create','getDispositions','findOne','removeDispositions','ids','addAnswer','CannedAnswer','removeAnswers','email','ListId','isNil','active','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','MailAccounts','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getImap','removeImap','setImap','addSmtp','removeSmtp','MailInteraction','addInteraction','omit','getInteractions','User','Owner','fullname','Tags','color','tag','findAll','addApplications','sequelize','transaction','ISOLATION_LEVELS','READ_COMMITTED','MailApplication','bulkCreate','findAndCountAll','finally','send','getApplications','getMessages','MailMessage','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','inlineCss','true','CmList','List','CmContact','Contacts','updatedAt','DESC','CloudProvider','Smtp\x20configuration\x20not\x20found','from','%s\x20<%s>','attachments','server/files/attachments','getSmtpOptions','SendMail','sendMail','messageId','subject','attach','out','Interaction','Messages','verifySmtp','VerifySmtp','Sequelize','You\x20can\x27t\x20remove\x20the\x20mail\x20service\x20account','addAgents','emit','userMailAccount:save','removeAgents','userMailAccount:remove','moment','bluebird','util','path','lodash','juice','ioredis','../../config/logger','api','../../mysqldb','redis','defaults','socket.io-emitter','./mailAccount.socket','jayson/promise','http','request','then','info','debug','request\x20sent','stringify','error','MailAccount,\x20%s,\x20%s','message','result'];(function(_0x45f951,_0x2750c8){var _0x24756c=function(_0x31c931){while(--_0x31c931){_0x45f951['push'](_0x45f951['shift']());}};_0x24756c(++_0x2750c8);}(_0x85e1,0xa5));var _0x185e=function(_0x537d4e,_0x2bfd04){_0x537d4e=_0x537d4e-0x0;var _0x4a3c54=_0x85e1[_0x537d4e];return _0x4a3c54;};'use strict';var moment=require(_0x185e('0x0'));var BPromise=require(_0x185e('0x1'));var util=require(_0x185e('0x2'));var path=require(_0x185e('0x3'));var _=require(_0x185e('0x4'));var juice=require(_0x185e('0x5'));var Redis=require(_0x185e('0x6'));var qs=require('../../components/parsers/qs');var logger=require(_0x185e('0x7'))(_0x185e('0x8'));var config=require('../../config/environment');var db=require(_0x185e('0x9'))['db'];config[_0x185e('0xa')]=_[_0x185e('0xb')](config[_0x185e('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0x185e('0xc'))(new Redis(config['redis']));require(_0x185e('0xd'))['register'](socket);var jayson=require(_0x185e('0xe'));var client=jayson['client'][_0x185e('0xf')]({'port':0x232b});function respondWithRpcPromise(_0x17e43d,_0x3db368,_0x589df5,_0x4cde77){return new BPromise(function(_0x38490e,_0x2d8ce3){var _0x6720fb=_0x4cde77||client;return _0x6720fb[_0x185e('0x10')](_0x17e43d,_0x589df5)[_0x185e('0x11')](function(_0x29906d){logger[_0x185e('0x12')]('MailAccount,\x20%s,\x20%s',_0x3db368,'request\x20sent');logger[_0x185e('0x13')]('MailAccount,\x20%s,\x20%s,\x20%s',_0x3db368,_0x185e('0x14'),JSON[_0x185e('0x15')](_0x29906d));if(_0x29906d[_0x185e('0x16')]){if(_0x29906d[_0x185e('0x16')]['code']===0x1f4){logger[_0x185e('0x16')](_0x185e('0x17'),_0x3db368,_0x29906d[_0x185e('0x16')][_0x185e('0x18')]);return _0x2d8ce3(_0x29906d[_0x185e('0x16')][_0x185e('0x18')]);}logger['error'](_0x185e('0x17'),_0x3db368,_0x29906d[_0x185e('0x16')][_0x185e('0x18')]);return _0x38490e(_0x29906d[_0x185e('0x16')][_0x185e('0x18')]);}else{logger[_0x185e('0x12')](_0x185e('0x17'),_0x3db368,_0x185e('0x14'));_0x38490e(_0x29906d[_0x185e('0x19')][_0x185e('0x18')]);}})['catch'](function(_0xbd23ab){logger[_0x185e('0x16')](_0x185e('0x17'),_0x3db368,_0xbd23ab);_0x2d8ce3(_0xbd23ab);});});}function respondWithStatusCode(_0x3deaf9,_0x2f27de){_0x2f27de=_0x2f27de||0xcc;return function(_0x6a3160){if(_0x6a3160){return _0x3deaf9[_0x185e('0x1a')](_0x2f27de);}return _0x3deaf9['status'](_0x2f27de)['end']();};}function respondWithResult(_0x3abd46,_0x12bbf9){_0x12bbf9=_0x12bbf9||0xc8;return function(_0x231f1f){if(_0x231f1f){return _0x3abd46[_0x185e('0x1b')](_0x12bbf9)[_0x185e('0x1c')](_0x231f1f);}};}function respondWithFilteredResult(_0x5589b9,_0x367d19){return function(_0x5d51ba){if(_0x5d51ba){var _0x7109a5=typeof _0x367d19['offset']===_0x185e('0x1d')&&typeof _0x367d19[_0x185e('0x1e')]==='undefined';var _0x4122c3=_0x5d51ba[_0x185e('0x1f')];var _0x490c9c=_0x7109a5?0x0:_0x367d19['offset'];var _0x28eaaa=_0x7109a5?_0x5d51ba['count']:_0x367d19['offset']+_0x367d19[_0x185e('0x1e')];var _0x50dc75;if(_0x28eaaa>=_0x4122c3){_0x28eaaa=_0x4122c3;_0x50dc75=0xc8;}else{_0x50dc75=0xce;}_0x5589b9[_0x185e('0x1b')](_0x50dc75);return _0x5589b9[_0x185e('0x20')](_0x185e('0x21'),_0x490c9c+'-'+_0x28eaaa+'/'+_0x4122c3)[_0x185e('0x1c')](_0x5d51ba);}return null;};}function saveUpdates(_0x52d493){return function(_0x5b32ba){if(_0x5b32ba){return _0x5b32ba['update'](_0x52d493)['then'](function(_0x465938){return _0x465938;});}return null;};}function removeEntity(_0x35fba8){return function(_0x49a951){if(_0x49a951){return _0x49a951[_0x185e('0x22')]()['then'](function(){var _0x266cb0=_0x49a951[_0x185e('0x23')]({'plain':!![]});var _0x4dbeed='MailAccounts';return db[_0x185e('0x24')]['destroy']({'where':{'type':_0x4dbeed,'resourceId':_0x266cb0['id']}})[_0x185e('0x11')](function(){return _0x49a951;});})[_0x185e('0x11')](function(){_0x35fba8[_0x185e('0x1b')](0xcc)[_0x185e('0x25')]();});}};}function handleEntityNotFound(_0x3f06ca){return function(_0x430c13){if(!_0x430c13){_0x3f06ca[_0x185e('0x1a')](0x194);}return _0x430c13;};}function handleError(_0xbdd842,_0x1cdaad){_0x1cdaad=_0x1cdaad||0x1f4;return function(_0x44c660){logger[_0x185e('0x16')](_0x44c660[_0x185e('0x26')]);if(_0x44c660[_0x185e('0x27')]){delete _0x44c660['name'];}_0xbdd842[_0x185e('0x1b')](_0x1cdaad)['send'](_0x44c660);};}function getImapHost(_0x5915b8){switch(_0x5915b8){case _0x185e('0x28'):return _0x185e('0x29');case'yahoo':return _0x185e('0x2a');case _0x185e('0x2b'):return _0x185e('0x2c');case'outlook365':return'outlook.office365.com';}throw new Error(_0x185e('0x2d'),_0x5915b8);}function getSmtpHost(_0x14dcba){switch(_0x14dcba){case _0x185e('0x28'):return _0x185e('0x2e');case _0x185e('0x2f'):return _0x185e('0x30');case _0x185e('0x2b'):return'smtp-mail.outlook.com';case'outlook365':return _0x185e('0x31');}throw new Error(_0x185e('0x2d'),_0x14dcba);}function getAuthenticationOptions(_0x49ffc6,_0x1056c8){var _0x5632cb={};var _0x2cfcc8={};if(_0x49ffc6){_0x5632cb[_0x185e('0x32')]=_0x2cfcc8['user']=_0x1056c8[_0x185e('0x33')];_0x5632cb[_0x185e('0x34')]=_0x2cfcc8[_0x185e('0x35')]=_0x1056c8[_0x185e('0x34')];if(_0x1056c8[_0x185e('0x36')]){_0x5632cb[_0x185e('0x36')]=_0x2cfcc8['modernAuthentication']=!![];_0x5632cb[_0x185e('0x37')]=_0x2cfcc8[_0x185e('0x37')]=_0x1056c8[_0x185e('0x37')];_0x5632cb[_0x185e('0x34')]=_0x2cfcc8['pass']=null;}else{_0x5632cb[_0x185e('0x37')]=_0x2cfcc8[_0x185e('0x37')]=null;}_0x5632cb[_0x185e('0x38')]=getImapHost(_0x49ffc6);_0x5632cb[_0x185e('0x39')]=0x3e1;_0x2cfcc8['host']=getSmtpHost(_0x49ffc6);_0x2cfcc8[_0x185e('0x39')]=0x24b;_0x2cfcc8[_0x185e('0x3a')]=![];_0x5632cb[_0x185e('0x3b')]=_0x2cfcc8[_0x185e('0x3b')]=null;}else{if(_0x1056c8[_0x185e('0x3c')]){_0x5632cb[_0x185e('0x32')]=_0x2cfcc8['user']=_0x1056c8['username'];_0x5632cb[_0x185e('0x34')]=_0x2cfcc8[_0x185e('0x35')]=_0x1056c8['password'];}else{_0x5632cb[_0x185e('0x3c')]=_0x2cfcc8[_0x185e('0x3c')]=![];_0x5632cb[_0x185e('0x32')]=_0x2cfcc8[_0x185e('0x32')]=null;_0x5632cb[_0x185e('0x34')]=_0x2cfcc8[_0x185e('0x35')]=null;}_0x5632cb[_0x185e('0x38')]=_0x1056c8[_0x185e('0x3d')][_0x185e('0x38')];_0x5632cb[_0x185e('0x39')]=_0x1056c8['Imap'][_0x185e('0x39')];_0x2cfcc8[_0x185e('0x38')]=_0x1056c8[_0x185e('0x3e')]['host'];_0x2cfcc8[_0x185e('0x39')]=_0x1056c8[_0x185e('0x3e')][_0x185e('0x39')];}return{'Imap':_0x5632cb,'Smtp':_0x2cfcc8};}exports[_0x185e('0x3f')]=function(_0x74daa4,_0x534311){var _0x489b25={'include':[{'model':db[_0x185e('0x40')],'as':_0x185e('0x3d')},{'model':db[_0x185e('0x41')],'as':_0x185e('0x3e')},{'model':db[_0x185e('0x42')],'as':'mandatoryDispositionPause'}]},_0x27227b={},_0x9df834={'count':0x0,'rows':[]};var _0x164c9f=_[_0x185e('0x43')](db[_0x185e('0x44')][_0x185e('0x45')],function(_0x5c5487){return{'name':_0x5c5487[_0x185e('0x46')],'type':_0x5c5487[_0x185e('0x47')][_0x185e('0x48')]};});_0x27227b['model']=_[_0x185e('0x43')](_0x164c9f,_0x185e('0x27'));_0x27227b[_0x185e('0x49')]=_[_0x185e('0x4a')](_0x74daa4[_0x185e('0x49')]);_0x27227b[_0x185e('0x4b')]=_[_0x185e('0x4c')](_0x27227b[_0x185e('0x4d')],_0x27227b[_0x185e('0x49')]);_0x489b25[_0x185e('0x4e')]=_['intersection'](_0x27227b[_0x185e('0x4d')],qs[_0x185e('0x4f')](_0x74daa4[_0x185e('0x49')][_0x185e('0x4f')]));_0x489b25[_0x185e('0x4e')]=_0x489b25['attributes'][_0x185e('0x50')]?_0x489b25['attributes']:_0x27227b[_0x185e('0x4d')];if(!_0x74daa4[_0x185e('0x49')][_0x185e('0x51')](_0x185e('0x52'))){_0x489b25[_0x185e('0x1e')]=qs[_0x185e('0x1e')](_0x74daa4[_0x185e('0x49')][_0x185e('0x1e')]);_0x489b25[_0x185e('0x53')]=qs[_0x185e('0x53')](_0x74daa4[_0x185e('0x49')][_0x185e('0x53')]);}_0x489b25[_0x185e('0x54')]=qs[_0x185e('0x55')](_0x74daa4[_0x185e('0x49')][_0x185e('0x55')]);_0x489b25[_0x185e('0x56')]=qs['filters'](_[_0x185e('0x57')](_0x74daa4[_0x185e('0x49')],_0x27227b['filters']),_0x164c9f);if(_0x74daa4[_0x185e('0x49')][_0x185e('0x58')]){_0x489b25['where']=_[_0x185e('0x59')](_0x489b25[_0x185e('0x56')],{'$or':_[_0x185e('0x43')](_0x164c9f,function(_0x3fca43){if(_0x3fca43[_0x185e('0x47')]!==_0x185e('0x5a')){var _0x384c10={};_0x384c10[_0x3fca43['name']]={'$like':'%'+_0x74daa4[_0x185e('0x49')][_0x185e('0x58')]+'%'};return _0x384c10;}})});}_0x489b25=_[_0x185e('0x59')]({},_0x489b25,_0x74daa4[_0x185e('0x5b')]);var _0x55747={'where':_0x489b25[_0x185e('0x56')]};return db[_0x185e('0x44')][_0x185e('0x1f')](_0x55747)['then'](function(_0x592125){_0x9df834[_0x185e('0x1f')]=_0x592125;if(_0x74daa4[_0x185e('0x49')][_0x185e('0x5c')]){_0x489b25[_0x185e('0x5d')]=[{'all':!![]}];}return db[_0x185e('0x44')]['findAll'](_0x489b25);})[_0x185e('0x11')](function(_0x3958df){_0x9df834[_0x185e('0x5e')]=_0x3958df;return _0x9df834;})[_0x185e('0x11')](respondWithFilteredResult(_0x534311,_0x489b25))[_0x185e('0x5f')](handleError(_0x534311,null));};exports[_0x185e('0x60')]=function(_0xd5e859,_0x73181f){var _0x2344ed={'raw':![],'where':{'id':_0xd5e859[_0x185e('0x61')]['id']},'include':[{'model':db[_0x185e('0x40')],'as':'Imap'},{'model':db[_0x185e('0x41')],'as':_0x185e('0x3e')},{'model':db[_0x185e('0x42')],'as':_0x185e('0x62')}]},_0x27f18e={};_0x27f18e['model']=_[_0x185e('0x4a')](db[_0x185e('0x44')][_0x185e('0x45')]);_0x27f18e[_0x185e('0x49')]=_[_0x185e('0x4a')](_0xd5e859[_0x185e('0x49')]);_0x27f18e[_0x185e('0x4b')]=_['intersection'](_0x27f18e[_0x185e('0x4d')],_0x27f18e['query']);_0x2344ed[_0x185e('0x4e')]=_[_0x185e('0x4c')](_0x27f18e[_0x185e('0x4d')],qs[_0x185e('0x4f')](_0xd5e859[_0x185e('0x49')][_0x185e('0x4f')]));_0x2344ed[_0x185e('0x4e')]=_0x2344ed[_0x185e('0x4e')][_0x185e('0x50')]?_0x2344ed[_0x185e('0x4e')]:_0x27f18e[_0x185e('0x4d')];if(_0xd5e859[_0x185e('0x49')][_0x185e('0x5c')]){_0x2344ed[_0x185e('0x5d')]=[{'all':!![]}];}_0x2344ed=_['merge']({},_0x2344ed,_0xd5e859['options']);return db['MailAccount'][_0x185e('0x63')](_0x2344ed)[_0x185e('0x11')](handleEntityNotFound(_0x73181f,null))[_0x185e('0x11')](respondWithResult(_0x73181f,null))['catch'](handleError(_0x73181f,null));};exports[_0x185e('0x64')]=function(_0xf94e57,_0x274e48){if(_0xf94e57[_0x185e('0x65')]['id']){delete _0xf94e57['body']['id'];}var _0x4b56c4=_0xf94e57[_0x185e('0x65')][_0x185e('0x66')]===_0x185e('0x67')?null:_0xf94e57[_0x185e('0x65')][_0x185e('0x66')];var _0x4cc046=_0xf94e57[_0x185e('0x65')][_0x185e('0x3d')]||{};var _0x5b21ce=_0xf94e57[_0x185e('0x65')]['Smtp']||{};if(_0x4b56c4){_0x4cc046[_0x185e('0x38')]=getImapHost(_0x4b56c4);_0x4cc046[_0x185e('0x39')]=0x3e1;_0x5b21ce[_0x185e('0x38')]=getSmtpHost(_0x4b56c4);_0x5b21ce[_0x185e('0x39')]=0x24b;_0x5b21ce['secure']=![];}if(_0x5b21ce[_0x185e('0x36')]){_0x5b21ce[_0x185e('0x3a')]=![];}else{_0x5b21ce[_0x185e('0x37')]=null;}if(!_0x4cc046[_0x185e('0x36')])_0x4cc046['CloudProviderId']=null;_0xf94e57[_0x185e('0x65')][_0x185e('0x3d')]=_0x4cc046;_0xf94e57[_0x185e('0x65')]['Smtp']=_0x5b21ce;return db[_0x185e('0x44')][_0x185e('0x63')]({'where':{'id':_0xf94e57['params']['id']},'include':[{'model':db[_0x185e('0x40')],'as':_0x185e('0x3d')},{'model':db[_0x185e('0x41')],'as':_0x185e('0x3e')},{'model':db[_0x185e('0x42')],'as':_0x185e('0x62')}]})[_0x185e('0x11')](handleEntityNotFound(_0x274e48,null))[_0x185e('0x11')](function(_0x3e8497){if(!_0x3e8497)throw new Error(_0x185e('0x68'));if(_0x3e8497[_0x185e('0x3b')])delete _0xf94e57[_0x185e('0x65')]['Imap'];return _0x3e8497;})['then'](saveUpdates(_0xf94e57[_0x185e('0x65')],null))[_0x185e('0x11')](function(_0x3afdf8){if(!_0xf94e57[_0x185e('0x65')]['Imap'])return _0x3afdf8;return db['MailServerIn'][_0x185e('0x64')](_0xf94e57['body']['Imap'],{'where':{'MailAccountId':_0x3afdf8['id']}})[_0x185e('0x11')](function(){return _0x3afdf8;});})[_0x185e('0x11')](function(_0x2d70ee){if(!_0xf94e57['body'][_0x185e('0x3e')])return _0x2d70ee;return db['MailServerOut'][_0x185e('0x64')](_0xf94e57[_0x185e('0x65')][_0x185e('0x3e')],{'where':{'MailAccountId':_0x2d70ee['id']}})[_0x185e('0x11')](function(){return _0x2d70ee;});})[_0x185e('0x11')](respondWithResult(_0x274e48,null))[_0x185e('0x5f')](handleError(_0x274e48,null));};exports[_0x185e('0x69')]=function(_0x4ff1f3,_0xfe907b){return db['MailAccount'][_0x185e('0x69')]()['then'](respondWithResult(_0xfe907b,null))['catch'](handleError(_0xfe907b,null));};exports[_0x185e('0x6a')]=function(_0x14321d,_0x5f49bb){if(_0x14321d['body']['id']){delete _0x14321d['body']['id'];}return db[_0x185e('0x44')][_0x185e('0x63')]({'where':{'id':_0x14321d[_0x185e('0x61')]['id']}})[_0x185e('0x11')](handleEntityNotFound(_0x5f49bb,null))[_0x185e('0x11')](function(_0x1ad134){if(_0x1ad134){_0x14321d[_0x185e('0x65')][_0x185e('0x6b')]=_0x1ad134['id'];return db[_0x185e('0x6c')][_0x185e('0x6d')](_0x14321d[_0x185e('0x65')]);}})['then'](respondWithResult(_0x5f49bb,null))['catch'](handleError(_0x5f49bb,null));};exports[_0x185e('0x6e')]=function(_0x12a0e2,_0x5dab4){var _0x2bd35c={'raw':![],'where':{}};var _0x25cf44={};var _0x3f5be1={'count':0x0,'rows':[]};return db['MailAccount'][_0x185e('0x6f')]({'where':{'id':_0x12a0e2[_0x185e('0x61')]['id']}})['then'](handleEntityNotFound(_0x5dab4,null))['then'](function(_0x58e9b2){if(_0x58e9b2){_0x25cf44['model']=_['keys'](db[_0x185e('0x6c')][_0x185e('0x45')]);_0x25cf44[_0x185e('0x49')]=_[_0x185e('0x4a')](_0x12a0e2['query']);_0x25cf44['filters']=_['intersection'](_0x25cf44[_0x185e('0x4d')],_0x25cf44[_0x185e('0x49')]);_0x2bd35c['attributes']=_['intersection'](_0x25cf44[_0x185e('0x4d')],qs[_0x185e('0x4f')](_0x12a0e2[_0x185e('0x49')]['fields']));_0x2bd35c[_0x185e('0x4e')]=_0x2bd35c[_0x185e('0x4e')][_0x185e('0x50')]?_0x2bd35c['attributes']:_0x25cf44[_0x185e('0x4d')];if(!_0x12a0e2['query'][_0x185e('0x51')](_0x185e('0x52'))){_0x2bd35c['limit']=qs[_0x185e('0x1e')](_0x12a0e2[_0x185e('0x49')][_0x185e('0x1e')]);_0x2bd35c['offset']=qs[_0x185e('0x53')](_0x12a0e2[_0x185e('0x49')][_0x185e('0x53')]);}_0x2bd35c[_0x185e('0x54')]=qs[_0x185e('0x55')](_0x12a0e2[_0x185e('0x49')][_0x185e('0x55')]);_0x2bd35c[_0x185e('0x56')]=qs[_0x185e('0x4b')](_[_0x185e('0x57')](_0x12a0e2['query'],_0x25cf44['filters']));_0x2bd35c[_0x185e('0x56')][_0x185e('0x6b')]=_0x58e9b2['id'];if(_0x12a0e2[_0x185e('0x49')][_0x185e('0x58')]){_0x2bd35c[_0x185e('0x56')]=_[_0x185e('0x59')](_0x2bd35c[_0x185e('0x56')],{'$or':_[_0x185e('0x43')](_0x2bd35c[_0x185e('0x4e')],function(_0x1e78b7){var _0x4a73f8={};_0x4a73f8[_0x1e78b7]={'$like':'%'+_0x12a0e2[_0x185e('0x49')][_0x185e('0x58')]+'%'};return _0x4a73f8;})});}_0x2bd35c=_['merge']({},_0x2bd35c,_0x12a0e2['options']);return db[_0x185e('0x6c')][_0x185e('0x1f')]({'where':_0x2bd35c['where']})[_0x185e('0x11')](function(_0x5cd230){_0x3f5be1[_0x185e('0x1f')]=_0x5cd230;if(_0x12a0e2[_0x185e('0x49')][_0x185e('0x5c')]){_0x2bd35c['include']=[{'all':!![]}];}return db[_0x185e('0x6c')]['findAll'](_0x2bd35c);})[_0x185e('0x11')](function(_0x4e1c21){_0x3f5be1[_0x185e('0x5e')]=_0x4e1c21;return _0x3f5be1;});}})[_0x185e('0x11')](respondWithFilteredResult(_0x5dab4,_0x2bd35c))['catch'](handleError(_0x5dab4,null));};exports[_0x185e('0x70')]=function(_0x4ff275,_0x531a96){return db[_0x185e('0x44')][_0x185e('0x63')]({'where':{'id':_0x4ff275[_0x185e('0x61')]['id']}})[_0x185e('0x11')](handleEntityNotFound(_0x531a96,null))[_0x185e('0x11')](function(_0x227c6c){if(_0x227c6c){return _0x227c6c[_0x185e('0x70')](_0x4ff275[_0x185e('0x49')][_0x185e('0x71')]);}})[_0x185e('0x11')](respondWithStatusCode(_0x531a96,null))['catch'](handleError(_0x531a96,null));};exports[_0x185e('0x72')]=function(_0x375d72,_0x1640d3){if(_0x375d72[_0x185e('0x65')]['id']){delete _0x375d72['body']['id'];}return db[_0x185e('0x44')][_0x185e('0x63')]({'where':{'id':_0x375d72[_0x185e('0x61')]['id']}})[_0x185e('0x11')](handleEntityNotFound(_0x1640d3,null))[_0x185e('0x11')](function(_0x2583b6){if(_0x2583b6){_0x375d72[_0x185e('0x65')]['MailAccountId']=_0x2583b6['id'];return db[_0x185e('0x73')][_0x185e('0x6d')](_0x375d72[_0x185e('0x65')]);}})[_0x185e('0x11')](respondWithResult(_0x1640d3,null))[_0x185e('0x5f')](handleError(_0x1640d3,null));};exports['getAnswers']=function(_0x12aa99,_0x223b5d){var _0x56405f={'raw':![],'where':{}};var _0x21f6ed={};var _0x2bff15={'count':0x0,'rows':[]};return db[_0x185e('0x44')]['findOne']({'where':{'id':_0x12aa99[_0x185e('0x61')]['id']}})[_0x185e('0x11')](handleEntityNotFound(_0x223b5d,null))[_0x185e('0x11')](function(_0x579d1e){if(_0x579d1e){_0x21f6ed[_0x185e('0x4d')]=_[_0x185e('0x4a')](db[_0x185e('0x73')]['rawAttributes']);_0x21f6ed['query']=_[_0x185e('0x4a')](_0x12aa99[_0x185e('0x49')]);_0x21f6ed['filters']=_[_0x185e('0x4c')](_0x21f6ed[_0x185e('0x4d')],_0x21f6ed[_0x185e('0x49')]);_0x56405f[_0x185e('0x4e')]=_[_0x185e('0x4c')](_0x21f6ed['model'],qs[_0x185e('0x4f')](_0x12aa99['query'][_0x185e('0x4f')]));_0x56405f[_0x185e('0x4e')]=_0x56405f[_0x185e('0x4e')][_0x185e('0x50')]?_0x56405f[_0x185e('0x4e')]:_0x21f6ed['model'];if(!_0x12aa99['query'][_0x185e('0x51')](_0x185e('0x52'))){_0x56405f[_0x185e('0x1e')]=qs[_0x185e('0x1e')](_0x12aa99[_0x185e('0x49')][_0x185e('0x1e')]);_0x56405f[_0x185e('0x53')]=qs['offset'](_0x12aa99[_0x185e('0x49')][_0x185e('0x53')]);}_0x56405f[_0x185e('0x54')]=qs[_0x185e('0x55')](_0x12aa99['query']['sort']);_0x56405f[_0x185e('0x56')]=qs['filters'](_[_0x185e('0x57')](_0x12aa99[_0x185e('0x49')],_0x21f6ed[_0x185e('0x4b')]));_0x56405f[_0x185e('0x56')][_0x185e('0x6b')]=_0x579d1e['id'];if(_0x12aa99['query'][_0x185e('0x58')]){_0x56405f[_0x185e('0x56')]=_[_0x185e('0x59')](_0x56405f['where'],{'$or':_[_0x185e('0x43')](_0x56405f[_0x185e('0x4e')],function(_0x1daffa){var _0x48ee69={};_0x48ee69[_0x1daffa]={'$like':'%'+_0x12aa99['query']['filter']+'%'};return _0x48ee69;})});}_0x56405f=_[_0x185e('0x59')]({},_0x56405f,_0x12aa99[_0x185e('0x5b')]);return db[_0x185e('0x73')][_0x185e('0x1f')]({'where':_0x56405f[_0x185e('0x56')]})[_0x185e('0x11')](function(_0x3c9a1d){_0x2bff15[_0x185e('0x1f')]=_0x3c9a1d;if(_0x12aa99['query']['includeAll']){_0x56405f[_0x185e('0x5d')]=[{'all':!![]}];}return db[_0x185e('0x73')]['findAll'](_0x56405f);})[_0x185e('0x11')](function(_0x3b56d2){_0x2bff15[_0x185e('0x5e')]=_0x3b56d2;return _0x2bff15;});}})[_0x185e('0x11')](respondWithFilteredResult(_0x223b5d,_0x56405f))[_0x185e('0x5f')](handleError(_0x223b5d,null));};exports[_0x185e('0x74')]=function(_0x1172b1,_0x3cdace){return db[_0x185e('0x44')][_0x185e('0x63')]({'where':{'id':_0x1172b1[_0x185e('0x61')]['id']}})['then'](handleEntityNotFound(_0x3cdace,null))[_0x185e('0x11')](function(_0x5160a7){if(_0x5160a7){return _0x5160a7['removeAnswers'](_0x1172b1[_0x185e('0x49')][_0x185e('0x71')]);}})[_0x185e('0x11')](respondWithStatusCode(_0x3cdace,null))['catch'](handleError(_0x3cdace,null));};exports[_0x185e('0x6d')]=function(_0x2ce86d,_0x2f74b9){var _0x22d7b2={'name':_0x2ce86d[_0x185e('0x65')][_0x185e('0x27')],'key':_0x2ce86d['body'][_0x185e('0x48')],'provider':_0x2ce86d['body'][_0x185e('0x66')]===_0x185e('0x67')?null:_0x2ce86d[_0x185e('0x65')][_0x185e('0x66')],'email':_0x2ce86d[_0x185e('0x65')][_0x185e('0x75')],'ListId':_0x2ce86d['body'][_0x185e('0x76')],'active':!_[_0x185e('0x77')](_0x2ce86d[_0x185e('0x65')][_0x185e('0x78')])?_0x2ce86d[_0x185e('0x65')]['active']:!![],'description':_0x2ce86d[_0x185e('0x65')]['description']||null};var _0xb9deb0=getAuthenticationOptions(_0x22d7b2[_0x185e('0x66')],_0x2ce86d['body']);_0x22d7b2['Imap']=_0xb9deb0[_0x185e('0x3d')];_0x22d7b2[_0x185e('0x3e')]=_0xb9deb0[_0x185e('0x3e')];return db['MailAccount'][_0x185e('0x6d')](_0x22d7b2,{'include':[{'model':db['MailServerOut'],'as':_0x185e('0x3e')},{'model':db[_0x185e('0x40')],'as':_0x185e('0x3d')}]})[_0x185e('0x11')](function(_0x2522dc){var _0xb84357=_0x2ce86d[_0x185e('0x32')][_0x185e('0x23')]({'plain':!![]});if(!_0xb84357)throw new Error(_0x185e('0x79'));if(_0xb84357['role']==='user'){var _0x510c0d=_0x2522dc['get']({'plain':!![]});return db[_0x185e('0x7a')][_0x185e('0x63')]({'where':{'name':_0x185e('0x7b'),'userProfileId':_0xb84357[_0x185e('0x7c')]},'raw':!![]})[_0x185e('0x11')](function(_0x1c5499){if(_0x1c5499&&_0x1c5499['autoAssociation']===0x0){return db['UserProfileResource'][_0x185e('0x6d')]({'name':_0x510c0d['name'],'resourceId':_0x510c0d['id'],'type':_0x1c5499[_0x185e('0x27')],'sectionId':_0x1c5499['id']},{})['then'](function(){return _0x2522dc;});}else{return _0x2522dc;}})['catch'](function(_0x4eaa7d){logger[_0x185e('0x16')](_0x185e('0x7d'),_0x4eaa7d);throw _0x4eaa7d;});}return _0x2522dc;})[_0x185e('0x11')](respondWithResult(_0x2f74b9,0xc9))['catch'](handleError(_0x2f74b9,null));};exports[_0x185e('0x7e')]=function(_0x39e3b9,_0x19cfea){return db[_0x185e('0x44')][_0x185e('0x6f')]({'where':{'id':_0x39e3b9['params']['id']}})[_0x185e('0x11')](handleEntityNotFound(_0x19cfea,null))[_0x185e('0x11')](function(_0x5dcc28){if(_0x5dcc28){return _0x5dcc28[_0x185e('0x7e')]();}return null;})['then'](respondWithResult(_0x19cfea,null))[_0x185e('0x5f')](handleError(_0x19cfea,null));};exports['addImap']=function(_0x294e74,_0x1cc52){if(_0x294e74[_0x185e('0x65')]['id']){delete _0x294e74['body']['id'];}return db[_0x185e('0x44')][_0x185e('0x63')]({'where':{'id':_0x294e74[_0x185e('0x61')]['id']}})['then'](handleEntityNotFound(_0x1cc52,null))['then'](function(_0xfb1db){if(_0xfb1db){_0x294e74[_0x185e('0x65')][_0x185e('0x6b')]=_0xfb1db['id'];return db[_0x185e('0x40')][_0x185e('0x6d')](_0x294e74['body']);}})[_0x185e('0x11')](respondWithResult(_0x1cc52,null))['catch'](handleError(_0x1cc52,null));};exports[_0x185e('0x7f')]=function(_0x53d21b,_0x544a20){return db[_0x185e('0x44')][_0x185e('0x6f')]({'where':{'id':_0x53d21b[_0x185e('0x61')]['id']}})[_0x185e('0x11')](handleEntityNotFound(_0x544a20,null))[_0x185e('0x11')](function(_0x3a3f91){if(_0x3a3f91){return _0x3a3f91[_0x185e('0x80')](null);}return null;})[_0x185e('0x11')](respondWithStatusCode(_0x544a20,null))[_0x185e('0x5f')](handleError(_0x544a20,null));};exports['getSmtp']=function(_0xf60987,_0x577040){return db[_0x185e('0x44')][_0x185e('0x6f')]({'where':{'id':_0xf60987[_0x185e('0x61')]['id']}})['then'](handleEntityNotFound(_0x577040,null))['then'](function(_0x12f5fb){if(_0x12f5fb){return _0x12f5fb['getSmtp']();}return null;})[_0x185e('0x11')](respondWithResult(_0x577040,null))['catch'](handleError(_0x577040,null));};exports[_0x185e('0x81')]=function(_0x5a8c1e,_0x538150){if(_0x5a8c1e[_0x185e('0x65')]['id']){delete _0x5a8c1e['body']['id'];}return db[_0x185e('0x44')][_0x185e('0x63')]({'where':{'id':_0x5a8c1e['params']['id']}})[_0x185e('0x11')](handleEntityNotFound(_0x538150,null))[_0x185e('0x11')](function(_0x16ebb9){if(_0x16ebb9){_0x5a8c1e[_0x185e('0x65')]['MailAccountId']=_0x16ebb9['id'];return db[_0x185e('0x41')][_0x185e('0x6d')](_0x5a8c1e[_0x185e('0x65')]);}})[_0x185e('0x11')](respondWithResult(_0x538150,null))[_0x185e('0x5f')](handleError(_0x538150,null));};exports[_0x185e('0x82')]=function(_0x55cfcc,_0x4a59ca){return db[_0x185e('0x44')][_0x185e('0x6f')]({'where':{'id':_0x55cfcc[_0x185e('0x61')]['id']}})[_0x185e('0x11')](handleEntityNotFound(_0x4a59ca,null))[_0x185e('0x11')](function(_0x1bd0eb){if(_0x1bd0eb){return _0x1bd0eb['setSmtp'](null);}return null;})['then'](respondWithStatusCode(_0x4a59ca,null))['catch'](handleError(_0x4a59ca,null));};exports['addInteraction']=function(_0x212174,_0x2d6135){return db[_0x185e('0x83')]['find']({'where':{'id':_0x212174[_0x185e('0x61')]['id']}})[_0x185e('0x11')](handleEntityNotFound(_0x2d6135,null))['then'](function(_0x12db9d){if(_0x12db9d){return _0x12db9d[_0x185e('0x84')](_0x212174[_0x185e('0x65')]['ids'],_[_0x185e('0x85')](_0x212174['body'],[_0x185e('0x71'),'id'])||{});}})['then'](respondWithResult(_0x2d6135,null))[_0x185e('0x5f')](handleError(_0x2d6135,null));};exports[_0x185e('0x86')]=function(_0x359f42,_0x107971){var _0x14cb71={'raw':![],'where':{}};var _0x550d3f={};var _0x57022e={'count':0x0,'rows':[]};return db[_0x185e('0x44')][_0x185e('0x6f')]({'where':{'id':_0x359f42[_0x185e('0x61')]['id']}})[_0x185e('0x11')](handleEntityNotFound(_0x107971,null))['then'](function(_0x22d5b6){if(_0x22d5b6){_0x550d3f['model']=_['keys'](db['MailInteraction']['rawAttributes']);_0x550d3f[_0x185e('0x49')]=_[_0x185e('0x4a')](_0x359f42[_0x185e('0x49')]);_0x550d3f['filters']=_[_0x185e('0x4c')](_0x550d3f[_0x185e('0x4d')],_0x550d3f[_0x185e('0x49')]);_0x14cb71[_0x185e('0x4e')]=_['intersection'](_0x550d3f[_0x185e('0x4d')],qs['fields'](_0x359f42[_0x185e('0x49')][_0x185e('0x4f')]));_0x14cb71['attributes']=_0x14cb71[_0x185e('0x4e')]['length']?_0x14cb71[_0x185e('0x4e')]:_0x550d3f['model'];if(!_0x359f42[_0x185e('0x49')]['hasOwnProperty'](_0x185e('0x52'))){_0x14cb71['limit']=qs[_0x185e('0x1e')](_0x359f42['query'][_0x185e('0x1e')]);_0x14cb71['offset']=qs['offset'](_0x359f42['query'][_0x185e('0x53')]);}_0x14cb71[_0x185e('0x54')]=qs[_0x185e('0x55')](_0x359f42[_0x185e('0x49')][_0x185e('0x55')]);_0x14cb71[_0x185e('0x56')]=qs[_0x185e('0x4b')](_[_0x185e('0x57')](_0x359f42[_0x185e('0x49')],_0x550d3f[_0x185e('0x4b')]));_0x14cb71[_0x185e('0x56')][_0x185e('0x6b')]=_0x22d5b6['id'];if(_0x359f42[_0x185e('0x49')][_0x185e('0x58')]){_0x14cb71[_0x185e('0x56')]=_['merge'](_0x14cb71['where'],{'$or':_[_0x185e('0x43')](_0x14cb71['attributes'],function(_0xb1dc3e){var _0x5bb252={};_0x5bb252[_0xb1dc3e]={'$like':'%'+_0x359f42[_0x185e('0x49')][_0x185e('0x58')]+'%'};return _0x5bb252;})});}_0x14cb71=_[_0x185e('0x59')]({},_0x14cb71,_0x359f42[_0x185e('0x5b')]);return db[_0x185e('0x83')]['count']({'where':_0x14cb71[_0x185e('0x56')]})[_0x185e('0x11')](function(_0x41c8df){_0x57022e[_0x185e('0x1f')]=_0x41c8df;if(_0x359f42[_0x185e('0x49')]['includeAll']){_0x14cb71[_0x185e('0x5d')]=[{'model':db['CmContact'],'as':'Contact','required':![]},{'model':db[_0x185e('0x87')],'as':_0x185e('0x88'),'attributes':[_0x185e('0x27'),_0x185e('0x89'),'internal'],'required':![]},{'model':db['Tag'],'as':_0x185e('0x8a'),'attributes':['id',_0x185e('0x27'),_0x185e('0x8b')],'where':_0x359f42[_0x185e('0x49')][_0x185e('0x8c')]?{'id':_0x359f42['query'][_0x185e('0x8c')]}:undefined,'required':_0x359f42['query'][_0x185e('0x8c')]?!![]:![]}];}return db[_0x185e('0x83')][_0x185e('0x8d')](_0x14cb71);})[_0x185e('0x11')](function(_0x31be71){_0x57022e['rows']=_0x31be71;return _0x57022e;});}})[_0x185e('0x11')](respondWithFilteredResult(_0x107971,_0x14cb71))[_0x185e('0x5f')](handleError(_0x107971,null));};exports[_0x185e('0x8e')]=function addApplications(_0x49788e,_0x198507){var _0x462c81=_0x49788e['params']['id'];var _0xe9e09d=_0x49788e[_0x185e('0x65')];var _0x6ef12e=0xc8;var _0x202813=null;return db[_0x185e('0x8f')][_0x185e('0x90')]({'isolationLevel':db[_0x185e('0x8f')]['Transaction'][_0x185e('0x91')][_0x185e('0x92')]},function(_0x1ac310){return db['MailAccount'][_0x185e('0x6f')]({'where':{'id':_0x462c81},'transaction':_0x1ac310})[_0x185e('0x11')](function(_0x29a9f0){if(_0x29a9f0){return db['MailApplication'][_0x185e('0x22')]({'where':{'MailAccountId':_0x462c81},'transaction':_0x1ac310})[_0x185e('0x11')](function(){var _0xd20726=_[_0x185e('0x43')](_0xe9e09d,function(_0x13b06d){_0x13b06d['MailAccountId']=_0x462c81;return _0x13b06d;});return db[_0x185e('0x93')][_0x185e('0x94')](_0xd20726,{'transaction':_0x1ac310});});}else{_0x6ef12e=0x194;_0x202813=[];}});})[_0x185e('0x11')](function(){if(_0x6ef12e!==0x194){return db['MailApplication'][_0x185e('0x95')]({'where':{'MailAccountId':_0x462c81},'order':'priority'})[_0x185e('0x11')](function(_0x31a285){_0x202813=_0x31a285;});}})['catch'](function(_0xd210e0){_0x6ef12e=0x1f4;logger[_0x185e('0x16')](_0xd210e0['stack']);if(_0xd210e0['name']){delete _0xd210e0[_0x185e('0x27')];}_0x202813=_0xd210e0;})[_0x185e('0x96')](function(){if(_0x202813===null){_0x198507[_0x185e('0x1a')](_0x6ef12e);}else{if(_0x6ef12e===0x1f4){_0x198507[_0x185e('0x1b')](_0x6ef12e)[_0x185e('0x97')](_0x202813);}else{_0x198507[_0x185e('0x1b')](_0x6ef12e)[_0x185e('0x1c')](_0x202813);}}});};exports[_0x185e('0x98')]=function(_0x234eed,_0x3977ad){var _0x591ba1={};var _0x186945={};var _0x78880e;var _0x3bf1da;return db[_0x185e('0x44')][_0x185e('0x6f')]({'where':{'id':_0x234eed[_0x185e('0x61')]['id']}})['then'](handleEntityNotFound(_0x3977ad,null))[_0x185e('0x11')](function(_0x5ad0fa){if(_0x5ad0fa){_0x78880e=_0x5ad0fa;_0x186945[_0x185e('0x4d')]=_[_0x185e('0x4a')](db['MailApplication'][_0x185e('0x45')]);_0x186945[_0x185e('0x49')]=_[_0x185e('0x4a')](_0x234eed[_0x185e('0x49')]);_0x186945[_0x185e('0x4b')]=_[_0x185e('0x4c')](_0x186945[_0x185e('0x4d')],_0x186945[_0x185e('0x49')]);_0x591ba1[_0x185e('0x4e')]=_[_0x185e('0x4c')](_0x186945[_0x185e('0x4d')],qs[_0x185e('0x4f')](_0x234eed['query'][_0x185e('0x4f')]));_0x591ba1[_0x185e('0x4e')]=_0x591ba1[_0x185e('0x4e')][_0x185e('0x50')]?_0x591ba1[_0x185e('0x4e')]:_0x186945[_0x185e('0x4d')];_0x591ba1['order']=qs[_0x185e('0x55')](_0x234eed[_0x185e('0x49')][_0x185e('0x55')]);_0x591ba1[_0x185e('0x56')]=qs[_0x185e('0x4b')](_[_0x185e('0x57')](_0x234eed[_0x185e('0x49')],_0x186945[_0x185e('0x4b')]));if(_0x234eed[_0x185e('0x49')][_0x185e('0x58')]){_0x591ba1[_0x185e('0x56')]=_[_0x185e('0x59')](_0x591ba1[_0x185e('0x56')],{'$or':_[_0x185e('0x43')](_0x591ba1[_0x185e('0x4e')],function(_0xfc558b){var _0x45a026={};_0x45a026[_0xfc558b]={'$like':'%'+_0x234eed['query'][_0x185e('0x58')]+'%'};return _0x45a026;})});}_0x591ba1=_['merge']({},_0x591ba1,_0x234eed[_0x185e('0x5b')]);return _0x78880e[_0x185e('0x98')](_0x591ba1);}})[_0x185e('0x11')](function(_0x117d03){if(_0x117d03){_0x3bf1da=_0x117d03['length'];if(!_0x234eed[_0x185e('0x49')][_0x185e('0x51')](_0x185e('0x52'))){_0x591ba1['limit']=qs[_0x185e('0x1e')](_0x234eed[_0x185e('0x49')][_0x185e('0x1e')]);_0x591ba1[_0x185e('0x53')]=qs[_0x185e('0x53')](_0x234eed[_0x185e('0x49')][_0x185e('0x53')]);}return _0x78880e['getApplications'](_0x591ba1);}})[_0x185e('0x11')](function(_0x2be3a9){if(_0x2be3a9){return _0x2be3a9?{'count':_0x3bf1da,'rows':_0x2be3a9}:null;}})[_0x185e('0x11')](respondWithResult(_0x3977ad,null))[_0x185e('0x5f')](handleError(_0x3977ad,null));};exports[_0x185e('0x99')]=function(_0x3077ca,_0x156f48){var _0x12b428={'raw':!![],'where':{}};var _0x1528f4={};var _0x3d44bf={'count':0x0,'rows':[]};return db['MailAccount'][_0x185e('0x6f')]({'where':{'id':_0x3077ca[_0x185e('0x61')]['id']}})[_0x185e('0x11')](handleEntityNotFound(_0x156f48,null))['then'](function(_0x33c021){if(_0x33c021){_0x1528f4[_0x185e('0x4d')]=_['keys'](db[_0x185e('0x9a')][_0x185e('0x45')]);_0x1528f4[_0x185e('0x49')]=_[_0x185e('0x4a')](_0x3077ca[_0x185e('0x49')]);_0x1528f4[_0x185e('0x4b')]=_[_0x185e('0x4c')](_0x1528f4['model'],_0x1528f4['query']);_0x12b428['attributes']=_['intersection'](_0x1528f4['model'],qs[_0x185e('0x4f')](_0x3077ca[_0x185e('0x49')][_0x185e('0x4f')]));_0x12b428['attributes']=_0x12b428[_0x185e('0x4e')]['length']?_0x12b428[_0x185e('0x4e')]:_0x1528f4['model'];if(!_0x3077ca[_0x185e('0x49')][_0x185e('0x51')](_0x185e('0x52'))){_0x12b428[_0x185e('0x1e')]=qs[_0x185e('0x1e')](_0x3077ca[_0x185e('0x49')]['limit']);_0x12b428[_0x185e('0x53')]=qs[_0x185e('0x53')](_0x3077ca[_0x185e('0x49')]['offset']);}_0x12b428['order']=qs[_0x185e('0x55')](_0x3077ca[_0x185e('0x49')]['sort']);_0x12b428[_0x185e('0x56')]=qs[_0x185e('0x4b')](_[_0x185e('0x57')](_0x3077ca[_0x185e('0x49')],_0x1528f4[_0x185e('0x4b')]));_0x12b428[_0x185e('0x56')][_0x185e('0x6b')]=_0x33c021['id'];if(_0x3077ca[_0x185e('0x49')][_0x185e('0x58')]){_0x12b428['where']=_[_0x185e('0x59')](_0x12b428[_0x185e('0x56')],{'$or':_[_0x185e('0x43')](_0x12b428[_0x185e('0x4e')],function(_0x1599c1){var _0x377bbc={};_0x377bbc[_0x1599c1]={'$like':'%'+_0x3077ca['query'][_0x185e('0x58')]+'%'};return _0x377bbc;})});}if(_0x3077ca[_0x185e('0x49')][_0x185e('0x9b')]){var _0x5b61b2=_0x3077ca[_0x185e('0x49')][_0x185e('0x9b')][_0x185e('0x9c')](',');var _0x311d08={};_0x311d08[_0x5b61b2[0x0]]={'$gte':moment(_0x5b61b2[0x1])[_0x185e('0x9d')](_0x185e('0x9e'))};_0x12b428[_0x185e('0x56')]=_['merge'](_0x12b428[_0x185e('0x56')],_0x311d08);}_0x12b428=_[_0x185e('0x59')]({},_0x12b428,_0x3077ca[_0x185e('0x5b')]);return db[_0x185e('0x9a')][_0x185e('0x1f')]({'where':_0x12b428[_0x185e('0x56')]})[_0x185e('0x11')](function(_0x230f3e){_0x3d44bf[_0x185e('0x1f')]=_0x230f3e;if(_0x3077ca[_0x185e('0x49')]['includeAll']){_0x12b428[_0x185e('0x5d')]=[{'all':!![]}];}return db['MailMessage'][_0x185e('0x8d')](_0x12b428);})['then'](function(_0x11c9e2){if(_0x3077ca[_0x185e('0x49')][_0x185e('0x9f')]===_0x185e('0xa0')){for(var _0x382e9d=0x0;_0x382e9d<_0x11c9e2[_0x185e('0x50')];_0x382e9d++){_0x11c9e2[_0x382e9d][_0x185e('0x65')]=juice(_0x11c9e2[_0x382e9d][_0x185e('0x65')]);}}_0x3d44bf[_0x185e('0x5e')]=_0x11c9e2;return _0x3d44bf;});}})['then'](respondWithFilteredResult(_0x156f48,_0x12b428))[_0x185e('0x5f')](handleError(_0x156f48,null));};exports['send']=function(_0x5852e3,_0x19eb7b){var _0x54f38a,_0x4f5907={},_0x1e87f3;if(_0x5852e3[_0x185e('0x65')]['to']){_0x1e87f3=_0x5852e3[_0x185e('0x65')]['to'][_0x185e('0x9c')](',')[0x0];}return db[_0x185e('0x44')][_0x185e('0x63')]({'where':{'id':_0x5852e3['params']['id']},'include':[{'model':db[_0x185e('0xa1')],'as':_0x185e('0xa2'),'include':[{'model':db[_0x185e('0xa3')],'as':_0x185e('0xa4'),'where':{'email':_0x1e87f3},'limit':0x1,'order':[[_0x185e('0xa5'),_0x185e('0xa6')]]}]},{'model':db[_0x185e('0x41')],'as':_0x185e('0x3e'),'raw':!![],'include':[{'model':db['CloudProvider'],'as':_0x185e('0xa7'),'raw':!![]}]}]})[_0x185e('0x11')](handleEntityNotFound(_0x19eb7b,null))[_0x185e('0x11')](function(_0x567e48){if(!_0x567e48)return;_0x54f38a=_0x567e48;if(!_0x567e48[_0x185e('0x3e')])throw new Error(_0x185e('0xa8'));if(_[_0x185e('0x77')](_0x5852e3['body'][_0x185e('0xa9')])){_0x5852e3[_0x185e('0x65')][_0x185e('0xa9')]=util[_0x185e('0x9d')](_0x185e('0xaa'),_0x567e48['name'],_0x567e48['email']||_0x567e48[_0x185e('0x3e')]['user']);}if(_0x5852e3[_0x185e('0x65')][_0x185e('0xab')]&&_0x5852e3[_0x185e('0x65')][_0x185e('0xab')][_0x185e('0x50')]){for(var _0x54a754=0x0;_0x54a754<_0x5852e3[_0x185e('0x65')]['attachments']['length'];_0x54a754+=0x1){_0x5852e3[_0x185e('0x65')][_0x185e('0xab')][_0x54a754]={'filename':_0x5852e3[_0x185e('0x65')]['attachments'][_0x54a754][_0x185e('0x27')],'path':path['join'](config['root'],_0x185e('0xac'),_0x5852e3[_0x185e('0x65')][_0x185e('0xab')][_0x54a754]['basename'])};}}var _0x4e16d6=_0x567e48[_0x185e('0xad')]();return respondWithRpcPromise(_0x185e('0xae'),_0x185e('0xaf'),{'account':_0x4e16d6,'message':_0x5852e3[_0x185e('0x65')]});})['then'](function(_0x1c1a98){if(!_0x1c1a98)return;_0x4f5907=_0x1c1a98;if(!_0x54f38a[_0x185e('0xa2')])throw new Error('List\x20not\x20found');if(_0x54f38a[_0x185e('0xa2')][_0x185e('0xa4')][_0x185e('0x50')])return _0x54f38a[_0x185e('0xa2')][_0x185e('0xa4')][0x0];return db[_0x185e('0xa3')][_0x185e('0x6d')](_[_0x185e('0xb')](_0x5852e3[_0x185e('0x65')],{'firstName':_0x5852e3[_0x185e('0x65')]['to'],'email':_0x5852e3[_0x185e('0x65')]['to'],'phone':_0x5852e3['body']['to'],'ListId':_0x54f38a[_0x185e('0x76')]}));})[_0x185e('0x11')](function(_0x5d2abd){if(!_0x5d2abd)return;var _0x26ea30={'UserId':_0x5852e3[_0x185e('0x32')]['id'],'ContactId':_0x5d2abd['id'],'MailAccountId':_0x54f38a['id'],'inReplyTo':_0x4f5907[_0x185e('0xb0')],'to':_0x5852e3[_0x185e('0x65')][_0x185e('0xa9')],'cc':_0x5852e3[_0x185e('0x65')]['cc'],'subject':_0x5852e3[_0x185e('0x65')][_0x185e('0xb1')],'attach':_0x5852e3[_0x185e('0x65')][_0x185e('0xb2')],'firstMsgDirection':_0x185e('0xb3'),'lastMsgAt':moment()[_0x185e('0x9d')](_0x185e('0x9e')),'lastMsgDirection':_0x185e('0xb3'),'Messages':[_[_0x185e('0x59')](_0x5852e3['body'],{'messageId':_0x4f5907[_0x185e('0xb0')],'sentAt':moment()[_0x185e('0x9d')](_0x185e('0x9e')),'read':!![],'MailAccountId':_0x54f38a['id'],'UserId':_0x5852e3[_0x185e('0x32')]['id'],'ContactId':_0x5d2abd['id']})]};if(_0x5852e3[_0x185e('0x65')][_0x185e('0xb4')]){_0x26ea30=_[_0x185e('0x59')](_0x26ea30,_0x5852e3['body'][_0x185e('0xb4')]);}return db[_0x185e('0x83')][_0x185e('0x6d')](_0x26ea30,{'include':[{'model':db['MailMessage'],'as':_0x185e('0xb5')}]});})[_0x185e('0x11')](respondWithResult(_0x19eb7b,null))[_0x185e('0x5f')](handleError(_0x19eb7b,null));};exports[_0x185e('0xb6')]=function(_0x31c17e,_0x5211b0){return db[_0x185e('0x44')][_0x185e('0x63')]({'where':{'id':_0x31c17e[_0x185e('0x61')]['id']},'include':[{'model':db[_0x185e('0x41')],'as':_0x185e('0x3e'),'raw':!![],'include':[{'model':db[_0x185e('0xa7')],'as':_0x185e('0xa7'),'raw':!![]}]}]})[_0x185e('0x11')](handleEntityNotFound(_0x5211b0,null))[_0x185e('0x11')](function(_0x401a93){if(!_0x401a93[_0x185e('0x3e')])return;var _0x119a79=_0x401a93['getSmtpOptions']();return respondWithRpcPromise(_0x185e('0xb7'),_0x185e('0xb6'),{'account':_0x119a79});})['then'](respondWithResult(_0x5211b0,null))[_0x185e('0x5f')](handleError(_0x5211b0,null));};exports[_0x185e('0x22')]=function(_0x192ebc,_0x2efe58){return db['MailAccount'][_0x185e('0x63')]({'where':{'id':_0x192ebc['params']['id']}})['then'](handleEntityNotFound(_0x2efe58,null))['then'](function(_0x58cd6f){if(_0x58cd6f&&_0x58cd6f[_0x185e('0x3b')]){throw new db[(_0x185e('0xb8'))]['ValidationError'](_0x185e('0xb9'));}return _0x58cd6f;})[_0x185e('0x11')](removeEntity(_0x2efe58,null))[_0x185e('0x5f')](handleError(_0x2efe58,null));};exports[_0x185e('0xba')]=function(_0x545d62,_0x4757c1){return db[_0x185e('0x44')][_0x185e('0x63')]({'where':{'id':_0x545d62['params']['id']}})['then'](handleEntityNotFound(_0x4757c1,null))[_0x185e('0x11')](function(_0xe75d71){if(_0xe75d71){return _0xe75d71[_0x185e('0xba')](_0x545d62['body'][_0x185e('0x71')],_[_0x185e('0x85')](_0x545d62[_0x185e('0x65')],['ids','id'])||{})['spread'](function(_0x26adeb){for(var _0xe99bce=0x0;_0xe99bce<_0x545d62['body']['ids'][_0x185e('0x50')];_0xe99bce+=0x1){socket[_0x185e('0xbb')](_0x185e('0xbc'),{'UserId':Number(_0x545d62[_0x185e('0x65')][_0x185e('0x71')][_0xe99bce]),'MailAccountId':Number(_0x545d62[_0x185e('0x61')]['id'])});}return _0x26adeb;});}})['then'](respondWithResult(_0x4757c1,null))[_0x185e('0x5f')](handleError(_0x4757c1,null));};exports[_0x185e('0xbd')]=function(_0x55aa03,_0x56b2f6){return db['MailAccount'][_0x185e('0x63')]({'where':{'id':_0x55aa03[_0x185e('0x61')]['id']}})[_0x185e('0x11')](handleEntityNotFound(_0x56b2f6,null))[_0x185e('0x11')](function(_0x183ac9){if(_0x183ac9){return _0x183ac9[_0x185e('0xbd')](_0x55aa03[_0x185e('0x49')][_0x185e('0x71')])[_0x185e('0x11')](function(){if(_['isArray'](_0x55aa03['query'][_0x185e('0x71')])){for(var _0x5ea9da=0x0;_0x5ea9da<_0x55aa03[_0x185e('0x49')][_0x185e('0x71')][_0x185e('0x50')];_0x5ea9da+=0x1){socket['emit'](_0x185e('0xbe'),{'UserId':Number(_0x55aa03['query'][_0x185e('0x71')][_0x5ea9da]),'MailAccountId':Number(_0x55aa03[_0x185e('0x61')]['id'])});}}else{socket[_0x185e('0xbb')]('userMailAccount:remove',{'UserId':Number(_0x55aa03['query']['ids']),'MailAccountId':Number(_0x55aa03['params']['id'])});}});}})[_0x185e('0x11')](respondWithStatusCode(_0x56b2f6,null))[_0x185e('0x5f')](handleError(_0x56b2f6,null));};exports['getAgents']=function(_0x5c2ccc,_0x2b1acc){var _0x4ce91a={};var _0x137458={};var _0x4cb4f1;var _0x32590f;return db[_0x185e('0x44')]['findOne']({'where':{'id':_0x5c2ccc[_0x185e('0x61')]['id']}})['then'](handleEntityNotFound(_0x2b1acc,null))[_0x185e('0x11')](function(_0xfcfd78){if(_0xfcfd78){_0x4cb4f1=_0xfcfd78;_0x137458[_0x185e('0x4d')]=_['keys'](db['User']['rawAttributes']);_0x137458[_0x185e('0x49')]=_[_0x185e('0x4a')](_0x5c2ccc['query']);_0x137458[_0x185e('0x4b')]=_[_0x185e('0x4c')](_0x137458[_0x185e('0x4d')],_0x137458['query']);_0x4ce91a[_0x185e('0x4e')]=_[_0x185e('0x4c')](_0x137458[_0x185e('0x4d')],qs[_0x185e('0x4f')](_0x5c2ccc[_0x185e('0x49')]['fields']));_0x4ce91a[_0x185e('0x4e')]=_0x4ce91a[_0x185e('0x4e')][_0x185e('0x50')]?_0x4ce91a[_0x185e('0x4e')]:_0x137458['model'];_0x4ce91a[_0x185e('0x54')]=qs['sort'](_0x5c2ccc[_0x185e('0x49')]['sort']);_0x4ce91a['where']=qs[_0x185e('0x4b')](_[_0x185e('0x57')](_0x5c2ccc[_0x185e('0x49')],_0x137458[_0x185e('0x4b')]));if(_0x5c2ccc[_0x185e('0x49')][_0x185e('0x58')]){_0x4ce91a[_0x185e('0x56')]=_[_0x185e('0x59')](_0x4ce91a[_0x185e('0x56')],{'$or':_['map'](_0x4ce91a[_0x185e('0x4e')],function(_0x15ccb4){var _0x5305ed={};_0x5305ed[_0x15ccb4]={'$like':'%'+_0x5c2ccc['query']['filter']+'%'};return _0x5305ed;})});}_0x4ce91a=_['merge']({},_0x4ce91a,_0x5c2ccc[_0x185e('0x5b')]);return _0x4cb4f1['getAgents'](_0x4ce91a);}})[_0x185e('0x11')](function(_0x1e4968){if(_0x1e4968){_0x32590f=_0x1e4968[_0x185e('0x50')];if(!_0x5c2ccc[_0x185e('0x49')][_0x185e('0x51')](_0x185e('0x52'))){_0x4ce91a[_0x185e('0x1e')]=qs[_0x185e('0x1e')](_0x5c2ccc['query']['limit']);_0x4ce91a[_0x185e('0x53')]=qs[_0x185e('0x53')](_0x5c2ccc['query']['offset']);}return _0x4cb4f1['getAgents'](_0x4ce91a);}})[_0x185e('0x11')](function(_0x4afadb){if(_0x4afadb){return _0x4afadb?{'count':_0x32590f,'rows':_0x4afadb}:null;}})[_0x185e('0x11')](respondWithResult(_0x2b1acc,null))[_0x185e('0x5f')](handleError(_0x2b1acc,null));};
\ No newline at end of file
+var _0x3e1c=['length','Contact','fullname','internal','Tags','tag','addApplications','sequelize','Transaction','ISOLATION_LEVELS','READ_COMMITTED','destroy','MailApplication','bulkCreate','findAndCountAll','priority','finally','getApplications','getMessages','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','MailMessage','inlineCss','List','Contacts','updatedAt','DESC','CloudProvider','from','%s\x20<%s>','attachments','join','server/files/attachments','getSmtpOptions','sendMail','List\x20not\x20found','CmContact','messageId','subject','attach','out','Interaction','Messages','verifySmtp','VerifySmtp','addAgents','spread','emit','userMailAccount:save','removeAgents','userMailAccount:remove','getAgents','moment','bluebird','util','path','lodash','juice','ioredis','../../components/parsers/qs','api','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','jayson/promise','client','info','MailAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','get','MailAccounts','then','stack','name','send','gmail','imap.gmail.com','yahoo','imap.mail.yahoo.com','hotmail','outlook.office365.com','Unknown\x20email\x20service\x20provider','smtp.gmail.com','smtp.mail.yahoo.com','smtp-mail.outlook.com','outlook365','smtp.office365.com','user','password','pass','modernAuthentication','CloudProviderId','host','port','secure','service','authentication','Imap','Smtp','index','MailServerOut','Pause','mandatoryDispositionPause','map','MailAccount','rawAttributes','fieldName','type','model','query','keys','filters','intersection','fields','attributes','nolimit','order','sort','where','filter','merge','options','includeAll','include','findAll','show','params','MailServerIn','catch','update','body','provider','custom','find','Mail\x20Account\x20not\x20found','describe','addDisposition','MailAccountId','Disposition','create','getDispositions','findOne','hasOwnProperty','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','pick','rows','key','email','ListId','isNil','active','description','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getImap','addImap','removeImap','setImap','getSmtp','removeSmtp','setSmtp','addInteraction','MailInteraction','omit','getInteractions'];(function(_0x414124,_0x12d9c1){var _0x40032a=function(_0x15ecf5){while(--_0x15ecf5){_0x414124['push'](_0x414124['shift']());}};_0x40032a(++_0x12d9c1);}(_0x3e1c,0x1ba));var _0xc3e1=function(_0x1b4731,_0x51f4b5){_0x1b4731=_0x1b4731-0x0;var _0x43133a=_0x3e1c[_0x1b4731];return _0x43133a;};'use strict';var moment=require(_0xc3e1('0x0'));var BPromise=require(_0xc3e1('0x1'));var util=require(_0xc3e1('0x2'));var path=require(_0xc3e1('0x3'));var _=require(_0xc3e1('0x4'));var juice=require(_0xc3e1('0x5'));var Redis=require(_0xc3e1('0x6'));var qs=require(_0xc3e1('0x7'));var logger=require('../../config/logger')(_0xc3e1('0x8'));var config=require(_0xc3e1('0x9'));var db=require(_0xc3e1('0xa'))['db'];config[_0xc3e1('0xb')]=_[_0xc3e1('0xc')](config['redis'],{'host':_0xc3e1('0xd'),'port':0x18eb});var socket=require(_0xc3e1('0xe'))(new Redis(config[_0xc3e1('0xb')]));require('./mailAccount.socket')[_0xc3e1('0xf')](socket);var jayson=require(_0xc3e1('0x10'));var client=jayson[_0xc3e1('0x11')]['http']({'port':0x232b});function respondWithRpcPromise(_0x1570a8,_0x1ff3ce,_0x42ceff,_0x567560){return new BPromise(function(_0x53c036,_0x230b99){var _0x34372=_0x567560||client;return _0x34372['request'](_0x1570a8,_0x42ceff)['then'](function(_0x44d03b){logger[_0xc3e1('0x12')](_0xc3e1('0x13'),_0x1ff3ce,_0xc3e1('0x14'));logger[_0xc3e1('0x15')]('MailAccount,\x20%s,\x20%s,\x20%s',_0x1ff3ce,_0xc3e1('0x14'),JSON[_0xc3e1('0x16')](_0x44d03b));if(_0x44d03b[_0xc3e1('0x17')]){if(_0x44d03b[_0xc3e1('0x17')][_0xc3e1('0x18')]===0x1f4){logger[_0xc3e1('0x17')](_0xc3e1('0x13'),_0x1ff3ce,_0x44d03b[_0xc3e1('0x17')][_0xc3e1('0x19')]);return _0x230b99(_0x44d03b[_0xc3e1('0x17')][_0xc3e1('0x19')]);}logger[_0xc3e1('0x17')]('MailAccount,\x20%s,\x20%s',_0x1ff3ce,_0x44d03b[_0xc3e1('0x17')][_0xc3e1('0x19')]);return _0x53c036(_0x44d03b[_0xc3e1('0x17')][_0xc3e1('0x19')]);}else{logger[_0xc3e1('0x12')](_0xc3e1('0x13'),_0x1ff3ce,'request\x20sent');_0x53c036(_0x44d03b[_0xc3e1('0x1a')][_0xc3e1('0x19')]);}})['catch'](function(_0x55cb62){logger[_0xc3e1('0x17')](_0xc3e1('0x13'),_0x1ff3ce,_0x55cb62);_0x230b99(_0x55cb62);});});}function respondWithStatusCode(_0x7911aa,_0x12dbd5){_0x12dbd5=_0x12dbd5||0xcc;return function(_0x132eca){if(_0x132eca){return _0x7911aa[_0xc3e1('0x1b')](_0x12dbd5);}return _0x7911aa[_0xc3e1('0x1c')](_0x12dbd5)[_0xc3e1('0x1d')]();};}function respondWithResult(_0x4ab842,_0x41f829){_0x41f829=_0x41f829||0xc8;return function(_0xea27dd){if(_0xea27dd){return _0x4ab842[_0xc3e1('0x1c')](_0x41f829)[_0xc3e1('0x1e')](_0xea27dd);}};}function respondWithFilteredResult(_0x431217,_0x467849){return function(_0x879a1f){if(_0x879a1f){var _0x3212fd=typeof _0x467849[_0xc3e1('0x1f')]===_0xc3e1('0x20')&&typeof _0x467849['limit']==='undefined';var _0x1e8113=_0x879a1f[_0xc3e1('0x21')];var _0x25abbe=_0x3212fd?0x0:_0x467849[_0xc3e1('0x1f')];var _0x24f194=_0x3212fd?_0x879a1f[_0xc3e1('0x21')]:_0x467849['offset']+_0x467849[_0xc3e1('0x22')];var _0x1d746b;if(_0x24f194>=_0x1e8113){_0x24f194=_0x1e8113;_0x1d746b=0xc8;}else{_0x1d746b=0xce;}_0x431217[_0xc3e1('0x1c')](_0x1d746b);return _0x431217[_0xc3e1('0x23')](_0xc3e1('0x24'),_0x25abbe+'-'+_0x24f194+'/'+_0x1e8113)[_0xc3e1('0x1e')](_0x879a1f);}return null;};}function saveUpdates(_0x181405){return function(_0x5dbf22){if(_0x5dbf22){return _0x5dbf22['update'](_0x181405)['then'](function(_0x1abc44){return _0x1abc44;});}return null;};}function removeEntity(_0x86ea8b){return function(_0x1d34ec){if(_0x1d34ec){return _0x1d34ec['destroy']()['then'](function(){var _0x1ed8c9=_0x1d34ec[_0xc3e1('0x25')]({'plain':!![]});var _0x25bc0e=_0xc3e1('0x26');return db['UserProfileResource']['destroy']({'where':{'type':_0x25bc0e,'resourceId':_0x1ed8c9['id']}})['then'](function(){return _0x1d34ec;});})[_0xc3e1('0x27')](function(){_0x86ea8b['status'](0xcc)[_0xc3e1('0x1d')]();});}};}function handleEntityNotFound(_0x204651){return function(_0x524d5d){if(!_0x524d5d){_0x204651[_0xc3e1('0x1b')](0x194);}return _0x524d5d;};}function handleError(_0x4f0da6,_0x2ca6b7){_0x2ca6b7=_0x2ca6b7||0x1f4;return function(_0x2e566b){logger[_0xc3e1('0x17')](_0x2e566b[_0xc3e1('0x28')]);if(_0x2e566b[_0xc3e1('0x29')]){delete _0x2e566b[_0xc3e1('0x29')];}_0x4f0da6['status'](_0x2ca6b7)[_0xc3e1('0x2a')](_0x2e566b);};}function getImapHost(_0x19694f){switch(_0x19694f){case _0xc3e1('0x2b'):return _0xc3e1('0x2c');case _0xc3e1('0x2d'):return _0xc3e1('0x2e');case _0xc3e1('0x2f'):return'imap-mail.outlook.com';case'outlook365':return _0xc3e1('0x30');}throw new Error(_0xc3e1('0x31'),_0x19694f);}function getSmtpHost(_0x119db1){switch(_0x119db1){case _0xc3e1('0x2b'):return _0xc3e1('0x32');case _0xc3e1('0x2d'):return _0xc3e1('0x33');case _0xc3e1('0x2f'):return _0xc3e1('0x34');case _0xc3e1('0x35'):return _0xc3e1('0x36');}throw new Error(_0xc3e1('0x31'),_0x119db1);}function getAuthenticationOptions(_0x36e02d,_0x51e0c5){var _0x26d5b3={};var _0x107fa4={};if(_0x36e02d){_0x26d5b3[_0xc3e1('0x37')]=_0x107fa4[_0xc3e1('0x37')]=_0x51e0c5['username'];_0x26d5b3[_0xc3e1('0x38')]=_0x107fa4[_0xc3e1('0x39')]=_0x51e0c5['password'];if(_0x51e0c5['modernAuthentication']){_0x26d5b3[_0xc3e1('0x3a')]=_0x107fa4['modernAuthentication']=!![];_0x26d5b3[_0xc3e1('0x3b')]=_0x107fa4[_0xc3e1('0x3b')]=_0x51e0c5[_0xc3e1('0x3b')];_0x26d5b3[_0xc3e1('0x38')]=_0x107fa4[_0xc3e1('0x39')]=null;}else{_0x26d5b3[_0xc3e1('0x3b')]=_0x107fa4[_0xc3e1('0x3b')]=null;}_0x26d5b3[_0xc3e1('0x3c')]=getImapHost(_0x36e02d);_0x26d5b3['port']=0x3e1;_0x107fa4[_0xc3e1('0x3c')]=getSmtpHost(_0x36e02d);_0x107fa4[_0xc3e1('0x3d')]=0x24b;_0x107fa4[_0xc3e1('0x3e')]=![];_0x26d5b3[_0xc3e1('0x3f')]=_0x107fa4[_0xc3e1('0x3f')]=null;}else{if(_0x51e0c5[_0xc3e1('0x40')]){_0x26d5b3[_0xc3e1('0x37')]=_0x107fa4[_0xc3e1('0x37')]=_0x51e0c5['username'];_0x26d5b3['password']=_0x107fa4[_0xc3e1('0x39')]=_0x51e0c5['password'];}else{_0x26d5b3[_0xc3e1('0x40')]=_0x107fa4['authentication']=![];_0x26d5b3[_0xc3e1('0x37')]=_0x107fa4[_0xc3e1('0x37')]=null;_0x26d5b3[_0xc3e1('0x38')]=_0x107fa4[_0xc3e1('0x39')]=null;}_0x26d5b3['host']=_0x51e0c5[_0xc3e1('0x41')][_0xc3e1('0x3c')];_0x26d5b3['port']=_0x51e0c5[_0xc3e1('0x41')][_0xc3e1('0x3d')];_0x107fa4['host']=_0x51e0c5[_0xc3e1('0x42')]['host'];_0x107fa4[_0xc3e1('0x3d')]=_0x51e0c5[_0xc3e1('0x42')]['port'];}return{'Imap':_0x26d5b3,'Smtp':_0x107fa4};}exports[_0xc3e1('0x43')]=function(_0x17bc7d,_0x4e5ba2){var _0x5d4b32={'include':[{'model':db['MailServerIn'],'as':'Imap'},{'model':db[_0xc3e1('0x44')],'as':'Smtp'},{'model':db[_0xc3e1('0x45')],'as':_0xc3e1('0x46')}]},_0x43df41={},_0x21ca8f={'count':0x0,'rows':[]};var _0x38507a=_[_0xc3e1('0x47')](db[_0xc3e1('0x48')][_0xc3e1('0x49')],function(_0x7d469a){return{'name':_0x7d469a[_0xc3e1('0x4a')],'type':_0x7d469a[_0xc3e1('0x4b')]['key']};});_0x43df41[_0xc3e1('0x4c')]=_[_0xc3e1('0x47')](_0x38507a,_0xc3e1('0x29'));_0x43df41[_0xc3e1('0x4d')]=_[_0xc3e1('0x4e')](_0x17bc7d['query']);_0x43df41[_0xc3e1('0x4f')]=_[_0xc3e1('0x50')](_0x43df41[_0xc3e1('0x4c')],_0x43df41[_0xc3e1('0x4d')]);_0x5d4b32['attributes']=_[_0xc3e1('0x50')](_0x43df41[_0xc3e1('0x4c')],qs[_0xc3e1('0x51')](_0x17bc7d[_0xc3e1('0x4d')][_0xc3e1('0x51')]));_0x5d4b32[_0xc3e1('0x52')]=_0x5d4b32[_0xc3e1('0x52')]['length']?_0x5d4b32[_0xc3e1('0x52')]:_0x43df41[_0xc3e1('0x4c')];if(!_0x17bc7d[_0xc3e1('0x4d')]['hasOwnProperty'](_0xc3e1('0x53'))){_0x5d4b32[_0xc3e1('0x22')]=qs[_0xc3e1('0x22')](_0x17bc7d[_0xc3e1('0x4d')][_0xc3e1('0x22')]);_0x5d4b32[_0xc3e1('0x1f')]=qs[_0xc3e1('0x1f')](_0x17bc7d[_0xc3e1('0x4d')][_0xc3e1('0x1f')]);}_0x5d4b32[_0xc3e1('0x54')]=qs[_0xc3e1('0x55')](_0x17bc7d[_0xc3e1('0x4d')][_0xc3e1('0x55')]);_0x5d4b32[_0xc3e1('0x56')]=qs[_0xc3e1('0x4f')](_['pick'](_0x17bc7d[_0xc3e1('0x4d')],_0x43df41[_0xc3e1('0x4f')]),_0x38507a);if(_0x17bc7d[_0xc3e1('0x4d')][_0xc3e1('0x57')]){_0x5d4b32[_0xc3e1('0x56')]=_[_0xc3e1('0x58')](_0x5d4b32[_0xc3e1('0x56')],{'$or':_[_0xc3e1('0x47')](_0x38507a,function(_0x134be9){if(_0x134be9['type']!=='VIRTUAL'){var _0x50b3f0={};_0x50b3f0[_0x134be9[_0xc3e1('0x29')]]={'$like':'%'+_0x17bc7d[_0xc3e1('0x4d')][_0xc3e1('0x57')]+'%'};return _0x50b3f0;}})});}_0x5d4b32=_[_0xc3e1('0x58')]({},_0x5d4b32,_0x17bc7d[_0xc3e1('0x59')]);var _0x3c2466={'where':_0x5d4b32[_0xc3e1('0x56')]};return db[_0xc3e1('0x48')][_0xc3e1('0x21')](_0x3c2466)[_0xc3e1('0x27')](function(_0xa5eae6){_0x21ca8f[_0xc3e1('0x21')]=_0xa5eae6;if(_0x17bc7d[_0xc3e1('0x4d')][_0xc3e1('0x5a')]){_0x5d4b32[_0xc3e1('0x5b')]=[{'all':!![]}];}return db[_0xc3e1('0x48')][_0xc3e1('0x5c')](_0x5d4b32);})[_0xc3e1('0x27')](function(_0x348236){_0x21ca8f['rows']=_0x348236;return _0x21ca8f;})['then'](respondWithFilteredResult(_0x4e5ba2,_0x5d4b32))['catch'](handleError(_0x4e5ba2,null));};exports[_0xc3e1('0x5d')]=function(_0x1605df,_0x24b86a){var _0x38b6ff={'raw':![],'where':{'id':_0x1605df[_0xc3e1('0x5e')]['id']},'include':[{'model':db[_0xc3e1('0x5f')],'as':_0xc3e1('0x41')},{'model':db[_0xc3e1('0x44')],'as':_0xc3e1('0x42')},{'model':db[_0xc3e1('0x45')],'as':'mandatoryDispositionPause'}]},_0xb01784={};_0xb01784[_0xc3e1('0x4c')]=_['keys'](db[_0xc3e1('0x48')]['rawAttributes']);_0xb01784['query']=_[_0xc3e1('0x4e')](_0x1605df[_0xc3e1('0x4d')]);_0xb01784[_0xc3e1('0x4f')]=_[_0xc3e1('0x50')](_0xb01784[_0xc3e1('0x4c')],_0xb01784[_0xc3e1('0x4d')]);_0x38b6ff[_0xc3e1('0x52')]=_[_0xc3e1('0x50')](_0xb01784[_0xc3e1('0x4c')],qs[_0xc3e1('0x51')](_0x1605df[_0xc3e1('0x4d')][_0xc3e1('0x51')]));_0x38b6ff[_0xc3e1('0x52')]=_0x38b6ff[_0xc3e1('0x52')]['length']?_0x38b6ff[_0xc3e1('0x52')]:_0xb01784['model'];if(_0x1605df[_0xc3e1('0x4d')][_0xc3e1('0x5a')]){_0x38b6ff[_0xc3e1('0x5b')]=[{'all':!![]}];}_0x38b6ff=_[_0xc3e1('0x58')]({},_0x38b6ff,_0x1605df[_0xc3e1('0x59')]);return db[_0xc3e1('0x48')]['find'](_0x38b6ff)[_0xc3e1('0x27')](handleEntityNotFound(_0x24b86a,null))[_0xc3e1('0x27')](respondWithResult(_0x24b86a,null))[_0xc3e1('0x60')](handleError(_0x24b86a,null));};exports[_0xc3e1('0x61')]=function(_0x10dfb0,_0x5c954a){if(_0x10dfb0[_0xc3e1('0x62')]['id']){delete _0x10dfb0['body']['id'];}var _0x56e50c=_0x10dfb0['body'][_0xc3e1('0x63')]===_0xc3e1('0x64')?null:_0x10dfb0[_0xc3e1('0x62')]['provider'];var _0x285d01=_0x10dfb0['body'][_0xc3e1('0x41')]||{};var _0x41b828=_0x10dfb0['body']['Smtp']||{};if(_0x56e50c){_0x285d01[_0xc3e1('0x3c')]=getImapHost(_0x56e50c);_0x285d01[_0xc3e1('0x3d')]=0x3e1;_0x41b828['host']=getSmtpHost(_0x56e50c);_0x41b828[_0xc3e1('0x3d')]=0x24b;_0x41b828['secure']=![];}if(_0x41b828[_0xc3e1('0x3a')]){_0x41b828[_0xc3e1('0x3e')]=![];}else{_0x41b828[_0xc3e1('0x3b')]=null;}if(!_0x285d01[_0xc3e1('0x3a')])_0x285d01[_0xc3e1('0x3b')]=null;_0x10dfb0[_0xc3e1('0x62')][_0xc3e1('0x41')]=_0x285d01;_0x10dfb0['body'][_0xc3e1('0x42')]=_0x41b828;return db[_0xc3e1('0x48')][_0xc3e1('0x65')]({'where':{'id':_0x10dfb0[_0xc3e1('0x5e')]['id']},'include':[{'model':db[_0xc3e1('0x5f')],'as':'Imap'},{'model':db[_0xc3e1('0x44')],'as':_0xc3e1('0x42')},{'model':db['Pause'],'as':'mandatoryDispositionPause'}]})[_0xc3e1('0x27')](handleEntityNotFound(_0x5c954a,null))[_0xc3e1('0x27')](function(_0x6e7c9){if(!_0x6e7c9)throw new Error(_0xc3e1('0x66'));if(_0x6e7c9[_0xc3e1('0x3f')])delete _0x10dfb0[_0xc3e1('0x62')]['Imap'];return _0x6e7c9;})['then'](saveUpdates(_0x10dfb0[_0xc3e1('0x62')],null))[_0xc3e1('0x27')](function(_0x2e9499){if(!_0x10dfb0[_0xc3e1('0x62')][_0xc3e1('0x41')])return _0x2e9499;return db[_0xc3e1('0x5f')]['update'](_0x10dfb0[_0xc3e1('0x62')][_0xc3e1('0x41')],{'where':{'MailAccountId':_0x2e9499['id']}})[_0xc3e1('0x27')](function(){return _0x2e9499;});})['then'](function(_0x4c5a81){if(!_0x10dfb0[_0xc3e1('0x62')][_0xc3e1('0x42')])return _0x4c5a81;return db[_0xc3e1('0x44')]['update'](_0x10dfb0[_0xc3e1('0x62')][_0xc3e1('0x42')],{'where':{'MailAccountId':_0x4c5a81['id']}})[_0xc3e1('0x27')](function(){return _0x4c5a81;});})[_0xc3e1('0x27')](respondWithResult(_0x5c954a,null))[_0xc3e1('0x60')](handleError(_0x5c954a,null));};exports[_0xc3e1('0x67')]=function(_0x166d91,_0x5a253a){return db[_0xc3e1('0x48')]['describe']()[_0xc3e1('0x27')](respondWithResult(_0x5a253a,null))[_0xc3e1('0x60')](handleError(_0x5a253a,null));};exports[_0xc3e1('0x68')]=function(_0x3eb06d,_0x1c93a3){if(_0x3eb06d[_0xc3e1('0x62')]['id']){delete _0x3eb06d[_0xc3e1('0x62')]['id'];}return db[_0xc3e1('0x48')][_0xc3e1('0x65')]({'where':{'id':_0x3eb06d[_0xc3e1('0x5e')]['id']}})[_0xc3e1('0x27')](handleEntityNotFound(_0x1c93a3,null))['then'](function(_0xdac023){if(_0xdac023){_0x3eb06d['body'][_0xc3e1('0x69')]=_0xdac023['id'];return db[_0xc3e1('0x6a')][_0xc3e1('0x6b')](_0x3eb06d['body']);}})['then'](respondWithResult(_0x1c93a3,null))[_0xc3e1('0x60')](handleError(_0x1c93a3,null));};exports[_0xc3e1('0x6c')]=function(_0x411d5b,_0x1419aa){var _0x392cad={'raw':![],'where':{}};var _0x1dfdc6={};var _0x37ba92={'count':0x0,'rows':[]};return db[_0xc3e1('0x48')][_0xc3e1('0x6d')]({'where':{'id':_0x411d5b[_0xc3e1('0x5e')]['id']}})[_0xc3e1('0x27')](handleEntityNotFound(_0x1419aa,null))[_0xc3e1('0x27')](function(_0x3f8449){if(_0x3f8449){_0x1dfdc6['model']=_[_0xc3e1('0x4e')](db[_0xc3e1('0x6a')][_0xc3e1('0x49')]);_0x1dfdc6['query']=_[_0xc3e1('0x4e')](_0x411d5b[_0xc3e1('0x4d')]);_0x1dfdc6[_0xc3e1('0x4f')]=_[_0xc3e1('0x50')](_0x1dfdc6[_0xc3e1('0x4c')],_0x1dfdc6[_0xc3e1('0x4d')]);_0x392cad[_0xc3e1('0x52')]=_[_0xc3e1('0x50')](_0x1dfdc6['model'],qs[_0xc3e1('0x51')](_0x411d5b['query']['fields']));_0x392cad[_0xc3e1('0x52')]=_0x392cad[_0xc3e1('0x52')]['length']?_0x392cad[_0xc3e1('0x52')]:_0x1dfdc6[_0xc3e1('0x4c')];if(!_0x411d5b[_0xc3e1('0x4d')][_0xc3e1('0x6e')](_0xc3e1('0x53'))){_0x392cad[_0xc3e1('0x22')]=qs[_0xc3e1('0x22')](_0x411d5b[_0xc3e1('0x4d')]['limit']);_0x392cad['offset']=qs[_0xc3e1('0x1f')](_0x411d5b[_0xc3e1('0x4d')][_0xc3e1('0x1f')]);}_0x392cad[_0xc3e1('0x54')]=qs['sort'](_0x411d5b[_0xc3e1('0x4d')][_0xc3e1('0x55')]);_0x392cad[_0xc3e1('0x56')]=qs[_0xc3e1('0x4f')](_['pick'](_0x411d5b[_0xc3e1('0x4d')],_0x1dfdc6['filters']));_0x392cad[_0xc3e1('0x56')][_0xc3e1('0x69')]=_0x3f8449['id'];if(_0x411d5b['query'][_0xc3e1('0x57')]){_0x392cad[_0xc3e1('0x56')]=_[_0xc3e1('0x58')](_0x392cad[_0xc3e1('0x56')],{'$or':_['map'](_0x392cad[_0xc3e1('0x52')],function(_0xea02b2){var _0x143d32={};_0x143d32[_0xea02b2]={'$like':'%'+_0x411d5b[_0xc3e1('0x4d')][_0xc3e1('0x57')]+'%'};return _0x143d32;})});}_0x392cad=_[_0xc3e1('0x58')]({},_0x392cad,_0x411d5b[_0xc3e1('0x59')]);return db[_0xc3e1('0x6a')]['count']({'where':_0x392cad['where']})[_0xc3e1('0x27')](function(_0x54bb58){_0x37ba92[_0xc3e1('0x21')]=_0x54bb58;if(_0x411d5b[_0xc3e1('0x4d')][_0xc3e1('0x5a')]){_0x392cad[_0xc3e1('0x5b')]=[{'all':!![]}];}return db['Disposition'][_0xc3e1('0x5c')](_0x392cad);})[_0xc3e1('0x27')](function(_0x45d56c){_0x37ba92['rows']=_0x45d56c;return _0x37ba92;});}})['then'](respondWithFilteredResult(_0x1419aa,_0x392cad))['catch'](handleError(_0x1419aa,null));};exports['removeDispositions']=function(_0x320aaa,_0x3c9dd7){return db[_0xc3e1('0x48')][_0xc3e1('0x65')]({'where':{'id':_0x320aaa[_0xc3e1('0x5e')]['id']}})[_0xc3e1('0x27')](handleEntityNotFound(_0x3c9dd7,null))[_0xc3e1('0x27')](function(_0x4d0279){if(_0x4d0279){return _0x4d0279[_0xc3e1('0x6f')](_0x320aaa['query'][_0xc3e1('0x70')]);}})['then'](respondWithStatusCode(_0x3c9dd7,null))[_0xc3e1('0x60')](handleError(_0x3c9dd7,null));};exports[_0xc3e1('0x71')]=function(_0x5ec3c9,_0x195ecb){if(_0x5ec3c9[_0xc3e1('0x62')]['id']){delete _0x5ec3c9[_0xc3e1('0x62')]['id'];}return db[_0xc3e1('0x48')][_0xc3e1('0x65')]({'where':{'id':_0x5ec3c9[_0xc3e1('0x5e')]['id']}})[_0xc3e1('0x27')](handleEntityNotFound(_0x195ecb,null))['then'](function(_0x2c54d8){if(_0x2c54d8){_0x5ec3c9[_0xc3e1('0x62')]['MailAccountId']=_0x2c54d8['id'];return db[_0xc3e1('0x72')][_0xc3e1('0x6b')](_0x5ec3c9['body']);}})[_0xc3e1('0x27')](respondWithResult(_0x195ecb,null))[_0xc3e1('0x60')](handleError(_0x195ecb,null));};exports[_0xc3e1('0x73')]=function(_0x23af47,_0x55f721){var _0x406c53={'raw':![],'where':{}};var _0x4be84d={};var _0x48eba8={'count':0x0,'rows':[]};return db[_0xc3e1('0x48')]['findOne']({'where':{'id':_0x23af47['params']['id']}})[_0xc3e1('0x27')](handleEntityNotFound(_0x55f721,null))['then'](function(_0x5980f1){if(_0x5980f1){_0x4be84d[_0xc3e1('0x4c')]=_[_0xc3e1('0x4e')](db[_0xc3e1('0x72')][_0xc3e1('0x49')]);_0x4be84d[_0xc3e1('0x4d')]=_[_0xc3e1('0x4e')](_0x23af47[_0xc3e1('0x4d')]);_0x4be84d[_0xc3e1('0x4f')]=_[_0xc3e1('0x50')](_0x4be84d[_0xc3e1('0x4c')],_0x4be84d[_0xc3e1('0x4d')]);_0x406c53[_0xc3e1('0x52')]=_[_0xc3e1('0x50')](_0x4be84d[_0xc3e1('0x4c')],qs[_0xc3e1('0x51')](_0x23af47['query'][_0xc3e1('0x51')]));_0x406c53[_0xc3e1('0x52')]=_0x406c53[_0xc3e1('0x52')]['length']?_0x406c53['attributes']:_0x4be84d[_0xc3e1('0x4c')];if(!_0x23af47[_0xc3e1('0x4d')]['hasOwnProperty'](_0xc3e1('0x53'))){_0x406c53[_0xc3e1('0x22')]=qs[_0xc3e1('0x22')](_0x23af47[_0xc3e1('0x4d')]['limit']);_0x406c53[_0xc3e1('0x1f')]=qs[_0xc3e1('0x1f')](_0x23af47['query'][_0xc3e1('0x1f')]);}_0x406c53[_0xc3e1('0x54')]=qs[_0xc3e1('0x55')](_0x23af47[_0xc3e1('0x4d')][_0xc3e1('0x55')]);_0x406c53[_0xc3e1('0x56')]=qs[_0xc3e1('0x4f')](_[_0xc3e1('0x74')](_0x23af47[_0xc3e1('0x4d')],_0x4be84d[_0xc3e1('0x4f')]));_0x406c53['where']['MailAccountId']=_0x5980f1['id'];if(_0x23af47[_0xc3e1('0x4d')][_0xc3e1('0x57')]){_0x406c53['where']=_[_0xc3e1('0x58')](_0x406c53[_0xc3e1('0x56')],{'$or':_['map'](_0x406c53['attributes'],function(_0x5ca9d0){var _0x1a1d66={};_0x1a1d66[_0x5ca9d0]={'$like':'%'+_0x23af47[_0xc3e1('0x4d')][_0xc3e1('0x57')]+'%'};return _0x1a1d66;})});}_0x406c53=_[_0xc3e1('0x58')]({},_0x406c53,_0x23af47[_0xc3e1('0x59')]);return db['CannedAnswer'][_0xc3e1('0x21')]({'where':_0x406c53[_0xc3e1('0x56')]})[_0xc3e1('0x27')](function(_0x93a43a){_0x48eba8[_0xc3e1('0x21')]=_0x93a43a;if(_0x23af47[_0xc3e1('0x4d')][_0xc3e1('0x5a')]){_0x406c53['include']=[{'all':!![]}];}return db[_0xc3e1('0x72')][_0xc3e1('0x5c')](_0x406c53);})[_0xc3e1('0x27')](function(_0x7cf05){_0x48eba8[_0xc3e1('0x75')]=_0x7cf05;return _0x48eba8;});}})[_0xc3e1('0x27')](respondWithFilteredResult(_0x55f721,_0x406c53))['catch'](handleError(_0x55f721,null));};exports['removeAnswers']=function(_0x4dc81a,_0x4db79d){return db[_0xc3e1('0x48')][_0xc3e1('0x65')]({'where':{'id':_0x4dc81a[_0xc3e1('0x5e')]['id']}})[_0xc3e1('0x27')](handleEntityNotFound(_0x4db79d,null))['then'](function(_0x482b3b){if(_0x482b3b){return _0x482b3b['removeAnswers'](_0x4dc81a[_0xc3e1('0x4d')][_0xc3e1('0x70')]);}})[_0xc3e1('0x27')](respondWithStatusCode(_0x4db79d,null))['catch'](handleError(_0x4db79d,null));};exports['create']=function(_0x4eb240,_0x541508){var _0x1f0ef0={'name':_0x4eb240['body']['name'],'key':_0x4eb240[_0xc3e1('0x62')][_0xc3e1('0x76')],'provider':_0x4eb240[_0xc3e1('0x62')]['provider']===_0xc3e1('0x64')?null:_0x4eb240[_0xc3e1('0x62')]['provider'],'email':_0x4eb240['body'][_0xc3e1('0x77')],'ListId':_0x4eb240['body'][_0xc3e1('0x78')],'active':!_[_0xc3e1('0x79')](_0x4eb240[_0xc3e1('0x62')][_0xc3e1('0x7a')])?_0x4eb240[_0xc3e1('0x62')][_0xc3e1('0x7a')]:!![],'description':_0x4eb240[_0xc3e1('0x62')][_0xc3e1('0x7b')]||null};var _0xb9a7f1=getAuthenticationOptions(_0x1f0ef0[_0xc3e1('0x63')],_0x4eb240[_0xc3e1('0x62')]);_0x1f0ef0[_0xc3e1('0x41')]=_0xb9a7f1[_0xc3e1('0x41')];_0x1f0ef0[_0xc3e1('0x42')]=_0xb9a7f1[_0xc3e1('0x42')];return db['MailAccount'][_0xc3e1('0x6b')](_0x1f0ef0,{'include':[{'model':db[_0xc3e1('0x44')],'as':'Smtp'},{'model':db['MailServerIn'],'as':_0xc3e1('0x41')}]})[_0xc3e1('0x27')](function(_0x2b4918){var _0x390915=_0x4eb240[_0xc3e1('0x37')][_0xc3e1('0x25')]({'plain':!![]});if(!_0x390915)throw new Error(_0xc3e1('0x7c'));if(_0x390915[_0xc3e1('0x7d')]==='user'){var _0x25b969=_0x2b4918[_0xc3e1('0x25')]({'plain':!![]});return db[_0xc3e1('0x7e')][_0xc3e1('0x65')]({'where':{'name':_0xc3e1('0x26'),'userProfileId':_0x390915['userProfileId']},'raw':!![]})['then'](function(_0x192caa){if(_0x192caa&&_0x192caa['autoAssociation']===0x0){return db[_0xc3e1('0x7f')][_0xc3e1('0x6b')]({'name':_0x25b969[_0xc3e1('0x29')],'resourceId':_0x25b969['id'],'type':_0x192caa[_0xc3e1('0x29')],'sectionId':_0x192caa['id']},{})[_0xc3e1('0x27')](function(){return _0x2b4918;});}else{return _0x2b4918;}})[_0xc3e1('0x60')](function(_0xb34a03){logger[_0xc3e1('0x17')](_0xc3e1('0x80'),_0xb34a03);throw _0xb34a03;});}return _0x2b4918;})[_0xc3e1('0x27')](respondWithResult(_0x541508,0xc9))[_0xc3e1('0x60')](handleError(_0x541508,null));};exports['getImap']=function(_0x163121,_0x1e5aa3){return db['MailAccount'][_0xc3e1('0x6d')]({'where':{'id':_0x163121[_0xc3e1('0x5e')]['id']}})[_0xc3e1('0x27')](handleEntityNotFound(_0x1e5aa3,null))[_0xc3e1('0x27')](function(_0x3415f8){if(_0x3415f8){return _0x3415f8[_0xc3e1('0x81')]();}return null;})[_0xc3e1('0x27')](respondWithResult(_0x1e5aa3,null))['catch'](handleError(_0x1e5aa3,null));};exports[_0xc3e1('0x82')]=function(_0x266438,_0x1eb651){if(_0x266438[_0xc3e1('0x62')]['id']){delete _0x266438['body']['id'];}return db[_0xc3e1('0x48')][_0xc3e1('0x65')]({'where':{'id':_0x266438[_0xc3e1('0x5e')]['id']}})[_0xc3e1('0x27')](handleEntityNotFound(_0x1eb651,null))[_0xc3e1('0x27')](function(_0x304527){if(_0x304527){_0x266438[_0xc3e1('0x62')][_0xc3e1('0x69')]=_0x304527['id'];return db[_0xc3e1('0x5f')][_0xc3e1('0x6b')](_0x266438['body']);}})[_0xc3e1('0x27')](respondWithResult(_0x1eb651,null))['catch'](handleError(_0x1eb651,null));};exports[_0xc3e1('0x83')]=function(_0x5910be,_0x9f497a){return db['MailAccount'][_0xc3e1('0x6d')]({'where':{'id':_0x5910be[_0xc3e1('0x5e')]['id']}})[_0xc3e1('0x27')](handleEntityNotFound(_0x9f497a,null))['then'](function(_0x5483f7){if(_0x5483f7){return _0x5483f7[_0xc3e1('0x84')](null);}return null;})[_0xc3e1('0x27')](respondWithStatusCode(_0x9f497a,null))['catch'](handleError(_0x9f497a,null));};exports[_0xc3e1('0x85')]=function(_0xf786,_0x10c665){return db[_0xc3e1('0x48')][_0xc3e1('0x6d')]({'where':{'id':_0xf786[_0xc3e1('0x5e')]['id']}})[_0xc3e1('0x27')](handleEntityNotFound(_0x10c665,null))['then'](function(_0x546f3f){if(_0x546f3f){return _0x546f3f[_0xc3e1('0x85')]();}return null;})['then'](respondWithResult(_0x10c665,null))[_0xc3e1('0x60')](handleError(_0x10c665,null));};exports['addSmtp']=function(_0x42b8d8,_0x1b9c44){if(_0x42b8d8[_0xc3e1('0x62')]['id']){delete _0x42b8d8['body']['id'];}return db[_0xc3e1('0x48')][_0xc3e1('0x65')]({'where':{'id':_0x42b8d8[_0xc3e1('0x5e')]['id']}})[_0xc3e1('0x27')](handleEntityNotFound(_0x1b9c44,null))[_0xc3e1('0x27')](function(_0x194853){if(_0x194853){_0x42b8d8['body'][_0xc3e1('0x69')]=_0x194853['id'];return db[_0xc3e1('0x44')][_0xc3e1('0x6b')](_0x42b8d8[_0xc3e1('0x62')]);}})['then'](respondWithResult(_0x1b9c44,null))[_0xc3e1('0x60')](handleError(_0x1b9c44,null));};exports[_0xc3e1('0x86')]=function(_0x252d35,_0x2fce55){return db[_0xc3e1('0x48')][_0xc3e1('0x6d')]({'where':{'id':_0x252d35[_0xc3e1('0x5e')]['id']}})[_0xc3e1('0x27')](handleEntityNotFound(_0x2fce55,null))['then'](function(_0x4a4cb6){if(_0x4a4cb6){return _0x4a4cb6[_0xc3e1('0x87')](null);}return null;})[_0xc3e1('0x27')](respondWithStatusCode(_0x2fce55,null))['catch'](handleError(_0x2fce55,null));};exports[_0xc3e1('0x88')]=function(_0x175d02,_0x4cbd8f){return db[_0xc3e1('0x89')][_0xc3e1('0x65')]({'where':{'id':_0x175d02[_0xc3e1('0x5e')]['id']}})[_0xc3e1('0x27')](handleEntityNotFound(_0x4cbd8f,null))[_0xc3e1('0x27')](function(_0x30c652){if(_0x30c652){return _0x30c652[_0xc3e1('0x88')](_0x175d02['body']['ids'],_[_0xc3e1('0x8a')](_0x175d02['body'],['ids','id'])||{});}})[_0xc3e1('0x27')](respondWithResult(_0x4cbd8f,null))[_0xc3e1('0x60')](handleError(_0x4cbd8f,null));};exports[_0xc3e1('0x8b')]=function(_0x1f583a,_0xa1d1d4){var _0x2a447b={'raw':![],'where':{}};var _0x1d8ae5={};var _0xebd4b1={'count':0x0,'rows':[]};return db['MailAccount'][_0xc3e1('0x6d')]({'where':{'id':_0x1f583a[_0xc3e1('0x5e')]['id']}})[_0xc3e1('0x27')](handleEntityNotFound(_0xa1d1d4,null))[_0xc3e1('0x27')](function(_0x6fda36){if(_0x6fda36){_0x1d8ae5[_0xc3e1('0x4c')]=_[_0xc3e1('0x4e')](db[_0xc3e1('0x89')][_0xc3e1('0x49')]);_0x1d8ae5[_0xc3e1('0x4d')]=_['keys'](_0x1f583a['query']);_0x1d8ae5[_0xc3e1('0x4f')]=_[_0xc3e1('0x50')](_0x1d8ae5[_0xc3e1('0x4c')],_0x1d8ae5[_0xc3e1('0x4d')]);_0x2a447b[_0xc3e1('0x52')]=_[_0xc3e1('0x50')](_0x1d8ae5['model'],qs[_0xc3e1('0x51')](_0x1f583a[_0xc3e1('0x4d')][_0xc3e1('0x51')]));_0x2a447b['attributes']=_0x2a447b['attributes'][_0xc3e1('0x8c')]?_0x2a447b[_0xc3e1('0x52')]:_0x1d8ae5[_0xc3e1('0x4c')];if(!_0x1f583a['query'][_0xc3e1('0x6e')](_0xc3e1('0x53'))){_0x2a447b[_0xc3e1('0x22')]=qs[_0xc3e1('0x22')](_0x1f583a[_0xc3e1('0x4d')][_0xc3e1('0x22')]);_0x2a447b['offset']=qs[_0xc3e1('0x1f')](_0x1f583a[_0xc3e1('0x4d')]['offset']);}_0x2a447b[_0xc3e1('0x54')]=qs[_0xc3e1('0x55')](_0x1f583a[_0xc3e1('0x4d')][_0xc3e1('0x55')]);_0x2a447b[_0xc3e1('0x56')]=qs[_0xc3e1('0x4f')](_[_0xc3e1('0x74')](_0x1f583a[_0xc3e1('0x4d')],_0x1d8ae5['filters']));_0x2a447b[_0xc3e1('0x56')][_0xc3e1('0x69')]=_0x6fda36['id'];if(_0x1f583a[_0xc3e1('0x4d')][_0xc3e1('0x57')]){_0x2a447b[_0xc3e1('0x56')]=_[_0xc3e1('0x58')](_0x2a447b['where'],{'$or':_[_0xc3e1('0x47')](_0x2a447b['attributes'],function(_0x56ec7d){var _0x2ff3ea={};_0x2ff3ea[_0x56ec7d]={'$like':'%'+_0x1f583a['query'][_0xc3e1('0x57')]+'%'};return _0x2ff3ea;})});}_0x2a447b=_['merge']({},_0x2a447b,_0x1f583a[_0xc3e1('0x59')]);return db[_0xc3e1('0x89')][_0xc3e1('0x21')]({'where':_0x2a447b[_0xc3e1('0x56')]})[_0xc3e1('0x27')](function(_0x194c30){_0xebd4b1[_0xc3e1('0x21')]=_0x194c30;if(_0x1f583a[_0xc3e1('0x4d')][_0xc3e1('0x5a')]){_0x2a447b[_0xc3e1('0x5b')]=[{'model':db['CmContact'],'as':_0xc3e1('0x8d'),'required':![]},{'model':db['User'],'as':'Owner','attributes':['name',_0xc3e1('0x8e'),_0xc3e1('0x8f')],'required':![]},{'model':db['Tag'],'as':_0xc3e1('0x90'),'attributes':['id',_0xc3e1('0x29'),'color'],'where':_0x1f583a[_0xc3e1('0x4d')][_0xc3e1('0x91')]?{'id':_0x1f583a['query']['tag']}:undefined,'required':_0x1f583a[_0xc3e1('0x4d')][_0xc3e1('0x91')]?!![]:![]}];}return db[_0xc3e1('0x89')][_0xc3e1('0x5c')](_0x2a447b);})[_0xc3e1('0x27')](function(_0xf3b43d){_0xebd4b1[_0xc3e1('0x75')]=_0xf3b43d;return _0xebd4b1;});}})[_0xc3e1('0x27')](respondWithFilteredResult(_0xa1d1d4,_0x2a447b))[_0xc3e1('0x60')](handleError(_0xa1d1d4,null));};exports[_0xc3e1('0x92')]=function addApplications(_0x13ffcd,_0x4bee69){var _0x307717=_0x13ffcd[_0xc3e1('0x5e')]['id'];var _0x17d38d=_0x13ffcd[_0xc3e1('0x62')];var _0xaa2369=0xc8;var _0x13c827=null;return db[_0xc3e1('0x93')]['transaction']({'isolationLevel':db[_0xc3e1('0x93')][_0xc3e1('0x94')][_0xc3e1('0x95')][_0xc3e1('0x96')]},function(_0x5972c4){return db['MailAccount'][_0xc3e1('0x6d')]({'where':{'id':_0x307717},'transaction':_0x5972c4})[_0xc3e1('0x27')](function(_0x54d8fe){if(_0x54d8fe){return db['MailApplication'][_0xc3e1('0x97')]({'where':{'MailAccountId':_0x307717},'transaction':_0x5972c4})['then'](function(){var _0x1d2b5e=_['map'](_0x17d38d,function(_0x494949){_0x494949['MailAccountId']=_0x307717;return _0x494949;});return db[_0xc3e1('0x98')][_0xc3e1('0x99')](_0x1d2b5e,{'transaction':_0x5972c4});});}else{_0xaa2369=0x194;_0x13c827=[];}});})[_0xc3e1('0x27')](function(){if(_0xaa2369!==0x194){return db[_0xc3e1('0x98')][_0xc3e1('0x9a')]({'where':{'MailAccountId':_0x307717},'order':_0xc3e1('0x9b')})[_0xc3e1('0x27')](function(_0x4b9a7a){_0x13c827=_0x4b9a7a;});}})[_0xc3e1('0x60')](function(_0x22a0cc){_0xaa2369=0x1f4;logger[_0xc3e1('0x17')](_0x22a0cc[_0xc3e1('0x28')]);if(_0x22a0cc[_0xc3e1('0x29')]){delete _0x22a0cc[_0xc3e1('0x29')];}_0x13c827=_0x22a0cc;})[_0xc3e1('0x9c')](function(){if(_0x13c827===null){_0x4bee69[_0xc3e1('0x1b')](_0xaa2369);}else{if(_0xaa2369===0x1f4){_0x4bee69['status'](_0xaa2369)['send'](_0x13c827);}else{_0x4bee69[_0xc3e1('0x1c')](_0xaa2369)[_0xc3e1('0x1e')](_0x13c827);}}});};exports[_0xc3e1('0x9d')]=function(_0x2277fd,_0x2f1816){var _0x5254b7={};var _0x612db2={};var _0x10bcea;var _0x16f6c1;return db[_0xc3e1('0x48')][_0xc3e1('0x6d')]({'where':{'id':_0x2277fd[_0xc3e1('0x5e')]['id']}})[_0xc3e1('0x27')](handleEntityNotFound(_0x2f1816,null))[_0xc3e1('0x27')](function(_0x3594f0){if(_0x3594f0){_0x10bcea=_0x3594f0;_0x612db2['model']=_[_0xc3e1('0x4e')](db[_0xc3e1('0x98')][_0xc3e1('0x49')]);_0x612db2[_0xc3e1('0x4d')]=_[_0xc3e1('0x4e')](_0x2277fd[_0xc3e1('0x4d')]);_0x612db2[_0xc3e1('0x4f')]=_['intersection'](_0x612db2[_0xc3e1('0x4c')],_0x612db2[_0xc3e1('0x4d')]);_0x5254b7[_0xc3e1('0x52')]=_[_0xc3e1('0x50')](_0x612db2[_0xc3e1('0x4c')],qs[_0xc3e1('0x51')](_0x2277fd[_0xc3e1('0x4d')][_0xc3e1('0x51')]));_0x5254b7[_0xc3e1('0x52')]=_0x5254b7[_0xc3e1('0x52')][_0xc3e1('0x8c')]?_0x5254b7[_0xc3e1('0x52')]:_0x612db2[_0xc3e1('0x4c')];_0x5254b7[_0xc3e1('0x54')]=qs['sort'](_0x2277fd[_0xc3e1('0x4d')][_0xc3e1('0x55')]);_0x5254b7['where']=qs[_0xc3e1('0x4f')](_[_0xc3e1('0x74')](_0x2277fd[_0xc3e1('0x4d')],_0x612db2['filters']));if(_0x2277fd['query'][_0xc3e1('0x57')]){_0x5254b7[_0xc3e1('0x56')]=_['merge'](_0x5254b7[_0xc3e1('0x56')],{'$or':_[_0xc3e1('0x47')](_0x5254b7[_0xc3e1('0x52')],function(_0x552e51){var _0x5116b9={};_0x5116b9[_0x552e51]={'$like':'%'+_0x2277fd[_0xc3e1('0x4d')][_0xc3e1('0x57')]+'%'};return _0x5116b9;})});}_0x5254b7=_[_0xc3e1('0x58')]({},_0x5254b7,_0x2277fd[_0xc3e1('0x59')]);return _0x10bcea[_0xc3e1('0x9d')](_0x5254b7);}})['then'](function(_0x423c20){if(_0x423c20){_0x16f6c1=_0x423c20[_0xc3e1('0x8c')];if(!_0x2277fd[_0xc3e1('0x4d')][_0xc3e1('0x6e')](_0xc3e1('0x53'))){_0x5254b7['limit']=qs['limit'](_0x2277fd[_0xc3e1('0x4d')]['limit']);_0x5254b7[_0xc3e1('0x1f')]=qs[_0xc3e1('0x1f')](_0x2277fd[_0xc3e1('0x4d')][_0xc3e1('0x1f')]);}return _0x10bcea[_0xc3e1('0x9d')](_0x5254b7);}})['then'](function(_0x49f15f){if(_0x49f15f){return _0x49f15f?{'count':_0x16f6c1,'rows':_0x49f15f}:null;}})[_0xc3e1('0x27')](respondWithResult(_0x2f1816,null))['catch'](handleError(_0x2f1816,null));};exports[_0xc3e1('0x9e')]=function(_0x34b0eb,_0x381d5a){var _0x1ae3af={'raw':!![],'where':{}};var _0x36b299={};var _0x3850b6={'count':0x0,'rows':[]};return db['MailAccount'][_0xc3e1('0x6d')]({'where':{'id':_0x34b0eb[_0xc3e1('0x5e')]['id']}})[_0xc3e1('0x27')](handleEntityNotFound(_0x381d5a,null))[_0xc3e1('0x27')](function(_0x2a5d44){if(_0x2a5d44){_0x36b299[_0xc3e1('0x4c')]=_[_0xc3e1('0x4e')](db['MailMessage'][_0xc3e1('0x49')]);_0x36b299['query']=_[_0xc3e1('0x4e')](_0x34b0eb[_0xc3e1('0x4d')]);_0x36b299[_0xc3e1('0x4f')]=_['intersection'](_0x36b299[_0xc3e1('0x4c')],_0x36b299[_0xc3e1('0x4d')]);_0x1ae3af[_0xc3e1('0x52')]=_[_0xc3e1('0x50')](_0x36b299[_0xc3e1('0x4c')],qs[_0xc3e1('0x51')](_0x34b0eb[_0xc3e1('0x4d')][_0xc3e1('0x51')]));_0x1ae3af['attributes']=_0x1ae3af[_0xc3e1('0x52')][_0xc3e1('0x8c')]?_0x1ae3af[_0xc3e1('0x52')]:_0x36b299[_0xc3e1('0x4c')];if(!_0x34b0eb[_0xc3e1('0x4d')][_0xc3e1('0x6e')]('nolimit')){_0x1ae3af['limit']=qs[_0xc3e1('0x22')](_0x34b0eb[_0xc3e1('0x4d')][_0xc3e1('0x22')]);_0x1ae3af[_0xc3e1('0x1f')]=qs['offset'](_0x34b0eb[_0xc3e1('0x4d')][_0xc3e1('0x1f')]);}_0x1ae3af[_0xc3e1('0x54')]=qs[_0xc3e1('0x55')](_0x34b0eb[_0xc3e1('0x4d')]['sort']);_0x1ae3af[_0xc3e1('0x56')]=qs[_0xc3e1('0x4f')](_[_0xc3e1('0x74')](_0x34b0eb[_0xc3e1('0x4d')],_0x36b299['filters']));_0x1ae3af[_0xc3e1('0x56')][_0xc3e1('0x69')]=_0x2a5d44['id'];if(_0x34b0eb[_0xc3e1('0x4d')]['filter']){_0x1ae3af['where']=_[_0xc3e1('0x58')](_0x1ae3af['where'],{'$or':_['map'](_0x1ae3af['attributes'],function(_0x3dc99b){var _0x1c7bb3={};_0x1c7bb3[_0x3dc99b]={'$like':'%'+_0x34b0eb[_0xc3e1('0x4d')]['filter']+'%'};return _0x1c7bb3;})});}if(_0x34b0eb[_0xc3e1('0x4d')][_0xc3e1('0x9f')]){var _0x1f68e8=_0x34b0eb[_0xc3e1('0x4d')][_0xc3e1('0x9f')][_0xc3e1('0xa0')](',');var _0x465d9e={};_0x465d9e[_0x1f68e8[0x0]]={'$gte':moment(_0x1f68e8[0x1])[_0xc3e1('0xa1')](_0xc3e1('0xa2'))};_0x1ae3af[_0xc3e1('0x56')]=_[_0xc3e1('0x58')](_0x1ae3af['where'],_0x465d9e);}_0x1ae3af=_[_0xc3e1('0x58')]({},_0x1ae3af,_0x34b0eb['options']);return db[_0xc3e1('0xa3')][_0xc3e1('0x21')]({'where':_0x1ae3af[_0xc3e1('0x56')]})[_0xc3e1('0x27')](function(_0x1d4f2c){_0x3850b6['count']=_0x1d4f2c;if(_0x34b0eb[_0xc3e1('0x4d')]['includeAll']){_0x1ae3af[_0xc3e1('0x5b')]=[{'all':!![]}];}return db[_0xc3e1('0xa3')][_0xc3e1('0x5c')](_0x1ae3af);})[_0xc3e1('0x27')](function(_0x2379ae){if(_0x34b0eb['query'][_0xc3e1('0xa4')]==='true'){for(var _0x5ef3f5=0x0;_0x5ef3f5<_0x2379ae[_0xc3e1('0x8c')];_0x5ef3f5++){_0x2379ae[_0x5ef3f5]['body']=juice(_0x2379ae[_0x5ef3f5][_0xc3e1('0x62')]);}}_0x3850b6[_0xc3e1('0x75')]=_0x2379ae;return _0x3850b6;});}})[_0xc3e1('0x27')](respondWithFilteredResult(_0x381d5a,_0x1ae3af))['catch'](handleError(_0x381d5a,null));};exports[_0xc3e1('0x2a')]=function(_0x38de64,_0x370b91){var _0x1207cd,_0x41e78a={},_0x54c7a2;if(_0x38de64[_0xc3e1('0x62')]['to']){_0x54c7a2=_0x38de64[_0xc3e1('0x62')]['to']['split'](',')[0x0];}return db[_0xc3e1('0x48')][_0xc3e1('0x65')]({'where':{'id':_0x38de64[_0xc3e1('0x5e')]['id']},'include':[{'model':db['CmList'],'as':_0xc3e1('0xa5'),'include':[{'model':db['CmContact'],'as':_0xc3e1('0xa6'),'where':{'email':_0x54c7a2},'limit':0x1,'order':[[_0xc3e1('0xa7'),_0xc3e1('0xa8')]]}]},{'model':db['MailServerOut'],'as':_0xc3e1('0x42'),'raw':!![],'include':[{'model':db[_0xc3e1('0xa9')],'as':_0xc3e1('0xa9'),'raw':!![]}]}]})[_0xc3e1('0x27')](handleEntityNotFound(_0x370b91,null))['then'](function(_0x524b8a){if(!_0x524b8a)return;_0x1207cd=_0x524b8a;if(!_0x524b8a[_0xc3e1('0x42')])throw new Error('Smtp\x20configuration\x20not\x20found');if(_[_0xc3e1('0x79')](_0x38de64[_0xc3e1('0x62')][_0xc3e1('0xaa')])){_0x38de64[_0xc3e1('0x62')][_0xc3e1('0xaa')]=util[_0xc3e1('0xa1')](_0xc3e1('0xab'),_0x524b8a[_0xc3e1('0x29')],_0x524b8a[_0xc3e1('0x77')]||_0x524b8a[_0xc3e1('0x42')][_0xc3e1('0x37')]);}if(_0x38de64[_0xc3e1('0x62')][_0xc3e1('0xac')]&&_0x38de64[_0xc3e1('0x62')][_0xc3e1('0xac')][_0xc3e1('0x8c')]){for(var _0x5bbda8=0x0;_0x5bbda8<_0x38de64['body'][_0xc3e1('0xac')][_0xc3e1('0x8c')];_0x5bbda8+=0x1){_0x38de64['body'][_0xc3e1('0xac')][_0x5bbda8]={'filename':_0x38de64[_0xc3e1('0x62')]['attachments'][_0x5bbda8][_0xc3e1('0x29')],'path':path[_0xc3e1('0xad')](config['root'],_0xc3e1('0xae'),_0x38de64[_0xc3e1('0x62')]['attachments'][_0x5bbda8]['basename'])};}}var _0x15e8e7=_0x524b8a[_0xc3e1('0xaf')]();return respondWithRpcPromise('SendMail',_0xc3e1('0xb0'),{'account':_0x15e8e7,'message':_0x38de64[_0xc3e1('0x62')]});})[_0xc3e1('0x27')](function(_0xf25c69){if(!_0xf25c69)return;_0x41e78a=_0xf25c69;if(!_0x1207cd[_0xc3e1('0xa5')])throw new Error(_0xc3e1('0xb1'));if(_0x1207cd[_0xc3e1('0xa5')][_0xc3e1('0xa6')][_0xc3e1('0x8c')])return _0x1207cd[_0xc3e1('0xa5')]['Contacts'][0x0];return db[_0xc3e1('0xb2')]['create'](_['defaults'](_0x38de64[_0xc3e1('0x62')],{'firstName':_0x38de64['body']['to'],'email':_0x38de64[_0xc3e1('0x62')]['to'],'phone':_0x38de64[_0xc3e1('0x62')]['to'],'ListId':_0x1207cd[_0xc3e1('0x78')]}));})[_0xc3e1('0x27')](function(_0xc3efb8){if(!_0xc3efb8)return;var _0x10a9aa={'UserId':_0x38de64[_0xc3e1('0x37')]['id'],'ContactId':_0xc3efb8['id'],'MailAccountId':_0x1207cd['id'],'inReplyTo':_0x41e78a[_0xc3e1('0xb3')],'to':_0x38de64[_0xc3e1('0x62')]['from'],'cc':_0x38de64[_0xc3e1('0x62')]['cc'],'subject':_0x38de64[_0xc3e1('0x62')][_0xc3e1('0xb4')],'attach':_0x38de64[_0xc3e1('0x62')][_0xc3e1('0xb5')],'firstMsgDirection':'out','lastMsgAt':moment()[_0xc3e1('0xa1')]('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgDirection':_0xc3e1('0xb6'),'Messages':[_[_0xc3e1('0x58')](_0x38de64[_0xc3e1('0x62')],{'messageId':_0x41e78a[_0xc3e1('0xb3')],'sentAt':moment()['format'](_0xc3e1('0xa2')),'read':!![],'MailAccountId':_0x1207cd['id'],'UserId':_0x38de64[_0xc3e1('0x37')]['id'],'ContactId':_0xc3efb8['id']})]};if(_0x38de64[_0xc3e1('0x62')]['Interaction']){_0x10a9aa=_[_0xc3e1('0x58')](_0x10a9aa,_0x38de64[_0xc3e1('0x62')][_0xc3e1('0xb7')]);}return db[_0xc3e1('0x89')][_0xc3e1('0x6b')](_0x10a9aa,{'include':[{'model':db[_0xc3e1('0xa3')],'as':_0xc3e1('0xb8')}]});})[_0xc3e1('0x27')](respondWithResult(_0x370b91,null))[_0xc3e1('0x60')](handleError(_0x370b91,null));};exports[_0xc3e1('0xb9')]=function(_0x352414,_0x1c37e7){return db[_0xc3e1('0x48')][_0xc3e1('0x65')]({'where':{'id':_0x352414[_0xc3e1('0x5e')]['id']},'include':[{'model':db[_0xc3e1('0x44')],'as':'Smtp','raw':!![],'include':[{'model':db[_0xc3e1('0xa9')],'as':_0xc3e1('0xa9'),'raw':!![]}]}]})[_0xc3e1('0x27')](handleEntityNotFound(_0x1c37e7,null))['then'](function(_0x433f77){if(!_0x433f77[_0xc3e1('0x42')])return;var _0x2a86a8=_0x433f77['getSmtpOptions']();return respondWithRpcPromise(_0xc3e1('0xba'),'verifySmtp',{'account':_0x2a86a8});})[_0xc3e1('0x27')](respondWithResult(_0x1c37e7,null))[_0xc3e1('0x60')](handleError(_0x1c37e7,null));};exports[_0xc3e1('0x97')]=function(_0x21946f,_0x598256){return db[_0xc3e1('0x48')]['find']({'where':{'id':_0x21946f[_0xc3e1('0x5e')]['id']}})[_0xc3e1('0x27')](handleEntityNotFound(_0x598256,null))['then'](function(_0x3d65f3){if(_0x3d65f3&&_0x3d65f3[_0xc3e1('0x3f')]){throw new db['Sequelize']['ValidationError']('You\x20can\x27t\x20remove\x20the\x20mail\x20service\x20account');}return _0x3d65f3;})[_0xc3e1('0x27')](removeEntity(_0x598256,null))[_0xc3e1('0x60')](handleError(_0x598256,null));};exports['addAgents']=function(_0x44408e,_0x275381){return db[_0xc3e1('0x48')]['find']({'where':{'id':_0x44408e['params']['id']}})[_0xc3e1('0x27')](handleEntityNotFound(_0x275381,null))[_0xc3e1('0x27')](function(_0x18ae4b){if(_0x18ae4b){return _0x18ae4b[_0xc3e1('0xbb')](_0x44408e['body']['ids'],_[_0xc3e1('0x8a')](_0x44408e[_0xc3e1('0x62')],[_0xc3e1('0x70'),'id'])||{})[_0xc3e1('0xbc')](function(_0x4321f7){for(var _0x2dfc9b=0x0;_0x2dfc9b<_0x44408e[_0xc3e1('0x62')][_0xc3e1('0x70')]['length'];_0x2dfc9b+=0x1){socket[_0xc3e1('0xbd')](_0xc3e1('0xbe'),{'UserId':Number(_0x44408e['body'][_0xc3e1('0x70')][_0x2dfc9b]),'MailAccountId':Number(_0x44408e['params']['id'])});}return _0x4321f7;});}})['then'](respondWithResult(_0x275381,null))[_0xc3e1('0x60')](handleError(_0x275381,null));};exports[_0xc3e1('0xbf')]=function(_0x25097e,_0x1856ca){return db['MailAccount'][_0xc3e1('0x65')]({'where':{'id':_0x25097e[_0xc3e1('0x5e')]['id']}})['then'](handleEntityNotFound(_0x1856ca,null))[_0xc3e1('0x27')](function(_0x195999){if(_0x195999){return _0x195999[_0xc3e1('0xbf')](_0x25097e['query'][_0xc3e1('0x70')])[_0xc3e1('0x27')](function(){if(_['isArray'](_0x25097e['query'][_0xc3e1('0x70')])){for(var _0x2830e4=0x0;_0x2830e4<_0x25097e['query']['ids'][_0xc3e1('0x8c')];_0x2830e4+=0x1){socket[_0xc3e1('0xbd')](_0xc3e1('0xc0'),{'UserId':Number(_0x25097e[_0xc3e1('0x4d')][_0xc3e1('0x70')][_0x2830e4]),'MailAccountId':Number(_0x25097e['params']['id'])});}}else{socket[_0xc3e1('0xbd')](_0xc3e1('0xc0'),{'UserId':Number(_0x25097e[_0xc3e1('0x4d')][_0xc3e1('0x70')]),'MailAccountId':Number(_0x25097e[_0xc3e1('0x5e')]['id'])});}});}})[_0xc3e1('0x27')](respondWithStatusCode(_0x1856ca,null))[_0xc3e1('0x60')](handleError(_0x1856ca,null));};exports[_0xc3e1('0xc1')]=function(_0xf6664c,_0x169ea3){var _0x407296={};var _0x38cee6={};var _0x69e7be;var _0x426a8c;return db['MailAccount'][_0xc3e1('0x6d')]({'where':{'id':_0xf6664c[_0xc3e1('0x5e')]['id']}})[_0xc3e1('0x27')](handleEntityNotFound(_0x169ea3,null))[_0xc3e1('0x27')](function(_0x1f5af6){if(_0x1f5af6){_0x69e7be=_0x1f5af6;_0x38cee6[_0xc3e1('0x4c')]=_[_0xc3e1('0x4e')](db['User'][_0xc3e1('0x49')]);_0x38cee6[_0xc3e1('0x4d')]=_[_0xc3e1('0x4e')](_0xf6664c[_0xc3e1('0x4d')]);_0x38cee6[_0xc3e1('0x4f')]=_[_0xc3e1('0x50')](_0x38cee6['model'],_0x38cee6[_0xc3e1('0x4d')]);_0x407296[_0xc3e1('0x52')]=_[_0xc3e1('0x50')](_0x38cee6[_0xc3e1('0x4c')],qs[_0xc3e1('0x51')](_0xf6664c[_0xc3e1('0x4d')][_0xc3e1('0x51')]));_0x407296['attributes']=_0x407296[_0xc3e1('0x52')][_0xc3e1('0x8c')]?_0x407296[_0xc3e1('0x52')]:_0x38cee6[_0xc3e1('0x4c')];_0x407296[_0xc3e1('0x54')]=qs[_0xc3e1('0x55')](_0xf6664c[_0xc3e1('0x4d')][_0xc3e1('0x55')]);_0x407296[_0xc3e1('0x56')]=qs['filters'](_[_0xc3e1('0x74')](_0xf6664c[_0xc3e1('0x4d')],_0x38cee6['filters']));if(_0xf6664c[_0xc3e1('0x4d')][_0xc3e1('0x57')]){_0x407296[_0xc3e1('0x56')]=_[_0xc3e1('0x58')](_0x407296[_0xc3e1('0x56')],{'$or':_[_0xc3e1('0x47')](_0x407296[_0xc3e1('0x52')],function(_0x544e33){var _0x53730d={};_0x53730d[_0x544e33]={'$like':'%'+_0xf6664c['query'][_0xc3e1('0x57')]+'%'};return _0x53730d;})});}_0x407296=_['merge']({},_0x407296,_0xf6664c[_0xc3e1('0x59')]);return _0x69e7be[_0xc3e1('0xc1')](_0x407296);}})[_0xc3e1('0x27')](function(_0x29583d){if(_0x29583d){_0x426a8c=_0x29583d[_0xc3e1('0x8c')];if(!_0xf6664c[_0xc3e1('0x4d')][_0xc3e1('0x6e')](_0xc3e1('0x53'))){_0x407296[_0xc3e1('0x22')]=qs[_0xc3e1('0x22')](_0xf6664c[_0xc3e1('0x4d')][_0xc3e1('0x22')]);_0x407296['offset']=qs[_0xc3e1('0x1f')](_0xf6664c[_0xc3e1('0x4d')][_0xc3e1('0x1f')]);}return _0x69e7be[_0xc3e1('0xc1')](_0x407296);}})[_0xc3e1('0x27')](function(_0x53a328){if(_0x53a328){return _0x53a328?{'count':_0x426a8c,'rows':_0x53a328}:null;}})[_0xc3e1('0x27')](respondWithResult(_0x169ea3,null))['catch'](handleError(_0x169ea3,null));};
\ No newline at end of file
index ba8ea22..8a4ccb6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c8b=['exports','events','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook'];(function(_0x5e2262,_0x3c0687){var _0x50c4c7=function(_0x57a3ed){while(--_0x57a3ed){_0x5e2262['push'](_0x5e2262['shift']());}};_0x50c4c7(++_0x3c0687);}(_0x8c8b,0x106));var _0xb8c8=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x8c8b[_0x122ef9];return _0x42fba0;};'use strict';var EventEmitter=require(_0xb8c8('0x0'));var MailAccount=require('../../mysqldb')['db']['MailAccount'];var MailAccountEvents=new EventEmitter();MailAccountEvents[_0xb8c8('0x1')](0x0);var events={'afterCreate':_0xb8c8('0x2'),'afterUpdate':_0xb8c8('0x3'),'afterDestroy':_0xb8c8('0x4')};function emitEvent(_0x4c0ddd){return function(_0x4c1ecc,_0x40094e,_0x1bc15d){MailAccountEvents[_0xb8c8('0x5')](_0x4c0ddd+':'+_0x4c1ecc['id'],_0x4c1ecc);MailAccountEvents[_0xb8c8('0x5')](_0x4c0ddd,_0x4c1ecc);_0x1bc15d(null);};}for(var e in events){if(events[_0xb8c8('0x6')](e)){var event=events[e];MailAccount[_0xb8c8('0x7')](e,emitEvent(event));}}module[_0xb8c8('0x8')]=MailAccountEvents;
\ No newline at end of file
+var _0x87f1=['MailAccount','setMaxListeners','save','update','remove','emit','hasOwnProperty','exports','../../mysqldb'];(function(_0x1a5b94,_0x3d9734){var _0x1fb2d9=function(_0x134062){while(--_0x134062){_0x1a5b94['push'](_0x1a5b94['shift']());}};_0x1fb2d9(++_0x3d9734);}(_0x87f1,0x170));var _0x187f=function(_0x3fd19f,_0x318a65){_0x3fd19f=_0x3fd19f-0x0;var _0x582a9d=_0x87f1[_0x3fd19f];return _0x582a9d;};'use strict';var EventEmitter=require('events');var MailAccount=require(_0x187f('0x0'))['db'][_0x187f('0x1')];var MailAccountEvents=new EventEmitter();MailAccountEvents[_0x187f('0x2')](0x0);var events={'afterCreate':_0x187f('0x3'),'afterUpdate':_0x187f('0x4'),'afterDestroy':_0x187f('0x5')};function emitEvent(_0x233cda){return function(_0x5eafdc,_0x19e8fb,_0x4c6db8){MailAccountEvents[_0x187f('0x6')](_0x233cda+':'+_0x5eafdc['id'],_0x5eafdc);MailAccountEvents['emit'](_0x233cda,_0x5eafdc);_0x4c6db8(null);};}for(var e in events){if(events[_0x187f('0x7')](e)){var event=events[e];MailAccount['hook'](e,emitEvent(event));}}module[_0x187f('0x8')]=MailAccountEvents;
\ No newline at end of file
index 14916ff..719da18 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d44=['auth','OAuth2','user','data5','pass','./mailAccount.attributes','exports','define','MailAccount','mail_accounts','custom','service','provider','host','port','Smtp','secure','authentication','CloudProvider'];(function(_0x7401aa,_0x4fc7e9){var _0x1f75e7=function(_0x3016ca){while(--_0x3016ca){_0x7401aa['push'](_0x7401aa['shift']());}};_0x1f75e7(++_0x4fc7e9);}(_0x7d44,0x64));var _0x47d4=function(_0x4d9ec6,_0xa6774c){_0x4d9ec6=_0x4d9ec6-0x0;var _0x190e69=_0x7d44[_0x4d9ec6];return _0x190e69;};'use strict';var attributes=require(_0x47d4('0x0'));module[_0x47d4('0x1')]=function(_0x1c900f){return _0x1c900f[_0x47d4('0x2')](_0x47d4('0x3'),attributes,{'tableName':_0x47d4('0x4'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'getSmtpOptions':function(){var _0x4479f5=this;var _0x181da4={'id':_0x4479f5['id'],'tls':{'rejectUnauthorized':![]}};if(_0x4479f5['provider']!==_0x47d4('0x5')){_0x181da4[_0x47d4('0x6')]=_0x4479f5[_0x47d4('0x7')];}else{_0x181da4[_0x47d4('0x8')]=_0x4479f5['Smtp'][_0x47d4('0x8')];_0x181da4[_0x47d4('0x9')]=_0x4479f5[_0x47d4('0xa')]['port'];_0x181da4[_0x47d4('0xb')]=_0x4479f5['Smtp'][_0x47d4('0xb')];}if(_0x4479f5['Smtp'][_0x47d4('0xc')]){if(_0x4479f5[_0x47d4('0xa')]['modernAuthentication']){if(!_0x4479f5[_0x47d4('0xa')][_0x47d4('0xd')])throw new Error('Cloud\x20Provider\x20configuration\x20not\x20found');_0x181da4[_0x47d4('0xe')]={'type':_0x47d4('0xf'),'user':_0x4479f5['Smtp'][_0x47d4('0x10')],'accessToken':_0x4479f5[_0x47d4('0xa')][_0x47d4('0xd')][_0x47d4('0x11')]};}else{_0x181da4[_0x47d4('0xe')]={'user':_0x4479f5['Smtp'][_0x47d4('0x10')],'pass':_0x4479f5[_0x47d4('0xa')][_0x47d4('0x12')]};}}return _0x181da4;}}});};
\ No newline at end of file
+var _0x0f1b=['CloudProvider','data5','pass','./mailAccount.attributes','define','MailAccount','mail_accounts','provider','custom','service','host','Smtp','port','secure','authentication','modernAuthentication','Cloud\x20Provider\x20configuration\x20not\x20found','auth','OAuth2'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0x0f1b,0x88));var _0xb0f1=function(_0x4a53d,_0x58a95e){_0x4a53d=_0x4a53d-0x0;var _0x27410e=_0x0f1b[_0x4a53d];return _0x27410e;};'use strict';var attributes=require(_0xb0f1('0x0'));module['exports']=function(_0x1f30fc){return _0x1f30fc[_0xb0f1('0x1')](_0xb0f1('0x2'),attributes,{'tableName':_0xb0f1('0x3'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'getSmtpOptions':function(){var _0x59c7af=this;var _0x2f98ba={'id':_0x59c7af['id'],'tls':{'rejectUnauthorized':![]}};if(_0x59c7af[_0xb0f1('0x4')]!==_0xb0f1('0x5')){_0x2f98ba[_0xb0f1('0x6')]=_0x59c7af[_0xb0f1('0x4')];}else{_0x2f98ba[_0xb0f1('0x7')]=_0x59c7af[_0xb0f1('0x8')][_0xb0f1('0x7')];_0x2f98ba[_0xb0f1('0x9')]=_0x59c7af[_0xb0f1('0x8')][_0xb0f1('0x9')];_0x2f98ba['secure']=_0x59c7af[_0xb0f1('0x8')][_0xb0f1('0xa')];}if(_0x59c7af['Smtp'][_0xb0f1('0xb')]){if(_0x59c7af[_0xb0f1('0x8')][_0xb0f1('0xc')]){if(!_0x59c7af[_0xb0f1('0x8')]['CloudProvider'])throw new Error(_0xb0f1('0xd'));_0x2f98ba[_0xb0f1('0xe')]={'type':_0xb0f1('0xf'),'user':_0x59c7af[_0xb0f1('0x8')]['user'],'accessToken':_0x59c7af['Smtp'][_0xb0f1('0x10')][_0xb0f1('0x11')]};}else{_0x2f98ba['auth']={'user':_0x59c7af[_0xb0f1('0x8')]['user'],'pass':_0x59c7af[_0xb0f1('0x8')][_0xb0f1('0x12')]};}}return _0x2f98ba;}}});};
\ No newline at end of file
index c32e12e..b015843 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x8a73e0,_0x2740b4){var _0x1021c8=function(_0xf70d0b){while(--_0xf70d0b){_0x8a73e0['push'](_0x8a73e0['shift']());}};_0x1021c8(++_0x2740b4);}(_0x1a85,0x178));var _0x51a8=function(_0x22071a,_0x4bcf62){_0x22071a=_0x22071a-0x0;var _0x5c6c85=_0x1a85[_0x22071a];return _0x5c6c85;};'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
+var _0x57ca=['setDataValue','getSmtpOptions','NotifyMailAccount','body','mail','difference','keys','CmContact','createdAt','isNil','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','from','account','CmList','Contacts','updatedAt','DESC','MailApplication','Applications','List','omit','applications','list','orderBy','asc','push','length','close','*,*,*,*','ListId','contact','messageId','subject','attach','format','YYYY-MM-DD\x20HH:mm:ss','MailMessage','Messages','inReplyTo','MailInteraction','create','Contact\x20not\x20found','spread','update','interaction','get','created','originCc','bcc','Email','Attachment','Attachments','UserId','User','unshift','name','waitForTheAssignedAgent','startRouting','Start','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','register','then','MailAccount,\x20%s,\x20%s','debug','MailAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','GetMailAccount','findAll','options','raw','where','attributes','limit','include','map','model','info','ShowMailAccount','MailAccount','find'];(function(_0x2a70b5,_0x3337a6){var _0x2b4843=function(_0x50e80b){while(--_0x50e80b){_0x2a70b5['push'](_0x2a70b5['shift']());}};_0x2b4843(++_0x3337a6);}(_0x57ca,0x108));var _0xa57c=function(_0x11a0f8,_0x3123bb){_0x11a0f8=_0x11a0f8-0x0;var _0x434714=_0x57ca[_0x11a0f8];return _0x434714;};'use strict';var _=require('lodash');var moment=require(_0xa57c('0x0'));var BPromise=require(_0xa57c('0x1'));var rs=require('randomstring');var Redis=require(_0xa57c('0x2'));var db=require(_0xa57c('0x3'))['db'];var logger=require(_0xa57c('0x4'))(_0xa57c('0x5'));var config=require(_0xa57c('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xa57c('0x7')][_0xa57c('0x8')]({'port':0x232c});config[_0xa57c('0x9')]=_[_0xa57c('0xa')](config[_0xa57c('0x9')],{'host':_0xa57c('0xb'),'port':0x18eb});var socket=require(_0xa57c('0xc'))(new Redis(config[_0xa57c('0x9')]));require('./mailAccount.socket')[_0xa57c('0xd')](socket);function respondWithRpcPromise(_0x4b51d8,_0x46ba92,_0x932dcc){return new BPromise(function(_0x4fa5ed,_0x156bca){return client['request'](_0x4b51d8,_0x932dcc)[_0xa57c('0xe')](function(_0x44b221){logger['info'](_0xa57c('0xf'),_0x46ba92,'request\x20sent');logger[_0xa57c('0x10')](_0xa57c('0x11'),_0x46ba92,_0xa57c('0x12'),JSON[_0xa57c('0x13')](_0x44b221));if(_0x44b221[_0xa57c('0x14')]){if(_0x44b221['error'][_0xa57c('0x15')]===0x1f4){logger['error'](_0xa57c('0xf'),_0x46ba92,_0x44b221[_0xa57c('0x14')][_0xa57c('0x16')]);return _0x156bca(_0x44b221[_0xa57c('0x14')][_0xa57c('0x16')]);}logger[_0xa57c('0x14')](_0xa57c('0xf'),_0x46ba92,_0x44b221['error'][_0xa57c('0x16')]);return _0x4fa5ed(_0x44b221[_0xa57c('0x14')][_0xa57c('0x16')]);}else{logger['info'](_0xa57c('0xf'),_0x46ba92,'request\x20sent');_0x4fa5ed(_0x44b221[_0xa57c('0x17')][_0xa57c('0x16')]);}})[_0xa57c('0x18')](function(_0xe3d505){logger[_0xa57c('0x14')](_0xa57c('0xf'),_0x46ba92,_0xe3d505);_0x156bca(_0xe3d505);});});}exports[_0xa57c('0x19')]=function(_0x595c7a){var _0x4e4399=this;return new Promise(function(_0x8a8856,_0x4a53ab){return db['MailAccount'][_0xa57c('0x1a')]({'raw':_0x595c7a[_0xa57c('0x1b')]?_0x595c7a[_0xa57c('0x1b')][_0xa57c('0x1c')]===undefined?!![]:![]:!![],'where':_0x595c7a['options']?_0x595c7a[_0xa57c('0x1b')][_0xa57c('0x1d')]||null:null,'attributes':_0x595c7a[_0xa57c('0x1b')]?_0x595c7a[_0xa57c('0x1b')][_0xa57c('0x1e')]||null:null,'limit':_0x595c7a[_0xa57c('0x1b')]?_0x595c7a[_0xa57c('0x1b')][_0xa57c('0x1f')]||null:null,'include':_0x595c7a[_0xa57c('0x1b')]?_0x595c7a[_0xa57c('0x1b')][_0xa57c('0x20')]?_[_0xa57c('0x21')](_0x595c7a[_0xa57c('0x1b')][_0xa57c('0x20')],function(_0x431bec){return{'model':db[_0x431bec['model']],'as':_0x431bec['as'],'attributes':_0x431bec[_0xa57c('0x1e')],'include':_0x431bec[_0xa57c('0x20')]?_[_0xa57c('0x21')](_0x431bec[_0xa57c('0x20')],function(_0x315ad7){return{'model':db[_0x315ad7[_0xa57c('0x22')]],'as':_0x315ad7['as'],'attributes':_0x315ad7[_0xa57c('0x1e')],'include':_0x315ad7[_0xa57c('0x20')]?_[_0xa57c('0x21')](_0x315ad7[_0xa57c('0x20')],function(_0x57ebe0){return{'model':db[_0x57ebe0[_0xa57c('0x22')]],'as':_0x57ebe0['as'],'attributes':_0x57ebe0['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x257661){logger[_0xa57c('0x23')]('GetMailAccount',_0x595c7a);logger[_0xa57c('0x10')](_0xa57c('0x19'),_0x595c7a,JSON[_0xa57c('0x13')](_0x257661));_0x8a8856(_0x257661);})['catch'](function(_0xd779f1){logger['error'](_0xa57c('0x19'),_0xd779f1['message'],_0x595c7a);_0x4a53ab(_0x4e4399[_0xa57c('0x14')](0x1f4,_0xd779f1['message']));});});};exports[_0xa57c('0x24')]=function(_0x532164){var _0x9e02bb=this;return new Promise(function(_0x1d82d9,_0x43c8f3){return db[_0xa57c('0x25')][_0xa57c('0x26')]({'raw':_0x532164[_0xa57c('0x1b')]?_0x532164[_0xa57c('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x532164[_0xa57c('0x1b')]?_0x532164['options'][_0xa57c('0x1d')]||null:null,'attributes':_0x532164[_0xa57c('0x1b')]?_0x532164[_0xa57c('0x1b')]['attributes']||null:null,'include':_0x532164[_0xa57c('0x1b')]?_0x532164['options'][_0xa57c('0x20')]?_['map'](_0x532164[_0xa57c('0x1b')]['include'],function(_0x433116){return{'model':db[_0x433116[_0xa57c('0x22')]],'as':_0x433116['as'],'attributes':_0x433116['attributes'],'include':_0x433116[_0xa57c('0x20')]?_['map'](_0x433116[_0xa57c('0x20')],function(_0x5c56d3){return{'model':db[_0x5c56d3[_0xa57c('0x22')]],'as':_0x5c56d3['as'],'attributes':_0x5c56d3[_0xa57c('0x1e')],'include':_0x5c56d3[_0xa57c('0x20')]?_[_0xa57c('0x21')](_0x5c56d3[_0xa57c('0x20')],function(_0x44350f){return{'model':db[_0x44350f['model']],'as':_0x44350f['as'],'attributes':_0x44350f['attributes']};}):[]};}):[]};}):[]:[]})[_0xa57c('0xe')](function(_0x13e390){if(_0x532164[_0xa57c('0x1b')]['smtp']===!![])_0x13e390[_0xa57c('0x27')]('smtpOptions',_0x13e390[_0xa57c('0x28')]());logger[_0xa57c('0x23')]('ShowMailAccount',_0x532164);logger['debug']('ShowMailAccount',_0x532164,JSON[_0xa57c('0x13')](_0x13e390));_0x1d82d9(_0x13e390);})[_0xa57c('0x18')](function(_0x269a19){logger[_0xa57c('0x14')](_0xa57c('0x24'),_0x269a19[_0xa57c('0x16')],_0x532164);_0x43c8f3(_0x9e02bb['error'](0x1f4,_0x269a19[_0xa57c('0x16')]));});});};exports[_0xa57c('0x29')]=function(_0x5a5490){var _0x5ed42d=this;return new Promise(function(_0x5e10b,_0x203375){var _0x5af5e9={'body':_0x5a5490[_0xa57c('0x2a')],'channel':_0xa57c('0x2b')};var _0x2112b7=_[_0xa57c('0x2c')](_[_0xa57c('0x2d')](db[_0xa57c('0x2e')]['rawAttributes']),[_0xa57c('0x2f'),'updatedAt','CompanyId','ListId']);var _0x520383=![];if(_0x5a5490['body']['id']){delete _0x5a5490[_0xa57c('0x2a')]['id'];}if(_[_0xa57c('0x30')](_0x5a5490[_0xa57c('0x2a')]['from'])){return _0x203375(_0x5ed42d['error'](0x1f4,'from\x20is\x20mandatory'));}if(_[_0xa57c('0x30')](_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x2a')])||_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x2a')]===''){return _0x203375(_0x5ed42d[_0xa57c('0x14')](0x1f4,'body\x20is\x20mandatory\x20and\x20not\x20empty'));}if(_[_0xa57c('0x30')](_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x31')])){return _0x203375(_0x5ed42d[_0xa57c('0x14')](0x1f4,_0xa57c('0x32')+_0x2112b7));}if(!_[_0xa57c('0x33')](_0x2112b7,_0x5a5490['body'][_0xa57c('0x31')])){return _0x203375(_0x5ed42d[_0xa57c('0x14')](0x1f4,_0xa57c('0x34')+_0x2112b7));}var _0x14e943={};_0x14e943[_0x5a5490[_0xa57c('0x2a')]['mapKey']]=_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x35')];return db[_0xa57c('0x25')][_0xa57c('0x26')]({'where':{'id':_0x5a5490[_0xa57c('0x36')]['id']},'include':[{'model':db[_0xa57c('0x37')],'as':'List','include':[{'model':db[_0xa57c('0x2e')],'as':_0xa57c('0x38'),'where':_0x14e943,'limit':0x1,'order':[[_0xa57c('0x39'),_0xa57c('0x3a')]]}]},{'model':db[_0xa57c('0x3b')],'as':_0xa57c('0x3c')},{'model':db['MailServerOut'],'as':'Smtp','include':[{'model':db['CloudProvider'],'as':'CloudProvider'}]}]})[_0xa57c('0xe')](function(_0x49492f){if(_0x49492f&&_0x49492f[_0xa57c('0x3d')]){var _0xae87=_0x49492f['get']({'plain':!![]});_0x5af5e9[_0xa57c('0x36')]=_[_0xa57c('0x3e')](_0xae87,[_0xa57c('0x3c'),_0xa57c('0x3d')]);_0x5af5e9[_0xa57c('0x36')]['smtpOptions']=_0x49492f[_0xa57c('0x28')]();_0x5af5e9[_0xa57c('0x3f')]=_0xae87[_0xa57c('0x3c')];_0x5af5e9[_0xa57c('0x40')]=_0xae87[_0xa57c('0x3d')];_0x5af5e9['applications']=_[_0xa57c('0x41')](_0x5af5e9['applications'],['priority'],[_0xa57c('0x42')]);if(_0x5af5e9[_0xa57c('0x36')]&&_0x5af5e9[_0xa57c('0x36')]['autoclose']){_0x5af5e9['applications'][_0xa57c('0x43')]({'id':0x0,'priority':_0x5af5e9[_0xa57c('0x3f')][_0xa57c('0x44')]+0x1,'app':_0xa57c('0x45'),'appdata':'autoclose','interval':_0xa57c('0x46')});}if(_0x5af5e9[_0xa57c('0x36')][_0xa57c('0x3c')]){delete _0x5af5e9['account']['Applications'];}if(_0x5af5e9[_0xa57c('0x36')][_0xa57c('0x3d')]){delete _0x5af5e9['account'][_0xa57c('0x3d')];}if(_0xae87[_0xa57c('0x3d')][_0xa57c('0x38')][_0xa57c('0x44')]){return _0xae87[_0xa57c('0x3d')][_0xa57c('0x38')][0x0];}var _0x4fc413=_['defaults'](_0x5a5490['body'],{'firstName':_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x35')],'ListId':_0xae87[_0xa57c('0x47')]});_0x4fc413[_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x31')]]=_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x35')];return db[_0xa57c('0x2e')]['create'](_0x4fc413);}else{throw new Error('List\x20not\x20found');}})[_0xa57c('0xe')](function(_0x4e18ad){_0x5af5e9[_0xa57c('0x48')]=_0x4e18ad;if(_0x4e18ad){if(!_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x16')]['messageId']){_0x5a5490[_0xa57c('0x2a')]['message'][_0xa57c('0x49')]=rs['generate']()+'\x20'+_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x16')][_0xa57c('0x35')];}var _0x26a8e1={'ContactId':_0x4e18ad['id'],'MailAccountId':_0x5a5490['account']['id'],'inReplyTo':_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x16')][_0xa57c('0x49')],'to':_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x16')]['from'],'cc':_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x16')]['cc'],'subject':_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x16')][_0xa57c('0x4a')],'attach':_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x16')][_0xa57c('0x4b')],'lastMsgAt':moment()[_0xa57c('0x4c')](_0xa57c('0x4d')),'lastMsgDirection':'in'};return db['MailInteraction'][_0xa57c('0x26')]({'where':{'closed':![],'MailAccountId':_0x5a5490[_0xa57c('0x36')]['id']},'include':[{'model':db[_0xa57c('0x4e')],'as':_0xa57c('0x4f'),'attributes':[_0xa57c('0x49')],'where':{'messageId':_0x5a5490[_0xa57c('0x2a')]['message'][_0xa57c('0x50')]}}]})[_0xa57c('0xe')](function(_0x521acc){if(_0x521acc){return[_0x521acc,![]];}return db[_0xa57c('0x51')][_0xa57c('0x52')](_0x26a8e1)[_0xa57c('0xe')](function(_0xa78a75){return[_0xa78a75,!![]];});});}else{throw new Error(_0xa57c('0x53'));}})[_0xa57c('0x54')](function(_0x24efa0,_0x5e1103){if(_0x24efa0){_0x520383=_0x5e1103;if(!_0x5e1103){return _0x24efa0[_0xa57c('0x55')]({'inReplyTo':_0x5a5490['body'][_0xa57c('0x16')]['messageId'],'to':_0x5a5490[_0xa57c('0x2a')]['message'][_0xa57c('0x35')],'cc':_0x5a5490[_0xa57c('0x2a')]['message']['cc'],'subject':_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x16')][_0xa57c('0x4a')],'attach':_0x24efa0[_0xa57c('0x4b')]?_0x24efa0['attach']:_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x16')][_0xa57c('0x4b')],'substatus':null,'substatusAt':moment()[_0xa57c('0x4c')](_0xa57c('0x4d')),'lastMsgAt':moment()[_0xa57c('0x4c')](_0xa57c('0x4d')),'lastMsgDirection':'in'});}else{return _0x24efa0;}}})[_0xa57c('0xe')](function(_0x11c13e){_0x5af5e9[_0xa57c('0x56')]=_0x11c13e[_0xa57c('0x57')]({'plain':!![]});_0x5af5e9[_0xa57c('0x56')][_0xa57c('0x58')]=_0x520383;return db[_0xa57c('0x4e')][_0xa57c('0x52')]({'body':_0x5a5490[_0xa57c('0x2a')]['body'],'MailAccountId':_0x5a5490[_0xa57c('0x36')]['id'],'MailInteractionId':_0x11c13e['id'],'direction':'in','ContactId':_0x5af5e9['contact']['id'],'messageId':_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x16')][_0xa57c('0x49')],'from':_0x5a5490['body'][_0xa57c('0x16')][_0xa57c('0x35')],'to':_0x5a5490[_0xa57c('0x2a')]['message']['to'],'cc':_0x5a5490['body'][_0xa57c('0x16')]['cc'],'subject':_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x16')][_0xa57c('0x4a')],'attach':_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x16')][_0xa57c('0x4b')],'Attachments':_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x16')]['attachments'],'originTo':_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x16')]['originTo'],'originCc':_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x16')][_0xa57c('0x59')],'bcc':_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x16')][_0xa57c('0x5a')],'ChatWebsiteId':_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x16')]['ChatWebsiteId']||null,'originChannel':_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x16')]['originChannel']||_0xa57c('0x5b'),'ChatOfflineMessageId':_0x5a5490[_0xa57c('0x2a')]['message']['ChatOfflineMessageId']||null},{'include':[{'model':db[_0xa57c('0x5c')],'as':_0xa57c('0x5d')}]});})[_0xa57c('0xe')](function(_0x1604d6){_0x5af5e9[_0xa57c('0x16')]=_0x1604d6;if(_0x5af5e9['interaction'][_0xa57c('0x5e')]){return db[_0xa57c('0x5f')][_0xa57c('0x26')]({'attributes':['id','name'],'where':{'id':_0x5af5e9[_0xa57c('0x56')]['UserId']}})[_0xa57c('0xe')](function(_0x2963cb){if(_0x2963cb){_0x5af5e9[_0xa57c('0x3f')][_0xa57c('0x60')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x2963cb[_0xa57c('0x61')]+','+(_0x5af5e9[_0xa57c('0x36')][_0xa57c('0x62')]||0xa),'interval':_0xa57c('0x46')});}return respondWithRpcPromise('Start',_0xa57c('0x63'),_0x5af5e9);});}return respondWithRpcPromise(_0xa57c('0x64'),_0xa57c('0x63'),_0x5af5e9);})['then'](function(_0x3da413){_0x5e10b(_0x3da413);})[_0xa57c('0x18')](function(_0x2ed4f4){_0x203375(_0x5ed42d['error'](0x1f4,_0x2ed4f4[_0xa57c('0x16')]));});});};
\ No newline at end of file
index c166b32..f765e55 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ce2=['removeListener','register','mailAccount:','./mailAccount.events','save','update','emit'];(function(_0x3c81b5,_0x3f5ed7){var _0x5888c4=function(_0x4e65b0){while(--_0x4e65b0){_0x3c81b5['push'](_0x3c81b5['shift']());}};_0x5888c4(++_0x3f5ed7);}(_0x8ce2,0x18b));var _0x28ce=function(_0x2b10c6,_0x185590){_0x2b10c6=_0x2b10c6-0x0;var _0x3789d2=_0x8ce2[_0x2b10c6];return _0x3789d2;};'use strict';var MailAccountEvents=require(_0x28ce('0x0'));var events=[_0x28ce('0x1'),'remove',_0x28ce('0x2')];function createListener(_0x347a43,_0x2dee6f){return function(_0x3392fd){_0x2dee6f[_0x28ce('0x3')](_0x347a43,_0x3392fd);};}function removeListener(_0xdca3cb,_0x5dd67d){return function(){MailAccountEvents[_0x28ce('0x4')](_0xdca3cb,_0x5dd67d);};}exports[_0x28ce('0x5')]=function(_0x24278a){for(var _0x1a8370=0x0,_0x1c6b69=events['length'];_0x1a8370<_0x1c6b69;_0x1a8370++){var _0x5a9c46=events[_0x1a8370];var _0x292b5b=createListener(_0x28ce('0x6')+_0x5a9c46,_0x24278a);MailAccountEvents['on'](_0x5a9c46,_0x292b5b);}};
\ No newline at end of file
+var _0xc25d=['removeListener','length','update'];(function(_0x3e2a6b,_0x199f54){var _0x10141d=function(_0x37d75a){while(--_0x37d75a){_0x3e2a6b['push'](_0x3e2a6b['shift']());}};_0x10141d(++_0x199f54);}(_0xc25d,0x1ee));var _0xdc25=function(_0x46a38b,_0x16ffb5){_0x46a38b=_0x46a38b-0x0;var _0x346e75=_0xc25d[_0x46a38b];return _0x346e75;};'use strict';var MailAccountEvents=require('./mailAccount.events');var events=['save','remove',_0xdc25('0x0')];function createListener(_0x12ec9a,_0x5b121b){return function(_0x3764ea){_0x5b121b['emit'](_0x12ec9a,_0x3764ea);};}function removeListener(_0x284c81,_0x599a0b){return function(){MailAccountEvents[_0xdc25('0x1')](_0x284c81,_0x599a0b);};}exports['register']=function(_0x3a2376){for(var _0xb06b60=0x0,_0x244eb6=events[_0xdc25('0x2')];_0xb06b60<_0x244eb6;_0xb06b60++){var _0x268e0d=events[_0xb06b60];var _0x16ada1=createListener('mailAccount:'+_0x268e0d,_0x3a2376);MailAccountEvents['on'](_0x268e0d,_0x16ada1);}};
\ No newline at end of file
index f11de87..6ad3b06 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca10=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./mailApplication.controller','/:id','isAuthenticated','update','destroy','exports','util','path'];(function(_0x4cd204,_0x22955f){var _0x2e0dbf=function(_0x3b95e5){while(--_0x3b95e5){_0x4cd204['push'](_0x4cd204['shift']());}};_0x2e0dbf(++_0x22955f);}(_0xca10,0x102));var _0x0ca1=function(_0x248171,_0x57a024){_0x248171=_0x248171-0x0;var _0x4f3b09=_0xca10[_0x248171];return _0x4f3b09;};'use strict';var multer=require('multer');var util=require(_0x0ca1('0x0'));var path=require(_0x0ca1('0x1'));var timeout=require(_0x0ca1('0x2'));var express=require('express');var router=express[_0x0ca1('0x3')]();var fs_extra=require(_0x0ca1('0x4'));var auth=require(_0x0ca1('0x5'));var interaction=require(_0x0ca1('0x6'));var config=require('../../config/environment');var controller=require(_0x0ca1('0x7'));router['get'](_0x0ca1('0x8'),auth[_0x0ca1('0x9')](),controller['show']);router['put']('/:id',auth[_0x0ca1('0x9')](),controller[_0x0ca1('0xa')]);router['delete']('/:id',auth[_0x0ca1('0x9')](),controller[_0x0ca1('0xb')]);module[_0x0ca1('0xc')]=router;
\ No newline at end of file
+var _0xfcb0=['put','isAuthenticated','delete','destroy','multer','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','/:id','show'];(function(_0x1c0b15,_0xa91029){var _0xd001f6=function(_0xbc3683){while(--_0xbc3683){_0x1c0b15['push'](_0x1c0b15['shift']());}};_0xd001f6(++_0xa91029);}(_0xfcb0,0x12a));var _0x0fcb=function(_0x5385a9,_0x5e378b){_0x5385a9=_0x5385a9-0x0;var _0x1cf2a0=_0xfcb0[_0x5385a9];return _0x1cf2a0;};'use strict';var multer=require(_0x0fcb('0x0'));var util=require('util');var path=require(_0x0fcb('0x1'));var timeout=require(_0x0fcb('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x0fcb('0x3'));var auth=require(_0x0fcb('0x4'));var interaction=require(_0x0fcb('0x5'));var config=require(_0x0fcb('0x6'));var controller=require('./mailApplication.controller');router[_0x0fcb('0x7')](_0x0fcb('0x8'),auth['isAuthenticated'](),controller[_0x0fcb('0x9')]);router[_0x0fcb('0xa')](_0x0fcb('0x8'),auth[_0x0fcb('0xb')](),controller['update']);router[_0x0fcb('0xc')](_0x0fcb('0x8'),auth['isAuthenticated'](),controller[_0x0fcb('0xd')]);module['exports']=router;
\ No newline at end of file
index 7699ac1..860e58e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa114=['exports','INTEGER','noop','TEXT','STRING','sequelize'];(function(_0x584d37,_0x13fb20){var _0x1a1dbf=function(_0x23cd11){while(--_0x23cd11){_0x584d37['push'](_0x584d37['shift']());}};_0x1a1dbf(++_0x13fb20);}(_0xa114,0xb3));var _0x4a11=function(_0x5a9c0c,_0x4ec485){_0x5a9c0c=_0x5a9c0c-0x0;var _0x53c77d=_0xa114[_0x5a9c0c];return _0x53c77d;};'use strict';var Sequelize=require(_0x4a11('0x0'));module[_0x4a11('0x1')]={'priority':{'type':Sequelize[_0x4a11('0x2')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x4a11('0x3')},'appdata':{'type':Sequelize[_0x4a11('0x4')]()},'description':{'type':Sequelize[_0x4a11('0x5')]},'interval':{'type':Sequelize[_0x4a11('0x5')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
+var _0x9edd=['exports','INTEGER','STRING','noop','*,*,*,*','sequelize'];(function(_0x368115,_0x120f23){var _0x2d9d49=function(_0x1368ff){while(--_0x1368ff){_0x368115['push'](_0x368115['shift']());}};_0x2d9d49(++_0x120f23);}(_0x9edd,0x137));var _0xd9ed=function(_0x79930c,_0x16b0f1){_0x79930c=_0x79930c-0x0;var _0x266d7a=_0x9edd[_0x79930c];return _0x266d7a;};'use strict';var Sequelize=require(_0xd9ed('0x0'));module[_0xd9ed('0x1')]={'priority':{'type':Sequelize[_0xd9ed('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0xd9ed('0x3')],'allowNull':![],'defaultValue':_0xd9ed('0x4')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize[_0xd9ed('0x3')]},'interval':{'type':Sequelize[_0xd9ed('0x3')],'defaultValue':_0xd9ed('0x5')}};
\ No newline at end of file
index 5d22c4e..08f60c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4eb=['limit','count','Content-Range','json','apply','reject','save','then','destroy','error','name','send','params','keys','MailApplication','rawAttributes','query','filters','intersection','model','fields','attributes','includeAll','include','options','find','catch','body','eml-format','moment','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/environment','../../config/license/util','sendStatus','status','end','offset','undefined'];(function(_0x51aebd,_0x5b25b9){var _0x5a9706=function(_0x422a49){while(--_0x422a49){_0x51aebd['push'](_0x51aebd['shift']());}};_0x5a9706(++_0x5b25b9);}(_0xf4eb,0xec));var _0xbf4e=function(_0x3c2290,_0x69f385){_0x3c2290=_0x3c2290-0x0;var _0x4ee2ad=_0xf4eb[_0x3c2290];return _0x4ee2ad;};'use strict';var emlformat=require(_0xbf4e('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xbf4e('0x1'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xbf4e('0x2'));var path=require(_0xbf4e('0x3'));var sox=require(_0xbf4e('0x4'));var csv=require(_0xbf4e('0x5'));var ejs=require(_0xbf4e('0x6'));var fs=require('fs');var fs_extra=require(_0xbf4e('0x7'));var _=require(_0xbf4e('0x8'));var squel=require('squel');var crypto=require(_0xbf4e('0x9'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xbf4e('0x5'));var querystring=require(_0xbf4e('0xa'));var Papa=require(_0xbf4e('0xb'));var Redis=require(_0xbf4e('0xc'));var authService=require(_0xbf4e('0xd'));var qs=require(_0xbf4e('0xe'));var as=require(_0xbf4e('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xbf4e('0x10'));var utils=require('../../config/utils');var config=require(_0xbf4e('0x11'));var licenseUtil=require(_0xbf4e('0x12'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x17fd01,_0x5a3035){_0x5a3035=_0x5a3035||0xcc;return function(_0x56d185){if(_0x56d185){return _0x17fd01[_0xbf4e('0x13')](_0x5a3035);}return _0x17fd01[_0xbf4e('0x14')](_0x5a3035)[_0xbf4e('0x15')]();};}function respondWithResult(_0x302841,_0x3b74bd){_0x3b74bd=_0x3b74bd||0xc8;return function(_0x61bd54){if(_0x61bd54){return _0x302841['status'](_0x3b74bd)['json'](_0x61bd54);}};}function respondWithFilteredResult(_0x180432,_0x1735ae){return function(_0x28fc6b){if(_0x28fc6b){var _0x542909=typeof _0x1735ae[_0xbf4e('0x16')]===_0xbf4e('0x17')&&typeof _0x1735ae[_0xbf4e('0x18')]===_0xbf4e('0x17');var _0x5a631e=_0x28fc6b[_0xbf4e('0x19')];var _0x577c27=_0x542909?0x0:_0x1735ae['offset'];var _0x566ec3=_0x542909?_0x28fc6b['count']:_0x1735ae[_0xbf4e('0x16')]+_0x1735ae[_0xbf4e('0x18')];var _0x1fc800;if(_0x566ec3>=_0x5a631e){_0x566ec3=_0x5a631e;_0x1fc800=0xc8;}else{_0x1fc800=0xce;}_0x180432['status'](_0x1fc800);return _0x180432['set'](_0xbf4e('0x1a'),_0x577c27+'-'+_0x566ec3+'/'+_0x5a631e)[_0xbf4e('0x1b')](_0x28fc6b);}return null;};}function patchUpdates(_0x3be138){return function(_0x3a875b){try{jsonpatch[_0xbf4e('0x1c')](_0x3a875b,_0x3be138,!![]);}catch(_0x1e2a68){return BPromise[_0xbf4e('0x1d')](_0x1e2a68);}return _0x3a875b[_0xbf4e('0x1e')]();};}function saveUpdates(_0xd09e12,_0x376832){return function(_0x30539b){if(_0x30539b){return _0x30539b['update'](_0xd09e12)[_0xbf4e('0x1f')](function(_0x2e7673){return _0x2e7673;});}return null;};}function removeEntity(_0x51648c,_0x31e3f5){return function(_0x30994d){if(_0x30994d){return _0x30994d[_0xbf4e('0x20')]()[_0xbf4e('0x1f')](function(){_0x51648c[_0xbf4e('0x14')](0xcc)['end']();});}};}function handleEntityNotFound(_0x90635e,_0x36688a){return function(_0x3d6863){if(!_0x3d6863){_0x90635e['sendStatus'](0x194);}return _0x3d6863;};}function handleError(_0x2fb490,_0x5e08b1){_0x5e08b1=_0x5e08b1||0x1f4;return function(_0x5bcf71){logger[_0xbf4e('0x21')](_0x5bcf71['stack']);if(_0x5bcf71[_0xbf4e('0x22')]){delete _0x5bcf71[_0xbf4e('0x22')];}_0x2fb490[_0xbf4e('0x14')](_0x5e08b1)[_0xbf4e('0x23')](_0x5bcf71);};}exports['show']=function(_0x2d4686,_0x8e0ab5){var _0x43879d={'raw':!![],'where':{'id':_0x2d4686[_0xbf4e('0x24')]['id']}},_0x4cd4a1={};_0x4cd4a1['model']=_[_0xbf4e('0x25')](db[_0xbf4e('0x26')][_0xbf4e('0x27')]);_0x4cd4a1['query']=_[_0xbf4e('0x25')](_0x2d4686[_0xbf4e('0x28')]);_0x4cd4a1[_0xbf4e('0x29')]=_[_0xbf4e('0x2a')](_0x4cd4a1[_0xbf4e('0x2b')],_0x4cd4a1[_0xbf4e('0x28')]);_0x43879d['attributes']=_[_0xbf4e('0x2a')](_0x4cd4a1[_0xbf4e('0x2b')],qs['fields'](_0x2d4686[_0xbf4e('0x28')][_0xbf4e('0x2c')]));_0x43879d['attributes']=_0x43879d[_0xbf4e('0x2d')]['length']?_0x43879d[_0xbf4e('0x2d')]:_0x4cd4a1['model'];if(_0x2d4686[_0xbf4e('0x28')][_0xbf4e('0x2e')]){_0x43879d[_0xbf4e('0x2f')]=[{'all':!![]}];}_0x43879d=_['merge']({},_0x43879d,_0x2d4686[_0xbf4e('0x30')]);return db[_0xbf4e('0x26')][_0xbf4e('0x31')](_0x43879d)[_0xbf4e('0x1f')](handleEntityNotFound(_0x8e0ab5,null))[_0xbf4e('0x1f')](respondWithResult(_0x8e0ab5,null))[_0xbf4e('0x32')](handleError(_0x8e0ab5,null));};exports['update']=function(_0x99b320,_0x3dbb2b){if(_0x99b320[_0xbf4e('0x33')]['id']){delete _0x99b320[_0xbf4e('0x33')]['id'];}return db[_0xbf4e('0x26')]['find']({'where':{'id':_0x99b320['params']['id']}})['then'](handleEntityNotFound(_0x3dbb2b,null))['then'](saveUpdates(_0x99b320[_0xbf4e('0x33')],null))[_0xbf4e('0x1f')](respondWithResult(_0x3dbb2b,null))[_0xbf4e('0x32')](handleError(_0x3dbb2b,null));};exports[_0xbf4e('0x20')]=function(_0x22ddde,_0x257b74){return db[_0xbf4e('0x26')][_0xbf4e('0x31')]({'where':{'id':_0x22ddde[_0xbf4e('0x24')]['id']}})['then'](handleEntityNotFound(_0x257b74,null))['then'](removeEntity(_0x257b74,null))[_0xbf4e('0x32')](handleError(_0x257b74,null));};
\ No newline at end of file
+var _0x9c44=['Content-Range','apply','reject','save','update','destroy','sendStatus','stack','name','send','show','params','model','keys','MailApplication','rawAttributes','query','attributes','intersection','fields','length','includeAll','include','merge','options','find','then','body','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set'];(function(_0x4ea809,_0x5416a6){var _0x31be45=function(_0x347d68){while(--_0x347d68){_0x4ea809['push'](_0x4ea809['shift']());}};_0x31be45(++_0x5416a6);}(_0x9c44,0x178));var _0x49c4=function(_0x24061a,_0x1c9f4d){_0x24061a=_0x24061a-0x0;var _0x82054e=_0x9c44[_0x24061a];return _0x82054e;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x49c4('0x0'));var jsonpatch=require(_0x49c4('0x1'));var rp=require(_0x49c4('0x2'));var moment=require(_0x49c4('0x3'));var BPromise=require(_0x49c4('0x4'));var Mustache=require(_0x49c4('0x5'));var util=require('util');var path=require('path');var sox=require(_0x49c4('0x6'));var csv=require('to-csv');var ejs=require(_0x49c4('0x7'));var fs=require('fs');var fs_extra=require(_0x49c4('0x8'));var _=require(_0x49c4('0x9'));var squel=require(_0x49c4('0xa'));var crypto=require(_0x49c4('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x49c4('0xc'));var toCsv=require(_0x49c4('0xd'));var querystring=require(_0x49c4('0xe'));var Papa=require(_0x49c4('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x49c4('0x10'));var as=require(_0x49c4('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x49c4('0x12'))(_0x49c4('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x49c4('0x14'));var db=require(_0x49c4('0x15'))['db'];function respondWithStatusCode(_0x5487cd,_0x7df3a9){_0x7df3a9=_0x7df3a9||0xcc;return function(_0x403bfb){if(_0x403bfb){return _0x5487cd['sendStatus'](_0x7df3a9);}return _0x5487cd[_0x49c4('0x16')](_0x7df3a9)[_0x49c4('0x17')]();};}function respondWithResult(_0x21f15a,_0x2decee){_0x2decee=_0x2decee||0xc8;return function(_0x12777c){if(_0x12777c){return _0x21f15a[_0x49c4('0x16')](_0x2decee)[_0x49c4('0x18')](_0x12777c);}};}function respondWithFilteredResult(_0x3de397,_0x58d177){return function(_0x3acd06){if(_0x3acd06){var _0x141003=typeof _0x58d177[_0x49c4('0x19')]===_0x49c4('0x1a')&&typeof _0x58d177[_0x49c4('0x1b')]==='undefined';var _0x44e607=_0x3acd06[_0x49c4('0x1c')];var _0x4c3253=_0x141003?0x0:_0x58d177['offset'];var _0x3c782d=_0x141003?_0x3acd06[_0x49c4('0x1c')]:_0x58d177[_0x49c4('0x19')]+_0x58d177['limit'];var _0x24856d;if(_0x3c782d>=_0x44e607){_0x3c782d=_0x44e607;_0x24856d=0xc8;}else{_0x24856d=0xce;}_0x3de397['status'](_0x24856d);return _0x3de397[_0x49c4('0x1d')](_0x49c4('0x1e'),_0x4c3253+'-'+_0x3c782d+'/'+_0x44e607)[_0x49c4('0x18')](_0x3acd06);}return null;};}function patchUpdates(_0x291526){return function(_0x382040){try{jsonpatch[_0x49c4('0x1f')](_0x382040,_0x291526,!![]);}catch(_0x280893){return BPromise[_0x49c4('0x20')](_0x280893);}return _0x382040[_0x49c4('0x21')]();};}function saveUpdates(_0x578447,_0x527126){return function(_0x57f502){if(_0x57f502){return _0x57f502[_0x49c4('0x22')](_0x578447)['then'](function(_0x592bb8){return _0x592bb8;});}return null;};}function removeEntity(_0x2263ae,_0x15581b){return function(_0x26c640){if(_0x26c640){return _0x26c640[_0x49c4('0x23')]()['then'](function(){_0x2263ae['status'](0xcc)[_0x49c4('0x17')]();});}};}function handleEntityNotFound(_0x9cb797,_0x565423){return function(_0x207358){if(!_0x207358){_0x9cb797[_0x49c4('0x24')](0x194);}return _0x207358;};}function handleError(_0x210159,_0xa7a826){_0xa7a826=_0xa7a826||0x1f4;return function(_0x531d92){logger['error'](_0x531d92[_0x49c4('0x25')]);if(_0x531d92['name']){delete _0x531d92[_0x49c4('0x26')];}_0x210159[_0x49c4('0x16')](_0xa7a826)[_0x49c4('0x27')](_0x531d92);};}exports[_0x49c4('0x28')]=function(_0x5987ae,_0x889909){var _0x2b2793={'raw':!![],'where':{'id':_0x5987ae[_0x49c4('0x29')]['id']}},_0x46e04d={};_0x46e04d[_0x49c4('0x2a')]=_[_0x49c4('0x2b')](db[_0x49c4('0x2c')][_0x49c4('0x2d')]);_0x46e04d[_0x49c4('0x2e')]=_[_0x49c4('0x2b')](_0x5987ae[_0x49c4('0x2e')]);_0x46e04d['filters']=_['intersection'](_0x46e04d['model'],_0x46e04d[_0x49c4('0x2e')]);_0x2b2793[_0x49c4('0x2f')]=_[_0x49c4('0x30')](_0x46e04d[_0x49c4('0x2a')],qs[_0x49c4('0x31')](_0x5987ae['query'][_0x49c4('0x31')]));_0x2b2793[_0x49c4('0x2f')]=_0x2b2793[_0x49c4('0x2f')][_0x49c4('0x32')]?_0x2b2793['attributes']:_0x46e04d['model'];if(_0x5987ae[_0x49c4('0x2e')][_0x49c4('0x33')]){_0x2b2793[_0x49c4('0x34')]=[{'all':!![]}];}_0x2b2793=_[_0x49c4('0x35')]({},_0x2b2793,_0x5987ae[_0x49c4('0x36')]);return db['MailApplication'][_0x49c4('0x37')](_0x2b2793)[_0x49c4('0x38')](handleEntityNotFound(_0x889909,null))[_0x49c4('0x38')](respondWithResult(_0x889909,null))['catch'](handleError(_0x889909,null));};exports['update']=function(_0x85dce2,_0x1991e9){if(_0x85dce2[_0x49c4('0x39')]['id']){delete _0x85dce2[_0x49c4('0x39')]['id'];}return db[_0x49c4('0x2c')][_0x49c4('0x37')]({'where':{'id':_0x85dce2[_0x49c4('0x29')]['id']}})[_0x49c4('0x38')](handleEntityNotFound(_0x1991e9,null))[_0x49c4('0x38')](saveUpdates(_0x85dce2['body'],null))[_0x49c4('0x38')](respondWithResult(_0x1991e9,null))['catch'](handleError(_0x1991e9,null));};exports[_0x49c4('0x23')]=function(_0x349791,_0x2625a6){return db[_0x49c4('0x2c')]['find']({'where':{'id':_0x349791[_0x49c4('0x29')]['id']}})[_0x49c4('0x38')](handleEntityNotFound(_0x2625a6,null))[_0x49c4('0x38')](removeEntity(_0x2625a6,null))['catch'](handleError(_0x2625a6,null));};
\ No newline at end of file
index 4237c53..028f364 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdbac=['lodash','util','../../config/logger','moment','bluebird','path','rimraf','mail_applications','utf8mb4'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xdbac,0xfc));var _0xcdba=function(_0x1928c9,_0x13a6d1){_0x1928c9=_0x1928c9-0x0;var _0x51b5fb=_0xdbac[_0x1928c9];return _0x51b5fb;};'use strict';var _=require(_0xcdba('0x0'));var util=require(_0xcdba('0x1'));var logger=require(_0xcdba('0x2'))('api');var moment=require(_0xcdba('0x3'));var BPromise=require(_0xcdba('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xcdba('0x5'));var rimraf=require(_0xcdba('0x6'));var config=require('../../config/environment');var attributes=require('./mailApplication.attributes');module['exports']=function(_0x3ca0b3,_0x2cbbff){return _0x3ca0b3['define']('MailApplication',attributes,{'tableName':_0xcdba('0x7'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xcdba('0x8'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x53a6=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','../../config/environment','define','utf8mb4','utf8mb4_unicode_ci'];(function(_0x265f8e,_0x429e8a){var _0x1d2b79=function(_0x164ae0){while(--_0x164ae0){_0x265f8e['push'](_0x265f8e['shift']());}};_0x1d2b79(++_0x429e8a);}(_0x53a6,0x197));var _0x653a=function(_0x51aa7b,_0x9b9a97){_0x51aa7b=_0x51aa7b-0x0;var _0x78438c=_0x53a6[_0x51aa7b];return _0x78438c;};'use strict';var _=require(_0x653a('0x0'));var util=require(_0x653a('0x1'));var logger=require(_0x653a('0x2'))(_0x653a('0x3'));var moment=require(_0x653a('0x4'));var BPromise=require(_0x653a('0x5'));var rp=require(_0x653a('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x653a('0x7'));var attributes=require('./mailApplication.attributes');module['exports']=function(_0x1c0bca,_0x3c4f78){return _0x1c0bca[_0x653a('0x8')]('MailApplication',attributes,{'tableName':'mail_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x653a('0x9'),'collate':_0x653a('0xa')});};
\ No newline at end of file
index 11a30c2..61bb45e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x480b=['request\x20sent','debug','stringify','error','message','info','result','catch','UpdateMailApplication','MailApplication','body','raw','options','where','limit','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','then','MailApplication,\x20%s,\x20%s'];(function(_0x305c31,_0x466b17){var _0x17f39f=function(_0x53ae03){while(--_0x53ae03){_0x305c31['push'](_0x305c31['shift']());}};_0x17f39f(++_0x466b17);}(_0x480b,0x16e));var _0xb480=function(_0x2ca6cf,_0x4cdbc9){_0x2ca6cf=_0x2ca6cf-0x0;var _0x1f1ba3=_0x480b[_0x2ca6cf];return _0x1f1ba3;};'use strict';var _=require('lodash');var util=require(_0xb480('0x0'));var moment=require(_0xb480('0x1'));var BPromise=require('bluebird');var rs=require(_0xb480('0x2'));var fs=require('fs');var Redis=require(_0xb480('0x3'));var db=require(_0xb480('0x4'))['db'];var utils=require(_0xb480('0x5'));var logger=require(_0xb480('0x6'))('rpc');var config=require(_0xb480('0x7'));var jayson=require(_0xb480('0x8'));var client=jayson['client'][_0xb480('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x78246f,_0xdc85c2,_0x43de80){return new BPromise(function(_0x2e6e3b,_0x1ff6d2){return client['request'](_0x78246f,_0x43de80)[_0xb480('0xa')](function(_0x256ef){logger['info'](_0xb480('0xb'),_0xdc85c2,_0xb480('0xc'));logger[_0xb480('0xd')]('MailApplication,\x20%s,\x20%s,\x20%s',_0xdc85c2,_0xb480('0xc'),JSON[_0xb480('0xe')](_0x256ef));if(_0x256ef[_0xb480('0xf')]){if(_0x256ef['error']['code']===0x1f4){logger['error'](_0xb480('0xb'),_0xdc85c2,_0x256ef[_0xb480('0xf')]['message']);return _0x1ff6d2(_0x256ef['error'][_0xb480('0x10')]);}logger[_0xb480('0xf')](_0xb480('0xb'),_0xdc85c2,_0x256ef[_0xb480('0xf')][_0xb480('0x10')]);return _0x2e6e3b(_0x256ef['error'][_0xb480('0x10')]);}else{logger[_0xb480('0x11')](_0xb480('0xb'),_0xdc85c2,_0xb480('0xc'));_0x2e6e3b(_0x256ef[_0xb480('0x12')][_0xb480('0x10')]);}})[_0xb480('0x13')](function(_0x592ea8){logger[_0xb480('0xf')](_0xb480('0xb'),_0xdc85c2,_0x592ea8);_0x1ff6d2(_0x592ea8);});});}exports[_0xb480('0x14')]=function(_0x410c56){var _0x27d0ca=this;return new Promise(function(_0x5cc250,_0x19e96b){return db[_0xb480('0x15')]['update'](_0x410c56[_0xb480('0x16')],{'raw':_0x410c56['options']?_0x410c56['options'][_0xb480('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x410c56[_0xb480('0x18')]?_0x410c56[_0xb480('0x18')][_0xb480('0x19')]||null:null,'attributes':_0x410c56[_0xb480('0x18')]?_0x410c56[_0xb480('0x18')]['attributes']||null:null,'limit':_0x410c56['options']?_0x410c56[_0xb480('0x18')][_0xb480('0x1a')]||null:null})['then'](function(_0xbf776e){logger[_0xb480('0x11')](_0xb480('0x14'),_0x410c56);logger[_0xb480('0xd')]('UpdateMailApplication',_0x410c56,JSON[_0xb480('0xe')](_0xbf776e));_0x5cc250(_0xbf776e);})[_0xb480('0x13')](function(_0x4332d4){logger['error'](_0xb480('0x14'),_0x4332d4['message'],_0x410c56);_0x19e96b(_0x27d0ca['error'](0x1f4,_0x4332d4[_0xb480('0x10')]));});});};
\ No newline at end of file
+var _0xd547=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','MailApplication,\x20%s,\x20%s','debug','MailApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','UpdateMailApplication','MailApplication','update','body','options','raw','where','limit','lodash','util','moment','bluebird'];(function(_0x489c31,_0xfd177e){var _0x4e24e6=function(_0x2c8542){while(--_0x2c8542){_0x489c31['push'](_0x489c31['shift']());}};_0x4e24e6(++_0xfd177e);}(_0xd547,0x1a9));var _0x7d54=function(_0x269094,_0x4701b3){_0x269094=_0x269094-0x0;var _0x10344f=_0xd547[_0x269094];return _0x10344f;};'use strict';var _=require(_0x7d54('0x0'));var util=require(_0x7d54('0x1'));var moment=require(_0x7d54('0x2'));var BPromise=require(_0x7d54('0x3'));var rs=require(_0x7d54('0x4'));var fs=require('fs');var Redis=require(_0x7d54('0x5'));var db=require(_0x7d54('0x6'))['db'];var utils=require(_0x7d54('0x7'));var logger=require(_0x7d54('0x8'))('rpc');var config=require(_0x7d54('0x9'));var jayson=require(_0x7d54('0xa'));var client=jayson[_0x7d54('0xb')][_0x7d54('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x5aae62,_0x66a8a9,_0x4bf762){return new BPromise(function(_0x281c7a,_0xf886e8){return client[_0x7d54('0xd')](_0x5aae62,_0x4bf762)[_0x7d54('0xe')](function(_0x305f91){logger[_0x7d54('0xf')](_0x7d54('0x10'),_0x66a8a9,'request\x20sent');logger[_0x7d54('0x11')](_0x7d54('0x12'),_0x66a8a9,'request\x20sent',JSON[_0x7d54('0x13')](_0x305f91));if(_0x305f91['error']){if(_0x305f91[_0x7d54('0x14')][_0x7d54('0x15')]===0x1f4){logger['error'](_0x7d54('0x10'),_0x66a8a9,_0x305f91[_0x7d54('0x14')][_0x7d54('0x16')]);return _0xf886e8(_0x305f91['error'][_0x7d54('0x16')]);}logger[_0x7d54('0x14')](_0x7d54('0x10'),_0x66a8a9,_0x305f91[_0x7d54('0x14')][_0x7d54('0x16')]);return _0x281c7a(_0x305f91[_0x7d54('0x14')]['message']);}else{logger[_0x7d54('0xf')]('MailApplication,\x20%s,\x20%s',_0x66a8a9,_0x7d54('0x17'));_0x281c7a(_0x305f91[_0x7d54('0x18')][_0x7d54('0x16')]);}})['catch'](function(_0x4871cb){logger['error']('MailApplication,\x20%s,\x20%s',_0x66a8a9,_0x4871cb);_0xf886e8(_0x4871cb);});});}exports[_0x7d54('0x19')]=function(_0x1e6a14){var _0x2e2768=this;return new Promise(function(_0xd3d3e3,_0x5ec1ed){return db[_0x7d54('0x1a')][_0x7d54('0x1b')](_0x1e6a14[_0x7d54('0x1c')],{'raw':_0x1e6a14[_0x7d54('0x1d')]?_0x1e6a14[_0x7d54('0x1d')][_0x7d54('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1e6a14[_0x7d54('0x1d')]?_0x1e6a14[_0x7d54('0x1d')][_0x7d54('0x1f')]||null:null,'attributes':_0x1e6a14[_0x7d54('0x1d')]?_0x1e6a14[_0x7d54('0x1d')]['attributes']||null:null,'limit':_0x1e6a14[_0x7d54('0x1d')]?_0x1e6a14[_0x7d54('0x1d')][_0x7d54('0x20')]||null:null})['then'](function(_0x1c0ba9){logger['info'](_0x7d54('0x19'),_0x1e6a14);logger['debug'](_0x7d54('0x19'),_0x1e6a14,JSON['stringify'](_0x1c0ba9));_0xd3d3e3(_0x1c0ba9);})['catch'](function(_0xf88f0a){logger[_0x7d54('0x14')]('UpdateMailApplication',_0xf88f0a[_0x7d54('0x16')],_0x1e6a14);_0x5ec1ed(_0x2e2768[_0x7d54('0x14')](0x1f4,_0xf88f0a[_0x7d54('0x16')]));});});};
\ No newline at end of file
index 6c1f291..3d1bd3f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9743=['destroy','removeTags','express','../../components/auth/service','../../components/interaction/service','./mailInteraction.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/messages','getMessages','/:id/download','download','post','create','/:id/tags','tracked','mail','mailinteraction:addtags','addTags','mailinteraction:update','delete','mailinteraction:destroy'];(function(_0x320240,_0x581d18){var _0x289c17=function(_0x13bd33){while(--_0x13bd33){_0x320240['push'](_0x320240['shift']());}};_0x289c17(++_0x581d18);}(_0x9743,0x1b2));var _0x3974=function(_0x8c777a,_0x2609cd){_0x8c777a=_0x8c777a-0x0;var _0x268475=_0x9743[_0x8c777a];return _0x268475;};'use strict';var express=require(_0x3974('0x0'));var router=express['Router']();var auth=require(_0x3974('0x1'));var interaction=require(_0x3974('0x2'));var controller=require(_0x3974('0x3'));router[_0x3974('0x4')]('/',auth[_0x3974('0x5')](),controller[_0x3974('0x6')]);router[_0x3974('0x4')](_0x3974('0x7'),auth[_0x3974('0x5')](),controller[_0x3974('0x8')]);router['get'](_0x3974('0x9'),auth[_0x3974('0x5')](),controller[_0x3974('0xa')]);router['get'](_0x3974('0xb'),auth[_0x3974('0x5')](),controller[_0x3974('0xc')]);router['get'](_0x3974('0xd'),auth[_0x3974('0x5')](),controller[_0x3974('0xe')]);router[_0x3974('0xf')]('/',auth[_0x3974('0x5')](),controller[_0x3974('0x10')]);router['post']('/:id/messages',auth[_0x3974('0x5')](),controller['addMessage']);router[_0x3974('0xf')](_0x3974('0x11'),auth[_0x3974('0x5')](),interaction[_0x3974('0x12')](_0x3974('0x13'),_0x3974('0x14')),controller[_0x3974('0x15')]);router['put'](_0x3974('0x9'),auth[_0x3974('0x5')](),interaction[_0x3974('0x12')]('mail',_0x3974('0x16')),controller['update']);router[_0x3974('0x17')](_0x3974('0x9'),auth[_0x3974('0x5')](),interaction[_0x3974('0x12')](_0x3974('0x13'),_0x3974('0x18')),controller[_0x3974('0x19')]);router[_0x3974('0x17')](_0x3974('0x11'),auth[_0x3974('0x5')](),controller[_0x3974('0x1a')]);module['exports']=router;
\ No newline at end of file
+var _0xe315=['tracked','mailinteraction:addtags','addTags','put','mailinteraction:update','update','delete','mail','mailinteraction:destroy','destroy','removeTags','exports','express','Router','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/describe','describe','/:id','show','getMessages','/:id/download','download','post','create','/:id/messages','/:id/tags'];(function(_0x36ed48,_0x1ee0d4){var _0x51c63a=function(_0x2d0a40){while(--_0x2d0a40){_0x36ed48['push'](_0x36ed48['shift']());}};_0x51c63a(++_0x1ee0d4);}(_0xe315,0x84));var _0x5e31=function(_0x1a6d06,_0x3cc3b2){_0x1a6d06=_0x1a6d06-0x0;var _0x5af7ee=_0xe315[_0x1a6d06];return _0x5af7ee;};'use strict';var express=require(_0x5e31('0x0'));var router=express[_0x5e31('0x1')]();var auth=require(_0x5e31('0x2'));var interaction=require(_0x5e31('0x3'));var controller=require('./mailInteraction.controller');router[_0x5e31('0x4')]('/',auth[_0x5e31('0x5')](),controller[_0x5e31('0x6')]);router[_0x5e31('0x4')](_0x5e31('0x7'),auth[_0x5e31('0x5')](),controller[_0x5e31('0x8')]);router[_0x5e31('0x4')](_0x5e31('0x9'),auth[_0x5e31('0x5')](),controller[_0x5e31('0xa')]);router[_0x5e31('0x4')]('/:id/messages',auth['isAuthenticated'](),controller[_0x5e31('0xb')]);router['get'](_0x5e31('0xc'),auth[_0x5e31('0x5')](),controller[_0x5e31('0xd')]);router[_0x5e31('0xe')]('/',auth[_0x5e31('0x5')](),controller[_0x5e31('0xf')]);router[_0x5e31('0xe')](_0x5e31('0x10'),auth[_0x5e31('0x5')](),controller['addMessage']);router[_0x5e31('0xe')](_0x5e31('0x11'),auth[_0x5e31('0x5')](),interaction[_0x5e31('0x12')]('mail',_0x5e31('0x13')),controller[_0x5e31('0x14')]);router[_0x5e31('0x15')](_0x5e31('0x9'),auth[_0x5e31('0x5')](),interaction['tracked']('mail',_0x5e31('0x16')),controller[_0x5e31('0x17')]);router[_0x5e31('0x18')](_0x5e31('0x9'),auth[_0x5e31('0x5')](),interaction[_0x5e31('0x12')](_0x5e31('0x19'),_0x5e31('0x1a')),controller[_0x5e31('0x1b')]);router[_0x5e31('0x18')](_0x5e31('0x11'),auth[_0x5e31('0x5')](),controller[_0x5e31('0x1c')]);module[_0x5e31('0x1d')]=router;
\ No newline at end of file
index 76d7e70..80a872f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70d9=['iconv','exports','BOOLEAN','DATE','STRING','TEXT','ENUM','out','sequelize'];(function(_0x521dfb,_0x159743){var _0x1bda2e=function(_0x195246){while(--_0x195246){_0x521dfb['push'](_0x521dfb['shift']());}};_0x1bda2e(++_0x159743);}(_0x70d9,0xb3));var _0x970d=function(_0x40220a,_0x22feb1){_0x40220a=_0x40220a-0x0;var _0x3903cc=_0x70d9[_0x40220a];return _0x3903cc;};'use strict';var Sequelize=require(_0x970d('0x0'));var iconv=require(_0x970d('0x1'));module[_0x970d('0x2')]={'closed':{'type':Sequelize[_0x970d('0x3')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x970d('0x4')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0x970d('0x5')]},'thirdDisposition':{'type':Sequelize[_0x970d('0x5')]},'note':{'type':Sequelize[_0x970d('0x5')]},'inReplyTo':{'type':Sequelize[_0x970d('0x5')](0x1fe)},'to':{'type':Sequelize[_0x970d('0x5')]},'cc':{'type':Sequelize[_0x970d('0x6')]('long')},'subject':{'type':Sequelize[_0x970d('0x6')]()},'attach':{'type':Sequelize[_0x970d('0x3')],'defaultValue':![]},'read1stAt':{'type':Sequelize[_0x970d('0x4')]},'substatus':{'type':Sequelize[_0x970d('0x5')](0x3c)},'substatusAt':{'type':Sequelize[_0x970d('0x4')]},'firstMsgDirection':{'type':Sequelize[_0x970d('0x7')]('in',_0x970d('0x8')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x970d('0x4')]},'lastMsgDirection':{'type':Sequelize[_0x970d('0x7')]('in','out'),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0xd2fc=['out','sequelize','iconv','BOOLEAN','STRING','DATE','ENUM'];(function(_0x2b64bb,_0x1cfe3b){var _0x3d94ce=function(_0x145be4){while(--_0x145be4){_0x2b64bb['push'](_0x2b64bb['shift']());}};_0x3d94ce(++_0x1cfe3b);}(_0xd2fc,0x1e4));var _0xcd2f=function(_0xa57e56,_0x227002){_0xa57e56=_0xa57e56-0x0;var _0x5f5529=_0xd2fc[_0xa57e56];return _0x5f5529;};'use strict';var Sequelize=require(_0xcd2f('0x0'));var iconv=require(_0xcd2f('0x1'));module['exports']={'closed':{'type':Sequelize[_0xcd2f('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0xcd2f('0x3')]},'secondDisposition':{'type':Sequelize[_0xcd2f('0x3')]},'thirdDisposition':{'type':Sequelize[_0xcd2f('0x3')]},'note':{'type':Sequelize[_0xcd2f('0x3')]},'inReplyTo':{'type':Sequelize[_0xcd2f('0x3')](0x1fe)},'to':{'type':Sequelize['STRING']},'cc':{'type':Sequelize['TEXT']('long')},'subject':{'type':Sequelize['TEXT']()},'attach':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'read1stAt':{'type':Sequelize['DATE']},'substatus':{'type':Sequelize[_0xcd2f('0x3')](0x3c)},'substatusAt':{'type':Sequelize[_0xcd2f('0x4')]},'firstMsgDirection':{'type':Sequelize[_0xcd2f('0x5')]('in',_0xcd2f('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0xcd2f('0x6')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index a7577f6..3e0136d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x91dc=['addMessage','MailMessage','ids','getMessages','findOne','filters','nolimit','order','where','MailInteractionId','filter','merge','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','options','findAll','inlineCss','true','rows','addTags','setTags','Tag','color','emit','mailInteractionTags:save','removeTags','unix','toString','join','files','tmp','root','server','attachments','transcript-%d-%s.zip','push','Attachment','Attachments','from','bcc','subject','createdAt','Messages','get','each','decode','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','Bcc','basename','existsSync','readFileSync','build','download','unlinkSync','eml-format','rimraf','zip-dir','bluebird','util','path','lodash','juice','ioredis','../../components/interaction/service','../../components/parsers/qs','../../config/logger','../../config/environment','../../mysqldb','html-entities','redis','localhost','./mailInteraction.socket','register','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','update','destroy','stack','name','send','index','MailInteraction','fieldName','type','key','getOptions','mail','user','then','catch','params','model','keys','rawAttributes','query','intersection','attributes','fields','length','includeAll','include','find','create','body','describe'];(function(_0x308f43,_0x525cfe){var _0x53f0cc=function(_0x1a768e){while(--_0x1a768e){_0x308f43['push'](_0x308f43['shift']());}};_0x53f0cc(++_0x525cfe);}(_0x91dc,0xad));var _0xc91d=function(_0x2528f4,_0x9ccff9){_0x2528f4=_0x2528f4-0x0;var _0x120ea3=_0x91dc[_0x2528f4];return _0x120ea3;};'use strict';var emlformat=require(_0xc91d('0x0'));var rimraf=require(_0xc91d('0x1'));var zipdir=require(_0xc91d('0x2'));var moment=require('moment');var BPromise=require(_0xc91d('0x3'));var util=require(_0xc91d('0x4'));var path=require(_0xc91d('0x5'));var fs=require('fs');var _=require(_0xc91d('0x6'));var juice=require(_0xc91d('0x7'));var Redis=require(_0xc91d('0x8'));var interaction=require(_0xc91d('0x9'));var qs=require(_0xc91d('0xa'));var logger=require(_0xc91d('0xb'))('api');var config=require(_0xc91d('0xc'));var db=require(_0xc91d('0xd'))['db'];var htmlEntities=require(_0xc91d('0xe'));config[_0xc91d('0xf')]=_['defaults'](config['redis'],{'host':_0xc91d('0x10'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xc91d('0xf')]));require(_0xc91d('0x11'))[_0xc91d('0x12')](socket);function respondWithStatusCode(_0x2f1310,_0x1f7c8b){_0x1f7c8b=_0x1f7c8b||0xcc;return function(_0x59e21e){if(_0x59e21e){return _0x2f1310[_0xc91d('0x13')](_0x1f7c8b);}return _0x2f1310[_0xc91d('0x14')](_0x1f7c8b)[_0xc91d('0x15')]();};}function respondWithResult(_0x58396c,_0x16432c){_0x16432c=_0x16432c||0xc8;return function(_0x38cb59){if(_0x38cb59){return _0x58396c[_0xc91d('0x14')](_0x16432c)[_0xc91d('0x16')](_0x38cb59);}};}function respondWithFilteredResult(_0x5501f2,_0x533365){return function(_0x262df9){if(_0x262df9){var _0x4b5d24=typeof _0x533365[_0xc91d('0x17')]===_0xc91d('0x18')&&typeof _0x533365['limit']==='undefined';var _0x5c4092=_0x262df9[_0xc91d('0x19')];var _0x401253=_0x4b5d24?0x0:_0x533365[_0xc91d('0x17')];var _0x1e083c=_0x4b5d24?_0x262df9[_0xc91d('0x19')]:_0x533365['offset']+_0x533365[_0xc91d('0x1a')];var _0x28944f;if(_0x1e083c>=_0x5c4092){_0x1e083c=_0x5c4092;_0x28944f=0xc8;}else{_0x28944f=0xce;}_0x5501f2[_0xc91d('0x14')](_0x28944f);return _0x5501f2[_0xc91d('0x1b')](_0xc91d('0x1c'),_0x401253+'-'+_0x1e083c+'/'+_0x5c4092)[_0xc91d('0x16')](_0x262df9);}return null;};}function saveUpdates(_0x4ccddb){return function(_0x41212c){if(_0x41212c){return _0x41212c[_0xc91d('0x1d')](_0x4ccddb)['then'](function(_0x1a919e){return _0x1a919e;});}return null;};}function removeEntity(_0x341230){return function(_0x216d22){if(_0x216d22){return _0x216d22[_0xc91d('0x1e')]()['then'](function(){_0x341230['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0xac685f){return function(_0x309680){if(!_0x309680){_0xac685f[_0xc91d('0x13')](0x194);}return _0x309680;};}function handleError(_0xefb353,_0x282ee5){_0x282ee5=_0x282ee5||0x1f4;return function(_0x1c8980){logger['error'](_0x1c8980[_0xc91d('0x1f')]);if(_0x1c8980[_0xc91d('0x20')]){delete _0x1c8980['name'];}_0xefb353[_0xc91d('0x14')](_0x282ee5)[_0xc91d('0x21')](_0x1c8980);};}exports[_0xc91d('0x22')]=function(_0x16b44b,_0x1da967){var _0x51dc21={};var _0x4d57a1=_['map'](db[_0xc91d('0x23')]['rawAttributes'],function(_0x1e6e09){return{'name':_0x1e6e09[_0xc91d('0x24')],'type':_0x1e6e09[_0xc91d('0x25')][_0xc91d('0x26')]};});_0x51dc21=qs[_0xc91d('0x27')](_0x4d57a1,_0x16b44b);return interaction['findAll'](_0xc91d('0x28'),_0x16b44b['query'],_0x16b44b[_0xc91d('0x29')],_0x51dc21,_0x4d57a1)[_0xc91d('0x2a')](respondWithFilteredResult(_0x1da967,_0x51dc21))[_0xc91d('0x2b')](handleError(_0x1da967,null));};exports['show']=function(_0x47d950,_0x2e0fd2){var _0xbbbdc={'raw':![],'where':{'id':_0x47d950[_0xc91d('0x2c')]['id']}},_0x20f565={};_0x20f565[_0xc91d('0x2d')]=_[_0xc91d('0x2e')](db[_0xc91d('0x23')][_0xc91d('0x2f')]);_0x20f565[_0xc91d('0x30')]=_[_0xc91d('0x2e')](_0x47d950[_0xc91d('0x30')]);_0x20f565['filters']=_[_0xc91d('0x31')](_0x20f565[_0xc91d('0x2d')],_0x20f565[_0xc91d('0x30')]);_0xbbbdc[_0xc91d('0x32')]=_['intersection'](_0x20f565['model'],qs[_0xc91d('0x33')](_0x47d950[_0xc91d('0x30')][_0xc91d('0x33')]));_0xbbbdc[_0xc91d('0x32')]=_0xbbbdc[_0xc91d('0x32')][_0xc91d('0x34')]?_0xbbbdc[_0xc91d('0x32')]:_0x20f565[_0xc91d('0x2d')];if(_0x47d950[_0xc91d('0x30')][_0xc91d('0x35')]){_0xbbbdc[_0xc91d('0x36')]=[{'all':!![]}];}_0xbbbdc=_['merge']({},_0xbbbdc,_0x47d950['options']);return db['MailInteraction'][_0xc91d('0x37')](_0xbbbdc)['then'](handleEntityNotFound(_0x2e0fd2,null))[_0xc91d('0x2a')](respondWithResult(_0x2e0fd2,null))[_0xc91d('0x2b')](handleError(_0x2e0fd2,null));};exports[_0xc91d('0x38')]=function(_0x5c7d07,_0x317ff8){return db['MailInteraction'][_0xc91d('0x38')](_0x5c7d07[_0xc91d('0x39')],{})['then'](respondWithResult(_0x317ff8,0xc9))[_0xc91d('0x2b')](handleError(_0x317ff8,null));};exports[_0xc91d('0x1d')]=function(_0x5d3f85,_0x1d983d){if(_0x5d3f85['body']['id']){delete _0x5d3f85['body']['id'];}return db['MailInteraction'][_0xc91d('0x37')]({'where':{'id':_0x5d3f85['params']['id']}})['then'](handleEntityNotFound(_0x1d983d,null))[_0xc91d('0x2a')](saveUpdates(_0x5d3f85[_0xc91d('0x39')],null))['then'](respondWithResult(_0x1d983d,null))['catch'](handleError(_0x1d983d,null));};exports[_0xc91d('0x1e')]=function(_0x4b0130,_0x523781){return db[_0xc91d('0x23')]['find']({'where':{'id':_0x4b0130[_0xc91d('0x2c')]['id']}})[_0xc91d('0x2a')](handleEntityNotFound(_0x523781,null))[_0xc91d('0x2a')](removeEntity(_0x523781,null))[_0xc91d('0x2b')](handleError(_0x523781,null));};exports[_0xc91d('0x3a')]=function(_0x34a340,_0x148f01){return db['MailInteraction'][_0xc91d('0x3a')]()[_0xc91d('0x2a')](respondWithResult(_0x148f01,null))[_0xc91d('0x2b')](handleError(_0x148f01,null));};exports[_0xc91d('0x3b')]=function(_0x135412,_0x192f14){return db[_0xc91d('0x3c')][_0xc91d('0x37')]({'where':{'id':_0x135412[_0xc91d('0x2c')]['id']}})[_0xc91d('0x2a')](handleEntityNotFound(_0x192f14,null))[_0xc91d('0x2a')](function(_0x4204d9){if(_0x4204d9){return _0x4204d9[_0xc91d('0x3b')](_0x135412[_0xc91d('0x39')]['ids'],_['omit'](_0x135412['body'],[_0xc91d('0x3d'),'id'])||{});}})[_0xc91d('0x2a')](respondWithResult(_0x192f14,null))[_0xc91d('0x2b')](handleError(_0x192f14,null));};exports[_0xc91d('0x3e')]=function(_0x348446,_0x5616c4){var _0x3923ff={'raw':![],'where':{}};var _0x49057d={};var _0x27646d={'count':0x0,'rows':[]};return db[_0xc91d('0x23')][_0xc91d('0x3f')]({'where':{'id':_0x348446[_0xc91d('0x2c')]['id']}})['then'](handleEntityNotFound(_0x5616c4,null))['then'](function(_0x28efbd){if(_0x28efbd){_0x49057d[_0xc91d('0x2d')]=_[_0xc91d('0x2e')](db['MailMessage'][_0xc91d('0x2f')]);_0x49057d['query']=_[_0xc91d('0x2e')](_0x348446[_0xc91d('0x30')]);_0x49057d[_0xc91d('0x40')]=_[_0xc91d('0x31')](_0x49057d['model'],_0x49057d[_0xc91d('0x30')]);_0x3923ff[_0xc91d('0x32')]=_[_0xc91d('0x31')](_0x49057d[_0xc91d('0x2d')],qs[_0xc91d('0x33')](_0x348446[_0xc91d('0x30')][_0xc91d('0x33')]));_0x3923ff[_0xc91d('0x32')]=_0x3923ff['attributes'][_0xc91d('0x34')]?_0x3923ff[_0xc91d('0x32')]:_0x49057d[_0xc91d('0x2d')];if(!_0x348446['query']['hasOwnProperty'](_0xc91d('0x41'))){_0x3923ff['limit']=qs[_0xc91d('0x1a')](_0x348446['query']['limit']);_0x3923ff['offset']=qs[_0xc91d('0x17')](_0x348446[_0xc91d('0x30')]['offset']);}_0x3923ff[_0xc91d('0x42')]=qs['sort'](_0x348446[_0xc91d('0x30')]['sort']);_0x3923ff['where']=qs['filters'](_['pick'](_0x348446[_0xc91d('0x30')],_0x49057d[_0xc91d('0x40')]));_0x3923ff[_0xc91d('0x43')][_0xc91d('0x44')]=_0x28efbd['id'];if(_0x348446['query'][_0xc91d('0x45')]){_0x3923ff[_0xc91d('0x43')]=_[_0xc91d('0x46')](_0x3923ff[_0xc91d('0x43')],{'$or':_['map'](_0x3923ff[_0xc91d('0x32')],function(_0x4dca6a){var _0x32574c={};_0x32574c[_0x4dca6a]={'$like':'%'+_0x348446[_0xc91d('0x30')][_0xc91d('0x45')]+'%'};return _0x32574c;})});}if(_0x348446[_0xc91d('0x30')][_0xc91d('0x47')]){var _0x2de3c5=_0x348446[_0xc91d('0x30')]['$gte'][_0xc91d('0x48')](',');var _0x2e8434={};_0x2e8434[_0x2de3c5[0x0]]={'$gte':moment(_0x2de3c5[0x1])[_0xc91d('0x49')](_0xc91d('0x4a'))};_0x3923ff[_0xc91d('0x43')]=_[_0xc91d('0x46')](_0x3923ff[_0xc91d('0x43')],_0x2e8434);}_0x3923ff=_[_0xc91d('0x46')]({},_0x3923ff,_0x348446[_0xc91d('0x4b')]);return db['MailMessage'][_0xc91d('0x19')]({'where':_0x3923ff[_0xc91d('0x43')]})[_0xc91d('0x2a')](function(_0x38b5c2){_0x27646d[_0xc91d('0x19')]=_0x38b5c2;if(_0x348446[_0xc91d('0x30')]['includeAll']){_0x3923ff[_0xc91d('0x36')]=[{'all':!![]}];}return db[_0xc91d('0x3c')][_0xc91d('0x4c')](_0x3923ff);})[_0xc91d('0x2a')](function(_0xe245b6){if(_0x348446[_0xc91d('0x30')][_0xc91d('0x4d')]===_0xc91d('0x4e')){for(var _0x401b77=0x0;_0x401b77<_0xe245b6[_0xc91d('0x34')];_0x401b77++){_0xe245b6[_0x401b77][_0xc91d('0x39')]=juice(_0xe245b6[_0x401b77]['body']);}}_0x27646d[_0xc91d('0x4f')]=_0xe245b6;return _0x27646d;});}})['then'](respondWithFilteredResult(_0x5616c4,_0x3923ff))['catch'](handleError(_0x5616c4,null));};exports[_0xc91d('0x50')]=function(_0x58f665,_0x1b520a){return db['MailInteraction'][_0xc91d('0x37')]({'where':{'id':_0x58f665[_0xc91d('0x2c')]['id']}})[_0xc91d('0x2a')](handleEntityNotFound(_0x1b520a,null))[_0xc91d('0x2a')](function(_0x14870f){if(_0x14870f){return _0x14870f[_0xc91d('0x51')](_0x58f665[_0xc91d('0x39')][_0xc91d('0x3d')],_['omit'](_0x58f665[_0xc91d('0x39')],['ids','id'])||{})['spread'](function(){return db[_0xc91d('0x52')]['findAll']({'attributes':['id',_0xc91d('0x20'),_0xc91d('0x53')],'where':{'id':_0x58f665[_0xc91d('0x39')][_0xc91d('0x3d')]}});})['then'](function(_0x18074f){socket[_0xc91d('0x54')](_0xc91d('0x55'),{'id':Number(_0x58f665[_0xc91d('0x2c')]['id']),'tags':_0x18074f||[]});return{'id':Number(_0x58f665[_0xc91d('0x2c')]['id']),'tags':_0x18074f||[]};});}})[_0xc91d('0x2a')](respondWithResult(_0x1b520a,null))[_0xc91d('0x2b')](handleError(_0x1b520a,null));};exports[_0xc91d('0x56')]=function(_0x4b1609,_0x588127){return db[_0xc91d('0x23')][_0xc91d('0x37')]({'where':{'id':_0x4b1609['params']['id']}})[_0xc91d('0x2a')](handleEntityNotFound(_0x588127,null))[_0xc91d('0x2a')](function(_0x24f7f1){if(_0x24f7f1){return _0x24f7f1[_0xc91d('0x56')](_0x4b1609[_0xc91d('0x30')][_0xc91d('0x3d')]);}})[_0xc91d('0x2a')](respondWithStatusCode(_0x588127,null))[_0xc91d('0x2b')](handleError(_0x588127,null));};exports['download']=function(_0x39345a,_0x44ddbf){var _0xb40ae0=moment()[_0xc91d('0x57')]()[_0xc91d('0x58')]();var _0x5f5ce4=path[_0xc91d('0x59')](config['root'],'server',_0xc91d('0x5a'),_0xc91d('0x5b'));var _0x2feac9=path[_0xc91d('0x59')](config[_0xc91d('0x5c')],_0xc91d('0x5d'),_0xc91d('0x5a'),_0xc91d('0x5e'));var _0x579c5d=path['join'](_0x5f5ce4,_0xb40ae0);var _0x2fee04=util[_0xc91d('0x49')](_0xc91d('0x5f'),_0x39345a['params']['id'],_0xb40ae0);var _0x2cbd94=path[_0xc91d('0x59')](_0x5f5ce4,_0x2fee04);var _0xd9c6ca=[];if(_0x39345a[_0xc91d('0x30')][_0xc91d('0x5e')]){_0xd9c6ca[_0xc91d('0x60')]({'model':db[_0xc91d('0x61')],'as':_0xc91d('0x62'),'raw':!![]});}var _0x507f72=[{'model':db['MailMessage'],'as':'Messages','attributes':['id',_0xc91d('0x39'),_0xc91d('0x63'),'to','cc',_0xc91d('0x64'),_0xc91d('0x65'),_0xc91d('0x66')],'where':{'secret':![]},'order':qs['sort']('id'),'include':_0xd9c6ca}];return db['MailInteraction'][_0xc91d('0x37')]({'where':{'id':_0x39345a['params']['id']},'include':_0x507f72})[_0xc91d('0x2a')](handleEntityNotFound(_0x44ddbf,null))[_0xc91d('0x2a')](function(_0xfc331d){if(_0xfc331d&&_0xfc331d[_0xc91d('0x67')]){var _0x6abe95=_0xfc331d[_0xc91d('0x68')]({'plain':!![]});fs['mkdirSync'](_0x579c5d);return BPromise[_0xc91d('0x69')](_0x6abe95['Messages'],function(_0x4baa18,_0x59527c){var _0x483478={'from':_0x4baa18[_0xc91d('0x63')],'to':_0x4baa18['to']||'missing.recipient@your.company.com','subject':_0x4baa18[_0xc91d('0x65')],'html':htmlEntities[_0xc91d('0x6a')](_0x4baa18[_0xc91d('0x39')]),'headers':{'Date':moment(_0x4baa18['createdAt'])[_0xc91d('0x49')](_0xc91d('0x6b'))},'attachments':[]};if(_0x4baa18['cc']){_0x483478[_0xc91d('0x6c')]['Cc']=_0x4baa18['cc'];}if(_0x4baa18[_0xc91d('0x64')]){_0x483478[_0xc91d('0x6c')][_0xc91d('0x6d')]=_0x4baa18[_0xc91d('0x64')];}return new BPromise(function(_0x315a45,_0x286f8c){if(_0x4baa18[_0xc91d('0x62')]){for(var _0x9a99a3=0x0;_0x9a99a3<_0x4baa18['Attachments']['length'];_0x9a99a3++){var _0x4bc1fb=_0x4baa18[_0xc91d('0x62')][_0x9a99a3];var _0x1eb17f=path['join'](_0x2feac9,_0x4bc1fb[_0xc91d('0x6e')]);if(fs[_0xc91d('0x6f')](_0x1eb17f)){_0x483478[_0xc91d('0x5e')][_0xc91d('0x60')]({'name':_0x4bc1fb[_0xc91d('0x20')],'contentType':_0x4bc1fb[_0xc91d('0x25')],'data':fs[_0xc91d('0x70')](_0x1eb17f)});}}}emlformat[_0xc91d('0x71')](_0x483478,function(_0x577f72,_0x44e1ad){if(_0x577f72)return _0x286f8c(_0x577f72);fs['writeFileSync'](path[_0xc91d('0x59')](_0x579c5d,util[_0xc91d('0x49')]('message%d.eml',_0x59527c)),_0x44e1ad);return _0x315a45(_0x44e1ad);});});})[_0xc91d('0x2a')](function(){return new BPromise(function(_0x38546c,_0xdf1731){zipdir(_0x579c5d,{'saveTo':_0x2cbd94},function(_0x1ec87b,_0x53f9bf){if(_0x1ec87b)return _0xdf1731(_0x1ec87b);return _0x38546c(_0x53f9bf);});})[_0xc91d('0x2a')](function(){return new BPromise(function(_0xec18a3,_0x5116fe){rimraf(_0x579c5d,function(_0x4244a6){if(_0x4244a6)_0x5116fe(_0x4244a6);return _0xec18a3();});});})[_0xc91d('0x2a')](function(){return _0x44ddbf[_0xc91d('0x72')](_0x2cbd94,_0x2fee04,function(_0x4e1f03){if(!_0x4e1f03)fs[_0xc91d('0x73')](_0x2cbd94);});});});}else{return _0x44ddbf['sendStatus'](0xc8);}})[_0xc91d('0x2b')](handleError(_0x44ddbf,null));};
\ No newline at end of file
+var _0xf4fc=['user','catch','show','params','keys','query','intersection','attributes','model','fields','length','include','merge','options','find','create','body','destroy','describe','addMessage','MailMessage','ids','omit','getMessages','findOne','filters','hasOwnProperty','nolimit','order','sort','where','pick','$gte','YYYY-MM-DD\x20HH:mm:ss','inlineCss','true','rows','addTags','spread','Tag','emit','removeTags','download','unix','join','root','server','files','tmp','attachments','transcript-%d-%s.zip','push','Attachment','Attachments','Messages','from','bcc','subject','createdAt','get','mkdirSync','missing.recipient@your.company.com','decode','format','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','basename','readFileSync','build','writeFileSync','message%d.eml','unlinkSync','sendStatus','rimraf','zip-dir','moment','bluebird','util','path','lodash','juice','ioredis','../../components/interaction/service','../../components/parsers/qs','../../config/logger','../../config/environment','../../mysqldb','defaults','localhost','socket.io-emitter','redis','./mailInteraction.socket','register','status','offset','undefined','limit','count','Content-Range','json','update','then','end','stack','send','index','map','MailInteraction','rawAttributes','fieldName','type','key','getOptions','findAll','mail'];(function(_0x381bff,_0x19d01f){var _0x201ab1=function(_0x7d6446){while(--_0x7d6446){_0x381bff['push'](_0x381bff['shift']());}};_0x201ab1(++_0x19d01f);}(_0xf4fc,0x1a2));var _0xcf4f=function(_0x3ec400,_0xd083bb){_0x3ec400=_0x3ec400-0x0;var _0x5fc639=_0xf4fc[_0x3ec400];return _0x5fc639;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xcf4f('0x0'));var zipdir=require(_0xcf4f('0x1'));var moment=require(_0xcf4f('0x2'));var BPromise=require(_0xcf4f('0x3'));var util=require(_0xcf4f('0x4'));var path=require(_0xcf4f('0x5'));var fs=require('fs');var _=require(_0xcf4f('0x6'));var juice=require(_0xcf4f('0x7'));var Redis=require(_0xcf4f('0x8'));var interaction=require(_0xcf4f('0x9'));var qs=require(_0xcf4f('0xa'));var logger=require(_0xcf4f('0xb'))('api');var config=require(_0xcf4f('0xc'));var db=require(_0xcf4f('0xd'))['db'];var htmlEntities=require('html-entities');config['redis']=_[_0xcf4f('0xe')](config['redis'],{'host':_0xcf4f('0xf'),'port':0x18eb});var socket=require(_0xcf4f('0x10'))(new Redis(config[_0xcf4f('0x11')]));require(_0xcf4f('0x12'))[_0xcf4f('0x13')](socket);function respondWithStatusCode(_0x28b99e,_0x308760){_0x308760=_0x308760||0xcc;return function(_0x393781){if(_0x393781){return _0x28b99e['sendStatus'](_0x308760);}return _0x28b99e[_0xcf4f('0x14')](_0x308760)['end']();};}function respondWithResult(_0x35cde6,_0x58999c){_0x58999c=_0x58999c||0xc8;return function(_0x36d4b6){if(_0x36d4b6){return _0x35cde6[_0xcf4f('0x14')](_0x58999c)['json'](_0x36d4b6);}};}function respondWithFilteredResult(_0xb298b2,_0x582c7b){return function(_0x42f66e){if(_0x42f66e){var _0x18abed=typeof _0x582c7b[_0xcf4f('0x15')]===_0xcf4f('0x16')&&typeof _0x582c7b[_0xcf4f('0x17')]===_0xcf4f('0x16');var _0x30a6ec=_0x42f66e[_0xcf4f('0x18')];var _0x202f65=_0x18abed?0x0:_0x582c7b[_0xcf4f('0x15')];var _0x1a25f8=_0x18abed?_0x42f66e[_0xcf4f('0x18')]:_0x582c7b[_0xcf4f('0x15')]+_0x582c7b[_0xcf4f('0x17')];var _0x3b1689;if(_0x1a25f8>=_0x30a6ec){_0x1a25f8=_0x30a6ec;_0x3b1689=0xc8;}else{_0x3b1689=0xce;}_0xb298b2['status'](_0x3b1689);return _0xb298b2['set'](_0xcf4f('0x19'),_0x202f65+'-'+_0x1a25f8+'/'+_0x30a6ec)[_0xcf4f('0x1a')](_0x42f66e);}return null;};}function saveUpdates(_0x242550){return function(_0x475d6f){if(_0x475d6f){return _0x475d6f[_0xcf4f('0x1b')](_0x242550)[_0xcf4f('0x1c')](function(_0x917cc8){return _0x917cc8;});}return null;};}function removeEntity(_0x2189e8){return function(_0x138908){if(_0x138908){return _0x138908['destroy']()[_0xcf4f('0x1c')](function(){_0x2189e8['status'](0xcc)[_0xcf4f('0x1d')]();});}};}function handleEntityNotFound(_0x4b8313){return function(_0x234082){if(!_0x234082){_0x4b8313['sendStatus'](0x194);}return _0x234082;};}function handleError(_0x1a979a,_0x3fa230){_0x3fa230=_0x3fa230||0x1f4;return function(_0x5c2b89){logger['error'](_0x5c2b89[_0xcf4f('0x1e')]);if(_0x5c2b89['name']){delete _0x5c2b89['name'];}_0x1a979a['status'](_0x3fa230)[_0xcf4f('0x1f')](_0x5c2b89);};}exports[_0xcf4f('0x20')]=function(_0x5ad5f0,_0x1eb9ee){var _0x15a18c={};var _0x37f864=_[_0xcf4f('0x21')](db[_0xcf4f('0x22')][_0xcf4f('0x23')],function(_0x4f5f63){return{'name':_0x4f5f63[_0xcf4f('0x24')],'type':_0x4f5f63[_0xcf4f('0x25')][_0xcf4f('0x26')]};});_0x15a18c=qs[_0xcf4f('0x27')](_0x37f864,_0x5ad5f0);return interaction[_0xcf4f('0x28')](_0xcf4f('0x29'),_0x5ad5f0['query'],_0x5ad5f0[_0xcf4f('0x2a')],_0x15a18c,_0x37f864)['then'](respondWithFilteredResult(_0x1eb9ee,_0x15a18c))[_0xcf4f('0x2b')](handleError(_0x1eb9ee,null));};exports[_0xcf4f('0x2c')]=function(_0x16bfc4,_0x261c56){var _0x5ebdf2={'raw':![],'where':{'id':_0x16bfc4[_0xcf4f('0x2d')]['id']}},_0x30c5f6={};_0x30c5f6['model']=_[_0xcf4f('0x2e')](db[_0xcf4f('0x22')][_0xcf4f('0x23')]);_0x30c5f6[_0xcf4f('0x2f')]=_['keys'](_0x16bfc4[_0xcf4f('0x2f')]);_0x30c5f6['filters']=_[_0xcf4f('0x30')](_0x30c5f6['model'],_0x30c5f6['query']);_0x5ebdf2[_0xcf4f('0x31')]=_[_0xcf4f('0x30')](_0x30c5f6[_0xcf4f('0x32')],qs[_0xcf4f('0x33')](_0x16bfc4[_0xcf4f('0x2f')][_0xcf4f('0x33')]));_0x5ebdf2['attributes']=_0x5ebdf2[_0xcf4f('0x31')][_0xcf4f('0x34')]?_0x5ebdf2[_0xcf4f('0x31')]:_0x30c5f6[_0xcf4f('0x32')];if(_0x16bfc4['query']['includeAll']){_0x5ebdf2[_0xcf4f('0x35')]=[{'all':!![]}];}_0x5ebdf2=_[_0xcf4f('0x36')]({},_0x5ebdf2,_0x16bfc4[_0xcf4f('0x37')]);return db[_0xcf4f('0x22')][_0xcf4f('0x38')](_0x5ebdf2)['then'](handleEntityNotFound(_0x261c56,null))[_0xcf4f('0x1c')](respondWithResult(_0x261c56,null))[_0xcf4f('0x2b')](handleError(_0x261c56,null));};exports[_0xcf4f('0x39')]=function(_0x1c9fd5,_0x448171){return db[_0xcf4f('0x22')][_0xcf4f('0x39')](_0x1c9fd5[_0xcf4f('0x3a')],{})[_0xcf4f('0x1c')](respondWithResult(_0x448171,0xc9))[_0xcf4f('0x2b')](handleError(_0x448171,null));};exports[_0xcf4f('0x1b')]=function(_0x1b0516,_0xbae16c){if(_0x1b0516['body']['id']){delete _0x1b0516[_0xcf4f('0x3a')]['id'];}return db[_0xcf4f('0x22')]['find']({'where':{'id':_0x1b0516[_0xcf4f('0x2d')]['id']}})[_0xcf4f('0x1c')](handleEntityNotFound(_0xbae16c,null))[_0xcf4f('0x1c')](saveUpdates(_0x1b0516[_0xcf4f('0x3a')],null))[_0xcf4f('0x1c')](respondWithResult(_0xbae16c,null))[_0xcf4f('0x2b')](handleError(_0xbae16c,null));};exports[_0xcf4f('0x3b')]=function(_0x5de279,_0x3ef6b1){return db[_0xcf4f('0x22')]['find']({'where':{'id':_0x5de279[_0xcf4f('0x2d')]['id']}})[_0xcf4f('0x1c')](handleEntityNotFound(_0x3ef6b1,null))['then'](removeEntity(_0x3ef6b1,null))[_0xcf4f('0x2b')](handleError(_0x3ef6b1,null));};exports['describe']=function(_0x399bb8,_0x5e5843){return db[_0xcf4f('0x22')][_0xcf4f('0x3c')]()[_0xcf4f('0x1c')](respondWithResult(_0x5e5843,null))['catch'](handleError(_0x5e5843,null));};exports[_0xcf4f('0x3d')]=function(_0x21c3dd,_0x4a6694){return db[_0xcf4f('0x3e')]['find']({'where':{'id':_0x21c3dd['params']['id']}})[_0xcf4f('0x1c')](handleEntityNotFound(_0x4a6694,null))['then'](function(_0x3b60ba){if(_0x3b60ba){return _0x3b60ba[_0xcf4f('0x3d')](_0x21c3dd[_0xcf4f('0x3a')][_0xcf4f('0x3f')],_[_0xcf4f('0x40')](_0x21c3dd['body'],[_0xcf4f('0x3f'),'id'])||{});}})[_0xcf4f('0x1c')](respondWithResult(_0x4a6694,null))[_0xcf4f('0x2b')](handleError(_0x4a6694,null));};exports[_0xcf4f('0x41')]=function(_0x59c03d,_0x5db49d){var _0x2b3f6c={'raw':![],'where':{}};var _0x2b5d5e={};var _0x597fe0={'count':0x0,'rows':[]};return db[_0xcf4f('0x22')][_0xcf4f('0x42')]({'where':{'id':_0x59c03d['params']['id']}})[_0xcf4f('0x1c')](handleEntityNotFound(_0x5db49d,null))[_0xcf4f('0x1c')](function(_0x79039f){if(_0x79039f){_0x2b5d5e['model']=_[_0xcf4f('0x2e')](db[_0xcf4f('0x3e')][_0xcf4f('0x23')]);_0x2b5d5e[_0xcf4f('0x2f')]=_[_0xcf4f('0x2e')](_0x59c03d['query']);_0x2b5d5e[_0xcf4f('0x43')]=_[_0xcf4f('0x30')](_0x2b5d5e['model'],_0x2b5d5e[_0xcf4f('0x2f')]);_0x2b3f6c[_0xcf4f('0x31')]=_[_0xcf4f('0x30')](_0x2b5d5e[_0xcf4f('0x32')],qs[_0xcf4f('0x33')](_0x59c03d[_0xcf4f('0x2f')][_0xcf4f('0x33')]));_0x2b3f6c['attributes']=_0x2b3f6c[_0xcf4f('0x31')][_0xcf4f('0x34')]?_0x2b3f6c['attributes']:_0x2b5d5e[_0xcf4f('0x32')];if(!_0x59c03d[_0xcf4f('0x2f')][_0xcf4f('0x44')](_0xcf4f('0x45'))){_0x2b3f6c[_0xcf4f('0x17')]=qs[_0xcf4f('0x17')](_0x59c03d['query']['limit']);_0x2b3f6c[_0xcf4f('0x15')]=qs[_0xcf4f('0x15')](_0x59c03d[_0xcf4f('0x2f')][_0xcf4f('0x15')]);}_0x2b3f6c[_0xcf4f('0x46')]=qs[_0xcf4f('0x47')](_0x59c03d[_0xcf4f('0x2f')]['sort']);_0x2b3f6c[_0xcf4f('0x48')]=qs[_0xcf4f('0x43')](_[_0xcf4f('0x49')](_0x59c03d[_0xcf4f('0x2f')],_0x2b5d5e['filters']));_0x2b3f6c['where']['MailInteractionId']=_0x79039f['id'];if(_0x59c03d[_0xcf4f('0x2f')]['filter']){_0x2b3f6c['where']=_[_0xcf4f('0x36')](_0x2b3f6c['where'],{'$or':_['map'](_0x2b3f6c[_0xcf4f('0x31')],function(_0x90483e){var _0x1285af={};_0x1285af[_0x90483e]={'$like':'%'+_0x59c03d[_0xcf4f('0x2f')]['filter']+'%'};return _0x1285af;})});}if(_0x59c03d['query'][_0xcf4f('0x4a')]){var _0x275a10=_0x59c03d[_0xcf4f('0x2f')][_0xcf4f('0x4a')]['split'](',');var _0x255189={};_0x255189[_0x275a10[0x0]]={'$gte':moment(_0x275a10[0x1])['format'](_0xcf4f('0x4b'))};_0x2b3f6c[_0xcf4f('0x48')]=_[_0xcf4f('0x36')](_0x2b3f6c[_0xcf4f('0x48')],_0x255189);}_0x2b3f6c=_[_0xcf4f('0x36')]({},_0x2b3f6c,_0x59c03d['options']);return db[_0xcf4f('0x3e')][_0xcf4f('0x18')]({'where':_0x2b3f6c[_0xcf4f('0x48')]})[_0xcf4f('0x1c')](function(_0x84bdb4){_0x597fe0[_0xcf4f('0x18')]=_0x84bdb4;if(_0x59c03d[_0xcf4f('0x2f')]['includeAll']){_0x2b3f6c[_0xcf4f('0x35')]=[{'all':!![]}];}return db['MailMessage'][_0xcf4f('0x28')](_0x2b3f6c);})[_0xcf4f('0x1c')](function(_0x2e8c74){if(_0x59c03d['query'][_0xcf4f('0x4c')]===_0xcf4f('0x4d')){for(var _0x21d3eb=0x0;_0x21d3eb<_0x2e8c74[_0xcf4f('0x34')];_0x21d3eb++){_0x2e8c74[_0x21d3eb][_0xcf4f('0x3a')]=juice(_0x2e8c74[_0x21d3eb][_0xcf4f('0x3a')]);}}_0x597fe0[_0xcf4f('0x4e')]=_0x2e8c74;return _0x597fe0;});}})[_0xcf4f('0x1c')](respondWithFilteredResult(_0x5db49d,_0x2b3f6c))[_0xcf4f('0x2b')](handleError(_0x5db49d,null));};exports[_0xcf4f('0x4f')]=function(_0xc0f90a,_0x27e794){return db[_0xcf4f('0x22')][_0xcf4f('0x38')]({'where':{'id':_0xc0f90a['params']['id']}})[_0xcf4f('0x1c')](handleEntityNotFound(_0x27e794,null))[_0xcf4f('0x1c')](function(_0x11cba9){if(_0x11cba9){return _0x11cba9['setTags'](_0xc0f90a[_0xcf4f('0x3a')][_0xcf4f('0x3f')],_['omit'](_0xc0f90a[_0xcf4f('0x3a')],[_0xcf4f('0x3f'),'id'])||{})[_0xcf4f('0x50')](function(){return db[_0xcf4f('0x51')][_0xcf4f('0x28')]({'attributes':['id','name','color'],'where':{'id':_0xc0f90a[_0xcf4f('0x3a')][_0xcf4f('0x3f')]}});})[_0xcf4f('0x1c')](function(_0x56af60){socket[_0xcf4f('0x52')]('mailInteractionTags:save',{'id':Number(_0xc0f90a[_0xcf4f('0x2d')]['id']),'tags':_0x56af60||[]});return{'id':Number(_0xc0f90a['params']['id']),'tags':_0x56af60||[]};});}})[_0xcf4f('0x1c')](respondWithResult(_0x27e794,null))[_0xcf4f('0x2b')](handleError(_0x27e794,null));};exports['removeTags']=function(_0x1fe714,_0x364437){return db[_0xcf4f('0x22')][_0xcf4f('0x38')]({'where':{'id':_0x1fe714[_0xcf4f('0x2d')]['id']}})[_0xcf4f('0x1c')](handleEntityNotFound(_0x364437,null))[_0xcf4f('0x1c')](function(_0x4fe188){if(_0x4fe188){return _0x4fe188[_0xcf4f('0x53')](_0x1fe714[_0xcf4f('0x2f')][_0xcf4f('0x3f')]);}})[_0xcf4f('0x1c')](respondWithStatusCode(_0x364437,null))[_0xcf4f('0x2b')](handleError(_0x364437,null));};exports[_0xcf4f('0x54')]=function(_0x5bb64b,_0x16b5b6){var _0x391672=moment()[_0xcf4f('0x55')]()['toString']();var _0x525390=path[_0xcf4f('0x56')](config[_0xcf4f('0x57')],_0xcf4f('0x58'),_0xcf4f('0x59'),_0xcf4f('0x5a'));var _0x331d4f=path[_0xcf4f('0x56')](config['root'],'server','files',_0xcf4f('0x5b'));var _0x1b3d91=path[_0xcf4f('0x56')](_0x525390,_0x391672);var _0xbf484=util['format'](_0xcf4f('0x5c'),_0x5bb64b['params']['id'],_0x391672);var _0xfcd01=path[_0xcf4f('0x56')](_0x525390,_0xbf484);var _0x3645a9=[];if(_0x5bb64b[_0xcf4f('0x2f')][_0xcf4f('0x5b')]){_0x3645a9[_0xcf4f('0x5d')]({'model':db[_0xcf4f('0x5e')],'as':_0xcf4f('0x5f'),'raw':!![]});}var _0x4d8767=[{'model':db[_0xcf4f('0x3e')],'as':_0xcf4f('0x60'),'attributes':['id',_0xcf4f('0x3a'),_0xcf4f('0x61'),'to','cc',_0xcf4f('0x62'),_0xcf4f('0x63'),_0xcf4f('0x64')],'where':{'secret':![]},'order':qs[_0xcf4f('0x47')]('id'),'include':_0x3645a9}];return db[_0xcf4f('0x22')][_0xcf4f('0x38')]({'where':{'id':_0x5bb64b['params']['id']},'include':_0x4d8767})[_0xcf4f('0x1c')](handleEntityNotFound(_0x16b5b6,null))[_0xcf4f('0x1c')](function(_0x4697ab){if(_0x4697ab&&_0x4697ab['Messages']){var _0x29b805=_0x4697ab[_0xcf4f('0x65')]({'plain':!![]});fs[_0xcf4f('0x66')](_0x1b3d91);return BPromise['each'](_0x29b805[_0xcf4f('0x60')],function(_0x570c19,_0x211784){var _0x2577e5={'from':_0x570c19[_0xcf4f('0x61')],'to':_0x570c19['to']||_0xcf4f('0x67'),'subject':_0x570c19['subject'],'html':htmlEntities[_0xcf4f('0x68')](_0x570c19[_0xcf4f('0x3a')]),'headers':{'Date':moment(_0x570c19[_0xcf4f('0x64')])[_0xcf4f('0x69')](_0xcf4f('0x6a'))},'attachments':[]};if(_0x570c19['cc']){_0x2577e5['headers']['Cc']=_0x570c19['cc'];}if(_0x570c19[_0xcf4f('0x62')]){_0x2577e5[_0xcf4f('0x6b')]['Bcc']=_0x570c19[_0xcf4f('0x62')];}return new BPromise(function(_0x203f96,_0x593249){if(_0x570c19['Attachments']){for(var _0x11674b=0x0;_0x11674b<_0x570c19[_0xcf4f('0x5f')][_0xcf4f('0x34')];_0x11674b++){var _0x3ba8d9=_0x570c19[_0xcf4f('0x5f')][_0x11674b];var _0x2b67b3=path[_0xcf4f('0x56')](_0x331d4f,_0x3ba8d9[_0xcf4f('0x6c')]);if(fs['existsSync'](_0x2b67b3)){_0x2577e5[_0xcf4f('0x5b')][_0xcf4f('0x5d')]({'name':_0x3ba8d9['name'],'contentType':_0x3ba8d9[_0xcf4f('0x25')],'data':fs[_0xcf4f('0x6d')](_0x2b67b3)});}}}emlformat[_0xcf4f('0x6e')](_0x2577e5,function(_0x5e5130,_0x59f08c){if(_0x5e5130)return _0x593249(_0x5e5130);fs[_0xcf4f('0x6f')](path[_0xcf4f('0x56')](_0x1b3d91,util['format'](_0xcf4f('0x70'),_0x211784)),_0x59f08c);return _0x203f96(_0x59f08c);});});})[_0xcf4f('0x1c')](function(){return new BPromise(function(_0x106247,_0x2fec89){zipdir(_0x1b3d91,{'saveTo':_0xfcd01},function(_0x1095fc,_0x4d50f1){if(_0x1095fc)return _0x2fec89(_0x1095fc);return _0x106247(_0x4d50f1);});})[_0xcf4f('0x1c')](function(){return new BPromise(function(_0x5ce250,_0x1a37ae){rimraf(_0x1b3d91,function(_0x67f073){if(_0x67f073)_0x1a37ae(_0x67f073);return _0x5ce250();});});})['then'](function(){return _0x16b5b6[_0xcf4f('0x54')](_0xfcd01,_0xbf484,function(_0x28f052){if(!_0x28f052)fs[_0xcf4f('0x71')](_0xfcd01);});});});}else{return _0x16b5b6[_0xcf4f('0x72')](0xc8);}})['catch'](handleError(_0x16b5b6,null));};
\ No newline at end of file
index b2f14dd..8519cb5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x16a6=['then','setDataValue','Users','map','findAll','unreadMessages','length','emit','hasOwnProperty','hook','exports','events','../../mysqldb','MailInteraction','MailMessage','setMaxListeners','update'];(function(_0x4710a5,_0x59128d){var _0x3a0d10=function(_0x73ee2a){while(--_0x73ee2a){_0x4710a5['push'](_0x4710a5['shift']());}};_0x3a0d10(++_0x59128d);}(_0x16a6,0x14e));var _0x616a=function(_0x5db99b,_0xdee23a){_0x5db99b=_0x5db99b-0x0;var _0x4b2d0e=_0x16a6[_0x5db99b];return _0x4b2d0e;};'use strict';var EventEmitter=require(_0x616a('0x0'));var MailInteraction=require(_0x616a('0x1'))['db'][_0x616a('0x2')];var MailMessage=require(_0x616a('0x1'))['db'][_0x616a('0x3')];var MailInteractionEvents=new EventEmitter();MailInteractionEvents[_0x616a('0x4')](0x0);var events={'afterCreate':'save','afterUpdate':_0x616a('0x5'),'afterDestroy':'remove'};function emitEvent(_0x2dffbd){return function(_0x51ffc2,_0x51b601,_0x40c9c0){_0x51ffc2['getUsers']({'attributes':['id'],'raw':!![]})[_0x616a('0x6')](function(_0x23da72){_0x51ffc2[_0x616a('0x7')](_0x616a('0x8'),_0x23da72[_0x616a('0x9')](function(_0x1a84df){return{'id':_0x1a84df['id']};}));return MailMessage[_0x616a('0xa')]({'where':{'MailInteractionId':_0x51ffc2['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x2d0de4){_0x51ffc2[_0x616a('0x7')](_0x616a('0xb'),_0x2d0de4[_0x616a('0xc')]);MailInteractionEvents[_0x616a('0xd')](_0x2dffbd+':'+_0x51ffc2['id'],_0x51ffc2);MailInteractionEvents[_0x616a('0xd')](_0x2dffbd,_0x51ffc2);_0x40c9c0(null);})['catch'](_0x40c9c0(null));};}for(var e in events){if(events[_0x616a('0xe')](e)){var event=events[e];MailInteraction[_0x616a('0xf')](e,emitEvent(event));}}module[_0x616a('0x10')]=MailInteractionEvents;
\ No newline at end of file
+var _0xa600=['MailMessage','setMaxListeners','save','update','remove','then','setDataValue','Users','map','findAll','unreadMessages','length','emit','catch','hasOwnProperty','hook','events','../../mysqldb'];(function(_0x551be0,_0x3372c1){var _0x112d08=function(_0x4c82b9){while(--_0x4c82b9){_0x551be0['push'](_0x551be0['shift']());}};_0x112d08(++_0x3372c1);}(_0xa600,0x166));var _0x0a60=function(_0x44d869,_0x49425f){_0x44d869=_0x44d869-0x0;var _0x1ed521=_0xa600[_0x44d869];return _0x1ed521;};'use strict';var EventEmitter=require(_0x0a60('0x0'));var MailInteraction=require('../../mysqldb')['db']['MailInteraction'];var MailMessage=require(_0x0a60('0x1'))['db'][_0x0a60('0x2')];var MailInteractionEvents=new EventEmitter();MailInteractionEvents[_0x0a60('0x3')](0x0);var events={'afterCreate':_0x0a60('0x4'),'afterUpdate':_0x0a60('0x5'),'afterDestroy':_0x0a60('0x6')};function emitEvent(_0x539ec2){return function(_0x2ebd51,_0x40c465,_0x5cf4dc){_0x2ebd51['getUsers']({'attributes':['id'],'raw':!![]})[_0x0a60('0x7')](function(_0x41f58d){_0x2ebd51[_0x0a60('0x8')](_0x0a60('0x9'),_0x41f58d[_0x0a60('0xa')](function(_0x44ccb2){return{'id':_0x44ccb2['id']};}));return MailMessage[_0x0a60('0xb')]({'where':{'MailInteractionId':_0x2ebd51['id'],'direction':'in','read':![]},'raw':!![]});})[_0x0a60('0x7')](function(_0x37894c){_0x2ebd51[_0x0a60('0x8')](_0x0a60('0xc'),_0x37894c[_0x0a60('0xd')]);MailInteractionEvents[_0x0a60('0xe')](_0x539ec2+':'+_0x2ebd51['id'],_0x2ebd51);MailInteractionEvents['emit'](_0x539ec2,_0x2ebd51);_0x5cf4dc(null);})[_0x0a60('0xf')](_0x5cf4dc(null));};}for(var e in events){if(events[_0x0a60('0x10')](e)){var event=events[e];MailInteraction[_0x0a60('0x11')](e,emitEvent(event));}}module['exports']=MailInteractionEvents;
\ No newline at end of file
index 3697a4d..e9bdf39 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b71=['models','MailMessage','update','catch','utf8mb4','utf8mb4_unicode_ci','util','bluebird','request-promise','path','exports','define','MailInteraction','mail_interactions','subject','FULLTEXT','substatus','substatusAt','format','YYYY-MM-DD\x20HH:mm:ss','closedAt','changed','closed'];(function(_0x44dbd2,_0x5ab76b){var _0x17f240=function(_0x128ec3){while(--_0x128ec3){_0x44dbd2['push'](_0x44dbd2['shift']());}};_0x17f240(++_0x5ab76b);}(_0x4b71,0x90));var _0x14b7=function(_0x466755,_0xf412e1){_0x466755=_0x466755-0x0;var _0x3d111a=_0x4b71[_0x466755];return _0x3d111a;};'use strict';var _=require('lodash');var util=require(_0x14b7('0x0'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x14b7('0x1'));var rp=require(_0x14b7('0x2'));var fs=require('fs');var path=require(_0x14b7('0x3'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./mailInteraction.attributes');module[_0x14b7('0x4')]=function(_0x475e85,_0x49f6f){return _0x475e85[_0x14b7('0x5')](_0x14b7('0x6'),attributes,{'tableName':_0x14b7('0x7'),'paranoid':![],'indexes':[{'name':'fti_mail_interactions','fields':[_0x14b7('0x8'),'to'],'type':_0x14b7('0x9')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x2617b7,_0x1b3e8c,_0x7591fa){if(_0x2617b7[_0x14b7('0xa')]){_0x2617b7[_0x14b7('0xb')]=moment()[_0x14b7('0xc')](_0x14b7('0xd'));}if(_0x2617b7['closed']){_0x2617b7[_0x14b7('0xe')]=moment()[_0x14b7('0xc')]('YYYY-MM-DD\x20HH:mm:ss');}_0x7591fa(null,_0x1b3e8c);},'beforeUpdate':function(_0x2ea998,_0x52b074,_0x9c4fee){if(_0x2ea998[_0x14b7('0xf')](_0x14b7('0xa'))){_0x2ea998['substatusAt']=_0x2ea998[_0x14b7('0xa')]?moment()[_0x14b7('0xc')]('YYYY-MM-DD\x20HH:mm:ss'):null;}if(_0x2ea998[_0x14b7('0xf')](_0x14b7('0x10'))){_0x2ea998[_0x14b7('0xe')]=moment()[_0x14b7('0xc')](_0x14b7('0xd'));_0x2ea998['substatus']=null;_0x2ea998['substatusAt']=null;}_0x9c4fee(null,_0x2ea998);},'afterUpdate':function(_0x4b738b,_0x17fb1e,_0x152021){var _0x8a5ed6=_0x475e85[_0x14b7('0x11')];var _0x4ed0f9=_0x4b738b['get']({'plain':!![]});if(_0x4ed0f9[_0x14b7('0x10')]){return _0x8a5ed6[_0x14b7('0x12')][_0x14b7('0x13')]({'read':!![]},{'where':{'MailInteractionId':_0x4ed0f9['id']}})['then'](function(){_0x152021();})[_0x14b7('0x14')](function(_0x546ada){_0x152021(_0x546ada);});}else{_0x152021();}}},'charset':_0x14b7('0x15'),'collate':_0x14b7('0x16')});};
\ No newline at end of file
+var _0x50de=['define','MailInteraction','mail_interactions','fti_mail_interactions','subject','FULLTEXT','substatus','substatusAt','format','YYYY-MM-DD\x20HH:mm:ss','closedAt','closed','models','get','then','catch','utf8mb4','lodash','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./mailInteraction.attributes','exports'];(function(_0x373dee,_0x1a8c45){var _0x46798f=function(_0xc389f0){while(--_0xc389f0){_0x373dee['push'](_0x373dee['shift']());}};_0x46798f(++_0x1a8c45);}(_0x50de,0xce));var _0xe50d=function(_0x5947f8,_0x305779){_0x5947f8=_0x5947f8-0x0;var _0x43888e=_0x50de[_0x5947f8];return _0x43888e;};'use strict';var _=require(_0xe50d('0x0'));var util=require('util');var logger=require(_0xe50d('0x1'))(_0xe50d('0x2'));var moment=require(_0xe50d('0x3'));var BPromise=require(_0xe50d('0x4'));var rp=require(_0xe50d('0x5'));var fs=require('fs');var path=require(_0xe50d('0x6'));var rimraf=require('rimraf');var config=require(_0xe50d('0x7'));var attributes=require(_0xe50d('0x8'));module[_0xe50d('0x9')]=function(_0x5b3abe,_0x4fba6f){return _0x5b3abe[_0xe50d('0xa')](_0xe50d('0xb'),attributes,{'tableName':_0xe50d('0xc'),'paranoid':![],'indexes':[{'name':_0xe50d('0xd'),'fields':[_0xe50d('0xe'),'to'],'type':_0xe50d('0xf')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x4e4811,_0x1b297c,_0x3374c0){if(_0x4e4811[_0xe50d('0x10')]){_0x4e4811[_0xe50d('0x11')]=moment()[_0xe50d('0x12')](_0xe50d('0x13'));}if(_0x4e4811['closed']){_0x4e4811[_0xe50d('0x14')]=moment()['format'](_0xe50d('0x13'));}_0x3374c0(null,_0x1b297c);},'beforeUpdate':function(_0x3273cf,_0xe238c4,_0x212197){if(_0x3273cf['changed'](_0xe50d('0x10'))){_0x3273cf['substatusAt']=_0x3273cf[_0xe50d('0x10')]?moment()['format'](_0xe50d('0x13')):null;}if(_0x3273cf['changed'](_0xe50d('0x15'))){_0x3273cf[_0xe50d('0x14')]=moment()[_0xe50d('0x12')](_0xe50d('0x13'));_0x3273cf[_0xe50d('0x10')]=null;_0x3273cf[_0xe50d('0x11')]=null;}_0x212197(null,_0x3273cf);},'afterUpdate':function(_0x2d541c,_0x1ccc33,_0x5b1dac){var _0x172498=_0x5b3abe[_0xe50d('0x16')];var _0xa34f87=_0x2d541c[_0xe50d('0x17')]({'plain':!![]});if(_0xa34f87[_0xe50d('0x15')]){return _0x172498['MailMessage']['update']({'read':!![]},{'where':{'MailInteractionId':_0xa34f87['id']}})[_0xe50d('0x18')](function(){_0x5b1dac();})[_0xe50d('0x19')](function(_0x3c1813){_0x5b1dac(_0x3c1813);});}else{_0x5b1dac();}}},'charset':_0xe50d('0x1a'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index ec28632..3bdfe2b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x36b6=['socket.io-emitter','./mailInteraction.socket','register','then','MailInteraction,\x20%s,\x20%s','request\x20sent','debug','MailInteraction,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch','UpdateMailInteraction','body','options','raw','attributes','limit','MailInteraction','find','where','addTags','ids','omit','AddTags','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults'];(function(_0x10bbb8,_0x19e2eb){var _0x2026a0=function(_0x36420e){while(--_0x36420e){_0x10bbb8['push'](_0x10bbb8['shift']());}};_0x2026a0(++_0x19e2eb);}(_0x36b6,0x13a));var _0x636b=function(_0x43bee1,_0x10ad81){_0x43bee1=_0x43bee1-0x0;var _0x2fedfd=_0x36b6[_0x43bee1];return _0x2fedfd;};'use strict';var _=require(_0x636b('0x0'));var util=require(_0x636b('0x1'));var moment=require(_0x636b('0x2'));var BPromise=require(_0x636b('0x3'));var rs=require(_0x636b('0x4'));var fs=require('fs');var Redis=require(_0x636b('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x636b('0x6'));var logger=require(_0x636b('0x7'))('rpc');var config=require(_0x636b('0x8'));var jayson=require(_0x636b('0x9'));var client=jayson[_0x636b('0xa')][_0x636b('0xb')]({'port':0x232a});config[_0x636b('0xc')]=_[_0x636b('0xd')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x636b('0xe'))(new Redis(config['redis']));require(_0x636b('0xf'))[_0x636b('0x10')](socket);function respondWithRpcPromise(_0x194d35,_0x17f029,_0x335202){return new BPromise(function(_0x1a9458,_0x9b7d57){return client['request'](_0x194d35,_0x335202)[_0x636b('0x11')](function(_0x44b913){logger['info'](_0x636b('0x12'),_0x17f029,_0x636b('0x13'));logger[_0x636b('0x14')](_0x636b('0x15'),_0x17f029,_0x636b('0x13'),JSON[_0x636b('0x16')](_0x44b913));if(_0x44b913['error']){if(_0x44b913[_0x636b('0x17')]['code']===0x1f4){logger[_0x636b('0x17')]('MailInteraction,\x20%s,\x20%s',_0x17f029,_0x44b913[_0x636b('0x17')][_0x636b('0x18')]);return _0x9b7d57(_0x44b913['error'][_0x636b('0x18')]);}logger[_0x636b('0x17')](_0x636b('0x12'),_0x17f029,_0x44b913[_0x636b('0x17')][_0x636b('0x18')]);return _0x1a9458(_0x44b913[_0x636b('0x17')][_0x636b('0x18')]);}else{logger[_0x636b('0x19')](_0x636b('0x12'),_0x17f029,'request\x20sent');_0x1a9458(_0x44b913[_0x636b('0x1a')][_0x636b('0x18')]);}})[_0x636b('0x1b')](function(_0x39ad09){logger[_0x636b('0x17')]('MailInteraction,\x20%s,\x20%s',_0x17f029,_0x39ad09);_0x9b7d57(_0x39ad09);});});}exports[_0x636b('0x1c')]=function(_0x13bdfe){var _0x32edd7=this;return new Promise(function(_0x3cdfa9,_0x1d3b59){return db['MailInteraction']['update'](_0x13bdfe[_0x636b('0x1d')],{'raw':_0x13bdfe[_0x636b('0x1e')]?_0x13bdfe['options'][_0x636b('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x13bdfe[_0x636b('0x1e')]?_0x13bdfe['options']['where']||null:null,'attributes':_0x13bdfe[_0x636b('0x1e')]?_0x13bdfe[_0x636b('0x1e')][_0x636b('0x20')]||null:null,'limit':_0x13bdfe[_0x636b('0x1e')]?_0x13bdfe[_0x636b('0x1e')][_0x636b('0x21')]||null:null})['then'](function(_0xca2ad9){logger[_0x636b('0x19')](_0x636b('0x1c'),_0x13bdfe);logger[_0x636b('0x14')](_0x636b('0x1c'),_0x13bdfe,JSON[_0x636b('0x16')](_0xca2ad9));_0x3cdfa9(_0xca2ad9);})['catch'](function(_0xb2a375){logger[_0x636b('0x17')](_0x636b('0x1c'),_0xb2a375['message'],_0x13bdfe);_0x1d3b59(_0x32edd7[_0x636b('0x17')](0x1f4,_0xb2a375[_0x636b('0x18')]));});});};exports['AddTagsToMailInteraction']=function(_0x26e659){return new Promise(function(_0x1f6224,_0x10da22){return db[_0x636b('0x22')][_0x636b('0x23')]({'where':_0x26e659[_0x636b('0x1e')]?_0x26e659[_0x636b('0x1e')][_0x636b('0x24')]||null:null})[_0x636b('0x11')](function(_0x5a00d6){if(_0x5a00d6){return _0x5a00d6[_0x636b('0x25')](_0x26e659[_0x636b('0x1d')][_0x636b('0x26')],_[_0x636b('0x27')](_0x26e659[_0x636b('0x1d')],[_0x636b('0x26'),'id'])||{});}})['spread'](function(_0x14480c){logger[_0x636b('0x19')](_0x636b('0x28'),_0x26e659);logger[_0x636b('0x14')](_0x636b('0x28'),_0x26e659,JSON[_0x636b('0x16')](_0x14480c));_0x1f6224(_0x14480c);})[_0x636b('0x1b')](function(_0xfb3200){logger[_0x636b('0x17')](_0x636b('0x28'),_0xfb3200[_0x636b('0x18')],_0x26e659);_0x10da22(_this[_0x636b('0x17')](0x1f4,_0xfb3200[_0x636b('0x18')]));});});};
\ No newline at end of file
+var _0x15dc=['result','catch','UpdateMailInteraction','MailInteraction','body','options','raw','where','limit','AddTagsToMailInteraction','find','addTags','ids','omit','spread','AddTags','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','./mailInteraction.socket','request','then','MailInteraction,\x20%s,\x20%s','request\x20sent','debug','MailInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info'];(function(_0x41de61,_0x4d08d6){var _0x214bec=function(_0x20722e){while(--_0x20722e){_0x41de61['push'](_0x41de61['shift']());}};_0x214bec(++_0x4d08d6);}(_0x15dc,0x91));var _0xc15d=function(_0x585f15,_0x1499e0){_0x585f15=_0x585f15-0x0;var _0x45364b=_0x15dc[_0x585f15];return _0x45364b;};'use strict';var _=require('lodash');var util=require(_0xc15d('0x0'));var moment=require(_0xc15d('0x1'));var BPromise=require(_0xc15d('0x2'));var rs=require(_0xc15d('0x3'));var fs=require('fs');var Redis=require(_0xc15d('0x4'));var db=require(_0xc15d('0x5'))['db'];var utils=require(_0xc15d('0x6'));var logger=require('../../config/logger')(_0xc15d('0x7'));var config=require(_0xc15d('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xc15d('0x9')][_0xc15d('0xa')]({'port':0x232a});config[_0xc15d('0xb')]=_[_0xc15d('0xc')](config[_0xc15d('0xb')],{'host':_0xc15d('0xd'),'port':0x18eb});var socket=require(_0xc15d('0xe'))(new Redis(config[_0xc15d('0xb')]));require(_0xc15d('0xf'))['register'](socket);function respondWithRpcPromise(_0x4cedf3,_0x53d8eb,_0xaf6856){return new BPromise(function(_0x547c26,_0x484aea){return client[_0xc15d('0x10')](_0x4cedf3,_0xaf6856)[_0xc15d('0x11')](function(_0x5374d7){logger['info'](_0xc15d('0x12'),_0x53d8eb,_0xc15d('0x13'));logger[_0xc15d('0x14')](_0xc15d('0x15'),_0x53d8eb,_0xc15d('0x13'),JSON[_0xc15d('0x16')](_0x5374d7));if(_0x5374d7[_0xc15d('0x17')]){if(_0x5374d7['error'][_0xc15d('0x18')]===0x1f4){logger['error']('MailInteraction,\x20%s,\x20%s',_0x53d8eb,_0x5374d7[_0xc15d('0x17')][_0xc15d('0x19')]);return _0x484aea(_0x5374d7[_0xc15d('0x17')][_0xc15d('0x19')]);}logger[_0xc15d('0x17')]('MailInteraction,\x20%s,\x20%s',_0x53d8eb,_0x5374d7['error']['message']);return _0x547c26(_0x5374d7['error']['message']);}else{logger[_0xc15d('0x1a')]('MailInteraction,\x20%s,\x20%s',_0x53d8eb,_0xc15d('0x13'));_0x547c26(_0x5374d7[_0xc15d('0x1b')][_0xc15d('0x19')]);}})[_0xc15d('0x1c')](function(_0x10f48e){logger[_0xc15d('0x17')](_0xc15d('0x12'),_0x53d8eb,_0x10f48e);_0x484aea(_0x10f48e);});});}exports[_0xc15d('0x1d')]=function(_0x41d26b){var _0x416568=this;return new Promise(function(_0xe047e0,_0x3b044a){return db[_0xc15d('0x1e')]['update'](_0x41d26b[_0xc15d('0x1f')],{'raw':_0x41d26b[_0xc15d('0x20')]?_0x41d26b[_0xc15d('0x20')][_0xc15d('0x21')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x41d26b[_0xc15d('0x20')]?_0x41d26b[_0xc15d('0x20')][_0xc15d('0x22')]||null:null,'attributes':_0x41d26b[_0xc15d('0x20')]?_0x41d26b[_0xc15d('0x20')]['attributes']||null:null,'limit':_0x41d26b['options']?_0x41d26b['options'][_0xc15d('0x23')]||null:null})[_0xc15d('0x11')](function(_0x4bf0c1){logger[_0xc15d('0x1a')]('UpdateMailInteraction',_0x41d26b);logger['debug']('UpdateMailInteraction',_0x41d26b,JSON['stringify'](_0x4bf0c1));_0xe047e0(_0x4bf0c1);})[_0xc15d('0x1c')](function(_0x1cbebc){logger[_0xc15d('0x17')](_0xc15d('0x1d'),_0x1cbebc[_0xc15d('0x19')],_0x41d26b);_0x3b044a(_0x416568['error'](0x1f4,_0x1cbebc['message']));});});};exports[_0xc15d('0x24')]=function(_0x2cd468){return new Promise(function(_0x511cfb,_0x2cd00c){return db[_0xc15d('0x1e')][_0xc15d('0x25')]({'where':_0x2cd468['options']?_0x2cd468[_0xc15d('0x20')][_0xc15d('0x22')]||null:null})['then'](function(_0x3b727f){if(_0x3b727f){return _0x3b727f[_0xc15d('0x26')](_0x2cd468[_0xc15d('0x1f')][_0xc15d('0x27')],_[_0xc15d('0x28')](_0x2cd468[_0xc15d('0x1f')],['ids','id'])||{});}})[_0xc15d('0x29')](function(_0x15166b){logger['info']('AddTags',_0x2cd468);logger[_0xc15d('0x14')](_0xc15d('0x2a'),_0x2cd468,JSON[_0xc15d('0x16')](_0x15166b));_0x511cfb(_0x15166b);})[_0xc15d('0x1c')](function(_0x52263e){logger[_0xc15d('0x17')](_0xc15d('0x2a'),_0x52263e['message'],_0x2cd468);_0x2cd00c(_this[_0xc15d('0x17')](0x1f4,_0x52263e[_0xc15d('0x19')]));});});};
\ No newline at end of file
index 92e7b89..7788361 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc7a=['update','emit','register','length','mailInteraction:','save'];(function(_0x29675f,_0x1854a3){var _0x276a54=function(_0x356e0f){while(--_0x356e0f){_0x29675f['push'](_0x29675f['shift']());}};_0x276a54(++_0x1854a3);}(_0xcc7a,0x101));var _0xacc7=function(_0x34b1b8,_0x54c9bf){_0x34b1b8=_0x34b1b8-0x0;var _0x542dd8=_0xcc7a[_0x34b1b8];return _0x542dd8;};'use strict';var MailInteractionEvents=require('./mailInteraction.events');var events=[_0xacc7('0x0'),'remove',_0xacc7('0x1')];function createListener(_0x43dbec,_0x37dff){return function(_0x311c5b){_0x37dff[_0xacc7('0x2')](_0x43dbec,_0x311c5b);};}function removeListener(_0x32585c,_0x4af14c){return function(){MailInteractionEvents['removeListener'](_0x32585c,_0x4af14c);};}exports[_0xacc7('0x3')]=function(_0x415ec0){for(var _0x1efa0c=0x0,_0x349758=events[_0xacc7('0x4')];_0x1efa0c<_0x349758;_0x1efa0c++){var _0x281694=events[_0x1efa0c];var _0x3f9ecc=createListener(_0xacc7('0x5')+_0x281694,_0x415ec0);MailInteractionEvents['on'](_0x281694,_0x3f9ecc);}};
\ No newline at end of file
+var _0x0b86=['mailInteraction:','./mailInteraction.events','update','emit','length'];(function(_0x473463,_0x21da73){var _0x42f406=function(_0x34a5be){while(--_0x34a5be){_0x473463['push'](_0x473463['shift']());}};_0x42f406(++_0x21da73);}(_0x0b86,0x1f0));var _0x60b8=function(_0x5d1ae8,_0x1cfb7b){_0x5d1ae8=_0x5d1ae8-0x0;var _0x2e3995=_0x0b86[_0x5d1ae8];return _0x2e3995;};'use strict';var MailInteractionEvents=require(_0x60b8('0x0'));var events=['save','remove',_0x60b8('0x1')];function createListener(_0x3e5711,_0x1c72cd){return function(_0x43a990){_0x1c72cd[_0x60b8('0x2')](_0x3e5711,_0x43a990);};}function removeListener(_0x52a6f6,_0x3f98b6){return function(){MailInteractionEvents['removeListener'](_0x52a6f6,_0x3f98b6);};}exports['register']=function(_0x5eaf33){for(var _0x3072da=0x0,_0x445290=events[_0x60b8('0x3')];_0x3072da<_0x445290;_0x3072da++){var _0x6c7b93=events[_0x3072da];var _0x551d40=createListener(_0x60b8('0x4')+_0x6c7b93,_0x5eaf33);MailInteractionEvents['on'](_0x6c7b93,_0x551d40);}};
\ No newline at end of file
index 5245444..9c4cc9b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x570f=['index','/describe','describe','/:id','show','/:id/download','isAuthenticated','download','tracked','mail','create','put','update','/:id/accept','/:id/reject','reject','delete','destroy','exports','multer','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailMessage.controller','get'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0x570f,0x152));var _0xf570=function(_0x5053ff,_0x3fb835){_0x5053ff=_0x5053ff-0x0;var _0x2d4f6c=_0x570f[_0x5053ff];return _0x2d4f6c;};'use strict';var multer=require(_0xf570('0x0'));var util=require(_0xf570('0x1'));var path=require(_0xf570('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xf570('0x3')]();var fs_extra=require(_0xf570('0x4'));var auth=require(_0xf570('0x5'));var interaction=require(_0xf570('0x6'));var config=require(_0xf570('0x7'));var controller=require(_0xf570('0x8'));router[_0xf570('0x9')]('/',auth['isAuthenticated'](),controller[_0xf570('0xa')]);router['get'](_0xf570('0xb'),auth['isAuthenticated'](),controller[_0xf570('0xc')]);router['get'](_0xf570('0xd'),auth['isAuthenticated'](),controller[_0xf570('0xe')]);router[_0xf570('0x9')](_0xf570('0xf'),auth[_0xf570('0x10')](),controller[_0xf570('0x11')]);router['post']('/',auth[_0xf570('0x10')](),interaction[_0xf570('0x12')](_0xf570('0x13'),'mailmessage:create'),controller[_0xf570('0x14')]);router[_0xf570('0x15')](_0xf570('0xd'),auth['isAuthenticated'](),controller[_0xf570('0x16')]);router[_0xf570('0x15')](_0xf570('0x17'),auth[_0xf570('0x10')](),controller['accept']);router[_0xf570('0x15')](_0xf570('0x18'),auth[_0xf570('0x10')](),controller[_0xf570('0x19')]);router[_0xf570('0x1a')](_0xf570('0xd'),auth[_0xf570('0x10')](),controller[_0xf570('0x1b')]);module[_0xf570('0x1c')]=router;
\ No newline at end of file
+var _0xc882=['show','download','post','tracked','mail','create','put','update','/:id/accept','reject','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailMessage.controller','get','isAuthenticated','index','/:id'];(function(_0x342700,_0x569f75){var _0x53406f=function(_0x3b3c32){while(--_0x3b3c32){_0x342700['push'](_0x342700['shift']());}};_0x53406f(++_0x569f75);}(_0xc882,0xff));var _0x2c88=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xc882[_0xa464c9];return _0x3d73c4;};'use strict';var multer=require(_0x2c88('0x0'));var util=require(_0x2c88('0x1'));var path=require(_0x2c88('0x2'));var timeout=require(_0x2c88('0x3'));var express=require(_0x2c88('0x4'));var router=express[_0x2c88('0x5')]();var fs_extra=require(_0x2c88('0x6'));var auth=require(_0x2c88('0x7'));var interaction=require(_0x2c88('0x8'));var config=require(_0x2c88('0x9'));var controller=require(_0x2c88('0xa'));router[_0x2c88('0xb')]('/',auth[_0x2c88('0xc')](),controller[_0x2c88('0xd')]);router[_0x2c88('0xb')]('/describe',auth['isAuthenticated'](),controller['describe']);router[_0x2c88('0xb')](_0x2c88('0xe'),auth['isAuthenticated'](),controller[_0x2c88('0xf')]);router[_0x2c88('0xb')]('/:id/download',auth[_0x2c88('0xc')](),controller[_0x2c88('0x10')]);router[_0x2c88('0x11')]('/',auth['isAuthenticated'](),interaction[_0x2c88('0x12')](_0x2c88('0x13'),'mailmessage:create'),controller[_0x2c88('0x14')]);router[_0x2c88('0x15')]('/:id',auth['isAuthenticated'](),controller[_0x2c88('0x16')]);router[_0x2c88('0x15')](_0x2c88('0x17'),auth['isAuthenticated'](),controller['accept']);router[_0x2c88('0x15')]('/:id/reject',auth[_0x2c88('0xc')](),controller[_0x2c88('0x18')]);router[_0x2c88('0x19')](_0x2c88('0xe'),auth[_0x2c88('0xc')](),controller[_0x2c88('0x1a')]);module['exports']=router;
\ No newline at end of file
index 9ef6ba9..72961cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe7bf=['DATE','Email','Chat','sequelize','lodash','exports','long','TEXT','medium','ENUM','out','STRING','INTEGER','BOOLEAN'];(function(_0x260f28,_0x4e9b30){var _0x3aefcc=function(_0x223b18){while(--_0x223b18){_0x260f28['push'](_0x260f28['shift']());}};_0x3aefcc(++_0x4e9b30);}(_0xe7bf,0x16f));var _0xfe7b=function(_0x484503,_0x217fb4){_0x484503=_0x484503-0x0;var _0x3338d7=_0xe7bf[_0x484503];return _0x3338d7;};'use strict';var Sequelize=require(_0xfe7b('0x0'));var _=require(_0xfe7b('0x1'));module[_0xfe7b('0x2')]={'body':{'type':Sequelize['TEXT'](_0xfe7b('0x3')),'allowNull':![]},'plainBody':{'type':Sequelize[_0xfe7b('0x4')](_0xfe7b('0x5'))},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0xfe7b('0x6')]('in',_0xfe7b('0x7')),'defaultValue':'out','allowNull':![]},'messageId':{'type':Sequelize[_0xfe7b('0x8')](0x1fe)},'from':{'type':Sequelize['STRING']},'to':{'type':Sequelize[_0xfe7b('0x4')](_0xfe7b('0x3'))},'cc':{'type':Sequelize['TEXT'](_0xfe7b('0x3'))},'bcc':{'type':Sequelize[_0xfe7b('0x4')](_0xfe7b('0x3'))},'subject':{'type':Sequelize[_0xfe7b('0x4')]},'sentAt':{'type':Sequelize['DATE']},'attach':{'type':Sequelize[_0xfe7b('0x9')],'defaultValue':0x0},'secret':{'type':Sequelize[_0xfe7b('0xa')],'defaultValue':![]},'readAt':{'type':Sequelize[_0xfe7b('0xb')]},'originTo':{'type':Sequelize[_0xfe7b('0x4')]('long')},'originCc':{'type':Sequelize[_0xfe7b('0x4')](_0xfe7b('0x3'))},'originChannel':{'type':Sequelize[_0xfe7b('0x6')](_0xfe7b('0xc'),_0xfe7b('0xd')),'defaultValue':_0xfe7b('0xc'),'allowNull':![]}};
\ No newline at end of file
+var _0x09ee=['Email','Chat','sequelize','lodash','exports','TEXT','medium','BOOLEAN','ENUM','out','STRING','long','DATE','INTEGER'];(function(_0x4c4483,_0x13ffff){var _0x5b45ab=function(_0x1be5c8){while(--_0x1be5c8){_0x4c4483['push'](_0x4c4483['shift']());}};_0x5b45ab(++_0x13ffff);}(_0x09ee,0xaa));var _0xe09e=function(_0x56355a,_0x138baf){_0x56355a=_0x56355a-0x0;var _0x573afa=_0x09ee[_0x56355a];return _0x573afa;};'use strict';var Sequelize=require(_0xe09e('0x0'));var _=require(_0xe09e('0x1'));module[_0xe09e('0x2')]={'body':{'type':Sequelize['TEXT']('long'),'allowNull':![]},'plainBody':{'type':Sequelize[_0xe09e('0x3')](_0xe09e('0x4'))},'read':{'type':Sequelize[_0xe09e('0x5')],'defaultValue':![]},'direction':{'type':Sequelize[_0xe09e('0x6')]('in',_0xe09e('0x7')),'defaultValue':_0xe09e('0x7'),'allowNull':![]},'messageId':{'type':Sequelize[_0xe09e('0x8')](0x1fe)},'from':{'type':Sequelize[_0xe09e('0x8')]},'to':{'type':Sequelize[_0xe09e('0x3')](_0xe09e('0x9'))},'cc':{'type':Sequelize['TEXT'](_0xe09e('0x9'))},'bcc':{'type':Sequelize['TEXT']('long')},'subject':{'type':Sequelize[_0xe09e('0x3')]},'sentAt':{'type':Sequelize[_0xe09e('0xa')]},'attach':{'type':Sequelize[_0xe09e('0xb')],'defaultValue':0x0},'secret':{'type':Sequelize[_0xe09e('0x5')],'defaultValue':![]},'readAt':{'type':Sequelize[_0xe09e('0xa')]},'originTo':{'type':Sequelize['TEXT'](_0xe09e('0x9'))},'originCc':{'type':Sequelize[_0xe09e('0x3')](_0xe09e('0x9'))},'originChannel':{'type':Sequelize['ENUM'](_0xe09e('0xc'),_0xe09e('0xd')),'defaultValue':'Email','allowNull':![]}};
\ No newline at end of file
index 4b6ccf5..0686117 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb42f=['[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','RejectMessage','rejectMessage','Sequelize','event','download','unix','toString','server','files','tmp','message-%s.eml','from','subject','createdAt','Attachments','decode','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','bcc','headers','existsSync','push','readFileSync','build','writeFileSync','unlinkSync','eml-format','bluebird','util','path','lodash','ioredis','html-to-text','../../components/parsers/qs','api','../../config/logger','mail-interactions','../../config/environment','../../mysqldb','defaults','redis','localhost','socket.io-emitter','html-entities','./mailMessage.socket','register','jayson/promise','client','http','request','then','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','limit','count','set','Content-Range','update','destroy','end','stack','name','send','map','MailMessage','rawAttributes','fieldName','type','key','model','query','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','where','filters','filter','merge','VIRTUAL','options','includeAll','include','findAll','show','body','params','find','describe','create','direction','out','secret','split','MailAccount','findOne','MailAccountId','CmList','List','CmContact','Contacts','updatedAt','DESC','Smtp','CloudProvider','getSmtpOptions','attachments','length','join','root','basename','ListId','List\x20not\x20found','SendMail','sendMail','messageId','YYYY-MM-DD\x20HH:mm:ss','readAt','UserId','user','get','MailInteraction','MailInteractionId','isNil','read1stAt','format','[MAILMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','interaction','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','QueryTypes','SELECT','contact','User','fullname','email','internal','agent','manual','interface','SIP/%s','channel','motionChannel','accept','fromString','EventManager','acceptmessage','reject'];(function(_0x406c07,_0x188e1b){var _0x38722c=function(_0x2ab052){while(--_0x2ab052){_0x406c07['push'](_0x406c07['shift']());}};_0x38722c(++_0x188e1b);}(_0xb42f,0x16c));var _0xfb42=function(_0x3416c3,_0x36c13a){_0x3416c3=_0x3416c3-0x0;var _0x52000e=_0xb42f[_0x3416c3];return _0x52000e;};'use strict';var emlformat=require(_0xfb42('0x0'));var moment=require('moment');var BPromise=require(_0xfb42('0x1'));var util=require(_0xfb42('0x2'));var path=require(_0xfb42('0x3'));var fs=require('fs');var _=require(_0xfb42('0x4'));var Redis=require(_0xfb42('0x5'));var htmlToText=require(_0xfb42('0x6'));var qs=require(_0xfb42('0x7'));var logger=require('../../config/logger')(_0xfb42('0x8'));var interaction_log=require(_0xfb42('0x9'))(_0xfb42('0xa'));var config=require(_0xfb42('0xb'));var db=require(_0xfb42('0xc'))['db'];config['redis']=_[_0xfb42('0xd')](config[_0xfb42('0xe')],{'host':_0xfb42('0xf'),'port':0x18eb});var socket=require(_0xfb42('0x10'))(new Redis(config['redis']));var htmlEntities=require(_0xfb42('0x11'));require(_0xfb42('0x12'))[_0xfb42('0x13')](socket);var jayson=require(_0xfb42('0x14'));var client=jayson[_0xfb42('0x15')][_0xfb42('0x16')]({'port':0x232c});var client9003=jayson['client']['http']({'port':0x232b});var client9002=jayson[_0xfb42('0x15')][_0xfb42('0x16')]({'port':0x232a});function respondWithRpcPromise(_0x2748b3,_0x50ea00,_0x1bd94c,_0x17fb8d){return new BPromise(function(_0x4d01a9,_0x8e1f64){var _0x39a12f=_0x17fb8d||client;return _0x39a12f[_0xfb42('0x17')](_0x2748b3,_0x1bd94c)[_0xfb42('0x18')](function(_0x2ce4eb){logger[_0xfb42('0x19')]('MailMessage,\x20%s,\x20%s',_0x50ea00,_0xfb42('0x1a'));logger[_0xfb42('0x1b')](_0xfb42('0x1c'),_0x50ea00,_0xfb42('0x1a'),JSON[_0xfb42('0x1d')](_0x2ce4eb));if(_0x2ce4eb[_0xfb42('0x1e')]){if(_0x2ce4eb[_0xfb42('0x1e')][_0xfb42('0x1f')]===0x1f4){logger['error'](_0xfb42('0x20'),_0x50ea00,_0x2ce4eb[_0xfb42('0x1e')]['message']);return _0x8e1f64(_0x2ce4eb[_0xfb42('0x1e')][_0xfb42('0x21')]);}logger['error'](_0xfb42('0x20'),_0x50ea00,_0x2ce4eb['error'][_0xfb42('0x21')]);return _0x4d01a9(_0x2ce4eb['error'][_0xfb42('0x21')]);}else{logger[_0xfb42('0x19')]('MailMessage,\x20%s,\x20%s',_0x50ea00,_0xfb42('0x1a'));_0x4d01a9(_0x2ce4eb[_0xfb42('0x22')][_0xfb42('0x21')]);}})[_0xfb42('0x23')](function(_0x3c636d){logger['error']('MailMessage,\x20%s,\x20%s',_0x50ea00,_0x3c636d);_0x8e1f64(_0x3c636d);});});}function respondWithResult(_0x3f56a5,_0x555d5c){_0x555d5c=_0x555d5c||0xc8;return function(_0x5daed5){if(_0x5daed5){return _0x3f56a5[_0xfb42('0x24')](_0x555d5c)[_0xfb42('0x25')](_0x5daed5);}};}function respondWithFilteredResult(_0x58f700,_0xd48879){return function(_0x18a4a1){if(_0x18a4a1){var _0x24bb85=typeof _0xd48879[_0xfb42('0x26')]===_0xfb42('0x27')&&typeof _0xd48879[_0xfb42('0x28')]===_0xfb42('0x27');var _0x238b05=_0x18a4a1['count'];var _0x1b3cf8=_0x24bb85?0x0:_0xd48879[_0xfb42('0x26')];var _0x1cfdf8=_0x24bb85?_0x18a4a1[_0xfb42('0x29')]:_0xd48879['offset']+_0xd48879[_0xfb42('0x28')];var _0x31f12b;if(_0x1cfdf8>=_0x238b05){_0x1cfdf8=_0x238b05;_0x31f12b=0xc8;}else{_0x31f12b=0xce;}_0x58f700[_0xfb42('0x24')](_0x31f12b);return _0x58f700[_0xfb42('0x2a')](_0xfb42('0x2b'),_0x1b3cf8+'-'+_0x1cfdf8+'/'+_0x238b05)[_0xfb42('0x25')](_0x18a4a1);}return null;};}function saveUpdates(_0x5b6b65){return function(_0x4388d0){if(_0x4388d0){return _0x4388d0[_0xfb42('0x2c')](_0x5b6b65)[_0xfb42('0x18')](function(_0x51034b){return _0x51034b;});}return null;};}function removeEntity(_0x28d212){return function(_0x547fe8){if(_0x547fe8){return _0x547fe8[_0xfb42('0x2d')]()[_0xfb42('0x18')](function(){_0x28d212[_0xfb42('0x24')](0xcc)[_0xfb42('0x2e')]();});}};}function handleEntityNotFound(_0x5cd074){return function(_0x2705e1){if(!_0x2705e1){_0x5cd074['sendStatus'](0x194);}return _0x2705e1;};}function handleError(_0x49b67f,_0x1858c8){_0x1858c8=_0x1858c8||0x1f4;return function(_0x5c1a17){logger['error'](_0x5c1a17[_0xfb42('0x2f')]);if(_0x5c1a17['name']){delete _0x5c1a17[_0xfb42('0x30')];}_0x49b67f[_0xfb42('0x24')](_0x1858c8)[_0xfb42('0x31')](_0x5c1a17);};}exports['index']=function(_0x42c68c,_0x2d2a87){var _0x22e792={},_0xb2b9f={},_0x2a257c={'count':0x0,'rows':[]};var _0x2b667f=_[_0xfb42('0x32')](db[_0xfb42('0x33')][_0xfb42('0x34')],function(_0x1c0e45){return{'name':_0x1c0e45[_0xfb42('0x35')],'type':_0x1c0e45[_0xfb42('0x36')][_0xfb42('0x37')]};});_0xb2b9f[_0xfb42('0x38')]=_['map'](_0x2b667f,_0xfb42('0x30'));_0xb2b9f[_0xfb42('0x39')]=_['keys'](_0x42c68c[_0xfb42('0x39')]);_0xb2b9f['filters']=_['intersection'](_0xb2b9f[_0xfb42('0x38')],_0xb2b9f[_0xfb42('0x39')]);_0x22e792[_0xfb42('0x3a')]=_[_0xfb42('0x3b')](_0xb2b9f[_0xfb42('0x38')],qs[_0xfb42('0x3c')](_0x42c68c[_0xfb42('0x39')][_0xfb42('0x3c')]));_0x22e792[_0xfb42('0x3a')]=_0x22e792['attributes']['length']?_0x22e792[_0xfb42('0x3a')]:_0xb2b9f[_0xfb42('0x38')];if(!_0x42c68c[_0xfb42('0x39')][_0xfb42('0x3d')](_0xfb42('0x3e'))){_0x22e792[_0xfb42('0x28')]=qs[_0xfb42('0x28')](_0x42c68c[_0xfb42('0x39')][_0xfb42('0x28')]);_0x22e792[_0xfb42('0x26')]=qs['offset'](_0x42c68c[_0xfb42('0x39')]['offset']);}_0x22e792[_0xfb42('0x3f')]=qs[_0xfb42('0x40')](_0x42c68c[_0xfb42('0x39')][_0xfb42('0x40')]);_0x22e792[_0xfb42('0x41')]=qs[_0xfb42('0x42')](_['pick'](_0x42c68c[_0xfb42('0x39')],_0xb2b9f[_0xfb42('0x42')]),_0x2b667f);if(_0x42c68c[_0xfb42('0x39')][_0xfb42('0x43')]){_0x22e792[_0xfb42('0x41')]=_[_0xfb42('0x44')](_0x22e792[_0xfb42('0x41')],{'$or':_['map'](_0x2b667f,function(_0x2c632a){if(_0x2c632a[_0xfb42('0x36')]!==_0xfb42('0x45')){var _0x14612a={};_0x14612a[_0x2c632a[_0xfb42('0x30')]]={'$like':'%'+_0x42c68c[_0xfb42('0x39')][_0xfb42('0x43')]+'%'};return _0x14612a;}})});}_0x22e792=_[_0xfb42('0x44')]({},_0x22e792,_0x42c68c[_0xfb42('0x46')]);var _0x32f6f6={'where':_0x22e792[_0xfb42('0x41')]};return db[_0xfb42('0x33')][_0xfb42('0x29')](_0x32f6f6)[_0xfb42('0x18')](function(_0x23d361){_0x2a257c['count']=_0x23d361;if(_0x42c68c[_0xfb42('0x39')][_0xfb42('0x47')]){_0x22e792[_0xfb42('0x48')]=[{'all':!![]}];}return db[_0xfb42('0x33')][_0xfb42('0x49')](_0x22e792);})[_0xfb42('0x18')](function(_0x58e717){_0x2a257c['rows']=_0x58e717;return _0x2a257c;})[_0xfb42('0x18')](respondWithFilteredResult(_0x2d2a87,_0x22e792))[_0xfb42('0x23')](handleError(_0x2d2a87,null));};exports[_0xfb42('0x4a')]=function(_0x2b093e,_0xef6eb1){var _0x3f8e08={'raw':!![],'where':{'id':_0x2b093e['params']['id']}},_0x4ea8d6={};_0x4ea8d6[_0xfb42('0x38')]=_['keys'](db['MailMessage']['rawAttributes']);_0x4ea8d6['query']=_['keys'](_0x2b093e[_0xfb42('0x39')]);_0x4ea8d6[_0xfb42('0x42')]=_[_0xfb42('0x3b')](_0x4ea8d6['model'],_0x4ea8d6[_0xfb42('0x39')]);_0x3f8e08[_0xfb42('0x3a')]=_[_0xfb42('0x3b')](_0x4ea8d6[_0xfb42('0x38')],qs[_0xfb42('0x3c')](_0x2b093e['query'][_0xfb42('0x3c')]));_0x3f8e08[_0xfb42('0x3a')]=_0x3f8e08[_0xfb42('0x3a')]['length']?_0x3f8e08[_0xfb42('0x3a')]:_0x4ea8d6[_0xfb42('0x38')];if(_0x2b093e[_0xfb42('0x39')]['includeAll']){_0x3f8e08[_0xfb42('0x48')]=[{'all':!![]}];}_0x3f8e08=_[_0xfb42('0x44')]({},_0x3f8e08,_0x2b093e[_0xfb42('0x46')]);return db[_0xfb42('0x33')]['find'](_0x3f8e08)[_0xfb42('0x18')](handleEntityNotFound(_0xef6eb1,null))['then'](respondWithResult(_0xef6eb1,null))[_0xfb42('0x23')](handleError(_0xef6eb1,null));};exports[_0xfb42('0x2c')]=function(_0x4361c4,_0x1ed341){if(_0x4361c4[_0xfb42('0x4b')]['id']){delete _0x4361c4[_0xfb42('0x4b')]['id'];}return db['MailMessage']['find']({'where':{'id':_0x4361c4[_0xfb42('0x4c')]['id']}})[_0xfb42('0x18')](handleEntityNotFound(_0x1ed341,null))['then'](saveUpdates(_0x4361c4['body'],null))[_0xfb42('0x18')](respondWithResult(_0x1ed341,null))[_0xfb42('0x23')](handleError(_0x1ed341,null));};exports['destroy']=function(_0x4df4a3,_0x51647b){return db['MailMessage'][_0xfb42('0x4d')]({'where':{'id':_0x4df4a3['params']['id']}})[_0xfb42('0x18')](handleEntityNotFound(_0x51647b,null))[_0xfb42('0x18')](removeEntity(_0x51647b,null))['catch'](handleError(_0x51647b,null));};exports[_0xfb42('0x4e')]=function(_0x50b9b7,_0x18feea){return db[_0xfb42('0x33')][_0xfb42('0x4e')]()['then'](respondWithResult(_0x18feea,null))[_0xfb42('0x23')](handleError(_0x18feea,null));};exports[_0xfb42('0x4f')]=function(_0x1a8968,_0x462e75){return db[_0xfb42('0x33')]['create'](_0x1a8968[_0xfb42('0x4b')])['then'](function(_0x28e658){if(_0x28e658){if(_0x28e658[_0xfb42('0x50')]===_0xfb42('0x51')&&!_0x28e658[_0xfb42('0x52')]){var _0x274eba,_0x579b8a,_0x41bb75;if(_0x1a8968[_0xfb42('0x4b')]['to']){_0x579b8a=_0x1a8968['body']['to'][_0xfb42('0x53')](',')[0x0];}return db[_0xfb42('0x54')][_0xfb42('0x55')]({'where':{'id':_0x28e658[_0xfb42('0x56')]},'include':[{'model':db[_0xfb42('0x57')],'as':_0xfb42('0x58'),'include':[{'model':db[_0xfb42('0x59')],'as':_0xfb42('0x5a'),'where':{'email':_0x579b8a},'limit':0x1,'order':[[_0xfb42('0x5b'),_0xfb42('0x5c')]]}]},{'model':db['MailServerOut'],'as':_0xfb42('0x5d'),'raw':!![],'include':[{'model':db[_0xfb42('0x5e')],'as':_0xfb42('0x5e'),'raw':!![]}]}]})[_0xfb42('0x18')](function(_0x16d436){_0x274eba=_0x16d436;if(!_0x274eba||!_0x274eba[_0xfb42('0x5d')])return;var _0x587ebd=_0x274eba[_0xfb42('0x5f')]();if(_0x1a8968[_0xfb42('0x4b')]['attachments']&&_0x1a8968[_0xfb42('0x4b')][_0xfb42('0x60')][_0xfb42('0x61')]){for(var _0x4aed82=0x0;_0x4aed82<_0x1a8968[_0xfb42('0x4b')][_0xfb42('0x60')][_0xfb42('0x61')];_0x4aed82+=0x1){_0x1a8968[_0xfb42('0x4b')][_0xfb42('0x60')][_0x4aed82]={'filename':_0x1a8968[_0xfb42('0x4b')]['attachments'][_0x4aed82]['name'],'path':path[_0xfb42('0x62')](config[_0xfb42('0x63')],'server/files/attachments',_0x1a8968[_0xfb42('0x4b')][_0xfb42('0x60')][_0x4aed82][_0xfb42('0x64')])};}}_0x41bb75={'account':_0x587ebd,'message':_0x1a8968[_0xfb42('0x4b')]};return;})['then'](function(){if(_0x274eba[_0xfb42('0x58')]){if(_0x274eba['List'][_0xfb42('0x5a')][_0xfb42('0x61')]){return _0x274eba['List'][_0xfb42('0x5a')][0x0];}else{return db[_0xfb42('0x59')]['create'](_['defaults'](_0x1a8968['body'],{'firstName':_0x1a8968['body']['to'],'email':_0x1a8968['body']['to'],'phone':_0x1a8968[_0xfb42('0x4b')]['to'],'ListId':_0x274eba[_0xfb42('0x65')]}));}}else{throw new Error(_0xfb42('0x66'));}})[_0xfb42('0x18')](function(){if(_0x41bb75){return respondWithRpcPromise(_0xfb42('0x67'),_0xfb42('0x68'),_0x41bb75,client9003)['then'](function(_0x171d02){return _0x28e658[_0xfb42('0x2c')]({'read':!![],'messageId':_0x171d02[_0xfb42('0x69')],'sentAt':moment()['format'](_0xfb42('0x6a'))});})[_0xfb42('0x23')](function(_0x55e398){logger['error']('%s',JSON[_0xfb42('0x1d')](_0x55e398));return _0x28e658;});}return _0x28e658;});}return _0x28e658;}})[_0xfb42('0x18')](respondWithResult(_0x462e75,0xc9))[_0xfb42('0x23')](handleError(_0x462e75,null));};exports['accept']=function(_0x2da62a,_0x3a0a59){var _0x476c37={'agent':{},'channel':'mail'};if(_0x2da62a[_0xfb42('0x4b')]['id']){delete _0x2da62a[_0xfb42('0x4b')]['id'];}_0x2da62a['body']['read']=!![];_0x2da62a[_0xfb42('0x4b')][_0xfb42('0x6b')]=moment()['format'](_0xfb42('0x6a'));_0x2da62a[_0xfb42('0x4b')][_0xfb42('0x6c')]=_0x2da62a[_0xfb42('0x4b')][_0xfb42('0x6c')]||_0x2da62a[_0xfb42('0x6d')]['id'];_0x476c37['agent']['id']=_0x2da62a[_0xfb42('0x4b')][_0xfb42('0x6c')];return db[_0xfb42('0x33')]['find']({'where':{'id':_0x2da62a['params']['id'],'UserId':null}})['then'](handleEntityNotFound(_0x3a0a59,null))[_0xfb42('0x18')](saveUpdates(_0x2da62a[_0xfb42('0x4b')],null))['then'](function(_0x119df9){if(_0x119df9){_0x476c37[_0xfb42('0x21')]=_0x119df9[_0xfb42('0x6e')]({'plain':!![]});return db[_0xfb42('0x6f')][_0xfb42('0x4d')]({'where':{'id':_0x119df9[_0xfb42('0x70')]}});}return null;})[_0xfb42('0x18')](handleEntityNotFound(_0x3a0a59,null))[_0xfb42('0x18')](function(_0x35594b){if(_0x35594b){return _0x35594b[_0xfb42('0x2c')]({'UserId':_0x2da62a[_0xfb42('0x4b')][_0xfb42('0x6c')],'read1stAt':_[_0xfb42('0x71')](_0x35594b[_0xfb42('0x72')])?moment()[_0xfb42('0x73')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})['then'](function(_0xdb1956){if(_0xdb1956){_0x476c37['interaction']=_0xdb1956[_0xfb42('0x6e')]({'plain':!![]});interaction_log[_0xfb42('0x19')](_0xfb42('0x74'),_0x2da62a[_0xfb42('0x6d')]['id'],_0x2da62a[_0xfb42('0x6d')][_0xfb42('0x30')],_0x2da62a['user']['role'],_0x476c37[_0xfb42('0x75')]['id'],_0x2da62a[_0xfb42('0x4b')]?JSON[_0xfb42('0x1d')](_0x2da62a[_0xfb42('0x4b')]):'null');return respondWithRpcPromise('AcceptMessage',_0xfb42('0x76'),_0x476c37);}return null;})[_0xfb42('0x18')](function(_0x91ed02){var _0x1beb99=_0xfb42('0x77')+_0x91ed02[_0xfb42('0x21')][_0xfb42('0x78')];return db[_0xfb42('0x79')][_0xfb42('0x39')](_0x1beb99,{'type':db['Sequelize'][_0xfb42('0x7a')][_0xfb42('0x7b')],'raw':!![]})[_0xfb42('0x18')](function(_0x5eef01){return _0x5eef01;});})[_0xfb42('0x18')](function(_0x2d2664){if(_0x2d2664){_0x476c37[_0xfb42('0x21')][_0xfb42('0x7c')]=_0x2d2664[0x0];if(!_0x2da62a[_0xfb42('0x4b')][_0xfb42('0x6c')])return;return db[_0xfb42('0x7d')]['find']({'where':{'id':_0x2da62a[_0xfb42('0x4b')]['UserId'],'role':'agent'},'attributes':['id',_0xfb42('0x30'),_0xfb42('0x7e'),_0xfb42('0x7f'),_0xfb42('0x80')],'raw':!![]});}return null;})['then'](function(_0x134906){if(!_0x134906)return null;_0x476c37['message'][_0xfb42('0x81')]=_0x134906;return _0x476c37;})[_0xfb42('0x18')](function(_0x232559){if(_0x232559){if(_0x2da62a[_0xfb42('0x4b')][_0xfb42('0x82')]){_0x476c37[_0xfb42('0x21')][_0xfb42('0x83')]=util[_0xfb42('0x73')](_0xfb42('0x84'),_0x2da62a[_0xfb42('0x6d')][_0xfb42('0x30')]);_0x476c37[_0xfb42('0x21')][_0xfb42('0x85')]=_0x476c37[_0xfb42('0x85')];_0x476c37[_0xfb42('0x21')][_0xfb42('0x86')]=_0x476c37['channel'];_0x476c37[_0xfb42('0x21')]['event']=_0xfb42('0x87');_0x476c37[_0xfb42('0x21')][_0xfb42('0x4b')]=htmlToText[_0xfb42('0x88')](_0x476c37[_0xfb42('0x21')][_0xfb42('0x4b')]);return respondWithRpcPromise(_0xfb42('0x89'),_0xfb42('0x89'),{'event':_0xfb42('0x8a'),'message':_0x476c37[_0xfb42('0x21')]},client9002)[_0xfb42('0x18')](function(){return _0x476c37;});}return _0x476c37;}return null;})[_0xfb42('0x18')](respondWithResult(_0x3a0a59,null))[_0xfb42('0x23')](handleError(_0x3a0a59,null));};exports[_0xfb42('0x8b')]=function(_0x4d8f7f,_0x424cc0){var _0x1150da={'agent':{},'channel':'mail'};if(_0x4d8f7f['body']['id']){delete _0x4d8f7f[_0xfb42('0x4b')]['id'];}_0x4d8f7f['body']['UserId']=_0x4d8f7f[_0xfb42('0x4b')][_0xfb42('0x6c')]||_0x4d8f7f[_0xfb42('0x6d')]['id'];_0x1150da[_0xfb42('0x81')]['id']=_0x4d8f7f[_0xfb42('0x4b')]['UserId'];return db[_0xfb42('0x33')][_0xfb42('0x4d')]({'where':{'id':_0x4d8f7f[_0xfb42('0x4c')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x424cc0,null))[_0xfb42('0x18')](function(_0x31be92){if(_0x31be92){_0x1150da[_0xfb42('0x21')]=_0x31be92[_0xfb42('0x6e')]({'plain':!![]});return db[_0xfb42('0x6f')][_0xfb42('0x4d')]({'where':{'id':_0x31be92[_0xfb42('0x70')]}});}return null;})[_0xfb42('0x18')](handleEntityNotFound(_0x424cc0,null))[_0xfb42('0x18')](function(_0x51a034){if(_0x51a034){_0x1150da[_0xfb42('0x75')]=_0x51a034['get']({'plain':!![]});interaction_log['info'](_0xfb42('0x8c'),_0x4d8f7f['user']['id'],_0x4d8f7f[_0xfb42('0x6d')][_0xfb42('0x30')],_0x4d8f7f[_0xfb42('0x6d')][_0xfb42('0x8d')],_0x1150da[_0xfb42('0x75')]['id'],_0x4d8f7f['body']?JSON['stringify'](_0x4d8f7f[_0xfb42('0x4b')]):_0xfb42('0x8e'));return respondWithRpcPromise(_0xfb42('0x8f'),_0xfb42('0x90'),_0x1150da);}return null;})[_0xfb42('0x18')](function(_0x560901){var _0x1cbc40=_0xfb42('0x77')+_0x560901[_0xfb42('0x21')][_0xfb42('0x78')];return db[_0xfb42('0x79')][_0xfb42('0x39')](_0x1cbc40,{'type':db[_0xfb42('0x91')]['QueryTypes'][_0xfb42('0x7b')],'raw':!![]})[_0xfb42('0x18')](function(_0x1746ce){return _0x1746ce;});})['then'](function(_0x4d49fa){if(_0x4d49fa){_0x1150da['message'][_0xfb42('0x7c')]=_0x4d49fa[0x0];if(!_0x4d8f7f[_0xfb42('0x4b')][_0xfb42('0x6c')])return;return db['User']['find']({'where':{'id':_0x4d8f7f[_0xfb42('0x4b')][_0xfb42('0x6c')],'role':'agent'},'attributes':['id',_0xfb42('0x30'),_0xfb42('0x7e'),_0xfb42('0x7f'),_0xfb42('0x80')],'raw':!![]});}return null;})[_0xfb42('0x18')](function(_0x121b03){if(!_0x121b03)return null;_0x1150da[_0xfb42('0x21')]['agent']=_0x121b03;return _0x1150da;})[_0xfb42('0x18')](function(_0xe4763){if(_0xe4763){_0xe4763['message'][_0xfb42('0x83')]=util[_0xfb42('0x73')](_0xfb42('0x84'),_0x4d8f7f[_0xfb42('0x6d')][_0xfb42('0x30')]);_0xe4763[_0xfb42('0x21')][_0xfb42('0x85')]=_0x1150da['channel'];_0xe4763[_0xfb42('0x21')]['motionChannel']=_0x1150da[_0xfb42('0x85')];_0xe4763[_0xfb42('0x21')][_0xfb42('0x92')]='reject';_0xe4763[_0xfb42('0x21')][_0xfb42('0x4b')]=htmlToText[_0xfb42('0x88')](_0x1150da[_0xfb42('0x21')][_0xfb42('0x4b')]);respondWithRpcPromise(_0xfb42('0x89'),'EventManager',{'event':'rejectmessage','message':_0xe4763[_0xfb42('0x21')]},client9002);return _0x1150da;}return null;})[_0xfb42('0x18')](respondWithResult(_0x424cc0,null))[_0xfb42('0x23')](handleError(_0x424cc0,null));};exports[_0xfb42('0x93')]=function(_0x350c13,_0x2d010b){var _0x4c0cb7=moment()[_0xfb42('0x94')]()[_0xfb42('0x95')]();var _0x5753d1=path[_0xfb42('0x62')](config[_0xfb42('0x63')],_0xfb42('0x96'),_0xfb42('0x97'),_0xfb42('0x98'));var _0x350887=path['join'](config[_0xfb42('0x63')],'server',_0xfb42('0x97'),_0xfb42('0x60'));var _0x5c0d2a=util[_0xfb42('0x73')](_0xfb42('0x99'),_0x4c0cb7);return db[_0xfb42('0x33')]['find']({'where':{'id':_0x350c13[_0xfb42('0x4c')]['id']},'attributes':['id',_0xfb42('0x4b'),_0xfb42('0x9a'),'to','cc','bcc',_0xfb42('0x9b'),_0xfb42('0x9c')],'include':_0x350c13[_0xfb42('0x39')][_0xfb42('0x60')]?[{'model':db['Attachment'],'as':_0xfb42('0x9d')}]:undefined})[_0xfb42('0x18')](handleEntityNotFound(_0x2d010b,null))[_0xfb42('0x18')](function(_0x57f9f3){if(_0x57f9f3){var _0x33ce61=_0x57f9f3;var _0x1cb0f2={'from':_0x33ce61[_0xfb42('0x9a')],'to':_0x33ce61['to'],'subject':_0x33ce61[_0xfb42('0x9b')],'html':htmlEntities[_0xfb42('0x9e')](_0x33ce61[_0xfb42('0x4b')]),'headers':{'Date':moment(_0x33ce61['createdAt'])[_0xfb42('0x73')](_0xfb42('0x9f'))},'attachments':[]};if(_0x57f9f3['cc']){_0x1cb0f2['headers']['Cc']=_0x57f9f3['cc'];}if(_0x57f9f3[_0xfb42('0xa0')]){_0x1cb0f2[_0xfb42('0xa1')]['Bcc']=_0x57f9f3[_0xfb42('0xa0')];}return new BPromise(function(_0x666226,_0x4b0ebb){if(_0x57f9f3[_0xfb42('0x9d')]){for(var _0xb75f70=0x0;_0xb75f70<_0x57f9f3[_0xfb42('0x9d')][_0xfb42('0x61')];_0xb75f70++){var _0x366ddb=_0x57f9f3[_0xfb42('0x9d')][_0xb75f70];var _0x49e40a=path[_0xfb42('0x62')](_0x350887,_0x366ddb[_0xfb42('0x64')]);if(fs[_0xfb42('0xa2')](_0x49e40a)){_0x1cb0f2[_0xfb42('0x60')][_0xfb42('0xa3')]({'name':_0x366ddb[_0xfb42('0x30')],'contentType':_0x366ddb[_0xfb42('0x36')],'data':fs[_0xfb42('0xa4')](_0x49e40a)});}}}emlformat[_0xfb42('0xa5')](_0x1cb0f2,function(_0x2ed65a,_0x3003b5){if(_0x2ed65a)return _0x4b0ebb(_0x2ed65a);fs[_0xfb42('0xa6')](path[_0xfb42('0x62')](_0x5753d1,_0x5c0d2a),_0x3003b5);return _0x666226(_0x3003b5);});});}})[_0xfb42('0x18')](function(_0x3e0198){if(_0x3e0198){return _0x2d010b[_0xfb42('0x93')](path[_0xfb42('0x62')](_0x5753d1,_0x5c0d2a),_0x5c0d2a,function(_0x1dfb4e){if(!_0x1dfb4e)fs[_0xfb42('0xa7')](path[_0xfb42('0x62')](_0x5753d1,_0x5c0d2a));});}})['catch'](handleError(_0x2d010b,null));};
\ No newline at end of file
+var _0x5d35=['SIP/%s','channel','motionChannel','event','fromString','EventManager','reject','[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','RejectMessage','rejectMessage','QueryTypes','email','rejectmessage','unix','files','tmp','message-%s.eml','from','Attachment','subject','decode','createdAt','headers','bcc','Bcc','Attachments','basename','existsSync','readFileSync','build','download','moment','bluebird','util','path','ioredis','html-to-text','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','html-entities','./mailMessage.socket','register','jayson/promise','client','http','request','then','request\x20sent','debug','MailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','MailMessage,\x20%s,\x20%s','message','info','catch','status','json','offset','undefined','limit','count','set','Content-Range','update','destroy','sendStatus','stack','name','send','map','MailMessage','fieldName','type','key','model','keys','filters','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','include','findAll','rows','params','rawAttributes','includeAll','options','find','body','describe','create','direction','out','secret','MailAccountId','CmList','List','CmContact','Contacts','updatedAt','MailServerOut','Smtp','CloudProvider','attachments','join','root','defaults','ListId','SendMail','sendMail','messageId','accept','mail','readAt','UserId','user','agent','get','MailInteraction','isNil','YYYY-MM-DD\x20HH:mm:ss','interaction','null','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','SELECT','User','fullname','internal','interface','format'];(function(_0x543904,_0x2fcefa){var _0x4f8749=function(_0x2ca7ae){while(--_0x2ca7ae){_0x543904['push'](_0x543904['shift']());}};_0x4f8749(++_0x2fcefa);}(_0x5d35,0x1eb));var _0x55d3=function(_0x320c42,_0x196ea6){_0x320c42=_0x320c42-0x0;var _0x1abf85=_0x5d35[_0x320c42];return _0x1abf85;};'use strict';var emlformat=require('eml-format');var moment=require(_0x55d3('0x0'));var BPromise=require(_0x55d3('0x1'));var util=require(_0x55d3('0x2'));var path=require(_0x55d3('0x3'));var fs=require('fs');var _=require('lodash');var Redis=require(_0x55d3('0x4'));var htmlToText=require(_0x55d3('0x5'));var qs=require(_0x55d3('0x6'));var logger=require(_0x55d3('0x7'))(_0x55d3('0x8'));var interaction_log=require(_0x55d3('0x7'))('mail-interactions');var config=require(_0x55d3('0x9'));var db=require(_0x55d3('0xa'))['db'];config[_0x55d3('0xb')]=_['defaults'](config[_0x55d3('0xb')],{'host':_0x55d3('0xc'),'port':0x18eb});var socket=require(_0x55d3('0xd'))(new Redis(config['redis']));var htmlEntities=require(_0x55d3('0xe'));require(_0x55d3('0xf'))[_0x55d3('0x10')](socket);var jayson=require(_0x55d3('0x11'));var client=jayson[_0x55d3('0x12')]['http']({'port':0x232c});var client9003=jayson[_0x55d3('0x12')]['http']({'port':0x232b});var client9002=jayson[_0x55d3('0x12')][_0x55d3('0x13')]({'port':0x232a});function respondWithRpcPromise(_0x18a338,_0x3a4d00,_0x48602f,_0x44dea2){return new BPromise(function(_0x1629e3,_0x59f5df){var _0x175fcc=_0x44dea2||client;return _0x175fcc[_0x55d3('0x14')](_0x18a338,_0x48602f)[_0x55d3('0x15')](function(_0x262abe){logger['info']('MailMessage,\x20%s,\x20%s',_0x3a4d00,_0x55d3('0x16'));logger[_0x55d3('0x17')](_0x55d3('0x18'),_0x3a4d00,_0x55d3('0x16'),JSON[_0x55d3('0x19')](_0x262abe));if(_0x262abe['error']){if(_0x262abe[_0x55d3('0x1a')][_0x55d3('0x1b')]===0x1f4){logger[_0x55d3('0x1a')](_0x55d3('0x1c'),_0x3a4d00,_0x262abe[_0x55d3('0x1a')][_0x55d3('0x1d')]);return _0x59f5df(_0x262abe['error'][_0x55d3('0x1d')]);}logger['error']('MailMessage,\x20%s,\x20%s',_0x3a4d00,_0x262abe[_0x55d3('0x1a')]['message']);return _0x1629e3(_0x262abe['error'][_0x55d3('0x1d')]);}else{logger[_0x55d3('0x1e')](_0x55d3('0x1c'),_0x3a4d00,_0x55d3('0x16'));_0x1629e3(_0x262abe['result'][_0x55d3('0x1d')]);}})[_0x55d3('0x1f')](function(_0x35fb38){logger['error'](_0x55d3('0x1c'),_0x3a4d00,_0x35fb38);_0x59f5df(_0x35fb38);});});}function respondWithResult(_0xf6a95e,_0x21c5cf){_0x21c5cf=_0x21c5cf||0xc8;return function(_0xf2fe02){if(_0xf2fe02){return _0xf6a95e[_0x55d3('0x20')](_0x21c5cf)[_0x55d3('0x21')](_0xf2fe02);}};}function respondWithFilteredResult(_0xd1c4d4,_0x21b4aa){return function(_0x6494bc){if(_0x6494bc){var _0x3cc42d=typeof _0x21b4aa[_0x55d3('0x22')]===_0x55d3('0x23')&&typeof _0x21b4aa[_0x55d3('0x24')]==='undefined';var _0x1974a0=_0x6494bc[_0x55d3('0x25')];var _0x598642=_0x3cc42d?0x0:_0x21b4aa['offset'];var _0x2d7661=_0x3cc42d?_0x6494bc['count']:_0x21b4aa[_0x55d3('0x22')]+_0x21b4aa[_0x55d3('0x24')];var _0x16c437;if(_0x2d7661>=_0x1974a0){_0x2d7661=_0x1974a0;_0x16c437=0xc8;}else{_0x16c437=0xce;}_0xd1c4d4[_0x55d3('0x20')](_0x16c437);return _0xd1c4d4[_0x55d3('0x26')](_0x55d3('0x27'),_0x598642+'-'+_0x2d7661+'/'+_0x1974a0)[_0x55d3('0x21')](_0x6494bc);}return null;};}function saveUpdates(_0x50c630){return function(_0x527a82){if(_0x527a82){return _0x527a82[_0x55d3('0x28')](_0x50c630)[_0x55d3('0x15')](function(_0x2a60ec){return _0x2a60ec;});}return null;};}function removeEntity(_0x430bf5){return function(_0x1e8392){if(_0x1e8392){return _0x1e8392[_0x55d3('0x29')]()[_0x55d3('0x15')](function(){_0x430bf5[_0x55d3('0x20')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1c8a0c){return function(_0x1e7a83){if(!_0x1e7a83){_0x1c8a0c[_0x55d3('0x2a')](0x194);}return _0x1e7a83;};}function handleError(_0x3315cb,_0x179d07){_0x179d07=_0x179d07||0x1f4;return function(_0x3eae84){logger['error'](_0x3eae84[_0x55d3('0x2b')]);if(_0x3eae84[_0x55d3('0x2c')]){delete _0x3eae84[_0x55d3('0x2c')];}_0x3315cb[_0x55d3('0x20')](_0x179d07)[_0x55d3('0x2d')](_0x3eae84);};}exports['index']=function(_0x3990ca,_0x15a75d){var _0x21a0e8={},_0x2e779a={},_0x118687={'count':0x0,'rows':[]};var _0x4d7e0a=_[_0x55d3('0x2e')](db[_0x55d3('0x2f')]['rawAttributes'],function(_0x1a6067){return{'name':_0x1a6067[_0x55d3('0x30')],'type':_0x1a6067[_0x55d3('0x31')][_0x55d3('0x32')]};});_0x2e779a[_0x55d3('0x33')]=_[_0x55d3('0x2e')](_0x4d7e0a,_0x55d3('0x2c'));_0x2e779a['query']=_[_0x55d3('0x34')](_0x3990ca['query']);_0x2e779a[_0x55d3('0x35')]=_[_0x55d3('0x36')](_0x2e779a[_0x55d3('0x33')],_0x2e779a[_0x55d3('0x37')]);_0x21a0e8[_0x55d3('0x38')]=_[_0x55d3('0x36')](_0x2e779a['model'],qs[_0x55d3('0x39')](_0x3990ca[_0x55d3('0x37')][_0x55d3('0x39')]));_0x21a0e8[_0x55d3('0x38')]=_0x21a0e8['attributes'][_0x55d3('0x3a')]?_0x21a0e8['attributes']:_0x2e779a['model'];if(!_0x3990ca[_0x55d3('0x37')][_0x55d3('0x3b')](_0x55d3('0x3c'))){_0x21a0e8[_0x55d3('0x24')]=qs[_0x55d3('0x24')](_0x3990ca[_0x55d3('0x37')][_0x55d3('0x24')]);_0x21a0e8['offset']=qs[_0x55d3('0x22')](_0x3990ca[_0x55d3('0x37')][_0x55d3('0x22')]);}_0x21a0e8[_0x55d3('0x3d')]=qs[_0x55d3('0x3e')](_0x3990ca[_0x55d3('0x37')]['sort']);_0x21a0e8[_0x55d3('0x3f')]=qs[_0x55d3('0x35')](_[_0x55d3('0x40')](_0x3990ca[_0x55d3('0x37')],_0x2e779a[_0x55d3('0x35')]),_0x4d7e0a);if(_0x3990ca[_0x55d3('0x37')][_0x55d3('0x41')]){_0x21a0e8[_0x55d3('0x3f')]=_['merge'](_0x21a0e8[_0x55d3('0x3f')],{'$or':_['map'](_0x4d7e0a,function(_0x1027ce){if(_0x1027ce[_0x55d3('0x31')]!==_0x55d3('0x42')){var _0x4c0c4e={};_0x4c0c4e[_0x1027ce[_0x55d3('0x2c')]]={'$like':'%'+_0x3990ca[_0x55d3('0x37')][_0x55d3('0x41')]+'%'};return _0x4c0c4e;}})});}_0x21a0e8=_[_0x55d3('0x43')]({},_0x21a0e8,_0x3990ca['options']);var _0x409192={'where':_0x21a0e8[_0x55d3('0x3f')]};return db[_0x55d3('0x2f')][_0x55d3('0x25')](_0x409192)['then'](function(_0x34c999){_0x118687[_0x55d3('0x25')]=_0x34c999;if(_0x3990ca[_0x55d3('0x37')]['includeAll']){_0x21a0e8[_0x55d3('0x44')]=[{'all':!![]}];}return db['MailMessage'][_0x55d3('0x45')](_0x21a0e8);})[_0x55d3('0x15')](function(_0x2b4c1c){_0x118687[_0x55d3('0x46')]=_0x2b4c1c;return _0x118687;})[_0x55d3('0x15')](respondWithFilteredResult(_0x15a75d,_0x21a0e8))[_0x55d3('0x1f')](handleError(_0x15a75d,null));};exports['show']=function(_0x3eec5c,_0x472e7a){var _0x404d5e={'raw':!![],'where':{'id':_0x3eec5c[_0x55d3('0x47')]['id']}},_0x406353={};_0x406353[_0x55d3('0x33')]=_['keys'](db[_0x55d3('0x2f')][_0x55d3('0x48')]);_0x406353['query']=_[_0x55d3('0x34')](_0x3eec5c[_0x55d3('0x37')]);_0x406353[_0x55d3('0x35')]=_[_0x55d3('0x36')](_0x406353[_0x55d3('0x33')],_0x406353[_0x55d3('0x37')]);_0x404d5e[_0x55d3('0x38')]=_[_0x55d3('0x36')](_0x406353[_0x55d3('0x33')],qs[_0x55d3('0x39')](_0x3eec5c[_0x55d3('0x37')][_0x55d3('0x39')]));_0x404d5e[_0x55d3('0x38')]=_0x404d5e[_0x55d3('0x38')]['length']?_0x404d5e[_0x55d3('0x38')]:_0x406353[_0x55d3('0x33')];if(_0x3eec5c[_0x55d3('0x37')][_0x55d3('0x49')]){_0x404d5e[_0x55d3('0x44')]=[{'all':!![]}];}_0x404d5e=_['merge']({},_0x404d5e,_0x3eec5c[_0x55d3('0x4a')]);return db[_0x55d3('0x2f')][_0x55d3('0x4b')](_0x404d5e)['then'](handleEntityNotFound(_0x472e7a,null))[_0x55d3('0x15')](respondWithResult(_0x472e7a,null))[_0x55d3('0x1f')](handleError(_0x472e7a,null));};exports['update']=function(_0x308122,_0x2a9ff1){if(_0x308122[_0x55d3('0x4c')]['id']){delete _0x308122[_0x55d3('0x4c')]['id'];}return db[_0x55d3('0x2f')][_0x55d3('0x4b')]({'where':{'id':_0x308122[_0x55d3('0x47')]['id']}})[_0x55d3('0x15')](handleEntityNotFound(_0x2a9ff1,null))['then'](saveUpdates(_0x308122[_0x55d3('0x4c')],null))[_0x55d3('0x15')](respondWithResult(_0x2a9ff1,null))[_0x55d3('0x1f')](handleError(_0x2a9ff1,null));};exports[_0x55d3('0x29')]=function(_0x2a550c,_0xedb24a){return db[_0x55d3('0x2f')][_0x55d3('0x4b')]({'where':{'id':_0x2a550c[_0x55d3('0x47')]['id']}})[_0x55d3('0x15')](handleEntityNotFound(_0xedb24a,null))['then'](removeEntity(_0xedb24a,null))[_0x55d3('0x1f')](handleError(_0xedb24a,null));};exports[_0x55d3('0x4d')]=function(_0x3f964a,_0x52d08f){return db['MailMessage'][_0x55d3('0x4d')]()[_0x55d3('0x15')](respondWithResult(_0x52d08f,null))[_0x55d3('0x1f')](handleError(_0x52d08f,null));};exports[_0x55d3('0x4e')]=function(_0x50dd06,_0x5009d1){return db[_0x55d3('0x2f')][_0x55d3('0x4e')](_0x50dd06[_0x55d3('0x4c')])['then'](function(_0x2f9d61){if(_0x2f9d61){if(_0x2f9d61[_0x55d3('0x4f')]===_0x55d3('0x50')&&!_0x2f9d61[_0x55d3('0x51')]){var _0x4635a2,_0x2697b6,_0xbbfc02;if(_0x50dd06[_0x55d3('0x4c')]['to']){_0x2697b6=_0x50dd06['body']['to']['split'](',')[0x0];}return db['MailAccount']['findOne']({'where':{'id':_0x2f9d61[_0x55d3('0x52')]},'include':[{'model':db[_0x55d3('0x53')],'as':_0x55d3('0x54'),'include':[{'model':db[_0x55d3('0x55')],'as':_0x55d3('0x56'),'where':{'email':_0x2697b6},'limit':0x1,'order':[[_0x55d3('0x57'),'DESC']]}]},{'model':db[_0x55d3('0x58')],'as':_0x55d3('0x59'),'raw':!![],'include':[{'model':db[_0x55d3('0x5a')],'as':_0x55d3('0x5a'),'raw':!![]}]}]})[_0x55d3('0x15')](function(_0x56ea20){_0x4635a2=_0x56ea20;if(!_0x4635a2||!_0x4635a2[_0x55d3('0x59')])return;var _0x1aa40a=_0x4635a2['getSmtpOptions']();if(_0x50dd06['body']['attachments']&&_0x50dd06[_0x55d3('0x4c')][_0x55d3('0x5b')]['length']){for(var _0x4aeb93=0x0;_0x4aeb93<_0x50dd06[_0x55d3('0x4c')]['attachments'][_0x55d3('0x3a')];_0x4aeb93+=0x1){_0x50dd06[_0x55d3('0x4c')][_0x55d3('0x5b')][_0x4aeb93]={'filename':_0x50dd06['body']['attachments'][_0x4aeb93][_0x55d3('0x2c')],'path':path[_0x55d3('0x5c')](config[_0x55d3('0x5d')],'server/files/attachments',_0x50dd06[_0x55d3('0x4c')][_0x55d3('0x5b')][_0x4aeb93]['basename'])};}}_0xbbfc02={'account':_0x1aa40a,'message':_0x50dd06[_0x55d3('0x4c')]};return;})['then'](function(){if(_0x4635a2[_0x55d3('0x54')]){if(_0x4635a2['List'][_0x55d3('0x56')]['length']){return _0x4635a2[_0x55d3('0x54')]['Contacts'][0x0];}else{return db[_0x55d3('0x55')][_0x55d3('0x4e')](_[_0x55d3('0x5e')](_0x50dd06[_0x55d3('0x4c')],{'firstName':_0x50dd06[_0x55d3('0x4c')]['to'],'email':_0x50dd06['body']['to'],'phone':_0x50dd06[_0x55d3('0x4c')]['to'],'ListId':_0x4635a2[_0x55d3('0x5f')]}));}}else{throw new Error('List\x20not\x20found');}})['then'](function(){if(_0xbbfc02){return respondWithRpcPromise(_0x55d3('0x60'),_0x55d3('0x61'),_0xbbfc02,client9003)[_0x55d3('0x15')](function(_0x1e95cc){return _0x2f9d61['update']({'read':!![],'messageId':_0x1e95cc[_0x55d3('0x62')],'sentAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')});})[_0x55d3('0x1f')](function(_0x2f91aa){logger['error']('%s',JSON[_0x55d3('0x19')](_0x2f91aa));return _0x2f9d61;});}return _0x2f9d61;});}return _0x2f9d61;}})[_0x55d3('0x15')](respondWithResult(_0x5009d1,0xc9))['catch'](handleError(_0x5009d1,null));};exports[_0x55d3('0x63')]=function(_0xec964a,_0xf54520){var _0x511ad7={'agent':{},'channel':_0x55d3('0x64')};if(_0xec964a[_0x55d3('0x4c')]['id']){delete _0xec964a[_0x55d3('0x4c')]['id'];}_0xec964a[_0x55d3('0x4c')]['read']=!![];_0xec964a['body'][_0x55d3('0x65')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0xec964a[_0x55d3('0x4c')][_0x55d3('0x66')]=_0xec964a[_0x55d3('0x4c')]['UserId']||_0xec964a[_0x55d3('0x67')]['id'];_0x511ad7[_0x55d3('0x68')]['id']=_0xec964a['body'][_0x55d3('0x66')];return db[_0x55d3('0x2f')][_0x55d3('0x4b')]({'where':{'id':_0xec964a[_0x55d3('0x47')]['id'],'UserId':null}})[_0x55d3('0x15')](handleEntityNotFound(_0xf54520,null))['then'](saveUpdates(_0xec964a[_0x55d3('0x4c')],null))[_0x55d3('0x15')](function(_0x568ad3){if(_0x568ad3){_0x511ad7[_0x55d3('0x1d')]=_0x568ad3[_0x55d3('0x69')]({'plain':!![]});return db[_0x55d3('0x6a')][_0x55d3('0x4b')]({'where':{'id':_0x568ad3['MailInteractionId']}});}return null;})[_0x55d3('0x15')](handleEntityNotFound(_0xf54520,null))[_0x55d3('0x15')](function(_0x38c823){if(_0x38c823){return _0x38c823[_0x55d3('0x28')]({'UserId':_0xec964a[_0x55d3('0x4c')][_0x55d3('0x66')],'read1stAt':_[_0x55d3('0x6b')](_0x38c823['read1stAt'])?moment()['format'](_0x55d3('0x6c')):undefined});}return null;})[_0x55d3('0x15')](function(_0x4e2894){if(_0x4e2894){_0x511ad7[_0x55d3('0x6d')]=_0x4e2894[_0x55d3('0x69')]({'plain':!![]});interaction_log[_0x55d3('0x1e')]('[MAILMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0xec964a[_0x55d3('0x67')]['id'],_0xec964a['user'][_0x55d3('0x2c')],_0xec964a[_0x55d3('0x67')]['role'],_0x511ad7[_0x55d3('0x6d')]['id'],_0xec964a[_0x55d3('0x4c')]?JSON[_0x55d3('0x19')](_0xec964a['body']):_0x55d3('0x6e'));return respondWithRpcPromise('AcceptMessage','acceptMessage',_0x511ad7);}return null;})['then'](function(_0xcbf01a){var _0x47bf0d=_0x55d3('0x6f')+_0xcbf01a['message'][_0x55d3('0x70')];return db[_0x55d3('0x71')]['query'](_0x47bf0d,{'type':db[_0x55d3('0x72')]['QueryTypes'][_0x55d3('0x73')],'raw':!![]})[_0x55d3('0x15')](function(_0x17320b){return _0x17320b;});})['then'](function(_0x27525d){if(_0x27525d){_0x511ad7[_0x55d3('0x1d')]['contact']=_0x27525d[0x0];if(!_0xec964a[_0x55d3('0x4c')][_0x55d3('0x66')])return;return db[_0x55d3('0x74')][_0x55d3('0x4b')]({'where':{'id':_0xec964a[_0x55d3('0x4c')][_0x55d3('0x66')],'role':_0x55d3('0x68')},'attributes':['id',_0x55d3('0x2c'),_0x55d3('0x75'),'email',_0x55d3('0x76')],'raw':!![]});}return null;})[_0x55d3('0x15')](function(_0x162e46){if(!_0x162e46)return null;_0x511ad7[_0x55d3('0x1d')][_0x55d3('0x68')]=_0x162e46;return _0x511ad7;})[_0x55d3('0x15')](function(_0x3b70c2){if(_0x3b70c2){if(_0xec964a[_0x55d3('0x4c')]['manual']){_0x511ad7[_0x55d3('0x1d')][_0x55d3('0x77')]=util[_0x55d3('0x78')](_0x55d3('0x79'),_0xec964a[_0x55d3('0x67')][_0x55d3('0x2c')]);_0x511ad7[_0x55d3('0x1d')][_0x55d3('0x7a')]=_0x511ad7[_0x55d3('0x7a')];_0x511ad7[_0x55d3('0x1d')][_0x55d3('0x7b')]=_0x511ad7[_0x55d3('0x7a')];_0x511ad7[_0x55d3('0x1d')][_0x55d3('0x7c')]=_0x55d3('0x63');_0x511ad7[_0x55d3('0x1d')][_0x55d3('0x4c')]=htmlToText[_0x55d3('0x7d')](_0x511ad7[_0x55d3('0x1d')][_0x55d3('0x4c')]);return respondWithRpcPromise('EventManager',_0x55d3('0x7e'),{'event':'acceptmessage','message':_0x511ad7[_0x55d3('0x1d')]},client9002)[_0x55d3('0x15')](function(){return _0x511ad7;});}return _0x511ad7;}return null;})[_0x55d3('0x15')](respondWithResult(_0xf54520,null))[_0x55d3('0x1f')](handleError(_0xf54520,null));};exports[_0x55d3('0x7f')]=function(_0x25292e,_0x43b400){var _0x5b7cf5={'agent':{},'channel':_0x55d3('0x64')};if(_0x25292e[_0x55d3('0x4c')]['id']){delete _0x25292e[_0x55d3('0x4c')]['id'];}_0x25292e['body'][_0x55d3('0x66')]=_0x25292e[_0x55d3('0x4c')][_0x55d3('0x66')]||_0x25292e[_0x55d3('0x67')]['id'];_0x5b7cf5[_0x55d3('0x68')]['id']=_0x25292e[_0x55d3('0x4c')][_0x55d3('0x66')];return db[_0x55d3('0x2f')]['find']({'where':{'id':_0x25292e[_0x55d3('0x47')]['id'],'UserId':null}})[_0x55d3('0x15')](handleEntityNotFound(_0x43b400,null))['then'](function(_0x53b130){if(_0x53b130){_0x5b7cf5[_0x55d3('0x1d')]=_0x53b130[_0x55d3('0x69')]({'plain':!![]});return db[_0x55d3('0x6a')]['find']({'where':{'id':_0x53b130['MailInteractionId']}});}return null;})['then'](handleEntityNotFound(_0x43b400,null))[_0x55d3('0x15')](function(_0x3b40e2){if(_0x3b40e2){_0x5b7cf5[_0x55d3('0x6d')]=_0x3b40e2[_0x55d3('0x69')]({'plain':!![]});interaction_log['info'](_0x55d3('0x80'),_0x25292e[_0x55d3('0x67')]['id'],_0x25292e[_0x55d3('0x67')][_0x55d3('0x2c')],_0x25292e[_0x55d3('0x67')][_0x55d3('0x81')],_0x5b7cf5['interaction']['id'],_0x25292e['body']?JSON[_0x55d3('0x19')](_0x25292e[_0x55d3('0x4c')]):_0x55d3('0x6e'));return respondWithRpcPromise(_0x55d3('0x82'),_0x55d3('0x83'),_0x5b7cf5);}return null;})[_0x55d3('0x15')](function(_0x3be8b5){var _0x1965ad=_0x55d3('0x6f')+_0x3be8b5[_0x55d3('0x1d')][_0x55d3('0x70')];return db[_0x55d3('0x71')]['query'](_0x1965ad,{'type':db[_0x55d3('0x72')][_0x55d3('0x84')]['SELECT'],'raw':!![]})[_0x55d3('0x15')](function(_0x25e260){return _0x25e260;});})[_0x55d3('0x15')](function(_0x2df4bc){if(_0x2df4bc){_0x5b7cf5[_0x55d3('0x1d')]['contact']=_0x2df4bc[0x0];if(!_0x25292e[_0x55d3('0x4c')][_0x55d3('0x66')])return;return db[_0x55d3('0x74')][_0x55d3('0x4b')]({'where':{'id':_0x25292e[_0x55d3('0x4c')]['UserId'],'role':_0x55d3('0x68')},'attributes':['id',_0x55d3('0x2c'),_0x55d3('0x75'),_0x55d3('0x85'),'internal'],'raw':!![]});}return null;})[_0x55d3('0x15')](function(_0x136e14){if(!_0x136e14)return null;_0x5b7cf5[_0x55d3('0x1d')]['agent']=_0x136e14;return _0x5b7cf5;})[_0x55d3('0x15')](function(_0x345c0b){if(_0x345c0b){_0x345c0b[_0x55d3('0x1d')][_0x55d3('0x77')]=util['format'](_0x55d3('0x79'),_0x25292e[_0x55d3('0x67')][_0x55d3('0x2c')]);_0x345c0b['message']['channel']=_0x5b7cf5[_0x55d3('0x7a')];_0x345c0b[_0x55d3('0x1d')]['motionChannel']=_0x5b7cf5[_0x55d3('0x7a')];_0x345c0b[_0x55d3('0x1d')][_0x55d3('0x7c')]='reject';_0x345c0b[_0x55d3('0x1d')][_0x55d3('0x4c')]=htmlToText[_0x55d3('0x7d')](_0x5b7cf5[_0x55d3('0x1d')][_0x55d3('0x4c')]);respondWithRpcPromise(_0x55d3('0x7e'),'EventManager',{'event':_0x55d3('0x86'),'message':_0x345c0b[_0x55d3('0x1d')]},client9002);return _0x5b7cf5;}return null;})[_0x55d3('0x15')](respondWithResult(_0x43b400,null))['catch'](handleError(_0x43b400,null));};exports['download']=function(_0x5bd898,_0x47d1a8){var _0x9384be=moment()[_0x55d3('0x87')]()['toString']();var _0x24ba6d=path[_0x55d3('0x5c')](config[_0x55d3('0x5d')],'server',_0x55d3('0x88'),_0x55d3('0x89'));var _0xefe693=path[_0x55d3('0x5c')](config['root'],'server',_0x55d3('0x88'),_0x55d3('0x5b'));var _0xac53d=util['format'](_0x55d3('0x8a'),_0x9384be);return db[_0x55d3('0x2f')][_0x55d3('0x4b')]({'where':{'id':_0x5bd898[_0x55d3('0x47')]['id']},'attributes':['id',_0x55d3('0x4c'),_0x55d3('0x8b'),'to','cc','bcc','subject','createdAt'],'include':_0x5bd898[_0x55d3('0x37')][_0x55d3('0x5b')]?[{'model':db[_0x55d3('0x8c')],'as':'Attachments'}]:undefined})[_0x55d3('0x15')](handleEntityNotFound(_0x47d1a8,null))[_0x55d3('0x15')](function(_0x1e6337){if(_0x1e6337){var _0x4e947d=_0x1e6337;var _0x154e20={'from':_0x4e947d[_0x55d3('0x8b')],'to':_0x4e947d['to'],'subject':_0x4e947d[_0x55d3('0x8d')],'html':htmlEntities[_0x55d3('0x8e')](_0x4e947d[_0x55d3('0x4c')]),'headers':{'Date':moment(_0x4e947d[_0x55d3('0x8f')])[_0x55d3('0x78')]('ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ')},'attachments':[]};if(_0x1e6337['cc']){_0x154e20[_0x55d3('0x90')]['Cc']=_0x1e6337['cc'];}if(_0x1e6337[_0x55d3('0x91')]){_0x154e20['headers'][_0x55d3('0x92')]=_0x1e6337['bcc'];}return new BPromise(function(_0x14d575,_0x1cf61f){if(_0x1e6337[_0x55d3('0x93')]){for(var _0x3eaa05=0x0;_0x3eaa05<_0x1e6337['Attachments']['length'];_0x3eaa05++){var _0x1ceed=_0x1e6337[_0x55d3('0x93')][_0x3eaa05];var _0x582e28=path[_0x55d3('0x5c')](_0xefe693,_0x1ceed[_0x55d3('0x94')]);if(fs[_0x55d3('0x95')](_0x582e28)){_0x154e20['attachments']['push']({'name':_0x1ceed[_0x55d3('0x2c')],'contentType':_0x1ceed['type'],'data':fs[_0x55d3('0x96')](_0x582e28)});}}}emlformat[_0x55d3('0x97')](_0x154e20,function(_0x2d25f5,_0x36afb3){if(_0x2d25f5)return _0x1cf61f(_0x2d25f5);fs['writeFileSync'](path[_0x55d3('0x5c')](_0x24ba6d,_0xac53d),_0x36afb3);return _0x14d575(_0x36afb3);});});}})[_0x55d3('0x15')](function(_0x148c48){if(_0x148c48){return _0x47d1a8[_0x55d3('0x98')](path[_0x55d3('0x5c')](_0x24ba6d,_0xac53d),_0xac53d,function(_0x1bc9bc){if(!_0x1bc9bc)fs['unlinkSync'](path[_0x55d3('0x5c')](_0x24ba6d,_0xac53d));});}})[_0x55d3('0x1f')](handleError(_0x47d1a8,null));};
\ No newline at end of file
index 919aeb2..0183873 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb4ee=['hasOwnProperty','hook','exports','events','../../mysqldb','MailMessage','setMaxListeners','save','update','emit'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0xb4ee,0x189));var _0xeb4e=function(_0x1c2d01,_0x55590b){_0x1c2d01=_0x1c2d01-0x0;var _0x2fe07e=_0xb4ee[_0x1c2d01];return _0x2fe07e;};'use strict';var EventEmitter=require(_0xeb4e('0x0'));var MailMessage=require(_0xeb4e('0x1'))['db'][_0xeb4e('0x2')];var MailMessageEvents=new EventEmitter();MailMessageEvents[_0xeb4e('0x3')](0x0);var events={'afterCreate':_0xeb4e('0x4'),'afterUpdate':_0xeb4e('0x5'),'afterDestroy':'remove'};function emitEvent(_0x185952){return function(_0x1fe67a,_0x3fa375,_0xa6ee44){MailMessageEvents['emit'](_0x185952+':'+_0x1fe67a['id'],_0x1fe67a);MailMessageEvents[_0xeb4e('0x6')](_0x185952,_0x1fe67a);_0xa6ee44(null);};}for(var e in events){if(events[_0xeb4e('0x7')](e)){var event=events[e];MailMessage[_0xeb4e('0x8')](e,emitEvent(event));}}module[_0xeb4e('0x9')]=MailMessageEvents;
\ No newline at end of file
+var _0xfbfe=['setMaxListeners','save','update','remove','emit','events','../../mysqldb'];(function(_0x4f4b0f,_0x15eee1){var _0x42a825=function(_0x2b58fa){while(--_0x2b58fa){_0x4f4b0f['push'](_0x4f4b0f['shift']());}};_0x42a825(++_0x15eee1);}(_0xfbfe,0x171));var _0xefbf=function(_0x47e591,_0xe82d06){_0x47e591=_0x47e591-0x0;var _0x49df89=_0xfbfe[_0x47e591];return _0x49df89;};'use strict';var EventEmitter=require(_0xefbf('0x0'));var MailMessage=require(_0xefbf('0x1'))['db']['MailMessage'];var MailMessageEvents=new EventEmitter();MailMessageEvents[_0xefbf('0x2')](0x0);var events={'afterCreate':_0xefbf('0x3'),'afterUpdate':_0xefbf('0x4'),'afterDestroy':_0xefbf('0x5')};function emitEvent(_0x111fac){return function(_0x574d22,_0x67754f,_0x5e962d){MailMessageEvents[_0xefbf('0x6')](_0x111fac+':'+_0x574d22['id'],_0x574d22);MailMessageEvents[_0xefbf('0x6')](_0x111fac,_0x574d22);_0x5e962d(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];MailMessage['hook'](e,emitEvent(event));}}module['exports']=MailMessageEvents;
\ No newline at end of file
index 741cc45..4bc39e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf6a9=['catch','error','utf8mb4','utf8mb4_unicode_ci','../../config/logger','api','request-promise','html-to-text','rimraf','../../config/environment','./mailMessage.attributes','exports','define','mail_messages','messageId','fti_mail_messages','plainBody','subject','FULLTEXT','body','fromString','models','get','direction','toLowerCase','secret','isNil','UserId','MailInteraction','findOne','MailInteractionId','then','update','createdAt'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0xf6a9,0x158));var _0x9f6a=function(_0x2ae8bb,_0x422843){_0x2ae8bb=_0x2ae8bb-0x0;var _0x3a38a3=_0xf6a9[_0x2ae8bb];return _0x3a38a3;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x9f6a('0x0'))(_0x9f6a('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x9f6a('0x2'));var htmlToText=require(_0x9f6a('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x9f6a('0x4'));var config=require(_0x9f6a('0x5'));var attributes=require(_0x9f6a('0x6'));module[_0x9f6a('0x7')]=function(_0x365ebe,_0x39f8d5){return _0x365ebe[_0x9f6a('0x8')]('MailMessage',attributes,{'tableName':_0x9f6a('0x9'),'paranoid':![],'indexes':[{'name':_0x9f6a('0xa'),'fields':[_0x9f6a('0xa')]},{'name':_0x9f6a('0xb'),'fields':[_0x9f6a('0xc'),_0x9f6a('0xd')],'type':_0x9f6a('0xe')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x40c088,_0x371c0b,_0x48dad1){if(_0x40c088[_0x9f6a('0xf')]){_0x40c088[_0x9f6a('0xc')]=htmlToText[_0x9f6a('0x10')](_0x40c088[_0x9f6a('0xf')],{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'uppercaseHeadings':![],'noLinkBrackets':!![],'ignoreImage':!![]});}_0x48dad1(null,_0x371c0b);},'afterCreate':function(_0xf21867,_0x5b24bf,_0x5873c1){var _0x3a6795=_0x365ebe[_0x9f6a('0x11')];var _0x5b2e39=_0xf21867[_0x9f6a('0x12')]({'plain':!![]});if(_0x5b2e39[_0x9f6a('0x13')][_0x9f6a('0x14')]()==='in'||_0x5b2e39[_0x9f6a('0x13')]['toLowerCase']()==='out'&&!_0x5b2e39[_0x9f6a('0x15')]&&!_[_0x9f6a('0x16')](_0x5b2e39[_0x9f6a('0x17')])){_0x3a6795[_0x9f6a('0x18')][_0x9f6a('0x19')]({'where':{'id':_0x5b2e39[_0x9f6a('0x1a')]}})[_0x9f6a('0x1b')](function(_0x2b58f1){if(_0x2b58f1){_0x2b58f1[_0x9f6a('0x1c')]({'lastMsgAt':_0x5b2e39[_0x9f6a('0x1d')],'lastMsgDirection':_0x5b2e39[_0x9f6a('0x13')][_0x9f6a('0x14')]()});}})[_0x9f6a('0x1e')](function(_0x347225){console[_0x9f6a('0x1f')](_0x347225);});}_0x5873c1();}},'charset':_0x9f6a('0x20'),'collate':_0x9f6a('0x21')});};
\ No newline at end of file
+var _0xb627=['fromString','get','toLowerCase','direction','secret','UserId','MailInteraction','findOne','then','createdAt','error','utf8mb4_unicode_ci','lodash','../../config/logger','api','bluebird','request-promise','path','rimraf','./mailMessage.attributes','exports','define','MailMessage','mail_messages','messageId','fti_mail_messages','plainBody','subject','FULLTEXT','body'];(function(_0x223a7c,_0x11ebdc){var _0x22e78a=function(_0x1dce57){while(--_0x1dce57){_0x223a7c['push'](_0x223a7c['shift']());}};_0x22e78a(++_0x11ebdc);}(_0xb627,0x192));var _0x7b62=function(_0x3e08bf,_0x50a03f){_0x3e08bf=_0x3e08bf-0x0;var _0x170f36=_0xb627[_0x3e08bf];return _0x170f36;};'use strict';var _=require(_0x7b62('0x0'));var util=require('util');var logger=require(_0x7b62('0x1'))(_0x7b62('0x2'));var moment=require('moment');var BPromise=require(_0x7b62('0x3'));var rp=require(_0x7b62('0x4'));var htmlToText=require('html-to-text');var fs=require('fs');var path=require(_0x7b62('0x5'));var rimraf=require(_0x7b62('0x6'));var config=require('../../config/environment');var attributes=require(_0x7b62('0x7'));module[_0x7b62('0x8')]=function(_0x275b04,_0x3953b5){return _0x275b04[_0x7b62('0x9')](_0x7b62('0xa'),attributes,{'tableName':_0x7b62('0xb'),'paranoid':![],'indexes':[{'name':_0x7b62('0xc'),'fields':[_0x7b62('0xc')]},{'name':_0x7b62('0xd'),'fields':[_0x7b62('0xe'),_0x7b62('0xf')],'type':_0x7b62('0x10')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0xf75795,_0x4e8e93,_0x171937){if(_0xf75795[_0x7b62('0x11')]){_0xf75795[_0x7b62('0xe')]=htmlToText[_0x7b62('0x12')](_0xf75795[_0x7b62('0x11')],{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'uppercaseHeadings':![],'noLinkBrackets':!![],'ignoreImage':!![]});}_0x171937(null,_0x4e8e93);},'afterCreate':function(_0x1a2bc7,_0x4d35be,_0x3797f2){var _0x17697c=_0x275b04['models'];var _0x2eb8cf=_0x1a2bc7[_0x7b62('0x13')]({'plain':!![]});if(_0x2eb8cf['direction'][_0x7b62('0x14')]()==='in'||_0x2eb8cf[_0x7b62('0x15')]['toLowerCase']()==='out'&&!_0x2eb8cf[_0x7b62('0x16')]&&!_['isNil'](_0x2eb8cf[_0x7b62('0x17')])){_0x17697c[_0x7b62('0x18')][_0x7b62('0x19')]({'where':{'id':_0x2eb8cf['MailInteractionId']}})[_0x7b62('0x1a')](function(_0x299f0c){if(_0x299f0c){_0x299f0c['update']({'lastMsgAt':_0x2eb8cf[_0x7b62('0x1b')],'lastMsgDirection':_0x2eb8cf[_0x7b62('0x15')][_0x7b62('0x14')]()});}})['catch'](function(_0x5cff15){console[_0x7b62('0x1c')](_0x5cff15);});}_0x3797f2();}},'charset':'utf8mb4','collate':_0x7b62('0x1d')});};
\ No newline at end of file
index 7a6b204..81980e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa30a=['then','info','MailMessage,\x20%s,\x20%s','debug','MailMessage,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','catch','MailMessage','create','body','options','raw','CreateMailMessage','stringify','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','redis','defaults','socket.io-emitter','./mailMessage.socket','register'];(function(_0x5cab28,_0x307622){var _0xa3554d=function(_0x330139){while(--_0x330139){_0x5cab28['push'](_0x5cab28['shift']());}};_0xa3554d(++_0x307622);}(_0xa30a,0xd7));var _0xaa30=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xa30a[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0xaa30('0x0'));var util=require(_0xaa30('0x1'));var moment=require(_0xaa30('0x2'));var BPromise=require('bluebird');var rs=require(_0xaa30('0x3'));var fs=require('fs');var Redis=require(_0xaa30('0x4'));var db=require(_0xaa30('0x5'))['db'];var utils=require(_0xaa30('0x6'));var logger=require(_0xaa30('0x7'))(_0xaa30('0x8'));var config=require(_0xaa30('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xaa30('0xa')]['http']({'port':0x232a});config[_0xaa30('0xb')]=_[_0xaa30('0xc')](config[_0xaa30('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0xaa30('0xd'))(new Redis(config[_0xaa30('0xb')]));require(_0xaa30('0xe'))[_0xaa30('0xf')](socket);function respondWithRpcPromise(_0x14a6a6,_0x45419f,_0x56f686){return new BPromise(function(_0x5afbf5,_0x12a8ce){return client['request'](_0x14a6a6,_0x56f686)[_0xaa30('0x10')](function(_0x1a5681){logger[_0xaa30('0x11')](_0xaa30('0x12'),_0x45419f,'request\x20sent');logger[_0xaa30('0x13')](_0xaa30('0x14'),_0x45419f,_0xaa30('0x15'),JSON['stringify'](_0x1a5681));if(_0x1a5681[_0xaa30('0x16')]){if(_0x1a5681[_0xaa30('0x16')][_0xaa30('0x17')]===0x1f4){logger[_0xaa30('0x16')](_0xaa30('0x12'),_0x45419f,_0x1a5681[_0xaa30('0x16')][_0xaa30('0x18')]);return _0x12a8ce(_0x1a5681[_0xaa30('0x16')][_0xaa30('0x18')]);}logger[_0xaa30('0x16')]('MailMessage,\x20%s,\x20%s',_0x45419f,_0x1a5681[_0xaa30('0x16')]['message']);return _0x5afbf5(_0x1a5681['error'][_0xaa30('0x18')]);}else{logger[_0xaa30('0x11')](_0xaa30('0x12'),_0x45419f,'request\x20sent');_0x5afbf5(_0x1a5681['result']['message']);}})[_0xaa30('0x19')](function(_0x4acdfa){logger[_0xaa30('0x16')](_0xaa30('0x12'),_0x45419f,_0x4acdfa);_0x12a8ce(_0x4acdfa);});});}exports['CreateMailMessage']=function(_0x4e29f9){var _0x520abb=this;return new Promise(function(_0x3cbf92,_0x3e4f1d){return db[_0xaa30('0x1a')][_0xaa30('0x1b')](_0x4e29f9[_0xaa30('0x1c')],{'raw':_0x4e29f9['options']?_0x4e29f9[_0xaa30('0x1d')][_0xaa30('0x1e')]===undefined?!![]:![]:!![]})[_0xaa30('0x10')](function(_0x2d9e35){logger[_0xaa30('0x11')]('CreateMailMessage',_0x4e29f9);logger[_0xaa30('0x13')](_0xaa30('0x1f'),_0x4e29f9,JSON[_0xaa30('0x20')](_0x2d9e35));_0x3cbf92(_0x2d9e35);})[_0xaa30('0x19')](function(_0x57d1ca){logger[_0xaa30('0x16')](_0xaa30('0x1f'),_0x57d1ca[_0xaa30('0x18')],_0x4e29f9);_0x3e4f1d(_0x520abb[_0xaa30('0x16')](0x1f4,_0x57d1ca[_0xaa30('0x18')]));});});};
\ No newline at end of file
+var _0x7334=['jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./mailMessage.socket','register','then','info','MailMessage,\x20%s,\x20%s','request\x20sent','debug','MailMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','result','create','body','options','raw','CreateMailMessage','catch','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x5b40b4,_0x4a2ca8){var _0x49fd35=function(_0x13ac30){while(--_0x13ac30){_0x5b40b4['push'](_0x5b40b4['shift']());}};_0x49fd35(++_0x4a2ca8);}(_0x7334,0x184));var _0x4733=function(_0x1c951a,_0x227523){_0x1c951a=_0x1c951a-0x0;var _0x1ff0e0=_0x7334[_0x1c951a];return _0x1ff0e0;};'use strict';var _=require(_0x4733('0x0'));var util=require(_0x4733('0x1'));var moment=require(_0x4733('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x4733('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x4733('0x4'));var logger=require(_0x4733('0x5'))(_0x4733('0x6'));var config=require(_0x4733('0x7'));var jayson=require(_0x4733('0x8'));var client=jayson[_0x4733('0x9')][_0x4733('0xa')]({'port':0x232a});config[_0x4733('0xb')]=_[_0x4733('0xc')](config[_0x4733('0xb')],{'host':_0x4733('0xd'),'port':0x18eb});var socket=require(_0x4733('0xe'))(new Redis(config[_0x4733('0xb')]));require(_0x4733('0xf'))[_0x4733('0x10')](socket);function respondWithRpcPromise(_0x1bc511,_0x2bafad,_0x49032d){return new BPromise(function(_0x42b97f,_0x1e6fcf){return client['request'](_0x1bc511,_0x49032d)[_0x4733('0x11')](function(_0x5240a4){logger[_0x4733('0x12')](_0x4733('0x13'),_0x2bafad,_0x4733('0x14'));logger[_0x4733('0x15')](_0x4733('0x16'),_0x2bafad,_0x4733('0x14'),JSON[_0x4733('0x17')](_0x5240a4));if(_0x5240a4['error']){if(_0x5240a4[_0x4733('0x18')]['code']===0x1f4){logger[_0x4733('0x18')](_0x4733('0x13'),_0x2bafad,_0x5240a4[_0x4733('0x18')][_0x4733('0x19')]);return _0x1e6fcf(_0x5240a4[_0x4733('0x18')][_0x4733('0x19')]);}logger[_0x4733('0x18')](_0x4733('0x13'),_0x2bafad,_0x5240a4[_0x4733('0x18')]['message']);return _0x42b97f(_0x5240a4[_0x4733('0x18')][_0x4733('0x19')]);}else{logger['info'](_0x4733('0x13'),_0x2bafad,_0x4733('0x14'));_0x42b97f(_0x5240a4[_0x4733('0x1a')][_0x4733('0x19')]);}})['catch'](function(_0x517fbc){logger[_0x4733('0x18')](_0x4733('0x13'),_0x2bafad,_0x517fbc);_0x1e6fcf(_0x517fbc);});});}exports['CreateMailMessage']=function(_0x32f166){var _0x1943bc=this;return new Promise(function(_0x15339c,_0x7a4e0){return db['MailMessage'][_0x4733('0x1b')](_0x32f166[_0x4733('0x1c')],{'raw':_0x32f166['options']?_0x32f166[_0x4733('0x1d')][_0x4733('0x1e')]===undefined?!![]:![]:!![]})['then'](function(_0x15a291){logger[_0x4733('0x12')](_0x4733('0x1f'),_0x32f166);logger[_0x4733('0x15')](_0x4733('0x1f'),_0x32f166,JSON[_0x4733('0x17')](_0x15a291));_0x15339c(_0x15a291);})[_0x4733('0x20')](function(_0x2bb78f){logger['error'](_0x4733('0x1f'),_0x2bb78f[_0x4733('0x19')],_0x32f166);_0x7a4e0(_0x1943bc[_0x4733('0x18')](0x1f4,_0x2bb78f[_0x4733('0x19')]));});});};
\ No newline at end of file
index 12e3ce8..e9888a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xccea=['register','mailMessage:','./mailMessage.events','remove','update','emit','removeListener'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0xccea,0x198));var _0xacce=function(_0x4b2863,_0x494899){_0x4b2863=_0x4b2863-0x0;var _0x567d67=_0xccea[_0x4b2863];return _0x567d67;};'use strict';var MailMessageEvents=require(_0xacce('0x0'));var events=['save',_0xacce('0x1'),_0xacce('0x2')];function createListener(_0x3d0b8e,_0x2819f1){return function(_0xc17a17){_0x2819f1[_0xacce('0x3')](_0x3d0b8e,_0xc17a17);};}function removeListener(_0x31172d,_0x15f11b){return function(){MailMessageEvents[_0xacce('0x4')](_0x31172d,_0x15f11b);};}exports[_0xacce('0x5')]=function(_0x3c5dd6){for(var _0x283add=0x0,_0x3cc305=events['length'];_0x283add<_0x3cc305;_0x283add++){var _0x2c426a=events[_0x283add];var _0x201f59=createListener(_0xacce('0x6')+_0x2c426a,_0x3c5dd6);MailMessageEvents['on'](_0x2c426a,_0x201f59);}};
\ No newline at end of file
+var _0x162d=['save','remove','emit','removeListener','register','length','mailMessage:'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0x162d,0xa8));var _0xd162=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0x162d[_0x502c7d];return _0x30b7ed;};'use strict';var MailMessageEvents=require('./mailMessage.events');var events=[_0xd162('0x0'),_0xd162('0x1'),'update'];function createListener(_0x4b7eba,_0x1a1350){return function(_0x236d9d){_0x1a1350[_0xd162('0x2')](_0x4b7eba,_0x236d9d);};}function removeListener(_0x1f6865,_0x142c28){return function(){MailMessageEvents[_0xd162('0x3')](_0x1f6865,_0x142c28);};}exports[_0xd162('0x4')]=function(_0x1b06ba){for(var _0x7afa1a=0x0,_0x442cf0=events[_0xd162('0x5')];_0x7afa1a<_0x442cf0;_0x7afa1a++){var _0x5489ae=events[_0x7afa1a];var _0x2fe19e=createListener(_0xd162('0x6')+_0x5489ae,_0x1b06ba);MailMessageEvents['on'](_0x5489ae,_0x2fe19e);}};
\ No newline at end of file
index 7b77b0f..d2dcd7c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8bf4=['/:id','update','delete','destroy','removeTeams','removeAgents','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./mailQueue.controller','get','isAuthenticated','index','/describe','describe','/:id/members','getMembers','/:id/teams','getTeams','post','create','addTeams','/:id/users','addAgents','put'];(function(_0x4fc9e6,_0xc51915){var _0x551d28=function(_0x1a603b){while(--_0x1a603b){_0x4fc9e6['push'](_0x4fc9e6['shift']());}};_0x551d28(++_0xc51915);}(_0x8bf4,0xc1));var _0x48bf=function(_0x30e804,_0x8d453b){_0x30e804=_0x30e804-0x0;var _0x529374=_0x8bf4[_0x30e804];return _0x529374;};'use strict';var multer=require(_0x48bf('0x0'));var util=require('util');var path=require(_0x48bf('0x1'));var timeout=require(_0x48bf('0x2'));var express=require(_0x48bf('0x3'));var router=express[_0x48bf('0x4')]();var fs_extra=require(_0x48bf('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x48bf('0x6'));var config=require(_0x48bf('0x7'));var controller=require(_0x48bf('0x8'));router[_0x48bf('0x9')]('/',auth[_0x48bf('0xa')](),controller[_0x48bf('0xb')]);router['get'](_0x48bf('0xc'),auth[_0x48bf('0xa')](),controller[_0x48bf('0xd')]);router[_0x48bf('0x9')]('/:id',auth[_0x48bf('0xa')](),controller['show']);router[_0x48bf('0x9')](_0x48bf('0xe'),auth[_0x48bf('0xa')](),controller[_0x48bf('0xf')]);router['get'](_0x48bf('0x10'),auth['isAuthenticated'](),controller[_0x48bf('0x11')]);router[_0x48bf('0x9')]('/:id/users',auth['isAuthenticated'](),controller['getAgents']);router[_0x48bf('0x12')]('/',auth[_0x48bf('0xa')](),controller[_0x48bf('0x13')]);router[_0x48bf('0x12')](_0x48bf('0x10'),auth[_0x48bf('0xa')](),controller[_0x48bf('0x14')]);router[_0x48bf('0x12')](_0x48bf('0x15'),auth[_0x48bf('0xa')](),controller[_0x48bf('0x16')]);router[_0x48bf('0x17')](_0x48bf('0x18'),auth[_0x48bf('0xa')](),controller[_0x48bf('0x19')]);router[_0x48bf('0x1a')]('/:id',auth[_0x48bf('0xa')](),controller[_0x48bf('0x1b')]);router[_0x48bf('0x1a')]('/:id/teams',auth['isAuthenticated'](),controller[_0x48bf('0x1c')]);router[_0x48bf('0x1a')](_0x48bf('0x15'),auth[_0x48bf('0xa')](),controller[_0x48bf('0x1d')]);module[_0x48bf('0x1e')]=router;
\ No newline at end of file
+var _0x8994=['removeTeams','removeAgents','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailQueue.controller','isAuthenticated','index','get','/describe','describe','/:id','show','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','post','create','addTeams','addAgents','put','delete','destroy'];(function(_0x22d37e,_0x53ccda){var _0xbb438f=function(_0x598e75){while(--_0x598e75){_0x22d37e['push'](_0x22d37e['shift']());}};_0xbb438f(++_0x53ccda);}(_0x8994,0x1c3));var _0x4899=function(_0x1928c9,_0x13a6d1){_0x1928c9=_0x1928c9-0x0;var _0x51b5fb=_0x8994[_0x1928c9];return _0x51b5fb;};'use strict';var multer=require(_0x4899('0x0'));var util=require('util');var path=require(_0x4899('0x1'));var timeout=require(_0x4899('0x2'));var express=require(_0x4899('0x3'));var router=express[_0x4899('0x4')]();var fs_extra=require(_0x4899('0x5'));var auth=require(_0x4899('0x6'));var interaction=require(_0x4899('0x7'));var config=require(_0x4899('0x8'));var controller=require(_0x4899('0x9'));router['get']('/',auth[_0x4899('0xa')](),controller[_0x4899('0xb')]);router[_0x4899('0xc')](_0x4899('0xd'),auth['isAuthenticated'](),controller[_0x4899('0xe')]);router[_0x4899('0xc')](_0x4899('0xf'),auth['isAuthenticated'](),controller[_0x4899('0x10')]);router[_0x4899('0xc')](_0x4899('0x11'),auth['isAuthenticated'](),controller[_0x4899('0x12')]);router[_0x4899('0xc')](_0x4899('0x13'),auth[_0x4899('0xa')](),controller[_0x4899('0x14')]);router[_0x4899('0xc')](_0x4899('0x15'),auth[_0x4899('0xa')](),controller['getAgents']);router[_0x4899('0x16')]('/',auth[_0x4899('0xa')](),controller[_0x4899('0x17')]);router['post'](_0x4899('0x13'),auth['isAuthenticated'](),controller[_0x4899('0x18')]);router[_0x4899('0x16')](_0x4899('0x15'),auth[_0x4899('0xa')](),controller[_0x4899('0x19')]);router[_0x4899('0x1a')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0x4899('0x1b')](_0x4899('0xf'),auth['isAuthenticated'](),controller[_0x4899('0x1c')]);router['delete'](_0x4899('0x13'),auth[_0x4899('0xa')](),controller[_0x4899('0x1d')]);router[_0x4899('0x1b')]('/:id/users',auth['isAuthenticated'](),controller[_0x4899('0x1e')]);module[_0x4899('0x1f')]=router;
\ No newline at end of file
index d0efd0e..3109f7a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb58a=['sequelize','exports','STRING','name','INTEGER','ENUM','rrmemory','roundrobin'];(function(_0x1faf28,_0x1a5b11){var _0x2b1fa8=function(_0x2ed943){while(--_0x2ed943){_0x1faf28['push'](_0x1faf28['shift']());}};_0x2b1fa8(++_0x1a5b11);}(_0xb58a,0x108));var _0xab58=function(_0x11a962,_0x3cc338){_0x11a962=_0x11a962-0x0;var _0x55d423=_0xb58a[_0x11a962];return _0x55d423;};'use strict';var Sequelize=require(_0xab58('0x0'));module[_0xab58('0x1')]={'name':{'type':Sequelize[_0xab58('0x2')],'unique':_0xab58('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xab58('0x2')]},'timeout':{'type':Sequelize[_0xab58('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xab58('0x5')](_0xab58('0x6'),'beepall',_0xab58('0x7'))}};
\ No newline at end of file
+var _0x7950=['INTEGER','rrmemory','sequelize','exports','name','STRING'];(function(_0x1c1f56,_0x5d8499){var _0x793125=function(_0x7e6866){while(--_0x7e6866){_0x1c1f56['push'](_0x1c1f56['shift']());}};_0x793125(++_0x5d8499);}(_0x7950,0x122));var _0x0795=function(_0xd55283,_0x1150e7){_0xd55283=_0xd55283-0x0;var _0x168c55=_0x7950[_0xd55283];return _0x168c55;};'use strict';var Sequelize=require(_0x0795('0x0'));module[_0x0795('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x0795('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x0795('0x3')]},'timeout':{'type':Sequelize[_0x0795('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0x0795('0x5'),'beepall','roundrobin')}};
\ No newline at end of file
index 0bba1da..e963344 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd86a=['VIRTUAL','options','includeAll','include','findAll','rows','show','params','length','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','destroy','describe','getMembers','findOne','UserMailQueue','hasOwnProperty','MailQueueId','User','agent','mailPause','createdAt','%s/%s','updatedAt','getTeams','Team','order','addTeams','ids','Agents','online','voicePause','interface','sequelize','transaction','findOrCreate','forEach','emit','field','tq.TeamId','from','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','MailQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','QueryTypes','SELECT','every','TeamId','includes','union','compact','value','removeTeams','isEmpty','removeAgents','addAgents','omit','userMailQueue:remove','getAgents','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./mailQueue.socket','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','reject','update','then','get','MailQueues','UserProfileResource','error','stack','name','send','index','map','MailQueue','rawAttributes','fieldName','type','key','model','keys','query','intersection','fields','attributes','nolimit','sort','where','filters','pick','filter','merge'];(function(_0x3ae9d6,_0x293b86){var _0x3e16da=function(_0x1888a4){while(--_0x1888a4){_0x3ae9d6['push'](_0x3ae9d6['shift']());}};_0x3e16da(++_0x293b86);}(_0xd86a,0xd1));var _0xad86=function(_0x212bf5,_0x165cbd){_0x212bf5=_0x212bf5-0x0;var _0xfcad21=_0xd86a[_0x212bf5];return _0xfcad21;};'use strict';var emlformat=require(_0xad86('0x0'));var rimraf=require(_0xad86('0x1'));var zipdir=require(_0xad86('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xad86('0x3'));var moment=require(_0xad86('0x4'));var BPromise=require(_0xad86('0x5'));var Mustache=require(_0xad86('0x6'));var util=require(_0xad86('0x7'));var path=require('path');var sox=require(_0xad86('0x8'));var csv=require(_0xad86('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xad86('0xa'));var _=require(_0xad86('0xb'));var squel=require(_0xad86('0xc'));var crypto=require(_0xad86('0xd'));var jsforce=require(_0xad86('0xe'));var deskjs=require(_0xad86('0xf'));var toCsv=require(_0xad86('0x9'));var querystring=require(_0xad86('0x10'));var Papa=require(_0xad86('0x11'));var Redis=require(_0xad86('0x12'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xad86('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xad86('0x14'))(_0xad86('0x15'));var utils=require(_0xad86('0x16'));var config=require(_0xad86('0x17'));var licenseUtil=require(_0xad86('0x18'));var db=require(_0xad86('0x19'))['db'];config[_0xad86('0x1a')]=_[_0xad86('0x1b')](config[_0xad86('0x1a')],{'host':_0xad86('0x1c'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xad86('0x1a')]));require(_0xad86('0x1d'))['register'](socket);function respondWithStatusCode(_0x3b0c1b,_0x290639){_0x290639=_0x290639||0xcc;return function(_0x3501eb){if(_0x3501eb){return _0x3b0c1b[_0xad86('0x1e')](_0x290639);}return _0x3b0c1b[_0xad86('0x1f')](_0x290639)['end']();};}function respondWithResult(_0xde2d8d,_0x2d3ab8){_0x2d3ab8=_0x2d3ab8||0xc8;return function(_0x3d88d6){if(_0x3d88d6){return _0xde2d8d[_0xad86('0x1f')](_0x2d3ab8)[_0xad86('0x20')](_0x3d88d6);}};}function respondWithFilteredResult(_0x1cfb36,_0x2eb962){return function(_0x2e0d8a){if(_0x2e0d8a){var _0x3893cb=typeof _0x2eb962[_0xad86('0x21')]===_0xad86('0x22')&&typeof _0x2eb962['limit']===_0xad86('0x22');var _0x48a0d3=_0x2e0d8a[_0xad86('0x23')];var _0x1efac0=_0x3893cb?0x0:_0x2eb962[_0xad86('0x21')];var _0x4a834c=_0x3893cb?_0x2e0d8a[_0xad86('0x23')]:_0x2eb962['offset']+_0x2eb962[_0xad86('0x24')];var _0x4a0b31;if(_0x4a834c>=_0x48a0d3){_0x4a834c=_0x48a0d3;_0x4a0b31=0xc8;}else{_0x4a0b31=0xce;}_0x1cfb36[_0xad86('0x1f')](_0x4a0b31);return _0x1cfb36[_0xad86('0x25')](_0xad86('0x26'),_0x1efac0+'-'+_0x4a834c+'/'+_0x48a0d3)[_0xad86('0x20')](_0x2e0d8a);}return null;};}function patchUpdates(_0x253de5){return function(_0x231baf){try{jsonpatch['apply'](_0x231baf,_0x253de5,!![]);}catch(_0x272f8d){return BPromise[_0xad86('0x27')](_0x272f8d);}return _0x231baf['save']();};}function saveUpdates(_0x25880c,_0x4c036d){return function(_0x5441ab){if(_0x5441ab){return _0x5441ab[_0xad86('0x28')](_0x25880c)[_0xad86('0x29')](function(_0x2a707e){return _0x2a707e;});}return null;};}function removeEntity(_0x412618,_0x515ec2){return function(_0x24fc99){if(_0x24fc99){return _0x24fc99['destroy']()[_0xad86('0x29')](function(){var _0x508017=_0x24fc99[_0xad86('0x2a')]({'plain':!![]});var _0x1f0790=_0xad86('0x2b');return db[_0xad86('0x2c')]['destroy']({'where':{'type':_0x1f0790,'resourceId':_0x508017['id']}})[_0xad86('0x29')](function(){return _0x24fc99;});})['then'](function(){_0x412618['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x36c552,_0xa9a234){return function(_0x3dd773){if(!_0x3dd773){_0x36c552[_0xad86('0x1e')](0x194);}return _0x3dd773;};}function handleError(_0x224ec1,_0x5db3b2){_0x5db3b2=_0x5db3b2||0x1f4;return function(_0x4ed0d3){logger[_0xad86('0x2d')](_0x4ed0d3[_0xad86('0x2e')]);if(_0x4ed0d3['name']){delete _0x4ed0d3[_0xad86('0x2f')];}_0x224ec1[_0xad86('0x1f')](_0x5db3b2)[_0xad86('0x30')](_0x4ed0d3);};}exports[_0xad86('0x31')]=function(_0x5d5546,_0xd09395){var _0x3d24d8={},_0x59c94a={},_0x18348a={'count':0x0,'rows':[]};var _0x14993=_[_0xad86('0x32')](db[_0xad86('0x33')][_0xad86('0x34')],function(_0x59a275){return{'name':_0x59a275[_0xad86('0x35')],'type':_0x59a275[_0xad86('0x36')][_0xad86('0x37')]};});_0x59c94a[_0xad86('0x38')]=_['map'](_0x14993,_0xad86('0x2f'));_0x59c94a['query']=_[_0xad86('0x39')](_0x5d5546[_0xad86('0x3a')]);_0x59c94a['filters']=_['intersection'](_0x59c94a[_0xad86('0x38')],_0x59c94a['query']);_0x3d24d8['attributes']=_[_0xad86('0x3b')](_0x59c94a[_0xad86('0x38')],qs[_0xad86('0x3c')](_0x5d5546['query'][_0xad86('0x3c')]));_0x3d24d8[_0xad86('0x3d')]=_0x3d24d8[_0xad86('0x3d')]['length']?_0x3d24d8[_0xad86('0x3d')]:_0x59c94a['model'];if(!_0x5d5546[_0xad86('0x3a')]['hasOwnProperty'](_0xad86('0x3e'))){_0x3d24d8[_0xad86('0x24')]=qs[_0xad86('0x24')](_0x5d5546[_0xad86('0x3a')][_0xad86('0x24')]);_0x3d24d8['offset']=qs['offset'](_0x5d5546[_0xad86('0x3a')][_0xad86('0x21')]);}_0x3d24d8['order']=qs[_0xad86('0x3f')](_0x5d5546['query'][_0xad86('0x3f')]);_0x3d24d8[_0xad86('0x40')]=qs[_0xad86('0x41')](_[_0xad86('0x42')](_0x5d5546[_0xad86('0x3a')],_0x59c94a[_0xad86('0x41')]),_0x14993);if(_0x5d5546[_0xad86('0x3a')][_0xad86('0x43')]){_0x3d24d8[_0xad86('0x40')]=_[_0xad86('0x44')](_0x3d24d8['where'],{'$or':_[_0xad86('0x32')](_0x14993,function(_0x1205cd){if(_0x1205cd[_0xad86('0x36')]!==_0xad86('0x45')){var _0x2049a3={};_0x2049a3[_0x1205cd[_0xad86('0x2f')]]={'$like':'%'+_0x5d5546[_0xad86('0x3a')][_0xad86('0x43')]+'%'};return _0x2049a3;}})});}_0x3d24d8=_[_0xad86('0x44')]({},_0x3d24d8,_0x5d5546[_0xad86('0x46')]);var _0x43c1b3={'where':_0x3d24d8['where']};return db[_0xad86('0x33')]['count'](_0x43c1b3)['then'](function(_0x3c56c9){_0x18348a['count']=_0x3c56c9;if(_0x5d5546[_0xad86('0x3a')][_0xad86('0x47')]){_0x3d24d8[_0xad86('0x48')]=[{'all':!![]}];}return db[_0xad86('0x33')][_0xad86('0x49')](_0x3d24d8);})[_0xad86('0x29')](function(_0x240ccb){_0x18348a[_0xad86('0x4a')]=_0x240ccb;return _0x18348a;})[_0xad86('0x29')](respondWithFilteredResult(_0xd09395,_0x3d24d8))['catch'](handleError(_0xd09395,null));};exports[_0xad86('0x4b')]=function(_0x2f2814,_0x2e227b){var _0x1f1675={'raw':!![],'where':{'id':_0x2f2814[_0xad86('0x4c')]['id']}},_0x34b9df={};_0x34b9df[_0xad86('0x38')]=_[_0xad86('0x39')](db[_0xad86('0x33')][_0xad86('0x34')]);_0x34b9df[_0xad86('0x3a')]=_[_0xad86('0x39')](_0x2f2814[_0xad86('0x3a')]);_0x34b9df['filters']=_['intersection'](_0x34b9df[_0xad86('0x38')],_0x34b9df['query']);_0x1f1675[_0xad86('0x3d')]=_[_0xad86('0x3b')](_0x34b9df[_0xad86('0x38')],qs['fields'](_0x2f2814['query'][_0xad86('0x3c')]));_0x1f1675['attributes']=_0x1f1675[_0xad86('0x3d')][_0xad86('0x4d')]?_0x1f1675['attributes']:_0x34b9df[_0xad86('0x38')];if(_0x2f2814[_0xad86('0x3a')][_0xad86('0x47')]){_0x1f1675[_0xad86('0x48')]=[{'all':!![]}];}_0x1f1675=_['merge']({},_0x1f1675,_0x2f2814[_0xad86('0x46')]);return db[_0xad86('0x33')][_0xad86('0x4e')](_0x1f1675)[_0xad86('0x29')](handleEntityNotFound(_0x2e227b,null))['then'](respondWithResult(_0x2e227b,null))[_0xad86('0x4f')](handleError(_0x2e227b,null));};exports[_0xad86('0x50')]=function(_0x2ce237,_0x189072){return db[_0xad86('0x33')]['create'](_0x2ce237[_0xad86('0x51')],{})[_0xad86('0x29')](function(_0x556a98){var _0x6543e9=_0x2ce237[_0xad86('0x52')][_0xad86('0x2a')]({'plain':!![]});if(!_0x6543e9)throw new Error(_0xad86('0x53'));if(_0x6543e9[_0xad86('0x54')]===_0xad86('0x52')){var _0x4255f8=_0x556a98['get']({'plain':!![]});var _0x291e34=_0xad86('0x2b');return db['UserProfileSection'][_0xad86('0x4e')]({'where':{'name':_0x291e34,'userProfileId':_0x6543e9[_0xad86('0x55')]},'raw':!![]})['then'](function(_0x55d23a){if(_0x55d23a&&_0x55d23a[_0xad86('0x56')]===0x0){return db['UserProfileResource']['create']({'name':_0x4255f8['name'],'resourceId':_0x4255f8['id'],'type':_0x55d23a[_0xad86('0x2f')],'sectionId':_0x55d23a['id']},{})['then'](function(){return _0x556a98;});}else{return _0x556a98;}})[_0xad86('0x4f')](function(_0x491b28){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x491b28);throw _0x491b28;});}return _0x556a98;})[_0xad86('0x29')](respondWithResult(_0x189072,0xc9))[_0xad86('0x4f')](handleError(_0x189072,null));};exports[_0xad86('0x28')]=function(_0x567c92,_0x27bc47){if(_0x567c92[_0xad86('0x51')]['id']){delete _0x567c92[_0xad86('0x51')]['id'];}return db[_0xad86('0x33')][_0xad86('0x4e')]({'where':{'id':_0x567c92['params']['id']}})['then'](handleEntityNotFound(_0x27bc47,null))[_0xad86('0x29')](saveUpdates(_0x567c92[_0xad86('0x51')],null))[_0xad86('0x29')](respondWithResult(_0x27bc47,null))[_0xad86('0x4f')](handleError(_0x27bc47,null));};exports[_0xad86('0x57')]=function(_0x1d9094,_0x2ff78b){return db[_0xad86('0x33')][_0xad86('0x4e')]({'where':{'id':_0x1d9094[_0xad86('0x4c')]['id']}})[_0xad86('0x29')](handleEntityNotFound(_0x2ff78b,null))[_0xad86('0x29')](removeEntity(_0x2ff78b,null))[_0xad86('0x4f')](handleError(_0x2ff78b,null));};exports[_0xad86('0x58')]=function(_0x353caf,_0x595930){return db[_0xad86('0x33')]['describe']()[_0xad86('0x29')](respondWithResult(_0x595930,null))[_0xad86('0x4f')](handleError(_0x595930,null));};exports[_0xad86('0x59')]=function(_0x4d9082,_0x5b4d94,_0x4c132c){var _0x226a35={'raw':!![],'where':{}},_0x2d8b00={},_0x3fe73c;return db['MailQueue'][_0xad86('0x5a')]({'where':{'id':_0x4d9082[_0xad86('0x4c')]['id']}})[_0xad86('0x29')](handleEntityNotFound(_0x5b4d94,null))[_0xad86('0x29')](function(_0x2f2b73){if(_0x2f2b73){_0x3fe73c=_0x2f2b73['get']({'plain':!![]});_0x2d8b00[_0xad86('0x38')]=_[_0xad86('0x39')](db[_0xad86('0x5b')][_0xad86('0x34')]);_0x2d8b00['query']=_[_0xad86('0x39')](_0x4d9082[_0xad86('0x3a')]);_0x2d8b00[_0xad86('0x41')]=_[_0xad86('0x3b')](_0x2d8b00[_0xad86('0x38')],_0x2d8b00['query']);_0x226a35['attributes']=_[_0xad86('0x3b')](_0x2d8b00[_0xad86('0x38')],qs['fields'](_0x4d9082[_0xad86('0x3a')]['fields']));_0x226a35[_0xad86('0x3d')]=_0x226a35[_0xad86('0x3d')]['length']?_0x226a35[_0xad86('0x3d')]:_0x2d8b00[_0xad86('0x38')];if(!_0x4d9082[_0xad86('0x3a')][_0xad86('0x5c')]('nolimit')){_0x226a35[_0xad86('0x24')]=qs['limit'](_0x4d9082[_0xad86('0x3a')][_0xad86('0x24')]);_0x226a35[_0xad86('0x21')]=qs['offset'](_0x4d9082[_0xad86('0x3a')][_0xad86('0x21')]);}_0x226a35['order']=qs[_0xad86('0x3f')](_0x4d9082['query'][_0xad86('0x3f')]);_0x226a35[_0xad86('0x40')]=qs[_0xad86('0x41')](_[_0xad86('0x42')](_0x4d9082[_0xad86('0x3a')],_0x2d8b00['filters']));_0x226a35[_0xad86('0x40')][_0xad86('0x5d')]=_0x2f2b73['id'];if(_0x4d9082['query']['filter']){_0x226a35[_0xad86('0x40')]=_[_0xad86('0x44')](_0x226a35[_0xad86('0x40')],{'$or':_[_0xad86('0x32')](_0x226a35[_0xad86('0x3d')],function(_0x52b743){var _0x28044f={};_0x28044f[_0x52b743]={'$like':'%'+_0x4d9082['query'][_0xad86('0x43')]+'%'};return _0x28044f;})});}_0x226a35=_[_0xad86('0x44')]({},_0x226a35,_0x4d9082[_0xad86('0x46')]);return db[_0xad86('0x5b')]['findAll'](_0x226a35);}})['then'](function(_0xb3df32){if(_0xb3df32){return db[_0xad86('0x5e')]['findAndCountAll']({'where':{'id':_[_0xad86('0x32')](_0xb3df32,'UserId'),'role':_0xad86('0x5f')},'attributes':['id',_0xad86('0x2f'),_0xad86('0x60'),'updatedAt',_0xad86('0x61')]});}})[_0xad86('0x29')](function(_0x5ef34f){if(_0x5ef34f){return{'count':_0x5ef34f[_0xad86('0x23')],'rows':_[_0xad86('0x32')](_0x5ef34f[_0xad86('0x4a')],function(_0x114eb1){return{'membername':_0x114eb1['name'],'UserId':_0x114eb1['id'],'queue_name':_0x3fe73c[_0xad86('0x2f')],'MailQueueId':_0x3fe73c['id'],'interface':util['format'](_0xad86('0x62'),'SIP',_0x114eb1[_0xad86('0x2f')]),'penalty':0x0,'paused':_0x114eb1[_0xad86('0x60')],'createdAt':_0x114eb1[_0xad86('0x61')],'updatedAt':_0x114eb1[_0xad86('0x63')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x5b4d94,_0x226a35))[_0xad86('0x4f')](handleError(_0x5b4d94,null));};exports[_0xad86('0x64')]=function(_0x32ba46,_0x2d4a33,_0x4fd7bc){var _0x195a3e={};var _0x247825={};var _0x425984;var _0xeaa387;return db['MailQueue'][_0xad86('0x5a')]({'where':{'id':_0x32ba46[_0xad86('0x4c')]['id']}})[_0xad86('0x29')](handleEntityNotFound(_0x2d4a33,null))[_0xad86('0x29')](function(_0x247a4d){if(_0x247a4d){_0x425984=_0x247a4d;_0x247825['model']=_['keys'](db[_0xad86('0x65')][_0xad86('0x34')]);_0x247825[_0xad86('0x3a')]=_[_0xad86('0x39')](_0x32ba46[_0xad86('0x3a')]);_0x247825['filters']=_['intersection'](_0x247825['model'],_0x247825['query']);_0x195a3e['attributes']=_[_0xad86('0x3b')](_0x247825[_0xad86('0x38')],qs['fields'](_0x32ba46[_0xad86('0x3a')][_0xad86('0x3c')]));_0x195a3e[_0xad86('0x3d')]=_0x195a3e[_0xad86('0x3d')][_0xad86('0x4d')]?_0x195a3e['attributes']:_0x247825[_0xad86('0x38')];_0x195a3e[_0xad86('0x66')]=qs[_0xad86('0x3f')](_0x32ba46['query'][_0xad86('0x3f')]);_0x195a3e[_0xad86('0x40')]=qs[_0xad86('0x41')](_[_0xad86('0x42')](_0x32ba46[_0xad86('0x3a')],_0x247825[_0xad86('0x41')]));if(_0x32ba46[_0xad86('0x3a')][_0xad86('0x43')]){_0x195a3e['where']=_['merge'](_0x195a3e[_0xad86('0x40')],{'$or':_[_0xad86('0x32')](_0x195a3e[_0xad86('0x3d')],function(_0x3ffc72){var _0x26d7eb={};_0x26d7eb[_0x3ffc72]={'$like':'%'+_0x32ba46[_0xad86('0x3a')]['filter']+'%'};return _0x26d7eb;})});}_0x195a3e=_['merge']({},_0x195a3e,_0x32ba46[_0xad86('0x46')]);return _0x425984[_0xad86('0x64')](_0x195a3e);}})[_0xad86('0x29')](function(_0x3a4116){if(_0x3a4116){_0xeaa387=_0x3a4116['length'];if(!_0x32ba46[_0xad86('0x3a')][_0xad86('0x5c')](_0xad86('0x3e'))){_0x195a3e[_0xad86('0x24')]=qs['limit'](_0x32ba46[_0xad86('0x3a')]['limit']);_0x195a3e[_0xad86('0x21')]=qs['offset'](_0x32ba46[_0xad86('0x3a')][_0xad86('0x21')]);}return _0x425984[_0xad86('0x64')](_0x195a3e);}})[_0xad86('0x29')](function(_0x12b49a){if(_0x12b49a){return _0x12b49a?{'count':_0xeaa387,'rows':_0x12b49a}:null;}})[_0xad86('0x29')](respondWithResult(_0x2d4a33,null))[_0xad86('0x4f')](handleError(_0x2d4a33,null));};exports[_0xad86('0x67')]=function(_0x99881a,_0x2384df,_0x46abd3){var _0x29a49c=_0x99881a['body'][_0xad86('0x68')];return db['Team'][_0xad86('0x49')]({'where':{'id':_0x29a49c},'attributes':['id'],'include':[{'model':db[_0xad86('0x5e')],'as':_0xad86('0x69'),'attributes':['id',_0xad86('0x2f'),_0xad86('0x6a'),_0xad86('0x6b'),_0xad86('0x6c')],'raw':!![]}]})[_0xad86('0x29')](function(_0x4fa9b9){if(_0x4fa9b9){var _0x543eaf=_['flatMap'](_0x4fa9b9,function(_0x59764d){var _0xf78109=_0x59764d[_0xad86('0x2a')]({'plain':!![]});return _0xf78109['Agents'];});return db['MailQueue'][_0xad86('0x4e')]({'where':{'id':_0x99881a[_0xad86('0x4c')]['id']}})[_0xad86('0x29')](function(_0xfa513f){return db[_0xad86('0x6d')][_0xad86('0x6e')](function(_0x14845f){return _0xfa513f[_0xad86('0x67')](_0x29a49c,{'transaction':_0x14845f})[_0xad86('0x29')](function(){return BPromise['each'](_0x543eaf,function(_0x403820){return db['UserMailQueue'][_0xad86('0x6f')]({'where':{'UserId':_0x403820['id'],'MailQueueId':_0x99881a[_0xad86('0x4c')]['id']},'transaction':_0x14845f});});})[_0xad86('0x29')](function(){_0x543eaf[_0xad86('0x70')](function(_0x18caa4){socket[_0xad86('0x71')]('userMailQueue:save',{'UserId':_0x18caa4['id'],'MailQueueId':_0xfa513f['id']});});});});});}})[_0xad86('0x29')](respondWithStatusCode(_0x2384df,null))['catch'](handleError(_0x2384df,null));};exports['removeTeams']=function(_0x52dfaa,_0x501e86,_0x4788c7){return db[_0xad86('0x65')][_0xad86('0x49')]({'where':{'id':_0x52dfaa[_0xad86('0x3a')][_0xad86('0x68')]},'attributes':['id'],'include':[{'model':db[_0xad86('0x5e')],'as':_0xad86('0x69'),'attributes':['id'],'raw':!![]}]})[_0xad86('0x29')](handleEntityNotFound(_0x501e86,null))[_0xad86('0x29')](function(_0x5494d1){var _0x32116e=_['map'](_0x5494d1,'id');var _0x49eaa5=[];var _0x37163e=[];var _0x3620c2=squel['select']();_0x3620c2[_0xad86('0x72')](_0xad86('0x73'))[_0xad86('0x74')]('team_has_mail_queues','tq')[_0xad86('0x75')](_0xad86('0x76'),'ut',_0xad86('0x77'))['where'](_0xad86('0x78'),_0x52dfaa[_0xad86('0x4c')]['id']);for(var _0x510703=0x0;_0x510703<_0x5494d1[_0xad86('0x4d')];_0x510703+=0x1){let _0x42f49a=_0x5494d1[_0x510703];for(var _0x905fa4=0x0;_0x905fa4<_0x42f49a[_0xad86('0x69')][_0xad86('0x4d')];_0x905fa4+=0x1){let _0x2eac3d=_0x42f49a['Agents'][_0x905fa4];var _0x3c1668=_0x3620c2[_0xad86('0x79')]();_0x3c1668[_0xad86('0x40')](_0xad86('0x7a'),_0x2eac3d['id']);_0x37163e[_0xad86('0x7b')](db[_0xad86('0x6d')]['query'](_0x3c1668['toString'](),{'type':db['sequelize'][_0xad86('0x7c')][_0xad86('0x7d')]})[_0xad86('0x29')](function(_0x48752e){if(_0x48752e[_0xad86('0x4d')]===0x1){return _0x2eac3d['id'];}else{var _0x4110d4=_[_0xad86('0x7e')](_[_0xad86('0x32')](_0x48752e,_0xad86('0x7f')),function(_0x522af4){return _[_0xad86('0x80')](_0x32116e,_0x522af4);});if(_0x4110d4){return _0x2eac3d['id'];}}}));}}return BPromise['all'](_0x37163e)['then'](function(_0x32fd8d){_0x49eaa5=_(_0x49eaa5)[_0xad86('0x81')](_0x32fd8d)[_0xad86('0x82')]()[_0xad86('0x83')]();return db[_0xad86('0x33')]['find']({'where':{'id':_0x52dfaa['params']['id']}})[_0xad86('0x29')](function(_0x4f2285){return db['sequelize'][_0xad86('0x6e')](function(_0x5d9379){return _0x4f2285[_0xad86('0x84')](_0x52dfaa['query'][_0xad86('0x68')],{'transaction':_0x5d9379})['then'](function(){if(!_[_0xad86('0x85')](_0x49eaa5)){return _0x4f2285[_0xad86('0x86')](_0x49eaa5,{'transaction':_0x5d9379});}})['then'](function(){_0x49eaa5[_0xad86('0x70')](function(_0x15afb5){socket[_0xad86('0x71')]('userMailQueue:remove',{'UserId':_0x15afb5,'MailQueueId':_0x4f2285['id']});});});});});});})[_0xad86('0x29')](respondWithStatusCode(_0x501e86,null))[_0xad86('0x4f')](handleError(_0x501e86,null));};exports[_0xad86('0x87')]=function(_0x591727,_0x87ec41,_0x1a82fe){return db[_0xad86('0x33')][_0xad86('0x4e')]({'where':{'id':_0x591727['params']['id']}})[_0xad86('0x29')](handleEntityNotFound(_0x87ec41,null))['then'](function(_0x274b9b){if(_0x274b9b){return _0x274b9b[_0xad86('0x87')](_0x591727[_0xad86('0x51')][_0xad86('0x68')],_[_0xad86('0x88')](_0x591727[_0xad86('0x51')],[_0xad86('0x68'),'id'])||{})['spread'](function(_0x1b0d28){for(var _0x599dfb=0x0;_0x599dfb<_0x591727[_0xad86('0x51')][_0xad86('0x68')]['length'];_0x599dfb+=0x1){socket[_0xad86('0x71')]('userMailQueue:save',{'UserId':Number(_0x591727[_0xad86('0x51')][_0xad86('0x68')][_0x599dfb]),'MailQueueId':Number(_0x591727[_0xad86('0x4c')]['id'])});}return _0x1b0d28;});}})[_0xad86('0x29')](respondWithResult(_0x87ec41,null))[_0xad86('0x4f')](handleError(_0x87ec41,null));};exports[_0xad86('0x86')]=function(_0xd29778,_0x48713b,_0x511bd2){return db[_0xad86('0x33')][_0xad86('0x4e')]({'where':{'id':_0xd29778[_0xad86('0x4c')]['id']}})[_0xad86('0x29')](handleEntityNotFound(_0x48713b,null))['then'](function(_0x1fb57a){if(_0x1fb57a){return _0x1fb57a['removeAgents'](_0xd29778['query'][_0xad86('0x68')])[_0xad86('0x29')](function(){if(_['isArray'](_0xd29778['query'][_0xad86('0x68')])){for(var _0x40617f=0x0;_0x40617f<_0xd29778[_0xad86('0x3a')][_0xad86('0x68')][_0xad86('0x4d')];_0x40617f+=0x1){socket[_0xad86('0x71')](_0xad86('0x89'),{'UserId':Number(_0xd29778['query'][_0xad86('0x68')][_0x40617f]),'MailQueueId':Number(_0xd29778['params']['id'])});}}else{socket['emit'](_0xad86('0x89'),{'UserId':Number(_0xd29778['query']['ids']),'MailQueueId':Number(_0xd29778[_0xad86('0x4c')]['id'])});}});}})[_0xad86('0x29')](respondWithStatusCode(_0x48713b,null))['catch'](handleError(_0x48713b,null));};exports[_0xad86('0x8a')]=function(_0x55796e,_0x361bfd,_0x455170){var _0x337ed7={};var _0x2864c1={};var _0x2af870;var _0x19c98a;return db[_0xad86('0x33')]['findOne']({'where':{'id':_0x55796e['params']['id']}})['then'](handleEntityNotFound(_0x361bfd,null))[_0xad86('0x29')](function(_0x299034){if(_0x299034){_0x2af870=_0x299034;_0x2864c1['model']=_[_0xad86('0x39')](db[_0xad86('0x5e')][_0xad86('0x34')]);_0x2864c1[_0xad86('0x3a')]=_[_0xad86('0x39')](_0x55796e[_0xad86('0x3a')]);_0x2864c1[_0xad86('0x41')]=_['intersection'](_0x2864c1[_0xad86('0x38')],_0x2864c1['query']);_0x337ed7[_0xad86('0x3d')]=_[_0xad86('0x3b')](_0x2864c1[_0xad86('0x38')],qs[_0xad86('0x3c')](_0x55796e[_0xad86('0x3a')]['fields']));_0x337ed7['attributes']=_0x337ed7[_0xad86('0x3d')][_0xad86('0x4d')]?_0x337ed7[_0xad86('0x3d')]:_0x2864c1[_0xad86('0x38')];_0x337ed7['order']=qs[_0xad86('0x3f')](_0x55796e[_0xad86('0x3a')][_0xad86('0x3f')]);_0x337ed7[_0xad86('0x40')]=qs[_0xad86('0x41')](_[_0xad86('0x42')](_0x55796e[_0xad86('0x3a')],_0x2864c1[_0xad86('0x41')]));if(_0x55796e[_0xad86('0x3a')][_0xad86('0x43')]){_0x337ed7['where']=_['merge'](_0x337ed7['where'],{'$or':_[_0xad86('0x32')](_0x337ed7[_0xad86('0x3d')],function(_0x5a210a){var _0x1c5cca={};_0x1c5cca[_0x5a210a]={'$like':'%'+_0x55796e[_0xad86('0x3a')][_0xad86('0x43')]+'%'};return _0x1c5cca;})});}_0x337ed7=_[_0xad86('0x44')]({},_0x337ed7,_0x55796e[_0xad86('0x46')]);return _0x2af870[_0xad86('0x8a')](_0x337ed7);}})[_0xad86('0x29')](function(_0x2067d2){if(_0x2067d2){_0x19c98a=_0x2067d2[_0xad86('0x4d')];if(!_0x55796e[_0xad86('0x3a')][_0xad86('0x5c')]('nolimit')){_0x337ed7[_0xad86('0x24')]=qs[_0xad86('0x24')](_0x55796e[_0xad86('0x3a')][_0xad86('0x24')]);_0x337ed7['offset']=qs[_0xad86('0x21')](_0x55796e[_0xad86('0x3a')][_0xad86('0x21')]);}return _0x2af870['getAgents'](_0x337ed7);}})[_0xad86('0x29')](function(_0x5dd8b0){if(_0x5dd8b0){return _0x5dd8b0?{'count':_0x19c98a,'rows':_0x5dd8b0}:null;}})[_0xad86('0x29')](respondWithResult(_0x361bfd,null))[_0xad86('0x4f')](handleError(_0x361bfd,null));};
\ No newline at end of file
+var _0x54af=['userMailQueue:save','ids','select','field','tq.TeamId','from','join','ut.TeamId\x20=\x20tq.TeamId','MailQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','sequelize','toString','QueryTypes','SELECT','TeamId','includes','all','union','compact','value','transaction','removeTeams','isEmpty','userMailQueue:remove','addAgents','omit','removeAgents','isArray','getAgents','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','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','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./mailQueue.socket','register','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','reject','save','update','then','destroy','get','MailQueues','UserProfileResource','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','filter','VIRTUAL','merge','options','MailQueue','include','findAll','rows','catch','show','params','includeAll','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','find','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','findOne','UserMailQueue','pick','MailQueueId','User','findAndCountAll','UserId','agent','mailPause','updatedAt','createdAt','format','%s/%s','SIP','getTeams','Team','addTeams','Agents','online','voicePause','interface','flatMap','each','findOrCreate','forEach','emit'];(function(_0x224ee6,_0x564642){var _0x33662d=function(_0x24b877){while(--_0x24b877){_0x224ee6['push'](_0x224ee6['shift']());}};_0x33662d(++_0x564642);}(_0x54af,0xb9));var _0xf54a=function(_0x1a7b27,_0x1b2d30){_0x1a7b27=_0x1a7b27-0x0;var _0x24442e=_0x54af[_0x1a7b27];return _0x24442e;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xf54a('0x0'));var jsonpatch=require(_0xf54a('0x1'));var rp=require(_0xf54a('0x2'));var moment=require(_0xf54a('0x3'));var BPromise=require(_0xf54a('0x4'));var Mustache=require(_0xf54a('0x5'));var util=require(_0xf54a('0x6'));var path=require(_0xf54a('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xf54a('0x8'));var fs=require('fs');var fs_extra=require(_0xf54a('0x9'));var _=require(_0xf54a('0xa'));var squel=require(_0xf54a('0xb'));var crypto=require(_0xf54a('0xc'));var jsforce=require(_0xf54a('0xd'));var deskjs=require(_0xf54a('0xe'));var toCsv=require('to-csv');var querystring=require(_0xf54a('0xf'));var Papa=require(_0xf54a('0x10'));var Redis=require(_0xf54a('0x11'));var authService=require(_0xf54a('0x12'));var qs=require(_0xf54a('0x13'));var as=require(_0xf54a('0x14'));var hardwareService=require(_0xf54a('0x15'));var logger=require(_0xf54a('0x16'))(_0xf54a('0x17'));var utils=require(_0xf54a('0x18'));var config=require(_0xf54a('0x19'));var licenseUtil=require(_0xf54a('0x1a'));var db=require(_0xf54a('0x1b'))['db'];config[_0xf54a('0x1c')]=_[_0xf54a('0x1d')](config['redis'],{'host':_0xf54a('0x1e'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xf54a('0x1c')]));require(_0xf54a('0x1f'))[_0xf54a('0x20')](socket);function respondWithStatusCode(_0x2d676d,_0x1b7402){_0x1b7402=_0x1b7402||0xcc;return function(_0x1eecde){if(_0x1eecde){return _0x2d676d[_0xf54a('0x21')](_0x1b7402);}return _0x2d676d[_0xf54a('0x22')](_0x1b7402)[_0xf54a('0x23')]();};}function respondWithResult(_0x40d8dc,_0xf8f27c){_0xf8f27c=_0xf8f27c||0xc8;return function(_0x539e8c){if(_0x539e8c){return _0x40d8dc[_0xf54a('0x22')](_0xf8f27c)[_0xf54a('0x24')](_0x539e8c);}};}function respondWithFilteredResult(_0x187165,_0x58e97a){return function(_0x5e544b){if(_0x5e544b){var _0x383bf8=typeof _0x58e97a[_0xf54a('0x25')]==='undefined'&&typeof _0x58e97a[_0xf54a('0x26')]===_0xf54a('0x27');var _0x51f4ba=_0x5e544b[_0xf54a('0x28')];var _0x1aae2b=_0x383bf8?0x0:_0x58e97a[_0xf54a('0x25')];var _0x1c20f0=_0x383bf8?_0x5e544b[_0xf54a('0x28')]:_0x58e97a[_0xf54a('0x25')]+_0x58e97a[_0xf54a('0x26')];var _0x5c29fb;if(_0x1c20f0>=_0x51f4ba){_0x1c20f0=_0x51f4ba;_0x5c29fb=0xc8;}else{_0x5c29fb=0xce;}_0x187165['status'](_0x5c29fb);return _0x187165[_0xf54a('0x29')](_0xf54a('0x2a'),_0x1aae2b+'-'+_0x1c20f0+'/'+_0x51f4ba)[_0xf54a('0x24')](_0x5e544b);}return null;};}function patchUpdates(_0x2811c0){return function(_0x3b23e4){try{jsonpatch['apply'](_0x3b23e4,_0x2811c0,!![]);}catch(_0x39fa9f){return BPromise[_0xf54a('0x2b')](_0x39fa9f);}return _0x3b23e4[_0xf54a('0x2c')]();};}function saveUpdates(_0xa1b8a2,_0x383216){return function(_0x68c55e){if(_0x68c55e){return _0x68c55e[_0xf54a('0x2d')](_0xa1b8a2)[_0xf54a('0x2e')](function(_0x8725d5){return _0x8725d5;});}return null;};}function removeEntity(_0x142950,_0x399dbe){return function(_0x464510){if(_0x464510){return _0x464510[_0xf54a('0x2f')]()['then'](function(){var _0x59c3fb=_0x464510[_0xf54a('0x30')]({'plain':!![]});var _0x40a71e=_0xf54a('0x31');return db[_0xf54a('0x32')][_0xf54a('0x2f')]({'where':{'type':_0x40a71e,'resourceId':_0x59c3fb['id']}})[_0xf54a('0x2e')](function(){return _0x464510;});})[_0xf54a('0x2e')](function(){_0x142950[_0xf54a('0x22')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5bb00f,_0x1b8192){return function(_0x469378){if(!_0x469378){_0x5bb00f['sendStatus'](0x194);}return _0x469378;};}function handleError(_0x24c24f,_0x537414){_0x537414=_0x537414||0x1f4;return function(_0x2019f9){logger['error'](_0x2019f9[_0xf54a('0x33')]);if(_0x2019f9[_0xf54a('0x34')]){delete _0x2019f9[_0xf54a('0x34')];}_0x24c24f[_0xf54a('0x22')](_0x537414)[_0xf54a('0x35')](_0x2019f9);};}exports[_0xf54a('0x36')]=function(_0x109b74,_0x5a678d){var _0x44639e={},_0x11a7c3={},_0xcb0073={'count':0x0,'rows':[]};var _0x3e1372=_[_0xf54a('0x37')](db['MailQueue'][_0xf54a('0x38')],function(_0x433d93){return{'name':_0x433d93[_0xf54a('0x39')],'type':_0x433d93[_0xf54a('0x3a')][_0xf54a('0x3b')]};});_0x11a7c3[_0xf54a('0x3c')]=_[_0xf54a('0x37')](_0x3e1372,_0xf54a('0x34'));_0x11a7c3['query']=_[_0xf54a('0x3d')](_0x109b74[_0xf54a('0x3e')]);_0x11a7c3['filters']=_[_0xf54a('0x3f')](_0x11a7c3[_0xf54a('0x3c')],_0x11a7c3[_0xf54a('0x3e')]);_0x44639e[_0xf54a('0x40')]=_[_0xf54a('0x3f')](_0x11a7c3['model'],qs[_0xf54a('0x41')](_0x109b74[_0xf54a('0x3e')][_0xf54a('0x41')]));_0x44639e[_0xf54a('0x40')]=_0x44639e[_0xf54a('0x40')][_0xf54a('0x42')]?_0x44639e[_0xf54a('0x40')]:_0x11a7c3[_0xf54a('0x3c')];if(!_0x109b74[_0xf54a('0x3e')][_0xf54a('0x43')](_0xf54a('0x44'))){_0x44639e[_0xf54a('0x26')]=qs[_0xf54a('0x26')](_0x109b74[_0xf54a('0x3e')][_0xf54a('0x26')]);_0x44639e['offset']=qs['offset'](_0x109b74[_0xf54a('0x3e')][_0xf54a('0x25')]);}_0x44639e[_0xf54a('0x45')]=qs[_0xf54a('0x46')](_0x109b74['query'][_0xf54a('0x46')]);_0x44639e[_0xf54a('0x47')]=qs[_0xf54a('0x48')](_['pick'](_0x109b74[_0xf54a('0x3e')],_0x11a7c3['filters']),_0x3e1372);if(_0x109b74[_0xf54a('0x3e')][_0xf54a('0x49')]){_0x44639e['where']=_['merge'](_0x44639e[_0xf54a('0x47')],{'$or':_[_0xf54a('0x37')](_0x3e1372,function(_0x1e266d){if(_0x1e266d[_0xf54a('0x3a')]!==_0xf54a('0x4a')){var _0x30c423={};_0x30c423[_0x1e266d[_0xf54a('0x34')]]={'$like':'%'+_0x109b74[_0xf54a('0x3e')][_0xf54a('0x49')]+'%'};return _0x30c423;}})});}_0x44639e=_[_0xf54a('0x4b')]({},_0x44639e,_0x109b74[_0xf54a('0x4c')]);var _0x30727f={'where':_0x44639e['where']};return db[_0xf54a('0x4d')]['count'](_0x30727f)['then'](function(_0xbe1445){_0xcb0073['count']=_0xbe1445;if(_0x109b74[_0xf54a('0x3e')]['includeAll']){_0x44639e[_0xf54a('0x4e')]=[{'all':!![]}];}return db[_0xf54a('0x4d')][_0xf54a('0x4f')](_0x44639e);})[_0xf54a('0x2e')](function(_0x270bcd){_0xcb0073[_0xf54a('0x50')]=_0x270bcd;return _0xcb0073;})['then'](respondWithFilteredResult(_0x5a678d,_0x44639e))[_0xf54a('0x51')](handleError(_0x5a678d,null));};exports[_0xf54a('0x52')]=function(_0x2c03a1,_0xbeb045){var _0x171947={'raw':!![],'where':{'id':_0x2c03a1[_0xf54a('0x53')]['id']}},_0x7a1fc2={};_0x7a1fc2[_0xf54a('0x3c')]=_[_0xf54a('0x3d')](db[_0xf54a('0x4d')][_0xf54a('0x38')]);_0x7a1fc2[_0xf54a('0x3e')]=_[_0xf54a('0x3d')](_0x2c03a1[_0xf54a('0x3e')]);_0x7a1fc2[_0xf54a('0x48')]=_[_0xf54a('0x3f')](_0x7a1fc2['model'],_0x7a1fc2[_0xf54a('0x3e')]);_0x171947[_0xf54a('0x40')]=_[_0xf54a('0x3f')](_0x7a1fc2[_0xf54a('0x3c')],qs['fields'](_0x2c03a1['query'][_0xf54a('0x41')]));_0x171947['attributes']=_0x171947[_0xf54a('0x40')][_0xf54a('0x42')]?_0x171947[_0xf54a('0x40')]:_0x7a1fc2[_0xf54a('0x3c')];if(_0x2c03a1[_0xf54a('0x3e')][_0xf54a('0x54')]){_0x171947[_0xf54a('0x4e')]=[{'all':!![]}];}_0x171947=_[_0xf54a('0x4b')]({},_0x171947,_0x2c03a1[_0xf54a('0x4c')]);return db['MailQueue']['find'](_0x171947)[_0xf54a('0x2e')](handleEntityNotFound(_0xbeb045,null))[_0xf54a('0x2e')](respondWithResult(_0xbeb045,null))[_0xf54a('0x51')](handleError(_0xbeb045,null));};exports[_0xf54a('0x55')]=function(_0x52096e,_0x15081f){return db[_0xf54a('0x4d')][_0xf54a('0x55')](_0x52096e[_0xf54a('0x56')],{})[_0xf54a('0x2e')](function(_0x12d3f5){var _0x171012=_0x52096e[_0xf54a('0x57')][_0xf54a('0x30')]({'plain':!![]});if(!_0x171012)throw new Error(_0xf54a('0x58'));if(_0x171012['role']===_0xf54a('0x57')){var _0x5885eb=_0x12d3f5[_0xf54a('0x30')]({'plain':!![]});var _0x560f8f=_0xf54a('0x31');return db[_0xf54a('0x59')][_0xf54a('0x5a')]({'where':{'name':_0x560f8f,'userProfileId':_0x171012[_0xf54a('0x5b')]},'raw':!![]})[_0xf54a('0x2e')](function(_0x4f52a3){if(_0x4f52a3&&_0x4f52a3[_0xf54a('0x5c')]===0x0){return db['UserProfileResource'][_0xf54a('0x55')]({'name':_0x5885eb[_0xf54a('0x34')],'resourceId':_0x5885eb['id'],'type':_0x4f52a3[_0xf54a('0x34')],'sectionId':_0x4f52a3['id']},{})['then'](function(){return _0x12d3f5;});}else{return _0x12d3f5;}})[_0xf54a('0x51')](function(_0x3e45a8){logger[_0xf54a('0x5d')](_0xf54a('0x5e'),_0x3e45a8);throw _0x3e45a8;});}return _0x12d3f5;})[_0xf54a('0x2e')](respondWithResult(_0x15081f,0xc9))['catch'](handleError(_0x15081f,null));};exports[_0xf54a('0x2d')]=function(_0xd20f5b,_0x11b3a7){if(_0xd20f5b[_0xf54a('0x56')]['id']){delete _0xd20f5b[_0xf54a('0x56')]['id'];}return db[_0xf54a('0x4d')]['find']({'where':{'id':_0xd20f5b[_0xf54a('0x53')]['id']}})[_0xf54a('0x2e')](handleEntityNotFound(_0x11b3a7,null))[_0xf54a('0x2e')](saveUpdates(_0xd20f5b[_0xf54a('0x56')],null))[_0xf54a('0x2e')](respondWithResult(_0x11b3a7,null))[_0xf54a('0x51')](handleError(_0x11b3a7,null));};exports[_0xf54a('0x2f')]=function(_0x4bade3,_0x1dd131){return db[_0xf54a('0x4d')]['find']({'where':{'id':_0x4bade3[_0xf54a('0x53')]['id']}})[_0xf54a('0x2e')](handleEntityNotFound(_0x1dd131,null))[_0xf54a('0x2e')](removeEntity(_0x1dd131,null))[_0xf54a('0x51')](handleError(_0x1dd131,null));};exports[_0xf54a('0x5f')]=function(_0x215601,_0x48c450){return db[_0xf54a('0x4d')]['describe']()[_0xf54a('0x2e')](respondWithResult(_0x48c450,null))[_0xf54a('0x51')](handleError(_0x48c450,null));};exports[_0xf54a('0x60')]=function(_0x491f97,_0x378cad,_0x36d43e){var _0x337ba6={'raw':!![],'where':{}},_0x299186={},_0x4229cc;return db[_0xf54a('0x4d')][_0xf54a('0x61')]({'where':{'id':_0x491f97[_0xf54a('0x53')]['id']}})[_0xf54a('0x2e')](handleEntityNotFound(_0x378cad,null))[_0xf54a('0x2e')](function(_0x287d02){if(_0x287d02){_0x4229cc=_0x287d02['get']({'plain':!![]});_0x299186['model']=_[_0xf54a('0x3d')](db[_0xf54a('0x62')]['rawAttributes']);_0x299186[_0xf54a('0x3e')]=_[_0xf54a('0x3d')](_0x491f97[_0xf54a('0x3e')]);_0x299186['filters']=_[_0xf54a('0x3f')](_0x299186[_0xf54a('0x3c')],_0x299186[_0xf54a('0x3e')]);_0x337ba6['attributes']=_[_0xf54a('0x3f')](_0x299186[_0xf54a('0x3c')],qs[_0xf54a('0x41')](_0x491f97['query']['fields']));_0x337ba6[_0xf54a('0x40')]=_0x337ba6[_0xf54a('0x40')][_0xf54a('0x42')]?_0x337ba6['attributes']:_0x299186[_0xf54a('0x3c')];if(!_0x491f97[_0xf54a('0x3e')][_0xf54a('0x43')](_0xf54a('0x44'))){_0x337ba6[_0xf54a('0x26')]=qs[_0xf54a('0x26')](_0x491f97[_0xf54a('0x3e')][_0xf54a('0x26')]);_0x337ba6[_0xf54a('0x25')]=qs[_0xf54a('0x25')](_0x491f97[_0xf54a('0x3e')][_0xf54a('0x25')]);}_0x337ba6[_0xf54a('0x45')]=qs['sort'](_0x491f97[_0xf54a('0x3e')]['sort']);_0x337ba6['where']=qs[_0xf54a('0x48')](_[_0xf54a('0x63')](_0x491f97[_0xf54a('0x3e')],_0x299186[_0xf54a('0x48')]));_0x337ba6['where'][_0xf54a('0x64')]=_0x287d02['id'];if(_0x491f97[_0xf54a('0x3e')]['filter']){_0x337ba6[_0xf54a('0x47')]=_[_0xf54a('0x4b')](_0x337ba6['where'],{'$or':_['map'](_0x337ba6[_0xf54a('0x40')],function(_0x441c11){var _0x41dab8={};_0x41dab8[_0x441c11]={'$like':'%'+_0x491f97[_0xf54a('0x3e')]['filter']+'%'};return _0x41dab8;})});}_0x337ba6=_[_0xf54a('0x4b')]({},_0x337ba6,_0x491f97['options']);return db[_0xf54a('0x62')][_0xf54a('0x4f')](_0x337ba6);}})['then'](function(_0x53c50f){if(_0x53c50f){return db[_0xf54a('0x65')][_0xf54a('0x66')]({'where':{'id':_['map'](_0x53c50f,_0xf54a('0x67')),'role':_0xf54a('0x68')},'attributes':['id',_0xf54a('0x34'),_0xf54a('0x69'),_0xf54a('0x6a'),_0xf54a('0x6b')]});}})[_0xf54a('0x2e')](function(_0x3ff71b){if(_0x3ff71b){return{'count':_0x3ff71b[_0xf54a('0x28')],'rows':_[_0xf54a('0x37')](_0x3ff71b['rows'],function(_0x506c99){return{'membername':_0x506c99[_0xf54a('0x34')],'UserId':_0x506c99['id'],'queue_name':_0x4229cc[_0xf54a('0x34')],'MailQueueId':_0x4229cc['id'],'interface':util[_0xf54a('0x6c')](_0xf54a('0x6d'),_0xf54a('0x6e'),_0x506c99[_0xf54a('0x34')]),'penalty':0x0,'paused':_0x506c99[_0xf54a('0x69')],'createdAt':_0x506c99[_0xf54a('0x6b')],'updatedAt':_0x506c99[_0xf54a('0x6a')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xf54a('0x2e')](respondWithFilteredResult(_0x378cad,_0x337ba6))[_0xf54a('0x51')](handleError(_0x378cad,null));};exports[_0xf54a('0x6f')]=function(_0x5e97a9,_0x41a4ab,_0x596f82){var _0x8adc14={};var _0x35823d={};var _0x44c038;var _0x30a7ec;return db[_0xf54a('0x4d')]['findOne']({'where':{'id':_0x5e97a9[_0xf54a('0x53')]['id']}})[_0xf54a('0x2e')](handleEntityNotFound(_0x41a4ab,null))['then'](function(_0x5b30ea){if(_0x5b30ea){_0x44c038=_0x5b30ea;_0x35823d[_0xf54a('0x3c')]=_[_0xf54a('0x3d')](db[_0xf54a('0x70')][_0xf54a('0x38')]);_0x35823d[_0xf54a('0x3e')]=_[_0xf54a('0x3d')](_0x5e97a9['query']);_0x35823d[_0xf54a('0x48')]=_[_0xf54a('0x3f')](_0x35823d[_0xf54a('0x3c')],_0x35823d[_0xf54a('0x3e')]);_0x8adc14['attributes']=_[_0xf54a('0x3f')](_0x35823d['model'],qs[_0xf54a('0x41')](_0x5e97a9[_0xf54a('0x3e')][_0xf54a('0x41')]));_0x8adc14[_0xf54a('0x40')]=_0x8adc14[_0xf54a('0x40')][_0xf54a('0x42')]?_0x8adc14[_0xf54a('0x40')]:_0x35823d[_0xf54a('0x3c')];_0x8adc14[_0xf54a('0x45')]=qs[_0xf54a('0x46')](_0x5e97a9['query'][_0xf54a('0x46')]);_0x8adc14[_0xf54a('0x47')]=qs[_0xf54a('0x48')](_[_0xf54a('0x63')](_0x5e97a9[_0xf54a('0x3e')],_0x35823d['filters']));if(_0x5e97a9[_0xf54a('0x3e')]['filter']){_0x8adc14[_0xf54a('0x47')]=_['merge'](_0x8adc14[_0xf54a('0x47')],{'$or':_[_0xf54a('0x37')](_0x8adc14[_0xf54a('0x40')],function(_0x13702d){var _0x3a976c={};_0x3a976c[_0x13702d]={'$like':'%'+_0x5e97a9[_0xf54a('0x3e')][_0xf54a('0x49')]+'%'};return _0x3a976c;})});}_0x8adc14=_[_0xf54a('0x4b')]({},_0x8adc14,_0x5e97a9['options']);return _0x44c038[_0xf54a('0x6f')](_0x8adc14);}})[_0xf54a('0x2e')](function(_0x5f1409){if(_0x5f1409){_0x30a7ec=_0x5f1409[_0xf54a('0x42')];if(!_0x5e97a9[_0xf54a('0x3e')][_0xf54a('0x43')](_0xf54a('0x44'))){_0x8adc14[_0xf54a('0x26')]=qs[_0xf54a('0x26')](_0x5e97a9[_0xf54a('0x3e')]['limit']);_0x8adc14[_0xf54a('0x25')]=qs['offset'](_0x5e97a9['query'][_0xf54a('0x25')]);}return _0x44c038['getTeams'](_0x8adc14);}})[_0xf54a('0x2e')](function(_0x27fca4){if(_0x27fca4){return _0x27fca4?{'count':_0x30a7ec,'rows':_0x27fca4}:null;}})['then'](respondWithResult(_0x41a4ab,null))[_0xf54a('0x51')](handleError(_0x41a4ab,null));};exports[_0xf54a('0x71')]=function(_0xd8d9c8,_0x106b85,_0x2779df){var _0x3743ab=_0xd8d9c8['body']['ids'];return db[_0xf54a('0x70')][_0xf54a('0x4f')]({'where':{'id':_0x3743ab},'attributes':['id'],'include':[{'model':db[_0xf54a('0x65')],'as':_0xf54a('0x72'),'attributes':['id','name',_0xf54a('0x73'),_0xf54a('0x74'),_0xf54a('0x75')],'raw':!![]}]})[_0xf54a('0x2e')](function(_0x3a448c){if(_0x3a448c){var _0x3c4916=_[_0xf54a('0x76')](_0x3a448c,function(_0x6f31f7){var _0x31c7d1=_0x6f31f7['get']({'plain':!![]});return _0x31c7d1['Agents'];});return db[_0xf54a('0x4d')][_0xf54a('0x5a')]({'where':{'id':_0xd8d9c8[_0xf54a('0x53')]['id']}})[_0xf54a('0x2e')](function(_0x24c4e2){return db['sequelize']['transaction'](function(_0x1a692e){return _0x24c4e2[_0xf54a('0x71')](_0x3743ab,{'transaction':_0x1a692e})['then'](function(){return BPromise[_0xf54a('0x77')](_0x3c4916,function(_0x40154d){return db[_0xf54a('0x62')][_0xf54a('0x78')]({'where':{'UserId':_0x40154d['id'],'MailQueueId':_0xd8d9c8['params']['id']},'transaction':_0x1a692e});});})[_0xf54a('0x2e')](function(){_0x3c4916[_0xf54a('0x79')](function(_0x287067){socket[_0xf54a('0x7a')](_0xf54a('0x7b'),{'UserId':_0x287067['id'],'MailQueueId':_0x24c4e2['id']});});});});});}})[_0xf54a('0x2e')](respondWithStatusCode(_0x106b85,null))[_0xf54a('0x51')](handleError(_0x106b85,null));};exports['removeTeams']=function(_0x4f65d1,_0x466dea,_0x26002a){return db[_0xf54a('0x70')][_0xf54a('0x4f')]({'where':{'id':_0x4f65d1['query'][_0xf54a('0x7c')]},'attributes':['id'],'include':[{'model':db[_0xf54a('0x65')],'as':_0xf54a('0x72'),'attributes':['id'],'raw':!![]}]})[_0xf54a('0x2e')](handleEntityNotFound(_0x466dea,null))['then'](function(_0x4f2b8a){var _0x43432f=_[_0xf54a('0x37')](_0x4f2b8a,'id');var _0x398200=[];var _0x29d3c9=[];var _0x506035=squel[_0xf54a('0x7d')]();_0x506035[_0xf54a('0x7e')](_0xf54a('0x7f'))[_0xf54a('0x80')]('team_has_mail_queues','tq')[_0xf54a('0x81')]('user_has_teams','ut',_0xf54a('0x82'))['where'](_0xf54a('0x83'),_0x4f65d1[_0xf54a('0x53')]['id']);for(var _0x5efab6=0x0;_0x5efab6<_0x4f2b8a[_0xf54a('0x42')];_0x5efab6+=0x1){let _0x499a00=_0x4f2b8a[_0x5efab6];for(var _0x15e9c5=0x0;_0x15e9c5<_0x499a00[_0xf54a('0x72')]['length'];_0x15e9c5+=0x1){let _0x40682c=_0x499a00['Agents'][_0x15e9c5];var _0x2cfc5d=_0x506035[_0xf54a('0x84')]();_0x2cfc5d['where'](_0xf54a('0x85'),_0x40682c['id']);_0x29d3c9[_0xf54a('0x86')](db[_0xf54a('0x87')][_0xf54a('0x3e')](_0x2cfc5d[_0xf54a('0x88')](),{'type':db[_0xf54a('0x87')][_0xf54a('0x89')][_0xf54a('0x8a')]})['then'](function(_0x57fbfa){if(_0x57fbfa[_0xf54a('0x42')]===0x1){return _0x40682c['id'];}else{var _0x525426=_['every'](_[_0xf54a('0x37')](_0x57fbfa,_0xf54a('0x8b')),function(_0x2f38b2){return _[_0xf54a('0x8c')](_0x43432f,_0x2f38b2);});if(_0x525426){return _0x40682c['id'];}}}));}}return BPromise[_0xf54a('0x8d')](_0x29d3c9)[_0xf54a('0x2e')](function(_0x16a53f){_0x398200=_(_0x398200)[_0xf54a('0x8e')](_0x16a53f)[_0xf54a('0x8f')]()[_0xf54a('0x90')]();return db[_0xf54a('0x4d')]['find']({'where':{'id':_0x4f65d1[_0xf54a('0x53')]['id']}})[_0xf54a('0x2e')](function(_0x15d3fd){return db[_0xf54a('0x87')][_0xf54a('0x91')](function(_0x3506c0){return _0x15d3fd[_0xf54a('0x92')](_0x4f65d1[_0xf54a('0x3e')]['ids'],{'transaction':_0x3506c0})[_0xf54a('0x2e')](function(){if(!_[_0xf54a('0x93')](_0x398200)){return _0x15d3fd['removeAgents'](_0x398200,{'transaction':_0x3506c0});}})[_0xf54a('0x2e')](function(){_0x398200[_0xf54a('0x79')](function(_0x3b7523){socket[_0xf54a('0x7a')](_0xf54a('0x94'),{'UserId':_0x3b7523,'MailQueueId':_0x15d3fd['id']});});});});});});})[_0xf54a('0x2e')](respondWithStatusCode(_0x466dea,null))['catch'](handleError(_0x466dea,null));};exports[_0xf54a('0x95')]=function(_0x1508a6,_0x185158,_0x4e9aa5){return db[_0xf54a('0x4d')][_0xf54a('0x5a')]({'where':{'id':_0x1508a6[_0xf54a('0x53')]['id']}})[_0xf54a('0x2e')](handleEntityNotFound(_0x185158,null))[_0xf54a('0x2e')](function(_0x3b915e){if(_0x3b915e){return _0x3b915e[_0xf54a('0x95')](_0x1508a6['body'][_0xf54a('0x7c')],_[_0xf54a('0x96')](_0x1508a6['body'],['ids','id'])||{})['spread'](function(_0x3b26f7){for(var _0x7985db=0x0;_0x7985db<_0x1508a6[_0xf54a('0x56')][_0xf54a('0x7c')][_0xf54a('0x42')];_0x7985db+=0x1){socket[_0xf54a('0x7a')](_0xf54a('0x7b'),{'UserId':Number(_0x1508a6[_0xf54a('0x56')][_0xf54a('0x7c')][_0x7985db]),'MailQueueId':Number(_0x1508a6[_0xf54a('0x53')]['id'])});}return _0x3b26f7;});}})[_0xf54a('0x2e')](respondWithResult(_0x185158,null))[_0xf54a('0x51')](handleError(_0x185158,null));};exports[_0xf54a('0x97')]=function(_0x465238,_0x1bec11,_0x24cc9a){return db[_0xf54a('0x4d')][_0xf54a('0x5a')]({'where':{'id':_0x465238[_0xf54a('0x53')]['id']}})[_0xf54a('0x2e')](handleEntityNotFound(_0x1bec11,null))[_0xf54a('0x2e')](function(_0x417699){if(_0x417699){return _0x417699[_0xf54a('0x97')](_0x465238['query'][_0xf54a('0x7c')])[_0xf54a('0x2e')](function(){if(_[_0xf54a('0x98')](_0x465238[_0xf54a('0x3e')][_0xf54a('0x7c')])){for(var _0x17a8d8=0x0;_0x17a8d8<_0x465238[_0xf54a('0x3e')][_0xf54a('0x7c')][_0xf54a('0x42')];_0x17a8d8+=0x1){socket[_0xf54a('0x7a')]('userMailQueue:remove',{'UserId':Number(_0x465238[_0xf54a('0x3e')][_0xf54a('0x7c')][_0x17a8d8]),'MailQueueId':Number(_0x465238[_0xf54a('0x53')]['id'])});}}else{socket[_0xf54a('0x7a')]('userMailQueue:remove',{'UserId':Number(_0x465238[_0xf54a('0x3e')]['ids']),'MailQueueId':Number(_0x465238['params']['id'])});}});}})[_0xf54a('0x2e')](respondWithStatusCode(_0x1bec11,null))['catch'](handleError(_0x1bec11,null));};exports[_0xf54a('0x99')]=function(_0x81205b,_0x4719a3,_0x285e34){var _0x39629b={};var _0x52ad4b={};var _0x56d44c;var _0x4f4459;return db[_0xf54a('0x4d')][_0xf54a('0x61')]({'where':{'id':_0x81205b['params']['id']}})[_0xf54a('0x2e')](handleEntityNotFound(_0x4719a3,null))['then'](function(_0x24ad57){if(_0x24ad57){_0x56d44c=_0x24ad57;_0x52ad4b[_0xf54a('0x3c')]=_[_0xf54a('0x3d')](db[_0xf54a('0x65')]['rawAttributes']);_0x52ad4b['query']=_[_0xf54a('0x3d')](_0x81205b[_0xf54a('0x3e')]);_0x52ad4b[_0xf54a('0x48')]=_[_0xf54a('0x3f')](_0x52ad4b[_0xf54a('0x3c')],_0x52ad4b['query']);_0x39629b[_0xf54a('0x40')]=_['intersection'](_0x52ad4b[_0xf54a('0x3c')],qs[_0xf54a('0x41')](_0x81205b['query']['fields']));_0x39629b['attributes']=_0x39629b[_0xf54a('0x40')][_0xf54a('0x42')]?_0x39629b['attributes']:_0x52ad4b[_0xf54a('0x3c')];_0x39629b[_0xf54a('0x45')]=qs['sort'](_0x81205b[_0xf54a('0x3e')][_0xf54a('0x46')]);_0x39629b[_0xf54a('0x47')]=qs[_0xf54a('0x48')](_[_0xf54a('0x63')](_0x81205b[_0xf54a('0x3e')],_0x52ad4b[_0xf54a('0x48')]));if(_0x81205b[_0xf54a('0x3e')][_0xf54a('0x49')]){_0x39629b['where']=_[_0xf54a('0x4b')](_0x39629b['where'],{'$or':_[_0xf54a('0x37')](_0x39629b[_0xf54a('0x40')],function(_0x5907a8){var _0x524df2={};_0x524df2[_0x5907a8]={'$like':'%'+_0x81205b[_0xf54a('0x3e')][_0xf54a('0x49')]+'%'};return _0x524df2;})});}_0x39629b=_[_0xf54a('0x4b')]({},_0x39629b,_0x81205b[_0xf54a('0x4c')]);return _0x56d44c[_0xf54a('0x99')](_0x39629b);}})['then'](function(_0x277b86){if(_0x277b86){_0x4f4459=_0x277b86[_0xf54a('0x42')];if(!_0x81205b[_0xf54a('0x3e')][_0xf54a('0x43')](_0xf54a('0x44'))){_0x39629b[_0xf54a('0x26')]=qs['limit'](_0x81205b[_0xf54a('0x3e')][_0xf54a('0x26')]);_0x39629b['offset']=qs[_0xf54a('0x25')](_0x81205b['query']['offset']);}return _0x56d44c[_0xf54a('0x99')](_0x39629b);}})[_0xf54a('0x2e')](function(_0x1d4f88){if(_0x1d4f88){return _0x1d4f88?{'count':_0x4f4459,'rows':_0x1d4f88}:null;}})[_0xf54a('0x2e')](respondWithResult(_0x4719a3,null))[_0xf54a('0x51')](handleError(_0x4719a3,null));};
\ No newline at end of file
index 4d00235..2cdad85 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x71f7=['hook','setMaxListeners','remove','emit'];(function(_0x3ddda7,_0x39eaf3){var _0x38f5b4=function(_0x49be31){while(--_0x49be31){_0x3ddda7['push'](_0x3ddda7['shift']());}};_0x38f5b4(++_0x39eaf3);}(_0x71f7,0x155));var _0x771f=function(_0x158e13,_0x23dbd5){_0x158e13=_0x158e13-0x0;var _0x1cda0b=_0x71f7[_0x158e13];return _0x1cda0b;};'use strict';var EventEmitter=require('events');var MailQueue=require('../../mysqldb')['db']['MailQueue'];var MailQueueEvents=new EventEmitter();MailQueueEvents[_0x771f('0x0')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x771f('0x1')};function emitEvent(_0x58a007){return function(_0x53e135,_0x35ad25,_0x4d0b8c){MailQueueEvents[_0x771f('0x2')](_0x58a007+':'+_0x53e135['id'],_0x53e135);MailQueueEvents[_0x771f('0x2')](_0x58a007,_0x53e135);_0x4d0b8c(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];MailQueue[_0x771f('0x3')](e,emitEvent(event));}}module['exports']=MailQueueEvents;
\ No newline at end of file
+var _0x5c1b=['events','../../mysqldb','MailQueue','setMaxListeners','save','remove','emit','hasOwnProperty'];(function(_0x18586e,_0x29ebbb){var _0x1fd64d=function(_0x5058e4){while(--_0x5058e4){_0x18586e['push'](_0x18586e['shift']());}};_0x1fd64d(++_0x29ebbb);}(_0x5c1b,0x178));var _0xb5c1=function(_0x23dcc1,_0x59f1b7){_0x23dcc1=_0x23dcc1-0x0;var _0x581882=_0x5c1b[_0x23dcc1];return _0x581882;};'use strict';var EventEmitter=require(_0xb5c1('0x0'));var MailQueue=require(_0xb5c1('0x1'))['db'][_0xb5c1('0x2')];var MailQueueEvents=new EventEmitter();MailQueueEvents[_0xb5c1('0x3')](0x0);var events={'afterCreate':_0xb5c1('0x4'),'afterUpdate':'update','afterDestroy':_0xb5c1('0x5')};function emitEvent(_0x1e1a06){return function(_0x19a5e8,_0x7e2a27,_0x262b44){MailQueueEvents['emit'](_0x1e1a06+':'+_0x19a5e8['id'],_0x19a5e8);MailQueueEvents[_0xb5c1('0x6')](_0x1e1a06,_0x19a5e8);_0x262b44(null);};}for(var e in events){if(events[_0xb5c1('0x7')](e)){var event=events[e];MailQueue['hook'](e,emitEvent(event));}}module['exports']=MailQueueEvents;
\ No newline at end of file
index 2c96eeb..6439f89 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf69a=['request-promise','path','rimraf','./mailQueue.attributes','exports','define','lodash','util','../../config/logger','api','moment'];(function(_0x4b793b,_0x1ee112){var _0xcfbd6a=function(_0x2eb91c){while(--_0x2eb91c){_0x4b793b['push'](_0x4b793b['shift']());}};_0xcfbd6a(++_0x1ee112);}(_0xf69a,0x187));var _0xaf69=function(_0x34068f,_0x5758e4){_0x34068f=_0x34068f-0x0;var _0x351894=_0xf69a[_0x34068f];return _0x351894;};'use strict';var _=require(_0xaf69('0x0'));var util=require(_0xaf69('0x1'));var logger=require(_0xaf69('0x2'))(_0xaf69('0x3'));var moment=require(_0xaf69('0x4'));var BPromise=require('bluebird');var rp=require(_0xaf69('0x5'));var fs=require('fs');var path=require(_0xaf69('0x6'));var rimraf=require(_0xaf69('0x7'));var config=require('../../config/environment');var attributes=require(_0xaf69('0x8'));module[_0xaf69('0x9')]=function(_0x5108d8,_0x99b418){return _0x5108d8[_0xaf69('0xa')]('MailQueue',attributes,{'tableName':'mail_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x88c7=['./mailQueue.attributes','define','MailQueue','mail_queues','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x1d7300,_0x17f109){var _0x46ee98=function(_0x5ee16a){while(--_0x5ee16a){_0x1d7300['push'](_0x1d7300['shift']());}};_0x46ee98(++_0x17f109);}(_0x88c7,0x88));var _0x788c=function(_0x5b3323,_0x30c297){_0x5b3323=_0x5b3323-0x0;var _0x53e15b=_0x88c7[_0x5b3323];return _0x53e15b;};'use strict';var _=require('lodash');var util=require(_0x788c('0x0'));var logger=require(_0x788c('0x1'))(_0x788c('0x2'));var moment=require('moment');var BPromise=require(_0x788c('0x3'));var rp=require(_0x788c('0x4'));var fs=require('fs');var path=require(_0x788c('0x5'));var rimraf=require(_0x788c('0x6'));var config=require(_0x788c('0x7'));var attributes=require(_0x788c('0x8'));module['exports']=function(_0x3f5170,_0x2cf420){return _0x3f5170[_0x788c('0x9')](_0x788c('0xa'),attributes,{'tableName':_0x788c('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1fc86e5..4e2f22d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c81=['register','request','then','MailQueue,\x20%s,\x20%s','request\x20sent','debug','MailQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','info','catch','GetMailQueue','MailQueue','findAll','options','attributes','limit','include','map','model','ShowMailQueue','find','raw','where','lodash','bluebird','randomstring','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./mailQueue.socket'];(function(_0x1f728f,_0x2963f1){var _0x2ecf74=function(_0x2df5b7){while(--_0x2df5b7){_0x1f728f['push'](_0x1f728f['shift']());}};_0x2ecf74(++_0x2963f1);}(_0x1c81,0x8b));var _0x11c8=function(_0x302d01,_0x3584c9){_0x302d01=_0x302d01-0x0;var _0x557022=_0x1c81[_0x302d01];return _0x557022;};'use strict';var _=require(_0x11c8('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x11c8('0x1'));var rs=require(_0x11c8('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x11c8('0x3'))(_0x11c8('0x4'));var config=require('../../config/environment');var jayson=require(_0x11c8('0x5'));var client=jayson[_0x11c8('0x6')][_0x11c8('0x7')]({'port':0x232a});config[_0x11c8('0x8')]=_[_0x11c8('0x9')](config[_0x11c8('0x8')],{'host':_0x11c8('0xa'),'port':0x18eb});var socket=require(_0x11c8('0xb'))(new Redis(config[_0x11c8('0x8')]));require(_0x11c8('0xc'))[_0x11c8('0xd')](socket);function respondWithRpcPromise(_0x3aac32,_0x374107,_0xf1af51){return new BPromise(function(_0x77a99d,_0x37e94e){return client[_0x11c8('0xe')](_0x3aac32,_0xf1af51)[_0x11c8('0xf')](function(_0x4e82eb){logger['info'](_0x11c8('0x10'),_0x374107,_0x11c8('0x11'));logger[_0x11c8('0x12')](_0x11c8('0x13'),_0x374107,_0x11c8('0x11'),JSON[_0x11c8('0x14')](_0x4e82eb));if(_0x4e82eb[_0x11c8('0x15')]){if(_0x4e82eb[_0x11c8('0x15')]['code']===0x1f4){logger[_0x11c8('0x15')](_0x11c8('0x10'),_0x374107,_0x4e82eb['error'][_0x11c8('0x16')]);return _0x37e94e(_0x4e82eb['error'][_0x11c8('0x16')]);}logger[_0x11c8('0x15')](_0x11c8('0x10'),_0x374107,_0x4e82eb[_0x11c8('0x15')]['message']);return _0x77a99d(_0x4e82eb['error'][_0x11c8('0x16')]);}else{logger[_0x11c8('0x17')](_0x11c8('0x10'),_0x374107,_0x11c8('0x11'));_0x77a99d(_0x4e82eb['result'][_0x11c8('0x16')]);}})[_0x11c8('0x18')](function(_0x57a65c){logger[_0x11c8('0x15')](_0x11c8('0x10'),_0x374107,_0x57a65c);_0x37e94e(_0x57a65c);});});}exports[_0x11c8('0x19')]=function(_0x4b718c){var _0x38d14c=this;return new Promise(function(_0x4d5797,_0x5cca92){return db[_0x11c8('0x1a')][_0x11c8('0x1b')]({'raw':_0x4b718c['options']?_0x4b718c[_0x11c8('0x1c')]['raw']===undefined?!![]:![]:!![],'where':_0x4b718c['options']?_0x4b718c['options']['where']||null:null,'attributes':_0x4b718c['options']?_0x4b718c[_0x11c8('0x1c')][_0x11c8('0x1d')]||null:null,'limit':_0x4b718c[_0x11c8('0x1c')]?_0x4b718c[_0x11c8('0x1c')][_0x11c8('0x1e')]||null:null,'include':_0x4b718c['options']?_0x4b718c['options'][_0x11c8('0x1f')]?_[_0x11c8('0x20')](_0x4b718c[_0x11c8('0x1c')][_0x11c8('0x1f')],function(_0x1031ea){return{'model':db[_0x1031ea[_0x11c8('0x21')]],'as':_0x1031ea['as'],'attributes':_0x1031ea['attributes'],'include':_0x1031ea[_0x11c8('0x1f')]?_[_0x11c8('0x20')](_0x1031ea[_0x11c8('0x1f')],function(_0x323cd3){return{'model':db[_0x323cd3['model']],'as':_0x323cd3['as'],'attributes':_0x323cd3[_0x11c8('0x1d')],'include':_0x323cd3[_0x11c8('0x1f')]?_[_0x11c8('0x20')](_0x323cd3[_0x11c8('0x1f')],function(_0x554636){return{'model':db[_0x554636['model']],'as':_0x554636['as'],'attributes':_0x554636['attributes']};}):[]};}):[]};}):[]:[]})[_0x11c8('0xf')](function(_0x476be0){logger[_0x11c8('0x17')](_0x11c8('0x19'),_0x4b718c);logger['debug']('GetMailQueue',_0x4b718c,JSON[_0x11c8('0x14')](_0x476be0));_0x4d5797(_0x476be0);})['catch'](function(_0x2361e8){logger['error'](_0x11c8('0x19'),_0x2361e8['message'],_0x4b718c);_0x5cca92(_0x38d14c['error'](0x1f4,_0x2361e8[_0x11c8('0x16')]));});});};exports[_0x11c8('0x22')]=function(_0x1487bb){var _0xf2ba3e=this;return new Promise(function(_0xb74e90,_0x7400fb){return db[_0x11c8('0x1a')][_0x11c8('0x23')]({'raw':_0x1487bb[_0x11c8('0x1c')]?_0x1487bb[_0x11c8('0x1c')][_0x11c8('0x24')]===undefined?!![]:![]:!![],'where':_0x1487bb[_0x11c8('0x1c')]?_0x1487bb[_0x11c8('0x1c')][_0x11c8('0x25')]||null:null,'attributes':_0x1487bb[_0x11c8('0x1c')]?_0x1487bb[_0x11c8('0x1c')][_0x11c8('0x1d')]||null:null,'include':_0x1487bb[_0x11c8('0x1c')]?_0x1487bb[_0x11c8('0x1c')][_0x11c8('0x1f')]?_[_0x11c8('0x20')](_0x1487bb['options'][_0x11c8('0x1f')],function(_0x64cd16){return{'model':db[_0x64cd16['model']],'as':_0x64cd16['as'],'attributes':_0x64cd16[_0x11c8('0x1d')],'include':_0x64cd16[_0x11c8('0x1f')]?_['map'](_0x64cd16[_0x11c8('0x1f')],function(_0x3dd1c2){return{'model':db[_0x3dd1c2['model']],'as':_0x3dd1c2['as'],'attributes':_0x3dd1c2[_0x11c8('0x1d')],'include':_0x3dd1c2[_0x11c8('0x1f')]?_[_0x11c8('0x20')](_0x3dd1c2[_0x11c8('0x1f')],function(_0x2220c){return{'model':db[_0x2220c[_0x11c8('0x21')]],'as':_0x2220c['as'],'attributes':_0x2220c[_0x11c8('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x11c8('0xf')](function(_0x49958d){logger[_0x11c8('0x17')](_0x11c8('0x22'),_0x1487bb);logger[_0x11c8('0x12')](_0x11c8('0x22'),_0x1487bb,JSON[_0x11c8('0x14')](_0x49958d));_0xb74e90(_0x49958d);})[_0x11c8('0x18')](function(_0x31311d){logger[_0x11c8('0x15')](_0x11c8('0x22'),_0x31311d[_0x11c8('0x16')],_0x1487bb);_0x7400fb(_0xf2ba3e[_0x11c8('0x15')](0x1f4,_0x31311d[_0x11c8('0x16')]));});});};
\ No newline at end of file
+var _0xe764=['model','GetMailQueue','stringify','catch','ShowMailQueue','MailQueue','find','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','./mailQueue.socket','register','request','then','info','request\x20sent','debug','MailQueue,\x20%s,\x20%s,\x20%s','error','MailQueue,\x20%s,\x20%s','message','result','findAll','options','raw','attributes','limit','include','map'];(function(_0xa9471f,_0x37b718){var _0x2e64ee=function(_0xb7d20a){while(--_0xb7d20a){_0xa9471f['push'](_0xa9471f['shift']());}};_0x2e64ee(++_0x37b718);}(_0xe764,0x85));var _0x4e76=function(_0x3a8ce2,_0x552ad5){_0x3a8ce2=_0x3a8ce2-0x0;var _0x2e5a45=_0xe764[_0x3a8ce2];return _0x2e5a45;};'use strict';var _=require(_0x4e76('0x0'));var util=require(_0x4e76('0x1'));var moment=require(_0x4e76('0x2'));var BPromise=require('bluebird');var rs=require(_0x4e76('0x3'));var fs=require('fs');var Redis=require(_0x4e76('0x4'));var db=require(_0x4e76('0x5'))['db'];var utils=require(_0x4e76('0x6'));var logger=require(_0x4e76('0x7'))(_0x4e76('0x8'));var config=require(_0x4e76('0x9'));var jayson=require(_0x4e76('0xa'));var client=jayson[_0x4e76('0xb')][_0x4e76('0xc')]({'port':0x232a});config[_0x4e76('0xd')]=_[_0x4e76('0xe')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x4e76('0xf'))(new Redis(config[_0x4e76('0xd')]));require(_0x4e76('0x10'))[_0x4e76('0x11')](socket);function respondWithRpcPromise(_0x5a3312,_0xbe4688,_0x375861){return new BPromise(function(_0x9bcdad,_0x4c28f9){return client[_0x4e76('0x12')](_0x5a3312,_0x375861)[_0x4e76('0x13')](function(_0x103fc9){logger[_0x4e76('0x14')]('MailQueue,\x20%s,\x20%s',_0xbe4688,_0x4e76('0x15'));logger[_0x4e76('0x16')](_0x4e76('0x17'),_0xbe4688,'request\x20sent',JSON['stringify'](_0x103fc9));if(_0x103fc9[_0x4e76('0x18')]){if(_0x103fc9[_0x4e76('0x18')]['code']===0x1f4){logger[_0x4e76('0x18')](_0x4e76('0x19'),_0xbe4688,_0x103fc9[_0x4e76('0x18')]['message']);return _0x4c28f9(_0x103fc9[_0x4e76('0x18')][_0x4e76('0x1a')]);}logger['error'](_0x4e76('0x19'),_0xbe4688,_0x103fc9[_0x4e76('0x18')][_0x4e76('0x1a')]);return _0x9bcdad(_0x103fc9['error'][_0x4e76('0x1a')]);}else{logger[_0x4e76('0x14')](_0x4e76('0x19'),_0xbe4688,_0x4e76('0x15'));_0x9bcdad(_0x103fc9[_0x4e76('0x1b')][_0x4e76('0x1a')]);}})['catch'](function(_0x36a5e4){logger[_0x4e76('0x18')]('MailQueue,\x20%s,\x20%s',_0xbe4688,_0x36a5e4);_0x4c28f9(_0x36a5e4);});});}exports['GetMailQueue']=function(_0x13a347){var _0x1f7065=this;return new Promise(function(_0x375017,_0x1240e0){return db['MailQueue'][_0x4e76('0x1c')]({'raw':_0x13a347[_0x4e76('0x1d')]?_0x13a347[_0x4e76('0x1d')][_0x4e76('0x1e')]===undefined?!![]:![]:!![],'where':_0x13a347[_0x4e76('0x1d')]?_0x13a347[_0x4e76('0x1d')]['where']||null:null,'attributes':_0x13a347['options']?_0x13a347[_0x4e76('0x1d')][_0x4e76('0x1f')]||null:null,'limit':_0x13a347[_0x4e76('0x1d')]?_0x13a347[_0x4e76('0x1d')][_0x4e76('0x20')]||null:null,'include':_0x13a347[_0x4e76('0x1d')]?_0x13a347[_0x4e76('0x1d')][_0x4e76('0x21')]?_[_0x4e76('0x22')](_0x13a347['options'][_0x4e76('0x21')],function(_0x5a178f){return{'model':db[_0x5a178f[_0x4e76('0x23')]],'as':_0x5a178f['as'],'attributes':_0x5a178f[_0x4e76('0x1f')],'include':_0x5a178f[_0x4e76('0x21')]?_[_0x4e76('0x22')](_0x5a178f[_0x4e76('0x21')],function(_0x2a2a62){return{'model':db[_0x2a2a62[_0x4e76('0x23')]],'as':_0x2a2a62['as'],'attributes':_0x2a2a62[_0x4e76('0x1f')],'include':_0x2a2a62[_0x4e76('0x21')]?_[_0x4e76('0x22')](_0x2a2a62[_0x4e76('0x21')],function(_0x43d88c){return{'model':db[_0x43d88c[_0x4e76('0x23')]],'as':_0x43d88c['as'],'attributes':_0x43d88c[_0x4e76('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x4e76('0x13')](function(_0x143d6b){logger[_0x4e76('0x14')]('GetMailQueue',_0x13a347);logger[_0x4e76('0x16')](_0x4e76('0x24'),_0x13a347,JSON[_0x4e76('0x25')](_0x143d6b));_0x375017(_0x143d6b);})[_0x4e76('0x26')](function(_0x1f412f){logger[_0x4e76('0x18')]('GetMailQueue',_0x1f412f['message'],_0x13a347);_0x1240e0(_0x1f7065[_0x4e76('0x18')](0x1f4,_0x1f412f['message']));});});};exports[_0x4e76('0x27')]=function(_0x5eea37){var _0x3ca8cf=this;return new Promise(function(_0x3e6bdc,_0x137111){return db[_0x4e76('0x28')][_0x4e76('0x29')]({'raw':_0x5eea37[_0x4e76('0x1d')]?_0x5eea37[_0x4e76('0x1d')][_0x4e76('0x1e')]===undefined?!![]:![]:!![],'where':_0x5eea37[_0x4e76('0x1d')]?_0x5eea37[_0x4e76('0x1d')]['where']||null:null,'attributes':_0x5eea37[_0x4e76('0x1d')]?_0x5eea37['options']['attributes']||null:null,'include':_0x5eea37[_0x4e76('0x1d')]?_0x5eea37[_0x4e76('0x1d')]['include']?_['map'](_0x5eea37[_0x4e76('0x1d')][_0x4e76('0x21')],function(_0x207cfc){return{'model':db[_0x207cfc[_0x4e76('0x23')]],'as':_0x207cfc['as'],'attributes':_0x207cfc[_0x4e76('0x1f')],'include':_0x207cfc[_0x4e76('0x21')]?_[_0x4e76('0x22')](_0x207cfc[_0x4e76('0x21')],function(_0x329da7){return{'model':db[_0x329da7['model']],'as':_0x329da7['as'],'attributes':_0x329da7[_0x4e76('0x1f')],'include':_0x329da7[_0x4e76('0x21')]?_[_0x4e76('0x22')](_0x329da7[_0x4e76('0x21')],function(_0x126591){return{'model':db[_0x126591[_0x4e76('0x23')]],'as':_0x126591['as'],'attributes':_0x126591[_0x4e76('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x4e76('0x13')](function(_0x59c8eb){logger[_0x4e76('0x14')](_0x4e76('0x27'),_0x5eea37);logger[_0x4e76('0x16')]('ShowMailQueue',_0x5eea37,JSON['stringify'](_0x59c8eb));_0x3e6bdc(_0x59c8eb);})[_0x4e76('0x26')](function(_0x1e1cdc){logger['error']('ShowMailQueue',_0x1e1cdc['message'],_0x5eea37);_0x137111(_0x3ca8cf[_0x4e76('0x18')](0x1f4,_0x1e1cdc['message']));});});};
\ No newline at end of file
index ee82467..50bd8f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x361a=['register','length','./mailQueue.events','save','remove','update','emit','removeListener'];(function(_0x13b02f,_0x462a53){var _0x12e9a6=function(_0x187d57){while(--_0x187d57){_0x13b02f['push'](_0x13b02f['shift']());}};_0x12e9a6(++_0x462a53);}(_0x361a,0x102));var _0xa361=function(_0x45158b,_0x45bc1e){_0x45158b=_0x45158b-0x0;var _0x1f4075=_0x361a[_0x45158b];return _0x1f4075;};'use strict';var MailQueueEvents=require(_0xa361('0x0'));var events=[_0xa361('0x1'),_0xa361('0x2'),_0xa361('0x3')];function createListener(_0x531e30,_0x2ea24f){return function(_0x2d53cf){_0x2ea24f[_0xa361('0x4')](_0x531e30,_0x2d53cf);};}function removeListener(_0x4ed762,_0x1a8ad1){return function(){MailQueueEvents[_0xa361('0x5')](_0x4ed762,_0x1a8ad1);};}exports[_0xa361('0x6')]=function(_0x2df977){for(var _0x2145de=0x0,_0x5ec147=events[_0xa361('0x7')];_0x2145de<_0x5ec147;_0x2145de++){var _0x10541a=events[_0x2145de];var _0x383d1f=createListener('mailQueue:'+_0x10541a,_0x2df977);MailQueueEvents['on'](_0x10541a,_0x383d1f);}};
\ No newline at end of file
+var _0xf6b3=['save','remove','emit','removeListener','register','length','mailQueue:','./mailQueue.events'];(function(_0x2a6596,_0x3e2807){var _0x5ef636=function(_0x21e5cc){while(--_0x21e5cc){_0x2a6596['push'](_0x2a6596['shift']());}};_0x5ef636(++_0x3e2807);}(_0xf6b3,0x177));var _0x3f6b=function(_0x45870a,_0x5c6ff0){_0x45870a=_0x45870a-0x0;var _0x4ec553=_0xf6b3[_0x45870a];return _0x4ec553;};'use strict';var MailQueueEvents=require(_0x3f6b('0x0'));var events=[_0x3f6b('0x1'),_0x3f6b('0x2'),'update'];function createListener(_0x13696e,_0x1eb65b){return function(_0x3fdcbc){_0x1eb65b[_0x3f6b('0x3')](_0x13696e,_0x3fdcbc);};}function removeListener(_0x5091cc,_0x791375){return function(){MailQueueEvents[_0x3f6b('0x4')](_0x5091cc,_0x791375);};}exports[_0x3f6b('0x5')]=function(_0x34ab6b){for(var _0x287ad0=0x0,_0x49c7ff=events[_0x3f6b('0x6')];_0x287ad0<_0x49c7ff;_0x287ad0++){var _0x7e6df2=events[_0x287ad0];var _0x5cc67a=createListener(_0x3f6b('0x7')+_0x7e6df2,_0x34ab6b);MailQueueEvents['on'](_0x7e6df2,_0x5cc67a);}};
\ No newline at end of file
index 743245d..fb6912d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x45c1=['describe','show','post','create','put','/:id','update','delete','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./mailQueueReport.controller','get','isAuthenticated','index','/describe'];(function(_0x1acdd7,_0x1b63d6){var _0x5eed04=function(_0x5d4335){while(--_0x5d4335){_0x1acdd7['push'](_0x1acdd7['shift']());}};_0x5eed04(++_0x1b63d6);}(_0x45c1,0x135));var _0x145c=function(_0x5de441,_0x96ed67){_0x5de441=_0x5de441-0x0;var _0xb956d4=_0x45c1[_0x5de441];return _0xb956d4;};'use strict';var multer=require(_0x145c('0x0'));var util=require(_0x145c('0x1'));var path=require(_0x145c('0x2'));var timeout=require('connect-timeout');var express=require(_0x145c('0x3'));var router=express[_0x145c('0x4')]();var fs_extra=require(_0x145c('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x145c('0x6'));var config=require(_0x145c('0x7'));var controller=require(_0x145c('0x8'));router[_0x145c('0x9')]('/',auth[_0x145c('0xa')](),controller[_0x145c('0xb')]);router['get'](_0x145c('0xc'),auth[_0x145c('0xa')](),controller[_0x145c('0xd')]);router[_0x145c('0x9')]('/:id',auth['isAuthenticated'](),controller[_0x145c('0xe')]);router[_0x145c('0xf')]('/',auth[_0x145c('0xa')](),controller[_0x145c('0x10')]);router[_0x145c('0x11')](_0x145c('0x12'),auth[_0x145c('0xa')](),controller[_0x145c('0x13')]);router[_0x145c('0x14')](_0x145c('0x12'),auth[_0x145c('0xa')](),controller[_0x145c('0x15')]);module[_0x145c('0x16')]=router;
\ No newline at end of file
+var _0xba45=['./mailQueueReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','put','update','delete','destroy','exports','path','connect-timeout','express','Router','../../components/interaction/service'];(function(_0x3638d7,_0x5b9f99){var _0x18c7ed=function(_0x41bffd){while(--_0x41bffd){_0x3638d7['push'](_0x3638d7['shift']());}};_0x18c7ed(++_0x5b9f99);}(_0xba45,0x1ef));var _0x5ba4=function(_0x9d172a,_0x1aad54){_0x9d172a=_0x9d172a-0x0;var _0x50da72=_0xba45[_0x9d172a];return _0x50da72;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x5ba4('0x0'));var timeout=require(_0x5ba4('0x1'));var express=require(_0x5ba4('0x2'));var router=express[_0x5ba4('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x5ba4('0x4'));var config=require('../../config/environment');var controller=require(_0x5ba4('0x5'));router[_0x5ba4('0x6')]('/',auth[_0x5ba4('0x7')](),controller[_0x5ba4('0x8')]);router[_0x5ba4('0x6')](_0x5ba4('0x9'),auth[_0x5ba4('0x7')](),controller[_0x5ba4('0xa')]);router[_0x5ba4('0x6')](_0x5ba4('0xb'),auth[_0x5ba4('0x7')](),controller[_0x5ba4('0xc')]);router[_0x5ba4('0xd')]('/',auth[_0x5ba4('0x7')](),controller[_0x5ba4('0xe')]);router[_0x5ba4('0xf')](_0x5ba4('0xb'),auth[_0x5ba4('0x7')](),controller[_0x5ba4('0x10')]);router[_0x5ba4('0x11')]('/:id',auth[_0x5ba4('0x7')](),controller[_0x5ba4('0x12')]);module[_0x5ba4('0x13')]=router;
\ No newline at end of file
index db318d2..26a9c9c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe43=['sequelize','exports','STRING','DATE','moment'];(function(_0x277c93,_0x33a8bb){var _0x1bc988=function(_0x4c1ffb){while(--_0x4c1ffb){_0x277c93['push'](_0x277c93['shift']());}};_0x1bc988(++_0x33a8bb);}(_0xbe43,0x1bc));var _0x3be4=function(_0x349d51,_0x514406){_0x349d51=_0x349d51-0x0;var _0x5ab01a=_0xbe43[_0x349d51];return _0x5ab01a;};'use strict';var moment=require(_0x3be4('0x0'));var Sequelize=require(_0x3be4('0x1'));module[_0x3be4('0x2')]={'uniqueid':{'type':Sequelize[_0x3be4('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0x3be4('0x3')]},'joinAt':{'type':Sequelize[_0x3be4('0x4')]},'leaveAt':{'type':Sequelize[_0x3be4('0x4')]},'acceptAt':{'type':Sequelize[_0x3be4('0x4')]},'exitAt':{'type':Sequelize[_0x3be4('0x4')]},'reason':{'type':Sequelize[_0x3be4('0x3')]}};
\ No newline at end of file
+var _0x2e1a=['DATE','exports','STRING'];(function(_0x18dbce,_0x31fb66){var _0x2d06cf=function(_0x40bd05){while(--_0x40bd05){_0x18dbce['push'](_0x18dbce['shift']());}};_0x2d06cf(++_0x31fb66);}(_0x2e1a,0xd6));var _0xa2e1=function(_0x5b5cde,_0x1f7c5f){_0x5b5cde=_0x5b5cde-0x0;var _0x364ad2=_0x2e1a[_0x5b5cde];return _0x364ad2;};'use strict';var moment=require('moment');var Sequelize=require('sequelize');module[_0xa2e1('0x0')]={'uniqueid':{'type':Sequelize[_0xa2e1('0x1')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0xa2e1('0x2')]},'leaveAt':{'type':Sequelize[_0xa2e1('0x2')]},'acceptAt':{'type':Sequelize[_0xa2e1('0x2')]},'exitAt':{'type':Sequelize[_0xa2e1('0x2')]},'reason':{'type':Sequelize[_0xa2e1('0x1')]}};
\ No newline at end of file
index 028ca9d..6822b49 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9536=['rawAttributes','intersection','length','options','find','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','update','error','stack','name','index','map','MailQueueReport','fieldName','model','query','keys','filters','fields','attributes','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','then','includeAll','include','findAll','rows','catch','params'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0x9536,0x179));var _0x6953=function(_0xd8a8af,_0x1e93f0){_0xd8a8af=_0xd8a8af-0x0;var _0x5b7278=_0x9536[_0xd8a8af];return _0x5b7278;};'use strict';var emlformat=require(_0x6953('0x0'));var rimraf=require(_0x6953('0x1'));var zipdir=require(_0x6953('0x2'));var jsonpatch=require(_0x6953('0x3'));var rp=require('request-promise');var moment=require(_0x6953('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x6953('0x5'));var util=require(_0x6953('0x6'));var path=require(_0x6953('0x7'));var sox=require(_0x6953('0x8'));var csv=require(_0x6953('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6953('0xa'));var _=require(_0x6953('0xb'));var squel=require(_0x6953('0xc'));var crypto=require(_0x6953('0xd'));var jsforce=require(_0x6953('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x6953('0x9'));var querystring=require(_0x6953('0xf'));var Papa=require(_0x6953('0x10'));var Redis=require('ioredis');var authService=require(_0x6953('0x11'));var qs=require(_0x6953('0x12'));var as=require(_0x6953('0x13'));var hardwareService=require(_0x6953('0x14'));var logger=require(_0x6953('0x15'))(_0x6953('0x16'));var utils=require(_0x6953('0x17'));var config=require(_0x6953('0x18'));var licenseUtil=require(_0x6953('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x358388,_0x513dd0){_0x513dd0=_0x513dd0||0xcc;return function(_0x8de91e){if(_0x8de91e){return _0x358388[_0x6953('0x1a')](_0x513dd0);}return _0x358388[_0x6953('0x1b')](_0x513dd0)[_0x6953('0x1c')]();};}function respondWithResult(_0x1b5221,_0x244713){_0x244713=_0x244713||0xc8;return function(_0x175fa9){if(_0x175fa9){return _0x1b5221[_0x6953('0x1b')](_0x244713)[_0x6953('0x1d')](_0x175fa9);}};}function respondWithFilteredResult(_0x31d182,_0xae5515){return function(_0x548473){if(_0x548473){var _0x5f49db=typeof _0xae5515[_0x6953('0x1e')]===_0x6953('0x1f')&&typeof _0xae5515[_0x6953('0x20')]===_0x6953('0x1f');var _0x510d46=_0x548473[_0x6953('0x21')];var _0x2da771=_0x5f49db?0x0:_0xae5515['offset'];var _0x10858a=_0x5f49db?_0x548473[_0x6953('0x21')]:_0xae5515[_0x6953('0x1e')]+_0xae5515[_0x6953('0x20')];var _0xc714d3;if(_0x10858a>=_0x510d46){_0x10858a=_0x510d46;_0xc714d3=0xc8;}else{_0xc714d3=0xce;}_0x31d182['status'](_0xc714d3);return _0x31d182[_0x6953('0x22')](_0x6953('0x23'),_0x2da771+'-'+_0x10858a+'/'+_0x510d46)[_0x6953('0x1d')](_0x548473);}return null;};}function patchUpdates(_0x2ba433){return function(_0x41f021){try{jsonpatch['apply'](_0x41f021,_0x2ba433,!![]);}catch(_0xf96d07){return BPromise[_0x6953('0x24')](_0xf96d07);}return _0x41f021['save']();};}function saveUpdates(_0x317979,_0x40c9d1){return function(_0xb92529){if(_0xb92529){return _0xb92529[_0x6953('0x25')](_0x317979)['then'](function(_0x37f339){return _0x37f339;});}return null;};}function removeEntity(_0x231cb2,_0x2a7f6a){return function(_0x508ea7){if(_0x508ea7){return _0x508ea7['destroy']()['then'](function(){_0x231cb2[_0x6953('0x1b')](0xcc)[_0x6953('0x1c')]();});}};}function handleEntityNotFound(_0x550be4,_0x1a32f4){return function(_0x587df0){if(!_0x587df0){_0x550be4[_0x6953('0x1a')](0x194);}return _0x587df0;};}function handleError(_0x2bf39b,_0xcdbce8){_0xcdbce8=_0xcdbce8||0x1f4;return function(_0x2cc01e){logger[_0x6953('0x26')](_0x2cc01e[_0x6953('0x27')]);if(_0x2cc01e['name']){delete _0x2cc01e[_0x6953('0x28')];}_0x2bf39b[_0x6953('0x1b')](_0xcdbce8)['send'](_0x2cc01e);};}exports[_0x6953('0x29')]=function(_0x4af39d,_0x173b3c){var _0x3b1175={},_0x426c7c={},_0x4b0325={'count':0x0,'rows':[]};var _0x131992=_[_0x6953('0x2a')](db[_0x6953('0x2b')]['rawAttributes'],function(_0x4c49fc){return{'name':_0x4c49fc[_0x6953('0x2c')],'type':_0x4c49fc['type']['key']};});_0x426c7c[_0x6953('0x2d')]=_[_0x6953('0x2a')](_0x131992,_0x6953('0x28'));_0x426c7c[_0x6953('0x2e')]=_[_0x6953('0x2f')](_0x4af39d['query']);_0x426c7c[_0x6953('0x30')]=_['intersection'](_0x426c7c[_0x6953('0x2d')],_0x426c7c[_0x6953('0x2e')]);_0x3b1175['attributes']=_['intersection'](_0x426c7c[_0x6953('0x2d')],qs[_0x6953('0x31')](_0x4af39d[_0x6953('0x2e')]['fields']));_0x3b1175[_0x6953('0x32')]=_0x3b1175['attributes']['length']?_0x3b1175['attributes']:_0x426c7c['model'];if(!_0x4af39d[_0x6953('0x2e')][_0x6953('0x33')](_0x6953('0x34'))){_0x3b1175[_0x6953('0x20')]=qs[_0x6953('0x20')](_0x4af39d[_0x6953('0x2e')]['limit']);_0x3b1175[_0x6953('0x1e')]=qs['offset'](_0x4af39d[_0x6953('0x2e')]['offset']);}_0x3b1175[_0x6953('0x35')]=qs[_0x6953('0x36')](_0x4af39d[_0x6953('0x2e')][_0x6953('0x36')]);_0x3b1175['where']=qs[_0x6953('0x30')](_[_0x6953('0x37')](_0x4af39d[_0x6953('0x2e')],_0x426c7c[_0x6953('0x30')]),_0x131992);if(_0x4af39d[_0x6953('0x2e')][_0x6953('0x38')]){_0x3b1175[_0x6953('0x39')]=_[_0x6953('0x3a')](_0x3b1175[_0x6953('0x39')],{'$or':_[_0x6953('0x2a')](_0x131992,function(_0x2d9d81){if(_0x2d9d81['type']!==_0x6953('0x3b')){var _0x3c03ab={};_0x3c03ab[_0x2d9d81[_0x6953('0x28')]]={'$like':'%'+_0x4af39d['query']['filter']+'%'};return _0x3c03ab;}})});}_0x3b1175=_[_0x6953('0x3a')]({},_0x3b1175,_0x4af39d['options']);var _0x5abaf2={'where':_0x3b1175[_0x6953('0x39')]};return db[_0x6953('0x2b')]['count'](_0x5abaf2)[_0x6953('0x3c')](function(_0x263728){_0x4b0325[_0x6953('0x21')]=_0x263728;if(_0x4af39d[_0x6953('0x2e')][_0x6953('0x3d')]){_0x3b1175[_0x6953('0x3e')]=[{'all':!![]}];}return db['MailQueueReport'][_0x6953('0x3f')](_0x3b1175);})[_0x6953('0x3c')](function(_0x30a27a){_0x4b0325[_0x6953('0x40')]=_0x30a27a;return _0x4b0325;})[_0x6953('0x3c')](respondWithFilteredResult(_0x173b3c,_0x3b1175))[_0x6953('0x41')](handleError(_0x173b3c,null));};exports['show']=function(_0x5a40de,_0xeef91a){var _0x54d7c2={'raw':!![],'where':{'id':_0x5a40de[_0x6953('0x42')]['id']}},_0x588ff8={};_0x588ff8[_0x6953('0x2d')]=_[_0x6953('0x2f')](db[_0x6953('0x2b')][_0x6953('0x43')]);_0x588ff8['query']=_['keys'](_0x5a40de[_0x6953('0x2e')]);_0x588ff8[_0x6953('0x30')]=_['intersection'](_0x588ff8[_0x6953('0x2d')],_0x588ff8['query']);_0x54d7c2[_0x6953('0x32')]=_[_0x6953('0x44')](_0x588ff8[_0x6953('0x2d')],qs[_0x6953('0x31')](_0x5a40de['query'][_0x6953('0x31')]));_0x54d7c2[_0x6953('0x32')]=_0x54d7c2['attributes'][_0x6953('0x45')]?_0x54d7c2[_0x6953('0x32')]:_0x588ff8[_0x6953('0x2d')];if(_0x5a40de[_0x6953('0x2e')][_0x6953('0x3d')]){_0x54d7c2[_0x6953('0x3e')]=[{'all':!![]}];}_0x54d7c2=_[_0x6953('0x3a')]({},_0x54d7c2,_0x5a40de[_0x6953('0x46')]);return db[_0x6953('0x2b')][_0x6953('0x47')](_0x54d7c2)[_0x6953('0x3c')](handleEntityNotFound(_0xeef91a,null))['then'](respondWithResult(_0xeef91a,null))[_0x6953('0x41')](handleError(_0xeef91a,null));};exports['create']=function(_0x15c142,_0x1d5979){return db[_0x6953('0x2b')]['create'](_0x15c142[_0x6953('0x48')],{})[_0x6953('0x3c')](respondWithResult(_0x1d5979,0xc9))['catch'](handleError(_0x1d5979,null));};exports['update']=function(_0xbf5b61,_0x265b44){if(_0xbf5b61[_0x6953('0x48')]['id']){delete _0xbf5b61[_0x6953('0x48')]['id'];}return db[_0x6953('0x2b')][_0x6953('0x47')]({'where':{'id':_0xbf5b61[_0x6953('0x42')]['id']}})[_0x6953('0x3c')](handleEntityNotFound(_0x265b44,null))[_0x6953('0x3c')](saveUpdates(_0xbf5b61[_0x6953('0x48')],null))[_0x6953('0x3c')](respondWithResult(_0x265b44,null))['catch'](handleError(_0x265b44,null));};exports['destroy']=function(_0x14a7bf,_0x38e3e8){return db[_0x6953('0x2b')][_0x6953('0x47')]({'where':{'id':_0x14a7bf[_0x6953('0x42')]['id']}})[_0x6953('0x3c')](handleEntityNotFound(_0x38e3e8,null))[_0x6953('0x3c')](removeEntity(_0x38e3e8,null))[_0x6953('0x41')](handleError(_0x38e3e8,null));};exports[_0x6953('0x49')]=function(_0x50b962,_0x5f15b0){return db['MailQueueReport']['describe']()[_0x6953('0x3c')](respondWithResult(_0x5f15b0,null))[_0x6953('0x41')](handleError(_0x5f15b0,null));};
\ No newline at end of file
+var _0x056b=['fieldName','type','model','map','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','show','params','find','catch','create','body','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','count','limit','Content-Range','save','update','then','destroy','error','stack','name','send','MailQueueReport','rawAttributes'];(function(_0xea8181,_0x426b99){var _0x431059=function(_0x3dc24f){while(--_0x3dc24f){_0xea8181['push'](_0xea8181['shift']());}};_0x431059(++_0x426b99);}(_0x056b,0xb6));var _0xb056=function(_0x4cf628,_0x56c30f){_0x4cf628=_0x4cf628-0x0;var _0x44d7f3=_0x056b[_0x4cf628];return _0x44d7f3;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb056('0x0'));var zipdir=require(_0xb056('0x1'));var jsonpatch=require(_0xb056('0x2'));var rp=require(_0xb056('0x3'));var moment=require(_0xb056('0x4'));var BPromise=require(_0xb056('0x5'));var Mustache=require(_0xb056('0x6'));var util=require(_0xb056('0x7'));var path=require(_0xb056('0x8'));var sox=require(_0xb056('0x9'));var csv=require(_0xb056('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb056('0xb'));var _=require(_0xb056('0xc'));var squel=require(_0xb056('0xd'));var crypto=require(_0xb056('0xe'));var jsforce=require(_0xb056('0xf'));var deskjs=require(_0xb056('0x10'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xb056('0x11'));var Redis=require(_0xb056('0x12'));var authService=require(_0xb056('0x13'));var qs=require(_0xb056('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xb056('0x15'));var logger=require('../../config/logger')(_0xb056('0x16'));var utils=require(_0xb056('0x17'));var config=require(_0xb056('0x18'));var licenseUtil=require(_0xb056('0x19'));var db=require(_0xb056('0x1a'))['db'];function respondWithStatusCode(_0x5d8306,_0x49c5ec){_0x49c5ec=_0x49c5ec||0xcc;return function(_0xf3e80f){if(_0xf3e80f){return _0x5d8306[_0xb056('0x1b')](_0x49c5ec);}return _0x5d8306['status'](_0x49c5ec)[_0xb056('0x1c')]();};}function respondWithResult(_0x34611b,_0xf1c2e9){_0xf1c2e9=_0xf1c2e9||0xc8;return function(_0x1197e5){if(_0x1197e5){return _0x34611b[_0xb056('0x1d')](_0xf1c2e9)[_0xb056('0x1e')](_0x1197e5);}};}function respondWithFilteredResult(_0x179e49,_0x4b838e){return function(_0x162146){if(_0x162146){var _0x43565e=typeof _0x4b838e[_0xb056('0x1f')]===_0xb056('0x20')&&typeof _0x4b838e['limit']===_0xb056('0x20');var _0x4e501a=_0x162146[_0xb056('0x21')];var _0x311eb9=_0x43565e?0x0:_0x4b838e['offset'];var _0x29c77e=_0x43565e?_0x162146['count']:_0x4b838e[_0xb056('0x1f')]+_0x4b838e[_0xb056('0x22')];var _0x5e4bd9;if(_0x29c77e>=_0x4e501a){_0x29c77e=_0x4e501a;_0x5e4bd9=0xc8;}else{_0x5e4bd9=0xce;}_0x179e49[_0xb056('0x1d')](_0x5e4bd9);return _0x179e49['set'](_0xb056('0x23'),_0x311eb9+'-'+_0x29c77e+'/'+_0x4e501a)[_0xb056('0x1e')](_0x162146);}return null;};}function patchUpdates(_0x457b54){return function(_0x33dd35){try{jsonpatch['apply'](_0x33dd35,_0x457b54,!![]);}catch(_0x1db585){return BPromise['reject'](_0x1db585);}return _0x33dd35[_0xb056('0x24')]();};}function saveUpdates(_0x5dea90,_0x324ce6){return function(_0x40ac2d){if(_0x40ac2d){return _0x40ac2d[_0xb056('0x25')](_0x5dea90)[_0xb056('0x26')](function(_0x36e539){return _0x36e539;});}return null;};}function removeEntity(_0x4bb6c0,_0x4e66c3){return function(_0x1016da){if(_0x1016da){return _0x1016da[_0xb056('0x27')]()[_0xb056('0x26')](function(){_0x4bb6c0[_0xb056('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x44a14f,_0x10b9b3){return function(_0x5c39db){if(!_0x5c39db){_0x44a14f[_0xb056('0x1b')](0x194);}return _0x5c39db;};}function handleError(_0x265782,_0x2ae873){_0x2ae873=_0x2ae873||0x1f4;return function(_0x1d2c66){logger[_0xb056('0x28')](_0x1d2c66[_0xb056('0x29')]);if(_0x1d2c66[_0xb056('0x2a')]){delete _0x1d2c66[_0xb056('0x2a')];}_0x265782['status'](_0x2ae873)[_0xb056('0x2b')](_0x1d2c66);};}exports['index']=function(_0x3d83d3,_0x9c6f4a){var _0x294874={},_0x488185={},_0xd53267={'count':0x0,'rows':[]};var _0x264569=_['map'](db[_0xb056('0x2c')][_0xb056('0x2d')],function(_0x329eaa){return{'name':_0x329eaa[_0xb056('0x2e')],'type':_0x329eaa[_0xb056('0x2f')]['key']};});_0x488185[_0xb056('0x30')]=_[_0xb056('0x31')](_0x264569,_0xb056('0x2a'));_0x488185[_0xb056('0x32')]=_[_0xb056('0x33')](_0x3d83d3['query']);_0x488185[_0xb056('0x34')]=_[_0xb056('0x35')](_0x488185[_0xb056('0x30')],_0x488185[_0xb056('0x32')]);_0x294874[_0xb056('0x36')]=_[_0xb056('0x35')](_0x488185[_0xb056('0x30')],qs[_0xb056('0x37')](_0x3d83d3['query'][_0xb056('0x37')]));_0x294874['attributes']=_0x294874[_0xb056('0x36')]['length']?_0x294874['attributes']:_0x488185[_0xb056('0x30')];if(!_0x3d83d3[_0xb056('0x32')][_0xb056('0x38')](_0xb056('0x39'))){_0x294874[_0xb056('0x22')]=qs[_0xb056('0x22')](_0x3d83d3[_0xb056('0x32')]['limit']);_0x294874[_0xb056('0x1f')]=qs[_0xb056('0x1f')](_0x3d83d3['query']['offset']);}_0x294874[_0xb056('0x3a')]=qs[_0xb056('0x3b')](_0x3d83d3[_0xb056('0x32')]['sort']);_0x294874[_0xb056('0x3c')]=qs[_0xb056('0x34')](_[_0xb056('0x3d')](_0x3d83d3[_0xb056('0x32')],_0x488185[_0xb056('0x34')]),_0x264569);if(_0x3d83d3[_0xb056('0x32')][_0xb056('0x3e')]){_0x294874[_0xb056('0x3c')]=_[_0xb056('0x3f')](_0x294874[_0xb056('0x3c')],{'$or':_[_0xb056('0x31')](_0x264569,function(_0x1afc7f){if(_0x1afc7f['type']!==_0xb056('0x40')){var _0x4acc94={};_0x4acc94[_0x1afc7f[_0xb056('0x2a')]]={'$like':'%'+_0x3d83d3[_0xb056('0x32')][_0xb056('0x3e')]+'%'};return _0x4acc94;}})});}_0x294874=_[_0xb056('0x3f')]({},_0x294874,_0x3d83d3[_0xb056('0x41')]);var _0x661784={'where':_0x294874[_0xb056('0x3c')]};return db[_0xb056('0x2c')]['count'](_0x661784)[_0xb056('0x26')](function(_0x21a34b){_0xd53267[_0xb056('0x21')]=_0x21a34b;if(_0x3d83d3[_0xb056('0x32')][_0xb056('0x42')]){_0x294874['include']=[{'all':!![]}];}return db[_0xb056('0x2c')][_0xb056('0x43')](_0x294874);})[_0xb056('0x26')](function(_0x216f72){_0xd53267[_0xb056('0x44')]=_0x216f72;return _0xd53267;})[_0xb056('0x26')](respondWithFilteredResult(_0x9c6f4a,_0x294874))['catch'](handleError(_0x9c6f4a,null));};exports[_0xb056('0x45')]=function(_0x5040f6,_0x3bcc3d){var _0xc729f3={'raw':!![],'where':{'id':_0x5040f6[_0xb056('0x46')]['id']}},_0x21d98e={};_0x21d98e[_0xb056('0x30')]=_[_0xb056('0x33')](db[_0xb056('0x2c')][_0xb056('0x2d')]);_0x21d98e[_0xb056('0x32')]=_[_0xb056('0x33')](_0x5040f6['query']);_0x21d98e[_0xb056('0x34')]=_[_0xb056('0x35')](_0x21d98e[_0xb056('0x30')],_0x21d98e['query']);_0xc729f3[_0xb056('0x36')]=_[_0xb056('0x35')](_0x21d98e['model'],qs['fields'](_0x5040f6[_0xb056('0x32')][_0xb056('0x37')]));_0xc729f3[_0xb056('0x36')]=_0xc729f3[_0xb056('0x36')]['length']?_0xc729f3['attributes']:_0x21d98e['model'];if(_0x5040f6['query']['includeAll']){_0xc729f3['include']=[{'all':!![]}];}_0xc729f3=_[_0xb056('0x3f')]({},_0xc729f3,_0x5040f6['options']);return db[_0xb056('0x2c')][_0xb056('0x47')](_0xc729f3)[_0xb056('0x26')](handleEntityNotFound(_0x3bcc3d,null))[_0xb056('0x26')](respondWithResult(_0x3bcc3d,null))[_0xb056('0x48')](handleError(_0x3bcc3d,null));};exports[_0xb056('0x49')]=function(_0x45b4aa,_0x1d3f86){return db['MailQueueReport'][_0xb056('0x49')](_0x45b4aa[_0xb056('0x4a')],{})['then'](respondWithResult(_0x1d3f86,0xc9))[_0xb056('0x48')](handleError(_0x1d3f86,null));};exports[_0xb056('0x25')]=function(_0xe40439,_0x2f2d22){if(_0xe40439[_0xb056('0x4a')]['id']){delete _0xe40439[_0xb056('0x4a')]['id'];}return db['MailQueueReport'][_0xb056('0x47')]({'where':{'id':_0xe40439['params']['id']}})[_0xb056('0x26')](handleEntityNotFound(_0x2f2d22,null))[_0xb056('0x26')](saveUpdates(_0xe40439[_0xb056('0x4a')],null))[_0xb056('0x26')](respondWithResult(_0x2f2d22,null))[_0xb056('0x48')](handleError(_0x2f2d22,null));};exports[_0xb056('0x27')]=function(_0x2b6733,_0x25bb16){return db['MailQueueReport'][_0xb056('0x47')]({'where':{'id':_0x2b6733[_0xb056('0x46')]['id']}})[_0xb056('0x26')](handleEntityNotFound(_0x25bb16,null))[_0xb056('0x26')](removeEntity(_0x25bb16,null))[_0xb056('0x48')](handleError(_0x25bb16,null));};exports[_0xb056('0x4b')]=function(_0x3de967,_0x43fb4a){return db['MailQueueReport'][_0xb056('0x4b')]()[_0xb056('0x26')](respondWithResult(_0x43fb4a,null))[_0xb056('0x48')](handleError(_0x43fb4a,null));};
\ No newline at end of file
index 1c5ed3f..d44ee1f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5434=['path','rimraf','../../config/environment','./mailQueueReport.attributes','exports','define','MailQueueReport','report_mail_queue','uniqueid','util','../../config/logger','api','bluebird','request-promise'];(function(_0x5865ec,_0xf3b75c){var _0x92880b=function(_0x90edfc){while(--_0x90edfc){_0x5865ec['push'](_0x5865ec['shift']());}};_0x92880b(++_0xf3b75c);}(_0x5434,0x105));var _0x4543=function(_0x6bb91e,_0x2491da){_0x6bb91e=_0x6bb91e-0x0;var _0x5bc507=_0x5434[_0x6bb91e];return _0x5bc507;};'use strict';var _=require('lodash');var util=require(_0x4543('0x0'));var logger=require(_0x4543('0x1'))(_0x4543('0x2'));var moment=require('moment');var BPromise=require(_0x4543('0x3'));var rp=require(_0x4543('0x4'));var fs=require('fs');var path=require(_0x4543('0x5'));var rimraf=require(_0x4543('0x6'));var config=require(_0x4543('0x7'));var attributes=require(_0x4543('0x8'));module[_0x4543('0x9')]=function(_0x517c1e,_0x264030){return _0x517c1e[_0x4543('0xa')](_0x4543('0xb'),attributes,{'tableName':_0x4543('0xc'),'paranoid':![],'indexes':[{'name':_0x4543('0xd'),'fields':[_0x4543('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x9ade=['path','rimraf','../../config/environment','./mailQueueReport.attributes','exports','uniqueid','lodash','util','../../config/logger','api','bluebird','request-promise'];(function(_0x4cf98e,_0xba4b79){var _0x1623ac=function(_0x459bc0){while(--_0x459bc0){_0x4cf98e['push'](_0x4cf98e['shift']());}};_0x1623ac(++_0xba4b79);}(_0x9ade,0xde));var _0xe9ad=function(_0x5a4ad5,_0x4d83a7){_0x5a4ad5=_0x5a4ad5-0x0;var _0x44ebda=_0x9ade[_0x5a4ad5];return _0x44ebda;};'use strict';var _=require(_0xe9ad('0x0'));var util=require(_0xe9ad('0x1'));var logger=require(_0xe9ad('0x2'))(_0xe9ad('0x3'));var moment=require('moment');var BPromise=require(_0xe9ad('0x4'));var rp=require(_0xe9ad('0x5'));var fs=require('fs');var path=require(_0xe9ad('0x6'));var rimraf=require(_0xe9ad('0x7'));var config=require(_0xe9ad('0x8'));var attributes=require(_0xe9ad('0x9'));module[_0xe9ad('0xa')]=function(_0x2a60ac,_0x42f892){return _0x2a60ac['define']('MailQueueReport',attributes,{'tableName':'report_mail_queue','paranoid':![],'indexes':[{'name':_0xe9ad('0xb'),'fields':[_0xe9ad('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 647a72e..32c33b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326f=['error','code','message','result','catch','CreateMailQueueReport','MailQueueReport','options','raw','stringify','UpdateMailQueueReport','body','attributes','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','info','MailQueueReport,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x837787,_0x3fe7bd){var _0x4d111f=function(_0x508a40){while(--_0x508a40){_0x837787['push'](_0x837787['shift']());}};_0x4d111f(++_0x3fe7bd);}(_0x326f,0xd1));var _0xf326=function(_0x2f2a5f,_0x49a2ec){_0x2f2a5f=_0x2f2a5f-0x0;var _0x5bcbbf=_0x326f[_0x2f2a5f];return _0x5bcbbf;};'use strict';var _=require(_0xf326('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xf326('0x1'));var rs=require(_0xf326('0x2'));var fs=require('fs');var Redis=require(_0xf326('0x3'));var db=require(_0xf326('0x4'))['db'];var utils=require(_0xf326('0x5'));var logger=require(_0xf326('0x6'))(_0xf326('0x7'));var config=require(_0xf326('0x8'));var jayson=require(_0xf326('0x9'));var client=jayson[_0xf326('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3c254d,_0x3851eb,_0x165f95){return new BPromise(function(_0x1e7b8a,_0x515bfa){return client['request'](_0x3c254d,_0x165f95)['then'](function(_0x3bacf2){logger[_0xf326('0xb')](_0xf326('0xc'),_0x3851eb,_0xf326('0xd'));logger[_0xf326('0xe')]('MailQueueReport,\x20%s,\x20%s,\x20%s',_0x3851eb,_0xf326('0xd'),JSON['stringify'](_0x3bacf2));if(_0x3bacf2[_0xf326('0xf')]){if(_0x3bacf2['error'][_0xf326('0x10')]===0x1f4){logger['error'](_0xf326('0xc'),_0x3851eb,_0x3bacf2[_0xf326('0xf')]['message']);return _0x515bfa(_0x3bacf2[_0xf326('0xf')][_0xf326('0x11')]);}logger[_0xf326('0xf')](_0xf326('0xc'),_0x3851eb,_0x3bacf2['error'][_0xf326('0x11')]);return _0x1e7b8a(_0x3bacf2['error']['message']);}else{logger[_0xf326('0xb')](_0xf326('0xc'),_0x3851eb,_0xf326('0xd'));_0x1e7b8a(_0x3bacf2[_0xf326('0x12')][_0xf326('0x11')]);}})[_0xf326('0x13')](function(_0x34128e){logger[_0xf326('0xf')]('MailQueueReport,\x20%s,\x20%s',_0x3851eb,_0x34128e);_0x515bfa(_0x34128e);});});}exports[_0xf326('0x14')]=function(_0x453100){var _0x18bee3=this;return new Promise(function(_0x31ffb9,_0xcef2b5){return db[_0xf326('0x15')]['create'](_0x453100['body'],{'raw':_0x453100['options']?_0x453100[_0xf326('0x16')][_0xf326('0x17')]===undefined?!![]:![]:!![]})['then'](function(_0x4cabce){logger[_0xf326('0xb')]('CreateMailQueueReport',_0x453100);logger['debug'](_0xf326('0x14'),_0x453100,JSON[_0xf326('0x18')](_0x4cabce));_0x31ffb9(_0x4cabce);})['catch'](function(_0x5aa184){logger[_0xf326('0xf')](_0xf326('0x14'),_0x5aa184['message'],_0x453100);_0xcef2b5(_0x18bee3[_0xf326('0xf')](0x1f4,_0x5aa184[_0xf326('0x11')]));});});};exports[_0xf326('0x19')]=function(_0x295752){var _0x17c157=this;return new Promise(function(_0x2049ec,_0x5ce532){return db['MailQueueReport']['update'](_0x295752[_0xf326('0x1a')],{'raw':_0x295752[_0xf326('0x16')]?_0x295752[_0xf326('0x16')][_0xf326('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x295752[_0xf326('0x16')]?_0x295752[_0xf326('0x16')]['where']||null:null,'attributes':_0x295752[_0xf326('0x16')]?_0x295752[_0xf326('0x16')][_0xf326('0x1b')]||null:null,'limit':_0x295752['options']?_0x295752[_0xf326('0x16')]['limit']||null:null})['then'](function(_0x6a8e89){logger[_0xf326('0xb')](_0xf326('0x19'),_0x295752);logger['debug'](_0xf326('0x19'),_0x295752,JSON[_0xf326('0x18')](_0x6a8e89));_0x2049ec(_0x6a8e89);})['catch'](function(_0x225776){logger[_0xf326('0xf')](_0xf326('0x19'),_0x225776[_0xf326('0x11')],_0x295752);_0x5ce532(_0x17c157[_0xf326('0xf')](0x1f4,_0x225776[_0xf326('0x11')]));});});};
\ No newline at end of file
+var _0xadb5=['MailQueueReport,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','CreateMailQueueReport','create','options','raw','debug','MailQueueReport','body','attributes','limit','UpdateMailQueueReport','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info'];(function(_0x2e66ed,_0xa99908){var _0x39e72c=function(_0x4ff710){while(--_0x4ff710){_0x2e66ed['push'](_0x2e66ed['shift']());}};_0x39e72c(++_0xa99908);}(_0xadb5,0xad));var _0x5adb=function(_0x2ed98e,_0x2b170a){_0x2ed98e=_0x2ed98e-0x0;var _0xb91ce6=_0xadb5[_0x2ed98e];return _0xb91ce6;};'use strict';var _=require('lodash');var util=require(_0x5adb('0x0'));var moment=require('moment');var BPromise=require(_0x5adb('0x1'));var rs=require(_0x5adb('0x2'));var fs=require('fs');var Redis=require(_0x5adb('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x5adb('0x4'));var logger=require(_0x5adb('0x5'))(_0x5adb('0x6'));var config=require('../../config/environment');var jayson=require(_0x5adb('0x7'));var client=jayson[_0x5adb('0x8')][_0x5adb('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3213e8,_0xdf3776,_0x353885){return new BPromise(function(_0x47228a,_0x6d1b45){return client[_0x5adb('0xa')](_0x3213e8,_0x353885)[_0x5adb('0xb')](function(_0x34f59d){logger[_0x5adb('0xc')](_0x5adb('0xd'),_0xdf3776,_0x5adb('0xe'));logger['debug']('MailQueueReport,\x20%s,\x20%s,\x20%s',_0xdf3776,_0x5adb('0xe'),JSON[_0x5adb('0xf')](_0x34f59d));if(_0x34f59d[_0x5adb('0x10')]){if(_0x34f59d['error'][_0x5adb('0x11')]===0x1f4){logger['error'](_0x5adb('0xd'),_0xdf3776,_0x34f59d['error'][_0x5adb('0x12')]);return _0x6d1b45(_0x34f59d[_0x5adb('0x10')][_0x5adb('0x12')]);}logger['error'](_0x5adb('0xd'),_0xdf3776,_0x34f59d[_0x5adb('0x10')][_0x5adb('0x12')]);return _0x47228a(_0x34f59d['error'][_0x5adb('0x12')]);}else{logger['info'](_0x5adb('0xd'),_0xdf3776,_0x5adb('0xe'));_0x47228a(_0x34f59d[_0x5adb('0x13')][_0x5adb('0x12')]);}})[_0x5adb('0x14')](function(_0x39d24d){logger[_0x5adb('0x10')](_0x5adb('0xd'),_0xdf3776,_0x39d24d);_0x6d1b45(_0x39d24d);});});}exports[_0x5adb('0x15')]=function(_0x529b65){var _0x3fff62=this;return new Promise(function(_0x5de028,_0x1d9e86){return db['MailQueueReport'][_0x5adb('0x16')](_0x529b65['body'],{'raw':_0x529b65['options']?_0x529b65[_0x5adb('0x17')][_0x5adb('0x18')]===undefined?!![]:![]:!![]})[_0x5adb('0xb')](function(_0x1fd4a7){logger[_0x5adb('0xc')]('CreateMailQueueReport',_0x529b65);logger[_0x5adb('0x19')]('CreateMailQueueReport',_0x529b65,JSON['stringify'](_0x1fd4a7));_0x5de028(_0x1fd4a7);})[_0x5adb('0x14')](function(_0x379b33){logger[_0x5adb('0x10')](_0x5adb('0x15'),_0x379b33[_0x5adb('0x12')],_0x529b65);_0x1d9e86(_0x3fff62[_0x5adb('0x10')](0x1f4,_0x379b33[_0x5adb('0x12')]));});});};exports['UpdateMailQueueReport']=function(_0x4b1957){var _0x373cc3=this;return new Promise(function(_0x3220cd,_0x3839fb){return db[_0x5adb('0x1a')]['update'](_0x4b1957[_0x5adb('0x1b')],{'raw':_0x4b1957[_0x5adb('0x17')]?_0x4b1957['options'][_0x5adb('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4b1957[_0x5adb('0x17')]?_0x4b1957[_0x5adb('0x17')]['where']||null:null,'attributes':_0x4b1957[_0x5adb('0x17')]?_0x4b1957[_0x5adb('0x17')][_0x5adb('0x1c')]||null:null,'limit':_0x4b1957[_0x5adb('0x17')]?_0x4b1957[_0x5adb('0x17')][_0x5adb('0x1d')]||null:null})['then'](function(_0x49992e){logger['info'](_0x5adb('0x1e'),_0x4b1957);logger[_0x5adb('0x19')](_0x5adb('0x1e'),_0x4b1957,JSON[_0x5adb('0xf')](_0x49992e));_0x3220cd(_0x49992e);})[_0x5adb('0x14')](function(_0x4de310){logger[_0x5adb('0x10')](_0x5adb('0x1e'),_0x4de310[_0x5adb('0x12')],_0x4b1957);_0x3839fb(_0x373cc3[_0x5adb('0x10')](0x1f4,_0x4de310[_0x5adb('0x12')]));});});};
\ No newline at end of file
index 8ccd77c..b4b43b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x411dc0,_0x1d46d6){var _0x208d5f=function(_0x3bdc09){while(--_0x3bdc09){_0x411dc0['push'](_0x411dc0['shift']());}};_0x208d5f(++_0x1d46d6);}(_0xe706,0xa3));var _0x6e70=function(_0x469d01,_0x18c899){_0x469d01=_0x469d01-0x0;var _0x5078d3=_0xe706[_0x469d01];return _0x5078d3;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));module[_0x6e70('0x9')]=router;
\ No newline at end of file
+var _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x2315e5,_0x198531){var _0x25ec95=function(_0x143d1f){while(--_0x143d1f){_0x2315e5['push'](_0x2315e5['shift']());}};_0x25ec95(++_0x198531);}(_0xe706,0xa3));var _0x6e70=function(_0x111692,_0x19f8a9){_0x111692=_0x111692-0x0;var _0x11836f=_0xe706[_0x111692];return _0x11836f;};'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 3ce5a37..71eea0b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c5b=['INTEGER','BOOLEAN','INBOX','exports','STRING'];(function(_0x5a8fad,_0x3feb4f){var _0x2791d8=function(_0x2987c6){while(--_0x2987c6){_0x5a8fad['push'](_0x5a8fad['shift']());}};_0x2791d8(++_0x3feb4f);}(_0x9c5b,0x9e));var _0xb9c5=function(_0x2ec554,_0x769518){_0x2ec554=_0x2ec554-0x0;var _0xc40219=_0x9c5b[_0x2ec554];return _0xc40219;};'use strict';var Sequelize=require('sequelize');module[_0xb9c5('0x0')]={'description':{'type':Sequelize[_0xb9c5('0x1')]},'host':{'type':Sequelize['STRING']},'authentication':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'user':{'type':Sequelize['STRING']},'password':{'type':Sequelize[_0xb9c5('0x1')]},'port':{'type':Sequelize[_0xb9c5('0x2')]},'tls':{'type':Sequelize[_0xb9c5('0x3')],'defaultValue':!![]},'mailbox':{'type':Sequelize[_0xb9c5('0x1')],'defaultValue':_0xb9c5('0x4')},'connTimeout':{'type':Sequelize[_0xb9c5('0x2')],'defaultValue':0xa},'authTimeout':{'type':Sequelize[_0xb9c5('0x2')],'defaultValue':0x5},'service':{'type':Sequelize[_0xb9c5('0x1')]},'modernAuthentication':{'type':Sequelize[_0xb9c5('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0x5329=['STRING','INTEGER','BOOLEAN','INBOX','sequelize','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5329,0x130));var _0x9532=function(_0x5073cb,_0x2ddda3){_0x5073cb=_0x5073cb-0x0;var _0x2890b0=_0x5329[_0x5073cb];return _0x2890b0;};'use strict';var Sequelize=require(_0x9532('0x0'));module[_0x9532('0x1')]={'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0x9532('0x2')]},'authentication':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'user':{'type':Sequelize[_0x9532('0x2')]},'password':{'type':Sequelize[_0x9532('0x2')]},'port':{'type':Sequelize[_0x9532('0x3')]},'tls':{'type':Sequelize[_0x9532('0x4')],'defaultValue':!![]},'mailbox':{'type':Sequelize[_0x9532('0x2')],'defaultValue':_0x9532('0x5')},'connTimeout':{'type':Sequelize[_0x9532('0x3')],'defaultValue':0xa},'authTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x5},'service':{'type':Sequelize[_0x9532('0x2')]},'modernAuthentication':{'type':Sequelize[_0x9532('0x4')],'defaultValue':![]}};
\ No newline at end of file
index d889232..3847bc4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x49b2=['lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./mailServerIn.attributes','exports','define','mail_servers_in'];(function(_0x173441,_0x26b0d9){var _0x2423a8=function(_0x4d96c2){while(--_0x4d96c2){_0x173441['push'](_0x173441['shift']());}};_0x2423a8(++_0x26b0d9);}(_0x49b2,0x15f));var _0x249b=function(_0xf2d1c2,_0x282179){_0xf2d1c2=_0xf2d1c2-0x0;var _0x7c7a39=_0x49b2[_0xf2d1c2];return _0x7c7a39;};'use strict';var _=require(_0x249b('0x0'));var util=require(_0x249b('0x1'));var logger=require('../../config/logger')(_0x249b('0x2'));var moment=require(_0x249b('0x3'));var BPromise=require(_0x249b('0x4'));var rp=require(_0x249b('0x5'));var fs=require('fs');var path=require(_0x249b('0x6'));var rimraf=require(_0x249b('0x7'));var config=require(_0x249b('0x8'));var attributes=require(_0x249b('0x9'));module[_0x249b('0xa')]=function(_0x5f5b75,_0x5421a6){return _0x5f5b75[_0x249b('0xb')]('MailServerIn',attributes,{'tableName':_0x249b('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xdc10=['rimraf','../../config/environment','define','MailServerIn','mail_servers_in','lodash','util','bluebird','request-promise'];(function(_0x5a3cf0,_0x160a68){var _0x5a64ee=function(_0x34cd1d){while(--_0x34cd1d){_0x5a3cf0['push'](_0x5a3cf0['shift']());}};_0x5a64ee(++_0x160a68);}(_0xdc10,0xa7));var _0x0dc1=function(_0x88cd7b,_0x4c884c){_0x88cd7b=_0x88cd7b-0x0;var _0x56fcc8=_0xdc10[_0x88cd7b];return _0x56fcc8;};'use strict';var _=require(_0x0dc1('0x0'));var util=require(_0x0dc1('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x0dc1('0x2'));var rp=require(_0x0dc1('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0dc1('0x4'));var config=require(_0x0dc1('0x5'));var attributes=require('./mailServerIn.attributes');module['exports']=function(_0x549cac,_0x4469cf){return _0x549cac[_0x0dc1('0x6')](_0x0dc1('0x7'),attributes,{'tableName':_0x0dc1('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3f21d6e..3fbdf3d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad9c=['model','debug','catch','lodash','util','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','then','info','MailServerIn,\x20%s,\x20%s','request\x20sent','MailServerIn,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','GetMailServerIn','MailServerIn','options','raw','where','attributes','limit','include','map'];(function(_0x151334,_0x1e11ac){var _0x3d03da=function(_0x2099cf){while(--_0x2099cf){_0x151334['push'](_0x151334['shift']());}};_0x3d03da(++_0x1e11ac);}(_0xad9c,0x143));var _0xcad9=function(_0x39fced,_0x52380d){_0x39fced=_0x39fced-0x0;var _0x3e04ef=_0xad9c[_0x39fced];return _0x3e04ef;};'use strict';var _=require(_0xcad9('0x0'));var util=require(_0xcad9('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xcad9('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xcad9('0x3'))['db'];var utils=require(_0xcad9('0x4'));var logger=require(_0xcad9('0x5'))(_0xcad9('0x6'));var config=require(_0xcad9('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0xcad9('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x24f293,_0x4d05fb,_0x33fb03){return new BPromise(function(_0xbe0448,_0x26a398){return client[_0xcad9('0x9')](_0x24f293,_0x33fb03)[_0xcad9('0xa')](function(_0x11cdc2){logger[_0xcad9('0xb')](_0xcad9('0xc'),_0x4d05fb,_0xcad9('0xd'));logger['debug'](_0xcad9('0xe'),_0x4d05fb,_0xcad9('0xd'),JSON[_0xcad9('0xf')](_0x11cdc2));if(_0x11cdc2[_0xcad9('0x10')]){if(_0x11cdc2['error'][_0xcad9('0x11')]===0x1f4){logger['error']('MailServerIn,\x20%s,\x20%s',_0x4d05fb,_0x11cdc2[_0xcad9('0x10')][_0xcad9('0x12')]);return _0x26a398(_0x11cdc2[_0xcad9('0x10')][_0xcad9('0x12')]);}logger[_0xcad9('0x10')](_0xcad9('0xc'),_0x4d05fb,_0x11cdc2['error'][_0xcad9('0x12')]);return _0xbe0448(_0x11cdc2[_0xcad9('0x10')][_0xcad9('0x12')]);}else{logger['info'](_0xcad9('0xc'),_0x4d05fb,_0xcad9('0xd'));_0xbe0448(_0x11cdc2[_0xcad9('0x13')][_0xcad9('0x12')]);}})['catch'](function(_0x33f829){logger['error']('MailServerIn,\x20%s,\x20%s',_0x4d05fb,_0x33f829);_0x26a398(_0x33f829);});});}exports[_0xcad9('0x14')]=function(_0x30e48d){var _0x5c74cf=this;return new Promise(function(_0x1a4a62,_0x19547d){return db[_0xcad9('0x15')]['findAll']({'raw':_0x30e48d[_0xcad9('0x16')]?_0x30e48d[_0xcad9('0x16')][_0xcad9('0x17')]===undefined?!![]:![]:!![],'where':_0x30e48d[_0xcad9('0x16')]?_0x30e48d['options'][_0xcad9('0x18')]||null:null,'attributes':_0x30e48d[_0xcad9('0x16')]?_0x30e48d[_0xcad9('0x16')][_0xcad9('0x19')]||null:null,'limit':_0x30e48d[_0xcad9('0x16')]?_0x30e48d['options'][_0xcad9('0x1a')]||null:null,'include':_0x30e48d['options']?_0x30e48d[_0xcad9('0x16')][_0xcad9('0x1b')]?_[_0xcad9('0x1c')](_0x30e48d['options'][_0xcad9('0x1b')],function(_0x3ab390){return{'model':db[_0x3ab390[_0xcad9('0x1d')]],'as':_0x3ab390['as'],'attributes':_0x3ab390['attributes'],'include':_0x3ab390[_0xcad9('0x1b')]?_[_0xcad9('0x1c')](_0x3ab390[_0xcad9('0x1b')],function(_0x4e45de){return{'model':db[_0x4e45de[_0xcad9('0x1d')]],'as':_0x4e45de['as'],'attributes':_0x4e45de[_0xcad9('0x19')],'include':_0x4e45de[_0xcad9('0x1b')]?_[_0xcad9('0x1c')](_0x4e45de['include'],function(_0x3db40a){return{'model':db[_0x3db40a[_0xcad9('0x1d')]],'as':_0x3db40a['as'],'attributes':_0x3db40a[_0xcad9('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x43de88){logger['info'](_0xcad9('0x14'),_0x30e48d);logger[_0xcad9('0x1e')](_0xcad9('0x14'),_0x30e48d,JSON['stringify'](_0x43de88));_0x1a4a62(_0x43de88);})[_0xcad9('0x1f')](function(_0x2ba038){logger[_0xcad9('0x10')]('GetMailServerIn',_0x2ba038['message'],_0x30e48d);_0x19547d(_0x5c74cf[_0xcad9('0x10')](0x1f4,_0x2ba038[_0xcad9('0x12')]));});});};
\ No newline at end of file
+var _0x1cde=['result','catch','GetMailServerIn','findAll','options','raw','where','attributes','limit','include','map','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','MailServerIn,\x20%s,\x20%s','request\x20sent','debug','MailServerIn,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0xb89eab,_0x905eba){var _0x1706ba=function(_0x411ad4){while(--_0x411ad4){_0xb89eab['push'](_0xb89eab['shift']());}};_0x1706ba(++_0x905eba);}(_0x1cde,0x1e7));var _0xe1cd=function(_0x369fbb,_0x196fdb){_0x369fbb=_0x369fbb-0x0;var _0x8ac00a=_0x1cde[_0x369fbb];return _0x8ac00a;};'use strict';var _=require(_0xe1cd('0x0'));var util=require(_0xe1cd('0x1'));var moment=require(_0xe1cd('0x2'));var BPromise=require('bluebird');var rs=require(_0xe1cd('0x3'));var fs=require('fs');var Redis=require(_0xe1cd('0x4'));var db=require(_0xe1cd('0x5'))['db'];var utils=require(_0xe1cd('0x6'));var logger=require(_0xe1cd('0x7'))(_0xe1cd('0x8'));var config=require(_0xe1cd('0x9'));var jayson=require(_0xe1cd('0xa'));var client=jayson[_0xe1cd('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5205b5,_0x2acde7,_0x4567de){return new BPromise(function(_0x23006e,_0x1fd4cd){return client[_0xe1cd('0xc')](_0x5205b5,_0x4567de)[_0xe1cd('0xd')](function(_0x267f96){logger[_0xe1cd('0xe')](_0xe1cd('0xf'),_0x2acde7,_0xe1cd('0x10'));logger[_0xe1cd('0x11')](_0xe1cd('0x12'),_0x2acde7,_0xe1cd('0x10'),JSON[_0xe1cd('0x13')](_0x267f96));if(_0x267f96[_0xe1cd('0x14')]){if(_0x267f96[_0xe1cd('0x14')][_0xe1cd('0x15')]===0x1f4){logger['error']('MailServerIn,\x20%s,\x20%s',_0x2acde7,_0x267f96[_0xe1cd('0x14')]['message']);return _0x1fd4cd(_0x267f96['error'][_0xe1cd('0x16')]);}logger[_0xe1cd('0x14')]('MailServerIn,\x20%s,\x20%s',_0x2acde7,_0x267f96[_0xe1cd('0x14')][_0xe1cd('0x16')]);return _0x23006e(_0x267f96['error'][_0xe1cd('0x16')]);}else{logger['info'](_0xe1cd('0xf'),_0x2acde7,_0xe1cd('0x10'));_0x23006e(_0x267f96[_0xe1cd('0x17')]['message']);}})[_0xe1cd('0x18')](function(_0x294c3c){logger['error'](_0xe1cd('0xf'),_0x2acde7,_0x294c3c);_0x1fd4cd(_0x294c3c);});});}exports[_0xe1cd('0x19')]=function(_0x53dc0d){var _0x3177c9=this;return new Promise(function(_0x109ccf,_0x17aeca){return db['MailServerIn'][_0xe1cd('0x1a')]({'raw':_0x53dc0d[_0xe1cd('0x1b')]?_0x53dc0d[_0xe1cd('0x1b')][_0xe1cd('0x1c')]===undefined?!![]:![]:!![],'where':_0x53dc0d['options']?_0x53dc0d[_0xe1cd('0x1b')][_0xe1cd('0x1d')]||null:null,'attributes':_0x53dc0d['options']?_0x53dc0d[_0xe1cd('0x1b')][_0xe1cd('0x1e')]||null:null,'limit':_0x53dc0d[_0xe1cd('0x1b')]?_0x53dc0d[_0xe1cd('0x1b')][_0xe1cd('0x1f')]||null:null,'include':_0x53dc0d['options']?_0x53dc0d[_0xe1cd('0x1b')][_0xe1cd('0x20')]?_['map'](_0x53dc0d[_0xe1cd('0x1b')][_0xe1cd('0x20')],function(_0x3018ba){return{'model':db[_0x3018ba['model']],'as':_0x3018ba['as'],'attributes':_0x3018ba[_0xe1cd('0x1e')],'include':_0x3018ba['include']?_['map'](_0x3018ba[_0xe1cd('0x20')],function(_0x2c4dbf){return{'model':db[_0x2c4dbf['model']],'as':_0x2c4dbf['as'],'attributes':_0x2c4dbf['attributes'],'include':_0x2c4dbf[_0xe1cd('0x20')]?_[_0xe1cd('0x21')](_0x2c4dbf[_0xe1cd('0x20')],function(_0x49cfc3){return{'model':db[_0x49cfc3['model']],'as':_0x49cfc3['as'],'attributes':_0x49cfc3[_0xe1cd('0x1e')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x17a074){logger[_0xe1cd('0xe')](_0xe1cd('0x19'),_0x53dc0d);logger['debug'](_0xe1cd('0x19'),_0x53dc0d,JSON[_0xe1cd('0x13')](_0x17a074));_0x109ccf(_0x17a074);})[_0xe1cd('0x18')](function(_0x440a17){logger['error'](_0xe1cd('0x19'),_0x440a17['message'],_0x53dc0d);_0x17aeca(_0x3177c9[_0xe1cd('0x14')](0x1f4,_0x440a17['message']));});});};
\ No newline at end of file
index da8f99a..d8b866f 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(_0x139a3c,_0x4fc883){var _0x2b375b=function(_0x525dbf){while(--_0x525dbf){_0x139a3c['push'](_0x139a3c['shift']());}};_0x2b375b(++_0x4fc883);}(_0x9957,0x93));var _0x7995=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0x9957[_0x5ddb1c];return _0x354adc;};'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(_0x23e7c1,_0x35110c){var _0x1add43=function(_0x238918){while(--_0x238918){_0x23e7c1['push'](_0x23e7c1['shift']());}};_0x1add43(++_0x35110c);}(_0x9957,0x93));var _0x7995=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x9957[_0x3b380d];return _0x54502b;};'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 becdba9..76b9157 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x282b=['sequelize','exports','STRING','BOOLEAN'];(function(_0x63a88f,_0x4bddd5){var _0x2e7dfe=function(_0x203fe5){while(--_0x203fe5){_0x63a88f['push'](_0x63a88f['shift']());}};_0x2e7dfe(++_0x4bddd5);}(_0x282b,0xec));var _0xb282=function(_0x3420b7,_0x3f42f1){_0x3420b7=_0x3420b7-0x0;var _0x4dddc9=_0x282b[_0x3420b7];return _0x4dddc9;};'use strict';var Sequelize=require(_0xb282('0x0'));module[_0xb282('0x1')]={'description':{'type':Sequelize[_0xb282('0x2')]},'host':{'type':Sequelize[_0xb282('0x2')]},'user':{'type':Sequelize[_0xb282('0x2')]},'pass':{'type':Sequelize['STRING']},'port':{'type':Sequelize['INTEGER']},'secure':{'type':Sequelize[_0xb282('0x3')],'defaultValue':![]},'service':{'type':Sequelize['STRING']},'authentication':{'type':Sequelize[_0xb282('0x3')],'defaultValue':!![]},'modernAuthentication':{'type':Sequelize[_0xb282('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0xd87e=['exports','STRING','BOOLEAN','sequelize'];(function(_0x44644b,_0x24f637){var _0x50cb88=function(_0x3994f9){while(--_0x3994f9){_0x44644b['push'](_0x44644b['shift']());}};_0x50cb88(++_0x24f637);}(_0xd87e,0x1bf));var _0xed87=function(_0x3b4922,_0x2fa365){_0x3b4922=_0x3b4922-0x0;var _0x239729=_0xd87e[_0x3b4922];return _0x239729;};'use strict';var Sequelize=require(_0xed87('0x0'));module[_0xed87('0x1')]={'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0xed87('0x2')]},'user':{'type':Sequelize[_0xed87('0x2')]},'pass':{'type':Sequelize[_0xed87('0x2')]},'port':{'type':Sequelize['INTEGER']},'secure':{'type':Sequelize[_0xed87('0x3')],'defaultValue':![]},'service':{'type':Sequelize['STRING']},'authentication':{'type':Sequelize[_0xed87('0x3')],'defaultValue':!![]},'modernAuthentication':{'type':Sequelize[_0xed87('0x3')],'defaultValue':![]}};
\ No newline at end of file
index 367d2e4..da38f5c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf5f3=['fast-json-patch','request-promise','moment','mustache','util','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','map','MailServerOut','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','where','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','params','rawAttributes','create','body','find','rimraf'];(function(_0x53a82f,_0x3c21cd){var _0x24c906=function(_0x36d253){while(--_0x36d253){_0x53a82f['push'](_0x53a82f['shift']());}};_0x24c906(++_0x3c21cd);}(_0xf5f3,0xd4));var _0x3f5f=function(_0x5a5468,_0x36218f){_0x5a5468=_0x5a5468-0x0;var _0x456729=_0xf5f3[_0x5a5468];return _0x456729;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x3f5f('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x3f5f('0x1'));var rp=require(_0x3f5f('0x2'));var moment=require(_0x3f5f('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x3f5f('0x4'));var util=require(_0x3f5f('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0x3f5f('0x6'));var ejs=require(_0x3f5f('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x3f5f('0x8'));var crypto=require(_0x3f5f('0x9'));var jsforce=require(_0x3f5f('0xa'));var deskjs=require(_0x3f5f('0xb'));var toCsv=require(_0x3f5f('0x6'));var querystring=require(_0x3f5f('0xc'));var Papa=require(_0x3f5f('0xd'));var Redis=require(_0x3f5f('0xe'));var authService=require(_0x3f5f('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x3f5f('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x3f5f('0x11'));var config=require(_0x3f5f('0x12'));var licenseUtil=require(_0x3f5f('0x13'));var db=require(_0x3f5f('0x14'))['db'];function respondWithStatusCode(_0x3a56d4,_0x32e969){_0x32e969=_0x32e969||0xcc;return function(_0x4b73bd){if(_0x4b73bd){return _0x3a56d4['sendStatus'](_0x32e969);}return _0x3a56d4[_0x3f5f('0x15')](_0x32e969)[_0x3f5f('0x16')]();};}function respondWithResult(_0x522509,_0x275691){_0x275691=_0x275691||0xc8;return function(_0x124adb){if(_0x124adb){return _0x522509[_0x3f5f('0x15')](_0x275691)[_0x3f5f('0x17')](_0x124adb);}};}function respondWithFilteredResult(_0x3ceace,_0x25f316){return function(_0x1e3ab1){if(_0x1e3ab1){var _0x42cbf8=typeof _0x25f316[_0x3f5f('0x18')]==='undefined'&&typeof _0x25f316[_0x3f5f('0x19')]===_0x3f5f('0x1a');var _0x2b74a0=_0x1e3ab1[_0x3f5f('0x1b')];var _0x227a97=_0x42cbf8?0x0:_0x25f316[_0x3f5f('0x18')];var _0x47bc22=_0x42cbf8?_0x1e3ab1[_0x3f5f('0x1b')]:_0x25f316[_0x3f5f('0x18')]+_0x25f316[_0x3f5f('0x19')];var _0x395e16;if(_0x47bc22>=_0x2b74a0){_0x47bc22=_0x2b74a0;_0x395e16=0xc8;}else{_0x395e16=0xce;}_0x3ceace[_0x3f5f('0x15')](_0x395e16);return _0x3ceace[_0x3f5f('0x1c')](_0x3f5f('0x1d'),_0x227a97+'-'+_0x47bc22+'/'+_0x2b74a0)[_0x3f5f('0x17')](_0x1e3ab1);}return null;};}function patchUpdates(_0x3a2d21){return function(_0x38007b){try{jsonpatch[_0x3f5f('0x1e')](_0x38007b,_0x3a2d21,!![]);}catch(_0x89949d){return BPromise[_0x3f5f('0x1f')](_0x89949d);}return _0x38007b[_0x3f5f('0x20')]();};}function saveUpdates(_0x42c5d7,_0x5b2b39){return function(_0x1e74d1){if(_0x1e74d1){return _0x1e74d1[_0x3f5f('0x21')](_0x42c5d7)[_0x3f5f('0x22')](function(_0x279627){return _0x279627;});}return null;};}function removeEntity(_0x53c0d0,_0x185668){return function(_0x3c4b26){if(_0x3c4b26){return _0x3c4b26[_0x3f5f('0x23')]()[_0x3f5f('0x22')](function(){_0x53c0d0[_0x3f5f('0x15')](0xcc)[_0x3f5f('0x16')]();});}};}function handleEntityNotFound(_0x12a4af,_0x7d1e7b){return function(_0x51d4ba){if(!_0x51d4ba){_0x12a4af['sendStatus'](0x194);}return _0x51d4ba;};}function handleError(_0x2dfeca,_0x147f9e){_0x147f9e=_0x147f9e||0x1f4;return function(_0x4b58f1){logger[_0x3f5f('0x24')](_0x4b58f1[_0x3f5f('0x25')]);if(_0x4b58f1['name']){delete _0x4b58f1[_0x3f5f('0x26')];}_0x2dfeca[_0x3f5f('0x15')](_0x147f9e)[_0x3f5f('0x27')](_0x4b58f1);};}exports['index']=function(_0x25ca4c,_0x4eb3e6){var _0x59e65a={},_0x1d80f0={},_0x401594={'count':0x0,'rows':[]};var _0x28e844=_[_0x3f5f('0x28')](db[_0x3f5f('0x29')]['rawAttributes'],function(_0x329d57){return{'name':_0x329d57[_0x3f5f('0x2a')],'type':_0x329d57[_0x3f5f('0x2b')][_0x3f5f('0x2c')]};});_0x1d80f0[_0x3f5f('0x2d')]=_[_0x3f5f('0x28')](_0x28e844,'name');_0x1d80f0[_0x3f5f('0x2e')]=_[_0x3f5f('0x2f')](_0x25ca4c[_0x3f5f('0x2e')]);_0x1d80f0[_0x3f5f('0x30')]=_[_0x3f5f('0x31')](_0x1d80f0[_0x3f5f('0x2d')],_0x1d80f0[_0x3f5f('0x2e')]);_0x59e65a['attributes']=_[_0x3f5f('0x31')](_0x1d80f0[_0x3f5f('0x2d')],qs['fields'](_0x25ca4c[_0x3f5f('0x2e')][_0x3f5f('0x32')]));_0x59e65a[_0x3f5f('0x33')]=_0x59e65a[_0x3f5f('0x33')][_0x3f5f('0x34')]?_0x59e65a[_0x3f5f('0x33')]:_0x1d80f0[_0x3f5f('0x2d')];if(!_0x25ca4c[_0x3f5f('0x2e')][_0x3f5f('0x35')](_0x3f5f('0x36'))){_0x59e65a[_0x3f5f('0x19')]=qs[_0x3f5f('0x19')](_0x25ca4c[_0x3f5f('0x2e')]['limit']);_0x59e65a[_0x3f5f('0x18')]=qs[_0x3f5f('0x18')](_0x25ca4c[_0x3f5f('0x2e')]['offset']);}_0x59e65a[_0x3f5f('0x37')]=qs['sort'](_0x25ca4c[_0x3f5f('0x2e')]['sort']);_0x59e65a[_0x3f5f('0x38')]=qs[_0x3f5f('0x30')](_[_0x3f5f('0x39')](_0x25ca4c[_0x3f5f('0x2e')],_0x1d80f0[_0x3f5f('0x30')]),_0x28e844);if(_0x25ca4c[_0x3f5f('0x2e')][_0x3f5f('0x3a')]){_0x59e65a[_0x3f5f('0x38')]=_[_0x3f5f('0x3b')](_0x59e65a[_0x3f5f('0x38')],{'$or':_[_0x3f5f('0x28')](_0x28e844,function(_0x1a3c6e){if(_0x1a3c6e[_0x3f5f('0x2b')]!==_0x3f5f('0x3c')){var _0x5794c4={};_0x5794c4[_0x1a3c6e[_0x3f5f('0x26')]]={'$like':'%'+_0x25ca4c['query'][_0x3f5f('0x3a')]+'%'};return _0x5794c4;}})});}_0x59e65a=_[_0x3f5f('0x3b')]({},_0x59e65a,_0x25ca4c[_0x3f5f('0x3d')]);var _0x1f1cb9={'where':_0x59e65a[_0x3f5f('0x38')]};return db[_0x3f5f('0x29')][_0x3f5f('0x1b')](_0x1f1cb9)[_0x3f5f('0x22')](function(_0x2d606a){_0x401594[_0x3f5f('0x1b')]=_0x2d606a;if(_0x25ca4c[_0x3f5f('0x2e')][_0x3f5f('0x3e')]){_0x59e65a[_0x3f5f('0x3f')]=[{'all':!![]}];}return db[_0x3f5f('0x29')]['findAll'](_0x59e65a);})[_0x3f5f('0x22')](function(_0x353d90){_0x401594[_0x3f5f('0x40')]=_0x353d90;return _0x401594;})['then'](respondWithFilteredResult(_0x4eb3e6,_0x59e65a))[_0x3f5f('0x41')](handleError(_0x4eb3e6,null));};exports['show']=function(_0x36d21d,_0x3b69c2){var _0x4650c4={'raw':!![],'where':{'id':_0x36d21d[_0x3f5f('0x42')]['id']}},_0x4c8946={};_0x4c8946[_0x3f5f('0x2d')]=_['keys'](db['MailServerOut'][_0x3f5f('0x43')]);_0x4c8946['query']=_[_0x3f5f('0x2f')](_0x36d21d[_0x3f5f('0x2e')]);_0x4c8946[_0x3f5f('0x30')]=_[_0x3f5f('0x31')](_0x4c8946[_0x3f5f('0x2d')],_0x4c8946[_0x3f5f('0x2e')]);_0x4650c4[_0x3f5f('0x33')]=_['intersection'](_0x4c8946['model'],qs[_0x3f5f('0x32')](_0x36d21d[_0x3f5f('0x2e')][_0x3f5f('0x32')]));_0x4650c4['attributes']=_0x4650c4[_0x3f5f('0x33')][_0x3f5f('0x34')]?_0x4650c4['attributes']:_0x4c8946[_0x3f5f('0x2d')];if(_0x36d21d['query'][_0x3f5f('0x3e')]){_0x4650c4['include']=[{'all':!![]}];}_0x4650c4=_[_0x3f5f('0x3b')]({},_0x4650c4,_0x36d21d['options']);return db['MailServerOut']['find'](_0x4650c4)['then'](handleEntityNotFound(_0x3b69c2,null))[_0x3f5f('0x22')](respondWithResult(_0x3b69c2,null))[_0x3f5f('0x41')](handleError(_0x3b69c2,null));};exports['create']=function(_0x58cc61,_0x43c3e8){return db['MailServerOut'][_0x3f5f('0x44')](_0x58cc61['body'],{})[_0x3f5f('0x22')](respondWithResult(_0x43c3e8,0xc9))['catch'](handleError(_0x43c3e8,null));};exports[_0x3f5f('0x21')]=function(_0xdccb87,_0x2181cc){if(_0xdccb87[_0x3f5f('0x45')]['id']){delete _0xdccb87['body']['id'];}return db['MailServerOut'][_0x3f5f('0x46')]({'where':{'id':_0xdccb87[_0x3f5f('0x42')]['id']}})[_0x3f5f('0x22')](handleEntityNotFound(_0x2181cc,null))[_0x3f5f('0x22')](saveUpdates(_0xdccb87['body'],null))['then'](respondWithResult(_0x2181cc,null))['catch'](handleError(_0x2181cc,null));};exports[_0x3f5f('0x23')]=function(_0x1c4002,_0x48d43c){return db[_0x3f5f('0x29')]['find']({'where':{'id':_0x1c4002[_0x3f5f('0x42')]['id']}})[_0x3f5f('0x22')](handleEntityNotFound(_0x48d43c,null))[_0x3f5f('0x22')](removeEntity(_0x48d43c,null))[_0x3f5f('0x41')](handleError(_0x48d43c,null));};
\ No newline at end of file
+var _0x92e1=['save','update','destroy','then','error','stack','name','map','rawAttributes','fieldName','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','type','VIRTUAL','merge','options','MailServerOut','includeAll','include','findAll','rows','catch','show','create','body','find','params','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','reject'];(function(_0x37eca7,_0x3e016e){var _0x222bce=function(_0xebd0b7){while(--_0xebd0b7){_0x37eca7['push'](_0x37eca7['shift']());}};_0x222bce(++_0x3e016e);}(_0x92e1,0x1e3));var _0x192e=function(_0x231a47,_0x46a963){_0x231a47=_0x231a47-0x0;var _0x48d7c9=_0x92e1[_0x231a47];return _0x48d7c9;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x192e('0x0'));var zipdir=require(_0x192e('0x1'));var jsonpatch=require(_0x192e('0x2'));var rp=require(_0x192e('0x3'));var moment=require(_0x192e('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x192e('0x5'));var util=require(_0x192e('0x6'));var path=require(_0x192e('0x7'));var sox=require(_0x192e('0x8'));var csv=require(_0x192e('0x9'));var ejs=require(_0x192e('0xa'));var fs=require('fs');var fs_extra=require(_0x192e('0xb'));var _=require(_0x192e('0xc'));var squel=require(_0x192e('0xd'));var crypto=require(_0x192e('0xe'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x192e('0x9'));var querystring=require('querystring');var Papa=require(_0x192e('0xf'));var Redis=require('ioredis');var authService=require(_0x192e('0x10'));var qs=require(_0x192e('0x11'));var as=require(_0x192e('0x12'));var hardwareService=require(_0x192e('0x13'));var logger=require(_0x192e('0x14'))('api');var utils=require(_0x192e('0x15'));var config=require(_0x192e('0x16'));var licenseUtil=require(_0x192e('0x17'));var db=require(_0x192e('0x18'))['db'];function respondWithStatusCode(_0x3c0a4a,_0x23f7fa){_0x23f7fa=_0x23f7fa||0xcc;return function(_0xffcc16){if(_0xffcc16){return _0x3c0a4a[_0x192e('0x19')](_0x23f7fa);}return _0x3c0a4a[_0x192e('0x1a')](_0x23f7fa)[_0x192e('0x1b')]();};}function respondWithResult(_0x16d9d8,_0x1822fa){_0x1822fa=_0x1822fa||0xc8;return function(_0xbd560b){if(_0xbd560b){return _0x16d9d8[_0x192e('0x1a')](_0x1822fa)['json'](_0xbd560b);}};}function respondWithFilteredResult(_0x23eb1b,_0x33b44b){return function(_0x204c98){if(_0x204c98){var _0x46a197=typeof _0x33b44b[_0x192e('0x1c')]===_0x192e('0x1d')&&typeof _0x33b44b[_0x192e('0x1e')]===_0x192e('0x1d');var _0x5e0673=_0x204c98[_0x192e('0x1f')];var _0x40f48e=_0x46a197?0x0:_0x33b44b[_0x192e('0x1c')];var _0x3a16ea=_0x46a197?_0x204c98[_0x192e('0x1f')]:_0x33b44b[_0x192e('0x1c')]+_0x33b44b['limit'];var _0x31eeb6;if(_0x3a16ea>=_0x5e0673){_0x3a16ea=_0x5e0673;_0x31eeb6=0xc8;}else{_0x31eeb6=0xce;}_0x23eb1b[_0x192e('0x1a')](_0x31eeb6);return _0x23eb1b[_0x192e('0x20')](_0x192e('0x21'),_0x40f48e+'-'+_0x3a16ea+'/'+_0x5e0673)['json'](_0x204c98);}return null;};}function patchUpdates(_0x34f01){return function(_0x197a51){try{jsonpatch['apply'](_0x197a51,_0x34f01,!![]);}catch(_0x26c43f){return BPromise[_0x192e('0x22')](_0x26c43f);}return _0x197a51[_0x192e('0x23')]();};}function saveUpdates(_0x20344d,_0xe82783){return function(_0x179542){if(_0x179542){return _0x179542[_0x192e('0x24')](_0x20344d)['then'](function(_0x26e097){return _0x26e097;});}return null;};}function removeEntity(_0xe3afcb,_0x25d975){return function(_0x38cc9a){if(_0x38cc9a){return _0x38cc9a[_0x192e('0x25')]()[_0x192e('0x26')](function(){_0xe3afcb[_0x192e('0x1a')](0xcc)[_0x192e('0x1b')]();});}};}function handleEntityNotFound(_0x297aa2,_0xd9280b){return function(_0x272851){if(!_0x272851){_0x297aa2[_0x192e('0x19')](0x194);}return _0x272851;};}function handleError(_0x264e46,_0x5b4018){_0x5b4018=_0x5b4018||0x1f4;return function(_0x5f2df5){logger[_0x192e('0x27')](_0x5f2df5[_0x192e('0x28')]);if(_0x5f2df5[_0x192e('0x29')]){delete _0x5f2df5[_0x192e('0x29')];}_0x264e46[_0x192e('0x1a')](_0x5b4018)['send'](_0x5f2df5);};}exports['index']=function(_0x491057,_0x3dcdae){var _0x39970a={},_0xf9d7b5={},_0x32cafd={'count':0x0,'rows':[]};var _0x2fa0fa=_[_0x192e('0x2a')](db['MailServerOut'][_0x192e('0x2b')],function(_0x22b00f){return{'name':_0x22b00f[_0x192e('0x2c')],'type':_0x22b00f['type']['key']};});_0xf9d7b5[_0x192e('0x2d')]=_[_0x192e('0x2a')](_0x2fa0fa,'name');_0xf9d7b5[_0x192e('0x2e')]=_[_0x192e('0x2f')](_0x491057[_0x192e('0x2e')]);_0xf9d7b5['filters']=_[_0x192e('0x30')](_0xf9d7b5[_0x192e('0x2d')],_0xf9d7b5[_0x192e('0x2e')]);_0x39970a[_0x192e('0x31')]=_[_0x192e('0x30')](_0xf9d7b5[_0x192e('0x2d')],qs['fields'](_0x491057[_0x192e('0x2e')][_0x192e('0x32')]));_0x39970a[_0x192e('0x31')]=_0x39970a['attributes'][_0x192e('0x33')]?_0x39970a[_0x192e('0x31')]:_0xf9d7b5[_0x192e('0x2d')];if(!_0x491057[_0x192e('0x2e')][_0x192e('0x34')](_0x192e('0x35'))){_0x39970a['limit']=qs[_0x192e('0x1e')](_0x491057[_0x192e('0x2e')][_0x192e('0x1e')]);_0x39970a[_0x192e('0x1c')]=qs[_0x192e('0x1c')](_0x491057['query'][_0x192e('0x1c')]);}_0x39970a['order']=qs[_0x192e('0x36')](_0x491057[_0x192e('0x2e')][_0x192e('0x36')]);_0x39970a[_0x192e('0x37')]=qs[_0x192e('0x38')](_[_0x192e('0x39')](_0x491057['query'],_0xf9d7b5[_0x192e('0x38')]),_0x2fa0fa);if(_0x491057[_0x192e('0x2e')][_0x192e('0x3a')]){_0x39970a[_0x192e('0x37')]=_['merge'](_0x39970a['where'],{'$or':_[_0x192e('0x2a')](_0x2fa0fa,function(_0x1b5553){if(_0x1b5553[_0x192e('0x3b')]!==_0x192e('0x3c')){var _0x5ae7fb={};_0x5ae7fb[_0x1b5553['name']]={'$like':'%'+_0x491057[_0x192e('0x2e')]['filter']+'%'};return _0x5ae7fb;}})});}_0x39970a=_[_0x192e('0x3d')]({},_0x39970a,_0x491057[_0x192e('0x3e')]);var _0x5e45d7={'where':_0x39970a[_0x192e('0x37')]};return db[_0x192e('0x3f')][_0x192e('0x1f')](_0x5e45d7)[_0x192e('0x26')](function(_0x11d095){_0x32cafd['count']=_0x11d095;if(_0x491057['query'][_0x192e('0x40')]){_0x39970a[_0x192e('0x41')]=[{'all':!![]}];}return db[_0x192e('0x3f')][_0x192e('0x42')](_0x39970a);})[_0x192e('0x26')](function(_0x449f6b){_0x32cafd[_0x192e('0x43')]=_0x449f6b;return _0x32cafd;})[_0x192e('0x26')](respondWithFilteredResult(_0x3dcdae,_0x39970a))[_0x192e('0x44')](handleError(_0x3dcdae,null));};exports[_0x192e('0x45')]=function(_0x116a01,_0x26583b){var _0x19b8bb={'raw':!![],'where':{'id':_0x116a01['params']['id']}},_0x255ba4={};_0x255ba4['model']=_[_0x192e('0x2f')](db[_0x192e('0x3f')][_0x192e('0x2b')]);_0x255ba4[_0x192e('0x2e')]=_[_0x192e('0x2f')](_0x116a01[_0x192e('0x2e')]);_0x255ba4[_0x192e('0x38')]=_[_0x192e('0x30')](_0x255ba4['model'],_0x255ba4[_0x192e('0x2e')]);_0x19b8bb[_0x192e('0x31')]=_[_0x192e('0x30')](_0x255ba4[_0x192e('0x2d')],qs[_0x192e('0x32')](_0x116a01[_0x192e('0x2e')][_0x192e('0x32')]));_0x19b8bb['attributes']=_0x19b8bb[_0x192e('0x31')][_0x192e('0x33')]?_0x19b8bb[_0x192e('0x31')]:_0x255ba4[_0x192e('0x2d')];if(_0x116a01[_0x192e('0x2e')][_0x192e('0x40')]){_0x19b8bb[_0x192e('0x41')]=[{'all':!![]}];}_0x19b8bb=_[_0x192e('0x3d')]({},_0x19b8bb,_0x116a01[_0x192e('0x3e')]);return db[_0x192e('0x3f')]['find'](_0x19b8bb)[_0x192e('0x26')](handleEntityNotFound(_0x26583b,null))[_0x192e('0x26')](respondWithResult(_0x26583b,null))[_0x192e('0x44')](handleError(_0x26583b,null));};exports['create']=function(_0x13e634,_0x5ca733){return db[_0x192e('0x3f')][_0x192e('0x46')](_0x13e634[_0x192e('0x47')],{})[_0x192e('0x26')](respondWithResult(_0x5ca733,0xc9))['catch'](handleError(_0x5ca733,null));};exports['update']=function(_0x25a272,_0xa87af9){if(_0x25a272[_0x192e('0x47')]['id']){delete _0x25a272[_0x192e('0x47')]['id'];}return db[_0x192e('0x3f')][_0x192e('0x48')]({'where':{'id':_0x25a272['params']['id']}})[_0x192e('0x26')](handleEntityNotFound(_0xa87af9,null))[_0x192e('0x26')](saveUpdates(_0x25a272[_0x192e('0x47')],null))[_0x192e('0x26')](respondWithResult(_0xa87af9,null))[_0x192e('0x44')](handleError(_0xa87af9,null));};exports[_0x192e('0x25')]=function(_0x542c0d,_0x32a7e6){return db[_0x192e('0x3f')]['find']({'where':{'id':_0x542c0d[_0x192e('0x49')]['id']}})['then'](handleEntityNotFound(_0x32a7e6,null))['then'](removeEntity(_0x32a7e6,null))[_0x192e('0x44')](handleError(_0x32a7e6,null));};
\ No newline at end of file
index a5aabce..bc0c961 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1bea=['./mailServerOut.attributes','exports','define','MailServerOut','mail_servers_out','lodash','api','moment','bluebird','request-promise','rimraf','../../config/environment'];(function(_0xcf6948,_0x25a965){var _0x56920e=function(_0x537149){while(--_0x537149){_0xcf6948['push'](_0xcf6948['shift']());}};_0x56920e(++_0x25a965);}(_0x1bea,0x1f1));var _0xa1be=function(_0x430d8a,_0xe4c35a){_0x430d8a=_0x430d8a-0x0;var _0x946c69=_0x1bea[_0x430d8a];return _0x946c69;};'use strict';var _=require(_0xa1be('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xa1be('0x1'));var moment=require(_0xa1be('0x2'));var BPromise=require(_0xa1be('0x3'));var rp=require(_0xa1be('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xa1be('0x5'));var config=require(_0xa1be('0x6'));var attributes=require(_0xa1be('0x7'));module[_0xa1be('0x8')]=function(_0x15b035,_0x48f25d){return _0x15b035[_0xa1be('0x9')](_0xa1be('0xa'),attributes,{'tableName':_0xa1be('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0993=['define','MailServerOut','mail_servers_out','lodash','util','api','moment','bluebird','request-promise','rimraf','../../config/environment','./mailServerOut.attributes','exports'];(function(_0x359b46,_0x232d1d){var _0x1dcf85=function(_0x34593a){while(--_0x34593a){_0x359b46['push'](_0x359b46['shift']());}};_0x1dcf85(++_0x232d1d);}(_0x0993,0x12e));var _0x3099=function(_0x59ef0a,_0x32159b){_0x59ef0a=_0x59ef0a-0x0;var _0x1a1057=_0x0993[_0x59ef0a];return _0x1a1057;};'use strict';var _=require(_0x3099('0x0'));var util=require(_0x3099('0x1'));var logger=require('../../config/logger')(_0x3099('0x2'));var moment=require(_0x3099('0x3'));var BPromise=require(_0x3099('0x4'));var rp=require(_0x3099('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x3099('0x6'));var config=require(_0x3099('0x7'));var attributes=require(_0x3099('0x8'));module[_0x3099('0x9')]=function(_0x5ab0b2,_0x1de545){return _0x5ab0b2[_0x3099('0xa')](_0x3099('0xb'),attributes,{'tableName':_0x3099('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e52ca18..2462802 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1261=['then','info','MailServerOut,\x20%s,\x20%s','request\x20sent','MailServerOut,\x20%s,\x20%s,\x20%s','error','code','message','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','request'];(function(_0xb1d5f5,_0x3acc57){var _0x2fb3c4=function(_0x13b940){while(--_0x13b940){_0xb1d5f5['push'](_0xb1d5f5['shift']());}};_0x2fb3c4(++_0x3acc57);}(_0x1261,0x144));var _0x1126=function(_0x43444b,_0x8cf95b){_0x43444b=_0x43444b-0x0;var _0x392fe5=_0x1261[_0x43444b];return _0x392fe5;};'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')]('MailServerOut,\x20%s,\x20%s',_0x4f239c,_0x1126('0xf'));_0x28772d(_0x59cfa1['result'][_0x1126('0x13')]);}})[_0x1126('0x14')](function(_0x257b5f){logger['error'](_0x1126('0xe'),_0x4f239c,_0x257b5f);_0x245be9(_0x257b5f);});});}
\ 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','MailServerOut,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x47cd7b,_0x5630af){var _0x3e6dbf=function(_0x2c28e1){while(--_0x2c28e1){_0x47cd7b['push'](_0x47cd7b['shift']());}};_0x3e6dbf(++_0x5630af);}(_0xadb5,0xad));var _0x5adb=function(_0x2d7bb9,_0x42ec36){_0x2d7bb9=_0x2d7bb9-0x0;var _0x39d070=_0xadb5[_0x2d7bb9];return _0x39d070;};'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']('MailServerOut,\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 a58943c..dfb3006 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a31=['path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./mailSubstatus.controller','get','index','/describe','isAuthenticated','describe','put','/:id','update','delete','destroy','exports','util'];(function(_0x24e2a3,_0x534875){var _0x3e82f4=function(_0x48a8ee){while(--_0x48a8ee){_0x24e2a3['push'](_0x24e2a3['shift']());}};_0x3e82f4(++_0x534875);}(_0x7a31,0x168));var _0x17a3=function(_0xb3fe05,_0x3073a1){_0xb3fe05=_0xb3fe05-0x0;var _0x576b66=_0x7a31[_0xb3fe05];return _0x576b66;};'use strict';var multer=require('multer');var util=require(_0x17a3('0x0'));var path=require(_0x17a3('0x1'));var timeout=require(_0x17a3('0x2'));var express=require(_0x17a3('0x3'));var router=express['Router']();var fs_extra=require(_0x17a3('0x4'));var auth=require(_0x17a3('0x5'));var interaction=require(_0x17a3('0x6'));var config=require('../../config/environment');var controller=require(_0x17a3('0x7'));router[_0x17a3('0x8')]('/',auth['isAuthenticated'](),controller[_0x17a3('0x9')]);router[_0x17a3('0x8')](_0x17a3('0xa'),auth[_0x17a3('0xb')](),controller[_0x17a3('0xc')]);router['get']('/:id',auth[_0x17a3('0xb')](),controller['show']);router['post']('/',auth[_0x17a3('0xb')](),controller['create']);router[_0x17a3('0xd')](_0x17a3('0xe'),auth[_0x17a3('0xb')](),controller[_0x17a3('0xf')]);router[_0x17a3('0x10')](_0x17a3('0xe'),auth[_0x17a3('0xb')](),controller[_0x17a3('0x11')]);module[_0x17a3('0x12')]=router;
\ No newline at end of file
+var _0xd9c4=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/describe','isAuthenticated','describe','/:id','show','create','put','update','delete','util'];(function(_0x29d915,_0x54a040){var _0x160f86=function(_0x237dfa){while(--_0x237dfa){_0x29d915['push'](_0x29d915['shift']());}};_0x160f86(++_0x54a040);}(_0xd9c4,0x10d));var _0x4d9c=function(_0x33032e,_0x31411a){_0x33032e=_0x33032e-0x0;var _0x13316b=_0xd9c4[_0x33032e];return _0x13316b;};'use strict';var multer=require('multer');var util=require(_0x4d9c('0x0'));var path=require('path');var timeout=require(_0x4d9c('0x1'));var express=require('express');var router=express[_0x4d9c('0x2')]();var fs_extra=require(_0x4d9c('0x3'));var auth=require(_0x4d9c('0x4'));var interaction=require(_0x4d9c('0x5'));var config=require(_0x4d9c('0x6'));var controller=require('./mailSubstatus.controller');router[_0x4d9c('0x7')]('/',auth['isAuthenticated'](),controller[_0x4d9c('0x8')]);router[_0x4d9c('0x7')](_0x4d9c('0x9'),auth[_0x4d9c('0xa')](),controller[_0x4d9c('0xb')]);router[_0x4d9c('0x7')](_0x4d9c('0xc'),auth[_0x4d9c('0xa')](),controller[_0x4d9c('0xd')]);router['post']('/',auth[_0x4d9c('0xa')](),controller[_0x4d9c('0xe')]);router[_0x4d9c('0xf')]('/:id',auth[_0x4d9c('0xa')](),controller[_0x4d9c('0x10')]);router[_0x4d9c('0x11')](_0x4d9c('0xc'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index c08f605..3948fae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb091=['exports','STRING','name'];(function(_0x2ac475,_0x5d4058){var _0x1dd0de=function(_0x261181){while(--_0x261181){_0x2ac475['push'](_0x2ac475['shift']());}};_0x1dd0de(++_0x5d4058);}(_0xb091,0x16e));var _0x1b09=function(_0x6e347f,_0x1760ce){_0x6e347f=_0x6e347f-0x0;var _0xe94bcd=_0xb091[_0x6e347f];return _0xe94bcd;};'use strict';var Sequelize=require('sequelize');module[_0x1b09('0x0')]={'name':{'type':Sequelize[_0x1b09('0x1')],'unique':_0x1b09('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x1b09('0x1')]}};
\ No newline at end of file
+var _0x9a5a=['sequelize','exports','STRING','name'];(function(_0x5d01d1,_0x511ae8){var _0x1526dd=function(_0x5b6ba7){while(--_0x5b6ba7){_0x5d01d1['push'](_0x5d01d1['shift']());}};_0x1526dd(++_0x511ae8);}(_0x9a5a,0x194));var _0xa9a5=function(_0x3f63c2,_0x25e818){_0x3f63c2=_0x3f63c2-0x0;var _0x3e0fb7=_0x9a5a[_0x3f63c2];return _0x3e0fb7;};'use strict';var Sequelize=require(_0xa9a5('0x0'));module[_0xa9a5('0x1')]={'name':{'type':Sequelize[_0xa9a5('0x2')],'unique':_0xa9a5('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xa9a5('0x2')]}};
\ No newline at end of file
index 97bd8df..7e39e64 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e65=['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','sendStatus','status','json','offset','undefined','count','limit','update','then','destroy','end','error','name','send','map','MailSubstatus','rawAttributes','fieldName','type','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','options','includeAll','findAll','show','params','include','find','catch','create','body','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache'];(function(_0x14938b,_0x44bed3){var _0x1c0f78=function(_0x43a3cf){while(--_0x43a3cf){_0x14938b['push'](_0x14938b['shift']());}};_0x1c0f78(++_0x44bed3);}(_0x3e65,0x1a3));var _0x53e6=function(_0x351a04,_0x3c3e08){_0x351a04=_0x351a04-0x0;var _0x3280ec=_0x3e65[_0x351a04];return _0x3280ec;};'use strict';var emlformat=require(_0x53e6('0x0'));var rimraf=require(_0x53e6('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x53e6('0x2'));var rp=require(_0x53e6('0x3'));var moment=require(_0x53e6('0x4'));var BPromise=require(_0x53e6('0x5'));var Mustache=require(_0x53e6('0x6'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x53e6('0x7'));var ejs=require(_0x53e6('0x8'));var fs=require('fs');var fs_extra=require(_0x53e6('0x9'));var _=require(_0x53e6('0xa'));var squel=require(_0x53e6('0xb'));var crypto=require(_0x53e6('0xc'));var jsforce=require(_0x53e6('0xd'));var deskjs=require(_0x53e6('0xe'));var toCsv=require(_0x53e6('0x7'));var querystring=require(_0x53e6('0xf'));var Papa=require('papaparse');var Redis=require(_0x53e6('0x10'));var authService=require(_0x53e6('0x11'));var qs=require(_0x53e6('0x12'));var as=require(_0x53e6('0x13'));var hardwareService=require(_0x53e6('0x14'));var logger=require(_0x53e6('0x15'))(_0x53e6('0x16'));var utils=require(_0x53e6('0x17'));var config=require(_0x53e6('0x18'));var licenseUtil=require(_0x53e6('0x19'));var db=require(_0x53e6('0x1a'))['db'];function respondWithStatusCode(_0x1e856d,_0x4a083d){_0x4a083d=_0x4a083d||0xcc;return function(_0x184612){if(_0x184612){return _0x1e856d[_0x53e6('0x1b')](_0x4a083d);}return _0x1e856d[_0x53e6('0x1c')](_0x4a083d)['end']();};}function respondWithResult(_0x36649e,_0x1c2c21){_0x1c2c21=_0x1c2c21||0xc8;return function(_0x5c9774){if(_0x5c9774){return _0x36649e[_0x53e6('0x1c')](_0x1c2c21)[_0x53e6('0x1d')](_0x5c9774);}};}function respondWithFilteredResult(_0x4e94be,_0x357db6){return function(_0x4c7269){if(_0x4c7269){var _0x216806=typeof _0x357db6[_0x53e6('0x1e')]===_0x53e6('0x1f')&&typeof _0x357db6['limit']===_0x53e6('0x1f');var _0x5fa995=_0x4c7269['count'];var _0x4e551a=_0x216806?0x0:_0x357db6['offset'];var _0x8a09da=_0x216806?_0x4c7269[_0x53e6('0x20')]:_0x357db6[_0x53e6('0x1e')]+_0x357db6[_0x53e6('0x21')];var _0x16a102;if(_0x8a09da>=_0x5fa995){_0x8a09da=_0x5fa995;_0x16a102=0xc8;}else{_0x16a102=0xce;}_0x4e94be[_0x53e6('0x1c')](_0x16a102);return _0x4e94be['set']('Content-Range',_0x4e551a+'-'+_0x8a09da+'/'+_0x5fa995)[_0x53e6('0x1d')](_0x4c7269);}return null;};}function patchUpdates(_0x52eb70){return function(_0x1b6321){try{jsonpatch['apply'](_0x1b6321,_0x52eb70,!![]);}catch(_0x591c0d){return BPromise['reject'](_0x591c0d);}return _0x1b6321['save']();};}function saveUpdates(_0x595289,_0x478cf0){return function(_0x47c49c){if(_0x47c49c){return _0x47c49c[_0x53e6('0x22')](_0x595289)[_0x53e6('0x23')](function(_0x2ce8f0){return _0x2ce8f0;});}return null;};}function removeEntity(_0x5a3191,_0x72feda){return function(_0x5bb579){if(_0x5bb579){return _0x5bb579[_0x53e6('0x24')]()[_0x53e6('0x23')](function(){_0x5a3191[_0x53e6('0x1c')](0xcc)[_0x53e6('0x25')]();});}};}function handleEntityNotFound(_0x285b07,_0xb8ab49){return function(_0x592867){if(!_0x592867){_0x285b07[_0x53e6('0x1b')](0x194);}return _0x592867;};}function handleError(_0x15409c,_0x262b4d){_0x262b4d=_0x262b4d||0x1f4;return function(_0xf52a5d){logger[_0x53e6('0x26')](_0xf52a5d['stack']);if(_0xf52a5d[_0x53e6('0x27')]){delete _0xf52a5d[_0x53e6('0x27')];}_0x15409c[_0x53e6('0x1c')](_0x262b4d)[_0x53e6('0x28')](_0xf52a5d);};}exports['index']=function(_0x2fa375,_0x189044){var _0x4adf88={},_0x5e92b1={},_0x4c0a9d={'count':0x0,'rows':[]};var _0x30c190=_[_0x53e6('0x29')](db[_0x53e6('0x2a')][_0x53e6('0x2b')],function(_0xd5547){return{'name':_0xd5547[_0x53e6('0x2c')],'type':_0xd5547[_0x53e6('0x2d')]['key']};});_0x5e92b1['model']=_[_0x53e6('0x29')](_0x30c190,'name');_0x5e92b1[_0x53e6('0x2e')]=_[_0x53e6('0x2f')](_0x2fa375[_0x53e6('0x2e')]);_0x5e92b1[_0x53e6('0x30')]=_[_0x53e6('0x31')](_0x5e92b1[_0x53e6('0x32')],_0x5e92b1['query']);_0x4adf88[_0x53e6('0x33')]=_[_0x53e6('0x31')](_0x5e92b1['model'],qs[_0x53e6('0x34')](_0x2fa375[_0x53e6('0x2e')][_0x53e6('0x34')]));_0x4adf88[_0x53e6('0x33')]=_0x4adf88[_0x53e6('0x33')][_0x53e6('0x35')]?_0x4adf88[_0x53e6('0x33')]:_0x5e92b1[_0x53e6('0x32')];if(!_0x2fa375['query'][_0x53e6('0x36')](_0x53e6('0x37'))){_0x4adf88[_0x53e6('0x21')]=qs[_0x53e6('0x21')](_0x2fa375[_0x53e6('0x2e')][_0x53e6('0x21')]);_0x4adf88[_0x53e6('0x1e')]=qs[_0x53e6('0x1e')](_0x2fa375[_0x53e6('0x2e')][_0x53e6('0x1e')]);}_0x4adf88[_0x53e6('0x38')]=qs['sort'](_0x2fa375[_0x53e6('0x2e')][_0x53e6('0x39')]);_0x4adf88[_0x53e6('0x3a')]=qs[_0x53e6('0x30')](_['pick'](_0x2fa375[_0x53e6('0x2e')],_0x5e92b1[_0x53e6('0x30')]),_0x30c190);if(_0x2fa375['query'][_0x53e6('0x3b')]){_0x4adf88[_0x53e6('0x3a')]=_[_0x53e6('0x3c')](_0x4adf88['where'],{'$or':_[_0x53e6('0x29')](_0x30c190,function(_0x314cfd){if(_0x314cfd[_0x53e6('0x2d')]!=='VIRTUAL'){var _0x277e62={};_0x277e62[_0x314cfd['name']]={'$like':'%'+_0x2fa375[_0x53e6('0x2e')]['filter']+'%'};return _0x277e62;}})});}_0x4adf88=_['merge']({},_0x4adf88,_0x2fa375[_0x53e6('0x3d')]);var _0x16f9c9={'where':_0x4adf88['where']};return db[_0x53e6('0x2a')][_0x53e6('0x20')](_0x16f9c9)[_0x53e6('0x23')](function(_0x4f1c57){_0x4c0a9d['count']=_0x4f1c57;if(_0x2fa375[_0x53e6('0x2e')][_0x53e6('0x3e')]){_0x4adf88['include']=[{'all':!![]}];}return db['MailSubstatus'][_0x53e6('0x3f')](_0x4adf88);})[_0x53e6('0x23')](function(_0x4a06b0){_0x4c0a9d['rows']=_0x4a06b0;return _0x4c0a9d;})[_0x53e6('0x23')](respondWithFilteredResult(_0x189044,_0x4adf88))['catch'](handleError(_0x189044,null));};exports[_0x53e6('0x40')]=function(_0xcf2b33,_0x483d0b){var _0x5c65f7={'raw':!![],'where':{'id':_0xcf2b33[_0x53e6('0x41')]['id']}},_0x22565b={};_0x22565b['model']=_['keys'](db[_0x53e6('0x2a')][_0x53e6('0x2b')]);_0x22565b[_0x53e6('0x2e')]=_[_0x53e6('0x2f')](_0xcf2b33[_0x53e6('0x2e')]);_0x22565b['filters']=_['intersection'](_0x22565b[_0x53e6('0x32')],_0x22565b['query']);_0x5c65f7[_0x53e6('0x33')]=_[_0x53e6('0x31')](_0x22565b[_0x53e6('0x32')],qs[_0x53e6('0x34')](_0xcf2b33[_0x53e6('0x2e')][_0x53e6('0x34')]));_0x5c65f7['attributes']=_0x5c65f7[_0x53e6('0x33')][_0x53e6('0x35')]?_0x5c65f7['attributes']:_0x22565b[_0x53e6('0x32')];if(_0xcf2b33[_0x53e6('0x2e')][_0x53e6('0x3e')]){_0x5c65f7[_0x53e6('0x42')]=[{'all':!![]}];}_0x5c65f7=_[_0x53e6('0x3c')]({},_0x5c65f7,_0xcf2b33[_0x53e6('0x3d')]);return db['MailSubstatus'][_0x53e6('0x43')](_0x5c65f7)[_0x53e6('0x23')](handleEntityNotFound(_0x483d0b,null))[_0x53e6('0x23')](respondWithResult(_0x483d0b,null))[_0x53e6('0x44')](handleError(_0x483d0b,null));};exports[_0x53e6('0x45')]=function(_0x4afc1b,_0x51dff6){return db['MailSubstatus'][_0x53e6('0x45')](_0x4afc1b[_0x53e6('0x46')],{})[_0x53e6('0x23')](respondWithResult(_0x51dff6,0xc9))[_0x53e6('0x44')](handleError(_0x51dff6,null));};exports[_0x53e6('0x22')]=function(_0x2e1f42,_0x55d6d4){if(_0x2e1f42[_0x53e6('0x46')]['id']){delete _0x2e1f42['body']['id'];}return db[_0x53e6('0x2a')][_0x53e6('0x43')]({'where':{'id':_0x2e1f42['params']['id']}})['then'](handleEntityNotFound(_0x55d6d4,null))[_0x53e6('0x23')](saveUpdates(_0x2e1f42[_0x53e6('0x46')],null))['then'](respondWithResult(_0x55d6d4,null))['catch'](handleError(_0x55d6d4,null));};exports[_0x53e6('0x24')]=function(_0x23f717,_0x26cbc6){return db['MailSubstatus']['find']({'where':{'id':_0x23f717[_0x53e6('0x41')]['id']}})[_0x53e6('0x23')](handleEntityNotFound(_0x26cbc6,null))[_0x53e6('0x23')](removeEntity(_0x26cbc6,null))['catch'](handleError(_0x26cbc6,null));};exports['describe']=function(_0x58ddee,_0x2dd759){return db['MailSubstatus']['describe']()[_0x53e6('0x23')](respondWithResult(_0x2dd759,null))['catch'](handleError(_0x2dd759,null));};
\ No newline at end of file
+var _0xbfca=['papaparse','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','error','stack','send','index','map','rawAttributes','type','key','model','name','query','keys','filters','attributes','intersection','fields','length','nolimit','order','where','pick','filter','merge','VIRTUAL','options','MailSubstatus','findAll','rows','catch','includeAll','find','create','body','params','describe','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring'];(function(_0x3873e7,_0x593b2f){var _0x44deb0=function(_0x42b8bd){while(--_0x42b8bd){_0x3873e7['push'](_0x3873e7['shift']());}};_0x44deb0(++_0x593b2f);}(_0xbfca,0xc7));var _0xabfc=function(_0x1244fe,_0x386729){_0x1244fe=_0x1244fe-0x0;var _0x391983=_0xbfca[_0x1244fe];return _0x391983;};'use strict';var emlformat=require(_0xabfc('0x0'));var rimraf=require(_0xabfc('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xabfc('0x2'));var rp=require(_0xabfc('0x3'));var moment=require(_0xabfc('0x4'));var BPromise=require(_0xabfc('0x5'));var Mustache=require(_0xabfc('0x6'));var util=require(_0xabfc('0x7'));var path=require('path');var sox=require(_0xabfc('0x8'));var csv=require(_0xabfc('0x9'));var ejs=require(_0xabfc('0xa'));var fs=require('fs');var fs_extra=require(_0xabfc('0xb'));var _=require(_0xabfc('0xc'));var squel=require(_0xabfc('0xd'));var crypto=require('crypto');var jsforce=require(_0xabfc('0xe'));var deskjs=require(_0xabfc('0xf'));var toCsv=require('to-csv');var querystring=require(_0xabfc('0x10'));var Papa=require(_0xabfc('0x11'));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(_0xabfc('0x12'));var logger=require('../../config/logger')('api');var utils=require(_0xabfc('0x13'));var config=require(_0xabfc('0x14'));var licenseUtil=require(_0xabfc('0x15'));var db=require(_0xabfc('0x16'))['db'];function respondWithStatusCode(_0x31e249,_0x17875c){_0x17875c=_0x17875c||0xcc;return function(_0x459175){if(_0x459175){return _0x31e249[_0xabfc('0x17')](_0x17875c);}return _0x31e249[_0xabfc('0x18')](_0x17875c)['end']();};}function respondWithResult(_0x5124fc,_0x368e95){_0x368e95=_0x368e95||0xc8;return function(_0x194211){if(_0x194211){return _0x5124fc[_0xabfc('0x18')](_0x368e95)[_0xabfc('0x19')](_0x194211);}};}function respondWithFilteredResult(_0x3f1ef2,_0xbf70aa){return function(_0x5e81cb){if(_0x5e81cb){var _0x4f9900=typeof _0xbf70aa[_0xabfc('0x1a')]===_0xabfc('0x1b')&&typeof _0xbf70aa[_0xabfc('0x1c')]===_0xabfc('0x1b');var _0x28da98=_0x5e81cb[_0xabfc('0x1d')];var _0x291828=_0x4f9900?0x0:_0xbf70aa[_0xabfc('0x1a')];var _0x3e6871=_0x4f9900?_0x5e81cb['count']:_0xbf70aa[_0xabfc('0x1a')]+_0xbf70aa['limit'];var _0x10cc91;if(_0x3e6871>=_0x28da98){_0x3e6871=_0x28da98;_0x10cc91=0xc8;}else{_0x10cc91=0xce;}_0x3f1ef2[_0xabfc('0x18')](_0x10cc91);return _0x3f1ef2[_0xabfc('0x1e')](_0xabfc('0x1f'),_0x291828+'-'+_0x3e6871+'/'+_0x28da98)[_0xabfc('0x19')](_0x5e81cb);}return null;};}function patchUpdates(_0x337e0e){return function(_0x20e580){try{jsonpatch[_0xabfc('0x20')](_0x20e580,_0x337e0e,!![]);}catch(_0x4e8c32){return BPromise['reject'](_0x4e8c32);}return _0x20e580[_0xabfc('0x21')]();};}function saveUpdates(_0x398e5a,_0x476584){return function(_0x40fdb7){if(_0x40fdb7){return _0x40fdb7[_0xabfc('0x22')](_0x398e5a)[_0xabfc('0x23')](function(_0x1403f9){return _0x1403f9;});}return null;};}function removeEntity(_0x33d1fa,_0x3aa5e4){return function(_0x2639bd){if(_0x2639bd){return _0x2639bd[_0xabfc('0x24')]()[_0xabfc('0x23')](function(){_0x33d1fa[_0xabfc('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x11bee3,_0x46fe67){return function(_0xa9697){if(!_0xa9697){_0x11bee3[_0xabfc('0x17')](0x194);}return _0xa9697;};}function handleError(_0x5045bc,_0x2277d2){_0x2277d2=_0x2277d2||0x1f4;return function(_0x581d43){logger[_0xabfc('0x25')](_0x581d43[_0xabfc('0x26')]);if(_0x581d43['name']){delete _0x581d43['name'];}_0x5045bc[_0xabfc('0x18')](_0x2277d2)[_0xabfc('0x27')](_0x581d43);};}exports[_0xabfc('0x28')]=function(_0x1ec970,_0x5c2d3d){var _0x2aaa67={},_0x1a52d2={},_0x1a23d2={'count':0x0,'rows':[]};var _0x17361a=_[_0xabfc('0x29')](db['MailSubstatus'][_0xabfc('0x2a')],function(_0x4bc161){return{'name':_0x4bc161['fieldName'],'type':_0x4bc161[_0xabfc('0x2b')][_0xabfc('0x2c')]};});_0x1a52d2[_0xabfc('0x2d')]=_['map'](_0x17361a,_0xabfc('0x2e'));_0x1a52d2[_0xabfc('0x2f')]=_[_0xabfc('0x30')](_0x1ec970[_0xabfc('0x2f')]);_0x1a52d2[_0xabfc('0x31')]=_['intersection'](_0x1a52d2[_0xabfc('0x2d')],_0x1a52d2[_0xabfc('0x2f')]);_0x2aaa67[_0xabfc('0x32')]=_[_0xabfc('0x33')](_0x1a52d2['model'],qs['fields'](_0x1ec970[_0xabfc('0x2f')][_0xabfc('0x34')]));_0x2aaa67[_0xabfc('0x32')]=_0x2aaa67[_0xabfc('0x32')][_0xabfc('0x35')]?_0x2aaa67[_0xabfc('0x32')]:_0x1a52d2['model'];if(!_0x1ec970['query']['hasOwnProperty'](_0xabfc('0x36'))){_0x2aaa67[_0xabfc('0x1c')]=qs['limit'](_0x1ec970['query'][_0xabfc('0x1c')]);_0x2aaa67[_0xabfc('0x1a')]=qs['offset'](_0x1ec970[_0xabfc('0x2f')]['offset']);}_0x2aaa67[_0xabfc('0x37')]=qs['sort'](_0x1ec970[_0xabfc('0x2f')]['sort']);_0x2aaa67[_0xabfc('0x38')]=qs[_0xabfc('0x31')](_[_0xabfc('0x39')](_0x1ec970['query'],_0x1a52d2[_0xabfc('0x31')]),_0x17361a);if(_0x1ec970[_0xabfc('0x2f')][_0xabfc('0x3a')]){_0x2aaa67['where']=_[_0xabfc('0x3b')](_0x2aaa67[_0xabfc('0x38')],{'$or':_[_0xabfc('0x29')](_0x17361a,function(_0x1c0cb7){if(_0x1c0cb7[_0xabfc('0x2b')]!==_0xabfc('0x3c')){var _0x4cd7ad={};_0x4cd7ad[_0x1c0cb7[_0xabfc('0x2e')]]={'$like':'%'+_0x1ec970['query'][_0xabfc('0x3a')]+'%'};return _0x4cd7ad;}})});}_0x2aaa67=_[_0xabfc('0x3b')]({},_0x2aaa67,_0x1ec970[_0xabfc('0x3d')]);var _0x9156f1={'where':_0x2aaa67[_0xabfc('0x38')]};return db['MailSubstatus'][_0xabfc('0x1d')](_0x9156f1)[_0xabfc('0x23')](function(_0x25ff4b){_0x1a23d2[_0xabfc('0x1d')]=_0x25ff4b;if(_0x1ec970[_0xabfc('0x2f')]['includeAll']){_0x2aaa67['include']=[{'all':!![]}];}return db[_0xabfc('0x3e')][_0xabfc('0x3f')](_0x2aaa67);})['then'](function(_0x291eae){_0x1a23d2[_0xabfc('0x40')]=_0x291eae;return _0x1a23d2;})[_0xabfc('0x23')](respondWithFilteredResult(_0x5c2d3d,_0x2aaa67))[_0xabfc('0x41')](handleError(_0x5c2d3d,null));};exports['show']=function(_0x283e69,_0x16f20d){var _0x5ac81c={'raw':!![],'where':{'id':_0x283e69['params']['id']}},_0x4f173d={};_0x4f173d['model']=_['keys'](db['MailSubstatus'][_0xabfc('0x2a')]);_0x4f173d['query']=_['keys'](_0x283e69[_0xabfc('0x2f')]);_0x4f173d[_0xabfc('0x31')]=_[_0xabfc('0x33')](_0x4f173d[_0xabfc('0x2d')],_0x4f173d[_0xabfc('0x2f')]);_0x5ac81c['attributes']=_[_0xabfc('0x33')](_0x4f173d[_0xabfc('0x2d')],qs[_0xabfc('0x34')](_0x283e69['query'][_0xabfc('0x34')]));_0x5ac81c[_0xabfc('0x32')]=_0x5ac81c[_0xabfc('0x32')][_0xabfc('0x35')]?_0x5ac81c[_0xabfc('0x32')]:_0x4f173d[_0xabfc('0x2d')];if(_0x283e69[_0xabfc('0x2f')][_0xabfc('0x42')]){_0x5ac81c['include']=[{'all':!![]}];}_0x5ac81c=_['merge']({},_0x5ac81c,_0x283e69['options']);return db[_0xabfc('0x3e')][_0xabfc('0x43')](_0x5ac81c)['then'](handleEntityNotFound(_0x16f20d,null))[_0xabfc('0x23')](respondWithResult(_0x16f20d,null))[_0xabfc('0x41')](handleError(_0x16f20d,null));};exports[_0xabfc('0x44')]=function(_0x377b79,_0x394fb1){return db[_0xabfc('0x3e')][_0xabfc('0x44')](_0x377b79[_0xabfc('0x45')],{})['then'](respondWithResult(_0x394fb1,0xc9))[_0xabfc('0x41')](handleError(_0x394fb1,null));};exports[_0xabfc('0x22')]=function(_0xd90461,_0x464543){if(_0xd90461[_0xabfc('0x45')]['id']){delete _0xd90461[_0xabfc('0x45')]['id'];}return db['MailSubstatus'][_0xabfc('0x43')]({'where':{'id':_0xd90461[_0xabfc('0x46')]['id']}})[_0xabfc('0x23')](handleEntityNotFound(_0x464543,null))[_0xabfc('0x23')](saveUpdates(_0xd90461['body'],null))[_0xabfc('0x23')](respondWithResult(_0x464543,null))[_0xabfc('0x41')](handleError(_0x464543,null));};exports['destroy']=function(_0x50cec3,_0x4fbef1){return db[_0xabfc('0x3e')][_0xabfc('0x43')]({'where':{'id':_0x50cec3[_0xabfc('0x46')]['id']}})[_0xabfc('0x23')](handleEntityNotFound(_0x4fbef1,null))[_0xabfc('0x23')](removeEntity(_0x4fbef1,null))[_0xabfc('0x41')](handleError(_0x4fbef1,null));};exports['describe']=function(_0x49d571,_0x10e73f){return db[_0xabfc('0x3e')][_0xabfc('0x47')]()['then'](respondWithResult(_0x10e73f,null))[_0xabfc('0x41')](handleError(_0x10e73f,null));};
\ No newline at end of file
index b7b9704..5674d4b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e6e=['events','../../mysqldb','MailSubstatus','setMaxListeners','emit','hasOwnProperty','hook','exports'];(function(_0x179b53,_0x31f6fe){var _0x38a146=function(_0x33f0c2){while(--_0x33f0c2){_0x179b53['push'](_0x179b53['shift']());}};_0x38a146(++_0x31f6fe);}(_0x9e6e,0xf8));var _0xe9e6=function(_0x46307f,_0x55db2f){_0x46307f=_0x46307f-0x0;var _0x5a3320=_0x9e6e[_0x46307f];return _0x5a3320;};'use strict';var EventEmitter=require(_0xe9e6('0x0'));var MailSubstatus=require(_0xe9e6('0x1'))['db'][_0xe9e6('0x2')];var MailSubstatusEvents=new EventEmitter();MailSubstatusEvents[_0xe9e6('0x3')](0x0);var events={'afterUpdate':'update'};function emitEvent(_0x33a46){return function(_0x3859f3,_0x51988d,_0xc4e872){MailSubstatusEvents[_0xe9e6('0x4')](_0x33a46+':'+_0x3859f3['id'],_0x3859f3);MailSubstatusEvents['emit'](_0x33a46,_0x3859f3);_0xc4e872(null);};}for(var e in events){if(events[_0xe9e6('0x5')](e)){var event=events[e];MailSubstatus[_0xe9e6('0x6')](e,emitEvent(event));}}module[_0xe9e6('0x7')]=MailSubstatusEvents;
\ No newline at end of file
+var _0x82be=['update','emit','hasOwnProperty','hook','exports','events','MailSubstatus','setMaxListeners'];(function(_0x243217,_0x522951){var _0x478029=function(_0x18d053){while(--_0x18d053){_0x243217['push'](_0x243217['shift']());}};_0x478029(++_0x522951);}(_0x82be,0x1dd));var _0xe82b=function(_0x3addef,_0x37deb2){_0x3addef=_0x3addef-0x0;var _0x3a2b8e=_0x82be[_0x3addef];return _0x3a2b8e;};'use strict';var EventEmitter=require(_0xe82b('0x0'));var MailSubstatus=require('../../mysqldb')['db'][_0xe82b('0x1')];var MailSubstatusEvents=new EventEmitter();MailSubstatusEvents[_0xe82b('0x2')](0x0);var events={'afterUpdate':_0xe82b('0x3')};function emitEvent(_0x1ddc39){return function(_0x10b2d7,_0x558942,_0x355232){MailSubstatusEvents[_0xe82b('0x4')](_0x1ddc39+':'+_0x10b2d7['id'],_0x10b2d7);MailSubstatusEvents[_0xe82b('0x4')](_0x1ddc39,_0x10b2d7);_0x355232(null);};}for(var e in events){if(events[_0xe82b('0x5')](e)){var event=events[e];MailSubstatus[_0xe82b('0x6')](e,emitEvent(event));}}module[_0xe82b('0x7')]=MailSubstatusEvents;
\ No newline at end of file
index d1207cd..7b97977 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xce0d=['./mailSubstatus.attributes','exports','models','define','update','name','mailSubstatus','_previousDataValues','then'];(function(_0x35885a,_0x42fed7){var _0xe86249=function(_0x98edb3){while(--_0x98edb3){_0x35885a['push'](_0x35885a['shift']());}};_0xe86249(++_0x42fed7);}(_0xce0d,0x1e6));var _0xdce0=function(_0x189d3c,_0x5efebf){_0x189d3c=_0x189d3c-0x0;var _0x485959=_0xce0d[_0x189d3c];return _0x485959;};'use strict';var attributes=require(_0xdce0('0x0'));module[_0xdce0('0x1')]=function(_0x334aea){var _0x4fb712=_0x334aea[_0xdce0('0x2')];return _0x334aea[_0xdce0('0x3')]('MailSubstatus',attributes,{'tableName':'mail_substatuses','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterUpdate':function(_0x252cec,_0x3609ea,_0x5b226c){return _0x4fb712['Condition'][_0xdce0('0x4')]({'value':_0x252cec[_0xdce0('0x5')]},{'where':{'field':_0xdce0('0x6'),'value':_0x252cec[_0xdce0('0x7')]['name']}})[_0xdce0('0x8')](function(){_0x5b226c();})['catch'](function(_0x214198){_0x5b226c(_0x214198);});}}});};
\ No newline at end of file
+var _0x93f4=['catch','./mailSubstatus.attributes','exports','models','define','MailSubstatus','mail_substatuses','Condition','update','mailSubstatus','_previousDataValues','then'];(function(_0x614dc5,_0x3dd98e){var _0x571e07=function(_0x1dae24){while(--_0x1dae24){_0x614dc5['push'](_0x614dc5['shift']());}};_0x571e07(++_0x3dd98e);}(_0x93f4,0x79));var _0x493f=function(_0x406a08,_0x17428a){_0x406a08=_0x406a08-0x0;var _0x588f3b=_0x93f4[_0x406a08];return _0x588f3b;};'use strict';var attributes=require(_0x493f('0x0'));module[_0x493f('0x1')]=function(_0x54af6c){var _0x14c0df=_0x54af6c[_0x493f('0x2')];return _0x54af6c[_0x493f('0x3')](_0x493f('0x4'),attributes,{'tableName':_0x493f('0x5'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterUpdate':function(_0x2ef9d5,_0x23e482,_0x8fa813){return _0x14c0df[_0x493f('0x6')][_0x493f('0x7')]({'value':_0x2ef9d5['name']},{'where':{'field':_0x493f('0x8'),'value':_0x2ef9d5[_0x493f('0x9')]['name']}})[_0x493f('0xa')](function(){_0x8fa813();})[_0x493f('0xb')](function(_0x3f74be){_0x8fa813(_0x3f74be);});}}});};
\ No newline at end of file
index 5d6000f..5d848f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xecc0=['info','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','MailSubstatus,\x20%s,\x20%s','debug','MailSubstatus,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x2efd1d,_0x44f696){var _0x1ef3f6=function(_0x25da5f){while(--_0x25da5f){_0x2efd1d['push'](_0x2efd1d['shift']());}};_0x1ef3f6(++_0x44f696);}(_0xecc0,0x121));var _0x0ecc=function(_0x32d196,_0x348ec6){_0x32d196=_0x32d196-0x0;var _0x2bacfd=_0xecc0[_0x32d196];return _0x2bacfd;};'use strict';var _=require(_0x0ecc('0x0'));var util=require(_0x0ecc('0x1'));var moment=require(_0x0ecc('0x2'));var BPromise=require(_0x0ecc('0x3'));var rs=require(_0x0ecc('0x4'));var fs=require('fs');var Redis=require(_0x0ecc('0x5'));var db=require(_0x0ecc('0x6'))['db'];var utils=require(_0x0ecc('0x7'));var logger=require(_0x0ecc('0x8'))(_0x0ecc('0x9'));var config=require(_0x0ecc('0xa'));var jayson=require(_0x0ecc('0xb'));var client=jayson[_0x0ecc('0xc')][_0x0ecc('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x20eb4b,_0x2af57b,_0xe56746){return new BPromise(function(_0x192e12,_0x253a5b){return client[_0x0ecc('0xe')](_0x20eb4b,_0xe56746)[_0x0ecc('0xf')](function(_0x4b9a1d){logger['info'](_0x0ecc('0x10'),_0x2af57b,'request\x20sent');logger[_0x0ecc('0x11')](_0x0ecc('0x12'),_0x2af57b,'request\x20sent',JSON[_0x0ecc('0x13')](_0x4b9a1d));if(_0x4b9a1d[_0x0ecc('0x14')]){if(_0x4b9a1d[_0x0ecc('0x14')][_0x0ecc('0x15')]===0x1f4){logger[_0x0ecc('0x14')](_0x0ecc('0x10'),_0x2af57b,_0x4b9a1d[_0x0ecc('0x14')][_0x0ecc('0x16')]);return _0x253a5b(_0x4b9a1d[_0x0ecc('0x14')][_0x0ecc('0x16')]);}logger[_0x0ecc('0x14')]('MailSubstatus,\x20%s,\x20%s',_0x2af57b,_0x4b9a1d['error'][_0x0ecc('0x16')]);return _0x192e12(_0x4b9a1d['error'][_0x0ecc('0x16')]);}else{logger[_0x0ecc('0x17')]('MailSubstatus,\x20%s,\x20%s',_0x2af57b,'request\x20sent');_0x192e12(_0x4b9a1d[_0x0ecc('0x18')][_0x0ecc('0x16')]);}})[_0x0ecc('0x19')](function(_0x41a020){logger[_0x0ecc('0x14')](_0x0ecc('0x10'),_0x2af57b,_0x41a020);_0x253a5b(_0x41a020);});});}
\ No newline at end of file
+var _0xdbd9=['request\x20sent','MailSubstatus,\x20%s,\x20%s,\x20%s','error','code','message','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','jayson/promise','client','http','request','then','info','MailSubstatus,\x20%s,\x20%s'];(function(_0x598367,_0x2e2922){var _0xa37156=function(_0x758e03){while(--_0x758e03){_0x598367['push'](_0x598367['shift']());}};_0xa37156(++_0x2e2922);}(_0xdbd9,0x16e));var _0x9dbd=function(_0x38798f,_0x110e43){_0x38798f=_0x38798f-0x0;var _0xd4459f=_0xdbd9[_0x38798f];return _0xd4459f;};'use strict';var _=require('lodash');var util=require(_0x9dbd('0x0'));var moment=require(_0x9dbd('0x1'));var BPromise=require(_0x9dbd('0x2'));var rs=require(_0x9dbd('0x3'));var fs=require('fs');var Redis=require(_0x9dbd('0x4'));var db=require(_0x9dbd('0x5'))['db'];var utils=require(_0x9dbd('0x6'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x9dbd('0x7'));var client=jayson[_0x9dbd('0x8')][_0x9dbd('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x459f1e,_0xc4afcf,_0x3a9ec7){return new BPromise(function(_0x3feb26,_0x584495){return client[_0x9dbd('0xa')](_0x459f1e,_0x3a9ec7)[_0x9dbd('0xb')](function(_0x35240f){logger[_0x9dbd('0xc')](_0x9dbd('0xd'),_0xc4afcf,_0x9dbd('0xe'));logger['debug'](_0x9dbd('0xf'),_0xc4afcf,'request\x20sent',JSON['stringify'](_0x35240f));if(_0x35240f[_0x9dbd('0x10')]){if(_0x35240f[_0x9dbd('0x10')][_0x9dbd('0x11')]===0x1f4){logger[_0x9dbd('0x10')](_0x9dbd('0xd'),_0xc4afcf,_0x35240f[_0x9dbd('0x10')][_0x9dbd('0x12')]);return _0x584495(_0x35240f[_0x9dbd('0x10')][_0x9dbd('0x12')]);}logger[_0x9dbd('0x10')](_0x9dbd('0xd'),_0xc4afcf,_0x35240f[_0x9dbd('0x10')][_0x9dbd('0x12')]);return _0x3feb26(_0x35240f[_0x9dbd('0x10')][_0x9dbd('0x12')]);}else{logger[_0x9dbd('0xc')](_0x9dbd('0xd'),_0xc4afcf,'request\x20sent');_0x3feb26(_0x35240f['result']['message']);}})['catch'](function(_0x56eb7f){logger['error'](_0x9dbd('0xd'),_0xc4afcf,_0x56eb7f);_0x584495(_0x56eb7f);});});}
\ No newline at end of file
index 5c35e7e..67074ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdbf2=['put','/:id','update','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailTransferReport.controller','get','isAuthenticated','index','/describe','describe','show','post','create'];(function(_0x37fa2b,_0x3adbf7){var _0x44efee=function(_0x5bf7ce){while(--_0x5bf7ce){_0x37fa2b['push'](_0x37fa2b['shift']());}};_0x44efee(++_0x3adbf7);}(_0xdbf2,0x1bd));var _0x2dbf=function(_0x45a884,_0x461e50){_0x45a884=_0x45a884-0x0;var _0x4c985e=_0xdbf2[_0x45a884];return _0x4c985e;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x2dbf('0x0'));var timeout=require(_0x2dbf('0x1'));var express=require(_0x2dbf('0x2'));var router=express[_0x2dbf('0x3')]();var fs_extra=require(_0x2dbf('0x4'));var auth=require(_0x2dbf('0x5'));var interaction=require(_0x2dbf('0x6'));var config=require(_0x2dbf('0x7'));var controller=require(_0x2dbf('0x8'));router[_0x2dbf('0x9')]('/',auth[_0x2dbf('0xa')](),controller[_0x2dbf('0xb')]);router[_0x2dbf('0x9')](_0x2dbf('0xc'),auth['isAuthenticated'](),controller[_0x2dbf('0xd')]);router[_0x2dbf('0x9')]('/:id',auth['isAuthenticated'](),controller[_0x2dbf('0xe')]);router[_0x2dbf('0xf')]('/',auth[_0x2dbf('0xa')](),controller[_0x2dbf('0x10')]);router[_0x2dbf('0x11')](_0x2dbf('0x12'),auth[_0x2dbf('0xa')](),controller[_0x2dbf('0x13')]);router['delete']('/:id',auth[_0x2dbf('0xa')](),controller['destroy']);module[_0x2dbf('0x14')]=router;
\ No newline at end of file
+var _0xd582=['create','update','delete','destroy','multer','express','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','/:id','show','post'];(function(_0x424404,_0x191c57){var _0x1cfb39=function(_0x3f332a){while(--_0x3f332a){_0x424404['push'](_0x424404['shift']());}};_0x1cfb39(++_0x191c57);}(_0xd582,0xb4));var _0x2d58=function(_0x179568,_0x5161a8){_0x179568=_0x179568-0x0;var _0x515d2e=_0xd582[_0x179568];return _0x515d2e;};'use strict';var multer=require(_0x2d58('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x2d58('0x1'));var router=express['Router']();var fs_extra=require(_0x2d58('0x2'));var auth=require('../../components/auth/service');var interaction=require(_0x2d58('0x3'));var config=require(_0x2d58('0x4'));var controller=require('./mailTransferReport.controller');router[_0x2d58('0x5')]('/',auth[_0x2d58('0x6')](),controller[_0x2d58('0x7')]);router['get'](_0x2d58('0x8'),auth[_0x2d58('0x6')](),controller['describe']);router[_0x2d58('0x5')](_0x2d58('0x9'),auth[_0x2d58('0x6')](),controller[_0x2d58('0xa')]);router[_0x2d58('0xb')]('/',auth[_0x2d58('0x6')](),controller[_0x2d58('0xc')]);router['put']('/:id',auth[_0x2d58('0x6')](),controller[_0x2d58('0xd')]);router[_0x2d58('0xe')]('/:id',auth[_0x2d58('0x6')](),controller[_0x2d58('0xf')]);module['exports']=router;
\ No newline at end of file
index b568a36..2fe7d7e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf3cd=['exports','STRING','ENUM','account','queue','DATE','moment','sequelize'];(function(_0x4abd72,_0x51cbef){var _0x55bc37=function(_0x12ab3b){while(--_0x12ab3b){_0x4abd72['push'](_0x4abd72['shift']());}};_0x55bc37(++_0x51cbef);}(_0xf3cd,0xfe));var _0xdf3c=function(_0x35a274,_0x98b399){_0x35a274=_0x35a274-0x0;var _0x40d905=_0xf3cd[_0x35a274];return _0x40d905;};'use strict';var moment=require(_0xdf3c('0x0'));var Sequelize=require(_0xdf3c('0x1'));module[_0xdf3c('0x2')]={'uniqueid':{'type':Sequelize[_0xdf3c('0x3')],'allowNull':![]},'type':{'type':Sequelize[_0xdf3c('0x4')](_0xdf3c('0x5'),'agent',_0xdf3c('0x6')),'allowNull':![],'defaultValue':_0xdf3c('0x6')},'transferredAt':{'type':Sequelize[_0xdf3c('0x7')],'allowNull':![],'defaultValue':Sequelize['NOW']}};
\ No newline at end of file
+var _0xedd9=['account','agent','queue','NOW','sequelize','exports','STRING','ENUM'];(function(_0x2a9cc5,_0x262ab9){var _0x36df76=function(_0x94fbe6){while(--_0x94fbe6){_0x2a9cc5['push'](_0x2a9cc5['shift']());}};_0x36df76(++_0x262ab9);}(_0xedd9,0xfc));var _0x9edd=function(_0x4d8900,_0x2559a1){_0x4d8900=_0x4d8900-0x0;var _0x217e05=_0xedd9[_0x4d8900];return _0x217e05;};'use strict';var moment=require('moment');var Sequelize=require(_0x9edd('0x0'));module[_0x9edd('0x1')]={'uniqueid':{'type':Sequelize[_0x9edd('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x9edd('0x3')](_0x9edd('0x4'),_0x9edd('0x5'),_0x9edd('0x6')),'allowNull':![],'defaultValue':_0x9edd('0x6')},'transferredAt':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':Sequelize[_0x9edd('0x7')]}};
\ No newline at end of file
index ee2277c..656b9b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa16=['describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','to-csv','ejs','lodash','squel','jsforce','desk.js','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','count','offset','Content-Range','reject','save','then','destroy','error','stack','name','send','index','MailTransferReport','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','merge','map','VIRTUAL','filter','includeAll','include','findAll','catch','show','keys','rawAttributes','find','create','body','update','params'];(function(_0x21468d,_0xfa02a6){var _0x137050=function(_0x4c4bf6){while(--_0x4c4bf6){_0x21468d['push'](_0x21468d['shift']());}};_0x137050(++_0xfa02a6);}(_0xfa16,0x11d));var _0x6fa1=function(_0x1ec9e1,_0x2c15d0){_0x1ec9e1=_0x1ec9e1-0x0;var _0x375531=_0xfa16[_0x1ec9e1];return _0x375531;};'use strict';var emlformat=require(_0x6fa1('0x0'));var rimraf=require(_0x6fa1('0x1'));var zipdir=require(_0x6fa1('0x2'));var jsonpatch=require(_0x6fa1('0x3'));var rp=require(_0x6fa1('0x4'));var moment=require(_0x6fa1('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x6fa1('0x6'));var path=require(_0x6fa1('0x7'));var sox=require('sox');var csv=require(_0x6fa1('0x8'));var ejs=require(_0x6fa1('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x6fa1('0xa'));var squel=require(_0x6fa1('0xb'));var crypto=require('crypto');var jsforce=require(_0x6fa1('0xc'));var deskjs=require(_0x6fa1('0xd'));var toCsv=require(_0x6fa1('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x6fa1('0xe'));var qs=require(_0x6fa1('0xf'));var as=require(_0x6fa1('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x6fa1('0x11'))(_0x6fa1('0x12'));var utils=require(_0x6fa1('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x6fa1('0x14'));var db=require(_0x6fa1('0x15'))['db'];function respondWithStatusCode(_0x10cb28,_0x57df63){_0x57df63=_0x57df63||0xcc;return function(_0x5d2943){if(_0x5d2943){return _0x10cb28[_0x6fa1('0x16')](_0x57df63);}return _0x10cb28[_0x6fa1('0x17')](_0x57df63)[_0x6fa1('0x18')]();};}function respondWithResult(_0x3812fd,_0x4b008c){_0x4b008c=_0x4b008c||0xc8;return function(_0x577998){if(_0x577998){return _0x3812fd[_0x6fa1('0x17')](_0x4b008c)[_0x6fa1('0x19')](_0x577998);}};}function respondWithFilteredResult(_0x219f58,_0x6a8ecc){return function(_0x5ac3e4){if(_0x5ac3e4){var _0x5e67f0=typeof _0x6a8ecc['offset']===_0x6fa1('0x1a')&&typeof _0x6a8ecc['limit']===_0x6fa1('0x1a');var _0x4945d9=_0x5ac3e4[_0x6fa1('0x1b')];var _0x175ece=_0x5e67f0?0x0:_0x6a8ecc[_0x6fa1('0x1c')];var _0x2b63eb=_0x5e67f0?_0x5ac3e4[_0x6fa1('0x1b')]:_0x6a8ecc['offset']+_0x6a8ecc['limit'];var _0x2a740e;if(_0x2b63eb>=_0x4945d9){_0x2b63eb=_0x4945d9;_0x2a740e=0xc8;}else{_0x2a740e=0xce;}_0x219f58['status'](_0x2a740e);return _0x219f58['set'](_0x6fa1('0x1d'),_0x175ece+'-'+_0x2b63eb+'/'+_0x4945d9)[_0x6fa1('0x19')](_0x5ac3e4);}return null;};}function patchUpdates(_0xbfd984){return function(_0x49c7d8){try{jsonpatch['apply'](_0x49c7d8,_0xbfd984,!![]);}catch(_0x539c5c){return BPromise[_0x6fa1('0x1e')](_0x539c5c);}return _0x49c7d8[_0x6fa1('0x1f')]();};}function saveUpdates(_0x279012,_0x15b41a){return function(_0x2228b0){if(_0x2228b0){return _0x2228b0['update'](_0x279012)[_0x6fa1('0x20')](function(_0x5d891f){return _0x5d891f;});}return null;};}function removeEntity(_0x22a13e,_0x37bc21){return function(_0x5ad9f5){if(_0x5ad9f5){return _0x5ad9f5[_0x6fa1('0x21')]()['then'](function(){_0x22a13e[_0x6fa1('0x17')](0xcc)[_0x6fa1('0x18')]();});}};}function handleEntityNotFound(_0x4664ea,_0x52c43e){return function(_0x47f70c){if(!_0x47f70c){_0x4664ea[_0x6fa1('0x16')](0x194);}return _0x47f70c;};}function handleError(_0x2bf662,_0x275dfe){_0x275dfe=_0x275dfe||0x1f4;return function(_0x22cc7f){logger[_0x6fa1('0x22')](_0x22cc7f[_0x6fa1('0x23')]);if(_0x22cc7f[_0x6fa1('0x24')]){delete _0x22cc7f[_0x6fa1('0x24')];}_0x2bf662[_0x6fa1('0x17')](_0x275dfe)[_0x6fa1('0x25')](_0x22cc7f);};}exports[_0x6fa1('0x26')]=function(_0x4ccd9b,_0x45ed58){var _0x34f1f2={},_0x537182={},_0x1d3bd9={'count':0x0,'rows':[]};var _0xdfb2b5=_['map'](db[_0x6fa1('0x27')]['rawAttributes'],function(_0x594f1b){return{'name':_0x594f1b['fieldName'],'type':_0x594f1b['type'][_0x6fa1('0x28')]};});_0x537182[_0x6fa1('0x29')]=_['map'](_0xdfb2b5,_0x6fa1('0x24'));_0x537182[_0x6fa1('0x2a')]=_['keys'](_0x4ccd9b[_0x6fa1('0x2a')]);_0x537182[_0x6fa1('0x2b')]=_[_0x6fa1('0x2c')](_0x537182[_0x6fa1('0x29')],_0x537182[_0x6fa1('0x2a')]);_0x34f1f2[_0x6fa1('0x2d')]=_[_0x6fa1('0x2c')](_0x537182[_0x6fa1('0x29')],qs[_0x6fa1('0x2e')](_0x4ccd9b['query'][_0x6fa1('0x2e')]));_0x34f1f2[_0x6fa1('0x2d')]=_0x34f1f2[_0x6fa1('0x2d')][_0x6fa1('0x2f')]?_0x34f1f2[_0x6fa1('0x2d')]:_0x537182['model'];if(!_0x4ccd9b[_0x6fa1('0x2a')][_0x6fa1('0x30')](_0x6fa1('0x31'))){_0x34f1f2[_0x6fa1('0x32')]=qs['limit'](_0x4ccd9b['query'][_0x6fa1('0x32')]);_0x34f1f2[_0x6fa1('0x1c')]=qs['offset'](_0x4ccd9b[_0x6fa1('0x2a')]['offset']);}_0x34f1f2[_0x6fa1('0x33')]=qs[_0x6fa1('0x34')](_0x4ccd9b[_0x6fa1('0x2a')]['sort']);_0x34f1f2['where']=qs[_0x6fa1('0x2b')](_['pick'](_0x4ccd9b['query'],_0x537182[_0x6fa1('0x2b')]),_0xdfb2b5);if(_0x4ccd9b[_0x6fa1('0x2a')]['filter']){_0x34f1f2[_0x6fa1('0x35')]=_[_0x6fa1('0x36')](_0x34f1f2['where'],{'$or':_[_0x6fa1('0x37')](_0xdfb2b5,function(_0x230526){if(_0x230526['type']!==_0x6fa1('0x38')){var _0x247670={};_0x247670[_0x230526[_0x6fa1('0x24')]]={'$like':'%'+_0x4ccd9b[_0x6fa1('0x2a')][_0x6fa1('0x39')]+'%'};return _0x247670;}})});}_0x34f1f2=_[_0x6fa1('0x36')]({},_0x34f1f2,_0x4ccd9b['options']);var _0x3e2291={'where':_0x34f1f2[_0x6fa1('0x35')]};return db[_0x6fa1('0x27')][_0x6fa1('0x1b')](_0x3e2291)[_0x6fa1('0x20')](function(_0x4661ff){_0x1d3bd9['count']=_0x4661ff;if(_0x4ccd9b[_0x6fa1('0x2a')][_0x6fa1('0x3a')]){_0x34f1f2[_0x6fa1('0x3b')]=[{'all':!![]}];}return db[_0x6fa1('0x27')][_0x6fa1('0x3c')](_0x34f1f2);})['then'](function(_0xdc5225){_0x1d3bd9['rows']=_0xdc5225;return _0x1d3bd9;})['then'](respondWithFilteredResult(_0x45ed58,_0x34f1f2))[_0x6fa1('0x3d')](handleError(_0x45ed58,null));};exports[_0x6fa1('0x3e')]=function(_0x54a207,_0x31d1a0){var _0xd31ee={'raw':!![],'where':{'id':_0x54a207['params']['id']}},_0x291b6a={};_0x291b6a[_0x6fa1('0x29')]=_[_0x6fa1('0x3f')](db[_0x6fa1('0x27')][_0x6fa1('0x40')]);_0x291b6a[_0x6fa1('0x2a')]=_[_0x6fa1('0x3f')](_0x54a207[_0x6fa1('0x2a')]);_0x291b6a[_0x6fa1('0x2b')]=_[_0x6fa1('0x2c')](_0x291b6a[_0x6fa1('0x29')],_0x291b6a[_0x6fa1('0x2a')]);_0xd31ee[_0x6fa1('0x2d')]=_[_0x6fa1('0x2c')](_0x291b6a[_0x6fa1('0x29')],qs[_0x6fa1('0x2e')](_0x54a207['query']['fields']));_0xd31ee['attributes']=_0xd31ee[_0x6fa1('0x2d')][_0x6fa1('0x2f')]?_0xd31ee['attributes']:_0x291b6a[_0x6fa1('0x29')];if(_0x54a207['query'][_0x6fa1('0x3a')]){_0xd31ee[_0x6fa1('0x3b')]=[{'all':!![]}];}_0xd31ee=_[_0x6fa1('0x36')]({},_0xd31ee,_0x54a207['options']);return db[_0x6fa1('0x27')][_0x6fa1('0x41')](_0xd31ee)[_0x6fa1('0x20')](handleEntityNotFound(_0x31d1a0,null))[_0x6fa1('0x20')](respondWithResult(_0x31d1a0,null))[_0x6fa1('0x3d')](handleError(_0x31d1a0,null));};exports[_0x6fa1('0x42')]=function(_0x202599,_0x3e9440){return db[_0x6fa1('0x27')][_0x6fa1('0x42')](_0x202599[_0x6fa1('0x43')],{})[_0x6fa1('0x20')](respondWithResult(_0x3e9440,0xc9))[_0x6fa1('0x3d')](handleError(_0x3e9440,null));};exports[_0x6fa1('0x44')]=function(_0x3d5857,_0x2fb613){if(_0x3d5857['body']['id']){delete _0x3d5857['body']['id'];}return db[_0x6fa1('0x27')][_0x6fa1('0x41')]({'where':{'id':_0x3d5857[_0x6fa1('0x45')]['id']}})[_0x6fa1('0x20')](handleEntityNotFound(_0x2fb613,null))[_0x6fa1('0x20')](saveUpdates(_0x3d5857[_0x6fa1('0x43')],null))[_0x6fa1('0x20')](respondWithResult(_0x2fb613,null))['catch'](handleError(_0x2fb613,null));};exports[_0x6fa1('0x21')]=function(_0x3b6b8b,_0x2e7a58){return db[_0x6fa1('0x27')]['find']({'where':{'id':_0x3b6b8b['params']['id']}})[_0x6fa1('0x20')](handleEntityNotFound(_0x2e7a58,null))['then'](removeEntity(_0x2e7a58,null))[_0x6fa1('0x3d')](handleError(_0x2e7a58,null));};exports[_0x6fa1('0x46')]=function(_0x475187,_0x30f33c){return db['MailTransferReport'][_0x6fa1('0x46')]()['then'](respondWithResult(_0x30f33c,null))['catch'](handleError(_0x30f33c,null));};
\ No newline at end of file
+var _0x9925=['Content-Range','apply','reject','save','update','then','sendStatus','error','stack','name','send','index','MailTransferReport','rawAttributes','fieldName','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','type','options','includeAll','include','rows','catch','params','create','body','find','describe','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','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','end','status','json','offset','undefined','limit','count','set'];(function(_0x3d9f08,_0x53ad9f){var _0x401090=function(_0x36a76b){while(--_0x36a76b){_0x3d9f08['push'](_0x3d9f08['shift']());}};_0x401090(++_0x53ad9f);}(_0x9925,0x10f));var _0x5992=function(_0x40246c,_0x14426c){_0x40246c=_0x40246c-0x0;var _0x496fed=_0x9925[_0x40246c];return _0x496fed;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5992('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5992('0x1'));var rp=require(_0x5992('0x2'));var moment=require(_0x5992('0x3'));var BPromise=require(_0x5992('0x4'));var Mustache=require(_0x5992('0x5'));var util=require('util');var path=require(_0x5992('0x6'));var sox=require(_0x5992('0x7'));var csv=require(_0x5992('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x5992('0x9'));var squel=require('squel');var crypto=require(_0x5992('0xa'));var jsforce=require(_0x5992('0xb'));var deskjs=require(_0x5992('0xc'));var toCsv=require(_0x5992('0x8'));var querystring=require(_0x5992('0xd'));var Papa=require('papaparse');var Redis=require(_0x5992('0xe'));var authService=require(_0x5992('0xf'));var qs=require(_0x5992('0x10'));var as=require(_0x5992('0x11'));var hardwareService=require(_0x5992('0x12'));var logger=require(_0x5992('0x13'))(_0x5992('0x14'));var utils=require(_0x5992('0x15'));var config=require(_0x5992('0x16'));var licenseUtil=require(_0x5992('0x17'));var db=require(_0x5992('0x18'))['db'];function respondWithStatusCode(_0x204a2c,_0xccf78f){_0xccf78f=_0xccf78f||0xcc;return function(_0x1f6f5e){if(_0x1f6f5e){return _0x204a2c['sendStatus'](_0xccf78f);}return _0x204a2c['status'](_0xccf78f)[_0x5992('0x19')]();};}function respondWithResult(_0x3127a7,_0xd38804){_0xd38804=_0xd38804||0xc8;return function(_0x563a31){if(_0x563a31){return _0x3127a7[_0x5992('0x1a')](_0xd38804)[_0x5992('0x1b')](_0x563a31);}};}function respondWithFilteredResult(_0x384176,_0x47ae5b){return function(_0x2fac95){if(_0x2fac95){var _0x3e54a4=typeof _0x47ae5b[_0x5992('0x1c')]===_0x5992('0x1d')&&typeof _0x47ae5b[_0x5992('0x1e')]===_0x5992('0x1d');var _0x3f2de7=_0x2fac95[_0x5992('0x1f')];var _0x1b7530=_0x3e54a4?0x0:_0x47ae5b[_0x5992('0x1c')];var _0x471c83=_0x3e54a4?_0x2fac95[_0x5992('0x1f')]:_0x47ae5b[_0x5992('0x1c')]+_0x47ae5b[_0x5992('0x1e')];var _0x567190;if(_0x471c83>=_0x3f2de7){_0x471c83=_0x3f2de7;_0x567190=0xc8;}else{_0x567190=0xce;}_0x384176[_0x5992('0x1a')](_0x567190);return _0x384176[_0x5992('0x20')](_0x5992('0x21'),_0x1b7530+'-'+_0x471c83+'/'+_0x3f2de7)[_0x5992('0x1b')](_0x2fac95);}return null;};}function patchUpdates(_0x41ff54){return function(_0x166156){try{jsonpatch[_0x5992('0x22')](_0x166156,_0x41ff54,!![]);}catch(_0x1c0edb){return BPromise[_0x5992('0x23')](_0x1c0edb);}return _0x166156[_0x5992('0x24')]();};}function saveUpdates(_0x12e722,_0x1550c6){return function(_0x1b397f){if(_0x1b397f){return _0x1b397f[_0x5992('0x25')](_0x12e722)[_0x5992('0x26')](function(_0x450643){return _0x450643;});}return null;};}function removeEntity(_0x40f0b6,_0x28689a){return function(_0x3ea71a){if(_0x3ea71a){return _0x3ea71a['destroy']()[_0x5992('0x26')](function(){_0x40f0b6[_0x5992('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2e297a,_0x239bac){return function(_0x2a989f){if(!_0x2a989f){_0x2e297a[_0x5992('0x27')](0x194);}return _0x2a989f;};}function handleError(_0x1fc8ce,_0x2516e7){_0x2516e7=_0x2516e7||0x1f4;return function(_0x2ede24){logger[_0x5992('0x28')](_0x2ede24[_0x5992('0x29')]);if(_0x2ede24[_0x5992('0x2a')]){delete _0x2ede24[_0x5992('0x2a')];}_0x1fc8ce[_0x5992('0x1a')](_0x2516e7)[_0x5992('0x2b')](_0x2ede24);};}exports[_0x5992('0x2c')]=function(_0x37d17a,_0x339dc3){var _0x26c3e9={},_0x5ddc09={},_0x24d075={'count':0x0,'rows':[]};var _0x5ef1bc=_['map'](db[_0x5992('0x2d')][_0x5992('0x2e')],function(_0x3496f4){return{'name':_0x3496f4[_0x5992('0x2f')],'type':_0x3496f4['type'][_0x5992('0x30')]};});_0x5ddc09[_0x5992('0x31')]=_[_0x5992('0x32')](_0x5ef1bc,'name');_0x5ddc09[_0x5992('0x33')]=_[_0x5992('0x34')](_0x37d17a[_0x5992('0x33')]);_0x5ddc09[_0x5992('0x35')]=_[_0x5992('0x36')](_0x5ddc09[_0x5992('0x31')],_0x5ddc09[_0x5992('0x33')]);_0x26c3e9[_0x5992('0x37')]=_[_0x5992('0x36')](_0x5ddc09[_0x5992('0x31')],qs['fields'](_0x37d17a['query'][_0x5992('0x38')]));_0x26c3e9['attributes']=_0x26c3e9['attributes'][_0x5992('0x39')]?_0x26c3e9[_0x5992('0x37')]:_0x5ddc09[_0x5992('0x31')];if(!_0x37d17a[_0x5992('0x33')][_0x5992('0x3a')](_0x5992('0x3b'))){_0x26c3e9[_0x5992('0x1e')]=qs[_0x5992('0x1e')](_0x37d17a[_0x5992('0x33')][_0x5992('0x1e')]);_0x26c3e9[_0x5992('0x1c')]=qs[_0x5992('0x1c')](_0x37d17a[_0x5992('0x33')][_0x5992('0x1c')]);}_0x26c3e9['order']=qs[_0x5992('0x3c')](_0x37d17a[_0x5992('0x33')][_0x5992('0x3c')]);_0x26c3e9[_0x5992('0x3d')]=qs[_0x5992('0x35')](_[_0x5992('0x3e')](_0x37d17a[_0x5992('0x33')],_0x5ddc09[_0x5992('0x35')]),_0x5ef1bc);if(_0x37d17a['query'][_0x5992('0x3f')]){_0x26c3e9[_0x5992('0x3d')]=_[_0x5992('0x40')](_0x26c3e9['where'],{'$or':_[_0x5992('0x32')](_0x5ef1bc,function(_0x2ecfd1){if(_0x2ecfd1[_0x5992('0x41')]!=='VIRTUAL'){var _0x2ade73={};_0x2ade73[_0x2ecfd1[_0x5992('0x2a')]]={'$like':'%'+_0x37d17a[_0x5992('0x33')][_0x5992('0x3f')]+'%'};return _0x2ade73;}})});}_0x26c3e9=_[_0x5992('0x40')]({},_0x26c3e9,_0x37d17a[_0x5992('0x42')]);var _0x29386f={'where':_0x26c3e9[_0x5992('0x3d')]};return db[_0x5992('0x2d')][_0x5992('0x1f')](_0x29386f)[_0x5992('0x26')](function(_0x410606){_0x24d075[_0x5992('0x1f')]=_0x410606;if(_0x37d17a['query'][_0x5992('0x43')]){_0x26c3e9[_0x5992('0x44')]=[{'all':!![]}];}return db[_0x5992('0x2d')]['findAll'](_0x26c3e9);})[_0x5992('0x26')](function(_0x485ed9){_0x24d075[_0x5992('0x45')]=_0x485ed9;return _0x24d075;})[_0x5992('0x26')](respondWithFilteredResult(_0x339dc3,_0x26c3e9))[_0x5992('0x46')](handleError(_0x339dc3,null));};exports['show']=function(_0x44641e,_0x2d973c){var _0x561a79={'raw':!![],'where':{'id':_0x44641e[_0x5992('0x47')]['id']}},_0xb249fd={};_0xb249fd[_0x5992('0x31')]=_[_0x5992('0x34')](db[_0x5992('0x2d')][_0x5992('0x2e')]);_0xb249fd[_0x5992('0x33')]=_[_0x5992('0x34')](_0x44641e['query']);_0xb249fd['filters']=_[_0x5992('0x36')](_0xb249fd['model'],_0xb249fd['query']);_0x561a79[_0x5992('0x37')]=_[_0x5992('0x36')](_0xb249fd[_0x5992('0x31')],qs[_0x5992('0x38')](_0x44641e[_0x5992('0x33')][_0x5992('0x38')]));_0x561a79[_0x5992('0x37')]=_0x561a79[_0x5992('0x37')]['length']?_0x561a79[_0x5992('0x37')]:_0xb249fd[_0x5992('0x31')];if(_0x44641e[_0x5992('0x33')][_0x5992('0x43')]){_0x561a79[_0x5992('0x44')]=[{'all':!![]}];}_0x561a79=_[_0x5992('0x40')]({},_0x561a79,_0x44641e[_0x5992('0x42')]);return db[_0x5992('0x2d')]['find'](_0x561a79)['then'](handleEntityNotFound(_0x2d973c,null))[_0x5992('0x26')](respondWithResult(_0x2d973c,null))['catch'](handleError(_0x2d973c,null));};exports[_0x5992('0x48')]=function(_0xd5e0df,_0x228261){return db[_0x5992('0x2d')][_0x5992('0x48')](_0xd5e0df[_0x5992('0x49')],{})[_0x5992('0x26')](respondWithResult(_0x228261,0xc9))[_0x5992('0x46')](handleError(_0x228261,null));};exports[_0x5992('0x25')]=function(_0x4dafc3,_0x1b38cd){if(_0x4dafc3[_0x5992('0x49')]['id']){delete _0x4dafc3[_0x5992('0x49')]['id'];}return db['MailTransferReport'][_0x5992('0x4a')]({'where':{'id':_0x4dafc3[_0x5992('0x47')]['id']}})[_0x5992('0x26')](handleEntityNotFound(_0x1b38cd,null))['then'](saveUpdates(_0x4dafc3['body'],null))['then'](respondWithResult(_0x1b38cd,null))[_0x5992('0x46')](handleError(_0x1b38cd,null));};exports['destroy']=function(_0x22ced3,_0x4feec0){return db[_0x5992('0x2d')]['find']({'where':{'id':_0x22ced3[_0x5992('0x47')]['id']}})['then'](handleEntityNotFound(_0x4feec0,null))[_0x5992('0x26')](removeEntity(_0x4feec0,null))[_0x5992('0x46')](handleError(_0x4feec0,null));};exports[_0x5992('0x4b')]=function(_0x65d6d0,_0x5b7302){return db[_0x5992('0x2d')]['describe']()[_0x5992('0x26')](respondWithResult(_0x5b7302,null))[_0x5992('0x46')](handleError(_0x5b7302,null));};
\ No newline at end of file
index 1d3c073..b3fcf15 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5df9=['./mailTransferReport.attributes','exports','define','MailTransferReport','report_mail_transfer','uniqueid','util','../../config/logger','api','request-promise','path','../../config/environment'];(function(_0x17b22c,_0x4b6ca2){var _0x197557=function(_0x396505){while(--_0x396505){_0x17b22c['push'](_0x17b22c['shift']());}};_0x197557(++_0x4b6ca2);}(_0x5df9,0xea));var _0x95df=function(_0x4e518,_0x2b7bdb){_0x4e518=_0x4e518-0x0;var _0xc2b47b=_0x5df9[_0x4e518];return _0xc2b47b;};'use strict';var _=require('lodash');var util=require(_0x95df('0x0'));var logger=require(_0x95df('0x1'))(_0x95df('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x95df('0x3'));var fs=require('fs');var path=require(_0x95df('0x4'));var rimraf=require('rimraf');var config=require(_0x95df('0x5'));var attributes=require(_0x95df('0x6'));module[_0x95df('0x7')]=function(_0x2658ce,_0x49414f){return _0x2658ce[_0x95df('0x8')](_0x95df('0x9'),attributes,{'tableName':_0x95df('0xa'),'paranoid':![],'indexes':[{'name':_0x95df('0xb'),'fields':[_0x95df('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x776f=['./mailTransferReport.attributes','exports','define','report_mail_transfer','uniqueid','../../config/logger','api','moment','bluebird','request-promise','rimraf'];(function(_0x4d07cc,_0x587613){var _0x42de3b=function(_0x201f78){while(--_0x201f78){_0x4d07cc['push'](_0x4d07cc['shift']());}};_0x42de3b(++_0x587613);}(_0x776f,0x68));var _0xf776=function(_0x316ad3,_0x24e897){_0x316ad3=_0x316ad3-0x0;var _0x1d81e0=_0x776f[_0x316ad3];return _0x1d81e0;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xf776('0x0'))(_0xf776('0x1'));var moment=require(_0xf776('0x2'));var BPromise=require(_0xf776('0x3'));var rp=require(_0xf776('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xf776('0x5'));var config=require('../../config/environment');var attributes=require(_0xf776('0x6'));module[_0xf776('0x7')]=function(_0x586c8b,_0x371d9c){return _0x586c8b[_0xf776('0x8')]('MailTransferReport',attributes,{'tableName':_0xf776('0x9'),'paranoid':![],'indexes':[{'name':_0xf776('0xa'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 22f69a9..77fd223 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf23e=['rpc','../../config/environment','jayson/promise','client','http','request','then','info','MailTransferReport,\x20%s,\x20%s','request\x20sent','debug','MailTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0xb3debb,_0x3fbece){var _0x38df7f=function(_0x5e386c){while(--_0x5e386c){_0xb3debb['push'](_0xb3debb['shift']());}};_0x38df7f(++_0x3fbece);}(_0xf23e,0xd2));var _0xef23=function(_0x476bf4,_0x2a3755){_0x476bf4=_0x476bf4-0x0;var _0x788ffe=_0xf23e[_0x476bf4];return _0x788ffe;};'use strict';var _=require(_0xef23('0x0'));var util=require(_0xef23('0x1'));var moment=require('moment');var BPromise=require(_0xef23('0x2'));var rs=require(_0xef23('0x3'));var fs=require('fs');var Redis=require(_0xef23('0x4'));var db=require(_0xef23('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xef23('0x6'));var config=require(_0xef23('0x7'));var jayson=require(_0xef23('0x8'));var client=jayson[_0xef23('0x9')][_0xef23('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x30d648,_0x4c785d,_0x562f97){return new BPromise(function(_0x24d9b5,_0x482acb){return client[_0xef23('0xb')](_0x30d648,_0x562f97)[_0xef23('0xc')](function(_0x459af1){logger[_0xef23('0xd')](_0xef23('0xe'),_0x4c785d,_0xef23('0xf'));logger[_0xef23('0x10')](_0xef23('0x11'),_0x4c785d,'request\x20sent',JSON[_0xef23('0x12')](_0x459af1));if(_0x459af1[_0xef23('0x13')]){if(_0x459af1['error'][_0xef23('0x14')]===0x1f4){logger[_0xef23('0x13')]('MailTransferReport,\x20%s,\x20%s',_0x4c785d,_0x459af1[_0xef23('0x13')]['message']);return _0x482acb(_0x459af1['error']['message']);}logger[_0xef23('0x13')]('MailTransferReport,\x20%s,\x20%s',_0x4c785d,_0x459af1[_0xef23('0x13')][_0xef23('0x15')]);return _0x24d9b5(_0x459af1[_0xef23('0x13')][_0xef23('0x15')]);}else{logger['info']('MailTransferReport,\x20%s,\x20%s',_0x4c785d,'request\x20sent');_0x24d9b5(_0x459af1[_0xef23('0x16')][_0xef23('0x15')]);}})[_0xef23('0x17')](function(_0x12ca40){logger[_0xef23('0x13')](_0xef23('0xe'),_0x4c785d,_0x12ca40);_0x482acb(_0x12ca40);});});}
\ No newline at end of file
+var _0x1e98=['client','http','request','then','info','MailTransferReport,\x20%s,\x20%s','request\x20sent','debug','MailTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise'];(function(_0x1c2aeb,_0x48433c){var _0x783379=function(_0x3e8820){while(--_0x3e8820){_0x1c2aeb['push'](_0x1c2aeb['shift']());}};_0x783379(++_0x48433c);}(_0x1e98,0x73));var _0x81e9=function(_0x27c24e,_0x5db1c7){_0x27c24e=_0x27c24e-0x0;var _0x39004a=_0x1e98[_0x27c24e];return _0x39004a;};'use strict';var _=require(_0x81e9('0x0'));var util=require(_0x81e9('0x1'));var moment=require(_0x81e9('0x2'));var BPromise=require(_0x81e9('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x81e9('0x4'));var db=require(_0x81e9('0x5'))['db'];var utils=require(_0x81e9('0x6'));var logger=require('../../config/logger')(_0x81e9('0x7'));var config=require(_0x81e9('0x8'));var jayson=require(_0x81e9('0x9'));var client=jayson[_0x81e9('0xa')][_0x81e9('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x172098,_0x344662,_0x5cac2a){return new BPromise(function(_0x557bd4,_0x1aca1b){return client[_0x81e9('0xc')](_0x172098,_0x5cac2a)[_0x81e9('0xd')](function(_0x382286){logger[_0x81e9('0xe')](_0x81e9('0xf'),_0x344662,_0x81e9('0x10'));logger[_0x81e9('0x11')](_0x81e9('0x12'),_0x344662,'request\x20sent',JSON[_0x81e9('0x13')](_0x382286));if(_0x382286[_0x81e9('0x14')]){if(_0x382286[_0x81e9('0x14')][_0x81e9('0x15')]===0x1f4){logger['error'](_0x81e9('0xf'),_0x344662,_0x382286[_0x81e9('0x14')][_0x81e9('0x16')]);return _0x1aca1b(_0x382286[_0x81e9('0x14')][_0x81e9('0x16')]);}logger[_0x81e9('0x14')](_0x81e9('0xf'),_0x344662,_0x382286[_0x81e9('0x14')]['message']);return _0x557bd4(_0x382286['error'][_0x81e9('0x16')]);}else{logger[_0x81e9('0xe')]('MailTransferReport,\x20%s,\x20%s',_0x344662,_0x81e9('0x10'));_0x557bd4(_0x382286[_0x81e9('0x17')][_0x81e9('0x16')]);}})[_0x81e9('0x18')](function(_0x4cd0f9){logger[_0x81e9('0x14')](_0x81e9('0xf'),_0x344662,_0x4cd0f9);_0x1aca1b(_0x4cd0f9);});});}
\ No newline at end of file
index ee0268e..0c492dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe56c=['../../config/environment','get','isAuthenticated','describe','/:id','show','post','create','update','exports','util','path','connect-timeout','Router','fs-extra','../../components/auth/service'];(function(_0x563e99,_0x181622){var _0x196311=function(_0x2d7dac){while(--_0x2d7dac){_0x563e99['push'](_0x563e99['shift']());}};_0x196311(++_0x181622);}(_0xe56c,0xca));var _0xce56=function(_0x475d21,_0x5f02ae){_0x475d21=_0x475d21-0x0;var _0x2c7534=_0xe56c[_0x475d21];return _0x2c7534;};'use strict';var multer=require('multer');var util=require(_0xce56('0x0'));var path=require(_0xce56('0x1'));var timeout=require(_0xce56('0x2'));var express=require('express');var router=express[_0xce56('0x3')]();var fs_extra=require(_0xce56('0x4'));var auth=require(_0xce56('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xce56('0x6'));var controller=require('./memberReport.controller');router[_0xce56('0x7')]('/',auth['isAuthenticated'](),controller['index']);router['get']('/describe',auth[_0xce56('0x8')](),controller[_0xce56('0x9')]);router[_0xce56('0x7')](_0xce56('0xa'),auth[_0xce56('0x8')](),controller[_0xce56('0xb')]);router[_0xce56('0xc')]('/',auth[_0xce56('0x8')](),controller[_0xce56('0xd')]);router['put'](_0xce56('0xa'),auth['isAuthenticated'](),controller[_0xce56('0xe')]);router['delete'](_0xce56('0xa'),auth[_0xce56('0x8')](),controller['destroy']);module[_0xce56('0xf')]=router;
\ No newline at end of file
+var _0x379c=['path','connect-timeout','express','Router','../../config/environment','./memberReport.controller','get','index','/describe','describe','isAuthenticated','show','post','put','update','delete','/:id','destroy','exports','multer','util'];(function(_0x556b6e,_0x5782ee){var _0x3af68d=function(_0x2ec249){while(--_0x2ec249){_0x556b6e['push'](_0x556b6e['shift']());}};_0x3af68d(++_0x5782ee);}(_0x379c,0xbb));var _0xc379=function(_0x71d00a,_0x10f9ea){_0x71d00a=_0x71d00a-0x0;var _0x273c6a=_0x379c[_0x71d00a];return _0x273c6a;};'use strict';var multer=require(_0xc379('0x0'));var util=require(_0xc379('0x1'));var path=require(_0xc379('0x2'));var timeout=require(_0xc379('0x3'));var express=require(_0xc379('0x4'));var router=express[_0xc379('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xc379('0x6'));var controller=require(_0xc379('0x7'));router[_0xc379('0x8')]('/',auth['isAuthenticated'](),controller[_0xc379('0x9')]);router[_0xc379('0x8')](_0xc379('0xa'),auth['isAuthenticated'](),controller[_0xc379('0xb')]);router[_0xc379('0x8')]('/:id',auth[_0xc379('0xc')](),controller[_0xc379('0xd')]);router[_0xc379('0xe')]('/',auth[_0xc379('0xc')](),controller['create']);router[_0xc379('0xf')]('/:id',auth[_0xc379('0xc')](),controller[_0xc379('0x10')]);router[_0xc379('0x11')](_0xc379('0x12'),auth[_0xc379('0xc')](),controller[_0xc379('0x13')]);module[_0xc379('0x14')]=router;
\ No newline at end of file
index cc7535c..97b6a89 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6055=['seconds','setDataValue','exitAt','talk:[destination]','talk:[dial\x20string]','sequelize','moment','exports','STRING','DEFAULT\x20PAUSE','LOGIN,\x20PAUSE,\x20TALKING','INTEGER','DATE','enterAt','diff'];(function(_0x41930d,_0x478ed3){var _0x455ade=function(_0x24cb07){while(--_0x24cb07){_0x41930d['push'](_0x41930d['shift']());}};_0x455ade(++_0x478ed3);}(_0x6055,0x9b));var _0x5605=function(_0x255b6c,_0x44c7f4){_0x255b6c=_0x255b6c-0x0;var _0x21b107=_0x6055[_0x255b6c];return _0x21b107;};'use strict';var Sequelize=require(_0x5605('0x0'));var moment=require(_0x5605('0x1'));module[_0x5605('0x2')]={'channel':{'type':Sequelize[_0x5605('0x3')]},'membername':{'type':Sequelize[_0x5605('0x3')]},'interface':{'type':Sequelize[_0x5605('0x3')]},'type':{'type':Sequelize[_0x5605('0x3')],'defaultValue':_0x5605('0x4'),'comment':_0x5605('0x5')},'duration':{'type':Sequelize[_0x5605('0x6')]},'enterAt':{'type':Sequelize[_0x5605('0x7')]},'exitAt':{'type':Sequelize[_0x5605('0x7')],'set':function(_0x23f63d){var _0x82aa72=moment(_0x23f63d);var _0x3a8d2c=moment(this['getDataValue'](_0x5605('0x8')));var _0x56424e=_0x82aa72[_0x5605('0x9')](_0x3a8d2c,_0x5605('0xa'));this[_0x5605('0xb')](_0x5605('0xc'),_0x23f63d);this[_0x5605('0xb')]('duration',_0x56424e>=0x0?_0x56424e:null);}},'data1':{'type':Sequelize[_0x5605('0x3')],'comment':'talk:[inbound,\x20outbound],\x20pause:[reason]'},'data2':{'type':Sequelize[_0x5605('0x3')],'comment':'talk:[start]'},'data3':{'type':Sequelize[_0x5605('0x3')],'comment':_0x5605('0xd')},'data4':{'type':Sequelize[_0x5605('0x3')],'comment':_0x5605('0xe')},'data5':{'type':Sequelize[_0x5605('0x3')],'comment':'talk:[queue]'},'role':{'type':Sequelize['STRING']},'internal':{'type':Sequelize[_0x5605('0x6')]},'uniqueid':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xb0fa=['talk:[start]','talk:[dial\x20string]','INTEGER','exports','STRING','LOGIN,\x20PAUSE,\x20TALKING','DATE','getDataValue','diff','seconds','setDataValue','duration','talk:[inbound,\x20outbound],\x20pause:[reason]'];(function(_0x3001e2,_0xdc181e){var _0x277ace=function(_0x4be882){while(--_0x4be882){_0x3001e2['push'](_0x3001e2['shift']());}};_0x277ace(++_0xdc181e);}(_0xb0fa,0xd3));var _0xab0f=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xb0fa[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require('sequelize');var moment=require('moment');module[_0xab0f('0x0')]={'channel':{'type':Sequelize[_0xab0f('0x1')]},'membername':{'type':Sequelize[_0xab0f('0x1')]},'interface':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0xab0f('0x1')],'defaultValue':'DEFAULT\x20PAUSE','comment':_0xab0f('0x2')},'duration':{'type':Sequelize['INTEGER']},'enterAt':{'type':Sequelize[_0xab0f('0x3')]},'exitAt':{'type':Sequelize['DATE'],'set':function(_0x7ae756){var _0x174505=moment(_0x7ae756);var _0x20fc61=moment(this[_0xab0f('0x4')]('enterAt'));var _0x14e0b8=_0x174505[_0xab0f('0x5')](_0x20fc61,_0xab0f('0x6'));this[_0xab0f('0x7')]('exitAt',_0x7ae756);this[_0xab0f('0x7')](_0xab0f('0x8'),_0x14e0b8>=0x0?_0x14e0b8:null);}},'data1':{'type':Sequelize[_0xab0f('0x1')],'comment':_0xab0f('0x9')},'data2':{'type':Sequelize[_0xab0f('0x1')],'comment':_0xab0f('0xa')},'data3':{'type':Sequelize[_0xab0f('0x1')],'comment':'talk:[destination]'},'data4':{'type':Sequelize[_0xab0f('0x1')],'comment':_0xab0f('0xb')},'data5':{'type':Sequelize[_0xab0f('0x1')],'comment':'talk:[queue]'},'role':{'type':Sequelize['STRING']},'internal':{'type':Sequelize[_0xab0f('0xc')]},'uniqueid':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 01e2b3b..a31cfdc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x008c=['destroy','sendStatus','send','index','MemberReport','rawAttributes','key','model','map','name','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','type','VIRTUAL','filter','merge','options','includeAll','include','findAll','rows','show','catch','create','body','find','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','papaparse','ioredis','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','status','json','offset','undefined','limit','count','save','update','then'];(function(_0x222c59,_0x40783f){var _0x1b9ee3=function(_0x3d7100){while(--_0x3d7100){_0x222c59['push'](_0x222c59['shift']());}};_0x1b9ee3(++_0x40783f);}(_0x008c,0x188));var _0xc008=function(_0x17406e,_0x1049fd){_0x17406e=_0x17406e-0x0;var _0x2bfc5a=_0x008c[_0x17406e];return _0x2bfc5a;};'use strict';var emlformat=require(_0xc008('0x0'));var rimraf=require(_0xc008('0x1'));var zipdir=require(_0xc008('0x2'));var jsonpatch=require(_0xc008('0x3'));var rp=require(_0xc008('0x4'));var moment=require('moment');var BPromise=require(_0xc008('0x5'));var Mustache=require(_0xc008('0x6'));var util=require(_0xc008('0x7'));var path=require(_0xc008('0x8'));var sox=require(_0xc008('0x9'));var csv=require(_0xc008('0xa'));var ejs=require(_0xc008('0xb'));var fs=require('fs');var fs_extra=require(_0xc008('0xc'));var _=require(_0xc008('0xd'));var squel=require('squel');var crypto=require(_0xc008('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xc008('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xc008('0x10'));var Redis=require(_0xc008('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc008('0x12'));var logger=require(_0xc008('0x13'))('api');var utils=require(_0xc008('0x14'));var config=require(_0xc008('0x15'));var licenseUtil=require(_0xc008('0x16'));var db=require(_0xc008('0x17'))['db'];function respondWithStatusCode(_0x9ffa93,_0x1819c6){_0x1819c6=_0x1819c6||0xcc;return function(_0x69726e){if(_0x69726e){return _0x9ffa93['sendStatus'](_0x1819c6);}return _0x9ffa93['status'](_0x1819c6)[_0xc008('0x18')]();};}function respondWithResult(_0x50c1ab,_0x25e13f){_0x25e13f=_0x25e13f||0xc8;return function(_0x4584e1){if(_0x4584e1){return _0x50c1ab[_0xc008('0x19')](_0x25e13f)[_0xc008('0x1a')](_0x4584e1);}};}function respondWithFilteredResult(_0x3f0ecf,_0x5ee00b){return function(_0x5e894e){if(_0x5e894e){var _0x4bd0f4=typeof _0x5ee00b[_0xc008('0x1b')]===_0xc008('0x1c')&&typeof _0x5ee00b[_0xc008('0x1d')]===_0xc008('0x1c');var _0x4fe771=_0x5e894e['count'];var _0x540e45=_0x4bd0f4?0x0:_0x5ee00b['offset'];var _0x46042b=_0x4bd0f4?_0x5e894e[_0xc008('0x1e')]:_0x5ee00b['offset']+_0x5ee00b[_0xc008('0x1d')];var _0x5906e6;if(_0x46042b>=_0x4fe771){_0x46042b=_0x4fe771;_0x5906e6=0xc8;}else{_0x5906e6=0xce;}_0x3f0ecf['status'](_0x5906e6);return _0x3f0ecf['set']('Content-Range',_0x540e45+'-'+_0x46042b+'/'+_0x4fe771)[_0xc008('0x1a')](_0x5e894e);}return null;};}function patchUpdates(_0x4b9726){return function(_0x5560b1){try{jsonpatch['apply'](_0x5560b1,_0x4b9726,!![]);}catch(_0x4a582d){return BPromise['reject'](_0x4a582d);}return _0x5560b1[_0xc008('0x1f')]();};}function saveUpdates(_0x4777a6,_0x251db2){return function(_0x415af3){if(_0x415af3){return _0x415af3[_0xc008('0x20')](_0x4777a6)[_0xc008('0x21')](function(_0x4f43e2){return _0x4f43e2;});}return null;};}function removeEntity(_0x459fd9,_0x5c85f2){return function(_0x58a6ea){if(_0x58a6ea){return _0x58a6ea[_0xc008('0x22')]()[_0xc008('0x21')](function(){_0x459fd9[_0xc008('0x19')](0xcc)[_0xc008('0x18')]();});}};}function handleEntityNotFound(_0x5410f5,_0x48582b){return function(_0x5de1e9){if(!_0x5de1e9){_0x5410f5[_0xc008('0x23')](0x194);}return _0x5de1e9;};}function handleError(_0x15dade,_0x92c582){_0x92c582=_0x92c582||0x1f4;return function(_0x2e31c2){logger['error'](_0x2e31c2['stack']);if(_0x2e31c2['name']){delete _0x2e31c2['name'];}_0x15dade['status'](_0x92c582)[_0xc008('0x24')](_0x2e31c2);};}exports[_0xc008('0x25')]=function(_0x25eae4,_0x529961){var _0x24c14c={},_0x32390d={},_0x209591={'count':0x0,'rows':[]};var _0x2a7d4f=_['map'](db[_0xc008('0x26')][_0xc008('0x27')],function(_0x53ed35){return{'name':_0x53ed35['fieldName'],'type':_0x53ed35['type'][_0xc008('0x28')]};});_0x32390d[_0xc008('0x29')]=_[_0xc008('0x2a')](_0x2a7d4f,_0xc008('0x2b'));_0x32390d[_0xc008('0x2c')]=_[_0xc008('0x2d')](_0x25eae4[_0xc008('0x2c')]);_0x32390d[_0xc008('0x2e')]=_[_0xc008('0x2f')](_0x32390d[_0xc008('0x29')],_0x32390d[_0xc008('0x2c')]);_0x24c14c[_0xc008('0x30')]=_['intersection'](_0x32390d[_0xc008('0x29')],qs[_0xc008('0x31')](_0x25eae4['query'][_0xc008('0x31')]));_0x24c14c[_0xc008('0x30')]=_0x24c14c[_0xc008('0x30')][_0xc008('0x32')]?_0x24c14c[_0xc008('0x30')]:_0x32390d[_0xc008('0x29')];if(!_0x25eae4[_0xc008('0x2c')][_0xc008('0x33')](_0xc008('0x34'))){_0x24c14c['limit']=qs[_0xc008('0x1d')](_0x25eae4[_0xc008('0x2c')][_0xc008('0x1d')]);_0x24c14c[_0xc008('0x1b')]=qs[_0xc008('0x1b')](_0x25eae4[_0xc008('0x2c')][_0xc008('0x1b')]);}_0x24c14c['order']=qs[_0xc008('0x35')](_0x25eae4[_0xc008('0x2c')]['sort']);_0x24c14c[_0xc008('0x36')]=qs[_0xc008('0x2e')](_['pick'](_0x25eae4[_0xc008('0x2c')],_0x32390d[_0xc008('0x2e')]),_0x2a7d4f);if(_0x25eae4[_0xc008('0x2c')]['filter']){_0x24c14c['where']=_['merge'](_0x24c14c[_0xc008('0x36')],{'$or':_['map'](_0x2a7d4f,function(_0x3dd0ac){if(_0x3dd0ac[_0xc008('0x37')]!==_0xc008('0x38')){var _0x440459={};_0x440459[_0x3dd0ac[_0xc008('0x2b')]]={'$like':'%'+_0x25eae4[_0xc008('0x2c')][_0xc008('0x39')]+'%'};return _0x440459;}})});}_0x24c14c=_[_0xc008('0x3a')]({},_0x24c14c,_0x25eae4[_0xc008('0x3b')]);var _0x387dfd={'where':_0x24c14c[_0xc008('0x36')]};return db[_0xc008('0x26')][_0xc008('0x1e')](_0x387dfd)[_0xc008('0x21')](function(_0x4cace5){_0x209591[_0xc008('0x1e')]=_0x4cace5;if(_0x25eae4[_0xc008('0x2c')][_0xc008('0x3c')]){_0x24c14c[_0xc008('0x3d')]=[{'all':!![]}];}return db['MemberReport'][_0xc008('0x3e')](_0x24c14c);})[_0xc008('0x21')](function(_0xc8cb91){_0x209591[_0xc008('0x3f')]=_0xc8cb91;return _0x209591;})[_0xc008('0x21')](respondWithFilteredResult(_0x529961,_0x24c14c))['catch'](handleError(_0x529961,null));};exports[_0xc008('0x40')]=function(_0x3323f4,_0x3794b0){var _0x3e9a99={'raw':!![],'where':{'id':_0x3323f4['params']['id']}},_0x7279e8={};_0x7279e8[_0xc008('0x29')]=_[_0xc008('0x2d')](db[_0xc008('0x26')][_0xc008('0x27')]);_0x7279e8['query']=_[_0xc008('0x2d')](_0x3323f4[_0xc008('0x2c')]);_0x7279e8[_0xc008('0x2e')]=_['intersection'](_0x7279e8[_0xc008('0x29')],_0x7279e8['query']);_0x3e9a99[_0xc008('0x30')]=_['intersection'](_0x7279e8[_0xc008('0x29')],qs[_0xc008('0x31')](_0x3323f4['query'][_0xc008('0x31')]));_0x3e9a99[_0xc008('0x30')]=_0x3e9a99[_0xc008('0x30')]['length']?_0x3e9a99[_0xc008('0x30')]:_0x7279e8[_0xc008('0x29')];if(_0x3323f4[_0xc008('0x2c')][_0xc008('0x3c')]){_0x3e9a99[_0xc008('0x3d')]=[{'all':!![]}];}_0x3e9a99=_[_0xc008('0x3a')]({},_0x3e9a99,_0x3323f4['options']);return db['MemberReport']['find'](_0x3e9a99)[_0xc008('0x21')](handleEntityNotFound(_0x3794b0,null))[_0xc008('0x21')](respondWithResult(_0x3794b0,null))[_0xc008('0x41')](handleError(_0x3794b0,null));};exports[_0xc008('0x42')]=function(_0x25289f,_0x24f6a4){return db[_0xc008('0x26')][_0xc008('0x42')](_0x25289f['body'],{})['then'](respondWithResult(_0x24f6a4,0xc9))['catch'](handleError(_0x24f6a4,null));};exports[_0xc008('0x20')]=function(_0x2651cf,_0x158eae){if(_0x2651cf['body']['id']){delete _0x2651cf[_0xc008('0x43')]['id'];}return db[_0xc008('0x26')][_0xc008('0x44')]({'where':{'id':_0x2651cf[_0xc008('0x45')]['id']}})[_0xc008('0x21')](handleEntityNotFound(_0x158eae,null))[_0xc008('0x21')](saveUpdates(_0x2651cf[_0xc008('0x43')],null))[_0xc008('0x21')](respondWithResult(_0x158eae,null))[_0xc008('0x41')](handleError(_0x158eae,null));};exports[_0xc008('0x22')]=function(_0x52c444,_0x4c63d4){return db[_0xc008('0x26')]['find']({'where':{'id':_0x52c444[_0xc008('0x45')]['id']}})[_0xc008('0x21')](handleEntityNotFound(_0x4c63d4,null))[_0xc008('0x21')](removeEntity(_0x4c63d4,null))['catch'](handleError(_0x4c63d4,null));};exports[_0xc008('0x46')]=function(_0x32b435,_0xee64){return db[_0xc008('0x26')][_0xc008('0x46')]()['then'](respondWithResult(_0xee64,null))[_0xc008('0x41')](handleError(_0xee64,null));};
\ No newline at end of file
+var _0x008c=['destroy','sendStatus','send','index','MemberReport','rawAttributes','key','model','map','name','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','type','VIRTUAL','filter','merge','options','includeAll','include','findAll','rows','show','catch','create','body','find','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','papaparse','ioredis','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','status','json','offset','undefined','limit','count','save','update','then'];(function(_0x1c7ac2,_0x295452){var _0xa6128f=function(_0xf5eee4){while(--_0xf5eee4){_0x1c7ac2['push'](_0x1c7ac2['shift']());}};_0xa6128f(++_0x295452);}(_0x008c,0x188));var _0xc008=function(_0x2a0812,_0x256c48){_0x2a0812=_0x2a0812-0x0;var _0x237a38=_0x008c[_0x2a0812];return _0x237a38;};'use strict';var emlformat=require(_0xc008('0x0'));var rimraf=require(_0xc008('0x1'));var zipdir=require(_0xc008('0x2'));var jsonpatch=require(_0xc008('0x3'));var rp=require(_0xc008('0x4'));var moment=require('moment');var BPromise=require(_0xc008('0x5'));var Mustache=require(_0xc008('0x6'));var util=require(_0xc008('0x7'));var path=require(_0xc008('0x8'));var sox=require(_0xc008('0x9'));var csv=require(_0xc008('0xa'));var ejs=require(_0xc008('0xb'));var fs=require('fs');var fs_extra=require(_0xc008('0xc'));var _=require(_0xc008('0xd'));var squel=require('squel');var crypto=require(_0xc008('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xc008('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xc008('0x10'));var Redis=require(_0xc008('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc008('0x12'));var logger=require(_0xc008('0x13'))('api');var utils=require(_0xc008('0x14'));var config=require(_0xc008('0x15'));var licenseUtil=require(_0xc008('0x16'));var db=require(_0xc008('0x17'))['db'];function respondWithStatusCode(_0x9ffa93,_0x1819c6){_0x1819c6=_0x1819c6||0xcc;return function(_0x69726e){if(_0x69726e){return _0x9ffa93['sendStatus'](_0x1819c6);}return _0x9ffa93['status'](_0x1819c6)[_0xc008('0x18')]();};}function respondWithResult(_0x50c1ab,_0x25e13f){_0x25e13f=_0x25e13f||0xc8;return function(_0x4584e1){if(_0x4584e1){return _0x50c1ab[_0xc008('0x19')](_0x25e13f)[_0xc008('0x1a')](_0x4584e1);}};}function respondWithFilteredResult(_0x3f0ecf,_0x5ee00b){return function(_0x5e894e){if(_0x5e894e){var _0x4bd0f4=typeof _0x5ee00b[_0xc008('0x1b')]===_0xc008('0x1c')&&typeof _0x5ee00b[_0xc008('0x1d')]===_0xc008('0x1c');var _0x4fe771=_0x5e894e['count'];var _0x540e45=_0x4bd0f4?0x0:_0x5ee00b['offset'];var _0x46042b=_0x4bd0f4?_0x5e894e[_0xc008('0x1e')]:_0x5ee00b['offset']+_0x5ee00b[_0xc008('0x1d')];var _0x5906e6;if(_0x46042b>=_0x4fe771){_0x46042b=_0x4fe771;_0x5906e6=0xc8;}else{_0x5906e6=0xce;}_0x3f0ecf['status'](_0x5906e6);return _0x3f0ecf['set']('Content-Range',_0x540e45+'-'+_0x46042b+'/'+_0x4fe771)[_0xc008('0x1a')](_0x5e894e);}return null;};}function patchUpdates(_0x4b9726){return function(_0x5560b1){try{jsonpatch['apply'](_0x5560b1,_0x4b9726,!![]);}catch(_0x4a582d){return BPromise['reject'](_0x4a582d);}return _0x5560b1[_0xc008('0x1f')]();};}function saveUpdates(_0x4777a6,_0x251db2){return function(_0x415af3){if(_0x415af3){return _0x415af3[_0xc008('0x20')](_0x4777a6)[_0xc008('0x21')](function(_0x4f43e2){return _0x4f43e2;});}return null;};}function removeEntity(_0x459fd9,_0x5c85f2){return function(_0x58a6ea){if(_0x58a6ea){return _0x58a6ea[_0xc008('0x22')]()[_0xc008('0x21')](function(){_0x459fd9[_0xc008('0x19')](0xcc)[_0xc008('0x18')]();});}};}function handleEntityNotFound(_0x5410f5,_0x48582b){return function(_0x5de1e9){if(!_0x5de1e9){_0x5410f5[_0xc008('0x23')](0x194);}return _0x5de1e9;};}function handleError(_0x15dade,_0x92c582){_0x92c582=_0x92c582||0x1f4;return function(_0x2e31c2){logger['error'](_0x2e31c2['stack']);if(_0x2e31c2['name']){delete _0x2e31c2['name'];}_0x15dade['status'](_0x92c582)[_0xc008('0x24')](_0x2e31c2);};}exports[_0xc008('0x25')]=function(_0x25eae4,_0x529961){var _0x24c14c={},_0x32390d={},_0x209591={'count':0x0,'rows':[]};var _0x2a7d4f=_['map'](db[_0xc008('0x26')][_0xc008('0x27')],function(_0x53ed35){return{'name':_0x53ed35['fieldName'],'type':_0x53ed35['type'][_0xc008('0x28')]};});_0x32390d[_0xc008('0x29')]=_[_0xc008('0x2a')](_0x2a7d4f,_0xc008('0x2b'));_0x32390d[_0xc008('0x2c')]=_[_0xc008('0x2d')](_0x25eae4[_0xc008('0x2c')]);_0x32390d[_0xc008('0x2e')]=_[_0xc008('0x2f')](_0x32390d[_0xc008('0x29')],_0x32390d[_0xc008('0x2c')]);_0x24c14c[_0xc008('0x30')]=_['intersection'](_0x32390d[_0xc008('0x29')],qs[_0xc008('0x31')](_0x25eae4['query'][_0xc008('0x31')]));_0x24c14c[_0xc008('0x30')]=_0x24c14c[_0xc008('0x30')][_0xc008('0x32')]?_0x24c14c[_0xc008('0x30')]:_0x32390d[_0xc008('0x29')];if(!_0x25eae4[_0xc008('0x2c')][_0xc008('0x33')](_0xc008('0x34'))){_0x24c14c['limit']=qs[_0xc008('0x1d')](_0x25eae4[_0xc008('0x2c')][_0xc008('0x1d')]);_0x24c14c[_0xc008('0x1b')]=qs[_0xc008('0x1b')](_0x25eae4[_0xc008('0x2c')][_0xc008('0x1b')]);}_0x24c14c['order']=qs[_0xc008('0x35')](_0x25eae4[_0xc008('0x2c')]['sort']);_0x24c14c[_0xc008('0x36')]=qs[_0xc008('0x2e')](_['pick'](_0x25eae4[_0xc008('0x2c')],_0x32390d[_0xc008('0x2e')]),_0x2a7d4f);if(_0x25eae4[_0xc008('0x2c')]['filter']){_0x24c14c['where']=_['merge'](_0x24c14c[_0xc008('0x36')],{'$or':_['map'](_0x2a7d4f,function(_0x3dd0ac){if(_0x3dd0ac[_0xc008('0x37')]!==_0xc008('0x38')){var _0x440459={};_0x440459[_0x3dd0ac[_0xc008('0x2b')]]={'$like':'%'+_0x25eae4[_0xc008('0x2c')][_0xc008('0x39')]+'%'};return _0x440459;}})});}_0x24c14c=_[_0xc008('0x3a')]({},_0x24c14c,_0x25eae4[_0xc008('0x3b')]);var _0x387dfd={'where':_0x24c14c[_0xc008('0x36')]};return db[_0xc008('0x26')][_0xc008('0x1e')](_0x387dfd)[_0xc008('0x21')](function(_0x4cace5){_0x209591[_0xc008('0x1e')]=_0x4cace5;if(_0x25eae4[_0xc008('0x2c')][_0xc008('0x3c')]){_0x24c14c[_0xc008('0x3d')]=[{'all':!![]}];}return db['MemberReport'][_0xc008('0x3e')](_0x24c14c);})[_0xc008('0x21')](function(_0xc8cb91){_0x209591[_0xc008('0x3f')]=_0xc8cb91;return _0x209591;})[_0xc008('0x21')](respondWithFilteredResult(_0x529961,_0x24c14c))['catch'](handleError(_0x529961,null));};exports[_0xc008('0x40')]=function(_0x3323f4,_0x3794b0){var _0x3e9a99={'raw':!![],'where':{'id':_0x3323f4['params']['id']}},_0x7279e8={};_0x7279e8[_0xc008('0x29')]=_[_0xc008('0x2d')](db[_0xc008('0x26')][_0xc008('0x27')]);_0x7279e8['query']=_[_0xc008('0x2d')](_0x3323f4[_0xc008('0x2c')]);_0x7279e8[_0xc008('0x2e')]=_['intersection'](_0x7279e8[_0xc008('0x29')],_0x7279e8['query']);_0x3e9a99[_0xc008('0x30')]=_['intersection'](_0x7279e8[_0xc008('0x29')],qs[_0xc008('0x31')](_0x3323f4['query'][_0xc008('0x31')]));_0x3e9a99[_0xc008('0x30')]=_0x3e9a99[_0xc008('0x30')]['length']?_0x3e9a99[_0xc008('0x30')]:_0x7279e8[_0xc008('0x29')];if(_0x3323f4[_0xc008('0x2c')][_0xc008('0x3c')]){_0x3e9a99[_0xc008('0x3d')]=[{'all':!![]}];}_0x3e9a99=_[_0xc008('0x3a')]({},_0x3e9a99,_0x3323f4['options']);return db['MemberReport']['find'](_0x3e9a99)[_0xc008('0x21')](handleEntityNotFound(_0x3794b0,null))[_0xc008('0x21')](respondWithResult(_0x3794b0,null))[_0xc008('0x41')](handleError(_0x3794b0,null));};exports[_0xc008('0x42')]=function(_0x25289f,_0x24f6a4){return db[_0xc008('0x26')][_0xc008('0x42')](_0x25289f['body'],{})['then'](respondWithResult(_0x24f6a4,0xc9))['catch'](handleError(_0x24f6a4,null));};exports[_0xc008('0x20')]=function(_0x2651cf,_0x158eae){if(_0x2651cf['body']['id']){delete _0x2651cf[_0xc008('0x43')]['id'];}return db[_0xc008('0x26')][_0xc008('0x44')]({'where':{'id':_0x2651cf[_0xc008('0x45')]['id']}})[_0xc008('0x21')](handleEntityNotFound(_0x158eae,null))[_0xc008('0x21')](saveUpdates(_0x2651cf[_0xc008('0x43')],null))[_0xc008('0x21')](respondWithResult(_0x158eae,null))[_0xc008('0x41')](handleError(_0x158eae,null));};exports[_0xc008('0x22')]=function(_0x52c444,_0x4c63d4){return db[_0xc008('0x26')]['find']({'where':{'id':_0x52c444[_0xc008('0x45')]['id']}})[_0xc008('0x21')](handleEntityNotFound(_0x4c63d4,null))[_0xc008('0x21')](removeEntity(_0x4c63d4,null))['catch'](handleError(_0x4c63d4,null));};exports[_0xc008('0x46')]=function(_0x32b435,_0xee64){return db[_0xc008('0x26')][_0xc008('0x46')]()['then'](respondWithResult(_0xee64,null))[_0xc008('0x41')](handleError(_0xee64,null));};
\ No newline at end of file
index a7377d2..623064e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9652=['interface','lodash','../../config/logger','moment','bluebird','../../config/environment','./memberReport.attributes','define','report_member','membername_interface','membername'];(function(_0xfc282f,_0x10295d){var _0x38f8bf=function(_0x59dcea){while(--_0x59dcea){_0xfc282f['push'](_0xfc282f['shift']());}};_0x38f8bf(++_0x10295d);}(_0x9652,0x198));var _0x2965=function(_0x59be39,_0x38558d){_0x59be39=_0x59be39-0x0;var _0x136795=_0x9652[_0x59be39];return _0x136795;};'use strict';var _=require(_0x2965('0x0'));var util=require('util');var logger=require(_0x2965('0x1'))('api');var moment=require(_0x2965('0x2'));var BPromise=require(_0x2965('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x2965('0x4'));var attributes=require(_0x2965('0x5'));module['exports']=function(_0x59022e,_0x31c36d){return _0x59022e[_0x2965('0x6')]('MemberReport',attributes,{'tableName':_0x2965('0x7'),'paranoid':![],'indexes':[{'name':_0x2965('0x8'),'fields':[_0x2965('0x9'),_0x2965('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xe18b=['lodash','../../config/logger','api','moment','bluebird','path','../../config/environment','./memberReport.attributes','exports','define','report_member','membername_interface','membername','interface'];(function(_0x4af663,_0x3355b6){var _0x10747e=function(_0x4c2b28){while(--_0x4c2b28){_0x4af663['push'](_0x4af663['shift']());}};_0x10747e(++_0x3355b6);}(_0xe18b,0x7e));var _0xbe18=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xe18b[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xbe18('0x0'));var util=require('util');var logger=require(_0xbe18('0x1'))(_0xbe18('0x2'));var moment=require(_0xbe18('0x3'));var BPromise=require(_0xbe18('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xbe18('0x5'));var rimraf=require('rimraf');var config=require(_0xbe18('0x6'));var attributes=require(_0xbe18('0x7'));module[_0xbe18('0x8')]=function(_0x223d34,_0x143f83){return _0x223d34[_0xbe18('0x9')]('MemberReport',attributes,{'tableName':_0xbe18('0xa'),'paranoid':![],'indexes':[{'name':_0xbe18('0xb'),'fields':[_0xbe18('0xc'),_0xbe18('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 1194e59..3d25802 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x75a2=['info','result','catch','GetMemberReport','MemberReport','options','where','limit','map','include','model','attributes','CreateMemberReport','body','raw','update','UpdateMemberReport','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','then','debug','MemberReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','MemberReport,\x20%s,\x20%s','message'];(function(_0x20dcb3,_0x2e2d7d){var _0x27aaf2=function(_0x3db99b){while(--_0x3db99b){_0x20dcb3['push'](_0x20dcb3['shift']());}};_0x27aaf2(++_0x2e2d7d);}(_0x75a2,0x187));var _0x275a=function(_0x1d9e9f,_0x506592){_0x1d9e9f=_0x1d9e9f-0x0;var _0x2329f6=_0x75a2[_0x1d9e9f];return _0x2329f6;};'use strict';var _=require(_0x275a('0x0'));var util=require(_0x275a('0x1'));var moment=require(_0x275a('0x2'));var BPromise=require('bluebird');var rs=require(_0x275a('0x3'));var fs=require('fs');var Redis=require(_0x275a('0x4'));var db=require(_0x275a('0x5'))['db'];var utils=require(_0x275a('0x6'));var logger=require('../../config/logger')(_0x275a('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x32f0cb,_0x12cad9,_0x17ad5e){return new BPromise(function(_0x38b303,_0x525950){return client['request'](_0x32f0cb,_0x17ad5e)[_0x275a('0x8')](function(_0x46f9c7){logger['info']('MemberReport,\x20%s,\x20%s',_0x12cad9,'request\x20sent');logger[_0x275a('0x9')](_0x275a('0xa'),_0x12cad9,_0x275a('0xb'),JSON[_0x275a('0xc')](_0x46f9c7));if(_0x46f9c7[_0x275a('0xd')]){if(_0x46f9c7[_0x275a('0xd')][_0x275a('0xe')]===0x1f4){logger[_0x275a('0xd')](_0x275a('0xf'),_0x12cad9,_0x46f9c7[_0x275a('0xd')][_0x275a('0x10')]);return _0x525950(_0x46f9c7['error'][_0x275a('0x10')]);}logger[_0x275a('0xd')]('MemberReport,\x20%s,\x20%s',_0x12cad9,_0x46f9c7['error'][_0x275a('0x10')]);return _0x38b303(_0x46f9c7[_0x275a('0xd')][_0x275a('0x10')]);}else{logger[_0x275a('0x11')](_0x275a('0xf'),_0x12cad9,_0x275a('0xb'));_0x38b303(_0x46f9c7[_0x275a('0x12')][_0x275a('0x10')]);}})[_0x275a('0x13')](function(_0x58e54d){logger['error'](_0x275a('0xf'),_0x12cad9,_0x58e54d);_0x525950(_0x58e54d);});});}exports[_0x275a('0x14')]=function(_0x50374a){var _0x127da5=this;return new Promise(function(_0x59d755,_0x35b47b){return db[_0x275a('0x15')]['findAll']({'raw':_0x50374a[_0x275a('0x16')]?_0x50374a[_0x275a('0x16')]['raw']===undefined?!![]:![]:!![],'where':_0x50374a['options']?_0x50374a[_0x275a('0x16')][_0x275a('0x17')]||null:null,'attributes':_0x50374a['options']?_0x50374a['options']['attributes']||null:null,'limit':_0x50374a[_0x275a('0x16')]?_0x50374a[_0x275a('0x16')][_0x275a('0x18')]||null:null,'include':_0x50374a[_0x275a('0x16')]?_0x50374a[_0x275a('0x16')]['include']?_[_0x275a('0x19')](_0x50374a[_0x275a('0x16')][_0x275a('0x1a')],function(_0x21a0ee){return{'model':db[_0x21a0ee[_0x275a('0x1b')]],'as':_0x21a0ee['as'],'attributes':_0x21a0ee['attributes'],'include':_0x21a0ee[_0x275a('0x1a')]?_[_0x275a('0x19')](_0x21a0ee[_0x275a('0x1a')],function(_0x1441c3){return{'model':db[_0x1441c3[_0x275a('0x1b')]],'as':_0x1441c3['as'],'attributes':_0x1441c3[_0x275a('0x1c')],'include':_0x1441c3[_0x275a('0x1a')]?_[_0x275a('0x19')](_0x1441c3[_0x275a('0x1a')],function(_0x3ad063){return{'model':db[_0x3ad063['model']],'as':_0x3ad063['as'],'attributes':_0x3ad063[_0x275a('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x275a('0x8')](function(_0x57c10b){logger[_0x275a('0x11')](_0x275a('0x14'),_0x50374a);logger[_0x275a('0x9')](_0x275a('0x14'),_0x50374a,JSON['stringify'](_0x57c10b));_0x59d755(_0x57c10b);})[_0x275a('0x13')](function(_0x440157){logger[_0x275a('0xd')](_0x275a('0x14'),_0x440157[_0x275a('0x10')],_0x50374a);_0x35b47b(_0x127da5[_0x275a('0xd')](0x1f4,_0x440157[_0x275a('0x10')]));});});};exports[_0x275a('0x1d')]=function(_0xe22b72){var _0x2b4683=this;return new Promise(function(_0x50d998,_0x2c3608){return db[_0x275a('0x15')]['create'](_0xe22b72[_0x275a('0x1e')],{'raw':_0xe22b72[_0x275a('0x16')]?_0xe22b72[_0x275a('0x16')][_0x275a('0x1f')]===undefined?!![]:![]:!![]})['then'](function(_0x281437){logger[_0x275a('0x11')](_0x275a('0x1d'),_0xe22b72);logger[_0x275a('0x9')](_0x275a('0x1d'),_0xe22b72,JSON['stringify'](_0x281437));_0x50d998(_0x281437);})[_0x275a('0x13')](function(_0x334403){logger[_0x275a('0xd')]('CreateMemberReport',_0x334403[_0x275a('0x10')],_0xe22b72);_0x2c3608(_0x2b4683['error'](0x1f4,_0x334403[_0x275a('0x10')]));});});};exports['UpdateMemberReport']=function(_0x4ea389){var _0x259b00=this;return new Promise(function(_0x34c086,_0x946a67){return db['MemberReport'][_0x275a('0x20')](_0x4ea389[_0x275a('0x1e')],{'raw':_0x4ea389[_0x275a('0x16')]?_0x4ea389[_0x275a('0x16')][_0x275a('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4ea389[_0x275a('0x16')]?_0x4ea389[_0x275a('0x16')][_0x275a('0x17')]||null:null,'attributes':_0x4ea389['options']?_0x4ea389[_0x275a('0x16')][_0x275a('0x1c')]||null:null,'limit':_0x4ea389[_0x275a('0x16')]?_0x4ea389['options'][_0x275a('0x18')]||null:null})[_0x275a('0x8')](function(_0x1d068a){logger['info'](_0x275a('0x21'),_0x4ea389);logger[_0x275a('0x9')]('UpdateMemberReport',_0x4ea389,JSON[_0x275a('0xc')](_0x1d068a));_0x34c086(_0x1d068a);})[_0x275a('0x13')](function(_0x47ce00){logger[_0x275a('0xd')]('UpdateMemberReport',_0x47ce00[_0x275a('0x10')],_0x4ea389);_0x946a67(_0x259b00[_0x275a('0xd')](0x1f4,_0x47ce00['message']));});});};
\ No newline at end of file
+var _0xcd0e=['util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','MemberReport,\x20%s,\x20%s','request\x20sent','debug','MemberReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','GetMemberReport','MemberReport','options','attributes','include','model','map','CreateMemberReport','create','body','UpdateMemberReport','update','raw','limit','lodash'];(function(_0xca580f,_0x52c7e9){var _0x13b18e=function(_0x42a2cd){while(--_0x42a2cd){_0xca580f['push'](_0xca580f['shift']());}};_0x13b18e(++_0x52c7e9);}(_0xcd0e,0xe9));var _0xecd0=function(_0x513047,_0x2199c5){_0x513047=_0x513047-0x0;var _0x15b779=_0xcd0e[_0x513047];return _0x15b779;};'use strict';var _=require(_0xecd0('0x0'));var util=require(_0xecd0('0x1'));var moment=require(_0xecd0('0x2'));var BPromise=require(_0xecd0('0x3'));var rs=require(_0xecd0('0x4'));var fs=require('fs');var Redis=require(_0xecd0('0x5'));var db=require(_0xecd0('0x6'))['db'];var utils=require(_0xecd0('0x7'));var logger=require(_0xecd0('0x8'))(_0xecd0('0x9'));var config=require(_0xecd0('0xa'));var jayson=require(_0xecd0('0xb'));var client=jayson[_0xecd0('0xc')][_0xecd0('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x279ee9,_0x4250c7,_0xc7e3e6){return new BPromise(function(_0x3bea02,_0x7663e3){return client['request'](_0x279ee9,_0xc7e3e6)[_0xecd0('0xe')](function(_0x1fc7e9){logger[_0xecd0('0xf')](_0xecd0('0x10'),_0x4250c7,_0xecd0('0x11'));logger[_0xecd0('0x12')](_0xecd0('0x13'),_0x4250c7,_0xecd0('0x11'),JSON[_0xecd0('0x14')](_0x1fc7e9));if(_0x1fc7e9['error']){if(_0x1fc7e9['error']['code']===0x1f4){logger[_0xecd0('0x15')](_0xecd0('0x10'),_0x4250c7,_0x1fc7e9[_0xecd0('0x15')][_0xecd0('0x16')]);return _0x7663e3(_0x1fc7e9[_0xecd0('0x15')][_0xecd0('0x16')]);}logger['error']('MemberReport,\x20%s,\x20%s',_0x4250c7,_0x1fc7e9[_0xecd0('0x15')][_0xecd0('0x16')]);return _0x3bea02(_0x1fc7e9['error'][_0xecd0('0x16')]);}else{logger[_0xecd0('0xf')]('MemberReport,\x20%s,\x20%s',_0x4250c7,'request\x20sent');_0x3bea02(_0x1fc7e9[_0xecd0('0x17')]['message']);}})[_0xecd0('0x18')](function(_0x3e033b){logger['error'](_0xecd0('0x10'),_0x4250c7,_0x3e033b);_0x7663e3(_0x3e033b);});});}exports[_0xecd0('0x19')]=function(_0x291300){var _0x5335b3=this;return new Promise(function(_0x1b0054,_0x219f31){return db[_0xecd0('0x1a')]['findAll']({'raw':_0x291300[_0xecd0('0x1b')]?_0x291300[_0xecd0('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x291300[_0xecd0('0x1b')]?_0x291300[_0xecd0('0x1b')]['where']||null:null,'attributes':_0x291300[_0xecd0('0x1b')]?_0x291300[_0xecd0('0x1b')]['attributes']||null:null,'limit':_0x291300['options']?_0x291300[_0xecd0('0x1b')]['limit']||null:null,'include':_0x291300[_0xecd0('0x1b')]?_0x291300['options']['include']?_['map'](_0x291300[_0xecd0('0x1b')]['include'],function(_0x25d9e9){return{'model':db[_0x25d9e9['model']],'as':_0x25d9e9['as'],'attributes':_0x25d9e9[_0xecd0('0x1c')],'include':_0x25d9e9['include']?_['map'](_0x25d9e9[_0xecd0('0x1d')],function(_0x4f00c9){return{'model':db[_0x4f00c9[_0xecd0('0x1e')]],'as':_0x4f00c9['as'],'attributes':_0x4f00c9[_0xecd0('0x1c')],'include':_0x4f00c9[_0xecd0('0x1d')]?_[_0xecd0('0x1f')](_0x4f00c9[_0xecd0('0x1d')],function(_0x482321){return{'model':db[_0x482321[_0xecd0('0x1e')]],'as':_0x482321['as'],'attributes':_0x482321[_0xecd0('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xecd0('0xe')](function(_0xa570e0){logger[_0xecd0('0xf')]('GetMemberReport',_0x291300);logger[_0xecd0('0x12')]('GetMemberReport',_0x291300,JSON[_0xecd0('0x14')](_0xa570e0));_0x1b0054(_0xa570e0);})[_0xecd0('0x18')](function(_0x2a99a2){logger[_0xecd0('0x15')]('GetMemberReport',_0x2a99a2['message'],_0x291300);_0x219f31(_0x5335b3[_0xecd0('0x15')](0x1f4,_0x2a99a2[_0xecd0('0x16')]));});});};exports[_0xecd0('0x20')]=function(_0xe273a0){var _0x19f045=this;return new Promise(function(_0x4b3437,_0x284aa0){return db['MemberReport'][_0xecd0('0x21')](_0xe273a0[_0xecd0('0x22')],{'raw':_0xe273a0[_0xecd0('0x1b')]?_0xe273a0[_0xecd0('0x1b')]['raw']===undefined?!![]:![]:!![]})[_0xecd0('0xe')](function(_0xdfa775){logger[_0xecd0('0xf')](_0xecd0('0x20'),_0xe273a0);logger[_0xecd0('0x12')](_0xecd0('0x20'),_0xe273a0,JSON[_0xecd0('0x14')](_0xdfa775));_0x4b3437(_0xdfa775);})['catch'](function(_0x73ee56){logger[_0xecd0('0x15')](_0xecd0('0x20'),_0x73ee56['message'],_0xe273a0);_0x284aa0(_0x19f045['error'](0x1f4,_0x73ee56[_0xecd0('0x16')]));});});};exports[_0xecd0('0x23')]=function(_0x1f2bf5){var _0x3c78f2=this;return new Promise(function(_0xe9fc9f,_0x3d4cf0){return db[_0xecd0('0x1a')][_0xecd0('0x24')](_0x1f2bf5[_0xecd0('0x22')],{'raw':_0x1f2bf5['options']?_0x1f2bf5['options'][_0xecd0('0x25')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1f2bf5[_0xecd0('0x1b')]?_0x1f2bf5[_0xecd0('0x1b')]['where']||null:null,'attributes':_0x1f2bf5[_0xecd0('0x1b')]?_0x1f2bf5[_0xecd0('0x1b')][_0xecd0('0x1c')]||null:null,'limit':_0x1f2bf5[_0xecd0('0x1b')]?_0x1f2bf5[_0xecd0('0x1b')][_0xecd0('0x26')]||null:null})['then'](function(_0x4cee58){logger[_0xecd0('0xf')](_0xecd0('0x23'),_0x1f2bf5);logger[_0xecd0('0x12')]('UpdateMemberReport',_0x1f2bf5,JSON['stringify'](_0x4cee58));_0xe9fc9f(_0x4cee58);})[_0xecd0('0x18')](function(_0x4c3308){logger[_0xecd0('0x15')](_0xecd0('0x23'),_0x4c3308[_0xecd0('0x16')],_0x1f2bf5);_0x3d4cf0(_0x3c78f2[_0xecd0('0x15')](0x1f4,_0x4c3308['message']));});});};
\ No newline at end of file
index e59de99..dbb5212 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbfa3=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./migration.controller','get','index','multer','util','path','connect-timeout','express'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0xbfa3,0x70));var _0x3bfa=function(_0x207372,_0x1c4519){_0x207372=_0x207372-0x0;var _0x1dbcbd=_0xbfa3[_0x207372];return _0x1dbcbd;};'use strict';var multer=require(_0x3bfa('0x0'));var util=require(_0x3bfa('0x1'));var path=require(_0x3bfa('0x2'));var timeout=require(_0x3bfa('0x3'));var express=require(_0x3bfa('0x4'));var router=express[_0x3bfa('0x5')]();var fs_extra=require(_0x3bfa('0x6'));var auth=require(_0x3bfa('0x7'));var interaction=require(_0x3bfa('0x8'));var config=require(_0x3bfa('0x9'));var controller=require(_0x3bfa('0xa'));router[_0x3bfa('0xb')]('/',controller[_0x3bfa('0xc')]);module['exports']=router;
\ No newline at end of file
+var _0x28e4=['index','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get'];(function(_0x88d95a,_0x22b6db){var _0x417dc6=function(_0x498631){while(--_0x498631){_0x88d95a['push'](_0x88d95a['shift']());}};_0x417dc6(++_0x22b6db);}(_0x28e4,0x146));var _0x428e=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x28e4[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x428e('0x0'));var util=require('util');var path=require(_0x428e('0x1'));var timeout=require(_0x428e('0x2'));var express=require(_0x428e('0x3'));var router=express[_0x428e('0x4')]();var fs_extra=require(_0x428e('0x5'));var auth=require(_0x428e('0x6'));var interaction=require(_0x428e('0x7'));var config=require(_0x428e('0x8'));var controller=require('./migration.controller');router[_0x428e('0x9')]('/',controller[_0x428e('0xa')]);module[_0x428e('0xb')]=router;
\ No newline at end of file
index 893d583..9b40a55 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb302=['version','exports'];(function(_0x3e7dd5,_0x5e6857){var _0x815404=function(_0x179abe){while(--_0x179abe){_0x3e7dd5['push'](_0x3e7dd5['shift']());}};_0x815404(++_0x5e6857);}(_0xb302,0x129));var _0x2b30=function(_0x12bc1a,_0x51bbff){_0x12bc1a=_0x12bc1a-0x0;var _0x78455b=_0xb302[_0x12bc1a];return _0x78455b;};'use strict';var Sequelize=require('sequelize');module[_0x2b30('0x0')]={'version':{'type':Sequelize['STRING'],'unique':_0x2b30('0x1')}};
\ No newline at end of file
+var _0xf6f7=['version','sequelize','exports'];(function(_0x2ac5f8,_0x4c3a9f){var _0x3b8229=function(_0x46a3c0){while(--_0x46a3c0){_0x2ac5f8['push'](_0x2ac5f8['shift']());}};_0x3b8229(++_0x4c3a9f);}(_0xf6f7,0x11b));var _0x7f6f=function(_0x41c381,_0x1176bd){_0x41c381=_0x41c381-0x0;var _0x427981=_0xf6f7[_0x41c381];return _0x427981;};'use strict';var Sequelize=require(_0x7f6f('0x0'));module[_0x7f6f('0x1')]={'version':{'type':Sequelize['STRING'],'unique':_0x7f6f('0x2')}};
\ No newline at end of file
index a813d5a..77cba94 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa404=['filters','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','options','include','findAll','rows','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','count','set','Content-Range','apply','update','then','destroy','end','sendStatus','stack','name','send','Migration','rawAttributes','type','key','map','query','keys'];(function(_0x5da897,_0x534461){var _0x1c6024=function(_0xcac13a){while(--_0xcac13a){_0x5da897['push'](_0x5da897['shift']());}};_0x1c6024(++_0x534461);}(_0xa404,0x1c2));var _0x4a40=function(_0xfa48c0,_0xf2b741){_0xfa48c0=_0xfa48c0-0x0;var _0x34ceeb=_0xa404[_0xfa48c0];return _0x34ceeb;};'use strict';var emlformat=require(_0x4a40('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x4a40('0x1'));var jsonpatch=require(_0x4a40('0x2'));var rp=require(_0x4a40('0x3'));var moment=require('moment');var BPromise=require(_0x4a40('0x4'));var Mustache=require(_0x4a40('0x5'));var util=require('util');var path=require('path');var sox=require(_0x4a40('0x6'));var csv=require(_0x4a40('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4a40('0x8'));var _=require('lodash');var squel=require(_0x4a40('0x9'));var crypto=require(_0x4a40('0xa'));var jsforce=require(_0x4a40('0xb'));var deskjs=require(_0x4a40('0xc'));var toCsv=require(_0x4a40('0x7'));var querystring=require(_0x4a40('0xd'));var Papa=require(_0x4a40('0xe'));var Redis=require(_0x4a40('0xf'));var authService=require(_0x4a40('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x4a40('0x11'))(_0x4a40('0x12'));var utils=require(_0x4a40('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x4a40('0x14'));var db=require(_0x4a40('0x15'))['db'];function respondWithStatusCode(_0x2adfbc,_0x40d505){_0x40d505=_0x40d505||0xcc;return function(_0x5f4969){if(_0x5f4969){return _0x2adfbc['sendStatus'](_0x40d505);}return _0x2adfbc[_0x4a40('0x16')](_0x40d505)['end']();};}function respondWithResult(_0x51089b,_0x44965d){_0x44965d=_0x44965d||0xc8;return function(_0x17ccf4){if(_0x17ccf4){return _0x51089b[_0x4a40('0x16')](_0x44965d)[_0x4a40('0x17')](_0x17ccf4);}};}function respondWithFilteredResult(_0x206390,_0x9ce59e){return function(_0x58151b){if(_0x58151b){var _0x21283b=typeof _0x9ce59e[_0x4a40('0x18')]===_0x4a40('0x19')&&typeof _0x9ce59e[_0x4a40('0x1a')]===_0x4a40('0x19');var _0x1c928d=_0x58151b[_0x4a40('0x1b')];var _0x4fc49b=_0x21283b?0x0:_0x9ce59e['offset'];var _0x30f78e=_0x21283b?_0x58151b['count']:_0x9ce59e['offset']+_0x9ce59e['limit'];var _0x17b927;if(_0x30f78e>=_0x1c928d){_0x30f78e=_0x1c928d;_0x17b927=0xc8;}else{_0x17b927=0xce;}_0x206390[_0x4a40('0x16')](_0x17b927);return _0x206390[_0x4a40('0x1c')](_0x4a40('0x1d'),_0x4fc49b+'-'+_0x30f78e+'/'+_0x1c928d)[_0x4a40('0x17')](_0x58151b);}return null;};}function patchUpdates(_0x10e66){return function(_0x1d3d93){try{jsonpatch[_0x4a40('0x1e')](_0x1d3d93,_0x10e66,!![]);}catch(_0x5c7143){return BPromise['reject'](_0x5c7143);}return _0x1d3d93['save']();};}function saveUpdates(_0x481fd0,_0x839514){return function(_0x59e35e){if(_0x59e35e){return _0x59e35e[_0x4a40('0x1f')](_0x481fd0)[_0x4a40('0x20')](function(_0x1ddcd1){return _0x1ddcd1;});}return null;};}function removeEntity(_0x4c5e38,_0x590762){return function(_0x5e4ed9){if(_0x5e4ed9){return _0x5e4ed9[_0x4a40('0x21')]()[_0x4a40('0x20')](function(){_0x4c5e38[_0x4a40('0x16')](0xcc)[_0x4a40('0x22')]();});}};}function handleEntityNotFound(_0x41c464,_0x34c57e){return function(_0x2fa8e6){if(!_0x2fa8e6){_0x41c464[_0x4a40('0x23')](0x194);}return _0x2fa8e6;};}function handleError(_0x1ec07f,_0x525a34){_0x525a34=_0x525a34||0x1f4;return function(_0x3405b8){logger['error'](_0x3405b8[_0x4a40('0x24')]);if(_0x3405b8[_0x4a40('0x25')]){delete _0x3405b8[_0x4a40('0x25')];}_0x1ec07f[_0x4a40('0x16')](_0x525a34)[_0x4a40('0x26')](_0x3405b8);};}exports['index']=function(_0x136739,_0x30992){var _0x54c015={},_0x520337={},_0xe119bb={'count':0x0,'rows':[]};var _0x18c204=_['map'](db[_0x4a40('0x27')][_0x4a40('0x28')],function(_0x458fe5){return{'name':_0x458fe5['fieldName'],'type':_0x458fe5[_0x4a40('0x29')][_0x4a40('0x2a')]};});_0x520337['model']=_[_0x4a40('0x2b')](_0x18c204,'name');_0x520337[_0x4a40('0x2c')]=_[_0x4a40('0x2d')](_0x136739[_0x4a40('0x2c')]);_0x520337[_0x4a40('0x2e')]=_['intersection'](_0x520337[_0x4a40('0x2f')],_0x520337[_0x4a40('0x2c')]);_0x54c015[_0x4a40('0x30')]=_['intersection'](_0x520337[_0x4a40('0x2f')],qs['fields'](_0x136739[_0x4a40('0x2c')][_0x4a40('0x31')]));_0x54c015[_0x4a40('0x30')]=_0x54c015[_0x4a40('0x30')][_0x4a40('0x32')]?_0x54c015[_0x4a40('0x30')]:_0x520337[_0x4a40('0x2f')];if(!_0x136739[_0x4a40('0x2c')][_0x4a40('0x33')](_0x4a40('0x34'))){_0x54c015['limit']=qs[_0x4a40('0x1a')](_0x136739['query']['limit']);_0x54c015[_0x4a40('0x18')]=qs[_0x4a40('0x18')](_0x136739[_0x4a40('0x2c')][_0x4a40('0x18')]);}_0x54c015[_0x4a40('0x35')]=qs[_0x4a40('0x36')](_0x136739[_0x4a40('0x2c')][_0x4a40('0x36')]);_0x54c015[_0x4a40('0x37')]=qs[_0x4a40('0x2e')](_['pick'](_0x136739[_0x4a40('0x2c')],_0x520337[_0x4a40('0x2e')]),_0x18c204);if(_0x136739[_0x4a40('0x2c')][_0x4a40('0x38')]){_0x54c015[_0x4a40('0x37')]=_[_0x4a40('0x39')](_0x54c015['where'],{'$or':_[_0x4a40('0x2b')](_0x18c204,function(_0xd28395){if(_0xd28395[_0x4a40('0x29')]!=='VIRTUAL'){var _0x468266={};_0x468266[_0xd28395[_0x4a40('0x25')]]={'$like':'%'+_0x136739[_0x4a40('0x2c')][_0x4a40('0x38')]+'%'};return _0x468266;}})});}_0x54c015=_['merge']({},_0x54c015,_0x136739[_0x4a40('0x3a')]);var _0x116d28={'where':_0x54c015[_0x4a40('0x37')]};return db['Migration'][_0x4a40('0x1b')](_0x116d28)[_0x4a40('0x20')](function(_0x239589){_0xe119bb[_0x4a40('0x1b')]=_0x239589;if(_0x136739['query']['includeAll']){_0x54c015[_0x4a40('0x3b')]=[{'all':!![]}];}return db[_0x4a40('0x27')][_0x4a40('0x3c')](_0x54c015);})[_0x4a40('0x20')](function(_0x3a6d2a){_0xe119bb[_0x4a40('0x3d')]=_0x3a6d2a;return _0xe119bb;})['then'](respondWithFilteredResult(_0x30992,_0x54c015))['catch'](handleError(_0x30992,null));};
\ No newline at end of file
+var _0x8494=['merge','VIRTUAL','options','includeAll','include','Migration','rows','catch','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','to-csv','fs-extra','lodash','squel','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','save','update','then','destroy','sendStatus','error','name','send','fieldName','type','model','map','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filter'];(function(_0x3889ae,_0x4770c3){var _0x6533dd=function(_0x4275f7){while(--_0x4275f7){_0x3889ae['push'](_0x3889ae['shift']());}};_0x6533dd(++_0x4770c3);}(_0x8494,0xce));var _0x4849=function(_0x4e3b2d,_0x11ab46){_0x4e3b2d=_0x4e3b2d-0x0;var _0x24d3bc=_0x8494[_0x4e3b2d];return _0x24d3bc;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x4849('0x0'));var zipdir=require(_0x4849('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x4849('0x2'));var moment=require(_0x4849('0x3'));var BPromise=require(_0x4849('0x4'));var Mustache=require(_0x4849('0x5'));var util=require(_0x4849('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0x4849('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4849('0x8'));var _=require(_0x4849('0x9'));var squel=require(_0x4849('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x4849('0xb'));var toCsv=require(_0x4849('0x7'));var querystring=require(_0x4849('0xc'));var Papa=require(_0x4849('0xd'));var Redis=require(_0x4849('0xe'));var authService=require(_0x4849('0xf'));var qs=require(_0x4849('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4849('0x11'));var logger=require(_0x4849('0x12'))(_0x4849('0x13'));var utils=require(_0x4849('0x14'));var config=require(_0x4849('0x15'));var licenseUtil=require(_0x4849('0x16'));var db=require(_0x4849('0x17'))['db'];function respondWithStatusCode(_0x4bdbbd,_0x154c97){_0x154c97=_0x154c97||0xcc;return function(_0x1b0e01){if(_0x1b0e01){return _0x4bdbbd['sendStatus'](_0x154c97);}return _0x4bdbbd[_0x4849('0x18')](_0x154c97)[_0x4849('0x19')]();};}function respondWithResult(_0x65550d,_0x446875){_0x446875=_0x446875||0xc8;return function(_0x263149){if(_0x263149){return _0x65550d[_0x4849('0x18')](_0x446875)[_0x4849('0x1a')](_0x263149);}};}function respondWithFilteredResult(_0x1eb8f7,_0x4fedbb){return function(_0x4c17e8){if(_0x4c17e8){var _0x37a1c1=typeof _0x4fedbb[_0x4849('0x1b')]==='undefined'&&typeof _0x4fedbb[_0x4849('0x1c')]===_0x4849('0x1d');var _0x2378f8=_0x4c17e8['count'];var _0x52764a=_0x37a1c1?0x0:_0x4fedbb['offset'];var _0x378230=_0x37a1c1?_0x4c17e8[_0x4849('0x1e')]:_0x4fedbb[_0x4849('0x1b')]+_0x4fedbb[_0x4849('0x1c')];var _0x5757e6;if(_0x378230>=_0x2378f8){_0x378230=_0x2378f8;_0x5757e6=0xc8;}else{_0x5757e6=0xce;}_0x1eb8f7[_0x4849('0x18')](_0x5757e6);return _0x1eb8f7[_0x4849('0x1f')](_0x4849('0x20'),_0x52764a+'-'+_0x378230+'/'+_0x2378f8)[_0x4849('0x1a')](_0x4c17e8);}return null;};}function patchUpdates(_0x27c55d){return function(_0x24e7df){try{jsonpatch[_0x4849('0x21')](_0x24e7df,_0x27c55d,!![]);}catch(_0x49c4e2){return BPromise['reject'](_0x49c4e2);}return _0x24e7df[_0x4849('0x22')]();};}function saveUpdates(_0x2e4699,_0x1849d1){return function(_0xe5c68e){if(_0xe5c68e){return _0xe5c68e[_0x4849('0x23')](_0x2e4699)[_0x4849('0x24')](function(_0x4acb63){return _0x4acb63;});}return null;};}function removeEntity(_0x5602bd,_0x1b7f3b){return function(_0x1e4048){if(_0x1e4048){return _0x1e4048[_0x4849('0x25')]()[_0x4849('0x24')](function(){_0x5602bd[_0x4849('0x18')](0xcc)[_0x4849('0x19')]();});}};}function handleEntityNotFound(_0x1018b6,_0xbd37ef){return function(_0x4f12fe){if(!_0x4f12fe){_0x1018b6[_0x4849('0x26')](0x194);}return _0x4f12fe;};}function handleError(_0x4db96e,_0x2e5f77){_0x2e5f77=_0x2e5f77||0x1f4;return function(_0x192bfc){logger[_0x4849('0x27')](_0x192bfc['stack']);if(_0x192bfc[_0x4849('0x28')]){delete _0x192bfc[_0x4849('0x28')];}_0x4db96e[_0x4849('0x18')](_0x2e5f77)[_0x4849('0x29')](_0x192bfc);};}exports['index']=function(_0x2eae0e,_0x3c8746){var _0x50eedc={},_0x35dd7c={},_0x21ce9c={'count':0x0,'rows':[]};var _0x1c103c=_['map'](db['Migration']['rawAttributes'],function(_0x201ea4){return{'name':_0x201ea4[_0x4849('0x2a')],'type':_0x201ea4[_0x4849('0x2b')]['key']};});_0x35dd7c[_0x4849('0x2c')]=_[_0x4849('0x2d')](_0x1c103c,_0x4849('0x28'));_0x35dd7c[_0x4849('0x2e')]=_['keys'](_0x2eae0e[_0x4849('0x2e')]);_0x35dd7c[_0x4849('0x2f')]=_['intersection'](_0x35dd7c[_0x4849('0x2c')],_0x35dd7c[_0x4849('0x2e')]);_0x50eedc['attributes']=_[_0x4849('0x30')](_0x35dd7c[_0x4849('0x2c')],qs[_0x4849('0x31')](_0x2eae0e[_0x4849('0x2e')][_0x4849('0x31')]));_0x50eedc[_0x4849('0x32')]=_0x50eedc['attributes'][_0x4849('0x33')]?_0x50eedc[_0x4849('0x32')]:_0x35dd7c['model'];if(!_0x2eae0e[_0x4849('0x2e')][_0x4849('0x34')](_0x4849('0x35'))){_0x50eedc[_0x4849('0x1c')]=qs['limit'](_0x2eae0e[_0x4849('0x2e')][_0x4849('0x1c')]);_0x50eedc[_0x4849('0x1b')]=qs[_0x4849('0x1b')](_0x2eae0e[_0x4849('0x2e')][_0x4849('0x1b')]);}_0x50eedc[_0x4849('0x36')]=qs[_0x4849('0x37')](_0x2eae0e[_0x4849('0x2e')][_0x4849('0x37')]);_0x50eedc[_0x4849('0x38')]=qs[_0x4849('0x2f')](_['pick'](_0x2eae0e[_0x4849('0x2e')],_0x35dd7c[_0x4849('0x2f')]),_0x1c103c);if(_0x2eae0e[_0x4849('0x2e')][_0x4849('0x39')]){_0x50eedc[_0x4849('0x38')]=_[_0x4849('0x3a')](_0x50eedc[_0x4849('0x38')],{'$or':_[_0x4849('0x2d')](_0x1c103c,function(_0x434b7f){if(_0x434b7f['type']!==_0x4849('0x3b')){var _0x1b82a2={};_0x1b82a2[_0x434b7f['name']]={'$like':'%'+_0x2eae0e[_0x4849('0x2e')][_0x4849('0x39')]+'%'};return _0x1b82a2;}})});}_0x50eedc=_[_0x4849('0x3a')]({},_0x50eedc,_0x2eae0e[_0x4849('0x3c')]);var _0x33dc6b={'where':_0x50eedc[_0x4849('0x38')]};return db['Migration'][_0x4849('0x1e')](_0x33dc6b)[_0x4849('0x24')](function(_0x2a0243){_0x21ce9c[_0x4849('0x1e')]=_0x2a0243;if(_0x2eae0e['query'][_0x4849('0x3d')]){_0x50eedc[_0x4849('0x3e')]=[{'all':!![]}];}return db[_0x4849('0x3f')]['findAll'](_0x50eedc);})[_0x4849('0x24')](function(_0x1519bb){_0x21ce9c[_0x4849('0x40')]=_0x1519bb;return _0x21ce9c;})[_0x4849('0x24')](respondWithFilteredResult(_0x3c8746,_0x50eedc))[_0x4849('0x41')](handleError(_0x3c8746,null));};
\ No newline at end of file
index 8e04345..89a39ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b5c=['util','../../config/logger','moment','path','rimraf','../../config/environment','./migration.attributes','exports','define','Migration','migrations','lodash'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0x8b5c,0x15b));var _0xc8b5=function(_0x2ad81c,_0x26cd73){_0x2ad81c=_0x2ad81c-0x0;var _0xdabdc8=_0x8b5c[_0x2ad81c];return _0xdabdc8;};'use strict';var _=require(_0xc8b5('0x0'));var util=require(_0xc8b5('0x1'));var logger=require(_0xc8b5('0x2'))('api');var moment=require(_0xc8b5('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xc8b5('0x4'));var rimraf=require(_0xc8b5('0x5'));var config=require(_0xc8b5('0x6'));var attributes=require(_0xc8b5('0x7'));module[_0xc8b5('0x8')]=function(_0x64bf0e,_0x33526e){return _0x64bf0e[_0xc8b5('0x9')](_0xc8b5('0xa'),attributes,{'tableName':_0xc8b5('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9421=['migrations','lodash','api','moment','path','../../config/environment','define','Migration'];(function(_0xcc4cbe,_0x474d40){var _0x3e48a7=function(_0xdc2276){while(--_0xdc2276){_0xcc4cbe['push'](_0xcc4cbe['shift']());}};_0x3e48a7(++_0x474d40);}(_0x9421,0x101));var _0x1942=function(_0x423142,_0x81d5ef){_0x423142=_0x423142-0x0;var _0x3c4785=_0x9421[_0x423142];return _0x3c4785;};'use strict';var _=require(_0x1942('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x1942('0x1'));var moment=require(_0x1942('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x1942('0x3'));var rimraf=require('rimraf');var config=require(_0x1942('0x4'));var attributes=require('./migration.attributes');module['exports']=function(_0x3d947b,_0x5cefd9){return _0x3d947b[_0x1942('0x5')](_0x1942('0x6'),attributes,{'tableName':_0x1942('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 02c975f..4db2487 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x122a=['bluebird','randomstring','../../config/utils','rpc','../../config/environment','jayson/promise','client','request','then','info','Migration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','Migration,\x20%s,\x20%s','request\x20sent','catch','lodash','util','moment'];(function(_0x510ff1,_0x266428){var _0x3b8c58=function(_0x1d2735){while(--_0x1d2735){_0x510ff1['push'](_0x510ff1['shift']());}};_0x3b8c58(++_0x266428);}(_0x122a,0xba));var _0xa122=function(_0x30f61b,_0x5f0ae7){_0x30f61b=_0x30f61b-0x0;var _0xa480b2=_0x122a[_0x30f61b];return _0xa480b2;};'use strict';var _=require(_0xa122('0x0'));var util=require(_0xa122('0x1'));var moment=require(_0xa122('0x2'));var BPromise=require(_0xa122('0x3'));var rs=require(_0xa122('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xa122('0x5'));var logger=require('../../config/logger')(_0xa122('0x6'));var config=require(_0xa122('0x7'));var jayson=require(_0xa122('0x8'));var client=jayson[_0xa122('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x576d57,_0x5157f6,_0x23e139){return new BPromise(function(_0x190f74,_0x4d180f){return client[_0xa122('0xa')](_0x576d57,_0x23e139)[_0xa122('0xb')](function(_0x2046c4){logger[_0xa122('0xc')]('Migration,\x20%s,\x20%s',_0x5157f6,'request\x20sent');logger['debug'](_0xa122('0xd'),_0x5157f6,'request\x20sent',JSON[_0xa122('0xe')](_0x2046c4));if(_0x2046c4[_0xa122('0xf')]){if(_0x2046c4['error'][_0xa122('0x10')]===0x1f4){logger['error']('Migration,\x20%s,\x20%s',_0x5157f6,_0x2046c4[_0xa122('0xf')][_0xa122('0x11')]);return _0x4d180f(_0x2046c4['error'][_0xa122('0x11')]);}logger[_0xa122('0xf')](_0xa122('0x12'),_0x5157f6,_0x2046c4['error'][_0xa122('0x11')]);return _0x190f74(_0x2046c4[_0xa122('0xf')][_0xa122('0x11')]);}else{logger[_0xa122('0xc')](_0xa122('0x12'),_0x5157f6,_0xa122('0x13'));_0x190f74(_0x2046c4['result'][_0xa122('0x11')]);}})[_0xa122('0x14')](function(_0xf1b733){logger[_0xa122('0xf')](_0xa122('0x12'),_0x5157f6,_0xf1b733);_0x4d180f(_0xf1b733);});});}
\ No newline at end of file
+var _0x7daf=['error','message','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','Migration,\x20%s,\x20%s','request\x20sent','debug','Migration,\x20%s,\x20%s,\x20%s','stringify','code'];(function(_0x373096,_0x4d37aa){var _0x14a6d0=function(_0xb3b614){while(--_0xb3b614){_0x373096['push'](_0x373096['shift']());}};_0x14a6d0(++_0x4d37aa);}(_0x7daf,0xaa));var _0xf7da=function(_0x13fdfc,_0xb197c7){_0x13fdfc=_0x13fdfc-0x0;var _0x377fbb=_0x7daf[_0x13fdfc];return _0x377fbb;};'use strict';var _=require('lodash');var util=require(_0xf7da('0x0'));var moment=require('moment');var BPromise=require(_0xf7da('0x1'));var rs=require(_0xf7da('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf7da('0x3'))['db'];var utils=require(_0xf7da('0x4'));var logger=require(_0xf7da('0x5'))(_0xf7da('0x6'));var config=require(_0xf7da('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xf7da('0x8')][_0xf7da('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1b35ec,_0x110cad,_0x2c70ad){return new BPromise(function(_0x468ca3,_0x53d71f){return client[_0xf7da('0xa')](_0x1b35ec,_0x2c70ad)[_0xf7da('0xb')](function(_0x326ff5){logger[_0xf7da('0xc')](_0xf7da('0xd'),_0x110cad,_0xf7da('0xe'));logger[_0xf7da('0xf')](_0xf7da('0x10'),_0x110cad,_0xf7da('0xe'),JSON[_0xf7da('0x11')](_0x326ff5));if(_0x326ff5['error']){if(_0x326ff5['error'][_0xf7da('0x12')]===0x1f4){logger[_0xf7da('0x13')](_0xf7da('0xd'),_0x110cad,_0x326ff5[_0xf7da('0x13')][_0xf7da('0x14')]);return _0x53d71f(_0x326ff5[_0xf7da('0x13')]['message']);}logger[_0xf7da('0x13')](_0xf7da('0xd'),_0x110cad,_0x326ff5['error'][_0xf7da('0x14')]);return _0x468ca3(_0x326ff5[_0xf7da('0x13')][_0xf7da('0x14')]);}else{logger[_0xf7da('0xc')](_0xf7da('0xd'),_0x110cad,_0xf7da('0xe'));_0x468ca3(_0x326ff5['result']['message']);}})['catch'](function(_0x39d9c0){logger[_0xf7da('0x13')](_0xf7da('0xd'),_0x110cad,_0x39d9c0);_0x53d71f(_0x39d9c0);});});}
\ No newline at end of file
index 6a7efeb..c6de09a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4baf=['./network.controller','isAuthenticated','get','/:id','show','post','create','put','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x33d286,_0x1d83b7){var _0xd4859a=function(_0x2bedc2){while(--_0x2bedc2){_0x33d286['push'](_0x33d286['shift']());}};_0xd4859a(++_0x1d83b7);}(_0x4baf,0xb4));var _0xf4ba=function(_0xf7b86f,_0x3f21ed){_0xf7b86f=_0xf7b86f-0x0;var _0x335889=_0x4baf[_0xf7b86f];return _0x335889;};'use strict';var multer=require(_0xf4ba('0x0'));var util=require('util');var path=require(_0xf4ba('0x1'));var timeout=require(_0xf4ba('0x2'));var express=require(_0xf4ba('0x3'));var router=express[_0xf4ba('0x4')]();var fs_extra=require(_0xf4ba('0x5'));var auth=require(_0xf4ba('0x6'));var interaction=require(_0xf4ba('0x7'));var config=require(_0xf4ba('0x8'));var controller=require(_0xf4ba('0x9'));router['get']('/',auth[_0xf4ba('0xa')](),controller['index']);router[_0xf4ba('0xb')](_0xf4ba('0xc'),auth['isAuthenticated'](),controller[_0xf4ba('0xd')]);router[_0xf4ba('0xe')]('/',auth[_0xf4ba('0xa')](),controller[_0xf4ba('0xf')]);router[_0xf4ba('0x10')]('/:id',auth['isAuthenticated'](),controller[_0xf4ba('0x11')]);router[_0xf4ba('0x12')](_0xf4ba('0xc'),auth['isAuthenticated'](),controller[_0xf4ba('0x13')]);module[_0xf4ba('0x14')]=router;
\ No newline at end of file
+var _0xd1f8=['path','connect-timeout','Router','../../components/auth/service','../../config/environment','get','isAuthenticated','/:id','show','post','create','put','update','delete','multer','util'];(function(_0x3a0f09,_0x4f981b){var _0x46c463=function(_0x478914){while(--_0x478914){_0x3a0f09['push'](_0x3a0f09['shift']());}};_0x46c463(++_0x4f981b);}(_0xd1f8,0x18e));var _0x8d1f=function(_0xcfc44,_0x179bc1){_0xcfc44=_0xcfc44-0x0;var _0x307a25=_0xd1f8[_0xcfc44];return _0x307a25;};'use strict';var multer=require(_0x8d1f('0x0'));var util=require(_0x8d1f('0x1'));var path=require(_0x8d1f('0x2'));var timeout=require(_0x8d1f('0x3'));var express=require('express');var router=express[_0x8d1f('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x8d1f('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x8d1f('0x6'));var controller=require('./network.controller');router[_0x8d1f('0x7')]('/',auth[_0x8d1f('0x8')](),controller['index']);router[_0x8d1f('0x7')](_0x8d1f('0x9'),auth[_0x8d1f('0x8')](),controller[_0x8d1f('0xa')]);router[_0x8d1f('0xb')]('/',auth['isAuthenticated'](),controller[_0x8d1f('0xc')]);router[_0x8d1f('0xd')]('/:id',auth[_0x8d1f('0x8')](),controller[_0x8d1f('0xe')]);router[_0x8d1f('0xf')](_0x8d1f('0x9'),auth[_0x8d1f('0x8')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index b0ca1dc..95bdb70 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x31e2=['STRING','exports','ENUM','localnet','stun','turn'];(function(_0x618414,_0x1a7a60){var _0x21c19a=function(_0x507b17){while(--_0x507b17){_0x618414['push'](_0x618414['shift']());}};_0x21c19a(++_0x1a7a60);}(_0x31e2,0xf1));var _0x231e=function(_0x3b4b1d,_0x15029e){_0x3b4b1d=_0x3b4b1d-0x0;var _0x488c36=_0x31e2[_0x3b4b1d];return _0x488c36;};'use strict';var Sequelize=require('sequelize');module[_0x231e('0x0')]={'type':{'type':Sequelize[_0x231e('0x1')](_0x231e('0x2'),'externip',_0x231e('0x3'),_0x231e('0x4'))},'value':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0x231e('0x5')]},'password':{'type':Sequelize[_0x231e('0x5')]}};
\ No newline at end of file
+var _0x0ba9=['sequelize','exports','localnet','externip','stun','turn','STRING'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x0ba9,0x15e));var _0x90ba=function(_0x1713d5,_0x28f2c6){_0x1713d5=_0x1713d5-0x0;var _0xff56f0=_0x0ba9[_0x1713d5];return _0xff56f0;};'use strict';var Sequelize=require(_0x90ba('0x0'));module[_0x90ba('0x1')]={'type':{'type':Sequelize['ENUM'](_0x90ba('0x2'),_0x90ba('0x3'),_0x90ba('0x4'),_0x90ba('0x5'))},'value':{'type':Sequelize[_0x90ba('0x6')]},'username':{'type':Sequelize[_0x90ba('0x6')]},'password':{'type':Sequelize[_0x90ba('0x6')]}};
\ No newline at end of file
index 17bbbfa..65a2f16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0108=['http','request','then','info','Network,\x20%s,\x20%s','Network,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','json','offset','undefined','limit','count','status','Content-Range','update','end','sendStatus','stack','name','send','index','fieldName','type','key','model','map','query','filters','intersection','attributes','fields','length','hasOwnProperty','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','keys','rawAttributes','Network','find','create','body','toUpperCase','readFileSync','join','root','server/files/templates/stun_multiple.ejs','utf8','render','/etc/asterisk/stun_xcally.conf','res_stun_monitor.so','TURN','server/files/templates/turn_multiple.ejs','writeFileSync','/etc/asterisk/turn_xcally.conf','format','toLowerCase','Reload','chan_sip.so','params','server/files/templates/network.ejs','/etc/asterisk/sip_xcally_%s.conf','STUN','destroy','util','path','ejs','lodash','api','../../config/environment','../../mysqldb','jayson/promise'];(function(_0x5a252f,_0x9b355d){var _0x246e5e=function(_0x3a3c3d){while(--_0x3a3c3d){_0x5a252f['push'](_0x5a252f['shift']());}};_0x246e5e(++_0x9b355d);}(_0x0108,0xa4));var _0x8010=function(_0xe2a1aa,_0x525d7b){_0xe2a1aa=_0xe2a1aa-0x0;var _0x5a8362=_0x0108[_0xe2a1aa];return _0x5a8362;};'use strict';var util=require(_0x8010('0x0'));var path=require(_0x8010('0x1'));var ejs=require(_0x8010('0x2'));var fs=require('fs');var _=require(_0x8010('0x3'));var qs=require('../../components/parsers/qs');var logger=require('../../config/logger')(_0x8010('0x4'));var config=require(_0x8010('0x5'));var db=require(_0x8010('0x6'))['db'];var jayson=require(_0x8010('0x7'));var client=jayson['client'][_0x8010('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x4bf73a,_0x5efa7b,_0x25f24b,_0x2e5bca){return new Promise(function(_0x47b28b,_0x5e496d){var _0x300c36=_0x2e5bca||client;return _0x300c36[_0x8010('0x9')](_0x4bf73a,_0x25f24b)[_0x8010('0xa')](function(_0x465b75){logger[_0x8010('0xb')](_0x8010('0xc'),_0x5efa7b,'request\x20sent');logger['debug'](_0x8010('0xd'),_0x5efa7b,_0x8010('0xe'),JSON[_0x8010('0xf')](_0x465b75));if(_0x465b75[_0x8010('0x10')]){if(_0x465b75[_0x8010('0x10')][_0x8010('0x11')]===0x1f4){logger[_0x8010('0x10')]('Network,\x20%s,\x20%s',_0x5efa7b,_0x465b75[_0x8010('0x10')][_0x8010('0x12')]);return _0x5e496d(_0x465b75[_0x8010('0x10')]['message']);}logger[_0x8010('0x10')](_0x8010('0xc'),_0x5efa7b,_0x465b75[_0x8010('0x10')][_0x8010('0x12')]);return _0x47b28b(_0x465b75[_0x8010('0x10')][_0x8010('0x12')]);}else{logger[_0x8010('0xb')](_0x8010('0xc'),_0x5efa7b,'request\x20sent');_0x47b28b(_0x465b75[_0x8010('0x13')][_0x8010('0x12')]);}})[_0x8010('0x14')](function(_0x2fcaf3){logger[_0x8010('0x10')](_0x8010('0xc'),_0x5efa7b,_0x2fcaf3);_0x5e496d(_0x2fcaf3);});});}function respondWithResult(_0x5bb6b7,_0x37d48f){_0x37d48f=_0x37d48f||0xc8;return function(_0x5393c2){if(_0x5393c2){return _0x5bb6b7['status'](_0x37d48f)[_0x8010('0x15')](_0x5393c2);}};}function respondWithFilteredResult(_0x35537b,_0x5848e0){return function(_0x14804d){if(_0x14804d){var _0x47ddaa=typeof _0x5848e0[_0x8010('0x16')]===_0x8010('0x17')&&typeof _0x5848e0[_0x8010('0x18')]===_0x8010('0x17');var _0x44f3e0=_0x14804d[_0x8010('0x19')];var _0x219870=_0x47ddaa?0x0:_0x5848e0[_0x8010('0x16')];var _0x275e7f=_0x47ddaa?_0x14804d[_0x8010('0x19')]:_0x5848e0[_0x8010('0x16')]+_0x5848e0[_0x8010('0x18')];var _0x3ddcca;if(_0x275e7f>=_0x44f3e0){_0x275e7f=_0x44f3e0;_0x3ddcca=0xc8;}else{_0x3ddcca=0xce;}_0x35537b[_0x8010('0x1a')](_0x3ddcca);return _0x35537b['set'](_0x8010('0x1b'),_0x219870+'-'+_0x275e7f+'/'+_0x44f3e0)[_0x8010('0x15')](_0x14804d);}return null;};}function saveUpdates(_0x119474){return function(_0x1e9181){if(_0x1e9181){return _0x1e9181[_0x8010('0x1c')](_0x119474)[_0x8010('0xa')](function(_0x2e0fda){return _0x2e0fda;});}return null;};}function removeEntity(_0x1c6231){return function(_0x45353f){if(_0x45353f){return _0x45353f['destroy']()[_0x8010('0xa')](function(){_0x1c6231[_0x8010('0x1a')](0xcc)[_0x8010('0x1d')]();});}};}function handleEntityNotFound(_0x59a570){return function(_0x1a6543){if(!_0x1a6543){_0x59a570[_0x8010('0x1e')](0x194);}return _0x1a6543;};}function handleError(_0x464e3e,_0x1a2690){_0x1a2690=_0x1a2690||0x1f4;return function(_0x1063ef){logger['error'](_0x1063ef[_0x8010('0x1f')]);if(_0x1063ef['name']){delete _0x1063ef[_0x8010('0x20')];}_0x464e3e[_0x8010('0x1a')](_0x1a2690)[_0x8010('0x21')](_0x1063ef);};}exports[_0x8010('0x22')]=function(_0x2ca7c9,_0x2bf77d){var _0x50f3f2={},_0x41ee51={},_0x7101cc={'count':0x0,'rows':[]};var _0x4edeb2=_['map'](db['Network']['rawAttributes'],function(_0x5ba0f5){return{'name':_0x5ba0f5[_0x8010('0x23')],'type':_0x5ba0f5[_0x8010('0x24')][_0x8010('0x25')]};});_0x41ee51[_0x8010('0x26')]=_[_0x8010('0x27')](_0x4edeb2,_0x8010('0x20'));_0x41ee51[_0x8010('0x28')]=_['keys'](_0x2ca7c9[_0x8010('0x28')]);_0x41ee51[_0x8010('0x29')]=_[_0x8010('0x2a')](_0x41ee51[_0x8010('0x26')],_0x41ee51[_0x8010('0x28')]);_0x50f3f2[_0x8010('0x2b')]=_[_0x8010('0x2a')](_0x41ee51['model'],qs['fields'](_0x2ca7c9[_0x8010('0x28')][_0x8010('0x2c')]));_0x50f3f2[_0x8010('0x2b')]=_0x50f3f2[_0x8010('0x2b')][_0x8010('0x2d')]?_0x50f3f2[_0x8010('0x2b')]:_0x41ee51[_0x8010('0x26')];if(!_0x2ca7c9['query'][_0x8010('0x2e')]('nolimit')){_0x50f3f2[_0x8010('0x18')]=qs['limit'](_0x2ca7c9[_0x8010('0x28')][_0x8010('0x18')]);_0x50f3f2['offset']=qs[_0x8010('0x16')](_0x2ca7c9[_0x8010('0x28')][_0x8010('0x16')]);}_0x50f3f2['order']=qs['sort'](_0x2ca7c9[_0x8010('0x28')]['sort']);_0x50f3f2[_0x8010('0x2f')]=qs[_0x8010('0x29')](_[_0x8010('0x30')](_0x2ca7c9[_0x8010('0x28')],_0x41ee51[_0x8010('0x29')]),_0x4edeb2);if(_0x2ca7c9['query'][_0x8010('0x31')]){_0x50f3f2[_0x8010('0x2f')]=_[_0x8010('0x32')](_0x50f3f2[_0x8010('0x2f')],{'$or':_[_0x8010('0x27')](_0x4edeb2,function(_0x201842){if(_0x201842[_0x8010('0x24')]!==_0x8010('0x33')){var _0x40355a={};_0x40355a[_0x201842[_0x8010('0x20')]]={'$like':'%'+_0x2ca7c9[_0x8010('0x28')][_0x8010('0x31')]+'%'};return _0x40355a;}})});}_0x50f3f2=_[_0x8010('0x32')]({},_0x50f3f2,_0x2ca7c9[_0x8010('0x34')]);var _0x5d627f={'where':_0x50f3f2['where']};return db['Network'][_0x8010('0x19')](_0x5d627f)[_0x8010('0xa')](function(_0x82892d){_0x7101cc[_0x8010('0x19')]=_0x82892d;if(_0x2ca7c9[_0x8010('0x28')][_0x8010('0x35')]){_0x50f3f2[_0x8010('0x36')]=[{'all':!![]}];}return db['Network'][_0x8010('0x37')](_0x50f3f2);})[_0x8010('0xa')](function(_0x2db19a){_0x7101cc[_0x8010('0x38')]=_0x2db19a;return _0x7101cc;})[_0x8010('0xa')](respondWithFilteredResult(_0x2bf77d,_0x50f3f2))[_0x8010('0x14')](handleError(_0x2bf77d,null));};exports[_0x8010('0x39')]=function(_0xb9d45b,_0x545312){var _0x22bee2={'raw':!![],'where':{'id':_0xb9d45b['params']['id']}},_0x7564c7={};_0x7564c7[_0x8010('0x26')]=_[_0x8010('0x3a')](db['Network'][_0x8010('0x3b')]);_0x7564c7[_0x8010('0x28')]=_[_0x8010('0x3a')](_0xb9d45b[_0x8010('0x28')]);_0x7564c7[_0x8010('0x29')]=_[_0x8010('0x2a')](_0x7564c7[_0x8010('0x26')],_0x7564c7[_0x8010('0x28')]);_0x22bee2['attributes']=_[_0x8010('0x2a')](_0x7564c7['model'],qs['fields'](_0xb9d45b[_0x8010('0x28')][_0x8010('0x2c')]));_0x22bee2[_0x8010('0x2b')]=_0x22bee2[_0x8010('0x2b')]['length']?_0x22bee2['attributes']:_0x7564c7['model'];if(_0xb9d45b[_0x8010('0x28')][_0x8010('0x35')]){_0x22bee2[_0x8010('0x36')]=[{'all':!![]}];}_0x22bee2=_['merge']({},_0x22bee2,_0xb9d45b[_0x8010('0x34')]);return db[_0x8010('0x3c')][_0x8010('0x3d')](_0x22bee2)[_0x8010('0xa')](handleEntityNotFound(_0x545312,null))[_0x8010('0xa')](respondWithResult(_0x545312,null))[_0x8010('0x14')](handleError(_0x545312,null));};exports[_0x8010('0x3e')]=function(_0x4cbeaf,_0x32d147){var _0x4d1192;return db[_0x8010('0x3c')][_0x8010('0x3e')](_0x4cbeaf['body'],{'raw':!![]})[_0x8010('0xa')](function(_0x111a9f){_0x4d1192=_0x111a9f;return db[_0x8010('0x3c')][_0x8010('0x37')]({'where':{'type':_0x4cbeaf[_0x8010('0x3f')]['type']},'raw':!![]});})['then'](function(_0x5467cc){if(_0x4d1192[_0x8010('0x24')][_0x8010('0x40')]()=='STUN'){var _0xcb5c3e=fs[_0x8010('0x41')](path[_0x8010('0x42')](config[_0x8010('0x43')],_0x8010('0x44')),_0x8010('0x45'));var _0x94a9f3=ejs[_0x8010('0x46')](_0xcb5c3e,{'networks':_0x5467cc||[]});fs['writeFileSync'](_0x8010('0x47'),_0x94a9f3);return respondWithRpcPromise('Reload','create',{'module':_0x8010('0x48')});}else if(_0x4d1192[_0x8010('0x24')]['toUpperCase']()==_0x8010('0x49')){var _0x3289b7=fs['readFileSync'](path[_0x8010('0x42')](config[_0x8010('0x43')],_0x8010('0x4a')),_0x8010('0x45'));var _0x1b2f6d=ejs['render'](_0x3289b7,{'networks':_0x5467cc||[]});fs[_0x8010('0x4b')](_0x8010('0x4c'),_0x1b2f6d);return respondWithRpcPromise('Reload',_0x8010('0x3e'),{'module':_0x8010('0x48')});}else{var _0x373a2f=fs[_0x8010('0x41')](path['join'](config[_0x8010('0x43')],'server/files/templates/network.ejs'),'utf8');var _0x4741b7=ejs['render'](_0x373a2f,{'networks':_0x5467cc||[]});fs[_0x8010('0x4b')](util[_0x8010('0x4d')]('/etc/asterisk/sip_xcally_%s.conf',_0x4cbeaf[_0x8010('0x3f')][_0x8010('0x24')][_0x8010('0x4e')]()),_0x4741b7);return respondWithRpcPromise(_0x8010('0x4f'),_0x8010('0x3e'),{'module':_0x8010('0x50')});}})[_0x8010('0xa')](function(){return _0x4d1192;})[_0x8010('0xa')](respondWithResult(_0x32d147,0xc9))['catch'](handleError(_0x32d147,null));};exports[_0x8010('0x1c')]=function(_0x243721,_0x29e685){var _0x288479;return db[_0x8010('0x3c')][_0x8010('0x3d')]({'where':{'id':_0x243721[_0x8010('0x51')]['id']}})['then'](handleEntityNotFound(_0x29e685,null))[_0x8010('0xa')](saveUpdates(_0x243721[_0x8010('0x3f')],null))[_0x8010('0xa')](function(_0x28279e){if(_0x28279e){_0x288479=_0x28279e;return db['Network'][_0x8010('0x37')]({'where':{'type':_0x288479['type']},'raw':!![]});}return null;})[_0x8010('0xa')](function(_0x776cce){if(_0x288479[_0x8010('0x24')][_0x8010('0x40')]()=='STUN'){var _0x217f04=fs[_0x8010('0x41')](path[_0x8010('0x42')](config[_0x8010('0x43')],_0x8010('0x44')),_0x8010('0x45'));var _0x382baf=ejs[_0x8010('0x46')](_0x217f04,{'networks':_0x776cce||[]});fs[_0x8010('0x4b')](_0x8010('0x47'),_0x382baf);return respondWithRpcPromise(_0x8010('0x4f'),'update',{'module':'res_stun_monitor.so'});}else if(_0x288479['type'][_0x8010('0x40')]()==_0x8010('0x49')){var _0x520f26=fs[_0x8010('0x41')](path[_0x8010('0x42')](config['root'],_0x8010('0x4a')),_0x8010('0x45'));var _0x21fb77=ejs[_0x8010('0x46')](_0x520f26,{'networks':_0x776cce||[]});fs[_0x8010('0x4b')](_0x8010('0x4c'),_0x21fb77);return respondWithRpcPromise(_0x8010('0x4f'),_0x8010('0x1c'),{'module':'res_stun_monitor.so'});}else{var _0x12493c=fs[_0x8010('0x41')](path['join'](config[_0x8010('0x43')],_0x8010('0x52')),_0x8010('0x45'));var _0x515277=ejs[_0x8010('0x46')](_0x12493c,{'networks':_0x776cce||[]});fs['writeFileSync'](util['format'](_0x8010('0x53'),_0x243721['body']['type'][_0x8010('0x4e')]()),_0x515277);return respondWithRpcPromise(_0x8010('0x4f'),_0x8010('0x1c'),{'module':_0x8010('0x50')});}})[_0x8010('0xa')](function(_0x639fa3){if(_0x639fa3){return _0x288479;}return null;})[_0x8010('0xa')](respondWithResult(_0x29e685,null))[_0x8010('0x14')](handleError(_0x29e685,null));};exports['destroy']=function(_0x4e6a8e,_0x4c72da){var _0x3e0ff7;return db[_0x8010('0x3c')][_0x8010('0x3d')]({'where':{'id':_0x4e6a8e['params']['id']}})[_0x8010('0xa')](function(_0x53391f){_0x3e0ff7=_0x53391f;return _0x53391f;})['then'](handleEntityNotFound(_0x4c72da,null))[_0x8010('0xa')](removeEntity(_0x4c72da,null))['then'](function(){if(_0x3e0ff7){return db[_0x8010('0x3c')]['findAll']({'where':{'type':_0x3e0ff7[_0x8010('0x24')]},'raw':!![]});}})[_0x8010('0xa')](function(_0x11cdc7){if(_0x3e0ff7[_0x8010('0x24')]['toUpperCase']()==_0x8010('0x54')){var _0x3e326e=fs[_0x8010('0x41')](path['join'](config[_0x8010('0x43')],_0x8010('0x44')),'utf8');var _0x15233a=ejs['render'](_0x3e326e,{'networks':_0x11cdc7||[]});fs['writeFileSync']('/etc/asterisk/stun_xcally.conf',_0x15233a);return respondWithRpcPromise(_0x8010('0x4f'),_0x8010('0x55'),{'module':_0x8010('0x48')});}else if(_0x3e0ff7[_0x8010('0x24')]['toUpperCase']()==_0x8010('0x49')){var _0x3bde59=fs[_0x8010('0x41')](path[_0x8010('0x42')](config[_0x8010('0x43')],_0x8010('0x4a')),_0x8010('0x45'));var _0x51c7d5=ejs[_0x8010('0x46')](_0x3bde59,{'networks':_0x11cdc7||[]});fs[_0x8010('0x4b')](_0x8010('0x4c'),_0x51c7d5);return respondWithRpcPromise(_0x8010('0x4f'),_0x8010('0x55'),{'module':_0x8010('0x48')});}else{var _0x4bea2f=fs['readFileSync'](path[_0x8010('0x42')](config['root'],_0x8010('0x52')),'utf8');var _0x8f7feb=ejs[_0x8010('0x46')](_0x4bea2f,{'networks':_0x11cdc7||[]});fs[_0x8010('0x4b')](util[_0x8010('0x4d')](_0x8010('0x53'),_0x3e0ff7[_0x8010('0x24')][_0x8010('0x4e')]()),_0x8f7feb);return respondWithRpcPromise(_0x8010('0x4f'),'destroy',{'module':_0x8010('0x50')});}})[_0x8010('0x14')](handleError(_0x4c72da,null));};
\ No newline at end of file
+var _0x058c=['rows','catch','includeAll','create','body','toUpperCase','STUN','readFileSync','server/files/templates/stun_multiple.ejs','render','writeFileSync','Reload','res_stun_monitor.so','TURN','join','root','server/files/templates/turn_multiple.ejs','utf8','/etc/asterisk/turn_xcally.conf','server/files/templates/network.ejs','format','/etc/asterisk/sip_xcally_%s.conf','chan_sip.so','find','params','/etc/asterisk/stun_xcally.conf','toLowerCase','util','ejs','lodash','api','../../config/environment','../../mysqldb','client','http','request','Network,\x20%s,\x20%s','request\x20sent','Network,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','offset','undefined','limit','count','status','set','Content-Range','json','update','then','destroy','end','sendStatus','name','send','Network','rawAttributes','type','key','model','map','keys','intersection','query','attributes','fields','hasOwnProperty','sort','where','filters','filter','merge','VIRTUAL','options','include','findAll'];(function(_0x5a1fba,_0x54bd31){var _0x5bfa4a=function(_0x4a79c8){while(--_0x4a79c8){_0x5a1fba['push'](_0x5a1fba['shift']());}};_0x5bfa4a(++_0x54bd31);}(_0x058c,0xbb));var _0xc058=function(_0xd39a22,_0x956633){_0xd39a22=_0xd39a22-0x0;var _0x2d6fdb=_0x058c[_0xd39a22];return _0x2d6fdb;};'use strict';var util=require(_0xc058('0x0'));var path=require('path');var ejs=require(_0xc058('0x1'));var fs=require('fs');var _=require(_0xc058('0x2'));var qs=require('../../components/parsers/qs');var logger=require('../../config/logger')(_0xc058('0x3'));var config=require(_0xc058('0x4'));var db=require(_0xc058('0x5'))['db'];var jayson=require('jayson/promise');var client=jayson[_0xc058('0x6')][_0xc058('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x5627c3,_0x460c32,_0x427c46,_0x40d0ba){return new Promise(function(_0x181408,_0xebaf87){var _0x4d31fe=_0x40d0ba||client;return _0x4d31fe[_0xc058('0x8')](_0x5627c3,_0x427c46)['then'](function(_0x27f49a){logger['info'](_0xc058('0x9'),_0x460c32,_0xc058('0xa'));logger['debug'](_0xc058('0xb'),_0x460c32,_0xc058('0xa'),JSON[_0xc058('0xc')](_0x27f49a));if(_0x27f49a[_0xc058('0xd')]){if(_0x27f49a[_0xc058('0xd')]['code']===0x1f4){logger[_0xc058('0xd')](_0xc058('0x9'),_0x460c32,_0x27f49a[_0xc058('0xd')][_0xc058('0xe')]);return _0xebaf87(_0x27f49a[_0xc058('0xd')][_0xc058('0xe')]);}logger['error'](_0xc058('0x9'),_0x460c32,_0x27f49a[_0xc058('0xd')]['message']);return _0x181408(_0x27f49a[_0xc058('0xd')][_0xc058('0xe')]);}else{logger[_0xc058('0xf')]('Network,\x20%s,\x20%s',_0x460c32,'request\x20sent');_0x181408(_0x27f49a[_0xc058('0x10')]['message']);}})['catch'](function(_0x56d3a9){logger[_0xc058('0xd')](_0xc058('0x9'),_0x460c32,_0x56d3a9);_0xebaf87(_0x56d3a9);});});}function respondWithResult(_0x2f4fef,_0x29ee4c){_0x29ee4c=_0x29ee4c||0xc8;return function(_0x5acfa4){if(_0x5acfa4){return _0x2f4fef['status'](_0x29ee4c)['json'](_0x5acfa4);}};}function respondWithFilteredResult(_0x299bd2,_0x5c744c){return function(_0x1fd7d4){if(_0x1fd7d4){var _0x3eca81=typeof _0x5c744c[_0xc058('0x11')]===_0xc058('0x12')&&typeof _0x5c744c[_0xc058('0x13')]===_0xc058('0x12');var _0x521d30=_0x1fd7d4[_0xc058('0x14')];var _0x5c22fa=_0x3eca81?0x0:_0x5c744c[_0xc058('0x11')];var _0xca64d1=_0x3eca81?_0x1fd7d4[_0xc058('0x14')]:_0x5c744c['offset']+_0x5c744c[_0xc058('0x13')];var _0x29f66c;if(_0xca64d1>=_0x521d30){_0xca64d1=_0x521d30;_0x29f66c=0xc8;}else{_0x29f66c=0xce;}_0x299bd2[_0xc058('0x15')](_0x29f66c);return _0x299bd2[_0xc058('0x16')](_0xc058('0x17'),_0x5c22fa+'-'+_0xca64d1+'/'+_0x521d30)[_0xc058('0x18')](_0x1fd7d4);}return null;};}function saveUpdates(_0x12dd9e){return function(_0x8122a6){if(_0x8122a6){return _0x8122a6[_0xc058('0x19')](_0x12dd9e)[_0xc058('0x1a')](function(_0x3d36a0){return _0x3d36a0;});}return null;};}function removeEntity(_0x56540a){return function(_0x51f4a5){if(_0x51f4a5){return _0x51f4a5[_0xc058('0x1b')]()[_0xc058('0x1a')](function(){_0x56540a[_0xc058('0x15')](0xcc)[_0xc058('0x1c')]();});}};}function handleEntityNotFound(_0x41dac0){return function(_0x44da6c){if(!_0x44da6c){_0x41dac0[_0xc058('0x1d')](0x194);}return _0x44da6c;};}function handleError(_0x22d6d2,_0x39b548){_0x39b548=_0x39b548||0x1f4;return function(_0x3af807){logger[_0xc058('0xd')](_0x3af807['stack']);if(_0x3af807[_0xc058('0x1e')]){delete _0x3af807['name'];}_0x22d6d2[_0xc058('0x15')](_0x39b548)[_0xc058('0x1f')](_0x3af807);};}exports['index']=function(_0x59300f,_0x493ece){var _0x3b305e={},_0x2353d0={},_0x48d13f={'count':0x0,'rows':[]};var _0x238f5f=_['map'](db[_0xc058('0x20')][_0xc058('0x21')],function(_0x2c9413){return{'name':_0x2c9413['fieldName'],'type':_0x2c9413[_0xc058('0x22')][_0xc058('0x23')]};});_0x2353d0[_0xc058('0x24')]=_[_0xc058('0x25')](_0x238f5f,_0xc058('0x1e'));_0x2353d0['query']=_[_0xc058('0x26')](_0x59300f['query']);_0x2353d0['filters']=_[_0xc058('0x27')](_0x2353d0[_0xc058('0x24')],_0x2353d0[_0xc058('0x28')]);_0x3b305e[_0xc058('0x29')]=_[_0xc058('0x27')](_0x2353d0[_0xc058('0x24')],qs[_0xc058('0x2a')](_0x59300f[_0xc058('0x28')][_0xc058('0x2a')]));_0x3b305e[_0xc058('0x29')]=_0x3b305e[_0xc058('0x29')]['length']?_0x3b305e[_0xc058('0x29')]:_0x2353d0[_0xc058('0x24')];if(!_0x59300f[_0xc058('0x28')][_0xc058('0x2b')]('nolimit')){_0x3b305e[_0xc058('0x13')]=qs[_0xc058('0x13')](_0x59300f['query'][_0xc058('0x13')]);_0x3b305e[_0xc058('0x11')]=qs[_0xc058('0x11')](_0x59300f[_0xc058('0x28')]['offset']);}_0x3b305e['order']=qs['sort'](_0x59300f['query'][_0xc058('0x2c')]);_0x3b305e[_0xc058('0x2d')]=qs[_0xc058('0x2e')](_['pick'](_0x59300f['query'],_0x2353d0[_0xc058('0x2e')]),_0x238f5f);if(_0x59300f[_0xc058('0x28')][_0xc058('0x2f')]){_0x3b305e[_0xc058('0x2d')]=_[_0xc058('0x30')](_0x3b305e['where'],{'$or':_[_0xc058('0x25')](_0x238f5f,function(_0x252db2){if(_0x252db2[_0xc058('0x22')]!==_0xc058('0x31')){var _0x3d38df={};_0x3d38df[_0x252db2[_0xc058('0x1e')]]={'$like':'%'+_0x59300f['query']['filter']+'%'};return _0x3d38df;}})});}_0x3b305e=_[_0xc058('0x30')]({},_0x3b305e,_0x59300f[_0xc058('0x32')]);var _0x473073={'where':_0x3b305e['where']};return db[_0xc058('0x20')][_0xc058('0x14')](_0x473073)[_0xc058('0x1a')](function(_0x79a3a0){_0x48d13f[_0xc058('0x14')]=_0x79a3a0;if(_0x59300f[_0xc058('0x28')]['includeAll']){_0x3b305e[_0xc058('0x33')]=[{'all':!![]}];}return db[_0xc058('0x20')][_0xc058('0x34')](_0x3b305e);})[_0xc058('0x1a')](function(_0x3e7be5){_0x48d13f[_0xc058('0x35')]=_0x3e7be5;return _0x48d13f;})['then'](respondWithFilteredResult(_0x493ece,_0x3b305e))[_0xc058('0x36')](handleError(_0x493ece,null));};exports['show']=function(_0x286a61,_0xfbfa88){var _0x3477bd={'raw':!![],'where':{'id':_0x286a61['params']['id']}},_0x18033e={};_0x18033e[_0xc058('0x24')]=_[_0xc058('0x26')](db[_0xc058('0x20')][_0xc058('0x21')]);_0x18033e['query']=_['keys'](_0x286a61[_0xc058('0x28')]);_0x18033e[_0xc058('0x2e')]=_[_0xc058('0x27')](_0x18033e[_0xc058('0x24')],_0x18033e['query']);_0x3477bd[_0xc058('0x29')]=_[_0xc058('0x27')](_0x18033e[_0xc058('0x24')],qs[_0xc058('0x2a')](_0x286a61[_0xc058('0x28')][_0xc058('0x2a')]));_0x3477bd[_0xc058('0x29')]=_0x3477bd[_0xc058('0x29')]['length']?_0x3477bd[_0xc058('0x29')]:_0x18033e['model'];if(_0x286a61[_0xc058('0x28')][_0xc058('0x37')]){_0x3477bd[_0xc058('0x33')]=[{'all':!![]}];}_0x3477bd=_[_0xc058('0x30')]({},_0x3477bd,_0x286a61[_0xc058('0x32')]);return db[_0xc058('0x20')]['find'](_0x3477bd)[_0xc058('0x1a')](handleEntityNotFound(_0xfbfa88,null))['then'](respondWithResult(_0xfbfa88,null))[_0xc058('0x36')](handleError(_0xfbfa88,null));};exports[_0xc058('0x38')]=function(_0x13ae39,_0x168b67){var _0x4bc762;return db[_0xc058('0x20')][_0xc058('0x38')](_0x13ae39[_0xc058('0x39')],{'raw':!![]})[_0xc058('0x1a')](function(_0x123423){_0x4bc762=_0x123423;return db[_0xc058('0x20')]['findAll']({'where':{'type':_0x13ae39[_0xc058('0x39')][_0xc058('0x22')]},'raw':!![]});})[_0xc058('0x1a')](function(_0x1305b2){if(_0x4bc762[_0xc058('0x22')][_0xc058('0x3a')]()==_0xc058('0x3b')){var _0x1b3bbc=fs[_0xc058('0x3c')](path['join'](config['root'],_0xc058('0x3d')),'utf8');var _0x55842c=ejs[_0xc058('0x3e')](_0x1b3bbc,{'networks':_0x1305b2||[]});fs[_0xc058('0x3f')]('/etc/asterisk/stun_xcally.conf',_0x55842c);return respondWithRpcPromise(_0xc058('0x40'),'create',{'module':_0xc058('0x41')});}else if(_0x4bc762[_0xc058('0x22')][_0xc058('0x3a')]()==_0xc058('0x42')){var _0x3e08a6=fs[_0xc058('0x3c')](path[_0xc058('0x43')](config[_0xc058('0x44')],_0xc058('0x45')),_0xc058('0x46'));var _0x2715ab=ejs[_0xc058('0x3e')](_0x3e08a6,{'networks':_0x1305b2||[]});fs[_0xc058('0x3f')](_0xc058('0x47'),_0x2715ab);return respondWithRpcPromise(_0xc058('0x40'),_0xc058('0x38'),{'module':_0xc058('0x41')});}else{var _0x4a0ea9=fs[_0xc058('0x3c')](path[_0xc058('0x43')](config['root'],_0xc058('0x48')),_0xc058('0x46'));var _0x1349d2=ejs[_0xc058('0x3e')](_0x4a0ea9,{'networks':_0x1305b2||[]});fs[_0xc058('0x3f')](util[_0xc058('0x49')](_0xc058('0x4a'),_0x13ae39[_0xc058('0x39')][_0xc058('0x22')]['toLowerCase']()),_0x1349d2);return respondWithRpcPromise(_0xc058('0x40'),_0xc058('0x38'),{'module':_0xc058('0x4b')});}})[_0xc058('0x1a')](function(){return _0x4bc762;})[_0xc058('0x1a')](respondWithResult(_0x168b67,0xc9))[_0xc058('0x36')](handleError(_0x168b67,null));};exports[_0xc058('0x19')]=function(_0x223862,_0x3ff6bb){var _0x4c0791;return db[_0xc058('0x20')][_0xc058('0x4c')]({'where':{'id':_0x223862[_0xc058('0x4d')]['id']}})[_0xc058('0x1a')](handleEntityNotFound(_0x3ff6bb,null))[_0xc058('0x1a')](saveUpdates(_0x223862[_0xc058('0x39')],null))[_0xc058('0x1a')](function(_0x9778b5){if(_0x9778b5){_0x4c0791=_0x9778b5;return db[_0xc058('0x20')][_0xc058('0x34')]({'where':{'type':_0x4c0791[_0xc058('0x22')]},'raw':!![]});}return null;})[_0xc058('0x1a')](function(_0x525ae4){if(_0x4c0791['type'][_0xc058('0x3a')]()==_0xc058('0x3b')){var _0x54d1e4=fs['readFileSync'](path[_0xc058('0x43')](config[_0xc058('0x44')],'server/files/templates/stun_multiple.ejs'),_0xc058('0x46'));var _0x5c2d9f=ejs['render'](_0x54d1e4,{'networks':_0x525ae4||[]});fs[_0xc058('0x3f')](_0xc058('0x4e'),_0x5c2d9f);return respondWithRpcPromise(_0xc058('0x40'),_0xc058('0x19'),{'module':_0xc058('0x41')});}else if(_0x4c0791[_0xc058('0x22')]['toUpperCase']()==_0xc058('0x42')){var _0x558fd8=fs[_0xc058('0x3c')](path[_0xc058('0x43')](config[_0xc058('0x44')],_0xc058('0x45')),_0xc058('0x46'));var _0x3ba378=ejs[_0xc058('0x3e')](_0x558fd8,{'networks':_0x525ae4||[]});fs[_0xc058('0x3f')]('/etc/asterisk/turn_xcally.conf',_0x3ba378);return respondWithRpcPromise(_0xc058('0x40'),_0xc058('0x19'),{'module':'res_stun_monitor.so'});}else{var _0x3e18b9=fs[_0xc058('0x3c')](path['join'](config['root'],_0xc058('0x48')),_0xc058('0x46'));var _0x487c01=ejs[_0xc058('0x3e')](_0x3e18b9,{'networks':_0x525ae4||[]});fs[_0xc058('0x3f')](util[_0xc058('0x49')](_0xc058('0x4a'),_0x223862[_0xc058('0x39')][_0xc058('0x22')][_0xc058('0x4f')]()),_0x487c01);return respondWithRpcPromise('Reload',_0xc058('0x19'),{'module':_0xc058('0x4b')});}})[_0xc058('0x1a')](function(_0x8d6ed5){if(_0x8d6ed5){return _0x4c0791;}return null;})['then'](respondWithResult(_0x3ff6bb,null))[_0xc058('0x36')](handleError(_0x3ff6bb,null));};exports[_0xc058('0x1b')]=function(_0x126a0f,_0x970fa5){var _0x14ca75;return db['Network'][_0xc058('0x4c')]({'where':{'id':_0x126a0f[_0xc058('0x4d')]['id']}})['then'](function(_0x864a93){_0x14ca75=_0x864a93;return _0x864a93;})[_0xc058('0x1a')](handleEntityNotFound(_0x970fa5,null))[_0xc058('0x1a')](removeEntity(_0x970fa5,null))[_0xc058('0x1a')](function(){if(_0x14ca75){return db[_0xc058('0x20')][_0xc058('0x34')]({'where':{'type':_0x14ca75[_0xc058('0x22')]},'raw':!![]});}})[_0xc058('0x1a')](function(_0x2acf3e){if(_0x14ca75[_0xc058('0x22')][_0xc058('0x3a')]()==_0xc058('0x3b')){var _0x480c89=fs[_0xc058('0x3c')](path['join'](config[_0xc058('0x44')],_0xc058('0x3d')),_0xc058('0x46'));var _0x2b8505=ejs[_0xc058('0x3e')](_0x480c89,{'networks':_0x2acf3e||[]});fs[_0xc058('0x3f')](_0xc058('0x4e'),_0x2b8505);return respondWithRpcPromise(_0xc058('0x40'),_0xc058('0x1b'),{'module':_0xc058('0x41')});}else if(_0x14ca75['type'][_0xc058('0x3a')]()=='TURN'){var _0x50284d=fs[_0xc058('0x3c')](path['join'](config[_0xc058('0x44')],_0xc058('0x45')),_0xc058('0x46'));var _0x1b0284=ejs[_0xc058('0x3e')](_0x50284d,{'networks':_0x2acf3e||[]});fs[_0xc058('0x3f')](_0xc058('0x47'),_0x1b0284);return respondWithRpcPromise(_0xc058('0x40'),'destroy',{'module':_0xc058('0x41')});}else{var _0x5c9c37=fs[_0xc058('0x3c')](path[_0xc058('0x43')](config[_0xc058('0x44')],_0xc058('0x48')),_0xc058('0x46'));var _0x18a692=ejs['render'](_0x5c9c37,{'networks':_0x2acf3e||[]});fs[_0xc058('0x3f')](util['format']('/etc/asterisk/sip_xcally_%s.conf',_0x14ca75[_0xc058('0x22')][_0xc058('0x4f')]()),_0x18a692);return respondWithRpcPromise(_0xc058('0x40'),_0xc058('0x1b'),{'module':_0xc058('0x4b')});}})[_0xc058('0x36')](handleError(_0x970fa5,null));};
\ No newline at end of file
index 6343842..8158c2a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa699=['Network','network','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./network.attributes','exports','define'];(function(_0x352f07,_0x550a55){var _0x387eba=function(_0x1d337b){while(--_0x1d337b){_0x352f07['push'](_0x352f07['shift']());}};_0x387eba(++_0x550a55);}(_0xa699,0x6b));var _0x9a69=function(_0x47a5bd,_0x508329){_0x47a5bd=_0x47a5bd-0x0;var _0x5c2184=_0xa699[_0x47a5bd];return _0x5c2184;};'use strict';var _=require(_0x9a69('0x0'));var util=require(_0x9a69('0x1'));var logger=require(_0x9a69('0x2'))(_0x9a69('0x3'));var moment=require(_0x9a69('0x4'));var BPromise=require(_0x9a69('0x5'));var rp=require(_0x9a69('0x6'));var fs=require('fs');var path=require(_0x9a69('0x7'));var rimraf=require(_0x9a69('0x8'));var config=require(_0x9a69('0x9'));var attributes=require(_0x9a69('0xa'));module[_0x9a69('0xb')]=function(_0x15f2fc,_0x58eb4d){return _0x15f2fc[_0x9a69('0xc')](_0x9a69('0xd'),attributes,{'tableName':_0x9a69('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5b02=['define','Network','lodash','util','../../config/logger','api','request-promise','rimraf','../../config/environment','./network.attributes','exports'];(function(_0x2dbf8e,_0x21cde2){var _0x552269=function(_0x348ce1){while(--_0x348ce1){_0x2dbf8e['push'](_0x2dbf8e['shift']());}};_0x552269(++_0x21cde2);}(_0x5b02,0xe9));var _0x25b0=function(_0x3aaa07,_0x283368){_0x3aaa07=_0x3aaa07-0x0;var _0x4ea5a3=_0x5b02[_0x3aaa07];return _0x4ea5a3;};'use strict';var _=require(_0x25b0('0x0'));var util=require(_0x25b0('0x1'));var logger=require(_0x25b0('0x2'))(_0x25b0('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x25b0('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x25b0('0x5'));var config=require(_0x25b0('0x6'));var attributes=require(_0x25b0('0x7'));module[_0x25b0('0x8')]=function(_0x2d84a9,_0x4eea55){return _0x2d84a9[_0x25b0('0x9')](_0x25b0('0xa'),attributes,{'tableName':'network','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e6b1868..d809e1a 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(_0x2bbf0f,_0xc8790d){_0x2bbf0f=_0x2bbf0f-0x0;var _0x538a6a=_0x7a54[_0x2bbf0f];return _0x538a6a;};'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(_0x460872,_0x4c55eb){var _0x4e7ff1=function(_0x2c89b8){while(--_0x2c89b8){_0x460872['push'](_0x460872['shift']());}};_0x4e7ff1(++_0x4c55eb);}(_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 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 cd78162..38a2b2a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x84f3=['../../config/environment','./openchannelAccount.controller','get','isAuthenticated','index','describe','/:id','/:id/dispositions','/:id/canned_answers','getAnswers','/:id/applications','getApplications','/:id/interactions','getInteractions','getAgents','post','create','addDisposition','addAnswer','addApplications','/:id/users','/:id/send','send','put','update','delete','destroy','removeDispositions','removeAnswers','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x88cd7b,_0x4c884c){var _0x56fcc8=function(_0x513b3d){while(--_0x513b3d){_0x88cd7b['push'](_0x88cd7b['shift']());}};_0x56fcc8(++_0x4c884c);}(_0x84f3,0xb2));var _0x384f=function(_0x1928c9,_0x13a6d1){_0x1928c9=_0x1928c9-0x0;var _0x51b5fb=_0x84f3[_0x1928c9];return _0x51b5fb;};'use strict';var multer=require(_0x384f('0x0'));var util=require(_0x384f('0x1'));var path=require('path');var timeout=require(_0x384f('0x2'));var express=require(_0x384f('0x3'));var router=express[_0x384f('0x4')]();var fs_extra=require(_0x384f('0x5'));var auth=require(_0x384f('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x384f('0x7'));var controller=require(_0x384f('0x8'));router[_0x384f('0x9')]('/',auth[_0x384f('0xa')](),controller[_0x384f('0xb')]);router[_0x384f('0x9')]('/describe',auth[_0x384f('0xa')](),controller[_0x384f('0xc')]);router[_0x384f('0x9')](_0x384f('0xd'),auth['isAuthenticated'](),controller['show']);router['get'](_0x384f('0xe'),auth[_0x384f('0xa')](),controller['getDispositions']);router['get'](_0x384f('0xf'),auth['isAuthenticated'](),controller[_0x384f('0x10')]);router[_0x384f('0x9')](_0x384f('0x11'),auth[_0x384f('0xa')](),controller[_0x384f('0x12')]);router[_0x384f('0x9')](_0x384f('0x13'),auth[_0x384f('0xa')](),controller[_0x384f('0x14')]);router[_0x384f('0x9')]('/:id/users',auth[_0x384f('0xa')](),controller[_0x384f('0x15')]);router[_0x384f('0x16')]('/',auth[_0x384f('0xa')](),controller[_0x384f('0x17')]);router[_0x384f('0x16')](_0x384f('0xe'),auth[_0x384f('0xa')](),controller[_0x384f('0x18')]);router[_0x384f('0x16')](_0x384f('0xf'),auth[_0x384f('0xa')](),controller[_0x384f('0x19')]);router[_0x384f('0x16')]('/:id/notify',controller['notify']);router[_0x384f('0x16')]('/:id/applications',auth['isAuthenticated'](),controller[_0x384f('0x1a')]);router[_0x384f('0x16')](_0x384f('0x1b'),auth['isAuthenticated'](),controller['addAgents']);router['post'](_0x384f('0x1c'),auth['isAuthenticated'](),controller[_0x384f('0x1d')]);router[_0x384f('0x1e')](_0x384f('0xd'),auth[_0x384f('0xa')](),controller[_0x384f('0x1f')]);router[_0x384f('0x20')](_0x384f('0xd'),auth[_0x384f('0xa')](),controller[_0x384f('0x21')]);router[_0x384f('0x20')](_0x384f('0xe'),auth[_0x384f('0xa')](),controller[_0x384f('0x22')]);router[_0x384f('0x20')](_0x384f('0xf'),auth[_0x384f('0xa')](),controller[_0x384f('0x23')]);router['delete'](_0x384f('0x1b'),auth[_0x384f('0xa')](),controller['removeAgents']);module[_0x384f('0x24')]=router;
\ No newline at end of file
+var _0x9363=['/:id/applications','getApplications','/:id/interactions','getInteractions','getAgents','post','create','addDisposition','addAnswer','notify','addApplications','addAgents','/:id/send','send','update','delete','destroy','removeDispositions','removeAnswers','/:id/users','exports','multer','util','express','Router','../../components/auth/service','../../config/environment','./openchannelAccount.controller','get','index','isAuthenticated','describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers'];(function(_0x187872,_0x14a538){var _0x4a036f=function(_0x2fb38f){while(--_0x2fb38f){_0x187872['push'](_0x187872['shift']());}};_0x4a036f(++_0x14a538);}(_0x9363,0x162));var _0x3936=function(_0x24a88e,_0x22a0b8){_0x24a88e=_0x24a88e-0x0;var _0x232cbb=_0x9363[_0x24a88e];return _0x232cbb;};'use strict';var multer=require(_0x3936('0x0'));var util=require(_0x3936('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x3936('0x2'));var router=express[_0x3936('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x3936('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x3936('0x5'));var controller=require(_0x3936('0x6'));router[_0x3936('0x7')]('/',auth['isAuthenticated'](),controller[_0x3936('0x8')]);router['get']('/describe',auth[_0x3936('0x9')](),controller[_0x3936('0xa')]);router[_0x3936('0x7')](_0x3936('0xb'),auth['isAuthenticated'](),controller[_0x3936('0xc')]);router['get'](_0x3936('0xd'),auth[_0x3936('0x9')](),controller[_0x3936('0xe')]);router[_0x3936('0x7')](_0x3936('0xf'),auth[_0x3936('0x9')](),controller['getAnswers']);router[_0x3936('0x7')](_0x3936('0x10'),auth[_0x3936('0x9')](),controller[_0x3936('0x11')]);router['get'](_0x3936('0x12'),auth[_0x3936('0x9')](),controller[_0x3936('0x13')]);router[_0x3936('0x7')]('/:id/users',auth[_0x3936('0x9')](),controller[_0x3936('0x14')]);router[_0x3936('0x15')]('/',auth[_0x3936('0x9')](),controller[_0x3936('0x16')]);router[_0x3936('0x15')](_0x3936('0xd'),auth[_0x3936('0x9')](),controller[_0x3936('0x17')]);router[_0x3936('0x15')]('/:id/canned_answers',auth[_0x3936('0x9')](),controller[_0x3936('0x18')]);router[_0x3936('0x15')]('/:id/notify',controller[_0x3936('0x19')]);router[_0x3936('0x15')]('/:id/applications',auth[_0x3936('0x9')](),controller[_0x3936('0x1a')]);router[_0x3936('0x15')]('/:id/users',auth['isAuthenticated'](),controller[_0x3936('0x1b')]);router[_0x3936('0x15')](_0x3936('0x1c'),auth[_0x3936('0x9')](),controller[_0x3936('0x1d')]);router['put']('/:id',auth[_0x3936('0x9')](),controller[_0x3936('0x1e')]);router[_0x3936('0x1f')](_0x3936('0xb'),auth[_0x3936('0x9')](),controller[_0x3936('0x20')]);router[_0x3936('0x1f')](_0x3936('0xd'),auth[_0x3936('0x9')](),controller[_0x3936('0x21')]);router[_0x3936('0x1f')](_0x3936('0xf'),auth[_0x3936('0x9')](),controller[_0x3936('0x22')]);router[_0x3936('0x1f')](_0x3936('0x23'),auth[_0x3936('0x9')](),controller['removeAgents']);module[_0x3936('0x24')]=router;
\ No newline at end of file
index 458e28a..350b75a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2cc4=['generate','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','randomstring','exports','name','STRING'];(function(_0x556771,_0x2fb3f0){var _0x583a14=function(_0x5a30ae){while(--_0x5a30ae){_0x556771['push'](_0x556771['shift']());}};_0x583a14(++_0x2fb3f0);}(_0x2cc4,0x15a));var _0x42cc=function(_0x35d775,_0x25431e){_0x35d775=_0x35d775-0x0;var _0x59384d=_0x2cc4[_0x35d775];return _0x59384d;};'use strict';var Sequelize=require(_0x42cc('0x0'));var rs=require(_0x42cc('0x1'));module[_0x42cc('0x2')]={'name':{'type':Sequelize['STRING'],'unique':_0x42cc('0x3'),'allowNull':![]},'description':{'type':Sequelize[_0x42cc('0x4')]},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs[_0x42cc('0x5')]();}},'replyUri':{'type':Sequelize[_0x42cc('0x4')],'validate':{'isUrl':!![]}},'key':{'type':Sequelize['STRING'],'allowNull':![]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0x42cc('0x6');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x42cc('0x7')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x42cc('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize[_0x42cc('0x4')]},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x42cc('0x7')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x42cc('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x42cc('0x8')],'allowNull':!![],'defaultValue':null,'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0x42cc('0x7')],'defaultValue':![],'comment':_0x42cc('0x9'),'set':function(_0x1daacd){if(!_0x1daacd)this[_0x42cc('0xa')](_0x42cc('0xb'),null);this[_0x42cc('0xa')](_0x42cc('0xc'),_0x1daacd);}}};
\ No newline at end of file
+var _0xb045=['STRING','name','generate','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','mandatoryDispositionPauseId','setDataValue','randomstring','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xb045,0x17f));var _0x5b04=function(_0x49258d,_0x5bcf0e){_0x49258d=_0x49258d-0x0;var _0x2a9044=_0xb045[_0x49258d];return _0x2a9044;};'use strict';var Sequelize=require('sequelize');var rs=require(_0x5b04('0x0'));module[_0x5b04('0x1')]={'name':{'type':Sequelize[_0x5b04('0x2')],'unique':_0x5b04('0x3'),'allowNull':![]},'description':{'type':Sequelize[_0x5b04('0x2')]},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs[_0x5b04('0x4')]();}},'replyUri':{'type':Sequelize[_0x5b04('0x2')],'validate':{'isUrl':!![]}},'key':{'type':Sequelize[_0x5b04('0x2')],'allowNull':![]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0x5b04('0x5');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x5b04('0x6')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x5b04('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize['STRING']},'queueTransfer':{'type':Sequelize[_0x5b04('0x6')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x5b04('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x5b04('0x7')],'allowNull':!![],'defaultValue':null,'comment':_0x5b04('0x8')},'mandatoryDisposition':{'type':Sequelize[_0x5b04('0x6')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x7a909d){if(!_0x7a909d)this['setDataValue'](_0x5b04('0x9'),null);this[_0x5b04('0xa')]('mandatoryDisposition',_0x7a909d);}}};
\ No newline at end of file
index 85bd023..fb4b899 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x194c=['findAndCountAll','finally','getApplications','rawAttributes','getInteractions','Contact','fullname','internal','Tag','Tags','color','tag','addAgents','omit','removeAgents','emit','userOpenchannelAccount:remove','getAgents','DESC','out','Messages','dataValues','push','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','./openchannelAccount.socket','register','jayson/promise','http','client','request','then','OpenchannelAccount,\x20%s,\x20%s','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','end','json','offset','limit','undefined','count','status','set','Content-Range','apply','reject','save','update','destroy','get','OpenchannelAccounts','UserProfileResource','sendStatus','stack','name','send','index','Pause','mandatoryDispositionPause','OpenchannelAccount','type','key','model','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filters','pick','merge','map','VIRTUAL','filter','includeAll','rows','show','include','options','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','autoAssociation','catch','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','body','describe','OpenchannelAccountId','Disposition','getDispositions','findOne','length','findAll','removeDispositions','ids','addAnswer','getAnswers','CannedAnswer','removeAnswers','openchannel','CmContact','Sequelize','ValidationError','createdAt','updatedAt','difference','CompanyId','ListId','isNil','from','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey','CmList','List','Contacts','OpenchannelApplication','Applications','account','applications','list','orderBy','priority','asc','contact','lastName','threadId','externalUrl','OpenchannelInteraction','spread','messageId','interaction','created','autoclose','close','OpenchannelMessage','AttachmentId','UserId','unshift','waitForTheAssignedAgent','*,*,*,*','forcedOwnership','Start','startRouting','EventManager','notify','addApplications','transaction','ISOLATION_LEVELS','READ_COMMITTED','bulkCreate'];(function(_0x1f2009,_0x4b80bb){var _0x9827e6=function(_0x12d935){while(--_0x12d935){_0x1f2009['push'](_0x1f2009['shift']());}};_0x9827e6(++_0x4b80bb);}(_0x194c,0x19b));var _0xc194=function(_0x389e35,_0x23a3af){_0x389e35=_0x389e35-0x0;var _0x2e90c4=_0x194c[_0x389e35];return _0x2e90c4;};'use strict';var emlformat=require(_0xc194('0x0'));var rimraf=require(_0xc194('0x1'));var zipdir=require(_0xc194('0x2'));var jsonpatch=require(_0xc194('0x3'));var rp=require(_0xc194('0x4'));var moment=require(_0xc194('0x5'));var BPromise=require(_0xc194('0x6'));var Mustache=require('mustache');var util=require(_0xc194('0x7'));var path=require(_0xc194('0x8'));var sox=require(_0xc194('0x9'));var csv=require(_0xc194('0xa'));var ejs=require(_0xc194('0xb'));var fs=require('fs');var fs_extra=require(_0xc194('0xc'));var _=require(_0xc194('0xd'));var squel=require(_0xc194('0xe'));var crypto=require(_0xc194('0xf'));var jsforce=require(_0xc194('0x10'));var deskjs=require('desk.js');var toCsv=require(_0xc194('0xa'));var querystring=require('querystring');var Papa=require(_0xc194('0x11'));var Redis=require(_0xc194('0x12'));var authService=require(_0xc194('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0xc194('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xc194('0x15'));var utils=require(_0xc194('0x16'));var config=require(_0xc194('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xc194('0x18'))['db'];config[_0xc194('0x19')]=_[_0xc194('0x1a')](config[_0xc194('0x19')],{'host':'localhost','port':0x18eb});var socket=require(_0xc194('0x1b'))(new Redis(config['redis']));require(_0xc194('0x1c'))[_0xc194('0x1d')](socket);var jayson=require(_0xc194('0x1e'));var client=jayson['client'][_0xc194('0x1f')]({'port':0x232c});var client9002=jayson[_0xc194('0x20')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2ba88f,_0x462ca3,_0x34a5d5,_0x4c41b7){return new BPromise(function(_0x5594d,_0x4768b8){var _0x33922e=_0x4c41b7||client;return _0x33922e[_0xc194('0x21')](_0x2ba88f,_0x34a5d5)[_0xc194('0x22')](function(_0x3cc715){logger['info'](_0xc194('0x23'),_0x462ca3,'request\x20sent');logger[_0xc194('0x24')](_0xc194('0x25'),_0x462ca3,_0xc194('0x26'),JSON[_0xc194('0x27')](_0x3cc715));if(_0x3cc715[_0xc194('0x28')]){if(_0x3cc715[_0xc194('0x28')][_0xc194('0x29')]===0x1f4){logger[_0xc194('0x28')](_0xc194('0x23'),_0x462ca3,_0x3cc715['error'][_0xc194('0x2a')]);return _0x4768b8(_0x3cc715[_0xc194('0x28')]['message']);}logger[_0xc194('0x28')](_0xc194('0x23'),_0x462ca3,_0x3cc715[_0xc194('0x28')][_0xc194('0x2a')]);return _0x5594d(_0x3cc715['error'][_0xc194('0x2a')]);}else{logger[_0xc194('0x2b')](_0xc194('0x23'),_0x462ca3,_0xc194('0x26'));_0x5594d(_0x3cc715[_0xc194('0x2c')]['message']);}})['catch'](function(_0x229a0c){logger[_0xc194('0x28')](_0xc194('0x23'),_0x462ca3,_0x229a0c);_0x4768b8(_0x229a0c);});});}function respondWithStatusCode(_0x5d3883,_0x98b085){_0x98b085=_0x98b085||0xcc;return function(_0x8af06){if(_0x8af06){return _0x5d3883['sendStatus'](_0x98b085);}return _0x5d3883['status'](_0x98b085)[_0xc194('0x2d')]();};}function respondWithResult(_0x215169,_0x5ee5d0){_0x5ee5d0=_0x5ee5d0||0xc8;return function(_0x45d5b7){if(_0x45d5b7){return _0x215169['status'](_0x5ee5d0)[_0xc194('0x2e')](_0x45d5b7);}};}function respondWithFilteredResult(_0x1ecb8d,_0x2a9090){return function(_0x370f90){if(_0x370f90){var _0x1e30a9=typeof _0x2a9090[_0xc194('0x2f')]==='undefined'&&typeof _0x2a9090[_0xc194('0x30')]===_0xc194('0x31');var _0x594ab0=_0x370f90[_0xc194('0x32')];var _0x364641=_0x1e30a9?0x0:_0x2a9090[_0xc194('0x2f')];var _0x2bbb47=_0x1e30a9?_0x370f90['count']:_0x2a9090[_0xc194('0x2f')]+_0x2a9090[_0xc194('0x30')];var _0x54b6e9;if(_0x2bbb47>=_0x594ab0){_0x2bbb47=_0x594ab0;_0x54b6e9=0xc8;}else{_0x54b6e9=0xce;}_0x1ecb8d[_0xc194('0x33')](_0x54b6e9);return _0x1ecb8d[_0xc194('0x34')](_0xc194('0x35'),_0x364641+'-'+_0x2bbb47+'/'+_0x594ab0)['json'](_0x370f90);}return null;};}function patchUpdates(_0x39a734){return function(_0x4fb75a){try{jsonpatch[_0xc194('0x36')](_0x4fb75a,_0x39a734,!![]);}catch(_0x45b007){return BPromise[_0xc194('0x37')](_0x45b007);}return _0x4fb75a[_0xc194('0x38')]();};}function saveUpdates(_0x1a3bc5,_0x5d3c9e){return function(_0x15308f){if(_0x15308f){return _0x15308f[_0xc194('0x39')](_0x1a3bc5)[_0xc194('0x22')](function(_0x4a003b){return _0x4a003b;});}return null;};}function removeEntity(_0xc2cb8e,_0xe016c){return function(_0x278342){if(_0x278342){return _0x278342[_0xc194('0x3a')]()[_0xc194('0x22')](function(){var _0x9de385=_0x278342[_0xc194('0x3b')]({'plain':!![]});var _0x22b26e=_0xc194('0x3c');return db[_0xc194('0x3d')][_0xc194('0x3a')]({'where':{'type':_0x22b26e,'resourceId':_0x9de385['id']}})[_0xc194('0x22')](function(){return _0x278342;});})[_0xc194('0x22')](function(){_0xc2cb8e[_0xc194('0x33')](0xcc)[_0xc194('0x2d')]();});}};}function handleEntityNotFound(_0x543776,_0x284c2d){return function(_0x1475fd){if(!_0x1475fd){_0x543776[_0xc194('0x3e')](0x194);}return _0x1475fd;};}function handleError(_0x57d952,_0x27b879){_0x27b879=_0x27b879||0x1f4;return function(_0x2952bc){logger[_0xc194('0x28')](_0x2952bc[_0xc194('0x3f')]);if(_0x2952bc[_0xc194('0x40')]){delete _0x2952bc['name'];}_0x57d952[_0xc194('0x33')](_0x27b879)[_0xc194('0x41')](_0x2952bc);};}exports[_0xc194('0x42')]=function(_0x223a8e,_0x4dc68b){var _0x331f6f={'include':[{'model':db[_0xc194('0x43')],'as':_0xc194('0x44')}]},_0x4d06a7={},_0x86079={'count':0x0,'rows':[]};var _0x3c9a0e=_['map'](db[_0xc194('0x45')]['rawAttributes'],function(_0x3fd12d){return{'name':_0x3fd12d['fieldName'],'type':_0x3fd12d[_0xc194('0x46')][_0xc194('0x47')]};});_0x4d06a7[_0xc194('0x48')]=_['map'](_0x3c9a0e,_0xc194('0x40'));_0x4d06a7[_0xc194('0x49')]=_[_0xc194('0x4a')](_0x223a8e[_0xc194('0x49')]);_0x4d06a7['filters']=_[_0xc194('0x4b')](_0x4d06a7['model'],_0x4d06a7['query']);_0x331f6f[_0xc194('0x4c')]=_[_0xc194('0x4b')](_0x4d06a7[_0xc194('0x48')],qs[_0xc194('0x4d')](_0x223a8e[_0xc194('0x49')][_0xc194('0x4d')]));_0x331f6f[_0xc194('0x4c')]=_0x331f6f[_0xc194('0x4c')]['length']?_0x331f6f[_0xc194('0x4c')]:_0x4d06a7[_0xc194('0x48')];if(!_0x223a8e[_0xc194('0x49')][_0xc194('0x4e')](_0xc194('0x4f'))){_0x331f6f[_0xc194('0x30')]=qs[_0xc194('0x30')](_0x223a8e[_0xc194('0x49')][_0xc194('0x30')]);_0x331f6f[_0xc194('0x2f')]=qs[_0xc194('0x2f')](_0x223a8e[_0xc194('0x49')][_0xc194('0x2f')]);}_0x331f6f[_0xc194('0x50')]=qs[_0xc194('0x51')](_0x223a8e[_0xc194('0x49')][_0xc194('0x51')]);_0x331f6f[_0xc194('0x52')]=qs[_0xc194('0x53')](_[_0xc194('0x54')](_0x223a8e[_0xc194('0x49')],_0x4d06a7[_0xc194('0x53')]),_0x3c9a0e);if(_0x223a8e[_0xc194('0x49')]['filter']){_0x331f6f[_0xc194('0x52')]=_[_0xc194('0x55')](_0x331f6f['where'],{'$or':_[_0xc194('0x56')](_0x3c9a0e,function(_0x17baee){if(_0x17baee['type']!==_0xc194('0x57')){var _0x1d323f={};_0x1d323f[_0x17baee['name']]={'$like':'%'+_0x223a8e['query'][_0xc194('0x58')]+'%'};return _0x1d323f;}})});}_0x331f6f=_[_0xc194('0x55')]({},_0x331f6f,_0x223a8e['options']);var _0x1e68ab={'where':_0x331f6f[_0xc194('0x52')]};return db[_0xc194('0x45')]['count'](_0x1e68ab)[_0xc194('0x22')](function(_0x3b05e7){_0x86079[_0xc194('0x32')]=_0x3b05e7;if(_0x223a8e['query'][_0xc194('0x59')]){_0x331f6f['include']=[{'all':!![]}];}return db[_0xc194('0x45')]['findAll'](_0x331f6f);})['then'](function(_0x1ce027){_0x86079[_0xc194('0x5a')]=_0x1ce027;return _0x86079;})[_0xc194('0x22')](respondWithFilteredResult(_0x4dc68b,_0x331f6f))['catch'](handleError(_0x4dc68b,null));};exports[_0xc194('0x5b')]=function(_0x4302ba,_0x3ab08a){var _0x124478={'raw':![],'where':{'id':_0x4302ba['params']['id']},'include':[{'model':db['Pause'],'as':_0xc194('0x44')}]},_0x4a1c84={};_0x4a1c84[_0xc194('0x48')]=_[_0xc194('0x4a')](db['OpenchannelAccount']['rawAttributes']);_0x4a1c84['query']=_[_0xc194('0x4a')](_0x4302ba[_0xc194('0x49')]);_0x4a1c84[_0xc194('0x53')]=_[_0xc194('0x4b')](_0x4a1c84[_0xc194('0x48')],_0x4a1c84['query']);_0x124478[_0xc194('0x4c')]=_[_0xc194('0x4b')](_0x4a1c84[_0xc194('0x48')],qs[_0xc194('0x4d')](_0x4302ba['query'][_0xc194('0x4d')]));_0x124478['attributes']=_0x124478['attributes']['length']?_0x124478[_0xc194('0x4c')]:_0x4a1c84[_0xc194('0x48')];if(_0x4302ba[_0xc194('0x49')][_0xc194('0x59')]){_0x124478[_0xc194('0x5c')]=[{'all':!![]}];}_0x124478=_['merge']({},_0x124478,_0x4302ba[_0xc194('0x5d')]);return db[_0xc194('0x45')]['find'](_0x124478)[_0xc194('0x22')](handleEntityNotFound(_0x3ab08a,null))[_0xc194('0x22')](respondWithResult(_0x3ab08a,null))['catch'](handleError(_0x3ab08a,null));};exports[_0xc194('0x5e')]=function(_0x5f181c,_0x414c95){return db[_0xc194('0x45')][_0xc194('0x5e')](_0x5f181c['body'],{})['then'](function(_0x1a838b){var _0x59a979=_0x5f181c[_0xc194('0x5f')]['get']({'plain':!![]});if(!_0x59a979)throw new Error(_0xc194('0x60'));if(_0x59a979[_0xc194('0x61')]===_0xc194('0x5f')){var _0x4833b7=_0x1a838b[_0xc194('0x3b')]({'plain':!![]});var _0x3b84f7=_0xc194('0x3c');return db[_0xc194('0x62')][_0xc194('0x63')]({'where':{'name':_0x3b84f7,'userProfileId':_0x59a979['userProfileId']},'raw':!![]})['then'](function(_0x584abd){if(_0x584abd&&_0x584abd[_0xc194('0x64')]===0x0){return db[_0xc194('0x3d')][_0xc194('0x5e')]({'name':_0x4833b7['name'],'resourceId':_0x4833b7['id'],'type':_0x584abd[_0xc194('0x40')],'sectionId':_0x584abd['id']},{})[_0xc194('0x22')](function(){return _0x1a838b;});}else{return _0x1a838b;}})[_0xc194('0x65')](function(_0x2fc830){logger[_0xc194('0x28')](_0xc194('0x66'),_0x2fc830);throw _0x2fc830;});}return _0x1a838b;})[_0xc194('0x22')](respondWithResult(_0x414c95,0xc9))[_0xc194('0x65')](handleError(_0x414c95,null));};exports['update']=function(_0x2753c2,_0x4716c6){if(_0x2753c2['body']['id']){delete _0x2753c2['body']['id'];}return db[_0xc194('0x45')]['find']({'where':{'id':_0x2753c2[_0xc194('0x67')]['id']},'include':[{'model':db[_0xc194('0x43')],'as':_0xc194('0x44')}]})[_0xc194('0x22')](handleEntityNotFound(_0x4716c6,null))[_0xc194('0x22')](saveUpdates(_0x2753c2[_0xc194('0x68')],null))[_0xc194('0x22')](respondWithResult(_0x4716c6,null))[_0xc194('0x65')](handleError(_0x4716c6,null));};exports[_0xc194('0x3a')]=function(_0x160445,_0x2a4cd7){return db[_0xc194('0x45')][_0xc194('0x63')]({'where':{'id':_0x160445[_0xc194('0x67')]['id']}})[_0xc194('0x22')](handleEntityNotFound(_0x2a4cd7,null))[_0xc194('0x22')](removeEntity(_0x2a4cd7,null))[_0xc194('0x65')](handleError(_0x2a4cd7,null));};exports['describe']=function(_0x22d8e1,_0x56f51e){return db[_0xc194('0x45')][_0xc194('0x69')]()[_0xc194('0x22')](respondWithResult(_0x56f51e,null))[_0xc194('0x65')](handleError(_0x56f51e,null));};exports['addDisposition']=function(_0x557616,_0x4683c0,_0x4ed166){if(_0x557616[_0xc194('0x68')]['id']){delete _0x557616['body']['id'];}return db[_0xc194('0x45')][_0xc194('0x63')]({'where':{'id':_0x557616['params']['id']}})[_0xc194('0x22')](handleEntityNotFound(_0x4683c0,null))[_0xc194('0x22')](function(_0x10279c){if(_0x10279c){_0x557616[_0xc194('0x68')][_0xc194('0x6a')]=_0x10279c['id'];return db[_0xc194('0x6b')][_0xc194('0x5e')](_0x557616[_0xc194('0x68')]);}})['then'](respondWithResult(_0x4683c0,null))[_0xc194('0x65')](handleError(_0x4683c0,null));};exports[_0xc194('0x6c')]=function(_0x2b0a9b,_0x49dc60,_0x147923){var _0xafbd80={'raw':![],'where':{}};var _0x4bcbee={};var _0x39e19d={'count':0x0,'rows':[]};return db[_0xc194('0x45')][_0xc194('0x6d')]({'where':{'id':_0x2b0a9b['params']['id']}})[_0xc194('0x22')](handleEntityNotFound(_0x49dc60,null))[_0xc194('0x22')](function(_0x52e633){if(_0x52e633){_0x4bcbee[_0xc194('0x48')]=_[_0xc194('0x4a')](db[_0xc194('0x6b')]['rawAttributes']);_0x4bcbee['query']=_['keys'](_0x2b0a9b[_0xc194('0x49')]);_0x4bcbee[_0xc194('0x53')]=_[_0xc194('0x4b')](_0x4bcbee[_0xc194('0x48')],_0x4bcbee[_0xc194('0x49')]);_0xafbd80[_0xc194('0x4c')]=_['intersection'](_0x4bcbee[_0xc194('0x48')],qs[_0xc194('0x4d')](_0x2b0a9b['query']['fields']));_0xafbd80[_0xc194('0x4c')]=_0xafbd80[_0xc194('0x4c')][_0xc194('0x6e')]?_0xafbd80[_0xc194('0x4c')]:_0x4bcbee[_0xc194('0x48')];if(!_0x2b0a9b[_0xc194('0x49')][_0xc194('0x4e')](_0xc194('0x4f'))){_0xafbd80[_0xc194('0x30')]=qs['limit'](_0x2b0a9b[_0xc194('0x49')]['limit']);_0xafbd80[_0xc194('0x2f')]=qs['offset'](_0x2b0a9b[_0xc194('0x49')]['offset']);}_0xafbd80['order']=qs['sort'](_0x2b0a9b['query'][_0xc194('0x51')]);_0xafbd80['where']=qs['filters'](_['pick'](_0x2b0a9b[_0xc194('0x49')],_0x4bcbee[_0xc194('0x53')]));_0xafbd80[_0xc194('0x52')][_0xc194('0x6a')]=_0x52e633['id'];if(_0x2b0a9b[_0xc194('0x49')][_0xc194('0x58')]){_0xafbd80[_0xc194('0x52')]=_[_0xc194('0x55')](_0xafbd80[_0xc194('0x52')],{'$or':_[_0xc194('0x56')](_0xafbd80['attributes'],function(_0x2a0341){var _0x215498={};_0x215498[_0x2a0341]={'$like':'%'+_0x2b0a9b['query']['filter']+'%'};return _0x215498;})});}_0xafbd80=_['merge']({},_0xafbd80,_0x2b0a9b[_0xc194('0x5d')]);return db[_0xc194('0x6b')][_0xc194('0x32')]({'where':_0xafbd80[_0xc194('0x52')]})['then'](function(_0xb38f37){_0x39e19d[_0xc194('0x32')]=_0xb38f37;if(_0x2b0a9b[_0xc194('0x49')][_0xc194('0x59')]){_0xafbd80['include']=[{'all':!![]}];}return db[_0xc194('0x6b')][_0xc194('0x6f')](_0xafbd80);})['then'](function(_0x512dcf){_0x39e19d[_0xc194('0x5a')]=_0x512dcf;return _0x39e19d;});}})[_0xc194('0x22')](respondWithFilteredResult(_0x49dc60,_0xafbd80))[_0xc194('0x65')](handleError(_0x49dc60,null));};exports[_0xc194('0x70')]=function(_0x52b62e,_0x280624,_0x5ad9c9){return db[_0xc194('0x45')][_0xc194('0x63')]({'where':{'id':_0x52b62e['params']['id']}})[_0xc194('0x22')](handleEntityNotFound(_0x280624,null))['then'](function(_0xeae98e){if(_0xeae98e){return _0xeae98e['removeDispositions'](_0x52b62e[_0xc194('0x49')][_0xc194('0x71')]);}})[_0xc194('0x22')](respondWithStatusCode(_0x280624,null))[_0xc194('0x65')](handleError(_0x280624,null));};exports[_0xc194('0x72')]=function(_0x46189f,_0xb78c45,_0x410a3b){if(_0x46189f[_0xc194('0x68')]['id']){delete _0x46189f[_0xc194('0x68')]['id'];}return db[_0xc194('0x45')][_0xc194('0x63')]({'where':{'id':_0x46189f[_0xc194('0x67')]['id']}})[_0xc194('0x22')](handleEntityNotFound(_0xb78c45,null))['then'](function(_0x2ee1f2){if(_0x2ee1f2){_0x46189f[_0xc194('0x68')][_0xc194('0x6a')]=_0x2ee1f2['id'];return db['CannedAnswer'][_0xc194('0x5e')](_0x46189f[_0xc194('0x68')]);}})[_0xc194('0x22')](respondWithResult(_0xb78c45,null))[_0xc194('0x65')](handleError(_0xb78c45,null));};exports[_0xc194('0x73')]=function(_0x1904e8,_0x5a63b1,_0x51fb04){var _0x3ab4e0={'raw':![],'where':{}};var _0x3dff4f={};var _0x1f7c5d={'count':0x0,'rows':[]};return db[_0xc194('0x45')][_0xc194('0x6d')]({'where':{'id':_0x1904e8[_0xc194('0x67')]['id']}})[_0xc194('0x22')](handleEntityNotFound(_0x5a63b1,null))['then'](function(_0x3227dc){if(_0x3227dc){_0x3dff4f[_0xc194('0x48')]=_[_0xc194('0x4a')](db[_0xc194('0x74')]['rawAttributes']);_0x3dff4f[_0xc194('0x49')]=_[_0xc194('0x4a')](_0x1904e8[_0xc194('0x49')]);_0x3dff4f['filters']=_[_0xc194('0x4b')](_0x3dff4f[_0xc194('0x48')],_0x3dff4f[_0xc194('0x49')]);_0x3ab4e0[_0xc194('0x4c')]=_[_0xc194('0x4b')](_0x3dff4f[_0xc194('0x48')],qs[_0xc194('0x4d')](_0x1904e8['query'][_0xc194('0x4d')]));_0x3ab4e0['attributes']=_0x3ab4e0['attributes']['length']?_0x3ab4e0[_0xc194('0x4c')]:_0x3dff4f[_0xc194('0x48')];if(!_0x1904e8[_0xc194('0x49')][_0xc194('0x4e')]('nolimit')){_0x3ab4e0[_0xc194('0x30')]=qs[_0xc194('0x30')](_0x1904e8['query']['limit']);_0x3ab4e0['offset']=qs[_0xc194('0x2f')](_0x1904e8[_0xc194('0x49')]['offset']);}_0x3ab4e0[_0xc194('0x50')]=qs[_0xc194('0x51')](_0x1904e8[_0xc194('0x49')]['sort']);_0x3ab4e0[_0xc194('0x52')]=qs[_0xc194('0x53')](_['pick'](_0x1904e8[_0xc194('0x49')],_0x3dff4f['filters']));_0x3ab4e0[_0xc194('0x52')][_0xc194('0x6a')]=_0x3227dc['id'];if(_0x1904e8[_0xc194('0x49')]['filter']){_0x3ab4e0[_0xc194('0x52')]=_[_0xc194('0x55')](_0x3ab4e0[_0xc194('0x52')],{'$or':_[_0xc194('0x56')](_0x3ab4e0[_0xc194('0x4c')],function(_0x2935b2){var _0x9d157a={};_0x9d157a[_0x2935b2]={'$like':'%'+_0x1904e8[_0xc194('0x49')][_0xc194('0x58')]+'%'};return _0x9d157a;})});}_0x3ab4e0=_[_0xc194('0x55')]({},_0x3ab4e0,_0x1904e8[_0xc194('0x5d')]);return db[_0xc194('0x74')]['count']({'where':_0x3ab4e0[_0xc194('0x52')]})[_0xc194('0x22')](function(_0x5be4df){_0x1f7c5d[_0xc194('0x32')]=_0x5be4df;if(_0x1904e8[_0xc194('0x49')][_0xc194('0x59')]){_0x3ab4e0[_0xc194('0x5c')]=[{'all':!![]}];}return db[_0xc194('0x74')][_0xc194('0x6f')](_0x3ab4e0);})[_0xc194('0x22')](function(_0x3b35f1){_0x1f7c5d['rows']=_0x3b35f1;return _0x1f7c5d;});}})['then'](respondWithFilteredResult(_0x5a63b1,_0x3ab4e0))[_0xc194('0x65')](handleError(_0x5a63b1,null));};exports[_0xc194('0x75')]=function(_0x5c67cb,_0xc78307,_0xd6f856){return db['OpenchannelAccount'][_0xc194('0x63')]({'where':{'id':_0x5c67cb[_0xc194('0x67')]['id']}})[_0xc194('0x22')](handleEntityNotFound(_0xc78307,null))[_0xc194('0x22')](function(_0x5cb02f){if(_0x5cb02f){return _0x5cb02f['removeAnswers'](_0x5c67cb[_0xc194('0x49')][_0xc194('0x71')]);}})['then'](respondWithStatusCode(_0xc78307,null))['catch'](handleError(_0xc78307,null));};exports['notify']=function(_0x3c5984,_0x50ea5f,_0x405895){var _0x56e97b={'body':_0x3c5984[_0xc194('0x68')],'channel':_0xc194('0x76')};var _0x3b4265=[];var _0x5606c8=[];var _0x341686={};var _0x188a1f=![];return db[_0xc194('0x77')][_0xc194('0x69')]()[_0xc194('0x22')](function(_0xd9383e){if(!_0xd9383e){throw new db[(_0xc194('0x78'))][(_0xc194('0x79'))]('no\x20available\x20attributes');}_0x3b4265=_['difference'](_[_0xc194('0x4a')](_0xd9383e),[_0xc194('0x7a'),_0xc194('0x7b')]);_0x5606c8=_[_0xc194('0x7c')](_['keys'](_0xd9383e),[_0xc194('0x7a'),_0xc194('0x7b'),_0xc194('0x7d'),_0xc194('0x7e')]);if(_0x3c5984[_0xc194('0x68')]['id']){delete _0x3c5984[_0xc194('0x68')]['id'];}if(_[_0xc194('0x7f')](_0x3c5984['body'][_0xc194('0x80')])){throw new db[(_0xc194('0x78'))]['ValidationError']('from\x20is\x20mandatory');}if(_['isNil'](_0x3c5984['body']['body'])||_0x3c5984[_0xc194('0x68')][_0xc194('0x68')]===''){throw new db[(_0xc194('0x78'))][(_0xc194('0x79'))](_0xc194('0x81'));}if(_[_0xc194('0x7f')](_0x3c5984['body']['mapKey'])){throw new db[(_0xc194('0x78'))][(_0xc194('0x79'))](_0xc194('0x82')+_0x5606c8);}if(!_[_0xc194('0x83')](_0x5606c8,_0x3c5984['body'][_0xc194('0x84')])){throw new db[(_0xc194('0x78'))][(_0xc194('0x79'))]('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x5606c8);}_0x341686[_0x3c5984['body'][_0xc194('0x84')]]=_0x3c5984[_0xc194('0x68')][_0xc194('0x80')];})['then'](function(){return db[_0xc194('0x45')][_0xc194('0x63')]({'where':{'id':_0x3c5984[_0xc194('0x67')]['id']},'include':[{'model':db[_0xc194('0x85')],'as':_0xc194('0x86'),'include':[{'model':db[_0xc194('0x77')],'as':_0xc194('0x87'),'where':_0x341686,'limit':0x1,'order':[[_0xc194('0x7b'),'DESC']]}]},{'model':db[_0xc194('0x88')],'as':_0xc194('0x89')}]});})[_0xc194('0x22')](handleEntityNotFound(_0x50ea5f,null))[_0xc194('0x22')](function(_0x28f9ab){if(_0x28f9ab&&_0x28f9ab[_0xc194('0x86')]){_0x56e97b[_0xc194('0x8a')]=_0x28f9ab;_0x56e97b[_0xc194('0x8b')]=_0x28f9ab[_0xc194('0x89')];_0x56e97b[_0xc194('0x8c')]=_0x28f9ab[_0xc194('0x86')];_0x56e97b[_0xc194('0x8b')]=_[_0xc194('0x8d')](_0x56e97b[_0xc194('0x8b')],[_0xc194('0x8e')],[_0xc194('0x8f')]);if(_0x56e97b[_0xc194('0x8a')]['Applications']){delete _0x56e97b[_0xc194('0x8a')][_0xc194('0x89')];}if(_0x56e97b[_0xc194('0x8a')][_0xc194('0x86')]&&_0x56e97b[_0xc194('0x8a')][_0xc194('0x86')][_0xc194('0x87')][_0xc194('0x6e')]){return _0x56e97b[_0xc194('0x8a')][_0xc194('0x86')][_0xc194('0x87')][0x0];}var _0x18a5ac=_['defaults'](_0x3c5984[_0xc194('0x68')],{'firstName':_0x3c5984[_0xc194('0x68')]['from'],'ListId':_0x28f9ab[_0xc194('0x7e')]});_0x18a5ac[_0x3c5984['body']['mapKey']]=_0x3c5984[_0xc194('0x68')][_0xc194('0x80')];return db[_0xc194('0x77')]['create'](_0x18a5ac,{'fields':_0x3b4265,'raw':!![]});}})[_0xc194('0x22')](handleEntityNotFound(_0x50ea5f,null))['then'](function(_0x69fe40){_0x56e97b[_0xc194('0x90')]=_0x69fe40;if(_0x69fe40){var _0x159b0d={'ContactId':_0x69fe40['id'],'OpenchannelAccountId':_0x3c5984[_0xc194('0x67')]['id'],'from':(_0x69fe40['firstName']||'')+'\x20'+(_0x69fe40[_0xc194('0x91')]||'')};var _0x2871be={'OpenchannelAccountId':_0x3c5984[_0xc194('0x67')]['id'],'closed':![]};if(_0x3c5984[_0xc194('0x68')][_0xc194('0x92')]){_0x2871be[_0xc194('0x92')]=_0x3c5984[_0xc194('0x68')][_0xc194('0x92')];return db['OpenchannelInteraction'][_0xc194('0x63')]({'where':_0x2871be})[_0xc194('0x22')](function(_0x22d751){if(_0x22d751){return[_0x22d751,![]];}_0x159b0d[_0xc194('0x92')]=_0x3c5984[_0xc194('0x68')][_0xc194('0x92')];_0x159b0d[_0xc194('0x93')]=_0x3c5984[_0xc194('0x68')][_0xc194('0x93')];return db['OpenchannelInteraction'][_0xc194('0x5e')](_0x159b0d)[_0xc194('0x22')](function(_0x16a841){return[_0x16a841,!![]];});});}else{_0x2871be[_0xc194('0x92')]=null;}_0x2871be['ContactId']=_0x69fe40['id'];return db[_0xc194('0x94')][_0xc194('0x63')]({'where':_0x2871be})[_0xc194('0x22')](function(_0x1c5d1f){if(_0x1c5d1f){return[_0x1c5d1f,![]];}return db[_0xc194('0x94')][_0xc194('0x5e')](_0x159b0d)[_0xc194('0x22')](function(_0xc9a057){return[_0xc9a057,!![]];});});}})[_0xc194('0x95')](function(_0x3f6599,_0x1a2840){if(_0x3f6599){_0x188a1f=_0x1a2840;if(!_0x1a2840){var _0x505b83={'from':(_0x56e97b[_0xc194('0x90')]['firstName']||'')+'\x20'+(_0x56e97b[_0xc194('0x90')]['lastName']||'')};if(_0x3c5984[_0xc194('0x68')][_0xc194('0x92')]&&_0x3c5984['body'][_0xc194('0x96')]&&_0x3c5984[_0xc194('0x68')]['threadId']!=_0x3c5984[_0xc194('0x68')][_0xc194('0x96')]){_0x505b83[_0xc194('0x92')]=_0x3c5984[_0xc194('0x68')]['messageId'];}return _0x3f6599[_0xc194('0x39')](_0x505b83);}else{return _0x3f6599;}}})[_0xc194('0x22')](function(_0x1944e3){_0x56e97b[_0xc194('0x97')]=_0x1944e3[_0xc194('0x3b')]({'plain':!![]});_0x56e97b[_0xc194('0x97')][_0xc194('0x98')]=_0x188a1f;if(_0x56e97b[_0xc194('0x97')][_0xc194('0x98')]){if(_0x56e97b[_0xc194('0x8a')][_0xc194('0x99')]){_0x56e97b[_0xc194('0x8b')]['push']({'id':0x0,'priority':_0x56e97b['applications'][_0xc194('0x6e')]+0x1,'app':_0xc194('0x9a'),'appdata':'unmanaged','interval':'*,*,*,*'});}}return db[_0xc194('0x9b')][_0xc194('0x5e')]({'body':_0x3c5984[_0xc194('0x68')][_0xc194('0x68')],'OpenchannelAccountId':_0x3c5984[_0xc194('0x67')]['id'],'OpenchannelInteractionId':_0x1944e3['id'],'direction':'in','ContactId':_0x56e97b[_0xc194('0x90')]['id'],'AttachmentId':_0x3c5984[_0xc194('0x68')][_0xc194('0x9c')]});})[_0xc194('0x22')](function(_0x5c9849){_0x56e97b['message']=_0x5c9849;if(_0x56e97b[_0xc194('0x97')]['UserId']){return db['User'][_0xc194('0x63')]({'attributes':['id',_0xc194('0x40')],'where':{'id':_0x56e97b[_0xc194('0x97')][_0xc194('0x9d')]}})['then'](function(_0x519a1f){if(_0x519a1f){_0x56e97b[_0xc194('0x8b')][_0xc194('0x9e')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x519a1f[_0xc194('0x40')]+','+(_0x56e97b['account'][_0xc194('0x9f')]||0xa),'interval':_0xc194('0xa0')});_0x56e97b[_0xc194('0xa1')]=![];}return respondWithRpcPromise(_0xc194('0xa2'),_0xc194('0xa3'),_0x56e97b);});}return respondWithRpcPromise(_0xc194('0xa2'),_0xc194('0xa3'),_0x56e97b);})[_0xc194('0x22')](function(_0x212337){respondWithRpcPromise(_0xc194('0xa4'),'EventManager',{'event':_0xc194('0xa5'),'message':_0x212337},client9002);return _0x212337;})[_0xc194('0x22')](respondWithResult(_0x50ea5f,null))[_0xc194('0x65')](handleError(_0x50ea5f,null));};exports[_0xc194('0xa6')]=function(_0x33e512,_0x2ccdfe){var _0x1c46d5=_0x33e512['params']['id'];var _0x420b27=_0x33e512[_0xc194('0x68')];var _0x24c2c9=0xc8;var _0xeae77b=null;return db['sequelize'][_0xc194('0xa7')]({'isolationLevel':db['sequelize']['Transaction'][_0xc194('0xa8')][_0xc194('0xa9')]},function(_0x387d44){return db[_0xc194('0x45')][_0xc194('0x6d')]({'where':{'id':_0x1c46d5},'transaction':_0x387d44})[_0xc194('0x22')](function(_0x4ec7ae){if(_0x4ec7ae){return db['OpenchannelApplication']['destroy']({'where':{'OpenchannelAccountId':_0x1c46d5},'transaction':_0x387d44})[_0xc194('0x22')](function(){var _0x3cd63c=_[_0xc194('0x56')](_0x420b27,function(_0x1d5563){_0x1d5563['OpenchannelAccountId']=_0x1c46d5;return _0x1d5563;});return db[_0xc194('0x88')][_0xc194('0xaa')](_0x3cd63c,{'transaction':_0x387d44});});}else{_0x24c2c9=0x194;_0xeae77b=[];}});})['then'](function(){if(_0x24c2c9!==0x194){return db[_0xc194('0x88')][_0xc194('0xab')]({'where':{'OpenchannelAccountId':_0x1c46d5},'order':_0xc194('0x8e')})[_0xc194('0x22')](function(_0x46965a){_0xeae77b=_0x46965a;});}})[_0xc194('0x65')](function(_0x526664){_0x24c2c9=0x1f4;logger[_0xc194('0x28')](_0x526664[_0xc194('0x3f')]);if(_0x526664[_0xc194('0x40')]){delete _0x526664[_0xc194('0x40')];}_0xeae77b=_0x526664;})[_0xc194('0xac')](function(){if(_0xeae77b===null){_0x2ccdfe[_0xc194('0x3e')](_0x24c2c9);}else{if(_0x24c2c9===0x1f4){_0x2ccdfe[_0xc194('0x33')](_0x24c2c9)[_0xc194('0x41')](_0xeae77b);}else{_0x2ccdfe[_0xc194('0x33')](_0x24c2c9)[_0xc194('0x2e')](_0xeae77b);}}});};exports[_0xc194('0xad')]=function(_0x5a1663,_0x26cc24,_0x54ea71){var _0x31cb4f={};var _0x33156d={};var _0xf42bd0;var _0x38a988;return db['OpenchannelAccount'][_0xc194('0x6d')]({'where':{'id':_0x5a1663[_0xc194('0x67')]['id']}})[_0xc194('0x22')](handleEntityNotFound(_0x26cc24,null))[_0xc194('0x22')](function(_0x32f3bf){if(_0x32f3bf){_0xf42bd0=_0x32f3bf;_0x33156d[_0xc194('0x48')]=_['keys'](db[_0xc194('0x88')][_0xc194('0xae')]);_0x33156d['query']=_['keys'](_0x5a1663[_0xc194('0x49')]);_0x33156d[_0xc194('0x53')]=_[_0xc194('0x4b')](_0x33156d[_0xc194('0x48')],_0x33156d[_0xc194('0x49')]);_0x31cb4f['attributes']=_[_0xc194('0x4b')](_0x33156d['model'],qs[_0xc194('0x4d')](_0x5a1663[_0xc194('0x49')][_0xc194('0x4d')]));_0x31cb4f[_0xc194('0x4c')]=_0x31cb4f[_0xc194('0x4c')][_0xc194('0x6e')]?_0x31cb4f[_0xc194('0x4c')]:_0x33156d[_0xc194('0x48')];_0x31cb4f['order']=qs['sort'](_0x5a1663[_0xc194('0x49')][_0xc194('0x51')]);_0x31cb4f['where']=qs[_0xc194('0x53')](_[_0xc194('0x54')](_0x5a1663[_0xc194('0x49')],_0x33156d[_0xc194('0x53')]));if(_0x5a1663[_0xc194('0x49')][_0xc194('0x58')]){_0x31cb4f[_0xc194('0x52')]=_['merge'](_0x31cb4f[_0xc194('0x52')],{'$or':_[_0xc194('0x56')](_0x31cb4f[_0xc194('0x4c')],function(_0x2e0198){var _0x4f15ea={};_0x4f15ea[_0x2e0198]={'$like':'%'+_0x5a1663[_0xc194('0x49')][_0xc194('0x58')]+'%'};return _0x4f15ea;})});}_0x31cb4f=_[_0xc194('0x55')]({},_0x31cb4f,_0x5a1663['options']);return _0xf42bd0[_0xc194('0xad')](_0x31cb4f);}})[_0xc194('0x22')](function(_0x34906a){if(_0x34906a){_0x38a988=_0x34906a['length'];if(!_0x5a1663[_0xc194('0x49')]['hasOwnProperty']('nolimit')){_0x31cb4f[_0xc194('0x30')]=qs['limit'](_0x5a1663[_0xc194('0x49')][_0xc194('0x30')]);_0x31cb4f['offset']=qs[_0xc194('0x2f')](_0x5a1663[_0xc194('0x49')]['offset']);}return _0xf42bd0[_0xc194('0xad')](_0x31cb4f);}})[_0xc194('0x22')](function(_0x222acd){if(_0x222acd){return _0x222acd?{'count':_0x38a988,'rows':_0x222acd}:null;}})['then'](respondWithResult(_0x26cc24,null))['catch'](handleError(_0x26cc24,null));};exports[_0xc194('0xaf')]=function(_0x121e2c,_0x5bec13,_0x420869){var _0x64f29={'raw':![],'where':{}};var _0x495f04={};var _0x30cc2a={'count':0x0,'rows':[]};return db[_0xc194('0x45')][_0xc194('0x6d')]({'where':{'id':_0x121e2c[_0xc194('0x67')]['id']}})[_0xc194('0x22')](handleEntityNotFound(_0x5bec13,null))[_0xc194('0x22')](function(_0x538da5){if(_0x538da5){_0x495f04[_0xc194('0x48')]=_[_0xc194('0x4a')](db[_0xc194('0x94')]['rawAttributes']);_0x495f04[_0xc194('0x49')]=_[_0xc194('0x4a')](_0x121e2c[_0xc194('0x49')]);_0x495f04['filters']=_[_0xc194('0x4b')](_0x495f04[_0xc194('0x48')],_0x495f04['query']);_0x64f29[_0xc194('0x4c')]=_['intersection'](_0x495f04[_0xc194('0x48')],qs[_0xc194('0x4d')](_0x121e2c[_0xc194('0x49')][_0xc194('0x4d')]));_0x64f29[_0xc194('0x4c')]=_0x64f29['attributes'][_0xc194('0x6e')]?_0x64f29[_0xc194('0x4c')]:_0x495f04[_0xc194('0x48')];if(!_0x121e2c[_0xc194('0x49')][_0xc194('0x4e')](_0xc194('0x4f'))){_0x64f29[_0xc194('0x30')]=qs[_0xc194('0x30')](_0x121e2c['query'][_0xc194('0x30')]);_0x64f29[_0xc194('0x2f')]=qs[_0xc194('0x2f')](_0x121e2c[_0xc194('0x49')][_0xc194('0x2f')]);}_0x64f29[_0xc194('0x50')]=qs[_0xc194('0x51')](_0x121e2c[_0xc194('0x49')][_0xc194('0x51')]);_0x64f29['where']=qs['filters'](_['pick'](_0x121e2c['query'],_0x495f04[_0xc194('0x53')]));_0x64f29[_0xc194('0x52')]['OpenchannelAccountId']=_0x538da5['id'];if(_0x121e2c[_0xc194('0x49')][_0xc194('0x58')]){_0x64f29['where']=_[_0xc194('0x55')](_0x64f29[_0xc194('0x52')],{'$or':_['map'](_0x64f29['attributes'],function(_0x5b00a6){var _0x31e602={};_0x31e602[_0x5b00a6]={'$like':'%'+_0x121e2c['query']['filter']+'%'};return _0x31e602;})});}_0x64f29=_[_0xc194('0x55')]({},_0x64f29,_0x121e2c[_0xc194('0x5d')]);return db[_0xc194('0x94')]['count']({'where':_0x64f29[_0xc194('0x52')]})[_0xc194('0x22')](function(_0x358f90){_0x30cc2a[_0xc194('0x32')]=_0x358f90;if(_0x121e2c[_0xc194('0x49')][_0xc194('0x59')]){_0x64f29[_0xc194('0x5c')]=[{'model':db[_0xc194('0x77')],'as':_0xc194('0xb0'),'required':![]},{'model':db['User'],'as':'Owner','attributes':[_0xc194('0x40'),_0xc194('0xb1'),_0xc194('0xb2')],'required':![]},{'model':db[_0xc194('0xb3')],'as':_0xc194('0xb4'),'attributes':['id',_0xc194('0x40'),_0xc194('0xb5')],'where':_0x121e2c['query'][_0xc194('0xb6')]?{'id':_0x121e2c[_0xc194('0x49')][_0xc194('0xb6')]}:undefined,'required':_0x121e2c[_0xc194('0x49')][_0xc194('0xb6')]?!![]:![]}];}return db[_0xc194('0x94')][_0xc194('0x6f')](_0x64f29);})[_0xc194('0x22')](function(_0x1404cd){_0x30cc2a['rows']=_0x1404cd;return _0x30cc2a;});}})['then'](respondWithFilteredResult(_0x5bec13,_0x64f29))['catch'](handleError(_0x5bec13,null));};exports[_0xc194('0xb7')]=function(_0x1aa3f5,_0x2c1206,_0xb73dfe){return db['OpenchannelAccount'][_0xc194('0x63')]({'where':{'id':_0x1aa3f5[_0xc194('0x67')]['id']}})[_0xc194('0x22')](handleEntityNotFound(_0x2c1206,null))[_0xc194('0x22')](function(_0x43ac92){if(_0x43ac92){return _0x43ac92[_0xc194('0xb7')](_0x1aa3f5[_0xc194('0x68')][_0xc194('0x71')],_[_0xc194('0xb8')](_0x1aa3f5[_0xc194('0x68')],[_0xc194('0x71'),'id'])||{})['spread'](function(_0xfe0915){for(var _0x54a446=0x0;_0x54a446<_0x1aa3f5[_0xc194('0x68')][_0xc194('0x71')][_0xc194('0x6e')];_0x54a446+=0x1){socket['emit']('userOpenchannelAccount:save',{'UserId':Number(_0x1aa3f5[_0xc194('0x68')][_0xc194('0x71')][_0x54a446]),'OpenchannelAccountId':Number(_0x1aa3f5[_0xc194('0x67')]['id'])});}return _0xfe0915;});}})[_0xc194('0x22')](respondWithResult(_0x2c1206,null))[_0xc194('0x65')](handleError(_0x2c1206,null));};exports[_0xc194('0xb9')]=function(_0x3a7642,_0xdf6a7a,_0x3a35c2){return db[_0xc194('0x45')][_0xc194('0x63')]({'where':{'id':_0x3a7642[_0xc194('0x67')]['id']}})[_0xc194('0x22')](handleEntityNotFound(_0xdf6a7a,null))[_0xc194('0x22')](function(_0x2802c4){if(_0x2802c4){return _0x2802c4[_0xc194('0xb9')](_0x3a7642['query'][_0xc194('0x71')])[_0xc194('0x22')](function(){if(_['isArray'](_0x3a7642[_0xc194('0x49')][_0xc194('0x71')])){for(var _0x5c76e4=0x0;_0x5c76e4<_0x3a7642['query'][_0xc194('0x71')][_0xc194('0x6e')];_0x5c76e4+=0x1){socket[_0xc194('0xba')]('userOpenchannelAccount:remove',{'UserId':Number(_0x3a7642[_0xc194('0x49')][_0xc194('0x71')][_0x5c76e4]),'OpenchannelAccountId':Number(_0x3a7642[_0xc194('0x67')]['id'])});}}else{socket[_0xc194('0xba')](_0xc194('0xbb'),{'UserId':Number(_0x3a7642['query'][_0xc194('0x71')]),'OpenchannelAccountId':Number(_0x3a7642[_0xc194('0x67')]['id'])});}});}})[_0xc194('0x22')](respondWithStatusCode(_0xdf6a7a,null))[_0xc194('0x65')](handleError(_0xdf6a7a,null));};exports[_0xc194('0xbc')]=function(_0x13bf5f,_0x1a9020,_0x45ca63){var _0x3142e1={};var _0x193d1f={};var _0x46b75f;var _0x39b22b;return db[_0xc194('0x45')][_0xc194('0x6d')]({'where':{'id':_0x13bf5f[_0xc194('0x67')]['id']}})[_0xc194('0x22')](handleEntityNotFound(_0x1a9020,null))[_0xc194('0x22')](function(_0x346b3f){if(_0x346b3f){_0x46b75f=_0x346b3f;_0x193d1f[_0xc194('0x48')]=_['keys'](db['User'][_0xc194('0xae')]);_0x193d1f['query']=_[_0xc194('0x4a')](_0x13bf5f[_0xc194('0x49')]);_0x193d1f[_0xc194('0x53')]=_['intersection'](_0x193d1f['model'],_0x193d1f[_0xc194('0x49')]);_0x3142e1[_0xc194('0x4c')]=_[_0xc194('0x4b')](_0x193d1f[_0xc194('0x48')],qs[_0xc194('0x4d')](_0x13bf5f[_0xc194('0x49')][_0xc194('0x4d')]));_0x3142e1[_0xc194('0x4c')]=_0x3142e1[_0xc194('0x4c')][_0xc194('0x6e')]?_0x3142e1[_0xc194('0x4c')]:_0x193d1f['model'];_0x3142e1[_0xc194('0x50')]=qs[_0xc194('0x51')](_0x13bf5f['query'][_0xc194('0x51')]);_0x3142e1[_0xc194('0x52')]=qs['filters'](_[_0xc194('0x54')](_0x13bf5f['query'],_0x193d1f[_0xc194('0x53')]));if(_0x13bf5f[_0xc194('0x49')][_0xc194('0x58')]){_0x3142e1['where']=_['merge'](_0x3142e1[_0xc194('0x52')],{'$or':_[_0xc194('0x56')](_0x3142e1[_0xc194('0x4c')],function(_0x27504b){var _0x44525c={};_0x44525c[_0x27504b]={'$like':'%'+_0x13bf5f[_0xc194('0x49')]['filter']+'%'};return _0x44525c;})});}_0x3142e1=_[_0xc194('0x55')]({},_0x3142e1,_0x13bf5f[_0xc194('0x5d')]);return _0x46b75f[_0xc194('0xbc')](_0x3142e1);}})[_0xc194('0x22')](function(_0x16f46e){if(_0x16f46e){_0x39b22b=_0x16f46e[_0xc194('0x6e')];if(!_0x13bf5f[_0xc194('0x49')][_0xc194('0x4e')](_0xc194('0x4f'))){_0x3142e1[_0xc194('0x30')]=qs[_0xc194('0x30')](_0x13bf5f[_0xc194('0x49')][_0xc194('0x30')]);_0x3142e1[_0xc194('0x2f')]=qs[_0xc194('0x2f')](_0x13bf5f[_0xc194('0x49')][_0xc194('0x2f')]);}return _0x46b75f[_0xc194('0xbc')](_0x3142e1);}})['then'](function(_0x319e52){if(_0x319e52){return _0x319e52?{'count':_0x39b22b,'rows':_0x319e52}:null;}})[_0xc194('0x22')](respondWithResult(_0x1a9020,null))[_0xc194('0x65')](handleError(_0x1a9020,null));};exports[_0xc194('0x41')]=function(_0x1d929f,_0x1a1434,_0x1298bf){var _0x2f3945,_0x381569,_0xa0461c;if(_[_0xc194('0x7f')](_0x1d929f['body'][_0xc194('0x68')])||_0x1d929f[_0xc194('0x68')][_0xc194('0x68')]===''){throw new db['Sequelize']['ValidationError'](_0xc194('0x81'));}if(_[_0xc194('0x7f')](_0x1d929f['body']['to'])){}_0x2f3945=_0x1d929f[_0xc194('0x68')]['to'];return db[_0xc194('0x45')][_0xc194('0x6d')]({'where':{'id':_0x1d929f[_0xc194('0x67')]['id']}})[_0xc194('0x22')](handleEntityNotFound(_0x1a1434,null))[_0xc194('0x22')](function(_0xa13f6d){if(_0xa13f6d){return db[_0xc194('0x45')][_0xc194('0x63')]({'where':{'id':_0xa13f6d['id']},'include':[{'model':db[_0xc194('0x85')],'as':_0xc194('0x86'),'include':[{'model':db['CmContact'],'as':_0xc194('0x87'),'where':{[_0xa13f6d[_0xc194('0x84')]]:_0x2f3945},'limit':0x1,'order':[[_0xc194('0x7b'),_0xc194('0xbd')]]}]}]})[_0xc194('0x22')](handleEntityNotFound(_0x1a1434,null))[_0xc194('0x22')](function(_0x4ae53b){if(_0x4ae53b&&_0x4ae53b[_0xc194('0x86')]){_0x381569=_0x4ae53b['get']({'plain':!![]});if(_0x381569['List']&&_0x381569[_0xc194('0x86')][_0xc194('0x87')][_0xc194('0x6e')]){return _0x381569['List'][_0xc194('0x87')][0x0];}return db[_0xc194('0x77')]['create'](_[_0xc194('0x1a')](_0x1d929f[_0xc194('0x68')],{'firstName':_0x2f3945,[_0x4ae53b[_0xc194('0x84')]]:_0x2f3945,'phone':_0x2f3945,'ListId':_0x381569[_0xc194('0x7e')]}));}})['then'](handleEntityNotFound(_0x1a1434,null))[_0xc194('0x22')](function(_0x105863){if(_0x105863){_0xa0461c=_0x105863;return db[_0xc194('0x94')]['find']({'where':{'ContactId':_0xa0461c['id'],'closed':![],'OpenchannelAccountId':_0x381569['id']}})[_0xc194('0x22')](function(_0x25dcdb){if(_0x25dcdb){return[_0x25dcdb,![]];}return db[_0xc194('0x94')][_0xc194('0x5e')]({'UserId':_0x1d929f[_0xc194('0x5f')]['id'],'ContactId':_0xa0461c['id'],'OpenchannelAccountId':_0x381569['id'],'lastMsgDirection':_0xc194('0xbe'),'firstMsgDirection':_0xc194('0xbe'),'Messages':[_['merge'](_0x1d929f[_0xc194('0x68')],{'read':![],'body':_0x1d929f[_0xc194('0x68')]['body'],'OpenchannelAccountId':_0x381569['id'],'UserId':_0x1d929f[_0xc194('0x5f')]['id'],'ContactId':_0xa0461c['id']})]},{'include':[{'model':db[_0xc194('0x9b')],'as':_0xc194('0xbf')}]})[_0xc194('0x22')](function(_0x4f3898){return[_0x4f3898,!![]];});});}})['spread'](function(_0x204410,_0x7e2bac){if(_0x7e2bac){return _0x204410;}return db[_0xc194('0x9b')][_0xc194('0x5e')](_['merge'](_0x1d929f[_0xc194('0x68')],{'read':![],'body':_0x1d929f['body'][_0xc194('0x68')],'OpenchannelAccountId':_0x381569['id'],'OpenchannelInteractionId':_0x204410['id'],'UserId':_0x1d929f[_0xc194('0x5f')]['id'],'ContactId':_0xa0461c['id']}))[_0xc194('0x22')](function(_0x23b122){_0x204410[_0xc194('0xc0')][_0xc194('0xbf')]=[];_0x204410[_0xc194('0xc0')][_0xc194('0xbf')][_0xc194('0xc1')](_0x23b122[_0xc194('0xc0')]);return _0x204410;});});}})['then'](respondWithResult(_0x1a1434,null))[_0xc194('0x65')](handleError(_0x1a1434,null));};
\ No newline at end of file
+var _0x6726=['Transaction','ISOLATION_LEVELS','READ_COMMITTED','bulkCreate','findAndCountAll','stack','finally','send','getApplications','getInteractions','Owner','fullname','Tag','Tags','color','tag','addAgents','omit','userOpenchannelAccount:save','removeAgents','isArray','userOpenchannelAccount:remove','getAgents','dataValues','Messages','rimraf','zip-dir','request-promise','moment','mustache','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./openchannelAccount.socket','register','jayson/promise','client','http','then','info','OpenchannelAccount,\x20%s,\x20%s','debug','request\x20sent','error','message','result','catch','status','offset','limit','count','set','Content-Range','json','apply','reject','save','destroy','end','sendStatus','name','index','mandatoryDispositionPause','map','type','key','model','query','keys','filters','attributes','intersection','fields','length','nolimit','sort','pick','filter','where','merge','VIRTUAL','options','OpenchannelAccount','includeAll','include','findAll','rows','show','params','Pause','rawAttributes','find','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','get','OpenchannelAccounts','UserProfileSection','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','describe','OpenchannelAccountId','Disposition','getDispositions','findOne','order','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','hasOwnProperty','removeAnswers','notify','openchannel','CmContact','Sequelize','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','ListId','from','ValidationError','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','isNil','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','List','DESC','OpenchannelApplication','Applications','applications','list','priority','asc','account','Contacts','contact','firstName','lastName','threadId','OpenchannelInteraction','externalUrl','ContactId','spread','messageId','interaction','autoclose','push','close','*,*,*,*','OpenchannelMessage','AttachmentId','UserId','User','unshift','agent','waitForTheAssignedAgent','startRouting','Start','EventManager','addApplications','transaction','sequelize'];(function(_0x24bb9a,_0x3503f5){var _0x37137b=function(_0x74ad98){while(--_0x74ad98){_0x24bb9a['push'](_0x24bb9a['shift']());}};_0x37137b(++_0x3503f5);}(_0x6726,0xdb));var _0x6672=function(_0x1e4f2d,_0x22e2bb){_0x1e4f2d=_0x1e4f2d-0x0;var _0xd05ce5=_0x6726[_0x1e4f2d];return _0xd05ce5;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x6672('0x0'));var zipdir=require(_0x6672('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6672('0x2'));var moment=require(_0x6672('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x6672('0x4'));var util=require('util');var path=require(_0x6672('0x5'));var sox=require(_0x6672('0x6'));var csv=require(_0x6672('0x7'));var ejs=require(_0x6672('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x6672('0x9'));var squel=require(_0x6672('0xa'));var crypto=require(_0x6672('0xb'));var jsforce=require(_0x6672('0xc'));var deskjs=require(_0x6672('0xd'));var toCsv=require(_0x6672('0x7'));var querystring=require(_0x6672('0xe'));var Papa=require(_0x6672('0xf'));var Redis=require(_0x6672('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x6672('0x11'));var as=require(_0x6672('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x6672('0x13'))(_0x6672('0x14'));var utils=require(_0x6672('0x15'));var config=require(_0x6672('0x16'));var licenseUtil=require(_0x6672('0x17'));var db=require(_0x6672('0x18'))['db'];config[_0x6672('0x19')]=_[_0x6672('0x1a')](config[_0x6672('0x19')],{'host':'localhost','port':0x18eb});var socket=require(_0x6672('0x1b'))(new Redis(config[_0x6672('0x19')]));require(_0x6672('0x1c'))[_0x6672('0x1d')](socket);var jayson=require(_0x6672('0x1e'));var client=jayson[_0x6672('0x1f')][_0x6672('0x20')]({'port':0x232c});var client9002=jayson['client'][_0x6672('0x20')]({'port':0x232a});function respondWithRpcPromise(_0x3261c9,_0x46b6cb,_0x11b6a5,_0x257262){return new BPromise(function(_0x6884f,_0xebfb0f){var _0x184a79=_0x257262||client;return _0x184a79['request'](_0x3261c9,_0x11b6a5)[_0x6672('0x21')](function(_0x20eb39){logger[_0x6672('0x22')](_0x6672('0x23'),_0x46b6cb,'request\x20sent');logger[_0x6672('0x24')]('OpenchannelAccount,\x20%s,\x20%s,\x20%s',_0x46b6cb,_0x6672('0x25'),JSON['stringify'](_0x20eb39));if(_0x20eb39[_0x6672('0x26')]){if(_0x20eb39[_0x6672('0x26')]['code']===0x1f4){logger[_0x6672('0x26')](_0x6672('0x23'),_0x46b6cb,_0x20eb39[_0x6672('0x26')]['message']);return _0xebfb0f(_0x20eb39['error'][_0x6672('0x27')]);}logger[_0x6672('0x26')](_0x6672('0x23'),_0x46b6cb,_0x20eb39[_0x6672('0x26')][_0x6672('0x27')]);return _0x6884f(_0x20eb39[_0x6672('0x26')][_0x6672('0x27')]);}else{logger[_0x6672('0x22')](_0x6672('0x23'),_0x46b6cb,_0x6672('0x25'));_0x6884f(_0x20eb39[_0x6672('0x28')][_0x6672('0x27')]);}})[_0x6672('0x29')](function(_0x1c2886){logger[_0x6672('0x26')](_0x6672('0x23'),_0x46b6cb,_0x1c2886);_0xebfb0f(_0x1c2886);});});}function respondWithStatusCode(_0x4007a8,_0x19d58c){_0x19d58c=_0x19d58c||0xcc;return function(_0x1f4c29){if(_0x1f4c29){return _0x4007a8['sendStatus'](_0x19d58c);}return _0x4007a8[_0x6672('0x2a')](_0x19d58c)['end']();};}function respondWithResult(_0x257e8f,_0x5ce0c3){_0x5ce0c3=_0x5ce0c3||0xc8;return function(_0x130106){if(_0x130106){return _0x257e8f['status'](_0x5ce0c3)['json'](_0x130106);}};}function respondWithFilteredResult(_0x4fcd14,_0x302306){return function(_0x39da71){if(_0x39da71){var _0x2a3e42=typeof _0x302306[_0x6672('0x2b')]==='undefined'&&typeof _0x302306[_0x6672('0x2c')]==='undefined';var _0x3e9335=_0x39da71[_0x6672('0x2d')];var _0x725bc8=_0x2a3e42?0x0:_0x302306['offset'];var _0x46b127=_0x2a3e42?_0x39da71['count']:_0x302306[_0x6672('0x2b')]+_0x302306['limit'];var _0x555a13;if(_0x46b127>=_0x3e9335){_0x46b127=_0x3e9335;_0x555a13=0xc8;}else{_0x555a13=0xce;}_0x4fcd14[_0x6672('0x2a')](_0x555a13);return _0x4fcd14[_0x6672('0x2e')](_0x6672('0x2f'),_0x725bc8+'-'+_0x46b127+'/'+_0x3e9335)[_0x6672('0x30')](_0x39da71);}return null;};}function patchUpdates(_0x747cbb){return function(_0x3c0f31){try{jsonpatch[_0x6672('0x31')](_0x3c0f31,_0x747cbb,!![]);}catch(_0x2aa482){return BPromise[_0x6672('0x32')](_0x2aa482);}return _0x3c0f31[_0x6672('0x33')]();};}function saveUpdates(_0x2649e0,_0x48aaa2){return function(_0x1b9443){if(_0x1b9443){return _0x1b9443['update'](_0x2649e0)[_0x6672('0x21')](function(_0x3838ce){return _0x3838ce;});}return null;};}function removeEntity(_0x2a6822,_0x5a95c4){return function(_0x26e439){if(_0x26e439){return _0x26e439[_0x6672('0x34')]()['then'](function(){var _0x4c5849=_0x26e439['get']({'plain':!![]});var _0x5dc288='OpenchannelAccounts';return db['UserProfileResource']['destroy']({'where':{'type':_0x5dc288,'resourceId':_0x4c5849['id']}})[_0x6672('0x21')](function(){return _0x26e439;});})[_0x6672('0x21')](function(){_0x2a6822[_0x6672('0x2a')](0xcc)[_0x6672('0x35')]();});}};}function handleEntityNotFound(_0x1926cb,_0x4a0926){return function(_0x4436cd){if(!_0x4436cd){_0x1926cb[_0x6672('0x36')](0x194);}return _0x4436cd;};}function handleError(_0x56dba8,_0x1d2cd1){_0x1d2cd1=_0x1d2cd1||0x1f4;return function(_0x4bc3a5){logger[_0x6672('0x26')](_0x4bc3a5['stack']);if(_0x4bc3a5['name']){delete _0x4bc3a5[_0x6672('0x37')];}_0x56dba8[_0x6672('0x2a')](_0x1d2cd1)['send'](_0x4bc3a5);};}exports[_0x6672('0x38')]=function(_0x4d74c3,_0x3f9860){var _0x3285b4={'include':[{'model':db['Pause'],'as':_0x6672('0x39')}]},_0x3eef69={},_0x58354d={'count':0x0,'rows':[]};var _0xaa394a=_[_0x6672('0x3a')](db['OpenchannelAccount']['rawAttributes'],function(_0x50fa90){return{'name':_0x50fa90['fieldName'],'type':_0x50fa90[_0x6672('0x3b')][_0x6672('0x3c')]};});_0x3eef69[_0x6672('0x3d')]=_['map'](_0xaa394a,'name');_0x3eef69[_0x6672('0x3e')]=_[_0x6672('0x3f')](_0x4d74c3[_0x6672('0x3e')]);_0x3eef69[_0x6672('0x40')]=_['intersection'](_0x3eef69[_0x6672('0x3d')],_0x3eef69['query']);_0x3285b4[_0x6672('0x41')]=_[_0x6672('0x42')](_0x3eef69['model'],qs['fields'](_0x4d74c3['query'][_0x6672('0x43')]));_0x3285b4[_0x6672('0x41')]=_0x3285b4[_0x6672('0x41')][_0x6672('0x44')]?_0x3285b4[_0x6672('0x41')]:_0x3eef69[_0x6672('0x3d')];if(!_0x4d74c3['query']['hasOwnProperty'](_0x6672('0x45'))){_0x3285b4['limit']=qs[_0x6672('0x2c')](_0x4d74c3[_0x6672('0x3e')][_0x6672('0x2c')]);_0x3285b4[_0x6672('0x2b')]=qs[_0x6672('0x2b')](_0x4d74c3[_0x6672('0x3e')][_0x6672('0x2b')]);}_0x3285b4['order']=qs[_0x6672('0x46')](_0x4d74c3[_0x6672('0x3e')]['sort']);_0x3285b4['where']=qs[_0x6672('0x40')](_[_0x6672('0x47')](_0x4d74c3[_0x6672('0x3e')],_0x3eef69[_0x6672('0x40')]),_0xaa394a);if(_0x4d74c3[_0x6672('0x3e')][_0x6672('0x48')]){_0x3285b4[_0x6672('0x49')]=_[_0x6672('0x4a')](_0x3285b4[_0x6672('0x49')],{'$or':_['map'](_0xaa394a,function(_0x1b025a){if(_0x1b025a['type']!==_0x6672('0x4b')){var _0x4c07c1={};_0x4c07c1[_0x1b025a[_0x6672('0x37')]]={'$like':'%'+_0x4d74c3['query'][_0x6672('0x48')]+'%'};return _0x4c07c1;}})});}_0x3285b4=_[_0x6672('0x4a')]({},_0x3285b4,_0x4d74c3[_0x6672('0x4c')]);var _0x3d2056={'where':_0x3285b4['where']};return db[_0x6672('0x4d')][_0x6672('0x2d')](_0x3d2056)[_0x6672('0x21')](function(_0x4f6152){_0x58354d[_0x6672('0x2d')]=_0x4f6152;if(_0x4d74c3['query'][_0x6672('0x4e')]){_0x3285b4[_0x6672('0x4f')]=[{'all':!![]}];}return db[_0x6672('0x4d')][_0x6672('0x50')](_0x3285b4);})[_0x6672('0x21')](function(_0x110d17){_0x58354d[_0x6672('0x51')]=_0x110d17;return _0x58354d;})['then'](respondWithFilteredResult(_0x3f9860,_0x3285b4))['catch'](handleError(_0x3f9860,null));};exports[_0x6672('0x52')]=function(_0x308b70,_0x5af258){var _0x3b8f83={'raw':![],'where':{'id':_0x308b70[_0x6672('0x53')]['id']},'include':[{'model':db[_0x6672('0x54')],'as':_0x6672('0x39')}]},_0x1800aa={};_0x1800aa['model']=_[_0x6672('0x3f')](db['OpenchannelAccount'][_0x6672('0x55')]);_0x1800aa[_0x6672('0x3e')]=_[_0x6672('0x3f')](_0x308b70[_0x6672('0x3e')]);_0x1800aa[_0x6672('0x40')]=_[_0x6672('0x42')](_0x1800aa['model'],_0x1800aa[_0x6672('0x3e')]);_0x3b8f83[_0x6672('0x41')]=_['intersection'](_0x1800aa['model'],qs[_0x6672('0x43')](_0x308b70[_0x6672('0x3e')][_0x6672('0x43')]));_0x3b8f83['attributes']=_0x3b8f83['attributes'][_0x6672('0x44')]?_0x3b8f83[_0x6672('0x41')]:_0x1800aa[_0x6672('0x3d')];if(_0x308b70[_0x6672('0x3e')]['includeAll']){_0x3b8f83['include']=[{'all':!![]}];}_0x3b8f83=_[_0x6672('0x4a')]({},_0x3b8f83,_0x308b70[_0x6672('0x4c')]);return db[_0x6672('0x4d')][_0x6672('0x56')](_0x3b8f83)[_0x6672('0x21')](handleEntityNotFound(_0x5af258,null))[_0x6672('0x21')](respondWithResult(_0x5af258,null))[_0x6672('0x29')](handleError(_0x5af258,null));};exports[_0x6672('0x57')]=function(_0x55dd22,_0x50c221){return db[_0x6672('0x4d')][_0x6672('0x57')](_0x55dd22['body'],{})[_0x6672('0x21')](function(_0x28b13d){var _0x5652ca=_0x55dd22['user']['get']({'plain':!![]});if(!_0x5652ca)throw new Error(_0x6672('0x58'));if(_0x5652ca[_0x6672('0x59')]===_0x6672('0x5a')){var _0x509879=_0x28b13d[_0x6672('0x5b')]({'plain':!![]});var _0x241ab9=_0x6672('0x5c');return db[_0x6672('0x5d')]['find']({'where':{'name':_0x241ab9,'userProfileId':_0x5652ca['userProfileId']},'raw':!![]})[_0x6672('0x21')](function(_0x3cc957){if(_0x3cc957&&_0x3cc957[_0x6672('0x5e')]===0x0){return db[_0x6672('0x5f')][_0x6672('0x57')]({'name':_0x509879[_0x6672('0x37')],'resourceId':_0x509879['id'],'type':_0x3cc957[_0x6672('0x37')],'sectionId':_0x3cc957['id']},{})[_0x6672('0x21')](function(){return _0x28b13d;});}else{return _0x28b13d;}})['catch'](function(_0xd97a22){logger[_0x6672('0x26')](_0x6672('0x60'),_0xd97a22);throw _0xd97a22;});}return _0x28b13d;})[_0x6672('0x21')](respondWithResult(_0x50c221,0xc9))['catch'](handleError(_0x50c221,null));};exports[_0x6672('0x61')]=function(_0x3139d8,_0x3e5464){if(_0x3139d8[_0x6672('0x62')]['id']){delete _0x3139d8['body']['id'];}return db[_0x6672('0x4d')][_0x6672('0x56')]({'where':{'id':_0x3139d8[_0x6672('0x53')]['id']},'include':[{'model':db[_0x6672('0x54')],'as':'mandatoryDispositionPause'}]})['then'](handleEntityNotFound(_0x3e5464,null))[_0x6672('0x21')](saveUpdates(_0x3139d8[_0x6672('0x62')],null))['then'](respondWithResult(_0x3e5464,null))[_0x6672('0x29')](handleError(_0x3e5464,null));};exports[_0x6672('0x34')]=function(_0x10d177,_0x3de31e){return db[_0x6672('0x4d')][_0x6672('0x56')]({'where':{'id':_0x10d177[_0x6672('0x53')]['id']}})[_0x6672('0x21')](handleEntityNotFound(_0x3de31e,null))[_0x6672('0x21')](removeEntity(_0x3de31e,null))[_0x6672('0x29')](handleError(_0x3de31e,null));};exports[_0x6672('0x63')]=function(_0x3f3711,_0x4347c7){return db[_0x6672('0x4d')][_0x6672('0x63')]()[_0x6672('0x21')](respondWithResult(_0x4347c7,null))[_0x6672('0x29')](handleError(_0x4347c7,null));};exports['addDisposition']=function(_0x375625,_0xd34da9,_0x44d867){if(_0x375625[_0x6672('0x62')]['id']){delete _0x375625[_0x6672('0x62')]['id'];}return db[_0x6672('0x4d')][_0x6672('0x56')]({'where':{'id':_0x375625[_0x6672('0x53')]['id']}})[_0x6672('0x21')](handleEntityNotFound(_0xd34da9,null))['then'](function(_0x4e7cba){if(_0x4e7cba){_0x375625[_0x6672('0x62')][_0x6672('0x64')]=_0x4e7cba['id'];return db[_0x6672('0x65')][_0x6672('0x57')](_0x375625['body']);}})['then'](respondWithResult(_0xd34da9,null))['catch'](handleError(_0xd34da9,null));};exports[_0x6672('0x66')]=function(_0x15f6fe,_0x1c1afb,_0x1395e7){var _0x4a9ff0={'raw':![],'where':{}};var _0x3e0b0e={};var _0x54154b={'count':0x0,'rows':[]};return db[_0x6672('0x4d')][_0x6672('0x67')]({'where':{'id':_0x15f6fe['params']['id']}})[_0x6672('0x21')](handleEntityNotFound(_0x1c1afb,null))[_0x6672('0x21')](function(_0x44fc61){if(_0x44fc61){_0x3e0b0e[_0x6672('0x3d')]=_['keys'](db[_0x6672('0x65')][_0x6672('0x55')]);_0x3e0b0e[_0x6672('0x3e')]=_[_0x6672('0x3f')](_0x15f6fe[_0x6672('0x3e')]);_0x3e0b0e[_0x6672('0x40')]=_[_0x6672('0x42')](_0x3e0b0e[_0x6672('0x3d')],_0x3e0b0e[_0x6672('0x3e')]);_0x4a9ff0[_0x6672('0x41')]=_[_0x6672('0x42')](_0x3e0b0e['model'],qs[_0x6672('0x43')](_0x15f6fe['query'][_0x6672('0x43')]));_0x4a9ff0[_0x6672('0x41')]=_0x4a9ff0[_0x6672('0x41')][_0x6672('0x44')]?_0x4a9ff0[_0x6672('0x41')]:_0x3e0b0e[_0x6672('0x3d')];if(!_0x15f6fe['query']['hasOwnProperty']('nolimit')){_0x4a9ff0[_0x6672('0x2c')]=qs[_0x6672('0x2c')](_0x15f6fe[_0x6672('0x3e')][_0x6672('0x2c')]);_0x4a9ff0[_0x6672('0x2b')]=qs['offset'](_0x15f6fe[_0x6672('0x3e')]['offset']);}_0x4a9ff0[_0x6672('0x68')]=qs['sort'](_0x15f6fe[_0x6672('0x3e')][_0x6672('0x46')]);_0x4a9ff0['where']=qs[_0x6672('0x40')](_['pick'](_0x15f6fe[_0x6672('0x3e')],_0x3e0b0e[_0x6672('0x40')]));_0x4a9ff0['where'][_0x6672('0x64')]=_0x44fc61['id'];if(_0x15f6fe[_0x6672('0x3e')]['filter']){_0x4a9ff0[_0x6672('0x49')]=_[_0x6672('0x4a')](_0x4a9ff0[_0x6672('0x49')],{'$or':_['map'](_0x4a9ff0[_0x6672('0x41')],function(_0x5bd6eb){var _0x59245d={};_0x59245d[_0x5bd6eb]={'$like':'%'+_0x15f6fe[_0x6672('0x3e')]['filter']+'%'};return _0x59245d;})});}_0x4a9ff0=_['merge']({},_0x4a9ff0,_0x15f6fe[_0x6672('0x4c')]);return db['Disposition'][_0x6672('0x2d')]({'where':_0x4a9ff0[_0x6672('0x49')]})[_0x6672('0x21')](function(_0x54555c){_0x54154b[_0x6672('0x2d')]=_0x54555c;if(_0x15f6fe[_0x6672('0x3e')]['includeAll']){_0x4a9ff0[_0x6672('0x4f')]=[{'all':!![]}];}return db['Disposition'][_0x6672('0x50')](_0x4a9ff0);})[_0x6672('0x21')](function(_0x3c9afe){_0x54154b[_0x6672('0x51')]=_0x3c9afe;return _0x54154b;});}})[_0x6672('0x21')](respondWithFilteredResult(_0x1c1afb,_0x4a9ff0))[_0x6672('0x29')](handleError(_0x1c1afb,null));};exports[_0x6672('0x69')]=function(_0x369bd8,_0x32c058,_0x162e2b){return db[_0x6672('0x4d')][_0x6672('0x56')]({'where':{'id':_0x369bd8['params']['id']}})[_0x6672('0x21')](handleEntityNotFound(_0x32c058,null))[_0x6672('0x21')](function(_0xed016a){if(_0xed016a){return _0xed016a['removeDispositions'](_0x369bd8['query'][_0x6672('0x6a')]);}})[_0x6672('0x21')](respondWithStatusCode(_0x32c058,null))[_0x6672('0x29')](handleError(_0x32c058,null));};exports[_0x6672('0x6b')]=function(_0x310a92,_0x2432c8,_0x1aa97d){if(_0x310a92[_0x6672('0x62')]['id']){delete _0x310a92['body']['id'];}return db['OpenchannelAccount'][_0x6672('0x56')]({'where':{'id':_0x310a92[_0x6672('0x53')]['id']}})[_0x6672('0x21')](handleEntityNotFound(_0x2432c8,null))[_0x6672('0x21')](function(_0xa57dc5){if(_0xa57dc5){_0x310a92[_0x6672('0x62')][_0x6672('0x64')]=_0xa57dc5['id'];return db[_0x6672('0x6c')][_0x6672('0x57')](_0x310a92[_0x6672('0x62')]);}})['then'](respondWithResult(_0x2432c8,null))[_0x6672('0x29')](handleError(_0x2432c8,null));};exports[_0x6672('0x6d')]=function(_0x594939,_0x4f9103,_0x407df4){var _0x30a52b={'raw':![],'where':{}};var _0x9c129d={};var _0x453aeb={'count':0x0,'rows':[]};return db[_0x6672('0x4d')][_0x6672('0x67')]({'where':{'id':_0x594939[_0x6672('0x53')]['id']}})['then'](handleEntityNotFound(_0x4f9103,null))[_0x6672('0x21')](function(_0x2bddcf){if(_0x2bddcf){_0x9c129d[_0x6672('0x3d')]=_[_0x6672('0x3f')](db[_0x6672('0x6c')][_0x6672('0x55')]);_0x9c129d[_0x6672('0x3e')]=_[_0x6672('0x3f')](_0x594939[_0x6672('0x3e')]);_0x9c129d['filters']=_[_0x6672('0x42')](_0x9c129d['model'],_0x9c129d[_0x6672('0x3e')]);_0x30a52b[_0x6672('0x41')]=_['intersection'](_0x9c129d[_0x6672('0x3d')],qs[_0x6672('0x43')](_0x594939['query'][_0x6672('0x43')]));_0x30a52b['attributes']=_0x30a52b[_0x6672('0x41')][_0x6672('0x44')]?_0x30a52b['attributes']:_0x9c129d[_0x6672('0x3d')];if(!_0x594939[_0x6672('0x3e')][_0x6672('0x6e')](_0x6672('0x45'))){_0x30a52b[_0x6672('0x2c')]=qs[_0x6672('0x2c')](_0x594939[_0x6672('0x3e')][_0x6672('0x2c')]);_0x30a52b['offset']=qs[_0x6672('0x2b')](_0x594939[_0x6672('0x3e')][_0x6672('0x2b')]);}_0x30a52b[_0x6672('0x68')]=qs['sort'](_0x594939['query']['sort']);_0x30a52b['where']=qs[_0x6672('0x40')](_[_0x6672('0x47')](_0x594939[_0x6672('0x3e')],_0x9c129d[_0x6672('0x40')]));_0x30a52b['where'][_0x6672('0x64')]=_0x2bddcf['id'];if(_0x594939[_0x6672('0x3e')]['filter']){_0x30a52b['where']=_['merge'](_0x30a52b[_0x6672('0x49')],{'$or':_['map'](_0x30a52b['attributes'],function(_0x1ab3a5){var _0xa597ce={};_0xa597ce[_0x1ab3a5]={'$like':'%'+_0x594939[_0x6672('0x3e')][_0x6672('0x48')]+'%'};return _0xa597ce;})});}_0x30a52b=_[_0x6672('0x4a')]({},_0x30a52b,_0x594939['options']);return db[_0x6672('0x6c')][_0x6672('0x2d')]({'where':_0x30a52b['where']})[_0x6672('0x21')](function(_0x1647a9){_0x453aeb[_0x6672('0x2d')]=_0x1647a9;if(_0x594939[_0x6672('0x3e')][_0x6672('0x4e')]){_0x30a52b[_0x6672('0x4f')]=[{'all':!![]}];}return db[_0x6672('0x6c')][_0x6672('0x50')](_0x30a52b);})[_0x6672('0x21')](function(_0x36adf7){_0x453aeb[_0x6672('0x51')]=_0x36adf7;return _0x453aeb;});}})[_0x6672('0x21')](respondWithFilteredResult(_0x4f9103,_0x30a52b))['catch'](handleError(_0x4f9103,null));};exports[_0x6672('0x6f')]=function(_0x443bed,_0x490c22,_0x14d256){return db[_0x6672('0x4d')][_0x6672('0x56')]({'where':{'id':_0x443bed['params']['id']}})['then'](handleEntityNotFound(_0x490c22,null))[_0x6672('0x21')](function(_0x11f494){if(_0x11f494){return _0x11f494[_0x6672('0x6f')](_0x443bed['query'][_0x6672('0x6a')]);}})[_0x6672('0x21')](respondWithStatusCode(_0x490c22,null))[_0x6672('0x29')](handleError(_0x490c22,null));};exports[_0x6672('0x70')]=function(_0x3764f6,_0x16786f,_0x13902a){var _0x42be53={'body':_0x3764f6[_0x6672('0x62')],'channel':_0x6672('0x71')};var _0x6b8851=[];var _0x5081b2=[];var _0x3cec39={};var _0x18ef71=![];return db[_0x6672('0x72')][_0x6672('0x63')]()[_0x6672('0x21')](function(_0x26b8e0){if(!_0x26b8e0){throw new db[(_0x6672('0x73'))]['ValidationError'](_0x6672('0x74'));}_0x6b8851=_[_0x6672('0x75')](_['keys'](_0x26b8e0),[_0x6672('0x76'),_0x6672('0x77')]);_0x5081b2=_[_0x6672('0x75')](_[_0x6672('0x3f')](_0x26b8e0),[_0x6672('0x76'),'updatedAt',_0x6672('0x78'),_0x6672('0x79')]);if(_0x3764f6['body']['id']){delete _0x3764f6[_0x6672('0x62')]['id'];}if(_['isNil'](_0x3764f6[_0x6672('0x62')][_0x6672('0x7a')])){throw new db[(_0x6672('0x73'))][(_0x6672('0x7b'))](_0x6672('0x7c'));}if(_['isNil'](_0x3764f6[_0x6672('0x62')][_0x6672('0x62')])||_0x3764f6[_0x6672('0x62')][_0x6672('0x62')]===''){throw new db[(_0x6672('0x73'))][(_0x6672('0x7b'))](_0x6672('0x7d'));}if(_[_0x6672('0x7e')](_0x3764f6[_0x6672('0x62')][_0x6672('0x7f')])){throw new db[(_0x6672('0x73'))]['ValidationError'](_0x6672('0x80')+_0x5081b2);}if(!_[_0x6672('0x81')](_0x5081b2,_0x3764f6[_0x6672('0x62')][_0x6672('0x7f')])){throw new db[(_0x6672('0x73'))][(_0x6672('0x7b'))](_0x6672('0x82')+_0x5081b2);}_0x3cec39[_0x3764f6[_0x6672('0x62')][_0x6672('0x7f')]]=_0x3764f6['body'][_0x6672('0x7a')];})[_0x6672('0x21')](function(){return db['OpenchannelAccount'][_0x6672('0x56')]({'where':{'id':_0x3764f6['params']['id']},'include':[{'model':db[_0x6672('0x83')],'as':_0x6672('0x84'),'include':[{'model':db[_0x6672('0x72')],'as':'Contacts','where':_0x3cec39,'limit':0x1,'order':[[_0x6672('0x77'),_0x6672('0x85')]]}]},{'model':db[_0x6672('0x86')],'as':_0x6672('0x87')}]});})[_0x6672('0x21')](handleEntityNotFound(_0x16786f,null))[_0x6672('0x21')](function(_0x21afa2){if(_0x21afa2&&_0x21afa2[_0x6672('0x84')]){_0x42be53['account']=_0x21afa2;_0x42be53[_0x6672('0x88')]=_0x21afa2['Applications'];_0x42be53[_0x6672('0x89')]=_0x21afa2['List'];_0x42be53['applications']=_['orderBy'](_0x42be53['applications'],[_0x6672('0x8a')],[_0x6672('0x8b')]);if(_0x42be53[_0x6672('0x8c')][_0x6672('0x87')]){delete _0x42be53[_0x6672('0x8c')][_0x6672('0x87')];}if(_0x42be53['account'][_0x6672('0x84')]&&_0x42be53[_0x6672('0x8c')][_0x6672('0x84')][_0x6672('0x8d')]['length']){return _0x42be53[_0x6672('0x8c')][_0x6672('0x84')][_0x6672('0x8d')][0x0];}var _0x5c27f1=_[_0x6672('0x1a')](_0x3764f6[_0x6672('0x62')],{'firstName':_0x3764f6[_0x6672('0x62')]['from'],'ListId':_0x21afa2['ListId']});_0x5c27f1[_0x3764f6['body'][_0x6672('0x7f')]]=_0x3764f6[_0x6672('0x62')][_0x6672('0x7a')];return db[_0x6672('0x72')][_0x6672('0x57')](_0x5c27f1,{'fields':_0x6b8851,'raw':!![]});}})[_0x6672('0x21')](handleEntityNotFound(_0x16786f,null))[_0x6672('0x21')](function(_0x2218ff){_0x42be53[_0x6672('0x8e')]=_0x2218ff;if(_0x2218ff){var _0x36fac9={'ContactId':_0x2218ff['id'],'OpenchannelAccountId':_0x3764f6[_0x6672('0x53')]['id'],'from':(_0x2218ff[_0x6672('0x8f')]||'')+'\x20'+(_0x2218ff[_0x6672('0x90')]||'')};var _0x47ea6f={'OpenchannelAccountId':_0x3764f6[_0x6672('0x53')]['id'],'closed':![]};if(_0x3764f6[_0x6672('0x62')]['threadId']){_0x47ea6f[_0x6672('0x91')]=_0x3764f6[_0x6672('0x62')][_0x6672('0x91')];return db[_0x6672('0x92')]['find']({'where':_0x47ea6f})[_0x6672('0x21')](function(_0x41f961){if(_0x41f961){return[_0x41f961,![]];}_0x36fac9[_0x6672('0x91')]=_0x3764f6['body'][_0x6672('0x91')];_0x36fac9[_0x6672('0x93')]=_0x3764f6[_0x6672('0x62')][_0x6672('0x93')];return db[_0x6672('0x92')]['create'](_0x36fac9)[_0x6672('0x21')](function(_0x207c93){return[_0x207c93,!![]];});});}else{_0x47ea6f[_0x6672('0x91')]=null;}_0x47ea6f[_0x6672('0x94')]=_0x2218ff['id'];return db['OpenchannelInteraction']['find']({'where':_0x47ea6f})[_0x6672('0x21')](function(_0x35804e){if(_0x35804e){return[_0x35804e,![]];}return db[_0x6672('0x92')][_0x6672('0x57')](_0x36fac9)[_0x6672('0x21')](function(_0x13ab0f){return[_0x13ab0f,!![]];});});}})[_0x6672('0x95')](function(_0x52a48a,_0x5e3fde){if(_0x52a48a){_0x18ef71=_0x5e3fde;if(!_0x5e3fde){var _0x3f858f={'from':(_0x42be53['contact'][_0x6672('0x8f')]||'')+'\x20'+(_0x42be53[_0x6672('0x8e')][_0x6672('0x90')]||'')};if(_0x3764f6[_0x6672('0x62')][_0x6672('0x91')]&&_0x3764f6[_0x6672('0x62')]['messageId']&&_0x3764f6[_0x6672('0x62')][_0x6672('0x91')]!=_0x3764f6['body']['messageId']){_0x3f858f[_0x6672('0x91')]=_0x3764f6[_0x6672('0x62')][_0x6672('0x96')];}return _0x52a48a[_0x6672('0x61')](_0x3f858f);}else{return _0x52a48a;}}})[_0x6672('0x21')](function(_0x40eb96){_0x42be53[_0x6672('0x97')]=_0x40eb96[_0x6672('0x5b')]({'plain':!![]});_0x42be53[_0x6672('0x97')]['created']=_0x18ef71;if(_0x42be53[_0x6672('0x97')]['created']){if(_0x42be53['account'][_0x6672('0x98')]){_0x42be53['applications'][_0x6672('0x99')]({'id':0x0,'priority':_0x42be53[_0x6672('0x88')]['length']+0x1,'app':_0x6672('0x9a'),'appdata':'unmanaged','interval':_0x6672('0x9b')});}}return db[_0x6672('0x9c')][_0x6672('0x57')]({'body':_0x3764f6[_0x6672('0x62')][_0x6672('0x62')],'OpenchannelAccountId':_0x3764f6[_0x6672('0x53')]['id'],'OpenchannelInteractionId':_0x40eb96['id'],'direction':'in','ContactId':_0x42be53[_0x6672('0x8e')]['id'],'AttachmentId':_0x3764f6[_0x6672('0x62')][_0x6672('0x9d')]});})[_0x6672('0x21')](function(_0x12d55e){_0x42be53[_0x6672('0x27')]=_0x12d55e;if(_0x42be53['interaction'][_0x6672('0x9e')]){return db[_0x6672('0x9f')]['find']({'attributes':['id','name'],'where':{'id':_0x42be53[_0x6672('0x97')]['UserId']}})[_0x6672('0x21')](function(_0x353838){if(_0x353838){_0x42be53[_0x6672('0x88')][_0x6672('0xa0')]({'id':0x0,'priority':0x0,'app':_0x6672('0xa1'),'appdata':_0x353838[_0x6672('0x37')]+','+(_0x42be53[_0x6672('0x8c')][_0x6672('0xa2')]||0xa),'interval':_0x6672('0x9b')});_0x42be53['forcedOwnership']=![];}return respondWithRpcPromise('Start',_0x6672('0xa3'),_0x42be53);});}return respondWithRpcPromise(_0x6672('0xa4'),'startRouting',_0x42be53);})[_0x6672('0x21')](function(_0x57801b){respondWithRpcPromise(_0x6672('0xa5'),_0x6672('0xa5'),{'event':_0x6672('0x70'),'message':_0x57801b},client9002);return _0x57801b;})[_0x6672('0x21')](respondWithResult(_0x16786f,null))[_0x6672('0x29')](handleError(_0x16786f,null));};exports[_0x6672('0xa6')]=function(_0x415326,_0xda13fd){var _0x2f2afb=_0x415326[_0x6672('0x53')]['id'];var _0x417f63=_0x415326['body'];var _0x341d7b=0xc8;var _0x510479=null;return db['sequelize'][_0x6672('0xa7')]({'isolationLevel':db[_0x6672('0xa8')][_0x6672('0xa9')][_0x6672('0xaa')][_0x6672('0xab')]},function(_0x2e299f){return db[_0x6672('0x4d')][_0x6672('0x67')]({'where':{'id':_0x2f2afb},'transaction':_0x2e299f})[_0x6672('0x21')](function(_0x2da347){if(_0x2da347){return db[_0x6672('0x86')][_0x6672('0x34')]({'where':{'OpenchannelAccountId':_0x2f2afb},'transaction':_0x2e299f})[_0x6672('0x21')](function(){var _0xed2889=_[_0x6672('0x3a')](_0x417f63,function(_0x16074d){_0x16074d[_0x6672('0x64')]=_0x2f2afb;return _0x16074d;});return db[_0x6672('0x86')][_0x6672('0xac')](_0xed2889,{'transaction':_0x2e299f});});}else{_0x341d7b=0x194;_0x510479=[];}});})['then'](function(){if(_0x341d7b!==0x194){return db[_0x6672('0x86')][_0x6672('0xad')]({'where':{'OpenchannelAccountId':_0x2f2afb},'order':'priority'})['then'](function(_0x47803d){_0x510479=_0x47803d;});}})['catch'](function(_0xef77e0){_0x341d7b=0x1f4;logger['error'](_0xef77e0[_0x6672('0xae')]);if(_0xef77e0[_0x6672('0x37')]){delete _0xef77e0[_0x6672('0x37')];}_0x510479=_0xef77e0;})[_0x6672('0xaf')](function(){if(_0x510479===null){_0xda13fd[_0x6672('0x36')](_0x341d7b);}else{if(_0x341d7b===0x1f4){_0xda13fd[_0x6672('0x2a')](_0x341d7b)[_0x6672('0xb0')](_0x510479);}else{_0xda13fd[_0x6672('0x2a')](_0x341d7b)['json'](_0x510479);}}});};exports[_0x6672('0xb1')]=function(_0x37ffee,_0x51360b,_0x5c2c84){var _0x234476={};var _0x40a2d3={};var _0x158071;var _0x278a99;return db[_0x6672('0x4d')][_0x6672('0x67')]({'where':{'id':_0x37ffee[_0x6672('0x53')]['id']}})[_0x6672('0x21')](handleEntityNotFound(_0x51360b,null))[_0x6672('0x21')](function(_0x28ef12){if(_0x28ef12){_0x158071=_0x28ef12;_0x40a2d3[_0x6672('0x3d')]=_[_0x6672('0x3f')](db[_0x6672('0x86')][_0x6672('0x55')]);_0x40a2d3['query']=_[_0x6672('0x3f')](_0x37ffee[_0x6672('0x3e')]);_0x40a2d3['filters']=_['intersection'](_0x40a2d3[_0x6672('0x3d')],_0x40a2d3[_0x6672('0x3e')]);_0x234476[_0x6672('0x41')]=_[_0x6672('0x42')](_0x40a2d3[_0x6672('0x3d')],qs[_0x6672('0x43')](_0x37ffee[_0x6672('0x3e')][_0x6672('0x43')]));_0x234476[_0x6672('0x41')]=_0x234476[_0x6672('0x41')]['length']?_0x234476[_0x6672('0x41')]:_0x40a2d3[_0x6672('0x3d')];_0x234476[_0x6672('0x68')]=qs['sort'](_0x37ffee[_0x6672('0x3e')]['sort']);_0x234476[_0x6672('0x49')]=qs[_0x6672('0x40')](_['pick'](_0x37ffee['query'],_0x40a2d3[_0x6672('0x40')]));if(_0x37ffee[_0x6672('0x3e')][_0x6672('0x48')]){_0x234476['where']=_[_0x6672('0x4a')](_0x234476[_0x6672('0x49')],{'$or':_['map'](_0x234476[_0x6672('0x41')],function(_0x15402b){var _0x3c4273={};_0x3c4273[_0x15402b]={'$like':'%'+_0x37ffee['query'][_0x6672('0x48')]+'%'};return _0x3c4273;})});}_0x234476=_['merge']({},_0x234476,_0x37ffee[_0x6672('0x4c')]);return _0x158071[_0x6672('0xb1')](_0x234476);}})['then'](function(_0x3997c9){if(_0x3997c9){_0x278a99=_0x3997c9[_0x6672('0x44')];if(!_0x37ffee[_0x6672('0x3e')][_0x6672('0x6e')](_0x6672('0x45'))){_0x234476[_0x6672('0x2c')]=qs[_0x6672('0x2c')](_0x37ffee[_0x6672('0x3e')][_0x6672('0x2c')]);_0x234476[_0x6672('0x2b')]=qs[_0x6672('0x2b')](_0x37ffee['query'][_0x6672('0x2b')]);}return _0x158071['getApplications'](_0x234476);}})['then'](function(_0x26110e){if(_0x26110e){return _0x26110e?{'count':_0x278a99,'rows':_0x26110e}:null;}})[_0x6672('0x21')](respondWithResult(_0x51360b,null))[_0x6672('0x29')](handleError(_0x51360b,null));};exports[_0x6672('0xb2')]=function(_0x36aeae,_0x38a21b,_0x16ee4c){var _0x4078e4={'raw':![],'where':{}};var _0x4b5974={};var _0x1cff57={'count':0x0,'rows':[]};return db[_0x6672('0x4d')][_0x6672('0x67')]({'where':{'id':_0x36aeae[_0x6672('0x53')]['id']}})[_0x6672('0x21')](handleEntityNotFound(_0x38a21b,null))[_0x6672('0x21')](function(_0x2e7356){if(_0x2e7356){_0x4b5974[_0x6672('0x3d')]=_[_0x6672('0x3f')](db[_0x6672('0x92')][_0x6672('0x55')]);_0x4b5974[_0x6672('0x3e')]=_[_0x6672('0x3f')](_0x36aeae['query']);_0x4b5974[_0x6672('0x40')]=_[_0x6672('0x42')](_0x4b5974[_0x6672('0x3d')],_0x4b5974[_0x6672('0x3e')]);_0x4078e4['attributes']=_['intersection'](_0x4b5974[_0x6672('0x3d')],qs[_0x6672('0x43')](_0x36aeae[_0x6672('0x3e')][_0x6672('0x43')]));_0x4078e4[_0x6672('0x41')]=_0x4078e4[_0x6672('0x41')][_0x6672('0x44')]?_0x4078e4[_0x6672('0x41')]:_0x4b5974['model'];if(!_0x36aeae['query'][_0x6672('0x6e')]('nolimit')){_0x4078e4[_0x6672('0x2c')]=qs[_0x6672('0x2c')](_0x36aeae[_0x6672('0x3e')][_0x6672('0x2c')]);_0x4078e4[_0x6672('0x2b')]=qs[_0x6672('0x2b')](_0x36aeae[_0x6672('0x3e')][_0x6672('0x2b')]);}_0x4078e4[_0x6672('0x68')]=qs[_0x6672('0x46')](_0x36aeae['query'][_0x6672('0x46')]);_0x4078e4[_0x6672('0x49')]=qs[_0x6672('0x40')](_['pick'](_0x36aeae['query'],_0x4b5974[_0x6672('0x40')]));_0x4078e4[_0x6672('0x49')][_0x6672('0x64')]=_0x2e7356['id'];if(_0x36aeae['query'][_0x6672('0x48')]){_0x4078e4[_0x6672('0x49')]=_['merge'](_0x4078e4[_0x6672('0x49')],{'$or':_[_0x6672('0x3a')](_0x4078e4[_0x6672('0x41')],function(_0x68a94b){var _0xe5156c={};_0xe5156c[_0x68a94b]={'$like':'%'+_0x36aeae[_0x6672('0x3e')][_0x6672('0x48')]+'%'};return _0xe5156c;})});}_0x4078e4=_[_0x6672('0x4a')]({},_0x4078e4,_0x36aeae[_0x6672('0x4c')]);return db[_0x6672('0x92')][_0x6672('0x2d')]({'where':_0x4078e4['where']})[_0x6672('0x21')](function(_0x222ada){_0x1cff57[_0x6672('0x2d')]=_0x222ada;if(_0x36aeae[_0x6672('0x3e')][_0x6672('0x4e')]){_0x4078e4[_0x6672('0x4f')]=[{'model':db[_0x6672('0x72')],'as':'Contact','required':![]},{'model':db[_0x6672('0x9f')],'as':_0x6672('0xb3'),'attributes':[_0x6672('0x37'),_0x6672('0xb4'),'internal'],'required':![]},{'model':db[_0x6672('0xb5')],'as':_0x6672('0xb6'),'attributes':['id',_0x6672('0x37'),_0x6672('0xb7')],'where':_0x36aeae[_0x6672('0x3e')][_0x6672('0xb8')]?{'id':_0x36aeae[_0x6672('0x3e')][_0x6672('0xb8')]}:undefined,'required':_0x36aeae['query']['tag']?!![]:![]}];}return db[_0x6672('0x92')][_0x6672('0x50')](_0x4078e4);})[_0x6672('0x21')](function(_0x593723){_0x1cff57[_0x6672('0x51')]=_0x593723;return _0x1cff57;});}})[_0x6672('0x21')](respondWithFilteredResult(_0x38a21b,_0x4078e4))[_0x6672('0x29')](handleError(_0x38a21b,null));};exports['addAgents']=function(_0x2e4aba,_0x128d5f,_0xd0eafc){return db[_0x6672('0x4d')][_0x6672('0x56')]({'where':{'id':_0x2e4aba[_0x6672('0x53')]['id']}})[_0x6672('0x21')](handleEntityNotFound(_0x128d5f,null))['then'](function(_0x3fecab){if(_0x3fecab){return _0x3fecab[_0x6672('0xb9')](_0x2e4aba['body'][_0x6672('0x6a')],_[_0x6672('0xba')](_0x2e4aba[_0x6672('0x62')],['ids','id'])||{})[_0x6672('0x95')](function(_0x18a99b){for(var _0x10927d=0x0;_0x10927d<_0x2e4aba['body'][_0x6672('0x6a')][_0x6672('0x44')];_0x10927d+=0x1){socket['emit'](_0x6672('0xbb'),{'UserId':Number(_0x2e4aba['body'][_0x6672('0x6a')][_0x10927d]),'OpenchannelAccountId':Number(_0x2e4aba['params']['id'])});}return _0x18a99b;});}})[_0x6672('0x21')](respondWithResult(_0x128d5f,null))[_0x6672('0x29')](handleError(_0x128d5f,null));};exports[_0x6672('0xbc')]=function(_0x4208ac,_0x2aafe8,_0x2467bf){return db[_0x6672('0x4d')][_0x6672('0x56')]({'where':{'id':_0x4208ac[_0x6672('0x53')]['id']}})['then'](handleEntityNotFound(_0x2aafe8,null))['then'](function(_0x5cfee7){if(_0x5cfee7){return _0x5cfee7[_0x6672('0xbc')](_0x4208ac[_0x6672('0x3e')]['ids'])['then'](function(){if(_[_0x6672('0xbd')](_0x4208ac[_0x6672('0x3e')]['ids'])){for(var _0x41260d=0x0;_0x41260d<_0x4208ac[_0x6672('0x3e')]['ids']['length'];_0x41260d+=0x1){socket['emit'](_0x6672('0xbe'),{'UserId':Number(_0x4208ac[_0x6672('0x3e')][_0x6672('0x6a')][_0x41260d]),'OpenchannelAccountId':Number(_0x4208ac[_0x6672('0x53')]['id'])});}}else{socket['emit'](_0x6672('0xbe'),{'UserId':Number(_0x4208ac[_0x6672('0x3e')]['ids']),'OpenchannelAccountId':Number(_0x4208ac[_0x6672('0x53')]['id'])});}});}})[_0x6672('0x21')](respondWithStatusCode(_0x2aafe8,null))['catch'](handleError(_0x2aafe8,null));};exports['getAgents']=function(_0x4b12fd,_0x17005a,_0x10d045){var _0x4a0d1b={};var _0x20dfff={};var _0x2eb16c;var _0x19566d;return db[_0x6672('0x4d')][_0x6672('0x67')]({'where':{'id':_0x4b12fd[_0x6672('0x53')]['id']}})[_0x6672('0x21')](handleEntityNotFound(_0x17005a,null))[_0x6672('0x21')](function(_0x2eff93){if(_0x2eff93){_0x2eb16c=_0x2eff93;_0x20dfff[_0x6672('0x3d')]=_[_0x6672('0x3f')](db['User'][_0x6672('0x55')]);_0x20dfff[_0x6672('0x3e')]=_[_0x6672('0x3f')](_0x4b12fd[_0x6672('0x3e')]);_0x20dfff[_0x6672('0x40')]=_[_0x6672('0x42')](_0x20dfff[_0x6672('0x3d')],_0x20dfff[_0x6672('0x3e')]);_0x4a0d1b['attributes']=_[_0x6672('0x42')](_0x20dfff['model'],qs[_0x6672('0x43')](_0x4b12fd[_0x6672('0x3e')][_0x6672('0x43')]));_0x4a0d1b['attributes']=_0x4a0d1b['attributes'][_0x6672('0x44')]?_0x4a0d1b[_0x6672('0x41')]:_0x20dfff[_0x6672('0x3d')];_0x4a0d1b[_0x6672('0x68')]=qs[_0x6672('0x46')](_0x4b12fd['query'][_0x6672('0x46')]);_0x4a0d1b['where']=qs['filters'](_[_0x6672('0x47')](_0x4b12fd[_0x6672('0x3e')],_0x20dfff[_0x6672('0x40')]));if(_0x4b12fd[_0x6672('0x3e')][_0x6672('0x48')]){_0x4a0d1b[_0x6672('0x49')]=_[_0x6672('0x4a')](_0x4a0d1b[_0x6672('0x49')],{'$or':_[_0x6672('0x3a')](_0x4a0d1b[_0x6672('0x41')],function(_0x411247){var _0x454ec3={};_0x454ec3[_0x411247]={'$like':'%'+_0x4b12fd[_0x6672('0x3e')][_0x6672('0x48')]+'%'};return _0x454ec3;})});}_0x4a0d1b=_[_0x6672('0x4a')]({},_0x4a0d1b,_0x4b12fd[_0x6672('0x4c')]);return _0x2eb16c['getAgents'](_0x4a0d1b);}})[_0x6672('0x21')](function(_0x164719){if(_0x164719){_0x19566d=_0x164719[_0x6672('0x44')];if(!_0x4b12fd[_0x6672('0x3e')][_0x6672('0x6e')](_0x6672('0x45'))){_0x4a0d1b[_0x6672('0x2c')]=qs['limit'](_0x4b12fd[_0x6672('0x3e')][_0x6672('0x2c')]);_0x4a0d1b['offset']=qs[_0x6672('0x2b')](_0x4b12fd[_0x6672('0x3e')]['offset']);}return _0x2eb16c[_0x6672('0xbf')](_0x4a0d1b);}})[_0x6672('0x21')](function(_0x5cb768){if(_0x5cb768){return _0x5cb768?{'count':_0x19566d,'rows':_0x5cb768}:null;}})[_0x6672('0x21')](respondWithResult(_0x17005a,null))['catch'](handleError(_0x17005a,null));};exports[_0x6672('0xb0')]=function(_0x31a703,_0x1f400b,_0x4e0199){var _0x10414a,_0x4cd61d,_0x2f60da;if(_[_0x6672('0x7e')](_0x31a703['body']['body'])||_0x31a703[_0x6672('0x62')][_0x6672('0x62')]===''){throw new db['Sequelize'][(_0x6672('0x7b'))](_0x6672('0x7d'));}if(_[_0x6672('0x7e')](_0x31a703[_0x6672('0x62')]['to'])){}_0x10414a=_0x31a703[_0x6672('0x62')]['to'];return db[_0x6672('0x4d')]['findOne']({'where':{'id':_0x31a703['params']['id']}})['then'](handleEntityNotFound(_0x1f400b,null))[_0x6672('0x21')](function(_0x1335e5){if(_0x1335e5){return db[_0x6672('0x4d')]['find']({'where':{'id':_0x1335e5['id']},'include':[{'model':db['CmList'],'as':_0x6672('0x84'),'include':[{'model':db['CmContact'],'as':'Contacts','where':{[_0x1335e5['mapKey']]:_0x10414a},'limit':0x1,'order':[['updatedAt','DESC']]}]}]})[_0x6672('0x21')](handleEntityNotFound(_0x1f400b,null))[_0x6672('0x21')](function(_0x578bca){if(_0x578bca&&_0x578bca[_0x6672('0x84')]){_0x4cd61d=_0x578bca['get']({'plain':!![]});if(_0x4cd61d['List']&&_0x4cd61d[_0x6672('0x84')]['Contacts'][_0x6672('0x44')]){return _0x4cd61d[_0x6672('0x84')][_0x6672('0x8d')][0x0];}return db[_0x6672('0x72')]['create'](_['defaults'](_0x31a703[_0x6672('0x62')],{'firstName':_0x10414a,[_0x578bca[_0x6672('0x7f')]]:_0x10414a,'phone':_0x10414a,'ListId':_0x4cd61d[_0x6672('0x79')]}));}})[_0x6672('0x21')](handleEntityNotFound(_0x1f400b,null))[_0x6672('0x21')](function(_0x5cd093){if(_0x5cd093){_0x2f60da=_0x5cd093;return db[_0x6672('0x92')][_0x6672('0x56')]({'where':{'ContactId':_0x2f60da['id'],'closed':![],'OpenchannelAccountId':_0x4cd61d['id']}})['then'](function(_0x4962e8){if(_0x4962e8){return[_0x4962e8,![]];}return db[_0x6672('0x92')][_0x6672('0x57')]({'UserId':_0x31a703[_0x6672('0x5a')]['id'],'ContactId':_0x2f60da['id'],'OpenchannelAccountId':_0x4cd61d['id'],'lastMsgDirection':'out','firstMsgDirection':'out','Messages':[_['merge'](_0x31a703[_0x6672('0x62')],{'read':![],'body':_0x31a703[_0x6672('0x62')][_0x6672('0x62')],'OpenchannelAccountId':_0x4cd61d['id'],'UserId':_0x31a703[_0x6672('0x5a')]['id'],'ContactId':_0x2f60da['id']})]},{'include':[{'model':db[_0x6672('0x9c')],'as':'Messages'}]})[_0x6672('0x21')](function(_0x3a3a09){return[_0x3a3a09,!![]];});});}})[_0x6672('0x95')](function(_0x9d0cef,_0x28705d){if(_0x28705d){return _0x9d0cef;}return db[_0x6672('0x9c')][_0x6672('0x57')](_[_0x6672('0x4a')](_0x31a703[_0x6672('0x62')],{'read':![],'body':_0x31a703[_0x6672('0x62')]['body'],'OpenchannelAccountId':_0x4cd61d['id'],'OpenchannelInteractionId':_0x9d0cef['id'],'UserId':_0x31a703['user']['id'],'ContactId':_0x2f60da['id']}))[_0x6672('0x21')](function(_0x11e5c6){_0x9d0cef[_0x6672('0xc0')][_0x6672('0xc1')]=[];_0x9d0cef['dataValues'][_0x6672('0xc1')]['push'](_0x11e5c6[_0x6672('0xc0')]);return _0x9d0cef;});});}})[_0x6672('0x21')](respondWithResult(_0x1f400b,null))['catch'](handleError(_0x1f400b,null));};
\ No newline at end of file
index 7944d6c..e7d9d6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4483=['../../mysqldb','OpenchannelAccount','save','update','remove','emit','hasOwnProperty','hook','exports','events'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0x4483,0x1a3));var _0x3448=function(_0x51835c,_0x54e342){_0x51835c=_0x51835c-0x0;var _0x4bf8a6=_0x4483[_0x51835c];return _0x4bf8a6;};'use strict';var EventEmitter=require(_0x3448('0x0'));var OpenchannelAccount=require(_0x3448('0x1'))['db'][_0x3448('0x2')];var OpenchannelAccountEvents=new EventEmitter();OpenchannelAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x3448('0x3'),'afterUpdate':_0x3448('0x4'),'afterDestroy':_0x3448('0x5')};function emitEvent(_0x3a7178){return function(_0xef1a93,_0x5f5163,_0xeb5b8){OpenchannelAccountEvents[_0x3448('0x6')](_0x3a7178+':'+_0xef1a93['id'],_0xef1a93);OpenchannelAccountEvents[_0x3448('0x6')](_0x3a7178,_0xef1a93);_0xeb5b8(null);};}for(var e in events){if(events[_0x3448('0x7')](e)){var event=events[e];OpenchannelAccount[_0x3448('0x8')](e,emitEvent(event));}}module[_0x3448('0x9')]=OpenchannelAccountEvents;
\ No newline at end of file
+var _0xe5b5=['hook','exports','events','../../mysqldb','OpenchannelAccount','setMaxListeners','save','update','remove','emit','hasOwnProperty'];(function(_0x4d4a96,_0x28406d){var _0x43ddf0=function(_0x192a8e){while(--_0x192a8e){_0x4d4a96['push'](_0x4d4a96['shift']());}};_0x43ddf0(++_0x28406d);}(_0xe5b5,0x12b));var _0x5e5b=function(_0x108d5f,_0x33f82d){_0x108d5f=_0x108d5f-0x0;var _0x456ea3=_0xe5b5[_0x108d5f];return _0x456ea3;};'use strict';var EventEmitter=require(_0x5e5b('0x0'));var OpenchannelAccount=require(_0x5e5b('0x1'))['db'][_0x5e5b('0x2')];var OpenchannelAccountEvents=new EventEmitter();OpenchannelAccountEvents[_0x5e5b('0x3')](0x0);var events={'afterCreate':_0x5e5b('0x4'),'afterUpdate':_0x5e5b('0x5'),'afterDestroy':_0x5e5b('0x6')};function emitEvent(_0x3dc763){return function(_0xf20c6a,_0x20a50c,_0xdc6616){OpenchannelAccountEvents[_0x5e5b('0x7')](_0x3dc763+':'+_0xf20c6a['id'],_0xf20c6a);OpenchannelAccountEvents[_0x5e5b('0x7')](_0x3dc763,_0xf20c6a);_0xdc6616(null);};}for(var e in events){if(events[_0x5e5b('0x8')](e)){var event=events[e];OpenchannelAccount[_0x5e5b('0x9')](e,emitEvent(event));}}module[_0x5e5b('0xa')]=OpenchannelAccountEvents;
\ No newline at end of file
index 2a84df2..4f80ade 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(_0xf45674,_0x24962e){var _0x2d2a2e=function(_0x2b6b46){while(--_0x2b6b46){_0xf45674['push'](_0xf45674['shift']());}};_0x2d2a2e(++_0x24962e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x9aada2,_0xd2d349){_0x9aada2=_0x9aada2-0x0;var _0x196dff=_0xa9e0[_0x9aada2];return _0x196dff;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var logger=require(_0x0a9e('0x2'))('api');var moment=require('moment');var BPromise=require(_0x0a9e('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0a9e('0x4'));var rimraf=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var attributes=require(_0x0a9e('0x7'));module[_0x0a9e('0x8')]=function(_0x57b080,_0x219af0){return _0x57b080[_0x0a9e('0x9')](_0x0a9e('0xa'),attributes,{'tableName':'openchannel_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa9e0=['../../config/environment','./openchannelAccount.attributes','exports','define','OpenchannelAccount','lodash','util','../../config/logger','bluebird','path','rimraf'];(function(_0x27b1d3,_0x134532){var _0x3450df=function(_0x3faeb9){while(--_0x3faeb9){_0x27b1d3['push'](_0x27b1d3['shift']());}};_0x3450df(++_0x134532);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0xa9e0[_0x3947c9];return _0x2e7871;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var 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 c11bdae..64fb71c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb9a7=['catch','util','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','then','info','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','OpenchannelAccount,\x20%s,\x20%s,\x20%s','error','message','result'];(function(_0x4de013,_0x3ebd8e){var _0x2e079d=function(_0x4e18c0){while(--_0x4e18c0){_0x4de013['push'](_0x4de013['shift']());}};_0x2e079d(++_0x3ebd8e);}(_0xb9a7,0x112));var _0x7b9a=function(_0x1b2ff7,_0x12a034){_0x1b2ff7=_0x1b2ff7-0x0;var _0x31656a=_0xb9a7[_0x1b2ff7];return _0x31656a;};'use strict';var _=require('lodash');var util=require(_0x7b9a('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7b9a('0x1'));var db=require('../../mysqldb')['db'];var utils=require(_0x7b9a('0x2'));var logger=require(_0x7b9a('0x3'))(_0x7b9a('0x4'));var config=require(_0x7b9a('0x5'));var jayson=require(_0x7b9a('0x6'));var client=jayson[_0x7b9a('0x7')][_0x7b9a('0x8')]({'port':0x232a});config[_0x7b9a('0x9')]=_[_0x7b9a('0xa')](config[_0x7b9a('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0x7b9a('0xb'))(new Redis(config[_0x7b9a('0x9')]));require('./openchannelAccount.socket')['register'](socket);function respondWithRpcPromise(_0x47e220,_0x15bc5b,_0x31f3b7){return new BPromise(function(_0x4cf090,_0x32c85d){return client['request'](_0x47e220,_0x31f3b7)[_0x7b9a('0xc')](function(_0x597732){logger[_0x7b9a('0xd')](_0x7b9a('0xe'),_0x15bc5b,_0x7b9a('0xf'));logger['debug'](_0x7b9a('0x10'),_0x15bc5b,_0x7b9a('0xf'),JSON['stringify'](_0x597732));if(_0x597732[_0x7b9a('0x11')]){if(_0x597732[_0x7b9a('0x11')]['code']===0x1f4){logger[_0x7b9a('0x11')](_0x7b9a('0xe'),_0x15bc5b,_0x597732[_0x7b9a('0x11')][_0x7b9a('0x12')]);return _0x32c85d(_0x597732[_0x7b9a('0x11')][_0x7b9a('0x12')]);}logger[_0x7b9a('0x11')](_0x7b9a('0xe'),_0x15bc5b,_0x597732[_0x7b9a('0x11')]['message']);return _0x4cf090(_0x597732[_0x7b9a('0x11')]['message']);}else{logger[_0x7b9a('0xd')](_0x7b9a('0xe'),_0x15bc5b,_0x7b9a('0xf'));_0x4cf090(_0x597732[_0x7b9a('0x13')][_0x7b9a('0x12')]);}})[_0x7b9a('0x14')](function(_0x27ad55){logger[_0x7b9a('0x11')](_0x7b9a('0xe'),_0x15bc5b,_0x27ad55);_0x32c85d(_0x27ad55);});});}
\ No newline at end of file
+var _0x0713=['socket.io-emitter','./openchannelAccount.socket','then','info','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','error','message','result','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost'];(function(_0x4fd7a5,_0x36e2c9){var _0x1babb3=function(_0x1af2b6){while(--_0x1af2b6){_0x4fd7a5['push'](_0x4fd7a5['shift']());}};_0x1babb3(++_0x36e2c9);}(_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});config[_0x3071('0xb')]=_[_0x3071('0xc')](config[_0x3071('0xb')],{'host':_0x3071('0xd'),'port':0x18eb});var socket=require(_0x3071('0xe'))(new Redis(config[_0x3071('0xb')]));require(_0x3071('0xf'))['register'](socket);function respondWithRpcPromise(_0x3457cd,_0x2610b4,_0x937259){return new BPromise(function(_0xff9a29,_0x1ce844){return client['request'](_0x3457cd,_0x937259)[_0x3071('0x10')](function(_0x11a7ee){logger[_0x3071('0x11')](_0x3071('0x12'),_0x2610b4,_0x3071('0x13'));logger['debug']('OpenchannelAccount,\x20%s,\x20%s,\x20%s',_0x2610b4,_0x3071('0x13'),JSON['stringify'](_0x11a7ee));if(_0x11a7ee[_0x3071('0x14')]){if(_0x11a7ee[_0x3071('0x14')]['code']===0x1f4){logger[_0x3071('0x14')]('OpenchannelAccount,\x20%s,\x20%s',_0x2610b4,_0x11a7ee[_0x3071('0x14')][_0x3071('0x15')]);return _0x1ce844(_0x11a7ee[_0x3071('0x14')][_0x3071('0x15')]);}logger[_0x3071('0x14')](_0x3071('0x12'),_0x2610b4,_0x11a7ee[_0x3071('0x14')][_0x3071('0x15')]);return _0xff9a29(_0x11a7ee[_0x3071('0x14')][_0x3071('0x15')]);}else{logger['info'](_0x3071('0x12'),_0x2610b4,_0x3071('0x13'));_0xff9a29(_0x11a7ee[_0x3071('0x16')][_0x3071('0x15')]);}})[_0x3071('0x17')](function(_0x17aee2){logger[_0x3071('0x14')](_0x3071('0x12'),_0x2610b4,_0x17aee2);_0x1ce844(_0x17aee2);});});}
\ No newline at end of file
index 36bb72c..ddb605e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xce25=['openchannelAccount:','remove','emit','removeListener','length'];(function(_0x4ff09b,_0x53f67d){var _0x3f5c2e=function(_0x124592){while(--_0x124592){_0x4ff09b['push'](_0x4ff09b['shift']());}};_0x3f5c2e(++_0x53f67d);}(_0xce25,0x196));var _0x5ce2=function(_0x2fdc26,_0x1268e1){_0x2fdc26=_0x2fdc26-0x0;var _0x1abf21=_0xce25[_0x2fdc26];return _0x1abf21;};'use strict';var OpenchannelAccountEvents=require('./openchannelAccount.events');var events=['save',_0x5ce2('0x0'),'update'];function createListener(_0x57ab25,_0x4dc355){return function(_0x5c8966){_0x4dc355[_0x5ce2('0x1')](_0x57ab25,_0x5c8966);};}function removeListener(_0x58f9eb,_0x3f4b36){return function(){OpenchannelAccountEvents[_0x5ce2('0x2')](_0x58f9eb,_0x3f4b36);};}exports['register']=function(_0x57a7a5){for(var _0x41fb85=0x0,_0x417149=events[_0x5ce2('0x3')];_0x41fb85<_0x417149;_0x41fb85++){var _0xcb80ee=events[_0x41fb85];var _0x4a57a6=createListener(_0x5ce2('0x4')+_0xcb80ee,_0x57a7a5);OpenchannelAccountEvents['on'](_0xcb80ee,_0x4a57a6);}};
\ No newline at end of file
+var _0xc3fe=['save','remove','removeListener','./openchannelAccount.events'];(function(_0x20dbdf,_0x5f5d4e){var _0x15f7b1=function(_0x486d8a){while(--_0x486d8a){_0x20dbdf['push'](_0x20dbdf['shift']());}};_0x15f7b1(++_0x5f5d4e);}(_0xc3fe,0xff));var _0xec3f=function(_0x4eae99,_0x2e865e){_0x4eae99=_0x4eae99-0x0;var _0x8939fd=_0xc3fe[_0x4eae99];return _0x8939fd;};'use strict';var OpenchannelAccountEvents=require(_0xec3f('0x0'));var events=[_0xec3f('0x1'),_0xec3f('0x2'),'update'];function createListener(_0x15ddf0,_0x2a45d9){return function(_0x2d85fc){_0x2a45d9['emit'](_0x15ddf0,_0x2d85fc);};}function removeListener(_0x3e6b6e,_0xda4641){return function(){OpenchannelAccountEvents[_0xec3f('0x3')](_0x3e6b6e,_0xda4641);};}exports['register']=function(_0x4fb9aa){for(var _0x2d5b29=0x0,_0x3b0b84=events['length'];_0x2d5b29<_0x3b0b84;_0x2d5b29++){var _0x503775=events[_0x2d5b29];var _0xcb8557=createListener('openchannelAccount:'+_0x503775,_0x4fb9aa);OpenchannelAccountEvents['on'](_0x503775,_0xcb8557);}};
\ No newline at end of file
index 6e085fa..fa7dd88 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xacd7=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','post','create','put','delete','destroy','exports','multer'];(function(_0x2ea087,_0x17f324){var _0x23ebac=function(_0x5575d8){while(--_0x5575d8){_0x2ea087['push'](_0x2ea087['shift']());}};_0x23ebac(++_0x17f324);}(_0xacd7,0x1af));var _0x7acd=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xacd7[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x7acd('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x7acd('0x1'));var express=require('express');var router=express[_0x7acd('0x2')]();var fs_extra=require(_0x7acd('0x3'));var auth=require(_0x7acd('0x4'));var interaction=require(_0x7acd('0x5'));var config=require(_0x7acd('0x6'));var controller=require('./openchannelApplication.controller');router[_0x7acd('0x7')]('/',auth[_0x7acd('0x8')](),controller[_0x7acd('0x9')]);router[_0x7acd('0x7')](_0x7acd('0xa'),auth[_0x7acd('0x8')](),controller[_0x7acd('0xb')]);router[_0x7acd('0xc')]('/',auth[_0x7acd('0x8')](),controller[_0x7acd('0xd')]);router[_0x7acd('0xe')](_0x7acd('0xa'),auth[_0x7acd('0x8')](),controller['update']);router[_0x7acd('0xf')](_0x7acd('0xa'),auth[_0x7acd('0x8')](),controller[_0x7acd('0x10')]);module[_0x7acd('0x11')]=router;
\ No newline at end of file
+var _0x9d58=['util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./openchannelApplication.controller','get','isAuthenticated','index','post','create','put','update','delete','/:id','destroy','exports'];(function(_0x2675e5,_0x267afc){var _0x2ab784=function(_0x3bfb84){while(--_0x3bfb84){_0x2675e5['push'](_0x2675e5['shift']());}};_0x2ab784(++_0x267afc);}(_0x9d58,0x130));var _0x89d5=function(_0x48b810,_0x173a5e){_0x48b810=_0x48b810-0x0;var _0x23c17d=_0x9d58[_0x48b810];return _0x23c17d;};'use strict';var multer=require('multer');var util=require(_0x89d5('0x0'));var path=require(_0x89d5('0x1'));var timeout=require(_0x89d5('0x2'));var express=require('express');var router=express[_0x89d5('0x3')]();var fs_extra=require(_0x89d5('0x4'));var auth=require(_0x89d5('0x5'));var interaction=require(_0x89d5('0x6'));var config=require('../../config/environment');var controller=require(_0x89d5('0x7'));router[_0x89d5('0x8')]('/',auth[_0x89d5('0x9')](),controller[_0x89d5('0xa')]);router[_0x89d5('0x8')]('/:id',auth[_0x89d5('0x9')](),controller['show']);router[_0x89d5('0xb')]('/',auth['isAuthenticated'](),controller[_0x89d5('0xc')]);router[_0x89d5('0xd')]('/:id',auth[_0x89d5('0x9')](),controller[_0x89d5('0xe')]);router[_0x89d5('0xf')](_0x89d5('0x10'),auth['isAuthenticated'](),controller[_0x89d5('0x11')]);module[_0x89d5('0x12')]=router;
\ No newline at end of file
index b8bb401..359237a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9375=['sequelize','STRING','noop','TEXT','*,*,*,*'];(function(_0x1d41a2,_0x33011b){var _0x241d1c=function(_0x1c8b0a){while(--_0x1c8b0a){_0x1d41a2['push'](_0x1d41a2['shift']());}};_0x241d1c(++_0x33011b);}(_0x9375,0xd2));var _0x5937=function(_0x35cb6b,_0x5cb855){_0x35cb6b=_0x35cb6b-0x0;var _0x501672=_0x9375[_0x35cb6b];return _0x501672;};'use strict';var Sequelize=require(_0x5937('0x0'));module['exports']={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0x5937('0x1')],'allowNull':![],'defaultValue':_0x5937('0x2')},'appdata':{'type':Sequelize[_0x5937('0x3')]()},'description':{'type':Sequelize[_0x5937('0x1')]},'interval':{'type':Sequelize[_0x5937('0x1')],'defaultValue':_0x5937('0x4')}};
\ No newline at end of file
+var _0x1f14=['exports','INTEGER','STRING','noop','TEXT','sequelize'];(function(_0x23b9da,_0x22b730){var _0x330b33=function(_0xdbc717){while(--_0xdbc717){_0x23b9da['push'](_0x23b9da['shift']());}};_0x330b33(++_0x22b730);}(_0x1f14,0x113));var _0x41f1=function(_0x87d75c,_0x18a833){_0x87d75c=_0x87d75c-0x0;var _0x5557c3=_0x1f14[_0x87d75c];return _0x5557c3;};'use strict';var Sequelize=require(_0x41f1('0x0'));module[_0x41f1('0x1')]={'priority':{'type':Sequelize[_0x41f1('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x41f1('0x3')],'allowNull':![],'defaultValue':_0x41f1('0x4')},'appdata':{'type':Sequelize[_0x41f1('0x5')]()},'description':{'type':Sequelize[_0x41f1('0x3')]},'interval':{'type':Sequelize['STRING'],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
index 266ca6d..8fe6f68 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe92a=['../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','update','then','destroy','error','stack','name','index','map','OpenchannelApplication','rawAttributes','key','query','filters','intersection','model','attributes','hasOwnProperty','nolimit','order','sort','where','merge','type','VIRTUAL','filter','options','includeAll','include','rows','catch','show','params','keys','fields','find','create','body','rimraf','fast-json-patch','request-promise','moment','bluebird','util','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','papaparse'];(function(_0x4ddbcf,_0xd822b0){var _0x45da65=function(_0x362027){while(--_0x362027){_0x4ddbcf['push'](_0x4ddbcf['shift']());}};_0x45da65(++_0xd822b0);}(_0xe92a,0x85));var _0xae92=function(_0x398c23,_0x294a30){_0x398c23=_0x398c23-0x0;var _0x5392c0=_0xe92a[_0x398c23];return _0x5392c0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xae92('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xae92('0x1'));var rp=require(_0xae92('0x2'));var moment=require(_0xae92('0x3'));var BPromise=require(_0xae92('0x4'));var Mustache=require('mustache');var util=require(_0xae92('0x5'));var path=require('path');var sox=require(_0xae92('0x6'));var csv=require(_0xae92('0x7'));var ejs=require(_0xae92('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xae92('0x9'));var squel=require(_0xae92('0xa'));var crypto=require('crypto');var jsforce=require(_0xae92('0xb'));var deskjs=require(_0xae92('0xc'));var toCsv=require('to-csv');var querystring=require(_0xae92('0xd'));var Papa=require(_0xae92('0xe'));var Redis=require('ioredis');var authService=require(_0xae92('0xf'));var qs=require(_0xae92('0x10'));var as=require(_0xae92('0x11'));var hardwareService=require(_0xae92('0x12'));var logger=require(_0xae92('0x13'))(_0xae92('0x14'));var utils=require(_0xae92('0x15'));var config=require(_0xae92('0x16'));var licenseUtil=require(_0xae92('0x17'));var db=require(_0xae92('0x18'))['db'];function respondWithStatusCode(_0x5ba226,_0x51e4ea){_0x51e4ea=_0x51e4ea||0xcc;return function(_0x57332b){if(_0x57332b){return _0x5ba226[_0xae92('0x19')](_0x51e4ea);}return _0x5ba226[_0xae92('0x1a')](_0x51e4ea)[_0xae92('0x1b')]();};}function respondWithResult(_0x4aafdf,_0x1de825){_0x1de825=_0x1de825||0xc8;return function(_0x534e91){if(_0x534e91){return _0x4aafdf['status'](_0x1de825)[_0xae92('0x1c')](_0x534e91);}};}function respondWithFilteredResult(_0x116806,_0x13ae2c){return function(_0x5157d9){if(_0x5157d9){var _0x5f0414=typeof _0x13ae2c['offset']===_0xae92('0x1d')&&typeof _0x13ae2c[_0xae92('0x1e')]===_0xae92('0x1d');var _0xf12372=_0x5157d9[_0xae92('0x1f')];var _0x5443df=_0x5f0414?0x0:_0x13ae2c['offset'];var _0x116898=_0x5f0414?_0x5157d9['count']:_0x13ae2c[_0xae92('0x20')]+_0x13ae2c['limit'];var _0x2842d7;if(_0x116898>=_0xf12372){_0x116898=_0xf12372;_0x2842d7=0xc8;}else{_0x2842d7=0xce;}_0x116806[_0xae92('0x1a')](_0x2842d7);return _0x116806[_0xae92('0x21')](_0xae92('0x22'),_0x5443df+'-'+_0x116898+'/'+_0xf12372)['json'](_0x5157d9);}return null;};}function patchUpdates(_0x186297){return function(_0x5738b1){try{jsonpatch[_0xae92('0x23')](_0x5738b1,_0x186297,!![]);}catch(_0x3d6c5d){return BPromise[_0xae92('0x24')](_0x3d6c5d);}return _0x5738b1['save']();};}function saveUpdates(_0x29fd3d,_0x5c637c){return function(_0x4ca592){if(_0x4ca592){return _0x4ca592[_0xae92('0x25')](_0x29fd3d)[_0xae92('0x26')](function(_0x1878be){return _0x1878be;});}return null;};}function removeEntity(_0x55267a,_0x3c44a1){return function(_0x4d38d0){if(_0x4d38d0){return _0x4d38d0[_0xae92('0x27')]()[_0xae92('0x26')](function(){_0x55267a[_0xae92('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x183ede,_0x1c88b2){return function(_0x255e34){if(!_0x255e34){_0x183ede[_0xae92('0x19')](0x194);}return _0x255e34;};}function handleError(_0x5973b9,_0x15d716){_0x15d716=_0x15d716||0x1f4;return function(_0x5a1022){logger[_0xae92('0x28')](_0x5a1022[_0xae92('0x29')]);if(_0x5a1022[_0xae92('0x2a')]){delete _0x5a1022[_0xae92('0x2a')];}_0x5973b9[_0xae92('0x1a')](_0x15d716)['send'](_0x5a1022);};}exports[_0xae92('0x2b')]=function(_0x3fc74e,_0x1eec51){var _0x2a9bd2={},_0x454aeb={},_0xc05e83={'count':0x0,'rows':[]};var _0x530efd=_[_0xae92('0x2c')](db[_0xae92('0x2d')][_0xae92('0x2e')],function(_0x10ef52){return{'name':_0x10ef52['fieldName'],'type':_0x10ef52['type'][_0xae92('0x2f')]};});_0x454aeb['model']=_[_0xae92('0x2c')](_0x530efd,_0xae92('0x2a'));_0x454aeb[_0xae92('0x30')]=_['keys'](_0x3fc74e['query']);_0x454aeb[_0xae92('0x31')]=_[_0xae92('0x32')](_0x454aeb[_0xae92('0x33')],_0x454aeb['query']);_0x2a9bd2['attributes']=_[_0xae92('0x32')](_0x454aeb[_0xae92('0x33')],qs['fields'](_0x3fc74e[_0xae92('0x30')]['fields']));_0x2a9bd2[_0xae92('0x34')]=_0x2a9bd2[_0xae92('0x34')]['length']?_0x2a9bd2[_0xae92('0x34')]:_0x454aeb['model'];if(!_0x3fc74e['query'][_0xae92('0x35')](_0xae92('0x36'))){_0x2a9bd2[_0xae92('0x1e')]=qs[_0xae92('0x1e')](_0x3fc74e[_0xae92('0x30')]['limit']);_0x2a9bd2[_0xae92('0x20')]=qs[_0xae92('0x20')](_0x3fc74e[_0xae92('0x30')][_0xae92('0x20')]);}_0x2a9bd2[_0xae92('0x37')]=qs[_0xae92('0x38')](_0x3fc74e['query'][_0xae92('0x38')]);_0x2a9bd2[_0xae92('0x39')]=qs['filters'](_['pick'](_0x3fc74e['query'],_0x454aeb[_0xae92('0x31')]),_0x530efd);if(_0x3fc74e[_0xae92('0x30')]['filter']){_0x2a9bd2[_0xae92('0x39')]=_[_0xae92('0x3a')](_0x2a9bd2[_0xae92('0x39')],{'$or':_[_0xae92('0x2c')](_0x530efd,function(_0x411e77){if(_0x411e77[_0xae92('0x3b')]!==_0xae92('0x3c')){var _0x41dfbf={};_0x41dfbf[_0x411e77[_0xae92('0x2a')]]={'$like':'%'+_0x3fc74e['query'][_0xae92('0x3d')]+'%'};return _0x41dfbf;}})});}_0x2a9bd2=_['merge']({},_0x2a9bd2,_0x3fc74e[_0xae92('0x3e')]);var _0x46b16e={'where':_0x2a9bd2[_0xae92('0x39')]};return db['OpenchannelApplication']['count'](_0x46b16e)[_0xae92('0x26')](function(_0x274526){_0xc05e83[_0xae92('0x1f')]=_0x274526;if(_0x3fc74e[_0xae92('0x30')][_0xae92('0x3f')]){_0x2a9bd2[_0xae92('0x40')]=[{'all':!![]}];}return db[_0xae92('0x2d')]['findAll'](_0x2a9bd2);})[_0xae92('0x26')](function(_0x3b4f8f){_0xc05e83[_0xae92('0x41')]=_0x3b4f8f;return _0xc05e83;})[_0xae92('0x26')](respondWithFilteredResult(_0x1eec51,_0x2a9bd2))[_0xae92('0x42')](handleError(_0x1eec51,null));};exports[_0xae92('0x43')]=function(_0x30070a,_0x15324f){var _0x40c099={'raw':!![],'where':{'id':_0x30070a[_0xae92('0x44')]['id']}},_0x1003bb={};_0x1003bb[_0xae92('0x33')]=_[_0xae92('0x45')](db[_0xae92('0x2d')][_0xae92('0x2e')]);_0x1003bb[_0xae92('0x30')]=_['keys'](_0x30070a[_0xae92('0x30')]);_0x1003bb[_0xae92('0x31')]=_[_0xae92('0x32')](_0x1003bb['model'],_0x1003bb['query']);_0x40c099[_0xae92('0x34')]=_['intersection'](_0x1003bb[_0xae92('0x33')],qs[_0xae92('0x46')](_0x30070a[_0xae92('0x30')][_0xae92('0x46')]));_0x40c099['attributes']=_0x40c099[_0xae92('0x34')]['length']?_0x40c099[_0xae92('0x34')]:_0x1003bb[_0xae92('0x33')];if(_0x30070a[_0xae92('0x30')][_0xae92('0x3f')]){_0x40c099[_0xae92('0x40')]=[{'all':!![]}];}_0x40c099=_[_0xae92('0x3a')]({},_0x40c099,_0x30070a[_0xae92('0x3e')]);return db[_0xae92('0x2d')][_0xae92('0x47')](_0x40c099)[_0xae92('0x26')](handleEntityNotFound(_0x15324f,null))[_0xae92('0x26')](respondWithResult(_0x15324f,null))[_0xae92('0x42')](handleError(_0x15324f,null));};exports[_0xae92('0x48')]=function(_0x1cd941,_0x3ac312){return db[_0xae92('0x2d')][_0xae92('0x48')](_0x1cd941[_0xae92('0x49')],{})['then'](respondWithResult(_0x3ac312,0xc9))[_0xae92('0x42')](handleError(_0x3ac312,null));};exports[_0xae92('0x25')]=function(_0x5ded12,_0x4f084e){if(_0x5ded12[_0xae92('0x49')]['id']){delete _0x5ded12['body']['id'];}return db[_0xae92('0x2d')]['find']({'where':{'id':_0x5ded12[_0xae92('0x44')]['id']}})[_0xae92('0x26')](handleEntityNotFound(_0x4f084e,null))['then'](saveUpdates(_0x5ded12[_0xae92('0x49')],null))['then'](respondWithResult(_0x4f084e,null))[_0xae92('0x42')](handleError(_0x4f084e,null));};exports[_0xae92('0x27')]=function(_0x1e3d89,_0x4911b2){return db[_0xae92('0x2d')]['find']({'where':{'id':_0x1e3d89[_0xae92('0x44')]['id']}})[_0xae92('0x26')](handleEntityNotFound(_0x4911b2,null))['then'](removeEntity(_0x4911b2,null))[_0xae92('0x42')](handleError(_0x4911b2,null));};
\ No newline at end of file
+var _0x8106=['pick','filter','merge','options','then','includeAll','show','intersection','length','find','catch','create','body','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','Content-Range','apply','reject','update','destroy','error','stack','name','send','map','OpenchannelApplication','rawAttributes','fieldName','type','query','keys','filters','model','fields','attributes','hasOwnProperty','nolimit','limit','sort','where'];(function(_0xbd4c8c,_0xe856a8){var _0x4f45bd=function(_0x4b686c){while(--_0x4b686c){_0xbd4c8c['push'](_0xbd4c8c['shift']());}};_0x4f45bd(++_0xe856a8);}(_0x8106,0x132));var _0x6810=function(_0x1d473d,_0xc0eb18){_0x1d473d=_0x1d473d-0x0;var _0x56e1f5=_0x8106[_0x1d473d];return _0x56e1f5;};'use strict';var emlformat=require(_0x6810('0x0'));var rimraf=require(_0x6810('0x1'));var zipdir=require(_0x6810('0x2'));var jsonpatch=require(_0x6810('0x3'));var rp=require(_0x6810('0x4'));var moment=require(_0x6810('0x5'));var BPromise=require(_0x6810('0x6'));var Mustache=require(_0x6810('0x7'));var util=require(_0x6810('0x8'));var path=require(_0x6810('0x9'));var sox=require(_0x6810('0xa'));var csv=require(_0x6810('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6810('0xc'));var _=require(_0x6810('0xd'));var squel=require(_0x6810('0xe'));var crypto=require(_0x6810('0xf'));var jsforce=require(_0x6810('0x10'));var deskjs=require(_0x6810('0x11'));var toCsv=require('to-csv');var querystring=require(_0x6810('0x12'));var Papa=require(_0x6810('0x13'));var Redis=require(_0x6810('0x14'));var authService=require(_0x6810('0x15'));var qs=require('../../components/parsers/qs');var as=require(_0x6810('0x16'));var hardwareService=require(_0x6810('0x17'));var logger=require(_0x6810('0x18'))('api');var utils=require(_0x6810('0x19'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x6810('0x1a'))['db'];function respondWithStatusCode(_0xef4417,_0x9a3d76){_0x9a3d76=_0x9a3d76||0xcc;return function(_0x45b791){if(_0x45b791){return _0xef4417[_0x6810('0x1b')](_0x9a3d76);}return _0xef4417[_0x6810('0x1c')](_0x9a3d76)[_0x6810('0x1d')]();};}function respondWithResult(_0x15664f,_0x27c169){_0x27c169=_0x27c169||0xc8;return function(_0x14c9fc){if(_0x14c9fc){return _0x15664f[_0x6810('0x1c')](_0x27c169)[_0x6810('0x1e')](_0x14c9fc);}};}function respondWithFilteredResult(_0xc415fe,_0x3f8fd6){return function(_0xfdd537){if(_0xfdd537){var _0x3c7396=typeof _0x3f8fd6[_0x6810('0x1f')]===_0x6810('0x20')&&typeof _0x3f8fd6['limit']===_0x6810('0x20');var _0x304359=_0xfdd537[_0x6810('0x21')];var _0x3a4bac=_0x3c7396?0x0:_0x3f8fd6[_0x6810('0x1f')];var _0x3b160f=_0x3c7396?_0xfdd537[_0x6810('0x21')]:_0x3f8fd6[_0x6810('0x1f')]+_0x3f8fd6['limit'];var _0x391490;if(_0x3b160f>=_0x304359){_0x3b160f=_0x304359;_0x391490=0xc8;}else{_0x391490=0xce;}_0xc415fe[_0x6810('0x1c')](_0x391490);return _0xc415fe['set'](_0x6810('0x22'),_0x3a4bac+'-'+_0x3b160f+'/'+_0x304359)[_0x6810('0x1e')](_0xfdd537);}return null;};}function patchUpdates(_0x53f448){return function(_0x235bc3){try{jsonpatch[_0x6810('0x23')](_0x235bc3,_0x53f448,!![]);}catch(_0x52628b){return BPromise[_0x6810('0x24')](_0x52628b);}return _0x235bc3['save']();};}function saveUpdates(_0x563916,_0x32fbbd){return function(_0x3f1223){if(_0x3f1223){return _0x3f1223[_0x6810('0x25')](_0x563916)['then'](function(_0xe5dc26){return _0xe5dc26;});}return null;};}function removeEntity(_0x202880,_0x4b1d4a){return function(_0x23ee7d){if(_0x23ee7d){return _0x23ee7d[_0x6810('0x26')]()['then'](function(){_0x202880['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x261af2,_0x40b257){return function(_0x53641d){if(!_0x53641d){_0x261af2[_0x6810('0x1b')](0x194);}return _0x53641d;};}function handleError(_0x1eb884,_0x494080){_0x494080=_0x494080||0x1f4;return function(_0x229ba8){logger[_0x6810('0x27')](_0x229ba8[_0x6810('0x28')]);if(_0x229ba8['name']){delete _0x229ba8[_0x6810('0x29')];}_0x1eb884[_0x6810('0x1c')](_0x494080)[_0x6810('0x2a')](_0x229ba8);};}exports['index']=function(_0x4fd07d,_0x167a85){var _0x23acb3={},_0x53dfc3={},_0x3d45f1={'count':0x0,'rows':[]};var _0x124463=_[_0x6810('0x2b')](db[_0x6810('0x2c')][_0x6810('0x2d')],function(_0x2f3fba){return{'name':_0x2f3fba[_0x6810('0x2e')],'type':_0x2f3fba[_0x6810('0x2f')]['key']};});_0x53dfc3['model']=_[_0x6810('0x2b')](_0x124463,_0x6810('0x29'));_0x53dfc3[_0x6810('0x30')]=_[_0x6810('0x31')](_0x4fd07d[_0x6810('0x30')]);_0x53dfc3[_0x6810('0x32')]=_['intersection'](_0x53dfc3[_0x6810('0x33')],_0x53dfc3[_0x6810('0x30')]);_0x23acb3['attributes']=_['intersection'](_0x53dfc3[_0x6810('0x33')],qs[_0x6810('0x34')](_0x4fd07d[_0x6810('0x30')]['fields']));_0x23acb3[_0x6810('0x35')]=_0x23acb3[_0x6810('0x35')]['length']?_0x23acb3[_0x6810('0x35')]:_0x53dfc3[_0x6810('0x33')];if(!_0x4fd07d['query'][_0x6810('0x36')](_0x6810('0x37'))){_0x23acb3[_0x6810('0x38')]=qs[_0x6810('0x38')](_0x4fd07d[_0x6810('0x30')][_0x6810('0x38')]);_0x23acb3['offset']=qs[_0x6810('0x1f')](_0x4fd07d[_0x6810('0x30')][_0x6810('0x1f')]);}_0x23acb3['order']=qs[_0x6810('0x39')](_0x4fd07d['query']['sort']);_0x23acb3[_0x6810('0x3a')]=qs[_0x6810('0x32')](_[_0x6810('0x3b')](_0x4fd07d[_0x6810('0x30')],_0x53dfc3[_0x6810('0x32')]),_0x124463);if(_0x4fd07d[_0x6810('0x30')][_0x6810('0x3c')]){_0x23acb3['where']=_[_0x6810('0x3d')](_0x23acb3['where'],{'$or':_[_0x6810('0x2b')](_0x124463,function(_0x30acd1){if(_0x30acd1[_0x6810('0x2f')]!=='VIRTUAL'){var _0x467343={};_0x467343[_0x30acd1[_0x6810('0x29')]]={'$like':'%'+_0x4fd07d[_0x6810('0x30')][_0x6810('0x3c')]+'%'};return _0x467343;}})});}_0x23acb3=_[_0x6810('0x3d')]({},_0x23acb3,_0x4fd07d[_0x6810('0x3e')]);var _0x1d6233={'where':_0x23acb3[_0x6810('0x3a')]};return db[_0x6810('0x2c')][_0x6810('0x21')](_0x1d6233)[_0x6810('0x3f')](function(_0x5b20ad){_0x3d45f1[_0x6810('0x21')]=_0x5b20ad;if(_0x4fd07d[_0x6810('0x30')][_0x6810('0x40')]){_0x23acb3['include']=[{'all':!![]}];}return db[_0x6810('0x2c')]['findAll'](_0x23acb3);})[_0x6810('0x3f')](function(_0x5da058){_0x3d45f1['rows']=_0x5da058;return _0x3d45f1;})[_0x6810('0x3f')](respondWithFilteredResult(_0x167a85,_0x23acb3))['catch'](handleError(_0x167a85,null));};exports[_0x6810('0x41')]=function(_0x107170,_0x3f59f7){var _0x21be6c={'raw':!![],'where':{'id':_0x107170['params']['id']}},_0x3c05fb={};_0x3c05fb[_0x6810('0x33')]=_[_0x6810('0x31')](db['OpenchannelApplication'][_0x6810('0x2d')]);_0x3c05fb[_0x6810('0x30')]=_['keys'](_0x107170[_0x6810('0x30')]);_0x3c05fb[_0x6810('0x32')]=_[_0x6810('0x42')](_0x3c05fb[_0x6810('0x33')],_0x3c05fb[_0x6810('0x30')]);_0x21be6c['attributes']=_['intersection'](_0x3c05fb['model'],qs[_0x6810('0x34')](_0x107170[_0x6810('0x30')]['fields']));_0x21be6c[_0x6810('0x35')]=_0x21be6c[_0x6810('0x35')][_0x6810('0x43')]?_0x21be6c[_0x6810('0x35')]:_0x3c05fb[_0x6810('0x33')];if(_0x107170['query'][_0x6810('0x40')]){_0x21be6c['include']=[{'all':!![]}];}_0x21be6c=_['merge']({},_0x21be6c,_0x107170['options']);return db['OpenchannelApplication'][_0x6810('0x44')](_0x21be6c)[_0x6810('0x3f')](handleEntityNotFound(_0x3f59f7,null))['then'](respondWithResult(_0x3f59f7,null))[_0x6810('0x45')](handleError(_0x3f59f7,null));};exports[_0x6810('0x46')]=function(_0x2944db,_0x181062){return db[_0x6810('0x2c')][_0x6810('0x46')](_0x2944db['body'],{})['then'](respondWithResult(_0x181062,0xc9))[_0x6810('0x45')](handleError(_0x181062,null));};exports[_0x6810('0x25')]=function(_0x17d29e,_0x51c91f){if(_0x17d29e[_0x6810('0x47')]['id']){delete _0x17d29e[_0x6810('0x47')]['id'];}return db[_0x6810('0x2c')][_0x6810('0x44')]({'where':{'id':_0x17d29e[_0x6810('0x48')]['id']}})[_0x6810('0x3f')](handleEntityNotFound(_0x51c91f,null))[_0x6810('0x3f')](saveUpdates(_0x17d29e[_0x6810('0x47')],null))['then'](respondWithResult(_0x51c91f,null))['catch'](handleError(_0x51c91f,null));};exports[_0x6810('0x26')]=function(_0x30f6f1,_0x3973f9){return db[_0x6810('0x2c')][_0x6810('0x44')]({'where':{'id':_0x30f6f1[_0x6810('0x48')]['id']}})['then'](handleEntityNotFound(_0x3973f9,null))[_0x6810('0x3f')](removeEntity(_0x3973f9,null))['catch'](handleError(_0x3973f9,null));};
\ No newline at end of file
index 1010448..e5e0ea1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe60b=['openchannel_applications','utf8mb4','utf8mb4_unicode_ci','../../config/logger','api','moment','bluebird','path','rimraf','exports','define','OpenchannelApplication'];(function(_0x1ee04d,_0x4b9f61){var _0x46a06e=function(_0x515e3a){while(--_0x515e3a){_0x1ee04d['push'](_0x1ee04d['shift']());}};_0x46a06e(++_0x4b9f61);}(_0xe60b,0xc3));var _0xbe60=function(_0x5ea50f,_0x372820){_0x5ea50f=_0x5ea50f-0x0;var _0x5c44aa=_0xe60b[_0x5ea50f];return _0x5c44aa;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xbe60('0x0'))(_0xbe60('0x1'));var moment=require(_0xbe60('0x2'));var BPromise=require(_0xbe60('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xbe60('0x4'));var rimraf=require(_0xbe60('0x5'));var config=require('../../config/environment');var attributes=require('./openchannelApplication.attributes');module[_0xbe60('0x6')]=function(_0x1ab7d1,_0x56827a){return _0x1ab7d1[_0xbe60('0x7')](_0xbe60('0x8'),attributes,{'tableName':_0xbe60('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xbe60('0xa'),'collate':_0xbe60('0xb')});};
\ No newline at end of file
+var _0x2cd3=['lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./openchannelApplication.attributes','define','OpenchannelApplication','openchannel_applications','utf8mb4'];(function(_0x19a5d8,_0x347207){var _0x30104a=function(_0x292695){while(--_0x292695){_0x19a5d8['push'](_0x19a5d8['shift']());}};_0x30104a(++_0x347207);}(_0x2cd3,0x1b2));var _0x32cd=function(_0x1e5cc3,_0x238a87){_0x1e5cc3=_0x1e5cc3-0x0;var _0x15c596=_0x2cd3[_0x1e5cc3];return _0x15c596;};'use strict';var _=require(_0x32cd('0x0'));var util=require(_0x32cd('0x1'));var logger=require(_0x32cd('0x2'))(_0x32cd('0x3'));var moment=require(_0x32cd('0x4'));var BPromise=require(_0x32cd('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x32cd('0x6'));var rimraf=require(_0x32cd('0x7'));var config=require(_0x32cd('0x8'));var attributes=require(_0x32cd('0x9'));module['exports']=function(_0x1a376e,_0x198ae4){return _0x1a376e[_0x32cd('0xa')](_0x32cd('0xb'),attributes,{'tableName':_0x32cd('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x32cd('0xd'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 3e3de4e..90b689e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x362b=['body','options','raw','limit','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','request\x20sent','debug','stringify','error','OpenchannelApplication,\x20%s,\x20%s','message','result','catch','UpdateOpenchannelApplication','OpenchannelApplication','update'];(function(_0x4b4f24,_0x5654a8){var _0x1c13d4=function(_0x4940bf){while(--_0x4940bf){_0x4b4f24['push'](_0x4b4f24['shift']());}};_0x1c13d4(++_0x5654a8);}(_0x362b,0x18c));var _0xb362=function(_0x3e1c70,_0x2ac2f5){_0x3e1c70=_0x3e1c70-0x0;var _0x4bf3fb=_0x362b[_0x3e1c70];return _0x4bf3fb;};'use strict';var _=require('lodash');var util=require(_0xb362('0x0'));var moment=require('moment');var BPromise=require(_0xb362('0x1'));var rs=require(_0xb362('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb362('0x3'))['db'];var utils=require(_0xb362('0x4'));var logger=require(_0xb362('0x5'))(_0xb362('0x6'));var config=require(_0xb362('0x7'));var jayson=require(_0xb362('0x8'));var client=jayson[_0xb362('0x9')][_0xb362('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x186e01,_0x533249,_0x3760ae){return new BPromise(function(_0x23e963,_0x17e30f){return client[_0xb362('0xb')](_0x186e01,_0x3760ae)['then'](function(_0x18ccdf){logger[_0xb362('0xc')]('OpenchannelApplication,\x20%s,\x20%s',_0x533249,_0xb362('0xd'));logger[_0xb362('0xe')]('OpenchannelApplication,\x20%s,\x20%s,\x20%s',_0x533249,'request\x20sent',JSON[_0xb362('0xf')](_0x18ccdf));if(_0x18ccdf[_0xb362('0x10')]){if(_0x18ccdf[_0xb362('0x10')]['code']===0x1f4){logger[_0xb362('0x10')](_0xb362('0x11'),_0x533249,_0x18ccdf[_0xb362('0x10')]['message']);return _0x17e30f(_0x18ccdf[_0xb362('0x10')]['message']);}logger[_0xb362('0x10')](_0xb362('0x11'),_0x533249,_0x18ccdf['error'][_0xb362('0x12')]);return _0x23e963(_0x18ccdf[_0xb362('0x10')][_0xb362('0x12')]);}else{logger[_0xb362('0xc')](_0xb362('0x11'),_0x533249,_0xb362('0xd'));_0x23e963(_0x18ccdf[_0xb362('0x13')][_0xb362('0x12')]);}})[_0xb362('0x14')](function(_0x8dfcd7){logger[_0xb362('0x10')](_0xb362('0x11'),_0x533249,_0x8dfcd7);_0x17e30f(_0x8dfcd7);});});}exports[_0xb362('0x15')]=function(_0x41bc31){var _0x5b7c9d=this;return new Promise(function(_0x92e8c0,_0x98908b){return db[_0xb362('0x16')][_0xb362('0x17')](_0x41bc31[_0xb362('0x18')],{'raw':_0x41bc31[_0xb362('0x19')]?_0x41bc31['options'][_0xb362('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x41bc31['options']?_0x41bc31['options']['where']||null:null,'attributes':_0x41bc31[_0xb362('0x19')]?_0x41bc31['options']['attributes']||null:null,'limit':_0x41bc31[_0xb362('0x19')]?_0x41bc31[_0xb362('0x19')][_0xb362('0x1b')]||null:null})['then'](function(_0xe84763){logger[_0xb362('0xc')](_0xb362('0x15'),_0x41bc31);logger[_0xb362('0xe')](_0xb362('0x15'),_0x41bc31,JSON[_0xb362('0xf')](_0xe84763));_0x92e8c0(_0xe84763);})[_0xb362('0x14')](function(_0x32aeb6){logger[_0xb362('0x10')](_0xb362('0x15'),_0x32aeb6[_0xb362('0x12')],_0x41bc31);_0x98908b(_0x5b7c9d[_0xb362('0x10')](0x1f4,_0x32aeb6[_0xb362('0x12')]));});});};
\ No newline at end of file
+var _0x1ce6=['request','OpenchannelApplication,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result','catch','OpenchannelApplication','body','options','raw','where','attributes','limit','UpdateOpenchannelApplication','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http'];(function(_0x5a1f63,_0x2467f7){var _0x316898=function(_0x9e3de0){while(--_0x9e3de0){_0x5a1f63['push'](_0x5a1f63['shift']());}};_0x316898(++_0x2467f7);}(_0x1ce6,0xc7));var _0x61ce=function(_0xb03db2,_0x3f1e2f){_0xb03db2=_0xb03db2-0x0;var _0x5fb079=_0x1ce6[_0xb03db2];return _0x5fb079;};'use strict';var _=require(_0x61ce('0x0'));var util=require(_0x61ce('0x1'));var moment=require(_0x61ce('0x2'));var BPromise=require('bluebird');var rs=require(_0x61ce('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x61ce('0x4'))['db'];var utils=require(_0x61ce('0x5'));var logger=require(_0x61ce('0x6'))(_0x61ce('0x7'));var config=require(_0x61ce('0x8'));var jayson=require(_0x61ce('0x9'));var client=jayson['client'][_0x61ce('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x371221,_0x528b45,_0x92579c){return new BPromise(function(_0x36efd0,_0x4dc24e){return client[_0x61ce('0xb')](_0x371221,_0x92579c)['then'](function(_0x4e0fbe){logger['info'](_0x61ce('0xc'),_0x528b45,_0x61ce('0xd'));logger[_0x61ce('0xe')]('OpenchannelApplication,\x20%s,\x20%s,\x20%s',_0x528b45,_0x61ce('0xd'),JSON[_0x61ce('0xf')](_0x4e0fbe));if(_0x4e0fbe[_0x61ce('0x10')]){if(_0x4e0fbe[_0x61ce('0x10')][_0x61ce('0x11')]===0x1f4){logger[_0x61ce('0x10')]('OpenchannelApplication,\x20%s,\x20%s',_0x528b45,_0x4e0fbe['error']['message']);return _0x4dc24e(_0x4e0fbe['error'][_0x61ce('0x12')]);}logger[_0x61ce('0x10')](_0x61ce('0xc'),_0x528b45,_0x4e0fbe[_0x61ce('0x10')]['message']);return _0x36efd0(_0x4e0fbe[_0x61ce('0x10')][_0x61ce('0x12')]);}else{logger[_0x61ce('0x13')](_0x61ce('0xc'),_0x528b45,_0x61ce('0xd'));_0x36efd0(_0x4e0fbe[_0x61ce('0x14')][_0x61ce('0x12')]);}})[_0x61ce('0x15')](function(_0xbb2b4c){logger[_0x61ce('0x10')](_0x61ce('0xc'),_0x528b45,_0xbb2b4c);_0x4dc24e(_0xbb2b4c);});});}exports['UpdateOpenchannelApplication']=function(_0x1d6c24){var _0x31499f=this;return new Promise(function(_0x386571,_0x32539d){return db[_0x61ce('0x16')]['update'](_0x1d6c24[_0x61ce('0x17')],{'raw':_0x1d6c24[_0x61ce('0x18')]?_0x1d6c24['options'][_0x61ce('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1d6c24[_0x61ce('0x18')]?_0x1d6c24[_0x61ce('0x18')][_0x61ce('0x1a')]||null:null,'attributes':_0x1d6c24['options']?_0x1d6c24[_0x61ce('0x18')][_0x61ce('0x1b')]||null:null,'limit':_0x1d6c24[_0x61ce('0x18')]?_0x1d6c24[_0x61ce('0x18')][_0x61ce('0x1c')]||null:null})['then'](function(_0x550b4e){logger[_0x61ce('0x13')]('UpdateOpenchannelApplication',_0x1d6c24);logger['debug'](_0x61ce('0x1d'),_0x1d6c24,JSON[_0x61ce('0xf')](_0x550b4e));_0x386571(_0x550b4e);})[_0x61ce('0x15')](function(_0x1285b4){logger[_0x61ce('0x10')](_0x61ce('0x1d'),_0x1285b4[_0x61ce('0x12')],_0x1d6c24);_0x32539d(_0x31499f['error'](0x1f4,_0x1285b4[_0x61ce('0x12')]));});});};
\ No newline at end of file
index 3a04299..37abd1d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x04ad=['addMessage','tracked','openchannel','openchannelinteraction:addtags','addTags','put','openchannelinteraction:update','openchannelinteraction:destroy','destroy','delete','removeTags','path','express','Router','fs-extra','../../components/auth/service','index','get','/describe','isAuthenticated','describe','/:id','/:id/messages','getMessages','/:id/download','post','create'];(function(_0x5d60f7,_0x41b230){var _0x44e9a2=function(_0x3d4a58){while(--_0x3d4a58){_0x5d60f7['push'](_0x5d60f7['shift']());}};_0x44e9a2(++_0x41b230);}(_0x04ad,0xc8));var _0xd04a=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x04ad[_0x20a584];return _0x4b41a8;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xd04a('0x0'));var timeout=require('connect-timeout');var express=require(_0xd04a('0x1'));var router=express[_0xd04a('0x2')]();var fs_extra=require(_0xd04a('0x3'));var auth=require(_0xd04a('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./openchannelInteraction.controller');router['get']('/',auth['isAuthenticated'](),controller[_0xd04a('0x5')]);router[_0xd04a('0x6')](_0xd04a('0x7'),auth[_0xd04a('0x8')](),controller[_0xd04a('0x9')]);router[_0xd04a('0x6')](_0xd04a('0xa'),auth[_0xd04a('0x8')](),controller['show']);router[_0xd04a('0x6')](_0xd04a('0xb'),auth['isAuthenticated'](),controller[_0xd04a('0xc')]);router[_0xd04a('0x6')](_0xd04a('0xd'),auth['isAuthenticated'](),controller['download']);router[_0xd04a('0xe')]('/',auth[_0xd04a('0x8')](),controller[_0xd04a('0xf')]);router['post']('/:id/messages',auth[_0xd04a('0x8')](),controller[_0xd04a('0x10')]);router[_0xd04a('0xe')]('/:id/tags',auth[_0xd04a('0x8')](),interaction[_0xd04a('0x11')](_0xd04a('0x12'),_0xd04a('0x13')),controller[_0xd04a('0x14')]);router[_0xd04a('0x15')](_0xd04a('0xa'),auth['isAuthenticated'](),interaction[_0xd04a('0x11')](_0xd04a('0x12'),_0xd04a('0x16')),controller['update']);router['delete'](_0xd04a('0xa'),auth[_0xd04a('0x8')](),interaction[_0xd04a('0x11')](_0xd04a('0x12'),_0xd04a('0x17')),controller[_0xd04a('0x18')]);router[_0xd04a('0x19')]('/:id/tags',auth[_0xd04a('0x8')](),controller[_0xd04a('0x1a')]);module['exports']=router;
\ No newline at end of file
+var _0x8853=['Router','fs-extra','../../components/interaction/service','../../config/environment','./openchannelInteraction.controller','get','isAuthenticated','index','describe','/:id','/:id/messages','/:id/download','post','create','/:id/tags','tracked','openchannel','openchannelinteraction:update','openchannelinteraction:destroy','destroy','delete','removeTags','exports','util','connect-timeout','express'];(function(_0x297fd3,_0x115406){var _0x2af381=function(_0x1dd31b){while(--_0x1dd31b){_0x297fd3['push'](_0x297fd3['shift']());}};_0x2af381(++_0x115406);}(_0x8853,0x1d1));var _0x3885=function(_0x5db59c,_0x11cc79){_0x5db59c=_0x5db59c-0x0;var _0x2a1f41=_0x8853[_0x5db59c];return _0x2a1f41;};'use strict';var multer=require('multer');var util=require(_0x3885('0x0'));var path=require('path');var timeout=require(_0x3885('0x1'));var express=require(_0x3885('0x2'));var router=express[_0x3885('0x3')]();var fs_extra=require(_0x3885('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x3885('0x5'));var config=require(_0x3885('0x6'));var controller=require(_0x3885('0x7'));router[_0x3885('0x8')]('/',auth[_0x3885('0x9')](),controller[_0x3885('0xa')]);router[_0x3885('0x8')]('/describe',auth[_0x3885('0x9')](),controller[_0x3885('0xb')]);router['get'](_0x3885('0xc'),auth[_0x3885('0x9')](),controller['show']);router[_0x3885('0x8')](_0x3885('0xd'),auth[_0x3885('0x9')](),controller['getMessages']);router['get'](_0x3885('0xe'),auth[_0x3885('0x9')](),controller['download']);router[_0x3885('0xf')]('/',auth[_0x3885('0x9')](),controller[_0x3885('0x10')]);router[_0x3885('0xf')](_0x3885('0xd'),auth[_0x3885('0x9')](),controller['addMessage']);router[_0x3885('0xf')](_0x3885('0x11'),auth[_0x3885('0x9')](),interaction[_0x3885('0x12')]('openchannel','openchannelinteraction:addtags'),controller['addTags']);router['put']('/:id',auth[_0x3885('0x9')](),interaction[_0x3885('0x12')](_0x3885('0x13'),_0x3885('0x14')),controller['update']);router['delete'](_0x3885('0xc'),auth[_0x3885('0x9')](),interaction[_0x3885('0x12')](_0x3885('0x13'),_0x3885('0x15')),controller[_0x3885('0x16')]);router[_0x3885('0x17')](_0x3885('0x11'),auth[_0x3885('0x9')](),controller[_0x3885('0x18')]);module[_0x3885('0x19')]=router;
\ No newline at end of file
index 4125bc2..d57a6a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x84ab=['DATE','STRING','out','sequelize','exports','BOOLEAN'];(function(_0x450aaf,_0x17e61c){var _0x5a6660=function(_0x10860f){while(--_0x10860f){_0x450aaf['push'](_0x450aaf['shift']());}};_0x5a6660(++_0x17e61c);}(_0x84ab,0x12f));var _0xb84a=function(_0x285824,_0x3da647){_0x285824=_0x285824-0x0;var _0x311d7e=_0x84ab[_0x285824];return _0x311d7e;};'use strict';var Sequelize=require(_0xb84a('0x0'));module[_0xb84a('0x1')]={'closed':{'type':Sequelize[_0xb84a('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xb84a('0x3')]},'disposition':{'type':Sequelize[_0xb84a('0x4')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0xb84a('0x4')]},'note':{'type':Sequelize[_0xb84a('0x4')]},'read1stAt':{'type':Sequelize['DATE']},'threadId':{'type':Sequelize[_0xb84a('0x4')]},'externalUrl':{'type':Sequelize[_0xb84a('0x4')]},'lastMsgAt':{'type':Sequelize[_0xb84a('0x3')]},'firstMsgDirection':{'type':Sequelize['ENUM']('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0xb84a('0x5')),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize['STRING']},'autoreplyExecuted':{'type':Sequelize[_0xb84a('0x2')],'defaultValue':![]}};
\ No newline at end of file
+var _0x9cff=['exports','BOOLEAN','DATE','STRING','ENUM','out'];(function(_0x284e10,_0x20e572){var _0x153492=function(_0x4ea814){while(--_0x4ea814){_0x284e10['push'](_0x284e10['shift']());}};_0x153492(++_0x20e572);}(_0x9cff,0x1b0));var _0xf9cf=function(_0x5a92e6,_0x5bb03e){_0x5a92e6=_0x5a92e6-0x0;var _0x917e0f=_0x9cff[_0x5a92e6];return _0x917e0f;};'use strict';var Sequelize=require('sequelize');module[_0xf9cf('0x0')]={'closed':{'type':Sequelize[_0xf9cf('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xf9cf('0x2')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0xf9cf('0x3')]},'thirdDisposition':{'type':Sequelize[_0xf9cf('0x3')]},'note':{'type':Sequelize[_0xf9cf('0x3')]},'read1stAt':{'type':Sequelize['DATE']},'threadId':{'type':Sequelize[_0xf9cf('0x3')]},'externalUrl':{'type':Sequelize[_0xf9cf('0x3')]},'lastMsgAt':{'type':Sequelize[_0xf9cf('0x2')]},'firstMsgDirection':{'type':Sequelize[_0xf9cf('0x4')]('in',_0xf9cf('0x5')),'defaultValue':'in','allowNull':![]},'lastMsgDirection':{'type':Sequelize[_0xf9cf('0x4')]('in',_0xf9cf('0x5')),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize[_0xf9cf('0x3')]},'autoreplyExecuted':{'type':Sequelize[_0xf9cf('0x1')],'defaultValue':![]}};
\ No newline at end of file
index c8c2aeb..5220cb6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4378=['findAll','user','catch','show','query','from','params','keys','OpenchannelInteraction','filters','intersection','attributes','model','fields','includeAll','include','options','create','body','find','describe','addMessage','OpenchannelMessage','omit','ids','findOne','hasOwnProperty','nolimit','order','sort','pick','where','OpenchannelInteractionId','$gte','format','YYYY-MM-DD\x20HH:mm:ss','merge','rows','spread','color','emit','openchannelInteractionTags:save','removeTags','download','unix','toString','join','files','tmp','root','server','attachments','transcript-%d-%s.zip','User','fullname','push','CmContact','Contact','firstName','lastName','Attachment','createdAt','direction','secret','read','OpenchannelAccount','Account','Owner','get','mkdirSync','N.A.','closed','closedAt','threadId','Public','Private','filter','basename','createReadStream','pipe','out','System','value','renderFile','views','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','Unable\x20to\x20delete\x20zip\x20file','unlinkSync','rimraf','zip-dir','moment','util','path','ejs','lodash','ioredis','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','sendStatus','status','end','offset','undefined','count','limit','set','Content-Range','json','update','then','destroy','error','name','send','index','map','rawAttributes','fieldName','type','key','getOptions'];(function(_0x65c50e,_0x1aa926){var _0x4573e7=function(_0x5bc049){while(--_0x5bc049){_0x65c50e['push'](_0x65c50e['shift']());}};_0x4573e7(++_0x1aa926);}(_0x4378,0x161));var _0x8437=function(_0x36b7f1,_0x67defb){_0x36b7f1=_0x36b7f1-0x0;var _0x3ee447=_0x4378[_0x36b7f1];return _0x3ee447;};'use strict';var rimraf=require(_0x8437('0x0'));var zipdir=require(_0x8437('0x1'));var moment=require(_0x8437('0x2'));var util=require(_0x8437('0x3'));var path=require(_0x8437('0x4'));var ejs=require(_0x8437('0x5'));var fs=require('fs');var _=require(_0x8437('0x6'));var Redis=require(_0x8437('0x7'));var interaction=require('../../components/interaction/service');var qs=require('../../components/parsers/qs');var pdf=require('../../components/export/pdf');var logger=require(_0x8437('0x8'))(_0x8437('0x9'));var config=require(_0x8437('0xa'));var db=require(_0x8437('0xb'))['db'];config[_0x8437('0xc')]=_[_0x8437('0xd')](config[_0x8437('0xc')],{'host':_0x8437('0xe'),'port':0x18eb});var socket=require(_0x8437('0xf'))(new Redis(config[_0x8437('0xc')]));require('./openchannelInteraction.socket')[_0x8437('0x10')](socket);function respondWithStatusCode(_0x35cb33,_0x54de65){_0x54de65=_0x54de65||0xcc;return function(_0x4cf5ab){if(_0x4cf5ab){return _0x35cb33[_0x8437('0x11')](_0x54de65);}return _0x35cb33[_0x8437('0x12')](_0x54de65)[_0x8437('0x13')]();};}function respondWithResult(_0x13775f,_0x1ff82e){_0x1ff82e=_0x1ff82e||0xc8;return function(_0x28843b){if(_0x28843b){return _0x13775f['status'](_0x1ff82e)['json'](_0x28843b);}};}function respondWithFilteredResult(_0xead6f0,_0x8adade){return function(_0x2a07f4){if(_0x2a07f4){var _0x54cdf5=typeof _0x8adade[_0x8437('0x14')]===_0x8437('0x15')&&typeof _0x8adade['limit']===_0x8437('0x15');var _0x2846e2=_0x2a07f4[_0x8437('0x16')];var _0x335db8=_0x54cdf5?0x0:_0x8adade[_0x8437('0x14')];var _0x2ab645=_0x54cdf5?_0x2a07f4[_0x8437('0x16')]:_0x8adade[_0x8437('0x14')]+_0x8adade[_0x8437('0x17')];var _0x223813;if(_0x2ab645>=_0x2846e2){_0x2ab645=_0x2846e2;_0x223813=0xc8;}else{_0x223813=0xce;}_0xead6f0[_0x8437('0x12')](_0x223813);return _0xead6f0[_0x8437('0x18')](_0x8437('0x19'),_0x335db8+'-'+_0x2ab645+'/'+_0x2846e2)[_0x8437('0x1a')](_0x2a07f4);}return null;};}function saveUpdates(_0x130897){return function(_0x262545){if(_0x262545){return _0x262545[_0x8437('0x1b')](_0x130897)[_0x8437('0x1c')](function(_0xb857d2){return _0xb857d2;});}return null;};}function removeEntity(_0x2302dd){return function(_0x4c4c04){if(_0x4c4c04){return _0x4c4c04[_0x8437('0x1d')]()['then'](function(){_0x2302dd[_0x8437('0x12')](0xcc)['end']();});}};}function handleEntityNotFound(_0x180469){return function(_0xd89b2e){if(!_0xd89b2e){_0x180469[_0x8437('0x11')](0x194);}return _0xd89b2e;};}function handleError(_0x11d847,_0x18bb12){_0x18bb12=_0x18bb12||0x1f4;return function(_0x5d6374){logger[_0x8437('0x1e')](_0x5d6374['stack']);if(_0x5d6374['name']){delete _0x5d6374[_0x8437('0x1f')];}_0x11d847[_0x8437('0x12')](_0x18bb12)[_0x8437('0x20')](_0x5d6374);};}exports[_0x8437('0x21')]=function(_0x5dca09,_0x452997){var _0x34e04b={};var _0x15b2f0=_[_0x8437('0x22')](db['OpenchannelInteraction'][_0x8437('0x23')],function(_0x41c92a){return{'name':_0x41c92a[_0x8437('0x24')],'type':_0x41c92a[_0x8437('0x25')][_0x8437('0x26')]};});_0x34e04b=qs[_0x8437('0x27')](_0x15b2f0,_0x5dca09);return interaction[_0x8437('0x28')]('openchannel',_0x5dca09['query'],_0x5dca09[_0x8437('0x29')],_0x34e04b,_0x15b2f0)[_0x8437('0x1c')](respondWithFilteredResult(_0x452997,_0x34e04b))[_0x8437('0x2a')](handleError(_0x452997,null));};exports[_0x8437('0x2b')]=function(_0x5e9759,_0x399389){var _0x29437b={};if(_0x5e9759[_0x8437('0x2c')][_0x8437('0x25')]&&_0x5e9759[_0x8437('0x2c')][_0x8437('0x25')]===_0x8437('0x2d')){_0x29437b[_0x8437('0x2d')]=_0x5e9759['params']['id'];}else{_0x29437b['id']=_0x5e9759[_0x8437('0x2e')]['id'];}var _0x884cc6={'raw':![],'where':_0x29437b},_0x2f745b={};_0x2f745b['model']=_[_0x8437('0x2f')](db[_0x8437('0x30')][_0x8437('0x23')]);_0x2f745b[_0x8437('0x2c')]=_[_0x8437('0x2f')](_0x5e9759[_0x8437('0x2c')]);_0x2f745b[_0x8437('0x31')]=_[_0x8437('0x32')](_0x2f745b['model'],_0x2f745b[_0x8437('0x2c')]);_0x884cc6[_0x8437('0x33')]=_[_0x8437('0x32')](_0x2f745b[_0x8437('0x34')],qs[_0x8437('0x35')](_0x5e9759['query'][_0x8437('0x35')]));_0x884cc6[_0x8437('0x33')]=_0x884cc6[_0x8437('0x33')]['length']?_0x884cc6[_0x8437('0x33')]:_0x2f745b['model'];if(_0x5e9759['query'][_0x8437('0x36')]){_0x884cc6[_0x8437('0x37')]=[{'all':!![]}];}_0x884cc6=_['merge']({},_0x884cc6,_0x5e9759[_0x8437('0x38')]);return db[_0x8437('0x30')]['find'](_0x884cc6)[_0x8437('0x1c')](handleEntityNotFound(_0x399389,null))[_0x8437('0x1c')](respondWithResult(_0x399389,null))[_0x8437('0x2a')](handleError(_0x399389,null));};exports['create']=function(_0x3f8fda,_0x5c52c5){return db[_0x8437('0x30')][_0x8437('0x39')](_0x3f8fda[_0x8437('0x3a')],{})[_0x8437('0x1c')](respondWithResult(_0x5c52c5,0xc9))[_0x8437('0x2a')](handleError(_0x5c52c5,null));};exports[_0x8437('0x1b')]=function(_0x4295aa,_0x4f9bfd){if(_0x4295aa[_0x8437('0x3a')]['id']){delete _0x4295aa[_0x8437('0x3a')]['id'];}return db[_0x8437('0x30')]['find']({'where':{'id':_0x4295aa['params']['id']}})['then'](handleEntityNotFound(_0x4f9bfd,null))['then'](saveUpdates(_0x4295aa['body'],null))[_0x8437('0x1c')](respondWithResult(_0x4f9bfd,null))['catch'](handleError(_0x4f9bfd,null));};exports['destroy']=function(_0x2d3947,_0x9fb77a){return db[_0x8437('0x30')][_0x8437('0x3b')]({'where':{'id':_0x2d3947[_0x8437('0x2e')]['id']}})[_0x8437('0x1c')](handleEntityNotFound(_0x9fb77a,null))['then'](removeEntity(_0x9fb77a,null))[_0x8437('0x2a')](handleError(_0x9fb77a,null));};exports[_0x8437('0x3c')]=function(_0x4c5538,_0x35dd78){return db[_0x8437('0x30')][_0x8437('0x3c')]()[_0x8437('0x1c')](respondWithResult(_0x35dd78,null))[_0x8437('0x2a')](handleError(_0x35dd78,null));};exports[_0x8437('0x3d')]=function(_0x117218,_0x71dd79){return db[_0x8437('0x3e')]['find']({'where':{'id':_0x117218[_0x8437('0x2e')]['id']}})['then'](handleEntityNotFound(_0x71dd79,null))[_0x8437('0x1c')](function(_0x254ae4){if(_0x254ae4){return _0x254ae4[_0x8437('0x3d')](_0x117218[_0x8437('0x3a')]['ids'],_[_0x8437('0x3f')](_0x117218[_0x8437('0x3a')],[_0x8437('0x40'),'id'])||{});}})[_0x8437('0x1c')](respondWithResult(_0x71dd79,null))[_0x8437('0x2a')](handleError(_0x71dd79,null));};exports['getMessages']=function(_0x1af10f,_0x4e4165){var _0x5f08bd={'raw':![],'where':{}};var _0x1d0139={};var _0x3838d1={'count':0x0,'rows':[]};return db['OpenchannelInteraction'][_0x8437('0x41')]({'where':{'id':_0x1af10f['params']['id']}})['then'](handleEntityNotFound(_0x4e4165,null))[_0x8437('0x1c')](function(_0x275c6d){if(_0x275c6d){_0x1d0139[_0x8437('0x34')]=_[_0x8437('0x2f')](db[_0x8437('0x3e')]['rawAttributes']);_0x1d0139[_0x8437('0x2c')]=_['keys'](_0x1af10f['query']);_0x1d0139['filters']=_[_0x8437('0x32')](_0x1d0139[_0x8437('0x34')],_0x1d0139[_0x8437('0x2c')]);_0x5f08bd['attributes']=_[_0x8437('0x32')](_0x1d0139[_0x8437('0x34')],qs['fields'](_0x1af10f[_0x8437('0x2c')]['fields']));_0x5f08bd[_0x8437('0x33')]=_0x5f08bd[_0x8437('0x33')]['length']?_0x5f08bd[_0x8437('0x33')]:_0x1d0139[_0x8437('0x34')];if(!_0x1af10f['query'][_0x8437('0x42')](_0x8437('0x43'))){_0x5f08bd['limit']=qs[_0x8437('0x17')](_0x1af10f[_0x8437('0x2c')][_0x8437('0x17')]);_0x5f08bd['offset']=qs['offset'](_0x1af10f[_0x8437('0x2c')][_0x8437('0x14')]);}_0x5f08bd[_0x8437('0x44')]=qs[_0x8437('0x45')](_0x1af10f[_0x8437('0x2c')]['sort']);_0x5f08bd['where']=qs[_0x8437('0x31')](_[_0x8437('0x46')](_0x1af10f[_0x8437('0x2c')],_0x1d0139[_0x8437('0x31')]));_0x5f08bd[_0x8437('0x47')][_0x8437('0x48')]=_0x275c6d['id'];if(_0x1af10f[_0x8437('0x2c')]['filter']){_0x5f08bd[_0x8437('0x47')]=_['merge'](_0x5f08bd[_0x8437('0x47')],{'$or':_['map'](_0x5f08bd[_0x8437('0x33')],function(_0x1894a4){var _0x1ab70d={};_0x1ab70d[_0x1894a4]={'$like':'%'+_0x1af10f[_0x8437('0x2c')]['filter']+'%'};return _0x1ab70d;})});}if(_0x1af10f[_0x8437('0x2c')][_0x8437('0x49')]){var _0x432103=_0x1af10f[_0x8437('0x2c')]['$gte']['split'](',');var _0x30a19f={};_0x30a19f[_0x432103[0x0]]={'$gte':moment(_0x432103[0x1])[_0x8437('0x4a')](_0x8437('0x4b'))};_0x5f08bd[_0x8437('0x47')]=_[_0x8437('0x4c')](_0x5f08bd['where'],_0x30a19f);}_0x5f08bd=_[_0x8437('0x4c')]({},_0x5f08bd,_0x1af10f[_0x8437('0x38')]);return db['OpenchannelMessage'][_0x8437('0x16')]({'where':_0x5f08bd[_0x8437('0x47')]})[_0x8437('0x1c')](function(_0x1705ce){_0x3838d1[_0x8437('0x16')]=_0x1705ce;if(_0x1af10f[_0x8437('0x2c')]['includeAll']){_0x5f08bd[_0x8437('0x37')]=[{'all':!![]}];}return db[_0x8437('0x3e')][_0x8437('0x28')](_0x5f08bd);})[_0x8437('0x1c')](function(_0x21fa72){_0x3838d1[_0x8437('0x4d')]=_0x21fa72;return _0x3838d1;});}})[_0x8437('0x1c')](respondWithFilteredResult(_0x4e4165,_0x5f08bd))['catch'](handleError(_0x4e4165,null));};exports['addTags']=function(_0x3aace2,_0x3acfeb){return db[_0x8437('0x30')][_0x8437('0x3b')]({'where':{'id':_0x3aace2[_0x8437('0x2e')]['id']}})[_0x8437('0x1c')](handleEntityNotFound(_0x3acfeb,null))['then'](function(_0x3ddee0){if(_0x3ddee0){return _0x3ddee0['setTags'](_0x3aace2[_0x8437('0x3a')][_0x8437('0x40')],_[_0x8437('0x3f')](_0x3aace2[_0x8437('0x3a')],[_0x8437('0x40'),'id'])||{})[_0x8437('0x4e')](function(){return db['Tag'][_0x8437('0x28')]({'attributes':['id',_0x8437('0x1f'),_0x8437('0x4f')],'where':{'id':_0x3aace2['body']['ids']}});})[_0x8437('0x1c')](function(_0x1bb75d){socket[_0x8437('0x50')](_0x8437('0x51'),{'id':Number(_0x3aace2[_0x8437('0x2e')]['id']),'tags':_0x1bb75d||[]});return{'id':Number(_0x3aace2['params']['id']),'tags':_0x1bb75d||[]};});}})[_0x8437('0x1c')](respondWithResult(_0x3acfeb,null))[_0x8437('0x2a')](handleError(_0x3acfeb,null));};exports[_0x8437('0x52')]=function(_0x3d1ea3,_0x2eead1){return db[_0x8437('0x30')][_0x8437('0x3b')]({'where':{'id':_0x3d1ea3[_0x8437('0x2e')]['id']}})[_0x8437('0x1c')](handleEntityNotFound(_0x2eead1,null))[_0x8437('0x1c')](function(_0x15bdb5){if(_0x15bdb5){return _0x15bdb5['removeTags'](_0x3d1ea3[_0x8437('0x2c')][_0x8437('0x40')]);}})[_0x8437('0x1c')](respondWithStatusCode(_0x2eead1,null))[_0x8437('0x2a')](handleError(_0x2eead1,null));};exports[_0x8437('0x53')]=function(_0x42621f,_0x2d3f6c){var _0x49f468=moment()[_0x8437('0x54')]()[_0x8437('0x55')]();var _0x1086fc=path[_0x8437('0x56')](config['root'],'server',_0x8437('0x57'),_0x8437('0x58'));var _0x114d48=path[_0x8437('0x56')](config[_0x8437('0x59')],_0x8437('0x5a'),_0x8437('0x57'),_0x8437('0x5b'));var _0x5e96da=path[_0x8437('0x56')](_0x1086fc,_0x49f468);var _0x2a4eb8=util[_0x8437('0x4a')](_0x8437('0x5c'),_0x42621f[_0x8437('0x2e')]['id'],_0x49f468);var _0x251084=path['join'](_0x1086fc,_0x2a4eb8);var _0x36c476=[];_0x36c476['push']({'model':db[_0x8437('0x5d')],'as':_0x8437('0x5d'),'attributes':['id',_0x8437('0x5e')],'raw':!![]});_0x36c476[_0x8437('0x5f')]({'model':db[_0x8437('0x60')],'as':_0x8437('0x61'),'attributes':['id',_0x8437('0x62'),_0x8437('0x63')],'raw':!![]});if(_0x42621f[_0x8437('0x2c')][_0x8437('0x5b')]){_0x36c476[_0x8437('0x5f')]({'model':db[_0x8437('0x64')],'as':_0x8437('0x64'),'raw':!![]});}var _0x25d31b=[{'model':db['OpenchannelMessage'],'as':'Messages','attributes':['id','body',_0x8437('0x65'),_0x8437('0x66'),_0x8437('0x67'),_0x8437('0x68')],'include':_0x36c476}];_0x25d31b[_0x8437('0x5f')]({'model':db[_0x8437('0x69')],'as':_0x8437('0x6a'),'attributes':['id','name']});_0x25d31b[_0x8437('0x5f')]({'model':db[_0x8437('0x5d')],'as':_0x8437('0x6b'),'attributes':['id',_0x8437('0x5e')]});return db['OpenchannelInteraction'][_0x8437('0x3b')]({'where':{'id':_0x42621f[_0x8437('0x2e')]['id']},'include':_0x25d31b})[_0x8437('0x1c')](handleEntityNotFound(_0x2d3f6c,null))[_0x8437('0x1c')](function(_0x5b26d4){if(_0x5b26d4){var _0x25f128=_0x5b26d4[_0x8437('0x6c')]({'plain':!![]});fs[_0x8437('0x6d')](_0x5e96da);var _0xb64a9={'channel':'Openchannel','account':_0x25f128[_0x8437('0x6a')][_0x8437('0x1f')],'agent':_0x25f128[_0x8437('0x6b')]?_0x25f128[_0x8437('0x6b')][_0x8437('0x5e')]:_0x8437('0x6e'),'createdAt':moment(_0x25f128[_0x8437('0x65')])[_0x8437('0x4a')](_0x8437('0x4b'))[_0x8437('0x55')](),'closedAt':_0x25f128[_0x8437('0x6f')]?moment(_0x25f128[_0x8437('0x70')])['format'](_0x8437('0x4b'))[_0x8437('0x55')]():'','disposition':_0x25f128['disposition'],'visibility':_0x25f128[_0x8437('0x71')]?_0x8437('0x72'):_0x8437('0x73'),'messages':_(_0x25f128['Messages'])[_0x8437('0x74')]({'secret':![]})[_0x8437('0x22')](function(_0x172939){if(_0x172939[_0x8437('0x64')]){var _0x133fd9=path[_0x8437('0x56')](_0x114d48,_0x172939['Attachment'][_0x8437('0x75')]);if(fs['existsSync'](_0x133fd9)){fs[_0x8437('0x76')](_0x133fd9)[_0x8437('0x77')](fs['createWriteStream'](path[_0x8437('0x56')](_0x5e96da,_0x172939['Attachment'][_0x8437('0x75')])));}}return{'date':moment(_0x172939[_0x8437('0x65')])[_0x8437('0x4a')](_0x8437('0x4b'))[_0x8437('0x55')](),'sender':_0x172939['direction']===_0x8437('0x78')?_0x172939['User']?_0x172939[_0x8437('0x5d')]['fullname']:_0x8437('0x79'):_0x172939[_0x8437('0x61')][_0x8437('0x62')]+(_0x172939[_0x8437('0x61')][_0x8437('0x63')]?'\x20'+_0x172939['Contact'][_0x8437('0x63')]:''),'body':_0x172939['Attachment']?_0x172939[_0x8437('0x64')][_0x8437('0x75')]:_0x172939['body'],'direction':_0x172939[_0x8437('0x66')]==='out'?'A':'C','secret':_0x172939['secret'],'read':_0x172939['read'],'attachment':_0x172939['Attachment']};})[_0x8437('0x7a')]()};return ejs[_0x8437('0x7b')](path[_0x8437('0x56')](config[_0x8437('0x59')],_0x8437('0x5a'),_0x8437('0x7c'),_0x8437('0x7d')),{'interaction':_0xb64a9})['then'](function(_0x5a9d13){var _0x238cd7=path['join'](_0x5e96da,_0x8437('0x7e')+_0x25f128['id']+'-'+_0x49f468+_0x8437('0x7f'));var _0x44d20f={'path':_0x238cd7,'channel':'Openchannel','interactionId':_0x25f128['id']};return pdf[_0x8437('0x80')](_0x5a9d13,_0x44d20f);})[_0x8437('0x1c')](function(){return new Promise(function(_0x9ca185,_0x56576f){zipdir(_0x5e96da,{'saveTo':_0x251084},function(_0x2637c6,_0x202488){if(_0x2637c6)return _0x56576f(_0x2637c6);return _0x9ca185(_0x202488);});})[_0x8437('0x1c')](function(){return new Promise(function(_0x41d0d7,_0x1ebb8c){rimraf(_0x5e96da,function(_0x2126e1){if(_0x2126e1)_0x1ebb8c(_0x2126e1);return _0x41d0d7();});});})[_0x8437('0x1c')](function(){return _0x2d3f6c[_0x8437('0x53')](_0x251084,_0x2a4eb8,function(_0x394758){if(_0x394758){logger['error'](_0x8437('0x81'),_0x394758);}else{fs[_0x8437('0x82')](_0x251084);}});});});}else{return _0x2d3f6c[_0x8437('0x11')](0xc8);}})[_0x8437('0x2a')](handleError(_0x2d3f6c,null));};
\ No newline at end of file
+var _0xd716=['offset','count','set','Content-Range','update','then','destroy','end','error','stack','name','send','index','OpenchannelInteraction','rawAttributes','fieldName','key','getOptions','findAll','openchannel','query','user','type','from','params','model','keys','filters','intersection','attributes','fields','options','find','create','body','catch','describe','OpenchannelMessage','addMessage','omit','getMessages','findOne','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','merge','includeAll','include','setTags','ids','spread','Tag','removeTags','download','unix','toString','join','root','server','tmp','User','fullname','firstName','push','Attachment','Messages','createdAt','direction','secret','read','OpenchannelAccount','Account','get','Owner','N.A.','closed','closedAt','disposition','threadId','Public','map','basename','existsSync','createReadStream','pipe','createWriteStream','out','Contact','lastName','renderFile','views','downloadInteraction.ejs','.pdf','Openchannel','createPdfFromHTML','Unable\x20to\x20delete\x20zip\x20file','unlinkSync','util','path','lodash','ioredis','../../components/interaction/service','../../components/export/pdf','../../config/logger','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','./openchannelInteraction.socket','register','sendStatus','status','json','undefined','limit'];(function(_0x302866,_0x59a9cf){var _0x129112=function(_0x3bc39f){while(--_0x3bc39f){_0x302866['push'](_0x302866['shift']());}};_0x129112(++_0x59a9cf);}(_0xd716,0x1e1));var _0x6d71=function(_0x33f54b,_0x41df7d){_0x33f54b=_0x33f54b-0x0;var _0x191255=_0xd716[_0x33f54b];return _0x191255;};'use strict';var rimraf=require('rimraf');var zipdir=require('zip-dir');var moment=require('moment');var util=require(_0x6d71('0x0'));var path=require(_0x6d71('0x1'));var ejs=require('ejs');var fs=require('fs');var _=require(_0x6d71('0x2'));var Redis=require(_0x6d71('0x3'));var interaction=require(_0x6d71('0x4'));var qs=require('../../components/parsers/qs');var pdf=require(_0x6d71('0x5'));var logger=require(_0x6d71('0x6'))('api');var config=require(_0x6d71('0x7'));var db=require(_0x6d71('0x8'))['db'];config[_0x6d71('0x9')]=_['defaults'](config[_0x6d71('0x9')],{'host':_0x6d71('0xa'),'port':0x18eb});var socket=require(_0x6d71('0xb'))(new Redis(config['redis']));require(_0x6d71('0xc'))[_0x6d71('0xd')](socket);function respondWithStatusCode(_0x417485,_0x2a0120){_0x2a0120=_0x2a0120||0xcc;return function(_0x2efe08){if(_0x2efe08){return _0x417485[_0x6d71('0xe')](_0x2a0120);}return _0x417485[_0x6d71('0xf')](_0x2a0120)['end']();};}function respondWithResult(_0x36086e,_0xf5f8d8){_0xf5f8d8=_0xf5f8d8||0xc8;return function(_0x34bd92){if(_0x34bd92){return _0x36086e['status'](_0xf5f8d8)[_0x6d71('0x10')](_0x34bd92);}};}function respondWithFilteredResult(_0x362b11,_0x2b83f3){return function(_0x57c25d){if(_0x57c25d){var _0x643ce5=typeof _0x2b83f3['offset']===_0x6d71('0x11')&&typeof _0x2b83f3[_0x6d71('0x12')]==='undefined';var _0xb4fb0b=_0x57c25d['count'];var _0x48c7bb=_0x643ce5?0x0:_0x2b83f3[_0x6d71('0x13')];var _0x530850=_0x643ce5?_0x57c25d[_0x6d71('0x14')]:_0x2b83f3['offset']+_0x2b83f3[_0x6d71('0x12')];var _0x2b6818;if(_0x530850>=_0xb4fb0b){_0x530850=_0xb4fb0b;_0x2b6818=0xc8;}else{_0x2b6818=0xce;}_0x362b11[_0x6d71('0xf')](_0x2b6818);return _0x362b11[_0x6d71('0x15')](_0x6d71('0x16'),_0x48c7bb+'-'+_0x530850+'/'+_0xb4fb0b)[_0x6d71('0x10')](_0x57c25d);}return null;};}function saveUpdates(_0x563d17){return function(_0x4ed551){if(_0x4ed551){return _0x4ed551[_0x6d71('0x17')](_0x563d17)[_0x6d71('0x18')](function(_0x1184b9){return _0x1184b9;});}return null;};}function removeEntity(_0x4fbdc2){return function(_0x36611b){if(_0x36611b){return _0x36611b[_0x6d71('0x19')]()[_0x6d71('0x18')](function(){_0x4fbdc2['status'](0xcc)[_0x6d71('0x1a')]();});}};}function handleEntityNotFound(_0x202dcd){return function(_0x3d48b0){if(!_0x3d48b0){_0x202dcd[_0x6d71('0xe')](0x194);}return _0x3d48b0;};}function handleError(_0x1c38ae,_0x2d10b3){_0x2d10b3=_0x2d10b3||0x1f4;return function(_0x22b97a){logger[_0x6d71('0x1b')](_0x22b97a[_0x6d71('0x1c')]);if(_0x22b97a[_0x6d71('0x1d')]){delete _0x22b97a[_0x6d71('0x1d')];}_0x1c38ae[_0x6d71('0xf')](_0x2d10b3)[_0x6d71('0x1e')](_0x22b97a);};}exports[_0x6d71('0x1f')]=function(_0x499d55,_0x544cb5){var _0x1a5608={};var _0x51dc69=_['map'](db[_0x6d71('0x20')][_0x6d71('0x21')],function(_0x4f5a32){return{'name':_0x4f5a32[_0x6d71('0x22')],'type':_0x4f5a32['type'][_0x6d71('0x23')]};});_0x1a5608=qs[_0x6d71('0x24')](_0x51dc69,_0x499d55);return interaction[_0x6d71('0x25')](_0x6d71('0x26'),_0x499d55[_0x6d71('0x27')],_0x499d55[_0x6d71('0x28')],_0x1a5608,_0x51dc69)[_0x6d71('0x18')](respondWithFilteredResult(_0x544cb5,_0x1a5608))['catch'](handleError(_0x544cb5,null));};exports['show']=function(_0x4a2021,_0x4139a4){var _0x537733={};if(_0x4a2021[_0x6d71('0x27')][_0x6d71('0x29')]&&_0x4a2021['query'][_0x6d71('0x29')]===_0x6d71('0x2a')){_0x537733[_0x6d71('0x2a')]=_0x4a2021[_0x6d71('0x2b')]['id'];}else{_0x537733['id']=_0x4a2021['params']['id'];}var _0x35eeb9={'raw':![],'where':_0x537733},_0x106027={};_0x106027[_0x6d71('0x2c')]=_[_0x6d71('0x2d')](db[_0x6d71('0x20')][_0x6d71('0x21')]);_0x106027['query']=_[_0x6d71('0x2d')](_0x4a2021['query']);_0x106027[_0x6d71('0x2e')]=_[_0x6d71('0x2f')](_0x106027['model'],_0x106027[_0x6d71('0x27')]);_0x35eeb9[_0x6d71('0x30')]=_[_0x6d71('0x2f')](_0x106027[_0x6d71('0x2c')],qs[_0x6d71('0x31')](_0x4a2021['query'][_0x6d71('0x31')]));_0x35eeb9[_0x6d71('0x30')]=_0x35eeb9[_0x6d71('0x30')]['length']?_0x35eeb9[_0x6d71('0x30')]:_0x106027[_0x6d71('0x2c')];if(_0x4a2021['query']['includeAll']){_0x35eeb9['include']=[{'all':!![]}];}_0x35eeb9=_['merge']({},_0x35eeb9,_0x4a2021[_0x6d71('0x32')]);return db['OpenchannelInteraction'][_0x6d71('0x33')](_0x35eeb9)[_0x6d71('0x18')](handleEntityNotFound(_0x4139a4,null))[_0x6d71('0x18')](respondWithResult(_0x4139a4,null))['catch'](handleError(_0x4139a4,null));};exports[_0x6d71('0x34')]=function(_0x47d3ee,_0x20032a){return db[_0x6d71('0x20')][_0x6d71('0x34')](_0x47d3ee['body'],{})[_0x6d71('0x18')](respondWithResult(_0x20032a,0xc9))['catch'](handleError(_0x20032a,null));};exports[_0x6d71('0x17')]=function(_0x270ff4,_0x1f478f){if(_0x270ff4[_0x6d71('0x35')]['id']){delete _0x270ff4['body']['id'];}return db['OpenchannelInteraction'][_0x6d71('0x33')]({'where':{'id':_0x270ff4['params']['id']}})[_0x6d71('0x18')](handleEntityNotFound(_0x1f478f,null))[_0x6d71('0x18')](saveUpdates(_0x270ff4['body'],null))[_0x6d71('0x18')](respondWithResult(_0x1f478f,null))[_0x6d71('0x36')](handleError(_0x1f478f,null));};exports[_0x6d71('0x19')]=function(_0x5b3577,_0x5bb0a9){return db[_0x6d71('0x20')]['find']({'where':{'id':_0x5b3577[_0x6d71('0x2b')]['id']}})['then'](handleEntityNotFound(_0x5bb0a9,null))['then'](removeEntity(_0x5bb0a9,null))['catch'](handleError(_0x5bb0a9,null));};exports[_0x6d71('0x37')]=function(_0x537d24,_0x11a852){return db[_0x6d71('0x20')][_0x6d71('0x37')]()[_0x6d71('0x18')](respondWithResult(_0x11a852,null))[_0x6d71('0x36')](handleError(_0x11a852,null));};exports['addMessage']=function(_0x7603b1,_0x3c3d7b){return db[_0x6d71('0x38')][_0x6d71('0x33')]({'where':{'id':_0x7603b1[_0x6d71('0x2b')]['id']}})[_0x6d71('0x18')](handleEntityNotFound(_0x3c3d7b,null))[_0x6d71('0x18')](function(_0x66f58a){if(_0x66f58a){return _0x66f58a[_0x6d71('0x39')](_0x7603b1['body']['ids'],_[_0x6d71('0x3a')](_0x7603b1[_0x6d71('0x35')],['ids','id'])||{});}})['then'](respondWithResult(_0x3c3d7b,null))['catch'](handleError(_0x3c3d7b,null));};exports[_0x6d71('0x3b')]=function(_0x5a6cf7,_0x29d1c5){var _0x37bde9={'raw':![],'where':{}};var _0x351393={};var _0x4b8780={'count':0x0,'rows':[]};return db[_0x6d71('0x20')][_0x6d71('0x3c')]({'where':{'id':_0x5a6cf7['params']['id']}})[_0x6d71('0x18')](handleEntityNotFound(_0x29d1c5,null))[_0x6d71('0x18')](function(_0x1906c9){if(_0x1906c9){_0x351393['model']=_[_0x6d71('0x2d')](db[_0x6d71('0x38')][_0x6d71('0x21')]);_0x351393[_0x6d71('0x27')]=_['keys'](_0x5a6cf7[_0x6d71('0x27')]);_0x351393['filters']=_[_0x6d71('0x2f')](_0x351393['model'],_0x351393[_0x6d71('0x27')]);_0x37bde9['attributes']=_[_0x6d71('0x2f')](_0x351393['model'],qs[_0x6d71('0x31')](_0x5a6cf7[_0x6d71('0x27')][_0x6d71('0x31')]));_0x37bde9[_0x6d71('0x30')]=_0x37bde9[_0x6d71('0x30')][_0x6d71('0x3d')]?_0x37bde9[_0x6d71('0x30')]:_0x351393[_0x6d71('0x2c')];if(!_0x5a6cf7[_0x6d71('0x27')][_0x6d71('0x3e')](_0x6d71('0x3f'))){_0x37bde9[_0x6d71('0x12')]=qs[_0x6d71('0x12')](_0x5a6cf7[_0x6d71('0x27')][_0x6d71('0x12')]);_0x37bde9[_0x6d71('0x13')]=qs[_0x6d71('0x13')](_0x5a6cf7[_0x6d71('0x27')][_0x6d71('0x13')]);}_0x37bde9[_0x6d71('0x40')]=qs['sort'](_0x5a6cf7[_0x6d71('0x27')][_0x6d71('0x41')]);_0x37bde9[_0x6d71('0x42')]=qs[_0x6d71('0x2e')](_[_0x6d71('0x43')](_0x5a6cf7[_0x6d71('0x27')],_0x351393[_0x6d71('0x2e')]));_0x37bde9[_0x6d71('0x42')]['OpenchannelInteractionId']=_0x1906c9['id'];if(_0x5a6cf7[_0x6d71('0x27')][_0x6d71('0x44')]){_0x37bde9['where']=_['merge'](_0x37bde9['where'],{'$or':_['map'](_0x37bde9['attributes'],function(_0x2c317b){var _0x2b1208={};_0x2b1208[_0x2c317b]={'$like':'%'+_0x5a6cf7['query']['filter']+'%'};return _0x2b1208;})});}if(_0x5a6cf7['query'][_0x6d71('0x45')]){var _0x30bc5c=_0x5a6cf7[_0x6d71('0x27')][_0x6d71('0x45')][_0x6d71('0x46')](',');var _0x14d961={};_0x14d961[_0x30bc5c[0x0]]={'$gte':moment(_0x30bc5c[0x1])[_0x6d71('0x47')](_0x6d71('0x48'))};_0x37bde9[_0x6d71('0x42')]=_[_0x6d71('0x49')](_0x37bde9['where'],_0x14d961);}_0x37bde9=_[_0x6d71('0x49')]({},_0x37bde9,_0x5a6cf7['options']);return db['OpenchannelMessage'][_0x6d71('0x14')]({'where':_0x37bde9[_0x6d71('0x42')]})[_0x6d71('0x18')](function(_0x33ebb7){_0x4b8780['count']=_0x33ebb7;if(_0x5a6cf7['query'][_0x6d71('0x4a')]){_0x37bde9[_0x6d71('0x4b')]=[{'all':!![]}];}return db[_0x6d71('0x38')][_0x6d71('0x25')](_0x37bde9);})[_0x6d71('0x18')](function(_0xb8f35a){_0x4b8780['rows']=_0xb8f35a;return _0x4b8780;});}})['then'](respondWithFilteredResult(_0x29d1c5,_0x37bde9))['catch'](handleError(_0x29d1c5,null));};exports['addTags']=function(_0x4579e2,_0x5d980d){return db[_0x6d71('0x20')][_0x6d71('0x33')]({'where':{'id':_0x4579e2['params']['id']}})['then'](handleEntityNotFound(_0x5d980d,null))[_0x6d71('0x18')](function(_0x12f0f6){if(_0x12f0f6){return _0x12f0f6[_0x6d71('0x4c')](_0x4579e2[_0x6d71('0x35')][_0x6d71('0x4d')],_[_0x6d71('0x3a')](_0x4579e2[_0x6d71('0x35')],[_0x6d71('0x4d'),'id'])||{})[_0x6d71('0x4e')](function(){return db[_0x6d71('0x4f')][_0x6d71('0x25')]({'attributes':['id',_0x6d71('0x1d'),'color'],'where':{'id':_0x4579e2[_0x6d71('0x35')]['ids']}});})[_0x6d71('0x18')](function(_0x4196cf){socket['emit']('openchannelInteractionTags:save',{'id':Number(_0x4579e2[_0x6d71('0x2b')]['id']),'tags':_0x4196cf||[]});return{'id':Number(_0x4579e2[_0x6d71('0x2b')]['id']),'tags':_0x4196cf||[]};});}})[_0x6d71('0x18')](respondWithResult(_0x5d980d,null))[_0x6d71('0x36')](handleError(_0x5d980d,null));};exports[_0x6d71('0x50')]=function(_0xafcf9b,_0x4ab1bb){return db[_0x6d71('0x20')][_0x6d71('0x33')]({'where':{'id':_0xafcf9b[_0x6d71('0x2b')]['id']}})[_0x6d71('0x18')](handleEntityNotFound(_0x4ab1bb,null))[_0x6d71('0x18')](function(_0x35735e){if(_0x35735e){return _0x35735e['removeTags'](_0xafcf9b[_0x6d71('0x27')]['ids']);}})['then'](respondWithStatusCode(_0x4ab1bb,null))[_0x6d71('0x36')](handleError(_0x4ab1bb,null));};exports[_0x6d71('0x51')]=function(_0x12e091,_0x838c86){var _0x4499f6=moment()[_0x6d71('0x52')]()[_0x6d71('0x53')]();var _0x4670b3=path[_0x6d71('0x54')](config[_0x6d71('0x55')],_0x6d71('0x56'),'files',_0x6d71('0x57'));var _0x5e92ed=path['join'](config['root'],_0x6d71('0x56'),'files','attachments');var _0x3fe1ac=path['join'](_0x4670b3,_0x4499f6);var _0x190131=util[_0x6d71('0x47')]('transcript-%d-%s.zip',_0x12e091[_0x6d71('0x2b')]['id'],_0x4499f6);var _0x38c105=path[_0x6d71('0x54')](_0x4670b3,_0x190131);var _0x14f216=[];_0x14f216['push']({'model':db['User'],'as':_0x6d71('0x58'),'attributes':['id',_0x6d71('0x59')],'raw':!![]});_0x14f216['push']({'model':db['CmContact'],'as':'Contact','attributes':['id',_0x6d71('0x5a'),'lastName'],'raw':!![]});if(_0x12e091[_0x6d71('0x27')]['attachments']){_0x14f216[_0x6d71('0x5b')]({'model':db[_0x6d71('0x5c')],'as':_0x6d71('0x5c'),'raw':!![]});}var _0x42e197=[{'model':db[_0x6d71('0x38')],'as':_0x6d71('0x5d'),'attributes':['id','body',_0x6d71('0x5e'),_0x6d71('0x5f'),_0x6d71('0x60'),_0x6d71('0x61')],'include':_0x14f216}];_0x42e197['push']({'model':db[_0x6d71('0x62')],'as':_0x6d71('0x63'),'attributes':['id','name']});_0x42e197[_0x6d71('0x5b')]({'model':db[_0x6d71('0x58')],'as':'Owner','attributes':['id','fullname']});return db[_0x6d71('0x20')][_0x6d71('0x33')]({'where':{'id':_0x12e091['params']['id']},'include':_0x42e197})[_0x6d71('0x18')](handleEntityNotFound(_0x838c86,null))[_0x6d71('0x18')](function(_0x194ed3){if(_0x194ed3){var _0x82139d=_0x194ed3[_0x6d71('0x64')]({'plain':!![]});fs['mkdirSync'](_0x3fe1ac);var _0xe01a16={'channel':'Openchannel','account':_0x82139d['Account'][_0x6d71('0x1d')],'agent':_0x82139d[_0x6d71('0x65')]?_0x82139d['Owner'][_0x6d71('0x59')]:_0x6d71('0x66'),'createdAt':moment(_0x82139d[_0x6d71('0x5e')])['format'](_0x6d71('0x48'))[_0x6d71('0x53')](),'closedAt':_0x82139d[_0x6d71('0x67')]?moment(_0x82139d[_0x6d71('0x68')])['format']('YYYY-MM-DD\x20HH:mm:ss')[_0x6d71('0x53')]():'','disposition':_0x82139d[_0x6d71('0x69')],'visibility':_0x82139d[_0x6d71('0x6a')]?_0x6d71('0x6b'):'Private','messages':_(_0x82139d[_0x6d71('0x5d')])[_0x6d71('0x44')]({'secret':![]})[_0x6d71('0x6c')](function(_0x23ee5c){if(_0x23ee5c[_0x6d71('0x5c')]){var _0x281d9c=path['join'](_0x5e92ed,_0x23ee5c[_0x6d71('0x5c')][_0x6d71('0x6d')]);if(fs[_0x6d71('0x6e')](_0x281d9c)){fs[_0x6d71('0x6f')](_0x281d9c)[_0x6d71('0x70')](fs[_0x6d71('0x71')](path[_0x6d71('0x54')](_0x3fe1ac,_0x23ee5c[_0x6d71('0x5c')][_0x6d71('0x6d')])));}}return{'date':moment(_0x23ee5c['createdAt'])['format']('YYYY-MM-DD\x20HH:mm:ss')[_0x6d71('0x53')](),'sender':_0x23ee5c[_0x6d71('0x5f')]===_0x6d71('0x72')?_0x23ee5c['User']?_0x23ee5c[_0x6d71('0x58')][_0x6d71('0x59')]:'System':_0x23ee5c['Contact'][_0x6d71('0x5a')]+(_0x23ee5c[_0x6d71('0x73')][_0x6d71('0x74')]?'\x20'+_0x23ee5c[_0x6d71('0x73')][_0x6d71('0x74')]:''),'body':_0x23ee5c['Attachment']?_0x23ee5c[_0x6d71('0x5c')][_0x6d71('0x6d')]:_0x23ee5c[_0x6d71('0x35')],'direction':_0x23ee5c[_0x6d71('0x5f')]==='out'?'A':'C','secret':_0x23ee5c['secret'],'read':_0x23ee5c[_0x6d71('0x61')],'attachment':_0x23ee5c[_0x6d71('0x5c')]};})['value']()};return ejs[_0x6d71('0x75')](path['join'](config['root'],'server',_0x6d71('0x76'),_0x6d71('0x77')),{'interaction':_0xe01a16})[_0x6d71('0x18')](function(_0x269fa4){var _0x162755=path['join'](_0x3fe1ac,'transcript-'+_0x82139d['id']+'-'+_0x4499f6+_0x6d71('0x78'));var _0x32b41d={'path':_0x162755,'channel':_0x6d71('0x79'),'interactionId':_0x82139d['id']};return pdf[_0x6d71('0x7a')](_0x269fa4,_0x32b41d);})[_0x6d71('0x18')](function(){return new Promise(function(_0x4ecd12,_0x9add2b){zipdir(_0x3fe1ac,{'saveTo':_0x38c105},function(_0x64089f,_0x710330){if(_0x64089f)return _0x9add2b(_0x64089f);return _0x4ecd12(_0x710330);});})[_0x6d71('0x18')](function(){return new Promise(function(_0x367a6b,_0x4e2795){rimraf(_0x3fe1ac,function(_0x207048){if(_0x207048)_0x4e2795(_0x207048);return _0x367a6b();});});})[_0x6d71('0x18')](function(){return _0x838c86[_0x6d71('0x51')](_0x38c105,_0x190131,function(_0x22794f){if(_0x22794f){logger[_0x6d71('0x1b')](_0x6d71('0x7b'),_0x22794f);}else{fs[_0x6d71('0x7c')](_0x38c105);}});});});}else{return _0x838c86[_0x6d71('0xe')](0xc8);}})[_0x6d71('0x36')](handleError(_0x838c86,null));};
\ No newline at end of file
index 14cc853..5737c57 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x68fa=['emit','hasOwnProperty','exports','events','OpenchannelInteraction','../../mysqldb','setMaxListeners','update','remove','getUsers','then','setDataValue','map','findAll','unreadMessages','length'];(function(_0x54a9e3,_0x4a3813){var _0x247cce=function(_0x50aa49){while(--_0x50aa49){_0x54a9e3['push'](_0x54a9e3['shift']());}};_0x247cce(++_0x4a3813);}(_0x68fa,0x173));var _0xa68f=function(_0x534eb2,_0x2b9f02){_0x534eb2=_0x534eb2-0x0;var _0xfae93b=_0x68fa[_0x534eb2];return _0xfae93b;};'use strict';var EventEmitter=require(_0xa68f('0x0'));var OpenchannelInteraction=require('../../mysqldb')['db'][_0xa68f('0x1')];var OpenchannelMessage=require(_0xa68f('0x2'))['db']['OpenchannelMessage'];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents[_0xa68f('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0xa68f('0x4'),'afterDestroy':_0xa68f('0x5')};function emitEvent(_0x47dc72){return function(_0x34fee1,_0x27096a,_0x5c736e){_0x34fee1[_0xa68f('0x6')]({'attributes':['id'],'raw':!![]})[_0xa68f('0x7')](function(_0xfd9de0){_0x34fee1[_0xa68f('0x8')]('Users',_0xfd9de0[_0xa68f('0x9')](function(_0x233bc1){return{'id':_0x233bc1['id']};}));return OpenchannelMessage[_0xa68f('0xa')]({'where':{'OpenchannelInteractionId':_0x34fee1['id'],'direction':'in','read':![]},'raw':!![]});})[_0xa68f('0x7')](function(_0x51306b){_0x34fee1['setDataValue'](_0xa68f('0xb'),_0x51306b[_0xa68f('0xc')]);OpenchannelInteractionEvents[_0xa68f('0xd')](_0x47dc72+':'+_0x34fee1['id'],_0x34fee1);OpenchannelInteractionEvents[_0xa68f('0xd')](_0x47dc72,_0x34fee1);_0x5c736e(null);})['catch'](_0x5c736e(null));};}for(var e in events){if(events[_0xa68f('0xe')](e)){var event=events[e];OpenchannelInteraction['hook'](e,emitEvent(event));}}module[_0xa68f('0xf')]=OpenchannelInteractionEvents;
\ No newline at end of file
+var _0x93b8=['save','update','remove','getUsers','then','Users','map','findAll','setDataValue','unreadMessages','length','emit','catch','hasOwnProperty','hook','exports','events','../../mysqldb','OpenchannelInteraction','OpenchannelMessage','setMaxListeners'];(function(_0x38a3d6,_0x52e305){var _0x3768d7=function(_0x1af8a9){while(--_0x1af8a9){_0x38a3d6['push'](_0x38a3d6['shift']());}};_0x3768d7(++_0x52e305);}(_0x93b8,0x160));var _0x893b=function(_0x22e668,_0x35b4f7){_0x22e668=_0x22e668-0x0;var _0x4f96be=_0x93b8[_0x22e668];return _0x4f96be;};'use strict';var EventEmitter=require(_0x893b('0x0'));var OpenchannelInteraction=require(_0x893b('0x1'))['db'][_0x893b('0x2')];var OpenchannelMessage=require(_0x893b('0x1'))['db'][_0x893b('0x3')];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents[_0x893b('0x4')](0x0);var events={'afterCreate':_0x893b('0x5'),'afterUpdate':_0x893b('0x6'),'afterDestroy':_0x893b('0x7')};function emitEvent(_0x3dcaaf){return function(_0x4d4acf,_0x15b6b6,_0x205b04){_0x4d4acf[_0x893b('0x8')]({'attributes':['id'],'raw':!![]})[_0x893b('0x9')](function(_0x310774){_0x4d4acf['setDataValue'](_0x893b('0xa'),_0x310774[_0x893b('0xb')](function(_0x36be4f){return{'id':_0x36be4f['id']};}));return OpenchannelMessage[_0x893b('0xc')]({'where':{'OpenchannelInteractionId':_0x4d4acf['id'],'direction':'in','read':![]},'raw':!![]});})[_0x893b('0x9')](function(_0x9fe63a){_0x4d4acf[_0x893b('0xd')](_0x893b('0xe'),_0x9fe63a[_0x893b('0xf')]);OpenchannelInteractionEvents[_0x893b('0x10')](_0x3dcaaf+':'+_0x4d4acf['id'],_0x4d4acf);OpenchannelInteractionEvents[_0x893b('0x10')](_0x3dcaaf,_0x4d4acf);_0x205b04(null);})[_0x893b('0x11')](_0x205b04(null));};}for(var e in events){if(events[_0x893b('0x12')](e)){var event=events[e];OpenchannelInteraction[_0x893b('0x13')](e,emitEvent(event));}}module[_0x893b('0x14')]=OpenchannelInteractionEvents;
\ No newline at end of file
index 74abdc6..458db26 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f4e=['util','../../config/logger','api','moment','bluebird','path','./openchannelInteraction.attributes','exports','define','OpenchannelInteraction','openchannel_interactions','utf8mb4','utf8mb4_unicode_ci','changed','closedAt','format','lodash'];(function(_0xd21d48,_0x1c7cec){var _0x2f1b50=function(_0x5bca87){while(--_0x5bca87){_0xd21d48['push'](_0xd21d48['shift']());}};_0x2f1b50(++_0x1c7cec);}(_0x6f4e,0x120));var _0xe6f4=function(_0x168c3b,_0xdf3810){_0x168c3b=_0x168c3b-0x0;var _0xcef122=_0x6f4e[_0x168c3b];return _0xcef122;};'use strict';var _=require(_0xe6f4('0x0'));var util=require(_0xe6f4('0x1'));var logger=require(_0xe6f4('0x2'))(_0xe6f4('0x3'));var moment=require(_0xe6f4('0x4'));var BPromise=require(_0xe6f4('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xe6f4('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xe6f4('0x7'));module[_0xe6f4('0x8')]=function(_0x2a8f28,_0x4c0352){return _0x2a8f28[_0xe6f4('0x9')](_0xe6f4('0xa'),attributes,{'tableName':_0xe6f4('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xe6f4('0xc'),'collate':_0xe6f4('0xd'),'hooks':{'beforeUpdate':function(_0x1104ea,_0x289b9d,_0x529b5e){if(_0x1104ea[_0xe6f4('0xe')]('closed')){_0x1104ea[_0xe6f4('0xf')]=moment()[_0xe6f4('0x10')]('YYYY-MM-DD\x20HH:mm:ss');}_0x529b5e(null,_0x1104ea);}}});};
\ No newline at end of file
+var _0x2869=['YYYY-MM-DD\x20HH:mm:ss','util','bluebird','request-promise','path','rimraf','./openchannelInteraction.attributes','exports','define','OpenchannelInteraction','openchannel_interactions','utf8mb4','utf8mb4_unicode_ci','changed','closed','closedAt','format'];(function(_0x348cbe,_0x40aab6){var _0x1b8dd0=function(_0xd372c5){while(--_0xd372c5){_0x348cbe['push'](_0x348cbe['shift']());}};_0x1b8dd0(++_0x40aab6);}(_0x2869,0x199));var _0x9286=function(_0x11f0d7,_0x441c58){_0x11f0d7=_0x11f0d7-0x0;var _0xb86f80=_0x2869[_0x11f0d7];return _0xb86f80;};'use strict';var _=require('lodash');var util=require(_0x9286('0x0'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x9286('0x1'));var rp=require(_0x9286('0x2'));var fs=require('fs');var path=require(_0x9286('0x3'));var rimraf=require(_0x9286('0x4'));var config=require('../../config/environment');var attributes=require(_0x9286('0x5'));module[_0x9286('0x6')]=function(_0xe53cbd,_0x2761ce){return _0xe53cbd[_0x9286('0x7')](_0x9286('0x8'),attributes,{'tableName':_0x9286('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x9286('0xa'),'collate':_0x9286('0xb'),'hooks':{'beforeUpdate':function(_0x52049c,_0x5464ff,_0x615a19){if(_0x52049c[_0x9286('0xc')](_0x9286('0xd'))){_0x52049c[_0x9286('0xe')]=moment()[_0x9286('0xf')](_0x9286('0x10'));}_0x615a19(null,_0x52049c);}}});};
\ No newline at end of file
index f46ca62..a5d5caf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf145=['request','OpenchannelInteraction,\x20%s,\x20%s','request\x20sent','debug','error','code','message','info','result','UpdateOpenchannelInteraction','OpenchannelInteraction','update','body','options','raw','where','attributes','AddTagsToOpenchannelInteraction','then','ids','omit','spread','AddTags','stringify','lodash','util','randomstring','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','./openchannelInteraction.socket','register'];(function(_0x502773,_0xe55d92){var _0x568f34=function(_0x44a7f9){while(--_0x44a7f9){_0x502773['push'](_0x502773['shift']());}};_0x568f34(++_0xe55d92);}(_0xf145,0x8a));var _0x5f14=function(_0x331ce0,_0xe335b9){_0x331ce0=_0x331ce0-0x0;var _0x31c3c7=_0xf145[_0x331ce0];return _0x31c3c7;};'use strict';var _=require(_0x5f14('0x0'));var util=require(_0x5f14('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x5f14('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5f14('0x3'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x5f14('0x4'));var config=require(_0x5f14('0x5'));var jayson=require(_0x5f14('0x6'));var client=jayson[_0x5f14('0x7')][_0x5f14('0x8')]({'port':0x232a});config[_0x5f14('0x9')]=_[_0x5f14('0xa')](config[_0x5f14('0x9')],{'host':_0x5f14('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x5f14('0xc'))[_0x5f14('0xd')](socket);function respondWithRpcPromise(_0x1d9816,_0x247d46,_0x14de75){return new BPromise(function(_0x40ba49,_0x3e337b){return client[_0x5f14('0xe')](_0x1d9816,_0x14de75)['then'](function(_0x55f619){logger['info'](_0x5f14('0xf'),_0x247d46,_0x5f14('0x10'));logger[_0x5f14('0x11')]('OpenchannelInteraction,\x20%s,\x20%s,\x20%s',_0x247d46,_0x5f14('0x10'),JSON['stringify'](_0x55f619));if(_0x55f619[_0x5f14('0x12')]){if(_0x55f619['error'][_0x5f14('0x13')]===0x1f4){logger[_0x5f14('0x12')]('OpenchannelInteraction,\x20%s,\x20%s',_0x247d46,_0x55f619[_0x5f14('0x12')]['message']);return _0x3e337b(_0x55f619['error'][_0x5f14('0x14')]);}logger[_0x5f14('0x12')]('OpenchannelInteraction,\x20%s,\x20%s',_0x247d46,_0x55f619[_0x5f14('0x12')][_0x5f14('0x14')]);return _0x40ba49(_0x55f619[_0x5f14('0x12')]['message']);}else{logger[_0x5f14('0x15')](_0x5f14('0xf'),_0x247d46,_0x5f14('0x10'));_0x40ba49(_0x55f619[_0x5f14('0x16')][_0x5f14('0x14')]);}})['catch'](function(_0x5a476b){logger[_0x5f14('0x12')](_0x5f14('0xf'),_0x247d46,_0x5a476b);_0x3e337b(_0x5a476b);});});}exports[_0x5f14('0x17')]=function(_0x23b8ec){var _0x179bcc=this;return new Promise(function(_0x34b521,_0x1b839f){return db[_0x5f14('0x18')][_0x5f14('0x19')](_0x23b8ec[_0x5f14('0x1a')],{'raw':_0x23b8ec[_0x5f14('0x1b')]?_0x23b8ec[_0x5f14('0x1b')][_0x5f14('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x23b8ec['options']?_0x23b8ec[_0x5f14('0x1b')][_0x5f14('0x1d')]||null:null,'attributes':_0x23b8ec[_0x5f14('0x1b')]?_0x23b8ec[_0x5f14('0x1b')][_0x5f14('0x1e')]||null:null,'limit':_0x23b8ec[_0x5f14('0x1b')]?_0x23b8ec['options']['limit']||null:null})['then'](function(_0xd32bd2){logger[_0x5f14('0x15')](_0x5f14('0x17'),_0x23b8ec);logger[_0x5f14('0x11')](_0x5f14('0x17'),_0x23b8ec,JSON['stringify'](_0xd32bd2));_0x34b521(_0xd32bd2);})['catch'](function(_0x114542){logger[_0x5f14('0x12')](_0x5f14('0x17'),_0x114542['message'],_0x23b8ec);_0x1b839f(_0x179bcc[_0x5f14('0x12')](0x1f4,_0x114542[_0x5f14('0x14')]));});});};exports[_0x5f14('0x1f')]=function(_0x46719){return new Promise(function(_0x484e0a,_0x592697){return db['OpenchannelInteraction']['find']({'where':_0x46719[_0x5f14('0x1b')]?_0x46719[_0x5f14('0x1b')]['where']||null:null})[_0x5f14('0x20')](function(_0x1757d7){if(_0x1757d7){return _0x1757d7['addTags'](_0x46719['body'][_0x5f14('0x21')],_[_0x5f14('0x22')](_0x46719[_0x5f14('0x1a')],[_0x5f14('0x21'),'id'])||{});}})[_0x5f14('0x23')](function(_0x207d8b){logger[_0x5f14('0x15')]('AddTags',_0x46719);logger[_0x5f14('0x11')](_0x5f14('0x24'),_0x46719,JSON[_0x5f14('0x25')](_0x207d8b));_0x484e0a(_0x207d8b);})['catch'](function(_0x1846ff){logger[_0x5f14('0x12')]('AddTags',_0x1846ff[_0x5f14('0x14')],_0x46719);_0x592697(_this['error'](0x1f4,_0x1846ff[_0x5f14('0x14')]));});});};
\ No newline at end of file
+var _0x8cd0=['http','redis','localhost','socket.io-emitter','register','request','info','request\x20sent','debug','error','code','OpenchannelInteraction,\x20%s,\x20%s','message','result','catch','UpdateOpenchannelInteraction','OpenchannelInteraction','update','body','options','raw','where','attributes','limit','then','AddTagsToOpenchannelInteraction','addTags','ids','AddTags','stringify','lodash','util','bluebird','randomstring','../../mysqldb','rpc','../../config/environment'];(function(_0x221206,_0x1a1caf){var _0x24e8f0=function(_0x57f47e){while(--_0x57f47e){_0x221206['push'](_0x221206['shift']());}};_0x24e8f0(++_0x1a1caf);}(_0x8cd0,0x146));var _0x08cd=function(_0x1fd4cb,_0x51be7c){_0x1fd4cb=_0x1fd4cb-0x0;var _0x44f882=_0x8cd0[_0x1fd4cb];return _0x44f882;};'use strict';var _=require(_0x08cd('0x0'));var util=require(_0x08cd('0x1'));var moment=require('moment');var BPromise=require(_0x08cd('0x2'));var rs=require(_0x08cd('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x08cd('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x08cd('0x5'));var config=require(_0x08cd('0x6'));var jayson=require('jayson/promise');var client=jayson['client'][_0x08cd('0x7')]({'port':0x232a});config[_0x08cd('0x8')]=_['defaults'](config[_0x08cd('0x8')],{'host':_0x08cd('0x9'),'port':0x18eb});var socket=require(_0x08cd('0xa'))(new Redis(config['redis']));require('./openchannelInteraction.socket')[_0x08cd('0xb')](socket);function respondWithRpcPromise(_0x384eb4,_0x320673,_0x3771fc){return new BPromise(function(_0x234614,_0x3a5cee){return client[_0x08cd('0xc')](_0x384eb4,_0x3771fc)['then'](function(_0x557dd3){logger[_0x08cd('0xd')]('OpenchannelInteraction,\x20%s,\x20%s',_0x320673,_0x08cd('0xe'));logger[_0x08cd('0xf')]('OpenchannelInteraction,\x20%s,\x20%s,\x20%s',_0x320673,'request\x20sent',JSON['stringify'](_0x557dd3));if(_0x557dd3[_0x08cd('0x10')]){if(_0x557dd3[_0x08cd('0x10')][_0x08cd('0x11')]===0x1f4){logger[_0x08cd('0x10')](_0x08cd('0x12'),_0x320673,_0x557dd3[_0x08cd('0x10')][_0x08cd('0x13')]);return _0x3a5cee(_0x557dd3['error'][_0x08cd('0x13')]);}logger[_0x08cd('0x10')]('OpenchannelInteraction,\x20%s,\x20%s',_0x320673,_0x557dd3['error']['message']);return _0x234614(_0x557dd3[_0x08cd('0x10')][_0x08cd('0x13')]);}else{logger['info'](_0x08cd('0x12'),_0x320673,'request\x20sent');_0x234614(_0x557dd3[_0x08cd('0x14')][_0x08cd('0x13')]);}})[_0x08cd('0x15')](function(_0x50a685){logger['error'](_0x08cd('0x12'),_0x320673,_0x50a685);_0x3a5cee(_0x50a685);});});}exports[_0x08cd('0x16')]=function(_0x41b61f){var _0x35a313=this;return new Promise(function(_0x30a75a,_0x5865ef){return db[_0x08cd('0x17')][_0x08cd('0x18')](_0x41b61f[_0x08cd('0x19')],{'raw':_0x41b61f[_0x08cd('0x1a')]?_0x41b61f[_0x08cd('0x1a')][_0x08cd('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x41b61f[_0x08cd('0x1a')]?_0x41b61f[_0x08cd('0x1a')][_0x08cd('0x1c')]||null:null,'attributes':_0x41b61f[_0x08cd('0x1a')]?_0x41b61f[_0x08cd('0x1a')][_0x08cd('0x1d')]||null:null,'limit':_0x41b61f['options']?_0x41b61f[_0x08cd('0x1a')][_0x08cd('0x1e')]||null:null})[_0x08cd('0x1f')](function(_0x59621f){logger[_0x08cd('0xd')](_0x08cd('0x16'),_0x41b61f);logger[_0x08cd('0xf')]('UpdateOpenchannelInteraction',_0x41b61f,JSON['stringify'](_0x59621f));_0x30a75a(_0x59621f);})[_0x08cd('0x15')](function(_0xd352f5){logger[_0x08cd('0x10')](_0x08cd('0x16'),_0xd352f5[_0x08cd('0x13')],_0x41b61f);_0x5865ef(_0x35a313['error'](0x1f4,_0xd352f5[_0x08cd('0x13')]));});});};exports[_0x08cd('0x20')]=function(_0x3453d7){return new Promise(function(_0x15904f,_0x5aa26d){return db[_0x08cd('0x17')]['find']({'where':_0x3453d7[_0x08cd('0x1a')]?_0x3453d7[_0x08cd('0x1a')][_0x08cd('0x1c')]||null:null})[_0x08cd('0x1f')](function(_0x54ae2f){if(_0x54ae2f){return _0x54ae2f[_0x08cd('0x21')](_0x3453d7[_0x08cd('0x19')][_0x08cd('0x22')],_['omit'](_0x3453d7['body'],[_0x08cd('0x22'),'id'])||{});}})['spread'](function(_0x3ef4fe){logger[_0x08cd('0xd')]('AddTags',_0x3453d7);logger[_0x08cd('0xf')](_0x08cd('0x23'),_0x3453d7,JSON[_0x08cd('0x24')](_0x3ef4fe));_0x15904f(_0x3ef4fe);})[_0x08cd('0x15')](function(_0xec2600){logger[_0x08cd('0x10')](_0x08cd('0x23'),_0xec2600['message'],_0x3453d7);_0x5aa26d(_this[_0x08cd('0x10')](0x1f4,_0xec2600[_0x08cd('0x13')]));});});};
\ No newline at end of file
index 51abd5b..ba577ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e99=['register','length','./openchannelInteraction.events','save','remove','emit','removeListener'];(function(_0x3e995d,_0x5936ba){var _0x13822f=function(_0x4ae0af){while(--_0x4ae0af){_0x3e995d['push'](_0x3e995d['shift']());}};_0x13822f(++_0x5936ba);}(_0x0e99,0x1c2));var _0x90e9=function(_0xa04235,_0x41ada4){_0xa04235=_0xa04235-0x0;var _0x16caff=_0x0e99[_0xa04235];return _0x16caff;};'use strict';var OpenchannelInteractionEvents=require(_0x90e9('0x0'));var events=[_0x90e9('0x1'),_0x90e9('0x2'),'update'];function createListener(_0x24721f,_0x34226f){return function(_0x440da8){_0x34226f[_0x90e9('0x3')](_0x24721f,_0x440da8);};}function removeListener(_0x240b8b,_0x332c90){return function(){OpenchannelInteractionEvents[_0x90e9('0x4')](_0x240b8b,_0x332c90);};}exports[_0x90e9('0x5')]=function(_0x49503c){for(var _0x3485c9=0x0,_0x50e4c2=events[_0x90e9('0x6')];_0x3485c9<_0x50e4c2;_0x3485c9++){var _0xe85eb9=events[_0x3485c9];var _0x54c15f=createListener('openchannelInteraction:'+_0xe85eb9,_0x49503c);OpenchannelInteractionEvents['on'](_0xe85eb9,_0x54c15f);}};
\ No newline at end of file
+var _0x3c70=['save','remove','update','emit','removeListener','register','openchannelInteraction:','./openchannelInteraction.events'];(function(_0xc9b152,_0x39ffaf){var _0x4782bd=function(_0x38225c){while(--_0x38225c){_0xc9b152['push'](_0xc9b152['shift']());}};_0x4782bd(++_0x39ffaf);}(_0x3c70,0x1b7));var _0x03c7=function(_0x433a86,_0x175b5c){_0x433a86=_0x433a86-0x0;var _0x23000c=_0x3c70[_0x433a86];return _0x23000c;};'use strict';var OpenchannelInteractionEvents=require(_0x03c7('0x0'));var events=[_0x03c7('0x1'),_0x03c7('0x2'),_0x03c7('0x3')];function createListener(_0x214c16,_0x45697a){return function(_0x5f57cc){_0x45697a[_0x03c7('0x4')](_0x214c16,_0x5f57cc);};}function removeListener(_0x2c41df,_0x5eab95){return function(){OpenchannelInteractionEvents[_0x03c7('0x5')](_0x2c41df,_0x5eab95);};}exports[_0x03c7('0x6')]=function(_0x24b658){for(var _0x48433b=0x0,_0xb863f4=events['length'];_0x48433b<_0xb863f4;_0x48433b++){var _0x5517f7=events[_0x48433b];var _0x562bef=createListener(_0x03c7('0x7')+_0x5517f7,_0x24b658);OpenchannelInteractionEvents['on'](_0x5517f7,_0x562bef);}};
\ No newline at end of file
index e612369..6a55ead 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x2de020,_0x252df0){var _0x182b7c=function(_0xcbcdaa){while(--_0xcbcdaa){_0x2de020['push'](_0x2de020['shift']());}};_0x182b7c(++_0x252df0);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x30d87a,_0xf3a07f){_0x30d87a=_0x30d87a-0x0;var _0x48f64b=_0xcb91[_0x30d87a];return _0x48f64b;};'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
+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(_0x160c73,_0x2ee678){var _0xd9302=function(_0x169454){while(--_0x169454){_0x160c73['push'](_0x160c73['shift']());}};_0xd9302(++_0x2ee678);}(_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
index 9a63ae4..bb729ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdaa8=['TEXT','medium','STRING','sequelize','exports'];(function(_0x2d0353,_0xb5684d){var _0xdd1c42=function(_0x1a8b04){while(--_0x1a8b04){_0x2d0353['push'](_0x2d0353['shift']());}};_0xdd1c42(++_0xb5684d);}(_0xdaa8,0xe4));var _0x8daa=function(_0xd746bf,_0x40c39d){_0xd746bf=_0xd746bf-0x0;var _0x4618ce=_0xdaa8[_0xd746bf];return _0x4618ce;};'use strict';var Sequelize=require(_0x8daa('0x0'));module[_0x8daa('0x1')]={'body':{'type':Sequelize[_0x8daa('0x2')](_0x8daa('0x3')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in','out'),'defaultValue':'out','allowNull':![]},'readAt':{'type':Sequelize['DATE']},'providerName':{'type':Sequelize[_0x8daa('0x4')]},'providerResponse':{'type':Sequelize[_0x8daa('0x2')]}};
\ No newline at end of file
+var _0xc893=['BOOLEAN','ENUM','out','DATE','STRING','exports','TEXT'];(function(_0x53ee06,_0x23294f){var _0x26a23f=function(_0x2b46e3){while(--_0x2b46e3){_0x53ee06['push'](_0x53ee06['shift']());}};_0x26a23f(++_0x23294f);}(_0xc893,0x194));var _0x3c89=function(_0x3f7561,_0x4b310f){_0x3f7561=_0x3f7561-0x0;var _0x2f1f7a=_0xc893[_0x3f7561];return _0x2f1f7a;};'use strict';var Sequelize=require('sequelize');module[_0x3c89('0x0')]={'body':{'type':Sequelize[_0x3c89('0x1')]('medium'),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'secret':{'type':Sequelize[_0x3c89('0x2')],'defaultValue':![]},'direction':{'type':Sequelize[_0x3c89('0x3')]('in',_0x3c89('0x4')),'defaultValue':_0x3c89('0x4'),'allowNull':![]},'readAt':{'type':Sequelize[_0x3c89('0x5')]},'providerName':{'type':Sequelize[_0x3c89('0x6')]},'providerResponse':{'type':Sequelize[_0x3c89('0x1')]}};
\ No newline at end of file
index 14596a8..fa51a4f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4f3=['merge','map','VIRTUAL','filter','options','includeAll','include','params','fields','find','create','body','describe','../../config/logger','openchannel-interactions','accept','read','readAt','format','UserId','OpenchannelInteraction','OpenchannelInteractionId','isNil','YYYY-MM-DD\x20HH:mm:ss','interaction','[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','stringify','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','contact','User','agent','fullname','email','manual','interface','SIP/%s','channel','event','EventManager','acceptmessage','openchannel','get','[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','SELECT','internal','rejectmessage','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','fs-extra','lodash','crypto','desk.js','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./openchannelMessage.socket','register','jayson/promise','client','http','request','info','request\x20sent','debug','OpenchannelMessage,\x20%s,\x20%s,\x20%s','error','code','OpenchannelMessage,\x20%s,\x20%s','message','result','catch','status','end','json','undefined','limit','count','offset','set','apply','reject','save','update','destroy','then','sendStatus','stack','name','send','index','OpenchannelMessage','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','length','nolimit','order','sort','where','pick'];(function(_0x3fcea2,_0x53a45f){var _0x2e9114=function(_0x1d8180){while(--_0x1d8180){_0x3fcea2['push'](_0x3fcea2['shift']());}};_0x2e9114(++_0x53a45f);}(_0xc4f3,0xbd));var _0x3c4f=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc4f3[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x3c4f('0x0'));var rimraf=require(_0x3c4f('0x1'));var zipdir=require(_0x3c4f('0x2'));var jsonpatch=require(_0x3c4f('0x3'));var rp=require(_0x3c4f('0x4'));var moment=require(_0x3c4f('0x5'));var BPromise=require(_0x3c4f('0x6'));var Mustache=require(_0x3c4f('0x7'));var util=require(_0x3c4f('0x8'));var path=require(_0x3c4f('0x9'));var sox=require('sox');var csv=require(_0x3c4f('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x3c4f('0xb'));var _=require(_0x3c4f('0xc'));var squel=require('squel');var crypto=require(_0x3c4f('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x3c4f('0xe'));var toCsv=require(_0x3c4f('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x3c4f('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x3c4f('0x10'));var as=require(_0x3c4f('0x11'));var hardwareService=require(_0x3c4f('0x12'));var logger=require('../../config/logger')('api');var utils=require(_0x3c4f('0x13'));var config=require(_0x3c4f('0x14'));var licenseUtil=require(_0x3c4f('0x15'));var db=require('../../mysqldb')['db'];config[_0x3c4f('0x16')]=_[_0x3c4f('0x17')](config[_0x3c4f('0x16')],{'host':_0x3c4f('0x18'),'port':0x18eb});var socket=require(_0x3c4f('0x19'))(new Redis(config[_0x3c4f('0x16')]));require(_0x3c4f('0x1a'))[_0x3c4f('0x1b')](socket);var jayson=require(_0x3c4f('0x1c'));var client=jayson[_0x3c4f('0x1d')][_0x3c4f('0x1e')]({'port':0x232c});var client9002=jayson[_0x3c4f('0x1d')]['http']({'port':0x232a});function respondWithRpcPromise(_0x498bb4,_0x5232f4,_0x2c66de,_0x5bf365){return new BPromise(function(_0x4d05e6,_0x432a2c){var _0x7c5c86=_0x5bf365||client;return _0x7c5c86[_0x3c4f('0x1f')](_0x498bb4,_0x2c66de)['then'](function(_0x58f856){logger[_0x3c4f('0x20')]('OpenchannelMessage,\x20%s,\x20%s',_0x5232f4,_0x3c4f('0x21'));logger[_0x3c4f('0x22')](_0x3c4f('0x23'),_0x5232f4,'request\x20sent',JSON['stringify'](_0x58f856));if(_0x58f856[_0x3c4f('0x24')]){if(_0x58f856[_0x3c4f('0x24')][_0x3c4f('0x25')]===0x1f4){logger[_0x3c4f('0x24')](_0x3c4f('0x26'),_0x5232f4,_0x58f856[_0x3c4f('0x24')]['message']);return _0x432a2c(_0x58f856[_0x3c4f('0x24')]['message']);}logger[_0x3c4f('0x24')](_0x3c4f('0x26'),_0x5232f4,_0x58f856[_0x3c4f('0x24')][_0x3c4f('0x27')]);return _0x4d05e6(_0x58f856[_0x3c4f('0x24')][_0x3c4f('0x27')]);}else{logger[_0x3c4f('0x20')](_0x3c4f('0x26'),_0x5232f4,_0x3c4f('0x21'));_0x4d05e6(_0x58f856[_0x3c4f('0x28')][_0x3c4f('0x27')]);}})[_0x3c4f('0x29')](function(_0x3d6cf0){logger[_0x3c4f('0x24')](_0x3c4f('0x26'),_0x5232f4,_0x3d6cf0);_0x432a2c(_0x3d6cf0);});});}function respondWithStatusCode(_0x574fca,_0x1672f0){_0x1672f0=_0x1672f0||0xcc;return function(_0x868260){if(_0x868260){return _0x574fca['sendStatus'](_0x1672f0);}return _0x574fca[_0x3c4f('0x2a')](_0x1672f0)[_0x3c4f('0x2b')]();};}function respondWithResult(_0x2b1504,_0xf5880e){_0xf5880e=_0xf5880e||0xc8;return function(_0x55f042){if(_0x55f042){return _0x2b1504[_0x3c4f('0x2a')](_0xf5880e)[_0x3c4f('0x2c')](_0x55f042);}};}function respondWithFilteredResult(_0x562289,_0x131ca6){return function(_0x5bcf7a){if(_0x5bcf7a){var _0x30f213=typeof _0x131ca6['offset']===_0x3c4f('0x2d')&&typeof _0x131ca6[_0x3c4f('0x2e')]==='undefined';var _0x4fbc18=_0x5bcf7a[_0x3c4f('0x2f')];var _0x1df329=_0x30f213?0x0:_0x131ca6[_0x3c4f('0x30')];var _0x3a3deb=_0x30f213?_0x5bcf7a['count']:_0x131ca6['offset']+_0x131ca6[_0x3c4f('0x2e')];var _0x191c7f;if(_0x3a3deb>=_0x4fbc18){_0x3a3deb=_0x4fbc18;_0x191c7f=0xc8;}else{_0x191c7f=0xce;}_0x562289[_0x3c4f('0x2a')](_0x191c7f);return _0x562289[_0x3c4f('0x31')]('Content-Range',_0x1df329+'-'+_0x3a3deb+'/'+_0x4fbc18)[_0x3c4f('0x2c')](_0x5bcf7a);}return null;};}function patchUpdates(_0x28981c){return function(_0x39a680){try{jsonpatch[_0x3c4f('0x32')](_0x39a680,_0x28981c,!![]);}catch(_0x12f2b9){return BPromise[_0x3c4f('0x33')](_0x12f2b9);}return _0x39a680[_0x3c4f('0x34')]();};}function saveUpdates(_0x302c40,_0x509790){return function(_0x5dbfeb){if(_0x5dbfeb){return _0x5dbfeb[_0x3c4f('0x35')](_0x302c40)['then'](function(_0x182a43){return _0x182a43;});}return null;};}function removeEntity(_0x339d8e,_0x2a173d){return function(_0x4f5042){if(_0x4f5042){return _0x4f5042[_0x3c4f('0x36')]()[_0x3c4f('0x37')](function(){_0x339d8e[_0x3c4f('0x2a')](0xcc)[_0x3c4f('0x2b')]();});}};}function handleEntityNotFound(_0x3b6c08,_0x19867d){return function(_0x157391){if(!_0x157391){_0x3b6c08[_0x3c4f('0x38')](0x194);}return _0x157391;};}function handleError(_0x659b2a,_0x46d9b1){_0x46d9b1=_0x46d9b1||0x1f4;return function(_0x5cdedc){logger['error'](_0x5cdedc[_0x3c4f('0x39')]);if(_0x5cdedc[_0x3c4f('0x3a')]){delete _0x5cdedc[_0x3c4f('0x3a')];}_0x659b2a['status'](_0x46d9b1)[_0x3c4f('0x3b')](_0x5cdedc);};}exports[_0x3c4f('0x3c')]=function(_0x4fadad,_0x1f23de){var _0x322db0={},_0x5c32ec={},_0x2febf9={'count':0x0,'rows':[]};var _0x1a0dc6=_['map'](db[_0x3c4f('0x3d')][_0x3c4f('0x3e')],function(_0x37136a){return{'name':_0x37136a['fieldName'],'type':_0x37136a[_0x3c4f('0x3f')][_0x3c4f('0x40')]};});_0x5c32ec[_0x3c4f('0x41')]=_['map'](_0x1a0dc6,_0x3c4f('0x3a'));_0x5c32ec[_0x3c4f('0x42')]=_[_0x3c4f('0x43')](_0x4fadad[_0x3c4f('0x42')]);_0x5c32ec[_0x3c4f('0x44')]=_[_0x3c4f('0x45')](_0x5c32ec['model'],_0x5c32ec[_0x3c4f('0x42')]);_0x322db0[_0x3c4f('0x46')]=_['intersection'](_0x5c32ec[_0x3c4f('0x41')],qs['fields'](_0x4fadad[_0x3c4f('0x42')]['fields']));_0x322db0[_0x3c4f('0x46')]=_0x322db0[_0x3c4f('0x46')][_0x3c4f('0x47')]?_0x322db0[_0x3c4f('0x46')]:_0x5c32ec[_0x3c4f('0x41')];if(!_0x4fadad[_0x3c4f('0x42')]['hasOwnProperty'](_0x3c4f('0x48'))){_0x322db0[_0x3c4f('0x2e')]=qs['limit'](_0x4fadad[_0x3c4f('0x42')]['limit']);_0x322db0[_0x3c4f('0x30')]=qs[_0x3c4f('0x30')](_0x4fadad['query'][_0x3c4f('0x30')]);}_0x322db0[_0x3c4f('0x49')]=qs['sort'](_0x4fadad[_0x3c4f('0x42')][_0x3c4f('0x4a')]);_0x322db0[_0x3c4f('0x4b')]=qs[_0x3c4f('0x44')](_[_0x3c4f('0x4c')](_0x4fadad[_0x3c4f('0x42')],_0x5c32ec[_0x3c4f('0x44')]),_0x1a0dc6);if(_0x4fadad['query']['filter']){_0x322db0[_0x3c4f('0x4b')]=_[_0x3c4f('0x4d')](_0x322db0[_0x3c4f('0x4b')],{'$or':_[_0x3c4f('0x4e')](_0x1a0dc6,function(_0x5afebd){if(_0x5afebd[_0x3c4f('0x3f')]!==_0x3c4f('0x4f')){var _0x3bb45b={};_0x3bb45b[_0x5afebd[_0x3c4f('0x3a')]]={'$like':'%'+_0x4fadad['query'][_0x3c4f('0x50')]+'%'};return _0x3bb45b;}})});}_0x322db0=_[_0x3c4f('0x4d')]({},_0x322db0,_0x4fadad[_0x3c4f('0x51')]);var _0xcb45e5={'where':_0x322db0[_0x3c4f('0x4b')]};return db['OpenchannelMessage'][_0x3c4f('0x2f')](_0xcb45e5)[_0x3c4f('0x37')](function(_0x22e95b){_0x2febf9[_0x3c4f('0x2f')]=_0x22e95b;if(_0x4fadad[_0x3c4f('0x42')][_0x3c4f('0x52')]){_0x322db0[_0x3c4f('0x53')]=[{'all':!![]}];}return db[_0x3c4f('0x3d')]['findAll'](_0x322db0);})[_0x3c4f('0x37')](function(_0x7f84ea){_0x2febf9['rows']=_0x7f84ea;return _0x2febf9;})[_0x3c4f('0x37')](respondWithFilteredResult(_0x1f23de,_0x322db0))['catch'](handleError(_0x1f23de,null));};exports['show']=function(_0x398242,_0x518c12){var _0x3efa08={'raw':!![],'where':{'id':_0x398242[_0x3c4f('0x54')]['id']}},_0x300654={};_0x300654['model']=_[_0x3c4f('0x43')](db[_0x3c4f('0x3d')][_0x3c4f('0x3e')]);_0x300654[_0x3c4f('0x42')]=_[_0x3c4f('0x43')](_0x398242[_0x3c4f('0x42')]);_0x300654[_0x3c4f('0x44')]=_[_0x3c4f('0x45')](_0x300654[_0x3c4f('0x41')],_0x300654['query']);_0x3efa08[_0x3c4f('0x46')]=_[_0x3c4f('0x45')](_0x300654[_0x3c4f('0x41')],qs['fields'](_0x398242['query'][_0x3c4f('0x55')]));_0x3efa08[_0x3c4f('0x46')]=_0x3efa08[_0x3c4f('0x46')][_0x3c4f('0x47')]?_0x3efa08['attributes']:_0x300654[_0x3c4f('0x41')];if(_0x398242[_0x3c4f('0x42')][_0x3c4f('0x52')]){_0x3efa08[_0x3c4f('0x53')]=[{'all':!![]}];}_0x3efa08=_[_0x3c4f('0x4d')]({},_0x3efa08,_0x398242[_0x3c4f('0x51')]);return db[_0x3c4f('0x3d')][_0x3c4f('0x56')](_0x3efa08)[_0x3c4f('0x37')](handleEntityNotFound(_0x518c12,null))[_0x3c4f('0x37')](respondWithResult(_0x518c12,null))[_0x3c4f('0x29')](handleError(_0x518c12,null));};exports[_0x3c4f('0x57')]=function(_0x585845,_0x1f1714){return db['OpenchannelMessage'][_0x3c4f('0x57')](_0x585845['body'],{})[_0x3c4f('0x37')](respondWithResult(_0x1f1714,0xc9))[_0x3c4f('0x29')](handleError(_0x1f1714,null));};exports[_0x3c4f('0x35')]=function(_0x210171,_0x136ee9){if(_0x210171['body']['id']){delete _0x210171[_0x3c4f('0x58')]['id'];}return db[_0x3c4f('0x3d')][_0x3c4f('0x56')]({'where':{'id':_0x210171[_0x3c4f('0x54')]['id']}})['then'](handleEntityNotFound(_0x136ee9,null))[_0x3c4f('0x37')](saveUpdates(_0x210171[_0x3c4f('0x58')],null))[_0x3c4f('0x37')](respondWithResult(_0x136ee9,null))['catch'](handleError(_0x136ee9,null));};exports[_0x3c4f('0x36')]=function(_0x1840d2,_0x28d06f){return db[_0x3c4f('0x3d')]['find']({'where':{'id':_0x1840d2[_0x3c4f('0x54')]['id']}})[_0x3c4f('0x37')](handleEntityNotFound(_0x28d06f,null))['then'](removeEntity(_0x28d06f,null))[_0x3c4f('0x29')](handleError(_0x28d06f,null));};exports[_0x3c4f('0x59')]=function(_0x4ac35f,_0x46dfc8){return db[_0x3c4f('0x3d')][_0x3c4f('0x59')]()[_0x3c4f('0x37')](respondWithResult(_0x46dfc8,null))['catch'](handleError(_0x46dfc8,null));};var interaction_log=require(_0x3c4f('0x5a'))(_0x3c4f('0x5b'));exports[_0x3c4f('0x5c')]=function(_0x4ab732,_0x294573,_0x3dd543){var _0x54d37c={'agent':{},'channel':'openchannel'};if(_0x4ab732[_0x3c4f('0x58')]['id']){delete _0x4ab732['body']['id'];}_0x4ab732['body'][_0x3c4f('0x5d')]=!![];_0x4ab732[_0x3c4f('0x58')][_0x3c4f('0x5e')]=moment()[_0x3c4f('0x5f')]('YYYY-MM-DD\x20HH:mm:ss');_0x4ab732['body'][_0x3c4f('0x60')]=_0x4ab732[_0x3c4f('0x58')]['UserId']||_0x4ab732['user']['id'];_0x54d37c['agent']['id']=_0x4ab732[_0x3c4f('0x58')][_0x3c4f('0x60')];return db[_0x3c4f('0x3d')]['find']({'where':{'id':_0x4ab732['params']['id'],'UserId':null}})[_0x3c4f('0x37')](handleEntityNotFound(_0x294573,null))['then'](saveUpdates(_0x4ab732['body'],null))[_0x3c4f('0x37')](function(_0x7c44a){if(_0x7c44a){_0x54d37c['message']=_0x7c44a['get']({'plain':!![]});return db[_0x3c4f('0x61')][_0x3c4f('0x56')]({'where':{'id':_0x7c44a[_0x3c4f('0x62')]}});}return null;})[_0x3c4f('0x37')](handleEntityNotFound(_0x294573,null))[_0x3c4f('0x37')](function(_0x104867){if(_0x104867){return _0x104867[_0x3c4f('0x35')]({'UserId':_0x4ab732[_0x3c4f('0x58')][_0x3c4f('0x60')],'read1stAt':_[_0x3c4f('0x63')](_0x104867['read1stAt'])?moment()['format'](_0x3c4f('0x64')):undefined});}return null;})[_0x3c4f('0x37')](function(_0x247c03){if(_0x247c03){_0x54d37c[_0x3c4f('0x65')]=_0x247c03['get']({'plain':!![]});interaction_log[_0x3c4f('0x20')](_0x3c4f('0x66'),_0x4ab732[_0x3c4f('0x67')]['id'],_0x4ab732[_0x3c4f('0x67')]['name'],_0x4ab732[_0x3c4f('0x67')]['role'],_0x54d37c[_0x3c4f('0x65')]['id'],_0x4ab732[_0x3c4f('0x58')]?JSON[_0x3c4f('0x68')](_0x4ab732[_0x3c4f('0x58')]):_0x3c4f('0x69'));return respondWithRpcPromise(_0x3c4f('0x6a'),_0x3c4f('0x6b'),_0x54d37c);}return null;})[_0x3c4f('0x37')](function(_0x17fe45){var _0x18767f=_0x3c4f('0x6c')+_0x17fe45['message'][_0x3c4f('0x6d')];return db[_0x3c4f('0x6e')][_0x3c4f('0x42')](_0x18767f,{'type':db[_0x3c4f('0x6f')][_0x3c4f('0x70')]['SELECT'],'raw':!![]})[_0x3c4f('0x37')](function(_0x3d78c0){return _0x3d78c0;});})[_0x3c4f('0x37')](function(_0x417610){if(_0x417610){_0x54d37c['message'][_0x3c4f('0x71')]=_0x417610[0x0];if(!_0x4ab732[_0x3c4f('0x58')][_0x3c4f('0x60')])return;return db[_0x3c4f('0x72')][_0x3c4f('0x56')]({'where':{'id':_0x4ab732['body'][_0x3c4f('0x60')],'role':_0x3c4f('0x73')},'attributes':['id',_0x3c4f('0x3a'),_0x3c4f('0x74'),_0x3c4f('0x75'),'internal'],'raw':!![]});}return null;})['then'](function(_0x537b1e){if(!_0x537b1e)return null;_0x54d37c[_0x3c4f('0x27')][_0x3c4f('0x73')]=_0x537b1e;return _0x54d37c;})['then'](function(_0x1bbb1d){if(_0x1bbb1d){if(_0x4ab732[_0x3c4f('0x58')][_0x3c4f('0x76')]){_0x54d37c[_0x3c4f('0x27')][_0x3c4f('0x77')]=util[_0x3c4f('0x5f')](_0x3c4f('0x78'),_0x4ab732[_0x3c4f('0x67')][_0x3c4f('0x3a')]);_0x54d37c[_0x3c4f('0x27')]['channel']=_0x54d37c[_0x3c4f('0x79')];_0x54d37c[_0x3c4f('0x27')]['motionChannel']=_0x54d37c['channel'];_0x54d37c[_0x3c4f('0x27')][_0x3c4f('0x7a')]=_0x3c4f('0x5c');return respondWithRpcPromise('EventManager',_0x3c4f('0x7b'),{'event':_0x3c4f('0x7c'),'message':_0x54d37c[_0x3c4f('0x27')]},client9002)[_0x3c4f('0x37')](function(){return _0x54d37c;});}return _0x54d37c;}return null;})[_0x3c4f('0x37')](respondWithResult(_0x294573,null))[_0x3c4f('0x29')](handleError(_0x294573,null));};var interaction_log=require('../../config/logger')(_0x3c4f('0x5b'));exports['reject']=function(_0x2b4191,_0x48470e,_0x7c84de){var _0x201ed1={'agent':{},'channel':_0x3c4f('0x7d')};if(_0x2b4191['body']['id']){delete _0x2b4191[_0x3c4f('0x58')]['id'];}_0x2b4191['body'][_0x3c4f('0x60')]=_0x2b4191[_0x3c4f('0x58')]['UserId']||_0x2b4191[_0x3c4f('0x67')]['id'];_0x201ed1[_0x3c4f('0x73')]['id']=_0x2b4191[_0x3c4f('0x58')][_0x3c4f('0x60')];return db[_0x3c4f('0x3d')][_0x3c4f('0x56')]({'where':{'id':_0x2b4191[_0x3c4f('0x54')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x48470e,null))[_0x3c4f('0x37')](function(_0x1ab7ce){if(_0x1ab7ce){_0x201ed1[_0x3c4f('0x27')]=_0x1ab7ce[_0x3c4f('0x7e')]({'plain':!![]});return db[_0x3c4f('0x61')]['find']({'where':{'id':_0x1ab7ce['OpenchannelInteractionId']}});}return null;})[_0x3c4f('0x37')](handleEntityNotFound(_0x48470e,null))['then'](function(_0x3fe080){if(_0x3fe080){_0x201ed1['interaction']=_0x3fe080[_0x3c4f('0x7e')]({'plain':!![]});interaction_log[_0x3c4f('0x20')](_0x3c4f('0x7f'),_0x2b4191[_0x3c4f('0x67')]['id'],_0x2b4191['user'][_0x3c4f('0x3a')],_0x2b4191[_0x3c4f('0x67')]['role'],_0x201ed1[_0x3c4f('0x65')]['id'],_0x2b4191[_0x3c4f('0x58')]?JSON[_0x3c4f('0x68')](_0x2b4191['body']):'null');return respondWithRpcPromise(_0x3c4f('0x80'),_0x3c4f('0x81'),_0x201ed1);}return null;})['then'](function(_0x53f5d1){var _0x35e737='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x53f5d1[_0x3c4f('0x27')][_0x3c4f('0x6d')];return db[_0x3c4f('0x6e')][_0x3c4f('0x42')](_0x35e737,{'type':db[_0x3c4f('0x6f')][_0x3c4f('0x70')][_0x3c4f('0x82')],'raw':!![]})[_0x3c4f('0x37')](function(_0x199024){return _0x199024;});})[_0x3c4f('0x37')](function(_0x5aa5d8){if(_0x5aa5d8){_0x201ed1[_0x3c4f('0x27')][_0x3c4f('0x71')]=_0x5aa5d8[0x0];if(!_0x2b4191['body'][_0x3c4f('0x60')])return;return db[_0x3c4f('0x72')][_0x3c4f('0x56')]({'where':{'id':_0x2b4191[_0x3c4f('0x58')]['UserId'],'role':_0x3c4f('0x73')},'attributes':['id',_0x3c4f('0x3a'),'fullname','email',_0x3c4f('0x83')],'raw':!![]});}return null;})['then'](function(_0x5e596f){if(!_0x5e596f)return null;_0x201ed1[_0x3c4f('0x27')][_0x3c4f('0x73')]=_0x5e596f;return _0x201ed1;})[_0x3c4f('0x37')](function(_0x2eb508){if(_0x2eb508){_0x2eb508[_0x3c4f('0x27')]['interface']=util[_0x3c4f('0x5f')](_0x3c4f('0x78'),_0x2b4191['user'][_0x3c4f('0x3a')]);_0x2eb508['message'][_0x3c4f('0x79')]=_0x201ed1[_0x3c4f('0x79')];_0x2eb508['message']['motionChannel']=_0x201ed1[_0x3c4f('0x79')];_0x2eb508['message'][_0x3c4f('0x7a')]=_0x3c4f('0x33');respondWithRpcPromise(_0x3c4f('0x7b'),'EventManager',{'event':_0x3c4f('0x84'),'message':_0x2eb508[_0x3c4f('0x27')]},client9002);return _0x201ed1;}return null;})['then'](respondWithResult(_0x48470e,null))[_0x3c4f('0x29')](handleError(_0x48470e,null));};
\ No newline at end of file
+var _0x58bd=['readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','get','OpenchannelInteraction','isNil','read1stAt','interaction','role','null','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','SELECT','contact','User','fullname','email','internal','agent','manual','interface','channel','event','EventManager','openchannel-interactions','OpenchannelInteractionId','[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','SIP/%s','eml-format','rimraf','zip-dir','request-promise','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./openchannelMessage.socket','client','http','request','info','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','OpenchannelMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','sendStatus','status','end','json','undefined','count','offset','limit','set','Content-Range','apply','reject','then','destroy','stack','name','send','map','OpenchannelMessage','rawAttributes','type','key','model','query','filters','intersection','attributes','fields','length','order','where','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','params','keys','create','body','update','find','describe','openchannel'];(function(_0x10506d,_0xf6045c){var _0x50cb9c=function(_0x5434f7){while(--_0x5434f7){_0x10506d['push'](_0x10506d['shift']());}};_0x50cb9c(++_0xf6045c);}(_0x58bd,0x18b));var _0xd58b=function(_0xbb7ac2,_0x461d1b){_0xbb7ac2=_0xbb7ac2-0x0;var _0x5e3e84=_0x58bd[_0xbb7ac2];return _0x5e3e84;};'use strict';var emlformat=require(_0xd58b('0x0'));var rimraf=require(_0xd58b('0x1'));var zipdir=require(_0xd58b('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xd58b('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xd58b('0x4'));var util=require(_0xd58b('0x5'));var path=require(_0xd58b('0x6'));var sox=require(_0xd58b('0x7'));var csv=require(_0xd58b('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xd58b('0x9'));var _=require(_0xd58b('0xa'));var squel=require(_0xd58b('0xb'));var crypto=require(_0xd58b('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xd58b('0xd'));var toCsv=require(_0xd58b('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xd58b('0xe'));var as=require(_0xd58b('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xd58b('0x10'))('api');var utils=require('../../config/utils');var config=require(_0xd58b('0x11'));var licenseUtil=require(_0xd58b('0x12'));var db=require(_0xd58b('0x13'))['db'];config[_0xd58b('0x14')]=_[_0xd58b('0x15')](config['redis'],{'host':_0xd58b('0x16'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xd58b('0x14')]));require(_0xd58b('0x17'))['register'](socket);var jayson=require('jayson/promise');var client=jayson[_0xd58b('0x18')]['http']({'port':0x232c});var client9002=jayson[_0xd58b('0x18')][_0xd58b('0x19')]({'port':0x232a});function respondWithRpcPromise(_0x1c3293,_0x535450,_0x468af6,_0x35a65c){return new BPromise(function(_0x2c1798,_0x5d4446){var _0x4edb51=_0x35a65c||client;return _0x4edb51[_0xd58b('0x1a')](_0x1c3293,_0x468af6)['then'](function(_0xaa1b72){logger[_0xd58b('0x1b')](_0xd58b('0x1c'),_0x535450,_0xd58b('0x1d'));logger['debug'](_0xd58b('0x1e'),_0x535450,'request\x20sent',JSON[_0xd58b('0x1f')](_0xaa1b72));if(_0xaa1b72[_0xd58b('0x20')]){if(_0xaa1b72['error'][_0xd58b('0x21')]===0x1f4){logger[_0xd58b('0x20')]('OpenchannelMessage,\x20%s,\x20%s',_0x535450,_0xaa1b72['error'][_0xd58b('0x22')]);return _0x5d4446(_0xaa1b72[_0xd58b('0x20')][_0xd58b('0x22')]);}logger[_0xd58b('0x20')](_0xd58b('0x1c'),_0x535450,_0xaa1b72[_0xd58b('0x20')][_0xd58b('0x22')]);return _0x2c1798(_0xaa1b72['error'][_0xd58b('0x22')]);}else{logger['info'](_0xd58b('0x1c'),_0x535450,_0xd58b('0x1d'));_0x2c1798(_0xaa1b72['result'][_0xd58b('0x22')]);}})['catch'](function(_0x58c386){logger[_0xd58b('0x20')](_0xd58b('0x1c'),_0x535450,_0x58c386);_0x5d4446(_0x58c386);});});}function respondWithStatusCode(_0x475091,_0x5ea1ba){_0x5ea1ba=_0x5ea1ba||0xcc;return function(_0xef4cad){if(_0xef4cad){return _0x475091[_0xd58b('0x23')](_0x5ea1ba);}return _0x475091[_0xd58b('0x24')](_0x5ea1ba)[_0xd58b('0x25')]();};}function respondWithResult(_0x2dfd84,_0x112564){_0x112564=_0x112564||0xc8;return function(_0x40bf82){if(_0x40bf82){return _0x2dfd84[_0xd58b('0x24')](_0x112564)[_0xd58b('0x26')](_0x40bf82);}};}function respondWithFilteredResult(_0x40d825,_0x1d4c8d){return function(_0x2c5669){if(_0x2c5669){var _0x371ee3=typeof _0x1d4c8d['offset']==='undefined'&&typeof _0x1d4c8d['limit']===_0xd58b('0x27');var _0x3edd60=_0x2c5669[_0xd58b('0x28')];var _0x2f15e9=_0x371ee3?0x0:_0x1d4c8d[_0xd58b('0x29')];var _0x3b1325=_0x371ee3?_0x2c5669[_0xd58b('0x28')]:_0x1d4c8d[_0xd58b('0x29')]+_0x1d4c8d[_0xd58b('0x2a')];var _0x3983d7;if(_0x3b1325>=_0x3edd60){_0x3b1325=_0x3edd60;_0x3983d7=0xc8;}else{_0x3983d7=0xce;}_0x40d825[_0xd58b('0x24')](_0x3983d7);return _0x40d825[_0xd58b('0x2b')](_0xd58b('0x2c'),_0x2f15e9+'-'+_0x3b1325+'/'+_0x3edd60)[_0xd58b('0x26')](_0x2c5669);}return null;};}function patchUpdates(_0x265ad0){return function(_0x173fa4){try{jsonpatch[_0xd58b('0x2d')](_0x173fa4,_0x265ad0,!![]);}catch(_0x523e56){return BPromise[_0xd58b('0x2e')](_0x523e56);}return _0x173fa4['save']();};}function saveUpdates(_0x48a5e8,_0xb38046){return function(_0x44da1b){if(_0x44da1b){return _0x44da1b['update'](_0x48a5e8)[_0xd58b('0x2f')](function(_0x3654a0){return _0x3654a0;});}return null;};}function removeEntity(_0xe2e40,_0x20a825){return function(_0x4ff16c){if(_0x4ff16c){return _0x4ff16c[_0xd58b('0x30')]()[_0xd58b('0x2f')](function(){_0xe2e40[_0xd58b('0x24')](0xcc)[_0xd58b('0x25')]();});}};}function handleEntityNotFound(_0xcd51a1,_0xf14006){return function(_0x46d78c){if(!_0x46d78c){_0xcd51a1['sendStatus'](0x194);}return _0x46d78c;};}function handleError(_0x512118,_0x424f97){_0x424f97=_0x424f97||0x1f4;return function(_0x4a8161){logger['error'](_0x4a8161[_0xd58b('0x31')]);if(_0x4a8161[_0xd58b('0x32')]){delete _0x4a8161[_0xd58b('0x32')];}_0x512118[_0xd58b('0x24')](_0x424f97)[_0xd58b('0x33')](_0x4a8161);};}exports['index']=function(_0x47426f,_0x5d9056){var _0x5d6021={},_0x171c17={},_0x1bbe39={'count':0x0,'rows':[]};var _0x594d57=_[_0xd58b('0x34')](db[_0xd58b('0x35')][_0xd58b('0x36')],function(_0x2d1d14){return{'name':_0x2d1d14['fieldName'],'type':_0x2d1d14[_0xd58b('0x37')][_0xd58b('0x38')]};});_0x171c17[_0xd58b('0x39')]=_['map'](_0x594d57,'name');_0x171c17[_0xd58b('0x3a')]=_['keys'](_0x47426f[_0xd58b('0x3a')]);_0x171c17[_0xd58b('0x3b')]=_[_0xd58b('0x3c')](_0x171c17['model'],_0x171c17[_0xd58b('0x3a')]);_0x5d6021[_0xd58b('0x3d')]=_[_0xd58b('0x3c')](_0x171c17[_0xd58b('0x39')],qs[_0xd58b('0x3e')](_0x47426f[_0xd58b('0x3a')][_0xd58b('0x3e')]));_0x5d6021[_0xd58b('0x3d')]=_0x5d6021[_0xd58b('0x3d')][_0xd58b('0x3f')]?_0x5d6021[_0xd58b('0x3d')]:_0x171c17[_0xd58b('0x39')];if(!_0x47426f[_0xd58b('0x3a')]['hasOwnProperty']('nolimit')){_0x5d6021[_0xd58b('0x2a')]=qs['limit'](_0x47426f['query'][_0xd58b('0x2a')]);_0x5d6021[_0xd58b('0x29')]=qs[_0xd58b('0x29')](_0x47426f[_0xd58b('0x3a')][_0xd58b('0x29')]);}_0x5d6021[_0xd58b('0x40')]=qs['sort'](_0x47426f['query']['sort']);_0x5d6021[_0xd58b('0x41')]=qs['filters'](_[_0xd58b('0x42')](_0x47426f['query'],_0x171c17['filters']),_0x594d57);if(_0x47426f['query']['filter']){_0x5d6021[_0xd58b('0x41')]=_[_0xd58b('0x43')](_0x5d6021['where'],{'$or':_[_0xd58b('0x34')](_0x594d57,function(_0x20afec){if(_0x20afec[_0xd58b('0x37')]!==_0xd58b('0x44')){var _0x16ff47={};_0x16ff47[_0x20afec[_0xd58b('0x32')]]={'$like':'%'+_0x47426f[_0xd58b('0x3a')][_0xd58b('0x45')]+'%'};return _0x16ff47;}})});}_0x5d6021=_[_0xd58b('0x43')]({},_0x5d6021,_0x47426f[_0xd58b('0x46')]);var _0x4be84d={'where':_0x5d6021[_0xd58b('0x41')]};return db[_0xd58b('0x35')][_0xd58b('0x28')](_0x4be84d)['then'](function(_0x17cf1c){_0x1bbe39['count']=_0x17cf1c;if(_0x47426f[_0xd58b('0x3a')][_0xd58b('0x47')]){_0x5d6021[_0xd58b('0x48')]=[{'all':!![]}];}return db[_0xd58b('0x35')][_0xd58b('0x49')](_0x5d6021);})[_0xd58b('0x2f')](function(_0x5bc362){_0x1bbe39[_0xd58b('0x4a')]=_0x5bc362;return _0x1bbe39;})[_0xd58b('0x2f')](respondWithFilteredResult(_0x5d9056,_0x5d6021))[_0xd58b('0x4b')](handleError(_0x5d9056,null));};exports[_0xd58b('0x4c')]=function(_0xbe140f,_0x4b8eb1){var _0xd754fc={'raw':!![],'where':{'id':_0xbe140f[_0xd58b('0x4d')]['id']}},_0x9fc814={};_0x9fc814['model']=_[_0xd58b('0x4e')](db[_0xd58b('0x35')][_0xd58b('0x36')]);_0x9fc814[_0xd58b('0x3a')]=_[_0xd58b('0x4e')](_0xbe140f[_0xd58b('0x3a')]);_0x9fc814[_0xd58b('0x3b')]=_['intersection'](_0x9fc814[_0xd58b('0x39')],_0x9fc814[_0xd58b('0x3a')]);_0xd754fc[_0xd58b('0x3d')]=_['intersection'](_0x9fc814[_0xd58b('0x39')],qs[_0xd58b('0x3e')](_0xbe140f[_0xd58b('0x3a')][_0xd58b('0x3e')]));_0xd754fc['attributes']=_0xd754fc['attributes'][_0xd58b('0x3f')]?_0xd754fc[_0xd58b('0x3d')]:_0x9fc814[_0xd58b('0x39')];if(_0xbe140f['query']['includeAll']){_0xd754fc['include']=[{'all':!![]}];}_0xd754fc=_[_0xd58b('0x43')]({},_0xd754fc,_0xbe140f['options']);return db[_0xd58b('0x35')]['find'](_0xd754fc)['then'](handleEntityNotFound(_0x4b8eb1,null))[_0xd58b('0x2f')](respondWithResult(_0x4b8eb1,null))[_0xd58b('0x4b')](handleError(_0x4b8eb1,null));};exports[_0xd58b('0x4f')]=function(_0xf89822,_0x4c922d){return db[_0xd58b('0x35')]['create'](_0xf89822[_0xd58b('0x50')],{})[_0xd58b('0x2f')](respondWithResult(_0x4c922d,0xc9))[_0xd58b('0x4b')](handleError(_0x4c922d,null));};exports[_0xd58b('0x51')]=function(_0x155b02,_0x5301e5){if(_0x155b02['body']['id']){delete _0x155b02[_0xd58b('0x50')]['id'];}return db[_0xd58b('0x35')][_0xd58b('0x52')]({'where':{'id':_0x155b02[_0xd58b('0x4d')]['id']}})[_0xd58b('0x2f')](handleEntityNotFound(_0x5301e5,null))[_0xd58b('0x2f')](saveUpdates(_0x155b02['body'],null))[_0xd58b('0x2f')](respondWithResult(_0x5301e5,null))[_0xd58b('0x4b')](handleError(_0x5301e5,null));};exports['destroy']=function(_0x42e425,_0x19c7e7){return db[_0xd58b('0x35')][_0xd58b('0x52')]({'where':{'id':_0x42e425[_0xd58b('0x4d')]['id']}})[_0xd58b('0x2f')](handleEntityNotFound(_0x19c7e7,null))[_0xd58b('0x2f')](removeEntity(_0x19c7e7,null))[_0xd58b('0x4b')](handleError(_0x19c7e7,null));};exports[_0xd58b('0x53')]=function(_0x26a698,_0x487d1f){return db[_0xd58b('0x35')][_0xd58b('0x53')]()[_0xd58b('0x2f')](respondWithResult(_0x487d1f,null))[_0xd58b('0x4b')](handleError(_0x487d1f,null));};var interaction_log=require(_0xd58b('0x10'))('openchannel-interactions');exports['accept']=function(_0x45ecbc,_0xdca804,_0x284a5a){var _0x342e07={'agent':{},'channel':_0xd58b('0x54')};if(_0x45ecbc[_0xd58b('0x50')]['id']){delete _0x45ecbc['body']['id'];}_0x45ecbc[_0xd58b('0x50')]['read']=!![];_0x45ecbc[_0xd58b('0x50')][_0xd58b('0x55')]=moment()[_0xd58b('0x56')](_0xd58b('0x57'));_0x45ecbc['body'][_0xd58b('0x58')]=_0x45ecbc[_0xd58b('0x50')][_0xd58b('0x58')]||_0x45ecbc[_0xd58b('0x59')]['id'];_0x342e07['agent']['id']=_0x45ecbc[_0xd58b('0x50')][_0xd58b('0x58')];return db[_0xd58b('0x35')][_0xd58b('0x52')]({'where':{'id':_0x45ecbc[_0xd58b('0x4d')]['id'],'UserId':null}})[_0xd58b('0x2f')](handleEntityNotFound(_0xdca804,null))['then'](saveUpdates(_0x45ecbc[_0xd58b('0x50')],null))[_0xd58b('0x2f')](function(_0x355266){if(_0x355266){_0x342e07[_0xd58b('0x22')]=_0x355266[_0xd58b('0x5a')]({'plain':!![]});return db[_0xd58b('0x5b')]['find']({'where':{'id':_0x355266['OpenchannelInteractionId']}});}return null;})[_0xd58b('0x2f')](handleEntityNotFound(_0xdca804,null))['then'](function(_0xb78546){if(_0xb78546){return _0xb78546[_0xd58b('0x51')]({'UserId':_0x45ecbc['body'][_0xd58b('0x58')],'read1stAt':_[_0xd58b('0x5c')](_0xb78546[_0xd58b('0x5d')])?moment()[_0xd58b('0x56')](_0xd58b('0x57')):undefined});}return null;})['then'](function(_0x3de880){if(_0x3de880){_0x342e07[_0xd58b('0x5e')]=_0x3de880[_0xd58b('0x5a')]({'plain':!![]});interaction_log[_0xd58b('0x1b')]('[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x45ecbc[_0xd58b('0x59')]['id'],_0x45ecbc[_0xd58b('0x59')][_0xd58b('0x32')],_0x45ecbc[_0xd58b('0x59')][_0xd58b('0x5f')],_0x342e07[_0xd58b('0x5e')]['id'],_0x45ecbc[_0xd58b('0x50')]?JSON[_0xd58b('0x1f')](_0x45ecbc['body']):_0xd58b('0x60'));return respondWithRpcPromise('AcceptMessage','acceptMessage',_0x342e07);}return null;})[_0xd58b('0x2f')](function(_0xe47477){var _0x266b6c=_0xd58b('0x61')+_0xe47477[_0xd58b('0x22')][_0xd58b('0x62')];return db[_0xd58b('0x63')][_0xd58b('0x3a')](_0x266b6c,{'type':db[_0xd58b('0x64')][_0xd58b('0x65')][_0xd58b('0x66')],'raw':!![]})['then'](function(_0x592308){return _0x592308;});})[_0xd58b('0x2f')](function(_0x516f2a){if(_0x516f2a){_0x342e07['message'][_0xd58b('0x67')]=_0x516f2a[0x0];if(!_0x45ecbc[_0xd58b('0x50')]['UserId'])return;return db[_0xd58b('0x68')][_0xd58b('0x52')]({'where':{'id':_0x45ecbc[_0xd58b('0x50')]['UserId'],'role':'agent'},'attributes':['id','name',_0xd58b('0x69'),_0xd58b('0x6a'),_0xd58b('0x6b')],'raw':!![]});}return null;})[_0xd58b('0x2f')](function(_0x1a5e0f){if(!_0x1a5e0f)return null;_0x342e07[_0xd58b('0x22')][_0xd58b('0x6c')]=_0x1a5e0f;return _0x342e07;})[_0xd58b('0x2f')](function(_0x596b32){if(_0x596b32){if(_0x45ecbc['body'][_0xd58b('0x6d')]){_0x342e07[_0xd58b('0x22')][_0xd58b('0x6e')]=util[_0xd58b('0x56')]('SIP/%s',_0x45ecbc[_0xd58b('0x59')][_0xd58b('0x32')]);_0x342e07[_0xd58b('0x22')]['channel']=_0x342e07[_0xd58b('0x6f')];_0x342e07[_0xd58b('0x22')]['motionChannel']=_0x342e07[_0xd58b('0x6f')];_0x342e07[_0xd58b('0x22')][_0xd58b('0x70')]='accept';return respondWithRpcPromise(_0xd58b('0x71'),_0xd58b('0x71'),{'event':'acceptmessage','message':_0x342e07[_0xd58b('0x22')]},client9002)['then'](function(){return _0x342e07;});}return _0x342e07;}return null;})[_0xd58b('0x2f')](respondWithResult(_0xdca804,null))['catch'](handleError(_0xdca804,null));};var interaction_log=require(_0xd58b('0x10'))(_0xd58b('0x72'));exports['reject']=function(_0x2a8ef9,_0x13a090,_0x414dc4){var _0x229455={'agent':{},'channel':_0xd58b('0x54')};if(_0x2a8ef9[_0xd58b('0x50')]['id']){delete _0x2a8ef9[_0xd58b('0x50')]['id'];}_0x2a8ef9[_0xd58b('0x50')]['UserId']=_0x2a8ef9[_0xd58b('0x50')][_0xd58b('0x58')]||_0x2a8ef9['user']['id'];_0x229455[_0xd58b('0x6c')]['id']=_0x2a8ef9[_0xd58b('0x50')][_0xd58b('0x58')];return db[_0xd58b('0x35')][_0xd58b('0x52')]({'where':{'id':_0x2a8ef9['params']['id'],'UserId':null}})['then'](handleEntityNotFound(_0x13a090,null))[_0xd58b('0x2f')](function(_0x31404f){if(_0x31404f){_0x229455['message']=_0x31404f[_0xd58b('0x5a')]({'plain':!![]});return db[_0xd58b('0x5b')][_0xd58b('0x52')]({'where':{'id':_0x31404f[_0xd58b('0x73')]}});}return null;})[_0xd58b('0x2f')](handleEntityNotFound(_0x13a090,null))['then'](function(_0x14777e){if(_0x14777e){_0x229455[_0xd58b('0x5e')]=_0x14777e[_0xd58b('0x5a')]({'plain':!![]});interaction_log[_0xd58b('0x1b')](_0xd58b('0x74'),_0x2a8ef9['user']['id'],_0x2a8ef9[_0xd58b('0x59')][_0xd58b('0x32')],_0x2a8ef9[_0xd58b('0x59')][_0xd58b('0x5f')],_0x229455[_0xd58b('0x5e')]['id'],_0x2a8ef9[_0xd58b('0x50')]?JSON['stringify'](_0x2a8ef9[_0xd58b('0x50')]):_0xd58b('0x60'));return respondWithRpcPromise(_0xd58b('0x75'),_0xd58b('0x76'),_0x229455);}return null;})['then'](function(_0x3a6613){var _0x3bfe96='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x3a6613[_0xd58b('0x22')][_0xd58b('0x62')];return db[_0xd58b('0x63')][_0xd58b('0x3a')](_0x3bfe96,{'type':db['Sequelize'][_0xd58b('0x65')][_0xd58b('0x66')],'raw':!![]})[_0xd58b('0x2f')](function(_0x288a7f){return _0x288a7f;});})[_0xd58b('0x2f')](function(_0x20e82d){if(_0x20e82d){_0x229455[_0xd58b('0x22')]['contact']=_0x20e82d[0x0];if(!_0x2a8ef9[_0xd58b('0x50')]['UserId'])return;return db['User'][_0xd58b('0x52')]({'where':{'id':_0x2a8ef9['body'][_0xd58b('0x58')],'role':_0xd58b('0x6c')},'attributes':['id',_0xd58b('0x32'),'fullname',_0xd58b('0x6a'),_0xd58b('0x6b')],'raw':!![]});}return null;})['then'](function(_0x40516a){if(!_0x40516a)return null;_0x229455[_0xd58b('0x22')][_0xd58b('0x6c')]=_0x40516a;return _0x229455;})[_0xd58b('0x2f')](function(_0x368e2f){if(_0x368e2f){_0x368e2f[_0xd58b('0x22')][_0xd58b('0x6e')]=util[_0xd58b('0x56')](_0xd58b('0x77'),_0x2a8ef9[_0xd58b('0x59')][_0xd58b('0x32')]);_0x368e2f['message']['channel']=_0x229455[_0xd58b('0x6f')];_0x368e2f['message']['motionChannel']=_0x229455[_0xd58b('0x6f')];_0x368e2f['message'][_0xd58b('0x70')]=_0xd58b('0x2e');respondWithRpcPromise(_0xd58b('0x71'),_0xd58b('0x71'),{'event':'rejectmessage','message':_0x368e2f[_0xd58b('0x22')]},client9002);return _0x229455;}return null;})[_0xd58b('0x2f')](respondWithResult(_0x13a090,null))['catch'](handleError(_0x13a090,null));};
\ No newline at end of file
index c23699c..a520730 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac94=['OpenchannelMessage','setMaxListeners','save','hasOwnProperty','hook','exports','events'];(function(_0x545ac5,_0x5da192){var _0x13c202=function(_0x4e87fc){while(--_0x4e87fc){_0x545ac5['push'](_0x545ac5['shift']());}};_0x13c202(++_0x5da192);}(_0xac94,0x164));var _0x4ac9=function(_0x5b2224,_0x5f4146){_0x5b2224=_0x5b2224-0x0;var _0x4f7b51=_0xac94[_0x5b2224];return _0x4f7b51;};'use strict';var EventEmitter=require(_0x4ac9('0x0'));var OpenchannelMessage=require('../../mysqldb')['db'][_0x4ac9('0x1')];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents[_0x4ac9('0x2')](0x0);var events={'afterCreate':_0x4ac9('0x3'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x3e6eae){return function(_0x2ca902,_0x16aaca,_0xe398ef){OpenchannelMessageEvents['emit'](_0x3e6eae+':'+_0x2ca902['id'],_0x2ca902);OpenchannelMessageEvents['emit'](_0x3e6eae,_0x2ca902);_0xe398ef(null);};}for(var e in events){if(events[_0x4ac9('0x4')](e)){var event=events[e];OpenchannelMessage[_0x4ac9('0x5')](e,emitEvent(event));}}module[_0x4ac9('0x6')]=OpenchannelMessageEvents;
\ No newline at end of file
+var _0x8d9b=['emit','hasOwnProperty','hook','exports','events','setMaxListeners','update','remove'];(function(_0x3507ea,_0x2b486f){var _0x5ec78c=function(_0x14b29c){while(--_0x14b29c){_0x3507ea['push'](_0x3507ea['shift']());}};_0x5ec78c(++_0x2b486f);}(_0x8d9b,0x8c));var _0xb8d9=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x8d9b[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require(_0xb8d9('0x0'));var OpenchannelMessage=require('../../mysqldb')['db']['OpenchannelMessage'];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents[_0xb8d9('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':_0xb8d9('0x2'),'afterDestroy':_0xb8d9('0x3')};function emitEvent(_0x356453){return function(_0x31636e,_0x1028a5,_0x4c0a38){OpenchannelMessageEvents[_0xb8d9('0x4')](_0x356453+':'+_0x31636e['id'],_0x31636e);OpenchannelMessageEvents[_0xb8d9('0x4')](_0x356453,_0x31636e);_0x4c0a38(null);};}for(var e in events){if(events[_0xb8d9('0x5')](e)){var event=events[e];OpenchannelMessage[_0xb8d9('0x6')](e,emitEvent(event));}}module[_0xb8d9('0x7')]=OpenchannelMessageEvents;
\ No newline at end of file
index 8f0c06b..e083003 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x125d=['then','createdAt','error','secret','CmContact','describe','OpenchannelAccount','find','OpenchannelAccountId','Interactions','Contact','keys','replyUri','OpenchannelMessage,\x20%s,\x20%s','afterCreate','format','Forwarding\x20message\x20%d\x20to\x20%s','length','Interaction','POST','method','Message\x20%d\x20forwarded\x20to\x20%s','threadId','update','catch','inspect','finally','utf8mb4','utf8mb4_unicode_ci','util','api','bluebird','request-promise','rimraf','../../config/environment','./openchannelMessage.attributes','exports','openchannel_messages','fti_openchannel_messages','body','models','get','direction','toLowerCase','out','isNil','UserId','OpenchannelInteraction','findOne','OpenchannelInteractionId'];(function(_0x5d52d1,_0x2453e1){var _0x5877d4=function(_0x44d222){while(--_0x44d222){_0x5d52d1['push'](_0x5d52d1['shift']());}};_0x5877d4(++_0x2453e1);}(_0x125d,0x149));var _0xd125=function(_0x2b35a0,_0xf65192){_0x2b35a0=_0x2b35a0-0x0;var _0x4ad14a=_0x125d[_0x2b35a0];return _0x4ad14a;};'use strict';var _=require('lodash');var util=require(_0xd125('0x0'));var logger=require('../../config/logger')(_0xd125('0x1'));var moment=require('moment');var BPromise=require(_0xd125('0x2'));var rp=require(_0xd125('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xd125('0x4'));var config=require(_0xd125('0x5'));var attributes=require(_0xd125('0x6'));module[_0xd125('0x7')]=function(_0x3dee70,_0x4bb711){return _0x3dee70['define']('OpenchannelMessage',attributes,{'tableName':_0xd125('0x8'),'paranoid':![],'indexes':[{'name':_0xd125('0x9'),'fields':[_0xd125('0xa')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x36fb55,_0x3c953e,_0x4d64f7){var _0x1a9e6b=_0x3dee70[_0xd125('0xb')];var _0x24e992=_0x36fb55[_0xd125('0xc')]({'plain':!![]});if(_0x24e992[_0xd125('0xd')][_0xd125('0xe')]()==='in'||_0x24e992[_0xd125('0xd')]['toLowerCase']()===_0xd125('0xf')&&!_0x24e992['secret']&&!_[_0xd125('0x10')](_0x24e992[_0xd125('0x11')])){_0x1a9e6b[_0xd125('0x12')][_0xd125('0x13')]({'where':{'id':_0x24e992[_0xd125('0x14')]}})[_0xd125('0x15')](function(_0x59fadb){if(_0x59fadb){_0x59fadb['update']({'lastMsgAt':_0x24e992[_0xd125('0x16')],'lastMsgDirection':_0x24e992[_0xd125('0xd')]['toLowerCase']()});}})['catch'](function(_0x1b2338){console[_0xd125('0x17')](_0x1b2338);});}if(_0x24e992[_0xd125('0xd')]===_0xd125('0xf')&&!_0x24e992[_0xd125('0x18')]){var _0x538466;_0x1a9e6b[_0xd125('0x19')][_0xd125('0x1a')]()[_0xd125('0x15')](function(_0x28485a){return _0x1a9e6b[_0xd125('0x1b')][_0xd125('0x1c')]({'where':{'id':_0x24e992[_0xd125('0x1d')]},'include':[{'model':_0x1a9e6b[_0xd125('0x12')],'as':_0xd125('0x1e'),'where':{'id':_0x24e992[_0xd125('0x14')]},'limit':0x1,'include':[{'model':_0x1a9e6b[_0xd125('0x19')],'as':_0xd125('0x1f'),'attributes':_[_0xd125('0x20')](_0x28485a)}]}]});})['then'](function(_0xb12707){_0x538466=_0xb12707[_0xd125('0xc')]({'plain':!![]});if(_0x538466&&_0x538466[_0xd125('0x21')]){logger['info'](_0xd125('0x22'),_0xd125('0x23'),util[_0xd125('0x24')](_0xd125('0x25'),_0x24e992['id'],_0x538466[_0xd125('0x21')]));if(_0x538466[_0xd125('0x1e')]&&_0x538466[_0xd125('0x1e')][_0xd125('0x26')]){_0x24e992[_0xd125('0x27')]=_['omit'](_0x538466['Interactions'][0x0],_0xd125('0x1f'));_0x24e992[_0xd125('0x1f')]=_0x538466['Interactions'][0x0]['Contact'];}var _0x3c953e={'method':_0xd125('0x28'),'uri':encodeURI(_0x538466['replyUri']),'json':!![],'resolveWithFullResponse':!![]};switch(_0x3c953e[_0xd125('0x29')]){case'GET':_0x3c953e['qs']=_0x24e992;break;case _0xd125('0x28'):_0x3c953e[_0xd125('0xa')]=_0x24e992;break;}return rp(_0x3c953e)[_0xd125('0x15')](function(_0x278548){logger['info'](_0xd125('0x22'),_0xd125('0x23'),util[_0xd125('0x24')](_0xd125('0x2a'),_0x24e992['id'],_0x538466[_0xd125('0x21')]));if(_0x278548[_0xd125('0xa')][_0xd125('0x2b')]&&_0x278548['body'][_0xd125('0x2b')]!=_0x24e992[_0xd125('0x27')][_0xd125('0x2b')]){return _0x1a9e6b[_0xd125('0x12')]['update']({'threadId':_0x278548['body'][_0xd125('0x2b')]},{'where':{'id':_0x24e992[_0xd125('0x27')]['id']}});}else{return;}})[_0xd125('0x15')](function(){return _0x36fb55[_0xd125('0x2c')]({'read':!![]});})[_0xd125('0x2d')](function(_0x21a75c){logger[_0xd125('0x17')](_0xd125('0x22'),_0xd125('0x23'),util[_0xd125('0x2e')](_0x21a75c,{'showHidden':![],'depth':null}));_0x4d64f7();});}else{_0x4d64f7();}})[_0xd125('0x2f')](function(){_0x4d64f7();});}else{_0x4d64f7();}}},'charset':_0xd125('0x30'),'collate':_0xd125('0x31')});};
\ No newline at end of file
+var _0x26a3=['Contact','keys','replyUri','info','OpenchannelMessage,\x20%s,\x20%s','Forwarding\x20message\x20%d\x20to\x20%s','length','Interaction','omit','POST','method','GET','format','threadId','update','inspect','finally','utf8mb4','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./openchannelMessage.attributes','exports','define','OpenchannelMessage','openchannel_messages','fti_openchannel_messages','body','FULLTEXT','models','get','direction','toLowerCase','out','secret','isNil','UserId','OpenchannelInteraction','then','createdAt','catch','error','CmContact','describe','OpenchannelAccount','find','OpenchannelAccountId','Interactions','OpenchannelInteractionId'];(function(_0x18b344,_0x271f68){var _0x5ef6bb=function(_0x3345b3){while(--_0x3345b3){_0x18b344['push'](_0x18b344['shift']());}};_0x5ef6bb(++_0x271f68);}(_0x26a3,0x193));var _0x326a=function(_0x46c402,_0x3f10da){_0x46c402=_0x46c402-0x0;var _0x5153fa=_0x26a3[_0x46c402];return _0x5153fa;};'use strict';var _=require(_0x326a('0x0'));var util=require(_0x326a('0x1'));var logger=require(_0x326a('0x2'))(_0x326a('0x3'));var moment=require(_0x326a('0x4'));var BPromise=require(_0x326a('0x5'));var rp=require(_0x326a('0x6'));var fs=require('fs');var path=require(_0x326a('0x7'));var rimraf=require('rimraf');var config=require(_0x326a('0x8'));var attributes=require(_0x326a('0x9'));module[_0x326a('0xa')]=function(_0x368114,_0x34fa16){return _0x368114[_0x326a('0xb')](_0x326a('0xc'),attributes,{'tableName':_0x326a('0xd'),'paranoid':![],'indexes':[{'name':_0x326a('0xe'),'fields':[_0x326a('0xf')],'type':_0x326a('0x10')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x34057d,_0xc4f832,_0x5d824f){var _0x4e6b2d=_0x368114[_0x326a('0x11')];var _0x5c74c2=_0x34057d[_0x326a('0x12')]({'plain':!![]});if(_0x5c74c2[_0x326a('0x13')]['toLowerCase']()==='in'||_0x5c74c2['direction'][_0x326a('0x14')]()===_0x326a('0x15')&&!_0x5c74c2[_0x326a('0x16')]&&!_[_0x326a('0x17')](_0x5c74c2[_0x326a('0x18')])){_0x4e6b2d[_0x326a('0x19')]['findOne']({'where':{'id':_0x5c74c2['OpenchannelInteractionId']}})[_0x326a('0x1a')](function(_0x36964b){if(_0x36964b){_0x36964b['update']({'lastMsgAt':_0x5c74c2[_0x326a('0x1b')],'lastMsgDirection':_0x5c74c2['direction'][_0x326a('0x14')]()});}})[_0x326a('0x1c')](function(_0x527671){console[_0x326a('0x1d')](_0x527671);});}if(_0x5c74c2['direction']===_0x326a('0x15')&&!_0x5c74c2['secret']){var _0x2ea7bc;_0x4e6b2d[_0x326a('0x1e')][_0x326a('0x1f')]()[_0x326a('0x1a')](function(_0x288cde){return _0x4e6b2d[_0x326a('0x20')][_0x326a('0x21')]({'where':{'id':_0x5c74c2[_0x326a('0x22')]},'include':[{'model':_0x4e6b2d[_0x326a('0x19')],'as':_0x326a('0x23'),'where':{'id':_0x5c74c2[_0x326a('0x24')]},'limit':0x1,'include':[{'model':_0x4e6b2d[_0x326a('0x1e')],'as':_0x326a('0x25'),'attributes':_[_0x326a('0x26')](_0x288cde)}]}]});})[_0x326a('0x1a')](function(_0x3cd6b6){_0x2ea7bc=_0x3cd6b6[_0x326a('0x12')]({'plain':!![]});if(_0x2ea7bc&&_0x2ea7bc[_0x326a('0x27')]){logger[_0x326a('0x28')](_0x326a('0x29'),'afterCreate',util['format'](_0x326a('0x2a'),_0x5c74c2['id'],_0x2ea7bc[_0x326a('0x27')]));if(_0x2ea7bc['Interactions']&&_0x2ea7bc[_0x326a('0x23')][_0x326a('0x2b')]){_0x5c74c2[_0x326a('0x2c')]=_[_0x326a('0x2d')](_0x2ea7bc[_0x326a('0x23')][0x0],_0x326a('0x25'));_0x5c74c2[_0x326a('0x25')]=_0x2ea7bc[_0x326a('0x23')][0x0][_0x326a('0x25')];}var _0xc4f832={'method':_0x326a('0x2e'),'uri':encodeURI(_0x2ea7bc[_0x326a('0x27')]),'json':!![],'resolveWithFullResponse':!![]};switch(_0xc4f832[_0x326a('0x2f')]){case _0x326a('0x30'):_0xc4f832['qs']=_0x5c74c2;break;case _0x326a('0x2e'):_0xc4f832[_0x326a('0xf')]=_0x5c74c2;break;}return rp(_0xc4f832)[_0x326a('0x1a')](function(_0x48c864){logger[_0x326a('0x28')]('OpenchannelMessage,\x20%s,\x20%s','afterCreate',util[_0x326a('0x31')]('Message\x20%d\x20forwarded\x20to\x20%s',_0x5c74c2['id'],_0x2ea7bc[_0x326a('0x27')]));if(_0x48c864['body'][_0x326a('0x32')]&&_0x48c864['body'][_0x326a('0x32')]!=_0x5c74c2['Interaction']['threadId']){return _0x4e6b2d[_0x326a('0x19')][_0x326a('0x33')]({'threadId':_0x48c864[_0x326a('0xf')][_0x326a('0x32')]},{'where':{'id':_0x5c74c2['Interaction']['id']}});}else{return;}})[_0x326a('0x1a')](function(){return _0x34057d['update']({'read':!![]});})['catch'](function(_0xbad52b){logger['error'](_0x326a('0x29'),'afterCreate',util[_0x326a('0x34')](_0xbad52b,{'showHidden':![],'depth':null}));_0x5d824f();});}else{_0x5d824f();}})[_0x326a('0x35')](function(){_0x5d824f();});}else{_0x5d824f();}}},'charset':_0x326a('0x36'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index f081229..4208080 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1261=['../../config/utils','../../config/logger','rpc','../../config/environment','http','redis','localhost','socket.io-emitter','./openchannelMessage.socket','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','debug','OpenchannelMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch','OpenchannelMessage','options','raw','then','CreateOpenchannelMessage','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x250d91,_0x423b8a){var _0x155861=function(_0x10340c){while(--_0x10340c){_0x250d91['push'](_0x250d91['shift']());}};_0x155861(++_0x423b8a);}(_0x1261,0x144));var _0x1126=function(_0x378891,_0x4e3e16){_0x378891=_0x378891-0x0;var _0xfbfda2=_0x1261[_0x378891];return _0xfbfda2;};'use strict';var _=require('lodash');var util=require(_0x1126('0x0'));var moment=require(_0x1126('0x1'));var BPromise=require(_0x1126('0x2'));var rs=require(_0x1126('0x3'));var fs=require('fs');var Redis=require(_0x1126('0x4'));var db=require(_0x1126('0x5'))['db'];var utils=require(_0x1126('0x6'));var logger=require(_0x1126('0x7'))(_0x1126('0x8'));var config=require(_0x1126('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x1126('0xa')]({'port':0x232a});config[_0x1126('0xb')]=_['defaults'](config[_0x1126('0xb')],{'host':_0x1126('0xc'),'port':0x18eb});var socket=require(_0x1126('0xd'))(new Redis(config[_0x1126('0xb')]));require(_0x1126('0xe'))['register'](socket);function respondWithRpcPromise(_0x3f09ac,_0x18dbe6,_0x167ef1){return new BPromise(function(_0x5e72e2,_0x34571c){return client['request'](_0x3f09ac,_0x167ef1)['then'](function(_0x15c071){logger['info'](_0x1126('0xf'),_0x18dbe6,_0x1126('0x10'));logger[_0x1126('0x11')](_0x1126('0x12'),_0x18dbe6,_0x1126('0x10'),JSON[_0x1126('0x13')](_0x15c071));if(_0x15c071[_0x1126('0x14')]){if(_0x15c071[_0x1126('0x14')][_0x1126('0x15')]===0x1f4){logger['error']('OpenchannelMessage,\x20%s,\x20%s',_0x18dbe6,_0x15c071[_0x1126('0x14')][_0x1126('0x16')]);return _0x34571c(_0x15c071[_0x1126('0x14')]['message']);}logger[_0x1126('0x14')]('OpenchannelMessage,\x20%s,\x20%s',_0x18dbe6,_0x15c071[_0x1126('0x14')][_0x1126('0x16')]);return _0x5e72e2(_0x15c071[_0x1126('0x14')]['message']);}else{logger[_0x1126('0x17')](_0x1126('0xf'),_0x18dbe6,'request\x20sent');_0x5e72e2(_0x15c071['result'][_0x1126('0x16')]);}})[_0x1126('0x18')](function(_0x58d11a){logger['error'](_0x1126('0xf'),_0x18dbe6,_0x58d11a);_0x34571c(_0x58d11a);});});}exports['CreateOpenchannelMessage']=function(_0x22ed37){var _0x1d6d19=this;return new Promise(function(_0x2f70ac,_0x54400a){return db[_0x1126('0x19')]['create'](_0x22ed37['body'],{'raw':_0x22ed37[_0x1126('0x1a')]?_0x22ed37[_0x1126('0x1a')][_0x1126('0x1b')]===undefined?!![]:![]:!![]})[_0x1126('0x1c')](function(_0x526ca1){logger[_0x1126('0x17')](_0x1126('0x1d'),_0x22ed37);logger['debug'](_0x1126('0x1d'),_0x22ed37,JSON['stringify'](_0x526ca1));_0x2f70ac(_0x526ca1);})['catch'](function(_0x4b57ab){logger[_0x1126('0x14')](_0x1126('0x1d'),_0x4b57ab[_0x1126('0x16')],_0x22ed37);_0x54400a(_0x1d6d19[_0x1126('0x14')](0x1f4,_0x4b57ab[_0x1126('0x16')]));});});};
\ No newline at end of file
+var _0xdb28=['then','info','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','debug','OpenchannelMessage,\x20%s,\x20%s,\x20%s','error','code','message','result','CreateOpenchannelMessage','OpenchannelMessage','create','body','options','raw','stringify','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','defaults','redis','localhost','socket.io-emitter','./openchannelMessage.socket','register','request'];(function(_0x16360c,_0x37c098){var _0x17dd2d=function(_0x32b306){while(--_0x32b306){_0x16360c['push'](_0x16360c['shift']());}};_0x17dd2d(++_0x37c098);}(_0xdb28,0x106));var _0x8db2=function(_0xb28ab6,_0x4f4797){_0xb28ab6=_0xb28ab6-0x0;var _0x33f914=_0xdb28[_0xb28ab6];return _0x33f914;};'use strict';var _=require(_0x8db2('0x0'));var util=require(_0x8db2('0x1'));var moment=require(_0x8db2('0x2'));var BPromise=require(_0x8db2('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8db2('0x4'));var db=require(_0x8db2('0x5'))['db'];var utils=require(_0x8db2('0x6'));var logger=require(_0x8db2('0x7'))(_0x8db2('0x8'));var config=require('../../config/environment');var jayson=require(_0x8db2('0x9'));var client=jayson[_0x8db2('0xa')]['http']({'port':0x232a});config['redis']=_[_0x8db2('0xb')](config[_0x8db2('0xc')],{'host':_0x8db2('0xd'),'port':0x18eb});var socket=require(_0x8db2('0xe'))(new Redis(config[_0x8db2('0xc')]));require(_0x8db2('0xf'))[_0x8db2('0x10')](socket);function respondWithRpcPromise(_0x4ba340,_0x30dc90,_0x476216){return new BPromise(function(_0x1f62af,_0x57015f){return client[_0x8db2('0x11')](_0x4ba340,_0x476216)[_0x8db2('0x12')](function(_0x576475){logger[_0x8db2('0x13')](_0x8db2('0x14'),_0x30dc90,_0x8db2('0x15'));logger[_0x8db2('0x16')](_0x8db2('0x17'),_0x30dc90,'request\x20sent',JSON['stringify'](_0x576475));if(_0x576475[_0x8db2('0x18')]){if(_0x576475[_0x8db2('0x18')][_0x8db2('0x19')]===0x1f4){logger[_0x8db2('0x18')](_0x8db2('0x14'),_0x30dc90,_0x576475[_0x8db2('0x18')][_0x8db2('0x1a')]);return _0x57015f(_0x576475[_0x8db2('0x18')][_0x8db2('0x1a')]);}logger[_0x8db2('0x18')]('OpenchannelMessage,\x20%s,\x20%s',_0x30dc90,_0x576475[_0x8db2('0x18')][_0x8db2('0x1a')]);return _0x1f62af(_0x576475['error'][_0x8db2('0x1a')]);}else{logger[_0x8db2('0x13')](_0x8db2('0x14'),_0x30dc90,_0x8db2('0x15'));_0x1f62af(_0x576475[_0x8db2('0x1b')][_0x8db2('0x1a')]);}})['catch'](function(_0x5df464){logger[_0x8db2('0x18')](_0x8db2('0x14'),_0x30dc90,_0x5df464);_0x57015f(_0x5df464);});});}exports[_0x8db2('0x1c')]=function(_0x1b64e4){var _0x58562e=this;return new Promise(function(_0x431d60,_0x36a9ff){return db[_0x8db2('0x1d')][_0x8db2('0x1e')](_0x1b64e4[_0x8db2('0x1f')],{'raw':_0x1b64e4['options']?_0x1b64e4[_0x8db2('0x20')][_0x8db2('0x21')]===undefined?!![]:![]:!![]})[_0x8db2('0x12')](function(_0x125be2){logger[_0x8db2('0x13')](_0x8db2('0x1c'),_0x1b64e4);logger[_0x8db2('0x16')]('CreateOpenchannelMessage',_0x1b64e4,JSON[_0x8db2('0x22')](_0x125be2));_0x431d60(_0x125be2);})['catch'](function(_0x5725f0){logger['error']('CreateOpenchannelMessage',_0x5725f0[_0x8db2('0x1a')],_0x1b64e4);_0x36a9ff(_0x58562e[_0x8db2('0x18')](0x1f4,_0x5725f0[_0x8db2('0x1a')]));});});};
\ No newline at end of file
index e1d217f..0b42a4b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x93bb=['update','emit','register','length','openchannelMessage:','./openchannelMessage.events','save','remove'];(function(_0x32b27e,_0x39c1de){var _0x11ed70=function(_0x394eb9){while(--_0x394eb9){_0x32b27e['push'](_0x32b27e['shift']());}};_0x11ed70(++_0x39c1de);}(_0x93bb,0x135));var _0xb93b=function(_0x114510,_0x1165d9){_0x114510=_0x114510-0x0;var _0x5913f8=_0x93bb[_0x114510];return _0x5913f8;};'use strict';var OpenchannelMessageEvents=require(_0xb93b('0x0'));var events=[_0xb93b('0x1'),_0xb93b('0x2'),_0xb93b('0x3')];function createListener(_0xef52ba,_0x9b62ab){return function(_0x3ae317){_0x9b62ab[_0xb93b('0x4')](_0xef52ba,_0x3ae317);};}function removeListener(_0x3eb285,_0x355196){return function(){OpenchannelMessageEvents['removeListener'](_0x3eb285,_0x355196);};}exports[_0xb93b('0x5')]=function(_0x1ec4dd){for(var _0x4e89c7=0x0,_0x3c4dcf=events[_0xb93b('0x6')];_0x4e89c7<_0x3c4dcf;_0x4e89c7++){var _0x516b0b=events[_0x4e89c7];var _0x35c135=createListener(_0xb93b('0x7')+_0x516b0b,_0x1ec4dd);OpenchannelMessageEvents['on'](_0x516b0b,_0x35c135);}};
\ No newline at end of file
+var _0xeda8=['openchannelMessage:','./openchannelMessage.events','save','update','emit','removeListener','register'];(function(_0xf80b3,_0x25d5f3){var _0x10c489=function(_0x3c5aee){while(--_0x3c5aee){_0xf80b3['push'](_0xf80b3['shift']());}};_0x10c489(++_0x25d5f3);}(_0xeda8,0x104));var _0x8eda=function(_0x26d433,_0x14f7c8){_0x26d433=_0x26d433-0x0;var _0xc19eee=_0xeda8[_0x26d433];return _0xc19eee;};'use strict';var OpenchannelMessageEvents=require(_0x8eda('0x0'));var events=[_0x8eda('0x1'),'remove',_0x8eda('0x2')];function createListener(_0xd8b5d5,_0x2090a2){return function(_0xc01211){_0x2090a2[_0x8eda('0x3')](_0xd8b5d5,_0xc01211);};}function removeListener(_0x94b83f,_0x25b19a){return function(){OpenchannelMessageEvents[_0x8eda('0x4')](_0x94b83f,_0x25b19a);};}exports[_0x8eda('0x5')]=function(_0x1f3556){for(var _0x349361=0x0,_0x32abe8=events['length'];_0x349361<_0x32abe8;_0x349361++){var _0x28b721=events[_0x349361];var _0x1b6a1d=createListener(_0x8eda('0x6')+_0x28b721,_0x1f3556);OpenchannelMessageEvents['on'](_0x28b721,_0x1b6a1d);}};
\ No newline at end of file
index 3bcd8cc..6741e2b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3b65=['show','/:id/members','getMembers','/:id/teams','/:id/users','create','post','addTeams','addAgents','put','update','delete','removeTeams','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../config/environment','get','isAuthenticated','/describe','describe','/:id'];(function(_0xb791ab,_0x1052fe){var _0x538832=function(_0x1026db){while(--_0x1026db){_0xb791ab['push'](_0xb791ab['shift']());}};_0x538832(++_0x1052fe);}(_0x3b65,0x1a3));var _0x53b6=function(_0xf6c699,_0x41ead6){_0xf6c699=_0xf6c699-0x0;var _0x46fbef=_0x3b65[_0xf6c699];return _0x46fbef;};'use strict';var multer=require(_0x53b6('0x0'));var util=require(_0x53b6('0x1'));var path=require(_0x53b6('0x2'));var timeout=require(_0x53b6('0x3'));var express=require(_0x53b6('0x4'));var router=express[_0x53b6('0x5')]();var fs_extra=require(_0x53b6('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x53b6('0x7'));var controller=require('./openchannelQueue.controller');router[_0x53b6('0x8')]('/',auth[_0x53b6('0x9')](),controller['index']);router[_0x53b6('0x8')](_0x53b6('0xa'),auth[_0x53b6('0x9')](),controller[_0x53b6('0xb')]);router[_0x53b6('0x8')](_0x53b6('0xc'),auth[_0x53b6('0x9')](),controller[_0x53b6('0xd')]);router[_0x53b6('0x8')](_0x53b6('0xe'),auth[_0x53b6('0x9')](),controller[_0x53b6('0xf')]);router[_0x53b6('0x8')](_0x53b6('0x10'),auth['isAuthenticated'](),controller['getTeams']);router['get'](_0x53b6('0x11'),auth[_0x53b6('0x9')](),controller['getAgents']);router['post']('/',auth['isAuthenticated'](),controller[_0x53b6('0x12')]);router[_0x53b6('0x13')](_0x53b6('0x10'),auth[_0x53b6('0x9')](),controller[_0x53b6('0x14')]);router['post']('/:id/users',auth[_0x53b6('0x9')](),controller[_0x53b6('0x15')]);router[_0x53b6('0x16')](_0x53b6('0xc'),auth['isAuthenticated'](),controller[_0x53b6('0x17')]);router[_0x53b6('0x18')](_0x53b6('0xc'),auth[_0x53b6('0x9')](),controller['destroy']);router[_0x53b6('0x18')](_0x53b6('0x10'),auth[_0x53b6('0x9')](),controller[_0x53b6('0x19')]);router[_0x53b6('0x18')](_0x53b6('0x11'),auth[_0x53b6('0x9')](),controller['removeAgents']);module[_0x53b6('0x1a')]=router;
\ No newline at end of file
+var _0x9e00=['/describe','describe','/:id','show','/:id/members','/:id/users','getAgents','post','create','/:id/teams','addTeams','update','delete','destroy','removeTeams','multer','util','connect-timeout','../../components/interaction/service','../../config/environment','./openchannelQueue.controller','isAuthenticated','index','get'];(function(_0x38640e,_0x5595c0){var _0x32d137=function(_0x58e290){while(--_0x58e290){_0x38640e['push'](_0x38640e['shift']());}};_0x32d137(++_0x5595c0);}(_0x9e00,0xff));var _0x09e0=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x9e00[_0x14add3];return _0x4a174f;};'use strict';var multer=require(_0x09e0('0x0'));var util=require(_0x09e0('0x1'));var path=require('path');var timeout=require(_0x09e0('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x09e0('0x3'));var config=require(_0x09e0('0x4'));var controller=require(_0x09e0('0x5'));router['get']('/',auth[_0x09e0('0x6')](),controller[_0x09e0('0x7')]);router[_0x09e0('0x8')](_0x09e0('0x9'),auth['isAuthenticated'](),controller[_0x09e0('0xa')]);router[_0x09e0('0x8')](_0x09e0('0xb'),auth['isAuthenticated'](),controller[_0x09e0('0xc')]);router[_0x09e0('0x8')](_0x09e0('0xd'),auth[_0x09e0('0x6')](),controller['getMembers']);router[_0x09e0('0x8')]('/:id/teams',auth['isAuthenticated'](),controller['getTeams']);router[_0x09e0('0x8')](_0x09e0('0xe'),auth[_0x09e0('0x6')](),controller[_0x09e0('0xf')]);router[_0x09e0('0x10')]('/',auth[_0x09e0('0x6')](),controller[_0x09e0('0x11')]);router[_0x09e0('0x10')](_0x09e0('0x12'),auth[_0x09e0('0x6')](),controller[_0x09e0('0x13')]);router[_0x09e0('0x10')](_0x09e0('0xe'),auth[_0x09e0('0x6')](),controller['addAgents']);router['put'](_0x09e0('0xb'),auth[_0x09e0('0x6')](),controller[_0x09e0('0x14')]);router[_0x09e0('0x15')]('/:id',auth[_0x09e0('0x6')](),controller[_0x09e0('0x16')]);router[_0x09e0('0x15')](_0x09e0('0x12'),auth['isAuthenticated'](),controller[_0x09e0('0x17')]);router['delete'](_0x09e0('0xe'),auth[_0x09e0('0x6')](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
index 442d325..11da780 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5664=['sequelize','exports','STRING','name','INTEGER','ENUM','rrmemory','beepall','roundrobin'];(function(_0x2650e9,_0xb91cc){var _0x3511c8=function(_0x5069cf){while(--_0x5069cf){_0x2650e9['push'](_0x2650e9['shift']());}};_0x3511c8(++_0xb91cc);}(_0x5664,0x1d4));var _0x4566=function(_0x4914ad,_0x551a18){_0x4914ad=_0x4914ad-0x0;var _0x3cd61f=_0x5664[_0x4914ad];return _0x3cd61f;};'use strict';var Sequelize=require(_0x4566('0x0'));module[_0x4566('0x1')]={'name':{'type':Sequelize[_0x4566('0x2')],'unique':_0x4566('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x4566('0x2')]},'timeout':{'type':Sequelize[_0x4566('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x4566('0x5')](_0x4566('0x6'),_0x4566('0x7'),_0x4566('0x8'))}};
\ No newline at end of file
+var _0xb2de=['rrmemory','beepall','roundrobin','sequelize','exports','name','STRING','INTEGER','ENUM'];(function(_0x375b16,_0x4130bf){var _0x24541f=function(_0x204806){while(--_0x204806){_0x375b16['push'](_0x375b16['shift']());}};_0x24541f(++_0x4130bf);}(_0xb2de,0x111));var _0xeb2d=function(_0x2dd5bf,_0x183dae){_0x2dd5bf=_0x2dd5bf-0x0;var _0x3146a3=_0xb2de[_0x2dd5bf];return _0x3146a3;};'use strict';var Sequelize=require(_0xeb2d('0x0'));module[_0xeb2d('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0xeb2d('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xeb2d('0x3')]},'timeout':{'type':Sequelize[_0xeb2d('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xeb2d('0x5')](_0xeb2d('0x6'),_0xeb2d('0x7'),_0xeb2d('0x8'))}};
\ No newline at end of file
index 9e90fea..2db45d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0ed2=['fieldName','type','key','model','query','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','name','options','include','findAll','rows','show','params','keys','intersection','includeAll','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','find','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','catch','describe','getMembers','findOne','rawAttributes','User','findAndCountAll','UserId','createdAt','format','%s/%s','openchannelPause','updatedAt','getTeams','Team','Agents','online','voicePause','interface','flatMap','sequelize','addTeams','findOrCreate','emit','userOpenchannelQueue:save','select','tq.TeamId','from','team_has_openchannel_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','OpenchannelQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','toString','QueryTypes','every','TeamId','includes','union','compact','value','removeTeams','ids','isEmpty','forEach','userOpenchannelQueue:remove','addAgents','omit','spread','removeAgents','getAgents','eml-format','rimraf','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./openchannelQueue.socket','register','sendStatus','status','end','json','undefined','offset','count','limit','set','Content-Range','apply','save','update','then','destroy','get','OpenchannelQueues','UserProfileResource','stack','send','index','map','OpenchannelQueue'];(function(_0x164eca,_0x555e28){var _0x2ce562=function(_0x148ca6){while(--_0x148ca6){_0x164eca['push'](_0x164eca['shift']());}};_0x2ce562(++_0x555e28);}(_0x0ed2,0x171));var _0x20ed=function(_0x86c887,_0x5cff86){_0x86c887=_0x86c887-0x0;var _0x2d328d=_0x0ed2[_0x86c887];return _0x2d328d;};'use strict';var emlformat=require(_0x20ed('0x0'));var rimraf=require(_0x20ed('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x20ed('0x2'));var moment=require('moment');var BPromise=require(_0x20ed('0x3'));var Mustache=require(_0x20ed('0x4'));var util=require(_0x20ed('0x5'));var path=require(_0x20ed('0x6'));var sox=require(_0x20ed('0x7'));var csv=require(_0x20ed('0x8'));var ejs=require(_0x20ed('0x9'));var fs=require('fs');var fs_extra=require(_0x20ed('0xa'));var _=require(_0x20ed('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x20ed('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x20ed('0x8'));var querystring=require(_0x20ed('0xd'));var Papa=require('papaparse');var Redis=require(_0x20ed('0xe'));var authService=require(_0x20ed('0xf'));var qs=require(_0x20ed('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x20ed('0x11'));var logger=require('../../config/logger')('api');var utils=require(_0x20ed('0x12'));var config=require(_0x20ed('0x13'));var licenseUtil=require(_0x20ed('0x14'));var db=require(_0x20ed('0x15'))['db'];config[_0x20ed('0x16')]=_[_0x20ed('0x17')](config[_0x20ed('0x16')],{'host':_0x20ed('0x18'),'port':0x18eb});var socket=require(_0x20ed('0x19'))(new Redis(config[_0x20ed('0x16')]));require(_0x20ed('0x1a'))[_0x20ed('0x1b')](socket);function respondWithStatusCode(_0x54d679,_0x4c3d7b){_0x4c3d7b=_0x4c3d7b||0xcc;return function(_0x398b0b){if(_0x398b0b){return _0x54d679[_0x20ed('0x1c')](_0x4c3d7b);}return _0x54d679[_0x20ed('0x1d')](_0x4c3d7b)[_0x20ed('0x1e')]();};}function respondWithResult(_0x21dfc5,_0x4bf43b){_0x4bf43b=_0x4bf43b||0xc8;return function(_0x257c2c){if(_0x257c2c){return _0x21dfc5[_0x20ed('0x1d')](_0x4bf43b)[_0x20ed('0x1f')](_0x257c2c);}};}function respondWithFilteredResult(_0x277ac6,_0x200648){return function(_0x1904a7){if(_0x1904a7){var _0x41dc2c=typeof _0x200648['offset']===_0x20ed('0x20')&&typeof _0x200648['limit']===_0x20ed('0x20');var _0x2711f9=_0x1904a7['count'];var _0xb5ac17=_0x41dc2c?0x0:_0x200648[_0x20ed('0x21')];var _0x191496=_0x41dc2c?_0x1904a7[_0x20ed('0x22')]:_0x200648[_0x20ed('0x21')]+_0x200648[_0x20ed('0x23')];var _0x307490;if(_0x191496>=_0x2711f9){_0x191496=_0x2711f9;_0x307490=0xc8;}else{_0x307490=0xce;}_0x277ac6[_0x20ed('0x1d')](_0x307490);return _0x277ac6[_0x20ed('0x24')](_0x20ed('0x25'),_0xb5ac17+'-'+_0x191496+'/'+_0x2711f9)[_0x20ed('0x1f')](_0x1904a7);}return null;};}function patchUpdates(_0x14edd4){return function(_0x40915d){try{jsonpatch[_0x20ed('0x26')](_0x40915d,_0x14edd4,!![]);}catch(_0x39db5a){return BPromise['reject'](_0x39db5a);}return _0x40915d[_0x20ed('0x27')]();};}function saveUpdates(_0x4184f6,_0x3c0b3f){return function(_0x4481da){if(_0x4481da){return _0x4481da[_0x20ed('0x28')](_0x4184f6)[_0x20ed('0x29')](function(_0x2a9863){return _0x2a9863;});}return null;};}function removeEntity(_0x40e07f,_0x43e6e3){return function(_0x5992fd){if(_0x5992fd){return _0x5992fd[_0x20ed('0x2a')]()[_0x20ed('0x29')](function(){var _0x3c3c39=_0x5992fd[_0x20ed('0x2b')]({'plain':!![]});var _0x2c9185=_0x20ed('0x2c');return db[_0x20ed('0x2d')]['destroy']({'where':{'type':_0x2c9185,'resourceId':_0x3c3c39['id']}})[_0x20ed('0x29')](function(){return _0x5992fd;});})[_0x20ed('0x29')](function(){_0x40e07f[_0x20ed('0x1d')](0xcc)[_0x20ed('0x1e')]();});}};}function handleEntityNotFound(_0x570375,_0x3b788a){return function(_0x3773f1){if(!_0x3773f1){_0x570375['sendStatus'](0x194);}return _0x3773f1;};}function handleError(_0x2b119c,_0x2915c5){_0x2915c5=_0x2915c5||0x1f4;return function(_0x4d7c13){logger['error'](_0x4d7c13[_0x20ed('0x2e')]);if(_0x4d7c13['name']){delete _0x4d7c13['name'];}_0x2b119c[_0x20ed('0x1d')](_0x2915c5)[_0x20ed('0x2f')](_0x4d7c13);};}exports[_0x20ed('0x30')]=function(_0x51be97,_0x143a00){var _0x2b991e={},_0x2d2994={},_0x144228={'count':0x0,'rows':[]};var _0x5e5e10=_[_0x20ed('0x31')](db[_0x20ed('0x32')]['rawAttributes'],function(_0x2597ac){return{'name':_0x2597ac[_0x20ed('0x33')],'type':_0x2597ac[_0x20ed('0x34')][_0x20ed('0x35')]};});_0x2d2994[_0x20ed('0x36')]=_['map'](_0x5e5e10,'name');_0x2d2994['query']=_['keys'](_0x51be97[_0x20ed('0x37')]);_0x2d2994['filters']=_['intersection'](_0x2d2994[_0x20ed('0x36')],_0x2d2994[_0x20ed('0x37')]);_0x2b991e[_0x20ed('0x38')]=_['intersection'](_0x2d2994[_0x20ed('0x36')],qs[_0x20ed('0x39')](_0x51be97['query'][_0x20ed('0x39')]));_0x2b991e[_0x20ed('0x38')]=_0x2b991e[_0x20ed('0x38')][_0x20ed('0x3a')]?_0x2b991e[_0x20ed('0x38')]:_0x2d2994[_0x20ed('0x36')];if(!_0x51be97[_0x20ed('0x37')][_0x20ed('0x3b')](_0x20ed('0x3c'))){_0x2b991e[_0x20ed('0x23')]=qs['limit'](_0x51be97['query'][_0x20ed('0x23')]);_0x2b991e[_0x20ed('0x21')]=qs[_0x20ed('0x21')](_0x51be97[_0x20ed('0x37')][_0x20ed('0x21')]);}_0x2b991e[_0x20ed('0x3d')]=qs[_0x20ed('0x3e')](_0x51be97[_0x20ed('0x37')][_0x20ed('0x3e')]);_0x2b991e[_0x20ed('0x3f')]=qs[_0x20ed('0x40')](_[_0x20ed('0x41')](_0x51be97[_0x20ed('0x37')],_0x2d2994[_0x20ed('0x40')]),_0x5e5e10);if(_0x51be97[_0x20ed('0x37')][_0x20ed('0x42')]){_0x2b991e[_0x20ed('0x3f')]=_[_0x20ed('0x43')](_0x2b991e[_0x20ed('0x3f')],{'$or':_[_0x20ed('0x31')](_0x5e5e10,function(_0x1d18b6){if(_0x1d18b6[_0x20ed('0x34')]!=='VIRTUAL'){var _0x1faea0={};_0x1faea0[_0x1d18b6[_0x20ed('0x44')]]={'$like':'%'+_0x51be97[_0x20ed('0x37')]['filter']+'%'};return _0x1faea0;}})});}_0x2b991e=_[_0x20ed('0x43')]({},_0x2b991e,_0x51be97[_0x20ed('0x45')]);var _0x59c4d6={'where':_0x2b991e[_0x20ed('0x3f')]};return db[_0x20ed('0x32')][_0x20ed('0x22')](_0x59c4d6)['then'](function(_0x4fb0ed){_0x144228[_0x20ed('0x22')]=_0x4fb0ed;if(_0x51be97['query']['includeAll']){_0x2b991e[_0x20ed('0x46')]=[{'all':!![]}];}return db[_0x20ed('0x32')][_0x20ed('0x47')](_0x2b991e);})[_0x20ed('0x29')](function(_0x3b1ba4){_0x144228[_0x20ed('0x48')]=_0x3b1ba4;return _0x144228;})['then'](respondWithFilteredResult(_0x143a00,_0x2b991e))['catch'](handleError(_0x143a00,null));};exports[_0x20ed('0x49')]=function(_0x2bd2bd,_0x541a21){var _0x11e3fa={'raw':!![],'where':{'id':_0x2bd2bd[_0x20ed('0x4a')]['id']}},_0x2eccb1={};_0x2eccb1[_0x20ed('0x36')]=_[_0x20ed('0x4b')](db[_0x20ed('0x32')]['rawAttributes']);_0x2eccb1['query']=_[_0x20ed('0x4b')](_0x2bd2bd[_0x20ed('0x37')]);_0x2eccb1[_0x20ed('0x40')]=_[_0x20ed('0x4c')](_0x2eccb1[_0x20ed('0x36')],_0x2eccb1[_0x20ed('0x37')]);_0x11e3fa[_0x20ed('0x38')]=_['intersection'](_0x2eccb1[_0x20ed('0x36')],qs[_0x20ed('0x39')](_0x2bd2bd[_0x20ed('0x37')][_0x20ed('0x39')]));_0x11e3fa[_0x20ed('0x38')]=_0x11e3fa['attributes'][_0x20ed('0x3a')]?_0x11e3fa[_0x20ed('0x38')]:_0x2eccb1[_0x20ed('0x36')];if(_0x2bd2bd['query'][_0x20ed('0x4d')]){_0x11e3fa['include']=[{'all':!![]}];}_0x11e3fa=_[_0x20ed('0x43')]({},_0x11e3fa,_0x2bd2bd['options']);return db[_0x20ed('0x32')]['find'](_0x11e3fa)[_0x20ed('0x29')](handleEntityNotFound(_0x541a21,null))[_0x20ed('0x29')](respondWithResult(_0x541a21,null))['catch'](handleError(_0x541a21,null));};exports[_0x20ed('0x4e')]=function(_0x548898,_0x2480d8){return db[_0x20ed('0x32')]['create'](_0x548898[_0x20ed('0x4f')],{})[_0x20ed('0x29')](function(_0x4fde20){var _0x5dd04a=_0x548898['user'][_0x20ed('0x2b')]({'plain':!![]});if(!_0x5dd04a)throw new Error(_0x20ed('0x50'));if(_0x5dd04a['role']===_0x20ed('0x51')){var _0x39d6ee=_0x4fde20[_0x20ed('0x2b')]({'plain':!![]});var _0x2dde96=_0x20ed('0x2c');return db[_0x20ed('0x52')][_0x20ed('0x53')]({'where':{'name':_0x2dde96,'userProfileId':_0x5dd04a['userProfileId']},'raw':!![]})[_0x20ed('0x29')](function(_0x34f672){if(_0x34f672&&_0x34f672[_0x20ed('0x54')]===0x0){return db['UserProfileResource'][_0x20ed('0x4e')]({'name':_0x39d6ee[_0x20ed('0x44')],'resourceId':_0x39d6ee['id'],'type':_0x34f672[_0x20ed('0x44')],'sectionId':_0x34f672['id']},{})[_0x20ed('0x29')](function(){return _0x4fde20;});}else{return _0x4fde20;}})['catch'](function(_0x3929df){logger['error'](_0x20ed('0x55'),_0x3929df);throw _0x3929df;});}return _0x4fde20;})['then'](respondWithResult(_0x2480d8,0xc9))['catch'](handleError(_0x2480d8,null));};exports[_0x20ed('0x28')]=function(_0x3046f8,_0x2eb5fb){if(_0x3046f8[_0x20ed('0x4f')]['id']){delete _0x3046f8['body']['id'];}return db[_0x20ed('0x32')]['find']({'where':{'id':_0x3046f8[_0x20ed('0x4a')]['id']}})[_0x20ed('0x29')](handleEntityNotFound(_0x2eb5fb,null))[_0x20ed('0x29')](saveUpdates(_0x3046f8[_0x20ed('0x4f')],null))[_0x20ed('0x29')](respondWithResult(_0x2eb5fb,null))[_0x20ed('0x56')](handleError(_0x2eb5fb,null));};exports[_0x20ed('0x2a')]=function(_0x3f4d1a,_0x39877b){return db['OpenchannelQueue']['find']({'where':{'id':_0x3f4d1a[_0x20ed('0x4a')]['id']}})[_0x20ed('0x29')](handleEntityNotFound(_0x39877b,null))[_0x20ed('0x29')](removeEntity(_0x39877b,null))[_0x20ed('0x56')](handleError(_0x39877b,null));};exports[_0x20ed('0x57')]=function(_0x3f2101,_0x11de21){return db[_0x20ed('0x32')]['describe']()['then'](respondWithResult(_0x11de21,null))[_0x20ed('0x56')](handleError(_0x11de21,null));};exports[_0x20ed('0x58')]=function(_0x5f1eb8,_0x4d9f8f,_0x4c7448){var _0x3b4e2e={'raw':!![],'where':{}},_0x3cb034={},_0x4b7fbc;return db['OpenchannelQueue'][_0x20ed('0x59')]({'where':{'id':_0x5f1eb8[_0x20ed('0x4a')]['id']}})[_0x20ed('0x29')](handleEntityNotFound(_0x4d9f8f,null))[_0x20ed('0x29')](function(_0x13fe51){if(_0x13fe51){_0x4b7fbc=_0x13fe51['get']({'plain':!![]});_0x3cb034[_0x20ed('0x36')]=_[_0x20ed('0x4b')](db['UserOpenchannelQueue'][_0x20ed('0x5a')]);_0x3cb034['query']=_['keys'](_0x5f1eb8[_0x20ed('0x37')]);_0x3cb034['filters']=_['intersection'](_0x3cb034[_0x20ed('0x36')],_0x3cb034['query']);_0x3b4e2e[_0x20ed('0x38')]=_['intersection'](_0x3cb034[_0x20ed('0x36')],qs[_0x20ed('0x39')](_0x5f1eb8['query']['fields']));_0x3b4e2e[_0x20ed('0x38')]=_0x3b4e2e[_0x20ed('0x38')][_0x20ed('0x3a')]?_0x3b4e2e[_0x20ed('0x38')]:_0x3cb034[_0x20ed('0x36')];if(!_0x5f1eb8[_0x20ed('0x37')][_0x20ed('0x3b')](_0x20ed('0x3c'))){_0x3b4e2e['limit']=qs[_0x20ed('0x23')](_0x5f1eb8[_0x20ed('0x37')]['limit']);_0x3b4e2e[_0x20ed('0x21')]=qs[_0x20ed('0x21')](_0x5f1eb8[_0x20ed('0x37')][_0x20ed('0x21')]);}_0x3b4e2e[_0x20ed('0x3d')]=qs[_0x20ed('0x3e')](_0x5f1eb8[_0x20ed('0x37')][_0x20ed('0x3e')]);_0x3b4e2e[_0x20ed('0x3f')]=qs[_0x20ed('0x40')](_[_0x20ed('0x41')](_0x5f1eb8['query'],_0x3cb034[_0x20ed('0x40')]));_0x3b4e2e[_0x20ed('0x3f')]['OpenchannelQueueId']=_0x13fe51['id'];if(_0x5f1eb8['query'][_0x20ed('0x42')]){_0x3b4e2e[_0x20ed('0x3f')]=_[_0x20ed('0x43')](_0x3b4e2e[_0x20ed('0x3f')],{'$or':_['map'](_0x3b4e2e['attributes'],function(_0x26e1e2){var _0x55a987={};_0x55a987[_0x26e1e2]={'$like':'%'+_0x5f1eb8[_0x20ed('0x37')][_0x20ed('0x42')]+'%'};return _0x55a987;})});}_0x3b4e2e=_[_0x20ed('0x43')]({},_0x3b4e2e,_0x5f1eb8[_0x20ed('0x45')]);return db['UserOpenchannelQueue'][_0x20ed('0x47')](_0x3b4e2e);}})[_0x20ed('0x29')](function(_0x1f60e2){if(_0x1f60e2){return db[_0x20ed('0x5b')][_0x20ed('0x5c')]({'where':{'id':_['map'](_0x1f60e2,_0x20ed('0x5d')),'role':'agent'},'attributes':['id',_0x20ed('0x44'),'openchannelPause','updatedAt',_0x20ed('0x5e')]});}})[_0x20ed('0x29')](function(_0x2ee8c2){if(_0x2ee8c2){return{'count':_0x2ee8c2['count'],'rows':_[_0x20ed('0x31')](_0x2ee8c2['rows'],function(_0x287eae){return{'membername':_0x287eae[_0x20ed('0x44')],'UserId':_0x287eae['id'],'queue_name':_0x4b7fbc[_0x20ed('0x44')],'OpenchannelQueueId':_0x4b7fbc['id'],'interface':util[_0x20ed('0x5f')](_0x20ed('0x60'),'SIP',_0x287eae[_0x20ed('0x44')]),'penalty':0x0,'paused':_0x287eae[_0x20ed('0x61')],'createdAt':_0x287eae[_0x20ed('0x5e')],'updatedAt':_0x287eae[_0x20ed('0x62')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x4d9f8f,_0x3b4e2e))[_0x20ed('0x56')](handleError(_0x4d9f8f,null));};exports[_0x20ed('0x63')]=function(_0x2daf1c,_0x2a8790,_0x5c9b3b){var _0xf75894={};var _0x14726f={};var _0xfb1d7;var _0x57134e;return db['OpenchannelQueue']['findOne']({'where':{'id':_0x2daf1c[_0x20ed('0x4a')]['id']}})['then'](handleEntityNotFound(_0x2a8790,null))[_0x20ed('0x29')](function(_0x29c36a){if(_0x29c36a){_0xfb1d7=_0x29c36a;_0x14726f[_0x20ed('0x36')]=_[_0x20ed('0x4b')](db[_0x20ed('0x64')][_0x20ed('0x5a')]);_0x14726f[_0x20ed('0x37')]=_['keys'](_0x2daf1c[_0x20ed('0x37')]);_0x14726f['filters']=_[_0x20ed('0x4c')](_0x14726f[_0x20ed('0x36')],_0x14726f[_0x20ed('0x37')]);_0xf75894[_0x20ed('0x38')]=_[_0x20ed('0x4c')](_0x14726f[_0x20ed('0x36')],qs[_0x20ed('0x39')](_0x2daf1c[_0x20ed('0x37')][_0x20ed('0x39')]));_0xf75894[_0x20ed('0x38')]=_0xf75894[_0x20ed('0x38')][_0x20ed('0x3a')]?_0xf75894[_0x20ed('0x38')]:_0x14726f[_0x20ed('0x36')];_0xf75894[_0x20ed('0x3d')]=qs[_0x20ed('0x3e')](_0x2daf1c[_0x20ed('0x37')][_0x20ed('0x3e')]);_0xf75894[_0x20ed('0x3f')]=qs[_0x20ed('0x40')](_[_0x20ed('0x41')](_0x2daf1c['query'],_0x14726f[_0x20ed('0x40')]));if(_0x2daf1c['query'][_0x20ed('0x42')]){_0xf75894['where']=_[_0x20ed('0x43')](_0xf75894[_0x20ed('0x3f')],{'$or':_[_0x20ed('0x31')](_0xf75894[_0x20ed('0x38')],function(_0xff57dc){var _0x54ea66={};_0x54ea66[_0xff57dc]={'$like':'%'+_0x2daf1c[_0x20ed('0x37')][_0x20ed('0x42')]+'%'};return _0x54ea66;})});}_0xf75894=_[_0x20ed('0x43')]({},_0xf75894,_0x2daf1c[_0x20ed('0x45')]);return _0xfb1d7[_0x20ed('0x63')](_0xf75894);}})[_0x20ed('0x29')](function(_0x1488c7){if(_0x1488c7){_0x57134e=_0x1488c7[_0x20ed('0x3a')];if(!_0x2daf1c[_0x20ed('0x37')][_0x20ed('0x3b')]('nolimit')){_0xf75894[_0x20ed('0x23')]=qs[_0x20ed('0x23')](_0x2daf1c[_0x20ed('0x37')][_0x20ed('0x23')]);_0xf75894[_0x20ed('0x21')]=qs[_0x20ed('0x21')](_0x2daf1c[_0x20ed('0x37')][_0x20ed('0x21')]);}return _0xfb1d7[_0x20ed('0x63')](_0xf75894);}})['then'](function(_0x2773d5){if(_0x2773d5){return _0x2773d5?{'count':_0x57134e,'rows':_0x2773d5}:null;}})['then'](respondWithResult(_0x2a8790,null))[_0x20ed('0x56')](handleError(_0x2a8790,null));};exports['addTeams']=function(_0x427fd1,_0x5bd30e,_0x46ea15){var _0x29161d=_0x427fd1[_0x20ed('0x4f')]['ids'];return db[_0x20ed('0x64')][_0x20ed('0x47')]({'where':{'id':_0x29161d},'attributes':['id'],'include':[{'model':db[_0x20ed('0x5b')],'as':_0x20ed('0x65'),'attributes':['id','name',_0x20ed('0x66'),_0x20ed('0x67'),_0x20ed('0x68')],'raw':!![]}]})[_0x20ed('0x29')](function(_0x5205a5){if(_0x5205a5){var _0x254b5a=_[_0x20ed('0x69')](_0x5205a5,function(_0x6fce63){var _0x2a93ac=_0x6fce63['get']({'plain':!![]});return _0x2a93ac[_0x20ed('0x65')];});return db[_0x20ed('0x32')][_0x20ed('0x53')]({'where':{'id':_0x427fd1['params']['id']}})[_0x20ed('0x29')](function(_0x4104e0){return db[_0x20ed('0x6a')]['transaction'](function(_0x53210b){return _0x4104e0[_0x20ed('0x6b')](_0x29161d,{'transaction':_0x53210b})[_0x20ed('0x29')](function(){return BPromise['each'](_0x254b5a,function(_0x4381e1){return db['UserOpenchannelQueue'][_0x20ed('0x6c')]({'where':{'UserId':_0x4381e1['id'],'OpenchannelQueueId':_0x427fd1[_0x20ed('0x4a')]['id']},'transaction':_0x53210b});});})[_0x20ed('0x29')](function(){_0x254b5a['forEach'](function(_0x44f2a1){socket[_0x20ed('0x6d')](_0x20ed('0x6e'),{'UserId':_0x44f2a1['id'],'OpenchannelQueueId':_0x4104e0['id']});});});});});}})[_0x20ed('0x29')](respondWithStatusCode(_0x5bd30e,null))[_0x20ed('0x56')](handleError(_0x5bd30e,null));};exports['removeTeams']=function(_0x417c41,_0x114ff8,_0x4b2b51){return db['Team'][_0x20ed('0x47')]({'where':{'id':_0x417c41[_0x20ed('0x37')]['ids']},'attributes':['id'],'include':[{'model':db[_0x20ed('0x5b')],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0x20ed('0x29')](handleEntityNotFound(_0x114ff8,null))['then'](function(_0x14ae36){var _0x297267=_[_0x20ed('0x31')](_0x14ae36,'id');var _0x3f47de=[];var _0x37f23e=[];var _0x392916=squel[_0x20ed('0x6f')]();_0x392916['field'](_0x20ed('0x70'))[_0x20ed('0x71')](_0x20ed('0x72'),'tq')[_0x20ed('0x73')](_0x20ed('0x74'),'ut',_0x20ed('0x75'))[_0x20ed('0x3f')](_0x20ed('0x76'),_0x417c41[_0x20ed('0x4a')]['id']);for(var _0x1a34a3=0x0;_0x1a34a3<_0x14ae36[_0x20ed('0x3a')];_0x1a34a3+=0x1){let _0x5c9282=_0x14ae36[_0x1a34a3];for(var _0x3ebb50=0x0;_0x3ebb50<_0x5c9282[_0x20ed('0x65')][_0x20ed('0x3a')];_0x3ebb50+=0x1){let _0x1c9220=_0x5c9282[_0x20ed('0x65')][_0x3ebb50];var _0x581240=_0x392916[_0x20ed('0x77')]();_0x581240['where'](_0x20ed('0x78'),_0x1c9220['id']);_0x37f23e[_0x20ed('0x79')](db[_0x20ed('0x6a')]['query'](_0x581240[_0x20ed('0x7a')](),{'type':db[_0x20ed('0x6a')][_0x20ed('0x7b')]['SELECT']})[_0x20ed('0x29')](function(_0x337004){if(_0x337004[_0x20ed('0x3a')]===0x1){return _0x1c9220['id'];}else{var _0x339631=_[_0x20ed('0x7c')](_[_0x20ed('0x31')](_0x337004,_0x20ed('0x7d')),function(_0x37b83b){return _[_0x20ed('0x7e')](_0x297267,_0x37b83b);});if(_0x339631){return _0x1c9220['id'];}}}));}}return BPromise['all'](_0x37f23e)[_0x20ed('0x29')](function(_0x5915e7){_0x3f47de=_(_0x3f47de)[_0x20ed('0x7f')](_0x5915e7)[_0x20ed('0x80')]()[_0x20ed('0x81')]();return db[_0x20ed('0x32')]['find']({'where':{'id':_0x417c41[_0x20ed('0x4a')]['id']}})[_0x20ed('0x29')](function(_0x225dbb){return db[_0x20ed('0x6a')]['transaction'](function(_0x4eeff9){return _0x225dbb[_0x20ed('0x82')](_0x417c41['query'][_0x20ed('0x83')],{'transaction':_0x4eeff9})[_0x20ed('0x29')](function(){if(!_[_0x20ed('0x84')](_0x3f47de)){return _0x225dbb['removeAgents'](_0x3f47de,{'transaction':_0x4eeff9});}})[_0x20ed('0x29')](function(){_0x3f47de[_0x20ed('0x85')](function(_0x1fe9ac){socket[_0x20ed('0x6d')](_0x20ed('0x86'),{'UserId':_0x1fe9ac,'OpenchannelQueueId':_0x225dbb['id']});});});});});});})[_0x20ed('0x29')](respondWithStatusCode(_0x114ff8,null))[_0x20ed('0x56')](handleError(_0x114ff8,null));};exports[_0x20ed('0x87')]=function(_0x500077,_0x2d9a14,_0x1c5100){return db['OpenchannelQueue']['find']({'where':{'id':_0x500077[_0x20ed('0x4a')]['id']}})[_0x20ed('0x29')](handleEntityNotFound(_0x2d9a14,null))[_0x20ed('0x29')](function(_0x2a0e89){if(_0x2a0e89){return _0x2a0e89[_0x20ed('0x87')](_0x500077[_0x20ed('0x4f')][_0x20ed('0x83')],_[_0x20ed('0x88')](_0x500077['body'],[_0x20ed('0x83'),'id'])||{})[_0x20ed('0x89')](function(_0x1b30ab){for(var _0x217567=0x0;_0x217567<_0x500077[_0x20ed('0x4f')][_0x20ed('0x83')][_0x20ed('0x3a')];_0x217567+=0x1){socket[_0x20ed('0x6d')](_0x20ed('0x6e'),{'UserId':Number(_0x500077[_0x20ed('0x4f')]['ids'][_0x217567]),'OpenchannelQueueId':Number(_0x500077[_0x20ed('0x4a')]['id'])});}return _0x1b30ab;});}})[_0x20ed('0x29')](respondWithResult(_0x2d9a14,null))[_0x20ed('0x56')](handleError(_0x2d9a14,null));};exports[_0x20ed('0x8a')]=function(_0x400347,_0x37b8aa,_0x1f9dcb){return db[_0x20ed('0x32')]['find']({'where':{'id':_0x400347[_0x20ed('0x4a')]['id']}})[_0x20ed('0x29')](handleEntityNotFound(_0x37b8aa,null))['then'](function(_0x1f9600){if(_0x1f9600){return _0x1f9600['removeAgents'](_0x400347[_0x20ed('0x37')][_0x20ed('0x83')])[_0x20ed('0x29')](function(){if(_['isArray'](_0x400347[_0x20ed('0x37')][_0x20ed('0x83')])){for(var _0x5498f3=0x0;_0x5498f3<_0x400347[_0x20ed('0x37')][_0x20ed('0x83')]['length'];_0x5498f3+=0x1){socket['emit'](_0x20ed('0x86'),{'UserId':Number(_0x400347[_0x20ed('0x37')][_0x20ed('0x83')][_0x5498f3]),'OpenchannelQueueId':Number(_0x400347[_0x20ed('0x4a')]['id'])});}}else{socket[_0x20ed('0x6d')](_0x20ed('0x86'),{'UserId':Number(_0x400347[_0x20ed('0x37')][_0x20ed('0x83')]),'OpenchannelQueueId':Number(_0x400347[_0x20ed('0x4a')]['id'])});}});}})[_0x20ed('0x29')](respondWithStatusCode(_0x37b8aa,null))[_0x20ed('0x56')](handleError(_0x37b8aa,null));};exports[_0x20ed('0x8b')]=function(_0x5d9768,_0x1672ab,_0x50b44b){var _0x30c546={};var _0x4ed89b={};var _0x140685;var _0x5208a2;return db['OpenchannelQueue'][_0x20ed('0x59')]({'where':{'id':_0x5d9768[_0x20ed('0x4a')]['id']}})[_0x20ed('0x29')](handleEntityNotFound(_0x1672ab,null))[_0x20ed('0x29')](function(_0xa1159d){if(_0xa1159d){_0x140685=_0xa1159d;_0x4ed89b[_0x20ed('0x36')]=_[_0x20ed('0x4b')](db['User'][_0x20ed('0x5a')]);_0x4ed89b[_0x20ed('0x37')]=_[_0x20ed('0x4b')](_0x5d9768[_0x20ed('0x37')]);_0x4ed89b[_0x20ed('0x40')]=_[_0x20ed('0x4c')](_0x4ed89b[_0x20ed('0x36')],_0x4ed89b[_0x20ed('0x37')]);_0x30c546[_0x20ed('0x38')]=_[_0x20ed('0x4c')](_0x4ed89b[_0x20ed('0x36')],qs[_0x20ed('0x39')](_0x5d9768[_0x20ed('0x37')]['fields']));_0x30c546[_0x20ed('0x38')]=_0x30c546[_0x20ed('0x38')][_0x20ed('0x3a')]?_0x30c546[_0x20ed('0x38')]:_0x4ed89b['model'];_0x30c546[_0x20ed('0x3d')]=qs['sort'](_0x5d9768[_0x20ed('0x37')][_0x20ed('0x3e')]);_0x30c546[_0x20ed('0x3f')]=qs[_0x20ed('0x40')](_['pick'](_0x5d9768[_0x20ed('0x37')],_0x4ed89b[_0x20ed('0x40')]));if(_0x5d9768[_0x20ed('0x37')]['filter']){_0x30c546['where']=_[_0x20ed('0x43')](_0x30c546['where'],{'$or':_['map'](_0x30c546[_0x20ed('0x38')],function(_0x29c6db){var _0x1f2976={};_0x1f2976[_0x29c6db]={'$like':'%'+_0x5d9768[_0x20ed('0x37')][_0x20ed('0x42')]+'%'};return _0x1f2976;})});}_0x30c546=_['merge']({},_0x30c546,_0x5d9768['options']);return _0x140685[_0x20ed('0x8b')](_0x30c546);}})[_0x20ed('0x29')](function(_0x1c2944){if(_0x1c2944){_0x5208a2=_0x1c2944[_0x20ed('0x3a')];if(!_0x5d9768[_0x20ed('0x37')][_0x20ed('0x3b')]('nolimit')){_0x30c546[_0x20ed('0x23')]=qs[_0x20ed('0x23')](_0x5d9768[_0x20ed('0x37')][_0x20ed('0x23')]);_0x30c546['offset']=qs[_0x20ed('0x21')](_0x5d9768[_0x20ed('0x37')]['offset']);}return _0x140685[_0x20ed('0x8b')](_0x30c546);}})[_0x20ed('0x29')](function(_0x335188){if(_0x335188){return _0x335188?{'count':_0x5208a2,'rows':_0x335188}:null;}})[_0x20ed('0x29')](respondWithResult(_0x1672ab,null))[_0x20ed('0x56')](handleError(_0x1672ab,null));};
\ No newline at end of file
+var _0xae70=['fields','length','model','hasOwnProperty','nolimit','sort','where','filter','merge','options','OpenchannelQueue','includeAll','include','findAll','rows','catch','params','rawAttributes','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','getMembers','findOne','UserOpenchannelQueue','order','User','agent','openchannelPause','updatedAt','createdAt','format','%s/%s','SIP','getTeams','ids','Agents','voicePause','interface','flatMap','sequelize','transaction','addTeams','each','forEach','emit','removeTeams','Team','field','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','OpenchannelQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','QueryTypes','SELECT','every','all','compact','value','isEmpty','removeAgents','userOpenchannelQueue:remove','addAgents','omit','spread','userOpenchannelQueue:save','isArray','getAgents','pick','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','redis','localhost','socket.io-emitter','./openchannelQueue.socket','register','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','get','OpenchannelQueues','UserProfileResource','error','stack','name','send','map','fieldName','key','query','keys','filters','intersection','attributes'];(function(_0x2fc2e7,_0x208720){var _0x42d924=function(_0x1e4e7d){while(--_0x1e4e7d){_0x2fc2e7['push'](_0x2fc2e7['shift']());}};_0x42d924(++_0x208720);}(_0xae70,0xd5));var _0x0ae7=function(_0xdaa034,_0x3c846b){_0xdaa034=_0xdaa034-0x0;var _0x24de7e=_0xae70[_0xdaa034];return _0x24de7e;};'use strict';var emlformat=require(_0x0ae7('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x0ae7('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x0ae7('0x2'));var moment=require(_0x0ae7('0x3'));var BPromise=require(_0x0ae7('0x4'));var Mustache=require(_0x0ae7('0x5'));var util=require(_0x0ae7('0x6'));var path=require(_0x0ae7('0x7'));var sox=require(_0x0ae7('0x8'));var csv=require(_0x0ae7('0x9'));var ejs=require(_0x0ae7('0xa'));var fs=require('fs');var fs_extra=require(_0x0ae7('0xb'));var _=require(_0x0ae7('0xc'));var squel=require(_0x0ae7('0xd'));var crypto=require(_0x0ae7('0xe'));var jsforce=require(_0x0ae7('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x0ae7('0x9'));var querystring=require(_0x0ae7('0x10'));var Papa=require(_0x0ae7('0x11'));var Redis=require('ioredis');var authService=require(_0x0ae7('0x12'));var qs=require(_0x0ae7('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x0ae7('0x14'));var logger=require(_0x0ae7('0x15'))(_0x0ae7('0x16'));var utils=require(_0x0ae7('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x0ae7('0x18'));var db=require('../../mysqldb')['db'];config[_0x0ae7('0x19')]=_['defaults'](config[_0x0ae7('0x19')],{'host':_0x0ae7('0x1a'),'port':0x18eb});var socket=require(_0x0ae7('0x1b'))(new Redis(config[_0x0ae7('0x19')]));require(_0x0ae7('0x1c'))[_0x0ae7('0x1d')](socket);function respondWithStatusCode(_0x47c3d1,_0x43426b){_0x43426b=_0x43426b||0xcc;return function(_0x324820){if(_0x324820){return _0x47c3d1[_0x0ae7('0x1e')](_0x43426b);}return _0x47c3d1[_0x0ae7('0x1f')](_0x43426b)[_0x0ae7('0x20')]();};}function respondWithResult(_0x4fb683,_0x73c621){_0x73c621=_0x73c621||0xc8;return function(_0x5d10cb){if(_0x5d10cb){return _0x4fb683['status'](_0x73c621)[_0x0ae7('0x21')](_0x5d10cb);}};}function respondWithFilteredResult(_0x12bf66,_0xaee56c){return function(_0x3649fc){if(_0x3649fc){var _0x449041=typeof _0xaee56c[_0x0ae7('0x22')]==='undefined'&&typeof _0xaee56c[_0x0ae7('0x23')]===_0x0ae7('0x24');var _0x20b89d=_0x3649fc['count'];var _0x8c6ac=_0x449041?0x0:_0xaee56c['offset'];var _0x2bb556=_0x449041?_0x3649fc[_0x0ae7('0x25')]:_0xaee56c[_0x0ae7('0x22')]+_0xaee56c[_0x0ae7('0x23')];var _0x4a9d30;if(_0x2bb556>=_0x20b89d){_0x2bb556=_0x20b89d;_0x4a9d30=0xc8;}else{_0x4a9d30=0xce;}_0x12bf66[_0x0ae7('0x1f')](_0x4a9d30);return _0x12bf66[_0x0ae7('0x26')](_0x0ae7('0x27'),_0x8c6ac+'-'+_0x2bb556+'/'+_0x20b89d)[_0x0ae7('0x21')](_0x3649fc);}return null;};}function patchUpdates(_0x51a06c){return function(_0x43240d){try{jsonpatch[_0x0ae7('0x28')](_0x43240d,_0x51a06c,!![]);}catch(_0x28aa30){return BPromise[_0x0ae7('0x29')](_0x28aa30);}return _0x43240d[_0x0ae7('0x2a')]();};}function saveUpdates(_0x4391aa,_0x369ce8){return function(_0x477d1a){if(_0x477d1a){return _0x477d1a[_0x0ae7('0x2b')](_0x4391aa)[_0x0ae7('0x2c')](function(_0x1ea8be){return _0x1ea8be;});}return null;};}function removeEntity(_0x19082e,_0x2ae688){return function(_0x47fa61){if(_0x47fa61){return _0x47fa61[_0x0ae7('0x2d')]()[_0x0ae7('0x2c')](function(){var _0x16665e=_0x47fa61[_0x0ae7('0x2e')]({'plain':!![]});var _0x6632ad=_0x0ae7('0x2f');return db[_0x0ae7('0x30')][_0x0ae7('0x2d')]({'where':{'type':_0x6632ad,'resourceId':_0x16665e['id']}})[_0x0ae7('0x2c')](function(){return _0x47fa61;});})[_0x0ae7('0x2c')](function(){_0x19082e[_0x0ae7('0x1f')](0xcc)[_0x0ae7('0x20')]();});}};}function handleEntityNotFound(_0x42e0ed,_0x52e434){return function(_0x4ee61b){if(!_0x4ee61b){_0x42e0ed[_0x0ae7('0x1e')](0x194);}return _0x4ee61b;};}function handleError(_0x2d20d8,_0x5b9382){_0x5b9382=_0x5b9382||0x1f4;return function(_0x15725a){logger[_0x0ae7('0x31')](_0x15725a[_0x0ae7('0x32')]);if(_0x15725a[_0x0ae7('0x33')]){delete _0x15725a['name'];}_0x2d20d8[_0x0ae7('0x1f')](_0x5b9382)[_0x0ae7('0x34')](_0x15725a);};}exports['index']=function(_0xbdb4d7,_0x46855f){var _0x57141f={},_0xa343b5={},_0x4e2d0b={'count':0x0,'rows':[]};var _0xc6238d=_[_0x0ae7('0x35')](db['OpenchannelQueue']['rawAttributes'],function(_0x2bc60a){return{'name':_0x2bc60a[_0x0ae7('0x36')],'type':_0x2bc60a['type'][_0x0ae7('0x37')]};});_0xa343b5['model']=_[_0x0ae7('0x35')](_0xc6238d,_0x0ae7('0x33'));_0xa343b5[_0x0ae7('0x38')]=_[_0x0ae7('0x39')](_0xbdb4d7[_0x0ae7('0x38')]);_0xa343b5[_0x0ae7('0x3a')]=_[_0x0ae7('0x3b')](_0xa343b5['model'],_0xa343b5[_0x0ae7('0x38')]);_0x57141f[_0x0ae7('0x3c')]=_[_0x0ae7('0x3b')](_0xa343b5['model'],qs[_0x0ae7('0x3d')](_0xbdb4d7[_0x0ae7('0x38')][_0x0ae7('0x3d')]));_0x57141f[_0x0ae7('0x3c')]=_0x57141f[_0x0ae7('0x3c')][_0x0ae7('0x3e')]?_0x57141f['attributes']:_0xa343b5[_0x0ae7('0x3f')];if(!_0xbdb4d7[_0x0ae7('0x38')][_0x0ae7('0x40')](_0x0ae7('0x41'))){_0x57141f[_0x0ae7('0x23')]=qs['limit'](_0xbdb4d7['query'][_0x0ae7('0x23')]);_0x57141f[_0x0ae7('0x22')]=qs[_0x0ae7('0x22')](_0xbdb4d7[_0x0ae7('0x38')][_0x0ae7('0x22')]);}_0x57141f['order']=qs[_0x0ae7('0x42')](_0xbdb4d7[_0x0ae7('0x38')]['sort']);_0x57141f[_0x0ae7('0x43')]=qs[_0x0ae7('0x3a')](_['pick'](_0xbdb4d7[_0x0ae7('0x38')],_0xa343b5[_0x0ae7('0x3a')]),_0xc6238d);if(_0xbdb4d7[_0x0ae7('0x38')][_0x0ae7('0x44')]){_0x57141f['where']=_['merge'](_0x57141f[_0x0ae7('0x43')],{'$or':_[_0x0ae7('0x35')](_0xc6238d,function(_0x4ee396){if(_0x4ee396['type']!=='VIRTUAL'){var _0x257d58={};_0x257d58[_0x4ee396[_0x0ae7('0x33')]]={'$like':'%'+_0xbdb4d7[_0x0ae7('0x38')]['filter']+'%'};return _0x257d58;}})});}_0x57141f=_[_0x0ae7('0x45')]({},_0x57141f,_0xbdb4d7[_0x0ae7('0x46')]);var _0x55354a={'where':_0x57141f['where']};return db[_0x0ae7('0x47')][_0x0ae7('0x25')](_0x55354a)['then'](function(_0x18a33a){_0x4e2d0b[_0x0ae7('0x25')]=_0x18a33a;if(_0xbdb4d7[_0x0ae7('0x38')][_0x0ae7('0x48')]){_0x57141f[_0x0ae7('0x49')]=[{'all':!![]}];}return db[_0x0ae7('0x47')][_0x0ae7('0x4a')](_0x57141f);})['then'](function(_0x3929d8){_0x4e2d0b[_0x0ae7('0x4b')]=_0x3929d8;return _0x4e2d0b;})[_0x0ae7('0x2c')](respondWithFilteredResult(_0x46855f,_0x57141f))[_0x0ae7('0x4c')](handleError(_0x46855f,null));};exports['show']=function(_0x1d6f50,_0x3f8ae0){var _0x2f3e81={'raw':!![],'where':{'id':_0x1d6f50[_0x0ae7('0x4d')]['id']}},_0x1339d4={};_0x1339d4[_0x0ae7('0x3f')]=_[_0x0ae7('0x39')](db[_0x0ae7('0x47')][_0x0ae7('0x4e')]);_0x1339d4[_0x0ae7('0x38')]=_['keys'](_0x1d6f50[_0x0ae7('0x38')]);_0x1339d4['filters']=_['intersection'](_0x1339d4['model'],_0x1339d4['query']);_0x2f3e81['attributes']=_['intersection'](_0x1339d4[_0x0ae7('0x3f')],qs[_0x0ae7('0x3d')](_0x1d6f50[_0x0ae7('0x38')][_0x0ae7('0x3d')]));_0x2f3e81[_0x0ae7('0x3c')]=_0x2f3e81[_0x0ae7('0x3c')][_0x0ae7('0x3e')]?_0x2f3e81[_0x0ae7('0x3c')]:_0x1339d4[_0x0ae7('0x3f')];if(_0x1d6f50[_0x0ae7('0x38')][_0x0ae7('0x48')]){_0x2f3e81[_0x0ae7('0x49')]=[{'all':!![]}];}_0x2f3e81=_[_0x0ae7('0x45')]({},_0x2f3e81,_0x1d6f50[_0x0ae7('0x46')]);return db[_0x0ae7('0x47')][_0x0ae7('0x4f')](_0x2f3e81)['then'](handleEntityNotFound(_0x3f8ae0,null))[_0x0ae7('0x2c')](respondWithResult(_0x3f8ae0,null))[_0x0ae7('0x4c')](handleError(_0x3f8ae0,null));};exports['create']=function(_0x50833d,_0x225037){return db[_0x0ae7('0x47')][_0x0ae7('0x50')](_0x50833d['body'],{})[_0x0ae7('0x2c')](function(_0x2f194a){var _0x60d34c=_0x50833d[_0x0ae7('0x51')]['get']({'plain':!![]});if(!_0x60d34c)throw new Error(_0x0ae7('0x52'));if(_0x60d34c['role']===_0x0ae7('0x51')){var _0x29729a=_0x2f194a[_0x0ae7('0x2e')]({'plain':!![]});var _0x13ed22='OpenchannelQueues';return db[_0x0ae7('0x53')][_0x0ae7('0x4f')]({'where':{'name':_0x13ed22,'userProfileId':_0x60d34c['userProfileId']},'raw':!![]})[_0x0ae7('0x2c')](function(_0x3736c2){if(_0x3736c2&&_0x3736c2[_0x0ae7('0x54')]===0x0){return db['UserProfileResource'][_0x0ae7('0x50')]({'name':_0x29729a[_0x0ae7('0x33')],'resourceId':_0x29729a['id'],'type':_0x3736c2[_0x0ae7('0x33')],'sectionId':_0x3736c2['id']},{})['then'](function(){return _0x2f194a;});}else{return _0x2f194a;}})[_0x0ae7('0x4c')](function(_0xac16ca){logger[_0x0ae7('0x31')](_0x0ae7('0x55'),_0xac16ca);throw _0xac16ca;});}return _0x2f194a;})[_0x0ae7('0x2c')](respondWithResult(_0x225037,0xc9))[_0x0ae7('0x4c')](handleError(_0x225037,null));};exports[_0x0ae7('0x2b')]=function(_0x4938eb,_0x2e4e64){if(_0x4938eb['body']['id']){delete _0x4938eb['body']['id'];}return db[_0x0ae7('0x47')][_0x0ae7('0x4f')]({'where':{'id':_0x4938eb[_0x0ae7('0x4d')]['id']}})[_0x0ae7('0x2c')](handleEntityNotFound(_0x2e4e64,null))[_0x0ae7('0x2c')](saveUpdates(_0x4938eb[_0x0ae7('0x56')],null))['then'](respondWithResult(_0x2e4e64,null))['catch'](handleError(_0x2e4e64,null));};exports[_0x0ae7('0x2d')]=function(_0x35698c,_0x4c899c){return db[_0x0ae7('0x47')][_0x0ae7('0x4f')]({'where':{'id':_0x35698c[_0x0ae7('0x4d')]['id']}})[_0x0ae7('0x2c')](handleEntityNotFound(_0x4c899c,null))[_0x0ae7('0x2c')](removeEntity(_0x4c899c,null))['catch'](handleError(_0x4c899c,null));};exports[_0x0ae7('0x57')]=function(_0x2f7612,_0x3736a1){return db[_0x0ae7('0x47')]['describe']()[_0x0ae7('0x2c')](respondWithResult(_0x3736a1,null))[_0x0ae7('0x4c')](handleError(_0x3736a1,null));};exports[_0x0ae7('0x58')]=function(_0x4ff506,_0x4046a7,_0x451531){var _0xa4a9ad={'raw':!![],'where':{}},_0x27e7e0={},_0x1c73b0;return db[_0x0ae7('0x47')][_0x0ae7('0x59')]({'where':{'id':_0x4ff506[_0x0ae7('0x4d')]['id']}})['then'](handleEntityNotFound(_0x4046a7,null))[_0x0ae7('0x2c')](function(_0x29cbd7){if(_0x29cbd7){_0x1c73b0=_0x29cbd7[_0x0ae7('0x2e')]({'plain':!![]});_0x27e7e0['model']=_[_0x0ae7('0x39')](db[_0x0ae7('0x5a')][_0x0ae7('0x4e')]);_0x27e7e0[_0x0ae7('0x38')]=_['keys'](_0x4ff506[_0x0ae7('0x38')]);_0x27e7e0[_0x0ae7('0x3a')]=_[_0x0ae7('0x3b')](_0x27e7e0[_0x0ae7('0x3f')],_0x27e7e0['query']);_0xa4a9ad[_0x0ae7('0x3c')]=_[_0x0ae7('0x3b')](_0x27e7e0['model'],qs['fields'](_0x4ff506[_0x0ae7('0x38')]['fields']));_0xa4a9ad[_0x0ae7('0x3c')]=_0xa4a9ad[_0x0ae7('0x3c')][_0x0ae7('0x3e')]?_0xa4a9ad['attributes']:_0x27e7e0[_0x0ae7('0x3f')];if(!_0x4ff506['query'][_0x0ae7('0x40')](_0x0ae7('0x41'))){_0xa4a9ad[_0x0ae7('0x23')]=qs[_0x0ae7('0x23')](_0x4ff506[_0x0ae7('0x38')][_0x0ae7('0x23')]);_0xa4a9ad[_0x0ae7('0x22')]=qs[_0x0ae7('0x22')](_0x4ff506[_0x0ae7('0x38')]['offset']);}_0xa4a9ad[_0x0ae7('0x5b')]=qs[_0x0ae7('0x42')](_0x4ff506[_0x0ae7('0x38')][_0x0ae7('0x42')]);_0xa4a9ad[_0x0ae7('0x43')]=qs[_0x0ae7('0x3a')](_['pick'](_0x4ff506['query'],_0x27e7e0[_0x0ae7('0x3a')]));_0xa4a9ad[_0x0ae7('0x43')]['OpenchannelQueueId']=_0x29cbd7['id'];if(_0x4ff506[_0x0ae7('0x38')][_0x0ae7('0x44')]){_0xa4a9ad[_0x0ae7('0x43')]=_[_0x0ae7('0x45')](_0xa4a9ad['where'],{'$or':_[_0x0ae7('0x35')](_0xa4a9ad[_0x0ae7('0x3c')],function(_0x52f25c){var _0x450616={};_0x450616[_0x52f25c]={'$like':'%'+_0x4ff506[_0x0ae7('0x38')][_0x0ae7('0x44')]+'%'};return _0x450616;})});}_0xa4a9ad=_[_0x0ae7('0x45')]({},_0xa4a9ad,_0x4ff506['options']);return db[_0x0ae7('0x5a')][_0x0ae7('0x4a')](_0xa4a9ad);}})['then'](function(_0x4b0e03){if(_0x4b0e03){return db[_0x0ae7('0x5c')]['findAndCountAll']({'where':{'id':_[_0x0ae7('0x35')](_0x4b0e03,'UserId'),'role':_0x0ae7('0x5d')},'attributes':['id',_0x0ae7('0x33'),_0x0ae7('0x5e'),_0x0ae7('0x5f'),_0x0ae7('0x60')]});}})['then'](function(_0x3b247b){if(_0x3b247b){return{'count':_0x3b247b['count'],'rows':_[_0x0ae7('0x35')](_0x3b247b[_0x0ae7('0x4b')],function(_0x36da30){return{'membername':_0x36da30[_0x0ae7('0x33')],'UserId':_0x36da30['id'],'queue_name':_0x1c73b0[_0x0ae7('0x33')],'OpenchannelQueueId':_0x1c73b0['id'],'interface':util[_0x0ae7('0x61')](_0x0ae7('0x62'),_0x0ae7('0x63'),_0x36da30[_0x0ae7('0x33')]),'penalty':0x0,'paused':_0x36da30['openchannelPause'],'createdAt':_0x36da30['createdAt'],'updatedAt':_0x36da30['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0x0ae7('0x2c')](respondWithFilteredResult(_0x4046a7,_0xa4a9ad))[_0x0ae7('0x4c')](handleError(_0x4046a7,null));};exports[_0x0ae7('0x64')]=function(_0x1a009e,_0x37e89e,_0x38d541){var _0x46bdde={};var _0x2b02e9={};var _0x31d90e;var _0x1fb0c4;return db[_0x0ae7('0x47')][_0x0ae7('0x59')]({'where':{'id':_0x1a009e[_0x0ae7('0x4d')]['id']}})[_0x0ae7('0x2c')](handleEntityNotFound(_0x37e89e,null))[_0x0ae7('0x2c')](function(_0x48d112){if(_0x48d112){_0x31d90e=_0x48d112;_0x2b02e9['model']=_[_0x0ae7('0x39')](db['Team'][_0x0ae7('0x4e')]);_0x2b02e9['query']=_[_0x0ae7('0x39')](_0x1a009e[_0x0ae7('0x38')]);_0x2b02e9[_0x0ae7('0x3a')]=_[_0x0ae7('0x3b')](_0x2b02e9[_0x0ae7('0x3f')],_0x2b02e9[_0x0ae7('0x38')]);_0x46bdde[_0x0ae7('0x3c')]=_[_0x0ae7('0x3b')](_0x2b02e9[_0x0ae7('0x3f')],qs[_0x0ae7('0x3d')](_0x1a009e[_0x0ae7('0x38')][_0x0ae7('0x3d')]));_0x46bdde[_0x0ae7('0x3c')]=_0x46bdde['attributes']['length']?_0x46bdde['attributes']:_0x2b02e9[_0x0ae7('0x3f')];_0x46bdde['order']=qs[_0x0ae7('0x42')](_0x1a009e['query'][_0x0ae7('0x42')]);_0x46bdde[_0x0ae7('0x43')]=qs[_0x0ae7('0x3a')](_['pick'](_0x1a009e[_0x0ae7('0x38')],_0x2b02e9['filters']));if(_0x1a009e[_0x0ae7('0x38')][_0x0ae7('0x44')]){_0x46bdde[_0x0ae7('0x43')]=_['merge'](_0x46bdde[_0x0ae7('0x43')],{'$or':_['map'](_0x46bdde['attributes'],function(_0x21962b){var _0x264130={};_0x264130[_0x21962b]={'$like':'%'+_0x1a009e[_0x0ae7('0x38')][_0x0ae7('0x44')]+'%'};return _0x264130;})});}_0x46bdde=_[_0x0ae7('0x45')]({},_0x46bdde,_0x1a009e[_0x0ae7('0x46')]);return _0x31d90e['getTeams'](_0x46bdde);}})[_0x0ae7('0x2c')](function(_0x593340){if(_0x593340){_0x1fb0c4=_0x593340[_0x0ae7('0x3e')];if(!_0x1a009e[_0x0ae7('0x38')][_0x0ae7('0x40')](_0x0ae7('0x41'))){_0x46bdde[_0x0ae7('0x23')]=qs[_0x0ae7('0x23')](_0x1a009e[_0x0ae7('0x38')][_0x0ae7('0x23')]);_0x46bdde['offset']=qs[_0x0ae7('0x22')](_0x1a009e[_0x0ae7('0x38')]['offset']);}return _0x31d90e[_0x0ae7('0x64')](_0x46bdde);}})[_0x0ae7('0x2c')](function(_0x50bfe7){if(_0x50bfe7){return _0x50bfe7?{'count':_0x1fb0c4,'rows':_0x50bfe7}:null;}})['then'](respondWithResult(_0x37e89e,null))['catch'](handleError(_0x37e89e,null));};exports['addTeams']=function(_0x9958e7,_0x5b0988,_0x5c82ca){var _0x11318e=_0x9958e7[_0x0ae7('0x56')][_0x0ae7('0x65')];return db['Team'][_0x0ae7('0x4a')]({'where':{'id':_0x11318e},'attributes':['id'],'include':[{'model':db[_0x0ae7('0x5c')],'as':_0x0ae7('0x66'),'attributes':['id','name','online',_0x0ae7('0x67'),_0x0ae7('0x68')],'raw':!![]}]})[_0x0ae7('0x2c')](function(_0x1eedda){if(_0x1eedda){var _0xdeb526=_[_0x0ae7('0x69')](_0x1eedda,function(_0x1e72b8){var _0x40b338=_0x1e72b8[_0x0ae7('0x2e')]({'plain':!![]});return _0x40b338[_0x0ae7('0x66')];});return db['OpenchannelQueue']['find']({'where':{'id':_0x9958e7['params']['id']}})[_0x0ae7('0x2c')](function(_0x36a97b){return db[_0x0ae7('0x6a')][_0x0ae7('0x6b')](function(_0x2d51a4){return _0x36a97b[_0x0ae7('0x6c')](_0x11318e,{'transaction':_0x2d51a4})[_0x0ae7('0x2c')](function(){return BPromise[_0x0ae7('0x6d')](_0xdeb526,function(_0x48a930){return db[_0x0ae7('0x5a')]['findOrCreate']({'where':{'UserId':_0x48a930['id'],'OpenchannelQueueId':_0x9958e7[_0x0ae7('0x4d')]['id']},'transaction':_0x2d51a4});});})[_0x0ae7('0x2c')](function(){_0xdeb526[_0x0ae7('0x6e')](function(_0x32e25c){socket[_0x0ae7('0x6f')]('userOpenchannelQueue:save',{'UserId':_0x32e25c['id'],'OpenchannelQueueId':_0x36a97b['id']});});});});});}})[_0x0ae7('0x2c')](respondWithStatusCode(_0x5b0988,null))[_0x0ae7('0x4c')](handleError(_0x5b0988,null));};exports[_0x0ae7('0x70')]=function(_0x1c6456,_0x537917,_0xbda386){return db[_0x0ae7('0x71')][_0x0ae7('0x4a')]({'where':{'id':_0x1c6456[_0x0ae7('0x38')][_0x0ae7('0x65')]},'attributes':['id'],'include':[{'model':db[_0x0ae7('0x5c')],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0x0ae7('0x2c')](handleEntityNotFound(_0x537917,null))['then'](function(_0x1b0876){var _0x501d60=_[_0x0ae7('0x35')](_0x1b0876,'id');var _0x3f9521=[];var _0x337a7a=[];var _0x1894b0=squel['select']();_0x1894b0[_0x0ae7('0x72')]('tq.TeamId')['from']('team_has_openchannel_queues','tq')[_0x0ae7('0x73')](_0x0ae7('0x74'),'ut',_0x0ae7('0x75'))['where'](_0x0ae7('0x76'),_0x1c6456[_0x0ae7('0x4d')]['id']);for(var _0x4cd2f5=0x0;_0x4cd2f5<_0x1b0876[_0x0ae7('0x3e')];_0x4cd2f5+=0x1){let _0x3131b1=_0x1b0876[_0x4cd2f5];for(var _0xece2b7=0x0;_0xece2b7<_0x3131b1[_0x0ae7('0x66')]['length'];_0xece2b7+=0x1){let _0x803075=_0x3131b1[_0x0ae7('0x66')][_0xece2b7];var _0xd4d203=_0x1894b0['clone']();_0xd4d203[_0x0ae7('0x43')](_0x0ae7('0x77'),_0x803075['id']);_0x337a7a[_0x0ae7('0x78')](db[_0x0ae7('0x6a')][_0x0ae7('0x38')](_0xd4d203['toString'](),{'type':db['sequelize'][_0x0ae7('0x79')][_0x0ae7('0x7a')]})[_0x0ae7('0x2c')](function(_0x1311cf){if(_0x1311cf['length']===0x1){return _0x803075['id'];}else{var _0x25b33f=_[_0x0ae7('0x7b')](_[_0x0ae7('0x35')](_0x1311cf,'TeamId'),function(_0x43b94e){return _['includes'](_0x501d60,_0x43b94e);});if(_0x25b33f){return _0x803075['id'];}}}));}}return BPromise[_0x0ae7('0x7c')](_0x337a7a)[_0x0ae7('0x2c')](function(_0x391b01){_0x3f9521=_(_0x3f9521)['union'](_0x391b01)[_0x0ae7('0x7d')]()[_0x0ae7('0x7e')]();return db[_0x0ae7('0x47')][_0x0ae7('0x4f')]({'where':{'id':_0x1c6456[_0x0ae7('0x4d')]['id']}})[_0x0ae7('0x2c')](function(_0x36e95d){return db[_0x0ae7('0x6a')]['transaction'](function(_0x109da3){return _0x36e95d[_0x0ae7('0x70')](_0x1c6456[_0x0ae7('0x38')][_0x0ae7('0x65')],{'transaction':_0x109da3})[_0x0ae7('0x2c')](function(){if(!_[_0x0ae7('0x7f')](_0x3f9521)){return _0x36e95d[_0x0ae7('0x80')](_0x3f9521,{'transaction':_0x109da3});}})[_0x0ae7('0x2c')](function(){_0x3f9521['forEach'](function(_0x1f9668){socket[_0x0ae7('0x6f')](_0x0ae7('0x81'),{'UserId':_0x1f9668,'OpenchannelQueueId':_0x36e95d['id']});});});});});});})[_0x0ae7('0x2c')](respondWithStatusCode(_0x537917,null))[_0x0ae7('0x4c')](handleError(_0x537917,null));};exports[_0x0ae7('0x82')]=function(_0x62d5d8,_0x4521f0,_0x409faf){return db[_0x0ae7('0x47')][_0x0ae7('0x4f')]({'where':{'id':_0x62d5d8[_0x0ae7('0x4d')]['id']}})[_0x0ae7('0x2c')](handleEntityNotFound(_0x4521f0,null))[_0x0ae7('0x2c')](function(_0x3c5d17){if(_0x3c5d17){return _0x3c5d17[_0x0ae7('0x82')](_0x62d5d8['body'][_0x0ae7('0x65')],_[_0x0ae7('0x83')](_0x62d5d8[_0x0ae7('0x56')],[_0x0ae7('0x65'),'id'])||{})[_0x0ae7('0x84')](function(_0x4b9c59){for(var _0x386938=0x0;_0x386938<_0x62d5d8[_0x0ae7('0x56')]['ids'][_0x0ae7('0x3e')];_0x386938+=0x1){socket[_0x0ae7('0x6f')](_0x0ae7('0x85'),{'UserId':Number(_0x62d5d8[_0x0ae7('0x56')]['ids'][_0x386938]),'OpenchannelQueueId':Number(_0x62d5d8['params']['id'])});}return _0x4b9c59;});}})['then'](respondWithResult(_0x4521f0,null))[_0x0ae7('0x4c')](handleError(_0x4521f0,null));};exports[_0x0ae7('0x80')]=function(_0x2ccc67,_0xd81745,_0x117e85){return db[_0x0ae7('0x47')][_0x0ae7('0x4f')]({'where':{'id':_0x2ccc67[_0x0ae7('0x4d')]['id']}})[_0x0ae7('0x2c')](handleEntityNotFound(_0xd81745,null))[_0x0ae7('0x2c')](function(_0x216aa2){if(_0x216aa2){return _0x216aa2[_0x0ae7('0x80')](_0x2ccc67[_0x0ae7('0x38')][_0x0ae7('0x65')])['then'](function(){if(_[_0x0ae7('0x86')](_0x2ccc67[_0x0ae7('0x38')][_0x0ae7('0x65')])){for(var _0x5ec2be=0x0;_0x5ec2be<_0x2ccc67[_0x0ae7('0x38')]['ids'][_0x0ae7('0x3e')];_0x5ec2be+=0x1){socket[_0x0ae7('0x6f')](_0x0ae7('0x81'),{'UserId':Number(_0x2ccc67[_0x0ae7('0x38')]['ids'][_0x5ec2be]),'OpenchannelQueueId':Number(_0x2ccc67[_0x0ae7('0x4d')]['id'])});}}else{socket[_0x0ae7('0x6f')](_0x0ae7('0x81'),{'UserId':Number(_0x2ccc67[_0x0ae7('0x38')][_0x0ae7('0x65')]),'OpenchannelQueueId':Number(_0x2ccc67[_0x0ae7('0x4d')]['id'])});}});}})[_0x0ae7('0x2c')](respondWithStatusCode(_0xd81745,null))[_0x0ae7('0x4c')](handleError(_0xd81745,null));};exports[_0x0ae7('0x87')]=function(_0x7d48f9,_0x3872f7,_0x2d1c3c){var _0x3d2892={};var _0x17ff20={};var _0x49b2b4;var _0x4c1566;return db[_0x0ae7('0x47')][_0x0ae7('0x59')]({'where':{'id':_0x7d48f9[_0x0ae7('0x4d')]['id']}})[_0x0ae7('0x2c')](handleEntityNotFound(_0x3872f7,null))['then'](function(_0xfb0525){if(_0xfb0525){_0x49b2b4=_0xfb0525;_0x17ff20[_0x0ae7('0x3f')]=_[_0x0ae7('0x39')](db[_0x0ae7('0x5c')][_0x0ae7('0x4e')]);_0x17ff20['query']=_[_0x0ae7('0x39')](_0x7d48f9[_0x0ae7('0x38')]);_0x17ff20[_0x0ae7('0x3a')]=_[_0x0ae7('0x3b')](_0x17ff20[_0x0ae7('0x3f')],_0x17ff20['query']);_0x3d2892['attributes']=_[_0x0ae7('0x3b')](_0x17ff20[_0x0ae7('0x3f')],qs[_0x0ae7('0x3d')](_0x7d48f9['query'][_0x0ae7('0x3d')]));_0x3d2892[_0x0ae7('0x3c')]=_0x3d2892[_0x0ae7('0x3c')]['length']?_0x3d2892[_0x0ae7('0x3c')]:_0x17ff20[_0x0ae7('0x3f')];_0x3d2892[_0x0ae7('0x5b')]=qs[_0x0ae7('0x42')](_0x7d48f9[_0x0ae7('0x38')]['sort']);_0x3d2892[_0x0ae7('0x43')]=qs['filters'](_[_0x0ae7('0x88')](_0x7d48f9['query'],_0x17ff20[_0x0ae7('0x3a')]));if(_0x7d48f9[_0x0ae7('0x38')][_0x0ae7('0x44')]){_0x3d2892[_0x0ae7('0x43')]=_[_0x0ae7('0x45')](_0x3d2892[_0x0ae7('0x43')],{'$or':_[_0x0ae7('0x35')](_0x3d2892['attributes'],function(_0x5e5062){var _0xe9ee25={};_0xe9ee25[_0x5e5062]={'$like':'%'+_0x7d48f9['query'][_0x0ae7('0x44')]+'%'};return _0xe9ee25;})});}_0x3d2892=_[_0x0ae7('0x45')]({},_0x3d2892,_0x7d48f9[_0x0ae7('0x46')]);return _0x49b2b4[_0x0ae7('0x87')](_0x3d2892);}})[_0x0ae7('0x2c')](function(_0x22451f){if(_0x22451f){_0x4c1566=_0x22451f[_0x0ae7('0x3e')];if(!_0x7d48f9[_0x0ae7('0x38')]['hasOwnProperty']('nolimit')){_0x3d2892[_0x0ae7('0x23')]=qs['limit'](_0x7d48f9['query'][_0x0ae7('0x23')]);_0x3d2892['offset']=qs['offset'](_0x7d48f9[_0x0ae7('0x38')][_0x0ae7('0x22')]);}return _0x49b2b4[_0x0ae7('0x87')](_0x3d2892);}})['then'](function(_0xc50a8a){if(_0xc50a8a){return _0xc50a8a?{'count':_0x4c1566,'rows':_0xc50a8a}:null;}})[_0x0ae7('0x2c')](respondWithResult(_0x3872f7,null))[_0x0ae7('0x4c')](handleError(_0x3872f7,null));};
\ No newline at end of file
index 04b338a..6721658 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb473=['emit','hook','exports','events','../../mysqldb','setMaxListeners','update','remove'];(function(_0x1dfdbd,_0xeac1e){var _0x41f46d=function(_0x541caf){while(--_0x541caf){_0x1dfdbd['push'](_0x1dfdbd['shift']());}};_0x41f46d(++_0xeac1e);}(_0xb473,0x16b));var _0x3b47=function(_0x561771,_0x554760){_0x561771=_0x561771-0x0;var _0x54d16e=_0xb473[_0x561771];return _0x54d16e;};'use strict';var EventEmitter=require(_0x3b47('0x0'));var OpenchannelQueue=require(_0x3b47('0x1'))['db']['OpenchannelQueue'];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents[_0x3b47('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x3b47('0x3'),'afterDestroy':_0x3b47('0x4')};function emitEvent(_0x5ddc9a){return function(_0x3f3790,_0x175c4e,_0x311fb0){OpenchannelQueueEvents[_0x3b47('0x5')](_0x5ddc9a+':'+_0x3f3790['id'],_0x3f3790);OpenchannelQueueEvents[_0x3b47('0x5')](_0x5ddc9a,_0x3f3790);_0x311fb0(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelQueue[_0x3b47('0x6')](e,emitEvent(event));}}module[_0x3b47('0x7')]=OpenchannelQueueEvents;
\ No newline at end of file
+var _0xaf3c=['events','../../mysqldb','setMaxListeners','update','remove','emit','hook','exports'];(function(_0x1e7b16,_0x4607a1){var _0x37fadc=function(_0x1fc9ce){while(--_0x1fc9ce){_0x1e7b16['push'](_0x1e7b16['shift']());}};_0x37fadc(++_0x4607a1);}(_0xaf3c,0x98));var _0xcaf3=function(_0xae06cf,_0x1ca83c){_0xae06cf=_0xae06cf-0x0;var _0x1e6d0c=_0xaf3c[_0xae06cf];return _0x1e6d0c;};'use strict';var EventEmitter=require(_0xcaf3('0x0'));var OpenchannelQueue=require(_0xcaf3('0x1'))['db']['OpenchannelQueue'];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents[_0xcaf3('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0xcaf3('0x3'),'afterDestroy':_0xcaf3('0x4')};function emitEvent(_0x16d86a){return function(_0x6869b5,_0x43a7c4,_0x47be2d){OpenchannelQueueEvents[_0xcaf3('0x5')](_0x16d86a+':'+_0x6869b5['id'],_0x6869b5);OpenchannelQueueEvents[_0xcaf3('0x5')](_0x16d86a,_0x6869b5);_0x47be2d(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelQueue[_0xcaf3('0x6')](e,emitEvent(event));}}module[_0xcaf3('0x7')]=OpenchannelQueueEvents;
\ No newline at end of file
index b80ac60..2ac14c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x98cb=['../../config/environment','./openchannelQueue.attributes','exports','define','openchannel_queues','lodash','util','../../config/logger','api','bluebird','path','rimraf'];(function(_0x18ebfb,_0x118829){var _0x202a3e=function(_0x17542b){while(--_0x17542b){_0x18ebfb['push'](_0x18ebfb['shift']());}};_0x202a3e(++_0x118829);}(_0x98cb,0x101));var _0xb98c=function(_0x193cad,_0xc11234){_0x193cad=_0x193cad-0x0;var _0x16d5dd=_0x98cb[_0x193cad];return _0x16d5dd;};'use strict';var _=require(_0xb98c('0x0'));var util=require(_0xb98c('0x1'));var logger=require(_0xb98c('0x2'))(_0xb98c('0x3'));var moment=require('moment');var BPromise=require(_0xb98c('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xb98c('0x5'));var rimraf=require(_0xb98c('0x6'));var config=require(_0xb98c('0x7'));var attributes=require(_0xb98c('0x8'));module[_0xb98c('0x9')]=function(_0x2e3248,_0x518072){return _0x2e3248[_0xb98c('0xa')]('OpenchannelQueue',attributes,{'tableName':_0xb98c('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7ff0=['util','api','moment','path','../../config/environment','./openchannelQueue.attributes','exports','define','OpenchannelQueue','openchannel_queues','lodash'];(function(_0x1fc8cf,_0x4c6c69){var _0x5c316d=function(_0x28c2be){while(--_0x28c2be){_0x1fc8cf['push'](_0x1fc8cf['shift']());}};_0x5c316d(++_0x4c6c69);}(_0x7ff0,0xe6));var _0x07ff=function(_0x31a371,_0x50828e){_0x31a371=_0x31a371-0x0;var _0x2a5bd6=_0x7ff0[_0x31a371];return _0x2a5bd6;};'use strict';var _=require(_0x07ff('0x0'));var util=require(_0x07ff('0x1'));var logger=require('../../config/logger')(_0x07ff('0x2'));var moment=require(_0x07ff('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x07ff('0x4'));var rimraf=require('rimraf');var config=require(_0x07ff('0x5'));var attributes=require(_0x07ff('0x6'));module[_0x07ff('0x7')]=function(_0x1a782b,_0x2e2456){return _0x1a782b[_0x07ff('0x8')](_0x07ff('0x9'),attributes,{'tableName':_0x07ff('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e6b0ed6..75288ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c5b=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./openchannelQueue.socket','request','then','info','request\x20sent','OpenchannelQueue,\x20%s,\x20%s,\x20%s','error','code','OpenchannelQueue,\x20%s,\x20%s','message','catch','findAll','raw','options','where','attributes','include','map','model','GetOpenchannelQueue','debug','stringify','ShowOpenchannelQueue','OpenchannelQueue','lodash','moment','bluebird','randomstring'];(function(_0xa164df,_0x5d69eb){var _0x29b157=function(_0x3e601d){while(--_0x3e601d){_0xa164df['push'](_0xa164df['shift']());}};_0x29b157(++_0x5d69eb);}(_0x9c5b,0x1d0));var _0xb9c5=function(_0x3e3f27,_0x2c2ecf){_0x3e3f27=_0x3e3f27-0x0;var _0x15c868=_0x9c5b[_0x3e3f27];return _0x15c868;};'use strict';var _=require(_0xb9c5('0x0'));var util=require('util');var moment=require(_0xb9c5('0x1'));var BPromise=require(_0xb9c5('0x2'));var rs=require(_0xb9c5('0x3'));var fs=require('fs');var Redis=require(_0xb9c5('0x4'));var db=require(_0xb9c5('0x5'))['db'];var utils=require(_0xb9c5('0x6'));var logger=require(_0xb9c5('0x7'))(_0xb9c5('0x8'));var config=require('../../config/environment');var jayson=require(_0xb9c5('0x9'));var client=jayson['client'][_0xb9c5('0xa')]({'port':0x232a});config[_0xb9c5('0xb')]=_[_0xb9c5('0xc')](config[_0xb9c5('0xb')],{'host':_0xb9c5('0xd'),'port':0x18eb});var socket=require(_0xb9c5('0xe'))(new Redis(config[_0xb9c5('0xb')]));require(_0xb9c5('0xf'))['register'](socket);function respondWithRpcPromise(_0x4e71df,_0x220fca,_0x5e1187){return new BPromise(function(_0x3d1a8f,_0x1c5f2f){return client[_0xb9c5('0x10')](_0x4e71df,_0x5e1187)[_0xb9c5('0x11')](function(_0x4251ef){logger[_0xb9c5('0x12')]('OpenchannelQueue,\x20%s,\x20%s',_0x220fca,_0xb9c5('0x13'));logger['debug'](_0xb9c5('0x14'),_0x220fca,_0xb9c5('0x13'),JSON['stringify'](_0x4251ef));if(_0x4251ef[_0xb9c5('0x15')]){if(_0x4251ef[_0xb9c5('0x15')][_0xb9c5('0x16')]===0x1f4){logger['error'](_0xb9c5('0x17'),_0x220fca,_0x4251ef[_0xb9c5('0x15')][_0xb9c5('0x18')]);return _0x1c5f2f(_0x4251ef['error']['message']);}logger['error']('OpenchannelQueue,\x20%s,\x20%s',_0x220fca,_0x4251ef[_0xb9c5('0x15')][_0xb9c5('0x18')]);return _0x3d1a8f(_0x4251ef[_0xb9c5('0x15')]['message']);}else{logger['info'](_0xb9c5('0x17'),_0x220fca,'request\x20sent');_0x3d1a8f(_0x4251ef['result'][_0xb9c5('0x18')]);}})[_0xb9c5('0x19')](function(_0x284a85){logger[_0xb9c5('0x15')]('OpenchannelQueue,\x20%s,\x20%s',_0x220fca,_0x284a85);_0x1c5f2f(_0x284a85);});});}exports['GetOpenchannelQueue']=function(_0x2ffbaf){var _0x431ea2=this;return new Promise(function(_0x19c5ab,_0x28d089){return db['OpenchannelQueue'][_0xb9c5('0x1a')]({'raw':_0x2ffbaf['options']?_0x2ffbaf['options'][_0xb9c5('0x1b')]===undefined?!![]:![]:!![],'where':_0x2ffbaf[_0xb9c5('0x1c')]?_0x2ffbaf['options'][_0xb9c5('0x1d')]||null:null,'attributes':_0x2ffbaf[_0xb9c5('0x1c')]?_0x2ffbaf[_0xb9c5('0x1c')][_0xb9c5('0x1e')]||null:null,'limit':_0x2ffbaf[_0xb9c5('0x1c')]?_0x2ffbaf[_0xb9c5('0x1c')]['limit']||null:null,'include':_0x2ffbaf[_0xb9c5('0x1c')]?_0x2ffbaf['options'][_0xb9c5('0x1f')]?_[_0xb9c5('0x20')](_0x2ffbaf['options'][_0xb9c5('0x1f')],function(_0x23452d){return{'model':db[_0x23452d['model']],'as':_0x23452d['as'],'attributes':_0x23452d[_0xb9c5('0x1e')],'include':_0x23452d['include']?_[_0xb9c5('0x20')](_0x23452d[_0xb9c5('0x1f')],function(_0x2d2973){return{'model':db[_0x2d2973[_0xb9c5('0x21')]],'as':_0x2d2973['as'],'attributes':_0x2d2973['attributes'],'include':_0x2d2973[_0xb9c5('0x1f')]?_['map'](_0x2d2973[_0xb9c5('0x1f')],function(_0x13366c){return{'model':db[_0x13366c['model']],'as':_0x13366c['as'],'attributes':_0x13366c[_0xb9c5('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xb9c5('0x11')](function(_0x2fc408){logger[_0xb9c5('0x12')](_0xb9c5('0x22'),_0x2ffbaf);logger[_0xb9c5('0x23')](_0xb9c5('0x22'),_0x2ffbaf,JSON[_0xb9c5('0x24')](_0x2fc408));_0x19c5ab(_0x2fc408);})[_0xb9c5('0x19')](function(_0xa7a014){logger['error'](_0xb9c5('0x22'),_0xa7a014[_0xb9c5('0x18')],_0x2ffbaf);_0x28d089(_0x431ea2[_0xb9c5('0x15')](0x1f4,_0xa7a014[_0xb9c5('0x18')]));});});};exports[_0xb9c5('0x25')]=function(_0x241cb0){var _0x33550a=this;return new Promise(function(_0x1eff05,_0x923dc){return db[_0xb9c5('0x26')]['find']({'raw':_0x241cb0[_0xb9c5('0x1c')]?_0x241cb0[_0xb9c5('0x1c')][_0xb9c5('0x1b')]===undefined?!![]:![]:!![],'where':_0x241cb0[_0xb9c5('0x1c')]?_0x241cb0['options'][_0xb9c5('0x1d')]||null:null,'attributes':_0x241cb0[_0xb9c5('0x1c')]?_0x241cb0[_0xb9c5('0x1c')][_0xb9c5('0x1e')]||null:null,'include':_0x241cb0[_0xb9c5('0x1c')]?_0x241cb0[_0xb9c5('0x1c')][_0xb9c5('0x1f')]?_['map'](_0x241cb0[_0xb9c5('0x1c')][_0xb9c5('0x1f')],function(_0x3f8564){return{'model':db[_0x3f8564[_0xb9c5('0x21')]],'as':_0x3f8564['as'],'attributes':_0x3f8564[_0xb9c5('0x1e')],'include':_0x3f8564[_0xb9c5('0x1f')]?_[_0xb9c5('0x20')](_0x3f8564[_0xb9c5('0x1f')],function(_0x30d4ba){return{'model':db[_0x30d4ba['model']],'as':_0x30d4ba['as'],'attributes':_0x30d4ba[_0xb9c5('0x1e')],'include':_0x30d4ba[_0xb9c5('0x1f')]?_[_0xb9c5('0x20')](_0x30d4ba['include'],function(_0x3871a4){return{'model':db[_0x3871a4['model']],'as':_0x3871a4['as'],'attributes':_0x3871a4['attributes']};}):[]};}):[]};}):[]:[]})[_0xb9c5('0x11')](function(_0x55b406){logger[_0xb9c5('0x12')](_0xb9c5('0x25'),_0x241cb0);logger['debug'](_0xb9c5('0x25'),_0x241cb0,JSON['stringify'](_0x55b406));_0x1eff05(_0x55b406);})[_0xb9c5('0x19')](function(_0xf86b8f){logger[_0xb9c5('0x15')]('ShowOpenchannelQueue',_0xf86b8f[_0xb9c5('0x18')],_0x241cb0);_0x923dc(_0x33550a[_0xb9c5('0x15')](0x1f4,_0xf86b8f[_0xb9c5('0x18')]));});});};
\ No newline at end of file
+var _0x7641=['stringify','find','ShowOpenchannelQueue','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','redis','./openchannelQueue.socket','register','request','then','info','OpenchannelQueue,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','GetOpenchannelQueue','OpenchannelQueue','findAll','options','raw','where','attributes','include','map','model'];(function(_0x201321,_0x27a1be){var _0x15c938=function(_0x394e8e){while(--_0x394e8e){_0x201321['push'](_0x201321['shift']());}};_0x15c938(++_0x27a1be);}(_0x7641,0x1f1));var _0x1764=function(_0x33032e,_0x31411a){_0x33032e=_0x33032e-0x0;var _0x13316b=_0x7641[_0x33032e];return _0x13316b;};'use strict';var _=require(_0x1764('0x0'));var util=require(_0x1764('0x1'));var moment=require(_0x1764('0x2'));var BPromise=require('bluebird');var rs=require(_0x1764('0x3'));var fs=require('fs');var Redis=require(_0x1764('0x4'));var db=require(_0x1764('0x5'))['db'];var utils=require(_0x1764('0x6'));var logger=require('../../config/logger')(_0x1764('0x7'));var config=require(_0x1764('0x8'));var jayson=require(_0x1764('0x9'));var client=jayson['client'][_0x1764('0xa')]({'port':0x232a});config[_0x1764('0xb')]=_['defaults'](config[_0x1764('0xb')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x1764('0xb')]));require(_0x1764('0xc'))[_0x1764('0xd')](socket);function respondWithRpcPromise(_0x3737e9,_0xfbd23f,_0x106bb1){return new BPromise(function(_0xc2c422,_0x5839a0){return client[_0x1764('0xe')](_0x3737e9,_0x106bb1)[_0x1764('0xf')](function(_0x22ec08){logger[_0x1764('0x10')](_0x1764('0x11'),_0xfbd23f,_0x1764('0x12'));logger[_0x1764('0x13')]('OpenchannelQueue,\x20%s,\x20%s,\x20%s',_0xfbd23f,_0x1764('0x12'),JSON['stringify'](_0x22ec08));if(_0x22ec08[_0x1764('0x14')]){if(_0x22ec08[_0x1764('0x14')][_0x1764('0x15')]===0x1f4){logger[_0x1764('0x14')](_0x1764('0x11'),_0xfbd23f,_0x22ec08[_0x1764('0x14')][_0x1764('0x16')]);return _0x5839a0(_0x22ec08[_0x1764('0x14')][_0x1764('0x16')]);}logger['error'](_0x1764('0x11'),_0xfbd23f,_0x22ec08[_0x1764('0x14')][_0x1764('0x16')]);return _0xc2c422(_0x22ec08[_0x1764('0x14')][_0x1764('0x16')]);}else{logger[_0x1764('0x10')](_0x1764('0x11'),_0xfbd23f,_0x1764('0x12'));_0xc2c422(_0x22ec08[_0x1764('0x17')]['message']);}})[_0x1764('0x18')](function(_0x2d01a9){logger[_0x1764('0x14')](_0x1764('0x11'),_0xfbd23f,_0x2d01a9);_0x5839a0(_0x2d01a9);});});}exports[_0x1764('0x19')]=function(_0x2e516b){var _0x4df8f3=this;return new Promise(function(_0x8491d0,_0x15ce42){return db[_0x1764('0x1a')][_0x1764('0x1b')]({'raw':_0x2e516b[_0x1764('0x1c')]?_0x2e516b[_0x1764('0x1c')][_0x1764('0x1d')]===undefined?!![]:![]:!![],'where':_0x2e516b[_0x1764('0x1c')]?_0x2e516b[_0x1764('0x1c')][_0x1764('0x1e')]||null:null,'attributes':_0x2e516b['options']?_0x2e516b[_0x1764('0x1c')][_0x1764('0x1f')]||null:null,'limit':_0x2e516b[_0x1764('0x1c')]?_0x2e516b['options']['limit']||null:null,'include':_0x2e516b[_0x1764('0x1c')]?_0x2e516b[_0x1764('0x1c')][_0x1764('0x20')]?_[_0x1764('0x21')](_0x2e516b[_0x1764('0x1c')][_0x1764('0x20')],function(_0x8e7b72){return{'model':db[_0x8e7b72['model']],'as':_0x8e7b72['as'],'attributes':_0x8e7b72[_0x1764('0x1f')],'include':_0x8e7b72['include']?_['map'](_0x8e7b72[_0x1764('0x20')],function(_0x5c10ec){return{'model':db[_0x5c10ec['model']],'as':_0x5c10ec['as'],'attributes':_0x5c10ec['attributes'],'include':_0x5c10ec['include']?_[_0x1764('0x21')](_0x5c10ec[_0x1764('0x20')],function(_0x4bc439){return{'model':db[_0x4bc439[_0x1764('0x22')]],'as':_0x4bc439['as'],'attributes':_0x4bc439['attributes']};}):[]};}):[]};}):[]:[]})[_0x1764('0xf')](function(_0x3e5ad2){logger[_0x1764('0x10')](_0x1764('0x19'),_0x2e516b);logger[_0x1764('0x13')](_0x1764('0x19'),_0x2e516b,JSON[_0x1764('0x23')](_0x3e5ad2));_0x8491d0(_0x3e5ad2);})['catch'](function(_0x206b8b){logger['error'](_0x1764('0x19'),_0x206b8b[_0x1764('0x16')],_0x2e516b);_0x15ce42(_0x4df8f3[_0x1764('0x14')](0x1f4,_0x206b8b[_0x1764('0x16')]));});});};exports['ShowOpenchannelQueue']=function(_0x39a621){var _0x14eb8e=this;return new Promise(function(_0x504c4d,_0x50fe1a){return db[_0x1764('0x1a')][_0x1764('0x24')]({'raw':_0x39a621['options']?_0x39a621[_0x1764('0x1c')][_0x1764('0x1d')]===undefined?!![]:![]:!![],'where':_0x39a621[_0x1764('0x1c')]?_0x39a621[_0x1764('0x1c')][_0x1764('0x1e')]||null:null,'attributes':_0x39a621['options']?_0x39a621[_0x1764('0x1c')][_0x1764('0x1f')]||null:null,'include':_0x39a621['options']?_0x39a621[_0x1764('0x1c')]['include']?_[_0x1764('0x21')](_0x39a621[_0x1764('0x1c')][_0x1764('0x20')],function(_0x3394c8){return{'model':db[_0x3394c8['model']],'as':_0x3394c8['as'],'attributes':_0x3394c8[_0x1764('0x1f')],'include':_0x3394c8[_0x1764('0x20')]?_[_0x1764('0x21')](_0x3394c8['include'],function(_0x19406c){return{'model':db[_0x19406c['model']],'as':_0x19406c['as'],'attributes':_0x19406c[_0x1764('0x1f')],'include':_0x19406c['include']?_[_0x1764('0x21')](_0x19406c[_0x1764('0x20')],function(_0x5027bb){return{'model':db[_0x5027bb['model']],'as':_0x5027bb['as'],'attributes':_0x5027bb[_0x1764('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x1764('0xf')](function(_0x34d7c8){logger['info']('ShowOpenchannelQueue',_0x39a621);logger[_0x1764('0x13')]('ShowOpenchannelQueue',_0x39a621,JSON['stringify'](_0x34d7c8));_0x504c4d(_0x34d7c8);})[_0x1764('0x18')](function(_0x4ff42a){logger[_0x1764('0x14')](_0x1764('0x25'),_0x4ff42a[_0x1764('0x16')],_0x39a621);_0x50fe1a(_0x14eb8e[_0x1764('0x14')](0x1f4,_0x4ff42a[_0x1764('0x16')]));});});};
\ No newline at end of file
index c10b0a7..f44d33f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3200=['length','./openchannelQueue.events','save','remove','emit','removeListener','register'];(function(_0x59334c,_0x170037){var _0x490338=function(_0x2efc68){while(--_0x2efc68){_0x59334c['push'](_0x59334c['shift']());}};_0x490338(++_0x170037);}(_0x3200,0x1dd));var _0x0320=function(_0x28ea42,_0x2b4580){_0x28ea42=_0x28ea42-0x0;var _0x2a354e=_0x3200[_0x28ea42];return _0x2a354e;};'use strict';var OpenchannelQueueEvents=require(_0x0320('0x0'));var events=[_0x0320('0x1'),_0x0320('0x2'),'update'];function createListener(_0x2c1083,_0x51a97a){return function(_0x22e613){_0x51a97a[_0x0320('0x3')](_0x2c1083,_0x22e613);};}function removeListener(_0x422eef,_0x387e92){return function(){OpenchannelQueueEvents[_0x0320('0x4')](_0x422eef,_0x387e92);};}exports[_0x0320('0x5')]=function(_0x5e7486){for(var _0x3f31d0=0x0,_0x5994f9=events[_0x0320('0x6')];_0x3f31d0<_0x5994f9;_0x3f31d0++){var _0x5d65c0=events[_0x3f31d0];var _0x591092=createListener('openchannelQueue:'+_0x5d65c0,_0x5e7486);OpenchannelQueueEvents['on'](_0x5d65c0,_0x591092);}};
\ No newline at end of file
+var _0x6b1d=['remove','update','emit','removeListener','register','openchannelQueue:','./openchannelQueue.events'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x6b1d,0x164));var _0xd6b1=function(_0x29aa84,_0x25a260){_0x29aa84=_0x29aa84-0x0;var _0x46cc12=_0x6b1d[_0x29aa84];return _0x46cc12;};'use strict';var OpenchannelQueueEvents=require(_0xd6b1('0x0'));var events=['save',_0xd6b1('0x1'),_0xd6b1('0x2')];function createListener(_0x240cab,_0x30d149){return function(_0x42d010){_0x30d149[_0xd6b1('0x3')](_0x240cab,_0x42d010);};}function removeListener(_0xc44951,_0x2316c6){return function(){OpenchannelQueueEvents[_0xd6b1('0x4')](_0xc44951,_0x2316c6);};}exports[_0xd6b1('0x5')]=function(_0x530dd0){for(var _0x5ddb2f=0x0,_0x478fc5=events['length'];_0x5ddb2f<_0x478fc5;_0x5ddb2f++){var _0x17db75=events[_0x5ddb2f];var _0x502f17=createListener(_0xd6b1('0x6')+_0x17db75,_0x530dd0);OpenchannelQueueEvents['on'](_0x17db75,_0x502f17);}};
\ No newline at end of file
index 77547c1..386c345 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f22=['describe','/:id','show','put','update','delete','destroy','exports','multer','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelQueueReport.controller','get','isAuthenticated','index','/describe'];(function(_0x12f091,_0x285c9d){var _0x2c285b=function(_0x35c4fb){while(--_0x35c4fb){_0x12f091['push'](_0x12f091['shift']());}};_0x2c285b(++_0x285c9d);}(_0x5f22,0x1ac));var _0x25f2=function(_0x213518,_0x51e022){_0x213518=_0x213518-0x0;var _0x1baf75=_0x5f22[_0x213518];return _0x1baf75;};'use strict';var multer=require(_0x25f2('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x25f2('0x1'));var express=require(_0x25f2('0x2'));var router=express['Router']();var fs_extra=require(_0x25f2('0x3'));var auth=require(_0x25f2('0x4'));var interaction=require(_0x25f2('0x5'));var config=require(_0x25f2('0x6'));var controller=require(_0x25f2('0x7'));router[_0x25f2('0x8')]('/',auth[_0x25f2('0x9')](),controller[_0x25f2('0xa')]);router[_0x25f2('0x8')](_0x25f2('0xb'),auth[_0x25f2('0x9')](),controller[_0x25f2('0xc')]);router[_0x25f2('0x8')](_0x25f2('0xd'),auth['isAuthenticated'](),controller[_0x25f2('0xe')]);router['post']('/',auth[_0x25f2('0x9')](),controller['create']);router[_0x25f2('0xf')]('/:id',auth[_0x25f2('0x9')](),controller[_0x25f2('0x10')]);router[_0x25f2('0x11')](_0x25f2('0xd'),auth[_0x25f2('0x9')](),controller[_0x25f2('0x12')]);module[_0x25f2('0x13')]=router;
\ No newline at end of file
+var _0xee21=['get','isAuthenticated','index','/describe','describe','/:id','show','post','put','update','delete','destroy','exports','util','path','Router','fs-extra','../../components/interaction/service','../../config/environment'];(function(_0x65ca71,_0x126845){var _0x5cb16e=function(_0xe1143b){while(--_0xe1143b){_0x65ca71['push'](_0x65ca71['shift']());}};_0x5cb16e(++_0x126845);}(_0xee21,0xb8));var _0x1ee2=function(_0x52598d,_0x10fb73){_0x52598d=_0x52598d-0x0;var _0x170309=_0xee21[_0x52598d];return _0x170309;};'use strict';var multer=require('multer');var util=require(_0x1ee2('0x0'));var path=require(_0x1ee2('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x1ee2('0x2')]();var fs_extra=require(_0x1ee2('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x1ee2('0x4'));var config=require(_0x1ee2('0x5'));var controller=require('./openchannelQueueReport.controller');router[_0x1ee2('0x6')]('/',auth[_0x1ee2('0x7')](),controller[_0x1ee2('0x8')]);router[_0x1ee2('0x6')](_0x1ee2('0x9'),auth[_0x1ee2('0x7')](),controller[_0x1ee2('0xa')]);router['get'](_0x1ee2('0xb'),auth[_0x1ee2('0x7')](),controller[_0x1ee2('0xc')]);router[_0x1ee2('0xd')]('/',auth[_0x1ee2('0x7')](),controller['create']);router[_0x1ee2('0xe')](_0x1ee2('0xb'),auth[_0x1ee2('0x7')](),controller[_0x1ee2('0xf')]);router[_0x1ee2('0x10')](_0x1ee2('0xb'),auth[_0x1ee2('0x7')](),controller[_0x1ee2('0x11')]);module[_0x1ee2('0x12')]=router;
\ No newline at end of file
index d7082c7..4105dfc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x10dc=['sequelize','STRING','DATE','moment'];(function(_0x34466e,_0x1b30f2){var _0x33c694=function(_0x27f99b){while(--_0x27f99b){_0x34466e['push'](_0x34466e['shift']());}};_0x33c694(++_0x1b30f2);}(_0x10dc,0x107));var _0xc10d=function(_0x43d952,_0x453ec9){_0x43d952=_0x43d952-0x0;var _0x1c53b5=_0x10dc[_0x43d952];return _0x1c53b5;};'use strict';var moment=require(_0xc10d('0x0'));var Sequelize=require(_0xc10d('0x1'));module['exports']={'uniqueid':{'type':Sequelize[_0xc10d('0x2')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0xc10d('0x3')]},'leaveAt':{'type':Sequelize[_0xc10d('0x3')]},'acceptAt':{'type':Sequelize[_0xc10d('0x3')]},'exitAt':{'type':Sequelize[_0xc10d('0x3')]},'reason':{'type':Sequelize[_0xc10d('0x2')]}};
\ No newline at end of file
+var _0x2131=['STRING','DATE','moment','sequelize'];(function(_0x36cb82,_0x38a5b1){var _0x370c6f=function(_0x74d6dd){while(--_0x74d6dd){_0x36cb82['push'](_0x36cb82['shift']());}};_0x370c6f(++_0x38a5b1);}(_0x2131,0xee));var _0x1213=function(_0x15cc17,_0x5a498d){_0x15cc17=_0x15cc17-0x0;var _0x9607cc=_0x2131[_0x15cc17];return _0x9607cc;};'use strict';var moment=require(_0x1213('0x0'));var Sequelize=require(_0x1213('0x1'));module['exports']={'uniqueid':{'type':Sequelize[_0x1213('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x1213('0x2')]},'joinAt':{'type':Sequelize[_0x1213('0x3')]},'leaveAt':{'type':Sequelize[_0x1213('0x3')]},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0x1213('0x3')]},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
index b3b6a41..d387832 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb804=['../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','json','undefined','limit','count','offset','status','set','apply','save','then','sendStatus','stack','name','send','index','map','OpenchannelQueueReport','rawAttributes','fieldName','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','type','VIRTUAL','options','includeAll','rows','catch','show','params','include','create','body','update','find','destroy','describe','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs'];(function(_0x36865c,_0x18d640){var _0x1ae6f9=function(_0x38e1e9){while(--_0x38e1e9){_0x36865c['push'](_0x36865c['shift']());}};_0x1ae6f9(++_0x18d640);}(_0xb804,0xd4));var _0x4b80=function(_0xf3b06f,_0x489959){_0xf3b06f=_0xf3b06f-0x0;var _0x531640=_0xb804[_0xf3b06f];return _0x531640;};'use strict';var emlformat=require(_0x4b80('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x4b80('0x1'));var jsonpatch=require(_0x4b80('0x2'));var rp=require('request-promise');var moment=require(_0x4b80('0x3'));var BPromise=require(_0x4b80('0x4'));var Mustache=require(_0x4b80('0x5'));var util=require(_0x4b80('0x6'));var path=require(_0x4b80('0x7'));var sox=require('sox');var csv=require(_0x4b80('0x8'));var ejs=require(_0x4b80('0x9'));var fs=require('fs');var fs_extra=require(_0x4b80('0xa'));var _=require('lodash');var squel=require(_0x4b80('0xb'));var crypto=require(_0x4b80('0xc'));var jsforce=require(_0x4b80('0xd'));var deskjs=require(_0x4b80('0xe'));var toCsv=require(_0x4b80('0x8'));var querystring=require(_0x4b80('0xf'));var Papa=require(_0x4b80('0x10'));var Redis=require(_0x4b80('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x4b80('0x12'));var as=require(_0x4b80('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x4b80('0x14'))(_0x4b80('0x15'));var utils=require(_0x4b80('0x16'));var config=require(_0x4b80('0x17'));var licenseUtil=require(_0x4b80('0x18'));var db=require(_0x4b80('0x19'))['db'];function respondWithStatusCode(_0x5eed42,_0x501bf8){_0x501bf8=_0x501bf8||0xcc;return function(_0x513711){if(_0x513711){return _0x5eed42['sendStatus'](_0x501bf8);}return _0x5eed42['status'](_0x501bf8)[_0x4b80('0x1a')]();};}function respondWithResult(_0x40d1e5,_0xd95dde){_0xd95dde=_0xd95dde||0xc8;return function(_0x98c9b2){if(_0x98c9b2){return _0x40d1e5['status'](_0xd95dde)[_0x4b80('0x1b')](_0x98c9b2);}};}function respondWithFilteredResult(_0x417a64,_0x2e56e1){return function(_0x98c94d){if(_0x98c94d){var _0x5bc702=typeof _0x2e56e1['offset']===_0x4b80('0x1c')&&typeof _0x2e56e1[_0x4b80('0x1d')]==='undefined';var _0x54d7da=_0x98c94d[_0x4b80('0x1e')];var _0x14baf1=_0x5bc702?0x0:_0x2e56e1[_0x4b80('0x1f')];var _0xa7d276=_0x5bc702?_0x98c94d['count']:_0x2e56e1['offset']+_0x2e56e1[_0x4b80('0x1d')];var _0x32987b;if(_0xa7d276>=_0x54d7da){_0xa7d276=_0x54d7da;_0x32987b=0xc8;}else{_0x32987b=0xce;}_0x417a64[_0x4b80('0x20')](_0x32987b);return _0x417a64[_0x4b80('0x21')]('Content-Range',_0x14baf1+'-'+_0xa7d276+'/'+_0x54d7da)[_0x4b80('0x1b')](_0x98c94d);}return null;};}function patchUpdates(_0x169b9f){return function(_0x46ea4f){try{jsonpatch[_0x4b80('0x22')](_0x46ea4f,_0x169b9f,!![]);}catch(_0x5cfc2a){return BPromise['reject'](_0x5cfc2a);}return _0x46ea4f[_0x4b80('0x23')]();};}function saveUpdates(_0xca6725,_0x520fe7){return function(_0x44fa14){if(_0x44fa14){return _0x44fa14['update'](_0xca6725)[_0x4b80('0x24')](function(_0x3ee8f6){return _0x3ee8f6;});}return null;};}function removeEntity(_0x594f1e,_0x1b836d){return function(_0xb86171){if(_0xb86171){return _0xb86171['destroy']()[_0x4b80('0x24')](function(){_0x594f1e[_0x4b80('0x20')](0xcc)[_0x4b80('0x1a')]();});}};}function handleEntityNotFound(_0x380a5e,_0x33065f){return function(_0x9cf725){if(!_0x9cf725){_0x380a5e[_0x4b80('0x25')](0x194);}return _0x9cf725;};}function handleError(_0x546c25,_0x3d50d8){_0x3d50d8=_0x3d50d8||0x1f4;return function(_0xfcb798){logger['error'](_0xfcb798[_0x4b80('0x26')]);if(_0xfcb798[_0x4b80('0x27')]){delete _0xfcb798[_0x4b80('0x27')];}_0x546c25[_0x4b80('0x20')](_0x3d50d8)[_0x4b80('0x28')](_0xfcb798);};}exports[_0x4b80('0x29')]=function(_0x4733ad,_0x2df336){var _0x3a7f26={},_0x372359={},_0x38a9dc={'count':0x0,'rows':[]};var _0x36e0ab=_[_0x4b80('0x2a')](db[_0x4b80('0x2b')][_0x4b80('0x2c')],function(_0x35683b){return{'name':_0x35683b[_0x4b80('0x2d')],'type':_0x35683b['type']['key']};});_0x372359[_0x4b80('0x2e')]=_[_0x4b80('0x2a')](_0x36e0ab,'name');_0x372359['query']=_[_0x4b80('0x2f')](_0x4733ad[_0x4b80('0x30')]);_0x372359[_0x4b80('0x31')]=_[_0x4b80('0x32')](_0x372359[_0x4b80('0x2e')],_0x372359[_0x4b80('0x30')]);_0x3a7f26[_0x4b80('0x33')]=_[_0x4b80('0x32')](_0x372359[_0x4b80('0x2e')],qs[_0x4b80('0x34')](_0x4733ad[_0x4b80('0x30')][_0x4b80('0x34')]));_0x3a7f26[_0x4b80('0x33')]=_0x3a7f26[_0x4b80('0x33')][_0x4b80('0x35')]?_0x3a7f26[_0x4b80('0x33')]:_0x372359[_0x4b80('0x2e')];if(!_0x4733ad['query'][_0x4b80('0x36')](_0x4b80('0x37'))){_0x3a7f26['limit']=qs[_0x4b80('0x1d')](_0x4733ad['query']['limit']);_0x3a7f26['offset']=qs['offset'](_0x4733ad[_0x4b80('0x30')][_0x4b80('0x1f')]);}_0x3a7f26[_0x4b80('0x38')]=qs[_0x4b80('0x39')](_0x4733ad[_0x4b80('0x30')][_0x4b80('0x39')]);_0x3a7f26['where']=qs[_0x4b80('0x31')](_[_0x4b80('0x3a')](_0x4733ad[_0x4b80('0x30')],_0x372359[_0x4b80('0x31')]),_0x36e0ab);if(_0x4733ad['query'][_0x4b80('0x3b')]){_0x3a7f26[_0x4b80('0x3c')]=_[_0x4b80('0x3d')](_0x3a7f26[_0x4b80('0x3c')],{'$or':_[_0x4b80('0x2a')](_0x36e0ab,function(_0x4b6bbc){if(_0x4b6bbc[_0x4b80('0x3e')]!==_0x4b80('0x3f')){var _0xf55687={};_0xf55687[_0x4b6bbc[_0x4b80('0x27')]]={'$like':'%'+_0x4733ad[_0x4b80('0x30')][_0x4b80('0x3b')]+'%'};return _0xf55687;}})});}_0x3a7f26=_[_0x4b80('0x3d')]({},_0x3a7f26,_0x4733ad[_0x4b80('0x40')]);var _0x495762={'where':_0x3a7f26[_0x4b80('0x3c')]};return db[_0x4b80('0x2b')][_0x4b80('0x1e')](_0x495762)[_0x4b80('0x24')](function(_0x58e2f3){_0x38a9dc[_0x4b80('0x1e')]=_0x58e2f3;if(_0x4733ad[_0x4b80('0x30')][_0x4b80('0x41')]){_0x3a7f26['include']=[{'all':!![]}];}return db[_0x4b80('0x2b')]['findAll'](_0x3a7f26);})[_0x4b80('0x24')](function(_0x1f6676){_0x38a9dc[_0x4b80('0x42')]=_0x1f6676;return _0x38a9dc;})[_0x4b80('0x24')](respondWithFilteredResult(_0x2df336,_0x3a7f26))[_0x4b80('0x43')](handleError(_0x2df336,null));};exports[_0x4b80('0x44')]=function(_0x35080d,_0x4e547c){var _0x4d11e3={'raw':!![],'where':{'id':_0x35080d[_0x4b80('0x45')]['id']}},_0x56545f={};_0x56545f['model']=_[_0x4b80('0x2f')](db['OpenchannelQueueReport'][_0x4b80('0x2c')]);_0x56545f[_0x4b80('0x30')]=_[_0x4b80('0x2f')](_0x35080d[_0x4b80('0x30')]);_0x56545f['filters']=_[_0x4b80('0x32')](_0x56545f[_0x4b80('0x2e')],_0x56545f[_0x4b80('0x30')]);_0x4d11e3[_0x4b80('0x33')]=_[_0x4b80('0x32')](_0x56545f['model'],qs[_0x4b80('0x34')](_0x35080d[_0x4b80('0x30')]['fields']));_0x4d11e3[_0x4b80('0x33')]=_0x4d11e3[_0x4b80('0x33')]['length']?_0x4d11e3[_0x4b80('0x33')]:_0x56545f[_0x4b80('0x2e')];if(_0x35080d[_0x4b80('0x30')][_0x4b80('0x41')]){_0x4d11e3[_0x4b80('0x46')]=[{'all':!![]}];}_0x4d11e3=_['merge']({},_0x4d11e3,_0x35080d['options']);return db[_0x4b80('0x2b')]['find'](_0x4d11e3)[_0x4b80('0x24')](handleEntityNotFound(_0x4e547c,null))[_0x4b80('0x24')](respondWithResult(_0x4e547c,null))['catch'](handleError(_0x4e547c,null));};exports[_0x4b80('0x47')]=function(_0x1dc469,_0x50a3c1){return db[_0x4b80('0x2b')]['create'](_0x1dc469[_0x4b80('0x48')],{})['then'](respondWithResult(_0x50a3c1,0xc9))['catch'](handleError(_0x50a3c1,null));};exports[_0x4b80('0x49')]=function(_0x20c2a4,_0x36befd){if(_0x20c2a4['body']['id']){delete _0x20c2a4[_0x4b80('0x48')]['id'];}return db[_0x4b80('0x2b')][_0x4b80('0x4a')]({'where':{'id':_0x20c2a4[_0x4b80('0x45')]['id']}})[_0x4b80('0x24')](handleEntityNotFound(_0x36befd,null))['then'](saveUpdates(_0x20c2a4[_0x4b80('0x48')],null))[_0x4b80('0x24')](respondWithResult(_0x36befd,null))[_0x4b80('0x43')](handleError(_0x36befd,null));};exports[_0x4b80('0x4b')]=function(_0x590381,_0x321d5f){return db[_0x4b80('0x2b')][_0x4b80('0x4a')]({'where':{'id':_0x590381[_0x4b80('0x45')]['id']}})['then'](handleEntityNotFound(_0x321d5f,null))[_0x4b80('0x24')](removeEntity(_0x321d5f,null))['catch'](handleError(_0x321d5f,null));};exports[_0x4b80('0x4c')]=function(_0x31fcbd,_0x36bf76){return db[_0x4b80('0x2b')]['describe']()[_0x4b80('0x24')](respondWithResult(_0x36bf76,null))['catch'](handleError(_0x36bf76,null));};
\ No newline at end of file
+var _0x9cc7=['create','body','destroy','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','fs-extra','lodash','squel','crypto','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','sendStatus','status','end','json','undefined','limit','offset','count','set','Content-Range','apply','reject','save','update','then','error','name','index','map','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','VIRTUAL','options','OpenchannelQueueReport','includeAll','include','findAll','catch','params','rawAttributes','find'];(function(_0x53560d,_0x144de1){var _0x5aad39=function(_0x4824e9){while(--_0x4824e9){_0x53560d['push'](_0x53560d['shift']());}};_0x5aad39(++_0x144de1);}(_0x9cc7,0x1cc));var _0x79cc=function(_0x3cc6b4,_0x58b1aa){_0x3cc6b4=_0x3cc6b4-0x0;var _0x1c07b8=_0x9cc7[_0x3cc6b4];return _0x1c07b8;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x79cc('0x0'));var zipdir=require(_0x79cc('0x1'));var jsonpatch=require(_0x79cc('0x2'));var rp=require(_0x79cc('0x3'));var moment=require(_0x79cc('0x4'));var BPromise=require(_0x79cc('0x5'));var Mustache=require(_0x79cc('0x6'));var util=require(_0x79cc('0x7'));var path=require(_0x79cc('0x8'));var sox=require(_0x79cc('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x79cc('0xa'));var _=require(_0x79cc('0xb'));var squel=require(_0x79cc('0xc'));var crypto=require(_0x79cc('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x79cc('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x79cc('0xf'));var Redis=require(_0x79cc('0x10'));var authService=require(_0x79cc('0x11'));var qs=require(_0x79cc('0x12'));var as=require(_0x79cc('0x13'));var hardwareService=require(_0x79cc('0x14'));var logger=require(_0x79cc('0x15'))('api');var utils=require(_0x79cc('0x16'));var config=require(_0x79cc('0x17'));var licenseUtil=require(_0x79cc('0x18'));var db=require(_0x79cc('0x19'))['db'];function respondWithStatusCode(_0x187310,_0x370c51){_0x370c51=_0x370c51||0xcc;return function(_0x17d9df){if(_0x17d9df){return _0x187310[_0x79cc('0x1a')](_0x370c51);}return _0x187310[_0x79cc('0x1b')](_0x370c51)[_0x79cc('0x1c')]();};}function respondWithResult(_0x19653f,_0x2b9097){_0x2b9097=_0x2b9097||0xc8;return function(_0x23c4f5){if(_0x23c4f5){return _0x19653f[_0x79cc('0x1b')](_0x2b9097)[_0x79cc('0x1d')](_0x23c4f5);}};}function respondWithFilteredResult(_0x4d9144,_0x5d12f3){return function(_0x400761){if(_0x400761){var _0x48da67=typeof _0x5d12f3['offset']===_0x79cc('0x1e')&&typeof _0x5d12f3[_0x79cc('0x1f')]===_0x79cc('0x1e');var _0x242cd6=_0x400761['count'];var _0x2b1454=_0x48da67?0x0:_0x5d12f3[_0x79cc('0x20')];var _0x26942a=_0x48da67?_0x400761[_0x79cc('0x21')]:_0x5d12f3[_0x79cc('0x20')]+_0x5d12f3[_0x79cc('0x1f')];var _0x2d60af;if(_0x26942a>=_0x242cd6){_0x26942a=_0x242cd6;_0x2d60af=0xc8;}else{_0x2d60af=0xce;}_0x4d9144[_0x79cc('0x1b')](_0x2d60af);return _0x4d9144[_0x79cc('0x22')](_0x79cc('0x23'),_0x2b1454+'-'+_0x26942a+'/'+_0x242cd6)[_0x79cc('0x1d')](_0x400761);}return null;};}function patchUpdates(_0x4784ca){return function(_0x120afc){try{jsonpatch[_0x79cc('0x24')](_0x120afc,_0x4784ca,!![]);}catch(_0x4e3698){return BPromise[_0x79cc('0x25')](_0x4e3698);}return _0x120afc[_0x79cc('0x26')]();};}function saveUpdates(_0x394eab,_0x3e152f){return function(_0x5234d5){if(_0x5234d5){return _0x5234d5[_0x79cc('0x27')](_0x394eab)[_0x79cc('0x28')](function(_0x29acbb){return _0x29acbb;});}return null;};}function removeEntity(_0x3cccf0,_0x4fffda){return function(_0x3f2b2a){if(_0x3f2b2a){return _0x3f2b2a['destroy']()[_0x79cc('0x28')](function(){_0x3cccf0[_0x79cc('0x1b')](0xcc)[_0x79cc('0x1c')]();});}};}function handleEntityNotFound(_0x43232f,_0x7530e5){return function(_0x482b64){if(!_0x482b64){_0x43232f[_0x79cc('0x1a')](0x194);}return _0x482b64;};}function handleError(_0x1b6288,_0x1fa4a0){_0x1fa4a0=_0x1fa4a0||0x1f4;return function(_0xc611b5){logger[_0x79cc('0x29')](_0xc611b5['stack']);if(_0xc611b5[_0x79cc('0x2a')]){delete _0xc611b5[_0x79cc('0x2a')];}_0x1b6288['status'](_0x1fa4a0)['send'](_0xc611b5);};}exports[_0x79cc('0x2b')]=function(_0x248aa5,_0x26cb9f){var _0x184e0b={},_0x472d04={},_0x5117e5={'count':0x0,'rows':[]};var _0x122df3=_[_0x79cc('0x2c')](db['OpenchannelQueueReport']['rawAttributes'],function(_0x270300){return{'name':_0x270300[_0x79cc('0x2d')],'type':_0x270300[_0x79cc('0x2e')][_0x79cc('0x2f')]};});_0x472d04[_0x79cc('0x30')]=_[_0x79cc('0x2c')](_0x122df3,_0x79cc('0x2a'));_0x472d04[_0x79cc('0x31')]=_[_0x79cc('0x32')](_0x248aa5['query']);_0x472d04['filters']=_[_0x79cc('0x33')](_0x472d04[_0x79cc('0x30')],_0x472d04[_0x79cc('0x31')]);_0x184e0b[_0x79cc('0x34')]=_['intersection'](_0x472d04[_0x79cc('0x30')],qs[_0x79cc('0x35')](_0x248aa5[_0x79cc('0x31')][_0x79cc('0x35')]));_0x184e0b[_0x79cc('0x34')]=_0x184e0b['attributes'][_0x79cc('0x36')]?_0x184e0b[_0x79cc('0x34')]:_0x472d04[_0x79cc('0x30')];if(!_0x248aa5['query'][_0x79cc('0x37')](_0x79cc('0x38'))){_0x184e0b[_0x79cc('0x1f')]=qs[_0x79cc('0x1f')](_0x248aa5['query'][_0x79cc('0x1f')]);_0x184e0b[_0x79cc('0x20')]=qs['offset'](_0x248aa5[_0x79cc('0x31')][_0x79cc('0x20')]);}_0x184e0b['order']=qs[_0x79cc('0x39')](_0x248aa5['query'][_0x79cc('0x39')]);_0x184e0b[_0x79cc('0x3a')]=qs[_0x79cc('0x3b')](_[_0x79cc('0x3c')](_0x248aa5[_0x79cc('0x31')],_0x472d04[_0x79cc('0x3b')]),_0x122df3);if(_0x248aa5[_0x79cc('0x31')][_0x79cc('0x3d')]){_0x184e0b[_0x79cc('0x3a')]=_['merge'](_0x184e0b[_0x79cc('0x3a')],{'$or':_['map'](_0x122df3,function(_0x1a1272){if(_0x1a1272[_0x79cc('0x2e')]!==_0x79cc('0x3e')){var _0x467352={};_0x467352[_0x1a1272[_0x79cc('0x2a')]]={'$like':'%'+_0x248aa5[_0x79cc('0x31')][_0x79cc('0x3d')]+'%'};return _0x467352;}})});}_0x184e0b=_['merge']({},_0x184e0b,_0x248aa5[_0x79cc('0x3f')]);var _0x5db51c={'where':_0x184e0b[_0x79cc('0x3a')]};return db[_0x79cc('0x40')][_0x79cc('0x21')](_0x5db51c)['then'](function(_0x3ae045){_0x5117e5[_0x79cc('0x21')]=_0x3ae045;if(_0x248aa5[_0x79cc('0x31')][_0x79cc('0x41')]){_0x184e0b[_0x79cc('0x42')]=[{'all':!![]}];}return db[_0x79cc('0x40')][_0x79cc('0x43')](_0x184e0b);})[_0x79cc('0x28')](function(_0x3df480){_0x5117e5['rows']=_0x3df480;return _0x5117e5;})['then'](respondWithFilteredResult(_0x26cb9f,_0x184e0b))[_0x79cc('0x44')](handleError(_0x26cb9f,null));};exports['show']=function(_0x28a1c5,_0x33d73a){var _0x2c4c2c={'raw':!![],'where':{'id':_0x28a1c5[_0x79cc('0x45')]['id']}},_0x3ecc41={};_0x3ecc41[_0x79cc('0x30')]=_['keys'](db[_0x79cc('0x40')][_0x79cc('0x46')]);_0x3ecc41[_0x79cc('0x31')]=_[_0x79cc('0x32')](_0x28a1c5[_0x79cc('0x31')]);_0x3ecc41[_0x79cc('0x3b')]=_['intersection'](_0x3ecc41['model'],_0x3ecc41[_0x79cc('0x31')]);_0x2c4c2c[_0x79cc('0x34')]=_[_0x79cc('0x33')](_0x3ecc41[_0x79cc('0x30')],qs['fields'](_0x28a1c5['query'][_0x79cc('0x35')]));_0x2c4c2c[_0x79cc('0x34')]=_0x2c4c2c[_0x79cc('0x34')][_0x79cc('0x36')]?_0x2c4c2c[_0x79cc('0x34')]:_0x3ecc41[_0x79cc('0x30')];if(_0x28a1c5[_0x79cc('0x31')][_0x79cc('0x41')]){_0x2c4c2c[_0x79cc('0x42')]=[{'all':!![]}];}_0x2c4c2c=_['merge']({},_0x2c4c2c,_0x28a1c5[_0x79cc('0x3f')]);return db[_0x79cc('0x40')][_0x79cc('0x47')](_0x2c4c2c)[_0x79cc('0x28')](handleEntityNotFound(_0x33d73a,null))[_0x79cc('0x28')](respondWithResult(_0x33d73a,null))['catch'](handleError(_0x33d73a,null));};exports[_0x79cc('0x48')]=function(_0x580fe6,_0x9ad9aa){return db['OpenchannelQueueReport'][_0x79cc('0x48')](_0x580fe6['body'],{})[_0x79cc('0x28')](respondWithResult(_0x9ad9aa,0xc9))[_0x79cc('0x44')](handleError(_0x9ad9aa,null));};exports[_0x79cc('0x27')]=function(_0x1edd75,_0x1f84dc){if(_0x1edd75[_0x79cc('0x49')]['id']){delete _0x1edd75[_0x79cc('0x49')]['id'];}return db[_0x79cc('0x40')][_0x79cc('0x47')]({'where':{'id':_0x1edd75[_0x79cc('0x45')]['id']}})[_0x79cc('0x28')](handleEntityNotFound(_0x1f84dc,null))[_0x79cc('0x28')](saveUpdates(_0x1edd75[_0x79cc('0x49')],null))[_0x79cc('0x28')](respondWithResult(_0x1f84dc,null))[_0x79cc('0x44')](handleError(_0x1f84dc,null));};exports[_0x79cc('0x4a')]=function(_0x5a2644,_0x142139){return db[_0x79cc('0x40')]['find']({'where':{'id':_0x5a2644[_0x79cc('0x45')]['id']}})[_0x79cc('0x28')](handleEntityNotFound(_0x142139,null))[_0x79cc('0x28')](removeEntity(_0x142139,null))[_0x79cc('0x44')](handleError(_0x142139,null));};exports[_0x79cc('0x4b')]=function(_0x47846b,_0x2662e7){return db[_0x79cc('0x40')][_0x79cc('0x4b')]()['then'](respondWithResult(_0x2662e7,null))[_0x79cc('0x44')](handleError(_0x2662e7,null));};
\ No newline at end of file
index daf28fc..dc2ad62 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x814b=['../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./openchannelQueueReport.attributes','exports','define','OpenchannelQueueReport','uniqueid','lodash','util'];(function(_0x2405bc,_0x2f28a1){var _0x5272d4=function(_0x225294){while(--_0x225294){_0x2405bc['push'](_0x2405bc['shift']());}};_0x5272d4(++_0x2f28a1);}(_0x814b,0x1a2));var _0xb814=function(_0x425d5e,_0x3b9040){_0x425d5e=_0x425d5e-0x0;var _0x3cc67b=_0x814b[_0x425d5e];return _0x3cc67b;};'use strict';var _=require(_0xb814('0x0'));var util=require(_0xb814('0x1'));var logger=require(_0xb814('0x2'))(_0xb814('0x3'));var moment=require(_0xb814('0x4'));var BPromise=require(_0xb814('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xb814('0x6'));var rimraf=require(_0xb814('0x7'));var config=require(_0xb814('0x8'));var attributes=require(_0xb814('0x9'));module[_0xb814('0xa')]=function(_0x322a70,_0x53e507){return _0x322a70[_0xb814('0xb')](_0xb814('0xc'),attributes,{'tableName':'report_openchannel_queue','paranoid':![],'indexes':[{'name':_0xb814('0xd'),'fields':[_0xb814('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x814b=['../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./openchannelQueueReport.attributes','exports','define','OpenchannelQueueReport','uniqueid','lodash','util'];(function(_0x602ca8,_0x568e82){var _0x26e8ab=function(_0x3fb700){while(--_0x3fb700){_0x602ca8['push'](_0x602ca8['shift']());}};_0x26e8ab(++_0x568e82);}(_0x814b,0x1a2));var _0xb814=function(_0x4ded50,_0x4a6af3){_0x4ded50=_0x4ded50-0x0;var _0xa92135=_0x814b[_0x4ded50];return _0xa92135;};'use strict';var _=require(_0xb814('0x0'));var util=require(_0xb814('0x1'));var logger=require(_0xb814('0x2'))(_0xb814('0x3'));var moment=require(_0xb814('0x4'));var BPromise=require(_0xb814('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xb814('0x6'));var rimraf=require(_0xb814('0x7'));var config=require(_0xb814('0x8'));var attributes=require(_0xb814('0x9'));module[_0xb814('0xa')]=function(_0x322a70,_0x53e507){return _0x322a70[_0xb814('0xb')](_0xb814('0xc'),attributes,{'tableName':'report_openchannel_queue','paranoid':![],'indexes':[{'name':_0xb814('0xd'),'fields':[_0xb814('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 6e88807..48e299d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c00=['catch','CreateOpenchannelQueueReport','create','body','options','raw','UpdateOpenchannelQueueReport','where','attributes','limit','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','then','info','OpenchannelQueueReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result'];(function(_0x580268,_0x10c333){var _0x4ca0b2=function(_0xf12d22){while(--_0xf12d22){_0x580268['push'](_0x580268['shift']());}};_0x4ca0b2(++_0x10c333);}(_0x5c00,0x17e));var _0x05c0=function(_0x3eb211,_0x4a2e7f){_0x3eb211=_0x3eb211-0x0;var _0xb32a15=_0x5c00[_0x3eb211];return _0xb32a15;};'use strict';var _=require(_0x05c0('0x0'));var util=require(_0x05c0('0x1'));var moment=require(_0x05c0('0x2'));var BPromise=require('bluebird');var rs=require(_0x05c0('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x05c0('0x4'))['db'];var utils=require(_0x05c0('0x5'));var logger=require(_0x05c0('0x6'))(_0x05c0('0x7'));var config=require('../../config/environment');var jayson=require(_0x05c0('0x8'));var client=jayson[_0x05c0('0x9')][_0x05c0('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x27dc10,_0x5b9f09,_0x3a3b1b){return new BPromise(function(_0x34eb5f,_0x3ad5b7){return client['request'](_0x27dc10,_0x3a3b1b)[_0x05c0('0xb')](function(_0x32cdfa){logger[_0x05c0('0xc')](_0x05c0('0xd'),_0x5b9f09,_0x05c0('0xe'));logger[_0x05c0('0xf')]('OpenchannelQueueReport,\x20%s,\x20%s,\x20%s',_0x5b9f09,'request\x20sent',JSON[_0x05c0('0x10')](_0x32cdfa));if(_0x32cdfa['error']){if(_0x32cdfa[_0x05c0('0x11')][_0x05c0('0x12')]===0x1f4){logger[_0x05c0('0x11')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x5b9f09,_0x32cdfa[_0x05c0('0x11')]['message']);return _0x3ad5b7(_0x32cdfa[_0x05c0('0x11')][_0x05c0('0x13')]);}logger[_0x05c0('0x11')](_0x05c0('0xd'),_0x5b9f09,_0x32cdfa[_0x05c0('0x11')][_0x05c0('0x13')]);return _0x34eb5f(_0x32cdfa[_0x05c0('0x11')][_0x05c0('0x13')]);}else{logger['info'](_0x05c0('0xd'),_0x5b9f09,_0x05c0('0xe'));_0x34eb5f(_0x32cdfa[_0x05c0('0x14')][_0x05c0('0x13')]);}})[_0x05c0('0x15')](function(_0x40153e){logger[_0x05c0('0x11')](_0x05c0('0xd'),_0x5b9f09,_0x40153e);_0x3ad5b7(_0x40153e);});});}exports[_0x05c0('0x16')]=function(_0x521cbd){var _0x422401=this;return new Promise(function(_0x1230e5,_0x4613c0){return db['OpenchannelQueueReport'][_0x05c0('0x17')](_0x521cbd[_0x05c0('0x18')],{'raw':_0x521cbd[_0x05c0('0x19')]?_0x521cbd[_0x05c0('0x19')][_0x05c0('0x1a')]===undefined?!![]:![]:!![]})['then'](function(_0x407c1f){logger[_0x05c0('0xc')]('CreateOpenchannelQueueReport',_0x521cbd);logger['debug']('CreateOpenchannelQueueReport',_0x521cbd,JSON[_0x05c0('0x10')](_0x407c1f));_0x1230e5(_0x407c1f);})[_0x05c0('0x15')](function(_0x83f29){logger[_0x05c0('0x11')](_0x05c0('0x16'),_0x83f29[_0x05c0('0x13')],_0x521cbd);_0x4613c0(_0x422401[_0x05c0('0x11')](0x1f4,_0x83f29['message']));});});};exports[_0x05c0('0x1b')]=function(_0x1abbf3){var _0x4ba978=this;return new Promise(function(_0x530966,_0x4da6d6){return db['OpenchannelQueueReport']['update'](_0x1abbf3[_0x05c0('0x18')],{'raw':_0x1abbf3[_0x05c0('0x19')]?_0x1abbf3['options'][_0x05c0('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1abbf3[_0x05c0('0x19')]?_0x1abbf3[_0x05c0('0x19')][_0x05c0('0x1c')]||null:null,'attributes':_0x1abbf3['options']?_0x1abbf3[_0x05c0('0x19')][_0x05c0('0x1d')]||null:null,'limit':_0x1abbf3[_0x05c0('0x19')]?_0x1abbf3[_0x05c0('0x19')][_0x05c0('0x1e')]||null:null})[_0x05c0('0xb')](function(_0x57886b){logger['info'](_0x05c0('0x1b'),_0x1abbf3);logger[_0x05c0('0xf')](_0x05c0('0x1b'),_0x1abbf3,JSON[_0x05c0('0x10')](_0x57886b));_0x530966(_0x57886b);})[_0x05c0('0x15')](function(_0x1e00c5){logger[_0x05c0('0x11')](_0x05c0('0x1b'),_0x1e00c5[_0x05c0('0x13')],_0x1abbf3);_0x4da6d6(_0x4ba978[_0x05c0('0x11')](0x1f4,_0x1e00c5[_0x05c0('0x13')]));});});};
\ No newline at end of file
+var _0xbb59=['then','info','OpenchannelQueueReport,\x20%s,\x20%s','debug','OpenchannelQueueReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','CreateOpenchannelQueueReport','body','options','catch','UpdateOpenchannelQueueReport','update','where','attributes','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request'];(function(_0x515283,_0x813dea){var _0x38f836=function(_0x40c8f4){while(--_0x40c8f4){_0x515283['push'](_0x515283['shift']());}};_0x38f836(++_0x813dea);}(_0xbb59,0xec));var _0x9bb5=function(_0x29ac07,_0x4764d5){_0x29ac07=_0x29ac07-0x0;var _0x2ec2d1=_0xbb59[_0x29ac07];return _0x2ec2d1;};'use strict';var _=require(_0x9bb5('0x0'));var util=require(_0x9bb5('0x1'));var moment=require(_0x9bb5('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9bb5('0x3'));var db=require(_0x9bb5('0x4'))['db'];var utils=require(_0x9bb5('0x5'));var logger=require(_0x9bb5('0x6'))(_0x9bb5('0x7'));var config=require('../../config/environment');var jayson=require(_0x9bb5('0x8'));var client=jayson[_0x9bb5('0x9')][_0x9bb5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2df722,_0xe362e0,_0x83fd10){return new BPromise(function(_0x2d6cce,_0x4e3857){return client[_0x9bb5('0xb')](_0x2df722,_0x83fd10)[_0x9bb5('0xc')](function(_0x2fdbcb){logger[_0x9bb5('0xd')](_0x9bb5('0xe'),_0xe362e0,'request\x20sent');logger[_0x9bb5('0xf')](_0x9bb5('0x10'),_0xe362e0,_0x9bb5('0x11'),JSON[_0x9bb5('0x12')](_0x2fdbcb));if(_0x2fdbcb[_0x9bb5('0x13')]){if(_0x2fdbcb[_0x9bb5('0x13')][_0x9bb5('0x14')]===0x1f4){logger[_0x9bb5('0x13')](_0x9bb5('0xe'),_0xe362e0,_0x2fdbcb[_0x9bb5('0x13')][_0x9bb5('0x15')]);return _0x4e3857(_0x2fdbcb[_0x9bb5('0x13')][_0x9bb5('0x15')]);}logger[_0x9bb5('0x13')]('OpenchannelQueueReport,\x20%s,\x20%s',_0xe362e0,_0x2fdbcb['error'][_0x9bb5('0x15')]);return _0x2d6cce(_0x2fdbcb['error']['message']);}else{logger[_0x9bb5('0xd')]('OpenchannelQueueReport,\x20%s,\x20%s',_0xe362e0,_0x9bb5('0x11'));_0x2d6cce(_0x2fdbcb[_0x9bb5('0x16')][_0x9bb5('0x15')]);}})['catch'](function(_0xb471e){logger[_0x9bb5('0x13')](_0x9bb5('0xe'),_0xe362e0,_0xb471e);_0x4e3857(_0xb471e);});});}exports[_0x9bb5('0x17')]=function(_0xba8392){var _0x19d1e9=this;return new Promise(function(_0x162815,_0xe44bdd){return db['OpenchannelQueueReport']['create'](_0xba8392[_0x9bb5('0x18')],{'raw':_0xba8392[_0x9bb5('0x19')]?_0xba8392['options']['raw']===undefined?!![]:![]:!![]})[_0x9bb5('0xc')](function(_0x182966){logger[_0x9bb5('0xd')]('CreateOpenchannelQueueReport',_0xba8392);logger[_0x9bb5('0xf')](_0x9bb5('0x17'),_0xba8392,JSON[_0x9bb5('0x12')](_0x182966));_0x162815(_0x182966);})[_0x9bb5('0x1a')](function(_0x51fa34){logger[_0x9bb5('0x13')](_0x9bb5('0x17'),_0x51fa34['message'],_0xba8392);_0xe44bdd(_0x19d1e9[_0x9bb5('0x13')](0x1f4,_0x51fa34['message']));});});};exports[_0x9bb5('0x1b')]=function(_0x5357e9){var _0x4be52b=this;return new Promise(function(_0x1d7195,_0x16db23){return db['OpenchannelQueueReport'][_0x9bb5('0x1c')](_0x5357e9[_0x9bb5('0x18')],{'raw':_0x5357e9[_0x9bb5('0x19')]?_0x5357e9['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5357e9[_0x9bb5('0x19')]?_0x5357e9[_0x9bb5('0x19')][_0x9bb5('0x1d')]||null:null,'attributes':_0x5357e9['options']?_0x5357e9[_0x9bb5('0x19')][_0x9bb5('0x1e')]||null:null,'limit':_0x5357e9[_0x9bb5('0x19')]?_0x5357e9['options']['limit']||null:null})['then'](function(_0x1ad67b){logger[_0x9bb5('0xd')](_0x9bb5('0x1b'),_0x5357e9);logger[_0x9bb5('0xf')](_0x9bb5('0x1b'),_0x5357e9,JSON['stringify'](_0x1ad67b));_0x1d7195(_0x1ad67b);})['catch'](function(_0x59ef00){logger[_0x9bb5('0x13')](_0x9bb5('0x1b'),_0x59ef00[_0x9bb5('0x15')],_0x5357e9);_0x16db23(_0x4be52b['error'](0x1f4,_0x59ef00['message']));});});};
\ No newline at end of file
index 0c04dd2..cfcfb02 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8030=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelTransferReport.controller','get','isAuthenticated','index','/describe','create','put','/:id','update','destroy','multer'];(function(_0x35561d,_0x59a5cf){var _0x2ccc5b=function(_0x6d37d2){while(--_0x6d37d2){_0x35561d['push'](_0x35561d['shift']());}};_0x2ccc5b(++_0x59a5cf);}(_0x8030,0x1db));var _0x0803=function(_0x39954a,_0x601a95){_0x39954a=_0x39954a-0x0;var _0x134f26=_0x8030[_0x39954a];return _0x134f26;};'use strict';var multer=require(_0x0803('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x0803('0x1'));var express=require('express');var router=express[_0x0803('0x2')]();var fs_extra=require(_0x0803('0x3'));var auth=require(_0x0803('0x4'));var interaction=require(_0x0803('0x5'));var config=require(_0x0803('0x6'));var controller=require(_0x0803('0x7'));router[_0x0803('0x8')]('/',auth[_0x0803('0x9')](),controller[_0x0803('0xa')]);router['get'](_0x0803('0xb'),auth[_0x0803('0x9')](),controller['describe']);router[_0x0803('0x8')]('/:id',auth[_0x0803('0x9')](),controller['show']);router['post']('/',auth['isAuthenticated'](),controller[_0x0803('0xc')]);router[_0x0803('0xd')](_0x0803('0xe'),auth[_0x0803('0x9')](),controller[_0x0803('0xf')]);router['delete'](_0x0803('0xe'),auth[_0x0803('0x9')](),controller[_0x0803('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0x1ec9=['index','/describe','isAuthenticated','describe','/:id','show','post','put','update','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','get'];(function(_0x33ee55,_0x235c9e){var _0xef7a3d=function(_0x5dd646){while(--_0x5dd646){_0x33ee55['push'](_0x33ee55['shift']());}};_0xef7a3d(++_0x235c9e);}(_0x1ec9,0x14d));var _0x91ec=function(_0x5c62b5,_0xfb7f82){_0x5c62b5=_0x5c62b5-0x0;var _0x56da89=_0x1ec9[_0x5c62b5];return _0x56da89;};'use strict';var multer=require(_0x91ec('0x0'));var util=require(_0x91ec('0x1'));var path=require(_0x91ec('0x2'));var timeout=require(_0x91ec('0x3'));var express=require(_0x91ec('0x4'));var router=express[_0x91ec('0x5')]();var fs_extra=require(_0x91ec('0x6'));var auth=require(_0x91ec('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./openchannelTransferReport.controller');router[_0x91ec('0x8')]('/',auth['isAuthenticated'](),controller[_0x91ec('0x9')]);router[_0x91ec('0x8')](_0x91ec('0xa'),auth[_0x91ec('0xb')](),controller[_0x91ec('0xc')]);router[_0x91ec('0x8')](_0x91ec('0xd'),auth[_0x91ec('0xb')](),controller[_0x91ec('0xe')]);router[_0x91ec('0xf')]('/',auth['isAuthenticated'](),controller['create']);router[_0x91ec('0x10')](_0x91ec('0xd'),auth[_0x91ec('0xb')](),controller[_0x91ec('0x11')]);router['delete']('/:id',auth[_0x91ec('0xb')](),controller[_0x91ec('0x12')]);module['exports']=router;
\ No newline at end of file
index c3ed6f8..f113d77 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e8=['queue','DATE','NOW','moment','sequelize','exports','STRING','account','agent'];(function(_0x5a8442,_0x2b3948){var _0x37b32f=function(_0x4a1e1b){while(--_0x4a1e1b){_0x5a8442['push'](_0x5a8442['shift']());}};_0x37b32f(++_0x2b3948);}(_0x34e8,0x12c));var _0x834e=function(_0x24bab0,_0x573a05){_0x24bab0=_0x24bab0-0x0;var _0x11ec94=_0x34e8[_0x24bab0];return _0x11ec94;};'use strict';var moment=require(_0x834e('0x0'));var Sequelize=require(_0x834e('0x1'));module[_0x834e('0x2')]={'uniqueid':{'type':Sequelize[_0x834e('0x3')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x834e('0x4'),_0x834e('0x5'),_0x834e('0x6')),'allowNull':![],'defaultValue':_0x834e('0x6')},'transferredAt':{'type':Sequelize[_0x834e('0x7')],'allowNull':![],'defaultValue':Sequelize[_0x834e('0x8')]}};
\ No newline at end of file
+var _0x9c44=['ENUM','account','agent','queue','NOW','exports','STRING'];(function(_0x4ba9d7,_0x2ec6cc){var _0x45866e=function(_0x19036a){while(--_0x19036a){_0x4ba9d7['push'](_0x4ba9d7['shift']());}};_0x45866e(++_0x2ec6cc);}(_0x9c44,0x178));var _0x49c4=function(_0x1035c1,_0x2d8583){_0x1035c1=_0x1035c1-0x0;var _0x308d67=_0x9c44[_0x1035c1];return _0x308d67;};'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 44c0905..b4d4324 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xce8a=['crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','undefined','limit','count','offset','set','Content-Range','apply','then','destroy','error','stack','name','send','index','OpenchannelTransferReport','rawAttributes','fieldName','type','key','model','map','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','includeAll','include','findAll','catch','show','params','keys','find','create','body','describe','rimraf','request-promise','mustache','util','sox','to-csv','ejs','lodash','squel'];(function(_0x59175d,_0x431b73){var _0x372dcf=function(_0x32621c){while(--_0x32621c){_0x59175d['push'](_0x59175d['shift']());}};_0x372dcf(++_0x431b73);}(_0xce8a,0x85));var _0xace8=function(_0x9af233,_0x26f5f1){_0x9af233=_0x9af233-0x0;var _0xf5ec4f=_0xce8a[_0x9af233];return _0xf5ec4f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xace8('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xace8('0x1'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xace8('0x2'));var util=require(_0xace8('0x3'));var path=require('path');var sox=require(_0xace8('0x4'));var csv=require(_0xace8('0x5'));var ejs=require(_0xace8('0x6'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xace8('0x7'));var squel=require(_0xace8('0x8'));var crypto=require(_0xace8('0x9'));var jsforce=require(_0xace8('0xa'));var deskjs=require(_0xace8('0xb'));var toCsv=require(_0xace8('0x5'));var querystring=require('querystring');var Papa=require(_0xace8('0xc'));var Redis=require('ioredis');var authService=require(_0xace8('0xd'));var qs=require(_0xace8('0xe'));var as=require(_0xace8('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xace8('0x10'))(_0xace8('0x11'));var utils=require(_0xace8('0x12'));var config=require(_0xace8('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0xace8('0x14'))['db'];function respondWithStatusCode(_0x46d75b,_0xf78334){_0xf78334=_0xf78334||0xcc;return function(_0x163857){if(_0x163857){return _0x46d75b[_0xace8('0x15')](_0xf78334);}return _0x46d75b[_0xace8('0x16')](_0xf78334)[_0xace8('0x17')]();};}function respondWithResult(_0xe8f898,_0x255410){_0x255410=_0x255410||0xc8;return function(_0xc9bc43){if(_0xc9bc43){return _0xe8f898['status'](_0x255410)['json'](_0xc9bc43);}};}function respondWithFilteredResult(_0x2f0565,_0x1af5ef){return function(_0x4f02ad){if(_0x4f02ad){var _0x562175=typeof _0x1af5ef['offset']===_0xace8('0x18')&&typeof _0x1af5ef[_0xace8('0x19')]===_0xace8('0x18');var _0x38317c=_0x4f02ad[_0xace8('0x1a')];var _0x377387=_0x562175?0x0:_0x1af5ef[_0xace8('0x1b')];var _0x155c56=_0x562175?_0x4f02ad[_0xace8('0x1a')]:_0x1af5ef[_0xace8('0x1b')]+_0x1af5ef[_0xace8('0x19')];var _0x696763;if(_0x155c56>=_0x38317c){_0x155c56=_0x38317c;_0x696763=0xc8;}else{_0x696763=0xce;}_0x2f0565[_0xace8('0x16')](_0x696763);return _0x2f0565[_0xace8('0x1c')](_0xace8('0x1d'),_0x377387+'-'+_0x155c56+'/'+_0x38317c)['json'](_0x4f02ad);}return null;};}function patchUpdates(_0x1548a5){return function(_0x1530ee){try{jsonpatch[_0xace8('0x1e')](_0x1530ee,_0x1548a5,!![]);}catch(_0x4584ed){return BPromise['reject'](_0x4584ed);}return _0x1530ee['save']();};}function saveUpdates(_0xdded89,_0x4f755f){return function(_0x277b67){if(_0x277b67){return _0x277b67['update'](_0xdded89)[_0xace8('0x1f')](function(_0x4248eb){return _0x4248eb;});}return null;};}function removeEntity(_0x4719f1,_0x1876e4){return function(_0x243ccb){if(_0x243ccb){return _0x243ccb[_0xace8('0x20')]()[_0xace8('0x1f')](function(){_0x4719f1[_0xace8('0x16')](0xcc)[_0xace8('0x17')]();});}};}function handleEntityNotFound(_0x4295fc,_0x2177b2){return function(_0x5e3446){if(!_0x5e3446){_0x4295fc[_0xace8('0x15')](0x194);}return _0x5e3446;};}function handleError(_0x79b042,_0x5df6cb){_0x5df6cb=_0x5df6cb||0x1f4;return function(_0x34f82a){logger[_0xace8('0x21')](_0x34f82a[_0xace8('0x22')]);if(_0x34f82a[_0xace8('0x23')]){delete _0x34f82a['name'];}_0x79b042[_0xace8('0x16')](_0x5df6cb)[_0xace8('0x24')](_0x34f82a);};}exports[_0xace8('0x25')]=function(_0x15f6cf,_0x1d7a95){var _0x3ac2bb={},_0x504b48={},_0x53a548={'count':0x0,'rows':[]};var _0x269204=_['map'](db[_0xace8('0x26')][_0xace8('0x27')],function(_0x4910a1){return{'name':_0x4910a1[_0xace8('0x28')],'type':_0x4910a1[_0xace8('0x29')][_0xace8('0x2a')]};});_0x504b48[_0xace8('0x2b')]=_[_0xace8('0x2c')](_0x269204,_0xace8('0x23'));_0x504b48[_0xace8('0x2d')]=_['keys'](_0x15f6cf[_0xace8('0x2d')]);_0x504b48[_0xace8('0x2e')]=_[_0xace8('0x2f')](_0x504b48[_0xace8('0x2b')],_0x504b48[_0xace8('0x2d')]);_0x3ac2bb[_0xace8('0x30')]=_['intersection'](_0x504b48[_0xace8('0x2b')],qs['fields'](_0x15f6cf[_0xace8('0x2d')][_0xace8('0x31')]));_0x3ac2bb['attributes']=_0x3ac2bb[_0xace8('0x30')][_0xace8('0x32')]?_0x3ac2bb[_0xace8('0x30')]:_0x504b48['model'];if(!_0x15f6cf[_0xace8('0x2d')][_0xace8('0x33')](_0xace8('0x34'))){_0x3ac2bb[_0xace8('0x19')]=qs['limit'](_0x15f6cf['query'][_0xace8('0x19')]);_0x3ac2bb['offset']=qs[_0xace8('0x1b')](_0x15f6cf['query']['offset']);}_0x3ac2bb[_0xace8('0x35')]=qs[_0xace8('0x36')](_0x15f6cf[_0xace8('0x2d')][_0xace8('0x36')]);_0x3ac2bb[_0xace8('0x37')]=qs[_0xace8('0x2e')](_[_0xace8('0x38')](_0x15f6cf[_0xace8('0x2d')],_0x504b48[_0xace8('0x2e')]),_0x269204);if(_0x15f6cf[_0xace8('0x2d')]['filter']){_0x3ac2bb[_0xace8('0x37')]=_[_0xace8('0x39')](_0x3ac2bb[_0xace8('0x37')],{'$or':_[_0xace8('0x2c')](_0x269204,function(_0x395816){if(_0x395816[_0xace8('0x29')]!==_0xace8('0x3a')){var _0x4aacbf={};_0x4aacbf[_0x395816[_0xace8('0x23')]]={'$like':'%'+_0x15f6cf['query'][_0xace8('0x3b')]+'%'};return _0x4aacbf;}})});}_0x3ac2bb=_[_0xace8('0x39')]({},_0x3ac2bb,_0x15f6cf['options']);var _0x57340b={'where':_0x3ac2bb['where']};return db[_0xace8('0x26')]['count'](_0x57340b)['then'](function(_0x178f24){_0x53a548[_0xace8('0x1a')]=_0x178f24;if(_0x15f6cf['query'][_0xace8('0x3c')]){_0x3ac2bb[_0xace8('0x3d')]=[{'all':!![]}];}return db[_0xace8('0x26')][_0xace8('0x3e')](_0x3ac2bb);})['then'](function(_0x1e697e){_0x53a548['rows']=_0x1e697e;return _0x53a548;})[_0xace8('0x1f')](respondWithFilteredResult(_0x1d7a95,_0x3ac2bb))[_0xace8('0x3f')](handleError(_0x1d7a95,null));};exports[_0xace8('0x40')]=function(_0x5d5b2e,_0x1e3ad8){var _0x1218ed={'raw':!![],'where':{'id':_0x5d5b2e[_0xace8('0x41')]['id']}},_0x4ff3f5={};_0x4ff3f5[_0xace8('0x2b')]=_['keys'](db['OpenchannelTransferReport']['rawAttributes']);_0x4ff3f5['query']=_[_0xace8('0x42')](_0x5d5b2e[_0xace8('0x2d')]);_0x4ff3f5['filters']=_[_0xace8('0x2f')](_0x4ff3f5[_0xace8('0x2b')],_0x4ff3f5[_0xace8('0x2d')]);_0x1218ed['attributes']=_[_0xace8('0x2f')](_0x4ff3f5['model'],qs['fields'](_0x5d5b2e[_0xace8('0x2d')][_0xace8('0x31')]));_0x1218ed[_0xace8('0x30')]=_0x1218ed[_0xace8('0x30')][_0xace8('0x32')]?_0x1218ed[_0xace8('0x30')]:_0x4ff3f5[_0xace8('0x2b')];if(_0x5d5b2e[_0xace8('0x2d')][_0xace8('0x3c')]){_0x1218ed[_0xace8('0x3d')]=[{'all':!![]}];}_0x1218ed=_[_0xace8('0x39')]({},_0x1218ed,_0x5d5b2e['options']);return db[_0xace8('0x26')][_0xace8('0x43')](_0x1218ed)[_0xace8('0x1f')](handleEntityNotFound(_0x1e3ad8,null))['then'](respondWithResult(_0x1e3ad8,null))[_0xace8('0x3f')](handleError(_0x1e3ad8,null));};exports['create']=function(_0x4d951c,_0x3df333){return db[_0xace8('0x26')][_0xace8('0x44')](_0x4d951c['body'],{})[_0xace8('0x1f')](respondWithResult(_0x3df333,0xc9))[_0xace8('0x3f')](handleError(_0x3df333,null));};exports['update']=function(_0x3c9559,_0x21de20){if(_0x3c9559[_0xace8('0x45')]['id']){delete _0x3c9559[_0xace8('0x45')]['id'];}return db['OpenchannelTransferReport'][_0xace8('0x43')]({'where':{'id':_0x3c9559['params']['id']}})['then'](handleEntityNotFound(_0x21de20,null))[_0xace8('0x1f')](saveUpdates(_0x3c9559[_0xace8('0x45')],null))[_0xace8('0x1f')](respondWithResult(_0x21de20,null))[_0xace8('0x3f')](handleError(_0x21de20,null));};exports[_0xace8('0x20')]=function(_0x2e8572,_0x1339a2){return db[_0xace8('0x26')]['find']({'where':{'id':_0x2e8572['params']['id']}})['then'](handleEntityNotFound(_0x1339a2,null))[_0xace8('0x1f')](removeEntity(_0x1339a2,null))[_0xace8('0x3f')](handleError(_0x1339a2,null));};exports[_0xace8('0x46')]=function(_0x5895a7,_0x5e4a91){return db[_0xace8('0x26')]['describe']()['then'](respondWithResult(_0x5e4a91,null))['catch'](handleError(_0x5e4a91,null));};
\ No newline at end of file
+var _0xc55d=['rimraf','zip-dir','fast-json-patch','moment','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/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','save','update','then','destroy','end','stack','name','map','OpenchannelTransferReport','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','pick','filter','merge','where','VIRTUAL','options','include','findAll','rows','catch','show','params','length','includeAll','find','create','body','describe','eml-format'];(function(_0x73339d,_0x378d32){var _0x9378c3=function(_0x8a2d6b){while(--_0x8a2d6b){_0x73339d['push'](_0x73339d['shift']());}};_0x9378c3(++_0x378d32);}(_0xc55d,0x1d9));var _0xdc55=function(_0x8135d9,_0x108340){_0x8135d9=_0x8135d9-0x0;var _0xc795a5=_0xc55d[_0x8135d9];return _0xc795a5;};'use strict';var emlformat=require(_0xdc55('0x0'));var rimraf=require(_0xdc55('0x1'));var zipdir=require(_0xdc55('0x2'));var jsonpatch=require(_0xdc55('0x3'));var rp=require('request-promise');var moment=require(_0xdc55('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xdc55('0x5'));var util=require(_0xdc55('0x6'));var path=require(_0xdc55('0x7'));var sox=require(_0xdc55('0x8'));var csv=require(_0xdc55('0x9'));var ejs=require(_0xdc55('0xa'));var fs=require('fs');var fs_extra=require(_0xdc55('0xb'));var _=require(_0xdc55('0xc'));var squel=require('squel');var crypto=require(_0xdc55('0xd'));var jsforce=require(_0xdc55('0xe'));var deskjs=require(_0xdc55('0xf'));var toCsv=require(_0xdc55('0x9'));var querystring=require(_0xdc55('0x10'));var Papa=require(_0xdc55('0x11'));var Redis=require('ioredis');var authService=require(_0xdc55('0x12'));var qs=require(_0xdc55('0x13'));var as=require(_0xdc55('0x14'));var hardwareService=require(_0xdc55('0x15'));var logger=require(_0xdc55('0x16'))(_0xdc55('0x17'));var utils=require(_0xdc55('0x18'));var config=require(_0xdc55('0x19'));var licenseUtil=require(_0xdc55('0x1a'));var db=require(_0xdc55('0x1b'))['db'];function respondWithStatusCode(_0x5d8ff3,_0x2aaae0){_0x2aaae0=_0x2aaae0||0xcc;return function(_0x54b1be){if(_0x54b1be){return _0x5d8ff3[_0xdc55('0x1c')](_0x2aaae0);}return _0x5d8ff3[_0xdc55('0x1d')](_0x2aaae0)['end']();};}function respondWithResult(_0x5c28d8,_0xf81a30){_0xf81a30=_0xf81a30||0xc8;return function(_0x524ca3){if(_0x524ca3){return _0x5c28d8[_0xdc55('0x1d')](_0xf81a30)['json'](_0x524ca3);}};}function respondWithFilteredResult(_0x5d1992,_0x44e348){return function(_0x1bc272){if(_0x1bc272){var _0x2424c7=typeof _0x44e348[_0xdc55('0x1e')]===_0xdc55('0x1f')&&typeof _0x44e348[_0xdc55('0x20')]==='undefined';var _0x2d596f=_0x1bc272[_0xdc55('0x21')];var _0x5514fa=_0x2424c7?0x0:_0x44e348['offset'];var _0x45cf7f=_0x2424c7?_0x1bc272[_0xdc55('0x21')]:_0x44e348[_0xdc55('0x1e')]+_0x44e348[_0xdc55('0x20')];var _0x1a850a;if(_0x45cf7f>=_0x2d596f){_0x45cf7f=_0x2d596f;_0x1a850a=0xc8;}else{_0x1a850a=0xce;}_0x5d1992[_0xdc55('0x1d')](_0x1a850a);return _0x5d1992[_0xdc55('0x22')](_0xdc55('0x23'),_0x5514fa+'-'+_0x45cf7f+'/'+_0x2d596f)[_0xdc55('0x24')](_0x1bc272);}return null;};}function patchUpdates(_0x4f1910){return function(_0x5c40a3){try{jsonpatch[_0xdc55('0x25')](_0x5c40a3,_0x4f1910,!![]);}catch(_0x12d42f){return BPromise[_0xdc55('0x26')](_0x12d42f);}return _0x5c40a3[_0xdc55('0x27')]();};}function saveUpdates(_0x12dd4d,_0x231a7f){return function(_0x21e43b){if(_0x21e43b){return _0x21e43b[_0xdc55('0x28')](_0x12dd4d)[_0xdc55('0x29')](function(_0x2f09d8){return _0x2f09d8;});}return null;};}function removeEntity(_0xe566f0,_0x1752eb){return function(_0x47d55d){if(_0x47d55d){return _0x47d55d[_0xdc55('0x2a')]()['then'](function(){_0xe566f0['status'](0xcc)[_0xdc55('0x2b')]();});}};}function handleEntityNotFound(_0x428e2b,_0x2afca0){return function(_0x12f1c6){if(!_0x12f1c6){_0x428e2b[_0xdc55('0x1c')](0x194);}return _0x12f1c6;};}function handleError(_0x572feb,_0x15925e){_0x15925e=_0x15925e||0x1f4;return function(_0x2e42c2){logger['error'](_0x2e42c2[_0xdc55('0x2c')]);if(_0x2e42c2['name']){delete _0x2e42c2[_0xdc55('0x2d')];}_0x572feb[_0xdc55('0x1d')](_0x15925e)['send'](_0x2e42c2);};}exports['index']=function(_0x55d4d1,_0x2f6fbd){var _0x337e88={},_0x3356b6={},_0x3036f3={'count':0x0,'rows':[]};var _0x2e9b23=_[_0xdc55('0x2e')](db[_0xdc55('0x2f')][_0xdc55('0x30')],function(_0x5b9c23){return{'name':_0x5b9c23['fieldName'],'type':_0x5b9c23[_0xdc55('0x31')][_0xdc55('0x32')]};});_0x3356b6[_0xdc55('0x33')]=_['map'](_0x2e9b23,'name');_0x3356b6[_0xdc55('0x34')]=_[_0xdc55('0x35')](_0x55d4d1[_0xdc55('0x34')]);_0x3356b6[_0xdc55('0x36')]=_[_0xdc55('0x37')](_0x3356b6['model'],_0x3356b6[_0xdc55('0x34')]);_0x337e88[_0xdc55('0x38')]=_[_0xdc55('0x37')](_0x3356b6['model'],qs['fields'](_0x55d4d1[_0xdc55('0x34')][_0xdc55('0x39')]));_0x337e88['attributes']=_0x337e88['attributes']['length']?_0x337e88[_0xdc55('0x38')]:_0x3356b6[_0xdc55('0x33')];if(!_0x55d4d1[_0xdc55('0x34')][_0xdc55('0x3a')](_0xdc55('0x3b'))){_0x337e88[_0xdc55('0x20')]=qs[_0xdc55('0x20')](_0x55d4d1[_0xdc55('0x34')][_0xdc55('0x20')]);_0x337e88[_0xdc55('0x1e')]=qs[_0xdc55('0x1e')](_0x55d4d1['query'][_0xdc55('0x1e')]);}_0x337e88['order']=qs[_0xdc55('0x3c')](_0x55d4d1['query']['sort']);_0x337e88['where']=qs[_0xdc55('0x36')](_[_0xdc55('0x3d')](_0x55d4d1[_0xdc55('0x34')],_0x3356b6[_0xdc55('0x36')]),_0x2e9b23);if(_0x55d4d1[_0xdc55('0x34')][_0xdc55('0x3e')]){_0x337e88['where']=_[_0xdc55('0x3f')](_0x337e88[_0xdc55('0x40')],{'$or':_[_0xdc55('0x2e')](_0x2e9b23,function(_0x59cb5f){if(_0x59cb5f[_0xdc55('0x31')]!==_0xdc55('0x41')){var _0xdffbf8={};_0xdffbf8[_0x59cb5f['name']]={'$like':'%'+_0x55d4d1['query']['filter']+'%'};return _0xdffbf8;}})});}_0x337e88=_[_0xdc55('0x3f')]({},_0x337e88,_0x55d4d1[_0xdc55('0x42')]);var _0x4bd97c={'where':_0x337e88[_0xdc55('0x40')]};return db[_0xdc55('0x2f')]['count'](_0x4bd97c)[_0xdc55('0x29')](function(_0x47504a){_0x3036f3[_0xdc55('0x21')]=_0x47504a;if(_0x55d4d1['query']['includeAll']){_0x337e88[_0xdc55('0x43')]=[{'all':!![]}];}return db[_0xdc55('0x2f')][_0xdc55('0x44')](_0x337e88);})[_0xdc55('0x29')](function(_0x394085){_0x3036f3[_0xdc55('0x45')]=_0x394085;return _0x3036f3;})['then'](respondWithFilteredResult(_0x2f6fbd,_0x337e88))[_0xdc55('0x46')](handleError(_0x2f6fbd,null));};exports[_0xdc55('0x47')]=function(_0xf3c8ec,_0x4cbe9e){var _0x455abf={'raw':!![],'where':{'id':_0xf3c8ec[_0xdc55('0x48')]['id']}},_0x1a0dc5={};_0x1a0dc5[_0xdc55('0x33')]=_[_0xdc55('0x35')](db['OpenchannelTransferReport'][_0xdc55('0x30')]);_0x1a0dc5[_0xdc55('0x34')]=_[_0xdc55('0x35')](_0xf3c8ec[_0xdc55('0x34')]);_0x1a0dc5[_0xdc55('0x36')]=_[_0xdc55('0x37')](_0x1a0dc5['model'],_0x1a0dc5['query']);_0x455abf[_0xdc55('0x38')]=_['intersection'](_0x1a0dc5['model'],qs['fields'](_0xf3c8ec[_0xdc55('0x34')][_0xdc55('0x39')]));_0x455abf[_0xdc55('0x38')]=_0x455abf['attributes'][_0xdc55('0x49')]?_0x455abf[_0xdc55('0x38')]:_0x1a0dc5[_0xdc55('0x33')];if(_0xf3c8ec[_0xdc55('0x34')][_0xdc55('0x4a')]){_0x455abf[_0xdc55('0x43')]=[{'all':!![]}];}_0x455abf=_[_0xdc55('0x3f')]({},_0x455abf,_0xf3c8ec[_0xdc55('0x42')]);return db[_0xdc55('0x2f')][_0xdc55('0x4b')](_0x455abf)[_0xdc55('0x29')](handleEntityNotFound(_0x4cbe9e,null))[_0xdc55('0x29')](respondWithResult(_0x4cbe9e,null))[_0xdc55('0x46')](handleError(_0x4cbe9e,null));};exports[_0xdc55('0x4c')]=function(_0x29d6ff,_0x46a0a3){return db[_0xdc55('0x2f')][_0xdc55('0x4c')](_0x29d6ff[_0xdc55('0x4d')],{})['then'](respondWithResult(_0x46a0a3,0xc9))['catch'](handleError(_0x46a0a3,null));};exports[_0xdc55('0x28')]=function(_0x2ce040,_0xf36f3c){if(_0x2ce040[_0xdc55('0x4d')]['id']){delete _0x2ce040[_0xdc55('0x4d')]['id'];}return db[_0xdc55('0x2f')][_0xdc55('0x4b')]({'where':{'id':_0x2ce040['params']['id']}})[_0xdc55('0x29')](handleEntityNotFound(_0xf36f3c,null))['then'](saveUpdates(_0x2ce040[_0xdc55('0x4d')],null))[_0xdc55('0x29')](respondWithResult(_0xf36f3c,null))['catch'](handleError(_0xf36f3c,null));};exports[_0xdc55('0x2a')]=function(_0x4ae4fe,_0x75a874){return db[_0xdc55('0x2f')][_0xdc55('0x4b')]({'where':{'id':_0x4ae4fe[_0xdc55('0x48')]['id']}})[_0xdc55('0x29')](handleEntityNotFound(_0x75a874,null))['then'](removeEntity(_0x75a874,null))[_0xdc55('0x46')](handleError(_0x75a874,null));};exports[_0xdc55('0x4e')]=function(_0x123f8c,_0x3f5607){return db[_0xdc55('0x2f')][_0xdc55('0x4e')]()[_0xdc55('0x29')](respondWithResult(_0x3f5607,null))['catch'](handleError(_0x3f5607,null));};
\ No newline at end of file
index 139aff9..5d60bb7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4cbf=['report_openchannel_transfer','uniqueid','lodash','util','moment','bluebird','request-promise','rimraf','exports','define'];(function(_0x37978c,_0x29ed82){var _0x18306c=function(_0x47880c){while(--_0x47880c){_0x37978c['push'](_0x37978c['shift']());}};_0x18306c(++_0x29ed82);}(_0x4cbf,0x174));var _0xf4cb=function(_0xd1d19a,_0x1933f0){_0xd1d19a=_0xd1d19a-0x0;var _0x52a79d=_0x4cbf[_0xd1d19a];return _0x52a79d;};'use strict';var _=require(_0xf4cb('0x0'));var util=require(_0xf4cb('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xf4cb('0x2'));var BPromise=require(_0xf4cb('0x3'));var rp=require(_0xf4cb('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xf4cb('0x5'));var config=require('../../config/environment');var attributes=require('./openchannelTransferReport.attributes');module[_0xf4cb('0x6')]=function(_0x5aa409,_0x5933ce){return _0x5aa409[_0xf4cb('0x7')]('OpenchannelTransferReport',attributes,{'tableName':_0xf4cb('0x8'),'paranoid':![],'indexes':[{'name':_0xf4cb('0x9'),'fields':[_0xf4cb('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xc371=['define','OpenchannelTransferReport','uniqueid','lodash','../../config/logger','bluebird','request-promise','path','rimraf','./openchannelTransferReport.attributes','exports'];(function(_0x28cf1b,_0x589dbf){var _0x965f7f=function(_0x2a0bd6){while(--_0x2a0bd6){_0x28cf1b['push'](_0x28cf1b['shift']());}};_0x965f7f(++_0x589dbf);}(_0xc371,0x1c6));var _0x1c37=function(_0x364407,_0x3729ac){_0x364407=_0x364407-0x0;var _0x27273c=_0xc371[_0x364407];return _0x27273c;};'use strict';var _=require(_0x1c37('0x0'));var util=require('util');var logger=require(_0x1c37('0x1'))('api');var moment=require('moment');var BPromise=require(_0x1c37('0x2'));var rp=require(_0x1c37('0x3'));var fs=require('fs');var path=require(_0x1c37('0x4'));var rimraf=require(_0x1c37('0x5'));var config=require('../../config/environment');var attributes=require(_0x1c37('0x6'));module[_0x1c37('0x7')]=function(_0xc1e9c3,_0x2b423a){return _0xc1e9c3[_0x1c37('0x8')](_0x1c37('0x9'),attributes,{'tableName':'report_openchannel_transfer','paranoid':![],'indexes':[{'name':_0x1c37('0xa'),'fields':[_0x1c37('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index ece3fb0..d7b93e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9b67=['code','message','OpenchannelTransferReport,\x20%s,\x20%s','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','OpenchannelTransferReport,\x20%s,\x20%s,\x20%s','error'];(function(_0x94ba8d,_0xd53c4c){var _0x406a50=function(_0x391faa){while(--_0x391faa){_0x94ba8d['push'](_0x94ba8d['shift']());}};_0x406a50(++_0xd53c4c);}(_0x9b67,0xf6));var _0x79b6=function(_0x1104a3,_0x447f40){_0x1104a3=_0x1104a3-0x0;var _0x2c64a1=_0x9b67[_0x1104a3];return _0x2c64a1;};'use strict';var _=require(_0x79b6('0x0'));var util=require(_0x79b6('0x1'));var moment=require(_0x79b6('0x2'));var BPromise=require(_0x79b6('0x3'));var rs=require(_0x79b6('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x79b6('0x5'))['db'];var utils=require(_0x79b6('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x79b6('0x7'));var jayson=require(_0x79b6('0x8'));var client=jayson[_0x79b6('0x9')][_0x79b6('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xfa6a05,_0x128543,_0x34adbe){return new BPromise(function(_0x58ae2d,_0x1270a7){return client[_0x79b6('0xb')](_0xfa6a05,_0x34adbe)[_0x79b6('0xc')](function(_0x3d28cd){logger[_0x79b6('0xd')]('OpenchannelTransferReport,\x20%s,\x20%s',_0x128543,_0x79b6('0xe'));logger[_0x79b6('0xf')](_0x79b6('0x10'),_0x128543,_0x79b6('0xe'),JSON['stringify'](_0x3d28cd));if(_0x3d28cd['error']){if(_0x3d28cd[_0x79b6('0x11')][_0x79b6('0x12')]===0x1f4){logger[_0x79b6('0x11')]('OpenchannelTransferReport,\x20%s,\x20%s',_0x128543,_0x3d28cd[_0x79b6('0x11')][_0x79b6('0x13')]);return _0x1270a7(_0x3d28cd[_0x79b6('0x11')][_0x79b6('0x13')]);}logger[_0x79b6('0x11')](_0x79b6('0x14'),_0x128543,_0x3d28cd[_0x79b6('0x11')][_0x79b6('0x13')]);return _0x58ae2d(_0x3d28cd[_0x79b6('0x11')][_0x79b6('0x13')]);}else{logger[_0x79b6('0xd')](_0x79b6('0x14'),_0x128543,_0x79b6('0xe'));_0x58ae2d(_0x3d28cd['result'][_0x79b6('0x13')]);}})[_0x79b6('0x15')](function(_0xc36fd3){logger[_0x79b6('0x11')](_0x79b6('0x14'),_0x128543,_0xc36fd3);_0x1270a7(_0xc36fd3);});});}
\ No newline at end of file
+var _0x394e=['error','code','message','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','info','OpenchannelTransferReport,\x20%s,\x20%s','request\x20sent','debug','OpenchannelTransferReport,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x14b625,_0x16f1c0){var _0x955ac=function(_0x17845d){while(--_0x17845d){_0x14b625['push'](_0x14b625['shift']());}};_0x955ac(++_0x16f1c0);}(_0x394e,0x88));var _0xe394=function(_0x225a65,_0x106e43){_0x225a65=_0x225a65-0x0;var _0x240f37=_0x394e[_0x225a65];return _0x240f37;};'use strict';var _=require(_0xe394('0x0'));var util=require(_0xe394('0x1'));var moment=require('moment');var BPromise=require(_0xe394('0x2'));var rs=require(_0xe394('0x3'));var fs=require('fs');var Redis=require(_0xe394('0x4'));var db=require(_0xe394('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xe394('0x6'))(_0xe394('0x7'));var config=require(_0xe394('0x8'));var jayson=require(_0xe394('0x9'));var client=jayson[_0xe394('0xa')][_0xe394('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x337bff,_0x169910,_0xad826e){return new BPromise(function(_0x267d68,_0x1220a2){return client['request'](_0x337bff,_0xad826e)['then'](function(_0x5962d2){logger[_0xe394('0xc')](_0xe394('0xd'),_0x169910,_0xe394('0xe'));logger[_0xe394('0xf')](_0xe394('0x10'),_0x169910,_0xe394('0xe'),JSON[_0xe394('0x11')](_0x5962d2));if(_0x5962d2[_0xe394('0x12')]){if(_0x5962d2[_0xe394('0x12')][_0xe394('0x13')]===0x1f4){logger[_0xe394('0x12')](_0xe394('0xd'),_0x169910,_0x5962d2['error']['message']);return _0x1220a2(_0x5962d2['error'][_0xe394('0x14')]);}logger[_0xe394('0x12')]('OpenchannelTransferReport,\x20%s,\x20%s',_0x169910,_0x5962d2[_0xe394('0x12')][_0xe394('0x14')]);return _0x267d68(_0x5962d2[_0xe394('0x12')][_0xe394('0x14')]);}else{logger[_0xe394('0xc')](_0xe394('0xd'),_0x169910,'request\x20sent');_0x267d68(_0x5962d2['result'][_0xe394('0x14')]);}})[_0xe394('0x15')](function(_0x3f11e7){logger[_0xe394('0x12')]('OpenchannelTransferReport,\x20%s,\x20%s',_0x169910,_0x3f11e7);_0x1220a2(_0x3f11e7);});});}
\ No newline at end of file
index a0e62f0..6541590 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d60=['multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./pause.controller','get','isAuthenticated','index','show','create','put','/:id','update','delete','destroy','exports'];(function(_0x2ca934,_0x5b51e5){var _0x4b27bd=function(_0x2aaabb){while(--_0x2aaabb){_0x2ca934['push'](_0x2ca934['shift']());}};_0x4b27bd(++_0x5b51e5);}(_0x1d60,0x6e));var _0x01d6=function(_0xd6a3d6,_0x40338e){_0xd6a3d6=_0xd6a3d6-0x0;var _0x62a7ee=_0x1d60[_0xd6a3d6];return _0x62a7ee;};'use strict';var multer=require(_0x01d6('0x0'));var util=require(_0x01d6('0x1'));var path=require(_0x01d6('0x2'));var timeout=require(_0x01d6('0x3'));var express=require(_0x01d6('0x4'));var router=express[_0x01d6('0x5')]();var fs_extra=require(_0x01d6('0x6'));var auth=require(_0x01d6('0x7'));var interaction=require(_0x01d6('0x8'));var config=require(_0x01d6('0x9'));var controller=require(_0x01d6('0xa'));router[_0x01d6('0xb')]('/',auth[_0x01d6('0xc')](),controller[_0x01d6('0xd')]);router[_0x01d6('0xb')]('/:id',auth[_0x01d6('0xc')](),controller[_0x01d6('0xe')]);router['post']('/',auth[_0x01d6('0xc')](),controller[_0x01d6('0xf')]);router[_0x01d6('0x10')](_0x01d6('0x11'),auth[_0x01d6('0xc')](),controller[_0x01d6('0x12')]);router[_0x01d6('0x13')]('/:id',auth[_0x01d6('0xc')](),controller[_0x01d6('0x14')]);module[_0x01d6('0x15')]=router;
\ No newline at end of file
+var _0x3e02=['show','post','create','update','delete','destroy','exports','multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./pause.controller','isAuthenticated','index','get','/:id'];(function(_0x13d5a1,_0x37309a){var _0x14bd9e=function(_0x4d91cf){while(--_0x4d91cf){_0x13d5a1['push'](_0x13d5a1['shift']());}};_0x14bd9e(++_0x37309a);}(_0x3e02,0x93));var _0x23e0=function(_0x54545e,_0x5220e4){_0x54545e=_0x54545e-0x0;var _0x610536=_0x3e02[_0x54545e];return _0x610536;};'use strict';var multer=require(_0x23e0('0x0'));var util=require(_0x23e0('0x1'));var path=require(_0x23e0('0x2'));var timeout=require(_0x23e0('0x3'));var express=require(_0x23e0('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x23e0('0x5'));var interaction=require(_0x23e0('0x6'));var config=require(_0x23e0('0x7'));var controller=require(_0x23e0('0x8'));router['get']('/',auth[_0x23e0('0x9')](),controller[_0x23e0('0xa')]);router[_0x23e0('0xb')](_0x23e0('0xc'),auth[_0x23e0('0x9')](),controller[_0x23e0('0xd')]);router[_0x23e0('0xe')]('/',auth[_0x23e0('0x9')](),controller[_0x23e0('0xf')]);router['put']('/:id',auth[_0x23e0('0x9')](),controller[_0x23e0('0x10')]);router[_0x23e0('0x11')]('/:id',auth[_0x23e0('0x9')](),controller[_0x23e0('0x12')]);module[_0x23e0('0x13')]=router;
\ No newline at end of file
index c4f892e..8f2672a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x80dd=['STRING','sequelize','exports'];(function(_0xc858d0,_0x1c7cf0){var _0x42ae20=function(_0x49815f){while(--_0x49815f){_0xc858d0['push'](_0xc858d0['shift']());}};_0x42ae20(++_0x1c7cf0);}(_0x80dd,0x1d8));var _0xd80d=function(_0x3aac77,_0x16dbe5){_0x3aac77=_0x3aac77-0x0;var _0x34be18=_0x80dd[_0x3aac77];return _0x34be18;};'use strict';var Sequelize=require(_0xd80d('0x0'));module[_0xd80d('0x1')]={'name':{'type':Sequelize['STRING'],'unique':'name','allowNull':![]},'description':{'type':Sequelize[_0xd80d('0x2')]}};
\ No newline at end of file
+var _0x7601=['exports','STRING','name','sequelize'];(function(_0xc54a36,_0x3c4e8d){var _0x110705=function(_0x129230){while(--_0x129230){_0xc54a36['push'](_0xc54a36['shift']());}};_0x110705(++_0x3c4e8d);}(_0x7601,0x14f));var _0x1760=function(_0x3359a7,_0x38ab8c){_0x3359a7=_0x3359a7-0x0;var _0x5b4f1a=_0x7601[_0x3359a7];return _0x5b4f1a;};'use strict';var Sequelize=require(_0x1760('0x0'));module[_0x1760('0x1')]={'name':{'type':Sequelize[_0x1760('0x2')],'unique':_0x1760('0x3'),'allowNull':![]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 00ce159..b30a034 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6de0=['keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','where','pick','filter','VIRTUAL','merge','includeAll','include','rows','catch','show','options','find','create','body','user','role','Pauses','UserProfileSection','autoAssociation','UserProfileResource','error','params','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','path','sox','fs-extra','squel','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','get','stack','name','send','index','map','Pause','rawAttributes','fieldName','type','key','model','query'];(function(_0x576170,_0x1712ae){var _0x397c70=function(_0x2eb9de){while(--_0x2eb9de){_0x576170['push'](_0x576170['shift']());}};_0x397c70(++_0x1712ae);}(_0x6de0,0x163));var _0x06de=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0x6de0[_0x2c91e9];return _0x13f0ff;};'use strict';var emlformat=require(_0x06de('0x0'));var rimraf=require(_0x06de('0x1'));var zipdir=require(_0x06de('0x2'));var jsonpatch=require(_0x06de('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x06de('0x4'));var Mustache=require(_0x06de('0x5'));var util=require(_0x06de('0x6'));var path=require(_0x06de('0x7'));var sox=require(_0x06de('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x06de('0x9'));var _=require('lodash');var squel=require(_0x06de('0xa'));var crypto=require('crypto');var jsforce=require(_0x06de('0xb'));var deskjs=require(_0x06de('0xc'));var toCsv=require(_0x06de('0xd'));var querystring=require(_0x06de('0xe'));var Papa=require(_0x06de('0xf'));var Redis=require('ioredis');var authService=require(_0x06de('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x06de('0x11'));var hardwareService=require(_0x06de('0x12'));var logger=require(_0x06de('0x13'))(_0x06de('0x14'));var utils=require('../../config/utils');var config=require(_0x06de('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x06de('0x16'))['db'];function respondWithStatusCode(_0x5db405,_0x5ae352){_0x5ae352=_0x5ae352||0xcc;return function(_0x30b360){if(_0x30b360){return _0x5db405[_0x06de('0x17')](_0x5ae352);}return _0x5db405[_0x06de('0x18')](_0x5ae352)[_0x06de('0x19')]();};}function respondWithResult(_0x4b17a9,_0x46faab){_0x46faab=_0x46faab||0xc8;return function(_0x54baf7){if(_0x54baf7){return _0x4b17a9[_0x06de('0x18')](_0x46faab)['json'](_0x54baf7);}};}function respondWithFilteredResult(_0x5d3984,_0x3b607d){return function(_0x2d69f2){if(_0x2d69f2){var _0x46f68a=typeof _0x3b607d[_0x06de('0x1a')]===_0x06de('0x1b')&&typeof _0x3b607d[_0x06de('0x1c')]===_0x06de('0x1b');var _0x3a2de5=_0x2d69f2[_0x06de('0x1d')];var _0x2ae30e=_0x46f68a?0x0:_0x3b607d['offset'];var _0x62c077=_0x46f68a?_0x2d69f2[_0x06de('0x1d')]:_0x3b607d['offset']+_0x3b607d[_0x06de('0x1c')];var _0x2fed76;if(_0x62c077>=_0x3a2de5){_0x62c077=_0x3a2de5;_0x2fed76=0xc8;}else{_0x2fed76=0xce;}_0x5d3984[_0x06de('0x18')](_0x2fed76);return _0x5d3984[_0x06de('0x1e')](_0x06de('0x1f'),_0x2ae30e+'-'+_0x62c077+'/'+_0x3a2de5)['json'](_0x2d69f2);}return null;};}function patchUpdates(_0x48fd3e){return function(_0x31c0a8){try{jsonpatch['apply'](_0x31c0a8,_0x48fd3e,!![]);}catch(_0x5b3fb1){return BPromise[_0x06de('0x20')](_0x5b3fb1);}return _0x31c0a8[_0x06de('0x21')]();};}function saveUpdates(_0x429811,_0x23e356){return function(_0x176cad){if(_0x176cad){return _0x176cad[_0x06de('0x22')](_0x429811)[_0x06de('0x23')](function(_0x43773c){return _0x43773c;});}return null;};}function removeEntity(_0xbaf51d,_0x3b15ef){return function(_0x19a2ba){if(_0x19a2ba){return _0x19a2ba[_0x06de('0x24')]()[_0x06de('0x23')](function(){var _0x23e09c=_0x19a2ba[_0x06de('0x25')]({'plain':!![]});var _0x422efb='Pauses';return db['UserProfileResource'][_0x06de('0x24')]({'where':{'type':_0x422efb,'resourceId':_0x23e09c['id']}})['then'](function(){return _0x19a2ba;});})[_0x06de('0x23')](function(){_0xbaf51d['status'](0xcc)[_0x06de('0x19')]();});}};}function handleEntityNotFound(_0x20330a,_0x34b11c){return function(_0xa35acb){if(!_0xa35acb){_0x20330a[_0x06de('0x17')](0x194);}return _0xa35acb;};}function handleError(_0x40e729,_0x5c425c){_0x5c425c=_0x5c425c||0x1f4;return function(_0x1798b4){logger['error'](_0x1798b4[_0x06de('0x26')]);if(_0x1798b4['name']){delete _0x1798b4[_0x06de('0x27')];}_0x40e729[_0x06de('0x18')](_0x5c425c)[_0x06de('0x28')](_0x1798b4);};}exports[_0x06de('0x29')]=function(_0x16daa8,_0x1ea958){var _0xf59056={},_0x523859={},_0x5dc0cb={'count':0x0,'rows':[]};var _0x405114=_[_0x06de('0x2a')](db[_0x06de('0x2b')][_0x06de('0x2c')],function(_0x548d5d){return{'name':_0x548d5d[_0x06de('0x2d')],'type':_0x548d5d[_0x06de('0x2e')][_0x06de('0x2f')]};});_0x523859[_0x06de('0x30')]=_[_0x06de('0x2a')](_0x405114,_0x06de('0x27'));_0x523859[_0x06de('0x31')]=_[_0x06de('0x32')](_0x16daa8[_0x06de('0x31')]);_0x523859[_0x06de('0x33')]=_[_0x06de('0x34')](_0x523859[_0x06de('0x30')],_0x523859[_0x06de('0x31')]);_0xf59056[_0x06de('0x35')]=_[_0x06de('0x34')](_0x523859[_0x06de('0x30')],qs[_0x06de('0x36')](_0x16daa8['query'][_0x06de('0x36')]));_0xf59056['attributes']=_0xf59056[_0x06de('0x35')][_0x06de('0x37')]?_0xf59056['attributes']:_0x523859[_0x06de('0x30')];if(!_0x16daa8['query'][_0x06de('0x38')](_0x06de('0x39'))){_0xf59056['limit']=qs[_0x06de('0x1c')](_0x16daa8['query'][_0x06de('0x1c')]);_0xf59056[_0x06de('0x1a')]=qs[_0x06de('0x1a')](_0x16daa8['query']['offset']);}_0xf59056[_0x06de('0x3a')]=qs['sort'](_0x16daa8[_0x06de('0x31')]['sort']);_0xf59056[_0x06de('0x3b')]=qs['filters'](_[_0x06de('0x3c')](_0x16daa8['query'],_0x523859[_0x06de('0x33')]),_0x405114);if(_0x16daa8[_0x06de('0x31')][_0x06de('0x3d')]){_0xf59056[_0x06de('0x3b')]=_['merge'](_0xf59056[_0x06de('0x3b')],{'$or':_['map'](_0x405114,function(_0x444061){if(_0x444061[_0x06de('0x2e')]!==_0x06de('0x3e')){var _0xdcb66b={};_0xdcb66b[_0x444061[_0x06de('0x27')]]={'$like':'%'+_0x16daa8[_0x06de('0x31')]['filter']+'%'};return _0xdcb66b;}})});}_0xf59056=_[_0x06de('0x3f')]({},_0xf59056,_0x16daa8['options']);var _0x39ebc1={'where':_0xf59056['where']};return db[_0x06de('0x2b')][_0x06de('0x1d')](_0x39ebc1)[_0x06de('0x23')](function(_0xc1d827){_0x5dc0cb['count']=_0xc1d827;if(_0x16daa8[_0x06de('0x31')][_0x06de('0x40')]){_0xf59056[_0x06de('0x41')]=[{'all':!![]}];}return db[_0x06de('0x2b')]['findAll'](_0xf59056);})[_0x06de('0x23')](function(_0x1bc45a){_0x5dc0cb[_0x06de('0x42')]=_0x1bc45a;return _0x5dc0cb;})[_0x06de('0x23')](respondWithFilteredResult(_0x1ea958,_0xf59056))[_0x06de('0x43')](handleError(_0x1ea958,null));};exports[_0x06de('0x44')]=function(_0x505420,_0x44f6cb){var _0x42121c={'raw':!![],'where':{'id':_0x505420['params']['id']}},_0x52be82={};_0x52be82[_0x06de('0x30')]=_[_0x06de('0x32')](db[_0x06de('0x2b')]['rawAttributes']);_0x52be82[_0x06de('0x31')]=_['keys'](_0x505420[_0x06de('0x31')]);_0x52be82[_0x06de('0x33')]=_[_0x06de('0x34')](_0x52be82[_0x06de('0x30')],_0x52be82['query']);_0x42121c[_0x06de('0x35')]=_['intersection'](_0x52be82[_0x06de('0x30')],qs[_0x06de('0x36')](_0x505420[_0x06de('0x31')][_0x06de('0x36')]));_0x42121c['attributes']=_0x42121c[_0x06de('0x35')][_0x06de('0x37')]?_0x42121c[_0x06de('0x35')]:_0x52be82[_0x06de('0x30')];if(_0x505420[_0x06de('0x31')][_0x06de('0x40')]){_0x42121c[_0x06de('0x41')]=[{'all':!![]}];}_0x42121c=_['merge']({},_0x42121c,_0x505420[_0x06de('0x45')]);return db[_0x06de('0x2b')][_0x06de('0x46')](_0x42121c)['then'](handleEntityNotFound(_0x44f6cb,null))[_0x06de('0x23')](respondWithResult(_0x44f6cb,null))['catch'](handleError(_0x44f6cb,null));};exports[_0x06de('0x47')]=function(_0x2a037d,_0x338394){return db['Pause'][_0x06de('0x47')](_0x2a037d[_0x06de('0x48')],{})[_0x06de('0x23')](function(_0x58cef6){var _0x5f2f31=_0x2a037d[_0x06de('0x49')][_0x06de('0x25')]({'plain':!![]});if(!_0x5f2f31)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x5f2f31[_0x06de('0x4a')]===_0x06de('0x49')){var _0x3d95a7=_0x58cef6[_0x06de('0x25')]({'plain':!![]});var _0x40f520=_0x06de('0x4b');return db[_0x06de('0x4c')][_0x06de('0x46')]({'where':{'name':_0x40f520,'userProfileId':_0x5f2f31['userProfileId']},'raw':!![]})[_0x06de('0x23')](function(_0x4de37c){if(_0x4de37c&&_0x4de37c[_0x06de('0x4d')]===0x0){return db[_0x06de('0x4e')]['create']({'name':_0x3d95a7[_0x06de('0x27')],'resourceId':_0x3d95a7['id'],'type':_0x4de37c['name'],'sectionId':_0x4de37c['id']},{})[_0x06de('0x23')](function(){return _0x58cef6;});}else{return _0x58cef6;}})[_0x06de('0x43')](function(_0x1b6fde){logger[_0x06de('0x4f')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1b6fde);throw _0x1b6fde;});}return _0x58cef6;})[_0x06de('0x23')](respondWithResult(_0x338394,0xc9))[_0x06de('0x43')](handleError(_0x338394,null));};exports[_0x06de('0x22')]=function(_0x18e868,_0x117f26){if(_0x18e868[_0x06de('0x48')]['id']){delete _0x18e868[_0x06de('0x48')]['id'];}return db[_0x06de('0x2b')]['find']({'where':{'id':_0x18e868[_0x06de('0x50')]['id']}})[_0x06de('0x23')](handleEntityNotFound(_0x117f26,null))['then'](saveUpdates(_0x18e868[_0x06de('0x48')],null))[_0x06de('0x23')](respondWithResult(_0x117f26,null))['catch'](handleError(_0x117f26,null));};exports['destroy']=function(_0x313e0e,_0x39a394){return db[_0x06de('0x2b')]['find']({'where':{'id':_0x313e0e[_0x06de('0x50')]['id']}})[_0x06de('0x23')](handleEntityNotFound(_0x39a394,null))[_0x06de('0x23')](removeEntity(_0x39a394,null))[_0x06de('0x43')](handleError(_0x39a394,null));};
\ No newline at end of file
+var _0xdcfa=['rows','catch','show','params','options','find','create','body','user','role','UserProfileSection','userProfileId','autoAssociation','rimraf','fast-json-patch','request-promise','moment','bluebird','util','sox','to-csv','ejs','lodash','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','save','update','then','destroy','get','Pauses','UserProfileResource','error','stack','name','send','index','map','Pause','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','pick','filter','where','merge','VIRTUAL','includeAll','include','findAll'];(function(_0xfd5f37,_0x24a79c){var _0x11bd01=function(_0x4ae9bd){while(--_0x4ae9bd){_0xfd5f37['push'](_0xfd5f37['shift']());}};_0x11bd01(++_0x24a79c);}(_0xdcfa,0xab));var _0xadcf=function(_0x3511d3,_0x4107ae){_0x3511d3=_0x3511d3-0x0;var _0x5d6321=_0xdcfa[_0x3511d3];return _0x5d6321;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xadcf('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xadcf('0x1'));var rp=require(_0xadcf('0x2'));var moment=require(_0xadcf('0x3'));var BPromise=require(_0xadcf('0x4'));var Mustache=require('mustache');var util=require(_0xadcf('0x5'));var path=require('path');var sox=require(_0xadcf('0x6'));var csv=require(_0xadcf('0x7'));var ejs=require(_0xadcf('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xadcf('0x9'));var squel=require('squel');var crypto=require(_0xadcf('0xa'));var jsforce=require('jsforce');var deskjs=require(_0xadcf('0xb'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xadcf('0xc'));var Redis=require(_0xadcf('0xd'));var authService=require(_0xadcf('0xe'));var qs=require(_0xadcf('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xadcf('0x10'));var logger=require('../../config/logger')(_0xadcf('0x11'));var utils=require('../../config/utils');var config=require(_0xadcf('0x12'));var licenseUtil=require(_0xadcf('0x13'));var db=require(_0xadcf('0x14'))['db'];function respondWithStatusCode(_0x1d1ed0,_0x48c039){_0x48c039=_0x48c039||0xcc;return function(_0x20ea26){if(_0x20ea26){return _0x1d1ed0[_0xadcf('0x15')](_0x48c039);}return _0x1d1ed0[_0xadcf('0x16')](_0x48c039)[_0xadcf('0x17')]();};}function respondWithResult(_0x1ac9c0,_0x56fb2d){_0x56fb2d=_0x56fb2d||0xc8;return function(_0x23d9d9){if(_0x23d9d9){return _0x1ac9c0['status'](_0x56fb2d)[_0xadcf('0x18')](_0x23d9d9);}};}function respondWithFilteredResult(_0x1dc176,_0x5ab819){return function(_0x115dca){if(_0x115dca){var _0x574b3f=typeof _0x5ab819[_0xadcf('0x19')]===_0xadcf('0x1a')&&typeof _0x5ab819[_0xadcf('0x1b')]===_0xadcf('0x1a');var _0x4b95b2=_0x115dca[_0xadcf('0x1c')];var _0x487ffd=_0x574b3f?0x0:_0x5ab819['offset'];var _0x2538f8=_0x574b3f?_0x115dca[_0xadcf('0x1c')]:_0x5ab819[_0xadcf('0x19')]+_0x5ab819[_0xadcf('0x1b')];var _0x37f544;if(_0x2538f8>=_0x4b95b2){_0x2538f8=_0x4b95b2;_0x37f544=0xc8;}else{_0x37f544=0xce;}_0x1dc176[_0xadcf('0x16')](_0x37f544);return _0x1dc176['set'](_0xadcf('0x1d'),_0x487ffd+'-'+_0x2538f8+'/'+_0x4b95b2)[_0xadcf('0x18')](_0x115dca);}return null;};}function patchUpdates(_0x501b4e){return function(_0xe06be7){try{jsonpatch[_0xadcf('0x1e')](_0xe06be7,_0x501b4e,!![]);}catch(_0x4afe05){return BPromise['reject'](_0x4afe05);}return _0xe06be7[_0xadcf('0x1f')]();};}function saveUpdates(_0x4db072,_0x1e9d6a){return function(_0x456ab4){if(_0x456ab4){return _0x456ab4[_0xadcf('0x20')](_0x4db072)[_0xadcf('0x21')](function(_0x5f41ad){return _0x5f41ad;});}return null;};}function removeEntity(_0x5c5125,_0x5a8bb2){return function(_0x160f28){if(_0x160f28){return _0x160f28[_0xadcf('0x22')]()['then'](function(){var _0x169e34=_0x160f28[_0xadcf('0x23')]({'plain':!![]});var _0x39369a=_0xadcf('0x24');return db[_0xadcf('0x25')]['destroy']({'where':{'type':_0x39369a,'resourceId':_0x169e34['id']}})[_0xadcf('0x21')](function(){return _0x160f28;});})[_0xadcf('0x21')](function(){_0x5c5125[_0xadcf('0x16')](0xcc)[_0xadcf('0x17')]();});}};}function handleEntityNotFound(_0x117dd4,_0x2782a6){return function(_0x159761){if(!_0x159761){_0x117dd4[_0xadcf('0x15')](0x194);}return _0x159761;};}function handleError(_0x151b97,_0x16a3ce){_0x16a3ce=_0x16a3ce||0x1f4;return function(_0x1aae79){logger[_0xadcf('0x26')](_0x1aae79[_0xadcf('0x27')]);if(_0x1aae79[_0xadcf('0x28')]){delete _0x1aae79['name'];}_0x151b97['status'](_0x16a3ce)[_0xadcf('0x29')](_0x1aae79);};}exports[_0xadcf('0x2a')]=function(_0x3b9d45,_0x5593d2){var _0x229bf9={},_0x1228fd={},_0x28a838={'count':0x0,'rows':[]};var _0x542729=_[_0xadcf('0x2b')](db[_0xadcf('0x2c')][_0xadcf('0x2d')],function(_0x2e01a3){return{'name':_0x2e01a3['fieldName'],'type':_0x2e01a3[_0xadcf('0x2e')][_0xadcf('0x2f')]};});_0x1228fd[_0xadcf('0x30')]=_[_0xadcf('0x2b')](_0x542729,_0xadcf('0x28'));_0x1228fd[_0xadcf('0x31')]=_[_0xadcf('0x32')](_0x3b9d45[_0xadcf('0x31')]);_0x1228fd[_0xadcf('0x33')]=_[_0xadcf('0x34')](_0x1228fd['model'],_0x1228fd[_0xadcf('0x31')]);_0x229bf9[_0xadcf('0x35')]=_['intersection'](_0x1228fd[_0xadcf('0x30')],qs['fields'](_0x3b9d45[_0xadcf('0x31')][_0xadcf('0x36')]));_0x229bf9[_0xadcf('0x35')]=_0x229bf9[_0xadcf('0x35')][_0xadcf('0x37')]?_0x229bf9[_0xadcf('0x35')]:_0x1228fd[_0xadcf('0x30')];if(!_0x3b9d45[_0xadcf('0x31')][_0xadcf('0x38')]('nolimit')){_0x229bf9[_0xadcf('0x1b')]=qs[_0xadcf('0x1b')](_0x3b9d45[_0xadcf('0x31')][_0xadcf('0x1b')]);_0x229bf9['offset']=qs[_0xadcf('0x19')](_0x3b9d45[_0xadcf('0x31')][_0xadcf('0x19')]);}_0x229bf9[_0xadcf('0x39')]=qs['sort'](_0x3b9d45[_0xadcf('0x31')]['sort']);_0x229bf9['where']=qs[_0xadcf('0x33')](_[_0xadcf('0x3a')](_0x3b9d45[_0xadcf('0x31')],_0x1228fd[_0xadcf('0x33')]),_0x542729);if(_0x3b9d45[_0xadcf('0x31')][_0xadcf('0x3b')]){_0x229bf9[_0xadcf('0x3c')]=_[_0xadcf('0x3d')](_0x229bf9[_0xadcf('0x3c')],{'$or':_[_0xadcf('0x2b')](_0x542729,function(_0x1da854){if(_0x1da854[_0xadcf('0x2e')]!==_0xadcf('0x3e')){var _0x3315cc={};_0x3315cc[_0x1da854[_0xadcf('0x28')]]={'$like':'%'+_0x3b9d45[_0xadcf('0x31')][_0xadcf('0x3b')]+'%'};return _0x3315cc;}})});}_0x229bf9=_[_0xadcf('0x3d')]({},_0x229bf9,_0x3b9d45['options']);var _0x241d15={'where':_0x229bf9[_0xadcf('0x3c')]};return db['Pause']['count'](_0x241d15)[_0xadcf('0x21')](function(_0x5e3085){_0x28a838['count']=_0x5e3085;if(_0x3b9d45[_0xadcf('0x31')][_0xadcf('0x3f')]){_0x229bf9[_0xadcf('0x40')]=[{'all':!![]}];}return db[_0xadcf('0x2c')][_0xadcf('0x41')](_0x229bf9);})[_0xadcf('0x21')](function(_0x290051){_0x28a838[_0xadcf('0x42')]=_0x290051;return _0x28a838;})['then'](respondWithFilteredResult(_0x5593d2,_0x229bf9))[_0xadcf('0x43')](handleError(_0x5593d2,null));};exports[_0xadcf('0x44')]=function(_0x29510f,_0x2bcb69){var _0x15d668={'raw':!![],'where':{'id':_0x29510f[_0xadcf('0x45')]['id']}},_0x4c6843={};_0x4c6843[_0xadcf('0x30')]=_['keys'](db['Pause'][_0xadcf('0x2d')]);_0x4c6843[_0xadcf('0x31')]=_[_0xadcf('0x32')](_0x29510f[_0xadcf('0x31')]);_0x4c6843[_0xadcf('0x33')]=_[_0xadcf('0x34')](_0x4c6843[_0xadcf('0x30')],_0x4c6843[_0xadcf('0x31')]);_0x15d668[_0xadcf('0x35')]=_[_0xadcf('0x34')](_0x4c6843[_0xadcf('0x30')],qs[_0xadcf('0x36')](_0x29510f['query'][_0xadcf('0x36')]));_0x15d668['attributes']=_0x15d668['attributes']['length']?_0x15d668[_0xadcf('0x35')]:_0x4c6843['model'];if(_0x29510f[_0xadcf('0x31')][_0xadcf('0x3f')]){_0x15d668[_0xadcf('0x40')]=[{'all':!![]}];}_0x15d668=_[_0xadcf('0x3d')]({},_0x15d668,_0x29510f[_0xadcf('0x46')]);return db[_0xadcf('0x2c')][_0xadcf('0x47')](_0x15d668)[_0xadcf('0x21')](handleEntityNotFound(_0x2bcb69,null))[_0xadcf('0x21')](respondWithResult(_0x2bcb69,null))[_0xadcf('0x43')](handleError(_0x2bcb69,null));};exports[_0xadcf('0x48')]=function(_0x47aaf8,_0x8e94c5){return db['Pause'][_0xadcf('0x48')](_0x47aaf8[_0xadcf('0x49')],{})[_0xadcf('0x21')](function(_0x5adae8){var _0x49dbac=_0x47aaf8[_0xadcf('0x4a')]['get']({'plain':!![]});if(!_0x49dbac)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x49dbac[_0xadcf('0x4b')]==='user'){var _0x54eaab=_0x5adae8[_0xadcf('0x23')]({'plain':!![]});var _0x3e837b='Pauses';return db[_0xadcf('0x4c')]['find']({'where':{'name':_0x3e837b,'userProfileId':_0x49dbac[_0xadcf('0x4d')]},'raw':!![]})[_0xadcf('0x21')](function(_0xb1353b){if(_0xb1353b&&_0xb1353b[_0xadcf('0x4e')]===0x0){return db['UserProfileResource'][_0xadcf('0x48')]({'name':_0x54eaab[_0xadcf('0x28')],'resourceId':_0x54eaab['id'],'type':_0xb1353b[_0xadcf('0x28')],'sectionId':_0xb1353b['id']},{})[_0xadcf('0x21')](function(){return _0x5adae8;});}else{return _0x5adae8;}})[_0xadcf('0x43')](function(_0x5be570){logger[_0xadcf('0x26')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5be570);throw _0x5be570;});}return _0x5adae8;})[_0xadcf('0x21')](respondWithResult(_0x8e94c5,0xc9))[_0xadcf('0x43')](handleError(_0x8e94c5,null));};exports['update']=function(_0x3443f4,_0x3dd06f){if(_0x3443f4[_0xadcf('0x49')]['id']){delete _0x3443f4[_0xadcf('0x49')]['id'];}return db[_0xadcf('0x2c')]['find']({'where':{'id':_0x3443f4[_0xadcf('0x45')]['id']}})[_0xadcf('0x21')](handleEntityNotFound(_0x3dd06f,null))[_0xadcf('0x21')](saveUpdates(_0x3443f4['body'],null))[_0xadcf('0x21')](respondWithResult(_0x3dd06f,null))[_0xadcf('0x43')](handleError(_0x3dd06f,null));};exports['destroy']=function(_0x2bf77f,_0x3108fb){return db[_0xadcf('0x2c')]['find']({'where':{'id':_0x2bf77f[_0xadcf('0x45')]['id']}})[_0xadcf('0x21')](handleEntityNotFound(_0x3108fb,null))[_0xadcf('0x21')](removeEntity(_0x3108fb,null))['catch'](handleError(_0x3108fb,null));};
\ No newline at end of file
index e55ca40..d7de55d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fab=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./pause.attributes','exports','Pause','tools_pauses','lodash','util'];(function(_0x448ef3,_0x2f42d0){var _0x45b6fd=function(_0x421c32){while(--_0x421c32){_0x448ef3['push'](_0x448ef3['shift']());}};_0x45b6fd(++_0x2f42d0);}(_0x5fab,0x177));var _0xb5fa=function(_0x310a23,_0x49f6b5){_0x310a23=_0x310a23-0x0;var _0x50fe57=_0x5fab[_0x310a23];return _0x50fe57;};'use strict';var _=require(_0xb5fa('0x0'));var util=require(_0xb5fa('0x1'));var logger=require('../../config/logger')(_0xb5fa('0x2'));var moment=require(_0xb5fa('0x3'));var BPromise=require(_0xb5fa('0x4'));var rp=require(_0xb5fa('0x5'));var fs=require('fs');var path=require(_0xb5fa('0x6'));var rimraf=require(_0xb5fa('0x7'));var config=require(_0xb5fa('0x8'));var attributes=require(_0xb5fa('0x9'));module[_0xb5fa('0xa')]=function(_0x44df89,_0x4a0249){return _0x44df89['define'](_0xb5fa('0xb'),attributes,{'tableName':_0xb5fa('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc4aa=['bluebird','../../config/environment','./pause.attributes','exports','define','Pause','tools_pauses','lodash','util','../../config/logger','api','moment'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0xc4aa[_0x19950b];return _0x3c6b41;};'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
index 95aa8a3..f1bf0d3 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(_0x1a6cd6,_0x170e5c){var _0x36092c=function(_0x271845){while(--_0x271845){_0x1a6cd6['push'](_0x1a6cd6['shift']());}};_0x36092c(++_0x170e5c);}(_0xb10b,0x12a));var _0xbb10=function(_0x25d4b1,_0x4e896d){_0x25d4b1=_0x25d4b1-0x0;var _0x2d51a5=_0xb10b[_0x25d4b1];return _0x2d51a5;};'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(_0x428e57,_0x54b8a1){var _0x44ad72=function(_0x48ede2){while(--_0x48ede2){_0x428e57['push'](_0x428e57['shift']());}};_0x44ad72(++_0x54b8a1);}(_0xb10b,0x12a));var _0xbb10=function(_0x4648ff,_0x582172){_0x4648ff=_0x4648ff-0x0;var _0x26070b=_0xb10b[_0x4648ff];return _0x26070b;};'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 cd558ac..cbd6a3d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9bde=['exports','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./plugin.controller','get','index','/webhook','webhookGet','/:id','isAuthenticated','show','/:id/download','diskStorage','join','root','server/files/plugins','originalname','replace','format','extname','now','post','file','upload','webhookPost','put','delete'];(function(_0x58c0e2,_0x288485){var _0x1cb5b1=function(_0x4ee413){while(--_0x4ee413){_0x58c0e2['push'](_0x58c0e2['shift']());}};_0x1cb5b1(++_0x288485);}(_0x9bde,0xe1));var _0xe9bd=function(_0x58054e,_0xccc3fe){_0x58054e=_0x58054e-0x0;var _0x4272d8=_0x9bde[_0x58054e];return _0x4272d8;};'use strict';var multer=require('multer');var util=require(_0xe9bd('0x0'));var path=require('path');var timeout=require(_0xe9bd('0x1'));var express=require('express');var router=express[_0xe9bd('0x2')]();var fs_extra=require(_0xe9bd('0x3'));var auth=require(_0xe9bd('0x4'));var interaction=require(_0xe9bd('0x5'));var config=require(_0xe9bd('0x6'));var controller=require(_0xe9bd('0x7'));router[_0xe9bd('0x8')]('/',auth['isAuthenticated'](),controller[_0xe9bd('0x9')]);router[_0xe9bd('0x8')](_0xe9bd('0xa'),controller[_0xe9bd('0xb')]);router[_0xe9bd('0x8')](_0xe9bd('0xc'),auth[_0xe9bd('0xd')](),controller[_0xe9bd('0xe')]);router[_0xe9bd('0x8')](_0xe9bd('0xf'),auth['isAuthenticated'](),controller['download']);var upload=multer({'storage':multer[_0xe9bd('0x10')]({'destination':function(_0x145521,_0x2601ac,_0x581ab9){_0x581ab9(null,path[_0xe9bd('0x11')](config[_0xe9bd('0x12')],_0xe9bd('0x13')));},'filename':function(_0x141587,_0x5e022a,_0x2c1d98){_0x5e022a['originalname']=_0x5e022a[_0xe9bd('0x14')][_0xe9bd('0x15')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x2c1d98(null,util[_0xe9bd('0x16')]('%s-%s%s',path['basename'](_0x5e022a[_0xe9bd('0x14')],path[_0xe9bd('0x17')](_0x5e022a[_0xe9bd('0x14')])),Date[_0xe9bd('0x18')](),path[_0xe9bd('0x17')](_0x5e022a[_0xe9bd('0x14')])));}})});router[_0xe9bd('0x19')]('/',upload['single'](_0xe9bd('0x1a')),controller[_0xe9bd('0x1b')]);router[_0xe9bd('0x19')]('/webhook',controller[_0xe9bd('0x1c')]);router[_0xe9bd('0x1d')](_0xe9bd('0xc'),auth[_0xe9bd('0xd')](),controller['update']);router[_0xe9bd('0x1e')]('/:id',auth[_0xe9bd('0xd')](),controller['delete']);module[_0xe9bd('0x1f')]=router;
\ No newline at end of file
+var _0x0e85=['put','update','delete','exports','multer','util','connect-timeout','express','../../components/interaction/service','./plugin.controller','get','isAuthenticated','index','/webhook','webhookGet','/:id','show','/:id/download','download','diskStorage','join','originalname','replace','format','%s-%s%s','extname','post','single','file','upload'];(function(_0x506a61,_0x5155ee){var _0x2c5b08=function(_0x110856){while(--_0x110856){_0x506a61['push'](_0x506a61['shift']());}};_0x2c5b08(++_0x5155ee);}(_0x0e85,0x7c));var _0x50e8=function(_0x2f45ea,_0x15c656){_0x2f45ea=_0x2f45ea-0x0;var _0x485a84=_0x0e85[_0x2f45ea];return _0x485a84;};'use strict';var multer=require(_0x50e8('0x0'));var util=require(_0x50e8('0x1'));var path=require('path');var timeout=require(_0x50e8('0x2'));var express=require(_0x50e8('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x50e8('0x4'));var config=require('../../config/environment');var controller=require(_0x50e8('0x5'));router[_0x50e8('0x6')]('/',auth[_0x50e8('0x7')](),controller[_0x50e8('0x8')]);router['get'](_0x50e8('0x9'),controller[_0x50e8('0xa')]);router[_0x50e8('0x6')](_0x50e8('0xb'),auth[_0x50e8('0x7')](),controller[_0x50e8('0xc')]);router['get'](_0x50e8('0xd'),auth[_0x50e8('0x7')](),controller[_0x50e8('0xe')]);var upload=multer({'storage':multer[_0x50e8('0xf')]({'destination':function(_0x154b9e,_0x194a89,_0x45dc6f){_0x45dc6f(null,path[_0x50e8('0x10')](config['root'],'server/files/plugins'));},'filename':function(_0xfc6bb9,_0x24d381,_0x508377){_0x24d381['originalname']=_0x24d381[_0x50e8('0x11')][_0x50e8('0x12')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x508377(null,util[_0x50e8('0x13')](_0x50e8('0x14'),path['basename'](_0x24d381[_0x50e8('0x11')],path[_0x50e8('0x15')](_0x24d381[_0x50e8('0x11')])),Date['now'](),path['extname'](_0x24d381[_0x50e8('0x11')])));}})});router[_0x50e8('0x16')]('/',upload[_0x50e8('0x17')](_0x50e8('0x18')),controller[_0x50e8('0x19')]);router[_0x50e8('0x16')]('/webhook',controller['webhookPost']);router[_0x50e8('0x1a')](_0x50e8('0xb'),auth[_0x50e8('0x7')](),controller[_0x50e8('0x1b')]);router[_0x50e8('0x1c')](_0x50e8('0xb'),auth[_0x50e8('0x7')](),controller['delete']);module[_0x50e8('0x1d')]=router;
\ No newline at end of file
index b294fb8..1e555d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe51a=['TEXT','BOOLEAN','Indicates\x20whether\x20the\x20plugin\x20is\x20installed.\x20Updated\x20when\x20the\x20plugin\x20is\x20installed/uninstalled.','agentOnly','always','never','Indicates\x20whether\x20to\x20display\x20the\x20plugin\x20in\x20the\x20sidebar.','exports','STRING','ENUM','html','script'];(function(_0x2ac94a,_0x1a4c6c){var _0x25f75d=function(_0x34670d){while(--_0x34670d){_0x2ac94a['push'](_0x2ac94a['shift']());}};_0x25f75d(++_0x1a4c6c);}(_0xe51a,0x133));var _0xae51=function(_0x1fc05d,_0x510bd7){_0x1fc05d=_0x1fc05d-0x0;var _0x2d977c=_0xe51a[_0x1fc05d];return _0x2d977c;};'use strict';var Sequelize=require('sequelize');module[_0xae51('0x0')]={'name':{'type':Sequelize[_0xae51('0x1')]},'type':{'type':Sequelize[_0xae51('0x2')](_0xae51('0x3'),_0xae51('0x4'))},'description':{'type':Sequelize[_0xae51('0x5')]},'version':{'type':Sequelize[_0xae51('0x5')]},'path':{'type':Sequelize[_0xae51('0x1')],'comment':'The\x20physical\x20path\x20where\x20the\x20plugin\x20is\x20stored.'},'active':{'type':Sequelize[_0xae51('0x6')],'defaultValue':0x0,'comment':_0xae51('0x7')},'sidebar':{'type':Sequelize['ENUM']('adminOnly',_0xae51('0x8'),_0xae51('0x9'),_0xae51('0xa')),'defaultValue':_0xae51('0x9'),'comment':_0xae51('0xb')},'icon':{'type':Sequelize[_0xae51('0x1')]},'adminUrl':{'type':Sequelize[_0xae51('0x1')]},'agentUrl':{'type':Sequelize[_0xae51('0x1')]},'scriptName':{'type':Sequelize[_0xae51('0x1')]},'scriptPath':{'type':Sequelize[_0xae51('0x1')]}};
\ No newline at end of file
+var _0x1a34=['never','Indicates\x20whether\x20to\x20display\x20the\x20plugin\x20in\x20the\x20sidebar.','exports','STRING','ENUM','html','TEXT','The\x20physical\x20path\x20where\x20the\x20plugin\x20is\x20stored.','BOOLEAN','adminOnly','always'];(function(_0x3cba93,_0x5c2fd8){var _0x4a2991=function(_0x3cf95b){while(--_0x3cf95b){_0x3cba93['push'](_0x3cba93['shift']());}};_0x4a2991(++_0x5c2fd8);}(_0x1a34,0x162));var _0x41a3=function(_0x48dd1f,_0x433a73){_0x48dd1f=_0x48dd1f-0x0;var _0x4b66c7=_0x1a34[_0x48dd1f];return _0x4b66c7;};'use strict';var Sequelize=require('sequelize');module[_0x41a3('0x0')]={'name':{'type':Sequelize[_0x41a3('0x1')]},'type':{'type':Sequelize[_0x41a3('0x2')](_0x41a3('0x3'),'script')},'description':{'type':Sequelize['TEXT']},'version':{'type':Sequelize[_0x41a3('0x4')]},'path':{'type':Sequelize[_0x41a3('0x1')],'comment':_0x41a3('0x5')},'active':{'type':Sequelize[_0x41a3('0x6')],'defaultValue':0x0,'comment':'Indicates\x20whether\x20the\x20plugin\x20is\x20installed.\x20Updated\x20when\x20the\x20plugin\x20is\x20installed/uninstalled.'},'sidebar':{'type':Sequelize[_0x41a3('0x2')](_0x41a3('0x7'),'agentOnly',_0x41a3('0x8'),_0x41a3('0x9')),'defaultValue':_0x41a3('0x8'),'comment':_0x41a3('0xa')},'icon':{'type':Sequelize[_0x41a3('0x1')]},'adminUrl':{'type':Sequelize[_0x41a3('0x1')]},'agentUrl':{'type':Sequelize[_0x41a3('0x1')]},'scriptName':{'type':Sequelize[_0x41a3('0x1')]},'scriptPath':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 5980e7c..a59891c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x59db=['Invalid\x20plugin\x20structure','isFile','some','manifest.json','Plugin\x20manifest\x20missing','readFileSync','Invalid\x20manifest:\x20name\x20missing','Invalid\x20manifest:\x20type\x20missing','version','Invalid\x20manifest:\x20version\x20not\x20specified','html','parameters','Invalid\x20manifest:\x20views\x20missing','views','admin','agent','script','scriptName','Invalid\x20manifest:\x20script\x20name\x20missing','scriptPath','Invalid\x20manifest:\x20script\x20path\x20missing','Invalid\x20manifest:\x20invalid\x20type','description','sidebar','always','icon','icon-apps','test','plugins','Warning:\x20admin\x20view\x20not\x20specified','Warning:\x20agent\x20view\x20not\x20specified','body','role','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','create','webhookGet','port','\x27PORT\x27\x20parameter\x20not\x20specified','hostname','encoding','method','%s%s','headers','content-length','content-type','endsWith','statusCode','resolve','\x27PATH\x27\x20parameter\x20not\x20specified','http://localhost:','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','extract-zip','archiver','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../mysqldb','redis','defaults','socket.io-emitter','./plugin.socket','register','sendStatus','status','offset','undefined','count','limit','set','Content-Range','json','reject','save','update','then','destroy','get','Plugins','UserProfileResource','end','error','stack','name','send','map','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','sort','where','pick','type','filter','options','includeAll','include','Plugin','findAll','rows','show','params','rawAttributes','length','find','catch','download','join','root','server/files/plugins','format','%s.zip','basename','createWriteStream','zip','warning','ENOENT','Sequelize','Error','Error\x20while\x20generating\x20the\x20zip\x20archive','**/*','dirname','node_modules/**/*','attachments/**/*','close','existsSync','Plugin\x20not\x20found','Error\x20while\x20downloading\x20the\x20plugin','unlinkSync','info','Download\x20completed','upload','file','extname','filename','Plugin\x20upload\x20filepath:\x20%s','Plugin\x20upload\x20destination:\x20%s','chmodSync','0777','readdirSync'];(function(_0x2f3848,_0x48564d){var _0x102668=function(_0x5e32ab){while(--_0x5e32ab){_0x2f3848['push'](_0x2f3848['shift']());}};_0x102668(++_0x48564d);}(_0x59db,0xda));var _0xb59d=function(_0x2ee4a0,_0xe398a6){_0x2ee4a0=_0x2ee4a0-0x0;var _0x35baa7=_0x59db[_0x2ee4a0];return _0x35baa7;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb59d('0x0'));var zipdir=require(_0xb59d('0x1'));var jsonpatch=require(_0xb59d('0x2'));var rp=require(_0xb59d('0x3'));var moment=require(_0xb59d('0x4'));var BPromise=require(_0xb59d('0x5'));var Mustache=require(_0xb59d('0x6'));var util=require('util');var path=require(_0xb59d('0x7'));var sox=require('sox');var csv=require(_0xb59d('0x8'));var ejs=require(_0xb59d('0x9'));var fs=require('fs');var fs_extra=require(_0xb59d('0xa'));var _=require(_0xb59d('0xb'));var squel=require(_0xb59d('0xc'));var crypto=require(_0xb59d('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xb59d('0xe'));var toCsv=require(_0xb59d('0x8'));var querystring=require(_0xb59d('0xf'));var Papa=require(_0xb59d('0x10'));var extract=require(_0xb59d('0x11'));var rimraf=require('rimraf');var archiver=require(_0xb59d('0x12'));var Redis=require(_0xb59d('0x13'));var authService=require(_0xb59d('0x14'));var qs=require(_0xb59d('0x15'));var as=require(_0xb59d('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xb59d('0x17'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xb59d('0x18'))['db'];config[_0xb59d('0x19')]=_[_0xb59d('0x1a')](config[_0xb59d('0x19')],{'host':'localhost','port':0x18eb});var socket=require(_0xb59d('0x1b'))(new Redis(config[_0xb59d('0x19')]));require(_0xb59d('0x1c'))[_0xb59d('0x1d')](socket);function respondWithStatusCode(_0x57cd1a,_0x33f5e4){_0x33f5e4=_0x33f5e4||0xcc;return function(_0x5efc6e){if(_0x5efc6e){return _0x57cd1a[_0xb59d('0x1e')](_0x33f5e4);}return _0x57cd1a[_0xb59d('0x1f')](_0x33f5e4)['end']();};}function respondWithResult(_0x34adf8,_0x25236d){_0x25236d=_0x25236d||0xc8;return function(_0x482335){if(_0x482335){return _0x34adf8[_0xb59d('0x1f')](_0x25236d)['json'](_0x482335);}};}function respondWithFilteredResult(_0x266c5b,_0x480b14){return function(_0x3a099c){if(_0x3a099c){var _0x581018=typeof _0x480b14[_0xb59d('0x20')]===_0xb59d('0x21')&&typeof _0x480b14['limit']===_0xb59d('0x21');var _0x2a3236=_0x3a099c['count'];var _0x2a08a3=_0x581018?0x0:_0x480b14[_0xb59d('0x20')];var _0x25558f=_0x581018?_0x3a099c[_0xb59d('0x22')]:_0x480b14['offset']+_0x480b14[_0xb59d('0x23')];var _0x272038;if(_0x25558f>=_0x2a3236){_0x25558f=_0x2a3236;_0x272038=0xc8;}else{_0x272038=0xce;}_0x266c5b[_0xb59d('0x1f')](_0x272038);return _0x266c5b[_0xb59d('0x24')](_0xb59d('0x25'),_0x2a08a3+'-'+_0x25558f+'/'+_0x2a3236)[_0xb59d('0x26')](_0x3a099c);}return null;};}function patchUpdates(_0x3b8476){return function(_0x168edf){try{jsonpatch['apply'](_0x168edf,_0x3b8476,!![]);}catch(_0x34edbe){return BPromise[_0xb59d('0x27')](_0x34edbe);}return _0x168edf[_0xb59d('0x28')]();};}function saveUpdates(_0x396022,_0x188fe1){return function(_0x560462){if(_0x560462){return _0x560462[_0xb59d('0x29')](_0x396022)[_0xb59d('0x2a')](function(_0x6c0f43){return _0x6c0f43;});}return null;};}function removeEntity(_0x22367c,_0x5edb97){return function(_0x24e1df){if(_0x24e1df){return _0x24e1df[_0xb59d('0x2b')]()['then'](function(){var _0x172149=_0x24e1df[_0xb59d('0x2c')]({'plain':!![]});var _0x99d4c8=_0xb59d('0x2d');return db[_0xb59d('0x2e')][_0xb59d('0x2b')]({'where':{'type':_0x99d4c8,'resourceId':_0x172149['id']}})['then'](function(){return _0x24e1df;});})[_0xb59d('0x2a')](function(){_0x22367c[_0xb59d('0x1f')](0xcc)[_0xb59d('0x2f')]();});}};}function handleEntityNotFound(_0x68de05,_0x2334aa){return function(_0x2fe29e){if(!_0x2fe29e){_0x68de05[_0xb59d('0x1e')](0x194);}return _0x2fe29e;};}function handleError(_0x5e18b5,_0x24b530){_0x24b530=_0x24b530||0x1f4;return function(_0x2fe119){logger[_0xb59d('0x30')](_0x2fe119[_0xb59d('0x31')]);if(_0x2fe119['name']){delete _0x2fe119[_0xb59d('0x32')];}_0x5e18b5[_0xb59d('0x1f')](_0x24b530)[_0xb59d('0x33')](_0x2fe119);};}exports['index']=function(_0x54d65b,_0x148199){var _0x2f0a35={},_0x42b27e={},_0x540838={'count':0x0,'rows':[]};var _0x380df6=_[_0xb59d('0x34')](db['Plugin']['rawAttributes'],function(_0x5b9429){return{'name':_0x5b9429['fieldName'],'type':_0x5b9429['type']['key']};});_0x42b27e[_0xb59d('0x35')]=_[_0xb59d('0x34')](_0x380df6,_0xb59d('0x32'));_0x42b27e[_0xb59d('0x36')]=_[_0xb59d('0x37')](_0x54d65b['query']);_0x42b27e[_0xb59d('0x38')]=_[_0xb59d('0x39')](_0x42b27e[_0xb59d('0x35')],_0x42b27e[_0xb59d('0x36')]);_0x2f0a35[_0xb59d('0x3a')]=_[_0xb59d('0x39')](_0x42b27e[_0xb59d('0x35')],qs[_0xb59d('0x3b')](_0x54d65b[_0xb59d('0x36')]['fields']));_0x2f0a35['attributes']=_0x2f0a35[_0xb59d('0x3a')]['length']?_0x2f0a35[_0xb59d('0x3a')]:_0x42b27e['model'];if(!_0x54d65b[_0xb59d('0x36')][_0xb59d('0x3c')]('nolimit')){_0x2f0a35[_0xb59d('0x23')]=qs[_0xb59d('0x23')](_0x54d65b[_0xb59d('0x36')][_0xb59d('0x23')]);_0x2f0a35['offset']=qs[_0xb59d('0x20')](_0x54d65b[_0xb59d('0x36')][_0xb59d('0x20')]);}_0x2f0a35['order']=qs[_0xb59d('0x3d')](_0x54d65b[_0xb59d('0x36')][_0xb59d('0x3d')]);_0x2f0a35[_0xb59d('0x3e')]=qs[_0xb59d('0x38')](_[_0xb59d('0x3f')](_0x54d65b['query'],_0x42b27e[_0xb59d('0x38')]),_0x380df6);if(_0x54d65b['query']['filter']){_0x2f0a35['where']=_['merge'](_0x2f0a35['where'],{'$or':_[_0xb59d('0x34')](_0x380df6,function(_0x12a920){if(_0x12a920[_0xb59d('0x40')]!=='VIRTUAL'){var _0x4f959f={};_0x4f959f[_0x12a920[_0xb59d('0x32')]]={'$like':'%'+_0x54d65b[_0xb59d('0x36')][_0xb59d('0x41')]+'%'};return _0x4f959f;}})});}_0x2f0a35=_['merge']({},_0x2f0a35,_0x54d65b[_0xb59d('0x42')]);var _0x303168={'where':_0x2f0a35['where']};return db['Plugin']['count'](_0x303168)[_0xb59d('0x2a')](function(_0x5564e6){_0x540838[_0xb59d('0x22')]=_0x5564e6;if(_0x54d65b[_0xb59d('0x36')][_0xb59d('0x43')]){_0x2f0a35[_0xb59d('0x44')]=[{'all':!![]}];}return db[_0xb59d('0x45')][_0xb59d('0x46')](_0x2f0a35);})['then'](function(_0x62f0b6){_0x540838[_0xb59d('0x47')]=_0x62f0b6;return _0x540838;})['then'](respondWithFilteredResult(_0x148199,_0x2f0a35))['catch'](handleError(_0x148199,null));};exports[_0xb59d('0x48')]=function(_0x553f0d,_0x2a5c8e){var _0x50153f={'raw':!![],'where':{'id':_0x553f0d[_0xb59d('0x49')]['id']}},_0x5065c4={};_0x5065c4['model']=_['keys'](db[_0xb59d('0x45')][_0xb59d('0x4a')]);_0x5065c4[_0xb59d('0x36')]=_[_0xb59d('0x37')](_0x553f0d[_0xb59d('0x36')]);_0x5065c4[_0xb59d('0x38')]=_[_0xb59d('0x39')](_0x5065c4[_0xb59d('0x35')],_0x5065c4[_0xb59d('0x36')]);_0x50153f[_0xb59d('0x3a')]=_['intersection'](_0x5065c4['model'],qs[_0xb59d('0x3b')](_0x553f0d[_0xb59d('0x36')]['fields']));_0x50153f[_0xb59d('0x3a')]=_0x50153f[_0xb59d('0x3a')][_0xb59d('0x4b')]?_0x50153f[_0xb59d('0x3a')]:_0x5065c4[_0xb59d('0x35')];if(_0x553f0d['query'][_0xb59d('0x43')]){_0x50153f[_0xb59d('0x44')]=[{'all':!![]}];}_0x50153f=_['merge']({},_0x50153f,_0x553f0d[_0xb59d('0x42')]);return db[_0xb59d('0x45')][_0xb59d('0x4c')](_0x50153f)['then'](handleEntityNotFound(_0x2a5c8e,null))[_0xb59d('0x2a')](respondWithResult(_0x2a5c8e,null))[_0xb59d('0x4d')](handleError(_0x2a5c8e,null));};exports[_0xb59d('0x4e')]=function(_0x2b8e15,_0x281af5,_0x40b570){return db[_0xb59d('0x45')][_0xb59d('0x4c')]({'where':{'id':_0x2b8e15[_0xb59d('0x49')]['id']},'attributes':[_0xb59d('0x32'),_0xb59d('0x7')],'raw':!![]})['then'](handleEntityNotFound(_0x281af5,null))['then'](function(_0x58fdc7){if(_0x58fdc7){var _0x2477f6=path[_0xb59d('0x4f')](config[_0xb59d('0x50')],_0xb59d('0x51'),util[_0xb59d('0x52')](_0xb59d('0x53'),path[_0xb59d('0x54')](_0x58fdc7[_0xb59d('0x7')])));var _0x241f2e=fs[_0xb59d('0x55')](_0x2477f6);var _0x585995=archiver(_0xb59d('0x56'),{'zlib':{'level':0x9}});_0x585995['on'](_0xb59d('0x57'),function(_0x1b811d){if(_0x1b811d['code']===_0xb59d('0x58')){logger[_0xb59d('0x30')](_0x1b811d);}else{throw new db[(_0xb59d('0x59'))][(_0xb59d('0x5a'))]('Error\x20while\x20generating\x20the\x20zip\x20archive');}});_0x585995['on'](_0xb59d('0x30'),function(_0x5eda40){throw new db[(_0xb59d('0x59'))][(_0xb59d('0x5a'))](_0xb59d('0x5b'));});_0x585995['pipe'](_0x241f2e);_0x585995['glob'](_0xb59d('0x5c'),{'cwd':path['join'](config[_0xb59d('0x50')],'server/files/plugins',path[_0xb59d('0x5d')](_0x58fdc7[_0xb59d('0x7')])),'ignore':[path[_0xb59d('0x4f')](path['basename'](_0x58fdc7[_0xb59d('0x7')]),_0xb59d('0x5e')),path[_0xb59d('0x4f')](path[_0xb59d('0x54')](_0x58fdc7[_0xb59d('0x7')]),_0xb59d('0x5f'))],'nodir':!![]})['finalize']();_0x241f2e['on'](_0xb59d('0x60'),function(){if(!fs[_0xb59d('0x61')](_0x2477f6)){throw new db['Sequelize'][(_0xb59d('0x5a'))](_0xb59d('0x62'));}return _0x281af5[_0xb59d('0x4e')](_0x2477f6,util[_0xb59d('0x52')](_0xb59d('0x53'),path[_0xb59d('0x54')](_0x58fdc7[_0xb59d('0x7')])),function(_0x1001f7){if(_0x1001f7){throw new db['Sequelize']['Error'](_0xb59d('0x63'));}fs[_0xb59d('0x64')](_0x2477f6);logger[_0xb59d('0x65')](_0xb59d('0x66'));logger[_0xb59d('0x65')]('Temporary\x20file\x20removed');});});}return null;})[_0xb59d('0x4d')](handleError(_0x281af5,null));};exports[_0xb59d('0x67')]=function(_0x2cd334,_0xde8f63,_0x55e3fb){var _0x317100=path['basename'](_0x2cd334[_0xb59d('0x68')]['filename'],path[_0xb59d('0x69')](_0x2cd334['file']['filename']));var _0x37edf9=path['join'](config[_0xb59d('0x50')],_0xb59d('0x51'),_0x2cd334[_0xb59d('0x68')][_0xb59d('0x6a')]);var _0x223668=path[_0xb59d('0x4f')](config[_0xb59d('0x50')],_0xb59d('0x51'),_0x317100);logger[_0xb59d('0x65')](_0xb59d('0x6b'),_0x37edf9);logger[_0xb59d('0x65')](_0xb59d('0x6c'),_0x223668);try{fs[_0xb59d('0x6d')](_0x37edf9,parseInt(_0xb59d('0x6e'),0x8));extract(_0x37edf9,{'dir':_0x223668},function(_0x115aa0){if(_0x115aa0){logger['error'](_0x115aa0);handleError(_0x115aa0,!![]);};var _0xe37756=fs[_0xb59d('0x6f')](_0x223668);if(_0xe37756[_0xb59d('0x4b')]>0x1){removeReferences(_0x37edf9,_0x223668);logger[_0xb59d('0x30')](_0xb59d('0x70'));return _0x55e3fb(new Error(_0xb59d('0x70')));}var _0x2d6398=fs['lstatSync'](path[_0xb59d('0x4f')](_0x223668,_0xe37756[0x0]));if(_0x2d6398[_0xb59d('0x71')]()){removeReferences(_0x37edf9,_0x223668);logger['error']('Invalid\x20plugin\x20structure');return _0x55e3fb(new Error(_0xb59d('0x70')));}if(_0x2d6398['isDirectory']()){var _0x4cad07=fs[_0xb59d('0x6f')](path['join'](_0x223668,_0xe37756[0x0]));if(_0x4cad07['length']===0x0){removeReferences(_0x37edf9,_0x223668);logger[_0xb59d('0x30')](_0xb59d('0x70'));return _0x55e3fb(new Error(_0xb59d('0x70')));}var _0x435577=_0x4cad07[_0xb59d('0x72')](function(_0x4a6fd0){return _0x4a6fd0===_0xb59d('0x73');});if(!_0x435577){return _0x55e3fb(new Error(_0xb59d('0x74')));}var _0x12a7d6=fs[_0xb59d('0x75')](path[_0xb59d('0x4f')](_0x223668,_0xe37756[0x0],'manifest.json'));var _0x4846b5=JSON['parse'](_0x12a7d6);if(_0xb59d('0x21')==typeof _0x4846b5[_0xb59d('0x32')]){return _0x55e3fb(new Error(_0xb59d('0x76')));}if(_0xb59d('0x21')==typeof _0x4846b5[_0xb59d('0x40')]){return _0x55e3fb(new Error(_0xb59d('0x77')));}if(_0xb59d('0x21')==typeof _0x4846b5[_0xb59d('0x78')]){return _0x55e3fb(new Error(_0xb59d('0x79')));}if(_0xb59d('0x21')==typeof _0x4846b5['parameters']){return _0x55e3fb(new Error('Invalid\x20manifest:\x20parameters\x20missing'));}if(_0x4846b5[_0xb59d('0x40')]===_0xb59d('0x7a')){if(_0xb59d('0x21')==typeof _0x4846b5[_0xb59d('0x7b')]['views']){return _0x55e3fb(new Error(_0xb59d('0x7c')));}if(_0xb59d('0x21')==typeof _0x4846b5[_0xb59d('0x7b')][_0xb59d('0x7d')][_0xb59d('0x7e')]&&_0xb59d('0x21')==typeof _0x4846b5[_0xb59d('0x7b')]['views'][_0xb59d('0x7f')]){return _0x55e3fb(new Error('Invalid\x20manifest:\x20no\x20view\x20specified'));}}else if(_0x4846b5['type']===_0xb59d('0x80')){if(_0xb59d('0x21')==typeof _0x4846b5['parameters'][_0xb59d('0x81')]){return _0x55e3fb(new Error(_0xb59d('0x82')));}if('undefined'==typeof _0x4846b5['parameters'][_0xb59d('0x83')]){return _0x55e3fb(new Error(_0xb59d('0x84')));}}else{return _0x55e3fb(new Error(_0xb59d('0x85')));}var _0x1a2bfc=_0x4846b5['name'];var _0x4031cd=_0x4846b5[_0xb59d('0x86')];var _0x360f40=_0x4846b5[_0xb59d('0x40')];var _0x4d3d0d=_0x4846b5[_0xb59d('0x87')]?_0x4846b5[_0xb59d('0x87')]:_0xb59d('0x88');var _0x18bc33=_0x4846b5[_0xb59d('0x89')]?_0x4846b5[_0xb59d('0x89')]:_0xb59d('0x8a');var _0x557c5c='';var _0x1fcc35='';var _0x10348b='';var _0x18c85e='';var _0x53a619=_0x4846b5['version'];if(_0x360f40===_0xb59d('0x7a')){if(_0xb59d('0x21')!=typeof _0x4846b5[_0xb59d('0x7b')]['views'][_0xb59d('0x7e')]){var _0x3774cf=_0x4846b5[_0xb59d('0x7b')]['views'][_0xb59d('0x7e')];if(!/^(f|ht)tps?:\/\//i[_0xb59d('0x8b')](_0x3774cf)){_0x557c5c=path[_0xb59d('0x4f')](_0xb59d('0x8c'),_0x317100,_0xe37756[0x0],_0x3774cf);}else{_0x557c5c=_0x3774cf;}}else{logger[_0xb59d('0x65')](_0xb59d('0x8d'));}if('undefined'!=typeof _0x4846b5['parameters'][_0xb59d('0x7d')][_0xb59d('0x7f')]){var _0x57293f=_0x4846b5['parameters'][_0xb59d('0x7d')][_0xb59d('0x7f')];if(!/^(f|ht)tps?:\/\//i[_0xb59d('0x8b')](_0x57293f)){_0x1fcc35=path['join'](_0xb59d('0x8c'),_0x317100,_0xe37756[0x0],_0x57293f);}else{_0x1fcc35=_0x57293f;}}else{logger[_0xb59d('0x65')](_0xb59d('0x8e'));}}else if(_0x360f40===_0xb59d('0x80')){_0x10348b=_0x4846b5[_0xb59d('0x7b')]['scriptName'];_0x18c85e=_0x4846b5[_0xb59d('0x7b')][_0xb59d('0x83')];if(_0xb59d('0x21')!=typeof _0x4846b5['parameters'][_0xb59d('0x7d')]){if('undefined'!=typeof _0x4846b5[_0xb59d('0x7b')][_0xb59d('0x7d')][_0xb59d('0x7e')]){var _0x3774cf=_0x4846b5[_0xb59d('0x7b')][_0xb59d('0x7d')][_0xb59d('0x7e')];if(!/^(f|ht)tps?:\/\//i['test'](_0x3774cf)){_0x557c5c=path['join'](_0xb59d('0x8c'),_0x317100,_0xe37756[0x0],_0x3774cf);}else{_0x557c5c=_0x3774cf;}}if(_0xb59d('0x21')!=typeof _0x4846b5['parameters']['views'][_0xb59d('0x7f')]){var _0x57293f=_0x4846b5[_0xb59d('0x7b')][_0xb59d('0x7d')]['agent'];if(!/^(f|ht)tps?:\/\//i['test'](_0x57293f)){_0x1fcc35=path[_0xb59d('0x4f')]('plugins',_0x317100,_0xe37756[0x0],_0x57293f);}else{_0x1fcc35=_0x57293f;}}}}var _0x5dbcd5={'name':_0x1a2bfc,'description':_0x4031cd,'path':path[_0xb59d('0x4f')](_0x317100,_0xe37756[0x0]),'type':_0x360f40,'sidebar':_0x4d3d0d,'icon':_0x18bc33,'adminUrl':_0x557c5c,'agentUrl':_0x1fcc35,'scriptName':_0x10348b,'scriptPath':_0x18c85e,'version':_0x53a619};removeReferences(_0x37edf9,null);return db[_0xb59d('0x45')]['create'](_0x5dbcd5)[_0xb59d('0x2a')](function(_0x4c7cf4){var _0x4b42a6={'role':_0x2cd334[_0xb59d('0x8f')][_0xb59d('0x90')],'userProfileId':_0x2cd334[_0xb59d('0x8f')][_0xb59d('0x91')]};if(!_0x4b42a6)throw new Error(_0xb59d('0x92'));if(_0x4b42a6[_0xb59d('0x90')]===_0xb59d('0x93')){var _0x459008=_0x4c7cf4['get']({'plain':!![]});return db[_0xb59d('0x94')][_0xb59d('0x4c')]({'where':{'name':'Plugins','userProfileId':_0x4b42a6['userProfileId']},'raw':!![]})[_0xb59d('0x2a')](function(_0x144e20){if(_0x144e20&&_0x144e20['autoAssociation']===0x0){return db[_0xb59d('0x2e')][_0xb59d('0x95')]({'name':_0x459008['name'],'resourceId':_0x459008['id'],'type':_0x144e20['name'],'sectionId':_0x144e20['id']},{})['then'](function(){return _0x4c7cf4;});}else{return _0x4c7cf4;}})[_0xb59d('0x4d')](function(_0x233454){logger[_0xb59d('0x30')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x233454);throw _0x233454;});}return _0x4c7cf4;})[_0xb59d('0x2a')](respondWithResult(_0xde8f63,null))['catch'](handleError(_0xde8f63,null));}});}catch(_0x2d15f3){_0xde8f63[_0xb59d('0x1f')](0x1f4)[_0xb59d('0x33')](_0x2d15f3);}};function removeReferences(_0xd95468,_0x388069){try{if(_0xd95468){fs['unlinkSync'](_0xd95468);logger[_0xb59d('0x65')]('Zip\x20archive\x20removed');}if(_0x388069){rimraf(_0x388069,function(){});logger[_0xb59d('0x65')]('Extracted\x20folder\x20removed');}}catch(_0x5941f1){logger[_0xb59d('0x30')](_0x5941f1);}}exports[_0xb59d('0x29')]=function(_0x5e08ad,_0x2e0107,_0x32b4e4){return db[_0xb59d('0x45')][_0xb59d('0x4c')]({'where':{'id':_0x5e08ad[_0xb59d('0x49')]['id']}})[_0xb59d('0x2a')](handleEntityNotFound(_0x2e0107,null))['then'](saveUpdates(_0x5e08ad[_0xb59d('0x8f')],null))[_0xb59d('0x2a')](respondWithResult(_0x2e0107,null))[_0xb59d('0x4d')](handleError(_0x2e0107,null));};exports['delete']=function(_0x30ec24,_0x3d2170,_0x191364){return db['Plugin']['find']({'where':{'id':_0x30ec24[_0xb59d('0x49')]['id']}})[_0xb59d('0x2a')](function(_0x18a422){if(_0x18a422){return _0x18a422[_0xb59d('0x2b')]();}})[_0xb59d('0x2a')](function(_0x218e46){rimraf(path['join'](config[_0xb59d('0x50')],'server/files/plugins',path[_0xb59d('0x5d')](_0x218e46[_0xb59d('0x7')])),function(){});return _0x218e46;})[_0xb59d('0x2a')](handleEntityNotFound(_0x3d2170,null))[_0xb59d('0x2a')](respondWithStatusCode(_0x3d2170,null))[_0xb59d('0x4d')](handleError(_0x3d2170,null));};exports[_0xb59d('0x96')]=function(_0x40d5f2,_0x5644d8,_0x299e5c){return BPromise['resolve']()[_0xb59d('0x2a')](function(){if(!_0x40d5f2['query'][_0xb59d('0x7')]){throw new Error('\x27PATH\x27\x20parameter\x20not\x20specified');}if(!_0x40d5f2[_0xb59d('0x36')][_0xb59d('0x97')]){throw new Error(_0xb59d('0x98'));}var _0x37f443=_0x40d5f2[_0xb59d('0x36')][_0xb59d('0x99')]?_0x40d5f2['query'][_0xb59d('0x99')]+':'+_0x40d5f2[_0xb59d('0x36')][_0xb59d('0x97')]:'http://localhost:'+_0x40d5f2[_0xb59d('0x36')][_0xb59d('0x97')];var _0x547176=_0x40d5f2[_0xb59d('0x36')][_0xb59d('0x26')]?_0x40d5f2[_0xb59d('0x36')][_0xb59d('0x26')]:!![];var _0x459aa2=_0x40d5f2[_0xb59d('0x36')][_0xb59d('0x9a')]?_0x40d5f2[_0xb59d('0x36')][_0xb59d('0x9a')]:null;var _0x263191={'method':_0x40d5f2[_0xb59d('0x9b')],'uri':util['format'](_0xb59d('0x9c'),_0x37f443,_0x40d5f2['query'][_0xb59d('0x7')]),'json':_0x547176,'resolveWithFullResponse':!![],'encoding':_0x459aa2,'qs':_0x40d5f2[_0xb59d('0x36')]};if(_0x40d5f2['headers']){_0x263191[_0xb59d('0x9d')]=_0x40d5f2[_0xb59d('0x9d')];if(_0x263191[_0xb59d('0x9d')]['content-length']){delete _0x263191[_0xb59d('0x9d')][_0xb59d('0x9e')];}}if(_0x263191[_0xb59d('0x9d')][_0xb59d('0x9f')]){delete _0x263191[_0xb59d('0x9d')]['content-type'];}return rp(_0x263191);})[_0xb59d('0x2a')](function(_0x30ce9a){if(_0x30ce9a){_0x5644d8[_0xb59d('0x24')](_0x30ce9a[_0xb59d('0x9d')]);logger['info'](_0x30ce9a['body']);if(_[_0xb59d('0xa0')](_0x40d5f2[_0xb59d('0x36')]['path'],_0xb59d('0x4e'))&&_0x30ce9a[_0xb59d('0xa1')]==0x1f4){return _0x5644d8['sendStatus'](_0x30ce9a[_0xb59d('0xa1')]);}else{return _0x5644d8[_0xb59d('0x1f')](_0x30ce9a[_0xb59d('0xa1')])[_0xb59d('0x33')](_0x30ce9a[_0xb59d('0x8f')]);}}else{return _0x5644d8[_0xb59d('0x1e')](0xc8);}})['catch'](handleError(_0x5644d8,null));};exports['webhookPost']=function(_0x2ea001,_0x249dd9,_0x3d5423){return BPromise[_0xb59d('0xa2')]()[_0xb59d('0x2a')](function(){if(!_0x2ea001[_0xb59d('0x36')][_0xb59d('0x7')]){throw new Error(_0xb59d('0xa3'));}if(!_0x2ea001['query'][_0xb59d('0x97')]){throw new Error('\x27PORT\x27\x20parameter\x20not\x20specified');}var _0x3808f5=_0x2ea001[_0xb59d('0x36')][_0xb59d('0x99')]?_0x2ea001['query'][_0xb59d('0x99')]+':'+_0x2ea001['query'][_0xb59d('0x97')]:_0xb59d('0xa4')+_0x2ea001['query'][_0xb59d('0x97')];var _0x1790b6=_0x2ea001[_0xb59d('0x36')]['json']?_0x2ea001[_0xb59d('0x36')][_0xb59d('0x26')]:!![];var _0x542ca9=_0x2ea001[_0xb59d('0x36')][_0xb59d('0x9a')]?_0x2ea001[_0xb59d('0x36')]['encoding']:null;var _0x5dd463={'method':_0x2ea001[_0xb59d('0x9b')],'uri':util[_0xb59d('0x52')](_0xb59d('0x9c'),_0x3808f5,_0x2ea001[_0xb59d('0x36')][_0xb59d('0x7')]),'json':_0x1790b6,'resolveWithFullResponse':!![],'encoding':_0x542ca9,'body':_0x2ea001[_0xb59d('0x8f')]};if(_0x2ea001['headers']){_0x5dd463[_0xb59d('0x9d')]=_0x2ea001[_0xb59d('0x9d')];if(_0x5dd463[_0xb59d('0x9d')][_0xb59d('0x9e')]){delete _0x5dd463[_0xb59d('0x9d')][_0xb59d('0x9e')];}}if(_0x5dd463[_0xb59d('0x9d')][_0xb59d('0x9f')]){delete _0x5dd463[_0xb59d('0x9d')][_0xb59d('0x9f')];}return rp(_0x5dd463);})['then'](function(_0x4c37f7){if(_0x4c37f7){_0x249dd9[_0xb59d('0x24')](_0x4c37f7[_0xb59d('0x9d')]);logger[_0xb59d('0x65')](_0x4c37f7[_0xb59d('0x8f')]);return _0x249dd9['status'](_0x4c37f7['statusCode'])['send'](_0x4c37f7[_0xb59d('0x8f')]);}else{return _0x249dd9['sendStatus'](0xc8);}})[_0xb59d('0x4d')](handleError(_0x249dd9,null));};
\ No newline at end of file
+var _0xa071=['scriptPath','Invalid\x20manifest:\x20script\x20path\x20missing','Invalid\x20manifest:\x20invalid\x20type','description','sidebar','always','icon','icon-apps','test','plugins','Warning:\x20admin\x20view\x20not\x20specified','Warning:\x20agent\x20view\x20not\x20specified','body','role','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','send','Zip\x20archive\x20removed','Extracted\x20folder\x20removed','delete','webhookGet','resolve','\x27PATH\x27\x20parameter\x20not\x20specified','port','\x27PORT\x27\x20parameter\x20not\x20specified','hostname','http://localhost:','encoding','method','headers','content-length','content-type','endsWith','statusCode','webhookPost','%s%s','eml-format','rimraf','zip-dir','moment','util','path','to-csv','ejs','lodash','squel','crypto','querystring','papaparse','extract-zip','archiver','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./plugin.socket','register','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','update','then','destroy','get','Plugins','UserProfileResource','end','error','name','map','Plugin','rawAttributes','type','key','query','intersection','model','attributes','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','rows','show','params','keys','fields','length','find','catch','download','root','format','basename','createWriteStream','zip','warning','code','ENOENT','Error','Error\x20while\x20generating\x20the\x20zip\x20archive','Sequelize','pipe','glob','**/*','join','server/files/plugins','dirname','node_modules/**/*','finalize','close','Plugin\x20not\x20found','%s.zip','Error\x20while\x20downloading\x20the\x20plugin','unlinkSync','info','Download\x20completed','Temporary\x20file\x20removed','upload','file','filename','extname','chmodSync','0777','Invalid\x20plugin\x20structure','lstatSync','isFile','some','manifest.json','Plugin\x20manifest\x20missing','parse','Invalid\x20manifest:\x20type\x20missing','version','Invalid\x20manifest:\x20version\x20not\x20specified','Invalid\x20manifest:\x20parameters\x20missing','parameters','views','Invalid\x20manifest:\x20views\x20missing','admin','agent','Invalid\x20manifest:\x20no\x20view\x20specified','script','scriptName','Invalid\x20manifest:\x20script\x20name\x20missing'];(function(_0x1927dc,_0x235225){var _0x4882dc=function(_0x419205){while(--_0x419205){_0x1927dc['push'](_0x1927dc['shift']());}};_0x4882dc(++_0x235225);}(_0xa071,0x17d));var _0x1a07=function(_0x11c471,_0x1f9001){_0x11c471=_0x11c471-0x0;var _0x18285e=_0xa071[_0x11c471];return _0x18285e;};'use strict';var emlformat=require(_0x1a07('0x0'));var rimraf=require(_0x1a07('0x1'));var zipdir=require(_0x1a07('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x1a07('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x1a07('0x4'));var path=require(_0x1a07('0x5'));var sox=require('sox');var csv=require(_0x1a07('0x6'));var ejs=require(_0x1a07('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x1a07('0x8'));var squel=require(_0x1a07('0x9'));var crypto=require(_0x1a07('0xa'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x1a07('0x6'));var querystring=require(_0x1a07('0xb'));var Papa=require(_0x1a07('0xc'));var extract=require(_0x1a07('0xd'));var rimraf=require(_0x1a07('0x1'));var archiver=require(_0x1a07('0xe'));var Redis=require('ioredis');var authService=require(_0x1a07('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x1a07('0x10'));var hardwareService=require(_0x1a07('0x11'));var logger=require(_0x1a07('0x12'))(_0x1a07('0x13'));var utils=require(_0x1a07('0x14'));var config=require(_0x1a07('0x15'));var licenseUtil=require(_0x1a07('0x16'));var db=require(_0x1a07('0x17'))['db'];config[_0x1a07('0x18')]=_['defaults'](config[_0x1a07('0x18')],{'host':_0x1a07('0x19'),'port':0x18eb});var socket=require(_0x1a07('0x1a'))(new Redis(config[_0x1a07('0x18')]));require(_0x1a07('0x1b'))[_0x1a07('0x1c')](socket);function respondWithStatusCode(_0x2e9439,_0x130474){_0x130474=_0x130474||0xcc;return function(_0x2f563f){if(_0x2f563f){return _0x2e9439[_0x1a07('0x1d')](_0x130474);}return _0x2e9439[_0x1a07('0x1e')](_0x130474)['end']();};}function respondWithResult(_0x5b1240,_0x3e16fc){_0x3e16fc=_0x3e16fc||0xc8;return function(_0x182a0c){if(_0x182a0c){return _0x5b1240[_0x1a07('0x1e')](_0x3e16fc)[_0x1a07('0x1f')](_0x182a0c);}};}function respondWithFilteredResult(_0x2a0bfc,_0x2480dd){return function(_0x113151){if(_0x113151){var _0x26e13f=typeof _0x2480dd[_0x1a07('0x20')]===_0x1a07('0x21')&&typeof _0x2480dd['limit']==='undefined';var _0xa3a500=_0x113151[_0x1a07('0x22')];var _0x5e80b0=_0x26e13f?0x0:_0x2480dd['offset'];var _0xf648c5=_0x26e13f?_0x113151['count']:_0x2480dd[_0x1a07('0x20')]+_0x2480dd[_0x1a07('0x23')];var _0x3330ee;if(_0xf648c5>=_0xa3a500){_0xf648c5=_0xa3a500;_0x3330ee=0xc8;}else{_0x3330ee=0xce;}_0x2a0bfc[_0x1a07('0x1e')](_0x3330ee);return _0x2a0bfc[_0x1a07('0x24')](_0x1a07('0x25'),_0x5e80b0+'-'+_0xf648c5+'/'+_0xa3a500)['json'](_0x113151);}return null;};}function patchUpdates(_0x13a760){return function(_0x25c159){try{jsonpatch[_0x1a07('0x26')](_0x25c159,_0x13a760,!![]);}catch(_0x1759be){return BPromise[_0x1a07('0x27')](_0x1759be);}return _0x25c159['save']();};}function saveUpdates(_0x1e99e5,_0x1cca69){return function(_0x289216){if(_0x289216){return _0x289216[_0x1a07('0x28')](_0x1e99e5)[_0x1a07('0x29')](function(_0x4027f5){return _0x4027f5;});}return null;};}function removeEntity(_0x197cb6,_0x493c1f){return function(_0x30be47){if(_0x30be47){return _0x30be47[_0x1a07('0x2a')]()['then'](function(){var _0x1d5073=_0x30be47[_0x1a07('0x2b')]({'plain':!![]});var _0x2e6065=_0x1a07('0x2c');return db[_0x1a07('0x2d')][_0x1a07('0x2a')]({'where':{'type':_0x2e6065,'resourceId':_0x1d5073['id']}})[_0x1a07('0x29')](function(){return _0x30be47;});})[_0x1a07('0x29')](function(){_0x197cb6[_0x1a07('0x1e')](0xcc)[_0x1a07('0x2e')]();});}};}function handleEntityNotFound(_0x347dcb,_0x47fe01){return function(_0x419332){if(!_0x419332){_0x347dcb[_0x1a07('0x1d')](0x194);}return _0x419332;};}function handleError(_0x5389a7,_0x60b698){_0x60b698=_0x60b698||0x1f4;return function(_0x3883ad){logger[_0x1a07('0x2f')](_0x3883ad['stack']);if(_0x3883ad[_0x1a07('0x30')]){delete _0x3883ad[_0x1a07('0x30')];}_0x5389a7[_0x1a07('0x1e')](_0x60b698)['send'](_0x3883ad);};}exports['index']=function(_0x4dd219,_0x57c7c8){var _0xa458d7={},_0x449c68={},_0x330cde={'count':0x0,'rows':[]};var _0x11ed15=_[_0x1a07('0x31')](db[_0x1a07('0x32')][_0x1a07('0x33')],function(_0x592923){return{'name':_0x592923['fieldName'],'type':_0x592923[_0x1a07('0x34')][_0x1a07('0x35')]};});_0x449c68['model']=_[_0x1a07('0x31')](_0x11ed15,_0x1a07('0x30'));_0x449c68[_0x1a07('0x36')]=_['keys'](_0x4dd219[_0x1a07('0x36')]);_0x449c68['filters']=_[_0x1a07('0x37')](_0x449c68[_0x1a07('0x38')],_0x449c68[_0x1a07('0x36')]);_0xa458d7[_0x1a07('0x39')]=_['intersection'](_0x449c68[_0x1a07('0x38')],qs['fields'](_0x4dd219['query']['fields']));_0xa458d7[_0x1a07('0x39')]=_0xa458d7['attributes']['length']?_0xa458d7['attributes']:_0x449c68[_0x1a07('0x38')];if(!_0x4dd219[_0x1a07('0x36')]['hasOwnProperty']('nolimit')){_0xa458d7[_0x1a07('0x23')]=qs[_0x1a07('0x23')](_0x4dd219['query'][_0x1a07('0x23')]);_0xa458d7[_0x1a07('0x20')]=qs[_0x1a07('0x20')](_0x4dd219[_0x1a07('0x36')][_0x1a07('0x20')]);}_0xa458d7['order']=qs[_0x1a07('0x3a')](_0x4dd219[_0x1a07('0x36')]['sort']);_0xa458d7[_0x1a07('0x3b')]=qs[_0x1a07('0x3c')](_[_0x1a07('0x3d')](_0x4dd219[_0x1a07('0x36')],_0x449c68[_0x1a07('0x3c')]),_0x11ed15);if(_0x4dd219[_0x1a07('0x36')][_0x1a07('0x3e')]){_0xa458d7[_0x1a07('0x3b')]=_[_0x1a07('0x3f')](_0xa458d7[_0x1a07('0x3b')],{'$or':_[_0x1a07('0x31')](_0x11ed15,function(_0x2dce08){if(_0x2dce08[_0x1a07('0x34')]!==_0x1a07('0x40')){var _0x430bcf={};_0x430bcf[_0x2dce08['name']]={'$like':'%'+_0x4dd219[_0x1a07('0x36')]['filter']+'%'};return _0x430bcf;}})});}_0xa458d7=_[_0x1a07('0x3f')]({},_0xa458d7,_0x4dd219[_0x1a07('0x41')]);var _0x349824={'where':_0xa458d7[_0x1a07('0x3b')]};return db['Plugin'][_0x1a07('0x22')](_0x349824)[_0x1a07('0x29')](function(_0x398b12){_0x330cde[_0x1a07('0x22')]=_0x398b12;if(_0x4dd219[_0x1a07('0x36')][_0x1a07('0x42')]){_0xa458d7['include']=[{'all':!![]}];}return db[_0x1a07('0x32')]['findAll'](_0xa458d7);})[_0x1a07('0x29')](function(_0x4e96ed){_0x330cde[_0x1a07('0x43')]=_0x4e96ed;return _0x330cde;})[_0x1a07('0x29')](respondWithFilteredResult(_0x57c7c8,_0xa458d7))['catch'](handleError(_0x57c7c8,null));};exports[_0x1a07('0x44')]=function(_0x539674,_0x570653){var _0x248001={'raw':!![],'where':{'id':_0x539674[_0x1a07('0x45')]['id']}},_0x252611={};_0x252611[_0x1a07('0x38')]=_[_0x1a07('0x46')](db[_0x1a07('0x32')][_0x1a07('0x33')]);_0x252611[_0x1a07('0x36')]=_[_0x1a07('0x46')](_0x539674[_0x1a07('0x36')]);_0x252611[_0x1a07('0x3c')]=_['intersection'](_0x252611[_0x1a07('0x38')],_0x252611['query']);_0x248001['attributes']=_[_0x1a07('0x37')](_0x252611[_0x1a07('0x38')],qs[_0x1a07('0x47')](_0x539674['query'][_0x1a07('0x47')]));_0x248001[_0x1a07('0x39')]=_0x248001['attributes'][_0x1a07('0x48')]?_0x248001[_0x1a07('0x39')]:_0x252611['model'];if(_0x539674['query']['includeAll']){_0x248001['include']=[{'all':!![]}];}_0x248001=_[_0x1a07('0x3f')]({},_0x248001,_0x539674[_0x1a07('0x41')]);return db[_0x1a07('0x32')][_0x1a07('0x49')](_0x248001)['then'](handleEntityNotFound(_0x570653,null))[_0x1a07('0x29')](respondWithResult(_0x570653,null))[_0x1a07('0x4a')](handleError(_0x570653,null));};exports[_0x1a07('0x4b')]=function(_0xc78bb0,_0x326d7b,_0x1b2df2){return db['Plugin'][_0x1a07('0x49')]({'where':{'id':_0xc78bb0['params']['id']},'attributes':[_0x1a07('0x30'),'path'],'raw':!![]})[_0x1a07('0x29')](handleEntityNotFound(_0x326d7b,null))['then'](function(_0x419671){if(_0x419671){var _0x3ce54e=path['join'](config[_0x1a07('0x4c')],'server/files/plugins',util[_0x1a07('0x4d')]('%s.zip',path[_0x1a07('0x4e')](_0x419671['path'])));var _0xbfb7a7=fs[_0x1a07('0x4f')](_0x3ce54e);var _0x38d6c1=archiver(_0x1a07('0x50'),{'zlib':{'level':0x9}});_0x38d6c1['on'](_0x1a07('0x51'),function(_0x41474d){if(_0x41474d[_0x1a07('0x52')]===_0x1a07('0x53')){logger[_0x1a07('0x2f')](_0x41474d);}else{throw new db['Sequelize'][(_0x1a07('0x54'))](_0x1a07('0x55'));}});_0x38d6c1['on'](_0x1a07('0x2f'),function(_0xa6da9){throw new db[(_0x1a07('0x56'))][(_0x1a07('0x54'))](_0x1a07('0x55'));});_0x38d6c1[_0x1a07('0x57')](_0xbfb7a7);_0x38d6c1[_0x1a07('0x58')](_0x1a07('0x59'),{'cwd':path[_0x1a07('0x5a')](config[_0x1a07('0x4c')],_0x1a07('0x5b'),path[_0x1a07('0x5c')](_0x419671['path'])),'ignore':[path[_0x1a07('0x5a')](path[_0x1a07('0x4e')](_0x419671['path']),_0x1a07('0x5d')),path[_0x1a07('0x5a')](path[_0x1a07('0x4e')](_0x419671[_0x1a07('0x5')]),'attachments/**/*')],'nodir':!![]})[_0x1a07('0x5e')]();_0xbfb7a7['on'](_0x1a07('0x5f'),function(){if(!fs['existsSync'](_0x3ce54e)){throw new db[(_0x1a07('0x56'))][(_0x1a07('0x54'))](_0x1a07('0x60'));}return _0x326d7b[_0x1a07('0x4b')](_0x3ce54e,util[_0x1a07('0x4d')](_0x1a07('0x61'),path[_0x1a07('0x4e')](_0x419671[_0x1a07('0x5')])),function(_0x4caeea){if(_0x4caeea){throw new db[(_0x1a07('0x56'))][(_0x1a07('0x54'))](_0x1a07('0x62'));}fs[_0x1a07('0x63')](_0x3ce54e);logger[_0x1a07('0x64')](_0x1a07('0x65'));logger[_0x1a07('0x64')](_0x1a07('0x66'));});});}return null;})[_0x1a07('0x4a')](handleError(_0x326d7b,null));};exports[_0x1a07('0x67')]=function(_0xec7bf0,_0xb299c,_0x1947ad){var _0x2c11a5=path['basename'](_0xec7bf0[_0x1a07('0x68')][_0x1a07('0x69')],path[_0x1a07('0x6a')](_0xec7bf0[_0x1a07('0x68')][_0x1a07('0x69')]));var _0x4b0b7d=path[_0x1a07('0x5a')](config[_0x1a07('0x4c')],'server/files/plugins',_0xec7bf0[_0x1a07('0x68')][_0x1a07('0x69')]);var _0x5f3496=path['join'](config['root'],_0x1a07('0x5b'),_0x2c11a5);logger[_0x1a07('0x64')]('Plugin\x20upload\x20filepath:\x20%s',_0x4b0b7d);logger[_0x1a07('0x64')]('Plugin\x20upload\x20destination:\x20%s',_0x5f3496);try{fs[_0x1a07('0x6b')](_0x4b0b7d,parseInt(_0x1a07('0x6c'),0x8));extract(_0x4b0b7d,{'dir':_0x5f3496},function(_0x2843e3){if(_0x2843e3){logger[_0x1a07('0x2f')](_0x2843e3);handleError(_0x2843e3,!![]);};var _0x575d3e=fs['readdirSync'](_0x5f3496);if(_0x575d3e[_0x1a07('0x48')]>0x1){removeReferences(_0x4b0b7d,_0x5f3496);logger[_0x1a07('0x2f')](_0x1a07('0x6d'));return _0x1947ad(new Error(_0x1a07('0x6d')));}var _0x18455e=fs[_0x1a07('0x6e')](path[_0x1a07('0x5a')](_0x5f3496,_0x575d3e[0x0]));if(_0x18455e[_0x1a07('0x6f')]()){removeReferences(_0x4b0b7d,_0x5f3496);logger[_0x1a07('0x2f')](_0x1a07('0x6d'));return _0x1947ad(new Error('Invalid\x20plugin\x20structure'));}if(_0x18455e['isDirectory']()){var _0x368c6c=fs['readdirSync'](path[_0x1a07('0x5a')](_0x5f3496,_0x575d3e[0x0]));if(_0x368c6c[_0x1a07('0x48')]===0x0){removeReferences(_0x4b0b7d,_0x5f3496);logger['error'](_0x1a07('0x6d'));return _0x1947ad(new Error(_0x1a07('0x6d')));}var _0x4be615=_0x368c6c[_0x1a07('0x70')](function(_0x447422){return _0x447422===_0x1a07('0x71');});if(!_0x4be615){return _0x1947ad(new Error(_0x1a07('0x72')));}var _0x5a5131=fs['readFileSync'](path[_0x1a07('0x5a')](_0x5f3496,_0x575d3e[0x0],_0x1a07('0x71')));var _0x51e620=JSON[_0x1a07('0x73')](_0x5a5131);if(_0x1a07('0x21')==typeof _0x51e620[_0x1a07('0x30')]){return _0x1947ad(new Error('Invalid\x20manifest:\x20name\x20missing'));}if('undefined'==typeof _0x51e620['type']){return _0x1947ad(new Error(_0x1a07('0x74')));}if(_0x1a07('0x21')==typeof _0x51e620[_0x1a07('0x75')]){return _0x1947ad(new Error(_0x1a07('0x76')));}if(_0x1a07('0x21')==typeof _0x51e620['parameters']){return _0x1947ad(new Error(_0x1a07('0x77')));}if(_0x51e620[_0x1a07('0x34')]==='html'){if(_0x1a07('0x21')==typeof _0x51e620[_0x1a07('0x78')][_0x1a07('0x79')]){return _0x1947ad(new Error(_0x1a07('0x7a')));}if(_0x1a07('0x21')==typeof _0x51e620['parameters'][_0x1a07('0x79')][_0x1a07('0x7b')]&&'undefined'==typeof _0x51e620[_0x1a07('0x78')][_0x1a07('0x79')][_0x1a07('0x7c')]){return _0x1947ad(new Error(_0x1a07('0x7d')));}}else if(_0x51e620['type']===_0x1a07('0x7e')){if('undefined'==typeof _0x51e620[_0x1a07('0x78')][_0x1a07('0x7f')]){return _0x1947ad(new Error(_0x1a07('0x80')));}if(_0x1a07('0x21')==typeof _0x51e620['parameters'][_0x1a07('0x81')]){return _0x1947ad(new Error(_0x1a07('0x82')));}}else{return _0x1947ad(new Error(_0x1a07('0x83')));}var _0x5b9ff8=_0x51e620[_0x1a07('0x30')];var _0x4c64d4=_0x51e620[_0x1a07('0x84')];var _0x5045fa=_0x51e620[_0x1a07('0x34')];var _0x4ba1fa=_0x51e620[_0x1a07('0x85')]?_0x51e620['sidebar']:_0x1a07('0x86');var _0x11ed74=_0x51e620[_0x1a07('0x87')]?_0x51e620[_0x1a07('0x87')]:_0x1a07('0x88');var _0x34918b='';var _0x418dc8='';var _0x4aa06e='';var _0x288a1e='';var _0x58d43e=_0x51e620[_0x1a07('0x75')];if(_0x5045fa==='html'){if('undefined'!=typeof _0x51e620['parameters'][_0x1a07('0x79')]['admin']){var _0x757030=_0x51e620[_0x1a07('0x78')][_0x1a07('0x79')]['admin'];if(!/^(f|ht)tps?:\/\//i[_0x1a07('0x89')](_0x757030)){_0x34918b=path['join'](_0x1a07('0x8a'),_0x2c11a5,_0x575d3e[0x0],_0x757030);}else{_0x34918b=_0x757030;}}else{logger[_0x1a07('0x64')](_0x1a07('0x8b'));}if(_0x1a07('0x21')!=typeof _0x51e620[_0x1a07('0x78')][_0x1a07('0x79')]['agent']){var _0xe5936f=_0x51e620[_0x1a07('0x78')][_0x1a07('0x79')]['agent'];if(!/^(f|ht)tps?:\/\//i[_0x1a07('0x89')](_0xe5936f)){_0x418dc8=path[_0x1a07('0x5a')](_0x1a07('0x8a'),_0x2c11a5,_0x575d3e[0x0],_0xe5936f);}else{_0x418dc8=_0xe5936f;}}else{logger['info'](_0x1a07('0x8c'));}}else if(_0x5045fa==='script'){_0x4aa06e=_0x51e620[_0x1a07('0x78')][_0x1a07('0x7f')];_0x288a1e=_0x51e620[_0x1a07('0x78')]['scriptPath'];if(_0x1a07('0x21')!=typeof _0x51e620[_0x1a07('0x78')]['views']){if(_0x1a07('0x21')!=typeof _0x51e620['parameters'][_0x1a07('0x79')][_0x1a07('0x7b')]){var _0x757030=_0x51e620[_0x1a07('0x78')]['views'][_0x1a07('0x7b')];if(!/^(f|ht)tps?:\/\//i['test'](_0x757030)){_0x34918b=path[_0x1a07('0x5a')](_0x1a07('0x8a'),_0x2c11a5,_0x575d3e[0x0],_0x757030);}else{_0x34918b=_0x757030;}}if(_0x1a07('0x21')!=typeof _0x51e620[_0x1a07('0x78')]['views'][_0x1a07('0x7c')]){var _0xe5936f=_0x51e620['parameters'][_0x1a07('0x79')]['agent'];if(!/^(f|ht)tps?:\/\//i['test'](_0xe5936f)){_0x418dc8=path[_0x1a07('0x5a')](_0x1a07('0x8a'),_0x2c11a5,_0x575d3e[0x0],_0xe5936f);}else{_0x418dc8=_0xe5936f;}}}}var _0x16be35={'name':_0x5b9ff8,'description':_0x4c64d4,'path':path['join'](_0x2c11a5,_0x575d3e[0x0]),'type':_0x5045fa,'sidebar':_0x4ba1fa,'icon':_0x11ed74,'adminUrl':_0x34918b,'agentUrl':_0x418dc8,'scriptName':_0x4aa06e,'scriptPath':_0x288a1e,'version':_0x58d43e};removeReferences(_0x4b0b7d,null);return db[_0x1a07('0x32')]['create'](_0x16be35)[_0x1a07('0x29')](function(_0x55d95f){var _0x5d8368={'role':_0xec7bf0[_0x1a07('0x8d')][_0x1a07('0x8e')],'userProfileId':_0xec7bf0[_0x1a07('0x8d')][_0x1a07('0x8f')]};if(!_0x5d8368)throw new Error(_0x1a07('0x90'));if(_0x5d8368[_0x1a07('0x8e')]===_0x1a07('0x91')){var _0x178ae8=_0x55d95f[_0x1a07('0x2b')]({'plain':!![]});return db[_0x1a07('0x92')][_0x1a07('0x49')]({'where':{'name':_0x1a07('0x2c'),'userProfileId':_0x5d8368[_0x1a07('0x8f')]},'raw':!![]})[_0x1a07('0x29')](function(_0x385e75){if(_0x385e75&&_0x385e75[_0x1a07('0x93')]===0x0){return db[_0x1a07('0x2d')][_0x1a07('0x94')]({'name':_0x178ae8['name'],'resourceId':_0x178ae8['id'],'type':_0x385e75['name'],'sectionId':_0x385e75['id']},{})[_0x1a07('0x29')](function(){return _0x55d95f;});}else{return _0x55d95f;}})['catch'](function(_0x526782){logger['error'](_0x1a07('0x95'),_0x526782);throw _0x526782;});}return _0x55d95f;})[_0x1a07('0x29')](respondWithResult(_0xb299c,null))[_0x1a07('0x4a')](handleError(_0xb299c,null));}});}catch(_0x6126d3){_0xb299c[_0x1a07('0x1e')](0x1f4)[_0x1a07('0x96')](_0x6126d3);}};function removeReferences(_0x23287f,_0x1df3a3){try{if(_0x23287f){fs[_0x1a07('0x63')](_0x23287f);logger['info'](_0x1a07('0x97'));}if(_0x1df3a3){rimraf(_0x1df3a3,function(){});logger[_0x1a07('0x64')](_0x1a07('0x98'));}}catch(_0xe56773){logger[_0x1a07('0x2f')](_0xe56773);}}exports[_0x1a07('0x28')]=function(_0x30fe88,_0x5eece4,_0x198b55){return db['Plugin'][_0x1a07('0x49')]({'where':{'id':_0x30fe88[_0x1a07('0x45')]['id']}})['then'](handleEntityNotFound(_0x5eece4,null))[_0x1a07('0x29')](saveUpdates(_0x30fe88[_0x1a07('0x8d')],null))['then'](respondWithResult(_0x5eece4,null))[_0x1a07('0x4a')](handleError(_0x5eece4,null));};exports[_0x1a07('0x99')]=function(_0x1a01a2,_0xeb1687,_0x4e6576){return db[_0x1a07('0x32')][_0x1a07('0x49')]({'where':{'id':_0x1a01a2['params']['id']}})[_0x1a07('0x29')](function(_0x4a05da){if(_0x4a05da){return _0x4a05da[_0x1a07('0x2a')]();}})[_0x1a07('0x29')](function(_0x2402a5){rimraf(path['join'](config[_0x1a07('0x4c')],_0x1a07('0x5b'),path[_0x1a07('0x5c')](_0x2402a5['path'])),function(){});return _0x2402a5;})[_0x1a07('0x29')](handleEntityNotFound(_0xeb1687,null))[_0x1a07('0x29')](respondWithStatusCode(_0xeb1687,null))['catch'](handleError(_0xeb1687,null));};exports[_0x1a07('0x9a')]=function(_0xe6b5aa,_0x20c12b,_0x1f2303){return BPromise[_0x1a07('0x9b')]()[_0x1a07('0x29')](function(){if(!_0xe6b5aa[_0x1a07('0x36')]['path']){throw new Error(_0x1a07('0x9c'));}if(!_0xe6b5aa['query'][_0x1a07('0x9d')]){throw new Error(_0x1a07('0x9e'));}var _0x281cb2=_0xe6b5aa[_0x1a07('0x36')][_0x1a07('0x9f')]?_0xe6b5aa['query'][_0x1a07('0x9f')]+':'+_0xe6b5aa[_0x1a07('0x36')][_0x1a07('0x9d')]:_0x1a07('0xa0')+_0xe6b5aa[_0x1a07('0x36')][_0x1a07('0x9d')];var _0xff7db1=_0xe6b5aa[_0x1a07('0x36')][_0x1a07('0x1f')]?_0xe6b5aa['query']['json']:!![];var _0xaf36f2=_0xe6b5aa['query'][_0x1a07('0xa1')]?_0xe6b5aa['query']['encoding']:null;var _0x3feee4={'method':_0xe6b5aa[_0x1a07('0xa2')],'uri':util[_0x1a07('0x4d')]('%s%s',_0x281cb2,_0xe6b5aa['query'][_0x1a07('0x5')]),'json':_0xff7db1,'resolveWithFullResponse':!![],'encoding':_0xaf36f2,'qs':_0xe6b5aa[_0x1a07('0x36')]};if(_0xe6b5aa[_0x1a07('0xa3')]){_0x3feee4[_0x1a07('0xa3')]=_0xe6b5aa[_0x1a07('0xa3')];if(_0x3feee4[_0x1a07('0xa3')][_0x1a07('0xa4')]){delete _0x3feee4[_0x1a07('0xa3')]['content-length'];}}if(_0x3feee4[_0x1a07('0xa3')][_0x1a07('0xa5')]){delete _0x3feee4['headers'][_0x1a07('0xa5')];}return rp(_0x3feee4);})[_0x1a07('0x29')](function(_0x303bed){if(_0x303bed){_0x20c12b[_0x1a07('0x24')](_0x303bed[_0x1a07('0xa3')]);logger[_0x1a07('0x64')](_0x303bed['body']);if(_[_0x1a07('0xa6')](_0xe6b5aa[_0x1a07('0x36')][_0x1a07('0x5')],_0x1a07('0x4b'))&&_0x303bed['statusCode']==0x1f4){return _0x20c12b[_0x1a07('0x1d')](_0x303bed[_0x1a07('0xa7')]);}else{return _0x20c12b[_0x1a07('0x1e')](_0x303bed['statusCode'])[_0x1a07('0x96')](_0x303bed[_0x1a07('0x8d')]);}}else{return _0x20c12b[_0x1a07('0x1d')](0xc8);}})[_0x1a07('0x4a')](handleError(_0x20c12b,null));};exports[_0x1a07('0xa8')]=function(_0x5adba8,_0x1a725f,_0x1e698a){return BPromise[_0x1a07('0x9b')]()[_0x1a07('0x29')](function(){if(!_0x5adba8['query'][_0x1a07('0x5')]){throw new Error(_0x1a07('0x9c'));}if(!_0x5adba8[_0x1a07('0x36')][_0x1a07('0x9d')]){throw new Error(_0x1a07('0x9e'));}var _0x253ed8=_0x5adba8[_0x1a07('0x36')][_0x1a07('0x9f')]?_0x5adba8[_0x1a07('0x36')][_0x1a07('0x9f')]+':'+_0x5adba8[_0x1a07('0x36')]['port']:_0x1a07('0xa0')+_0x5adba8[_0x1a07('0x36')][_0x1a07('0x9d')];var _0x3ff4db=_0x5adba8['query'][_0x1a07('0x1f')]?_0x5adba8[_0x1a07('0x36')][_0x1a07('0x1f')]:!![];var _0x43370d=_0x5adba8[_0x1a07('0x36')][_0x1a07('0xa1')]?_0x5adba8['query']['encoding']:null;var _0x166be7={'method':_0x5adba8[_0x1a07('0xa2')],'uri':util[_0x1a07('0x4d')](_0x1a07('0xa9'),_0x253ed8,_0x5adba8[_0x1a07('0x36')][_0x1a07('0x5')]),'json':_0x3ff4db,'resolveWithFullResponse':!![],'encoding':_0x43370d,'body':_0x5adba8[_0x1a07('0x8d')]};if(_0x5adba8[_0x1a07('0xa3')]){_0x166be7['headers']=_0x5adba8[_0x1a07('0xa3')];if(_0x166be7['headers'][_0x1a07('0xa4')]){delete _0x166be7['headers'][_0x1a07('0xa4')];}}if(_0x166be7['headers']['content-type']){delete _0x166be7['headers']['content-type'];}return rp(_0x166be7);})[_0x1a07('0x29')](function(_0x1a0ace){if(_0x1a0ace){_0x1a725f[_0x1a07('0x24')](_0x1a0ace['headers']);logger[_0x1a07('0x64')](_0x1a0ace[_0x1a07('0x8d')]);return _0x1a725f[_0x1a07('0x1e')](_0x1a0ace[_0x1a07('0xa7')])['send'](_0x1a0ace[_0x1a07('0x8d')]);}else{return _0x1a725f['sendStatus'](0xc8);}})[_0x1a07('0x4a')](handleError(_0x1a725f,null));};
\ No newline at end of file
index ce33acd..bed454a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcfcb=['hook','exports','events','save','update','remove','emit','hasOwnProperty'];(function(_0xd5584e,_0x251c06){var _0xdc594e=function(_0x2b9c26){while(--_0x2b9c26){_0xd5584e['push'](_0xd5584e['shift']());}};_0xdc594e(++_0x251c06);}(_0xcfcb,0x7a));var _0xbcfc=function(_0x1d06a5,_0x4fc577){_0x1d06a5=_0x1d06a5-0x0;var _0xbaab59=_0xcfcb[_0x1d06a5];return _0xbaab59;};'use strict';var EventEmitter=require(_0xbcfc('0x0'));var Plugin=require('../../mysqldb')['db']['Plugin'];var PluginEvents=new EventEmitter();PluginEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xbcfc('0x1'),'afterUpdate':_0xbcfc('0x2'),'afterDestroy':_0xbcfc('0x3')};function emitEvent(_0x16bde0){return function(_0x38bab3,_0x32707d,_0x83687c){PluginEvents[_0xbcfc('0x4')](_0x16bde0+':'+_0x38bab3['id'],_0x38bab3);PluginEvents[_0xbcfc('0x4')](_0x16bde0,_0x38bab3);_0x83687c(null);};}for(var e in events){if(events[_0xbcfc('0x5')](e)){var event=events[e];Plugin[_0xbcfc('0x6')](e,emitEvent(event));}}module[_0xbcfc('0x7')]=PluginEvents;
\ No newline at end of file
+var _0xd45e=['exports','../../mysqldb','Plugin','save','remove','emit','hook'];(function(_0xe6a5c1,_0x4c1063){var _0x63fcf3=function(_0x4b96be){while(--_0x4b96be){_0xe6a5c1['push'](_0xe6a5c1['shift']());}};_0x63fcf3(++_0x4c1063);}(_0xd45e,0x182));var _0xed45=function(_0x5e55a8,_0x2578e5){_0x5e55a8=_0x5e55a8-0x0;var _0x38e2b6=_0xd45e[_0x5e55a8];return _0x38e2b6;};'use strict';var EventEmitter=require('events');var Plugin=require(_0xed45('0x0'))['db'][_0xed45('0x1')];var PluginEvents=new EventEmitter();PluginEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xed45('0x2'),'afterUpdate':'update','afterDestroy':_0xed45('0x3')};function emitEvent(_0x4011bb){return function(_0x9c1494,_0x5667ca,_0x32fcff){PluginEvents[_0xed45('0x4')](_0x4011bb+':'+_0x9c1494['id'],_0x9c1494);PluginEvents['emit'](_0x4011bb,_0x9c1494);_0x32fcff(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];Plugin[_0xed45('0x5')](e,emitEvent(event));}}module[_0xed45('0x6')]=PluginEvents;
\ No newline at end of file
index e80185e..f872f64 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x46e8=['define','Plugin','lodash','util','../../config/logger','api','moment','rimraf','../../config/environment','./plugin.attributes','exports'];(function(_0x2510f9,_0x5bc462){var _0x3d348f=function(_0x15921a){while(--_0x15921a){_0x2510f9['push'](_0x2510f9['shift']());}};_0x3d348f(++_0x5bc462);}(_0x46e8,0x1c5));var _0x846e=function(_0x54aea5,_0x140000){_0x54aea5=_0x54aea5-0x0;var _0x1aada3=_0x46e8[_0x54aea5];return _0x1aada3;};'use strict';var _=require(_0x846e('0x0'));var util=require(_0x846e('0x1'));var logger=require(_0x846e('0x2'))(_0x846e('0x3'));var moment=require(_0x846e('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x846e('0x5'));var config=require(_0x846e('0x6'));var attributes=require(_0x846e('0x7'));module[_0x846e('0x8')]=function(_0x4443a2,_0x3144c8){return _0x4443a2[_0x846e('0x9')](_0x846e('0xa'),attributes,{'tableName':'plugins','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xaae1=['request-promise','path','rimraf','../../config/environment','./plugin.attributes','define','plugins','util','../../config/logger','bluebird'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0xaae1,0x10b));var _0x1aae=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xaae1[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0x1aae('0x0'));var logger=require(_0x1aae('0x1'))('api');var moment=require('moment');var BPromise=require(_0x1aae('0x2'));var rp=require(_0x1aae('0x3'));var fs=require('fs');var path=require(_0x1aae('0x4'));var rimraf=require(_0x1aae('0x5'));var config=require(_0x1aae('0x6'));var attributes=require(_0x1aae('0x7'));module['exports']=function(_0x5ba021,_0xbdf0a5){return _0x5ba021[_0x1aae('0x8')]('Plugin',attributes,{'tableName':_0x1aae('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index bb91d33..0501fb1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a76=['jayson/promise','http','redis','defaults','localhost','./plugin.socket','register','then','info','Plugin,\x20%s,\x20%s','request\x20sent','debug','Plugin,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','Plugin','create','options','raw','CreatePlugin','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc'];(function(_0x3e6e52,_0x1d3114){var _0x3d7618=function(_0x10e2c5){while(--_0x10e2c5){_0x3e6e52['push'](_0x3e6e52['shift']());}};_0x3d7618(++_0x1d3114);}(_0x1a76,0xf1));var _0x61a7=function(_0x4d30ac,_0x112604){_0x4d30ac=_0x4d30ac-0x0;var _0x279f70=_0x1a76[_0x4d30ac];return _0x279f70;};'use strict';var _=require('lodash');var util=require(_0x61a7('0x0'));var moment=require(_0x61a7('0x1'));var BPromise=require(_0x61a7('0x2'));var rs=require(_0x61a7('0x3'));var fs=require('fs');var Redis=require(_0x61a7('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x61a7('0x5'));var logger=require('../../config/logger')(_0x61a7('0x6'));var config=require('../../config/environment');var jayson=require(_0x61a7('0x7'));var client=jayson['client'][_0x61a7('0x8')]({'port':0x232a});config[_0x61a7('0x9')]=_[_0x61a7('0xa')](config['redis'],{'host':_0x61a7('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x61a7('0xc'))[_0x61a7('0xd')](socket);function respondWithRpcPromise(_0x43f09a,_0x60bbdc,_0x2900b8){return new BPromise(function(_0x5423ac,_0xf7b6dc){return client['request'](_0x43f09a,_0x2900b8)[_0x61a7('0xe')](function(_0x43112d){logger[_0x61a7('0xf')](_0x61a7('0x10'),_0x60bbdc,_0x61a7('0x11'));logger[_0x61a7('0x12')](_0x61a7('0x13'),_0x60bbdc,'request\x20sent',JSON[_0x61a7('0x14')](_0x43112d));if(_0x43112d[_0x61a7('0x15')]){if(_0x43112d[_0x61a7('0x15')][_0x61a7('0x16')]===0x1f4){logger[_0x61a7('0x15')](_0x61a7('0x10'),_0x60bbdc,_0x43112d[_0x61a7('0x15')]['message']);return _0xf7b6dc(_0x43112d[_0x61a7('0x15')][_0x61a7('0x17')]);}logger[_0x61a7('0x15')](_0x61a7('0x10'),_0x60bbdc,_0x43112d[_0x61a7('0x15')][_0x61a7('0x17')]);return _0x5423ac(_0x43112d[_0x61a7('0x15')][_0x61a7('0x17')]);}else{logger[_0x61a7('0xf')](_0x61a7('0x10'),_0x60bbdc,_0x61a7('0x11'));_0x5423ac(_0x43112d[_0x61a7('0x18')][_0x61a7('0x17')]);}})[_0x61a7('0x19')](function(_0x53e0f6){logger[_0x61a7('0x15')]('Plugin,\x20%s,\x20%s',_0x60bbdc,_0x53e0f6);_0xf7b6dc(_0x53e0f6);});});}exports['CreatePlugin']=function(_0x58e3cb){var _0x35ba7d=this;return new Promise(function(_0x4ac5fa,_0x489ee6){return db[_0x61a7('0x1a')][_0x61a7('0x1b')](_0x58e3cb['body'],{'raw':_0x58e3cb[_0x61a7('0x1c')]?_0x58e3cb[_0x61a7('0x1c')][_0x61a7('0x1d')]===undefined?!![]:![]:!![]})['then'](function(_0x4c6115){logger[_0x61a7('0xf')]('CreatePlugin',_0x58e3cb);logger['debug'](_0x61a7('0x1e'),_0x58e3cb,JSON[_0x61a7('0x14')](_0x4c6115));_0x4ac5fa(_0x4c6115);})[_0x61a7('0x19')](function(_0x3543f6){logger[_0x61a7('0x15')](_0x61a7('0x1e'),_0x3543f6['message'],_0x58e3cb);_0x489ee6(_0x35ba7d[_0x61a7('0x15')](0x1f4,_0x3543f6[_0x61a7('0x17')]));});});};
\ No newline at end of file
+var _0x4b48=['request','then','Plugin,\x20%s,\x20%s','debug','request\x20sent','error','message','info','result','catch','Plugin','body','options','raw','CreatePlugin','stringify','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','register'];(function(_0xf42c59,_0x4841a8){var _0x2a666d=function(_0x4e9a34){while(--_0x4e9a34){_0xf42c59['push'](_0xf42c59['shift']());}};_0x2a666d(++_0x4841a8);}(_0x4b48,0x190));var _0x84b4=function(_0x2b107f,_0x21a5d5){_0x2b107f=_0x2b107f-0x0;var _0x746901=_0x4b48[_0x2b107f];return _0x746901;};'use strict';var _=require(_0x84b4('0x0'));var util=require(_0x84b4('0x1'));var moment=require(_0x84b4('0x2'));var BPromise=require(_0x84b4('0x3'));var rs=require(_0x84b4('0x4'));var fs=require('fs');var Redis=require(_0x84b4('0x5'));var db=require(_0x84b4('0x6'))['db'];var utils=require(_0x84b4('0x7'));var logger=require(_0x84b4('0x8'))(_0x84b4('0x9'));var config=require('../../config/environment');var jayson=require(_0x84b4('0xa'));var client=jayson[_0x84b4('0xb')][_0x84b4('0xc')]({'port':0x232a});config[_0x84b4('0xd')]=_[_0x84b4('0xe')](config[_0x84b4('0xd')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./plugin.socket')[_0x84b4('0xf')](socket);function respondWithRpcPromise(_0x4d680f,_0x311044,_0x18a3b1){return new BPromise(function(_0x5e44d7,_0xbefa53){return client[_0x84b4('0x10')](_0x4d680f,_0x18a3b1)[_0x84b4('0x11')](function(_0x3a61f8){logger['info'](_0x84b4('0x12'),_0x311044,'request\x20sent');logger[_0x84b4('0x13')]('Plugin,\x20%s,\x20%s,\x20%s',_0x311044,_0x84b4('0x14'),JSON['stringify'](_0x3a61f8));if(_0x3a61f8[_0x84b4('0x15')]){if(_0x3a61f8[_0x84b4('0x15')]['code']===0x1f4){logger[_0x84b4('0x15')](_0x84b4('0x12'),_0x311044,_0x3a61f8[_0x84b4('0x15')][_0x84b4('0x16')]);return _0xbefa53(_0x3a61f8[_0x84b4('0x15')][_0x84b4('0x16')]);}logger[_0x84b4('0x15')](_0x84b4('0x12'),_0x311044,_0x3a61f8[_0x84b4('0x15')][_0x84b4('0x16')]);return _0x5e44d7(_0x3a61f8[_0x84b4('0x15')][_0x84b4('0x16')]);}else{logger[_0x84b4('0x17')](_0x84b4('0x12'),_0x311044,_0x84b4('0x14'));_0x5e44d7(_0x3a61f8[_0x84b4('0x18')][_0x84b4('0x16')]);}})[_0x84b4('0x19')](function(_0x55f477){logger[_0x84b4('0x15')]('Plugin,\x20%s,\x20%s',_0x311044,_0x55f477);_0xbefa53(_0x55f477);});});}exports['CreatePlugin']=function(_0xd965d8){var _0x176fd5=this;return new Promise(function(_0x5f1882,_0x41abf7){return db[_0x84b4('0x1a')]['create'](_0xd965d8[_0x84b4('0x1b')],{'raw':_0xd965d8[_0x84b4('0x1c')]?_0xd965d8[_0x84b4('0x1c')][_0x84b4('0x1d')]===undefined?!![]:![]:!![]})[_0x84b4('0x11')](function(_0x2c7775){logger[_0x84b4('0x17')](_0x84b4('0x1e'),_0xd965d8);logger['debug']('CreatePlugin',_0xd965d8,JSON[_0x84b4('0x1f')](_0x2c7775));_0x5f1882(_0x2c7775);})[_0x84b4('0x19')](function(_0x40594b){logger['error'](_0x84b4('0x1e'),_0x40594b[_0x84b4('0x16')],_0xd965d8);_0x41abf7(_0x176fd5[_0x84b4('0x15')](0x1f4,_0x40594b['message']));});});};
\ No newline at end of file
index 7b93c02..b15c49c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0716=['length','plugin:','./plugin.events','update','emit','removeListener'];(function(_0x13b02f,_0x462a53){var _0x12e9a6=function(_0x187d57){while(--_0x187d57){_0x13b02f['push'](_0x13b02f['shift']());}};_0x12e9a6(++_0x462a53);}(_0x0716,0xda));var _0x6071=function(_0x33199e,_0x428ded){_0x33199e=_0x33199e-0x0;var _0x2eef3c=_0x0716[_0x33199e];return _0x2eef3c;};'use strict';var PluginEvents=require(_0x6071('0x0'));var events=['save','remove',_0x6071('0x1')];function createListener(_0x5bc2a7,_0x37d768){return function(_0x108713){_0x37d768[_0x6071('0x2')](_0x5bc2a7,_0x108713);};}function removeListener(_0x49e237,_0x338abe){return function(){PluginEvents[_0x6071('0x3')](_0x49e237,_0x338abe);};}exports['register']=function(_0x57489b){for(var _0x3bbe03=0x0,_0x1fd085=events[_0x6071('0x4')];_0x3bbe03<_0x1fd085;_0x3bbe03++){var _0x4ffbb7=events[_0x3bbe03];var _0x3fa60d=createListener(_0x6071('0x5')+_0x4ffbb7,_0x57489b);PluginEvents['on'](_0x4ffbb7,_0x3fa60d);}};
\ No newline at end of file
+var _0x96e4=['removeListener','register','length','plugin:','./plugin.events','save','remove','update'];(function(_0x344cdb,_0x560947){var _0x247229=function(_0x281ccf){while(--_0x281ccf){_0x344cdb['push'](_0x344cdb['shift']());}};_0x247229(++_0x560947);}(_0x96e4,0x134));var _0x496e=function(_0x27530d,_0x46480a){_0x27530d=_0x27530d-0x0;var _0x59e561=_0x96e4[_0x27530d];return _0x59e561;};'use strict';var PluginEvents=require(_0x496e('0x0'));var events=[_0x496e('0x1'),_0x496e('0x2'),_0x496e('0x3')];function createListener(_0x822dc6,_0x1d65d3){return function(_0x2129fc){_0x1d65d3['emit'](_0x822dc6,_0x2129fc);};}function removeListener(_0x5404ea,_0x36dcd0){return function(){PluginEvents[_0x496e('0x4')](_0x5404ea,_0x36dcd0);};}exports[_0x496e('0x5')]=function(_0x141159){for(var _0x5b53c6=0x0,_0x3d6999=events[_0x496e('0x6')];_0x5b53c6<_0x3d6999;_0x5b53c6++){var _0x4abad9=events[_0x5b53c6];var _0x4961c6=createListener(_0x496e('0x7')+_0x4abad9,_0x141159);PluginEvents['on'](_0x4abad9,_0x4961c6);}};
\ No newline at end of file
index 0a0633d..30c8ce4 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(_0xb0546e,_0x2bb10c){var _0x47b8ae=function(_0x4299dc){while(--_0x4299dc){_0xb0546e['push'](_0xb0546e['shift']());}};_0x47b8ae(++_0x2bb10c);}(_0xa9e0,0x123));var _0x0a9e=function(_0x46aff0,_0x122890){_0x46aff0=_0x46aff0-0x0;var _0x9d78cf=_0xa9e0[_0x46aff0];return _0x9d78cf;};'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(_0x91dd76,_0x5977ba){var _0x28d8fe=function(_0x456b51){while(--_0x456b51){_0x91dd76['push'](_0x91dd76['shift']());}};_0x28d8fe(++_0x5977ba);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4baae2,_0x487ab6){_0x4baae2=_0x4baae2-0x0;var _0x1a2285=_0xa9e0[_0x4baae2];return _0x1a2285;};'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 e5775e3..078090e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x39cb=['create','body','join','../../files/plugins','cwd','chdir','start','send','Missing\x20name\x20and/or\x20path','restart','hasOwnProperty','Unknown\x20status','destroy','delete','dump','Unknown\x20id','../../config/pm2','../../config/logger','path','child_process','bluebird','sendStatus','status','json','error','stack','name','npm\x20install','info','index','then','reject','express','motion2','length','catch','show','describe','params'];(function(_0x4c1bdb,_0x8ef773){var _0x113ea2=function(_0x5e247a){while(--_0x5e247a){_0x4c1bdb['push'](_0x4c1bdb['shift']());}};_0x113ea2(++_0x8ef773);}(_0x39cb,0x1bd));var _0xb39c=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0x39cb[_0x4b369d];return _0x571a98;};'use strict';var _=require('lodash');var pm2=require(_0xb39c('0x0'));var logger=require(_0xb39c('0x1'))('api');var path=require(_0xb39c('0x2'));var exec=require(_0xb39c('0x3'))['exec'];var BPromise=require(_0xb39c('0x4'));function handleEntityNotFound(_0x285eca,_0x398d07){return function(_0x2bca14){if(!_0x2bca14){_0x285eca[_0xb39c('0x5')](0x194);;}return _0x2bca14;};}function respondWithResult(_0x4ae4cf,_0x32cdcd){_0x32cdcd=_0x32cdcd||0xc8;return function(_0x2fc868){if(_0x2fc868){return _0x4ae4cf[_0xb39c('0x6')](_0x32cdcd)[_0xb39c('0x7')](_0x2fc868);}return null;};}function handleError(_0x47d6d7,_0x5ae14a){_0x5ae14a=_0x5ae14a||0x1f4;return function(_0x41557b){logger[_0xb39c('0x8')](_0x41557b[_0xb39c('0x9')]);if(_0x41557b[_0xb39c('0xa')]){delete _0x41557b['name'];}_0x47d6d7['status'](_0x5ae14a)['send'](_0x41557b);};}function execChildProcess(){return new BPromise(function(_0x1de94f,_0x497ffc){exec(_0xb39c('0xb'),function(_0x1088ee,_0x433ee8,_0x340622){logger[_0xb39c('0xc')](_0x433ee8);logger[_0xb39c('0xc')](_0x340622);if(_0x1088ee){logger['error'](_0x1088ee);return _0x497ffc(_0x1088ee);}return _0x1de94f(_0x433ee8);});});}exports[_0xb39c('0xd')]=function(_0x468995,_0x2620cd){return pm2['list']()[_0xb39c('0xe')](function(_0x40a6d3){if(_0x40a6d3){var _0x42a203=_[_0xb39c('0xf')](_0x40a6d3,function(_0x469fa9){return _0x469fa9[_0xb39c('0xa')]===_0xb39c('0x10')||_0x469fa9['name']===_0xb39c('0x11');});return{'rows':_0x42a203,'count':_0x42a203[_0xb39c('0x12')]};}return null;})[_0xb39c('0xe')](respondWithResult(_0x2620cd,null))[_0xb39c('0x13')](handleError(_0x2620cd,null));};exports[_0xb39c('0x14')]=function(_0x3b7fad,_0x1a2f48){return pm2[_0xb39c('0x15')](_0x3b7fad[_0xb39c('0x16')]['id'])[_0xb39c('0xe')](respondWithResult(_0x1a2f48,null))['then'](handleEntityNotFound(_0x1a2f48,null))[_0xb39c('0x13')](handleError(_0x1a2f48,null));};exports[_0xb39c('0x17')]=function(_0x28bbe1,_0x447352){if(_0x28bbe1['body'][_0xb39c('0xa')]&&_0x28bbe1[_0xb39c('0x18')]['script']){var _0x2d8e93=path[_0xb39c('0x19')](__dirname,_0xb39c('0x1a'),_0x28bbe1['body']['script']);var _0x2789fd=process[_0xb39c('0x1b')]();process[_0xb39c('0x1c')](path['dirname'](_0x2d8e93));return execChildProcess()[_0xb39c('0xe')](function(_0x438207){process[_0xb39c('0x1c')](_0x2789fd);return pm2[_0xb39c('0x1d')]({'name':_0x28bbe1[_0xb39c('0x18')]['name'],'script':_0x2d8e93});})[_0xb39c('0xe')](function(_0xbeab7e){pm2['dump']();return _0xbeab7e[0x0];})[_0xb39c('0xe')](respondWithResult(_0x447352,0xc9))[_0xb39c('0x13')](handleError(_0x447352,null));}else{return _0x447352[_0xb39c('0x6')](0x1f4)[_0xb39c('0x1e')]({'message':_0xb39c('0x1f')});}};exports['update']=function(_0x23a2f1,_0x299c27){if(_0x23a2f1[_0xb39c('0x18')]['id']){delete _0x23a2f1['body']['id'];}var _0x41fff2={'online':_0xb39c('0x20'),'stopped':'stop'};if(_0x41fff2[_0xb39c('0x21')](_0x23a2f1[_0xb39c('0x18')][_0xb39c('0x6')])){return pm2[_0x41fff2[_0x23a2f1['body'][_0xb39c('0x6')]]](_0x23a2f1[_0xb39c('0x16')]['id'])['then'](respondWithResult(_0x299c27,0xc8))[_0xb39c('0x13')](handleError(_0x299c27,null));}else{return _0x299c27['status'](0x1f4)[_0xb39c('0x1e')]({'message':_0xb39c('0x22')});}};exports[_0xb39c('0x23')]=function(_0x7339b4,_0x17eb7b){if(_0x7339b4['body']['id']){delete _0x7339b4[_0xb39c('0x18')]['id'];}if(_0x7339b4['params']['id']){return pm2[_0xb39c('0x24')](_0x7339b4['params']['id'])[_0xb39c('0xe')](function(_0xe2111a){pm2[_0xb39c('0x25')]();return _0xe2111a[0x0];})[_0xb39c('0xe')](respondWithResult(_0x17eb7b,null))['catch'](handleError(_0x17eb7b,null));}else{return _0x17eb7b['status'](0x1f4)[_0xb39c('0x1e')]({'message':_0xb39c('0x26')});}};
\ No newline at end of file
+var _0x9b9b=['Unknown\x20status','delete','Unknown\x20id','../../config/pm2','path','child_process','exec','bluebird','sendStatus','status','json','name','npm\x20install','info','error','index','list','reject','express','motion2','length','then','show','describe','params','catch','create','body','script','join','../../files/plugins','cwd','chdir','dirname','dump','send','update','restart','hasOwnProperty'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x9b9b,0x114));var _0xb9b9=function(_0x32e9e9,_0x3df5aa){_0x32e9e9=_0x32e9e9-0x0;var _0x400b63=_0x9b9b[_0x32e9e9];return _0x400b63;};'use strict';var _=require('lodash');var pm2=require(_0xb9b9('0x0'));var logger=require('../../config/logger')('api');var path=require(_0xb9b9('0x1'));var exec=require(_0xb9b9('0x2'))[_0xb9b9('0x3')];var BPromise=require(_0xb9b9('0x4'));function handleEntityNotFound(_0x1d6ab6,_0x43c8ff){return function(_0x23b016){if(!_0x23b016){_0x1d6ab6[_0xb9b9('0x5')](0x194);;}return _0x23b016;};}function respondWithResult(_0x79dd,_0x3d1a95){_0x3d1a95=_0x3d1a95||0xc8;return function(_0x85eec){if(_0x85eec){return _0x79dd[_0xb9b9('0x6')](_0x3d1a95)[_0xb9b9('0x7')](_0x85eec);}return null;};}function handleError(_0x297cb6,_0x222cba){_0x222cba=_0x222cba||0x1f4;return function(_0x319bb8){logger['error'](_0x319bb8['stack']);if(_0x319bb8[_0xb9b9('0x8')]){delete _0x319bb8[_0xb9b9('0x8')];}_0x297cb6[_0xb9b9('0x6')](_0x222cba)['send'](_0x319bb8);};}function execChildProcess(){return new BPromise(function(_0x3949d0,_0x3b6bb9){exec(_0xb9b9('0x9'),function(_0x4d8856,_0x3430a6,_0x277d86){logger[_0xb9b9('0xa')](_0x3430a6);logger[_0xb9b9('0xa')](_0x277d86);if(_0x4d8856){logger[_0xb9b9('0xb')](_0x4d8856);return _0x3b6bb9(_0x4d8856);}return _0x3949d0(_0x3430a6);});});}exports[_0xb9b9('0xc')]=function(_0x5bd18c,_0x539449){return pm2[_0xb9b9('0xd')]()['then'](function(_0xe78d58){if(_0xe78d58){var _0x50e5d6=_[_0xb9b9('0xe')](_0xe78d58,function(_0x23bac9){return _0x23bac9[_0xb9b9('0x8')]===_0xb9b9('0xf')||_0x23bac9[_0xb9b9('0x8')]===_0xb9b9('0x10');});return{'rows':_0x50e5d6,'count':_0x50e5d6[_0xb9b9('0x11')]};}return null;})[_0xb9b9('0x12')](respondWithResult(_0x539449,null))['catch'](handleError(_0x539449,null));};exports[_0xb9b9('0x13')]=function(_0x48d9ae,_0x403a5b){return pm2[_0xb9b9('0x14')](_0x48d9ae[_0xb9b9('0x15')]['id'])[_0xb9b9('0x12')](respondWithResult(_0x403a5b,null))['then'](handleEntityNotFound(_0x403a5b,null))[_0xb9b9('0x16')](handleError(_0x403a5b,null));};exports[_0xb9b9('0x17')]=function(_0x398f3d,_0xb01198){if(_0x398f3d[_0xb9b9('0x18')][_0xb9b9('0x8')]&&_0x398f3d[_0xb9b9('0x18')][_0xb9b9('0x19')]){var _0xb16391=path[_0xb9b9('0x1a')](__dirname,_0xb9b9('0x1b'),_0x398f3d[_0xb9b9('0x18')][_0xb9b9('0x19')]);var _0x4e33a0=process[_0xb9b9('0x1c')]();process[_0xb9b9('0x1d')](path[_0xb9b9('0x1e')](_0xb16391));return execChildProcess()['then'](function(_0x9898bc){process[_0xb9b9('0x1d')](_0x4e33a0);return pm2['start']({'name':_0x398f3d[_0xb9b9('0x18')][_0xb9b9('0x8')],'script':_0xb16391});})[_0xb9b9('0x12')](function(_0x40b801){pm2[_0xb9b9('0x1f')]();return _0x40b801[0x0];})['then'](respondWithResult(_0xb01198,0xc9))['catch'](handleError(_0xb01198,null));}else{return _0xb01198[_0xb9b9('0x6')](0x1f4)[_0xb9b9('0x20')]({'message':'Missing\x20name\x20and/or\x20path'});}};exports[_0xb9b9('0x21')]=function(_0x134ed6,_0x20ffc1){if(_0x134ed6[_0xb9b9('0x18')]['id']){delete _0x134ed6[_0xb9b9('0x18')]['id'];}var _0x54bf18={'online':_0xb9b9('0x22'),'stopped':'stop'};if(_0x54bf18[_0xb9b9('0x23')](_0x134ed6[_0xb9b9('0x18')]['status'])){return pm2[_0x54bf18[_0x134ed6[_0xb9b9('0x18')][_0xb9b9('0x6')]]](_0x134ed6[_0xb9b9('0x15')]['id'])['then'](respondWithResult(_0x20ffc1,0xc8))[_0xb9b9('0x16')](handleError(_0x20ffc1,null));}else{return _0x20ffc1[_0xb9b9('0x6')](0x1f4)[_0xb9b9('0x20')]({'message':_0xb9b9('0x24')});}};exports['destroy']=function(_0xc40dda,_0xdbc1f1){if(_0xc40dda['body']['id']){delete _0xc40dda[_0xb9b9('0x18')]['id'];}if(_0xc40dda[_0xb9b9('0x15')]['id']){return pm2[_0xb9b9('0x25')](_0xc40dda[_0xb9b9('0x15')]['id'])['then'](function(_0xd66ace){pm2[_0xb9b9('0x1f')]();return _0xd66ace[0x0];})[_0xb9b9('0x12')](respondWithResult(_0xdbc1f1,null))[_0xb9b9('0x16')](handleError(_0xdbc1f1,null));}else{return _0xdbc1f1['status'](0x1f4)[_0xb9b9('0x20')]({'message':_0xb9b9('0x26')});}};
\ No newline at end of file
index cd86121..aecbfc6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x184c=['get','isAuthenticated','getAgents','getQueues','exports','express','Router'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0x184c,0x140));var _0xc184=function(_0x4a5abe,_0x5b1426){_0x4a5abe=_0x4a5abe-0x0;var _0x4169f0=_0x184c[_0x4a5abe];return _0x4169f0;};'use strict';var express=require(_0xc184('0x0'));var router=express[_0xc184('0x1')]();var auth=require('../../components/auth/service');var controller=require('./realtime.controller');router[_0xc184('0x2')]('/agents',auth[_0xc184('0x3')](),controller[_0xc184('0x4')]);router[_0xc184('0x2')]('/queues',auth[_0xc184('0x3')](),controller[_0xc184('0x5')]);module[_0xc184('0x6')]=router;
\ No newline at end of file
+var _0x23ef=['../../components/auth/service','./realtime.controller','/agents','getAgents','get','getQueues','exports','express','Router'];(function(_0x23312e,_0x4e390b){var _0x2d2bb6=function(_0x2ac650){while(--_0x2ac650){_0x23312e['push'](_0x23312e['shift']());}};_0x2d2bb6(++_0x4e390b);}(_0x23ef,0x1d2));var _0xf23e=function(_0x4cec95,_0x12109f){_0x4cec95=_0x4cec95-0x0;var _0x4df3dd=_0x23ef[_0x4cec95];return _0x4df3dd;};'use strict';var express=require(_0xf23e('0x0'));var router=express[_0xf23e('0x1')]();var auth=require(_0xf23e('0x2'));var controller=require(_0xf23e('0x3'));router['get'](_0xf23e('0x4'),auth['isAuthenticated'](),controller[_0xf23e('0x5')]);router[_0xf23e('0x6')]('/queues',auth['isAuthenticated'](),controller[_0xf23e('0x7')]);module[_0xf23e('0x8')]=router;
\ No newline at end of file
index 8a095c1..c6f11ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x08d2=['../../errors/api','APIBadRequestError','offset','limit','undefined','count','status','set','Content-Range','json','getAgents','getChannels','query','globalQueueFilter','globalStatusFilter','pauseTypeFilter','pause','*pause','resolve','then','channel','isValidChannel','format','Channel\x20parameter\x20%s\x20is\x20invalid','sort','globalStatus','validateSortParameter','getUpdatedSortOptions','fields','join','order','getRealtimeAgents','rows','getSortedAgentsIdsByStatus','length','map','User','rawAttributes','fieldName','type','key','role','agent','online','sequelize','literal','FIELD(id,','forEach','push','Pause','where','user','userProfileId','Agents','extraQueryConditions','UserProfile','getResources','findAndCountAll','find','filterAgentAttributes','merge','getAgentStatus','includes','Status','sortAgentsByStatus','split','catch','getQueues','toLowerCase','startCase','Queue','name','voice','outbound','dialActive','getOptions','QueueCampaigns','filter','getRealtimeQueues','lodash','util','../../components/realtime/agents','../../components/realtime/queues','../../config/utils','../../mysqldb'];(function(_0x339129,_0x86dcc6){var _0x1570df=function(_0x3b537e){while(--_0x3b537e){_0x339129['push'](_0x339129['shift']());}};_0x1570df(++_0x86dcc6);}(_0x08d2,0x1a3));var _0x208d=function(_0x2d743e,_0x5ede99){_0x2d743e=_0x2d743e-0x0;var _0x5a42ac=_0x08d2[_0x2d743e];return _0x5a42ac;};'use strict';var _=require(_0x208d('0x0'));var util=require(_0x208d('0x1'));var rta=require(_0x208d('0x2'));var rtq=require(_0x208d('0x3'));var qs=require('../../components/parsers/qs');var utils=require(_0x208d('0x4'));var db=require(_0x208d('0x5'))['db'];var APIBadRequestError=require(_0x208d('0x6'))[_0x208d('0x7')];var APIHandleError=require(_0x208d('0x6'))['handleError'];function respondWithFilteredResult(_0x3fd875,_0x5356c3){return function(_0x2bbe10){if(_0x2bbe10){var _0x38ec7d=typeof _0x5356c3[_0x208d('0x8')]==='undefined'&&typeof _0x5356c3[_0x208d('0x9')]===_0x208d('0xa');var _0x44d638=_0x2bbe10[_0x208d('0xb')];var _0x4bfecc=_0x38ec7d?0x0:_0x5356c3['offset'];var _0x8205c4=_0x38ec7d?_0x2bbe10[_0x208d('0xb')]:_0x5356c3[_0x208d('0x8')]+_0x5356c3[_0x208d('0x9')];var _0x456ba9;if(_0x8205c4>=_0x44d638){_0x8205c4=_0x44d638;_0x456ba9=0xc8;}else{_0x456ba9=0xce;}_0x3fd875[_0x208d('0xc')](_0x456ba9);return _0x3fd875[_0x208d('0xd')](_0x208d('0xe'),_0x4bfecc+'-'+_0x8205c4+'/'+_0x44d638)[_0x208d('0xf')](_0x2bbe10);}return null;};}exports[_0x208d('0x10')]=function(_0x31e996,_0x5ba0db){var _0x35ad7a={'count':0x0,'rows':[]};var _0x2315ed={};var _0x579164;var _0x3889b0=utils[_0x208d('0x11')]();var _0x21e7a6;var _0x13bdfc;var _0xa81a17=_0x31e996[_0x208d('0x12')][_0x208d('0x13')];var _0x47dab3=_0x31e996['query'][_0x208d('0x14')];var _0x35c5d4=_0x31e996[_0x208d('0x12')][_0x208d('0x15')];var _0x4ddcd8=_0x47dab3===_0x208d('0x16')||_0x47dab3===_0x208d('0x17')?!![]:![];var _0x11fff4=[];var _0x47b5de;var _0x18495a;Promise[_0x208d('0x18')]()[_0x208d('0x19')](function(){if(_0x31e996[_0x208d('0x12')][_0x208d('0x1a')]){if(!utils[_0x208d('0x1b')](_0x31e996['query'][_0x208d('0x1a')])){throw new APIBadRequestError(util[_0x208d('0x1c')](_0x208d('0x1d'),_0x31e996['query']['channel']));}_0x579164=_0x31e996[_0x208d('0x12')][_0x208d('0x1a')]['toLowerCase']();}if(!_0x31e996['query']['sort']||!_0x31e996[_0x208d('0x12')][_0x208d('0x1e')]['includes'](_0x208d('0x1f'))){_0x31e996[_0x208d('0x12')]['sort']=rta[_0x208d('0x20')](_0x31e996['query']['sort']);return;}var _0xe2c8b9=rta[_0x208d('0x21')](_0x31e996['query'][_0x208d('0x1e')]);_0x31e996['query'][_0x208d('0x1e')]=_0xe2c8b9[_0x208d('0x22')][_0x208d('0x23')](',');_0x47b5de=_0xe2c8b9[_0x208d('0x24')];})['then'](function(){if(!_0xa81a17){return[];}return rta['getAgentIdsByQueues'](_0xa81a17,_0x579164);})[_0x208d('0x19')](function(_0x17ae55){_0x11fff4=_0x17ae55;return rta[_0x208d('0x25')]();})[_0x208d('0x19')](function(_0x5b452a){_0x13bdfc=_0x5b452a[_0x208d('0x26')];if((!_0x47dab3||_0x4ddcd8)&&!_0x47b5de){return _0x11fff4;}if(_0x47b5de&&!_0x47dab3){return rta[_0x208d('0x27')](_0x13bdfc,_0x11fff4,_0x47b5de);}else{return rta['getAgentIdsByStatus'](_0x13bdfc,_0x11fff4,_0x47dab3);}})[_0x208d('0x19')](function(_0x4f61d7){_0x11fff4=_0x4f61d7;var _0xb740c2=![];if(_0x11fff4[_0x208d('0x28')]===0x0){if(_0xa81a17||_0x47dab3){_0xb740c2=!![];}if(_0x4ddcd8){_0xb740c2=![];}}if(_0xb740c2){return _0x35ad7a;}var _0xf3474f=_[_0x208d('0x29')](db[_0x208d('0x2a')][_0x208d('0x2b')],function(_0x140e97){return{'name':_0x140e97[_0x208d('0x2c')],'type':_0x140e97[_0x208d('0x2d')][_0x208d('0x2e')]};});_0x31e996[_0x208d('0x12')][_0x208d('0x2f')]=_0x208d('0x30');_0x31e996['query'][_0x208d('0x31')]=!![];_0x2315ed=qs['getOptions'](_0xf3474f,_0x31e996);_0x2315ed['raw']=!![];var _0x43dd1c=[];if(_0x11fff4[_0x208d('0x28')]>0x0){_0x43dd1c['push']({'id':{'$in':_0x11fff4}});if(_0x47b5de&&!_0x47dab3){_0x18495a=[db[_0x208d('0x32')][_0x208d('0x33')](_0x208d('0x34')+_0x11fff4+')')];_0x2315ed[_0x208d('0x24')]=_0x18495a;}}if(_0x4ddcd8){_0x3889b0[_0x208d('0x35')](function(_0x2b6b30){var _0x129e2f=!![];if(_0x47dab3===_0x208d('0x17')&&_0x579164!==_0x2b6b30){_0x129e2f=![];}_0x43dd1c[_0x208d('0x36')]({[_0x2b6b30+_0x208d('0x37')]:_0x129e2f});});if(_0x35c5d4){_0x43dd1c['push']({'pauseType':_0x35c5d4});}}else if(_0x47dab3){_0x3889b0[_0x208d('0x35')](function(_0x17caf5){_0x43dd1c[_0x208d('0x36')]({[_0x17caf5+_0x208d('0x37')]:![]});});}_0x2315ed['where']=_['merge'](_0x2315ed[_0x208d('0x38')],{'$and':_0x43dd1c});if(_0x31e996[_0x208d('0x39')][_0x208d('0x2f')]==='user'){var _0x12f608={'params':{'id':_0x31e996[_0x208d('0x39')][_0x208d('0x3a')]},'query':{'section':_0x208d('0x3b'),'role':_0x208d('0x30'),'online':!![],'raw':!![],'ids':_0x11fff4,'customSorting':_0x18495a}};if(_0x4ddcd8){_0x12f608['query'][_0x208d('0x3c')]=_0x43dd1c;}_0x12f608[_0x208d('0x12')]=Object['assign'](_0x12f608[_0x208d('0x12')],_0x31e996[_0x208d('0x12')]);delete _0x12f608[_0x208d('0x12')]['id'];return db[_0x208d('0x3d')][_0x208d('0x3e')](_0x12f608);}return db[_0x208d('0x2a')][_0x208d('0x3f')](_0x2315ed);})['then'](function(_0x35bd03){_0x35ad7a['count']=_0x35bd03[_0x208d('0xb')];_0x21e7a6=_0x35bd03[_0x208d('0x26')];return _0x21e7a6[_0x208d('0x29')](function(_0x3afd30){var _0x2a8c3d=_[_0x208d('0x40')](_0x13bdfc,['id',_0x3afd30['id']]);if(_0x2a8c3d){var _0x111b70=rta[_0x208d('0x41')](_0x2a8c3d);_[_0x208d('0x42')](_0x3afd30,_0x111b70);}_0x3afd30['globalStatus']=rta[_0x208d('0x43')](_0x3afd30);if(_0x3afd30['globalStatus'][_0x208d('0x44')](_0x208d('0x16'))){_0x3889b0[_0x208d('0x35')](function(_0x533457){if(_0x3afd30[_0x533457+_0x208d('0x37')]){_0x3afd30[_0x533457+_0x208d('0x45')]=_0x208d('0x16');}});}return _0x3afd30;});})['then'](function(_0x4b36d8){if(!_0x47b5de||_0x18495a){return _0x4b36d8;}return rta[_0x208d('0x46')](_0x4b36d8,_0x47b5de);})[_0x208d('0x19')](function(_0x51e248){var _0x546f68=null;if(_0x31e996[_0x208d('0x12')]['fields']){var _0x2bda7c=_0x31e996[_0x208d('0x12')][_0x208d('0x22')][_0x208d('0x47')](',');_0x546f68=_0x51e248[_0x208d('0x29')](function(_0x21b964){return _['pick'](_0x21b964,_0x2bda7c);});}_0x35ad7a[_0x208d('0x26')]=_0x546f68||_0x51e248;return _0x35ad7a;})[_0x208d('0x19')](respondWithFilteredResult(_0x5ba0db,_0x2315ed))[_0x208d('0x48')](APIHandleError(_0x5ba0db));};exports[_0x208d('0x49')]=function(_0x15e84c,_0x4b9d2e){var _0x557cb0={'count':0x0,'rows':[]};var _0xb935b8={};var _0x5ce5c0;var _0x138567;var _0x4f5a57;Promise[_0x208d('0x18')]()[_0x208d('0x19')](function(){if(_0x15e84c[_0x208d('0x12')][_0x208d('0x1a')]){if(!utils[_0x208d('0x1b')](_0x15e84c[_0x208d('0x12')][_0x208d('0x1a')])){throw new APIBadRequestError(util[_0x208d('0x1c')](_0x208d('0x1d'),_0x15e84c['query'][_0x208d('0x1a')]));}_0x5ce5c0=_0x15e84c['query'][_0x208d('0x1a')][_0x208d('0x4a')]();}var _0x43c333=_[_0x208d('0x4b')](_0x5ce5c0)+_0x208d('0x4c');var _0x5a257e=_[_0x208d('0x29')](db[_0x43c333]['rawAttributes'],function(_0x302847){return{'name':_0x302847[_0x208d('0x2c')],'type':_0x302847[_0x208d('0x2d')]['key']};});if(!_0x15e84c['query'][_0x208d('0x22')]){var _0x1f5ebc=['id',_0x208d('0x4d')];if(_0x5ce5c0===_0x208d('0x4e')){_0x1f5ebc['push'](_0x208d('0x2d'));if(_0x15e84c[_0x208d('0x12')][_0x208d('0x2d')]===_0x208d('0x4f')){_0x1f5ebc[_0x208d('0x36')]([_0x208d('0x50'),'dialMethod']);}}_0x15e84c['query'][_0x208d('0x22')]=_0x1f5ebc[_0x208d('0x23')](',');}_0xb935b8=qs[_0x208d('0x51')](_0x5a257e,_0x15e84c);if(_0x15e84c['user'][_0x208d('0x2f')]===_0x208d('0x39')){var _0x1d7bba={'params':{'id':_0x15e84c[_0x208d('0x39')][_0x208d('0x3a')]},'query':{'section':_0x5ce5c0===_0x208d('0x4e')&&_0x15e84c[_0x208d('0x12')][_0x208d('0x2d')]==='outbound'?_0x208d('0x52'):_[_0x208d('0x4b')](_0x5ce5c0)+'Queues','type':_0x15e84c['query'][_0x208d('0x2d')],'nolimit':!![],'sort':_0x208d('0x4d'),'filter':_0x15e84c[_0x208d('0x12')][_0x208d('0x53')]}};return db[_0x208d('0x3d')][_0x208d('0x3e')](_0x1d7bba);}return db[_0x43c333]['findAndCountAll'](_0xb935b8);})['then'](function(_0x39c665){_0x557cb0[_0x208d('0xb')]=_0x39c665[_0x208d('0xb')];_0x138567=_0x39c665[_0x208d('0x26')];return rtq[_0x208d('0x54')](_0x15e84c,_0x5ce5c0);})['then'](function(_0x2490f0){_0x4f5a57=_0x2490f0['rows'];return rtq['initializeQueues'](_0x138567,_0x4f5a57,_0x5ce5c0,_0x15e84c[_0x208d('0x12')]['type']);})['then'](function(_0x152dd2){_0x557cb0[_0x208d('0x26')]=_0x152dd2;return _0x557cb0;})[_0x208d('0x19')](respondWithFilteredResult(_0x4b9d2e,_0xb935b8))['catch'](APIHandleError(_0x4b9d2e));};
\ No newline at end of file
+var _0x84e7=['map','User','rawAttributes','fieldName','type','key','role','agent','online','raw','sequelize','FIELD(id,','Pause','push','forEach','where','merge','user','userProfileId','extraQueryConditions','assign','UserProfile','getResources','find','filterAgentAttributes','getAgentStatus','Status','split','catch','getQueues','resolve','Channel\x20parameter\x20%s\x20is\x20invalid','startCase','Queue','name','dialActive','dialMethod','getOptions','voice','outbound','QueueCampaigns','Queues','findAndCountAll','initializeQueues','util','../../components/realtime/agents','../../components/parsers/qs','../../config/utils','../../errors/api','APIBadRequestError','handleError','undefined','limit','count','offset','status','Content-Range','json','getAgents','getChannels','query','globalQueueFilter','globalStatusFilter','pauseTypeFilter','pause','*pause','then','channel','isValidChannel','format','toLowerCase','sort','includes','globalStatus','getUpdatedSortOptions','fields','join','order','getAgentIdsByQueues','getRealtimeAgents','rows','length'];(function(_0x121b51,_0xe7a979){var _0x34806a=function(_0x345f49){while(--_0x345f49){_0x121b51['push'](_0x121b51['shift']());}};_0x34806a(++_0xe7a979);}(_0x84e7,0x122));var _0x784e=function(_0x415cd5,_0x4977f7){_0x415cd5=_0x415cd5-0x0;var _0x2a3a97=_0x84e7[_0x415cd5];return _0x2a3a97;};'use strict';var _=require('lodash');var util=require(_0x784e('0x0'));var rta=require(_0x784e('0x1'));var rtq=require('../../components/realtime/queues');var qs=require(_0x784e('0x2'));var utils=require(_0x784e('0x3'));var db=require('../../mysqldb')['db'];var APIBadRequestError=require(_0x784e('0x4'))[_0x784e('0x5')];var APIHandleError=require(_0x784e('0x4'))[_0x784e('0x6')];function respondWithFilteredResult(_0x42993b,_0x133296){return function(_0x48ed22){if(_0x48ed22){var _0x3cbdd1=typeof _0x133296['offset']===_0x784e('0x7')&&typeof _0x133296[_0x784e('0x8')]==='undefined';var _0x18be55=_0x48ed22[_0x784e('0x9')];var _0x237b5e=_0x3cbdd1?0x0:_0x133296[_0x784e('0xa')];var _0x4ac061=_0x3cbdd1?_0x48ed22['count']:_0x133296[_0x784e('0xa')]+_0x133296[_0x784e('0x8')];var _0x17b71f;if(_0x4ac061>=_0x18be55){_0x4ac061=_0x18be55;_0x17b71f=0xc8;}else{_0x17b71f=0xce;}_0x42993b[_0x784e('0xb')](_0x17b71f);return _0x42993b['set'](_0x784e('0xc'),_0x237b5e+'-'+_0x4ac061+'/'+_0x18be55)[_0x784e('0xd')](_0x48ed22);}return null;};}exports[_0x784e('0xe')]=function(_0x2c7227,_0x40e0d1){var _0x208d24={'count':0x0,'rows':[]};var _0x59e179={};var _0x2815f6;var _0x5177e4=utils[_0x784e('0xf')]();var _0x1f6ede;var _0x41f993;var _0x21e844=_0x2c7227[_0x784e('0x10')][_0x784e('0x11')];var _0x947397=_0x2c7227[_0x784e('0x10')][_0x784e('0x12')];var _0x567eb9=_0x2c7227['query'][_0x784e('0x13')];var _0x3a01e3=_0x947397===_0x784e('0x14')||_0x947397===_0x784e('0x15')?!![]:![];var _0x3ac83=[];var _0x19072b;var _0x1dc568;Promise['resolve']()[_0x784e('0x16')](function(){if(_0x2c7227[_0x784e('0x10')][_0x784e('0x17')]){if(!utils[_0x784e('0x18')](_0x2c7227[_0x784e('0x10')][_0x784e('0x17')])){throw new APIBadRequestError(util[_0x784e('0x19')]('Channel\x20parameter\x20%s\x20is\x20invalid',_0x2c7227['query'][_0x784e('0x17')]));}_0x2815f6=_0x2c7227['query'][_0x784e('0x17')][_0x784e('0x1a')]();}if(!_0x2c7227['query']['sort']||!_0x2c7227[_0x784e('0x10')][_0x784e('0x1b')][_0x784e('0x1c')](_0x784e('0x1d'))){_0x2c7227['query']['sort']=rta['validateSortParameter'](_0x2c7227[_0x784e('0x10')][_0x784e('0x1b')]);return;}var _0x47f5c2=rta[_0x784e('0x1e')](_0x2c7227['query'][_0x784e('0x1b')]);_0x2c7227['query'][_0x784e('0x1b')]=_0x47f5c2[_0x784e('0x1f')][_0x784e('0x20')](',');_0x19072b=_0x47f5c2[_0x784e('0x21')];})['then'](function(){if(!_0x21e844){return[];}return rta[_0x784e('0x22')](_0x21e844,_0x2815f6);})[_0x784e('0x16')](function(_0x12a246){_0x3ac83=_0x12a246;return rta[_0x784e('0x23')]();})['then'](function(_0x243e42){_0x41f993=_0x243e42[_0x784e('0x24')];if((!_0x947397||_0x3a01e3)&&!_0x19072b){return _0x3ac83;}if(_0x19072b&&!_0x947397){return rta['getSortedAgentsIdsByStatus'](_0x41f993,_0x3ac83,_0x19072b);}else{return rta['getAgentIdsByStatus'](_0x41f993,_0x3ac83,_0x947397);}})[_0x784e('0x16')](function(_0x40c31b){_0x3ac83=_0x40c31b;var _0x17a278=![];if(_0x3ac83[_0x784e('0x25')]===0x0){if(_0x21e844||_0x947397){_0x17a278=!![];}if(_0x3a01e3){_0x17a278=![];}}if(_0x17a278){return _0x208d24;}var _0x2e8a79=_[_0x784e('0x26')](db[_0x784e('0x27')][_0x784e('0x28')],function(_0x42bdfb){return{'name':_0x42bdfb[_0x784e('0x29')],'type':_0x42bdfb[_0x784e('0x2a')][_0x784e('0x2b')]};});_0x2c7227[_0x784e('0x10')][_0x784e('0x2c')]=_0x784e('0x2d');_0x2c7227['query'][_0x784e('0x2e')]=!![];_0x59e179=qs['getOptions'](_0x2e8a79,_0x2c7227);_0x59e179[_0x784e('0x2f')]=!![];var _0x14bb3b=[];if(_0x3ac83[_0x784e('0x25')]>0x0){_0x14bb3b['push']({'id':{'$in':_0x3ac83}});if(_0x19072b&&!_0x947397){_0x1dc568=[db[_0x784e('0x30')]['literal'](_0x784e('0x31')+_0x3ac83+')')];_0x59e179[_0x784e('0x21')]=_0x1dc568;}}if(_0x3a01e3){_0x5177e4['forEach'](function(_0x23b3b0){var _0x287f3e=!![];if(_0x947397==='*pause'&&_0x2815f6!==_0x23b3b0){_0x287f3e=![];}_0x14bb3b['push']({[_0x23b3b0+_0x784e('0x32')]:_0x287f3e});});if(_0x567eb9){_0x14bb3b[_0x784e('0x33')]({'pauseType':_0x567eb9});}}else if(_0x947397){_0x5177e4[_0x784e('0x34')](function(_0x4724af){_0x14bb3b[_0x784e('0x33')]({[_0x4724af+'Pause']:![]});});}_0x59e179[_0x784e('0x35')]=_[_0x784e('0x36')](_0x59e179['where'],{'$and':_0x14bb3b});if(_0x2c7227[_0x784e('0x37')]['role']==='user'){var _0x582355={'params':{'id':_0x2c7227[_0x784e('0x37')][_0x784e('0x38')]},'query':{'section':'Agents','role':_0x784e('0x2d'),'online':!![],'raw':!![],'ids':_0x3ac83,'customSorting':_0x1dc568}};if(_0x3a01e3){_0x582355[_0x784e('0x10')][_0x784e('0x39')]=_0x14bb3b;}_0x582355[_0x784e('0x10')]=Object[_0x784e('0x3a')](_0x582355[_0x784e('0x10')],_0x2c7227['query']);delete _0x582355['query']['id'];return db[_0x784e('0x3b')][_0x784e('0x3c')](_0x582355);}return db['User']['findAndCountAll'](_0x59e179);})['then'](function(_0x35608e){_0x208d24[_0x784e('0x9')]=_0x35608e['count'];_0x1f6ede=_0x35608e[_0x784e('0x24')];return _0x1f6ede[_0x784e('0x26')](function(_0x35f85c){var _0x49e82a=_[_0x784e('0x3d')](_0x41f993,['id',_0x35f85c['id']]);if(_0x49e82a){var _0x525923=rta[_0x784e('0x3e')](_0x49e82a);_['merge'](_0x35f85c,_0x525923);}_0x35f85c[_0x784e('0x1d')]=rta[_0x784e('0x3f')](_0x35f85c);if(_0x35f85c['globalStatus']['includes'](_0x784e('0x14'))){_0x5177e4[_0x784e('0x34')](function(_0xa2ed54){if(_0x35f85c[_0xa2ed54+'Pause']){_0x35f85c[_0xa2ed54+_0x784e('0x40')]=_0x784e('0x14');}});}return _0x35f85c;});})[_0x784e('0x16')](function(_0x1e90bb){if(!_0x19072b||_0x1dc568){return _0x1e90bb;}return rta['sortAgentsByStatus'](_0x1e90bb,_0x19072b);})[_0x784e('0x16')](function(_0x400288){var _0x48d0f0=null;if(_0x2c7227['query'][_0x784e('0x1f')]){var _0x39cf7a=_0x2c7227[_0x784e('0x10')][_0x784e('0x1f')][_0x784e('0x41')](',');_0x48d0f0=_0x400288['map'](function(_0x5c91b0){return _['pick'](_0x5c91b0,_0x39cf7a);});}_0x208d24[_0x784e('0x24')]=_0x48d0f0||_0x400288;return _0x208d24;})[_0x784e('0x16')](respondWithFilteredResult(_0x40e0d1,_0x59e179))[_0x784e('0x42')](APIHandleError(_0x40e0d1));};exports[_0x784e('0x43')]=function(_0xe6e087,_0x5321bc){var _0x50fbae={'count':0x0,'rows':[]};var _0x507e5a={};var _0xa20e65;var _0x99d881;var _0x4c637a;Promise[_0x784e('0x44')]()[_0x784e('0x16')](function(){if(_0xe6e087['query'][_0x784e('0x17')]){if(!utils[_0x784e('0x18')](_0xe6e087[_0x784e('0x10')][_0x784e('0x17')])){throw new APIBadRequestError(util[_0x784e('0x19')](_0x784e('0x45'),_0xe6e087[_0x784e('0x10')][_0x784e('0x17')]));}_0xa20e65=_0xe6e087['query'][_0x784e('0x17')][_0x784e('0x1a')]();}var _0x56283c=_[_0x784e('0x46')](_0xa20e65)+_0x784e('0x47');var _0x3bfafc=_[_0x784e('0x26')](db[_0x56283c][_0x784e('0x28')],function(_0x233cbd){return{'name':_0x233cbd[_0x784e('0x29')],'type':_0x233cbd[_0x784e('0x2a')][_0x784e('0x2b')]};});if(!_0xe6e087[_0x784e('0x10')]['fields']){var _0x1b9579=['id',_0x784e('0x48')];if(_0xa20e65==='voice'){_0x1b9579['push'](_0x784e('0x2a'));if(_0xe6e087['query'][_0x784e('0x2a')]==='outbound'){_0x1b9579[_0x784e('0x33')]([_0x784e('0x49'),_0x784e('0x4a')]);}}_0xe6e087[_0x784e('0x10')]['fields']=_0x1b9579['join'](',');}_0x507e5a=qs[_0x784e('0x4b')](_0x3bfafc,_0xe6e087);if(_0xe6e087[_0x784e('0x37')][_0x784e('0x2c')]===_0x784e('0x37')){var _0x16ca17={'params':{'id':_0xe6e087['user']['userProfileId']},'query':{'section':_0xa20e65===_0x784e('0x4c')&&_0xe6e087[_0x784e('0x10')]['type']===_0x784e('0x4d')?_0x784e('0x4e'):_['startCase'](_0xa20e65)+_0x784e('0x4f'),'type':_0xe6e087[_0x784e('0x10')][_0x784e('0x2a')],'nolimit':!![],'sort':_0x784e('0x48'),'filter':_0xe6e087['query']['filter']}};_0x16ca17[_0x784e('0x10')]=Object['assign'](_0x16ca17['query'],_0xe6e087[_0x784e('0x10')]);delete _0x16ca17[_0x784e('0x10')]['id'];return db[_0x784e('0x3b')][_0x784e('0x3c')](_0x16ca17);}return db[_0x56283c][_0x784e('0x50')](_0x507e5a);})[_0x784e('0x16')](function(_0x21a631){_0x50fbae['count']=_0x21a631[_0x784e('0x9')];_0x99d881=_0x21a631[_0x784e('0x24')];return rtq['getRealtimeQueues'](_0xe6e087,_0xa20e65);})['then'](function(_0x5bf567){_0x4c637a=_0x5bf567[_0x784e('0x24')];return rtq[_0x784e('0x51')](_0x99d881,_0x4c637a,_0xa20e65,_0xe6e087[_0x784e('0x10')][_0x784e('0x2a')]);})[_0x784e('0x16')](function(_0x4d28d1){_0x50fbae[_0x784e('0x24')]=_0x4d28d1;return _0x50fbae;})[_0x784e('0x16')](respondWithFilteredResult(_0x5321bc,_0x507e5a))[_0x784e('0x42')](APIHandleError(_0x5321bc));};
\ No newline at end of file
index 5c939e4..6694bf7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x402a6e,_0x520396){var _0x3676de=function(_0x1b2a58){while(--_0x1b2a58){_0x402a6e['push'](_0x402a6e['shift']());}};_0x3676de(++_0x520396);}(_0xe706,0xa3));var _0x6e70=function(_0x912e23,_0x15f457){_0x912e23=_0x912e23-0x0;var _0x453f72=_0xe706[_0x912e23];return _0x453f72;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));module[_0x6e70('0x9')]=router;
\ No newline at end of file
+var _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x13b699,_0x17bf1d){var _0x187de4=function(_0x387c6b){while(--_0x387c6b){_0x13b699['push'](_0x13b699['shift']());}};_0x187de4(++_0x17bf1d);}(_0xe706,0xa3));var _0x6e70=function(_0x67714a,_0x550d17){_0x67714a=_0x67714a-0x0;var _0x468499=_0xe706[_0x67714a];return _0x468499;};'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 85a74fb..6ddfcb8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x74af=['DATE','sequelize','exports','INTEGER','STRING'];(function(_0x1736c7,_0x44bd92){var _0x47934b=function(_0x7fa816){while(--_0x7fa816){_0x1736c7['push'](_0x1736c7['shift']());}};_0x47934b(++_0x44bd92);}(_0x74af,0x178));var _0xf74a=function(_0x447d07,_0x53cad3){_0x447d07=_0x447d07-0x0;var _0x5a1a07=_0x74af[_0x447d07];return _0x5a1a07;};'use strict';var Sequelize=require(_0xf74a('0x0'));module[_0xf74a('0x1')]={'state':{'type':Sequelize[_0xf74a('0x2')](0x2)},'statedesc':{'type':Sequelize[_0xf74a('0x3')]},'scheduledat':{'type':Sequelize[_0xf74a('0x4')]},'uniqueid':{'type':Sequelize[_0xf74a('0x3')]},'starttime':{'type':Sequelize['DATE']},'responsetime':{'type':Sequelize[_0xf74a('0x4')]},'ringtime':{'type':Sequelize[_0xf74a('0x2')],'defaultValue':0x0},'campaign':{'type':Sequelize[_0xf74a('0x3')]},'campaigntype':{'type':Sequelize[_0xf74a('0x3')]},'membername':{'type':Sequelize[_0xf74a('0x3')]}};
\ No newline at end of file
+var _0x282a=['STRING','DATE','exports','INTEGER'];(function(_0x55c9ea,_0xf80189){var _0x59d18e=function(_0x55ec90){while(--_0x55ec90){_0x55c9ea['push'](_0x55c9ea['shift']());}};_0x59d18e(++_0xf80189);}(_0x282a,0xa2));var _0xa282=function(_0x4b7895,_0x3c4f5d){_0x4b7895=_0x4b7895-0x0;var _0x264180=_0x282a[_0x4b7895];return _0x264180;};'use strict';var Sequelize=require('sequelize');module[_0xa282('0x0')]={'state':{'type':Sequelize[_0xa282('0x1')](0x2)},'statedesc':{'type':Sequelize[_0xa282('0x2')]},'scheduledat':{'type':Sequelize[_0xa282('0x3')]},'uniqueid':{'type':Sequelize[_0xa282('0x2')]},'starttime':{'type':Sequelize['DATE']},'responsetime':{'type':Sequelize[_0xa282('0x3')]},'ringtime':{'type':Sequelize[_0xa282('0x1')],'defaultValue':0x0},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize[_0xa282('0x2')]},'membername':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 4aa6701..61ec497 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d68=['path','rimraf','./reportAgentPreview.attributes','exports','define','ReportAgentPreview','report_agent_preview','lodash','util','../../config/logger','moment','bluebird','request-promise'];(function(_0x24106c,_0x367a6f){var _0xbaeb73=function(_0x483603){while(--_0x483603){_0x24106c['push'](_0x24106c['shift']());}};_0xbaeb73(++_0x367a6f);}(_0x7d68,0x6f));var _0x87d6=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7d68[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x87d6('0x0'));var util=require(_0x87d6('0x1'));var logger=require(_0x87d6('0x2'))('api');var moment=require(_0x87d6('0x3'));var BPromise=require(_0x87d6('0x4'));var rp=require(_0x87d6('0x5'));var fs=require('fs');var path=require(_0x87d6('0x6'));var rimraf=require(_0x87d6('0x7'));var config=require('../../config/environment');var attributes=require(_0x87d6('0x8'));module[_0x87d6('0x9')]=function(_0x527db9,_0x204429){return _0x527db9[_0x87d6('0xa')](_0x87d6('0xb'),attributes,{'tableName':_0x87d6('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbb12=['../../config/logger','api','moment','bluebird','rimraf','../../config/environment','exports','define','ReportAgentPreview','report_agent_preview','util'];(function(_0x38c1a2,_0x35185a){var _0x5ad451=function(_0x56dc63){while(--_0x56dc63){_0x38c1a2['push'](_0x38c1a2['shift']());}};_0x5ad451(++_0x35185a);}(_0xbb12,0x8e));var _0x2bb1=function(_0x4b897e,_0x135f9c){_0x4b897e=_0x4b897e-0x0;var _0x36b75d=_0xbb12[_0x4b897e];return _0x36b75d;};'use strict';var _=require('lodash');var util=require(_0x2bb1('0x0'));var logger=require(_0x2bb1('0x1'))(_0x2bb1('0x2'));var moment=require(_0x2bb1('0x3'));var BPromise=require(_0x2bb1('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x2bb1('0x5'));var config=require(_0x2bb1('0x6'));var attributes=require('./reportAgentPreview.attributes');module[_0x2bb1('0x7')]=function(_0xd07cbf,_0x562538){return _0xd07cbf[_0x2bb1('0x8')](_0x2bb1('0x9'),attributes,{'tableName':_0x2bb1('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3d681cc..c06f0a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f1e=['ReportAgentPreview,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateReportAgentPreview','ReportAgentPreview','create','body','options','raw','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','request','then','info','ReportAgentPreview,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x46948a,_0x14de36){var _0x474c3d=function(_0x57785f){while(--_0x57785f){_0x46948a['push'](_0x46948a['shift']());}};_0x474c3d(++_0x14de36);}(_0x5f1e,0x1cf));var _0xe5f1=function(_0x19a678,_0x32ce30){_0x19a678=_0x19a678-0x0;var _0xde64df=_0x5f1e[_0x19a678];return _0xde64df;};'use strict';var _=require(_0xe5f1('0x0'));var util=require('util');var moment=require(_0xe5f1('0x1'));var BPromise=require(_0xe5f1('0x2'));var rs=require(_0xe5f1('0x3'));var fs=require('fs');var Redis=require(_0xe5f1('0x4'));var db=require(_0xe5f1('0x5'))['db'];var utils=require(_0xe5f1('0x6'));var logger=require('../../config/logger')(_0xe5f1('0x7'));var config=require(_0xe5f1('0x8'));var jayson=require(_0xe5f1('0x9'));var client=jayson[_0xe5f1('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x34c583,_0x48719f,_0x228eb1){return new BPromise(function(_0x37a34e,_0x287d9f){return client[_0xe5f1('0xb')](_0x34c583,_0x228eb1)[_0xe5f1('0xc')](function(_0x432e9a){logger[_0xe5f1('0xd')](_0xe5f1('0xe'),_0x48719f,_0xe5f1('0xf'));logger[_0xe5f1('0x10')](_0xe5f1('0x11'),_0x48719f,_0xe5f1('0xf'),JSON[_0xe5f1('0x12')](_0x432e9a));if(_0x432e9a[_0xe5f1('0x13')]){if(_0x432e9a[_0xe5f1('0x13')][_0xe5f1('0x14')]===0x1f4){logger['error'](_0xe5f1('0xe'),_0x48719f,_0x432e9a[_0xe5f1('0x13')]['message']);return _0x287d9f(_0x432e9a[_0xe5f1('0x13')][_0xe5f1('0x15')]);}logger[_0xe5f1('0x13')]('ReportAgentPreview,\x20%s,\x20%s',_0x48719f,_0x432e9a[_0xe5f1('0x13')][_0xe5f1('0x15')]);return _0x37a34e(_0x432e9a[_0xe5f1('0x13')][_0xe5f1('0x15')]);}else{logger[_0xe5f1('0xd')]('ReportAgentPreview,\x20%s,\x20%s',_0x48719f,'request\x20sent');_0x37a34e(_0x432e9a[_0xe5f1('0x16')][_0xe5f1('0x15')]);}})[_0xe5f1('0x17')](function(_0x401a44){logger[_0xe5f1('0x13')](_0xe5f1('0xe'),_0x48719f,_0x401a44);_0x287d9f(_0x401a44);});});}exports[_0xe5f1('0x18')]=function(_0x4ee111){var _0x2063e6=this;return new Promise(function(_0x4be461,_0x438952){return db[_0xe5f1('0x19')][_0xe5f1('0x1a')](_0x4ee111[_0xe5f1('0x1b')],{'raw':_0x4ee111['options']?_0x4ee111[_0xe5f1('0x1c')][_0xe5f1('0x1d')]===undefined?!![]:![]:!![]})[_0xe5f1('0xc')](function(_0x2cca45){logger['info'](_0xe5f1('0x18'),_0x4ee111);logger[_0xe5f1('0x10')](_0xe5f1('0x18'),_0x4ee111,JSON[_0xe5f1('0x12')](_0x2cca45));_0x4be461(_0x2cca45);})['catch'](function(_0x39bd51){logger['error'](_0xe5f1('0x18'),_0x39bd51[_0xe5f1('0x15')],_0x4ee111);_0x438952(_0x2063e6[_0xe5f1('0x13')](0x1f4,_0x39bd51[_0xe5f1('0x15')]));});});};
\ No newline at end of file
+var _0xf63a=['catch','CreateReportAgentPreview','create','body','options','raw','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','ReportAgentPreview,\x20%s,\x20%s','request\x20sent','debug','ReportAgentPreview,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result'];(function(_0x596c43,_0x31d5fe){var _0x11353a=function(_0xa4015f){while(--_0xa4015f){_0x596c43['push'](_0x596c43['shift']());}};_0x11353a(++_0x31d5fe);}(_0xf63a,0x1d6));var _0xaf63=function(_0x5de505,_0xee5804){_0x5de505=_0x5de505-0x0;var _0x1df98e=_0xf63a[_0x5de505];return _0x1df98e;};'use strict';var _=require(_0xaf63('0x0'));var util=require('util');var moment=require(_0xaf63('0x1'));var BPromise=require(_0xaf63('0x2'));var rs=require(_0xaf63('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xaf63('0x4'))['db'];var utils=require(_0xaf63('0x5'));var logger=require('../../config/logger')(_0xaf63('0x6'));var config=require(_0xaf63('0x7'));var jayson=require(_0xaf63('0x8'));var client=jayson[_0xaf63('0x9')][_0xaf63('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x12ba81,_0x19b1d5,_0x11ca62){return new BPromise(function(_0x5a1710,_0x514f15){return client[_0xaf63('0xb')](_0x12ba81,_0x11ca62)[_0xaf63('0xc')](function(_0x196785){logger['info'](_0xaf63('0xd'),_0x19b1d5,_0xaf63('0xe'));logger[_0xaf63('0xf')](_0xaf63('0x10'),_0x19b1d5,'request\x20sent',JSON[_0xaf63('0x11')](_0x196785));if(_0x196785[_0xaf63('0x12')]){if(_0x196785[_0xaf63('0x12')][_0xaf63('0x13')]===0x1f4){logger[_0xaf63('0x12')](_0xaf63('0xd'),_0x19b1d5,_0x196785['error']['message']);return _0x514f15(_0x196785[_0xaf63('0x12')][_0xaf63('0x14')]);}logger[_0xaf63('0x12')](_0xaf63('0xd'),_0x19b1d5,_0x196785[_0xaf63('0x12')][_0xaf63('0x14')]);return _0x5a1710(_0x196785[_0xaf63('0x12')][_0xaf63('0x14')]);}else{logger[_0xaf63('0x15')](_0xaf63('0xd'),_0x19b1d5,'request\x20sent');_0x5a1710(_0x196785[_0xaf63('0x16')][_0xaf63('0x14')]);}})[_0xaf63('0x17')](function(_0x1aeb95){logger[_0xaf63('0x12')](_0xaf63('0xd'),_0x19b1d5,_0x1aeb95);_0x514f15(_0x1aeb95);});});}exports[_0xaf63('0x18')]=function(_0x327acf){var _0xcee02f=this;return new Promise(function(_0x349880,_0x575583){return db['ReportAgentPreview'][_0xaf63('0x19')](_0x327acf[_0xaf63('0x1a')],{'raw':_0x327acf['options']?_0x327acf[_0xaf63('0x1b')][_0xaf63('0x1c')]===undefined?!![]:![]:!![]})[_0xaf63('0xc')](function(_0x53dfc6){logger[_0xaf63('0x15')](_0xaf63('0x18'),_0x327acf);logger[_0xaf63('0xf')](_0xaf63('0x18'),_0x327acf,JSON[_0xaf63('0x11')](_0x53dfc6));_0x349880(_0x53dfc6);})[_0xaf63('0x17')](function(_0x2452cd){logger[_0xaf63('0x12')](_0xaf63('0x18'),_0x2452cd['message'],_0x327acf);_0x575583(_0xcee02f[_0xaf63('0x12')](0x1f4,_0x2452cd[_0xaf63('0x14')]));});});};
\ No newline at end of file
index ca1f893..2407f1a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda8e=['path','express','Router','./rpc.controller','get','isAuthenticated','voiceChannels','/voice/channels/:uniqueid/mixmonitor','voiceChannelMixMonitor','/voice/channels/:uniqueid/stopmixmonitor','voiceChannelStopMixMonitor','voiceQueues','/chat/queues','chatQueues','/mail/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','showVoiceQueues','put','/voice/queues/:id','updateVoiceQueue','/outbound','outbound','/outbound/channels','/agents','agents','/agents/:id/capacity','agentCapacity','/telephones','telephones','/trunks','trunks','/campaigns','campaigns','faxAccounts','/mail/queues/waitinginteractions','mailQueuesWaitingInteractions','/openchannel/queues/waitinginteractions','openchannelQueuesWaitingInteractions','/openchannel/queues/:id/waitinginteractions','openchannelQueuesIdWaitingInteractions','/whatsapp/queues/waitinginteractions','/fax/queues/waitinginteractions','faxQueuesWaitingInteractions','post','/mail/queues/:id/notify','queueNotify','mail','/mail/queues/:id','showMailQueues','/chat/queues/:id/notify','chat','showChatQueues','/fax/queues/:id/notify','/fax/queues/:id','showFaxQueues','/openchannel/queues/:id/notify','showOpenchannelQueues','/sms/queues/:id/notify','/whatsapp/queues/:id/notify','whatsapp','/sms/queues/:id','showSmsQueues','/whatsapp/queues/:id','/agents/:id/notify','agentNotify','exports'];(function(_0x3b6825,_0xd49210){var _0x25421a=function(_0x40589f){while(--_0x40589f){_0x3b6825['push'](_0x3b6825['shift']());}};_0x25421a(++_0xd49210);}(_0xda8e,0xa8));var _0xeda8=function(_0x541ea6,_0x51cab6){_0x541ea6=_0x541ea6-0x0;var _0x3c3e84=_0xda8e[_0x541ea6];return _0x3c3e84;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xeda8('0x0'));var express=require(_0xeda8('0x1'));var router=express[_0xeda8('0x2')]();var auth=require('../../components/auth/service');var controller=require(_0xeda8('0x3'));router[_0xeda8('0x4')]('/voice/channels',auth[_0xeda8('0x5')](),controller[_0xeda8('0x6')]);router['get'](_0xeda8('0x7'),auth['isAuthenticated'](),controller[_0xeda8('0x8')]);router[_0xeda8('0x4')](_0xeda8('0x9'),auth['isAuthenticated'](),controller[_0xeda8('0xa')]);router[_0xeda8('0x4')]('/voice/queues',auth[_0xeda8('0x5')](),controller[_0xeda8('0xb')]);router[_0xeda8('0x4')](_0xeda8('0xc'),auth[_0xeda8('0x5')](),controller[_0xeda8('0xd')]);router[_0xeda8('0x4')](_0xeda8('0xe'),auth[_0xeda8('0x5')](),controller[_0xeda8('0xf')]);router[_0xeda8('0x4')](_0xeda8('0x10'),auth[_0xeda8('0x5')](),controller[_0xeda8('0x11')]);router['get'](_0xeda8('0x12'),auth[_0xeda8('0x5')](),controller[_0xeda8('0x13')]);router[_0xeda8('0x4')](_0xeda8('0x14'),auth['isAuthenticated'](),controller[_0xeda8('0x15')]);router['get'](_0xeda8('0x16'),auth[_0xeda8('0x5')](),controller[_0xeda8('0x17')]);router[_0xeda8('0x4')](_0xeda8('0x18'),auth[_0xeda8('0x5')](),controller['faxQueues']);router[_0xeda8('0x4')](_0xeda8('0x19'),auth[_0xeda8('0x5')](),controller[_0xeda8('0x1a')]);router[_0xeda8('0x4')](_0xeda8('0x1b'),auth[_0xeda8('0x5')](),controller[_0xeda8('0x1c')]);router['get'](_0xeda8('0x1d'),auth['isAuthenticated'](),controller[_0xeda8('0x1e')]);router[_0xeda8('0x4')]('/voice/queues/channels/:uniqueid/hangup',auth[_0xeda8('0x5')](),controller[_0xeda8('0x1f')]);router[_0xeda8('0x4')](_0xeda8('0x20'),auth[_0xeda8('0x5')](),controller[_0xeda8('0x21')]);router['get']('/voice/queues/:id',auth[_0xeda8('0x5')](),controller[_0xeda8('0x22')]);router[_0xeda8('0x23')](_0xeda8('0x24'),auth[_0xeda8('0x5')](),controller[_0xeda8('0x25')]);router[_0xeda8('0x4')](_0xeda8('0x26'),auth[_0xeda8('0x5')](),controller[_0xeda8('0x27')]);router[_0xeda8('0x4')](_0xeda8('0x28'),auth[_0xeda8('0x5')](),controller['outboundChannels']);router[_0xeda8('0x4')](_0xeda8('0x29'),auth[_0xeda8('0x5')](),controller[_0xeda8('0x2a')]);router['put'](_0xeda8('0x2b'),auth['isAuthenticated'](),controller[_0xeda8('0x2c')]);router[_0xeda8('0x4')](_0xeda8('0x2d'),auth[_0xeda8('0x5')](),controller[_0xeda8('0x2e')]);router[_0xeda8('0x4')](_0xeda8('0x2f'),auth['isAuthenticated'](),controller[_0xeda8('0x30')]);router[_0xeda8('0x4')](_0xeda8('0x31'),auth[_0xeda8('0x5')](),controller[_0xeda8('0x32')]);router[_0xeda8('0x4')]('/fax/accounts',auth[_0xeda8('0x5')](),controller[_0xeda8('0x33')]);router[_0xeda8('0x4')]('/chat/queues/waitinginteractions',auth['isAuthenticated'](),controller['chatQueuesWaitingInteractions']);router[_0xeda8('0x4')](_0xeda8('0x34'),auth[_0xeda8('0x5')](),controller[_0xeda8('0x35')]);router[_0xeda8('0x4')](_0xeda8('0x36'),auth['isAuthenticated'](),controller[_0xeda8('0x37')]);router['get'](_0xeda8('0x38'),auth[_0xeda8('0x5')](),controller[_0xeda8('0x39')]);router[_0xeda8('0x4')]('/sms/queues/waitinginteractions',auth[_0xeda8('0x5')](),controller['smsQueuesWaitingInteractions']);router[_0xeda8('0x4')](_0xeda8('0x3a'),auth[_0xeda8('0x5')](),controller['whatsappQueuesWaitingInteractions']);router[_0xeda8('0x4')](_0xeda8('0x3b'),auth['isAuthenticated'](),controller[_0xeda8('0x3c')]);router[_0xeda8('0x3d')](_0xeda8('0x3e'),auth['isAuthenticated'](),controller[_0xeda8('0x3f')](_0xeda8('0x40')));router[_0xeda8('0x4')](_0xeda8('0x41'),auth['isAuthenticated'](),controller[_0xeda8('0x42')]);router[_0xeda8('0x3d')](_0xeda8('0x43'),auth['isAuthenticated'](),controller[_0xeda8('0x3f')](_0xeda8('0x44')));router['get']('/chat/queues/:id',auth[_0xeda8('0x5')](),controller[_0xeda8('0x45')]);router[_0xeda8('0x3d')](_0xeda8('0x46'),auth[_0xeda8('0x5')](),controller[_0xeda8('0x3f')]('fax'));router[_0xeda8('0x4')](_0xeda8('0x47'),auth[_0xeda8('0x5')](),controller[_0xeda8('0x48')]);router[_0xeda8('0x3d')](_0xeda8('0x49'),auth[_0xeda8('0x5')](),controller[_0xeda8('0x3f')]('openchannel'));router[_0xeda8('0x4')]('/openchannel/queues/:id',auth[_0xeda8('0x5')](),controller[_0xeda8('0x4a')]);router[_0xeda8('0x3d')](_0xeda8('0x4b'),auth[_0xeda8('0x5')](),controller[_0xeda8('0x3f')]('sms'));router[_0xeda8('0x3d')](_0xeda8('0x4c'),auth['isAuthenticated'](),controller['queueNotify'](_0xeda8('0x4d')));router[_0xeda8('0x4')](_0xeda8('0x4e'),auth['isAuthenticated'](),controller[_0xeda8('0x4f')]);router[_0xeda8('0x4')](_0xeda8('0x50'),auth[_0xeda8('0x5')](),controller['showWhatsappQueues']);router['post'](_0xeda8('0x51'),auth['isAuthenticated'](),controller[_0xeda8('0x52')]);module[_0xeda8('0x53')]=router;
\ No newline at end of file
+var _0x76f6=['/mail/queues/waitinginteractions','mailQueuesWaitingInteractions','openchannelQueuesIdWaitingInteractions','/sms/queues/waitinginteractions','smsQueuesWaitingInteractions','/whatsapp/queues/waitinginteractions','/fax/queues/waitinginteractions','faxQueuesWaitingInteractions','post','/mail/queues/:id/notify','queueNotify','mail','/mail/queues/:id','showMailQueues','/chat/queues/:id/notify','chat','/chat/queues/:id','showChatQueues','/fax/queues/:id/notify','/fax/queues/:id','showFaxQueues','/openchannel/queues/:id/notify','openchannel','/openchannel/queues/:id','showOpenchannelQueues','/sms/queues/:id/notify','/whatsapp/queues/:id/notify','whatsapp','/sms/queues/:id','showWhatsappQueues','/agents/:id/notify','multer','path','express','../../components/auth/service','./rpc.controller','get','voiceChannels','/voice/channels/:uniqueid/mixmonitor','isAuthenticated','voiceChannelMixMonitor','/voice/channels/:uniqueid/stopmixmonitor','voiceChannelStopMixMonitor','/voice/queues','/chat/queues','chatQueues','/mail/queues','mailQueues','/mail/accounts','/openchannel/queues','openchannelQueues','smsQueues','/whatsapp/queues','whatsappQueues','/fax/queues','faxQueues','/voice/queues/preview/:id','voiceQueuesPreview','/voice/queues/channels','voiceQueuesChannels','/voice/queues/channels/:uniqueid','voiceQueuesChannel','/voice/queues/channels/:uniqueid/hangup','voiceQueuesChannelRedirect','/voice/queues/:id','showVoiceQueues','put','updateVoiceQueue','/outbound','outbound','outboundChannels','/agents','agents','/telephones','telephones','trunks','campaigns','faxAccounts','/chat/queues/waitinginteractions','chatQueuesWaitingInteractions'];(function(_0x526fbf,_0x39200a){var _0x2c7304=function(_0x268923){while(--_0x268923){_0x526fbf['push'](_0x526fbf['shift']());}};_0x2c7304(++_0x39200a);}(_0x76f6,0x6f));var _0x676f=function(_0x36ed48,_0x1ee0d4){_0x36ed48=_0x36ed48-0x0;var _0x51c63a=_0x76f6[_0x36ed48];return _0x51c63a;};'use strict';var multer=require(_0x676f('0x0'));var util=require('util');var path=require(_0x676f('0x1'));var express=require(_0x676f('0x2'));var router=express['Router']();var auth=require(_0x676f('0x3'));var controller=require(_0x676f('0x4'));router[_0x676f('0x5')]('/voice/channels',auth['isAuthenticated'](),controller[_0x676f('0x6')]);router[_0x676f('0x5')](_0x676f('0x7'),auth[_0x676f('0x8')](),controller[_0x676f('0x9')]);router[_0x676f('0x5')](_0x676f('0xa'),auth[_0x676f('0x8')](),controller[_0x676f('0xb')]);router[_0x676f('0x5')](_0x676f('0xc'),auth[_0x676f('0x8')](),controller['voiceQueues']);router[_0x676f('0x5')](_0x676f('0xd'),auth['isAuthenticated'](),controller[_0x676f('0xe')]);router[_0x676f('0x5')](_0x676f('0xf'),auth[_0x676f('0x8')](),controller[_0x676f('0x10')]);router['get'](_0x676f('0x11'),auth[_0x676f('0x8')](),controller['mailAccounts']);router[_0x676f('0x5')](_0x676f('0x12'),auth[_0x676f('0x8')](),controller[_0x676f('0x13')]);router[_0x676f('0x5')]('/sms/queues',auth[_0x676f('0x8')](),controller[_0x676f('0x14')]);router['get'](_0x676f('0x15'),auth[_0x676f('0x8')](),controller[_0x676f('0x16')]);router[_0x676f('0x5')](_0x676f('0x17'),auth[_0x676f('0x8')](),controller[_0x676f('0x18')]);router[_0x676f('0x5')](_0x676f('0x19'),auth['isAuthenticated'](),controller[_0x676f('0x1a')]);router[_0x676f('0x5')](_0x676f('0x1b'),auth[_0x676f('0x8')](),controller[_0x676f('0x1c')]);router[_0x676f('0x5')](_0x676f('0x1d'),auth['isAuthenticated'](),controller[_0x676f('0x1e')]);router[_0x676f('0x5')](_0x676f('0x1f'),auth['isAuthenticated'](),controller['voiceQueuesChannelHangup']);router['get']('/voice/queues/channels/:uniqueid/redirect/:exten',auth[_0x676f('0x8')](),controller[_0x676f('0x20')]);router[_0x676f('0x5')](_0x676f('0x21'),auth[_0x676f('0x8')](),controller[_0x676f('0x22')]);router[_0x676f('0x23')](_0x676f('0x21'),auth['isAuthenticated'](),controller[_0x676f('0x24')]);router['get'](_0x676f('0x25'),auth[_0x676f('0x8')](),controller[_0x676f('0x26')]);router[_0x676f('0x5')]('/outbound/channels',auth['isAuthenticated'](),controller[_0x676f('0x27')]);router[_0x676f('0x5')](_0x676f('0x28'),auth[_0x676f('0x8')](),controller[_0x676f('0x29')]);router['put']('/agents/:id/capacity',auth[_0x676f('0x8')](),controller['agentCapacity']);router['get'](_0x676f('0x2a'),auth[_0x676f('0x8')](),controller[_0x676f('0x2b')]);router[_0x676f('0x5')]('/trunks',auth[_0x676f('0x8')](),controller[_0x676f('0x2c')]);router['get']('/campaigns',auth[_0x676f('0x8')](),controller[_0x676f('0x2d')]);router['get']('/fax/accounts',auth[_0x676f('0x8')](),controller[_0x676f('0x2e')]);router['get'](_0x676f('0x2f'),auth[_0x676f('0x8')](),controller[_0x676f('0x30')]);router[_0x676f('0x5')](_0x676f('0x31'),auth[_0x676f('0x8')](),controller[_0x676f('0x32')]);router[_0x676f('0x5')]('/openchannel/queues/waitinginteractions',auth['isAuthenticated'](),controller['openchannelQueuesWaitingInteractions']);router[_0x676f('0x5')]('/openchannel/queues/:id/waitinginteractions',auth[_0x676f('0x8')](),controller[_0x676f('0x33')]);router[_0x676f('0x5')](_0x676f('0x34'),auth['isAuthenticated'](),controller[_0x676f('0x35')]);router[_0x676f('0x5')](_0x676f('0x36'),auth['isAuthenticated'](),controller['whatsappQueuesWaitingInteractions']);router[_0x676f('0x5')](_0x676f('0x37'),auth[_0x676f('0x8')](),controller[_0x676f('0x38')]);router[_0x676f('0x39')](_0x676f('0x3a'),auth['isAuthenticated'](),controller[_0x676f('0x3b')](_0x676f('0x3c')));router['get'](_0x676f('0x3d'),auth[_0x676f('0x8')](),controller[_0x676f('0x3e')]);router['post'](_0x676f('0x3f'),auth[_0x676f('0x8')](),controller['queueNotify'](_0x676f('0x40')));router[_0x676f('0x5')](_0x676f('0x41'),auth['isAuthenticated'](),controller[_0x676f('0x42')]);router['post'](_0x676f('0x43'),auth[_0x676f('0x8')](),controller[_0x676f('0x3b')]('fax'));router['get'](_0x676f('0x44'),auth[_0x676f('0x8')](),controller[_0x676f('0x45')]);router[_0x676f('0x39')](_0x676f('0x46'),auth[_0x676f('0x8')](),controller['queueNotify'](_0x676f('0x47')));router[_0x676f('0x5')](_0x676f('0x48'),auth[_0x676f('0x8')](),controller[_0x676f('0x49')]);router[_0x676f('0x39')](_0x676f('0x4a'),auth['isAuthenticated'](),controller['queueNotify']('sms'));router['post'](_0x676f('0x4b'),auth[_0x676f('0x8')](),controller[_0x676f('0x3b')](_0x676f('0x4c')));router[_0x676f('0x5')](_0x676f('0x4d'),auth[_0x676f('0x8')](),controller['showSmsQueues']);router['get']('/whatsapp/queues/:id',auth['isAuthenticated'](),controller[_0x676f('0x4e')]);router[_0x676f('0x39')](_0x676f('0x4f'),auth[_0x676f('0x8')](),controller['agentNotify']);module['exports']=router;
\ No newline at end of file
index 974996a..57b8866 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fd1=['findOrCreate','SIP/%s','interface','agent','internal','AgentCapacity','telephones','Telephones','trunks','Trunks','campaigns','Campaigns','chatQueues','ChatQueues','showChatQueues','mailQueues','MailQueues','showMailQueues','MailAccounts','OpenchannelQueues','showOpenchannelQueues','smsQueues','showSmsQueues','whatsappQueues','WhatsappQueues','faxQueues','showFaxQueues','FaxQueues','FaxAccounts','chatQueuesWaitingInteractions','ChatQueuesWaitingInteractions','mailQueuesWaitingInteractions','MailQueuesWaitingInteractions','OpenchannelQueuesWaitingInteractions','openchannelQueuesIdWaitingInteractions','type','filter','map','queue_id','uniq','value','indexOf','smsQueuesWaitingInteractions','SmsQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','WhatsappQueuesWaitingInteractions','faxQueuesWaitingInteractions','FaxQueuesWaitingInteractions','queueNotify','capitalize','chat','Website','Account','Queue','findOne','\x20Queue\x20not\x20found','Message','messageId','Interaction','\x20Message\x20not\x20found','update','queue','InteractionId','From','QueueId','TransferReport','create','Start','queueTransferTimeout','*,*,*,*','agentNotify','channel','Channel\x20field\x20is\x20mandatory','User','Agent\x20not\x20found','MessageId','agentTransferTimeout','bluebird','lodash','util','../../mysqldb','jayson/promise','client','http','then','error','message','result','catch','status','stack','name','send','isNil','find','rows','VoiceChannels','query','voiceChannelMixMonitor','VoiceChannelMixMonitor','merge','voiceChannelStopMixMonitor','VoiceChannelStopMixMonitor','params','VoiceQueues','showVoiceQueues','updateVoiceQueue','UpdateVoiceQueue','body','voiceQueuesPreview','VoiceQueuesPreview','voiceQueuesChannels','VoiceQueuesChannels','voiceQueuesChannel','VoiceQueuesChannel','voiceQueuesChannelHangup','VoiceQueuesChannelHangup','VoiceQueuesChannelRedirect','Outbound','OutboundChannels','agents','Agents','agentCapacity','interaction','user','MemberReport','findAll','INTERACTION','format','YYYY-MM-DD\x20HH:mm:ss','length','updateAttributes'];(function(_0x16df8f,_0x3dbe15){var _0x56ffee=function(_0x23aa44){while(--_0x23aa44){_0x16df8f['push'](_0x16df8f['shift']());}};_0x56ffee(++_0x3dbe15);}(_0x5fd1,0x155));var _0x15fd=function(_0x14beba,_0xa2c951){_0x14beba=_0x14beba-0x0;var _0x3b97fe=_0x5fd1[_0x14beba];return _0x3b97fe;};'use strict';var BPromise=require(_0x15fd('0x0'));var moment=require('moment');var _=require(_0x15fd('0x1'));var util=require(_0x15fd('0x2'));var db=require(_0x15fd('0x3'))['db'];var logger=require('../../config/logger')('api');var jayson=require(_0x15fd('0x4'));var amiClient=jayson[_0x15fd('0x5')][_0x15fd('0x6')]({'port':0x232a});var mailClient=jayson['client'][_0x15fd('0x6')]({'port':0x232b});var routingClient=jayson[_0x15fd('0x5')][_0x15fd('0x6')]({'port':0x232c});function respondWithRpcPromise(_0x2e88bf,_0x225728,_0x534e63){return new BPromise(function(_0x210e90,_0x1ee117){var _0x19806f=_0x534e63?_0x534e63:amiClient;return _0x19806f['request'](_0x2e88bf,_0x225728)[_0x15fd('0x7')](function(_0x5c9c63){if(_0x5c9c63[_0x15fd('0x8')]){if(_0x5c9c63[_0x15fd('0x8')]['code']===0x1f4){return _0x1ee117(_0x5c9c63['error']['message']);}return _0x210e90(_0x5c9c63[_0x15fd('0x8')][_0x15fd('0x9')]);}else{_0x210e90(_0x5c9c63[_0x15fd('0xa')]);}})[_0x15fd('0xb')](function(_0x311138){_0x1ee117(_0x311138);});});}function respondWithResult(_0x2e18ec,_0x346ab1){_0x346ab1=_0x346ab1||0xc8;return function(_0x2660db){if(_0x2660db){return _0x2e18ec[_0x15fd('0xc')](_0x346ab1)['json'](_0x2660db);}return _0x2e18ec['sendStatus'](0x194);};}function handleError(_0x5784a3,_0x3fda60){_0x3fda60=_0x3fda60||0x1f4;return function(_0x135a15){logger[_0x15fd('0x8')](_0x135a15[_0x15fd('0xd')]);if(_0x135a15[_0x15fd('0xe')]){delete _0x135a15[_0x15fd('0xe')];}_0x5784a3[_0x15fd('0xc')](_0x3fda60)[_0x15fd('0xf')](_0x135a15);};}function findById(_0x5aae13){return function(_0x4c7080){if(!_[_0x15fd('0x10')](_0x5aae13)&&!_['isNil'](_0x4c7080)&&!_[_0x15fd('0x10')](_0x4c7080['rows'])){return _[_0x15fd('0x11')](_0x4c7080[_0x15fd('0x12')],function(_0x855bae){return _0x855bae['id']==_0x5aae13;});}return null;};}exports['voiceChannels']=function(_0x367c36,_0x2ad0de){return respondWithRpcPromise(_0x15fd('0x13'),_0x367c36[_0x15fd('0x14')])[_0x15fd('0x7')](respondWithResult(_0x2ad0de,null))[_0x15fd('0xb')](handleError(_0x2ad0de,null));};exports[_0x15fd('0x15')]=function(_0x2f46f1,_0x1b8b9f){return respondWithRpcPromise(_0x15fd('0x16'),_[_0x15fd('0x17')](_0x2f46f1['query'],_0x2f46f1['params']))[_0x15fd('0x7')](respondWithResult(_0x1b8b9f,null))[_0x15fd('0xb')](handleError(_0x1b8b9f,null));};exports[_0x15fd('0x18')]=function(_0x118a2b,_0x24bdaf){return respondWithRpcPromise(_0x15fd('0x19'),_[_0x15fd('0x17')](_0x118a2b['query'],_0x118a2b[_0x15fd('0x1a')]))[_0x15fd('0x7')](respondWithResult(_0x24bdaf,null))[_0x15fd('0xb')](handleError(_0x24bdaf,null));};exports['voiceQueues']=function(_0x27528f,_0x49062f){return respondWithRpcPromise(_0x15fd('0x1b'),_0x27528f[_0x15fd('0x14')])[_0x15fd('0x7')](respondWithResult(_0x49062f,null))['catch'](handleError(_0x49062f,null));};exports[_0x15fd('0x1c')]=function(_0x1cbf2c,_0x24c541){return respondWithRpcPromise('VoiceQueues',_0x1cbf2c[_0x15fd('0x14')])['then'](findById(_0x1cbf2c[_0x15fd('0x1a')]['id']))[_0x15fd('0x7')](respondWithResult(_0x24c541,null))[_0x15fd('0xb')](handleError(_0x24c541,null));};exports[_0x15fd('0x1d')]=function(_0x233ed3,_0x6c213b){return respondWithRpcPromise(_0x15fd('0x1e'),_[_0x15fd('0x17')](_0x233ed3[_0x15fd('0x1f')],_0x233ed3[_0x15fd('0x1a')]))[_0x15fd('0x7')](respondWithResult(_0x6c213b,null))['catch'](handleError(_0x6c213b,null));};exports[_0x15fd('0x20')]=function(_0x2fe61e,_0x50381a){return respondWithRpcPromise(_0x15fd('0x21'),_[_0x15fd('0x17')](_0x2fe61e['query'],_0x2fe61e[_0x15fd('0x1a')]))[_0x15fd('0x7')](respondWithResult(_0x50381a,null))['catch'](handleError(_0x50381a,null));};exports[_0x15fd('0x22')]=function(_0x199647,_0x582af2){return respondWithRpcPromise(_0x15fd('0x23'),_0x199647[_0x15fd('0x14')])[_0x15fd('0x7')](respondWithResult(_0x582af2,null))['catch'](handleError(_0x582af2,null));};exports[_0x15fd('0x24')]=function(_0x7ac52b,_0x4228ea){return respondWithRpcPromise(_0x15fd('0x25'),_['merge'](_0x7ac52b[_0x15fd('0x14')],_0x7ac52b[_0x15fd('0x1a')]))[_0x15fd('0x7')](respondWithResult(_0x4228ea,null))[_0x15fd('0xb')](handleError(_0x4228ea,null));};exports[_0x15fd('0x26')]=function(_0x296a0c,_0x4d9ff5){return respondWithRpcPromise(_0x15fd('0x27'),_[_0x15fd('0x17')](_0x296a0c['query'],_0x296a0c[_0x15fd('0x1a')]))[_0x15fd('0x7')](respondWithResult(_0x4d9ff5,null))[_0x15fd('0xb')](handleError(_0x4d9ff5,null));};exports['voiceQueuesChannelRedirect']=function(_0x25d34e,_0x309851){return respondWithRpcPromise(_0x15fd('0x28'),_[_0x15fd('0x17')](_0x25d34e[_0x15fd('0x14')],_0x25d34e[_0x15fd('0x1a')]))['then'](respondWithResult(_0x309851,null))['catch'](handleError(_0x309851,null));};exports['outbound']=function(_0x340d17,_0x289710){return respondWithRpcPromise(_0x15fd('0x29'),_0x340d17['query'])['then'](respondWithResult(_0x289710,null))[_0x15fd('0xb')](handleError(_0x289710,null));};exports['outboundChannels']=function(_0x4f1c84,_0x4c1aa8){return respondWithRpcPromise(_0x15fd('0x2a'),_0x4f1c84[_0x15fd('0x14')])[_0x15fd('0x7')](respondWithResult(_0x4c1aa8,null))['catch'](handleError(_0x4c1aa8,null));};exports[_0x15fd('0x2b')]=function(_0x3a10e2,_0xd85d3e){var _0x5beb6e;return respondWithRpcPromise(_0x15fd('0x2c'),_0x3a10e2[_0x15fd('0x14')])[_0x15fd('0x7')](function(_0xe18038){_0x5beb6e=_0xe18038;return respondWithRpcPromise(_0x15fd('0x2c'),_0x3a10e2[_0x15fd('0x14')],routingClient);})[_0x15fd('0x7')](function(_0x12a894){return _[_0x15fd('0x17')]({},_0x12a894,_0x5beb6e);})['then'](respondWithResult(_0xd85d3e,null))[_0x15fd('0xb')](handleError(_0xd85d3e,null));};exports[_0x15fd('0x2d')]=function(_0x180433,_0x304736){if(_0x180433[_0x15fd('0x1f')]&&_0x180433[_0x15fd('0x1f')][_0x15fd('0x2e')]&&_0x180433[_0x15fd('0x2f')]&&_0x180433[_0x15fd('0x2f')][_0x15fd('0xe')]){for(var _0x2eb6b6 in _0x180433[_0x15fd('0x1f')][_0x15fd('0x2e')]){if(_0x180433[_0x15fd('0x1f')][_0x15fd('0x2e')]['hasOwnProperty'](_0x2eb6b6)){db[_0x15fd('0x30')][_0x15fd('0x31')]({'where':{'channel':_0x2eb6b6,'membername':_0x180433[_0x15fd('0x2f')][_0x15fd('0xe')],'type':_0x15fd('0x32'),'exitAt':null,'uniqueid':_0x180433[_0x15fd('0x1f')][_0x15fd('0x2e')][_0x2eb6b6]&&_0x180433[_0x15fd('0x1f')]['interaction'][_0x2eb6b6]['length']?{'$notIn':_0x180433[_0x15fd('0x1f')]['interaction'][_0x2eb6b6]}:{'$ne':null}}})[_0x15fd('0x7')](function(_0x2741d4){var _0x5e4b62=moment()[_0x15fd('0x33')](_0x15fd('0x34'));for(var _0x131eb4=0x0,_0x2611ba=_0x2741d4[_0x15fd('0x35')];_0x131eb4<_0x2611ba;_0x131eb4+=0x1){_0x2741d4[_0x131eb4][_0x15fd('0x36')]({'exitAt':_0x5e4b62});}});for(var _0x494f83=0x0;_0x494f83<_0x180433[_0x15fd('0x1f')][_0x15fd('0x2e')][_0x2eb6b6][_0x15fd('0x35')];_0x494f83+=0x1){db[_0x15fd('0x30')][_0x15fd('0x37')]({'where':{'channel':_0x2eb6b6,'membername':_0x180433[_0x15fd('0x2f')][_0x15fd('0xe')],'type':_0x15fd('0x32'),'uniqueid':_0x180433[_0x15fd('0x1f')][_0x15fd('0x2e')][_0x2eb6b6][_0x494f83],'exitAt':null},'defaults':{'channel':_0x2eb6b6,'membername':_0x180433[_0x15fd('0x2f')][_0x15fd('0xe')],'interface':_['isNil'](_0x180433[_0x15fd('0x2f')]['interface'])?util[_0x15fd('0x33')](_0x15fd('0x38'),_0x180433[_0x15fd('0x2f')]['name']):_0x180433[_0x15fd('0x2f')][_0x15fd('0x39')],'type':_0x15fd('0x32'),'enterAt':moment()[_0x15fd('0x33')]('YYYY-MM-DD\x20HH:mm:ss'),'role':_0x15fd('0x3a'),'internal':_0x180433[_0x15fd('0x2f')][_0x15fd('0x3b')],'uniqueid':_0x180433[_0x15fd('0x1f')]['interaction'][_0x2eb6b6][_0x494f83]}});}}}}return respondWithRpcPromise(_0x15fd('0x3c'),{'id':_0x180433[_0x15fd('0x1a')]['id'],'capacity':_0x180433['body']['capacity']},routingClient)['then'](respondWithResult(_0x304736,null))[_0x15fd('0xb')](handleError(_0x304736,null));};exports[_0x15fd('0x3d')]=function(_0x366c49,_0x10cf04){return respondWithRpcPromise(_0x15fd('0x3e'),_0x366c49[_0x15fd('0x14')])['then'](respondWithResult(_0x10cf04,null))[_0x15fd('0xb')](handleError(_0x10cf04,null));};exports[_0x15fd('0x3f')]=function(_0xbb16ef,_0x516b25){return respondWithRpcPromise(_0x15fd('0x40'),_0xbb16ef['query'])[_0x15fd('0x7')](respondWithResult(_0x516b25,null))[_0x15fd('0xb')](handleError(_0x516b25,null));};exports[_0x15fd('0x41')]=function(_0x42d4de,_0x332df7){return respondWithRpcPromise(_0x15fd('0x42'),_0x42d4de[_0x15fd('0x14')])[_0x15fd('0x7')](respondWithResult(_0x332df7,null))[_0x15fd('0xb')](handleError(_0x332df7,null));};exports[_0x15fd('0x43')]=function(_0x1491a3,_0x36eaf7){return respondWithRpcPromise(_0x15fd('0x44'),_0x1491a3['query'],routingClient)[_0x15fd('0x7')](respondWithResult(_0x36eaf7,null))['catch'](handleError(_0x36eaf7,null));};exports[_0x15fd('0x45')]=function(_0x509aef,_0x25bdea){return respondWithRpcPromise(_0x15fd('0x44'),_0x509aef[_0x15fd('0x14')],routingClient)['then'](findById(_0x509aef['params']['id']))[_0x15fd('0x7')](respondWithResult(_0x25bdea,null))[_0x15fd('0xb')](handleError(_0x25bdea,null));};exports[_0x15fd('0x46')]=function(_0x30ab06,_0x5d94b3){return respondWithRpcPromise(_0x15fd('0x47'),_0x30ab06[_0x15fd('0x14')],routingClient)[_0x15fd('0x7')](respondWithResult(_0x5d94b3,null))[_0x15fd('0xb')](handleError(_0x5d94b3,null));};exports[_0x15fd('0x48')]=function(_0x321fe7,_0x59b3b4){return respondWithRpcPromise(_0x15fd('0x47'),_0x321fe7[_0x15fd('0x14')],routingClient)[_0x15fd('0x7')](findById(_0x321fe7[_0x15fd('0x1a')]['id']))[_0x15fd('0x7')](respondWithResult(_0x59b3b4,null))[_0x15fd('0xb')](handleError(_0x59b3b4,null));};exports['mailAccounts']=function(_0x4f2a17,_0x149b20){return respondWithRpcPromise(_0x15fd('0x49'),_0x4f2a17['query'],mailClient)[_0x15fd('0x7')](respondWithResult(_0x149b20,null))[_0x15fd('0xb')](handleError(_0x149b20,null));};exports['openchannelQueues']=function(_0x285fd5,_0x4626ac){return respondWithRpcPromise(_0x15fd('0x4a'),_0x285fd5['query'],routingClient)[_0x15fd('0x7')](respondWithResult(_0x4626ac,null))[_0x15fd('0xb')](handleError(_0x4626ac,null));};exports[_0x15fd('0x4b')]=function(_0x2db860,_0xa206b){return respondWithRpcPromise(_0x15fd('0x4a'),_0x2db860[_0x15fd('0x14')],routingClient)[_0x15fd('0x7')](findById(_0x2db860[_0x15fd('0x1a')]['id']))[_0x15fd('0x7')](respondWithResult(_0xa206b,null))['catch'](handleError(_0xa206b,null));};exports[_0x15fd('0x4c')]=function(_0x3a26c8,_0x5b720b){return respondWithRpcPromise('SmsQueues',_0x3a26c8[_0x15fd('0x14')],routingClient)[_0x15fd('0x7')](respondWithResult(_0x5b720b,null))[_0x15fd('0xb')](handleError(_0x5b720b,null));};exports[_0x15fd('0x4d')]=function(_0x12fd6c,_0x1b6f59){return respondWithRpcPromise('SmsQueues',_0x12fd6c[_0x15fd('0x14')],routingClient)[_0x15fd('0x7')](findById(_0x12fd6c[_0x15fd('0x1a')]['id']))[_0x15fd('0x7')](respondWithResult(_0x1b6f59,null))[_0x15fd('0xb')](handleError(_0x1b6f59,null));};exports[_0x15fd('0x4e')]=function(_0xf27ab4,_0x1fe6cb){return respondWithRpcPromise(_0x15fd('0x4f'),_0xf27ab4[_0x15fd('0x14')],routingClient)[_0x15fd('0x7')](respondWithResult(_0x1fe6cb,null))['catch'](handleError(_0x1fe6cb,null));};exports['showWhatsappQueues']=function(_0x8a8198,_0x24ea9b){return respondWithRpcPromise(_0x15fd('0x4f'),_0x8a8198[_0x15fd('0x14')],routingClient)[_0x15fd('0x7')](findById(_0x8a8198[_0x15fd('0x1a')]['id']))[_0x15fd('0x7')](respondWithResult(_0x24ea9b,null))['catch'](handleError(_0x24ea9b,null));};exports[_0x15fd('0x50')]=function(_0x5de222,_0xc8931e){return respondWithRpcPromise('FaxQueues',_0x5de222[_0x15fd('0x14')],routingClient)['then'](respondWithResult(_0xc8931e,null))[_0x15fd('0xb')](handleError(_0xc8931e,null));};exports[_0x15fd('0x51')]=function(_0x4390bc,_0x3d40f3){return respondWithRpcPromise(_0x15fd('0x52'),_0x4390bc[_0x15fd('0x14')],routingClient)[_0x15fd('0x7')](findById(_0x4390bc[_0x15fd('0x1a')]['id']))[_0x15fd('0x7')](respondWithResult(_0x3d40f3,null))['catch'](handleError(_0x3d40f3,null));};exports['faxAccounts']=function(_0x1ca245,_0x239a06){return respondWithRpcPromise(_0x15fd('0x53'),_0x1ca245['query'])[_0x15fd('0x7')](respondWithResult(_0x239a06,null))[_0x15fd('0xb')](handleError(_0x239a06,null));};exports[_0x15fd('0x54')]=function(_0x56cf8c,_0x3bf85b){return respondWithRpcPromise(_0x15fd('0x55'),_0x56cf8c['query'],routingClient)[_0x15fd('0x7')](respondWithResult(_0x3bf85b,null))['catch'](handleError(_0x3bf85b,null));};exports[_0x15fd('0x56')]=function(_0x40a8e9,_0x74f311){return respondWithRpcPromise(_0x15fd('0x57'),_0x40a8e9[_0x15fd('0x14')],routingClient)['then'](respondWithResult(_0x74f311,null))[_0x15fd('0xb')](handleError(_0x74f311,null));};exports['openchannelQueuesWaitingInteractions']=function(_0x3c4ffa,_0x4a165f){return respondWithRpcPromise(_0x15fd('0x58'),_0x3c4ffa[_0x15fd('0x14')],routingClient)['then'](respondWithResult(_0x4a165f,null))[_0x15fd('0xb')](handleError(_0x4a165f,null));};exports[_0x15fd('0x59')]=function(_0x47f39a,_0x484cd1){return respondWithRpcPromise(_0x15fd('0x58'),_0x47f39a['query'],routingClient)[_0x15fd('0x7')](function(_0x2feba1){if(_0x47f39a[_0x15fd('0x14')][_0x15fd('0x5a')]!==undefined){var _0x2d1c93=_(_0x2feba1['rows'])[_0x15fd('0x5b')]([_0x47f39a[_0x15fd('0x14')]['type'],_0x47f39a[_0x15fd('0x1a')]['id']])[_0x15fd('0x5c')](_0x15fd('0x5d'))[_0x15fd('0x5e')]()[_0x15fd('0x5f')]();return _0x2feba1[_0x15fd('0x12')][_0x15fd('0x5b')](function(_0x39b777){return _0x2d1c93[_0x15fd('0x60')](_0x39b777[_0x15fd('0x5d')])>-0x1;});}else{return _0x2feba1[_0x15fd('0x12')][_0x15fd('0x5b')](function(_0x273311){return _0x273311[_0x15fd('0x5d')]===parseInt(_0x47f39a['params']['id']);});}})[_0x15fd('0x7')](respondWithResult(_0x484cd1,null))['catch'](handleError(_0x484cd1,null));};exports[_0x15fd('0x61')]=function(_0x43d0b0,_0x3bfa0b){return respondWithRpcPromise(_0x15fd('0x62'),_0x43d0b0['query'],routingClient)[_0x15fd('0x7')](respondWithResult(_0x3bfa0b,null))[_0x15fd('0xb')](handleError(_0x3bfa0b,null));};exports[_0x15fd('0x63')]=function(_0x873778,_0x4accfd){return respondWithRpcPromise(_0x15fd('0x64'),_0x873778[_0x15fd('0x14')],routingClient)['then'](respondWithResult(_0x4accfd,null))[_0x15fd('0xb')](handleError(_0x4accfd,null));};exports[_0x15fd('0x65')]=function(_0x128ee3,_0x57089a){return respondWithRpcPromise(_0x15fd('0x66'),_0x128ee3[_0x15fd('0x14')],routingClient)[_0x15fd('0x7')](respondWithResult(_0x57089a,null))[_0x15fd('0xb')](handleError(_0x57089a,null));};exports[_0x15fd('0x67')]=function(_0x2d24a2){return function(_0x4e36c0,_0x2b7737){var _0x15a645,_0x32a2a0;var _0x3bd3fb=_[_0x15fd('0x68')](_0x2d24a2);var _0x55e9dd=_0x2d24a2===_0x15fd('0x69')?_0x15fd('0x6a'):_0x15fd('0x6b');return db[_0x3bd3fb+_0x15fd('0x6c')][_0x15fd('0x6d')]({'raw':!![],'where':{'id':_0x4e36c0['params']['id']}})['then'](function(_0x3017c6){if(_[_0x15fd('0x10')](_0x3017c6)){throw new Error(_0x3bd3fb+_0x15fd('0x6e'));}_0x15a645=_0x3017c6;return db[_0x3bd3fb+_0x15fd('0x6f')][_0x15fd('0x6d')]({'where':{'id':_0x4e36c0[_0x15fd('0x1f')][_0x15fd('0x70')]},'include':[{'model':db[_0x3bd3fb+_0x15fd('0x71')],'as':_0x15fd('0x71')},{'model':db[_0x3bd3fb+_0x55e9dd],'as':'Account'}]});})[_0x15fd('0x7')](function(_0x23d547){if(_['isNil'](_0x23d547)){throw new Error(_0x3bd3fb+_0x15fd('0x72'));}_0x32a2a0=_0x23d547;return _0x23d547[_0x15fd('0x73')]({'read':0x0,'readAt':null,'UserId':null});})[_0x15fd('0x7')](function(){var _0x35ad47={'uniqueid':_0x2d24a2+'.'+_0x32a2a0['id']+'.'+_0x32a2a0['Interaction']['id'],'FromUserId':_0x4e36c0[_0x15fd('0x2f')]['id'],'type':_0x15fd('0x74')};_0x35ad47[_0x3bd3fb+'MessageId']=_0x32a2a0['id'];_0x35ad47[_0x3bd3fb+_0x15fd('0x75')]=_0x32a2a0[_0x15fd('0x71')]['id'];_0x35ad47[_0x15fd('0x76')+_0x3bd3fb+_0x55e9dd+'Id']=_0x32a2a0['Account']['id'];_0x35ad47['To'+_0x3bd3fb+_0x15fd('0x77')]=_0x15a645['id'];return db[_0x3bd3fb+_0x15fd('0x78')][_0x15fd('0x79')](_0x35ad47);})[_0x15fd('0x7')](function(){return respondWithRpcPromise(_0x15fd('0x7a'),{'channel':_0x2d24a2,'interaction':_0x32a2a0[_0x15fd('0x71')],'message':_0x32a2a0,'account':_0x32a2a0[_0x15fd('0x6b')],'applications':[{'id':0x0,'priority':0x1,'app':_0x15fd('0x74'),'appdata':_0x15a645['name']+','+(_0x32a2a0[_0x15fd('0x6b')][_0x15fd('0x7b')]||0x12c),'interval':_0x15fd('0x7c')}]},routingClient);})[_0x15fd('0x7')](respondWithResult(_0x2b7737,null))[_0x15fd('0xb')](handleError(_0x2b7737,null));};};exports[_0x15fd('0x7d')]=function(_0x3ebb13,_0x939bfd){var _0x3a4731,_0x264a98;if(_[_0x15fd('0x10')](_0x3ebb13[_0x15fd('0x1f')][_0x15fd('0x7e')])){throw new Error(_0x15fd('0x7f'));}var _0x4221df=_0x3ebb13[_0x15fd('0x1f')][_0x15fd('0x7e')];var _0x255dd5=_[_0x15fd('0x68')](_0x4221df);var _0x178dac=_0x4221df===_0x15fd('0x69')?_0x15fd('0x6a'):_0x15fd('0x6b');return db[_0x15fd('0x80')][_0x15fd('0x6d')]({'raw':!![],'where':{'id':_0x3ebb13[_0x15fd('0x1a')]['id'],'role':'agent'}})[_0x15fd('0x7')](function(_0x39e232){if(_['isNil'](_0x39e232)){throw new Error(_0x15fd('0x81'));}_0x3a4731=_0x39e232;return db[_0x255dd5+_0x15fd('0x6f')][_0x15fd('0x6d')]({'where':{'id':_0x3ebb13[_0x15fd('0x1f')]['messageId']},'include':[{'model':db[_0x255dd5+'Interaction'],'as':_0x15fd('0x71')},{'model':db[_0x255dd5+_0x178dac],'as':'Account'}]});})[_0x15fd('0x7')](function(_0x3e47fe){if(_[_0x15fd('0x10')](_0x3e47fe)){throw new Error(_0x255dd5+_0x15fd('0x72'));}_0x264a98=_0x3e47fe;return _0x3e47fe[_0x15fd('0x73')]({'read':0x0,'readAt':null,'UserId':null});})[_0x15fd('0x7')](function(){var _0x1bd38c={'uniqueid':_0x4221df+'.'+_0x264a98['id']+'.'+_0x264a98['Interaction']['id'],'FromUserId':_0x3ebb13['user']['id'],'type':_0x15fd('0x74'),'ToUserId':_0x3a4731['id']};_0x1bd38c[_0x255dd5+_0x15fd('0x82')]=_0x264a98['id'];_0x1bd38c[_0x255dd5+_0x15fd('0x75')]=_0x264a98[_0x15fd('0x71')]['id'];_0x1bd38c[_0x15fd('0x76')+_0x255dd5+_0x178dac+'Id']=_0x264a98[_0x15fd('0x6b')]['id'];return db[_0x255dd5+'TransferReport']['create'](_0x1bd38c);})[_0x15fd('0x7')](function(){return respondWithRpcPromise(_0x15fd('0x7a'),{'channel':_0x4221df,'interaction':_0x264a98[_0x15fd('0x71')],'message':_0x264a98,'account':_0x264a98[_0x15fd('0x6b')],'applications':[{'id':0x0,'priority':0x1,'app':_0x15fd('0x3a'),'appdata':_0x3a4731[_0x15fd('0xe')]+','+(_0x264a98['Account'][_0x15fd('0x83')]||0x12c),'interval':'*,*,*,*'}]},routingClient);})[_0x15fd('0x7')](respondWithResult(_0x939bfd,null))[_0x15fd('0xb')](handleError(_0x939bfd,null));};
\ No newline at end of file
+var _0x2d39=['chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','MailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','OpenchannelQueuesWaitingInteractions','type','filter','map','queue_id','uniq','value','indexOf','smsQueuesWaitingInteractions','SmsQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','WhatsappQueuesWaitingInteractions','faxQueuesWaitingInteractions','FaxQueuesWaitingInteractions','capitalize','chat','Website','Account','Queue','findOne','\x20Queue\x20not\x20found','Message','messageId','Interaction','update','queue','InteractionId','QueueId','TransferReport','create','Start','queueTransferTimeout','agentNotify','channel','User','\x20Message\x20not\x20found','From','agentTransferTimeout','*,*,*,*','lodash','../../config/logger','jayson/promise','client','http','request','then','error','code','message','result','catch','status','json','sendStatus','name','send','isNil','rows','find','VoiceChannels','voiceChannelMixMonitor','VoiceChannelMixMonitor','merge','query','params','VoiceChannelStopMixMonitor','voiceQueues','VoiceQueues','updateVoiceQueue','UpdateVoiceQueue','VoiceQueuesPreview','voiceQueuesChannels','VoiceQueuesChannels','voiceQueuesChannelHangup','voiceQueuesChannelRedirect','VoiceQueuesChannelRedirect','outbound','outboundChannels','OutboundChannels','agents','Agents','agentCapacity','body','interaction','user','hasOwnProperty','MemberReport','INTERACTION','length','format','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','findOrCreate','interface','SIP/%s','agent','internal','capacity','telephones','trunks','Trunks','campaigns','Campaigns','chatQueues','ChatQueues','mailQueues','MailQueues','showMailQueues','mailAccounts','MailAccounts','openchannelQueues','OpenchannelQueues','smsQueues','showSmsQueues','whatsappQueues','showWhatsappQueues','faxQueues','FaxQueues','showFaxQueues','faxAccounts'];(function(_0xd5b3ed,_0x528a81){var _0x18af0e=function(_0x24f9cb){while(--_0x24f9cb){_0xd5b3ed['push'](_0xd5b3ed['shift']());}};_0x18af0e(++_0x528a81);}(_0x2d39,0x19f));var _0x92d3=function(_0x5f04b7,_0x473a58){_0x5f04b7=_0x5f04b7-0x0;var _0x356914=_0x2d39[_0x5f04b7];return _0x356914;};'use strict';var BPromise=require('bluebird');var moment=require('moment');var _=require(_0x92d3('0x0'));var util=require('util');var db=require('../../mysqldb')['db'];var logger=require(_0x92d3('0x1'))('api');var jayson=require(_0x92d3('0x2'));var amiClient=jayson[_0x92d3('0x3')]['http']({'port':0x232a});var mailClient=jayson['client']['http']({'port':0x232b});var routingClient=jayson[_0x92d3('0x3')][_0x92d3('0x4')]({'port':0x232c});function respondWithRpcPromise(_0x3f1ae3,_0x5371c5,_0x5e4752){return new BPromise(function(_0x472511,_0x152f55){var _0x21a427=_0x5e4752?_0x5e4752:amiClient;return _0x21a427[_0x92d3('0x5')](_0x3f1ae3,_0x5371c5)[_0x92d3('0x6')](function(_0x5b4c07){if(_0x5b4c07[_0x92d3('0x7')]){if(_0x5b4c07[_0x92d3('0x7')][_0x92d3('0x8')]===0x1f4){return _0x152f55(_0x5b4c07[_0x92d3('0x7')][_0x92d3('0x9')]);}return _0x472511(_0x5b4c07['error'][_0x92d3('0x9')]);}else{_0x472511(_0x5b4c07[_0x92d3('0xa')]);}})[_0x92d3('0xb')](function(_0x6f0833){_0x152f55(_0x6f0833);});});}function respondWithResult(_0x248438,_0x37e109){_0x37e109=_0x37e109||0xc8;return function(_0x6c7454){if(_0x6c7454){return _0x248438[_0x92d3('0xc')](_0x37e109)[_0x92d3('0xd')](_0x6c7454);}return _0x248438[_0x92d3('0xe')](0x194);};}function handleError(_0x4dcf17,_0x15f4ac){_0x15f4ac=_0x15f4ac||0x1f4;return function(_0xc73ea1){logger[_0x92d3('0x7')](_0xc73ea1['stack']);if(_0xc73ea1[_0x92d3('0xf')]){delete _0xc73ea1[_0x92d3('0xf')];}_0x4dcf17['status'](_0x15f4ac)[_0x92d3('0x10')](_0xc73ea1);};}function findById(_0x18cedd){return function(_0x1b010c){if(!_[_0x92d3('0x11')](_0x18cedd)&&!_[_0x92d3('0x11')](_0x1b010c)&&!_[_0x92d3('0x11')](_0x1b010c[_0x92d3('0x12')])){return _[_0x92d3('0x13')](_0x1b010c[_0x92d3('0x12')],function(_0x57e1a1){return _0x57e1a1['id']==_0x18cedd;});}return null;};}exports['voiceChannels']=function(_0x457fda,_0x238568){return respondWithRpcPromise(_0x92d3('0x14'),_0x457fda['query'])[_0x92d3('0x6')](respondWithResult(_0x238568,null))['catch'](handleError(_0x238568,null));};exports[_0x92d3('0x15')]=function(_0x1c71ae,_0x414c43){return respondWithRpcPromise(_0x92d3('0x16'),_[_0x92d3('0x17')](_0x1c71ae[_0x92d3('0x18')],_0x1c71ae[_0x92d3('0x19')]))[_0x92d3('0x6')](respondWithResult(_0x414c43,null))[_0x92d3('0xb')](handleError(_0x414c43,null));};exports['voiceChannelStopMixMonitor']=function(_0x5d10da,_0x30844f){return respondWithRpcPromise(_0x92d3('0x1a'),_['merge'](_0x5d10da['query'],_0x5d10da[_0x92d3('0x19')]))['then'](respondWithResult(_0x30844f,null))['catch'](handleError(_0x30844f,null));};exports[_0x92d3('0x1b')]=function(_0x3d3da9,_0x177f65){return respondWithRpcPromise(_0x92d3('0x1c'),_0x3d3da9['query'])[_0x92d3('0x6')](respondWithResult(_0x177f65,null))[_0x92d3('0xb')](handleError(_0x177f65,null));};exports['showVoiceQueues']=function(_0x530141,_0x14580d){return respondWithRpcPromise(_0x92d3('0x1c'),_0x530141['query'])[_0x92d3('0x6')](findById(_0x530141[_0x92d3('0x19')]['id']))[_0x92d3('0x6')](respondWithResult(_0x14580d,null))[_0x92d3('0xb')](handleError(_0x14580d,null));};exports[_0x92d3('0x1d')]=function(_0x2a87e4,_0x3d8178){return respondWithRpcPromise(_0x92d3('0x1e'),_['merge'](_0x2a87e4['body'],_0x2a87e4['params']))[_0x92d3('0x6')](respondWithResult(_0x3d8178,null))[_0x92d3('0xb')](handleError(_0x3d8178,null));};exports['voiceQueuesPreview']=function(_0x2d0bb6,_0x289386){return respondWithRpcPromise(_0x92d3('0x1f'),_[_0x92d3('0x17')](_0x2d0bb6[_0x92d3('0x18')],_0x2d0bb6[_0x92d3('0x19')]))[_0x92d3('0x6')](respondWithResult(_0x289386,null))[_0x92d3('0xb')](handleError(_0x289386,null));};exports[_0x92d3('0x20')]=function(_0x1aa025,_0x5378ab){return respondWithRpcPromise(_0x92d3('0x21'),_0x1aa025[_0x92d3('0x18')])[_0x92d3('0x6')](respondWithResult(_0x5378ab,null))[_0x92d3('0xb')](handleError(_0x5378ab,null));};exports['voiceQueuesChannel']=function(_0x143a09,_0x3e36de){return respondWithRpcPromise('VoiceQueuesChannel',_['merge'](_0x143a09['query'],_0x143a09['params']))['then'](respondWithResult(_0x3e36de,null))[_0x92d3('0xb')](handleError(_0x3e36de,null));};exports[_0x92d3('0x22')]=function(_0x4ff525,_0x204511){return respondWithRpcPromise('VoiceQueuesChannelHangup',_[_0x92d3('0x17')](_0x4ff525['query'],_0x4ff525[_0x92d3('0x19')]))[_0x92d3('0x6')](respondWithResult(_0x204511,null))[_0x92d3('0xb')](handleError(_0x204511,null));};exports[_0x92d3('0x23')]=function(_0x1570b4,_0x3e4d70){return respondWithRpcPromise(_0x92d3('0x24'),_['merge'](_0x1570b4['query'],_0x1570b4[_0x92d3('0x19')]))[_0x92d3('0x6')](respondWithResult(_0x3e4d70,null))['catch'](handleError(_0x3e4d70,null));};exports[_0x92d3('0x25')]=function(_0x2b137c,_0x44fffa){return respondWithRpcPromise('Outbound',_0x2b137c[_0x92d3('0x18')])['then'](respondWithResult(_0x44fffa,null))['catch'](handleError(_0x44fffa,null));};exports[_0x92d3('0x26')]=function(_0x4dd3ac,_0x5ea134){return respondWithRpcPromise(_0x92d3('0x27'),_0x4dd3ac[_0x92d3('0x18')])[_0x92d3('0x6')](respondWithResult(_0x5ea134,null))[_0x92d3('0xb')](handleError(_0x5ea134,null));};exports[_0x92d3('0x28')]=function(_0xdf1ed2,_0x19a6d6){var _0x2e8432;return respondWithRpcPromise(_0x92d3('0x29'),_0xdf1ed2[_0x92d3('0x18')])[_0x92d3('0x6')](function(_0x557cfb){_0x2e8432=_0x557cfb;return respondWithRpcPromise(_0x92d3('0x29'),_0xdf1ed2[_0x92d3('0x18')],routingClient);})[_0x92d3('0x6')](function(_0x43115a){return _[_0x92d3('0x17')]({},_0x43115a,_0x2e8432);})[_0x92d3('0x6')](respondWithResult(_0x19a6d6,null))[_0x92d3('0xb')](handleError(_0x19a6d6,null));};exports[_0x92d3('0x2a')]=function(_0x5c8240,_0x7c0c0){if(_0x5c8240[_0x92d3('0x2b')]&&_0x5c8240['body'][_0x92d3('0x2c')]&&_0x5c8240[_0x92d3('0x2d')]&&_0x5c8240['user']['name']){for(var _0x2d31d3 in _0x5c8240[_0x92d3('0x2b')][_0x92d3('0x2c')]){if(_0x5c8240[_0x92d3('0x2b')]['interaction'][_0x92d3('0x2e')](_0x2d31d3)){db[_0x92d3('0x2f')]['findAll']({'where':{'channel':_0x2d31d3,'membername':_0x5c8240[_0x92d3('0x2d')][_0x92d3('0xf')],'type':_0x92d3('0x30'),'exitAt':null,'uniqueid':_0x5c8240[_0x92d3('0x2b')]['interaction'][_0x2d31d3]&&_0x5c8240[_0x92d3('0x2b')][_0x92d3('0x2c')][_0x2d31d3][_0x92d3('0x31')]?{'$notIn':_0x5c8240['body'][_0x92d3('0x2c')][_0x2d31d3]}:{'$ne':null}}})[_0x92d3('0x6')](function(_0x21b97f){var _0x4e35a9=moment()[_0x92d3('0x32')](_0x92d3('0x33'));for(var _0x379002=0x0,_0x56db4a=_0x21b97f[_0x92d3('0x31')];_0x379002<_0x56db4a;_0x379002+=0x1){_0x21b97f[_0x379002][_0x92d3('0x34')]({'exitAt':_0x4e35a9});}});for(var _0x5b4e33=0x0;_0x5b4e33<_0x5c8240[_0x92d3('0x2b')]['interaction'][_0x2d31d3]['length'];_0x5b4e33+=0x1){db[_0x92d3('0x2f')][_0x92d3('0x35')]({'where':{'channel':_0x2d31d3,'membername':_0x5c8240[_0x92d3('0x2d')][_0x92d3('0xf')],'type':'INTERACTION','uniqueid':_0x5c8240[_0x92d3('0x2b')]['interaction'][_0x2d31d3][_0x5b4e33],'exitAt':null},'defaults':{'channel':_0x2d31d3,'membername':_0x5c8240['user'][_0x92d3('0xf')],'interface':_['isNil'](_0x5c8240[_0x92d3('0x2d')][_0x92d3('0x36')])?util['format'](_0x92d3('0x37'),_0x5c8240[_0x92d3('0x2d')][_0x92d3('0xf')]):_0x5c8240[_0x92d3('0x2d')][_0x92d3('0x36')],'type':_0x92d3('0x30'),'enterAt':moment()['format'](_0x92d3('0x33')),'role':_0x92d3('0x38'),'internal':_0x5c8240[_0x92d3('0x2d')][_0x92d3('0x39')],'uniqueid':_0x5c8240['body'][_0x92d3('0x2c')][_0x2d31d3][_0x5b4e33]}});}}}}return respondWithRpcPromise('AgentCapacity',{'id':_0x5c8240[_0x92d3('0x19')]['id'],'capacity':_0x5c8240[_0x92d3('0x2b')][_0x92d3('0x3a')]},routingClient)[_0x92d3('0x6')](respondWithResult(_0x7c0c0,null))[_0x92d3('0xb')](handleError(_0x7c0c0,null));};exports[_0x92d3('0x3b')]=function(_0x4f3ff6,_0x6dc7c1){return respondWithRpcPromise('Telephones',_0x4f3ff6[_0x92d3('0x18')])[_0x92d3('0x6')](respondWithResult(_0x6dc7c1,null))[_0x92d3('0xb')](handleError(_0x6dc7c1,null));};exports[_0x92d3('0x3c')]=function(_0x1683d2,_0xe20bd0){return respondWithRpcPromise(_0x92d3('0x3d'),_0x1683d2[_0x92d3('0x18')])['then'](respondWithResult(_0xe20bd0,null))['catch'](handleError(_0xe20bd0,null));};exports[_0x92d3('0x3e')]=function(_0x1b4ea8,_0x41e835){return respondWithRpcPromise(_0x92d3('0x3f'),_0x1b4ea8[_0x92d3('0x18')])[_0x92d3('0x6')](respondWithResult(_0x41e835,null))[_0x92d3('0xb')](handleError(_0x41e835,null));};exports[_0x92d3('0x40')]=function(_0x224c4b,_0x11b906){return respondWithRpcPromise(_0x92d3('0x41'),_0x224c4b[_0x92d3('0x18')],routingClient)[_0x92d3('0x6')](respondWithResult(_0x11b906,null))[_0x92d3('0xb')](handleError(_0x11b906,null));};exports['showChatQueues']=function(_0x31fc0d,_0x206ea0){return respondWithRpcPromise('ChatQueues',_0x31fc0d['query'],routingClient)[_0x92d3('0x6')](findById(_0x31fc0d[_0x92d3('0x19')]['id']))[_0x92d3('0x6')](respondWithResult(_0x206ea0,null))[_0x92d3('0xb')](handleError(_0x206ea0,null));};exports[_0x92d3('0x42')]=function(_0x13dbdd,_0x3a21d6){return respondWithRpcPromise(_0x92d3('0x43'),_0x13dbdd[_0x92d3('0x18')],routingClient)[_0x92d3('0x6')](respondWithResult(_0x3a21d6,null))[_0x92d3('0xb')](handleError(_0x3a21d6,null));};exports[_0x92d3('0x44')]=function(_0x45fe1f,_0x3eead5){return respondWithRpcPromise('MailQueues',_0x45fe1f[_0x92d3('0x18')],routingClient)['then'](findById(_0x45fe1f[_0x92d3('0x19')]['id']))['then'](respondWithResult(_0x3eead5,null))[_0x92d3('0xb')](handleError(_0x3eead5,null));};exports[_0x92d3('0x45')]=function(_0x57a015,_0x282c63){return respondWithRpcPromise(_0x92d3('0x46'),_0x57a015['query'],mailClient)[_0x92d3('0x6')](respondWithResult(_0x282c63,null))[_0x92d3('0xb')](handleError(_0x282c63,null));};exports[_0x92d3('0x47')]=function(_0x587c4f,_0x1d892e){return respondWithRpcPromise(_0x92d3('0x48'),_0x587c4f['query'],routingClient)[_0x92d3('0x6')](respondWithResult(_0x1d892e,null))['catch'](handleError(_0x1d892e,null));};exports['showOpenchannelQueues']=function(_0x391ee6,_0x3cedef){return respondWithRpcPromise(_0x92d3('0x48'),_0x391ee6[_0x92d3('0x18')],routingClient)[_0x92d3('0x6')](findById(_0x391ee6['params']['id']))[_0x92d3('0x6')](respondWithResult(_0x3cedef,null))[_0x92d3('0xb')](handleError(_0x3cedef,null));};exports[_0x92d3('0x49')]=function(_0x3cc5d0,_0x450026){return respondWithRpcPromise('SmsQueues',_0x3cc5d0['query'],routingClient)[_0x92d3('0x6')](respondWithResult(_0x450026,null))[_0x92d3('0xb')](handleError(_0x450026,null));};exports[_0x92d3('0x4a')]=function(_0x153677,_0x204676){return respondWithRpcPromise('SmsQueues',_0x153677[_0x92d3('0x18')],routingClient)[_0x92d3('0x6')](findById(_0x153677[_0x92d3('0x19')]['id']))[_0x92d3('0x6')](respondWithResult(_0x204676,null))['catch'](handleError(_0x204676,null));};exports[_0x92d3('0x4b')]=function(_0x6d4970,_0x904b18){return respondWithRpcPromise('WhatsappQueues',_0x6d4970[_0x92d3('0x18')],routingClient)[_0x92d3('0x6')](respondWithResult(_0x904b18,null))[_0x92d3('0xb')](handleError(_0x904b18,null));};exports[_0x92d3('0x4c')]=function(_0x49d67e,_0x5f6b4e){return respondWithRpcPromise('WhatsappQueues',_0x49d67e[_0x92d3('0x18')],routingClient)[_0x92d3('0x6')](findById(_0x49d67e[_0x92d3('0x19')]['id']))[_0x92d3('0x6')](respondWithResult(_0x5f6b4e,null))[_0x92d3('0xb')](handleError(_0x5f6b4e,null));};exports[_0x92d3('0x4d')]=function(_0x588ebf,_0x2ec60b){return respondWithRpcPromise(_0x92d3('0x4e'),_0x588ebf[_0x92d3('0x18')],routingClient)['then'](respondWithResult(_0x2ec60b,null))['catch'](handleError(_0x2ec60b,null));};exports[_0x92d3('0x4f')]=function(_0x3bbf6c,_0x29be0c){return respondWithRpcPromise(_0x92d3('0x4e'),_0x3bbf6c[_0x92d3('0x18')],routingClient)[_0x92d3('0x6')](findById(_0x3bbf6c[_0x92d3('0x19')]['id']))[_0x92d3('0x6')](respondWithResult(_0x29be0c,null))[_0x92d3('0xb')](handleError(_0x29be0c,null));};exports[_0x92d3('0x50')]=function(_0x30d5ce,_0x2bf648){return respondWithRpcPromise('FaxAccounts',_0x30d5ce[_0x92d3('0x18')])[_0x92d3('0x6')](respondWithResult(_0x2bf648,null))['catch'](handleError(_0x2bf648,null));};exports[_0x92d3('0x51')]=function(_0x14116d,_0x354b94){return respondWithRpcPromise('ChatQueuesWaitingInteractions',_0x14116d[_0x92d3('0x18')],routingClient)[_0x92d3('0x6')](respondWithResult(_0x354b94,null))[_0x92d3('0xb')](handleError(_0x354b94,null));};exports[_0x92d3('0x52')]=function(_0x42765e,_0x2a1bc8){return respondWithRpcPromise(_0x92d3('0x53'),_0x42765e[_0x92d3('0x18')],routingClient)['then'](respondWithResult(_0x2a1bc8,null))[_0x92d3('0xb')](handleError(_0x2a1bc8,null));};exports[_0x92d3('0x54')]=function(_0x267436,_0x514866){return respondWithRpcPromise(_0x92d3('0x55'),_0x267436[_0x92d3('0x18')],routingClient)['then'](respondWithResult(_0x514866,null))['catch'](handleError(_0x514866,null));};exports['openchannelQueuesIdWaitingInteractions']=function(_0x509c41,_0x4fba04){return respondWithRpcPromise(_0x92d3('0x55'),_0x509c41[_0x92d3('0x18')],routingClient)['then'](function(_0x17879e){if(_0x509c41[_0x92d3('0x18')][_0x92d3('0x56')]!==undefined){var _0x4dc6f8=_(_0x17879e[_0x92d3('0x12')])[_0x92d3('0x57')]([_0x509c41[_0x92d3('0x18')][_0x92d3('0x56')],_0x509c41[_0x92d3('0x19')]['id']])[_0x92d3('0x58')](_0x92d3('0x59'))[_0x92d3('0x5a')]()[_0x92d3('0x5b')]();return _0x17879e[_0x92d3('0x12')][_0x92d3('0x57')](function(_0x40cdb5){return _0x4dc6f8[_0x92d3('0x5c')](_0x40cdb5[_0x92d3('0x59')])>-0x1;});}else{return _0x17879e['rows'][_0x92d3('0x57')](function(_0x5ab319){return _0x5ab319[_0x92d3('0x59')]===parseInt(_0x509c41['params']['id']);});}})[_0x92d3('0x6')](respondWithResult(_0x4fba04,null))[_0x92d3('0xb')](handleError(_0x4fba04,null));};exports[_0x92d3('0x5d')]=function(_0x406dee,_0x2efebf){return respondWithRpcPromise(_0x92d3('0x5e'),_0x406dee['query'],routingClient)[_0x92d3('0x6')](respondWithResult(_0x2efebf,null))[_0x92d3('0xb')](handleError(_0x2efebf,null));};exports[_0x92d3('0x5f')]=function(_0x41c25f,_0x3bcabf){return respondWithRpcPromise(_0x92d3('0x60'),_0x41c25f[_0x92d3('0x18')],routingClient)['then'](respondWithResult(_0x3bcabf,null))['catch'](handleError(_0x3bcabf,null));};exports[_0x92d3('0x61')]=function(_0x481369,_0x1e755b){return respondWithRpcPromise(_0x92d3('0x62'),_0x481369[_0x92d3('0x18')],routingClient)[_0x92d3('0x6')](respondWithResult(_0x1e755b,null))['catch'](handleError(_0x1e755b,null));};exports['queueNotify']=function(_0x484fe5){return function(_0x62dc16,_0xaa5a8){var _0x3201ac,_0x3a4851;var _0x1da925=_[_0x92d3('0x63')](_0x484fe5);var _0x33c7b6=_0x484fe5===_0x92d3('0x64')?_0x92d3('0x65'):_0x92d3('0x66');return db[_0x1da925+_0x92d3('0x67')][_0x92d3('0x68')]({'raw':!![],'where':{'id':_0x62dc16['params']['id']}})[_0x92d3('0x6')](function(_0x3ecd45){if(_[_0x92d3('0x11')](_0x3ecd45)){throw new Error(_0x1da925+_0x92d3('0x69'));}_0x3201ac=_0x3ecd45;return db[_0x1da925+_0x92d3('0x6a')][_0x92d3('0x68')]({'where':{'id':_0x62dc16['body'][_0x92d3('0x6b')]},'include':[{'model':db[_0x1da925+'Interaction'],'as':_0x92d3('0x6c')},{'model':db[_0x1da925+_0x33c7b6],'as':_0x92d3('0x66')}]});})['then'](function(_0x2ad7bf){if(_[_0x92d3('0x11')](_0x2ad7bf)){throw new Error(_0x1da925+'\x20Message\x20not\x20found');}_0x3a4851=_0x2ad7bf;return _0x2ad7bf[_0x92d3('0x6d')]({'read':0x0,'readAt':null,'UserId':null});})[_0x92d3('0x6')](function(){var _0x1cd4bd={'uniqueid':_0x484fe5+'.'+_0x3a4851['id']+'.'+_0x3a4851[_0x92d3('0x6c')]['id'],'FromUserId':_0x62dc16[_0x92d3('0x2d')]['id'],'type':_0x92d3('0x6e')};_0x1cd4bd[_0x1da925+'MessageId']=_0x3a4851['id'];_0x1cd4bd[_0x1da925+_0x92d3('0x6f')]=_0x3a4851[_0x92d3('0x6c')]['id'];_0x1cd4bd['From'+_0x1da925+_0x33c7b6+'Id']=_0x3a4851[_0x92d3('0x66')]['id'];_0x1cd4bd['To'+_0x1da925+_0x92d3('0x70')]=_0x3201ac['id'];return db[_0x1da925+_0x92d3('0x71')][_0x92d3('0x72')](_0x1cd4bd);})[_0x92d3('0x6')](function(){return respondWithRpcPromise(_0x92d3('0x73'),{'channel':_0x484fe5,'interaction':_0x3a4851[_0x92d3('0x6c')],'message':_0x3a4851,'account':_0x3a4851[_0x92d3('0x66')],'applications':[{'id':0x0,'priority':0x1,'app':'queue','appdata':_0x3201ac['name']+','+(_0x3a4851[_0x92d3('0x66')][_0x92d3('0x74')]||0x12c),'interval':'*,*,*,*'}]},routingClient);})[_0x92d3('0x6')](respondWithResult(_0xaa5a8,null))[_0x92d3('0xb')](handleError(_0xaa5a8,null));};};exports[_0x92d3('0x75')]=function(_0x351671,_0x3c9586){var _0x85f783,_0x363cd3;if(_[_0x92d3('0x11')](_0x351671[_0x92d3('0x2b')][_0x92d3('0x76')])){throw new Error('Channel\x20field\x20is\x20mandatory');}var _0x10b885=_0x351671[_0x92d3('0x2b')][_0x92d3('0x76')];var _0x5181cc=_[_0x92d3('0x63')](_0x10b885);var _0x327db4=_0x10b885===_0x92d3('0x64')?_0x92d3('0x65'):'Account';return db[_0x92d3('0x77')][_0x92d3('0x68')]({'raw':!![],'where':{'id':_0x351671[_0x92d3('0x19')]['id'],'role':_0x92d3('0x38')}})[_0x92d3('0x6')](function(_0x2eb620){if(_[_0x92d3('0x11')](_0x2eb620)){throw new Error('Agent\x20not\x20found');}_0x85f783=_0x2eb620;return db[_0x5181cc+_0x92d3('0x6a')]['findOne']({'where':{'id':_0x351671['body'][_0x92d3('0x6b')]},'include':[{'model':db[_0x5181cc+_0x92d3('0x6c')],'as':'Interaction'},{'model':db[_0x5181cc+_0x327db4],'as':'Account'}]});})[_0x92d3('0x6')](function(_0x406ce2){if(_[_0x92d3('0x11')](_0x406ce2)){throw new Error(_0x5181cc+_0x92d3('0x78'));}_0x363cd3=_0x406ce2;return _0x406ce2[_0x92d3('0x6d')]({'read':0x0,'readAt':null,'UserId':null});})[_0x92d3('0x6')](function(){var _0x3110ec={'uniqueid':_0x10b885+'.'+_0x363cd3['id']+'.'+_0x363cd3[_0x92d3('0x6c')]['id'],'FromUserId':_0x351671[_0x92d3('0x2d')]['id'],'type':_0x92d3('0x38'),'ToUserId':_0x85f783['id']};_0x3110ec[_0x5181cc+'MessageId']=_0x363cd3['id'];_0x3110ec[_0x5181cc+'InteractionId']=_0x363cd3[_0x92d3('0x6c')]['id'];_0x3110ec[_0x92d3('0x79')+_0x5181cc+_0x327db4+'Id']=_0x363cd3[_0x92d3('0x66')]['id'];return db[_0x5181cc+'TransferReport'][_0x92d3('0x72')](_0x3110ec);})[_0x92d3('0x6')](function(){return respondWithRpcPromise(_0x92d3('0x73'),{'channel':_0x10b885,'interaction':_0x363cd3[_0x92d3('0x6c')],'message':_0x363cd3,'account':_0x363cd3['Account'],'applications':[{'id':0x0,'priority':0x1,'app':_0x92d3('0x38'),'appdata':_0x85f783[_0x92d3('0xf')]+','+(_0x363cd3[_0x92d3('0x66')][_0x92d3('0x7a')]||0x12c),'interval':_0x92d3('0x7b')}]},routingClient);})[_0x92d3('0x6')](respondWithResult(_0x3c9586,null))[_0x92d3('0xb')](handleError(_0x3c9586,null));};
\ No newline at end of file
index 5f87ef9..244d7b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x41cb=['update','destroy','exports','multer','path','connect-timeout','Router','../../components/interaction/service','./schedule.controller','get','isAuthenticated','index','/:id','show','/:id/run','run','create','put'];(function(_0x3c487b,_0x44c5e2){var _0x1d65f6=function(_0x135e6d){while(--_0x135e6d){_0x3c487b['push'](_0x3c487b['shift']());}};_0x1d65f6(++_0x44c5e2);}(_0x41cb,0x1a1));var _0xb41c=function(_0x1c60fe,_0x37e05c){_0x1c60fe=_0x1c60fe-0x0;var _0x259272=_0x41cb[_0x1c60fe];return _0x259272;};'use strict';var multer=require(_0xb41c('0x0'));var util=require('util');var path=require(_0xb41c('0x1'));var timeout=require(_0xb41c('0x2'));var express=require('express');var router=express[_0xb41c('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xb41c('0x4'));var config=require('../../config/environment');var controller=require(_0xb41c('0x5'));router[_0xb41c('0x6')]('/',auth[_0xb41c('0x7')](),controller[_0xb41c('0x8')]);router[_0xb41c('0x6')](_0xb41c('0x9'),auth[_0xb41c('0x7')](),controller[_0xb41c('0xa')]);router['get'](_0xb41c('0xb'),auth[_0xb41c('0x7')](),controller[_0xb41c('0xc')]);router['post']('/',auth[_0xb41c('0x7')](),controller[_0xb41c('0xd')]);router[_0xb41c('0xe')](_0xb41c('0x9'),auth[_0xb41c('0x7')](),controller[_0xb41c('0xf')]);router['delete'](_0xb41c('0x9'),auth['isAuthenticated'](),controller[_0xb41c('0x10')]);module[_0xb41c('0x11')]=router;
\ No newline at end of file
+var _0x003c=['util','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/:id/run','run','post','create','/:id','update','destroy','exports','multer'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x003c,0x1c1));var _0xc003=function(_0x1baeb5,_0x2c4e05){_0x1baeb5=_0x1baeb5-0x0;var _0x32329a=_0x003c[_0x1baeb5];return _0x32329a;};'use strict';var multer=require(_0xc003('0x0'));var util=require(_0xc003('0x1'));var path=require('path');var timeout=require(_0xc003('0x2'));var express=require('express');var router=express[_0xc003('0x3')]();var fs_extra=require(_0xc003('0x4'));var auth=require(_0xc003('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xc003('0x6'));var controller=require('./schedule.controller');router[_0xc003('0x7')]('/',auth[_0xc003('0x8')](),controller[_0xc003('0x9')]);router[_0xc003('0x7')]('/:id',auth[_0xc003('0x8')](),controller['show']);router['get'](_0xc003('0xa'),auth[_0xc003('0x8')](),controller[_0xc003('0xb')]);router[_0xc003('0xc')]('/',auth['isAuthenticated'](),controller[_0xc003('0xd')]);router['put'](_0xc003('0xe'),auth[_0xc003('0x8')](),controller[_0xc003('0xf')]);router['delete'](_0xc003('0xe'),auth[_0xc003('0x8')](),controller[_0xc003('0x10')]);module[_0xc003('0x11')]=router;
\ No newline at end of file
index af074cb..f1c8cdc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb65=['days','hours','minutes','pdf','xlsx','csv','custom','TEXT','sequelize','exports','STRING','BOOLEAN','0\x200\x20*\x20*\x20*','DATE','INTEGER','ENUM','years','quarters','weeks'];(function(_0x3f996f,_0x1c3acd){var _0x407d5d=function(_0x4c800c){while(--_0x4c800c){_0x3f996f['push'](_0x3f996f['shift']());}};_0x407d5d(++_0x1c3acd);}(_0xbb65,0x171));var _0x5bb6=function(_0x5962b4,_0x1f0a1f){_0x5962b4=_0x5962b4-0x0;var _0x52d4a1=_0xbb65[_0x5962b4];return _0x52d4a1;};'use strict';var Sequelize=require(_0x5bb6('0x0'));module[_0x5bb6('0x1')]={'name':{'type':Sequelize[_0x5bb6('0x2')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'active':{'type':Sequelize[_0x5bb6('0x3')],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x5bb6('0x4')},'startAt':{'type':Sequelize[_0x5bb6('0x5')],'allowNull':![]},'endAt':{'type':Sequelize[_0x5bb6('0x5')],'allowNull':![]},'subtractNumber':{'type':Sequelize[_0x5bb6('0x6')],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize[_0x5bb6('0x7')](_0x5bb6('0x8'),_0x5bb6('0x9'),'months',_0x5bb6('0xa'),_0x5bb6('0xb'),_0x5bb6('0xc'),_0x5bb6('0xd')),'allowNull':![],'defaultValue':_0x5bb6('0xb')},'output':{'type':Sequelize[_0x5bb6('0x7')]('csv',_0x5bb6('0xe'),_0x5bb6('0xf')),'allowNull':![],'defaultValue':_0x5bb6('0x10')},'type':{'type':Sequelize[_0x5bb6('0x7')](_0x5bb6('0x11'),'default'),'allowNull':![],'defaultValue':_0x5bb6('0x11')},'sendMail':{'type':Sequelize[_0x5bb6('0x3')],'defaultValue':![]},'email':{'type':Sequelize[_0x5bb6('0x2')]},'cc':{'type':Sequelize[_0x5bb6('0x12')]},'bcc':{'type':Sequelize[_0x5bb6('0x12')]},'sendIfEmpty':{'type':Sequelize[_0x5bb6('0x3')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x2cb8=['xlsx','custom','default','TEXT','sequelize','STRING','BOOLEAN','DATE','INTEGER','ENUM','quarters','weeks','days','hours','minutes','csv','pdf'];(function(_0x496357,_0x4d928c){var _0x3a3652=function(_0x31a145){while(--_0x31a145){_0x496357['push'](_0x496357['shift']());}};_0x3a3652(++_0x4d928c);}(_0x2cb8,0x103));var _0x82cb=function(_0xbf098b,_0x269d81){_0xbf098b=_0xbf098b-0x0;var _0x2f1446=_0x2cb8[_0xbf098b];return _0x2f1446;};'use strict';var Sequelize=require(_0x82cb('0x0'));module['exports']={'name':{'type':Sequelize[_0x82cb('0x1')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'active':{'type':Sequelize[_0x82cb('0x2')],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'0\x200\x20*\x20*\x20*'},'startAt':{'type':Sequelize['DATE'],'allowNull':![]},'endAt':{'type':Sequelize[_0x82cb('0x3')],'allowNull':![]},'subtractNumber':{'type':Sequelize[_0x82cb('0x4')],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize[_0x82cb('0x5')]('years',_0x82cb('0x6'),'months',_0x82cb('0x7'),_0x82cb('0x8'),_0x82cb('0x9'),_0x82cb('0xa')),'allowNull':![],'defaultValue':_0x82cb('0x8')},'output':{'type':Sequelize['ENUM'](_0x82cb('0xb'),_0x82cb('0xc'),_0x82cb('0xd')),'allowNull':![],'defaultValue':_0x82cb('0xb')},'type':{'type':Sequelize[_0x82cb('0x5')](_0x82cb('0xe'),_0x82cb('0xf')),'allowNull':![],'defaultValue':_0x82cb('0xe')},'sendMail':{'type':Sequelize[_0x82cb('0x2')],'defaultValue':![]},'email':{'type':Sequelize[_0x82cb('0x1')]},'cc':{'type':Sequelize['TEXT']},'bcc':{'type':Sequelize[_0x82cb('0x10')]},'sendIfEmpty':{'type':Sequelize[_0x82cb('0x2')],'defaultValue':!![]}};
\ No newline at end of file
index 4263787..dff3361 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4f6=['user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','../../config/schedule','run','rimraf','fast-json-patch','request-promise','moment','util','path','sox','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/environment','../../config/license/util','sendStatus','status','end','json','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','get','Scheduler','UserProfileResource','error','stack','name','send','map','rawAttributes','fieldName','type','key','keys','query','intersection','model','attributes','fields','hasOwnProperty','nolimit','offset','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','Schedule','include','findAll','catch','length','find','create','body'];(function(_0x23e81d,_0x1e6cf0){var _0x2d255d=function(_0x2f08dc){while(--_0x2f08dc){_0x23e81d['push'](_0x23e81d['shift']());}};_0x2d255d(++_0x1e6cf0);}(_0xf4f6,0x193));var _0x6f4f=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0xf4f6[_0xfae23b];return _0x200640;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x6f4f('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x6f4f('0x1'));var rp=require(_0x6f4f('0x2'));var moment=require(_0x6f4f('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x6f4f('0x4'));var path=require(_0x6f4f('0x5'));var sox=require(_0x6f4f('0x6'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6f4f('0x7'));var _=require(_0x6f4f('0x8'));var squel=require(_0x6f4f('0x9'));var crypto=require('crypto');var jsforce=require(_0x6f4f('0xa'));var deskjs=require(_0x6f4f('0xb'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x6f4f('0xc'));var Redis=require(_0x6f4f('0xd'));var authService=require(_0x6f4f('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x6f4f('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x6f4f('0x10'));var utils=require('../../config/utils');var config=require(_0x6f4f('0x11'));var licenseUtil=require(_0x6f4f('0x12'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x23146c,_0x3305f6){_0x3305f6=_0x3305f6||0xcc;return function(_0x491b40){if(_0x491b40){return _0x23146c[_0x6f4f('0x13')](_0x3305f6);}return _0x23146c[_0x6f4f('0x14')](_0x3305f6)[_0x6f4f('0x15')]();};}function respondWithResult(_0x266600,_0x147c96){_0x147c96=_0x147c96||0xc8;return function(_0x1d97c4){if(_0x1d97c4){return _0x266600[_0x6f4f('0x14')](_0x147c96)[_0x6f4f('0x16')](_0x1d97c4);}};}function respondWithFilteredResult(_0x517435,_0x3eed2f){return function(_0x103faf){if(_0x103faf){var _0xfc00c0=typeof _0x3eed2f['offset']===_0x6f4f('0x17')&&typeof _0x3eed2f[_0x6f4f('0x18')]===_0x6f4f('0x17');var _0x56a57f=_0x103faf[_0x6f4f('0x19')];var _0x18e1dd=_0xfc00c0?0x0:_0x3eed2f['offset'];var _0x192926=_0xfc00c0?_0x103faf['count']:_0x3eed2f['offset']+_0x3eed2f[_0x6f4f('0x18')];var _0xfd4ab9;if(_0x192926>=_0x56a57f){_0x192926=_0x56a57f;_0xfd4ab9=0xc8;}else{_0xfd4ab9=0xce;}_0x517435['status'](_0xfd4ab9);return _0x517435[_0x6f4f('0x1a')](_0x6f4f('0x1b'),_0x18e1dd+'-'+_0x192926+'/'+_0x56a57f)[_0x6f4f('0x16')](_0x103faf);}return null;};}function patchUpdates(_0x3f6488){return function(_0x171634){try{jsonpatch[_0x6f4f('0x1c')](_0x171634,_0x3f6488,!![]);}catch(_0x1e4df1){return BPromise[_0x6f4f('0x1d')](_0x1e4df1);}return _0x171634['save']();};}function saveUpdates(_0x5f2958,_0x472589){return function(_0x234124){if(_0x234124){return _0x234124[_0x6f4f('0x1e')](_0x5f2958)[_0x6f4f('0x1f')](function(_0x12701e){return _0x12701e;});}return null;};}function removeEntity(_0x4fdcb0,_0x33a606){return function(_0x1cf61e){if(_0x1cf61e){return _0x1cf61e[_0x6f4f('0x20')]()[_0x6f4f('0x1f')](function(){var _0x37269b=_0x1cf61e[_0x6f4f('0x21')]({'plain':!![]});var _0x130fa4=_0x6f4f('0x22');return db[_0x6f4f('0x23')][_0x6f4f('0x20')]({'where':{'type':_0x130fa4,'resourceId':_0x37269b['id']}})[_0x6f4f('0x1f')](function(){return _0x1cf61e;});})[_0x6f4f('0x1f')](function(){_0x4fdcb0[_0x6f4f('0x14')](0xcc)[_0x6f4f('0x15')]();});}};}function handleEntityNotFound(_0x330683,_0x47ae77){return function(_0x5e4cb0){if(!_0x5e4cb0){_0x330683['sendStatus'](0x194);}return _0x5e4cb0;};}function handleError(_0x38cfd2,_0x13006e){_0x13006e=_0x13006e||0x1f4;return function(_0x2afc65){logger[_0x6f4f('0x24')](_0x2afc65[_0x6f4f('0x25')]);if(_0x2afc65[_0x6f4f('0x26')]){delete _0x2afc65[_0x6f4f('0x26')];}_0x38cfd2[_0x6f4f('0x14')](_0x13006e)[_0x6f4f('0x27')](_0x2afc65);};}exports['index']=function(_0x2871a7,_0x1698b8){var _0x52e64c={},_0x2d8047={},_0x1638a1={'count':0x0,'rows':[]};var _0x23c824=_[_0x6f4f('0x28')](db['Schedule'][_0x6f4f('0x29')],function(_0x2ca7ad){return{'name':_0x2ca7ad[_0x6f4f('0x2a')],'type':_0x2ca7ad[_0x6f4f('0x2b')][_0x6f4f('0x2c')]};});_0x2d8047['model']=_[_0x6f4f('0x28')](_0x23c824,_0x6f4f('0x26'));_0x2d8047['query']=_[_0x6f4f('0x2d')](_0x2871a7[_0x6f4f('0x2e')]);_0x2d8047['filters']=_[_0x6f4f('0x2f')](_0x2d8047[_0x6f4f('0x30')],_0x2d8047[_0x6f4f('0x2e')]);_0x52e64c[_0x6f4f('0x31')]=_[_0x6f4f('0x2f')](_0x2d8047[_0x6f4f('0x30')],qs[_0x6f4f('0x32')](_0x2871a7[_0x6f4f('0x2e')][_0x6f4f('0x32')]));_0x52e64c[_0x6f4f('0x31')]=_0x52e64c[_0x6f4f('0x31')]['length']?_0x52e64c[_0x6f4f('0x31')]:_0x2d8047[_0x6f4f('0x30')];if(!_0x2871a7['query'][_0x6f4f('0x33')](_0x6f4f('0x34'))){_0x52e64c[_0x6f4f('0x18')]=qs['limit'](_0x2871a7[_0x6f4f('0x2e')][_0x6f4f('0x18')]);_0x52e64c[_0x6f4f('0x35')]=qs[_0x6f4f('0x35')](_0x2871a7[_0x6f4f('0x2e')]['offset']);}_0x52e64c[_0x6f4f('0x36')]=qs['sort'](_0x2871a7['query'][_0x6f4f('0x37')]);_0x52e64c[_0x6f4f('0x38')]=qs[_0x6f4f('0x39')](_[_0x6f4f('0x3a')](_0x2871a7[_0x6f4f('0x2e')],_0x2d8047[_0x6f4f('0x39')]),_0x23c824);if(_0x2871a7['query'][_0x6f4f('0x3b')]){_0x52e64c['where']=_[_0x6f4f('0x3c')](_0x52e64c[_0x6f4f('0x38')],{'$or':_[_0x6f4f('0x28')](_0x23c824,function(_0x28c842){if(_0x28c842['type']!==_0x6f4f('0x3d')){var _0x2c73d1={};_0x2c73d1[_0x28c842[_0x6f4f('0x26')]]={'$like':'%'+_0x2871a7[_0x6f4f('0x2e')]['filter']+'%'};return _0x2c73d1;}})});}_0x52e64c=_[_0x6f4f('0x3c')]({},_0x52e64c,_0x2871a7[_0x6f4f('0x3e')]);var _0x476cb7={'where':_0x52e64c['where']};return db[_0x6f4f('0x3f')]['count'](_0x476cb7)['then'](function(_0x474113){_0x1638a1[_0x6f4f('0x19')]=_0x474113;if(_0x2871a7[_0x6f4f('0x2e')]['includeAll']){_0x52e64c[_0x6f4f('0x40')]=[{'all':!![]}];}return db['Schedule'][_0x6f4f('0x41')](_0x52e64c);})[_0x6f4f('0x1f')](function(_0x33c661){_0x1638a1['rows']=_0x33c661;return _0x1638a1;})[_0x6f4f('0x1f')](respondWithFilteredResult(_0x1698b8,_0x52e64c))[_0x6f4f('0x42')](handleError(_0x1698b8,null));};exports['show']=function(_0x5d1219,_0x3ca8cf){var _0x1526d7={'raw':![],'where':{'id':_0x5d1219['params']['id']}},_0x3d3cf4={};_0x3d3cf4[_0x6f4f('0x30')]=_['keys'](db[_0x6f4f('0x3f')][_0x6f4f('0x29')]);_0x3d3cf4[_0x6f4f('0x2e')]=_[_0x6f4f('0x2d')](_0x5d1219['query']);_0x3d3cf4[_0x6f4f('0x39')]=_[_0x6f4f('0x2f')](_0x3d3cf4[_0x6f4f('0x30')],_0x3d3cf4[_0x6f4f('0x2e')]);_0x1526d7[_0x6f4f('0x31')]=_['intersection'](_0x3d3cf4[_0x6f4f('0x30')],qs['fields'](_0x5d1219['query'][_0x6f4f('0x32')]));_0x1526d7['attributes']=_0x1526d7[_0x6f4f('0x31')][_0x6f4f('0x43')]?_0x1526d7[_0x6f4f('0x31')]:_0x3d3cf4[_0x6f4f('0x30')];if(_0x5d1219[_0x6f4f('0x2e')]['includeAll']){_0x1526d7[_0x6f4f('0x40')]=[{'all':!![]}];}_0x1526d7=_['merge']({},_0x1526d7,_0x5d1219['options']);return db[_0x6f4f('0x3f')][_0x6f4f('0x44')](_0x1526d7)[_0x6f4f('0x1f')](handleEntityNotFound(_0x3ca8cf,null))[_0x6f4f('0x1f')](respondWithResult(_0x3ca8cf,null))[_0x6f4f('0x42')](handleError(_0x3ca8cf,null));};exports[_0x6f4f('0x45')]=function(_0x269384,_0x316320){return db[_0x6f4f('0x3f')]['create'](_0x269384[_0x6f4f('0x46')],{})['then'](function(_0x5854a0){var _0x45f726=_0x269384[_0x6f4f('0x47')][_0x6f4f('0x21')]({'plain':!![]});if(!_0x45f726)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x45f726['role']===_0x6f4f('0x47')){var _0x4da4e8=_0x5854a0[_0x6f4f('0x21')]({'plain':!![]});var _0x1e32b5=_0x6f4f('0x22');return db[_0x6f4f('0x48')][_0x6f4f('0x44')]({'where':{'name':_0x1e32b5,'userProfileId':_0x45f726[_0x6f4f('0x49')]},'raw':!![]})['then'](function(_0x3e904d){if(_0x3e904d&&_0x3e904d[_0x6f4f('0x4a')]===0x0){return db['UserProfileResource'][_0x6f4f('0x45')]({'name':_0x4da4e8[_0x6f4f('0x26')],'resourceId':_0x4da4e8['id'],'type':_0x3e904d[_0x6f4f('0x26')],'sectionId':_0x3e904d['id']},{})[_0x6f4f('0x1f')](function(){return _0x5854a0;});}else{return _0x5854a0;}})[_0x6f4f('0x42')](function(_0x38e8c9){logger['error'](_0x6f4f('0x4b'),_0x38e8c9);throw _0x38e8c9;});}return _0x5854a0;})[_0x6f4f('0x1f')](respondWithResult(_0x316320,0xc9))['catch'](handleError(_0x316320,null));};exports[_0x6f4f('0x1e')]=function(_0x53d49f,_0x3b2c69){if(_0x53d49f['body']['id']){delete _0x53d49f['body']['id'];}return db[_0x6f4f('0x3f')][_0x6f4f('0x44')]({'where':{'id':_0x53d49f[_0x6f4f('0x4c')]['id']}})[_0x6f4f('0x1f')](handleEntityNotFound(_0x3b2c69,null))[_0x6f4f('0x1f')](saveUpdates(_0x53d49f['body'],null))[_0x6f4f('0x1f')](respondWithResult(_0x3b2c69,null))[_0x6f4f('0x42')](handleError(_0x3b2c69,null));};exports['destroy']=function(_0x3f5f5b,_0x1e6bcc){return db[_0x6f4f('0x3f')]['find']({'where':{'id':_0x3f5f5b['params']['id']}})[_0x6f4f('0x1f')](handleEntityNotFound(_0x1e6bcc,null))[_0x6f4f('0x1f')](removeEntity(_0x1e6bcc,null))[_0x6f4f('0x42')](handleError(_0x1e6bcc,null));};exports['run']=function(_0x4aecf1,_0x57cecb,_0x58be63){var _0x564627=require(_0x6f4f('0x4d'));return db[_0x6f4f('0x3f')][_0x6f4f('0x44')]({'where':{'id':_0x4aecf1[_0x6f4f('0x4c')]['id']},'raw':!![]})[_0x6f4f('0x1f')](handleEntityNotFound(_0x57cecb,null))[_0x6f4f('0x1f')](function(){_0x564627[_0x6f4f('0x4e')](_0x4aecf1[_0x6f4f('0x4c')]['id']);})['then'](respondWithStatusCode(_0x57cecb,null))[_0x6f4f('0x42')](handleError(_0x57cecb,null));};
\ No newline at end of file
+var _0x86fd=['apply','reject','save','update','then','Scheduler','UserProfileResource','destroy','end','error','stack','name','send','index','map','Schedule','rawAttributes','fieldName','type','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','options','count','rows','catch','show','includeAll','include','merge','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','params','run','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','sendStatus','status','json','offset','undefined','limit','Content-Range'];(function(_0x298ed3,_0x4ab5e1){var _0x5aad28=function(_0x168687){while(--_0x168687){_0x298ed3['push'](_0x298ed3['shift']());}};_0x5aad28(++_0x4ab5e1);}(_0x86fd,0x182));var _0xd86f=function(_0x580576,_0x2f107d){_0x580576=_0x580576-0x0;var _0x3f55a0=_0x86fd[_0x580576];return _0x3f55a0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xd86f('0x0'));var zipdir=require(_0xd86f('0x1'));var jsonpatch=require(_0xd86f('0x2'));var rp=require(_0xd86f('0x3'));var moment=require(_0xd86f('0x4'));var BPromise=require(_0xd86f('0x5'));var Mustache=require(_0xd86f('0x6'));var util=require(_0xd86f('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0xd86f('0x8'));var ejs=require(_0xd86f('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xd86f('0xa'));var squel=require(_0xd86f('0xb'));var crypto=require(_0xd86f('0xc'));var jsforce=require(_0xd86f('0xd'));var deskjs=require(_0xd86f('0xe'));var toCsv=require(_0xd86f('0x8'));var querystring=require('querystring');var Papa=require(_0xd86f('0xf'));var Redis=require('ioredis');var authService=require(_0xd86f('0x10'));var qs=require(_0xd86f('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xd86f('0x12'));var logger=require('../../config/logger')(_0xd86f('0x13'));var utils=require(_0xd86f('0x14'));var config=require(_0xd86f('0x15'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x37cbfb,_0x22418d){_0x22418d=_0x22418d||0xcc;return function(_0x5a57de){if(_0x5a57de){return _0x37cbfb[_0xd86f('0x16')](_0x22418d);}return _0x37cbfb[_0xd86f('0x17')](_0x22418d)['end']();};}function respondWithResult(_0x1b2f50,_0xc12661){_0xc12661=_0xc12661||0xc8;return function(_0x5de6d6){if(_0x5de6d6){return _0x1b2f50[_0xd86f('0x17')](_0xc12661)[_0xd86f('0x18')](_0x5de6d6);}};}function respondWithFilteredResult(_0x1c0657,_0x3ef948){return function(_0x57eae0){if(_0x57eae0){var _0x41a149=typeof _0x3ef948[_0xd86f('0x19')]===_0xd86f('0x1a')&&typeof _0x3ef948[_0xd86f('0x1b')]===_0xd86f('0x1a');var _0x43107b=_0x57eae0['count'];var _0x452f66=_0x41a149?0x0:_0x3ef948[_0xd86f('0x19')];var _0x2bc0eb=_0x41a149?_0x57eae0['count']:_0x3ef948[_0xd86f('0x19')]+_0x3ef948['limit'];var _0x33ce16;if(_0x2bc0eb>=_0x43107b){_0x2bc0eb=_0x43107b;_0x33ce16=0xc8;}else{_0x33ce16=0xce;}_0x1c0657[_0xd86f('0x17')](_0x33ce16);return _0x1c0657['set'](_0xd86f('0x1c'),_0x452f66+'-'+_0x2bc0eb+'/'+_0x43107b)[_0xd86f('0x18')](_0x57eae0);}return null;};}function patchUpdates(_0x2e0678){return function(_0x256c72){try{jsonpatch[_0xd86f('0x1d')](_0x256c72,_0x2e0678,!![]);}catch(_0x38d85d){return BPromise[_0xd86f('0x1e')](_0x38d85d);}return _0x256c72[_0xd86f('0x1f')]();};}function saveUpdates(_0x3a3d99,_0x1a8a99){return function(_0x51a4fc){if(_0x51a4fc){return _0x51a4fc[_0xd86f('0x20')](_0x3a3d99)[_0xd86f('0x21')](function(_0x4684fc){return _0x4684fc;});}return null;};}function removeEntity(_0x15f03d,_0x3dcf14){return function(_0x2f8388){if(_0x2f8388){return _0x2f8388['destroy']()[_0xd86f('0x21')](function(){var _0x5a1d05=_0x2f8388['get']({'plain':!![]});var _0x6059e6=_0xd86f('0x22');return db[_0xd86f('0x23')][_0xd86f('0x24')]({'where':{'type':_0x6059e6,'resourceId':_0x5a1d05['id']}})['then'](function(){return _0x2f8388;});})['then'](function(){_0x15f03d[_0xd86f('0x17')](0xcc)[_0xd86f('0x25')]();});}};}function handleEntityNotFound(_0x2e8d99,_0x56aeec){return function(_0x33b07a){if(!_0x33b07a){_0x2e8d99[_0xd86f('0x16')](0x194);}return _0x33b07a;};}function handleError(_0x2d6858,_0x392a10){_0x392a10=_0x392a10||0x1f4;return function(_0x5ea70f){logger[_0xd86f('0x26')](_0x5ea70f[_0xd86f('0x27')]);if(_0x5ea70f[_0xd86f('0x28')]){delete _0x5ea70f[_0xd86f('0x28')];}_0x2d6858[_0xd86f('0x17')](_0x392a10)[_0xd86f('0x29')](_0x5ea70f);};}exports[_0xd86f('0x2a')]=function(_0xf5d643,_0x5859a5){var _0x199f54={},_0xa4e284={},_0x14cb56={'count':0x0,'rows':[]};var _0x595344=_[_0xd86f('0x2b')](db[_0xd86f('0x2c')][_0xd86f('0x2d')],function(_0x2c76c3){return{'name':_0x2c76c3[_0xd86f('0x2e')],'type':_0x2c76c3[_0xd86f('0x2f')]['key']};});_0xa4e284[_0xd86f('0x30')]=_['map'](_0x595344,_0xd86f('0x28'));_0xa4e284[_0xd86f('0x31')]=_[_0xd86f('0x32')](_0xf5d643[_0xd86f('0x31')]);_0xa4e284[_0xd86f('0x33')]=_[_0xd86f('0x34')](_0xa4e284['model'],_0xa4e284['query']);_0x199f54['attributes']=_['intersection'](_0xa4e284[_0xd86f('0x30')],qs[_0xd86f('0x35')](_0xf5d643['query']['fields']));_0x199f54[_0xd86f('0x36')]=_0x199f54[_0xd86f('0x36')][_0xd86f('0x37')]?_0x199f54[_0xd86f('0x36')]:_0xa4e284[_0xd86f('0x30')];if(!_0xf5d643['query'][_0xd86f('0x38')](_0xd86f('0x39'))){_0x199f54['limit']=qs['limit'](_0xf5d643['query'][_0xd86f('0x1b')]);_0x199f54['offset']=qs['offset'](_0xf5d643[_0xd86f('0x31')][_0xd86f('0x19')]);}_0x199f54[_0xd86f('0x3a')]=qs['sort'](_0xf5d643['query'][_0xd86f('0x3b')]);_0x199f54[_0xd86f('0x3c')]=qs[_0xd86f('0x33')](_[_0xd86f('0x3d')](_0xf5d643[_0xd86f('0x31')],_0xa4e284[_0xd86f('0x33')]),_0x595344);if(_0xf5d643[_0xd86f('0x31')][_0xd86f('0x3e')]){_0x199f54[_0xd86f('0x3c')]=_['merge'](_0x199f54[_0xd86f('0x3c')],{'$or':_[_0xd86f('0x2b')](_0x595344,function(_0x251b31){if(_0x251b31[_0xd86f('0x2f')]!==_0xd86f('0x3f')){var _0x1dc228={};_0x1dc228[_0x251b31[_0xd86f('0x28')]]={'$like':'%'+_0xf5d643[_0xd86f('0x31')][_0xd86f('0x3e')]+'%'};return _0x1dc228;}})});}_0x199f54=_['merge']({},_0x199f54,_0xf5d643[_0xd86f('0x40')]);var _0x359553={'where':_0x199f54[_0xd86f('0x3c')]};return db[_0xd86f('0x2c')][_0xd86f('0x41')](_0x359553)[_0xd86f('0x21')](function(_0x21dc1b){_0x14cb56[_0xd86f('0x41')]=_0x21dc1b;if(_0xf5d643[_0xd86f('0x31')]['includeAll']){_0x199f54['include']=[{'all':!![]}];}return db[_0xd86f('0x2c')]['findAll'](_0x199f54);})['then'](function(_0x31aeb4){_0x14cb56[_0xd86f('0x42')]=_0x31aeb4;return _0x14cb56;})[_0xd86f('0x21')](respondWithFilteredResult(_0x5859a5,_0x199f54))[_0xd86f('0x43')](handleError(_0x5859a5,null));};exports[_0xd86f('0x44')]=function(_0x503e6f,_0x4b1536){var _0x404851={'raw':![],'where':{'id':_0x503e6f['params']['id']}},_0x2dd0c5={};_0x2dd0c5['model']=_[_0xd86f('0x32')](db[_0xd86f('0x2c')]['rawAttributes']);_0x2dd0c5[_0xd86f('0x31')]=_['keys'](_0x503e6f['query']);_0x2dd0c5[_0xd86f('0x33')]=_[_0xd86f('0x34')](_0x2dd0c5[_0xd86f('0x30')],_0x2dd0c5[_0xd86f('0x31')]);_0x404851['attributes']=_[_0xd86f('0x34')](_0x2dd0c5[_0xd86f('0x30')],qs[_0xd86f('0x35')](_0x503e6f[_0xd86f('0x31')][_0xd86f('0x35')]));_0x404851[_0xd86f('0x36')]=_0x404851[_0xd86f('0x36')][_0xd86f('0x37')]?_0x404851['attributes']:_0x2dd0c5['model'];if(_0x503e6f['query'][_0xd86f('0x45')]){_0x404851[_0xd86f('0x46')]=[{'all':!![]}];}_0x404851=_[_0xd86f('0x47')]({},_0x404851,_0x503e6f[_0xd86f('0x40')]);return db[_0xd86f('0x2c')][_0xd86f('0x48')](_0x404851)[_0xd86f('0x21')](handleEntityNotFound(_0x4b1536,null))[_0xd86f('0x21')](respondWithResult(_0x4b1536,null))[_0xd86f('0x43')](handleError(_0x4b1536,null));};exports[_0xd86f('0x49')]=function(_0x17886f,_0x36360c){return db[_0xd86f('0x2c')]['create'](_0x17886f[_0xd86f('0x4a')],{})['then'](function(_0x34bf90){var _0x36f4c6=_0x17886f[_0xd86f('0x4b')][_0xd86f('0x4c')]({'plain':!![]});if(!_0x36f4c6)throw new Error(_0xd86f('0x4d'));if(_0x36f4c6[_0xd86f('0x4e')]===_0xd86f('0x4b')){var _0x7a41b2=_0x34bf90[_0xd86f('0x4c')]({'plain':!![]});var _0x1018df='Scheduler';return db['UserProfileSection'][_0xd86f('0x48')]({'where':{'name':_0x1018df,'userProfileId':_0x36f4c6[_0xd86f('0x4f')]},'raw':!![]})['then'](function(_0x5166ad){if(_0x5166ad&&_0x5166ad[_0xd86f('0x50')]===0x0){return db[_0xd86f('0x23')]['create']({'name':_0x7a41b2[_0xd86f('0x28')],'resourceId':_0x7a41b2['id'],'type':_0x5166ad[_0xd86f('0x28')],'sectionId':_0x5166ad['id']},{})['then'](function(){return _0x34bf90;});}else{return _0x34bf90;}})['catch'](function(_0x15d46b){logger[_0xd86f('0x26')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x15d46b);throw _0x15d46b;});}return _0x34bf90;})['then'](respondWithResult(_0x36360c,0xc9))[_0xd86f('0x43')](handleError(_0x36360c,null));};exports[_0xd86f('0x20')]=function(_0x3fea10,_0x24d7e4){if(_0x3fea10[_0xd86f('0x4a')]['id']){delete _0x3fea10['body']['id'];}return db['Schedule'][_0xd86f('0x48')]({'where':{'id':_0x3fea10[_0xd86f('0x51')]['id']}})['then'](handleEntityNotFound(_0x24d7e4,null))[_0xd86f('0x21')](saveUpdates(_0x3fea10[_0xd86f('0x4a')],null))[_0xd86f('0x21')](respondWithResult(_0x24d7e4,null))[_0xd86f('0x43')](handleError(_0x24d7e4,null));};exports['destroy']=function(_0x385f6d,_0x49333a){return db[_0xd86f('0x2c')][_0xd86f('0x48')]({'where':{'id':_0x385f6d[_0xd86f('0x51')]['id']}})[_0xd86f('0x21')](handleEntityNotFound(_0x49333a,null))[_0xd86f('0x21')](removeEntity(_0x49333a,null))[_0xd86f('0x43')](handleError(_0x49333a,null));};exports[_0xd86f('0x52')]=function(_0x935bcb,_0x206993,_0x4834b7){var _0x40f276=require('../../config/schedule');return db[_0xd86f('0x2c')][_0xd86f('0x48')]({'where':{'id':_0x935bcb['params']['id']},'raw':!![]})[_0xd86f('0x21')](handleEntityNotFound(_0x206993,null))[_0xd86f('0x21')](function(){_0x40f276[_0xd86f('0x52')](_0x935bcb[_0xd86f('0x51')]['id']);})[_0xd86f('0x21')](respondWithStatusCode(_0x206993,null))[_0xd86f('0x43')](handleError(_0x206993,null));};
\ No newline at end of file
index 0efac60..e3d28a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x342f=['tools_schedules','lodash','api','request-promise','path','../../config/environment','./schedule.attributes','exports','Schedule'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0x342f,0x172));var _0xf342=function(_0x5c416e,_0x469158){_0x5c416e=_0x5c416e-0x0;var _0x4f4f03=_0x342f[_0x5c416e];return _0x4f4f03;};'use strict';var _=require(_0xf342('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xf342('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xf342('0x2'));var fs=require('fs');var path=require(_0xf342('0x3'));var rimraf=require('rimraf');var config=require(_0xf342('0x4'));var attributes=require(_0xf342('0x5'));module[_0xf342('0x6')]=function(_0x373efa,_0x7a35ea){return _0x373efa['define'](_0xf342('0x7'),attributes,{'tableName':_0xf342('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6505=['request-promise','path','../../config/environment','./schedule.attributes','exports','define','Schedule','tools_schedules','util','../../config/logger','moment','bluebird'];(function(_0x5851fa,_0x4ada57){var _0x52e1aa=function(_0x43a1df){while(--_0x43a1df){_0x5851fa['push'](_0x5851fa['shift']());}};_0x52e1aa(++_0x4ada57);}(_0x6505,0x194));var _0x5650=function(_0x3d738e,_0x585ea){_0x3d738e=_0x3d738e-0x0;var _0x36c5c1=_0x6505[_0x3d738e];return _0x36c5c1;};'use strict';var _=require('lodash');var util=require(_0x5650('0x0'));var logger=require(_0x5650('0x1'))('api');var moment=require(_0x5650('0x2'));var BPromise=require(_0x5650('0x3'));var rp=require(_0x5650('0x4'));var fs=require('fs');var path=require(_0x5650('0x5'));var rimraf=require('rimraf');var config=require(_0x5650('0x6'));var attributes=require(_0x5650('0x7'));module[_0x5650('0x8')]=function(_0x2d570f,_0x5e4303){return _0x2d570f[_0x5650('0x9')](_0x5650('0xa'),attributes,{'tableName':_0x5650('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b67cc64..5d4188d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x427a=['../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','request','then','info','request\x20sent','debug','stringify','error','Schedule,\x20%s,\x20%s','message','result','catch','lodash','moment','randomstring'];(function(_0x5e9250,_0x1991f2){var _0xe2e414=function(_0x118535){while(--_0x118535){_0x5e9250['push'](_0x5e9250['shift']());}};_0xe2e414(++_0x1991f2);}(_0x427a,0x18d));var _0xa427=function(_0x2cd051,_0x458b28){_0x2cd051=_0x2cd051-0x0;var _0x36a151=_0x427a[_0x2cd051];return _0x36a151;};'use strict';var _=require(_0xa427('0x0'));var util=require('util');var moment=require(_0xa427('0x1'));var BPromise=require('bluebird');var rs=require(_0xa427('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa427('0x3'))['db'];var utils=require(_0xa427('0x4'));var logger=require(_0xa427('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0xa427('0x6'));var client=jayson[_0xa427('0x7')][_0xa427('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1e893a,_0x149f9f,_0x1611e2){return new BPromise(function(_0x595a1e,_0x402fe7){return client[_0xa427('0x9')](_0x1e893a,_0x1611e2)[_0xa427('0xa')](function(_0x8d0edc){logger[_0xa427('0xb')]('Schedule,\x20%s,\x20%s',_0x149f9f,_0xa427('0xc'));logger[_0xa427('0xd')]('Schedule,\x20%s,\x20%s,\x20%s',_0x149f9f,_0xa427('0xc'),JSON[_0xa427('0xe')](_0x8d0edc));if(_0x8d0edc[_0xa427('0xf')]){if(_0x8d0edc[_0xa427('0xf')]['code']===0x1f4){logger[_0xa427('0xf')]('Schedule,\x20%s,\x20%s',_0x149f9f,_0x8d0edc[_0xa427('0xf')]['message']);return _0x402fe7(_0x8d0edc['error']['message']);}logger[_0xa427('0xf')](_0xa427('0x10'),_0x149f9f,_0x8d0edc['error']['message']);return _0x595a1e(_0x8d0edc[_0xa427('0xf')][_0xa427('0x11')]);}else{logger[_0xa427('0xb')](_0xa427('0x10'),_0x149f9f,'request\x20sent');_0x595a1e(_0x8d0edc[_0xa427('0x12')][_0xa427('0x11')]);}})[_0xa427('0x13')](function(_0x85dcc8){logger[_0xa427('0xf')]('Schedule,\x20%s,\x20%s',_0x149f9f,_0x85dcc8);_0x402fe7(_0x85dcc8);});});}
\ No newline at end of file
+var _0x1186=['then','info','request\x20sent','debug','stringify','error','code','Schedule,\x20%s,\x20%s','message','result','catch','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request'];(function(_0x4ae794,_0x16b450){var _0x2b1f58=function(_0x482329){while(--_0x482329){_0x4ae794['push'](_0x4ae794['shift']());}};_0x2b1f58(++_0x16b450);}(_0x1186,0x1ee));var _0x6118=function(_0x5ad367,_0x8b08a3){_0x5ad367=_0x5ad367-0x0;var _0x4a1242=_0x1186[_0x5ad367];return _0x4a1242;};'use strict';var _=require(_0x6118('0x0'));var util=require(_0x6118('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x6118('0x2'));var fs=require('fs');var Redis=require(_0x6118('0x3'));var db=require(_0x6118('0x4'))['db'];var utils=require(_0x6118('0x5'));var logger=require('../../config/logger')(_0x6118('0x6'));var config=require(_0x6118('0x7'));var jayson=require(_0x6118('0x8'));var client=jayson[_0x6118('0x9')][_0x6118('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5b4549,_0x452226,_0x35ca3d){return new BPromise(function(_0x4ce570,_0xeea35f){return client[_0x6118('0xb')](_0x5b4549,_0x35ca3d)[_0x6118('0xc')](function(_0x352889){logger[_0x6118('0xd')]('Schedule,\x20%s,\x20%s',_0x452226,_0x6118('0xe'));logger[_0x6118('0xf')]('Schedule,\x20%s,\x20%s,\x20%s',_0x452226,'request\x20sent',JSON[_0x6118('0x10')](_0x352889));if(_0x352889[_0x6118('0x11')]){if(_0x352889[_0x6118('0x11')][_0x6118('0x12')]===0x1f4){logger[_0x6118('0x11')](_0x6118('0x13'),_0x452226,_0x352889[_0x6118('0x11')][_0x6118('0x14')]);return _0xeea35f(_0x352889[_0x6118('0x11')]['message']);}logger['error']('Schedule,\x20%s,\x20%s',_0x452226,_0x352889[_0x6118('0x11')][_0x6118('0x14')]);return _0x4ce570(_0x352889['error'][_0x6118('0x14')]);}else{logger[_0x6118('0xd')]('Schedule,\x20%s,\x20%s',_0x452226,'request\x20sent');_0x4ce570(_0x352889[_0x6118('0x15')]['message']);}})[_0x6118('0x16')](function(_0x5f5db2){logger[_0x6118('0x11')](_0x6118('0x13'),_0x452226,_0x5f5db2);_0xeea35f(_0x5f5db2);});});}
\ No newline at end of file
index 10a53b7..ce208ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x379e=['/:id','show','download','post','create','put','update','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./screenRecording.controller','get','isAuthenticated','index','describe'];(function(_0x160148,_0x5c0639){var _0x5d4a2c=function(_0x4e4317){while(--_0x4e4317){_0x160148['push'](_0x160148['shift']());}};_0x5d4a2c(++_0x5c0639);}(_0x379e,0x1a2));var _0xe379=function(_0x44ff6b,_0x13d8e9){_0x44ff6b=_0x44ff6b-0x0;var _0x402226=_0x379e[_0x44ff6b];return _0x402226;};'use strict';var multer=require(_0xe379('0x0'));var util=require(_0xe379('0x1'));var path=require('path');var timeout=require(_0xe379('0x2'));var express=require(_0xe379('0x3'));var router=express[_0xe379('0x4')]();var fs_extra=require(_0xe379('0x5'));var auth=require(_0xe379('0x6'));var interaction=require(_0xe379('0x7'));var config=require(_0xe379('0x8'));var controller=require(_0xe379('0x9'));router[_0xe379('0xa')]('/',auth[_0xe379('0xb')](),controller[_0xe379('0xc')]);router[_0xe379('0xa')]('/describe',auth[_0xe379('0xb')](),controller[_0xe379('0xd')]);router[_0xe379('0xa')](_0xe379('0xe'),auth[_0xe379('0xb')](),controller[_0xe379('0xf')]);router[_0xe379('0xa')]('/:id/download',auth['isAuthenticated'](),controller[_0xe379('0x10')]);router[_0xe379('0x11')]('/',auth[_0xe379('0xb')](),controller[_0xe379('0x12')]);router[_0xe379('0x13')](_0xe379('0xe'),auth[_0xe379('0xb')](),controller[_0xe379('0x14')]);router[_0xe379('0x15')](_0xe379('0xe'),auth['isAuthenticated'](),controller[_0xe379('0x16')]);module[_0xe379('0x17')]=router;
\ No newline at end of file
+var _0xf582=['create','put','update','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./screenRecording.controller','get','isAuthenticated','/describe','describe','/:id','show','post'];(function(_0x489d80,_0xcc8817){var _0x400ca9=function(_0x1e9401){while(--_0x1e9401){_0x489d80['push'](_0x489d80['shift']());}};_0x400ca9(++_0xcc8817);}(_0xf582,0x75));var _0x2f58=function(_0x1526a9,_0x48fb64){_0x1526a9=_0x1526a9-0x0;var _0x9f4049=_0xf582[_0x1526a9];return _0x9f4049;};'use strict';var multer=require(_0x2f58('0x0'));var util=require(_0x2f58('0x1'));var path=require(_0x2f58('0x2'));var timeout=require(_0x2f58('0x3'));var express=require(_0x2f58('0x4'));var router=express['Router']();var fs_extra=require(_0x2f58('0x5'));var auth=require(_0x2f58('0x6'));var interaction=require(_0x2f58('0x7'));var config=require('../../config/environment');var controller=require(_0x2f58('0x8'));router[_0x2f58('0x9')]('/',auth[_0x2f58('0xa')](),controller['index']);router[_0x2f58('0x9')](_0x2f58('0xb'),auth[_0x2f58('0xa')](),controller[_0x2f58('0xc')]);router[_0x2f58('0x9')](_0x2f58('0xd'),auth['isAuthenticated'](),controller[_0x2f58('0xe')]);router[_0x2f58('0x9')]('/:id/download',auth[_0x2f58('0xa')](),controller['download']);router[_0x2f58('0xf')]('/',auth[_0x2f58('0xa')](),controller[_0x2f58('0x10')]);router[_0x2f58('0x11')](_0x2f58('0xd'),auth[_0x2f58('0xa')](),controller[_0x2f58('0x12')]);router['delete'](_0x2f58('0xd'),auth[_0x2f58('0xa')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index be16d48..8d7c7b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d5a=['STRING','replace','setDataValue','INTEGER','startedAt','subtract','closedAt','duration','DATE','format','MM-DD-YYYY\x20HH:mm','toString','createdAt','updatedAt','moment','path','../../config/environment','VIRTUAL','getDataValue','value','extname'];(function(_0x312885,_0x4222f3){var _0x42415e=function(_0x580c61){while(--_0x580c61){_0x312885['push'](_0x312885['shift']());}};_0x42415e(++_0x4222f3);}(_0x4d5a,0x15e));var _0xa4d5=function(_0x618414,_0x1a7a60){_0x618414=_0x618414-0x0;var _0x21c19a=_0x4d5a[_0x618414];return _0x21c19a;};'use strict';var Sequelize=require('sequelize');var moment=require(_0xa4d5('0x0'));var path=require(_0xa4d5('0x1'));var config=require(_0xa4d5('0x2'));module['exports']={'format':{'type':Sequelize[_0xa4d5('0x3')],'get':function(){return this[_0xa4d5('0x4')](_0xa4d5('0x5'))?path[_0xa4d5('0x6')](this['getDataValue'](_0xa4d5('0x5'))):undefined;}},'interactionid':{'type':Sequelize['STRING']},'channel':{'type':Sequelize['STRING']},'value':{'type':Sequelize[_0xa4d5('0x7')],'set':function(_0x1856aa){var _0x166db3=_0x1856aa[_0xa4d5('0x8')](/\\/g,'/');this[_0xa4d5('0x9')](_0xa4d5('0x5'),_0x166db3);}},'rating':{'type':Sequelize[_0xa4d5('0xa')],'validate':{'max':0x5,'min':0x0}},'duration':{'type':Sequelize['INTEGER'],'set':function(_0x5586de){this[_0xa4d5('0x9')](_0xa4d5('0xb'),moment()[_0xa4d5('0xc')](_0x5586de,'ms'));this[_0xa4d5('0x9')](_0xa4d5('0xd'),moment());this[_0xa4d5('0x9')](_0xa4d5('0xe'),_0x5586de);}},'startedAt':{'type':Sequelize[_0xa4d5('0xf')],'get':function(){return moment(this['getDataValue']('startedAt'))[_0xa4d5('0x10')](_0xa4d5('0x11'))[_0xa4d5('0x12')]();}},'closedAt':{'type':Sequelize[_0xa4d5('0xf')],'get':function(){return moment(this['getDataValue']('closedAt'))[_0xa4d5('0x10')](_0xa4d5('0x11'))[_0xa4d5('0x12')]();}},'createdAt':{'type':Sequelize[_0xa4d5('0xf')],'get':function(){return moment(this[_0xa4d5('0x4')](_0xa4d5('0x13')))['format']('MM-DD-YYYY\x20HH:mm')[_0xa4d5('0x12')]();}},'updatedAt':{'type':Sequelize[_0xa4d5('0xf')],'get':function(){return moment(this['getDataValue'](_0xa4d5('0x14')))[_0xa4d5('0x10')](_0xa4d5('0x11'))[_0xa4d5('0x12')]();}}};
\ No newline at end of file
+var _0x7d8a=['exports','VIRTUAL','getDataValue','value','extname','STRING','replace','setDataValue','INTEGER','startedAt','duration','format','MM-DD-YYYY\x20HH:mm','toString','closedAt','DATE','createdAt','updatedAt','sequelize','moment','path','../../config/environment'];(function(_0x383627,_0x5be16e){var _0x2c16a0=function(_0x569b72){while(--_0x569b72){_0x383627['push'](_0x383627['shift']());}};_0x2c16a0(++_0x5be16e);}(_0x7d8a,0x1ca));var _0xa7d8=function(_0x50a0c2,_0x4befab){_0x50a0c2=_0x50a0c2-0x0;var _0x5ebadd=_0x7d8a[_0x50a0c2];return _0x5ebadd;};'use strict';var Sequelize=require(_0xa7d8('0x0'));var moment=require(_0xa7d8('0x1'));var path=require(_0xa7d8('0x2'));var config=require(_0xa7d8('0x3'));module[_0xa7d8('0x4')]={'format':{'type':Sequelize[_0xa7d8('0x5')],'get':function(){return this[_0xa7d8('0x6')](_0xa7d8('0x7'))?path[_0xa7d8('0x8')](this[_0xa7d8('0x6')](_0xa7d8('0x7'))):undefined;}},'interactionid':{'type':Sequelize[_0xa7d8('0x9')]},'channel':{'type':Sequelize[_0xa7d8('0x9')]},'value':{'type':Sequelize[_0xa7d8('0x9')],'set':function(_0x55bb66){var _0x410b09=_0x55bb66[_0xa7d8('0xa')](/\\/g,'/');this[_0xa7d8('0xb')](_0xa7d8('0x7'),_0x410b09);}},'rating':{'type':Sequelize[_0xa7d8('0xc')],'validate':{'max':0x5,'min':0x0}},'duration':{'type':Sequelize['INTEGER'],'set':function(_0x40f419){this['setDataValue'](_0xa7d8('0xd'),moment()['subtract'](_0x40f419,'ms'));this[_0xa7d8('0xb')]('closedAt',moment());this[_0xa7d8('0xb')](_0xa7d8('0xe'),_0x40f419);}},'startedAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0xa7d8('0x6')]('startedAt'))[_0xa7d8('0xf')](_0xa7d8('0x10'))[_0xa7d8('0x11')]();}},'closedAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0xa7d8('0x6')](_0xa7d8('0x12')))['format']('MM-DD-YYYY\x20HH:mm')['toString']();}},'createdAt':{'type':Sequelize[_0xa7d8('0x13')],'get':function(){return moment(this[_0xa7d8('0x6')](_0xa7d8('0x14')))[_0xa7d8('0xf')](_0xa7d8('0x10'))[_0xa7d8('0x11')]();}},'updatedAt':{'type':Sequelize[_0xa7d8('0x13')],'get':function(){return moment(this[_0xa7d8('0x6')](_0xa7d8('0x15')))[_0xa7d8('0xf')](_0xa7d8('0x10'))[_0xa7d8('0x11')]();}}};
\ No newline at end of file
index 98fdbec..6b69495 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x33c5=['download','uniqueid','join','root','server/files/screen_recordings','%s.cypher','existsSync','decryptFile','secrets','recording','ScreenRecording\x20not\x20found','filename','unlink','message','Not\x20found','cancellazione\x20fisica\x20documento\x20%s','isNil','info','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','.cypher','unlinkSync','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','stack','name','send','index','map','ScreenRecording','type','key','model','differenceBy','format','query','keys','filters','intersection','attributes','fields','length','order','sort','where','merge','VIRTUAL','filter','options','includeAll','findAll','show','params','include','find','catch','create','body','duration','createdAt','closedAt','value','describe'];(function(_0x771e63,_0x5e93c7){var _0xfa2bc8=function(_0x593325){while(--_0x593325){_0x771e63['push'](_0x771e63['shift']());}};_0xfa2bc8(++_0x5e93c7);}(_0x33c5,0xe6));var _0x533c=function(_0x3b7cc9,_0x18cd9b){_0x3b7cc9=_0x3b7cc9-0x0;var _0x5751ea=_0x33c5[_0x3b7cc9];return _0x5751ea;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x533c('0x0'));var zipdir=require(_0x533c('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x533c('0x2'));var moment=require(_0x533c('0x3'));var BPromise=require(_0x533c('0x4'));var Mustache=require(_0x533c('0x5'));var util=require(_0x533c('0x6'));var path=require('path');var sox=require(_0x533c('0x7'));var csv=require(_0x533c('0x8'));var ejs=require(_0x533c('0x9'));var fs=require('fs');var fs_extra=require(_0x533c('0xa'));var _=require(_0x533c('0xb'));var squel=require(_0x533c('0xc'));var crypto=require(_0x533c('0xd'));var jsforce=require(_0x533c('0xe'));var deskjs=require(_0x533c('0xf'));var toCsv=require(_0x533c('0x8'));var querystring=require(_0x533c('0x10'));var Papa=require(_0x533c('0x11'));var Redis=require(_0x533c('0x12'));var authService=require(_0x533c('0x13'));var qs=require(_0x533c('0x14'));var as=require(_0x533c('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x533c('0x16'))(_0x533c('0x17'));var utils=require(_0x533c('0x18'));var config=require(_0x533c('0x19'));var licenseUtil=require(_0x533c('0x1a'));var db=require(_0x533c('0x1b'))['db'];function respondWithStatusCode(_0x530e10,_0x5c9462){_0x5c9462=_0x5c9462||0xcc;return function(_0xf93007){if(_0xf93007){return _0x530e10[_0x533c('0x1c')](_0x5c9462);}return _0x530e10[_0x533c('0x1d')](_0x5c9462)[_0x533c('0x1e')]();};}function respondWithResult(_0x1a2a83,_0x8d7c66){_0x8d7c66=_0x8d7c66||0xc8;return function(_0xa616ca){if(_0xa616ca){return _0x1a2a83['status'](_0x8d7c66)[_0x533c('0x1f')](_0xa616ca);}};}function respondWithFilteredResult(_0x7c1d33,_0x3f4a5c){return function(_0x3e544f){if(_0x3e544f){var _0x56dfb7=typeof _0x3f4a5c[_0x533c('0x20')]===_0x533c('0x21')&&typeof _0x3f4a5c[_0x533c('0x22')]===_0x533c('0x21');var _0x2854ab=_0x3e544f[_0x533c('0x23')];var _0x1f0a72=_0x56dfb7?0x0:_0x3f4a5c[_0x533c('0x20')];var _0x1f9f85=_0x56dfb7?_0x3e544f[_0x533c('0x23')]:_0x3f4a5c[_0x533c('0x20')]+_0x3f4a5c[_0x533c('0x22')];var _0x78dd72;if(_0x1f9f85>=_0x2854ab){_0x1f9f85=_0x2854ab;_0x78dd72=0xc8;}else{_0x78dd72=0xce;}_0x7c1d33[_0x533c('0x1d')](_0x78dd72);return _0x7c1d33[_0x533c('0x24')](_0x533c('0x25'),_0x1f0a72+'-'+_0x1f9f85+'/'+_0x2854ab)[_0x533c('0x1f')](_0x3e544f);}return null;};}function patchUpdates(_0x2bc58f){return function(_0x4ba0bd){try{jsonpatch[_0x533c('0x26')](_0x4ba0bd,_0x2bc58f,!![]);}catch(_0x51785c){return BPromise['reject'](_0x51785c);}return _0x4ba0bd[_0x533c('0x27')]();};}function saveUpdates(_0x36d4e4,_0x5f5090){return function(_0x21dfd3){if(_0x21dfd3){return _0x21dfd3[_0x533c('0x28')](_0x36d4e4)[_0x533c('0x29')](function(_0x3dd249){return _0x3dd249;});}return null;};}function removeEntity(_0x5ebbe0,_0x3762f7){return function(_0x42c87b){if(_0x42c87b){return _0x42c87b[_0x533c('0x2a')]()[_0x533c('0x29')](function(){_0x5ebbe0[_0x533c('0x1d')](0xcc)[_0x533c('0x1e')]();});}};}function handleEntityNotFound(_0xb51a5,_0x43f669){return function(_0xb1c937){if(!_0xb1c937){_0xb51a5[_0x533c('0x1c')](0x194);}return _0xb1c937;};}function handleError(_0x4d47d0,_0x11d775){_0x11d775=_0x11d775||0x1f4;return function(_0xfab4da){logger['error'](_0xfab4da[_0x533c('0x2b')]);if(_0xfab4da['name']){delete _0xfab4da[_0x533c('0x2c')];}_0x4d47d0[_0x533c('0x1d')](_0x11d775)[_0x533c('0x2d')](_0xfab4da);};}exports[_0x533c('0x2e')]=function(_0x425f60,_0x146a8e){var _0x212d1b={},_0x38d886={},_0x3c559b={'count':0x0,'rows':[]};var _0x2fc7fa=_[_0x533c('0x2f')](db[_0x533c('0x30')]['rawAttributes'],function(_0x370263){return{'name':_0x370263['fieldName'],'type':_0x370263[_0x533c('0x31')][_0x533c('0x32')]};});_0x38d886[_0x533c('0x33')]=_[_0x533c('0x34')](_[_0x533c('0x2f')](_0x2fc7fa,_0x533c('0x2c')),[_0x533c('0x35')]);_0x38d886[_0x533c('0x36')]=_[_0x533c('0x37')](_0x425f60[_0x533c('0x36')]);_0x38d886[_0x533c('0x38')]=_[_0x533c('0x39')](_0x38d886[_0x533c('0x33')],_0x38d886[_0x533c('0x36')]);_0x212d1b[_0x533c('0x3a')]=_['intersection'](_0x38d886[_0x533c('0x33')],qs[_0x533c('0x3b')](_0x425f60[_0x533c('0x36')][_0x533c('0x3b')]));_0x212d1b['attributes']=_0x212d1b[_0x533c('0x3a')][_0x533c('0x3c')]?_0x212d1b[_0x533c('0x3a')]:_0x38d886[_0x533c('0x33')];if(!_0x425f60[_0x533c('0x36')]['hasOwnProperty']('nolimit')){_0x212d1b['limit']=qs['limit'](_0x425f60['query'][_0x533c('0x22')]);_0x212d1b['offset']=qs[_0x533c('0x20')](_0x425f60['query'][_0x533c('0x20')]);}_0x212d1b[_0x533c('0x3d')]=qs[_0x533c('0x3e')](_0x425f60['query'][_0x533c('0x3e')]);_0x212d1b[_0x533c('0x3f')]=qs[_0x533c('0x38')](_['pick'](_0x425f60[_0x533c('0x36')],_0x38d886[_0x533c('0x38')]),_0x2fc7fa);if(_0x425f60[_0x533c('0x36')]['filter']){_0x212d1b[_0x533c('0x3f')]=_[_0x533c('0x40')](_0x212d1b[_0x533c('0x3f')],{'$or':_[_0x533c('0x2f')](_0x2fc7fa,function(_0x454dbc){if(_0x454dbc[_0x533c('0x31')]!==_0x533c('0x41')){var _0x2dbd81={};_0x2dbd81[_0x454dbc[_0x533c('0x2c')]]={'$like':'%'+_0x425f60[_0x533c('0x36')][_0x533c('0x42')]+'%'};return _0x2dbd81;}})});}_0x212d1b=_['merge']({},_0x212d1b,_0x425f60[_0x533c('0x43')]);var _0x784493={'where':_0x212d1b[_0x533c('0x3f')]};return db[_0x533c('0x30')][_0x533c('0x23')](_0x784493)[_0x533c('0x29')](function(_0x5d2bf9){_0x3c559b[_0x533c('0x23')]=_0x5d2bf9;if(_0x425f60[_0x533c('0x36')][_0x533c('0x44')]){_0x212d1b['include']=[{'all':!![]}];}return db[_0x533c('0x30')][_0x533c('0x45')](_0x212d1b);})[_0x533c('0x29')](function(_0x1abd47){_0x3c559b['rows']=_0x1abd47;return _0x3c559b;})[_0x533c('0x29')](respondWithFilteredResult(_0x146a8e,_0x212d1b))['catch'](handleError(_0x146a8e,null));};exports[_0x533c('0x46')]=function(_0x39034e,_0x55a372){var _0x3f4015={'raw':![],'where':{'id':_0x39034e[_0x533c('0x47')]['id']}},_0x3f1e47={};_0x3f1e47['model']=_['keys'](db['ScreenRecording']['rawAttributes']);_0x3f1e47[_0x533c('0x36')]=_['keys'](_0x39034e[_0x533c('0x36')]);_0x3f1e47['filters']=_[_0x533c('0x39')](_0x3f1e47['model'],_0x3f1e47[_0x533c('0x36')]);_0x3f4015[_0x533c('0x3a')]=_['intersection'](_0x3f1e47[_0x533c('0x33')],qs[_0x533c('0x3b')](_0x39034e[_0x533c('0x36')][_0x533c('0x3b')]));_0x3f4015[_0x533c('0x3a')]=_0x3f4015['attributes'][_0x533c('0x3c')]?_0x3f4015[_0x533c('0x3a')]:_0x3f1e47[_0x533c('0x33')];if(_0x39034e[_0x533c('0x36')]['includeAll']){_0x3f4015[_0x533c('0x48')]=[{'all':!![]}];}_0x3f4015=_[_0x533c('0x40')]({},_0x3f4015,_0x39034e['options']);return db['ScreenRecording'][_0x533c('0x49')](_0x3f4015)['then'](handleEntityNotFound(_0x55a372,null))[_0x533c('0x29')](respondWithResult(_0x55a372,null))[_0x533c('0x4a')](handleError(_0x55a372,null));};exports[_0x533c('0x4b')]=function(_0x471c59,_0xe9354a){return db[_0x533c('0x30')][_0x533c('0x4b')](_0x471c59[_0x533c('0x4c')],{})['then'](respondWithResult(_0xe9354a,0xc9))[_0x533c('0x4a')](handleError(_0xe9354a,null));};exports[_0x533c('0x28')]=function(_0xaaf682,_0x57c6c6){if(_0xaaf682[_0x533c('0x4c')]['id']){delete _0xaaf682[_0x533c('0x4c')]['id'];}delete _0xaaf682['body'][_0x533c('0x4d')];delete _0xaaf682['body'][_0x533c('0x4e')];delete _0xaaf682[_0x533c('0x4c')][_0x533c('0x4f')];delete _0xaaf682[_0x533c('0x4c')][_0x533c('0x50')];return db[_0x533c('0x30')][_0x533c('0x49')]({'where':{'id':_0xaaf682['params']['id']}})[_0x533c('0x29')](handleEntityNotFound(_0x57c6c6,null))[_0x533c('0x29')](saveUpdates(_0xaaf682[_0x533c('0x4c')],null))[_0x533c('0x29')](respondWithResult(_0x57c6c6,null))[_0x533c('0x4a')](handleError(_0x57c6c6,null));};exports[_0x533c('0x51')]=function(_0x3eb174,_0x50d5a2){return db['ScreenRecording']['describe']()['then'](respondWithResult(_0x50d5a2,null))[_0x533c('0x4a')](handleError(_0x50d5a2,null));};exports[_0x533c('0x52')]=function(_0x5c5dd0,_0xac086b,_0x1da579){var _0x2f6794=require('../../components/encryptor');var _0x1de19e=![];var _0x564a31={};if(_0x5c5dd0['query'][_0x533c('0x31')]&&_0x5c5dd0[_0x533c('0x36')][_0x533c('0x31')]===_0x533c('0x53')){_0x564a31[_0x533c('0x53')]=_0x5c5dd0[_0x533c('0x47')]['id'];}else{_0x564a31['id']=_0x5c5dd0[_0x533c('0x47')]['id'];}return db['ScreenRecording'][_0x533c('0x49')]({'where':_0x564a31,'attributes':['id','value'],'raw':!![]})[_0x533c('0x29')](handleEntityNotFound(_0xac086b,null))[_0x533c('0x29')](function(_0x274686){if(_0x274686){var _0x2c7600=path[_0x533c('0x54')](config[_0x533c('0x55')],_0x533c('0x56'),_0x274686[_0x533c('0x50')]);var _0x58f528=util[_0x533c('0x35')](_0x533c('0x57'),_0x2c7600);if(fs[_0x533c('0x58')](_0x58f528)){_0x1de19e=!![];return _0x2f6794[_0x533c('0x59')](_0x58f528,_0x2c7600,config[_0x533c('0x5a')][_0x533c('0x5b')])['then'](function(){return _0x274686;});}return _0x274686;}})[_0x533c('0x29')](function(_0x554a9f){if(_0x554a9f){var _0x43383e=path[_0x533c('0x54')](config[_0x533c('0x55')],_0x533c('0x56'),_0x554a9f[_0x533c('0x50')]);if(!fs[_0x533c('0x58')](_0x43383e)){throw new db['Sequelize']['ValidationError'](_0x533c('0x5c'));}if(_0x554a9f[_0x533c('0x5d')]){return _0xac086b[_0x533c('0x52')](_0x43383e,_0x554a9f[_0x533c('0x5d')]+path['extname'](_0x43383e),function(){if(_0x1de19e){fs[_0x533c('0x5e')](_0x43383e);}});}else{return _0xac086b[_0x533c('0x52')](_0x43383e,function(_0x8e04c7){if(_0x1de19e){fs[_0x533c('0x5e')](_0x43383e);}});}}})[_0x533c('0x4a')](function(_0x2f2863){if(_0x2f2863[_0x533c('0x5f')]===_0x533c('0x5c')){_0xac086b[_0x533c('0x1d')](0x194)[_0x533c('0x2d')](_0x533c('0x60'));}else{return handleError(_0xac086b,null);}});};exports[_0x533c('0x2a')]=function(_0x13a7f2,_0xea6ea2){return db[_0x533c('0x30')][_0x533c('0x49')]({'where':{'id':_0x13a7f2[_0x533c('0x47')]['id']}})['then'](function(_0x31bba1){if(_['isNil'](_0x31bba1)){throw new ReferenceError('Entity\x20not\x20found');}return _0x31bba1;})[_0x533c('0x29')](function(_0xb23f94){var _0x965b85=path[_0x533c('0x54')](config[_0x533c('0x55')],_0x533c('0x56'),_0xb23f94[_0x533c('0x50')]);logger['info'](_0x533c('0x61'),_0x965b85);if(!_[_0x533c('0x62')](_0xb23f94['value'])&&fs[_0x533c('0x58')](_0x965b85)){logger[_0x533c('0x63')](_0x533c('0x64')+_0x965b85+_0x533c('0x65'));fs['unlinkSync'](_0x965b85);}_0x965b85=_0x965b85+_0x533c('0x66');if(!_[_0x533c('0x62')](_0xb23f94['value'])&&fs[_0x533c('0x58')](_0x965b85)){logger[_0x533c('0x63')]('File:\x20\x22'+_0x965b85+_0x533c('0x65'));fs[_0x533c('0x67')](_0x965b85);}return _0xb23f94;})['then'](function(_0x444f46){if(!_0x444f46)throw new InternalError();return _0x444f46['destroy']();})['then'](function(){_0xea6ea2[_0x533c('0x1d')](0xcc)[_0x533c('0x1e')]();})[_0x533c('0x4a')](handleError(_0xea6ea2,null));};
\ No newline at end of file
+var _0xdc97=['join','root','%s.cypher','existsSync','decryptFile','Sequelize','ValidationError','ScreenRecording\x20not\x20found','filename','extname','unlink','message','Not\x20found','destroy','isNil','info','cancellazione\x20fisica\x20documento\x20%s','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','path','sox','to-csv','ejs','lodash','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','update','then','sendStatus','error','name','send','index','map','format','query','keys','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','filters','pick','filter','where','merge','type','options','ScreenRecording','includeAll','rows','catch','show','params','include','find','create','body','duration','createdAt','closedAt','value','describe','download','../../components/encryptor','uniqueid'];(function(_0x5d1bf9,_0x36ba89){var _0x374b81=function(_0x1811ba){while(--_0x1811ba){_0x5d1bf9['push'](_0x5d1bf9['shift']());}};_0x374b81(++_0x36ba89);}(_0xdc97,0x13b));var _0x7dc9=function(_0x2184d0,_0x349919){_0x2184d0=_0x2184d0-0x0;var _0x3b4652=_0xdc97[_0x2184d0];return _0x3b4652;};'use strict';var emlformat=require(_0x7dc9('0x0'));var rimraf=require(_0x7dc9('0x1'));var zipdir=require(_0x7dc9('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x7dc9('0x3'));var moment=require('moment');var BPromise=require(_0x7dc9('0x4'));var Mustache=require(_0x7dc9('0x5'));var util=require('util');var path=require(_0x7dc9('0x6'));var sox=require(_0x7dc9('0x7'));var csv=require(_0x7dc9('0x8'));var ejs=require(_0x7dc9('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x7dc9('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x7dc9('0xb'));var deskjs=require(_0x7dc9('0xc'));var toCsv=require(_0x7dc9('0x8'));var querystring=require(_0x7dc9('0xd'));var Papa=require(_0x7dc9('0xe'));var Redis=require('ioredis');var authService=require(_0x7dc9('0xf'));var qs=require(_0x7dc9('0x10'));var as=require(_0x7dc9('0x11'));var hardwareService=require(_0x7dc9('0x12'));var logger=require(_0x7dc9('0x13'))(_0x7dc9('0x14'));var utils=require(_0x7dc9('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x599ef1,_0x94c75a){_0x94c75a=_0x94c75a||0xcc;return function(_0x14e5db){if(_0x14e5db){return _0x599ef1['sendStatus'](_0x94c75a);}return _0x599ef1[_0x7dc9('0x16')](_0x94c75a)[_0x7dc9('0x17')]();};}function respondWithResult(_0xaadf2,_0xf37bc7){_0xf37bc7=_0xf37bc7||0xc8;return function(_0x31d43d){if(_0x31d43d){return _0xaadf2[_0x7dc9('0x16')](_0xf37bc7)['json'](_0x31d43d);}};}function respondWithFilteredResult(_0x3a54f2,_0x278191){return function(_0x1b0aa1){if(_0x1b0aa1){var _0x442819=typeof _0x278191[_0x7dc9('0x18')]===_0x7dc9('0x19')&&typeof _0x278191[_0x7dc9('0x1a')]===_0x7dc9('0x19');var _0x4778d5=_0x1b0aa1['count'];var _0x22577e=_0x442819?0x0:_0x278191['offset'];var _0x1f5906=_0x442819?_0x1b0aa1[_0x7dc9('0x1b')]:_0x278191['offset']+_0x278191[_0x7dc9('0x1a')];var _0x3b738a;if(_0x1f5906>=_0x4778d5){_0x1f5906=_0x4778d5;_0x3b738a=0xc8;}else{_0x3b738a=0xce;}_0x3a54f2[_0x7dc9('0x16')](_0x3b738a);return _0x3a54f2[_0x7dc9('0x1c')](_0x7dc9('0x1d'),_0x22577e+'-'+_0x1f5906+'/'+_0x4778d5)[_0x7dc9('0x1e')](_0x1b0aa1);}return null;};}function patchUpdates(_0x2dad65){return function(_0x2895f5){try{jsonpatch[_0x7dc9('0x1f')](_0x2895f5,_0x2dad65,!![]);}catch(_0x2b38d6){return BPromise['reject'](_0x2b38d6);}return _0x2895f5['save']();};}function saveUpdates(_0x12954f,_0x5981e2){return function(_0x596e0f){if(_0x596e0f){return _0x596e0f[_0x7dc9('0x20')](_0x12954f)[_0x7dc9('0x21')](function(_0x5e9525){return _0x5e9525;});}return null;};}function removeEntity(_0xffc080,_0x43d31f){return function(_0x41110a){if(_0x41110a){return _0x41110a['destroy']()[_0x7dc9('0x21')](function(){_0xffc080[_0x7dc9('0x16')](0xcc)[_0x7dc9('0x17')]();});}};}function handleEntityNotFound(_0x55a482,_0x48c6bc){return function(_0x4b9ba6){if(!_0x4b9ba6){_0x55a482[_0x7dc9('0x22')](0x194);}return _0x4b9ba6;};}function handleError(_0x32d032,_0x5843bf){_0x5843bf=_0x5843bf||0x1f4;return function(_0x585eef){logger[_0x7dc9('0x23')](_0x585eef['stack']);if(_0x585eef[_0x7dc9('0x24')]){delete _0x585eef[_0x7dc9('0x24')];}_0x32d032[_0x7dc9('0x16')](_0x5843bf)[_0x7dc9('0x25')](_0x585eef);};}exports[_0x7dc9('0x26')]=function(_0x450124,_0x236d42){var _0x229f8e={},_0x1fcf0e={},_0x3c4379={'count':0x0,'rows':[]};var _0x14083d=_[_0x7dc9('0x27')](db['ScreenRecording']['rawAttributes'],function(_0x513dd6){return{'name':_0x513dd6['fieldName'],'type':_0x513dd6['type']['key']};});_0x1fcf0e['model']=_['differenceBy'](_[_0x7dc9('0x27')](_0x14083d,_0x7dc9('0x24')),[_0x7dc9('0x28')]);_0x1fcf0e[_0x7dc9('0x29')]=_[_0x7dc9('0x2a')](_0x450124[_0x7dc9('0x29')]);_0x1fcf0e['filters']=_['intersection'](_0x1fcf0e['model'],_0x1fcf0e[_0x7dc9('0x29')]);_0x229f8e['attributes']=_[_0x7dc9('0x2b')](_0x1fcf0e[_0x7dc9('0x2c')],qs[_0x7dc9('0x2d')](_0x450124[_0x7dc9('0x29')][_0x7dc9('0x2d')]));_0x229f8e[_0x7dc9('0x2e')]=_0x229f8e[_0x7dc9('0x2e')][_0x7dc9('0x2f')]?_0x229f8e['attributes']:_0x1fcf0e[_0x7dc9('0x2c')];if(!_0x450124['query'][_0x7dc9('0x30')](_0x7dc9('0x31'))){_0x229f8e[_0x7dc9('0x1a')]=qs[_0x7dc9('0x1a')](_0x450124['query'][_0x7dc9('0x1a')]);_0x229f8e['offset']=qs[_0x7dc9('0x18')](_0x450124['query']['offset']);}_0x229f8e[_0x7dc9('0x32')]=qs[_0x7dc9('0x33')](_0x450124[_0x7dc9('0x29')][_0x7dc9('0x33')]);_0x229f8e['where']=qs[_0x7dc9('0x34')](_[_0x7dc9('0x35')](_0x450124[_0x7dc9('0x29')],_0x1fcf0e[_0x7dc9('0x34')]),_0x14083d);if(_0x450124[_0x7dc9('0x29')][_0x7dc9('0x36')]){_0x229f8e[_0x7dc9('0x37')]=_[_0x7dc9('0x38')](_0x229f8e[_0x7dc9('0x37')],{'$or':_[_0x7dc9('0x27')](_0x14083d,function(_0x452aed){if(_0x452aed[_0x7dc9('0x39')]!=='VIRTUAL'){var _0x34b5c9={};_0x34b5c9[_0x452aed[_0x7dc9('0x24')]]={'$like':'%'+_0x450124[_0x7dc9('0x29')][_0x7dc9('0x36')]+'%'};return _0x34b5c9;}})});}_0x229f8e=_['merge']({},_0x229f8e,_0x450124[_0x7dc9('0x3a')]);var _0x89db0e={'where':_0x229f8e[_0x7dc9('0x37')]};return db[_0x7dc9('0x3b')][_0x7dc9('0x1b')](_0x89db0e)[_0x7dc9('0x21')](function(_0x5a1201){_0x3c4379['count']=_0x5a1201;if(_0x450124[_0x7dc9('0x29')][_0x7dc9('0x3c')]){_0x229f8e['include']=[{'all':!![]}];}return db[_0x7dc9('0x3b')]['findAll'](_0x229f8e);})[_0x7dc9('0x21')](function(_0x2a91fe){_0x3c4379[_0x7dc9('0x3d')]=_0x2a91fe;return _0x3c4379;})['then'](respondWithFilteredResult(_0x236d42,_0x229f8e))[_0x7dc9('0x3e')](handleError(_0x236d42,null));};exports[_0x7dc9('0x3f')]=function(_0x1929b6,_0x95513c){var _0x28ffc0={'raw':![],'where':{'id':_0x1929b6[_0x7dc9('0x40')]['id']}},_0x23499a={};_0x23499a['model']=_[_0x7dc9('0x2a')](db['ScreenRecording']['rawAttributes']);_0x23499a[_0x7dc9('0x29')]=_[_0x7dc9('0x2a')](_0x1929b6[_0x7dc9('0x29')]);_0x23499a[_0x7dc9('0x34')]=_[_0x7dc9('0x2b')](_0x23499a[_0x7dc9('0x2c')],_0x23499a[_0x7dc9('0x29')]);_0x28ffc0[_0x7dc9('0x2e')]=_[_0x7dc9('0x2b')](_0x23499a['model'],qs[_0x7dc9('0x2d')](_0x1929b6[_0x7dc9('0x29')][_0x7dc9('0x2d')]));_0x28ffc0[_0x7dc9('0x2e')]=_0x28ffc0[_0x7dc9('0x2e')][_0x7dc9('0x2f')]?_0x28ffc0['attributes']:_0x23499a[_0x7dc9('0x2c')];if(_0x1929b6[_0x7dc9('0x29')]['includeAll']){_0x28ffc0[_0x7dc9('0x41')]=[{'all':!![]}];}_0x28ffc0=_[_0x7dc9('0x38')]({},_0x28ffc0,_0x1929b6[_0x7dc9('0x3a')]);return db['ScreenRecording'][_0x7dc9('0x42')](_0x28ffc0)['then'](handleEntityNotFound(_0x95513c,null))['then'](respondWithResult(_0x95513c,null))[_0x7dc9('0x3e')](handleError(_0x95513c,null));};exports[_0x7dc9('0x43')]=function(_0x36d591,_0x5e0dc5){return db['ScreenRecording'][_0x7dc9('0x43')](_0x36d591['body'],{})[_0x7dc9('0x21')](respondWithResult(_0x5e0dc5,0xc9))[_0x7dc9('0x3e')](handleError(_0x5e0dc5,null));};exports['update']=function(_0x24ccce,_0x1d6c0a){if(_0x24ccce[_0x7dc9('0x44')]['id']){delete _0x24ccce[_0x7dc9('0x44')]['id'];}delete _0x24ccce[_0x7dc9('0x44')][_0x7dc9('0x45')];delete _0x24ccce[_0x7dc9('0x44')][_0x7dc9('0x46')];delete _0x24ccce[_0x7dc9('0x44')][_0x7dc9('0x47')];delete _0x24ccce[_0x7dc9('0x44')][_0x7dc9('0x48')];return db[_0x7dc9('0x3b')]['find']({'where':{'id':_0x24ccce[_0x7dc9('0x40')]['id']}})['then'](handleEntityNotFound(_0x1d6c0a,null))['then'](saveUpdates(_0x24ccce[_0x7dc9('0x44')],null))[_0x7dc9('0x21')](respondWithResult(_0x1d6c0a,null))[_0x7dc9('0x3e')](handleError(_0x1d6c0a,null));};exports[_0x7dc9('0x49')]=function(_0x346d27,_0x510e2a){return db[_0x7dc9('0x3b')][_0x7dc9('0x49')]()[_0x7dc9('0x21')](respondWithResult(_0x510e2a,null))['catch'](handleError(_0x510e2a,null));};exports[_0x7dc9('0x4a')]=function(_0x3fc164,_0x2cf133,_0x32bc31){var _0xf41b8c=require(_0x7dc9('0x4b'));var _0x593132=![];var _0x366b8b={};if(_0x3fc164[_0x7dc9('0x29')][_0x7dc9('0x39')]&&_0x3fc164[_0x7dc9('0x29')][_0x7dc9('0x39')]===_0x7dc9('0x4c')){_0x366b8b[_0x7dc9('0x4c')]=_0x3fc164[_0x7dc9('0x40')]['id'];}else{_0x366b8b['id']=_0x3fc164[_0x7dc9('0x40')]['id'];}return db[_0x7dc9('0x3b')][_0x7dc9('0x42')]({'where':_0x366b8b,'attributes':['id',_0x7dc9('0x48')],'raw':!![]})['then'](handleEntityNotFound(_0x2cf133,null))[_0x7dc9('0x21')](function(_0x39be46){if(_0x39be46){var _0x38df9a=path[_0x7dc9('0x4d')](config[_0x7dc9('0x4e')],'server/files/screen_recordings',_0x39be46[_0x7dc9('0x48')]);var _0xd8d327=util[_0x7dc9('0x28')](_0x7dc9('0x4f'),_0x38df9a);if(fs[_0x7dc9('0x50')](_0xd8d327)){_0x593132=!![];return _0xf41b8c[_0x7dc9('0x51')](_0xd8d327,_0x38df9a,config['secrets']['recording'])['then'](function(){return _0x39be46;});}return _0x39be46;}})[_0x7dc9('0x21')](function(_0x3daf33){if(_0x3daf33){var _0x32a64f=path[_0x7dc9('0x4d')](config['root'],'server/files/screen_recordings',_0x3daf33[_0x7dc9('0x48')]);if(!fs[_0x7dc9('0x50')](_0x32a64f)){throw new db[(_0x7dc9('0x52'))][(_0x7dc9('0x53'))](_0x7dc9('0x54'));}if(_0x3daf33[_0x7dc9('0x55')]){return _0x2cf133[_0x7dc9('0x4a')](_0x32a64f,_0x3daf33['filename']+path[_0x7dc9('0x56')](_0x32a64f),function(){if(_0x593132){fs[_0x7dc9('0x57')](_0x32a64f);}});}else{return _0x2cf133[_0x7dc9('0x4a')](_0x32a64f,function(_0x1dad95){if(_0x593132){fs[_0x7dc9('0x57')](_0x32a64f);}});}}})['catch'](function(_0x175858){if(_0x175858[_0x7dc9('0x58')]===_0x7dc9('0x54')){_0x2cf133[_0x7dc9('0x16')](0x194)[_0x7dc9('0x25')](_0x7dc9('0x59'));}else{return handleError(_0x2cf133,null);}});};exports[_0x7dc9('0x5a')]=function(_0x2a02ed,_0x3463e4){return db[_0x7dc9('0x3b')][_0x7dc9('0x42')]({'where':{'id':_0x2a02ed[_0x7dc9('0x40')]['id']}})[_0x7dc9('0x21')](function(_0x5eee27){if(_[_0x7dc9('0x5b')](_0x5eee27)){throw new ReferenceError('Entity\x20not\x20found');}return _0x5eee27;})[_0x7dc9('0x21')](function(_0x15cf19){var _0x48ea37=path[_0x7dc9('0x4d')](config[_0x7dc9('0x4e')],'server/files/screen_recordings',_0x15cf19[_0x7dc9('0x48')]);logger[_0x7dc9('0x5c')](_0x7dc9('0x5d'),_0x48ea37);if(!_['isNil'](_0x15cf19['value'])&&fs[_0x7dc9('0x50')](_0x48ea37)){logger[_0x7dc9('0x5c')](_0x7dc9('0x5e')+_0x48ea37+_0x7dc9('0x5f'));fs[_0x7dc9('0x60')](_0x48ea37);}_0x48ea37=_0x48ea37+_0x7dc9('0x61');if(!_[_0x7dc9('0x5b')](_0x15cf19[_0x7dc9('0x48')])&&fs[_0x7dc9('0x50')](_0x48ea37)){logger['info'](_0x7dc9('0x5e')+_0x48ea37+_0x7dc9('0x5f'));fs[_0x7dc9('0x60')](_0x48ea37);}return _0x15cf19;})['then'](function(_0x4f80bd){if(!_0x4f80bd)throw new InternalError();return _0x4f80bd[_0x7dc9('0x5a')]();})[_0x7dc9('0x21')](function(){_0x3463e4[_0x7dc9('0x16')](0xcc)[_0x7dc9('0x17')]();})['catch'](handleError(_0x3463e4,null));};
\ No newline at end of file
index 829e90f..9fe3e91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6df6=['./screenRecording.attributes','exports','screen_recordings','interactionid','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment'];(function(_0x2bf861,_0x2e9ccd){var _0x468d8b=function(_0x2051b9){while(--_0x2051b9){_0x2bf861['push'](_0x2bf861['shift']());}};_0x468d8b(++_0x2e9ccd);}(_0x6df6,0xa0));var _0x66df=function(_0x133277,_0xb1d6b2){_0x133277=_0x133277-0x0;var _0x5b4a22=_0x6df6[_0x133277];return _0x5b4a22;};'use strict';var _=require(_0x66df('0x0'));var util=require(_0x66df('0x1'));var logger=require(_0x66df('0x2'))(_0x66df('0x3'));var moment=require(_0x66df('0x4'));var BPromise=require(_0x66df('0x5'));var rp=require(_0x66df('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x66df('0x7'));var config=require(_0x66df('0x8'));var attributes=require(_0x66df('0x9'));module[_0x66df('0xa')]=function(_0x1abe5c,_0x22ce37){return _0x1abe5c['define']('ScreenRecording',attributes,{'tableName':_0x66df('0xb'),'paranoid':![],'indexes':[{'name':_0x66df('0xc'),'fields':[_0x66df('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x242f=['../../config/environment','./screenRecording.attributes','exports','define','ScreenRecording','screen_recordings','interactionid','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf'];(function(_0x225500,_0x253031){var _0x50d476=function(_0x1a2261){while(--_0x1a2261){_0x225500['push'](_0x225500['shift']());}};_0x50d476(++_0x253031);}(_0x242f,0x19c));var _0xf242=function(_0x87e0dc,_0x577dce){_0x87e0dc=_0x87e0dc-0x0;var _0x2cd2d1=_0x242f[_0x87e0dc];return _0x2cd2d1;};'use strict';var _=require(_0xf242('0x0'));var util=require(_0xf242('0x1'));var logger=require(_0xf242('0x2'))(_0xf242('0x3'));var moment=require(_0xf242('0x4'));var BPromise=require(_0xf242('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xf242('0x6'));var rimraf=require(_0xf242('0x7'));var config=require(_0xf242('0x8'));var attributes=require(_0xf242('0x9'));module[_0xf242('0xa')]=function(_0x8a67ad,_0x4e8c56){return _0x8a67ad[_0xf242('0xb')](_0xf242('0xc'),attributes,{'tableName':_0xf242('0xd'),'paranoid':![],'indexes':[{'name':_0xf242('0xe'),'fields':[_0xf242('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index 246e40b..326119e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd76=['debug','ScreenRecording,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','ScreenRecording,\x20%s,\x20%s','request\x20sent'];(function(_0x5d0755,_0x5dd13b){var _0x6565ba=function(_0x84e65b){while(--_0x84e65b){_0x5d0755['push'](_0x5d0755['shift']());}};_0x6565ba(++_0x5dd13b);}(_0xfd76,0x6c));var _0x6fd7=function(_0x58e61e,_0x43f377){_0x58e61e=_0x58e61e-0x0;var _0x40fecd=_0xfd76[_0x58e61e];return _0x40fecd;};'use strict';var _=require(_0x6fd7('0x0'));var util=require('util');var moment=require(_0x6fd7('0x1'));var BPromise=require(_0x6fd7('0x2'));var rs=require(_0x6fd7('0x3'));var fs=require('fs');var Redis=require(_0x6fd7('0x4'));var db=require(_0x6fd7('0x5'))['db'];var utils=require(_0x6fd7('0x6'));var logger=require(_0x6fd7('0x7'))(_0x6fd7('0x8'));var config=require(_0x6fd7('0x9'));var jayson=require(_0x6fd7('0xa'));var client=jayson[_0x6fd7('0xb')][_0x6fd7('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x55c3f8,_0x34b58b,_0x33adb8){return new BPromise(function(_0x248812,_0x47b140){return client['request'](_0x55c3f8,_0x33adb8)[_0x6fd7('0xd')](function(_0x521187){logger[_0x6fd7('0xe')](_0x6fd7('0xf'),_0x34b58b,_0x6fd7('0x10'));logger[_0x6fd7('0x11')](_0x6fd7('0x12'),_0x34b58b,_0x6fd7('0x10'),JSON[_0x6fd7('0x13')](_0x521187));if(_0x521187['error']){if(_0x521187[_0x6fd7('0x14')][_0x6fd7('0x15')]===0x1f4){logger['error'](_0x6fd7('0xf'),_0x34b58b,_0x521187[_0x6fd7('0x14')][_0x6fd7('0x16')]);return _0x47b140(_0x521187[_0x6fd7('0x14')][_0x6fd7('0x16')]);}logger[_0x6fd7('0x14')]('ScreenRecording,\x20%s,\x20%s',_0x34b58b,_0x521187['error'][_0x6fd7('0x16')]);return _0x248812(_0x521187[_0x6fd7('0x14')][_0x6fd7('0x16')]);}else{logger[_0x6fd7('0xe')](_0x6fd7('0xf'),_0x34b58b,_0x6fd7('0x10'));_0x248812(_0x521187[_0x6fd7('0x17')][_0x6fd7('0x16')]);}})[_0x6fd7('0x18')](function(_0xa23d33){logger['error'](_0x6fd7('0xf'),_0x34b58b,_0xa23d33);_0x47b140(_0xa23d33);});});}
\ No newline at end of file
+var _0x8173=['message','result','catch','lodash','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','stringify','error','ScreenRecording,\x20%s,\x20%s'];(function(_0x20e84e,_0x16a93c){var _0x4c0f93=function(_0x168086){while(--_0x168086){_0x20e84e['push'](_0x20e84e['shift']());}};_0x4c0f93(++_0x16a93c);}(_0x8173,0x1e6));var _0x3817=function(_0x52b411,_0x32cf1d){_0x52b411=_0x52b411-0x0;var _0x5428c6=_0x8173[_0x52b411];return _0x5428c6;};'use strict';var _=require(_0x3817('0x0'));var util=require(_0x3817('0x1'));var moment=require(_0x3817('0x2'));var BPromise=require(_0x3817('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x3817('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x3817('0x5'));var logger=require(_0x3817('0x6'))(_0x3817('0x7'));var config=require(_0x3817('0x8'));var jayson=require(_0x3817('0x9'));var client=jayson[_0x3817('0xa')][_0x3817('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4979b0,_0x1153be,_0x5a84fe){return new BPromise(function(_0x5a6d0e,_0x480fc6){return client[_0x3817('0xc')](_0x4979b0,_0x5a84fe)[_0x3817('0xd')](function(_0xaae387){logger[_0x3817('0xe')]('ScreenRecording,\x20%s,\x20%s',_0x1153be,_0x3817('0xf'));logger[_0x3817('0x10')]('ScreenRecording,\x20%s,\x20%s,\x20%s',_0x1153be,_0x3817('0xf'),JSON[_0x3817('0x11')](_0xaae387));if(_0xaae387[_0x3817('0x12')]){if(_0xaae387[_0x3817('0x12')]['code']===0x1f4){logger[_0x3817('0x12')](_0x3817('0x13'),_0x1153be,_0xaae387[_0x3817('0x12')]['message']);return _0x480fc6(_0xaae387['error'][_0x3817('0x14')]);}logger[_0x3817('0x12')](_0x3817('0x13'),_0x1153be,_0xaae387['error'][_0x3817('0x14')]);return _0x5a6d0e(_0xaae387[_0x3817('0x12')][_0x3817('0x14')]);}else{logger[_0x3817('0xe')](_0x3817('0x13'),_0x1153be,_0x3817('0xf'));_0x5a6d0e(_0xaae387[_0x3817('0x15')][_0x3817('0x14')]);}})[_0x3817('0x16')](function(_0x3b75f7){logger[_0x3817('0x12')]('ScreenRecording,\x20%s,\x20%s',_0x1153be,_0x3b75f7);_0x480fc6(_0x3b75f7);});});}
\ No newline at end of file
index c4a25be..37fb473 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2393=['fs-extra','../../components/interaction/service','get','isAuthenticated','index','/now','/:id','show','/:id/logo','getLogo','/:id/logo_login','gdpr','getPreferred','/:id/favicon','getFavicon','diskStorage','join','root','server/files/images/logos/','%s%s','logo','extname','originalname','post','single','file','format','addLogoLogin','preferred','/:id/preferred','addPreferred','addFavicon','put','update','exports','multer','path','connect-timeout','express','Router'];(function(_0x39b1bd,_0x554c9f){var _0x1dfb46=function(_0x4a15de){while(--_0x4a15de){_0x39b1bd['push'](_0x39b1bd['shift']());}};_0x1dfb46(++_0x554c9f);}(_0x2393,0x113));var _0x3239=function(_0x29ebb8,_0x51d0d8){_0x29ebb8=_0x29ebb8-0x0;var _0x10c623=_0x2393[_0x29ebb8];return _0x10c623;};'use strict';var multer=require(_0x3239('0x0'));var util=require('util');var path=require(_0x3239('0x1'));var timeout=require(_0x3239('0x2'));var express=require(_0x3239('0x3'));var router=express[_0x3239('0x4')]();var fs_extra=require(_0x3239('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x3239('0x6'));var config=require('../../config/environment');var controller=require('./setting.controller');router[_0x3239('0x7')]('/',auth[_0x3239('0x8')](),controller[_0x3239('0x9')]);router[_0x3239('0x7')](_0x3239('0xa'),controller['getDate']);router[_0x3239('0x7')](_0x3239('0xb'),controller[_0x3239('0xc')]);router[_0x3239('0x7')](_0x3239('0xd'),controller[_0x3239('0xe')]);router[_0x3239('0x7')](_0x3239('0xf'),controller['getLogoLogin']);router[_0x3239('0x7')]('/:id/gdpr',controller[_0x3239('0x10')]);router[_0x3239('0x7')]('/:id/preferred',controller[_0x3239('0x11')]);router[_0x3239('0x7')](_0x3239('0x12'),controller[_0x3239('0x13')]);var upload=multer({'storage':multer[_0x3239('0x14')]({'destination':function(_0x33f857,_0x2d146b,_0x35dbad){_0x35dbad(null,path[_0x3239('0x15')](config[_0x3239('0x16')],_0x3239('0x17')));},'filename':function(_0xa68949,_0x522aaf,_0x15a0ef){_0x15a0ef(null,util['format'](_0x3239('0x18'),_0x3239('0x19'),path[_0x3239('0x1a')](_0x522aaf[_0x3239('0x1b')])));}})});router[_0x3239('0x1c')](_0x3239('0xd'),upload[_0x3239('0x1d')](_0x3239('0x1e')),controller['addLogo']);var upload=multer({'storage':multer[_0x3239('0x14')]({'destination':function(_0x5d5847,_0x37793e,_0xf1332f){_0xf1332f(null,path[_0x3239('0x15')](config['root'],'server/files/images/logos/'));},'filename':function(_0x2b8992,_0x3edb5c,_0x2ac326){_0x2ac326(null,util[_0x3239('0x1f')](_0x3239('0x18'),'logologin',path[_0x3239('0x1a')](_0x3edb5c['originalname'])));}})});router[_0x3239('0x1c')](_0x3239('0xf'),upload[_0x3239('0x1d')](_0x3239('0x1e')),controller[_0x3239('0x20')]);var upload=multer({'storage':multer[_0x3239('0x14')]({'destination':function(_0xf7c836,_0x325472,_0x4c1220){_0x4c1220(null,path[_0x3239('0x15')](config['root'],_0x3239('0x17')));},'filename':function(_0x33e92d,_0x143630,_0x2b60bf){_0x2b60bf(null,util[_0x3239('0x1f')]('%s%s',_0x3239('0x21'),path['extname'](_0x143630[_0x3239('0x1b')])));}})});router[_0x3239('0x1c')](_0x3239('0x22'),upload['single']('file'),controller[_0x3239('0x23')]);var upload=multer({'storage':multer[_0x3239('0x14')]({'destination':function(_0x5f5627,_0x55a035,_0x1e9bd7){_0x1e9bd7(null,path['join'](config[_0x3239('0x16')],_0x3239('0x17')));},'filename':function(_0x1f7702,_0x4b09ed,_0x44afa0){_0x44afa0(null,util['format'](_0x3239('0x18'),'favicon',path[_0x3239('0x1a')](_0x4b09ed[_0x3239('0x1b')])));}})});router['post'](_0x3239('0x12'),upload[_0x3239('0x1d')](_0x3239('0x1e')),controller[_0x3239('0x24')]);router[_0x3239('0x25')](_0x3239('0xb'),auth[_0x3239('0x8')](),controller[_0x3239('0x26')]);module[_0x3239('0x27')]=router;
\ No newline at end of file
+var _0xc4ee=['exports','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./setting.controller','get','isAuthenticated','/now','getDate','/:id','getLogo','/:id/logo_login','getLogoLogin','/:id/preferred','getPreferred','getFavicon','diskStorage','join','root','server/files/images/logos/','format','%s%s','logo','extname','originalname','/:id/logo','single','file','addLogo','logologin','post','addLogoLogin','preferred','favicon','update'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xc4ee,0x160));var _0xec4e=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc4ee[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require(_0xec4e('0x0'));var path=require(_0xec4e('0x1'));var timeout=require(_0xec4e('0x2'));var express=require('express');var router=express[_0xec4e('0x3')]();var fs_extra=require(_0xec4e('0x4'));var auth=require(_0xec4e('0x5'));var interaction=require(_0xec4e('0x6'));var config=require('../../config/environment');var controller=require(_0xec4e('0x7'));router[_0xec4e('0x8')]('/',auth[_0xec4e('0x9')](),controller['index']);router[_0xec4e('0x8')](_0xec4e('0xa'),controller[_0xec4e('0xb')]);router[_0xec4e('0x8')](_0xec4e('0xc'),controller['show']);router[_0xec4e('0x8')]('/:id/logo',controller[_0xec4e('0xd')]);router['get'](_0xec4e('0xe'),controller[_0xec4e('0xf')]);router[_0xec4e('0x8')]('/:id/gdpr',controller['gdpr']);router[_0xec4e('0x8')](_0xec4e('0x10'),controller[_0xec4e('0x11')]);router[_0xec4e('0x8')]('/:id/favicon',controller[_0xec4e('0x12')]);var upload=multer({'storage':multer[_0xec4e('0x13')]({'destination':function(_0x140e04,_0x16a9a3,_0x5df62a){_0x5df62a(null,path[_0xec4e('0x14')](config[_0xec4e('0x15')],_0xec4e('0x16')));},'filename':function(_0x23f2b6,_0xcddabd,_0x128e87){_0x128e87(null,util[_0xec4e('0x17')](_0xec4e('0x18'),_0xec4e('0x19'),path[_0xec4e('0x1a')](_0xcddabd[_0xec4e('0x1b')])));}})});router['post'](_0xec4e('0x1c'),upload[_0xec4e('0x1d')](_0xec4e('0x1e')),controller[_0xec4e('0x1f')]);var upload=multer({'storage':multer[_0xec4e('0x13')]({'destination':function(_0x3971db,_0x4fc94b,_0x235e4a){_0x235e4a(null,path[_0xec4e('0x14')](config[_0xec4e('0x15')],'server/files/images/logos/'));},'filename':function(_0x41b953,_0x2f2daf,_0x4e8ceb){_0x4e8ceb(null,util['format'](_0xec4e('0x18'),_0xec4e('0x20'),path[_0xec4e('0x1a')](_0x2f2daf[_0xec4e('0x1b')])));}})});router[_0xec4e('0x21')]('/:id/logo_login',upload[_0xec4e('0x1d')]('file'),controller[_0xec4e('0x22')]);var upload=multer({'storage':multer[_0xec4e('0x13')]({'destination':function(_0x397c75,_0x2a1c78,_0x5ce30c){_0x5ce30c(null,path[_0xec4e('0x14')](config[_0xec4e('0x15')],_0xec4e('0x16')));},'filename':function(_0xecb353,_0x384a2a,_0x5540a4){_0x5540a4(null,util[_0xec4e('0x17')](_0xec4e('0x18'),_0xec4e('0x23'),path[_0xec4e('0x1a')](_0x384a2a[_0xec4e('0x1b')])));}})});router['post'](_0xec4e('0x10'),upload[_0xec4e('0x1d')](_0xec4e('0x1e')),controller['addPreferred']);var upload=multer({'storage':multer[_0xec4e('0x13')]({'destination':function(_0x145242,_0x46a5d8,_0x428ccd){_0x428ccd(null,path[_0xec4e('0x14')](config[_0xec4e('0x15')],_0xec4e('0x16')));},'filename':function(_0x3f7a47,_0x2439c6,_0x4b2c13){_0x4b2c13(null,util[_0xec4e('0x17')](_0xec4e('0x18'),_0xec4e('0x24'),path[_0xec4e('0x1a')](_0x2439c6[_0xec4e('0x1b')])));}})});router['post']('/:id/favicon',upload[_0xec4e('0x1d')](_0xec4e('0x1e')),controller['addFavicon']);router['put']('/:id',auth[_0xec4e('0x9')](),controller[_0xec4e('0x25')]);module[_0xec4e('0x26')]=router;
\ No newline at end of file
index a0625bf..a76b459 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(_0x87d3ea,_0x1e94e1){var _0x34dbfb=function(_0xe45088){while(--_0xe45088){_0x87d3ea['push'](_0x87d3ea['shift']());}};_0x34dbfb(++_0x1e94e1);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1c546c,_0x5c57cb){_0x1c546c=_0x1c546c-0x0;var _0x2cc384=_0xa9e0[_0x1c546c];return _0x2cc384;};'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(_0x185d5b,_0x3e818f){var _0x451c43=function(_0x492aa4){while(--_0x492aa4){_0x185d5b['push'](_0x185d5b['shift']());}};_0x451c43(++_0x3e818f);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5783f4,_0x4a9e0a){_0x5783f4=_0x5783f4-0x0;var _0x28e380=_0xa9e0[_0x5783f4];return _0x28e380;};'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 cc8c091..b114767 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c32=['addFavicon','getFavicon','default_favicon.ico','getDate','now','format','YYYY-MM-DD\x20HH:mm:ss:SSS','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','jayson/promise','client','http','request','then','request\x20sent','debug','Setting,\x20%s,\x20%s,\x20%s','stringify','error','code','message','Setting,\x20%s,\x20%s','info','result','catch','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','destroy','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','options','Setting','include','findAll','rows','params','includeAll','find','body','addLogo','file','filename','logo','addLogoLogin','loginLogo','../../config/license/util','getLogo','server/files/images/logos','getLicense','preferred','favicon','defaultLogo','defaultLoginLogo','defaultFavicon','existsSync','join','root','toLower','default_logo.svg','default','upperFirst','Sequelize','ValidationError','\x20not\x20found','download','getLogoLogin','defaultPreferred','default_loginLogo.svg','securePassword','addPreferred','default_preferred.png','custom'];(function(_0x173d7e,_0x3242fd){var _0x2220d6=function(_0x462828){while(--_0x462828){_0x173d7e['push'](_0x173d7e['shift']());}};_0x2220d6(++_0x3242fd);}(_0x8c32,0x89));var _0x28c3=function(_0x2c7618,_0x26be9c){_0x2c7618=_0x2c7618-0x0;var _0x5ce3f0=_0x8c32[_0x2c7618];return _0x5ce3f0;};'use strict';var emlformat=require(_0x28c3('0x0'));var rimraf=require(_0x28c3('0x1'));var zipdir=require(_0x28c3('0x2'));var jsonpatch=require(_0x28c3('0x3'));var rp=require('request-promise');var moment=require(_0x28c3('0x4'));var BPromise=require(_0x28c3('0x5'));var Mustache=require(_0x28c3('0x6'));var util=require('util');var path=require(_0x28c3('0x7'));var sox=require(_0x28c3('0x8'));var csv=require('to-csv');var ejs=require(_0x28c3('0x9'));var fs=require('fs');var fs_extra=require(_0x28c3('0xa'));var _=require(_0x28c3('0xb'));var squel=require(_0x28c3('0xc'));var crypto=require(_0x28c3('0xd'));var jsforce=require(_0x28c3('0xe'));var deskjs=require(_0x28c3('0xf'));var toCsv=require(_0x28c3('0x10'));var querystring=require(_0x28c3('0x11'));var Papa=require(_0x28c3('0x12'));var Redis=require(_0x28c3('0x13'));var authService=require(_0x28c3('0x14'));var qs=require(_0x28c3('0x15'));var as=require(_0x28c3('0x16'));var hardwareService=require(_0x28c3('0x17'));var logger=require(_0x28c3('0x18'))('api');var utils=require(_0x28c3('0x19'));var config=require(_0x28c3('0x1a'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var jayson=require(_0x28c3('0x1b'));var client=jayson[_0x28c3('0x1c')][_0x28c3('0x1d')]({'port':0x232a});function respondWithRpcPromise(_0x4dc7a0,_0x6afc54,_0x7ed0a4,_0x524b6a){return new BPromise(function(_0x109b98,_0x20f629){var _0x2d48fe=_0x524b6a||client;return _0x2d48fe[_0x28c3('0x1e')](_0x4dc7a0,_0x7ed0a4)[_0x28c3('0x1f')](function(_0x8904d3){logger['info']('Setting,\x20%s,\x20%s',_0x6afc54,_0x28c3('0x20'));logger[_0x28c3('0x21')](_0x28c3('0x22'),_0x6afc54,'request\x20sent',JSON[_0x28c3('0x23')](_0x8904d3));if(_0x8904d3[_0x28c3('0x24')]){if(_0x8904d3[_0x28c3('0x24')][_0x28c3('0x25')]===0x1f4){logger['error']('Setting,\x20%s,\x20%s',_0x6afc54,_0x8904d3[_0x28c3('0x24')][_0x28c3('0x26')]);return _0x20f629(_0x8904d3[_0x28c3('0x24')][_0x28c3('0x26')]);}logger[_0x28c3('0x24')](_0x28c3('0x27'),_0x6afc54,_0x8904d3[_0x28c3('0x24')][_0x28c3('0x26')]);return _0x109b98(_0x8904d3[_0x28c3('0x24')]['message']);}else{logger[_0x28c3('0x28')](_0x28c3('0x27'),_0x6afc54,_0x28c3('0x20'));_0x109b98(_0x8904d3[_0x28c3('0x29')][_0x28c3('0x26')]);}})[_0x28c3('0x2a')](function(_0x180494){logger[_0x28c3('0x24')](_0x28c3('0x27'),_0x6afc54,_0x180494);_0x20f629(_0x180494);});});}function respondWithStatusCode(_0x313778,_0x1176d1){_0x1176d1=_0x1176d1||0xcc;return function(_0x20713a){if(_0x20713a){return _0x313778[_0x28c3('0x2b')](_0x1176d1);}return _0x313778['status'](_0x1176d1)[_0x28c3('0x2c')]();};}function respondWithResult(_0x2a8cc3,_0x1c0985){_0x1c0985=_0x1c0985||0xc8;return function(_0x4d2ac7){if(_0x4d2ac7){return _0x2a8cc3[_0x28c3('0x2d')](_0x1c0985)[_0x28c3('0x2e')](_0x4d2ac7);}};}function respondWithFilteredResult(_0xb0ca79,_0x1dabc9){return function(_0x357ed5){if(_0x357ed5){var _0x17cccb=typeof _0x1dabc9[_0x28c3('0x2f')]===_0x28c3('0x30')&&typeof _0x1dabc9[_0x28c3('0x31')]===_0x28c3('0x30');var _0x3b6346=_0x357ed5['count'];var _0x553dbd=_0x17cccb?0x0:_0x1dabc9[_0x28c3('0x2f')];var _0xedb1dd=_0x17cccb?_0x357ed5[_0x28c3('0x32')]:_0x1dabc9[_0x28c3('0x2f')]+_0x1dabc9[_0x28c3('0x31')];var _0x1ea4d6;if(_0xedb1dd>=_0x3b6346){_0xedb1dd=_0x3b6346;_0x1ea4d6=0xc8;}else{_0x1ea4d6=0xce;}_0xb0ca79['status'](_0x1ea4d6);return _0xb0ca79[_0x28c3('0x33')](_0x28c3('0x34'),_0x553dbd+'-'+_0xedb1dd+'/'+_0x3b6346)['json'](_0x357ed5);}return null;};}function patchUpdates(_0x29d62a){return function(_0x26ac0d){try{jsonpatch[_0x28c3('0x35')](_0x26ac0d,_0x29d62a,!![]);}catch(_0x4acd42){return BPromise[_0x28c3('0x36')](_0x4acd42);}return _0x26ac0d['save']();};}function saveUpdates(_0x66d986,_0x4194e3){return function(_0x16265a){if(_0x16265a){return _0x16265a[_0x28c3('0x37')](_0x66d986)[_0x28c3('0x1f')](function(_0x23d6ee){return _0x23d6ee;});}return null;};}function removeEntity(_0x26a1c6,_0x528267){return function(_0x5a96c1){if(_0x5a96c1){return _0x5a96c1[_0x28c3('0x38')]()['then'](function(){_0x26a1c6[_0x28c3('0x2d')](0xcc)[_0x28c3('0x2c')]();});}};}function handleEntityNotFound(_0x5efbf7,_0x29c0c9){return function(_0xa92852){if(!_0xa92852){_0x5efbf7[_0x28c3('0x2b')](0x194);}return _0xa92852;};}function handleError(_0x298fdd,_0x148a40){_0x148a40=_0x148a40||0x1f4;return function(_0x265a95){logger['error'](_0x265a95[_0x28c3('0x39')]);if(_0x265a95['name']){delete _0x265a95[_0x28c3('0x3a')];}_0x298fdd[_0x28c3('0x2d')](_0x148a40)[_0x28c3('0x3b')](_0x265a95);};}exports[_0x28c3('0x3c')]=function(_0x3d6389,_0x588911){var _0xbcf38d={},_0x71404b={},_0x84dc3d={'count':0x0,'rows':[]};var _0x3f7986=_[_0x28c3('0x3d')](db['Setting'][_0x28c3('0x3e')],function(_0x2ff50f){return{'name':_0x2ff50f[_0x28c3('0x3f')],'type':_0x2ff50f[_0x28c3('0x40')][_0x28c3('0x41')]};});_0x71404b[_0x28c3('0x42')]=_[_0x28c3('0x3d')](_0x3f7986,_0x28c3('0x3a'));_0x71404b[_0x28c3('0x43')]=_[_0x28c3('0x44')](_0x3d6389[_0x28c3('0x43')]);_0x71404b[_0x28c3('0x45')]=_[_0x28c3('0x46')](_0x71404b[_0x28c3('0x42')],_0x71404b[_0x28c3('0x43')]);_0xbcf38d['attributes']=_['intersection'](_0x71404b['model'],qs['fields'](_0x3d6389[_0x28c3('0x43')][_0x28c3('0x47')]));_0xbcf38d['attributes']=_0xbcf38d[_0x28c3('0x48')][_0x28c3('0x49')]?_0xbcf38d[_0x28c3('0x48')]:_0x71404b[_0x28c3('0x42')];if(!_0x3d6389[_0x28c3('0x43')][_0x28c3('0x4a')](_0x28c3('0x4b'))){_0xbcf38d[_0x28c3('0x31')]=qs[_0x28c3('0x31')](_0x3d6389['query'][_0x28c3('0x31')]);_0xbcf38d['offset']=qs['offset'](_0x3d6389['query'][_0x28c3('0x2f')]);}_0xbcf38d['order']=qs[_0x28c3('0x4c')](_0x3d6389['query'][_0x28c3('0x4c')]);_0xbcf38d[_0x28c3('0x4d')]=qs[_0x28c3('0x45')](_[_0x28c3('0x4e')](_0x3d6389[_0x28c3('0x43')],_0x71404b[_0x28c3('0x45')]),_0x3f7986);if(_0x3d6389[_0x28c3('0x43')][_0x28c3('0x4f')]){_0xbcf38d[_0x28c3('0x4d')]=_['merge'](_0xbcf38d[_0x28c3('0x4d')],{'$or':_[_0x28c3('0x3d')](_0x3f7986,function(_0x4333f5){if(_0x4333f5[_0x28c3('0x40')]!=='VIRTUAL'){var _0x483249={};_0x483249[_0x4333f5['name']]={'$like':'%'+_0x3d6389['query'][_0x28c3('0x4f')]+'%'};return _0x483249;}})});}_0xbcf38d=_[_0x28c3('0x50')]({},_0xbcf38d,_0x3d6389[_0x28c3('0x51')]);var _0x2c668a={'where':_0xbcf38d[_0x28c3('0x4d')]};return db[_0x28c3('0x52')][_0x28c3('0x32')](_0x2c668a)[_0x28c3('0x1f')](function(_0x19ce51){_0x84dc3d['count']=_0x19ce51;if(_0x3d6389[_0x28c3('0x43')]['includeAll']){_0xbcf38d[_0x28c3('0x53')]=[{'all':!![]}];}return db[_0x28c3('0x52')][_0x28c3('0x54')](_0xbcf38d);})[_0x28c3('0x1f')](function(_0x3140db){_0x84dc3d[_0x28c3('0x55')]=_0x3140db;return _0x84dc3d;})['then'](respondWithFilteredResult(_0x588911,_0xbcf38d))[_0x28c3('0x2a')](handleError(_0x588911,null));};exports['show']=function(_0x372e6e,_0x1da486){var _0x1f44c3={'raw':![],'where':{'id':_0x372e6e[_0x28c3('0x56')]['id']}},_0x4be28f={};_0x4be28f[_0x28c3('0x42')]=_[_0x28c3('0x44')](db[_0x28c3('0x52')]['rawAttributes']);_0x4be28f[_0x28c3('0x43')]=_[_0x28c3('0x44')](_0x372e6e[_0x28c3('0x43')]);_0x4be28f[_0x28c3('0x45')]=_[_0x28c3('0x46')](_0x4be28f['model'],_0x4be28f[_0x28c3('0x43')]);_0x1f44c3[_0x28c3('0x48')]=_[_0x28c3('0x46')](_0x4be28f[_0x28c3('0x42')],qs[_0x28c3('0x47')](_0x372e6e[_0x28c3('0x43')]['fields']));_0x1f44c3[_0x28c3('0x48')]=_0x1f44c3[_0x28c3('0x48')][_0x28c3('0x49')]?_0x1f44c3[_0x28c3('0x48')]:_0x4be28f[_0x28c3('0x42')];if(_0x372e6e[_0x28c3('0x43')][_0x28c3('0x57')]){_0x1f44c3[_0x28c3('0x53')]=[{'all':!![]}];}_0x1f44c3=_['merge']({},_0x1f44c3,_0x372e6e[_0x28c3('0x51')]);return db[_0x28c3('0x52')][_0x28c3('0x58')](_0x1f44c3)[_0x28c3('0x1f')](handleEntityNotFound(_0x1da486,null))[_0x28c3('0x1f')](respondWithResult(_0x1da486,null))[_0x28c3('0x2a')](handleError(_0x1da486,null));};exports[_0x28c3('0x37')]=function(_0x20e626,_0x5eb678){if(_0x20e626['body']['id']){delete _0x20e626[_0x28c3('0x59')]['id'];}return db[_0x28c3('0x52')][_0x28c3('0x58')]({'where':{'id':_0x20e626[_0x28c3('0x56')]['id']}})['then'](handleEntityNotFound(_0x5eb678,null))[_0x28c3('0x1f')](saveUpdates(_0x20e626['body'],null))[_0x28c3('0x1f')](respondWithResult(_0x5eb678,null))[_0x28c3('0x2a')](handleError(_0x5eb678,null));};exports[_0x28c3('0x5a')]=function(_0x4c65e9,_0x5d066a,_0x23855c){if(_0x4c65e9['file']&&_0x4c65e9[_0x28c3('0x5b')][_0x28c3('0x5c')]){_0x4c65e9['body'][_0x28c3('0x5d')]=_0x4c65e9[_0x28c3('0x5b')][_0x28c3('0x5c')];}return db['Setting'][_0x28c3('0x58')]({'where':{'id':_0x4c65e9[_0x28c3('0x56')]['id']}})[_0x28c3('0x1f')](handleEntityNotFound(_0x5d066a,null))['then'](saveUpdates(_0x4c65e9[_0x28c3('0x59')],null))[_0x28c3('0x1f')](respondWithResult(_0x5d066a,null))[_0x28c3('0x2a')](handleError(_0x5d066a,null));};exports[_0x28c3('0x5e')]=function(_0x23eaca,_0xd820d2,_0x483dbe){if(_0x23eaca[_0x28c3('0x5b')]&&_0x23eaca[_0x28c3('0x5b')][_0x28c3('0x5c')]){_0x23eaca[_0x28c3('0x59')][_0x28c3('0x5f')]=_0x23eaca[_0x28c3('0x5b')]['filename'];}return db['Setting'][_0x28c3('0x58')]({'where':{'id':_0x23eaca[_0x28c3('0x56')]['id']}})[_0x28c3('0x1f')](handleEntityNotFound(_0xd820d2,null))['then'](saveUpdates(_0x23eaca['body'],null))[_0x28c3('0x1f')](respondWithResult(_0xd820d2,null))[_0x28c3('0x2a')](handleError(_0xd820d2,null));};var utilLicense=require(_0x28c3('0x60'));exports[_0x28c3('0x61')]=function(_0x17d1c8,_0x466f66,_0x113222){var _0x436c3a=_0x28c3('0x62');var _0x7bd053={'custom':![]};return utilLicense[_0x28c3('0x63')]()[_0x28c3('0x1f')](function(_0x467932){if(_0x467932){_0x7bd053=_0x467932;}return db[_0x28c3('0x52')][_0x28c3('0x58')]({'where':{'id':_0x17d1c8[_0x28c3('0x56')]['id']},'attributes':[_0x28c3('0x5d'),_0x28c3('0x5f'),_0x28c3('0x64'),_0x28c3('0x65'),_0x28c3('0x66'),_0x28c3('0x67'),'defaultPreferred',_0x28c3('0x68')],'raw':!![]});})[_0x28c3('0x1f')](handleEntityNotFound(_0x466f66,null))[_0x28c3('0x1f')](function(_0x2ced16){if(_0x2ced16){var _0x413542=_0x2ced16['logo']&&fs[_0x28c3('0x69')](path[_0x28c3('0x6a')](config[_0x28c3('0x6b')],_0x436c3a,_[_0x28c3('0x6c')](_0x2ced16['logo'])))?path[_0x28c3('0x6a')](config[_0x28c3('0x6b')],_0x436c3a,_[_0x28c3('0x6c')](_0x2ced16[_0x28c3('0x5d')])):path[_0x28c3('0x6a')](config[_0x28c3('0x6b')],_0x436c3a,_[_0x28c3('0x6c')](_0x28c3('0x6d')));var _0x19d2bb=_0x28c3('0x6e')+_[_0x28c3('0x6f')](_0x28c3('0x5d'));if(_0x2ced16[_0x19d2bb]||!_0x7bd053['custom']){_0x413542=path[_0x28c3('0x6a')](config[_0x28c3('0x6b')],_0x436c3a,_[_0x28c3('0x6c')](_0x28c3('0x6d')));}if(!fs[_0x28c3('0x69')](_0x413542)){throw new db[(_0x28c3('0x70'))][(_0x28c3('0x71'))](_[_0x28c3('0x6f')]('logo')+_0x28c3('0x72'));}return _0x466f66[_0x28c3('0x73')](_0x413542);}})['catch'](handleError(_0x466f66,null));};var utilLicense=require('../../config/license/util');exports[_0x28c3('0x74')]=function(_0x926d9a,_0x24c9ca,_0x41a5e2){var _0x5de5e4=_0x28c3('0x62');var _0xf528e5={'custom':![]};return utilLicense['getLicense']()[_0x28c3('0x1f')](function(_0x38d832){if(_0x38d832){_0xf528e5=_0x38d832;}return db[_0x28c3('0x52')][_0x28c3('0x58')]({'where':{'id':_0x926d9a[_0x28c3('0x56')]['id']},'attributes':[_0x28c3('0x5d'),'loginLogo',_0x28c3('0x64'),_0x28c3('0x65'),_0x28c3('0x66'),'defaultLoginLogo',_0x28c3('0x75'),_0x28c3('0x68')],'raw':!![]});})[_0x28c3('0x1f')](handleEntityNotFound(_0x24c9ca,null))[_0x28c3('0x1f')](function(_0x1ee7b8){if(_0x1ee7b8){var _0x442900=_0x1ee7b8['loginLogo']&&fs['existsSync'](path[_0x28c3('0x6a')](config[_0x28c3('0x6b')],_0x5de5e4,_[_0x28c3('0x6c')](_0x1ee7b8['loginLogo'])))?path[_0x28c3('0x6a')](config[_0x28c3('0x6b')],_0x5de5e4,_[_0x28c3('0x6c')](_0x1ee7b8[_0x28c3('0x5f')])):path['join'](config[_0x28c3('0x6b')],_0x5de5e4,_[_0x28c3('0x6c')]('default_loginLogo.svg'));var _0x308222=_0x28c3('0x6e')+_[_0x28c3('0x6f')](_0x28c3('0x5f'));if(_0x1ee7b8[_0x308222]||!_0xf528e5['custom']){_0x442900=path['join'](config[_0x28c3('0x6b')],_0x5de5e4,_[_0x28c3('0x6c')](_0x28c3('0x76')));}if(!fs[_0x28c3('0x69')](_0x442900)){throw new db[(_0x28c3('0x70'))][(_0x28c3('0x71'))](_['upperFirst'](_0x28c3('0x5f'))+_0x28c3('0x72'));}return _0x24c9ca['download'](_0x442900);}})[_0x28c3('0x2a')](handleError(_0x24c9ca,null));};exports['gdpr']=function(_0x510c0d,_0x4aae5e){return db[_0x28c3('0x52')]['find']({'where':{'id':_0x510c0d[_0x28c3('0x56')]['id']},'attributes':[_0x28c3('0x77')]})[_0x28c3('0x1f')](respondWithResult(_0x4aae5e,null))['catch'](handleError(_0x4aae5e,null));};exports[_0x28c3('0x78')]=function(_0x2ed85c,_0x3cbb95,_0x2c9174){if(_0x2ed85c[_0x28c3('0x5b')]&&_0x2ed85c[_0x28c3('0x5b')][_0x28c3('0x5c')]){_0x2ed85c[_0x28c3('0x59')]['preferred']=_0x2ed85c[_0x28c3('0x5b')]['filename'];}return db[_0x28c3('0x52')][_0x28c3('0x58')]({'where':{'id':_0x2ed85c[_0x28c3('0x56')]['id']}})[_0x28c3('0x1f')](handleEntityNotFound(_0x3cbb95,null))[_0x28c3('0x1f')](saveUpdates(_0x2ed85c[_0x28c3('0x59')],null))[_0x28c3('0x1f')](respondWithResult(_0x3cbb95,null))[_0x28c3('0x2a')](handleError(_0x3cbb95,null));};var utilLicense=require(_0x28c3('0x60'));exports['getPreferred']=function(_0x5b5026,_0x28c36c,_0x221581){var _0x616cbb=_0x28c3('0x62');var _0x3f04a0={'custom':![]};return utilLicense['getLicense']()[_0x28c3('0x1f')](function(_0x160935){if(_0x160935){_0x3f04a0=_0x160935;}return db[_0x28c3('0x52')][_0x28c3('0x58')]({'where':{'id':_0x5b5026[_0x28c3('0x56')]['id']},'attributes':[_0x28c3('0x5d'),_0x28c3('0x5f'),_0x28c3('0x64'),_0x28c3('0x65'),_0x28c3('0x66'),_0x28c3('0x67'),_0x28c3('0x75'),'defaultFavicon'],'raw':!![]});})['then'](handleEntityNotFound(_0x28c36c,null))[_0x28c3('0x1f')](function(_0x4b06ef){if(_0x4b06ef){var _0x1575e6=_0x4b06ef['preferred']&&fs[_0x28c3('0x69')](path[_0x28c3('0x6a')](config[_0x28c3('0x6b')],_0x616cbb,_[_0x28c3('0x6c')](_0x4b06ef[_0x28c3('0x64')])))?path[_0x28c3('0x6a')](config[_0x28c3('0x6b')],_0x616cbb,_[_0x28c3('0x6c')](_0x4b06ef[_0x28c3('0x64')])):path[_0x28c3('0x6a')](config['root'],_0x616cbb,_[_0x28c3('0x6c')](_0x28c3('0x79')));var _0xb40248=_0x28c3('0x6e')+_['upperFirst'](_0x28c3('0x64'));if(_0x4b06ef[_0xb40248]||!_0x3f04a0[_0x28c3('0x7a')]||!_0x3f04a0[_0x28c3('0x64')]){_0x1575e6=path[_0x28c3('0x6a')](config[_0x28c3('0x6b')],_0x616cbb,_['toLower'](_0x28c3('0x79')));}if(!fs['existsSync'](_0x1575e6)){throw new db[(_0x28c3('0x70'))][(_0x28c3('0x71'))](_[_0x28c3('0x6f')](_0x28c3('0x64'))+'\x20not\x20found');}return _0x28c36c[_0x28c3('0x73')](_0x1575e6);}})['catch'](handleError(_0x28c36c,null));};exports[_0x28c3('0x7b')]=function(_0x258e5d,_0x6c22c1,_0x4459ec){if(_0x258e5d[_0x28c3('0x5b')]&&_0x258e5d['file'][_0x28c3('0x5c')]){_0x258e5d[_0x28c3('0x59')]['favicon']=_0x258e5d['file']['filename'];}return db['Setting'][_0x28c3('0x58')]({'where':{'id':_0x258e5d[_0x28c3('0x56')]['id']}})['then'](handleEntityNotFound(_0x6c22c1,null))[_0x28c3('0x1f')](saveUpdates(_0x258e5d['body'],null))[_0x28c3('0x1f')](respondWithResult(_0x6c22c1,null))[_0x28c3('0x2a')](handleError(_0x6c22c1,null));};var utilLicense=require(_0x28c3('0x60'));exports[_0x28c3('0x7c')]=function(_0x11018e,_0x5f45e7,_0x3cea11){var _0x3e3b17=_0x28c3('0x62');var _0x1ec58c={'custom':![]};return utilLicense[_0x28c3('0x63')]()[_0x28c3('0x1f')](function(_0x30f8c7){if(_0x30f8c7){_0x1ec58c=_0x30f8c7;}return db[_0x28c3('0x52')][_0x28c3('0x58')]({'where':{'id':_0x11018e['params']['id']},'attributes':['logo',_0x28c3('0x5f'),_0x28c3('0x64'),'favicon',_0x28c3('0x66'),_0x28c3('0x67'),_0x28c3('0x75'),_0x28c3('0x68')],'raw':!![]});})[_0x28c3('0x1f')](handleEntityNotFound(_0x5f45e7,null))[_0x28c3('0x1f')](function(_0x2ce57a){if(_0x2ce57a){var _0x8ec8e2=_0x2ce57a[_0x28c3('0x65')]&&fs[_0x28c3('0x69')](path[_0x28c3('0x6a')](config[_0x28c3('0x6b')],_0x3e3b17,_['toLower'](_0x2ce57a['favicon'])))?path[_0x28c3('0x6a')](config[_0x28c3('0x6b')],_0x3e3b17,_[_0x28c3('0x6c')](_0x2ce57a[_0x28c3('0x65')])):path['join'](config[_0x28c3('0x6b')],_0x3e3b17,_['toLower'](_0x28c3('0x7d')));var _0x1b7683='default'+_['upperFirst'](_0x28c3('0x65'));if(_0x2ce57a[_0x1b7683]||!_0x1ec58c[_0x28c3('0x7a')]){_0x8ec8e2=path[_0x28c3('0x6a')](config[_0x28c3('0x6b')],_0x3e3b17,_[_0x28c3('0x6c')](_0x28c3('0x7d')));}if(!fs['existsSync'](_0x8ec8e2)){throw new db['Sequelize']['ValidationError'](_[_0x28c3('0x6f')]('favicon')+_0x28c3('0x72'));}return _0x5f45e7[_0x28c3('0x73')](_0x8ec8e2);}})[_0x28c3('0x2a')](handleError(_0x5f45e7,null));};exports[_0x28c3('0x7e')]=function(_0x5f1b09,_0x5c4458){var _0x1d4918={'offset':moment()['utcOffset']()};_0x1d4918[_0x28c3('0x7f')]=moment()['utcOffset'](_0x1d4918[_0x28c3('0x2f')])[_0x28c3('0x80')](_0x28c3('0x81'));return _0x5c4458['status'](0xc8)[_0x28c3('0x3b')](_0x1d4918);};
\ No newline at end of file
+var _0x64e1=['getLicense','preferred','favicon','defaultLogo','defaultLoginLogo','defaultPreferred','defaultFavicon','logo','join','root','toLower','default_logo.svg','default','custom','existsSync','upperFirst','\x20not\x20found','download','getLogoLogin','loginLogo','default_loginLogo.svg','ValidationError','gdpr','default_preferred.png','Sequelize','addFavicon','getFavicon','default_favicon.ico','getDate','now','utcOffset','format','YYYY-MM-DD\x20HH:mm:ss:SSS','eml-format','rimraf','zip-dir','fast-json-patch','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','jayson/promise','request','then','info','Setting,\x20%s,\x20%s','debug','Setting,\x20%s,\x20%s,\x20%s','error','code','message','request\x20sent','result','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','destroy','end','stack','name','send','Setting','rawAttributes','fieldName','type','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','pick','filter','where','merge','map','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','find','body','params','addLogo','file','filename','../../config/license/util','server/files/images/logos'];(function(_0x2f253f,_0x5376e4){var _0x5708f9=function(_0x34903a){while(--_0x34903a){_0x2f253f['push'](_0x2f253f['shift']());}};_0x5708f9(++_0x5376e4);}(_0x64e1,0x9a));var _0x164e=function(_0x1614ee,_0x487233){_0x1614ee=_0x1614ee-0x0;var _0x46d6f8=_0x64e1[_0x1614ee];return _0x46d6f8;};'use strict';var emlformat=require(_0x164e('0x0'));var rimraf=require(_0x164e('0x1'));var zipdir=require(_0x164e('0x2'));var jsonpatch=require(_0x164e('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x164e('0x4'));var path=require('path');var sox=require(_0x164e('0x5'));var csv=require(_0x164e('0x6'));var ejs=require(_0x164e('0x7'));var fs=require('fs');var fs_extra=require(_0x164e('0x8'));var _=require(_0x164e('0x9'));var squel=require(_0x164e('0xa'));var crypto=require(_0x164e('0xb'));var jsforce=require(_0x164e('0xc'));var deskjs=require(_0x164e('0xd'));var toCsv=require(_0x164e('0x6'));var querystring=require(_0x164e('0xe'));var Papa=require('papaparse');var Redis=require(_0x164e('0xf'));var authService=require(_0x164e('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x164e('0x11'));var hardwareService=require(_0x164e('0x12'));var logger=require(_0x164e('0x13'))(_0x164e('0x14'));var utils=require(_0x164e('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x164e('0x16'))['db'];var jayson=require(_0x164e('0x17'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x2d89cf,_0x1aee4f,_0x1da381,_0x4e5404){return new BPromise(function(_0x39bcd7,_0x52bc40){var _0x200cab=_0x4e5404||client;return _0x200cab[_0x164e('0x18')](_0x2d89cf,_0x1da381)[_0x164e('0x19')](function(_0x144f24){logger[_0x164e('0x1a')](_0x164e('0x1b'),_0x1aee4f,'request\x20sent');logger[_0x164e('0x1c')](_0x164e('0x1d'),_0x1aee4f,'request\x20sent',JSON['stringify'](_0x144f24));if(_0x144f24['error']){if(_0x144f24[_0x164e('0x1e')][_0x164e('0x1f')]===0x1f4){logger[_0x164e('0x1e')](_0x164e('0x1b'),_0x1aee4f,_0x144f24['error'][_0x164e('0x20')]);return _0x52bc40(_0x144f24[_0x164e('0x1e')][_0x164e('0x20')]);}logger[_0x164e('0x1e')](_0x164e('0x1b'),_0x1aee4f,_0x144f24[_0x164e('0x1e')][_0x164e('0x20')]);return _0x39bcd7(_0x144f24[_0x164e('0x1e')]['message']);}else{logger[_0x164e('0x1a')](_0x164e('0x1b'),_0x1aee4f,_0x164e('0x21'));_0x39bcd7(_0x144f24[_0x164e('0x22')][_0x164e('0x20')]);}})['catch'](function(_0x3cabdf){logger[_0x164e('0x1e')](_0x164e('0x1b'),_0x1aee4f,_0x3cabdf);_0x52bc40(_0x3cabdf);});});}function respondWithStatusCode(_0x227b1,_0x1f5f5d){_0x1f5f5d=_0x1f5f5d||0xcc;return function(_0x1dea50){if(_0x1dea50){return _0x227b1[_0x164e('0x23')](_0x1f5f5d);}return _0x227b1['status'](_0x1f5f5d)['end']();};}function respondWithResult(_0x48ca3a,_0x2771b2){_0x2771b2=_0x2771b2||0xc8;return function(_0xecb9f9){if(_0xecb9f9){return _0x48ca3a[_0x164e('0x24')](_0x2771b2)[_0x164e('0x25')](_0xecb9f9);}};}function respondWithFilteredResult(_0x1b90e2,_0x16e61c){return function(_0xadcc96){if(_0xadcc96){var _0x14012c=typeof _0x16e61c[_0x164e('0x26')]===_0x164e('0x27')&&typeof _0x16e61c[_0x164e('0x28')]===_0x164e('0x27');var _0x3cb354=_0xadcc96[_0x164e('0x29')];var _0x2e5a43=_0x14012c?0x0:_0x16e61c[_0x164e('0x26')];var _0x2dfd43=_0x14012c?_0xadcc96[_0x164e('0x29')]:_0x16e61c[_0x164e('0x26')]+_0x16e61c[_0x164e('0x28')];var _0x42db4a;if(_0x2dfd43>=_0x3cb354){_0x2dfd43=_0x3cb354;_0x42db4a=0xc8;}else{_0x42db4a=0xce;}_0x1b90e2['status'](_0x42db4a);return _0x1b90e2[_0x164e('0x2a')](_0x164e('0x2b'),_0x2e5a43+'-'+_0x2dfd43+'/'+_0x3cb354)[_0x164e('0x25')](_0xadcc96);}return null;};}function patchUpdates(_0x2bcd9f){return function(_0xb1e720){try{jsonpatch[_0x164e('0x2c')](_0xb1e720,_0x2bcd9f,!![]);}catch(_0x2bd7a0){return BPromise['reject'](_0x2bd7a0);}return _0xb1e720[_0x164e('0x2d')]();};}function saveUpdates(_0x402bff,_0x3c1a6f){return function(_0x5ecc1d){if(_0x5ecc1d){return _0x5ecc1d[_0x164e('0x2e')](_0x402bff)[_0x164e('0x19')](function(_0x3ebf8a){return _0x3ebf8a;});}return null;};}function removeEntity(_0x265ad3,_0x3a29af){return function(_0xc6c4a1){if(_0xc6c4a1){return _0xc6c4a1[_0x164e('0x2f')]()['then'](function(){_0x265ad3[_0x164e('0x24')](0xcc)[_0x164e('0x30')]();});}};}function handleEntityNotFound(_0x370d25,_0xf1b18b){return function(_0x55568f){if(!_0x55568f){_0x370d25[_0x164e('0x23')](0x194);}return _0x55568f;};}function handleError(_0x1be44f,_0x148c41){_0x148c41=_0x148c41||0x1f4;return function(_0x3fa1ad){logger['error'](_0x3fa1ad[_0x164e('0x31')]);if(_0x3fa1ad[_0x164e('0x32')]){delete _0x3fa1ad['name'];}_0x1be44f[_0x164e('0x24')](_0x148c41)[_0x164e('0x33')](_0x3fa1ad);};}exports['index']=function(_0x4fa422,_0x4a9f68){var _0x4186a7={},_0x2810f8={},_0x30c50e={'count':0x0,'rows':[]};var _0x19bb78=_['map'](db[_0x164e('0x34')][_0x164e('0x35')],function(_0x38b011){return{'name':_0x38b011[_0x164e('0x36')],'type':_0x38b011[_0x164e('0x37')]['key']};});_0x2810f8['model']=_['map'](_0x19bb78,_0x164e('0x32'));_0x2810f8[_0x164e('0x38')]=_[_0x164e('0x39')](_0x4fa422['query']);_0x2810f8[_0x164e('0x3a')]=_[_0x164e('0x3b')](_0x2810f8[_0x164e('0x3c')],_0x2810f8[_0x164e('0x38')]);_0x4186a7[_0x164e('0x3d')]=_[_0x164e('0x3b')](_0x2810f8[_0x164e('0x3c')],qs[_0x164e('0x3e')](_0x4fa422[_0x164e('0x38')]['fields']));_0x4186a7[_0x164e('0x3d')]=_0x4186a7['attributes'][_0x164e('0x3f')]?_0x4186a7[_0x164e('0x3d')]:_0x2810f8[_0x164e('0x3c')];if(!_0x4fa422[_0x164e('0x38')][_0x164e('0x40')](_0x164e('0x41'))){_0x4186a7[_0x164e('0x28')]=qs['limit'](_0x4fa422[_0x164e('0x38')][_0x164e('0x28')]);_0x4186a7[_0x164e('0x26')]=qs[_0x164e('0x26')](_0x4fa422[_0x164e('0x38')][_0x164e('0x26')]);}_0x4186a7['order']=qs[_0x164e('0x42')](_0x4fa422[_0x164e('0x38')][_0x164e('0x42')]);_0x4186a7['where']=qs['filters'](_[_0x164e('0x43')](_0x4fa422['query'],_0x2810f8[_0x164e('0x3a')]),_0x19bb78);if(_0x4fa422[_0x164e('0x38')][_0x164e('0x44')]){_0x4186a7[_0x164e('0x45')]=_[_0x164e('0x46')](_0x4186a7[_0x164e('0x45')],{'$or':_[_0x164e('0x47')](_0x19bb78,function(_0x4fa9b8){if(_0x4fa9b8[_0x164e('0x37')]!==_0x164e('0x48')){var _0x5ea575={};_0x5ea575[_0x4fa9b8[_0x164e('0x32')]]={'$like':'%'+_0x4fa422[_0x164e('0x38')]['filter']+'%'};return _0x5ea575;}})});}_0x4186a7=_[_0x164e('0x46')]({},_0x4186a7,_0x4fa422[_0x164e('0x49')]);var _0x46d91e={'where':_0x4186a7[_0x164e('0x45')]};return db[_0x164e('0x34')][_0x164e('0x29')](_0x46d91e)[_0x164e('0x19')](function(_0x527601){_0x30c50e[_0x164e('0x29')]=_0x527601;if(_0x4fa422['query'][_0x164e('0x4a')]){_0x4186a7[_0x164e('0x4b')]=[{'all':!![]}];}return db[_0x164e('0x34')][_0x164e('0x4c')](_0x4186a7);})[_0x164e('0x19')](function(_0x3ebaaa){_0x30c50e[_0x164e('0x4d')]=_0x3ebaaa;return _0x30c50e;})['then'](respondWithFilteredResult(_0x4a9f68,_0x4186a7))[_0x164e('0x4e')](handleError(_0x4a9f68,null));};exports[_0x164e('0x4f')]=function(_0x546278,_0x302e1c){var _0x1629dc={'raw':![],'where':{'id':_0x546278['params']['id']}},_0x4ff435={};_0x4ff435['model']=_['keys'](db[_0x164e('0x34')]['rawAttributes']);_0x4ff435[_0x164e('0x38')]=_['keys'](_0x546278[_0x164e('0x38')]);_0x4ff435[_0x164e('0x3a')]=_[_0x164e('0x3b')](_0x4ff435[_0x164e('0x3c')],_0x4ff435[_0x164e('0x38')]);_0x1629dc[_0x164e('0x3d')]=_[_0x164e('0x3b')](_0x4ff435[_0x164e('0x3c')],qs[_0x164e('0x3e')](_0x546278[_0x164e('0x38')][_0x164e('0x3e')]));_0x1629dc[_0x164e('0x3d')]=_0x1629dc['attributes']['length']?_0x1629dc['attributes']:_0x4ff435['model'];if(_0x546278[_0x164e('0x38')]['includeAll']){_0x1629dc[_0x164e('0x4b')]=[{'all':!![]}];}_0x1629dc=_[_0x164e('0x46')]({},_0x1629dc,_0x546278[_0x164e('0x49')]);return db[_0x164e('0x34')][_0x164e('0x50')](_0x1629dc)[_0x164e('0x19')](handleEntityNotFound(_0x302e1c,null))[_0x164e('0x19')](respondWithResult(_0x302e1c,null))[_0x164e('0x4e')](handleError(_0x302e1c,null));};exports[_0x164e('0x2e')]=function(_0x1f852d,_0x154980){if(_0x1f852d[_0x164e('0x51')]['id']){delete _0x1f852d['body']['id'];}return db[_0x164e('0x34')]['find']({'where':{'id':_0x1f852d[_0x164e('0x52')]['id']}})[_0x164e('0x19')](handleEntityNotFound(_0x154980,null))[_0x164e('0x19')](saveUpdates(_0x1f852d[_0x164e('0x51')],null))[_0x164e('0x19')](respondWithResult(_0x154980,null))[_0x164e('0x4e')](handleError(_0x154980,null));};exports[_0x164e('0x53')]=function(_0x791f46,_0xaf4f29,_0x5cf45e){if(_0x791f46['file']&&_0x791f46[_0x164e('0x54')]['filename']){_0x791f46[_0x164e('0x51')]['logo']=_0x791f46['file'][_0x164e('0x55')];}return db[_0x164e('0x34')][_0x164e('0x50')]({'where':{'id':_0x791f46[_0x164e('0x52')]['id']}})['then'](handleEntityNotFound(_0xaf4f29,null))[_0x164e('0x19')](saveUpdates(_0x791f46[_0x164e('0x51')],null))[_0x164e('0x19')](respondWithResult(_0xaf4f29,null))[_0x164e('0x4e')](handleError(_0xaf4f29,null));};exports['addLogoLogin']=function(_0x45e100,_0x61599c,_0x3d2aec){if(_0x45e100[_0x164e('0x54')]&&_0x45e100[_0x164e('0x54')][_0x164e('0x55')]){_0x45e100['body']['loginLogo']=_0x45e100[_0x164e('0x54')]['filename'];}return db['Setting'][_0x164e('0x50')]({'where':{'id':_0x45e100[_0x164e('0x52')]['id']}})[_0x164e('0x19')](handleEntityNotFound(_0x61599c,null))[_0x164e('0x19')](saveUpdates(_0x45e100[_0x164e('0x51')],null))[_0x164e('0x19')](respondWithResult(_0x61599c,null))[_0x164e('0x4e')](handleError(_0x61599c,null));};var utilLicense=require(_0x164e('0x56'));exports['getLogo']=function(_0x739309,_0x39df07,_0x2ddea5){var _0x57ac81=_0x164e('0x57');var _0x4fbb57={'custom':![]};return utilLicense[_0x164e('0x58')]()['then'](function(_0x136ef4){if(_0x136ef4){_0x4fbb57=_0x136ef4;}return db[_0x164e('0x34')][_0x164e('0x50')]({'where':{'id':_0x739309[_0x164e('0x52')]['id']},'attributes':['logo','loginLogo',_0x164e('0x59'),_0x164e('0x5a'),_0x164e('0x5b'),_0x164e('0x5c'),_0x164e('0x5d'),_0x164e('0x5e')],'raw':!![]});})[_0x164e('0x19')](handleEntityNotFound(_0x39df07,null))[_0x164e('0x19')](function(_0x2b07e8){if(_0x2b07e8){var _0x5ada06=_0x2b07e8[_0x164e('0x5f')]&&fs['existsSync'](path[_0x164e('0x60')](config[_0x164e('0x61')],_0x57ac81,_[_0x164e('0x62')](_0x2b07e8[_0x164e('0x5f')])))?path[_0x164e('0x60')](config[_0x164e('0x61')],_0x57ac81,_[_0x164e('0x62')](_0x2b07e8[_0x164e('0x5f')])):path[_0x164e('0x60')](config['root'],_0x57ac81,_['toLower'](_0x164e('0x63')));var _0xfcbe35=_0x164e('0x64')+_['upperFirst']('logo');if(_0x2b07e8[_0xfcbe35]||!_0x4fbb57[_0x164e('0x65')]){_0x5ada06=path[_0x164e('0x60')](config[_0x164e('0x61')],_0x57ac81,_[_0x164e('0x62')]('default_logo.svg'));}if(!fs[_0x164e('0x66')](_0x5ada06)){throw new db['Sequelize']['ValidationError'](_[_0x164e('0x67')](_0x164e('0x5f'))+_0x164e('0x68'));}return _0x39df07[_0x164e('0x69')](_0x5ada06);}})['catch'](handleError(_0x39df07,null));};var utilLicense=require('../../config/license/util');exports[_0x164e('0x6a')]=function(_0x32b9c7,_0x3e0c4a,_0x3e219a){var _0x3fddaf='server/files/images/logos';var _0x26e1ab={'custom':![]};return utilLicense[_0x164e('0x58')]()['then'](function(_0x3d11a2){if(_0x3d11a2){_0x26e1ab=_0x3d11a2;}return db[_0x164e('0x34')][_0x164e('0x50')]({'where':{'id':_0x32b9c7[_0x164e('0x52')]['id']},'attributes':[_0x164e('0x5f'),_0x164e('0x6b'),_0x164e('0x59'),_0x164e('0x5a'),_0x164e('0x5b'),_0x164e('0x5c'),'defaultPreferred',_0x164e('0x5e')],'raw':!![]});})[_0x164e('0x19')](handleEntityNotFound(_0x3e0c4a,null))['then'](function(_0x3c2cca){if(_0x3c2cca){var _0xbf4796=_0x3c2cca[_0x164e('0x6b')]&&fs['existsSync'](path[_0x164e('0x60')](config['root'],_0x3fddaf,_['toLower'](_0x3c2cca[_0x164e('0x6b')])))?path['join'](config[_0x164e('0x61')],_0x3fddaf,_[_0x164e('0x62')](_0x3c2cca[_0x164e('0x6b')])):path[_0x164e('0x60')](config['root'],_0x3fddaf,_[_0x164e('0x62')](_0x164e('0x6c')));var _0x19d5d5='default'+_[_0x164e('0x67')](_0x164e('0x6b'));if(_0x3c2cca[_0x19d5d5]||!_0x26e1ab[_0x164e('0x65')]){_0xbf4796=path['join'](config[_0x164e('0x61')],_0x3fddaf,_[_0x164e('0x62')]('default_loginLogo.svg'));}if(!fs[_0x164e('0x66')](_0xbf4796)){throw new db['Sequelize'][(_0x164e('0x6d'))](_[_0x164e('0x67')](_0x164e('0x6b'))+_0x164e('0x68'));}return _0x3e0c4a[_0x164e('0x69')](_0xbf4796);}})[_0x164e('0x4e')](handleError(_0x3e0c4a,null));};exports[_0x164e('0x6e')]=function(_0x5ead68,_0x53518a){return db[_0x164e('0x34')][_0x164e('0x50')]({'where':{'id':_0x5ead68['params']['id']},'attributes':['securePassword']})['then'](respondWithResult(_0x53518a,null))[_0x164e('0x4e')](handleError(_0x53518a,null));};exports['addPreferred']=function(_0x2bcfb8,_0x362a0b,_0x14f9f1){if(_0x2bcfb8['file']&&_0x2bcfb8[_0x164e('0x54')][_0x164e('0x55')]){_0x2bcfb8[_0x164e('0x51')][_0x164e('0x59')]=_0x2bcfb8['file'][_0x164e('0x55')];}return db[_0x164e('0x34')][_0x164e('0x50')]({'where':{'id':_0x2bcfb8[_0x164e('0x52')]['id']}})[_0x164e('0x19')](handleEntityNotFound(_0x362a0b,null))['then'](saveUpdates(_0x2bcfb8[_0x164e('0x51')],null))[_0x164e('0x19')](respondWithResult(_0x362a0b,null))[_0x164e('0x4e')](handleError(_0x362a0b,null));};var utilLicense=require('../../config/license/util');exports['getPreferred']=function(_0x4f1c9b,_0x2c10bf,_0x38fddb){var _0xf97fd=_0x164e('0x57');var _0x562e26={'custom':![]};return utilLicense[_0x164e('0x58')]()['then'](function(_0x5569cc){if(_0x5569cc){_0x562e26=_0x5569cc;}return db['Setting']['find']({'where':{'id':_0x4f1c9b[_0x164e('0x52')]['id']},'attributes':[_0x164e('0x5f'),_0x164e('0x6b'),_0x164e('0x59'),_0x164e('0x5a'),_0x164e('0x5b'),_0x164e('0x5c'),_0x164e('0x5d'),_0x164e('0x5e')],'raw':!![]});})[_0x164e('0x19')](handleEntityNotFound(_0x2c10bf,null))[_0x164e('0x19')](function(_0x341a44){if(_0x341a44){var _0x6dfb35=_0x341a44[_0x164e('0x59')]&&fs[_0x164e('0x66')](path[_0x164e('0x60')](config['root'],_0xf97fd,_['toLower'](_0x341a44[_0x164e('0x59')])))?path[_0x164e('0x60')](config[_0x164e('0x61')],_0xf97fd,_[_0x164e('0x62')](_0x341a44[_0x164e('0x59')])):path[_0x164e('0x60')](config[_0x164e('0x61')],_0xf97fd,_['toLower'](_0x164e('0x6f')));var _0x5f9858=_0x164e('0x64')+_[_0x164e('0x67')](_0x164e('0x59'));if(_0x341a44[_0x5f9858]||!_0x562e26[_0x164e('0x65')]||!_0x562e26[_0x164e('0x59')]){_0x6dfb35=path['join'](config[_0x164e('0x61')],_0xf97fd,_['toLower'](_0x164e('0x6f')));}if(!fs['existsSync'](_0x6dfb35)){throw new db[(_0x164e('0x70'))][(_0x164e('0x6d'))](_['upperFirst'](_0x164e('0x59'))+'\x20not\x20found');}return _0x2c10bf[_0x164e('0x69')](_0x6dfb35);}})[_0x164e('0x4e')](handleError(_0x2c10bf,null));};exports[_0x164e('0x71')]=function(_0x1489e3,_0x330828,_0x2e69e1){if(_0x1489e3[_0x164e('0x54')]&&_0x1489e3[_0x164e('0x54')]['filename']){_0x1489e3[_0x164e('0x51')][_0x164e('0x5a')]=_0x1489e3[_0x164e('0x54')]['filename'];}return db['Setting'][_0x164e('0x50')]({'where':{'id':_0x1489e3[_0x164e('0x52')]['id']}})[_0x164e('0x19')](handleEntityNotFound(_0x330828,null))['then'](saveUpdates(_0x1489e3[_0x164e('0x51')],null))[_0x164e('0x19')](respondWithResult(_0x330828,null))[_0x164e('0x4e')](handleError(_0x330828,null));};var utilLicense=require(_0x164e('0x56'));exports[_0x164e('0x72')]=function(_0x8347cd,_0x401125,_0x12a256){var _0x5d306=_0x164e('0x57');var _0x4e6beb={'custom':![]};return utilLicense[_0x164e('0x58')]()[_0x164e('0x19')](function(_0x4dcc9f){if(_0x4dcc9f){_0x4e6beb=_0x4dcc9f;}return db[_0x164e('0x34')][_0x164e('0x50')]({'where':{'id':_0x8347cd[_0x164e('0x52')]['id']},'attributes':[_0x164e('0x5f'),'loginLogo','preferred',_0x164e('0x5a'),_0x164e('0x5b'),_0x164e('0x5c'),'defaultPreferred','defaultFavicon'],'raw':!![]});})[_0x164e('0x19')](handleEntityNotFound(_0x401125,null))[_0x164e('0x19')](function(_0x56bc29){if(_0x56bc29){var _0xe69858=_0x56bc29[_0x164e('0x5a')]&&fs['existsSync'](path['join'](config['root'],_0x5d306,_[_0x164e('0x62')](_0x56bc29[_0x164e('0x5a')])))?path['join'](config[_0x164e('0x61')],_0x5d306,_[_0x164e('0x62')](_0x56bc29[_0x164e('0x5a')])):path['join'](config[_0x164e('0x61')],_0x5d306,_['toLower'](_0x164e('0x73')));var _0x4a95cc=_0x164e('0x64')+_[_0x164e('0x67')](_0x164e('0x5a'));if(_0x56bc29[_0x4a95cc]||!_0x4e6beb[_0x164e('0x65')]){_0xe69858=path['join'](config['root'],_0x5d306,_[_0x164e('0x62')](_0x164e('0x73')));}if(!fs[_0x164e('0x66')](_0xe69858)){throw new db[(_0x164e('0x70'))][(_0x164e('0x6d'))](_[_0x164e('0x67')](_0x164e('0x5a'))+'\x20not\x20found');}return _0x401125[_0x164e('0x69')](_0xe69858);}})[_0x164e('0x4e')](handleError(_0x401125,null));};exports[_0x164e('0x74')]=function(_0x3b387a,_0x2e4aa4){var _0x2c03e4={'offset':moment()['utcOffset']()};_0x2c03e4[_0x164e('0x75')]=moment()[_0x164e('0x76')](_0x2c03e4[_0x164e('0x26')])[_0x164e('0x77')](_0x164e('0x78'));return _0x2e4aa4[_0x164e('0x24')](0xc8)['send'](_0x2c03e4);};
\ No newline at end of file
index f900350..2dbee42 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['exports','define','Setting','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./setting.attributes'];(function(_0x29d94e,_0xf386d6){var _0x106237=function(_0x327501){while(--_0x327501){_0x29d94e['push'](_0x29d94e['shift']());}};_0x106237(++_0xf386d6);}(_0x9957,0x93));var _0x7995=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0x9957[_0xbca1b1];return _0x4e1686;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var 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':'settings','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x55ca=['./setting.attributes','exports','define','settings','lodash','util','bluebird','request-promise','rimraf','../../config/environment'];(function(_0x5b6cf1,_0x32fdcd){var _0x46278c=function(_0x53fd9b){while(--_0x53fd9b){_0x5b6cf1['push'](_0x5b6cf1['shift']());}};_0x46278c(++_0x32fdcd);}(_0x55ca,0x126));var _0xa55c=function(_0x5572b7,_0x244036){_0x5572b7=_0x5572b7-0x0;var _0x1bc232=_0x55ca[_0x5572b7];return _0x1bc232;};'use strict';var _=require(_0xa55c('0x0'));var util=require(_0xa55c('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0xa55c('0x2'));var rp=require(_0xa55c('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xa55c('0x4'));var config=require(_0xa55c('0x5'));var attributes=require(_0xa55c('0x6'));module[_0xa55c('0x7')]=function(_0x3c97c8,_0x279caa){return _0x3c97c8[_0xa55c('0x8')]('Setting',attributes,{'tableName':_0xa55c('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 76d54d2..7cc3370 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b0b=['util','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Setting,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','ShowSetting','Setting','options','raw','attributes','include','map','model','debug','catch','lodash'];(function(_0x4b2436,_0x452299){var _0x4f5ab2=function(_0x5c6679){while(--_0x5c6679){_0x4b2436['push'](_0x4b2436['shift']());}};_0x4f5ab2(++_0x452299);}(_0x1b0b,0x77));var _0xb1b0=function(_0x209941,_0x5c9988){_0x209941=_0x209941-0x0;var _0x1e8729=_0x1b0b[_0x209941];return _0x1e8729;};'use strict';var _=require(_0xb1b0('0x0'));var util=require(_0xb1b0('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xb1b0('0x2'));var fs=require('fs');var Redis=require(_0xb1b0('0x3'));var db=require(_0xb1b0('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xb1b0('0x5'))(_0xb1b0('0x6'));var config=require(_0xb1b0('0x7'));var jayson=require(_0xb1b0('0x8'));var client=jayson[_0xb1b0('0x9')][_0xb1b0('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2c160e,_0x162c98,_0x93ccaf){return new BPromise(function(_0x261353,_0x211a65){return client[_0xb1b0('0xb')](_0x2c160e,_0x93ccaf)[_0xb1b0('0xc')](function(_0x1fcd5a){logger[_0xb1b0('0xd')](_0xb1b0('0xe'),_0x162c98,_0xb1b0('0xf'));logger['debug']('Setting,\x20%s,\x20%s,\x20%s',_0x162c98,'request\x20sent',JSON[_0xb1b0('0x10')](_0x1fcd5a));if(_0x1fcd5a[_0xb1b0('0x11')]){if(_0x1fcd5a[_0xb1b0('0x11')]['code']===0x1f4){logger[_0xb1b0('0x11')](_0xb1b0('0xe'),_0x162c98,_0x1fcd5a[_0xb1b0('0x11')][_0xb1b0('0x12')]);return _0x211a65(_0x1fcd5a[_0xb1b0('0x11')][_0xb1b0('0x12')]);}logger['error'](_0xb1b0('0xe'),_0x162c98,_0x1fcd5a[_0xb1b0('0x11')][_0xb1b0('0x12')]);return _0x261353(_0x1fcd5a[_0xb1b0('0x11')]['message']);}else{logger[_0xb1b0('0xd')]('Setting,\x20%s,\x20%s',_0x162c98,'request\x20sent');_0x261353(_0x1fcd5a[_0xb1b0('0x13')][_0xb1b0('0x12')]);}})['catch'](function(_0x2f8f50){logger['error'](_0xb1b0('0xe'),_0x162c98,_0x2f8f50);_0x211a65(_0x2f8f50);});});}exports[_0xb1b0('0x14')]=function(_0x2f0db7){var _0x358fb0=this;return new Promise(function(_0x29409d,_0x590e3e){return db[_0xb1b0('0x15')]['find']({'raw':_0x2f0db7[_0xb1b0('0x16')]?_0x2f0db7['options'][_0xb1b0('0x17')]===undefined?!![]:![]:!![],'where':_0x2f0db7[_0xb1b0('0x16')]?_0x2f0db7[_0xb1b0('0x16')]['where']||null:null,'attributes':_0x2f0db7['options']?_0x2f0db7['options'][_0xb1b0('0x18')]||null:null,'include':_0x2f0db7['options']?_0x2f0db7[_0xb1b0('0x16')][_0xb1b0('0x19')]?_[_0xb1b0('0x1a')](_0x2f0db7[_0xb1b0('0x16')][_0xb1b0('0x19')],function(_0x201829){return{'model':db[_0x201829[_0xb1b0('0x1b')]],'as':_0x201829['as'],'attributes':_0x201829[_0xb1b0('0x18')],'include':_0x201829[_0xb1b0('0x19')]?_[_0xb1b0('0x1a')](_0x201829[_0xb1b0('0x19')],function(_0x2d5c3c){return{'model':db[_0x2d5c3c['model']],'as':_0x2d5c3c['as'],'attributes':_0x2d5c3c[_0xb1b0('0x18')],'include':_0x2d5c3c['include']?_['map'](_0x2d5c3c['include'],function(_0x566046){return{'model':db[_0x566046['model']],'as':_0x566046['as'],'attributes':_0x566046[_0xb1b0('0x18')]};}):[]};}):[]};}):[]:[]})[_0xb1b0('0xc')](function(_0x35f81b){logger[_0xb1b0('0xd')](_0xb1b0('0x14'),_0x2f0db7);logger[_0xb1b0('0x1c')]('ShowSetting',_0x2f0db7,JSON[_0xb1b0('0x10')](_0x35f81b));_0x29409d(_0x35f81b);})[_0xb1b0('0x1d')](function(_0x46e70e){logger[_0xb1b0('0x11')](_0xb1b0('0x14'),_0x46e70e[_0xb1b0('0x12')],_0x2f0db7);_0x590e3e(_0x358fb0[_0xb1b0('0x11')](0x1f4,_0x46e70e[_0xb1b0('0x12')]));});});};
\ No newline at end of file
+var _0xbc64=['error','code','message','Setting,\x20%s,\x20%s','catch','ShowSetting','Setting','find','options','raw','where','attributes','include','map','model','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','request','then','info','request\x20sent','debug','Setting,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x2a8c5d,_0x54d78e){var _0x48360c=function(_0x3f4b28){while(--_0x3f4b28){_0x2a8c5d['push'](_0x2a8c5d['shift']());}};_0x48360c(++_0x54d78e);}(_0xbc64,0x6f));var _0x4bc6=function(_0x74dd87,_0x2e91b0){_0x74dd87=_0x74dd87-0x0;var _0x36f969=_0xbc64[_0x74dd87];return _0x36f969;};'use strict';var _=require('lodash');var util=require(_0x4bc6('0x0'));var moment=require(_0x4bc6('0x1'));var BPromise=require('bluebird');var rs=require(_0x4bc6('0x2'));var fs=require('fs');var Redis=require(_0x4bc6('0x3'));var db=require(_0x4bc6('0x4'))['db'];var utils=require(_0x4bc6('0x5'));var logger=require(_0x4bc6('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0x4bc6('0x7'));var client=jayson[_0x4bc6('0x8')][_0x4bc6('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4d78c5,_0x33b6e7,_0xd17fdd){return new BPromise(function(_0x5273d2,_0x354272){return client[_0x4bc6('0xa')](_0x4d78c5,_0xd17fdd)[_0x4bc6('0xb')](function(_0x2179b6){logger[_0x4bc6('0xc')]('Setting,\x20%s,\x20%s',_0x33b6e7,_0x4bc6('0xd'));logger[_0x4bc6('0xe')](_0x4bc6('0xf'),_0x33b6e7,_0x4bc6('0xd'),JSON[_0x4bc6('0x10')](_0x2179b6));if(_0x2179b6[_0x4bc6('0x11')]){if(_0x2179b6[_0x4bc6('0x11')][_0x4bc6('0x12')]===0x1f4){logger[_0x4bc6('0x11')]('Setting,\x20%s,\x20%s',_0x33b6e7,_0x2179b6[_0x4bc6('0x11')][_0x4bc6('0x13')]);return _0x354272(_0x2179b6[_0x4bc6('0x11')][_0x4bc6('0x13')]);}logger[_0x4bc6('0x11')](_0x4bc6('0x14'),_0x33b6e7,_0x2179b6[_0x4bc6('0x11')]['message']);return _0x5273d2(_0x2179b6[_0x4bc6('0x11')][_0x4bc6('0x13')]);}else{logger['info'](_0x4bc6('0x14'),_0x33b6e7,_0x4bc6('0xd'));_0x5273d2(_0x2179b6['result'][_0x4bc6('0x13')]);}})[_0x4bc6('0x15')](function(_0x1d6d24){logger[_0x4bc6('0x11')](_0x4bc6('0x14'),_0x33b6e7,_0x1d6d24);_0x354272(_0x1d6d24);});});}exports[_0x4bc6('0x16')]=function(_0x5c3a08){var _0x44d423=this;return new Promise(function(_0x563959,_0xc1afe0){return db[_0x4bc6('0x17')][_0x4bc6('0x18')]({'raw':_0x5c3a08[_0x4bc6('0x19')]?_0x5c3a08[_0x4bc6('0x19')][_0x4bc6('0x1a')]===undefined?!![]:![]:!![],'where':_0x5c3a08[_0x4bc6('0x19')]?_0x5c3a08['options'][_0x4bc6('0x1b')]||null:null,'attributes':_0x5c3a08['options']?_0x5c3a08[_0x4bc6('0x19')][_0x4bc6('0x1c')]||null:null,'include':_0x5c3a08['options']?_0x5c3a08[_0x4bc6('0x19')][_0x4bc6('0x1d')]?_[_0x4bc6('0x1e')](_0x5c3a08[_0x4bc6('0x19')][_0x4bc6('0x1d')],function(_0x3b6576){return{'model':db[_0x3b6576[_0x4bc6('0x1f')]],'as':_0x3b6576['as'],'attributes':_0x3b6576[_0x4bc6('0x1c')],'include':_0x3b6576[_0x4bc6('0x1d')]?_['map'](_0x3b6576[_0x4bc6('0x1d')],function(_0x353a66){return{'model':db[_0x353a66[_0x4bc6('0x1f')]],'as':_0x353a66['as'],'attributes':_0x353a66['attributes'],'include':_0x353a66[_0x4bc6('0x1d')]?_[_0x4bc6('0x1e')](_0x353a66[_0x4bc6('0x1d')],function(_0x3dd4ad){return{'model':db[_0x3dd4ad['model']],'as':_0x3dd4ad['as'],'attributes':_0x3dd4ad[_0x4bc6('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x4bc6('0xb')](function(_0x142c6c){logger[_0x4bc6('0xc')](_0x4bc6('0x16'),_0x5c3a08);logger[_0x4bc6('0xe')](_0x4bc6('0x16'),_0x5c3a08,JSON[_0x4bc6('0x10')](_0x142c6c));_0x563959(_0x142c6c);})[_0x4bc6('0x15')](function(_0x487270){logger['error'](_0x4bc6('0x16'),_0x487270[_0x4bc6('0x13')],_0x5c3a08);_0xc1afe0(_0x44d423[_0x4bc6('0x11')](0x1f4,_0x487270[_0x4bc6('0x13')]));});});};
\ No newline at end of file
index c28c775..e72dc11 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fab=['create','post','/:id/dispositions','addAnswer','/:id/notify','notify','addApplications','status','addAgents','put','update','delete','removeDispositions','removeAnswers','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsAccount.controller','get','isAuthenticated','/describe','describe','/:id','show','getDispositions','/:id/canned_answers','getAnswers','/:id/applications','/:id/interactions','getInteractions','/:id/status','statusGet','/:id/users'];(function(_0x262417,_0x9b9f85){var _0x4404f7=function(_0x13354f){while(--_0x13354f){_0x262417['push'](_0x262417['shift']());}};_0x4404f7(++_0x9b9f85);}(_0x5fab,0x177));var _0xb5fa=function(_0x4ac48d,_0x171a68){_0x4ac48d=_0x4ac48d-0x0;var _0x7537af=_0x5fab[_0x4ac48d];return _0x7537af;};'use strict';var multer=require(_0xb5fa('0x0'));var util=require(_0xb5fa('0x1'));var path=require('path');var timeout=require(_0xb5fa('0x2'));var express=require(_0xb5fa('0x3'));var router=express[_0xb5fa('0x4')]();var fs_extra=require(_0xb5fa('0x5'));var auth=require(_0xb5fa('0x6'));var interaction=require(_0xb5fa('0x7'));var config=require(_0xb5fa('0x8'));var controller=require(_0xb5fa('0x9'));router[_0xb5fa('0xa')]('/',auth[_0xb5fa('0xb')](),controller['index']);router['get'](_0xb5fa('0xc'),auth[_0xb5fa('0xb')](),controller[_0xb5fa('0xd')]);router['get'](_0xb5fa('0xe'),auth[_0xb5fa('0xb')](),controller[_0xb5fa('0xf')]);router['get']('/:id/dispositions',auth[_0xb5fa('0xb')](),controller[_0xb5fa('0x10')]);router[_0xb5fa('0xa')](_0xb5fa('0x11'),auth[_0xb5fa('0xb')](),controller[_0xb5fa('0x12')]);router[_0xb5fa('0xa')](_0xb5fa('0x13'),auth[_0xb5fa('0xb')](),controller['getApplications']);router[_0xb5fa('0xa')](_0xb5fa('0x14'),auth['isAuthenticated'](),controller[_0xb5fa('0x15')]);router['get'](_0xb5fa('0x16'),controller[_0xb5fa('0x17')]);router[_0xb5fa('0xa')](_0xb5fa('0x18'),auth[_0xb5fa('0xb')](),controller['getAgents']);router['post']('/',auth[_0xb5fa('0xb')](),controller[_0xb5fa('0x19')]);router[_0xb5fa('0x1a')](_0xb5fa('0x1b'),auth['isAuthenticated'](),controller['addDisposition']);router[_0xb5fa('0x1a')](_0xb5fa('0x11'),auth[_0xb5fa('0xb')](),controller[_0xb5fa('0x1c')]);router[_0xb5fa('0x1a')](_0xb5fa('0x1d'),controller[_0xb5fa('0x1e')]);router[_0xb5fa('0x1a')](_0xb5fa('0x13'),auth[_0xb5fa('0xb')](),controller[_0xb5fa('0x1f')]);router[_0xb5fa('0x1a')]('/:id/send',auth[_0xb5fa('0xb')](),controller['send']);router[_0xb5fa('0x1a')]('/:id/status',controller[_0xb5fa('0x20')]);router[_0xb5fa('0x1a')]('/:id/users',auth[_0xb5fa('0xb')](),controller[_0xb5fa('0x21')]);router[_0xb5fa('0x22')]('/:id',auth[_0xb5fa('0xb')](),controller[_0xb5fa('0x23')]);router[_0xb5fa('0x24')]('/:id',auth[_0xb5fa('0xb')](),controller['destroy']);router[_0xb5fa('0x24')](_0xb5fa('0x1b'),auth[_0xb5fa('0xb')](),controller[_0xb5fa('0x25')]);router[_0xb5fa('0x24')](_0xb5fa('0x11'),auth[_0xb5fa('0xb')](),controller[_0xb5fa('0x26')]);router['delete']('/:id/users',auth['isAuthenticated'](),controller['removeAgents']);module[_0xb5fa('0x27')]=router;
\ No newline at end of file
+var _0x7217=['/:id/send','status','put','update','delete','removeDispositions','removeAnswers','multer','path','connect-timeout','express','Router','fs-extra','../../config/environment','./smsAccount.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/applications','/:id/interactions','getInteractions','/:id/status','statusGet','/:id/users','create','post','/:id/notify','notify','addApplications'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0x7217,0x19e));var _0x7721=function(_0x4bfac3,_0x58324d){_0x4bfac3=_0x4bfac3-0x0;var _0x15f0f2=_0x7217[_0x4bfac3];return _0x15f0f2;};'use strict';var multer=require(_0x7721('0x0'));var util=require('util');var path=require(_0x7721('0x1'));var timeout=require(_0x7721('0x2'));var express=require(_0x7721('0x3'));var router=express[_0x7721('0x4')]();var fs_extra=require(_0x7721('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x7721('0x6'));var controller=require(_0x7721('0x7'));router[_0x7721('0x8')]('/',auth[_0x7721('0x9')](),controller[_0x7721('0xa')]);router[_0x7721('0x8')](_0x7721('0xb'),auth[_0x7721('0x9')](),controller[_0x7721('0xc')]);router[_0x7721('0x8')](_0x7721('0xd'),auth[_0x7721('0x9')](),controller[_0x7721('0xe')]);router[_0x7721('0x8')](_0x7721('0xf'),auth['isAuthenticated'](),controller[_0x7721('0x10')]);router[_0x7721('0x8')](_0x7721('0x11'),auth[_0x7721('0x9')](),controller[_0x7721('0x12')]);router[_0x7721('0x8')](_0x7721('0x13'),auth[_0x7721('0x9')](),controller['getApplications']);router[_0x7721('0x8')](_0x7721('0x14'),auth['isAuthenticated'](),controller[_0x7721('0x15')]);router[_0x7721('0x8')](_0x7721('0x16'),controller[_0x7721('0x17')]);router['get'](_0x7721('0x18'),auth[_0x7721('0x9')](),controller['getAgents']);router['post']('/',auth['isAuthenticated'](),controller[_0x7721('0x19')]);router[_0x7721('0x1a')](_0x7721('0xf'),auth[_0x7721('0x9')](),controller['addDisposition']);router[_0x7721('0x1a')]('/:id/canned_answers',auth[_0x7721('0x9')](),controller['addAnswer']);router[_0x7721('0x1a')](_0x7721('0x1b'),controller[_0x7721('0x1c')]);router[_0x7721('0x1a')](_0x7721('0x13'),auth[_0x7721('0x9')](),controller[_0x7721('0x1d')]);router[_0x7721('0x1a')](_0x7721('0x1e'),auth[_0x7721('0x9')](),controller['send']);router[_0x7721('0x1a')](_0x7721('0x16'),controller[_0x7721('0x1f')]);router[_0x7721('0x1a')]('/:id/users',auth[_0x7721('0x9')](),controller['addAgents']);router[_0x7721('0x20')](_0x7721('0xd'),auth[_0x7721('0x9')](),controller[_0x7721('0x21')]);router[_0x7721('0x22')](_0x7721('0xd'),auth[_0x7721('0x9')](),controller['destroy']);router[_0x7721('0x22')](_0x7721('0xf'),auth[_0x7721('0x9')](),controller[_0x7721('0x23')]);router[_0x7721('0x22')](_0x7721('0x11'),auth[_0x7721('0x9')](),controller[_0x7721('0x24')]);router[_0x7721('0x22')]('/:id/users',auth[_0x7721('0x9')](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
index e6c68cc..235f361 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab55=['setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','STRING','name','ENUM','twilio','skebby','plivo','clickatell','bandwidth','csc','infobip','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'];(function(_0x57643b,_0x1706fe){var _0x53a35b=function(_0x2625e8){while(--_0x2625e8){_0x57643b['push'](_0x57643b['shift']());}};_0x53a35b(++_0x1706fe);}(_0xab55,0x192));var _0x5ab5=function(_0x1d0860,_0x555637){_0x1d0860=_0x1d0860-0x0;var _0x543edf=_0xab55[_0x1d0860];return _0x543edf;};'use strict';var Sequelize=require(_0x5ab5('0x0'));var rs=require('randomstring');module['exports']={'name':{'type':Sequelize[_0x5ab5('0x1')],'unique':_0x5ab5('0x2'),'allowNull':![]},'key':{'type':Sequelize[_0x5ab5('0x1')],'allowNull':![]},'remote':{'type':Sequelize[_0x5ab5('0x1')],'allowNull':![]},'token':{'type':Sequelize[_0x5ab5('0x1')],'defaultValue':function(){return rs['generate']();}},'phone':{'type':Sequelize[_0x5ab5('0x1')]},'type':{'type':Sequelize[_0x5ab5('0x3')](_0x5ab5('0x4'),_0x5ab5('0x5'),'connectel','clicksend',_0x5ab5('0x6'),_0x5ab5('0x7'),_0x5ab5('0x8'),_0x5ab5('0x9'),_0x5ab5('0xa'),_0x5ab5('0xb'))},'accountSid':{'type':Sequelize[_0x5ab5('0x1')]},'authId':{'type':Sequelize[_0x5ab5('0x1')]},'authToken':{'type':Sequelize[_0x5ab5('0x1')]},'smsMethod':{'type':Sequelize['ENUM']('SI','TI','GP')},'username':{'type':Sequelize['STRING']},'password':{'type':Sequelize[_0x5ab5('0x1')]},'apiKey':{'type':Sequelize[_0x5ab5('0x1')]},'applicationId':{'type':Sequelize['STRING']},'accountId':{'type':Sequelize[_0x5ab5('0x1')]},'senderString':{'type':Sequelize[_0x5ab5('0x1')]},'deliveryReport':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'description':{'type':Sequelize[_0x5ab5('0x1')]},'notificationTemplate':{'type':Sequelize[_0x5ab5('0xc')],'defaultValue':function(){return _0x5ab5('0xd');}},'notificationSound':{'type':Sequelize[_0x5ab5('0xe')],'defaultValue':!![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x5ab5('0xf')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x5ab5('0xe')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x5ab5('0xf')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x5ab5('0xe')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x5ab5('0xf')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize[_0x5ab5('0x1')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0x5ab5('0xf')],'comment':_0x5ab5('0x10')},'mandatoryDisposition':{'type':Sequelize[_0x5ab5('0xe')],'defaultValue':![],'comment':_0x5ab5('0x11'),'set':function(_0x394c9c){if(!_0x394c9c)this[_0x5ab5('0x12')](_0x5ab5('0x13'),null);this[_0x5ab5('0x12')](_0x5ab5('0x14'),_0x394c9c);}}};
\ No newline at end of file
+var _0x4dc0=['randomstring','STRING','generate','twilio','skebby','connectel','clicksend','plivo','clickatell','bandwidth','csc','infobip','intelepeer','BOOLEAN','TEXT','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize'];(function(_0x557c15,_0xeef503){var _0x465d62=function(_0x148592){while(--_0x148592){_0x557c15['push'](_0x557c15['shift']());}};_0x465d62(++_0xeef503);}(_0x4dc0,0xdb));var _0x04dc=function(_0x47b58b,_0x41a189){_0x47b58b=_0x47b58b-0x0;var _0x46bebe=_0x4dc0[_0x47b58b];return _0x46bebe;};'use strict';var Sequelize=require(_0x04dc('0x0'));var rs=require(_0x04dc('0x1'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':'name','allowNull':![]},'key':{'type':Sequelize[_0x04dc('0x2')],'allowNull':![]},'remote':{'type':Sequelize[_0x04dc('0x2')],'allowNull':![]},'token':{'type':Sequelize[_0x04dc('0x2')],'defaultValue':function(){return rs[_0x04dc('0x3')]();}},'phone':{'type':Sequelize['STRING']},'type':{'type':Sequelize['ENUM'](_0x04dc('0x4'),_0x04dc('0x5'),_0x04dc('0x6'),_0x04dc('0x7'),_0x04dc('0x8'),_0x04dc('0x9'),_0x04dc('0xa'),_0x04dc('0xb'),_0x04dc('0xc'),_0x04dc('0xd'))},'accountSid':{'type':Sequelize['STRING']},'authId':{'type':Sequelize[_0x04dc('0x2')]},'authToken':{'type':Sequelize[_0x04dc('0x2')]},'smsMethod':{'type':Sequelize['ENUM']('SI','TI','GP')},'username':{'type':Sequelize['STRING']},'password':{'type':Sequelize[_0x04dc('0x2')]},'apiKey':{'type':Sequelize[_0x04dc('0x2')]},'applicationId':{'type':Sequelize[_0x04dc('0x2')]},'accountId':{'type':Sequelize[_0x04dc('0x2')]},'senderString':{'type':Sequelize['STRING']},'deliveryReport':{'type':Sequelize[_0x04dc('0xe')],'defaultValue':![]},'description':{'type':Sequelize[_0x04dc('0x2')]},'notificationTemplate':{'type':Sequelize[_0x04dc('0xf')],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}';}},'notificationSound':{'type':Sequelize[_0x04dc('0xe')],'defaultValue':!![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x04dc('0x10')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x04dc('0x10')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x04dc('0xe')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x04dc('0x10')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize[_0x04dc('0x2')]},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'comment':_0x04dc('0x11')},'mandatoryDisposition':{'type':Sequelize[_0x04dc('0xe')],'defaultValue':![],'comment':_0x04dc('0x12'),'set':function(_0x1f26c8){if(!_0x1f26c8)this[_0x04dc('0x13')](_0x04dc('0x14'),null);this['setDataValue'](_0x04dc('0x15'),_0x1f26c8);}}};
\ No newline at end of file
index 56c2360..f7029a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb943=['set','apply','reject','save','update','get','SmsAccounts','UserProfileResource','destroy','sendStatus','stack','name','send','index','Pause','mandatoryDispositionPause','SmsAccount','fieldName','type','key','map','query','keys','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','VIRTUAL','merge','options','count','includeAll','findAll','rows','catch','show','params','include','find','create','body','user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','SmsAccountId','Disposition','getDispositions','findOne','pick','removeDispositions','addAnswer','CannedAnswer','getAnswers','rawAttributes','removeAnswers','ids','notify','sms','SmsApplication','Applications','account','orderBy','priority','asc','Sequelize','ValidationError','difference','createdAt','CompanyId','mobile','Body','MessageSid','skebby','from','text','messageId','message_id','plivo','From','Text','MessageUUID','infobip','results','segmentedMessage','clickatell','intelepeer','refid','isNil','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey','CmList','ListId','CmContact','updatedAt','DESC','list','omit','Contacts','SmsInteraction','interaction','created','autoclose','push','close','SmsMessage','ContactId','UserId','User','unshift','waitForTheAssignedAgent','*,*,*,*','startRouting','Start','receiveMessage','SmsAccount,\x20%s,\x20%s,\x20%s','entity\x20found','twilio','Content-Type','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','addApplications','transaction','sequelize','Transaction','READ_COMMITTED','findAndCountAll','getApplications','getInteractions','Contact','Owner','fullname','internal','Tag','tag','List','out','spread','dataValues','Messages','inspect','skebby_dispatch_id','connectel','statusInt','requestid','status_code','groupName','DELIVERED','bandwidth','redif','clicksend','error_code','DELIVERED_TO_GATEWAY','RECEIVED_BY_RECIPIENT','message-delivered','DELIVRD','ACCEPTD','statusGet','csc','message-id','state','addAgents','userSmsAccount:save','removeAgents','isArray','emit','userSmsAccount:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./smsAccount.socket','register','jayson/promise','client','http','request','then','info','SmsAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','status','end','json','offset','undefined','limit'];(function(_0x513441,_0x20bfba){var _0x5a49c8=function(_0x2cc7d9){while(--_0x2cc7d9){_0x513441['push'](_0x513441['shift']());}};_0x5a49c8(++_0x20bfba);}(_0xb943,0x19e));var _0x3b94=function(_0x1412f8,_0x5a4782){_0x1412f8=_0x1412f8-0x0;var _0x5b0803=_0xb943[_0x1412f8];return _0x5b0803;};'use strict';var emlformat=require(_0x3b94('0x0'));var rimraf=require(_0x3b94('0x1'));var zipdir=require(_0x3b94('0x2'));var jsonpatch=require(_0x3b94('0x3'));var rp=require('request-promise');var moment=require(_0x3b94('0x4'));var BPromise=require(_0x3b94('0x5'));var Mustache=require(_0x3b94('0x6'));var util=require(_0x3b94('0x7'));var path=require('path');var sox=require(_0x3b94('0x8'));var csv=require(_0x3b94('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3b94('0xa'));var squel=require(_0x3b94('0xb'));var crypto=require('crypto');var jsforce=require(_0x3b94('0xc'));var deskjs=require(_0x3b94('0xd'));var toCsv=require(_0x3b94('0x9'));var querystring=require(_0x3b94('0xe'));var Papa=require(_0x3b94('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x3b94('0x10'));var as=require(_0x3b94('0x11'));var hardwareService=require(_0x3b94('0x12'));var logger=require(_0x3b94('0x13'))(_0x3b94('0x14'));var utils=require(_0x3b94('0x15'));var config=require(_0x3b94('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x3b94('0x17'))['db'];config[_0x3b94('0x18')]=_[_0x3b94('0x19')](config[_0x3b94('0x18')],{'host':_0x3b94('0x1a'),'port':0x18eb});var socket=require(_0x3b94('0x1b'))(new Redis(config[_0x3b94('0x18')]));require(_0x3b94('0x1c'))[_0x3b94('0x1d')](socket);var jayson=require(_0x3b94('0x1e'));var client=jayson[_0x3b94('0x1f')][_0x3b94('0x20')]({'port':0x232c});function respondWithRpcPromise(_0x51cad8,_0x4d35ce,_0x76a2c5,_0x178a6a){return new BPromise(function(_0x28afea,_0x49fd62){var _0x1e18bf=_0x178a6a||client;return _0x1e18bf[_0x3b94('0x21')](_0x51cad8,_0x76a2c5)[_0x3b94('0x22')](function(_0x4ba995){logger[_0x3b94('0x23')](_0x3b94('0x24'),_0x4d35ce,_0x3b94('0x25'));logger[_0x3b94('0x26')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x4d35ce,_0x3b94('0x25'),JSON[_0x3b94('0x27')](_0x4ba995));if(_0x4ba995[_0x3b94('0x28')]){if(_0x4ba995[_0x3b94('0x28')][_0x3b94('0x29')]===0x1f4){logger['error']('SmsAccount,\x20%s,\x20%s',_0x4d35ce,_0x4ba995[_0x3b94('0x28')][_0x3b94('0x2a')]);return _0x49fd62(_0x4ba995[_0x3b94('0x28')][_0x3b94('0x2a')]);}logger[_0x3b94('0x28')](_0x3b94('0x24'),_0x4d35ce,_0x4ba995[_0x3b94('0x28')][_0x3b94('0x2a')]);return _0x28afea(_0x4ba995[_0x3b94('0x28')][_0x3b94('0x2a')]);}else{logger[_0x3b94('0x23')](_0x3b94('0x24'),_0x4d35ce,_0x3b94('0x25'));_0x28afea(_0x4ba995[_0x3b94('0x2b')][_0x3b94('0x2a')]);}})['catch'](function(_0x327d32){logger[_0x3b94('0x28')](_0x3b94('0x24'),_0x4d35ce,_0x327d32);_0x49fd62(_0x327d32);});});}function respondWithStatusCode(_0x378337,_0x73bd91){_0x73bd91=_0x73bd91||0xcc;return function(_0x119932){if(_0x119932){return _0x378337['sendStatus'](_0x73bd91);}return _0x378337[_0x3b94('0x2c')](_0x73bd91)[_0x3b94('0x2d')]();};}function respondWithResult(_0x145d88,_0x4a5cb4){_0x4a5cb4=_0x4a5cb4||0xc8;return function(_0x353b9b){if(_0x353b9b){return _0x145d88[_0x3b94('0x2c')](_0x4a5cb4)[_0x3b94('0x2e')](_0x353b9b);}};}function respondWithFilteredResult(_0x10f3b0,_0x4bc253){return function(_0x366982){if(_0x366982){var _0xb9ddbd=typeof _0x4bc253[_0x3b94('0x2f')]===_0x3b94('0x30')&&typeof _0x4bc253[_0x3b94('0x31')]===_0x3b94('0x30');var _0x55716d=_0x366982['count'];var _0x20b6d9=_0xb9ddbd?0x0:_0x4bc253[_0x3b94('0x2f')];var _0x48fa4a=_0xb9ddbd?_0x366982['count']:_0x4bc253[_0x3b94('0x2f')]+_0x4bc253['limit'];var _0x46f78e;if(_0x48fa4a>=_0x55716d){_0x48fa4a=_0x55716d;_0x46f78e=0xc8;}else{_0x46f78e=0xce;}_0x10f3b0[_0x3b94('0x2c')](_0x46f78e);return _0x10f3b0[_0x3b94('0x32')]('Content-Range',_0x20b6d9+'-'+_0x48fa4a+'/'+_0x55716d)[_0x3b94('0x2e')](_0x366982);}return null;};}function patchUpdates(_0x72eaa4){return function(_0xcd56a4){try{jsonpatch[_0x3b94('0x33')](_0xcd56a4,_0x72eaa4,!![]);}catch(_0x384252){return BPromise[_0x3b94('0x34')](_0x384252);}return _0xcd56a4[_0x3b94('0x35')]();};}function saveUpdates(_0x1bc405,_0x23237a){return function(_0x5ea45b){if(_0x5ea45b){return _0x5ea45b[_0x3b94('0x36')](_0x1bc405)[_0x3b94('0x22')](function(_0x3c5563){return _0x3c5563;});}return null;};}function removeEntity(_0x4e157d,_0x79fa46){return function(_0x5383df){if(_0x5383df){return _0x5383df['destroy']()[_0x3b94('0x22')](function(){var _0x1451d5=_0x5383df[_0x3b94('0x37')]({'plain':!![]});var _0x24443e=_0x3b94('0x38');return db[_0x3b94('0x39')][_0x3b94('0x3a')]({'where':{'type':_0x24443e,'resourceId':_0x1451d5['id']}})['then'](function(){return _0x5383df;});})[_0x3b94('0x22')](function(){_0x4e157d['status'](0xcc)[_0x3b94('0x2d')]();});}};}function handleEntityNotFound(_0x408909,_0x5ad8ee){return function(_0x2bd717){if(!_0x2bd717){_0x408909[_0x3b94('0x3b')](0x194);}return _0x2bd717;};}function handleError(_0x13dc5c,_0x487ec5){_0x487ec5=_0x487ec5||0x1f4;return function(_0x41febd){logger[_0x3b94('0x28')](_0x41febd[_0x3b94('0x3c')]);if(_0x41febd[_0x3b94('0x3d')]){delete _0x41febd[_0x3b94('0x3d')];}_0x13dc5c[_0x3b94('0x2c')](_0x487ec5)[_0x3b94('0x3e')](_0x41febd);};}exports[_0x3b94('0x3f')]=function(_0x39a649,_0x49bc06){var _0x4a3645={'include':[{'model':db[_0x3b94('0x40')],'as':_0x3b94('0x41')}]},_0x5df20b={},_0x1851d8={'count':0x0,'rows':[]};var _0x2dd330=_['map'](db[_0x3b94('0x42')]['rawAttributes'],function(_0x1b892e){return{'name':_0x1b892e[_0x3b94('0x43')],'type':_0x1b892e[_0x3b94('0x44')][_0x3b94('0x45')]};});_0x5df20b['model']=_[_0x3b94('0x46')](_0x2dd330,_0x3b94('0x3d'));_0x5df20b[_0x3b94('0x47')]=_[_0x3b94('0x48')](_0x39a649[_0x3b94('0x47')]);_0x5df20b[_0x3b94('0x49')]=_[_0x3b94('0x4a')](_0x5df20b['model'],_0x5df20b['query']);_0x4a3645[_0x3b94('0x4b')]=_[_0x3b94('0x4a')](_0x5df20b[_0x3b94('0x4c')],qs[_0x3b94('0x4d')](_0x39a649[_0x3b94('0x47')]['fields']));_0x4a3645[_0x3b94('0x4b')]=_0x4a3645[_0x3b94('0x4b')][_0x3b94('0x4e')]?_0x4a3645[_0x3b94('0x4b')]:_0x5df20b['model'];if(!_0x39a649[_0x3b94('0x47')][_0x3b94('0x4f')](_0x3b94('0x50'))){_0x4a3645[_0x3b94('0x31')]=qs[_0x3b94('0x31')](_0x39a649[_0x3b94('0x47')][_0x3b94('0x31')]);_0x4a3645[_0x3b94('0x2f')]=qs['offset'](_0x39a649['query'][_0x3b94('0x2f')]);}_0x4a3645[_0x3b94('0x51')]=qs[_0x3b94('0x52')](_0x39a649[_0x3b94('0x47')]['sort']);_0x4a3645[_0x3b94('0x53')]=qs[_0x3b94('0x49')](_['pick'](_0x39a649[_0x3b94('0x47')],_0x5df20b[_0x3b94('0x49')]),_0x2dd330);if(_0x39a649[_0x3b94('0x47')][_0x3b94('0x54')]){_0x4a3645[_0x3b94('0x53')]=_['merge'](_0x4a3645[_0x3b94('0x53')],{'$or':_[_0x3b94('0x46')](_0x2dd330,function(_0x42134f){if(_0x42134f[_0x3b94('0x44')]!==_0x3b94('0x55')){var _0x414d38={};_0x414d38[_0x42134f[_0x3b94('0x3d')]]={'$like':'%'+_0x39a649['query'][_0x3b94('0x54')]+'%'};return _0x414d38;}})});}_0x4a3645=_[_0x3b94('0x56')]({},_0x4a3645,_0x39a649[_0x3b94('0x57')]);var _0x374ed4={'where':_0x4a3645['where']};return db['SmsAccount'][_0x3b94('0x58')](_0x374ed4)[_0x3b94('0x22')](function(_0x7edb73){_0x1851d8[_0x3b94('0x58')]=_0x7edb73;if(_0x39a649['query'][_0x3b94('0x59')]){_0x4a3645['include']=[{'all':!![]}];}return db[_0x3b94('0x42')][_0x3b94('0x5a')](_0x4a3645);})[_0x3b94('0x22')](function(_0xc0b1ce){_0x1851d8[_0x3b94('0x5b')]=_0xc0b1ce;return _0x1851d8;})[_0x3b94('0x22')](respondWithFilteredResult(_0x49bc06,_0x4a3645))[_0x3b94('0x5c')](handleError(_0x49bc06,null));};exports[_0x3b94('0x5d')]=function(_0x426c9c,_0x54befc){var _0x378182={'raw':![],'where':{'id':_0x426c9c[_0x3b94('0x5e')]['id']},'include':[{'model':db[_0x3b94('0x40')],'as':_0x3b94('0x41')}]},_0x28ec14={};_0x28ec14[_0x3b94('0x4c')]=_[_0x3b94('0x48')](db[_0x3b94('0x42')]['rawAttributes']);_0x28ec14[_0x3b94('0x47')]=_[_0x3b94('0x48')](_0x426c9c['query']);_0x28ec14[_0x3b94('0x49')]=_[_0x3b94('0x4a')](_0x28ec14[_0x3b94('0x4c')],_0x28ec14[_0x3b94('0x47')]);_0x378182[_0x3b94('0x4b')]=_[_0x3b94('0x4a')](_0x28ec14['model'],qs['fields'](_0x426c9c['query']['fields']));_0x378182[_0x3b94('0x4b')]=_0x378182[_0x3b94('0x4b')][_0x3b94('0x4e')]?_0x378182[_0x3b94('0x4b')]:_0x28ec14['model'];if(_0x426c9c[_0x3b94('0x47')][_0x3b94('0x59')]){_0x378182[_0x3b94('0x5f')]=[{'all':!![]}];}_0x378182=_['merge']({},_0x378182,_0x426c9c[_0x3b94('0x57')]);return db[_0x3b94('0x42')][_0x3b94('0x60')](_0x378182)[_0x3b94('0x22')](handleEntityNotFound(_0x54befc,null))['then'](respondWithResult(_0x54befc,null))[_0x3b94('0x5c')](handleError(_0x54befc,null));};exports['create']=function(_0x4d37c9,_0x403db5){return db[_0x3b94('0x42')][_0x3b94('0x61')](_0x4d37c9[_0x3b94('0x62')],{})[_0x3b94('0x22')](function(_0x29a9e9){var _0x143bda=_0x4d37c9[_0x3b94('0x63')][_0x3b94('0x37')]({'plain':!![]});if(!_0x143bda)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x143bda[_0x3b94('0x64')]===_0x3b94('0x63')){var _0x37f2f1=_0x29a9e9['get']({'plain':!![]});var _0x270074='SmsAccounts';return db[_0x3b94('0x65')]['find']({'where':{'name':_0x270074,'userProfileId':_0x143bda[_0x3b94('0x66')]},'raw':!![]})[_0x3b94('0x22')](function(_0x57188f){if(_0x57188f&&_0x57188f[_0x3b94('0x67')]===0x0){return db[_0x3b94('0x39')][_0x3b94('0x61')]({'name':_0x37f2f1['name'],'resourceId':_0x37f2f1['id'],'type':_0x57188f[_0x3b94('0x3d')],'sectionId':_0x57188f['id']},{})[_0x3b94('0x22')](function(){return _0x29a9e9;});}else{return _0x29a9e9;}})[_0x3b94('0x5c')](function(_0x5d9bd6){logger[_0x3b94('0x28')](_0x3b94('0x68'),_0x5d9bd6);throw _0x5d9bd6;});}return _0x29a9e9;})[_0x3b94('0x22')](respondWithResult(_0x403db5,0xc9))[_0x3b94('0x5c')](handleError(_0x403db5,null));};exports[_0x3b94('0x36')]=function(_0x541023,_0x5dce8d){if(_0x541023['body']['id']){delete _0x541023[_0x3b94('0x62')]['id'];}return db['SmsAccount'][_0x3b94('0x60')]({'where':{'id':_0x541023[_0x3b94('0x5e')]['id']},'include':[{'model':db[_0x3b94('0x40')],'as':'mandatoryDispositionPause'}]})[_0x3b94('0x22')](handleEntityNotFound(_0x5dce8d,null))[_0x3b94('0x22')](saveUpdates(_0x541023[_0x3b94('0x62')],null))[_0x3b94('0x22')](respondWithResult(_0x5dce8d,null))[_0x3b94('0x5c')](handleError(_0x5dce8d,null));};exports[_0x3b94('0x3a')]=function(_0x142492,_0x5a810a){return db[_0x3b94('0x42')][_0x3b94('0x60')]({'where':{'id':_0x142492[_0x3b94('0x5e')]['id']}})[_0x3b94('0x22')](handleEntityNotFound(_0x5a810a,null))['then'](removeEntity(_0x5a810a,null))['catch'](handleError(_0x5a810a,null));};exports[_0x3b94('0x69')]=function(_0x2f1845,_0x3c602d){return db[_0x3b94('0x42')][_0x3b94('0x69')]()[_0x3b94('0x22')](respondWithResult(_0x3c602d,null))[_0x3b94('0x5c')](handleError(_0x3c602d,null));};exports[_0x3b94('0x6a')]=function(_0x48b4b8,_0x391c29,_0x5eb183){if(_0x48b4b8[_0x3b94('0x62')]['id']){delete _0x48b4b8[_0x3b94('0x62')]['id'];}return db[_0x3b94('0x42')][_0x3b94('0x60')]({'where':{'id':_0x48b4b8['params']['id']}})[_0x3b94('0x22')](handleEntityNotFound(_0x391c29,null))[_0x3b94('0x22')](function(_0x3b07dc){if(_0x3b07dc){_0x48b4b8['body'][_0x3b94('0x6b')]=_0x3b07dc['id'];return db[_0x3b94('0x6c')][_0x3b94('0x61')](_0x48b4b8['body']);}})['then'](respondWithResult(_0x391c29,null))[_0x3b94('0x5c')](handleError(_0x391c29,null));};exports[_0x3b94('0x6d')]=function(_0x587a3c,_0x426027,_0x4bd153){var _0x44258c={'raw':![],'where':{}};var _0x59261b={};var _0x8dcb04={'count':0x0,'rows':[]};return db[_0x3b94('0x42')][_0x3b94('0x6e')]({'where':{'id':_0x587a3c[_0x3b94('0x5e')]['id']}})[_0x3b94('0x22')](handleEntityNotFound(_0x426027,null))[_0x3b94('0x22')](function(_0x5d7f12){if(_0x5d7f12){_0x59261b[_0x3b94('0x4c')]=_[_0x3b94('0x48')](db[_0x3b94('0x6c')]['rawAttributes']);_0x59261b['query']=_[_0x3b94('0x48')](_0x587a3c[_0x3b94('0x47')]);_0x59261b[_0x3b94('0x49')]=_[_0x3b94('0x4a')](_0x59261b['model'],_0x59261b[_0x3b94('0x47')]);_0x44258c[_0x3b94('0x4b')]=_['intersection'](_0x59261b['model'],qs[_0x3b94('0x4d')](_0x587a3c[_0x3b94('0x47')][_0x3b94('0x4d')]));_0x44258c['attributes']=_0x44258c[_0x3b94('0x4b')][_0x3b94('0x4e')]?_0x44258c['attributes']:_0x59261b[_0x3b94('0x4c')];if(!_0x587a3c[_0x3b94('0x47')][_0x3b94('0x4f')](_0x3b94('0x50'))){_0x44258c[_0x3b94('0x31')]=qs[_0x3b94('0x31')](_0x587a3c[_0x3b94('0x47')][_0x3b94('0x31')]);_0x44258c[_0x3b94('0x2f')]=qs['offset'](_0x587a3c[_0x3b94('0x47')][_0x3b94('0x2f')]);}_0x44258c[_0x3b94('0x51')]=qs[_0x3b94('0x52')](_0x587a3c['query'][_0x3b94('0x52')]);_0x44258c[_0x3b94('0x53')]=qs[_0x3b94('0x49')](_[_0x3b94('0x6f')](_0x587a3c[_0x3b94('0x47')],_0x59261b[_0x3b94('0x49')]));_0x44258c[_0x3b94('0x53')]['SmsAccountId']=_0x5d7f12['id'];if(_0x587a3c[_0x3b94('0x47')]['filter']){_0x44258c[_0x3b94('0x53')]=_['merge'](_0x44258c[_0x3b94('0x53')],{'$or':_[_0x3b94('0x46')](_0x44258c[_0x3b94('0x4b')],function(_0x15b5b7){var _0x13a559={};_0x13a559[_0x15b5b7]={'$like':'%'+_0x587a3c['query'][_0x3b94('0x54')]+'%'};return _0x13a559;})});}_0x44258c=_[_0x3b94('0x56')]({},_0x44258c,_0x587a3c[_0x3b94('0x57')]);return db[_0x3b94('0x6c')][_0x3b94('0x58')]({'where':_0x44258c[_0x3b94('0x53')]})[_0x3b94('0x22')](function(_0xb93bcc){_0x8dcb04[_0x3b94('0x58')]=_0xb93bcc;if(_0x587a3c['query']['includeAll']){_0x44258c[_0x3b94('0x5f')]=[{'all':!![]}];}return db[_0x3b94('0x6c')][_0x3b94('0x5a')](_0x44258c);})['then'](function(_0x4ce41f){_0x8dcb04[_0x3b94('0x5b')]=_0x4ce41f;return _0x8dcb04;});}})[_0x3b94('0x22')](respondWithFilteredResult(_0x426027,_0x44258c))[_0x3b94('0x5c')](handleError(_0x426027,null));};exports[_0x3b94('0x70')]=function(_0x270ca5,_0x397e11,_0x164366){return db['SmsAccount'][_0x3b94('0x60')]({'where':{'id':_0x270ca5[_0x3b94('0x5e')]['id']}})[_0x3b94('0x22')](handleEntityNotFound(_0x397e11,null))['then'](function(_0x16ce5d){if(_0x16ce5d){return _0x16ce5d[_0x3b94('0x70')](_0x270ca5[_0x3b94('0x47')]['ids']);}})[_0x3b94('0x22')](respondWithStatusCode(_0x397e11,null))[_0x3b94('0x5c')](handleError(_0x397e11,null));};exports[_0x3b94('0x71')]=function(_0x4c7700,_0x21f6bd,_0x210940){if(_0x4c7700['body']['id']){delete _0x4c7700[_0x3b94('0x62')]['id'];}return db[_0x3b94('0x42')]['find']({'where':{'id':_0x4c7700['params']['id']}})[_0x3b94('0x22')](handleEntityNotFound(_0x21f6bd,null))[_0x3b94('0x22')](function(_0x1ad904){if(_0x1ad904){_0x4c7700['body']['SmsAccountId']=_0x1ad904['id'];return db[_0x3b94('0x72')][_0x3b94('0x61')](_0x4c7700[_0x3b94('0x62')]);}})[_0x3b94('0x22')](respondWithResult(_0x21f6bd,null))[_0x3b94('0x5c')](handleError(_0x21f6bd,null));};exports[_0x3b94('0x73')]=function(_0x3838b1,_0x59750e,_0x247497){var _0x4567c2={'raw':![],'where':{}};var _0x5a1fe8={};var _0x454e9c={'count':0x0,'rows':[]};return db['SmsAccount'][_0x3b94('0x6e')]({'where':{'id':_0x3838b1[_0x3b94('0x5e')]['id']}})['then'](handleEntityNotFound(_0x59750e,null))[_0x3b94('0x22')](function(_0x387ee1){if(_0x387ee1){_0x5a1fe8[_0x3b94('0x4c')]=_[_0x3b94('0x48')](db['CannedAnswer'][_0x3b94('0x74')]);_0x5a1fe8[_0x3b94('0x47')]=_[_0x3b94('0x48')](_0x3838b1[_0x3b94('0x47')]);_0x5a1fe8[_0x3b94('0x49')]=_['intersection'](_0x5a1fe8[_0x3b94('0x4c')],_0x5a1fe8[_0x3b94('0x47')]);_0x4567c2[_0x3b94('0x4b')]=_[_0x3b94('0x4a')](_0x5a1fe8[_0x3b94('0x4c')],qs['fields'](_0x3838b1[_0x3b94('0x47')][_0x3b94('0x4d')]));_0x4567c2[_0x3b94('0x4b')]=_0x4567c2[_0x3b94('0x4b')][_0x3b94('0x4e')]?_0x4567c2[_0x3b94('0x4b')]:_0x5a1fe8[_0x3b94('0x4c')];if(!_0x3838b1['query']['hasOwnProperty'](_0x3b94('0x50'))){_0x4567c2[_0x3b94('0x31')]=qs[_0x3b94('0x31')](_0x3838b1[_0x3b94('0x47')][_0x3b94('0x31')]);_0x4567c2[_0x3b94('0x2f')]=qs[_0x3b94('0x2f')](_0x3838b1[_0x3b94('0x47')][_0x3b94('0x2f')]);}_0x4567c2[_0x3b94('0x51')]=qs[_0x3b94('0x52')](_0x3838b1[_0x3b94('0x47')][_0x3b94('0x52')]);_0x4567c2[_0x3b94('0x53')]=qs[_0x3b94('0x49')](_[_0x3b94('0x6f')](_0x3838b1[_0x3b94('0x47')],_0x5a1fe8[_0x3b94('0x49')]));_0x4567c2[_0x3b94('0x53')][_0x3b94('0x6b')]=_0x387ee1['id'];if(_0x3838b1['query'][_0x3b94('0x54')]){_0x4567c2[_0x3b94('0x53')]=_[_0x3b94('0x56')](_0x4567c2['where'],{'$or':_[_0x3b94('0x46')](_0x4567c2[_0x3b94('0x4b')],function(_0x47c20f){var _0x35bce4={};_0x35bce4[_0x47c20f]={'$like':'%'+_0x3838b1[_0x3b94('0x47')]['filter']+'%'};return _0x35bce4;})});}_0x4567c2=_[_0x3b94('0x56')]({},_0x4567c2,_0x3838b1[_0x3b94('0x57')]);return db[_0x3b94('0x72')]['count']({'where':_0x4567c2[_0x3b94('0x53')]})[_0x3b94('0x22')](function(_0x3471fb){_0x454e9c[_0x3b94('0x58')]=_0x3471fb;if(_0x3838b1['query']['includeAll']){_0x4567c2[_0x3b94('0x5f')]=[{'all':!![]}];}return db['CannedAnswer'][_0x3b94('0x5a')](_0x4567c2);})[_0x3b94('0x22')](function(_0x2bafa0){_0x454e9c[_0x3b94('0x5b')]=_0x2bafa0;return _0x454e9c;});}})[_0x3b94('0x22')](respondWithFilteredResult(_0x59750e,_0x4567c2))[_0x3b94('0x5c')](handleError(_0x59750e,null));};exports['removeAnswers']=function(_0x23a5e7,_0x4fb9b0,_0x48b810){return db[_0x3b94('0x42')][_0x3b94('0x60')]({'where':{'id':_0x23a5e7[_0x3b94('0x5e')]['id']}})[_0x3b94('0x22')](handleEntityNotFound(_0x4fb9b0,null))[_0x3b94('0x22')](function(_0x581306){if(_0x581306){return _0x581306[_0x3b94('0x75')](_0x23a5e7[_0x3b94('0x47')][_0x3b94('0x76')]);}})[_0x3b94('0x22')](respondWithStatusCode(_0x4fb9b0,null))['catch'](handleError(_0x4fb9b0,null));};exports[_0x3b94('0x77')]=function(_0x34c5d7,_0x437878,_0x37c515){var _0x542e1e={'channel':_0x3b94('0x78')};var _0x2392d3=[];var _0x13abe3=[];var _0x40aa53={};return db[_0x3b94('0x42')][_0x3b94('0x60')]({'where':{'id':_0x34c5d7['params']['id']},'include':[{'model':db[_0x3b94('0x79')],'as':_0x3b94('0x7a')}]})[_0x3b94('0x22')](handleEntityNotFound(_0x437878,null))[_0x3b94('0x22')](function(_0x405aba){_0x542e1e[_0x3b94('0x7b')]=_0x405aba;_0x542e1e['applications']=_[_0x3b94('0x7c')](_0x405aba[_0x3b94('0x7a')],[_0x3b94('0x7d')],[_0x3b94('0x7e')]);if(_0x542e1e['account'][_0x3b94('0x7a')]){delete _0x542e1e['account'][_0x3b94('0x7a')];}return db['CmContact'][_0x3b94('0x69')]();})[_0x3b94('0x22')](function(_0x13c5db){if(!_0x13c5db){throw new db[(_0x3b94('0x7f'))][(_0x3b94('0x80'))]('no\x20available\x20attributes');}_0x2392d3=_[_0x3b94('0x81')](_[_0x3b94('0x48')](_0x13c5db),[_0x3b94('0x82'),'updatedAt']);_0x13abe3=_['difference'](_[_0x3b94('0x48')](_0x13c5db),['createdAt','updatedAt',_0x3b94('0x83'),'ListId']);_0x542e1e[_0x3b94('0x62')]={'mapKey':_0x3b94('0x84')};if(_0x542e1e[_0x3b94('0x7b')]['type']){switch(_0x542e1e[_0x3b94('0x7b')][_0x3b94('0x44')]){case'twilio':_0x542e1e[_0x3b94('0x62')]['from']=_0x34c5d7[_0x3b94('0x62')]['From'];_0x542e1e[_0x3b94('0x62')][_0x3b94('0x62')]=_0x34c5d7[_0x3b94('0x62')][_0x3b94('0x85')];_0x542e1e[_0x3b94('0x62')]['messageId']=_0x34c5d7[_0x3b94('0x62')][_0x3b94('0x86')];break;case _0x3b94('0x87'):_0x542e1e[_0x3b94('0x62')][_0x3b94('0x88')]='+'+_0x34c5d7[_0x3b94('0x62')]['sender'];_0x542e1e[_0x3b94('0x62')]['body']=_0x34c5d7[_0x3b94('0x62')][_0x3b94('0x89')];break;case'connectel':_0x542e1e[_0x3b94('0x62')]['from']=_0x34c5d7['body'][_0x3b94('0x88')];_0x542e1e['body']['body']=_0x34c5d7[_0x3b94('0x62')]['message'];break;case'clicksend':_0x542e1e[_0x3b94('0x62')][_0x3b94('0x88')]=_0x34c5d7['body'][_0x3b94('0x88')];_0x542e1e[_0x3b94('0x62')][_0x3b94('0x62')]=_0x34c5d7[_0x3b94('0x62')][_0x3b94('0x62')];_0x542e1e[_0x3b94('0x62')][_0x3b94('0x8a')]=_0x34c5d7[_0x3b94('0x62')][_0x3b94('0x8b')];break;case _0x3b94('0x8c'):_0x542e1e[_0x3b94('0x62')][_0x3b94('0x88')]=_0x34c5d7['body'][_0x3b94('0x8d')];_0x542e1e['body'][_0x3b94('0x62')]=_0x34c5d7['body'][_0x3b94('0x8e')];_0x542e1e[_0x3b94('0x62')][_0x3b94('0x8a')]=_0x34c5d7[_0x3b94('0x62')][_0x3b94('0x8f')];break;case _0x3b94('0x90'):_0x542e1e['body'][_0x3b94('0x88')]='+'+_0x34c5d7[_0x3b94('0x62')][_0x3b94('0x91')][0x0]['from'];_0x542e1e[_0x3b94('0x62')][_0x3b94('0x62')]=_0x34c5d7[_0x3b94('0x62')][_0x3b94('0x91')][0x0]['text'];_0x542e1e[_0x3b94('0x62')][_0x3b94('0x8a')]=_0x34c5d7[_0x3b94('0x62')][_0x3b94('0x91')][0x0][_0x3b94('0x8a')];break;case'csc':_0x542e1e[_0x3b94('0x62')][_0x3b94('0x88')]=_0x34c5d7['body']['originatingAddress'];_0x542e1e[_0x3b94('0x62')][_0x3b94('0x62')]=_0x34c5d7['body'][_0x3b94('0x92')][_0x3b94('0x2a')];break;case _0x3b94('0x93'):_0x542e1e[_0x3b94('0x62')][_0x3b94('0x88')]=_0x34c5d7[_0x3b94('0x62')]['fromNumber'];_0x542e1e['body']['body']=_0x34c5d7[_0x3b94('0x62')][_0x3b94('0x89')];_0x542e1e[_0x3b94('0x62')][_0x3b94('0x8a')]=_0x34c5d7[_0x3b94('0x62')]['replyMessageId'];break;case'bandwidth':_0x542e1e[_0x3b94('0x62')]['messageId']=_0x34c5d7['body'][0x0][_0x3b94('0x2a')]['id'];_0x542e1e[_0x3b94('0x62')]['from']=_0x34c5d7['body'][0x0][_0x3b94('0x2a')][_0x3b94('0x88')];_0x542e1e[_0x3b94('0x62')]['body']=_0x34c5d7[_0x3b94('0x62')][0x0]['message'][_0x3b94('0x89')];break;case _0x3b94('0x94'):_0x542e1e['body'][_0x3b94('0x88')]=_0x34c5d7['body'][_0x3b94('0x88')];_0x542e1e[_0x3b94('0x62')]['body']=_0x34c5d7[_0x3b94('0x62')]['message'];_0x542e1e[_0x3b94('0x62')][_0x3b94('0x8a')]=_0x34c5d7[_0x3b94('0x62')][_0x3b94('0x95')];break;}}if(_0x542e1e[_0x3b94('0x62')]['id']){delete _0x542e1e['body']['id'];}if(_[_0x3b94('0x96')](_0x542e1e['body']['from'])){throw new db[(_0x3b94('0x7f'))]['ValidationError'](_0x3b94('0x97'));}if(_[_0x3b94('0x96')](_0x542e1e[_0x3b94('0x62')]['body'])||_0x542e1e[_0x3b94('0x62')][_0x3b94('0x62')]===''){throw new db['Sequelize']['ValidationError'](_0x3b94('0x98'));}if(_[_0x3b94('0x96')](_0x542e1e[_0x3b94('0x62')]['mapKey'])){throw new db[(_0x3b94('0x7f'))][(_0x3b94('0x80'))]('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x13abe3);}if(!_[_0x3b94('0x99')](_0x13abe3,_0x542e1e[_0x3b94('0x62')]['mapKey'])){throw new db[(_0x3b94('0x7f'))][(_0x3b94('0x80'))](_0x3b94('0x9a')+_0x13abe3);}_0x40aa53[_0x542e1e[_0x3b94('0x62')][_0x3b94('0x9b')]]=_0x542e1e[_0x3b94('0x62')][_0x3b94('0x88')];return db[_0x3b94('0x9c')]['find']({'where':{'id':_0x542e1e[_0x3b94('0x7b')][_0x3b94('0x9d')]},'include':[{'model':db[_0x3b94('0x9e')],'as':'Contacts','where':_0x40aa53,'limit':0x1,'order':[[_0x3b94('0x9f'),_0x3b94('0xa0')]]}]});})['then'](handleEntityNotFound(_0x437878,null))['then'](function(_0x28f295){if(_0x28f295){_0x542e1e[_0x3b94('0xa1')]=_[_0x3b94('0xa2')](_0x28f295,[_0x3b94('0xa3')]);if(_0x28f295[_0x3b94('0xa3')][_0x3b94('0x4e')]){return _0x28f295['Contacts'][0x0];}var _0x3cd41b=_[_0x3b94('0x19')](_0x542e1e['body'],{'firstName':_0x542e1e['body'][_0x3b94('0x88')],'ListId':_0x28f295['id']});_0x3cd41b[_0x542e1e[_0x3b94('0x62')][_0x3b94('0x9b')]]=_0x542e1e[_0x3b94('0x62')][_0x3b94('0x88')];return db[_0x3b94('0x9e')]['create'](_0x3cd41b,{'fields':_0x2392d3,'raw':!![]});}})[_0x3b94('0x22')](handleEntityNotFound(_0x437878,null))[_0x3b94('0x22')](function(_0x151f03){if(_0x151f03){_0x542e1e['contact']=_0x151f03;var _0x543ae3={'ContactId':_0x151f03['id'],'phone':_0x542e1e['body'][_0x3b94('0x88')],'SmsAccountId':_0x34c5d7['params']['id']};var _0x5bb983={'ContactId':_0x151f03['id'],'SmsAccountId':_0x34c5d7[_0x3b94('0x5e')]['id'],'closed':![]};return db[_0x3b94('0xa4')]['find']({'where':_0x5bb983})[_0x3b94('0x22')](function(_0x5da6cd){if(_0x5da6cd){return[_0x5da6cd,![]];}return db['SmsInteraction'][_0x3b94('0x61')](_0x543ae3)[_0x3b94('0x22')](function(_0xc9713e){return[_0xc9713e,!![]];});});}})['spread'](function(_0x13a575,_0x5a5cbd){_0x542e1e[_0x3b94('0xa5')]=_0x13a575[_0x3b94('0x37')]({'plain':!![]});_0x542e1e[_0x3b94('0xa5')][_0x3b94('0xa6')]=![];if(_0x5a5cbd){if(_0x542e1e['account'][_0x3b94('0xa7')]){_0x542e1e['applications'][_0x3b94('0xa8')]({'id':0x0,'priority':_0x542e1e['applications'][_0x3b94('0x4e')]+0x1,'app':_0x3b94('0xa9'),'appdata':'unmanaged','interval':'*,*,*,*'});}_0x542e1e[_0x3b94('0xa5')]['created']=!![];}return db[_0x3b94('0xaa')][_0x3b94('0x61')]({'phone':_0x542e1e['body'][_0x3b94('0x88')],'messageId':_0x542e1e['body']['messageId'],'body':_0x542e1e[_0x3b94('0x62')]['body'],'SmsAccountId':_0x34c5d7['params']['id'],'SmsInteractionId':_0x13a575['id'],'direction':'in','ContactId':_0x13a575[_0x3b94('0xab')],'AttachmentId':_0x542e1e[_0x3b94('0x62')]['AttachmentId']});})[_0x3b94('0x22')](function(_0x44e8db){_0x542e1e[_0x3b94('0x2a')]=_0x44e8db;if(_0x542e1e['interaction'][_0x3b94('0xac')]){return db[_0x3b94('0xad')][_0x3b94('0x60')]({'attributes':['id','name'],'where':{'id':_0x542e1e['interaction'][_0x3b94('0xac')]}})[_0x3b94('0x22')](function(_0x4539b2){if(_0x4539b2){_0x542e1e['applications'][_0x3b94('0xae')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x4539b2[_0x3b94('0x3d')]+','+(_0x542e1e['account'][_0x3b94('0xaf')]||0xa),'interval':_0x3b94('0xb0')});}return respondWithRpcPromise('Start',_0x3b94('0xb1'),_0x542e1e);});}return respondWithRpcPromise(_0x3b94('0xb2'),_0x3b94('0xb1'),_0x542e1e);})[_0x3b94('0x22')](function(_0x4218aa){if(_0x4218aa){var _0x22d392=0xc8;var _0xc49fa0=_0x3b94('0xb3');logger['info'](_0x3b94('0xb4'),_0xc49fa0,_0x22d392,_0x3b94('0xb5'));logger['debug']('SmsAccount,\x20%s,\x20%s,\x20%s,\x20%s',_0xc49fa0,_0x22d392,_0x3b94('0xb5'),JSON[_0x3b94('0x27')](_0x4218aa));if(_0x542e1e[_0x3b94('0x7b')][_0x3b94('0x44')]===_0x3b94('0xb6')){return _0x437878[_0x3b94('0x2c')](_0x22d392)[_0x3b94('0x32')](_0x3b94('0xb7'),'text/xml')['send'](_0x3b94('0xb8'));}else{return _0x437878[_0x3b94('0x2c')](_0x22d392)[_0x3b94('0x2e')](_0x4218aa);}}})[_0x3b94('0x5c')](handleError(_0x437878,null));};exports[_0x3b94('0xb9')]=function(_0x22c6cd,_0x5ab077){var _0x364e52=_0x22c6cd[_0x3b94('0x5e')]['id'];var _0x4ae6b3=_0x22c6cd['body'];var _0x420d6b=0xc8;var _0x211f48=null;return db['sequelize'][_0x3b94('0xba')]({'isolationLevel':db[_0x3b94('0xbb')][_0x3b94('0xbc')]['ISOLATION_LEVELS'][_0x3b94('0xbd')]},function(_0x2c0a8b){return db[_0x3b94('0x42')][_0x3b94('0x6e')]({'where':{'id':_0x364e52},'transaction':_0x2c0a8b})[_0x3b94('0x22')](function(_0x2bea69){if(_0x2bea69){return db[_0x3b94('0x79')][_0x3b94('0x3a')]({'where':{'SmsAccountId':_0x364e52},'transaction':_0x2c0a8b})[_0x3b94('0x22')](function(){var _0x5aeb1e=_[_0x3b94('0x46')](_0x4ae6b3,function(_0x559138){_0x559138['SmsAccountId']=_0x364e52;return _0x559138;});return db[_0x3b94('0x79')]['bulkCreate'](_0x5aeb1e,{'transaction':_0x2c0a8b});});}else{_0x420d6b=0x194;_0x211f48=[];}});})[_0x3b94('0x22')](function(){if(_0x420d6b!==0x194){return db[_0x3b94('0x79')][_0x3b94('0xbe')]({'where':{'SmsAccountId':_0x364e52},'order':_0x3b94('0x7d')})['then'](function(_0x2d8d66){_0x211f48=_0x2d8d66;});}})[_0x3b94('0x5c')](function(_0x3d3639){_0x420d6b=0x1f4;logger[_0x3b94('0x28')](_0x3d3639[_0x3b94('0x3c')]);if(_0x3d3639[_0x3b94('0x3d')]){delete _0x3d3639[_0x3b94('0x3d')];}_0x211f48=_0x3d3639;})['finally'](function(){if(_0x211f48===null){_0x5ab077['sendStatus'](_0x420d6b);}else{if(_0x420d6b===0x1f4){_0x5ab077[_0x3b94('0x2c')](_0x420d6b)['send'](_0x211f48);}else{_0x5ab077[_0x3b94('0x2c')](_0x420d6b)[_0x3b94('0x2e')](_0x211f48);}}});};exports['getApplications']=function(_0xfbe611,_0x2ae149,_0x549027){var _0x35a56e={};var _0x4d9d94={};var _0x55378c;var _0x3281aa;return db[_0x3b94('0x42')][_0x3b94('0x6e')]({'where':{'id':_0xfbe611[_0x3b94('0x5e')]['id']}})[_0x3b94('0x22')](handleEntityNotFound(_0x2ae149,null))['then'](function(_0x2c8ff6){if(_0x2c8ff6){_0x55378c=_0x2c8ff6;_0x4d9d94[_0x3b94('0x4c')]=_[_0x3b94('0x48')](db[_0x3b94('0x79')][_0x3b94('0x74')]);_0x4d9d94['query']=_[_0x3b94('0x48')](_0xfbe611[_0x3b94('0x47')]);_0x4d9d94[_0x3b94('0x49')]=_[_0x3b94('0x4a')](_0x4d9d94[_0x3b94('0x4c')],_0x4d9d94[_0x3b94('0x47')]);_0x35a56e['attributes']=_[_0x3b94('0x4a')](_0x4d9d94['model'],qs['fields'](_0xfbe611[_0x3b94('0x47')][_0x3b94('0x4d')]));_0x35a56e['attributes']=_0x35a56e[_0x3b94('0x4b')][_0x3b94('0x4e')]?_0x35a56e['attributes']:_0x4d9d94[_0x3b94('0x4c')];_0x35a56e[_0x3b94('0x51')]=qs[_0x3b94('0x52')](_0xfbe611[_0x3b94('0x47')][_0x3b94('0x52')]);_0x35a56e['where']=qs[_0x3b94('0x49')](_[_0x3b94('0x6f')](_0xfbe611[_0x3b94('0x47')],_0x4d9d94[_0x3b94('0x49')]));if(_0xfbe611[_0x3b94('0x47')][_0x3b94('0x54')]){_0x35a56e[_0x3b94('0x53')]=_[_0x3b94('0x56')](_0x35a56e[_0x3b94('0x53')],{'$or':_['map'](_0x35a56e[_0x3b94('0x4b')],function(_0x40a1ed){var _0x1ea955={};_0x1ea955[_0x40a1ed]={'$like':'%'+_0xfbe611['query'][_0x3b94('0x54')]+'%'};return _0x1ea955;})});}_0x35a56e=_[_0x3b94('0x56')]({},_0x35a56e,_0xfbe611['options']);return _0x55378c[_0x3b94('0xbf')](_0x35a56e);}})['then'](function(_0x307aa3){if(_0x307aa3){_0x3281aa=_0x307aa3['length'];if(!_0xfbe611[_0x3b94('0x47')]['hasOwnProperty'](_0x3b94('0x50'))){_0x35a56e['limit']=qs[_0x3b94('0x31')](_0xfbe611['query'][_0x3b94('0x31')]);_0x35a56e['offset']=qs[_0x3b94('0x2f')](_0xfbe611[_0x3b94('0x47')][_0x3b94('0x2f')]);}return _0x55378c[_0x3b94('0xbf')](_0x35a56e);}})['then'](function(_0x819ebb){if(_0x819ebb){return _0x819ebb?{'count':_0x3281aa,'rows':_0x819ebb}:null;}})[_0x3b94('0x22')](respondWithResult(_0x2ae149,null))[_0x3b94('0x5c')](handleError(_0x2ae149,null));};exports[_0x3b94('0xc0')]=function(_0x8e0cbd,_0x22b18e,_0x46204a){var _0x29fafe={'raw':![],'where':{}};var _0x517be2={};var _0x178d65={'count':0x0,'rows':[]};return db[_0x3b94('0x42')]['findOne']({'where':{'id':_0x8e0cbd[_0x3b94('0x5e')]['id']}})[_0x3b94('0x22')](handleEntityNotFound(_0x22b18e,null))['then'](function(_0x53b165){if(_0x53b165){_0x517be2[_0x3b94('0x4c')]=_[_0x3b94('0x48')](db[_0x3b94('0xa4')][_0x3b94('0x74')]);_0x517be2['query']=_[_0x3b94('0x48')](_0x8e0cbd[_0x3b94('0x47')]);_0x517be2[_0x3b94('0x49')]=_['intersection'](_0x517be2[_0x3b94('0x4c')],_0x517be2['query']);_0x29fafe[_0x3b94('0x4b')]=_[_0x3b94('0x4a')](_0x517be2[_0x3b94('0x4c')],qs['fields'](_0x8e0cbd[_0x3b94('0x47')]['fields']));_0x29fafe[_0x3b94('0x4b')]=_0x29fafe['attributes']['length']?_0x29fafe[_0x3b94('0x4b')]:_0x517be2[_0x3b94('0x4c')];if(!_0x8e0cbd['query']['hasOwnProperty'](_0x3b94('0x50'))){_0x29fafe[_0x3b94('0x31')]=qs[_0x3b94('0x31')](_0x8e0cbd[_0x3b94('0x47')][_0x3b94('0x31')]);_0x29fafe[_0x3b94('0x2f')]=qs[_0x3b94('0x2f')](_0x8e0cbd[_0x3b94('0x47')][_0x3b94('0x2f')]);}_0x29fafe[_0x3b94('0x51')]=qs[_0x3b94('0x52')](_0x8e0cbd[_0x3b94('0x47')][_0x3b94('0x52')]);_0x29fafe[_0x3b94('0x53')]=qs['filters'](_[_0x3b94('0x6f')](_0x8e0cbd[_0x3b94('0x47')],_0x517be2['filters']));_0x29fafe[_0x3b94('0x53')][_0x3b94('0x6b')]=_0x53b165['id'];if(_0x8e0cbd[_0x3b94('0x47')][_0x3b94('0x54')]){_0x29fafe[_0x3b94('0x53')]=_[_0x3b94('0x56')](_0x29fafe[_0x3b94('0x53')],{'$or':_['map'](_0x29fafe[_0x3b94('0x4b')],function(_0x1810cc){var _0x2aaea2={};_0x2aaea2[_0x1810cc]={'$like':'%'+_0x8e0cbd[_0x3b94('0x47')][_0x3b94('0x54')]+'%'};return _0x2aaea2;})});}_0x29fafe=_[_0x3b94('0x56')]({},_0x29fafe,_0x8e0cbd[_0x3b94('0x57')]);return db['SmsInteraction']['count']({'where':_0x29fafe[_0x3b94('0x53')]})['then'](function(_0x4faf72){_0x178d65[_0x3b94('0x58')]=_0x4faf72;if(_0x8e0cbd[_0x3b94('0x47')]['includeAll']){_0x29fafe[_0x3b94('0x5f')]=[{'model':db[_0x3b94('0x9e')],'as':_0x3b94('0xc1'),'required':![]},{'model':db['User'],'as':_0x3b94('0xc2'),'attributes':[_0x3b94('0x3d'),_0x3b94('0xc3'),_0x3b94('0xc4')],'required':![]},{'model':db[_0x3b94('0xc5')],'as':'Tags','attributes':['id',_0x3b94('0x3d'),'color'],'where':_0x8e0cbd[_0x3b94('0x47')][_0x3b94('0xc6')]?{'id':_0x8e0cbd[_0x3b94('0x47')][_0x3b94('0xc6')]}:undefined,'required':_0x8e0cbd[_0x3b94('0x47')][_0x3b94('0xc6')]?!![]:![]}];}return db[_0x3b94('0xa4')][_0x3b94('0x5a')](_0x29fafe);})[_0x3b94('0x22')](function(_0x297530){_0x178d65[_0x3b94('0x5b')]=_0x297530;return _0x178d65;});}})[_0x3b94('0x22')](respondWithFilteredResult(_0x22b18e,_0x29fafe))[_0x3b94('0x5c')](handleError(_0x22b18e,null));};exports[_0x3b94('0x3e')]=function(_0x13cf11,_0x85a171,_0x2fdead){var _0x16657e,_0x44bc86,_0x3b2300;if(_[_0x3b94('0x96')](_0x13cf11[_0x3b94('0x62')][_0x3b94('0x62')])||_0x13cf11[_0x3b94('0x62')]['body']===''){throw new db[(_0x3b94('0x7f'))]['ValidationError']('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x3b94('0x96')](_0x13cf11[_0x3b94('0x62')]['to'])){throw new db[(_0x3b94('0x7f'))][(_0x3b94('0x80'))]('to\x20is\x20mandatory');}_0x16657e=_0x13cf11[_0x3b94('0x62')]['to'];return db[_0x3b94('0x42')][_0x3b94('0x60')]({'where':{'id':_0x13cf11['params']['id']},'include':[{'model':db[_0x3b94('0x9c')],'as':_0x3b94('0xc7'),'include':[{'model':db['CmContact'],'as':_0x3b94('0xa3'),'where':{'mobile':_0x16657e},'limit':0x1,'order':[[_0x3b94('0x9f'),_0x3b94('0xa0')]]}]}]})[_0x3b94('0x22')](handleEntityNotFound(_0x85a171,null))[_0x3b94('0x22')](function(_0x532e7d){if(_0x532e7d&&_0x532e7d['List']){_0x44bc86=_0x532e7d[_0x3b94('0x37')]({'plain':!![]});if(_0x44bc86[_0x3b94('0xc7')]&&_0x44bc86[_0x3b94('0xc7')][_0x3b94('0xa3')][_0x3b94('0x4e')]){return _0x44bc86[_0x3b94('0xc7')][_0x3b94('0xa3')][0x0];}return db[_0x3b94('0x9e')][_0x3b94('0x61')](_['defaults'](_0x13cf11['body'],{'firstName':_0x16657e,'mobile':_0x16657e,'phone':_0x16657e,'ListId':_0x44bc86[_0x3b94('0x9d')]}));}})[_0x3b94('0x22')](handleEntityNotFound(_0x85a171,null))['then'](function(_0x3d9371){if(_0x3d9371){_0x3b2300=_0x3d9371;return db['SmsInteraction'][_0x3b94('0x60')]({'where':{'ContactId':_0x3b2300['id'],'closed':![],'SmsAccountId':_0x44bc86['id']}})[_0x3b94('0x22')](function(_0x32d5af){if(_0x32d5af){return[_0x32d5af,![]];}return db[_0x3b94('0xa4')][_0x3b94('0x61')]({'UserId':_0x13cf11[_0x3b94('0x63')]['id'],'ContactId':_0x3b2300['id'],'SmsAccountId':_0x44bc86['id'],'phone':_0x16657e,'firstMsgDirection':_0x3b94('0xc8'),'Messages':[_[_0x3b94('0x56')](_0x13cf11[_0x3b94('0x62')],{'read':![],'body':_0x13cf11[_0x3b94('0x62')][_0x3b94('0x62')],'phone':_0x16657e,'SmsAccountId':_0x44bc86['id'],'UserId':_0x13cf11[_0x3b94('0x63')]['id'],'ContactId':_0x3b2300['id']})]},{'include':[{'model':db['SmsMessage'],'as':'Messages'}]})[_0x3b94('0x22')](function(_0x556462){return[_0x556462,!![]];});});}})[_0x3b94('0xc9')](function(_0x7c0308,_0x12917b){if(_0x12917b){return _0x7c0308;}return db['SmsMessage'][_0x3b94('0x61')](_[_0x3b94('0x56')](_0x13cf11[_0x3b94('0x62')],{'read':![],'body':_0x13cf11[_0x3b94('0x62')][_0x3b94('0x62')],'phone':_0x16657e,'SmsAccountId':_0x44bc86['id'],'SmsInteractionId':_0x7c0308['id'],'UserId':_0x13cf11[_0x3b94('0x63')]['id'],'ContactId':_0x3b2300['id']}))['then'](function(_0x519f68){_0x7c0308[_0x3b94('0xca')][_0x3b94('0xcb')]=[];_0x7c0308[_0x3b94('0xca')]['Messages'][_0x3b94('0xa8')](_0x519f68[_0x3b94('0xca')]);return _0x7c0308;});})[_0x3b94('0x22')](respondWithResult(_0x85a171,null))[_0x3b94('0x5c')](handleError(_0x85a171,null));};exports[_0x3b94('0x2c')]=function(_0x339c22,_0x1d3712,_0x3514e1){if(_0x339c22[_0x3b94('0x62')]['id']){delete _0x339c22[_0x3b94('0x62')]['id'];}var _0xdf8c6c,_0x53182f,_0x4cd913;return db[_0x3b94('0x42')][_0x3b94('0x60')]({'where':{'id':_0x339c22['params']['id']}})['then'](handleEntityNotFound(_0x1d3712,null))['then'](function(_0x10783d){if(_0x10783d){_0x4cd913=_0x10783d;logger['debug'](_0x3b94('0xb4'),_0x3b94('0x2c'),'received\x20delivery\x20report\x20from',_0x10783d['type'],util[_0x3b94('0xcc')](_0x339c22[_0x3b94('0x62')],{'showHidden':![],'depth':null}));switch(_0x10783d['type']){case'skebby':if(_0x339c22[_0x3b94('0x62')][_0x3b94('0xcd')]&&_0x339c22[_0x3b94('0x62')][_0x3b94('0x2c')]){_0x53182f=_0x339c22[_0x3b94('0x62')][_0x3b94('0x2c')];return db[_0x3b94('0xaa')][_0x3b94('0x60')]({'where':{'messageId':_0x339c22[_0x3b94('0x62')][_0x3b94('0xcd')]}});}break;case _0x3b94('0xce'):if(_0x339c22[_0x3b94('0x62')]['requestid']&&_0x339c22[_0x3b94('0x62')][_0x3b94('0xcf')]){_0x53182f=_0x339c22[_0x3b94('0x62')][_0x3b94('0xcf')];return db[_0x3b94('0xaa')][_0x3b94('0x60')]({'where':{'messageId':_0x339c22[_0x3b94('0x62')][_0x3b94('0xd0')]}});}break;case'clicksend':if(_0x339c22[_0x3b94('0x62')]['message_id']&&_0x339c22[_0x3b94('0x62')][_0x3b94('0xd1')]){_0x53182f=_0x339c22[_0x3b94('0x62')][_0x3b94('0xd1')];return db[_0x3b94('0xaa')][_0x3b94('0x60')]({'where':{'messageId':_0x339c22[_0x3b94('0x62')][_0x3b94('0x8b')]}});}break;case'infobip':var _0x3e5e8f=_0x339c22[_0x3b94('0x62')][_0x3b94('0x91')][0x0];if(_0x3e5e8f[_0x3b94('0x8a')]&&_0x3e5e8f[_0x3b94('0x2c')][_0x3b94('0xd2')]===_0x3b94('0xd3')){_0x53182f=_0x3e5e8f[_0x3b94('0x2c')][_0x3b94('0xd2')];return db[_0x3b94('0xaa')][_0x3b94('0x60')]({'where':{'messageId':_0x3e5e8f[_0x3b94('0x8a')]}});}break;case'clickatell':if(_0x339c22[_0x3b94('0x62')]['messageId']&&_0x339c22[_0x3b94('0x62')][_0x3b94('0x2c')]){_0x53182f=_0x339c22[_0x3b94('0x62')][_0x3b94('0x2c')];return db[_0x3b94('0xaa')][_0x3b94('0x60')]({'where':{'messageId':_0x339c22[_0x3b94('0x62')][_0x3b94('0x8a')]}});}break;case _0x3b94('0xd4'):if(_0x339c22[_0x3b94('0x62')][0x0]['message']['id']){_0x53182f=_0x339c22['body'][0x0][_0x3b94('0x44')];return db[_0x3b94('0xaa')][_0x3b94('0x60')]({'where':{'messageId':_0x339c22[_0x3b94('0x62')][0x0][_0x3b94('0x2a')]['id']}});}break;case'intelepeer':if(_0x339c22[_0x3b94('0x62')][_0x3b94('0xd5')]&&_0x339c22['body'][_0x3b94('0x2c')]){_0x53182f=_0x339c22['body'][_0x3b94('0x2c')];return db[_0x3b94('0xaa')][_0x3b94('0x60')]({'where':{'messageId':_0x339c22['body'][_0x3b94('0xd5')]}});}break;}}})['then'](handleEntityNotFound(_0x1d3712,null))[_0x3b94('0x22')](function(_0x1e92ee){if(_0x1e92ee){_0xdf8c6c=_0x1e92ee;switch(_0x4cd913['type']){case _0x3b94('0x87'):if(_0x53182f===_0x3b94('0xd3')){return _0xdf8c6c[_0x3b94('0x36')]({'read':!![]});}else{logger[_0x3b94('0x28')](_0x3b94('0xb4'),_0x3b94('0x2c'),_0x3b94('0x87'),util[_0x3b94('0xcc')](_0x339c22[_0x3b94('0x62')],{'showHidden':![],'depth':null}));}break;case _0x3b94('0xce'):if(_0x53182f==='1'){return _0xdf8c6c[_0x3b94('0x36')]({'read':!![]});}else{logger[_0x3b94('0x28')](_0x3b94('0xb4'),_0x3b94('0x2c'),_0x3b94('0x87'),util['inspect'](_0x339c22[_0x3b94('0x62')],{'showHidden':![],'depth':null}));}break;case _0x3b94('0xd6'):if(!_0x339c22[_0x3b94('0x62')][_0x3b94('0xd7')]&&_0x53182f>=0xc8&&_0x53182f<=0xce){return _0xdf8c6c[_0x3b94('0x36')]({'read':!![]});}else{logger[_0x3b94('0x28')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x3b94('0x2c'),'clicksend',util['inspect'](_0x339c22[_0x3b94('0x62')],{'showHidden':![],'depth':null}));}break;case _0x3b94('0x90'):var _0x1d146a=_0x339c22['body'][_0x3b94('0x91')][0x0];if(_0x1d146a[_0x3b94('0x2c')]['groupName']===_0x3b94('0xd3')){return _0xdf8c6c['update']({'read':!![]});}else{logger['error'](_0x3b94('0xb4'),_0x3b94('0x2c'),_0x3b94('0x90'),util['inspect'](_0x339c22[_0x3b94('0x62')],{'showHidden':![],'depth':null}));}break;case _0x3b94('0x93'):if(_0x53182f==_0x3b94('0xd8')||_0x53182f==_0x3b94('0xd9')){return _0xdf8c6c[_0x3b94('0x36')]({'read':!![]});}else{logger[_0x3b94('0x28')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x3b94('0x2c'),_0x3b94('0x93'),util[_0x3b94('0xcc')](_0x339c22[_0x3b94('0x62')],{'showHidden':![],'depth':null}));}break;case _0x3b94('0xd4'):if(_0x53182f==_0x3b94('0xda')){return _0xdf8c6c['update']({'read':!![]});}else{logger[_0x3b94('0x28')](_0x3b94('0xb4'),'status',_0x3b94('0xd4'),util[_0x3b94('0xcc')](_0x339c22[_0x3b94('0x62')],{'showHidden':![],'depth':null}));}break;case'intelepeer':if(_0x53182f===_0x3b94('0xdb')||_0x53182f===_0x3b94('0xdc')){return _0xdf8c6c[_0x3b94('0x36')]({'read':!![]});}else{logger[_0x3b94('0x28')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x3b94('0x2c'),_0x3b94('0x94'),util[_0x3b94('0xcc')](_0x339c22[_0x3b94('0x62')],{'showHidden':![],'depth':null}));}break;}return _0xdf8c6c;}})[_0x3b94('0x22')](respondWithResult(_0x1d3712,null))[_0x3b94('0x5c')](handleError(_0x1d3712,null));};exports[_0x3b94('0xdd')]=function(_0x17a5b5,_0x31be8a,_0x26b242){var _0x236649,_0x3c7c53,_0x1d54e1;return db[_0x3b94('0x42')][_0x3b94('0x60')]({'where':{'id':_0x17a5b5[_0x3b94('0x5e')]['id']}})['then'](handleEntityNotFound(_0x31be8a,null))[_0x3b94('0x22')](function(_0x2f50e7){if(_0x2f50e7){_0x1d54e1=_0x2f50e7;logger[_0x3b94('0x26')](_0x3b94('0xb4'),_0x3b94('0x2c'),'received\x20delivery\x20report\x20from',_0x2f50e7[_0x3b94('0x44')],util[_0x3b94('0xcc')](_0x17a5b5[_0x3b94('0x47')],{'showHidden':![],'depth':null}));switch(_0x2f50e7[_0x3b94('0x44')]){case _0x3b94('0xde'):if(_0x17a5b5[_0x3b94('0x47')][_0x3b94('0xdf')]&&_0x17a5b5[_0x3b94('0x47')][_0x3b94('0xe0')]){_0x3c7c53=_0x17a5b5[_0x3b94('0x47')][_0x3b94('0xe0')];return db[_0x3b94('0xaa')][_0x3b94('0x60')]({'where':{'messageId':_0x17a5b5[_0x3b94('0x47')]['message-id']}});}break;}}})[_0x3b94('0x22')](handleEntityNotFound(_0x31be8a,null))[_0x3b94('0x22')](function(_0x2565c9){if(_0x2565c9){_0x236649=_0x2565c9;switch(_0x1d54e1[_0x3b94('0x44')]){case'csc':if(_0x3c7c53==='2'||_0x3c7c53==='6'){return _0x236649[_0x3b94('0x36')]({'read':!![]});}else{logger[_0x3b94('0x28')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x3b94('0x2c'),_0x3b94('0xde'),util['inspect'](_0x17a5b5[_0x3b94('0x47')],{'showHidden':![],'depth':null}));};break;}return _0x236649;}})[_0x3b94('0x22')](respondWithResult(_0x31be8a,null))[_0x3b94('0x5c')](handleError(_0x31be8a,null));};exports['addAgents']=function(_0x4d4539,_0x391925,_0x18a094){return db[_0x3b94('0x42')][_0x3b94('0x60')]({'where':{'id':_0x4d4539[_0x3b94('0x5e')]['id']}})[_0x3b94('0x22')](handleEntityNotFound(_0x391925,null))['then'](function(_0x154dbe){if(_0x154dbe){return _0x154dbe[_0x3b94('0xe1')](_0x4d4539[_0x3b94('0x62')][_0x3b94('0x76')],_[_0x3b94('0xa2')](_0x4d4539['body'],[_0x3b94('0x76'),'id'])||{})[_0x3b94('0xc9')](function(_0x2bbfb5){for(var _0x1c13ee=0x0;_0x1c13ee<_0x4d4539[_0x3b94('0x62')]['ids'][_0x3b94('0x4e')];_0x1c13ee+=0x1){socket['emit'](_0x3b94('0xe2'),{'UserId':Number(_0x4d4539[_0x3b94('0x62')][_0x3b94('0x76')][_0x1c13ee]),'SmsAccountId':Number(_0x4d4539[_0x3b94('0x5e')]['id'])});}return _0x2bbfb5;});}})[_0x3b94('0x22')](respondWithResult(_0x391925,null))[_0x3b94('0x5c')](handleError(_0x391925,null));};exports['removeAgents']=function(_0x3dab59,_0x442197,_0x43c6c2){return db[_0x3b94('0x42')][_0x3b94('0x60')]({'where':{'id':_0x3dab59[_0x3b94('0x5e')]['id']}})[_0x3b94('0x22')](handleEntityNotFound(_0x442197,null))[_0x3b94('0x22')](function(_0x18553c){if(_0x18553c){return _0x18553c[_0x3b94('0xe3')](_0x3dab59[_0x3b94('0x47')][_0x3b94('0x76')])[_0x3b94('0x22')](function(){if(_[_0x3b94('0xe4')](_0x3dab59[_0x3b94('0x47')][_0x3b94('0x76')])){for(var _0x2ab27d=0x0;_0x2ab27d<_0x3dab59[_0x3b94('0x47')]['ids'][_0x3b94('0x4e')];_0x2ab27d+=0x1){socket[_0x3b94('0xe5')]('userSmsAccount:remove',{'UserId':Number(_0x3dab59[_0x3b94('0x47')][_0x3b94('0x76')][_0x2ab27d]),'SmsAccountId':Number(_0x3dab59[_0x3b94('0x5e')]['id'])});}}else{socket[_0x3b94('0xe5')](_0x3b94('0xe6'),{'UserId':Number(_0x3dab59['query'][_0x3b94('0x76')]),'SmsAccountId':Number(_0x3dab59[_0x3b94('0x5e')]['id'])});}});}})[_0x3b94('0x22')](respondWithStatusCode(_0x442197,null))[_0x3b94('0x5c')](handleError(_0x442197,null));};exports[_0x3b94('0xe7')]=function(_0x4ab07b,_0x2bb6e3,_0x588ce2){var _0x3d475d={};var _0x4b9353={};var _0x5ca2ee;var _0x2d1a85;return db[_0x3b94('0x42')][_0x3b94('0x6e')]({'where':{'id':_0x4ab07b[_0x3b94('0x5e')]['id']}})['then'](handleEntityNotFound(_0x2bb6e3,null))[_0x3b94('0x22')](function(_0x378af7){if(_0x378af7){_0x5ca2ee=_0x378af7;_0x4b9353[_0x3b94('0x4c')]=_[_0x3b94('0x48')](db[_0x3b94('0xad')][_0x3b94('0x74')]);_0x4b9353['query']=_[_0x3b94('0x48')](_0x4ab07b[_0x3b94('0x47')]);_0x4b9353[_0x3b94('0x49')]=_[_0x3b94('0x4a')](_0x4b9353[_0x3b94('0x4c')],_0x4b9353[_0x3b94('0x47')]);_0x3d475d[_0x3b94('0x4b')]=_[_0x3b94('0x4a')](_0x4b9353[_0x3b94('0x4c')],qs[_0x3b94('0x4d')](_0x4ab07b['query'][_0x3b94('0x4d')]));_0x3d475d[_0x3b94('0x4b')]=_0x3d475d[_0x3b94('0x4b')][_0x3b94('0x4e')]?_0x3d475d[_0x3b94('0x4b')]:_0x4b9353[_0x3b94('0x4c')];_0x3d475d[_0x3b94('0x51')]=qs[_0x3b94('0x52')](_0x4ab07b[_0x3b94('0x47')][_0x3b94('0x52')]);_0x3d475d[_0x3b94('0x53')]=qs[_0x3b94('0x49')](_['pick'](_0x4ab07b[_0x3b94('0x47')],_0x4b9353[_0x3b94('0x49')]));if(_0x4ab07b[_0x3b94('0x47')][_0x3b94('0x54')]){_0x3d475d['where']=_[_0x3b94('0x56')](_0x3d475d['where'],{'$or':_[_0x3b94('0x46')](_0x3d475d[_0x3b94('0x4b')],function(_0x43787c){var _0x419042={};_0x419042[_0x43787c]={'$like':'%'+_0x4ab07b[_0x3b94('0x47')]['filter']+'%'};return _0x419042;})});}_0x3d475d=_[_0x3b94('0x56')]({},_0x3d475d,_0x4ab07b['options']);return _0x5ca2ee[_0x3b94('0xe7')](_0x3d475d);}})['then'](function(_0x246ecd){if(_0x246ecd){_0x2d1a85=_0x246ecd['length'];if(!_0x4ab07b[_0x3b94('0x47')][_0x3b94('0x4f')](_0x3b94('0x50'))){_0x3d475d[_0x3b94('0x31')]=qs['limit'](_0x4ab07b[_0x3b94('0x47')][_0x3b94('0x31')]);_0x3d475d['offset']=qs[_0x3b94('0x2f')](_0x4ab07b[_0x3b94('0x47')][_0x3b94('0x2f')]);}return _0x5ca2ee[_0x3b94('0xe7')](_0x3d475d);}})['then'](function(_0x25315f){if(_0x25315f){return _0x25315f?{'count':_0x2d1a85,'rows':_0x25315f}:null;}})[_0x3b94('0x22')](respondWithResult(_0x2bb6e3,null))[_0x3b94('0x5c')](handleError(_0x2bb6e3,null));};
\ No newline at end of file
+var _0x3687=['Content-Type','text/xml','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','sequelize','Transaction','READ_COMMITTED','findOne','SmsApplication','priority','getApplications','getInteractions','Contact','User','Owner','internal','Tag','Tags','color','tag','to\x20is\x20mandatory','List','out','Messages','dataValues','received\x20delivery\x20report\x20from','inspect','skebby_dispatch_id','connectel','requestid','status_code','DELIVERED','groupName','clickatell','redif','bandwidth','DELIVRD','ACCEPTD','statusGet','message-id','state','addAgents','omit','emit','removeAgents','userSmsAccount:remove','getAgents','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','to-csv','ejs','lodash','squel','crypto','jsforce','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','./smsAccount.socket','register','jayson/promise','client','http','then','info','SmsAccount,\x20%s,\x20%s','debug','SmsAccount,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','sendStatus','status','end','offset','limit','undefined','count','json','apply','get','SmsAccounts','UserProfileResource','destroy','stack','name','send','index','Pause','mandatoryDispositionPause','map','SmsAccount','rawAttributes','fieldName','type','key','keys','query','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','where','filters','filter','merge','VIRTUAL','options','findAll','rows','show','params','includeAll','include','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','update','describe','addDisposition','getDispositions','Disposition','nolimit','pick','SmsAccountId','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','removeAnswers','notify','sms','Applications','account','applications','CmContact','Sequelize','ValidationError','no\x20available\x20attributes','updatedAt','difference','createdAt','CompanyId','ListId','mobile','twilio','from','From','Body','messageId','MessageSid','skebby','text','clicksend','message_id','plivo','MessageUUID','infobip','results','csc','originatingAddress','segmentedMessage','intelepeer','isNil','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','Contacts','DESC','list','defaults','SmsInteraction','spread','interaction','created','autoclose','push','unmanaged','*,*,*,*','SmsMessage','ContactId','AttachmentId','UserId','agent','waitForTheAssignedAgent','Start','startRouting','receiveMessage','entity\x20found','SmsAccount,\x20%s,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x1177d5,_0x22b649){var _0xc3ddc2=function(_0x43ff95){while(--_0x43ff95){_0x1177d5['push'](_0x1177d5['shift']());}};_0xc3ddc2(++_0x22b649);}(_0x3687,0x1e6));var _0x7368=function(_0x41a976,_0x5491a3){_0x41a976=_0x41a976-0x0;var _0x1082b8=_0x3687[_0x41a976];return _0x1082b8;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7368('0x0'));var zipdir=require(_0x7368('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x7368('0x2'));var moment=require(_0x7368('0x3'));var BPromise=require(_0x7368('0x4'));var Mustache=require(_0x7368('0x5'));var util=require('util');var path=require(_0x7368('0x6'));var sox=require('sox');var csv=require(_0x7368('0x7'));var ejs=require(_0x7368('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x7368('0x9'));var squel=require(_0x7368('0xa'));var crypto=require(_0x7368('0xb'));var jsforce=require(_0x7368('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x7368('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x7368('0xd'));var authService=require(_0x7368('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x7368('0xf'));var hardwareService=require(_0x7368('0x10'));var logger=require('../../config/logger')(_0x7368('0x11'));var utils=require(_0x7368('0x12'));var config=require(_0x7368('0x13'));var licenseUtil=require(_0x7368('0x14'));var db=require(_0x7368('0x15'))['db'];config['redis']=_['defaults'](config[_0x7368('0x16')],{'host':_0x7368('0x17'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x7368('0x16')]));require(_0x7368('0x18'))[_0x7368('0x19')](socket);var jayson=require(_0x7368('0x1a'));var client=jayson[_0x7368('0x1b')][_0x7368('0x1c')]({'port':0x232c});function respondWithRpcPromise(_0x1b486e,_0x3f5250,_0xce569,_0x58953d){return new BPromise(function(_0x5d2b0e,_0x3df3d2){var _0x4b28db=_0x58953d||client;return _0x4b28db['request'](_0x1b486e,_0xce569)[_0x7368('0x1d')](function(_0x2d8916){logger[_0x7368('0x1e')](_0x7368('0x1f'),_0x3f5250,'request\x20sent');logger[_0x7368('0x20')](_0x7368('0x21'),_0x3f5250,_0x7368('0x22'),JSON['stringify'](_0x2d8916));if(_0x2d8916['error']){if(_0x2d8916[_0x7368('0x23')][_0x7368('0x24')]===0x1f4){logger[_0x7368('0x23')](_0x7368('0x1f'),_0x3f5250,_0x2d8916[_0x7368('0x23')][_0x7368('0x25')]);return _0x3df3d2(_0x2d8916[_0x7368('0x23')][_0x7368('0x25')]);}logger[_0x7368('0x23')](_0x7368('0x1f'),_0x3f5250,_0x2d8916[_0x7368('0x23')]['message']);return _0x5d2b0e(_0x2d8916['error'][_0x7368('0x25')]);}else{logger['info']('SmsAccount,\x20%s,\x20%s',_0x3f5250,_0x7368('0x22'));_0x5d2b0e(_0x2d8916[_0x7368('0x26')][_0x7368('0x25')]);}})[_0x7368('0x27')](function(_0x1e7334){logger[_0x7368('0x23')](_0x7368('0x1f'),_0x3f5250,_0x1e7334);_0x3df3d2(_0x1e7334);});});}function respondWithStatusCode(_0x30b2fd,_0x3021e2){_0x3021e2=_0x3021e2||0xcc;return function(_0x12b1d9){if(_0x12b1d9){return _0x30b2fd[_0x7368('0x28')](_0x3021e2);}return _0x30b2fd[_0x7368('0x29')](_0x3021e2)[_0x7368('0x2a')]();};}function respondWithResult(_0xfb1ad2,_0x1e33cc){_0x1e33cc=_0x1e33cc||0xc8;return function(_0x4b1ba9){if(_0x4b1ba9){return _0xfb1ad2['status'](_0x1e33cc)['json'](_0x4b1ba9);}};}function respondWithFilteredResult(_0x203886,_0x41d210){return function(_0x242889){if(_0x242889){var _0x5644c7=typeof _0x41d210[_0x7368('0x2b')]==='undefined'&&typeof _0x41d210[_0x7368('0x2c')]===_0x7368('0x2d');var _0x2b51a1=_0x242889[_0x7368('0x2e')];var _0x2c7bce=_0x5644c7?0x0:_0x41d210[_0x7368('0x2b')];var _0x207dd8=_0x5644c7?_0x242889[_0x7368('0x2e')]:_0x41d210[_0x7368('0x2b')]+_0x41d210[_0x7368('0x2c')];var _0x2a3136;if(_0x207dd8>=_0x2b51a1){_0x207dd8=_0x2b51a1;_0x2a3136=0xc8;}else{_0x2a3136=0xce;}_0x203886[_0x7368('0x29')](_0x2a3136);return _0x203886['set']('Content-Range',_0x2c7bce+'-'+_0x207dd8+'/'+_0x2b51a1)[_0x7368('0x2f')](_0x242889);}return null;};}function patchUpdates(_0x27fa1d){return function(_0x55cb77){try{jsonpatch[_0x7368('0x30')](_0x55cb77,_0x27fa1d,!![]);}catch(_0x4db522){return BPromise['reject'](_0x4db522);}return _0x55cb77['save']();};}function saveUpdates(_0x3fa145,_0x1e947f){return function(_0x4e73fc){if(_0x4e73fc){return _0x4e73fc['update'](_0x3fa145)[_0x7368('0x1d')](function(_0x51e686){return _0x51e686;});}return null;};}function removeEntity(_0x4451db,_0x515f38){return function(_0x59d726){if(_0x59d726){return _0x59d726['destroy']()['then'](function(){var _0x298d58=_0x59d726[_0x7368('0x31')]({'plain':!![]});var _0x835478=_0x7368('0x32');return db[_0x7368('0x33')][_0x7368('0x34')]({'where':{'type':_0x835478,'resourceId':_0x298d58['id']}})[_0x7368('0x1d')](function(){return _0x59d726;});})['then'](function(){_0x4451db[_0x7368('0x29')](0xcc)[_0x7368('0x2a')]();});}};}function handleEntityNotFound(_0x5ec5a9,_0x29e90b){return function(_0x2561ac){if(!_0x2561ac){_0x5ec5a9[_0x7368('0x28')](0x194);}return _0x2561ac;};}function handleError(_0x1bebe2,_0x101345){_0x101345=_0x101345||0x1f4;return function(_0x3b95c8){logger[_0x7368('0x23')](_0x3b95c8[_0x7368('0x35')]);if(_0x3b95c8[_0x7368('0x36')]){delete _0x3b95c8[_0x7368('0x36')];}_0x1bebe2[_0x7368('0x29')](_0x101345)[_0x7368('0x37')](_0x3b95c8);};}exports[_0x7368('0x38')]=function(_0x5c6646,_0x5bcc9a){var _0x2edde7={'include':[{'model':db[_0x7368('0x39')],'as':_0x7368('0x3a')}]},_0x3f32d1={},_0x32ad2f={'count':0x0,'rows':[]};var _0x400b4e=_[_0x7368('0x3b')](db[_0x7368('0x3c')][_0x7368('0x3d')],function(_0x58f7e0){return{'name':_0x58f7e0[_0x7368('0x3e')],'type':_0x58f7e0[_0x7368('0x3f')][_0x7368('0x40')]};});_0x3f32d1['model']=_['map'](_0x400b4e,_0x7368('0x36'));_0x3f32d1['query']=_[_0x7368('0x41')](_0x5c6646[_0x7368('0x42')]);_0x3f32d1['filters']=_[_0x7368('0x43')](_0x3f32d1[_0x7368('0x44')],_0x3f32d1['query']);_0x2edde7[_0x7368('0x45')]=_['intersection'](_0x3f32d1[_0x7368('0x44')],qs[_0x7368('0x46')](_0x5c6646[_0x7368('0x42')][_0x7368('0x46')]));_0x2edde7[_0x7368('0x45')]=_0x2edde7['attributes'][_0x7368('0x47')]?_0x2edde7['attributes']:_0x3f32d1[_0x7368('0x44')];if(!_0x5c6646[_0x7368('0x42')][_0x7368('0x48')]('nolimit')){_0x2edde7[_0x7368('0x2c')]=qs[_0x7368('0x2c')](_0x5c6646['query'][_0x7368('0x2c')]);_0x2edde7['offset']=qs['offset'](_0x5c6646[_0x7368('0x42')][_0x7368('0x2b')]);}_0x2edde7[_0x7368('0x49')]=qs[_0x7368('0x4a')](_0x5c6646['query'][_0x7368('0x4a')]);_0x2edde7[_0x7368('0x4b')]=qs[_0x7368('0x4c')](_['pick'](_0x5c6646[_0x7368('0x42')],_0x3f32d1['filters']),_0x400b4e);if(_0x5c6646[_0x7368('0x42')][_0x7368('0x4d')]){_0x2edde7[_0x7368('0x4b')]=_[_0x7368('0x4e')](_0x2edde7[_0x7368('0x4b')],{'$or':_[_0x7368('0x3b')](_0x400b4e,function(_0x56730a){if(_0x56730a[_0x7368('0x3f')]!==_0x7368('0x4f')){var _0x370fb1={};_0x370fb1[_0x56730a[_0x7368('0x36')]]={'$like':'%'+_0x5c6646[_0x7368('0x42')][_0x7368('0x4d')]+'%'};return _0x370fb1;}})});}_0x2edde7=_[_0x7368('0x4e')]({},_0x2edde7,_0x5c6646[_0x7368('0x50')]);var _0x5ddf4b={'where':_0x2edde7[_0x7368('0x4b')]};return db['SmsAccount'][_0x7368('0x2e')](_0x5ddf4b)[_0x7368('0x1d')](function(_0x409e19){_0x32ad2f[_0x7368('0x2e')]=_0x409e19;if(_0x5c6646[_0x7368('0x42')]['includeAll']){_0x2edde7['include']=[{'all':!![]}];}return db[_0x7368('0x3c')][_0x7368('0x51')](_0x2edde7);})[_0x7368('0x1d')](function(_0x186feb){_0x32ad2f[_0x7368('0x52')]=_0x186feb;return _0x32ad2f;})[_0x7368('0x1d')](respondWithFilteredResult(_0x5bcc9a,_0x2edde7))[_0x7368('0x27')](handleError(_0x5bcc9a,null));};exports[_0x7368('0x53')]=function(_0x5dbbba,_0x13a190){var _0x5bb84b={'raw':![],'where':{'id':_0x5dbbba[_0x7368('0x54')]['id']},'include':[{'model':db[_0x7368('0x39')],'as':_0x7368('0x3a')}]},_0x21df14={};_0x21df14[_0x7368('0x44')]=_['keys'](db[_0x7368('0x3c')][_0x7368('0x3d')]);_0x21df14['query']=_[_0x7368('0x41')](_0x5dbbba[_0x7368('0x42')]);_0x21df14['filters']=_[_0x7368('0x43')](_0x21df14[_0x7368('0x44')],_0x21df14[_0x7368('0x42')]);_0x5bb84b[_0x7368('0x45')]=_['intersection'](_0x21df14[_0x7368('0x44')],qs[_0x7368('0x46')](_0x5dbbba[_0x7368('0x42')]['fields']));_0x5bb84b[_0x7368('0x45')]=_0x5bb84b[_0x7368('0x45')]['length']?_0x5bb84b[_0x7368('0x45')]:_0x21df14[_0x7368('0x44')];if(_0x5dbbba[_0x7368('0x42')][_0x7368('0x55')]){_0x5bb84b[_0x7368('0x56')]=[{'all':!![]}];}_0x5bb84b=_[_0x7368('0x4e')]({},_0x5bb84b,_0x5dbbba[_0x7368('0x50')]);return db[_0x7368('0x3c')][_0x7368('0x57')](_0x5bb84b)[_0x7368('0x1d')](handleEntityNotFound(_0x13a190,null))[_0x7368('0x1d')](respondWithResult(_0x13a190,null))[_0x7368('0x27')](handleError(_0x13a190,null));};exports['create']=function(_0x2e35f0,_0x315c50){return db['SmsAccount'][_0x7368('0x58')](_0x2e35f0[_0x7368('0x59')],{})[_0x7368('0x1d')](function(_0x423da1){var _0x4ad2e8=_0x2e35f0[_0x7368('0x5a')][_0x7368('0x31')]({'plain':!![]});if(!_0x4ad2e8)throw new Error(_0x7368('0x5b'));if(_0x4ad2e8[_0x7368('0x5c')]===_0x7368('0x5a')){var _0x5e0863=_0x423da1['get']({'plain':!![]});var _0x2eff36=_0x7368('0x32');return db[_0x7368('0x5d')][_0x7368('0x57')]({'where':{'name':_0x2eff36,'userProfileId':_0x4ad2e8['userProfileId']},'raw':!![]})[_0x7368('0x1d')](function(_0x3d374b){if(_0x3d374b&&_0x3d374b[_0x7368('0x5e')]===0x0){return db['UserProfileResource'][_0x7368('0x58')]({'name':_0x5e0863[_0x7368('0x36')],'resourceId':_0x5e0863['id'],'type':_0x3d374b[_0x7368('0x36')],'sectionId':_0x3d374b['id']},{})[_0x7368('0x1d')](function(){return _0x423da1;});}else{return _0x423da1;}})[_0x7368('0x27')](function(_0x36c18e){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x36c18e);throw _0x36c18e;});}return _0x423da1;})[_0x7368('0x1d')](respondWithResult(_0x315c50,0xc9))['catch'](handleError(_0x315c50,null));};exports[_0x7368('0x5f')]=function(_0x1e1d89,_0x23ecd8){if(_0x1e1d89['body']['id']){delete _0x1e1d89[_0x7368('0x59')]['id'];}return db[_0x7368('0x3c')][_0x7368('0x57')]({'where':{'id':_0x1e1d89[_0x7368('0x54')]['id']},'include':[{'model':db[_0x7368('0x39')],'as':_0x7368('0x3a')}]})[_0x7368('0x1d')](handleEntityNotFound(_0x23ecd8,null))['then'](saveUpdates(_0x1e1d89[_0x7368('0x59')],null))[_0x7368('0x1d')](respondWithResult(_0x23ecd8,null))[_0x7368('0x27')](handleError(_0x23ecd8,null));};exports[_0x7368('0x34')]=function(_0x590f17,_0x594f09){return db['SmsAccount'][_0x7368('0x57')]({'where':{'id':_0x590f17[_0x7368('0x54')]['id']}})[_0x7368('0x1d')](handleEntityNotFound(_0x594f09,null))[_0x7368('0x1d')](removeEntity(_0x594f09,null))['catch'](handleError(_0x594f09,null));};exports[_0x7368('0x60')]=function(_0x2d3f1c,_0x430322){return db[_0x7368('0x3c')][_0x7368('0x60')]()[_0x7368('0x1d')](respondWithResult(_0x430322,null))[_0x7368('0x27')](handleError(_0x430322,null));};exports[_0x7368('0x61')]=function(_0x180029,_0x4a2a1a,_0x20b45c){if(_0x180029[_0x7368('0x59')]['id']){delete _0x180029[_0x7368('0x59')]['id'];}return db[_0x7368('0x3c')][_0x7368('0x57')]({'where':{'id':_0x180029[_0x7368('0x54')]['id']}})['then'](handleEntityNotFound(_0x4a2a1a,null))[_0x7368('0x1d')](function(_0xe77a7b){if(_0xe77a7b){_0x180029[_0x7368('0x59')]['SmsAccountId']=_0xe77a7b['id'];return db['Disposition'][_0x7368('0x58')](_0x180029[_0x7368('0x59')]);}})[_0x7368('0x1d')](respondWithResult(_0x4a2a1a,null))[_0x7368('0x27')](handleError(_0x4a2a1a,null));};exports[_0x7368('0x62')]=function(_0x13f618,_0x19e414,_0x1d36dd){var _0x2a1ae0={'raw':![],'where':{}};var _0x35b798={};var _0xa05bd2={'count':0x0,'rows':[]};return db['SmsAccount']['findOne']({'where':{'id':_0x13f618['params']['id']}})[_0x7368('0x1d')](handleEntityNotFound(_0x19e414,null))['then'](function(_0x2a3f4a){if(_0x2a3f4a){_0x35b798[_0x7368('0x44')]=_['keys'](db[_0x7368('0x63')][_0x7368('0x3d')]);_0x35b798[_0x7368('0x42')]=_['keys'](_0x13f618[_0x7368('0x42')]);_0x35b798[_0x7368('0x4c')]=_[_0x7368('0x43')](_0x35b798[_0x7368('0x44')],_0x35b798[_0x7368('0x42')]);_0x2a1ae0[_0x7368('0x45')]=_[_0x7368('0x43')](_0x35b798[_0x7368('0x44')],qs['fields'](_0x13f618[_0x7368('0x42')]['fields']));_0x2a1ae0[_0x7368('0x45')]=_0x2a1ae0[_0x7368('0x45')][_0x7368('0x47')]?_0x2a1ae0[_0x7368('0x45')]:_0x35b798['model'];if(!_0x13f618[_0x7368('0x42')]['hasOwnProperty'](_0x7368('0x64'))){_0x2a1ae0['limit']=qs[_0x7368('0x2c')](_0x13f618[_0x7368('0x42')][_0x7368('0x2c')]);_0x2a1ae0['offset']=qs[_0x7368('0x2b')](_0x13f618[_0x7368('0x42')][_0x7368('0x2b')]);}_0x2a1ae0[_0x7368('0x49')]=qs[_0x7368('0x4a')](_0x13f618[_0x7368('0x42')][_0x7368('0x4a')]);_0x2a1ae0[_0x7368('0x4b')]=qs[_0x7368('0x4c')](_[_0x7368('0x65')](_0x13f618['query'],_0x35b798[_0x7368('0x4c')]));_0x2a1ae0[_0x7368('0x4b')][_0x7368('0x66')]=_0x2a3f4a['id'];if(_0x13f618[_0x7368('0x42')]['filter']){_0x2a1ae0[_0x7368('0x4b')]=_[_0x7368('0x4e')](_0x2a1ae0['where'],{'$or':_[_0x7368('0x3b')](_0x2a1ae0[_0x7368('0x45')],function(_0x4dc8d5){var _0x573781={};_0x573781[_0x4dc8d5]={'$like':'%'+_0x13f618[_0x7368('0x42')]['filter']+'%'};return _0x573781;})});}_0x2a1ae0=_[_0x7368('0x4e')]({},_0x2a1ae0,_0x13f618['options']);return db[_0x7368('0x63')]['count']({'where':_0x2a1ae0[_0x7368('0x4b')]})['then'](function(_0x35b2d9){_0xa05bd2['count']=_0x35b2d9;if(_0x13f618[_0x7368('0x42')][_0x7368('0x55')]){_0x2a1ae0[_0x7368('0x56')]=[{'all':!![]}];}return db['Disposition'][_0x7368('0x51')](_0x2a1ae0);})['then'](function(_0x2acfcd){_0xa05bd2['rows']=_0x2acfcd;return _0xa05bd2;});}})['then'](respondWithFilteredResult(_0x19e414,_0x2a1ae0))[_0x7368('0x27')](handleError(_0x19e414,null));};exports[_0x7368('0x67')]=function(_0x56939d,_0x5d66b0,_0x41525a){return db[_0x7368('0x3c')][_0x7368('0x57')]({'where':{'id':_0x56939d[_0x7368('0x54')]['id']}})[_0x7368('0x1d')](handleEntityNotFound(_0x5d66b0,null))[_0x7368('0x1d')](function(_0x5856ed){if(_0x5856ed){return _0x5856ed[_0x7368('0x67')](_0x56939d['query'][_0x7368('0x68')]);}})[_0x7368('0x1d')](respondWithStatusCode(_0x5d66b0,null))[_0x7368('0x27')](handleError(_0x5d66b0,null));};exports[_0x7368('0x69')]=function(_0x3379ed,_0x4a1eec,_0xfd9f5){if(_0x3379ed[_0x7368('0x59')]['id']){delete _0x3379ed[_0x7368('0x59')]['id'];}return db['SmsAccount'][_0x7368('0x57')]({'where':{'id':_0x3379ed[_0x7368('0x54')]['id']}})['then'](handleEntityNotFound(_0x4a1eec,null))[_0x7368('0x1d')](function(_0x2e34b7){if(_0x2e34b7){_0x3379ed['body']['SmsAccountId']=_0x2e34b7['id'];return db[_0x7368('0x6a')][_0x7368('0x58')](_0x3379ed[_0x7368('0x59')]);}})[_0x7368('0x1d')](respondWithResult(_0x4a1eec,null))['catch'](handleError(_0x4a1eec,null));};exports[_0x7368('0x6b')]=function(_0x34b61a,_0x3d2620,_0x32f75a){var _0x5d5762={'raw':![],'where':{}};var _0x3055a5={};var _0x106dc0={'count':0x0,'rows':[]};return db[_0x7368('0x3c')]['findOne']({'where':{'id':_0x34b61a[_0x7368('0x54')]['id']}})[_0x7368('0x1d')](handleEntityNotFound(_0x3d2620,null))[_0x7368('0x1d')](function(_0x3fd446){if(_0x3fd446){_0x3055a5[_0x7368('0x44')]=_[_0x7368('0x41')](db[_0x7368('0x6a')][_0x7368('0x3d')]);_0x3055a5[_0x7368('0x42')]=_['keys'](_0x34b61a[_0x7368('0x42')]);_0x3055a5['filters']=_['intersection'](_0x3055a5['model'],_0x3055a5[_0x7368('0x42')]);_0x5d5762['attributes']=_['intersection'](_0x3055a5[_0x7368('0x44')],qs[_0x7368('0x46')](_0x34b61a[_0x7368('0x42')][_0x7368('0x46')]));_0x5d5762[_0x7368('0x45')]=_0x5d5762['attributes'][_0x7368('0x47')]?_0x5d5762[_0x7368('0x45')]:_0x3055a5[_0x7368('0x44')];if(!_0x34b61a[_0x7368('0x42')][_0x7368('0x48')](_0x7368('0x64'))){_0x5d5762[_0x7368('0x2c')]=qs[_0x7368('0x2c')](_0x34b61a[_0x7368('0x42')][_0x7368('0x2c')]);_0x5d5762[_0x7368('0x2b')]=qs[_0x7368('0x2b')](_0x34b61a[_0x7368('0x42')]['offset']);}_0x5d5762[_0x7368('0x49')]=qs[_0x7368('0x4a')](_0x34b61a['query'][_0x7368('0x4a')]);_0x5d5762[_0x7368('0x4b')]=qs['filters'](_[_0x7368('0x65')](_0x34b61a[_0x7368('0x42')],_0x3055a5[_0x7368('0x4c')]));_0x5d5762[_0x7368('0x4b')]['SmsAccountId']=_0x3fd446['id'];if(_0x34b61a['query'][_0x7368('0x4d')]){_0x5d5762[_0x7368('0x4b')]=_['merge'](_0x5d5762['where'],{'$or':_[_0x7368('0x3b')](_0x5d5762[_0x7368('0x45')],function(_0x275314){var _0x168613={};_0x168613[_0x275314]={'$like':'%'+_0x34b61a[_0x7368('0x42')][_0x7368('0x4d')]+'%'};return _0x168613;})});}_0x5d5762=_[_0x7368('0x4e')]({},_0x5d5762,_0x34b61a[_0x7368('0x50')]);return db[_0x7368('0x6a')][_0x7368('0x2e')]({'where':_0x5d5762[_0x7368('0x4b')]})[_0x7368('0x1d')](function(_0x5e4a53){_0x106dc0[_0x7368('0x2e')]=_0x5e4a53;if(_0x34b61a['query'][_0x7368('0x55')]){_0x5d5762['include']=[{'all':!![]}];}return db[_0x7368('0x6a')][_0x7368('0x51')](_0x5d5762);})[_0x7368('0x1d')](function(_0x695ed7){_0x106dc0['rows']=_0x695ed7;return _0x106dc0;});}})[_0x7368('0x1d')](respondWithFilteredResult(_0x3d2620,_0x5d5762))[_0x7368('0x27')](handleError(_0x3d2620,null));};exports[_0x7368('0x6c')]=function(_0x4a539f,_0xeba27a,_0x333fec){return db['SmsAccount']['find']({'where':{'id':_0x4a539f[_0x7368('0x54')]['id']}})[_0x7368('0x1d')](handleEntityNotFound(_0xeba27a,null))[_0x7368('0x1d')](function(_0x2069e9){if(_0x2069e9){return _0x2069e9[_0x7368('0x6c')](_0x4a539f[_0x7368('0x42')][_0x7368('0x68')]);}})[_0x7368('0x1d')](respondWithStatusCode(_0xeba27a,null))['catch'](handleError(_0xeba27a,null));};exports[_0x7368('0x6d')]=function(_0x11d4d9,_0x1aad66,_0x1fc0c0){var _0x283f06={'channel':_0x7368('0x6e')};var _0x518793=[];var _0x567e76=[];var _0x422c55={};return db[_0x7368('0x3c')][_0x7368('0x57')]({'where':{'id':_0x11d4d9[_0x7368('0x54')]['id']},'include':[{'model':db['SmsApplication'],'as':_0x7368('0x6f')}]})[_0x7368('0x1d')](handleEntityNotFound(_0x1aad66,null))[_0x7368('0x1d')](function(_0x115309){_0x283f06[_0x7368('0x70')]=_0x115309;_0x283f06[_0x7368('0x71')]=_['orderBy'](_0x115309[_0x7368('0x6f')],['priority'],['asc']);if(_0x283f06[_0x7368('0x70')]['Applications']){delete _0x283f06[_0x7368('0x70')][_0x7368('0x6f')];}return db[_0x7368('0x72')][_0x7368('0x60')]();})[_0x7368('0x1d')](function(_0x550aca){if(!_0x550aca){throw new db[(_0x7368('0x73'))][(_0x7368('0x74'))](_0x7368('0x75'));}_0x518793=_['difference'](_[_0x7368('0x41')](_0x550aca),['createdAt',_0x7368('0x76')]);_0x567e76=_[_0x7368('0x77')](_[_0x7368('0x41')](_0x550aca),[_0x7368('0x78'),_0x7368('0x76'),_0x7368('0x79'),_0x7368('0x7a')]);_0x283f06[_0x7368('0x59')]={'mapKey':_0x7368('0x7b')};if(_0x283f06[_0x7368('0x70')][_0x7368('0x3f')]){switch(_0x283f06[_0x7368('0x70')]['type']){case _0x7368('0x7c'):_0x283f06[_0x7368('0x59')][_0x7368('0x7d')]=_0x11d4d9[_0x7368('0x59')][_0x7368('0x7e')];_0x283f06[_0x7368('0x59')][_0x7368('0x59')]=_0x11d4d9['body'][_0x7368('0x7f')];_0x283f06['body'][_0x7368('0x80')]=_0x11d4d9['body'][_0x7368('0x81')];break;case _0x7368('0x82'):_0x283f06[_0x7368('0x59')][_0x7368('0x7d')]='+'+_0x11d4d9[_0x7368('0x59')]['sender'];_0x283f06['body'][_0x7368('0x59')]=_0x11d4d9[_0x7368('0x59')][_0x7368('0x83')];break;case'connectel':_0x283f06[_0x7368('0x59')][_0x7368('0x7d')]=_0x11d4d9[_0x7368('0x59')][_0x7368('0x7d')];_0x283f06[_0x7368('0x59')][_0x7368('0x59')]=_0x11d4d9[_0x7368('0x59')]['message'];break;case _0x7368('0x84'):_0x283f06['body']['from']=_0x11d4d9['body'][_0x7368('0x7d')];_0x283f06[_0x7368('0x59')][_0x7368('0x59')]=_0x11d4d9[_0x7368('0x59')][_0x7368('0x59')];_0x283f06[_0x7368('0x59')]['messageId']=_0x11d4d9[_0x7368('0x59')][_0x7368('0x85')];break;case _0x7368('0x86'):_0x283f06[_0x7368('0x59')][_0x7368('0x7d')]=_0x11d4d9[_0x7368('0x59')][_0x7368('0x7e')];_0x283f06[_0x7368('0x59')][_0x7368('0x59')]=_0x11d4d9[_0x7368('0x59')]['Text'];_0x283f06[_0x7368('0x59')][_0x7368('0x80')]=_0x11d4d9['body'][_0x7368('0x87')];break;case _0x7368('0x88'):_0x283f06[_0x7368('0x59')][_0x7368('0x7d')]='+'+_0x11d4d9['body'][_0x7368('0x89')][0x0][_0x7368('0x7d')];_0x283f06['body'][_0x7368('0x59')]=_0x11d4d9[_0x7368('0x59')][_0x7368('0x89')][0x0][_0x7368('0x83')];_0x283f06[_0x7368('0x59')][_0x7368('0x80')]=_0x11d4d9[_0x7368('0x59')]['results'][0x0]['messageId'];break;case _0x7368('0x8a'):_0x283f06[_0x7368('0x59')]['from']=_0x11d4d9[_0x7368('0x59')][_0x7368('0x8b')];_0x283f06[_0x7368('0x59')][_0x7368('0x59')]=_0x11d4d9[_0x7368('0x59')][_0x7368('0x8c')][_0x7368('0x25')];break;case'clickatell':_0x283f06[_0x7368('0x59')][_0x7368('0x7d')]=_0x11d4d9[_0x7368('0x59')]['fromNumber'];_0x283f06[_0x7368('0x59')][_0x7368('0x59')]=_0x11d4d9[_0x7368('0x59')][_0x7368('0x83')];_0x283f06[_0x7368('0x59')]['messageId']=_0x11d4d9[_0x7368('0x59')]['replyMessageId'];break;case'bandwidth':_0x283f06[_0x7368('0x59')][_0x7368('0x80')]=_0x11d4d9[_0x7368('0x59')][0x0][_0x7368('0x25')]['id'];_0x283f06[_0x7368('0x59')][_0x7368('0x7d')]=_0x11d4d9['body'][0x0][_0x7368('0x25')][_0x7368('0x7d')];_0x283f06[_0x7368('0x59')][_0x7368('0x59')]=_0x11d4d9[_0x7368('0x59')][0x0]['message']['text'];break;case _0x7368('0x8d'):_0x283f06['body'][_0x7368('0x7d')]=_0x11d4d9[_0x7368('0x59')][_0x7368('0x7d')];_0x283f06[_0x7368('0x59')]['body']=_0x11d4d9[_0x7368('0x59')][_0x7368('0x25')];_0x283f06['body'][_0x7368('0x80')]=_0x11d4d9[_0x7368('0x59')]['refid'];break;}}if(_0x283f06[_0x7368('0x59')]['id']){delete _0x283f06[_0x7368('0x59')]['id'];}if(_[_0x7368('0x8e')](_0x283f06[_0x7368('0x59')][_0x7368('0x7d')])){throw new db[(_0x7368('0x73'))][(_0x7368('0x74'))](_0x7368('0x8f'));}if(_[_0x7368('0x8e')](_0x283f06[_0x7368('0x59')]['body'])||_0x283f06[_0x7368('0x59')]['body']===''){throw new db['Sequelize'][(_0x7368('0x74'))](_0x7368('0x90'));}if(_['isNil'](_0x283f06[_0x7368('0x59')]['mapKey'])){throw new db[(_0x7368('0x73'))][(_0x7368('0x74'))](_0x7368('0x91')+_0x567e76);}if(!_[_0x7368('0x92')](_0x567e76,_0x283f06[_0x7368('0x59')][_0x7368('0x93')])){throw new db[(_0x7368('0x73'))][(_0x7368('0x74'))](_0x7368('0x94')+_0x567e76);}_0x422c55[_0x283f06[_0x7368('0x59')][_0x7368('0x93')]]=_0x283f06[_0x7368('0x59')]['from'];return db[_0x7368('0x95')][_0x7368('0x57')]({'where':{'id':_0x283f06[_0x7368('0x70')][_0x7368('0x7a')]},'include':[{'model':db['CmContact'],'as':_0x7368('0x96'),'where':_0x422c55,'limit':0x1,'order':[['updatedAt',_0x7368('0x97')]]}]});})[_0x7368('0x1d')](handleEntityNotFound(_0x1aad66,null))[_0x7368('0x1d')](function(_0x23bf8e){if(_0x23bf8e){_0x283f06[_0x7368('0x98')]=_['omit'](_0x23bf8e,['Contacts']);if(_0x23bf8e[_0x7368('0x96')][_0x7368('0x47')]){return _0x23bf8e['Contacts'][0x0];}var _0x1b2507=_[_0x7368('0x99')](_0x283f06[_0x7368('0x59')],{'firstName':_0x283f06[_0x7368('0x59')][_0x7368('0x7d')],'ListId':_0x23bf8e['id']});_0x1b2507[_0x283f06['body'][_0x7368('0x93')]]=_0x283f06[_0x7368('0x59')][_0x7368('0x7d')];return db[_0x7368('0x72')][_0x7368('0x58')](_0x1b2507,{'fields':_0x518793,'raw':!![]});}})[_0x7368('0x1d')](handleEntityNotFound(_0x1aad66,null))[_0x7368('0x1d')](function(_0x41d3c3){if(_0x41d3c3){_0x283f06['contact']=_0x41d3c3;var _0x286282={'ContactId':_0x41d3c3['id'],'phone':_0x283f06[_0x7368('0x59')][_0x7368('0x7d')],'SmsAccountId':_0x11d4d9['params']['id']};var _0x125aec={'ContactId':_0x41d3c3['id'],'SmsAccountId':_0x11d4d9[_0x7368('0x54')]['id'],'closed':![]};return db[_0x7368('0x9a')][_0x7368('0x57')]({'where':_0x125aec})[_0x7368('0x1d')](function(_0x7fcbb){if(_0x7fcbb){return[_0x7fcbb,![]];}return db[_0x7368('0x9a')][_0x7368('0x58')](_0x286282)[_0x7368('0x1d')](function(_0xb0980e){return[_0xb0980e,!![]];});});}})[_0x7368('0x9b')](function(_0x36b9e2,_0x22ea33){_0x283f06[_0x7368('0x9c')]=_0x36b9e2[_0x7368('0x31')]({'plain':!![]});_0x283f06[_0x7368('0x9c')][_0x7368('0x9d')]=![];if(_0x22ea33){if(_0x283f06['account'][_0x7368('0x9e')]){_0x283f06[_0x7368('0x71')][_0x7368('0x9f')]({'id':0x0,'priority':_0x283f06[_0x7368('0x71')][_0x7368('0x47')]+0x1,'app':'close','appdata':_0x7368('0xa0'),'interval':_0x7368('0xa1')});}_0x283f06['interaction'][_0x7368('0x9d')]=!![];}return db[_0x7368('0xa2')]['create']({'phone':_0x283f06[_0x7368('0x59')][_0x7368('0x7d')],'messageId':_0x283f06[_0x7368('0x59')][_0x7368('0x80')],'body':_0x283f06[_0x7368('0x59')][_0x7368('0x59')],'SmsAccountId':_0x11d4d9[_0x7368('0x54')]['id'],'SmsInteractionId':_0x36b9e2['id'],'direction':'in','ContactId':_0x36b9e2[_0x7368('0xa3')],'AttachmentId':_0x283f06['body'][_0x7368('0xa4')]});})[_0x7368('0x1d')](function(_0xbfed47){_0x283f06[_0x7368('0x25')]=_0xbfed47;if(_0x283f06['interaction'][_0x7368('0xa5')]){return db['User'][_0x7368('0x57')]({'attributes':['id',_0x7368('0x36')],'where':{'id':_0x283f06['interaction']['UserId']}})['then'](function(_0xb197b6){if(_0xb197b6){_0x283f06[_0x7368('0x71')]['unshift']({'id':0x0,'priority':0x0,'app':_0x7368('0xa6'),'appdata':_0xb197b6['name']+','+(_0x283f06['account'][_0x7368('0xa7')]||0xa),'interval':_0x7368('0xa1')});}return respondWithRpcPromise(_0x7368('0xa8'),_0x7368('0xa9'),_0x283f06);});}return respondWithRpcPromise(_0x7368('0xa8'),'startRouting',_0x283f06);})[_0x7368('0x1d')](function(_0x3a1c0f){if(_0x3a1c0f){var _0x325b8b=0xc8;var _0x27ee62=_0x7368('0xaa');logger[_0x7368('0x1e')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x27ee62,_0x325b8b,_0x7368('0xab'));logger[_0x7368('0x20')](_0x7368('0xac'),_0x27ee62,_0x325b8b,_0x7368('0xab'),JSON[_0x7368('0xad')](_0x3a1c0f));if(_0x283f06['account'][_0x7368('0x3f')]===_0x7368('0x7c')){return _0x1aad66[_0x7368('0x29')](_0x325b8b)['set'](_0x7368('0xae'),_0x7368('0xaf'))[_0x7368('0x37')](_0x7368('0xb0'));}else{return _0x1aad66[_0x7368('0x29')](_0x325b8b)[_0x7368('0x2f')](_0x3a1c0f);}}})[_0x7368('0x27')](handleError(_0x1aad66,null));};exports['addApplications']=function(_0x381948,_0x4dc9ea){var _0x3b72de=_0x381948[_0x7368('0x54')]['id'];var _0x2d38f3=_0x381948[_0x7368('0x59')];var _0x39861c=0xc8;var _0x3a0600=null;return db['sequelize']['transaction']({'isolationLevel':db[_0x7368('0xb1')][_0x7368('0xb2')]['ISOLATION_LEVELS'][_0x7368('0xb3')]},function(_0x3c8c4e){return db[_0x7368('0x3c')][_0x7368('0xb4')]({'where':{'id':_0x3b72de},'transaction':_0x3c8c4e})[_0x7368('0x1d')](function(_0x4724bb){if(_0x4724bb){return db['SmsApplication']['destroy']({'where':{'SmsAccountId':_0x3b72de},'transaction':_0x3c8c4e})['then'](function(){var _0x45bfd5=_[_0x7368('0x3b')](_0x2d38f3,function(_0x54e0cc){_0x54e0cc[_0x7368('0x66')]=_0x3b72de;return _0x54e0cc;});return db[_0x7368('0xb5')]['bulkCreate'](_0x45bfd5,{'transaction':_0x3c8c4e});});}else{_0x39861c=0x194;_0x3a0600=[];}});})[_0x7368('0x1d')](function(){if(_0x39861c!==0x194){return db['SmsApplication']['findAndCountAll']({'where':{'SmsAccountId':_0x3b72de},'order':_0x7368('0xb6')})[_0x7368('0x1d')](function(_0x2cb1d6){_0x3a0600=_0x2cb1d6;});}})[_0x7368('0x27')](function(_0xac854f){_0x39861c=0x1f4;logger[_0x7368('0x23')](_0xac854f['stack']);if(_0xac854f[_0x7368('0x36')]){delete _0xac854f[_0x7368('0x36')];}_0x3a0600=_0xac854f;})['finally'](function(){if(_0x3a0600===null){_0x4dc9ea[_0x7368('0x28')](_0x39861c);}else{if(_0x39861c===0x1f4){_0x4dc9ea[_0x7368('0x29')](_0x39861c)[_0x7368('0x37')](_0x3a0600);}else{_0x4dc9ea[_0x7368('0x29')](_0x39861c)['json'](_0x3a0600);}}});};exports[_0x7368('0xb7')]=function(_0x58d22a,_0xdcd15a,_0x4baa80){var _0x3b53aa={};var _0x2a652c={};var _0x39ad4b;var _0x5258d4;return db[_0x7368('0x3c')][_0x7368('0xb4')]({'where':{'id':_0x58d22a[_0x7368('0x54')]['id']}})[_0x7368('0x1d')](handleEntityNotFound(_0xdcd15a,null))[_0x7368('0x1d')](function(_0x149085){if(_0x149085){_0x39ad4b=_0x149085;_0x2a652c[_0x7368('0x44')]=_[_0x7368('0x41')](db[_0x7368('0xb5')]['rawAttributes']);_0x2a652c[_0x7368('0x42')]=_[_0x7368('0x41')](_0x58d22a[_0x7368('0x42')]);_0x2a652c[_0x7368('0x4c')]=_['intersection'](_0x2a652c['model'],_0x2a652c[_0x7368('0x42')]);_0x3b53aa[_0x7368('0x45')]=_[_0x7368('0x43')](_0x2a652c['model'],qs[_0x7368('0x46')](_0x58d22a[_0x7368('0x42')][_0x7368('0x46')]));_0x3b53aa['attributes']=_0x3b53aa[_0x7368('0x45')][_0x7368('0x47')]?_0x3b53aa[_0x7368('0x45')]:_0x2a652c[_0x7368('0x44')];_0x3b53aa[_0x7368('0x49')]=qs[_0x7368('0x4a')](_0x58d22a[_0x7368('0x42')]['sort']);_0x3b53aa[_0x7368('0x4b')]=qs[_0x7368('0x4c')](_[_0x7368('0x65')](_0x58d22a['query'],_0x2a652c[_0x7368('0x4c')]));if(_0x58d22a[_0x7368('0x42')][_0x7368('0x4d')]){_0x3b53aa[_0x7368('0x4b')]=_[_0x7368('0x4e')](_0x3b53aa[_0x7368('0x4b')],{'$or':_['map'](_0x3b53aa['attributes'],function(_0x27159f){var _0x3d2acb={};_0x3d2acb[_0x27159f]={'$like':'%'+_0x58d22a[_0x7368('0x42')][_0x7368('0x4d')]+'%'};return _0x3d2acb;})});}_0x3b53aa=_['merge']({},_0x3b53aa,_0x58d22a[_0x7368('0x50')]);return _0x39ad4b[_0x7368('0xb7')](_0x3b53aa);}})[_0x7368('0x1d')](function(_0x42b5c6){if(_0x42b5c6){_0x5258d4=_0x42b5c6[_0x7368('0x47')];if(!_0x58d22a['query'][_0x7368('0x48')](_0x7368('0x64'))){_0x3b53aa[_0x7368('0x2c')]=qs[_0x7368('0x2c')](_0x58d22a[_0x7368('0x42')][_0x7368('0x2c')]);_0x3b53aa[_0x7368('0x2b')]=qs['offset'](_0x58d22a[_0x7368('0x42')][_0x7368('0x2b')]);}return _0x39ad4b[_0x7368('0xb7')](_0x3b53aa);}})['then'](function(_0x34900d){if(_0x34900d){return _0x34900d?{'count':_0x5258d4,'rows':_0x34900d}:null;}})[_0x7368('0x1d')](respondWithResult(_0xdcd15a,null))['catch'](handleError(_0xdcd15a,null));};exports[_0x7368('0xb8')]=function(_0x22ca78,_0x5751e7,_0x17dc2c){var _0x823a01={'raw':![],'where':{}};var _0x27bc8f={};var _0x3c4997={'count':0x0,'rows':[]};return db[_0x7368('0x3c')]['findOne']({'where':{'id':_0x22ca78[_0x7368('0x54')]['id']}})[_0x7368('0x1d')](handleEntityNotFound(_0x5751e7,null))['then'](function(_0x554a13){if(_0x554a13){_0x27bc8f['model']=_[_0x7368('0x41')](db[_0x7368('0x9a')][_0x7368('0x3d')]);_0x27bc8f['query']=_[_0x7368('0x41')](_0x22ca78[_0x7368('0x42')]);_0x27bc8f[_0x7368('0x4c')]=_['intersection'](_0x27bc8f['model'],_0x27bc8f[_0x7368('0x42')]);_0x823a01['attributes']=_['intersection'](_0x27bc8f[_0x7368('0x44')],qs[_0x7368('0x46')](_0x22ca78['query'][_0x7368('0x46')]));_0x823a01['attributes']=_0x823a01['attributes'][_0x7368('0x47')]?_0x823a01['attributes']:_0x27bc8f['model'];if(!_0x22ca78['query'][_0x7368('0x48')](_0x7368('0x64'))){_0x823a01['limit']=qs[_0x7368('0x2c')](_0x22ca78['query'][_0x7368('0x2c')]);_0x823a01['offset']=qs[_0x7368('0x2b')](_0x22ca78[_0x7368('0x42')]['offset']);}_0x823a01[_0x7368('0x49')]=qs[_0x7368('0x4a')](_0x22ca78[_0x7368('0x42')][_0x7368('0x4a')]);_0x823a01['where']=qs['filters'](_[_0x7368('0x65')](_0x22ca78[_0x7368('0x42')],_0x27bc8f[_0x7368('0x4c')]));_0x823a01[_0x7368('0x4b')][_0x7368('0x66')]=_0x554a13['id'];if(_0x22ca78[_0x7368('0x42')][_0x7368('0x4d')]){_0x823a01[_0x7368('0x4b')]=_['merge'](_0x823a01['where'],{'$or':_['map'](_0x823a01['attributes'],function(_0x1136fd){var _0x35dbbf={};_0x35dbbf[_0x1136fd]={'$like':'%'+_0x22ca78[_0x7368('0x42')]['filter']+'%'};return _0x35dbbf;})});}_0x823a01=_[_0x7368('0x4e')]({},_0x823a01,_0x22ca78[_0x7368('0x50')]);return db[_0x7368('0x9a')][_0x7368('0x2e')]({'where':_0x823a01[_0x7368('0x4b')]})[_0x7368('0x1d')](function(_0x5de569){_0x3c4997[_0x7368('0x2e')]=_0x5de569;if(_0x22ca78[_0x7368('0x42')][_0x7368('0x55')]){_0x823a01[_0x7368('0x56')]=[{'model':db[_0x7368('0x72')],'as':_0x7368('0xb9'),'required':![]},{'model':db[_0x7368('0xba')],'as':_0x7368('0xbb'),'attributes':[_0x7368('0x36'),'fullname',_0x7368('0xbc')],'required':![]},{'model':db[_0x7368('0xbd')],'as':_0x7368('0xbe'),'attributes':['id',_0x7368('0x36'),_0x7368('0xbf')],'where':_0x22ca78[_0x7368('0x42')]['tag']?{'id':_0x22ca78[_0x7368('0x42')][_0x7368('0xc0')]}:undefined,'required':_0x22ca78[_0x7368('0x42')]['tag']?!![]:![]}];}return db[_0x7368('0x9a')][_0x7368('0x51')](_0x823a01);})[_0x7368('0x1d')](function(_0x1c2205){_0x3c4997[_0x7368('0x52')]=_0x1c2205;return _0x3c4997;});}})[_0x7368('0x1d')](respondWithFilteredResult(_0x5751e7,_0x823a01))[_0x7368('0x27')](handleError(_0x5751e7,null));};exports[_0x7368('0x37')]=function(_0x4f79a8,_0x6b5411,_0x3d416a){var _0x4a8976,_0x407230,_0x42ec1b;if(_[_0x7368('0x8e')](_0x4f79a8['body'][_0x7368('0x59')])||_0x4f79a8[_0x7368('0x59')][_0x7368('0x59')]===''){throw new db[(_0x7368('0x73'))][(_0x7368('0x74'))](_0x7368('0x90'));}if(_[_0x7368('0x8e')](_0x4f79a8['body']['to'])){throw new db[(_0x7368('0x73'))][(_0x7368('0x74'))](_0x7368('0xc1'));}_0x4a8976=_0x4f79a8['body']['to'];return db[_0x7368('0x3c')][_0x7368('0x57')]({'where':{'id':_0x4f79a8['params']['id']},'include':[{'model':db[_0x7368('0x95')],'as':_0x7368('0xc2'),'include':[{'model':db[_0x7368('0x72')],'as':_0x7368('0x96'),'where':{'mobile':_0x4a8976},'limit':0x1,'order':[['updatedAt',_0x7368('0x97')]]}]}]})[_0x7368('0x1d')](handleEntityNotFound(_0x6b5411,null))[_0x7368('0x1d')](function(_0x448618){if(_0x448618&&_0x448618[_0x7368('0xc2')]){_0x407230=_0x448618['get']({'plain':!![]});if(_0x407230['List']&&_0x407230[_0x7368('0xc2')][_0x7368('0x96')][_0x7368('0x47')]){return _0x407230[_0x7368('0xc2')][_0x7368('0x96')][0x0];}return db[_0x7368('0x72')]['create'](_['defaults'](_0x4f79a8[_0x7368('0x59')],{'firstName':_0x4a8976,'mobile':_0x4a8976,'phone':_0x4a8976,'ListId':_0x407230['ListId']}));}})['then'](handleEntityNotFound(_0x6b5411,null))[_0x7368('0x1d')](function(_0xf954d6){if(_0xf954d6){_0x42ec1b=_0xf954d6;return db[_0x7368('0x9a')][_0x7368('0x57')]({'where':{'ContactId':_0x42ec1b['id'],'closed':![],'SmsAccountId':_0x407230['id']}})[_0x7368('0x1d')](function(_0x2cdc99){if(_0x2cdc99){return[_0x2cdc99,![]];}return db[_0x7368('0x9a')][_0x7368('0x58')]({'UserId':_0x4f79a8[_0x7368('0x5a')]['id'],'ContactId':_0x42ec1b['id'],'SmsAccountId':_0x407230['id'],'phone':_0x4a8976,'firstMsgDirection':_0x7368('0xc3'),'Messages':[_[_0x7368('0x4e')](_0x4f79a8['body'],{'read':![],'body':_0x4f79a8[_0x7368('0x59')][_0x7368('0x59')],'phone':_0x4a8976,'SmsAccountId':_0x407230['id'],'UserId':_0x4f79a8[_0x7368('0x5a')]['id'],'ContactId':_0x42ec1b['id']})]},{'include':[{'model':db[_0x7368('0xa2')],'as':_0x7368('0xc4')}]})[_0x7368('0x1d')](function(_0x13637b){return[_0x13637b,!![]];});});}})[_0x7368('0x9b')](function(_0x3d2a55,_0x3e6b8a){if(_0x3e6b8a){return _0x3d2a55;}return db[_0x7368('0xa2')][_0x7368('0x58')](_[_0x7368('0x4e')](_0x4f79a8['body'],{'read':![],'body':_0x4f79a8[_0x7368('0x59')][_0x7368('0x59')],'phone':_0x4a8976,'SmsAccountId':_0x407230['id'],'SmsInteractionId':_0x3d2a55['id'],'UserId':_0x4f79a8['user']['id'],'ContactId':_0x42ec1b['id']}))['then'](function(_0x57dcc5){_0x3d2a55[_0x7368('0xc5')][_0x7368('0xc4')]=[];_0x3d2a55[_0x7368('0xc5')][_0x7368('0xc4')][_0x7368('0x9f')](_0x57dcc5[_0x7368('0xc5')]);return _0x3d2a55;});})[_0x7368('0x1d')](respondWithResult(_0x6b5411,null))['catch'](handleError(_0x6b5411,null));};exports[_0x7368('0x29')]=function(_0x34355f,_0x157dde,_0x2a8a12){if(_0x34355f[_0x7368('0x59')]['id']){delete _0x34355f[_0x7368('0x59')]['id'];}var _0x4bc018,_0x431f59,_0x2a8b5d;return db[_0x7368('0x3c')][_0x7368('0x57')]({'where':{'id':_0x34355f[_0x7368('0x54')]['id']}})[_0x7368('0x1d')](handleEntityNotFound(_0x157dde,null))[_0x7368('0x1d')](function(_0x1ad110){if(_0x1ad110){_0x2a8b5d=_0x1ad110;logger[_0x7368('0x20')](_0x7368('0x21'),_0x7368('0x29'),_0x7368('0xc6'),_0x1ad110[_0x7368('0x3f')],util[_0x7368('0xc7')](_0x34355f[_0x7368('0x59')],{'showHidden':![],'depth':null}));switch(_0x1ad110[_0x7368('0x3f')]){case _0x7368('0x82'):if(_0x34355f['body'][_0x7368('0xc8')]&&_0x34355f['body'][_0x7368('0x29')]){_0x431f59=_0x34355f[_0x7368('0x59')][_0x7368('0x29')];return db[_0x7368('0xa2')][_0x7368('0x57')]({'where':{'messageId':_0x34355f[_0x7368('0x59')][_0x7368('0xc8')]}});}break;case _0x7368('0xc9'):if(_0x34355f[_0x7368('0x59')][_0x7368('0xca')]&&_0x34355f[_0x7368('0x59')]['statusInt']){_0x431f59=_0x34355f[_0x7368('0x59')]['statusInt'];return db[_0x7368('0xa2')]['find']({'where':{'messageId':_0x34355f['body'][_0x7368('0xca')]}});}break;case _0x7368('0x84'):if(_0x34355f[_0x7368('0x59')][_0x7368('0x85')]&&_0x34355f['body']['status_code']){_0x431f59=_0x34355f[_0x7368('0x59')][_0x7368('0xcb')];return db[_0x7368('0xa2')][_0x7368('0x57')]({'where':{'messageId':_0x34355f[_0x7368('0x59')][_0x7368('0x85')]}});}break;case _0x7368('0x88'):var _0x273d3a=_0x34355f[_0x7368('0x59')][_0x7368('0x89')][0x0];if(_0x273d3a['messageId']&&_0x273d3a['status']['groupName']===_0x7368('0xcc')){_0x431f59=_0x273d3a[_0x7368('0x29')][_0x7368('0xcd')];return db[_0x7368('0xa2')][_0x7368('0x57')]({'where':{'messageId':_0x273d3a[_0x7368('0x80')]}});}break;case _0x7368('0xce'):if(_0x34355f[_0x7368('0x59')][_0x7368('0x80')]&&_0x34355f[_0x7368('0x59')][_0x7368('0x29')]){_0x431f59=_0x34355f['body'][_0x7368('0x29')];return db[_0x7368('0xa2')][_0x7368('0x57')]({'where':{'messageId':_0x34355f[_0x7368('0x59')]['messageId']}});}break;case'bandwidth':if(_0x34355f[_0x7368('0x59')][0x0][_0x7368('0x25')]['id']){_0x431f59=_0x34355f['body'][0x0][_0x7368('0x3f')];return db['SmsMessage'][_0x7368('0x57')]({'where':{'messageId':_0x34355f[_0x7368('0x59')][0x0]['message']['id']}});}break;case _0x7368('0x8d'):if(_0x34355f[_0x7368('0x59')][_0x7368('0xcf')]&&_0x34355f[_0x7368('0x59')]['status']){_0x431f59=_0x34355f[_0x7368('0x59')][_0x7368('0x29')];return db['SmsMessage'][_0x7368('0x57')]({'where':{'messageId':_0x34355f['body']['redif']}});}break;}}})[_0x7368('0x1d')](handleEntityNotFound(_0x157dde,null))[_0x7368('0x1d')](function(_0x6b9b36){if(_0x6b9b36){_0x4bc018=_0x6b9b36;switch(_0x2a8b5d[_0x7368('0x3f')]){case _0x7368('0x82'):if(_0x431f59===_0x7368('0xcc')){return _0x4bc018['update']({'read':!![]});}else{logger[_0x7368('0x23')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x7368('0x29'),_0x7368('0x82'),util[_0x7368('0xc7')](_0x34355f[_0x7368('0x59')],{'showHidden':![],'depth':null}));}break;case _0x7368('0xc9'):if(_0x431f59==='1'){return _0x4bc018[_0x7368('0x5f')]({'read':!![]});}else{logger['error'](_0x7368('0x21'),_0x7368('0x29'),_0x7368('0x82'),util[_0x7368('0xc7')](_0x34355f['body'],{'showHidden':![],'depth':null}));}break;case'clicksend':if(!_0x34355f['body']['error_code']&&_0x431f59>=0xc8&&_0x431f59<=0xce){return _0x4bc018[_0x7368('0x5f')]({'read':!![]});}else{logger[_0x7368('0x23')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x7368('0x29'),_0x7368('0x84'),util[_0x7368('0xc7')](_0x34355f[_0x7368('0x59')],{'showHidden':![],'depth':null}));}break;case _0x7368('0x88'):var _0x44922b=_0x34355f['body'][_0x7368('0x89')][0x0];if(_0x44922b[_0x7368('0x29')][_0x7368('0xcd')]==='DELIVERED'){return _0x4bc018[_0x7368('0x5f')]({'read':!![]});}else{logger[_0x7368('0x23')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x7368('0x29'),_0x7368('0x88'),util[_0x7368('0xc7')](_0x34355f[_0x7368('0x59')],{'showHidden':![],'depth':null}));}break;case _0x7368('0xce'):if(_0x431f59=='DELIVERED_TO_GATEWAY'||_0x431f59=='RECEIVED_BY_RECIPIENT'){return _0x4bc018['update']({'read':!![]});}else{logger[_0x7368('0x23')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x7368('0x29'),_0x7368('0xce'),util[_0x7368('0xc7')](_0x34355f['body'],{'showHidden':![],'depth':null}));}break;case'bandwidth':if(_0x431f59=='message-delivered'){return _0x4bc018[_0x7368('0x5f')]({'read':!![]});}else{logger[_0x7368('0x23')](_0x7368('0x21'),'status',_0x7368('0xd0'),util[_0x7368('0xc7')](_0x34355f[_0x7368('0x59')],{'showHidden':![],'depth':null}));}break;case'intelepeer':if(_0x431f59===_0x7368('0xd1')||_0x431f59===_0x7368('0xd2')){return _0x4bc018[_0x7368('0x5f')]({'read':!![]});}else{logger['error'](_0x7368('0x21'),'status',_0x7368('0x8d'),util[_0x7368('0xc7')](_0x34355f[_0x7368('0x59')],{'showHidden':![],'depth':null}));}break;}return _0x4bc018;}})[_0x7368('0x1d')](respondWithResult(_0x157dde,null))[_0x7368('0x27')](handleError(_0x157dde,null));};exports[_0x7368('0xd3')]=function(_0x1f8f06,_0x4bb43a,_0x5174c5){var _0x468529,_0x305d90,_0x4e79e9;return db[_0x7368('0x3c')][_0x7368('0x57')]({'where':{'id':_0x1f8f06[_0x7368('0x54')]['id']}})['then'](handleEntityNotFound(_0x4bb43a,null))[_0x7368('0x1d')](function(_0x5f182b){if(_0x5f182b){_0x4e79e9=_0x5f182b;logger[_0x7368('0x20')](_0x7368('0x21'),_0x7368('0x29'),_0x7368('0xc6'),_0x5f182b[_0x7368('0x3f')],util[_0x7368('0xc7')](_0x1f8f06[_0x7368('0x42')],{'showHidden':![],'depth':null}));switch(_0x5f182b['type']){case _0x7368('0x8a'):if(_0x1f8f06[_0x7368('0x42')][_0x7368('0xd4')]&&_0x1f8f06[_0x7368('0x42')][_0x7368('0xd5')]){_0x305d90=_0x1f8f06[_0x7368('0x42')][_0x7368('0xd5')];return db['SmsMessage'][_0x7368('0x57')]({'where':{'messageId':_0x1f8f06[_0x7368('0x42')][_0x7368('0xd4')]}});}break;}}})['then'](handleEntityNotFound(_0x4bb43a,null))[_0x7368('0x1d')](function(_0x222d1b){if(_0x222d1b){_0x468529=_0x222d1b;switch(_0x4e79e9[_0x7368('0x3f')]){case _0x7368('0x8a'):if(_0x305d90==='2'||_0x305d90==='6'){return _0x468529[_0x7368('0x5f')]({'read':!![]});}else{logger[_0x7368('0x23')](_0x7368('0x21'),_0x7368('0x29'),'csc',util[_0x7368('0xc7')](_0x1f8f06[_0x7368('0x42')],{'showHidden':![],'depth':null}));};break;}return _0x468529;}})[_0x7368('0x1d')](respondWithResult(_0x4bb43a,null))[_0x7368('0x27')](handleError(_0x4bb43a,null));};exports[_0x7368('0xd6')]=function(_0x561d72,_0x584681,_0x1389e3){return db[_0x7368('0x3c')][_0x7368('0x57')]({'where':{'id':_0x561d72[_0x7368('0x54')]['id']}})[_0x7368('0x1d')](handleEntityNotFound(_0x584681,null))['then'](function(_0x4c5281){if(_0x4c5281){return _0x4c5281[_0x7368('0xd6')](_0x561d72[_0x7368('0x59')][_0x7368('0x68')],_[_0x7368('0xd7')](_0x561d72[_0x7368('0x59')],['ids','id'])||{})['spread'](function(_0x142cf6){for(var _0x456e51=0x0;_0x456e51<_0x561d72['body'][_0x7368('0x68')][_0x7368('0x47')];_0x456e51+=0x1){socket[_0x7368('0xd8')]('userSmsAccount:save',{'UserId':Number(_0x561d72[_0x7368('0x59')]['ids'][_0x456e51]),'SmsAccountId':Number(_0x561d72[_0x7368('0x54')]['id'])});}return _0x142cf6;});}})[_0x7368('0x1d')](respondWithResult(_0x584681,null))['catch'](handleError(_0x584681,null));};exports[_0x7368('0xd9')]=function(_0x1be811,_0x52030f,_0x63c997){return db[_0x7368('0x3c')][_0x7368('0x57')]({'where':{'id':_0x1be811[_0x7368('0x54')]['id']}})[_0x7368('0x1d')](handleEntityNotFound(_0x52030f,null))[_0x7368('0x1d')](function(_0x1e3586){if(_0x1e3586){return _0x1e3586[_0x7368('0xd9')](_0x1be811['query']['ids'])[_0x7368('0x1d')](function(){if(_['isArray'](_0x1be811['query'][_0x7368('0x68')])){for(var _0x45833d=0x0;_0x45833d<_0x1be811['query']['ids'][_0x7368('0x47')];_0x45833d+=0x1){socket['emit']('userSmsAccount:remove',{'UserId':Number(_0x1be811[_0x7368('0x42')][_0x7368('0x68')][_0x45833d]),'SmsAccountId':Number(_0x1be811[_0x7368('0x54')]['id'])});}}else{socket[_0x7368('0xd8')](_0x7368('0xda'),{'UserId':Number(_0x1be811[_0x7368('0x42')][_0x7368('0x68')]),'SmsAccountId':Number(_0x1be811[_0x7368('0x54')]['id'])});}});}})['then'](respondWithStatusCode(_0x52030f,null))[_0x7368('0x27')](handleError(_0x52030f,null));};exports[_0x7368('0xdb')]=function(_0x584b73,_0x49b09f,_0x202c0d){var _0x2f9129={};var _0x17373e={};var _0x4de986;var _0x2fc6eb;return db[_0x7368('0x3c')]['findOne']({'where':{'id':_0x584b73[_0x7368('0x54')]['id']}})[_0x7368('0x1d')](handleEntityNotFound(_0x49b09f,null))[_0x7368('0x1d')](function(_0x4dcee1){if(_0x4dcee1){_0x4de986=_0x4dcee1;_0x17373e[_0x7368('0x44')]=_[_0x7368('0x41')](db[_0x7368('0xba')]['rawAttributes']);_0x17373e[_0x7368('0x42')]=_['keys'](_0x584b73[_0x7368('0x42')]);_0x17373e[_0x7368('0x4c')]=_[_0x7368('0x43')](_0x17373e['model'],_0x17373e[_0x7368('0x42')]);_0x2f9129[_0x7368('0x45')]=_[_0x7368('0x43')](_0x17373e['model'],qs[_0x7368('0x46')](_0x584b73[_0x7368('0x42')][_0x7368('0x46')]));_0x2f9129[_0x7368('0x45')]=_0x2f9129[_0x7368('0x45')]['length']?_0x2f9129[_0x7368('0x45')]:_0x17373e[_0x7368('0x44')];_0x2f9129['order']=qs[_0x7368('0x4a')](_0x584b73[_0x7368('0x42')][_0x7368('0x4a')]);_0x2f9129[_0x7368('0x4b')]=qs[_0x7368('0x4c')](_[_0x7368('0x65')](_0x584b73['query'],_0x17373e[_0x7368('0x4c')]));if(_0x584b73[_0x7368('0x42')]['filter']){_0x2f9129[_0x7368('0x4b')]=_['merge'](_0x2f9129['where'],{'$or':_[_0x7368('0x3b')](_0x2f9129[_0x7368('0x45')],function(_0x313337){var _0x299b15={};_0x299b15[_0x313337]={'$like':'%'+_0x584b73['query'][_0x7368('0x4d')]+'%'};return _0x299b15;})});}_0x2f9129=_[_0x7368('0x4e')]({},_0x2f9129,_0x584b73[_0x7368('0x50')]);return _0x4de986['getAgents'](_0x2f9129);}})[_0x7368('0x1d')](function(_0x14dd0f){if(_0x14dd0f){_0x2fc6eb=_0x14dd0f[_0x7368('0x47')];if(!_0x584b73['query'][_0x7368('0x48')](_0x7368('0x64'))){_0x2f9129[_0x7368('0x2c')]=qs['limit'](_0x584b73[_0x7368('0x42')][_0x7368('0x2c')]);_0x2f9129[_0x7368('0x2b')]=qs['offset'](_0x584b73['query'][_0x7368('0x2b')]);}return _0x4de986[_0x7368('0xdb')](_0x2f9129);}})[_0x7368('0x1d')](function(_0x219fc8){if(_0x219fc8){return _0x219fc8?{'count':_0x2fc6eb,'rows':_0x219fc8}:null;}})[_0x7368('0x1d')](respondWithResult(_0x49b09f,null))[_0x7368('0x27')](handleError(_0x49b09f,null));};
\ No newline at end of file
index 5a71bc3..22795d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb535=['events','../../mysqldb','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xb535,0x12c));var _0x5b53=function(_0x481bf7,_0x437f69){_0x481bf7=_0x481bf7-0x0;var _0x461787=_0xb535[_0x481bf7];return _0x461787;};'use strict';var EventEmitter=require(_0x5b53('0x0'));var SmsAccount=require(_0x5b53('0x1'))['db']['SmsAccount'];var SmsAccountEvents=new EventEmitter();SmsAccountEvents[_0x5b53('0x2')](0x0);var events={'afterCreate':_0x5b53('0x3'),'afterUpdate':_0x5b53('0x4'),'afterDestroy':_0x5b53('0x5')};function emitEvent(_0x106a3c){return function(_0x3dade5,_0x4f50ce,_0x4fbd7a){SmsAccountEvents[_0x5b53('0x6')](_0x106a3c+':'+_0x3dade5['id'],_0x3dade5);SmsAccountEvents[_0x5b53('0x6')](_0x106a3c,_0x3dade5);_0x4fbd7a(null);};}for(var e in events){if(events[_0x5b53('0x7')](e)){var event=events[e];SmsAccount[_0x5b53('0x8')](e,emitEvent(event));}}module[_0x5b53('0x9')]=SmsAccountEvents;
\ No newline at end of file
+var _0xf64c=['setMaxListeners','save','remove','emit','hasOwnProperty','hook','exports','../../mysqldb','SmsAccount'];(function(_0x1c9a9a,_0x30a12f){var _0xca3172=function(_0x1d005d){while(--_0x1d005d){_0x1c9a9a['push'](_0x1c9a9a['shift']());}};_0xca3172(++_0x30a12f);}(_0xf64c,0x6a));var _0xcf64=function(_0x2b3d39,_0x480b6b){_0x2b3d39=_0x2b3d39-0x0;var _0xa51047=_0xf64c[_0x2b3d39];return _0xa51047;};'use strict';var EventEmitter=require('events');var SmsAccount=require(_0xcf64('0x0'))['db'][_0xcf64('0x1')];var SmsAccountEvents=new EventEmitter();SmsAccountEvents[_0xcf64('0x2')](0x0);var events={'afterCreate':_0xcf64('0x3'),'afterUpdate':'update','afterDestroy':_0xcf64('0x4')};function emitEvent(_0xc3c12f){return function(_0x1039db,_0x30b009,_0x45ab20){SmsAccountEvents['emit'](_0xc3c12f+':'+_0x1039db['id'],_0x1039db);SmsAccountEvents[_0xcf64('0x5')](_0xc3c12f,_0x1039db);_0x45ab20(null);};}for(var e in events){if(events[_0xcf64('0x6')](e)){var event=events[e];SmsAccount[_0xcf64('0x7')](e,emitEvent(event));}}module[_0xcf64('0x8')]=SmsAccountEvents;
\ No newline at end of file
index abb6d99..74bd9c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0729=['request-promise','path','rimraf','../../config/environment','./smsAccount.attributes','exports','define','SmsAccount','sms_accounts','util','../../config/logger','api','moment'];(function(_0x1f3aec,_0x24c18e){var _0x409f0d=function(_0x52b818){while(--_0x52b818){_0x1f3aec['push'](_0x1f3aec['shift']());}};_0x409f0d(++_0x24c18e);}(_0x0729,0x98));var _0x9072=function(_0x5ade4e,_0x1184e6){_0x5ade4e=_0x5ade4e-0x0;var _0x3ffe52=_0x0729[_0x5ade4e];return _0x3ffe52;};'use strict';var _=require('lodash');var util=require(_0x9072('0x0'));var logger=require(_0x9072('0x1'))(_0x9072('0x2'));var moment=require(_0x9072('0x3'));var BPromise=require('bluebird');var rp=require(_0x9072('0x4'));var fs=require('fs');var path=require(_0x9072('0x5'));var rimraf=require(_0x9072('0x6'));var config=require(_0x9072('0x7'));var attributes=require(_0x9072('0x8'));module[_0x9072('0x9')]=function(_0x1d04ac,_0x5d1585){return _0x1d04ac[_0x9072('0xa')](_0x9072('0xb'),attributes,{'tableName':_0x9072('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa2d5=['path','rimraf','../../config/environment','./smsAccount.attributes','exports','define','SmsAccount','sms_accounts','lodash','util','api','moment','request-promise'];(function(_0x4fc9e6,_0xc51915){var _0x551d28=function(_0x1a603b){while(--_0x1a603b){_0x4fc9e6['push'](_0x4fc9e6['shift']());}};_0x551d28(++_0xc51915);}(_0xa2d5,0x70));var _0x5a2d=function(_0x4e77a0,_0x14f1f4){_0x4e77a0=_0x4e77a0-0x0;var _0x3ad2e7=_0xa2d5[_0x4e77a0];return _0x3ad2e7;};'use strict';var _=require(_0x5a2d('0x0'));var util=require(_0x5a2d('0x1'));var logger=require('../../config/logger')(_0x5a2d('0x2'));var moment=require(_0x5a2d('0x3'));var BPromise=require('bluebird');var rp=require(_0x5a2d('0x4'));var fs=require('fs');var path=require(_0x5a2d('0x5'));var rimraf=require(_0x5a2d('0x6'));var config=require(_0x5a2d('0x7'));var attributes=require(_0x5a2d('0x8'));module[_0x5a2d('0x9')]=function(_0x557724,_0x5574e0){return _0x557724[_0x5a2d('0xa')](_0x5a2d('0xb'),attributes,{'tableName':_0x5a2d('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 092c9a2..558b376 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4bef=['defaults','socket.io-emitter','./smsAccount.socket','register','request','then','info','SmsAccount,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','SmsAccount','find','options','raw','where','attributes','include','map','model','ShowSmsAccount','debug','stringify','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x485b3e,_0x4e1670){var _0x1e1857=function(_0x4e955a){while(--_0x4e955a){_0x485b3e['push'](_0x485b3e['shift']());}};_0x1e1857(++_0x4e1670);}(_0x4bef,0x196));var _0xf4be=function(_0x4b2863,_0x494899){_0x4b2863=_0x4b2863-0x0;var _0x567d67=_0x4bef[_0x4b2863];return _0x567d67;};'use strict';var _=require(_0xf4be('0x0'));var util=require(_0xf4be('0x1'));var moment=require(_0xf4be('0x2'));var BPromise=require('bluebird');var rs=require(_0xf4be('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf4be('0x4'))['db'];var utils=require(_0xf4be('0x5'));var logger=require(_0xf4be('0x6'))(_0xf4be('0x7'));var config=require(_0xf4be('0x8'));var jayson=require(_0xf4be('0x9'));var client=jayson[_0xf4be('0xa')][_0xf4be('0xb')]({'port':0x232a});config['redis']=_[_0xf4be('0xc')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xf4be('0xd'))(new Redis(config['redis']));require(_0xf4be('0xe'))[_0xf4be('0xf')](socket);function respondWithRpcPromise(_0x25285e,_0x2d367f,_0x553b29){return new BPromise(function(_0x358759,_0x49fdca){return client[_0xf4be('0x10')](_0x25285e,_0x553b29)[_0xf4be('0x11')](function(_0x26056c){logger[_0xf4be('0x12')](_0xf4be('0x13'),_0x2d367f,_0xf4be('0x14'));logger['debug']('SmsAccount,\x20%s,\x20%s,\x20%s',_0x2d367f,_0xf4be('0x14'),JSON['stringify'](_0x26056c));if(_0x26056c[_0xf4be('0x15')]){if(_0x26056c[_0xf4be('0x15')][_0xf4be('0x16')]===0x1f4){logger[_0xf4be('0x15')]('SmsAccount,\x20%s,\x20%s',_0x2d367f,_0x26056c[_0xf4be('0x15')][_0xf4be('0x17')]);return _0x49fdca(_0x26056c['error'][_0xf4be('0x17')]);}logger['error'](_0xf4be('0x13'),_0x2d367f,_0x26056c[_0xf4be('0x15')]['message']);return _0x358759(_0x26056c['error'][_0xf4be('0x17')]);}else{logger[_0xf4be('0x12')]('SmsAccount,\x20%s,\x20%s',_0x2d367f,_0xf4be('0x14'));_0x358759(_0x26056c[_0xf4be('0x18')][_0xf4be('0x17')]);}})[_0xf4be('0x19')](function(_0x3d2791){logger[_0xf4be('0x15')]('SmsAccount,\x20%s,\x20%s',_0x2d367f,_0x3d2791);_0x49fdca(_0x3d2791);});});}exports['ShowSmsAccount']=function(_0x2dd7b7){var _0x25e2e5=this;return new Promise(function(_0x1ae355,_0x423fa8){return db[_0xf4be('0x1a')][_0xf4be('0x1b')]({'raw':_0x2dd7b7[_0xf4be('0x1c')]?_0x2dd7b7['options'][_0xf4be('0x1d')]===undefined?!![]:![]:!![],'where':_0x2dd7b7[_0xf4be('0x1c')]?_0x2dd7b7[_0xf4be('0x1c')][_0xf4be('0x1e')]||null:null,'attributes':_0x2dd7b7[_0xf4be('0x1c')]?_0x2dd7b7[_0xf4be('0x1c')][_0xf4be('0x1f')]||null:null,'include':_0x2dd7b7['options']?_0x2dd7b7[_0xf4be('0x1c')][_0xf4be('0x20')]?_[_0xf4be('0x21')](_0x2dd7b7['options']['include'],function(_0x556435){return{'model':db[_0x556435[_0xf4be('0x22')]],'as':_0x556435['as'],'attributes':_0x556435[_0xf4be('0x1f')],'include':_0x556435['include']?_[_0xf4be('0x21')](_0x556435[_0xf4be('0x20')],function(_0x4a40d0){return{'model':db[_0x4a40d0[_0xf4be('0x22')]],'as':_0x4a40d0['as'],'attributes':_0x4a40d0[_0xf4be('0x1f')],'include':_0x4a40d0[_0xf4be('0x20')]?_[_0xf4be('0x21')](_0x4a40d0[_0xf4be('0x20')],function(_0x1f0162){return{'model':db[_0x1f0162[_0xf4be('0x22')]],'as':_0x1f0162['as'],'attributes':_0x1f0162['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x4aef7b){logger[_0xf4be('0x12')](_0xf4be('0x23'),_0x2dd7b7);logger[_0xf4be('0x24')](_0xf4be('0x23'),_0x2dd7b7,JSON[_0xf4be('0x25')](_0x4aef7b));_0x1ae355(_0x4aef7b);})['catch'](function(_0xfcb51e){logger[_0xf4be('0x15')](_0xf4be('0x23'),_0xfcb51e[_0xf4be('0x17')],_0x2dd7b7);_0x423fa8(_0x25e2e5[_0xf4be('0x15')](0x1f4,_0xfcb51e[_0xf4be('0x17')]));});});};
\ No newline at end of file
+var _0x542e=['jayson/promise','defaults','redis','localhost','socket.io-emitter','./smsAccount.socket','register','then','info','SmsAccount,\x20%s,\x20%s','request\x20sent','SmsAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','ShowSmsAccount','SmsAccount','find','options','raw','where','attributes','include','map','model','debug','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x2256cc,_0xf75532){var _0x84d712=function(_0xc6cdaf){while(--_0xc6cdaf){_0x2256cc['push'](_0x2256cc['shift']());}};_0x84d712(++_0xf75532);}(_0x542e,0xe5));var _0xe542=function(_0x21c5be,_0x24077f){_0x21c5be=_0x21c5be-0x0;var _0x27f10b=_0x542e[_0x21c5be];return _0x27f10b;};'use strict';var _=require(_0xe542('0x0'));var util=require(_0xe542('0x1'));var moment=require(_0xe542('0x2'));var BPromise=require(_0xe542('0x3'));var rs=require(_0xe542('0x4'));var fs=require('fs');var Redis=require(_0xe542('0x5'));var db=require(_0xe542('0x6'))['db'];var utils=require(_0xe542('0x7'));var logger=require(_0xe542('0x8'))(_0xe542('0x9'));var config=require(_0xe542('0xa'));var jayson=require(_0xe542('0xb'));var client=jayson['client']['http']({'port':0x232a});config['redis']=_[_0xe542('0xc')](config[_0xe542('0xd')],{'host':_0xe542('0xe'),'port':0x18eb});var socket=require(_0xe542('0xf'))(new Redis(config['redis']));require(_0xe542('0x10'))[_0xe542('0x11')](socket);function respondWithRpcPromise(_0x28a0e0,_0x459520,_0x5d9e64){return new BPromise(function(_0x1cb345,_0xabcbcd){return client['request'](_0x28a0e0,_0x5d9e64)[_0xe542('0x12')](function(_0x556ed6){logger[_0xe542('0x13')](_0xe542('0x14'),_0x459520,_0xe542('0x15'));logger['debug'](_0xe542('0x16'),_0x459520,_0xe542('0x15'),JSON[_0xe542('0x17')](_0x556ed6));if(_0x556ed6[_0xe542('0x18')]){if(_0x556ed6[_0xe542('0x18')][_0xe542('0x19')]===0x1f4){logger[_0xe542('0x18')](_0xe542('0x14'),_0x459520,_0x556ed6[_0xe542('0x18')][_0xe542('0x1a')]);return _0xabcbcd(_0x556ed6[_0xe542('0x18')]['message']);}logger['error'](_0xe542('0x14'),_0x459520,_0x556ed6[_0xe542('0x18')][_0xe542('0x1a')]);return _0x1cb345(_0x556ed6[_0xe542('0x18')][_0xe542('0x1a')]);}else{logger[_0xe542('0x13')](_0xe542('0x14'),_0x459520,_0xe542('0x15'));_0x1cb345(_0x556ed6[_0xe542('0x1b')][_0xe542('0x1a')]);}})['catch'](function(_0x4608f0){logger[_0xe542('0x18')](_0xe542('0x14'),_0x459520,_0x4608f0);_0xabcbcd(_0x4608f0);});});}exports[_0xe542('0x1c')]=function(_0x2250fa){var _0x452e66=this;return new Promise(function(_0x2bffff,_0x1cc91e){return db[_0xe542('0x1d')][_0xe542('0x1e')]({'raw':_0x2250fa['options']?_0x2250fa[_0xe542('0x1f')][_0xe542('0x20')]===undefined?!![]:![]:!![],'where':_0x2250fa[_0xe542('0x1f')]?_0x2250fa[_0xe542('0x1f')][_0xe542('0x21')]||null:null,'attributes':_0x2250fa['options']?_0x2250fa[_0xe542('0x1f')][_0xe542('0x22')]||null:null,'include':_0x2250fa[_0xe542('0x1f')]?_0x2250fa[_0xe542('0x1f')][_0xe542('0x23')]?_[_0xe542('0x24')](_0x2250fa['options'][_0xe542('0x23')],function(_0x11153f){return{'model':db[_0x11153f[_0xe542('0x25')]],'as':_0x11153f['as'],'attributes':_0x11153f[_0xe542('0x22')],'include':_0x11153f[_0xe542('0x23')]?_[_0xe542('0x24')](_0x11153f[_0xe542('0x23')],function(_0x55e0a2){return{'model':db[_0x55e0a2[_0xe542('0x25')]],'as':_0x55e0a2['as'],'attributes':_0x55e0a2[_0xe542('0x22')],'include':_0x55e0a2['include']?_['map'](_0x55e0a2[_0xe542('0x23')],function(_0x271c21){return{'model':db[_0x271c21['model']],'as':_0x271c21['as'],'attributes':_0x271c21['attributes']};}):[]};}):[]};}):[]:[]})[_0xe542('0x12')](function(_0x413f49){logger['info'](_0xe542('0x1c'),_0x2250fa);logger[_0xe542('0x26')](_0xe542('0x1c'),_0x2250fa,JSON[_0xe542('0x17')](_0x413f49));_0x2bffff(_0x413f49);})[_0xe542('0x27')](function(_0xd19b73){logger[_0xe542('0x18')](_0xe542('0x1c'),_0xd19b73[_0xe542('0x1a')],_0x2250fa);_0x1cc91e(_0x452e66[_0xe542('0x18')](0x1f4,_0xd19b73[_0xe542('0x1a')]));});});};
\ No newline at end of file
index 8ff23b7..058eccf 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(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0xa9e0[_0x2f5ac5];return _0x37c9a8;};'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(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4e1d03,_0x786f3a){_0x4e1d03=_0x4e1d03-0x0;var _0x362d4b=_0xa9e0[_0x4e1d03];return _0x362d4b;};'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 45e3dc7..d989a23 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7217=['Router','fs-extra','../../config/environment','./smsApplication.controller','get','isAuthenticated','index','/:id','show','post','create','put','delete','destroy','exports','multer','path','connect-timeout','express'];(function(_0x25feab,_0x30eeb2){var _0x8403fa=function(_0x47a948){while(--_0x47a948){_0x25feab['push'](_0x25feab['shift']());}};_0x8403fa(++_0x30eeb2);}(_0x7217,0x19e));var _0x7721=function(_0x373dee,_0x1a8c45){_0x373dee=_0x373dee-0x0;var _0x46798f=_0x7217[_0x373dee];return _0x46798f;};'use strict';var multer=require(_0x7721('0x0'));var util=require('util');var path=require(_0x7721('0x1'));var timeout=require(_0x7721('0x2'));var express=require(_0x7721('0x3'));var router=express[_0x7721('0x4')]();var fs_extra=require(_0x7721('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x7721('0x6'));var controller=require(_0x7721('0x7'));router[_0x7721('0x8')]('/',auth[_0x7721('0x9')](),controller[_0x7721('0xa')]);router[_0x7721('0x8')](_0x7721('0xb'),auth[_0x7721('0x9')](),controller[_0x7721('0xc')]);router[_0x7721('0xd')]('/',auth[_0x7721('0x9')](),controller[_0x7721('0xe')]);router[_0x7721('0xf')](_0x7721('0xb'),auth[_0x7721('0x9')](),controller['update']);router[_0x7721('0x10')](_0x7721('0xb'),auth[_0x7721('0x9')](),controller[_0x7721('0x11')]);module[_0x7721('0x12')]=router;
\ No newline at end of file
+var _0x34e8=['../../config/environment','./smsApplication.controller','get','index','/:id','isAuthenticated','show','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x4b630,_0x151f86){var _0x24f855=function(_0x2ead2a){while(--_0x2ead2a){_0x4b630['push'](_0x4b630['shift']());}};_0x24f855(++_0x151f86);}(_0x34e8,0x12c));var _0x834e=function(_0x1b6bf2,_0x3c6a47){_0x1b6bf2=_0x1b6bf2-0x0;var _0x4d53d2=_0x34e8[_0x1b6bf2];return _0x4d53d2;};'use strict';var multer=require(_0x834e('0x0'));var util=require(_0x834e('0x1'));var path=require(_0x834e('0x2'));var timeout=require(_0x834e('0x3'));var express=require('express');var router=express[_0x834e('0x4')]();var fs_extra=require(_0x834e('0x5'));var auth=require(_0x834e('0x6'));var interaction=require(_0x834e('0x7'));var config=require(_0x834e('0x8'));var controller=require(_0x834e('0x9'));router[_0x834e('0xa')]('/',auth['isAuthenticated'](),controller[_0x834e('0xb')]);router['get'](_0x834e('0xc'),auth[_0x834e('0xd')](),controller[_0x834e('0xe')]);router[_0x834e('0xf')]('/',auth[_0x834e('0xd')](),controller[_0x834e('0x10')]);router[_0x834e('0x11')](_0x834e('0xc'),auth[_0x834e('0xd')](),controller[_0x834e('0x12')]);router[_0x834e('0x13')](_0x834e('0xc'),auth[_0x834e('0xd')](),controller[_0x834e('0x14')]);module[_0x834e('0x15')]=router;
\ No newline at end of file
index 1c3e2ad..7a9f1f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70d8=['exports','noop','STRING','*,*,*,*'];(function(_0x35f45b,_0x50797e){var _0x4070c4=function(_0x13f6a7){while(--_0x13f6a7){_0x35f45b['push'](_0x35f45b['shift']());}};_0x4070c4(++_0x50797e);}(_0x70d8,0x12c));var _0x870d=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0x70d8[_0x19950b];return _0x3c6b41;};'use strict';var Sequelize=require('sequelize');module[_0x870d('0x0')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x870d('0x1')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize[_0x870d('0x2')]},'interval':{'type':Sequelize[_0x870d('0x2')],'defaultValue':_0x870d('0x3')}};
\ No newline at end of file
+var _0xfd02=['INTEGER','noop','STRING','sequelize','exports'];(function(_0x10c2fe,_0x450c2e){var _0x5cea67=function(_0x353f96){while(--_0x353f96){_0x10c2fe['push'](_0x10c2fe['shift']());}};_0x5cea67(++_0x450c2e);}(_0xfd02,0x184));var _0x2fd0=function(_0x491468,_0x42f169){_0x491468=_0x491468-0x0;var _0x5b8c22=_0xfd02[_0x491468];return _0x5b8c22;};'use strict';var Sequelize=require(_0x2fd0('0x0'));module[_0x2fd0('0x1')]={'priority':{'type':Sequelize[_0x2fd0('0x2')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x2fd0('0x3')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x2fd0('0x4')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
index 0d99347..be17858 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0487=['merge','VIRTUAL','options','includeAll','include','findAll','show','params','find','create','body','catch','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../mysqldb','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','end','error','stack','name','index','map','SmsApplication','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0x0487,0xea));var _0x7048=function(_0xf48cce,_0x3531e4){_0xf48cce=_0xf48cce-0x0;var _0x2a5c38=_0x0487[_0xf48cce];return _0x2a5c38;};'use strict';var emlformat=require(_0x7048('0x0'));var rimraf=require(_0x7048('0x1'));var zipdir=require(_0x7048('0x2'));var jsonpatch=require(_0x7048('0x3'));var rp=require(_0x7048('0x4'));var moment=require(_0x7048('0x5'));var BPromise=require(_0x7048('0x6'));var Mustache=require(_0x7048('0x7'));var util=require(_0x7048('0x8'));var path=require(_0x7048('0x9'));var sox=require(_0x7048('0xa'));var csv=require(_0x7048('0xb'));var ejs=require(_0x7048('0xc'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x7048('0xd'));var squel=require('squel');var crypto=require(_0x7048('0xe'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x7048('0xb'));var querystring=require(_0x7048('0xf'));var Papa=require(_0x7048('0x10'));var Redis=require(_0x7048('0x11'));var authService=require(_0x7048('0x12'));var qs=require(_0x7048('0x13'));var as=require(_0x7048('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x7048('0x15'))(_0x7048('0x16'));var utils=require(_0x7048('0x17'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x7048('0x18'))['db'];function respondWithStatusCode(_0x1ba45f,_0x437b0e){_0x437b0e=_0x437b0e||0xcc;return function(_0xeccec4){if(_0xeccec4){return _0x1ba45f['sendStatus'](_0x437b0e);}return _0x1ba45f[_0x7048('0x19')](_0x437b0e)['end']();};}function respondWithResult(_0x2d7925,_0x326b1c){_0x326b1c=_0x326b1c||0xc8;return function(_0x1fb5d2){if(_0x1fb5d2){return _0x2d7925[_0x7048('0x19')](_0x326b1c)[_0x7048('0x1a')](_0x1fb5d2);}};}function respondWithFilteredResult(_0xaf9f17,_0x1d2507){return function(_0x4ca757){if(_0x4ca757){var _0x2d3eea=typeof _0x1d2507[_0x7048('0x1b')]===_0x7048('0x1c')&&typeof _0x1d2507[_0x7048('0x1d')]===_0x7048('0x1c');var _0x401e92=_0x4ca757[_0x7048('0x1e')];var _0x24626c=_0x2d3eea?0x0:_0x1d2507[_0x7048('0x1b')];var _0xda35a0=_0x2d3eea?_0x4ca757['count']:_0x1d2507[_0x7048('0x1b')]+_0x1d2507[_0x7048('0x1d')];var _0x1f2205;if(_0xda35a0>=_0x401e92){_0xda35a0=_0x401e92;_0x1f2205=0xc8;}else{_0x1f2205=0xce;}_0xaf9f17[_0x7048('0x19')](_0x1f2205);return _0xaf9f17[_0x7048('0x1f')](_0x7048('0x20'),_0x24626c+'-'+_0xda35a0+'/'+_0x401e92)[_0x7048('0x1a')](_0x4ca757);}return null;};}function patchUpdates(_0x595207){return function(_0x22a485){try{jsonpatch['apply'](_0x22a485,_0x595207,!![]);}catch(_0x38a858){return BPromise[_0x7048('0x21')](_0x38a858);}return _0x22a485[_0x7048('0x22')]();};}function saveUpdates(_0x4fc24a,_0x500439){return function(_0x1eab41){if(_0x1eab41){return _0x1eab41[_0x7048('0x23')](_0x4fc24a)[_0x7048('0x24')](function(_0x5f380e){return _0x5f380e;});}return null;};}function removeEntity(_0x42fa3c,_0x5ec5ea){return function(_0x2f1ed3){if(_0x2f1ed3){return _0x2f1ed3[_0x7048('0x25')]()[_0x7048('0x24')](function(){_0x42fa3c['status'](0xcc)[_0x7048('0x26')]();});}};}function handleEntityNotFound(_0x3c5183,_0x207767){return function(_0x452f02){if(!_0x452f02){_0x3c5183['sendStatus'](0x194);}return _0x452f02;};}function handleError(_0xe4652d,_0x33a954){_0x33a954=_0x33a954||0x1f4;return function(_0x546667){logger[_0x7048('0x27')](_0x546667[_0x7048('0x28')]);if(_0x546667[_0x7048('0x29')]){delete _0x546667['name'];}_0xe4652d[_0x7048('0x19')](_0x33a954)['send'](_0x546667);};}exports[_0x7048('0x2a')]=function(_0x1f4065,_0x531409){var _0x300c51={},_0x1f35e7={},_0x19653b={'count':0x0,'rows':[]};var _0x403dec=_[_0x7048('0x2b')](db[_0x7048('0x2c')][_0x7048('0x2d')],function(_0x4f1c21){return{'name':_0x4f1c21['fieldName'],'type':_0x4f1c21[_0x7048('0x2e')][_0x7048('0x2f')]};});_0x1f35e7[_0x7048('0x30')]=_['map'](_0x403dec,_0x7048('0x29'));_0x1f35e7[_0x7048('0x31')]=_[_0x7048('0x32')](_0x1f4065[_0x7048('0x31')]);_0x1f35e7[_0x7048('0x33')]=_[_0x7048('0x34')](_0x1f35e7['model'],_0x1f35e7['query']);_0x300c51[_0x7048('0x35')]=_[_0x7048('0x34')](_0x1f35e7[_0x7048('0x30')],qs[_0x7048('0x36')](_0x1f4065['query'][_0x7048('0x36')]));_0x300c51['attributes']=_0x300c51[_0x7048('0x35')][_0x7048('0x37')]?_0x300c51[_0x7048('0x35')]:_0x1f35e7['model'];if(!_0x1f4065[_0x7048('0x31')][_0x7048('0x38')](_0x7048('0x39'))){_0x300c51['limit']=qs['limit'](_0x1f4065[_0x7048('0x31')][_0x7048('0x1d')]);_0x300c51[_0x7048('0x1b')]=qs[_0x7048('0x1b')](_0x1f4065['query'][_0x7048('0x1b')]);}_0x300c51['order']=qs[_0x7048('0x3a')](_0x1f4065['query'][_0x7048('0x3a')]);_0x300c51[_0x7048('0x3b')]=qs[_0x7048('0x33')](_[_0x7048('0x3c')](_0x1f4065[_0x7048('0x31')],_0x1f35e7['filters']),_0x403dec);if(_0x1f4065[_0x7048('0x31')][_0x7048('0x3d')]){_0x300c51[_0x7048('0x3b')]=_[_0x7048('0x3e')](_0x300c51[_0x7048('0x3b')],{'$or':_[_0x7048('0x2b')](_0x403dec,function(_0x4cc512){if(_0x4cc512[_0x7048('0x2e')]!==_0x7048('0x3f')){var _0x8c7320={};_0x8c7320[_0x4cc512[_0x7048('0x29')]]={'$like':'%'+_0x1f4065['query'][_0x7048('0x3d')]+'%'};return _0x8c7320;}})});}_0x300c51=_[_0x7048('0x3e')]({},_0x300c51,_0x1f4065[_0x7048('0x40')]);var _0x323894={'where':_0x300c51[_0x7048('0x3b')]};return db[_0x7048('0x2c')][_0x7048('0x1e')](_0x323894)[_0x7048('0x24')](function(_0x1199c6){_0x19653b[_0x7048('0x1e')]=_0x1199c6;if(_0x1f4065['query'][_0x7048('0x41')]){_0x300c51[_0x7048('0x42')]=[{'all':!![]}];}return db[_0x7048('0x2c')][_0x7048('0x43')](_0x300c51);})[_0x7048('0x24')](function(_0x56c9d8){_0x19653b['rows']=_0x56c9d8;return _0x19653b;})['then'](respondWithFilteredResult(_0x531409,_0x300c51))['catch'](handleError(_0x531409,null));};exports[_0x7048('0x44')]=function(_0x484294,_0xf761e0){var _0x49db51={'raw':!![],'where':{'id':_0x484294[_0x7048('0x45')]['id']}},_0xfe8d9c={};_0xfe8d9c['model']=_[_0x7048('0x32')](db[_0x7048('0x2c')][_0x7048('0x2d')]);_0xfe8d9c[_0x7048('0x31')]=_[_0x7048('0x32')](_0x484294[_0x7048('0x31')]);_0xfe8d9c[_0x7048('0x33')]=_['intersection'](_0xfe8d9c[_0x7048('0x30')],_0xfe8d9c[_0x7048('0x31')]);_0x49db51[_0x7048('0x35')]=_[_0x7048('0x34')](_0xfe8d9c[_0x7048('0x30')],qs[_0x7048('0x36')](_0x484294[_0x7048('0x31')][_0x7048('0x36')]));_0x49db51[_0x7048('0x35')]=_0x49db51[_0x7048('0x35')][_0x7048('0x37')]?_0x49db51['attributes']:_0xfe8d9c[_0x7048('0x30')];if(_0x484294[_0x7048('0x31')]['includeAll']){_0x49db51[_0x7048('0x42')]=[{'all':!![]}];}_0x49db51=_['merge']({},_0x49db51,_0x484294['options']);return db['SmsApplication'][_0x7048('0x46')](_0x49db51)[_0x7048('0x24')](handleEntityNotFound(_0xf761e0,null))['then'](respondWithResult(_0xf761e0,null))['catch'](handleError(_0xf761e0,null));};exports[_0x7048('0x47')]=function(_0x24941d,_0x3e264c){return db[_0x7048('0x2c')]['create'](_0x24941d[_0x7048('0x48')],{})[_0x7048('0x24')](respondWithResult(_0x3e264c,0xc9))['catch'](handleError(_0x3e264c,null));};exports[_0x7048('0x23')]=function(_0x226d25,_0x228611){if(_0x226d25['body']['id']){delete _0x226d25['body']['id'];}return db[_0x7048('0x2c')][_0x7048('0x46')]({'where':{'id':_0x226d25['params']['id']}})[_0x7048('0x24')](handleEntityNotFound(_0x228611,null))[_0x7048('0x24')](saveUpdates(_0x226d25[_0x7048('0x48')],null))['then'](respondWithResult(_0x228611,null))[_0x7048('0x49')](handleError(_0x228611,null));};exports[_0x7048('0x25')]=function(_0x4162c5,_0x5d3e5d){return db[_0x7048('0x2c')][_0x7048('0x46')]({'where':{'id':_0x4162c5['params']['id']}})[_0x7048('0x24')](handleEntityNotFound(_0x5d3e5d,null))[_0x7048('0x24')](removeEntity(_0x5d3e5d,null))[_0x7048('0x49')](handleError(_0x5d3e5d,null));};
\ No newline at end of file
+var _0xc4cb=['params','find','create','body','rimraf','fast-json-patch','request-promise','moment','bluebird','util','sox','fs-extra','squel','crypto','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','status','end','json','undefined','count','offset','limit','set','Content-Range','apply','reject','save','update','destroy','sendStatus','error','stack','name','send','index','map','SmsApplication','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','order','sort','pick','filter','where','merge','options','then','includeAll','include','findAll','rows','catch','show'];(function(_0x1caf6a,_0x26a5bf){var _0x1bf493=function(_0x3982f5){while(--_0x3982f5){_0x1caf6a['push'](_0x1caf6a['shift']());}};_0x1bf493(++_0x26a5bf);}(_0xc4cb,0x1ba));var _0xbc4c=function(_0x1da173,_0x26fd7c){_0x1da173=_0x1da173-0x0;var _0x1e448b=_0xc4cb[_0x1da173];return _0x1e448b;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xbc4c('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xbc4c('0x1'));var rp=require(_0xbc4c('0x2'));var moment=require(_0xbc4c('0x3'));var BPromise=require(_0xbc4c('0x4'));var Mustache=require('mustache');var util=require(_0xbc4c('0x5'));var path=require('path');var sox=require(_0xbc4c('0x6'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xbc4c('0x7'));var _=require('lodash');var squel=require(_0xbc4c('0x8'));var crypto=require(_0xbc4c('0x9'));var jsforce=require('jsforce');var deskjs=require(_0xbc4c('0xa'));var toCsv=require(_0xbc4c('0xb'));var querystring=require(_0xbc4c('0xc'));var Papa=require(_0xbc4c('0xd'));var Redis=require('ioredis');var authService=require(_0xbc4c('0xe'));var qs=require(_0xbc4c('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xbc4c('0x10'))(_0xbc4c('0x11'));var utils=require(_0xbc4c('0x12'));var config=require(_0xbc4c('0x13'));var licenseUtil=require(_0xbc4c('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x25da18,_0x2770a0){_0x2770a0=_0x2770a0||0xcc;return function(_0x16a63a){if(_0x16a63a){return _0x25da18['sendStatus'](_0x2770a0);}return _0x25da18[_0xbc4c('0x15')](_0x2770a0)[_0xbc4c('0x16')]();};}function respondWithResult(_0x4e1b3a,_0x16f0df){_0x16f0df=_0x16f0df||0xc8;return function(_0x11e86f){if(_0x11e86f){return _0x4e1b3a[_0xbc4c('0x15')](_0x16f0df)[_0xbc4c('0x17')](_0x11e86f);}};}function respondWithFilteredResult(_0x588f7d,_0x155b80){return function(_0x5b7318){if(_0x5b7318){var _0x240da7=typeof _0x155b80['offset']===_0xbc4c('0x18')&&typeof _0x155b80['limit']===_0xbc4c('0x18');var _0x7b2af2=_0x5b7318[_0xbc4c('0x19')];var _0x5b8ad1=_0x240da7?0x0:_0x155b80[_0xbc4c('0x1a')];var _0x504186=_0x240da7?_0x5b7318[_0xbc4c('0x19')]:_0x155b80[_0xbc4c('0x1a')]+_0x155b80[_0xbc4c('0x1b')];var _0x149470;if(_0x504186>=_0x7b2af2){_0x504186=_0x7b2af2;_0x149470=0xc8;}else{_0x149470=0xce;}_0x588f7d[_0xbc4c('0x15')](_0x149470);return _0x588f7d[_0xbc4c('0x1c')](_0xbc4c('0x1d'),_0x5b8ad1+'-'+_0x504186+'/'+_0x7b2af2)['json'](_0x5b7318);}return null;};}function patchUpdates(_0x2c3265){return function(_0x59bef1){try{jsonpatch[_0xbc4c('0x1e')](_0x59bef1,_0x2c3265,!![]);}catch(_0x5775f6){return BPromise[_0xbc4c('0x1f')](_0x5775f6);}return _0x59bef1[_0xbc4c('0x20')]();};}function saveUpdates(_0x2fb61c,_0x1dc06e){return function(_0x47cc16){if(_0x47cc16){return _0x47cc16[_0xbc4c('0x21')](_0x2fb61c)['then'](function(_0x155318){return _0x155318;});}return null;};}function removeEntity(_0x386c48,_0x3793b7){return function(_0x24925b){if(_0x24925b){return _0x24925b[_0xbc4c('0x22')]()['then'](function(){_0x386c48[_0xbc4c('0x15')](0xcc)[_0xbc4c('0x16')]();});}};}function handleEntityNotFound(_0x325160,_0x56d060){return function(_0x3fa686){if(!_0x3fa686){_0x325160[_0xbc4c('0x23')](0x194);}return _0x3fa686;};}function handleError(_0x159efb,_0x27dac2){_0x27dac2=_0x27dac2||0x1f4;return function(_0x383971){logger[_0xbc4c('0x24')](_0x383971[_0xbc4c('0x25')]);if(_0x383971[_0xbc4c('0x26')]){delete _0x383971[_0xbc4c('0x26')];}_0x159efb[_0xbc4c('0x15')](_0x27dac2)[_0xbc4c('0x27')](_0x383971);};}exports[_0xbc4c('0x28')]=function(_0x447a49,_0x261ded){var _0x10b67b={},_0x3c014d={},_0x3ea17a={'count':0x0,'rows':[]};var _0x472a12=_[_0xbc4c('0x29')](db[_0xbc4c('0x2a')][_0xbc4c('0x2b')],function(_0x376fe0){return{'name':_0x376fe0[_0xbc4c('0x2c')],'type':_0x376fe0[_0xbc4c('0x2d')][_0xbc4c('0x2e')]};});_0x3c014d[_0xbc4c('0x2f')]=_[_0xbc4c('0x29')](_0x472a12,'name');_0x3c014d[_0xbc4c('0x30')]=_[_0xbc4c('0x31')](_0x447a49[_0xbc4c('0x30')]);_0x3c014d[_0xbc4c('0x32')]=_[_0xbc4c('0x33')](_0x3c014d[_0xbc4c('0x2f')],_0x3c014d[_0xbc4c('0x30')]);_0x10b67b['attributes']=_[_0xbc4c('0x33')](_0x3c014d['model'],qs['fields'](_0x447a49[_0xbc4c('0x30')][_0xbc4c('0x34')]));_0x10b67b[_0xbc4c('0x35')]=_0x10b67b[_0xbc4c('0x35')]['length']?_0x10b67b['attributes']:_0x3c014d[_0xbc4c('0x2f')];if(!_0x447a49['query'][_0xbc4c('0x36')]('nolimit')){_0x10b67b[_0xbc4c('0x1b')]=qs['limit'](_0x447a49[_0xbc4c('0x30')]['limit']);_0x10b67b['offset']=qs[_0xbc4c('0x1a')](_0x447a49[_0xbc4c('0x30')][_0xbc4c('0x1a')]);}_0x10b67b[_0xbc4c('0x37')]=qs[_0xbc4c('0x38')](_0x447a49[_0xbc4c('0x30')][_0xbc4c('0x38')]);_0x10b67b['where']=qs['filters'](_[_0xbc4c('0x39')](_0x447a49[_0xbc4c('0x30')],_0x3c014d[_0xbc4c('0x32')]),_0x472a12);if(_0x447a49['query'][_0xbc4c('0x3a')]){_0x10b67b[_0xbc4c('0x3b')]=_['merge'](_0x10b67b[_0xbc4c('0x3b')],{'$or':_[_0xbc4c('0x29')](_0x472a12,function(_0x4f47d4){if(_0x4f47d4[_0xbc4c('0x2d')]!=='VIRTUAL'){var _0x264338={};_0x264338[_0x4f47d4[_0xbc4c('0x26')]]={'$like':'%'+_0x447a49[_0xbc4c('0x30')][_0xbc4c('0x3a')]+'%'};return _0x264338;}})});}_0x10b67b=_[_0xbc4c('0x3c')]({},_0x10b67b,_0x447a49[_0xbc4c('0x3d')]);var _0x4cfc01={'where':_0x10b67b['where']};return db[_0xbc4c('0x2a')][_0xbc4c('0x19')](_0x4cfc01)[_0xbc4c('0x3e')](function(_0x3c8c75){_0x3ea17a['count']=_0x3c8c75;if(_0x447a49[_0xbc4c('0x30')][_0xbc4c('0x3f')]){_0x10b67b[_0xbc4c('0x40')]=[{'all':!![]}];}return db['SmsApplication'][_0xbc4c('0x41')](_0x10b67b);})[_0xbc4c('0x3e')](function(_0x3eb2ec){_0x3ea17a[_0xbc4c('0x42')]=_0x3eb2ec;return _0x3ea17a;})['then'](respondWithFilteredResult(_0x261ded,_0x10b67b))[_0xbc4c('0x43')](handleError(_0x261ded,null));};exports[_0xbc4c('0x44')]=function(_0x374920,_0x3bde34){var _0x4dfbcd={'raw':!![],'where':{'id':_0x374920[_0xbc4c('0x45')]['id']}},_0x14a5c2={};_0x14a5c2[_0xbc4c('0x2f')]=_[_0xbc4c('0x31')](db[_0xbc4c('0x2a')]['rawAttributes']);_0x14a5c2['query']=_['keys'](_0x374920[_0xbc4c('0x30')]);_0x14a5c2['filters']=_[_0xbc4c('0x33')](_0x14a5c2[_0xbc4c('0x2f')],_0x14a5c2[_0xbc4c('0x30')]);_0x4dfbcd[_0xbc4c('0x35')]=_[_0xbc4c('0x33')](_0x14a5c2[_0xbc4c('0x2f')],qs[_0xbc4c('0x34')](_0x374920[_0xbc4c('0x30')][_0xbc4c('0x34')]));_0x4dfbcd['attributes']=_0x4dfbcd[_0xbc4c('0x35')]['length']?_0x4dfbcd['attributes']:_0x14a5c2['model'];if(_0x374920[_0xbc4c('0x30')][_0xbc4c('0x3f')]){_0x4dfbcd[_0xbc4c('0x40')]=[{'all':!![]}];}_0x4dfbcd=_[_0xbc4c('0x3c')]({},_0x4dfbcd,_0x374920[_0xbc4c('0x3d')]);return db[_0xbc4c('0x2a')][_0xbc4c('0x46')](_0x4dfbcd)[_0xbc4c('0x3e')](handleEntityNotFound(_0x3bde34,null))[_0xbc4c('0x3e')](respondWithResult(_0x3bde34,null))[_0xbc4c('0x43')](handleError(_0x3bde34,null));};exports[_0xbc4c('0x47')]=function(_0x5ea714,_0x1681fb){return db[_0xbc4c('0x2a')][_0xbc4c('0x47')](_0x5ea714[_0xbc4c('0x48')],{})[_0xbc4c('0x3e')](respondWithResult(_0x1681fb,0xc9))[_0xbc4c('0x43')](handleError(_0x1681fb,null));};exports[_0xbc4c('0x21')]=function(_0x2fca1b,_0x37f72f){if(_0x2fca1b[_0xbc4c('0x48')]['id']){delete _0x2fca1b[_0xbc4c('0x48')]['id'];}return db[_0xbc4c('0x2a')][_0xbc4c('0x46')]({'where':{'id':_0x2fca1b[_0xbc4c('0x45')]['id']}})[_0xbc4c('0x3e')](handleEntityNotFound(_0x37f72f,null))[_0xbc4c('0x3e')](saveUpdates(_0x2fca1b[_0xbc4c('0x48')],null))[_0xbc4c('0x3e')](respondWithResult(_0x37f72f,null))['catch'](handleError(_0x37f72f,null));};exports['destroy']=function(_0x442cb8,_0x3b03c9){return db[_0xbc4c('0x2a')][_0xbc4c('0x46')]({'where':{'id':_0x442cb8[_0xbc4c('0x45')]['id']}})[_0xbc4c('0x3e')](handleEntityNotFound(_0x3b03c9,null))[_0xbc4c('0x3e')](removeEntity(_0x3b03c9,null))[_0xbc4c('0x43')](handleError(_0x3b03c9,null));};
\ No newline at end of file
index 91cd8ca..975cbd7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8fc5=['moment','bluebird','request-promise','path','../../config/environment','./smsApplication.attributes','define','SmsApplication','util','api'];(function(_0x3b57fc,_0x1fbf22){var _0x146f10=function(_0x857ac3){while(--_0x857ac3){_0x3b57fc['push'](_0x3b57fc['shift']());}};_0x146f10(++_0x1fbf22);}(_0x8fc5,0x1ca));var _0x58fc=function(_0x5ade69,_0x8eeaa3){_0x5ade69=_0x5ade69-0x0;var _0x161671=_0x8fc5[_0x5ade69];return _0x161671;};'use strict';var _=require('lodash');var util=require(_0x58fc('0x0'));var logger=require('../../config/logger')(_0x58fc('0x1'));var moment=require(_0x58fc('0x2'));var BPromise=require(_0x58fc('0x3'));var rp=require(_0x58fc('0x4'));var fs=require('fs');var path=require(_0x58fc('0x5'));var rimraf=require('rimraf');var config=require(_0x58fc('0x6'));var attributes=require(_0x58fc('0x7'));module['exports']=function(_0x1f0c3d,_0x488955){return _0x1f0c3d[_0x58fc('0x8')](_0x58fc('0x9'),attributes,{'tableName':'sms_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x2856=['./smsApplication.attributes','define','SmsApplication','sms_applications','utf8mb4','lodash','../../config/logger','api','moment','request-promise','path','rimraf'];(function(_0x4b3b19,_0x58ad15){var _0x515b3f=function(_0x3449b6){while(--_0x3449b6){_0x4b3b19['push'](_0x4b3b19['shift']());}};_0x515b3f(++_0x58ad15);}(_0x2856,0x1b5));var _0x6285=function(_0x536bc2,_0x35c4bf){_0x536bc2=_0x536bc2-0x0;var _0x551b56=_0x2856[_0x536bc2];return _0x551b56;};'use strict';var _=require(_0x6285('0x0'));var util=require('util');var logger=require(_0x6285('0x1'))(_0x6285('0x2'));var moment=require(_0x6285('0x3'));var BPromise=require('bluebird');var rp=require(_0x6285('0x4'));var fs=require('fs');var path=require(_0x6285('0x5'));var rimraf=require(_0x6285('0x6'));var config=require('../../config/environment');var attributes=require(_0x6285('0x7'));module['exports']=function(_0xf28aa3,_0x5eab2c){return _0xf28aa3[_0x6285('0x8')](_0x6285('0x9'),attributes,{'tableName':_0x6285('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x6285('0xb'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index cb0c6d8..1b60cc1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb2f3=['message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','request\x20sent','debug','SmsApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','SmsApplication,\x20%s,\x20%s'];(function(_0x178caa,_0x2efbc7){var _0x1caf1d=function(_0x3da22b){while(--_0x3da22b){_0x178caa['push'](_0x178caa['shift']());}};_0x1caf1d(++_0x2efbc7);}(_0xb2f3,0xfd));var _0x3b2f=function(_0x599f41,_0x4db732){_0x599f41=_0x599f41-0x0;var _0x2e4d58=_0xb2f3[_0x599f41];return _0x2e4d58;};'use strict';var _=require(_0x3b2f('0x0'));var util=require(_0x3b2f('0x1'));var moment=require(_0x3b2f('0x2'));var BPromise=require(_0x3b2f('0x3'));var rs=require(_0x3b2f('0x4'));var fs=require('fs');var Redis=require(_0x3b2f('0x5'));var db=require(_0x3b2f('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x3b2f('0x7'))(_0x3b2f('0x8'));var config=require(_0x3b2f('0x9'));var jayson=require(_0x3b2f('0xa'));var client=jayson[_0x3b2f('0xb')][_0x3b2f('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x26719d,_0x4b3632,_0x200ca4){return new BPromise(function(_0x56e425,_0x266ed2){return client[_0x3b2f('0xd')](_0x26719d,_0x200ca4)[_0x3b2f('0xe')](function(_0x25134f){logger['info']('SmsApplication,\x20%s,\x20%s',_0x4b3632,_0x3b2f('0xf'));logger[_0x3b2f('0x10')](_0x3b2f('0x11'),_0x4b3632,_0x3b2f('0xf'),JSON[_0x3b2f('0x12')](_0x25134f));if(_0x25134f[_0x3b2f('0x13')]){if(_0x25134f[_0x3b2f('0x13')][_0x3b2f('0x14')]===0x1f4){logger[_0x3b2f('0x13')](_0x3b2f('0x15'),_0x4b3632,_0x25134f[_0x3b2f('0x13')][_0x3b2f('0x16')]);return _0x266ed2(_0x25134f[_0x3b2f('0x13')][_0x3b2f('0x16')]);}logger[_0x3b2f('0x13')]('SmsApplication,\x20%s,\x20%s',_0x4b3632,_0x25134f[_0x3b2f('0x13')]['message']);return _0x56e425(_0x25134f[_0x3b2f('0x13')][_0x3b2f('0x16')]);}else{logger['info'](_0x3b2f('0x15'),_0x4b3632,'request\x20sent');_0x56e425(_0x25134f[_0x3b2f('0x17')][_0x3b2f('0x16')]);}})[_0x3b2f('0x18')](function(_0xd2b1e9){logger['error']('SmsApplication,\x20%s,\x20%s',_0x4b3632,_0xd2b1e9);_0x266ed2(_0xd2b1e9);});});}
\ No newline at end of file
+var _0x9a18=['SmsApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','SmsApplication,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x36f874,_0x1ebf09){var _0x52a402=function(_0x8ace8a){while(--_0x8ace8a){_0x36f874['push'](_0x36f874['shift']());}};_0x52a402(++_0x1ebf09);}(_0x9a18,0x187));var _0x89a1=function(_0x3de0b5,_0x541e35){_0x3de0b5=_0x3de0b5-0x0;var _0x3fded2=_0x9a18[_0x3de0b5];return _0x3fded2;};'use strict';var _=require(_0x89a1('0x0'));var util=require('util');var moment=require(_0x89a1('0x1'));var BPromise=require(_0x89a1('0x2'));var rs=require(_0x89a1('0x3'));var fs=require('fs');var Redis=require(_0x89a1('0x4'));var db=require(_0x89a1('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x89a1('0x6'))(_0x89a1('0x7'));var config=require(_0x89a1('0x8'));var jayson=require(_0x89a1('0x9'));var client=jayson[_0x89a1('0xa')][_0x89a1('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3ec780,_0xcde361,_0x5da9e6){return new BPromise(function(_0x55ac1e,_0x3bba21){return client['request'](_0x3ec780,_0x5da9e6)[_0x89a1('0xc')](function(_0x541951){logger[_0x89a1('0xd')](_0x89a1('0xe'),_0xcde361,_0x89a1('0xf'));logger[_0x89a1('0x10')](_0x89a1('0x11'),_0xcde361,_0x89a1('0xf'),JSON[_0x89a1('0x12')](_0x541951));if(_0x541951[_0x89a1('0x13')]){if(_0x541951[_0x89a1('0x13')][_0x89a1('0x14')]===0x1f4){logger[_0x89a1('0x13')]('SmsApplication,\x20%s,\x20%s',_0xcde361,_0x541951['error'][_0x89a1('0x15')]);return _0x3bba21(_0x541951[_0x89a1('0x13')][_0x89a1('0x15')]);}logger[_0x89a1('0x13')]('SmsApplication,\x20%s,\x20%s',_0xcde361,_0x541951[_0x89a1('0x13')][_0x89a1('0x15')]);return _0x55ac1e(_0x541951['error'][_0x89a1('0x15')]);}else{logger[_0x89a1('0xd')](_0x89a1('0xe'),_0xcde361,_0x89a1('0xf'));_0x55ac1e(_0x541951[_0x89a1('0x16')][_0x89a1('0x15')]);}})[_0x89a1('0x17')](function(_0x325a5a){logger['error'](_0x89a1('0xe'),_0xcde361,_0x325a5a);_0x3bba21(_0x325a5a);});});}
\ No newline at end of file
index cb92ad0..64d0d62 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c00=['multer','util','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsInteraction.controller','get','/describe','isAuthenticated','describe','show','/:id/messages','getMessages','/:id/download','download','post','create','addMessage','/:id/tags','tracked','sms','smsinteraction:addtags','addTags','put','/:id','smsinteraction:update','update','delete','destroy','removeTags'];(function(_0x1ce7d5,_0x5198eb){var _0x586b82=function(_0x49cb85){while(--_0x49cb85){_0x1ce7d5['push'](_0x1ce7d5['shift']());}};_0x586b82(++_0x5198eb);}(_0x9c00,0x1a0));var _0x09c0=function(_0x802997,_0x5534a2){_0x802997=_0x802997-0x0;var _0x35c641=_0x9c00[_0x802997];return _0x35c641;};'use strict';var multer=require(_0x09c0('0x0'));var util=require(_0x09c0('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x09c0('0x2'));var router=express[_0x09c0('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x09c0('0x4'));var interaction=require(_0x09c0('0x5'));var config=require(_0x09c0('0x6'));var controller=require(_0x09c0('0x7'));router[_0x09c0('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0x09c0('0x8')](_0x09c0('0x9'),auth[_0x09c0('0xa')](),controller[_0x09c0('0xb')]);router[_0x09c0('0x8')]('/:id',auth[_0x09c0('0xa')](),controller[_0x09c0('0xc')]);router[_0x09c0('0x8')](_0x09c0('0xd'),auth[_0x09c0('0xa')](),controller[_0x09c0('0xe')]);router[_0x09c0('0x8')](_0x09c0('0xf'),auth[_0x09c0('0xa')](),controller[_0x09c0('0x10')]);router[_0x09c0('0x11')]('/',auth[_0x09c0('0xa')](),controller[_0x09c0('0x12')]);router[_0x09c0('0x11')](_0x09c0('0xd'),auth[_0x09c0('0xa')](),controller[_0x09c0('0x13')]);router[_0x09c0('0x11')](_0x09c0('0x14'),auth[_0x09c0('0xa')](),interaction[_0x09c0('0x15')](_0x09c0('0x16'),_0x09c0('0x17')),controller[_0x09c0('0x18')]);router[_0x09c0('0x19')](_0x09c0('0x1a'),auth['isAuthenticated'](),interaction['tracked']('sms',_0x09c0('0x1b')),controller[_0x09c0('0x1c')]);router[_0x09c0('0x1d')](_0x09c0('0x1a'),auth['isAuthenticated'](),interaction[_0x09c0('0x15')]('sms','smsinteraction:destroy'),controller[_0x09c0('0x1e')]);router['delete'](_0x09c0('0x14'),auth[_0x09c0('0xa')](),controller[_0x09c0('0x1f')]);module['exports']=router;
\ No newline at end of file
+var _0x93e9=['update','delete','smsinteraction:destroy','destroy','removeTags','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../config/environment','./smsInteraction.controller','get','isAuthenticated','index','/describe','/:id','show','/:id/messages','/:id/download','post','create','addMessage','/:id/tags','tracked','sms','smsinteraction:addtags','addTags','put','smsinteraction:update'];(function(_0x2e863b,_0x440c6c){var _0x2eaf75=function(_0xc97b35){while(--_0xc97b35){_0x2e863b['push'](_0x2e863b['shift']());}};_0x2eaf75(++_0x440c6c);}(_0x93e9,0xcc));var _0x993e=function(_0x315d8c,_0x51bb7c){_0x315d8c=_0x315d8c-0x0;var _0x1434c4=_0x93e9[_0x315d8c];return _0x1434c4;};'use strict';var multer=require(_0x993e('0x0'));var util=require(_0x993e('0x1'));var path=require(_0x993e('0x2'));var timeout=require(_0x993e('0x3'));var express=require(_0x993e('0x4'));var router=express[_0x993e('0x5')]();var fs_extra=require(_0x993e('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x993e('0x7'));var controller=require(_0x993e('0x8'));router[_0x993e('0x9')]('/',auth[_0x993e('0xa')](),controller[_0x993e('0xb')]);router[_0x993e('0x9')](_0x993e('0xc'),auth[_0x993e('0xa')](),controller['describe']);router[_0x993e('0x9')](_0x993e('0xd'),auth[_0x993e('0xa')](),controller[_0x993e('0xe')]);router[_0x993e('0x9')](_0x993e('0xf'),auth[_0x993e('0xa')](),controller['getMessages']);router[_0x993e('0x9')](_0x993e('0x10'),auth['isAuthenticated'](),controller['download']);router[_0x993e('0x11')]('/',auth['isAuthenticated'](),controller[_0x993e('0x12')]);router['post']('/:id/messages',auth[_0x993e('0xa')](),controller[_0x993e('0x13')]);router[_0x993e('0x11')](_0x993e('0x14'),auth[_0x993e('0xa')](),interaction[_0x993e('0x15')](_0x993e('0x16'),_0x993e('0x17')),controller[_0x993e('0x18')]);router[_0x993e('0x19')](_0x993e('0xd'),auth[_0x993e('0xa')](),interaction[_0x993e('0x15')](_0x993e('0x16'),_0x993e('0x1a')),controller[_0x993e('0x1b')]);router[_0x993e('0x1c')]('/:id',auth[_0x993e('0xa')](),interaction[_0x993e('0x15')](_0x993e('0x16'),_0x993e('0x1d')),controller[_0x993e('0x1e')]);router[_0x993e('0x1c')]('/:id/tags',auth[_0x993e('0xa')](),controller[_0x993e('0x1f')]);module[_0x993e('0x20')]=router;
\ No newline at end of file
index c6b2d9f..3ad0e24 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3435=['ENUM','out','sequelize','moment','exports','BOOLEAN','DATE','STRING'];(function(_0x5517c0,_0x358609){var _0x33803b=function(_0x513c18){while(--_0x513c18){_0x5517c0['push'](_0x5517c0['shift']());}};_0x33803b(++_0x358609);}(_0x3435,0xfa));var _0x5343=function(_0xda464c,_0x26e47d){_0xda464c=_0xda464c-0x0;var _0x19e222=_0x3435[_0xda464c];return _0x19e222;};'use strict';var Sequelize=require(_0x5343('0x0'));var moment=require(_0x5343('0x1'));module[_0x5343('0x2')]={'closed':{'type':Sequelize[_0x5343('0x3')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x5343('0x4')]},'disposition':{'type':Sequelize[_0x5343('0x5')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0x5343('0x5')]},'note':{'type':Sequelize[_0x5343('0x5')]},'phone':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize[_0x5343('0x6')]('in',_0x5343('0x7')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0x5343('0x7')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x5343('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0xd9c8=['BOOLEAN','DATE','STRING','ENUM','out','sequelize','moment'];(function(_0x342baa,_0x4a110f){var _0x1208f3=function(_0x56a645){while(--_0x56a645){_0x342baa['push'](_0x342baa['shift']());}};_0x1208f3(++_0x4a110f);}(_0xd9c8,0x15c));var _0x8d9c=function(_0x173441,_0x26b0d9){_0x173441=_0x173441-0x0;var _0x2423a8=_0xd9c8[_0x173441];return _0x2423a8;};'use strict';var Sequelize=require(_0x8d9c('0x0'));var moment=require(_0x8d9c('0x1'));module['exports']={'closed':{'type':Sequelize[_0x8d9c('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x8d9c('0x3')]},'disposition':{'type':Sequelize[_0x8d9c('0x4')]},'secondDisposition':{'type':Sequelize[_0x8d9c('0x4')]},'thirdDisposition':{'type':Sequelize[_0x8d9c('0x4')]},'note':{'type':Sequelize[_0x8d9c('0x4')]},'phone':{'type':Sequelize[_0x8d9c('0x4')]},'read1stAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize['ENUM']('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x8d9c('0x3')]},'lastMsgDirection':{'type':Sequelize[_0x8d9c('0x5')]('in',_0x8d9c('0x6')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index 144f494..b29571c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba98=['update','then','error','name','index','SmsInteraction','fieldName','type','key','getOptions','findAll','sms','user','catch','model','keys','rawAttributes','query','filters','intersection','attributes','fields','length','includeAll','find','create','body','params','describe','addMessage','SmsMessage','ids','omit','getMessages','hasOwnProperty','nolimit','order','sort','pick','where','filter','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','merge','include','rows','addTags','setTags','spread','Tag','color','emit','smsInteractionTags:save','removeTags','download','unix','root','files','tmp','transcript-%d-%s.zip','push','User','fullname','CmContact','Contact','firstName','lastName','createdAt','secret','SmsAccount','Owner','get','mkdirSync','Sms','Account','toString','closed','disposition','Messages','map','direction','out','System','read','renderFile','join','server','views','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','log','err','unlinkSync','rimraf','zip-dir','bluebird','util','path','ejs','lodash','ioredis','../../components/interaction/service','../../components/parsers/qs','../../config/logger','../../config/environment','../../mysqldb','redis','socket.io-emitter','./smsInteraction.socket','register','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range'];(function(_0x261527,_0x4aa9f5){var _0x540a18=function(_0xd6cd8){while(--_0xd6cd8){_0x261527['push'](_0x261527['shift']());}};_0x540a18(++_0x4aa9f5);}(_0xba98,0xdd));var _0x8ba9=function(_0x1b4a68,_0x59c033){_0x1b4a68=_0x1b4a68-0x0;var _0x78e106=_0xba98[_0x1b4a68];return _0x78e106;};'use strict';var rimraf=require(_0x8ba9('0x0'));var zipdir=require(_0x8ba9('0x1'));var moment=require('moment');var BPromise=require(_0x8ba9('0x2'));var util=require(_0x8ba9('0x3'));var path=require(_0x8ba9('0x4'));var ejs=require(_0x8ba9('0x5'));var fs=require('fs');var _=require(_0x8ba9('0x6'));var Redis=require(_0x8ba9('0x7'));var interaction=require(_0x8ba9('0x8'));var qs=require(_0x8ba9('0x9'));var pdf=require('../../components/export/pdf');var logger=require(_0x8ba9('0xa'))('api');var config=require(_0x8ba9('0xb'));var db=require(_0x8ba9('0xc'))['db'];config[_0x8ba9('0xd')]=_['defaults'](config[_0x8ba9('0xd')],{'host':'localhost','port':0x18eb});var socket=require(_0x8ba9('0xe'))(new Redis(config[_0x8ba9('0xd')]));require(_0x8ba9('0xf'))[_0x8ba9('0x10')](socket);function respondWithStatusCode(_0x5811f3,_0xd362a8){_0xd362a8=_0xd362a8||0xcc;return function(_0x729eab){if(_0x729eab){return _0x5811f3[_0x8ba9('0x11')](_0xd362a8);}return _0x5811f3['status'](_0xd362a8)[_0x8ba9('0x12')]();};}function respondWithResult(_0x4a44e6,_0x28b5e8){_0x28b5e8=_0x28b5e8||0xc8;return function(_0x428ea1){if(_0x428ea1){return _0x4a44e6[_0x8ba9('0x13')](_0x28b5e8)[_0x8ba9('0x14')](_0x428ea1);}};}function respondWithFilteredResult(_0x3ef351,_0x345293){return function(_0x125666){if(_0x125666){var _0x30d6de=typeof _0x345293[_0x8ba9('0x15')]===_0x8ba9('0x16')&&typeof _0x345293[_0x8ba9('0x17')]===_0x8ba9('0x16');var _0xe8ddd9=_0x125666[_0x8ba9('0x18')];var _0x97da73=_0x30d6de?0x0:_0x345293[_0x8ba9('0x15')];var _0x7d943b=_0x30d6de?_0x125666[_0x8ba9('0x18')]:_0x345293[_0x8ba9('0x15')]+_0x345293['limit'];var _0x356a6f;if(_0x7d943b>=_0xe8ddd9){_0x7d943b=_0xe8ddd9;_0x356a6f=0xc8;}else{_0x356a6f=0xce;}_0x3ef351[_0x8ba9('0x13')](_0x356a6f);return _0x3ef351[_0x8ba9('0x19')](_0x8ba9('0x1a'),_0x97da73+'-'+_0x7d943b+'/'+_0xe8ddd9)['json'](_0x125666);}return null;};}function saveUpdates(_0x157971){return function(_0x45dc70){if(_0x45dc70){return _0x45dc70[_0x8ba9('0x1b')](_0x157971)[_0x8ba9('0x1c')](function(_0xb55625){return _0xb55625;});}return null;};}function removeEntity(_0x266c4b){return function(_0x4612b0){if(_0x4612b0){return _0x4612b0['destroy']()[_0x8ba9('0x1c')](function(){_0x266c4b[_0x8ba9('0x13')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3ca71e){return function(_0x409291){if(!_0x409291){_0x3ca71e[_0x8ba9('0x11')](0x194);}return _0x409291;};}function handleError(_0x52ba8c,_0x124254){_0x124254=_0x124254||0x1f4;return function(_0x5af9f7){logger[_0x8ba9('0x1d')](_0x5af9f7['stack']);if(_0x5af9f7[_0x8ba9('0x1e')]){delete _0x5af9f7[_0x8ba9('0x1e')];}_0x52ba8c['status'](_0x124254)['send'](_0x5af9f7);};}exports[_0x8ba9('0x1f')]=function(_0x10e9b1,_0x1c3662){var _0x381b1e={};var _0x308eee=_['map'](db[_0x8ba9('0x20')]['rawAttributes'],function(_0x1fe5bb){return{'name':_0x1fe5bb[_0x8ba9('0x21')],'type':_0x1fe5bb[_0x8ba9('0x22')][_0x8ba9('0x23')]};});_0x381b1e=qs[_0x8ba9('0x24')](_0x308eee,_0x10e9b1);return interaction[_0x8ba9('0x25')](_0x8ba9('0x26'),_0x10e9b1['query'],_0x10e9b1[_0x8ba9('0x27')],_0x381b1e,_0x308eee)[_0x8ba9('0x1c')](respondWithFilteredResult(_0x1c3662,_0x381b1e))[_0x8ba9('0x28')](handleError(_0x1c3662,null));};exports['show']=function(_0x37cc23,_0x3900ad){var _0x297e47={'raw':![],'where':{'id':_0x37cc23['params']['id']}},_0x125485={};_0x125485[_0x8ba9('0x29')]=_[_0x8ba9('0x2a')](db['SmsInteraction'][_0x8ba9('0x2b')]);_0x125485[_0x8ba9('0x2c')]=_[_0x8ba9('0x2a')](_0x37cc23[_0x8ba9('0x2c')]);_0x125485[_0x8ba9('0x2d')]=_[_0x8ba9('0x2e')](_0x125485[_0x8ba9('0x29')],_0x125485[_0x8ba9('0x2c')]);_0x297e47[_0x8ba9('0x2f')]=_[_0x8ba9('0x2e')](_0x125485['model'],qs[_0x8ba9('0x30')](_0x37cc23['query'][_0x8ba9('0x30')]));_0x297e47[_0x8ba9('0x2f')]=_0x297e47[_0x8ba9('0x2f')][_0x8ba9('0x31')]?_0x297e47[_0x8ba9('0x2f')]:_0x125485[_0x8ba9('0x29')];if(_0x37cc23[_0x8ba9('0x2c')][_0x8ba9('0x32')]){_0x297e47['include']=[{'all':!![]}];}_0x297e47=_['merge']({},_0x297e47,_0x37cc23['options']);return db[_0x8ba9('0x20')][_0x8ba9('0x33')](_0x297e47)[_0x8ba9('0x1c')](handleEntityNotFound(_0x3900ad,null))[_0x8ba9('0x1c')](respondWithResult(_0x3900ad,null))[_0x8ba9('0x28')](handleError(_0x3900ad,null));};exports[_0x8ba9('0x34')]=function(_0x13e453,_0x3713e4){return db[_0x8ba9('0x20')][_0x8ba9('0x34')](_0x13e453[_0x8ba9('0x35')],{})[_0x8ba9('0x1c')](respondWithResult(_0x3713e4,0xc9))[_0x8ba9('0x28')](handleError(_0x3713e4,null));};exports[_0x8ba9('0x1b')]=function(_0x4a4000,_0xc981c3){if(_0x4a4000[_0x8ba9('0x35')]['id']){delete _0x4a4000[_0x8ba9('0x35')]['id'];}return db['SmsInteraction']['find']({'where':{'id':_0x4a4000[_0x8ba9('0x36')]['id']}})[_0x8ba9('0x1c')](handleEntityNotFound(_0xc981c3,null))[_0x8ba9('0x1c')](saveUpdates(_0x4a4000['body'],null))['then'](respondWithResult(_0xc981c3,null))[_0x8ba9('0x28')](handleError(_0xc981c3,null));};exports['destroy']=function(_0x16e916,_0x42670a){return db[_0x8ba9('0x20')][_0x8ba9('0x33')]({'where':{'id':_0x16e916[_0x8ba9('0x36')]['id']}})[_0x8ba9('0x1c')](handleEntityNotFound(_0x42670a,null))[_0x8ba9('0x1c')](removeEntity(_0x42670a,null))[_0x8ba9('0x28')](handleError(_0x42670a,null));};exports[_0x8ba9('0x37')]=function(_0x126d51,_0x4c2341){return db['SmsInteraction'][_0x8ba9('0x37')]()['then'](respondWithResult(_0x4c2341,null))[_0x8ba9('0x28')](handleError(_0x4c2341,null));};exports[_0x8ba9('0x38')]=function(_0x40563b,_0x498d42){return db[_0x8ba9('0x39')]['find']({'where':{'id':_0x40563b[_0x8ba9('0x36')]['id']}})[_0x8ba9('0x1c')](handleEntityNotFound(_0x498d42,null))['then'](function(_0x38e127){if(_0x38e127){return _0x38e127[_0x8ba9('0x38')](_0x40563b[_0x8ba9('0x35')][_0x8ba9('0x3a')],_[_0x8ba9('0x3b')](_0x40563b[_0x8ba9('0x35')],[_0x8ba9('0x3a'),'id'])||{});}})[_0x8ba9('0x1c')](respondWithResult(_0x498d42,null))[_0x8ba9('0x28')](handleError(_0x498d42,null));};exports[_0x8ba9('0x3c')]=function(_0x3a2d5e,_0x3a3fe6){var _0x1bfa83={'raw':![],'where':{}};var _0x484a80={};var _0x4a0ff0={'count':0x0,'rows':[]};return db[_0x8ba9('0x20')]['findOne']({'where':{'id':_0x3a2d5e[_0x8ba9('0x36')]['id']}})[_0x8ba9('0x1c')](handleEntityNotFound(_0x3a3fe6,null))[_0x8ba9('0x1c')](function(_0x393820){if(_0x393820){_0x484a80['model']=_[_0x8ba9('0x2a')](db[_0x8ba9('0x39')]['rawAttributes']);_0x484a80[_0x8ba9('0x2c')]=_['keys'](_0x3a2d5e[_0x8ba9('0x2c')]);_0x484a80[_0x8ba9('0x2d')]=_[_0x8ba9('0x2e')](_0x484a80['model'],_0x484a80[_0x8ba9('0x2c')]);_0x1bfa83[_0x8ba9('0x2f')]=_[_0x8ba9('0x2e')](_0x484a80['model'],qs[_0x8ba9('0x30')](_0x3a2d5e[_0x8ba9('0x2c')][_0x8ba9('0x30')]));_0x1bfa83[_0x8ba9('0x2f')]=_0x1bfa83[_0x8ba9('0x2f')]['length']?_0x1bfa83[_0x8ba9('0x2f')]:_0x484a80[_0x8ba9('0x29')];if(!_0x3a2d5e['query'][_0x8ba9('0x3d')](_0x8ba9('0x3e'))){_0x1bfa83['limit']=qs['limit'](_0x3a2d5e[_0x8ba9('0x2c')][_0x8ba9('0x17')]);_0x1bfa83[_0x8ba9('0x15')]=qs[_0x8ba9('0x15')](_0x3a2d5e[_0x8ba9('0x2c')][_0x8ba9('0x15')]);}_0x1bfa83[_0x8ba9('0x3f')]=qs[_0x8ba9('0x40')](_0x3a2d5e['query'][_0x8ba9('0x40')]);_0x1bfa83['where']=qs['filters'](_[_0x8ba9('0x41')](_0x3a2d5e[_0x8ba9('0x2c')],_0x484a80['filters']));_0x1bfa83[_0x8ba9('0x42')]['SmsInteractionId']=_0x393820['id'];if(_0x3a2d5e[_0x8ba9('0x2c')][_0x8ba9('0x43')]){_0x1bfa83[_0x8ba9('0x42')]=_['merge'](_0x1bfa83[_0x8ba9('0x42')],{'$or':_['map'](_0x1bfa83[_0x8ba9('0x2f')],function(_0xa52349){var _0x28bb80={};_0x28bb80[_0xa52349]={'$like':'%'+_0x3a2d5e[_0x8ba9('0x2c')][_0x8ba9('0x43')]+'%'};return _0x28bb80;})});}if(_0x3a2d5e[_0x8ba9('0x2c')][_0x8ba9('0x44')]){var _0x5502b2=_0x3a2d5e[_0x8ba9('0x2c')]['$gte'][_0x8ba9('0x45')](',');var _0x586491={};_0x586491[_0x5502b2[0x0]]={'$gte':moment(_0x5502b2[0x1])[_0x8ba9('0x46')](_0x8ba9('0x47'))};_0x1bfa83['where']=_[_0x8ba9('0x48')](_0x1bfa83[_0x8ba9('0x42')],_0x586491);}_0x1bfa83=_[_0x8ba9('0x48')]({},_0x1bfa83,_0x3a2d5e['options']);return db[_0x8ba9('0x39')][_0x8ba9('0x18')]({'where':_0x1bfa83[_0x8ba9('0x42')]})[_0x8ba9('0x1c')](function(_0x79caa6){_0x4a0ff0[_0x8ba9('0x18')]=_0x79caa6;if(_0x3a2d5e[_0x8ba9('0x2c')][_0x8ba9('0x32')]){_0x1bfa83[_0x8ba9('0x49')]=[{'all':!![]}];}return db[_0x8ba9('0x39')][_0x8ba9('0x25')](_0x1bfa83);})[_0x8ba9('0x1c')](function(_0x1bc2ef){_0x4a0ff0[_0x8ba9('0x4a')]=_0x1bc2ef;return _0x4a0ff0;});}})[_0x8ba9('0x1c')](respondWithFilteredResult(_0x3a3fe6,_0x1bfa83))[_0x8ba9('0x28')](handleError(_0x3a3fe6,null));};exports[_0x8ba9('0x4b')]=function(_0x27bcb1,_0x40f190){return db['SmsInteraction'][_0x8ba9('0x33')]({'where':{'id':_0x27bcb1[_0x8ba9('0x36')]['id']}})[_0x8ba9('0x1c')](handleEntityNotFound(_0x40f190,null))[_0x8ba9('0x1c')](function(_0x3fea97){if(_0x3fea97){return _0x3fea97[_0x8ba9('0x4c')](_0x27bcb1[_0x8ba9('0x35')][_0x8ba9('0x3a')],_[_0x8ba9('0x3b')](_0x27bcb1[_0x8ba9('0x35')],[_0x8ba9('0x3a'),'id'])||{})[_0x8ba9('0x4d')](function(){return db[_0x8ba9('0x4e')][_0x8ba9('0x25')]({'attributes':['id',_0x8ba9('0x1e'),_0x8ba9('0x4f')],'where':{'id':_0x27bcb1[_0x8ba9('0x35')][_0x8ba9('0x3a')]}});})[_0x8ba9('0x1c')](function(_0x3f1e43){socket[_0x8ba9('0x50')](_0x8ba9('0x51'),{'id':Number(_0x27bcb1[_0x8ba9('0x36')]['id']),'tags':_0x3f1e43||[]});return{'id':Number(_0x27bcb1[_0x8ba9('0x36')]['id']),'tags':_0x3f1e43||[]};});}})[_0x8ba9('0x1c')](respondWithResult(_0x40f190,null))['catch'](handleError(_0x40f190,null));};exports['removeTags']=function(_0x14f521,_0x268020){return db[_0x8ba9('0x20')]['find']({'where':{'id':_0x14f521[_0x8ba9('0x36')]['id']}})['then'](handleEntityNotFound(_0x268020,null))[_0x8ba9('0x1c')](function(_0x4c2ead){if(_0x4c2ead){return _0x4c2ead[_0x8ba9('0x52')](_0x14f521[_0x8ba9('0x2c')]['ids']);}})[_0x8ba9('0x1c')](respondWithStatusCode(_0x268020,null))[_0x8ba9('0x28')](handleError(_0x268020,null));};exports[_0x8ba9('0x53')]=function(_0x41187e,_0x19f1f6){var _0xbf8ec1=moment()[_0x8ba9('0x54')]()['toString']();var _0x2dc148=path['join'](config[_0x8ba9('0x55')],'server',_0x8ba9('0x56'),_0x8ba9('0x57'));var _0x2701f3=path['join'](_0x2dc148,_0xbf8ec1);var _0x184490=util[_0x8ba9('0x46')](_0x8ba9('0x58'),_0x41187e[_0x8ba9('0x36')]['id'],_0xbf8ec1);var _0x170eb8=path['join'](_0x2dc148,_0x184490);var _0x352097=[];_0x352097[_0x8ba9('0x59')]({'model':db[_0x8ba9('0x5a')],'as':_0x8ba9('0x5a'),'attributes':['id',_0x8ba9('0x5b')],'raw':!![]});_0x352097['push']({'model':db[_0x8ba9('0x5c')],'as':_0x8ba9('0x5d'),'attributes':['id',_0x8ba9('0x5e'),_0x8ba9('0x5f')],'raw':!![]});var _0x5efade=[{'model':db[_0x8ba9('0x39')],'as':'Messages','attributes':['id',_0x8ba9('0x35'),_0x8ba9('0x60'),'direction',_0x8ba9('0x61'),'read'],'include':_0x352097}];_0x5efade[_0x8ba9('0x59')]({'model':db[_0x8ba9('0x62')],'as':'Account','attributes':['id',_0x8ba9('0x1e')]});_0x5efade[_0x8ba9('0x59')]({'model':db['User'],'as':_0x8ba9('0x63'),'attributes':['id',_0x8ba9('0x5b')]});return db[_0x8ba9('0x20')][_0x8ba9('0x33')]({'where':{'id':_0x41187e[_0x8ba9('0x36')]['id']},'include':_0x5efade})['then'](handleEntityNotFound(_0x19f1f6,null))[_0x8ba9('0x1c')](function(_0x4bd4da){if(_0x4bd4da){var _0x433d20=_0x4bd4da[_0x8ba9('0x64')]({'plain':!![]});fs[_0x8ba9('0x65')](_0x2701f3);var _0x512303={'channel':_0x8ba9('0x66'),'account':_0x433d20[_0x8ba9('0x67')][_0x8ba9('0x1e')],'agent':_0x433d20[_0x8ba9('0x63')]?_0x433d20[_0x8ba9('0x63')][_0x8ba9('0x5b')]:'N.A.','createdAt':moment(_0x433d20[_0x8ba9('0x60')])[_0x8ba9('0x46')](_0x8ba9('0x47'))[_0x8ba9('0x68')](),'closedAt':_0x433d20[_0x8ba9('0x69')]?moment(_0x433d20['closedAt'])[_0x8ba9('0x46')]('YYYY-MM-DD\x20HH:mm:ss')['toString']():'','disposition':_0x433d20[_0x8ba9('0x6a')],'messages':_(_0x433d20[_0x8ba9('0x6b')])[_0x8ba9('0x43')]({'secret':![]})[_0x8ba9('0x6c')](function(_0x2a4dd1){return{'date':moment(_0x2a4dd1[_0x8ba9('0x60')])['format'](_0x8ba9('0x47'))[_0x8ba9('0x68')](),'sender':_0x2a4dd1[_0x8ba9('0x6d')]===_0x8ba9('0x6e')?_0x2a4dd1[_0x8ba9('0x5a')]?_0x2a4dd1[_0x8ba9('0x5a')][_0x8ba9('0x5b')]:_0x8ba9('0x6f'):_0x2a4dd1[_0x8ba9('0x5d')]['firstName']+(_0x2a4dd1[_0x8ba9('0x5d')]['lastName']?'\x20'+_0x2a4dd1['Contact'][_0x8ba9('0x5f')]:''),'body':_0x2a4dd1['body'],'direction':_0x2a4dd1[_0x8ba9('0x6d')]===_0x8ba9('0x6e')?'A':'C','secret':_0x2a4dd1[_0x8ba9('0x61')],'read':_0x2a4dd1[_0x8ba9('0x70')]};})['value']()};return ejs[_0x8ba9('0x71')](path[_0x8ba9('0x72')](config[_0x8ba9('0x55')],_0x8ba9('0x73'),_0x8ba9('0x74'),_0x8ba9('0x75')),{'interaction':_0x512303})[_0x8ba9('0x1c')](function(_0x5802e1){var _0x5b2146=path[_0x8ba9('0x72')](_0x2701f3,_0x8ba9('0x76')+_0x433d20['id']+'-'+_0xbf8ec1+_0x8ba9('0x77'));var _0x265468={'path':_0x5b2146,'channel':'Sms','interactionId':_0x433d20['id']};return pdf[_0x8ba9('0x78')](_0x5802e1,_0x265468);})[_0x8ba9('0x1c')](function(){return new BPromise(function(_0x5c2687,_0x1fee93){zipdir(_0x2701f3,{'saveTo':_0x170eb8},function(_0x56912a,_0x421dbd){if(_0x56912a)return _0x1fee93(_0x56912a);return _0x5c2687(_0x421dbd);});})['then'](function(){return new BPromise(function(_0x4b96d9,_0x13d289){rimraf(_0x2701f3,function(_0x3e7dc8){if(_0x3e7dc8)_0x13d289(_0x3e7dc8);return _0x4b96d9();});});})[_0x8ba9('0x1c')](function(){return _0x19f1f6[_0x8ba9('0x53')](_0x170eb8,_0x184490,function(_0xce0f6e){if(_0xce0f6e){console[_0x8ba9('0x79')](_0x8ba9('0x7a'),_0xce0f6e);}else{fs[_0x8ba9('0x7b')](_0x170eb8);}});});});}else{return _0x19f1f6[_0x8ba9('0x11')](0xc8);}})[_0x8ba9('0x28')](handleError(_0x19f1f6,null));};
\ No newline at end of file
+var _0x1d34=['ids','omit','getMessages','findOne','hasOwnProperty','nolimit','order','sort','pick','SmsInteractionId','where','filter','$gte','split','format','include','setTags','findAll','color','emit','smsInteractionTags:save','removeTags','download','unix','toString','root','tmp','join','transcript-%d-%s.zip','User','fullname','push','firstName','createdAt','direction','read','SmsAccount','Account','Owner','mkdirSync','Sms','closed','closedAt','YYYY-MM-DD\x20HH:mm:ss','disposition','Messages','out','Contact','lastName','secret','renderFile','server','views','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','err','unlinkSync','zip-dir','moment','bluebird','path','ejs','lodash','../../components/interaction/service','../../components/parsers/qs','api','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','./smsInteraction.socket','register','status','end','json','offset','limit','undefined','count','set','Content-Range','update','then','destroy','error','name','send','index','map','rawAttributes','fieldName','key','getOptions','sms','query','user','catch','show','params','model','keys','filters','intersection','attributes','fields','length','includeAll','merge','options','SmsInteraction','find','create','body','describe','addMessage','SmsMessage'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1d34,0xb2));var _0x41d3=function(_0x484320,_0x2de5d2){_0x484320=_0x484320-0x0;var _0x28a3b0=_0x1d34[_0x484320];return _0x28a3b0;};'use strict';var rimraf=require('rimraf');var zipdir=require(_0x41d3('0x0'));var moment=require(_0x41d3('0x1'));var BPromise=require(_0x41d3('0x2'));var util=require('util');var path=require(_0x41d3('0x3'));var ejs=require(_0x41d3('0x4'));var fs=require('fs');var _=require(_0x41d3('0x5'));var Redis=require('ioredis');var interaction=require(_0x41d3('0x6'));var qs=require(_0x41d3('0x7'));var pdf=require('../../components/export/pdf');var logger=require('../../config/logger')(_0x41d3('0x8'));var config=require(_0x41d3('0x9'));var db=require(_0x41d3('0xa'))['db'];config[_0x41d3('0xb')]=_[_0x41d3('0xc')](config[_0x41d3('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x41d3('0xd'))(new Redis(config['redis']));require(_0x41d3('0xe'))[_0x41d3('0xf')](socket);function respondWithStatusCode(_0x1f8be4,_0x29741b){_0x29741b=_0x29741b||0xcc;return function(_0x2e38f8){if(_0x2e38f8){return _0x1f8be4['sendStatus'](_0x29741b);}return _0x1f8be4[_0x41d3('0x10')](_0x29741b)[_0x41d3('0x11')]();};}function respondWithResult(_0x58a855,_0x56821c){_0x56821c=_0x56821c||0xc8;return function(_0x13647b){if(_0x13647b){return _0x58a855[_0x41d3('0x10')](_0x56821c)[_0x41d3('0x12')](_0x13647b);}};}function respondWithFilteredResult(_0x4b209c,_0x425d94){return function(_0x2ebf55){if(_0x2ebf55){var _0x347921=typeof _0x425d94[_0x41d3('0x13')]==='undefined'&&typeof _0x425d94[_0x41d3('0x14')]===_0x41d3('0x15');var _0x489e7b=_0x2ebf55[_0x41d3('0x16')];var _0x42c703=_0x347921?0x0:_0x425d94[_0x41d3('0x13')];var _0x1aa584=_0x347921?_0x2ebf55[_0x41d3('0x16')]:_0x425d94[_0x41d3('0x13')]+_0x425d94[_0x41d3('0x14')];var _0x41c60d;if(_0x1aa584>=_0x489e7b){_0x1aa584=_0x489e7b;_0x41c60d=0xc8;}else{_0x41c60d=0xce;}_0x4b209c[_0x41d3('0x10')](_0x41c60d);return _0x4b209c[_0x41d3('0x17')](_0x41d3('0x18'),_0x42c703+'-'+_0x1aa584+'/'+_0x489e7b)['json'](_0x2ebf55);}return null;};}function saveUpdates(_0x56b706){return function(_0x388ea1){if(_0x388ea1){return _0x388ea1[_0x41d3('0x19')](_0x56b706)[_0x41d3('0x1a')](function(_0x2b251e){return _0x2b251e;});}return null;};}function removeEntity(_0x52e015){return function(_0x227723){if(_0x227723){return _0x227723[_0x41d3('0x1b')]()[_0x41d3('0x1a')](function(){_0x52e015[_0x41d3('0x10')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1371e4){return function(_0x20dea2){if(!_0x20dea2){_0x1371e4['sendStatus'](0x194);}return _0x20dea2;};}function handleError(_0x76b1c6,_0x48aa22){_0x48aa22=_0x48aa22||0x1f4;return function(_0x1c9938){logger[_0x41d3('0x1c')](_0x1c9938['stack']);if(_0x1c9938[_0x41d3('0x1d')]){delete _0x1c9938['name'];}_0x76b1c6['status'](_0x48aa22)[_0x41d3('0x1e')](_0x1c9938);};}exports[_0x41d3('0x1f')]=function(_0x252d0d,_0xec4a3d){var _0x4abf3c={};var _0x649791=_[_0x41d3('0x20')](db['SmsInteraction'][_0x41d3('0x21')],function(_0x37fe3c){return{'name':_0x37fe3c[_0x41d3('0x22')],'type':_0x37fe3c['type'][_0x41d3('0x23')]};});_0x4abf3c=qs[_0x41d3('0x24')](_0x649791,_0x252d0d);return interaction['findAll'](_0x41d3('0x25'),_0x252d0d[_0x41d3('0x26')],_0x252d0d[_0x41d3('0x27')],_0x4abf3c,_0x649791)[_0x41d3('0x1a')](respondWithFilteredResult(_0xec4a3d,_0x4abf3c))[_0x41d3('0x28')](handleError(_0xec4a3d,null));};exports[_0x41d3('0x29')]=function(_0xc107fd,_0x38dcab){var _0x4641db={'raw':![],'where':{'id':_0xc107fd[_0x41d3('0x2a')]['id']}},_0x32edff={};_0x32edff[_0x41d3('0x2b')]=_['keys'](db['SmsInteraction'][_0x41d3('0x21')]);_0x32edff[_0x41d3('0x26')]=_[_0x41d3('0x2c')](_0xc107fd['query']);_0x32edff[_0x41d3('0x2d')]=_[_0x41d3('0x2e')](_0x32edff['model'],_0x32edff[_0x41d3('0x26')]);_0x4641db[_0x41d3('0x2f')]=_[_0x41d3('0x2e')](_0x32edff[_0x41d3('0x2b')],qs[_0x41d3('0x30')](_0xc107fd[_0x41d3('0x26')]['fields']));_0x4641db[_0x41d3('0x2f')]=_0x4641db[_0x41d3('0x2f')][_0x41d3('0x31')]?_0x4641db[_0x41d3('0x2f')]:_0x32edff['model'];if(_0xc107fd[_0x41d3('0x26')][_0x41d3('0x32')]){_0x4641db['include']=[{'all':!![]}];}_0x4641db=_[_0x41d3('0x33')]({},_0x4641db,_0xc107fd[_0x41d3('0x34')]);return db[_0x41d3('0x35')][_0x41d3('0x36')](_0x4641db)[_0x41d3('0x1a')](handleEntityNotFound(_0x38dcab,null))[_0x41d3('0x1a')](respondWithResult(_0x38dcab,null))[_0x41d3('0x28')](handleError(_0x38dcab,null));};exports[_0x41d3('0x37')]=function(_0x3d0b52,_0x2a71aa){return db[_0x41d3('0x35')][_0x41d3('0x37')](_0x3d0b52['body'],{})[_0x41d3('0x1a')](respondWithResult(_0x2a71aa,0xc9))['catch'](handleError(_0x2a71aa,null));};exports[_0x41d3('0x19')]=function(_0x1ad1a1,_0x454df2){if(_0x1ad1a1[_0x41d3('0x38')]['id']){delete _0x1ad1a1[_0x41d3('0x38')]['id'];}return db[_0x41d3('0x35')][_0x41d3('0x36')]({'where':{'id':_0x1ad1a1[_0x41d3('0x2a')]['id']}})[_0x41d3('0x1a')](handleEntityNotFound(_0x454df2,null))[_0x41d3('0x1a')](saveUpdates(_0x1ad1a1['body'],null))['then'](respondWithResult(_0x454df2,null))[_0x41d3('0x28')](handleError(_0x454df2,null));};exports[_0x41d3('0x1b')]=function(_0x2412a2,_0x1c592b){return db['SmsInteraction'][_0x41d3('0x36')]({'where':{'id':_0x2412a2[_0x41d3('0x2a')]['id']}})[_0x41d3('0x1a')](handleEntityNotFound(_0x1c592b,null))[_0x41d3('0x1a')](removeEntity(_0x1c592b,null))[_0x41d3('0x28')](handleError(_0x1c592b,null));};exports[_0x41d3('0x39')]=function(_0x1a445d,_0x18c116){return db['SmsInteraction'][_0x41d3('0x39')]()[_0x41d3('0x1a')](respondWithResult(_0x18c116,null))[_0x41d3('0x28')](handleError(_0x18c116,null));};exports[_0x41d3('0x3a')]=function(_0x108681,_0x13e782){return db[_0x41d3('0x3b')][_0x41d3('0x36')]({'where':{'id':_0x108681[_0x41d3('0x2a')]['id']}})[_0x41d3('0x1a')](handleEntityNotFound(_0x13e782,null))[_0x41d3('0x1a')](function(_0x35791d){if(_0x35791d){return _0x35791d['addMessage'](_0x108681[_0x41d3('0x38')][_0x41d3('0x3c')],_[_0x41d3('0x3d')](_0x108681['body'],[_0x41d3('0x3c'),'id'])||{});}})[_0x41d3('0x1a')](respondWithResult(_0x13e782,null))[_0x41d3('0x28')](handleError(_0x13e782,null));};exports[_0x41d3('0x3e')]=function(_0x37027b,_0x3d4ae9){var _0x24ffac={'raw':![],'where':{}};var _0x55fa93={};var _0x363e1e={'count':0x0,'rows':[]};return db[_0x41d3('0x35')][_0x41d3('0x3f')]({'where':{'id':_0x37027b[_0x41d3('0x2a')]['id']}})['then'](handleEntityNotFound(_0x3d4ae9,null))[_0x41d3('0x1a')](function(_0x25a74b){if(_0x25a74b){_0x55fa93[_0x41d3('0x2b')]=_[_0x41d3('0x2c')](db[_0x41d3('0x3b')]['rawAttributes']);_0x55fa93[_0x41d3('0x26')]=_[_0x41d3('0x2c')](_0x37027b[_0x41d3('0x26')]);_0x55fa93['filters']=_['intersection'](_0x55fa93['model'],_0x55fa93['query']);_0x24ffac['attributes']=_[_0x41d3('0x2e')](_0x55fa93[_0x41d3('0x2b')],qs['fields'](_0x37027b[_0x41d3('0x26')]['fields']));_0x24ffac[_0x41d3('0x2f')]=_0x24ffac[_0x41d3('0x2f')][_0x41d3('0x31')]?_0x24ffac[_0x41d3('0x2f')]:_0x55fa93[_0x41d3('0x2b')];if(!_0x37027b[_0x41d3('0x26')][_0x41d3('0x40')](_0x41d3('0x41'))){_0x24ffac['limit']=qs[_0x41d3('0x14')](_0x37027b[_0x41d3('0x26')][_0x41d3('0x14')]);_0x24ffac['offset']=qs['offset'](_0x37027b['query']['offset']);}_0x24ffac[_0x41d3('0x42')]=qs[_0x41d3('0x43')](_0x37027b[_0x41d3('0x26')]['sort']);_0x24ffac['where']=qs[_0x41d3('0x2d')](_[_0x41d3('0x44')](_0x37027b[_0x41d3('0x26')],_0x55fa93[_0x41d3('0x2d')]));_0x24ffac['where'][_0x41d3('0x45')]=_0x25a74b['id'];if(_0x37027b[_0x41d3('0x26')]['filter']){_0x24ffac[_0x41d3('0x46')]=_[_0x41d3('0x33')](_0x24ffac[_0x41d3('0x46')],{'$or':_[_0x41d3('0x20')](_0x24ffac[_0x41d3('0x2f')],function(_0x33e07d){var _0x593476={};_0x593476[_0x33e07d]={'$like':'%'+_0x37027b[_0x41d3('0x26')][_0x41d3('0x47')]+'%'};return _0x593476;})});}if(_0x37027b[_0x41d3('0x26')][_0x41d3('0x48')]){var _0x2dae68=_0x37027b[_0x41d3('0x26')][_0x41d3('0x48')][_0x41d3('0x49')](',');var _0x388bdf={};_0x388bdf[_0x2dae68[0x0]]={'$gte':moment(_0x2dae68[0x1])[_0x41d3('0x4a')]('YYYY-MM-DD\x20HH:mm:ss')};_0x24ffac[_0x41d3('0x46')]=_[_0x41d3('0x33')](_0x24ffac[_0x41d3('0x46')],_0x388bdf);}_0x24ffac=_[_0x41d3('0x33')]({},_0x24ffac,_0x37027b[_0x41d3('0x34')]);return db[_0x41d3('0x3b')]['count']({'where':_0x24ffac['where']})[_0x41d3('0x1a')](function(_0x1604e6){_0x363e1e[_0x41d3('0x16')]=_0x1604e6;if(_0x37027b['query'][_0x41d3('0x32')]){_0x24ffac[_0x41d3('0x4b')]=[{'all':!![]}];}return db[_0x41d3('0x3b')]['findAll'](_0x24ffac);})[_0x41d3('0x1a')](function(_0x2f64e4){_0x363e1e['rows']=_0x2f64e4;return _0x363e1e;});}})['then'](respondWithFilteredResult(_0x3d4ae9,_0x24ffac))[_0x41d3('0x28')](handleError(_0x3d4ae9,null));};exports['addTags']=function(_0x18dce8,_0x35b064){return db[_0x41d3('0x35')]['find']({'where':{'id':_0x18dce8[_0x41d3('0x2a')]['id']}})[_0x41d3('0x1a')](handleEntityNotFound(_0x35b064,null))[_0x41d3('0x1a')](function(_0x1f52d9){if(_0x1f52d9){return _0x1f52d9[_0x41d3('0x4c')](_0x18dce8['body'][_0x41d3('0x3c')],_[_0x41d3('0x3d')](_0x18dce8[_0x41d3('0x38')],[_0x41d3('0x3c'),'id'])||{})['spread'](function(){return db['Tag'][_0x41d3('0x4d')]({'attributes':['id',_0x41d3('0x1d'),_0x41d3('0x4e')],'where':{'id':_0x18dce8[_0x41d3('0x38')][_0x41d3('0x3c')]}});})['then'](function(_0x4a142b){socket[_0x41d3('0x4f')](_0x41d3('0x50'),{'id':Number(_0x18dce8[_0x41d3('0x2a')]['id']),'tags':_0x4a142b||[]});return{'id':Number(_0x18dce8['params']['id']),'tags':_0x4a142b||[]};});}})[_0x41d3('0x1a')](respondWithResult(_0x35b064,null))['catch'](handleError(_0x35b064,null));};exports['removeTags']=function(_0x56c6e9,_0x497cb1){return db['SmsInteraction'][_0x41d3('0x36')]({'where':{'id':_0x56c6e9[_0x41d3('0x2a')]['id']}})[_0x41d3('0x1a')](handleEntityNotFound(_0x497cb1,null))[_0x41d3('0x1a')](function(_0x3f4f4f){if(_0x3f4f4f){return _0x3f4f4f[_0x41d3('0x51')](_0x56c6e9['query'][_0x41d3('0x3c')]);}})[_0x41d3('0x1a')](respondWithStatusCode(_0x497cb1,null))[_0x41d3('0x28')](handleError(_0x497cb1,null));};exports[_0x41d3('0x52')]=function(_0x4b85fb,_0x505e21){var _0x28b50a=moment()[_0x41d3('0x53')]()[_0x41d3('0x54')]();var _0x74382e=path['join'](config[_0x41d3('0x55')],'server','files',_0x41d3('0x56'));var _0xf4180c=path[_0x41d3('0x57')](_0x74382e,_0x28b50a);var _0x5e106b=util[_0x41d3('0x4a')](_0x41d3('0x58'),_0x4b85fb[_0x41d3('0x2a')]['id'],_0x28b50a);var _0x280d86=path[_0x41d3('0x57')](_0x74382e,_0x5e106b);var _0x1e3638=[];_0x1e3638['push']({'model':db[_0x41d3('0x59')],'as':_0x41d3('0x59'),'attributes':['id',_0x41d3('0x5a')],'raw':!![]});_0x1e3638[_0x41d3('0x5b')]({'model':db['CmContact'],'as':'Contact','attributes':['id',_0x41d3('0x5c'),'lastName'],'raw':!![]});var _0x3e2440=[{'model':db[_0x41d3('0x3b')],'as':'Messages','attributes':['id',_0x41d3('0x38'),_0x41d3('0x5d'),_0x41d3('0x5e'),'secret',_0x41d3('0x5f')],'include':_0x1e3638}];_0x3e2440[_0x41d3('0x5b')]({'model':db[_0x41d3('0x60')],'as':_0x41d3('0x61'),'attributes':['id',_0x41d3('0x1d')]});_0x3e2440['push']({'model':db[_0x41d3('0x59')],'as':_0x41d3('0x62'),'attributes':['id','fullname']});return db[_0x41d3('0x35')]['find']({'where':{'id':_0x4b85fb[_0x41d3('0x2a')]['id']},'include':_0x3e2440})['then'](handleEntityNotFound(_0x505e21,null))['then'](function(_0x2cc81f){if(_0x2cc81f){var _0x12ad2e=_0x2cc81f['get']({'plain':!![]});fs[_0x41d3('0x63')](_0xf4180c);var _0xfc5683={'channel':_0x41d3('0x64'),'account':_0x12ad2e[_0x41d3('0x61')][_0x41d3('0x1d')],'agent':_0x12ad2e[_0x41d3('0x62')]?_0x12ad2e[_0x41d3('0x62')][_0x41d3('0x5a')]:'N.A.','createdAt':moment(_0x12ad2e['createdAt'])['format']('YYYY-MM-DD\x20HH:mm:ss')[_0x41d3('0x54')](),'closedAt':_0x12ad2e[_0x41d3('0x65')]?moment(_0x12ad2e[_0x41d3('0x66')])[_0x41d3('0x4a')](_0x41d3('0x67'))['toString']():'','disposition':_0x12ad2e[_0x41d3('0x68')],'messages':_(_0x12ad2e[_0x41d3('0x69')])[_0x41d3('0x47')]({'secret':![]})['map'](function(_0x366f50){return{'date':moment(_0x366f50[_0x41d3('0x5d')])[_0x41d3('0x4a')](_0x41d3('0x67'))[_0x41d3('0x54')](),'sender':_0x366f50['direction']===_0x41d3('0x6a')?_0x366f50[_0x41d3('0x59')]?_0x366f50[_0x41d3('0x59')]['fullname']:'System':_0x366f50['Contact'][_0x41d3('0x5c')]+(_0x366f50[_0x41d3('0x6b')][_0x41d3('0x6c')]?'\x20'+_0x366f50[_0x41d3('0x6b')][_0x41d3('0x6c')]:''),'body':_0x366f50['body'],'direction':_0x366f50[_0x41d3('0x5e')]===_0x41d3('0x6a')?'A':'C','secret':_0x366f50[_0x41d3('0x6d')],'read':_0x366f50['read']};})['value']()};return ejs[_0x41d3('0x6e')](path[_0x41d3('0x57')](config['root'],_0x41d3('0x6f'),_0x41d3('0x70'),_0x41d3('0x71')),{'interaction':_0xfc5683})['then'](function(_0x4c6426){var _0x3efbbb=path[_0x41d3('0x57')](_0xf4180c,_0x41d3('0x72')+_0x12ad2e['id']+'-'+_0x28b50a+_0x41d3('0x73'));var _0x5efca4={'path':_0x3efbbb,'channel':_0x41d3('0x64'),'interactionId':_0x12ad2e['id']};return pdf[_0x41d3('0x74')](_0x4c6426,_0x5efca4);})[_0x41d3('0x1a')](function(){return new BPromise(function(_0x5bea94,_0x1378bd){zipdir(_0xf4180c,{'saveTo':_0x280d86},function(_0x2ea297,_0x295875){if(_0x2ea297)return _0x1378bd(_0x2ea297);return _0x5bea94(_0x295875);});})[_0x41d3('0x1a')](function(){return new BPromise(function(_0x36de8d,_0x61d5ad){rimraf(_0xf4180c,function(_0x31633f){if(_0x31633f)_0x61d5ad(_0x31633f);return _0x36de8d();});});})['then'](function(){return _0x505e21[_0x41d3('0x52')](_0x280d86,_0x5e106b,function(_0x5ee7f4){if(_0x5ee7f4){console['log'](_0x41d3('0x75'),_0x5ee7f4);}else{fs[_0x41d3('0x76')](_0x280d86);}});});});}else{return _0x505e21['sendStatus'](0xc8);}})['catch'](handleError(_0x505e21,null));};
\ No newline at end of file
index f6ae302..b57a48d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b12=['exports','events','../../mysqldb','SmsInteraction','SmsMessage','save','update','setDataValue','Users','map','findAll','then','unreadMessages','length','emit','catch','hasOwnProperty','hook'];(function(_0xa57e2c,_0x259d77){var _0x18882a=function(_0x31a665){while(--_0x31a665){_0xa57e2c['push'](_0xa57e2c['shift']());}};_0x18882a(++_0x259d77);}(_0x5b12,0xa3));var _0x25b1=function(_0x5127fc,_0x10bab7){_0x5127fc=_0x5127fc-0x0;var _0x26ebf7=_0x5b12[_0x5127fc];return _0x26ebf7;};'use strict';var EventEmitter=require(_0x25b1('0x0'));var SmsInteraction=require(_0x25b1('0x1'))['db'][_0x25b1('0x2')];var SmsMessage=require('../../mysqldb')['db'][_0x25b1('0x3')];var SmsInteractionEvents=new EventEmitter();SmsInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x25b1('0x4'),'afterUpdate':_0x25b1('0x5'),'afterDestroy':'remove'};function emitEvent(_0x31f3fc){return function(_0x56378e,_0x5248c2,_0x35d90b){_0x56378e['getUsers']({'attributes':['id'],'raw':!![]})['then'](function(_0x1f715d){_0x56378e[_0x25b1('0x6')](_0x25b1('0x7'),_0x1f715d[_0x25b1('0x8')](function(_0x1ed594){return{'id':_0x1ed594['id']};}));return SmsMessage[_0x25b1('0x9')]({'where':{'SmsInteractionId':_0x56378e['id'],'direction':'in','read':![]},'raw':!![]});})[_0x25b1('0xa')](function(_0x6235e2){_0x56378e['setDataValue'](_0x25b1('0xb'),_0x6235e2[_0x25b1('0xc')]);SmsInteractionEvents[_0x25b1('0xd')](_0x31f3fc+':'+_0x56378e['id'],_0x56378e);SmsInteractionEvents[_0x25b1('0xd')](_0x31f3fc,_0x56378e);_0x35d90b(null);})[_0x25b1('0xe')](_0x35d90b(null));};}for(var e in events){if(events[_0x25b1('0xf')](e)){var event=events[e];SmsInteraction[_0x25b1('0x10')](e,emitEvent(event));}}module[_0x25b1('0x11')]=SmsInteractionEvents;
\ No newline at end of file
+var _0x2032=['Users','map','unreadMessages','length','emit','hasOwnProperty','exports','../../mysqldb','SmsInteraction','setMaxListeners','save','remove','getUsers','then','setDataValue'];(function(_0x3740fe,_0x6c543c){var _0x55492b=function(_0x1f851f){while(--_0x1f851f){_0x3740fe['push'](_0x3740fe['shift']());}};_0x55492b(++_0x6c543c);}(_0x2032,0xd9));var _0x2203=function(_0x4d9727,_0x56c399){_0x4d9727=_0x4d9727-0x0;var _0x4a6844=_0x2032[_0x4d9727];return _0x4a6844;};'use strict';var EventEmitter=require('events');var SmsInteraction=require(_0x2203('0x0'))['db'][_0x2203('0x1')];var SmsMessage=require(_0x2203('0x0'))['db']['SmsMessage'];var SmsInteractionEvents=new EventEmitter();SmsInteractionEvents[_0x2203('0x2')](0x0);var events={'afterCreate':_0x2203('0x3'),'afterUpdate':'update','afterDestroy':_0x2203('0x4')};function emitEvent(_0x880dcd){return function(_0x44ccfd,_0x201796,_0x3f7ba1){_0x44ccfd[_0x2203('0x5')]({'attributes':['id'],'raw':!![]})[_0x2203('0x6')](function(_0x2676aa){_0x44ccfd[_0x2203('0x7')](_0x2203('0x8'),_0x2676aa[_0x2203('0x9')](function(_0x5ecf9e){return{'id':_0x5ecf9e['id']};}));return SmsMessage['findAll']({'where':{'SmsInteractionId':_0x44ccfd['id'],'direction':'in','read':![]},'raw':!![]});})[_0x2203('0x6')](function(_0x549908){_0x44ccfd[_0x2203('0x7')](_0x2203('0xa'),_0x549908[_0x2203('0xb')]);SmsInteractionEvents['emit'](_0x880dcd+':'+_0x44ccfd['id'],_0x44ccfd);SmsInteractionEvents[_0x2203('0xc')](_0x880dcd,_0x44ccfd);_0x3f7ba1(null);})['catch'](_0x3f7ba1(null));};}for(var e in events){if(events[_0x2203('0xd')](e)){var event=events[e];SmsInteraction['hook'](e,emitEvent(event));}}module[_0x2203('0xe')]=SmsInteractionEvents;
\ No newline at end of file
index d96cea2..6bdefb9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ed9=['sms_interactions','closed','closedAt','format','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports'];(function(_0x5699a0,_0x26289e){var _0x14eff2=function(_0x473f75){while(--_0x473f75){_0x5699a0['push'](_0x5699a0['shift']());}};_0x14eff2(++_0x26289e);}(_0x8ed9,0xc7));var _0x98ed=function(_0x4e76da,_0x291b71){_0x4e76da=_0x4e76da-0x0;var _0x5f14e8=_0x8ed9[_0x4e76da];return _0x5f14e8;};'use strict';var _=require('lodash');var util=require(_0x98ed('0x0'));var logger=require('../../config/logger')(_0x98ed('0x1'));var moment=require(_0x98ed('0x2'));var BPromise=require(_0x98ed('0x3'));var rp=require(_0x98ed('0x4'));var fs=require('fs');var path=require(_0x98ed('0x5'));var rimraf=require(_0x98ed('0x6'));var config=require(_0x98ed('0x7'));var attributes=require('./smsInteraction.attributes');module[_0x98ed('0x8')]=function(_0x2bd6eb,_0x2cc532){return _0x2bd6eb['define']('SmsInteraction',attributes,{'tableName':_0x98ed('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x37bc60,_0x417408,_0x2941ca){if(_0x37bc60['changed'](_0x98ed('0xa'))){_0x37bc60[_0x98ed('0xb')]=moment()[_0x98ed('0xc')]('YYYY-MM-DD\x20HH:mm:ss');}_0x2941ca(null,_0x37bc60);}}});};
\ No newline at end of file
+var _0x44ee=['sms_interactions','closed','closedAt','format','lodash','util','api','moment','bluebird','../../config/environment','./smsInteraction.attributes','SmsInteraction'];(function(_0x29dc8a,_0x784548){var _0x3512f1=function(_0x32191e){while(--_0x32191e){_0x29dc8a['push'](_0x29dc8a['shift']());}};_0x3512f1(++_0x784548);}(_0x44ee,0x1e4));var _0xe44e=function(_0x27472e,_0x7cee2f){_0x27472e=_0x27472e-0x0;var _0x3338fe=_0x44ee[_0x27472e];return _0x3338fe;};'use strict';var _=require(_0xe44e('0x0'));var util=require(_0xe44e('0x1'));var logger=require('../../config/logger')(_0xe44e('0x2'));var moment=require(_0xe44e('0x3'));var BPromise=require(_0xe44e('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xe44e('0x5'));var attributes=require(_0xe44e('0x6'));module['exports']=function(_0x255d1b,_0xa13921){return _0x255d1b['define'](_0xe44e('0x7'),attributes,{'tableName':_0xe44e('0x8'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x5d6d45,_0x516401,_0x7391ab){if(_0x5d6d45['changed'](_0xe44e('0x9'))){_0x5d6d45[_0xe44e('0xa')]=moment()[_0xe44e('0xb')]('YYYY-MM-DD\x20HH:mm:ss');}_0x7391ab(null,_0x5d6d45);}}});};
\ No newline at end of file
index 5b75050..ed83183 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8a62=['ids','omit','AddTags','lodash','moment','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','localhost','redis','./smsInteraction.socket','register','request','then','info','request\x20sent','debug','SmsInteraction,\x20%s,\x20%s,\x20%s','stringify','error','SmsInteraction,\x20%s,\x20%s','message','result','catch','SmsInteraction','update','options','raw','where','limit','UpdateSmsInteraction','AddTagsToSmsInteraction','find','addTags','body'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x8a62,0x9b));var _0x28a6=function(_0x2000dd,_0x234e25){_0x2000dd=_0x2000dd-0x0;var _0x4c6b54=_0x8a62[_0x2000dd];return _0x4c6b54;};'use strict';var _=require(_0x28a6('0x0'));var util=require('util');var moment=require(_0x28a6('0x1'));var BPromise=require('bluebird');var rs=require(_0x28a6('0x2'));var fs=require('fs');var Redis=require(_0x28a6('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x28a6('0x4'));var logger=require('../../config/logger')(_0x28a6('0x5'));var config=require(_0x28a6('0x6'));var jayson=require(_0x28a6('0x7'));var client=jayson['client']['http']({'port':0x232a});config['redis']=_['defaults'](config['redis'],{'host':_0x28a6('0x8'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x28a6('0x9')]));require(_0x28a6('0xa'))[_0x28a6('0xb')](socket);function respondWithRpcPromise(_0x4b3462,_0x283c4f,_0x369ae3){return new BPromise(function(_0x12df82,_0x50cfb2){return client[_0x28a6('0xc')](_0x4b3462,_0x369ae3)[_0x28a6('0xd')](function(_0x5880f9){logger[_0x28a6('0xe')]('SmsInteraction,\x20%s,\x20%s',_0x283c4f,_0x28a6('0xf'));logger[_0x28a6('0x10')](_0x28a6('0x11'),_0x283c4f,_0x28a6('0xf'),JSON[_0x28a6('0x12')](_0x5880f9));if(_0x5880f9[_0x28a6('0x13')]){if(_0x5880f9[_0x28a6('0x13')]['code']===0x1f4){logger[_0x28a6('0x13')](_0x28a6('0x14'),_0x283c4f,_0x5880f9['error'][_0x28a6('0x15')]);return _0x50cfb2(_0x5880f9[_0x28a6('0x13')]['message']);}logger['error'](_0x28a6('0x14'),_0x283c4f,_0x5880f9[_0x28a6('0x13')][_0x28a6('0x15')]);return _0x12df82(_0x5880f9[_0x28a6('0x13')][_0x28a6('0x15')]);}else{logger[_0x28a6('0xe')](_0x28a6('0x14'),_0x283c4f,'request\x20sent');_0x12df82(_0x5880f9[_0x28a6('0x16')][_0x28a6('0x15')]);}})[_0x28a6('0x17')](function(_0x12c059){logger[_0x28a6('0x13')](_0x28a6('0x14'),_0x283c4f,_0x12c059);_0x50cfb2(_0x12c059);});});}exports['UpdateSmsInteraction']=function(_0x561ae5){var _0x329675=this;return new Promise(function(_0x4793a8,_0x37924e){return db[_0x28a6('0x18')][_0x28a6('0x19')](_0x561ae5['body'],{'raw':_0x561ae5[_0x28a6('0x1a')]?_0x561ae5[_0x28a6('0x1a')][_0x28a6('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x561ae5['options']?_0x561ae5['options'][_0x28a6('0x1c')]||null:null,'attributes':_0x561ae5[_0x28a6('0x1a')]?_0x561ae5[_0x28a6('0x1a')]['attributes']||null:null,'limit':_0x561ae5[_0x28a6('0x1a')]?_0x561ae5['options'][_0x28a6('0x1d')]||null:null})[_0x28a6('0xd')](function(_0xc08303){logger[_0x28a6('0xe')](_0x28a6('0x1e'),_0x561ae5);logger[_0x28a6('0x10')](_0x28a6('0x1e'),_0x561ae5,JSON['stringify'](_0xc08303));_0x4793a8(_0xc08303);})[_0x28a6('0x17')](function(_0x549dc9){logger['error'](_0x28a6('0x1e'),_0x549dc9[_0x28a6('0x15')],_0x561ae5);_0x37924e(_0x329675[_0x28a6('0x13')](0x1f4,_0x549dc9[_0x28a6('0x15')]));});});};exports[_0x28a6('0x1f')]=function(_0xb8a548){return new Promise(function(_0x5510d1,_0x1172e3){return db[_0x28a6('0x18')][_0x28a6('0x20')]({'where':_0xb8a548['options']?_0xb8a548['options'][_0x28a6('0x1c')]||null:null})[_0x28a6('0xd')](function(_0x161131){if(_0x161131){return _0x161131[_0x28a6('0x21')](_0xb8a548[_0x28a6('0x22')][_0x28a6('0x23')],_[_0x28a6('0x24')](_0xb8a548['body'],[_0x28a6('0x23'),'id'])||{});}})['spread'](function(_0x30954b){logger[_0x28a6('0xe')](_0x28a6('0x25'),_0xb8a548);logger[_0x28a6('0x10')](_0x28a6('0x25'),_0xb8a548,JSON[_0x28a6('0x12')](_0x30954b));_0x5510d1(_0x30954b);})[_0x28a6('0x17')](function(_0x29c4ac){logger[_0x28a6('0x13')]('AddTags',_0x29c4ac['message'],_0xb8a548);_0x1172e3(_this[_0x28a6('0x13')](0x1f4,_0x29c4ac['message']));});});};
\ No newline at end of file
+var _0xbfb9=['catch','SmsInteraction','body','options','where','attributes','limit','UpdateSmsInteraction','find','addTags','ids','omit','AddTags','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','./smsInteraction.socket','register','request','then','info','SmsInteraction,\x20%s,\x20%s','request\x20sent','debug','SmsInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result'];(function(_0xb4a391,_0x4ac686){var _0x33547f=function(_0x116b3c){while(--_0x116b3c){_0xb4a391['push'](_0xb4a391['shift']());}};_0x33547f(++_0x4ac686);}(_0xbfb9,0x88));var _0x9bfb=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0xbfb9[_0x502c7d];return _0x30b7ed;};'use strict';var _=require(_0x9bfb('0x0'));var util=require('util');var moment=require(_0x9bfb('0x1'));var BPromise=require(_0x9bfb('0x2'));var rs=require(_0x9bfb('0x3'));var fs=require('fs');var Redis=require(_0x9bfb('0x4'));var db=require(_0x9bfb('0x5'))['db'];var utils=require(_0x9bfb('0x6'));var logger=require('../../config/logger')(_0x9bfb('0x7'));var config=require(_0x9bfb('0x8'));var jayson=require(_0x9bfb('0x9'));var client=jayson['client'][_0x9bfb('0xa')]({'port':0x232a});config[_0x9bfb('0xb')]=_[_0x9bfb('0xc')](config[_0x9bfb('0xb')],{'host':_0x9bfb('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x9bfb('0xe'))[_0x9bfb('0xf')](socket);function respondWithRpcPromise(_0x454e74,_0x48e2d7,_0x410a72){return new BPromise(function(_0xe279eb,_0x62c612){return client[_0x9bfb('0x10')](_0x454e74,_0x410a72)[_0x9bfb('0x11')](function(_0x58b61a){logger[_0x9bfb('0x12')](_0x9bfb('0x13'),_0x48e2d7,_0x9bfb('0x14'));logger[_0x9bfb('0x15')](_0x9bfb('0x16'),_0x48e2d7,'request\x20sent',JSON[_0x9bfb('0x17')](_0x58b61a));if(_0x58b61a[_0x9bfb('0x18')]){if(_0x58b61a[_0x9bfb('0x18')][_0x9bfb('0x19')]===0x1f4){logger[_0x9bfb('0x18')]('SmsInteraction,\x20%s,\x20%s',_0x48e2d7,_0x58b61a[_0x9bfb('0x18')]['message']);return _0x62c612(_0x58b61a[_0x9bfb('0x18')][_0x9bfb('0x1a')]);}logger[_0x9bfb('0x18')](_0x9bfb('0x13'),_0x48e2d7,_0x58b61a['error']['message']);return _0xe279eb(_0x58b61a[_0x9bfb('0x18')]['message']);}else{logger[_0x9bfb('0x12')]('SmsInteraction,\x20%s,\x20%s',_0x48e2d7,_0x9bfb('0x14'));_0xe279eb(_0x58b61a[_0x9bfb('0x1b')][_0x9bfb('0x1a')]);}})[_0x9bfb('0x1c')](function(_0x3184bb){logger[_0x9bfb('0x18')]('SmsInteraction,\x20%s,\x20%s',_0x48e2d7,_0x3184bb);_0x62c612(_0x3184bb);});});}exports['UpdateSmsInteraction']=function(_0x5c987c){var _0x4d35d5=this;return new Promise(function(_0x4dd117,_0x4f740a){return db[_0x9bfb('0x1d')]['update'](_0x5c987c[_0x9bfb('0x1e')],{'raw':_0x5c987c[_0x9bfb('0x1f')]?_0x5c987c[_0x9bfb('0x1f')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5c987c['options']?_0x5c987c['options'][_0x9bfb('0x20')]||null:null,'attributes':_0x5c987c[_0x9bfb('0x1f')]?_0x5c987c[_0x9bfb('0x1f')][_0x9bfb('0x21')]||null:null,'limit':_0x5c987c[_0x9bfb('0x1f')]?_0x5c987c['options'][_0x9bfb('0x22')]||null:null})[_0x9bfb('0x11')](function(_0x2f1b6a){logger['info'](_0x9bfb('0x23'),_0x5c987c);logger[_0x9bfb('0x15')](_0x9bfb('0x23'),_0x5c987c,JSON[_0x9bfb('0x17')](_0x2f1b6a));_0x4dd117(_0x2f1b6a);})[_0x9bfb('0x1c')](function(_0x2e01fe){logger[_0x9bfb('0x18')](_0x9bfb('0x23'),_0x2e01fe[_0x9bfb('0x1a')],_0x5c987c);_0x4f740a(_0x4d35d5[_0x9bfb('0x18')](0x1f4,_0x2e01fe['message']));});});};exports['AddTagsToSmsInteraction']=function(_0x118d2f){return new Promise(function(_0x1e9751,_0x5be396){return db['SmsInteraction'][_0x9bfb('0x24')]({'where':_0x118d2f['options']?_0x118d2f[_0x9bfb('0x1f')][_0x9bfb('0x20')]||null:null})[_0x9bfb('0x11')](function(_0x41d364){if(_0x41d364){return _0x41d364[_0x9bfb('0x25')](_0x118d2f[_0x9bfb('0x1e')][_0x9bfb('0x26')],_[_0x9bfb('0x27')](_0x118d2f['body'],[_0x9bfb('0x26'),'id'])||{});}})['spread'](function(_0x3a2892){logger[_0x9bfb('0x12')](_0x9bfb('0x28'),_0x118d2f);logger[_0x9bfb('0x15')](_0x9bfb('0x28'),_0x118d2f,JSON['stringify'](_0x3a2892));_0x1e9751(_0x3a2892);})[_0x9bfb('0x1c')](function(_0x1cfc03){logger['error']('AddTags',_0x1cfc03['message'],_0x118d2f);_0x5be396(_this[_0x9bfb('0x18')](0x1f4,_0x1cfc03[_0x9bfb('0x1a')]));});});};
\ No newline at end of file
index 3a18c20..b3a3b6f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf882=['update','emit','register','length','smsInteraction:','./smsInteraction.events','save','remove'];(function(_0x323591,_0x518650){var _0x423982=function(_0x1b7a15){while(--_0x1b7a15){_0x323591['push'](_0x323591['shift']());}};_0x423982(++_0x518650);}(_0xf882,0xcd));var _0x2f88=function(_0x4ec43f,_0x3b3cba){_0x4ec43f=_0x4ec43f-0x0;var _0x49afc3=_0xf882[_0x4ec43f];return _0x49afc3;};'use strict';var SmsInteractionEvents=require(_0x2f88('0x0'));var events=[_0x2f88('0x1'),_0x2f88('0x2'),_0x2f88('0x3')];function createListener(_0x44c842,_0x1d0edd){return function(_0x584f0c){_0x1d0edd[_0x2f88('0x4')](_0x44c842,_0x584f0c);};}function removeListener(_0x24522f,_0x59555e){return function(){SmsInteractionEvents['removeListener'](_0x24522f,_0x59555e);};}exports[_0x2f88('0x5')]=function(_0x36a0f1){for(var _0x4ba175=0x0,_0x5b0935=events[_0x2f88('0x6')];_0x4ba175<_0x5b0935;_0x4ba175++){var _0xf8962b=events[_0x4ba175];var _0x1a5117=createListener(_0x2f88('0x7')+_0xf8962b,_0x36a0f1);SmsInteractionEvents['on'](_0xf8962b,_0x1a5117);}};
\ No newline at end of file
+var _0x99a8=['length','smsInteraction:','save','remove','register'];(function(_0x59d89e,_0x55edf5){var _0x554e93=function(_0x3d40bc){while(--_0x3d40bc){_0x59d89e['push'](_0x59d89e['shift']());}};_0x554e93(++_0x55edf5);}(_0x99a8,0x1bf));var _0x899a=function(_0x23d09e,_0x58a82a){_0x23d09e=_0x23d09e-0x0;var _0x5abede=_0x99a8[_0x23d09e];return _0x5abede;};'use strict';var SmsInteractionEvents=require('./smsInteraction.events');var events=[_0x899a('0x0'),_0x899a('0x1'),'update'];function createListener(_0x4304c5,_0x289ef8){return function(_0x5a3a22){_0x289ef8['emit'](_0x4304c5,_0x5a3a22);};}function removeListener(_0x1f8f73,_0x289139){return function(){SmsInteractionEvents['removeListener'](_0x1f8f73,_0x289139);};}exports[_0x899a('0x2')]=function(_0x1acec){for(var _0x5c0ae9=0x0,_0xad4352=events[_0x899a('0x3')];_0x5c0ae9<_0xad4352;_0x5c0ae9++){var _0x2a2642=events[_0x5c0ae9];var _0x3c8d2f=createListener(_0x899a('0x4')+_0x2a2642,_0x1acec);SmsInteractionEvents['on'](_0x2a2642,_0x3c8d2f);}};
\ No newline at end of file
index de4152b..523328a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa3b7=['index','get','/describe','describe','show','post','tracked','sms','create','/:id/status','put','/:id','update','/:id/accept','accept','/:id/reject','reject','delete','destroy','exports','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsMessage.controller','isAuthenticated'];(function(_0x4e1d03,_0x786f3a){var _0x362d4b=function(_0x1924d2){while(--_0x1924d2){_0x4e1d03['push'](_0x4e1d03['shift']());}};_0x362d4b(++_0x786f3a);}(_0xa3b7,0xe6));var _0x7a3b=function(_0x1fc1f9,_0x454fb2){_0x1fc1f9=_0x1fc1f9-0x0;var _0x4987ca=_0xa3b7[_0x1fc1f9];return _0x4987ca;};'use strict';var multer=require(_0x7a3b('0x0'));var util=require('util');var path=require(_0x7a3b('0x1'));var timeout=require('connect-timeout');var express=require(_0x7a3b('0x2'));var router=express[_0x7a3b('0x3')]();var fs_extra=require(_0x7a3b('0x4'));var auth=require(_0x7a3b('0x5'));var interaction=require(_0x7a3b('0x6'));var config=require(_0x7a3b('0x7'));var controller=require(_0x7a3b('0x8'));router['get']('/',auth[_0x7a3b('0x9')](),controller[_0x7a3b('0xa')]);router[_0x7a3b('0xb')](_0x7a3b('0xc'),auth[_0x7a3b('0x9')](),controller[_0x7a3b('0xd')]);router[_0x7a3b('0xb')]('/:id',auth[_0x7a3b('0x9')](),controller[_0x7a3b('0xe')]);router[_0x7a3b('0xf')]('/',auth[_0x7a3b('0x9')](),interaction[_0x7a3b('0x10')](_0x7a3b('0x11'),'smsmessage:create'),controller[_0x7a3b('0x12')]);router[_0x7a3b('0xf')](_0x7a3b('0x13'),controller['status']);router[_0x7a3b('0x14')](_0x7a3b('0x15'),auth['isAuthenticated'](),controller[_0x7a3b('0x16')]);router[_0x7a3b('0x14')](_0x7a3b('0x17'),auth['isAuthenticated'](),controller[_0x7a3b('0x18')]);router[_0x7a3b('0x14')](_0x7a3b('0x19'),auth['isAuthenticated'](),controller[_0x7a3b('0x1a')]);router[_0x7a3b('0x1b')]('/:id',auth[_0x7a3b('0x9')](),controller[_0x7a3b('0x1c')]);module[_0x7a3b('0x1d')]=router;
\ No newline at end of file
+var _0x7400=['put','/:id/accept','accept','reject','delete','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsMessage.controller','isAuthenticated','index','/describe','describe','get','/:id','show','post','tracked','sms','smsmessage:create','create','/:id/status','status','update'];(function(_0x5d4607,_0x6b5e7b){var _0x5e4a86=function(_0x46891a){while(--_0x46891a){_0x5d4607['push'](_0x5d4607['shift']());}};_0x5e4a86(++_0x6b5e7b);}(_0x7400,0x1d7));var _0x0740=function(_0x49a5f6,_0x2eea42){_0x49a5f6=_0x49a5f6-0x0;var _0x22fe92=_0x7400[_0x49a5f6];return _0x22fe92;};'use strict';var multer=require('multer');var util=require(_0x0740('0x0'));var path=require(_0x0740('0x1'));var timeout=require(_0x0740('0x2'));var express=require(_0x0740('0x3'));var router=express[_0x0740('0x4')]();var fs_extra=require(_0x0740('0x5'));var auth=require(_0x0740('0x6'));var interaction=require(_0x0740('0x7'));var config=require(_0x0740('0x8'));var controller=require(_0x0740('0x9'));router['get']('/',auth[_0x0740('0xa')](),controller[_0x0740('0xb')]);router['get'](_0x0740('0xc'),auth[_0x0740('0xa')](),controller[_0x0740('0xd')]);router[_0x0740('0xe')](_0x0740('0xf'),auth['isAuthenticated'](),controller[_0x0740('0x10')]);router[_0x0740('0x11')]('/',auth[_0x0740('0xa')](),interaction[_0x0740('0x12')](_0x0740('0x13'),_0x0740('0x14')),controller[_0x0740('0x15')]);router['post'](_0x0740('0x16'),controller[_0x0740('0x17')]);router['put'](_0x0740('0xf'),auth[_0x0740('0xa')](),controller[_0x0740('0x18')]);router[_0x0740('0x19')](_0x0740('0x1a'),auth[_0x0740('0xa')](),controller[_0x0740('0x1b')]);router[_0x0740('0x19')]('/:id/reject',auth['isAuthenticated'](),controller[_0x0740('0x1c')]);router[_0x0740('0x1d')](_0x0740('0xf'),auth[_0x0740('0xa')](),controller['destroy']);module[_0x0740('0x1e')]=router;
\ No newline at end of file
index f122495..4da1fa8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x63b6=['DATE','sequelize','exports','TEXT','BOOLEAN','out','STRING'];(function(_0x54deeb,_0x5eef4b){var _0x253a7e=function(_0xf07c51){while(--_0xf07c51){_0x54deeb['push'](_0x54deeb['shift']());}};_0x253a7e(++_0x5eef4b);}(_0x63b6,0x127));var _0x663b=function(_0x5c23ab,_0x49c1b3){_0x5c23ab=_0x5c23ab-0x0;var _0x2bbd93=_0x63b6[_0x5c23ab];return _0x2bbd93;};'use strict';var Sequelize=require(_0x663b('0x0'));module[_0x663b('0x1')]={'body':{'type':Sequelize[_0x663b('0x2')]('medium'),'allowNull':![]},'read':{'type':Sequelize[_0x663b('0x3')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0x663b('0x4')),'defaultValue':'out','allowNull':![]},'messageId':{'type':Sequelize[_0x663b('0x5')](0xbe)},'phone':{'type':Sequelize[_0x663b('0x5')]},'readAt':{'type':Sequelize[_0x663b('0x6')]},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'providerName':{'type':Sequelize[_0x663b('0x5')]},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
+var _0x0d84=['TEXT','ENUM','out','DATE','BOOLEAN','STRING','exports'];(function(_0x4687df,_0x12099c){var _0x32eaef=function(_0x2387db){while(--_0x2387db){_0x4687df['push'](_0x4687df['shift']());}};_0x32eaef(++_0x12099c);}(_0x0d84,0x16b));var _0x40d8=function(_0xe24110,_0x26190b){_0xe24110=_0xe24110-0x0;var _0x334c96=_0x0d84[_0xe24110];return _0x334c96;};'use strict';var Sequelize=require('sequelize');module[_0x40d8('0x0')]={'body':{'type':Sequelize[_0x40d8('0x1')]('medium'),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0x40d8('0x2')]('in','out'),'defaultValue':_0x40d8('0x3'),'allowNull':![]},'messageId':{'type':Sequelize['STRING'](0xbe)},'phone':{'type':Sequelize['STRING']},'readAt':{'type':Sequelize[_0x40d8('0x4')]},'secret':{'type':Sequelize[_0x40d8('0x5')],'defaultValue':![]},'providerName':{'type':Sequelize[_0x40d8('0x6')]},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index c49aaff..d531010 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa93a=['format','interaction','get','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','SELECT','contact','User','internal','manual','interface','channel','motionChannel','event','EventManager','acceptmessage','reject','[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','RejectMessage','rejectMessage','fullname','email','SIP/%s','rejectmessage','SmsAccountId','inspect','twilio','MessageSid','messageId','SmsAccount,\x20%s,\x20%s,\x20%s','plivo','MessageUUID','indexOf','sent','delivered','plivio','infobip','results','groupName','DELIVERED','zip-dir','moment','mustache','path','sox','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','papaparse','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../mysqldb','defaults','localhost','socket.io-emitter','redis','./smsMessage.socket','register','client','http','request','then','info','request\x20sent','debug','SmsMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','SmsMessage,\x20%s,\x20%s','message','catch','sendStatus','status','end','offset','limit','undefined','count','Content-Range','json','save','stack','name','index','map','rawAttributes','fieldName','type','query','keys','filters','attributes','fields','length','hasOwnProperty','order','sort','pick','filter','VIRTUAL','merge','options','where','SmsMessage','includeAll','include','findAll','show','params','model','intersection','find','create','body','update','describe','sms-interactions','sms','read','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','SmsInteraction','SmsInteractionId'];(function(_0xd0ea7e,_0xa67ae6){var _0x52cad3=function(_0x4f8b5a){while(--_0x4f8b5a){_0xd0ea7e['push'](_0xd0ea7e['shift']());}};_0x52cad3(++_0xa67ae6);}(_0xa93a,0xb8));var _0xaa93=function(_0x3ca3aa,_0x1bc114){_0x3ca3aa=_0x3ca3aa-0x0;var _0x17cf3c=_0xa93a[_0x3ca3aa];return _0x17cf3c;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xaa93('0x0'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xaa93('0x1'));var BPromise=require('bluebird');var Mustache=require(_0xaa93('0x2'));var util=require('util');var path=require(_0xaa93('0x3'));var sox=require(_0xaa93('0x4'));var csv=require(_0xaa93('0x5'));var ejs=require(_0xaa93('0x6'));var fs=require('fs');var fs_extra=require(_0xaa93('0x7'));var _=require('lodash');var squel=require(_0xaa93('0x8'));var crypto=require(_0xaa93('0x9'));var jsforce=require('jsforce');var deskjs=require(_0xaa93('0xa'));var toCsv=require('to-csv');var querystring=require(_0xaa93('0xb'));var Papa=require(_0xaa93('0xc'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xaa93('0xd'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xaa93('0xe'))(_0xaa93('0xf'));var utils=require(_0xaa93('0x10'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xaa93('0x11'))['db'];config['redis']=_[_0xaa93('0x12')](config['redis'],{'host':_0xaa93('0x13'),'port':0x18eb});var socket=require(_0xaa93('0x14'))(new Redis(config[_0xaa93('0x15')]));require(_0xaa93('0x16'))[_0xaa93('0x17')](socket);var jayson=require('jayson/promise');var client=jayson[_0xaa93('0x18')]['http']({'port':0x232c});var client9002=jayson[_0xaa93('0x18')][_0xaa93('0x19')]({'port':0x232a});function respondWithRpcPromise(_0x59d73c,_0x543a57,_0x1394d5,_0x665c32){return new BPromise(function(_0x1cc0bc,_0x33cab3){var _0x1f6d57=_0x665c32||client;return _0x1f6d57[_0xaa93('0x1a')](_0x59d73c,_0x1394d5)[_0xaa93('0x1b')](function(_0x28b89d){logger[_0xaa93('0x1c')]('SmsMessage,\x20%s,\x20%s',_0x543a57,_0xaa93('0x1d'));logger[_0xaa93('0x1e')](_0xaa93('0x1f'),_0x543a57,'request\x20sent',JSON[_0xaa93('0x20')](_0x28b89d));if(_0x28b89d[_0xaa93('0x21')]){if(_0x28b89d['error'][_0xaa93('0x22')]===0x1f4){logger['error'](_0xaa93('0x23'),_0x543a57,_0x28b89d['error'][_0xaa93('0x24')]);return _0x33cab3(_0x28b89d[_0xaa93('0x21')]['message']);}logger[_0xaa93('0x21')]('SmsMessage,\x20%s,\x20%s',_0x543a57,_0x28b89d[_0xaa93('0x21')][_0xaa93('0x24')]);return _0x1cc0bc(_0x28b89d['error']['message']);}else{logger[_0xaa93('0x1c')](_0xaa93('0x23'),_0x543a57,_0xaa93('0x1d'));_0x1cc0bc(_0x28b89d['result']['message']);}})[_0xaa93('0x25')](function(_0x51a0de){logger[_0xaa93('0x21')](_0xaa93('0x23'),_0x543a57,_0x51a0de);_0x33cab3(_0x51a0de);});});}function respondWithStatusCode(_0x1941b8,_0x584059){_0x584059=_0x584059||0xcc;return function(_0x2c2e8f){if(_0x2c2e8f){return _0x1941b8[_0xaa93('0x26')](_0x584059);}return _0x1941b8[_0xaa93('0x27')](_0x584059)[_0xaa93('0x28')]();};}function respondWithResult(_0x5333ad,_0x3e225f){_0x3e225f=_0x3e225f||0xc8;return function(_0x592f06){if(_0x592f06){return _0x5333ad['status'](_0x3e225f)['json'](_0x592f06);}};}function respondWithFilteredResult(_0x535a92,_0x3b7b4c){return function(_0x76cd82){if(_0x76cd82){var _0x46c3ae=typeof _0x3b7b4c[_0xaa93('0x29')]==='undefined'&&typeof _0x3b7b4c[_0xaa93('0x2a')]===_0xaa93('0x2b');var _0x3afae7=_0x76cd82[_0xaa93('0x2c')];var _0x1317e8=_0x46c3ae?0x0:_0x3b7b4c[_0xaa93('0x29')];var _0x455227=_0x46c3ae?_0x76cd82[_0xaa93('0x2c')]:_0x3b7b4c[_0xaa93('0x29')]+_0x3b7b4c[_0xaa93('0x2a')];var _0x5618af;if(_0x455227>=_0x3afae7){_0x455227=_0x3afae7;_0x5618af=0xc8;}else{_0x5618af=0xce;}_0x535a92['status'](_0x5618af);return _0x535a92['set'](_0xaa93('0x2d'),_0x1317e8+'-'+_0x455227+'/'+_0x3afae7)[_0xaa93('0x2e')](_0x76cd82);}return null;};}function patchUpdates(_0x47265e){return function(_0x4a1108){try{jsonpatch['apply'](_0x4a1108,_0x47265e,!![]);}catch(_0x469a0c){return BPromise['reject'](_0x469a0c);}return _0x4a1108[_0xaa93('0x2f')]();};}function saveUpdates(_0x42c42a,_0x1e9be3){return function(_0x1451df){if(_0x1451df){return _0x1451df['update'](_0x42c42a)[_0xaa93('0x1b')](function(_0x46f46d){return _0x46f46d;});}return null;};}function removeEntity(_0x1b6e9e,_0x390767){return function(_0x31de11){if(_0x31de11){return _0x31de11['destroy']()[_0xaa93('0x1b')](function(){_0x1b6e9e['status'](0xcc)[_0xaa93('0x28')]();});}};}function handleEntityNotFound(_0x465db0,_0xf6f427){return function(_0x1fb0e7){if(!_0x1fb0e7){_0x465db0[_0xaa93('0x26')](0x194);}return _0x1fb0e7;};}function handleError(_0x2313cb,_0x582829){_0x582829=_0x582829||0x1f4;return function(_0x548c0d){logger['error'](_0x548c0d[_0xaa93('0x30')]);if(_0x548c0d['name']){delete _0x548c0d[_0xaa93('0x31')];}_0x2313cb[_0xaa93('0x27')](_0x582829)['send'](_0x548c0d);};}exports[_0xaa93('0x32')]=function(_0x44fc71,_0x3c972e){var _0x355fc0={},_0x3b2c81={},_0x172c74={'count':0x0,'rows':[]};var _0x2b67c7=_[_0xaa93('0x33')](db['SmsMessage'][_0xaa93('0x34')],function(_0x2fede7){return{'name':_0x2fede7[_0xaa93('0x35')],'type':_0x2fede7[_0xaa93('0x36')]['key']};});_0x3b2c81['model']=_['map'](_0x2b67c7,'name');_0x3b2c81[_0xaa93('0x37')]=_[_0xaa93('0x38')](_0x44fc71[_0xaa93('0x37')]);_0x3b2c81[_0xaa93('0x39')]=_['intersection'](_0x3b2c81['model'],_0x3b2c81[_0xaa93('0x37')]);_0x355fc0[_0xaa93('0x3a')]=_['intersection'](_0x3b2c81['model'],qs[_0xaa93('0x3b')](_0x44fc71[_0xaa93('0x37')]['fields']));_0x355fc0[_0xaa93('0x3a')]=_0x355fc0['attributes'][_0xaa93('0x3c')]?_0x355fc0['attributes']:_0x3b2c81['model'];if(!_0x44fc71[_0xaa93('0x37')][_0xaa93('0x3d')]('nolimit')){_0x355fc0[_0xaa93('0x2a')]=qs[_0xaa93('0x2a')](_0x44fc71[_0xaa93('0x37')][_0xaa93('0x2a')]);_0x355fc0[_0xaa93('0x29')]=qs[_0xaa93('0x29')](_0x44fc71[_0xaa93('0x37')][_0xaa93('0x29')]);}_0x355fc0[_0xaa93('0x3e')]=qs['sort'](_0x44fc71[_0xaa93('0x37')][_0xaa93('0x3f')]);_0x355fc0['where']=qs['filters'](_[_0xaa93('0x40')](_0x44fc71[_0xaa93('0x37')],_0x3b2c81[_0xaa93('0x39')]),_0x2b67c7);if(_0x44fc71[_0xaa93('0x37')][_0xaa93('0x41')]){_0x355fc0['where']=_['merge'](_0x355fc0['where'],{'$or':_[_0xaa93('0x33')](_0x2b67c7,function(_0x4dfe00){if(_0x4dfe00[_0xaa93('0x36')]!==_0xaa93('0x42')){var _0x3d991d={};_0x3d991d[_0x4dfe00[_0xaa93('0x31')]]={'$like':'%'+_0x44fc71[_0xaa93('0x37')][_0xaa93('0x41')]+'%'};return _0x3d991d;}})});}_0x355fc0=_[_0xaa93('0x43')]({},_0x355fc0,_0x44fc71[_0xaa93('0x44')]);var _0x4de61={'where':_0x355fc0[_0xaa93('0x45')]};return db[_0xaa93('0x46')]['count'](_0x4de61)[_0xaa93('0x1b')](function(_0x483041){_0x172c74[_0xaa93('0x2c')]=_0x483041;if(_0x44fc71[_0xaa93('0x37')][_0xaa93('0x47')]){_0x355fc0[_0xaa93('0x48')]=[{'all':!![]}];}return db[_0xaa93('0x46')][_0xaa93('0x49')](_0x355fc0);})[_0xaa93('0x1b')](function(_0x2c7cc4){_0x172c74['rows']=_0x2c7cc4;return _0x172c74;})[_0xaa93('0x1b')](respondWithFilteredResult(_0x3c972e,_0x355fc0))[_0xaa93('0x25')](handleError(_0x3c972e,null));};exports[_0xaa93('0x4a')]=function(_0x2b28ce,_0x1978a0){var _0x293f56={'raw':!![],'where':{'id':_0x2b28ce[_0xaa93('0x4b')]['id']}},_0x5d2b3c={};_0x5d2b3c[_0xaa93('0x4c')]=_[_0xaa93('0x38')](db[_0xaa93('0x46')]['rawAttributes']);_0x5d2b3c['query']=_[_0xaa93('0x38')](_0x2b28ce[_0xaa93('0x37')]);_0x5d2b3c[_0xaa93('0x39')]=_[_0xaa93('0x4d')](_0x5d2b3c[_0xaa93('0x4c')],_0x5d2b3c[_0xaa93('0x37')]);_0x293f56[_0xaa93('0x3a')]=_[_0xaa93('0x4d')](_0x5d2b3c[_0xaa93('0x4c')],qs[_0xaa93('0x3b')](_0x2b28ce[_0xaa93('0x37')][_0xaa93('0x3b')]));_0x293f56[_0xaa93('0x3a')]=_0x293f56[_0xaa93('0x3a')]['length']?_0x293f56[_0xaa93('0x3a')]:_0x5d2b3c[_0xaa93('0x4c')];if(_0x2b28ce['query'][_0xaa93('0x47')]){_0x293f56['include']=[{'all':!![]}];}_0x293f56=_['merge']({},_0x293f56,_0x2b28ce[_0xaa93('0x44')]);return db[_0xaa93('0x46')][_0xaa93('0x4e')](_0x293f56)[_0xaa93('0x1b')](handleEntityNotFound(_0x1978a0,null))[_0xaa93('0x1b')](respondWithResult(_0x1978a0,null))['catch'](handleError(_0x1978a0,null));};exports['create']=function(_0x1d4517,_0x36684a){return db[_0xaa93('0x46')][_0xaa93('0x4f')](_0x1d4517[_0xaa93('0x50')],{})['then'](respondWithResult(_0x36684a,0xc9))[_0xaa93('0x25')](handleError(_0x36684a,null));};exports[_0xaa93('0x51')]=function(_0x50e70e,_0x439ffe){if(_0x50e70e[_0xaa93('0x50')]['id']){delete _0x50e70e[_0xaa93('0x50')]['id'];}return db[_0xaa93('0x46')][_0xaa93('0x4e')]({'where':{'id':_0x50e70e[_0xaa93('0x4b')]['id']}})['then'](handleEntityNotFound(_0x439ffe,null))['then'](saveUpdates(_0x50e70e[_0xaa93('0x50')],null))[_0xaa93('0x1b')](respondWithResult(_0x439ffe,null))['catch'](handleError(_0x439ffe,null));};exports['destroy']=function(_0x2ab945,_0x5c66b9){return db[_0xaa93('0x46')][_0xaa93('0x4e')]({'where':{'id':_0x2ab945['params']['id']}})[_0xaa93('0x1b')](handleEntityNotFound(_0x5c66b9,null))[_0xaa93('0x1b')](removeEntity(_0x5c66b9,null))[_0xaa93('0x25')](handleError(_0x5c66b9,null));};exports[_0xaa93('0x52')]=function(_0x4ffe17,_0x3838b6){return db['SmsMessage'][_0xaa93('0x52')]()[_0xaa93('0x1b')](respondWithResult(_0x3838b6,null))['catch'](handleError(_0x3838b6,null));};var interaction_log=require('../../config/logger')(_0xaa93('0x53'));exports['accept']=function(_0x4a8c2d,_0x2da5b6,_0x13d591){var _0x2a63b5={'agent':{},'channel':_0xaa93('0x54')};if(_0x4a8c2d['body']['id']){delete _0x4a8c2d['body']['id'];}_0x4a8c2d['body'][_0xaa93('0x55')]=!![];_0x4a8c2d['body']['readAt']=moment()['format'](_0xaa93('0x56'));_0x4a8c2d['body']['UserId']=_0x4a8c2d[_0xaa93('0x50')][_0xaa93('0x57')]||_0x4a8c2d[_0xaa93('0x58')]['id'];_0x2a63b5[_0xaa93('0x59')]['id']=_0x4a8c2d[_0xaa93('0x50')][_0xaa93('0x57')];return db['SmsMessage'][_0xaa93('0x4e')]({'where':{'id':_0x4a8c2d[_0xaa93('0x4b')]['id'],'UserId':null}})[_0xaa93('0x1b')](handleEntityNotFound(_0x2da5b6,null))[_0xaa93('0x1b')](saveUpdates(_0x4a8c2d[_0xaa93('0x50')],null))[_0xaa93('0x1b')](function(_0x4ad4a2){if(_0x4ad4a2){_0x2a63b5[_0xaa93('0x24')]=_0x4ad4a2['get']({'plain':!![]});return db[_0xaa93('0x5a')][_0xaa93('0x4e')]({'where':{'id':_0x4ad4a2[_0xaa93('0x5b')]}});}return null;})[_0xaa93('0x1b')](handleEntityNotFound(_0x2da5b6,null))['then'](function(_0x37a342){if(_0x37a342){return _0x37a342['update']({'UserId':_0x4a8c2d[_0xaa93('0x50')][_0xaa93('0x57')],'read1stAt':_['isNil'](_0x37a342['read1stAt'])?moment()[_0xaa93('0x5c')](_0xaa93('0x56')):undefined});}return null;})['then'](function(_0x3c5958){if(_0x3c5958){_0x2a63b5[_0xaa93('0x5d')]=_0x3c5958[_0xaa93('0x5e')]({'plain':!![]});interaction_log[_0xaa93('0x1c')]('[SMSMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x4a8c2d['user']['id'],_0x4a8c2d[_0xaa93('0x58')][_0xaa93('0x31')],_0x4a8c2d[_0xaa93('0x58')]['role'],_0x2a63b5['interaction']['id'],_0x4a8c2d['body']?JSON[_0xaa93('0x20')](_0x4a8c2d[_0xaa93('0x50')]):_0xaa93('0x5f'));return respondWithRpcPromise(_0xaa93('0x60'),_0xaa93('0x61'),_0x2a63b5);}return null;})[_0xaa93('0x1b')](function(_0x433748){var _0x3790b2=_0xaa93('0x62')+_0x433748[_0xaa93('0x24')][_0xaa93('0x63')];return db[_0xaa93('0x64')][_0xaa93('0x37')](_0x3790b2,{'type':db[_0xaa93('0x65')]['QueryTypes'][_0xaa93('0x66')],'raw':!![]})[_0xaa93('0x1b')](function(_0x18bd8b){return _0x18bd8b;});})[_0xaa93('0x1b')](function(_0x2d2106){if(_0x2d2106){_0x2a63b5[_0xaa93('0x24')][_0xaa93('0x67')]=_0x2d2106[0x0];if(!_0x4a8c2d['body']['UserId'])return;return db[_0xaa93('0x68')]['find']({'where':{'id':_0x4a8c2d[_0xaa93('0x50')][_0xaa93('0x57')],'role':_0xaa93('0x59')},'attributes':['id',_0xaa93('0x31'),'fullname','email',_0xaa93('0x69')],'raw':!![]});}return null;})[_0xaa93('0x1b')](function(_0x2ceb96){if(!_0x2ceb96)return null;_0x2a63b5[_0xaa93('0x24')]['agent']=_0x2ceb96;return _0x2a63b5;})[_0xaa93('0x1b')](function(_0x2d6ca3){if(_0x2d6ca3){if(_0x4a8c2d['body'][_0xaa93('0x6a')]){_0x2a63b5[_0xaa93('0x24')][_0xaa93('0x6b')]=util['format']('SIP/%s',_0x4a8c2d['user'][_0xaa93('0x31')]);_0x2a63b5[_0xaa93('0x24')][_0xaa93('0x6c')]=_0x2a63b5[_0xaa93('0x6c')];_0x2a63b5[_0xaa93('0x24')][_0xaa93('0x6d')]=_0x2a63b5[_0xaa93('0x6c')];_0x2a63b5[_0xaa93('0x24')][_0xaa93('0x6e')]='accept';return respondWithRpcPromise(_0xaa93('0x6f'),'EventManager',{'event':_0xaa93('0x70'),'message':_0x2a63b5['message']},client9002)[_0xaa93('0x1b')](function(){return _0x2a63b5;});}return _0x2a63b5;}return null;})[_0xaa93('0x1b')](respondWithResult(_0x2da5b6,null))[_0xaa93('0x25')](handleError(_0x2da5b6,null));};var interaction_log=require(_0xaa93('0xe'))(_0xaa93('0x53'));exports[_0xaa93('0x71')]=function(_0x238148,_0x1b804c,_0x45c8dc){var _0x310ac8={'agent':{},'channel':'sms'};if(_0x238148['body']['id']){delete _0x238148[_0xaa93('0x50')]['id'];}_0x238148['body']['UserId']=_0x238148[_0xaa93('0x50')]['UserId']||_0x238148['user']['id'];_0x310ac8[_0xaa93('0x59')]['id']=_0x238148[_0xaa93('0x50')][_0xaa93('0x57')];return db[_0xaa93('0x46')][_0xaa93('0x4e')]({'where':{'id':_0x238148[_0xaa93('0x4b')]['id'],'UserId':null}})[_0xaa93('0x1b')](handleEntityNotFound(_0x1b804c,null))[_0xaa93('0x1b')](function(_0x2c6421){if(_0x2c6421){_0x310ac8[_0xaa93('0x24')]=_0x2c6421[_0xaa93('0x5e')]({'plain':!![]});return db[_0xaa93('0x5a')][_0xaa93('0x4e')]({'where':{'id':_0x2c6421[_0xaa93('0x5b')]}});}return null;})[_0xaa93('0x1b')](handleEntityNotFound(_0x1b804c,null))['then'](function(_0x1f675b){if(_0x1f675b){_0x310ac8[_0xaa93('0x5d')]=_0x1f675b['get']({'plain':!![]});interaction_log[_0xaa93('0x1c')](_0xaa93('0x72'),_0x238148[_0xaa93('0x58')]['id'],_0x238148['user']['name'],_0x238148[_0xaa93('0x58')][_0xaa93('0x73')],_0x310ac8[_0xaa93('0x5d')]['id'],_0x238148[_0xaa93('0x50')]?JSON[_0xaa93('0x20')](_0x238148[_0xaa93('0x50')]):'null');return respondWithRpcPromise(_0xaa93('0x74'),_0xaa93('0x75'),_0x310ac8);}return null;})[_0xaa93('0x1b')](function(_0x23fe7d){var _0x5a29bf=_0xaa93('0x62')+_0x23fe7d['message'][_0xaa93('0x63')];return db[_0xaa93('0x64')][_0xaa93('0x37')](_0x5a29bf,{'type':db[_0xaa93('0x65')]['QueryTypes']['SELECT'],'raw':!![]})[_0xaa93('0x1b')](function(_0xd599d6){return _0xd599d6;});})[_0xaa93('0x1b')](function(_0x55e816){if(_0x55e816){_0x310ac8[_0xaa93('0x24')][_0xaa93('0x67')]=_0x55e816[0x0];if(!_0x238148[_0xaa93('0x50')][_0xaa93('0x57')])return;return db[_0xaa93('0x68')][_0xaa93('0x4e')]({'where':{'id':_0x238148[_0xaa93('0x50')]['UserId'],'role':'agent'},'attributes':['id',_0xaa93('0x31'),_0xaa93('0x76'),_0xaa93('0x77'),_0xaa93('0x69')],'raw':!![]});}return null;})[_0xaa93('0x1b')](function(_0x3d8867){if(!_0x3d8867)return null;_0x310ac8[_0xaa93('0x24')][_0xaa93('0x59')]=_0x3d8867;return _0x310ac8;})[_0xaa93('0x1b')](function(_0x360cc3){if(_0x360cc3){_0x360cc3['message'][_0xaa93('0x6b')]=util[_0xaa93('0x5c')](_0xaa93('0x78'),_0x238148[_0xaa93('0x58')][_0xaa93('0x31')]);_0x360cc3[_0xaa93('0x24')][_0xaa93('0x6c')]=_0x310ac8[_0xaa93('0x6c')];_0x360cc3[_0xaa93('0x24')]['motionChannel']=_0x310ac8[_0xaa93('0x6c')];_0x360cc3[_0xaa93('0x24')][_0xaa93('0x6e')]=_0xaa93('0x71');respondWithRpcPromise(_0xaa93('0x6f'),_0xaa93('0x6f'),{'event':_0xaa93('0x79'),'message':_0x360cc3[_0xaa93('0x24')]},client9002);return _0x310ac8;}return null;})['then'](respondWithResult(_0x1b804c,null))['catch'](handleError(_0x1b804c,null));};exports[_0xaa93('0x27')]=function(_0x2f3cd2,_0x38ad98,_0x18ef08){if(_0x2f3cd2[_0xaa93('0x50')]['id']){delete _0x2f3cd2[_0xaa93('0x50')]['id'];}var _0xa6e395;return db[_0xaa93('0x46')][_0xaa93('0x4e')]({'where':{'id':_0x2f3cd2[_0xaa93('0x4b')]['id']}})['then'](handleEntityNotFound(_0x38ad98,null))[_0xaa93('0x1b')](function(_0x360f5a){if(_0x360f5a){_0xa6e395=_0x360f5a;return db['SmsAccount']['find']({'where':{'id':_0x360f5a[_0xaa93('0x7a')]}});}})[_0xaa93('0x1b')](handleEntityNotFound(_0x38ad98,null))[_0xaa93('0x1b')](function(_0xccad4f){if(_0xccad4f){logger[_0xaa93('0x1e')](_0xaa93('0x1f'),_0xaa93('0x27'),'received\x20delivery\x20report\x20from',_0xccad4f[_0xaa93('0x36')],util[_0xaa93('0x7b')](_0x2f3cd2['body'],{'showHidden':![],'depth':null}));switch(_0xccad4f[_0xaa93('0x36')]){case _0xaa93('0x7c'):if(_0x2f3cd2[_0xaa93('0x50')][_0xaa93('0x7d')]&&_0x2f3cd2[_0xaa93('0x50')][_0xaa93('0x7d')]===_0xa6e395[_0xaa93('0x7e')]){return _0xa6e395[_0xaa93('0x51')]({'read':!![]});}else{logger[_0xaa93('0x21')](_0xaa93('0x7f'),'status','twilio',util[_0xaa93('0x7b')](_0x2f3cd2['body'],{'showHidden':![],'depth':null}));}break;case _0xaa93('0x80'):if(_0x2f3cd2['body'][_0xaa93('0x81')]&&_0x2f3cd2[_0xaa93('0x50')]['MessageUUID']===_0xa6e395[_0xaa93('0x7e')]&&_[_0xaa93('0x82')]([_0xaa93('0x83'),_0xaa93('0x84')],_0x2f3cd2[_0xaa93('0x50')]['Status'])>=0x0){return _0xa6e395[_0xaa93('0x51')]({'read':!![]});}else{logger['error']('SmsAccount,\x20%s,\x20%s,\x20%s','status',_0xaa93('0x85'),util[_0xaa93('0x7b')](_0x2f3cd2[_0xaa93('0x50')],{'showHidden':![],'depth':null}));}break;case _0xaa93('0x86'):var _0x1be539=_0x2f3cd2[_0xaa93('0x50')][_0xaa93('0x87')][0x0];if(_0x1be539['status'][_0xaa93('0x88')]===_0xaa93('0x89')){return _0xa6e395[_0xaa93('0x51')]({'read':!![]});}else{logger[_0xaa93('0x21')](_0xaa93('0x7f'),_0xaa93('0x27'),'infobip',util[_0xaa93('0x7b')](_0x2f3cd2[_0xaa93('0x50')],{'showHidden':![],'depth':null}));}break;}return _0xa6e395;}})[_0xaa93('0x1b')](respondWithResult(_0x38ad98,null))['catch'](handleError(_0x38ad98,null));};
\ No newline at end of file
+var _0xc401=['nolimit','order','sort','where','pick','filter','VIRTUAL','options','includeAll','include','catch','params','keys','length','merge','find','create','body','describe','sms-interactions','accept','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','SmsInteraction','SmsInteractionId','read1stAt','role','interaction','stringify','null','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','SELECT','contact','email','internal','SIP/%s','channel','motionChannel','event','EventManager','acceptmessage','sms','[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','rejectMessage','User','interface','SmsAccount','SmsAccountId','SmsMessage,\x20%s,\x20%s,\x20%s','inspect','MessageSid','messageId','SmsAccount,\x20%s,\x20%s,\x20%s','plivo','MessageUUID','indexOf','sent','delivered','Status','groupName','DELIVERED','infobip','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','squel','crypto','desk.js','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','register','http','client','request','then','info','request\x20sent','error','code','message','SmsMessage,\x20%s,\x20%s','result','sendStatus','status','end','json','offset','limit','undefined','count','Content-Range','apply','reject','save','update','destroy','stack','name','index','map','SmsMessage','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields'];(function(_0x207a00,_0x4a8a87){var _0x5a76e9=function(_0x33a7f9){while(--_0x33a7f9){_0x207a00['push'](_0x207a00['shift']());}};_0x5a76e9(++_0x4a8a87);}(_0xc401,0x15d));var _0x1c40=function(_0x119892,_0x32743c){_0x119892=_0x119892-0x0;var _0x4a70ad=_0xc401[_0x119892];return _0x4a70ad;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x1c40('0x0'));var zipdir=require(_0x1c40('0x1'));var jsonpatch=require(_0x1c40('0x2'));var rp=require(_0x1c40('0x3'));var moment=require(_0x1c40('0x4'));var BPromise=require(_0x1c40('0x5'));var Mustache=require(_0x1c40('0x6'));var util=require(_0x1c40('0x7'));var path=require(_0x1c40('0x8'));var sox=require('sox');var csv=require(_0x1c40('0x9'));var ejs=require(_0x1c40('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x1c40('0xb'));var crypto=require(_0x1c40('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x1c40('0xd'));var toCsv=require(_0x1c40('0x9'));var querystring=require('querystring');var Papa=require(_0x1c40('0xe'));var Redis=require(_0x1c40('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x1c40('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x1c40('0x11'));var logger=require(_0x1c40('0x12'))(_0x1c40('0x13'));var utils=require(_0x1c40('0x14'));var config=require(_0x1c40('0x15'));var licenseUtil=require(_0x1c40('0x16'));var db=require(_0x1c40('0x17'))['db'];config[_0x1c40('0x18')]=_['defaults'](config[_0x1c40('0x18')],{'host':_0x1c40('0x19'),'port':0x18eb});var socket=require(_0x1c40('0x1a'))(new Redis(config[_0x1c40('0x18')]));require('./smsMessage.socket')[_0x1c40('0x1b')](socket);var jayson=require('jayson/promise');var client=jayson['client'][_0x1c40('0x1c')]({'port':0x232c});var client9002=jayson[_0x1c40('0x1d')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3b5209,_0x41ad77,_0x43820b,_0x46cc5c){return new BPromise(function(_0x1468cd,_0x57f018){var _0x30eb14=_0x46cc5c||client;return _0x30eb14[_0x1c40('0x1e')](_0x3b5209,_0x43820b)[_0x1c40('0x1f')](function(_0x1cf4d7){logger[_0x1c40('0x20')]('SmsMessage,\x20%s,\x20%s',_0x41ad77,_0x1c40('0x21'));logger['debug']('SmsMessage,\x20%s,\x20%s,\x20%s',_0x41ad77,_0x1c40('0x21'),JSON['stringify'](_0x1cf4d7));if(_0x1cf4d7[_0x1c40('0x22')]){if(_0x1cf4d7[_0x1c40('0x22')][_0x1c40('0x23')]===0x1f4){logger[_0x1c40('0x22')]('SmsMessage,\x20%s,\x20%s',_0x41ad77,_0x1cf4d7[_0x1c40('0x22')][_0x1c40('0x24')]);return _0x57f018(_0x1cf4d7[_0x1c40('0x22')][_0x1c40('0x24')]);}logger[_0x1c40('0x22')](_0x1c40('0x25'),_0x41ad77,_0x1cf4d7[_0x1c40('0x22')][_0x1c40('0x24')]);return _0x1468cd(_0x1cf4d7[_0x1c40('0x22')][_0x1c40('0x24')]);}else{logger['info']('SmsMessage,\x20%s,\x20%s',_0x41ad77,_0x1c40('0x21'));_0x1468cd(_0x1cf4d7[_0x1c40('0x26')]['message']);}})['catch'](function(_0x14f709){logger[_0x1c40('0x22')](_0x1c40('0x25'),_0x41ad77,_0x14f709);_0x57f018(_0x14f709);});});}function respondWithStatusCode(_0x16d9e4,_0xb5f108){_0xb5f108=_0xb5f108||0xcc;return function(_0x9764a1){if(_0x9764a1){return _0x16d9e4[_0x1c40('0x27')](_0xb5f108);}return _0x16d9e4[_0x1c40('0x28')](_0xb5f108)[_0x1c40('0x29')]();};}function respondWithResult(_0x5fda66,_0x50d781){_0x50d781=_0x50d781||0xc8;return function(_0x24a6c6){if(_0x24a6c6){return _0x5fda66[_0x1c40('0x28')](_0x50d781)[_0x1c40('0x2a')](_0x24a6c6);}};}function respondWithFilteredResult(_0x18dffc,_0x10c04d){return function(_0x3a11dc){if(_0x3a11dc){var _0x40facf=typeof _0x10c04d[_0x1c40('0x2b')]==='undefined'&&typeof _0x10c04d[_0x1c40('0x2c')]===_0x1c40('0x2d');var _0x15d57f=_0x3a11dc[_0x1c40('0x2e')];var _0x4234c3=_0x40facf?0x0:_0x10c04d[_0x1c40('0x2b')];var _0x512a80=_0x40facf?_0x3a11dc['count']:_0x10c04d[_0x1c40('0x2b')]+_0x10c04d['limit'];var _0x3fb75b;if(_0x512a80>=_0x15d57f){_0x512a80=_0x15d57f;_0x3fb75b=0xc8;}else{_0x3fb75b=0xce;}_0x18dffc[_0x1c40('0x28')](_0x3fb75b);return _0x18dffc['set'](_0x1c40('0x2f'),_0x4234c3+'-'+_0x512a80+'/'+_0x15d57f)[_0x1c40('0x2a')](_0x3a11dc);}return null;};}function patchUpdates(_0x1d35e3){return function(_0x2ed1e8){try{jsonpatch[_0x1c40('0x30')](_0x2ed1e8,_0x1d35e3,!![]);}catch(_0xedd9aa){return BPromise[_0x1c40('0x31')](_0xedd9aa);}return _0x2ed1e8[_0x1c40('0x32')]();};}function saveUpdates(_0x147a0a,_0x55b9f9){return function(_0x29eb3d){if(_0x29eb3d){return _0x29eb3d[_0x1c40('0x33')](_0x147a0a)['then'](function(_0x1fa727){return _0x1fa727;});}return null;};}function removeEntity(_0x19e1a8,_0x55f6de){return function(_0x5782d9){if(_0x5782d9){return _0x5782d9[_0x1c40('0x34')]()[_0x1c40('0x1f')](function(){_0x19e1a8[_0x1c40('0x28')](0xcc)[_0x1c40('0x29')]();});}};}function handleEntityNotFound(_0x5b367a,_0x20dd2d){return function(_0xf00388){if(!_0xf00388){_0x5b367a[_0x1c40('0x27')](0x194);}return _0xf00388;};}function handleError(_0x14412f,_0x21e4da){_0x21e4da=_0x21e4da||0x1f4;return function(_0x59f85b){logger[_0x1c40('0x22')](_0x59f85b[_0x1c40('0x35')]);if(_0x59f85b[_0x1c40('0x36')]){delete _0x59f85b[_0x1c40('0x36')];}_0x14412f[_0x1c40('0x28')](_0x21e4da)['send'](_0x59f85b);};}exports[_0x1c40('0x37')]=function(_0x1ea9f3,_0x3eba93){var _0x1a054e={},_0x1c1628={},_0x800291={'count':0x0,'rows':[]};var _0x404c0e=_[_0x1c40('0x38')](db[_0x1c40('0x39')][_0x1c40('0x3a')],function(_0x1ccbf8){return{'name':_0x1ccbf8[_0x1c40('0x3b')],'type':_0x1ccbf8[_0x1c40('0x3c')][_0x1c40('0x3d')]};});_0x1c1628[_0x1c40('0x3e')]=_[_0x1c40('0x38')](_0x404c0e,_0x1c40('0x36'));_0x1c1628[_0x1c40('0x3f')]=_['keys'](_0x1ea9f3[_0x1c40('0x3f')]);_0x1c1628[_0x1c40('0x40')]=_[_0x1c40('0x41')](_0x1c1628['model'],_0x1c1628['query']);_0x1a054e[_0x1c40('0x42')]=_[_0x1c40('0x41')](_0x1c1628['model'],qs['fields'](_0x1ea9f3[_0x1c40('0x3f')][_0x1c40('0x43')]));_0x1a054e[_0x1c40('0x42')]=_0x1a054e[_0x1c40('0x42')]['length']?_0x1a054e['attributes']:_0x1c1628[_0x1c40('0x3e')];if(!_0x1ea9f3[_0x1c40('0x3f')]['hasOwnProperty'](_0x1c40('0x44'))){_0x1a054e['limit']=qs[_0x1c40('0x2c')](_0x1ea9f3[_0x1c40('0x3f')][_0x1c40('0x2c')]);_0x1a054e[_0x1c40('0x2b')]=qs[_0x1c40('0x2b')](_0x1ea9f3['query'][_0x1c40('0x2b')]);}_0x1a054e[_0x1c40('0x45')]=qs[_0x1c40('0x46')](_0x1ea9f3['query']['sort']);_0x1a054e[_0x1c40('0x47')]=qs[_0x1c40('0x40')](_[_0x1c40('0x48')](_0x1ea9f3[_0x1c40('0x3f')],_0x1c1628[_0x1c40('0x40')]),_0x404c0e);if(_0x1ea9f3[_0x1c40('0x3f')][_0x1c40('0x49')]){_0x1a054e[_0x1c40('0x47')]=_['merge'](_0x1a054e[_0x1c40('0x47')],{'$or':_[_0x1c40('0x38')](_0x404c0e,function(_0xf4518b){if(_0xf4518b['type']!==_0x1c40('0x4a')){var _0x5068a5={};_0x5068a5[_0xf4518b[_0x1c40('0x36')]]={'$like':'%'+_0x1ea9f3[_0x1c40('0x3f')][_0x1c40('0x49')]+'%'};return _0x5068a5;}})});}_0x1a054e=_['merge']({},_0x1a054e,_0x1ea9f3[_0x1c40('0x4b')]);var _0x1db74e={'where':_0x1a054e[_0x1c40('0x47')]};return db[_0x1c40('0x39')][_0x1c40('0x2e')](_0x1db74e)[_0x1c40('0x1f')](function(_0xfea5a1){_0x800291[_0x1c40('0x2e')]=_0xfea5a1;if(_0x1ea9f3[_0x1c40('0x3f')][_0x1c40('0x4c')]){_0x1a054e[_0x1c40('0x4d')]=[{'all':!![]}];}return db[_0x1c40('0x39')]['findAll'](_0x1a054e);})['then'](function(_0x505ddd){_0x800291['rows']=_0x505ddd;return _0x800291;})[_0x1c40('0x1f')](respondWithFilteredResult(_0x3eba93,_0x1a054e))[_0x1c40('0x4e')](handleError(_0x3eba93,null));};exports['show']=function(_0x1ac3de,_0x26e3d7){var _0x37e17c={'raw':!![],'where':{'id':_0x1ac3de[_0x1c40('0x4f')]['id']}},_0x298e23={};_0x298e23['model']=_[_0x1c40('0x50')](db[_0x1c40('0x39')][_0x1c40('0x3a')]);_0x298e23[_0x1c40('0x3f')]=_['keys'](_0x1ac3de[_0x1c40('0x3f')]);_0x298e23['filters']=_[_0x1c40('0x41')](_0x298e23[_0x1c40('0x3e')],_0x298e23[_0x1c40('0x3f')]);_0x37e17c[_0x1c40('0x42')]=_[_0x1c40('0x41')](_0x298e23[_0x1c40('0x3e')],qs[_0x1c40('0x43')](_0x1ac3de['query'][_0x1c40('0x43')]));_0x37e17c[_0x1c40('0x42')]=_0x37e17c['attributes'][_0x1c40('0x51')]?_0x37e17c[_0x1c40('0x42')]:_0x298e23[_0x1c40('0x3e')];if(_0x1ac3de['query']['includeAll']){_0x37e17c[_0x1c40('0x4d')]=[{'all':!![]}];}_0x37e17c=_[_0x1c40('0x52')]({},_0x37e17c,_0x1ac3de['options']);return db['SmsMessage'][_0x1c40('0x53')](_0x37e17c)[_0x1c40('0x1f')](handleEntityNotFound(_0x26e3d7,null))[_0x1c40('0x1f')](respondWithResult(_0x26e3d7,null))[_0x1c40('0x4e')](handleError(_0x26e3d7,null));};exports[_0x1c40('0x54')]=function(_0x54e423,_0x36b7b5){return db[_0x1c40('0x39')][_0x1c40('0x54')](_0x54e423[_0x1c40('0x55')],{})[_0x1c40('0x1f')](respondWithResult(_0x36b7b5,0xc9))[_0x1c40('0x4e')](handleError(_0x36b7b5,null));};exports[_0x1c40('0x33')]=function(_0x41f234,_0x411a57){if(_0x41f234['body']['id']){delete _0x41f234[_0x1c40('0x55')]['id'];}return db[_0x1c40('0x39')][_0x1c40('0x53')]({'where':{'id':_0x41f234[_0x1c40('0x4f')]['id']}})[_0x1c40('0x1f')](handleEntityNotFound(_0x411a57,null))[_0x1c40('0x1f')](saveUpdates(_0x41f234[_0x1c40('0x55')],null))[_0x1c40('0x1f')](respondWithResult(_0x411a57,null))[_0x1c40('0x4e')](handleError(_0x411a57,null));};exports['destroy']=function(_0x4c4192,_0x15dc4c){return db[_0x1c40('0x39')]['find']({'where':{'id':_0x4c4192[_0x1c40('0x4f')]['id']}})[_0x1c40('0x1f')](handleEntityNotFound(_0x15dc4c,null))['then'](removeEntity(_0x15dc4c,null))[_0x1c40('0x4e')](handleError(_0x15dc4c,null));};exports[_0x1c40('0x56')]=function(_0x943593,_0x4f8187){return db[_0x1c40('0x39')][_0x1c40('0x56')]()['then'](respondWithResult(_0x4f8187,null))['catch'](handleError(_0x4f8187,null));};var interaction_log=require(_0x1c40('0x12'))(_0x1c40('0x57'));exports[_0x1c40('0x58')]=function(_0xeb44f5,_0x3e4e7b,_0x56c38a){var _0x11e775={'agent':{},'channel':'sms'};if(_0xeb44f5[_0x1c40('0x55')]['id']){delete _0xeb44f5[_0x1c40('0x55')]['id'];}_0xeb44f5[_0x1c40('0x55')]['read']=!![];_0xeb44f5[_0x1c40('0x55')]['readAt']=moment()[_0x1c40('0x59')](_0x1c40('0x5a'));_0xeb44f5['body']['UserId']=_0xeb44f5[_0x1c40('0x55')][_0x1c40('0x5b')]||_0xeb44f5[_0x1c40('0x5c')]['id'];_0x11e775[_0x1c40('0x5d')]['id']=_0xeb44f5[_0x1c40('0x55')]['UserId'];return db[_0x1c40('0x39')][_0x1c40('0x53')]({'where':{'id':_0xeb44f5[_0x1c40('0x4f')]['id'],'UserId':null}})[_0x1c40('0x1f')](handleEntityNotFound(_0x3e4e7b,null))[_0x1c40('0x1f')](saveUpdates(_0xeb44f5['body'],null))[_0x1c40('0x1f')](function(_0x2ec72b){if(_0x2ec72b){_0x11e775[_0x1c40('0x24')]=_0x2ec72b[_0x1c40('0x5e')]({'plain':!![]});return db[_0x1c40('0x5f')][_0x1c40('0x53')]({'where':{'id':_0x2ec72b[_0x1c40('0x60')]}});}return null;})[_0x1c40('0x1f')](handleEntityNotFound(_0x3e4e7b,null))[_0x1c40('0x1f')](function(_0x24cfca){if(_0x24cfca){return _0x24cfca[_0x1c40('0x33')]({'UserId':_0xeb44f5['body'][_0x1c40('0x5b')],'read1stAt':_['isNil'](_0x24cfca[_0x1c40('0x61')])?moment()[_0x1c40('0x59')](_0x1c40('0x5a')):undefined});}return null;})[_0x1c40('0x1f')](function(_0x5d8988){if(_0x5d8988){_0x11e775['interaction']=_0x5d8988['get']({'plain':!![]});interaction_log[_0x1c40('0x20')]('[SMSMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0xeb44f5[_0x1c40('0x5c')]['id'],_0xeb44f5[_0x1c40('0x5c')][_0x1c40('0x36')],_0xeb44f5[_0x1c40('0x5c')][_0x1c40('0x62')],_0x11e775[_0x1c40('0x63')]['id'],_0xeb44f5[_0x1c40('0x55')]?JSON[_0x1c40('0x64')](_0xeb44f5['body']):_0x1c40('0x65'));return respondWithRpcPromise('AcceptMessage',_0x1c40('0x66'),_0x11e775);}return null;})[_0x1c40('0x1f')](function(_0x4bc1bd){var _0x2b1a66=_0x1c40('0x67')+_0x4bc1bd['message'][_0x1c40('0x68')];return db[_0x1c40('0x69')][_0x1c40('0x3f')](_0x2b1a66,{'type':db[_0x1c40('0x6a')][_0x1c40('0x6b')][_0x1c40('0x6c')],'raw':!![]})[_0x1c40('0x1f')](function(_0x42348f){return _0x42348f;});})[_0x1c40('0x1f')](function(_0x525da5){if(_0x525da5){_0x11e775[_0x1c40('0x24')][_0x1c40('0x6d')]=_0x525da5[0x0];if(!_0xeb44f5[_0x1c40('0x55')][_0x1c40('0x5b')])return;return db['User'][_0x1c40('0x53')]({'where':{'id':_0xeb44f5[_0x1c40('0x55')][_0x1c40('0x5b')],'role':'agent'},'attributes':['id',_0x1c40('0x36'),'fullname',_0x1c40('0x6e'),_0x1c40('0x6f')],'raw':!![]});}return null;})[_0x1c40('0x1f')](function(_0x514bcd){if(!_0x514bcd)return null;_0x11e775[_0x1c40('0x24')][_0x1c40('0x5d')]=_0x514bcd;return _0x11e775;})[_0x1c40('0x1f')](function(_0x47fde4){if(_0x47fde4){if(_0xeb44f5['body']['manual']){_0x11e775[_0x1c40('0x24')]['interface']=util[_0x1c40('0x59')](_0x1c40('0x70'),_0xeb44f5[_0x1c40('0x5c')]['name']);_0x11e775[_0x1c40('0x24')][_0x1c40('0x71')]=_0x11e775[_0x1c40('0x71')];_0x11e775[_0x1c40('0x24')][_0x1c40('0x72')]=_0x11e775[_0x1c40('0x71')];_0x11e775[_0x1c40('0x24')][_0x1c40('0x73')]='accept';return respondWithRpcPromise('EventManager',_0x1c40('0x74'),{'event':_0x1c40('0x75'),'message':_0x11e775[_0x1c40('0x24')]},client9002)[_0x1c40('0x1f')](function(){return _0x11e775;});}return _0x11e775;}return null;})['then'](respondWithResult(_0x3e4e7b,null))[_0x1c40('0x4e')](handleError(_0x3e4e7b,null));};var interaction_log=require(_0x1c40('0x12'))('sms-interactions');exports['reject']=function(_0x15c38b,_0x39963f,_0x260e16){var _0x41405b={'agent':{},'channel':_0x1c40('0x76')};if(_0x15c38b[_0x1c40('0x55')]['id']){delete _0x15c38b['body']['id'];}_0x15c38b['body'][_0x1c40('0x5b')]=_0x15c38b[_0x1c40('0x55')][_0x1c40('0x5b')]||_0x15c38b[_0x1c40('0x5c')]['id'];_0x41405b['agent']['id']=_0x15c38b['body'][_0x1c40('0x5b')];return db[_0x1c40('0x39')][_0x1c40('0x53')]({'where':{'id':_0x15c38b[_0x1c40('0x4f')]['id'],'UserId':null}})[_0x1c40('0x1f')](handleEntityNotFound(_0x39963f,null))[_0x1c40('0x1f')](function(_0xc18f3d){if(_0xc18f3d){_0x41405b[_0x1c40('0x24')]=_0xc18f3d[_0x1c40('0x5e')]({'plain':!![]});return db[_0x1c40('0x5f')][_0x1c40('0x53')]({'where':{'id':_0xc18f3d[_0x1c40('0x60')]}});}return null;})[_0x1c40('0x1f')](handleEntityNotFound(_0x39963f,null))[_0x1c40('0x1f')](function(_0x3c5ebb){if(_0x3c5ebb){_0x41405b['interaction']=_0x3c5ebb['get']({'plain':!![]});interaction_log['info'](_0x1c40('0x77'),_0x15c38b[_0x1c40('0x5c')]['id'],_0x15c38b[_0x1c40('0x5c')][_0x1c40('0x36')],_0x15c38b[_0x1c40('0x5c')][_0x1c40('0x62')],_0x41405b[_0x1c40('0x63')]['id'],_0x15c38b['body']?JSON[_0x1c40('0x64')](_0x15c38b[_0x1c40('0x55')]):_0x1c40('0x65'));return respondWithRpcPromise('RejectMessage',_0x1c40('0x78'),_0x41405b);}return null;})[_0x1c40('0x1f')](function(_0x5ae803){var _0x219959=_0x1c40('0x67')+_0x5ae803[_0x1c40('0x24')][_0x1c40('0x68')];return db[_0x1c40('0x69')][_0x1c40('0x3f')](_0x219959,{'type':db[_0x1c40('0x6a')][_0x1c40('0x6b')][_0x1c40('0x6c')],'raw':!![]})[_0x1c40('0x1f')](function(_0x56c5eb){return _0x56c5eb;});})[_0x1c40('0x1f')](function(_0x32cafc){if(_0x32cafc){_0x41405b[_0x1c40('0x24')][_0x1c40('0x6d')]=_0x32cafc[0x0];if(!_0x15c38b[_0x1c40('0x55')][_0x1c40('0x5b')])return;return db[_0x1c40('0x79')][_0x1c40('0x53')]({'where':{'id':_0x15c38b[_0x1c40('0x55')]['UserId'],'role':_0x1c40('0x5d')},'attributes':['id',_0x1c40('0x36'),'fullname','email',_0x1c40('0x6f')],'raw':!![]});}return null;})[_0x1c40('0x1f')](function(_0x4bf56c){if(!_0x4bf56c)return null;_0x41405b['message']['agent']=_0x4bf56c;return _0x41405b;})[_0x1c40('0x1f')](function(_0x1fde7c){if(_0x1fde7c){_0x1fde7c[_0x1c40('0x24')][_0x1c40('0x7a')]=util['format']('SIP/%s',_0x15c38b[_0x1c40('0x5c')][_0x1c40('0x36')]);_0x1fde7c[_0x1c40('0x24')]['channel']=_0x41405b[_0x1c40('0x71')];_0x1fde7c['message']['motionChannel']=_0x41405b[_0x1c40('0x71')];_0x1fde7c[_0x1c40('0x24')]['event']='reject';respondWithRpcPromise(_0x1c40('0x74'),_0x1c40('0x74'),{'event':'rejectmessage','message':_0x1fde7c[_0x1c40('0x24')]},client9002);return _0x41405b;}return null;})[_0x1c40('0x1f')](respondWithResult(_0x39963f,null))['catch'](handleError(_0x39963f,null));};exports[_0x1c40('0x28')]=function(_0x5c6de1,_0x396c9a,_0x486aab){if(_0x5c6de1[_0x1c40('0x55')]['id']){delete _0x5c6de1[_0x1c40('0x55')]['id'];}var _0x5cf155;return db[_0x1c40('0x39')][_0x1c40('0x53')]({'where':{'id':_0x5c6de1[_0x1c40('0x4f')]['id']}})[_0x1c40('0x1f')](handleEntityNotFound(_0x396c9a,null))[_0x1c40('0x1f')](function(_0x70ec96){if(_0x70ec96){_0x5cf155=_0x70ec96;return db[_0x1c40('0x7b')][_0x1c40('0x53')]({'where':{'id':_0x70ec96[_0x1c40('0x7c')]}});}})[_0x1c40('0x1f')](handleEntityNotFound(_0x396c9a,null))[_0x1c40('0x1f')](function(_0x1b9a1a){if(_0x1b9a1a){logger['debug'](_0x1c40('0x7d'),_0x1c40('0x28'),'received\x20delivery\x20report\x20from',_0x1b9a1a[_0x1c40('0x3c')],util[_0x1c40('0x7e')](_0x5c6de1['body'],{'showHidden':![],'depth':null}));switch(_0x1b9a1a[_0x1c40('0x3c')]){case'twilio':if(_0x5c6de1['body'][_0x1c40('0x7f')]&&_0x5c6de1[_0x1c40('0x55')][_0x1c40('0x7f')]===_0x5cf155[_0x1c40('0x80')]){return _0x5cf155[_0x1c40('0x33')]({'read':!![]});}else{logger['error'](_0x1c40('0x81'),_0x1c40('0x28'),'twilio',util[_0x1c40('0x7e')](_0x5c6de1[_0x1c40('0x55')],{'showHidden':![],'depth':null}));}break;case _0x1c40('0x82'):if(_0x5c6de1[_0x1c40('0x55')][_0x1c40('0x83')]&&_0x5c6de1[_0x1c40('0x55')][_0x1c40('0x83')]===_0x5cf155[_0x1c40('0x80')]&&_[_0x1c40('0x84')]([_0x1c40('0x85'),_0x1c40('0x86')],_0x5c6de1[_0x1c40('0x55')][_0x1c40('0x87')])>=0x0){return _0x5cf155[_0x1c40('0x33')]({'read':!![]});}else{logger[_0x1c40('0x22')](_0x1c40('0x81'),_0x1c40('0x28'),'plivio',util['inspect'](_0x5c6de1['body'],{'showHidden':![],'depth':null}));}break;case'infobip':var _0x4054c0=_0x5c6de1['body']['results'][0x0];if(_0x4054c0[_0x1c40('0x28')][_0x1c40('0x88')]===_0x1c40('0x89')){return _0x5cf155[_0x1c40('0x33')]({'read':!![]});}else{logger[_0x1c40('0x22')](_0x1c40('0x81'),_0x1c40('0x28'),_0x1c40('0x8a'),util[_0x1c40('0x7e')](_0x5c6de1[_0x1c40('0x55')],{'showHidden':![],'depth':null}));}break;}return _0x5cf155;}})['then'](respondWithResult(_0x396c9a,null))[_0x1c40('0x4e')](handleError(_0x396c9a,null));};
\ No newline at end of file
index efc1319..f0dffd5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x463f=['hasOwnProperty','hook','exports','events','../../mysqldb','SmsMessage','save','remove','emit'];(function(_0x2104ec,_0x532762){var _0x1dc742=function(_0x5ac08f){while(--_0x5ac08f){_0x2104ec['push'](_0x2104ec['shift']());}};_0x1dc742(++_0x532762);}(_0x463f,0x1f2));var _0xf463=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0x463f[_0x59ee6f];return _0x4c0979;};'use strict';var EventEmitter=require(_0xf463('0x0'));var SmsMessage=require(_0xf463('0x1'))['db'][_0xf463('0x2')];var SmsMessageEvents=new EventEmitter();SmsMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xf463('0x3'),'afterUpdate':'update','afterDestroy':_0xf463('0x4')};function emitEvent(_0x413959){return function(_0x353340,_0x4839c2,_0x1a47cb){SmsMessageEvents[_0xf463('0x5')](_0x413959+':'+_0x353340['id'],_0x353340);SmsMessageEvents['emit'](_0x413959,_0x353340);_0x1a47cb(null);};}for(var e in events){if(events[_0xf463('0x6')](e)){var event=events[e];SmsMessage[_0xf463('0x7')](e,emitEvent(event));}}module[_0xf463('0x8')]=SmsMessageEvents;
\ No newline at end of file
+var _0x084c=['SmsMessage','save','update','remove','emit','exports','events','../../mysqldb'];(function(_0x2be004,_0x7393c3){var _0x1722ea=function(_0x5642f9){while(--_0x5642f9){_0x2be004['push'](_0x2be004['shift']());}};_0x1722ea(++_0x7393c3);}(_0x084c,0x106));var _0xc084=function(_0x465a0c,_0x19d4d5){_0x465a0c=_0x465a0c-0x0;var _0x1e202e=_0x084c[_0x465a0c];return _0x1e202e;};'use strict';var EventEmitter=require(_0xc084('0x0'));var SmsMessage=require(_0xc084('0x1'))['db'][_0xc084('0x2')];var SmsMessageEvents=new EventEmitter();SmsMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xc084('0x3'),'afterUpdate':_0xc084('0x4'),'afterDestroy':_0xc084('0x5')};function emitEvent(_0x4253c8){return function(_0x3af382,_0x524725,_0x156fb6){SmsMessageEvents[_0xc084('0x6')](_0x4253c8+':'+_0x3af382['id'],_0x3af382);SmsMessageEvents[_0xc084('0x6')](_0x4253c8,_0x3af382);_0x156fb6(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsMessage['hook'](e,emitEvent(event));}}module[_0xc084('0x7')]=SmsMessageEvents;
\ No newline at end of file
index 9f1ac15..c690663 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x35d1=['data','queued_count','head','message_id','clickSend','plivo','authId','/api/sms/messages/','https://api.plivo.com/v1/Account/%s/Message/','Basic\x20%s','message_uuid','Missing\x20parameters:\x20authId,\x20authToken','baseUrl','/auth/1/session','/sms/2/text/advanced','application/json','IBSSO\x20','infobip','csc','crypto','login','timestamp','keys','sort','length','apiKey','createHash','md5','digest','hex','signature=','id_sms','Missing\x20parameters:\x20apiKey','https://platform.clickatell.com/messages','uuid','UTF-8','apiMessageId','clickatell','bandwidth','https://messaging.bandwidth.com/api/v2/users/','intelepeer','https://api.intelepeer.com/_rest/v4/app/sms/send','Bearer\x20','code','message','https://api.intelepeer.com/_rest/v4/app/sms/mdr','Token\x20not\x20received','finally','utf8mb4','lodash','util','../../config/logger','api','request-promise','path','rimraf','./smsMessage.attributes','exports','define','SmsMessage','sms_messages','messageId','fti_sms_messages','body','FULLTEXT','get','direction','toLowerCase','out','secret','isNil','UserId','SmsInteractionId','SmsInteraction','update','createdAt','catch','SmsAccount','SmsAccountId','then','twilio','accountSid','authToken','phone','messages','create','remote','/status?token=','token','sid','SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate','inspect','error','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','skebby','https://api.skebby.it/API/v1.0/REST/','password','smsMethod','sender','login?username=','username','&password=','GET','split','sms','POST','user_key','session_key','total_sent','deliveryReport','read','Missing\x20parameters:\x20username,\x20password','connectel','senderString','https://smsapi.connectel.se/api/v2/send/','clicksend','xCALLY\x20Motion','%s:%s','format','toString','base64','http_code'];(function(_0xc82f28,_0x24e29a){var _0x5608b1=function(_0x1e1ab5){while(--_0x1e1ab5){_0xc82f28['push'](_0xc82f28['shift']());}};_0x5608b1(++_0x24e29a);}(_0x35d1,0x127));var _0x135d=function(_0x4450b1,_0x214ace){_0x4450b1=_0x4450b1-0x0;var _0x399b0b=_0x35d1[_0x4450b1];return _0x399b0b;};'use strict';var _=require(_0x135d('0x0'));var util=require(_0x135d('0x1'));var logger=require(_0x135d('0x2'))(_0x135d('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x135d('0x4'));var fs=require('fs');var path=require(_0x135d('0x5'));var rimraf=require(_0x135d('0x6'));var config=require('../../config/environment');var attributes=require(_0x135d('0x7'));module[_0x135d('0x8')]=function(_0xeadf6a,_0x1d7ca9){return _0xeadf6a[_0x135d('0x9')](_0x135d('0xa'),attributes,{'tableName':_0x135d('0xb'),'paranoid':![],'indexes':[{'name':_0x135d('0xc'),'fields':['messageId']},{'name':_0x135d('0xd'),'fields':[_0x135d('0xe')],'type':_0x135d('0xf')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x133f3e,_0x2c8285,_0x7dab73){var _0xc76cc6=_0xeadf6a['models'];var _0x505129=_0x133f3e[_0x135d('0x10')]({'plain':!![]});if(_0x505129[_0x135d('0x11')][_0x135d('0x12')]()==='in'||_0x505129[_0x135d('0x11')][_0x135d('0x12')]()===_0x135d('0x13')&&!_0x505129[_0x135d('0x14')]&&!_[_0x135d('0x15')](_0x505129[_0x135d('0x16')])&&!_[_0x135d('0x15')](_0x505129[_0x135d('0x17')])){_0xc76cc6[_0x135d('0x18')]['findOne']({'where':{'id':_0x505129[_0x135d('0x17')]}})['then'](function(_0x4dab2c){if(_0x4dab2c){_0x4dab2c[_0x135d('0x19')]({'lastMsgAt':_0x505129[_0x135d('0x1a')],'lastMsgDirection':_0x505129[_0x135d('0x11')][_0x135d('0x12')]()});}})[_0x135d('0x1b')](function(_0x249fbb){console['error'](_0x249fbb);});}if(_0x505129['direction']===_0x135d('0x13')&&!_0x505129[_0x135d('0x14')]){var _0x431c62;_0xc76cc6[_0x135d('0x1c')]['find']({'where':{'id':_0x505129[_0x135d('0x1d')]},'raw':!![]})[_0x135d('0x1e')](function(_0x16a1f3){_0x431c62=_0x16a1f3;if(_0x431c62&&_0x431c62['type']){switch(_0x431c62['type']){case _0x135d('0x1f'):var _0x4695be=require(_0x135d('0x1f'));if(_0x431c62[_0x135d('0x20')]&&_0x431c62[_0x135d('0x21')]&&_0x431c62[_0x135d('0x22')]){var _0x436654=new _0x4695be(_0x431c62['accountSid'],_0x431c62[_0x135d('0x21')]);_0x436654[_0x135d('0x23')][_0x135d('0x24')]({'body':_0x505129[_0x135d('0xe')],'to':_0x505129[_0x135d('0x22')],'from':_0x431c62[_0x135d('0x22')],'statusCallback':_0x431c62[_0x135d('0x25')]+'/api/sms/messages/'+_0x505129['id']+_0x135d('0x26')+_0x431c62[_0x135d('0x27')]})[_0x135d('0x1e')](function(_0x129a07){if(_0x129a07[_0x135d('0x28')]){return _0x133f3e[_0x135d('0x19')]({'messageId':_0x129a07[_0x135d('0x28')]});}})[_0x135d('0x1b')](function(_0x2c0e2d){logger['error'](_0x135d('0x29'),_0x135d('0x2a'),_0x135d('0x1f'),util[_0x135d('0x2b')](_0x2c0e2d,{'showHidden':![],'depth':null}));});}else{logger[_0x135d('0x2c')](_0x135d('0x29'),_0x135d('0x2a'),'twilio',_0x135d('0x2d'));}break;case _0x135d('0x2e'):var _0x527cb1=_0x135d('0x2f');if(_0x431c62['username']&&_0x431c62[_0x135d('0x30')]){var _0xafcaa3={'recipient':[_0x505129[_0x135d('0x22')]],'message':_0x505129[_0x135d('0xe')],'message_type':_0x431c62['smsMethod']};if(_0x431c62['smsMethod']&&_0x431c62[_0x135d('0x31')]!=='SI'){_0xafcaa3[_0x135d('0x32')]=_0x431c62['phone'];}var _0x12fda9={'url':_0x527cb1+_0x135d('0x33')+_0x431c62[_0x135d('0x34')]+_0x135d('0x35')+_0x431c62[_0x135d('0x30')],'method':_0x135d('0x36')};rp(_0x12fda9)[_0x135d('0x1e')](function(_0x469e41){var _0x1d1f95=_0x469e41[_0x135d('0x37')](';');var _0x8263ae={'user_key':_0x1d1f95[0x0],'session_key':_0x1d1f95[0x1]};_0x12fda9={'url':_0x527cb1+_0x135d('0x38'),'method':_0x135d('0x39'),'headers':{'user_key':_0x8263ae[_0x135d('0x3a')],'Session_key':_0x8263ae[_0x135d('0x3b')]},'json':!![],'body':_0xafcaa3};return rp(_0x12fda9);})[_0x135d('0x1e')](function(_0x46035f){if(_0x46035f[_0x135d('0x3c')]>=0x1){var _0x48f9c7={'messageId':_0x46035f['internal_order_id']};if(_0x431c62[_0x135d('0x31')]!=='GP'||!_0x431c62[_0x135d('0x3d')]){_0x48f9c7[_0x135d('0x3e')]=!![];}return _0x133f3e['update'](_0x48f9c7);}else{return logger[_0x135d('0x2c')](_0x135d('0x29'),_0x135d('0x2a'),_0x135d('0x2e'),util[_0x135d('0x2b')](_0x46035f,{'showHidden':![],'depth':null}));}})[_0x135d('0x1b')](function(_0x29cf06){return logger['error'](_0x135d('0x29'),_0x135d('0x2a'),_0x135d('0x2e'),util['inspect'](_0x29cf06,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x135d('0x29'),_0x135d('0x2a'),_0x135d('0x2e'),_0x135d('0x3f'));}break;case _0x135d('0x40'):if(_0x431c62[_0x135d('0x21')]){var _0xd417e9={'recipient':_0x505129[_0x135d('0x22')],'message':_0x505129[_0x135d('0xe')],'sender':_0x431c62[_0x135d('0x41')]||_0x431c62['phone'],'authorization':_0x431c62[_0x135d('0x21')]};var _0x2c8285={'method':'POST','uri':_0x135d('0x42'),'body':_0xd417e9,'json':!![]};rp(_0x2c8285)['then'](function(_0x1c80ae){var _0x50458d={'messageId':_0x1c80ae['requestid']};if(!_0x431c62['deliveryReport']){_0x50458d[_0x135d('0x3e')]=!![];}return _0x133f3e[_0x135d('0x19')](_0x50458d);})[_0x135d('0x1b')](function(_0x2e9422){logger[_0x135d('0x2c')](_0x135d('0x29'),_0x135d('0x2a'),'connectel',util[_0x135d('0x2b')](_0x2e9422,{'showHidden':![],'depth':null}));});}else{logger[_0x135d('0x2c')](_0x135d('0x29'),_0x135d('0x2a'),_0x135d('0x40'),'Missing\x20parameters:\x20authToken');}break;case _0x135d('0x43'):if(_0x431c62[_0x135d('0x34')]&&_0x431c62[_0x135d('0x30')]){var _0xd417e9={'messages':[{'source':_0x135d('0x44'),'to':_0x505129['phone'],'body':_0x505129[_0x135d('0xe')],'from':_0x431c62[_0x135d('0x41')]||_0x431c62['phone']}]};var _0x10dcf9=util['format'](_0x135d('0x45'),_0x431c62[_0x135d('0x34')],_0x431c62['password']);var _0x2c8285={'method':_0x135d('0x39'),'uri':'https://rest.clicksend.com/v3/sms/send','body':_0xd417e9,'headers':{'Authorization':util[_0x135d('0x46')]('Basic\x20%s',new Buffer(_0x10dcf9)[_0x135d('0x47')](_0x135d('0x48')))},'json':!![]};rp(_0x2c8285)['then'](function(_0x45d2ca){if(_0x45d2ca[_0x135d('0x49')]>=0xc8&&_0x45d2ca['http_code']<=0xce){if(_0x45d2ca[_0x135d('0x4a')]&&_0x45d2ca['data'][_0x135d('0x4b')]>0x0){var _0x574cdf=_[_0x135d('0x4c')](_0x45d2ca[_0x135d('0x4a')][_0x135d('0x23')]);var _0x2e23c1={'messageId':_0x574cdf[_0x135d('0x4d')]};if(!_0x431c62[_0x135d('0x3d')]){_0x2e23c1[_0x135d('0x3e')]=!![];}return _0x133f3e[_0x135d('0x19')](_0x2e23c1);}else{logger['error'](_0x135d('0x29'),_0x135d('0x2a'),'clickSend',util['inspect'](_0x45d2ca,{'showHidden':![],'depth':null}));}}else{logger[_0x135d('0x2c')](_0x135d('0x29'),_0x135d('0x2a'),'clickSend',util[_0x135d('0x2b')](_0x45d2ca,{'showHidden':![],'depth':null}));}})[_0x135d('0x1b')](function(_0x2a6d56){logger[_0x135d('0x2c')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x135d('0x4e'),util[_0x135d('0x2b')](_0x2a6d56,{'showHidden':![],'depth':null}));});}else{logger[_0x135d('0x2c')](_0x135d('0x29'),_0x135d('0x2a'),_0x135d('0x4e'),_0x135d('0x3f'));}break;case _0x135d('0x4f'):if(_0x431c62[_0x135d('0x50')]&&_0x431c62[_0x135d('0x21')]){var _0xd417e9={'dst':_0x505129['phone'],'text':_0x505129[_0x135d('0xe')],'src':_0x431c62[_0x135d('0x41')]||_0x431c62[_0x135d('0x22')],'url':_0x431c62['remote']+_0x135d('0x51')+_0x505129['id']+'/status?token='+_0x431c62[_0x135d('0x27')]};var _0x10dcf9=util[_0x135d('0x46')](_0x135d('0x45'),_0x431c62[_0x135d('0x50')],_0x431c62[_0x135d('0x21')]);var _0x2c8285={'method':'POST','uri':util[_0x135d('0x46')](_0x135d('0x52'),_0x431c62[_0x135d('0x50')]),'body':_0xd417e9,'headers':{'Authorization':util[_0x135d('0x46')](_0x135d('0x53'),new Buffer(_0x10dcf9)[_0x135d('0x47')](_0x135d('0x48')))},'json':!![]};rp(_0x2c8285)['then'](function(_0x2e8329){var _0x5a29b5={'messageId':_0x2e8329[_0x135d('0x54')][0x0]};return _0x133f3e[_0x135d('0x19')](_0x5a29b5);})[_0x135d('0x1b')](function(_0x49ac71){logger[_0x135d('0x2c')](_0x135d('0x29'),'afterCreate','plivo',util[_0x135d('0x2b')](_0x49ac71,{'showHidden':![],'depth':null}));});}else{logger[_0x135d('0x2c')](_0x135d('0x29'),'afterCreate',_0x135d('0x4f'),_0x135d('0x55'));}break;case'infobip':if(_0x431c62[_0x135d('0x34')]&&_0x431c62[_0x135d('0x30')]){if(_0x431c62[_0x135d('0x56')]){var _0x32c2d1={'method':_0x135d('0x39'),'uri':_0x431c62[_0x135d('0x56')]+_0x135d('0x57'),'body':{'username':_0x431c62['username'],'password':_0x431c62['password']},'json':!![]};return rp(_0x32c2d1)[_0x135d('0x1e')](function(_0x18b20f){var _0x30962a={'method':_0x135d('0x39'),'uri':_0x431c62[_0x135d('0x56')]+_0x135d('0x58'),'body':{'messages':[{'from':_0x431c62[_0x135d('0x22')],'destinations':[{'to':_0x505129[_0x135d('0x22')]}],'text':_0x505129[_0x135d('0xe')],'notifyUrl':_0x431c62[_0x135d('0x25')]+_0x135d('0x51')+_0x505129['id']+_0x135d('0x26')+_0x431c62['token'],'notifyContentType':_0x135d('0x59'),'callbackData':_0x431c62[_0x135d('0x22')]+';'+_0x505129[_0x135d('0xe')]}]},'headers':{'Authorization':_0x135d('0x5a')+_0x18b20f[_0x135d('0x27')]},'json':!![]};return rp(_0x30962a)[_0x135d('0x1e')](function(_0x2d38d8){if(_0x2d38d8[_0x135d('0x23')]){var _0x20833d={'messageId':_0x2d38d8['messages'][0x0][_0x135d('0xc')]};if(!_0x431c62['deliveryReport']){_0x20833d[_0x135d('0x3e')]=!![];}return _0x133f3e[_0x135d('0x19')](_0x20833d);}else{return logger[_0x135d('0x2c')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x135d('0x5b'),util[_0x135d('0x2b')](_0x2d38d8,{'showHidden':![],'depth':null}));}});})[_0x135d('0x1b')](function(_0x5015f9){return logger['error'](_0x135d('0x29'),'afterCreate',_0x135d('0x5b'),util['inspect'](_0x5015f9,{'showHidden':![],'depth':null}));});}else{logger[_0x135d('0x2c')](_0x135d('0x29'),'afterCreate',_0x135d('0x5b'),'Missing\x20parameters:\x20base_url');}}else{logger[_0x135d('0x2c')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x135d('0x2a'),_0x135d('0x5b'),_0x135d('0x3f'));}break;case _0x135d('0x5c'):var _0x3a9298=require(_0x135d('0x5d'));if(_0x431c62['apiKey']){var _0x5a00f2={};_0x5a00f2[_0x135d('0x5e')]=_0x431c62['username'];_0x5a00f2[_0x135d('0x22')]=_0x505129[_0x135d('0x22')];_0x5a00f2[_0x135d('0x32')]=_0x431c62['phone'];_0x5a00f2['text']=_0x505129[_0x135d('0xe')];_0x5a00f2[_0x135d('0x5f')]=+new Date();var _0xa659bf='';var _0x1eeba2='';var _0xb7d0c8=Object[_0x135d('0x60')](_0x5a00f2);_0xb7d0c8[_0x135d('0x61')]();for(var _0x4a4368=0x0;_0x4a4368<_0xb7d0c8[_0x135d('0x62')];_0x4a4368++){if(_0xa659bf!=''){_0xa659bf+='&';}_0xa659bf+=_0xb7d0c8[_0x4a4368]+'='+encodeURIComponent(_0x5a00f2[_0xb7d0c8[_0x4a4368]]);_0x1eeba2+=_0x5a00f2[_0xb7d0c8[_0x4a4368]];}_0x1eeba2+=_0x431c62[_0x135d('0x63')];_0x1eeba2=_0x3a9298[_0x135d('0x64')](_0x135d('0x65'))[_0x135d('0x19')](_0x1eeba2)[_0x135d('0x66')](_0x135d('0x67'));if(_0xa659bf!==''){_0xa659bf+='&';}_0xa659bf+=_0x135d('0x68')+_0x1eeba2;var _0x12fda9={'method':_0x135d('0x36'),'uri':_0x431c62[_0x135d('0x56')]+'/external/get/send.php?'+_0xa659bf,'json':!![]};return rp(_0x12fda9)[_0x135d('0x1e')](function(_0x3074c9){var _0x140239=Object['keys'](_0x3074c9);if(_0x3074c9[_0x140239[0x0]][_0x135d('0x2c')]&&parseInt(_0x3074c9[_0x140239[0x0]][_0x135d('0x2c')])===0x0){var _0x2fc167={'messageId':_0x3074c9[_0x140239[0x0]][_0x135d('0x69')]};if(!_0x431c62[_0x135d('0x3d')]){_0x2fc167['read']=!![];}return _0x133f3e[_0x135d('0x19')](_0x2fc167);}else{return logger[_0x135d('0x2c')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x135d('0x2a'),_0x135d('0x5c'),util[_0x135d('0x2b')](_0x3074c9['error'],{'showHidden':![],'depth':null}));}})[_0x135d('0x1b')](function(_0x57fdb5){return logger[_0x135d('0x2c')](_0x135d('0x29'),_0x135d('0x2a'),_0x135d('0x5c'),util[_0x135d('0x2b')](_0x57fdb5,{'showHidden':![],'depth':null}));});}else{logger[_0x135d('0x2c')](_0x135d('0x29'),_0x135d('0x2a'),_0x135d('0x5c'),_0x135d('0x6a'));}break;case'clickatell':if(_0x431c62['apiKey']){var _0x5b2eb0={'method':'POST','uri':_0x135d('0x6b'),'headers':{'Authorization':_0x431c62[_0x135d('0x63')]},'body':{'content':_0x505129[_0x135d('0xe')],'to':[_0x505129[_0x135d('0x22')]],'from':_0x431c62[_0x135d('0x22')],'binary':![],'clientMessageId':_0x135d('0x6c'),'charset':_0x135d('0x6d')},'json':!![]};rp(_0x5b2eb0)[_0x135d('0x1e')](function(_0x3f2afc){if(!_0x3f2afc[_0x135d('0x2c')]){var _0x4e09a4={'messageId':_0x3f2afc[_0x135d('0x23')][0x0][_0x135d('0x6e')]};if(!_0x431c62['deliveryReport']){_0x4e09a4[_0x135d('0x3e')]=!![];}return _0x133f3e[_0x135d('0x19')](_0x4e09a4);}else{return logger[_0x135d('0x2c')](_0x135d('0x29'),_0x135d('0x2a'),'clickatell',util[_0x135d('0x2b')](_0x3f2afc[_0x135d('0x2c')],{'showHidden':![],'depth':null}));}})[_0x135d('0x1b')](function(_0x709dc5){return logger['error'](_0x135d('0x29'),_0x135d('0x2a'),_0x135d('0x6f'),util[_0x135d('0x2b')](_0x709dc5,{'showHidden':![],'depth':null}));});}else{logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate','clickatell',_0x135d('0x6a'));}break;case _0x135d('0x70'):if(_0x431c62[_0x135d('0x34')]&&_0x431c62[_0x135d('0x30')]){var _0x10dcf9=util['format'](_0x135d('0x45'),_0x431c62['username'],_0x431c62[_0x135d('0x30')]);var _0x2c8285={'method':'POST','uri':_0x135d('0x71')+_0x431c62['accountId']+'/messages','body':{'to':[_0x505129[_0x135d('0x22')]],'text':_0x505129[_0x135d('0xe')],'from':_0x431c62[_0x135d('0x22')],'applicationId':_0x431c62['applicationId']},'headers':{'Authorization':util[_0x135d('0x46')](_0x135d('0x53'),new Buffer(_0x10dcf9)[_0x135d('0x47')](_0x135d('0x48')))},'json':!![]};rp(_0x2c8285)[_0x135d('0x1e')](function(_0x411780){if(_0x411780['id']){var _0x373058={'messageId':_0x411780['id']};return _0x133f3e['update'](_0x373058);}else{logger[_0x135d('0x2c')](_0x135d('0x29'),_0x135d('0x2a'),'bandwidth',util[_0x135d('0x2b')](_0x411780,{'showHidden':![],'depth':null}));}})[_0x135d('0x1b')](function(_0x48b0e5){logger[_0x135d('0x2c')](_0x135d('0x29'),'afterCreate',_0x135d('0x70'),util[_0x135d('0x2b')](_0x48b0e5,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x135d('0x29'),_0x135d('0x2a'),_0x135d('0x70'),_0x135d('0x3f'));}break;case _0x135d('0x72'):if(_0x431c62[_0x135d('0x63')]){var _0x5dad68={};var _0x12fda9={'method':_0x135d('0x39'),'uri':_0x135d('0x73'),'headers':{'Authorization':_0x135d('0x74')+_0x431c62['apiKey'],'Content-Type':_0x135d('0x59')},'body':{'from':_0x431c62['phone'],'to':_0x505129[_0x135d('0x22')],'text':_0x505129[_0x135d('0xe')]},'json':!![]};return rp(_0x12fda9)[_0x135d('0x1e')](function(_0x4e7877){if(_0x4e7877[_0x135d('0x75')]==0xca){_0x5dad68[_0x135d('0x76')]=_0x4e7877;var _0x3d5e47={'method':_0x135d('0x39'),'uri':_0x135d('0x77'),'headers':{'Authorization':_0x135d('0x74')+_0x431c62[_0x135d('0x63')],'Content-Type':_0x135d('0x59')},'body':{'refid':_0x5dad68[_0x135d('0x76')]['refid']},'json':!![]};return rp(_0x3d5e47)[_0x135d('0x1e')](function(_0x2d35ce){_0x5dad68['status']=_0x2d35ce;var _0x1090f0={'messageId':_0x5dad68[_0x135d('0x76')]['refid'],'read':!![]};return _0x133f3e[_0x135d('0x19')](_0x1090f0);});}else{return logger['error'](_0x135d('0x29'),'afterCreate','intelepeer',util['inspect'](_0x4e7877,{'showHidden':![],'depth':null}));}})[_0x135d('0x1b')](function(_0xe03d5b){return logger['error'](_0x135d('0x29'),_0x135d('0x2a'),_0x135d('0x72'),util[_0x135d('0x2b')](_0xe03d5b,{'showHidden':![],'depth':null}));});}else{return logger['error'](_0x135d('0x29'),_0x135d('0x2a'),'intelepeer',_0x135d('0x78'));}break;}}})[_0x135d('0x79')](function(){_0x7dab73();});}else{_0x7dab73();}}},'charset':_0x135d('0x7a'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xc5ff=['Missing\x20parameters:\x20apiKey','clickatell','https://platform.clickatell.com/messages','uuid','apiMessageId','bandwidth','accountId','/messages','intelepeer','https://api.intelepeer.com/_rest/v4/app/sms/send','Bearer\x20','code','https://api.intelepeer.com/_rest/v4/app/sms/mdr','message','refid','Token\x20not\x20received','finally','utf8mb4','utf8mb4_unicode_ci','lodash','util','moment','bluebird','rimraf','../../config/environment','./smsMessage.attributes','define','SmsMessage','sms_messages','messageId','fti_sms_messages','body','models','get','direction','toLowerCase','out','isNil','UserId','SmsInteraction','findOne','SmsInteractionId','then','createdAt','catch','error','secret','SmsAccount','SmsAccountId','type','twilio','authToken','phone','messages','remote','/api/sms/messages/','/status?token=','token','update','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','smsMethod','sender','login?username=','&password=','GET','split','sms','POST','user_key','session_key','total_sent','internal_order_id','deliveryReport','Missing\x20parameters:\x20username,\x20password','senderString','read','Missing\x20parameters:\x20authToken','xCALLY\x20Motion','format','%s:%s','https://rest.clicksend.com/v3/sms/send','Basic\x20%s','toString','base64','http_code','data','queued_count','clickSend','plivo','authId','https://api.plivo.com/v1/Account/%s/Message/','message_uuid','Missing\x20parameters:\x20authId,\x20authToken','infobip','baseUrl','/auth/1/session','/sms/2/text/advanced','application/json','IBSSO\x20','csc','crypto','apiKey','text','timestamp','sort','length','createHash','md5','digest','hex','/external/get/send.php?','keys','id_sms'];(function(_0x51985c,_0x2a9bd8){var _0x136a91=function(_0x541ba8){while(--_0x541ba8){_0x51985c['push'](_0x51985c['shift']());}};_0x136a91(++_0x2a9bd8);}(_0xc5ff,0x17b));var _0xfc5f=function(_0x3e2246,_0x4006ce){_0x3e2246=_0x3e2246-0x0;var _0x58b878=_0xc5ff[_0x3e2246];return _0x58b878;};'use strict';var _=require(_0xfc5f('0x0'));var util=require(_0xfc5f('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xfc5f('0x2'));var BPromise=require(_0xfc5f('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xfc5f('0x4'));var config=require(_0xfc5f('0x5'));var attributes=require(_0xfc5f('0x6'));module['exports']=function(_0x3120df,_0x28e94d){return _0x3120df[_0xfc5f('0x7')](_0xfc5f('0x8'),attributes,{'tableName':_0xfc5f('0x9'),'paranoid':![],'indexes':[{'name':_0xfc5f('0xa'),'fields':[_0xfc5f('0xa')]},{'name':_0xfc5f('0xb'),'fields':[_0xfc5f('0xc')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x4f8e5e,_0xb869e2,_0x5001b0){var _0x52e27d=_0x3120df[_0xfc5f('0xd')];var _0x59b320=_0x4f8e5e[_0xfc5f('0xe')]({'plain':!![]});if(_0x59b320[_0xfc5f('0xf')][_0xfc5f('0x10')]()==='in'||_0x59b320[_0xfc5f('0xf')][_0xfc5f('0x10')]()===_0xfc5f('0x11')&&!_0x59b320['secret']&&!_[_0xfc5f('0x12')](_0x59b320[_0xfc5f('0x13')])&&!_[_0xfc5f('0x12')](_0x59b320['SmsInteractionId'])){_0x52e27d[_0xfc5f('0x14')][_0xfc5f('0x15')]({'where':{'id':_0x59b320[_0xfc5f('0x16')]}})[_0xfc5f('0x17')](function(_0x511445){if(_0x511445){_0x511445['update']({'lastMsgAt':_0x59b320[_0xfc5f('0x18')],'lastMsgDirection':_0x59b320[_0xfc5f('0xf')][_0xfc5f('0x10')]()});}})[_0xfc5f('0x19')](function(_0x198a4d){console[_0xfc5f('0x1a')](_0x198a4d);});}if(_0x59b320[_0xfc5f('0xf')]===_0xfc5f('0x11')&&!_0x59b320[_0xfc5f('0x1b')]){var _0x213160;_0x52e27d[_0xfc5f('0x1c')]['find']({'where':{'id':_0x59b320[_0xfc5f('0x1d')]},'raw':!![]})[_0xfc5f('0x17')](function(_0x33d05e){_0x213160=_0x33d05e;if(_0x213160&&_0x213160[_0xfc5f('0x1e')]){switch(_0x213160[_0xfc5f('0x1e')]){case _0xfc5f('0x1f'):var _0x1803da=require(_0xfc5f('0x1f'));if(_0x213160['accountSid']&&_0x213160[_0xfc5f('0x20')]&&_0x213160[_0xfc5f('0x21')]){var _0x47754c=new _0x1803da(_0x213160['accountSid'],_0x213160['authToken']);_0x47754c[_0xfc5f('0x22')]['create']({'body':_0x59b320[_0xfc5f('0xc')],'to':_0x59b320[_0xfc5f('0x21')],'from':_0x213160['phone'],'statusCallback':_0x213160[_0xfc5f('0x23')]+_0xfc5f('0x24')+_0x59b320['id']+_0xfc5f('0x25')+_0x213160[_0xfc5f('0x26')]})[_0xfc5f('0x17')](function(_0x37b28f){if(_0x37b28f['sid']){return _0x4f8e5e[_0xfc5f('0x27')]({'messageId':_0x37b28f['sid']});}})[_0xfc5f('0x19')](function(_0x474421){logger[_0xfc5f('0x1a')](_0xfc5f('0x28'),_0xfc5f('0x29'),_0xfc5f('0x1f'),util[_0xfc5f('0x2a')](_0x474421,{'showHidden':![],'depth':null}));});}else{logger[_0xfc5f('0x1a')](_0xfc5f('0x28'),_0xfc5f('0x29'),_0xfc5f('0x1f'),_0xfc5f('0x2b'));}break;case _0xfc5f('0x2c'):var _0x4f51d1=_0xfc5f('0x2d');if(_0x213160[_0xfc5f('0x2e')]&&_0x213160[_0xfc5f('0x2f')]){var _0x462068={'recipient':[_0x59b320[_0xfc5f('0x21')]],'message':_0x59b320[_0xfc5f('0xc')],'message_type':_0x213160[_0xfc5f('0x30')]};if(_0x213160[_0xfc5f('0x30')]&&_0x213160['smsMethod']!=='SI'){_0x462068[_0xfc5f('0x31')]=_0x213160['phone'];}var _0x27deef={'url':_0x4f51d1+_0xfc5f('0x32')+_0x213160[_0xfc5f('0x2e')]+_0xfc5f('0x33')+_0x213160[_0xfc5f('0x2f')],'method':_0xfc5f('0x34')};rp(_0x27deef)['then'](function(_0x1e36d1){var _0x29f0ee=_0x1e36d1[_0xfc5f('0x35')](';');var _0x46de38={'user_key':_0x29f0ee[0x0],'session_key':_0x29f0ee[0x1]};_0x27deef={'url':_0x4f51d1+_0xfc5f('0x36'),'method':_0xfc5f('0x37'),'headers':{'user_key':_0x46de38[_0xfc5f('0x38')],'Session_key':_0x46de38[_0xfc5f('0x39')]},'json':!![],'body':_0x462068};return rp(_0x27deef);})[_0xfc5f('0x17')](function(_0x30ce4e){if(_0x30ce4e[_0xfc5f('0x3a')]>=0x1){var _0x4cb505={'messageId':_0x30ce4e[_0xfc5f('0x3b')]};if(_0x213160[_0xfc5f('0x30')]!=='GP'||!_0x213160[_0xfc5f('0x3c')]){_0x4cb505['read']=!![];}return _0x4f8e5e[_0xfc5f('0x27')](_0x4cb505);}else{return logger[_0xfc5f('0x1a')](_0xfc5f('0x28'),_0xfc5f('0x29'),_0xfc5f('0x2c'),util[_0xfc5f('0x2a')](_0x30ce4e,{'showHidden':![],'depth':null}));}})['catch'](function(_0x3c598f){return logger[_0xfc5f('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xfc5f('0x29'),'skebby',util[_0xfc5f('0x2a')](_0x3c598f,{'showHidden':![],'depth':null}));});}else{logger['error'](_0xfc5f('0x28'),_0xfc5f('0x29'),_0xfc5f('0x2c'),_0xfc5f('0x3d'));}break;case'connectel':if(_0x213160[_0xfc5f('0x20')]){var _0x3389bf={'recipient':_0x59b320[_0xfc5f('0x21')],'message':_0x59b320[_0xfc5f('0xc')],'sender':_0x213160[_0xfc5f('0x3e')]||_0x213160[_0xfc5f('0x21')],'authorization':_0x213160['authToken']};var _0xb869e2={'method':'POST','uri':'https://smsapi.connectel.se/api/v2/send/','body':_0x3389bf,'json':!![]};rp(_0xb869e2)[_0xfc5f('0x17')](function(_0x32e1d9){var _0x55e4bd={'messageId':_0x32e1d9['requestid']};if(!_0x213160[_0xfc5f('0x3c')]){_0x55e4bd[_0xfc5f('0x3f')]=!![];}return _0x4f8e5e['update'](_0x55e4bd);})[_0xfc5f('0x19')](function(_0x54a968){logger['error'](_0xfc5f('0x28'),_0xfc5f('0x29'),'connectel',util['inspect'](_0x54a968,{'showHidden':![],'depth':null}));});}else{logger[_0xfc5f('0x1a')](_0xfc5f('0x28'),'afterCreate','connectel',_0xfc5f('0x40'));}break;case'clicksend':if(_0x213160[_0xfc5f('0x2e')]&&_0x213160[_0xfc5f('0x2f')]){var _0x3389bf={'messages':[{'source':_0xfc5f('0x41'),'to':_0x59b320['phone'],'body':_0x59b320[_0xfc5f('0xc')],'from':_0x213160[_0xfc5f('0x3e')]||_0x213160[_0xfc5f('0x21')]}]};var _0xef4f90=util[_0xfc5f('0x42')](_0xfc5f('0x43'),_0x213160['username'],_0x213160['password']);var _0xb869e2={'method':_0xfc5f('0x37'),'uri':_0xfc5f('0x44'),'body':_0x3389bf,'headers':{'Authorization':util['format'](_0xfc5f('0x45'),new Buffer(_0xef4f90)[_0xfc5f('0x46')](_0xfc5f('0x47')))},'json':!![]};rp(_0xb869e2)['then'](function(_0x366940){if(_0x366940[_0xfc5f('0x48')]>=0xc8&&_0x366940[_0xfc5f('0x48')]<=0xce){if(_0x366940[_0xfc5f('0x49')]&&_0x366940[_0xfc5f('0x49')][_0xfc5f('0x4a')]>0x0){var _0x5b3055=_['head'](_0x366940[_0xfc5f('0x49')][_0xfc5f('0x22')]);var _0x5c77cd={'messageId':_0x5b3055['message_id']};if(!_0x213160['deliveryReport']){_0x5c77cd[_0xfc5f('0x3f')]=!![];}return _0x4f8e5e[_0xfc5f('0x27')](_0x5c77cd);}else{logger[_0xfc5f('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xfc5f('0x29'),_0xfc5f('0x4b'),util['inspect'](_0x366940,{'showHidden':![],'depth':null}));}}else{logger[_0xfc5f('0x1a')](_0xfc5f('0x28'),'afterCreate',_0xfc5f('0x4b'),util['inspect'](_0x366940,{'showHidden':![],'depth':null}));}})[_0xfc5f('0x19')](function(_0x4290aa){logger[_0xfc5f('0x1a')](_0xfc5f('0x28'),_0xfc5f('0x29'),_0xfc5f('0x4b'),util[_0xfc5f('0x2a')](_0x4290aa,{'showHidden':![],'depth':null}));});}else{logger[_0xfc5f('0x1a')](_0xfc5f('0x28'),_0xfc5f('0x29'),_0xfc5f('0x4b'),_0xfc5f('0x3d'));}break;case _0xfc5f('0x4c'):if(_0x213160[_0xfc5f('0x4d')]&&_0x213160['authToken']){var _0x3389bf={'dst':_0x59b320[_0xfc5f('0x21')],'text':_0x59b320[_0xfc5f('0xc')],'src':_0x213160[_0xfc5f('0x3e')]||_0x213160[_0xfc5f('0x21')],'url':_0x213160[_0xfc5f('0x23')]+'/api/sms/messages/'+_0x59b320['id']+_0xfc5f('0x25')+_0x213160['token']};var _0xef4f90=util[_0xfc5f('0x42')](_0xfc5f('0x43'),_0x213160[_0xfc5f('0x4d')],_0x213160[_0xfc5f('0x20')]);var _0xb869e2={'method':_0xfc5f('0x37'),'uri':util[_0xfc5f('0x42')](_0xfc5f('0x4e'),_0x213160[_0xfc5f('0x4d')]),'body':_0x3389bf,'headers':{'Authorization':util[_0xfc5f('0x42')](_0xfc5f('0x45'),new Buffer(_0xef4f90)[_0xfc5f('0x46')](_0xfc5f('0x47')))},'json':!![]};rp(_0xb869e2)[_0xfc5f('0x17')](function(_0x4c0ce3){var _0x4b0984={'messageId':_0x4c0ce3[_0xfc5f('0x4f')][0x0]};return _0x4f8e5e[_0xfc5f('0x27')](_0x4b0984);})['catch'](function(_0x490537){logger['error'](_0xfc5f('0x28'),_0xfc5f('0x29'),_0xfc5f('0x4c'),util[_0xfc5f('0x2a')](_0x490537,{'showHidden':![],'depth':null}));});}else{logger[_0xfc5f('0x1a')](_0xfc5f('0x28'),'afterCreate',_0xfc5f('0x4c'),_0xfc5f('0x50'));}break;case _0xfc5f('0x51'):if(_0x213160[_0xfc5f('0x2e')]&&_0x213160[_0xfc5f('0x2f')]){if(_0x213160[_0xfc5f('0x52')]){var _0x2d0946={'method':_0xfc5f('0x37'),'uri':_0x213160[_0xfc5f('0x52')]+_0xfc5f('0x53'),'body':{'username':_0x213160['username'],'password':_0x213160['password']},'json':!![]};return rp(_0x2d0946)[_0xfc5f('0x17')](function(_0x3e7a39){var _0x25284e={'method':_0xfc5f('0x37'),'uri':_0x213160[_0xfc5f('0x52')]+_0xfc5f('0x54'),'body':{'messages':[{'from':_0x213160[_0xfc5f('0x21')],'destinations':[{'to':_0x59b320[_0xfc5f('0x21')]}],'text':_0x59b320[_0xfc5f('0xc')],'notifyUrl':_0x213160[_0xfc5f('0x23')]+'/api/sms/messages/'+_0x59b320['id']+_0xfc5f('0x25')+_0x213160[_0xfc5f('0x26')],'notifyContentType':_0xfc5f('0x55'),'callbackData':_0x213160[_0xfc5f('0x21')]+';'+_0x59b320[_0xfc5f('0xc')]}]},'headers':{'Authorization':_0xfc5f('0x56')+_0x3e7a39[_0xfc5f('0x26')]},'json':!![]};return rp(_0x25284e)[_0xfc5f('0x17')](function(_0x2debcb){if(_0x2debcb[_0xfc5f('0x22')]){var _0x3f6f73={'messageId':_0x2debcb[_0xfc5f('0x22')][0x0][_0xfc5f('0xa')]};if(!_0x213160[_0xfc5f('0x3c')]){_0x3f6f73['read']=!![];}return _0x4f8e5e[_0xfc5f('0x27')](_0x3f6f73);}else{return logger[_0xfc5f('0x1a')](_0xfc5f('0x28'),_0xfc5f('0x29'),_0xfc5f('0x51'),util[_0xfc5f('0x2a')](_0x2debcb,{'showHidden':![],'depth':null}));}});})[_0xfc5f('0x19')](function(_0xb3227d){return logger[_0xfc5f('0x1a')](_0xfc5f('0x28'),_0xfc5f('0x29'),'infobip',util[_0xfc5f('0x2a')](_0xb3227d,{'showHidden':![],'depth':null}));});}else{logger[_0xfc5f('0x1a')](_0xfc5f('0x28'),_0xfc5f('0x29'),_0xfc5f('0x51'),'Missing\x20parameters:\x20base_url');}}else{logger['error'](_0xfc5f('0x28'),_0xfc5f('0x29'),'infobip','Missing\x20parameters:\x20username,\x20password');}break;case _0xfc5f('0x57'):var _0x1d194b=require(_0xfc5f('0x58'));if(_0x213160[_0xfc5f('0x59')]){var _0x3093fe={};_0x3093fe['login']=_0x213160['username'];_0x3093fe[_0xfc5f('0x21')]=_0x59b320[_0xfc5f('0x21')];_0x3093fe['sender']=_0x213160[_0xfc5f('0x21')];_0x3093fe[_0xfc5f('0x5a')]=_0x59b320['body'];_0x3093fe[_0xfc5f('0x5b')]=+new Date();var _0x2ca44d='';var _0x1d7dfc='';var _0x42cdf2=Object['keys'](_0x3093fe);_0x42cdf2[_0xfc5f('0x5c')]();for(var _0x2de0d7=0x0;_0x2de0d7<_0x42cdf2[_0xfc5f('0x5d')];_0x2de0d7++){if(_0x2ca44d!=''){_0x2ca44d+='&';}_0x2ca44d+=_0x42cdf2[_0x2de0d7]+'='+encodeURIComponent(_0x3093fe[_0x42cdf2[_0x2de0d7]]);_0x1d7dfc+=_0x3093fe[_0x42cdf2[_0x2de0d7]];}_0x1d7dfc+=_0x213160[_0xfc5f('0x59')];_0x1d7dfc=_0x1d194b[_0xfc5f('0x5e')](_0xfc5f('0x5f'))[_0xfc5f('0x27')](_0x1d7dfc)[_0xfc5f('0x60')](_0xfc5f('0x61'));if(_0x2ca44d!==''){_0x2ca44d+='&';}_0x2ca44d+='signature='+_0x1d7dfc;var _0x27deef={'method':_0xfc5f('0x34'),'uri':_0x213160[_0xfc5f('0x52')]+_0xfc5f('0x62')+_0x2ca44d,'json':!![]};return rp(_0x27deef)[_0xfc5f('0x17')](function(_0x3b9d84){var _0x338fba=Object[_0xfc5f('0x63')](_0x3b9d84);if(_0x3b9d84[_0x338fba[0x0]][_0xfc5f('0x1a')]&&parseInt(_0x3b9d84[_0x338fba[0x0]]['error'])===0x0){var _0x5dafdd={'messageId':_0x3b9d84[_0x338fba[0x0]][_0xfc5f('0x64')]};if(!_0x213160[_0xfc5f('0x3c')]){_0x5dafdd[_0xfc5f('0x3f')]=!![];}return _0x4f8e5e[_0xfc5f('0x27')](_0x5dafdd);}else{return logger[_0xfc5f('0x1a')](_0xfc5f('0x28'),_0xfc5f('0x29'),_0xfc5f('0x57'),util['inspect'](_0x3b9d84[_0xfc5f('0x1a')],{'showHidden':![],'depth':null}));}})[_0xfc5f('0x19')](function(_0x27f4d0){return logger[_0xfc5f('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xfc5f('0x29'),_0xfc5f('0x57'),util['inspect'](_0x27f4d0,{'showHidden':![],'depth':null}));});}else{logger[_0xfc5f('0x1a')](_0xfc5f('0x28'),_0xfc5f('0x29'),_0xfc5f('0x57'),_0xfc5f('0x65'));}break;case _0xfc5f('0x66'):if(_0x213160['apiKey']){var _0xfc8027={'method':'POST','uri':_0xfc5f('0x67'),'headers':{'Authorization':_0x213160[_0xfc5f('0x59')]},'body':{'content':_0x59b320[_0xfc5f('0xc')],'to':[_0x59b320[_0xfc5f('0x21')]],'from':_0x213160[_0xfc5f('0x21')],'binary':![],'clientMessageId':_0xfc5f('0x68'),'charset':'UTF-8'},'json':!![]};rp(_0xfc8027)[_0xfc5f('0x17')](function(_0x5e5801){if(!_0x5e5801[_0xfc5f('0x1a')]){var _0x37c538={'messageId':_0x5e5801[_0xfc5f('0x22')][0x0][_0xfc5f('0x69')]};if(!_0x213160[_0xfc5f('0x3c')]){_0x37c538[_0xfc5f('0x3f')]=!![];}return _0x4f8e5e[_0xfc5f('0x27')](_0x37c538);}else{return logger[_0xfc5f('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xfc5f('0x29'),_0xfc5f('0x66'),util['inspect'](_0x5e5801[_0xfc5f('0x1a')],{'showHidden':![],'depth':null}));}})[_0xfc5f('0x19')](function(_0x11e67f){return logger[_0xfc5f('0x1a')](_0xfc5f('0x28'),_0xfc5f('0x29'),'clickatell',util['inspect'](_0x11e67f,{'showHidden':![],'depth':null}));});}else{logger[_0xfc5f('0x1a')](_0xfc5f('0x28'),_0xfc5f('0x29'),_0xfc5f('0x66'),_0xfc5f('0x65'));}break;case _0xfc5f('0x6a'):if(_0x213160[_0xfc5f('0x2e')]&&_0x213160[_0xfc5f('0x2f')]){var _0xef4f90=util[_0xfc5f('0x42')]('%s:%s',_0x213160['username'],_0x213160[_0xfc5f('0x2f')]);var _0xb869e2={'method':_0xfc5f('0x37'),'uri':'https://messaging.bandwidth.com/api/v2/users/'+_0x213160[_0xfc5f('0x6b')]+_0xfc5f('0x6c'),'body':{'to':[_0x59b320[_0xfc5f('0x21')]],'text':_0x59b320[_0xfc5f('0xc')],'from':_0x213160['phone'],'applicationId':_0x213160['applicationId']},'headers':{'Authorization':util['format']('Basic\x20%s',new Buffer(_0xef4f90)[_0xfc5f('0x46')](_0xfc5f('0x47')))},'json':!![]};rp(_0xb869e2)[_0xfc5f('0x17')](function(_0x129a1a){if(_0x129a1a['id']){var _0x56ef00={'messageId':_0x129a1a['id']};return _0x4f8e5e[_0xfc5f('0x27')](_0x56ef00);}else{logger[_0xfc5f('0x1a')](_0xfc5f('0x28'),_0xfc5f('0x29'),_0xfc5f('0x6a'),util[_0xfc5f('0x2a')](_0x129a1a,{'showHidden':![],'depth':null}));}})[_0xfc5f('0x19')](function(_0x191d3e){logger[_0xfc5f('0x1a')](_0xfc5f('0x28'),_0xfc5f('0x29'),_0xfc5f('0x6a'),util[_0xfc5f('0x2a')](_0x191d3e,{'showHidden':![],'depth':null}));});}else{logger[_0xfc5f('0x1a')](_0xfc5f('0x28'),_0xfc5f('0x29'),_0xfc5f('0x6a'),_0xfc5f('0x3d'));}break;case _0xfc5f('0x6d'):if(_0x213160[_0xfc5f('0x59')]){var _0x2988b5={};var _0x27deef={'method':_0xfc5f('0x37'),'uri':_0xfc5f('0x6e'),'headers':{'Authorization':_0xfc5f('0x6f')+_0x213160[_0xfc5f('0x59')],'Content-Type':_0xfc5f('0x55')},'body':{'from':_0x213160['phone'],'to':_0x59b320['phone'],'text':_0x59b320[_0xfc5f('0xc')]},'json':!![]};return rp(_0x27deef)[_0xfc5f('0x17')](function(_0x5ca9d6){if(_0x5ca9d6[_0xfc5f('0x70')]==0xca){_0x2988b5['message']=_0x5ca9d6;var _0x5e8bdb={'method':_0xfc5f('0x37'),'uri':_0xfc5f('0x71'),'headers':{'Authorization':_0xfc5f('0x6f')+_0x213160['apiKey'],'Content-Type':'application/json'},'body':{'refid':_0x2988b5[_0xfc5f('0x72')][_0xfc5f('0x73')]},'json':!![]};return rp(_0x5e8bdb)[_0xfc5f('0x17')](function(_0x374881){_0x2988b5['status']=_0x374881;var _0x2030fa={'messageId':_0x2988b5[_0xfc5f('0x72')]['refid'],'read':!![]};return _0x4f8e5e[_0xfc5f('0x27')](_0x2030fa);});}else{return logger['error'](_0xfc5f('0x28'),'afterCreate','intelepeer',util[_0xfc5f('0x2a')](_0x5ca9d6,{'showHidden':![],'depth':null}));}})[_0xfc5f('0x19')](function(_0x332cc8){return logger[_0xfc5f('0x1a')](_0xfc5f('0x28'),_0xfc5f('0x29'),_0xfc5f('0x6d'),util[_0xfc5f('0x2a')](_0x332cc8,{'showHidden':![],'depth':null}));});}else{return logger['error'](_0xfc5f('0x28'),_0xfc5f('0x29'),_0xfc5f('0x6d'),_0xfc5f('0x74'));}break;}}})[_0xfc5f('0x75')](function(){_0x5001b0();});}else{_0x5001b0();}}},'charset':_0xfc5f('0x76'),'collate':_0xfc5f('0x77')});};
\ No newline at end of file
index d013214..d0daedb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8107=['http','redis','localhost','socket.io-emitter','request','then','info','SmsMessage,\x20%s,\x20%s','request\x20sent','debug','SmsMessage,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','SmsMessage','create','options','CreateSmsMessage','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client'];(function(_0x47a5bd,_0x508329){var _0x5c2184=function(_0x40ddea){while(--_0x40ddea){_0x47a5bd['push'](_0x47a5bd['shift']());}};_0x5c2184(++_0x508329);}(_0x8107,0xce));var _0x7810=function(_0x4fcbec,_0x90e467){_0x4fcbec=_0x4fcbec-0x0;var _0x275177=_0x8107[_0x4fcbec];return _0x275177;};'use strict';var _=require(_0x7810('0x0'));var util=require(_0x7810('0x1'));var moment=require('moment');var BPromise=require(_0x7810('0x2'));var rs=require(_0x7810('0x3'));var fs=require('fs');var Redis=require(_0x7810('0x4'));var db=require(_0x7810('0x5'))['db'];var utils=require(_0x7810('0x6'));var logger=require('../../config/logger')(_0x7810('0x7'));var config=require(_0x7810('0x8'));var jayson=require(_0x7810('0x9'));var client=jayson[_0x7810('0xa')][_0x7810('0xb')]({'port':0x232a});config[_0x7810('0xc')]=_['defaults'](config[_0x7810('0xc')],{'host':_0x7810('0xd'),'port':0x18eb});var socket=require(_0x7810('0xe'))(new Redis(config[_0x7810('0xc')]));require('./smsMessage.socket')['register'](socket);function respondWithRpcPromise(_0x4473e4,_0x73837f,_0x5bfb93){return new BPromise(function(_0x52da08,_0x468118){return client[_0x7810('0xf')](_0x4473e4,_0x5bfb93)[_0x7810('0x10')](function(_0x157d33){logger[_0x7810('0x11')](_0x7810('0x12'),_0x73837f,_0x7810('0x13'));logger[_0x7810('0x14')](_0x7810('0x15'),_0x73837f,_0x7810('0x13'),JSON['stringify'](_0x157d33));if(_0x157d33[_0x7810('0x16')]){if(_0x157d33[_0x7810('0x16')][_0x7810('0x17')]===0x1f4){logger[_0x7810('0x16')](_0x7810('0x12'),_0x73837f,_0x157d33[_0x7810('0x16')][_0x7810('0x18')]);return _0x468118(_0x157d33[_0x7810('0x16')][_0x7810('0x18')]);}logger[_0x7810('0x16')]('SmsMessage,\x20%s,\x20%s',_0x73837f,_0x157d33[_0x7810('0x16')]['message']);return _0x52da08(_0x157d33[_0x7810('0x16')][_0x7810('0x18')]);}else{logger[_0x7810('0x11')](_0x7810('0x12'),_0x73837f,_0x7810('0x13'));_0x52da08(_0x157d33[_0x7810('0x19')]['message']);}})[_0x7810('0x1a')](function(_0xc7d157){logger[_0x7810('0x16')](_0x7810('0x12'),_0x73837f,_0xc7d157);_0x468118(_0xc7d157);});});}exports['CreateSmsMessage']=function(_0x3b7104){var _0x146630=this;return new Promise(function(_0x5b35d3,_0xc8518d){return db[_0x7810('0x1b')][_0x7810('0x1c')](_0x3b7104['body'],{'raw':_0x3b7104[_0x7810('0x1d')]?_0x3b7104[_0x7810('0x1d')]['raw']===undefined?!![]:![]:!![]})[_0x7810('0x10')](function(_0x4a959c){logger[_0x7810('0x11')](_0x7810('0x1e'),_0x3b7104);logger[_0x7810('0x14')](_0x7810('0x1e'),_0x3b7104,JSON['stringify'](_0x4a959c));_0x5b35d3(_0x4a959c);})[_0x7810('0x1a')](function(_0x4535fb){logger['error']('CreateSmsMessage',_0x4535fb[_0x7810('0x18')],_0x3b7104);_0xc8518d(_0x146630[_0x7810('0x16')](0x1f4,_0x4535fb[_0x7810('0x18')]));});});};
\ No newline at end of file
+var _0x8f7c=['debug','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','redis','defaults','socket.io-emitter','register','request','then','SmsMessage,\x20%s,\x20%s','request\x20sent','SmsMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateSmsMessage','SmsMessage','create','options','raw','info'];(function(_0x20ea89,_0x1bfce6){var _0x1f06a8=function(_0xc541ce){while(--_0xc541ce){_0x20ea89['push'](_0x20ea89['shift']());}};_0x1f06a8(++_0x1bfce6);}(_0x8f7c,0x64));var _0xc8f7=function(_0x4e00d4,_0xdb24a3){_0x4e00d4=_0x4e00d4-0x0;var _0x335d2c=_0x8f7c[_0x4e00d4];return _0x335d2c;};'use strict';var _=require(_0xc8f7('0x0'));var util=require(_0xc8f7('0x1'));var moment=require('moment');var BPromise=require(_0xc8f7('0x2'));var rs=require(_0xc8f7('0x3'));var fs=require('fs');var Redis=require(_0xc8f7('0x4'));var db=require(_0xc8f7('0x5'))['db'];var utils=require(_0xc8f7('0x6'));var logger=require(_0xc8f7('0x7'))('rpc');var config=require(_0xc8f7('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xc8f7('0x9')][_0xc8f7('0xa')]({'port':0x232a});config[_0xc8f7('0xb')]=_[_0xc8f7('0xc')](config[_0xc8f7('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0xc8f7('0xd'))(new Redis(config[_0xc8f7('0xb')]));require('./smsMessage.socket')[_0xc8f7('0xe')](socket);function respondWithRpcPromise(_0x34d814,_0xea1146,_0x127763){return new BPromise(function(_0x19c8f4,_0x53aa8c){return client[_0xc8f7('0xf')](_0x34d814,_0x127763)[_0xc8f7('0x10')](function(_0x3c7b6c){logger['info'](_0xc8f7('0x11'),_0xea1146,_0xc8f7('0x12'));logger['debug'](_0xc8f7('0x13'),_0xea1146,_0xc8f7('0x12'),JSON[_0xc8f7('0x14')](_0x3c7b6c));if(_0x3c7b6c[_0xc8f7('0x15')]){if(_0x3c7b6c[_0xc8f7('0x15')][_0xc8f7('0x16')]===0x1f4){logger[_0xc8f7('0x15')](_0xc8f7('0x11'),_0xea1146,_0x3c7b6c[_0xc8f7('0x15')][_0xc8f7('0x17')]);return _0x53aa8c(_0x3c7b6c[_0xc8f7('0x15')][_0xc8f7('0x17')]);}logger[_0xc8f7('0x15')](_0xc8f7('0x11'),_0xea1146,_0x3c7b6c[_0xc8f7('0x15')][_0xc8f7('0x17')]);return _0x19c8f4(_0x3c7b6c[_0xc8f7('0x15')]['message']);}else{logger['info'](_0xc8f7('0x11'),_0xea1146,'request\x20sent');_0x19c8f4(_0x3c7b6c[_0xc8f7('0x18')][_0xc8f7('0x17')]);}})[_0xc8f7('0x19')](function(_0x36f35d){logger['error'](_0xc8f7('0x11'),_0xea1146,_0x36f35d);_0x53aa8c(_0x36f35d);});});}exports[_0xc8f7('0x1a')]=function(_0x32d34b){var _0xd5e1fc=this;return new Promise(function(_0x3208c9,_0x1c8ee0){return db[_0xc8f7('0x1b')][_0xc8f7('0x1c')](_0x32d34b['body'],{'raw':_0x32d34b[_0xc8f7('0x1d')]?_0x32d34b['options'][_0xc8f7('0x1e')]===undefined?!![]:![]:!![]})[_0xc8f7('0x10')](function(_0xc98562){logger[_0xc8f7('0x1f')]('CreateSmsMessage',_0x32d34b);logger[_0xc8f7('0x20')](_0xc8f7('0x1a'),_0x32d34b,JSON['stringify'](_0xc98562));_0x3208c9(_0xc98562);})[_0xc8f7('0x19')](function(_0x53cfa9){logger[_0xc8f7('0x15')](_0xc8f7('0x1a'),_0x53cfa9['message'],_0x32d34b);_0x1c8ee0(_0xd5e1fc[_0xc8f7('0x15')](0x1f4,_0x53cfa9[_0xc8f7('0x17')]));});});};
\ No newline at end of file
index d813c91..8865750 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3bba=['length','smsMessage:','./smsMessage.events','save','update','emit','removeListener','register'];(function(_0x245c4f,_0x34b70f){var _0x3157a1=function(_0x18bfc7){while(--_0x18bfc7){_0x245c4f['push'](_0x245c4f['shift']());}};_0x3157a1(++_0x34b70f);}(_0x3bba,0x1d2));var _0xa3bb=function(_0x423f6e,_0x2d7a39){_0x423f6e=_0x423f6e-0x0;var _0x1a943e=_0x3bba[_0x423f6e];return _0x1a943e;};'use strict';var SmsMessageEvents=require(_0xa3bb('0x0'));var events=[_0xa3bb('0x1'),'remove',_0xa3bb('0x2')];function createListener(_0x18ba6a,_0x450304){return function(_0x1d1ace){_0x450304[_0xa3bb('0x3')](_0x18ba6a,_0x1d1ace);};}function removeListener(_0x240728,_0x1bccf5){return function(){SmsMessageEvents[_0xa3bb('0x4')](_0x240728,_0x1bccf5);};}exports[_0xa3bb('0x5')]=function(_0x320654){for(var _0x28e4b2=0x0,_0x3d5431=events[_0xa3bb('0x6')];_0x28e4b2<_0x3d5431;_0x28e4b2++){var _0x1a7876=events[_0x28e4b2];var _0x2e79bf=createListener(_0xa3bb('0x7')+_0x1a7876,_0x320654);SmsMessageEvents['on'](_0x1a7876,_0x2e79bf);}};
\ No newline at end of file
+var _0x163e=['update','emit','removeListener','length','smsMessage:','save','remove'];(function(_0x4b8ad4,_0x404b2d){var _0x463e57=function(_0x5ddd4a){while(--_0x5ddd4a){_0x4b8ad4['push'](_0x4b8ad4['shift']());}};_0x463e57(++_0x404b2d);}(_0x163e,0x91));var _0xe163=function(_0x592ca0,_0x30d956){_0x592ca0=_0x592ca0-0x0;var _0x2c2e71=_0x163e[_0x592ca0];return _0x2c2e71;};'use strict';var SmsMessageEvents=require('./smsMessage.events');var events=[_0xe163('0x0'),_0xe163('0x1'),_0xe163('0x2')];function createListener(_0x205f52,_0x4127a4){return function(_0x5798d3){_0x4127a4[_0xe163('0x3')](_0x205f52,_0x5798d3);};}function removeListener(_0x3b9b76,_0x16683c){return function(){SmsMessageEvents[_0xe163('0x4')](_0x3b9b76,_0x16683c);};}exports['register']=function(_0x24e67e){for(var _0xfa4bb4=0x0,_0x12eb8c=events[_0xe163('0x5')];_0xfa4bb4<_0x12eb8c;_0xfa4bb4++){var _0x23a9c2=events[_0xfa4bb4];var _0x15764b=createListener(_0xe163('0x6')+_0x23a9c2,_0x24e67e);SmsMessageEvents['on'](_0x23a9c2,_0x15764b);}};
\ No newline at end of file
index 1b8d202..d281fbf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3819=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','/:id','/:id/members','/:id/teams','getTeams','/:id/users','getAgents','create','post','addTeams','addAgents','put','update','delete','destroy','removeTeams','removeAgents','exports','path'];(function(_0x32c8e5,_0x175833){var _0x30cc52=function(_0x26d42b){while(--_0x26d42b){_0x32c8e5['push'](_0x32c8e5['shift']());}};_0x30cc52(++_0x175833);}(_0x3819,0x1b2));var _0x9381=function(_0x3ddf47,_0x4103a5){_0x3ddf47=_0x3ddf47-0x0;var _0x413175=_0x3819[_0x3ddf47];return _0x413175;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x9381('0x0'));var timeout=require(_0x9381('0x1'));var express=require(_0x9381('0x2'));var router=express[_0x9381('0x3')]();var fs_extra=require(_0x9381('0x4'));var auth=require(_0x9381('0x5'));var interaction=require(_0x9381('0x6'));var config=require(_0x9381('0x7'));var controller=require('./smsQueue.controller');router[_0x9381('0x8')]('/',auth[_0x9381('0x9')](),controller[_0x9381('0xa')]);router[_0x9381('0x8')](_0x9381('0xb'),auth[_0x9381('0x9')](),controller['describe']);router[_0x9381('0x8')](_0x9381('0xc'),auth[_0x9381('0x9')](),controller['show']);router[_0x9381('0x8')](_0x9381('0xd'),auth[_0x9381('0x9')](),controller['getMembers']);router[_0x9381('0x8')](_0x9381('0xe'),auth[_0x9381('0x9')](),controller[_0x9381('0xf')]);router[_0x9381('0x8')](_0x9381('0x10'),auth[_0x9381('0x9')](),controller[_0x9381('0x11')]);router['post']('/',auth[_0x9381('0x9')](),controller[_0x9381('0x12')]);router[_0x9381('0x13')]('/:id/teams',auth[_0x9381('0x9')](),controller[_0x9381('0x14')]);router[_0x9381('0x13')]('/:id/users',auth['isAuthenticated'](),controller[_0x9381('0x15')]);router[_0x9381('0x16')]('/:id',auth[_0x9381('0x9')](),controller[_0x9381('0x17')]);router[_0x9381('0x18')]('/:id',auth[_0x9381('0x9')](),controller[_0x9381('0x19')]);router['delete'](_0x9381('0xe'),auth['isAuthenticated'](),controller[_0x9381('0x1a')]);router[_0x9381('0x18')]('/:id/users',auth[_0x9381('0x9')](),controller[_0x9381('0x1b')]);module[_0x9381('0x1c')]=router;
\ No newline at end of file
+var _0xfc74=['delete','/:id','destroy','removeTeams','removeAgents','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/describe','describe','show','getMembers','/:id/teams','/:id/users','getAgents','post','addTeams','addAgents','put','update'];(function(_0x50e0b4,_0x1057f7){var _0x2fa8b0=function(_0x3766bc){while(--_0x3766bc){_0x50e0b4['push'](_0x50e0b4['shift']());}};_0x2fa8b0(++_0x1057f7);}(_0xfc74,0x9c));var _0x4fc7=function(_0x27b311,_0x385093){_0x27b311=_0x27b311-0x0;var _0x2d9cf7=_0xfc74[_0x27b311];return _0x2d9cf7;};'use strict';var multer=require(_0x4fc7('0x0'));var util=require(_0x4fc7('0x1'));var path=require(_0x4fc7('0x2'));var timeout=require(_0x4fc7('0x3'));var express=require(_0x4fc7('0x4'));var router=express[_0x4fc7('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x4fc7('0x6'));var interaction=require(_0x4fc7('0x7'));var config=require(_0x4fc7('0x8'));var controller=require('./smsQueue.controller');router['get']('/',auth[_0x4fc7('0x9')](),controller[_0x4fc7('0xa')]);router[_0x4fc7('0xb')](_0x4fc7('0xc'),auth[_0x4fc7('0x9')](),controller[_0x4fc7('0xd')]);router[_0x4fc7('0xb')]('/:id',auth[_0x4fc7('0x9')](),controller[_0x4fc7('0xe')]);router[_0x4fc7('0xb')]('/:id/members',auth['isAuthenticated'](),controller[_0x4fc7('0xf')]);router[_0x4fc7('0xb')](_0x4fc7('0x10'),auth[_0x4fc7('0x9')](),controller['getTeams']);router[_0x4fc7('0xb')](_0x4fc7('0x11'),auth['isAuthenticated'](),controller[_0x4fc7('0x12')]);router[_0x4fc7('0x13')]('/',auth[_0x4fc7('0x9')](),controller['create']);router['post'](_0x4fc7('0x10'),auth[_0x4fc7('0x9')](),controller[_0x4fc7('0x14')]);router[_0x4fc7('0x13')](_0x4fc7('0x11'),auth[_0x4fc7('0x9')](),controller[_0x4fc7('0x15')]);router[_0x4fc7('0x16')]('/:id',auth[_0x4fc7('0x9')](),controller[_0x4fc7('0x17')]);router[_0x4fc7('0x18')](_0x4fc7('0x19'),auth[_0x4fc7('0x9')](),controller[_0x4fc7('0x1a')]);router[_0x4fc7('0x18')]('/:id/teams',auth[_0x4fc7('0x9')](),controller[_0x4fc7('0x1b')]);router[_0x4fc7('0x18')](_0x4fc7('0x11'),auth[_0x4fc7('0x9')](),controller[_0x4fc7('0x1c')]);module[_0x4fc7('0x1d')]=router;
\ No newline at end of file
index 4fa6883..b9af388 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x65b0=['ENUM','roundrobin','sequelize','exports','STRING','name','INTEGER'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x65b0,0xdb));var _0x065b=function(_0x3fb3f1,_0x20e3f9){_0x3fb3f1=_0x3fb3f1-0x0;var _0x470fa0=_0x65b0[_0x3fb3f1];return _0x470fa0;};'use strict';var Sequelize=require(_0x065b('0x0'));module[_0x065b('0x1')]={'name':{'type':Sequelize[_0x065b('0x2')],'unique':_0x065b('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x065b('0x2')]},'timeout':{'type':Sequelize[_0x065b('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x065b('0x5')]('rrmemory','beepall',_0x065b('0x6'))}};
\ No newline at end of file
+var _0x816a=['STRING','name','INTEGER','rrmemory','beepall','sequelize','exports'];(function(_0x11727f,_0x3af7e9){var _0x169696=function(_0x322db3){while(--_0x322db3){_0x11727f['push'](_0x11727f['shift']());}};_0x169696(++_0x3af7e9);}(_0x816a,0x1cc));var _0xa816=function(_0x1d8434,_0x1c4891){_0x1d8434=_0x1d8434-0x0;var _0x425d44=_0x816a[_0x1d8434];return _0x425d44;};'use strict';var Sequelize=require(_0xa816('0x0'));module[_0xa816('0x1')]={'name':{'type':Sequelize[_0xa816('0x2')],'unique':_0xa816('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xa816('0x2')]},'timeout':{'type':Sequelize[_0xa816('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0xa816('0x5'),_0xa816('0x6'),'roundrobin')}};
\ No newline at end of file
index 665be78..6427d4d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1fed=['role','SmsQueues','UserProfileSection','find','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','describe','findOne','UserSmsQueue','User','findAndCountAll','UserId','agent','updatedAt','format','SIP','smsPause','createdAt','getTeams','pick','ids','Team','Agents','voicePause','transaction','addTeams','findOrCreate','emit','userSmsQueue:save','removeTeams','field','tq.TeamId','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','SmsQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','sequelize','toString','QueryTypes','SELECT','every','TeamId','all','union','compact','value','isEmpty','forEach','userSmsQueue:remove','addAgents','spread','removeAgents','isArray','getAgents','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','to-csv','ejs','jsforce','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','redis','localhost','register','sendStatus','end','status','offset','undefined','limit','count','set','Content-Range','json','reject','save','destroy','then','get','error','stack','name','send','index','map','fieldName','type','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','merge','VIRTUAL','filter','options','SmsQueue','includeAll','include','findAll','rows','catch','show','params','rawAttributes','create','body','user'];(function(_0x2c2185,_0x5a71cb){var _0x13e08e=function(_0x2be52c){while(--_0x2be52c){_0x2c2185['push'](_0x2c2185['shift']());}};_0x13e08e(++_0x5a71cb);}(_0x1fed,0x1d3));var _0xd1fe=function(_0x3bfe11,_0x573678){_0x3bfe11=_0x3bfe11-0x0;var _0x19f6b2=_0x1fed[_0x3bfe11];return _0x19f6b2;};'use strict';var emlformat=require(_0xd1fe('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xd1fe('0x1'));var jsonpatch=require(_0xd1fe('0x2'));var rp=require(_0xd1fe('0x3'));var moment=require(_0xd1fe('0x4'));var BPromise=require(_0xd1fe('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0xd1fe('0x6'));var sox=require('sox');var csv=require(_0xd1fe('0x7'));var ejs=require(_0xd1fe('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xd1fe('0x9'));var deskjs=require(_0xd1fe('0xa'));var toCsv=require(_0xd1fe('0x7'));var querystring=require(_0xd1fe('0xb'));var Papa=require(_0xd1fe('0xc'));var Redis=require('ioredis');var authService=require(_0xd1fe('0xd'));var qs=require(_0xd1fe('0xe'));var as=require(_0xd1fe('0xf'));var hardwareService=require(_0xd1fe('0x10'));var logger=require(_0xd1fe('0x11'))('api');var utils=require(_0xd1fe('0x12'));var config=require(_0xd1fe('0x13'));var licenseUtil=require(_0xd1fe('0x14'));var db=require(_0xd1fe('0x15'))['db'];config[_0xd1fe('0x16')]=_['defaults'](config[_0xd1fe('0x16')],{'host':_0xd1fe('0x17'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xd1fe('0x16')]));require('./smsQueue.socket')[_0xd1fe('0x18')](socket);function respondWithStatusCode(_0x2f0796,_0x37c88e){_0x37c88e=_0x37c88e||0xcc;return function(_0x27b268){if(_0x27b268){return _0x2f0796[_0xd1fe('0x19')](_0x37c88e);}return _0x2f0796['status'](_0x37c88e)[_0xd1fe('0x1a')]();};}function respondWithResult(_0x3036cc,_0x510b53){_0x510b53=_0x510b53||0xc8;return function(_0x5e862a){if(_0x5e862a){return _0x3036cc[_0xd1fe('0x1b')](_0x510b53)['json'](_0x5e862a);}};}function respondWithFilteredResult(_0x2f44a1,_0x1b1116){return function(_0x22ae0b){if(_0x22ae0b){var _0x1e6be2=typeof _0x1b1116[_0xd1fe('0x1c')]===_0xd1fe('0x1d')&&typeof _0x1b1116[_0xd1fe('0x1e')]===_0xd1fe('0x1d');var _0x5ce356=_0x22ae0b['count'];var _0x4fc2f9=_0x1e6be2?0x0:_0x1b1116[_0xd1fe('0x1c')];var _0x2e0907=_0x1e6be2?_0x22ae0b[_0xd1fe('0x1f')]:_0x1b1116[_0xd1fe('0x1c')]+_0x1b1116[_0xd1fe('0x1e')];var _0x415352;if(_0x2e0907>=_0x5ce356){_0x2e0907=_0x5ce356;_0x415352=0xc8;}else{_0x415352=0xce;}_0x2f44a1[_0xd1fe('0x1b')](_0x415352);return _0x2f44a1[_0xd1fe('0x20')](_0xd1fe('0x21'),_0x4fc2f9+'-'+_0x2e0907+'/'+_0x5ce356)[_0xd1fe('0x22')](_0x22ae0b);}return null;};}function patchUpdates(_0x4ac933){return function(_0xc1d101){try{jsonpatch['apply'](_0xc1d101,_0x4ac933,!![]);}catch(_0x5cd548){return BPromise[_0xd1fe('0x23')](_0x5cd548);}return _0xc1d101[_0xd1fe('0x24')]();};}function saveUpdates(_0x109c4d,_0x297ba6){return function(_0x412a0b){if(_0x412a0b){return _0x412a0b['update'](_0x109c4d)['then'](function(_0xb57e72){return _0xb57e72;});}return null;};}function removeEntity(_0xe77dfa,_0x4a2c8f){return function(_0x2d7ab5){if(_0x2d7ab5){return _0x2d7ab5[_0xd1fe('0x25')]()[_0xd1fe('0x26')](function(){var _0x5c5782=_0x2d7ab5[_0xd1fe('0x27')]({'plain':!![]});var _0x2b4d98='SmsQueues';return db['UserProfileResource']['destroy']({'where':{'type':_0x2b4d98,'resourceId':_0x5c5782['id']}})['then'](function(){return _0x2d7ab5;});})[_0xd1fe('0x26')](function(){_0xe77dfa[_0xd1fe('0x1b')](0xcc)[_0xd1fe('0x1a')]();});}};}function handleEntityNotFound(_0x56510c,_0x4f366d){return function(_0x577a30){if(!_0x577a30){_0x56510c[_0xd1fe('0x19')](0x194);}return _0x577a30;};}function handleError(_0x57e02e,_0x2f1789){_0x2f1789=_0x2f1789||0x1f4;return function(_0x526caa){logger[_0xd1fe('0x28')](_0x526caa[_0xd1fe('0x29')]);if(_0x526caa[_0xd1fe('0x2a')]){delete _0x526caa[_0xd1fe('0x2a')];}_0x57e02e[_0xd1fe('0x1b')](_0x2f1789)[_0xd1fe('0x2b')](_0x526caa);};}exports[_0xd1fe('0x2c')]=function(_0x30972a,_0x5ebcd2){var _0x2390f0={},_0x34a558={},_0xf2cc8={'count':0x0,'rows':[]};var _0x39f588=_[_0xd1fe('0x2d')](db['SmsQueue']['rawAttributes'],function(_0xe7715d){return{'name':_0xe7715d[_0xd1fe('0x2e')],'type':_0xe7715d[_0xd1fe('0x2f')]['key']};});_0x34a558[_0xd1fe('0x30')]=_['map'](_0x39f588,'name');_0x34a558[_0xd1fe('0x31')]=_[_0xd1fe('0x32')](_0x30972a['query']);_0x34a558['filters']=_[_0xd1fe('0x33')](_0x34a558['model'],_0x34a558['query']);_0x2390f0['attributes']=_[_0xd1fe('0x33')](_0x34a558[_0xd1fe('0x30')],qs[_0xd1fe('0x34')](_0x30972a['query'][_0xd1fe('0x34')]));_0x2390f0[_0xd1fe('0x35')]=_0x2390f0[_0xd1fe('0x35')][_0xd1fe('0x36')]?_0x2390f0[_0xd1fe('0x35')]:_0x34a558[_0xd1fe('0x30')];if(!_0x30972a['query'][_0xd1fe('0x37')](_0xd1fe('0x38'))){_0x2390f0['limit']=qs['limit'](_0x30972a[_0xd1fe('0x31')][_0xd1fe('0x1e')]);_0x2390f0[_0xd1fe('0x1c')]=qs[_0xd1fe('0x1c')](_0x30972a[_0xd1fe('0x31')][_0xd1fe('0x1c')]);}_0x2390f0[_0xd1fe('0x39')]=qs[_0xd1fe('0x3a')](_0x30972a[_0xd1fe('0x31')][_0xd1fe('0x3a')]);_0x2390f0[_0xd1fe('0x3b')]=qs[_0xd1fe('0x3c')](_['pick'](_0x30972a[_0xd1fe('0x31')],_0x34a558[_0xd1fe('0x3c')]),_0x39f588);if(_0x30972a[_0xd1fe('0x31')]['filter']){_0x2390f0[_0xd1fe('0x3b')]=_[_0xd1fe('0x3d')](_0x2390f0['where'],{'$or':_[_0xd1fe('0x2d')](_0x39f588,function(_0x1264e8){if(_0x1264e8[_0xd1fe('0x2f')]!==_0xd1fe('0x3e')){var _0xf685c1={};_0xf685c1[_0x1264e8[_0xd1fe('0x2a')]]={'$like':'%'+_0x30972a[_0xd1fe('0x31')][_0xd1fe('0x3f')]+'%'};return _0xf685c1;}})});}_0x2390f0=_['merge']({},_0x2390f0,_0x30972a[_0xd1fe('0x40')]);var _0x4b2c74={'where':_0x2390f0[_0xd1fe('0x3b')]};return db[_0xd1fe('0x41')][_0xd1fe('0x1f')](_0x4b2c74)[_0xd1fe('0x26')](function(_0x31e97a){_0xf2cc8[_0xd1fe('0x1f')]=_0x31e97a;if(_0x30972a['query'][_0xd1fe('0x42')]){_0x2390f0[_0xd1fe('0x43')]=[{'all':!![]}];}return db[_0xd1fe('0x41')][_0xd1fe('0x44')](_0x2390f0);})[_0xd1fe('0x26')](function(_0x3bb170){_0xf2cc8[_0xd1fe('0x45')]=_0x3bb170;return _0xf2cc8;})[_0xd1fe('0x26')](respondWithFilteredResult(_0x5ebcd2,_0x2390f0))[_0xd1fe('0x46')](handleError(_0x5ebcd2,null));};exports[_0xd1fe('0x47')]=function(_0x467685,_0x99fe00){var _0x5821f8={'raw':!![],'where':{'id':_0x467685[_0xd1fe('0x48')]['id']}},_0x24c6bc={};_0x24c6bc['model']=_[_0xd1fe('0x32')](db['SmsQueue'][_0xd1fe('0x49')]);_0x24c6bc[_0xd1fe('0x31')]=_['keys'](_0x467685['query']);_0x24c6bc['filters']=_[_0xd1fe('0x33')](_0x24c6bc[_0xd1fe('0x30')],_0x24c6bc[_0xd1fe('0x31')]);_0x5821f8['attributes']=_['intersection'](_0x24c6bc['model'],qs[_0xd1fe('0x34')](_0x467685['query'][_0xd1fe('0x34')]));_0x5821f8[_0xd1fe('0x35')]=_0x5821f8[_0xd1fe('0x35')][_0xd1fe('0x36')]?_0x5821f8[_0xd1fe('0x35')]:_0x24c6bc[_0xd1fe('0x30')];if(_0x467685[_0xd1fe('0x31')][_0xd1fe('0x42')]){_0x5821f8['include']=[{'all':!![]}];}_0x5821f8=_[_0xd1fe('0x3d')]({},_0x5821f8,_0x467685[_0xd1fe('0x40')]);return db[_0xd1fe('0x41')]['find'](_0x5821f8)[_0xd1fe('0x26')](handleEntityNotFound(_0x99fe00,null))[_0xd1fe('0x26')](respondWithResult(_0x99fe00,null))[_0xd1fe('0x46')](handleError(_0x99fe00,null));};exports[_0xd1fe('0x4a')]=function(_0x55688c,_0x568fac){return db[_0xd1fe('0x41')][_0xd1fe('0x4a')](_0x55688c[_0xd1fe('0x4b')],{})[_0xd1fe('0x26')](function(_0x31f64b){var _0x58fcda=_0x55688c[_0xd1fe('0x4c')]['get']({'plain':!![]});if(!_0x58fcda)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x58fcda[_0xd1fe('0x4d')]===_0xd1fe('0x4c')){var _0x3dfca4=_0x31f64b['get']({'plain':!![]});var _0x777b06=_0xd1fe('0x4e');return db[_0xd1fe('0x4f')][_0xd1fe('0x50')]({'where':{'name':_0x777b06,'userProfileId':_0x58fcda[_0xd1fe('0x51')]},'raw':!![]})[_0xd1fe('0x26')](function(_0xa90a65){if(_0xa90a65&&_0xa90a65[_0xd1fe('0x52')]===0x0){return db[_0xd1fe('0x53')][_0xd1fe('0x4a')]({'name':_0x3dfca4[_0xd1fe('0x2a')],'resourceId':_0x3dfca4['id'],'type':_0xa90a65[_0xd1fe('0x2a')],'sectionId':_0xa90a65['id']},{})[_0xd1fe('0x26')](function(){return _0x31f64b;});}else{return _0x31f64b;}})[_0xd1fe('0x46')](function(_0x40ef1b){logger[_0xd1fe('0x28')](_0xd1fe('0x54'),_0x40ef1b);throw _0x40ef1b;});}return _0x31f64b;})[_0xd1fe('0x26')](respondWithResult(_0x568fac,0xc9))[_0xd1fe('0x46')](handleError(_0x568fac,null));};exports[_0xd1fe('0x55')]=function(_0x38b65b,_0x55d836){if(_0x38b65b[_0xd1fe('0x4b')]['id']){delete _0x38b65b[_0xd1fe('0x4b')]['id'];}return db['SmsQueue'][_0xd1fe('0x50')]({'where':{'id':_0x38b65b['params']['id']}})[_0xd1fe('0x26')](handleEntityNotFound(_0x55d836,null))[_0xd1fe('0x26')](saveUpdates(_0x38b65b[_0xd1fe('0x4b')],null))['then'](respondWithResult(_0x55d836,null))[_0xd1fe('0x46')](handleError(_0x55d836,null));};exports[_0xd1fe('0x25')]=function(_0x1975d4,_0x137feb){return db[_0xd1fe('0x41')]['find']({'where':{'id':_0x1975d4[_0xd1fe('0x48')]['id']}})['then'](handleEntityNotFound(_0x137feb,null))[_0xd1fe('0x26')](removeEntity(_0x137feb,null))['catch'](handleError(_0x137feb,null));};exports[_0xd1fe('0x56')]=function(_0x580172,_0x55cff6){return db[_0xd1fe('0x41')]['describe']()[_0xd1fe('0x26')](respondWithResult(_0x55cff6,null))[_0xd1fe('0x46')](handleError(_0x55cff6,null));};exports['getMembers']=function(_0x1f2bf2,_0xb9f54a,_0x592bea){var _0xc7a786={'raw':!![],'where':{}},_0x4765c5={},_0x5add12;return db['SmsQueue'][_0xd1fe('0x57')]({'where':{'id':_0x1f2bf2[_0xd1fe('0x48')]['id']}})[_0xd1fe('0x26')](handleEntityNotFound(_0xb9f54a,null))['then'](function(_0x3a9120){if(_0x3a9120){_0x5add12=_0x3a9120[_0xd1fe('0x27')]({'plain':!![]});_0x4765c5['model']=_[_0xd1fe('0x32')](db[_0xd1fe('0x58')][_0xd1fe('0x49')]);_0x4765c5['query']=_['keys'](_0x1f2bf2[_0xd1fe('0x31')]);_0x4765c5[_0xd1fe('0x3c')]=_[_0xd1fe('0x33')](_0x4765c5[_0xd1fe('0x30')],_0x4765c5[_0xd1fe('0x31')]);_0xc7a786[_0xd1fe('0x35')]=_['intersection'](_0x4765c5[_0xd1fe('0x30')],qs['fields'](_0x1f2bf2[_0xd1fe('0x31')][_0xd1fe('0x34')]));_0xc7a786['attributes']=_0xc7a786[_0xd1fe('0x35')][_0xd1fe('0x36')]?_0xc7a786[_0xd1fe('0x35')]:_0x4765c5[_0xd1fe('0x30')];if(!_0x1f2bf2[_0xd1fe('0x31')][_0xd1fe('0x37')](_0xd1fe('0x38'))){_0xc7a786[_0xd1fe('0x1e')]=qs[_0xd1fe('0x1e')](_0x1f2bf2[_0xd1fe('0x31')][_0xd1fe('0x1e')]);_0xc7a786[_0xd1fe('0x1c')]=qs[_0xd1fe('0x1c')](_0x1f2bf2['query']['offset']);}_0xc7a786[_0xd1fe('0x39')]=qs[_0xd1fe('0x3a')](_0x1f2bf2[_0xd1fe('0x31')][_0xd1fe('0x3a')]);_0xc7a786[_0xd1fe('0x3b')]=qs[_0xd1fe('0x3c')](_['pick'](_0x1f2bf2['query'],_0x4765c5[_0xd1fe('0x3c')]));_0xc7a786[_0xd1fe('0x3b')]['SmsQueueId']=_0x3a9120['id'];if(_0x1f2bf2[_0xd1fe('0x31')][_0xd1fe('0x3f')]){_0xc7a786[_0xd1fe('0x3b')]=_[_0xd1fe('0x3d')](_0xc7a786[_0xd1fe('0x3b')],{'$or':_[_0xd1fe('0x2d')](_0xc7a786['attributes'],function(_0x3e4fbb){var _0x286944={};_0x286944[_0x3e4fbb]={'$like':'%'+_0x1f2bf2[_0xd1fe('0x31')][_0xd1fe('0x3f')]+'%'};return _0x286944;})});}_0xc7a786=_[_0xd1fe('0x3d')]({},_0xc7a786,_0x1f2bf2[_0xd1fe('0x40')]);return db['UserSmsQueue'][_0xd1fe('0x44')](_0xc7a786);}})[_0xd1fe('0x26')](function(_0x1ef042){if(_0x1ef042){return db[_0xd1fe('0x59')][_0xd1fe('0x5a')]({'where':{'id':_['map'](_0x1ef042,_0xd1fe('0x5b')),'role':_0xd1fe('0x5c')},'attributes':['id',_0xd1fe('0x2a'),'smsPause',_0xd1fe('0x5d'),'createdAt']});}})['then'](function(_0x3d8fa4){if(_0x3d8fa4){return{'count':_0x3d8fa4['count'],'rows':_[_0xd1fe('0x2d')](_0x3d8fa4[_0xd1fe('0x45')],function(_0x38fec7){return{'membername':_0x38fec7[_0xd1fe('0x2a')],'UserId':_0x38fec7['id'],'queue_name':_0x5add12[_0xd1fe('0x2a')],'SmsQueueId':_0x5add12['id'],'interface':util[_0xd1fe('0x5e')]('%s/%s',_0xd1fe('0x5f'),_0x38fec7[_0xd1fe('0x2a')]),'penalty':0x0,'paused':_0x38fec7[_0xd1fe('0x60')],'createdAt':_0x38fec7[_0xd1fe('0x61')],'updatedAt':_0x38fec7[_0xd1fe('0x5d')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xd1fe('0x26')](respondWithFilteredResult(_0xb9f54a,_0xc7a786))['catch'](handleError(_0xb9f54a,null));};exports[_0xd1fe('0x62')]=function(_0x14fa7c,_0x3338de,_0x595973){var _0x2ab9a8={};var _0xace6ae={};var _0x2a524d;var _0x3fae65;return db[_0xd1fe('0x41')][_0xd1fe('0x57')]({'where':{'id':_0x14fa7c['params']['id']}})[_0xd1fe('0x26')](handleEntityNotFound(_0x3338de,null))['then'](function(_0x425c23){if(_0x425c23){_0x2a524d=_0x425c23;_0xace6ae[_0xd1fe('0x30')]=_[_0xd1fe('0x32')](db['Team'][_0xd1fe('0x49')]);_0xace6ae['query']=_['keys'](_0x14fa7c[_0xd1fe('0x31')]);_0xace6ae[_0xd1fe('0x3c')]=_[_0xd1fe('0x33')](_0xace6ae[_0xd1fe('0x30')],_0xace6ae[_0xd1fe('0x31')]);_0x2ab9a8[_0xd1fe('0x35')]=_[_0xd1fe('0x33')](_0xace6ae[_0xd1fe('0x30')],qs[_0xd1fe('0x34')](_0x14fa7c[_0xd1fe('0x31')][_0xd1fe('0x34')]));_0x2ab9a8['attributes']=_0x2ab9a8[_0xd1fe('0x35')][_0xd1fe('0x36')]?_0x2ab9a8[_0xd1fe('0x35')]:_0xace6ae[_0xd1fe('0x30')];_0x2ab9a8['order']=qs['sort'](_0x14fa7c['query']['sort']);_0x2ab9a8['where']=qs[_0xd1fe('0x3c')](_[_0xd1fe('0x63')](_0x14fa7c[_0xd1fe('0x31')],_0xace6ae['filters']));if(_0x14fa7c['query'][_0xd1fe('0x3f')]){_0x2ab9a8[_0xd1fe('0x3b')]=_[_0xd1fe('0x3d')](_0x2ab9a8[_0xd1fe('0x3b')],{'$or':_['map'](_0x2ab9a8[_0xd1fe('0x35')],function(_0x448316){var _0xbd834={};_0xbd834[_0x448316]={'$like':'%'+_0x14fa7c[_0xd1fe('0x31')][_0xd1fe('0x3f')]+'%'};return _0xbd834;})});}_0x2ab9a8=_[_0xd1fe('0x3d')]({},_0x2ab9a8,_0x14fa7c[_0xd1fe('0x40')]);return _0x2a524d['getTeams'](_0x2ab9a8);}})[_0xd1fe('0x26')](function(_0x15f836){if(_0x15f836){_0x3fae65=_0x15f836['length'];if(!_0x14fa7c[_0xd1fe('0x31')][_0xd1fe('0x37')](_0xd1fe('0x38'))){_0x2ab9a8['limit']=qs[_0xd1fe('0x1e')](_0x14fa7c[_0xd1fe('0x31')][_0xd1fe('0x1e')]);_0x2ab9a8[_0xd1fe('0x1c')]=qs[_0xd1fe('0x1c')](_0x14fa7c['query'][_0xd1fe('0x1c')]);}return _0x2a524d[_0xd1fe('0x62')](_0x2ab9a8);}})[_0xd1fe('0x26')](function(_0xdd3025){if(_0xdd3025){return _0xdd3025?{'count':_0x3fae65,'rows':_0xdd3025}:null;}})['then'](respondWithResult(_0x3338de,null))[_0xd1fe('0x46')](handleError(_0x3338de,null));};exports['addTeams']=function(_0x1a35bb,_0x5afe31,_0x591831){var _0x511607=_0x1a35bb[_0xd1fe('0x4b')][_0xd1fe('0x64')];return db[_0xd1fe('0x65')]['findAll']({'where':{'id':_0x511607},'attributes':['id'],'include':[{'model':db[_0xd1fe('0x59')],'as':_0xd1fe('0x66'),'attributes':['id','name','online',_0xd1fe('0x67'),'interface'],'raw':!![]}]})[_0xd1fe('0x26')](function(_0x2f77bb){if(_0x2f77bb){var _0x115458=_['flatMap'](_0x2f77bb,function(_0x1cb770){var _0x3b056a=_0x1cb770[_0xd1fe('0x27')]({'plain':!![]});return _0x3b056a['Agents'];});return db[_0xd1fe('0x41')][_0xd1fe('0x50')]({'where':{'id':_0x1a35bb['params']['id']}})[_0xd1fe('0x26')](function(_0x4b0cff){return db['sequelize'][_0xd1fe('0x68')](function(_0x2367de){return _0x4b0cff[_0xd1fe('0x69')](_0x511607,{'transaction':_0x2367de})[_0xd1fe('0x26')](function(){return BPromise['each'](_0x115458,function(_0x3b1f58){return db['UserSmsQueue'][_0xd1fe('0x6a')]({'where':{'UserId':_0x3b1f58['id'],'SmsQueueId':_0x1a35bb[_0xd1fe('0x48')]['id']},'transaction':_0x2367de});});})[_0xd1fe('0x26')](function(){_0x115458['forEach'](function(_0x8aafe3){socket[_0xd1fe('0x6b')](_0xd1fe('0x6c'),{'UserId':_0x8aafe3['id'],'SmsQueueId':_0x4b0cff['id']});});});});});}})[_0xd1fe('0x26')](respondWithStatusCode(_0x5afe31,null))[_0xd1fe('0x46')](handleError(_0x5afe31,null));};exports[_0xd1fe('0x6d')]=function(_0x5a7b60,_0x43e125,_0x3a56cb){return db[_0xd1fe('0x65')][_0xd1fe('0x44')]({'where':{'id':_0x5a7b60[_0xd1fe('0x31')][_0xd1fe('0x64')]},'attributes':['id'],'include':[{'model':db['User'],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0xd1fe('0x26')](handleEntityNotFound(_0x43e125,null))[_0xd1fe('0x26')](function(_0x312314){var _0x102692=_[_0xd1fe('0x2d')](_0x312314,'id');var _0x10f5fd=[];var _0x2161f0=[];var _0x23b38e=squel['select']();_0x23b38e[_0xd1fe('0x6e')](_0xd1fe('0x6f'))['from']('team_has_sms_queues','tq')[_0xd1fe('0x70')](_0xd1fe('0x71'),'ut',_0xd1fe('0x72'))[_0xd1fe('0x3b')](_0xd1fe('0x73'),_0x5a7b60[_0xd1fe('0x48')]['id']);for(var _0x358872=0x0;_0x358872<_0x312314[_0xd1fe('0x36')];_0x358872+=0x1){let _0x142cf9=_0x312314[_0x358872];for(var _0x503d7e=0x0;_0x503d7e<_0x142cf9['Agents'][_0xd1fe('0x36')];_0x503d7e+=0x1){let _0xa183af=_0x142cf9[_0xd1fe('0x66')][_0x503d7e];var _0x1321b4=_0x23b38e[_0xd1fe('0x74')]();_0x1321b4[_0xd1fe('0x3b')](_0xd1fe('0x75'),_0xa183af['id']);_0x2161f0['push'](db[_0xd1fe('0x76')]['query'](_0x1321b4[_0xd1fe('0x77')](),{'type':db[_0xd1fe('0x76')][_0xd1fe('0x78')][_0xd1fe('0x79')]})[_0xd1fe('0x26')](function(_0x435933){if(_0x435933['length']===0x1){return _0xa183af['id'];}else{var _0x1e8b9a=_[_0xd1fe('0x7a')](_[_0xd1fe('0x2d')](_0x435933,_0xd1fe('0x7b')),function(_0x13f1cf){return _['includes'](_0x102692,_0x13f1cf);});if(_0x1e8b9a){return _0xa183af['id'];}}}));}}return BPromise[_0xd1fe('0x7c')](_0x2161f0)['then'](function(_0x2c9c98){_0x10f5fd=_(_0x10f5fd)[_0xd1fe('0x7d')](_0x2c9c98)[_0xd1fe('0x7e')]()[_0xd1fe('0x7f')]();return db['SmsQueue'][_0xd1fe('0x50')]({'where':{'id':_0x5a7b60[_0xd1fe('0x48')]['id']}})[_0xd1fe('0x26')](function(_0x45ffc3){return db[_0xd1fe('0x76')]['transaction'](function(_0x528af0){return _0x45ffc3['removeTeams'](_0x5a7b60['query'][_0xd1fe('0x64')],{'transaction':_0x528af0})[_0xd1fe('0x26')](function(){if(!_[_0xd1fe('0x80')](_0x10f5fd)){return _0x45ffc3['removeAgents'](_0x10f5fd,{'transaction':_0x528af0});}})[_0xd1fe('0x26')](function(){_0x10f5fd[_0xd1fe('0x81')](function(_0x542255){socket[_0xd1fe('0x6b')](_0xd1fe('0x82'),{'UserId':_0x542255,'SmsQueueId':_0x45ffc3['id']});});});});});});})[_0xd1fe('0x26')](respondWithStatusCode(_0x43e125,null))['catch'](handleError(_0x43e125,null));};exports[_0xd1fe('0x83')]=function(_0x4fb505,_0x53708c,_0x5c7048){return db[_0xd1fe('0x41')]['find']({'where':{'id':_0x4fb505['params']['id']}})[_0xd1fe('0x26')](handleEntityNotFound(_0x53708c,null))[_0xd1fe('0x26')](function(_0x2fd677){if(_0x2fd677){return _0x2fd677[_0xd1fe('0x83')](_0x4fb505[_0xd1fe('0x4b')][_0xd1fe('0x64')],_['omit'](_0x4fb505[_0xd1fe('0x4b')],['ids','id'])||{})[_0xd1fe('0x84')](function(_0x3333e3){for(var _0x48ce28=0x0;_0x48ce28<_0x4fb505[_0xd1fe('0x4b')][_0xd1fe('0x64')][_0xd1fe('0x36')];_0x48ce28+=0x1){socket['emit'](_0xd1fe('0x6c'),{'UserId':Number(_0x4fb505[_0xd1fe('0x4b')][_0xd1fe('0x64')][_0x48ce28]),'SmsQueueId':Number(_0x4fb505[_0xd1fe('0x48')]['id'])});}return _0x3333e3;});}})[_0xd1fe('0x26')](respondWithResult(_0x53708c,null))[_0xd1fe('0x46')](handleError(_0x53708c,null));};exports[_0xd1fe('0x85')]=function(_0x2f5f30,_0x1a6803,_0x47587b){return db['SmsQueue']['find']({'where':{'id':_0x2f5f30[_0xd1fe('0x48')]['id']}})['then'](handleEntityNotFound(_0x1a6803,null))[_0xd1fe('0x26')](function(_0x470a31){if(_0x470a31){return _0x470a31[_0xd1fe('0x85')](_0x2f5f30[_0xd1fe('0x31')][_0xd1fe('0x64')])['then'](function(){if(_[_0xd1fe('0x86')](_0x2f5f30[_0xd1fe('0x31')]['ids'])){for(var _0x1808c7=0x0;_0x1808c7<_0x2f5f30[_0xd1fe('0x31')][_0xd1fe('0x64')][_0xd1fe('0x36')];_0x1808c7+=0x1){socket[_0xd1fe('0x6b')]('userSmsQueue:remove',{'UserId':Number(_0x2f5f30[_0xd1fe('0x31')]['ids'][_0x1808c7]),'SmsQueueId':Number(_0x2f5f30[_0xd1fe('0x48')]['id'])});}}else{socket[_0xd1fe('0x6b')](_0xd1fe('0x82'),{'UserId':Number(_0x2f5f30[_0xd1fe('0x31')][_0xd1fe('0x64')]),'SmsQueueId':Number(_0x2f5f30[_0xd1fe('0x48')]['id'])});}});}})[_0xd1fe('0x26')](respondWithStatusCode(_0x1a6803,null))[_0xd1fe('0x46')](handleError(_0x1a6803,null));};exports[_0xd1fe('0x87')]=function(_0x2fc1e2,_0x2510b9,_0x52010d){var _0x16c736={};var _0x48ad4f={};var _0x9d0772;var _0x595bda;return db[_0xd1fe('0x41')][_0xd1fe('0x57')]({'where':{'id':_0x2fc1e2[_0xd1fe('0x48')]['id']}})[_0xd1fe('0x26')](handleEntityNotFound(_0x2510b9,null))[_0xd1fe('0x26')](function(_0x1000d8){if(_0x1000d8){_0x9d0772=_0x1000d8;_0x48ad4f[_0xd1fe('0x30')]=_['keys'](db[_0xd1fe('0x59')]['rawAttributes']);_0x48ad4f[_0xd1fe('0x31')]=_['keys'](_0x2fc1e2[_0xd1fe('0x31')]);_0x48ad4f[_0xd1fe('0x3c')]=_[_0xd1fe('0x33')](_0x48ad4f[_0xd1fe('0x30')],_0x48ad4f['query']);_0x16c736[_0xd1fe('0x35')]=_[_0xd1fe('0x33')](_0x48ad4f['model'],qs[_0xd1fe('0x34')](_0x2fc1e2[_0xd1fe('0x31')][_0xd1fe('0x34')]));_0x16c736[_0xd1fe('0x35')]=_0x16c736[_0xd1fe('0x35')][_0xd1fe('0x36')]?_0x16c736[_0xd1fe('0x35')]:_0x48ad4f[_0xd1fe('0x30')];_0x16c736[_0xd1fe('0x39')]=qs['sort'](_0x2fc1e2[_0xd1fe('0x31')][_0xd1fe('0x3a')]);_0x16c736[_0xd1fe('0x3b')]=qs[_0xd1fe('0x3c')](_[_0xd1fe('0x63')](_0x2fc1e2['query'],_0x48ad4f[_0xd1fe('0x3c')]));if(_0x2fc1e2[_0xd1fe('0x31')][_0xd1fe('0x3f')]){_0x16c736['where']=_['merge'](_0x16c736[_0xd1fe('0x3b')],{'$or':_[_0xd1fe('0x2d')](_0x16c736[_0xd1fe('0x35')],function(_0x3b9528){var _0x1c262c={};_0x1c262c[_0x3b9528]={'$like':'%'+_0x2fc1e2['query']['filter']+'%'};return _0x1c262c;})});}_0x16c736=_[_0xd1fe('0x3d')]({},_0x16c736,_0x2fc1e2[_0xd1fe('0x40')]);return _0x9d0772[_0xd1fe('0x87')](_0x16c736);}})[_0xd1fe('0x26')](function(_0x231697){if(_0x231697){_0x595bda=_0x231697['length'];if(!_0x2fc1e2[_0xd1fe('0x31')][_0xd1fe('0x37')](_0xd1fe('0x38'))){_0x16c736[_0xd1fe('0x1e')]=qs[_0xd1fe('0x1e')](_0x2fc1e2['query']['limit']);_0x16c736[_0xd1fe('0x1c')]=qs['offset'](_0x2fc1e2[_0xd1fe('0x31')][_0xd1fe('0x1c')]);}return _0x9d0772[_0xd1fe('0x87')](_0x16c736);}})[_0xd1fe('0x26')](function(_0x6cdb7){if(_0x6cdb7){return _0x6cdb7?{'count':_0x595bda,'rows':_0x6cdb7}:null;}})['then'](respondWithResult(_0x2510b9,null))[_0xd1fe('0x46')](handleError(_0x2510b9,null));};
\ No newline at end of file
+var _0xe6c0=['fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','querystring','ioredis','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','register','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','SmsQueues','UserProfileResource','sendStatus','error','stack','name','send','index','map','SmsQueue','rawAttributes','fieldName','key','keys','query','filters','intersection','model','fields','attributes','length','hasOwnProperty','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','show','find','catch','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','describe','getMembers','findOne','UserSmsQueue','nolimit','SmsQueueId','options','UserId','agent','updatedAt','%s/%s','SIP','smsPause','createdAt','getTeams','order','ids','Team','User','voicePause','flatMap','Agents','each','findOrCreate','emit','userSmsQueue:save','removeTeams','select','field','tq.TeamId','from','team_has_sms_queues','user_has_teams','SmsQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','sequelize','toString','QueryTypes','SELECT','all','union','compact','value','transaction','removeAgents','forEach','userSmsQueue:remove','addAgents','omit','isArray','getAgents','rimraf','zip-dir'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xe6c0,0x88));var _0x0e6c=function(_0x9cd4c3,_0x1c9b2c){_0x9cd4c3=_0x9cd4c3-0x0;var _0x4c9025=_0xe6c0[_0x9cd4c3];return _0x4c9025;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0e6c('0x0'));var zipdir=require(_0x0e6c('0x1'));var jsonpatch=require(_0x0e6c('0x2'));var rp=require('request-promise');var moment=require(_0x0e6c('0x3'));var BPromise=require(_0x0e6c('0x4'));var Mustache=require(_0x0e6c('0x5'));var util=require(_0x0e6c('0x6'));var path=require(_0x0e6c('0x7'));var sox=require(_0x0e6c('0x8'));var csv=require(_0x0e6c('0x9'));var ejs=require(_0x0e6c('0xa'));var fs=require('fs');var fs_extra=require(_0x0e6c('0xb'));var _=require(_0x0e6c('0xc'));var squel=require('squel');var crypto=require(_0x0e6c('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x0e6c('0xe'));var toCsv=require(_0x0e6c('0x9'));var querystring=require(_0x0e6c('0xf'));var Papa=require('papaparse');var Redis=require(_0x0e6c('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x0e6c('0x11'));var logger=require(_0x0e6c('0x12'))('api');var utils=require('../../config/utils');var config=require(_0x0e6c('0x13'));var licenseUtil=require(_0x0e6c('0x14'));var db=require(_0x0e6c('0x15'))['db'];config[_0x0e6c('0x16')]=_[_0x0e6c('0x17')](config[_0x0e6c('0x16')],{'host':'localhost','port':0x18eb});var socket=require(_0x0e6c('0x18'))(new Redis(config[_0x0e6c('0x16')]));require('./smsQueue.socket')[_0x0e6c('0x19')](socket);function respondWithStatusCode(_0x10e773,_0x2abc4f){_0x2abc4f=_0x2abc4f||0xcc;return function(_0x2f4981){if(_0x2f4981){return _0x10e773['sendStatus'](_0x2abc4f);}return _0x10e773[_0x0e6c('0x1a')](_0x2abc4f)[_0x0e6c('0x1b')]();};}function respondWithResult(_0x40c467,_0x350074){_0x350074=_0x350074||0xc8;return function(_0x17f72b){if(_0x17f72b){return _0x40c467[_0x0e6c('0x1a')](_0x350074)[_0x0e6c('0x1c')](_0x17f72b);}};}function respondWithFilteredResult(_0x573ab3,_0x1e96b2){return function(_0x2f1361){if(_0x2f1361){var _0xb612c7=typeof _0x1e96b2[_0x0e6c('0x1d')]===_0x0e6c('0x1e')&&typeof _0x1e96b2[_0x0e6c('0x1f')]===_0x0e6c('0x1e');var _0x4fb216=_0x2f1361[_0x0e6c('0x20')];var _0x15878=_0xb612c7?0x0:_0x1e96b2[_0x0e6c('0x1d')];var _0x477a30=_0xb612c7?_0x2f1361[_0x0e6c('0x20')]:_0x1e96b2[_0x0e6c('0x1d')]+_0x1e96b2[_0x0e6c('0x1f')];var _0x5a11d5;if(_0x477a30>=_0x4fb216){_0x477a30=_0x4fb216;_0x5a11d5=0xc8;}else{_0x5a11d5=0xce;}_0x573ab3[_0x0e6c('0x1a')](_0x5a11d5);return _0x573ab3[_0x0e6c('0x21')](_0x0e6c('0x22'),_0x15878+'-'+_0x477a30+'/'+_0x4fb216)['json'](_0x2f1361);}return null;};}function patchUpdates(_0x2ed28c){return function(_0x5973b9){try{jsonpatch[_0x0e6c('0x23')](_0x5973b9,_0x2ed28c,!![]);}catch(_0x274c74){return BPromise[_0x0e6c('0x24')](_0x274c74);}return _0x5973b9[_0x0e6c('0x25')]();};}function saveUpdates(_0x438359,_0x55028e){return function(_0x568e02){if(_0x568e02){return _0x568e02[_0x0e6c('0x26')](_0x438359)[_0x0e6c('0x27')](function(_0x19741c){return _0x19741c;});}return null;};}function removeEntity(_0x1b7efb,_0x500be0){return function(_0x359bf1){if(_0x359bf1){return _0x359bf1[_0x0e6c('0x28')]()[_0x0e6c('0x27')](function(){var _0xc71d2d=_0x359bf1['get']({'plain':!![]});var _0x5c4b14=_0x0e6c('0x29');return db[_0x0e6c('0x2a')][_0x0e6c('0x28')]({'where':{'type':_0x5c4b14,'resourceId':_0xc71d2d['id']}})[_0x0e6c('0x27')](function(){return _0x359bf1;});})[_0x0e6c('0x27')](function(){_0x1b7efb[_0x0e6c('0x1a')](0xcc)[_0x0e6c('0x1b')]();});}};}function handleEntityNotFound(_0x516126,_0x23cb8f){return function(_0x2e8c83){if(!_0x2e8c83){_0x516126[_0x0e6c('0x2b')](0x194);}return _0x2e8c83;};}function handleError(_0x26a287,_0x21459a){_0x21459a=_0x21459a||0x1f4;return function(_0x88253f){logger[_0x0e6c('0x2c')](_0x88253f[_0x0e6c('0x2d')]);if(_0x88253f['name']){delete _0x88253f[_0x0e6c('0x2e')];}_0x26a287[_0x0e6c('0x1a')](_0x21459a)[_0x0e6c('0x2f')](_0x88253f);};}exports[_0x0e6c('0x30')]=function(_0x2051c5,_0x5670e3){var _0x472ec6={},_0x2e32ad={},_0x5cd552={'count':0x0,'rows':[]};var _0x5cb12d=_[_0x0e6c('0x31')](db[_0x0e6c('0x32')][_0x0e6c('0x33')],function(_0x1e05c5){return{'name':_0x1e05c5[_0x0e6c('0x34')],'type':_0x1e05c5['type'][_0x0e6c('0x35')]};});_0x2e32ad['model']=_['map'](_0x5cb12d,_0x0e6c('0x2e'));_0x2e32ad['query']=_[_0x0e6c('0x36')](_0x2051c5[_0x0e6c('0x37')]);_0x2e32ad[_0x0e6c('0x38')]=_[_0x0e6c('0x39')](_0x2e32ad[_0x0e6c('0x3a')],_0x2e32ad[_0x0e6c('0x37')]);_0x472ec6['attributes']=_[_0x0e6c('0x39')](_0x2e32ad[_0x0e6c('0x3a')],qs[_0x0e6c('0x3b')](_0x2051c5[_0x0e6c('0x37')][_0x0e6c('0x3b')]));_0x472ec6[_0x0e6c('0x3c')]=_0x472ec6['attributes'][_0x0e6c('0x3d')]?_0x472ec6[_0x0e6c('0x3c')]:_0x2e32ad[_0x0e6c('0x3a')];if(!_0x2051c5[_0x0e6c('0x37')][_0x0e6c('0x3e')]('nolimit')){_0x472ec6[_0x0e6c('0x1f')]=qs[_0x0e6c('0x1f')](_0x2051c5[_0x0e6c('0x37')]['limit']);_0x472ec6[_0x0e6c('0x1d')]=qs[_0x0e6c('0x1d')](_0x2051c5[_0x0e6c('0x37')]['offset']);}_0x472ec6['order']=qs[_0x0e6c('0x3f')](_0x2051c5['query'][_0x0e6c('0x3f')]);_0x472ec6[_0x0e6c('0x40')]=qs[_0x0e6c('0x38')](_[_0x0e6c('0x41')](_0x2051c5[_0x0e6c('0x37')],_0x2e32ad[_0x0e6c('0x38')]),_0x5cb12d);if(_0x2051c5['query'][_0x0e6c('0x42')]){_0x472ec6[_0x0e6c('0x40')]=_[_0x0e6c('0x43')](_0x472ec6[_0x0e6c('0x40')],{'$or':_[_0x0e6c('0x31')](_0x5cb12d,function(_0x192d7d){if(_0x192d7d['type']!==_0x0e6c('0x44')){var _0x125737={};_0x125737[_0x192d7d[_0x0e6c('0x2e')]]={'$like':'%'+_0x2051c5['query'][_0x0e6c('0x42')]+'%'};return _0x125737;}})});}_0x472ec6=_[_0x0e6c('0x43')]({},_0x472ec6,_0x2051c5['options']);var _0x1ce710={'where':_0x472ec6['where']};return db[_0x0e6c('0x32')][_0x0e6c('0x20')](_0x1ce710)[_0x0e6c('0x27')](function(_0x17a5c3){_0x5cd552[_0x0e6c('0x20')]=_0x17a5c3;if(_0x2051c5['query'][_0x0e6c('0x45')]){_0x472ec6[_0x0e6c('0x46')]=[{'all':!![]}];}return db[_0x0e6c('0x32')][_0x0e6c('0x47')](_0x472ec6);})[_0x0e6c('0x27')](function(_0x446360){_0x5cd552[_0x0e6c('0x48')]=_0x446360;return _0x5cd552;})['then'](respondWithFilteredResult(_0x5670e3,_0x472ec6))['catch'](handleError(_0x5670e3,null));};exports[_0x0e6c('0x49')]=function(_0x39f415,_0x27465e){var _0x4880b2={'raw':!![],'where':{'id':_0x39f415['params']['id']}},_0x4d6f52={};_0x4d6f52[_0x0e6c('0x3a')]=_[_0x0e6c('0x36')](db['SmsQueue'][_0x0e6c('0x33')]);_0x4d6f52['query']=_[_0x0e6c('0x36')](_0x39f415[_0x0e6c('0x37')]);_0x4d6f52[_0x0e6c('0x38')]=_[_0x0e6c('0x39')](_0x4d6f52[_0x0e6c('0x3a')],_0x4d6f52[_0x0e6c('0x37')]);_0x4880b2[_0x0e6c('0x3c')]=_[_0x0e6c('0x39')](_0x4d6f52[_0x0e6c('0x3a')],qs[_0x0e6c('0x3b')](_0x39f415['query'][_0x0e6c('0x3b')]));_0x4880b2[_0x0e6c('0x3c')]=_0x4880b2[_0x0e6c('0x3c')][_0x0e6c('0x3d')]?_0x4880b2[_0x0e6c('0x3c')]:_0x4d6f52['model'];if(_0x39f415[_0x0e6c('0x37')][_0x0e6c('0x45')]){_0x4880b2[_0x0e6c('0x46')]=[{'all':!![]}];}_0x4880b2=_['merge']({},_0x4880b2,_0x39f415['options']);return db[_0x0e6c('0x32')][_0x0e6c('0x4a')](_0x4880b2)[_0x0e6c('0x27')](handleEntityNotFound(_0x27465e,null))[_0x0e6c('0x27')](respondWithResult(_0x27465e,null))[_0x0e6c('0x4b')](handleError(_0x27465e,null));};exports[_0x0e6c('0x4c')]=function(_0x2e6c0f,_0x310df8){return db[_0x0e6c('0x32')][_0x0e6c('0x4c')](_0x2e6c0f[_0x0e6c('0x4d')],{})[_0x0e6c('0x27')](function(_0x2855b6){var _0x11b11b=_0x2e6c0f['user']['get']({'plain':!![]});if(!_0x11b11b)throw new Error(_0x0e6c('0x4e'));if(_0x11b11b['role']===_0x0e6c('0x4f')){var _0x45a344=_0x2855b6['get']({'plain':!![]});var _0x4d19d0='SmsQueues';return db[_0x0e6c('0x50')][_0x0e6c('0x4a')]({'where':{'name':_0x4d19d0,'userProfileId':_0x11b11b[_0x0e6c('0x51')]},'raw':!![]})[_0x0e6c('0x27')](function(_0x4acf2e){if(_0x4acf2e&&_0x4acf2e[_0x0e6c('0x52')]===0x0){return db['UserProfileResource'][_0x0e6c('0x4c')]({'name':_0x45a344[_0x0e6c('0x2e')],'resourceId':_0x45a344['id'],'type':_0x4acf2e[_0x0e6c('0x2e')],'sectionId':_0x4acf2e['id']},{})[_0x0e6c('0x27')](function(){return _0x2855b6;});}else{return _0x2855b6;}})[_0x0e6c('0x4b')](function(_0x27be64){logger[_0x0e6c('0x2c')](_0x0e6c('0x53'),_0x27be64);throw _0x27be64;});}return _0x2855b6;})['then'](respondWithResult(_0x310df8,0xc9))[_0x0e6c('0x4b')](handleError(_0x310df8,null));};exports[_0x0e6c('0x26')]=function(_0x44b7fb,_0x4e9279){if(_0x44b7fb[_0x0e6c('0x4d')]['id']){delete _0x44b7fb[_0x0e6c('0x4d')]['id'];}return db['SmsQueue'][_0x0e6c('0x4a')]({'where':{'id':_0x44b7fb[_0x0e6c('0x54')]['id']}})['then'](handleEntityNotFound(_0x4e9279,null))[_0x0e6c('0x27')](saveUpdates(_0x44b7fb[_0x0e6c('0x4d')],null))[_0x0e6c('0x27')](respondWithResult(_0x4e9279,null))[_0x0e6c('0x4b')](handleError(_0x4e9279,null));};exports[_0x0e6c('0x28')]=function(_0x1d3b7a,_0x1db873){return db['SmsQueue'][_0x0e6c('0x4a')]({'where':{'id':_0x1d3b7a[_0x0e6c('0x54')]['id']}})[_0x0e6c('0x27')](handleEntityNotFound(_0x1db873,null))[_0x0e6c('0x27')](removeEntity(_0x1db873,null))['catch'](handleError(_0x1db873,null));};exports['describe']=function(_0xfdd06b,_0xfb6abf){return db[_0x0e6c('0x32')][_0x0e6c('0x55')]()['then'](respondWithResult(_0xfb6abf,null))[_0x0e6c('0x4b')](handleError(_0xfb6abf,null));};exports[_0x0e6c('0x56')]=function(_0x4d411a,_0x10ad3e,_0x4f2dd1){var _0x122ceb={'raw':!![],'where':{}},_0x14284b={},_0x5a7bd5;return db[_0x0e6c('0x32')][_0x0e6c('0x57')]({'where':{'id':_0x4d411a[_0x0e6c('0x54')]['id']}})[_0x0e6c('0x27')](handleEntityNotFound(_0x10ad3e,null))['then'](function(_0x19ae17){if(_0x19ae17){_0x5a7bd5=_0x19ae17['get']({'plain':!![]});_0x14284b[_0x0e6c('0x3a')]=_[_0x0e6c('0x36')](db[_0x0e6c('0x58')][_0x0e6c('0x33')]);_0x14284b[_0x0e6c('0x37')]=_[_0x0e6c('0x36')](_0x4d411a[_0x0e6c('0x37')]);_0x14284b[_0x0e6c('0x38')]=_[_0x0e6c('0x39')](_0x14284b['model'],_0x14284b[_0x0e6c('0x37')]);_0x122ceb['attributes']=_[_0x0e6c('0x39')](_0x14284b[_0x0e6c('0x3a')],qs[_0x0e6c('0x3b')](_0x4d411a[_0x0e6c('0x37')]['fields']));_0x122ceb['attributes']=_0x122ceb['attributes'][_0x0e6c('0x3d')]?_0x122ceb[_0x0e6c('0x3c')]:_0x14284b[_0x0e6c('0x3a')];if(!_0x4d411a['query'][_0x0e6c('0x3e')](_0x0e6c('0x59'))){_0x122ceb['limit']=qs[_0x0e6c('0x1f')](_0x4d411a['query'][_0x0e6c('0x1f')]);_0x122ceb[_0x0e6c('0x1d')]=qs['offset'](_0x4d411a['query'][_0x0e6c('0x1d')]);}_0x122ceb['order']=qs[_0x0e6c('0x3f')](_0x4d411a[_0x0e6c('0x37')][_0x0e6c('0x3f')]);_0x122ceb[_0x0e6c('0x40')]=qs[_0x0e6c('0x38')](_[_0x0e6c('0x41')](_0x4d411a['query'],_0x14284b[_0x0e6c('0x38')]));_0x122ceb['where'][_0x0e6c('0x5a')]=_0x19ae17['id'];if(_0x4d411a['query'][_0x0e6c('0x42')]){_0x122ceb[_0x0e6c('0x40')]=_[_0x0e6c('0x43')](_0x122ceb[_0x0e6c('0x40')],{'$or':_[_0x0e6c('0x31')](_0x122ceb['attributes'],function(_0x280dea){var _0xdd71ee={};_0xdd71ee[_0x280dea]={'$like':'%'+_0x4d411a['query'][_0x0e6c('0x42')]+'%'};return _0xdd71ee;})});}_0x122ceb=_[_0x0e6c('0x43')]({},_0x122ceb,_0x4d411a[_0x0e6c('0x5b')]);return db[_0x0e6c('0x58')][_0x0e6c('0x47')](_0x122ceb);}})[_0x0e6c('0x27')](function(_0xd980a6){if(_0xd980a6){return db['User']['findAndCountAll']({'where':{'id':_['map'](_0xd980a6,_0x0e6c('0x5c')),'role':_0x0e6c('0x5d')},'attributes':['id',_0x0e6c('0x2e'),'smsPause',_0x0e6c('0x5e'),'createdAt']});}})['then'](function(_0x11d034){if(_0x11d034){return{'count':_0x11d034[_0x0e6c('0x20')],'rows':_['map'](_0x11d034[_0x0e6c('0x48')],function(_0x36d64b){return{'membername':_0x36d64b[_0x0e6c('0x2e')],'UserId':_0x36d64b['id'],'queue_name':_0x5a7bd5[_0x0e6c('0x2e')],'SmsQueueId':_0x5a7bd5['id'],'interface':util['format'](_0x0e6c('0x5f'),_0x0e6c('0x60'),_0x36d64b[_0x0e6c('0x2e')]),'penalty':0x0,'paused':_0x36d64b[_0x0e6c('0x61')],'createdAt':_0x36d64b[_0x0e6c('0x62')],'updatedAt':_0x36d64b['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0x0e6c('0x27')](respondWithFilteredResult(_0x10ad3e,_0x122ceb))[_0x0e6c('0x4b')](handleError(_0x10ad3e,null));};exports[_0x0e6c('0x63')]=function(_0x4f0588,_0x39df20,_0x271ffb){var _0x115cbe={};var _0x3f8122={};var _0x111a9d;var _0x2a7dab;return db[_0x0e6c('0x32')][_0x0e6c('0x57')]({'where':{'id':_0x4f0588[_0x0e6c('0x54')]['id']}})[_0x0e6c('0x27')](handleEntityNotFound(_0x39df20,null))[_0x0e6c('0x27')](function(_0x377e89){if(_0x377e89){_0x111a9d=_0x377e89;_0x3f8122['model']=_[_0x0e6c('0x36')](db['Team'][_0x0e6c('0x33')]);_0x3f8122[_0x0e6c('0x37')]=_['keys'](_0x4f0588['query']);_0x3f8122[_0x0e6c('0x38')]=_[_0x0e6c('0x39')](_0x3f8122[_0x0e6c('0x3a')],_0x3f8122[_0x0e6c('0x37')]);_0x115cbe[_0x0e6c('0x3c')]=_[_0x0e6c('0x39')](_0x3f8122['model'],qs[_0x0e6c('0x3b')](_0x4f0588[_0x0e6c('0x37')]['fields']));_0x115cbe[_0x0e6c('0x3c')]=_0x115cbe['attributes'][_0x0e6c('0x3d')]?_0x115cbe[_0x0e6c('0x3c')]:_0x3f8122['model'];_0x115cbe[_0x0e6c('0x64')]=qs[_0x0e6c('0x3f')](_0x4f0588['query'][_0x0e6c('0x3f')]);_0x115cbe['where']=qs['filters'](_['pick'](_0x4f0588[_0x0e6c('0x37')],_0x3f8122[_0x0e6c('0x38')]));if(_0x4f0588[_0x0e6c('0x37')][_0x0e6c('0x42')]){_0x115cbe[_0x0e6c('0x40')]=_[_0x0e6c('0x43')](_0x115cbe[_0x0e6c('0x40')],{'$or':_[_0x0e6c('0x31')](_0x115cbe['attributes'],function(_0x535ded){var _0x47d753={};_0x47d753[_0x535ded]={'$like':'%'+_0x4f0588['query'][_0x0e6c('0x42')]+'%'};return _0x47d753;})});}_0x115cbe=_[_0x0e6c('0x43')]({},_0x115cbe,_0x4f0588[_0x0e6c('0x5b')]);return _0x111a9d[_0x0e6c('0x63')](_0x115cbe);}})['then'](function(_0x4a2892){if(_0x4a2892){_0x2a7dab=_0x4a2892[_0x0e6c('0x3d')];if(!_0x4f0588[_0x0e6c('0x37')][_0x0e6c('0x3e')](_0x0e6c('0x59'))){_0x115cbe[_0x0e6c('0x1f')]=qs[_0x0e6c('0x1f')](_0x4f0588[_0x0e6c('0x37')][_0x0e6c('0x1f')]);_0x115cbe[_0x0e6c('0x1d')]=qs[_0x0e6c('0x1d')](_0x4f0588['query'][_0x0e6c('0x1d')]);}return _0x111a9d['getTeams'](_0x115cbe);}})[_0x0e6c('0x27')](function(_0x1f2afc){if(_0x1f2afc){return _0x1f2afc?{'count':_0x2a7dab,'rows':_0x1f2afc}:null;}})['then'](respondWithResult(_0x39df20,null))[_0x0e6c('0x4b')](handleError(_0x39df20,null));};exports['addTeams']=function(_0x40e2cf,_0x4cbeab,_0x1a3535){var _0x2f4fe7=_0x40e2cf['body'][_0x0e6c('0x65')];return db[_0x0e6c('0x66')]['findAll']({'where':{'id':_0x2f4fe7},'attributes':['id'],'include':[{'model':db[_0x0e6c('0x67')],'as':'Agents','attributes':['id',_0x0e6c('0x2e'),'online',_0x0e6c('0x68'),'interface'],'raw':!![]}]})[_0x0e6c('0x27')](function(_0x4ff9e1){if(_0x4ff9e1){var _0x540c3c=_[_0x0e6c('0x69')](_0x4ff9e1,function(_0x1c42a5){var _0x30e43=_0x1c42a5['get']({'plain':!![]});return _0x30e43[_0x0e6c('0x6a')];});return db[_0x0e6c('0x32')][_0x0e6c('0x4a')]({'where':{'id':_0x40e2cf[_0x0e6c('0x54')]['id']}})['then'](function(_0x4e3e97){return db['sequelize']['transaction'](function(_0x4b5483){return _0x4e3e97['addTeams'](_0x2f4fe7,{'transaction':_0x4b5483})[_0x0e6c('0x27')](function(){return BPromise[_0x0e6c('0x6b')](_0x540c3c,function(_0x2b3f3e){return db['UserSmsQueue'][_0x0e6c('0x6c')]({'where':{'UserId':_0x2b3f3e['id'],'SmsQueueId':_0x40e2cf[_0x0e6c('0x54')]['id']},'transaction':_0x4b5483});});})['then'](function(){_0x540c3c['forEach'](function(_0x3364e3){socket[_0x0e6c('0x6d')](_0x0e6c('0x6e'),{'UserId':_0x3364e3['id'],'SmsQueueId':_0x4e3e97['id']});});});});});}})[_0x0e6c('0x27')](respondWithStatusCode(_0x4cbeab,null))[_0x0e6c('0x4b')](handleError(_0x4cbeab,null));};exports[_0x0e6c('0x6f')]=function(_0x3c2842,_0x218593,_0x4ed6b5){return db[_0x0e6c('0x66')][_0x0e6c('0x47')]({'where':{'id':_0x3c2842[_0x0e6c('0x37')][_0x0e6c('0x65')]},'attributes':['id'],'include':[{'model':db[_0x0e6c('0x67')],'as':'Agents','attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x218593,null))[_0x0e6c('0x27')](function(_0x5282f4){var _0x161bfd=_[_0x0e6c('0x31')](_0x5282f4,'id');var _0x717e1c=[];var _0x517335=[];var _0x38abb2=squel[_0x0e6c('0x70')]();_0x38abb2[_0x0e6c('0x71')](_0x0e6c('0x72'))[_0x0e6c('0x73')](_0x0e6c('0x74'),'tq')['join'](_0x0e6c('0x75'),'ut','ut.TeamId\x20=\x20tq.TeamId')[_0x0e6c('0x40')](_0x0e6c('0x76'),_0x3c2842[_0x0e6c('0x54')]['id']);for(var _0x681f53=0x0;_0x681f53<_0x5282f4[_0x0e6c('0x3d')];_0x681f53+=0x1){let _0xadfda1=_0x5282f4[_0x681f53];for(var _0x161074=0x0;_0x161074<_0xadfda1[_0x0e6c('0x6a')][_0x0e6c('0x3d')];_0x161074+=0x1){let _0x3d247f=_0xadfda1['Agents'][_0x161074];var _0x249d2f=_0x38abb2[_0x0e6c('0x77')]();_0x249d2f[_0x0e6c('0x40')](_0x0e6c('0x78'),_0x3d247f['id']);_0x517335[_0x0e6c('0x79')](db[_0x0e6c('0x7a')][_0x0e6c('0x37')](_0x249d2f[_0x0e6c('0x7b')](),{'type':db[_0x0e6c('0x7a')][_0x0e6c('0x7c')][_0x0e6c('0x7d')]})[_0x0e6c('0x27')](function(_0x530d93){if(_0x530d93[_0x0e6c('0x3d')]===0x1){return _0x3d247f['id'];}else{var _0x2d7f11=_['every'](_[_0x0e6c('0x31')](_0x530d93,'TeamId'),function(_0x2e9264){return _['includes'](_0x161bfd,_0x2e9264);});if(_0x2d7f11){return _0x3d247f['id'];}}}));}}return BPromise[_0x0e6c('0x7e')](_0x517335)[_0x0e6c('0x27')](function(_0x500680){_0x717e1c=_(_0x717e1c)[_0x0e6c('0x7f')](_0x500680)[_0x0e6c('0x80')]()[_0x0e6c('0x81')]();return db[_0x0e6c('0x32')][_0x0e6c('0x4a')]({'where':{'id':_0x3c2842[_0x0e6c('0x54')]['id']}})[_0x0e6c('0x27')](function(_0x42dabf){return db['sequelize'][_0x0e6c('0x82')](function(_0x4d1b1d){return _0x42dabf[_0x0e6c('0x6f')](_0x3c2842[_0x0e6c('0x37')][_0x0e6c('0x65')],{'transaction':_0x4d1b1d})[_0x0e6c('0x27')](function(){if(!_['isEmpty'](_0x717e1c)){return _0x42dabf[_0x0e6c('0x83')](_0x717e1c,{'transaction':_0x4d1b1d});}})[_0x0e6c('0x27')](function(){_0x717e1c[_0x0e6c('0x84')](function(_0x4c1e52){socket[_0x0e6c('0x6d')](_0x0e6c('0x85'),{'UserId':_0x4c1e52,'SmsQueueId':_0x42dabf['id']});});});});});});})['then'](respondWithStatusCode(_0x218593,null))[_0x0e6c('0x4b')](handleError(_0x218593,null));};exports['addAgents']=function(_0x3d3361,_0x1303b4,_0x2a76d5){return db[_0x0e6c('0x32')][_0x0e6c('0x4a')]({'where':{'id':_0x3d3361[_0x0e6c('0x54')]['id']}})[_0x0e6c('0x27')](handleEntityNotFound(_0x1303b4,null))[_0x0e6c('0x27')](function(_0x8d523c){if(_0x8d523c){return _0x8d523c[_0x0e6c('0x86')](_0x3d3361[_0x0e6c('0x4d')]['ids'],_[_0x0e6c('0x87')](_0x3d3361[_0x0e6c('0x4d')],[_0x0e6c('0x65'),'id'])||{})['spread'](function(_0x5c6295){for(var _0x219357=0x0;_0x219357<_0x3d3361[_0x0e6c('0x4d')][_0x0e6c('0x65')][_0x0e6c('0x3d')];_0x219357+=0x1){socket['emit'](_0x0e6c('0x6e'),{'UserId':Number(_0x3d3361[_0x0e6c('0x4d')][_0x0e6c('0x65')][_0x219357]),'SmsQueueId':Number(_0x3d3361['params']['id'])});}return _0x5c6295;});}})[_0x0e6c('0x27')](respondWithResult(_0x1303b4,null))[_0x0e6c('0x4b')](handleError(_0x1303b4,null));};exports[_0x0e6c('0x83')]=function(_0x519606,_0x3bdc75,_0x3799cb){return db[_0x0e6c('0x32')]['find']({'where':{'id':_0x519606[_0x0e6c('0x54')]['id']}})[_0x0e6c('0x27')](handleEntityNotFound(_0x3bdc75,null))['then'](function(_0x337919){if(_0x337919){return _0x337919['removeAgents'](_0x519606[_0x0e6c('0x37')][_0x0e6c('0x65')])[_0x0e6c('0x27')](function(){if(_[_0x0e6c('0x88')](_0x519606['query'][_0x0e6c('0x65')])){for(var _0x590519=0x0;_0x590519<_0x519606[_0x0e6c('0x37')][_0x0e6c('0x65')][_0x0e6c('0x3d')];_0x590519+=0x1){socket[_0x0e6c('0x6d')](_0x0e6c('0x85'),{'UserId':Number(_0x519606[_0x0e6c('0x37')][_0x0e6c('0x65')][_0x590519]),'SmsQueueId':Number(_0x519606[_0x0e6c('0x54')]['id'])});}}else{socket[_0x0e6c('0x6d')](_0x0e6c('0x85'),{'UserId':Number(_0x519606['query']['ids']),'SmsQueueId':Number(_0x519606['params']['id'])});}});}})[_0x0e6c('0x27')](respondWithStatusCode(_0x3bdc75,null))[_0x0e6c('0x4b')](handleError(_0x3bdc75,null));};exports[_0x0e6c('0x89')]=function(_0x5223cd,_0x153741,_0x276269){var _0x321309={};var _0x45f8f8={};var _0x1d8397;var _0x21fef9;return db[_0x0e6c('0x32')][_0x0e6c('0x57')]({'where':{'id':_0x5223cd[_0x0e6c('0x54')]['id']}})[_0x0e6c('0x27')](handleEntityNotFound(_0x153741,null))['then'](function(_0x435984){if(_0x435984){_0x1d8397=_0x435984;_0x45f8f8[_0x0e6c('0x3a')]=_['keys'](db[_0x0e6c('0x67')][_0x0e6c('0x33')]);_0x45f8f8['query']=_[_0x0e6c('0x36')](_0x5223cd[_0x0e6c('0x37')]);_0x45f8f8[_0x0e6c('0x38')]=_[_0x0e6c('0x39')](_0x45f8f8[_0x0e6c('0x3a')],_0x45f8f8[_0x0e6c('0x37')]);_0x321309[_0x0e6c('0x3c')]=_[_0x0e6c('0x39')](_0x45f8f8[_0x0e6c('0x3a')],qs[_0x0e6c('0x3b')](_0x5223cd[_0x0e6c('0x37')][_0x0e6c('0x3b')]));_0x321309[_0x0e6c('0x3c')]=_0x321309[_0x0e6c('0x3c')][_0x0e6c('0x3d')]?_0x321309[_0x0e6c('0x3c')]:_0x45f8f8[_0x0e6c('0x3a')];_0x321309[_0x0e6c('0x64')]=qs['sort'](_0x5223cd['query'][_0x0e6c('0x3f')]);_0x321309['where']=qs[_0x0e6c('0x38')](_['pick'](_0x5223cd[_0x0e6c('0x37')],_0x45f8f8[_0x0e6c('0x38')]));if(_0x5223cd[_0x0e6c('0x37')][_0x0e6c('0x42')]){_0x321309['where']=_[_0x0e6c('0x43')](_0x321309[_0x0e6c('0x40')],{'$or':_['map'](_0x321309['attributes'],function(_0x141b1f){var _0x326606={};_0x326606[_0x141b1f]={'$like':'%'+_0x5223cd[_0x0e6c('0x37')][_0x0e6c('0x42')]+'%'};return _0x326606;})});}_0x321309=_[_0x0e6c('0x43')]({},_0x321309,_0x5223cd[_0x0e6c('0x5b')]);return _0x1d8397[_0x0e6c('0x89')](_0x321309);}})['then'](function(_0x2c970a){if(_0x2c970a){_0x21fef9=_0x2c970a[_0x0e6c('0x3d')];if(!_0x5223cd[_0x0e6c('0x37')][_0x0e6c('0x3e')](_0x0e6c('0x59'))){_0x321309[_0x0e6c('0x1f')]=qs[_0x0e6c('0x1f')](_0x5223cd[_0x0e6c('0x37')][_0x0e6c('0x1f')]);_0x321309[_0x0e6c('0x1d')]=qs['offset'](_0x5223cd[_0x0e6c('0x37')][_0x0e6c('0x1d')]);}return _0x1d8397[_0x0e6c('0x89')](_0x321309);}})[_0x0e6c('0x27')](function(_0x168815){if(_0x168815){return _0x168815?{'count':_0x21fef9,'rows':_0x168815}:null;}})[_0x0e6c('0x27')](respondWithResult(_0x153741,null))[_0x0e6c('0x4b')](handleError(_0x153741,null));};
\ No newline at end of file
index 88dab9e..8dc9479 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf57e=['save','emit','hook','exports','events','../../mysqldb','SmsQueue','setMaxListeners'];(function(_0x413feb,_0x10477f){var _0x40ee88=function(_0x32a3f6){while(--_0x32a3f6){_0x413feb['push'](_0x413feb['shift']());}};_0x40ee88(++_0x10477f);}(_0xf57e,0x1e4));var _0xef57=function(_0x2dba39,_0x246271){_0x2dba39=_0x2dba39-0x0;var _0x2fa940=_0xf57e[_0x2dba39];return _0x2fa940;};'use strict';var EventEmitter=require(_0xef57('0x0'));var SmsQueue=require(_0xef57('0x1'))['db'][_0xef57('0x2')];var SmsQueueEvents=new EventEmitter();SmsQueueEvents[_0xef57('0x3')](0x0);var events={'afterCreate':_0xef57('0x4'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x29c542){return function(_0x11f9c9,_0x3a5be6,_0x1c8e0b){SmsQueueEvents['emit'](_0x29c542+':'+_0x11f9c9['id'],_0x11f9c9);SmsQueueEvents[_0xef57('0x5')](_0x29c542,_0x11f9c9);_0x1c8e0b(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsQueue[_0xef57('0x6')](e,emitEvent(event));}}module[_0xef57('0x7')]=SmsQueueEvents;
\ No newline at end of file
+var _0xdab3=['remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','setMaxListeners','save','update'];(function(_0x186ac2,_0x58de28){var _0x155b7c=function(_0x364483){while(--_0x364483){_0x186ac2['push'](_0x186ac2['shift']());}};_0x155b7c(++_0x58de28);}(_0xdab3,0xeb));var _0x3dab=function(_0x2db677,_0x2372ba){_0x2db677=_0x2db677-0x0;var _0x2e1f9f=_0xdab3[_0x2db677];return _0x2e1f9f;};'use strict';var EventEmitter=require(_0x3dab('0x0'));var SmsQueue=require(_0x3dab('0x1'))['db']['SmsQueue'];var SmsQueueEvents=new EventEmitter();SmsQueueEvents[_0x3dab('0x2')](0x0);var events={'afterCreate':_0x3dab('0x3'),'afterUpdate':_0x3dab('0x4'),'afterDestroy':_0x3dab('0x5')};function emitEvent(_0xa35957){return function(_0x1e357e,_0x5f348a,_0x5c69b7){SmsQueueEvents[_0x3dab('0x6')](_0xa35957+':'+_0x1e357e['id'],_0x1e357e);SmsQueueEvents[_0x3dab('0x6')](_0xa35957,_0x1e357e);_0x5c69b7(null);};}for(var e in events){if(events[_0x3dab('0x7')](e)){var event=events[e];SmsQueue[_0x3dab('0x8')](e,emitEvent(event));}}module[_0x3dab('0x9')]=SmsQueueEvents;
\ No newline at end of file
index eb913e7..91db828 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4398=['api','moment','bluebird','request-promise','../../config/environment','./smsQueue.attributes','define','SmsQueue','lodash','util'];(function(_0x3d8ee5,_0x4b5ae0){var _0x1d8ac7=function(_0x4a6cd6){while(--_0x4a6cd6){_0x3d8ee5['push'](_0x3d8ee5['shift']());}};_0x1d8ac7(++_0x4b5ae0);}(_0x4398,0xee));var _0x8439=function(_0x5b355d,_0x3423d2){_0x5b355d=_0x5b355d-0x0;var _0x56b145=_0x4398[_0x5b355d];return _0x56b145;};'use strict';var _=require(_0x8439('0x0'));var util=require(_0x8439('0x1'));var logger=require('../../config/logger')(_0x8439('0x2'));var moment=require(_0x8439('0x3'));var BPromise=require(_0x8439('0x4'));var rp=require(_0x8439('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x8439('0x6'));var attributes=require(_0x8439('0x7'));module['exports']=function(_0x16be11,_0x294ab1){return _0x16be11[_0x8439('0x8')](_0x8439('0x9'),attributes,{'tableName':'sms_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd1f4=['define','sms_queues','../../config/logger','api','moment','request-promise','path','./smsQueue.attributes'];(function(_0x3fee7e,_0xcaeb28){var _0x200ed5=function(_0x2cec13){while(--_0x2cec13){_0x3fee7e['push'](_0x3fee7e['shift']());}};_0x200ed5(++_0xcaeb28);}(_0xd1f4,0x10a));var _0x4d1f=function(_0x7a6f8e,_0x38c9e1){_0x7a6f8e=_0x7a6f8e-0x0;var _0x2467b7=_0xd1f4[_0x7a6f8e];return _0x2467b7;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x4d1f('0x0'))(_0x4d1f('0x1'));var moment=require(_0x4d1f('0x2'));var BPromise=require('bluebird');var rp=require(_0x4d1f('0x3'));var fs=require('fs');var path=require(_0x4d1f('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x4d1f('0x5'));module['exports']=function(_0x384574,_0x3b2551){return _0x384574[_0x4d1f('0x6')]('SmsQueue',attributes,{'tableName':_0x4d1f('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 20cf515..7e84dd3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x020f=['result','catch','GetSmsQueue','findAll','options','raw','where','attributes','limit','model','include','map','SmsQueue','ShowSmsQueue','lodash','util','moment','randomstring','ioredis','../../config/logger','rpc','jayson/promise','http','defaults','redis','localhost','./smsQueue.socket','request','then','info','SmsQueue,\x20%s,\x20%s','request\x20sent','debug','SmsQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x45a5a3,_0x4bbd82){var _0x5ba07c=function(_0xaedf7f){while(--_0xaedf7f){_0x45a5a3['push'](_0x45a5a3['shift']());}};_0x5ba07c(++_0x4bbd82);}(_0x020f,0xa6));var _0xf020=function(_0x51ae54,_0x346bc3){_0x51ae54=_0x51ae54-0x0;var _0x16e760=_0x020f[_0x51ae54];return _0x16e760;};'use strict';var _=require(_0xf020('0x0'));var util=require(_0xf020('0x1'));var moment=require(_0xf020('0x2'));var BPromise=require('bluebird');var rs=require(_0xf020('0x3'));var fs=require('fs');var Redis=require(_0xf020('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xf020('0x5'))(_0xf020('0x6'));var config=require('../../config/environment');var jayson=require(_0xf020('0x7'));var client=jayson['client'][_0xf020('0x8')]({'port':0x232a});config['redis']=_[_0xf020('0x9')](config[_0xf020('0xa')],{'host':_0xf020('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xf020('0xc'))['register'](socket);function respondWithRpcPromise(_0x1e0c35,_0x1fa459,_0x2e423e){return new BPromise(function(_0x2396fa,_0x1427c6){return client[_0xf020('0xd')](_0x1e0c35,_0x2e423e)[_0xf020('0xe')](function(_0x5a938){logger[_0xf020('0xf')](_0xf020('0x10'),_0x1fa459,_0xf020('0x11'));logger[_0xf020('0x12')](_0xf020('0x13'),_0x1fa459,_0xf020('0x11'),JSON[_0xf020('0x14')](_0x5a938));if(_0x5a938['error']){if(_0x5a938[_0xf020('0x15')][_0xf020('0x16')]===0x1f4){logger[_0xf020('0x15')](_0xf020('0x10'),_0x1fa459,_0x5a938[_0xf020('0x15')][_0xf020('0x17')]);return _0x1427c6(_0x5a938[_0xf020('0x15')]['message']);}logger['error']('SmsQueue,\x20%s,\x20%s',_0x1fa459,_0x5a938[_0xf020('0x15')][_0xf020('0x17')]);return _0x2396fa(_0x5a938[_0xf020('0x15')][_0xf020('0x17')]);}else{logger[_0xf020('0xf')](_0xf020('0x10'),_0x1fa459,'request\x20sent');_0x2396fa(_0x5a938[_0xf020('0x18')][_0xf020('0x17')]);}})[_0xf020('0x19')](function(_0x14c3a5){logger[_0xf020('0x15')]('SmsQueue,\x20%s,\x20%s',_0x1fa459,_0x14c3a5);_0x1427c6(_0x14c3a5);});});}exports[_0xf020('0x1a')]=function(_0x5d2821){var _0x558c31=this;return new Promise(function(_0x5f0991,_0x398dd4){return db['SmsQueue'][_0xf020('0x1b')]({'raw':_0x5d2821['options']?_0x5d2821[_0xf020('0x1c')][_0xf020('0x1d')]===undefined?!![]:![]:!![],'where':_0x5d2821[_0xf020('0x1c')]?_0x5d2821[_0xf020('0x1c')][_0xf020('0x1e')]||null:null,'attributes':_0x5d2821[_0xf020('0x1c')]?_0x5d2821[_0xf020('0x1c')][_0xf020('0x1f')]||null:null,'limit':_0x5d2821['options']?_0x5d2821['options'][_0xf020('0x20')]||null:null,'include':_0x5d2821['options']?_0x5d2821[_0xf020('0x1c')]['include']?_['map'](_0x5d2821['options']['include'],function(_0x3102e4){return{'model':db[_0x3102e4[_0xf020('0x21')]],'as':_0x3102e4['as'],'attributes':_0x3102e4[_0xf020('0x1f')],'include':_0x3102e4[_0xf020('0x22')]?_['map'](_0x3102e4['include'],function(_0x10ffbe){return{'model':db[_0x10ffbe[_0xf020('0x21')]],'as':_0x10ffbe['as'],'attributes':_0x10ffbe[_0xf020('0x1f')],'include':_0x10ffbe[_0xf020('0x22')]?_[_0xf020('0x23')](_0x10ffbe['include'],function(_0x2e27c1){return{'model':db[_0x2e27c1[_0xf020('0x21')]],'as':_0x2e27c1['as'],'attributes':_0x2e27c1[_0xf020('0x1f')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x180508){logger['info'](_0xf020('0x1a'),_0x5d2821);logger['debug'](_0xf020('0x1a'),_0x5d2821,JSON[_0xf020('0x14')](_0x180508));_0x5f0991(_0x180508);})[_0xf020('0x19')](function(_0xbd5a9a){logger['error'](_0xf020('0x1a'),_0xbd5a9a[_0xf020('0x17')],_0x5d2821);_0x398dd4(_0x558c31['error'](0x1f4,_0xbd5a9a[_0xf020('0x17')]));});});};exports['ShowSmsQueue']=function(_0x1bce78){var _0xc5c7b5=this;return new Promise(function(_0x187aee,_0x48c3a0){return db[_0xf020('0x24')]['find']({'raw':_0x1bce78[_0xf020('0x1c')]?_0x1bce78['options'][_0xf020('0x1d')]===undefined?!![]:![]:!![],'where':_0x1bce78['options']?_0x1bce78['options'][_0xf020('0x1e')]||null:null,'attributes':_0x1bce78[_0xf020('0x1c')]?_0x1bce78['options'][_0xf020('0x1f')]||null:null,'include':_0x1bce78[_0xf020('0x1c')]?_0x1bce78[_0xf020('0x1c')]['include']?_[_0xf020('0x23')](_0x1bce78[_0xf020('0x1c')]['include'],function(_0x3238bc){return{'model':db[_0x3238bc['model']],'as':_0x3238bc['as'],'attributes':_0x3238bc[_0xf020('0x1f')],'include':_0x3238bc[_0xf020('0x22')]?_[_0xf020('0x23')](_0x3238bc[_0xf020('0x22')],function(_0x3741ff){return{'model':db[_0x3741ff[_0xf020('0x21')]],'as':_0x3741ff['as'],'attributes':_0x3741ff[_0xf020('0x1f')],'include':_0x3741ff['include']?_[_0xf020('0x23')](_0x3741ff[_0xf020('0x22')],function(_0x3452ba){return{'model':db[_0x3452ba[_0xf020('0x21')]],'as':_0x3452ba['as'],'attributes':_0x3452ba[_0xf020('0x1f')]};}):[]};}):[]};}):[]:[]})[_0xf020('0xe')](function(_0x534492){logger[_0xf020('0xf')](_0xf020('0x25'),_0x1bce78);logger[_0xf020('0x12')](_0xf020('0x25'),_0x1bce78,JSON[_0xf020('0x14')](_0x534492));_0x187aee(_0x534492);})['catch'](function(_0x3dd167){logger[_0xf020('0x15')]('ShowSmsQueue',_0x3dd167['message'],_0x1bce78);_0x48c3a0(_0xc5c7b5[_0xf020('0x15')](0x1f4,_0x3dd167[_0xf020('0x17')]));});});};
\ No newline at end of file
+var _0xa992=['error','code','message','result','catch','GetSmsQueue','SmsQueue','findAll','options','raw','where','attributes','map','include','model','then','ShowSmsQueue','find','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','./smsQueue.socket','register','info','SmsQueue,\x20%s,\x20%s','request\x20sent','debug','SmsQueue,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x49d6e4,_0x1af05e){var _0x3a142f=function(_0xe69ceb){while(--_0xe69ceb){_0x49d6e4['push'](_0x49d6e4['shift']());}};_0x3a142f(++_0x1af05e);}(_0xa992,0x18c));var _0x2a99=function(_0x599117,_0x4b86b7){_0x599117=_0x599117-0x0;var _0x17fb3d=_0xa992[_0x599117];return _0x17fb3d;};'use strict';var _=require(_0x2a99('0x0'));var util=require(_0x2a99('0x1'));var moment=require(_0x2a99('0x2'));var BPromise=require(_0x2a99('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2a99('0x4'));var db=require(_0x2a99('0x5'))['db'];var utils=require(_0x2a99('0x6'));var logger=require(_0x2a99('0x7'))(_0x2a99('0x8'));var config=require(_0x2a99('0x9'));var jayson=require(_0x2a99('0xa'));var client=jayson[_0x2a99('0xb')][_0x2a99('0xc')]({'port':0x232a});config[_0x2a99('0xd')]=_['defaults'](config[_0x2a99('0xd')],{'host':_0x2a99('0xe'),'port':0x18eb});var socket=require(_0x2a99('0xf'))(new Redis(config[_0x2a99('0xd')]));require(_0x2a99('0x10'))[_0x2a99('0x11')](socket);function respondWithRpcPromise(_0x25c114,_0x24e944,_0x2b8f01){return new BPromise(function(_0x1e30f4,_0x375557){return client['request'](_0x25c114,_0x2b8f01)['then'](function(_0x251873){logger[_0x2a99('0x12')](_0x2a99('0x13'),_0x24e944,_0x2a99('0x14'));logger[_0x2a99('0x15')](_0x2a99('0x16'),_0x24e944,'request\x20sent',JSON[_0x2a99('0x17')](_0x251873));if(_0x251873[_0x2a99('0x18')]){if(_0x251873[_0x2a99('0x18')][_0x2a99('0x19')]===0x1f4){logger[_0x2a99('0x18')]('SmsQueue,\x20%s,\x20%s',_0x24e944,_0x251873[_0x2a99('0x18')]['message']);return _0x375557(_0x251873['error'][_0x2a99('0x1a')]);}logger[_0x2a99('0x18')](_0x2a99('0x13'),_0x24e944,_0x251873['error']['message']);return _0x1e30f4(_0x251873['error'][_0x2a99('0x1a')]);}else{logger[_0x2a99('0x12')]('SmsQueue,\x20%s,\x20%s',_0x24e944,_0x2a99('0x14'));_0x1e30f4(_0x251873[_0x2a99('0x1b')][_0x2a99('0x1a')]);}})[_0x2a99('0x1c')](function(_0x5e2a37){logger[_0x2a99('0x18')](_0x2a99('0x13'),_0x24e944,_0x5e2a37);_0x375557(_0x5e2a37);});});}exports[_0x2a99('0x1d')]=function(_0x620ca5){var _0x683e89=this;return new Promise(function(_0x56860d,_0x24fcbf){return db[_0x2a99('0x1e')][_0x2a99('0x1f')]({'raw':_0x620ca5[_0x2a99('0x20')]?_0x620ca5[_0x2a99('0x20')][_0x2a99('0x21')]===undefined?!![]:![]:!![],'where':_0x620ca5[_0x2a99('0x20')]?_0x620ca5[_0x2a99('0x20')][_0x2a99('0x22')]||null:null,'attributes':_0x620ca5[_0x2a99('0x20')]?_0x620ca5['options'][_0x2a99('0x23')]||null:null,'limit':_0x620ca5['options']?_0x620ca5['options']['limit']||null:null,'include':_0x620ca5[_0x2a99('0x20')]?_0x620ca5['options']['include']?_[_0x2a99('0x24')](_0x620ca5['options'][_0x2a99('0x25')],function(_0x228737){return{'model':db[_0x228737[_0x2a99('0x26')]],'as':_0x228737['as'],'attributes':_0x228737[_0x2a99('0x23')],'include':_0x228737[_0x2a99('0x25')]?_[_0x2a99('0x24')](_0x228737[_0x2a99('0x25')],function(_0x3485c8){return{'model':db[_0x3485c8[_0x2a99('0x26')]],'as':_0x3485c8['as'],'attributes':_0x3485c8[_0x2a99('0x23')],'include':_0x3485c8['include']?_[_0x2a99('0x24')](_0x3485c8[_0x2a99('0x25')],function(_0x5ad092){return{'model':db[_0x5ad092[_0x2a99('0x26')]],'as':_0x5ad092['as'],'attributes':_0x5ad092[_0x2a99('0x23')]};}):[]};}):[]};}):[]:[]})[_0x2a99('0x27')](function(_0x5bc6f6){logger[_0x2a99('0x12')](_0x2a99('0x1d'),_0x620ca5);logger[_0x2a99('0x15')](_0x2a99('0x1d'),_0x620ca5,JSON['stringify'](_0x5bc6f6));_0x56860d(_0x5bc6f6);})[_0x2a99('0x1c')](function(_0x1dbffa){logger['error'](_0x2a99('0x1d'),_0x1dbffa[_0x2a99('0x1a')],_0x620ca5);_0x24fcbf(_0x683e89[_0x2a99('0x18')](0x1f4,_0x1dbffa['message']));});});};exports[_0x2a99('0x28')]=function(_0x2d3ed7){var _0xafccad=this;return new Promise(function(_0x4756de,_0x18ad48){return db['SmsQueue'][_0x2a99('0x29')]({'raw':_0x2d3ed7['options']?_0x2d3ed7[_0x2a99('0x20')][_0x2a99('0x21')]===undefined?!![]:![]:!![],'where':_0x2d3ed7[_0x2a99('0x20')]?_0x2d3ed7[_0x2a99('0x20')][_0x2a99('0x22')]||null:null,'attributes':_0x2d3ed7[_0x2a99('0x20')]?_0x2d3ed7[_0x2a99('0x20')][_0x2a99('0x23')]||null:null,'include':_0x2d3ed7[_0x2a99('0x20')]?_0x2d3ed7[_0x2a99('0x20')][_0x2a99('0x25')]?_['map'](_0x2d3ed7[_0x2a99('0x20')][_0x2a99('0x25')],function(_0x26695b){return{'model':db[_0x26695b[_0x2a99('0x26')]],'as':_0x26695b['as'],'attributes':_0x26695b[_0x2a99('0x23')],'include':_0x26695b[_0x2a99('0x25')]?_[_0x2a99('0x24')](_0x26695b[_0x2a99('0x25')],function(_0x24570f){return{'model':db[_0x24570f[_0x2a99('0x26')]],'as':_0x24570f['as'],'attributes':_0x24570f['attributes'],'include':_0x24570f['include']?_['map'](_0x24570f[_0x2a99('0x25')],function(_0x2c25db){return{'model':db[_0x2c25db[_0x2a99('0x26')]],'as':_0x2c25db['as'],'attributes':_0x2c25db[_0x2a99('0x23')]};}):[]};}):[]};}):[]:[]})[_0x2a99('0x27')](function(_0x115054){logger[_0x2a99('0x12')]('ShowSmsQueue',_0x2d3ed7);logger[_0x2a99('0x15')]('ShowSmsQueue',_0x2d3ed7,JSON['stringify'](_0x115054));_0x4756de(_0x115054);})[_0x2a99('0x1c')](function(_0x22cf4b){logger[_0x2a99('0x18')](_0x2a99('0x28'),_0x22cf4b[_0x2a99('0x1a')],_0x2d3ed7);_0x18ad48(_0xafccad[_0x2a99('0x18')](0x1f4,_0x22cf4b[_0x2a99('0x1a')]));});});};
\ No newline at end of file
index 7a2350c..599138b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x03cd=['remove','update','emit','removeListener','length','smsQueue:'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0x03cd,0x17a));var _0xd03c=function(_0x4a2bdc,_0xb5b754){_0x4a2bdc=_0x4a2bdc-0x0;var _0x55c248=_0x03cd[_0x4a2bdc];return _0x55c248;};'use strict';var SmsQueueEvents=require('./smsQueue.events');var events=['save',_0xd03c('0x0'),_0xd03c('0x1')];function createListener(_0x4db3d8,_0x388502){return function(_0x38b81a){_0x388502[_0xd03c('0x2')](_0x4db3d8,_0x38b81a);};}function removeListener(_0x14a669,_0x29faed){return function(){SmsQueueEvents[_0xd03c('0x3')](_0x14a669,_0x29faed);};}exports['register']=function(_0x1ad466){for(var _0x5ca316=0x0,_0x284c9d=events[_0xd03c('0x4')];_0x5ca316<_0x284c9d;_0x5ca316++){var _0x14d519=events[_0x5ca316];var _0x352844=createListener(_0xd03c('0x5')+_0x14d519,_0x1ad466);SmsQueueEvents['on'](_0x14d519,_0x352844);}};
\ No newline at end of file
+var _0xe6de=['register','length','smsQueue:','./smsQueue.events','remove','update','emit','removeListener'];(function(_0x3dd23c,_0x18c32f){var _0x520bf8=function(_0x462f87){while(--_0x462f87){_0x3dd23c['push'](_0x3dd23c['shift']());}};_0x520bf8(++_0x18c32f);}(_0xe6de,0x17b));var _0xee6d=function(_0x51023c,_0x3a1584){_0x51023c=_0x51023c-0x0;var _0x5562e4=_0xe6de[_0x51023c];return _0x5562e4;};'use strict';var SmsQueueEvents=require(_0xee6d('0x0'));var events=['save',_0xee6d('0x1'),_0xee6d('0x2')];function createListener(_0x28c7cc,_0x424319){return function(_0x2e28af){_0x424319[_0xee6d('0x3')](_0x28c7cc,_0x2e28af);};}function removeListener(_0x521efc,_0x25b162){return function(){SmsQueueEvents[_0xee6d('0x4')](_0x521efc,_0x25b162);};}exports[_0xee6d('0x5')]=function(_0x3f7dc8){for(var _0x8dc207=0x0,_0x3fcb17=events[_0xee6d('0x6')];_0x8dc207<_0x3fcb17;_0x8dc207++){var _0x5e4531=events[_0x8dc207];var _0x196c71=createListener(_0xee6d('0x7')+_0x5e4531,_0x3f7dc8);SmsQueueEvents['on'](_0x5e4531,_0x196c71);}};
\ No newline at end of file
index b058a8a..69ad922 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb17=['../../config/environment','./smsQueueReport.controller','get','index','isAuthenticated','/:id','post','create','update','delete','destroy','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x12f816,_0x4708cd){var _0x169f60=function(_0x51c3f7){while(--_0x51c3f7){_0x12f816['push'](_0x12f816['shift']());}};_0x169f60(++_0x4708cd);}(_0xbb17,0x90));var _0x7bb1=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0xbb17[_0x57b54c];return _0x59cc19;};'use strict';var multer=require(_0x7bb1('0x0'));var util=require(_0x7bb1('0x1'));var path=require(_0x7bb1('0x2'));var timeout=require(_0x7bb1('0x3'));var express=require(_0x7bb1('0x4'));var router=express['Router']();var fs_extra=require(_0x7bb1('0x5'));var auth=require(_0x7bb1('0x6'));var interaction=require(_0x7bb1('0x7'));var config=require(_0x7bb1('0x8'));var controller=require(_0x7bb1('0x9'));router[_0x7bb1('0xa')]('/',auth['isAuthenticated'](),controller[_0x7bb1('0xb')]);router[_0x7bb1('0xa')]('/describe',auth[_0x7bb1('0xc')](),controller['describe']);router[_0x7bb1('0xa')](_0x7bb1('0xd'),auth['isAuthenticated'](),controller['show']);router[_0x7bb1('0xe')]('/',auth['isAuthenticated'](),controller[_0x7bb1('0xf')]);router['put'](_0x7bb1('0xd'),auth[_0x7bb1('0xc')](),controller[_0x7bb1('0x10')]);router[_0x7bb1('0x11')]('/:id',auth['isAuthenticated'](),controller[_0x7bb1('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0x98a8=['multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./smsQueueReport.controller','get','isAuthenticated','/:id','show','post','create','put','update','destroy','exports'];(function(_0x3fdcee,_0x17dbfe){var _0x4a5788=function(_0x2030aa){while(--_0x2030aa){_0x3fdcee['push'](_0x3fdcee['shift']());}};_0x4a5788(++_0x17dbfe);}(_0x98a8,0x12c));var _0x898a=function(_0x4cea80,_0xbdc3c9){_0x4cea80=_0x4cea80-0x0;var _0x2f122b=_0x98a8[_0x4cea80];return _0x2f122b;};'use strict';var multer=require(_0x898a('0x0'));var util=require(_0x898a('0x1'));var path=require(_0x898a('0x2'));var timeout=require(_0x898a('0x3'));var express=require(_0x898a('0x4'));var router=express[_0x898a('0x5')]();var fs_extra=require(_0x898a('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x898a('0x7'));var config=require(_0x898a('0x8'));var controller=require(_0x898a('0x9'));router[_0x898a('0xa')]('/',auth[_0x898a('0xb')](),controller['index']);router[_0x898a('0xa')]('/describe',auth[_0x898a('0xb')](),controller['describe']);router[_0x898a('0xa')](_0x898a('0xc'),auth[_0x898a('0xb')](),controller[_0x898a('0xd')]);router[_0x898a('0xe')]('/',auth[_0x898a('0xb')](),controller[_0x898a('0xf')]);router[_0x898a('0x10')](_0x898a('0xc'),auth['isAuthenticated'](),controller[_0x898a('0x11')]);router['delete'](_0x898a('0xc'),auth['isAuthenticated'](),controller[_0x898a('0x12')]);module[_0x898a('0x13')]=router;
\ No newline at end of file
index 4c626f0..1ae95d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x89b8=['moment','sequelize','exports','STRING','DATE'];(function(_0x2d7f0e,_0x3e6fbd){var _0x110b07=function(_0x557b00){while(--_0x557b00){_0x2d7f0e['push'](_0x2d7f0e['shift']());}};_0x110b07(++_0x3e6fbd);}(_0x89b8,0x19f));var _0x889b=function(_0x4f2ed2,_0x561adf){_0x4f2ed2=_0x4f2ed2-0x0;var _0x1e84d8=_0x89b8[_0x4f2ed2];return _0x1e84d8;};'use strict';var moment=require(_0x889b('0x0'));var Sequelize=require(_0x889b('0x1'));module[_0x889b('0x2')]={'uniqueid':{'type':Sequelize[_0x889b('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0x889b('0x3')]},'joinAt':{'type':Sequelize[_0x889b('0x4')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0x889b('0x4')]},'exitAt':{'type':Sequelize[_0x889b('0x4')]},'reason':{'type':Sequelize[_0x889b('0x3')]}};
\ No newline at end of file
+var _0xb4c7=['moment','sequelize','exports','DATE'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0xb4c7,0x19c));var _0x7b4c=function(_0x8f88a8,_0x352823){_0x8f88a8=_0x8f88a8-0x0;var _0x365fd1=_0xb4c7[_0x8f88a8];return _0x365fd1;};'use strict';var moment=require(_0x7b4c('0x0'));var Sequelize=require(_0x7b4c('0x1'));module[_0x7b4c('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0x7b4c('0x3')]},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
index a392d8d..ad0b0c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc60f=['fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','SmsQueueReport','includeAll','findAll','rows','catch','show','params','keys','create','body','find','describe','eml-format','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','api','../../config/utils','../../mysqldb','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','status','sendStatus','error','stack','name','send','map','rawAttributes'];(function(_0x2c3a88,_0x48637e){var _0x4a7925=function(_0x15780f){while(--_0x15780f){_0x2c3a88['push'](_0x2c3a88['shift']());}};_0x4a7925(++_0x48637e);}(_0xc60f,0x15c));var _0xfc60=function(_0xe5b3e1,_0x57a645){_0xe5b3e1=_0xe5b3e1-0x0;var _0x121dad=_0xc60f[_0xe5b3e1];return _0x121dad;};'use strict';var emlformat=require(_0xfc60('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xfc60('0x1'));var jsonpatch=require(_0xfc60('0x2'));var rp=require(_0xfc60('0x3'));var moment=require(_0xfc60('0x4'));var BPromise=require(_0xfc60('0x5'));var Mustache=require(_0xfc60('0x6'));var util=require(_0xfc60('0x7'));var path=require(_0xfc60('0x8'));var sox=require('sox');var csv=require(_0xfc60('0x9'));var ejs=require(_0xfc60('0xa'));var fs=require('fs');var fs_extra=require(_0xfc60('0xb'));var _=require(_0xfc60('0xc'));var squel=require(_0xfc60('0xd'));var crypto=require(_0xfc60('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xfc60('0xf'));var toCsv=require(_0xfc60('0x9'));var querystring=require(_0xfc60('0x10'));var Papa=require('papaparse');var Redis=require(_0xfc60('0x11'));var authService=require(_0xfc60('0x12'));var qs=require(_0xfc60('0x13'));var as=require(_0xfc60('0x14'));var hardwareService=require(_0xfc60('0x15'));var logger=require('../../config/logger')(_0xfc60('0x16'));var utils=require(_0xfc60('0x17'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xfc60('0x18'))['db'];function respondWithStatusCode(_0x18ef36,_0x1ff89a){_0x1ff89a=_0x1ff89a||0xcc;return function(_0x11047b){if(_0x11047b){return _0x18ef36['sendStatus'](_0x1ff89a);}return _0x18ef36['status'](_0x1ff89a)[_0xfc60('0x19')]();};}function respondWithResult(_0x46e2c9,_0x500b67){_0x500b67=_0x500b67||0xc8;return function(_0x17dee7){if(_0x17dee7){return _0x46e2c9['status'](_0x500b67)[_0xfc60('0x1a')](_0x17dee7);}};}function respondWithFilteredResult(_0x4f41b7,_0x119b82){return function(_0xa55e5e){if(_0xa55e5e){var _0x1e204b=typeof _0x119b82[_0xfc60('0x1b')]===_0xfc60('0x1c')&&typeof _0x119b82['limit']===_0xfc60('0x1c');var _0x52371=_0xa55e5e['count'];var _0x3e9ff0=_0x1e204b?0x0:_0x119b82[_0xfc60('0x1b')];var _0xe743ff=_0x1e204b?_0xa55e5e[_0xfc60('0x1d')]:_0x119b82[_0xfc60('0x1b')]+_0x119b82[_0xfc60('0x1e')];var _0x257429;if(_0xe743ff>=_0x52371){_0xe743ff=_0x52371;_0x257429=0xc8;}else{_0x257429=0xce;}_0x4f41b7['status'](_0x257429);return _0x4f41b7[_0xfc60('0x1f')](_0xfc60('0x20'),_0x3e9ff0+'-'+_0xe743ff+'/'+_0x52371)['json'](_0xa55e5e);}return null;};}function patchUpdates(_0x1af9bb){return function(_0x13395f){try{jsonpatch[_0xfc60('0x21')](_0x13395f,_0x1af9bb,!![]);}catch(_0x52b15b){return BPromise[_0xfc60('0x22')](_0x52b15b);}return _0x13395f[_0xfc60('0x23')]();};}function saveUpdates(_0x336219,_0x26d904){return function(_0x821783){if(_0x821783){return _0x821783[_0xfc60('0x24')](_0x336219)[_0xfc60('0x25')](function(_0x2d2289){return _0x2d2289;});}return null;};}function removeEntity(_0x32e7ff,_0x32faa5){return function(_0x1b0e6b){if(_0x1b0e6b){return _0x1b0e6b[_0xfc60('0x26')]()[_0xfc60('0x25')](function(){_0x32e7ff[_0xfc60('0x27')](0xcc)[_0xfc60('0x19')]();});}};}function handleEntityNotFound(_0x20f543,_0x2c4d0a){return function(_0x5188c5){if(!_0x5188c5){_0x20f543[_0xfc60('0x28')](0x194);}return _0x5188c5;};}function handleError(_0x57094c,_0x10d137){_0x10d137=_0x10d137||0x1f4;return function(_0x3d487a){logger[_0xfc60('0x29')](_0x3d487a[_0xfc60('0x2a')]);if(_0x3d487a['name']){delete _0x3d487a[_0xfc60('0x2b')];}_0x57094c[_0xfc60('0x27')](_0x10d137)[_0xfc60('0x2c')](_0x3d487a);};}exports['index']=function(_0x59bc4b,_0x12a682){var _0x54cd63={},_0x26d8ca={},_0x4def70={'count':0x0,'rows':[]};var _0x3dd39f=_[_0xfc60('0x2d')](db['SmsQueueReport'][_0xfc60('0x2e')],function(_0x20843a){return{'name':_0x20843a[_0xfc60('0x2f')],'type':_0x20843a[_0xfc60('0x30')][_0xfc60('0x31')]};});_0x26d8ca[_0xfc60('0x32')]=_[_0xfc60('0x2d')](_0x3dd39f,_0xfc60('0x2b'));_0x26d8ca['query']=_['keys'](_0x59bc4b[_0xfc60('0x33')]);_0x26d8ca[_0xfc60('0x34')]=_[_0xfc60('0x35')](_0x26d8ca[_0xfc60('0x32')],_0x26d8ca['query']);_0x54cd63[_0xfc60('0x36')]=_['intersection'](_0x26d8ca[_0xfc60('0x32')],qs['fields'](_0x59bc4b[_0xfc60('0x33')][_0xfc60('0x37')]));_0x54cd63[_0xfc60('0x36')]=_0x54cd63['attributes'][_0xfc60('0x38')]?_0x54cd63[_0xfc60('0x36')]:_0x26d8ca['model'];if(!_0x59bc4b[_0xfc60('0x33')][_0xfc60('0x39')](_0xfc60('0x3a'))){_0x54cd63['limit']=qs[_0xfc60('0x1e')](_0x59bc4b['query']['limit']);_0x54cd63['offset']=qs[_0xfc60('0x1b')](_0x59bc4b[_0xfc60('0x33')][_0xfc60('0x1b')]);}_0x54cd63[_0xfc60('0x3b')]=qs[_0xfc60('0x3c')](_0x59bc4b[_0xfc60('0x33')][_0xfc60('0x3c')]);_0x54cd63[_0xfc60('0x3d')]=qs[_0xfc60('0x34')](_[_0xfc60('0x3e')](_0x59bc4b[_0xfc60('0x33')],_0x26d8ca[_0xfc60('0x34')]),_0x3dd39f);if(_0x59bc4b['query']['filter']){_0x54cd63['where']=_[_0xfc60('0x3f')](_0x54cd63['where'],{'$or':_['map'](_0x3dd39f,function(_0x30cedd){if(_0x30cedd[_0xfc60('0x30')]!==_0xfc60('0x40')){var _0x468e0b={};_0x468e0b[_0x30cedd[_0xfc60('0x2b')]]={'$like':'%'+_0x59bc4b['query'][_0xfc60('0x41')]+'%'};return _0x468e0b;}})});}_0x54cd63=_[_0xfc60('0x3f')]({},_0x54cd63,_0x59bc4b[_0xfc60('0x42')]);var _0x1e24e3={'where':_0x54cd63[_0xfc60('0x3d')]};return db[_0xfc60('0x43')][_0xfc60('0x1d')](_0x1e24e3)[_0xfc60('0x25')](function(_0x5358e3){_0x4def70[_0xfc60('0x1d')]=_0x5358e3;if(_0x59bc4b[_0xfc60('0x33')][_0xfc60('0x44')]){_0x54cd63['include']=[{'all':!![]}];}return db[_0xfc60('0x43')][_0xfc60('0x45')](_0x54cd63);})[_0xfc60('0x25')](function(_0x1a2875){_0x4def70[_0xfc60('0x46')]=_0x1a2875;return _0x4def70;})[_0xfc60('0x25')](respondWithFilteredResult(_0x12a682,_0x54cd63))[_0xfc60('0x47')](handleError(_0x12a682,null));};exports[_0xfc60('0x48')]=function(_0x2b7989,_0xf89cdf){var _0x140f3e={'raw':!![],'where':{'id':_0x2b7989[_0xfc60('0x49')]['id']}},_0x626c1b={};_0x626c1b[_0xfc60('0x32')]=_[_0xfc60('0x4a')](db['SmsQueueReport'][_0xfc60('0x2e')]);_0x626c1b[_0xfc60('0x33')]=_[_0xfc60('0x4a')](_0x2b7989[_0xfc60('0x33')]);_0x626c1b[_0xfc60('0x34')]=_[_0xfc60('0x35')](_0x626c1b[_0xfc60('0x32')],_0x626c1b[_0xfc60('0x33')]);_0x140f3e[_0xfc60('0x36')]=_[_0xfc60('0x35')](_0x626c1b[_0xfc60('0x32')],qs[_0xfc60('0x37')](_0x2b7989['query'][_0xfc60('0x37')]));_0x140f3e[_0xfc60('0x36')]=_0x140f3e[_0xfc60('0x36')]['length']?_0x140f3e[_0xfc60('0x36')]:_0x626c1b[_0xfc60('0x32')];if(_0x2b7989[_0xfc60('0x33')]['includeAll']){_0x140f3e['include']=[{'all':!![]}];}_0x140f3e=_[_0xfc60('0x3f')]({},_0x140f3e,_0x2b7989[_0xfc60('0x42')]);return db['SmsQueueReport']['find'](_0x140f3e)[_0xfc60('0x25')](handleEntityNotFound(_0xf89cdf,null))['then'](respondWithResult(_0xf89cdf,null))[_0xfc60('0x47')](handleError(_0xf89cdf,null));};exports[_0xfc60('0x4b')]=function(_0xca568f,_0xbf89d1){return db[_0xfc60('0x43')][_0xfc60('0x4b')](_0xca568f['body'],{})[_0xfc60('0x25')](respondWithResult(_0xbf89d1,0xc9))[_0xfc60('0x47')](handleError(_0xbf89d1,null));};exports[_0xfc60('0x24')]=function(_0x231056,_0xf0e98){if(_0x231056[_0xfc60('0x4c')]['id']){delete _0x231056['body']['id'];}return db[_0xfc60('0x43')][_0xfc60('0x4d')]({'where':{'id':_0x231056['params']['id']}})['then'](handleEntityNotFound(_0xf0e98,null))['then'](saveUpdates(_0x231056['body'],null))[_0xfc60('0x25')](respondWithResult(_0xf0e98,null))[_0xfc60('0x47')](handleError(_0xf0e98,null));};exports[_0xfc60('0x26')]=function(_0x5b73e8,_0x317cfc){return db[_0xfc60('0x43')][_0xfc60('0x4d')]({'where':{'id':_0x5b73e8['params']['id']}})[_0xfc60('0x25')](handleEntityNotFound(_0x317cfc,null))['then'](removeEntity(_0x317cfc,null))[_0xfc60('0x47')](handleError(_0x317cfc,null));};exports['describe']=function(_0x4c139e,_0xd29df6){return db[_0xfc60('0x43')][_0xfc60('0x4e')]()['then'](respondWithResult(_0xd29df6,null))[_0xfc60('0x47')](handleError(_0xd29df6,null));};
\ No newline at end of file
+var _0x23b2=['end','json','offset','undefined','count','limit','set','Content-Range','reject','save','update','then','destroy','error','name','send','index','SmsQueueReport','rawAttributes','fieldName','key','model','map','query','keys','filters','intersection','attributes','fields','length','sort','pick','filter','merge','where','type','VIRTUAL','options','includeAll','include','findAll','catch','show','params','find','body','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status'];(function(_0x34843e,_0x4c4224){var _0x598f7f=function(_0x12a44c){while(--_0x12a44c){_0x34843e['push'](_0x34843e['shift']());}};_0x598f7f(++_0x4c4224);}(_0x23b2,0x79));var _0x223b=function(_0xaafaa9,_0x5a6a12){_0xaafaa9=_0xaafaa9-0x0;var _0x1c302a=_0x23b2[_0xaafaa9];return _0x1c302a;};'use strict';var emlformat=require(_0x223b('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x223b('0x1'));var jsonpatch=require(_0x223b('0x2'));var rp=require(_0x223b('0x3'));var moment=require(_0x223b('0x4'));var BPromise=require(_0x223b('0x5'));var Mustache=require(_0x223b('0x6'));var util=require(_0x223b('0x7'));var path=require(_0x223b('0x8'));var sox=require(_0x223b('0x9'));var csv=require(_0x223b('0xa'));var ejs=require(_0x223b('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x223b('0xc'));var squel=require('squel');var crypto=require(_0x223b('0xd'));var jsforce=require(_0x223b('0xe'));var deskjs=require(_0x223b('0xf'));var toCsv=require(_0x223b('0xa'));var querystring=require('querystring');var Papa=require(_0x223b('0x10'));var Redis=require(_0x223b('0x11'));var authService=require(_0x223b('0x12'));var qs=require(_0x223b('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x223b('0x14'));var logger=require('../../config/logger')(_0x223b('0x15'));var utils=require(_0x223b('0x16'));var config=require(_0x223b('0x17'));var licenseUtil=require(_0x223b('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1a8adb,_0x2aaa97){_0x2aaa97=_0x2aaa97||0xcc;return function(_0x5b1b4e){if(_0x5b1b4e){return _0x1a8adb[_0x223b('0x19')](_0x2aaa97);}return _0x1a8adb[_0x223b('0x1a')](_0x2aaa97)[_0x223b('0x1b')]();};}function respondWithResult(_0x3baffc,_0x237d1f){_0x237d1f=_0x237d1f||0xc8;return function(_0x1ee30e){if(_0x1ee30e){return _0x3baffc[_0x223b('0x1a')](_0x237d1f)[_0x223b('0x1c')](_0x1ee30e);}};}function respondWithFilteredResult(_0x474447,_0x33afd7){return function(_0x54b68c){if(_0x54b68c){var _0x2330e9=typeof _0x33afd7[_0x223b('0x1d')]===_0x223b('0x1e')&&typeof _0x33afd7['limit']===_0x223b('0x1e');var _0x1e8fe6=_0x54b68c[_0x223b('0x1f')];var _0x18b66d=_0x2330e9?0x0:_0x33afd7[_0x223b('0x1d')];var _0x56976f=_0x2330e9?_0x54b68c[_0x223b('0x1f')]:_0x33afd7['offset']+_0x33afd7[_0x223b('0x20')];var _0x9fe95d;if(_0x56976f>=_0x1e8fe6){_0x56976f=_0x1e8fe6;_0x9fe95d=0xc8;}else{_0x9fe95d=0xce;}_0x474447[_0x223b('0x1a')](_0x9fe95d);return _0x474447[_0x223b('0x21')](_0x223b('0x22'),_0x18b66d+'-'+_0x56976f+'/'+_0x1e8fe6)[_0x223b('0x1c')](_0x54b68c);}return null;};}function patchUpdates(_0x40700e){return function(_0x391b7c){try{jsonpatch['apply'](_0x391b7c,_0x40700e,!![]);}catch(_0x3ae496){return BPromise[_0x223b('0x23')](_0x3ae496);}return _0x391b7c[_0x223b('0x24')]();};}function saveUpdates(_0x352fbb,_0x14e85d){return function(_0x47b7ee){if(_0x47b7ee){return _0x47b7ee[_0x223b('0x25')](_0x352fbb)[_0x223b('0x26')](function(_0x132fc7){return _0x132fc7;});}return null;};}function removeEntity(_0x46e03a,_0x3e037c){return function(_0xdc41f8){if(_0xdc41f8){return _0xdc41f8[_0x223b('0x27')]()['then'](function(){_0x46e03a[_0x223b('0x1a')](0xcc)[_0x223b('0x1b')]();});}};}function handleEntityNotFound(_0x268a74,_0x3fa071){return function(_0x566629){if(!_0x566629){_0x268a74['sendStatus'](0x194);}return _0x566629;};}function handleError(_0x4ae15a,_0x4ef644){_0x4ef644=_0x4ef644||0x1f4;return function(_0x327bd9){logger[_0x223b('0x28')](_0x327bd9['stack']);if(_0x327bd9['name']){delete _0x327bd9[_0x223b('0x29')];}_0x4ae15a['status'](_0x4ef644)[_0x223b('0x2a')](_0x327bd9);};}exports[_0x223b('0x2b')]=function(_0x394615,_0x13f174){var _0x660f5f={},_0x372512={},_0x5898a6={'count':0x0,'rows':[]};var _0x3c007d=_['map'](db[_0x223b('0x2c')][_0x223b('0x2d')],function(_0x2a3594){return{'name':_0x2a3594[_0x223b('0x2e')],'type':_0x2a3594['type'][_0x223b('0x2f')]};});_0x372512[_0x223b('0x30')]=_[_0x223b('0x31')](_0x3c007d,_0x223b('0x29'));_0x372512[_0x223b('0x32')]=_[_0x223b('0x33')](_0x394615[_0x223b('0x32')]);_0x372512[_0x223b('0x34')]=_[_0x223b('0x35')](_0x372512['model'],_0x372512['query']);_0x660f5f[_0x223b('0x36')]=_[_0x223b('0x35')](_0x372512[_0x223b('0x30')],qs[_0x223b('0x37')](_0x394615[_0x223b('0x32')][_0x223b('0x37')]));_0x660f5f[_0x223b('0x36')]=_0x660f5f['attributes'][_0x223b('0x38')]?_0x660f5f[_0x223b('0x36')]:_0x372512[_0x223b('0x30')];if(!_0x394615['query']['hasOwnProperty']('nolimit')){_0x660f5f[_0x223b('0x20')]=qs[_0x223b('0x20')](_0x394615[_0x223b('0x32')]['limit']);_0x660f5f['offset']=qs['offset'](_0x394615[_0x223b('0x32')][_0x223b('0x1d')]);}_0x660f5f['order']=qs['sort'](_0x394615[_0x223b('0x32')][_0x223b('0x39')]);_0x660f5f['where']=qs['filters'](_[_0x223b('0x3a')](_0x394615[_0x223b('0x32')],_0x372512['filters']),_0x3c007d);if(_0x394615['query'][_0x223b('0x3b')]){_0x660f5f['where']=_[_0x223b('0x3c')](_0x660f5f[_0x223b('0x3d')],{'$or':_['map'](_0x3c007d,function(_0x10e99e){if(_0x10e99e[_0x223b('0x3e')]!==_0x223b('0x3f')){var _0x3a0ef4={};_0x3a0ef4[_0x10e99e[_0x223b('0x29')]]={'$like':'%'+_0x394615[_0x223b('0x32')]['filter']+'%'};return _0x3a0ef4;}})});}_0x660f5f=_[_0x223b('0x3c')]({},_0x660f5f,_0x394615[_0x223b('0x40')]);var _0x51bde4={'where':_0x660f5f['where']};return db[_0x223b('0x2c')][_0x223b('0x1f')](_0x51bde4)[_0x223b('0x26')](function(_0x33a936){_0x5898a6[_0x223b('0x1f')]=_0x33a936;if(_0x394615[_0x223b('0x32')][_0x223b('0x41')]){_0x660f5f[_0x223b('0x42')]=[{'all':!![]}];}return db[_0x223b('0x2c')][_0x223b('0x43')](_0x660f5f);})[_0x223b('0x26')](function(_0x78c8){_0x5898a6['rows']=_0x78c8;return _0x5898a6;})[_0x223b('0x26')](respondWithFilteredResult(_0x13f174,_0x660f5f))[_0x223b('0x44')](handleError(_0x13f174,null));};exports[_0x223b('0x45')]=function(_0x15e406,_0x2672a0){var _0x3361f2={'raw':!![],'where':{'id':_0x15e406[_0x223b('0x46')]['id']}},_0x298e0a={};_0x298e0a[_0x223b('0x30')]=_['keys'](db['SmsQueueReport'][_0x223b('0x2d')]);_0x298e0a[_0x223b('0x32')]=_[_0x223b('0x33')](_0x15e406[_0x223b('0x32')]);_0x298e0a['filters']=_[_0x223b('0x35')](_0x298e0a[_0x223b('0x30')],_0x298e0a[_0x223b('0x32')]);_0x3361f2[_0x223b('0x36')]=_[_0x223b('0x35')](_0x298e0a[_0x223b('0x30')],qs[_0x223b('0x37')](_0x15e406[_0x223b('0x32')]['fields']));_0x3361f2[_0x223b('0x36')]=_0x3361f2['attributes']['length']?_0x3361f2[_0x223b('0x36')]:_0x298e0a[_0x223b('0x30')];if(_0x15e406[_0x223b('0x32')][_0x223b('0x41')]){_0x3361f2['include']=[{'all':!![]}];}_0x3361f2=_[_0x223b('0x3c')]({},_0x3361f2,_0x15e406[_0x223b('0x40')]);return db[_0x223b('0x2c')][_0x223b('0x47')](_0x3361f2)[_0x223b('0x26')](handleEntityNotFound(_0x2672a0,null))['then'](respondWithResult(_0x2672a0,null))[_0x223b('0x44')](handleError(_0x2672a0,null));};exports['create']=function(_0x403d3a,_0x99c289){return db[_0x223b('0x2c')]['create'](_0x403d3a[_0x223b('0x48')],{})[_0x223b('0x26')](respondWithResult(_0x99c289,0xc9))[_0x223b('0x44')](handleError(_0x99c289,null));};exports[_0x223b('0x25')]=function(_0x413f93,_0x23b7b1){if(_0x413f93['body']['id']){delete _0x413f93[_0x223b('0x48')]['id'];}return db[_0x223b('0x2c')]['find']({'where':{'id':_0x413f93[_0x223b('0x46')]['id']}})[_0x223b('0x26')](handleEntityNotFound(_0x23b7b1,null))[_0x223b('0x26')](saveUpdates(_0x413f93[_0x223b('0x48')],null))[_0x223b('0x26')](respondWithResult(_0x23b7b1,null))['catch'](handleError(_0x23b7b1,null));};exports[_0x223b('0x27')]=function(_0x26202d,_0x3df8cd){return db[_0x223b('0x2c')][_0x223b('0x47')]({'where':{'id':_0x26202d[_0x223b('0x46')]['id']}})[_0x223b('0x26')](handleEntityNotFound(_0x3df8cd,null))[_0x223b('0x26')](removeEntity(_0x3df8cd,null))['catch'](handleError(_0x3df8cd,null));};exports[_0x223b('0x49')]=function(_0x4af262,_0x41d57d){return db[_0x223b('0x2c')][_0x223b('0x49')]()[_0x223b('0x26')](respondWithResult(_0x41d57d,null))[_0x223b('0x44')](handleError(_0x41d57d,null));};
\ No newline at end of file
index cac6a8a..2ba0c35 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['define','SmsQueueReport','uniqueid','lodash','util','../../config/logger','bluebird','path','rimraf','../../config/environment','./smsQueueReport.attributes','exports'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4154a6,_0x2c0b8e){_0x4154a6=_0x4154a6-0x0;var _0x3b2786=_0xa9e0[_0x4154a6];return _0x3b2786;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var logger=require(_0x0a9e('0x2'))('api');var moment=require('moment');var BPromise=require(_0x0a9e('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0a9e('0x4'));var rimraf=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var attributes=require(_0x0a9e('0x7'));module[_0x0a9e('0x8')]=function(_0x57b080,_0x219af0){return _0x57b080[_0x0a9e('0x9')](_0x0a9e('0xa'),attributes,{'tableName':'report_sms_queue','paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x0a9e('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xe706=['../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./smsQueueReport.attributes','exports','define','SmsQueueReport','report_sms_queue','uniqueid','lodash','util'];(function(_0x15f6a0,_0x5b34fc){var _0x10f8c7=function(_0x5b7d95){while(--_0x5b7d95){_0x15f6a0['push'](_0x15f6a0['shift']());}};_0x10f8c7(++_0x5b34fc);}(_0xe706,0xa3));var _0x6e70=function(_0x1dd7eb,_0x13b76a){_0x1dd7eb=_0x1dd7eb-0x0;var _0x3e6f1b=_0xe706[_0x1dd7eb];return _0x3e6f1b;};'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'));module[_0x6e70('0xa')]=function(_0x1b0389,_0x4381d1){return _0x1b0389[_0x6e70('0xb')](_0x6e70('0xc'),attributes,{'tableName':_0x6e70('0xd'),'paranoid':![],'indexes':[{'name':_0x6e70('0xe'),'fields':[_0x6e70('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index 1454f89..c18ea82 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x635f=['code','message','catch','CreateSmsQueueReport','create','body','options','raw','info','SmsQueueReport','update','attributes','UpdateSmsQueueReport','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','request','then','SmsQueueReport,\x20%s,\x20%s','debug','SmsQueueReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x10e653,_0x59f1cc){var _0x328dfd=function(_0x2bc428){while(--_0x2bc428){_0x10e653['push'](_0x10e653['shift']());}};_0x328dfd(++_0x59f1cc);}(_0x635f,0x12d));var _0xf635=function(_0x149b7e,_0x62de3b){_0x149b7e=_0x149b7e-0x0;var _0x188b71=_0x635f[_0x149b7e];return _0x188b71;};'use strict';var _=require(_0xf635('0x0'));var util=require(_0xf635('0x1'));var moment=require(_0xf635('0x2'));var BPromise=require(_0xf635('0x3'));var rs=require(_0xf635('0x4'));var fs=require('fs');var Redis=require(_0xf635('0x5'));var db=require(_0xf635('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xf635('0x7'))(_0xf635('0x8'));var config=require(_0xf635('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xf635('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0xef424c,_0x1fa878,_0x11e397){return new BPromise(function(_0x23066f,_0xdab9cc){return client[_0xf635('0xb')](_0xef424c,_0x11e397)[_0xf635('0xc')](function(_0x193615){logger['info'](_0xf635('0xd'),_0x1fa878,'request\x20sent');logger[_0xf635('0xe')](_0xf635('0xf'),_0x1fa878,_0xf635('0x10'),JSON[_0xf635('0x11')](_0x193615));if(_0x193615[_0xf635('0x12')]){if(_0x193615[_0xf635('0x12')][_0xf635('0x13')]===0x1f4){logger[_0xf635('0x12')](_0xf635('0xd'),_0x1fa878,_0x193615['error'][_0xf635('0x14')]);return _0xdab9cc(_0x193615[_0xf635('0x12')][_0xf635('0x14')]);}logger[_0xf635('0x12')](_0xf635('0xd'),_0x1fa878,_0x193615[_0xf635('0x12')][_0xf635('0x14')]);return _0x23066f(_0x193615[_0xf635('0x12')][_0xf635('0x14')]);}else{logger['info']('SmsQueueReport,\x20%s,\x20%s',_0x1fa878,_0xf635('0x10'));_0x23066f(_0x193615['result'][_0xf635('0x14')]);}})[_0xf635('0x15')](function(_0xeb37c1){logger[_0xf635('0x12')]('SmsQueueReport,\x20%s,\x20%s',_0x1fa878,_0xeb37c1);_0xdab9cc(_0xeb37c1);});});}exports[_0xf635('0x16')]=function(_0x4ddf21){var _0x24f691=this;return new Promise(function(_0x5d7785,_0x5c9fe8){return db['SmsQueueReport'][_0xf635('0x17')](_0x4ddf21[_0xf635('0x18')],{'raw':_0x4ddf21['options']?_0x4ddf21[_0xf635('0x19')][_0xf635('0x1a')]===undefined?!![]:![]:!![]})[_0xf635('0xc')](function(_0x650f13){logger[_0xf635('0x1b')](_0xf635('0x16'),_0x4ddf21);logger[_0xf635('0xe')](_0xf635('0x16'),_0x4ddf21,JSON[_0xf635('0x11')](_0x650f13));_0x5d7785(_0x650f13);})[_0xf635('0x15')](function(_0x1ea035){logger[_0xf635('0x12')](_0xf635('0x16'),_0x1ea035[_0xf635('0x14')],_0x4ddf21);_0x5c9fe8(_0x24f691[_0xf635('0x12')](0x1f4,_0x1ea035['message']));});});};exports['UpdateSmsQueueReport']=function(_0x60cf0e){var _0x5b6f26=this;return new Promise(function(_0x408a51,_0x2b3f1f){return db[_0xf635('0x1c')][_0xf635('0x1d')](_0x60cf0e[_0xf635('0x18')],{'raw':_0x60cf0e[_0xf635('0x19')]?_0x60cf0e[_0xf635('0x19')][_0xf635('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x60cf0e[_0xf635('0x19')]?_0x60cf0e[_0xf635('0x19')]['where']||null:null,'attributes':_0x60cf0e['options']?_0x60cf0e[_0xf635('0x19')][_0xf635('0x1e')]||null:null,'limit':_0x60cf0e[_0xf635('0x19')]?_0x60cf0e[_0xf635('0x19')]['limit']||null:null})[_0xf635('0xc')](function(_0x412499){logger[_0xf635('0x1b')]('UpdateSmsQueueReport',_0x60cf0e);logger[_0xf635('0xe')](_0xf635('0x1f'),_0x60cf0e,JSON[_0xf635('0x11')](_0x412499));_0x408a51(_0x412499);})[_0xf635('0x15')](function(_0x50faef){logger['error'](_0xf635('0x1f'),_0x50faef[_0xf635('0x14')],_0x60cf0e);_0x2b3f1f(_0x5b6f26[_0xf635('0x12')](0x1f4,_0x50faef['message']));});});};
\ No newline at end of file
+var _0xcb3d=['util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','then','info','SmsQueueReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','CreateSmsQueueReport','SmsQueueReport','create','body','options','raw','catch','UpdateSmsQueueReport','update','attributes','limit','lodash'];(function(_0x1b0a6a,_0x54f6c3){var _0x1ac3d9=function(_0x48d1f6){while(--_0x48d1f6){_0x1b0a6a['push'](_0x1b0a6a['shift']());}};_0x1ac3d9(++_0x54f6c3);}(_0xcb3d,0x1ee));var _0xdcb3=function(_0x34f164,_0x1d9946){_0x34f164=_0x34f164-0x0;var _0xaa1b7b=_0xcb3d[_0x34f164];return _0xaa1b7b;};'use strict';var _=require(_0xdcb3('0x0'));var util=require(_0xdcb3('0x1'));var moment=require(_0xdcb3('0x2'));var BPromise=require(_0xdcb3('0x3'));var rs=require(_0xdcb3('0x4'));var fs=require('fs');var Redis=require(_0xdcb3('0x5'));var db=require(_0xdcb3('0x6'))['db'];var utils=require(_0xdcb3('0x7'));var logger=require(_0xdcb3('0x8'))(_0xdcb3('0x9'));var config=require(_0xdcb3('0xa'));var jayson=require('jayson/promise');var client=jayson['client'][_0xdcb3('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x12e993,_0x354895,_0x21b451){return new BPromise(function(_0x3fe298,_0x58709f){return client[_0xdcb3('0xc')](_0x12e993,_0x21b451)[_0xdcb3('0xd')](function(_0x4ef168){logger[_0xdcb3('0xe')](_0xdcb3('0xf'),_0x354895,_0xdcb3('0x10'));logger[_0xdcb3('0x11')]('SmsQueueReport,\x20%s,\x20%s,\x20%s',_0x354895,_0xdcb3('0x10'),JSON[_0xdcb3('0x12')](_0x4ef168));if(_0x4ef168[_0xdcb3('0x13')]){if(_0x4ef168[_0xdcb3('0x13')][_0xdcb3('0x14')]===0x1f4){logger[_0xdcb3('0x13')]('SmsQueueReport,\x20%s,\x20%s',_0x354895,_0x4ef168[_0xdcb3('0x13')]['message']);return _0x58709f(_0x4ef168[_0xdcb3('0x13')][_0xdcb3('0x15')]);}logger[_0xdcb3('0x13')]('SmsQueueReport,\x20%s,\x20%s',_0x354895,_0x4ef168[_0xdcb3('0x13')][_0xdcb3('0x15')]);return _0x3fe298(_0x4ef168[_0xdcb3('0x13')]['message']);}else{logger[_0xdcb3('0xe')]('SmsQueueReport,\x20%s,\x20%s',_0x354895,_0xdcb3('0x10'));_0x3fe298(_0x4ef168['result'][_0xdcb3('0x15')]);}})['catch'](function(_0x2970d1){logger['error'](_0xdcb3('0xf'),_0x354895,_0x2970d1);_0x58709f(_0x2970d1);});});}exports[_0xdcb3('0x16')]=function(_0x2fa6bd){var _0x5297da=this;return new Promise(function(_0x46a2fe,_0x56f6e4){return db[_0xdcb3('0x17')][_0xdcb3('0x18')](_0x2fa6bd[_0xdcb3('0x19')],{'raw':_0x2fa6bd[_0xdcb3('0x1a')]?_0x2fa6bd[_0xdcb3('0x1a')][_0xdcb3('0x1b')]===undefined?!![]:![]:!![]})[_0xdcb3('0xd')](function(_0x23b67e){logger[_0xdcb3('0xe')](_0xdcb3('0x16'),_0x2fa6bd);logger[_0xdcb3('0x11')]('CreateSmsQueueReport',_0x2fa6bd,JSON[_0xdcb3('0x12')](_0x23b67e));_0x46a2fe(_0x23b67e);})[_0xdcb3('0x1c')](function(_0x92cf1c){logger[_0xdcb3('0x13')](_0xdcb3('0x16'),_0x92cf1c[_0xdcb3('0x15')],_0x2fa6bd);_0x56f6e4(_0x5297da[_0xdcb3('0x13')](0x1f4,_0x92cf1c[_0xdcb3('0x15')]));});});};exports[_0xdcb3('0x1d')]=function(_0x35f39f){var _0x3410e4=this;return new Promise(function(_0x586d27,_0xd611dc){return db[_0xdcb3('0x17')][_0xdcb3('0x1e')](_0x35f39f[_0xdcb3('0x19')],{'raw':_0x35f39f['options']?_0x35f39f[_0xdcb3('0x1a')][_0xdcb3('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x35f39f[_0xdcb3('0x1a')]?_0x35f39f[_0xdcb3('0x1a')]['where']||null:null,'attributes':_0x35f39f[_0xdcb3('0x1a')]?_0x35f39f[_0xdcb3('0x1a')][_0xdcb3('0x1f')]||null:null,'limit':_0x35f39f['options']?_0x35f39f[_0xdcb3('0x1a')][_0xdcb3('0x20')]||null:null})[_0xdcb3('0xd')](function(_0x98864e){logger[_0xdcb3('0xe')](_0xdcb3('0x1d'),_0x35f39f);logger[_0xdcb3('0x11')]('UpdateSmsQueueReport',_0x35f39f,JSON[_0xdcb3('0x12')](_0x98864e));_0x586d27(_0x98864e);})[_0xdcb3('0x1c')](function(_0x4390e2){logger[_0xdcb3('0x13')](_0xdcb3('0x1d'),_0x4390e2[_0xdcb3('0x15')],_0x35f39f);_0xd611dc(_0x3410e4[_0xdcb3('0x13')](0x1f4,_0x4390e2[_0xdcb3('0x15')]));});});};
\ No newline at end of file
index 1e9ab50..342f563 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x425d=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./smsTransferReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','put','update','delete','destroy','exports','multer','path','connect-timeout'];(function(_0x10abfe,_0x7a9ad6){var _0x473c1b=function(_0x392758){while(--_0x392758){_0x10abfe['push'](_0x10abfe['shift']());}};_0x473c1b(++_0x7a9ad6);}(_0x425d,0x1e0));var _0xd425=function(_0x3e3748,_0x118608){_0x3e3748=_0x3e3748-0x0;var _0x467996=_0x425d[_0x3e3748];return _0x467996;};'use strict';var multer=require(_0xd425('0x0'));var util=require('util');var path=require(_0xd425('0x1'));var timeout=require(_0xd425('0x2'));var express=require(_0xd425('0x3'));var router=express[_0xd425('0x4')]();var fs_extra=require(_0xd425('0x5'));var auth=require(_0xd425('0x6'));var interaction=require(_0xd425('0x7'));var config=require('../../config/environment');var controller=require(_0xd425('0x8'));router[_0xd425('0x9')]('/',auth[_0xd425('0xa')](),controller[_0xd425('0xb')]);router[_0xd425('0x9')](_0xd425('0xc'),auth['isAuthenticated'](),controller[_0xd425('0xd')]);router[_0xd425('0x9')](_0xd425('0xe'),auth[_0xd425('0xa')](),controller[_0xd425('0xf')]);router[_0xd425('0x10')]('/',auth[_0xd425('0xa')](),controller[_0xd425('0x11')]);router[_0xd425('0x12')](_0xd425('0xe'),auth[_0xd425('0xa')](),controller[_0xd425('0x13')]);router[_0xd425('0x14')](_0xd425('0xe'),auth[_0xd425('0xa')](),controller[_0xd425('0x15')]);module[_0xd425('0x16')]=router;
\ No newline at end of file
+var _0x8ece=['describe','post','create','put','/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsTransferReport.controller','isAuthenticated','index','get','/describe'];(function(_0x4da4ea,_0x2875d3){var _0x3cc102=function(_0x5549c2){while(--_0x5549c2){_0x4da4ea['push'](_0x4da4ea['shift']());}};_0x3cc102(++_0x2875d3);}(_0x8ece,0x195));var _0xe8ec=function(_0x240860,_0x20c04d){_0x240860=_0x240860-0x0;var _0x40e288=_0x8ece[_0x240860];return _0x40e288;};'use strict';var multer=require(_0xe8ec('0x0'));var util=require(_0xe8ec('0x1'));var path=require(_0xe8ec('0x2'));var timeout=require(_0xe8ec('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xe8ec('0x4'));var auth=require(_0xe8ec('0x5'));var interaction=require(_0xe8ec('0x6'));var config=require(_0xe8ec('0x7'));var controller=require(_0xe8ec('0x8'));router['get']('/',auth[_0xe8ec('0x9')](),controller[_0xe8ec('0xa')]);router[_0xe8ec('0xb')](_0xe8ec('0xc'),auth[_0xe8ec('0x9')](),controller[_0xe8ec('0xd')]);router[_0xe8ec('0xb')]('/:id',auth[_0xe8ec('0x9')](),controller['show']);router[_0xe8ec('0xe')]('/',auth['isAuthenticated'](),controller[_0xe8ec('0xf')]);router[_0xe8ec('0x10')](_0xe8ec('0x11'),auth[_0xe8ec('0x9')](),controller[_0xe8ec('0x12')]);router[_0xe8ec('0x13')](_0xe8ec('0x11'),auth[_0xe8ec('0x9')](),controller[_0xe8ec('0x14')]);module[_0xe8ec('0x15')]=router;
\ No newline at end of file
index 385b18b..a52b8cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4eb=['NOW','moment','account','queue','DATE'];(function(_0x3618ea,_0x8c8578){var _0x3cbe77=function(_0x51c002){while(--_0x51c002){_0x3618ea['push'](_0x3618ea['shift']());}};_0x3cbe77(++_0x8c8578);}(_0xf4eb,0xec));var _0xbf4e=function(_0x3dba6f,_0x35592f){_0x3dba6f=_0x3dba6f-0x0;var _0x34b95d=_0xf4eb[_0x3dba6f];return _0x34b95d;};'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 _0xedd9=['account','agent','queue','NOW','sequelize','exports','STRING','ENUM'];(function(_0xa13004,_0x406d37){var _0xacf068=function(_0x1d9ae7){while(--_0x1d9ae7){_0xa13004['push'](_0xa13004['shift']());}};_0xacf068(++_0x406d37);}(_0xedd9,0xfc));var _0x9edd=function(_0x265300,_0xeb0366){_0x265300=_0x265300-0x0;var _0x5e2cfc=_0xedd9[_0x265300];return _0x5e2cfc;};'use strict';var moment=require('moment');var Sequelize=require(_0x9edd('0x0'));module[_0x9edd('0x1')]={'uniqueid':{'type':Sequelize[_0x9edd('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x9edd('0x3')](_0x9edd('0x4'),_0x9edd('0x5'),_0x9edd('0x6')),'allowNull':![],'defaultValue':_0x9edd('0x6')},'transferredAt':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':Sequelize[_0x9edd('0x7')]}};
\ No newline at end of file
index 9240fd9..6b9f7d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ada=['util','path','to-csv','ejs','squel','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','end','json','offset','undefined','limit','count','set','apply','save','update','then','error','stack','name','send','index','rawAttributes','fieldName','type','key','model','map','query','keys','intersection','attributes','fields','hasOwnProperty','sort','filters','pick','filter','where','merge','VIRTUAL','SmsTransferReport','include','findAll','catch','show','length','includeAll','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache'];(function(_0x25ec20,_0x6fd010){var _0x432c5=function(_0x29e714){while(--_0x29e714){_0x25ec20['push'](_0x25ec20['shift']());}};_0x432c5(++_0x6fd010);}(_0x4ada,0x1e9));var _0xa4ad=function(_0x3b26f2,_0x2e2ebb){_0x3b26f2=_0x3b26f2-0x0;var _0x587521=_0x4ada[_0x3b26f2];return _0x587521;};'use strict';var emlformat=require(_0xa4ad('0x0'));var rimraf=require(_0xa4ad('0x1'));var zipdir=require(_0xa4ad('0x2'));var jsonpatch=require(_0xa4ad('0x3'));var rp=require(_0xa4ad('0x4'));var moment=require(_0xa4ad('0x5'));var BPromise=require(_0xa4ad('0x6'));var Mustache=require(_0xa4ad('0x7'));var util=require(_0xa4ad('0x8'));var path=require(_0xa4ad('0x9'));var sox=require('sox');var csv=require(_0xa4ad('0xa'));var ejs=require(_0xa4ad('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xa4ad('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xa4ad('0xd'));var toCsv=require(_0xa4ad('0xa'));var querystring=require(_0xa4ad('0xe'));var Papa=require(_0xa4ad('0xf'));var Redis=require(_0xa4ad('0x10'));var authService=require(_0xa4ad('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xa4ad('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xa4ad('0x13'))(_0xa4ad('0x14'));var utils=require(_0xa4ad('0x15'));var config=require(_0xa4ad('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xa4ad('0x17'))['db'];function respondWithStatusCode(_0x57b907,_0x1ec77e){_0x1ec77e=_0x1ec77e||0xcc;return function(_0x5c2948){if(_0x5c2948){return _0x57b907['sendStatus'](_0x1ec77e);}return _0x57b907[_0xa4ad('0x18')](_0x1ec77e)[_0xa4ad('0x19')]();};}function respondWithResult(_0x4a5c45,_0x51123b){_0x51123b=_0x51123b||0xc8;return function(_0x5710be){if(_0x5710be){return _0x4a5c45['status'](_0x51123b)[_0xa4ad('0x1a')](_0x5710be);}};}function respondWithFilteredResult(_0x3d9a37,_0x46043a){return function(_0x1adeef){if(_0x1adeef){var _0xb4af32=typeof _0x46043a[_0xa4ad('0x1b')]===_0xa4ad('0x1c')&&typeof _0x46043a[_0xa4ad('0x1d')]===_0xa4ad('0x1c');var _0x339a26=_0x1adeef[_0xa4ad('0x1e')];var _0x4c88eb=_0xb4af32?0x0:_0x46043a[_0xa4ad('0x1b')];var _0x51eabe=_0xb4af32?_0x1adeef[_0xa4ad('0x1e')]:_0x46043a[_0xa4ad('0x1b')]+_0x46043a['limit'];var _0xed11eb;if(_0x51eabe>=_0x339a26){_0x51eabe=_0x339a26;_0xed11eb=0xc8;}else{_0xed11eb=0xce;}_0x3d9a37[_0xa4ad('0x18')](_0xed11eb);return _0x3d9a37[_0xa4ad('0x1f')]('Content-Range',_0x4c88eb+'-'+_0x51eabe+'/'+_0x339a26)['json'](_0x1adeef);}return null;};}function patchUpdates(_0x4ae3fc){return function(_0x197a8a){try{jsonpatch[_0xa4ad('0x20')](_0x197a8a,_0x4ae3fc,!![]);}catch(_0x3c32b0){return BPromise['reject'](_0x3c32b0);}return _0x197a8a[_0xa4ad('0x21')]();};}function saveUpdates(_0x4b9d28,_0x4baa1f){return function(_0x597b39){if(_0x597b39){return _0x597b39[_0xa4ad('0x22')](_0x4b9d28)[_0xa4ad('0x23')](function(_0x145bf7){return _0x145bf7;});}return null;};}function removeEntity(_0x3e247e,_0x455dbf){return function(_0x220d43){if(_0x220d43){return _0x220d43['destroy']()[_0xa4ad('0x23')](function(){_0x3e247e[_0xa4ad('0x18')](0xcc)[_0xa4ad('0x19')]();});}};}function handleEntityNotFound(_0x248019,_0x4db64b){return function(_0x1f0e74){if(!_0x1f0e74){_0x248019['sendStatus'](0x194);}return _0x1f0e74;};}function handleError(_0x1451a4,_0x3af1a7){_0x3af1a7=_0x3af1a7||0x1f4;return function(_0x24b125){logger[_0xa4ad('0x24')](_0x24b125[_0xa4ad('0x25')]);if(_0x24b125[_0xa4ad('0x26')]){delete _0x24b125['name'];}_0x1451a4[_0xa4ad('0x18')](_0x3af1a7)[_0xa4ad('0x27')](_0x24b125);};}exports[_0xa4ad('0x28')]=function(_0x3a68e0,_0x3795f3){var _0x4a8805={},_0x22bab6={},_0x2f04db={'count':0x0,'rows':[]};var _0x45afde=_['map'](db['SmsTransferReport'][_0xa4ad('0x29')],function(_0x4745f9){return{'name':_0x4745f9[_0xa4ad('0x2a')],'type':_0x4745f9[_0xa4ad('0x2b')][_0xa4ad('0x2c')]};});_0x22bab6[_0xa4ad('0x2d')]=_[_0xa4ad('0x2e')](_0x45afde,_0xa4ad('0x26'));_0x22bab6[_0xa4ad('0x2f')]=_[_0xa4ad('0x30')](_0x3a68e0['query']);_0x22bab6['filters']=_[_0xa4ad('0x31')](_0x22bab6['model'],_0x22bab6[_0xa4ad('0x2f')]);_0x4a8805[_0xa4ad('0x32')]=_['intersection'](_0x22bab6[_0xa4ad('0x2d')],qs['fields'](_0x3a68e0['query'][_0xa4ad('0x33')]));_0x4a8805[_0xa4ad('0x32')]=_0x4a8805[_0xa4ad('0x32')]['length']?_0x4a8805['attributes']:_0x22bab6['model'];if(!_0x3a68e0['query'][_0xa4ad('0x34')]('nolimit')){_0x4a8805[_0xa4ad('0x1d')]=qs['limit'](_0x3a68e0[_0xa4ad('0x2f')][_0xa4ad('0x1d')]);_0x4a8805[_0xa4ad('0x1b')]=qs[_0xa4ad('0x1b')](_0x3a68e0[_0xa4ad('0x2f')]['offset']);}_0x4a8805['order']=qs[_0xa4ad('0x35')](_0x3a68e0[_0xa4ad('0x2f')]['sort']);_0x4a8805['where']=qs[_0xa4ad('0x36')](_[_0xa4ad('0x37')](_0x3a68e0[_0xa4ad('0x2f')],_0x22bab6[_0xa4ad('0x36')]),_0x45afde);if(_0x3a68e0[_0xa4ad('0x2f')][_0xa4ad('0x38')]){_0x4a8805[_0xa4ad('0x39')]=_[_0xa4ad('0x3a')](_0x4a8805['where'],{'$or':_[_0xa4ad('0x2e')](_0x45afde,function(_0x4bfc00){if(_0x4bfc00['type']!==_0xa4ad('0x3b')){var _0x134035={};_0x134035[_0x4bfc00[_0xa4ad('0x26')]]={'$like':'%'+_0x3a68e0[_0xa4ad('0x2f')][_0xa4ad('0x38')]+'%'};return _0x134035;}})});}_0x4a8805=_[_0xa4ad('0x3a')]({},_0x4a8805,_0x3a68e0['options']);var _0x42a5d9={'where':_0x4a8805[_0xa4ad('0x39')]};return db[_0xa4ad('0x3c')][_0xa4ad('0x1e')](_0x42a5d9)[_0xa4ad('0x23')](function(_0xdf5454){_0x2f04db['count']=_0xdf5454;if(_0x3a68e0[_0xa4ad('0x2f')]['includeAll']){_0x4a8805[_0xa4ad('0x3d')]=[{'all':!![]}];}return db['SmsTransferReport'][_0xa4ad('0x3e')](_0x4a8805);})[_0xa4ad('0x23')](function(_0xc794f5){_0x2f04db['rows']=_0xc794f5;return _0x2f04db;})['then'](respondWithFilteredResult(_0x3795f3,_0x4a8805))[_0xa4ad('0x3f')](handleError(_0x3795f3,null));};exports[_0xa4ad('0x40')]=function(_0x3f9fe6,_0x48cc0d){var _0x54e58c={'raw':!![],'where':{'id':_0x3f9fe6['params']['id']}},_0x2b99b8={};_0x2b99b8[_0xa4ad('0x2d')]=_[_0xa4ad('0x30')](db[_0xa4ad('0x3c')]['rawAttributes']);_0x2b99b8[_0xa4ad('0x2f')]=_[_0xa4ad('0x30')](_0x3f9fe6[_0xa4ad('0x2f')]);_0x2b99b8[_0xa4ad('0x36')]=_[_0xa4ad('0x31')](_0x2b99b8[_0xa4ad('0x2d')],_0x2b99b8[_0xa4ad('0x2f')]);_0x54e58c[_0xa4ad('0x32')]=_[_0xa4ad('0x31')](_0x2b99b8[_0xa4ad('0x2d')],qs[_0xa4ad('0x33')](_0x3f9fe6[_0xa4ad('0x2f')][_0xa4ad('0x33')]));_0x54e58c[_0xa4ad('0x32')]=_0x54e58c[_0xa4ad('0x32')][_0xa4ad('0x41')]?_0x54e58c['attributes']:_0x2b99b8['model'];if(_0x3f9fe6[_0xa4ad('0x2f')][_0xa4ad('0x42')]){_0x54e58c[_0xa4ad('0x3d')]=[{'all':!![]}];}_0x54e58c=_[_0xa4ad('0x3a')]({},_0x54e58c,_0x3f9fe6['options']);return db['SmsTransferReport'][_0xa4ad('0x43')](_0x54e58c)[_0xa4ad('0x23')](handleEntityNotFound(_0x48cc0d,null))[_0xa4ad('0x23')](respondWithResult(_0x48cc0d,null))[_0xa4ad('0x3f')](handleError(_0x48cc0d,null));};exports[_0xa4ad('0x44')]=function(_0x4c914e,_0x4b53d8){return db['SmsTransferReport'][_0xa4ad('0x44')](_0x4c914e[_0xa4ad('0x45')],{})[_0xa4ad('0x23')](respondWithResult(_0x4b53d8,0xc9))[_0xa4ad('0x3f')](handleError(_0x4b53d8,null));};exports[_0xa4ad('0x22')]=function(_0x4b2635,_0x2842f4){if(_0x4b2635['body']['id']){delete _0x4b2635['body']['id'];}return db[_0xa4ad('0x3c')]['find']({'where':{'id':_0x4b2635['params']['id']}})[_0xa4ad('0x23')](handleEntityNotFound(_0x2842f4,null))['then'](saveUpdates(_0x4b2635[_0xa4ad('0x45')],null))[_0xa4ad('0x23')](respondWithResult(_0x2842f4,null))['catch'](handleError(_0x2842f4,null));};exports['destroy']=function(_0x5bc279,_0x1a5c08){return db['SmsTransferReport']['find']({'where':{'id':_0x5bc279['params']['id']}})['then'](handleEntityNotFound(_0x1a5c08,null))['then'](removeEntity(_0x1a5c08,null))['catch'](handleError(_0x1a5c08,null));};exports['describe']=function(_0x3b1026,_0x3dc8ef){return db[_0xa4ad('0x3c')][_0xa4ad('0x46')]()[_0xa4ad('0x23')](respondWithResult(_0x3dc8ef,null))[_0xa4ad('0x3f')](handleError(_0x3dc8ef,null));};
\ No newline at end of file
+var _0x2793=['filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','options','findAll','rows','params','length','find','catch','create','body','destroy','describe','eml-format','rimraf','fast-json-patch','request-promise','mustache','util','path','sox','to-csv','squel','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','status','offset','undefined','limit','count','Content-Range','json','save','update','then','sendStatus','error','stack','name','map','SmsTransferReport','rawAttributes','type','key','model','query','keys'];(function(_0x45ed5e,_0x4c38e3){var _0x13f3ad=function(_0x3260e0){while(--_0x3260e0){_0x45ed5e['push'](_0x45ed5e['shift']());}};_0x13f3ad(++_0x4c38e3);}(_0x2793,0xe0));var _0x3279=function(_0x415f7e,_0x4630b6){_0x415f7e=_0x415f7e-0x0;var _0x311ff4=_0x2793[_0x415f7e];return _0x311ff4;};'use strict';var emlformat=require(_0x3279('0x0'));var rimraf=require(_0x3279('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x3279('0x2'));var rp=require(_0x3279('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x3279('0x4'));var util=require(_0x3279('0x5'));var path=require(_0x3279('0x6'));var sox=require(_0x3279('0x7'));var csv=require(_0x3279('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x3279('0x9'));var crypto=require('crypto');var jsforce=require(_0x3279('0xa'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x3279('0xb'));var Papa=require(_0x3279('0xc'));var Redis=require(_0x3279('0xd'));var authService=require(_0x3279('0xe'));var qs=require(_0x3279('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3279('0x10'));var logger=require(_0x3279('0x11'))(_0x3279('0x12'));var utils=require(_0x3279('0x13'));var config=require(_0x3279('0x14'));var licenseUtil=require(_0x3279('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x45649e,_0x1d6f61){_0x1d6f61=_0x1d6f61||0xcc;return function(_0x10aadc){if(_0x10aadc){return _0x45649e['sendStatus'](_0x1d6f61);}return _0x45649e[_0x3279('0x16')](_0x1d6f61)['end']();};}function respondWithResult(_0x38814b,_0x3282fe){_0x3282fe=_0x3282fe||0xc8;return function(_0x2490cb){if(_0x2490cb){return _0x38814b[_0x3279('0x16')](_0x3282fe)['json'](_0x2490cb);}};}function respondWithFilteredResult(_0x3e0fef,_0x4ef703){return function(_0x4d635f){if(_0x4d635f){var _0x45d7f8=typeof _0x4ef703[_0x3279('0x17')]===_0x3279('0x18')&&typeof _0x4ef703[_0x3279('0x19')]===_0x3279('0x18');var _0x6a9ff2=_0x4d635f['count'];var _0x5638bb=_0x45d7f8?0x0:_0x4ef703[_0x3279('0x17')];var _0x59f363=_0x45d7f8?_0x4d635f[_0x3279('0x1a')]:_0x4ef703['offset']+_0x4ef703[_0x3279('0x19')];var _0x192d8b;if(_0x59f363>=_0x6a9ff2){_0x59f363=_0x6a9ff2;_0x192d8b=0xc8;}else{_0x192d8b=0xce;}_0x3e0fef[_0x3279('0x16')](_0x192d8b);return _0x3e0fef['set'](_0x3279('0x1b'),_0x5638bb+'-'+_0x59f363+'/'+_0x6a9ff2)[_0x3279('0x1c')](_0x4d635f);}return null;};}function patchUpdates(_0x5811f1){return function(_0x514205){try{jsonpatch['apply'](_0x514205,_0x5811f1,!![]);}catch(_0xf00468){return BPromise['reject'](_0xf00468);}return _0x514205[_0x3279('0x1d')]();};}function saveUpdates(_0x1ade3e,_0x172210){return function(_0x19616e){if(_0x19616e){return _0x19616e[_0x3279('0x1e')](_0x1ade3e)[_0x3279('0x1f')](function(_0x19ac17){return _0x19ac17;});}return null;};}function removeEntity(_0x123f7,_0x11b75c){return function(_0x4bfea3){if(_0x4bfea3){return _0x4bfea3['destroy']()[_0x3279('0x1f')](function(){_0x123f7[_0x3279('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5cdb64,_0xb06912){return function(_0x2be815){if(!_0x2be815){_0x5cdb64[_0x3279('0x20')](0x194);}return _0x2be815;};}function handleError(_0x21284c,_0x2280e1){_0x2280e1=_0x2280e1||0x1f4;return function(_0x34c71a){logger[_0x3279('0x21')](_0x34c71a[_0x3279('0x22')]);if(_0x34c71a[_0x3279('0x23')]){delete _0x34c71a[_0x3279('0x23')];}_0x21284c[_0x3279('0x16')](_0x2280e1)['send'](_0x34c71a);};}exports['index']=function(_0x2e3df6,_0x459762){var _0x1657ca={},_0x9bd7bf={},_0x38c64d={'count':0x0,'rows':[]};var _0x40d692=_[_0x3279('0x24')](db[_0x3279('0x25')][_0x3279('0x26')],function(_0x1d0281){return{'name':_0x1d0281['fieldName'],'type':_0x1d0281[_0x3279('0x27')][_0x3279('0x28')]};});_0x9bd7bf[_0x3279('0x29')]=_[_0x3279('0x24')](_0x40d692,'name');_0x9bd7bf[_0x3279('0x2a')]=_[_0x3279('0x2b')](_0x2e3df6[_0x3279('0x2a')]);_0x9bd7bf[_0x3279('0x2c')]=_[_0x3279('0x2d')](_0x9bd7bf[_0x3279('0x29')],_0x9bd7bf[_0x3279('0x2a')]);_0x1657ca['attributes']=_[_0x3279('0x2d')](_0x9bd7bf[_0x3279('0x29')],qs[_0x3279('0x2e')](_0x2e3df6[_0x3279('0x2a')]['fields']));_0x1657ca[_0x3279('0x2f')]=_0x1657ca[_0x3279('0x2f')]['length']?_0x1657ca['attributes']:_0x9bd7bf[_0x3279('0x29')];if(!_0x2e3df6[_0x3279('0x2a')][_0x3279('0x30')](_0x3279('0x31'))){_0x1657ca[_0x3279('0x19')]=qs[_0x3279('0x19')](_0x2e3df6[_0x3279('0x2a')]['limit']);_0x1657ca[_0x3279('0x17')]=qs[_0x3279('0x17')](_0x2e3df6['query'][_0x3279('0x17')]);}_0x1657ca[_0x3279('0x32')]=qs[_0x3279('0x33')](_0x2e3df6['query'][_0x3279('0x33')]);_0x1657ca[_0x3279('0x34')]=qs[_0x3279('0x2c')](_[_0x3279('0x35')](_0x2e3df6[_0x3279('0x2a')],_0x9bd7bf['filters']),_0x40d692);if(_0x2e3df6['query']['filter']){_0x1657ca[_0x3279('0x34')]=_[_0x3279('0x36')](_0x1657ca[_0x3279('0x34')],{'$or':_['map'](_0x40d692,function(_0xd5d156){if(_0xd5d156[_0x3279('0x27')]!==_0x3279('0x37')){var _0x41a4bd={};_0x41a4bd[_0xd5d156['name']]={'$like':'%'+_0x2e3df6['query']['filter']+'%'};return _0x41a4bd;}})});}_0x1657ca=_[_0x3279('0x36')]({},_0x1657ca,_0x2e3df6[_0x3279('0x38')]);var _0x1736e5={'where':_0x1657ca[_0x3279('0x34')]};return db['SmsTransferReport']['count'](_0x1736e5)['then'](function(_0x4b07cd){_0x38c64d[_0x3279('0x1a')]=_0x4b07cd;if(_0x2e3df6['query']['includeAll']){_0x1657ca['include']=[{'all':!![]}];}return db[_0x3279('0x25')][_0x3279('0x39')](_0x1657ca);})[_0x3279('0x1f')](function(_0x3837e1){_0x38c64d[_0x3279('0x3a')]=_0x3837e1;return _0x38c64d;})['then'](respondWithFilteredResult(_0x459762,_0x1657ca))['catch'](handleError(_0x459762,null));};exports['show']=function(_0x347fce,_0x494580){var _0x2b0756={'raw':!![],'where':{'id':_0x347fce[_0x3279('0x3b')]['id']}},_0x34a817={};_0x34a817[_0x3279('0x29')]=_['keys'](db[_0x3279('0x25')]['rawAttributes']);_0x34a817[_0x3279('0x2a')]=_[_0x3279('0x2b')](_0x347fce['query']);_0x34a817['filters']=_['intersection'](_0x34a817[_0x3279('0x29')],_0x34a817[_0x3279('0x2a')]);_0x2b0756['attributes']=_['intersection'](_0x34a817[_0x3279('0x29')],qs['fields'](_0x347fce[_0x3279('0x2a')][_0x3279('0x2e')]));_0x2b0756[_0x3279('0x2f')]=_0x2b0756[_0x3279('0x2f')][_0x3279('0x3c')]?_0x2b0756[_0x3279('0x2f')]:_0x34a817[_0x3279('0x29')];if(_0x347fce[_0x3279('0x2a')]['includeAll']){_0x2b0756['include']=[{'all':!![]}];}_0x2b0756=_[_0x3279('0x36')]({},_0x2b0756,_0x347fce[_0x3279('0x38')]);return db[_0x3279('0x25')][_0x3279('0x3d')](_0x2b0756)[_0x3279('0x1f')](handleEntityNotFound(_0x494580,null))[_0x3279('0x1f')](respondWithResult(_0x494580,null))[_0x3279('0x3e')](handleError(_0x494580,null));};exports[_0x3279('0x3f')]=function(_0x3d7246,_0x46f305){return db[_0x3279('0x25')][_0x3279('0x3f')](_0x3d7246[_0x3279('0x40')],{})[_0x3279('0x1f')](respondWithResult(_0x46f305,0xc9))[_0x3279('0x3e')](handleError(_0x46f305,null));};exports[_0x3279('0x1e')]=function(_0x1b9aa7,_0xe95e32){if(_0x1b9aa7['body']['id']){delete _0x1b9aa7[_0x3279('0x40')]['id'];}return db['SmsTransferReport'][_0x3279('0x3d')]({'where':{'id':_0x1b9aa7[_0x3279('0x3b')]['id']}})[_0x3279('0x1f')](handleEntityNotFound(_0xe95e32,null))[_0x3279('0x1f')](saveUpdates(_0x1b9aa7[_0x3279('0x40')],null))['then'](respondWithResult(_0xe95e32,null))[_0x3279('0x3e')](handleError(_0xe95e32,null));};exports[_0x3279('0x41')]=function(_0x57f469,_0x42e533){return db[_0x3279('0x25')][_0x3279('0x3d')]({'where':{'id':_0x57f469[_0x3279('0x3b')]['id']}})[_0x3279('0x1f')](handleEntityNotFound(_0x42e533,null))[_0x3279('0x1f')](removeEntity(_0x42e533,null))['catch'](handleError(_0x42e533,null));};exports['describe']=function(_0x13d4c5,_0x27e1f4){return db['SmsTransferReport'][_0x3279('0x42')]()[_0x3279('0x1f')](respondWithResult(_0x27e1f4,null))[_0x3279('0x3e')](handleError(_0x27e1f4,null));};
\ No newline at end of file
index 91dd133..12a8596 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x955d=['define','SmsTransferReport','report_sms_transfer','uniqueid','lodash','api','moment','bluebird','request-promise','path','../../config/environment','./smsTransferReport.attributes','exports'];(function(_0x128976,_0xa1735b){var _0x211258=function(_0x5e52c1){while(--_0x5e52c1){_0x128976['push'](_0x128976['shift']());}};_0x211258(++_0xa1735b);}(_0x955d,0x1d8));var _0xd955=function(_0x4f908c,_0x4ca65f){_0x4f908c=_0x4f908c-0x0;var _0x515fca=_0x955d[_0x4f908c];return _0x515fca;};'use strict';var _=require(_0xd955('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xd955('0x1'));var moment=require(_0xd955('0x2'));var BPromise=require(_0xd955('0x3'));var rp=require(_0xd955('0x4'));var fs=require('fs');var path=require(_0xd955('0x5'));var rimraf=require('rimraf');var config=require(_0xd955('0x6'));var attributes=require(_0xd955('0x7'));module[_0xd955('0x8')]=function(_0x21b820,_0x17f240){return _0x21b820[_0xd955('0x9')](_0xd955('0xa'),attributes,{'tableName':_0xd955('0xb'),'paranoid':![],'indexes':[{'name':_0xd955('0xc'),'fields':[_0xd955('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x1459=['./smsTransferReport.attributes','define','SmsTransferReport','uniqueid','lodash','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment'];(function(_0x49ec21,_0x5c9233){var _0x4e5771=function(_0x1770bd){while(--_0x1770bd){_0x49ec21['push'](_0x49ec21['shift']());}};_0x4e5771(++_0x5c9233);}(_0x1459,0xe8));var _0x9145=function(_0xa1d1f0,_0x5837fc){_0xa1d1f0=_0xa1d1f0-0x0;var _0x2a1cb8=_0x1459[_0xa1d1f0];return _0x2a1cb8;};'use strict';var _=require(_0x9145('0x0'));var util=require('util');var logger=require(_0x9145('0x1'))(_0x9145('0x2'));var moment=require(_0x9145('0x3'));var BPromise=require('bluebird');var rp=require(_0x9145('0x4'));var fs=require('fs');var path=require(_0x9145('0x5'));var rimraf=require(_0x9145('0x6'));var config=require(_0x9145('0x7'));var attributes=require(_0x9145('0x8'));module['exports']=function(_0x1162c2,_0x541d20){return _0x1162c2[_0x9145('0x9')](_0x9145('0xa'),attributes,{'tableName':'report_sms_transfer','paranoid':![],'indexes':[{'name':_0x9145('0xb'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 5120adf..cd5609c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf07=['request','then','info','SmsTransferReport,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/environment'];(function(_0x48f791,_0x495109){var _0x4ef8c7=function(_0x446f63){while(--_0x446f63){_0x48f791['push'](_0x48f791['shift']());}};_0x4ef8c7(++_0x495109);}(_0xbf07,0x77));var _0x7bf0=function(_0x237546,_0xa81b26){_0x237546=_0x237546-0x0;var _0x233e29=_0xbf07[_0x237546];return _0x233e29;};'use strict';var _=require(_0x7bf0('0x0'));var util=require(_0x7bf0('0x1'));var moment=require(_0x7bf0('0x2'));var BPromise=require(_0x7bf0('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7bf0('0x4'));var db=require(_0x7bf0('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x7bf0('0x6'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x44f656,_0x50e680,_0x263964){return new BPromise(function(_0x536214,_0x415291){return client[_0x7bf0('0x7')](_0x44f656,_0x263964)[_0x7bf0('0x8')](function(_0x2565c7){logger[_0x7bf0('0x9')](_0x7bf0('0xa'),_0x50e680,'request\x20sent');logger[_0x7bf0('0xb')]('SmsTransferReport,\x20%s,\x20%s,\x20%s',_0x50e680,_0x7bf0('0xc'),JSON[_0x7bf0('0xd')](_0x2565c7));if(_0x2565c7[_0x7bf0('0xe')]){if(_0x2565c7[_0x7bf0('0xe')][_0x7bf0('0xf')]===0x1f4){logger[_0x7bf0('0xe')](_0x7bf0('0xa'),_0x50e680,_0x2565c7[_0x7bf0('0xe')][_0x7bf0('0x10')]);return _0x415291(_0x2565c7[_0x7bf0('0xe')][_0x7bf0('0x10')]);}logger[_0x7bf0('0xe')](_0x7bf0('0xa'),_0x50e680,_0x2565c7[_0x7bf0('0xe')][_0x7bf0('0x10')]);return _0x536214(_0x2565c7[_0x7bf0('0xe')][_0x7bf0('0x10')]);}else{logger[_0x7bf0('0x9')](_0x7bf0('0xa'),_0x50e680,_0x7bf0('0xc'));_0x536214(_0x2565c7['result'][_0x7bf0('0x10')]);}})[_0x7bf0('0x11')](function(_0x187489){logger[_0x7bf0('0xe')](_0x7bf0('0xa'),_0x50e680,_0x187489);_0x415291(_0x187489);});});}
\ No newline at end of file
+var _0xc99e=['SmsTransferReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then'];(function(_0x34fc47,_0x13769f){var _0x47f78=function(_0x1a1f0e){while(--_0x1a1f0e){_0x34fc47['push'](_0x34fc47['shift']());}};_0x47f78(++_0x13769f);}(_0xc99e,0x6e));var _0xec99=function(_0x1f7b72,_0x3d22f1){_0x1f7b72=_0x1f7b72-0x0;var _0x1f79fb=_0xc99e[_0x1f7b72];return _0x1f79fb;};'use strict';var _=require(_0xec99('0x0'));var util=require(_0xec99('0x1'));var moment=require(_0xec99('0x2'));var BPromise=require(_0xec99('0x3'));var rs=require(_0xec99('0x4'));var fs=require('fs');var Redis=require(_0xec99('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xec99('0x6'));var logger=require(_0xec99('0x7'))(_0xec99('0x8'));var config=require(_0xec99('0x9'));var jayson=require(_0xec99('0xa'));var client=jayson[_0xec99('0xb')][_0xec99('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x470d70,_0x558b08,_0x797806){return new BPromise(function(_0x425a61,_0x546391){return client[_0xec99('0xd')](_0x470d70,_0x797806)[_0xec99('0xe')](function(_0x47ecf6){logger['info'](_0xec99('0xf'),_0x558b08,_0xec99('0x10'));logger[_0xec99('0x11')]('SmsTransferReport,\x20%s,\x20%s,\x20%s',_0x558b08,_0xec99('0x10'),JSON[_0xec99('0x12')](_0x47ecf6));if(_0x47ecf6[_0xec99('0x13')]){if(_0x47ecf6[_0xec99('0x13')][_0xec99('0x14')]===0x1f4){logger[_0xec99('0x13')]('SmsTransferReport,\x20%s,\x20%s',_0x558b08,_0x47ecf6[_0xec99('0x13')]['message']);return _0x546391(_0x47ecf6[_0xec99('0x13')]['message']);}logger[_0xec99('0x13')]('SmsTransferReport,\x20%s,\x20%s',_0x558b08,_0x47ecf6['error'][_0xec99('0x15')]);return _0x425a61(_0x47ecf6['error'][_0xec99('0x15')]);}else{logger[_0xec99('0x16')](_0xec99('0xf'),_0x558b08,_0xec99('0x10'));_0x425a61(_0x47ecf6[_0xec99('0x17')][_0xec99('0x15')]);}})[_0xec99('0x18')](function(_0x4e03db){logger[_0xec99('0x13')](_0xec99('0xf'),_0x558b08,_0x4e03db);_0x546391(_0x4e03db);});});}
\ No newline at end of file
index 5c88575..6a6644e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd98b=['/:id/download','download','join','root','server/files/sounds/original/','originalname','replace','format','%s-%s%s','basename','extname','post','single','file','create','put','delete','exports','multer','util','path','Router','fs-extra','../../components/auth/service','../../config/environment','./sound.controller','get','isAuthenticated','index','/:id'];(function(_0x468abf,_0x4f4d04){var _0x13a5fd=function(_0x19e0db){while(--_0x19e0db){_0x468abf['push'](_0x468abf['shift']());}};_0x13a5fd(++_0x4f4d04);}(_0xd98b,0x1b6));var _0xbd98=function(_0x51c560,_0x4e6c0e){_0x51c560=_0x51c560-0x0;var _0x594579=_0xd98b[_0x51c560];return _0x594579;};'use strict';var multer=require(_0xbd98('0x0'));var util=require(_0xbd98('0x1'));var path=require(_0xbd98('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xbd98('0x3')]();var fs_extra=require(_0xbd98('0x4'));var auth=require(_0xbd98('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xbd98('0x6'));var controller=require(_0xbd98('0x7'));router[_0xbd98('0x8')]('/',auth[_0xbd98('0x9')](),controller[_0xbd98('0xa')]);router[_0xbd98('0x8')](_0xbd98('0xb'),auth[_0xbd98('0x9')](),controller['show']);router[_0xbd98('0x8')](_0xbd98('0xc'),auth[_0xbd98('0x9')](),controller[_0xbd98('0xd')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x120cd7,_0xa55e4c,_0x4db73c){_0x4db73c(null,path[_0xbd98('0xe')](config[_0xbd98('0xf')],_0xbd98('0x10')));},'filename':function(_0x2bfc45,_0x20d1fb,_0x3ec147){_0x20d1fb[_0xbd98('0x11')]=_0x20d1fb['originalname'][_0xbd98('0x12')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x3ec147(null,util[_0xbd98('0x13')](_0xbd98('0x14'),path[_0xbd98('0x15')](_0x20d1fb['originalname'],path[_0xbd98('0x16')](_0x20d1fb[_0xbd98('0x11')])),Date['now'](),path[_0xbd98('0x16')](_0x20d1fb['originalname'])));}})});router[_0xbd98('0x17')]('/',upload[_0xbd98('0x18')](_0xbd98('0x19')),controller[_0xbd98('0x1a')]);router[_0xbd98('0x1b')](_0xbd98('0xb'),auth['isAuthenticated'](),controller['update']);router[_0xbd98('0x1c')](_0xbd98('0xb'),auth[_0xbd98('0x9')](),controller['delete']);module[_0xbd98('0x1d')]=router;
\ No newline at end of file
+var _0x6569=['connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./sound.controller','isAuthenticated','get','show','download','join','root','server/files/sounds/original/','originalname','replace','format','%s-%s%s','basename','extname','now','post','single','file','create','put','/:id','update','delete','exports','multer','util','path'];(function(_0x26b4e7,_0x20cffe){var _0x2e3484=function(_0x25f3e6){while(--_0x25f3e6){_0x26b4e7['push'](_0x26b4e7['shift']());}};_0x2e3484(++_0x20cffe);}(_0x6569,0xbd));var _0x9656=function(_0x4bbfef,_0x9d4cef){_0x4bbfef=_0x4bbfef-0x0;var _0x5a8120=_0x6569[_0x4bbfef];return _0x5a8120;};'use strict';var multer=require(_0x9656('0x0'));var util=require(_0x9656('0x1'));var path=require(_0x9656('0x2'));var timeout=require(_0x9656('0x3'));var express=require(_0x9656('0x4'));var router=express['Router']();var fs_extra=require(_0x9656('0x5'));var auth=require(_0x9656('0x6'));var interaction=require(_0x9656('0x7'));var config=require('../../config/environment');var controller=require(_0x9656('0x8'));router['get']('/',auth[_0x9656('0x9')](),controller['index']);router[_0x9656('0xa')]('/:id',auth[_0x9656('0x9')](),controller[_0x9656('0xb')]);router['get']('/:id/download',auth['isAuthenticated'](),controller[_0x9656('0xc')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x44bfb0,_0x556fd6,_0x296ac4){_0x296ac4(null,path[_0x9656('0xd')](config[_0x9656('0xe')],_0x9656('0xf')));},'filename':function(_0x92928b,_0x1a7327,_0x1b8772){_0x1a7327[_0x9656('0x10')]=_0x1a7327[_0x9656('0x10')][_0x9656('0x11')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x1b8772(null,util[_0x9656('0x12')](_0x9656('0x13'),path[_0x9656('0x14')](_0x1a7327['originalname'],path[_0x9656('0x15')](_0x1a7327[_0x9656('0x10')])),Date[_0x9656('0x16')](),path['extname'](_0x1a7327['originalname'])));}})});router[_0x9656('0x17')]('/',upload[_0x9656('0x18')](_0x9656('0x19')),controller[_0x9656('0x1a')]);router[_0x9656('0x1b')](_0x9656('0x1c'),auth['isAuthenticated'](),controller[_0x9656('0x1d')]);router[_0x9656('0x1e')](_0x9656('0x1c'),auth[_0x9656('0x9')](),controller[_0x9656('0x1e')]);module[_0x9656('0x1f')]=router;
\ No newline at end of file
index cfda955..8baa51e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf6f=['INTEGER','sequelize','exports','STRING','FLOAT','BIGINT'];(function(_0xcf6ad0,_0x411f01){var _0x3629fd=function(_0xb35c1a){while(--_0xb35c1a){_0xcf6ad0['push'](_0xcf6ad0['shift']());}};_0x3629fd(++_0x411f01);}(_0xcf6f,0xc1));var _0xfcf6=function(_0x59e59d,_0x3f2671){_0x59e59d=_0x59e59d-0x0;var _0x2773a5=_0xcf6f[_0x59e59d];return _0x2773a5;};'use strict';var Sequelize=require(_0xfcf6('0x0'));module[_0xfcf6('0x1')]={'name':{'type':Sequelize[_0xfcf6('0x2')],'unique':'name','allowNull':![]},'save_name':{'type':Sequelize[_0xfcf6('0x2')]},'display_name':{'type':Sequelize[_0xfcf6('0x2')],'defaultValue':''},'description':{'type':Sequelize[_0xfcf6('0x2')]},'original_format':{'type':Sequelize[_0xfcf6('0x2')]},'original_duration':{'type':Sequelize[_0xfcf6('0x3')]},'original_sampleCount':{'type':Sequelize[_0xfcf6('0x4')]},'original_channelCount':{'type':Sequelize[_0xfcf6('0x5')]},'original_bitRate':{'type':Sequelize[_0xfcf6('0x4')]},'original_sampleRate':{'type':Sequelize[_0xfcf6('0x5')]},'converted_format':{'type':Sequelize['STRING']},'converted_duration':{'type':Sequelize[_0xfcf6('0x3')]},'converted_sampleCount':{'type':Sequelize[_0xfcf6('0x4')]},'converted_channelCount':{'type':Sequelize[_0xfcf6('0x5')]},'converted_bitRate':{'type':Sequelize[_0xfcf6('0x4')]},'converted_sampleRate':{'type':Sequelize[_0xfcf6('0x5')]}};
\ No newline at end of file
+var _0x2a44=['STRING','name','FLOAT','BIGINT','INTEGER','sequelize'];(function(_0x5cb8d6,_0x35fdb6){var _0x37ef9f=function(_0x4646bd){while(--_0x4646bd){_0x5cb8d6['push'](_0x5cb8d6['shift']());}};_0x37ef9f(++_0x35fdb6);}(_0x2a44,0xdd));var _0x42a4=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x2a44[_0x14add3];return _0x4a174f;};'use strict';var Sequelize=require(_0x42a4('0x0'));module['exports']={'name':{'type':Sequelize[_0x42a4('0x1')],'unique':_0x42a4('0x2'),'allowNull':![]},'save_name':{'type':Sequelize[_0x42a4('0x1')]},'display_name':{'type':Sequelize[_0x42a4('0x1')],'defaultValue':''},'description':{'type':Sequelize[_0x42a4('0x1')]},'original_format':{'type':Sequelize[_0x42a4('0x1')]},'original_duration':{'type':Sequelize[_0x42a4('0x3')]},'original_sampleCount':{'type':Sequelize[_0x42a4('0x4')]},'original_channelCount':{'type':Sequelize[_0x42a4('0x5')]},'original_bitRate':{'type':Sequelize[_0x42a4('0x4')]},'original_sampleRate':{'type':Sequelize['INTEGER']},'converted_format':{'type':Sequelize['STRING']},'converted_duration':{'type':Sequelize[_0x42a4('0x3')]},'converted_sampleCount':{'type':Sequelize['BIGINT']},'converted_channelCount':{'type':Sequelize[_0x42a4('0x5')]},'converted_bitRate':{'type':Sequelize['BIGINT']},'converted_sampleRate':{'type':Sequelize[_0x42a4('0x5')]}};
\ No newline at end of file
index 5844357..ac32318 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3015=['catch','show','params','find','download','save_name','converted_format','existsSync','join','root','server/files/sounds/converted','Sequelize','ValidationError','Sound\x20not\x20found','format','%s.%s','create','basename','file','originalname','extname','filename','substring','server/files/sounds/original','Sound\x20upload\x20filepath:\x20%s','info','Sound\x20upload\x20destination:\x20%s','0777','wav','src','original_duration','original_sampleCount','sampleCount','channelCount','original_bitRate','bitRate','original_sampleRate','dest','duration','converted_sampleCount','converted_channelCount','converted_bitRate','converted_sampleRate','sampleRate','body','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','send','pick','description','original_format','unlinkSync','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','sox','ejs','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','apply','reject','save','update','then','destroy','get','UserProfileResource','error','name','index','map','Sound','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','filter','where','merge','includeAll','include','findAll'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x3015,0x12e));var _0x5301=function(_0xd97da2,_0x5b7169){_0xd97da2=_0xd97da2-0x0;var _0x4776b0=_0x3015[_0xd97da2];return _0x4776b0;};'use strict';var emlformat=require(_0x5301('0x0'));var rimraf=require(_0x5301('0x1'));var zipdir=require(_0x5301('0x2'));var jsonpatch=require(_0x5301('0x3'));var rp=require(_0x5301('0x4'));var moment=require(_0x5301('0x5'));var BPromise=require(_0x5301('0x6'));var Mustache=require('mustache');var util=require(_0x5301('0x7'));var path=require('path');var sox=require(_0x5301('0x8'));var csv=require('to-csv');var ejs=require(_0x5301('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x5301('0xa'));var squel=require(_0x5301('0xb'));var crypto=require('crypto');var jsforce=require(_0x5301('0xc'));var deskjs=require(_0x5301('0xd'));var toCsv=require(_0x5301('0xe'));var querystring=require(_0x5301('0xf'));var Papa=require(_0x5301('0x10'));var Redis=require(_0x5301('0x11'));var authService=require(_0x5301('0x12'));var qs=require(_0x5301('0x13'));var as=require(_0x5301('0x14'));var hardwareService=require(_0x5301('0x15'));var logger=require(_0x5301('0x16'))(_0x5301('0x17'));var utils=require(_0x5301('0x18'));var config=require(_0x5301('0x19'));var licenseUtil=require(_0x5301('0x1a'));var db=require(_0x5301('0x1b'))['db'];function respondWithStatusCode(_0x508003,_0x1b4008){_0x1b4008=_0x1b4008||0xcc;return function(_0x5d268b){if(_0x5d268b){return _0x508003[_0x5301('0x1c')](_0x1b4008);}return _0x508003[_0x5301('0x1d')](_0x1b4008)[_0x5301('0x1e')]();};}function respondWithResult(_0x43d2ad,_0xf17c52){_0xf17c52=_0xf17c52||0xc8;return function(_0x1e2222){if(_0x1e2222){return _0x43d2ad['status'](_0xf17c52)[_0x5301('0x1f')](_0x1e2222);}};}function respondWithFilteredResult(_0x3273a1,_0x5b5dfc){return function(_0xbfb21b){if(_0xbfb21b){var _0x14c3b3=typeof _0x5b5dfc[_0x5301('0x20')]==='undefined'&&typeof _0x5b5dfc['limit']===_0x5301('0x21');var _0x2c1312=_0xbfb21b['count'];var _0x18bdb1=_0x14c3b3?0x0:_0x5b5dfc['offset'];var _0x48a49e=_0x14c3b3?_0xbfb21b[_0x5301('0x22')]:_0x5b5dfc['offset']+_0x5b5dfc[_0x5301('0x23')];var _0x5ae1d4;if(_0x48a49e>=_0x2c1312){_0x48a49e=_0x2c1312;_0x5ae1d4=0xc8;}else{_0x5ae1d4=0xce;}_0x3273a1[_0x5301('0x1d')](_0x5ae1d4);return _0x3273a1[_0x5301('0x24')]('Content-Range',_0x18bdb1+'-'+_0x48a49e+'/'+_0x2c1312)[_0x5301('0x1f')](_0xbfb21b);}return null;};}function patchUpdates(_0x90babd){return function(_0x2a7add){try{jsonpatch[_0x5301('0x25')](_0x2a7add,_0x90babd,!![]);}catch(_0x29e55b){return BPromise[_0x5301('0x26')](_0x29e55b);}return _0x2a7add[_0x5301('0x27')]();};}function saveUpdates(_0x4e5fbc,_0x3c912b){return function(_0x4d8707){if(_0x4d8707){return _0x4d8707[_0x5301('0x28')](_0x4e5fbc)[_0x5301('0x29')](function(_0xd97fe7){return _0xd97fe7;});}return null;};}function removeEntity(_0x35455f,_0x2c00b1){return function(_0x4ac8b5){if(_0x4ac8b5){return _0x4ac8b5[_0x5301('0x2a')]()['then'](function(){var _0x9d34f=_0x4ac8b5[_0x5301('0x2b')]({'plain':!![]});var _0xb417f='Sounds';return db[_0x5301('0x2c')]['destroy']({'where':{'type':_0xb417f,'resourceId':_0x9d34f['id']}})[_0x5301('0x29')](function(){return _0x4ac8b5;});})['then'](function(){_0x35455f[_0x5301('0x1d')](0xcc)[_0x5301('0x1e')]();});}};}function handleEntityNotFound(_0x11fb05,_0x46d193){return function(_0xf50c3c){if(!_0xf50c3c){_0x11fb05['sendStatus'](0x194);}return _0xf50c3c;};}function handleError(_0x5f00f2,_0x486d72){_0x486d72=_0x486d72||0x1f4;return function(_0x5101a4){logger[_0x5301('0x2d')](_0x5101a4['stack']);if(_0x5101a4[_0x5301('0x2e')]){delete _0x5101a4[_0x5301('0x2e')];}_0x5f00f2[_0x5301('0x1d')](_0x486d72)['send'](_0x5101a4);};}exports[_0x5301('0x2f')]=function(_0x2b00d5,_0x5ba9ea){var _0x1e49f0={},_0xfaea91={},_0x3d6668={'count':0x0,'rows':[]};var _0x1adfa1=_[_0x5301('0x30')](db[_0x5301('0x31')][_0x5301('0x32')],function(_0x4bcd22){return{'name':_0x4bcd22[_0x5301('0x33')],'type':_0x4bcd22[_0x5301('0x34')]['key']};});_0xfaea91[_0x5301('0x35')]=_[_0x5301('0x30')](_0x1adfa1,'name');_0xfaea91[_0x5301('0x36')]=_[_0x5301('0x37')](_0x2b00d5[_0x5301('0x36')]);_0xfaea91[_0x5301('0x38')]=_[_0x5301('0x39')](_0xfaea91[_0x5301('0x35')],_0xfaea91[_0x5301('0x36')]);_0x1e49f0[_0x5301('0x3a')]=_[_0x5301('0x39')](_0xfaea91[_0x5301('0x35')],qs[_0x5301('0x3b')](_0x2b00d5[_0x5301('0x36')][_0x5301('0x3b')]));_0x1e49f0['attributes']=_0x1e49f0[_0x5301('0x3a')][_0x5301('0x3c')]?_0x1e49f0['attributes']:_0xfaea91['model'];if(!_0x2b00d5[_0x5301('0x36')][_0x5301('0x3d')](_0x5301('0x3e'))){_0x1e49f0[_0x5301('0x23')]=qs[_0x5301('0x23')](_0x2b00d5[_0x5301('0x36')]['limit']);_0x1e49f0[_0x5301('0x20')]=qs[_0x5301('0x20')](_0x2b00d5[_0x5301('0x36')]['offset']);}_0x1e49f0['order']=qs[_0x5301('0x3f')](_0x2b00d5[_0x5301('0x36')][_0x5301('0x3f')]);_0x1e49f0['where']=qs[_0x5301('0x38')](_['pick'](_0x2b00d5[_0x5301('0x36')],_0xfaea91[_0x5301('0x38')]),_0x1adfa1);if(_0x2b00d5[_0x5301('0x36')][_0x5301('0x40')]){_0x1e49f0[_0x5301('0x41')]=_[_0x5301('0x42')](_0x1e49f0[_0x5301('0x41')],{'$or':_['map'](_0x1adfa1,function(_0x4f64eb){if(_0x4f64eb[_0x5301('0x34')]!=='VIRTUAL'){var _0x360b76={};_0x360b76[_0x4f64eb['name']]={'$like':'%'+_0x2b00d5[_0x5301('0x36')][_0x5301('0x40')]+'%'};return _0x360b76;}})});}_0x1e49f0=_['merge']({},_0x1e49f0,_0x2b00d5['options']);var _0x5a2ca0={'where':_0x1e49f0[_0x5301('0x41')]};return db[_0x5301('0x31')][_0x5301('0x22')](_0x5a2ca0)[_0x5301('0x29')](function(_0x272817){_0x3d6668[_0x5301('0x22')]=_0x272817;if(_0x2b00d5[_0x5301('0x36')][_0x5301('0x43')]){_0x1e49f0[_0x5301('0x44')]=[{'all':!![]}];}return db['Sound'][_0x5301('0x45')](_0x1e49f0);})[_0x5301('0x29')](function(_0x26f7b1){_0x3d6668['rows']=_0x26f7b1;return _0x3d6668;})['then'](respondWithFilteredResult(_0x5ba9ea,_0x1e49f0))[_0x5301('0x46')](handleError(_0x5ba9ea,null));};exports[_0x5301('0x47')]=function(_0x30dfcc,_0x206a95){var _0x3fbae3={'raw':!![],'where':{'id':_0x30dfcc[_0x5301('0x48')]['id']}},_0x1bbe82={};_0x1bbe82[_0x5301('0x35')]=_[_0x5301('0x37')](db[_0x5301('0x31')][_0x5301('0x32')]);_0x1bbe82[_0x5301('0x36')]=_[_0x5301('0x37')](_0x30dfcc['query']);_0x1bbe82['filters']=_[_0x5301('0x39')](_0x1bbe82[_0x5301('0x35')],_0x1bbe82['query']);_0x3fbae3[_0x5301('0x3a')]=_[_0x5301('0x39')](_0x1bbe82['model'],qs[_0x5301('0x3b')](_0x30dfcc[_0x5301('0x36')][_0x5301('0x3b')]));_0x3fbae3[_0x5301('0x3a')]=_0x3fbae3[_0x5301('0x3a')][_0x5301('0x3c')]?_0x3fbae3['attributes']:_0x1bbe82[_0x5301('0x35')];if(_0x30dfcc[_0x5301('0x36')][_0x5301('0x43')]){_0x3fbae3['include']=[{'all':!![]}];}_0x3fbae3=_[_0x5301('0x42')]({},_0x3fbae3,_0x30dfcc['options']);return db[_0x5301('0x31')][_0x5301('0x49')](_0x3fbae3)[_0x5301('0x29')](handleEntityNotFound(_0x206a95,null))['then'](respondWithResult(_0x206a95,null))[_0x5301('0x46')](handleError(_0x206a95,null));};exports[_0x5301('0x4a')]=function(_0x27ff00,_0x3fe943,_0x3fa1ae){return db[_0x5301('0x31')][_0x5301('0x49')]({'where':{'id':_0x27ff00['params']['id']},'attributes':[_0x5301('0x2e'),_0x5301('0x4b'),_0x5301('0x4c')],'raw':!![]})[_0x5301('0x29')](handleEntityNotFound(_0x3fe943,null))[_0x5301('0x29')](function(_0x1e14e8){if(_0x1e14e8){if(!fs[_0x5301('0x4d')](path[_0x5301('0x4e')](config[_0x5301('0x4f')],_0x5301('0x50'),_0x1e14e8['save_name']+'.'+_0x1e14e8[_0x5301('0x4c')]))){throw new db[(_0x5301('0x51'))][(_0x5301('0x52'))](_0x5301('0x53'));}return _0x3fe943['download'](path[_0x5301('0x4e')](config[_0x5301('0x4f')],_0x5301('0x50'),util[_0x5301('0x54')](_0x5301('0x55'),_0x1e14e8['save_name'],_0x1e14e8[_0x5301('0x4c')])),util[_0x5301('0x54')](_0x5301('0x55'),_0x1e14e8[_0x5301('0x2e')],_0x1e14e8[_0x5301('0x4c')]));}return null;})['catch'](handleError(_0x3fe943,null));};exports[_0x5301('0x56')]=function(_0x23fadb,_0x5aae1e,_0xdefd32){var _0xeed84e={'name':path[_0x5301('0x57')](_0x23fadb[_0x5301('0x58')][_0x5301('0x59')],path[_0x5301('0x5a')](_0x23fadb[_0x5301('0x58')][_0x5301('0x59')])),'save_name':path[_0x5301('0x57')](_0x23fadb[_0x5301('0x58')][_0x5301('0x5b')],path[_0x5301('0x5a')](_0x23fadb[_0x5301('0x58')][_0x5301('0x5b')])),'original_format':path['extname'](_0x23fadb[_0x5301('0x58')][_0x5301('0x59')])[_0x5301('0x5c')](0x1),'converted_format':'wav'};var _0xe6a04c=path[_0x5301('0x4e')](config[_0x5301('0x4f')],_0x5301('0x5d'),_0x23fadb['file'][_0x5301('0x5b')]);var _0x8e3d3=path[_0x5301('0x4e')](config['root'],_0x5301('0x50'),util[_0x5301('0x54')](_0x5301('0x55'),path[_0x5301('0x57')](_0x23fadb[_0x5301('0x58')]['filename'],path['extname'](_0x23fadb[_0x5301('0x58')][_0x5301('0x5b')])),_0xeed84e[_0x5301('0x4c')]));logger['info'](_0x5301('0x5e'),_0xe6a04c);logger[_0x5301('0x5f')](_0x5301('0x60'),_0x8e3d3);try{fs['chmodSync'](_0xe6a04c,parseInt(_0x5301('0x61'),0x8));var _0x45dbe7=sox['transcode'](_0xe6a04c,_0x8e3d3,{'sampleRate':0x1f40,'format':_0x5301('0x62'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x45dbe7['on']('error',function(_0x23af64){fs['unlinkSync'](_0xe6a04c);_0x5aae1e[_0x5301('0x1d')](0x1f4)['send'](_0x23af64);});_0x45dbe7['on'](_0x5301('0x63'),function(_0x324c04){_0xeed84e[_0x5301('0x64')]=isNaN(_0x324c04['duration'])?null:_0x324c04['duration']*0x3e8;_0xeed84e[_0x5301('0x65')]=isNaN(_0x324c04[_0x5301('0x66')])?null:_0x324c04[_0x5301('0x66')];_0xeed84e['original_channelCount']=isNaN(_0x324c04[_0x5301('0x67')])?null:_0x324c04[_0x5301('0x67')];_0xeed84e[_0x5301('0x68')]=isNaN(_0x324c04[_0x5301('0x69')])?null:_0x324c04[_0x5301('0x69')];_0xeed84e[_0x5301('0x6a')]=isNaN(_0x324c04['sampleRate'])?null:_0x324c04['sampleRate'];});_0x45dbe7['on'](_0x5301('0x6b'),function(_0x4556ac){_0xeed84e['converted_duration']=isNaN(_0x4556ac[_0x5301('0x6c')])?null:_0x4556ac[_0x5301('0x6c')]*0x3e8;_0xeed84e[_0x5301('0x6d')]=isNaN(_0x4556ac['sampleCount'])?null:_0x4556ac[_0x5301('0x66')];_0xeed84e[_0x5301('0x6e')]=isNaN(_0x4556ac[_0x5301('0x67')])?null:_0x4556ac['channelCount'];_0xeed84e[_0x5301('0x6f')]=isNaN(_0x4556ac[_0x5301('0x69')])?null:_0x4556ac['bitRate'];_0xeed84e[_0x5301('0x70')]=isNaN(_0x4556ac[_0x5301('0x71')])?null:_0x4556ac['sampleRate'];});_0x45dbe7['on'](_0x5301('0x1e'),function(){fs['chmodSync'](_0x8e3d3,parseInt(_0x5301('0x61'),0x8));return db[_0x5301('0x31')][_0x5301('0x56')](_0xeed84e)[_0x5301('0x29')](function(_0x170825){var _0x2f6e7c={'role':_0x23fadb[_0x5301('0x72')]['role'],'userProfileId':_0x23fadb['body'][_0x5301('0x73')]};if(!_0x2f6e7c)throw new Error(_0x5301('0x74'));if(_0x2f6e7c['role']==='user'){var _0xb27bd=_0x170825[_0x5301('0x2b')]({'plain':!![]});return db[_0x5301('0x75')][_0x5301('0x49')]({'where':{'name':'Sounds','userProfileId':_0x2f6e7c[_0x5301('0x73')]},'raw':!![]})[_0x5301('0x29')](function(_0x52d0a1){if(_0x52d0a1&&_0x52d0a1['autoAssociation']===0x0){return db[_0x5301('0x2c')]['create']({'name':_0xb27bd[_0x5301('0x2e')],'resourceId':_0xb27bd['id'],'type':_0x52d0a1[_0x5301('0x2e')],'sectionId':_0x52d0a1['id']},{})[_0x5301('0x29')](function(){return _0x170825;});}else{return _0x170825;}})['catch'](function(_0x5c6e10){logger[_0x5301('0x2d')](_0x5301('0x76'),_0x5c6e10);throw _0x5c6e10;});}return _0x170825;})[_0x5301('0x29')](respondWithResult(_0x5aae1e,null))[_0x5301('0x46')](handleError(_0x5aae1e,null));});_0x45dbe7['start']();}catch(_0xc5d023){_0x5aae1e[_0x5301('0x1d')](0x1f4)[_0x5301('0x77')](_0xc5d023);}};exports[_0x5301('0x28')]=function(_0x206754,_0x3583db,_0x56112a){return db['Sound']['find']({'where':{'id':_0x206754['params']['id']}})[_0x5301('0x29')](handleEntityNotFound(_0x3583db,null))['then'](saveUpdates(_[_0x5301('0x78')](_0x206754[_0x5301('0x72')],[_0x5301('0x2e'),_0x5301('0x79')]),null))[_0x5301('0x29')](respondWithResult(_0x3583db,null))[_0x5301('0x46')](handleError(_0x3583db,null));};exports['delete']=function(_0x5ad542,_0x2d0cbb,_0x12d453){return db['Sound'][_0x5301('0x49')]({'where':{'id':_0x5ad542[_0x5301('0x48')]['id']}})['then'](function(_0x20bf14){if(_0x20bf14){return _0x20bf14['destroy']();}})[_0x5301('0x29')](function(_0x48cec4){var _0x3e8caa=path[_0x5301('0x4e')](config[_0x5301('0x4f')],'server/files/sounds/original',util[_0x5301('0x54')](_0x5301('0x55'),_0x48cec4[_0x5301('0x4b')],_0x48cec4[_0x5301('0x7a')]));var _0x543962=path[_0x5301('0x4e')](config[_0x5301('0x4f')],_0x5301('0x50'),util[_0x5301('0x54')](_0x5301('0x55'),_0x48cec4['save_name'],_0x48cec4[_0x5301('0x4c')]));fs[_0x5301('0x7b')](_0x3e8caa);fs['unlinkSync'](_0x543962);return _0x48cec4;})[_0x5301('0x29')](function(_0x1f7cec){if(_0x1f7cec){return _0x2d0cbb[_0x5301('0x1d')](0xcc)['end']();}})[_0x5301('0x29')](handleEntityNotFound(_0x2d0cbb,null))[_0x5301('0x46')](handleError(_0x2d0cbb,null));};
\ No newline at end of file
+var _0x36f6=['download','save_name','existsSync','join','root','converted_format','Sequelize','Sound\x20not\x20found','server/files/sounds/converted','%s.%s','format','basename','file','extname','filename','originalname','substring','server/files/sounds/original','Sound\x20upload\x20destination:\x20%s','0777','transcode','wav','unlinkSync','send','duration','original_sampleCount','original_channelCount','channelCount','original_bitRate','bitRate','original_sampleRate','sampleRate','converted_duration','converted_sampleCount','sampleCount','converted_channelCount','converted_bitRate','chmodSync','body','role','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','start','description','original_format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','count','set','apply','reject','save','update','then','get','Sounds','UserProfileResource','destroy','end','sendStatus','error','name','index','map','Sound','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','params','length','find'];(function(_0x4691c3,_0x2ebe86){var _0x510090=function(_0x33a9e1){while(--_0x33a9e1){_0x4691c3['push'](_0x4691c3['shift']());}};_0x510090(++_0x2ebe86);}(_0x36f6,0xb0));var _0x636f=function(_0xdad237,_0x361a1d){_0xdad237=_0xdad237-0x0;var _0x15c575=_0x36f6[_0xdad237];return _0x15c575;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x636f('0x0'));var zipdir=require(_0x636f('0x1'));var jsonpatch=require(_0x636f('0x2'));var rp=require(_0x636f('0x3'));var moment=require(_0x636f('0x4'));var BPromise=require(_0x636f('0x5'));var Mustache=require(_0x636f('0x6'));var util=require(_0x636f('0x7'));var path=require(_0x636f('0x8'));var sox=require(_0x636f('0x9'));var csv=require(_0x636f('0xa'));var ejs=require(_0x636f('0xb'));var fs=require('fs');var fs_extra=require(_0x636f('0xc'));var _=require(_0x636f('0xd'));var squel=require(_0x636f('0xe'));var crypto=require(_0x636f('0xf'));var jsforce=require(_0x636f('0x10'));var deskjs=require(_0x636f('0x11'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x636f('0x12'));var Redis=require(_0x636f('0x13'));var authService=require(_0x636f('0x14'));var qs=require(_0x636f('0x15'));var as=require(_0x636f('0x16'));var hardwareService=require(_0x636f('0x17'));var logger=require('../../config/logger')('api');var utils=require(_0x636f('0x18'));var config=require(_0x636f('0x19'));var licenseUtil=require(_0x636f('0x1a'));var db=require(_0x636f('0x1b'))['db'];function respondWithStatusCode(_0x4bfa61,_0x42bd44){_0x42bd44=_0x42bd44||0xcc;return function(_0xd867db){if(_0xd867db){return _0x4bfa61['sendStatus'](_0x42bd44);}return _0x4bfa61[_0x636f('0x1c')](_0x42bd44)['end']();};}function respondWithResult(_0x549ee7,_0x535f96){_0x535f96=_0x535f96||0xc8;return function(_0x3f3719){if(_0x3f3719){return _0x549ee7[_0x636f('0x1c')](_0x535f96)[_0x636f('0x1d')](_0x3f3719);}};}function respondWithFilteredResult(_0x572038,_0x52329d){return function(_0x43744c){if(_0x43744c){var _0x221737=typeof _0x52329d[_0x636f('0x1e')]===_0x636f('0x1f')&&typeof _0x52329d[_0x636f('0x20')]===_0x636f('0x1f');var _0x63456=_0x43744c[_0x636f('0x21')];var _0x297749=_0x221737?0x0:_0x52329d[_0x636f('0x1e')];var _0x35af5b=_0x221737?_0x43744c[_0x636f('0x21')]:_0x52329d[_0x636f('0x1e')]+_0x52329d[_0x636f('0x20')];var _0x9dc4ae;if(_0x35af5b>=_0x63456){_0x35af5b=_0x63456;_0x9dc4ae=0xc8;}else{_0x9dc4ae=0xce;}_0x572038[_0x636f('0x1c')](_0x9dc4ae);return _0x572038[_0x636f('0x22')]('Content-Range',_0x297749+'-'+_0x35af5b+'/'+_0x63456)[_0x636f('0x1d')](_0x43744c);}return null;};}function patchUpdates(_0x399f79){return function(_0x45e11c){try{jsonpatch[_0x636f('0x23')](_0x45e11c,_0x399f79,!![]);}catch(_0x138ce4){return BPromise[_0x636f('0x24')](_0x138ce4);}return _0x45e11c[_0x636f('0x25')]();};}function saveUpdates(_0x48c33f,_0x570f9a){return function(_0x2ce92e){if(_0x2ce92e){return _0x2ce92e[_0x636f('0x26')](_0x48c33f)[_0x636f('0x27')](function(_0x1e83f4){return _0x1e83f4;});}return null;};}function removeEntity(_0x418e27,_0x1d6b35){return function(_0x27228a){if(_0x27228a){return _0x27228a['destroy']()['then'](function(){var _0x3a76f3=_0x27228a[_0x636f('0x28')]({'plain':!![]});var _0x4f80ff=_0x636f('0x29');return db[_0x636f('0x2a')][_0x636f('0x2b')]({'where':{'type':_0x4f80ff,'resourceId':_0x3a76f3['id']}})[_0x636f('0x27')](function(){return _0x27228a;});})['then'](function(){_0x418e27[_0x636f('0x1c')](0xcc)[_0x636f('0x2c')]();});}};}function handleEntityNotFound(_0x3666af,_0x43436a){return function(_0x5cd19b){if(!_0x5cd19b){_0x3666af[_0x636f('0x2d')](0x194);}return _0x5cd19b;};}function handleError(_0x303d2d,_0x2cc4e8){_0x2cc4e8=_0x2cc4e8||0x1f4;return function(_0x44175e){logger[_0x636f('0x2e')](_0x44175e['stack']);if(_0x44175e[_0x636f('0x2f')]){delete _0x44175e[_0x636f('0x2f')];}_0x303d2d[_0x636f('0x1c')](_0x2cc4e8)['send'](_0x44175e);};}exports[_0x636f('0x30')]=function(_0x59ddbc,_0x4971b0){var _0x18609d={},_0x5ce95c={},_0x40ffac={'count':0x0,'rows':[]};var _0x976c86=_[_0x636f('0x31')](db[_0x636f('0x32')][_0x636f('0x33')],function(_0x43489c){return{'name':_0x43489c[_0x636f('0x34')],'type':_0x43489c[_0x636f('0x35')][_0x636f('0x36')]};});_0x5ce95c[_0x636f('0x37')]=_[_0x636f('0x31')](_0x976c86,'name');_0x5ce95c[_0x636f('0x38')]=_[_0x636f('0x39')](_0x59ddbc[_0x636f('0x38')]);_0x5ce95c[_0x636f('0x3a')]=_[_0x636f('0x3b')](_0x5ce95c[_0x636f('0x37')],_0x5ce95c[_0x636f('0x38')]);_0x18609d[_0x636f('0x3c')]=_[_0x636f('0x3b')](_0x5ce95c['model'],qs[_0x636f('0x3d')](_0x59ddbc['query']['fields']));_0x18609d['attributes']=_0x18609d['attributes']['length']?_0x18609d['attributes']:_0x5ce95c[_0x636f('0x37')];if(!_0x59ddbc[_0x636f('0x38')][_0x636f('0x3e')]('nolimit')){_0x18609d[_0x636f('0x20')]=qs[_0x636f('0x20')](_0x59ddbc[_0x636f('0x38')][_0x636f('0x20')]);_0x18609d[_0x636f('0x1e')]=qs[_0x636f('0x1e')](_0x59ddbc[_0x636f('0x38')]['offset']);}_0x18609d['order']=qs[_0x636f('0x3f')](_0x59ddbc[_0x636f('0x38')][_0x636f('0x3f')]);_0x18609d[_0x636f('0x40')]=qs[_0x636f('0x3a')](_[_0x636f('0x41')](_0x59ddbc[_0x636f('0x38')],_0x5ce95c[_0x636f('0x3a')]),_0x976c86);if(_0x59ddbc[_0x636f('0x38')][_0x636f('0x42')]){_0x18609d['where']=_[_0x636f('0x43')](_0x18609d[_0x636f('0x40')],{'$or':_[_0x636f('0x31')](_0x976c86,function(_0x17935b){if(_0x17935b[_0x636f('0x35')]!==_0x636f('0x44')){var _0x5d456b={};_0x5d456b[_0x17935b[_0x636f('0x2f')]]={'$like':'%'+_0x59ddbc[_0x636f('0x38')][_0x636f('0x42')]+'%'};return _0x5d456b;}})});}_0x18609d=_[_0x636f('0x43')]({},_0x18609d,_0x59ddbc[_0x636f('0x45')]);var _0x5f38e6={'where':_0x18609d['where']};return db['Sound'][_0x636f('0x21')](_0x5f38e6)[_0x636f('0x27')](function(_0x1c4b70){_0x40ffac[_0x636f('0x21')]=_0x1c4b70;if(_0x59ddbc[_0x636f('0x38')][_0x636f('0x46')]){_0x18609d[_0x636f('0x47')]=[{'all':!![]}];}return db[_0x636f('0x32')][_0x636f('0x48')](_0x18609d);})[_0x636f('0x27')](function(_0x351f5d){_0x40ffac[_0x636f('0x49')]=_0x351f5d;return _0x40ffac;})[_0x636f('0x27')](respondWithFilteredResult(_0x4971b0,_0x18609d))[_0x636f('0x4a')](handleError(_0x4971b0,null));};exports['show']=function(_0x4a9134,_0x1d1275){var _0x10f6af={'raw':!![],'where':{'id':_0x4a9134[_0x636f('0x4b')]['id']}},_0x528e63={};_0x528e63[_0x636f('0x37')]=_[_0x636f('0x39')](db['Sound'][_0x636f('0x33')]);_0x528e63['query']=_[_0x636f('0x39')](_0x4a9134['query']);_0x528e63[_0x636f('0x3a')]=_[_0x636f('0x3b')](_0x528e63['model'],_0x528e63[_0x636f('0x38')]);_0x10f6af[_0x636f('0x3c')]=_[_0x636f('0x3b')](_0x528e63[_0x636f('0x37')],qs['fields'](_0x4a9134[_0x636f('0x38')][_0x636f('0x3d')]));_0x10f6af['attributes']=_0x10f6af[_0x636f('0x3c')][_0x636f('0x4c')]?_0x10f6af[_0x636f('0x3c')]:_0x528e63['model'];if(_0x4a9134['query'][_0x636f('0x46')]){_0x10f6af['include']=[{'all':!![]}];}_0x10f6af=_[_0x636f('0x43')]({},_0x10f6af,_0x4a9134[_0x636f('0x45')]);return db['Sound'][_0x636f('0x4d')](_0x10f6af)[_0x636f('0x27')](handleEntityNotFound(_0x1d1275,null))['then'](respondWithResult(_0x1d1275,null))[_0x636f('0x4a')](handleError(_0x1d1275,null));};exports[_0x636f('0x4e')]=function(_0x553953,_0x33614e,_0x23b132){return db[_0x636f('0x32')][_0x636f('0x4d')]({'where':{'id':_0x553953[_0x636f('0x4b')]['id']},'attributes':[_0x636f('0x2f'),_0x636f('0x4f'),'converted_format'],'raw':!![]})[_0x636f('0x27')](handleEntityNotFound(_0x33614e,null))[_0x636f('0x27')](function(_0x2f1907){if(_0x2f1907){if(!fs[_0x636f('0x50')](path[_0x636f('0x51')](config[_0x636f('0x52')],'server/files/sounds/converted',_0x2f1907[_0x636f('0x4f')]+'.'+_0x2f1907[_0x636f('0x53')]))){throw new db[(_0x636f('0x54'))]['ValidationError'](_0x636f('0x55'));}return _0x33614e['download'](path[_0x636f('0x51')](config[_0x636f('0x52')],_0x636f('0x56'),util['format'](_0x636f('0x57'),_0x2f1907['save_name'],_0x2f1907[_0x636f('0x53')])),util[_0x636f('0x58')](_0x636f('0x57'),_0x2f1907['name'],_0x2f1907['converted_format']));}return null;})[_0x636f('0x4a')](handleError(_0x33614e,null));};exports['create']=function(_0x2ba57c,_0x45fb28,_0x377444){var _0x21f8e5={'name':path[_0x636f('0x59')](_0x2ba57c[_0x636f('0x5a')]['originalname'],path[_0x636f('0x5b')](_0x2ba57c[_0x636f('0x5a')]['originalname'])),'save_name':path[_0x636f('0x59')](_0x2ba57c[_0x636f('0x5a')][_0x636f('0x5c')],path['extname'](_0x2ba57c['file']['filename'])),'original_format':path[_0x636f('0x5b')](_0x2ba57c[_0x636f('0x5a')][_0x636f('0x5d')])[_0x636f('0x5e')](0x1),'converted_format':'wav'};var _0x1b2bba=path['join'](config[_0x636f('0x52')],_0x636f('0x5f'),_0x2ba57c[_0x636f('0x5a')][_0x636f('0x5c')]);var _0x159a7d=path[_0x636f('0x51')](config[_0x636f('0x52')],'server/files/sounds/converted',util[_0x636f('0x58')](_0x636f('0x57'),path[_0x636f('0x59')](_0x2ba57c['file'][_0x636f('0x5c')],path['extname'](_0x2ba57c[_0x636f('0x5a')][_0x636f('0x5c')])),_0x21f8e5[_0x636f('0x53')]));logger['info']('Sound\x20upload\x20filepath:\x20%s',_0x1b2bba);logger['info'](_0x636f('0x60'),_0x159a7d);try{fs['chmodSync'](_0x1b2bba,parseInt(_0x636f('0x61'),0x8));var _0x4bfb1b=sox[_0x636f('0x62')](_0x1b2bba,_0x159a7d,{'sampleRate':0x1f40,'format':_0x636f('0x63'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x4bfb1b['on'](_0x636f('0x2e'),function(_0x375d85){fs[_0x636f('0x64')](_0x1b2bba);_0x45fb28[_0x636f('0x1c')](0x1f4)[_0x636f('0x65')](_0x375d85);});_0x4bfb1b['on']('src',function(_0x1aa34d){_0x21f8e5['original_duration']=isNaN(_0x1aa34d['duration'])?null:_0x1aa34d[_0x636f('0x66')]*0x3e8;_0x21f8e5[_0x636f('0x67')]=isNaN(_0x1aa34d['sampleCount'])?null:_0x1aa34d['sampleCount'];_0x21f8e5[_0x636f('0x68')]=isNaN(_0x1aa34d['channelCount'])?null:_0x1aa34d[_0x636f('0x69')];_0x21f8e5[_0x636f('0x6a')]=isNaN(_0x1aa34d[_0x636f('0x6b')])?null:_0x1aa34d['bitRate'];_0x21f8e5[_0x636f('0x6c')]=isNaN(_0x1aa34d[_0x636f('0x6d')])?null:_0x1aa34d['sampleRate'];});_0x4bfb1b['on']('dest',function(_0x20663b){_0x21f8e5[_0x636f('0x6e')]=isNaN(_0x20663b[_0x636f('0x66')])?null:_0x20663b[_0x636f('0x66')]*0x3e8;_0x21f8e5[_0x636f('0x6f')]=isNaN(_0x20663b[_0x636f('0x70')])?null:_0x20663b[_0x636f('0x70')];_0x21f8e5[_0x636f('0x71')]=isNaN(_0x20663b[_0x636f('0x69')])?null:_0x20663b[_0x636f('0x69')];_0x21f8e5[_0x636f('0x72')]=isNaN(_0x20663b[_0x636f('0x6b')])?null:_0x20663b[_0x636f('0x6b')];_0x21f8e5['converted_sampleRate']=isNaN(_0x20663b[_0x636f('0x6d')])?null:_0x20663b[_0x636f('0x6d')];});_0x4bfb1b['on'](_0x636f('0x2c'),function(){fs[_0x636f('0x73')](_0x159a7d,parseInt(_0x636f('0x61'),0x8));return db['Sound']['create'](_0x21f8e5)['then'](function(_0x51cd43){var _0x4b0c4e={'role':_0x2ba57c[_0x636f('0x74')][_0x636f('0x75')],'userProfileId':_0x2ba57c[_0x636f('0x74')][_0x636f('0x76')]};if(!_0x4b0c4e)throw new Error(_0x636f('0x77'));if(_0x4b0c4e['role']===_0x636f('0x78')){var _0x25fdb5=_0x51cd43[_0x636f('0x28')]({'plain':!![]});return db['UserProfileSection'][_0x636f('0x4d')]({'where':{'name':_0x636f('0x29'),'userProfileId':_0x4b0c4e[_0x636f('0x76')]},'raw':!![]})['then'](function(_0x43270a){if(_0x43270a&&_0x43270a[_0x636f('0x79')]===0x0){return db[_0x636f('0x2a')][_0x636f('0x7a')]({'name':_0x25fdb5['name'],'resourceId':_0x25fdb5['id'],'type':_0x43270a[_0x636f('0x2f')],'sectionId':_0x43270a['id']},{})['then'](function(){return _0x51cd43;});}else{return _0x51cd43;}})[_0x636f('0x4a')](function(_0x5ca31c){logger[_0x636f('0x2e')](_0x636f('0x7b'),_0x5ca31c);throw _0x5ca31c;});}return _0x51cd43;})['then'](respondWithResult(_0x45fb28,null))[_0x636f('0x4a')](handleError(_0x45fb28,null));});_0x4bfb1b[_0x636f('0x7c')]();}catch(_0x4c7af7){_0x45fb28[_0x636f('0x1c')](0x1f4)[_0x636f('0x65')](_0x4c7af7);}};exports[_0x636f('0x26')]=function(_0x2cea8b,_0x205c20,_0x72f851){return db[_0x636f('0x32')][_0x636f('0x4d')]({'where':{'id':_0x2cea8b['params']['id']}})[_0x636f('0x27')](handleEntityNotFound(_0x205c20,null))[_0x636f('0x27')](saveUpdates(_[_0x636f('0x41')](_0x2cea8b[_0x636f('0x74')],['name',_0x636f('0x7d')]),null))[_0x636f('0x27')](respondWithResult(_0x205c20,null))[_0x636f('0x4a')](handleError(_0x205c20,null));};exports['delete']=function(_0x28545e,_0xb81d06,_0x405da4){return db[_0x636f('0x32')][_0x636f('0x4d')]({'where':{'id':_0x28545e['params']['id']}})[_0x636f('0x27')](function(_0x5681d1){if(_0x5681d1){return _0x5681d1[_0x636f('0x2b')]();}})[_0x636f('0x27')](function(_0x4baedd){var _0x766cdb=path[_0x636f('0x51')](config[_0x636f('0x52')],'server/files/sounds/original',util[_0x636f('0x58')](_0x636f('0x57'),_0x4baedd[_0x636f('0x4f')],_0x4baedd[_0x636f('0x7e')]));var _0x51688d=path['join'](config[_0x636f('0x52')],_0x636f('0x56'),util['format'](_0x636f('0x57'),_0x4baedd[_0x636f('0x4f')],_0x4baedd[_0x636f('0x53')]));fs['unlinkSync'](_0x766cdb);fs[_0x636f('0x64')](_0x51688d);return _0x4baedd;})[_0x636f('0x27')](function(_0x42970e){if(_0x42970e){return _0xb81d06[_0x636f('0x1c')](0xcc)[_0x636f('0x2c')]();}})[_0x636f('0x27')](handleEntityNotFound(_0xb81d06,null))[_0x636f('0x4a')](handleError(_0xb81d06,null));};
\ No newline at end of file
index dc29352..35ceab3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe035=['../../config/logger','api','moment','bluebird','path','./sound.attributes','exports','define','Sound','lodash','util'];(function(_0x58fa36,_0x1756a8){var _0x11fb28=function(_0x38204b){while(--_0x38204b){_0x58fa36['push'](_0x58fa36['shift']());}};_0x11fb28(++_0x1756a8);}(_0xe035,0x1a0));var _0x5e03=function(_0x278455,_0x29bf0a){_0x278455=_0x278455-0x0;var _0x16ce7d=_0xe035[_0x278455];return _0x16ce7d;};'use strict';var _=require(_0x5e03('0x0'));var util=require(_0x5e03('0x1'));var logger=require(_0x5e03('0x2'))(_0x5e03('0x3'));var moment=require(_0x5e03('0x4'));var BPromise=require(_0x5e03('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x5e03('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x5e03('0x7'));module[_0x5e03('0x8')]=function(_0x827b64,_0x8d5367){return _0x827b64[_0x5e03('0x9')](_0x5e03('0xa'),attributes,{'tableName':'tools_sounds','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa0d6=['lodash','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./sound.attributes','exports','define','tools_sounds'];(function(_0x456cbb,_0x547275){var _0x9c3a70=function(_0x1c8686){while(--_0x1c8686){_0x456cbb['push'](_0x456cbb['shift']());}};_0x9c3a70(++_0x547275);}(_0xa0d6,0xcc));var _0x6a0d=function(_0x59eb84,_0x42f9b1){_0x59eb84=_0x59eb84-0x0;var _0x2d7e6e=_0xa0d6[_0x59eb84];return _0x2d7e6e;};'use strict';var _=require(_0x6a0d('0x0'));var util=require('util');var logger=require(_0x6a0d('0x1'))(_0x6a0d('0x2'));var moment=require(_0x6a0d('0x3'));var BPromise=require(_0x6a0d('0x4'));var rp=require(_0x6a0d('0x5'));var fs=require('fs');var path=require(_0x6a0d('0x6'));var rimraf=require('rimraf');var config=require(_0x6a0d('0x7'));var attributes=require(_0x6a0d('0x8'));module[_0x6a0d('0x9')]=function(_0x16d4ef,_0x1b07b1){return _0x16d4ef[_0x6a0d('0xa')]('Sound',attributes,{'tableName':_0x6a0d('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ab055f9..53e3aa8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ee9=['rpc','../../config/environment','client','request','then','info','Sound,\x20%s,\x20%s','request\x20sent','Sound,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','ShowSound','Sound','options','raw','where','attributes','include','map','model','debug','lodash','util','randomstring','../../config/utils'];(function(_0x191eb4,_0xa60c80){var _0x2e090a=function(_0x5522a7){while(--_0x5522a7){_0x191eb4['push'](_0x191eb4['shift']());}};_0x2e090a(++_0xa60c80);}(_0x9ee9,0xc0));var _0x99ee=function(_0x12f04a,_0x263d14){_0x12f04a=_0x12f04a-0x0;var _0x3be8bc=_0x9ee9[_0x12f04a];return _0x3be8bc;};'use strict';var _=require(_0x99ee('0x0'));var util=require(_0x99ee('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x99ee('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x99ee('0x3'));var logger=require('../../config/logger')(_0x99ee('0x4'));var config=require(_0x99ee('0x5'));var jayson=require('jayson/promise');var client=jayson[_0x99ee('0x6')]['http']({'port':0x232a});function respondWithRpcPromise(_0x50be50,_0x14943d,_0x214941){return new BPromise(function(_0x1cb294,_0x162d99){return client[_0x99ee('0x7')](_0x50be50,_0x214941)[_0x99ee('0x8')](function(_0xad1ed6){logger[_0x99ee('0x9')](_0x99ee('0xa'),_0x14943d,_0x99ee('0xb'));logger['debug'](_0x99ee('0xc'),_0x14943d,_0x99ee('0xb'),JSON[_0x99ee('0xd')](_0xad1ed6));if(_0xad1ed6[_0x99ee('0xe')]){if(_0xad1ed6['error'][_0x99ee('0xf')]===0x1f4){logger['error'](_0x99ee('0xa'),_0x14943d,_0xad1ed6[_0x99ee('0xe')][_0x99ee('0x10')]);return _0x162d99(_0xad1ed6['error']['message']);}logger[_0x99ee('0xe')](_0x99ee('0xa'),_0x14943d,_0xad1ed6[_0x99ee('0xe')][_0x99ee('0x10')]);return _0x1cb294(_0xad1ed6[_0x99ee('0xe')][_0x99ee('0x10')]);}else{logger[_0x99ee('0x9')]('Sound,\x20%s,\x20%s',_0x14943d,_0x99ee('0xb'));_0x1cb294(_0xad1ed6['result'][_0x99ee('0x10')]);}})[_0x99ee('0x11')](function(_0x1a497c){logger['error'](_0x99ee('0xa'),_0x14943d,_0x1a497c);_0x162d99(_0x1a497c);});});}exports[_0x99ee('0x12')]=function(_0x1e9ab7){var _0x1e07e5=this;return new Promise(function(_0x786ce8,_0x4da86e){return db[_0x99ee('0x13')]['find']({'raw':_0x1e9ab7[_0x99ee('0x14')]?_0x1e9ab7['options'][_0x99ee('0x15')]===undefined?!![]:![]:!![],'where':_0x1e9ab7[_0x99ee('0x14')]?_0x1e9ab7[_0x99ee('0x14')][_0x99ee('0x16')]||null:null,'attributes':_0x1e9ab7[_0x99ee('0x14')]?_0x1e9ab7[_0x99ee('0x14')][_0x99ee('0x17')]||null:null,'include':_0x1e9ab7[_0x99ee('0x14')]?_0x1e9ab7['options'][_0x99ee('0x18')]?_[_0x99ee('0x19')](_0x1e9ab7[_0x99ee('0x14')][_0x99ee('0x18')],function(_0x377c8e){return{'model':db[_0x377c8e['model']],'as':_0x377c8e['as'],'attributes':_0x377c8e['attributes'],'include':_0x377c8e['include']?_[_0x99ee('0x19')](_0x377c8e[_0x99ee('0x18')],function(_0x54e944){return{'model':db[_0x54e944['model']],'as':_0x54e944['as'],'attributes':_0x54e944[_0x99ee('0x17')],'include':_0x54e944[_0x99ee('0x18')]?_[_0x99ee('0x19')](_0x54e944[_0x99ee('0x18')],function(_0x264def){return{'model':db[_0x264def[_0x99ee('0x1a')]],'as':_0x264def['as'],'attributes':_0x264def[_0x99ee('0x17')]};}):[]};}):[]};}):[]:[]})[_0x99ee('0x8')](function(_0x13a833){logger[_0x99ee('0x9')](_0x99ee('0x12'),_0x1e9ab7);logger[_0x99ee('0x1b')](_0x99ee('0x12'),_0x1e9ab7,JSON[_0x99ee('0xd')](_0x13a833));_0x786ce8(_0x13a833);})[_0x99ee('0x11')](function(_0x1f0fa6){logger[_0x99ee('0xe')](_0x99ee('0x12'),_0x1f0fa6[_0x99ee('0x10')],_0x1e9ab7);_0x4da86e(_0x1e07e5[_0x99ee('0xe')](0x1f4,_0x1f0fa6['message']));});});};
\ No newline at end of file
+var _0xf9f5=['../../config/logger','jayson/promise','client','request','then','request\x20sent','debug','Sound,\x20%s,\x20%s,\x20%s','error','message','Sound,\x20%s,\x20%s','result','catch','ShowSound','Sound','find','options','where','include','map','model','info','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils'];(function(_0x48608c,_0xd27843){var _0x3a77be=function(_0x387b39){while(--_0x387b39){_0x48608c['push'](_0x48608c['shift']());}};_0x3a77be(++_0xd27843);}(_0xf9f5,0x1c9));var _0x5f9f=function(_0x1fd641,_0x1d0926){_0x1fd641=_0x1fd641-0x0;var _0x4a09ee=_0xf9f5[_0x1fd641];return _0x4a09ee;};'use strict';var _=require(_0x5f9f('0x0'));var util=require(_0x5f9f('0x1'));var moment=require(_0x5f9f('0x2'));var BPromise=require(_0x5f9f('0x3'));var rs=require(_0x5f9f('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5f9f('0x5'))['db'];var utils=require(_0x5f9f('0x6'));var logger=require(_0x5f9f('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x5f9f('0x8'));var client=jayson[_0x5f9f('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x22917e,_0x357339,_0xebf3fd){return new BPromise(function(_0x4ce669,_0x24afbd){return client[_0x5f9f('0xa')](_0x22917e,_0xebf3fd)[_0x5f9f('0xb')](function(_0x5163e1){logger['info']('Sound,\x20%s,\x20%s',_0x357339,_0x5f9f('0xc'));logger[_0x5f9f('0xd')](_0x5f9f('0xe'),_0x357339,_0x5f9f('0xc'),JSON['stringify'](_0x5163e1));if(_0x5163e1[_0x5f9f('0xf')]){if(_0x5163e1[_0x5f9f('0xf')]['code']===0x1f4){logger[_0x5f9f('0xf')]('Sound,\x20%s,\x20%s',_0x357339,_0x5163e1['error'][_0x5f9f('0x10')]);return _0x24afbd(_0x5163e1['error']['message']);}logger[_0x5f9f('0xf')](_0x5f9f('0x11'),_0x357339,_0x5163e1[_0x5f9f('0xf')][_0x5f9f('0x10')]);return _0x4ce669(_0x5163e1[_0x5f9f('0xf')][_0x5f9f('0x10')]);}else{logger['info']('Sound,\x20%s,\x20%s',_0x357339,_0x5f9f('0xc'));_0x4ce669(_0x5163e1[_0x5f9f('0x12')][_0x5f9f('0x10')]);}})[_0x5f9f('0x13')](function(_0xbea22e){logger['error'](_0x5f9f('0x11'),_0x357339,_0xbea22e);_0x24afbd(_0xbea22e);});});}exports[_0x5f9f('0x14')]=function(_0x4794ef){var _0x44b1f5=this;return new Promise(function(_0x157669,_0x26ac24){return db[_0x5f9f('0x15')][_0x5f9f('0x16')]({'raw':_0x4794ef[_0x5f9f('0x17')]?_0x4794ef[_0x5f9f('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x4794ef[_0x5f9f('0x17')]?_0x4794ef[_0x5f9f('0x17')][_0x5f9f('0x18')]||null:null,'attributes':_0x4794ef[_0x5f9f('0x17')]?_0x4794ef[_0x5f9f('0x17')]['attributes']||null:null,'include':_0x4794ef[_0x5f9f('0x17')]?_0x4794ef['options'][_0x5f9f('0x19')]?_[_0x5f9f('0x1a')](_0x4794ef[_0x5f9f('0x17')][_0x5f9f('0x19')],function(_0x390f48){return{'model':db[_0x390f48[_0x5f9f('0x1b')]],'as':_0x390f48['as'],'attributes':_0x390f48['attributes'],'include':_0x390f48['include']?_[_0x5f9f('0x1a')](_0x390f48[_0x5f9f('0x19')],function(_0x17793f){return{'model':db[_0x17793f[_0x5f9f('0x1b')]],'as':_0x17793f['as'],'attributes':_0x17793f['attributes'],'include':_0x17793f[_0x5f9f('0x19')]?_['map'](_0x17793f['include'],function(_0x16e667){return{'model':db[_0x16e667[_0x5f9f('0x1b')]],'as':_0x16e667['as'],'attributes':_0x16e667['attributes']};}):[]};}):[]};}):[]:[]})[_0x5f9f('0xb')](function(_0x2d8c7f){logger[_0x5f9f('0x1c')]('ShowSound',_0x4794ef);logger['debug'](_0x5f9f('0x14'),_0x4794ef,JSON['stringify'](_0x2d8c7f));_0x157669(_0x2d8c7f);})[_0x5f9f('0x13')](function(_0x55f43e){logger[_0x5f9f('0xf')](_0x5f9f('0x14'),_0x55f43e[_0x5f9f('0x10')],_0x4794ef);_0x26ac24(_0x44b1f5[_0x5f9f('0xf')](0x1f4,_0x55f43e[_0x5f9f('0x10')]));});});};
\ No newline at end of file
index ec9ebc3..3a09e63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b0e=['./squareMessage.controller','get','isAuthenticated','index','show','post','create','/:id','delete','destroy','exports','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x3ae8f4,_0x2920f4){var _0x367312=function(_0x4dffbf){while(--_0x4dffbf){_0x3ae8f4['push'](_0x3ae8f4['shift']());}};_0x367312(++_0x2920f4);}(_0x0b0e,0x187));var _0xe0b0=function(_0x4a747d,_0x3b747f){_0x4a747d=_0x4a747d-0x0;var _0x3a5b5c=_0x0b0e[_0x4a747d];return _0x3a5b5c;};'use strict';var multer=require(_0xe0b0('0x0'));var util=require('util');var path=require(_0xe0b0('0x1'));var timeout=require('connect-timeout');var express=require(_0xe0b0('0x2'));var router=express[_0xe0b0('0x3')]();var fs_extra=require(_0xe0b0('0x4'));var auth=require(_0xe0b0('0x5'));var interaction=require(_0xe0b0('0x6'));var config=require(_0xe0b0('0x7'));var controller=require(_0xe0b0('0x8'));router[_0xe0b0('0x9')]('/',auth[_0xe0b0('0xa')](),controller[_0xe0b0('0xb')]);router[_0xe0b0('0x9')]('/:id',auth['isAuthenticated'](),controller[_0xe0b0('0xc')]);router[_0xe0b0('0xd')]('/',auth[_0xe0b0('0xa')](),controller[_0xe0b0('0xe')]);router['put'](_0xe0b0('0xf'),auth[_0xe0b0('0xa')](),controller['update']);router[_0xe0b0('0x10')](_0xe0b0('0xf'),auth['isAuthenticated'](),controller[_0xe0b0('0x11')]);module[_0xe0b0('0x12')]=router;
\ No newline at end of file
+var _0x4fc2=['show','post','create','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./squareMessage.controller','isAuthenticated','index','/:id'];(function(_0x23ec06,_0x561142){var _0x2831d4=function(_0x3802bc){while(--_0x3802bc){_0x23ec06['push'](_0x23ec06['shift']());}};_0x2831d4(++_0x561142);}(_0x4fc2,0x111));var _0x24fc=function(_0x440917,_0x20ea7b){_0x440917=_0x440917-0x0;var _0x5e906b=_0x4fc2[_0x440917];return _0x5e906b;};'use strict';var multer=require(_0x24fc('0x0'));var util=require(_0x24fc('0x1'));var path=require(_0x24fc('0x2'));var timeout=require(_0x24fc('0x3'));var express=require('express');var router=express[_0x24fc('0x4')]();var fs_extra=require(_0x24fc('0x5'));var auth=require(_0x24fc('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x24fc('0x7'));var controller=require(_0x24fc('0x8'));router['get']('/',auth[_0x24fc('0x9')](),controller[_0x24fc('0xa')]);router['get'](_0x24fc('0xb'),auth[_0x24fc('0x9')](),controller[_0x24fc('0xc')]);router[_0x24fc('0xd')]('/',auth[_0x24fc('0x9')](),controller[_0x24fc('0xe')]);router['put'](_0x24fc('0xb'),auth[_0x24fc('0x9')](),controller[_0x24fc('0xf')]);router[_0x24fc('0x10')](_0x24fc('0xb'),auth[_0x24fc('0x9')](),controller[_0x24fc('0x11')]);module[_0x24fc('0x12')]=router;
\ No newline at end of file
index 2856f28..3aeb152 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x11a8=['ENUM','out','sequelize','exports','STRING'];(function(_0x36dd03,_0x5a7c41){var _0x13992f=function(_0x2a259b){while(--_0x2a259b){_0x36dd03['push'](_0x36dd03['shift']());}};_0x13992f(++_0x5a7c41);}(_0x11a8,0xac));var _0x811a=function(_0x48a8db,_0x495a7b){_0x48a8db=_0x48a8db-0x0;var _0x4ec17d=_0x11a8[_0x48a8db];return _0x4ec17d;};'use strict';var Sequelize=require(_0x811a('0x0'));module[_0x811a('0x1')]={'uniqueid':{'type':Sequelize[_0x811a('0x2')]},'body':{'type':Sequelize['TEXT']('medium'),'allowNull':![]},'direction':{'type':Sequelize[_0x811a('0x3')]('in',_0x811a('0x4')),'defaultValue':_0x811a('0x4'),'allowNull':![]},'providerName':{'type':Sequelize[_0x811a('0x2')]},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
+var _0x725a=['sequelize','exports','STRING','medium','ENUM','out','TEXT'];(function(_0x274822,_0x19d7cd){var _0x4ef847=function(_0xaec9f6){while(--_0xaec9f6){_0x274822['push'](_0x274822['shift']());}};_0x4ef847(++_0x19d7cd);}(_0x725a,0x103));var _0xa725=function(_0x10677c,_0x57bd1d){_0x10677c=_0x10677c-0x0;var _0x3e6748=_0x725a[_0x10677c];return _0x3e6748;};'use strict';var Sequelize=require(_0xa725('0x0'));module[_0xa725('0x1')]={'uniqueid':{'type':Sequelize[_0xa725('0x2')]},'body':{'type':Sequelize['TEXT'](_0xa725('0x3')),'allowNull':![]},'direction':{'type':Sequelize[_0xa725('0x4')]('in',_0xa725('0x5')),'defaultValue':_0xa725('0x5'),'allowNull':![]},'providerName':{'type':Sequelize[_0xa725('0x2')]},'providerResponse':{'type':Sequelize[_0xa725('0x6')]}};
\ No newline at end of file
index 71d8023..f3ccd98 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x202a=['intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','options','count','include','findAll','rows','catch','show','rawAttributes','includeAll','body','find','params','destroy','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','status','end','offset','undefined','limit','set','Content-Range','json','apply','update','then','sendStatus','error','stack','name','send','index','map','SquareMessage','fieldName','model','query','keys','filters'];(function(_0xb27371,_0x47fc76){var _0x67bcd0=function(_0xb4ea02){while(--_0xb4ea02){_0xb27371['push'](_0xb27371['shift']());}};_0x67bcd0(++_0x47fc76);}(_0x202a,0xf8));var _0xa202=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x202a[_0x321bb2];return _0x9c12ed;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xa202('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa202('0x1'));var rp=require(_0xa202('0x2'));var moment=require(_0xa202('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xa202('0x4'));var util=require(_0xa202('0x5'));var path=require(_0xa202('0x6'));var sox=require('sox');var csv=require(_0xa202('0x7'));var ejs=require(_0xa202('0x8'));var fs=require('fs');var fs_extra=require(_0xa202('0x9'));var _=require(_0xa202('0xa'));var squel=require(_0xa202('0xb'));var crypto=require(_0xa202('0xc'));var jsforce=require(_0xa202('0xd'));var deskjs=require(_0xa202('0xe'));var toCsv=require(_0xa202('0x7'));var querystring=require(_0xa202('0xf'));var Papa=require(_0xa202('0x10'));var Redis=require(_0xa202('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xa202('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa202('0x13'));var logger=require(_0xa202('0x14'))('api');var utils=require(_0xa202('0x15'));var config=require(_0xa202('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xa202('0x17'))['db'];function respondWithStatusCode(_0x6787f7,_0x745440){_0x745440=_0x745440||0xcc;return function(_0x1dca69){if(_0x1dca69){return _0x6787f7['sendStatus'](_0x745440);}return _0x6787f7[_0xa202('0x18')](_0x745440)[_0xa202('0x19')]();};}function respondWithResult(_0x3d83ee,_0x105350){_0x105350=_0x105350||0xc8;return function(_0x33294d){if(_0x33294d){return _0x3d83ee[_0xa202('0x18')](_0x105350)['json'](_0x33294d);}};}function respondWithFilteredResult(_0x6acd9a,_0x5cec1f){return function(_0x16b3d5){if(_0x16b3d5){var _0x2ef86f=typeof _0x5cec1f[_0xa202('0x1a')]===_0xa202('0x1b')&&typeof _0x5cec1f[_0xa202('0x1c')]===_0xa202('0x1b');var _0xac27e6=_0x16b3d5['count'];var _0x5ea51d=_0x2ef86f?0x0:_0x5cec1f[_0xa202('0x1a')];var _0x1f70d5=_0x2ef86f?_0x16b3d5['count']:_0x5cec1f[_0xa202('0x1a')]+_0x5cec1f[_0xa202('0x1c')];var _0x28d479;if(_0x1f70d5>=_0xac27e6){_0x1f70d5=_0xac27e6;_0x28d479=0xc8;}else{_0x28d479=0xce;}_0x6acd9a[_0xa202('0x18')](_0x28d479);return _0x6acd9a[_0xa202('0x1d')](_0xa202('0x1e'),_0x5ea51d+'-'+_0x1f70d5+'/'+_0xac27e6)[_0xa202('0x1f')](_0x16b3d5);}return null;};}function patchUpdates(_0xce5cc7){return function(_0x2e08cb){try{jsonpatch[_0xa202('0x20')](_0x2e08cb,_0xce5cc7,!![]);}catch(_0x266dd7){return BPromise['reject'](_0x266dd7);}return _0x2e08cb['save']();};}function saveUpdates(_0x2b8983,_0x8a840f){return function(_0x3666b7){if(_0x3666b7){return _0x3666b7[_0xa202('0x21')](_0x2b8983)[_0xa202('0x22')](function(_0x72b956){return _0x72b956;});}return null;};}function removeEntity(_0xbb4b2b,_0x155baf){return function(_0x3bb45a){if(_0x3bb45a){return _0x3bb45a['destroy']()[_0xa202('0x22')](function(){_0xbb4b2b['status'](0xcc)[_0xa202('0x19')]();});}};}function handleEntityNotFound(_0x4e771d,_0x550bb5){return function(_0x33012c){if(!_0x33012c){_0x4e771d[_0xa202('0x23')](0x194);}return _0x33012c;};}function handleError(_0x26541b,_0x4b215c){_0x4b215c=_0x4b215c||0x1f4;return function(_0x17c2b8){logger[_0xa202('0x24')](_0x17c2b8[_0xa202('0x25')]);if(_0x17c2b8[_0xa202('0x26')]){delete _0x17c2b8[_0xa202('0x26')];}_0x26541b[_0xa202('0x18')](_0x4b215c)[_0xa202('0x27')](_0x17c2b8);};}exports[_0xa202('0x28')]=function(_0x10975e,_0x5e3307){var _0x30f1c3={},_0x378d3d={},_0x9736d={'count':0x0,'rows':[]};var _0x4b8305=_[_0xa202('0x29')](db[_0xa202('0x2a')]['rawAttributes'],function(_0x3939c6){return{'name':_0x3939c6[_0xa202('0x2b')],'type':_0x3939c6['type']['key']};});_0x378d3d[_0xa202('0x2c')]=_['map'](_0x4b8305,'name');_0x378d3d[_0xa202('0x2d')]=_[_0xa202('0x2e')](_0x10975e[_0xa202('0x2d')]);_0x378d3d[_0xa202('0x2f')]=_[_0xa202('0x30')](_0x378d3d[_0xa202('0x2c')],_0x378d3d[_0xa202('0x2d')]);_0x30f1c3[_0xa202('0x31')]=_[_0xa202('0x30')](_0x378d3d[_0xa202('0x2c')],qs[_0xa202('0x32')](_0x10975e[_0xa202('0x2d')][_0xa202('0x32')]));_0x30f1c3[_0xa202('0x31')]=_0x30f1c3[_0xa202('0x31')][_0xa202('0x33')]?_0x30f1c3[_0xa202('0x31')]:_0x378d3d[_0xa202('0x2c')];if(!_0x10975e['query'][_0xa202('0x34')](_0xa202('0x35'))){_0x30f1c3[_0xa202('0x1c')]=qs[_0xa202('0x1c')](_0x10975e[_0xa202('0x2d')]['limit']);_0x30f1c3[_0xa202('0x1a')]=qs['offset'](_0x10975e['query'][_0xa202('0x1a')]);}_0x30f1c3[_0xa202('0x36')]=qs['sort'](_0x10975e[_0xa202('0x2d')][_0xa202('0x37')]);_0x30f1c3[_0xa202('0x38')]=qs[_0xa202('0x2f')](_[_0xa202('0x39')](_0x10975e[_0xa202('0x2d')],_0x378d3d['filters']),_0x4b8305);if(_0x10975e[_0xa202('0x2d')][_0xa202('0x3a')]){_0x30f1c3[_0xa202('0x38')]=_[_0xa202('0x3b')](_0x30f1c3['where'],{'$or':_[_0xa202('0x29')](_0x4b8305,function(_0x188db2){if(_0x188db2[_0xa202('0x3c')]!=='VIRTUAL'){var _0x16be42={};_0x16be42[_0x188db2['name']]={'$like':'%'+_0x10975e[_0xa202('0x2d')][_0xa202('0x3a')]+'%'};return _0x16be42;}})});}_0x30f1c3=_[_0xa202('0x3b')]({},_0x30f1c3,_0x10975e[_0xa202('0x3d')]);var _0x4a38a2={'where':_0x30f1c3['where']};return db[_0xa202('0x2a')][_0xa202('0x3e')](_0x4a38a2)['then'](function(_0x2bf33f){_0x9736d[_0xa202('0x3e')]=_0x2bf33f;if(_0x10975e['query']['includeAll']){_0x30f1c3[_0xa202('0x3f')]=[{'all':!![]}];}return db[_0xa202('0x2a')][_0xa202('0x40')](_0x30f1c3);})[_0xa202('0x22')](function(_0x1fa08e){_0x9736d[_0xa202('0x41')]=_0x1fa08e;return _0x9736d;})[_0xa202('0x22')](respondWithFilteredResult(_0x5e3307,_0x30f1c3))[_0xa202('0x42')](handleError(_0x5e3307,null));};exports[_0xa202('0x43')]=function(_0x5ecdb6,_0xed7568){var _0x52ba46={'raw':!![],'where':{'id':_0x5ecdb6['params']['id']}},_0xd3ce4b={};_0xd3ce4b['model']=_['keys'](db['SquareMessage'][_0xa202('0x44')]);_0xd3ce4b['query']=_['keys'](_0x5ecdb6['query']);_0xd3ce4b[_0xa202('0x2f')]=_[_0xa202('0x30')](_0xd3ce4b['model'],_0xd3ce4b[_0xa202('0x2d')]);_0x52ba46[_0xa202('0x31')]=_[_0xa202('0x30')](_0xd3ce4b[_0xa202('0x2c')],qs[_0xa202('0x32')](_0x5ecdb6[_0xa202('0x2d')]['fields']));_0x52ba46[_0xa202('0x31')]=_0x52ba46[_0xa202('0x31')]['length']?_0x52ba46['attributes']:_0xd3ce4b[_0xa202('0x2c')];if(_0x5ecdb6[_0xa202('0x2d')][_0xa202('0x45')]){_0x52ba46[_0xa202('0x3f')]=[{'all':!![]}];}_0x52ba46=_[_0xa202('0x3b')]({},_0x52ba46,_0x5ecdb6[_0xa202('0x3d')]);return db['SquareMessage']['find'](_0x52ba46)[_0xa202('0x22')](handleEntityNotFound(_0xed7568,null))['then'](respondWithResult(_0xed7568,null))[_0xa202('0x42')](handleError(_0xed7568,null));};exports['create']=function(_0x2136de,_0x5a70ad){return db[_0xa202('0x2a')]['create'](_0x2136de[_0xa202('0x46')],{})['then'](respondWithResult(_0x5a70ad,0xc9))['catch'](handleError(_0x5a70ad,null));};exports[_0xa202('0x21')]=function(_0x4623ca,_0x411f20){if(_0x4623ca['body']['id']){delete _0x4623ca[_0xa202('0x46')]['id'];}return db[_0xa202('0x2a')][_0xa202('0x47')]({'where':{'id':_0x4623ca[_0xa202('0x48')]['id']}})[_0xa202('0x22')](handleEntityNotFound(_0x411f20,null))[_0xa202('0x22')](saveUpdates(_0x4623ca[_0xa202('0x46')],null))[_0xa202('0x22')](respondWithResult(_0x411f20,null))['catch'](handleError(_0x411f20,null));};exports[_0xa202('0x49')]=function(_0x16d49f,_0x485f5e){return db['SquareMessage'][_0xa202('0x47')]({'where':{'id':_0x16d49f[_0xa202('0x48')]['id']}})['then'](handleEntityNotFound(_0x485f5e,null))[_0xa202('0x22')](removeEntity(_0x485f5e,null))[_0xa202('0x42')](handleError(_0x485f5e,null));};
\ No newline at end of file
+var _0x272a=['create','body','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','end','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','sendStatus','error','stack','name','send','index','fieldName','type','model','keys','filters','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','map','filter','options','SquareMessage','include','findAll','rows','catch','show','params','rawAttributes','includeAll','find'];(function(_0x9df060,_0x253d33){var _0x338dfe=function(_0x17d9a5){while(--_0x17d9a5){_0x9df060['push'](_0x9df060['shift']());}};_0x338dfe(++_0x253d33);}(_0x272a,0x132));var _0xa272=function(_0x1ea5a1,_0x490472){_0x1ea5a1=_0x1ea5a1-0x0;var _0xd53a86=_0x272a[_0x1ea5a1];return _0xd53a86;};'use strict';var emlformat=require(_0xa272('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xa272('0x1'));var jsonpatch=require(_0xa272('0x2'));var rp=require(_0xa272('0x3'));var moment=require(_0xa272('0x4'));var BPromise=require(_0xa272('0x5'));var Mustache=require(_0xa272('0x6'));var util=require(_0xa272('0x7'));var path=require(_0xa272('0x8'));var sox=require(_0xa272('0x9'));var csv=require(_0xa272('0xa'));var ejs=require(_0xa272('0xb'));var fs=require('fs');var fs_extra=require(_0xa272('0xc'));var _=require(_0xa272('0xd'));var squel=require(_0xa272('0xe'));var crypto=require('crypto');var jsforce=require(_0xa272('0xf'));var deskjs=require(_0xa272('0x10'));var toCsv=require(_0xa272('0xa'));var querystring=require('querystring');var Papa=require(_0xa272('0x11'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xa272('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa272('0x13'));var logger=require(_0xa272('0x14'))(_0xa272('0x15'));var utils=require(_0xa272('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xa272('0x17'));var db=require(_0xa272('0x18'))['db'];function respondWithStatusCode(_0x434b34,_0x44f92e){_0x44f92e=_0x44f92e||0xcc;return function(_0x461210){if(_0x461210){return _0x434b34['sendStatus'](_0x44f92e);}return _0x434b34[_0xa272('0x19')](_0x44f92e)[_0xa272('0x1a')]();};}function respondWithResult(_0x5d5ee6,_0x5ef847){_0x5ef847=_0x5ef847||0xc8;return function(_0x131bba){if(_0x131bba){return _0x5d5ee6[_0xa272('0x19')](_0x5ef847)['json'](_0x131bba);}};}function respondWithFilteredResult(_0x38da0d,_0x571c96){return function(_0x658261){if(_0x658261){var _0x4ddee6=typeof _0x571c96[_0xa272('0x1b')]===_0xa272('0x1c')&&typeof _0x571c96[_0xa272('0x1d')]===_0xa272('0x1c');var _0x34171e=_0x658261[_0xa272('0x1e')];var _0x8406a3=_0x4ddee6?0x0:_0x571c96[_0xa272('0x1b')];var _0x4cc65d=_0x4ddee6?_0x658261['count']:_0x571c96[_0xa272('0x1b')]+_0x571c96[_0xa272('0x1d')];var _0x4bd420;if(_0x4cc65d>=_0x34171e){_0x4cc65d=_0x34171e;_0x4bd420=0xc8;}else{_0x4bd420=0xce;}_0x38da0d[_0xa272('0x19')](_0x4bd420);return _0x38da0d[_0xa272('0x1f')](_0xa272('0x20'),_0x8406a3+'-'+_0x4cc65d+'/'+_0x34171e)['json'](_0x658261);}return null;};}function patchUpdates(_0x1cccff){return function(_0x19760b){try{jsonpatch[_0xa272('0x21')](_0x19760b,_0x1cccff,!![]);}catch(_0x13eeb7){return BPromise['reject'](_0x13eeb7);}return _0x19760b[_0xa272('0x22')]();};}function saveUpdates(_0x5e67a9,_0x578cb9){return function(_0x489d94){if(_0x489d94){return _0x489d94[_0xa272('0x23')](_0x5e67a9)[_0xa272('0x24')](function(_0xe7b1a5){return _0xe7b1a5;});}return null;};}function removeEntity(_0x173b1c,_0x59ee62){return function(_0x209b8d){if(_0x209b8d){return _0x209b8d[_0xa272('0x25')]()[_0xa272('0x24')](function(){_0x173b1c[_0xa272('0x19')](0xcc)[_0xa272('0x1a')]();});}};}function handleEntityNotFound(_0x3908c2,_0x1992d4){return function(_0x3bd59a){if(!_0x3bd59a){_0x3908c2[_0xa272('0x26')](0x194);}return _0x3bd59a;};}function handleError(_0x58569e,_0x440c59){_0x440c59=_0x440c59||0x1f4;return function(_0x24004b){logger[_0xa272('0x27')](_0x24004b[_0xa272('0x28')]);if(_0x24004b[_0xa272('0x29')]){delete _0x24004b[_0xa272('0x29')];}_0x58569e[_0xa272('0x19')](_0x440c59)[_0xa272('0x2a')](_0x24004b);};}exports[_0xa272('0x2b')]=function(_0x2e8c84,_0x54f19f){var _0x539639={},_0x11daeb={},_0x156125={'count':0x0,'rows':[]};var _0x2485fd=_['map'](db['SquareMessage']['rawAttributes'],function(_0x37d43b){return{'name':_0x37d43b[_0xa272('0x2c')],'type':_0x37d43b[_0xa272('0x2d')]['key']};});_0x11daeb[_0xa272('0x2e')]=_['map'](_0x2485fd,_0xa272('0x29'));_0x11daeb['query']=_[_0xa272('0x2f')](_0x2e8c84['query']);_0x11daeb[_0xa272('0x30')]=_[_0xa272('0x31')](_0x11daeb[_0xa272('0x2e')],_0x11daeb[_0xa272('0x32')]);_0x539639[_0xa272('0x33')]=_[_0xa272('0x31')](_0x11daeb['model'],qs[_0xa272('0x34')](_0x2e8c84[_0xa272('0x32')][_0xa272('0x34')]));_0x539639[_0xa272('0x33')]=_0x539639[_0xa272('0x33')][_0xa272('0x35')]?_0x539639[_0xa272('0x33')]:_0x11daeb['model'];if(!_0x2e8c84[_0xa272('0x32')][_0xa272('0x36')](_0xa272('0x37'))){_0x539639['limit']=qs[_0xa272('0x1d')](_0x2e8c84[_0xa272('0x32')]['limit']);_0x539639[_0xa272('0x1b')]=qs[_0xa272('0x1b')](_0x2e8c84['query'][_0xa272('0x1b')]);}_0x539639[_0xa272('0x38')]=qs['sort'](_0x2e8c84[_0xa272('0x32')][_0xa272('0x39')]);_0x539639[_0xa272('0x3a')]=qs[_0xa272('0x30')](_[_0xa272('0x3b')](_0x2e8c84[_0xa272('0x32')],_0x11daeb[_0xa272('0x30')]),_0x2485fd);if(_0x2e8c84[_0xa272('0x32')]['filter']){_0x539639[_0xa272('0x3a')]=_[_0xa272('0x3c')](_0x539639[_0xa272('0x3a')],{'$or':_[_0xa272('0x3d')](_0x2485fd,function(_0x1bc070){if(_0x1bc070[_0xa272('0x2d')]!=='VIRTUAL'){var _0x3d1b72={};_0x3d1b72[_0x1bc070[_0xa272('0x29')]]={'$like':'%'+_0x2e8c84[_0xa272('0x32')][_0xa272('0x3e')]+'%'};return _0x3d1b72;}})});}_0x539639=_[_0xa272('0x3c')]({},_0x539639,_0x2e8c84[_0xa272('0x3f')]);var _0x297625={'where':_0x539639['where']};return db[_0xa272('0x40')][_0xa272('0x1e')](_0x297625)[_0xa272('0x24')](function(_0x4bfab4){_0x156125[_0xa272('0x1e')]=_0x4bfab4;if(_0x2e8c84[_0xa272('0x32')]['includeAll']){_0x539639[_0xa272('0x41')]=[{'all':!![]}];}return db[_0xa272('0x40')][_0xa272('0x42')](_0x539639);})[_0xa272('0x24')](function(_0x40865d){_0x156125[_0xa272('0x43')]=_0x40865d;return _0x156125;})['then'](respondWithFilteredResult(_0x54f19f,_0x539639))[_0xa272('0x44')](handleError(_0x54f19f,null));};exports[_0xa272('0x45')]=function(_0x3a8320,_0x2570fe){var _0x203071={'raw':!![],'where':{'id':_0x3a8320[_0xa272('0x46')]['id']}},_0x59f073={};_0x59f073[_0xa272('0x2e')]=_[_0xa272('0x2f')](db[_0xa272('0x40')][_0xa272('0x47')]);_0x59f073[_0xa272('0x32')]=_[_0xa272('0x2f')](_0x3a8320['query']);_0x59f073['filters']=_[_0xa272('0x31')](_0x59f073[_0xa272('0x2e')],_0x59f073[_0xa272('0x32')]);_0x203071[_0xa272('0x33')]=_[_0xa272('0x31')](_0x59f073[_0xa272('0x2e')],qs['fields'](_0x3a8320[_0xa272('0x32')]['fields']));_0x203071['attributes']=_0x203071[_0xa272('0x33')]['length']?_0x203071[_0xa272('0x33')]:_0x59f073[_0xa272('0x2e')];if(_0x3a8320[_0xa272('0x32')][_0xa272('0x48')]){_0x203071['include']=[{'all':!![]}];}_0x203071=_['merge']({},_0x203071,_0x3a8320['options']);return db[_0xa272('0x40')][_0xa272('0x49')](_0x203071)[_0xa272('0x24')](handleEntityNotFound(_0x2570fe,null))[_0xa272('0x24')](respondWithResult(_0x2570fe,null))[_0xa272('0x44')](handleError(_0x2570fe,null));};exports[_0xa272('0x4a')]=function(_0x36fff9,_0xa3689a){return db[_0xa272('0x40')]['create'](_0x36fff9[_0xa272('0x4b')],{})[_0xa272('0x24')](respondWithResult(_0xa3689a,0xc9))[_0xa272('0x44')](handleError(_0xa3689a,null));};exports[_0xa272('0x23')]=function(_0x383f6e,_0x56d917){if(_0x383f6e[_0xa272('0x4b')]['id']){delete _0x383f6e[_0xa272('0x4b')]['id'];}return db[_0xa272('0x40')][_0xa272('0x49')]({'where':{'id':_0x383f6e[_0xa272('0x46')]['id']}})[_0xa272('0x24')](handleEntityNotFound(_0x56d917,null))[_0xa272('0x24')](saveUpdates(_0x383f6e[_0xa272('0x4b')],null))[_0xa272('0x24')](respondWithResult(_0x56d917,null))['catch'](handleError(_0x56d917,null));};exports['destroy']=function(_0x48fbc7,_0x2534f7){return db[_0xa272('0x40')][_0xa272('0x49')]({'where':{'id':_0x48fbc7['params']['id']}})[_0xa272('0x24')](handleEntityNotFound(_0x2534f7,null))[_0xa272('0x24')](removeEntity(_0x2534f7,null))[_0xa272('0x44')](handleError(_0x2534f7,null));};
\ No newline at end of file
index 867b2f0..17274fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a50=['define','SquareMessage','square_messages','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./squareMessage.attributes'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x2a50,0x177));var _0x02a5=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x2a50[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0x02a5('0x0'));var logger=require('../../config/logger')(_0x02a5('0x1'));var moment=require(_0x02a5('0x2'));var BPromise=require(_0x02a5('0x3'));var rp=require(_0x02a5('0x4'));var fs=require('fs');var path=require(_0x02a5('0x5'));var rimraf=require(_0x02a5('0x6'));var config=require(_0x02a5('0x7'));var attributes=require(_0x02a5('0x8'));module['exports']=function(_0x232204,_0x79dd13){return _0x232204[_0x02a5('0x9')](_0x02a5('0xa'),attributes,{'tableName':_0x02a5('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5a3e=['./squareMessage.attributes','define','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x51c343,_0x5703ab){var _0x4b677e=function(_0x49190a){while(--_0x49190a){_0x51c343['push'](_0x51c343['shift']());}};_0x4b677e(++_0x5703ab);}(_0x5a3e,0x110));var _0xe5a3=function(_0x400e30,_0x1e9e73){_0x400e30=_0x400e30-0x0;var _0x2599b2=_0x5a3e[_0x400e30];return _0x2599b2;};'use strict';var _=require(_0xe5a3('0x0'));var util=require('util');var logger=require(_0xe5a3('0x1'))(_0xe5a3('0x2'));var moment=require(_0xe5a3('0x3'));var BPromise=require(_0xe5a3('0x4'));var rp=require(_0xe5a3('0x5'));var fs=require('fs');var path=require(_0xe5a3('0x6'));var rimraf=require(_0xe5a3('0x7'));var config=require('../../config/environment');var attributes=require(_0xe5a3('0x8'));module['exports']=function(_0x50bbd1,_0x3abe19){return _0x50bbd1[_0xe5a3('0x9')]('SquareMessage',attributes,{'tableName':'square_messages','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 38f432e..56eb6fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7253=['CreateSquareMessage','SquareMessage','options','raw','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','request','SquareMessage,\x20%s,\x20%s','debug','SquareMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch'];(function(_0x277fa3,_0x3b2dde){var _0x2e4520=function(_0x209eab){while(--_0x209eab){_0x277fa3['push'](_0x277fa3['shift']());}};_0x2e4520(++_0x3b2dde);}(_0x7253,0x1be));var _0x3725=function(_0xd148b1,_0x300e46){_0xd148b1=_0xd148b1-0x0;var _0x1153af=_0x7253[_0xd148b1];return _0x1153af;};'use strict';var _=require(_0x3725('0x0'));var util=require(_0x3725('0x1'));var moment=require(_0x3725('0x2'));var BPromise=require(_0x3725('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x3725('0x4'));var db=require(_0x3725('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x3725('0x6'))(_0x3725('0x7'));var config=require('../../config/environment');var jayson=require(_0x3725('0x8'));var client=jayson[_0x3725('0x9')][_0x3725('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4b1734,_0x4af058,_0x227b37){return new BPromise(function(_0x462516,_0x3e0a05){return client[_0x3725('0xb')](_0x4b1734,_0x227b37)['then'](function(_0x223fa4){logger['info'](_0x3725('0xc'),_0x4af058,'request\x20sent');logger[_0x3725('0xd')](_0x3725('0xe'),_0x4af058,'request\x20sent',JSON[_0x3725('0xf')](_0x223fa4));if(_0x223fa4[_0x3725('0x10')]){if(_0x223fa4[_0x3725('0x10')][_0x3725('0x11')]===0x1f4){logger[_0x3725('0x10')]('SquareMessage,\x20%s,\x20%s',_0x4af058,_0x223fa4[_0x3725('0x10')]['message']);return _0x3e0a05(_0x223fa4['error']['message']);}logger[_0x3725('0x10')](_0x3725('0xc'),_0x4af058,_0x223fa4[_0x3725('0x10')]['message']);return _0x462516(_0x223fa4[_0x3725('0x10')][_0x3725('0x12')]);}else{logger[_0x3725('0x13')](_0x3725('0xc'),_0x4af058,'request\x20sent');_0x462516(_0x223fa4[_0x3725('0x14')][_0x3725('0x12')]);}})[_0x3725('0x15')](function(_0x2dd225){logger['error']('SquareMessage,\x20%s,\x20%s',_0x4af058,_0x2dd225);_0x3e0a05(_0x2dd225);});});}exports[_0x3725('0x16')]=function(_0xb06fcd){var _0x23af75=this;return new Promise(function(_0x2e3c7e,_0x155955){return db[_0x3725('0x17')]['create'](_0xb06fcd['body'],{'raw':_0xb06fcd[_0x3725('0x18')]?_0xb06fcd[_0x3725('0x18')][_0x3725('0x19')]===undefined?!![]:![]:!![]})['then'](function(_0x410040){logger['info'](_0x3725('0x16'),_0xb06fcd);logger[_0x3725('0xd')](_0x3725('0x16'),_0xb06fcd,JSON['stringify'](_0x410040));_0x2e3c7e(_0x410040);})[_0x3725('0x15')](function(_0x2aa373){logger[_0x3725('0x10')]('CreateSquareMessage',_0x2aa373['message'],_0xb06fcd);_0x155955(_0x23af75[_0x3725('0x10')](0x1f4,_0x2aa373['message']));});});};
\ No newline at end of file
+var _0x0f72=['request','SquareMessage,\x20%s,\x20%s','request\x20sent','debug','SquareMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch','CreateSquareMessage','SquareMessage','create','options','then','util','moment','randomstring','../../config/logger','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x7c04f0,_0x38d84e){var _0xe16803=function(_0x5291f4){while(--_0x5291f4){_0x7c04f0['push'](_0x7c04f0['shift']());}};_0xe16803(++_0x38d84e);}(_0x0f72,0x1d2));var _0x20f7=function(_0x4ce1cb,_0x1ef61a){_0x4ce1cb=_0x4ce1cb-0x0;var _0x4c9100=_0x0f72[_0x4ce1cb];return _0x4c9100;};'use strict';var _=require('lodash');var util=require(_0x20f7('0x0'));var moment=require(_0x20f7('0x1'));var BPromise=require('bluebird');var rs=require(_0x20f7('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x20f7('0x3'))(_0x20f7('0x4'));var config=require(_0x20f7('0x5'));var jayson=require(_0x20f7('0x6'));var client=jayson[_0x20f7('0x7')][_0x20f7('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x31ecb4,_0x452c51,_0x1818a2){return new BPromise(function(_0x2c972c,_0x3ceee0){return client[_0x20f7('0x9')](_0x31ecb4,_0x1818a2)['then'](function(_0x5ea900){logger['info'](_0x20f7('0xa'),_0x452c51,_0x20f7('0xb'));logger[_0x20f7('0xc')](_0x20f7('0xd'),_0x452c51,'request\x20sent',JSON[_0x20f7('0xe')](_0x5ea900));if(_0x5ea900[_0x20f7('0xf')]){if(_0x5ea900[_0x20f7('0xf')][_0x20f7('0x10')]===0x1f4){logger[_0x20f7('0xf')](_0x20f7('0xa'),_0x452c51,_0x5ea900[_0x20f7('0xf')][_0x20f7('0x11')]);return _0x3ceee0(_0x5ea900[_0x20f7('0xf')][_0x20f7('0x11')]);}logger[_0x20f7('0xf')](_0x20f7('0xa'),_0x452c51,_0x5ea900[_0x20f7('0xf')]['message']);return _0x2c972c(_0x5ea900[_0x20f7('0xf')][_0x20f7('0x11')]);}else{logger[_0x20f7('0x12')](_0x20f7('0xa'),_0x452c51,_0x20f7('0xb'));_0x2c972c(_0x5ea900['result'][_0x20f7('0x11')]);}})[_0x20f7('0x13')](function(_0x5634d5){logger['error'](_0x20f7('0xa'),_0x452c51,_0x5634d5);_0x3ceee0(_0x5634d5);});});}exports[_0x20f7('0x14')]=function(_0x372cfc){var _0x33f696=this;return new Promise(function(_0x9e2c62,_0x6d08a3){return db[_0x20f7('0x15')][_0x20f7('0x16')](_0x372cfc['body'],{'raw':_0x372cfc[_0x20f7('0x17')]?_0x372cfc[_0x20f7('0x17')]['raw']===undefined?!![]:![]:!![]})[_0x20f7('0x18')](function(_0x53e20f){logger[_0x20f7('0x12')](_0x20f7('0x14'),_0x372cfc);logger[_0x20f7('0xc')]('CreateSquareMessage',_0x372cfc,JSON[_0x20f7('0xe')](_0x53e20f));_0x9e2c62(_0x53e20f);})[_0x20f7('0x13')](function(_0x1b37af){logger[_0x20f7('0xf')](_0x20f7('0x14'),_0x1b37af[_0x20f7('0x11')],_0x372cfc);_0x6d08a3(_0x33f696[_0x20f7('0xf')](0x1f4,_0x1b37af[_0x20f7('0x11')]));});});};
\ No newline at end of file
index 4811d51..8114907 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x960c=['../../config/environment','./squareOdbc.controller','isAuthenticated','get','/:id','/:id/test','post','create','put','delete','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0xa2c51c,_0x98ad95){var _0x2f5401=function(_0xaa79c3){while(--_0xaa79c3){_0xa2c51c['push'](_0xa2c51c['shift']());}};_0x2f5401(++_0x98ad95);}(_0x960c,0xac));var _0xc960=function(_0xd4abe9,_0x311059){_0xd4abe9=_0xd4abe9-0x0;var _0x28907f=_0x960c[_0xd4abe9];return _0x28907f;};'use strict';var multer=require(_0xc960('0x0'));var util=require(_0xc960('0x1'));var path=require(_0xc960('0x2'));var timeout=require(_0xc960('0x3'));var express=require(_0xc960('0x4'));var router=express[_0xc960('0x5')]();var fs_extra=require(_0xc960('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xc960('0x7'));var config=require(_0xc960('0x8'));var controller=require(_0xc960('0x9'));router['get']('/',auth[_0xc960('0xa')](),controller['index']);router[_0xc960('0xb')](_0xc960('0xc'),auth[_0xc960('0xa')](),controller['show']);router['get'](_0xc960('0xd'),auth[_0xc960('0xa')](),timeout('15s'),controller['test']);router[_0xc960('0xe')]('/',auth[_0xc960('0xa')](),controller[_0xc960('0xf')]);router[_0xc960('0x10')](_0xc960('0xc'),auth[_0xc960('0xa')](),controller['update']);router[_0xc960('0x11')](_0xc960('0xc'),auth[_0xc960('0xa')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xade1=['delete','destroy','exports','util','path','express','Router','../../config/environment','./squareOdbc.controller','get','isAuthenticated','index','/:id','test','post','put','update'];(function(_0x667c3f,_0x1a9d60){var _0x4d1b23=function(_0x2432ff){while(--_0x2432ff){_0x667c3f['push'](_0x667c3f['shift']());}};_0x4d1b23(++_0x1a9d60);}(_0xade1,0xcf));var _0x1ade=function(_0x10ad69,_0x349b08){_0x10ad69=_0x10ad69-0x0;var _0x17d165=_0xade1[_0x10ad69];return _0x17d165;};'use strict';var multer=require('multer');var util=require(_0x1ade('0x0'));var path=require(_0x1ade('0x1'));var timeout=require('connect-timeout');var express=require(_0x1ade('0x2'));var router=express[_0x1ade('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x1ade('0x4'));var controller=require(_0x1ade('0x5'));router[_0x1ade('0x6')]('/',auth[_0x1ade('0x7')](),controller[_0x1ade('0x8')]);router[_0x1ade('0x6')](_0x1ade('0x9'),auth[_0x1ade('0x7')](),controller['show']);router['get']('/:id/test',auth['isAuthenticated'](),timeout('15s'),controller[_0x1ade('0xa')]);router[_0x1ade('0xb')]('/',auth[_0x1ade('0x7')](),controller['create']);router[_0x1ade('0xc')]('/:id',auth[_0x1ade('0x7')](),controller[_0x1ade('0xd')]);router[_0x1ade('0xe')](_0x1ade('0x9'),auth[_0x1ade('0x7')](),controller[_0x1ade('0xf')]);module[_0x1ade('0x10')]=router;
\ No newline at end of file
index 713e753..adca03a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa6ea=['STRING','exports'];(function(_0xd12591,_0x456154){var _0x4f2e32=function(_0x4fc2c5){while(--_0x4fc2c5){_0xd12591['push'](_0xd12591['shift']());}};_0x4f2e32(++_0x456154);}(_0xa6ea,0xd7));var _0xaa6e=function(_0x4cef4c,_0x7f3b18){_0x4cef4c=_0x4cef4c-0x0;var _0xd5d4ec=_0xa6ea[_0x4cef4c];return _0xd5d4ec;};'use strict';var Sequelize=require('sequelize');module[_0xaa6e('0x0')]={'name':{'type':Sequelize[_0xaa6e('0x1')],'unique':'name','allowNull':![]},'dsn':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x5daa=['STRING','sequelize','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5daa,0x181));var _0xa5da=function(_0x2d1e04,_0x589f98){_0x2d1e04=_0x2d1e04-0x0;var _0x49741b=_0x5daa[_0x2d1e04];return _0x49741b;};'use strict';var Sequelize=require(_0xa5da('0x0'));module[_0xa5da('0x1')]={'name':{'type':Sequelize[_0xa5da('0x2')],'unique':'name','allowNull':![]},'dsn':{'type':Sequelize[_0xa5da('0x2')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 9142654..734413a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x35ae=['rawAttributes','fieldName','key','model','map','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filters','merge','where','type','VIRTUAL','filter','includeAll','findAll','rows','catch','show','params','include','options','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','test','dsn','openSync','closeSync','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','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','reject','save','destroy','then','get','ODBC','end','error','stack','name','send','index','SquareOdbc'];(function(_0x1b9257,_0x238441){var _0x7fb9b7=function(_0x23441c){while(--_0x23441c){_0x1b9257['push'](_0x1b9257['shift']());}};_0x7fb9b7(++_0x238441);}(_0x35ae,0xe9));var _0xe35a=function(_0x1bda37,_0x239c41){_0x1bda37=_0x1bda37-0x0;var _0x51bf0f=_0x35ae[_0x1bda37];return _0x51bf0f;};'use strict';var emlformat=require(_0xe35a('0x0'));var rimraf=require(_0xe35a('0x1'));var zipdir=require(_0xe35a('0x2'));var jsonpatch=require(_0xe35a('0x3'));var rp=require(_0xe35a('0x4'));var moment=require(_0xe35a('0x5'));var BPromise=require(_0xe35a('0x6'));var Mustache=require('mustache');var util=require(_0xe35a('0x7'));var path=require(_0xe35a('0x8'));var sox=require(_0xe35a('0x9'));var csv=require(_0xe35a('0xa'));var ejs=require(_0xe35a('0xb'));var fs=require('fs');var fs_extra=require(_0xe35a('0xc'));var _=require(_0xe35a('0xd'));var squel=require(_0xe35a('0xe'));var crypto=require(_0xe35a('0xf'));var jsforce=require(_0xe35a('0x10'));var deskjs=require(_0xe35a('0x11'));var toCsv=require(_0xe35a('0xa'));var querystring=require('querystring');var Papa=require(_0xe35a('0x12'));var Redis=require(_0xe35a('0x13'));var authService=require('../../components/auth/service');var qs=require(_0xe35a('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xe35a('0x15'));var logger=require(_0xe35a('0x16'))(_0xe35a('0x17'));var utils=require(_0xe35a('0x18'));var config=require(_0xe35a('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0xe35a('0x1a'))['db'];function respondWithStatusCode(_0x28612c,_0x4623a0){_0x4623a0=_0x4623a0||0xcc;return function(_0x2f034f){if(_0x2f034f){return _0x28612c[_0xe35a('0x1b')](_0x4623a0);}return _0x28612c['status'](_0x4623a0)['end']();};}function respondWithResult(_0x542efa,_0x629376){_0x629376=_0x629376||0xc8;return function(_0x48e177){if(_0x48e177){return _0x542efa[_0xe35a('0x1c')](_0x629376)['json'](_0x48e177);}};}function respondWithFilteredResult(_0x28ad36,_0x3b6363){return function(_0x33e47a){if(_0x33e47a){var _0x2f14fe=typeof _0x3b6363[_0xe35a('0x1d')]===_0xe35a('0x1e')&&typeof _0x3b6363[_0xe35a('0x1f')]===_0xe35a('0x1e');var _0x32440e=_0x33e47a[_0xe35a('0x20')];var _0x5ea3a8=_0x2f14fe?0x0:_0x3b6363[_0xe35a('0x1d')];var _0x5a7047=_0x2f14fe?_0x33e47a[_0xe35a('0x20')]:_0x3b6363[_0xe35a('0x1d')]+_0x3b6363[_0xe35a('0x1f')];var _0xf8a606;if(_0x5a7047>=_0x32440e){_0x5a7047=_0x32440e;_0xf8a606=0xc8;}else{_0xf8a606=0xce;}_0x28ad36[_0xe35a('0x1c')](_0xf8a606);return _0x28ad36[_0xe35a('0x21')](_0xe35a('0x22'),_0x5ea3a8+'-'+_0x5a7047+'/'+_0x32440e)[_0xe35a('0x23')](_0x33e47a);}return null;};}function patchUpdates(_0x4e5561){return function(_0x4f37df){try{jsonpatch['apply'](_0x4f37df,_0x4e5561,!![]);}catch(_0xc2b243){return BPromise[_0xe35a('0x24')](_0xc2b243);}return _0x4f37df[_0xe35a('0x25')]();};}function saveUpdates(_0x357d5d,_0x37d31d){return function(_0x290fb0){if(_0x290fb0){return _0x290fb0['update'](_0x357d5d)['then'](function(_0x21d522){return _0x21d522;});}return null;};}function removeEntity(_0x4abf25,_0x346a05){return function(_0x49b8fb){if(_0x49b8fb){return _0x49b8fb[_0xe35a('0x26')]()[_0xe35a('0x27')](function(){var _0x4a1d76=_0x49b8fb[_0xe35a('0x28')]({'plain':!![]});var _0x5d2c94=_0xe35a('0x29');return db['UserProfileResource']['destroy']({'where':{'type':_0x5d2c94,'resourceId':_0x4a1d76['id']}})['then'](function(){return _0x49b8fb;});})[_0xe35a('0x27')](function(){_0x4abf25[_0xe35a('0x1c')](0xcc)[_0xe35a('0x2a')]();});}};}function handleEntityNotFound(_0xbd32c7,_0x5d4917){return function(_0xa0006a){if(!_0xa0006a){_0xbd32c7[_0xe35a('0x1b')](0x194);}return _0xa0006a;};}function handleError(_0x2b6ece,_0x134440){_0x134440=_0x134440||0x1f4;return function(_0x590e8a){logger[_0xe35a('0x2b')](_0x590e8a[_0xe35a('0x2c')]);if(_0x590e8a[_0xe35a('0x2d')]){delete _0x590e8a[_0xe35a('0x2d')];}_0x2b6ece[_0xe35a('0x1c')](_0x134440)[_0xe35a('0x2e')](_0x590e8a);};}exports[_0xe35a('0x2f')]=function(_0x4ab6a6,_0x496518){var _0x403a3a={},_0x3d8a11={},_0xeb3629={'count':0x0,'rows':[]};var _0x56631a=_['map'](db[_0xe35a('0x30')][_0xe35a('0x31')],function(_0x31f10a){return{'name':_0x31f10a[_0xe35a('0x32')],'type':_0x31f10a['type'][_0xe35a('0x33')]};});_0x3d8a11[_0xe35a('0x34')]=_[_0xe35a('0x35')](_0x56631a,_0xe35a('0x2d'));_0x3d8a11[_0xe35a('0x36')]=_[_0xe35a('0x37')](_0x4ab6a6[_0xe35a('0x36')]);_0x3d8a11['filters']=_[_0xe35a('0x38')](_0x3d8a11[_0xe35a('0x34')],_0x3d8a11[_0xe35a('0x36')]);_0x403a3a[_0xe35a('0x39')]=_[_0xe35a('0x38')](_0x3d8a11[_0xe35a('0x34')],qs[_0xe35a('0x3a')](_0x4ab6a6[_0xe35a('0x36')][_0xe35a('0x3a')]));_0x403a3a[_0xe35a('0x39')]=_0x403a3a[_0xe35a('0x39')][_0xe35a('0x3b')]?_0x403a3a[_0xe35a('0x39')]:_0x3d8a11[_0xe35a('0x34')];if(!_0x4ab6a6[_0xe35a('0x36')][_0xe35a('0x3c')](_0xe35a('0x3d'))){_0x403a3a['limit']=qs[_0xe35a('0x1f')](_0x4ab6a6['query'][_0xe35a('0x1f')]);_0x403a3a[_0xe35a('0x1d')]=qs['offset'](_0x4ab6a6[_0xe35a('0x36')][_0xe35a('0x1d')]);}_0x403a3a[_0xe35a('0x3e')]=qs['sort'](_0x4ab6a6['query'][_0xe35a('0x3f')]);_0x403a3a['where']=qs['filters'](_[_0xe35a('0x40')](_0x4ab6a6[_0xe35a('0x36')],_0x3d8a11[_0xe35a('0x41')]),_0x56631a);if(_0x4ab6a6[_0xe35a('0x36')]['filter']){_0x403a3a['where']=_[_0xe35a('0x42')](_0x403a3a[_0xe35a('0x43')],{'$or':_['map'](_0x56631a,function(_0x52ae17){if(_0x52ae17[_0xe35a('0x44')]!==_0xe35a('0x45')){var _0x5047ac={};_0x5047ac[_0x52ae17['name']]={'$like':'%'+_0x4ab6a6[_0xe35a('0x36')][_0xe35a('0x46')]+'%'};return _0x5047ac;}})});}_0x403a3a=_[_0xe35a('0x42')]({},_0x403a3a,_0x4ab6a6['options']);var _0x1c2d68={'where':_0x403a3a['where']};return db['SquareOdbc'][_0xe35a('0x20')](_0x1c2d68)[_0xe35a('0x27')](function(_0x536610){_0xeb3629[_0xe35a('0x20')]=_0x536610;if(_0x4ab6a6[_0xe35a('0x36')][_0xe35a('0x47')]){_0x403a3a['include']=[{'all':!![]}];}return db['SquareOdbc'][_0xe35a('0x48')](_0x403a3a);})[_0xe35a('0x27')](function(_0x465d45){_0xeb3629[_0xe35a('0x49')]=_0x465d45;return _0xeb3629;})[_0xe35a('0x27')](respondWithFilteredResult(_0x496518,_0x403a3a))[_0xe35a('0x4a')](handleError(_0x496518,null));};exports[_0xe35a('0x4b')]=function(_0x1446f5,_0xb45e02){var _0x35c328={'raw':!![],'where':{'id':_0x1446f5[_0xe35a('0x4c')]['id']}},_0x58dbe3={};_0x58dbe3[_0xe35a('0x34')]=_[_0xe35a('0x37')](db['SquareOdbc'][_0xe35a('0x31')]);_0x58dbe3[_0xe35a('0x36')]=_[_0xe35a('0x37')](_0x1446f5[_0xe35a('0x36')]);_0x58dbe3['filters']=_[_0xe35a('0x38')](_0x58dbe3[_0xe35a('0x34')],_0x58dbe3[_0xe35a('0x36')]);_0x35c328[_0xe35a('0x39')]=_[_0xe35a('0x38')](_0x58dbe3[_0xe35a('0x34')],qs[_0xe35a('0x3a')](_0x1446f5[_0xe35a('0x36')][_0xe35a('0x3a')]));_0x35c328[_0xe35a('0x39')]=_0x35c328[_0xe35a('0x39')]['length']?_0x35c328[_0xe35a('0x39')]:_0x58dbe3[_0xe35a('0x34')];if(_0x1446f5[_0xe35a('0x36')][_0xe35a('0x47')]){_0x35c328[_0xe35a('0x4d')]=[{'all':!![]}];}_0x35c328=_['merge']({},_0x35c328,_0x1446f5[_0xe35a('0x4e')]);return db['SquareOdbc'][_0xe35a('0x4f')](_0x35c328)[_0xe35a('0x27')](handleEntityNotFound(_0xb45e02,null))[_0xe35a('0x27')](respondWithResult(_0xb45e02,null))['catch'](handleError(_0xb45e02,null));};exports['create']=function(_0x429cd3,_0xfb559e){return db[_0xe35a('0x30')][_0xe35a('0x50')](_0x429cd3['body'],{})[_0xe35a('0x27')](function(_0x585228){var _0x50d3a7=_0x429cd3[_0xe35a('0x51')][_0xe35a('0x28')]({'plain':!![]});if(!_0x50d3a7)throw new Error(_0xe35a('0x52'));if(_0x50d3a7[_0xe35a('0x53')]===_0xe35a('0x51')){var _0x3dee96=_0x585228[_0xe35a('0x28')]({'plain':!![]});var _0x25c570=_0xe35a('0x29');return db[_0xe35a('0x54')][_0xe35a('0x4f')]({'where':{'name':_0x25c570,'userProfileId':_0x50d3a7['userProfileId']},'raw':!![]})[_0xe35a('0x27')](function(_0x211c65){if(_0x211c65&&_0x211c65[_0xe35a('0x55')]===0x0){return db[_0xe35a('0x56')][_0xe35a('0x50')]({'name':_0x3dee96[_0xe35a('0x2d')],'resourceId':_0x3dee96['id'],'type':_0x211c65[_0xe35a('0x2d')],'sectionId':_0x211c65['id']},{})[_0xe35a('0x27')](function(){return _0x585228;});}else{return _0x585228;}})[_0xe35a('0x4a')](function(_0xb90e41){logger['error'](_0xe35a('0x57'),_0xb90e41);throw _0xb90e41;});}return _0x585228;})[_0xe35a('0x27')](respondWithResult(_0xfb559e,0xc9))['catch'](handleError(_0xfb559e,null));};exports[_0xe35a('0x58')]=function(_0x56f2ea,_0x46b8f){if(_0x56f2ea[_0xe35a('0x59')]['id']){delete _0x56f2ea['body']['id'];}return db[_0xe35a('0x30')][_0xe35a('0x4f')]({'where':{'id':_0x56f2ea[_0xe35a('0x4c')]['id']}})[_0xe35a('0x27')](handleEntityNotFound(_0x46b8f,null))[_0xe35a('0x27')](saveUpdates(_0x56f2ea['body'],null))[_0xe35a('0x27')](respondWithResult(_0x46b8f,null))['catch'](handleError(_0x46b8f,null));};exports['destroy']=function(_0x3e93f5,_0x53ebda){return db[_0xe35a('0x30')]['find']({'where':{'id':_0x3e93f5[_0xe35a('0x4c')]['id']}})[_0xe35a('0x27')](handleEntityNotFound(_0x53ebda,null))[_0xe35a('0x27')](removeEntity(_0x53ebda,null))[_0xe35a('0x4a')](handleError(_0x53ebda,null));};exports[_0xe35a('0x5a')]=function(_0x1209af,_0x2d17cd,_0x56707e){var _0x1e22ad;return db[_0xe35a('0x30')][_0xe35a('0x4f')]({'where':{'id':_0x1209af['params']['id']},'attributes':['id',_0xe35a('0x5b')]})[_0xe35a('0x27')](handleEntityNotFound(_0x2d17cd,null))[_0xe35a('0x27')](function(_0x4fd735){if(_0x4fd735){var _0x2b9908=require('odbc')();_0x2b9908[_0xe35a('0x5c')](_0x4fd735[_0xe35a('0x5b')]);_0x2b9908[_0xe35a('0x5d')]();return _0x4fd735;}})[_0xe35a('0x27')](respondWithResult(_0x2d17cd,null))[_0xe35a('0x4a')](handleError(_0x2d17cd,null));};
\ No newline at end of file
+var _0xab09=['offset','Content-Range','apply','reject','save','destroy','get','ODBC','UserProfileResource','then','end','error','stack','name','index','map','SquareOdbc','rawAttributes','fieldName','type','key','model','keys','query','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','filters','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','length','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','test','odbc','openSync','closeSync','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','limit','count'];(function(_0x4e6e09,_0x1b3e98){var _0x5846e9=function(_0xdc30df){while(--_0xdc30df){_0x4e6e09['push'](_0x4e6e09['shift']());}};_0x5846e9(++_0x1b3e98);}(_0xab09,0xeb));var _0x9ab0=function(_0x4bed2d,_0x4ebe20){_0x4bed2d=_0x4bed2d-0x0;var _0xe82d9f=_0xab09[_0x4bed2d];return _0xe82d9f;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x9ab0('0x0'));var jsonpatch=require(_0x9ab0('0x1'));var rp=require(_0x9ab0('0x2'));var moment=require('moment');var BPromise=require(_0x9ab0('0x3'));var Mustache=require(_0x9ab0('0x4'));var util=require('util');var path=require(_0x9ab0('0x5'));var sox=require(_0x9ab0('0x6'));var csv=require(_0x9ab0('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9ab0('0x8'));var squel=require(_0x9ab0('0x9'));var crypto=require('crypto');var jsforce=require(_0x9ab0('0xa'));var deskjs=require(_0x9ab0('0xb'));var toCsv=require(_0x9ab0('0x7'));var querystring=require('querystring');var Papa=require(_0x9ab0('0xc'));var Redis=require(_0x9ab0('0xd'));var authService=require(_0x9ab0('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x9ab0('0xf'));var hardwareService=require(_0x9ab0('0x10'));var logger=require(_0x9ab0('0x11'))(_0x9ab0('0x12'));var utils=require(_0x9ab0('0x13'));var config=require(_0x9ab0('0x14'));var licenseUtil=require(_0x9ab0('0x15'));var db=require(_0x9ab0('0x16'))['db'];function respondWithStatusCode(_0x47a6fe,_0x1815ed){_0x1815ed=_0x1815ed||0xcc;return function(_0x4fd101){if(_0x4fd101){return _0x47a6fe[_0x9ab0('0x17')](_0x1815ed);}return _0x47a6fe['status'](_0x1815ed)['end']();};}function respondWithResult(_0x4212c0,_0x1e456a){_0x1e456a=_0x1e456a||0xc8;return function(_0xf4868f){if(_0xf4868f){return _0x4212c0[_0x9ab0('0x18')](_0x1e456a)[_0x9ab0('0x19')](_0xf4868f);}};}function respondWithFilteredResult(_0x428cc6,_0x14536a){return function(_0x133955){if(_0x133955){var _0x1b784f=typeof _0x14536a['offset']===_0x9ab0('0x1a')&&typeof _0x14536a[_0x9ab0('0x1b')]==='undefined';var _0x56a1e8=_0x133955[_0x9ab0('0x1c')];var _0x2f3abb=_0x1b784f?0x0:_0x14536a[_0x9ab0('0x1d')];var _0x415aac=_0x1b784f?_0x133955[_0x9ab0('0x1c')]:_0x14536a['offset']+_0x14536a[_0x9ab0('0x1b')];var _0x1a154b;if(_0x415aac>=_0x56a1e8){_0x415aac=_0x56a1e8;_0x1a154b=0xc8;}else{_0x1a154b=0xce;}_0x428cc6[_0x9ab0('0x18')](_0x1a154b);return _0x428cc6['set'](_0x9ab0('0x1e'),_0x2f3abb+'-'+_0x415aac+'/'+_0x56a1e8)['json'](_0x133955);}return null;};}function patchUpdates(_0x1c85b4){return function(_0x40d474){try{jsonpatch[_0x9ab0('0x1f')](_0x40d474,_0x1c85b4,!![]);}catch(_0x16f1b8){return BPromise[_0x9ab0('0x20')](_0x16f1b8);}return _0x40d474[_0x9ab0('0x21')]();};}function saveUpdates(_0x3d8e92,_0x28f5ec){return function(_0x476c47){if(_0x476c47){return _0x476c47['update'](_0x3d8e92)['then'](function(_0x10bd37){return _0x10bd37;});}return null;};}function removeEntity(_0x52fee3,_0x50fba0){return function(_0x154a70){if(_0x154a70){return _0x154a70[_0x9ab0('0x22')]()['then'](function(){var _0x525561=_0x154a70[_0x9ab0('0x23')]({'plain':!![]});var _0x26a8f8=_0x9ab0('0x24');return db[_0x9ab0('0x25')]['destroy']({'where':{'type':_0x26a8f8,'resourceId':_0x525561['id']}})['then'](function(){return _0x154a70;});})[_0x9ab0('0x26')](function(){_0x52fee3[_0x9ab0('0x18')](0xcc)[_0x9ab0('0x27')]();});}};}function handleEntityNotFound(_0xe14e31,_0x18cc00){return function(_0x56edf8){if(!_0x56edf8){_0xe14e31[_0x9ab0('0x17')](0x194);}return _0x56edf8;};}function handleError(_0x5f42ba,_0x512484){_0x512484=_0x512484||0x1f4;return function(_0x2a57a1){logger[_0x9ab0('0x28')](_0x2a57a1[_0x9ab0('0x29')]);if(_0x2a57a1[_0x9ab0('0x2a')]){delete _0x2a57a1['name'];}_0x5f42ba[_0x9ab0('0x18')](_0x512484)['send'](_0x2a57a1);};}exports[_0x9ab0('0x2b')]=function(_0x1d951b,_0x3ce9f4){var _0x11db2c={},_0x4cf327={},_0x308b78={'count':0x0,'rows':[]};var _0xed6b8b=_[_0x9ab0('0x2c')](db[_0x9ab0('0x2d')][_0x9ab0('0x2e')],function(_0xd4e04c){return{'name':_0xd4e04c[_0x9ab0('0x2f')],'type':_0xd4e04c[_0x9ab0('0x30')][_0x9ab0('0x31')]};});_0x4cf327[_0x9ab0('0x32')]=_[_0x9ab0('0x2c')](_0xed6b8b,'name');_0x4cf327['query']=_[_0x9ab0('0x33')](_0x1d951b[_0x9ab0('0x34')]);_0x4cf327['filters']=_[_0x9ab0('0x35')](_0x4cf327[_0x9ab0('0x32')],_0x4cf327[_0x9ab0('0x34')]);_0x11db2c[_0x9ab0('0x36')]=_['intersection'](_0x4cf327[_0x9ab0('0x32')],qs[_0x9ab0('0x37')](_0x1d951b['query'][_0x9ab0('0x37')]));_0x11db2c['attributes']=_0x11db2c[_0x9ab0('0x36')]['length']?_0x11db2c[_0x9ab0('0x36')]:_0x4cf327[_0x9ab0('0x32')];if(!_0x1d951b['query'][_0x9ab0('0x38')](_0x9ab0('0x39'))){_0x11db2c[_0x9ab0('0x1b')]=qs[_0x9ab0('0x1b')](_0x1d951b[_0x9ab0('0x34')][_0x9ab0('0x1b')]);_0x11db2c[_0x9ab0('0x1d')]=qs['offset'](_0x1d951b[_0x9ab0('0x34')][_0x9ab0('0x1d')]);}_0x11db2c[_0x9ab0('0x3a')]=qs[_0x9ab0('0x3b')](_0x1d951b['query'][_0x9ab0('0x3b')]);_0x11db2c['where']=qs['filters'](_[_0x9ab0('0x3c')](_0x1d951b[_0x9ab0('0x34')],_0x4cf327[_0x9ab0('0x3d')]),_0xed6b8b);if(_0x1d951b[_0x9ab0('0x34')][_0x9ab0('0x3e')]){_0x11db2c[_0x9ab0('0x3f')]=_[_0x9ab0('0x40')](_0x11db2c['where'],{'$or':_['map'](_0xed6b8b,function(_0x5c2027){if(_0x5c2027[_0x9ab0('0x30')]!==_0x9ab0('0x41')){var _0x238b63={};_0x238b63[_0x5c2027[_0x9ab0('0x2a')]]={'$like':'%'+_0x1d951b[_0x9ab0('0x34')][_0x9ab0('0x3e')]+'%'};return _0x238b63;}})});}_0x11db2c=_[_0x9ab0('0x40')]({},_0x11db2c,_0x1d951b[_0x9ab0('0x42')]);var _0x31fefb={'where':_0x11db2c['where']};return db['SquareOdbc'][_0x9ab0('0x1c')](_0x31fefb)[_0x9ab0('0x26')](function(_0xffa449){_0x308b78[_0x9ab0('0x1c')]=_0xffa449;if(_0x1d951b[_0x9ab0('0x34')][_0x9ab0('0x43')]){_0x11db2c[_0x9ab0('0x44')]=[{'all':!![]}];}return db['SquareOdbc'][_0x9ab0('0x45')](_0x11db2c);})['then'](function(_0x37ecf6){_0x308b78[_0x9ab0('0x46')]=_0x37ecf6;return _0x308b78;})['then'](respondWithFilteredResult(_0x3ce9f4,_0x11db2c))[_0x9ab0('0x47')](handleError(_0x3ce9f4,null));};exports['show']=function(_0x3bd716,_0x5b64d6){var _0x26a207={'raw':!![],'where':{'id':_0x3bd716['params']['id']}},_0x5cb642={};_0x5cb642[_0x9ab0('0x32')]=_[_0x9ab0('0x33')](db[_0x9ab0('0x2d')]['rawAttributes']);_0x5cb642[_0x9ab0('0x34')]=_[_0x9ab0('0x33')](_0x3bd716[_0x9ab0('0x34')]);_0x5cb642['filters']=_['intersection'](_0x5cb642[_0x9ab0('0x32')],_0x5cb642[_0x9ab0('0x34')]);_0x26a207[_0x9ab0('0x36')]=_['intersection'](_0x5cb642[_0x9ab0('0x32')],qs[_0x9ab0('0x37')](_0x3bd716[_0x9ab0('0x34')][_0x9ab0('0x37')]));_0x26a207[_0x9ab0('0x36')]=_0x26a207[_0x9ab0('0x36')][_0x9ab0('0x48')]?_0x26a207[_0x9ab0('0x36')]:_0x5cb642['model'];if(_0x3bd716[_0x9ab0('0x34')][_0x9ab0('0x43')]){_0x26a207[_0x9ab0('0x44')]=[{'all':!![]}];}_0x26a207=_[_0x9ab0('0x40')]({},_0x26a207,_0x3bd716['options']);return db[_0x9ab0('0x2d')][_0x9ab0('0x49')](_0x26a207)[_0x9ab0('0x26')](handleEntityNotFound(_0x5b64d6,null))[_0x9ab0('0x26')](respondWithResult(_0x5b64d6,null))['catch'](handleError(_0x5b64d6,null));};exports[_0x9ab0('0x4a')]=function(_0x13ba12,_0x2f3b2f){return db['SquareOdbc']['create'](_0x13ba12[_0x9ab0('0x4b')],{})[_0x9ab0('0x26')](function(_0x4e78eb){var _0x4f8830=_0x13ba12[_0x9ab0('0x4c')][_0x9ab0('0x23')]({'plain':!![]});if(!_0x4f8830)throw new Error(_0x9ab0('0x4d'));if(_0x4f8830[_0x9ab0('0x4e')]===_0x9ab0('0x4c')){var _0x302996=_0x4e78eb[_0x9ab0('0x23')]({'plain':!![]});var _0x39c498=_0x9ab0('0x24');return db[_0x9ab0('0x4f')]['find']({'where':{'name':_0x39c498,'userProfileId':_0x4f8830[_0x9ab0('0x50')]},'raw':!![]})[_0x9ab0('0x26')](function(_0x54f115){if(_0x54f115&&_0x54f115[_0x9ab0('0x51')]===0x0){return db[_0x9ab0('0x25')]['create']({'name':_0x302996[_0x9ab0('0x2a')],'resourceId':_0x302996['id'],'type':_0x54f115[_0x9ab0('0x2a')],'sectionId':_0x54f115['id']},{})['then'](function(){return _0x4e78eb;});}else{return _0x4e78eb;}})['catch'](function(_0x195fd6){logger[_0x9ab0('0x28')](_0x9ab0('0x52'),_0x195fd6);throw _0x195fd6;});}return _0x4e78eb;})[_0x9ab0('0x26')](respondWithResult(_0x2f3b2f,0xc9))[_0x9ab0('0x47')](handleError(_0x2f3b2f,null));};exports['update']=function(_0x40f512,_0x2b4136){if(_0x40f512[_0x9ab0('0x4b')]['id']){delete _0x40f512[_0x9ab0('0x4b')]['id'];}return db[_0x9ab0('0x2d')][_0x9ab0('0x49')]({'where':{'id':_0x40f512[_0x9ab0('0x53')]['id']}})['then'](handleEntityNotFound(_0x2b4136,null))[_0x9ab0('0x26')](saveUpdates(_0x40f512[_0x9ab0('0x4b')],null))[_0x9ab0('0x26')](respondWithResult(_0x2b4136,null))[_0x9ab0('0x47')](handleError(_0x2b4136,null));};exports[_0x9ab0('0x22')]=function(_0x3a47ab,_0x730316){return db[_0x9ab0('0x2d')][_0x9ab0('0x49')]({'where':{'id':_0x3a47ab['params']['id']}})[_0x9ab0('0x26')](handleEntityNotFound(_0x730316,null))[_0x9ab0('0x26')](removeEntity(_0x730316,null))[_0x9ab0('0x47')](handleError(_0x730316,null));};exports[_0x9ab0('0x54')]=function(_0x51b35c,_0xf4021d,_0x680cc3){var _0x4256d1;return db[_0x9ab0('0x2d')][_0x9ab0('0x49')]({'where':{'id':_0x51b35c[_0x9ab0('0x53')]['id']},'attributes':['id','dsn']})[_0x9ab0('0x26')](handleEntityNotFound(_0xf4021d,null))[_0x9ab0('0x26')](function(_0x44b93c){if(_0x44b93c){var _0x1826bb=require(_0x9ab0('0x55'))();_0x1826bb[_0x9ab0('0x56')](_0x44b93c['dsn']);_0x1826bb[_0x9ab0('0x57')]();return _0x44b93c;}})[_0x9ab0('0x26')](respondWithResult(_0xf4021d,null))['catch'](handleError(_0xf4021d,null));};
\ No newline at end of file
index 8a2081a..f55dba9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x271d=['SquareOdbc','square_odbc','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','./squareOdbc.attributes','exports','define'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x271d,0x91));var _0xd271=function(_0x32463a,_0x149570){_0x32463a=_0x32463a-0x0;var _0x266956=_0x271d[_0x32463a];return _0x266956;};'use strict';var _=require(_0xd271('0x0'));var util=require(_0xd271('0x1'));var logger=require(_0xd271('0x2'))(_0xd271('0x3'));var moment=require(_0xd271('0x4'));var BPromise=require(_0xd271('0x5'));var rp=require(_0xd271('0x6'));var fs=require('fs');var path=require(_0xd271('0x7'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xd271('0x8'));module[_0xd271('0x9')]=function(_0x3654ac,_0x3cb5c9){return _0x3654ac[_0xd271('0xa')](_0xd271('0xb'),attributes,{'tableName':_0xd271('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x368a=['../../config/environment','exports','SquareOdbc','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf'];(function(_0x1c167c,_0x3a921e){var _0x2ebf78=function(_0x16726b){while(--_0x16726b){_0x1c167c['push'](_0x1c167c['shift']());}};_0x2ebf78(++_0x3a921e);}(_0x368a,0x9d));var _0xa368=function(_0x35885a,_0x42fed7){_0x35885a=_0x35885a-0x0;var _0xe86249=_0x368a[_0x35885a];return _0xe86249;};'use strict';var _=require(_0xa368('0x0'));var util=require(_0xa368('0x1'));var logger=require(_0xa368('0x2'))(_0xa368('0x3'));var moment=require(_0xa368('0x4'));var BPromise=require('bluebird');var rp=require(_0xa368('0x5'));var fs=require('fs');var path=require(_0xa368('0x6'));var rimraf=require(_0xa368('0x7'));var config=require(_0xa368('0x8'));var attributes=require('./squareOdbc.attributes');module[_0xa368('0x9')]=function(_0x20ac86,_0x1ecc3b){return _0x20ac86['define'](_0xa368('0xa'),attributes,{'tableName':'square_odbc','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6d33c84..b356dd3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2aec=['code','message','ShowSquareOdbc','SquareOdbc','find','options','raw','where','include','map','attributes','model','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','then','info','SquareOdbc,\x20%s,\x20%s','debug','request\x20sent','stringify','error'];(function(_0x2af600,_0x487e4c){var _0x3af977=function(_0x1a7723){while(--_0x1a7723){_0x2af600['push'](_0x2af600['shift']());}};_0x3af977(++_0x487e4c);}(_0x2aec,0xed));var _0xc2ae=function(_0x230ea8,_0x40d8ce){_0x230ea8=_0x230ea8-0x0;var _0x57f219=_0x2aec[_0x230ea8];return _0x57f219;};'use strict';var _=require(_0xc2ae('0x0'));var util=require(_0xc2ae('0x1'));var moment=require(_0xc2ae('0x2'));var BPromise=require(_0xc2ae('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc2ae('0x4'));var db=require(_0xc2ae('0x5'))['db'];var utils=require(_0xc2ae('0x6'));var logger=require(_0xc2ae('0x7'))(_0xc2ae('0x8'));var config=require(_0xc2ae('0x9'));var jayson=require(_0xc2ae('0xa'));var client=jayson['client'][_0xc2ae('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4a3be3,_0x482807,_0x18d73c){return new BPromise(function(_0x15dc54,_0x117cf9){return client['request'](_0x4a3be3,_0x18d73c)[_0xc2ae('0xc')](function(_0x22f037){logger[_0xc2ae('0xd')](_0xc2ae('0xe'),_0x482807,'request\x20sent');logger[_0xc2ae('0xf')]('SquareOdbc,\x20%s,\x20%s,\x20%s',_0x482807,_0xc2ae('0x10'),JSON[_0xc2ae('0x11')](_0x22f037));if(_0x22f037[_0xc2ae('0x12')]){if(_0x22f037['error'][_0xc2ae('0x13')]===0x1f4){logger[_0xc2ae('0x12')](_0xc2ae('0xe'),_0x482807,_0x22f037[_0xc2ae('0x12')]['message']);return _0x117cf9(_0x22f037[_0xc2ae('0x12')]['message']);}logger[_0xc2ae('0x12')]('SquareOdbc,\x20%s,\x20%s',_0x482807,_0x22f037[_0xc2ae('0x12')][_0xc2ae('0x14')]);return _0x15dc54(_0x22f037[_0xc2ae('0x12')][_0xc2ae('0x14')]);}else{logger[_0xc2ae('0xd')]('SquareOdbc,\x20%s,\x20%s',_0x482807,_0xc2ae('0x10'));_0x15dc54(_0x22f037['result'][_0xc2ae('0x14')]);}})['catch'](function(_0x155306){logger['error'](_0xc2ae('0xe'),_0x482807,_0x155306);_0x117cf9(_0x155306);});});}exports[_0xc2ae('0x15')]=function(_0x56536e){var _0x38b3da=this;return new Promise(function(_0x30ea9d,_0x42c4df){return db[_0xc2ae('0x16')][_0xc2ae('0x17')]({'raw':_0x56536e['options']?_0x56536e[_0xc2ae('0x18')][_0xc2ae('0x19')]===undefined?!![]:![]:!![],'where':_0x56536e['options']?_0x56536e[_0xc2ae('0x18')][_0xc2ae('0x1a')]||null:null,'attributes':_0x56536e[_0xc2ae('0x18')]?_0x56536e[_0xc2ae('0x18')]['attributes']||null:null,'include':_0x56536e[_0xc2ae('0x18')]?_0x56536e[_0xc2ae('0x18')][_0xc2ae('0x1b')]?_[_0xc2ae('0x1c')](_0x56536e['options'][_0xc2ae('0x1b')],function(_0x41858a){return{'model':db[_0x41858a['model']],'as':_0x41858a['as'],'attributes':_0x41858a[_0xc2ae('0x1d')],'include':_0x41858a['include']?_[_0xc2ae('0x1c')](_0x41858a['include'],function(_0x1db2f1){return{'model':db[_0x1db2f1[_0xc2ae('0x1e')]],'as':_0x1db2f1['as'],'attributes':_0x1db2f1[_0xc2ae('0x1d')],'include':_0x1db2f1['include']?_[_0xc2ae('0x1c')](_0x1db2f1[_0xc2ae('0x1b')],function(_0x2db82a){return{'model':db[_0x2db82a['model']],'as':_0x2db82a['as'],'attributes':_0x2db82a[_0xc2ae('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xc2ae('0xc')](function(_0x47dfcd){logger[_0xc2ae('0xd')](_0xc2ae('0x15'),_0x56536e);logger[_0xc2ae('0xf')](_0xc2ae('0x15'),_0x56536e,JSON['stringify'](_0x47dfcd));_0x30ea9d(_0x47dfcd);})[_0xc2ae('0x1f')](function(_0x3b4aa2){logger[_0xc2ae('0x12')](_0xc2ae('0x15'),_0x3b4aa2[_0xc2ae('0x14')],_0x56536e);_0x42c4df(_0x38b3da[_0xc2ae('0x12')](0x1f4,_0x3b4aa2[_0xc2ae('0x14')]));});});};
\ No newline at end of file
+var _0x027d=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','SquareOdbc,\x20%s,\x20%s','SquareOdbc,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','ShowSquareOdbc','SquareOdbc','find','options','where','attributes','include','map','model','debug','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x312d76,_0x1bc862){var _0xdc8d9d=function(_0x5b9e04){while(--_0x5b9e04){_0x312d76['push'](_0x312d76['shift']());}};_0xdc8d9d(++_0x1bc862);}(_0x027d,0x1d5));var _0xd027=function(_0x507f6d,_0x595247){_0x507f6d=_0x507f6d-0x0;var _0x32cc7e=_0x027d[_0x507f6d];return _0x32cc7e;};'use strict';var _=require(_0xd027('0x0'));var util=require(_0xd027('0x1'));var moment=require(_0xd027('0x2'));var BPromise=require(_0xd027('0x3'));var rs=require(_0xd027('0x4'));var fs=require('fs');var Redis=require(_0xd027('0x5'));var db=require(_0xd027('0x6'))['db'];var utils=require(_0xd027('0x7'));var logger=require(_0xd027('0x8'))(_0xd027('0x9'));var config=require(_0xd027('0xa'));var jayson=require(_0xd027('0xb'));var client=jayson[_0xd027('0xc')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4ed5a4,_0xd61edc,_0x1d9915){return new BPromise(function(_0x4d0ab3,_0xa25d29){return client[_0xd027('0xd')](_0x4ed5a4,_0x1d9915)[_0xd027('0xe')](function(_0x13babb){logger['info'](_0xd027('0xf'),_0xd61edc,'request\x20sent');logger['debug'](_0xd027('0x10'),_0xd61edc,'request\x20sent',JSON[_0xd027('0x11')](_0x13babb));if(_0x13babb[_0xd027('0x12')]){if(_0x13babb['error'][_0xd027('0x13')]===0x1f4){logger[_0xd027('0x12')](_0xd027('0xf'),_0xd61edc,_0x13babb['error'][_0xd027('0x14')]);return _0xa25d29(_0x13babb[_0xd027('0x12')]['message']);}logger[_0xd027('0x12')](_0xd027('0xf'),_0xd61edc,_0x13babb[_0xd027('0x12')]['message']);return _0x4d0ab3(_0x13babb['error']['message']);}else{logger[_0xd027('0x15')](_0xd027('0xf'),_0xd61edc,'request\x20sent');_0x4d0ab3(_0x13babb[_0xd027('0x16')][_0xd027('0x14')]);}})[_0xd027('0x17')](function(_0x481e62){logger[_0xd027('0x12')](_0xd027('0xf'),_0xd61edc,_0x481e62);_0xa25d29(_0x481e62);});});}exports[_0xd027('0x18')]=function(_0x3773b4){var _0x3464a0=this;return new Promise(function(_0x89e6c5,_0x3113c0){return db[_0xd027('0x19')][_0xd027('0x1a')]({'raw':_0x3773b4['options']?_0x3773b4[_0xd027('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x3773b4['options']?_0x3773b4['options'][_0xd027('0x1c')]||null:null,'attributes':_0x3773b4[_0xd027('0x1b')]?_0x3773b4[_0xd027('0x1b')][_0xd027('0x1d')]||null:null,'include':_0x3773b4[_0xd027('0x1b')]?_0x3773b4[_0xd027('0x1b')][_0xd027('0x1e')]?_[_0xd027('0x1f')](_0x3773b4[_0xd027('0x1b')][_0xd027('0x1e')],function(_0x25fadc){return{'model':db[_0x25fadc[_0xd027('0x20')]],'as':_0x25fadc['as'],'attributes':_0x25fadc['attributes'],'include':_0x25fadc[_0xd027('0x1e')]?_[_0xd027('0x1f')](_0x25fadc['include'],function(_0x1b4ec9){return{'model':db[_0x1b4ec9[_0xd027('0x20')]],'as':_0x1b4ec9['as'],'attributes':_0x1b4ec9[_0xd027('0x1d')],'include':_0x1b4ec9[_0xd027('0x1e')]?_[_0xd027('0x1f')](_0x1b4ec9[_0xd027('0x1e')],function(_0x4c2a2d){return{'model':db[_0x4c2a2d['model']],'as':_0x4c2a2d['as'],'attributes':_0x4c2a2d[_0xd027('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0xf11c0f){logger[_0xd027('0x15')]('ShowSquareOdbc',_0x3773b4);logger[_0xd027('0x21')]('ShowSquareOdbc',_0x3773b4,JSON[_0xd027('0x11')](_0xf11c0f));_0x89e6c5(_0xf11c0f);})[_0xd027('0x17')](function(_0x4681ad){logger[_0xd027('0x12')](_0xd027('0x18'),_0x4681ad['message'],_0x3773b4);_0x3113c0(_0x3464a0[_0xd027('0x12')](0x1f4,_0x4681ad[_0xd027('0x14')]));});});};
\ No newline at end of file
index 9fa2675..cb23731 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6384=['post','isAuthenticated','put','update','delete','exports','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareProject.controller','get','index','/:id'];(function(_0x5c9f29,_0x246bd4){var _0x22fc8d=function(_0x22324c){while(--_0x22324c){_0x5c9f29['push'](_0x5c9f29['shift']());}};_0x22fc8d(++_0x246bd4);}(_0x6384,0x1c0));var _0x4638=function(_0x9d1102,_0x5c55c9){_0x9d1102=_0x9d1102-0x0;var _0x2c668e=_0x6384[_0x9d1102];return _0x2c668e;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x4638('0x0'));var timeout=require('connect-timeout');var express=require(_0x4638('0x1'));var router=express[_0x4638('0x2')]();var fs_extra=require(_0x4638('0x3'));var auth=require(_0x4638('0x4'));var interaction=require(_0x4638('0x5'));var config=require(_0x4638('0x6'));var controller=require(_0x4638('0x7'));router[_0x4638('0x8')]('/',auth['isAuthenticated'](),controller[_0x4638('0x9')]);router[_0x4638('0x8')](_0x4638('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x4638('0xb')]('/',auth[_0x4638('0xc')](),controller['create']);router[_0x4638('0xd')](_0x4638('0xa'),auth[_0x4638('0xc')](),controller[_0x4638('0xe')]);router[_0x4638('0xf')](_0x4638('0xa'),auth[_0x4638('0xc')](),controller['destroy']);module[_0x4638('0x10')]=router;
\ No newline at end of file
+var _0xca17=['show','post','create','put','update','delete','/:id','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareProject.controller','get','isAuthenticated'];(function(_0x339eaa,_0xbc2f72){var _0x4985b6=function(_0x10e65b){while(--_0x10e65b){_0x339eaa['push'](_0x339eaa['shift']());}};_0x4985b6(++_0xbc2f72);}(_0xca17,0x127));var _0x7ca1=function(_0x494f4d,_0x2807fa){_0x494f4d=_0x494f4d-0x0;var _0x3e7dfc=_0xca17[_0x494f4d];return _0x3e7dfc;};'use strict';var multer=require(_0x7ca1('0x0'));var util=require(_0x7ca1('0x1'));var path=require(_0x7ca1('0x2'));var timeout=require(_0x7ca1('0x3'));var express=require(_0x7ca1('0x4'));var router=express[_0x7ca1('0x5')]();var fs_extra=require(_0x7ca1('0x6'));var auth=require(_0x7ca1('0x7'));var interaction=require(_0x7ca1('0x8'));var config=require(_0x7ca1('0x9'));var controller=require(_0x7ca1('0xa'));router[_0x7ca1('0xb')]('/',auth[_0x7ca1('0xc')](),controller['index']);router['get']('/:id',auth[_0x7ca1('0xc')](),controller[_0x7ca1('0xd')]);router[_0x7ca1('0xe')]('/',auth[_0x7ca1('0xc')](),controller[_0x7ca1('0xf')]);router[_0x7ca1('0x10')]('/:id',auth['isAuthenticated'](),controller[_0x7ca1('0x11')]);router[_0x7ca1('0x12')](_0x7ca1('0x13'),auth[_0x7ca1('0xc')](),controller[_0x7ca1('0x14')]);module[_0x7ca1('0x15')]=router;
\ No newline at end of file
index 8db7798..d9811fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfdc6=['DATE','STRING','name','TEXT','BLOB','long','getDataValue','preproduction','production','toString','utf8'];(function(_0x2c239a,_0x4a6fbf){var _0x54b09e=function(_0x1b334e){while(--_0x1b334e){_0x2c239a['push'](_0x2c239a['shift']());}};_0x54b09e(++_0x4a6fbf);}(_0xfdc6,0xf3));var _0x6fdc=function(_0x12a2a6,_0x374ff1){_0x12a2a6=_0x12a2a6-0x0;var _0x1754ae=_0xfdc6[_0x12a2a6];return _0x1754ae;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x6fdc('0x0')],'unique':_0x6fdc('0x1'),'allowNull':![]},'description':{'type':Sequelize['STRING']},'notes':{'type':Sequelize[_0x6fdc('0x2')]},'preproduction':{'type':Sequelize[_0x6fdc('0x3')](_0x6fdc('0x4')),'get':function(){if(this[_0x6fdc('0x5')](_0x6fdc('0x6'))){return this['getDataValue'](_0x6fdc('0x6'))['toString']('utf8');}}},'production':{'type':Sequelize['BLOB'](_0x6fdc('0x4')),'get':function(){if(this[_0x6fdc('0x5')](_0x6fdc('0x7'))){return this[_0x6fdc('0x5')]('production')[_0x6fdc('0x8')](_0x6fdc('0x9'));}}},'savedAt':{'type':Sequelize[_0x6fdc('0xa')]},'publishedAt':{'type':Sequelize[_0x6fdc('0xa')]}};
\ No newline at end of file
+var _0x39ee=['production','toString','DATE','STRING','name','BLOB','long','getDataValue','preproduction','utf8'];(function(_0xfe5403,_0x1628b1){var _0x2d1e48=function(_0x71342){while(--_0x71342){_0xfe5403['push'](_0xfe5403['shift']());}};_0x2d1e48(++_0x1628b1);}(_0x39ee,0x8f));var _0xe39e=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0x39ee[_0x4565bf];return _0x5610ba;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xe39e('0x0')],'unique':_0xe39e('0x1'),'allowNull':![]},'description':{'type':Sequelize['STRING']},'notes':{'type':Sequelize['TEXT']},'preproduction':{'type':Sequelize[_0xe39e('0x2')](_0xe39e('0x3')),'get':function(){if(this[_0xe39e('0x4')](_0xe39e('0x5'))){return this[_0xe39e('0x4')](_0xe39e('0x5'))['toString'](_0xe39e('0x6'));}}},'production':{'type':Sequelize[_0xe39e('0x2')](_0xe39e('0x3')),'get':function(){if(this['getDataValue'](_0xe39e('0x7'))){return this['getDataValue'](_0xe39e('0x7'))[_0xe39e('0x8')]('utf8');}}},'savedAt':{'type':Sequelize['DATE']},'publishedAt':{'type':Sequelize[_0xe39e('0x9')]}};
\ No newline at end of file
index 7b0c80f..54ee11c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8965=['set','update','then','destroy','get','SquareProjects','UserProfileResource','publish','agi','stringify','end','error','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','merge','VIRTUAL','options','SquareProject','includeAll','include','rows','catch','params','create','body','user','role','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','production','lodash','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','status','json','offset','undefined','limit','count'];(function(_0x58564d,_0x4ede3c){var _0x45a08a=function(_0x1c8949){while(--_0x1c8949){_0x58564d['push'](_0x58564d['shift']());}};_0x45a08a(++_0x4ede3c);}(_0x8965,0x192));var _0x5896=function(_0x145401,_0xde47f9){_0x145401=_0x145401-0x0;var _0x3e0018=_0x8965[_0x145401];return _0x3e0018;};'use strict';var _=require(_0x5896('0x0'));var Redis=require(_0x5896('0x1'));var qs=require(_0x5896('0x2'));var logger=require(_0x5896('0x3'))(_0x5896('0x4'));var config=require(_0x5896('0x5'));var db=require(_0x5896('0x6'))['db'];config[_0x5896('0x7')]=_[_0x5896('0x8')](config[_0x5896('0x7')],{'host':_0x5896('0x9'),'port':0x18eb});var socket=require(_0x5896('0xa'))(new Redis(config[_0x5896('0x7')]));require('./squareProject.socket')[_0x5896('0xb')](socket);function respondWithResult(_0xabb6d4,_0x34f5c5){_0x34f5c5=_0x34f5c5||0xc8;return function(_0xe21e08){if(_0xe21e08){return _0xabb6d4[_0x5896('0xc')](_0x34f5c5)[_0x5896('0xd')](_0xe21e08);}};}function respondWithFilteredResult(_0x529d09,_0xac21ce){return function(_0x529b17){if(_0x529b17){var _0x236300=typeof _0xac21ce[_0x5896('0xe')]===_0x5896('0xf')&&typeof _0xac21ce[_0x5896('0x10')]===_0x5896('0xf');var _0x184561=_0x529b17[_0x5896('0x11')];var _0x39f950=_0x236300?0x0:_0xac21ce[_0x5896('0xe')];var _0x7dd88e=_0x236300?_0x529b17[_0x5896('0x11')]:_0xac21ce[_0x5896('0xe')]+_0xac21ce[_0x5896('0x10')];var _0x44bae0;if(_0x7dd88e>=_0x184561){_0x7dd88e=_0x184561;_0x44bae0=0xc8;}else{_0x44bae0=0xce;}_0x529d09[_0x5896('0xc')](_0x44bae0);return _0x529d09[_0x5896('0x12')]('Content-Range',_0x39f950+'-'+_0x7dd88e+'/'+_0x184561)[_0x5896('0xd')](_0x529b17);}return null;};}function saveUpdates(_0x2cd916){return function(_0x11a82b){if(_0x11a82b){return _0x11a82b[_0x5896('0x13')](_0x2cd916)[_0x5896('0x14')](function(_0x31292f){return _0x31292f;});}return null;};}function removeEntity(_0x4ee67e){return function(_0x228dbb){if(_0x228dbb){return _0x228dbb[_0x5896('0x15')]()['then'](function(){var _0xb349de=_0x228dbb[_0x5896('0x16')]({'plain':!![]});var _0x29f439=_0x5896('0x17');return db[_0x5896('0x18')][_0x5896('0x15')]({'where':{'type':_0x29f439,'resourceId':_0xb349de['id']}})[_0x5896('0x14')](function(){return _0x228dbb;});})[_0x5896('0x14')](function(){var _0x2d863f=new Redis(config[_0x5896('0x7')]);_0x2d863f[_0x5896('0x19')](_0x5896('0x1a'),JSON[_0x5896('0x1b')]({'id':_0x228dbb['id'],'deleted':!![]}));})[_0x5896('0x14')](function(){_0x4ee67e[_0x5896('0xc')](0xcc)[_0x5896('0x1c')]();});}};}function handleEntityNotFound(_0x5eda62){return function(_0x570e1f){if(!_0x570e1f){_0x5eda62['sendStatus'](0x194);}return _0x570e1f;};}function handleError(_0x339161,_0x3379c9){_0x3379c9=_0x3379c9||0x1f4;return function(_0x1b07a8){logger[_0x5896('0x1d')](_0x1b07a8['stack']);if(_0x1b07a8[_0x5896('0x1e')]){delete _0x1b07a8['name'];}_0x339161[_0x5896('0xc')](_0x3379c9)[_0x5896('0x1f')](_0x1b07a8);};}exports[_0x5896('0x20')]=function(_0x574ec4,_0xbe1e43){var _0x2a1357={},_0x4039da={},_0xb69d86={'count':0x0,'rows':[]};var _0x119273=_[_0x5896('0x21')](db['SquareProject'][_0x5896('0x22')],function(_0x11d716){return{'name':_0x11d716[_0x5896('0x23')],'type':_0x11d716[_0x5896('0x24')][_0x5896('0x25')]};});_0x4039da[_0x5896('0x26')]=_[_0x5896('0x21')](_0x119273,_0x5896('0x1e'));_0x4039da[_0x5896('0x27')]=_[_0x5896('0x28')](_0x574ec4[_0x5896('0x27')]);_0x4039da['filters']=_[_0x5896('0x29')](_0x4039da['model'],_0x4039da[_0x5896('0x27')]);_0x2a1357[_0x5896('0x2a')]=_['intersection'](_0x4039da['model'],qs[_0x5896('0x2b')](_0x574ec4[_0x5896('0x27')]['fields']));_0x2a1357[_0x5896('0x2a')]=_0x2a1357[_0x5896('0x2a')][_0x5896('0x2c')]?_0x2a1357[_0x5896('0x2a')]:_0x4039da['model'];if(!_0x574ec4[_0x5896('0x27')][_0x5896('0x2d')](_0x5896('0x2e'))){_0x2a1357[_0x5896('0x10')]=qs[_0x5896('0x10')](_0x574ec4[_0x5896('0x27')][_0x5896('0x10')]);_0x2a1357[_0x5896('0xe')]=qs['offset'](_0x574ec4[_0x5896('0x27')]['offset']);}_0x2a1357['order']=qs['sort'](_0x574ec4[_0x5896('0x27')][_0x5896('0x2f')]);_0x2a1357[_0x5896('0x30')]=qs[_0x5896('0x31')](_[_0x5896('0x32')](_0x574ec4[_0x5896('0x27')],_0x4039da['filters']),_0x119273);if(_0x574ec4[_0x5896('0x27')][_0x5896('0x33')]){_0x2a1357['where']=_[_0x5896('0x34')](_0x2a1357[_0x5896('0x30')],{'$or':_[_0x5896('0x21')](_0x119273,function(_0x306c54){if(_0x306c54[_0x5896('0x24')]!==_0x5896('0x35')){var _0x3d503d={};_0x3d503d[_0x306c54[_0x5896('0x1e')]]={'$like':'%'+_0x574ec4['query'][_0x5896('0x33')]+'%'};return _0x3d503d;}})});}_0x2a1357=_[_0x5896('0x34')]({},_0x2a1357,_0x574ec4[_0x5896('0x36')]);var _0x3f9c81={'where':_0x2a1357[_0x5896('0x30')]};return db[_0x5896('0x37')][_0x5896('0x11')](_0x3f9c81)[_0x5896('0x14')](function(_0x567145){_0xb69d86[_0x5896('0x11')]=_0x567145;if(_0x574ec4[_0x5896('0x27')][_0x5896('0x38')]){_0x2a1357[_0x5896('0x39')]=[{'all':!![]}];}return db[_0x5896('0x37')]['findAll'](_0x2a1357);})[_0x5896('0x14')](function(_0x1bb8cc){_0xb69d86[_0x5896('0x3a')]=_0x1bb8cc;return _0xb69d86;})[_0x5896('0x14')](respondWithFilteredResult(_0xbe1e43,_0x2a1357))[_0x5896('0x3b')](handleError(_0xbe1e43,null));};exports['show']=function(_0x1a7628,_0x245dd6){var _0x118009={'raw':![],'where':{'id':_0x1a7628[_0x5896('0x3c')]['id']}},_0x3cb5cb={};_0x3cb5cb[_0x5896('0x26')]=_[_0x5896('0x28')](db[_0x5896('0x37')][_0x5896('0x22')]);_0x3cb5cb[_0x5896('0x27')]=_[_0x5896('0x28')](_0x1a7628[_0x5896('0x27')]);_0x3cb5cb[_0x5896('0x31')]=_[_0x5896('0x29')](_0x3cb5cb[_0x5896('0x26')],_0x3cb5cb[_0x5896('0x27')]);_0x118009['attributes']=_[_0x5896('0x29')](_0x3cb5cb[_0x5896('0x26')],qs[_0x5896('0x2b')](_0x1a7628[_0x5896('0x27')][_0x5896('0x2b')]));_0x118009['attributes']=_0x118009[_0x5896('0x2a')]['length']?_0x118009[_0x5896('0x2a')]:_0x3cb5cb[_0x5896('0x26')];if(_0x1a7628[_0x5896('0x27')][_0x5896('0x38')]){_0x118009[_0x5896('0x39')]=[{'all':!![]}];}_0x118009=_['merge']({},_0x118009,_0x1a7628['options']);return db[_0x5896('0x37')]['find'](_0x118009)['then'](handleEntityNotFound(_0x245dd6,null))[_0x5896('0x14')](respondWithResult(_0x245dd6,null))[_0x5896('0x3b')](handleError(_0x245dd6,null));};exports[_0x5896('0x3d')]=function(_0x259de5,_0x12e77e){return db[_0x5896('0x37')][_0x5896('0x3d')](_0x259de5[_0x5896('0x3e')],{})[_0x5896('0x14')](function(_0x2eaff9){var _0x5669f3=_0x259de5[_0x5896('0x3f')][_0x5896('0x16')]({'plain':!![]});if(!_0x5669f3)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x5669f3[_0x5896('0x40')]===_0x5896('0x3f')){var _0x41025c=_0x2eaff9[_0x5896('0x16')]({'plain':!![]});var _0x271005=_0x5896('0x17');return db['UserProfileSection'][_0x5896('0x41')]({'where':{'name':_0x271005,'userProfileId':_0x5669f3[_0x5896('0x42')]},'raw':!![]})[_0x5896('0x14')](function(_0x45d603){if(_0x45d603&&_0x45d603[_0x5896('0x43')]===0x0){return db[_0x5896('0x18')][_0x5896('0x3d')]({'name':_0x41025c[_0x5896('0x1e')],'resourceId':_0x41025c['id'],'type':_0x45d603[_0x5896('0x1e')],'sectionId':_0x45d603['id']},{})['then'](function(){return _0x2eaff9;});}else{return _0x2eaff9;}})[_0x5896('0x3b')](function(_0xe7a751){logger['error'](_0x5896('0x44'),_0xe7a751);throw _0xe7a751;});}return _0x2eaff9;})[_0x5896('0x14')](respondWithResult(_0x12e77e,0xc9))[_0x5896('0x3b')](handleError(_0x12e77e,null));};exports[_0x5896('0x13')]=function(_0x419b35,_0x683753){if(_0x419b35['body']['id']){delete _0x419b35[_0x5896('0x3e')]['id'];}return db[_0x5896('0x37')][_0x5896('0x41')]({'where':{'id':_0x419b35[_0x5896('0x3c')]['id']}})[_0x5896('0x14')](handleEntityNotFound(_0x683753,null))[_0x5896('0x14')](saveUpdates(_0x419b35[_0x5896('0x3e')],null))[_0x5896('0x14')](function(_0x4df901){if(!_0x4df901)return;var _0x1769f9=_0x4df901[_0x5896('0x16')]({'plain':!![]});return _0x1769f9;})['then'](function(_0x1357dd){var _0x27d152=new Redis(config['redis']);_0x27d152[_0x5896('0x19')](_0x5896('0x1a'),JSON['stringify'](_[_0x5896('0x32')](_0x1357dd,['id',_0x5896('0x1e'),_0x5896('0x45')])));return _0x1357dd;})[_0x5896('0x14')](respondWithResult(_0x683753,null))[_0x5896('0x3b')](handleError(_0x683753,null));};exports[_0x5896('0x15')]=function(_0x46f006,_0x53b87c){return db[_0x5896('0x37')][_0x5896('0x41')]({'where':{'id':_0x46f006['params']['id']}})[_0x5896('0x14')](handleEntityNotFound(_0x53b87c,null))[_0x5896('0x14')](removeEntity(_0x53b87c,null))[_0x5896('0x3b')](handleError(_0x53b87c,null));};
\ No newline at end of file
+var _0x6628=['keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','filters','where','VIRTUAL','filter','merge','options','includeAll','include','findAll','rows','show','params','find','catch','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','publish','agi','stringify','pick','production','lodash','../../config/logger','api','../../config/environment','../../mysqldb','redis','socket.io-emitter','./squareProject.socket','register','status','offset','undefined','limit','count','set','Content-Range','json','update','then','get','SquareProjects','UserProfileResource','end','error','stack','name','index','map','SquareProject','rawAttributes','type','key','model','query'];(function(_0x4d4ade,_0x431763){var _0xd60777=function(_0x4cbdd8){while(--_0x4cbdd8){_0x4d4ade['push'](_0x4d4ade['shift']());}};_0xd60777(++_0x431763);}(_0x6628,0x66));var _0x8662=function(_0x4e455f,_0x5a388f){_0x4e455f=_0x4e455f-0x0;var _0x49c81b=_0x6628[_0x4e455f];return _0x49c81b;};'use strict';var _=require(_0x8662('0x0'));var Redis=require('ioredis');var qs=require('../../components/parsers/qs');var logger=require(_0x8662('0x1'))(_0x8662('0x2'));var config=require(_0x8662('0x3'));var db=require(_0x8662('0x4'))['db'];config[_0x8662('0x5')]=_['defaults'](config[_0x8662('0x5')],{'host':'localhost','port':0x18eb});var socket=require(_0x8662('0x6'))(new Redis(config[_0x8662('0x5')]));require(_0x8662('0x7'))[_0x8662('0x8')](socket);function respondWithResult(_0x5e0151,_0x39c49e){_0x39c49e=_0x39c49e||0xc8;return function(_0xf72c09){if(_0xf72c09){return _0x5e0151[_0x8662('0x9')](_0x39c49e)['json'](_0xf72c09);}};}function respondWithFilteredResult(_0x1ed350,_0x4653a5){return function(_0x4d5b26){if(_0x4d5b26){var _0x3e8d0b=typeof _0x4653a5[_0x8662('0xa')]===_0x8662('0xb')&&typeof _0x4653a5[_0x8662('0xc')]===_0x8662('0xb');var _0x4d05b6=_0x4d5b26['count'];var _0x28c297=_0x3e8d0b?0x0:_0x4653a5['offset'];var _0x2c2694=_0x3e8d0b?_0x4d5b26[_0x8662('0xd')]:_0x4653a5[_0x8662('0xa')]+_0x4653a5[_0x8662('0xc')];var _0x323644;if(_0x2c2694>=_0x4d05b6){_0x2c2694=_0x4d05b6;_0x323644=0xc8;}else{_0x323644=0xce;}_0x1ed350[_0x8662('0x9')](_0x323644);return _0x1ed350[_0x8662('0xe')](_0x8662('0xf'),_0x28c297+'-'+_0x2c2694+'/'+_0x4d05b6)[_0x8662('0x10')](_0x4d5b26);}return null;};}function saveUpdates(_0x113cf5){return function(_0x393079){if(_0x393079){return _0x393079[_0x8662('0x11')](_0x113cf5)['then'](function(_0x236168){return _0x236168;});}return null;};}function removeEntity(_0x327280){return function(_0x2e3739){if(_0x2e3739){return _0x2e3739['destroy']()[_0x8662('0x12')](function(){var _0x58ea11=_0x2e3739[_0x8662('0x13')]({'plain':!![]});var _0x6c1e40=_0x8662('0x14');return db[_0x8662('0x15')]['destroy']({'where':{'type':_0x6c1e40,'resourceId':_0x58ea11['id']}})[_0x8662('0x12')](function(){return _0x2e3739;});})[_0x8662('0x12')](function(){var _0x2f3255=new Redis(config['redis']);_0x2f3255['publish']('agi',JSON['stringify']({'id':_0x2e3739['id'],'deleted':!![]}));})[_0x8662('0x12')](function(){_0x327280[_0x8662('0x9')](0xcc)[_0x8662('0x16')]();});}};}function handleEntityNotFound(_0x52efde){return function(_0x177e60){if(!_0x177e60){_0x52efde['sendStatus'](0x194);}return _0x177e60;};}function handleError(_0x521997,_0x266cb3){_0x266cb3=_0x266cb3||0x1f4;return function(_0x350f79){logger[_0x8662('0x17')](_0x350f79[_0x8662('0x18')]);if(_0x350f79['name']){delete _0x350f79[_0x8662('0x19')];}_0x521997[_0x8662('0x9')](_0x266cb3)['send'](_0x350f79);};}exports[_0x8662('0x1a')]=function(_0x585620,_0x572e78){var _0x268c89={},_0x5fdfe3={},_0x5e4622={'count':0x0,'rows':[]};var _0x304744=_[_0x8662('0x1b')](db[_0x8662('0x1c')][_0x8662('0x1d')],function(_0x58af1c){return{'name':_0x58af1c['fieldName'],'type':_0x58af1c[_0x8662('0x1e')][_0x8662('0x1f')]};});_0x5fdfe3[_0x8662('0x20')]=_[_0x8662('0x1b')](_0x304744,_0x8662('0x19'));_0x5fdfe3[_0x8662('0x21')]=_[_0x8662('0x22')](_0x585620[_0x8662('0x21')]);_0x5fdfe3['filters']=_[_0x8662('0x23')](_0x5fdfe3[_0x8662('0x20')],_0x5fdfe3[_0x8662('0x21')]);_0x268c89['attributes']=_[_0x8662('0x23')](_0x5fdfe3['model'],qs[_0x8662('0x24')](_0x585620['query'][_0x8662('0x24')]));_0x268c89['attributes']=_0x268c89[_0x8662('0x25')][_0x8662('0x26')]?_0x268c89['attributes']:_0x5fdfe3[_0x8662('0x20')];if(!_0x585620[_0x8662('0x21')][_0x8662('0x27')](_0x8662('0x28'))){_0x268c89[_0x8662('0xc')]=qs[_0x8662('0xc')](_0x585620['query'][_0x8662('0xc')]);_0x268c89[_0x8662('0xa')]=qs[_0x8662('0xa')](_0x585620[_0x8662('0x21')][_0x8662('0xa')]);}_0x268c89[_0x8662('0x29')]=qs[_0x8662('0x2a')](_0x585620['query']['sort']);_0x268c89['where']=qs[_0x8662('0x2b')](_['pick'](_0x585620[_0x8662('0x21')],_0x5fdfe3[_0x8662('0x2b')]),_0x304744);if(_0x585620[_0x8662('0x21')]['filter']){_0x268c89[_0x8662('0x2c')]=_['merge'](_0x268c89[_0x8662('0x2c')],{'$or':_['map'](_0x304744,function(_0xe195ea){if(_0xe195ea['type']!==_0x8662('0x2d')){var _0x3109bb={};_0x3109bb[_0xe195ea[_0x8662('0x19')]]={'$like':'%'+_0x585620[_0x8662('0x21')][_0x8662('0x2e')]+'%'};return _0x3109bb;}})});}_0x268c89=_[_0x8662('0x2f')]({},_0x268c89,_0x585620[_0x8662('0x30')]);var _0x491a49={'where':_0x268c89[_0x8662('0x2c')]};return db[_0x8662('0x1c')][_0x8662('0xd')](_0x491a49)[_0x8662('0x12')](function(_0x3f1887){_0x5e4622[_0x8662('0xd')]=_0x3f1887;if(_0x585620['query'][_0x8662('0x31')]){_0x268c89[_0x8662('0x32')]=[{'all':!![]}];}return db[_0x8662('0x1c')][_0x8662('0x33')](_0x268c89);})[_0x8662('0x12')](function(_0x1cb4d8){_0x5e4622[_0x8662('0x34')]=_0x1cb4d8;return _0x5e4622;})[_0x8662('0x12')](respondWithFilteredResult(_0x572e78,_0x268c89))['catch'](handleError(_0x572e78,null));};exports[_0x8662('0x35')]=function(_0x188224,_0x1986ba){var _0x576c87={'raw':![],'where':{'id':_0x188224[_0x8662('0x36')]['id']}},_0x272c18={};_0x272c18['model']=_[_0x8662('0x22')](db[_0x8662('0x1c')][_0x8662('0x1d')]);_0x272c18[_0x8662('0x21')]=_['keys'](_0x188224[_0x8662('0x21')]);_0x272c18[_0x8662('0x2b')]=_[_0x8662('0x23')](_0x272c18[_0x8662('0x20')],_0x272c18['query']);_0x576c87[_0x8662('0x25')]=_[_0x8662('0x23')](_0x272c18[_0x8662('0x20')],qs[_0x8662('0x24')](_0x188224[_0x8662('0x21')][_0x8662('0x24')]));_0x576c87[_0x8662('0x25')]=_0x576c87['attributes'][_0x8662('0x26')]?_0x576c87[_0x8662('0x25')]:_0x272c18['model'];if(_0x188224['query']['includeAll']){_0x576c87[_0x8662('0x32')]=[{'all':!![]}];}_0x576c87=_['merge']({},_0x576c87,_0x188224[_0x8662('0x30')]);return db['SquareProject'][_0x8662('0x37')](_0x576c87)[_0x8662('0x12')](handleEntityNotFound(_0x1986ba,null))[_0x8662('0x12')](respondWithResult(_0x1986ba,null))[_0x8662('0x38')](handleError(_0x1986ba,null));};exports[_0x8662('0x39')]=function(_0x456b4a,_0x134287){return db[_0x8662('0x1c')][_0x8662('0x39')](_0x456b4a[_0x8662('0x3a')],{})[_0x8662('0x12')](function(_0x5ac731){var _0x524bb0=_0x456b4a['user'][_0x8662('0x13')]({'plain':!![]});if(!_0x524bb0)throw new Error(_0x8662('0x3b'));if(_0x524bb0[_0x8662('0x3c')]==='user'){var _0x58fd62=_0x5ac731[_0x8662('0x13')]({'plain':!![]});var _0x1cdd84=_0x8662('0x14');return db[_0x8662('0x3d')]['find']({'where':{'name':_0x1cdd84,'userProfileId':_0x524bb0['userProfileId']},'raw':!![]})[_0x8662('0x12')](function(_0x26a200){if(_0x26a200&&_0x26a200[_0x8662('0x3e')]===0x0){return db[_0x8662('0x15')][_0x8662('0x39')]({'name':_0x58fd62[_0x8662('0x19')],'resourceId':_0x58fd62['id'],'type':_0x26a200['name'],'sectionId':_0x26a200['id']},{})[_0x8662('0x12')](function(){return _0x5ac731;});}else{return _0x5ac731;}})[_0x8662('0x38')](function(_0x33ff0c){logger[_0x8662('0x17')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x33ff0c);throw _0x33ff0c;});}return _0x5ac731;})[_0x8662('0x12')](respondWithResult(_0x134287,0xc9))['catch'](handleError(_0x134287,null));};exports[_0x8662('0x11')]=function(_0x385e76,_0x5a3f1c){if(_0x385e76[_0x8662('0x3a')]['id']){delete _0x385e76[_0x8662('0x3a')]['id'];}return db['SquareProject'][_0x8662('0x37')]({'where':{'id':_0x385e76[_0x8662('0x36')]['id']}})[_0x8662('0x12')](handleEntityNotFound(_0x5a3f1c,null))['then'](saveUpdates(_0x385e76[_0x8662('0x3a')],null))[_0x8662('0x12')](function(_0xdf12f3){if(!_0xdf12f3)return;var _0x55c452=_0xdf12f3[_0x8662('0x13')]({'plain':!![]});return _0x55c452;})[_0x8662('0x12')](function(_0x1589e8){var _0x1b1604=new Redis(config[_0x8662('0x5')]);_0x1b1604[_0x8662('0x3f')](_0x8662('0x40'),JSON[_0x8662('0x41')](_[_0x8662('0x42')](_0x1589e8,['id',_0x8662('0x19'),_0x8662('0x43')])));return _0x1589e8;})[_0x8662('0x12')](respondWithResult(_0x5a3f1c,null))['catch'](handleError(_0x5a3f1c,null));};exports['destroy']=function(_0x16954f,_0x196c3b){return db[_0x8662('0x1c')][_0x8662('0x37')]({'where':{'id':_0x16954f[_0x8662('0x36')]['id']}})['then'](handleEntityNotFound(_0x196c3b,null))[_0x8662('0x12')](removeEntity(_0x196c3b,null))[_0x8662('0x38')](handleError(_0x196c3b,null));};
\ No newline at end of file
index 51c0456..825f4dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc1a8=['events','../../mysqldb','save','update','emit','hook','exports'];(function(_0x3e65be,_0x382b80){var _0x1c20c3=function(_0x249c16){while(--_0x249c16){_0x3e65be['push'](_0x3e65be['shift']());}};_0x1c20c3(++_0x382b80);}(_0xc1a8,0x149));var _0x8c1a=function(_0x15ec35,_0x5b9972){_0x15ec35=_0x15ec35-0x0;var _0x937cce=_0xc1a8[_0x15ec35];return _0x937cce;};'use strict';var EventEmitter=require(_0x8c1a('0x0'));var SquareProject=require(_0x8c1a('0x1'))['db']['SquareProject'];var SquareProjectEvents=new EventEmitter();SquareProjectEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x8c1a('0x2'),'afterUpdate':_0x8c1a('0x3'),'afterDestroy':'remove'};function emitEvent(_0x4f16ef){return function(_0xf4d592,_0x52fe41,_0x361324){SquareProjectEvents[_0x8c1a('0x4')](_0x4f16ef+':'+_0xf4d592['id'],_0xf4d592);SquareProjectEvents[_0x8c1a('0x4')](_0x4f16ef,_0xf4d592);_0x361324(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SquareProject[_0x8c1a('0x5')](e,emitEvent(event));}}module[_0x8c1a('0x6')]=SquareProjectEvents;
\ No newline at end of file
+var _0x64c7=['../../mysqldb','SquareProject','setMaxListeners','save','hasOwnProperty','hook','exports'];(function(_0x32e8f2,_0x33cff3){var _0xefd2e6=function(_0x524abd){while(--_0x524abd){_0x32e8f2['push'](_0x32e8f2['shift']());}};_0xefd2e6(++_0x33cff3);}(_0x64c7,0x1c7));var _0x764c=function(_0x3f6b1b,_0x58d3d6){_0x3f6b1b=_0x3f6b1b-0x0;var _0x4a3d2b=_0x64c7[_0x3f6b1b];return _0x4a3d2b;};'use strict';var EventEmitter=require('events');var SquareProject=require(_0x764c('0x0'))['db'][_0x764c('0x1')];var SquareProjectEvents=new EventEmitter();SquareProjectEvents[_0x764c('0x2')](0x0);var events={'afterCreate':_0x764c('0x3'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x1a7e6f){return function(_0x107777,_0x2920c0,_0x1b9f19){SquareProjectEvents['emit'](_0x1a7e6f+':'+_0x107777['id'],_0x107777);SquareProjectEvents['emit'](_0x1a7e6f,_0x107777);_0x1b9f19(null);};}for(var e in events){if(events[_0x764c('0x4')](e)){var event=events[e];SquareProject[_0x764c('0x5')](e,emitEvent(event));}}module[_0x764c('0x6')]=SquareProjectEvents;
\ No newline at end of file
index 784e073..fb0b264 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8722=['YYYY-MM-DD\x20HH:mm:ss','changed','production','publishedAt','lodash','util','../../config/logger','api','bluebird','request-promise','rimraf','../../config/environment','exports','preproduction','savedAt','format'];(function(_0x5f3b9c,_0x416312){var _0x86064b=function(_0x5d2484){while(--_0x5d2484){_0x5f3b9c['push'](_0x5f3b9c['shift']());}};_0x86064b(++_0x416312);}(_0x8722,0x1e4));var _0x2872=function(_0x51834b,_0x5d814d){_0x51834b=_0x51834b-0x0;var _0x41beac=_0x8722[_0x51834b];return _0x41beac;};'use strict';var _=require(_0x2872('0x0'));var util=require(_0x2872('0x1'));var logger=require(_0x2872('0x2'))(_0x2872('0x3'));var moment=require('moment');var BPromise=require(_0x2872('0x4'));var rp=require(_0x2872('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x2872('0x6'));var config=require(_0x2872('0x7'));var attributes=require('./squareProject.attributes');module[_0x2872('0x8')]=function(_0x4105c5,_0x40aa53){return _0x4105c5['define']('SquareProject',attributes,{'tableName':'square_projects','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x598933,_0x2f1016,_0x3b8c45){if(_0x598933['changed'](_0x2872('0x9'))){_0x598933[_0x2872('0xa')]=moment()[_0x2872('0xb')](_0x2872('0xc'));}if(_0x598933[_0x2872('0xd')](_0x2872('0xe'))){_0x598933[_0x2872('0xf')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');}_0x3b8c45(null,_0x598933);}}});};
\ No newline at end of file
+var _0x04e1=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','SquareProject','preproduction','savedAt','format','YYYY-MM-DD\x20HH:mm:ss','changed','production','publishedAt','lodash'];(function(_0x2a53ad,_0x234135){var _0x31b3b6=function(_0x141ec6){while(--_0x141ec6){_0x2a53ad['push'](_0x2a53ad['shift']());}};_0x31b3b6(++_0x234135);}(_0x04e1,0x1b7));var _0x104e=function(_0x437c49,_0x5530af){_0x437c49=_0x437c49-0x0;var _0x47579e=_0x04e1[_0x437c49];return _0x47579e;};'use strict';var _=require(_0x104e('0x0'));var util=require(_0x104e('0x1'));var logger=require(_0x104e('0x2'))(_0x104e('0x3'));var moment=require(_0x104e('0x4'));var BPromise=require(_0x104e('0x5'));var rp=require(_0x104e('0x6'));var fs=require('fs');var path=require(_0x104e('0x7'));var rimraf=require(_0x104e('0x8'));var config=require(_0x104e('0x9'));var attributes=require('./squareProject.attributes');module[_0x104e('0xa')]=function(_0x1e7d78,_0x3b108b){return _0x1e7d78[_0x104e('0xb')](_0x104e('0xc'),attributes,{'tableName':'square_projects','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0xa8a691,_0x4c4c5a,_0x5573bb){if(_0xa8a691['changed'](_0x104e('0xd'))){_0xa8a691[_0x104e('0xe')]=moment()[_0x104e('0xf')](_0x104e('0x10'));}if(_0xa8a691[_0x104e('0x11')](_0x104e('0x12'))){_0xa8a691[_0x104e('0x13')]=moment()[_0x104e('0xf')](_0x104e('0x10'));}_0x5573bb(null,_0xa8a691);}}});};
\ No newline at end of file
index c476526..a99a191 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x26b0=['GetSquareProjects','catch','error','message','ShowSquareProject','find','raw','stringify','lodash','ioredis','../../config/logger','rpc','../../config/environment','redis','defaults','socket.io-emitter','./squareProject.socket','register','SquareProject','findAll','options','where','attributes','include','map','model','then','info','debug'];(function(_0x417aac,_0x1be30e){var _0x5ae174=function(_0x398288){while(--_0x398288){_0x417aac['push'](_0x417aac['shift']());}};_0x5ae174(++_0x1be30e);}(_0x26b0,0x19e));var _0x026b=function(_0x211b80,_0x5cb5fa){_0x211b80=_0x211b80-0x0;var _0x1c3037=_0x26b0[_0x211b80];return _0x1c3037;};'use strict';var _=require(_0x026b('0x0'));var Redis=require(_0x026b('0x1'));var db=require('../../mysqldb')['db'];var logger=require(_0x026b('0x2'))(_0x026b('0x3'));var config=require(_0x026b('0x4'));config[_0x026b('0x5')]=_[_0x026b('0x6')](config[_0x026b('0x5')],{'host':'localhost','port':0x18eb});var socket=require(_0x026b('0x7'))(new Redis(config[_0x026b('0x5')]));require(_0x026b('0x8'))[_0x026b('0x9')](socket);exports['GetSquareProjects']=function(_0x579185){var _0x673014=this;return new Promise(function(_0x22615e,_0x1f8569){return db[_0x026b('0xa')][_0x026b('0xb')]({'raw':_0x579185['options']?_0x579185[_0x026b('0xc')]['raw']===undefined?!![]:![]:!![],'where':_0x579185['options']?_0x579185[_0x026b('0xc')][_0x026b('0xd')]||null:null,'attributes':_0x579185[_0x026b('0xc')]?_0x579185['options'][_0x026b('0xe')]||null:null,'limit':_0x579185[_0x026b('0xc')]?_0x579185[_0x026b('0xc')]['limit']||null:null,'include':_0x579185[_0x026b('0xc')]?_0x579185[_0x026b('0xc')][_0x026b('0xf')]?_[_0x026b('0x10')](_0x579185[_0x026b('0xc')][_0x026b('0xf')],function(_0x405f1e){return{'model':db[_0x405f1e['model']],'as':_0x405f1e['as'],'attributes':_0x405f1e[_0x026b('0xe')],'include':_0x405f1e[_0x026b('0xf')]?_[_0x026b('0x10')](_0x405f1e[_0x026b('0xf')],function(_0x516c03){return{'model':db[_0x516c03[_0x026b('0x11')]],'as':_0x516c03['as'],'attributes':_0x516c03['attributes'],'include':_0x516c03[_0x026b('0xf')]?_['map'](_0x516c03[_0x026b('0xf')],function(_0x553b90){return{'model':db[_0x553b90[_0x026b('0x11')]],'as':_0x553b90['as'],'attributes':_0x553b90[_0x026b('0xe')]};}):[]};}):[]};}):[]:[]})[_0x026b('0x12')](function(_0x5dbe48){logger[_0x026b('0x13')]('GetSquareProjects',_0x579185);logger[_0x026b('0x14')](_0x026b('0x15'),_0x579185,JSON['stringify'](_0x5dbe48));_0x22615e(_0x5dbe48);})[_0x026b('0x16')](function(_0x202c4f){logger[_0x026b('0x17')](_0x026b('0x15'),_0x202c4f['message'],_0x579185);_0x1f8569(_0x673014[_0x026b('0x17')](0x1f4,_0x202c4f[_0x026b('0x18')]));});});};exports[_0x026b('0x19')]=function(_0x22f999){var _0x509796=this;return new Promise(function(_0x599866,_0x4b659f){return db[_0x026b('0xa')][_0x026b('0x1a')]({'raw':_0x22f999[_0x026b('0xc')]?_0x22f999[_0x026b('0xc')][_0x026b('0x1b')]===undefined?!![]:![]:!![],'where':_0x22f999[_0x026b('0xc')]?_0x22f999['options'][_0x026b('0xd')]||null:null,'attributes':_0x22f999[_0x026b('0xc')]?_0x22f999[_0x026b('0xc')][_0x026b('0xe')]||null:null,'include':_0x22f999['options']?_0x22f999[_0x026b('0xc')]['include']?_['map'](_0x22f999['options'][_0x026b('0xf')],function(_0x2a332f){return{'model':db[_0x2a332f['model']],'as':_0x2a332f['as'],'attributes':_0x2a332f[_0x026b('0xe')],'include':_0x2a332f[_0x026b('0xf')]?_[_0x026b('0x10')](_0x2a332f[_0x026b('0xf')],function(_0x1bd140){return{'model':db[_0x1bd140[_0x026b('0x11')]],'as':_0x1bd140['as'],'attributes':_0x1bd140[_0x026b('0xe')],'include':_0x1bd140[_0x026b('0xf')]?_[_0x026b('0x10')](_0x1bd140[_0x026b('0xf')],function(_0xef0e2f){return{'model':db[_0xef0e2f[_0x026b('0x11')]],'as':_0xef0e2f['as'],'attributes':_0xef0e2f[_0x026b('0xe')]};}):[]};}):[]};}):[]:[]})[_0x026b('0x12')](function(_0x5b2b6b){logger[_0x026b('0x13')](_0x026b('0x19'),_0x22f999);logger[_0x026b('0x14')](_0x026b('0x19'),_0x22f999,JSON[_0x026b('0x1c')](_0x5b2b6b));_0x599866(_0x5b2b6b);})[_0x026b('0x16')](function(_0x12e5aa){logger[_0x026b('0x17')]('ShowSquareProject',_0x12e5aa['message'],_0x22f999);_0x4b659f(_0x509796['error'](0x1f4,_0x12e5aa[_0x026b('0x18')]));});});};
\ No newline at end of file
+var _0x9111=['../../config/environment','defaults','localhost','socket.io-emitter','./squareProject.socket','GetSquareProjects','SquareProject','options','raw','where','attributes','limit','model','include','map','debug','stringify','catch','error','message','find','then','ShowSquareProject','lodash','ioredis','../../mysqldb','../../config/logger'];(function(_0x278e93,_0x13bdb6){var _0x2fd5ea=function(_0x5cf7f7){while(--_0x5cf7f7){_0x278e93['push'](_0x278e93['shift']());}};_0x2fd5ea(++_0x13bdb6);}(_0x9111,0x1c7));var _0x1911=function(_0x19aa44,_0x488555){_0x19aa44=_0x19aa44-0x0;var _0x14b2f7=_0x9111[_0x19aa44];return _0x14b2f7;};'use strict';var _=require(_0x1911('0x0'));var Redis=require(_0x1911('0x1'));var db=require(_0x1911('0x2'))['db'];var logger=require(_0x1911('0x3'))('rpc');var config=require(_0x1911('0x4'));config['redis']=_[_0x1911('0x5')](config['redis'],{'host':_0x1911('0x6'),'port':0x18eb});var socket=require(_0x1911('0x7'))(new Redis(config['redis']));require(_0x1911('0x8'))['register'](socket);exports[_0x1911('0x9')]=function(_0x2c9855){var _0x43d69e=this;return new Promise(function(_0x2a9953,_0x6e7a46){return db[_0x1911('0xa')]['findAll']({'raw':_0x2c9855[_0x1911('0xb')]?_0x2c9855[_0x1911('0xb')][_0x1911('0xc')]===undefined?!![]:![]:!![],'where':_0x2c9855['options']?_0x2c9855[_0x1911('0xb')][_0x1911('0xd')]||null:null,'attributes':_0x2c9855[_0x1911('0xb')]?_0x2c9855[_0x1911('0xb')][_0x1911('0xe')]||null:null,'limit':_0x2c9855[_0x1911('0xb')]?_0x2c9855['options'][_0x1911('0xf')]||null:null,'include':_0x2c9855[_0x1911('0xb')]?_0x2c9855[_0x1911('0xb')]['include']?_['map'](_0x2c9855['options']['include'],function(_0x13f230){return{'model':db[_0x13f230[_0x1911('0x10')]],'as':_0x13f230['as'],'attributes':_0x13f230[_0x1911('0xe')],'include':_0x13f230[_0x1911('0x11')]?_['map'](_0x13f230[_0x1911('0x11')],function(_0x698c99){return{'model':db[_0x698c99[_0x1911('0x10')]],'as':_0x698c99['as'],'attributes':_0x698c99[_0x1911('0xe')],'include':_0x698c99[_0x1911('0x11')]?_[_0x1911('0x12')](_0x698c99[_0x1911('0x11')],function(_0x183d85){return{'model':db[_0x183d85[_0x1911('0x10')]],'as':_0x183d85['as'],'attributes':_0x183d85[_0x1911('0xe')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x3cc0d4){logger['info']('GetSquareProjects',_0x2c9855);logger[_0x1911('0x13')](_0x1911('0x9'),_0x2c9855,JSON[_0x1911('0x14')](_0x3cc0d4));_0x2a9953(_0x3cc0d4);})[_0x1911('0x15')](function(_0x45ffd0){logger[_0x1911('0x16')](_0x1911('0x9'),_0x45ffd0[_0x1911('0x17')],_0x2c9855);_0x6e7a46(_0x43d69e[_0x1911('0x16')](0x1f4,_0x45ffd0[_0x1911('0x17')]));});});};exports['ShowSquareProject']=function(_0x34b92f){var _0x4d5ae6=this;return new Promise(function(_0x24d527,_0xccdc1a){return db[_0x1911('0xa')][_0x1911('0x18')]({'raw':_0x34b92f[_0x1911('0xb')]?_0x34b92f[_0x1911('0xb')][_0x1911('0xc')]===undefined?!![]:![]:!![],'where':_0x34b92f[_0x1911('0xb')]?_0x34b92f['options'][_0x1911('0xd')]||null:null,'attributes':_0x34b92f[_0x1911('0xb')]?_0x34b92f[_0x1911('0xb')][_0x1911('0xe')]||null:null,'include':_0x34b92f[_0x1911('0xb')]?_0x34b92f[_0x1911('0xb')][_0x1911('0x11')]?_[_0x1911('0x12')](_0x34b92f[_0x1911('0xb')][_0x1911('0x11')],function(_0x4d1de6){return{'model':db[_0x4d1de6[_0x1911('0x10')]],'as':_0x4d1de6['as'],'attributes':_0x4d1de6[_0x1911('0xe')],'include':_0x4d1de6[_0x1911('0x11')]?_[_0x1911('0x12')](_0x4d1de6[_0x1911('0x11')],function(_0x4b42e8){return{'model':db[_0x4b42e8[_0x1911('0x10')]],'as':_0x4b42e8['as'],'attributes':_0x4b42e8[_0x1911('0xe')],'include':_0x4b42e8[_0x1911('0x11')]?_[_0x1911('0x12')](_0x4b42e8['include'],function(_0x3ab995){return{'model':db[_0x3ab995[_0x1911('0x10')]],'as':_0x3ab995['as'],'attributes':_0x3ab995[_0x1911('0xe')]};}):[]};}):[]};}):[]:[]})[_0x1911('0x19')](function(_0x36f147){logger['info'](_0x1911('0x1a'),_0x34b92f);logger['debug'](_0x1911('0x1a'),_0x34b92f,JSON['stringify'](_0x36f147));_0x24d527(_0x36f147);})[_0x1911('0x15')](function(_0x1c496c){logger[_0x1911('0x16')]('ShowSquareProject',_0x1c496c[_0x1911('0x17')],_0x34b92f);_0xccdc1a(_0x4d5ae6[_0x1911('0x16')](0x1f4,_0x1c496c['message']));});});};
\ No newline at end of file
index bc8ae4f..a780869 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0dc3=['emit','register','squareProject:','save','update'];(function(_0x31b5b2,_0x5ab927){var _0x364f13=function(_0x163bd0){while(--_0x163bd0){_0x31b5b2['push'](_0x31b5b2['shift']());}};_0x364f13(++_0x5ab927);}(_0x0dc3,0x107));var _0x30dc=function(_0x142ec2,_0x5bb03d){_0x142ec2=_0x142ec2-0x0;var _0x45ef4e=_0x0dc3[_0x142ec2];return _0x45ef4e;};'use strict';var SquareProjectEvents=require('./squareProject.events');var events=[_0x30dc('0x0'),'remove',_0x30dc('0x1')];function createListener(_0x86cdeb,_0x2ab460){return function(_0x52e91b){_0x2ab460[_0x30dc('0x2')](_0x86cdeb,_0x52e91b);};}function removeListener(_0x1ff58f,_0x2263c2){return function(){SquareProjectEvents['removeListener'](_0x1ff58f,_0x2263c2);};}exports[_0x30dc('0x3')]=function(_0x201ced){for(var _0x1726ba=0x0,_0x41fe02=events['length'];_0x1726ba<_0x41fe02;_0x1726ba++){var _0x58d562=events[_0x1726ba];var _0x5a1802=createListener(_0x30dc('0x4')+_0x58d562,_0x201ced);SquareProjectEvents['on'](_0x58d562,_0x5a1802);}};
\ No newline at end of file
+var _0xe59d=['register','length','squareProject:','./squareProject.events','save','remove','update','emit','removeListener'];(function(_0xa5685c,_0x135b9a){var _0x2cb51a=function(_0x216dcd){while(--_0x216dcd){_0xa5685c['push'](_0xa5685c['shift']());}};_0x2cb51a(++_0x135b9a);}(_0xe59d,0x1d7));var _0xde59=function(_0x3c6125,_0x3b2a9c){_0x3c6125=_0x3c6125-0x0;var _0x2f47b8=_0xe59d[_0x3c6125];return _0x2f47b8;};'use strict';var SquareProjectEvents=require(_0xde59('0x0'));var events=[_0xde59('0x1'),_0xde59('0x2'),_0xde59('0x3')];function createListener(_0x12d02b,_0xa58a94){return function(_0x10983d){_0xa58a94[_0xde59('0x4')](_0x12d02b,_0x10983d);};}function removeListener(_0x56d9db,_0x4bb8e0){return function(){SquareProjectEvents[_0xde59('0x5')](_0x56d9db,_0x4bb8e0);};}exports[_0xde59('0x6')]=function(_0xfbfdb5){for(var _0x3c3968=0x0,_0x54d36d=events[_0xde59('0x7')];_0x3c3968<_0x54d36d;_0x3c3968++){var _0x28fea2=events[_0x3c3968];var _0x2f1b64=createListener(_0xde59('0x8')+_0x28fea2,_0xfbfdb5);SquareProjectEvents['on'](_0x28fea2,_0x2f1b64);}};
\ No newline at end of file
index 9004a06..fc15888 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x814b=['multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareRecording.controller','get','isAuthenticated','/:id','show','/:id/download','download','post','create','put','delete','destroy','exports'];(function(_0x1738a3,_0xd7836f){var _0x218e1f=function(_0x455c2b){while(--_0x455c2b){_0x1738a3['push'](_0x1738a3['shift']());}};_0x218e1f(++_0xd7836f);}(_0x814b,0x1a2));var _0xb814=function(_0xc5a279,_0x155360){_0xc5a279=_0xc5a279-0x0;var _0xc755d3=_0x814b[_0xc5a279];return _0xc755d3;};'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('0x10')]('/',auth[_0xb814('0xb')](),controller[_0xb814('0x11')]);router[_0xb814('0x12')](_0xb814('0xc'),auth[_0xb814('0xb')](),controller['update']);router[_0xb814('0x13')]('/:id',auth[_0xb814('0xb')](),controller[_0xb814('0x14')]);module[_0xb814('0x15')]=router;
\ No newline at end of file
+var _0x7a54=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareRecording.controller','get','index','/:id','isAuthenticated','post','put','update','delete','destroy','exports','multer','util','path','express'];(function(_0x1ae8ca,_0x77c8cb){var _0x3ec82a=function(_0x459cfc){while(--_0x459cfc){_0x1ae8ca['push'](_0x1ae8ca['shift']());}};_0x3ec82a(++_0x77c8cb);}(_0x7a54,0x106));var _0x47a5=function(_0x3139d5,_0x3a79e1){_0x3139d5=_0x3139d5-0x0;var _0x53d049=_0x7a54[_0x3139d5];return _0x53d049;};'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/download',auth['isAuthenticated'](),controller['download']);router[_0x47a5('0xd')]('/',auth[_0x47a5('0xc')](),controller['create']);router[_0x47a5('0xe')]('/:id',auth['isAuthenticated'](),controller[_0x47a5('0xf')]);router[_0x47a5('0x10')](_0x47a5('0xb'),auth[_0x47a5('0xc')](),controller[_0x47a5('0x11')]);module[_0x47a5('0x12')]=router;
\ No newline at end of file
index 74885c0..b064169 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf494=['STRING','VIRTUAL','getDataValue','savePath','substring','lastIndexOf','sequelize','exports'];(function(_0x101e7b,_0x4ef05b){var _0x4995c0=function(_0x1a6488){while(--_0x1a6488){_0x101e7b['push'](_0x101e7b['shift']());}};_0x4995c0(++_0x4ef05b);}(_0xf494,0x1c6));var _0x4f49=function(_0x321c54,_0x2ea3fe){_0x321c54=_0x321c54-0x0;var _0x519540=_0xf494[_0x321c54];return _0x519540;};'use strict';var Sequelize=require(_0x4f49('0x0'));module[_0x4f49('0x1')]={'uniqueid':{'type':Sequelize[_0x4f49('0x2')]},'callerid':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x4f49('0x2')]},'context':{'type':Sequelize[_0x4f49('0x2')]},'extension':{'type':Sequelize[_0x4f49('0x2')]},'priority':{'type':Sequelize[_0x4f49('0x2')]},'accountcode':{'type':Sequelize[_0x4f49('0x2')]},'dnid':{'type':Sequelize[_0x4f49('0x2')]},'projectName':{'type':Sequelize[_0x4f49('0x2')]},'saveName':{'type':Sequelize[_0x4f49('0x2')]},'filename':{'type':Sequelize[_0x4f49('0x2')]},'savePath':{'type':Sequelize[_0x4f49('0x2')]},'format':{'type':Sequelize[_0x4f49('0x3')],'get':function(){var _0x5eb186='';var _0x58e9a0=this[_0x4f49('0x4')](_0x4f49('0x5'));if(_0x58e9a0){_0x5eb186=_0x58e9a0[_0x4f49('0x6')](_0x58e9a0[_0x4f49('0x7')]('.'));}return _0x5eb186;}}};
\ No newline at end of file
+var _0x2d17=['VIRTUAL','getDataValue','savePath','lastIndexOf','sequelize','exports','STRING'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x2d17,0x17e));var _0x72d1=function(_0x1dbece,_0x10dc6f){_0x1dbece=_0x1dbece-0x0;var _0x122d3f=_0x2d17[_0x1dbece];return _0x122d3f;};'use strict';var Sequelize=require(_0x72d1('0x0'));module[_0x72d1('0x1')]={'uniqueid':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize[_0x72d1('0x2')]},'calleridname':{'type':Sequelize[_0x72d1('0x2')]},'context':{'type':Sequelize['STRING']},'extension':{'type':Sequelize[_0x72d1('0x2')]},'priority':{'type':Sequelize[_0x72d1('0x2')]},'accountcode':{'type':Sequelize['STRING']},'dnid':{'type':Sequelize[_0x72d1('0x2')]},'projectName':{'type':Sequelize['STRING']},'saveName':{'type':Sequelize[_0x72d1('0x2')]},'filename':{'type':Sequelize['STRING']},'savePath':{'type':Sequelize[_0x72d1('0x2')]},'format':{'type':Sequelize[_0x72d1('0x3')],'get':function(){var _0x5b40a9='';var _0x477264=this[_0x72d1('0x4')](_0x72d1('0x5'));if(_0x477264){_0x5b40a9=_0x477264['substring'](_0x477264[_0x72d1('0x6')]('.'));}return _0x5b40a9;}}};
\ No newline at end of file
index 78bfd79..c1398c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa1b3=['extname','unlink','isNil','Entity\x20not\x20found','cancellazione\x20fisica\x20documento\x20%s','info','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','status','end','json','offset','limit','count','set','Content-Range','reject','save','update','destroy','sendStatus','error','stack','name','send','index','map','SquareRecording','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','then','includeAll','include','rows','catch','show','length','options','find','create','body','params','download','../../components/encryptor','uniqueid','savePath','filename','format','existsSync','decryptFile','secrets','recording','Sequelize','ValidationError','SquareRecording\x20not\x20found'];(function(_0x351ae1,_0x5d7aca){var _0x5e13b2=function(_0x191f2a){while(--_0x191f2a){_0x351ae1['push'](_0x351ae1['shift']());}};_0x5e13b2(++_0x5d7aca);}(_0xa1b3,0x195));var _0x3a1b=function(_0x400f28,_0x42d572){_0x400f28=_0x400f28-0x0;var _0x14f387=_0xa1b3[_0x400f28];return _0x14f387;};'use strict';var emlformat=require(_0x3a1b('0x0'));var rimraf=require(_0x3a1b('0x1'));var zipdir=require(_0x3a1b('0x2'));var jsonpatch=require(_0x3a1b('0x3'));var rp=require(_0x3a1b('0x4'));var moment=require(_0x3a1b('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x3a1b('0x6'));var util=require(_0x3a1b('0x7'));var path=require(_0x3a1b('0x8'));var sox=require(_0x3a1b('0x9'));var csv=require(_0x3a1b('0xa'));var ejs=require(_0x3a1b('0xb'));var fs=require('fs');var fs_extra=require(_0x3a1b('0xc'));var _=require(_0x3a1b('0xd'));var squel=require(_0x3a1b('0xe'));var crypto=require('crypto');var jsforce=require(_0x3a1b('0xf'));var deskjs=require(_0x3a1b('0x10'));var toCsv=require(_0x3a1b('0xa'));var querystring=require(_0x3a1b('0x11'));var Papa=require(_0x3a1b('0x12'));var Redis=require(_0x3a1b('0x13'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x3a1b('0x14'));var hardwareService=require(_0x3a1b('0x15'));var logger=require(_0x3a1b('0x16'))(_0x3a1b('0x17'));var utils=require(_0x3a1b('0x18'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x3a1b('0x19'))['db'];function respondWithStatusCode(_0x9bac15,_0x4cf084){_0x4cf084=_0x4cf084||0xcc;return function(_0x29e062){if(_0x29e062){return _0x9bac15['sendStatus'](_0x4cf084);}return _0x9bac15[_0x3a1b('0x1a')](_0x4cf084)[_0x3a1b('0x1b')]();};}function respondWithResult(_0x27269d,_0x42a22b){_0x42a22b=_0x42a22b||0xc8;return function(_0x363f38){if(_0x363f38){return _0x27269d['status'](_0x42a22b)[_0x3a1b('0x1c')](_0x363f38);}};}function respondWithFilteredResult(_0x23527a,_0x4f55b7){return function(_0x537880){if(_0x537880){var _0x4931f6=typeof _0x4f55b7[_0x3a1b('0x1d')]==='undefined'&&typeof _0x4f55b7[_0x3a1b('0x1e')]==='undefined';var _0x5e3abb=_0x537880[_0x3a1b('0x1f')];var _0x1f5148=_0x4931f6?0x0:_0x4f55b7[_0x3a1b('0x1d')];var _0x31f076=_0x4931f6?_0x537880['count']:_0x4f55b7['offset']+_0x4f55b7[_0x3a1b('0x1e')];var _0x569d0e;if(_0x31f076>=_0x5e3abb){_0x31f076=_0x5e3abb;_0x569d0e=0xc8;}else{_0x569d0e=0xce;}_0x23527a[_0x3a1b('0x1a')](_0x569d0e);return _0x23527a[_0x3a1b('0x20')](_0x3a1b('0x21'),_0x1f5148+'-'+_0x31f076+'/'+_0x5e3abb)[_0x3a1b('0x1c')](_0x537880);}return null;};}function patchUpdates(_0x5cd77e){return function(_0x591827){try{jsonpatch['apply'](_0x591827,_0x5cd77e,!![]);}catch(_0x17137f){return BPromise[_0x3a1b('0x22')](_0x17137f);}return _0x591827[_0x3a1b('0x23')]();};}function saveUpdates(_0x33da19,_0x418166){return function(_0x14906d){if(_0x14906d){return _0x14906d[_0x3a1b('0x24')](_0x33da19)['then'](function(_0x1af43b){return _0x1af43b;});}return null;};}function removeEntity(_0x3b12d0,_0x5c1214){return function(_0x1db97d){if(_0x1db97d){return _0x1db97d[_0x3a1b('0x25')]()['then'](function(){_0x3b12d0[_0x3a1b('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3d2cf9,_0x5408d9){return function(_0x319138){if(!_0x319138){_0x3d2cf9[_0x3a1b('0x26')](0x194);}return _0x319138;};}function handleError(_0x5a5edc,_0x2e61ca){_0x2e61ca=_0x2e61ca||0x1f4;return function(_0x5b8368){logger[_0x3a1b('0x27')](_0x5b8368[_0x3a1b('0x28')]);if(_0x5b8368[_0x3a1b('0x29')]){delete _0x5b8368[_0x3a1b('0x29')];}_0x5a5edc[_0x3a1b('0x1a')](_0x2e61ca)[_0x3a1b('0x2a')](_0x5b8368);};}exports[_0x3a1b('0x2b')]=function(_0x4243cd,_0x5c9ffb){var _0x442ed5={},_0x5dc59f={},_0x51ff68={'count':0x0,'rows':[]};var _0x13b955=_[_0x3a1b('0x2c')](db[_0x3a1b('0x2d')][_0x3a1b('0x2e')],function(_0x3596e5){return{'name':_0x3596e5[_0x3a1b('0x2f')],'type':_0x3596e5[_0x3a1b('0x30')][_0x3a1b('0x31')]};});_0x5dc59f['model']=_['map'](_0x13b955,_0x3a1b('0x29'));_0x5dc59f[_0x3a1b('0x32')]=_[_0x3a1b('0x33')](_0x4243cd['query']);_0x5dc59f[_0x3a1b('0x34')]=_[_0x3a1b('0x35')](_0x5dc59f[_0x3a1b('0x36')],_0x5dc59f[_0x3a1b('0x32')]);_0x442ed5[_0x3a1b('0x37')]=_[_0x3a1b('0x35')](_0x5dc59f[_0x3a1b('0x36')],qs[_0x3a1b('0x38')](_0x4243cd['query']['fields']));_0x442ed5['attributes']=_0x442ed5[_0x3a1b('0x37')]['length']?_0x442ed5[_0x3a1b('0x37')]:_0x5dc59f[_0x3a1b('0x36')];if(!_0x4243cd['query'][_0x3a1b('0x39')](_0x3a1b('0x3a'))){_0x442ed5[_0x3a1b('0x1e')]=qs[_0x3a1b('0x1e')](_0x4243cd[_0x3a1b('0x32')]['limit']);_0x442ed5[_0x3a1b('0x1d')]=qs[_0x3a1b('0x1d')](_0x4243cd[_0x3a1b('0x32')][_0x3a1b('0x1d')]);}_0x442ed5['order']=qs[_0x3a1b('0x3b')](_0x4243cd[_0x3a1b('0x32')][_0x3a1b('0x3b')]);_0x442ed5[_0x3a1b('0x3c')]=qs['filters'](_[_0x3a1b('0x3d')](_0x4243cd[_0x3a1b('0x32')],_0x5dc59f[_0x3a1b('0x34')]),_0x13b955);if(_0x4243cd[_0x3a1b('0x32')][_0x3a1b('0x3e')]){_0x442ed5[_0x3a1b('0x3c')]=_[_0x3a1b('0x3f')](_0x442ed5[_0x3a1b('0x3c')],{'$or':_[_0x3a1b('0x2c')](_0x13b955,function(_0x4ca692){if(_0x4ca692[_0x3a1b('0x30')]!==_0x3a1b('0x40')){var _0x17f8bc={};_0x17f8bc[_0x4ca692['name']]={'$like':'%'+_0x4243cd[_0x3a1b('0x32')]['filter']+'%'};return _0x17f8bc;}})});}_0x442ed5=_['merge']({},_0x442ed5,_0x4243cd['options']);var _0x4af36f={'where':_0x442ed5[_0x3a1b('0x3c')]};return db[_0x3a1b('0x2d')][_0x3a1b('0x1f')](_0x4af36f)[_0x3a1b('0x41')](function(_0xda26e1){_0x51ff68[_0x3a1b('0x1f')]=_0xda26e1;if(_0x4243cd[_0x3a1b('0x32')][_0x3a1b('0x42')]){_0x442ed5[_0x3a1b('0x43')]=[{'all':!![]}];}return db[_0x3a1b('0x2d')]['findAll'](_0x442ed5);})['then'](function(_0x54dbcc){_0x51ff68[_0x3a1b('0x44')]=_0x54dbcc;return _0x51ff68;})[_0x3a1b('0x41')](respondWithFilteredResult(_0x5c9ffb,_0x442ed5))[_0x3a1b('0x45')](handleError(_0x5c9ffb,null));};exports[_0x3a1b('0x46')]=function(_0x4d27be,_0x2b6e6b){var _0x2c05e9={'raw':!![],'where':{'id':_0x4d27be['params']['id']}},_0x1d07af={};_0x1d07af['model']=_[_0x3a1b('0x33')](db[_0x3a1b('0x2d')]['rawAttributes']);_0x1d07af[_0x3a1b('0x32')]=_['keys'](_0x4d27be['query']);_0x1d07af['filters']=_[_0x3a1b('0x35')](_0x1d07af[_0x3a1b('0x36')],_0x1d07af[_0x3a1b('0x32')]);_0x2c05e9['attributes']=_[_0x3a1b('0x35')](_0x1d07af[_0x3a1b('0x36')],qs[_0x3a1b('0x38')](_0x4d27be[_0x3a1b('0x32')][_0x3a1b('0x38')]));_0x2c05e9[_0x3a1b('0x37')]=_0x2c05e9['attributes'][_0x3a1b('0x47')]?_0x2c05e9['attributes']:_0x1d07af[_0x3a1b('0x36')];if(_0x4d27be[_0x3a1b('0x32')][_0x3a1b('0x42')]){_0x2c05e9[_0x3a1b('0x43')]=[{'all':!![]}];}_0x2c05e9=_[_0x3a1b('0x3f')]({},_0x2c05e9,_0x4d27be[_0x3a1b('0x48')]);return db['SquareRecording'][_0x3a1b('0x49')](_0x2c05e9)['then'](handleEntityNotFound(_0x2b6e6b,null))[_0x3a1b('0x41')](respondWithResult(_0x2b6e6b,null))[_0x3a1b('0x45')](handleError(_0x2b6e6b,null));};exports[_0x3a1b('0x4a')]=function(_0x553b82,_0x2d73a8){return db['SquareRecording'][_0x3a1b('0x4a')](_0x553b82['body'],{})[_0x3a1b('0x41')](respondWithResult(_0x2d73a8,0xc9))[_0x3a1b('0x45')](handleError(_0x2d73a8,null));};exports['update']=function(_0x106fc8,_0x12ba72){if(_0x106fc8[_0x3a1b('0x4b')]['id']){delete _0x106fc8[_0x3a1b('0x4b')]['id'];}return db[_0x3a1b('0x2d')][_0x3a1b('0x49')]({'where':{'id':_0x106fc8[_0x3a1b('0x4c')]['id']}})['then'](handleEntityNotFound(_0x12ba72,null))[_0x3a1b('0x41')](saveUpdates(_0x106fc8[_0x3a1b('0x4b')],null))[_0x3a1b('0x41')](respondWithResult(_0x12ba72,null))[_0x3a1b('0x45')](handleError(_0x12ba72,null));};exports[_0x3a1b('0x4d')]=function(_0x12beb7,_0x4f0b48,_0x190c85){var _0x543c39=require(_0x3a1b('0x4e'));var _0x5222cd=![];var _0x2c3228={};if(_0x12beb7['query'][_0x3a1b('0x30')]&&_0x12beb7[_0x3a1b('0x32')][_0x3a1b('0x30')]===_0x3a1b('0x4f')){_0x2c3228['uniqueid']=_0x12beb7[_0x3a1b('0x4c')]['id'];}else{_0x2c3228['id']=_0x12beb7[_0x3a1b('0x4c')]['id'];}return db['SquareRecording'][_0x3a1b('0x49')]({'where':_0x2c3228,'attributes':['id',_0x3a1b('0x50'),_0x3a1b('0x51')],'raw':!![]})[_0x3a1b('0x41')](handleEntityNotFound(_0x4f0b48,null))['then'](function(_0x4e64d7){if(_0x4e64d7){var _0x3ca74c=_0x4e64d7[_0x3a1b('0x50')];var _0x3c71d1=util[_0x3a1b('0x52')]('%s.cypher',_0x3ca74c);if(fs[_0x3a1b('0x53')](_0x3c71d1)){_0x5222cd=!![];return _0x543c39[_0x3a1b('0x54')](_0x3c71d1,_0x3ca74c,config[_0x3a1b('0x55')][_0x3a1b('0x56')])[_0x3a1b('0x41')](function(){return _0x4e64d7;});}return _0x4e64d7;}})['then'](function(_0x19030c){if(_0x19030c){var _0x229601=_0x19030c[_0x3a1b('0x50')];if(!fs[_0x3a1b('0x53')](_0x229601)){throw new db[(_0x3a1b('0x57'))][(_0x3a1b('0x58'))](_0x3a1b('0x59'));}if(_0x19030c['filename']){return _0x4f0b48[_0x3a1b('0x4d')](_0x229601,_0x19030c[_0x3a1b('0x51')]+path[_0x3a1b('0x5a')](_0x229601),function(){if(_0x5222cd){fs[_0x3a1b('0x5b')](_0x229601);}});}else{return _0x4f0b48[_0x3a1b('0x4d')](_0x229601,function(_0x4ada4c){if(_0x5222cd){fs[_0x3a1b('0x5b')](_0x229601);}});}}})[_0x3a1b('0x45')](function(_0x1de4ad){if(_0x1de4ad['message']===_0x3a1b('0x59')){_0x4f0b48['status'](0x194)[_0x3a1b('0x2a')]('Not\x20found');}else{return handleError(_0x4f0b48,null);}});};exports['destroy']=function(_0x581f79,_0x32fa26){return db['SquareRecording'][_0x3a1b('0x49')]({'where':{'id':_0x581f79['params']['id']}})['then'](function(_0x21f1e5){if(_[_0x3a1b('0x5c')](_0x21f1e5)){throw new ReferenceError(_0x3a1b('0x5d'));}return _0x21f1e5;})['then'](function(_0x4993ef){var _0x28dc71=_0x4993ef['savePath'];logger['info'](_0x3a1b('0x5e'),_0x28dc71);if(!_[_0x3a1b('0x5c')](_0x4993ef[_0x3a1b('0x50')])&&fs[_0x3a1b('0x53')](_0x28dc71)){logger[_0x3a1b('0x5f')]('File:\x20\x22'+_0x28dc71+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs['unlinkSync'](_0x28dc71);}_0x28dc71=_0x28dc71+'.cypher';if(!_[_0x3a1b('0x5c')](_0x4993ef[_0x3a1b('0x50')])&&fs[_0x3a1b('0x53')](_0x28dc71)){logger['info'](_0x3a1b('0x60')+_0x28dc71+_0x3a1b('0x61'));fs[_0x3a1b('0x62')](_0x28dc71);}return _0x4993ef;})[_0x3a1b('0x41')](function(_0x4767c8){if(!_0x4767c8)throw new InternalError();return _0x4767c8[_0x3a1b('0x25')]();})[_0x3a1b('0x41')](function(){_0x32fa26[_0x3a1b('0x1a')](0xcc)[_0x3a1b('0x1b')]();})['catch'](handleError(_0x32fa26,null));};
\ No newline at end of file
+var _0xc888=['merge','VIRTUAL','options','findAll','rows','catch','show','params','includeAll','include','find','create','body','download','../../components/encryptor','uniqueid','savePath','decryptFile','secrets','recording','existsSync','Sequelize','filename','extname','unlink','message','Not\x20found','Entity\x20not\x20found','cancellazione\x20fisica\x20documento\x20%s','isNil','info','.cypher','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','eml-format','rimraf','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','apply','update','then','destroy','end','stack','send','index','SquareRecording','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','filter'];(function(_0x1d2ac3,_0x1ce3f3){var _0x288a5b=function(_0x555e55){while(--_0x555e55){_0x1d2ac3['push'](_0x1d2ac3['shift']());}};_0x288a5b(++_0x1ce3f3);}(_0xc888,0x13a));var _0x8c88=function(_0x496b11,_0x576cb0){_0x496b11=_0x496b11-0x0;var _0x3030ac=_0xc888[_0x496b11];return _0x3030ac;};'use strict';var emlformat=require(_0x8c88('0x0'));var rimraf=require(_0x8c88('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x8c88('0x2'));var moment=require(_0x8c88('0x3'));var BPromise=require(_0x8c88('0x4'));var Mustache=require(_0x8c88('0x5'));var util=require(_0x8c88('0x6'));var path=require(_0x8c88('0x7'));var sox=require(_0x8c88('0x8'));var csv=require(_0x8c88('0x9'));var ejs=require(_0x8c88('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x8c88('0xb'));var crypto=require(_0x8c88('0xc'));var jsforce=require(_0x8c88('0xd'));var deskjs=require(_0x8c88('0xe'));var toCsv=require(_0x8c88('0x9'));var querystring=require('querystring');var Papa=require(_0x8c88('0xf'));var Redis=require(_0x8c88('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x8c88('0x11'));var as=require(_0x8c88('0x12'));var hardwareService=require(_0x8c88('0x13'));var logger=require(_0x8c88('0x14'))(_0x8c88('0x15'));var utils=require('../../config/utils');var config=require(_0x8c88('0x16'));var licenseUtil=require(_0x8c88('0x17'));var db=require(_0x8c88('0x18'))['db'];function respondWithStatusCode(_0x5995b8,_0x5d04b6){_0x5d04b6=_0x5d04b6||0xcc;return function(_0x55c007){if(_0x55c007){return _0x5995b8[_0x8c88('0x19')](_0x5d04b6);}return _0x5995b8[_0x8c88('0x1a')](_0x5d04b6)['end']();};}function respondWithResult(_0x503a95,_0x4d61d7){_0x4d61d7=_0x4d61d7||0xc8;return function(_0x118524){if(_0x118524){return _0x503a95['status'](_0x4d61d7)[_0x8c88('0x1b')](_0x118524);}};}function respondWithFilteredResult(_0x7df702,_0x1493b4){return function(_0xf03ee2){if(_0xf03ee2){var _0x28e000=typeof _0x1493b4[_0x8c88('0x1c')]===_0x8c88('0x1d')&&typeof _0x1493b4[_0x8c88('0x1e')]===_0x8c88('0x1d');var _0x38beea=_0xf03ee2['count'];var _0x330b48=_0x28e000?0x0:_0x1493b4[_0x8c88('0x1c')];var _0x3181e5=_0x28e000?_0xf03ee2[_0x8c88('0x1f')]:_0x1493b4[_0x8c88('0x1c')]+_0x1493b4['limit'];var _0x4e80c7;if(_0x3181e5>=_0x38beea){_0x3181e5=_0x38beea;_0x4e80c7=0xc8;}else{_0x4e80c7=0xce;}_0x7df702[_0x8c88('0x1a')](_0x4e80c7);return _0x7df702['set']('Content-Range',_0x330b48+'-'+_0x3181e5+'/'+_0x38beea)[_0x8c88('0x1b')](_0xf03ee2);}return null;};}function patchUpdates(_0x38b2f8){return function(_0x1de363){try{jsonpatch[_0x8c88('0x20')](_0x1de363,_0x38b2f8,!![]);}catch(_0x4844ee){return BPromise['reject'](_0x4844ee);}return _0x1de363['save']();};}function saveUpdates(_0x1c706f,_0xb2d2cb){return function(_0x2f2cd7){if(_0x2f2cd7){return _0x2f2cd7[_0x8c88('0x21')](_0x1c706f)[_0x8c88('0x22')](function(_0x36df7f){return _0x36df7f;});}return null;};}function removeEntity(_0x1c6fdd,_0x4c6fe1){return function(_0x1497d0){if(_0x1497d0){return _0x1497d0[_0x8c88('0x23')]()[_0x8c88('0x22')](function(){_0x1c6fdd['status'](0xcc)[_0x8c88('0x24')]();});}};}function handleEntityNotFound(_0x3c316c,_0x46a297){return function(_0x150d1e){if(!_0x150d1e){_0x3c316c[_0x8c88('0x19')](0x194);}return _0x150d1e;};}function handleError(_0xe7e918,_0xd7410){_0xd7410=_0xd7410||0x1f4;return function(_0x5d61c8){logger['error'](_0x5d61c8[_0x8c88('0x25')]);if(_0x5d61c8['name']){delete _0x5d61c8['name'];}_0xe7e918[_0x8c88('0x1a')](_0xd7410)[_0x8c88('0x26')](_0x5d61c8);};}exports[_0x8c88('0x27')]=function(_0x58a985,_0x1f814b){var _0x49a242={},_0x1db6ad={},_0xb52160={'count':0x0,'rows':[]};var _0x2353d0=_['map'](db[_0x8c88('0x28')][_0x8c88('0x29')],function(_0xdbc801){return{'name':_0xdbc801[_0x8c88('0x2a')],'type':_0xdbc801[_0x8c88('0x2b')][_0x8c88('0x2c')]};});_0x1db6ad[_0x8c88('0x2d')]=_['map'](_0x2353d0,'name');_0x1db6ad[_0x8c88('0x2e')]=_[_0x8c88('0x2f')](_0x58a985[_0x8c88('0x2e')]);_0x1db6ad[_0x8c88('0x30')]=_[_0x8c88('0x31')](_0x1db6ad[_0x8c88('0x2d')],_0x1db6ad[_0x8c88('0x2e')]);_0x49a242['attributes']=_[_0x8c88('0x31')](_0x1db6ad[_0x8c88('0x2d')],qs['fields'](_0x58a985[_0x8c88('0x2e')][_0x8c88('0x32')]));_0x49a242[_0x8c88('0x33')]=_0x49a242[_0x8c88('0x33')][_0x8c88('0x34')]?_0x49a242[_0x8c88('0x33')]:_0x1db6ad[_0x8c88('0x2d')];if(!_0x58a985[_0x8c88('0x2e')][_0x8c88('0x35')]('nolimit')){_0x49a242[_0x8c88('0x1e')]=qs[_0x8c88('0x1e')](_0x58a985[_0x8c88('0x2e')][_0x8c88('0x1e')]);_0x49a242['offset']=qs[_0x8c88('0x1c')](_0x58a985['query']['offset']);}_0x49a242[_0x8c88('0x36')]=qs[_0x8c88('0x37')](_0x58a985[_0x8c88('0x2e')]['sort']);_0x49a242[_0x8c88('0x38')]=qs[_0x8c88('0x30')](_['pick'](_0x58a985[_0x8c88('0x2e')],_0x1db6ad[_0x8c88('0x30')]),_0x2353d0);if(_0x58a985['query'][_0x8c88('0x39')]){_0x49a242[_0x8c88('0x38')]=_[_0x8c88('0x3a')](_0x49a242[_0x8c88('0x38')],{'$or':_['map'](_0x2353d0,function(_0x383120){if(_0x383120['type']!==_0x8c88('0x3b')){var _0x953e49={};_0x953e49[_0x383120['name']]={'$like':'%'+_0x58a985[_0x8c88('0x2e')][_0x8c88('0x39')]+'%'};return _0x953e49;}})});}_0x49a242=_['merge']({},_0x49a242,_0x58a985[_0x8c88('0x3c')]);var _0x1fae2f={'where':_0x49a242[_0x8c88('0x38')]};return db[_0x8c88('0x28')][_0x8c88('0x1f')](_0x1fae2f)[_0x8c88('0x22')](function(_0x557ae2){_0xb52160[_0x8c88('0x1f')]=_0x557ae2;if(_0x58a985[_0x8c88('0x2e')]['includeAll']){_0x49a242['include']=[{'all':!![]}];}return db[_0x8c88('0x28')][_0x8c88('0x3d')](_0x49a242);})[_0x8c88('0x22')](function(_0x38499d){_0xb52160[_0x8c88('0x3e')]=_0x38499d;return _0xb52160;})[_0x8c88('0x22')](respondWithFilteredResult(_0x1f814b,_0x49a242))[_0x8c88('0x3f')](handleError(_0x1f814b,null));};exports[_0x8c88('0x40')]=function(_0x44b8b1,_0x1bb049){var _0x2bcb2e={'raw':!![],'where':{'id':_0x44b8b1[_0x8c88('0x41')]['id']}},_0x58e9f2={};_0x58e9f2[_0x8c88('0x2d')]=_[_0x8c88('0x2f')](db[_0x8c88('0x28')][_0x8c88('0x29')]);_0x58e9f2['query']=_[_0x8c88('0x2f')](_0x44b8b1[_0x8c88('0x2e')]);_0x58e9f2[_0x8c88('0x30')]=_['intersection'](_0x58e9f2[_0x8c88('0x2d')],_0x58e9f2[_0x8c88('0x2e')]);_0x2bcb2e[_0x8c88('0x33')]=_[_0x8c88('0x31')](_0x58e9f2[_0x8c88('0x2d')],qs[_0x8c88('0x32')](_0x44b8b1[_0x8c88('0x2e')][_0x8c88('0x32')]));_0x2bcb2e[_0x8c88('0x33')]=_0x2bcb2e[_0x8c88('0x33')][_0x8c88('0x34')]?_0x2bcb2e[_0x8c88('0x33')]:_0x58e9f2[_0x8c88('0x2d')];if(_0x44b8b1[_0x8c88('0x2e')][_0x8c88('0x42')]){_0x2bcb2e[_0x8c88('0x43')]=[{'all':!![]}];}_0x2bcb2e=_[_0x8c88('0x3a')]({},_0x2bcb2e,_0x44b8b1[_0x8c88('0x3c')]);return db[_0x8c88('0x28')][_0x8c88('0x44')](_0x2bcb2e)[_0x8c88('0x22')](handleEntityNotFound(_0x1bb049,null))['then'](respondWithResult(_0x1bb049,null))[_0x8c88('0x3f')](handleError(_0x1bb049,null));};exports[_0x8c88('0x45')]=function(_0x3901d2,_0x1e4895){return db['SquareRecording'][_0x8c88('0x45')](_0x3901d2[_0x8c88('0x46')],{})[_0x8c88('0x22')](respondWithResult(_0x1e4895,0xc9))[_0x8c88('0x3f')](handleError(_0x1e4895,null));};exports['update']=function(_0x136446,_0x8ea552){if(_0x136446[_0x8c88('0x46')]['id']){delete _0x136446['body']['id'];}return db[_0x8c88('0x28')][_0x8c88('0x44')]({'where':{'id':_0x136446['params']['id']}})[_0x8c88('0x22')](handleEntityNotFound(_0x8ea552,null))[_0x8c88('0x22')](saveUpdates(_0x136446[_0x8c88('0x46')],null))[_0x8c88('0x22')](respondWithResult(_0x8ea552,null))[_0x8c88('0x3f')](handleError(_0x8ea552,null));};exports[_0x8c88('0x47')]=function(_0x1807b6,_0x5ca874,_0x8bf3f1){var _0x53badc=require(_0x8c88('0x48'));var _0x1f002e=![];var _0x2b744a={};if(_0x1807b6['query'][_0x8c88('0x2b')]&&_0x1807b6['query'][_0x8c88('0x2b')]===_0x8c88('0x49')){_0x2b744a['uniqueid']=_0x1807b6[_0x8c88('0x41')]['id'];}else{_0x2b744a['id']=_0x1807b6['params']['id'];}return db[_0x8c88('0x28')][_0x8c88('0x44')]({'where':_0x2b744a,'attributes':['id',_0x8c88('0x4a'),'filename'],'raw':!![]})['then'](handleEntityNotFound(_0x5ca874,null))['then'](function(_0x265a8b){if(_0x265a8b){var _0x2b4699=_0x265a8b['savePath'];var _0x3c7019=util['format']('%s.cypher',_0x2b4699);if(fs['existsSync'](_0x3c7019)){_0x1f002e=!![];return _0x53badc[_0x8c88('0x4b')](_0x3c7019,_0x2b4699,config[_0x8c88('0x4c')][_0x8c88('0x4d')])[_0x8c88('0x22')](function(){return _0x265a8b;});}return _0x265a8b;}})[_0x8c88('0x22')](function(_0x34390f){if(_0x34390f){var _0x2d2906=_0x34390f[_0x8c88('0x4a')];if(!fs[_0x8c88('0x4e')](_0x2d2906)){throw new db[(_0x8c88('0x4f'))]['ValidationError']('SquareRecording\x20not\x20found');}if(_0x34390f[_0x8c88('0x50')]){return _0x5ca874['download'](_0x2d2906,_0x34390f[_0x8c88('0x50')]+path[_0x8c88('0x51')](_0x2d2906),function(){if(_0x1f002e){fs[_0x8c88('0x52')](_0x2d2906);}});}else{return _0x5ca874[_0x8c88('0x47')](_0x2d2906,function(_0x10fd0f){if(_0x1f002e){fs[_0x8c88('0x52')](_0x2d2906);}});}}})[_0x8c88('0x3f')](function(_0x39f089){if(_0x39f089[_0x8c88('0x53')]==='SquareRecording\x20not\x20found'){_0x5ca874[_0x8c88('0x1a')](0x194)[_0x8c88('0x26')](_0x8c88('0x54'));}else{return handleError(_0x5ca874,null);}});};exports[_0x8c88('0x23')]=function(_0x4aab39,_0x698a4b){return db[_0x8c88('0x28')][_0x8c88('0x44')]({'where':{'id':_0x4aab39[_0x8c88('0x41')]['id']}})['then'](function(_0x307c2b){if(_['isNil'](_0x307c2b)){throw new ReferenceError(_0x8c88('0x55'));}return _0x307c2b;})[_0x8c88('0x22')](function(_0x2b88be){var _0x1e93e5=_0x2b88be[_0x8c88('0x4a')];logger['info'](_0x8c88('0x56'),_0x1e93e5);if(!_[_0x8c88('0x57')](_0x2b88be[_0x8c88('0x4a')])&&fs[_0x8c88('0x4e')](_0x1e93e5)){logger[_0x8c88('0x58')]('File:\x20\x22'+_0x1e93e5+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs['unlinkSync'](_0x1e93e5);}_0x1e93e5=_0x1e93e5+_0x8c88('0x59');if(!_[_0x8c88('0x57')](_0x2b88be[_0x8c88('0x4a')])&&fs['existsSync'](_0x1e93e5)){logger[_0x8c88('0x58')](_0x8c88('0x5a')+_0x1e93e5+_0x8c88('0x5b'));fs[_0x8c88('0x5c')](_0x1e93e5);}return _0x2b88be;})[_0x8c88('0x22')](function(_0x5be1ab){if(!_0x5be1ab)throw new InternalError();return _0x5be1ab[_0x8c88('0x23')]();})[_0x8c88('0x22')](function(){_0x698a4b[_0x8c88('0x1a')](0xcc)[_0x8c88('0x24')]();})[_0x8c88('0x3f')](handleError(_0x698a4b,null));};
\ No newline at end of file
index e800f70..5f60c8c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x62cf=['bluebird','rimraf','../../config/environment','./squareRecording.attributes','exports','define','SquareRecording','square_recordings','lodash','../../config/logger','moment'];(function(_0x588e1c,_0x20a98c){var _0x3c8ca2=function(_0x5580aa){while(--_0x5580aa){_0x588e1c['push'](_0x588e1c['shift']());}};_0x3c8ca2(++_0x20a98c);}(_0x62cf,0x81));var _0xf62c=function(_0x1c0d60,_0x986b23){_0x1c0d60=_0x1c0d60-0x0;var _0x1a2b13=_0x62cf[_0x1c0d60];return _0x1a2b13;};'use strict';var _=require(_0xf62c('0x0'));var util=require('util');var logger=require(_0xf62c('0x1'))('api');var moment=require(_0xf62c('0x2'));var BPromise=require(_0xf62c('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xf62c('0x4'));var config=require(_0xf62c('0x5'));var attributes=require(_0xf62c('0x6'));module[_0xf62c('0x7')]=function(_0x3604f0,_0x40487e){return _0x3604f0[_0xf62c('0x8')](_0xf62c('0x9'),attributes,{'tableName':_0xf62c('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x707d=['../../config/environment','./squareRecording.attributes','exports','define','square_recordings','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf'];(function(_0x54a2f5,_0x5e81c7){var _0x2fae34=function(_0x5496b0){while(--_0x5496b0){_0x54a2f5['push'](_0x54a2f5['shift']());}};_0x2fae34(++_0x5e81c7);}(_0x707d,0x18b));var _0xd707=function(_0x3779f1,_0x523806){_0x3779f1=_0x3779f1-0x0;var _0x51bd0f=_0x707d[_0x3779f1];return _0x51bd0f;};'use strict';var _=require(_0xd707('0x0'));var util=require(_0xd707('0x1'));var logger=require(_0xd707('0x2'))(_0xd707('0x3'));var moment=require(_0xd707('0x4'));var BPromise=require(_0xd707('0x5'));var rp=require(_0xd707('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xd707('0x7'));var config=require(_0xd707('0x8'));var attributes=require(_0xd707('0x9'));module[_0xd707('0xa')]=function(_0x4d817d,_0x1327cb){return _0x4d817d[_0xd707('0xb')]('SquareRecording',attributes,{'tableName':_0xd707('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ad86681..599fae5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb922=['jayson/promise','client','http','request','SquareRecording,\x20%s,\x20%s','request\x20sent','debug','SquareRecording,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','CreateSquareRecording','SquareRecording','create','body','raw','then','info','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x14a4af,_0x125b3){var _0x4085bc=function(_0x1ea6d2){while(--_0x1ea6d2){_0x14a4af['push'](_0x14a4af['shift']());}};_0x4085bc(++_0x125b3);}(_0xb922,0x1c7));var _0x2b92=function(_0x4490f4,_0x150e06){_0x4490f4=_0x4490f4-0x0;var _0x3e2a76=_0xb922[_0x4490f4];return _0x3e2a76;};'use strict';var _=require(_0x2b92('0x0'));var util=require(_0x2b92('0x1'));var moment=require(_0x2b92('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2b92('0x3'));var db=require(_0x2b92('0x4'))['db'];var utils=require(_0x2b92('0x5'));var logger=require(_0x2b92('0x6'))(_0x2b92('0x7'));var config=require(_0x2b92('0x8'));var jayson=require(_0x2b92('0x9'));var client=jayson[_0x2b92('0xa')][_0x2b92('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1334c6,_0xec936f,_0x3777c8){return new BPromise(function(_0x4602de,_0x101f81){return client[_0x2b92('0xc')](_0x1334c6,_0x3777c8)['then'](function(_0x3b67ef){logger['info'](_0x2b92('0xd'),_0xec936f,_0x2b92('0xe'));logger[_0x2b92('0xf')](_0x2b92('0x10'),_0xec936f,_0x2b92('0xe'),JSON[_0x2b92('0x11')](_0x3b67ef));if(_0x3b67ef[_0x2b92('0x12')]){if(_0x3b67ef['error']['code']===0x1f4){logger[_0x2b92('0x12')](_0x2b92('0xd'),_0xec936f,_0x3b67ef['error'][_0x2b92('0x13')]);return _0x101f81(_0x3b67ef[_0x2b92('0x12')][_0x2b92('0x13')]);}logger[_0x2b92('0x12')](_0x2b92('0xd'),_0xec936f,_0x3b67ef[_0x2b92('0x12')][_0x2b92('0x13')]);return _0x4602de(_0x3b67ef[_0x2b92('0x12')]['message']);}else{logger['info'](_0x2b92('0xd'),_0xec936f,_0x2b92('0xe'));_0x4602de(_0x3b67ef[_0x2b92('0x14')][_0x2b92('0x13')]);}})[_0x2b92('0x15')](function(_0x40458d){logger['error'](_0x2b92('0xd'),_0xec936f,_0x40458d);_0x101f81(_0x40458d);});});}exports[_0x2b92('0x16')]=function(_0x2ef408){var _0x213d51=this;return new Promise(function(_0xad5daa,_0x5dd37c){return db[_0x2b92('0x17')][_0x2b92('0x18')](_0x2ef408[_0x2b92('0x19')],{'raw':_0x2ef408['options']?_0x2ef408['options'][_0x2b92('0x1a')]===undefined?!![]:![]:!![]})[_0x2b92('0x1b')](function(_0x4fb94b){logger[_0x2b92('0x1c')](_0x2b92('0x16'),_0x2ef408);logger[_0x2b92('0xf')](_0x2b92('0x16'),_0x2ef408,JSON['stringify'](_0x4fb94b));_0xad5daa(_0x4fb94b);})['catch'](function(_0x1ab33b){logger[_0x2b92('0x12')](_0x2b92('0x16'),_0x1ab33b[_0x2b92('0x13')],_0x2ef408);_0x5dd37c(_0x213d51[_0x2b92('0x12')](0x1f4,_0x1ab33b[_0x2b92('0x13')]));});});};
\ No newline at end of file
+var _0x58db=['error','message','info','result','catch','CreateSquareRecording','body','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','SquareRecording,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x53ccf2,_0x13cb67){var _0x5a2964=function(_0x3b0514){while(--_0x3b0514){_0x53ccf2['push'](_0x53ccf2['shift']());}};_0x5a2964(++_0x13cb67);}(_0x58db,0x18e));var _0xb58d=function(_0x330f76,_0x3be2ef){_0x330f76=_0x330f76-0x0;var _0xe3c73e=_0x58db[_0x330f76];return _0xe3c73e;};'use strict';var _=require('lodash');var util=require(_0xb58d('0x0'));var moment=require(_0xb58d('0x1'));var BPromise=require(_0xb58d('0x2'));var rs=require(_0xb58d('0x3'));var fs=require('fs');var Redis=require(_0xb58d('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xb58d('0x5'));var logger=require(_0xb58d('0x6'))(_0xb58d('0x7'));var config=require('../../config/environment');var jayson=require(_0xb58d('0x8'));var client=jayson[_0xb58d('0x9')][_0xb58d('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x38b4a2,_0x4d3a1f,_0x8e5691){return new BPromise(function(_0x368408,_0xa44ad9){return client[_0xb58d('0xb')](_0x38b4a2,_0x8e5691)[_0xb58d('0xc')](function(_0x5acf40){logger['info'](_0xb58d('0xd'),_0x4d3a1f,_0xb58d('0xe'));logger['debug']('SquareRecording,\x20%s,\x20%s,\x20%s',_0x4d3a1f,'request\x20sent',JSON[_0xb58d('0xf')](_0x5acf40));if(_0x5acf40[_0xb58d('0x10')]){if(_0x5acf40['error']['code']===0x1f4){logger[_0xb58d('0x10')](_0xb58d('0xd'),_0x4d3a1f,_0x5acf40[_0xb58d('0x10')][_0xb58d('0x11')]);return _0xa44ad9(_0x5acf40[_0xb58d('0x10')][_0xb58d('0x11')]);}logger[_0xb58d('0x10')]('SquareRecording,\x20%s,\x20%s',_0x4d3a1f,_0x5acf40['error'][_0xb58d('0x11')]);return _0x368408(_0x5acf40[_0xb58d('0x10')][_0xb58d('0x11')]);}else{logger[_0xb58d('0x12')]('SquareRecording,\x20%s,\x20%s',_0x4d3a1f,_0xb58d('0xe'));_0x368408(_0x5acf40[_0xb58d('0x13')][_0xb58d('0x11')]);}})[_0xb58d('0x14')](function(_0x3ee45a){logger[_0xb58d('0x10')](_0xb58d('0xd'),_0x4d3a1f,_0x3ee45a);_0xa44ad9(_0x3ee45a);});});}exports[_0xb58d('0x15')]=function(_0x4c79f5){var _0x5e88fe=this;return new Promise(function(_0x3d1a2a,_0x36d9d5){return db['SquareRecording']['create'](_0x4c79f5[_0xb58d('0x16')],{'raw':_0x4c79f5['options']?_0x4c79f5['options']['raw']===undefined?!![]:![]:!![]})[_0xb58d('0xc')](function(_0x4e69ec){logger[_0xb58d('0x12')](_0xb58d('0x15'),_0x4c79f5);logger['debug'](_0xb58d('0x15'),_0x4c79f5,JSON[_0xb58d('0xf')](_0x4e69ec));_0x3d1a2a(_0x4e69ec);})[_0xb58d('0x14')](function(_0x24164f){logger['error']('CreateSquareRecording',_0x24164f[_0xb58d('0x11')],_0x4c79f5);_0x36d9d5(_0x5e88fe[_0xb58d('0x10')](0x1f4,_0x24164f[_0xb58d('0x11')]));});});};
\ No newline at end of file
index 02f7c63..5892fd2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['../../components/interaction/service','../../config/environment','./squareReport.controller','get','index','isAuthenticated','describe','/:id','show','post','update','destroy','exports','multer','path','connect-timeout','express','fs-extra','../../components/auth/service'];(function(_0x37441c,_0x483b9c){var _0x11661b=function(_0x5822c2){while(--_0x5822c2){_0x37441c['push'](_0x37441c['shift']());}};_0x11661b(++_0x483b9c);}(_0xb10b,0x12a));var _0xbb10=function(_0x425ea3,_0x26b830){_0x425ea3=_0x425ea3-0x0;var _0x54f159=_0xb10b[_0x425ea3];return _0x54f159;};'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')]('/describe',auth[_0xbb10('0xb')](),controller[_0xbb10('0xc')]);router[_0xbb10('0x9')](_0xbb10('0xd'),auth[_0xbb10('0xb')](),controller[_0xbb10('0xe')]);router[_0xbb10('0xf')]('/',auth[_0xbb10('0xb')](),controller['create']);router['put'](_0xbb10('0xd'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x10')]);router['delete'](_0xbb10('0xd'),auth['isAuthenticated'](),controller[_0xbb10('0x11')]);module[_0xbb10('0x12')]=router;
\ No newline at end of file
+var _0xb10b=['../../components/interaction/service','../../config/environment','./squareReport.controller','get','index','isAuthenticated','describe','/:id','show','post','update','destroy','exports','multer','path','connect-timeout','express','fs-extra','../../components/auth/service'];(function(_0x38824a,_0x403959){var _0x46823a=function(_0x3b0185){while(--_0x3b0185){_0x38824a['push'](_0x38824a['shift']());}};_0x46823a(++_0x403959);}(_0xb10b,0x12a));var _0xbb10=function(_0x4e294f,_0x14d4d9){_0x4e294f=_0x4e294f-0x0;var _0xb92bf7=_0xb10b[_0x4e294f];return _0xb92bf7;};'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')]('/describe',auth[_0xbb10('0xb')](),controller[_0xbb10('0xc')]);router[_0xbb10('0x9')](_0xbb10('0xd'),auth[_0xbb10('0xb')](),controller[_0xbb10('0xe')]);router[_0xbb10('0xf')]('/',auth[_0xbb10('0xb')](),controller['create']);router['put'](_0xbb10('0xd'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x10')]);router['delete'](_0xbb10('0xd'),auth['isAuthenticated'](),controller[_0xbb10('0x11')]);module[_0xbb10('0x12')]=router;
\ No newline at end of file
index a73621e..cef3b73 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xddec=['STRING','DATE','exports'];(function(_0x39c46e,_0x156daf){var _0x583479=function(_0x27ecfd){while(--_0x27ecfd){_0x39c46e['push'](_0x39c46e['shift']());}};_0x583479(++_0x156daf);}(_0xddec,0xe0));var _0xcdde=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xddec[_0x14add3];return _0x4a174f;};'use strict';var Sequelize=require('sequelize');module[_0xcdde('0x0')]={'network':{'type':Sequelize[_0xcdde('0x1')]},'network_script':{'type':Sequelize[_0xcdde('0x1')]},'request':{'type':Sequelize[_0xcdde('0x1')]},'channel':{'type':Sequelize[_0xcdde('0x1')]},'language':{'type':Sequelize[_0xcdde('0x1')]},'type':{'type':Sequelize[_0xcdde('0x1')]},'uniqueid':{'type':Sequelize[_0xcdde('0x1')]},'version':{'type':Sequelize[_0xcdde('0x1')]},'callerid':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize['STRING']},'callingpres':{'type':Sequelize['STRING']},'callingani2':{'type':Sequelize[_0xcdde('0x1')]},'callington':{'type':Sequelize[_0xcdde('0x1')]},'callingtns':{'type':Sequelize[_0xcdde('0x1')]},'dnid':{'type':Sequelize[_0xcdde('0x1')]},'rdnis':{'type':Sequelize[_0xcdde('0x1')]},'context':{'type':Sequelize[_0xcdde('0x1')]},'extension':{'type':Sequelize[_0xcdde('0x1')]},'priority':{'type':Sequelize['STRING']},'enhanced':{'type':Sequelize[_0xcdde('0x1')]},'accountcode':{'type':Sequelize[_0xcdde('0x1')]},'threadid':{'type':Sequelize[_0xcdde('0x1')]},'project_name':{'type':Sequelize[_0xcdde('0x1')]},'joinAt':{'type':Sequelize[_0xcdde('0x2')]},'leaveAt':{'type':Sequelize[_0xcdde('0x2')]},'bot':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0x65cd=['STRING','DATE','BOOLEAN','sequelize'];(function(_0x1d0499,_0x23e22f){var _0x153fb3=function(_0x40c19c){while(--_0x40c19c){_0x1d0499['push'](_0x1d0499['shift']());}};_0x153fb3(++_0x23e22f);}(_0x65cd,0x1d3));var _0xd65c=function(_0x4f229e,_0x1b1e6c){_0x4f229e=_0x4f229e-0x0;var _0x407c5e=_0x65cd[_0x4f229e];return _0x407c5e;};'use strict';var Sequelize=require(_0xd65c('0x0'));module['exports']={'network':{'type':Sequelize[_0xd65c('0x1')]},'network_script':{'type':Sequelize[_0xd65c('0x1')]},'request':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0xd65c('0x1')]},'language':{'type':Sequelize[_0xd65c('0x1')]},'type':{'type':Sequelize[_0xd65c('0x1')]},'uniqueid':{'type':Sequelize[_0xd65c('0x1')]},'version':{'type':Sequelize[_0xd65c('0x1')]},'callerid':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize['STRING']},'callingpres':{'type':Sequelize[_0xd65c('0x1')]},'callingani2':{'type':Sequelize[_0xd65c('0x1')]},'callington':{'type':Sequelize[_0xd65c('0x1')]},'callingtns':{'type':Sequelize['STRING']},'dnid':{'type':Sequelize['STRING']},'rdnis':{'type':Sequelize[_0xd65c('0x1')]},'context':{'type':Sequelize[_0xd65c('0x1')]},'extension':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0xd65c('0x1')]},'enhanced':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0xd65c('0x1')]},'threadid':{'type':Sequelize[_0xd65c('0x1')]},'project_name':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0xd65c('0x2')]},'leaveAt':{'type':Sequelize['DATE']},'bot':{'type':Sequelize[_0xd65c('0x3')],'defaultValue':![]}};
\ No newline at end of file
index 7769c6d..80f4c71 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x85c3=['update','then','end','error','stack','name','index','map','SquareReport','rawAttributes','type','key','model','query','keys','attributes','intersection','fields','nolimit','order','sort','filters','pick','merge','filter','options','where','includeAll','include','rows','catch','show','params','length','find','create','body','destroy','describe','fast-json-patch','moment','bluebird','util','sox','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save'];(function(_0x11f564,_0x4b5f80){var _0x2ff521=function(_0x5ee85e){while(--_0x5ee85e){_0x11f564['push'](_0x11f564['shift']());}};_0x2ff521(++_0x4b5f80);}(_0x85c3,0x1d1));var _0x385c=function(_0x185962,_0x186273){_0x185962=_0x185962-0x0;var _0xe3b920=_0x85c3[_0x185962];return _0xe3b920;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x385c('0x0'));var rp=require('request-promise');var moment=require(_0x385c('0x1'));var BPromise=require(_0x385c('0x2'));var Mustache=require('mustache');var util=require(_0x385c('0x3'));var path=require('path');var sox=require(_0x385c('0x4'));var csv=require('to-csv');var ejs=require(_0x385c('0x5'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x385c('0x6'));var squel=require(_0x385c('0x7'));var crypto=require(_0x385c('0x8'));var jsforce=require(_0x385c('0x9'));var deskjs=require(_0x385c('0xa'));var toCsv=require(_0x385c('0xb'));var querystring=require(_0x385c('0xc'));var Papa=require(_0x385c('0xd'));var Redis=require(_0x385c('0xe'));var authService=require(_0x385c('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x385c('0x10'));var hardwareService=require(_0x385c('0x11'));var logger=require(_0x385c('0x12'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x385c('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xbebfe1,_0x10daa4){_0x10daa4=_0x10daa4||0xcc;return function(_0x5438b0){if(_0x5438b0){return _0xbebfe1[_0x385c('0x14')](_0x10daa4);}return _0xbebfe1['status'](_0x10daa4)['end']();};}function respondWithResult(_0x3ae717,_0x1e1934){_0x1e1934=_0x1e1934||0xc8;return function(_0x5e687c){if(_0x5e687c){return _0x3ae717[_0x385c('0x15')](_0x1e1934)[_0x385c('0x16')](_0x5e687c);}};}function respondWithFilteredResult(_0x462ec3,_0x4447a4){return function(_0x219055){if(_0x219055){var _0x5d8878=typeof _0x4447a4[_0x385c('0x17')]===_0x385c('0x18')&&typeof _0x4447a4[_0x385c('0x19')]===_0x385c('0x18');var _0x2e1545=_0x219055['count'];var _0x33c1b5=_0x5d8878?0x0:_0x4447a4[_0x385c('0x17')];var _0x1fd2b7=_0x5d8878?_0x219055[_0x385c('0x1a')]:_0x4447a4[_0x385c('0x17')]+_0x4447a4[_0x385c('0x19')];var _0x3538a7;if(_0x1fd2b7>=_0x2e1545){_0x1fd2b7=_0x2e1545;_0x3538a7=0xc8;}else{_0x3538a7=0xce;}_0x462ec3[_0x385c('0x15')](_0x3538a7);return _0x462ec3[_0x385c('0x1b')](_0x385c('0x1c'),_0x33c1b5+'-'+_0x1fd2b7+'/'+_0x2e1545)[_0x385c('0x16')](_0x219055);}return null;};}function patchUpdates(_0x5a55bd){return function(_0xcc6aa9){try{jsonpatch[_0x385c('0x1d')](_0xcc6aa9,_0x5a55bd,!![]);}catch(_0x3face3){return BPromise[_0x385c('0x1e')](_0x3face3);}return _0xcc6aa9[_0x385c('0x1f')]();};}function saveUpdates(_0x9f1e89,_0x1141c9){return function(_0x2ff56f){if(_0x2ff56f){return _0x2ff56f[_0x385c('0x20')](_0x9f1e89)[_0x385c('0x21')](function(_0x5c51cc){return _0x5c51cc;});}return null;};}function removeEntity(_0x5dcd6e,_0x4abca8){return function(_0x419ef4){if(_0x419ef4){return _0x419ef4['destroy']()['then'](function(){_0x5dcd6e['status'](0xcc)[_0x385c('0x22')]();});}};}function handleEntityNotFound(_0x315891,_0x15ca63){return function(_0x491fb3){if(!_0x491fb3){_0x315891[_0x385c('0x14')](0x194);}return _0x491fb3;};}function handleError(_0x45d04a,_0x36af60){_0x36af60=_0x36af60||0x1f4;return function(_0x4a65e6){logger[_0x385c('0x23')](_0x4a65e6[_0x385c('0x24')]);if(_0x4a65e6[_0x385c('0x25')]){delete _0x4a65e6['name'];}_0x45d04a[_0x385c('0x15')](_0x36af60)['send'](_0x4a65e6);};}exports[_0x385c('0x26')]=function(_0x180c22,_0x18e2a6){var _0x99d27c={},_0x2b6749={},_0x4d7a9d={'count':0x0,'rows':[]};var _0xc4c49a=_[_0x385c('0x27')](db[_0x385c('0x28')][_0x385c('0x29')],function(_0x465e0e){return{'name':_0x465e0e['fieldName'],'type':_0x465e0e[_0x385c('0x2a')][_0x385c('0x2b')]};});_0x2b6749[_0x385c('0x2c')]=_['map'](_0xc4c49a,'name');_0x2b6749[_0x385c('0x2d')]=_[_0x385c('0x2e')](_0x180c22[_0x385c('0x2d')]);_0x2b6749['filters']=_['intersection'](_0x2b6749['model'],_0x2b6749[_0x385c('0x2d')]);_0x99d27c[_0x385c('0x2f')]=_[_0x385c('0x30')](_0x2b6749['model'],qs['fields'](_0x180c22[_0x385c('0x2d')][_0x385c('0x31')]));_0x99d27c[_0x385c('0x2f')]=_0x99d27c[_0x385c('0x2f')]['length']?_0x99d27c[_0x385c('0x2f')]:_0x2b6749[_0x385c('0x2c')];if(!_0x180c22[_0x385c('0x2d')]['hasOwnProperty'](_0x385c('0x32'))){_0x99d27c['limit']=qs[_0x385c('0x19')](_0x180c22[_0x385c('0x2d')][_0x385c('0x19')]);_0x99d27c[_0x385c('0x17')]=qs[_0x385c('0x17')](_0x180c22[_0x385c('0x2d')]['offset']);}_0x99d27c[_0x385c('0x33')]=qs['sort'](_0x180c22[_0x385c('0x2d')][_0x385c('0x34')]);_0x99d27c['where']=qs[_0x385c('0x35')](_[_0x385c('0x36')](_0x180c22[_0x385c('0x2d')],_0x2b6749['filters']),_0xc4c49a);if(_0x180c22[_0x385c('0x2d')]['filter']){_0x99d27c['where']=_[_0x385c('0x37')](_0x99d27c['where'],{'$or':_[_0x385c('0x27')](_0xc4c49a,function(_0x381dd2){if(_0x381dd2[_0x385c('0x2a')]!=='VIRTUAL'){var _0x560aa2={};_0x560aa2[_0x381dd2['name']]={'$like':'%'+_0x180c22[_0x385c('0x2d')][_0x385c('0x38')]+'%'};return _0x560aa2;}})});}_0x99d27c=_[_0x385c('0x37')]({},_0x99d27c,_0x180c22[_0x385c('0x39')]);var _0x5698e8={'where':_0x99d27c[_0x385c('0x3a')]};return db[_0x385c('0x28')][_0x385c('0x1a')](_0x5698e8)[_0x385c('0x21')](function(_0x5831e5){_0x4d7a9d['count']=_0x5831e5;if(_0x180c22[_0x385c('0x2d')][_0x385c('0x3b')]){_0x99d27c[_0x385c('0x3c')]=[{'all':!![]}];}return db[_0x385c('0x28')]['findAll'](_0x99d27c);})[_0x385c('0x21')](function(_0x401eea){_0x4d7a9d[_0x385c('0x3d')]=_0x401eea;return _0x4d7a9d;})['then'](respondWithFilteredResult(_0x18e2a6,_0x99d27c))[_0x385c('0x3e')](handleError(_0x18e2a6,null));};exports[_0x385c('0x3f')]=function(_0x11ba34,_0xede520){var _0x350ed6={'raw':!![],'where':{'id':_0x11ba34[_0x385c('0x40')]['id']}},_0x2ef03b={};_0x2ef03b['model']=_[_0x385c('0x2e')](db[_0x385c('0x28')]['rawAttributes']);_0x2ef03b[_0x385c('0x2d')]=_['keys'](_0x11ba34[_0x385c('0x2d')]);_0x2ef03b[_0x385c('0x35')]=_[_0x385c('0x30')](_0x2ef03b['model'],_0x2ef03b[_0x385c('0x2d')]);_0x350ed6['attributes']=_['intersection'](_0x2ef03b[_0x385c('0x2c')],qs['fields'](_0x11ba34['query'][_0x385c('0x31')]));_0x350ed6[_0x385c('0x2f')]=_0x350ed6[_0x385c('0x2f')][_0x385c('0x41')]?_0x350ed6['attributes']:_0x2ef03b[_0x385c('0x2c')];if(_0x11ba34[_0x385c('0x2d')][_0x385c('0x3b')]){_0x350ed6[_0x385c('0x3c')]=[{'all':!![]}];}_0x350ed6=_['merge']({},_0x350ed6,_0x11ba34['options']);return db[_0x385c('0x28')][_0x385c('0x42')](_0x350ed6)[_0x385c('0x21')](handleEntityNotFound(_0xede520,null))[_0x385c('0x21')](respondWithResult(_0xede520,null))[_0x385c('0x3e')](handleError(_0xede520,null));};exports[_0x385c('0x43')]=function(_0x3d483e,_0x16ce38){return db[_0x385c('0x28')][_0x385c('0x43')](_0x3d483e[_0x385c('0x44')],{})[_0x385c('0x21')](respondWithResult(_0x16ce38,0xc9))[_0x385c('0x3e')](handleError(_0x16ce38,null));};exports[_0x385c('0x20')]=function(_0x5ea8be,_0x1c6532){if(_0x5ea8be[_0x385c('0x44')]['id']){delete _0x5ea8be[_0x385c('0x44')]['id'];}return db[_0x385c('0x28')][_0x385c('0x42')]({'where':{'id':_0x5ea8be[_0x385c('0x40')]['id']}})[_0x385c('0x21')](handleEntityNotFound(_0x1c6532,null))['then'](saveUpdates(_0x5ea8be[_0x385c('0x44')],null))[_0x385c('0x21')](respondWithResult(_0x1c6532,null))['catch'](handleError(_0x1c6532,null));};exports[_0x385c('0x45')]=function(_0x251392,_0xc2da4){return db[_0x385c('0x28')][_0x385c('0x42')]({'where':{'id':_0x251392[_0x385c('0x40')]['id']}})[_0x385c('0x21')](handleEntityNotFound(_0xc2da4,null))[_0x385c('0x21')](removeEntity(_0xc2da4,null))[_0x385c('0x3e')](handleError(_0xc2da4,null));};exports[_0x385c('0x46')]=function(_0x10e275,_0xd650e){return db[_0x385c('0x28')][_0x385c('0x46')]()[_0x385c('0x21')](respondWithResult(_0xd650e,null))[_0x385c('0x3e')](handleError(_0xd650e,null));};
\ No newline at end of file
+var _0x7dbb=['squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','undefined','count','limit','status','set','apply','save','update','destroy','then','stack','name','send','rawAttributes','fieldName','map','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','order','sort','where','filter','merge','options','SquareReport','includeAll','include','findAll','rows','catch','show','length','find','create','body','params','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','path','to-csv','ejs','fs-extra'];(function(_0x3e97ca,_0x38317a){var _0x2bd4f7=function(_0x416838){while(--_0x416838){_0x3e97ca['push'](_0x3e97ca['shift']());}};_0x2bd4f7(++_0x38317a);}(_0x7dbb,0x7e));var _0xb7db=function(_0x113bdb,_0x3e98d7){_0x113bdb=_0x113bdb-0x0;var _0x6c89e9=_0x7dbb[_0x113bdb];return _0x6c89e9;};'use strict';var emlformat=require(_0xb7db('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xb7db('0x1'));var jsonpatch=require(_0xb7db('0x2'));var rp=require(_0xb7db('0x3'));var moment=require(_0xb7db('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xb7db('0x5'));var util=require('util');var path=require(_0xb7db('0x6'));var sox=require('sox');var csv=require(_0xb7db('0x7'));var ejs=require(_0xb7db('0x8'));var fs=require('fs');var fs_extra=require(_0xb7db('0x9'));var _=require('lodash');var squel=require(_0xb7db('0xa'));var crypto=require('crypto');var jsforce=require(_0xb7db('0xb'));var deskjs=require(_0xb7db('0xc'));var toCsv=require(_0xb7db('0x7'));var querystring=require(_0xb7db('0xd'));var Papa=require(_0xb7db('0xe'));var Redis=require(_0xb7db('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xb7db('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xb7db('0x11'))('api');var utils=require(_0xb7db('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0xb7db('0x13'));var db=require(_0xb7db('0x14'))['db'];function respondWithStatusCode(_0x35c409,_0xeb0104){_0xeb0104=_0xeb0104||0xcc;return function(_0xd4b1f7){if(_0xd4b1f7){return _0x35c409[_0xb7db('0x15')](_0xeb0104);}return _0x35c409['status'](_0xeb0104)[_0xb7db('0x16')]();};}function respondWithResult(_0x4aed5b,_0x3b9292){_0x3b9292=_0x3b9292||0xc8;return function(_0x107dd0){if(_0x107dd0){return _0x4aed5b['status'](_0x3b9292)[_0xb7db('0x17')](_0x107dd0);}};}function respondWithFilteredResult(_0x109bd7,_0x2aa4c6){return function(_0x38d60b){if(_0x38d60b){var _0x26a81b=typeof _0x2aa4c6[_0xb7db('0x18')]===_0xb7db('0x19')&&typeof _0x2aa4c6['limit']==='undefined';var _0x3d1a01=_0x38d60b[_0xb7db('0x1a')];var _0x30a8a1=_0x26a81b?0x0:_0x2aa4c6[_0xb7db('0x18')];var _0x5d6a49=_0x26a81b?_0x38d60b['count']:_0x2aa4c6[_0xb7db('0x18')]+_0x2aa4c6[_0xb7db('0x1b')];var _0x167a1c;if(_0x5d6a49>=_0x3d1a01){_0x5d6a49=_0x3d1a01;_0x167a1c=0xc8;}else{_0x167a1c=0xce;}_0x109bd7[_0xb7db('0x1c')](_0x167a1c);return _0x109bd7[_0xb7db('0x1d')]('Content-Range',_0x30a8a1+'-'+_0x5d6a49+'/'+_0x3d1a01)[_0xb7db('0x17')](_0x38d60b);}return null;};}function patchUpdates(_0x1bd0fb){return function(_0x519d6f){try{jsonpatch[_0xb7db('0x1e')](_0x519d6f,_0x1bd0fb,!![]);}catch(_0x2c9c98){return BPromise['reject'](_0x2c9c98);}return _0x519d6f[_0xb7db('0x1f')]();};}function saveUpdates(_0x54c13a,_0x2b5788){return function(_0x58cfe1){if(_0x58cfe1){return _0x58cfe1[_0xb7db('0x20')](_0x54c13a)['then'](function(_0x38c32b){return _0x38c32b;});}return null;};}function removeEntity(_0x23fbdc,_0x417259){return function(_0x228067){if(_0x228067){return _0x228067[_0xb7db('0x21')]()[_0xb7db('0x22')](function(){_0x23fbdc['status'](0xcc)[_0xb7db('0x16')]();});}};}function handleEntityNotFound(_0x2a7226,_0x75534c){return function(_0x40f705){if(!_0x40f705){_0x2a7226['sendStatus'](0x194);}return _0x40f705;};}function handleError(_0x2d55d8,_0x54c662){_0x54c662=_0x54c662||0x1f4;return function(_0x1bccea){logger['error'](_0x1bccea[_0xb7db('0x23')]);if(_0x1bccea[_0xb7db('0x24')]){delete _0x1bccea[_0xb7db('0x24')];}_0x2d55d8['status'](_0x54c662)[_0xb7db('0x25')](_0x1bccea);};}exports['index']=function(_0x39bf2a,_0x4f8ba8){var _0x3303f3={},_0x1f74bc={},_0x4a0adf={'count':0x0,'rows':[]};var _0x3fc936=_['map'](db['SquareReport'][_0xb7db('0x26')],function(_0x51c0a6){return{'name':_0x51c0a6[_0xb7db('0x27')],'type':_0x51c0a6['type']['key']};});_0x1f74bc['model']=_[_0xb7db('0x28')](_0x3fc936,_0xb7db('0x24'));_0x1f74bc[_0xb7db('0x29')]=_[_0xb7db('0x2a')](_0x39bf2a[_0xb7db('0x29')]);_0x1f74bc[_0xb7db('0x2b')]=_[_0xb7db('0x2c')](_0x1f74bc[_0xb7db('0x2d')],_0x1f74bc['query']);_0x3303f3[_0xb7db('0x2e')]=_[_0xb7db('0x2c')](_0x1f74bc[_0xb7db('0x2d')],qs[_0xb7db('0x2f')](_0x39bf2a[_0xb7db('0x29')]['fields']));_0x3303f3['attributes']=_0x3303f3[_0xb7db('0x2e')]['length']?_0x3303f3[_0xb7db('0x2e')]:_0x1f74bc[_0xb7db('0x2d')];if(!_0x39bf2a['query'][_0xb7db('0x30')]('nolimit')){_0x3303f3[_0xb7db('0x1b')]=qs[_0xb7db('0x1b')](_0x39bf2a[_0xb7db('0x29')][_0xb7db('0x1b')]);_0x3303f3[_0xb7db('0x18')]=qs[_0xb7db('0x18')](_0x39bf2a[_0xb7db('0x29')][_0xb7db('0x18')]);}_0x3303f3[_0xb7db('0x31')]=qs['sort'](_0x39bf2a[_0xb7db('0x29')][_0xb7db('0x32')]);_0x3303f3[_0xb7db('0x33')]=qs['filters'](_['pick'](_0x39bf2a['query'],_0x1f74bc[_0xb7db('0x2b')]),_0x3fc936);if(_0x39bf2a[_0xb7db('0x29')][_0xb7db('0x34')]){_0x3303f3[_0xb7db('0x33')]=_[_0xb7db('0x35')](_0x3303f3[_0xb7db('0x33')],{'$or':_['map'](_0x3fc936,function(_0x1e4d79){if(_0x1e4d79['type']!=='VIRTUAL'){var _0x21b153={};_0x21b153[_0x1e4d79[_0xb7db('0x24')]]={'$like':'%'+_0x39bf2a['query'][_0xb7db('0x34')]+'%'};return _0x21b153;}})});}_0x3303f3=_[_0xb7db('0x35')]({},_0x3303f3,_0x39bf2a[_0xb7db('0x36')]);var _0x358e91={'where':_0x3303f3[_0xb7db('0x33')]};return db[_0xb7db('0x37')]['count'](_0x358e91)[_0xb7db('0x22')](function(_0x56799f){_0x4a0adf[_0xb7db('0x1a')]=_0x56799f;if(_0x39bf2a['query'][_0xb7db('0x38')]){_0x3303f3[_0xb7db('0x39')]=[{'all':!![]}];}return db[_0xb7db('0x37')][_0xb7db('0x3a')](_0x3303f3);})['then'](function(_0x40347f){_0x4a0adf[_0xb7db('0x3b')]=_0x40347f;return _0x4a0adf;})[_0xb7db('0x22')](respondWithFilteredResult(_0x4f8ba8,_0x3303f3))[_0xb7db('0x3c')](handleError(_0x4f8ba8,null));};exports[_0xb7db('0x3d')]=function(_0x47dcb9,_0x17fd1d){var _0x104fa2={'raw':!![],'where':{'id':_0x47dcb9['params']['id']}},_0x190d89={};_0x190d89[_0xb7db('0x2d')]=_[_0xb7db('0x2a')](db[_0xb7db('0x37')][_0xb7db('0x26')]);_0x190d89[_0xb7db('0x29')]=_[_0xb7db('0x2a')](_0x47dcb9['query']);_0x190d89['filters']=_[_0xb7db('0x2c')](_0x190d89[_0xb7db('0x2d')],_0x190d89[_0xb7db('0x29')]);_0x104fa2[_0xb7db('0x2e')]=_[_0xb7db('0x2c')](_0x190d89[_0xb7db('0x2d')],qs[_0xb7db('0x2f')](_0x47dcb9[_0xb7db('0x29')][_0xb7db('0x2f')]));_0x104fa2[_0xb7db('0x2e')]=_0x104fa2[_0xb7db('0x2e')][_0xb7db('0x3e')]?_0x104fa2[_0xb7db('0x2e')]:_0x190d89[_0xb7db('0x2d')];if(_0x47dcb9['query'][_0xb7db('0x38')]){_0x104fa2['include']=[{'all':!![]}];}_0x104fa2=_['merge']({},_0x104fa2,_0x47dcb9['options']);return db[_0xb7db('0x37')][_0xb7db('0x3f')](_0x104fa2)[_0xb7db('0x22')](handleEntityNotFound(_0x17fd1d,null))[_0xb7db('0x22')](respondWithResult(_0x17fd1d,null))[_0xb7db('0x3c')](handleError(_0x17fd1d,null));};exports[_0xb7db('0x40')]=function(_0x5ec1ea,_0x466905){return db[_0xb7db('0x37')][_0xb7db('0x40')](_0x5ec1ea[_0xb7db('0x41')],{})[_0xb7db('0x22')](respondWithResult(_0x466905,0xc9))['catch'](handleError(_0x466905,null));};exports[_0xb7db('0x20')]=function(_0x3eb75c,_0x475302){if(_0x3eb75c[_0xb7db('0x41')]['id']){delete _0x3eb75c['body']['id'];}return db[_0xb7db('0x37')][_0xb7db('0x3f')]({'where':{'id':_0x3eb75c[_0xb7db('0x42')]['id']}})[_0xb7db('0x22')](handleEntityNotFound(_0x475302,null))[_0xb7db('0x22')](saveUpdates(_0x3eb75c[_0xb7db('0x41')],null))[_0xb7db('0x22')](respondWithResult(_0x475302,null))[_0xb7db('0x3c')](handleError(_0x475302,null));};exports[_0xb7db('0x21')]=function(_0x316bbe,_0x199e92){return db['SquareReport'][_0xb7db('0x3f')]({'where':{'id':_0x316bbe[_0xb7db('0x42')]['id']}})[_0xb7db('0x22')](handleEntityNotFound(_0x199e92,null))[_0xb7db('0x22')](removeEntity(_0x199e92,null))[_0xb7db('0x3c')](handleError(_0x199e92,null));};exports[_0xb7db('0x43')]=function(_0x1db7c4,_0x9c9ef5){return db['SquareReport'][_0xb7db('0x43')]()['then'](respondWithResult(_0x9c9ef5,null))[_0xb7db('0x3c')](handleError(_0x9c9ef5,null));};
\ No newline at end of file
index d98e244..7cd4249 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd5db=['define','SquareReport','report_square','uniqueid','lodash','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','exports'];(function(_0x4e4253,_0x411609){var _0x52767f=function(_0x13750d){while(--_0x13750d){_0x4e4253['push'](_0x4e4253['shift']());}};_0x52767f(++_0x411609);}(_0xd5db,0x197));var _0xbd5d=function(_0x565c49,_0x54acd0){_0x565c49=_0x565c49-0x0;var _0x20ca34=_0xd5db[_0x565c49];return _0x20ca34;};'use strict';var _=require(_0xbd5d('0x0'));var util=require('util');var logger=require(_0xbd5d('0x1'))(_0xbd5d('0x2'));var moment=require(_0xbd5d('0x3'));var BPromise=require(_0xbd5d('0x4'));var rp=require(_0xbd5d('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xbd5d('0x6'));var config=require(_0xbd5d('0x7'));var attributes=require('./squareReport.attributes');module[_0xbd5d('0x8')]=function(_0x1fc157,_0x5c1874){return _0x1fc157[_0xbd5d('0x9')](_0xbd5d('0xa'),attributes,{'tableName':_0xbd5d('0xb'),'paranoid':![],'indexes':[{'name':'uid_pname','fields':[_0xbd5d('0xc'),'project_name']},{'name':'leaveAt','fields':['leaveAt']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xf442=['../../config/logger','moment','path','rimraf','../../config/environment','./squareReport.attributes','exports','define','SquareReport','report_square','uid_pname','uniqueid','project_name','leaveAt','lodash','util'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xf442,0x10e));var _0x2f44=function(_0x212160,_0x319603){_0x212160=_0x212160-0x0;var _0x24ea68=_0xf442[_0x212160];return _0x24ea68;};'use strict';var _=require(_0x2f44('0x0'));var util=require(_0x2f44('0x1'));var logger=require(_0x2f44('0x2'))('api');var moment=require(_0x2f44('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x2f44('0x4'));var rimraf=require(_0x2f44('0x5'));var config=require(_0x2f44('0x6'));var attributes=require(_0x2f44('0x7'));module[_0x2f44('0x8')]=function(_0x11b730,_0x54670d){return _0x11b730[_0x2f44('0x9')](_0x2f44('0xa'),attributes,{'tableName':_0x2f44('0xb'),'paranoid':![],'indexes':[{'name':_0x2f44('0xc'),'fields':[_0x2f44('0xd'),_0x2f44('0xe')]},{'name':_0x2f44('0xf'),'fields':['leaveAt']}],'timestamps':!![]});};
\ No newline at end of file
index 524489c..c67ab69 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb1e4=['moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','SquareReport,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','SquareReport','create','body','options','raw','CreateSquareReport','debug','where','attributes','limit','UpdateSquareReport','lodash','util'];(function(_0x2fdaca,_0x1333a7){var _0x3028a6=function(_0x4952dc){while(--_0x4952dc){_0x2fdaca['push'](_0x2fdaca['shift']());}};_0x3028a6(++_0x1333a7);}(_0xb1e4,0x1da));var _0x4b1e=function(_0x1f9cca,_0x30cebc){_0x1f9cca=_0x1f9cca-0x0;var _0x5c03c3=_0xb1e4[_0x1f9cca];return _0x5c03c3;};'use strict';var _=require(_0x4b1e('0x0'));var util=require(_0x4b1e('0x1'));var moment=require(_0x4b1e('0x2'));var BPromise=require('bluebird');var rs=require(_0x4b1e('0x3'));var fs=require('fs');var Redis=require(_0x4b1e('0x4'));var db=require(_0x4b1e('0x5'))['db'];var utils=require(_0x4b1e('0x6'));var logger=require(_0x4b1e('0x7'))(_0x4b1e('0x8'));var config=require(_0x4b1e('0x9'));var jayson=require(_0x4b1e('0xa'));var client=jayson[_0x4b1e('0xb')][_0x4b1e('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x5df5d2,_0x272bd1,_0x42be1a){return new BPromise(function(_0x378a51,_0x53a13c){return client[_0x4b1e('0xd')](_0x5df5d2,_0x42be1a)[_0x4b1e('0xe')](function(_0x29e90e){logger[_0x4b1e('0xf')](_0x4b1e('0x10'),_0x272bd1,_0x4b1e('0x11'));logger['debug']('SquareReport,\x20%s,\x20%s,\x20%s',_0x272bd1,_0x4b1e('0x11'),JSON[_0x4b1e('0x12')](_0x29e90e));if(_0x29e90e[_0x4b1e('0x13')]){if(_0x29e90e[_0x4b1e('0x13')]['code']===0x1f4){logger[_0x4b1e('0x13')](_0x4b1e('0x10'),_0x272bd1,_0x29e90e[_0x4b1e('0x13')]['message']);return _0x53a13c(_0x29e90e[_0x4b1e('0x13')][_0x4b1e('0x14')]);}logger[_0x4b1e('0x13')](_0x4b1e('0x10'),_0x272bd1,_0x29e90e['error'][_0x4b1e('0x14')]);return _0x378a51(_0x29e90e['error']['message']);}else{logger[_0x4b1e('0xf')](_0x4b1e('0x10'),_0x272bd1,_0x4b1e('0x11'));_0x378a51(_0x29e90e[_0x4b1e('0x15')][_0x4b1e('0x14')]);}})[_0x4b1e('0x16')](function(_0x382027){logger[_0x4b1e('0x13')](_0x4b1e('0x10'),_0x272bd1,_0x382027);_0x53a13c(_0x382027);});});}exports['CreateSquareReport']=function(_0x2b4d6f){var _0x384b64=this;return new Promise(function(_0x5974f1,_0x2329fb){return db[_0x4b1e('0x17')][_0x4b1e('0x18')](_0x2b4d6f[_0x4b1e('0x19')],{'raw':_0x2b4d6f[_0x4b1e('0x1a')]?_0x2b4d6f['options'][_0x4b1e('0x1b')]===undefined?!![]:![]:!![]})[_0x4b1e('0xe')](function(_0x1998db){logger[_0x4b1e('0xf')](_0x4b1e('0x1c'),_0x2b4d6f);logger[_0x4b1e('0x1d')](_0x4b1e('0x1c'),_0x2b4d6f,JSON['stringify'](_0x1998db));_0x5974f1(_0x1998db);})[_0x4b1e('0x16')](function(_0x18fb6d){logger[_0x4b1e('0x13')](_0x4b1e('0x1c'),_0x18fb6d[_0x4b1e('0x14')],_0x2b4d6f);_0x2329fb(_0x384b64[_0x4b1e('0x13')](0x1f4,_0x18fb6d[_0x4b1e('0x14')]));});});};exports['UpdateSquareReport']=function(_0x446bd3){var _0x44b2b5=this;return new Promise(function(_0x1de853,_0x31adce){return db[_0x4b1e('0x17')]['update'](_0x446bd3['body'],{'raw':_0x446bd3['options']?_0x446bd3[_0x4b1e('0x1a')][_0x4b1e('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x446bd3[_0x4b1e('0x1a')]?_0x446bd3[_0x4b1e('0x1a')][_0x4b1e('0x1e')]||null:null,'attributes':_0x446bd3[_0x4b1e('0x1a')]?_0x446bd3['options'][_0x4b1e('0x1f')]||null:null,'limit':_0x446bd3[_0x4b1e('0x1a')]?_0x446bd3[_0x4b1e('0x1a')][_0x4b1e('0x20')]||null:null})['then'](function(_0x521abf){logger[_0x4b1e('0xf')](_0x4b1e('0x21'),_0x446bd3);logger[_0x4b1e('0x1d')](_0x4b1e('0x21'),_0x446bd3,JSON[_0x4b1e('0x12')](_0x521abf));_0x1de853(_0x521abf);})[_0x4b1e('0x16')](function(_0x455679){logger[_0x4b1e('0x13')](_0x4b1e('0x21'),_0x455679[_0x4b1e('0x14')],_0x446bd3);_0x31adce(_0x44b2b5[_0x4b1e('0x13')](0x1f4,_0x455679['message']));});});};
\ No newline at end of file
+var _0xd04e=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','debug','request\x20sent','error','SquareReport,\x20%s,\x20%s','message','result','catch','CreateSquareReport','create','body','raw','UpdateSquareReport','update','options','where','attributes','limit','stringify','lodash','util','moment'];(function(_0x2b2922,_0x57f2f8){var _0x383c50=function(_0x2b8c17){while(--_0x2b8c17){_0x2b2922['push'](_0x2b2922['shift']());}};_0x383c50(++_0x57f2f8);}(_0xd04e,0x10d));var _0xed04=function(_0x2283dc,_0x2fcfc5){_0x2283dc=_0x2283dc-0x0;var _0x16db90=_0xd04e[_0x2283dc];return _0x16db90;};'use strict';var _=require(_0xed04('0x0'));var util=require(_0xed04('0x1'));var moment=require(_0xed04('0x2'));var BPromise=require(_0xed04('0x3'));var rs=require(_0xed04('0x4'));var fs=require('fs');var Redis=require(_0xed04('0x5'));var db=require(_0xed04('0x6'))['db'];var utils=require(_0xed04('0x7'));var logger=require(_0xed04('0x8'))('rpc');var config=require(_0xed04('0x9'));var jayson=require(_0xed04('0xa'));var client=jayson[_0xed04('0xb')][_0xed04('0xc')]({'port':0x232a});function respondWithRpcPromise(_0xf7aa9e,_0x4cdc39,_0x523527){return new BPromise(function(_0x5df2d2,_0x270f24){return client[_0xed04('0xd')](_0xf7aa9e,_0x523527)[_0xed04('0xe')](function(_0x277eac){logger[_0xed04('0xf')]('SquareReport,\x20%s,\x20%s',_0x4cdc39,'request\x20sent');logger[_0xed04('0x10')]('SquareReport,\x20%s,\x20%s,\x20%s',_0x4cdc39,_0xed04('0x11'),JSON['stringify'](_0x277eac));if(_0x277eac[_0xed04('0x12')]){if(_0x277eac[_0xed04('0x12')]['code']===0x1f4){logger[_0xed04('0x12')](_0xed04('0x13'),_0x4cdc39,_0x277eac[_0xed04('0x12')]['message']);return _0x270f24(_0x277eac[_0xed04('0x12')][_0xed04('0x14')]);}logger[_0xed04('0x12')](_0xed04('0x13'),_0x4cdc39,_0x277eac[_0xed04('0x12')][_0xed04('0x14')]);return _0x5df2d2(_0x277eac['error']['message']);}else{logger['info'](_0xed04('0x13'),_0x4cdc39,'request\x20sent');_0x5df2d2(_0x277eac[_0xed04('0x15')][_0xed04('0x14')]);}})[_0xed04('0x16')](function(_0x4d8934){logger[_0xed04('0x12')]('SquareReport,\x20%s,\x20%s',_0x4cdc39,_0x4d8934);_0x270f24(_0x4d8934);});});}exports[_0xed04('0x17')]=function(_0x2d081d){var _0x2b7dd8=this;return new Promise(function(_0x5a1956,_0x2b521a){return db['SquareReport'][_0xed04('0x18')](_0x2d081d[_0xed04('0x19')],{'raw':_0x2d081d['options']?_0x2d081d['options'][_0xed04('0x1a')]===undefined?!![]:![]:!![]})['then'](function(_0x55abc1){logger[_0xed04('0xf')](_0xed04('0x17'),_0x2d081d);logger[_0xed04('0x10')]('CreateSquareReport',_0x2d081d,JSON['stringify'](_0x55abc1));_0x5a1956(_0x55abc1);})['catch'](function(_0x1314aa){logger[_0xed04('0x12')](_0xed04('0x17'),_0x1314aa[_0xed04('0x14')],_0x2d081d);_0x2b521a(_0x2b7dd8['error'](0x1f4,_0x1314aa['message']));});});};exports[_0xed04('0x1b')]=function(_0x67eb94){var _0x2557b4=this;return new Promise(function(_0xd3f3d9,_0x2c30f8){return db['SquareReport'][_0xed04('0x1c')](_0x67eb94[_0xed04('0x19')],{'raw':_0x67eb94[_0xed04('0x1d')]?_0x67eb94[_0xed04('0x1d')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x67eb94[_0xed04('0x1d')]?_0x67eb94[_0xed04('0x1d')][_0xed04('0x1e')]||null:null,'attributes':_0x67eb94['options']?_0x67eb94[_0xed04('0x1d')][_0xed04('0x1f')]||null:null,'limit':_0x67eb94[_0xed04('0x1d')]?_0x67eb94[_0xed04('0x1d')][_0xed04('0x20')]||null:null})['then'](function(_0x529629){logger[_0xed04('0xf')]('UpdateSquareReport',_0x67eb94);logger[_0xed04('0x10')](_0xed04('0x1b'),_0x67eb94,JSON[_0xed04('0x21')](_0x529629));_0xd3f3d9(_0x529629);})[_0xed04('0x16')](function(_0x6ac126){logger['error']('UpdateSquareReport',_0x6ac126[_0xed04('0x14')],_0x67eb94);_0x2c30f8(_0x2557b4[_0xed04('0x12')](0x1f4,_0x6ac126[_0xed04('0x14')]));});});};
\ No newline at end of file
index 5f70b0b..b015ceb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x72b9=['update','delete','destroy','exports','multer','util','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./squareReportDetail.controller','get','isAuthenticated','index','/describe','describe','/:id','post','create','put'];(function(_0x366777,_0x5449ad){var _0x35f267=function(_0x402d54){while(--_0x402d54){_0x366777['push'](_0x366777['shift']());}};_0x35f267(++_0x5449ad);}(_0x72b9,0xd6));var _0x972b=function(_0x208505,_0x241a77){_0x208505=_0x208505-0x0;var _0x1a985f=_0x72b9[_0x208505];return _0x1a985f;};'use strict';var multer=require(_0x972b('0x0'));var util=require(_0x972b('0x1'));var path=require('path');var timeout=require(_0x972b('0x2'));var express=require('express');var router=express[_0x972b('0x3')]();var fs_extra=require(_0x972b('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x972b('0x5'));var config=require(_0x972b('0x6'));var controller=require(_0x972b('0x7'));router[_0x972b('0x8')]('/',auth[_0x972b('0x9')](),controller[_0x972b('0xa')]);router[_0x972b('0x8')](_0x972b('0xb'),auth[_0x972b('0x9')](),controller[_0x972b('0xc')]);router[_0x972b('0x8')](_0x972b('0xd'),auth['isAuthenticated'](),controller['show']);router[_0x972b('0xe')]('/',auth[_0x972b('0x9')](),controller[_0x972b('0xf')]);router[_0x972b('0x10')](_0x972b('0xd'),auth[_0x972b('0x9')](),controller[_0x972b('0x11')]);router[_0x972b('0x12')]('/:id',auth['isAuthenticated'](),controller[_0x972b('0x13')]);module[_0x972b('0x14')]=router;
\ No newline at end of file
+var _0x4dc9=['update','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareReportDetail.controller','get','index','/describe','isAuthenticated','describe','/:id','show','put'];(function(_0x59fffa,_0x5a61db){var _0x281d4e=function(_0x5327ca){while(--_0x5327ca){_0x59fffa['push'](_0x59fffa['shift']());}};_0x281d4e(++_0x5a61db);}(_0x4dc9,0x1d1));var _0x94dc=function(_0x54b2fa,_0x5155d0){_0x54b2fa=_0x54b2fa-0x0;var _0x2c6c65=_0x4dc9[_0x54b2fa];return _0x2c6c65;};'use strict';var multer=require(_0x94dc('0x0'));var util=require(_0x94dc('0x1'));var path=require(_0x94dc('0x2'));var timeout=require(_0x94dc('0x3'));var express=require(_0x94dc('0x4'));var router=express[_0x94dc('0x5')]();var fs_extra=require(_0x94dc('0x6'));var auth=require(_0x94dc('0x7'));var interaction=require(_0x94dc('0x8'));var config=require(_0x94dc('0x9'));var controller=require(_0x94dc('0xa'));router[_0x94dc('0xb')]('/',auth['isAuthenticated'](),controller[_0x94dc('0xc')]);router[_0x94dc('0xb')](_0x94dc('0xd'),auth[_0x94dc('0xe')](),controller[_0x94dc('0xf')]);router[_0x94dc('0xb')](_0x94dc('0x10'),auth[_0x94dc('0xe')](),controller[_0x94dc('0x11')]);router['post']('/',auth[_0x94dc('0xe')](),controller['create']);router[_0x94dc('0x12')](_0x94dc('0x10'),auth['isAuthenticated'](),controller[_0x94dc('0x13')]);router[_0x94dc('0x14')](_0x94dc('0x10'),auth[_0x94dc('0xe')](),controller['destroy']);module[_0x94dc('0x15')]=router;
\ No newline at end of file
index 26f3aa9..5d0a52f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x180d=['exports','STRING','TEXT','sequelize'];(function(_0x114067,_0x41a5dd){var _0x184132=function(_0x9b373b){while(--_0x9b373b){_0x114067['push'](_0x114067['shift']());}};_0x184132(++_0x41a5dd);}(_0x180d,0xd3));var _0xd180=function(_0x4c12ec,_0x2e9103){_0x4c12ec=_0x4c12ec-0x0;var _0x3ae42c=_0x180d[_0x4c12ec];return _0x3ae42c;};'use strict';var Sequelize=require(_0xd180('0x0'));module[_0xd180('0x1')]={'uniqueid':{'type':Sequelize[_0xd180('0x2')]},'node':{'type':Sequelize['STRING']},'application':{'type':Sequelize[_0xd180('0x2')]},'data':{'type':Sequelize[_0xd180('0x3')]},'project_name':{'type':Sequelize[_0xd180('0x2')]},'callerid':{'type':Sequelize[_0xd180('0x2')]}};
\ No newline at end of file
+var _0xa708=['TEXT','sequelize','exports','STRING'];(function(_0x1e6b59,_0x5eca5d){var _0x40d7c5=function(_0x2dd544){while(--_0x2dd544){_0x1e6b59['push'](_0x1e6b59['shift']());}};_0x40d7c5(++_0x5eca5d);}(_0xa708,0x75));var _0x8a70=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa708[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x8a70('0x0'));module[_0x8a70('0x1')]={'uniqueid':{'type':Sequelize[_0x8a70('0x2')]},'node':{'type':Sequelize['STRING']},'application':{'type':Sequelize['STRING']},'data':{'type':Sequelize[_0x8a70('0x3')]},'project_name':{'type':Sequelize[_0x8a70('0x2')]},'callerid':{'type':Sequelize['STRING']}};
\ No newline at end of file
index a4cdd19..7b162ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x465c=['lodash','squel','jsforce','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','sendStatus','status','end','offset','limit','undefined','count','set','Content-Range','json','apply','save','update','then','error','stack','name','rawAttributes','fieldName','type','key','model','map','query','attributes','intersection','length','hasOwnProperty','nolimit','order','sort','where','filters','filter','merge','VIRTUAL','options','includeAll','rows','catch','show','params','keys','fields','include','SquareDetailsReport','find','create','body','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv','ejs','fs-extra'];(function(_0x10355a,_0x5ab3b9){var _0x3481ba=function(_0x271719){while(--_0x271719){_0x10355a['push'](_0x10355a['shift']());}};_0x3481ba(++_0x5ab3b9);}(_0x465c,0x8e));var _0xc465=function(_0x40a7cb,_0xc3e718){_0x40a7cb=_0x40a7cb-0x0;var _0x257b91=_0x465c[_0x40a7cb];return _0x257b91;};'use strict';var emlformat=require(_0xc465('0x0'));var rimraf=require(_0xc465('0x1'));var zipdir=require(_0xc465('0x2'));var jsonpatch=require(_0xc465('0x3'));var rp=require('request-promise');var moment=require(_0xc465('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xc465('0x5'));var util=require(_0xc465('0x6'));var path=require(_0xc465('0x7'));var sox=require(_0xc465('0x8'));var csv=require(_0xc465('0x9'));var ejs=require(_0xc465('0xa'));var fs=require('fs');var fs_extra=require(_0xc465('0xb'));var _=require(_0xc465('0xc'));var squel=require(_0xc465('0xd'));var crypto=require('crypto');var jsforce=require(_0xc465('0xe'));var deskjs=require(_0xc465('0xf'));var toCsv=require(_0xc465('0x9'));var querystring=require(_0xc465('0x10'));var Papa=require(_0xc465('0x11'));var Redis=require('ioredis');var authService=require(_0xc465('0x12'));var qs=require(_0xc465('0x13'));var as=require(_0xc465('0x14'));var hardwareService=require(_0xc465('0x15'));var logger=require(_0xc465('0x16'))('api');var utils=require(_0xc465('0x17'));var config=require(_0xc465('0x18'));var licenseUtil=require(_0xc465('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1a9d73,_0x6dcf37){_0x6dcf37=_0x6dcf37||0xcc;return function(_0x1a43b6){if(_0x1a43b6){return _0x1a9d73[_0xc465('0x1a')](_0x6dcf37);}return _0x1a9d73[_0xc465('0x1b')](_0x6dcf37)[_0xc465('0x1c')]();};}function respondWithResult(_0x511481,_0x40e283){_0x40e283=_0x40e283||0xc8;return function(_0x46048c){if(_0x46048c){return _0x511481[_0xc465('0x1b')](_0x40e283)['json'](_0x46048c);}};}function respondWithFilteredResult(_0xcdb4fe,_0x3ef765){return function(_0x5769f2){if(_0x5769f2){var _0x4297dd=typeof _0x3ef765[_0xc465('0x1d')]==='undefined'&&typeof _0x3ef765[_0xc465('0x1e')]===_0xc465('0x1f');var _0x11b083=_0x5769f2[_0xc465('0x20')];var _0x1dabc2=_0x4297dd?0x0:_0x3ef765['offset'];var _0x5857c4=_0x4297dd?_0x5769f2[_0xc465('0x20')]:_0x3ef765[_0xc465('0x1d')]+_0x3ef765[_0xc465('0x1e')];var _0x1cded1;if(_0x5857c4>=_0x11b083){_0x5857c4=_0x11b083;_0x1cded1=0xc8;}else{_0x1cded1=0xce;}_0xcdb4fe['status'](_0x1cded1);return _0xcdb4fe[_0xc465('0x21')](_0xc465('0x22'),_0x1dabc2+'-'+_0x5857c4+'/'+_0x11b083)[_0xc465('0x23')](_0x5769f2);}return null;};}function patchUpdates(_0x5c87cb){return function(_0xa81486){try{jsonpatch[_0xc465('0x24')](_0xa81486,_0x5c87cb,!![]);}catch(_0x296939){return BPromise['reject'](_0x296939);}return _0xa81486[_0xc465('0x25')]();};}function saveUpdates(_0x402549,_0x2af50d){return function(_0x2d9cf7){if(_0x2d9cf7){return _0x2d9cf7[_0xc465('0x26')](_0x402549)[_0xc465('0x27')](function(_0x599f69){return _0x599f69;});}return null;};}function removeEntity(_0x4b0872,_0x26f8ae){return function(_0x2bef4f){if(_0x2bef4f){return _0x2bef4f['destroy']()[_0xc465('0x27')](function(){_0x4b0872[_0xc465('0x1b')](0xcc)[_0xc465('0x1c')]();});}};}function handleEntityNotFound(_0x30579e,_0x1d255d){return function(_0xdbf1fb){if(!_0xdbf1fb){_0x30579e['sendStatus'](0x194);}return _0xdbf1fb;};}function handleError(_0x39fc3b,_0x23b934){_0x23b934=_0x23b934||0x1f4;return function(_0x786c0){logger[_0xc465('0x28')](_0x786c0[_0xc465('0x29')]);if(_0x786c0[_0xc465('0x2a')]){delete _0x786c0[_0xc465('0x2a')];}_0x39fc3b[_0xc465('0x1b')](_0x23b934)['send'](_0x786c0);};}exports['index']=function(_0x5ac1b4,_0x5cba9c){var _0x5a6a92={},_0x47a1ef={},_0x9fd310={'count':0x0,'rows':[]};var _0x4b4c61=_['map'](db['SquareDetailsReport'][_0xc465('0x2b')],function(_0xd13e84){return{'name':_0xd13e84[_0xc465('0x2c')],'type':_0xd13e84[_0xc465('0x2d')][_0xc465('0x2e')]};});_0x47a1ef[_0xc465('0x2f')]=_[_0xc465('0x30')](_0x4b4c61,_0xc465('0x2a'));_0x47a1ef[_0xc465('0x31')]=_['keys'](_0x5ac1b4['query']);_0x47a1ef['filters']=_['intersection'](_0x47a1ef[_0xc465('0x2f')],_0x47a1ef['query']);_0x5a6a92[_0xc465('0x32')]=_[_0xc465('0x33')](_0x47a1ef[_0xc465('0x2f')],qs['fields'](_0x5ac1b4['query']['fields']));_0x5a6a92[_0xc465('0x32')]=_0x5a6a92[_0xc465('0x32')][_0xc465('0x34')]?_0x5a6a92['attributes']:_0x47a1ef[_0xc465('0x2f')];if(!_0x5ac1b4['query'][_0xc465('0x35')](_0xc465('0x36'))){_0x5a6a92[_0xc465('0x1e')]=qs[_0xc465('0x1e')](_0x5ac1b4['query']['limit']);_0x5a6a92[_0xc465('0x1d')]=qs[_0xc465('0x1d')](_0x5ac1b4[_0xc465('0x31')][_0xc465('0x1d')]);}_0x5a6a92[_0xc465('0x37')]=qs[_0xc465('0x38')](_0x5ac1b4[_0xc465('0x31')]['sort']);_0x5a6a92[_0xc465('0x39')]=qs[_0xc465('0x3a')](_['pick'](_0x5ac1b4['query'],_0x47a1ef[_0xc465('0x3a')]),_0x4b4c61);if(_0x5ac1b4[_0xc465('0x31')][_0xc465('0x3b')]){_0x5a6a92[_0xc465('0x39')]=_[_0xc465('0x3c')](_0x5a6a92[_0xc465('0x39')],{'$or':_['map'](_0x4b4c61,function(_0x5a5ea7){if(_0x5a5ea7[_0xc465('0x2d')]!==_0xc465('0x3d')){var _0x13fd39={};_0x13fd39[_0x5a5ea7[_0xc465('0x2a')]]={'$like':'%'+_0x5ac1b4['query'][_0xc465('0x3b')]+'%'};return _0x13fd39;}})});}_0x5a6a92=_[_0xc465('0x3c')]({},_0x5a6a92,_0x5ac1b4[_0xc465('0x3e')]);var _0x4b24f1={'where':_0x5a6a92[_0xc465('0x39')]};return db['SquareDetailsReport'][_0xc465('0x20')](_0x4b24f1)[_0xc465('0x27')](function(_0x1f6d66){_0x9fd310[_0xc465('0x20')]=_0x1f6d66;if(_0x5ac1b4[_0xc465('0x31')][_0xc465('0x3f')]){_0x5a6a92['include']=[{'all':!![]}];}return db['SquareDetailsReport']['findAll'](_0x5a6a92);})[_0xc465('0x27')](function(_0x4be83b){_0x9fd310[_0xc465('0x40')]=_0x4be83b;return _0x9fd310;})[_0xc465('0x27')](respondWithFilteredResult(_0x5cba9c,_0x5a6a92))[_0xc465('0x41')](handleError(_0x5cba9c,null));};exports[_0xc465('0x42')]=function(_0x565d0f,_0x2d5796){var _0x4c20fb={'raw':!![],'where':{'id':_0x565d0f[_0xc465('0x43')]['id']}},_0x350229={};_0x350229[_0xc465('0x2f')]=_[_0xc465('0x44')](db['SquareDetailsReport']['rawAttributes']);_0x350229[_0xc465('0x31')]=_[_0xc465('0x44')](_0x565d0f['query']);_0x350229[_0xc465('0x3a')]=_['intersection'](_0x350229[_0xc465('0x2f')],_0x350229[_0xc465('0x31')]);_0x4c20fb[_0xc465('0x32')]=_[_0xc465('0x33')](_0x350229[_0xc465('0x2f')],qs[_0xc465('0x45')](_0x565d0f[_0xc465('0x31')][_0xc465('0x45')]));_0x4c20fb[_0xc465('0x32')]=_0x4c20fb[_0xc465('0x32')][_0xc465('0x34')]?_0x4c20fb[_0xc465('0x32')]:_0x350229[_0xc465('0x2f')];if(_0x565d0f[_0xc465('0x31')][_0xc465('0x3f')]){_0x4c20fb[_0xc465('0x46')]=[{'all':!![]}];}_0x4c20fb=_[_0xc465('0x3c')]({},_0x4c20fb,_0x565d0f[_0xc465('0x3e')]);return db[_0xc465('0x47')][_0xc465('0x48')](_0x4c20fb)[_0xc465('0x27')](handleEntityNotFound(_0x2d5796,null))[_0xc465('0x27')](respondWithResult(_0x2d5796,null))[_0xc465('0x41')](handleError(_0x2d5796,null));};exports['create']=function(_0x447bc7,_0x208631){return db[_0xc465('0x47')][_0xc465('0x49')](_0x447bc7[_0xc465('0x4a')],{})[_0xc465('0x27')](respondWithResult(_0x208631,0xc9))[_0xc465('0x41')](handleError(_0x208631,null));};exports[_0xc465('0x26')]=function(_0xf642e7,_0x29d67d){if(_0xf642e7[_0xc465('0x4a')]['id']){delete _0xf642e7[_0xc465('0x4a')]['id'];}return db[_0xc465('0x47')][_0xc465('0x48')]({'where':{'id':_0xf642e7[_0xc465('0x43')]['id']}})[_0xc465('0x27')](handleEntityNotFound(_0x29d67d,null))['then'](saveUpdates(_0xf642e7[_0xc465('0x4a')],null))['then'](respondWithResult(_0x29d67d,null))[_0xc465('0x41')](handleError(_0x29d67d,null));};exports[_0xc465('0x4b')]=function(_0x20e642,_0x5b7a2c){return db[_0xc465('0x47')][_0xc465('0x48')]({'where':{'id':_0x20e642[_0xc465('0x43')]['id']}})[_0xc465('0x27')](handleEntityNotFound(_0x5b7a2c,null))['then'](removeEntity(_0x5b7a2c,null))['catch'](handleError(_0x5b7a2c,null));};exports['describe']=function(_0x55f2dc,_0x5a8a89){return db[_0xc465('0x47')][_0xc465('0x4c')]()['then'](respondWithResult(_0x5a8a89,null))[_0xc465('0x41')](handleError(_0x5a8a89,null));};
\ No newline at end of file
+var _0xdfe4=['key','model','query','keys','intersection','attributes','fields','order','sort','filters','pick','filter','where','merge','VIRTUAL','options','include','findAll','rows','rawAttributes','length','includeAll','find','catch','create','body','params','describe','eml-format','zip-dir','request-promise','moment','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','save','update','destroy','then','error','stack','name','send','index','map','SquareDetailsReport','type'];(function(_0x55ca35,_0x58082d){var _0x1dd8bf=function(_0x49431f){while(--_0x49431f){_0x55ca35['push'](_0x55ca35['shift']());}};_0x1dd8bf(++_0x58082d);}(_0xdfe4,0x189));var _0x4dfe=function(_0x4baae2,_0x487ab6){_0x4baae2=_0x4baae2-0x0;var _0x1a2285=_0xdfe4[_0x4baae2];return _0x1a2285;};'use strict';var emlformat=require(_0x4dfe('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x4dfe('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x4dfe('0x2'));var moment=require(_0x4dfe('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x4dfe('0x4'));var path=require(_0x4dfe('0x5'));var sox=require(_0x4dfe('0x6'));var csv=require(_0x4dfe('0x7'));var ejs=require(_0x4dfe('0x8'));var fs=require('fs');var fs_extra=require(_0x4dfe('0x9'));var _=require('lodash');var squel=require(_0x4dfe('0xa'));var crypto=require(_0x4dfe('0xb'));var jsforce=require(_0x4dfe('0xc'));var deskjs=require(_0x4dfe('0xd'));var toCsv=require(_0x4dfe('0x7'));var querystring=require(_0x4dfe('0xe'));var Papa=require('papaparse');var Redis=require(_0x4dfe('0xf'));var authService=require(_0x4dfe('0x10'));var qs=require(_0x4dfe('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4dfe('0x12'));var logger=require(_0x4dfe('0x13'))(_0x4dfe('0x14'));var utils=require(_0x4dfe('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x4dfe('0x16'));var db=require(_0x4dfe('0x17'))['db'];function respondWithStatusCode(_0x4d3369,_0x43d26a){_0x43d26a=_0x43d26a||0xcc;return function(_0x36e992){if(_0x36e992){return _0x4d3369['sendStatus'](_0x43d26a);}return _0x4d3369[_0x4dfe('0x18')](_0x43d26a)[_0x4dfe('0x19')]();};}function respondWithResult(_0x12b486,_0x2902ec){_0x2902ec=_0x2902ec||0xc8;return function(_0x3dceba){if(_0x3dceba){return _0x12b486['status'](_0x2902ec)[_0x4dfe('0x1a')](_0x3dceba);}};}function respondWithFilteredResult(_0x5285ab,_0x83a17e){return function(_0x210f90){if(_0x210f90){var _0x31743d=typeof _0x83a17e[_0x4dfe('0x1b')]===_0x4dfe('0x1c')&&typeof _0x83a17e[_0x4dfe('0x1d')]===_0x4dfe('0x1c');var _0x1b653d=_0x210f90[_0x4dfe('0x1e')];var _0x290e64=_0x31743d?0x0:_0x83a17e[_0x4dfe('0x1b')];var _0xaffb83=_0x31743d?_0x210f90['count']:_0x83a17e[_0x4dfe('0x1b')]+_0x83a17e[_0x4dfe('0x1d')];var _0xe93ce3;if(_0xaffb83>=_0x1b653d){_0xaffb83=_0x1b653d;_0xe93ce3=0xc8;}else{_0xe93ce3=0xce;}_0x5285ab[_0x4dfe('0x18')](_0xe93ce3);return _0x5285ab[_0x4dfe('0x1f')](_0x4dfe('0x20'),_0x290e64+'-'+_0xaffb83+'/'+_0x1b653d)[_0x4dfe('0x1a')](_0x210f90);}return null;};}function patchUpdates(_0x18dfc1){return function(_0x4a0659){try{jsonpatch['apply'](_0x4a0659,_0x18dfc1,!![]);}catch(_0x328323){return BPromise['reject'](_0x328323);}return _0x4a0659[_0x4dfe('0x21')]();};}function saveUpdates(_0x516817,_0xc841f0){return function(_0x5ed13a){if(_0x5ed13a){return _0x5ed13a[_0x4dfe('0x22')](_0x516817)['then'](function(_0x36fb02){return _0x36fb02;});}return null;};}function removeEntity(_0x3c0cc3,_0x5c5901){return function(_0x5e18ba){if(_0x5e18ba){return _0x5e18ba[_0x4dfe('0x23')]()[_0x4dfe('0x24')](function(){_0x3c0cc3['status'](0xcc)[_0x4dfe('0x19')]();});}};}function handleEntityNotFound(_0x29bac2,_0x183d6c){return function(_0x49ff61){if(!_0x49ff61){_0x29bac2['sendStatus'](0x194);}return _0x49ff61;};}function handleError(_0x3097f9,_0x2fea54){_0x2fea54=_0x2fea54||0x1f4;return function(_0x459283){logger[_0x4dfe('0x25')](_0x459283[_0x4dfe('0x26')]);if(_0x459283[_0x4dfe('0x27')]){delete _0x459283[_0x4dfe('0x27')];}_0x3097f9['status'](_0x2fea54)[_0x4dfe('0x28')](_0x459283);};}exports[_0x4dfe('0x29')]=function(_0x3fbcb4,_0x2afc4c){var _0x9eefb4={},_0x68272f={},_0x20048d={'count':0x0,'rows':[]};var _0x1ee969=_[_0x4dfe('0x2a')](db[_0x4dfe('0x2b')]['rawAttributes'],function(_0x3b4c86){return{'name':_0x3b4c86['fieldName'],'type':_0x3b4c86[_0x4dfe('0x2c')][_0x4dfe('0x2d')]};});_0x68272f[_0x4dfe('0x2e')]=_[_0x4dfe('0x2a')](_0x1ee969,_0x4dfe('0x27'));_0x68272f[_0x4dfe('0x2f')]=_[_0x4dfe('0x30')](_0x3fbcb4['query']);_0x68272f['filters']=_[_0x4dfe('0x31')](_0x68272f[_0x4dfe('0x2e')],_0x68272f['query']);_0x9eefb4[_0x4dfe('0x32')]=_[_0x4dfe('0x31')](_0x68272f[_0x4dfe('0x2e')],qs[_0x4dfe('0x33')](_0x3fbcb4['query'][_0x4dfe('0x33')]));_0x9eefb4[_0x4dfe('0x32')]=_0x9eefb4[_0x4dfe('0x32')]['length']?_0x9eefb4[_0x4dfe('0x32')]:_0x68272f[_0x4dfe('0x2e')];if(!_0x3fbcb4['query']['hasOwnProperty']('nolimit')){_0x9eefb4[_0x4dfe('0x1d')]=qs['limit'](_0x3fbcb4[_0x4dfe('0x2f')][_0x4dfe('0x1d')]);_0x9eefb4[_0x4dfe('0x1b')]=qs[_0x4dfe('0x1b')](_0x3fbcb4[_0x4dfe('0x2f')][_0x4dfe('0x1b')]);}_0x9eefb4[_0x4dfe('0x34')]=qs['sort'](_0x3fbcb4[_0x4dfe('0x2f')][_0x4dfe('0x35')]);_0x9eefb4['where']=qs[_0x4dfe('0x36')](_[_0x4dfe('0x37')](_0x3fbcb4[_0x4dfe('0x2f')],_0x68272f[_0x4dfe('0x36')]),_0x1ee969);if(_0x3fbcb4['query'][_0x4dfe('0x38')]){_0x9eefb4[_0x4dfe('0x39')]=_[_0x4dfe('0x3a')](_0x9eefb4[_0x4dfe('0x39')],{'$or':_[_0x4dfe('0x2a')](_0x1ee969,function(_0x1f44a4){if(_0x1f44a4['type']!==_0x4dfe('0x3b')){var _0x388c8f={};_0x388c8f[_0x1f44a4[_0x4dfe('0x27')]]={'$like':'%'+_0x3fbcb4[_0x4dfe('0x2f')]['filter']+'%'};return _0x388c8f;}})});}_0x9eefb4=_[_0x4dfe('0x3a')]({},_0x9eefb4,_0x3fbcb4[_0x4dfe('0x3c')]);var _0x371b88={'where':_0x9eefb4[_0x4dfe('0x39')]};return db[_0x4dfe('0x2b')]['count'](_0x371b88)[_0x4dfe('0x24')](function(_0x4851dc){_0x20048d['count']=_0x4851dc;if(_0x3fbcb4[_0x4dfe('0x2f')]['includeAll']){_0x9eefb4[_0x4dfe('0x3d')]=[{'all':!![]}];}return db[_0x4dfe('0x2b')][_0x4dfe('0x3e')](_0x9eefb4);})['then'](function(_0x1b600d){_0x20048d[_0x4dfe('0x3f')]=_0x1b600d;return _0x20048d;})[_0x4dfe('0x24')](respondWithFilteredResult(_0x2afc4c,_0x9eefb4))['catch'](handleError(_0x2afc4c,null));};exports['show']=function(_0x3b65dc,_0x472b0e){var _0xe83f7e={'raw':!![],'where':{'id':_0x3b65dc['params']['id']}},_0x1e1db7={};_0x1e1db7[_0x4dfe('0x2e')]=_[_0x4dfe('0x30')](db['SquareDetailsReport'][_0x4dfe('0x40')]);_0x1e1db7[_0x4dfe('0x2f')]=_[_0x4dfe('0x30')](_0x3b65dc[_0x4dfe('0x2f')]);_0x1e1db7[_0x4dfe('0x36')]=_[_0x4dfe('0x31')](_0x1e1db7['model'],_0x1e1db7[_0x4dfe('0x2f')]);_0xe83f7e[_0x4dfe('0x32')]=_[_0x4dfe('0x31')](_0x1e1db7[_0x4dfe('0x2e')],qs['fields'](_0x3b65dc['query'][_0x4dfe('0x33')]));_0xe83f7e['attributes']=_0xe83f7e[_0x4dfe('0x32')][_0x4dfe('0x41')]?_0xe83f7e[_0x4dfe('0x32')]:_0x1e1db7['model'];if(_0x3b65dc[_0x4dfe('0x2f')][_0x4dfe('0x42')]){_0xe83f7e[_0x4dfe('0x3d')]=[{'all':!![]}];}_0xe83f7e=_['merge']({},_0xe83f7e,_0x3b65dc[_0x4dfe('0x3c')]);return db[_0x4dfe('0x2b')][_0x4dfe('0x43')](_0xe83f7e)[_0x4dfe('0x24')](handleEntityNotFound(_0x472b0e,null))[_0x4dfe('0x24')](respondWithResult(_0x472b0e,null))[_0x4dfe('0x44')](handleError(_0x472b0e,null));};exports['create']=function(_0xf3dfc7,_0x3fb3a9){return db[_0x4dfe('0x2b')][_0x4dfe('0x45')](_0xf3dfc7[_0x4dfe('0x46')],{})['then'](respondWithResult(_0x3fb3a9,0xc9))[_0x4dfe('0x44')](handleError(_0x3fb3a9,null));};exports[_0x4dfe('0x22')]=function(_0xe8476a,_0xb694bc){if(_0xe8476a['body']['id']){delete _0xe8476a['body']['id'];}return db[_0x4dfe('0x2b')][_0x4dfe('0x43')]({'where':{'id':_0xe8476a[_0x4dfe('0x47')]['id']}})[_0x4dfe('0x24')](handleEntityNotFound(_0xb694bc,null))[_0x4dfe('0x24')](saveUpdates(_0xe8476a[_0x4dfe('0x46')],null))[_0x4dfe('0x24')](respondWithResult(_0xb694bc,null))[_0x4dfe('0x44')](handleError(_0xb694bc,null));};exports[_0x4dfe('0x23')]=function(_0xba72f,_0x1a1689){return db['SquareDetailsReport'][_0x4dfe('0x43')]({'where':{'id':_0xba72f['params']['id']}})[_0x4dfe('0x24')](handleEntityNotFound(_0x1a1689,null))[_0x4dfe('0x24')](removeEntity(_0x1a1689,null))[_0x4dfe('0x44')](handleError(_0x1a1689,null));};exports[_0x4dfe('0x48')]=function(_0x3da7fe,_0x19b690){return db['SquareDetailsReport'][_0x4dfe('0x48')]()[_0x4dfe('0x24')](respondWithResult(_0x19b690,null))[_0x4dfe('0x44')](handleError(_0x19b690,null));};
\ No newline at end of file
index 548b2f9..caf8bba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xffbc=['../../config/environment','./squareReportDetail.attributes','exports','define','report_square_details','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x25ef0f,_0x7b3906){var _0x45d262=function(_0x4ccd51){while(--_0x4ccd51){_0x25ef0f['push'](_0x25ef0f['shift']());}};_0x45d262(++_0x7b3906);}(_0xffbc,0xd5));var _0xcffb=function(_0x54d4a8,_0x585a59){_0x54d4a8=_0x54d4a8-0x0;var _0x3b321b=_0xffbc[_0x54d4a8];return _0x3b321b;};'use strict';var _=require(_0xcffb('0x0'));var util=require('util');var logger=require(_0xcffb('0x1'))(_0xcffb('0x2'));var moment=require(_0xcffb('0x3'));var BPromise=require(_0xcffb('0x4'));var rp=require(_0xcffb('0x5'));var fs=require('fs');var path=require(_0xcffb('0x6'));var rimraf=require(_0xcffb('0x7'));var config=require(_0xcffb('0x8'));var attributes=require(_0xcffb('0x9'));module[_0xcffb('0xa')]=function(_0x57d0ce,_0x35d54f){return _0x57d0ce[_0xcffb('0xb')]('SquareDetailsReport',attributes,{'tableName':_0xcffb('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xef47=['rimraf','../../config/environment','./squareReportDetail.attributes','exports','define','SquareDetailsReport','report_square_details','util','request-promise','path'];(function(_0x5293c8,_0xab0c3c){var _0x3623fb=function(_0x23ef99){while(--_0x23ef99){_0x5293c8['push'](_0x5293c8['shift']());}};_0x3623fb(++_0xab0c3c);}(_0xef47,0x1e7));var _0x7ef4=function(_0x19d5a8,_0x149fe4){_0x19d5a8=_0x19d5a8-0x0;var _0x47aeaa=_0xef47[_0x19d5a8];return _0x47aeaa;};'use strict';var _=require('lodash');var util=require(_0x7ef4('0x0'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x7ef4('0x1'));var fs=require('fs');var path=require(_0x7ef4('0x2'));var rimraf=require(_0x7ef4('0x3'));var config=require(_0x7ef4('0x4'));var attributes=require(_0x7ef4('0x5'));module[_0x7ef4('0x6')]=function(_0x1b52dc,_0x31b9f6){return _0x1b52dc[_0x7ef4('0x7')](_0x7ef4('0x8'),attributes,{'tableName':_0x7ef4('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 20f0cd3..7d9f83b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf65d=['randomstring','ioredis','../../mysqldb','../../config/utils','jayson/promise','http','request','then','SquareDetailsReport,\x20%s,\x20%s','debug','SquareDetailsReport,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','info','result','catch','CreateSquareDetailsReport','SquareDetailsReport','create','body','options','stringify','lodash','moment','bluebird'];(function(_0x2dabf5,_0x328221){var _0x3579d8=function(_0x526915){while(--_0x526915){_0x2dabf5['push'](_0x2dabf5['shift']());}};_0x3579d8(++_0x328221);}(_0xf65d,0x9f));var _0xdf65=function(_0x1f7996,_0x299a14){_0x1f7996=_0x1f7996-0x0;var _0x584609=_0xf65d[_0x1f7996];return _0x584609;};'use strict';var _=require(_0xdf65('0x0'));var util=require('util');var moment=require(_0xdf65('0x1'));var BPromise=require(_0xdf65('0x2'));var rs=require(_0xdf65('0x3'));var fs=require('fs');var Redis=require(_0xdf65('0x4'));var db=require(_0xdf65('0x5'))['db'];var utils=require(_0xdf65('0x6'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0xdf65('0x7'));var client=jayson['client'][_0xdf65('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x33efa2,_0x4c4054,_0x40cc08){return new BPromise(function(_0x3f5cae,_0x97292b){return client[_0xdf65('0x9')](_0x33efa2,_0x40cc08)[_0xdf65('0xa')](function(_0x46a70d){logger['info'](_0xdf65('0xb'),_0x4c4054,'request\x20sent');logger[_0xdf65('0xc')](_0xdf65('0xd'),_0x4c4054,_0xdf65('0xe'),JSON['stringify'](_0x46a70d));if(_0x46a70d['error']){if(_0x46a70d[_0xdf65('0xf')][_0xdf65('0x10')]===0x1f4){logger[_0xdf65('0xf')](_0xdf65('0xb'),_0x4c4054,_0x46a70d[_0xdf65('0xf')][_0xdf65('0x11')]);return _0x97292b(_0x46a70d['error'][_0xdf65('0x11')]);}logger[_0xdf65('0xf')]('SquareDetailsReport,\x20%s,\x20%s',_0x4c4054,_0x46a70d['error']['message']);return _0x3f5cae(_0x46a70d[_0xdf65('0xf')][_0xdf65('0x11')]);}else{logger[_0xdf65('0x12')](_0xdf65('0xb'),_0x4c4054,_0xdf65('0xe'));_0x3f5cae(_0x46a70d[_0xdf65('0x13')][_0xdf65('0x11')]);}})[_0xdf65('0x14')](function(_0x208b93){logger[_0xdf65('0xf')]('SquareDetailsReport,\x20%s,\x20%s',_0x4c4054,_0x208b93);_0x97292b(_0x208b93);});});}exports[_0xdf65('0x15')]=function(_0x532215){var _0x28fcd1=this;return new Promise(function(_0x3a175b,_0x2337da){return db[_0xdf65('0x16')][_0xdf65('0x17')](_0x532215[_0xdf65('0x18')],{'raw':_0x532215['options']?_0x532215[_0xdf65('0x19')]['raw']===undefined?!![]:![]:!![]})[_0xdf65('0xa')](function(_0x299ed3){logger[_0xdf65('0x12')](_0xdf65('0x15'),_0x532215);logger[_0xdf65('0xc')]('CreateSquareDetailsReport',_0x532215,JSON[_0xdf65('0x1a')](_0x299ed3));_0x3a175b(_0x299ed3);})[_0xdf65('0x14')](function(_0x5ee78d){logger[_0xdf65('0xf')](_0xdf65('0x15'),_0x5ee78d[_0xdf65('0x11')],_0x532215);_0x2337da(_0x28fcd1[_0xdf65('0xf')](0x1f4,_0x5ee78d['message']));});});};
\ No newline at end of file
+var _0xd290=['../../config/environment','client','http','request','then','info','SquareDetailsReport,\x20%s,\x20%s','debug','SquareDetailsReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','catch','CreateSquareDetailsReport','SquareDetailsReport','create','body','options','raw','lodash','util','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x57d75d,_0x2637b9){var _0x12acb7=function(_0x51672e){while(--_0x51672e){_0x57d75d['push'](_0x57d75d['shift']());}};_0x12acb7(++_0x2637b9);}(_0xd290,0x165));var _0x0d29=function(_0x3cb847,_0x468c26){_0x3cb847=_0x3cb847-0x0;var _0x142415=_0xd290[_0x3cb847];return _0x142415;};'use strict';var _=require(_0x0d29('0x0'));var util=require(_0x0d29('0x1'));var moment=require('moment');var BPromise=require(_0x0d29('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x0d29('0x3'))['db'];var utils=require(_0x0d29('0x4'));var logger=require(_0x0d29('0x5'))(_0x0d29('0x6'));var config=require(_0x0d29('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x0d29('0x8')][_0x0d29('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x151d32,_0x376d19,_0x276aeb){return new BPromise(function(_0x4edfcd,_0x3ee63c){return client[_0x0d29('0xa')](_0x151d32,_0x276aeb)[_0x0d29('0xb')](function(_0x4b876e){logger[_0x0d29('0xc')](_0x0d29('0xd'),_0x376d19,'request\x20sent');logger[_0x0d29('0xe')](_0x0d29('0xf'),_0x376d19,'request\x20sent',JSON[_0x0d29('0x10')](_0x4b876e));if(_0x4b876e['error']){if(_0x4b876e[_0x0d29('0x11')][_0x0d29('0x12')]===0x1f4){logger[_0x0d29('0x11')](_0x0d29('0xd'),_0x376d19,_0x4b876e[_0x0d29('0x11')]['message']);return _0x3ee63c(_0x4b876e[_0x0d29('0x11')][_0x0d29('0x13')]);}logger[_0x0d29('0x11')](_0x0d29('0xd'),_0x376d19,_0x4b876e[_0x0d29('0x11')]['message']);return _0x4edfcd(_0x4b876e['error']['message']);}else{logger[_0x0d29('0xc')]('SquareDetailsReport,\x20%s,\x20%s',_0x376d19,_0x0d29('0x14'));_0x4edfcd(_0x4b876e['result'][_0x0d29('0x13')]);}})[_0x0d29('0x15')](function(_0x2a04d6){logger[_0x0d29('0x11')](_0x0d29('0xd'),_0x376d19,_0x2a04d6);_0x3ee63c(_0x2a04d6);});});}exports[_0x0d29('0x16')]=function(_0x488fa2){var _0x319a36=this;return new Promise(function(_0x2600b3,_0xca30af){return db[_0x0d29('0x17')][_0x0d29('0x18')](_0x488fa2[_0x0d29('0x19')],{'raw':_0x488fa2[_0x0d29('0x1a')]?_0x488fa2['options'][_0x0d29('0x1b')]===undefined?!![]:![]:!![]})[_0x0d29('0xb')](function(_0x215cd7){logger[_0x0d29('0xc')](_0x0d29('0x16'),_0x488fa2);logger[_0x0d29('0xe')](_0x0d29('0x16'),_0x488fa2,JSON[_0x0d29('0x10')](_0x215cd7));_0x2600b3(_0x215cd7);})[_0x0d29('0x15')](function(_0xed8228){logger[_0x0d29('0x11')](_0x0d29('0x16'),_0xed8228[_0x0d29('0x13')],_0x488fa2);_0xca30af(_0x319a36['error'](0x1f4,_0xed8228[_0x0d29('0x13')]));});});};
\ No newline at end of file
index 99c3c61..cdfb15e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcda3=['../../components/auth/service','./system.controller','get','index','exports'];(function(_0xa4a324,_0x5443c0){var _0x31ed87=function(_0xead820){while(--_0xead820){_0xa4a324['push'](_0xa4a324['shift']());}};_0x31ed87(++_0x5443c0);}(_0xcda3,0x1c2));var _0x3cda=function(_0x1269c6,_0x1c8942){_0x1269c6=_0x1269c6-0x0;var _0x4868c7=_0xcda3[_0x1269c6];return _0x4868c7;};'use strict';var express=require('express');var router=express['Router']();var auth=require(_0x3cda('0x0'));var controller=require(_0x3cda('0x1'));router[_0x3cda('0x2')]('/',auth['isAuthenticated'](),controller[_0x3cda('0x3')]);router[_0x3cda('0x2')]('/process/:pid/kill',auth['isAuthenticated'](),controller['killProcess']);module[_0x3cda('0x4')]=router;
\ No newline at end of file
+var _0x57b8=['/process/:pid/kill','killProcess','Router','../../components/auth/service','./system.controller','get','isAuthenticated','index'];(function(_0x1c9451,_0x333b74){var _0x1fe6e5=function(_0x14bffb){while(--_0x14bffb){_0x1c9451['push'](_0x1c9451['shift']());}};_0x1fe6e5(++_0x333b74);}(_0x57b8,0x182));var _0x857b=function(_0x439866,_0x131ee3){_0x439866=_0x439866-0x0;var _0x202859=_0x57b8[_0x439866];return _0x202859;};'use strict';var express=require('express');var router=express[_0x857b('0x0')]();var auth=require(_0x857b('0x1'));var controller=require(_0x857b('0x2'));router[_0x857b('0x3')]('/',auth[_0x857b('0x4')](),controller[_0x857b('0x5')]);router[_0x857b('0x3')](_0x857b('0x6'),auth[_0x857b('0x4')](),controller[_0x857b('0x7')]);module['exports']=router;
\ No newline at end of file
index d85feda..d6fefaf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x13ef=['index','getAllData','then','json','catch','killProcess','components/import/cm','format','ps\x20-p\x20%s\x20-ww\x20-o\x20args','params','split','length','indexOf','pid','kill','SIGINT','Process\x20with\x20pid\x20%s\x20killed\x20correctly','child_process','exec','../../config/logger','api','util','bluebird','error','<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s','inspect','name','status','send'];(function(_0x25aaec,_0x159e5b){var _0x293c2f=function(_0x3cd42a){while(--_0x3cd42a){_0x25aaec['push'](_0x25aaec['shift']());}};_0x293c2f(++_0x159e5b);}(_0x13ef,0xdc));var _0xf13e=function(_0x46698a,_0x8de1e4){_0x46698a=_0x46698a-0x0;var _0x356db0=_0x13ef[_0x46698a];return _0x356db0;};'use strict';var info=require('systeminformation');var exec=require(_0xf13e('0x0'))[_0xf13e('0x1')];var logger=require(_0xf13e('0x2'))(_0xf13e('0x3'));var util=require(_0xf13e('0x4'));var BPromise=require(_0xf13e('0x5'));var _=require('lodash');function handleError(_0x16fda2,_0x380b21,_0x589c0e){_0x380b21=_0x380b21||0x1f4;return function(_0x1ad62d){logger[_0xf13e('0x6')](_0xf13e('0x7'),_0x589c0e,_0x380b21,util[_0xf13e('0x8')](_0x1ad62d,{'showHidden':![],'depth':null}));delete _0x1ad62d[_0xf13e('0x9')];_0x16fda2[_0xf13e('0xa')](_0x380b21)[_0xf13e('0xb')](_0x1ad62d);};}exports[_0xf13e('0xc')]=function(_0x528801,_0xbc0fb9){return info[_0xf13e('0xd')]()[_0xf13e('0xe')](function(_0x588b32){return _0xbc0fb9[_0xf13e('0xa')](0xc8)[_0xf13e('0xf')](_0x588b32);})[_0xf13e('0x10')](function(_0x19f2ae){return _0xbc0fb9[_0xf13e('0xa')](0x1f4)[_0xf13e('0xf')](_0x19f2ae);});};exports[_0xf13e('0x11')]=function(_0x290b65,_0x1a43e0){var _0x3f53da=[_0xf13e('0x12')];return new BPromise(function(_0x36edcf,_0x4ee3c7){return exec(util[_0xf13e('0x13')](_0xf13e('0x14'),_0x290b65[_0xf13e('0x15')]['pid']),function(_0x48b7a1,_0x421cb1,_0x1abbde){if(_0x48b7a1){return _0x4ee3c7(_0x48b7a1);}return _0x36edcf(_0x421cb1);});})[_0xf13e('0xe')](function(_0x44b005){var _0x57614f=![];var _0xc6e719=_0x44b005[_0xf13e('0x16')](/\n/);for(var _0x413edf=0x0,_0x2b0558=_0x3f53da[_0xf13e('0x17')];_0x413edf<_0x2b0558,_0x57614f===![];_0x413edf+=0x1){if(_0x44b005[_0xf13e('0x18')](_0x3f53da[_0x413edf])>=0x0){_0x57614f=!![];}}if(!_0x57614f){throw new Error(util[_0xf13e('0x13')]('Process\x20with\x20pid\x20%s\x20not\x20found!',_0x290b65[_0xf13e('0x15')][_0xf13e('0x19')]));}process[_0xf13e('0x1a')](_0x290b65[_0xf13e('0x15')][_0xf13e('0x19')],_0xf13e('0x1b'));return _0x1a43e0[_0xf13e('0xa')](0xc8)[_0xf13e('0xf')]({'message':util['format'](_0xf13e('0x1c'),_0x290b65[_0xf13e('0x15')][_0xf13e('0x19')])});})[_0xf13e('0x10')](handleError(_0x1a43e0,null,_0xf13e('0x11')));};
\ No newline at end of file
+var _0x5e8b=['then','json','status','killProcess','components/import/cm','format','ps\x20-p\x20%s\x20-ww\x20-o\x20args','params','split','Process\x20with\x20pid\x20%s\x20not\x20found!','pid','catch','systeminformation','child_process','exec','../../config/logger','api','util','bluebird','lodash','error','inspect','send','index'];(function(_0xc850ea,_0xbed0c7){var _0x1b069a=function(_0x3127e9){while(--_0x3127e9){_0xc850ea['push'](_0xc850ea['shift']());}};_0x1b069a(++_0xbed0c7);}(_0x5e8b,0xcc));var _0xb5e8=function(_0x2a64f2,_0xe1a414){_0x2a64f2=_0x2a64f2-0x0;var _0x1217ff=_0x5e8b[_0x2a64f2];return _0x1217ff;};'use strict';var info=require(_0xb5e8('0x0'));var exec=require(_0xb5e8('0x1'))[_0xb5e8('0x2')];var logger=require(_0xb5e8('0x3'))(_0xb5e8('0x4'));var util=require(_0xb5e8('0x5'));var BPromise=require(_0xb5e8('0x6'));var _=require(_0xb5e8('0x7'));function handleError(_0xd32ca5,_0x3b34d8,_0x5623b6){_0x3b34d8=_0x3b34d8||0x1f4;return function(_0xdb1d78){logger[_0xb5e8('0x8')]('<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s',_0x5623b6,_0x3b34d8,util[_0xb5e8('0x9')](_0xdb1d78,{'showHidden':![],'depth':null}));delete _0xdb1d78['name'];_0xd32ca5['status'](_0x3b34d8)[_0xb5e8('0xa')](_0xdb1d78);};}exports[_0xb5e8('0xb')]=function(_0x52ff10,_0x5364ad){return info['getAllData']()[_0xb5e8('0xc')](function(_0x2cd6fd){return _0x5364ad['status'](0xc8)[_0xb5e8('0xd')](_0x2cd6fd);})['catch'](function(_0x1165ce){return _0x5364ad[_0xb5e8('0xe')](0x1f4)[_0xb5e8('0xd')](_0x1165ce);});};exports[_0xb5e8('0xf')]=function(_0x3a839a,_0x3e7718){var _0x522771=[_0xb5e8('0x10')];return new BPromise(function(_0x21e1d5,_0x28b61e){return exec(util[_0xb5e8('0x11')](_0xb5e8('0x12'),_0x3a839a[_0xb5e8('0x13')]['pid']),function(_0x4e8df8,_0x1720cd,_0x641c0a){if(_0x4e8df8){return _0x28b61e(_0x4e8df8);}return _0x21e1d5(_0x1720cd);});})[_0xb5e8('0xc')](function(_0x45a696){var _0x3cb3b5=![];var _0x3d8dd7=_0x45a696[_0xb5e8('0x14')](/\n/);for(var _0x4c4012=0x0,_0x7bb9b5=_0x522771['length'];_0x4c4012<_0x7bb9b5,_0x3cb3b5===![];_0x4c4012+=0x1){if(_0x45a696['indexOf'](_0x522771[_0x4c4012])>=0x0){_0x3cb3b5=!![];}}if(!_0x3cb3b5){throw new Error(util[_0xb5e8('0x11')](_0xb5e8('0x15'),_0x3a839a[_0xb5e8('0x13')][_0xb5e8('0x16')]));}process['kill'](_0x3a839a[_0xb5e8('0x13')][_0xb5e8('0x16')],'SIGINT');return _0x3e7718[_0xb5e8('0xe')](0xc8)[_0xb5e8('0xd')]({'message':util[_0xb5e8('0x11')]('Process\x20with\x20pid\x20%s\x20killed\x20correctly',_0x3a839a[_0xb5e8('0x13')][_0xb5e8('0x16')])});})[_0xb5e8('0x17')](handleError(_0x3e7718,null,_0xb5e8('0xf')));};
\ No newline at end of file
index 0c36b5a..48d014c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf534=['util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./tag.controller','get','isAuthenticated','show','post','put','delete','destroy','multer'];(function(_0x2dcf70,_0x4dc514){var _0xa077cf=function(_0x304679){while(--_0x304679){_0x2dcf70['push'](_0x2dcf70['shift']());}};_0xa077cf(++_0x4dc514);}(_0xf534,0x9f));var _0x4f53=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xf534[_0x14add3];return _0x4a174f;};'use strict';var multer=require(_0x4f53('0x0'));var util=require(_0x4f53('0x1'));var path=require(_0x4f53('0x2'));var timeout=require(_0x4f53('0x3'));var express=require(_0x4f53('0x4'));var router=express['Router']();var fs_extra=require(_0x4f53('0x5'));var auth=require(_0x4f53('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x4f53('0x7'));var controller=require(_0x4f53('0x8'));router[_0x4f53('0x9')]('/',auth[_0x4f53('0xa')](),controller['index']);router[_0x4f53('0x9')]('/:id',auth[_0x4f53('0xa')](),controller[_0x4f53('0xb')]);router[_0x4f53('0xc')]('/',auth[_0x4f53('0xa')](),controller['create']);router[_0x4f53('0xd')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0x4f53('0xe')]('/:id',auth[_0x4f53('0xa')](),controller[_0x4f53('0xf')]);module['exports']=router;
\ No newline at end of file
+var _0x6017=['../../config/environment','isAuthenticated','index','get','/:id','show','create','put','update','delete','destroy','exports','multer','util','path','express','Router','../../components/auth/service'];(function(_0x4792c8,_0x5158a1){var _0x35edb1=function(_0x2472d3){while(--_0x2472d3){_0x4792c8['push'](_0x4792c8['shift']());}};_0x35edb1(++_0x5158a1);}(_0x6017,0xae));var _0x7601=function(_0x1ac1a7,_0xda8724){_0x1ac1a7=_0x1ac1a7-0x0;var _0x227ee2=_0x6017[_0x1ac1a7];return _0x227ee2;};'use strict';var multer=require(_0x7601('0x0'));var util=require(_0x7601('0x1'));var path=require(_0x7601('0x2'));var timeout=require('connect-timeout');var express=require(_0x7601('0x3'));var router=express[_0x7601('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x7601('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x7601('0x6'));var controller=require('./tag.controller');router['get']('/',auth[_0x7601('0x7')](),controller[_0x7601('0x8')]);router[_0x7601('0x9')](_0x7601('0xa'),auth[_0x7601('0x7')](),controller[_0x7601('0xb')]);router['post']('/',auth[_0x7601('0x7')](),controller[_0x7601('0xc')]);router[_0x7601('0xd')]('/:id',auth[_0x7601('0x7')](),controller[_0x7601('0xe')]);router[_0x7601('0xf')]('/:id',auth[_0x7601('0x7')](),controller[_0x7601('0x10')]);module[_0x7601('0x11')]=router;
\ No newline at end of file
index 0dc3618..d34a27b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ca5=['exports','STRING','name','#0091EA'];(function(_0x30ae5e,_0x391fc4){var _0x1f2e93=function(_0x60307d){while(--_0x60307d){_0x30ae5e['push'](_0x30ae5e['shift']());}};_0x1f2e93(++_0x391fc4);}(_0x2ca5,0x108));var _0x52ca=function(_0x3b4455,_0x3e4395){_0x3b4455=_0x3b4455-0x0;var _0x34dd09=_0x2ca5[_0x3b4455];return _0x34dd09;};'use strict';var Sequelize=require('sequelize');module[_0x52ca('0x0')]={'name':{'type':Sequelize[_0x52ca('0x1')],'unique':_0x52ca('0x2'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize['STRING'],'defaultValue':_0x52ca('0x3')},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xc933=['name','sequelize','exports','STRING'];(function(_0x103e3e,_0x11a925){var _0x1c7ab6=function(_0x50c2f5){while(--_0x50c2f5){_0x103e3e['push'](_0x103e3e['shift']());}};_0x1c7ab6(++_0x11a925);}(_0xc933,0xf9));var _0x3c93=function(_0x239dbd,_0x249d17){_0x239dbd=_0x239dbd-0x0;var _0x5874af=_0xc933[_0x239dbd];return _0x5874af;};'use strict';var Sequelize=require(_0x3c93('0x0'));module[_0x3c93('0x1')]={'name':{'type':Sequelize[_0x3c93('0x2')],'unique':_0x3c93('0x3'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize[_0x3c93('0x2')],'defaultValue':'#0091EA'},'description':{'type':Sequelize[_0x3c93('0x2')]}};
\ No newline at end of file
index 7f7874b..c9cf238 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x99e9=['show','params','includeAll','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','ejs','fs-extra','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','destroy','then','get','UserProfileResource','error','name','send','index','map','Tag','rawAttributes','fieldName','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','filter','where','merge','type','VIRTUAL','options','include','findAll','rows','catch'];(function(_0xd7d3fa,_0x452c8e){var _0x4e3d24=function(_0x1dcb58){while(--_0x1dcb58){_0xd7d3fa['push'](_0xd7d3fa['shift']());}};_0x4e3d24(++_0x452c8e);}(_0x99e9,0xb4));var _0x999e=function(_0x286bfb,_0x46ac3c){_0x286bfb=_0x286bfb-0x0;var _0x52b683=_0x99e9[_0x286bfb];return _0x52b683;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x999e('0x0'));var zipdir=require(_0x999e('0x1'));var jsonpatch=require(_0x999e('0x2'));var rp=require(_0x999e('0x3'));var moment=require('moment');var BPromise=require(_0x999e('0x4'));var Mustache=require(_0x999e('0x5'));var util=require(_0x999e('0x6'));var path=require('path');var sox=require(_0x999e('0x7'));var csv=require('to-csv');var ejs=require(_0x999e('0x8'));var fs=require('fs');var fs_extra=require(_0x999e('0x9'));var _=require(_0x999e('0xa'));var squel=require(_0x999e('0xb'));var crypto=require('crypto');var jsforce=require(_0x999e('0xc'));var deskjs=require(_0x999e('0xd'));var toCsv=require(_0x999e('0xe'));var querystring=require(_0x999e('0xf'));var Papa=require(_0x999e('0x10'));var Redis=require(_0x999e('0x11'));var authService=require(_0x999e('0x12'));var qs=require(_0x999e('0x13'));var as=require(_0x999e('0x14'));var hardwareService=require(_0x999e('0x15'));var logger=require(_0x999e('0x16'))(_0x999e('0x17'));var utils=require(_0x999e('0x18'));var config=require(_0x999e('0x19'));var licenseUtil=require(_0x999e('0x1a'));var db=require(_0x999e('0x1b'))['db'];function respondWithStatusCode(_0x26b55a,_0x47a3c1){_0x47a3c1=_0x47a3c1||0xcc;return function(_0x15f771){if(_0x15f771){return _0x26b55a['sendStatus'](_0x47a3c1);}return _0x26b55a[_0x999e('0x1c')](_0x47a3c1)[_0x999e('0x1d')]();};}function respondWithResult(_0x2fbc3e,_0x538a92){_0x538a92=_0x538a92||0xc8;return function(_0x28bdd1){if(_0x28bdd1){return _0x2fbc3e['status'](_0x538a92)[_0x999e('0x1e')](_0x28bdd1);}};}function respondWithFilteredResult(_0x539598,_0x549ad4){return function(_0x1eee64){if(_0x1eee64){var _0x22feac=typeof _0x549ad4[_0x999e('0x1f')]===_0x999e('0x20')&&typeof _0x549ad4[_0x999e('0x21')]===_0x999e('0x20');var _0x4aac66=_0x1eee64['count'];var _0x4fcdfb=_0x22feac?0x0:_0x549ad4[_0x999e('0x1f')];var _0x43b09e=_0x22feac?_0x1eee64[_0x999e('0x22')]:_0x549ad4[_0x999e('0x1f')]+_0x549ad4[_0x999e('0x21')];var _0x3ece5e;if(_0x43b09e>=_0x4aac66){_0x43b09e=_0x4aac66;_0x3ece5e=0xc8;}else{_0x3ece5e=0xce;}_0x539598['status'](_0x3ece5e);return _0x539598['set'](_0x999e('0x23'),_0x4fcdfb+'-'+_0x43b09e+'/'+_0x4aac66)[_0x999e('0x1e')](_0x1eee64);}return null;};}function patchUpdates(_0x3b3642){return function(_0x510fa2){try{jsonpatch[_0x999e('0x24')](_0x510fa2,_0x3b3642,!![]);}catch(_0x42e167){return BPromise[_0x999e('0x25')](_0x42e167);}return _0x510fa2[_0x999e('0x26')]();};}function saveUpdates(_0x373b80,_0x3750a0){return function(_0x427bcf){if(_0x427bcf){return _0x427bcf['update'](_0x373b80)['then'](function(_0x11a6bf){return _0x11a6bf;});}return null;};}function removeEntity(_0x4f0091,_0x4c5491){return function(_0x452acd){if(_0x452acd){return _0x452acd[_0x999e('0x27')]()[_0x999e('0x28')](function(){var _0x13027c=_0x452acd[_0x999e('0x29')]({'plain':!![]});var _0x320634='Tags';return db[_0x999e('0x2a')][_0x999e('0x27')]({'where':{'type':_0x320634,'resourceId':_0x13027c['id']}})[_0x999e('0x28')](function(){return _0x452acd;});})[_0x999e('0x28')](function(){_0x4f0091[_0x999e('0x1c')](0xcc)[_0x999e('0x1d')]();});}};}function handleEntityNotFound(_0x44b790,_0x5798f3){return function(_0x28f803){if(!_0x28f803){_0x44b790['sendStatus'](0x194);}return _0x28f803;};}function handleError(_0x4fed13,_0x3dff6b){_0x3dff6b=_0x3dff6b||0x1f4;return function(_0x1059bd){logger[_0x999e('0x2b')](_0x1059bd['stack']);if(_0x1059bd[_0x999e('0x2c')]){delete _0x1059bd[_0x999e('0x2c')];}_0x4fed13[_0x999e('0x1c')](_0x3dff6b)[_0x999e('0x2d')](_0x1059bd);};}exports[_0x999e('0x2e')]=function(_0x327079,_0x82e067){var _0x2e9b0e={},_0x27102b={},_0x3ddacb={'count':0x0,'rows':[]};var _0x53ece1=_[_0x999e('0x2f')](db[_0x999e('0x30')][_0x999e('0x31')],function(_0x4c2ce8){return{'name':_0x4c2ce8[_0x999e('0x32')],'type':_0x4c2ce8['type']['key']};});_0x27102b[_0x999e('0x33')]=_[_0x999e('0x2f')](_0x53ece1,'name');_0x27102b['query']=_[_0x999e('0x34')](_0x327079[_0x999e('0x35')]);_0x27102b[_0x999e('0x36')]=_[_0x999e('0x37')](_0x27102b['model'],_0x27102b[_0x999e('0x35')]);_0x2e9b0e[_0x999e('0x38')]=_[_0x999e('0x37')](_0x27102b[_0x999e('0x33')],qs['fields'](_0x327079['query'][_0x999e('0x39')]));_0x2e9b0e['attributes']=_0x2e9b0e[_0x999e('0x38')][_0x999e('0x3a')]?_0x2e9b0e[_0x999e('0x38')]:_0x27102b[_0x999e('0x33')];if(!_0x327079['query'][_0x999e('0x3b')](_0x999e('0x3c'))){_0x2e9b0e['limit']=qs['limit'](_0x327079[_0x999e('0x35')]['limit']);_0x2e9b0e[_0x999e('0x1f')]=qs['offset'](_0x327079['query']['offset']);}_0x2e9b0e['order']=qs[_0x999e('0x3d')](_0x327079['query'][_0x999e('0x3d')]);_0x2e9b0e['where']=qs['filters'](_['pick'](_0x327079[_0x999e('0x35')],_0x27102b[_0x999e('0x36')]),_0x53ece1);if(_0x327079[_0x999e('0x35')][_0x999e('0x3e')]){_0x2e9b0e[_0x999e('0x3f')]=_[_0x999e('0x40')](_0x2e9b0e[_0x999e('0x3f')],{'$or':_[_0x999e('0x2f')](_0x53ece1,function(_0x54866a){if(_0x54866a[_0x999e('0x41')]!==_0x999e('0x42')){var _0x1e1229={};_0x1e1229[_0x54866a[_0x999e('0x2c')]]={'$like':'%'+_0x327079['query'][_0x999e('0x3e')]+'%'};return _0x1e1229;}})});}_0x2e9b0e=_['merge']({},_0x2e9b0e,_0x327079[_0x999e('0x43')]);var _0x35b318={'where':_0x2e9b0e[_0x999e('0x3f')]};return db[_0x999e('0x30')]['count'](_0x35b318)[_0x999e('0x28')](function(_0x108c96){_0x3ddacb[_0x999e('0x22')]=_0x108c96;if(_0x327079['query']['includeAll']){_0x2e9b0e[_0x999e('0x44')]=[{'all':!![]}];}return db[_0x999e('0x30')][_0x999e('0x45')](_0x2e9b0e);})[_0x999e('0x28')](function(_0x1009a0){_0x3ddacb[_0x999e('0x46')]=_0x1009a0;return _0x3ddacb;})[_0x999e('0x28')](respondWithFilteredResult(_0x82e067,_0x2e9b0e))[_0x999e('0x47')](handleError(_0x82e067,null));};exports[_0x999e('0x48')]=function(_0xf4fa,_0x55da0b){var _0x4c8b36={'raw':!![],'where':{'id':_0xf4fa[_0x999e('0x49')]['id']}},_0xa5742d={};_0xa5742d[_0x999e('0x33')]=_[_0x999e('0x34')](db[_0x999e('0x30')][_0x999e('0x31')]);_0xa5742d['query']=_[_0x999e('0x34')](_0xf4fa['query']);_0xa5742d['filters']=_[_0x999e('0x37')](_0xa5742d['model'],_0xa5742d['query']);_0x4c8b36['attributes']=_['intersection'](_0xa5742d[_0x999e('0x33')],qs[_0x999e('0x39')](_0xf4fa['query'][_0x999e('0x39')]));_0x4c8b36[_0x999e('0x38')]=_0x4c8b36[_0x999e('0x38')]['length']?_0x4c8b36['attributes']:_0xa5742d[_0x999e('0x33')];if(_0xf4fa[_0x999e('0x35')][_0x999e('0x4a')]){_0x4c8b36['include']=[{'all':!![]}];}_0x4c8b36=_['merge']({},_0x4c8b36,_0xf4fa['options']);return db['Tag'][_0x999e('0x4b')](_0x4c8b36)['then'](handleEntityNotFound(_0x55da0b,null))['then'](respondWithResult(_0x55da0b,null))[_0x999e('0x47')](handleError(_0x55da0b,null));};exports[_0x999e('0x4c')]=function(_0x5843f1,_0xa50dc6){return db[_0x999e('0x30')]['create'](_0x5843f1[_0x999e('0x4d')],{})['then'](function(_0x9322ca){var _0x42dfea=_0x5843f1['user'][_0x999e('0x29')]({'plain':!![]});if(!_0x42dfea)throw new Error(_0x999e('0x4e'));if(_0x42dfea['role']==='user'){var _0x254292=_0x9322ca['get']({'plain':!![]});var _0x5ebc95='Tags';return db[_0x999e('0x4f')][_0x999e('0x4b')]({'where':{'name':_0x5ebc95,'userProfileId':_0x42dfea[_0x999e('0x50')]},'raw':!![]})[_0x999e('0x28')](function(_0x37c3ff){if(_0x37c3ff&&_0x37c3ff[_0x999e('0x51')]===0x0){return db['UserProfileResource'][_0x999e('0x4c')]({'name':_0x254292[_0x999e('0x2c')],'resourceId':_0x254292['id'],'type':_0x37c3ff['name'],'sectionId':_0x37c3ff['id']},{})[_0x999e('0x28')](function(){return _0x9322ca;});}else{return _0x9322ca;}})[_0x999e('0x47')](function(_0x4169eb){logger[_0x999e('0x2b')](_0x999e('0x52'),_0x4169eb);throw _0x4169eb;});}return _0x9322ca;})[_0x999e('0x28')](respondWithResult(_0xa50dc6,0xc9))[_0x999e('0x47')](handleError(_0xa50dc6,null));};exports[_0x999e('0x53')]=function(_0x290c7a,_0x53932a){if(_0x290c7a[_0x999e('0x4d')]['id']){delete _0x290c7a[_0x999e('0x4d')]['id'];}return db[_0x999e('0x30')][_0x999e('0x4b')]({'where':{'id':_0x290c7a['params']['id']}})[_0x999e('0x28')](handleEntityNotFound(_0x53932a,null))[_0x999e('0x28')](saveUpdates(_0x290c7a[_0x999e('0x4d')],null))[_0x999e('0x28')](respondWithResult(_0x53932a,null))[_0x999e('0x47')](handleError(_0x53932a,null));};exports[_0x999e('0x27')]=function(_0x3f5790,_0x1a6925){return db['Tag']['find']({'where':{'id':_0x3f5790[_0x999e('0x49')]['id']}})[_0x999e('0x28')](handleEntityNotFound(_0x1a6925,null))[_0x999e('0x28')](removeEntity(_0x1a6925,null))[_0x999e('0x47')](handleError(_0x1a6925,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(_0x2ef6c6,_0x25e9e2){var _0x48b2ac=function(_0x3fb095){while(--_0x3fb095){_0x2ef6c6['push'](_0x2ef6c6['shift']());}};_0x48b2ac(++_0x25e9e2);}(_0x9a19,0x114));var _0x99a1=function(_0x2f5a22,_0x5e9f03){_0x2f5a22=_0x2f5a22-0x0;var _0x326b70=_0x9a19[_0x2f5a22];return _0x326b70;};'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 7e49a11..b1f8e33 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa12=['define','tools_tags','lodash','util','api','moment','bluebird','request-promise','rimraf','../../config/environment','./tag.attributes','exports'];(function(_0x34ee59,_0x46f5d6){var _0xf772bd=function(_0x40e8b0){while(--_0x40e8b0){_0x34ee59['push'](_0x34ee59['shift']());}};_0xf772bd(++_0x46f5d6);}(_0xfa12,0x1b2));var _0x2fa1=function(_0x1c9eb1,_0x2245a1){_0x1c9eb1=_0x1c9eb1-0x0;var _0x6acb80=_0xfa12[_0x1c9eb1];return _0x6acb80;};'use strict';var _=require(_0x2fa1('0x0'));var util=require(_0x2fa1('0x1'));var logger=require('../../config/logger')(_0x2fa1('0x2'));var moment=require(_0x2fa1('0x3'));var BPromise=require(_0x2fa1('0x4'));var rp=require(_0x2fa1('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x2fa1('0x6'));var config=require(_0x2fa1('0x7'));var attributes=require(_0x2fa1('0x8'));module[_0x2fa1('0x9')]=function(_0x4d61b0,_0x166949){return _0x4d61b0[_0x2fa1('0xa')]('Tag',attributes,{'tableName':_0x2fa1('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x85b4=['bluebird','request-promise','path','rimraf','../../config/environment','./tag.attributes','define','tools_tags','../../config/logger','moment'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0x85b4,0x17a));var _0x485b=function(_0x589bee,_0x3e06b9){_0x589bee=_0x589bee-0x0;var _0x58f126=_0x85b4[_0x589bee];return _0x58f126;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x485b('0x0'))('api');var moment=require(_0x485b('0x1'));var BPromise=require(_0x485b('0x2'));var rp=require(_0x485b('0x3'));var fs=require('fs');var path=require(_0x485b('0x4'));var rimraf=require(_0x485b('0x5'));var config=require(_0x485b('0x6'));var attributes=require(_0x485b('0x7'));module['exports']=function(_0x1ead41,_0x214345){return _0x1ead41[_0x485b('0x8')]('Tag',attributes,{'tableName':_0x485b('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9d9b198..8b69756 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a19=['catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','Tag,\x20%s,\x20%s','request\x20sent','debug','Tag,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result'];(function(_0x1ebe90,_0x5d29fc){var _0x447c82=function(_0x1c2646){while(--_0x1c2646){_0x1ebe90['push'](_0x1ebe90['shift']());}};_0x447c82(++_0x5d29fc);}(_0x9a19,0x114));var _0x99a1=function(_0x79b649,_0x2115b3){_0x79b649=_0x79b649-0x0;var _0x1af9b1=_0x9a19[_0x79b649];return _0x1af9b1;};'use strict';var _=require(_0x99a1('0x0'));var util=require(_0x99a1('0x1'));var moment=require(_0x99a1('0x2'));var BPromise=require('bluebird');var rs=require(_0x99a1('0x3'));var fs=require('fs');var Redis=require(_0x99a1('0x4'));var db=require(_0x99a1('0x5'))['db'];var utils=require(_0x99a1('0x6'));var logger=require(_0x99a1('0x7'))(_0x99a1('0x8'));var config=require(_0x99a1('0x9'));var jayson=require(_0x99a1('0xa'));var client=jayson[_0x99a1('0xb')][_0x99a1('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x65045d,_0x523b9e,_0x4d2a5c){return new BPromise(function(_0x5aa6c2,_0x56f50){return client[_0x99a1('0xd')](_0x65045d,_0x4d2a5c)['then'](function(_0x5874fc){logger[_0x99a1('0xe')](_0x99a1('0xf'),_0x523b9e,_0x99a1('0x10'));logger[_0x99a1('0x11')](_0x99a1('0x12'),_0x523b9e,'request\x20sent',JSON[_0x99a1('0x13')](_0x5874fc));if(_0x5874fc[_0x99a1('0x14')]){if(_0x5874fc[_0x99a1('0x14')][_0x99a1('0x15')]===0x1f4){logger[_0x99a1('0x14')](_0x99a1('0xf'),_0x523b9e,_0x5874fc[_0x99a1('0x14')][_0x99a1('0x16')]);return _0x56f50(_0x5874fc[_0x99a1('0x14')][_0x99a1('0x16')]);}logger[_0x99a1('0x14')](_0x99a1('0xf'),_0x523b9e,_0x5874fc[_0x99a1('0x14')][_0x99a1('0x16')]);return _0x5aa6c2(_0x5874fc[_0x99a1('0x14')]['message']);}else{logger[_0x99a1('0xe')](_0x99a1('0xf'),_0x523b9e,_0x99a1('0x10'));_0x5aa6c2(_0x5874fc[_0x99a1('0x17')][_0x99a1('0x16')]);}})[_0x99a1('0x18')](function(_0x1ca878){logger['error']('Tag,\x20%s,\x20%s',_0x523b9e,_0x1ca878);_0x56f50(_0x1ca878);});});}
\ No newline at end of file
+var _0x1cc7=['error','code','Tag,\x20%s,\x20%s','message','result','catch','lodash','util','moment','../../mysqldb','../../config/utils','../../config/logger','client','then','info','request\x20sent','stringify'];(function(_0x4a53d,_0x58a95e){var _0x27410e=function(_0x38fc90){while(--_0x38fc90){_0x4a53d['push'](_0x4a53d['shift']());}};_0x27410e(++_0x58a95e);}(_0x1cc7,0x15a));var _0x71cc=function(_0x479a2c,_0x286ab7){_0x479a2c=_0x479a2c-0x0;var _0xd62e98=_0x1cc7[_0x479a2c];return _0xd62e98;};'use strict';var _=require(_0x71cc('0x0'));var util=require(_0x71cc('0x1'));var moment=require(_0x71cc('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x71cc('0x3'))['db'];var utils=require(_0x71cc('0x4'));var logger=require(_0x71cc('0x5'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x71cc('0x6')]['http']({'port':0x232a});function respondWithRpcPromise(_0xc0444e,_0x41a004,_0x4039ce){return new BPromise(function(_0x2e70f0,_0x2b788c){return client['request'](_0xc0444e,_0x4039ce)[_0x71cc('0x7')](function(_0x322df2){logger[_0x71cc('0x8')]('Tag,\x20%s,\x20%s',_0x41a004,'request\x20sent');logger['debug']('Tag,\x20%s,\x20%s,\x20%s',_0x41a004,_0x71cc('0x9'),JSON[_0x71cc('0xa')](_0x322df2));if(_0x322df2[_0x71cc('0xb')]){if(_0x322df2['error'][_0x71cc('0xc')]===0x1f4){logger['error'](_0x71cc('0xd'),_0x41a004,_0x322df2['error'][_0x71cc('0xe')]);return _0x2b788c(_0x322df2['error'][_0x71cc('0xe')]);}logger[_0x71cc('0xb')](_0x71cc('0xd'),_0x41a004,_0x322df2[_0x71cc('0xb')][_0x71cc('0xe')]);return _0x2e70f0(_0x322df2['error'][_0x71cc('0xe')]);}else{logger[_0x71cc('0x8')](_0x71cc('0xd'),_0x41a004,_0x71cc('0x9'));_0x2e70f0(_0x322df2[_0x71cc('0xf')][_0x71cc('0xe')]);}})[_0x71cc('0x10')](function(_0x5eae5b){logger[_0x71cc('0xb')](_0x71cc('0xd'),_0x41a004,_0x5eae5b);_0x2b788c(_0x5eae5b);});});}
\ No newline at end of file
index 245f6fc..ac38080 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(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xa9e0,0x123));var _0x0a9e=function(_0x298ed3,_0x4ab5e1){_0x298ed3=_0x298ed3-0x0;var _0x5aad28=_0xa9e0[_0x298ed3];return _0x5aad28;};'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(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1cfa0d,_0x4391f2){_0x1cfa0d=_0x1cfa0d-0x0;var _0xe33279=_0xa9e0[_0x1cfa0d];return _0xe33279;};'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 93a5276..cd2b241 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['STRING','name'];(function(_0x129dc1,_0x785084){var _0x5d9862=function(_0x5f1495){while(--_0x5f1495){_0x129dc1['push'](_0x129dc1['shift']());}};_0x5d9862(++_0x785084);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x3071('0x0')],'allowNull':![],'unique':_0x3071('0x1')},'description':{'type':Sequelize[_0x3071('0x0')]}};
\ No newline at end of file
+var _0xd8b0=['exports','sequelize'];(function(_0x28891c,_0x135640){var _0x3a4249=function(_0x39011c){while(--_0x39011c){_0x28891c['push'](_0x28891c['shift']());}};_0x3a4249(++_0x135640);}(_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 b4218ba..63b393d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe0a9=['toLowerCase','Queues','add','ids','removeQueues','addAgents','isArray','Voice','Chat','Fax','Openchannel','through','penalty','QueueId','TeamVoiceQueue','User','Queue','findOrCreate','emit','Queue:save','online','voicePause','UserVoiceQueueRt','upsert','isNil','interface','format','SIP/%s','all','spread','removeAgents','Mail','Sms','Whatsapp','Queue:remove','nolimit','getAgents','zip-dir','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','./team.socket','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','update','then','error','name','map','Team','type','model','query','filters','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','keys','intersection','find','create','body','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','Teams','UserProfileSection','autoAssociation','UserProfileResource','destroy','sequelize','transaction','SELECT\x20UserId\x20FROM\x20user_has_teams\x20WHERE\x20TeamId\x20=\x20','SELECT','Sequelize','QueryTypes','VoiceQueueId','UserVoiceQueue','SELECT\x20MailQueueId\x20FROM\x20team_has_mail_queues\x20WHERE\x20TeamId\x20=\x20','MailQueueId','SELECT\x20SmsQueueId\x20FROM\x20team_has_sms_queues\x20WHERE\x20TeamId\x20=\x20','SmsQueueId','UserSmsQueue','SELECT\x20ChatQueueId\x20FROM\x20team_has_chat_queues\x20WHERE\x20TeamId\x20=\x20','ChatQueueId','UserChatQueue','FaxQueueId','UserFaxQueue','SELECT\x20OpenchannelQueueId\x20FROM\x20team_has_openchannel_queues\x20WHERE\x20TeamId\x20=\x20','OpenchannelQueueId','UserOpenchannelQueue','SELECT\x20WhatsappQueueId\x20FROM\x20team_has_whatsapp_queues\x20WHERE\x20TeamId\x20=\x20','TeamVoicePrefix','UserVoicePrefix','VoicePrefixId','send','findOne','channel','isValidChannel','ValidationError','Unknown\x20channel','capitalize'];(function(_0x29e0eb,_0x9acb52){var _0x597d2d=function(_0x596ef9){while(--_0x596ef9){_0x29e0eb['push'](_0x29e0eb['shift']());}};_0x597d2d(++_0x9acb52);}(_0xe0a9,0xba));var _0x9e0a=function(_0x3a27db,_0x4dead6){_0x3a27db=_0x3a27db-0x0;var _0x283475=_0xe0a9[_0x3a27db];return _0x283475;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x9e0a('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0x9e0a('0x1'));var moment=require(_0x9e0a('0x2'));var BPromise=require(_0x9e0a('0x3'));var Mustache=require(_0x9e0a('0x4'));var util=require(_0x9e0a('0x5'));var path=require('path');var sox=require(_0x9e0a('0x6'));var csv=require(_0x9e0a('0x7'));var ejs=require(_0x9e0a('0x8'));var fs=require('fs');var fs_extra=require(_0x9e0a('0x9'));var _=require(_0x9e0a('0xa'));var squel=require(_0x9e0a('0xb'));var crypto=require(_0x9e0a('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x9e0a('0xd'));var toCsv=require(_0x9e0a('0x7'));var querystring=require(_0x9e0a('0xe'));var Papa=require(_0x9e0a('0xf'));var Redis=require(_0x9e0a('0x10'));var authService=require(_0x9e0a('0x11'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x9e0a('0x12'))('api');var utils=require(_0x9e0a('0x13'));var config=require(_0x9e0a('0x14'));var licenseUtil=require(_0x9e0a('0x15'));var db=require(_0x9e0a('0x16'))['db'];config[_0x9e0a('0x17')]=_['defaults'](config[_0x9e0a('0x17')],{'host':_0x9e0a('0x18'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x9e0a('0x17')]));require(_0x9e0a('0x19'))['register'](socket);function respondWithStatusCode(_0x426ff8,_0x2363ba){_0x2363ba=_0x2363ba||0xcc;return function(_0x4c877b){if(_0x4c877b){return _0x426ff8['sendStatus'](_0x2363ba);}return _0x426ff8[_0x9e0a('0x1a')](_0x2363ba)[_0x9e0a('0x1b')]();};}function respondWithResult(_0xde76e3,_0x198913){_0x198913=_0x198913||0xc8;return function(_0x4cc455){if(_0x4cc455){return _0xde76e3[_0x9e0a('0x1a')](_0x198913)[_0x9e0a('0x1c')](_0x4cc455);}};}function respondWithFilteredResult(_0x48345d,_0x2eaf79){return function(_0x1769f8){if(_0x1769f8){var _0x4ef562=typeof _0x2eaf79[_0x9e0a('0x1d')]===_0x9e0a('0x1e')&&typeof _0x2eaf79[_0x9e0a('0x1f')]===_0x9e0a('0x1e');var _0x20a746=_0x1769f8[_0x9e0a('0x20')];var _0x4e73df=_0x4ef562?0x0:_0x2eaf79[_0x9e0a('0x1d')];var _0x389e70=_0x4ef562?_0x1769f8[_0x9e0a('0x20')]:_0x2eaf79[_0x9e0a('0x1d')]+_0x2eaf79['limit'];var _0x35c860;if(_0x389e70>=_0x20a746){_0x389e70=_0x20a746;_0x35c860=0xc8;}else{_0x35c860=0xce;}_0x48345d[_0x9e0a('0x1a')](_0x35c860);return _0x48345d[_0x9e0a('0x21')](_0x9e0a('0x22'),_0x4e73df+'-'+_0x389e70+'/'+_0x20a746)[_0x9e0a('0x1c')](_0x1769f8);}return null;};}function patchUpdates(_0xcc794d){return function(_0x24dace){try{jsonpatch['apply'](_0x24dace,_0xcc794d,!![]);}catch(_0x37d886){return BPromise[_0x9e0a('0x23')](_0x37d886);}return _0x24dace['save']();};}function saveUpdates(_0x53bfd6,_0x8c2d1){return function(_0x564109){if(_0x564109){return _0x564109[_0x9e0a('0x24')](_0x53bfd6)[_0x9e0a('0x25')](function(_0x2a4b2c){return _0x2a4b2c;});}return null;};}function handleEntityNotFound(_0x47e607,_0x24d886){return function(_0x4280bc){if(!_0x4280bc){_0x47e607['sendStatus'](0x194);}return _0x4280bc;};}function handleError(_0x6ef128,_0x19cfde){_0x19cfde=_0x19cfde||0x1f4;return function(_0x24feea){logger[_0x9e0a('0x26')](_0x24feea['stack']);if(_0x24feea[_0x9e0a('0x27')]){delete _0x24feea[_0x9e0a('0x27')];}_0x6ef128[_0x9e0a('0x1a')](_0x19cfde)['send'](_0x24feea);};}exports['index']=function(_0x53f6db,_0x519e9b){var _0x3cd4d6={},_0x1b2a24={},_0x54b651={'count':0x0,'rows':[]};var _0x3f20aa=_[_0x9e0a('0x28')](db[_0x9e0a('0x29')]['rawAttributes'],function(_0x1d86d){return{'name':_0x1d86d['fieldName'],'type':_0x1d86d[_0x9e0a('0x2a')]['key']};});_0x1b2a24[_0x9e0a('0x2b')]=_[_0x9e0a('0x28')](_0x3f20aa,'name');_0x1b2a24[_0x9e0a('0x2c')]=_['keys'](_0x53f6db[_0x9e0a('0x2c')]);_0x1b2a24[_0x9e0a('0x2d')]=_['intersection'](_0x1b2a24[_0x9e0a('0x2b')],_0x1b2a24['query']);_0x3cd4d6[_0x9e0a('0x2e')]=_['intersection'](_0x1b2a24[_0x9e0a('0x2b')],qs[_0x9e0a('0x2f')](_0x53f6db[_0x9e0a('0x2c')][_0x9e0a('0x2f')]));_0x3cd4d6[_0x9e0a('0x2e')]=_0x3cd4d6[_0x9e0a('0x2e')][_0x9e0a('0x30')]?_0x3cd4d6[_0x9e0a('0x2e')]:_0x1b2a24[_0x9e0a('0x2b')];if(!_0x53f6db['query'][_0x9e0a('0x31')]('nolimit')){_0x3cd4d6['limit']=qs[_0x9e0a('0x1f')](_0x53f6db[_0x9e0a('0x2c')][_0x9e0a('0x1f')]);_0x3cd4d6[_0x9e0a('0x1d')]=qs[_0x9e0a('0x1d')](_0x53f6db[_0x9e0a('0x2c')][_0x9e0a('0x1d')]);}_0x3cd4d6[_0x9e0a('0x32')]=qs[_0x9e0a('0x33')](_0x53f6db['query'][_0x9e0a('0x33')]);_0x3cd4d6[_0x9e0a('0x34')]=qs[_0x9e0a('0x2d')](_[_0x9e0a('0x35')](_0x53f6db[_0x9e0a('0x2c')],_0x1b2a24['filters']),_0x3f20aa);if(_0x53f6db['query'][_0x9e0a('0x36')]){_0x3cd4d6[_0x9e0a('0x34')]=_[_0x9e0a('0x37')](_0x3cd4d6[_0x9e0a('0x34')],{'$or':_['map'](_0x3f20aa,function(_0x55ce0f){if(_0x55ce0f['type']!==_0x9e0a('0x38')){var _0x86879={};_0x86879[_0x55ce0f[_0x9e0a('0x27')]]={'$like':'%'+_0x53f6db['query'][_0x9e0a('0x36')]+'%'};return _0x86879;}})});}_0x3cd4d6=_[_0x9e0a('0x37')]({},_0x3cd4d6,_0x53f6db[_0x9e0a('0x39')]);var _0x2d7b52={'where':_0x3cd4d6[_0x9e0a('0x34')]};return db[_0x9e0a('0x29')][_0x9e0a('0x20')](_0x2d7b52)['then'](function(_0x280265){_0x54b651[_0x9e0a('0x20')]=_0x280265;if(_0x53f6db['query'][_0x9e0a('0x3a')]){_0x3cd4d6[_0x9e0a('0x3b')]=[{'all':!![]}];}return db[_0x9e0a('0x29')][_0x9e0a('0x3c')](_0x3cd4d6);})[_0x9e0a('0x25')](function(_0x5dafcb){_0x54b651[_0x9e0a('0x3d')]=_0x5dafcb;return _0x54b651;})['then'](respondWithFilteredResult(_0x519e9b,_0x3cd4d6))[_0x9e0a('0x3e')](handleError(_0x519e9b,null));};exports[_0x9e0a('0x3f')]=function(_0x33e07c,_0x4974ea){var _0x306cbd={'raw':![],'where':{'id':_0x33e07c[_0x9e0a('0x40')]['id']}},_0x3716d1={};_0x3716d1[_0x9e0a('0x2b')]=_['keys'](db['Team'][_0x9e0a('0x41')]);_0x3716d1[_0x9e0a('0x2c')]=_[_0x9e0a('0x42')](_0x33e07c[_0x9e0a('0x2c')]);_0x3716d1[_0x9e0a('0x2d')]=_[_0x9e0a('0x43')](_0x3716d1[_0x9e0a('0x2b')],_0x3716d1[_0x9e0a('0x2c')]);_0x306cbd['attributes']=_[_0x9e0a('0x43')](_0x3716d1[_0x9e0a('0x2b')],qs[_0x9e0a('0x2f')](_0x33e07c['query'][_0x9e0a('0x2f')]));_0x306cbd[_0x9e0a('0x2e')]=_0x306cbd[_0x9e0a('0x2e')][_0x9e0a('0x30')]?_0x306cbd[_0x9e0a('0x2e')]:_0x3716d1[_0x9e0a('0x2b')];if(_0x33e07c[_0x9e0a('0x2c')]['includeAll']){_0x306cbd[_0x9e0a('0x3b')]=[{'all':!![]}];}_0x306cbd=_[_0x9e0a('0x37')]({},_0x306cbd,_0x33e07c['options']);return db[_0x9e0a('0x29')][_0x9e0a('0x44')](_0x306cbd)['then'](handleEntityNotFound(_0x4974ea,null))[_0x9e0a('0x25')](respondWithResult(_0x4974ea,null))[_0x9e0a('0x3e')](handleError(_0x4974ea,null));};exports[_0x9e0a('0x45')]=function(_0x311a3a,_0x3bebdc){return db['Team'][_0x9e0a('0x45')](_0x311a3a[_0x9e0a('0x46')],{})[_0x9e0a('0x25')](function(_0x5807ad){var _0x574935=_0x311a3a['user'][_0x9e0a('0x47')]({'plain':!![]});if(!_0x574935)throw new Error(_0x9e0a('0x48'));if(_0x574935[_0x9e0a('0x49')]===_0x9e0a('0x4a')){var _0x3bf38d=_0x5807ad[_0x9e0a('0x47')]({'plain':!![]});var _0x37dfe0=_0x9e0a('0x4b');return db[_0x9e0a('0x4c')][_0x9e0a('0x44')]({'where':{'name':_0x37dfe0,'userProfileId':_0x574935['userProfileId']},'raw':!![]})[_0x9e0a('0x25')](function(_0xf0bab0){if(_0xf0bab0&&_0xf0bab0[_0x9e0a('0x4d')]===0x0){return db[_0x9e0a('0x4e')][_0x9e0a('0x45')]({'name':_0x3bf38d['name'],'resourceId':_0x3bf38d['id'],'type':_0xf0bab0[_0x9e0a('0x27')],'sectionId':_0xf0bab0['id']},{})[_0x9e0a('0x25')](function(){return _0x5807ad;});}else{return _0x5807ad;}})['catch'](function(_0x2f0aab){logger[_0x9e0a('0x26')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x2f0aab);throw _0x2f0aab;});}return _0x5807ad;})[_0x9e0a('0x25')](respondWithResult(_0x3bebdc,0xc9))[_0x9e0a('0x3e')](handleError(_0x3bebdc,null));};exports[_0x9e0a('0x24')]=function(_0x3d91c7,_0x4efc95){if(_0x3d91c7[_0x9e0a('0x46')]['id']){delete _0x3d91c7[_0x9e0a('0x46')]['id'];}return db['Team'][_0x9e0a('0x44')]({'where':{'id':_0x3d91c7[_0x9e0a('0x40')]['id']}})['then'](handleEntityNotFound(_0x4efc95,null))['then'](saveUpdates(_0x3d91c7[_0x9e0a('0x46')],null))[_0x9e0a('0x25')](respondWithResult(_0x4efc95,null))[_0x9e0a('0x3e')](handleError(_0x4efc95,null));};exports[_0x9e0a('0x4f')]=function(_0x8add5b,_0xa3992c){var _0x66c089=_0x8add5b[_0x9e0a('0x40')]['id'];var _0x5630cf=[];return db[_0x9e0a('0x50')][_0x9e0a('0x51')](function(_0x1cde8c){var _0x520634=_0x9e0a('0x52')+_0x66c089;return db[_0x9e0a('0x50')][_0x9e0a('0x2c')](_0x520634,{'type':db['Sequelize']['QueryTypes'][_0x9e0a('0x53')],'raw':!![],'transaction':_0x1cde8c})[_0x9e0a('0x25')](function(_0x2b849e){_0x5630cf=_['map'](_0x2b849e,function(_0x40a81b){return Number(_0x40a81b['UserId']);});})[_0x9e0a('0x25')](function(){var _0x469c0c='SELECT\x20VoiceQueueId\x20FROM\x20team_has_voice_queues\x20WHERE\x20TeamId\x20=\x20'+_0x66c089;return db['sequelize'][_0x9e0a('0x2c')](_0x469c0c,{'type':db[_0x9e0a('0x54')][_0x9e0a('0x55')][_0x9e0a('0x53')],'raw':!![],'transaction':_0x1cde8c});})[_0x9e0a('0x25')](function(_0x161f4d){var _0x33b653=_[_0x9e0a('0x28')](_0x161f4d,function(_0x2362ee){return Number(_0x2362ee[_0x9e0a('0x56')]);});return db[_0x9e0a('0x57')][_0x9e0a('0x4f')]({'where':{'UserId':{'$in':_0x5630cf},'VoiceQueueId':{'$in':_0x33b653}},'transaction':_0x1cde8c});})[_0x9e0a('0x25')](function(){var _0x19897d=_0x9e0a('0x58')+_0x66c089;return db[_0x9e0a('0x50')]['query'](_0x19897d,{'type':db[_0x9e0a('0x54')][_0x9e0a('0x55')]['SELECT'],'raw':!![],'transaction':_0x1cde8c});})[_0x9e0a('0x25')](function(_0x210565){var _0x3b490c=_[_0x9e0a('0x28')](_0x210565,function(_0x1bf3f4){return Number(_0x1bf3f4[_0x9e0a('0x59')]);});return db['UserMailQueue'][_0x9e0a('0x4f')]({'where':{'UserId':{'$in':_0x5630cf},'MailQueueId':{'$in':_0x3b490c}},'transaction':_0x1cde8c});})['then'](function(){var _0x113267=_0x9e0a('0x5a')+_0x66c089;return db['sequelize'][_0x9e0a('0x2c')](_0x113267,{'type':db[_0x9e0a('0x54')][_0x9e0a('0x55')]['SELECT'],'raw':!![],'transaction':_0x1cde8c});})[_0x9e0a('0x25')](function(_0xe394bc){var _0x767d02=_[_0x9e0a('0x28')](_0xe394bc,function(_0x354834){return Number(_0x354834[_0x9e0a('0x5b')]);});return db[_0x9e0a('0x5c')][_0x9e0a('0x4f')]({'where':{'UserId':{'$in':_0x5630cf},'SmsQueueId':{'$in':_0x767d02}},'transaction':_0x1cde8c});})[_0x9e0a('0x25')](function(){var _0x4ca4c6=_0x9e0a('0x5d')+_0x66c089;return db['sequelize'][_0x9e0a('0x2c')](_0x4ca4c6,{'type':db[_0x9e0a('0x54')][_0x9e0a('0x55')][_0x9e0a('0x53')],'raw':!![],'transaction':_0x1cde8c});})[_0x9e0a('0x25')](function(_0x3936e9){var _0x56eb13=_[_0x9e0a('0x28')](_0x3936e9,function(_0x3763c5){return Number(_0x3763c5[_0x9e0a('0x5e')]);});return db[_0x9e0a('0x5f')]['destroy']({'where':{'UserId':{'$in':_0x5630cf},'ChatQueueId':{'$in':_0x56eb13}},'transaction':_0x1cde8c});})[_0x9e0a('0x25')](function(){var _0x453239='SELECT\x20FaxQueueId\x20FROM\x20team_has_fax_queues\x20WHERE\x20TeamId\x20=\x20'+_0x66c089;return db[_0x9e0a('0x50')][_0x9e0a('0x2c')](_0x453239,{'type':db[_0x9e0a('0x54')]['QueryTypes'][_0x9e0a('0x53')],'raw':!![],'transaction':_0x1cde8c});})[_0x9e0a('0x25')](function(_0x425679){var _0x19c620=_[_0x9e0a('0x28')](_0x425679,function(_0x14eb16){return Number(_0x14eb16[_0x9e0a('0x60')]);});return db[_0x9e0a('0x61')][_0x9e0a('0x4f')]({'where':{'UserId':{'$in':_0x5630cf},'FaxQueueId':{'$in':_0x19c620}},'transaction':_0x1cde8c});})['then'](function(){var _0x9059d7=_0x9e0a('0x62')+_0x66c089;return db[_0x9e0a('0x50')][_0x9e0a('0x2c')](_0x9059d7,{'type':db[_0x9e0a('0x54')][_0x9e0a('0x55')]['SELECT'],'raw':!![],'transaction':_0x1cde8c});})['then'](function(_0x50f9c2){var _0x237d17=_[_0x9e0a('0x28')](_0x50f9c2,function(_0x880131){return Number(_0x880131[_0x9e0a('0x63')]);});return db[_0x9e0a('0x64')][_0x9e0a('0x4f')]({'where':{'UserId':{'$in':_0x5630cf},'OpenchannelQueueId':{'$in':_0x237d17}},'transaction':_0x1cde8c});})[_0x9e0a('0x25')](function(){var _0x1182fc=_0x9e0a('0x65')+_0x66c089;return db['sequelize'][_0x9e0a('0x2c')](_0x1182fc,{'type':db[_0x9e0a('0x54')][_0x9e0a('0x55')][_0x9e0a('0x53')],'raw':!![],'transaction':_0x1cde8c});})['then'](function(_0x4ab90f){var _0x1e702e=_[_0x9e0a('0x28')](_0x4ab90f,function(_0x554235){return Number(_0x554235['WhatsappQueueId']);});return db['UserWhatsappQueue']['destroy']({'where':{'UserId':{'$in':_0x5630cf},'WhatsappQueueId':{'$in':_0x1e702e}},'transaction':_0x1cde8c});})[_0x9e0a('0x25')](function(){return db[_0x9e0a('0x66')]['find']({'where':{'TeamId':_0x66c089}});})[_0x9e0a('0x25')](function(_0xad85ab){if(_0xad85ab===null){return;}return db[_0x9e0a('0x67')][_0x9e0a('0x4f')]({'where':{'UserId':{'$in':_0x5630cf},'VoicePrefixId':_0xad85ab[_0x9e0a('0x68')]},'transaction':_0x1cde8c});})[_0x9e0a('0x25')](function(){return db['Team']['destroy']({'where':{'id':_0x66c089},'cascade':!![],'transaction':_0x1cde8c});})['then'](function(_0x4c18e7){if(_0x4c18e7===0x0){_0xa3992c['sendStatus'](0x194);}else{return db[_0x9e0a('0x4e')][_0x9e0a('0x4f')]({'where':{'type':_0x9e0a('0x4b'),'resourceId':_0x66c089},'cascade':!![],'transaction':_0x1cde8c})[_0x9e0a('0x25')](function(){_0xa3992c[_0x9e0a('0x1a')](0xcc)[_0x9e0a('0x1b')]();});}})[_0x9e0a('0x3e')](function(_0x3f84c6){_0xa3992c[_0x9e0a('0x1a')](0x1f4)[_0x9e0a('0x69')](_0x3f84c6);});});};exports['getQueues']=function(_0x411b3a,_0x1765e9,_0x24a633){return db[_0x9e0a('0x29')][_0x9e0a('0x6a')]({'where':{'id':_0x411b3a[_0x9e0a('0x40')]['id']}})[_0x9e0a('0x25')](handleEntityNotFound(_0x1765e9,null))[_0x9e0a('0x25')](function(_0x2a8d13){if(!_0x411b3a['query'][_0x9e0a('0x6b')]||!utils[_0x9e0a('0x6c')](_0x411b3a[_0x9e0a('0x2c')][_0x9e0a('0x6b')])){throw new db['Sequelize'][(_0x9e0a('0x6d'))](_0x9e0a('0x6e'));}var _0x31ae7d={};var _0x270219={};_0x270219[_0x9e0a('0x2b')]=_['keys'](db[_[_0x9e0a('0x6f')](_0x411b3a[_0x9e0a('0x2c')][_0x9e0a('0x6b')][_0x9e0a('0x70')]())+'Queue'][_0x9e0a('0x41')]);_0x270219[_0x9e0a('0x2c')]=_[_0x9e0a('0x42')](_0x411b3a[_0x9e0a('0x2c')]);_0x270219[_0x9e0a('0x2d')]=_[_0x9e0a('0x43')](_0x270219[_0x9e0a('0x2b')],_0x270219[_0x9e0a('0x2c')]);_0x31ae7d['attributes']=_[_0x9e0a('0x43')](_0x270219[_0x9e0a('0x2b')],qs['fields'](_0x411b3a[_0x9e0a('0x2c')][_0x9e0a('0x2f')]));_0x31ae7d[_0x9e0a('0x2e')]=_0x31ae7d['attributes'][_0x9e0a('0x30')]?_0x31ae7d[_0x9e0a('0x2e')]:_0x270219[_0x9e0a('0x2b')];_0x31ae7d[_0x9e0a('0x1f')]=qs[_0x9e0a('0x1f')](_0x411b3a[_0x9e0a('0x2c')]['limit']);_0x31ae7d['offset']=qs[_0x9e0a('0x1d')](_0x411b3a[_0x9e0a('0x2c')][_0x9e0a('0x1d')]);_0x31ae7d[_0x9e0a('0x32')]=qs[_0x9e0a('0x33')](_0x411b3a[_0x9e0a('0x2c')][_0x9e0a('0x33')]);_0x31ae7d[_0x9e0a('0x34')]=qs[_0x9e0a('0x2d')](_['pick'](_0x411b3a['query'],_0x270219[_0x9e0a('0x2d')]));_0x31ae7d=_['merge']({},_0x31ae7d,_0x411b3a['options']);return _0x2a8d13[_0x9e0a('0x47')+_['capitalize'](_0x411b3a['query']['channel'][_0x9e0a('0x70')]())+_0x9e0a('0x71')](_0x31ae7d);})[_0x9e0a('0x25')](respondWithResult(_0x1765e9,null))[_0x9e0a('0x3e')](handleError(_0x1765e9,null));};exports['addQueues']=function(_0x12336f,_0x553be4,_0x26aed0){return db[_0x9e0a('0x29')]['findOne']({'where':{'id':_0x12336f[_0x9e0a('0x40')]['id']}})[_0x9e0a('0x25')](function(_0x10b567){if(_0x10b567){if(!_0x12336f[_0x9e0a('0x46')]['channel']||!utils[_0x9e0a('0x6c')](_0x12336f[_0x9e0a('0x46')][_0x9e0a('0x6b')])){throw new db[(_0x9e0a('0x54'))]['ValidationError'](_0x9e0a('0x6e'));}return _0x10b567[_0x9e0a('0x72')+_[_0x9e0a('0x6f')](_0x12336f[_0x9e0a('0x46')]['channel'][_0x9e0a('0x70')]())+_0x9e0a('0x71')](_0x12336f['body'][_0x9e0a('0x73')]);}return null;})[_0x9e0a('0x25')](handleEntityNotFound(_0x553be4,null))['then'](respondWithStatusCode(_0x553be4,null))['catch'](handleError(_0x553be4,null));};exports[_0x9e0a('0x74')]=function(_0x238a36,_0x3efb16,_0x18bc10){return db['Team'][_0x9e0a('0x6a')]({'where':{'id':_0x238a36[_0x9e0a('0x40')]['id']}})[_0x9e0a('0x25')](function(_0x3124e2){if(_0x3124e2){if(!_0x238a36['query'][_0x9e0a('0x6b')]||!utils[_0x9e0a('0x6c')](_0x238a36[_0x9e0a('0x2c')][_0x9e0a('0x6b')])){throw new db[(_0x9e0a('0x54'))][(_0x9e0a('0x6d'))](_0x9e0a('0x6e'));}return _0x3124e2['remove'+_['capitalize'](_0x238a36[_0x9e0a('0x2c')][_0x9e0a('0x6b')][_0x9e0a('0x70')]())+_0x9e0a('0x71')](_0x238a36[_0x9e0a('0x2c')][_0x9e0a('0x73')]);}return null;})[_0x9e0a('0x25')](handleEntityNotFound(_0x3efb16,null))[_0x9e0a('0x25')](respondWithStatusCode(_0x3efb16,null))[_0x9e0a('0x3e')](handleError(_0x3efb16,null));};exports[_0x9e0a('0x75')]=function(_0x273ab9,_0x31a2e1){var _0x447fc2=_[_0x9e0a('0x76')](_0x273ab9[_0x9e0a('0x46')]['ids'])?_0x273ab9[_0x9e0a('0x46')][_0x9e0a('0x73')]:[_0x273ab9[_0x9e0a('0x46')]['ids']];var _0x3dcdfb=_0x273ab9[_0x9e0a('0x40')]['id'];return db[_0x9e0a('0x29')]['find']({'where':{'id':_0x3dcdfb}})[_0x9e0a('0x25')](handleEntityNotFound(_0x31a2e1,null))['then'](function(_0x406a64){if(_0x406a64){var _0x3e837f=[_0x9e0a('0x77'),_0x9e0a('0x78'),'Mail','Sms',_0x9e0a('0x79'),_0x9e0a('0x7a'),'Whatsapp'];return db[_0x9e0a('0x50')][_0x9e0a('0x51')](function(_0x4e6b2f){var _0x2d4d34=_[_0x9e0a('0x28')](_0x3e837f,function(_0x421e6c){var _0x2d00b3={'attributes':['id',_0x9e0a('0x27')]};if(_0x421e6c===_0x9e0a('0x77')){_0x2d00b3[_0x9e0a('0x7b')]={'attributes':[_0x9e0a('0x7c')]};}return _0x406a64[_0x9e0a('0x47')+_0x421e6c+_0x9e0a('0x71')](_0x2d00b3)[_0x9e0a('0x25')](function(_0x47e32a){var _0x7ea662=_[_0x9e0a('0x28')](_0x47e32a,function(_0x21a135){var _0x45ab2d=_[_0x9e0a('0x28')](_0x447fc2,function(_0x1c890f){var _0x5aee6a={'where':{'UserId':_0x1c890f,[_0x421e6c+_0x9e0a('0x7d')]:_0x21a135['id']},'transaction':_0x4e6b2f};if(_0x421e6c===_0x9e0a('0x77')){_0x5aee6a['defaults']={'penalty':_0x21a135[_0x9e0a('0x7e')][_0x9e0a('0x7c')]};}return db[_0x9e0a('0x7f')+_0x421e6c+_0x9e0a('0x80')][_0x9e0a('0x81')](_0x5aee6a)['then'](function(){socket[_0x9e0a('0x82')](_0x9e0a('0x4a')+_0x421e6c+_0x9e0a('0x83'),{'UserId':_0x1c890f,[_0x421e6c+'QueueId']:_0x21a135['id']});if(_0x421e6c!==_0x9e0a('0x77')){return;}return db['User']['findAll']({'where':{'id':_0x447fc2,'online':0x1},'attributes':['id',_0x9e0a('0x27'),_0x9e0a('0x84'),_0x9e0a('0x85'),'interface'],'raw':!![]})['then'](function(_0x4f4f19){var _0x3a27c8=_['map'](_0x4f4f19,function(_0x5b85e6){return db[_0x9e0a('0x86')][_0x9e0a('0x87')]({'membername':_0x5b85e6[_0x9e0a('0x27')],'UserId':_0x5b85e6['id'],'queue_name':_0x21a135[_0x9e0a('0x27')],'VoiceQueueId':_0x21a135['id'],'interface':_[_0x9e0a('0x88')](_0x5b85e6[_0x9e0a('0x89')])?util[_0x9e0a('0x8a')](_0x9e0a('0x8b'),_0x5b85e6[_0x9e0a('0x27')]):_0x5b85e6[_0x9e0a('0x89')],'paused':_0x5b85e6[_0x9e0a('0x85')]||![],'penalty':_0x21a135[_0x9e0a('0x7e')][_0x9e0a('0x7c')]},{'transaction':_0x4e6b2f});});return Promise['all'](_0x3a27c8);});});});return Promise[_0x9e0a('0x8c')](_0x45ab2d);});return Promise['all'](_0x7ea662);})[_0x9e0a('0x25')](function(){return db[_0x9e0a('0x66')]['findOne']({'where':{'teamId':_0x3dcdfb}})['then'](function(_0x4d2631){if(_0x4d2631){var _0x515082=_[_0x9e0a('0x28')](_0x447fc2,function(_0x484ff2){db[_0x9e0a('0x67')]['upsert']({'UserId':_0x484ff2,'VoicePrefixId':_0x4d2631[_0x9e0a('0x68')]});});return Promise['all'](_0x515082);}});});});return Promise[_0x9e0a('0x8c')](_0x2d4d34)['then'](function(){return _0x406a64[_0x9e0a('0x75')](_0x447fc2,{'transaction':_0x4e6b2f})[_0x9e0a('0x8d')](function(_0x4d6d8c){return _0x4d6d8c;});});});}})[_0x9e0a('0x25')](respondWithResult(_0x31a2e1,null))[_0x9e0a('0x3e')](handleError(_0x31a2e1,null));};exports[_0x9e0a('0x8e')]=function(_0x19d223,_0x5bd98a){var _0x166d49=_[_0x9e0a('0x76')](_0x19d223['query'][_0x9e0a('0x73')])?_0x19d223['query'][_0x9e0a('0x73')]:[_0x19d223[_0x9e0a('0x2c')][_0x9e0a('0x73')]];var _0x52d663=_0x19d223['params']['id'];return db[_0x9e0a('0x29')][_0x9e0a('0x44')]({'where':{'id':_0x52d663}})[_0x9e0a('0x25')](handleEntityNotFound(_0x5bd98a,null))[_0x9e0a('0x25')](function(_0x531d2c){if(_0x531d2c){var _0x51cf34=[_0x9e0a('0x77'),_0x9e0a('0x78'),_0x9e0a('0x8f'),_0x9e0a('0x90'),_0x9e0a('0x79'),_0x9e0a('0x7a'),_0x9e0a('0x91')];return db[_0x9e0a('0x50')][_0x9e0a('0x51')](function(_0x4c7511){var _0x18f154=_['map'](_0x51cf34,function(_0x52921e){var _0xe79a96={'attributes':['id',_0x9e0a('0x27')]};return _0x531d2c['get'+_0x52921e+_0x9e0a('0x71')](_0xe79a96)[_0x9e0a('0x25')](function(_0x21b96d){var _0xe3393f=_[_0x9e0a('0x28')](_0x21b96d,function(_0x2f35ae){return _0x2f35ae['removeAgents'](_0x166d49,{'transaction':_0x4c7511})[_0x9e0a('0x25')](function(){var _0x4c5f09=_[_0x9e0a('0x28')](_0x166d49,function(_0x49f021){socket[_0x9e0a('0x82')](_0x9e0a('0x4a')+_0x52921e+_0x9e0a('0x92'),{'UserId':Number(_0x49f021),[_0x52921e+_0x9e0a('0x7d')]:_0x2f35ae['id']});if(_0x52921e!==_0x9e0a('0x77')){return;}return db['UserVoiceQueueRt'][_0x9e0a('0x4f')]({'where':{'VoiceQueueId':_0x2f35ae['id'],'UserId':_0x49f021},'transaction':_0x4c7511});});return Promise[_0x9e0a('0x8c')](_0x4c5f09);});});return Promise[_0x9e0a('0x8c')](_0xe3393f);});});return Promise[_0x9e0a('0x8c')](_0x18f154)[_0x9e0a('0x25')](function(){return _0x531d2c[_0x9e0a('0x8e')](_0x166d49,{'transaction':_0x4c7511});})[_0x9e0a('0x25')](function(){return db[_0x9e0a('0x66')][_0x9e0a('0x6a')]({'where':{'teamId':_0x52d663}})[_0x9e0a('0x25')](function(_0x12b5c3){if(_0x12b5c3){var _0x141488=_[_0x9e0a('0x28')](_0x166d49,function(_0x2c6cac){db[_0x9e0a('0x67')][_0x9e0a('0x4f')]({'where':{'UserId':_0x2c6cac,'VoicePrefixId':_0x12b5c3[_0x9e0a('0x68')]}});});return Promise[_0x9e0a('0x8c')](_0x141488);}});});});}})['then'](respondWithStatusCode(_0x5bd98a,null))[_0x9e0a('0x3e')](handleError(_0x5bd98a,null));};exports['getAgents']=function(_0x2b194b,_0x201734,_0x29ef47){var _0x3c3b21={};var _0x392eb6={};var _0x18f4d7;var _0x150eb5;return db[_0x9e0a('0x29')][_0x9e0a('0x6a')]({'where':{'id':_0x2b194b[_0x9e0a('0x40')]['id']}})[_0x9e0a('0x25')](handleEntityNotFound(_0x201734,null))['then'](function(_0x38a963){if(_0x38a963){_0x18f4d7=_0x38a963;_0x392eb6[_0x9e0a('0x2b')]=_[_0x9e0a('0x42')](db[_0x9e0a('0x7f')][_0x9e0a('0x41')]);_0x392eb6[_0x9e0a('0x2c')]=_[_0x9e0a('0x42')](_0x2b194b[_0x9e0a('0x2c')]);_0x392eb6[_0x9e0a('0x2d')]=_[_0x9e0a('0x43')](_0x392eb6[_0x9e0a('0x2b')],_0x392eb6[_0x9e0a('0x2c')]);_0x3c3b21[_0x9e0a('0x2e')]=_[_0x9e0a('0x43')](_0x392eb6[_0x9e0a('0x2b')],qs[_0x9e0a('0x2f')](_0x2b194b[_0x9e0a('0x2c')][_0x9e0a('0x2f')]));_0x3c3b21[_0x9e0a('0x2e')]=_0x3c3b21[_0x9e0a('0x2e')][_0x9e0a('0x30')]?_0x3c3b21['attributes']:_0x392eb6[_0x9e0a('0x2b')];_0x3c3b21[_0x9e0a('0x32')]=qs[_0x9e0a('0x33')](_0x2b194b[_0x9e0a('0x2c')][_0x9e0a('0x33')]);_0x3c3b21['where']=qs[_0x9e0a('0x2d')](_[_0x9e0a('0x35')](_0x2b194b[_0x9e0a('0x2c')],_0x392eb6['filters']));if(_0x2b194b[_0x9e0a('0x2c')][_0x9e0a('0x36')]){_0x3c3b21['where']=_[_0x9e0a('0x37')](_0x3c3b21[_0x9e0a('0x34')],{'$or':_[_0x9e0a('0x28')](_0x3c3b21[_0x9e0a('0x2e')],function(_0x108323){var _0x47619d={};_0x47619d[_0x108323]={'$like':'%'+_0x2b194b[_0x9e0a('0x2c')][_0x9e0a('0x36')]+'%'};return _0x47619d;})});}_0x3c3b21=_[_0x9e0a('0x37')]({},_0x3c3b21,_0x2b194b[_0x9e0a('0x39')]);return _0x18f4d7['getAgents'](_0x3c3b21);}})['then'](function(_0x383a51){if(_0x383a51){_0x150eb5=_0x383a51[_0x9e0a('0x30')];if(!_0x2b194b[_0x9e0a('0x2c')][_0x9e0a('0x31')](_0x9e0a('0x93'))){_0x3c3b21[_0x9e0a('0x1f')]=qs[_0x9e0a('0x1f')](_0x2b194b['query'][_0x9e0a('0x1f')]);_0x3c3b21[_0x9e0a('0x1d')]=qs[_0x9e0a('0x1d')](_0x2b194b[_0x9e0a('0x2c')]['offset']);}return _0x18f4d7[_0x9e0a('0x94')](_0x3c3b21);}})[_0x9e0a('0x25')](function(_0x21123e){if(_0x21123e){return _0x21123e?{'count':_0x150eb5,'rows':_0x21123e}:null;}})['then'](respondWithResult(_0x201734,null))[_0x9e0a('0x3e')](handleError(_0x201734,null));};
\ No newline at end of file
+var _0x122e=['error','stack','name','send','index','map','Team','rawAttributes','fieldName','type','key','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','params','find','body','user','Teams','UserProfileSection','userProfileId','UserProfileResource','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','sequelize','transaction','SELECT\x20UserId\x20FROM\x20user_has_teams\x20WHERE\x20TeamId\x20=\x20','Sequelize','QueryTypes','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','MailQueueId','destroy','SELECT\x20SmsQueueId\x20FROM\x20team_has_sms_queues\x20WHERE\x20TeamId\x20=\x20','SmsQueueId','UserSmsQueue','UserChatQueue','SELECT\x20FaxQueueId\x20FROM\x20team_has_fax_queues\x20WHERE\x20TeamId\x20=\x20','SELECT\x20OpenchannelQueueId\x20FROM\x20team_has_openchannel_queues\x20WHERE\x20TeamId\x20=\x20','OpenchannelQueueId','UserOpenchannelQueue','SELECT\x20WhatsappQueueId\x20FROM\x20team_has_whatsapp_queues\x20WHERE\x20TeamId\x20=\x20','TeamVoicePrefix','UserVoicePrefix','getQueues','findOne','isValidChannel','channel','ValidationError','Unknown\x20channel','capitalize','toLowerCase','pick','get','Queues','addQueues','add','ids','remove','addAgents','Voice','Chat','Sms','Fax','Whatsapp','penalty','QueueId','User','Queue','findOrCreate','emit','Queue:save','online','UserVoiceQueueRt','isNil','interface','format','SIP/%s','voicePause','TeamVoiceQueue','all','upsert','VoicePrefixId','spread','isArray','Mail','Openchannel','removeAgents','getAgents','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','util','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','defaults','redis','socket.io-emitter','register','status','end','json','offset','undefined','limit','count','apply','reject','update','then','sendStatus'];(function(_0x4b65d2,_0x99cc45){var _0x1a954d=function(_0x28f9fc){while(--_0x28f9fc){_0x4b65d2['push'](_0x4b65d2['shift']());}};_0x1a954d(++_0x99cc45);}(_0x122e,0x6f));var _0xe122=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x122e[_0x321bb2];return _0x9c12ed;};'use strict';var emlformat=require(_0xe122('0x0'));var rimraf=require(_0xe122('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xe122('0x2'));var rp=require(_0xe122('0x3'));var moment=require(_0xe122('0x4'));var BPromise=require(_0xe122('0x5'));var Mustache=require('mustache');var util=require(_0xe122('0x6'));var path=require('path');var sox=require(_0xe122('0x7'));var csv=require('to-csv');var ejs=require(_0xe122('0x8'));var fs=require('fs');var fs_extra=require(_0xe122('0x9'));var _=require(_0xe122('0xa'));var squel=require(_0xe122('0xb'));var crypto=require(_0xe122('0xc'));var jsforce=require(_0xe122('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xe122('0xe'));var querystring=require(_0xe122('0xf'));var Papa=require(_0xe122('0x10'));var Redis=require(_0xe122('0x11'));var authService=require(_0xe122('0x12'));var qs=require(_0xe122('0x13'));var as=require(_0xe122('0x14'));var hardwareService=require(_0xe122('0x15'));var logger=require('../../config/logger')('api');var utils=require(_0xe122('0x16'));var config=require(_0xe122('0x17'));var licenseUtil=require(_0xe122('0x18'));var db=require('../../mysqldb')['db'];config['redis']=_[_0xe122('0x19')](config[_0xe122('0x1a')],{'host':'localhost','port':0x18eb});var socket=require(_0xe122('0x1b'))(new Redis(config[_0xe122('0x1a')]));require('./team.socket')[_0xe122('0x1c')](socket);function respondWithStatusCode(_0x1ff672,_0x16059d){_0x16059d=_0x16059d||0xcc;return function(_0x547a2b){if(_0x547a2b){return _0x1ff672['sendStatus'](_0x16059d);}return _0x1ff672[_0xe122('0x1d')](_0x16059d)[_0xe122('0x1e')]();};}function respondWithResult(_0x23289a,_0x402931){_0x402931=_0x402931||0xc8;return function(_0x2042cb){if(_0x2042cb){return _0x23289a[_0xe122('0x1d')](_0x402931)[_0xe122('0x1f')](_0x2042cb);}};}function respondWithFilteredResult(_0x2512db,_0x1099bc){return function(_0x4722f7){if(_0x4722f7){var _0x1f035c=typeof _0x1099bc[_0xe122('0x20')]===_0xe122('0x21')&&typeof _0x1099bc[_0xe122('0x22')]==='undefined';var _0x5706ad=_0x4722f7[_0xe122('0x23')];var _0x5ba613=_0x1f035c?0x0:_0x1099bc[_0xe122('0x20')];var _0x490deb=_0x1f035c?_0x4722f7['count']:_0x1099bc[_0xe122('0x20')]+_0x1099bc[_0xe122('0x22')];var _0x2166d7;if(_0x490deb>=_0x5706ad){_0x490deb=_0x5706ad;_0x2166d7=0xc8;}else{_0x2166d7=0xce;}_0x2512db[_0xe122('0x1d')](_0x2166d7);return _0x2512db['set']('Content-Range',_0x5ba613+'-'+_0x490deb+'/'+_0x5706ad)[_0xe122('0x1f')](_0x4722f7);}return null;};}function patchUpdates(_0x4982e0){return function(_0x4a71a4){try{jsonpatch[_0xe122('0x24')](_0x4a71a4,_0x4982e0,!![]);}catch(_0x54a7e2){return BPromise[_0xe122('0x25')](_0x54a7e2);}return _0x4a71a4['save']();};}function saveUpdates(_0x19cb2d,_0x7ae1f0){return function(_0x348f77){if(_0x348f77){return _0x348f77[_0xe122('0x26')](_0x19cb2d)[_0xe122('0x27')](function(_0x505eed){return _0x505eed;});}return null;};}function handleEntityNotFound(_0x29c2a6,_0x3d7102){return function(_0x1b8407){if(!_0x1b8407){_0x29c2a6[_0xe122('0x28')](0x194);}return _0x1b8407;};}function handleError(_0x188d3c,_0x28e851){_0x28e851=_0x28e851||0x1f4;return function(_0x4ce6c3){logger[_0xe122('0x29')](_0x4ce6c3[_0xe122('0x2a')]);if(_0x4ce6c3[_0xe122('0x2b')]){delete _0x4ce6c3[_0xe122('0x2b')];}_0x188d3c[_0xe122('0x1d')](_0x28e851)[_0xe122('0x2c')](_0x4ce6c3);};}exports[_0xe122('0x2d')]=function(_0x59cf20,_0x370cb6){var _0x2958e9={},_0xfaebef={},_0x3b7be1={'count':0x0,'rows':[]};var _0x94fd0b=_[_0xe122('0x2e')](db[_0xe122('0x2f')][_0xe122('0x30')],function(_0x1bf47){return{'name':_0x1bf47[_0xe122('0x31')],'type':_0x1bf47[_0xe122('0x32')][_0xe122('0x33')]};});_0xfaebef[_0xe122('0x34')]=_[_0xe122('0x2e')](_0x94fd0b,_0xe122('0x2b'));_0xfaebef['query']=_[_0xe122('0x35')](_0x59cf20[_0xe122('0x36')]);_0xfaebef['filters']=_[_0xe122('0x37')](_0xfaebef[_0xe122('0x34')],_0xfaebef['query']);_0x2958e9[_0xe122('0x38')]=_[_0xe122('0x37')](_0xfaebef[_0xe122('0x34')],qs[_0xe122('0x39')](_0x59cf20[_0xe122('0x36')]['fields']));_0x2958e9[_0xe122('0x38')]=_0x2958e9['attributes'][_0xe122('0x3a')]?_0x2958e9[_0xe122('0x38')]:_0xfaebef[_0xe122('0x34')];if(!_0x59cf20[_0xe122('0x36')][_0xe122('0x3b')](_0xe122('0x3c'))){_0x2958e9['limit']=qs[_0xe122('0x22')](_0x59cf20[_0xe122('0x36')][_0xe122('0x22')]);_0x2958e9['offset']=qs[_0xe122('0x20')](_0x59cf20[_0xe122('0x36')][_0xe122('0x20')]);}_0x2958e9[_0xe122('0x3d')]=qs[_0xe122('0x3e')](_0x59cf20[_0xe122('0x36')][_0xe122('0x3e')]);_0x2958e9[_0xe122('0x3f')]=qs['filters'](_['pick'](_0x59cf20[_0xe122('0x36')],_0xfaebef[_0xe122('0x40')]),_0x94fd0b);if(_0x59cf20[_0xe122('0x36')][_0xe122('0x41')]){_0x2958e9[_0xe122('0x3f')]=_[_0xe122('0x42')](_0x2958e9[_0xe122('0x3f')],{'$or':_['map'](_0x94fd0b,function(_0x12b18c){if(_0x12b18c[_0xe122('0x32')]!==_0xe122('0x43')){var _0x17f349={};_0x17f349[_0x12b18c[_0xe122('0x2b')]]={'$like':'%'+_0x59cf20[_0xe122('0x36')][_0xe122('0x41')]+'%'};return _0x17f349;}})});}_0x2958e9=_[_0xe122('0x42')]({},_0x2958e9,_0x59cf20[_0xe122('0x44')]);var _0x4f74a0={'where':_0x2958e9[_0xe122('0x3f')]};return db[_0xe122('0x2f')][_0xe122('0x23')](_0x4f74a0)[_0xe122('0x27')](function(_0x4d0901){_0x3b7be1[_0xe122('0x23')]=_0x4d0901;if(_0x59cf20[_0xe122('0x36')][_0xe122('0x45')]){_0x2958e9[_0xe122('0x46')]=[{'all':!![]}];}return db[_0xe122('0x2f')][_0xe122('0x47')](_0x2958e9);})[_0xe122('0x27')](function(_0x3dd13c){_0x3b7be1[_0xe122('0x48')]=_0x3dd13c;return _0x3b7be1;})[_0xe122('0x27')](respondWithFilteredResult(_0x370cb6,_0x2958e9))[_0xe122('0x49')](handleError(_0x370cb6,null));};exports['show']=function(_0x422f9d,_0x2c51b){var _0x13ef82={'raw':![],'where':{'id':_0x422f9d[_0xe122('0x4a')]['id']}},_0x392ff2={};_0x392ff2[_0xe122('0x34')]=_[_0xe122('0x35')](db[_0xe122('0x2f')][_0xe122('0x30')]);_0x392ff2['query']=_[_0xe122('0x35')](_0x422f9d[_0xe122('0x36')]);_0x392ff2[_0xe122('0x40')]=_[_0xe122('0x37')](_0x392ff2[_0xe122('0x34')],_0x392ff2['query']);_0x13ef82[_0xe122('0x38')]=_[_0xe122('0x37')](_0x392ff2[_0xe122('0x34')],qs['fields'](_0x422f9d[_0xe122('0x36')][_0xe122('0x39')]));_0x13ef82[_0xe122('0x38')]=_0x13ef82[_0xe122('0x38')][_0xe122('0x3a')]?_0x13ef82[_0xe122('0x38')]:_0x392ff2[_0xe122('0x34')];if(_0x422f9d[_0xe122('0x36')][_0xe122('0x45')]){_0x13ef82[_0xe122('0x46')]=[{'all':!![]}];}_0x13ef82=_[_0xe122('0x42')]({},_0x13ef82,_0x422f9d['options']);return db[_0xe122('0x2f')][_0xe122('0x4b')](_0x13ef82)['then'](handleEntityNotFound(_0x2c51b,null))[_0xe122('0x27')](respondWithResult(_0x2c51b,null))[_0xe122('0x49')](handleError(_0x2c51b,null));};exports['create']=function(_0x2dccd1,_0x17ebbf){return db[_0xe122('0x2f')]['create'](_0x2dccd1[_0xe122('0x4c')],{})['then'](function(_0x3484b6){var _0x1f7fc2=_0x2dccd1[_0xe122('0x4d')]['get']({'plain':!![]});if(!_0x1f7fc2)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1f7fc2['role']===_0xe122('0x4d')){var _0xa485a1=_0x3484b6['get']({'plain':!![]});var _0x45f2c5=_0xe122('0x4e');return db[_0xe122('0x4f')][_0xe122('0x4b')]({'where':{'name':_0x45f2c5,'userProfileId':_0x1f7fc2[_0xe122('0x50')]},'raw':!![]})[_0xe122('0x27')](function(_0x4c4f32){if(_0x4c4f32&&_0x4c4f32['autoAssociation']===0x0){return db[_0xe122('0x51')][_0xe122('0x52')]({'name':_0xa485a1[_0xe122('0x2b')],'resourceId':_0xa485a1['id'],'type':_0x4c4f32['name'],'sectionId':_0x4c4f32['id']},{})['then'](function(){return _0x3484b6;});}else{return _0x3484b6;}})[_0xe122('0x49')](function(_0x454dd){logger[_0xe122('0x29')](_0xe122('0x53'),_0x454dd);throw _0x454dd;});}return _0x3484b6;})[_0xe122('0x27')](respondWithResult(_0x17ebbf,0xc9))[_0xe122('0x49')](handleError(_0x17ebbf,null));};exports[_0xe122('0x26')]=function(_0x453c07,_0x25a7e1){if(_0x453c07[_0xe122('0x4c')]['id']){delete _0x453c07[_0xe122('0x4c')]['id'];}return db[_0xe122('0x2f')][_0xe122('0x4b')]({'where':{'id':_0x453c07[_0xe122('0x4a')]['id']}})[_0xe122('0x27')](handleEntityNotFound(_0x25a7e1,null))[_0xe122('0x27')](saveUpdates(_0x453c07[_0xe122('0x4c')],null))[_0xe122('0x27')](respondWithResult(_0x25a7e1,null))[_0xe122('0x49')](handleError(_0x25a7e1,null));};exports['destroy']=function(_0x6bd430,_0x1e55a5){var _0x98f56=_0x6bd430[_0xe122('0x4a')]['id'];var _0x2f2e8a=[];return db[_0xe122('0x54')][_0xe122('0x55')](function(_0x4016f1){var _0x275cfb=_0xe122('0x56')+_0x98f56;return db[_0xe122('0x54')]['query'](_0x275cfb,{'type':db[_0xe122('0x57')][_0xe122('0x58')]['SELECT'],'raw':!![],'transaction':_0x4016f1})['then'](function(_0x147c69){_0x2f2e8a=_[_0xe122('0x2e')](_0x147c69,function(_0x4c764a){return Number(_0x4c764a['UserId']);});})['then'](function(){var _0x171fb3=_0xe122('0x59')+_0x98f56;return db[_0xe122('0x54')]['query'](_0x171fb3,{'type':db['Sequelize'][_0xe122('0x58')][_0xe122('0x5a')],'raw':!![],'transaction':_0x4016f1});})['then'](function(_0x26792d){var _0x54dfc6=_[_0xe122('0x2e')](_0x26792d,function(_0x46e2f9){return Number(_0x46e2f9[_0xe122('0x5b')]);});return db[_0xe122('0x5c')]['destroy']({'where':{'UserId':{'$in':_0x2f2e8a},'VoiceQueueId':{'$in':_0x54dfc6}},'transaction':_0x4016f1});})[_0xe122('0x27')](function(){var _0x9a800d=_0xe122('0x5d')+_0x98f56;return db[_0xe122('0x54')][_0xe122('0x36')](_0x9a800d,{'type':db['Sequelize'][_0xe122('0x58')][_0xe122('0x5a')],'raw':!![],'transaction':_0x4016f1});})[_0xe122('0x27')](function(_0x39431c){var _0x4c7dbe=_[_0xe122('0x2e')](_0x39431c,function(_0x3bc486){return Number(_0x3bc486[_0xe122('0x5e')]);});return db['UserMailQueue'][_0xe122('0x5f')]({'where':{'UserId':{'$in':_0x2f2e8a},'MailQueueId':{'$in':_0x4c7dbe}},'transaction':_0x4016f1});})['then'](function(){var _0x11feb2=_0xe122('0x60')+_0x98f56;return db['sequelize'][_0xe122('0x36')](_0x11feb2,{'type':db[_0xe122('0x57')]['QueryTypes']['SELECT'],'raw':!![],'transaction':_0x4016f1});})[_0xe122('0x27')](function(_0x5d4753){var _0x311d21=_['map'](_0x5d4753,function(_0x2af2d2){return Number(_0x2af2d2[_0xe122('0x61')]);});return db[_0xe122('0x62')][_0xe122('0x5f')]({'where':{'UserId':{'$in':_0x2f2e8a},'SmsQueueId':{'$in':_0x311d21}},'transaction':_0x4016f1});})[_0xe122('0x27')](function(){var _0x5cae41='SELECT\x20ChatQueueId\x20FROM\x20team_has_chat_queues\x20WHERE\x20TeamId\x20=\x20'+_0x98f56;return db[_0xe122('0x54')][_0xe122('0x36')](_0x5cae41,{'type':db[_0xe122('0x57')]['QueryTypes']['SELECT'],'raw':!![],'transaction':_0x4016f1});})[_0xe122('0x27')](function(_0x28a2c8){var _0x232e2b=_['map'](_0x28a2c8,function(_0x5ddaa7){return Number(_0x5ddaa7['ChatQueueId']);});return db[_0xe122('0x63')]['destroy']({'where':{'UserId':{'$in':_0x2f2e8a},'ChatQueueId':{'$in':_0x232e2b}},'transaction':_0x4016f1});})[_0xe122('0x27')](function(){var _0x402084=_0xe122('0x64')+_0x98f56;return db['sequelize'][_0xe122('0x36')](_0x402084,{'type':db[_0xe122('0x57')][_0xe122('0x58')][_0xe122('0x5a')],'raw':!![],'transaction':_0x4016f1});})[_0xe122('0x27')](function(_0xab2949){var _0x446fb8=_['map'](_0xab2949,function(_0xf23e76){return Number(_0xf23e76['FaxQueueId']);});return db['UserFaxQueue']['destroy']({'where':{'UserId':{'$in':_0x2f2e8a},'FaxQueueId':{'$in':_0x446fb8}},'transaction':_0x4016f1});})[_0xe122('0x27')](function(){var _0x4bb2db=_0xe122('0x65')+_0x98f56;return db['sequelize'][_0xe122('0x36')](_0x4bb2db,{'type':db[_0xe122('0x57')][_0xe122('0x58')][_0xe122('0x5a')],'raw':!![],'transaction':_0x4016f1});})[_0xe122('0x27')](function(_0x4321dc){var _0xb5d9ef=_[_0xe122('0x2e')](_0x4321dc,function(_0x286d5f){return Number(_0x286d5f[_0xe122('0x66')]);});return db[_0xe122('0x67')][_0xe122('0x5f')]({'where':{'UserId':{'$in':_0x2f2e8a},'OpenchannelQueueId':{'$in':_0xb5d9ef}},'transaction':_0x4016f1});})[_0xe122('0x27')](function(){var _0x28cef9=_0xe122('0x68')+_0x98f56;return db['sequelize'][_0xe122('0x36')](_0x28cef9,{'type':db[_0xe122('0x57')][_0xe122('0x58')][_0xe122('0x5a')],'raw':!![],'transaction':_0x4016f1});})['then'](function(_0x54031e){var _0x1c31cc=_[_0xe122('0x2e')](_0x54031e,function(_0x1f8184){return Number(_0x1f8184['WhatsappQueueId']);});return db['UserWhatsappQueue'][_0xe122('0x5f')]({'where':{'UserId':{'$in':_0x2f2e8a},'WhatsappQueueId':{'$in':_0x1c31cc}},'transaction':_0x4016f1});})[_0xe122('0x27')](function(){return db[_0xe122('0x69')][_0xe122('0x4b')]({'where':{'TeamId':_0x98f56}});})['then'](function(_0x5de5c0){if(_0x5de5c0===null){return;}return db[_0xe122('0x6a')][_0xe122('0x5f')]({'where':{'UserId':{'$in':_0x2f2e8a},'VoicePrefixId':_0x5de5c0['VoicePrefixId']},'transaction':_0x4016f1});})[_0xe122('0x27')](function(){return db[_0xe122('0x2f')][_0xe122('0x5f')]({'where':{'id':_0x98f56},'cascade':!![],'transaction':_0x4016f1});})['then'](function(_0x51c8ef){if(_0x51c8ef===0x0){_0x1e55a5[_0xe122('0x28')](0x194);}else{return db[_0xe122('0x51')][_0xe122('0x5f')]({'where':{'type':_0xe122('0x4e'),'resourceId':_0x98f56},'cascade':!![],'transaction':_0x4016f1})['then'](function(){_0x1e55a5[_0xe122('0x1d')](0xcc)['end']();});}})['catch'](function(_0x1bb86d){_0x1e55a5[_0xe122('0x1d')](0x1f4)[_0xe122('0x2c')](_0x1bb86d);});});};exports[_0xe122('0x6b')]=function(_0x276755,_0xcec5cb,_0x11ce03){return db[_0xe122('0x2f')][_0xe122('0x6c')]({'where':{'id':_0x276755[_0xe122('0x4a')]['id']}})['then'](handleEntityNotFound(_0xcec5cb,null))[_0xe122('0x27')](function(_0x2ff9d7){if(!_0x276755[_0xe122('0x36')]['channel']||!utils[_0xe122('0x6d')](_0x276755[_0xe122('0x36')][_0xe122('0x6e')])){throw new db[(_0xe122('0x57'))][(_0xe122('0x6f'))](_0xe122('0x70'));}var _0x25424a={};var _0x163f30={};_0x163f30[_0xe122('0x34')]=_['keys'](db[_[_0xe122('0x71')](_0x276755[_0xe122('0x36')][_0xe122('0x6e')][_0xe122('0x72')]())+'Queue'][_0xe122('0x30')]);_0x163f30[_0xe122('0x36')]=_[_0xe122('0x35')](_0x276755['query']);_0x163f30[_0xe122('0x40')]=_[_0xe122('0x37')](_0x163f30[_0xe122('0x34')],_0x163f30[_0xe122('0x36')]);_0x25424a['attributes']=_[_0xe122('0x37')](_0x163f30[_0xe122('0x34')],qs[_0xe122('0x39')](_0x276755[_0xe122('0x36')][_0xe122('0x39')]));_0x25424a[_0xe122('0x38')]=_0x25424a[_0xe122('0x38')]['length']?_0x25424a[_0xe122('0x38')]:_0x163f30['model'];_0x25424a['limit']=qs['limit'](_0x276755[_0xe122('0x36')][_0xe122('0x22')]);_0x25424a[_0xe122('0x20')]=qs[_0xe122('0x20')](_0x276755['query']['offset']);_0x25424a['order']=qs[_0xe122('0x3e')](_0x276755[_0xe122('0x36')][_0xe122('0x3e')]);_0x25424a[_0xe122('0x3f')]=qs[_0xe122('0x40')](_[_0xe122('0x73')](_0x276755[_0xe122('0x36')],_0x163f30[_0xe122('0x40')]));_0x25424a=_[_0xe122('0x42')]({},_0x25424a,_0x276755[_0xe122('0x44')]);return _0x2ff9d7[_0xe122('0x74')+_[_0xe122('0x71')](_0x276755[_0xe122('0x36')]['channel']['toLowerCase']())+_0xe122('0x75')](_0x25424a);})[_0xe122('0x27')](respondWithResult(_0xcec5cb,null))[_0xe122('0x49')](handleError(_0xcec5cb,null));};exports[_0xe122('0x76')]=function(_0x1eb1c2,_0x4444d8,_0x7dfe57){return db['Team'][_0xe122('0x6c')]({'where':{'id':_0x1eb1c2[_0xe122('0x4a')]['id']}})[_0xe122('0x27')](function(_0x2fba25){if(_0x2fba25){if(!_0x1eb1c2[_0xe122('0x4c')]['channel']||!utils['isValidChannel'](_0x1eb1c2['body'][_0xe122('0x6e')])){throw new db['Sequelize']['ValidationError']('Unknown\x20channel');}return _0x2fba25[_0xe122('0x77')+_[_0xe122('0x71')](_0x1eb1c2[_0xe122('0x4c')][_0xe122('0x6e')][_0xe122('0x72')]())+'Queues'](_0x1eb1c2[_0xe122('0x4c')][_0xe122('0x78')]);}return null;})[_0xe122('0x27')](handleEntityNotFound(_0x4444d8,null))[_0xe122('0x27')](respondWithStatusCode(_0x4444d8,null))['catch'](handleError(_0x4444d8,null));};exports['removeQueues']=function(_0x3150ad,_0x1ba966,_0x5610c5){return db[_0xe122('0x2f')][_0xe122('0x6c')]({'where':{'id':_0x3150ad[_0xe122('0x4a')]['id']}})[_0xe122('0x27')](function(_0x13f40c){if(_0x13f40c){if(!_0x3150ad[_0xe122('0x36')][_0xe122('0x6e')]||!utils[_0xe122('0x6d')](_0x3150ad[_0xe122('0x36')]['channel'])){throw new db[(_0xe122('0x57'))][(_0xe122('0x6f'))](_0xe122('0x70'));}return _0x13f40c[_0xe122('0x79')+_[_0xe122('0x71')](_0x3150ad[_0xe122('0x36')][_0xe122('0x6e')][_0xe122('0x72')]())+_0xe122('0x75')](_0x3150ad[_0xe122('0x36')][_0xe122('0x78')]);}return null;})[_0xe122('0x27')](handleEntityNotFound(_0x1ba966,null))[_0xe122('0x27')](respondWithStatusCode(_0x1ba966,null))[_0xe122('0x49')](handleError(_0x1ba966,null));};exports[_0xe122('0x7a')]=function(_0x409d59,_0x47b309){var _0xae82a=_['isArray'](_0x409d59[_0xe122('0x4c')]['ids'])?_0x409d59['body']['ids']:[_0x409d59[_0xe122('0x4c')]['ids']];var _0x5b2e18=_0x409d59[_0xe122('0x4a')]['id'];return db[_0xe122('0x2f')][_0xe122('0x4b')]({'where':{'id':_0x5b2e18}})[_0xe122('0x27')](handleEntityNotFound(_0x47b309,null))[_0xe122('0x27')](function(_0x3c2b5b){if(_0x3c2b5b){var _0x3c8125=[_0xe122('0x7b'),_0xe122('0x7c'),'Mail',_0xe122('0x7d'),_0xe122('0x7e'),'Openchannel',_0xe122('0x7f')];return db[_0xe122('0x54')][_0xe122('0x55')](function(_0xf4cac5){var _0x3fe753=_[_0xe122('0x2e')](_0x3c8125,function(_0x4074e0){var _0x402882={'attributes':['id',_0xe122('0x2b')]};if(_0x4074e0===_0xe122('0x7b')){_0x402882['through']={'attributes':[_0xe122('0x80')]};}return _0x3c2b5b[_0xe122('0x74')+_0x4074e0+_0xe122('0x75')](_0x402882)['then'](function(_0xa2951b){var _0x1ace8d=_[_0xe122('0x2e')](_0xa2951b,function(_0xe1925){var _0x1dff24=_['map'](_0xae82a,function(_0x4082ad){var _0x4b6d4f={'where':{'UserId':_0x4082ad,[_0x4074e0+_0xe122('0x81')]:_0xe1925['id']},'transaction':_0xf4cac5};if(_0x4074e0===_0xe122('0x7b')){_0x4b6d4f['defaults']={'penalty':_0xe1925['TeamVoiceQueue'][_0xe122('0x80')]};}return db[_0xe122('0x82')+_0x4074e0+_0xe122('0x83')][_0xe122('0x84')](_0x4b6d4f)[_0xe122('0x27')](function(){socket[_0xe122('0x85')]('user'+_0x4074e0+_0xe122('0x86'),{'UserId':_0x4082ad,[_0x4074e0+_0xe122('0x81')]:_0xe1925['id']});if(_0x4074e0!=='Voice'){return;}return db[_0xe122('0x82')][_0xe122('0x47')]({'where':{'id':_0xae82a,'online':0x1},'attributes':['id',_0xe122('0x2b'),_0xe122('0x87'),'voicePause','interface'],'raw':!![]})['then'](function(_0x225ef4){var _0x23a16b=_['map'](_0x225ef4,function(_0x46f01a){return db[_0xe122('0x88')]['upsert']({'membername':_0x46f01a[_0xe122('0x2b')],'UserId':_0x46f01a['id'],'queue_name':_0xe1925['name'],'VoiceQueueId':_0xe1925['id'],'interface':_[_0xe122('0x89')](_0x46f01a[_0xe122('0x8a')])?util[_0xe122('0x8b')](_0xe122('0x8c'),_0x46f01a[_0xe122('0x2b')]):_0x46f01a[_0xe122('0x8a')],'paused':_0x46f01a[_0xe122('0x8d')]||![],'penalty':_0xe1925[_0xe122('0x8e')]['penalty']},{'transaction':_0xf4cac5});});return Promise['all'](_0x23a16b);});});});return Promise[_0xe122('0x8f')](_0x1dff24);});return Promise[_0xe122('0x8f')](_0x1ace8d);})[_0xe122('0x27')](function(){return db['TeamVoicePrefix'][_0xe122('0x6c')]({'where':{'teamId':_0x5b2e18}})[_0xe122('0x27')](function(_0x1dffa6){if(_0x1dffa6){var _0x47d97d=_[_0xe122('0x2e')](_0xae82a,function(_0x13bd50){db[_0xe122('0x6a')][_0xe122('0x90')]({'UserId':_0x13bd50,'VoicePrefixId':_0x1dffa6[_0xe122('0x91')]});});return Promise[_0xe122('0x8f')](_0x47d97d);}});});});return Promise['all'](_0x3fe753)[_0xe122('0x27')](function(){return _0x3c2b5b[_0xe122('0x7a')](_0xae82a,{'transaction':_0xf4cac5})[_0xe122('0x92')](function(_0x1e76c5){return _0x1e76c5;});});});}})['then'](respondWithResult(_0x47b309,null))['catch'](handleError(_0x47b309,null));};exports['removeAgents']=function(_0x497d94,_0x7404ab){var _0x2d5596=_[_0xe122('0x93')](_0x497d94[_0xe122('0x36')]['ids'])?_0x497d94['query'][_0xe122('0x78')]:[_0x497d94[_0xe122('0x36')]['ids']];var _0x452037=_0x497d94[_0xe122('0x4a')]['id'];return db['Team'][_0xe122('0x4b')]({'where':{'id':_0x452037}})[_0xe122('0x27')](handleEntityNotFound(_0x7404ab,null))[_0xe122('0x27')](function(_0x13fc8c){if(_0x13fc8c){var _0x4a0998=[_0xe122('0x7b'),_0xe122('0x7c'),_0xe122('0x94'),_0xe122('0x7d'),'Fax',_0xe122('0x95'),_0xe122('0x7f')];return db[_0xe122('0x54')][_0xe122('0x55')](function(_0x4fcc1a){var _0x2bc5be=_[_0xe122('0x2e')](_0x4a0998,function(_0x30f11c){var _0x489320={'attributes':['id',_0xe122('0x2b')]};return _0x13fc8c[_0xe122('0x74')+_0x30f11c+_0xe122('0x75')](_0x489320)[_0xe122('0x27')](function(_0x197205){var _0x1cfe07=_[_0xe122('0x2e')](_0x197205,function(_0x2b9da6){return _0x2b9da6[_0xe122('0x96')](_0x2d5596,{'transaction':_0x4fcc1a})[_0xe122('0x27')](function(){var _0x13d333=_[_0xe122('0x2e')](_0x2d5596,function(_0x5c8b74){socket[_0xe122('0x85')](_0xe122('0x4d')+_0x30f11c+'Queue:remove',{'UserId':Number(_0x5c8b74),[_0x30f11c+_0xe122('0x81')]:_0x2b9da6['id']});if(_0x30f11c!==_0xe122('0x7b')){return;}return db[_0xe122('0x88')][_0xe122('0x5f')]({'where':{'VoiceQueueId':_0x2b9da6['id'],'UserId':_0x5c8b74},'transaction':_0x4fcc1a});});return Promise[_0xe122('0x8f')](_0x13d333);});});return Promise['all'](_0x1cfe07);});});return Promise[_0xe122('0x8f')](_0x2bc5be)['then'](function(){return _0x13fc8c[_0xe122('0x96')](_0x2d5596,{'transaction':_0x4fcc1a});})[_0xe122('0x27')](function(){return db[_0xe122('0x69')]['findOne']({'where':{'teamId':_0x452037}})[_0xe122('0x27')](function(_0xeb0bc5){if(_0xeb0bc5){var _0x58b734=_[_0xe122('0x2e')](_0x2d5596,function(_0x3074a9){db[_0xe122('0x6a')][_0xe122('0x5f')]({'where':{'UserId':_0x3074a9,'VoicePrefixId':_0xeb0bc5['VoicePrefixId']}});});return Promise[_0xe122('0x8f')](_0x58b734);}});});});}})['then'](respondWithStatusCode(_0x7404ab,null))['catch'](handleError(_0x7404ab,null));};exports[_0xe122('0x97')]=function(_0x2505a0,_0x1e6c07,_0x44bb31){var _0x1142f3={};var _0x29cc5e={};var _0xc7d695;var _0x23a787;return db['Team']['findOne']({'where':{'id':_0x2505a0[_0xe122('0x4a')]['id']}})['then'](handleEntityNotFound(_0x1e6c07,null))[_0xe122('0x27')](function(_0x410a81){if(_0x410a81){_0xc7d695=_0x410a81;_0x29cc5e[_0xe122('0x34')]=_[_0xe122('0x35')](db[_0xe122('0x82')]['rawAttributes']);_0x29cc5e['query']=_[_0xe122('0x35')](_0x2505a0[_0xe122('0x36')]);_0x29cc5e[_0xe122('0x40')]=_[_0xe122('0x37')](_0x29cc5e['model'],_0x29cc5e[_0xe122('0x36')]);_0x1142f3[_0xe122('0x38')]=_[_0xe122('0x37')](_0x29cc5e[_0xe122('0x34')],qs['fields'](_0x2505a0[_0xe122('0x36')][_0xe122('0x39')]));_0x1142f3[_0xe122('0x38')]=_0x1142f3[_0xe122('0x38')][_0xe122('0x3a')]?_0x1142f3['attributes']:_0x29cc5e[_0xe122('0x34')];_0x1142f3[_0xe122('0x3d')]=qs[_0xe122('0x3e')](_0x2505a0['query'][_0xe122('0x3e')]);_0x1142f3['where']=qs[_0xe122('0x40')](_[_0xe122('0x73')](_0x2505a0[_0xe122('0x36')],_0x29cc5e[_0xe122('0x40')]));if(_0x2505a0[_0xe122('0x36')][_0xe122('0x41')]){_0x1142f3[_0xe122('0x3f')]=_[_0xe122('0x42')](_0x1142f3[_0xe122('0x3f')],{'$or':_[_0xe122('0x2e')](_0x1142f3[_0xe122('0x38')],function(_0x5b0cb7){var _0x165c54={};_0x165c54[_0x5b0cb7]={'$like':'%'+_0x2505a0['query']['filter']+'%'};return _0x165c54;})});}_0x1142f3=_[_0xe122('0x42')]({},_0x1142f3,_0x2505a0[_0xe122('0x44')]);return _0xc7d695[_0xe122('0x97')](_0x1142f3);}})[_0xe122('0x27')](function(_0x32191d){if(_0x32191d){_0x23a787=_0x32191d[_0xe122('0x3a')];if(!_0x2505a0[_0xe122('0x36')]['hasOwnProperty'](_0xe122('0x3c'))){_0x1142f3[_0xe122('0x22')]=qs[_0xe122('0x22')](_0x2505a0[_0xe122('0x36')][_0xe122('0x22')]);_0x1142f3['offset']=qs[_0xe122('0x20')](_0x2505a0[_0xe122('0x36')][_0xe122('0x20')]);}return _0xc7d695[_0xe122('0x97')](_0x1142f3);}})['then'](function(_0x5baf7b){if(_0x5baf7b){return _0x5baf7b?{'count':_0x23a787,'rows':_0x5baf7b}:null;}})[_0xe122('0x27')](respondWithResult(_0x1e6c07,null))[_0xe122('0x49')](handleError(_0x1e6c07,null));};
\ No newline at end of file
index c806901..2101f3f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7bf2=['exports','events','Team','save','update','remove','emit','hasOwnProperty','hook'];(function(_0xf6647a,_0x4a05a0){var _0xdd3a42=function(_0x58fc02){while(--_0x58fc02){_0xf6647a['push'](_0xf6647a['shift']());}};_0xdd3a42(++_0x4a05a0);}(_0x7bf2,0x133));var _0x27bf=function(_0x5a6d98,_0x316745){_0x5a6d98=_0x5a6d98-0x0;var _0x126ed0=_0x7bf2[_0x5a6d98];return _0x126ed0;};'use strict';var EventEmitter=require(_0x27bf('0x0'));var Team=require('../../mysqldb')['db'][_0x27bf('0x1')];var TeamEvents=new EventEmitter();TeamEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x27bf('0x2'),'afterUpdate':_0x27bf('0x3'),'afterDestroy':_0x27bf('0x4')};function emitEvent(_0x5472a1){return function(_0x3547bd,_0x328985,_0x3c5ca3){TeamEvents[_0x27bf('0x5')](_0x5472a1+':'+_0x3547bd['id'],_0x3547bd);TeamEvents[_0x27bf('0x5')](_0x5472a1,_0x3547bd);_0x3c5ca3(null);};}for(var e in events){if(events[_0x27bf('0x6')](e)){var event=events[e];Team[_0x27bf('0x7')](e,emitEvent(event));}}module[_0x27bf('0x8')]=TeamEvents;
\ No newline at end of file
+var _0x5174=['events','Team','setMaxListeners','save','update','emit','hasOwnProperty','hook','exports'];(function(_0xcb0eb2,_0x3906bf){var _0xbab9b8=function(_0x24fa8a){while(--_0x24fa8a){_0xcb0eb2['push'](_0xcb0eb2['shift']());}};_0xbab9b8(++_0x3906bf);}(_0x5174,0x117));var _0x4517=function(_0xf706b7,_0x41fe90){_0xf706b7=_0xf706b7-0x0;var _0x2bc456=_0x5174[_0xf706b7];return _0x2bc456;};'use strict';var EventEmitter=require(_0x4517('0x0'));var Team=require('../../mysqldb')['db'][_0x4517('0x1')];var TeamEvents=new EventEmitter();TeamEvents[_0x4517('0x2')](0x0);var events={'afterCreate':_0x4517('0x3'),'afterUpdate':_0x4517('0x4'),'afterDestroy':'remove'};function emitEvent(_0x343e5e){return function(_0x314453,_0x564bd0,_0x51c6bf){TeamEvents[_0x4517('0x5')](_0x343e5e+':'+_0x314453['id'],_0x314453);TeamEvents[_0x4517('0x5')](_0x343e5e,_0x314453);_0x51c6bf(null);};}for(var e in events){if(events[_0x4517('0x6')](e)){var event=events[e];Team[_0x4517('0x7')](e,emitEvent(event));}}module[_0x4517('0x8')]=TeamEvents;
\ No newline at end of file
index 0ca7722..a681758 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe923=['Sms','Voice','Whatsapp','all','lodash','./team.attributes','get','Queues','then','map','setDataValue','catch','exports','define','Fax','Mail','Openchannel'];(function(_0x1663ae,_0x10484a){var _0x30ffb8=function(_0x21e006){while(--_0x21e006){_0x1663ae['push'](_0x1663ae['shift']());}};_0x30ffb8(++_0x10484a);}(_0xe923,0x136));var _0x3e92=function(_0xcf69e4,_0x22359f){_0xcf69e4=_0xcf69e4-0x0;var _0x3ae183=_0xe923[_0xcf69e4];return _0x3ae183;};'use strict';var _=require(_0x3e92('0x0'));var attributes=require(_0x3e92('0x1'));function getQueuesByChannel(_0x4ca446,_0x562ecf){var _0x199224=_0x3e92('0x2')+_0x562ecf+_0x3e92('0x3');return _0x4ca446[_0x199224]()[_0x3e92('0x4')](function(_0x83eff4){return _[_0x3e92('0x5')](_0x83eff4,function(_0x3c7e75){_0x3c7e75[_0x3e92('0x6')]('channel',_0x562ecf);return _0x3c7e75;});})[_0x3e92('0x7')](function(_0xcac0ad){throw _0xcac0ad;});}module[_0x3e92('0x8')]=function(_0x2b344f){return _0x2b344f[_0x3e92('0x9')]('Team',attributes,{'tableName':'teams','paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'getAssociatedQueues':function(){var _0x236ec3=this;var _0xb944ad=['Chat',_0x3e92('0xa'),_0x3e92('0xb'),_0x3e92('0xc'),_0x3e92('0xd'),_0x3e92('0xe'),_0x3e92('0xf')];return Promise['resolve']()['then'](function(){var _0x3bc021=_[_0x3e92('0x5')](_0xb944ad,function(_0x4b4633){return getQueuesByChannel(_0x236ec3,_0x4b4633);});return Promise[_0x3e92('0x10')](_0x3bc021);})['catch'](function(_0x3c4573){throw _0x3c4573;});}}});};
\ No newline at end of file
+var _0x63e3=['Fax','Mail','Openchannel','Sms','Voice','resolve','all','lodash','./team.attributes','get','then','map','setDataValue','channel','teams','Chat'];(function(_0x2132a3,_0x4639e9){var _0x21890c=function(_0x34b73d){while(--_0x34b73d){_0x2132a3['push'](_0x2132a3['shift']());}};_0x21890c(++_0x4639e9);}(_0x63e3,0x157));var _0x363e=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x63e3[_0x3947c9];return _0x2e7871;};'use strict';var _=require(_0x363e('0x0'));var attributes=require(_0x363e('0x1'));function getQueuesByChannel(_0xa7d11,_0x56b153){var _0x4e39fe=_0x363e('0x2')+_0x56b153+'Queues';return _0xa7d11[_0x4e39fe]()[_0x363e('0x3')](function(_0xa3cb6a){return _[_0x363e('0x4')](_0xa3cb6a,function(_0xf4b79f){_0xf4b79f[_0x363e('0x5')](_0x363e('0x6'),_0x56b153);return _0xf4b79f;});})['catch'](function(_0x9f934){throw _0x9f934;});}module['exports']=function(_0x27e65b){return _0x27e65b['define']('Team',attributes,{'tableName':_0x363e('0x7'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'getAssociatedQueues':function(){var _0x10c432=this;var _0x4a316d=[_0x363e('0x8'),_0x363e('0x9'),_0x363e('0xa'),_0x363e('0xb'),_0x363e('0xc'),_0x363e('0xd'),'Whatsapp'];return Promise[_0x363e('0xe')]()[_0x363e('0x3')](function(){var _0x591ed0=_[_0x363e('0x4')](_0x4a316d,function(_0x127c73){return getQueuesByChannel(_0x10c432,_0x127c73);});return Promise[_0x363e('0xf')](_0x591ed0);})['catch'](function(_0x30fbcc){throw _0x30fbcc;});}}});};
\ No newline at end of file
index 6eb379a..0c4ad63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca5e=['stringify','error','code','message','Team,\x20%s,\x20%s','result','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','redis','defaults','localhost','socket.io-emitter','./team.socket','register','request','then','info','request\x20sent','debug'];(function(_0x1d50f2,_0x3c3ec6){var _0x3769b8=function(_0x50926a){while(--_0x50926a){_0x1d50f2['push'](_0x1d50f2['shift']());}};_0x3769b8(++_0x3c3ec6);}(_0xca5e,0x1ec));var _0xeca5=function(_0x221c2e,_0x7f3fad){_0x221c2e=_0x221c2e-0x0;var _0x50d0c8=_0xca5e[_0x221c2e];return _0x50d0c8;};'use strict';var _=require(_0xeca5('0x0'));var util=require(_0xeca5('0x1'));var moment=require(_0xeca5('0x2'));var BPromise=require(_0xeca5('0x3'));var rs=require(_0xeca5('0x4'));var fs=require('fs');var Redis=require(_0xeca5('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xeca5('0x6'));var logger=require(_0xeca5('0x7'))(_0xeca5('0x8'));var config=require(_0xeca5('0x9'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});config[_0xeca5('0xa')]=_[_0xeca5('0xb')](config[_0xeca5('0xa')],{'host':_0xeca5('0xc'),'port':0x18eb});var socket=require(_0xeca5('0xd'))(new Redis(config[_0xeca5('0xa')]));require(_0xeca5('0xe'))[_0xeca5('0xf')](socket);function respondWithRpcPromise(_0x540de5,_0x544b7d,_0x56d525){return new BPromise(function(_0x4027fe,_0x1cc4d1){return client[_0xeca5('0x10')](_0x540de5,_0x56d525)[_0xeca5('0x11')](function(_0x402c0c){logger[_0xeca5('0x12')]('Team,\x20%s,\x20%s',_0x544b7d,_0xeca5('0x13'));logger[_0xeca5('0x14')]('Team,\x20%s,\x20%s,\x20%s',_0x544b7d,_0xeca5('0x13'),JSON[_0xeca5('0x15')](_0x402c0c));if(_0x402c0c[_0xeca5('0x16')]){if(_0x402c0c[_0xeca5('0x16')][_0xeca5('0x17')]===0x1f4){logger[_0xeca5('0x16')]('Team,\x20%s,\x20%s',_0x544b7d,_0x402c0c[_0xeca5('0x16')][_0xeca5('0x18')]);return _0x1cc4d1(_0x402c0c[_0xeca5('0x16')]['message']);}logger[_0xeca5('0x16')](_0xeca5('0x19'),_0x544b7d,_0x402c0c[_0xeca5('0x16')][_0xeca5('0x18')]);return _0x4027fe(_0x402c0c[_0xeca5('0x16')][_0xeca5('0x18')]);}else{logger['info'](_0xeca5('0x19'),_0x544b7d,_0xeca5('0x13'));_0x4027fe(_0x402c0c[_0xeca5('0x1a')][_0xeca5('0x18')]);}})['catch'](function(_0x337efb){logger[_0xeca5('0x16')](_0xeca5('0x19'),_0x544b7d,_0x337efb);_0x1cc4d1(_0x337efb);});});}
\ No newline at end of file
+var _0x6705=['debug','Team,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','defaults','redis','localhost','socket.io-emitter','./team.socket','then','info','Team,\x20%s,\x20%s','request\x20sent'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x6705,0xfb));var _0x5670=function(_0x5bdefd,_0x33384d){_0x5bdefd=_0x5bdefd-0x0;var _0x50802e=_0x6705[_0x5bdefd];return _0x50802e;};'use strict';var _=require(_0x5670('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x5670('0x1'));var rs=require(_0x5670('0x2'));var fs=require('fs');var Redis=require(_0x5670('0x3'));var db=require(_0x5670('0x4'))['db'];var utils=require(_0x5670('0x5'));var logger=require('../../config/logger')(_0x5670('0x6'));var config=require(_0x5670('0x7'));var jayson=require(_0x5670('0x8'));var client=jayson['client'][_0x5670('0x9')]({'port':0x232a});config['redis']=_[_0x5670('0xa')](config[_0x5670('0xb')],{'host':_0x5670('0xc'),'port':0x18eb});var socket=require(_0x5670('0xd'))(new Redis(config[_0x5670('0xb')]));require(_0x5670('0xe'))['register'](socket);function respondWithRpcPromise(_0x343199,_0x490057,_0x1c36f7){return new BPromise(function(_0x5ba6ee,_0x4b7a4d){return client['request'](_0x343199,_0x1c36f7)[_0x5670('0xf')](function(_0x3a1313){logger[_0x5670('0x10')](_0x5670('0x11'),_0x490057,_0x5670('0x12'));logger[_0x5670('0x13')](_0x5670('0x14'),_0x490057,'request\x20sent',JSON[_0x5670('0x15')](_0x3a1313));if(_0x3a1313[_0x5670('0x16')]){if(_0x3a1313[_0x5670('0x16')][_0x5670('0x17')]===0x1f4){logger[_0x5670('0x16')](_0x5670('0x11'),_0x490057,_0x3a1313[_0x5670('0x16')][_0x5670('0x18')]);return _0x4b7a4d(_0x3a1313[_0x5670('0x16')][_0x5670('0x18')]);}logger['error']('Team,\x20%s,\x20%s',_0x490057,_0x3a1313[_0x5670('0x16')][_0x5670('0x18')]);return _0x5ba6ee(_0x3a1313[_0x5670('0x16')][_0x5670('0x18')]);}else{logger[_0x5670('0x10')](_0x5670('0x11'),_0x490057,_0x5670('0x12'));_0x5ba6ee(_0x3a1313[_0x5670('0x19')][_0x5670('0x18')]);}})[_0x5670('0x1a')](function(_0x35c998){logger[_0x5670('0x16')](_0x5670('0x11'),_0x490057,_0x35c998);_0x4b7a4d(_0x35c998);});});}
\ No newline at end of file
index 608d566..5de9579 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x605f=['length','team:','save','remove','emit','removeListener','register'];(function(_0x26462c,_0xd20a35){var _0x509a42=function(_0x1b22c9){while(--_0x1b22c9){_0x26462c['push'](_0x26462c['shift']());}};_0x509a42(++_0xd20a35);}(_0x605f,0x1a6));var _0xf605=function(_0x560f89,_0x4e14fc){_0x560f89=_0x560f89-0x0;var _0x4b0894=_0x605f[_0x560f89];return _0x4b0894;};'use strict';var TeamEvents=require('./team.events');var events=[_0xf605('0x0'),_0xf605('0x1'),'update'];function createListener(_0x40d4df,_0x173e83){return function(_0x5acb7f){_0x173e83[_0xf605('0x2')](_0x40d4df,_0x5acb7f);};}function removeListener(_0x12242b,_0x5bcbc6){return function(){TeamEvents[_0xf605('0x3')](_0x12242b,_0x5bcbc6);};}exports[_0xf605('0x4')]=function(_0x1846c3){for(var _0x5e7304=0x0,_0x1bdca3=events[_0xf605('0x5')];_0x5e7304<_0x1bdca3;_0x5e7304++){var _0x3b5bbe=events[_0x5e7304];var _0x2fe81e=createListener(_0xf605('0x6')+_0x3b5bbe,_0x1846c3);TeamEvents['on'](_0x3b5bbe,_0x2fe81e);}};
\ No newline at end of file
+var _0x8130=['emit','removeListener','length','team:','./team.events','save','update'];(function(_0x531cb8,_0x8ef36f){var _0x5cf297=function(_0x45acb4){while(--_0x45acb4){_0x531cb8['push'](_0x531cb8['shift']());}};_0x5cf297(++_0x8ef36f);}(_0x8130,0x146));var _0x0813=function(_0x42367c,_0x42dd75){_0x42367c=_0x42367c-0x0;var _0x5acdc6=_0x8130[_0x42367c];return _0x5acdc6;};'use strict';var TeamEvents=require(_0x0813('0x0'));var events=[_0x0813('0x1'),'remove',_0x0813('0x2')];function createListener(_0x3168b8,_0xd86b46){return function(_0x20cc2e){_0xd86b46[_0x0813('0x3')](_0x3168b8,_0x20cc2e);};}function removeListener(_0x25d6c6,_0x4e66f4){return function(){TeamEvents[_0x0813('0x4')](_0x25d6c6,_0x4e66f4);};}exports['register']=function(_0x563ee2){for(var _0x306454=0x0,_0x2df45a=events[_0x0813('0x5')];_0x306454<_0x2df45a;_0x306454++){var _0x19a508=events[_0x306454];var _0x2ab8f0=createListener(_0x0813('0x6')+_0x19a508,_0x563ee2);TeamEvents['on'](_0x19a508,_0x2ab8f0);}};
\ No newline at end of file
index d32e318..a138386 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x860a=['sequelize','exports','INTEGER'];(function(_0x42235f,_0x5dabfd){var _0x3f5fab=function(_0x358fd7){while(--_0x358fd7){_0x42235f['push'](_0x42235f['shift']());}};_0x3f5fab(++_0x5dabfd);}(_0x860a,0x14a));var _0xa860=function(_0x147464,_0x537ee3){_0x147464=_0x147464-0x0;var _0x1e7dbb=_0x860a[_0x147464];return _0x1e7dbb;};'use strict';var Sequelize=require(_0xa860('0x0'));module[_0xa860('0x1')]={'TeamId':{'type':Sequelize[_0xa860('0x2')]},'VoicePrefixId':{'type':Sequelize[_0xa860('0x2')]}};
\ No newline at end of file
+var _0x466f=['sequelize','INTEGER'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x466f,0x76));var _0xf466=function(_0x1dbf38,_0x3c8a20){_0x1dbf38=_0x1dbf38-0x0;var _0x9a641b=_0x466f[_0x1dbf38];return _0x9a641b;};'use strict';var Sequelize=require(_0xf466('0x0'));module['exports']={'TeamId':{'type':Sequelize[_0xf466('0x1')]},'VoicePrefixId':{'type':Sequelize[_0xf466('0x1')]}};
\ No newline at end of file
index f2490fc..327050f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfff0=['./teamVoicePrefix.attributes','define','team_has_voice_prefixes','util','../../config/logger','api','bluebird','request-promise','path','../../config/environment'];(function(_0xc4001c,_0x1bf8f0){var _0x49f7bc=function(_0x1059b8){while(--_0x1059b8){_0xc4001c['push'](_0xc4001c['shift']());}};_0x49f7bc(++_0x1bf8f0);}(_0xfff0,0x139));var _0x0fff=function(_0x6d8de3,_0x2eb1c3){_0x6d8de3=_0x6d8de3-0x0;var _0x283275=_0xfff0[_0x6d8de3];return _0x283275;};'use strict';var _=require('lodash');var util=require(_0x0fff('0x0'));var logger=require(_0x0fff('0x1'))(_0x0fff('0x2'));var moment=require('moment');var BPromise=require(_0x0fff('0x3'));var rp=require(_0x0fff('0x4'));var fs=require('fs');var path=require(_0x0fff('0x5'));var rimraf=require('rimraf');var config=require(_0x0fff('0x6'));var attributes=require(_0x0fff('0x7'));module['exports']=function(_0x33c813,_0x4c2221){return _0x33c813[_0x0fff('0x8')]('TeamVoicePrefix',attributes,{'tableName':_0x0fff('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x659c=['exports','define','TeamVoicePrefix','lodash','api','moment','request-promise','path','./teamVoicePrefix.attributes'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x659c,0x1aa));var _0xc659=function(_0x32a773,_0x57b5c7){_0x32a773=_0x32a773-0x0;var _0x430dcb=_0x659c[_0x32a773];return _0x430dcb;};'use strict';var _=require(_0xc659('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xc659('0x1'));var moment=require(_0xc659('0x2'));var BPromise=require('bluebird');var rp=require(_0xc659('0x3'));var fs=require('fs');var path=require(_0xc659('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xc659('0x5'));module[_0xc659('0x6')]=function(_0x369dc0,_0x312440){return _0x369dc0[_0xc659('0x7')](_0xc659('0x8'),attributes,{'tableName':'team_has_voice_prefixes','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b0ca817..2e0d74d 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(_0x4f0456,_0x795c81){var _0x52caea=function(_0x23930b){while(--_0x23930b){_0x4f0456['push'](_0x4f0456['shift']());}};_0x52caea(++_0x795c81);}(_0xa9e0,0x123));var _0x0a9e=function(_0x32d457,_0x1a39c9){_0x32d457=_0x32d457-0x0;var _0x338386=_0xa9e0[_0x32d457];return _0x338386;};'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(_0x4399a6,_0x4f3ef7){var _0x20ba25=function(_0x5c9e3c){while(--_0x5c9e3c){_0x4399a6['push'](_0x4399a6['shift']());}};_0x20ba25(++_0x4f3ef7);}(_0x9c44,0x178));var _0x49c4=function(_0x3511d3,_0x4107ae){_0x3511d3=_0x3511d3-0x0;var _0x5d6321=_0x9c44[_0x3511d3];return _0x5d6321;};'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 6263dea..68e532e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe914=['exports','sequelize'];(function(_0x191154,_0x56f74c){var _0x3dcd73=function(_0x51c321){while(--_0x51c321){_0x191154['push'](_0x191154['shift']());}};_0x3dcd73(++_0x56f74c);}(_0xe914,0x7f));var _0x4e91=function(_0x54ed8f,_0x53cdec){_0x54ed8f=_0x54ed8f-0x0;var _0x2557f0=_0xe914[_0x54ed8f];return _0x2557f0;};'use strict';var Sequelize=require(_0x4e91('0x0'));module[_0x4e91('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0xb3f0=['exports','INTEGER'];(function(_0x28b65c,_0x5d2260){var _0x50d46b=function(_0x52a41f){while(--_0x52a41f){_0x28b65c['push'](_0x28b65c['shift']());}};_0x50d46b(++_0x5d2260);}(_0xb3f0,0x96));var _0x0b3f=function(_0x235482,_0x14b833){_0x235482=_0x235482-0x0;var _0x5f5bea=_0xb3f0[_0x235482];return _0x5f5bea;};'use strict';var Sequelize=require('sequelize');module[_0x0b3f('0x0')]={'penalty':{'type':Sequelize[_0x0b3f('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index d678a7f..df54527 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd0b5=['path','rimraf','../../config/environment','./teamVoiceQueue.attributes','exports','define','TeamVoiceQueue','team_has_voice_queues','../../config/logger','api','bluebird','request-promise'];(function(_0x28b0a1,_0x99bd0a){var _0x21470c=function(_0x45bf01){while(--_0x45bf01){_0x28b0a1['push'](_0x28b0a1['shift']());}};_0x21470c(++_0x99bd0a);}(_0xd0b5,0x1b8));var _0x5d0b=function(_0x8fa54b,_0x31dc83){_0x8fa54b=_0x8fa54b-0x0;var _0x2c4bbe=_0xd0b5[_0x8fa54b];return _0x2c4bbe;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x5d0b('0x0'))(_0x5d0b('0x1'));var moment=require('moment');var BPromise=require(_0x5d0b('0x2'));var rp=require(_0x5d0b('0x3'));var fs=require('fs');var path=require(_0x5d0b('0x4'));var rimraf=require(_0x5d0b('0x5'));var config=require(_0x5d0b('0x6'));var attributes=require(_0x5d0b('0x7'));module[_0x5d0b('0x8')]=function(_0x41b7c1,_0xd514d0){return _0x41b7c1[_0x5d0b('0x9')](_0x5d0b('0xa'),attributes,{'tableName':_0x5d0b('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8128=['team_has_voice_queues','lodash','api','moment','path','rimraf','../../config/environment','exports','define'];(function(_0x288116,_0x420124){var _0x4d618b=function(_0x1f4884){while(--_0x1f4884){_0x288116['push'](_0x288116['shift']());}};_0x4d618b(++_0x420124);}(_0x8128,0x1b1));var _0x8812=function(_0x3511d3,_0x4107ae){_0x3511d3=_0x3511d3-0x0;var _0x5d6321=_0x8128[_0x3511d3];return _0x5d6321;};'use strict';var _=require(_0x8812('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x8812('0x1'));var moment=require(_0x8812('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x8812('0x3'));var rimraf=require(_0x8812('0x4'));var config=require(_0x8812('0x5'));var attributes=require('./teamVoiceQueue.attributes');module[_0x8812('0x6')]=function(_0x2f4af9,_0x2b43c6){return _0x2f4af9[_0x8812('0x7')]('TeamVoiceQueue',attributes,{'tableName':_0x8812('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index dcb9b82..2e8c4cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x43e4=['jayson/promise','client','then','TeamVoiceQueue,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x25b4a4,_0x2e081b){var _0x707267=function(_0x440123){while(--_0x440123){_0x25b4a4['push'](_0x25b4a4['shift']());}};_0x707267(++_0x2e081b);}(_0x43e4,0x15a));var _0x443e=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x43e4[_0x17d9e3];return _0x14192d;};'use strict';var _=require(_0x443e('0x0'));var util=require(_0x443e('0x1'));var moment=require(_0x443e('0x2'));var BPromise=require(_0x443e('0x3'));var rs=require(_0x443e('0x4'));var fs=require('fs');var Redis=require(_0x443e('0x5'));var db=require(_0x443e('0x6'))['db'];var utils=require(_0x443e('0x7'));var logger=require(_0x443e('0x8'))(_0x443e('0x9'));var config=require(_0x443e('0xa'));var jayson=require(_0x443e('0xb'));var client=jayson[_0x443e('0xc')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1d942e,_0x6a99bf,_0x23780a){return new BPromise(function(_0x50fa75,_0x1d4ef6){return client['request'](_0x1d942e,_0x23780a)[_0x443e('0xd')](function(_0x5560be){logger['info'](_0x443e('0xe'),_0x6a99bf,_0x443e('0xf'));logger[_0x443e('0x10')]('TeamVoiceQueue,\x20%s,\x20%s,\x20%s',_0x6a99bf,'request\x20sent',JSON[_0x443e('0x11')](_0x5560be));if(_0x5560be[_0x443e('0x12')]){if(_0x5560be[_0x443e('0x12')]['code']===0x1f4){logger['error'](_0x443e('0xe'),_0x6a99bf,_0x5560be['error'][_0x443e('0x13')]);return _0x1d4ef6(_0x5560be['error']['message']);}logger[_0x443e('0x12')]('TeamVoiceQueue,\x20%s,\x20%s',_0x6a99bf,_0x5560be[_0x443e('0x12')][_0x443e('0x13')]);return _0x50fa75(_0x5560be[_0x443e('0x12')]['message']);}else{logger['info']('TeamVoiceQueue,\x20%s,\x20%s',_0x6a99bf,_0x443e('0xf'));_0x50fa75(_0x5560be['result'][_0x443e('0x13')]);}})[_0x443e('0x14')](function(_0x16137b){logger[_0x443e('0x12')](_0x443e('0xe'),_0x6a99bf,_0x16137b);_0x1d4ef6(_0x16137b);});});}
\ No newline at end of file
+var _0xed1c=['error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','info','TeamVoiceQueue,\x20%s,\x20%s','request\x20sent','debug','TeamVoiceQueue,\x20%s,\x20%s,\x20%s','stringify'];(function(_0xddce13,_0x2957df){var _0x3c1580=function(_0x3f8a34){while(--_0x3f8a34){_0xddce13['push'](_0xddce13['shift']());}};_0x3c1580(++_0x2957df);}(_0xed1c,0xf5));var _0xced1=function(_0x3a8ec5,_0x378f44){_0x3a8ec5=_0x3a8ec5-0x0;var _0x483caf=_0xed1c[_0x3a8ec5];return _0x483caf;};'use strict';var _=require(_0xced1('0x0'));var util=require(_0xced1('0x1'));var moment=require(_0xced1('0x2'));var BPromise=require(_0xced1('0x3'));var rs=require(_0xced1('0x4'));var fs=require('fs');var Redis=require(_0xced1('0x5'));var db=require(_0xced1('0x6'))['db'];var utils=require(_0xced1('0x7'));var logger=require(_0xced1('0x8'))(_0xced1('0x9'));var config=require('../../config/environment');var jayson=require(_0xced1('0xa'));var client=jayson[_0xced1('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0xe18fe7,_0x9e5cb5,_0x553816){return new BPromise(function(_0xa1144f,_0x3f7f20){return client[_0xced1('0xc')](_0xe18fe7,_0x553816)['then'](function(_0x502fe1){logger[_0xced1('0xd')](_0xced1('0xe'),_0x9e5cb5,_0xced1('0xf'));logger[_0xced1('0x10')](_0xced1('0x11'),_0x9e5cb5,'request\x20sent',JSON[_0xced1('0x12')](_0x502fe1));if(_0x502fe1[_0xced1('0x13')]){if(_0x502fe1[_0xced1('0x13')][_0xced1('0x14')]===0x1f4){logger['error'](_0xced1('0xe'),_0x9e5cb5,_0x502fe1[_0xced1('0x13')][_0xced1('0x15')]);return _0x3f7f20(_0x502fe1[_0xced1('0x13')][_0xced1('0x15')]);}logger[_0xced1('0x13')](_0xced1('0xe'),_0x9e5cb5,_0x502fe1[_0xced1('0x13')][_0xced1('0x15')]);return _0xa1144f(_0x502fe1[_0xced1('0x13')][_0xced1('0x15')]);}else{logger['info'](_0xced1('0xe'),_0x9e5cb5,_0xced1('0xf'));_0xa1144f(_0x502fe1[_0xced1('0x16')][_0xced1('0x15')]);}})[_0xced1('0x17')](function(_0x53512f){logger[_0xced1('0x13')](_0xced1('0xe'),_0x9e5cb5,_0x53512f);_0x3f7f20(_0x53512f);});});}
\ No newline at end of file
index 791a9d7..a30898e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9261=['connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./template.controller','get','index','/:id','isAuthenticated','post','create','put','update','delete','destroy','exports','multer','util'];(function(_0x2d20d6,_0x9c3dab){var _0x3b005c=function(_0x4f8f3e){while(--_0x4f8f3e){_0x2d20d6['push'](_0x2d20d6['shift']());}};_0x3b005c(++_0x9c3dab);}(_0x9261,0x1de));var _0x1926=function(_0x367e5b,_0x5721e4){_0x367e5b=_0x367e5b-0x0;var _0x4b909e=_0x9261[_0x367e5b];return _0x4b909e;};'use strict';var multer=require(_0x1926('0x0'));var util=require(_0x1926('0x1'));var path=require('path');var timeout=require(_0x1926('0x2'));var express=require(_0x1926('0x3'));var router=express[_0x1926('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x1926('0x5'));var interaction=require(_0x1926('0x6'));var config=require(_0x1926('0x7'));var controller=require(_0x1926('0x8'));router[_0x1926('0x9')]('/',auth['isAuthenticated'](),controller[_0x1926('0xa')]);router['get'](_0x1926('0xb'),auth[_0x1926('0xc')](),controller['show']);router[_0x1926('0xd')]('/',auth[_0x1926('0xc')](),controller[_0x1926('0xe')]);router[_0x1926('0xf')](_0x1926('0xb'),auth[_0x1926('0xc')](),controller[_0x1926('0x10')]);router[_0x1926('0x11')](_0x1926('0xb'),auth[_0x1926('0xc')](),controller[_0x1926('0x12')]);module[_0x1926('0x13')]=router;
\ No newline at end of file
+var _0x4f81=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./template.controller','isAuthenticated','get','/:id','show','post','create','update','delete','destroy','exports','path','express','Router'];(function(_0xa3c06b,_0x490f99){var _0x33aa1d=function(_0x23a88e){while(--_0x23a88e){_0xa3c06b['push'](_0xa3c06b['shift']());}};_0x33aa1d(++_0x490f99);}(_0x4f81,0x1e3));var _0x14f8=function(_0x37406f,_0x56e30f){_0x37406f=_0x37406f-0x0;var _0x45921f=_0x4f81[_0x37406f];return _0x45921f;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x14f8('0x0'));var timeout=require('connect-timeout');var express=require(_0x14f8('0x1'));var router=express[_0x14f8('0x2')]();var fs_extra=require(_0x14f8('0x3'));var auth=require(_0x14f8('0x4'));var interaction=require(_0x14f8('0x5'));var config=require(_0x14f8('0x6'));var controller=require(_0x14f8('0x7'));router['get']('/',auth[_0x14f8('0x8')](),controller['index']);router[_0x14f8('0x9')](_0x14f8('0xa'),auth['isAuthenticated'](),controller[_0x14f8('0xb')]);router[_0x14f8('0xc')]('/',auth['isAuthenticated'](),controller[_0x14f8('0xd')]);router['put']('/:id',auth[_0x14f8('0x8')](),controller[_0x14f8('0xe')]);router[_0x14f8('0xf')](_0x14f8('0xa'),auth[_0x14f8('0x8')](),controller[_0x14f8('0x10')]);module[_0x14f8('0x11')]=router;
\ No newline at end of file
index a195641..bb6441e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d39=['TEXT','sequelize','exports','STRING'];(function(_0x3d4bae,_0x2f1f2c){var _0xfab349=function(_0x2ca7e5){while(--_0x2ca7e5){_0x3d4bae['push'](_0x3d4bae['shift']());}};_0xfab349(++_0x2f1f2c);}(_0x0d39,0x189));var _0x90d3=function(_0x5e3d06,_0x555ec9){_0x5e3d06=_0x5e3d06-0x0;var _0x32890d=_0x0d39[_0x5e3d06];return _0x32890d;};'use strict';var Sequelize=require(_0x90d3('0x0'));module[_0x90d3('0x1')]={'name':{'type':Sequelize[_0x90d3('0x2')]},'description':{'type':Sequelize[_0x90d3('0x2')]},'html':{'type':Sequelize[_0x90d3('0x3')]}};
\ No newline at end of file
+var _0x6fe2=['TEXT','sequelize','exports','STRING'];(function(_0x1cc8fe,_0x105328){var _0x230054=function(_0x1a1b56){while(--_0x1a1b56){_0x1cc8fe['push'](_0x1cc8fe['shift']());}};_0x230054(++_0x105328);}(_0x6fe2,0x135));var _0x26fe=function(_0x5cca1a,_0x15473a){_0x5cca1a=_0x5cca1a-0x0;var _0x249a8b=_0x6fe2[_0x5cca1a];return _0x249a8b;};'use strict';var Sequelize=require(_0x26fe('0x0'));module[_0x26fe('0x1')]={'name':{'type':Sequelize[_0x26fe('0x2')]},'description':{'type':Sequelize[_0x26fe('0x2')]},'html':{'type':Sequelize[_0x26fe('0x3')]}};
\ No newline at end of file
index 5a3e882..f59d592 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9aab=['intersection','query','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','Template','includeAll','include','rows','catch','show','find','create','body','user','role','userProfileId','autoAssociation','destroy','params','eml-format','zip-dir','request-promise','moment','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','get','Templates','UserProfileResource','then','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','keys','filters'];(function(_0x37d139,_0x5c17cf){var _0x379db9=function(_0x5ba61a){while(--_0x5ba61a){_0x37d139['push'](_0x37d139['shift']());}};_0x379db9(++_0x5c17cf);}(_0x9aab,0x1c7));var _0xb9aa=function(_0x142a22,_0x496ed7){_0x142a22=_0x142a22-0x0;var _0x780679=_0x9aab[_0x142a22];return _0x780679;};'use strict';var emlformat=require(_0xb9aa('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xb9aa('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xb9aa('0x2'));var moment=require(_0xb9aa('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xb9aa('0x4'));var util=require(_0xb9aa('0x5'));var path=require('path');var sox=require(_0xb9aa('0x6'));var csv=require(_0xb9aa('0x7'));var ejs=require(_0xb9aa('0x8'));var fs=require('fs');var fs_extra=require(_0xb9aa('0x9'));var _=require(_0xb9aa('0xa'));var squel=require(_0xb9aa('0xb'));var crypto=require(_0xb9aa('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xb9aa('0x7'));var querystring=require(_0xb9aa('0xd'));var Papa=require(_0xb9aa('0xe'));var Redis=require(_0xb9aa('0xf'));var authService=require(_0xb9aa('0x10'));var qs=require(_0xb9aa('0x11'));var as=require(_0xb9aa('0x12'));var hardwareService=require(_0xb9aa('0x13'));var logger=require(_0xb9aa('0x14'))(_0xb9aa('0x15'));var utils=require(_0xb9aa('0x16'));var config=require(_0xb9aa('0x17'));var licenseUtil=require(_0xb9aa('0x18'));var db=require(_0xb9aa('0x19'))['db'];function respondWithStatusCode(_0x319b55,_0x5f21c1){_0x5f21c1=_0x5f21c1||0xcc;return function(_0x2195e6){if(_0x2195e6){return _0x319b55['sendStatus'](_0x5f21c1);}return _0x319b55[_0xb9aa('0x1a')](_0x5f21c1)[_0xb9aa('0x1b')]();};}function respondWithResult(_0x442fe3,_0x59c8c9){_0x59c8c9=_0x59c8c9||0xc8;return function(_0x1c074a){if(_0x1c074a){return _0x442fe3[_0xb9aa('0x1a')](_0x59c8c9)[_0xb9aa('0x1c')](_0x1c074a);}};}function respondWithFilteredResult(_0x14cbf1,_0x5980a1){return function(_0x47fa19){if(_0x47fa19){var _0x22c6d2=typeof _0x5980a1[_0xb9aa('0x1d')]===_0xb9aa('0x1e')&&typeof _0x5980a1[_0xb9aa('0x1f')]==='undefined';var _0x9b8296=_0x47fa19[_0xb9aa('0x20')];var _0x3ea158=_0x22c6d2?0x0:_0x5980a1[_0xb9aa('0x1d')];var _0x5ec6bf=_0x22c6d2?_0x47fa19[_0xb9aa('0x20')]:_0x5980a1[_0xb9aa('0x1d')]+_0x5980a1['limit'];var _0x53c570;if(_0x5ec6bf>=_0x9b8296){_0x5ec6bf=_0x9b8296;_0x53c570=0xc8;}else{_0x53c570=0xce;}_0x14cbf1[_0xb9aa('0x1a')](_0x53c570);return _0x14cbf1[_0xb9aa('0x21')](_0xb9aa('0x22'),_0x3ea158+'-'+_0x5ec6bf+'/'+_0x9b8296)['json'](_0x47fa19);}return null;};}function patchUpdates(_0x5f601a){return function(_0x5f2858){try{jsonpatch['apply'](_0x5f2858,_0x5f601a,!![]);}catch(_0xc1f4df){return BPromise[_0xb9aa('0x23')](_0xc1f4df);}return _0x5f2858[_0xb9aa('0x24')]();};}function saveUpdates(_0x46e53a,_0x266b68){return function(_0x2795a2){if(_0x2795a2){return _0x2795a2[_0xb9aa('0x25')](_0x46e53a)['then'](function(_0xbe2b96){return _0xbe2b96;});}return null;};}function removeEntity(_0x494713,_0x568ef0){return function(_0x4d0de6){if(_0x4d0de6){return _0x4d0de6['destroy']()['then'](function(){var _0x351b5b=_0x4d0de6[_0xb9aa('0x26')]({'plain':!![]});var _0x7a90dc=_0xb9aa('0x27');return db[_0xb9aa('0x28')]['destroy']({'where':{'type':_0x7a90dc,'resourceId':_0x351b5b['id']}})[_0xb9aa('0x29')](function(){return _0x4d0de6;});})[_0xb9aa('0x29')](function(){_0x494713['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x41bc0a,_0x53cb67){return function(_0x2ebea9){if(!_0x2ebea9){_0x41bc0a['sendStatus'](0x194);}return _0x2ebea9;};}function handleError(_0xa1b27f,_0x3420d1){_0x3420d1=_0x3420d1||0x1f4;return function(_0x2ae9b8){logger[_0xb9aa('0x2a')](_0x2ae9b8[_0xb9aa('0x2b')]);if(_0x2ae9b8[_0xb9aa('0x2c')]){delete _0x2ae9b8['name'];}_0xa1b27f[_0xb9aa('0x1a')](_0x3420d1)[_0xb9aa('0x2d')](_0x2ae9b8);};}exports[_0xb9aa('0x2e')]=function(_0x4a3330,_0x37717d){var _0x5eedf8={},_0x323708={},_0x138077={'count':0x0,'rows':[]};var _0x33273e=_[_0xb9aa('0x2f')](db['Template'][_0xb9aa('0x30')],function(_0x3d9f98){return{'name':_0x3d9f98[_0xb9aa('0x31')],'type':_0x3d9f98[_0xb9aa('0x32')][_0xb9aa('0x33')]};});_0x323708[_0xb9aa('0x34')]=_[_0xb9aa('0x2f')](_0x33273e,_0xb9aa('0x2c'));_0x323708['query']=_[_0xb9aa('0x35')](_0x4a3330['query']);_0x323708[_0xb9aa('0x36')]=_[_0xb9aa('0x37')](_0x323708[_0xb9aa('0x34')],_0x323708[_0xb9aa('0x38')]);_0x5eedf8[_0xb9aa('0x39')]=_[_0xb9aa('0x37')](_0x323708[_0xb9aa('0x34')],qs[_0xb9aa('0x3a')](_0x4a3330['query'][_0xb9aa('0x3a')]));_0x5eedf8['attributes']=_0x5eedf8[_0xb9aa('0x39')][_0xb9aa('0x3b')]?_0x5eedf8[_0xb9aa('0x39')]:_0x323708['model'];if(!_0x4a3330[_0xb9aa('0x38')][_0xb9aa('0x3c')](_0xb9aa('0x3d'))){_0x5eedf8[_0xb9aa('0x1f')]=qs['limit'](_0x4a3330['query'][_0xb9aa('0x1f')]);_0x5eedf8[_0xb9aa('0x1d')]=qs[_0xb9aa('0x1d')](_0x4a3330['query'][_0xb9aa('0x1d')]);}_0x5eedf8[_0xb9aa('0x3e')]=qs[_0xb9aa('0x3f')](_0x4a3330[_0xb9aa('0x38')][_0xb9aa('0x3f')]);_0x5eedf8[_0xb9aa('0x40')]=qs['filters'](_[_0xb9aa('0x41')](_0x4a3330['query'],_0x323708['filters']),_0x33273e);if(_0x4a3330[_0xb9aa('0x38')][_0xb9aa('0x42')]){_0x5eedf8['where']=_[_0xb9aa('0x43')](_0x5eedf8[_0xb9aa('0x40')],{'$or':_[_0xb9aa('0x2f')](_0x33273e,function(_0xcafbcc){if(_0xcafbcc[_0xb9aa('0x32')]!==_0xb9aa('0x44')){var _0x176d2c={};_0x176d2c[_0xcafbcc[_0xb9aa('0x2c')]]={'$like':'%'+_0x4a3330[_0xb9aa('0x38')][_0xb9aa('0x42')]+'%'};return _0x176d2c;}})});}_0x5eedf8=_[_0xb9aa('0x43')]({},_0x5eedf8,_0x4a3330[_0xb9aa('0x45')]);var _0x15cdc5={'where':_0x5eedf8[_0xb9aa('0x40')]};return db[_0xb9aa('0x46')]['count'](_0x15cdc5)[_0xb9aa('0x29')](function(_0x42f8d2){_0x138077[_0xb9aa('0x20')]=_0x42f8d2;if(_0x4a3330[_0xb9aa('0x38')][_0xb9aa('0x47')]){_0x5eedf8[_0xb9aa('0x48')]=[{'all':!![]}];}return db['Template']['findAll'](_0x5eedf8);})[_0xb9aa('0x29')](function(_0x41accc){_0x138077[_0xb9aa('0x49')]=_0x41accc;return _0x138077;})['then'](respondWithFilteredResult(_0x37717d,_0x5eedf8))[_0xb9aa('0x4a')](handleError(_0x37717d,null));};exports[_0xb9aa('0x4b')]=function(_0x478e4c,_0x49576e){var _0x4a4d4d={'raw':!![],'where':{'id':_0x478e4c['params']['id']}},_0x425e8f={};_0x425e8f[_0xb9aa('0x34')]=_[_0xb9aa('0x35')](db[_0xb9aa('0x46')][_0xb9aa('0x30')]);_0x425e8f['query']=_[_0xb9aa('0x35')](_0x478e4c['query']);_0x425e8f[_0xb9aa('0x36')]=_[_0xb9aa('0x37')](_0x425e8f[_0xb9aa('0x34')],_0x425e8f['query']);_0x4a4d4d[_0xb9aa('0x39')]=_[_0xb9aa('0x37')](_0x425e8f[_0xb9aa('0x34')],qs[_0xb9aa('0x3a')](_0x478e4c[_0xb9aa('0x38')][_0xb9aa('0x3a')]));_0x4a4d4d[_0xb9aa('0x39')]=_0x4a4d4d[_0xb9aa('0x39')]['length']?_0x4a4d4d['attributes']:_0x425e8f[_0xb9aa('0x34')];if(_0x478e4c[_0xb9aa('0x38')][_0xb9aa('0x47')]){_0x4a4d4d['include']=[{'all':!![]}];}_0x4a4d4d=_['merge']({},_0x4a4d4d,_0x478e4c[_0xb9aa('0x45')]);return db[_0xb9aa('0x46')][_0xb9aa('0x4c')](_0x4a4d4d)['then'](handleEntityNotFound(_0x49576e,null))[_0xb9aa('0x29')](respondWithResult(_0x49576e,null))[_0xb9aa('0x4a')](handleError(_0x49576e,null));};exports[_0xb9aa('0x4d')]=function(_0xc9764,_0x16b783){return db[_0xb9aa('0x46')][_0xb9aa('0x4d')](_0xc9764[_0xb9aa('0x4e')],{})['then'](function(_0xf3e738){var _0x514f75=_0xc9764[_0xb9aa('0x4f')]['get']({'plain':!![]});if(!_0x514f75)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x514f75[_0xb9aa('0x50')]===_0xb9aa('0x4f')){var _0x14b496=_0xf3e738[_0xb9aa('0x26')]({'plain':!![]});var _0x42d0f7=_0xb9aa('0x27');return db['UserProfileSection']['find']({'where':{'name':_0x42d0f7,'userProfileId':_0x514f75[_0xb9aa('0x51')]},'raw':!![]})[_0xb9aa('0x29')](function(_0x5cc7d6){if(_0x5cc7d6&&_0x5cc7d6[_0xb9aa('0x52')]===0x0){return db[_0xb9aa('0x28')][_0xb9aa('0x4d')]({'name':_0x14b496[_0xb9aa('0x2c')],'resourceId':_0x14b496['id'],'type':_0x5cc7d6['name'],'sectionId':_0x5cc7d6['id']},{})[_0xb9aa('0x29')](function(){return _0xf3e738;});}else{return _0xf3e738;}})['catch'](function(_0x2ad8f3){logger[_0xb9aa('0x2a')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x2ad8f3);throw _0x2ad8f3;});}return _0xf3e738;})[_0xb9aa('0x29')](respondWithResult(_0x16b783,0xc9))['catch'](handleError(_0x16b783,null));};exports['update']=function(_0x53b648,_0x2a5afb){if(_0x53b648[_0xb9aa('0x4e')]['id']){delete _0x53b648[_0xb9aa('0x4e')]['id'];}return db[_0xb9aa('0x46')]['find']({'where':{'id':_0x53b648['params']['id']}})[_0xb9aa('0x29')](handleEntityNotFound(_0x2a5afb,null))[_0xb9aa('0x29')](saveUpdates(_0x53b648[_0xb9aa('0x4e')],null))[_0xb9aa('0x29')](respondWithResult(_0x2a5afb,null))[_0xb9aa('0x4a')](handleError(_0x2a5afb,null));};exports[_0xb9aa('0x53')]=function(_0x3bbf6e,_0x5ce855){return db['Template'][_0xb9aa('0x4c')]({'where':{'id':_0x3bbf6e[_0xb9aa('0x54')]['id']}})['then'](handleEntityNotFound(_0x5ce855,null))[_0xb9aa('0x29')](removeEntity(_0x5ce855,null))[_0xb9aa('0x4a')](handleError(_0x5ce855,null));};
\ No newline at end of file
+var _0x1796=['VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','params','keys','Template','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','update','body','eml-format','rimraf','zip-dir','bluebird','mustache','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','then','Templates','UserProfileResource','destroy','error','stack','name','send','rawAttributes','type','key','model','map','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge'];(function(_0x2d7ead,_0x48cb08){var _0x4ecf0e=function(_0xca9c69){while(--_0xca9c69){_0x2d7ead['push'](_0x2d7ead['shift']());}};_0x4ecf0e(++_0x48cb08);}(_0x1796,0xbc));var _0x6179=function(_0x411add,_0x1aed38){_0x411add=_0x411add-0x0;var _0x238242=_0x1796[_0x411add];return _0x238242;};'use strict';var emlformat=require(_0x6179('0x0'));var rimraf=require(_0x6179('0x1'));var zipdir=require(_0x6179('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x6179('0x3'));var Mustache=require(_0x6179('0x4'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x6179('0x5'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x6179('0x6'));var squel=require(_0x6179('0x7'));var crypto=require(_0x6179('0x8'));var jsforce=require(_0x6179('0x9'));var deskjs=require(_0x6179('0xa'));var toCsv=require(_0x6179('0xb'));var querystring=require(_0x6179('0xc'));var Papa=require(_0x6179('0xd'));var Redis=require(_0x6179('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x6179('0xf'));var as=require(_0x6179('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x6179('0x11'));var utils=require(_0x6179('0x12'));var config=require(_0x6179('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x6179('0x14'))['db'];function respondWithStatusCode(_0x11cb29,_0x1a07cb){_0x1a07cb=_0x1a07cb||0xcc;return function(_0x23ec05){if(_0x23ec05){return _0x11cb29[_0x6179('0x15')](_0x1a07cb);}return _0x11cb29[_0x6179('0x16')](_0x1a07cb)[_0x6179('0x17')]();};}function respondWithResult(_0x362b1b,_0x7a528d){_0x7a528d=_0x7a528d||0xc8;return function(_0x125df3){if(_0x125df3){return _0x362b1b[_0x6179('0x16')](_0x7a528d)[_0x6179('0x18')](_0x125df3);}};}function respondWithFilteredResult(_0x59d0e3,_0x4ef66b){return function(_0x2f6c57){if(_0x2f6c57){var _0x383993=typeof _0x4ef66b[_0x6179('0x19')]===_0x6179('0x1a')&&typeof _0x4ef66b[_0x6179('0x1b')]==='undefined';var _0x131e50=_0x2f6c57['count'];var _0x52eb95=_0x383993?0x0:_0x4ef66b['offset'];var _0x193cb6=_0x383993?_0x2f6c57[_0x6179('0x1c')]:_0x4ef66b[_0x6179('0x19')]+_0x4ef66b[_0x6179('0x1b')];var _0x16f5da;if(_0x193cb6>=_0x131e50){_0x193cb6=_0x131e50;_0x16f5da=0xc8;}else{_0x16f5da=0xce;}_0x59d0e3['status'](_0x16f5da);return _0x59d0e3[_0x6179('0x1d')](_0x6179('0x1e'),_0x52eb95+'-'+_0x193cb6+'/'+_0x131e50)['json'](_0x2f6c57);}return null;};}function patchUpdates(_0x31bf55){return function(_0x46be8e){try{jsonpatch['apply'](_0x46be8e,_0x31bf55,!![]);}catch(_0x4b336e){return BPromise[_0x6179('0x1f')](_0x4b336e);}return _0x46be8e['save']();};}function saveUpdates(_0x47a27b,_0x35bed8){return function(_0x30dec9){if(_0x30dec9){return _0x30dec9['update'](_0x47a27b)[_0x6179('0x20')](function(_0x434767){return _0x434767;});}return null;};}function removeEntity(_0xf03144,_0x5024bf){return function(_0x3e182){if(_0x3e182){return _0x3e182['destroy']()[_0x6179('0x20')](function(){var _0x53397d=_0x3e182['get']({'plain':!![]});var _0x2ea886=_0x6179('0x21');return db[_0x6179('0x22')][_0x6179('0x23')]({'where':{'type':_0x2ea886,'resourceId':_0x53397d['id']}})[_0x6179('0x20')](function(){return _0x3e182;});})[_0x6179('0x20')](function(){_0xf03144['status'](0xcc)[_0x6179('0x17')]();});}};}function handleEntityNotFound(_0x43658f,_0x55dde3){return function(_0x24310e){if(!_0x24310e){_0x43658f[_0x6179('0x15')](0x194);}return _0x24310e;};}function handleError(_0xc9e807,_0x1a251f){_0x1a251f=_0x1a251f||0x1f4;return function(_0x1c6605){logger[_0x6179('0x24')](_0x1c6605[_0x6179('0x25')]);if(_0x1c6605[_0x6179('0x26')]){delete _0x1c6605[_0x6179('0x26')];}_0xc9e807['status'](_0x1a251f)[_0x6179('0x27')](_0x1c6605);};}exports['index']=function(_0x5e4937,_0x276205){var _0x434c68={},_0x1a5ee0={},_0x2688ed={'count':0x0,'rows':[]};var _0x4e672a=_['map'](db['Template'][_0x6179('0x28')],function(_0x18819b){return{'name':_0x18819b['fieldName'],'type':_0x18819b[_0x6179('0x29')][_0x6179('0x2a')]};});_0x1a5ee0[_0x6179('0x2b')]=_[_0x6179('0x2c')](_0x4e672a,_0x6179('0x26'));_0x1a5ee0[_0x6179('0x2d')]=_['keys'](_0x5e4937[_0x6179('0x2d')]);_0x1a5ee0[_0x6179('0x2e')]=_[_0x6179('0x2f')](_0x1a5ee0[_0x6179('0x2b')],_0x1a5ee0['query']);_0x434c68[_0x6179('0x30')]=_[_0x6179('0x2f')](_0x1a5ee0[_0x6179('0x2b')],qs['fields'](_0x5e4937['query'][_0x6179('0x31')]));_0x434c68['attributes']=_0x434c68[_0x6179('0x30')][_0x6179('0x32')]?_0x434c68[_0x6179('0x30')]:_0x1a5ee0['model'];if(!_0x5e4937[_0x6179('0x2d')][_0x6179('0x33')](_0x6179('0x34'))){_0x434c68[_0x6179('0x1b')]=qs[_0x6179('0x1b')](_0x5e4937['query'][_0x6179('0x1b')]);_0x434c68['offset']=qs['offset'](_0x5e4937['query'][_0x6179('0x19')]);}_0x434c68[_0x6179('0x35')]=qs['sort'](_0x5e4937['query'][_0x6179('0x36')]);_0x434c68[_0x6179('0x37')]=qs[_0x6179('0x2e')](_[_0x6179('0x38')](_0x5e4937[_0x6179('0x2d')],_0x1a5ee0[_0x6179('0x2e')]),_0x4e672a);if(_0x5e4937[_0x6179('0x2d')]['filter']){_0x434c68[_0x6179('0x37')]=_[_0x6179('0x39')](_0x434c68[_0x6179('0x37')],{'$or':_['map'](_0x4e672a,function(_0x4abec4){if(_0x4abec4[_0x6179('0x29')]!==_0x6179('0x3a')){var _0x1d1756={};_0x1d1756[_0x4abec4['name']]={'$like':'%'+_0x5e4937['query'][_0x6179('0x3b')]+'%'};return _0x1d1756;}})});}_0x434c68=_[_0x6179('0x39')]({},_0x434c68,_0x5e4937[_0x6179('0x3c')]);var _0x2a16b0={'where':_0x434c68['where']};return db['Template']['count'](_0x2a16b0)[_0x6179('0x20')](function(_0x5ddb1b){_0x2688ed[_0x6179('0x1c')]=_0x5ddb1b;if(_0x5e4937[_0x6179('0x2d')][_0x6179('0x3d')]){_0x434c68[_0x6179('0x3e')]=[{'all':!![]}];}return db['Template'][_0x6179('0x3f')](_0x434c68);})[_0x6179('0x20')](function(_0x3c0df2){_0x2688ed[_0x6179('0x40')]=_0x3c0df2;return _0x2688ed;})[_0x6179('0x20')](respondWithFilteredResult(_0x276205,_0x434c68))[_0x6179('0x41')](handleError(_0x276205,null));};exports[_0x6179('0x42')]=function(_0x2277df,_0x3b4684){var _0x21d59b={'raw':!![],'where':{'id':_0x2277df[_0x6179('0x43')]['id']}},_0x4bf676={};_0x4bf676[_0x6179('0x2b')]=_[_0x6179('0x44')](db[_0x6179('0x45')][_0x6179('0x28')]);_0x4bf676[_0x6179('0x2d')]=_[_0x6179('0x44')](_0x2277df[_0x6179('0x2d')]);_0x4bf676[_0x6179('0x2e')]=_[_0x6179('0x2f')](_0x4bf676[_0x6179('0x2b')],_0x4bf676[_0x6179('0x2d')]);_0x21d59b[_0x6179('0x30')]=_[_0x6179('0x2f')](_0x4bf676['model'],qs[_0x6179('0x31')](_0x2277df[_0x6179('0x2d')][_0x6179('0x31')]));_0x21d59b[_0x6179('0x30')]=_0x21d59b[_0x6179('0x30')][_0x6179('0x32')]?_0x21d59b['attributes']:_0x4bf676[_0x6179('0x2b')];if(_0x2277df[_0x6179('0x2d')]['includeAll']){_0x21d59b[_0x6179('0x3e')]=[{'all':!![]}];}_0x21d59b=_['merge']({},_0x21d59b,_0x2277df[_0x6179('0x3c')]);return db[_0x6179('0x45')][_0x6179('0x46')](_0x21d59b)[_0x6179('0x20')](handleEntityNotFound(_0x3b4684,null))[_0x6179('0x20')](respondWithResult(_0x3b4684,null))[_0x6179('0x41')](handleError(_0x3b4684,null));};exports[_0x6179('0x47')]=function(_0x203f40,_0xc4adf9){return db[_0x6179('0x45')][_0x6179('0x47')](_0x203f40['body'],{})[_0x6179('0x20')](function(_0x21747e){var _0x43f4d8=_0x203f40[_0x6179('0x48')][_0x6179('0x49')]({'plain':!![]});if(!_0x43f4d8)throw new Error(_0x6179('0x4a'));if(_0x43f4d8[_0x6179('0x4b')]==='user'){var _0x42d8f4=_0x21747e[_0x6179('0x49')]({'plain':!![]});var _0x3a138e=_0x6179('0x21');return db[_0x6179('0x4c')]['find']({'where':{'name':_0x3a138e,'userProfileId':_0x43f4d8[_0x6179('0x4d')]},'raw':!![]})[_0x6179('0x20')](function(_0x71d5c2){if(_0x71d5c2&&_0x71d5c2[_0x6179('0x4e')]===0x0){return db['UserProfileResource']['create']({'name':_0x42d8f4['name'],'resourceId':_0x42d8f4['id'],'type':_0x71d5c2[_0x6179('0x26')],'sectionId':_0x71d5c2['id']},{})[_0x6179('0x20')](function(){return _0x21747e;});}else{return _0x21747e;}})[_0x6179('0x41')](function(_0x5e43b8){logger[_0x6179('0x24')](_0x6179('0x4f'),_0x5e43b8);throw _0x5e43b8;});}return _0x21747e;})['then'](respondWithResult(_0xc4adf9,0xc9))[_0x6179('0x41')](handleError(_0xc4adf9,null));};exports[_0x6179('0x50')]=function(_0xef1cfb,_0x2f657b){if(_0xef1cfb['body']['id']){delete _0xef1cfb[_0x6179('0x51')]['id'];}return db['Template'][_0x6179('0x46')]({'where':{'id':_0xef1cfb[_0x6179('0x43')]['id']}})['then'](handleEntityNotFound(_0x2f657b,null))['then'](saveUpdates(_0xef1cfb['body'],null))[_0x6179('0x20')](respondWithResult(_0x2f657b,null))['catch'](handleError(_0x2f657b,null));};exports[_0x6179('0x23')]=function(_0x5ce68f,_0x195fb1){return db[_0x6179('0x45')][_0x6179('0x46')]({'where':{'id':_0x5ce68f[_0x6179('0x43')]['id']}})['then'](handleEntityNotFound(_0x195fb1,null))['then'](removeEntity(_0x195fb1,null))['catch'](handleError(_0x195fb1,null));};
\ No newline at end of file
index 1458ca6..4d4e91b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa4ff=['request-promise','path','rimraf','../../config/environment','exports','Template','tools_templates','lodash','api','moment'];(function(_0x1b9866,_0x4e5e55){var _0x483123=function(_0x2fb748){while(--_0x2fb748){_0x1b9866['push'](_0x1b9866['shift']());}};_0x483123(++_0x4e5e55);}(_0xa4ff,0xb1));var _0xfa4f=function(_0x35228c,_0x1e6824){_0x35228c=_0x35228c-0x0;var _0x56b5c0=_0xa4ff[_0x35228c];return _0x56b5c0;};'use strict';var _=require(_0xfa4f('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xfa4f('0x1'));var moment=require(_0xfa4f('0x2'));var BPromise=require('bluebird');var rp=require(_0xfa4f('0x3'));var fs=require('fs');var path=require(_0xfa4f('0x4'));var rimraf=require(_0xfa4f('0x5'));var config=require(_0xfa4f('0x6'));var attributes=require('./template.attributes');module[_0xfa4f('0x7')]=function(_0x18992b,_0x2134b9){return _0x18992b['define'](_0xfa4f('0x8'),attributes,{'tableName':_0xfa4f('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb348=['api','moment','request-promise','path','rimraf','../../config/environment','define','Template','tools_templates','../../config/logger'];(function(_0x3e7b86,_0x3a4c16){var _0x56ef5d=function(_0x29c0f0){while(--_0x29c0f0){_0x3e7b86['push'](_0x3e7b86['shift']());}};_0x56ef5d(++_0x3a4c16);}(_0xb348,0x1e9));var _0x8b34=function(_0x4043f2,_0x43ab15){_0x4043f2=_0x4043f2-0x0;var _0x5d1c80=_0xb348[_0x4043f2];return _0x5d1c80;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x8b34('0x0'))(_0x8b34('0x1'));var moment=require(_0x8b34('0x2'));var BPromise=require('bluebird');var rp=require(_0x8b34('0x3'));var fs=require('fs');var path=require(_0x8b34('0x4'));var rimraf=require(_0x8b34('0x5'));var config=require(_0x8b34('0x6'));var attributes=require('./template.attributes');module['exports']=function(_0x2e5496,_0x5cd814){return _0x2e5496[_0x8b34('0x7')](_0x8b34('0x8'),attributes,{'tableName':_0x8b34('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 727e45b..16066de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8404=['Template,\x20%s,\x20%s,\x20%s','code','error','message','result','catch','GetTemplate','findAll','options','raw','where','limit','include','map','attributes','model','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','request','then','info','Template,\x20%s,\x20%s','debug'];(function(_0xa134a7,_0x5ca288){var _0x512ca2=function(_0x13ec3c){while(--_0x13ec3c){_0xa134a7['push'](_0xa134a7['shift']());}};_0x512ca2(++_0x5ca288);}(_0x8404,0x17b));var _0x4840=function(_0x172367,_0x342ac2){_0x172367=_0x172367-0x0;var _0x462ff5=_0x8404[_0x172367];return _0x462ff5;};'use strict';var _=require(_0x4840('0x0'));var util=require(_0x4840('0x1'));var moment=require(_0x4840('0x2'));var BPromise=require(_0x4840('0x3'));var rs=require(_0x4840('0x4'));var fs=require('fs');var Redis=require(_0x4840('0x5'));var db=require(_0x4840('0x6'))['db'];var utils=require(_0x4840('0x7'));var logger=require(_0x4840('0x8'))(_0x4840('0x9'));var config=require(_0x4840('0xa'));var jayson=require(_0x4840('0xb'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x35e0f2,_0x30208c,_0x438c96){return new BPromise(function(_0x38b628,_0x24b50b){return client[_0x4840('0xc')](_0x35e0f2,_0x438c96)[_0x4840('0xd')](function(_0x3ac36d){logger[_0x4840('0xe')](_0x4840('0xf'),_0x30208c,'request\x20sent');logger[_0x4840('0x10')](_0x4840('0x11'),_0x30208c,'request\x20sent',JSON['stringify'](_0x3ac36d));if(_0x3ac36d['error']){if(_0x3ac36d['error'][_0x4840('0x12')]===0x1f4){logger[_0x4840('0x13')]('Template,\x20%s,\x20%s',_0x30208c,_0x3ac36d[_0x4840('0x13')]['message']);return _0x24b50b(_0x3ac36d[_0x4840('0x13')][_0x4840('0x14')]);}logger[_0x4840('0x13')](_0x4840('0xf'),_0x30208c,_0x3ac36d[_0x4840('0x13')][_0x4840('0x14')]);return _0x38b628(_0x3ac36d[_0x4840('0x13')][_0x4840('0x14')]);}else{logger[_0x4840('0xe')](_0x4840('0xf'),_0x30208c,'request\x20sent');_0x38b628(_0x3ac36d[_0x4840('0x15')][_0x4840('0x14')]);}})[_0x4840('0x16')](function(_0x4b1388){logger[_0x4840('0x13')](_0x4840('0xf'),_0x30208c,_0x4b1388);_0x24b50b(_0x4b1388);});});}exports[_0x4840('0x17')]=function(_0x5e5460){var _0x30b240=this;return new Promise(function(_0x411a32,_0x431cd1){return db['Template'][_0x4840('0x18')]({'raw':_0x5e5460[_0x4840('0x19')]?_0x5e5460[_0x4840('0x19')][_0x4840('0x1a')]===undefined?!![]:![]:!![],'where':_0x5e5460[_0x4840('0x19')]?_0x5e5460['options'][_0x4840('0x1b')]||null:null,'attributes':_0x5e5460[_0x4840('0x19')]?_0x5e5460['options']['attributes']||null:null,'limit':_0x5e5460[_0x4840('0x19')]?_0x5e5460['options'][_0x4840('0x1c')]||null:null,'include':_0x5e5460['options']?_0x5e5460[_0x4840('0x19')][_0x4840('0x1d')]?_[_0x4840('0x1e')](_0x5e5460[_0x4840('0x19')][_0x4840('0x1d')],function(_0xaf602a){return{'model':db[_0xaf602a['model']],'as':_0xaf602a['as'],'attributes':_0xaf602a[_0x4840('0x1f')],'include':_0xaf602a['include']?_[_0x4840('0x1e')](_0xaf602a[_0x4840('0x1d')],function(_0x454fe0){return{'model':db[_0x454fe0[_0x4840('0x20')]],'as':_0x454fe0['as'],'attributes':_0x454fe0[_0x4840('0x1f')],'include':_0x454fe0['include']?_['map'](_0x454fe0[_0x4840('0x1d')],function(_0x5d16db){return{'model':db[_0x5d16db[_0x4840('0x20')]],'as':_0x5d16db['as'],'attributes':_0x5d16db[_0x4840('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x4840('0xd')](function(_0x5a09b8){logger[_0x4840('0xe')](_0x4840('0x17'),_0x5e5460);logger['debug'](_0x4840('0x17'),_0x5e5460,JSON['stringify'](_0x5a09b8));_0x411a32(_0x5a09b8);})[_0x4840('0x16')](function(_0x59b3a5){logger[_0x4840('0x13')](_0x4840('0x17'),_0x59b3a5[_0x4840('0x14')],_0x5e5460);_0x431cd1(_0x30b240['error'](0x1f4,_0x59b3a5[_0x4840('0x14')]));});});};
\ No newline at end of file
+var _0x1179=['debug','Template,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetTemplate','Template','findAll','options','raw','where','limit','include','model','map','attributes','lodash','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','jayson/promise','client','request','then','info','Template,\x20%s,\x20%s','request\x20sent'];(function(_0x526a46,_0x119cc9){var _0x299cab=function(_0x49722b){while(--_0x49722b){_0x526a46['push'](_0x526a46['shift']());}};_0x299cab(++_0x119cc9);}(_0x1179,0x93));var _0x9117=function(_0x1d090a,_0x355f6b){_0x1d090a=_0x1d090a-0x0;var _0x2301a1=_0x1179[_0x1d090a];return _0x2301a1;};'use strict';var _=require(_0x9117('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x9117('0x1'));var rs=require(_0x9117('0x2'));var fs=require('fs');var Redis=require(_0x9117('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x9117('0x4'));var logger=require(_0x9117('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0x9117('0x6'));var client=jayson[_0x9117('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x695b3e,_0x3853dd,_0x589e0b){return new BPromise(function(_0x223e1f,_0x30bd0f){return client[_0x9117('0x8')](_0x695b3e,_0x589e0b)[_0x9117('0x9')](function(_0x5d5a6c){logger[_0x9117('0xa')](_0x9117('0xb'),_0x3853dd,_0x9117('0xc'));logger[_0x9117('0xd')](_0x9117('0xe'),_0x3853dd,_0x9117('0xc'),JSON[_0x9117('0xf')](_0x5d5a6c));if(_0x5d5a6c[_0x9117('0x10')]){if(_0x5d5a6c[_0x9117('0x10')][_0x9117('0x11')]===0x1f4){logger[_0x9117('0x10')](_0x9117('0xb'),_0x3853dd,_0x5d5a6c['error'][_0x9117('0x12')]);return _0x30bd0f(_0x5d5a6c[_0x9117('0x10')]['message']);}logger['error'](_0x9117('0xb'),_0x3853dd,_0x5d5a6c[_0x9117('0x10')]['message']);return _0x223e1f(_0x5d5a6c[_0x9117('0x10')]['message']);}else{logger[_0x9117('0xa')](_0x9117('0xb'),_0x3853dd,'request\x20sent');_0x223e1f(_0x5d5a6c[_0x9117('0x13')][_0x9117('0x12')]);}})[_0x9117('0x14')](function(_0x257127){logger['error']('Template,\x20%s,\x20%s',_0x3853dd,_0x257127);_0x30bd0f(_0x257127);});});}exports[_0x9117('0x15')]=function(_0x4b9b72){var _0x23ac6b=this;return new Promise(function(_0x5c3925,_0x7fd59f){return db[_0x9117('0x16')][_0x9117('0x17')]({'raw':_0x4b9b72[_0x9117('0x18')]?_0x4b9b72[_0x9117('0x18')][_0x9117('0x19')]===undefined?!![]:![]:!![],'where':_0x4b9b72[_0x9117('0x18')]?_0x4b9b72[_0x9117('0x18')][_0x9117('0x1a')]||null:null,'attributes':_0x4b9b72[_0x9117('0x18')]?_0x4b9b72['options']['attributes']||null:null,'limit':_0x4b9b72[_0x9117('0x18')]?_0x4b9b72['options'][_0x9117('0x1b')]||null:null,'include':_0x4b9b72[_0x9117('0x18')]?_0x4b9b72['options'][_0x9117('0x1c')]?_['map'](_0x4b9b72[_0x9117('0x18')][_0x9117('0x1c')],function(_0x5f18a7){return{'model':db[_0x5f18a7[_0x9117('0x1d')]],'as':_0x5f18a7['as'],'attributes':_0x5f18a7['attributes'],'include':_0x5f18a7['include']?_[_0x9117('0x1e')](_0x5f18a7[_0x9117('0x1c')],function(_0x3ea4ad){return{'model':db[_0x3ea4ad['model']],'as':_0x3ea4ad['as'],'attributes':_0x3ea4ad[_0x9117('0x1f')],'include':_0x3ea4ad[_0x9117('0x1c')]?_[_0x9117('0x1e')](_0x3ea4ad[_0x9117('0x1c')],function(_0x272fc1){return{'model':db[_0x272fc1[_0x9117('0x1d')]],'as':_0x272fc1['as'],'attributes':_0x272fc1[_0x9117('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x9117('0x9')](function(_0x14f738){logger[_0x9117('0xa')]('GetTemplate',_0x4b9b72);logger[_0x9117('0xd')](_0x9117('0x15'),_0x4b9b72,JSON[_0x9117('0xf')](_0x14f738));_0x5c3925(_0x14f738);})[_0x9117('0x14')](function(_0x15b45d){logger[_0x9117('0x10')](_0x9117('0x15'),_0x15b45d[_0x9117('0x12')],_0x4b9b72);_0x7fd59f(_0x23ac6b[_0x9117('0x10')](0x1f4,_0x15b45d[_0x9117('0x12')]));});});};
\ No newline at end of file
index 540a627..ed928a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c13=['post','create','addAllCondition','/:id/any_conditions','addAnyCondition','addAction','update','delete','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./trigger.controller','get','isAuthenticated','/:id','/:id/all_conditions','getAllConditions','getAnyConditions','getActions'];(function(_0x5bab4f,_0x5828c9){var _0x296d5c=function(_0x2e6d96){while(--_0x2e6d96){_0x5bab4f['push'](_0x5bab4f['shift']());}};_0x296d5c(++_0x5828c9);}(_0x5c13,0x103));var _0x35c1=function(_0x5e9d35,_0x382c91){_0x5e9d35=_0x5e9d35-0x0;var _0x3beb2e=_0x5c13[_0x5e9d35];return _0x3beb2e;};'use strict';var multer=require(_0x35c1('0x0'));var util=require(_0x35c1('0x1'));var path=require(_0x35c1('0x2'));var timeout=require(_0x35c1('0x3'));var express=require(_0x35c1('0x4'));var router=express[_0x35c1('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x35c1('0x6'));var interaction=require(_0x35c1('0x7'));var config=require('../../config/environment');var controller=require(_0x35c1('0x8'));router[_0x35c1('0x9')]('/',auth[_0x35c1('0xa')](),controller['index']);router[_0x35c1('0x9')](_0x35c1('0xb'),auth['isAuthenticated'](),controller['show']);router[_0x35c1('0x9')](_0x35c1('0xc'),auth[_0x35c1('0xa')](),controller[_0x35c1('0xd')]);router[_0x35c1('0x9')]('/:id/any_conditions',auth[_0x35c1('0xa')](),controller[_0x35c1('0xe')]);router[_0x35c1('0x9')]('/:id/actions',auth['isAuthenticated'](),controller[_0x35c1('0xf')]);router[_0x35c1('0x10')]('/',auth[_0x35c1('0xa')](),controller[_0x35c1('0x11')]);router[_0x35c1('0x10')]('/:id/all_conditions',auth['isAuthenticated'](),controller[_0x35c1('0x12')]);router[_0x35c1('0x10')](_0x35c1('0x13'),auth[_0x35c1('0xa')](),controller[_0x35c1('0x14')]);router[_0x35c1('0x10')]('/:id/actions',auth['isAuthenticated'](),controller[_0x35c1('0x15')]);router['put']('/:id',auth[_0x35c1('0xa')](),controller[_0x35c1('0x16')]);router[_0x35c1('0x17')](_0x35c1('0xb'),auth[_0x35c1('0xa')](),controller['destroy']);module[_0x35c1('0x18')]=router;
\ No newline at end of file
+var _0xde55=['./trigger.controller','index','get','isAuthenticated','show','/:id/all_conditions','getAllConditions','/:id/any_conditions','getActions','post','create','addAnyCondition','addAction','put','/:id','delete','destroy','multer','util','path','connect-timeout','fs-extra','../../components/interaction/service','../../config/environment'];(function(_0x4d321a,_0x43afa7){var _0x123ec2=function(_0x7ecee4){while(--_0x7ecee4){_0x4d321a['push'](_0x4d321a['shift']());}};_0x123ec2(++_0x43afa7);}(_0xde55,0xd1));var _0x5de5=function(_0x335d52,_0x1f04f4){_0x335d52=_0x335d52-0x0;var _0x1553bd=_0xde55[_0x335d52];return _0x1553bd;};'use strict';var multer=require(_0x5de5('0x0'));var util=require(_0x5de5('0x1'));var path=require(_0x5de5('0x2'));var timeout=require(_0x5de5('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x5de5('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x5de5('0x5'));var config=require(_0x5de5('0x6'));var controller=require(_0x5de5('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0x5de5('0x8')]);router[_0x5de5('0x9')]('/:id',auth[_0x5de5('0xa')](),controller[_0x5de5('0xb')]);router[_0x5de5('0x9')](_0x5de5('0xc'),auth[_0x5de5('0xa')](),controller[_0x5de5('0xd')]);router[_0x5de5('0x9')](_0x5de5('0xe'),auth[_0x5de5('0xa')](),controller['getAnyConditions']);router[_0x5de5('0x9')]('/:id/actions',auth[_0x5de5('0xa')](),controller[_0x5de5('0xf')]);router[_0x5de5('0x10')]('/',auth[_0x5de5('0xa')](),controller[_0x5de5('0x11')]);router[_0x5de5('0x10')]('/:id/all_conditions',auth['isAuthenticated'](),controller['addAllCondition']);router[_0x5de5('0x10')]('/:id/any_conditions',auth[_0x5de5('0xa')](),controller[_0x5de5('0x12')]);router[_0x5de5('0x10')]('/:id/actions',auth[_0x5de5('0xa')](),controller[_0x5de5('0x13')]);router[_0x5de5('0x14')](_0x5de5('0x15'),auth['isAuthenticated'](),controller['update']);router[_0x5de5('0x16')](_0x5de5('0x15'),auth[_0x5de5('0xa')](),controller[_0x5de5('0x17')]);module['exports']=router;
\ No newline at end of file
index f8cdeef..aa179aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x27ea=['BOOLEAN','sequelize','exports','STRING'];(function(_0x1562a2,_0x2e4655){var _0x39a636=function(_0x25483a){while(--_0x25483a){_0x1562a2['push'](_0x1562a2['shift']());}};_0x39a636(++_0x2e4655);}(_0x27ea,0x11d));var _0xa27e=function(_0x1ba449,_0x4ee710){_0x1ba449=_0x1ba449-0x0;var _0x1a5e77=_0x27ea[_0x1ba449];return _0x1a5e77;};'use strict';var Sequelize=require(_0xa27e('0x0'));module[_0xa27e('0x1')]={'name':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0xa27e('0x2')]},'description':{'type':Sequelize[_0xa27e('0x2')]},'status':{'type':Sequelize[_0xa27e('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0x0f03=['STRING','BOOLEAN','exports'];(function(_0x3e82db,_0x185e54){var _0x3a6583=function(_0x694d89){while(--_0x694d89){_0x3e82db['push'](_0x3e82db['shift']());}};_0x3a6583(++_0x185e54);}(_0x0f03,0x18e));var _0x30f0=function(_0x27e18e,_0x2be332){_0x27e18e=_0x27e18e-0x0;var _0x464d0b=_0x0f03[_0x27e18e];return _0x464d0b;};'use strict';var Sequelize=require('sequelize');module[_0x30f0('0x0')]={'name':{'type':Sequelize[_0x30f0('0x1')]},'channel':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x30f0('0x1')]},'status':{'type':Sequelize[_0x30f0('0x2')],'defaultValue':![]}};
\ No newline at end of file
index f59bd84..c61115f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff01=['rimraf','fast-json-patch','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','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','offset','undefined','count','limit','set','Content-Range','json','apply','reject','save','destroy','then','get','Triggers','sendStatus','error','stack','name','send','map','Trigger','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','find','create','body','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','addAllCondition','TriggerAllId','Condition','addAnyCondition','getAllConditions','filter','pick','getAnyConditions','TriggerId','Action','getActions','findOne'];(function(_0x3a3964,_0x438f17){var _0x2bd0e9=function(_0x376afa){while(--_0x376afa){_0x3a3964['push'](_0x3a3964['shift']());}};_0x2bd0e9(++_0x438f17);}(_0xff01,0x1e5));var _0x1ff0=function(_0x256d38,_0x4a9eb2){_0x256d38=_0x256d38-0x0;var _0x1603eb=_0xff01[_0x256d38];return _0x1603eb;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x1ff0('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x1ff0('0x1'));var rp=require('request-promise');var moment=require(_0x1ff0('0x2'));var BPromise=require(_0x1ff0('0x3'));var Mustache=require('mustache');var util=require(_0x1ff0('0x4'));var path=require(_0x1ff0('0x5'));var sox=require(_0x1ff0('0x6'));var csv=require(_0x1ff0('0x7'));var ejs=require(_0x1ff0('0x8'));var fs=require('fs');var fs_extra=require(_0x1ff0('0x9'));var _=require(_0x1ff0('0xa'));var squel=require(_0x1ff0('0xb'));var crypto=require(_0x1ff0('0xc'));var jsforce=require(_0x1ff0('0xd'));var deskjs=require(_0x1ff0('0xe'));var toCsv=require(_0x1ff0('0x7'));var querystring=require(_0x1ff0('0xf'));var Papa=require(_0x1ff0('0x10'));var Redis=require(_0x1ff0('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x1ff0('0x12'));var as=require(_0x1ff0('0x13'));var hardwareService=require(_0x1ff0('0x14'));var logger=require('../../config/logger')(_0x1ff0('0x15'));var utils=require(_0x1ff0('0x16'));var config=require(_0x1ff0('0x17'));var licenseUtil=require(_0x1ff0('0x18'));var db=require(_0x1ff0('0x19'))['db'];function respondWithStatusCode(_0x2f60a8,_0x3f5ccf){_0x3f5ccf=_0x3f5ccf||0xcc;return function(_0x2653f8){if(_0x2653f8){return _0x2f60a8['sendStatus'](_0x3f5ccf);}return _0x2f60a8[_0x1ff0('0x1a')](_0x3f5ccf)[_0x1ff0('0x1b')]();};}function respondWithResult(_0x252e0b,_0x34f067){_0x34f067=_0x34f067||0xc8;return function(_0x5ad3a8){if(_0x5ad3a8){return _0x252e0b[_0x1ff0('0x1a')](_0x34f067)['json'](_0x5ad3a8);}};}function respondWithFilteredResult(_0x5479d6,_0x46eea2){return function(_0xb4388c){if(_0xb4388c){var _0x16ed78=typeof _0x46eea2[_0x1ff0('0x1c')]===_0x1ff0('0x1d')&&typeof _0x46eea2['limit']==='undefined';var _0x17bd42=_0xb4388c[_0x1ff0('0x1e')];var _0x4facb1=_0x16ed78?0x0:_0x46eea2['offset'];var _0x38cbd8=_0x16ed78?_0xb4388c[_0x1ff0('0x1e')]:_0x46eea2['offset']+_0x46eea2[_0x1ff0('0x1f')];var _0x53ef9b;if(_0x38cbd8>=_0x17bd42){_0x38cbd8=_0x17bd42;_0x53ef9b=0xc8;}else{_0x53ef9b=0xce;}_0x5479d6[_0x1ff0('0x1a')](_0x53ef9b);return _0x5479d6[_0x1ff0('0x20')](_0x1ff0('0x21'),_0x4facb1+'-'+_0x38cbd8+'/'+_0x17bd42)[_0x1ff0('0x22')](_0xb4388c);}return null;};}function patchUpdates(_0x55ced9){return function(_0x14c1d4){try{jsonpatch[_0x1ff0('0x23')](_0x14c1d4,_0x55ced9,!![]);}catch(_0x563ddc){return BPromise[_0x1ff0('0x24')](_0x563ddc);}return _0x14c1d4[_0x1ff0('0x25')]();};}function saveUpdates(_0x56748d,_0x412c1a){return function(_0x152e3f){if(_0x152e3f){return _0x152e3f['update'](_0x56748d)['then'](function(_0x3ce77d){return _0x3ce77d;});}return null;};}function removeEntity(_0xc34542,_0x514502){return function(_0x558705){if(_0x558705){return _0x558705[_0x1ff0('0x26')]()[_0x1ff0('0x27')](function(){var _0x40600c=_0x558705[_0x1ff0('0x28')]({'plain':!![]});var _0x3c4b78=_0x1ff0('0x29');return db['UserProfileResource'][_0x1ff0('0x26')]({'where':{'type':_0x3c4b78,'resourceId':_0x40600c['id']}})['then'](function(){return _0x558705;});})[_0x1ff0('0x27')](function(){_0xc34542[_0x1ff0('0x1a')](0xcc)[_0x1ff0('0x1b')]();});}};}function handleEntityNotFound(_0x46f1b8,_0x1978e8){return function(_0x3dcdf3){if(!_0x3dcdf3){_0x46f1b8[_0x1ff0('0x2a')](0x194);}return _0x3dcdf3;};}function handleError(_0x34406d,_0x58878a){_0x58878a=_0x58878a||0x1f4;return function(_0x36156a){logger[_0x1ff0('0x2b')](_0x36156a[_0x1ff0('0x2c')]);if(_0x36156a['name']){delete _0x36156a[_0x1ff0('0x2d')];}_0x34406d['status'](_0x58878a)[_0x1ff0('0x2e')](_0x36156a);};}exports['index']=function(_0x155f2f,_0x24c63b){var _0x36d618={},_0x534604={},_0x268240={'count':0x0,'rows':[]};var _0x1bd560=_[_0x1ff0('0x2f')](db[_0x1ff0('0x30')]['rawAttributes'],function(_0x25880d){return{'name':_0x25880d[_0x1ff0('0x31')],'type':_0x25880d[_0x1ff0('0x32')][_0x1ff0('0x33')]};});_0x534604[_0x1ff0('0x34')]=_['map'](_0x1bd560,_0x1ff0('0x2d'));_0x534604[_0x1ff0('0x35')]=_[_0x1ff0('0x36')](_0x155f2f['query']);_0x534604[_0x1ff0('0x37')]=_['intersection'](_0x534604[_0x1ff0('0x34')],_0x534604['query']);_0x36d618['attributes']=_[_0x1ff0('0x38')](_0x534604['model'],qs[_0x1ff0('0x39')](_0x155f2f[_0x1ff0('0x35')][_0x1ff0('0x39')]));_0x36d618[_0x1ff0('0x3a')]=_0x36d618['attributes'][_0x1ff0('0x3b')]?_0x36d618[_0x1ff0('0x3a')]:_0x534604['model'];if(!_0x155f2f[_0x1ff0('0x35')][_0x1ff0('0x3c')](_0x1ff0('0x3d'))){_0x36d618['limit']=qs[_0x1ff0('0x1f')](_0x155f2f[_0x1ff0('0x35')][_0x1ff0('0x1f')]);_0x36d618[_0x1ff0('0x1c')]=qs[_0x1ff0('0x1c')](_0x155f2f[_0x1ff0('0x35')]['offset']);}_0x36d618[_0x1ff0('0x3e')]=qs[_0x1ff0('0x3f')](_0x155f2f[_0x1ff0('0x35')][_0x1ff0('0x3f')]);_0x36d618[_0x1ff0('0x40')]=qs[_0x1ff0('0x37')](_['pick'](_0x155f2f[_0x1ff0('0x35')],_0x534604[_0x1ff0('0x37')]),_0x1bd560);if(_0x155f2f[_0x1ff0('0x35')]['filter']){_0x36d618[_0x1ff0('0x40')]=_[_0x1ff0('0x41')](_0x36d618['where'],{'$or':_['map'](_0x1bd560,function(_0x2ddb8d){if(_0x2ddb8d['type']!==_0x1ff0('0x42')){var _0x29d834={};_0x29d834[_0x2ddb8d[_0x1ff0('0x2d')]]={'$like':'%'+_0x155f2f[_0x1ff0('0x35')]['filter']+'%'};return _0x29d834;}})});}_0x36d618=_[_0x1ff0('0x41')]({},_0x36d618,_0x155f2f[_0x1ff0('0x43')]);var _0x44cae4={'where':_0x36d618[_0x1ff0('0x40')]};return db['Trigger']['count'](_0x44cae4)['then'](function(_0x5912ae){_0x268240['count']=_0x5912ae;if(_0x155f2f[_0x1ff0('0x35')][_0x1ff0('0x44')]){_0x36d618[_0x1ff0('0x45')]=[{'all':!![]}];}return db['Trigger'][_0x1ff0('0x46')](_0x36d618);})[_0x1ff0('0x27')](function(_0x1200f0){_0x268240[_0x1ff0('0x47')]=_0x1200f0;return _0x268240;})[_0x1ff0('0x27')](respondWithFilteredResult(_0x24c63b,_0x36d618))[_0x1ff0('0x48')](handleError(_0x24c63b,null));};exports[_0x1ff0('0x49')]=function(_0x4f3ac2,_0x5e5df0){var _0x400e91={'raw':![],'where':{'id':_0x4f3ac2[_0x1ff0('0x4a')]['id']}},_0xc7c4b8={};_0xc7c4b8[_0x1ff0('0x34')]=_['keys'](db['Trigger'][_0x1ff0('0x4b')]);_0xc7c4b8[_0x1ff0('0x35')]=_[_0x1ff0('0x36')](_0x4f3ac2['query']);_0xc7c4b8[_0x1ff0('0x37')]=_[_0x1ff0('0x38')](_0xc7c4b8[_0x1ff0('0x34')],_0xc7c4b8[_0x1ff0('0x35')]);_0x400e91[_0x1ff0('0x3a')]=_[_0x1ff0('0x38')](_0xc7c4b8[_0x1ff0('0x34')],qs['fields'](_0x4f3ac2[_0x1ff0('0x35')]['fields']));_0x400e91[_0x1ff0('0x3a')]=_0x400e91['attributes'][_0x1ff0('0x3b')]?_0x400e91['attributes']:_0xc7c4b8[_0x1ff0('0x34')];if(_0x4f3ac2[_0x1ff0('0x35')][_0x1ff0('0x44')]){_0x400e91[_0x1ff0('0x45')]=[{'all':!![]}];}_0x400e91=_[_0x1ff0('0x41')]({},_0x400e91,_0x4f3ac2[_0x1ff0('0x43')]);return db[_0x1ff0('0x30')][_0x1ff0('0x4c')](_0x400e91)[_0x1ff0('0x27')](handleEntityNotFound(_0x5e5df0,null))[_0x1ff0('0x27')](respondWithResult(_0x5e5df0,null))[_0x1ff0('0x48')](handleError(_0x5e5df0,null));};exports[_0x1ff0('0x4d')]=function(_0x4d88e5,_0x5cc718){return db[_0x1ff0('0x30')][_0x1ff0('0x4d')](_0x4d88e5[_0x1ff0('0x4e')],{})[_0x1ff0('0x27')](function(_0x332f3b){var _0x161fa2=_0x4d88e5[_0x1ff0('0x4f')][_0x1ff0('0x28')]({'plain':!![]});if(!_0x161fa2)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x161fa2['role']===_0x1ff0('0x4f')){var _0x11bf7b=_0x332f3b['get']({'plain':!![]});var _0x12d40b=_0x1ff0('0x29');return db[_0x1ff0('0x50')]['find']({'where':{'name':_0x12d40b,'userProfileId':_0x161fa2[_0x1ff0('0x51')]},'raw':!![]})['then'](function(_0x9206a8){if(_0x9206a8&&_0x9206a8[_0x1ff0('0x52')]===0x0){return db['UserProfileResource']['create']({'name':_0x11bf7b[_0x1ff0('0x2d')],'resourceId':_0x11bf7b['id'],'type':_0x9206a8[_0x1ff0('0x2d')],'sectionId':_0x9206a8['id']},{})[_0x1ff0('0x27')](function(){return _0x332f3b;});}else{return _0x332f3b;}})[_0x1ff0('0x48')](function(_0x4a3386){logger[_0x1ff0('0x2b')](_0x1ff0('0x53'),_0x4a3386);throw _0x4a3386;});}return _0x332f3b;})[_0x1ff0('0x27')](respondWithResult(_0x5cc718,0xc9))[_0x1ff0('0x48')](handleError(_0x5cc718,null));};exports[_0x1ff0('0x54')]=function(_0x5546c4,_0x251794){if(_0x5546c4[_0x1ff0('0x4e')]['id']){delete _0x5546c4[_0x1ff0('0x4e')]['id'];}return db[_0x1ff0('0x30')][_0x1ff0('0x4c')]({'where':{'id':_0x5546c4[_0x1ff0('0x4a')]['id']}})[_0x1ff0('0x27')](handleEntityNotFound(_0x251794,null))[_0x1ff0('0x27')](saveUpdates(_0x5546c4[_0x1ff0('0x4e')],null))['then'](respondWithResult(_0x251794,null))[_0x1ff0('0x48')](handleError(_0x251794,null));};exports[_0x1ff0('0x26')]=function(_0x27a319,_0x333fd6){return db[_0x1ff0('0x30')][_0x1ff0('0x4c')]({'where':{'id':_0x27a319[_0x1ff0('0x4a')]['id']}})[_0x1ff0('0x27')](handleEntityNotFound(_0x333fd6,null))[_0x1ff0('0x27')](removeEntity(_0x333fd6,null))['catch'](handleError(_0x333fd6,null));};exports[_0x1ff0('0x55')]=function(_0x6e97ff,_0x2a9eba,_0x363fb9){if(_0x6e97ff[_0x1ff0('0x4e')]['id']){delete _0x6e97ff[_0x1ff0('0x4e')]['id'];}return db[_0x1ff0('0x30')][_0x1ff0('0x4c')]({'where':{'id':_0x6e97ff[_0x1ff0('0x4a')]['id']}})[_0x1ff0('0x27')](handleEntityNotFound(_0x2a9eba,null))[_0x1ff0('0x27')](function(_0xc3d2da){if(_0xc3d2da){_0x6e97ff['body'][_0x1ff0('0x56')]=_0xc3d2da['id'];return db[_0x1ff0('0x57')][_0x1ff0('0x4d')](_0x6e97ff[_0x1ff0('0x4e')]);}})[_0x1ff0('0x27')](respondWithResult(_0x2a9eba,null))['catch'](handleError(_0x2a9eba,null));};exports[_0x1ff0('0x58')]=function(_0x44da07,_0x2e84b1,_0x596933){if(_0x44da07[_0x1ff0('0x4e')]['id']){delete _0x44da07['body']['id'];}return db[_0x1ff0('0x30')][_0x1ff0('0x4c')]({'where':{'id':_0x44da07[_0x1ff0('0x4a')]['id']}})['then'](handleEntityNotFound(_0x2e84b1,null))['then'](function(_0x472319){if(_0x472319){_0x44da07['body']['TriggerAnyId']=_0x472319['id'];return db[_0x1ff0('0x57')][_0x1ff0('0x4d')](_0x44da07[_0x1ff0('0x4e')]);}})['then'](respondWithResult(_0x2e84b1,null))[_0x1ff0('0x48')](handleError(_0x2e84b1,null));};exports[_0x1ff0('0x59')]=function(_0x198a9e,_0x3860d2,_0x275971){var _0x1109f6={};var _0x26a577={};var _0x2eee0b;var _0x4997cf;return db[_0x1ff0('0x30')]['findOne']({'where':{'id':_0x198a9e[_0x1ff0('0x4a')]['id']}})[_0x1ff0('0x27')](handleEntityNotFound(_0x3860d2,null))[_0x1ff0('0x27')](function(_0x381fa4){if(_0x381fa4){_0x2eee0b=_0x381fa4;_0x26a577[_0x1ff0('0x34')]=_[_0x1ff0('0x36')](db[_0x1ff0('0x57')][_0x1ff0('0x4b')]);_0x26a577[_0x1ff0('0x35')]=_['keys'](_0x198a9e[_0x1ff0('0x35')]);_0x26a577[_0x1ff0('0x37')]=_[_0x1ff0('0x38')](_0x26a577[_0x1ff0('0x34')],_0x26a577['query']);_0x1109f6[_0x1ff0('0x3a')]=_[_0x1ff0('0x38')](_0x26a577[_0x1ff0('0x34')],qs[_0x1ff0('0x39')](_0x198a9e[_0x1ff0('0x35')][_0x1ff0('0x39')]));_0x1109f6[_0x1ff0('0x3a')]=_0x1109f6[_0x1ff0('0x3a')][_0x1ff0('0x3b')]?_0x1109f6[_0x1ff0('0x3a')]:_0x26a577[_0x1ff0('0x34')];_0x1109f6[_0x1ff0('0x3e')]=qs[_0x1ff0('0x3f')](_0x198a9e[_0x1ff0('0x35')][_0x1ff0('0x3f')]);_0x1109f6[_0x1ff0('0x40')]=qs['filters'](_['pick'](_0x198a9e['query'],_0x26a577['filters']));if(_0x198a9e[_0x1ff0('0x35')][_0x1ff0('0x5a')]){_0x1109f6[_0x1ff0('0x40')]=_['merge'](_0x1109f6[_0x1ff0('0x40')],{'$or':_['map'](_0x1109f6['attributes'],function(_0x3bd819){var _0x7f7997={};_0x7f7997[_0x3bd819]={'$like':'%'+_0x198a9e[_0x1ff0('0x35')][_0x1ff0('0x5a')]+'%'};return _0x7f7997;})});}_0x1109f6=_[_0x1ff0('0x41')]({},_0x1109f6,_0x198a9e['options']);return _0x2eee0b[_0x1ff0('0x59')](_0x1109f6);}})[_0x1ff0('0x27')](function(_0x2edceb){if(_0x2edceb){_0x4997cf=_0x2edceb[_0x1ff0('0x3b')];if(!_0x198a9e['query'][_0x1ff0('0x3c')]('nolimit')){_0x1109f6[_0x1ff0('0x1f')]=qs['limit'](_0x198a9e[_0x1ff0('0x35')][_0x1ff0('0x1f')]);_0x1109f6[_0x1ff0('0x1c')]=qs[_0x1ff0('0x1c')](_0x198a9e[_0x1ff0('0x35')][_0x1ff0('0x1c')]);}return _0x2eee0b[_0x1ff0('0x59')](_0x1109f6);}})[_0x1ff0('0x27')](function(_0x196d8d){if(_0x196d8d){return _0x196d8d?{'count':_0x4997cf,'rows':_0x196d8d}:null;}})[_0x1ff0('0x27')](respondWithResult(_0x3860d2,null))['catch'](handleError(_0x3860d2,null));};exports['getAnyConditions']=function(_0x5dae47,_0x3f9915,_0x723b0){var _0x7ba586={};var _0xcb18ee={};var _0x2db221;var _0x522195;return db[_0x1ff0('0x30')]['findOne']({'where':{'id':_0x5dae47[_0x1ff0('0x4a')]['id']}})[_0x1ff0('0x27')](handleEntityNotFound(_0x3f9915,null))[_0x1ff0('0x27')](function(_0x5200bf){if(_0x5200bf){_0x2db221=_0x5200bf;_0xcb18ee[_0x1ff0('0x34')]=_[_0x1ff0('0x36')](db['Condition'][_0x1ff0('0x4b')]);_0xcb18ee['query']=_[_0x1ff0('0x36')](_0x5dae47[_0x1ff0('0x35')]);_0xcb18ee[_0x1ff0('0x37')]=_[_0x1ff0('0x38')](_0xcb18ee['model'],_0xcb18ee[_0x1ff0('0x35')]);_0x7ba586[_0x1ff0('0x3a')]=_[_0x1ff0('0x38')](_0xcb18ee[_0x1ff0('0x34')],qs[_0x1ff0('0x39')](_0x5dae47[_0x1ff0('0x35')][_0x1ff0('0x39')]));_0x7ba586[_0x1ff0('0x3a')]=_0x7ba586['attributes'][_0x1ff0('0x3b')]?_0x7ba586['attributes']:_0xcb18ee[_0x1ff0('0x34')];_0x7ba586[_0x1ff0('0x3e')]=qs[_0x1ff0('0x3f')](_0x5dae47[_0x1ff0('0x35')][_0x1ff0('0x3f')]);_0x7ba586[_0x1ff0('0x40')]=qs[_0x1ff0('0x37')](_[_0x1ff0('0x5b')](_0x5dae47[_0x1ff0('0x35')],_0xcb18ee[_0x1ff0('0x37')]));if(_0x5dae47[_0x1ff0('0x35')][_0x1ff0('0x5a')]){_0x7ba586[_0x1ff0('0x40')]=_['merge'](_0x7ba586[_0x1ff0('0x40')],{'$or':_['map'](_0x7ba586[_0x1ff0('0x3a')],function(_0x5675e0){var _0x14dd42={};_0x14dd42[_0x5675e0]={'$like':'%'+_0x5dae47[_0x1ff0('0x35')][_0x1ff0('0x5a')]+'%'};return _0x14dd42;})});}_0x7ba586=_[_0x1ff0('0x41')]({},_0x7ba586,_0x5dae47[_0x1ff0('0x43')]);return _0x2db221[_0x1ff0('0x5c')](_0x7ba586);}})[_0x1ff0('0x27')](function(_0x5c6357){if(_0x5c6357){_0x522195=_0x5c6357[_0x1ff0('0x3b')];if(!_0x5dae47['query'][_0x1ff0('0x3c')](_0x1ff0('0x3d'))){_0x7ba586[_0x1ff0('0x1f')]=qs[_0x1ff0('0x1f')](_0x5dae47[_0x1ff0('0x35')]['limit']);_0x7ba586[_0x1ff0('0x1c')]=qs[_0x1ff0('0x1c')](_0x5dae47[_0x1ff0('0x35')][_0x1ff0('0x1c')]);}return _0x2db221[_0x1ff0('0x5c')](_0x7ba586);}})[_0x1ff0('0x27')](function(_0xe48f07){if(_0xe48f07){return _0xe48f07?{'count':_0x522195,'rows':_0xe48f07}:null;}})[_0x1ff0('0x27')](respondWithResult(_0x3f9915,null))[_0x1ff0('0x48')](handleError(_0x3f9915,null));};exports['addAction']=function(_0x38deb4,_0x12ed84,_0x119460){if(_0x38deb4[_0x1ff0('0x4e')]['id']){delete _0x38deb4['body']['id'];}return db[_0x1ff0('0x30')][_0x1ff0('0x4c')]({'where':{'id':_0x38deb4[_0x1ff0('0x4a')]['id']}})[_0x1ff0('0x27')](handleEntityNotFound(_0x12ed84,null))[_0x1ff0('0x27')](function(_0x217835){if(_0x217835){_0x38deb4['body'][_0x1ff0('0x5d')]=_0x217835['id'];return db[_0x1ff0('0x5e')][_0x1ff0('0x4d')](_0x38deb4['body']);}})[_0x1ff0('0x27')](respondWithResult(_0x12ed84,null))[_0x1ff0('0x48')](handleError(_0x12ed84,null));};exports[_0x1ff0('0x5f')]=function(_0x191068,_0x16fff9,_0x58be10){var _0x35c5df={};var _0x1d6f06={};var _0x8e320c;var _0x16ab85;return db[_0x1ff0('0x30')][_0x1ff0('0x60')]({'where':{'id':_0x191068[_0x1ff0('0x4a')]['id']}})['then'](handleEntityNotFound(_0x16fff9,null))[_0x1ff0('0x27')](function(_0x4a83f4){if(_0x4a83f4){_0x8e320c=_0x4a83f4;_0x1d6f06['model']=_[_0x1ff0('0x36')](db[_0x1ff0('0x5e')][_0x1ff0('0x4b')]);_0x1d6f06[_0x1ff0('0x35')]=_['keys'](_0x191068[_0x1ff0('0x35')]);_0x1d6f06[_0x1ff0('0x37')]=_[_0x1ff0('0x38')](_0x1d6f06[_0x1ff0('0x34')],_0x1d6f06[_0x1ff0('0x35')]);_0x35c5df[_0x1ff0('0x3a')]=_[_0x1ff0('0x38')](_0x1d6f06[_0x1ff0('0x34')],qs[_0x1ff0('0x39')](_0x191068[_0x1ff0('0x35')][_0x1ff0('0x39')]));_0x35c5df['attributes']=_0x35c5df['attributes'][_0x1ff0('0x3b')]?_0x35c5df['attributes']:_0x1d6f06[_0x1ff0('0x34')];_0x35c5df[_0x1ff0('0x3e')]=qs[_0x1ff0('0x3f')](_0x191068[_0x1ff0('0x35')][_0x1ff0('0x3f')]);_0x35c5df[_0x1ff0('0x40')]=qs['filters'](_[_0x1ff0('0x5b')](_0x191068[_0x1ff0('0x35')],_0x1d6f06[_0x1ff0('0x37')]));if(_0x191068[_0x1ff0('0x35')][_0x1ff0('0x5a')]){_0x35c5df[_0x1ff0('0x40')]=_[_0x1ff0('0x41')](_0x35c5df['where'],{'$or':_[_0x1ff0('0x2f')](_0x35c5df[_0x1ff0('0x3a')],function(_0x5e4dd1){var _0x5eb2ff={};_0x5eb2ff[_0x5e4dd1]={'$like':'%'+_0x191068['query'][_0x1ff0('0x5a')]+'%'};return _0x5eb2ff;})});}_0x35c5df=_[_0x1ff0('0x41')]({},_0x35c5df,_0x191068[_0x1ff0('0x43')]);return _0x8e320c[_0x1ff0('0x5f')](_0x35c5df);}})[_0x1ff0('0x27')](function(_0x4251c5){if(_0x4251c5){_0x16ab85=_0x4251c5[_0x1ff0('0x3b')];if(!_0x191068['query'][_0x1ff0('0x3c')]('nolimit')){_0x35c5df[_0x1ff0('0x1f')]=qs[_0x1ff0('0x1f')](_0x191068['query'][_0x1ff0('0x1f')]);_0x35c5df[_0x1ff0('0x1c')]=qs[_0x1ff0('0x1c')](_0x191068[_0x1ff0('0x35')][_0x1ff0('0x1c')]);}return _0x8e320c['getActions'](_0x35c5df);}})[_0x1ff0('0x27')](function(_0x4f8d1b){if(_0x4f8d1b){return _0x4f8d1b?{'count':_0x16ab85,'rows':_0x4f8d1b}:null;}})[_0x1ff0('0x27')](respondWithResult(_0x16fff9,null))['catch'](handleError(_0x16fff9,null));};
\ No newline at end of file
+var _0xa422=['Condition','addAnyCondition','getAllConditions','findOne','pick','addAction','Action','getActions','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','squel','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','offset','undefined','limit','count','set','reject','save','update','destroy','Triggers','UserProfileResource','then','stack','name','send','map','Trigger','rawAttributes','fieldName','type','key','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','options','includeAll','include','rows','show','params','model','keys','find','catch','create','body','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','addAllCondition','TriggerAllId'];(function(_0x2892da,_0x191a40){var _0x28cff2=function(_0x57023d){while(--_0x57023d){_0x2892da['push'](_0x2892da['shift']());}};_0x28cff2(++_0x191a40);}(_0xa422,0xc2));var _0x2a42=function(_0x5ecc7a,_0x106cc6){_0x5ecc7a=_0x5ecc7a-0x0;var _0x5bad5c=_0xa422[_0x5ecc7a];return _0x5bad5c;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x2a42('0x0'));var jsonpatch=require(_0x2a42('0x1'));var rp=require(_0x2a42('0x2'));var moment=require(_0x2a42('0x3'));var BPromise=require(_0x2a42('0x4'));var Mustache=require(_0x2a42('0x5'));var util=require(_0x2a42('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0x2a42('0x7'));var ejs=require(_0x2a42('0x8'));var fs=require('fs');var fs_extra=require(_0x2a42('0x9'));var _=require('lodash');var squel=require(_0x2a42('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x2a42('0xb'));var toCsv=require('to-csv');var querystring=require(_0x2a42('0xc'));var Papa=require(_0x2a42('0xd'));var Redis=require(_0x2a42('0xe'));var authService=require(_0x2a42('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x2a42('0x10'));var hardwareService=require(_0x2a42('0x11'));var logger=require(_0x2a42('0x12'))(_0x2a42('0x13'));var utils=require(_0x2a42('0x14'));var config=require(_0x2a42('0x15'));var licenseUtil=require(_0x2a42('0x16'));var db=require(_0x2a42('0x17'))['db'];function respondWithStatusCode(_0x5873b6,_0x52ce5e){_0x52ce5e=_0x52ce5e||0xcc;return function(_0x381617){if(_0x381617){return _0x5873b6[_0x2a42('0x18')](_0x52ce5e);}return _0x5873b6[_0x2a42('0x19')](_0x52ce5e)[_0x2a42('0x1a')]();};}function respondWithResult(_0x526513,_0x386a72){_0x386a72=_0x386a72||0xc8;return function(_0x4da786){if(_0x4da786){return _0x526513[_0x2a42('0x19')](_0x386a72)[_0x2a42('0x1b')](_0x4da786);}};}function respondWithFilteredResult(_0x347839,_0x45168c){return function(_0x3057d4){if(_0x3057d4){var _0x5510b8=typeof _0x45168c[_0x2a42('0x1c')]===_0x2a42('0x1d')&&typeof _0x45168c[_0x2a42('0x1e')]===_0x2a42('0x1d');var _0x25e776=_0x3057d4[_0x2a42('0x1f')];var _0x24ee9b=_0x5510b8?0x0:_0x45168c[_0x2a42('0x1c')];var _0x5d97cd=_0x5510b8?_0x3057d4[_0x2a42('0x1f')]:_0x45168c[_0x2a42('0x1c')]+_0x45168c[_0x2a42('0x1e')];var _0x1c0f38;if(_0x5d97cd>=_0x25e776){_0x5d97cd=_0x25e776;_0x1c0f38=0xc8;}else{_0x1c0f38=0xce;}_0x347839['status'](_0x1c0f38);return _0x347839[_0x2a42('0x20')]('Content-Range',_0x24ee9b+'-'+_0x5d97cd+'/'+_0x25e776)[_0x2a42('0x1b')](_0x3057d4);}return null;};}function patchUpdates(_0x456e38){return function(_0x2ab253){try{jsonpatch['apply'](_0x2ab253,_0x456e38,!![]);}catch(_0x3f1843){return BPromise[_0x2a42('0x21')](_0x3f1843);}return _0x2ab253[_0x2a42('0x22')]();};}function saveUpdates(_0x5bab43,_0x19aec4){return function(_0x150986){if(_0x150986){return _0x150986[_0x2a42('0x23')](_0x5bab43)['then'](function(_0x18ac94){return _0x18ac94;});}return null;};}function removeEntity(_0x30f724,_0xb565e0){return function(_0x1c303f){if(_0x1c303f){return _0x1c303f[_0x2a42('0x24')]()['then'](function(){var _0x1c95a9=_0x1c303f['get']({'plain':!![]});var _0x402656=_0x2a42('0x25');return db[_0x2a42('0x26')][_0x2a42('0x24')]({'where':{'type':_0x402656,'resourceId':_0x1c95a9['id']}})[_0x2a42('0x27')](function(){return _0x1c303f;});})['then'](function(){_0x30f724[_0x2a42('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x477e9c,_0x2f5ad2){return function(_0x3bea20){if(!_0x3bea20){_0x477e9c[_0x2a42('0x18')](0x194);}return _0x3bea20;};}function handleError(_0xd5015b,_0x1712f5){_0x1712f5=_0x1712f5||0x1f4;return function(_0x1710e3){logger['error'](_0x1710e3[_0x2a42('0x28')]);if(_0x1710e3[_0x2a42('0x29')]){delete _0x1710e3['name'];}_0xd5015b[_0x2a42('0x19')](_0x1712f5)[_0x2a42('0x2a')](_0x1710e3);};}exports['index']=function(_0x300ad9,_0x405914){var _0x2d1362={},_0x26507d={},_0xc29557={'count':0x0,'rows':[]};var _0x5cc94a=_[_0x2a42('0x2b')](db[_0x2a42('0x2c')][_0x2a42('0x2d')],function(_0x245dbe){return{'name':_0x245dbe[_0x2a42('0x2e')],'type':_0x245dbe[_0x2a42('0x2f')][_0x2a42('0x30')]};});_0x26507d['model']=_[_0x2a42('0x2b')](_0x5cc94a,'name');_0x26507d[_0x2a42('0x31')]=_['keys'](_0x300ad9[_0x2a42('0x31')]);_0x26507d[_0x2a42('0x32')]=_['intersection'](_0x26507d['model'],_0x26507d[_0x2a42('0x31')]);_0x2d1362[_0x2a42('0x33')]=_[_0x2a42('0x34')](_0x26507d['model'],qs[_0x2a42('0x35')](_0x300ad9[_0x2a42('0x31')][_0x2a42('0x35')]));_0x2d1362[_0x2a42('0x33')]=_0x2d1362[_0x2a42('0x33')][_0x2a42('0x36')]?_0x2d1362[_0x2a42('0x33')]:_0x26507d['model'];if(!_0x300ad9[_0x2a42('0x31')][_0x2a42('0x37')](_0x2a42('0x38'))){_0x2d1362[_0x2a42('0x1e')]=qs[_0x2a42('0x1e')](_0x300ad9[_0x2a42('0x31')][_0x2a42('0x1e')]);_0x2d1362[_0x2a42('0x1c')]=qs[_0x2a42('0x1c')](_0x300ad9[_0x2a42('0x31')]['offset']);}_0x2d1362[_0x2a42('0x39')]=qs[_0x2a42('0x3a')](_0x300ad9[_0x2a42('0x31')][_0x2a42('0x3a')]);_0x2d1362[_0x2a42('0x3b')]=qs[_0x2a42('0x32')](_['pick'](_0x300ad9[_0x2a42('0x31')],_0x26507d[_0x2a42('0x32')]),_0x5cc94a);if(_0x300ad9[_0x2a42('0x31')][_0x2a42('0x3c')]){_0x2d1362[_0x2a42('0x3b')]=_[_0x2a42('0x3d')](_0x2d1362[_0x2a42('0x3b')],{'$or':_['map'](_0x5cc94a,function(_0x59825c){if(_0x59825c[_0x2a42('0x2f')]!=='VIRTUAL'){var _0x348bfc={};_0x348bfc[_0x59825c[_0x2a42('0x29')]]={'$like':'%'+_0x300ad9[_0x2a42('0x31')][_0x2a42('0x3c')]+'%'};return _0x348bfc;}})});}_0x2d1362=_[_0x2a42('0x3d')]({},_0x2d1362,_0x300ad9[_0x2a42('0x3e')]);var _0x45cf6e={'where':_0x2d1362[_0x2a42('0x3b')]};return db['Trigger'][_0x2a42('0x1f')](_0x45cf6e)[_0x2a42('0x27')](function(_0x133424){_0xc29557[_0x2a42('0x1f')]=_0x133424;if(_0x300ad9[_0x2a42('0x31')][_0x2a42('0x3f')]){_0x2d1362[_0x2a42('0x40')]=[{'all':!![]}];}return db[_0x2a42('0x2c')]['findAll'](_0x2d1362);})[_0x2a42('0x27')](function(_0x90e5d5){_0xc29557[_0x2a42('0x41')]=_0x90e5d5;return _0xc29557;})[_0x2a42('0x27')](respondWithFilteredResult(_0x405914,_0x2d1362))['catch'](handleError(_0x405914,null));};exports[_0x2a42('0x42')]=function(_0x4ba1ac,_0x4b5c0b){var _0x13fdb2={'raw':![],'where':{'id':_0x4ba1ac[_0x2a42('0x43')]['id']}},_0x5eabe0={};_0x5eabe0[_0x2a42('0x44')]=_[_0x2a42('0x45')](db[_0x2a42('0x2c')][_0x2a42('0x2d')]);_0x5eabe0[_0x2a42('0x31')]=_[_0x2a42('0x45')](_0x4ba1ac['query']);_0x5eabe0['filters']=_[_0x2a42('0x34')](_0x5eabe0[_0x2a42('0x44')],_0x5eabe0[_0x2a42('0x31')]);_0x13fdb2[_0x2a42('0x33')]=_[_0x2a42('0x34')](_0x5eabe0[_0x2a42('0x44')],qs[_0x2a42('0x35')](_0x4ba1ac[_0x2a42('0x31')][_0x2a42('0x35')]));_0x13fdb2[_0x2a42('0x33')]=_0x13fdb2[_0x2a42('0x33')]['length']?_0x13fdb2['attributes']:_0x5eabe0[_0x2a42('0x44')];if(_0x4ba1ac[_0x2a42('0x31')]['includeAll']){_0x13fdb2[_0x2a42('0x40')]=[{'all':!![]}];}_0x13fdb2=_['merge']({},_0x13fdb2,_0x4ba1ac[_0x2a42('0x3e')]);return db[_0x2a42('0x2c')][_0x2a42('0x46')](_0x13fdb2)[_0x2a42('0x27')](handleEntityNotFound(_0x4b5c0b,null))['then'](respondWithResult(_0x4b5c0b,null))[_0x2a42('0x47')](handleError(_0x4b5c0b,null));};exports[_0x2a42('0x48')]=function(_0x342df5,_0x31d351){return db[_0x2a42('0x2c')][_0x2a42('0x48')](_0x342df5[_0x2a42('0x49')],{})['then'](function(_0x4ddc21){var _0x1baeb8=_0x342df5['user'][_0x2a42('0x4a')]({'plain':!![]});if(!_0x1baeb8)throw new Error(_0x2a42('0x4b'));if(_0x1baeb8[_0x2a42('0x4c')]===_0x2a42('0x4d')){var _0x3f44a7=_0x4ddc21[_0x2a42('0x4a')]({'plain':!![]});var _0x52f90d=_0x2a42('0x25');return db[_0x2a42('0x4e')][_0x2a42('0x46')]({'where':{'name':_0x52f90d,'userProfileId':_0x1baeb8[_0x2a42('0x4f')]},'raw':!![]})['then'](function(_0x51b7fa){if(_0x51b7fa&&_0x51b7fa[_0x2a42('0x50')]===0x0){return db['UserProfileResource'][_0x2a42('0x48')]({'name':_0x3f44a7['name'],'resourceId':_0x3f44a7['id'],'type':_0x51b7fa[_0x2a42('0x29')],'sectionId':_0x51b7fa['id']},{})['then'](function(){return _0x4ddc21;});}else{return _0x4ddc21;}})[_0x2a42('0x47')](function(_0x274372){logger[_0x2a42('0x51')](_0x2a42('0x52'),_0x274372);throw _0x274372;});}return _0x4ddc21;})[_0x2a42('0x27')](respondWithResult(_0x31d351,0xc9))[_0x2a42('0x47')](handleError(_0x31d351,null));};exports[_0x2a42('0x23')]=function(_0x43f672,_0x16b406){if(_0x43f672[_0x2a42('0x49')]['id']){delete _0x43f672[_0x2a42('0x49')]['id'];}return db[_0x2a42('0x2c')][_0x2a42('0x46')]({'where':{'id':_0x43f672[_0x2a42('0x43')]['id']}})[_0x2a42('0x27')](handleEntityNotFound(_0x16b406,null))[_0x2a42('0x27')](saveUpdates(_0x43f672[_0x2a42('0x49')],null))['then'](respondWithResult(_0x16b406,null))[_0x2a42('0x47')](handleError(_0x16b406,null));};exports[_0x2a42('0x24')]=function(_0xca725e,_0x3c7710){return db[_0x2a42('0x2c')][_0x2a42('0x46')]({'where':{'id':_0xca725e['params']['id']}})[_0x2a42('0x27')](handleEntityNotFound(_0x3c7710,null))['then'](removeEntity(_0x3c7710,null))[_0x2a42('0x47')](handleError(_0x3c7710,null));};exports[_0x2a42('0x53')]=function(_0x5a0542,_0x439592,_0x20a5f9){if(_0x5a0542['body']['id']){delete _0x5a0542[_0x2a42('0x49')]['id'];}return db[_0x2a42('0x2c')]['find']({'where':{'id':_0x5a0542['params']['id']}})[_0x2a42('0x27')](handleEntityNotFound(_0x439592,null))[_0x2a42('0x27')](function(_0x3717da){if(_0x3717da){_0x5a0542[_0x2a42('0x49')][_0x2a42('0x54')]=_0x3717da['id'];return db[_0x2a42('0x55')][_0x2a42('0x48')](_0x5a0542[_0x2a42('0x49')]);}})[_0x2a42('0x27')](respondWithResult(_0x439592,null))[_0x2a42('0x47')](handleError(_0x439592,null));};exports[_0x2a42('0x56')]=function(_0x4c7f9c,_0x1ff9c3,_0x9b7b20){if(_0x4c7f9c[_0x2a42('0x49')]['id']){delete _0x4c7f9c['body']['id'];}return db[_0x2a42('0x2c')][_0x2a42('0x46')]({'where':{'id':_0x4c7f9c[_0x2a42('0x43')]['id']}})[_0x2a42('0x27')](handleEntityNotFound(_0x1ff9c3,null))[_0x2a42('0x27')](function(_0x5a0406){if(_0x5a0406){_0x4c7f9c[_0x2a42('0x49')]['TriggerAnyId']=_0x5a0406['id'];return db['Condition'][_0x2a42('0x48')](_0x4c7f9c[_0x2a42('0x49')]);}})[_0x2a42('0x27')](respondWithResult(_0x1ff9c3,null))[_0x2a42('0x47')](handleError(_0x1ff9c3,null));};exports[_0x2a42('0x57')]=function(_0x6fe83,_0x3071f8,_0x21463a){var _0x32a848={};var _0x32a09f={};var _0x2f283b;var _0x52f47c;return db[_0x2a42('0x2c')][_0x2a42('0x58')]({'where':{'id':_0x6fe83[_0x2a42('0x43')]['id']}})[_0x2a42('0x27')](handleEntityNotFound(_0x3071f8,null))[_0x2a42('0x27')](function(_0x2f1110){if(_0x2f1110){_0x2f283b=_0x2f1110;_0x32a09f[_0x2a42('0x44')]=_[_0x2a42('0x45')](db[_0x2a42('0x55')][_0x2a42('0x2d')]);_0x32a09f['query']=_[_0x2a42('0x45')](_0x6fe83[_0x2a42('0x31')]);_0x32a09f[_0x2a42('0x32')]=_['intersection'](_0x32a09f[_0x2a42('0x44')],_0x32a09f[_0x2a42('0x31')]);_0x32a848[_0x2a42('0x33')]=_[_0x2a42('0x34')](_0x32a09f['model'],qs[_0x2a42('0x35')](_0x6fe83['query']['fields']));_0x32a848['attributes']=_0x32a848[_0x2a42('0x33')][_0x2a42('0x36')]?_0x32a848[_0x2a42('0x33')]:_0x32a09f[_0x2a42('0x44')];_0x32a848[_0x2a42('0x39')]=qs[_0x2a42('0x3a')](_0x6fe83[_0x2a42('0x31')][_0x2a42('0x3a')]);_0x32a848[_0x2a42('0x3b')]=qs['filters'](_['pick'](_0x6fe83[_0x2a42('0x31')],_0x32a09f[_0x2a42('0x32')]));if(_0x6fe83[_0x2a42('0x31')][_0x2a42('0x3c')]){_0x32a848[_0x2a42('0x3b')]=_[_0x2a42('0x3d')](_0x32a848[_0x2a42('0x3b')],{'$or':_[_0x2a42('0x2b')](_0x32a848[_0x2a42('0x33')],function(_0x4f09c9){var _0x276d6b={};_0x276d6b[_0x4f09c9]={'$like':'%'+_0x6fe83[_0x2a42('0x31')][_0x2a42('0x3c')]+'%'};return _0x276d6b;})});}_0x32a848=_['merge']({},_0x32a848,_0x6fe83[_0x2a42('0x3e')]);return _0x2f283b['getAllConditions'](_0x32a848);}})[_0x2a42('0x27')](function(_0x2e3fc1){if(_0x2e3fc1){_0x52f47c=_0x2e3fc1[_0x2a42('0x36')];if(!_0x6fe83[_0x2a42('0x31')][_0x2a42('0x37')](_0x2a42('0x38'))){_0x32a848[_0x2a42('0x1e')]=qs['limit'](_0x6fe83[_0x2a42('0x31')][_0x2a42('0x1e')]);_0x32a848[_0x2a42('0x1c')]=qs[_0x2a42('0x1c')](_0x6fe83[_0x2a42('0x31')]['offset']);}return _0x2f283b[_0x2a42('0x57')](_0x32a848);}})[_0x2a42('0x27')](function(_0x57a270){if(_0x57a270){return _0x57a270?{'count':_0x52f47c,'rows':_0x57a270}:null;}})['then'](respondWithResult(_0x3071f8,null))[_0x2a42('0x47')](handleError(_0x3071f8,null));};exports['getAnyConditions']=function(_0x5564bd,_0x33a505,_0x14f081){var _0x166989={};var _0x35b6b8={};var _0x149e13;var _0x26e6ee;return db[_0x2a42('0x2c')][_0x2a42('0x58')]({'where':{'id':_0x5564bd[_0x2a42('0x43')]['id']}})[_0x2a42('0x27')](handleEntityNotFound(_0x33a505,null))[_0x2a42('0x27')](function(_0x44e9ce){if(_0x44e9ce){_0x149e13=_0x44e9ce;_0x35b6b8[_0x2a42('0x44')]=_['keys'](db[_0x2a42('0x55')][_0x2a42('0x2d')]);_0x35b6b8[_0x2a42('0x31')]=_['keys'](_0x5564bd[_0x2a42('0x31')]);_0x35b6b8[_0x2a42('0x32')]=_[_0x2a42('0x34')](_0x35b6b8[_0x2a42('0x44')],_0x35b6b8[_0x2a42('0x31')]);_0x166989[_0x2a42('0x33')]=_[_0x2a42('0x34')](_0x35b6b8[_0x2a42('0x44')],qs[_0x2a42('0x35')](_0x5564bd[_0x2a42('0x31')][_0x2a42('0x35')]));_0x166989[_0x2a42('0x33')]=_0x166989[_0x2a42('0x33')][_0x2a42('0x36')]?_0x166989[_0x2a42('0x33')]:_0x35b6b8['model'];_0x166989[_0x2a42('0x39')]=qs['sort'](_0x5564bd['query'][_0x2a42('0x3a')]);_0x166989[_0x2a42('0x3b')]=qs[_0x2a42('0x32')](_[_0x2a42('0x59')](_0x5564bd[_0x2a42('0x31')],_0x35b6b8[_0x2a42('0x32')]));if(_0x5564bd[_0x2a42('0x31')][_0x2a42('0x3c')]){_0x166989[_0x2a42('0x3b')]=_[_0x2a42('0x3d')](_0x166989[_0x2a42('0x3b')],{'$or':_[_0x2a42('0x2b')](_0x166989[_0x2a42('0x33')],function(_0x261304){var _0x76af9f={};_0x76af9f[_0x261304]={'$like':'%'+_0x5564bd[_0x2a42('0x31')][_0x2a42('0x3c')]+'%'};return _0x76af9f;})});}_0x166989=_[_0x2a42('0x3d')]({},_0x166989,_0x5564bd[_0x2a42('0x3e')]);return _0x149e13['getAnyConditions'](_0x166989);}})[_0x2a42('0x27')](function(_0x3e19b1){if(_0x3e19b1){_0x26e6ee=_0x3e19b1[_0x2a42('0x36')];if(!_0x5564bd[_0x2a42('0x31')][_0x2a42('0x37')](_0x2a42('0x38'))){_0x166989['limit']=qs[_0x2a42('0x1e')](_0x5564bd[_0x2a42('0x31')][_0x2a42('0x1e')]);_0x166989[_0x2a42('0x1c')]=qs[_0x2a42('0x1c')](_0x5564bd[_0x2a42('0x31')][_0x2a42('0x1c')]);}return _0x149e13['getAnyConditions'](_0x166989);}})['then'](function(_0x33892c){if(_0x33892c){return _0x33892c?{'count':_0x26e6ee,'rows':_0x33892c}:null;}})[_0x2a42('0x27')](respondWithResult(_0x33a505,null))['catch'](handleError(_0x33a505,null));};exports[_0x2a42('0x5a')]=function(_0x5282cd,_0x288cae,_0x36aaf9){if(_0x5282cd[_0x2a42('0x49')]['id']){delete _0x5282cd[_0x2a42('0x49')]['id'];}return db[_0x2a42('0x2c')][_0x2a42('0x46')]({'where':{'id':_0x5282cd[_0x2a42('0x43')]['id']}})[_0x2a42('0x27')](handleEntityNotFound(_0x288cae,null))[_0x2a42('0x27')](function(_0x1df92e){if(_0x1df92e){_0x5282cd[_0x2a42('0x49')]['TriggerId']=_0x1df92e['id'];return db[_0x2a42('0x5b')][_0x2a42('0x48')](_0x5282cd[_0x2a42('0x49')]);}})['then'](respondWithResult(_0x288cae,null))[_0x2a42('0x47')](handleError(_0x288cae,null));};exports[_0x2a42('0x5c')]=function(_0x207f21,_0x2b340f,_0x458b4e){var _0x278d6b={};var _0x3e500f={};var _0x3ff6a2;var _0x25c277;return db[_0x2a42('0x2c')][_0x2a42('0x58')]({'where':{'id':_0x207f21['params']['id']}})[_0x2a42('0x27')](handleEntityNotFound(_0x2b340f,null))[_0x2a42('0x27')](function(_0x3e70a8){if(_0x3e70a8){_0x3ff6a2=_0x3e70a8;_0x3e500f[_0x2a42('0x44')]=_[_0x2a42('0x45')](db[_0x2a42('0x5b')][_0x2a42('0x2d')]);_0x3e500f[_0x2a42('0x31')]=_[_0x2a42('0x45')](_0x207f21[_0x2a42('0x31')]);_0x3e500f[_0x2a42('0x32')]=_['intersection'](_0x3e500f[_0x2a42('0x44')],_0x3e500f['query']);_0x278d6b[_0x2a42('0x33')]=_[_0x2a42('0x34')](_0x3e500f[_0x2a42('0x44')],qs['fields'](_0x207f21[_0x2a42('0x31')][_0x2a42('0x35')]));_0x278d6b[_0x2a42('0x33')]=_0x278d6b[_0x2a42('0x33')][_0x2a42('0x36')]?_0x278d6b[_0x2a42('0x33')]:_0x3e500f[_0x2a42('0x44')];_0x278d6b[_0x2a42('0x39')]=qs['sort'](_0x207f21[_0x2a42('0x31')][_0x2a42('0x3a')]);_0x278d6b[_0x2a42('0x3b')]=qs[_0x2a42('0x32')](_[_0x2a42('0x59')](_0x207f21[_0x2a42('0x31')],_0x3e500f[_0x2a42('0x32')]));if(_0x207f21['query'][_0x2a42('0x3c')]){_0x278d6b[_0x2a42('0x3b')]=_[_0x2a42('0x3d')](_0x278d6b[_0x2a42('0x3b')],{'$or':_[_0x2a42('0x2b')](_0x278d6b[_0x2a42('0x33')],function(_0x4e70c8){var _0x47be48={};_0x47be48[_0x4e70c8]={'$like':'%'+_0x207f21[_0x2a42('0x31')][_0x2a42('0x3c')]+'%'};return _0x47be48;})});}_0x278d6b=_[_0x2a42('0x3d')]({},_0x278d6b,_0x207f21[_0x2a42('0x3e')]);return _0x3ff6a2[_0x2a42('0x5c')](_0x278d6b);}})[_0x2a42('0x27')](function(_0x5f28ad){if(_0x5f28ad){_0x25c277=_0x5f28ad[_0x2a42('0x36')];if(!_0x207f21['query'][_0x2a42('0x37')](_0x2a42('0x38'))){_0x278d6b['limit']=qs['limit'](_0x207f21['query'][_0x2a42('0x1e')]);_0x278d6b[_0x2a42('0x1c')]=qs[_0x2a42('0x1c')](_0x207f21[_0x2a42('0x31')][_0x2a42('0x1c')]);}return _0x3ff6a2[_0x2a42('0x5c')](_0x278d6b);}})[_0x2a42('0x27')](function(_0x45febd){if(_0x45febd){return _0x45febd?{'count':_0x25c277,'rows':_0x45febd}:null;}})['then'](respondWithResult(_0x2b340f,null))[_0x2a42('0x47')](handleError(_0x2b340f,null));};
\ No newline at end of file
index e613eb9..4a3dbd9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba6c=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','exports','define','Trigger','tools_triggers','lodash'];(function(_0x581450,_0x2966bf){var _0x3a69b9=function(_0x391cf4){while(--_0x391cf4){_0x581450['push'](_0x581450['shift']());}};_0x3a69b9(++_0x2966bf);}(_0xba6c,0x113));var _0xcba6=function(_0x532d78,_0x25b6a8){_0x532d78=_0x532d78-0x0;var _0x5990c4=_0xba6c[_0x532d78];return _0x5990c4;};'use strict';var _=require(_0xcba6('0x0'));var util=require('util');var logger=require(_0xcba6('0x1'))(_0xcba6('0x2'));var moment=require(_0xcba6('0x3'));var BPromise=require(_0xcba6('0x4'));var rp=require(_0xcba6('0x5'));var fs=require('fs');var path=require(_0xcba6('0x6'));var rimraf=require(_0xcba6('0x7'));var config=require('../../config/environment');var attributes=require('./trigger.attributes');module[_0xcba6('0x8')]=function(_0x1fd901,_0x34d35d){return _0x1fd901[_0xcba6('0x9')](_0xcba6('0xa'),attributes,{'tableName':_0xcba6('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x57d4=['exports','Trigger','tools_triggers','lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./trigger.attributes'];(function(_0x510b98,_0x4c4cbb){var _0x45e775=function(_0x29ec11){while(--_0x29ec11){_0x510b98['push'](_0x510b98['shift']());}};_0x45e775(++_0x4c4cbb);}(_0x57d4,0x78));var _0x457d=function(_0x55b3cd,_0x2602a2){_0x55b3cd=_0x55b3cd-0x0;var _0x4a8e30=_0x57d4[_0x55b3cd];return _0x4a8e30;};'use strict';var _=require(_0x457d('0x0'));var util=require(_0x457d('0x1'));var logger=require('../../config/logger')(_0x457d('0x2'));var moment=require(_0x457d('0x3'));var BPromise=require(_0x457d('0x4'));var rp=require(_0x457d('0x5'));var fs=require('fs');var path=require(_0x457d('0x6'));var rimraf=require(_0x457d('0x7'));var config=require(_0x457d('0x8'));var attributes=require(_0x457d('0x9'));module[_0x457d('0xa')]=function(_0x247ec7,_0x3fd867){return _0x247ec7['define'](_0x457d('0xb'),attributes,{'tableName':_0x457d('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4090965..afec7d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f6d=['bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','info','Trigger,\x20%s,\x20%s','debug','Trigger,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','Trigger','findAll','raw','options','where','attributes','limit','map','include','model','GetTrigger','ShowTrigger','then','stringify','lodash','util','moment'];(function(_0x42f0d1,_0x45fe4a){var _0x43f981=function(_0x5882e8){while(--_0x5882e8){_0x42f0d1['push'](_0x42f0d1['shift']());}};_0x43f981(++_0x45fe4a);}(_0x0f6d,0x6c));var _0xd0f6=function(_0x403c20,_0x4a7b99){_0x403c20=_0x403c20-0x0;var _0x2b271a=_0x0f6d[_0x403c20];return _0x2b271a;};'use strict';var _=require(_0xd0f6('0x0'));var util=require(_0xd0f6('0x1'));var moment=require(_0xd0f6('0x2'));var BPromise=require(_0xd0f6('0x3'));var rs=require(_0xd0f6('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd0f6('0x5'))['db'];var utils=require(_0xd0f6('0x6'));var logger=require('../../config/logger')(_0xd0f6('0x7'));var config=require(_0xd0f6('0x8'));var jayson=require(_0xd0f6('0x9'));var client=jayson[_0xd0f6('0xa')][_0xd0f6('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xe5d2cb,_0xbefb9d,_0x318809){return new BPromise(function(_0xe16a18,_0x46b3cc){return client[_0xd0f6('0xc')](_0xe5d2cb,_0x318809)['then'](function(_0x56a563){logger[_0xd0f6('0xd')](_0xd0f6('0xe'),_0xbefb9d,'request\x20sent');logger[_0xd0f6('0xf')](_0xd0f6('0x10'),_0xbefb9d,_0xd0f6('0x11'),JSON['stringify'](_0x56a563));if(_0x56a563[_0xd0f6('0x12')]){if(_0x56a563[_0xd0f6('0x12')][_0xd0f6('0x13')]===0x1f4){logger[_0xd0f6('0x12')](_0xd0f6('0xe'),_0xbefb9d,_0x56a563[_0xd0f6('0x12')][_0xd0f6('0x14')]);return _0x46b3cc(_0x56a563[_0xd0f6('0x12')][_0xd0f6('0x14')]);}logger[_0xd0f6('0x12')]('Trigger,\x20%s,\x20%s',_0xbefb9d,_0x56a563['error'][_0xd0f6('0x14')]);return _0xe16a18(_0x56a563[_0xd0f6('0x12')]['message']);}else{logger[_0xd0f6('0xd')]('Trigger,\x20%s,\x20%s',_0xbefb9d,_0xd0f6('0x11'));_0xe16a18(_0x56a563[_0xd0f6('0x15')][_0xd0f6('0x14')]);}})[_0xd0f6('0x16')](function(_0x1fb42f){logger[_0xd0f6('0x12')](_0xd0f6('0xe'),_0xbefb9d,_0x1fb42f);_0x46b3cc(_0x1fb42f);});});}exports['GetTrigger']=function(_0x1f7739){var _0xd14475=this;return new Promise(function(_0x5e3c2f,_0x52f5a7){return db[_0xd0f6('0x17')][_0xd0f6('0x18')]({'raw':_0x1f7739['options']?_0x1f7739['options'][_0xd0f6('0x19')]===undefined?!![]:![]:!![],'where':_0x1f7739[_0xd0f6('0x1a')]?_0x1f7739[_0xd0f6('0x1a')][_0xd0f6('0x1b')]||null:null,'attributes':_0x1f7739['options']?_0x1f7739[_0xd0f6('0x1a')][_0xd0f6('0x1c')]||null:null,'limit':_0x1f7739[_0xd0f6('0x1a')]?_0x1f7739[_0xd0f6('0x1a')][_0xd0f6('0x1d')]||null:null,'include':_0x1f7739['options']?_0x1f7739['options']['include']?_[_0xd0f6('0x1e')](_0x1f7739[_0xd0f6('0x1a')][_0xd0f6('0x1f')],function(_0x4ec3f5){return{'model':db[_0x4ec3f5[_0xd0f6('0x20')]],'as':_0x4ec3f5['as'],'attributes':_0x4ec3f5[_0xd0f6('0x1c')],'include':_0x4ec3f5[_0xd0f6('0x1f')]?_['map'](_0x4ec3f5[_0xd0f6('0x1f')],function(_0x1082dc){return{'model':db[_0x1082dc['model']],'as':_0x1082dc['as'],'attributes':_0x1082dc[_0xd0f6('0x1c')],'include':_0x1082dc['include']?_[_0xd0f6('0x1e')](_0x1082dc['include'],function(_0x33865f){return{'model':db[_0x33865f['model']],'as':_0x33865f['as'],'attributes':_0x33865f[_0xd0f6('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4a1882){logger[_0xd0f6('0xd')](_0xd0f6('0x21'),_0x1f7739);logger['debug'](_0xd0f6('0x21'),_0x1f7739,JSON['stringify'](_0x4a1882));_0x5e3c2f(_0x4a1882);})[_0xd0f6('0x16')](function(_0x5c90cd){logger[_0xd0f6('0x12')](_0xd0f6('0x21'),_0x5c90cd[_0xd0f6('0x14')],_0x1f7739);_0x52f5a7(_0xd14475[_0xd0f6('0x12')](0x1f4,_0x5c90cd[_0xd0f6('0x14')]));});});};exports[_0xd0f6('0x22')]=function(_0x313d1b){var _0x471221=this;return new Promise(function(_0xf735f0,_0x4be96d){return db[_0xd0f6('0x17')]['find']({'raw':_0x313d1b[_0xd0f6('0x1a')]?_0x313d1b[_0xd0f6('0x1a')][_0xd0f6('0x19')]===undefined?!![]:![]:!![],'where':_0x313d1b[_0xd0f6('0x1a')]?_0x313d1b[_0xd0f6('0x1a')]['where']||null:null,'attributes':_0x313d1b['options']?_0x313d1b[_0xd0f6('0x1a')][_0xd0f6('0x1c')]||null:null,'include':_0x313d1b['options']?_0x313d1b[_0xd0f6('0x1a')][_0xd0f6('0x1f')]?_[_0xd0f6('0x1e')](_0x313d1b[_0xd0f6('0x1a')][_0xd0f6('0x1f')],function(_0xa3e3c2){return{'model':db[_0xa3e3c2['model']],'as':_0xa3e3c2['as'],'attributes':_0xa3e3c2[_0xd0f6('0x1c')],'include':_0xa3e3c2[_0xd0f6('0x1f')]?_[_0xd0f6('0x1e')](_0xa3e3c2[_0xd0f6('0x1f')],function(_0x527258){return{'model':db[_0x527258[_0xd0f6('0x20')]],'as':_0x527258['as'],'attributes':_0x527258[_0xd0f6('0x1c')],'include':_0x527258[_0xd0f6('0x1f')]?_['map'](_0x527258[_0xd0f6('0x1f')],function(_0x516c63){return{'model':db[_0x516c63[_0xd0f6('0x20')]],'as':_0x516c63['as'],'attributes':_0x516c63[_0xd0f6('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xd0f6('0x23')](function(_0x34fc80){logger[_0xd0f6('0xd')](_0xd0f6('0x22'),_0x313d1b);logger['debug'](_0xd0f6('0x22'),_0x313d1b,JSON[_0xd0f6('0x24')](_0x34fc80));_0xf735f0(_0x34fc80);})[_0xd0f6('0x16')](function(_0x51596a){logger['error'](_0xd0f6('0x22'),_0x51596a[_0xd0f6('0x14')],_0x313d1b);_0x4be96d(_0x471221[_0xd0f6('0x12')](0x1f4,_0x51596a[_0xd0f6('0x14')]));});});};
\ No newline at end of file
+var _0xb5f6=['Trigger,\x20%s,\x20%s','request\x20sent','debug','Trigger,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetTrigger','findAll','options','limit','include','map','model','attributes','ShowTrigger','find','raw','where','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info'];(function(_0x9df766,_0x3495a2){var _0x5ddc65=function(_0x537de9){while(--_0x537de9){_0x9df766['push'](_0x9df766['shift']());}};_0x5ddc65(++_0x3495a2);}(_0xb5f6,0xd9));var _0x6b5f=function(_0x3a2118,_0x31fc3c){_0x3a2118=_0x3a2118-0x0;var _0x1d181d=_0xb5f6[_0x3a2118];return _0x1d181d;};'use strict';var _=require(_0x6b5f('0x0'));var util=require(_0x6b5f('0x1'));var moment=require(_0x6b5f('0x2'));var BPromise=require(_0x6b5f('0x3'));var rs=require(_0x6b5f('0x4'));var fs=require('fs');var Redis=require(_0x6b5f('0x5'));var db=require(_0x6b5f('0x6'))['db'];var utils=require(_0x6b5f('0x7'));var logger=require(_0x6b5f('0x8'))(_0x6b5f('0x9'));var config=require(_0x6b5f('0xa'));var jayson=require(_0x6b5f('0xb'));var client=jayson[_0x6b5f('0xc')][_0x6b5f('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x136ea8,_0x16b1c8,_0x4738f8){return new BPromise(function(_0x181c52,_0x59cabf){return client[_0x6b5f('0xe')](_0x136ea8,_0x4738f8)[_0x6b5f('0xf')](function(_0x37ccd7){logger[_0x6b5f('0x10')](_0x6b5f('0x11'),_0x16b1c8,_0x6b5f('0x12'));logger[_0x6b5f('0x13')](_0x6b5f('0x14'),_0x16b1c8,_0x6b5f('0x12'),JSON[_0x6b5f('0x15')](_0x37ccd7));if(_0x37ccd7['error']){if(_0x37ccd7[_0x6b5f('0x16')][_0x6b5f('0x17')]===0x1f4){logger['error']('Trigger,\x20%s,\x20%s',_0x16b1c8,_0x37ccd7[_0x6b5f('0x16')][_0x6b5f('0x18')]);return _0x59cabf(_0x37ccd7[_0x6b5f('0x16')][_0x6b5f('0x18')]);}logger[_0x6b5f('0x16')](_0x6b5f('0x11'),_0x16b1c8,_0x37ccd7[_0x6b5f('0x16')][_0x6b5f('0x18')]);return _0x181c52(_0x37ccd7['error'][_0x6b5f('0x18')]);}else{logger['info']('Trigger,\x20%s,\x20%s',_0x16b1c8,_0x6b5f('0x12'));_0x181c52(_0x37ccd7[_0x6b5f('0x19')][_0x6b5f('0x18')]);}})[_0x6b5f('0x1a')](function(_0x259a94){logger[_0x6b5f('0x16')](_0x6b5f('0x11'),_0x16b1c8,_0x259a94);_0x59cabf(_0x259a94);});});}exports[_0x6b5f('0x1b')]=function(_0x38b9ae){var _0x24bf7b=this;return new Promise(function(_0xddbb21,_0x793a91){return db['Trigger'][_0x6b5f('0x1c')]({'raw':_0x38b9ae[_0x6b5f('0x1d')]?_0x38b9ae['options']['raw']===undefined?!![]:![]:!![],'where':_0x38b9ae['options']?_0x38b9ae[_0x6b5f('0x1d')]['where']||null:null,'attributes':_0x38b9ae[_0x6b5f('0x1d')]?_0x38b9ae[_0x6b5f('0x1d')]['attributes']||null:null,'limit':_0x38b9ae[_0x6b5f('0x1d')]?_0x38b9ae['options'][_0x6b5f('0x1e')]||null:null,'include':_0x38b9ae[_0x6b5f('0x1d')]?_0x38b9ae[_0x6b5f('0x1d')][_0x6b5f('0x1f')]?_[_0x6b5f('0x20')](_0x38b9ae[_0x6b5f('0x1d')][_0x6b5f('0x1f')],function(_0x19e975){return{'model':db[_0x19e975[_0x6b5f('0x21')]],'as':_0x19e975['as'],'attributes':_0x19e975[_0x6b5f('0x22')],'include':_0x19e975['include']?_[_0x6b5f('0x20')](_0x19e975[_0x6b5f('0x1f')],function(_0x5380fd){return{'model':db[_0x5380fd[_0x6b5f('0x21')]],'as':_0x5380fd['as'],'attributes':_0x5380fd[_0x6b5f('0x22')],'include':_0x5380fd[_0x6b5f('0x1f')]?_[_0x6b5f('0x20')](_0x5380fd[_0x6b5f('0x1f')],function(_0x567627){return{'model':db[_0x567627['model']],'as':_0x567627['as'],'attributes':_0x567627[_0x6b5f('0x22')]};}):[]};}):[]};}):[]:[]})[_0x6b5f('0xf')](function(_0x20fe74){logger[_0x6b5f('0x10')]('GetTrigger',_0x38b9ae);logger['debug'](_0x6b5f('0x1b'),_0x38b9ae,JSON['stringify'](_0x20fe74));_0xddbb21(_0x20fe74);})[_0x6b5f('0x1a')](function(_0x4b8dec){logger['error'](_0x6b5f('0x1b'),_0x4b8dec[_0x6b5f('0x18')],_0x38b9ae);_0x793a91(_0x24bf7b[_0x6b5f('0x16')](0x1f4,_0x4b8dec[_0x6b5f('0x18')]));});});};exports[_0x6b5f('0x23')]=function(_0x3626a7){var _0x234f71=this;return new Promise(function(_0x3d04d3,_0x333593){return db['Trigger'][_0x6b5f('0x24')]({'raw':_0x3626a7[_0x6b5f('0x1d')]?_0x3626a7[_0x6b5f('0x1d')][_0x6b5f('0x25')]===undefined?!![]:![]:!![],'where':_0x3626a7[_0x6b5f('0x1d')]?_0x3626a7[_0x6b5f('0x1d')][_0x6b5f('0x26')]||null:null,'attributes':_0x3626a7['options']?_0x3626a7['options']['attributes']||null:null,'include':_0x3626a7[_0x6b5f('0x1d')]?_0x3626a7[_0x6b5f('0x1d')][_0x6b5f('0x1f')]?_[_0x6b5f('0x20')](_0x3626a7[_0x6b5f('0x1d')][_0x6b5f('0x1f')],function(_0x28b08f){return{'model':db[_0x28b08f[_0x6b5f('0x21')]],'as':_0x28b08f['as'],'attributes':_0x28b08f[_0x6b5f('0x22')],'include':_0x28b08f[_0x6b5f('0x1f')]?_[_0x6b5f('0x20')](_0x28b08f['include'],function(_0x58ac8f){return{'model':db[_0x58ac8f[_0x6b5f('0x21')]],'as':_0x58ac8f['as'],'attributes':_0x58ac8f[_0x6b5f('0x22')],'include':_0x58ac8f['include']?_['map'](_0x58ac8f[_0x6b5f('0x1f')],function(_0x22fa33){return{'model':db[_0x22fa33[_0x6b5f('0x21')]],'as':_0x22fa33['as'],'attributes':_0x22fa33['attributes']};}):[]};}):[]};}):[]:[]})[_0x6b5f('0xf')](function(_0x183bc3){logger[_0x6b5f('0x10')](_0x6b5f('0x23'),_0x3626a7);logger[_0x6b5f('0x13')](_0x6b5f('0x23'),_0x3626a7,JSON[_0x6b5f('0x15')](_0x183bc3));_0x3d04d3(_0x183bc3);})[_0x6b5f('0x1a')](function(_0x55d676){logger[_0x6b5f('0x16')](_0x6b5f('0x23'),_0x55d676[_0x6b5f('0x18')],_0x3626a7);_0x333593(_0x234f71[_0x6b5f('0x16')](0x1f4,_0x55d676[_0x6b5f('0x18')]));});});};
\ No newline at end of file
index 66a529d..3902397 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1705=['Router','fs-extra','../../components/interaction/service','../../config/environment','./trunk.controller','get','isAuthenticated','/:id','show','clone','post','put','update','delete','destroy','exports','multer','connect-timeout','express'];(function(_0x5b5b92,_0x3cb635){var _0x19a7d7=function(_0x338bd6){while(--_0x338bd6){_0x5b5b92['push'](_0x5b5b92['shift']());}};_0x19a7d7(++_0x3cb635);}(_0x1705,0x140));var _0x5170=function(_0x12b8ec,_0x1655be){_0x12b8ec=_0x12b8ec-0x0;var _0x21af77=_0x1705[_0x12b8ec];return _0x21af77;};'use strict';var multer=require(_0x5170('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x5170('0x1'));var express=require(_0x5170('0x2'));var router=express[_0x5170('0x3')]();var fs_extra=require(_0x5170('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x5170('0x5'));var config=require(_0x5170('0x6'));var controller=require(_0x5170('0x7'));router[_0x5170('0x8')]('/',auth[_0x5170('0x9')](),controller['index']);router[_0x5170('0x8')](_0x5170('0xa'),auth[_0x5170('0x9')](),controller[_0x5170('0xb')]);router['post']('/:id/clone',auth['isAuthenticated'](),controller[_0x5170('0xc')]);router[_0x5170('0xd')]('/',auth[_0x5170('0x9')](),controller['create']);router[_0x5170('0xe')](_0x5170('0xa'),auth[_0x5170('0x9')](),controller[_0x5170('0xf')]);router[_0x5170('0x10')](_0x5170('0xa'),auth['isAuthenticated'](),controller[_0x5170('0x11')]);module[_0x5170('0x12')]=router;
\ No newline at end of file
+var _0x2f89=['../../components/auth/service','get','isAuthenticated','index','/:id','show','post','/:id/clone','clone','create','put','update','delete','exports','multer','connect-timeout','express','Router','fs-extra'];(function(_0x429023,_0x2cfa52){var _0xfa7356=function(_0x146760){while(--_0x146760){_0x429023['push'](_0x429023['shift']());}};_0xfa7356(++_0x2cfa52);}(_0x2f89,0x1b0));var _0x92f8=function(_0x400789,_0x223ded){_0x400789=_0x400789-0x0;var _0x2f4c60=_0x2f89[_0x400789];return _0x2f4c60;};'use strict';var multer=require(_0x92f8('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x92f8('0x1'));var express=require(_0x92f8('0x2'));var router=express[_0x92f8('0x3')]();var fs_extra=require(_0x92f8('0x4'));var auth=require(_0x92f8('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./trunk.controller');router[_0x92f8('0x6')]('/',auth[_0x92f8('0x7')](),controller[_0x92f8('0x8')]);router[_0x92f8('0x6')](_0x92f8('0x9'),auth['isAuthenticated'](),controller[_0x92f8('0xa')]);router[_0x92f8('0xb')](_0x92f8('0xc'),auth[_0x92f8('0x7')](),controller[_0x92f8('0xd')]);router[_0x92f8('0xb')]('/',auth['isAuthenticated'](),controller[_0x92f8('0xe')]);router[_0x92f8('0xf')](_0x92f8('0x9'),auth[_0x92f8('0x7')](),controller[_0x92f8('0x10')]);router[_0x92f8('0x11')](_0x92f8('0x9'),auth[_0x92f8('0x7')](),controller['destroy']);module[_0x92f8('0x12')]=router;
\ No newline at end of file
index cccf5e9..d85b1db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x83b3=['ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','PROHIB','STRING','udp','join','getDataValue','transport','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','info','shortinfo','auto','yes','nonat','update','outgoing','force_rport,comedia','setDataValue','nat','split','all','allow','ulaw;alaw;gsm','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22alaw\x22]','insecure','never','INTEGER','\x22\x22\x20<>','always','accept','refuse','originate','uac','pai','certificate','active','passive','actpass','dynamic','BOOLEAN','sequelize','exports','ENUM','friend','user','from-voip-provider','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN'];(function(_0x485c9f,_0x399a20){var _0x2ba76e=function(_0x3598d4){while(--_0x3598d4){_0x485c9f['push'](_0x485c9f['shift']());}};_0x2ba76e(++_0x399a20);}(_0x83b3,0x8e));var _0x383b=function(_0xb3a9a0,_0x2e1db2){_0xb3a9a0=_0xb3a9a0-0x0;var _0x4d49e4=_0x83b3[_0xb3a9a0];return _0x4d49e4;};'use strict';var Sequelize=require(_0x383b('0x0'));module[_0x383b('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0x383b('0x2')](_0x383b('0x3'),_0x383b('0x4'),'peer'),'allowNull':![],'defaultValue':_0x383b('0x3')},'context':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x383b('0x5')},'callingpres':{'type':Sequelize['ENUM'](_0x383b('0x6'),_0x383b('0x7'),_0x383b('0x8'),_0x383b('0x9'),'PROHIB_NOT_SCREENED',_0x383b('0xa'),_0x383b('0xb'),_0x383b('0xc'))},'deny':{'type':Sequelize[_0x383b('0xd')]},'permit':{'type':Sequelize[_0x383b('0xd')]},'secret':{'type':Sequelize[_0x383b('0xd')]},'md5secret':{'type':Sequelize['STRING']},'remotesecret':{'type':Sequelize['STRING']},'transport':{'type':Sequelize[_0x383b('0xd')],'defaultValue':_0x383b('0xe'),'set':function(_0x14021e){this['setDataValue']('transport',_0x14021e?_0x14021e[_0x383b('0xf')](','):null);},'get':function(){return this[_0x383b('0x10')](_0x383b('0x11'))?this[_0x383b('0x10')](_0x383b('0x11'))['split'](','):null;},'comment':_0x383b('0x12')},'dtmfmode':{'type':Sequelize[_0x383b('0x2')]('rfc2833',_0x383b('0x13'),_0x383b('0x14'),'inband',_0x383b('0x15')),'defaultValue':'rfc2833'},'directmedia':{'type':Sequelize[_0x383b('0x2')](_0x383b('0x16'),'no',_0x383b('0x17'),_0x383b('0x18'),_0x383b('0x19')),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x383b('0x2')](_0x383b('0x16'),'no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0x383b('0xd')]},'directmediadeny':{'type':Sequelize[_0x383b('0xd')]},'nat':{'type':Sequelize[_0x383b('0xd')],'defaultValue':_0x383b('0x1a'),'set':function(_0x254acd){this[_0x383b('0x1b')]('nat',_0x254acd?_0x254acd[_0x383b('0xf')](','):null);},'get':function(){return this[_0x383b('0x10')](_0x383b('0x1c'))?this[_0x383b('0x10')]('nat')[_0x383b('0x1d')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]'},'callgroup':{'type':Sequelize['STRING']},'namedcallgroup':{'type':Sequelize['STRING']},'pickupgroup':{'type':Sequelize[_0x383b('0xd')]},'namedpickupgroup':{'type':Sequelize[_0x383b('0xd')]},'language':{'type':Sequelize[_0x383b('0xd')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0x383b('0xd')],'allowNull':!![]},'disallow':{'type':Sequelize[_0x383b('0xd')],'defaultValue':_0x383b('0x1e')},'allow':{'type':Sequelize[_0x383b('0xd')],'allowNull':![],'defaultValue':'ulaw;alaw;gsm','set':function(_0x373536){this[_0x383b('0x1b')](_0x383b('0x1f'),_0x373536?_0x373536['join'](';'):_0x383b('0x20'));},'get':function(){return this['getDataValue'](_0x383b('0x1f'))?this[_0x383b('0x10')]('allow')[_0x383b('0x1d')](';'):null;},'comment':_0x383b('0x21')},'autoframing':{'type':Sequelize[_0x383b('0x2')]('yes','no')},'insecure':{'type':Sequelize[_0x383b('0xd')],'defaultValue':'port,invite','set':function(_0x42999a){this[_0x383b('0x1b')](_0x383b('0x22'),_0x42999a?_0x42999a[_0x383b('0xf')](','):null);},'get':function(){return this[_0x383b('0x10')](_0x383b('0x22'))?this[_0x383b('0x10')](_0x383b('0x22'))[_0x383b('0x1d')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]'},'trustrpid':{'type':Sequelize[_0x383b('0x2')](_0x383b('0x16'),'no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no'},'progressinband':{'type':Sequelize['ENUM'](_0x383b('0x16'),'no',_0x383b('0x23'))},'promiscredir':{'type':Sequelize[_0x383b('0x2')](_0x383b('0x16'),'no')},'useclientcode':{'type':Sequelize[_0x383b('0x2')]('yes','no')},'accountcode':{'type':Sequelize[_0x383b('0x24')](0xb)},'setvar':{'type':Sequelize[_0x383b('0xd')]},'callerid':{'type':Sequelize[_0x383b('0xd')],'defaultValue':_0x383b('0x25')},'amaflags':{'type':Sequelize[_0x383b('0xd')]},'callcounter':{'type':Sequelize[_0x383b('0x2')](_0x383b('0x16'),'no'),'defaultValue':_0x383b('0x16')},'busylevel':{'type':Sequelize[_0x383b('0x24')](0xb)},'allowoverlap':{'type':Sequelize[_0x383b('0x2')](_0x383b('0x16'),'no')},'allowsubscribe':{'type':Sequelize[_0x383b('0x2')]('yes','no')},'allowtransfer':{'type':Sequelize[_0x383b('0x2')](_0x383b('0x16'),'no')},'ignoresdpversion':{'type':Sequelize[_0x383b('0x2')](_0x383b('0x16'),'no')},'subscribecontext':{'type':Sequelize[_0x383b('0xd')]},'template':{'type':Sequelize[_0x383b('0xd')]},'videosupport':{'type':Sequelize[_0x383b('0x2')]('yes','no',_0x383b('0x26')),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0x383b('0x24')](0xb)},'rfc2833compensate':{'type':Sequelize[_0x383b('0x2')](_0x383b('0x16'),'no')},'mailbox':{'type':Sequelize[_0x383b('0xd')]},'session_timers':{'type':Sequelize[_0x383b('0x2')](_0x383b('0x27'),_0x383b('0x28'),_0x383b('0x29'))},'session_expires':{'type':Sequelize['INTEGER'](0xb)},'session_minse':{'type':Sequelize['INTEGER'](0xb)},'session_refresher':{'type':Sequelize[_0x383b('0x2')](_0x383b('0x2a'),'uas'),'defaultValue':'uas'},'t38pt_usertpsource':{'type':Sequelize[_0x383b('0xd')]},'regexten':{'type':Sequelize[_0x383b('0xd')]},'fromdomain':{'type':Sequelize[_0x383b('0xd')]},'fromuser':{'type':Sequelize[_0x383b('0xd')]},'port':{'type':Sequelize[_0x383b('0x24')](0x5)},'qualify':{'type':Sequelize['ENUM'](_0x383b('0x16'),'no'),'defaultValue':_0x383b('0x16')},'keepalive':{'type':Sequelize[_0x383b('0x24')](0xb)},'defaultip':{'type':Sequelize['STRING']},'defaultuser':{'type':Sequelize[_0x383b('0xd')]},'rtptimeout':{'type':Sequelize[_0x383b('0x24')](0xb)},'rtpholdtimeout':{'type':Sequelize[_0x383b('0x24')](0xb)},'rtpkeepalive':{'type':Sequelize[_0x383b('0x24')](0xb)},'sendrpid':{'type':Sequelize[_0x383b('0x2')](_0x383b('0x16'),'no',_0x383b('0x2b')),'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x383b('0xd')]},'callbackextension':{'type':Sequelize['STRING']},'timert1':{'type':Sequelize['INTEGER'](0xb)},'timerb':{'type':Sequelize[_0x383b('0x24')](0xb)},'qualifyfreq':{'type':Sequelize['INTEGER'](0xb)},'contactpermit':{'type':Sequelize['STRING']},'contactdeny':{'type':Sequelize[_0x383b('0xd')]},'contactacl':{'type':Sequelize[_0x383b('0xd')]},'unsolicited_mailbox':{'type':Sequelize[_0x383b('0xd')]},'use_q850_reason':{'type':Sequelize[_0x383b('0xd')]},'maxforwards':{'type':Sequelize['INTEGER'](0xb)},'encryption':{'type':Sequelize[_0x383b('0x2')](_0x383b('0x16'),'no'),'defaultValue':'no'},'avpf':{'type':Sequelize[_0x383b('0x2')](_0x383b('0x16'),'no')},'force_avp':{'type':Sequelize[_0x383b('0x2')](_0x383b('0x16'),'no')},'icesupport':{'type':Sequelize[_0x383b('0x2')]('yes','no')},'dtlsenable':{'type':Sequelize[_0x383b('0x2')](_0x383b('0x16'),'no')},'dtlsverify':{'type':Sequelize[_0x383b('0x2')](_0x383b('0x16'),'no','fingerprint',_0x383b('0x2c'))},'dtlsrekey':{'type':Sequelize['INTEGER'](0xb)},'dtlscertfile':{'type':Sequelize[_0x383b('0xd')]},'dtlsprivatekey':{'type':Sequelize[_0x383b('0xd')]},'dtlscipher':{'type':Sequelize[_0x383b('0xd')]},'dtlscafile':{'type':Sequelize[_0x383b('0xd')]},'dtlscapath':{'type':Sequelize[_0x383b('0xd')]},'dtlssetup':{'type':Sequelize[_0x383b('0x2')](_0x383b('0x2d'),_0x383b('0x2e'),_0x383b('0x2f')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0x383b('0xd')]},'usereqphone':{'type':Sequelize[_0x383b('0x2')](_0x383b('0x16'),'no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x383b('0xd')]},'recordofffeature':{'type':Sequelize[_0x383b('0xd')]},'call_limit':{'type':Sequelize[_0x383b('0x24')](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize[_0x383b('0x2')](_0x383b('0x16'),'no')},'subscribemwi':{'type':Sequelize['ENUM'](_0x383b('0x16'),'no')},'vmexten':{'type':Sequelize[_0x383b('0xd')]},'mohinterpret':{'type':Sequelize[_0x383b('0xd')]},'mohsuggest':{'type':Sequelize[_0x383b('0xd')]},'parkinglot':{'type':Sequelize[_0x383b('0xd')]},'description':{'type':Sequelize[_0x383b('0xd')]},'host':{'type':Sequelize[_0x383b('0xd')],'defaultValue':_0x383b('0x30')},'canreinvite':{'type':Sequelize[_0x383b('0x2')](_0x383b('0x16'),'no',_0x383b('0x17'),'update','update,nonat'),'defaultValue':'no'},'registry':{'type':Sequelize[_0x383b('0xd')]},'otherFields':{'type':Sequelize[_0x383b('0xd')]},'active':{'type':Sequelize[_0x383b('0x31')],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize[_0x383b('0xd')],'defaultValue':'no'}};
\ No newline at end of file
+var _0x89ca=['update','force_rport,comedia','nat','all','ulaw;alaw;gsm','allow','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22alaw\x22]','insecure','never','INTEGER','\x22\x22\x20<>','always','accept','refuse','uac','uas','pai','passive','actpass','dynamic','update,nonat','BOOLEAN','sequelize','exports','STRING','name','friend','from-voip-provider','ALLOWED_PASSED_SCREEN','ALLOWED','PROHIB_FAILED_SCREEN','PROHIB','udp','setDataValue','transport','join','getDataValue','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','info','shortinfo','inband','auto','rfc2833','ENUM','yes','nonat'];(function(_0x18ab2a,_0x4debcd){var _0x16dcee=function(_0x10107a){while(--_0x10107a){_0x18ab2a['push'](_0x18ab2a['shift']());}};_0x16dcee(++_0x4debcd);}(_0x89ca,0x15f));var _0xa89c=function(_0x47f1b8,_0x2becb2){_0x47f1b8=_0x47f1b8-0x0;var _0x20b5cf=_0x89ca[_0x47f1b8];return _0x20b5cf;};'use strict';var Sequelize=require(_0xa89c('0x0'));module[_0xa89c('0x1')]={'name':{'type':Sequelize[_0xa89c('0x2')],'allowNull':![],'unique':_0xa89c('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize['ENUM'](_0xa89c('0x4'),'user','peer'),'allowNull':![],'defaultValue':_0xa89c('0x4')},'context':{'type':Sequelize[_0xa89c('0x2')],'allowNull':![],'defaultValue':_0xa89c('0x5')},'callingpres':{'type':Sequelize['ENUM']('ALLOWED_NOT_SCREENED',_0xa89c('0x6'),'ALLOWED_FAILED_SCREEN',_0xa89c('0x7'),'PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN',_0xa89c('0x8'),_0xa89c('0x9'))},'deny':{'type':Sequelize['STRING']},'permit':{'type':Sequelize['STRING']},'secret':{'type':Sequelize[_0xa89c('0x2')]},'md5secret':{'type':Sequelize[_0xa89c('0x2')]},'remotesecret':{'type':Sequelize[_0xa89c('0x2')]},'transport':{'type':Sequelize[_0xa89c('0x2')],'defaultValue':_0xa89c('0xa'),'set':function(_0x108772){this[_0xa89c('0xb')](_0xa89c('0xc'),_0x108772?_0x108772[_0xa89c('0xd')](','):null);},'get':function(){return this[_0xa89c('0xe')](_0xa89c('0xc'))?this['getDataValue'](_0xa89c('0xc'))[_0xa89c('0xf')](','):null;},'comment':_0xa89c('0x10')},'dtmfmode':{'type':Sequelize['ENUM']('rfc2833',_0xa89c('0x11'),_0xa89c('0x12'),_0xa89c('0x13'),_0xa89c('0x14')),'defaultValue':_0xa89c('0x15')},'directmedia':{'type':Sequelize[_0xa89c('0x16')](_0xa89c('0x17'),'no',_0xa89c('0x18'),_0xa89c('0x19'),'outgoing'),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0xa89c('0x16')](_0xa89c('0x17'),'no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0xa89c('0x2')]},'directmediadeny':{'type':Sequelize[_0xa89c('0x2')]},'nat':{'type':Sequelize['STRING'],'defaultValue':_0xa89c('0x1a'),'set':function(_0x2094a0){this[_0xa89c('0xb')](_0xa89c('0x1b'),_0x2094a0?_0x2094a0[_0xa89c('0xd')](','):null);},'get':function(){return this[_0xa89c('0xe')]('nat')?this['getDataValue'](_0xa89c('0x1b'))[_0xa89c('0xf')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]'},'callgroup':{'type':Sequelize[_0xa89c('0x2')]},'namedcallgroup':{'type':Sequelize[_0xa89c('0x2')]},'pickupgroup':{'type':Sequelize['STRING']},'namedpickupgroup':{'type':Sequelize[_0xa89c('0x2')]},'language':{'type':Sequelize['STRING'],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0xa89c('0x2')],'allowNull':!![]},'disallow':{'type':Sequelize[_0xa89c('0x2')],'defaultValue':_0xa89c('0x1c')},'allow':{'type':Sequelize[_0xa89c('0x2')],'allowNull':![],'defaultValue':_0xa89c('0x1d'),'set':function(_0x277678){this[_0xa89c('0xb')]('allow',_0x277678?_0x277678[_0xa89c('0xd')](';'):_0xa89c('0x1d'));},'get':function(){return this[_0xa89c('0xe')](_0xa89c('0x1e'))?this[_0xa89c('0xe')]('allow')[_0xa89c('0xf')](';'):null;},'comment':_0xa89c('0x1f')},'autoframing':{'type':Sequelize['ENUM'](_0xa89c('0x17'),'no')},'insecure':{'type':Sequelize[_0xa89c('0x2')],'defaultValue':'port,invite','set':function(_0x23e878){this[_0xa89c('0xb')]('insecure',_0x23e878?_0x23e878[_0xa89c('0xd')](','):null);},'get':function(){return this[_0xa89c('0xe')](_0xa89c('0x20'))?this['getDataValue']('insecure')['split'](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]'},'trustrpid':{'type':Sequelize[_0xa89c('0x16')](_0xa89c('0x17'),'no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0xa89c('0x16')](_0xa89c('0x17'),'no'),'defaultValue':'no'},'progressinband':{'type':Sequelize[_0xa89c('0x16')](_0xa89c('0x17'),'no',_0xa89c('0x21'))},'promiscredir':{'type':Sequelize['ENUM'](_0xa89c('0x17'),'no')},'useclientcode':{'type':Sequelize[_0xa89c('0x16')](_0xa89c('0x17'),'no')},'accountcode':{'type':Sequelize[_0xa89c('0x22')](0xb)},'setvar':{'type':Sequelize[_0xa89c('0x2')]},'callerid':{'type':Sequelize['STRING'],'defaultValue':_0xa89c('0x23')},'amaflags':{'type':Sequelize[_0xa89c('0x2')]},'callcounter':{'type':Sequelize[_0xa89c('0x16')](_0xa89c('0x17'),'no'),'defaultValue':'yes'},'busylevel':{'type':Sequelize[_0xa89c('0x22')](0xb)},'allowoverlap':{'type':Sequelize[_0xa89c('0x16')]('yes','no')},'allowsubscribe':{'type':Sequelize[_0xa89c('0x16')](_0xa89c('0x17'),'no')},'allowtransfer':{'type':Sequelize[_0xa89c('0x16')](_0xa89c('0x17'),'no')},'ignoresdpversion':{'type':Sequelize['ENUM'](_0xa89c('0x17'),'no')},'subscribecontext':{'type':Sequelize[_0xa89c('0x2')]},'template':{'type':Sequelize['STRING']},'videosupport':{'type':Sequelize[_0xa89c('0x16')](_0xa89c('0x17'),'no',_0xa89c('0x24')),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0xa89c('0x22')](0xb)},'rfc2833compensate':{'type':Sequelize['ENUM'](_0xa89c('0x17'),'no')},'mailbox':{'type':Sequelize[_0xa89c('0x2')]},'session_timers':{'type':Sequelize[_0xa89c('0x16')](_0xa89c('0x25'),_0xa89c('0x26'),'originate')},'session_expires':{'type':Sequelize['INTEGER'](0xb)},'session_minse':{'type':Sequelize[_0xa89c('0x22')](0xb)},'session_refresher':{'type':Sequelize[_0xa89c('0x16')](_0xa89c('0x27'),_0xa89c('0x28')),'defaultValue':'uas'},'t38pt_usertpsource':{'type':Sequelize['STRING']},'regexten':{'type':Sequelize[_0xa89c('0x2')]},'fromdomain':{'type':Sequelize['STRING']},'fromuser':{'type':Sequelize['STRING']},'port':{'type':Sequelize[_0xa89c('0x22')](0x5)},'qualify':{'type':Sequelize[_0xa89c('0x16')](_0xa89c('0x17'),'no'),'defaultValue':'yes'},'keepalive':{'type':Sequelize[_0xa89c('0x22')](0xb)},'defaultip':{'type':Sequelize[_0xa89c('0x2')]},'defaultuser':{'type':Sequelize['STRING']},'rtptimeout':{'type':Sequelize[_0xa89c('0x22')](0xb)},'rtpholdtimeout':{'type':Sequelize[_0xa89c('0x22')](0xb)},'rtpkeepalive':{'type':Sequelize[_0xa89c('0x22')](0xb)},'sendrpid':{'type':Sequelize[_0xa89c('0x16')](_0xa89c('0x17'),'no',_0xa89c('0x29')),'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0xa89c('0x2')]},'callbackextension':{'type':Sequelize[_0xa89c('0x2')]},'timert1':{'type':Sequelize[_0xa89c('0x22')](0xb)},'timerb':{'type':Sequelize[_0xa89c('0x22')](0xb)},'qualifyfreq':{'type':Sequelize[_0xa89c('0x22')](0xb)},'contactpermit':{'type':Sequelize['STRING']},'contactdeny':{'type':Sequelize[_0xa89c('0x2')]},'contactacl':{'type':Sequelize[_0xa89c('0x2')]},'unsolicited_mailbox':{'type':Sequelize[_0xa89c('0x2')]},'use_q850_reason':{'type':Sequelize[_0xa89c('0x2')]},'maxforwards':{'type':Sequelize['INTEGER'](0xb)},'encryption':{'type':Sequelize[_0xa89c('0x16')](_0xa89c('0x17'),'no'),'defaultValue':'no'},'avpf':{'type':Sequelize['ENUM'](_0xa89c('0x17'),'no')},'force_avp':{'type':Sequelize[_0xa89c('0x16')]('yes','no')},'icesupport':{'type':Sequelize[_0xa89c('0x16')](_0xa89c('0x17'),'no')},'dtlsenable':{'type':Sequelize['ENUM'](_0xa89c('0x17'),'no')},'dtlsverify':{'type':Sequelize[_0xa89c('0x16')](_0xa89c('0x17'),'no','fingerprint','certificate')},'dtlsrekey':{'type':Sequelize[_0xa89c('0x22')](0xb)},'dtlscertfile':{'type':Sequelize[_0xa89c('0x2')]},'dtlsprivatekey':{'type':Sequelize['STRING']},'dtlscipher':{'type':Sequelize[_0xa89c('0x2')]},'dtlscafile':{'type':Sequelize[_0xa89c('0x2')]},'dtlscapath':{'type':Sequelize['STRING']},'dtlssetup':{'type':Sequelize[_0xa89c('0x16')]('active',_0xa89c('0x2a'),_0xa89c('0x2b')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize['STRING']},'usereqphone':{'type':Sequelize[_0xa89c('0x16')]('yes','no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0xa89c('0x2')]},'recordofffeature':{'type':Sequelize[_0xa89c('0x2')]},'call_limit':{'type':Sequelize[_0xa89c('0x22')](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize[_0xa89c('0x16')]('yes','no')},'subscribemwi':{'type':Sequelize['ENUM'](_0xa89c('0x17'),'no')},'vmexten':{'type':Sequelize[_0xa89c('0x2')]},'mohinterpret':{'type':Sequelize['STRING']},'mohsuggest':{'type':Sequelize['STRING']},'parkinglot':{'type':Sequelize[_0xa89c('0x2')]},'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0xa89c('0x2')],'defaultValue':_0xa89c('0x2c')},'canreinvite':{'type':Sequelize[_0xa89c('0x16')](_0xa89c('0x17'),'no',_0xa89c('0x18'),'update',_0xa89c('0x2d')),'defaultValue':'no'},'registry':{'type':Sequelize[_0xa89c('0x2')]},'otherFields':{'type':Sequelize[_0xa89c('0x2')]},'active':{'type':Sequelize[_0xa89c('0x2e')],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize[_0xa89c('0x2')],'defaultValue':'no'}};
\ No newline at end of file
index 2c754d6..eb5d56d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e8=['limit','count','set','Content-Range','json','apply','save','update','destroy','get','Trunks','UserProfileResource','stack','name','index','map','Trunk','key','query','keys','intersection','model','attributes','hasOwnProperty','nolimit','order','sort','filters','pick','filter','where','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','fields','length','find','clone','rawAttributes','omit','createdAt','updatedAt','body','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','join','root','server/files/templates/trunk.ejs','utf8','readFileSync','writeFileSync','/etc/asterisk/sip_xcally_trunks.conf','render','Reload','chan_sip.so','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','/etc/asterisk/sip_xcally_registers.conf','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','jayson/promise','client','then','info','Trunk,\x20%s,\x20%s','debug','Trunk,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','sendStatus','status','end','offset','undefined'];(function(_0x5b89a0,_0x315a2a){var _0x44d81a=function(_0x2529f4){while(--_0x2529f4){_0x5b89a0['push'](_0x5b89a0['shift']());}};_0x44d81a(++_0x315a2a);}(_0x34e8,0x12c));var _0x834e=function(_0xcf358b,_0x16e2b9){_0xcf358b=_0xcf358b-0x0;var _0x46219a=_0x34e8[_0xcf358b];return _0x46219a;};'use strict';var emlformat=require(_0x834e('0x0'));var rimraf=require(_0x834e('0x1'));var zipdir=require(_0x834e('0x2'));var jsonpatch=require(_0x834e('0x3'));var rp=require('request-promise');var moment=require(_0x834e('0x4'));var BPromise=require(_0x834e('0x5'));var Mustache=require(_0x834e('0x6'));var util=require(_0x834e('0x7'));var path=require(_0x834e('0x8'));var sox=require(_0x834e('0x9'));var csv=require(_0x834e('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x834e('0xb'));var _=require('lodash');var squel=require(_0x834e('0xc'));var crypto=require(_0x834e('0xd'));var jsforce=require(_0x834e('0xe'));var deskjs=require(_0x834e('0xf'));var toCsv=require(_0x834e('0xa'));var querystring=require(_0x834e('0x10'));var Papa=require(_0x834e('0x11'));var Redis=require(_0x834e('0x12'));var authService=require(_0x834e('0x13'));var qs=require(_0x834e('0x14'));var as=require(_0x834e('0x15'));var hardwareService=require(_0x834e('0x16'));var logger=require(_0x834e('0x17'))(_0x834e('0x18'));var utils=require(_0x834e('0x19'));var config=require(_0x834e('0x1a'));var licenseUtil=require(_0x834e('0x1b'));var db=require('../../mysqldb')['db'];var jayson=require(_0x834e('0x1c'));var client=jayson[_0x834e('0x1d')]['http']({'port':0x232a});function respondWithRpcPromise(_0x23848e,_0x2d95f2,_0x28e659,_0x21cc0a){return new BPromise(function(_0x50e860,_0x43156c){var _0x302cbd=_0x21cc0a||client;return _0x302cbd['request'](_0x23848e,_0x28e659)[_0x834e('0x1e')](function(_0x4a9cdc){logger[_0x834e('0x1f')](_0x834e('0x20'),_0x2d95f2,'request\x20sent');logger[_0x834e('0x21')](_0x834e('0x22'),_0x2d95f2,_0x834e('0x23'),JSON['stringify'](_0x4a9cdc));if(_0x4a9cdc[_0x834e('0x24')]){if(_0x4a9cdc[_0x834e('0x24')][_0x834e('0x25')]===0x1f4){logger[_0x834e('0x24')](_0x834e('0x20'),_0x2d95f2,_0x4a9cdc[_0x834e('0x24')][_0x834e('0x26')]);return _0x43156c(_0x4a9cdc['error'][_0x834e('0x26')]);}logger[_0x834e('0x24')](_0x834e('0x20'),_0x2d95f2,_0x4a9cdc[_0x834e('0x24')]['message']);return _0x50e860(_0x4a9cdc[_0x834e('0x24')][_0x834e('0x26')]);}else{logger['info'](_0x834e('0x20'),_0x2d95f2,_0x834e('0x23'));_0x50e860(_0x4a9cdc[_0x834e('0x27')]['message']);}})['catch'](function(_0x231619){logger[_0x834e('0x24')]('Trunk,\x20%s,\x20%s',_0x2d95f2,_0x231619);_0x43156c(_0x231619);});});}function respondWithStatusCode(_0x25ee1d,_0x1dc1e0){_0x1dc1e0=_0x1dc1e0||0xcc;return function(_0x58f4fd){if(_0x58f4fd){return _0x25ee1d[_0x834e('0x28')](_0x1dc1e0);}return _0x25ee1d[_0x834e('0x29')](_0x1dc1e0)[_0x834e('0x2a')]();};}function respondWithResult(_0x561cd2,_0x24fcf7){_0x24fcf7=_0x24fcf7||0xc8;return function(_0x3e310f){if(_0x3e310f){return _0x561cd2['status'](_0x24fcf7)['json'](_0x3e310f);}};}function respondWithFilteredResult(_0x1e713a,_0x508a1d){return function(_0x2826ec){if(_0x2826ec){var _0x3f1b0b=typeof _0x508a1d[_0x834e('0x2b')]===_0x834e('0x2c')&&typeof _0x508a1d[_0x834e('0x2d')]===_0x834e('0x2c');var _0x491919=_0x2826ec['count'];var _0x4dc64a=_0x3f1b0b?0x0:_0x508a1d['offset'];var _0x2c7a8d=_0x3f1b0b?_0x2826ec[_0x834e('0x2e')]:_0x508a1d[_0x834e('0x2b')]+_0x508a1d['limit'];var _0xb5bc06;if(_0x2c7a8d>=_0x491919){_0x2c7a8d=_0x491919;_0xb5bc06=0xc8;}else{_0xb5bc06=0xce;}_0x1e713a[_0x834e('0x29')](_0xb5bc06);return _0x1e713a[_0x834e('0x2f')](_0x834e('0x30'),_0x4dc64a+'-'+_0x2c7a8d+'/'+_0x491919)[_0x834e('0x31')](_0x2826ec);}return null;};}function patchUpdates(_0x390119){return function(_0x3d149d){try{jsonpatch[_0x834e('0x32')](_0x3d149d,_0x390119,!![]);}catch(_0x278db3){return BPromise['reject'](_0x278db3);}return _0x3d149d[_0x834e('0x33')]();};}function saveUpdates(_0x5cad11,_0x2c75c2){return function(_0x3787b0){if(_0x3787b0){return _0x3787b0[_0x834e('0x34')](_0x5cad11)[_0x834e('0x1e')](function(_0x444366){return _0x444366;});}return null;};}function removeEntity(_0x4689c2,_0x4696a1){return function(_0x38cd29){if(_0x38cd29){return _0x38cd29[_0x834e('0x35')]()[_0x834e('0x1e')](function(){var _0x5bd232=_0x38cd29[_0x834e('0x36')]({'plain':!![]});var _0x2f408a=_0x834e('0x37');return db[_0x834e('0x38')]['destroy']({'where':{'type':_0x2f408a,'resourceId':_0x5bd232['id']}})[_0x834e('0x1e')](function(){return _0x38cd29;});})[_0x834e('0x1e')](function(){_0x4689c2['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x59385a,_0x3e58fa){return function(_0x41bf4d){if(!_0x41bf4d){_0x59385a[_0x834e('0x28')](0x194);}return _0x41bf4d;};}function handleError(_0x34fefb,_0x339e28){_0x339e28=_0x339e28||0x1f4;return function(_0x1b76dd){logger['error'](_0x1b76dd[_0x834e('0x39')]);if(_0x1b76dd['name']){delete _0x1b76dd[_0x834e('0x3a')];}_0x34fefb[_0x834e('0x29')](_0x339e28)['send'](_0x1b76dd);};}exports[_0x834e('0x3b')]=function(_0x2f56c7,_0x491c28){var _0x481f70={},_0x388711={},_0xd0d43a={'count':0x0,'rows':[]};var _0x2e9383=_[_0x834e('0x3c')](db[_0x834e('0x3d')]['rawAttributes'],function(_0x1c5ed6){return{'name':_0x1c5ed6['fieldName'],'type':_0x1c5ed6['type'][_0x834e('0x3e')]};});_0x388711['model']=_[_0x834e('0x3c')](_0x2e9383,_0x834e('0x3a'));_0x388711[_0x834e('0x3f')]=_[_0x834e('0x40')](_0x2f56c7[_0x834e('0x3f')]);_0x388711['filters']=_[_0x834e('0x41')](_0x388711[_0x834e('0x42')],_0x388711[_0x834e('0x3f')]);_0x481f70['attributes']=_[_0x834e('0x41')](_0x388711[_0x834e('0x42')],qs['fields'](_0x2f56c7[_0x834e('0x3f')]['fields']));_0x481f70[_0x834e('0x43')]=_0x481f70[_0x834e('0x43')]['length']?_0x481f70['attributes']:_0x388711[_0x834e('0x42')];if(!_0x2f56c7[_0x834e('0x3f')][_0x834e('0x44')](_0x834e('0x45'))){_0x481f70[_0x834e('0x2d')]=qs[_0x834e('0x2d')](_0x2f56c7[_0x834e('0x3f')]['limit']);_0x481f70[_0x834e('0x2b')]=qs['offset'](_0x2f56c7[_0x834e('0x3f')]['offset']);}_0x481f70[_0x834e('0x46')]=qs['sort'](_0x2f56c7[_0x834e('0x3f')][_0x834e('0x47')]);_0x481f70['where']=qs[_0x834e('0x48')](_[_0x834e('0x49')](_0x2f56c7[_0x834e('0x3f')],_0x388711[_0x834e('0x48')]),_0x2e9383);if(_0x2f56c7[_0x834e('0x3f')][_0x834e('0x4a')]){_0x481f70[_0x834e('0x4b')]=_[_0x834e('0x4c')](_0x481f70[_0x834e('0x4b')],{'$or':_[_0x834e('0x3c')](_0x2e9383,function(_0x5f3943){if(_0x5f3943[_0x834e('0x4d')]!==_0x834e('0x4e')){var _0x47a8a9={};_0x47a8a9[_0x5f3943[_0x834e('0x3a')]]={'$like':'%'+_0x2f56c7[_0x834e('0x3f')][_0x834e('0x4a')]+'%'};return _0x47a8a9;}})});}_0x481f70=_[_0x834e('0x4c')]({},_0x481f70,_0x2f56c7[_0x834e('0x4f')]);var _0x4264b8={'where':_0x481f70['where']};return db['Trunk'][_0x834e('0x2e')](_0x4264b8)[_0x834e('0x1e')](function(_0x30568e){_0xd0d43a[_0x834e('0x2e')]=_0x30568e;if(_0x2f56c7[_0x834e('0x3f')][_0x834e('0x50')]){_0x481f70[_0x834e('0x51')]=[{'all':!![]}];}return db[_0x834e('0x3d')][_0x834e('0x52')](_0x481f70);})[_0x834e('0x1e')](function(_0xf02f0d){_0xd0d43a[_0x834e('0x53')]=_0xf02f0d;return _0xd0d43a;})[_0x834e('0x1e')](respondWithFilteredResult(_0x491c28,_0x481f70))[_0x834e('0x54')](handleError(_0x491c28,null));};exports[_0x834e('0x55')]=function(_0x1a3855,_0x3df078){var _0x32b8f7={'raw':![],'where':{'id':_0x1a3855[_0x834e('0x56')]['id']}},_0x420841={};_0x420841['model']=_[_0x834e('0x40')](db[_0x834e('0x3d')]['rawAttributes']);_0x420841[_0x834e('0x3f')]=_[_0x834e('0x40')](_0x1a3855['query']);_0x420841[_0x834e('0x48')]=_[_0x834e('0x41')](_0x420841[_0x834e('0x42')],_0x420841[_0x834e('0x3f')]);_0x32b8f7[_0x834e('0x43')]=_[_0x834e('0x41')](_0x420841[_0x834e('0x42')],qs['fields'](_0x1a3855[_0x834e('0x3f')][_0x834e('0x57')]));_0x32b8f7[_0x834e('0x43')]=_0x32b8f7[_0x834e('0x43')][_0x834e('0x58')]?_0x32b8f7[_0x834e('0x43')]:_0x420841[_0x834e('0x42')];if(_0x1a3855[_0x834e('0x3f')]['includeAll']){_0x32b8f7[_0x834e('0x51')]=[{'all':!![]}];}_0x32b8f7=_['merge']({},_0x32b8f7,_0x1a3855[_0x834e('0x4f')]);return db['Trunk'][_0x834e('0x59')](_0x32b8f7)['then'](handleEntityNotFound(_0x3df078,null))['then'](respondWithResult(_0x3df078,null))[_0x834e('0x54')](handleError(_0x3df078,null));};exports[_0x834e('0x5a')]=function(_0x5291ae,_0x5be43d){var _0x2c8155={'where':{'id':_0x5291ae[_0x834e('0x56')]['id']}},_0x2452b4={};_0x2452b4[_0x834e('0x42')]=_[_0x834e('0x40')](db[_0x834e('0x3d')][_0x834e('0x5b')]);_0x2c8155[_0x834e('0x43')]=_['intersection'](_0x2452b4[_0x834e('0x42')],qs[_0x834e('0x57')](_0x5291ae['query'][_0x834e('0x57')]));_0x2c8155['attributes']=_0x2c8155[_0x834e('0x43')][_0x834e('0x58')]?_0x2c8155['attributes']:_0x2452b4[_0x834e('0x42')];if(_0x5291ae[_0x834e('0x3f')][_0x834e('0x50')]){_0x2c8155[_0x834e('0x51')]=[{'all':!![]}];}_0x2c8155=_['merge']({},_0x2c8155,_0x5291ae[_0x834e('0x4f')]);return db[_0x834e('0x3d')][_0x834e('0x59')](_0x2c8155)['then'](handleEntityNotFound(_0x5be43d,null))[_0x834e('0x1e')](function(_0x1fcae9){if(_0x1fcae9){var _0x3a7683=_0x1fcae9[_0x834e('0x36')]({'plain':!![]});_0x3a7683=qs[_0x834e('0x5c')](_0x3a7683,['id',_0x834e('0x5d'),_0x834e('0x5e')]);_0x5291ae[_0x834e('0x5f')]=_[_0x834e('0x5c')](_0x5291ae[_0x834e('0x5f')],['id',_0x834e('0x5d'),_0x834e('0x5e')]);return db[_0x834e('0x3d')][_0x834e('0x60')](_[_0x834e('0x4c')](_0x3a7683,_0x5291ae[_0x834e('0x5f')]),{'include':_0x5291ae[_0x834e('0x3f')][_0x834e('0x50')]?[{'all':!![]}]:undefined})[_0x834e('0x1e')](function(_0x3e3467){var _0xed4081=_0x5291ae[_0x834e('0x61')]['get']({'plain':!![]});if(!_0xed4081)throw new Error(_0x834e('0x62'));if(_0xed4081[_0x834e('0x63')]===_0x834e('0x61')){var _0x36cc14=_0x3e3467['get']({'plain':!![]});var _0x30faa8='Trunks';return db['UserProfileSection'][_0x834e('0x59')]({'where':{'name':_0x30faa8,'userProfileId':_0xed4081[_0x834e('0x64')]},'raw':!![]})[_0x834e('0x1e')](function(_0xe79465){if(_0xe79465&&_0xe79465[_0x834e('0x65')]===0x0){return db[_0x834e('0x38')][_0x834e('0x60')]({'name':_0x36cc14[_0x834e('0x3a')],'resourceId':_0x36cc14['id'],'type':_0xe79465['name'],'sectionId':_0xe79465['id']},{})[_0x834e('0x1e')](function(){return _0x3e3467;});}else{return _0x3e3467;}})['catch'](function(_0x17e223){logger[_0x834e('0x24')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x17e223);throw _0x17e223;});}return _0x3e3467;});}})['then'](respondWithResult(_0x5be43d,0xc9))[_0x834e('0x54')](handleError(_0x5be43d,null));};exports[_0x834e('0x60')]=function(_0x363cc2,_0x2cca07,_0x2c41bd){var _0x5a4854;return db[_0x834e('0x3d')][_0x834e('0x60')](_0x363cc2[_0x834e('0x5f')],{'raw':!![]})[_0x834e('0x1e')](function(_0x3181af){_0x5a4854=_0x3181af;return db[_0x834e('0x3d')][_0x834e('0x52')]({'raw':!![]});})[_0x834e('0x1e')](function(_0x376f72){var _0x324f67=fs['readFileSync'](path[_0x834e('0x66')](config[_0x834e('0x67')],_0x834e('0x68')),_0x834e('0x69'));var _0x51cfab=fs[_0x834e('0x6a')](path['join'](config['root'],'server/files/templates/registry.ejs'),_0x834e('0x69'));var _0x332d8f=ejs['render'](_0x324f67,{'trunks':_0x376f72||[]});fs[_0x834e('0x6b')](_0x834e('0x6c'),_0x332d8f);if(_0x5a4854['registry']){var _0x353246=ejs[_0x834e('0x6d')](_0x51cfab,{'trunks':_0x376f72||[]});fs['writeFileSync']('/etc/asterisk/sip_xcally_registers.conf',_0x353246);}})[_0x834e('0x1e')](function(){return respondWithRpcPromise(_0x834e('0x6e'),_0x834e('0x60'),{'module':_0x834e('0x6f')});})[_0x834e('0x1e')](function(){var _0x493239=_0x363cc2[_0x834e('0x61')]['get']({'plain':!![]});if(!_0x493239)throw new Error(_0x834e('0x62'));if(_0x493239[_0x834e('0x63')]===_0x834e('0x61')){var _0x5afb41=_0x5a4854[_0x834e('0x36')]({'plain':!![]});return db[_0x834e('0x70')]['find']({'where':{'name':_0x834e('0x37'),'userProfileId':_0x493239[_0x834e('0x64')]},'raw':!![]})[_0x834e('0x1e')](function(_0x50d0a3){if(_0x50d0a3&&_0x50d0a3[_0x834e('0x65')]===0x0){return db[_0x834e('0x38')][_0x834e('0x60')]({'name':_0x5afb41[_0x834e('0x3a')],'resourceId':_0x5afb41['id'],'type':_0x50d0a3[_0x834e('0x3a')],'sectionId':_0x50d0a3['id']},{})[_0x834e('0x1e')](function(){return _0x5a4854;});}else{return _0x5a4854;}})[_0x834e('0x54')](function(_0x23b5d9){logger[_0x834e('0x24')](_0x834e('0x71'),_0x23b5d9);throw _0x23b5d9;});}return _0x5a4854;})['then'](respondWithResult(_0x2cca07,0xc9))['catch'](handleError(_0x2cca07,null));};exports['update']=function(_0x36ede9,_0x1135a5,_0x313c03){var _0x37fa2c;return db[_0x834e('0x3d')]['find']({'where':{'id':_0x36ede9['params']['id']}})[_0x834e('0x1e')](handleEntityNotFound(_0x1135a5,null))[_0x834e('0x1e')](saveUpdates(_0x36ede9[_0x834e('0x5f')],null))[_0x834e('0x1e')](function(_0x40a705){if(_0x40a705){_0x37fa2c=_0x40a705;return db['Trunk'][_0x834e('0x52')]({'raw':!![]});}})[_0x834e('0x1e')](function(_0x113714){if(_0x113714){var _0x4e1735=fs[_0x834e('0x6a')](path[_0x834e('0x66')](config[_0x834e('0x67')],_0x834e('0x68')),_0x834e('0x69'));var _0x585d02=fs['readFileSync'](path[_0x834e('0x66')](config[_0x834e('0x67')],'server/files/templates/registry.ejs'),_0x834e('0x69'));var _0x509427=ejs[_0x834e('0x6d')](_0x4e1735,{'trunks':_0x113714||[]});fs[_0x834e('0x6b')](_0x834e('0x6c'),_0x509427);var _0x53012d=ejs[_0x834e('0x6d')](_0x585d02,{'trunks':_0x113714||[]});fs['writeFileSync']('/etc/asterisk/sip_xcally_registers.conf',_0x53012d);return respondWithRpcPromise('Reload',_0x834e('0x34'),{'module':_0x834e('0x6f')});}return null;})[_0x834e('0x1e')](function(_0x1d76c6){if(_0x1d76c6){return _0x37fa2c;}})[_0x834e('0x1e')](respondWithResult(_0x1135a5,null))[_0x834e('0x54')](handleError(_0x1135a5,null));};exports[_0x834e('0x35')]=function(_0x179892,_0x17e61a,_0x53f6e3){var _0x2f775a;return db['Trunk'][_0x834e('0x59')]({'where':{'id':_0x179892[_0x834e('0x56')]['id']}})[_0x834e('0x1e')](handleEntityNotFound(_0x17e61a,null))[_0x834e('0x1e')](removeEntity(_0x17e61a,null))[_0x834e('0x1e')](function(){return db[_0x834e('0x3d')]['findAll']({'raw':!![]});})['then'](function(_0xeb096d){var _0x2a854a=fs['readFileSync'](path[_0x834e('0x66')](config[_0x834e('0x67')],_0x834e('0x68')),_0x834e('0x69'));var _0xc75f5e=fs['readFileSync'](path[_0x834e('0x66')](config[_0x834e('0x67')],'server/files/templates/registry.ejs'),'utf8');var _0x5ede29=ejs[_0x834e('0x6d')](_0x2a854a,{'trunks':_0xeb096d});var _0x1f3e26=ejs['render'](_0xc75f5e,{'trunks':_0xeb096d});fs[_0x834e('0x6b')](_0x834e('0x6c'),_0x5ede29);fs['writeFileSync'](_0x834e('0x72'),_0x1f3e26);return respondWithRpcPromise('Reload','destroy',{'module':_0x834e('0x6f')});})[_0x834e('0x54')](handleError(_0x17e61a,null));};
\ No newline at end of file
+var _0x9bde=['fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','client','request','then','info','Trunk,\x20%s,\x20%s','debug','Trunk,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','sendStatus','status','end','json','undefined','limit','count','set','Content-Range','apply','reject','save','update','get','Trunks','UserProfileResource','destroy','stack','name','send','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','length','hasOwnProperty','offset','order','sort','where','pick','filter','VIRTUAL','merge','Trunk','includeAll','findAll','rows','show','params','fields','include','options','clone','find','omit','createdAt','body','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','readFileSync','join','server/files/templates/registry.ejs','utf8','render','/etc/asterisk/sip_xcally_trunks.conf','registry','/etc/asterisk/sip_xcally_registers.conf','Reload','chan_sip.so','root','server/files/templates/trunk.ejs','writeFileSync','rimraf'];(function(_0x5d9eaa,_0x167a02){var _0x15db37=function(_0x1d0f6a){while(--_0x1d0f6a){_0x5d9eaa['push'](_0x5d9eaa['shift']());}};_0x15db37(++_0x167a02);}(_0x9bde,0xe1));var _0xe9bd=function(_0x1c00e9,_0x597299){_0x1c00e9=_0x1c00e9-0x0;var _0x7c3507=_0x9bde[_0x1c00e9];return _0x7c3507;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe9bd('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xe9bd('0x1'));var rp=require('request-promise');var moment=require(_0xe9bd('0x2'));var BPromise=require(_0xe9bd('0x3'));var Mustache=require(_0xe9bd('0x4'));var util=require(_0xe9bd('0x5'));var path=require(_0xe9bd('0x6'));var sox=require(_0xe9bd('0x7'));var csv=require(_0xe9bd('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe9bd('0x9'));var _=require(_0xe9bd('0xa'));var squel=require(_0xe9bd('0xb'));var crypto=require(_0xe9bd('0xc'));var jsforce=require(_0xe9bd('0xd'));var deskjs=require(_0xe9bd('0xe'));var toCsv=require(_0xe9bd('0x8'));var querystring=require(_0xe9bd('0xf'));var Papa=require(_0xe9bd('0x10'));var Redis=require(_0xe9bd('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xe9bd('0x12'));var hardwareService=require(_0xe9bd('0x13'));var logger=require(_0xe9bd('0x14'))('api');var utils=require(_0xe9bd('0x15'));var config=require(_0xe9bd('0x16'));var licenseUtil=require(_0xe9bd('0x17'));var db=require(_0xe9bd('0x18'))['db'];var jayson=require('jayson/promise');var client=jayson[_0xe9bd('0x19')]['http']({'port':0x232a});function respondWithRpcPromise(_0x220d07,_0x429e88,_0x3435b4,_0x51109f){return new BPromise(function(_0x47ba5e,_0x46a95e){var _0x248818=_0x51109f||client;return _0x248818[_0xe9bd('0x1a')](_0x220d07,_0x3435b4)[_0xe9bd('0x1b')](function(_0x3360bd){logger[_0xe9bd('0x1c')](_0xe9bd('0x1d'),_0x429e88,'request\x20sent');logger[_0xe9bd('0x1e')](_0xe9bd('0x1f'),_0x429e88,_0xe9bd('0x20'),JSON['stringify'](_0x3360bd));if(_0x3360bd[_0xe9bd('0x21')]){if(_0x3360bd[_0xe9bd('0x21')][_0xe9bd('0x22')]===0x1f4){logger[_0xe9bd('0x21')]('Trunk,\x20%s,\x20%s',_0x429e88,_0x3360bd[_0xe9bd('0x21')]['message']);return _0x46a95e(_0x3360bd[_0xe9bd('0x21')]['message']);}logger[_0xe9bd('0x21')](_0xe9bd('0x1d'),_0x429e88,_0x3360bd[_0xe9bd('0x21')][_0xe9bd('0x23')]);return _0x47ba5e(_0x3360bd[_0xe9bd('0x21')][_0xe9bd('0x23')]);}else{logger[_0xe9bd('0x1c')]('Trunk,\x20%s,\x20%s',_0x429e88,_0xe9bd('0x20'));_0x47ba5e(_0x3360bd[_0xe9bd('0x24')]['message']);}})[_0xe9bd('0x25')](function(_0x505c23){logger[_0xe9bd('0x21')](_0xe9bd('0x1d'),_0x429e88,_0x505c23);_0x46a95e(_0x505c23);});});}function respondWithStatusCode(_0x36f8c0,_0xf02209){_0xf02209=_0xf02209||0xcc;return function(_0x5bc4bf){if(_0x5bc4bf){return _0x36f8c0[_0xe9bd('0x26')](_0xf02209);}return _0x36f8c0[_0xe9bd('0x27')](_0xf02209)[_0xe9bd('0x28')]();};}function respondWithResult(_0x39b206,_0x2641be){_0x2641be=_0x2641be||0xc8;return function(_0xb52d45){if(_0xb52d45){return _0x39b206[_0xe9bd('0x27')](_0x2641be)[_0xe9bd('0x29')](_0xb52d45);}};}function respondWithFilteredResult(_0x1ae889,_0x5987af){return function(_0x3c211a){if(_0x3c211a){var _0x38fdfa=typeof _0x5987af['offset']===_0xe9bd('0x2a')&&typeof _0x5987af[_0xe9bd('0x2b')]===_0xe9bd('0x2a');var _0x429055=_0x3c211a[_0xe9bd('0x2c')];var _0x183601=_0x38fdfa?0x0:_0x5987af['offset'];var _0x5b7f1d=_0x38fdfa?_0x3c211a[_0xe9bd('0x2c')]:_0x5987af['offset']+_0x5987af[_0xe9bd('0x2b')];var _0x1f2c0e;if(_0x5b7f1d>=_0x429055){_0x5b7f1d=_0x429055;_0x1f2c0e=0xc8;}else{_0x1f2c0e=0xce;}_0x1ae889[_0xe9bd('0x27')](_0x1f2c0e);return _0x1ae889[_0xe9bd('0x2d')](_0xe9bd('0x2e'),_0x183601+'-'+_0x5b7f1d+'/'+_0x429055)['json'](_0x3c211a);}return null;};}function patchUpdates(_0x4b7bc2){return function(_0x7f2c5){try{jsonpatch[_0xe9bd('0x2f')](_0x7f2c5,_0x4b7bc2,!![]);}catch(_0x3f96a0){return BPromise[_0xe9bd('0x30')](_0x3f96a0);}return _0x7f2c5[_0xe9bd('0x31')]();};}function saveUpdates(_0x1f0f9e,_0x3c31ee){return function(_0x66213a){if(_0x66213a){return _0x66213a[_0xe9bd('0x32')](_0x1f0f9e)['then'](function(_0x426004){return _0x426004;});}return null;};}function removeEntity(_0x81a31f,_0x390a43){return function(_0x5117bc){if(_0x5117bc){return _0x5117bc['destroy']()[_0xe9bd('0x1b')](function(){var _0x2e9593=_0x5117bc[_0xe9bd('0x33')]({'plain':!![]});var _0x3ed60a=_0xe9bd('0x34');return db[_0xe9bd('0x35')][_0xe9bd('0x36')]({'where':{'type':_0x3ed60a,'resourceId':_0x2e9593['id']}})[_0xe9bd('0x1b')](function(){return _0x5117bc;});})[_0xe9bd('0x1b')](function(){_0x81a31f[_0xe9bd('0x27')](0xcc)[_0xe9bd('0x28')]();});}};}function handleEntityNotFound(_0x549dd1,_0x2ad46e){return function(_0x199477){if(!_0x199477){_0x549dd1[_0xe9bd('0x26')](0x194);}return _0x199477;};}function handleError(_0x8ff624,_0x264ba0){_0x264ba0=_0x264ba0||0x1f4;return function(_0x147da5){logger['error'](_0x147da5[_0xe9bd('0x37')]);if(_0x147da5[_0xe9bd('0x38')]){delete _0x147da5['name'];}_0x8ff624[_0xe9bd('0x27')](_0x264ba0)[_0xe9bd('0x39')](_0x147da5);};}exports['index']=function(_0x4b1da0,_0x2785e6){var _0xdf43b9={},_0x4d2f3d={},_0x2d1289={'count':0x0,'rows':[]};var _0x3ea705=_[_0xe9bd('0x3a')](db['Trunk'][_0xe9bd('0x3b')],function(_0x4d1945){return{'name':_0x4d1945[_0xe9bd('0x3c')],'type':_0x4d1945[_0xe9bd('0x3d')][_0xe9bd('0x3e')]};});_0x4d2f3d[_0xe9bd('0x3f')]=_['map'](_0x3ea705,_0xe9bd('0x38'));_0x4d2f3d[_0xe9bd('0x40')]=_[_0xe9bd('0x41')](_0x4b1da0[_0xe9bd('0x40')]);_0x4d2f3d[_0xe9bd('0x42')]=_[_0xe9bd('0x43')](_0x4d2f3d[_0xe9bd('0x3f')],_0x4d2f3d[_0xe9bd('0x40')]);_0xdf43b9[_0xe9bd('0x44')]=_[_0xe9bd('0x43')](_0x4d2f3d['model'],qs['fields'](_0x4b1da0[_0xe9bd('0x40')]['fields']));_0xdf43b9[_0xe9bd('0x44')]=_0xdf43b9[_0xe9bd('0x44')][_0xe9bd('0x45')]?_0xdf43b9['attributes']:_0x4d2f3d[_0xe9bd('0x3f')];if(!_0x4b1da0[_0xe9bd('0x40')][_0xe9bd('0x46')]('nolimit')){_0xdf43b9[_0xe9bd('0x2b')]=qs[_0xe9bd('0x2b')](_0x4b1da0[_0xe9bd('0x40')][_0xe9bd('0x2b')]);_0xdf43b9[_0xe9bd('0x47')]=qs[_0xe9bd('0x47')](_0x4b1da0[_0xe9bd('0x40')][_0xe9bd('0x47')]);}_0xdf43b9[_0xe9bd('0x48')]=qs[_0xe9bd('0x49')](_0x4b1da0[_0xe9bd('0x40')][_0xe9bd('0x49')]);_0xdf43b9[_0xe9bd('0x4a')]=qs[_0xe9bd('0x42')](_[_0xe9bd('0x4b')](_0x4b1da0['query'],_0x4d2f3d['filters']),_0x3ea705);if(_0x4b1da0[_0xe9bd('0x40')][_0xe9bd('0x4c')]){_0xdf43b9[_0xe9bd('0x4a')]=_['merge'](_0xdf43b9['where'],{'$or':_[_0xe9bd('0x3a')](_0x3ea705,function(_0x3f6f22){if(_0x3f6f22[_0xe9bd('0x3d')]!==_0xe9bd('0x4d')){var _0x39fb61={};_0x39fb61[_0x3f6f22[_0xe9bd('0x38')]]={'$like':'%'+_0x4b1da0[_0xe9bd('0x40')]['filter']+'%'};return _0x39fb61;}})});}_0xdf43b9=_[_0xe9bd('0x4e')]({},_0xdf43b9,_0x4b1da0['options']);var _0x36726e={'where':_0xdf43b9[_0xe9bd('0x4a')]};return db[_0xe9bd('0x4f')][_0xe9bd('0x2c')](_0x36726e)[_0xe9bd('0x1b')](function(_0x4b7b67){_0x2d1289[_0xe9bd('0x2c')]=_0x4b7b67;if(_0x4b1da0[_0xe9bd('0x40')][_0xe9bd('0x50')]){_0xdf43b9['include']=[{'all':!![]}];}return db[_0xe9bd('0x4f')][_0xe9bd('0x51')](_0xdf43b9);})[_0xe9bd('0x1b')](function(_0x5a466b){_0x2d1289[_0xe9bd('0x52')]=_0x5a466b;return _0x2d1289;})[_0xe9bd('0x1b')](respondWithFilteredResult(_0x2785e6,_0xdf43b9))[_0xe9bd('0x25')](handleError(_0x2785e6,null));};exports[_0xe9bd('0x53')]=function(_0x1ee09c,_0x579d26){var _0x3f4833={'raw':![],'where':{'id':_0x1ee09c[_0xe9bd('0x54')]['id']}},_0x4b8ff9={};_0x4b8ff9[_0xe9bd('0x3f')]=_[_0xe9bd('0x41')](db[_0xe9bd('0x4f')][_0xe9bd('0x3b')]);_0x4b8ff9['query']=_[_0xe9bd('0x41')](_0x1ee09c['query']);_0x4b8ff9[_0xe9bd('0x42')]=_[_0xe9bd('0x43')](_0x4b8ff9['model'],_0x4b8ff9['query']);_0x3f4833[_0xe9bd('0x44')]=_['intersection'](_0x4b8ff9[_0xe9bd('0x3f')],qs['fields'](_0x1ee09c[_0xe9bd('0x40')][_0xe9bd('0x55')]));_0x3f4833['attributes']=_0x3f4833[_0xe9bd('0x44')]['length']?_0x3f4833[_0xe9bd('0x44')]:_0x4b8ff9[_0xe9bd('0x3f')];if(_0x1ee09c[_0xe9bd('0x40')]['includeAll']){_0x3f4833[_0xe9bd('0x56')]=[{'all':!![]}];}_0x3f4833=_[_0xe9bd('0x4e')]({},_0x3f4833,_0x1ee09c[_0xe9bd('0x57')]);return db[_0xe9bd('0x4f')]['find'](_0x3f4833)['then'](handleEntityNotFound(_0x579d26,null))[_0xe9bd('0x1b')](respondWithResult(_0x579d26,null))['catch'](handleError(_0x579d26,null));};exports[_0xe9bd('0x58')]=function(_0x3c33b8,_0xc7dd2f){var _0xc818b4={'where':{'id':_0x3c33b8[_0xe9bd('0x54')]['id']}},_0x159f68={};_0x159f68[_0xe9bd('0x3f')]=_[_0xe9bd('0x41')](db[_0xe9bd('0x4f')][_0xe9bd('0x3b')]);_0xc818b4[_0xe9bd('0x44')]=_[_0xe9bd('0x43')](_0x159f68['model'],qs['fields'](_0x3c33b8['query'][_0xe9bd('0x55')]));_0xc818b4['attributes']=_0xc818b4[_0xe9bd('0x44')][_0xe9bd('0x45')]?_0xc818b4[_0xe9bd('0x44')]:_0x159f68[_0xe9bd('0x3f')];if(_0x3c33b8[_0xe9bd('0x40')][_0xe9bd('0x50')]){_0xc818b4[_0xe9bd('0x56')]=[{'all':!![]}];}_0xc818b4=_[_0xe9bd('0x4e')]({},_0xc818b4,_0x3c33b8[_0xe9bd('0x57')]);return db['Trunk'][_0xe9bd('0x59')](_0xc818b4)[_0xe9bd('0x1b')](handleEntityNotFound(_0xc7dd2f,null))[_0xe9bd('0x1b')](function(_0x3f848d){if(_0x3f848d){var _0x4d58c1=_0x3f848d[_0xe9bd('0x33')]({'plain':!![]});_0x4d58c1=qs[_0xe9bd('0x5a')](_0x4d58c1,['id',_0xe9bd('0x5b'),'updatedAt']);_0x3c33b8[_0xe9bd('0x5c')]=_[_0xe9bd('0x5a')](_0x3c33b8[_0xe9bd('0x5c')],['id',_0xe9bd('0x5b'),'updatedAt']);return db['Trunk'][_0xe9bd('0x5d')](_[_0xe9bd('0x4e')](_0x4d58c1,_0x3c33b8[_0xe9bd('0x5c')]),{'include':_0x3c33b8[_0xe9bd('0x40')]['includeAll']?[{'all':!![]}]:undefined})['then'](function(_0x305efa){var _0x20855b=_0x3c33b8[_0xe9bd('0x5e')][_0xe9bd('0x33')]({'plain':!![]});if(!_0x20855b)throw new Error(_0xe9bd('0x5f'));if(_0x20855b[_0xe9bd('0x60')]==='user'){var _0x179c8d=_0x305efa['get']({'plain':!![]});var _0x27e07c=_0xe9bd('0x34');return db[_0xe9bd('0x61')][_0xe9bd('0x59')]({'where':{'name':_0x27e07c,'userProfileId':_0x20855b['userProfileId']},'raw':!![]})[_0xe9bd('0x1b')](function(_0x263ad9){if(_0x263ad9&&_0x263ad9[_0xe9bd('0x62')]===0x0){return db['UserProfileResource'][_0xe9bd('0x5d')]({'name':_0x179c8d[_0xe9bd('0x38')],'resourceId':_0x179c8d['id'],'type':_0x263ad9[_0xe9bd('0x38')],'sectionId':_0x263ad9['id']},{})[_0xe9bd('0x1b')](function(){return _0x305efa;});}else{return _0x305efa;}})[_0xe9bd('0x25')](function(_0x16b66c){logger[_0xe9bd('0x21')](_0xe9bd('0x63'),_0x16b66c);throw _0x16b66c;});}return _0x305efa;});}})[_0xe9bd('0x1b')](respondWithResult(_0xc7dd2f,0xc9))[_0xe9bd('0x25')](handleError(_0xc7dd2f,null));};exports[_0xe9bd('0x5d')]=function(_0x37d07a,_0x5d1e4b,_0x3a12e9){var _0x9d0603;return db['Trunk'][_0xe9bd('0x5d')](_0x37d07a[_0xe9bd('0x5c')],{'raw':!![]})['then'](function(_0x561165){_0x9d0603=_0x561165;return db[_0xe9bd('0x4f')][_0xe9bd('0x51')]({'raw':!![]});})['then'](function(_0x4ec8be){var _0x4a6422=fs[_0xe9bd('0x64')](path['join'](config['root'],'server/files/templates/trunk.ejs'),'utf8');var _0x1fc88d=fs[_0xe9bd('0x64')](path[_0xe9bd('0x65')](config['root'],_0xe9bd('0x66')),_0xe9bd('0x67'));var _0x337284=ejs[_0xe9bd('0x68')](_0x4a6422,{'trunks':_0x4ec8be||[]});fs['writeFileSync'](_0xe9bd('0x69'),_0x337284);if(_0x9d0603[_0xe9bd('0x6a')]){var _0x11ebcb=ejs['render'](_0x1fc88d,{'trunks':_0x4ec8be||[]});fs['writeFileSync'](_0xe9bd('0x6b'),_0x11ebcb);}})[_0xe9bd('0x1b')](function(){return respondWithRpcPromise(_0xe9bd('0x6c'),_0xe9bd('0x5d'),{'module':_0xe9bd('0x6d')});})[_0xe9bd('0x1b')](function(){var _0x3fda4c=_0x37d07a[_0xe9bd('0x5e')]['get']({'plain':!![]});if(!_0x3fda4c)throw new Error(_0xe9bd('0x5f'));if(_0x3fda4c[_0xe9bd('0x60')]===_0xe9bd('0x5e')){var _0x3db47a=_0x9d0603[_0xe9bd('0x33')]({'plain':!![]});return db['UserProfileSection'][_0xe9bd('0x59')]({'where':{'name':'Trunks','userProfileId':_0x3fda4c['userProfileId']},'raw':!![]})[_0xe9bd('0x1b')](function(_0x4496e3){if(_0x4496e3&&_0x4496e3['autoAssociation']===0x0){return db[_0xe9bd('0x35')][_0xe9bd('0x5d')]({'name':_0x3db47a[_0xe9bd('0x38')],'resourceId':_0x3db47a['id'],'type':_0x4496e3[_0xe9bd('0x38')],'sectionId':_0x4496e3['id']},{})['then'](function(){return _0x9d0603;});}else{return _0x9d0603;}})[_0xe9bd('0x25')](function(_0x41fb41){logger['error'](_0xe9bd('0x63'),_0x41fb41);throw _0x41fb41;});}return _0x9d0603;})[_0xe9bd('0x1b')](respondWithResult(_0x5d1e4b,0xc9))[_0xe9bd('0x25')](handleError(_0x5d1e4b,null));};exports[_0xe9bd('0x32')]=function(_0x2e63c7,_0x1a36aa,_0x466a89){var _0x5e127b;return db[_0xe9bd('0x4f')][_0xe9bd('0x59')]({'where':{'id':_0x2e63c7[_0xe9bd('0x54')]['id']}})[_0xe9bd('0x1b')](handleEntityNotFound(_0x1a36aa,null))[_0xe9bd('0x1b')](saveUpdates(_0x2e63c7[_0xe9bd('0x5c')],null))[_0xe9bd('0x1b')](function(_0x2adc49){if(_0x2adc49){_0x5e127b=_0x2adc49;return db[_0xe9bd('0x4f')]['findAll']({'raw':!![]});}})[_0xe9bd('0x1b')](function(_0x466952){if(_0x466952){var _0x256890=fs[_0xe9bd('0x64')](path[_0xe9bd('0x65')](config[_0xe9bd('0x6e')],_0xe9bd('0x6f')),'utf8');var _0x18519d=fs[_0xe9bd('0x64')](path['join'](config[_0xe9bd('0x6e')],_0xe9bd('0x66')),_0xe9bd('0x67'));var _0x2083c4=ejs[_0xe9bd('0x68')](_0x256890,{'trunks':_0x466952||[]});fs[_0xe9bd('0x70')](_0xe9bd('0x69'),_0x2083c4);var _0x4f3dc6=ejs['render'](_0x18519d,{'trunks':_0x466952||[]});fs[_0xe9bd('0x70')](_0xe9bd('0x6b'),_0x4f3dc6);return respondWithRpcPromise(_0xe9bd('0x6c'),_0xe9bd('0x32'),{'module':_0xe9bd('0x6d')});}return null;})[_0xe9bd('0x1b')](function(_0x1b46f4){if(_0x1b46f4){return _0x5e127b;}})['then'](respondWithResult(_0x1a36aa,null))[_0xe9bd('0x25')](handleError(_0x1a36aa,null));};exports[_0xe9bd('0x36')]=function(_0x29833b,_0x256862,_0x14cdd5){var _0x74063;return db[_0xe9bd('0x4f')]['find']({'where':{'id':_0x29833b['params']['id']}})['then'](handleEntityNotFound(_0x256862,null))[_0xe9bd('0x1b')](removeEntity(_0x256862,null))['then'](function(){return db['Trunk']['findAll']({'raw':!![]});})[_0xe9bd('0x1b')](function(_0x402ab2){var _0xf170d4=fs[_0xe9bd('0x64')](path[_0xe9bd('0x65')](config[_0xe9bd('0x6e')],_0xe9bd('0x6f')),_0xe9bd('0x67'));var _0x14ec42=fs['readFileSync'](path[_0xe9bd('0x65')](config['root'],_0xe9bd('0x66')),_0xe9bd('0x67'));var _0x22c67f=ejs[_0xe9bd('0x68')](_0xf170d4,{'trunks':_0x402ab2});var _0x416938=ejs['render'](_0x14ec42,{'trunks':_0x402ab2});fs['writeFileSync']('/etc/asterisk/sip_xcally_trunks.conf',_0x22c67f);fs[_0xe9bd('0x70')](_0xe9bd('0x6b'),_0x416938);return respondWithRpcPromise('Reload',_0xe9bd('0x36'),{'module':_0xe9bd('0x6d')});})[_0xe9bd('0x25')](handleError(_0x256862,null));};
\ No newline at end of file
index 9ebe5a7..a320fa1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x592d=['./trunk.attributes','exports','define','tools_trunks','lodash','util','api','request-promise','rimraf'];(function(_0x9edfd5,_0x286486){var _0x330738=function(_0x4aceb3){while(--_0x4aceb3){_0x9edfd5['push'](_0x9edfd5['shift']());}};_0x330738(++_0x286486);}(_0x592d,0xa6));var _0xd592=function(_0xd5255f,_0x225f0e){_0xd5255f=_0xd5255f-0x0;var _0x32123f=_0x592d[_0xd5255f];return _0x32123f;};'use strict';var _=require(_0xd592('0x0'));var util=require(_0xd592('0x1'));var logger=require('../../config/logger')(_0xd592('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xd592('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xd592('0x4'));var config=require('../../config/environment');var attributes=require(_0xd592('0x5'));module[_0xd592('0x6')]=function(_0x4b859,_0x59cf7c){return _0x4b859[_0xd592('0x7')]('Trunk',attributes,{'tableName':_0xd592('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1c77=['Trunk','tools_trunks','util','../../config/logger','api','bluebird','request-promise','../../config/environment','exports','define'];(function(_0x4c7fb5,_0x2548ef){var _0x2e10ac=function(_0xf7e27c){while(--_0xf7e27c){_0x4c7fb5['push'](_0x4c7fb5['shift']());}};_0x2e10ac(++_0x2548ef);}(_0x1c77,0x124));var _0x71c7=function(_0x54f3e8,_0x3ed493){_0x54f3e8=_0x54f3e8-0x0;var _0x267b37=_0x1c77[_0x54f3e8];return _0x267b37;};'use strict';var _=require('lodash');var util=require(_0x71c7('0x0'));var logger=require(_0x71c7('0x1'))(_0x71c7('0x2'));var moment=require('moment');var BPromise=require(_0x71c7('0x3'));var rp=require(_0x71c7('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x71c7('0x5'));var attributes=require('./trunk.attributes');module[_0x71c7('0x6')]=function(_0x4f20e9,_0x20a0ce){return _0x4f20e9[_0x71c7('0x7')](_0x71c7('0x8'),attributes,{'tableName':_0x71c7('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index dd2d60c..b97ca9b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a79=['limit','include','map','model','ShowTrunk','find','where','lodash','moment','ioredis','../../mysqldb','../../config/logger','rpc','http','request','then','Trunk,\x20%s,\x20%s','request\x20sent','debug','Trunk,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch','GetTrunk','Trunk','options','raw','attributes'];(function(_0x3a99f4,_0x2a81c1){var _0xea0b42=function(_0x41f533){while(--_0x41f533){_0x3a99f4['push'](_0x3a99f4['shift']());}};_0xea0b42(++_0x2a81c1);}(_0x5a79,0x64));var _0x95a7=function(_0x46ec32,_0x1e842f){_0x46ec32=_0x46ec32-0x0;var _0x338f60=_0x5a79[_0x46ec32];return _0x338f60;};'use strict';var _=require(_0x95a7('0x0'));var util=require('util');var moment=require(_0x95a7('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x95a7('0x2'));var db=require(_0x95a7('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x95a7('0x4'))(_0x95a7('0x5'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x95a7('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x3e2a59,_0x114cc1,_0x39e51d){return new BPromise(function(_0x2a861a,_0x354294){return client[_0x95a7('0x7')](_0x3e2a59,_0x39e51d)[_0x95a7('0x8')](function(_0xc2420e){logger['info'](_0x95a7('0x9'),_0x114cc1,_0x95a7('0xa'));logger[_0x95a7('0xb')](_0x95a7('0xc'),_0x114cc1,'request\x20sent',JSON[_0x95a7('0xd')](_0xc2420e));if(_0xc2420e[_0x95a7('0xe')]){if(_0xc2420e[_0x95a7('0xe')][_0x95a7('0xf')]===0x1f4){logger[_0x95a7('0xe')](_0x95a7('0x9'),_0x114cc1,_0xc2420e['error'][_0x95a7('0x10')]);return _0x354294(_0xc2420e[_0x95a7('0xe')]['message']);}logger[_0x95a7('0xe')]('Trunk,\x20%s,\x20%s',_0x114cc1,_0xc2420e[_0x95a7('0xe')][_0x95a7('0x10')]);return _0x2a861a(_0xc2420e[_0x95a7('0xe')][_0x95a7('0x10')]);}else{logger[_0x95a7('0x11')]('Trunk,\x20%s,\x20%s',_0x114cc1,'request\x20sent');_0x2a861a(_0xc2420e['result'][_0x95a7('0x10')]);}})[_0x95a7('0x12')](function(_0x3c6e8a){logger['error']('Trunk,\x20%s,\x20%s',_0x114cc1,_0x3c6e8a);_0x354294(_0x3c6e8a);});});}exports[_0x95a7('0x13')]=function(_0x19d1c6){var _0x149fb8=this;return new Promise(function(_0x200ead,_0x706a87){return db[_0x95a7('0x14')]['findAll']({'raw':_0x19d1c6[_0x95a7('0x15')]?_0x19d1c6[_0x95a7('0x15')][_0x95a7('0x16')]===undefined?!![]:![]:!![],'where':_0x19d1c6['options']?_0x19d1c6[_0x95a7('0x15')]['where']||null:null,'attributes':_0x19d1c6['options']?_0x19d1c6[_0x95a7('0x15')][_0x95a7('0x17')]||null:null,'limit':_0x19d1c6['options']?_0x19d1c6[_0x95a7('0x15')][_0x95a7('0x18')]||null:null,'include':_0x19d1c6[_0x95a7('0x15')]?_0x19d1c6[_0x95a7('0x15')][_0x95a7('0x19')]?_[_0x95a7('0x1a')](_0x19d1c6[_0x95a7('0x15')]['include'],function(_0x3f0ee4){return{'model':db[_0x3f0ee4[_0x95a7('0x1b')]],'as':_0x3f0ee4['as'],'attributes':_0x3f0ee4[_0x95a7('0x17')],'include':_0x3f0ee4['include']?_[_0x95a7('0x1a')](_0x3f0ee4[_0x95a7('0x19')],function(_0x193fa5){return{'model':db[_0x193fa5['model']],'as':_0x193fa5['as'],'attributes':_0x193fa5[_0x95a7('0x17')],'include':_0x193fa5[_0x95a7('0x19')]?_[_0x95a7('0x1a')](_0x193fa5[_0x95a7('0x19')],function(_0x3c9bb3){return{'model':db[_0x3c9bb3['model']],'as':_0x3c9bb3['as'],'attributes':_0x3c9bb3[_0x95a7('0x17')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x48f33b){logger['info'](_0x95a7('0x13'),_0x19d1c6);logger['debug']('GetTrunk',_0x19d1c6,JSON[_0x95a7('0xd')](_0x48f33b));_0x200ead(_0x48f33b);})[_0x95a7('0x12')](function(_0x447b9c){logger[_0x95a7('0xe')](_0x95a7('0x13'),_0x447b9c[_0x95a7('0x10')],_0x19d1c6);_0x706a87(_0x149fb8[_0x95a7('0xe')](0x1f4,_0x447b9c['message']));});});};exports[_0x95a7('0x1c')]=function(_0x2c4cd9){var _0x6e3cf7=this;return new Promise(function(_0x16d47f,_0x3d03c7){return db[_0x95a7('0x14')][_0x95a7('0x1d')]({'raw':_0x2c4cd9['options']?_0x2c4cd9[_0x95a7('0x15')][_0x95a7('0x16')]===undefined?!![]:![]:!![],'where':_0x2c4cd9[_0x95a7('0x15')]?_0x2c4cd9['options'][_0x95a7('0x1e')]||null:null,'attributes':_0x2c4cd9[_0x95a7('0x15')]?_0x2c4cd9[_0x95a7('0x15')][_0x95a7('0x17')]||null:null,'include':_0x2c4cd9[_0x95a7('0x15')]?_0x2c4cd9['options'][_0x95a7('0x19')]?_[_0x95a7('0x1a')](_0x2c4cd9[_0x95a7('0x15')][_0x95a7('0x19')],function(_0x71c65a){return{'model':db[_0x71c65a['model']],'as':_0x71c65a['as'],'attributes':_0x71c65a[_0x95a7('0x17')],'include':_0x71c65a[_0x95a7('0x19')]?_[_0x95a7('0x1a')](_0x71c65a[_0x95a7('0x19')],function(_0x34b779){return{'model':db[_0x34b779[_0x95a7('0x1b')]],'as':_0x34b779['as'],'attributes':_0x34b779['attributes'],'include':_0x34b779['include']?_[_0x95a7('0x1a')](_0x34b779['include'],function(_0x292932){return{'model':db[_0x292932['model']],'as':_0x292932['as'],'attributes':_0x292932[_0x95a7('0x17')]};}):[]};}):[]};}):[]:[]})[_0x95a7('0x8')](function(_0x47ff2d){logger[_0x95a7('0x11')]('ShowTrunk',_0x2c4cd9);logger[_0x95a7('0xb')](_0x95a7('0x1c'),_0x2c4cd9,JSON[_0x95a7('0xd')](_0x47ff2d));_0x16d47f(_0x47ff2d);})[_0x95a7('0x12')](function(_0x2b5369){logger['error'](_0x95a7('0x1c'),_0x2b5369['message'],_0x2c4cd9);_0x3d03c7(_0x6e3cf7['error'](0x1f4,_0x2b5369[_0x95a7('0x10')]));});});};
\ No newline at end of file
+var _0xb821=['model','include','info','GetTrunk','catch','ShowTrunk','find','util','moment','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','Trunk,\x20%s,\x20%s','request\x20sent','debug','Trunk,\x20%s,\x20%s,\x20%s','stringify','error','message','Trunk','findAll','options','raw','where','attributes','limit','map'];(function(_0x51441f,_0x5c9bbd){var _0x14e5e3=function(_0x5b9d08){while(--_0x5b9d08){_0x51441f['push'](_0x51441f['shift']());}};_0x14e5e3(++_0x5c9bbd);}(_0xb821,0xa7));var _0x1b82=function(_0x4adb25,_0x451899){_0x4adb25=_0x4adb25-0x0;var _0x1b5b42=_0xb821[_0x4adb25];return _0x1b5b42;};'use strict';var _=require('lodash');var util=require(_0x1b82('0x0'));var moment=require(_0x1b82('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1b82('0x2'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x1b82('0x3'))(_0x1b82('0x4'));var config=require(_0x1b82('0x5'));var jayson=require(_0x1b82('0x6'));var client=jayson['client'][_0x1b82('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x192434,_0x202a5f,_0x3632dd){return new BPromise(function(_0x18f45f,_0x7b87e8){return client[_0x1b82('0x8')](_0x192434,_0x3632dd)[_0x1b82('0x9')](function(_0x141673){logger['info'](_0x1b82('0xa'),_0x202a5f,_0x1b82('0xb'));logger[_0x1b82('0xc')](_0x1b82('0xd'),_0x202a5f,_0x1b82('0xb'),JSON[_0x1b82('0xe')](_0x141673));if(_0x141673[_0x1b82('0xf')]){if(_0x141673[_0x1b82('0xf')]['code']===0x1f4){logger[_0x1b82('0xf')](_0x1b82('0xa'),_0x202a5f,_0x141673[_0x1b82('0xf')][_0x1b82('0x10')]);return _0x7b87e8(_0x141673['error'][_0x1b82('0x10')]);}logger['error']('Trunk,\x20%s,\x20%s',_0x202a5f,_0x141673[_0x1b82('0xf')]['message']);return _0x18f45f(_0x141673[_0x1b82('0xf')][_0x1b82('0x10')]);}else{logger['info'](_0x1b82('0xa'),_0x202a5f,'request\x20sent');_0x18f45f(_0x141673['result'][_0x1b82('0x10')]);}})['catch'](function(_0x111247){logger[_0x1b82('0xf')](_0x1b82('0xa'),_0x202a5f,_0x111247);_0x7b87e8(_0x111247);});});}exports['GetTrunk']=function(_0x514082){var _0x415dff=this;return new Promise(function(_0x5d66c3,_0x3def2d){return db[_0x1b82('0x11')][_0x1b82('0x12')]({'raw':_0x514082['options']?_0x514082[_0x1b82('0x13')][_0x1b82('0x14')]===undefined?!![]:![]:!![],'where':_0x514082[_0x1b82('0x13')]?_0x514082[_0x1b82('0x13')][_0x1b82('0x15')]||null:null,'attributes':_0x514082['options']?_0x514082[_0x1b82('0x13')][_0x1b82('0x16')]||null:null,'limit':_0x514082[_0x1b82('0x13')]?_0x514082[_0x1b82('0x13')][_0x1b82('0x17')]||null:null,'include':_0x514082[_0x1b82('0x13')]?_0x514082[_0x1b82('0x13')]['include']?_[_0x1b82('0x18')](_0x514082[_0x1b82('0x13')]['include'],function(_0x561d78){return{'model':db[_0x561d78[_0x1b82('0x19')]],'as':_0x561d78['as'],'attributes':_0x561d78[_0x1b82('0x16')],'include':_0x561d78['include']?_[_0x1b82('0x18')](_0x561d78['include'],function(_0x5cd458){return{'model':db[_0x5cd458['model']],'as':_0x5cd458['as'],'attributes':_0x5cd458[_0x1b82('0x16')],'include':_0x5cd458[_0x1b82('0x1a')]?_[_0x1b82('0x18')](_0x5cd458[_0x1b82('0x1a')],function(_0x548a3b){return{'model':db[_0x548a3b[_0x1b82('0x19')]],'as':_0x548a3b['as'],'attributes':_0x548a3b[_0x1b82('0x16')]};}):[]};}):[]};}):[]:[]})[_0x1b82('0x9')](function(_0x7455e8){logger[_0x1b82('0x1b')](_0x1b82('0x1c'),_0x514082);logger[_0x1b82('0xc')](_0x1b82('0x1c'),_0x514082,JSON[_0x1b82('0xe')](_0x7455e8));_0x5d66c3(_0x7455e8);})[_0x1b82('0x1d')](function(_0x2fe45d){logger[_0x1b82('0xf')](_0x1b82('0x1c'),_0x2fe45d['message'],_0x514082);_0x3def2d(_0x415dff[_0x1b82('0xf')](0x1f4,_0x2fe45d[_0x1b82('0x10')]));});});};exports[_0x1b82('0x1e')]=function(_0x457dbb){var _0x18e4ff=this;return new Promise(function(_0x115ce7,_0xd3c4a){return db[_0x1b82('0x11')][_0x1b82('0x1f')]({'raw':_0x457dbb[_0x1b82('0x13')]?_0x457dbb['options'][_0x1b82('0x14')]===undefined?!![]:![]:!![],'where':_0x457dbb[_0x1b82('0x13')]?_0x457dbb[_0x1b82('0x13')][_0x1b82('0x15')]||null:null,'attributes':_0x457dbb['options']?_0x457dbb[_0x1b82('0x13')][_0x1b82('0x16')]||null:null,'include':_0x457dbb['options']?_0x457dbb[_0x1b82('0x13')][_0x1b82('0x1a')]?_[_0x1b82('0x18')](_0x457dbb['options']['include'],function(_0x8e881b){return{'model':db[_0x8e881b['model']],'as':_0x8e881b['as'],'attributes':_0x8e881b['attributes'],'include':_0x8e881b[_0x1b82('0x1a')]?_[_0x1b82('0x18')](_0x8e881b[_0x1b82('0x1a')],function(_0x592207){return{'model':db[_0x592207[_0x1b82('0x19')]],'as':_0x592207['as'],'attributes':_0x592207[_0x1b82('0x16')],'include':_0x592207[_0x1b82('0x1a')]?_[_0x1b82('0x18')](_0x592207['include'],function(_0x42c1c4){return{'model':db[_0x42c1c4[_0x1b82('0x19')]],'as':_0x42c1c4['as'],'attributes':_0x42c1c4[_0x1b82('0x16')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x48fd54){logger[_0x1b82('0x1b')]('ShowTrunk',_0x457dbb);logger[_0x1b82('0xc')](_0x1b82('0x1e'),_0x457dbb,JSON[_0x1b82('0xe')](_0x48fd54));_0x115ce7(_0x48fd54);})[_0x1b82('0x1d')](function(_0x1255db){logger[_0x1b82('0xf')](_0x1b82('0x1e'),_0x1255db[_0x1b82('0x10')],_0x457dbb);_0xd3c4a(_0x18e4ff['error'](0x1f4,_0x1255db['message']));});});};
\ No newline at end of file
index 6f9db85..afb1f69 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c69=['exports','Router','../../components/auth/service','put','isAuthenticated','update'];(function(_0x1edfbb,_0x28458e){var _0x357128=function(_0xf2838f){while(--_0xf2838f){_0x1edfbb['push'](_0x1edfbb['shift']());}};_0x357128(++_0x28458e);}(_0x4c69,0xb5));var _0x94c6=function(_0x4c0671,_0x5955d6){_0x4c0671=_0x4c0671-0x0;var _0x1efbe9=_0x4c69[_0x4c0671];return _0x1efbe9;};'use strict';var express=require('express');var router=express[_0x94c6('0x0')]();var auth=require(_0x94c6('0x1'));var controller=require('./user-setting.controller');router[_0x94c6('0x2')]('/:id',auth[_0x94c6('0x3')](),controller[_0x94c6('0x4')]);module[_0x94c6('0x5')]=router;
\ No newline at end of file
+var _0x621b=['exports','express','Router','./user-setting.controller','/:id','update'];(function(_0x38cd4c,_0x2702cf){var _0x31f5a4=function(_0x5cbeb0){while(--_0x5cbeb0){_0x38cd4c['push'](_0x38cd4c['shift']());}};_0x31f5a4(++_0x2702cf);}(_0x621b,0x181));var _0xb621=function(_0x74892f,_0x1e981b){_0x74892f=_0x74892f-0x0;var _0x10ee61=_0x621b[_0x74892f];return _0x10ee61;};'use strict';var express=require(_0xb621('0x0'));var router=express[_0xb621('0x1')]();var auth=require('../../components/auth/service');var controller=require(_0xb621('0x2'));router['put'](_0xb621('0x3'),auth['isAuthenticated'](),controller[_0xb621('0x4')]);module[_0xb621('0x5')]=router;
\ No newline at end of file
index 2545e83..789da77 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x44fd=['info','debug','ENUM','BOOLEAN','DATE','error'];(function(_0x3c7599,_0x56e814){var _0x56351a=function(_0x3ddda1){while(--_0x3ddda1){_0x3c7599['push'](_0x3c7599['shift']());}};_0x56351a(++_0x56e814);}(_0x44fd,0x143));var _0xd44f=function(_0x4350c2,_0x112f3c){_0x4350c2=_0x4350c2-0x0;var _0x8b6406=_0x44fd[_0x4350c2];return _0x8b6406;};'use strict';var Sequelize=require('sequelize');const CLIENT_SIDE_LOG_LEVELS=[_0xd44f('0x0'),'warning',_0xd44f('0x1'),_0xd44f('0x2')];module['exports']={'clientSideLoggingLevel':{'type':Sequelize[_0xd44f('0x3')](CLIENT_SIDE_LOG_LEVELS),'allowNull':![],'defaultValue':'error','validate':{'isIn':[CLIENT_SIDE_LOG_LEVELS]}},'clientSideLoggingEnabled':{'type':Sequelize[_0xd44f('0x4')],'defaultValue':![]},'clientSideLoggingScopes':{'type':Sequelize['TEXT'],'allowNull':!![]},'clientSideLoggingEnabledSince':{'type':Sequelize[_0xd44f('0x5')],'allowNull':!![],'defaultValue':null},'UserId':{'type':Sequelize['INTEGER'],'unique':'UserId'}};
\ No newline at end of file
+var _0x9f1a=['debug','ENUM','error','TEXT','INTEGER','sequelize','warning','info'];(function(_0x2f32ad,_0x41a394){var _0xe5e48c=function(_0x14bc4d){while(--_0x14bc4d){_0x2f32ad['push'](_0x2f32ad['shift']());}};_0xe5e48c(++_0x41a394);}(_0x9f1a,0x75));var _0xa9f1=function(_0x5e618e,_0xf803fe){_0x5e618e=_0x5e618e-0x0;var _0x2987cb=_0x9f1a[_0x5e618e];return _0x2987cb;};'use strict';var Sequelize=require(_0xa9f1('0x0'));const CLIENT_SIDE_LOG_LEVELS=['error',_0xa9f1('0x1'),_0xa9f1('0x2'),_0xa9f1('0x3')];module['exports']={'clientSideLoggingLevel':{'type':Sequelize[_0xa9f1('0x4')](CLIENT_SIDE_LOG_LEVELS),'allowNull':![],'defaultValue':_0xa9f1('0x5'),'validate':{'isIn':[CLIENT_SIDE_LOG_LEVELS]}},'clientSideLoggingEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'clientSideLoggingScopes':{'type':Sequelize[_0xa9f1('0x6')],'allowNull':!![]},'clientSideLoggingEnabledSince':{'type':Sequelize['DATE'],'allowNull':!![],'defaultValue':null},'UserId':{'type':Sequelize[_0xa9f1('0x7')],'unique':'UserId'}};
\ No newline at end of file
index 9652af1..2138f2c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa7b4=['update','then','sendStatus','error','stack','send','user','role','admin','Unauthorized','params','Invalid\x20user\x20setting\x20id','UserSetting','find','body','catch','ioredis','../../config/logger','../../config/environment','../../mysqldb','register','redis','localhost','status','json'];(function(_0x1194ad,_0x3ff1b2){var _0x1a0e04=function(_0x22e803){while(--_0x22e803){_0x1194ad['push'](_0x1194ad['shift']());}};_0x1a0e04(++_0x3ff1b2);}(_0xa7b4,0x8d));var _0x4a7b=function(_0x119b4b,_0x322a87){_0x119b4b=_0x119b4b-0x0;var _0x2ca4d5=_0xa7b4[_0x119b4b];return _0x2ca4d5;};'use strict';var _=require('lodash');var Redis=require(_0x4a7b('0x0'));var logger=require(_0x4a7b('0x1'))('api');var config=require(_0x4a7b('0x2'));var db=require(_0x4a7b('0x3'))['db'];var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./user-setting.socket')[_0x4a7b('0x4')](socket);config[_0x4a7b('0x5')]=_['defaults'](config[_0x4a7b('0x5')],{'host':_0x4a7b('0x6'),'port':0x18eb});function respondWithResult(_0x14e777,_0x683a48){_0x683a48=_0x683a48||0xc8;return function(_0x2f9fe5){if(_0x2f9fe5){return _0x14e777[_0x4a7b('0x7')](_0x683a48)[_0x4a7b('0x8')](_0x2f9fe5);}};}function saveUpdates(_0x39b77d){return function(_0x2ea2ef){if(_0x2ea2ef){return _0x2ea2ef[_0x4a7b('0x9')](_0x39b77d)[_0x4a7b('0xa')](function(_0x3eb79b){return _0x3eb79b;});}return null;};}function handleEntityNotFound(_0x18dd5c){return function(_0x5a02f0){if(!_0x5a02f0){_0x18dd5c[_0x4a7b('0xb')](0x194);}return _0x5a02f0;};}function handleError(_0x4c3dc3,_0x1eaaf9){_0x1eaaf9=_0x1eaaf9||0x1f4;return function(_0x6b53b3){logger[_0x4a7b('0xc')](_0x6b53b3[_0x4a7b('0xd')]);if(_0x6b53b3['name']){delete _0x6b53b3['name'];}_0x4c3dc3[_0x4a7b('0x7')](_0x1eaaf9)[_0x4a7b('0xe')](_0x6b53b3);};}exports['update']=function(_0x5010e4,_0xb8f2ec){if(_0x5010e4[_0x4a7b('0xf')][_0x4a7b('0x10')]!==_0x4a7b('0x11'))throw new Error(_0x4a7b('0x12'));if(isNaN(Number(_0x5010e4[_0x4a7b('0x13')]['id'])))throw new Error(_0x4a7b('0x14'));return db[_0x4a7b('0x15')][_0x4a7b('0x16')]({'where':{'id':_0x5010e4[_0x4a7b('0x13')]['id']}})['then'](handleEntityNotFound(_0xb8f2ec,null))[_0x4a7b('0xa')](saveUpdates(_0x5010e4[_0x4a7b('0x17')],null))[_0x4a7b('0xa')](respondWithResult(_0xb8f2ec,null))[_0x4a7b('0x18')](handleError(_0xb8f2ec,null));};
\ No newline at end of file
+var _0xbbfa=['find','body','catch','lodash','../../config/logger','../../config/environment','../../mysqldb','socket.io-emitter','redis','./user-setting.socket','register','defaults','localhost','json','then','sendStatus','error','stack','name','status','send','update','user','admin','params','Invalid\x20user\x20setting\x20id','UserSetting'];(function(_0x5e63df,_0x5ba1de){var _0x593155=function(_0x270489){while(--_0x270489){_0x5e63df['push'](_0x5e63df['shift']());}};_0x593155(++_0x5ba1de);}(_0xbbfa,0x1e9));var _0xabbf=function(_0x2b76dc,_0x3ddb93){_0x2b76dc=_0x2b76dc-0x0;var _0x4ee7eb=_0xbbfa[_0x2b76dc];return _0x4ee7eb;};'use strict';var _=require(_0xabbf('0x0'));var Redis=require('ioredis');var logger=require(_0xabbf('0x1'))('api');var config=require(_0xabbf('0x2'));var db=require(_0xabbf('0x3'))['db'];var socket=require(_0xabbf('0x4'))(new Redis(config[_0xabbf('0x5')]));require(_0xabbf('0x6'))[_0xabbf('0x7')](socket);config[_0xabbf('0x5')]=_[_0xabbf('0x8')](config[_0xabbf('0x5')],{'host':_0xabbf('0x9'),'port':0x18eb});function respondWithResult(_0x45b7d6,_0x58f0a8){_0x58f0a8=_0x58f0a8||0xc8;return function(_0x5b471b){if(_0x5b471b){return _0x45b7d6['status'](_0x58f0a8)[_0xabbf('0xa')](_0x5b471b);}};}function saveUpdates(_0x260181){return function(_0x564e4b){if(_0x564e4b){return _0x564e4b['update'](_0x260181)[_0xabbf('0xb')](function(_0x5a6955){return _0x5a6955;});}return null;};}function handleEntityNotFound(_0x170fe2){return function(_0x4f5cf1){if(!_0x4f5cf1){_0x170fe2[_0xabbf('0xc')](0x194);}return _0x4f5cf1;};}function handleError(_0x5b6df6,_0x5df6a8){_0x5df6a8=_0x5df6a8||0x1f4;return function(_0xb8c3d9){logger[_0xabbf('0xd')](_0xb8c3d9[_0xabbf('0xe')]);if(_0xb8c3d9[_0xabbf('0xf')]){delete _0xb8c3d9[_0xabbf('0xf')];}_0x5b6df6[_0xabbf('0x10')](_0x5df6a8)[_0xabbf('0x11')](_0xb8c3d9);};}exports[_0xabbf('0x12')]=function(_0x2423c6,_0x4dc039){if(_0x2423c6[_0xabbf('0x13')]['role']!==_0xabbf('0x14'))throw new Error('Unauthorized');if(isNaN(Number(_0x2423c6[_0xabbf('0x15')]['id'])))throw new Error(_0xabbf('0x16'));return db[_0xabbf('0x17')][_0xabbf('0x18')]({'where':{'id':_0x2423c6['params']['id']}})[_0xabbf('0xb')](handleEntityNotFound(_0x4dc039,null))[_0xabbf('0xb')](saveUpdates(_0x2423c6[_0xabbf('0x19')],null))[_0xabbf('0xb')](respondWithResult(_0x4dc039,null))[_0xabbf('0x1a')](handleError(_0x4dc039,null));};
\ No newline at end of file
index 87b101b..96ecf45 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7dbd=['hook','events','../../mysqldb','UserSetting','setMaxListeners','save','update','remove','emit'];(function(_0x32354c,_0x4d7772){var _0x4cbb80=function(_0x3cdf9c){while(--_0x3cdf9c){_0x32354c['push'](_0x32354c['shift']());}};_0x4cbb80(++_0x4d7772);}(_0x7dbd,0x91));var _0xd7db=function(_0x30c92b,_0x154324){_0x30c92b=_0x30c92b-0x0;var _0x33837b=_0x7dbd[_0x30c92b];return _0x33837b;};'use strict';var EventEmitter=require(_0xd7db('0x0'));var UserSetting=require(_0xd7db('0x1'))['db'][_0xd7db('0x2')];var UserSettingEvents=new EventEmitter();UserSettingEvents[_0xd7db('0x3')](0x0);var events={'afterCreate':_0xd7db('0x4'),'afterUpdate':_0xd7db('0x5'),'afterDestroy':_0xd7db('0x6')};function emitEvent(_0x121fa4){return function(_0x5d70f2,_0xa72f48,_0x4206f0){UserSettingEvents[_0xd7db('0x7')](_0x121fa4+':'+_0x5d70f2['id'],_0x5d70f2);UserSettingEvents['emit'](_0x121fa4,_0x5d70f2);_0x4206f0(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];UserSetting[_0xd7db('0x8')](e,emitEvent(event));}}module['exports']=UserSettingEvents;
\ No newline at end of file
+var _0x2c2a=['save','update','emit','hasOwnProperty','hook','exports','UserSetting'];(function(_0x1f5735,_0x1ba7bb){var _0x1c7edc=function(_0x152031){while(--_0x152031){_0x1f5735['push'](_0x1f5735['shift']());}};_0x1c7edc(++_0x1ba7bb);}(_0x2c2a,0x8b));var _0xa2c2=function(_0x5c351c,_0x2046d8){_0x5c351c=_0x5c351c-0x0;var _0x26f3b3=_0x2c2a[_0x5c351c];return _0x26f3b3;};'use strict';var EventEmitter=require('events');var UserSetting=require('../../mysqldb')['db'][_0xa2c2('0x0')];var UserSettingEvents=new EventEmitter();UserSettingEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xa2c2('0x1'),'afterUpdate':_0xa2c2('0x2'),'afterDestroy':'remove'};function emitEvent(_0x2ae106){return function(_0x41522a,_0x4dee4b,_0x4b80d9){UserSettingEvents[_0xa2c2('0x3')](_0x2ae106+':'+_0x41522a['id'],_0x41522a);UserSettingEvents[_0xa2c2('0x3')](_0x2ae106,_0x41522a);_0x4b80d9(null);};}for(var e in events){if(events[_0xa2c2('0x4')](e)){var event=events[e];UserSetting[_0xa2c2('0x5')](e,emitEvent(event));}}module[_0xa2c2('0x6')]=UserSettingEvents;
\ No newline at end of file
index 1356751..01b6ef7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4483=['exports','UserSetting','user_settings','clientSideLoggingEnabled','clientSideLoggingEnabledSince','./user-setting.attributes'];(function(_0x34c85e,_0x498ab8){var _0x5283ec=function(_0x33564e){while(--_0x33564e){_0x34c85e['push'](_0x34c85e['shift']());}};_0x5283ec(++_0x498ab8);}(_0x4483,0x1a3));var _0x3448=function(_0x3f28b0,_0x43777e){_0x3f28b0=_0x3f28b0-0x0;var _0x572267=_0x4483[_0x3f28b0];return _0x572267;};'use strict';var attributes=require(_0x3448('0x0'));module[_0x3448('0x1')]=function(_0x229c0c){return _0x229c0c['define'](_0x3448('0x2'),attributes,{'tableName':_0x3448('0x3'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x27ef60){if(!_0x27ef60[_0x3448('0x4')])_0x27ef60[_0x3448('0x5')]=null;else if(_0x27ef60['clientSideLoggingEnabledSince']===null)_0x27ef60[_0x3448('0x5')]=new Date();}}});};
\ No newline at end of file
+var _0x536f=['./user-setting.attributes','user_settings','clientSideLoggingEnabled','clientSideLoggingEnabledSince'];(function(_0x3b729e,_0xf58096){var _0x48939e=function(_0x1fb46c){while(--_0x1fb46c){_0x3b729e['push'](_0x3b729e['shift']());}};_0x48939e(++_0xf58096);}(_0x536f,0x70));var _0xf536=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x536f[_0x321bb2];return _0x9c12ed;};'use strict';var attributes=require(_0xf536('0x0'));module['exports']=function(_0x4e4212){return _0x4e4212['define']('UserSetting',attributes,{'tableName':_0xf536('0x1'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x1e5e49){if(!_0x1e5e49[_0xf536('0x2')])_0x1e5e49[_0xf536('0x3')]=null;else if(_0x1e5e49['clientSideLoggingEnabledSince']===null)_0x1e5e49[_0xf536('0x3')]=new Date();}}});};
\ No newline at end of file
index 8588649..fc27ce4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x093c=['emit','user-setting:update','user-setting:update:user-','register','user-setting:','update'];(function(_0x1db903,_0x3008bd){var _0x11df59=function(_0x4f2ba6){while(--_0x4f2ba6){_0x1db903['push'](_0x1db903['shift']());}};_0x11df59(++_0x3008bd);}(_0x093c,0x1a9));var _0xc093=function(_0x4b9fdb,_0x58463e){_0x4b9fdb=_0x4b9fdb-0x0;var _0x45a3aa=_0x093c[_0x4b9fdb];return _0x45a3aa;};'use strict';var UserSettingEvents=require('./user-setting.events');var events=['save','remove',_0xc093('0x0')];function createListener(_0x34cc8a,_0x250b92){return function(_0x3f283f){_0x250b92[_0xc093('0x1')](_0x34cc8a,_0x3f283f);if(_0x34cc8a===_0xc093('0x2')){_0x250b92[_0xc093('0x1')](_0xc093('0x3')+_0x3f283f['UserId'],_0x3f283f);}};}exports[_0xc093('0x4')]=function(_0x16d17b){for(var _0x38f832=0x0,_0x479edd=events['length'];_0x38f832<_0x479edd;_0x38f832++){var _0xf8dfbb=events[_0x38f832];var _0x428331=createListener(_0xc093('0x5')+_0xf8dfbb,_0x16d17b);UserSettingEvents['on'](_0xf8dfbb,_0x428331);}};
\ No newline at end of file
+var _0x0aeb=['user-setting:update','UserId','register','length','user-setting:','./user-setting.events','save','remove','update','emit'];(function(_0x2aa0e7,_0x4e5145){var _0x1472c0=function(_0x4deaeb){while(--_0x4deaeb){_0x2aa0e7['push'](_0x2aa0e7['shift']());}};_0x1472c0(++_0x4e5145);}(_0x0aeb,0xff));var _0xb0ae=function(_0x248176,_0x463e2d){_0x248176=_0x248176-0x0;var _0x27d014=_0x0aeb[_0x248176];return _0x27d014;};'use strict';var UserSettingEvents=require(_0xb0ae('0x0'));var events=[_0xb0ae('0x1'),_0xb0ae('0x2'),_0xb0ae('0x3')];function createListener(_0x4a8d81,_0x30d587){return function(_0x56b6a8){_0x30d587[_0xb0ae('0x4')](_0x4a8d81,_0x56b6a8);if(_0x4a8d81===_0xb0ae('0x5')){_0x30d587['emit']('user-setting:update:user-'+_0x56b6a8[_0xb0ae('0x6')],_0x56b6a8);}};}exports[_0xb0ae('0x7')]=function(_0x202693){for(var _0x13aca1=0x0,_0x52f76f=events[_0xb0ae('0x8')];_0x13aca1<_0x52f76f;_0x13aca1++){var _0x1e9f4b=events[_0x13aca1];var _0x2f1357=createListener(_0xb0ae('0x9')+_0x1e9f4b,_0x202693);UserSettingEvents['on'](_0x1e9f4b,_0x2f1357);}};
\ No newline at end of file
index 84deb71..7f96301 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf1d=['/:id/login','login','/:id/logout','logout','/:id/pause','pause','/:id/unpause','unpause','addTeams','addChatInteractions','addMailInteractions','/:id/fax_interactions','addFaxInteractions','/:id/sms_interactions','addSmsInteractions','/:id/openchannel_interactions','addOpenchannelInteractions','/:id/whatsapp_interactions','addWhatsappInteractions','addFaxAccounts','addMailAccounts','addOpenchannelAccounts','addSmsAccounts','/:id/api_key','createApiKey','put','update','/:id/password','changePassword','delete','removeQueues','destroy','/:id/chat_interactions','removeChatInteractions','removeMailInteractions','removeSmsInteractions','removeFaxAccounts','removeMailAccounts','removeOpenchannelAccounts','removeSmsAccounts','removeChatWebsites','/:id/whatsapp_accounts','removeWhatsappAccounts','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./user.controller','get','isAuthenticated','index','describe','whoami','/presence','getPresence','/:id','show','/:id/avatar','getAvatar','/:id/open_tabs','getOpenTabs','/:id/contacts','getContacts','/:id/queues','/:id/queues_rt','getVoiceQueuesRt','/:id/groups','getGroups','/:id/recordings','/:id/screen_recordings','getScreenRecordings','getChatInteractions','getOpenchannelInteractions','/:id/mail/interactions','getMailInteractions','/:id/sms/interactions','getSmsInteractions','/:id/fax/interactions','getFaxInteractions','/:id/teams','getTeams','/:id/lists','getLists','getAgents','/:id/prefixes','getVoicePrefixes','/:id/fax_accounts','/:id/mail_accounts','getMailAccounts','/:id/openchannel_accounts','getOpenchannelAccounts','/:id/sms_accounts','getSmsAccounts','/:id/chat_websites','getWhatsappAccounts','getScheduledCalls','getApiKey','addContacts','create','post','/create_many','bulkCreate','addQueues','root','format','%s-%s','now','originalname','single','addAvatar'];(function(_0xec86fc,_0x1c5651){var _0x1d241f=function(_0x46ceba){while(--_0x46ceba){_0xec86fc['push'](_0xec86fc['shift']());}};_0x1d241f(++_0x1c5651);}(_0xaf1d,0x9f));var _0xdaf1=function(_0x3260be,_0x11bcc9){_0x3260be=_0x3260be-0x0;var _0x47afc3=_0xaf1d[_0x3260be];return _0x47afc3;};'use strict';var multer=require(_0xdaf1('0x0'));var util=require(_0xdaf1('0x1'));var path=require(_0xdaf1('0x2'));var timeout=require(_0xdaf1('0x3'));var express=require('express');var router=express[_0xdaf1('0x4')]();var fs_extra=require(_0xdaf1('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xdaf1('0x6'));var config=require(_0xdaf1('0x7'));var controller=require(_0xdaf1('0x8'));router[_0xdaf1('0x9')]('/',auth[_0xdaf1('0xa')](),controller[_0xdaf1('0xb')]);router['get']('/describe',auth['isAuthenticated'](),controller[_0xdaf1('0xc')]);router['get']('/whoami',auth[_0xdaf1('0xa')](),controller[_0xdaf1('0xd')]);router[_0xdaf1('0x9')](_0xdaf1('0xe'),auth['isAuthenticated'](),controller[_0xdaf1('0xf')]);router[_0xdaf1('0x9')](_0xdaf1('0x10'),auth[_0xdaf1('0xa')](),controller[_0xdaf1('0x11')]);router['get'](_0xdaf1('0x12'),controller[_0xdaf1('0x13')]);router[_0xdaf1('0x9')](_0xdaf1('0x14'),auth[_0xdaf1('0xa')](),controller[_0xdaf1('0x15')]);router[_0xdaf1('0x9')](_0xdaf1('0x16'),auth[_0xdaf1('0xa')](),controller[_0xdaf1('0x17')]);router[_0xdaf1('0x9')](_0xdaf1('0x18'),auth[_0xdaf1('0xa')](),controller['getQueues']);router[_0xdaf1('0x9')](_0xdaf1('0x19'),auth['isAuthenticated'](),controller[_0xdaf1('0x1a')]);router['get'](_0xdaf1('0x1b'),auth[_0xdaf1('0xa')](),controller[_0xdaf1('0x1c')]);router['get'](_0xdaf1('0x1d'),auth['isAuthenticated'](),controller['getRecordings']);router[_0xdaf1('0x9')](_0xdaf1('0x1e'),auth[_0xdaf1('0xa')](),controller[_0xdaf1('0x1f')]);router['get']('/:id/chat/interactions',auth[_0xdaf1('0xa')](),controller[_0xdaf1('0x20')]);router[_0xdaf1('0x9')]('/:id/openchannel/interactions',auth[_0xdaf1('0xa')](),controller[_0xdaf1('0x21')]);router[_0xdaf1('0x9')](_0xdaf1('0x22'),auth[_0xdaf1('0xa')](),controller[_0xdaf1('0x23')]);router[_0xdaf1('0x9')](_0xdaf1('0x24'),auth[_0xdaf1('0xa')](),controller[_0xdaf1('0x25')]);router['get'](_0xdaf1('0x26'),auth[_0xdaf1('0xa')](),controller[_0xdaf1('0x27')]);router['get']('/:id/whatsapp/interactions',auth['isAuthenticated'](),controller['getWhatsappInteractions']);router[_0xdaf1('0x9')](_0xdaf1('0x28'),auth['isAuthenticated'](),controller[_0xdaf1('0x29')]);router[_0xdaf1('0x9')](_0xdaf1('0x2a'),auth['isAuthenticated'](),controller[_0xdaf1('0x2b')]);router[_0xdaf1('0x9')]('/:id/agents',auth[_0xdaf1('0xa')](),controller[_0xdaf1('0x2c')]);router[_0xdaf1('0x9')](_0xdaf1('0x2d'),auth[_0xdaf1('0xa')](),controller[_0xdaf1('0x2e')]);router['get'](_0xdaf1('0x2f'),auth[_0xdaf1('0xa')](),controller['getFaxAccounts']);router['get'](_0xdaf1('0x30'),auth[_0xdaf1('0xa')](),controller[_0xdaf1('0x31')]);router['get'](_0xdaf1('0x32'),auth[_0xdaf1('0xa')](),controller[_0xdaf1('0x33')]);router[_0xdaf1('0x9')](_0xdaf1('0x34'),auth['isAuthenticated'](),controller[_0xdaf1('0x35')]);router[_0xdaf1('0x9')](_0xdaf1('0x36'),auth['isAuthenticated'](),controller['getChatWebsites']);router[_0xdaf1('0x9')]('/:id/whatsapp_accounts',auth[_0xdaf1('0xa')](),controller[_0xdaf1('0x37')]);router[_0xdaf1('0x9')]('/:id/scheduled_calls',auth[_0xdaf1('0xa')](),controller[_0xdaf1('0x38')]);router['get']('/:id/api_key',auth[_0xdaf1('0xa')](),controller[_0xdaf1('0x39')]);router['post'](_0xdaf1('0x16'),auth[_0xdaf1('0xa')](),controller[_0xdaf1('0x3a')]);router['post']('/',auth[_0xdaf1('0xa')](),controller[_0xdaf1('0x3b')]);router[_0xdaf1('0x3c')](_0xdaf1('0x3d'),auth['isAuthenticated'](),controller[_0xdaf1('0x3e')]);router[_0xdaf1('0x3c')](_0xdaf1('0x18'),auth[_0xdaf1('0xa')](),controller[_0xdaf1('0x3f')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x219551,_0x20dee8,_0x2ad787){_0x2ad787(null,path['join'](config[_0xdaf1('0x40')],'server/files/images/'));},'filename':function(_0x38f534,_0x25c67f,_0x5c558f){_0x5c558f(null,util[_0xdaf1('0x41')](_0xdaf1('0x42'),Date[_0xdaf1('0x43')](),_0x25c67f[_0xdaf1('0x44')]));}})});router[_0xdaf1('0x3c')]('/:id/avatar',upload[_0xdaf1('0x45')]('file'),controller[_0xdaf1('0x46')]);router['post'](_0xdaf1('0x47'),auth[_0xdaf1('0xa')](),controller[_0xdaf1('0x48')]);router['post'](_0xdaf1('0x49'),auth[_0xdaf1('0xa')](),controller[_0xdaf1('0x4a')]);router[_0xdaf1('0x3c')](_0xdaf1('0x4b'),auth[_0xdaf1('0xa')](),controller[_0xdaf1('0x4c')]);router[_0xdaf1('0x3c')](_0xdaf1('0x4d'),auth[_0xdaf1('0xa')](),controller[_0xdaf1('0x4e')]);router['post']('/:id/teams',auth['isAuthenticated'](),controller[_0xdaf1('0x4f')]);router['post']('/:id/chat_interactions',auth[_0xdaf1('0xa')](),controller[_0xdaf1('0x50')]);router[_0xdaf1('0x3c')]('/:id/mail_interactions',auth['isAuthenticated'](),controller[_0xdaf1('0x51')]);router[_0xdaf1('0x3c')](_0xdaf1('0x52'),auth['isAuthenticated'](),controller[_0xdaf1('0x53')]);router['post'](_0xdaf1('0x54'),auth[_0xdaf1('0xa')](),controller[_0xdaf1('0x55')]);router[_0xdaf1('0x3c')](_0xdaf1('0x56'),auth[_0xdaf1('0xa')](),controller[_0xdaf1('0x57')]);router[_0xdaf1('0x3c')](_0xdaf1('0x58'),auth[_0xdaf1('0xa')](),controller[_0xdaf1('0x59')]);router[_0xdaf1('0x3c')](_0xdaf1('0x2f'),auth['isAuthenticated'](),controller[_0xdaf1('0x5a')]);router[_0xdaf1('0x3c')](_0xdaf1('0x30'),auth[_0xdaf1('0xa')](),controller[_0xdaf1('0x5b')]);router[_0xdaf1('0x3c')](_0xdaf1('0x32'),auth['isAuthenticated'](),controller[_0xdaf1('0x5c')]);router[_0xdaf1('0x3c')](_0xdaf1('0x34'),auth['isAuthenticated'](),controller[_0xdaf1('0x5d')]);router[_0xdaf1('0x3c')]('/:id/chat_websites',auth[_0xdaf1('0xa')](),controller['addChatWebsites']);router[_0xdaf1('0x3c')]('/:id/whatsapp_accounts',auth[_0xdaf1('0xa')](),controller['addWhatsappAccounts']);router[_0xdaf1('0x3c')](_0xdaf1('0x5e'),auth[_0xdaf1('0xa')](),controller[_0xdaf1('0x5f')]);router[_0xdaf1('0x60')](_0xdaf1('0x10'),auth['isAuthenticated'](),controller[_0xdaf1('0x61')]);router[_0xdaf1('0x60')](_0xdaf1('0x62'),auth[_0xdaf1('0xa')](),controller[_0xdaf1('0x63')]);router[_0xdaf1('0x64')](_0xdaf1('0x18'),auth['isAuthenticated'](),controller[_0xdaf1('0x65')]);router['delete']('/:id/teams',auth[_0xdaf1('0xa')](),controller['removeTeams']);router['delete'](_0xdaf1('0x10'),auth['isAuthenticated'](),controller[_0xdaf1('0x66')]);router[_0xdaf1('0x64')](_0xdaf1('0x67'),auth[_0xdaf1('0xa')](),controller[_0xdaf1('0x68')]);router[_0xdaf1('0x64')]('/:id/mail_interactions',auth[_0xdaf1('0xa')](),controller[_0xdaf1('0x69')]);router['delete'](_0xdaf1('0x52'),auth[_0xdaf1('0xa')](),controller['removeFaxInteractions']);router[_0xdaf1('0x64')]('/:id/sms_interactions',auth[_0xdaf1('0xa')](),controller[_0xdaf1('0x6a')]);router[_0xdaf1('0x64')]('/:id/openchannel_interactions',auth[_0xdaf1('0xa')](),controller['removeOpenchannelInteractions']);router[_0xdaf1('0x64')](_0xdaf1('0x58'),auth[_0xdaf1('0xa')](),controller['removeWhatsappInteractions']);router[_0xdaf1('0x64')]('/:id/fax_accounts',auth[_0xdaf1('0xa')](),controller[_0xdaf1('0x6b')]);router['delete'](_0xdaf1('0x30'),auth['isAuthenticated'](),controller[_0xdaf1('0x6c')]);router[_0xdaf1('0x64')]('/:id/openchannel_accounts',auth[_0xdaf1('0xa')](),controller[_0xdaf1('0x6d')]);router[_0xdaf1('0x64')]('/:id/sms_accounts',auth[_0xdaf1('0xa')](),controller[_0xdaf1('0x6e')]);router['delete'](_0xdaf1('0x36'),auth['isAuthenticated'](),controller[_0xdaf1('0x6f')]);router[_0xdaf1('0x64')](_0xdaf1('0x70'),auth[_0xdaf1('0xa')](),controller[_0xdaf1('0x71')]);router[_0xdaf1('0x64')](_0xdaf1('0x5e'),auth['isAuthenticated'](),controller['removeApiKey']);module[_0xdaf1('0x72')]=router;
\ No newline at end of file
+var _0xb627=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./user.controller','get','index','/describe','isAuthenticated','whoami','getPresence','/:id','show','/:id/avatar','getAvatar','/:id/open_tabs','getOpenTabs','/:id/contacts','getContacts','/:id/queues','getVoiceQueuesRt','/:id/recordings','getRecordings','/:id/screen_recordings','getScreenRecordings','/:id/chat/interactions','getChatInteractions','/:id/openchannel/interactions','/:id/mail/interactions','getMailInteractions','getSmsInteractions','/:id/whatsapp/interactions','getWhatsappInteractions','getTeams','getLists','/:id/agents','getAgents','/:id/prefixes','/:id/fax_accounts','getFaxAccounts','/:id/mail_accounts','getMailAccounts','/:id/openchannel_accounts','getOpenchannelAccounts','/:id/sms_accounts','getSmsAccounts','/:id/chat_websites','getChatWebsites','/:id/whatsapp_accounts','getWhatsappAccounts','/:id/scheduled_calls','/:id/api_key','post','addContacts','/create_many','bulkCreate','addQueues','diskStorage','join','root','server/files/images/','format','%s-%s','now','originalname','single','file','addAvatar','login','/:id/logout','logout','/:id/pause','pause','unpause','/:id/teams','/:id/chat_interactions','/:id/mail_interactions','addFaxInteractions','/:id/sms_interactions','addSmsInteractions','/:id/openchannel_interactions','addOpenchannelInteractions','/:id/whatsapp_interactions','addWhatsappInteractions','addFaxAccounts','addMailAccounts','addOpenchannelAccounts','addSmsAccounts','addChatWebsites','addWhatsappAccounts','put','changePassword','delete','removeQueues','removeTeams','destroy','removeMailInteractions','/:id/fax_interactions','removeFaxInteractions','removeOpenchannelInteractions','removeWhatsappInteractions','removeMailAccounts','removeOpenchannelAccounts','removeSmsAccounts','removeChatWebsites','exports','multer','connect-timeout','Router'];(function(_0x562f3b,_0x4c65ae){var _0x1edd55=function(_0xe67e06){while(--_0xe67e06){_0x562f3b['push'](_0x562f3b['shift']());}};_0x1edd55(++_0x4c65ae);}(_0xb627,0x144));var _0x7b62=function(_0x2a00b6,_0x4e8984){_0x2a00b6=_0x2a00b6-0x0;var _0x54659b=_0xb627[_0x2a00b6];return _0x54659b;};'use strict';var multer=require(_0x7b62('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x7b62('0x1'));var express=require('express');var router=express[_0x7b62('0x2')]();var fs_extra=require(_0x7b62('0x3'));var auth=require(_0x7b62('0x4'));var interaction=require(_0x7b62('0x5'));var config=require(_0x7b62('0x6'));var controller=require(_0x7b62('0x7'));router[_0x7b62('0x8')]('/',auth['isAuthenticated'](),controller[_0x7b62('0x9')]);router['get'](_0x7b62('0xa'),auth[_0x7b62('0xb')](),controller['describe']);router[_0x7b62('0x8')]('/whoami',auth[_0x7b62('0xb')](),controller[_0x7b62('0xc')]);router[_0x7b62('0x8')]('/presence',auth[_0x7b62('0xb')](),controller[_0x7b62('0xd')]);router[_0x7b62('0x8')](_0x7b62('0xe'),auth[_0x7b62('0xb')](),controller[_0x7b62('0xf')]);router[_0x7b62('0x8')](_0x7b62('0x10'),controller[_0x7b62('0x11')]);router[_0x7b62('0x8')](_0x7b62('0x12'),auth[_0x7b62('0xb')](),controller[_0x7b62('0x13')]);router['get'](_0x7b62('0x14'),auth['isAuthenticated'](),controller[_0x7b62('0x15')]);router['get'](_0x7b62('0x16'),auth['isAuthenticated'](),controller['getQueues']);router[_0x7b62('0x8')]('/:id/queues_rt',auth[_0x7b62('0xb')](),controller[_0x7b62('0x17')]);router[_0x7b62('0x8')]('/:id/groups',auth[_0x7b62('0xb')](),controller['getGroups']);router[_0x7b62('0x8')](_0x7b62('0x18'),auth['isAuthenticated'](),controller[_0x7b62('0x19')]);router['get'](_0x7b62('0x1a'),auth[_0x7b62('0xb')](),controller[_0x7b62('0x1b')]);router[_0x7b62('0x8')](_0x7b62('0x1c'),auth['isAuthenticated'](),controller[_0x7b62('0x1d')]);router[_0x7b62('0x8')](_0x7b62('0x1e'),auth[_0x7b62('0xb')](),controller['getOpenchannelInteractions']);router['get'](_0x7b62('0x1f'),auth[_0x7b62('0xb')](),controller[_0x7b62('0x20')]);router['get']('/:id/sms/interactions',auth[_0x7b62('0xb')](),controller[_0x7b62('0x21')]);router[_0x7b62('0x8')]('/:id/fax/interactions',auth['isAuthenticated'](),controller['getFaxInteractions']);router[_0x7b62('0x8')](_0x7b62('0x22'),auth[_0x7b62('0xb')](),controller[_0x7b62('0x23')]);router[_0x7b62('0x8')]('/:id/teams',auth[_0x7b62('0xb')](),controller[_0x7b62('0x24')]);router['get']('/:id/lists',auth[_0x7b62('0xb')](),controller[_0x7b62('0x25')]);router[_0x7b62('0x8')](_0x7b62('0x26'),auth[_0x7b62('0xb')](),controller[_0x7b62('0x27')]);router['get'](_0x7b62('0x28'),auth[_0x7b62('0xb')](),controller['getVoicePrefixes']);router[_0x7b62('0x8')](_0x7b62('0x29'),auth['isAuthenticated'](),controller[_0x7b62('0x2a')]);router[_0x7b62('0x8')](_0x7b62('0x2b'),auth['isAuthenticated'](),controller[_0x7b62('0x2c')]);router[_0x7b62('0x8')](_0x7b62('0x2d'),auth[_0x7b62('0xb')](),controller[_0x7b62('0x2e')]);router[_0x7b62('0x8')](_0x7b62('0x2f'),auth[_0x7b62('0xb')](),controller[_0x7b62('0x30')]);router[_0x7b62('0x8')](_0x7b62('0x31'),auth[_0x7b62('0xb')](),controller[_0x7b62('0x32')]);router['get'](_0x7b62('0x33'),auth[_0x7b62('0xb')](),controller[_0x7b62('0x34')]);router[_0x7b62('0x8')](_0x7b62('0x35'),auth['isAuthenticated'](),controller['getScheduledCalls']);router[_0x7b62('0x8')](_0x7b62('0x36'),auth[_0x7b62('0xb')](),controller['getApiKey']);router[_0x7b62('0x37')](_0x7b62('0x14'),auth['isAuthenticated'](),controller[_0x7b62('0x38')]);router[_0x7b62('0x37')]('/',auth[_0x7b62('0xb')](),controller['create']);router[_0x7b62('0x37')](_0x7b62('0x39'),auth['isAuthenticated'](),controller[_0x7b62('0x3a')]);router[_0x7b62('0x37')](_0x7b62('0x16'),auth['isAuthenticated'](),controller[_0x7b62('0x3b')]);var upload=multer({'storage':multer[_0x7b62('0x3c')]({'destination':function(_0x45bf81,_0xc7d59f,_0xe321da){_0xe321da(null,path[_0x7b62('0x3d')](config[_0x7b62('0x3e')],_0x7b62('0x3f')));},'filename':function(_0x2395e7,_0x362b0e,_0x46a546){_0x46a546(null,util[_0x7b62('0x40')](_0x7b62('0x41'),Date[_0x7b62('0x42')](),_0x362b0e[_0x7b62('0x43')]));}})});router[_0x7b62('0x37')](_0x7b62('0x10'),upload[_0x7b62('0x44')](_0x7b62('0x45')),controller[_0x7b62('0x46')]);router[_0x7b62('0x37')]('/:id/login',auth['isAuthenticated'](),controller[_0x7b62('0x47')]);router[_0x7b62('0x37')](_0x7b62('0x48'),auth['isAuthenticated'](),controller[_0x7b62('0x49')]);router[_0x7b62('0x37')](_0x7b62('0x4a'),auth[_0x7b62('0xb')](),controller[_0x7b62('0x4b')]);router['post']('/:id/unpause',auth['isAuthenticated'](),controller[_0x7b62('0x4c')]);router[_0x7b62('0x37')](_0x7b62('0x4d'),auth['isAuthenticated'](),controller['addTeams']);router[_0x7b62('0x37')](_0x7b62('0x4e'),auth[_0x7b62('0xb')](),controller['addChatInteractions']);router[_0x7b62('0x37')](_0x7b62('0x4f'),auth[_0x7b62('0xb')](),controller['addMailInteractions']);router[_0x7b62('0x37')]('/:id/fax_interactions',auth[_0x7b62('0xb')](),controller[_0x7b62('0x50')]);router['post'](_0x7b62('0x51'),auth[_0x7b62('0xb')](),controller[_0x7b62('0x52')]);router['post'](_0x7b62('0x53'),auth['isAuthenticated'](),controller[_0x7b62('0x54')]);router['post'](_0x7b62('0x55'),auth[_0x7b62('0xb')](),controller[_0x7b62('0x56')]);router['post'](_0x7b62('0x29'),auth[_0x7b62('0xb')](),controller[_0x7b62('0x57')]);router[_0x7b62('0x37')](_0x7b62('0x2b'),auth[_0x7b62('0xb')](),controller[_0x7b62('0x58')]);router[_0x7b62('0x37')](_0x7b62('0x2d'),auth[_0x7b62('0xb')](),controller[_0x7b62('0x59')]);router[_0x7b62('0x37')](_0x7b62('0x2f'),auth[_0x7b62('0xb')](),controller[_0x7b62('0x5a')]);router[_0x7b62('0x37')]('/:id/chat_websites',auth['isAuthenticated'](),controller[_0x7b62('0x5b')]);router['post'](_0x7b62('0x33'),auth['isAuthenticated'](),controller[_0x7b62('0x5c')]);router[_0x7b62('0x37')](_0x7b62('0x36'),auth[_0x7b62('0xb')](),controller['createApiKey']);router[_0x7b62('0x5d')](_0x7b62('0xe'),auth[_0x7b62('0xb')](),controller['update']);router['put']('/:id/password',auth[_0x7b62('0xb')](),controller[_0x7b62('0x5e')]);router[_0x7b62('0x5f')](_0x7b62('0x16'),auth[_0x7b62('0xb')](),controller[_0x7b62('0x60')]);router[_0x7b62('0x5f')](_0x7b62('0x4d'),auth[_0x7b62('0xb')](),controller[_0x7b62('0x61')]);router['delete'](_0x7b62('0xe'),auth['isAuthenticated'](),controller[_0x7b62('0x62')]);router[_0x7b62('0x5f')](_0x7b62('0x4e'),auth['isAuthenticated'](),controller['removeChatInteractions']);router['delete'](_0x7b62('0x4f'),auth[_0x7b62('0xb')](),controller[_0x7b62('0x63')]);router[_0x7b62('0x5f')](_0x7b62('0x64'),auth['isAuthenticated'](),controller[_0x7b62('0x65')]);router[_0x7b62('0x5f')](_0x7b62('0x51'),auth[_0x7b62('0xb')](),controller['removeSmsInteractions']);router[_0x7b62('0x5f')](_0x7b62('0x53'),auth[_0x7b62('0xb')](),controller[_0x7b62('0x66')]);router[_0x7b62('0x5f')](_0x7b62('0x55'),auth[_0x7b62('0xb')](),controller[_0x7b62('0x67')]);router[_0x7b62('0x5f')]('/:id/fax_accounts',auth['isAuthenticated'](),controller['removeFaxAccounts']);router[_0x7b62('0x5f')](_0x7b62('0x2b'),auth['isAuthenticated'](),controller[_0x7b62('0x68')]);router[_0x7b62('0x5f')](_0x7b62('0x2d'),auth[_0x7b62('0xb')](),controller[_0x7b62('0x69')]);router[_0x7b62('0x5f')](_0x7b62('0x2f'),auth['isAuthenticated'](),controller[_0x7b62('0x6a')]);router[_0x7b62('0x5f')](_0x7b62('0x31'),auth[_0x7b62('0xb')](),controller[_0x7b62('0x6b')]);router[_0x7b62('0x5f')](_0x7b62('0x33'),auth['isAuthenticated'](),controller['removeWhatsappAccounts']);router[_0x7b62('0x5f')](_0x7b62('0x36'),auth[_0x7b62('0xb')](),controller['removeApiKey']);module[_0x7b62('0x6c')]=router;
\ No newline at end of file
index fdda8fa..0c20ef9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['get','udp','encryption','avpf','force_avp','icesupport','dtlscertfile','dtlsprivatekey','wss','dtlsenable','dtlsverify','dtlssetup','actpass','/etc/pki/tls/certs/motion.crt','rtcp_mux','permissions','phoneBarEnableScreenRecordingByAgent','string','false','screenrecording','blocked','loginAttempts','blockedAt','UNSIGNED','util','lodash','exports','STRING','name','setDataValue','The\x20name\x20of\x20the\x20user','fullname','callerid','format','\x22%s\x22\x20<%s>','getDataValue','email','admin','user','telephone','local','INTEGER','internal','accountcode','DATE','BOOLEAN','DEFAULT\x20PAUSE','dynamic','ENUM','friend','peer','from-sip','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','transport','join','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','info','shortinfo','inband','yes','nonat','update','outgoing','force_rport,comedia','nat','all','ulaw;alaw;gsm','allow','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22gsm\x22]','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','\x22\x22\x20<>','accept','refuse','originate','uac','uas','fingerprint','certificate','active','update,nonat','TEXT'];(function(_0x5d2803,_0xf375bd){var _0xdcad2c=function(_0x3c3a98){while(--_0x3c3a98){_0x5d2803['push'](_0x5d2803['shift']());}};_0xdcad2c(++_0xf375bd);}(_0x9c44,0x178));var _0x49c4=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x9c44[_0x3ab51d];return _0x29a04e;};'use strict';var Sequelize=require('sequelize');var moment=require('moment');var util=require(_0x49c4('0x0'));var _=require(_0x49c4('0x1'));module[_0x49c4('0x2')]={'name':{'type':Sequelize[_0x49c4('0x3')],'allowNull':![],'unique':_0x49c4('0x4'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i},'set':function(_0x2ad237){this['setDataValue']('name',_0x2ad237);this[_0x49c4('0x5')]('defaultuser',_0x2ad237);},'comment':_0x49c4('0x6')},'fullname':{'type':Sequelize[_0x49c4('0x3')],'allowNull':![],'set':function(_0x69bc41){this[_0x49c4('0x5')](_0x49c4('0x7'),_0x69bc41);this['setDataValue'](_0x49c4('0x8'),util[_0x49c4('0x9')](_0x49c4('0xa'),_0x69bc41,this[_0x49c4('0xb')]('internal')));}},'alias':{'type':Sequelize['STRING']},'email':{'type':Sequelize[_0x49c4('0x3')],'allowNull':![],'unique':_0x49c4('0xc'),'validate':{'isEmail':!![]},'set':function(_0x58cad7){if(_0x58cad7){this[_0x49c4('0x5')](_0x49c4('0xc'),_0x58cad7['toLowerCase']());}}},'role':{'type':Sequelize['ENUM'](_0x49c4('0xd'),_0x49c4('0xe'),'agent',_0x49c4('0xf')),'allowNull':![]},'password':{'type':Sequelize[_0x49c4('0x3')],'allowNull':![],'validate':{'notEmpty':!![]}},'provider':{'type':Sequelize['STRING'],'defaultValue':_0x49c4('0x10')},'internal':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':![],'unique':_0x49c4('0x12'),'set':function(_0x2decee){this[_0x49c4('0x5')](_0x49c4('0x12'),_0x2decee);this[_0x49c4('0x5')](_0x49c4('0x13'),_0x2decee);this['setDataValue'](_0x49c4('0x8'),util[_0x49c4('0x9')](_0x49c4('0xa'),this[_0x49c4('0xb')](_0x49c4('0x7')),_0x2decee));}},'salt':{'type':Sequelize['STRING']},'phone':{'type':Sequelize[_0x49c4('0x3')]},'mobile':{'type':Sequelize[_0x49c4('0x3')]},'address':{'type':Sequelize['STRING']},'zipcode':{'type':Sequelize['STRING']},'userpic':{'type':Sequelize[_0x49c4('0x3')]},'city':{'type':Sequelize[_0x49c4('0x3')]},'country':{'type':Sequelize[_0x49c4('0x3')]},'online':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'lastLoginAt':{'type':Sequelize[_0x49c4('0x14')]},'voicePause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'chatPause':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'mailPause':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'faxPause':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'smsPause':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'whatsappPause':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'openchannelPause':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'pauseType':{'type':Sequelize[_0x49c4('0x3')],'defaultValue':_0x49c4('0x16')},'lastPauseAt':{'type':Sequelize[_0x49c4('0x14')]},'chatCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'mailCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'faxCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'smsCapacity':{'type':Sequelize[_0x49c4('0x11')],'defaultValue':0x0},'whatsappCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'openchannelCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'phoneBarAutoAnswer':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'phoneBarEnableSettings':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':!![]},'phoneBarListenPort':{'type':Sequelize[_0x49c4('0x11')](0x5),'defaultValue':0x1428},'phoneBarExpires':{'type':Sequelize[_0x49c4('0x11')](0x5),'defaultValue':0x78},'phoneBarRemoteControl':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarRemoteControlPort':{'type':Sequelize['INTEGER'],'defaultValue':0x26a0},'phoneBarEnableRecording':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'phoneBarRingInUse':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'chanspy':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'description':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'host':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![],'defaultValue':_0x49c4('0x17')},'ipaddr':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'port':{'type':Sequelize['INTEGER'](0x5),'allowNull':!![]},'regseconds':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'fullcontact':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'regserver':{'type':Sequelize['STRING'],'allowNull':!![]},'useragent':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'lastms':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'type':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x19'),'user',_0x49c4('0x1a')),'allowNull':!![],'defaultValue':_0x49c4('0x19')},'context':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![],'defaultValue':_0x49c4('0x1b')},'callingpres':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x1c'),_0x49c4('0x1d'),_0x49c4('0x1e'),_0x49c4('0x1f'),_0x49c4('0x20'),_0x49c4('0x21'),'PROHIB_FAILED_SCREEN','PROHIB'),'allowNull':!![]},'deny':{'type':Sequelize['STRING'],'allowNull':!![]},'permit':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'secret':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'md5secret':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'remotesecret':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'transport':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![],'defaultValue':'udp','set':function(_0x38ad77){this[_0x49c4('0x5')](_0x49c4('0x22'),_0x38ad77?_0x38ad77[_0x49c4('0x23')](','):null);},'get':function(){return this['getDataValue']('transport')?this[_0x49c4('0xb')](_0x49c4('0x22'))[_0x49c4('0x24')](','):null;},'comment':_0x49c4('0x25')},'dtmfmode':{'type':Sequelize[_0x49c4('0x18')]('rfc2833',_0x49c4('0x26'),_0x49c4('0x27'),_0x49c4('0x28'),'auto'),'allowNull':!![],'defaultValue':'rfc2833'},'directmedia':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no',_0x49c4('0x2a'),_0x49c4('0x2b'),_0x49c4('0x2c')),'allowNull':!![],'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no'),'allowNull':!![],'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'directmediadeny':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'nat':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x49c4('0x2d'),'set':function(_0x5b96df){this[_0x49c4('0x5')](_0x49c4('0x2e'),_0x5b96df?_0x5b96df[_0x49c4('0x23')](','):null);},'get':function(){return this[_0x49c4('0xb')]('nat')?this[_0x49c4('0xb')](_0x49c4('0x2e'))[_0x49c4('0x24')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]'},'callgroup':{'type':Sequelize[_0x49c4('0x3')]},'namedcallgroup':{'type':Sequelize[_0x49c4('0x3')]},'pickupgroup':{'type':Sequelize[_0x49c4('0x3')]},'namedpickupgroup':{'type':Sequelize[_0x49c4('0x3')]},'language':{'type':Sequelize[_0x49c4('0x3')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0x49c4('0x3')]},'disallow':{'type':Sequelize[_0x49c4('0x3')],'allowNull':![],'defaultValue':_0x49c4('0x2f')},'allow':{'type':Sequelize[_0x49c4('0x3')],'allowNull':![],'defaultValue':_0x49c4('0x30'),'set':function(_0x1e506a){this['setDataValue'](_0x49c4('0x31'),_0x1e506a?_0x1e506a[_0x49c4('0x23')](';'):_0x49c4('0x30'));},'get':function(){return this[_0x49c4('0xb')](_0x49c4('0x31'))?this[_0x49c4('0xb')](_0x49c4('0x31'))[_0x49c4('0x24')](';'):null;},'comment':_0x49c4('0x32')},'autoframing':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no'),'allowNull':!![]},'insecure':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![],'set':function(_0x326142){this['setDataValue'](_0x49c4('0x33'),_0x326142?_0x326142['join'](','):null);},'get':function(){return this[_0x49c4('0xb')](_0x49c4('0x33'))?this[_0x49c4('0xb')](_0x49c4('0x33'))[_0x49c4('0x24')](','):null;},'comment':_0x49c4('0x34')},'trustrpid':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![],'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no'),'allowNull':!![],'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no','never'),'allowNull':!![]},'promiscredir':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no'),'allowNull':!![]},'useclientcode':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no'),'allowNull':!![]},'accountcode':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'setvar':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'callerid':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![],'defaultValue':_0x49c4('0x35')},'amaflags':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'callcounter':{'type':Sequelize['ENUM'](_0x49c4('0x29'),'no'),'allowNull':!![],'defaultValue':'yes'},'busylevel':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'allowoverlap':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no'),'allowNull':!![]},'allowsubscribe':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no'),'allowNull':!![]},'allowtransfer':{'type':Sequelize['ENUM'](_0x49c4('0x29'),'no'),'allowNull':!![]},'ignoresdpversion':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no'),'allowNull':!![]},'subscribecontext':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'template':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'videosupport':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no','always'),'allowNull':!![],'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'rfc2833compensate':{'type':Sequelize['ENUM'](_0x49c4('0x29'),'no'),'allowNull':!![]},'mailbox':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'session_timers':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x36'),_0x49c4('0x37'),_0x49c4('0x38')),'allowNull':!![]},'session_expires':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'session_minse':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'session_refresher':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x39'),'uas'),'allowNull':!![],'defaultValue':_0x49c4('0x3a')},'t38pt_usertpsource':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'regexten':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'fromdomain':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'fromuser':{'type':Sequelize['STRING'],'allowNull':!![]},'qualify':{'type':Sequelize['ENUM'](_0x49c4('0x29'),'no'),'allowNull':!![],'defaultValue':'yes'},'keepalive':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'defaultip':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'defaultuser':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'rtptimeout':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'rtpholdtimeout':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'rtpkeepalive':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'sendrpid':{'type':Sequelize[_0x49c4('0x18')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'callbackextension':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'timert1':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'timerb':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'qualifyfreq':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'contactpermit':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'contactdeny':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'contactacl':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'unsolicited_mailbox':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'use_q850_reason':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'maxforwards':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'encryption':{'type':Sequelize['ENUM'](_0x49c4('0x29'),'no'),'allowNull':!![],'defaultValue':'no'},'avpf':{'type':Sequelize[_0x49c4('0x18')]('yes','no'),'allowNull':!![]},'force_avp':{'type':Sequelize['ENUM'](_0x49c4('0x29'),'no'),'allowNull':!![]},'icesupport':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![]},'dtlsenable':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no'),'allowNull':!![]},'dtlsverify':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no',_0x49c4('0x3b'),_0x49c4('0x3c')),'allowNull':!![]},'dtlsrekey':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'dtlscertfile':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlsprivatekey':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'dtlscipher':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'dtlscafile':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'dtlscapath':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'dtlssetup':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x3d'),'passive','actpass'),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'usereqphone':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no'),'allowNull':!![],'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'recordofffeature':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'call_limit':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![],'defaultValue':0xa},'registertrying':{'type':Sequelize[_0x49c4('0x18')]('yes','no'),'allowNull':!![]},'subscribemwi':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no'),'allowNull':!![]},'vmexten':{'type':Sequelize['STRING'],'allowNull':!![]},'mohinterpret':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'mohsuggest':{'type':Sequelize['STRING'],'allowNull':!![]},'parkinglot':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'canreinvite':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no',_0x49c4('0x2a'),_0x49c4('0x2b'),_0x49c4('0x3e')),'allowNull':!![],'defaultValue':'no'},'loginInPause':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'resetPasswordToken':{'type':Sequelize[_0x49c4('0x3')]},'resetPasswordExpires':{'type':Sequelize['DATE']},'passwordResetAt':{'type':Sequelize[_0x49c4('0x14')],'defaultValue':null},'previousPasswords':{'type':Sequelize[_0x49c4('0x3f')]},'showWebBar':{'type':Sequelize['INTEGER'],'defaultValue':0x0,'set':function(_0x10dec7){this[_0x49c4('0x5')]('showWebBar',_0x10dec7);var _0x39c455=this[_0x49c4('0x40')]({'plain':!![]});switch(_0x10dec7){case 0x0:case 0x1:var _0x4f50bf=_0x39c455['transport']?_['isArray'](_0x39c455['transport'])?_0x39c455[_0x49c4('0x22')]['join']():_0x39c455[_0x49c4('0x22')]:_0x49c4('0x41');if(_0x4f50bf==='wss'){_0x4f50bf=_0x49c4('0x41');}this[_0x49c4('0x5')]('transport',_0x4f50bf);this[_0x49c4('0x5')](_0x49c4('0x42'),'no');this[_0x49c4('0x5')](_0x49c4('0x43'),null);this['setDataValue'](_0x49c4('0x44'),null);this[_0x49c4('0x5')](_0x49c4('0x45'),null);this[_0x49c4('0x5')]('dtlsenable',null);this[_0x49c4('0x5')]('dtlsverify',null);this['setDataValue']('dtlssetup',null);this['setDataValue'](_0x49c4('0x46'),null);this[_0x49c4('0x5')](_0x49c4('0x47'),null);this[_0x49c4('0x5')]('rtcp_mux','no');break;case 0x2:this['setDataValue'](_0x49c4('0x22'),_0x49c4('0x48'));this[_0x49c4('0x5')](_0x49c4('0x42'),_0x49c4('0x29'));this[_0x49c4('0x5')](_0x49c4('0x43'),_0x49c4('0x29'));this['setDataValue'](_0x49c4('0x44'),'yes');this[_0x49c4('0x5')](_0x49c4('0x45'),_0x49c4('0x29'));this[_0x49c4('0x5')](_0x49c4('0x49'),_0x49c4('0x29'));this[_0x49c4('0x5')](_0x49c4('0x4a'),'no');this[_0x49c4('0x5')](_0x49c4('0x4b'),_0x49c4('0x4c'));this[_0x49c4('0x5')](_0x49c4('0x46'),_0x39c455[_0x49c4('0x46')]||_0x49c4('0x4d'));this[_0x49c4('0x5')](_0x49c4('0x47'),_0x39c455[_0x49c4('0x47')]||'/etc/pki/tls/private/motion.key');this['setDataValue'](_0x49c4('0x4e'),_0x49c4('0x29'));break;default:}}},'permissions':{'type':Sequelize['TEXT'],'set':function(_0x1a15f3){this[_0x49c4('0x5')](_0x49c4('0x4f'),_0x1a15f3?_0x1a15f3[_0x49c4('0x23')](','):[]);},'get':function(){return this['getDataValue']('permissions')?_['map'](this[_0x49c4('0xb')](_0x49c4('0x4f'))[_0x49c4('0x24')](','),function(_0x2f4289){return parseInt(_0x2f4289,0xa);}):[];}},'phoneBarUnconditionalNumber':{'type':Sequelize[_0x49c4('0x3')]},'phoneBarNoReplyNumber':{'type':Sequelize[_0x49c4('0x3')]},'phoneBarBusyNumber':{'type':Sequelize[_0x49c4('0x3')]},'phoneBarUnconditional':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'phoneBarNoReply':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'phoneBarBusy':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarDnd':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':!![]},'phoneBarUnansweredCallBadge':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':!![]},'phoneBarEnableDtmfTone':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'phoneBarAutoAnswerDelay':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'extensionMonitor':{'type':Sequelize[_0x49c4('0x3')],'defaultValue':''},'crudPermissions':{'type':Sequelize[_0x49c4('0x11')],'defaultValue':0x0},'rtcp_mux':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no'),'defaultValue':'no'},'allowmessenger':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':!![]},'phoneBarOutboundProxy':{'type':Sequelize[_0x49c4('0x3')]},'phoneBarEnableJaws':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'phoneBarEnableScreenRecordingByAgent':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'phoneBarEnableVideoRecording':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0x49c4('0xb')](_0x49c4('0x50'))?this[_0x49c4('0xb')](_0x49c4('0x50')):![];}},'phoneBarEnableAutomaticScreenRecording':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'phoneBarPrefixRequired':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'hotdesk':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'interface':{'type':Sequelize[_0x49c4('0x3')],'defaultValue':null},'privacyEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'apiKeyNonce':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'apiKeyIat':{'type':Sequelize['STRING'],'allowNull':!![]},'screenrecording':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![],'set':function(_0x27b77d){if(typeof _0x27b77d===_0x49c4('0x51')){var _0x34870e=_0x27b77d==='1'?!![]:_0x27b77d==='0'?![]:_0x27b77d==='true'?!![]:_0x27b77d===_0x49c4('0x52')?![]:![];this[_0x49c4('0x5')](_0x49c4('0x53'),_0x34870e);}else{this[_0x49c4('0x5')](_0x49c4('0x53'),_0x27b77d);}}},'blocked':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![],'set':function(_0x38b291){this[_0x49c4('0x5')](_0x49c4('0x54'),_0x38b291);if(_0x38b291===!![]){this[_0x49c4('0x5')]('blockedAt',moment());this[_0x49c4('0x5')](_0x49c4('0x55'),0x0);}else{this['setDataValue'](_0x49c4('0x56'),null);}}},'blockedAt':{'type':Sequelize['DATE'],'defaultValue':null},'loginAttempts':{'type':Sequelize[_0x49c4('0x11')],'defaultValue':0x0},'disabled':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'settingsEnabled':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':!![]},'wssPort':{'type':Sequelize[_0x49c4('0x11')](0x5)[_0x49c4('0x57')],'defaultValue':0x1f99},'downloadAttachments':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':!![]},'ignorePauseForPreviewCalls':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'selectRecallMeCampaign':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'adSsoEnabled':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'chatAutoanswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'chatAutoanswerDelay':{'type':Sequelize[_0x49c4('0x11')],'defaultValue':0x0},'emailAutoanswer':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'emailAutoanswerDelay':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'smsAutoanswer':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'smsAutoanswerDelay':{'type':Sequelize[_0x49c4('0x11')],'defaultValue':0x0},'openchannelAutoanswer':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'openchannelAutoanswerDelay':{'type':Sequelize[_0x49c4('0x11')],'defaultValue':0x0},'faxAutoanswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'faxAutoanswerDelay':{'type':Sequelize[_0x49c4('0x11')],'defaultValue':0x0},'whatsappAutoanswer':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'whatsappAutoanswerDelay':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0xcb91=['toLowerCase','ENUM','admin','user','local','INTEGER','accountcode','\x22%s\x22\x20<%s>','getDataValue','BOOLEAN','DATE','DEFAULT\x20PAUSE','dynamic','friend','peer','from-sip','ALLOWED_NOT_SCREENED','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','PROHIB','transport','join','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','rfc2833','info','shortinfo','inband','auto','yes','nonat','force_rport,comedia','nat','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','all','allow','ulaw;alaw;gsm','insecure','never','always','accept','originate','uac','uas','fingerprint','certificate','active','passive','update','showWebBar','get','isArray','encryption','avpf','icesupport','dtlsverify','dtlssetup','rtcp_mux','wss','force_avp','dtlscertfile','/etc/pki/tls/certs/motion.crt','dtlsprivatekey','/etc/pki/tls/private/motion.key','permissions','map','VIRTUAL','phoneBarEnableScreenRecordingByAgent','string','true','false','screenrecording','blockedAt','loginAttempts','UNSIGNED','util','lodash','exports','STRING','setDataValue','defaultuser','fullname','format','internal','email'];(function(_0x4e6271,_0x2fdee2){var _0x161629=function(_0x3921b6){while(--_0x3921b6){_0x4e6271['push'](_0x4e6271['shift']());}};_0x161629(++_0x2fdee2);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x51c819,_0xd812db){_0x51c819=_0x51c819-0x0;var _0x15c5d2=_0xcb91[_0x51c819];return _0x15c5d2;};'use strict';var Sequelize=require('sequelize');var moment=require('moment');var util=require(_0x1cb9('0x0'));var _=require(_0x1cb9('0x1'));module[_0x1cb9('0x2')]={'name':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':![],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i},'set':function(_0x8c392f){this[_0x1cb9('0x4')]('name',_0x8c392f);this[_0x1cb9('0x4')](_0x1cb9('0x5'),_0x8c392f);},'comment':'The\x20name\x20of\x20the\x20user'},'fullname':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':![],'set':function(_0x3f7deb){this['setDataValue'](_0x1cb9('0x6'),_0x3f7deb);this[_0x1cb9('0x4')]('callerid',util[_0x1cb9('0x7')]('\x22%s\x22\x20<%s>',_0x3f7deb,this['getDataValue'](_0x1cb9('0x8'))));}},'alias':{'type':Sequelize[_0x1cb9('0x3')]},'email':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':![],'unique':_0x1cb9('0x9'),'validate':{'isEmail':!![]},'set':function(_0x2fc627){if(_0x2fc627){this['setDataValue'](_0x1cb9('0x9'),_0x2fc627[_0x1cb9('0xa')]());}}},'role':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0xc'),_0x1cb9('0xd'),'agent','telephone'),'allowNull':![]},'password':{'type':Sequelize['STRING'],'allowNull':![],'validate':{'notEmpty':!![]}},'provider':{'type':Sequelize[_0x1cb9('0x3')],'defaultValue':_0x1cb9('0xe')},'internal':{'type':Sequelize[_0x1cb9('0xf')](0xb),'allowNull':![],'unique':_0x1cb9('0x8'),'set':function(_0x56884d){this[_0x1cb9('0x4')](_0x1cb9('0x8'),_0x56884d);this[_0x1cb9('0x4')](_0x1cb9('0x10'),_0x56884d);this[_0x1cb9('0x4')]('callerid',util['format'](_0x1cb9('0x11'),this[_0x1cb9('0x12')](_0x1cb9('0x6')),_0x56884d));}},'salt':{'type':Sequelize[_0x1cb9('0x3')]},'phone':{'type':Sequelize[_0x1cb9('0x3')]},'mobile':{'type':Sequelize[_0x1cb9('0x3')]},'address':{'type':Sequelize[_0x1cb9('0x3')]},'zipcode':{'type':Sequelize['STRING']},'userpic':{'type':Sequelize['STRING']},'city':{'type':Sequelize[_0x1cb9('0x3')]},'country':{'type':Sequelize[_0x1cb9('0x3')]},'online':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'lastLoginAt':{'type':Sequelize[_0x1cb9('0x14')]},'voicePause':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'chatPause':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'mailPause':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'faxPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'smsPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'whatsappPause':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'openchannelPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'pauseType':{'type':Sequelize[_0x1cb9('0x3')],'defaultValue':_0x1cb9('0x15')},'lastPauseAt':{'type':Sequelize['DATE']},'chatCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'mailCapacity':{'type':Sequelize[_0x1cb9('0xf')],'defaultValue':0x0},'faxCapacity':{'type':Sequelize[_0x1cb9('0xf')],'defaultValue':0x0},'smsCapacity':{'type':Sequelize[_0x1cb9('0xf')],'defaultValue':0x0},'whatsappCapacity':{'type':Sequelize[_0x1cb9('0xf')],'defaultValue':0x0},'openchannelCapacity':{'type':Sequelize[_0x1cb9('0xf')],'defaultValue':0x0},'phoneBarAutoAnswer':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'phoneBarEnableSettings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarListenPort':{'type':Sequelize['INTEGER'](0x5),'defaultValue':0x1428},'phoneBarExpires':{'type':Sequelize[_0x1cb9('0xf')](0x5),'defaultValue':0x78},'phoneBarRemoteControl':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarRemoteControlPort':{'type':Sequelize[_0x1cb9('0xf')],'defaultValue':0x26a0},'phoneBarEnableRecording':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'phoneBarRingInUse':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'chanspy':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'description':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'host':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x1cb9('0x16')},'ipaddr':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'port':{'type':Sequelize['INTEGER'](0x5),'allowNull':!![]},'regseconds':{'type':Sequelize[_0x1cb9('0xf')](0xb),'allowNull':!![]},'fullcontact':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'regserver':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'useragent':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'lastms':{'type':Sequelize[_0x1cb9('0xf')](0xb),'allowNull':!![]},'type':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x17'),_0x1cb9('0xd'),_0x1cb9('0x18')),'allowNull':!![],'defaultValue':_0x1cb9('0x17')},'context':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x1cb9('0x19')},'callingpres':{'type':Sequelize['ENUM'](_0x1cb9('0x1a'),'ALLOWED_PASSED_SCREEN',_0x1cb9('0x1b'),_0x1cb9('0x1c'),_0x1cb9('0x1d'),_0x1cb9('0x1e'),'PROHIB_FAILED_SCREEN',_0x1cb9('0x1f')),'allowNull':!![]},'deny':{'type':Sequelize['STRING'],'allowNull':!![]},'permit':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'secret':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'md5secret':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'remotesecret':{'type':Sequelize['STRING'],'allowNull':!![]},'transport':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![],'defaultValue':'udp','set':function(_0x3a3543){this['setDataValue'](_0x1cb9('0x20'),_0x3a3543?_0x3a3543[_0x1cb9('0x21')](','):null);},'get':function(){return this[_0x1cb9('0x12')](_0x1cb9('0x20'))?this['getDataValue'](_0x1cb9('0x20'))[_0x1cb9('0x22')](','):null;},'comment':_0x1cb9('0x23')},'dtmfmode':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x24'),_0x1cb9('0x25'),_0x1cb9('0x26'),_0x1cb9('0x27'),_0x1cb9('0x28')),'allowNull':!![],'defaultValue':_0x1cb9('0x24')},'directmedia':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x29'),'no',_0x1cb9('0x2a'),'update','outgoing'),'allowNull':!![],'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x29'),'no'),'allowNull':!![],'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'directmediadeny':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'nat':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![],'defaultValue':_0x1cb9('0x2b'),'set':function(_0x35f5e8){this[_0x1cb9('0x4')]('nat',_0x35f5e8?_0x35f5e8[_0x1cb9('0x21')](','):null);},'get':function(){return this[_0x1cb9('0x12')](_0x1cb9('0x2c'))?this['getDataValue'](_0x1cb9('0x2c'))['split'](','):null;},'comment':_0x1cb9('0x2d')},'callgroup':{'type':Sequelize['STRING']},'namedcallgroup':{'type':Sequelize[_0x1cb9('0x3')]},'pickupgroup':{'type':Sequelize[_0x1cb9('0x3')]},'namedpickupgroup':{'type':Sequelize[_0x1cb9('0x3')]},'language':{'type':Sequelize[_0x1cb9('0x3')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0x1cb9('0x3')]},'disallow':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':![],'defaultValue':_0x1cb9('0x2e')},'allow':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'ulaw;alaw;gsm','set':function(_0x4111b8){this[_0x1cb9('0x4')](_0x1cb9('0x2f'),_0x4111b8?_0x4111b8[_0x1cb9('0x21')](';'):_0x1cb9('0x30'));},'get':function(){return this[_0x1cb9('0x12')](_0x1cb9('0x2f'))?this['getDataValue'](_0x1cb9('0x2f'))['split'](';'):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22gsm\x22]'},'autoframing':{'type':Sequelize['ENUM'](_0x1cb9('0x29'),'no'),'allowNull':!![]},'insecure':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![],'set':function(_0x1bf51c){this[_0x1cb9('0x4')](_0x1cb9('0x31'),_0x1bf51c?_0x1bf51c['join'](','):null);},'get':function(){return this[_0x1cb9('0x12')]('insecure')?this[_0x1cb9('0x12')](_0x1cb9('0x31'))[_0x1cb9('0x22')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]'},'trustrpid':{'type':Sequelize[_0x1cb9('0xb')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x29'),'no'),'allowNull':!![],'defaultValue':'no'},'progressinband':{'type':Sequelize['ENUM']('yes','no',_0x1cb9('0x32')),'allowNull':!![]},'promiscredir':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x29'),'no'),'allowNull':!![]},'useclientcode':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x29'),'no'),'allowNull':!![]},'accountcode':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'setvar':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'callerid':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':'\x22\x22\x20<>'},'amaflags':{'type':Sequelize['STRING'],'allowNull':!![]},'callcounter':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x29'),'no'),'allowNull':!![],'defaultValue':_0x1cb9('0x29')},'busylevel':{'type':Sequelize[_0x1cb9('0xf')](0xb),'allowNull':!![]},'allowoverlap':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x29'),'no'),'allowNull':!![]},'allowsubscribe':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x29'),'no'),'allowNull':!![]},'allowtransfer':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x29'),'no'),'allowNull':!![]},'ignoresdpversion':{'type':Sequelize[_0x1cb9('0xb')]('yes','no'),'allowNull':!![]},'subscribecontext':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'template':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'videosupport':{'type':Sequelize[_0x1cb9('0xb')]('yes','no',_0x1cb9('0x33')),'allowNull':!![],'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0x1cb9('0xf')](0xb),'allowNull':!![]},'rfc2833compensate':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x29'),'no'),'allowNull':!![]},'mailbox':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'session_timers':{'type':Sequelize['ENUM'](_0x1cb9('0x34'),'refuse',_0x1cb9('0x35')),'allowNull':!![]},'session_expires':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'session_minse':{'type':Sequelize[_0x1cb9('0xf')](0xb),'allowNull':!![]},'session_refresher':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x36'),_0x1cb9('0x37')),'allowNull':!![],'defaultValue':'uas'},'t38pt_usertpsource':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'regexten':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'fromdomain':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'fromuser':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'qualify':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x29'),'no'),'allowNull':!![],'defaultValue':_0x1cb9('0x29')},'keepalive':{'type':Sequelize[_0x1cb9('0xf')](0xb),'allowNull':!![]},'defaultip':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'defaultuser':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'rtptimeout':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'rtpholdtimeout':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'rtpkeepalive':{'type':Sequelize[_0x1cb9('0xf')](0xb),'allowNull':!![]},'sendrpid':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x29'),'no'),'allowNull':!![],'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'callbackextension':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'timert1':{'type':Sequelize[_0x1cb9('0xf')](0xb),'allowNull':!![]},'timerb':{'type':Sequelize[_0x1cb9('0xf')](0xb),'allowNull':!![]},'qualifyfreq':{'type':Sequelize[_0x1cb9('0xf')](0xb),'allowNull':!![]},'contactpermit':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'contactdeny':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'contactacl':{'type':Sequelize['STRING'],'allowNull':!![]},'unsolicited_mailbox':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'use_q850_reason':{'type':Sequelize['STRING'],'allowNull':!![]},'maxforwards':{'type':Sequelize[_0x1cb9('0xf')](0xb),'allowNull':!![]},'encryption':{'type':Sequelize['ENUM'](_0x1cb9('0x29'),'no'),'allowNull':!![],'defaultValue':'no'},'avpf':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![]},'force_avp':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x29'),'no'),'allowNull':!![]},'icesupport':{'type':Sequelize[_0x1cb9('0xb')]('yes','no'),'allowNull':!![]},'dtlsenable':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x29'),'no'),'allowNull':!![]},'dtlsverify':{'type':Sequelize['ENUM']('yes','no',_0x1cb9('0x38'),_0x1cb9('0x39')),'allowNull':!![]},'dtlsrekey':{'type':Sequelize[_0x1cb9('0xf')](0xb),'allowNull':!![]},'dtlscertfile':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'dtlsprivatekey':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'dtlscipher':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'dtlscafile':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'dtlscapath':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlssetup':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x3a'),_0x1cb9('0x3b'),'actpass'),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'usereqphone':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x29'),'no'),'allowNull':!![],'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'recordofffeature':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'call_limit':{'type':Sequelize[_0x1cb9('0xf')](0xb),'allowNull':!![],'defaultValue':0xa},'registertrying':{'type':Sequelize['ENUM'](_0x1cb9('0x29'),'no'),'allowNull':!![]},'subscribemwi':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x29'),'no'),'allowNull':!![]},'vmexten':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'mohinterpret':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'mohsuggest':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'parkinglot':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'canreinvite':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x29'),'no',_0x1cb9('0x2a'),_0x1cb9('0x3c'),'update,nonat'),'allowNull':!![],'defaultValue':'no'},'loginInPause':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'resetPasswordToken':{'type':Sequelize[_0x1cb9('0x3')]},'resetPasswordExpires':{'type':Sequelize[_0x1cb9('0x14')]},'passwordResetAt':{'type':Sequelize[_0x1cb9('0x14')],'defaultValue':null},'previousPasswords':{'type':Sequelize['TEXT']},'showWebBar':{'type':Sequelize['INTEGER'],'defaultValue':0x0,'set':function(_0x319358){this[_0x1cb9('0x4')](_0x1cb9('0x3d'),_0x319358);var _0x173db5=this[_0x1cb9('0x3e')]({'plain':!![]});switch(_0x319358){case 0x0:case 0x1:var _0x75c734=_0x173db5[_0x1cb9('0x20')]?_[_0x1cb9('0x3f')](_0x173db5['transport'])?_0x173db5['transport'][_0x1cb9('0x21')]():_0x173db5['transport']:'udp';if(_0x75c734==='wss'){_0x75c734='udp';}this['setDataValue'](_0x1cb9('0x20'),_0x75c734);this[_0x1cb9('0x4')](_0x1cb9('0x40'),'no');this[_0x1cb9('0x4')](_0x1cb9('0x41'),null);this[_0x1cb9('0x4')]('force_avp',null);this[_0x1cb9('0x4')](_0x1cb9('0x42'),null);this['setDataValue']('dtlsenable',null);this[_0x1cb9('0x4')](_0x1cb9('0x43'),null);this[_0x1cb9('0x4')](_0x1cb9('0x44'),null);this[_0x1cb9('0x4')]('dtlscertfile',null);this['setDataValue']('dtlsprivatekey',null);this[_0x1cb9('0x4')](_0x1cb9('0x45'),'no');break;case 0x2:this[_0x1cb9('0x4')](_0x1cb9('0x20'),_0x1cb9('0x46'));this['setDataValue'](_0x1cb9('0x40'),_0x1cb9('0x29'));this['setDataValue']('avpf',_0x1cb9('0x29'));this['setDataValue'](_0x1cb9('0x47'),_0x1cb9('0x29'));this[_0x1cb9('0x4')](_0x1cb9('0x42'),_0x1cb9('0x29'));this[_0x1cb9('0x4')]('dtlsenable',_0x1cb9('0x29'));this[_0x1cb9('0x4')](_0x1cb9('0x43'),'no');this[_0x1cb9('0x4')]('dtlssetup','actpass');this[_0x1cb9('0x4')](_0x1cb9('0x48'),_0x173db5[_0x1cb9('0x48')]||_0x1cb9('0x49'));this[_0x1cb9('0x4')](_0x1cb9('0x4a'),_0x173db5['dtlsprivatekey']||_0x1cb9('0x4b'));this['setDataValue'](_0x1cb9('0x45'),_0x1cb9('0x29'));break;default:}}},'permissions':{'type':Sequelize['TEXT'],'set':function(_0xf5b006){this[_0x1cb9('0x4')](_0x1cb9('0x4c'),_0xf5b006?_0xf5b006['join'](','):[]);},'get':function(){return this[_0x1cb9('0x12')](_0x1cb9('0x4c'))?_[_0x1cb9('0x4d')](this[_0x1cb9('0x12')](_0x1cb9('0x4c'))[_0x1cb9('0x22')](','),function(_0x5a3f1d){return parseInt(_0x5a3f1d,0xa);}):[];}},'phoneBarUnconditionalNumber':{'type':Sequelize[_0x1cb9('0x3')]},'phoneBarNoReplyNumber':{'type':Sequelize[_0x1cb9('0x3')]},'phoneBarBusyNumber':{'type':Sequelize[_0x1cb9('0x3')]},'phoneBarUnconditional':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'phoneBarNoReply':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'phoneBarBusy':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'phoneBarDnd':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':!![]},'phoneBarUnansweredCallBadge':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':!![]},'phoneBarEnableDtmfTone':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarAutoAnswerDelay':{'type':Sequelize[_0x1cb9('0xf')],'defaultValue':0x0},'extensionMonitor':{'type':Sequelize[_0x1cb9('0x3')],'defaultValue':''},'crudPermissions':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'rtcp_mux':{'type':Sequelize[_0x1cb9('0xb')]('yes','no'),'defaultValue':'no'},'allowmessenger':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':!![]},'phoneBarOutboundProxy':{'type':Sequelize['STRING']},'phoneBarEnableJaws':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarEnableScreenRecordingByAgent':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'phoneBarEnableVideoRecording':{'type':Sequelize[_0x1cb9('0x4e')],'get':function(){return this['getDataValue'](_0x1cb9('0x4f'))?this['getDataValue'](_0x1cb9('0x4f')):![];}},'phoneBarEnableAutomaticScreenRecording':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'phoneBarPrefixRequired':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'hotdesk':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'interface':{'type':Sequelize['STRING'],'defaultValue':null},'privacyEnabled':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'apiKeyNonce':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'apiKeyIat':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'screenrecording':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![],'set':function(_0x4f8d74){if(typeof _0x4f8d74===_0x1cb9('0x50')){var _0x4cb014=_0x4f8d74==='1'?!![]:_0x4f8d74==='0'?![]:_0x4f8d74===_0x1cb9('0x51')?!![]:_0x4f8d74===_0x1cb9('0x52')?![]:![];this[_0x1cb9('0x4')](_0x1cb9('0x53'),_0x4cb014);}else{this[_0x1cb9('0x4')](_0x1cb9('0x53'),_0x4f8d74);}}},'blocked':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'set':function(_0x3db146){this[_0x1cb9('0x4')]('blocked',_0x3db146);if(_0x3db146===!![]){this[_0x1cb9('0x4')](_0x1cb9('0x54'),moment());this[_0x1cb9('0x4')](_0x1cb9('0x55'),0x0);}else{this[_0x1cb9('0x4')](_0x1cb9('0x54'),null);}}},'blockedAt':{'type':Sequelize[_0x1cb9('0x14')],'defaultValue':null},'loginAttempts':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'disabled':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'settingsEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'wssPort':{'type':Sequelize[_0x1cb9('0xf')](0x5)[_0x1cb9('0x56')],'defaultValue':0x1f99},'downloadAttachments':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':!![]},'ignorePauseForPreviewCalls':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'selectRecallMeCampaign':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'adSsoEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'chatAutoanswer':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'chatAutoanswerDelay':{'type':Sequelize[_0x1cb9('0xf')],'defaultValue':0x0},'emailAutoanswer':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'emailAutoanswerDelay':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'smsAutoanswer':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'smsAutoanswerDelay':{'type':Sequelize[_0x1cb9('0xf')],'defaultValue':0x0},'openchannelAutoanswer':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'openchannelAutoanswerDelay':{'type':Sequelize[_0x1cb9('0xf')],'defaultValue':0x0},'faxAutoanswer':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'faxAutoanswerDelay':{'type':Sequelize[_0x1cb9('0xf')],'defaultValue':0x0},'whatsappAutoanswer':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'whatsappAutoanswerDelay':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 8c447e4..cc3374a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc00b=['oldPassword','Sequelize','authenticate','Wrong\x20credentials','newPassword','ValidationError','New\x20password\x20must\x20be\x20different\x20from\x20old\x20password','Invalid\x20body\x20format.\x20Use\x20newPassword','findOne','passwordHistoryLimit','previousPasswords','validatePasswordHistory','addQueues','channel','online','loginInPause','voicePause','interface','isValidChannel','Unknown\x20channel','penalty','spread','capitalize','QueueId','emit','toLowerCase','Queue:save','voice','VoiceQueue','get','format','SIP/%s','UserVoiceQueueRt','upsert','removeQueues','remove','Queues','isArray','Queue:remove','addAvatar','file','filename','getAvatar','join','root','server/files/images/logos/default_profile.png','userpic','existsSync','server/files/images/','download','getOpenTabs','mail','ChatOpenTabs','CHAT','createdAt','FaxOpenTabs','FAX','OpenchannelOpenTabs','OPENCHANNEL','MAIL','SMS','WhatsappOpenTabs','WHATSAPP','getContacts','User\x20with\x20id\x20%s\x20not\x20found','hasOwnProperty','includeAll','Tags','tag','getQueues','Queue','order','sort','filters','pick','Unknown\x20role','nolimit','getVoiceQueuesRt','getGroups','ChatGroup','getRecordings','VoiceRecording','UserId','getScreenRecordings','ScreenRecording','getChatInteractions','ChatInteraction','getOpenchannelInteractions','OpenchannelInteraction','MailInteraction','getSmsInteractions','SmsInteraction','getFaxInteractions','FaxInteraction','getWhatsappInteractions','WhatsappInteraction','login','phone','mobile','LOCAL/%s@from-sip/n','intrf','user:%s','connection','remoteAddress','socket','User\x20not\x20found\x20or\x20not\x20allowed\x20to\x20perform\x20login\x20method','getVoiceQueues','UserVoiceQueue.penalty','YYYY-MM-DD\x20HH:mm:ss','forEach','device','MemberReport','concat','LOGININPAUSE','isMiddleware','resolve','logout','QueuePause','PAUSE','updateAttributes','getChannels','type','DEFAULT\x20PAUSE','Channel\x20parameter\x20%s\x20is\x20invalid','mailPause','faxPause','whatsappPause','lastPauseAt','getTeams','Team','addTeams','Body\x20parameter\x20\x27ids\x27\x20is\x20required','transaction','getAssociatedQueues','flattenDeep','addAgent','getDataValue','Voice','TeamVoicePrefix','UserVoicePrefix','removeTeams','Query\x20parameter\x20\x27ids\x27\x20is\x20required','removeAgent','VoicePrefixId','getLists','CmList','getAgents','addChatInteractions','removeChatInteractions','user_has_chat_interactions:remove','addMailInteractions','user_has_mail_interactions:save','removeMailInteractions','user_has_mail_interactions:remove','addFaxInteractions','removeFaxInteractions','user_has_fax_interactions:remove','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','getVoicePrefixes','VoicePrefix','getFaxAccounts','addFaxAccounts','removeFaxAccounts','getMailAccounts','MailAccount','addMailAccounts','removeMailAccounts','getOpenchannelAccounts','addOpenchannelAccounts','removeOpenchannelAccounts','getSmsAccounts','SmsAccount','removeSmsAccounts','getChatWebsites','addChatWebsites','removeChatWebsites','getWhatsappAccounts','addWhatsappAccounts','removeWhatsappAccounts','getScheduledCalls','CmHopper','$and','$or','$gt','$gte','$lt','$eq','$not','$notBetween','$in','$notIn','$like','$notLike','$iLike','$notILike','$overlap','$contains','$contained','firstName','lastName','CmContact','retrieveApiKey','No\x20API\x20access\x20key\x20found!','You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.','createApiKey','generateApiKey','nonce','token','removeApiKey','apiKeyIat','whoami','getUserSetting','getPresence','teams','queues','isEmpty','inbound','flatten','col','toString','asc','desc','substring','uniqBy','orderBy','request','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','offline','pause','idle','unknown','ringing','voiceStatus','busy','slice','field','ui.','InteractionId','ui.createdAt','user_has_','_interactions','moment','util','path','lodash','squel','jayson/promise','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../errors/api','APINotFoundError','handleError','../../mysqldb','socket.io-emitter','redis','./user.socket','localhost','client','http','then','info','User,\x20%s,\x20%s','debug','User,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','sendStatus','status','offset','undefined','limit','count','Content-Range','json','update','role','userNotification:recalc:','destroy','admin','Users','user','agent','Telephones','ignore','map','value','includes','find','name','UserProfileResource','end','stack','send','index','User','rawAttributes','fieldName','key','filter','password','salt','getOptions','where','query','include','userSetting','UserSetting','attributes','push','findAll','rows','openTabs','true','length','chat','dataValues','fax','openchannel','whatsapp','all','catch','params','model','differenceBy','keys','intersection','fields','merge','options','sms','body','describe','addContacts','omit','ids','internal','Setting','findById','securePassword','validatePasswordPattern','isNil','min_internal','sequelize','select\x20(select\x20IFNULL(max(internal)+1,1)\x20from\x20users\x20where\x20internal\x20<\x20md.internal)\x20as\x20\x27from\x27,\x20md.internal\x20-\x201\x20as\x20\x27to\x27\x20from\x20users\x20md\x20where\x20md.internal\x20!=\x201\x20and\x20not\x20exists\x20(select\x201\x20from\x20users\x20md2\x20where\x20md2.internal\x20=\x20md.internal\x20-\x201)','QueryTypes','SELECT','from','voicemail','mailbox','VoiceMail','fullname','email','permissions','102','103','113','104','105','106','107','108','100','114','115','Unauthorized','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20another\x20administrator','settingsEnabled','create','UserProfileSection','Agents','userProfileId','bulkCreate','some','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20administrator','autoAssociation','telephone','compact'];(function(_0x49af85,_0x271143){var _0x4cb3eb=function(_0x2308e5){while(--_0x2308e5){_0x49af85['push'](_0x49af85['shift']());}};_0x4cb3eb(++_0x271143);}(_0xc00b,0xfa));var _0xbc00=function(_0x471a85,_0x239e8d){_0x471a85=_0x471a85-0x0;var _0x5f2039=_0xc00b[_0x471a85];return _0x5f2039;};'use strict';var moment=require(_0xbc00('0x0'));var util=require(_0xbc00('0x1'));var path=require(_0xbc00('0x2'));var fs=require('fs');var _=require(_0xbc00('0x3'));var squel=require(_0xbc00('0x4'));var jayson=require(_0xbc00('0x5'));var Redis=require(_0xbc00('0x6'));var authService=require(_0xbc00('0x7'));var contacts=require('../../components/contacts');var qs=require(_0xbc00('0x8'));var logger=require(_0xbc00('0x9'))(_0xbc00('0xa'));var utils=require(_0xbc00('0xb'));var config=require(_0xbc00('0xc'));var licenseUtil=require(_0xbc00('0xd'));var APIBadRequestError=require(_0xbc00('0xe'))['APIBadRequestError'];var APINotFoundError=require(_0xbc00('0xe'))[_0xbc00('0xf')];var APIHandleError=require(_0xbc00('0xe'))[_0xbc00('0x10')];var db=require(_0xbc00('0x11'))['db'];var socket=require(_0xbc00('0x12'))(new Redis(config[_0xbc00('0x13')]));require(_0xbc00('0x14'))['register'](socket);config[_0xbc00('0x13')]=_['defaults'](config[_0xbc00('0x13')],{'host':_0xbc00('0x15'),'port':0x18eb});var amiClient=jayson[_0xbc00('0x16')][_0xbc00('0x17')]({'port':0x232a});var values;function respondWithRpcPromise(_0x21961d,_0x57e01e,_0x1b92de,_0x31ac4a){return new Promise(function(_0x2688de,_0x1a97b2){var _0xbed913=_0x31ac4a||amiClient;return _0xbed913['request'](_0x21961d,_0x1b92de)[_0xbc00('0x18')](function(_0x23b782){logger[_0xbc00('0x19')](_0xbc00('0x1a'),_0x57e01e,'request\x20sent');logger[_0xbc00('0x1b')](_0xbc00('0x1c'),_0x57e01e,_0xbc00('0x1d'),JSON[_0xbc00('0x1e')](_0x23b782));if(_0x23b782[_0xbc00('0x1f')]){if(_0x23b782[_0xbc00('0x1f')]['code']===0x1f4){logger[_0xbc00('0x1f')](_0xbc00('0x1a'),_0x57e01e,_0x23b782[_0xbc00('0x1f')][_0xbc00('0x20')]);return _0x1a97b2(_0x23b782[_0xbc00('0x1f')][_0xbc00('0x20')]);}logger[_0xbc00('0x1f')]('User,\x20%s,\x20%s',_0x57e01e,_0x23b782[_0xbc00('0x1f')][_0xbc00('0x20')]);return _0x2688de(_0x23b782['error']['message']);}else{logger[_0xbc00('0x19')](_0xbc00('0x1a'),_0x57e01e,_0xbc00('0x1d'));_0x2688de(_0x23b782[_0xbc00('0x21')]['message']);}})['catch'](function(_0x14344e){logger['error'](_0xbc00('0x1a'),_0x57e01e,_0x14344e);_0x1a97b2(_0x14344e);});});}function respondWithStatusCode(_0x2a45d6,_0x1d0c96){_0x1d0c96=_0x1d0c96||0xcc;return function(_0x1018fa){if(_0x1018fa){return _0x2a45d6[_0xbc00('0x22')](_0x1d0c96);}return _0x2a45d6[_0xbc00('0x23')](_0x1d0c96)['end']();};}function respondWithResult(_0x1815d0,_0x154a30){_0x154a30=_0x154a30||0xc8;return function(_0x425f4c){if(_0x425f4c){return _0x1815d0[_0xbc00('0x23')](_0x154a30)['json'](_0x425f4c);}};}function respondWithFilteredResult(_0x204147,_0x2fd358){return function(_0x10e533){if(_0x10e533){var _0x104f72=typeof _0x2fd358[_0xbc00('0x24')]===_0xbc00('0x25')&&typeof _0x2fd358[_0xbc00('0x26')]===_0xbc00('0x25');var _0x320b7c=_0x10e533[_0xbc00('0x27')];var _0x15f90d=_0x104f72?0x0:_0x2fd358[_0xbc00('0x24')];var _0x2666ce=_0x104f72?_0x10e533[_0xbc00('0x27')]:_0x2fd358['offset']+_0x2fd358['limit'];var _0x3d33fa;if(_0x2666ce>=_0x320b7c){_0x2666ce=_0x320b7c;_0x3d33fa=0xc8;}else{_0x3d33fa=0xce;}_0x204147[_0xbc00('0x23')](_0x3d33fa);return _0x204147['set'](_0xbc00('0x28'),_0x15f90d+'-'+_0x2666ce+'/'+_0x320b7c)[_0xbc00('0x29')](_0x10e533);}return null;};}function saveUpdates(_0x494485){return function(_0x4f09da){if(_0x4f09da){return _0x4f09da[_0xbc00('0x2a')](_0x494485)[_0xbc00('0x18')](function(_0x58b7ee){if(_0x58b7ee[_0xbc00('0x2b')]==='agent'){socket['emit'](_0xbc00('0x2c')+_0x58b7ee['id'],_0x58b7ee);}return _0x58b7ee;});}return null;};}function removeEntity(_0x2ecd71){return function(_0x12fbe7){if(_0x12fbe7){return _0x12fbe7[_0xbc00('0x2d')]()['then'](function(){var _0x3c69f4=_0x12fbe7['get']({'plain':!![]});if(_0x3c69f4[_0xbc00('0x2b')]===_0xbc00('0x2e'))return;var _0x1e4f9d=[{'name':_0xbc00('0x2f'),'value':_0xbc00('0x30'),'ignore':!![]},{'name':'Agents','value':_0xbc00('0x31'),'ignore':![]},{'name':_0xbc00('0x32'),'value':'telephone','ignore':![]}];var _0x2601a2=_(_0x1e4f9d)['filter'](_0xbc00('0x33'))[_0xbc00('0x34')]('value')[_0xbc00('0x35')]();if(_[_0xbc00('0x36')](_0x2601a2,_0x3c69f4[_0xbc00('0x2b')])){return;}var _0x3dd1ac=_[_0xbc00('0x37')](_0x1e4f9d,[_0xbc00('0x35'),_0x3c69f4['role']])[_0xbc00('0x38')];return db[_0xbc00('0x39')][_0xbc00('0x2d')]({'where':{'type':_0x3dd1ac,'resourceId':_0x3c69f4['id']}})[_0xbc00('0x18')](function(){return _0x12fbe7;});})[_0xbc00('0x18')](function(){_0x2ecd71[_0xbc00('0x23')](0xcc)[_0xbc00('0x3a')]();});}};}function handleEntityNotFound(_0x155910){return function(_0x169759){if(!_0x169759){_0x155910[_0xbc00('0x22')](0x194);}return _0x169759;};}function handleError(_0x31e706,_0xb2618b){_0xb2618b=_0xb2618b||0x1f4;return function(_0x84b053){logger['error'](_0x84b053[_0xbc00('0x3b')]);if(_0x84b053[_0xbc00('0x38')]){delete _0x84b053[_0xbc00('0x38')];}_0x31e706[_0xbc00('0x23')](_0xb2618b)[_0xbc00('0x3c')](_0x84b053);};}exports[_0xbc00('0x3d')]=function(_0x2733bf,_0x355006){var _0xb6f5ae={},_0x593b76={'count':0x0,'rows':[]};var _0x470a51=_(db[_0xbc00('0x3e')][_0xbc00('0x3f')])['map'](function(_0x2501f6){return{'name':_0x2501f6[_0xbc00('0x40')],'type':_0x2501f6['type'][_0xbc00('0x41')]};})[_0xbc00('0x42')](function(_0x149351){return!_['includes']([_0xbc00('0x43'),_0xbc00('0x44')],_0x149351[_0xbc00('0x38')]);})[_0xbc00('0x35')]();_0xb6f5ae=qs[_0xbc00('0x45')](_0x470a51,_0x2733bf);var _0x3b77f0={'where':_0xb6f5ae[_0xbc00('0x46')]};return db[_0xbc00('0x3e')][_0xbc00('0x27')](_0x3b77f0)[_0xbc00('0x18')](function(_0x336a67){_0x593b76[_0xbc00('0x27')]=_0x336a67;if(_0x2733bf[_0xbc00('0x47')]['includeAll']){_0xb6f5ae[_0xbc00('0x48')]=[{'all':!![]}];}if(_0x2733bf[_0xbc00('0x47')][_0xbc00('0x49')]==='true'){_0xb6f5ae['include']=[{'model':db[_0xbc00('0x4a')],'as':_0xbc00('0x49')}];}if(!_[_0xbc00('0x36')](_0xb6f5ae[_0xbc00('0x4b')],'id')){_0xb6f5ae[_0xbc00('0x4b')][_0xbc00('0x4c')]('id');}return db[_0xbc00('0x3e')][_0xbc00('0x4d')](_0xb6f5ae);})[_0xbc00('0x18')](function(_0x1a8462){_0x593b76[_0xbc00('0x4e')]=_0x1a8462;if(_0x2733bf[_0xbc00('0x47')][_0xbc00('0x4f')]===_0xbc00('0x50')){var _0x504247=[];for(var _0x58ee0f=0x0;_0x58ee0f<_0x593b76['rows'][_0xbc00('0x51')];_0x58ee0f++){_0x504247['push'](get_open_tabs(_0xbc00('0x52'),_0x593b76[_0xbc00('0x4e')][_0x58ee0f]['dataValues']));_0x504247[_0xbc00('0x4c')](get_open_tabs('sms',_0x593b76['rows'][_0x58ee0f][_0xbc00('0x53')]));_0x504247[_0xbc00('0x4c')](get_open_tabs(_0xbc00('0x54'),_0x593b76['rows'][_0x58ee0f][_0xbc00('0x53')]));_0x504247[_0xbc00('0x4c')](get_open_tabs('mail',_0x593b76[_0xbc00('0x4e')][_0x58ee0f][_0xbc00('0x53')]));_0x504247[_0xbc00('0x4c')](get_open_tabs(_0xbc00('0x55'),_0x593b76[_0xbc00('0x4e')][_0x58ee0f][_0xbc00('0x53')]));_0x504247[_0xbc00('0x4c')](get_open_tabs(_0xbc00('0x56'),_0x593b76['rows'][_0x58ee0f]['dataValues']));}return Promise[_0xbc00('0x57')](_0x504247)[_0xbc00('0x18')](function(){return _0x593b76;});}else{return _0x593b76;}})[_0xbc00('0x18')](respondWithFilteredResult(_0x355006,_0xb6f5ae))[_0xbc00('0x58')](handleError(_0x355006,null));};exports['show']=function(_0x3860af,_0x43955e){var _0x27a876={'raw':![],'where':{'id':_0x3860af[_0xbc00('0x59')]['id']}},_0x6e7c6c={};_0x6e7c6c[_0xbc00('0x5a')]=_[_0xbc00('0x5b')](_[_0xbc00('0x5c')](db[_0xbc00('0x3e')][_0xbc00('0x3f')]),[_0xbc00('0x43'),'salt']);_0x6e7c6c['query']=_[_0xbc00('0x5c')](_0x3860af['query']);_0x6e7c6c['filters']=_[_0xbc00('0x5d')](_0x6e7c6c[_0xbc00('0x5a')],_0x6e7c6c['query']);_0x27a876[_0xbc00('0x4b')]=_[_0xbc00('0x5d')](_0x6e7c6c[_0xbc00('0x5a')],qs[_0xbc00('0x5e')](_0x3860af[_0xbc00('0x47')][_0xbc00('0x5e')]));_0x27a876['attributes']=_0x27a876[_0xbc00('0x4b')][_0xbc00('0x51')]?_0x27a876[_0xbc00('0x4b')]:_0x6e7c6c[_0xbc00('0x5a')];if(_0x3860af[_0xbc00('0x47')]['includeAll']){_0x27a876[_0xbc00('0x48')]=[{'all':!![]}];}if(_0x3860af['query'][_0xbc00('0x49')]===_0xbc00('0x50')){_0x27a876['include']=[{'model':db['UserSetting'],'as':_0xbc00('0x49')}];}_0x27a876=_[_0xbc00('0x5f')]({},_0x27a876,_0x3860af[_0xbc00('0x60')]);if(!_[_0xbc00('0x36')](_0x27a876[_0xbc00('0x4b')],'id')){_0x27a876[_0xbc00('0x4b')]['push']('id');}return db['User'][_0xbc00('0x37')](_0x27a876)[_0xbc00('0x18')](handleEntityNotFound(_0x43955e,null))[_0xbc00('0x18')](function(_0x42f503){var _0x66deda=[];values=_0x42f503;if(_0x3860af[_0xbc00('0x47')][_0xbc00('0x4f')]===_0xbc00('0x50')){_0x66deda[_0xbc00('0x4c')](get_open_tabs(_0xbc00('0x52'),_0x42f503[_0xbc00('0x53')]));_0x66deda[_0xbc00('0x4c')](get_open_tabs(_0xbc00('0x61'),_0x42f503[_0xbc00('0x53')]));_0x66deda[_0xbc00('0x4c')](get_open_tabs(_0xbc00('0x55'),_0x42f503[_0xbc00('0x53')]));_0x66deda[_0xbc00('0x4c')](get_open_tabs(_0xbc00('0x56'),_0x42f503[_0xbc00('0x53')]));_0x66deda[_0xbc00('0x4c')](get_open_tabs('fax',_0x42f503[_0xbc00('0x53')]));_0x66deda[_0xbc00('0x4c')](get_open_tabs('mail',_0x42f503[_0xbc00('0x53')]));return Promise['all'](_0x66deda);}else{return values;}})['then'](function(){return values;})[_0xbc00('0x18')](respondWithResult(_0x43955e,null))[_0xbc00('0x58')](handleError(_0x43955e,null));};exports['update']=function(_0x525d0c,_0x99c570){if(_0x525d0c[_0xbc00('0x62')]['id']){delete _0x525d0c[_0xbc00('0x62')]['id'];}delete _0x525d0c[_0xbc00('0x62')][_0xbc00('0x2b')];return db['User']['find']({'where':{'id':_0x525d0c[_0xbc00('0x59')]['id']}})[_0xbc00('0x18')](handleEntityNotFound(_0x99c570,null))[_0xbc00('0x18')](saveUpdates(_0x525d0c[_0xbc00('0x62')],null))[_0xbc00('0x18')](respondWithResult(_0x99c570,null))[_0xbc00('0x58')](handleError(_0x99c570,null));};exports[_0xbc00('0x63')]=function(_0x5bc43f,_0x2a3cbd){return db[_0xbc00('0x3e')][_0xbc00('0x63')]()['then'](respondWithResult(_0x2a3cbd,null))['catch'](handleError(_0x2a3cbd,null));};exports[_0xbc00('0x64')]=function(_0x1538aa,_0x1de5bd){return db[_0xbc00('0x3e')][_0xbc00('0x37')]({'where':{'id':_0x1538aa['params']['id']}})['then'](handleEntityNotFound(_0x1de5bd,null))[_0xbc00('0x18')](function(_0x52be69){if(_0x52be69){return _0x52be69[_0xbc00('0x64')](_0x1538aa['body']['ids'],_[_0xbc00('0x65')](_0x1538aa[_0xbc00('0x62')],[_0xbc00('0x66'),'id'])||{});}})[_0xbc00('0x18')](respondWithResult(_0x1de5bd,null))[_0xbc00('0x58')](handleError(_0x1de5bd,null));};function validateUser(_0x4a70ba){return new Promise(function(_0x1440ca,_0x35a38b){if(_0x4a70ba[_0xbc00('0x67')])return _0x1440ca(_0x4a70ba);return db[_0xbc00('0x68')][_0xbc00('0x69')](0x1)['then'](function(_0x545c11){if(_0x545c11[_0xbc00('0x6a')])authService[_0xbc00('0x6b')](_0x4a70ba[_0xbc00('0x43')]);db['User']['max']('internal')[_0xbc00('0x18')](function(_0x4582e9){if(_[_0xbc00('0x6c')](_0x4582e9)){_0x4a70ba[_0xbc00('0x67')]=_0x545c11[_0xbc00('0x6d')]||0x1;return;}if(_[_0xbc00('0x6c')](_0x545c11[_0xbc00('0x6d')])||_0x545c11[_0xbc00('0x6d')]===_0x4582e9){_0x4a70ba[_0xbc00('0x67')]=_0x4582e9+0x1;return;}if(_0x545c11[_0xbc00('0x6d')]>_0x4582e9){_0x4a70ba[_0xbc00('0x67')]=_0x545c11[_0xbc00('0x6d')];return;}return db[_0xbc00('0x6e')][_0xbc00('0x47')](_0xbc00('0x6f'),{'type':db[_0xbc00('0x6e')][_0xbc00('0x70')][_0xbc00('0x71')]})[_0xbc00('0x18')](function(_0x11f2c9){if(_0x11f2c9&&_0x11f2c9[_0xbc00('0x51')]){for(var _0x205bb5=0x0,_0x3f8848=_0x11f2c9[_0xbc00('0x51')];_0x205bb5<_0x3f8848&&_[_0xbc00('0x6c')](_0x4a70ba[_0xbc00('0x67')]);_0x205bb5++){if(_0x545c11['min_internal']<=_0x11f2c9[_0x205bb5][_0xbc00('0x72')]){_0x4a70ba[_0xbc00('0x67')]=_0x11f2c9[_0x205bb5][_0xbc00('0x72')];}else if(_0x545c11['min_internal']>_0x11f2c9[_0x205bb5][_0xbc00('0x72')]&&_0x545c11[_0xbc00('0x6d')]<=_0x11f2c9[_0x205bb5]['to']){_0x4a70ba[_0xbc00('0x67')]=_0x545c11[_0xbc00('0x6d')];}}}if(_[_0xbc00('0x6c')](_0x4a70ba[_0xbc00('0x67')])){_0x4a70ba[_0xbc00('0x67')]=_0x4582e9+0x1;}return _0x1440ca(_0x4a70ba);});});})[_0xbc00('0x58')](function(_0x3fca1c){_0x35a38b(_0x3fca1c);});});}function updateUser(_0x35a926){return new Promise(function(_0xada52f,_0x56b356){try{if(_0x35a926[_0xbc00('0x73')]){_0x35a926[_0xbc00('0x74')]=_0x35a926[_0xbc00('0x67')];_0x35a926[_0xbc00('0x75')]={'mailbox':_0x35a926['internal'],'password':_0x35a926[_0xbc00('0x43')],'fullname':_0x35a926[_0xbc00('0x76')],'email':_0x35a926[_0xbc00('0x77')]};}if(_0x35a926[_0xbc00('0x2b')]===_0xbc00('0x31')){if(!_0x35a926[_0xbc00('0x78')])_0x35a926[_0xbc00('0x78')]=['101',_0xbc00('0x79'),_0xbc00('0x7a'),_0xbc00('0x7b'),'110',_0xbc00('0x7c'),_0xbc00('0x7d'),_0xbc00('0x7e'),_0xbc00('0x7f'),_0xbc00('0x80'),'109',_0xbc00('0x81'),'111',_0xbc00('0x82'),_0xbc00('0x83')];}_0xada52f(_0x35a926);}catch(_0x8333dd){_0x56b356(_0x8333dd);}});}exports['create']=function(_0xb4839e,_0x4648d2){if(_0xb4839e[_0xbc00('0x30')][_0xbc00('0x2b')]===_0xbc00('0x31'))throw new Error(_0xbc00('0x84'));if(_0xb4839e[_0xbc00('0x62')][_0xbc00('0x2b')]===_0xbc00('0x30')&&_0xb4839e[_0xbc00('0x30')][_0xbc00('0x2b')]!==_0xbc00('0x2e')){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user');}if(_0xb4839e[_0xbc00('0x62')][_0xbc00('0x2b')]===_0xbc00('0x2e')&&_0xb4839e[_0xbc00('0x30')][_0xbc00('0x2b')]!==_0xbc00('0x2e')){throw new Error(_0xbc00('0x85'));}return licenseUtil['checkUserLimits']([_0xb4839e[_0xbc00('0x62')]])[_0xbc00('0x18')](function(){return validateUser(_0xb4839e[_0xbc00('0x62')]);})[_0xbc00('0x18')](function(_0x3b1674){return updateUser(_0x3b1674)['then'](function(_0x5a349c){if(_0x5a349c['role']==='admin'){_0x5a349c[_0xbc00('0x86')]=_0xb4839e[_0xbc00('0x30')][_0xbc00('0x86')];delete _0x5a349c['userProfileId'];}return _0x5a349c;});})[_0xbc00('0x18')](function(_0x14537d){return db[_0xbc00('0x3e')][_0xbc00('0x87')](_0x14537d,{'include':[{'model':db[_0xbc00('0x75')],'as':'VoiceMail'}]});})[_0xbc00('0x18')](function(_0x3fb319){if(_0xb4839e[_0xbc00('0x62')][_0xbc00('0x2b')]==='user')return _0x3fb319;if(_0xb4839e[_0xbc00('0x30')]['role']!==_0xbc00('0x30'))return _0x3fb319;return db[_0xbc00('0x88')][_0xbc00('0x37')]({'where':{'name':_0x3fb319[_0xbc00('0x2b')]===_0xbc00('0x31')?_0xbc00('0x89'):_0xbc00('0x32'),'userProfileId':_0xb4839e[_0xbc00('0x30')][_0xbc00('0x8a')]},'raw':!![]})['then'](function(_0x2bc2a5){if(!_0x2bc2a5||_0x2bc2a5['autoAssociation']!=0x0)return _0x3fb319;return db['UserProfileResource']['create']({'name':_0x3fb319[_0xbc00('0x38')],'resourceId':_0x3fb319['id'],'type':_0x2bc2a5[_0xbc00('0x38')],'sectionId':_0x2bc2a5['id']},{})[_0xbc00('0x18')](function(){return _0x3fb319;});})['catch'](function(_0x349f5f){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x349f5f);throw _0x349f5f;});})[_0xbc00('0x18')](respondWithResult(_0x4648d2,0xc9))['catch'](handleError(_0x4648d2,null));};exports[_0xbc00('0x8b')]=function(_0x11e585,_0xa5e23d){var _0x262ed3=_0x11e585[_0xbc00('0x62')];var _0x308633=[];if(_0x11e585[_0xbc00('0x30')][_0xbc00('0x2b')]===_0xbc00('0x31'))throw new Error('Unauthorized');if(_[_0xbc00('0x8c')](_0x262ed3,[_0xbc00('0x2b'),_0xbc00('0x30')])&&_0x11e585['user'][_0xbc00('0x2b')]!=='admin'){throw new Error(_0xbc00('0x8d'));}if(_[_0xbc00('0x8c')](_0x262ed3,['role','admin'])&&_0x11e585[_0xbc00('0x30')][_0xbc00('0x2b')]!==_0xbc00('0x2e')){throw new Error(_0xbc00('0x8e'));}return licenseUtil['checkUserLimits'](_0x262ed3)['then'](function(){return validateUser(_0x262ed3[0x0]);})[_0xbc00('0x18')](function(){for(var _0x5ac063=0x1;_0x5ac063<_0x262ed3['length'];_0x5ac063++){var _0x20fdd5=_0x262ed3[_0x5ac063-0x1][_0xbc00('0x67')];if(!_0x262ed3[_0x5ac063]['internal'])_0x262ed3[_0x5ac063][_0xbc00('0x67')]=_0x20fdd5+0x1;_0x308633['push'](validateUser(_0x262ed3[_0x5ac063]));}return Promise[_0xbc00('0x57')](_0x308633);})[_0xbc00('0x18')](function(){_0x308633=[];for(var _0x3283eb=0x0;_0x3283eb<_0x262ed3[_0xbc00('0x51')];_0x3283eb++){_0x308633['push'](updateUser(_0x262ed3[_0x3283eb]));}return Promise[_0xbc00('0x57')](_0x308633);})[_0xbc00('0x18')](function(){_0x308633=_0x262ed3[_0xbc00('0x34')](function(_0x85703d){return db[_0xbc00('0x3e')][_0xbc00('0x87')](_0x85703d,{'include':[{'model':db[_0xbc00('0x75')],'as':'VoiceMail'}]})[_0xbc00('0x18')](function(_0x50969a){_0x85703d['id']=_0x50969a['id'];return _0x85703d;});});return Promise[_0xbc00('0x57')](_0x308633);})[_0xbc00('0x18')](function(_0x2d194e){if(_0x11e585[_0xbc00('0x62')][_0xbc00('0x2b')]==='user')return _0x2d194e;if(_0x11e585[_0xbc00('0x30')]['role']!==_0xbc00('0x30'))return _0x2d194e;var _0x691f0b=_['some'](_0x2d194e,function(_0x7d73b7){return _0x7d73b7[_0xbc00('0x2b')]===_0xbc00('0x31')||_0x7d73b7[_0xbc00('0x2b')]==='telephone';});if(!_0x691f0b)return _0x2d194e;return db['UserProfileSection']['findAll']({'where':{'name':{'$or':[_0xbc00('0x89'),_0xbc00('0x32')]},'userProfileId':_0x11e585[_0xbc00('0x30')][_0xbc00('0x8a')]},'raw':!![]})[_0xbc00('0x18')](function(_0x593729){if(_['isEmpty'](_0x593729)||!_['some'](_0x593729,['autoAssociation',0x0]))return _0x2d194e;_0x308633=[];var _0xed3ef7=_(_0x593729)['map'](function(_0xfae7dd){if(_0xfae7dd[_0xbc00('0x8f')]===0x1)return;return _0xfae7dd[_0xbc00('0x38')]==='Agents'?_0xbc00('0x31'):_0xbc00('0x90');})[_0xbc00('0x91')]()[_0xbc00('0x35')]();for(var _0x1d4efa=0x0;_0x1d4efa<_0x2d194e['length'];_0x1d4efa++){if(!_['includes'](_0xed3ef7,_0x2d194e[_0x1d4efa]['role']))return;var _0xaeea98=_0x2d194e[_0x1d4efa][_0xbc00('0x2b')]===_0xbc00('0x31')?'Agents':_0xbc00('0x32');_0x308633['push'](db[_0xbc00('0x39')]['create']({'name':_0x2d194e[_0x1d4efa][_0xbc00('0x38')],'resourceId':_0x2d194e[_0x1d4efa]['id'],'type':_0xaeea98,'sectionId':_[_0xbc00('0x37')](_0x593729,[_0xbc00('0x38'),_0xaeea98])['id']},{}));}return Promise[_0xbc00('0x57')](_0x308633);});})[_0xbc00('0x18')](respondWithResult(_0xa5e23d,0xc9))[_0xbc00('0x58')](handleError(_0xa5e23d,null));};exports['changePassword']=function(_0xd45b3b,_0x3a694b){if(_0xd45b3b['body']['id']){delete _0xd45b3b[_0xbc00('0x62')]['id'];}return db[_0xbc00('0x3e')][_0xbc00('0x37')]({'where':{'id':_0xd45b3b[_0xbc00('0x59')]['id']}})[_0xbc00('0x18')](function(_0x4a87f7){if(!_0x4a87f7)return null;if(_0x4a87f7['id']===_0xd45b3b[_0xbc00('0x30')]['id']){if(!_0xd45b3b[_0xbc00('0x62')][_0xbc00('0x92')]||!_0xd45b3b['body']['newPassword']){throw new db[(_0xbc00('0x93'))]['ValidationError']('Invalid\x20body\x20format.\x20Use\x20oldPassword\x20and\x20newPassword');}if(!_0x4a87f7[_0xbc00('0x94')](_0xd45b3b[_0xbc00('0x62')][_0xbc00('0x92')])){throw new db[(_0xbc00('0x93'))]['ValidationError'](_0xbc00('0x95'));}if(_0xd45b3b[_0xbc00('0x62')][_0xbc00('0x92')]===_0xd45b3b['body'][_0xbc00('0x96')]){throw new db[(_0xbc00('0x93'))][(_0xbc00('0x97'))](_0xbc00('0x98'));}}else if(_0xd45b3b[_0xbc00('0x30')]['role']===_0xbc00('0x2e')){if(!_0xd45b3b['body']['newPassword']){throw new db[(_0xbc00('0x93'))]['ValidationError']('Invalid\x20body\x20format.\x20Use\x20newPassword');}}else if(_0xd45b3b[_0xbc00('0x30')][_0xbc00('0x2b')]===_0xbc00('0x30')){if(!_0xd45b3b['body'][_0xbc00('0x96')]){throw new db['Sequelize'][(_0xbc00('0x97'))](_0xbc00('0x99'));}if(_0x4a87f7[_0xbc00('0x2b')]!==_0xbc00('0x31')){throw new db[(_0xbc00('0x93'))][(_0xbc00('0x97'))]('Unauthorized');}}else{throw new db[(_0xbc00('0x93'))][(_0xbc00('0x97'))](_0xbc00('0x84'));}return _0x4a87f7;})[_0xbc00('0x18')](handleEntityNotFound(_0x3a694b,null))[_0xbc00('0x18')](function(_0x275f32){return db['Setting'][_0xbc00('0x9a')]({'attributes':['id',_0xbc00('0x6a'),'enforcePasswordHistory',_0xbc00('0x9b')]})[_0xbc00('0x18')](function(_0x5b8831){if(_0x5b8831[_0xbc00('0x6a')])authService['validatePasswordPattern'](_0xd45b3b[_0xbc00('0x62')][_0xbc00('0x96')]);if(!_0x5b8831['enforcePasswordHistory']||!_0x275f32[_0xbc00('0x9c')])return _0x275f32;authService[_0xbc00('0x9d')](_0xd45b3b[_0xbc00('0x62')][_0xbc00('0x96')],_0x275f32[_0xbc00('0x9c')],_0x5b8831[_0xbc00('0x9b')]);return _0x275f32;})[_0xbc00('0x18')](saveUpdates({'password':_0xd45b3b[_0xbc00('0x62')][_0xbc00('0x96')],'passwordResetAt':_0xd45b3b[_0xbc00('0x30')]['id']==_0xd45b3b[_0xbc00('0x59')]['id']?moment():null,'previousPasswords':authService['updatePasswordsHistory'](_0xd45b3b[_0xbc00('0x62')]['newPassword'],_0x275f32['previousPasswords'])},null));})[_0xbc00('0x18')](respondWithResult(_0x3a694b,null))['catch'](handleError(_0x3a694b,null));};exports[_0xbc00('0x9e')]=function(_0x38ec05,_0x253cb5){var _0x523478=_0x38ec05[_0xbc00('0x62')][_0xbc00('0x9f')];return db[_0xbc00('0x3e')][_0xbc00('0x37')]({'where':{'id':_0x38ec05[_0xbc00('0x59')]['id']},'attributes':['id',_0xbc00('0x38'),'role',_0xbc00('0xa0'),_0xbc00('0xa1'),_0xbc00('0xa2'),_0xbc00('0xa3')]})[_0xbc00('0x18')](handleEntityNotFound(_0x253cb5,null))[_0xbc00('0x18')](function(_0x450343){if(_0x450343){if(!utils[_0xbc00('0xa4')](_0x523478)){throw new db[(_0xbc00('0x93'))][(_0xbc00('0x97'))](_0xbc00('0xa5'));}return _0x450343['add'+_['capitalize'](_0x523478['toLowerCase']())+'Queues'](_0x38ec05[_0xbc00('0x62')]['ids'],{'penalty':_0x38ec05[_0xbc00('0x62')][_0xbc00('0xa6')]||0x0})[_0xbc00('0xa7')](function(_0x353d8d){for(var _0x3a37ef=0x0;_0x3a37ef<_0x38ec05['body']['ids'][_0xbc00('0x51')];_0x3a37ef+=0x1){var _0x4d5f42={'UserId':Number(_0x38ec05[_0xbc00('0x59')]['id'])};_0x4d5f42[_[_0xbc00('0xa8')](_0x523478['toLowerCase']())+_0xbc00('0xa9')]=Number(_0x38ec05[_0xbc00('0x62')][_0xbc00('0x66')][_0x3a37ef]);socket[_0xbc00('0xaa')](_0xbc00('0x30')+_[_0xbc00('0xa8')](_0x523478[_0xbc00('0xab')]())+_0xbc00('0xac'),_0x4d5f42);}return _0x353d8d;})[_0xbc00('0x18')](function(){if(_0x523478===_0xbc00('0xad')){return db[_0xbc00('0xae')][_0xbc00('0x4d')]({'where':{'id':_0x38ec05[_0xbc00('0x62')]['ids']||[]},'raw':!![],'attributes':['id','name']});}})['then'](function(_0x318597){var _0x5cfe79=_0x450343[_0xbc00('0xaf')]({'plain':!![]});var _0x4416ef=[];if(_0x523478===_0xbc00('0xad')&&_0x5cfe79[_0xbc00('0x2b')]===_0xbc00('0x31')&&_0x5cfe79['online']){for(let _0x3cfcb8=0x0;_0x3cfcb8<_0x318597[_0xbc00('0x51')];_0x3cfcb8+=0x1){_0x4416ef[_0xbc00('0x4c')]({'membername':_0x5cfe79[_0xbc00('0x38')],'UserId':_0x5cfe79['id'],'queue_name':_0x318597[_0x3cfcb8][_0xbc00('0x38')],'VoiceQueueId':_0x318597[_0x3cfcb8]['id'],'interface':_[_0xbc00('0x6c')](_0x5cfe79['interface'])?util[_0xbc00('0xb0')](_0xbc00('0xb1'),_0x5cfe79[_0xbc00('0x38')]):_0x5cfe79[_0xbc00('0xa3')],'paused':_0x5cfe79[_0xbc00('0xa2')]||![],'penalty':_0x38ec05[_0xbc00('0x62')][_0xbc00('0xa6')]||0x0});}return Promise['all'](_0x4416ef['map'](function(_0x322a89){return db[_0xbc00('0xb2')][_0xbc00('0xb3')](_0x322a89);}));}return _0x450343;});}})[_0xbc00('0x18')](respondWithStatusCode(_0x253cb5,null))[_0xbc00('0x58')](handleError(_0x253cb5,null));};exports[_0xbc00('0xb4')]=function(_0x2abcd9,_0x53f256){var _0x1fd171,_0x3a0d26;return db[_0xbc00('0x3e')][_0xbc00('0x37')]({'where':{'id':_0x2abcd9['params']['id']},'attributes':['id',_0xbc00('0x38'),'role']})['then'](handleEntityNotFound(_0x53f256,null))[_0xbc00('0x18')](function(_0x185a45){if(_0x185a45){_0x1fd171=_0x185a45;if(!_0x2abcd9[_0xbc00('0x47')][_0xbc00('0x9f')]||!utils[_0xbc00('0xa4')](_0x2abcd9[_0xbc00('0x47')][_0xbc00('0x9f')])){throw new db[(_0xbc00('0x93'))][(_0xbc00('0x97'))](_0xbc00('0xa5'));}return _0x185a45[_0xbc00('0xb5')+_[_0xbc00('0xa8')](_0x2abcd9[_0xbc00('0x47')]['channel'][_0xbc00('0xab')]())+_0xbc00('0xb6')](_0x2abcd9[_0xbc00('0x47')][_0xbc00('0x66')]);}})[_0xbc00('0x18')](function(_0x163878){if(_[_0xbc00('0xb7')](_0x2abcd9[_0xbc00('0x47')][_0xbc00('0x66')])){for(var _0x49fd05=0x0;_0x49fd05<_0x2abcd9[_0xbc00('0x47')]['ids'][_0xbc00('0x51')];_0x49fd05+=0x1){_0x3a0d26={'UserId':Number(_0x2abcd9[_0xbc00('0x59')]['id'])};_0x3a0d26[_[_0xbc00('0xa8')](_0x2abcd9[_0xbc00('0x47')][_0xbc00('0x9f')][_0xbc00('0xab')]())+_0xbc00('0xa9')]=Number(_0x2abcd9[_0xbc00('0x47')]['ids'][_0x49fd05]);socket['emit'](_0xbc00('0x30')+_[_0xbc00('0xa8')](_0x2abcd9[_0xbc00('0x47')]['channel'][_0xbc00('0xab')]())+'Queue:remove',_0x3a0d26);}}else{_0x3a0d26={'UserId':Number(_0x2abcd9['params']['id'])};_0x3a0d26[_['capitalize'](_0x2abcd9[_0xbc00('0x47')][_0xbc00('0x9f')]['toLowerCase']())+'QueueId']=Number(_0x2abcd9['query']['ids']);socket[_0xbc00('0xaa')]('user'+_[_0xbc00('0xa8')](_0x2abcd9[_0xbc00('0x47')][_0xbc00('0x9f')][_0xbc00('0xab')]())+_0xbc00('0xb8'),_0x3a0d26);}return _0x163878;})['then'](function(){if(_0x2abcd9[_0xbc00('0x47')][_0xbc00('0x9f')]==='voice'){return db[_0xbc00('0xb2')][_0xbc00('0x2d')]({'where':{'UserId':_0x2abcd9[_0xbc00('0x59')]['id'],'VoiceQueueId':_0x2abcd9[_0xbc00('0x47')][_0xbc00('0x66')]},'individualHooks':!![]})[_0xbc00('0x18')](function(){return _0x1fd171;});}return _0x1fd171;})[_0xbc00('0x18')](respondWithStatusCode(_0x53f256,null))[_0xbc00('0x58')](handleError(_0x53f256,null));};exports[_0xbc00('0xb9')]=function(_0x52be3a,_0x1fb59e){_0x52be3a[_0xbc00('0x62')]['userpic']=_0x52be3a[_0xbc00('0xba')][_0xbc00('0xbb')];return db[_0xbc00('0x3e')][_0xbc00('0x37')]({'where':{'id':_0x52be3a[_0xbc00('0x59')]['id']}})[_0xbc00('0x18')](handleEntityNotFound(_0x1fb59e,null))['then'](saveUpdates(_0x52be3a[_0xbc00('0x62')],null))[_0xbc00('0x18')](respondWithResult(_0x1fb59e,null))[_0xbc00('0x58')](handleError(_0x1fb59e,null));};exports[_0xbc00('0xbc')]=function(_0x2c852e,_0x5dc602){var _0x4018bd=path[_0xbc00('0xbd')](config[_0xbc00('0xbe')],_0xbc00('0xbf'));return db[_0xbc00('0x3e')][_0xbc00('0x37')]({'where':{'id':_0x2c852e['params']['id']},'attributes':['id',_0xbc00('0xc0')],'raw':!![]})['then'](handleEntityNotFound(_0x5dc602,null))[_0xbc00('0x18')](function(_0x150675){if(_0x150675){if(_[_0xbc00('0x6c')](_0x150675[_0xbc00('0xc0')])){return _0x5dc602['download'](_0x4018bd);}else{if(!fs[_0xbc00('0xc1')](path[_0xbc00('0xbd')](config['root'],_0xbc00('0xc2'),_0x150675[_0xbc00('0xc0')]))){return _0x5dc602[_0xbc00('0xc3')](_0x4018bd);}return _0x5dc602[_0xbc00('0xc3')](path[_0xbc00('0xbd')](config[_0xbc00('0xbe')],'server/files/images/',_0x150675[_0xbc00('0xc0')]));}}})[_0xbc00('0x58')](handleError(_0x5dc602,null));};exports[_0xbc00('0xc4')]=function(_0x2ce376,_0xbfff8e){return db[_0xbc00('0x3e')][_0xbc00('0x37')]({'where':{'id':_0x2ce376[_0xbc00('0x59')]['id']},'attributes':['id']})[_0xbc00('0x18')](handleEntityNotFound(_0xbfff8e,null))[_0xbc00('0x18')](function(_0x8f35ad){var _0x11ae83=[];values=_0x8f35ad[_0xbc00('0x53')];_0x11ae83[_0xbc00('0x4c')](get_open_tabs(_0xbc00('0x52'),_0x8f35ad[_0xbc00('0x53')]));_0x11ae83[_0xbc00('0x4c')](get_open_tabs(_0xbc00('0x61'),_0x8f35ad[_0xbc00('0x53')]));_0x11ae83[_0xbc00('0x4c')](get_open_tabs('openchannel',_0x8f35ad[_0xbc00('0x53')]));_0x11ae83[_0xbc00('0x4c')](get_open_tabs(_0xbc00('0x56'),_0x8f35ad[_0xbc00('0x53')]));_0x11ae83[_0xbc00('0x4c')](get_open_tabs(_0xbc00('0x54'),_0x8f35ad['dataValues']));_0x11ae83[_0xbc00('0x4c')](get_open_tabs(_0xbc00('0xc5'),_0x8f35ad[_0xbc00('0x53')]));return Promise[_0xbc00('0x57')](_0x11ae83);})['then'](function(_0x56f688){if(_0x56f688){var _0x4486bd=_[_0xbc00('0x34')](values[_0xbc00('0xc6')],function(_0x4813a7){return{'channel':_0xbc00('0xc7'),'id':_0x4813a7['id'],'createdAt':_0x4813a7[_0xbc00('0xc8')]};});var _0x274481=_[_0xbc00('0x34')](values[_0xbc00('0xc9')],function(_0x5381e9){return{'channel':_0xbc00('0xca'),'id':_0x5381e9['id'],'createdAt':_0x5381e9[_0xbc00('0xc8')]};});var _0x44fcef=_[_0xbc00('0x34')](values[_0xbc00('0xcb')],function(_0x4ce182){return{'channel':_0xbc00('0xcc'),'id':_0x4ce182['id'],'createdAt':_0x4ce182['createdAt']};});var _0x4ed261=_[_0xbc00('0x34')](values['MailOpenTabs'],function(_0x4f8cee){return{'channel':_0xbc00('0xcd'),'id':_0x4f8cee['id'],'createdAt':_0x4f8cee[_0xbc00('0xc8')]};});var _0xfcbdde=_['map'](values['SmsOpenTabs'],function(_0x590c77){return{'channel':_0xbc00('0xce'),'id':_0x590c77['id'],'createdAt':_0x590c77['createdAt']};});var _0x5bc2de=_[_0xbc00('0x34')](values[_0xbc00('0xcf')],function(_0x34e6dc){return{'channel':_0xbc00('0xd0'),'id':_0x34e6dc['id'],'createdAt':_0x34e6dc[_0xbc00('0xc8')]};});var _0x504bc8=_['concat'](_0x4486bd,_0x274481,_0x44fcef,_0x4ed261,_0xfcbdde,_0x5bc2de);var _0x14ff2f={'count':_0x504bc8[_0xbc00('0x51')],'rows':_0x504bc8};return _0x14ff2f;}else return null;})[_0xbc00('0x18')](respondWithResult(_0xbfff8e,null))['catch'](handleError(_0xbfff8e,null));};exports[_0xbc00('0xd1')]=function(_0x278332,_0x3d540b){var _0xdffdd7={};return db[_0xbc00('0x3e')]['findOne']({'where':{'id':_0x278332[_0xbc00('0x59')]['id']}})[_0xbc00('0x18')](function(_0x5c1297){if(!_0x5c1297){throw new APINotFoundError(util[_0xbc00('0xb0')](_0xbc00('0xd2'),_0x278332[_0xbc00('0x59')]['id']));}return contacts['describe']();})[_0xbc00('0x18')](function(_0x4f198f){_0x278332['query'][_0xbc00('0x3e')]=_0x278332[_0xbc00('0x59')]['id'];_0xdffdd7=qs[_0xbc00('0x45')](_0x4f198f,_0x278332);if(_0x278332[_0xbc00('0x47')][_0xbc00('0xd3')](_0xbc00('0xd4'))){_0xdffdd7[_0xbc00('0x48')]=[{'model':db['CmList'],'as':'List','required':![]},{'model':db['Tag'],'as':_0xbc00('0xd5'),'attributes':['id',_0xbc00('0x38'),'color'],'where':_0x278332[_0xbc00('0x47')]['tag']?{'id':_0x278332[_0xbc00('0x47')][_0xbc00('0xd6')]}:undefined,'required':_0x278332[_0xbc00('0x47')][_0xbc00('0xd6')]?!![]:![]}];}return contacts[_0xbc00('0x4d')](_0x278332[_0xbc00('0x47')],_0x278332['user'],_0xdffdd7,_0x4f198f);})[_0xbc00('0x18')](respondWithFilteredResult(_0x3d540b,_0xdffdd7))[_0xbc00('0x58')](APIHandleError(_0x3d540b));};exports[_0xbc00('0xd7')]=function(_0x5b1c8a,_0x47606a){var _0x1b9056;var _0x230e39={};var _0x58608c;return db['User']['findOne']({'where':{'id':_0x5b1c8a[_0xbc00('0x59')]['id']},'attributes':['id',_0xbc00('0x38'),_0xbc00('0x2b')]})['then'](handleEntityNotFound(_0x47606a,null))[_0xbc00('0x18')](function(_0x4ebdcd){if(!utils[_0xbc00('0xa4')](_0x5b1c8a[_0xbc00('0x47')]['channel'])){throw new db[(_0xbc00('0x93'))][(_0xbc00('0x97'))](_0xbc00('0xa5'));}_0x1b9056=_0x4ebdcd;var _0x5d1582={};_0x5d1582['model']=_[_0xbc00('0x5c')](db[_[_0xbc00('0xa8')](_0x5b1c8a[_0xbc00('0x47')][_0xbc00('0x9f')])+_0xbc00('0xd8')][_0xbc00('0x3f')]);_0x5d1582[_0xbc00('0x47')]=_['keys'](_0x5b1c8a[_0xbc00('0x47')]);_0x5d1582['filters']=_['intersection'](_0x5d1582[_0xbc00('0x5a')],_0x5d1582['query']);_0x230e39[_0xbc00('0x4b')]=_[_0xbc00('0x5d')](_0x5d1582[_0xbc00('0x5a')],qs[_0xbc00('0x5e')](_0x5b1c8a[_0xbc00('0x47')][_0xbc00('0x5e')]));_0x230e39[_0xbc00('0x4b')]=_0x230e39['attributes'][_0xbc00('0x51')]?_0x230e39[_0xbc00('0x4b')]:_0x5d1582[_0xbc00('0x5a')];_0x230e39[_0xbc00('0xd9')]=qs[_0xbc00('0xda')](_0x5b1c8a['query'][_0xbc00('0xda')]);_0x230e39[_0xbc00('0x46')]=qs[_0xbc00('0xdb')](_[_0xbc00('0xdc')](_0x5b1c8a[_0xbc00('0x47')],_0x5d1582['filters']));if(_0x5b1c8a[_0xbc00('0x47')][_0xbc00('0x42')]){_0x230e39[_0xbc00('0x46')]=_['merge'](_0x230e39['where'],{'$or':_[_0xbc00('0x34')](_0x230e39[_0xbc00('0x4b')],function(_0x5d87ca){var _0x44c6e8={};_0x44c6e8[_0x5d87ca]={'$like':'%'+_0x5b1c8a[_0xbc00('0x47')]['filter']+'%'};return _0x44c6e8;})});}_0x230e39=_[_0xbc00('0x5f')]({},_0x230e39,_0x5b1c8a[_0xbc00('0x60')]);switch(_0x1b9056[_0xbc00('0x2b')]){case _0xbc00('0x2e'):return db[_[_0xbc00('0xa8')](_0x5b1c8a[_0xbc00('0x47')]['channel'])+_0xbc00('0xd8')][_0xbc00('0x4d')](_0x230e39);case _0xbc00('0x30'):case _0xbc00('0x31'):return _0x1b9056[_0xbc00('0xaf')+_[_0xbc00('0xa8')](_0x5b1c8a[_0xbc00('0x47')][_0xbc00('0x9f')])+'Queues'](_0x230e39);default:throw new db[(_0xbc00('0x93'))][(_0xbc00('0x97'))](_0xbc00('0xdd'));}})[_0xbc00('0x18')](function(_0x4c75fb){_0x58608c=_0x4c75fb['length'];if(!_0x5b1c8a[_0xbc00('0x47')]['hasOwnProperty'](_0xbc00('0xde'))){_0x230e39[_0xbc00('0x26')]=qs[_0xbc00('0x26')](_0x5b1c8a['query'][_0xbc00('0x26')]);_0x230e39['offset']=qs[_0xbc00('0x24')](_0x5b1c8a[_0xbc00('0x47')][_0xbc00('0x24')]);}switch(_0x1b9056['role']){case _0xbc00('0x2e'):return db[_[_0xbc00('0xa8')](_0x5b1c8a['query'][_0xbc00('0x9f')])+_0xbc00('0xd8')][_0xbc00('0x4d')](_0x230e39);case _0xbc00('0x30'):case _0xbc00('0x31'):return _0x1b9056['get'+_[_0xbc00('0xa8')](_0x5b1c8a[_0xbc00('0x47')]['channel'])+'Queues'](_0x230e39);}})[_0xbc00('0x18')](function(_0x47fffd){return{'count':_0x58608c,'rows':_0x47fffd};})[_0xbc00('0x18')](respondWithResult(_0x47606a,null))[_0xbc00('0x58')](handleError(_0x47606a,null));};exports[_0xbc00('0xdf')]=function(_0x2c5090,_0x2df41c){var _0x109b1c={};var _0x8a2f80={};var _0x247d20;var _0x37e6c6;return db[_0xbc00('0x3e')][_0xbc00('0x9a')]({'where':{'id':_0x2c5090[_0xbc00('0x59')]['id']}})['then'](handleEntityNotFound(_0x2df41c,null))[_0xbc00('0x18')](function(_0x4d8f46){if(_0x4d8f46){_0x247d20=_0x4d8f46;_0x8a2f80[_0xbc00('0x5a')]=_[_0xbc00('0x5c')](db['UserVoiceQueueRt']['rawAttributes']);_0x8a2f80[_0xbc00('0x47')]=_[_0xbc00('0x5c')](_0x2c5090[_0xbc00('0x47')]);_0x8a2f80[_0xbc00('0xdb')]=_[_0xbc00('0x5d')](_0x8a2f80[_0xbc00('0x5a')],_0x8a2f80[_0xbc00('0x47')]);_0x109b1c['attributes']=_[_0xbc00('0x5d')](_0x8a2f80[_0xbc00('0x5a')],qs[_0xbc00('0x5e')](_0x2c5090[_0xbc00('0x47')]['fields']));_0x109b1c[_0xbc00('0x4b')]=_0x109b1c[_0xbc00('0x4b')][_0xbc00('0x51')]?_0x109b1c[_0xbc00('0x4b')]:_0x8a2f80[_0xbc00('0x5a')];_0x109b1c['order']=qs['sort'](_0x2c5090[_0xbc00('0x47')][_0xbc00('0xda')]);_0x109b1c[_0xbc00('0x46')]=qs['filters'](_['pick'](_0x2c5090[_0xbc00('0x47')],_0x8a2f80['filters']));if(_0x2c5090[_0xbc00('0x47')][_0xbc00('0x42')]){_0x109b1c[_0xbc00('0x46')]=_['merge'](_0x109b1c['where'],{'$or':_[_0xbc00('0x34')](_0x109b1c[_0xbc00('0x4b')],function(_0x573957){var _0x5c6cc6={};_0x5c6cc6[_0x573957]={'$like':'%'+_0x2c5090['query'][_0xbc00('0x42')]+'%'};return _0x5c6cc6;})});}_0x109b1c=_[_0xbc00('0x5f')]({},_0x109b1c,_0x2c5090[_0xbc00('0x60')]);return _0x247d20[_0xbc00('0xdf')](_0x109b1c);}})['then'](function(_0x1c75b5){if(_0x1c75b5){_0x37e6c6=_0x1c75b5[_0xbc00('0x51')];if(!_0x2c5090['query'][_0xbc00('0xd3')](_0xbc00('0xde'))){_0x109b1c[_0xbc00('0x26')]=qs[_0xbc00('0x26')](_0x2c5090[_0xbc00('0x47')][_0xbc00('0x26')]);_0x109b1c[_0xbc00('0x24')]=qs[_0xbc00('0x24')](_0x2c5090[_0xbc00('0x47')][_0xbc00('0x24')]);}return _0x247d20[_0xbc00('0xdf')](_0x109b1c);}})[_0xbc00('0x18')](function(_0x118e13){if(_0x118e13){return _0x118e13?{'count':_0x37e6c6,'rows':_0x118e13}:null;}})[_0xbc00('0x18')](respondWithResult(_0x2df41c,null))[_0xbc00('0x58')](handleError(_0x2df41c,null));};exports[_0xbc00('0xe0')]=function(_0x23368f,_0x34b67b){var _0x118cce={};var _0x29457b={};var _0x6a2d4c;var _0x12cc18;return db[_0xbc00('0x3e')][_0xbc00('0x9a')]({'where':{'id':_0x23368f['params']['id']}})[_0xbc00('0x18')](handleEntityNotFound(_0x34b67b,null))[_0xbc00('0x18')](function(_0x3986bb){if(_0x3986bb){_0x6a2d4c=_0x3986bb;_0x29457b[_0xbc00('0x5a')]=_['keys'](db[_0xbc00('0xe1')][_0xbc00('0x3f')]);_0x29457b[_0xbc00('0x47')]=_['keys'](_0x23368f[_0xbc00('0x47')]);_0x29457b[_0xbc00('0xdb')]=_['intersection'](_0x29457b[_0xbc00('0x5a')],_0x29457b[_0xbc00('0x47')]);_0x118cce[_0xbc00('0x4b')]=_[_0xbc00('0x5d')](_0x29457b['model'],qs[_0xbc00('0x5e')](_0x23368f[_0xbc00('0x47')][_0xbc00('0x5e')]));_0x118cce[_0xbc00('0x4b')]=_0x118cce['attributes'][_0xbc00('0x51')]?_0x118cce['attributes']:_0x29457b['model'];_0x118cce[_0xbc00('0xd9')]=qs[_0xbc00('0xda')](_0x23368f[_0xbc00('0x47')]['sort']);_0x118cce[_0xbc00('0x46')]=qs[_0xbc00('0xdb')](_[_0xbc00('0xdc')](_0x23368f[_0xbc00('0x47')],_0x29457b['filters']));if(_0x23368f[_0xbc00('0x47')][_0xbc00('0x42')]){_0x118cce[_0xbc00('0x46')]=_[_0xbc00('0x5f')](_0x118cce[_0xbc00('0x46')],{'$or':_[_0xbc00('0x34')](_0x118cce[_0xbc00('0x4b')],function(_0x511767){var _0x2acbee={};_0x2acbee[_0x511767]={'$like':'%'+_0x23368f[_0xbc00('0x47')][_0xbc00('0x42')]+'%'};return _0x2acbee;})});}_0x118cce=_[_0xbc00('0x5f')]({},_0x118cce,_0x23368f[_0xbc00('0x60')]);return _0x6a2d4c['getGroups'](_0x118cce);}})[_0xbc00('0x18')](function(_0x301fcc){if(_0x301fcc){_0x12cc18=_0x301fcc['length'];if(!_0x23368f[_0xbc00('0x47')][_0xbc00('0xd3')]('nolimit')){_0x118cce['limit']=qs[_0xbc00('0x26')](_0x23368f['query'][_0xbc00('0x26')]);_0x118cce[_0xbc00('0x24')]=qs[_0xbc00('0x24')](_0x23368f[_0xbc00('0x47')][_0xbc00('0x24')]);}return _0x6a2d4c[_0xbc00('0xe0')](_0x118cce);}})[_0xbc00('0x18')](function(_0x44490b){if(_0x44490b){return _0x44490b?{'count':_0x12cc18,'rows':_0x44490b}:null;}})[_0xbc00('0x18')](respondWithResult(_0x34b67b,null))[_0xbc00('0x58')](handleError(_0x34b67b,null));};exports[_0xbc00('0xe2')]=function(_0x298451,_0x23e034){var _0x5dd949={'raw':!![],'where':{}};var _0x44be11={};var _0x3c0919={'count':0x0,'rows':[]};return db[_0xbc00('0x3e')][_0xbc00('0x9a')]({'where':{'id':_0x298451[_0xbc00('0x59')]['id']}})['then'](handleEntityNotFound(_0x23e034,null))[_0xbc00('0x18')](function(_0x4e2b1c){if(_0x4e2b1c){_0x44be11[_0xbc00('0x5a')]=_['keys'](db[_0xbc00('0xe3')]['rawAttributes']);_0x44be11[_0xbc00('0x47')]=_[_0xbc00('0x5c')](_0x298451['query']);_0x44be11[_0xbc00('0xdb')]=_['intersection'](_0x44be11['model'],_0x44be11[_0xbc00('0x47')]);_0x5dd949[_0xbc00('0x4b')]=_['intersection'](_0x44be11[_0xbc00('0x5a')],qs[_0xbc00('0x5e')](_0x298451[_0xbc00('0x47')][_0xbc00('0x5e')]));_0x5dd949[_0xbc00('0x4b')]=_0x5dd949[_0xbc00('0x4b')]['length']?_0x5dd949[_0xbc00('0x4b')]:_0x44be11[_0xbc00('0x5a')];if(!_0x298451[_0xbc00('0x47')][_0xbc00('0xd3')](_0xbc00('0xde'))){_0x5dd949[_0xbc00('0x26')]=qs['limit'](_0x298451[_0xbc00('0x47')]['limit']);_0x5dd949['offset']=qs['offset'](_0x298451[_0xbc00('0x47')][_0xbc00('0x24')]);}_0x5dd949['order']=qs['sort'](_0x298451[_0xbc00('0x47')][_0xbc00('0xda')]);_0x5dd949[_0xbc00('0x46')]=qs['filters'](_[_0xbc00('0xdc')](_0x298451[_0xbc00('0x47')],_0x44be11[_0xbc00('0xdb')]));_0x5dd949[_0xbc00('0x46')][_0xbc00('0xe4')]=_0x4e2b1c['id'];if(_0x298451[_0xbc00('0x47')][_0xbc00('0x42')]){_0x5dd949[_0xbc00('0x46')]=_[_0xbc00('0x5f')](_0x5dd949[_0xbc00('0x46')],{'$or':_[_0xbc00('0x34')](_0x5dd949[_0xbc00('0x4b')],function(_0x425fda){var _0x40f1fb={};_0x40f1fb[_0x425fda]={'$like':'%'+_0x298451[_0xbc00('0x47')][_0xbc00('0x42')]+'%'};return _0x40f1fb;})});}_0x5dd949=_['merge']({},_0x5dd949,_0x298451[_0xbc00('0x60')]);return db[_0xbc00('0xe3')][_0xbc00('0x27')]({'where':_0x5dd949[_0xbc00('0x46')]})[_0xbc00('0x18')](function(_0xb24c9e){_0x3c0919[_0xbc00('0x27')]=_0xb24c9e;if(_0x298451[_0xbc00('0x47')][_0xbc00('0xd4')]){_0x5dd949[_0xbc00('0x48')]=[{'all':!![]}];}return db[_0xbc00('0xe3')][_0xbc00('0x4d')](_0x5dd949);})['then'](function(_0x3c7625){_0x3c0919[_0xbc00('0x4e')]=_0x3c7625;return _0x3c0919;});}})[_0xbc00('0x18')](respondWithFilteredResult(_0x23e034,_0x5dd949))[_0xbc00('0x58')](handleError(_0x23e034,null));};exports[_0xbc00('0xe5')]=function(_0x2446be,_0x3c3e03){var _0x237f2c={'raw':!![],'where':{}};var _0x5cfca5={};var _0x43dad5={'count':0x0,'rows':[]};return db[_0xbc00('0x3e')][_0xbc00('0x9a')]({'where':{'id':_0x2446be[_0xbc00('0x59')]['id']}})[_0xbc00('0x18')](handleEntityNotFound(_0x3c3e03,null))[_0xbc00('0x18')](function(_0x293511){if(_0x293511){_0x5cfca5['model']=_[_0xbc00('0x5c')](db['ScreenRecording'][_0xbc00('0x3f')]);_0x5cfca5['query']=_[_0xbc00('0x5c')](_0x2446be[_0xbc00('0x47')]);_0x5cfca5[_0xbc00('0xdb')]=_[_0xbc00('0x5d')](_0x5cfca5['model'],_0x5cfca5[_0xbc00('0x47')]);_0x237f2c[_0xbc00('0x4b')]=_[_0xbc00('0x5d')](_0x5cfca5[_0xbc00('0x5a')],qs[_0xbc00('0x5e')](_0x2446be[_0xbc00('0x47')]['fields']));_0x237f2c[_0xbc00('0x4b')]=_0x237f2c[_0xbc00('0x4b')][_0xbc00('0x51')]?_0x237f2c[_0xbc00('0x4b')]:_0x5cfca5[_0xbc00('0x5a')];if(!_0x2446be[_0xbc00('0x47')]['hasOwnProperty'](_0xbc00('0xde'))){_0x237f2c[_0xbc00('0x26')]=qs[_0xbc00('0x26')](_0x2446be['query'][_0xbc00('0x26')]);_0x237f2c[_0xbc00('0x24')]=qs['offset'](_0x2446be[_0xbc00('0x47')][_0xbc00('0x24')]);}_0x237f2c['order']=qs['sort'](_0x2446be[_0xbc00('0x47')][_0xbc00('0xda')]);_0x237f2c[_0xbc00('0x46')]=qs[_0xbc00('0xdb')](_[_0xbc00('0xdc')](_0x2446be[_0xbc00('0x47')],_0x5cfca5[_0xbc00('0xdb')]));_0x237f2c[_0xbc00('0x46')][_0xbc00('0xe4')]=_0x293511['id'];if(_0x2446be[_0xbc00('0x47')][_0xbc00('0x42')]){_0x237f2c[_0xbc00('0x46')]=_['merge'](_0x237f2c['where'],{'$or':_[_0xbc00('0x34')](_0x237f2c[_0xbc00('0x4b')],function(_0x2967aa){var _0x313e7d={};_0x313e7d[_0x2967aa]={'$like':'%'+_0x2446be['query'][_0xbc00('0x42')]+'%'};return _0x313e7d;})});}_0x237f2c=_['merge']({},_0x237f2c,_0x2446be['options']);return db['ScreenRecording'][_0xbc00('0x27')]({'where':_0x237f2c[_0xbc00('0x46')]})[_0xbc00('0x18')](function(_0x7ff952){_0x43dad5[_0xbc00('0x27')]=_0x7ff952;if(_0x2446be[_0xbc00('0x47')]['includeAll']){_0x237f2c[_0xbc00('0x48')]=[{'all':!![]}];}return db[_0xbc00('0xe6')][_0xbc00('0x4d')](_0x237f2c);})['then'](function(_0x11c8c4){_0x43dad5[_0xbc00('0x4e')]=_0x11c8c4;return _0x43dad5;});}})[_0xbc00('0x18')](respondWithFilteredResult(_0x3c3e03,_0x237f2c))[_0xbc00('0x58')](handleError(_0x3c3e03,null));};exports[_0xbc00('0xe7')]=function(_0x56bef0,_0x3cdf5f){var _0x4d115b={};var _0x32918d={};var _0x415e43;var _0x2f7dbf;return db['User'][_0xbc00('0x9a')]({'where':{'id':_0x56bef0['params']['id']}})[_0xbc00('0x18')](handleEntityNotFound(_0x3cdf5f,null))[_0xbc00('0x18')](function(_0x4c2740){if(_0x4c2740){_0x415e43=_0x4c2740;_0x32918d['model']=_[_0xbc00('0x5c')](db[_0xbc00('0xe8')][_0xbc00('0x3f')]);_0x32918d[_0xbc00('0x47')]=_[_0xbc00('0x5c')](_0x56bef0[_0xbc00('0x47')]);_0x32918d[_0xbc00('0xdb')]=_[_0xbc00('0x5d')](_0x32918d[_0xbc00('0x5a')],_0x32918d['query']);_0x4d115b[_0xbc00('0x4b')]=_['intersection'](_0x32918d[_0xbc00('0x5a')],qs[_0xbc00('0x5e')](_0x56bef0[_0xbc00('0x47')][_0xbc00('0x5e')]));_0x4d115b[_0xbc00('0x4b')]=_0x4d115b[_0xbc00('0x4b')]['length']?_0x4d115b['attributes']:_0x32918d[_0xbc00('0x5a')];_0x4d115b[_0xbc00('0xd9')]=qs[_0xbc00('0xda')](_0x56bef0[_0xbc00('0x47')][_0xbc00('0xda')]);_0x4d115b[_0xbc00('0x46')]=qs[_0xbc00('0xdb')](_[_0xbc00('0xdc')](_0x56bef0[_0xbc00('0x47')],_0x32918d[_0xbc00('0xdb')]));if(_0x56bef0[_0xbc00('0x47')][_0xbc00('0x42')]){_0x4d115b[_0xbc00('0x46')]=_[_0xbc00('0x5f')](_0x4d115b[_0xbc00('0x46')],{'$or':_[_0xbc00('0x34')](_0x4d115b[_0xbc00('0x4b')],function(_0x10bf62){var _0x359a1b={};_0x359a1b[_0x10bf62]={'$like':'%'+_0x56bef0[_0xbc00('0x47')]['filter']+'%'};return _0x359a1b;})});}_0x4d115b=_['merge']({},_0x4d115b,_0x56bef0[_0xbc00('0x60')]);return _0x415e43['getChatInteractions'](_0x4d115b);}})[_0xbc00('0x18')](function(_0x18f9a8){if(_0x18f9a8){_0x2f7dbf=_0x18f9a8['length'];if(!_0x56bef0['query'][_0xbc00('0xd3')](_0xbc00('0xde'))){_0x4d115b['limit']=qs[_0xbc00('0x26')](_0x56bef0[_0xbc00('0x47')][_0xbc00('0x26')]);_0x4d115b[_0xbc00('0x24')]=qs['offset'](_0x56bef0[_0xbc00('0x47')][_0xbc00('0x24')]);}return _0x415e43['getChatInteractions'](_0x4d115b);}})[_0xbc00('0x18')](function(_0x2beb12){if(_0x2beb12){return _0x2beb12?{'count':_0x2f7dbf,'rows':_0x2beb12}:null;}})[_0xbc00('0x18')](respondWithResult(_0x3cdf5f,null))[_0xbc00('0x58')](handleError(_0x3cdf5f,null));};exports[_0xbc00('0xe9')]=function(_0x31c74b,_0x233c52){var _0x5e1917={};var _0x3cda3d={};var _0x59877b;var _0x4b7452;return db['User'][_0xbc00('0x9a')]({'where':{'id':_0x31c74b[_0xbc00('0x59')]['id']}})[_0xbc00('0x18')](handleEntityNotFound(_0x233c52,null))[_0xbc00('0x18')](function(_0x3c753b){if(_0x3c753b){_0x59877b=_0x3c753b;_0x3cda3d[_0xbc00('0x5a')]=_[_0xbc00('0x5c')](db[_0xbc00('0xea')]['rawAttributes']);_0x3cda3d['query']=_[_0xbc00('0x5c')](_0x31c74b[_0xbc00('0x47')]);_0x3cda3d[_0xbc00('0xdb')]=_['intersection'](_0x3cda3d[_0xbc00('0x5a')],_0x3cda3d['query']);_0x5e1917['attributes']=_[_0xbc00('0x5d')](_0x3cda3d[_0xbc00('0x5a')],qs['fields'](_0x31c74b['query'][_0xbc00('0x5e')]));_0x5e1917[_0xbc00('0x4b')]=_0x5e1917[_0xbc00('0x4b')][_0xbc00('0x51')]?_0x5e1917['attributes']:_0x3cda3d[_0xbc00('0x5a')];_0x5e1917['order']=qs['sort'](_0x31c74b[_0xbc00('0x47')]['sort']);_0x5e1917['where']=qs['filters'](_[_0xbc00('0xdc')](_0x31c74b[_0xbc00('0x47')],_0x3cda3d[_0xbc00('0xdb')]));if(_0x31c74b[_0xbc00('0x47')]['filter']){_0x5e1917[_0xbc00('0x46')]=_[_0xbc00('0x5f')](_0x5e1917[_0xbc00('0x46')],{'$or':_[_0xbc00('0x34')](_0x5e1917[_0xbc00('0x4b')],function(_0x181fd0){var _0x11761b={};_0x11761b[_0x181fd0]={'$like':'%'+_0x31c74b['query'][_0xbc00('0x42')]+'%'};return _0x11761b;})});}_0x5e1917=_['merge']({},_0x5e1917,_0x31c74b[_0xbc00('0x60')]);return _0x59877b[_0xbc00('0xe9')](_0x5e1917);}})[_0xbc00('0x18')](function(_0x1d36e4){if(_0x1d36e4){_0x4b7452=_0x1d36e4[_0xbc00('0x51')];if(!_0x31c74b[_0xbc00('0x47')][_0xbc00('0xd3')](_0xbc00('0xde'))){_0x5e1917[_0xbc00('0x26')]=qs[_0xbc00('0x26')](_0x31c74b[_0xbc00('0x47')]['limit']);_0x5e1917[_0xbc00('0x24')]=qs[_0xbc00('0x24')](_0x31c74b[_0xbc00('0x47')]['offset']);}return _0x59877b[_0xbc00('0xe9')](_0x5e1917);}})[_0xbc00('0x18')](function(_0x1ad75c){if(_0x1ad75c){return _0x1ad75c?{'count':_0x4b7452,'rows':_0x1ad75c}:null;}})[_0xbc00('0x18')](respondWithResult(_0x233c52,null))[_0xbc00('0x58')](handleError(_0x233c52,null));};exports['getMailInteractions']=function(_0x5d414a,_0x52a14c){var _0x2f15dd={'raw':!![],'where':{}};var _0x1284a7={};var _0x7cc21f={'count':0x0,'rows':[]};return db[_0xbc00('0x3e')]['findOne']({'where':{'id':_0x5d414a[_0xbc00('0x59')]['id']}})[_0xbc00('0x18')](handleEntityNotFound(_0x52a14c,null))[_0xbc00('0x18')](function(_0x3ef0c2){if(_0x3ef0c2){_0x1284a7['model']=_['keys'](db['MailInteraction']['rawAttributes']);_0x1284a7[_0xbc00('0x47')]=_['keys'](_0x5d414a[_0xbc00('0x47')]);_0x1284a7[_0xbc00('0xdb')]=_[_0xbc00('0x5d')](_0x1284a7['model'],_0x1284a7['query']);_0x2f15dd[_0xbc00('0x4b')]=_[_0xbc00('0x5d')](_0x1284a7['model'],qs[_0xbc00('0x5e')](_0x5d414a[_0xbc00('0x47')]['fields']));_0x2f15dd[_0xbc00('0x4b')]=_0x2f15dd[_0xbc00('0x4b')]['length']?_0x2f15dd[_0xbc00('0x4b')]:_0x1284a7[_0xbc00('0x5a')];if(!_0x5d414a[_0xbc00('0x47')][_0xbc00('0xd3')]('nolimit')){_0x2f15dd[_0xbc00('0x26')]=qs[_0xbc00('0x26')](_0x5d414a['query'][_0xbc00('0x26')]);_0x2f15dd['offset']=qs[_0xbc00('0x24')](_0x5d414a['query'][_0xbc00('0x24')]);}_0x2f15dd['order']=qs['sort'](_0x5d414a[_0xbc00('0x47')][_0xbc00('0xda')]);_0x2f15dd[_0xbc00('0x46')]=qs[_0xbc00('0xdb')](_[_0xbc00('0xdc')](_0x5d414a[_0xbc00('0x47')],_0x1284a7['filters']));_0x2f15dd['where']['UserId']=_0x3ef0c2['id'];if(_0x5d414a[_0xbc00('0x47')][_0xbc00('0x42')]){_0x2f15dd['where']=_[_0xbc00('0x5f')](_0x2f15dd['where'],{'$or':_[_0xbc00('0x34')](_0x2f15dd[_0xbc00('0x4b')],function(_0x5f594b){var _0x3df9ed={};_0x3df9ed[_0x5f594b]={'$like':'%'+_0x5d414a[_0xbc00('0x47')]['filter']+'%'};return _0x3df9ed;})});}_0x2f15dd=_[_0xbc00('0x5f')]({},_0x2f15dd,_0x5d414a[_0xbc00('0x60')]);return db[_0xbc00('0xeb')][_0xbc00('0x27')]({'where':_0x2f15dd[_0xbc00('0x46')]})[_0xbc00('0x18')](function(_0x26362a){_0x7cc21f[_0xbc00('0x27')]=_0x26362a;if(_0x5d414a[_0xbc00('0x47')]['includeAll']){_0x2f15dd[_0xbc00('0x48')]=[{'all':!![]}];}return db[_0xbc00('0xeb')][_0xbc00('0x4d')](_0x2f15dd);})[_0xbc00('0x18')](function(_0x57ed14){_0x7cc21f[_0xbc00('0x4e')]=_0x57ed14;return _0x7cc21f;});}})['then'](respondWithFilteredResult(_0x52a14c,_0x2f15dd))[_0xbc00('0x58')](handleError(_0x52a14c,null));};exports[_0xbc00('0xec')]=function(_0x5c126b,_0x5ec464){var _0x1eca68={};var _0xb95d08={};var _0x11072e;var _0x19fc15;return db[_0xbc00('0x3e')][_0xbc00('0x9a')]({'where':{'id':_0x5c126b[_0xbc00('0x59')]['id']}})['then'](handleEntityNotFound(_0x5ec464,null))[_0xbc00('0x18')](function(_0x5df34f){if(_0x5df34f){_0x11072e=_0x5df34f;_0xb95d08[_0xbc00('0x5a')]=_[_0xbc00('0x5c')](db[_0xbc00('0xed')][_0xbc00('0x3f')]);_0xb95d08['query']=_['keys'](_0x5c126b[_0xbc00('0x47')]);_0xb95d08['filters']=_[_0xbc00('0x5d')](_0xb95d08[_0xbc00('0x5a')],_0xb95d08[_0xbc00('0x47')]);_0x1eca68[_0xbc00('0x4b')]=_[_0xbc00('0x5d')](_0xb95d08['model'],qs[_0xbc00('0x5e')](_0x5c126b[_0xbc00('0x47')][_0xbc00('0x5e')]));_0x1eca68['attributes']=_0x1eca68[_0xbc00('0x4b')][_0xbc00('0x51')]?_0x1eca68['attributes']:_0xb95d08[_0xbc00('0x5a')];_0x1eca68[_0xbc00('0xd9')]=qs['sort'](_0x5c126b[_0xbc00('0x47')][_0xbc00('0xda')]);_0x1eca68[_0xbc00('0x46')]=qs[_0xbc00('0xdb')](_[_0xbc00('0xdc')](_0x5c126b[_0xbc00('0x47')],_0xb95d08[_0xbc00('0xdb')]));if(_0x5c126b[_0xbc00('0x47')][_0xbc00('0x42')]){_0x1eca68[_0xbc00('0x46')]=_[_0xbc00('0x5f')](_0x1eca68['where'],{'$or':_[_0xbc00('0x34')](_0x1eca68['attributes'],function(_0x4956b4){var _0x3b8033={};_0x3b8033[_0x4956b4]={'$like':'%'+_0x5c126b[_0xbc00('0x47')]['filter']+'%'};return _0x3b8033;})});}_0x1eca68=_[_0xbc00('0x5f')]({},_0x1eca68,_0x5c126b[_0xbc00('0x60')]);return _0x11072e[_0xbc00('0xec')](_0x1eca68);}})['then'](function(_0x41e60f){if(_0x41e60f){_0x19fc15=_0x41e60f[_0xbc00('0x51')];if(!_0x5c126b['query'][_0xbc00('0xd3')](_0xbc00('0xde'))){_0x1eca68['limit']=qs[_0xbc00('0x26')](_0x5c126b[_0xbc00('0x47')][_0xbc00('0x26')]);_0x1eca68[_0xbc00('0x24')]=qs[_0xbc00('0x24')](_0x5c126b[_0xbc00('0x47')][_0xbc00('0x24')]);}return _0x11072e[_0xbc00('0xec')](_0x1eca68);}})[_0xbc00('0x18')](function(_0x42d6c7){if(_0x42d6c7){return _0x42d6c7?{'count':_0x19fc15,'rows':_0x42d6c7}:null;}})['then'](respondWithResult(_0x5ec464,null))[_0xbc00('0x58')](handleError(_0x5ec464,null));};exports[_0xbc00('0xee')]=function(_0x907308,_0x5fb36a){var _0x17d341={};var _0x46ea0c={};var _0x12f6ee;var _0x4e195d;return db[_0xbc00('0x3e')][_0xbc00('0x9a')]({'where':{'id':_0x907308[_0xbc00('0x59')]['id']}})[_0xbc00('0x18')](handleEntityNotFound(_0x5fb36a,null))[_0xbc00('0x18')](function(_0x6b2969){if(_0x6b2969){_0x12f6ee=_0x6b2969;_0x46ea0c['model']=_[_0xbc00('0x5c')](db[_0xbc00('0xef')]['rawAttributes']);_0x46ea0c[_0xbc00('0x47')]=_['keys'](_0x907308[_0xbc00('0x47')]);_0x46ea0c[_0xbc00('0xdb')]=_[_0xbc00('0x5d')](_0x46ea0c['model'],_0x46ea0c['query']);_0x17d341[_0xbc00('0x4b')]=_[_0xbc00('0x5d')](_0x46ea0c[_0xbc00('0x5a')],qs[_0xbc00('0x5e')](_0x907308[_0xbc00('0x47')]['fields']));_0x17d341[_0xbc00('0x4b')]=_0x17d341['attributes'][_0xbc00('0x51')]?_0x17d341['attributes']:_0x46ea0c[_0xbc00('0x5a')];_0x17d341[_0xbc00('0xd9')]=qs[_0xbc00('0xda')](_0x907308['query']['sort']);_0x17d341[_0xbc00('0x46')]=qs['filters'](_[_0xbc00('0xdc')](_0x907308[_0xbc00('0x47')],_0x46ea0c[_0xbc00('0xdb')]));if(_0x907308[_0xbc00('0x47')][_0xbc00('0x42')]){_0x17d341[_0xbc00('0x46')]=_[_0xbc00('0x5f')](_0x17d341[_0xbc00('0x46')],{'$or':_['map'](_0x17d341['attributes'],function(_0x3d5ace){var _0x3e13d9={};_0x3e13d9[_0x3d5ace]={'$like':'%'+_0x907308[_0xbc00('0x47')][_0xbc00('0x42')]+'%'};return _0x3e13d9;})});}_0x17d341=_[_0xbc00('0x5f')]({},_0x17d341,_0x907308[_0xbc00('0x60')]);return _0x12f6ee['getFaxInteractions'](_0x17d341);}})[_0xbc00('0x18')](function(_0x3a0789){if(_0x3a0789){_0x4e195d=_0x3a0789[_0xbc00('0x51')];if(!_0x907308[_0xbc00('0x47')]['hasOwnProperty'](_0xbc00('0xde'))){_0x17d341[_0xbc00('0x26')]=qs[_0xbc00('0x26')](_0x907308[_0xbc00('0x47')]['limit']);_0x17d341['offset']=qs[_0xbc00('0x24')](_0x907308['query'][_0xbc00('0x24')]);}return _0x12f6ee['getFaxInteractions'](_0x17d341);}})['then'](function(_0x1d7062){if(_0x1d7062){return _0x1d7062?{'count':_0x4e195d,'rows':_0x1d7062}:null;}})[_0xbc00('0x18')](respondWithResult(_0x5fb36a,null))[_0xbc00('0x58')](handleError(_0x5fb36a,null));};exports[_0xbc00('0xf0')]=function(_0x1774ba,_0x166efb){var _0x2857b5={};var _0x252181={};var _0x10a552;var _0x4788fb;return db['User'][_0xbc00('0x9a')]({'where':{'id':_0x1774ba[_0xbc00('0x59')]['id']}})[_0xbc00('0x18')](handleEntityNotFound(_0x166efb,null))[_0xbc00('0x18')](function(_0x1534ce){if(_0x1534ce){_0x10a552=_0x1534ce;_0x252181[_0xbc00('0x5a')]=_[_0xbc00('0x5c')](db[_0xbc00('0xf1')][_0xbc00('0x3f')]);_0x252181[_0xbc00('0x47')]=_['keys'](_0x1774ba['query']);_0x252181[_0xbc00('0xdb')]=_['intersection'](_0x252181[_0xbc00('0x5a')],_0x252181[_0xbc00('0x47')]);_0x2857b5[_0xbc00('0x4b')]=_[_0xbc00('0x5d')](_0x252181[_0xbc00('0x5a')],qs[_0xbc00('0x5e')](_0x1774ba[_0xbc00('0x47')][_0xbc00('0x5e')]));_0x2857b5[_0xbc00('0x4b')]=_0x2857b5['attributes'][_0xbc00('0x51')]?_0x2857b5[_0xbc00('0x4b')]:_0x252181[_0xbc00('0x5a')];_0x2857b5[_0xbc00('0xd9')]=qs[_0xbc00('0xda')](_0x1774ba[_0xbc00('0x47')][_0xbc00('0xda')]);_0x2857b5[_0xbc00('0x46')]=qs[_0xbc00('0xdb')](_[_0xbc00('0xdc')](_0x1774ba[_0xbc00('0x47')],_0x252181['filters']));if(_0x1774ba[_0xbc00('0x47')][_0xbc00('0x42')]){_0x2857b5['where']=_['merge'](_0x2857b5[_0xbc00('0x46')],{'$or':_[_0xbc00('0x34')](_0x2857b5[_0xbc00('0x4b')],function(_0x19c26b){var _0x43ed82={};_0x43ed82[_0x19c26b]={'$like':'%'+_0x1774ba[_0xbc00('0x47')]['filter']+'%'};return _0x43ed82;})});}_0x2857b5=_[_0xbc00('0x5f')]({},_0x2857b5,_0x1774ba[_0xbc00('0x60')]);return _0x10a552['getWhatsappInteractions'](_0x2857b5);}})[_0xbc00('0x18')](function(_0x513cf3){if(_0x513cf3){_0x4788fb=_0x513cf3[_0xbc00('0x51')];if(!_0x1774ba[_0xbc00('0x47')]['hasOwnProperty'](_0xbc00('0xde'))){_0x2857b5['limit']=qs[_0xbc00('0x26')](_0x1774ba[_0xbc00('0x47')][_0xbc00('0x26')]);_0x2857b5[_0xbc00('0x24')]=qs[_0xbc00('0x24')](_0x1774ba[_0xbc00('0x47')][_0xbc00('0x24')]);}return _0x10a552[_0xbc00('0xf0')](_0x2857b5);}})[_0xbc00('0x18')](function(_0x3dba9c){if(_0x3dba9c){return _0x3dba9c?{'count':_0x4788fb,'rows':_0x3dba9c}:null;}})[_0xbc00('0x18')](respondWithResult(_0x166efb,null))['catch'](handleError(_0x166efb,null));};exports[_0xbc00('0xf2')]=function(_0xa6b179,_0x4eb0ca,_0x46bfec){var _0x5832f4;var _0x4bef2b;var _0x4e1c72;var _0x1198e5=!_[_0xbc00('0x6c')](_0xa6b179['params']['id'])?_0xa6b179['params']['id']:!_[_0xbc00('0x6c')](_0xa6b179['user']['id'])?_0xa6b179[_0xbc00('0x30')]['id']:null;return db[_0xbc00('0x3e')][_0xbc00('0x37')]({'where':{'id':_0x1198e5,'role':{'$or':[_0xbc00('0x2e'),'user',_0xbc00('0x31')]}},'attributes':['id',_0xbc00('0x38'),_0xbc00('0xf3'),_0xbc00('0xf4'),'role',_0xbc00('0x67'),_0xbc00('0xa1')]})[_0xbc00('0x18')](function(_0x3bed6e){if(_0x3bed6e){if(_0x3bed6e['role']===_0xbc00('0x31')){_0x5832f4=_0x3bed6e;if(_0xa6b179[_0xbc00('0x62')][_0xbc00('0xa3')]){_0x4e1c72=util[_0xbc00('0xb0')](_0xbc00('0xf5'),_0x5832f4[_0xa6b179[_0xbc00('0x62')][_0xbc00('0xa3')]]);}else if(_0xa6b179[_0xbc00('0x62')][_0xbc00('0xf6')]){_0x4e1c72=util[_0xbc00('0xb0')](_0xbc00('0xb1'),_0xa6b179[_0xbc00('0x62')]['intrf']);}else{_0x4e1c72=util['format'](_0xbc00('0xb1'),_0x5832f4[_0xbc00('0x38')]);}socket['to'](util['format'](_0xbc00('0xf7'),_0x5832f4[_0xbc00('0x38')]))['emit']('user:forcelogout',{'user':{'id':_0x5832f4['id'],'name':_0x5832f4[_0xbc00('0x38')]},'ip':_0xa6b179['headers']['x-forwarded-for']||_0xa6b179[_0xbc00('0xf8')][_0xbc00('0xf9')]||_0xa6b179[_0xbc00('0xfa')][_0xbc00('0xf9')]||_0xa6b179[_0xbc00('0xf8')][_0xbc00('0xfa')][_0xbc00('0xf9')]});return db['UserVoiceQueueRt'][_0xbc00('0x2d')]({'where':{'membername':_0x5832f4['name']},'individualHooks':!![]});}}else{throw new db[(_0xbc00('0x93'))][(_0xbc00('0x97'))](_0xbc00('0xfb'));}})[_0xbc00('0x18')](function(){if(_0x5832f4){return _0x5832f4[_0xbc00('0xfc')]({'raw':!![]});}})[_0xbc00('0x18')](function(_0x3c017e){if(_0x5832f4){if(_0x3c017e){_0x4bef2b=_0x3c017e;if(_0x4bef2b[_0xbc00('0x51')]){var _0x13ec30=_0x4bef2b['map'](function(_0xd936c0){var _0x10defc={'membername':_0x5832f4['name'],'UserId':_0x5832f4['id'],'queue_name':_0xd936c0[_0xbc00('0x38')],'VoiceQueueId':_0xd936c0['id'],'interface':_0x4e1c72,'paused':_0x5832f4[_0xbc00('0xa1')]||![],'penalty':_0xd936c0[_0xbc00('0xfd')]||0x0};return db[_0xbc00('0xb2')][_0xbc00('0xb3')](_0x10defc);});return Promise['all'](_0x13ec30);}}}})[_0xbc00('0x18')](function(){if(_0x5832f4){return db['MemberReport'][_0xbc00('0x4d')]({'where':{'membername':_0x5832f4[_0xbc00('0x38')],'exitAt':null}});}})['then'](function(_0xf3486){if(_0x5832f4){var _0x56bdfa=[];_0xf3486['forEach'](function(_0x32994d){_0x56bdfa[_0xbc00('0x4c')](_0x32994d['update']({'exitAt':moment()[_0xbc00('0xb0')]('YYYY-MM-DD\x20HH:mm:ss')}));});return Promise[_0xbc00('0x57')](_0x56bdfa);}})['then'](function(){if(_0x5832f4){var _0x269fb2=[];var _0x703865=[];var _0x5d272f=utils['getChannels']();var _0x1786ac={'membername':_0x5832f4[_0xbc00('0x38')],'interface':_0x4e1c72,'enterAt':moment()[_0xbc00('0xb0')](_0xbc00('0xfe')),'role':_0x5832f4[_0xbc00('0x2b')],'internal':_0x5832f4['internal']};_0x5d272f[_0xbc00('0xff')](function(_0x4a0175){_0x269fb2['push'](_[_0xbc00('0x5f')]({'channel':_0x4a0175,'type':'LOGIN','data1':_0xa6b179[_0xbc00('0x62')][_0xbc00('0x100')],'data2':_0x4e1c72},_0x1786ac));if(_0x5832f4[_0xbc00('0xa1')]){_0x703865['push'](_[_0xbc00('0x5f')]({'channel':_0x4a0175,'type':'PAUSE','data1':'LOGININPAUSE'},_0x1786ac));}});return db[_0xbc00('0x101')][_0xbc00('0x8b')](_0x269fb2[_0xbc00('0x102')](_0x703865),{'individualHooks':!![]});}})['then'](function(){if(_0x5832f4){return _0x5832f4[_0xbc00('0x2a')]({'online':!![],'lastLoginAt':moment()[_0xbc00('0xb0')](_0xbc00('0xfe')),'voicePause':_0x5832f4[_0xbc00('0xa1')]||![],'mailPause':_0x5832f4[_0xbc00('0xa1')]||![],'chatPause':_0x5832f4[_0xbc00('0xa1')]||![],'faxPause':_0x5832f4[_0xbc00('0xa1')]||![],'smsPause':_0x5832f4[_0xbc00('0xa1')]||![],'openchannelPause':_0x5832f4[_0xbc00('0xa1')]||![],'whatsappPause':_0x5832f4[_0xbc00('0xa1')]||![],'pauseType':_0x5832f4[_0xbc00('0xa1')]?_0xbc00('0x103'):null,'interface':_0x4e1c72,'lastPauseAt':moment()['format'](_0xbc00('0xfe'))});}})[_0xbc00('0x18')](function(_0x26a567){if(_0xa6b179[_0xbc00('0x104')]){return _0x46bfec();}else{return Promise[_0xbc00('0x105')](_0x26a567)['then'](respondWithResult(_0x4eb0ca,null));}})[_0xbc00('0x58')](handleError(_0x4eb0ca,null));};exports[_0xbc00('0x106')]=function(_0x437c9d,_0x2a6ff9){var _0x1f23f4;return db[_0xbc00('0x3e')][_0xbc00('0x37')]({'where':{'id':_0x437c9d['params']['id'],'role':_0xbc00('0x31')},'attributes':['id',_0xbc00('0x38'),_0xbc00('0x2b')]})[_0xbc00('0x18')](handleEntityNotFound(_0x2a6ff9,null))[_0xbc00('0x18')](function(_0x13fc9b){if(_0x13fc9b){_0x1f23f4=_0x13fc9b;return db[_0xbc00('0xb2')][_0xbc00('0x2d')]({'where':{'membername':_0x1f23f4[_0xbc00('0x38')]},'individualHooks':!![]});}})[_0xbc00('0x18')](function(){return db[_0xbc00('0x101')][_0xbc00('0x4d')]({'where':{'membername':_0x1f23f4['name'],'exitAt':null}});})[_0xbc00('0x18')](function(_0x2bac63){var _0x1179db=[];_0x2bac63[_0xbc00('0xff')](function(_0x204898){_0x1179db[_0xbc00('0x4c')](_0x204898[_0xbc00('0x2a')]({'exitAt':moment()[_0xbc00('0xb0')](_0xbc00('0xfe'))}));});return Promise['all'](_0x1179db);})[_0xbc00('0x18')](function(){return _0x1f23f4[_0xbc00('0x2a')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![],'interface':null});})[_0xbc00('0x18')](respondWithResult(_0x2a6ff9,null))[_0xbc00('0x58')](handleError(_0x2a6ff9,null));};exports['pause']=function(_0xcd2408,_0x531358){var _0x4289d3;return db[_0xbc00('0xb2')][_0xbc00('0x2a')]({'paused':0x1},{'where':{'UserId':_0xcd2408[_0xbc00('0x59')]['id']},'individualHooks':!![]})['then'](function(){return db[_0xbc00('0x3e')]['find']({'where':{'id':_0xcd2408[_0xbc00('0x59')]['id'],'role':_0xbc00('0x31')},'attributes':['id',_0xbc00('0x38'),_0xbc00('0x2b'),_0xbc00('0x67'),_0xbc00('0xa3'),_0xbc00('0xa0')]});})[_0xbc00('0x18')](handleEntityNotFound(_0x531358,null))[_0xbc00('0x18')](function(_0x483754){if(_0x483754){_0x4289d3=_0x483754;return respondWithRpcPromise(_0xbc00('0x107'),'pause',{'id':_0x4289d3['id'],'name':_0x4289d3[_0xbc00('0x38')],'pause':!![]});}})[_0xbc00('0x18')](function(){if(_0x4289d3){return db['MemberReport'][_0xbc00('0x4d')]({'where':{'membername':_0x4289d3[_0xbc00('0x38')],'type':_0xbc00('0x108'),'exitAt':null}});}})[_0xbc00('0x18')](function(_0x4b9bfd){if(_0x4b9bfd['length']){var _0x5d9b6d=moment()[_0xbc00('0xb0')](_0xbc00('0xfe'));for(var _0x1cd20d=0x0,_0x4c7004=_0x4b9bfd[_0xbc00('0x51')];_0x1cd20d<_0x4c7004;_0x1cd20d++){_0x4b9bfd[_0x1cd20d][_0xbc00('0x109')]({'exitAt':_0x5d9b6d});}}})['then'](function(){var _0x552733=[];var _0x2c08c3=utils[_0xbc00('0x10a')]();_0x2c08c3['forEach'](function(_0x21c7ef){_0x552733[_0xbc00('0x4c')]({'channel':_0x21c7ef,'membername':_0x4289d3[_0xbc00('0x38')],'interface':_[_0xbc00('0x6c')](_0x4289d3['interface'])?util[_0xbc00('0xb0')](_0xbc00('0xb1'),_0x4289d3[_0xbc00('0x38')]):_0x4289d3[_0xbc00('0xa3')],'type':_0xbc00('0x108'),'enterAt':moment()[_0xbc00('0xb0')](_0xbc00('0xfe')),'data1':_0xcd2408[_0xbc00('0x62')][_0xbc00('0x10b')]||_0xbc00('0x10c'),'role':_0x4289d3[_0xbc00('0x2b')],'internal':_0x4289d3[_0xbc00('0x67')]});});return db[_0xbc00('0x101')][_0xbc00('0x8b')](_0x552733,{'individualHooks':!![]});})[_0xbc00('0x18')](function(){return _0x4289d3[_0xbc00('0x2a')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'whatsappPause':!![],'openchannelPause':!![],'pauseType':_0xcd2408[_0xbc00('0x62')]['type']||_0xbc00('0x10c'),'lastPauseAt':moment()[_0xbc00('0xb0')]('YYYY-MM-DD\x20HH:mm:ss')});})[_0xbc00('0x18')](respondWithResult(_0x531358,null))[_0xbc00('0x58')](handleError(_0x531358,null));};exports['unpause']=function(_0x2a6ba2,_0x3262f3){if(_0x2a6ba2[_0xbc00('0x62')][_0xbc00('0x9f')]&&!utils[_0xbc00('0xa4')](_0x2a6ba2[_0xbc00('0x62')]['channel'])){throw new APIBadRequestError(util[_0xbc00('0xb0')](_0xbc00('0x10d'),_0x2a6ba2[_0xbc00('0x62')]['channel']));}return db[_0xbc00('0x3e')][_0xbc00('0x37')]({'where':{'id':_0x2a6ba2[_0xbc00('0x59')]['id']},'attributes':['id','name',_0xbc00('0x2b'),_0xbc00('0x67'),_0xbc00('0xa3'),_0xbc00('0xa0'),_0xbc00('0xa2'),_0xbc00('0x10e'),'chatPause',_0xbc00('0x10f'),'openchannelPause','smsPause',_0xbc00('0x110'),'pauseType',_0xbc00('0x111')]})[_0xbc00('0x18')](function(_0x149141){if(!_0x149141){throw new APINotFoundError(util['format']('User\x20with\x20id\x20%s\x20not\x20found',_0x2a6ba2[_0xbc00('0x59')]['id']));}return _0x149141['unpause'](_0x2a6ba2[_0xbc00('0x62')][_0xbc00('0x9f')]);})[_0xbc00('0x18')](respondWithResult(_0x3262f3,null))[_0xbc00('0x58')](APIHandleError(_0x3262f3));};exports[_0xbc00('0x112')]=function(_0x1b4a88,_0x2fb785){var _0x22f232={};var _0xf72e9f={};var _0xc5f65e;var _0x1ed44a;return db[_0xbc00('0x3e')]['findOne']({'where':{'id':_0x1b4a88[_0xbc00('0x59')]['id']}})['then'](handleEntityNotFound(_0x2fb785,null))['then'](function(_0x1ee897){if(_0x1ee897){_0xc5f65e=_0x1ee897;_0xf72e9f[_0xbc00('0x5a')]=_[_0xbc00('0x5c')](db[_0xbc00('0x113')][_0xbc00('0x3f')]);_0xf72e9f[_0xbc00('0x47')]=_[_0xbc00('0x5c')](_0x1b4a88[_0xbc00('0x47')]);_0xf72e9f[_0xbc00('0xdb')]=_[_0xbc00('0x5d')](_0xf72e9f[_0xbc00('0x5a')],_0xf72e9f[_0xbc00('0x47')]);_0x22f232['attributes']=_[_0xbc00('0x5d')](_0xf72e9f['model'],qs[_0xbc00('0x5e')](_0x1b4a88['query'][_0xbc00('0x5e')]));_0x22f232[_0xbc00('0x4b')]=_0x22f232[_0xbc00('0x4b')][_0xbc00('0x51')]?_0x22f232[_0xbc00('0x4b')]:_0xf72e9f['model'];_0x22f232[_0xbc00('0xd9')]=qs[_0xbc00('0xda')](_0x1b4a88[_0xbc00('0x47')][_0xbc00('0xda')]);_0x22f232[_0xbc00('0x46')]=qs[_0xbc00('0xdb')](_[_0xbc00('0xdc')](_0x1b4a88[_0xbc00('0x47')],_0xf72e9f[_0xbc00('0xdb')]));if(_0x1b4a88[_0xbc00('0x47')]['filter']){_0x22f232[_0xbc00('0x46')]=_[_0xbc00('0x5f')](_0x22f232[_0xbc00('0x46')],{'$or':_[_0xbc00('0x34')](_0x22f232[_0xbc00('0x4b')],function(_0x4c4b39){var _0x29aadf={};_0x29aadf[_0x4c4b39]={'$like':'%'+_0x1b4a88[_0xbc00('0x47')][_0xbc00('0x42')]+'%'};return _0x29aadf;})});}_0x22f232=_[_0xbc00('0x5f')]({},_0x22f232,_0x1b4a88['options']);return _0xc5f65e['getTeams'](_0x22f232);}})[_0xbc00('0x18')](function(_0x5eb5f8){if(_0x5eb5f8){_0x1ed44a=_0x5eb5f8[_0xbc00('0x51')];if(!_0x1b4a88['query']['hasOwnProperty'](_0xbc00('0xde'))){_0x22f232[_0xbc00('0x26')]=qs['limit'](_0x1b4a88['query'][_0xbc00('0x26')]);_0x22f232[_0xbc00('0x24')]=qs['offset'](_0x1b4a88[_0xbc00('0x47')]['offset']);}return _0xc5f65e[_0xbc00('0x112')](_0x22f232);}})['then'](function(_0x386bbf){if(_0x386bbf){return _0x386bbf?{'count':_0x1ed44a,'rows':_0x386bbf}:null;}})[_0xbc00('0x18')](respondWithResult(_0x2fb785,null))['catch'](handleError(_0x2fb785,null));};exports[_0xbc00('0x114')]=function(_0x1efc21,_0x42cb39){var _0x33ff36=_0x1efc21['params']['id'];var _0x2b7ea1=_0x1efc21[_0xbc00('0x62')]?_0x1efc21[_0xbc00('0x62')]['ids']:null;var _0x5aefa9=[];return Promise[_0xbc00('0x105')]()[_0xbc00('0x18')](function(){if(!_0x2b7ea1)throw new APIBadRequestError(_0xbc00('0x115'));})[_0xbc00('0x18')](function(){return db[_0xbc00('0x3e')][_0xbc00('0x9a')]({'where':{'id':_0x33ff36}});})[_0xbc00('0x18')](function(_0x43a388){if(!_0x43a388)throw new APINotFoundError(util[_0xbc00('0xb0')](_0xbc00('0xd2'),_0x1efc21['params']['id']));return db[_0xbc00('0x6e')][_0xbc00('0x116')](function(_0x1b4274){return _0x43a388[_0xbc00('0x114')](_0x2b7ea1,{'transaction':_0x1b4274})[_0xbc00('0x18')](function(){return db['Team'][_0xbc00('0x4d')]({'where':{'id':{'$in':_0x2b7ea1}}});})[_0xbc00('0x18')](function(_0xe548b6){var _0x1fd212=_[_0xbc00('0x34')](_0xe548b6,function(_0x120372){return _0x120372[_0xbc00('0x117')]();});return Promise[_0xbc00('0x57')](_0x1fd212);})[_0xbc00('0x18')](function(_0x2bbdeb){_0x5aefa9=_[_0xbc00('0x118')](_0x2bbdeb);var _0x32ba02=_[_0xbc00('0x34')](_0x5aefa9,function(_0x3ceb2d){return _0x3ceb2d[_0xbc00('0x119')](_0x43a388['id'],{'transaction':_0x1b4274});});return Promise[_0xbc00('0x57')](_0x32ba02);})[_0xbc00('0x18')](function(){if(!_0x43a388['online'])return;var _0x380083=_[_0xbc00('0x42')](_0x5aefa9,function(_0x50f23e){return _0x50f23e[_0xbc00('0x11a')](_0xbc00('0x9f'))===_0xbc00('0x11b');});var _0x5d61ad=_['map'](_0x380083,function(_0x488f01){return db[_0xbc00('0xb2')]['upsert']({'membername':_0x43a388[_0xbc00('0x38')],'UserId':_0x43a388['id'],'queue_name':_0x488f01[_0xbc00('0x38')],'VoiceQueueId':_0x488f01['id'],'interface':_[_0xbc00('0x6c')](_0x43a388['interface'])?util['format'](_0xbc00('0xb1'),_0x43a388['name']):_0x43a388[_0xbc00('0xa3')],'paused':_0x43a388[_0xbc00('0xa2')]||![],'penalty':_0x43a388[_0xbc00('0xa6')]},{'transaction':_0x1b4274});});return Promise[_0xbc00('0x57')](_0x5d61ad);})[_0xbc00('0x18')](function(){return db[_0xbc00('0x11c')][_0xbc00('0x4d')]({'where':{'teamId':{'$in':_0x2b7ea1}}});})['then'](function(_0x4b881e){var _0xa4f9e5=_['map'](_0x4b881e,function(_0x5dc513){return db[_0xbc00('0x11d')]['create']({'UserId':_0x43a388['id'],'VoicePrefixId':_0x5dc513['VoicePrefixId']},{'transaction':_0x1b4274});});return Promise[_0xbc00('0x57')](_0xa4f9e5);});});})[_0xbc00('0x18')](function(){for(var _0x3f46de=0x0;_0x3f46de<_0x5aefa9[_0xbc00('0x51')];_0x3f46de++){var _0x1b5ede=_0x5aefa9[_0x3f46de]['getDataValue'](_0xbc00('0x9f'));var _0x2cb7d1=_0x1b5ede+_0xbc00('0xa9');socket['emit']('user'+_0x1b5ede+_0xbc00('0xac'),{'UserId':_0x33ff36,['queueField']:_0x5aefa9[_0x3f46de]['id']});}})[_0xbc00('0x18')](respondWithStatusCode(_0x42cb39,null))[_0xbc00('0x58')](APIHandleError(_0x42cb39));};exports[_0xbc00('0x11e')]=function(_0x431861,_0x6a25a3){var _0x5534d1=_0x431861[_0xbc00('0x59')]['id'];var _0x43c59c=null;if(_0x431861[_0xbc00('0x47')][_0xbc00('0x66')]){_0x43c59c=_[_0xbc00('0xb7')](_0x431861['query'][_0xbc00('0x66')])?_0x431861[_0xbc00('0x47')]['ids']:[_0x431861[_0xbc00('0x47')]['ids']];}var _0x542118=[];return Promise[_0xbc00('0x105')]()[_0xbc00('0x18')](function(){if(!_0x43c59c)throw new APIBadRequestError(_0xbc00('0x11f'));})['then'](function(){return db[_0xbc00('0x3e')][_0xbc00('0x9a')]({'where':{'id':_0x5534d1}});})['then'](function(_0x53b39c){if(!_0x53b39c)throw new APINotFoundError(util[_0xbc00('0xb0')](_0xbc00('0xd2'),_0x431861[_0xbc00('0x59')]['id']));return db[_0xbc00('0x6e')]['transaction'](function(_0x4640e4){return _0x53b39c['removeTeams'](_0x43c59c,{'transaction':_0x4640e4})[_0xbc00('0x18')](function(){return db[_0xbc00('0x113')][_0xbc00('0x4d')]({'where':{'id':{'$in':_0x43c59c}}});})[_0xbc00('0x18')](function(_0x54a93c){var _0x168a09=_['map'](_0x54a93c,function(_0x2a5776){return _0x2a5776[_0xbc00('0x117')]();});return Promise[_0xbc00('0x57')](_0x168a09);})[_0xbc00('0x18')](function(_0x4d2e16){_0x542118=_[_0xbc00('0x118')](_0x4d2e16);var _0x10526f=_['map'](_0x542118,function(_0x3b887d){return _0x3b887d[_0xbc00('0x120')](_0x53b39c['id'],{'transaction':_0x4640e4});});return Promise[_0xbc00('0x57')](_0x10526f);})[_0xbc00('0x18')](function(){if(!_0x53b39c['online'])return;var _0x1b32eb=_[_0xbc00('0x42')](_0x542118,function(_0x33b260){return _0x33b260[_0xbc00('0x11a')](_0xbc00('0x9f'))===_0xbc00('0x11b');});var _0x42b651=_['map'](_0x1b32eb,function(_0x5150ea){return db[_0xbc00('0xb2')][_0xbc00('0x2d')]({'where':{'VoiceQueueId':_0x5150ea['id'],'UserId':_0x53b39c['id']},'transaction':_0x4640e4});});return Promise[_0xbc00('0x57')](_0x42b651);})['then'](function(){return db[_0xbc00('0x11c')]['findAll']({'where':{'teamId':{'$in':_0x43c59c}}});})[_0xbc00('0x18')](function(_0x4242b4){var _0x32536f=_[_0xbc00('0x34')](_0x4242b4,function(_0x4c6de4){return db[_0xbc00('0x11d')][_0xbc00('0x2d')]({'where':{'UserId':_0x53b39c['id'],'VoicePrefixId':_0x4c6de4[_0xbc00('0x121')]}},{'transaction':_0x4640e4});});return Promise[_0xbc00('0x57')](_0x32536f);});});})[_0xbc00('0x18')](function(){for(var _0x1db114=0x0;_0x1db114<_0x542118[_0xbc00('0x51')];_0x1db114++){var _0x13e6e5=_0x542118[_0x1db114][_0xbc00('0x11a')]('channel');var _0x23984c=_0x13e6e5+_0xbc00('0xa9');socket[_0xbc00('0xaa')](_0xbc00('0x30')+_0x13e6e5+'Queue:remove',{'UserId':_0x5534d1,['queueField']:_0x542118[_0x1db114]['id']});}})[_0xbc00('0x18')](respondWithStatusCode(_0x6a25a3,null))[_0xbc00('0x58')](APIHandleError(_0x6a25a3));};exports[_0xbc00('0x122')]=function(_0x3bfd7a,_0x24ea54){var _0x3a2b84={};var _0x130479={};var _0x271537;var _0x4291b5;return db[_0xbc00('0x3e')][_0xbc00('0x9a')]({'where':{'id':_0x3bfd7a[_0xbc00('0x59')]['id']}})[_0xbc00('0x18')](handleEntityNotFound(_0x24ea54,null))[_0xbc00('0x18')](function(_0x240c24){if(_0x240c24){_0x271537=_0x240c24;_0x130479[_0xbc00('0x5a')]=_[_0xbc00('0x5c')](db[_0xbc00('0x123')][_0xbc00('0x3f')]);_0x130479[_0xbc00('0x47')]=_[_0xbc00('0x5c')](_0x3bfd7a['query']);_0x130479['filters']=_[_0xbc00('0x5d')](_0x130479['model'],_0x130479[_0xbc00('0x47')]);_0x3a2b84[_0xbc00('0x4b')]=_['intersection'](_0x130479[_0xbc00('0x5a')],qs[_0xbc00('0x5e')](_0x3bfd7a['query'][_0xbc00('0x5e')]));_0x3a2b84[_0xbc00('0x4b')]=_0x3a2b84[_0xbc00('0x4b')]['length']?_0x3a2b84[_0xbc00('0x4b')]:_0x130479[_0xbc00('0x5a')];_0x3a2b84[_0xbc00('0xd9')]=qs[_0xbc00('0xda')](_0x3bfd7a['query'][_0xbc00('0xda')]);_0x3a2b84[_0xbc00('0x46')]=qs[_0xbc00('0xdb')](_[_0xbc00('0xdc')](_0x3bfd7a[_0xbc00('0x47')],_0x130479[_0xbc00('0xdb')]));if(_0x3bfd7a[_0xbc00('0x47')]['filter']){_0x3a2b84['where']=_[_0xbc00('0x5f')](_0x3a2b84[_0xbc00('0x46')],{'$or':_[_0xbc00('0x34')](_0x3a2b84['attributes'],function(_0x913dd1){var _0x451516={};_0x451516[_0x913dd1]={'$like':'%'+_0x3bfd7a[_0xbc00('0x47')][_0xbc00('0x42')]+'%'};return _0x451516;})});}_0x3a2b84=_[_0xbc00('0x5f')]({},_0x3a2b84,_0x3bfd7a[_0xbc00('0x60')]);return _0x271537['getLists'](_0x3a2b84);}})[_0xbc00('0x18')](function(_0x636023){if(_0x636023){_0x4291b5=_0x636023[_0xbc00('0x51')];if(!_0x3bfd7a['query'][_0xbc00('0xd3')](_0xbc00('0xde'))){_0x3a2b84[_0xbc00('0x26')]=qs[_0xbc00('0x26')](_0x3bfd7a[_0xbc00('0x47')][_0xbc00('0x26')]);_0x3a2b84[_0xbc00('0x24')]=qs[_0xbc00('0x24')](_0x3bfd7a[_0xbc00('0x47')][_0xbc00('0x24')]);}return _0x271537['getLists'](_0x3a2b84);}})['then'](function(_0x17d007){if(_0x17d007){return _0x17d007?{'count':_0x4291b5,'rows':_0x17d007}:null;}})[_0xbc00('0x18')](respondWithResult(_0x24ea54,null))[_0xbc00('0x58')](handleError(_0x24ea54,null));};exports[_0xbc00('0x124')]=function(_0x5e0c47,_0x50d4fa){var _0x463e11={};var _0x66dc0f={};var _0x32e9b5;return db['User'][_0xbc00('0x9a')]({'where':{'id':_0x5e0c47[_0xbc00('0x59')]['id']}})['then'](handleEntityNotFound(_0x50d4fa,null))[_0xbc00('0x18')](function(_0x4a5d58){if(_0x4a5d58){_0x32e9b5=_0x4a5d58;_0x66dc0f[_0xbc00('0x5a')]=_[_0xbc00('0x5c')](db[_0xbc00('0x3e')][_0xbc00('0x3f')]);_0x66dc0f[_0xbc00('0x47')]=_[_0xbc00('0x5c')](_0x5e0c47[_0xbc00('0x47')]);_0x66dc0f[_0xbc00('0xdb')]=_[_0xbc00('0x5d')](_0x66dc0f['model'],_0x66dc0f[_0xbc00('0x47')]);_0x463e11['attributes']=_['intersection'](_0x66dc0f[_0xbc00('0x5a')],qs[_0xbc00('0x5e')](_0x5e0c47[_0xbc00('0x47')][_0xbc00('0x5e')]));_0x463e11[_0xbc00('0x4b')]=_0x463e11['attributes'][_0xbc00('0x51')]?_0x463e11[_0xbc00('0x4b')]:_0x66dc0f[_0xbc00('0x5a')];_0x463e11[_0xbc00('0xd9')]=qs[_0xbc00('0xda')](_0x5e0c47[_0xbc00('0x47')][_0xbc00('0xda')]);_0x463e11[_0xbc00('0x46')]=qs[_0xbc00('0xdb')](_[_0xbc00('0xdc')](_0x5e0c47[_0xbc00('0x47')],_0x66dc0f[_0xbc00('0xdb')]));if(_0x5e0c47[_0xbc00('0x47')]['filter']){_0x463e11[_0xbc00('0x46')]=_[_0xbc00('0x5f')](_0x463e11[_0xbc00('0x46')],{'$or':_['map'](_0x463e11[_0xbc00('0x4b')],function(_0x3d3661){var _0x4c1d89={};_0x4c1d89[_0x3d3661]={'$like':'%'+_0x5e0c47['query']['filter']+'%'};return _0x4c1d89;})});}_0x463e11[_0xbc00('0x5a')]=db['User'];_0x463e11['as']='Agents';_0x463e11=_['merge']({},_0x463e11,_0x5e0c47[_0xbc00('0x60')]);return _0x32e9b5[_0xbc00('0xfc')]({'include':[_0x463e11]});}})[_0xbc00('0x18')](function(_0x29d893){if(_0x29d893){var _0xa1c44={},_0x2a2e73=[];for(var _0x4efec0=0x0;_0x4efec0<_0x29d893['length'];_0x4efec0+=0x1){for(var _0x3316b5=0x0,_0x5a3a2b;_0x3316b5<_0x29d893[_0x4efec0][_0xbc00('0x89')][_0xbc00('0x51')];_0x3316b5+=0x1){_0x5a3a2b=_0x29d893[_0x4efec0][_0xbc00('0x89')][_0x3316b5]['get']({'plain':!![]});_0xa1c44[_0x5a3a2b['id']]=_0x5a3a2b;}}_0xa1c44=_['values'](_0xa1c44);for(var _0x10fa05=qs['offset'](_0x5e0c47['query'][_0xbc00('0x24')]);_0x10fa05<_0xa1c44[_0xbc00('0x51')]&&_0x2a2e73[_0xbc00('0x51')]<qs['limit'](_0x5e0c47['query'][_0xbc00('0x26')]);_0x10fa05+=0x1){if(_0xa1c44[_0x10fa05]){_0x2a2e73[_0xbc00('0x4c')](_0xa1c44[_0x10fa05]);}}return{'count':_0xa1c44[_0xbc00('0x51')],'rows':_0x2a2e73};}})[_0xbc00('0x18')](respondWithResult(_0x50d4fa,null))[_0xbc00('0x58')](handleError(_0x50d4fa,null));};exports['destroy']=function(_0x141954,_0x51b59b){if(_0x141954[_0xbc00('0x30')]['id']==_0x141954['params']['id']){return _0x51b59b[_0xbc00('0x23')](0x1f4)[_0xbc00('0x3c')]({'message':'You\x20can\x27t\x20delete\x20yourself'});}return db[_0xbc00('0x3e')]['find']({'where':{'id':_0x141954[_0xbc00('0x59')]['id']}})[_0xbc00('0x18')](handleEntityNotFound(_0x51b59b,null))[_0xbc00('0x18')](removeEntity(_0x51b59b,null))[_0xbc00('0x58')](handleError(_0x51b59b,null));};exports[_0xbc00('0x125')]=function(_0x155dbd,_0x5d0e40){return db['User'][_0xbc00('0x37')]({'where':{'id':_0x155dbd[_0xbc00('0x59')]['id']}})[_0xbc00('0x18')](handleEntityNotFound(_0x5d0e40,null))[_0xbc00('0x18')](function(_0x1b1f1d){if(_0x1b1f1d){return _0x1b1f1d[_0xbc00('0x125')](_0x155dbd[_0xbc00('0x62')]['ids'],_[_0xbc00('0x65')](_0x155dbd[_0xbc00('0x62')],[_0xbc00('0x66'),'id'])||{})[_0xbc00('0xa7')](function(){for(var _0x396c74=0x0;_0x396c74<_0x155dbd[_0xbc00('0x62')]['ids']['length'];_0x396c74+=0x1){socket[_0xbc00('0xaa')]('user_has_chat_interactions:save',{'ChatInteractionId':Number(_0x155dbd[_0xbc00('0x62')][_0xbc00('0x66')][_0x396c74]),'UserId':Number(_0x155dbd[_0xbc00('0x59')]['id'])});}return _0x155dbd[_0xbc00('0x62')][_0xbc00('0x66')];});}})[_0xbc00('0x18')](respondWithResult(_0x5d0e40,null))['catch'](handleError(_0x5d0e40,null));};exports[_0xbc00('0x126')]=function(_0x415d5a,_0x21a43d){return db['User'][_0xbc00('0x37')]({'where':{'id':_0x415d5a[_0xbc00('0x59')]['id']}})[_0xbc00('0x18')](handleEntityNotFound(_0x21a43d,null))['then'](function(_0x34ee2c){if(_0x34ee2c){return _0x34ee2c[_0xbc00('0x126')](_0x415d5a[_0xbc00('0x47')][_0xbc00('0x66')])[_0xbc00('0x18')](function(){if(_['isArray'](_0x415d5a[_0xbc00('0x47')][_0xbc00('0x66')])){for(var _0x23ad54=0x0;_0x23ad54<_0x415d5a[_0xbc00('0x47')][_0xbc00('0x66')]['length'];_0x23ad54+=0x1){socket[_0xbc00('0xaa')](_0xbc00('0x127'),{'ChatInteractionId':Number(_0x415d5a['query'][_0xbc00('0x66')][_0x23ad54]),'UserId':Number(_0x415d5a[_0xbc00('0x59')]['id'])});}}else{socket[_0xbc00('0xaa')](_0xbc00('0x127'),{'ChatInteractionId':Number(_0x415d5a['query']['ids']),'UserId':Number(_0x415d5a[_0xbc00('0x59')]['id'])});}});}})[_0xbc00('0x18')](respondWithStatusCode(_0x21a43d,null))[_0xbc00('0x58')](handleError(_0x21a43d,null));};exports['addMailInteractions']=function(_0x4a23cf,_0x29c353){return db['User'][_0xbc00('0x37')]({'where':{'id':_0x4a23cf[_0xbc00('0x59')]['id']}})[_0xbc00('0x18')](handleEntityNotFound(_0x29c353,null))[_0xbc00('0x18')](function(_0x453e07){if(_0x453e07){return _0x453e07[_0xbc00('0x128')](_0x4a23cf[_0xbc00('0x62')][_0xbc00('0x66')],_[_0xbc00('0x65')](_0x4a23cf[_0xbc00('0x62')],[_0xbc00('0x66'),'id'])||{})[_0xbc00('0xa7')](function(){for(var _0x5a0d36=0x0;_0x5a0d36<_0x4a23cf[_0xbc00('0x62')][_0xbc00('0x66')][_0xbc00('0x51')];_0x5a0d36+=0x1){socket[_0xbc00('0xaa')](_0xbc00('0x129'),{'MailInteractionId':Number(_0x4a23cf[_0xbc00('0x62')]['ids'][_0x5a0d36]),'UserId':Number(_0x4a23cf[_0xbc00('0x59')]['id'])});}return _0x4a23cf[_0xbc00('0x62')][_0xbc00('0x66')];});}})[_0xbc00('0x18')](respondWithResult(_0x29c353,null))[_0xbc00('0x58')](handleError(_0x29c353,null));};exports['removeMailInteractions']=function(_0x5d1848,_0x161838){return db[_0xbc00('0x3e')][_0xbc00('0x37')]({'where':{'id':_0x5d1848[_0xbc00('0x59')]['id']}})['then'](handleEntityNotFound(_0x161838,null))[_0xbc00('0x18')](function(_0x1ce618){if(_0x1ce618){return _0x1ce618[_0xbc00('0x12a')](_0x5d1848['query'][_0xbc00('0x66')])[_0xbc00('0x18')](function(){if(_[_0xbc00('0xb7')](_0x5d1848[_0xbc00('0x47')][_0xbc00('0x66')])){for(var _0x32b449=0x0;_0x32b449<_0x5d1848[_0xbc00('0x47')]['ids'][_0xbc00('0x51')];_0x32b449+=0x1){socket[_0xbc00('0xaa')](_0xbc00('0x12b'),{'MailInteractionId':Number(_0x5d1848[_0xbc00('0x47')]['ids'][_0x32b449]),'UserId':Number(_0x5d1848[_0xbc00('0x59')]['id'])});}}else{socket[_0xbc00('0xaa')](_0xbc00('0x12b'),{'MailInteractionId':Number(_0x5d1848[_0xbc00('0x47')][_0xbc00('0x66')]),'UserId':Number(_0x5d1848[_0xbc00('0x59')]['id'])});}});}})[_0xbc00('0x18')](respondWithStatusCode(_0x161838,null))[_0xbc00('0x58')](handleError(_0x161838,null));};exports[_0xbc00('0x12c')]=function(_0x93694e,_0x31f1e8){return db[_0xbc00('0x3e')][_0xbc00('0x37')]({'where':{'id':_0x93694e[_0xbc00('0x59')]['id']}})[_0xbc00('0x18')](handleEntityNotFound(_0x31f1e8,null))[_0xbc00('0x18')](function(_0xc91200){if(_0xc91200){return _0xc91200[_0xbc00('0x12c')](_0x93694e[_0xbc00('0x62')][_0xbc00('0x66')],_[_0xbc00('0x65')](_0x93694e[_0xbc00('0x62')],[_0xbc00('0x66'),'id'])||{})['spread'](function(){for(var _0x3f34e6=0x0;_0x3f34e6<_0x93694e[_0xbc00('0x62')][_0xbc00('0x66')][_0xbc00('0x51')];_0x3f34e6+=0x1){socket[_0xbc00('0xaa')]('user_has_fax_interactions:save',{'FaxInteractionId':Number(_0x93694e[_0xbc00('0x62')][_0xbc00('0x66')][_0x3f34e6]),'UserId':Number(_0x93694e[_0xbc00('0x59')]['id'])});}return _0x93694e[_0xbc00('0x62')][_0xbc00('0x66')];});}})[_0xbc00('0x18')](respondWithResult(_0x31f1e8,null))[_0xbc00('0x58')](handleError(_0x31f1e8,null));};exports[_0xbc00('0x12d')]=function(_0x49a8ba,_0x2cd725){return db[_0xbc00('0x3e')][_0xbc00('0x37')]({'where':{'id':_0x49a8ba[_0xbc00('0x59')]['id']}})[_0xbc00('0x18')](handleEntityNotFound(_0x2cd725,null))[_0xbc00('0x18')](function(_0x4e5afd){if(_0x4e5afd){return _0x4e5afd['removeFaxInteractions'](_0x49a8ba[_0xbc00('0x47')][_0xbc00('0x66')])[_0xbc00('0x18')](function(){if(_[_0xbc00('0xb7')](_0x49a8ba[_0xbc00('0x47')]['ids'])){for(var _0x2ba8fa=0x0;_0x2ba8fa<_0x49a8ba[_0xbc00('0x47')][_0xbc00('0x66')][_0xbc00('0x51')];_0x2ba8fa+=0x1){socket[_0xbc00('0xaa')](_0xbc00('0x12e'),{'FaxInteractionId':Number(_0x49a8ba[_0xbc00('0x47')][_0xbc00('0x66')][_0x2ba8fa]),'UserId':Number(_0x49a8ba[_0xbc00('0x59')]['id'])});}}else{socket['emit'](_0xbc00('0x12e'),{'FaxInteractionId':Number(_0x49a8ba[_0xbc00('0x47')][_0xbc00('0x66')]),'UserId':Number(_0x49a8ba[_0xbc00('0x59')]['id'])});}});}})[_0xbc00('0x18')](respondWithStatusCode(_0x2cd725,null))[_0xbc00('0x58')](handleError(_0x2cd725,null));};exports[_0xbc00('0x12f')]=function(_0x349979,_0x8da1e){return db[_0xbc00('0x3e')][_0xbc00('0x37')]({'where':{'id':_0x349979[_0xbc00('0x59')]['id']}})[_0xbc00('0x18')](handleEntityNotFound(_0x8da1e,null))['then'](function(_0x50de3d){if(_0x50de3d){return _0x50de3d[_0xbc00('0x12f')](_0x349979[_0xbc00('0x62')][_0xbc00('0x66')],_[_0xbc00('0x65')](_0x349979['body'],[_0xbc00('0x66'),'id'])||{})[_0xbc00('0xa7')](function(){for(var _0x2d52ce=0x0;_0x2d52ce<_0x349979[_0xbc00('0x62')][_0xbc00('0x66')]['length'];_0x2d52ce+=0x1){socket['emit'](_0xbc00('0x130'),{'SmsInteractionId':Number(_0x349979[_0xbc00('0x62')]['ids'][_0x2d52ce]),'UserId':Number(_0x349979[_0xbc00('0x59')]['id'])});}return _0x349979[_0xbc00('0x62')][_0xbc00('0x66')];});}})[_0xbc00('0x18')](respondWithResult(_0x8da1e,null))['catch'](handleError(_0x8da1e,null));};exports[_0xbc00('0x131')]=function(_0x154191,_0x552899){return db[_0xbc00('0x3e')][_0xbc00('0x37')]({'where':{'id':_0x154191[_0xbc00('0x59')]['id']}})[_0xbc00('0x18')](handleEntityNotFound(_0x552899,null))[_0xbc00('0x18')](function(_0x52d96b){if(_0x52d96b){return _0x52d96b['removeSmsInteractions'](_0x154191['query'][_0xbc00('0x66')])[_0xbc00('0x18')](function(){if(_[_0xbc00('0xb7')](_0x154191[_0xbc00('0x47')][_0xbc00('0x66')])){for(var _0x3b8fd7=0x0;_0x3b8fd7<_0x154191[_0xbc00('0x47')][_0xbc00('0x66')][_0xbc00('0x51')];_0x3b8fd7+=0x1){socket['emit'](_0xbc00('0x132'),{'SmsInteractionId':Number(_0x154191[_0xbc00('0x47')]['ids'][_0x3b8fd7]),'UserId':Number(_0x154191[_0xbc00('0x59')]['id'])});}}else{socket['emit'](_0xbc00('0x132'),{'SmsInteractionId':Number(_0x154191['query'][_0xbc00('0x66')]),'UserId':Number(_0x154191[_0xbc00('0x59')]['id'])});}});}})[_0xbc00('0x18')](respondWithStatusCode(_0x552899,null))[_0xbc00('0x58')](handleError(_0x552899,null));};exports['addOpenchannelInteractions']=function(_0xd4f5d3,_0x59e6ba){return db['User'][_0xbc00('0x37')]({'where':{'id':_0xd4f5d3[_0xbc00('0x59')]['id']}})['then'](handleEntityNotFound(_0x59e6ba,null))[_0xbc00('0x18')](function(_0x30e8a5){if(_0x30e8a5){return _0x30e8a5[_0xbc00('0x133')](_0xd4f5d3[_0xbc00('0x62')][_0xbc00('0x66')],_[_0xbc00('0x65')](_0xd4f5d3['body'],[_0xbc00('0x66'),'id'])||{})['spread'](function(){for(var _0xd7295e=0x0;_0xd7295e<_0xd4f5d3[_0xbc00('0x62')][_0xbc00('0x66')][_0xbc00('0x51')];_0xd7295e+=0x1){socket[_0xbc00('0xaa')](_0xbc00('0x134'),{'OpenchannelInteractionId':Number(_0xd4f5d3['body'][_0xbc00('0x66')][_0xd7295e]),'UserId':Number(_0xd4f5d3[_0xbc00('0x59')]['id'])});}return _0xd4f5d3[_0xbc00('0x62')]['ids'];});}})['then'](respondWithResult(_0x59e6ba,null))['catch'](handleError(_0x59e6ba,null));};exports['removeOpenchannelInteractions']=function(_0x347c5a,_0x27fd23){return db[_0xbc00('0x3e')][_0xbc00('0x37')]({'where':{'id':_0x347c5a[_0xbc00('0x59')]['id']}})['then'](handleEntityNotFound(_0x27fd23,null))[_0xbc00('0x18')](function(_0x453a2c){if(_0x453a2c){return _0x453a2c[_0xbc00('0x135')](_0x347c5a[_0xbc00('0x47')][_0xbc00('0x66')])[_0xbc00('0x18')](function(){if(_[_0xbc00('0xb7')](_0x347c5a[_0xbc00('0x47')][_0xbc00('0x66')])){for(var _0x826e81=0x0;_0x826e81<_0x347c5a[_0xbc00('0x47')]['ids'][_0xbc00('0x51')];_0x826e81+=0x1){socket[_0xbc00('0xaa')](_0xbc00('0x136'),{'OpenchannelInteractionId':Number(_0x347c5a['query'][_0xbc00('0x66')][_0x826e81]),'UserId':Number(_0x347c5a[_0xbc00('0x59')]['id'])});}}else{socket[_0xbc00('0xaa')](_0xbc00('0x136'),{'OpenchannelInteractionId':Number(_0x347c5a[_0xbc00('0x47')][_0xbc00('0x66')]),'UserId':Number(_0x347c5a[_0xbc00('0x59')]['id'])});}});}})[_0xbc00('0x18')](respondWithStatusCode(_0x27fd23,null))[_0xbc00('0x58')](handleError(_0x27fd23,null));};exports[_0xbc00('0x137')]=function(_0x2b8170,_0x54c8a1){return db[_0xbc00('0x3e')][_0xbc00('0x37')]({'where':{'id':_0x2b8170[_0xbc00('0x59')]['id']}})['then'](handleEntityNotFound(_0x54c8a1,null))[_0xbc00('0x18')](function(_0x4b61e0){if(_0x4b61e0){return _0x4b61e0[_0xbc00('0x137')](_0x2b8170[_0xbc00('0x62')][_0xbc00('0x66')],_[_0xbc00('0x65')](_0x2b8170[_0xbc00('0x62')],[_0xbc00('0x66'),'id'])||{})[_0xbc00('0xa7')](function(){for(var _0xfa5c2d=0x0;_0xfa5c2d<_0x2b8170[_0xbc00('0x62')][_0xbc00('0x66')]['length'];_0xfa5c2d+=0x1){socket[_0xbc00('0xaa')](_0xbc00('0x138'),{'WhatsappInteractionId':Number(_0x2b8170[_0xbc00('0x62')][_0xbc00('0x66')][_0xfa5c2d]),'UserId':Number(_0x2b8170[_0xbc00('0x59')]['id'])});}return _0x2b8170[_0xbc00('0x62')][_0xbc00('0x66')];});}})[_0xbc00('0x18')](respondWithResult(_0x54c8a1,null))[_0xbc00('0x58')](handleError(_0x54c8a1,null));};exports['removeWhatsappInteractions']=function(_0x1849b9,_0x5088ac){return db[_0xbc00('0x3e')][_0xbc00('0x37')]({'where':{'id':_0x1849b9['params']['id']}})[_0xbc00('0x18')](handleEntityNotFound(_0x5088ac,null))[_0xbc00('0x18')](function(_0x3f998a){if(_0x3f998a){return _0x3f998a['removeWhatsappInteractions'](_0x1849b9[_0xbc00('0x47')][_0xbc00('0x66')]);}})[_0xbc00('0x18')](respondWithStatusCode(_0x5088ac,null))['catch'](handleError(_0x5088ac,null));};exports[_0xbc00('0x139')]=function(_0x5743eb,_0x5edbdb){var _0x4314db={};var _0x28095d={};var _0x44254f;var _0x2faadb;return db[_0xbc00('0x3e')][_0xbc00('0x9a')]({'where':{'id':_0x5743eb[_0xbc00('0x59')]['id']}})['then'](handleEntityNotFound(_0x5edbdb,null))[_0xbc00('0x18')](function(_0x23e0dd){if(_0x23e0dd){_0x44254f=_0x23e0dd;_0x28095d[_0xbc00('0x5a')]=_['keys'](db[_0xbc00('0x13a')][_0xbc00('0x3f')]);_0x28095d['query']=_[_0xbc00('0x5c')](_0x5743eb['query']);_0x28095d[_0xbc00('0xdb')]=_[_0xbc00('0x5d')](_0x28095d[_0xbc00('0x5a')],_0x28095d['query']);_0x4314db['attributes']=_[_0xbc00('0x5d')](_0x28095d['model'],qs['fields'](_0x5743eb[_0xbc00('0x47')][_0xbc00('0x5e')]));_0x4314db[_0xbc00('0x4b')]=_0x4314db['attributes'][_0xbc00('0x51')]?_0x4314db['attributes']:_0x28095d[_0xbc00('0x5a')];_0x4314db['order']=qs[_0xbc00('0xda')](_0x5743eb[_0xbc00('0x47')][_0xbc00('0xda')]);_0x4314db[_0xbc00('0x46')]=qs[_0xbc00('0xdb')](_[_0xbc00('0xdc')](_0x5743eb[_0xbc00('0x47')],_0x28095d['filters']));if(_0x5743eb['query'][_0xbc00('0x42')]){_0x4314db[_0xbc00('0x46')]=_[_0xbc00('0x5f')](_0x4314db[_0xbc00('0x46')],{'$or':_[_0xbc00('0x34')](_0x4314db[_0xbc00('0x4b')],function(_0x256f83){var _0x57598b={};_0x57598b[_0x256f83]={'$like':'%'+_0x5743eb[_0xbc00('0x47')][_0xbc00('0x42')]+'%'};return _0x57598b;})});}_0x4314db=_['merge']({},_0x4314db,_0x5743eb['options']);return _0x44254f[_0xbc00('0x139')](_0x4314db);}})[_0xbc00('0x18')](function(_0x1e7389){if(_0x1e7389){_0x2faadb=_0x1e7389[_0xbc00('0x51')];if(!_0x5743eb[_0xbc00('0x47')]['hasOwnProperty'](_0xbc00('0xde'))){_0x4314db['limit']=qs[_0xbc00('0x26')](_0x5743eb['query'][_0xbc00('0x26')]);_0x4314db[_0xbc00('0x24')]=qs[_0xbc00('0x24')](_0x5743eb[_0xbc00('0x47')][_0xbc00('0x24')]);}return _0x44254f['getVoicePrefixes'](_0x4314db);}})[_0xbc00('0x18')](function(_0xa4a859){if(_0xa4a859){return _0xa4a859?{'count':_0x2faadb,'rows':_0xa4a859}:null;}})[_0xbc00('0x18')](respondWithResult(_0x5edbdb,null))[_0xbc00('0x58')](handleError(_0x5edbdb,null));};exports[_0xbc00('0x13b')]=function(_0x5f4549,_0x2ada86){var _0x5e7aed={};var _0x456527={};var _0x3a3c48;var _0xd2bd22;return db['User'][_0xbc00('0x9a')]({'where':{'id':_0x5f4549['params']['id']}})[_0xbc00('0x18')](handleEntityNotFound(_0x2ada86,null))[_0xbc00('0x18')](function(_0x4035bc){if(_0x4035bc){_0x3a3c48=_0x4035bc;_0x456527[_0xbc00('0x5a')]=_['keys'](db['FaxAccount'][_0xbc00('0x3f')]);_0x456527[_0xbc00('0x47')]=_[_0xbc00('0x5c')](_0x5f4549[_0xbc00('0x47')]);_0x456527[_0xbc00('0xdb')]=_[_0xbc00('0x5d')](_0x456527[_0xbc00('0x5a')],_0x456527[_0xbc00('0x47')]);_0x5e7aed['attributes']=_[_0xbc00('0x5d')](_0x456527[_0xbc00('0x5a')],qs[_0xbc00('0x5e')](_0x5f4549[_0xbc00('0x47')][_0xbc00('0x5e')]));_0x5e7aed[_0xbc00('0x4b')]=_0x5e7aed[_0xbc00('0x4b')][_0xbc00('0x51')]?_0x5e7aed[_0xbc00('0x4b')]:_0x456527[_0xbc00('0x5a')];_0x5e7aed[_0xbc00('0xd9')]=qs[_0xbc00('0xda')](_0x5f4549[_0xbc00('0x47')][_0xbc00('0xda')]);_0x5e7aed[_0xbc00('0x46')]=qs['filters'](_[_0xbc00('0xdc')](_0x5f4549[_0xbc00('0x47')],_0x456527[_0xbc00('0xdb')]));if(_0x5f4549['query'][_0xbc00('0x42')]){_0x5e7aed[_0xbc00('0x46')]=_[_0xbc00('0x5f')](_0x5e7aed[_0xbc00('0x46')],{'$or':_[_0xbc00('0x34')](_0x5e7aed[_0xbc00('0x4b')],function(_0x1d7cfa){var _0x154c22={};_0x154c22[_0x1d7cfa]={'$like':'%'+_0x5f4549[_0xbc00('0x47')]['filter']+'%'};return _0x154c22;})});}_0x5e7aed=_[_0xbc00('0x5f')]({},_0x5e7aed,_0x5f4549['options']);return _0x3a3c48['getFaxAccounts'](_0x5e7aed);}})[_0xbc00('0x18')](function(_0x24457f){if(_0x24457f){_0xd2bd22=_0x24457f[_0xbc00('0x51')];if(!_0x5f4549[_0xbc00('0x47')][_0xbc00('0xd3')](_0xbc00('0xde'))){_0x5e7aed['limit']=qs['limit'](_0x5f4549[_0xbc00('0x47')][_0xbc00('0x26')]);_0x5e7aed[_0xbc00('0x24')]=qs[_0xbc00('0x24')](_0x5f4549[_0xbc00('0x47')]['offset']);}return _0x3a3c48['getFaxAccounts'](_0x5e7aed);}})[_0xbc00('0x18')](function(_0x6b3f59){if(_0x6b3f59){return _0x6b3f59?{'count':_0xd2bd22,'rows':_0x6b3f59}:null;}})['then'](respondWithResult(_0x2ada86,null))[_0xbc00('0x58')](handleError(_0x2ada86,null));};exports['addFaxAccounts']=function(_0x379275,_0x2f21a9){return db[_0xbc00('0x3e')][_0xbc00('0x37')]({'where':{'id':_0x379275['params']['id']}})[_0xbc00('0x18')](handleEntityNotFound(_0x2f21a9,null))[_0xbc00('0x18')](function(_0x120ef2){if(_0x120ef2){return _0x120ef2[_0xbc00('0x13c')](_0x379275['body']['ids'],_[_0xbc00('0x65')](_0x379275[_0xbc00('0x62')],[_0xbc00('0x66'),'id'])||{});}})['then'](respondWithResult(_0x2f21a9,null))[_0xbc00('0x58')](handleError(_0x2f21a9,null));};exports['removeFaxAccounts']=function(_0x52d02e,_0x36cca6){return db[_0xbc00('0x3e')]['find']({'where':{'id':_0x52d02e['params']['id']}})[_0xbc00('0x18')](handleEntityNotFound(_0x36cca6,null))[_0xbc00('0x18')](function(_0x5e4156){if(_0x5e4156){return _0x5e4156[_0xbc00('0x13d')](_0x52d02e[_0xbc00('0x47')][_0xbc00('0x66')]);}})[_0xbc00('0x18')](respondWithStatusCode(_0x36cca6,null))[_0xbc00('0x58')](handleError(_0x36cca6,null));};exports[_0xbc00('0x13e')]=function(_0x19dc7d,_0x235536){var _0x374f98={};var _0x280699={};var _0x407fbe;var _0x539207;return db[_0xbc00('0x3e')][_0xbc00('0x9a')]({'where':{'id':_0x19dc7d[_0xbc00('0x59')]['id']}})[_0xbc00('0x18')](handleEntityNotFound(_0x235536,null))['then'](function(_0x2977f6){if(_0x2977f6){_0x407fbe=_0x2977f6;_0x280699[_0xbc00('0x5a')]=_['keys'](db[_0xbc00('0x13f')][_0xbc00('0x3f')]);_0x280699[_0xbc00('0x47')]=_[_0xbc00('0x5c')](_0x19dc7d[_0xbc00('0x47')]);_0x280699[_0xbc00('0xdb')]=_[_0xbc00('0x5d')](_0x280699[_0xbc00('0x5a')],_0x280699['query']);_0x374f98[_0xbc00('0x4b')]=_[_0xbc00('0x5d')](_0x280699[_0xbc00('0x5a')],qs['fields'](_0x19dc7d[_0xbc00('0x47')]['fields']));_0x374f98['attributes']=_0x374f98[_0xbc00('0x4b')][_0xbc00('0x51')]?_0x374f98[_0xbc00('0x4b')]:_0x280699[_0xbc00('0x5a')];_0x374f98[_0xbc00('0xd9')]=qs[_0xbc00('0xda')](_0x19dc7d[_0xbc00('0x47')]['sort']);_0x374f98['where']=qs[_0xbc00('0xdb')](_['pick'](_0x19dc7d[_0xbc00('0x47')],_0x280699[_0xbc00('0xdb')]));if(_0x19dc7d[_0xbc00('0x47')][_0xbc00('0x42')]){_0x374f98['where']=_[_0xbc00('0x5f')](_0x374f98['where'],{'$or':_['map'](_0x374f98['attributes'],function(_0x43b94f){var _0x584117={};_0x584117[_0x43b94f]={'$like':'%'+_0x19dc7d[_0xbc00('0x47')][_0xbc00('0x42')]+'%'};return _0x584117;})});}_0x374f98=_[_0xbc00('0x5f')]({},_0x374f98,_0x19dc7d['options']);return _0x407fbe[_0xbc00('0x13e')](_0x374f98);}})['then'](function(_0x228c22){if(_0x228c22){_0x539207=_0x228c22[_0xbc00('0x51')];if(!_0x19dc7d[_0xbc00('0x47')][_0xbc00('0xd3')](_0xbc00('0xde'))){_0x374f98[_0xbc00('0x26')]=qs[_0xbc00('0x26')](_0x19dc7d[_0xbc00('0x47')][_0xbc00('0x26')]);_0x374f98[_0xbc00('0x24')]=qs[_0xbc00('0x24')](_0x19dc7d[_0xbc00('0x47')][_0xbc00('0x24')]);}return _0x407fbe[_0xbc00('0x13e')](_0x374f98);}})[_0xbc00('0x18')](function(_0x618305){if(_0x618305){return _0x618305?{'count':_0x539207,'rows':_0x618305}:null;}})[_0xbc00('0x18')](respondWithResult(_0x235536,null))['catch'](handleError(_0x235536,null));};exports[_0xbc00('0x140')]=function(_0x5c41e3,_0x46265c){return db[_0xbc00('0x3e')][_0xbc00('0x37')]({'where':{'id':_0x5c41e3[_0xbc00('0x59')]['id']}})[_0xbc00('0x18')](handleEntityNotFound(_0x46265c,null))[_0xbc00('0x18')](function(_0x12a45f){if(_0x12a45f){return _0x12a45f[_0xbc00('0x140')](_0x5c41e3[_0xbc00('0x62')]['ids'],_['omit'](_0x5c41e3[_0xbc00('0x62')],[_0xbc00('0x66'),'id'])||{});}})[_0xbc00('0x18')](respondWithResult(_0x46265c,null))[_0xbc00('0x58')](handleError(_0x46265c,null));};exports[_0xbc00('0x141')]=function(_0x29d6ef,_0x3c3411){return db[_0xbc00('0x3e')][_0xbc00('0x37')]({'where':{'id':_0x29d6ef[_0xbc00('0x59')]['id']}})[_0xbc00('0x18')](handleEntityNotFound(_0x3c3411,null))['then'](function(_0x1abdd8){if(_0x1abdd8){return _0x1abdd8[_0xbc00('0x141')](_0x29d6ef[_0xbc00('0x47')][_0xbc00('0x66')]);}})[_0xbc00('0x18')](respondWithStatusCode(_0x3c3411,null))[_0xbc00('0x58')](handleError(_0x3c3411,null));};exports[_0xbc00('0x142')]=function(_0x17586b,_0x4fff0f){var _0x57356a={};var _0x541bf3={};var _0x11b72c;var _0x5cc312;return db[_0xbc00('0x3e')][_0xbc00('0x9a')]({'where':{'id':_0x17586b[_0xbc00('0x59')]['id']}})[_0xbc00('0x18')](handleEntityNotFound(_0x4fff0f,null))[_0xbc00('0x18')](function(_0x2d0bcb){if(_0x2d0bcb){_0x11b72c=_0x2d0bcb;_0x541bf3[_0xbc00('0x5a')]=_[_0xbc00('0x5c')](db['OpenchannelAccount']['rawAttributes']);_0x541bf3[_0xbc00('0x47')]=_[_0xbc00('0x5c')](_0x17586b['query']);_0x541bf3['filters']=_[_0xbc00('0x5d')](_0x541bf3[_0xbc00('0x5a')],_0x541bf3[_0xbc00('0x47')]);_0x57356a[_0xbc00('0x4b')]=_['intersection'](_0x541bf3[_0xbc00('0x5a')],qs[_0xbc00('0x5e')](_0x17586b[_0xbc00('0x47')][_0xbc00('0x5e')]));_0x57356a[_0xbc00('0x4b')]=_0x57356a[_0xbc00('0x4b')][_0xbc00('0x51')]?_0x57356a[_0xbc00('0x4b')]:_0x541bf3['model'];_0x57356a[_0xbc00('0xd9')]=qs[_0xbc00('0xda')](_0x17586b['query'][_0xbc00('0xda')]);_0x57356a[_0xbc00('0x46')]=qs[_0xbc00('0xdb')](_['pick'](_0x17586b['query'],_0x541bf3[_0xbc00('0xdb')]));if(_0x17586b['query']['filter']){_0x57356a[_0xbc00('0x46')]=_[_0xbc00('0x5f')](_0x57356a['where'],{'$or':_['map'](_0x57356a['attributes'],function(_0x22b7bc){var _0x35c509={};_0x35c509[_0x22b7bc]={'$like':'%'+_0x17586b[_0xbc00('0x47')]['filter']+'%'};return _0x35c509;})});}_0x57356a=_[_0xbc00('0x5f')]({},_0x57356a,_0x17586b[_0xbc00('0x60')]);return _0x11b72c['getOpenchannelAccounts'](_0x57356a);}})['then'](function(_0x105350){if(_0x105350){_0x5cc312=_0x105350[_0xbc00('0x51')];if(!_0x17586b['query'][_0xbc00('0xd3')](_0xbc00('0xde'))){_0x57356a[_0xbc00('0x26')]=qs[_0xbc00('0x26')](_0x17586b['query']['limit']);_0x57356a[_0xbc00('0x24')]=qs[_0xbc00('0x24')](_0x17586b['query'][_0xbc00('0x24')]);}return _0x11b72c[_0xbc00('0x142')](_0x57356a);}})[_0xbc00('0x18')](function(_0x54c5b7){if(_0x54c5b7){return _0x54c5b7?{'count':_0x5cc312,'rows':_0x54c5b7}:null;}})[_0xbc00('0x18')](respondWithResult(_0x4fff0f,null))[_0xbc00('0x58')](handleError(_0x4fff0f,null));};exports[_0xbc00('0x143')]=function(_0x48c122,_0x2224f0){return db[_0xbc00('0x3e')]['find']({'where':{'id':_0x48c122[_0xbc00('0x59')]['id']}})[_0xbc00('0x18')](handleEntityNotFound(_0x2224f0,null))[_0xbc00('0x18')](function(_0x2a354d){if(_0x2a354d){return _0x2a354d[_0xbc00('0x143')](_0x48c122[_0xbc00('0x62')][_0xbc00('0x66')],_[_0xbc00('0x65')](_0x48c122[_0xbc00('0x62')],['ids','id'])||{});}})[_0xbc00('0x18')](respondWithResult(_0x2224f0,null))[_0xbc00('0x58')](handleError(_0x2224f0,null));};exports['removeOpenchannelAccounts']=function(_0x414b0c,_0x345746){return db[_0xbc00('0x3e')][_0xbc00('0x37')]({'where':{'id':_0x414b0c[_0xbc00('0x59')]['id']}})[_0xbc00('0x18')](handleEntityNotFound(_0x345746,null))[_0xbc00('0x18')](function(_0x595a5f){if(_0x595a5f){return _0x595a5f[_0xbc00('0x144')](_0x414b0c[_0xbc00('0x47')]['ids']);}})[_0xbc00('0x18')](respondWithStatusCode(_0x345746,null))[_0xbc00('0x58')](handleError(_0x345746,null));};exports[_0xbc00('0x145')]=function(_0x47c12f,_0x2f7c25){var _0x1234e5={};var _0x333682={};var _0x2934fb;var _0xd0519d;return db[_0xbc00('0x3e')][_0xbc00('0x9a')]({'where':{'id':_0x47c12f['params']['id']}})[_0xbc00('0x18')](handleEntityNotFound(_0x2f7c25,null))[_0xbc00('0x18')](function(_0x122b28){if(_0x122b28){_0x2934fb=_0x122b28;_0x333682['model']=_[_0xbc00('0x5c')](db[_0xbc00('0x146')]['rawAttributes']);_0x333682['query']=_[_0xbc00('0x5c')](_0x47c12f[_0xbc00('0x47')]);_0x333682[_0xbc00('0xdb')]=_['intersection'](_0x333682[_0xbc00('0x5a')],_0x333682[_0xbc00('0x47')]);_0x1234e5[_0xbc00('0x4b')]=_[_0xbc00('0x5d')](_0x333682[_0xbc00('0x5a')],qs[_0xbc00('0x5e')](_0x47c12f['query'][_0xbc00('0x5e')]));_0x1234e5[_0xbc00('0x4b')]=_0x1234e5[_0xbc00('0x4b')][_0xbc00('0x51')]?_0x1234e5['attributes']:_0x333682['model'];_0x1234e5[_0xbc00('0xd9')]=qs[_0xbc00('0xda')](_0x47c12f['query'][_0xbc00('0xda')]);_0x1234e5['where']=qs[_0xbc00('0xdb')](_[_0xbc00('0xdc')](_0x47c12f[_0xbc00('0x47')],_0x333682[_0xbc00('0xdb')]));if(_0x47c12f[_0xbc00('0x47')][_0xbc00('0x42')]){_0x1234e5['where']=_[_0xbc00('0x5f')](_0x1234e5[_0xbc00('0x46')],{'$or':_[_0xbc00('0x34')](_0x1234e5[_0xbc00('0x4b')],function(_0x312d41){var _0x178c8a={};_0x178c8a[_0x312d41]={'$like':'%'+_0x47c12f[_0xbc00('0x47')][_0xbc00('0x42')]+'%'};return _0x178c8a;})});}_0x1234e5=_['merge']({},_0x1234e5,_0x47c12f[_0xbc00('0x60')]);return _0x2934fb[_0xbc00('0x145')](_0x1234e5);}})[_0xbc00('0x18')](function(_0x5c07e1){if(_0x5c07e1){_0xd0519d=_0x5c07e1['length'];if(!_0x47c12f[_0xbc00('0x47')]['hasOwnProperty'](_0xbc00('0xde'))){_0x1234e5['limit']=qs['limit'](_0x47c12f[_0xbc00('0x47')][_0xbc00('0x26')]);_0x1234e5[_0xbc00('0x24')]=qs[_0xbc00('0x24')](_0x47c12f['query'][_0xbc00('0x24')]);}return _0x2934fb[_0xbc00('0x145')](_0x1234e5);}})[_0xbc00('0x18')](function(_0x12abd3){if(_0x12abd3){return _0x12abd3?{'count':_0xd0519d,'rows':_0x12abd3}:null;}})[_0xbc00('0x18')](respondWithResult(_0x2f7c25,null))[_0xbc00('0x58')](handleError(_0x2f7c25,null));};exports['addSmsAccounts']=function(_0x4f5ad3,_0x314350){return db[_0xbc00('0x3e')][_0xbc00('0x37')]({'where':{'id':_0x4f5ad3[_0xbc00('0x59')]['id']}})[_0xbc00('0x18')](handleEntityNotFound(_0x314350,null))[_0xbc00('0x18')](function(_0xb271f3){if(_0xb271f3){return _0xb271f3['addSmsAccounts'](_0x4f5ad3[_0xbc00('0x62')]['ids'],_[_0xbc00('0x65')](_0x4f5ad3[_0xbc00('0x62')],[_0xbc00('0x66'),'id'])||{});}})['then'](respondWithResult(_0x314350,null))['catch'](handleError(_0x314350,null));};exports[_0xbc00('0x147')]=function(_0x584629,_0x5102b6){return db['User'][_0xbc00('0x37')]({'where':{'id':_0x584629[_0xbc00('0x59')]['id']}})[_0xbc00('0x18')](handleEntityNotFound(_0x5102b6,null))[_0xbc00('0x18')](function(_0x23c284){if(_0x23c284){return _0x23c284[_0xbc00('0x147')](_0x584629[_0xbc00('0x47')][_0xbc00('0x66')]);}})[_0xbc00('0x18')](respondWithStatusCode(_0x5102b6,null))[_0xbc00('0x58')](handleError(_0x5102b6,null));};exports[_0xbc00('0x148')]=function(_0x49d5dc,_0x54d2c3){var _0x44ad92={};var _0x37c619={};var _0x2059cf;var _0x34642e;return db[_0xbc00('0x3e')][_0xbc00('0x9a')]({'where':{'id':_0x49d5dc[_0xbc00('0x59')]['id']}})[_0xbc00('0x18')](handleEntityNotFound(_0x54d2c3,null))[_0xbc00('0x18')](function(_0x21476f){if(_0x21476f){_0x2059cf=_0x21476f;_0x37c619[_0xbc00('0x5a')]=_[_0xbc00('0x5c')](db['ChatWebsite']['rawAttributes']);_0x37c619['query']=_['keys'](_0x49d5dc[_0xbc00('0x47')]);_0x37c619[_0xbc00('0xdb')]=_[_0xbc00('0x5d')](_0x37c619[_0xbc00('0x5a')],_0x37c619[_0xbc00('0x47')]);_0x44ad92[_0xbc00('0x4b')]=_[_0xbc00('0x5d')](_0x37c619[_0xbc00('0x5a')],qs[_0xbc00('0x5e')](_0x49d5dc['query'][_0xbc00('0x5e')]));_0x44ad92['attributes']=_0x44ad92['attributes']['length']?_0x44ad92['attributes']:_0x37c619[_0xbc00('0x5a')];_0x44ad92[_0xbc00('0xd9')]=qs[_0xbc00('0xda')](_0x49d5dc['query'][_0xbc00('0xda')]);_0x44ad92[_0xbc00('0x46')]=qs[_0xbc00('0xdb')](_[_0xbc00('0xdc')](_0x49d5dc[_0xbc00('0x47')],_0x37c619[_0xbc00('0xdb')]));if(_0x49d5dc[_0xbc00('0x47')][_0xbc00('0x42')]){_0x44ad92['where']=_[_0xbc00('0x5f')](_0x44ad92['where'],{'$or':_[_0xbc00('0x34')](_0x44ad92[_0xbc00('0x4b')],function(_0x1bf7ff){var _0x5c1c32={};_0x5c1c32[_0x1bf7ff]={'$like':'%'+_0x49d5dc[_0xbc00('0x47')][_0xbc00('0x42')]+'%'};return _0x5c1c32;})});}_0x44ad92=_[_0xbc00('0x5f')]({},_0x44ad92,_0x49d5dc['options']);return _0x2059cf[_0xbc00('0x148')](_0x44ad92);}})['then'](function(_0x38277e){if(_0x38277e){_0x34642e=_0x38277e[_0xbc00('0x51')];if(!_0x49d5dc['query'][_0xbc00('0xd3')]('nolimit')){_0x44ad92['limit']=qs[_0xbc00('0x26')](_0x49d5dc[_0xbc00('0x47')][_0xbc00('0x26')]);_0x44ad92[_0xbc00('0x24')]=qs['offset'](_0x49d5dc['query'][_0xbc00('0x24')]);}return _0x2059cf[_0xbc00('0x148')](_0x44ad92);}})[_0xbc00('0x18')](function(_0x3de4c0){if(_0x3de4c0){return _0x3de4c0?{'count':_0x34642e,'rows':_0x3de4c0}:null;}})[_0xbc00('0x18')](respondWithResult(_0x54d2c3,null))[_0xbc00('0x58')](handleError(_0x54d2c3,null));};exports[_0xbc00('0x149')]=function(_0xd74d0,_0x1dab89){return db[_0xbc00('0x3e')][_0xbc00('0x37')]({'where':{'id':_0xd74d0[_0xbc00('0x59')]['id']}})[_0xbc00('0x18')](handleEntityNotFound(_0x1dab89,null))[_0xbc00('0x18')](function(_0x1c55fa){if(_0x1c55fa){return _0x1c55fa[_0xbc00('0x149')](_0xd74d0['body'][_0xbc00('0x66')],_['omit'](_0xd74d0['body'],[_0xbc00('0x66'),'id'])||{});}})[_0xbc00('0x18')](respondWithResult(_0x1dab89,null))['catch'](handleError(_0x1dab89,null));};exports[_0xbc00('0x14a')]=function(_0x14944a,_0x3b59fd){return db[_0xbc00('0x3e')][_0xbc00('0x37')]({'where':{'id':_0x14944a['params']['id']}})['then'](handleEntityNotFound(_0x3b59fd,null))[_0xbc00('0x18')](function(_0x283b92){if(_0x283b92){return _0x283b92[_0xbc00('0x14a')](_0x14944a[_0xbc00('0x47')][_0xbc00('0x66')]);}})[_0xbc00('0x18')](respondWithStatusCode(_0x3b59fd,null))[_0xbc00('0x58')](handleError(_0x3b59fd,null));};exports[_0xbc00('0x14b')]=function(_0xb4be31,_0x330c30){var _0x2d632e={};var _0x26595b={};var _0x57137f;var _0xaf07c4;return db[_0xbc00('0x3e')][_0xbc00('0x9a')]({'where':{'id':_0xb4be31[_0xbc00('0x59')]['id']}})['then'](handleEntityNotFound(_0x330c30,null))['then'](function(_0x46b31a){if(_0x46b31a){_0x57137f=_0x46b31a;_0x26595b[_0xbc00('0x5a')]=_[_0xbc00('0x5c')](db['WhatsappAccount'][_0xbc00('0x3f')]);_0x26595b[_0xbc00('0x47')]=_[_0xbc00('0x5c')](_0xb4be31[_0xbc00('0x47')]);_0x26595b[_0xbc00('0xdb')]=_[_0xbc00('0x5d')](_0x26595b[_0xbc00('0x5a')],_0x26595b[_0xbc00('0x47')]);_0x2d632e['attributes']=_[_0xbc00('0x5d')](_0x26595b[_0xbc00('0x5a')],qs[_0xbc00('0x5e')](_0xb4be31['query']['fields']));_0x2d632e['attributes']=_0x2d632e['attributes'][_0xbc00('0x51')]?_0x2d632e[_0xbc00('0x4b')]:_0x26595b['model'];_0x2d632e[_0xbc00('0xd9')]=qs[_0xbc00('0xda')](_0xb4be31[_0xbc00('0x47')][_0xbc00('0xda')]);_0x2d632e[_0xbc00('0x46')]=qs[_0xbc00('0xdb')](_[_0xbc00('0xdc')](_0xb4be31['query'],_0x26595b[_0xbc00('0xdb')]));if(_0xb4be31['query'][_0xbc00('0x42')]){_0x2d632e['where']=_[_0xbc00('0x5f')](_0x2d632e[_0xbc00('0x46')],{'$or':_[_0xbc00('0x34')](_0x2d632e[_0xbc00('0x4b')],function(_0x2e2d77){var _0x2e91aa={};_0x2e91aa[_0x2e2d77]={'$like':'%'+_0xb4be31[_0xbc00('0x47')][_0xbc00('0x42')]+'%'};return _0x2e91aa;})});}_0x2d632e=_['merge']({},_0x2d632e,_0xb4be31[_0xbc00('0x60')]);return _0x57137f['getWhatsappAccounts'](_0x2d632e);}})[_0xbc00('0x18')](function(_0x52093c){if(_0x52093c){_0xaf07c4=_0x52093c[_0xbc00('0x51')];if(!_0xb4be31[_0xbc00('0x47')][_0xbc00('0xd3')](_0xbc00('0xde'))){_0x2d632e[_0xbc00('0x26')]=qs[_0xbc00('0x26')](_0xb4be31[_0xbc00('0x47')][_0xbc00('0x26')]);_0x2d632e['offset']=qs['offset'](_0xb4be31['query'][_0xbc00('0x24')]);}return _0x57137f[_0xbc00('0x14b')](_0x2d632e);}})['then'](function(_0x515416){if(_0x515416){return _0x515416?{'count':_0xaf07c4,'rows':_0x515416}:null;}})[_0xbc00('0x18')](respondWithResult(_0x330c30,null))[_0xbc00('0x58')](handleError(_0x330c30,null));};exports[_0xbc00('0x14c')]=function(_0x452f1f,_0x462098){return db[_0xbc00('0x3e')]['find']({'where':{'id':_0x452f1f[_0xbc00('0x59')]['id']}})[_0xbc00('0x18')](handleEntityNotFound(_0x462098,null))[_0xbc00('0x18')](function(_0x143f70){if(_0x143f70){return _0x143f70['addWhatsappAccounts'](_0x452f1f[_0xbc00('0x62')]['ids'],_[_0xbc00('0x65')](_0x452f1f[_0xbc00('0x62')],['ids','id'])||{});}})[_0xbc00('0x18')](respondWithResult(_0x462098,null))[_0xbc00('0x58')](handleError(_0x462098,null));};exports[_0xbc00('0x14d')]=function(_0x4b7d90,_0x3934aa){return db[_0xbc00('0x3e')]['find']({'where':{'id':_0x4b7d90[_0xbc00('0x59')]['id']}})[_0xbc00('0x18')](handleEntityNotFound(_0x3934aa,null))[_0xbc00('0x18')](function(_0x53dbbf){if(_0x53dbbf){return _0x53dbbf[_0xbc00('0x14d')](_0x4b7d90[_0xbc00('0x47')][_0xbc00('0x66')]);}})[_0xbc00('0x18')](respondWithStatusCode(_0x3934aa,null))[_0xbc00('0x58')](handleError(_0x3934aa,null));};exports[_0xbc00('0x14e')]=function(_0x874184,_0x5b40d6){var _0x5705f6={},_0x10d06b={},_0x23ccd1={'count':0x0,'rows':[]};var _0x502a28=db[_0xbc00('0x14f')][_0xbc00('0x3f')];_0x10d06b[_0xbc00('0x5a')]=_[_0xbc00('0x5c')](_0x502a28);_0x10d06b['query']=_[_0xbc00('0x5c')](_0x874184[_0xbc00('0x47')]);_0x10d06b[_0xbc00('0xdb')]=_[_0xbc00('0x5d')](_0x10d06b[_0xbc00('0x5a')],_0x10d06b[_0xbc00('0x47')]);_0x10d06b[_0xbc00('0xdb')]=_[_0xbc00('0x102')](_0x10d06b[_0xbc00('0xdb')],[_0xbc00('0x150'),_0xbc00('0x151'),_0xbc00('0x152'),_0xbc00('0x153'),_0xbc00('0x154'),'$lte','$ne',_0xbc00('0x155'),_0xbc00('0x156'),'$between',_0xbc00('0x157'),_0xbc00('0x158'),_0xbc00('0x159'),_0xbc00('0x15a'),_0xbc00('0x15b'),_0xbc00('0x15c'),_0xbc00('0x15d'),'$like',_0xbc00('0x15e'),_0xbc00('0x15f'),_0xbc00('0x160'),'$any']);_0x5705f6[_0xbc00('0x4b')]=_[_0xbc00('0x5d')](_0x10d06b[_0xbc00('0x5a')],qs[_0xbc00('0x5e')](_0x874184[_0xbc00('0x47')]['fields']));_0x5705f6['attributes']=_0x5705f6[_0xbc00('0x4b')][_0xbc00('0x51')]?_0x5705f6[_0xbc00('0x4b')]:_0x10d06b[_0xbc00('0x5a')];if(!_0x874184[_0xbc00('0x47')][_0xbc00('0xd3')](_0xbc00('0xde'))){_0x5705f6[_0xbc00('0x26')]=qs[_0xbc00('0x26')](_0x874184[_0xbc00('0x47')][_0xbc00('0x26')]);_0x5705f6[_0xbc00('0x24')]=qs[_0xbc00('0x24')](_0x874184[_0xbc00('0x47')]['offset']);}_0x5705f6[_0xbc00('0xd9')]=qs['sort'](_0x874184['query']['sort']);_0x5705f6[_0xbc00('0x46')]=qs[_0xbc00('0xdb')](_['pick'](_0x874184[_0xbc00('0x47')],_0x10d06b['filters']));if(_0x874184[_0xbc00('0x47')][_0xbc00('0x42')]){_0x5705f6[_0xbc00('0x46')]=_['merge'](_0x5705f6[_0xbc00('0x46')],{'$or':_[_0xbc00('0x34')](_0x5705f6[_0xbc00('0x4b')],function(_0x56ff7b){var _0x367b57={};_0x367b57[_0x56ff7b]={'$like':'%'+_0x874184[_0xbc00('0x47')][_0xbc00('0x42')]+'%'};return _0x367b57;})});}_0x5705f6[_0xbc00('0x46')]={'$and':[_0x5705f6[_0xbc00('0x46')],{'$or':[{'UserId':_0x874184[_0xbc00('0x59')]['id']},{'OwnerId':_0x874184['params']['id']}]}]};_0x5705f6=_[_0xbc00('0x5f')]({},_0x5705f6,_0x874184[_0xbc00('0x60')]);var _0x206833={'where':_0x5705f6[_0xbc00('0x46')]};return db[_0xbc00('0x14f')][_0xbc00('0x27')](_0x206833)['then'](function(_0xfaafb3){_0x23ccd1[_0xbc00('0x27')]=_0xfaafb3;if(_0x874184[_0xbc00('0x47')][_0xbc00('0xd4')]){_0x5705f6[_0xbc00('0x48')]=[{'attributes':['id',_0xbc00('0x161'),_0xbc00('0x162'),_0xbc00('0xf3')],'model':db[_0xbc00('0x163')],'as':'Contact'},{'attributes':['id',_0xbc00('0x38'),'dialActive'],'model':db[_0xbc00('0xae')],'as':_0xbc00('0xd8')}];}return db[_0xbc00('0x14f')][_0xbc00('0x4d')](_0x5705f6);})[_0xbc00('0x18')](function(_0x4572ce){_0x23ccd1[_0xbc00('0x4e')]=_0x4572ce;return _0x23ccd1;})[_0xbc00('0x18')](respondWithFilteredResult(_0x5b40d6,_0x5705f6))[_0xbc00('0x58')](handleError(_0x5b40d6,null));};exports['getApiKey']=function(_0x38fd15,_0x2960bf){if(!_[_0xbc00('0x6c')](_0x38fd15['user']['id'])&&(_0x38fd15['user'][_0xbc00('0x2b')]==_0xbc00('0x2e')||_0x38fd15[_0xbc00('0x30')][_0xbc00('0x2b')]==_0xbc00('0x30'))){return db[_0xbc00('0x3e')][_0xbc00('0x9a')]({'where':{'id':_0x38fd15[_0xbc00('0x59')]['id']},'raw':!![]})[_0xbc00('0x18')](function(_0x34c882){return authService[_0xbc00('0x164')](_0x34c882);})[_0xbc00('0x18')](function(_0x3e2324){if(_0x3e2324){return _0x2960bf[_0xbc00('0x23')](0xc8)[_0xbc00('0x29')]({'api_key':_0x3e2324['token']});}else{return _0x2960bf[_0xbc00('0x23')](0xcc)[_0xbc00('0x29')]({'message':_0xbc00('0x165')});}})[_0xbc00('0x58')](handleError(_0x2960bf,0x193));}else{return _0x2960bf[_0xbc00('0x23')](0x191)[_0xbc00('0x29')]({'message':_0xbc00('0x166')});}};exports[_0xbc00('0x167')]=function(_0x68068a,_0x5331aa){if(!_[_0xbc00('0x6c')](_0x68068a[_0xbc00('0x30')]['id'])&&(_0x68068a['user']['role']=='admin'||_0x68068a['user'][_0xbc00('0x2b')]=='user')){return db[_0xbc00('0x3e')]['find']({'where':{'id':_0x68068a[_0xbc00('0x59')]['id']}})[_0xbc00('0x18')](function(_0x3d341c){return authService[_0xbc00('0x168')](_0x3d341c);})[_0xbc00('0x18')](function(_0x75f8c7){return db[_0xbc00('0x3e')][_0xbc00('0x2a')]({'apiKeyIat':_0x75f8c7['iat'],'apiKeyNonce':_0x75f8c7[_0xbc00('0x169')]},{'where':{'id':_0x68068a[_0xbc00('0x59')]['id']}})[_0xbc00('0x18')](function(){return _0x5331aa[_0xbc00('0x23')](0xc8)[_0xbc00('0x29')]({'api_key':_0x75f8c7[_0xbc00('0x16a')]});});})['catch'](handleError(_0x5331aa,0x193));}else{return _0x5331aa['status'](0x191)[_0xbc00('0x29')]({'message':_0xbc00('0x166')});}};exports[_0xbc00('0x16b')]=function(_0x4566a0,_0x3f8199){if(!_[_0xbc00('0x6c')](_0x4566a0['user']['id'])&&(_0x4566a0[_0xbc00('0x30')]['role']=='admin'||_0x4566a0[_0xbc00('0x30')]['role']==_0xbc00('0x30'))){return db['User'][_0xbc00('0x37')]({'where':{'id':_0x4566a0[_0xbc00('0x59')]['id']}})[_0xbc00('0x18')](handleEntityNotFound(_0x3f8199,null))[_0xbc00('0x18')](function(_0xa5f9d9){if(_0xa5f9d9&&_0xa5f9d9['apiKeyNonce']&&_0xa5f9d9[_0xbc00('0x16c')])return _0xa5f9d9;else throw{'message':'API\x20key\x20not\x20available'};})['then'](function(){return db['User']['update']({'apiKeyNonce':null,'apiKeyIat':null},{'where':{'id':_0x4566a0[_0xbc00('0x59')]['id']}});})[_0xbc00('0x18')](respondWithStatusCode(_0x3f8199,0xc8))['catch'](handleError(_0x3f8199,0x193));}else{return _0x3f8199[_0xbc00('0x23')](0x191)[_0xbc00('0x29')]({'message':_0xbc00('0x166')});}};exports[_0xbc00('0x16d')]=function(_0x4cee14,_0x2ff518){var _0x45b4a3=_0x4cee14['user'][_0xbc00('0xaf')]({'plain':!![]});if(!_0x45b4a3){return _0x2ff518[_0xbc00('0x23')](0x191)['send']('Unable\x20to\x20retrieve\x20the\x20current\x20user');}else{Promise['resolve']()[_0xbc00('0x18')](function(){if(_0x4cee14['query'][_0xbc00('0x49')]!==_0xbc00('0x50'))return;return _0x4cee14['user'][_0xbc00('0x16e')]();})[_0xbc00('0x18')](function(_0x1a8b3b){if(!_0x1a8b3b)return;return _0x1a8b3b[_0xbc00('0xaf')]({'plain':!![]});})[_0xbc00('0x18')](function(_0x2cd111){_0x45b4a3[_0xbc00('0x49')]=_0x2cd111;return _0x2ff518[_0xbc00('0x23')](0xc8)['json'](_0x45b4a3);});}};exports[_0xbc00('0x16f')]=function(_0x288d2a,_0x4c6b82){var _0x2d313b={'offset':0x0},_0x241e64={'count':0x0,'rows':[]};Promise['resolve']()[_0xbc00('0x18')](function(){if(!_0x288d2a[_0xbc00('0x47')]['filter']&&!_0x288d2a[_0xbc00('0x47')][_0xbc00('0x170')]&&!_0x288d2a[_0xbc00('0x47')][_0xbc00('0x171')])return[];return Promise[_0xbc00('0x105')]()[_0xbc00('0x18')](function(){var _0x19b635=[];if(!_[_0xbc00('0x172')](_0x288d2a[_0xbc00('0x47')]['teams'])){_0x19b635[_0xbc00('0x4c')](db[_0xbc00('0x113')]['findAll']({'attributes':['id','name'],'where':{'id':_0x288d2a[_0xbc00('0x47')][_0xbc00('0x170')]}}));}if(!_[_0xbc00('0x172')](_0x288d2a[_0xbc00('0x47')][_0xbc00('0x171')])){_0x19b635[_0xbc00('0x4c')](db[_0xbc00('0xae')][_0xbc00('0x4d')]({'attributes':['id',_0xbc00('0x38')],'type':_0xbc00('0x173'),'where':{'id':_0x288d2a['query'][_0xbc00('0x171')]}}));}return Promise[_0xbc00('0x57')](_0x19b635);})[_0xbc00('0x18')](function(_0x5289b4){var _0x3428cc=_[_0xbc00('0x174')](_0x5289b4)[_0xbc00('0x34')](function(_0x15809b){return _0x15809b[_0xbc00('0x124')]({'attributes':['id',_0xbc00('0x38'),_0xbc00('0x67'),'online'],'raw':!![]});});return Promise[_0xbc00('0x57')](_0x3428cc);})['then'](function(_0x24f491){var _0x5a83a5=_[_0xbc00('0x174')](_0x24f491);if(!_0x288d2a[_0xbc00('0x47')][_0xbc00('0x42')])return _0x5a83a5;if(_[_0xbc00('0x172')](_0x5a83a5)){return db[_0xbc00('0x3e')][_0xbc00('0x4d')]({'attributes':['id',_0xbc00('0x38'),'internal',_0xbc00('0xa0')],'where':{'role':'agent','$or':[db[_0xbc00('0x6e')]['where'](db[_0xbc00('0x6e')]['fn']('lower',db['sequelize'][_0xbc00('0x175')]('name')),{'$like':'%'+_0x288d2a['query'][_0xbc00('0x42')][_0xbc00('0xab')]()+'%'}),{'internal':{'$like':'%'+_0x288d2a[_0xbc00('0x47')][_0xbc00('0x42')]+'%'}}]},'raw':!![]});}else{return _(_0x5a83a5)[_0xbc00('0x174')]()[_0xbc00('0x42')](function(_0x1c7e4d){return _0x1c7e4d[_0xbc00('0x38')][_0xbc00('0xab')]()[_0xbc00('0x36')](_0x288d2a['query'][_0xbc00('0x42')][_0xbc00('0xab')]())||_0x1c7e4d[_0xbc00('0x67')][_0xbc00('0x176')]()['includes'](_0x288d2a[_0xbc00('0x47')][_0xbc00('0x42')]);})[_0xbc00('0x35')]();}})[_0xbc00('0x18')](function(_0x155607){var _0x378e92=_0xbc00('0x38');var _0x5b08bf=_0xbc00('0x177');if(_0x288d2a[_0xbc00('0x47')][_0xbc00('0xda')]){_0x5b08bf=_0x288d2a['query'][_0xbc00('0xda')][0x0]==='-'?_0xbc00('0x178'):'asc';_0x378e92=_0x5b08bf===_0xbc00('0x177')?_0x288d2a[_0xbc00('0x47')]['sort']:_0x288d2a[_0xbc00('0x47')]['sort'][_0xbc00('0x179')](0x1);}return _(_0x155607)[_0xbc00('0x17a')]('id')[_0xbc00('0x17b')]([function(_0xf90bfa){return _0x378e92===_0xbc00('0x38')?_0xf90bfa[_0x378e92][_0xbc00('0xab')]():_0xf90bfa[_0x378e92];}],[_0x5b08bf])[_0xbc00('0x34')](function(_0x4515cb){return _[_0xbc00('0xdc')](_0x4515cb,['id',_0xbc00('0x38'),'internal',_0xbc00('0xa0')]);})[_0xbc00('0x35')]();})[_0xbc00('0x18')](function(_0x2265b2){return amiClient[_0xbc00('0x17c')](_0xbc00('0x89'),_0x288d2a)['then'](function(_0x3a10bf){if(_0x3a10bf[_0xbc00('0x1f')])throw new Error(_0xbc00('0x17d'));var _0xb8e3d5=_0x3a10bf['result'];var _0x4b8c1c=jayson[_0xbc00('0x16')][_0xbc00('0x17')]({'port':0x232c});return _0x4b8c1c[_0xbc00('0x17c')]('Agents',_0x288d2a)[_0xbc00('0x18')](function(_0x27c95f){if(_0x27c95f['error'])throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)');var _0x347a92=_0x27c95f[_0xbc00('0x21')];return _[_0xbc00('0x5f')]({},_0x347a92,_0xb8e3d5);});})[_0xbc00('0x18')](function(_0x5817b3){return _[_0xbc00('0x34')](_0x2265b2,function(_0x63435b){var _0x322de5=_[_0xbc00('0x37')](_0x5817b3[_0xbc00('0x4e')],['id',_0x63435b['id']]);if(!_0x322de5||!_0x63435b[_0xbc00('0xa0')]){_0x63435b['status']=_0xbc00('0x17e');}else if(_0x322de5[_0xbc00('0xa2')]){_0x63435b[_0xbc00('0x23')]=_0xbc00('0x17f');}else{_0x63435b[_0xbc00('0x23')]=_['includes']([_0xbc00('0x180'),_0xbc00('0x181'),'unavailable',_0xbc00('0x182'),null,undefined],_0x322de5[_0xbc00('0x183')])?_0xbc00('0xa0'):_0xbc00('0x184');}return _0x63435b;});});});})[_0xbc00('0x18')](function(_0x183e2c){if(!_0x288d2a[_0xbc00('0x47')][_0xbc00('0xd3')]('nolimit')){_0x2d313b[_0xbc00('0x26')]=qs[_0xbc00('0x26')](_0x288d2a[_0xbc00('0x47')]['limit']||0xa);_0x2d313b[_0xbc00('0x24')]=qs[_0xbc00('0x24')](_0x288d2a[_0xbc00('0x47')]['offset']);}_0x241e64['count']=_0x183e2c['length'];_0x241e64[_0xbc00('0x4e')]=_0x2d313b[_0xbc00('0x26')]?_0x183e2c[_0xbc00('0x185')](_0x2d313b[_0xbc00('0x24')],_0x2d313b[_0xbc00('0x24')]+_0x2d313b[_0xbc00('0x26')]):_0x183e2c;return _0x241e64;})[_0xbc00('0x18')](respondWithFilteredResult(_0x4c6b82,_0x2d313b))[_0xbc00('0x58')](handleError(_0x4c6b82,null));};function get_open_tabs(_0x1bbf91,_0x323a62){var _0x5eefcc=_0x1bbf91['charAt'](0x0)['toUpperCase']()+_0x1bbf91[_0xbc00('0x185')](0x1);var _0xb43e59={'type':db[_0xbc00('0x93')][_0xbc00('0x70')][_0xbc00('0x71')],'raw':!![]};return new Promise(function(_0x441728,_0x45a56f){var _0x2a62d8=squel['select']()[_0xbc00('0x186')](_0xbc00('0x187')+_0x5eefcc+_0xbc00('0x188'),'id')[_0xbc00('0x186')](_0xbc00('0x189'))[_0xbc00('0x72')](_0xbc00('0x18a')+_0x1bbf91+_0xbc00('0x18b'),'ui')[_0xbc00('0x46')]('ui.UserId\x20=\x20?',_0x323a62['id']);return db[_0xbc00('0x6e')][_0xbc00('0x47')](_0x2a62d8[_0xbc00('0x176')](),_0xb43e59)['then'](function(_0x5ea108){_0x323a62[_0x5eefcc+'OpenTabs']=_0x5ea108;_0x441728(_0x5ea108);})['catch'](function(_0x3a3ea0){_0x45a56f(_0x3a3ea0);});});}
\ No newline at end of file
+var _0x95e4=['offset','undefined','limit','count','status','set','update','then','agent','emit','userNotification:recalc:','role','admin','user','Telephones','telephone','filter','map','value','includes','find','destroy','end','sendStatus','stack','name','send','index','rawAttributes','fieldName','type','key','password','salt','getOptions','User','includeAll','include','userSetting','true','UserSetting','attributes','push','findAll','rows','query','openTabs','length','chat','dataValues','sms','fax','mail','whatsapp','all','show','params','differenceBy','keys','intersection','model','fields','merge','options','openchannel','body','describe','addContacts','ids','omit','securePassword','validatePasswordPattern','max','min_internal','isNil','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','email','permissions','102','103','113','104','105','106','108','111','114','Unauthorized','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20another\x20administrator','checkUserLimits','settingsEnabled','userProfileId','Agents','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','some','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20administrator','UserProfileSection','isEmpty','compact','changePassword','oldPassword','newPassword','Sequelize','ValidationError','Invalid\x20body\x20format.\x20Use\x20oldPassword\x20and\x20newPassword','authenticate','Wrong\x20credentials','Invalid\x20body\x20format.\x20Use\x20newPassword','Setting','findOne','passwordHistoryLimit','enforcePasswordHistory','previousPasswords','updatePasswordsHistory','addQueues','channel','voicePause','interface','Unknown\x20channel','add','toLowerCase','Queues','penalty','spread','capitalize','QueueId','voice','get','SIP/%s','UserVoiceQueueRt','upsert','removeQueues','isArray','Queue:remove','addAvatar','userpic','filename','getAvatar','root','download','server/files/images/','join','getOpenTabs','ChatOpenTabs','CHAT','createdAt','FaxOpenTabs','OpenchannelOpenTabs','OPENCHANNEL','MailOpenTabs','MAIL','WHATSAPP','concat','getContacts','format','User\x20with\x20id\x20%s\x20not\x20found','CmList','Tag','Tags','tag','getQueues','isValidChannel','Queue','filters','sort','where','pick','Unknown\x20role','hasOwnProperty','nolimit','getVoiceQueuesRt','ChatGroup','getGroups','getRecordings','VoiceRecording','order','ScreenRecording','UserId','getChatInteractions','ChatInteraction','getOpenchannelInteractions','OpenchannelInteraction','getMailInteractions','MailInteraction','SmsInteraction','getSmsInteractions','getFaxInteractions','FaxInteraction','getWhatsappInteractions','WhatsappInteraction','phone','loginInPause','LOCAL/%s@from-sip/n','intrf','user:%s','headers','connection','remoteAddress','socket','User\x20not\x20found\x20or\x20not\x20allowed\x20to\x20perform\x20login\x20method','UserVoiceQueue.penalty','YYYY-MM-DD\x20HH:mm:ss','getChannels','forEach','LOGIN','device','PAUSE','bulkCreate','LOGININPAUSE','isMiddleware','resolve','logout','MemberReport','online','QueuePause','pause','unpause','Channel\x20parameter\x20%s\x20is\x20invalid','mailPause','chatPause','faxPause','openchannelPause','smsPause','whatsappPause','getTeams','Body\x20parameter\x20\x27ids\x27\x20is\x20required','addTeams','Team','getDataValue','TeamVoicePrefix','Queue:save','removeTeams','Query\x20parameter\x20\x27ids\x27\x20is\x20required','getAssociatedQueues','removeAgent','UserVoicePrefix','getLists','getAgents','getVoiceQueues','You\x20can\x27t\x20delete\x20yourself','addChatInteractions','user_has_chat_interactions:save','removeChatInteractions','user_has_chat_interactions:remove','addMailInteractions','user_has_mail_interactions:save','removeMailInteractions','user_has_mail_interactions:remove','addFaxInteractions','removeFaxInteractions','user_has_fax_interactions:remove','addSmsInteractions','user_has_sms_interactions:save','removeSmsInteractions','addOpenchannelInteractions','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','addWhatsappInteractions','removeWhatsappInteractions','VoicePrefix','getVoicePrefixes','getFaxAccounts','addFaxAccounts','getMailAccounts','addMailAccounts','removeMailAccounts','getOpenchannelAccounts','OpenchannelAccount','addOpenchannelAccounts','removeOpenchannelAccounts','getSmsAccounts','addSmsAccounts','removeSmsAccounts','getChatWebsites','ChatWebsite','addChatWebsites','removeChatWebsites','getWhatsappAccounts','WhatsappAccount','addWhatsappAccounts','removeWhatsappAccounts','getScheduledCalls','CmHopper','$and','$or','$gt','$gte','$lt','$lte','$ne','$eq','$not','$between','$notBetween','$in','$notIn','$like','$notLike','$iLike','$notILike','$overlap','$contained','$any','lastName','Contact','getApiKey','retrieveApiKey','token','No\x20API\x20access\x20key\x20found!','You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.','generateApiKey','iat','removeApiKey','apiKeyNonce','apiKeyIat','whoami','Unable\x20to\x20retrieve\x20the\x20current\x20user','teams','queues','VoiceQueue','inbound','flatten','lower','col','toString','asc','desc','substring','uniqBy','orderBy','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','offline','unknown','unavailable','ringing','busy','charAt','toUpperCase','slice','QueryTypes','select','field','ui.','user_has_','_interactions','ui.UserId\x20=\x20?','OpenTabs','moment','path','lodash','squel','jayson/promise','ioredis','../../components/auth/service','../../components/contacts','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../errors/api','APIBadRequestError','APINotFoundError','../../mysqldb','socket.io-emitter','redis','defaults','localhost','client','http','request','info','User,\x20%s,\x20%s','request\x20sent','debug','User,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','json'];(function(_0x1ab0e6,_0x17ba8d){var _0x248815=function(_0x5d2b40){while(--_0x5d2b40){_0x1ab0e6['push'](_0x1ab0e6['shift']());}};_0x248815(++_0x17ba8d);}(_0x95e4,0x166));var _0x495e=function(_0x513a7b,_0x29e928){_0x513a7b=_0x513a7b-0x0;var _0x38522f=_0x95e4[_0x513a7b];return _0x38522f;};'use strict';var moment=require(_0x495e('0x0'));var util=require('util');var path=require(_0x495e('0x1'));var fs=require('fs');var _=require(_0x495e('0x2'));var squel=require(_0x495e('0x3'));var jayson=require(_0x495e('0x4'));var Redis=require(_0x495e('0x5'));var authService=require(_0x495e('0x6'));var contacts=require(_0x495e('0x7'));var qs=require('../../components/parsers/qs');var logger=require(_0x495e('0x8'))('api');var utils=require(_0x495e('0x9'));var config=require(_0x495e('0xa'));var licenseUtil=require(_0x495e('0xb'));var APIBadRequestError=require(_0x495e('0xc'))[_0x495e('0xd')];var APINotFoundError=require(_0x495e('0xc'))[_0x495e('0xe')];var APIHandleError=require(_0x495e('0xc'))['handleError'];var db=require(_0x495e('0xf'))['db'];var socket=require(_0x495e('0x10'))(new Redis(config[_0x495e('0x11')]));require('./user.socket')['register'](socket);config[_0x495e('0x11')]=_[_0x495e('0x12')](config[_0x495e('0x11')],{'host':_0x495e('0x13'),'port':0x18eb});var amiClient=jayson[_0x495e('0x14')][_0x495e('0x15')]({'port':0x232a});var values;function respondWithRpcPromise(_0x22a4a9,_0x5c63c0,_0x364586,_0x383552){return new Promise(function(_0x144ae9,_0x208fb1){var _0x9c0a2e=_0x383552||amiClient;return _0x9c0a2e[_0x495e('0x16')](_0x22a4a9,_0x364586)['then'](function(_0x256083){logger[_0x495e('0x17')](_0x495e('0x18'),_0x5c63c0,_0x495e('0x19'));logger[_0x495e('0x1a')](_0x495e('0x1b'),_0x5c63c0,'request\x20sent',JSON[_0x495e('0x1c')](_0x256083));if(_0x256083[_0x495e('0x1d')]){if(_0x256083[_0x495e('0x1d')][_0x495e('0x1e')]===0x1f4){logger[_0x495e('0x1d')](_0x495e('0x18'),_0x5c63c0,_0x256083[_0x495e('0x1d')][_0x495e('0x1f')]);return _0x208fb1(_0x256083[_0x495e('0x1d')]['message']);}logger[_0x495e('0x1d')](_0x495e('0x18'),_0x5c63c0,_0x256083[_0x495e('0x1d')][_0x495e('0x1f')]);return _0x144ae9(_0x256083[_0x495e('0x1d')]['message']);}else{logger[_0x495e('0x17')](_0x495e('0x18'),_0x5c63c0,_0x495e('0x19'));_0x144ae9(_0x256083[_0x495e('0x20')]['message']);}})[_0x495e('0x21')](function(_0x283394){logger[_0x495e('0x1d')]('User,\x20%s,\x20%s',_0x5c63c0,_0x283394);_0x208fb1(_0x283394);});});}function respondWithStatusCode(_0x1ebf82,_0x4445a9){_0x4445a9=_0x4445a9||0xcc;return function(_0x580f37){if(_0x580f37){return _0x1ebf82['sendStatus'](_0x4445a9);}return _0x1ebf82['status'](_0x4445a9)['end']();};}function respondWithResult(_0x40f92b,_0x571969){_0x571969=_0x571969||0xc8;return function(_0x5340d2){if(_0x5340d2){return _0x40f92b['status'](_0x571969)[_0x495e('0x22')](_0x5340d2);}};}function respondWithFilteredResult(_0x18c76a,_0x1dfdfe){return function(_0x463918){if(_0x463918){var _0x31d6db=typeof _0x1dfdfe[_0x495e('0x23')]===_0x495e('0x24')&&typeof _0x1dfdfe[_0x495e('0x25')]===_0x495e('0x24');var _0x2b0fb=_0x463918[_0x495e('0x26')];var _0x23251f=_0x31d6db?0x0:_0x1dfdfe[_0x495e('0x23')];var _0x4a3bd9=_0x31d6db?_0x463918['count']:_0x1dfdfe['offset']+_0x1dfdfe[_0x495e('0x25')];var _0x52541e;if(_0x4a3bd9>=_0x2b0fb){_0x4a3bd9=_0x2b0fb;_0x52541e=0xc8;}else{_0x52541e=0xce;}_0x18c76a[_0x495e('0x27')](_0x52541e);return _0x18c76a[_0x495e('0x28')]('Content-Range',_0x23251f+'-'+_0x4a3bd9+'/'+_0x2b0fb)[_0x495e('0x22')](_0x463918);}return null;};}function saveUpdates(_0x173dfe){return function(_0xb0edf6){if(_0xb0edf6){return _0xb0edf6[_0x495e('0x29')](_0x173dfe)[_0x495e('0x2a')](function(_0x30a186){if(_0x30a186['role']===_0x495e('0x2b')){socket[_0x495e('0x2c')](_0x495e('0x2d')+_0x30a186['id'],_0x30a186);}return _0x30a186;});}return null;};}function removeEntity(_0xc9bba6){return function(_0x5ac6f0){if(_0x5ac6f0){return _0x5ac6f0['destroy']()[_0x495e('0x2a')](function(){var _0x3f8167=_0x5ac6f0['get']({'plain':!![]});if(_0x3f8167[_0x495e('0x2e')]===_0x495e('0x2f'))return;var _0x4f6d4b=[{'name':'Users','value':_0x495e('0x30'),'ignore':!![]},{'name':'Agents','value':_0x495e('0x2b'),'ignore':![]},{'name':_0x495e('0x31'),'value':_0x495e('0x32'),'ignore':![]}];var _0x1bf18d=_(_0x4f6d4b)[_0x495e('0x33')]('ignore')[_0x495e('0x34')](_0x495e('0x35'))[_0x495e('0x35')]();if(_[_0x495e('0x36')](_0x1bf18d,_0x3f8167['role'])){return;}var _0xba86a2=_[_0x495e('0x37')](_0x4f6d4b,['value',_0x3f8167['role']])['name'];return db['UserProfileResource'][_0x495e('0x38')]({'where':{'type':_0xba86a2,'resourceId':_0x3f8167['id']}})['then'](function(){return _0x5ac6f0;});})[_0x495e('0x2a')](function(){_0xc9bba6[_0x495e('0x27')](0xcc)[_0x495e('0x39')]();});}};}function handleEntityNotFound(_0x585efe){return function(_0x1682ee){if(!_0x1682ee){_0x585efe[_0x495e('0x3a')](0x194);}return _0x1682ee;};}function handleError(_0x515ba3,_0x1b5f41){_0x1b5f41=_0x1b5f41||0x1f4;return function(_0x143a07){logger[_0x495e('0x1d')](_0x143a07[_0x495e('0x3b')]);if(_0x143a07[_0x495e('0x3c')]){delete _0x143a07[_0x495e('0x3c')];}_0x515ba3[_0x495e('0x27')](_0x1b5f41)[_0x495e('0x3d')](_0x143a07);};}exports[_0x495e('0x3e')]=function(_0x20f148,_0x56aaa8){var _0x33af39={},_0x1cf738={'count':0x0,'rows':[]};var _0x4e9c97=_(db['User'][_0x495e('0x3f')])[_0x495e('0x34')](function(_0x112895){return{'name':_0x112895[_0x495e('0x40')],'type':_0x112895[_0x495e('0x41')][_0x495e('0x42')]};})[_0x495e('0x33')](function(_0x454956){return!_['includes']([_0x495e('0x43'),_0x495e('0x44')],_0x454956['name']);})[_0x495e('0x35')]();_0x33af39=qs[_0x495e('0x45')](_0x4e9c97,_0x20f148);var _0x5cfdea={'where':_0x33af39['where']};return db[_0x495e('0x46')][_0x495e('0x26')](_0x5cfdea)[_0x495e('0x2a')](function(_0x493d1e){_0x1cf738[_0x495e('0x26')]=_0x493d1e;if(_0x20f148['query'][_0x495e('0x47')]){_0x33af39[_0x495e('0x48')]=[{'all':!![]}];}if(_0x20f148['query'][_0x495e('0x49')]===_0x495e('0x4a')){_0x33af39[_0x495e('0x48')]=[{'model':db[_0x495e('0x4b')],'as':'userSetting'}];}if(!_[_0x495e('0x36')](_0x33af39[_0x495e('0x4c')],'id')){_0x33af39[_0x495e('0x4c')][_0x495e('0x4d')]('id');}return db[_0x495e('0x46')][_0x495e('0x4e')](_0x33af39);})[_0x495e('0x2a')](function(_0x4b9d17){_0x1cf738[_0x495e('0x4f')]=_0x4b9d17;if(_0x20f148[_0x495e('0x50')][_0x495e('0x51')]===_0x495e('0x4a')){var _0x810130=[];for(var _0x201ae3=0x0;_0x201ae3<_0x1cf738[_0x495e('0x4f')][_0x495e('0x52')];_0x201ae3++){_0x810130['push'](get_open_tabs(_0x495e('0x53'),_0x1cf738['rows'][_0x201ae3][_0x495e('0x54')]));_0x810130['push'](get_open_tabs(_0x495e('0x55'),_0x1cf738['rows'][_0x201ae3][_0x495e('0x54')]));_0x810130[_0x495e('0x4d')](get_open_tabs(_0x495e('0x56'),_0x1cf738['rows'][_0x201ae3][_0x495e('0x54')]));_0x810130[_0x495e('0x4d')](get_open_tabs(_0x495e('0x57'),_0x1cf738[_0x495e('0x4f')][_0x201ae3][_0x495e('0x54')]));_0x810130[_0x495e('0x4d')](get_open_tabs('openchannel',_0x1cf738[_0x495e('0x4f')][_0x201ae3][_0x495e('0x54')]));_0x810130[_0x495e('0x4d')](get_open_tabs(_0x495e('0x58'),_0x1cf738['rows'][_0x201ae3][_0x495e('0x54')]));}return Promise[_0x495e('0x59')](_0x810130)[_0x495e('0x2a')](function(){return _0x1cf738;});}else{return _0x1cf738;}})[_0x495e('0x2a')](respondWithFilteredResult(_0x56aaa8,_0x33af39))[_0x495e('0x21')](handleError(_0x56aaa8,null));};exports[_0x495e('0x5a')]=function(_0x1cd837,_0x3c0002){var _0xfd78eb={'raw':![],'where':{'id':_0x1cd837[_0x495e('0x5b')]['id']}},_0x110cc9={};_0x110cc9['model']=_[_0x495e('0x5c')](_[_0x495e('0x5d')](db[_0x495e('0x46')][_0x495e('0x3f')]),[_0x495e('0x43'),'salt']);_0x110cc9[_0x495e('0x50')]=_[_0x495e('0x5d')](_0x1cd837[_0x495e('0x50')]);_0x110cc9['filters']=_[_0x495e('0x5e')](_0x110cc9[_0x495e('0x5f')],_0x110cc9[_0x495e('0x50')]);_0xfd78eb[_0x495e('0x4c')]=_[_0x495e('0x5e')](_0x110cc9['model'],qs[_0x495e('0x60')](_0x1cd837[_0x495e('0x50')]['fields']));_0xfd78eb[_0x495e('0x4c')]=_0xfd78eb[_0x495e('0x4c')][_0x495e('0x52')]?_0xfd78eb[_0x495e('0x4c')]:_0x110cc9[_0x495e('0x5f')];if(_0x1cd837[_0x495e('0x50')]['includeAll']){_0xfd78eb[_0x495e('0x48')]=[{'all':!![]}];}if(_0x1cd837[_0x495e('0x50')]['userSetting']==='true'){_0xfd78eb[_0x495e('0x48')]=[{'model':db[_0x495e('0x4b')],'as':_0x495e('0x49')}];}_0xfd78eb=_[_0x495e('0x61')]({},_0xfd78eb,_0x1cd837[_0x495e('0x62')]);if(!_[_0x495e('0x36')](_0xfd78eb[_0x495e('0x4c')],'id')){_0xfd78eb[_0x495e('0x4c')]['push']('id');}return db[_0x495e('0x46')]['find'](_0xfd78eb)[_0x495e('0x2a')](handleEntityNotFound(_0x3c0002,null))['then'](function(_0x48eb30){var _0x2e0482=[];values=_0x48eb30;if(_0x1cd837[_0x495e('0x50')][_0x495e('0x51')]===_0x495e('0x4a')){_0x2e0482['push'](get_open_tabs(_0x495e('0x53'),_0x48eb30[_0x495e('0x54')]));_0x2e0482[_0x495e('0x4d')](get_open_tabs(_0x495e('0x55'),_0x48eb30[_0x495e('0x54')]));_0x2e0482[_0x495e('0x4d')](get_open_tabs(_0x495e('0x63'),_0x48eb30[_0x495e('0x54')]));_0x2e0482[_0x495e('0x4d')](get_open_tabs(_0x495e('0x58'),_0x48eb30[_0x495e('0x54')]));_0x2e0482[_0x495e('0x4d')](get_open_tabs(_0x495e('0x56'),_0x48eb30['dataValues']));_0x2e0482[_0x495e('0x4d')](get_open_tabs(_0x495e('0x57'),_0x48eb30['dataValues']));return Promise[_0x495e('0x59')](_0x2e0482);}else{return values;}})[_0x495e('0x2a')](function(){return values;})['then'](respondWithResult(_0x3c0002,null))[_0x495e('0x21')](handleError(_0x3c0002,null));};exports[_0x495e('0x29')]=function(_0x571f3b,_0x5b1ce9){if(_0x571f3b[_0x495e('0x64')]['id']){delete _0x571f3b[_0x495e('0x64')]['id'];}delete _0x571f3b['body'][_0x495e('0x2e')];return db['User'][_0x495e('0x37')]({'where':{'id':_0x571f3b[_0x495e('0x5b')]['id']}})[_0x495e('0x2a')](handleEntityNotFound(_0x5b1ce9,null))['then'](saveUpdates(_0x571f3b[_0x495e('0x64')],null))[_0x495e('0x2a')](respondWithResult(_0x5b1ce9,null))[_0x495e('0x21')](handleError(_0x5b1ce9,null));};exports[_0x495e('0x65')]=function(_0x5bc8a7,_0x44b88b){return db[_0x495e('0x46')][_0x495e('0x65')]()['then'](respondWithResult(_0x44b88b,null))['catch'](handleError(_0x44b88b,null));};exports[_0x495e('0x66')]=function(_0x4e0484,_0x4cdac3){return db['User'][_0x495e('0x37')]({'where':{'id':_0x4e0484[_0x495e('0x5b')]['id']}})[_0x495e('0x2a')](handleEntityNotFound(_0x4cdac3,null))[_0x495e('0x2a')](function(_0x2c8681){if(_0x2c8681){return _0x2c8681[_0x495e('0x66')](_0x4e0484[_0x495e('0x64')][_0x495e('0x67')],_[_0x495e('0x68')](_0x4e0484['body'],['ids','id'])||{});}})[_0x495e('0x2a')](respondWithResult(_0x4cdac3,null))[_0x495e('0x21')](handleError(_0x4cdac3,null));};function validateUser(_0x8c4b21){return new Promise(function(_0x344d0b,_0x186ce0){if(_0x8c4b21['internal'])return _0x344d0b(_0x8c4b21);return db['Setting']['findById'](0x1)['then'](function(_0x48a2f6){if(_0x48a2f6[_0x495e('0x69')])authService[_0x495e('0x6a')](_0x8c4b21[_0x495e('0x43')]);db['User'][_0x495e('0x6b')]('internal')[_0x495e('0x2a')](function(_0x1645d6){if(_['isNil'](_0x1645d6)){_0x8c4b21['internal']=_0x48a2f6[_0x495e('0x6c')]||0x1;return;}if(_[_0x495e('0x6d')](_0x48a2f6[_0x495e('0x6c')])||_0x48a2f6[_0x495e('0x6c')]===_0x1645d6){_0x8c4b21['internal']=_0x1645d6+0x1;return;}if(_0x48a2f6['min_internal']>_0x1645d6){_0x8c4b21[_0x495e('0x6e')]=_0x48a2f6[_0x495e('0x6c')];return;}return db['sequelize'][_0x495e('0x50')](_0x495e('0x6f'),{'type':db[_0x495e('0x70')]['QueryTypes'][_0x495e('0x71')]})[_0x495e('0x2a')](function(_0x581448){if(_0x581448&&_0x581448[_0x495e('0x52')]){for(var _0x58227e=0x0,_0x2779b8=_0x581448[_0x495e('0x52')];_0x58227e<_0x2779b8&&_[_0x495e('0x6d')](_0x8c4b21[_0x495e('0x6e')]);_0x58227e++){if(_0x48a2f6['min_internal']<=_0x581448[_0x58227e][_0x495e('0x72')]){_0x8c4b21[_0x495e('0x6e')]=_0x581448[_0x58227e][_0x495e('0x72')];}else if(_0x48a2f6['min_internal']>_0x581448[_0x58227e]['from']&&_0x48a2f6[_0x495e('0x6c')]<=_0x581448[_0x58227e]['to']){_0x8c4b21[_0x495e('0x6e')]=_0x48a2f6[_0x495e('0x6c')];}}}if(_[_0x495e('0x6d')](_0x8c4b21[_0x495e('0x6e')])){_0x8c4b21[_0x495e('0x6e')]=_0x1645d6+0x1;}return _0x344d0b(_0x8c4b21);});});})[_0x495e('0x21')](function(_0x55f703){_0x186ce0(_0x55f703);});});}function updateUser(_0x40a572){return new Promise(function(_0x45ec45,_0x4935bd){try{if(_0x40a572[_0x495e('0x73')]){_0x40a572[_0x495e('0x74')]=_0x40a572[_0x495e('0x6e')];_0x40a572[_0x495e('0x75')]={'mailbox':_0x40a572[_0x495e('0x6e')],'password':_0x40a572[_0x495e('0x43')],'fullname':_0x40a572['fullname'],'email':_0x40a572[_0x495e('0x76')]};}if(_0x40a572[_0x495e('0x2e')]===_0x495e('0x2b')){if(!_0x40a572['permissions'])_0x40a572[_0x495e('0x77')]=['101',_0x495e('0x78'),_0x495e('0x79'),_0x495e('0x7a'),'110',_0x495e('0x7b'),_0x495e('0x7c'),_0x495e('0x7d'),'107',_0x495e('0x7e'),'109','100',_0x495e('0x7f'),_0x495e('0x80'),'115'];}_0x45ec45(_0x40a572);}catch(_0x296f42){_0x4935bd(_0x296f42);}});}exports['create']=function(_0x13749f,_0x341759){if(_0x13749f[_0x495e('0x30')][_0x495e('0x2e')]==='agent')throw new Error(_0x495e('0x81'));if(_0x13749f[_0x495e('0x64')][_0x495e('0x2e')]==='user'&&_0x13749f[_0x495e('0x30')][_0x495e('0x2e')]!==_0x495e('0x2f')){throw new Error(_0x495e('0x82'));}if(_0x13749f[_0x495e('0x64')][_0x495e('0x2e')]===_0x495e('0x2f')&&_0x13749f['user'][_0x495e('0x2e')]!=='admin'){throw new Error(_0x495e('0x83'));}return licenseUtil[_0x495e('0x84')]([_0x13749f['body']])['then'](function(){return validateUser(_0x13749f[_0x495e('0x64')]);})[_0x495e('0x2a')](function(_0x3f78cc){return updateUser(_0x3f78cc)[_0x495e('0x2a')](function(_0x2f1483){if(_0x2f1483[_0x495e('0x2e')]===_0x495e('0x2f')){_0x2f1483[_0x495e('0x85')]=_0x13749f['user'][_0x495e('0x85')];delete _0x2f1483[_0x495e('0x86')];}return _0x2f1483;});})[_0x495e('0x2a')](function(_0x1f2494){return db['User']['create'](_0x1f2494,{'include':[{'model':db[_0x495e('0x75')],'as':_0x495e('0x75')}]});})[_0x495e('0x2a')](function(_0x5355f1){if(_0x13749f[_0x495e('0x64')]['role']===_0x495e('0x30'))return _0x5355f1;if(_0x13749f[_0x495e('0x30')][_0x495e('0x2e')]!==_0x495e('0x30'))return _0x5355f1;return db['UserProfileSection']['find']({'where':{'name':_0x5355f1['role']===_0x495e('0x2b')?_0x495e('0x87'):'Telephones','userProfileId':_0x13749f[_0x495e('0x30')][_0x495e('0x86')]},'raw':!![]})['then'](function(_0x3ed272){if(!_0x3ed272||_0x3ed272[_0x495e('0x88')]!=0x0)return _0x5355f1;return db['UserProfileResource'][_0x495e('0x89')]({'name':_0x5355f1[_0x495e('0x3c')],'resourceId':_0x5355f1['id'],'type':_0x3ed272[_0x495e('0x3c')],'sectionId':_0x3ed272['id']},{})[_0x495e('0x2a')](function(){return _0x5355f1;});})[_0x495e('0x21')](function(_0x39cc5d){logger[_0x495e('0x1d')](_0x495e('0x8a'),_0x39cc5d);throw _0x39cc5d;});})[_0x495e('0x2a')](respondWithResult(_0x341759,0xc9))['catch'](handleError(_0x341759,null));};exports['bulkCreate']=function(_0x370087,_0x14b4cd){var _0x2f5692=_0x370087[_0x495e('0x64')];var _0x1e8a70=[];if(_0x370087[_0x495e('0x30')][_0x495e('0x2e')]===_0x495e('0x2b'))throw new Error(_0x495e('0x81'));if(_[_0x495e('0x8b')](_0x2f5692,[_0x495e('0x2e'),_0x495e('0x30')])&&_0x370087[_0x495e('0x30')][_0x495e('0x2e')]!==_0x495e('0x2f')){throw new Error(_0x495e('0x82'));}if(_['some'](_0x2f5692,[_0x495e('0x2e'),'admin'])&&_0x370087[_0x495e('0x30')]['role']!=='admin'){throw new Error(_0x495e('0x8c'));}return licenseUtil[_0x495e('0x84')](_0x2f5692)[_0x495e('0x2a')](function(){return validateUser(_0x2f5692[0x0]);})['then'](function(){for(var _0x25e47e=0x1;_0x25e47e<_0x2f5692[_0x495e('0x52')];_0x25e47e++){var _0x3dd8bc=_0x2f5692[_0x25e47e-0x1][_0x495e('0x6e')];if(!_0x2f5692[_0x25e47e][_0x495e('0x6e')])_0x2f5692[_0x25e47e][_0x495e('0x6e')]=_0x3dd8bc+0x1;_0x1e8a70[_0x495e('0x4d')](validateUser(_0x2f5692[_0x25e47e]));}return Promise[_0x495e('0x59')](_0x1e8a70);})[_0x495e('0x2a')](function(){_0x1e8a70=[];for(var _0x27b7b0=0x0;_0x27b7b0<_0x2f5692[_0x495e('0x52')];_0x27b7b0++){_0x1e8a70[_0x495e('0x4d')](updateUser(_0x2f5692[_0x27b7b0]));}return Promise[_0x495e('0x59')](_0x1e8a70);})[_0x495e('0x2a')](function(){_0x1e8a70=_0x2f5692[_0x495e('0x34')](function(_0x5ce2cf){return db[_0x495e('0x46')]['create'](_0x5ce2cf,{'include':[{'model':db['VoiceMail'],'as':_0x495e('0x75')}]})[_0x495e('0x2a')](function(_0x4ddb4d){_0x5ce2cf['id']=_0x4ddb4d['id'];return _0x5ce2cf;});});return Promise[_0x495e('0x59')](_0x1e8a70);})['then'](function(_0x46ea85){if(_0x370087[_0x495e('0x64')]['role']===_0x495e('0x30'))return _0x46ea85;if(_0x370087['user'][_0x495e('0x2e')]!==_0x495e('0x30'))return _0x46ea85;var _0x4d6c5d=_[_0x495e('0x8b')](_0x46ea85,function(_0x196a92){return _0x196a92[_0x495e('0x2e')]===_0x495e('0x2b')||_0x196a92[_0x495e('0x2e')]===_0x495e('0x32');});if(!_0x4d6c5d)return _0x46ea85;return db[_0x495e('0x8d')][_0x495e('0x4e')]({'where':{'name':{'$or':[_0x495e('0x87'),_0x495e('0x31')]},'userProfileId':_0x370087['user']['userProfileId']},'raw':!![]})[_0x495e('0x2a')](function(_0x34e9a2){if(_[_0x495e('0x8e')](_0x34e9a2)||!_[_0x495e('0x8b')](_0x34e9a2,[_0x495e('0x88'),0x0]))return _0x46ea85;_0x1e8a70=[];var _0x3d6dea=_(_0x34e9a2)[_0x495e('0x34')](function(_0x46ab25){if(_0x46ab25['autoAssociation']===0x1)return;return _0x46ab25['name']===_0x495e('0x87')?_0x495e('0x2b'):'telephone';})[_0x495e('0x8f')]()['value']();for(var _0x12b809=0x0;_0x12b809<_0x46ea85['length'];_0x12b809++){if(!_[_0x495e('0x36')](_0x3d6dea,_0x46ea85[_0x12b809][_0x495e('0x2e')]))return;var _0x24e4e8=_0x46ea85[_0x12b809][_0x495e('0x2e')]==='agent'?'Agents':'Telephones';_0x1e8a70[_0x495e('0x4d')](db['UserProfileResource'][_0x495e('0x89')]({'name':_0x46ea85[_0x12b809]['name'],'resourceId':_0x46ea85[_0x12b809]['id'],'type':_0x24e4e8,'sectionId':_[_0x495e('0x37')](_0x34e9a2,[_0x495e('0x3c'),_0x24e4e8])['id']},{}));}return Promise[_0x495e('0x59')](_0x1e8a70);});})[_0x495e('0x2a')](respondWithResult(_0x14b4cd,0xc9))[_0x495e('0x21')](handleError(_0x14b4cd,null));};exports[_0x495e('0x90')]=function(_0xb9f511,_0x5545e2){if(_0xb9f511['body']['id']){delete _0xb9f511[_0x495e('0x64')]['id'];}return db[_0x495e('0x46')][_0x495e('0x37')]({'where':{'id':_0xb9f511[_0x495e('0x5b')]['id']}})['then'](function(_0x48a70f){if(!_0x48a70f)return null;if(_0x48a70f['id']===_0xb9f511['user']['id']){if(!_0xb9f511[_0x495e('0x64')][_0x495e('0x91')]||!_0xb9f511[_0x495e('0x64')][_0x495e('0x92')]){throw new db[(_0x495e('0x93'))][(_0x495e('0x94'))](_0x495e('0x95'));}if(!_0x48a70f[_0x495e('0x96')](_0xb9f511[_0x495e('0x64')]['oldPassword'])){throw new db[(_0x495e('0x93'))]['ValidationError'](_0x495e('0x97'));}if(_0xb9f511[_0x495e('0x64')]['oldPassword']===_0xb9f511['body'][_0x495e('0x92')]){throw new db[(_0x495e('0x93'))]['ValidationError']('New\x20password\x20must\x20be\x20different\x20from\x20old\x20password');}}else if(_0xb9f511[_0x495e('0x30')][_0x495e('0x2e')]===_0x495e('0x2f')){if(!_0xb9f511['body'][_0x495e('0x92')]){throw new db[(_0x495e('0x93'))][(_0x495e('0x94'))]('Invalid\x20body\x20format.\x20Use\x20newPassword');}}else if(_0xb9f511[_0x495e('0x30')][_0x495e('0x2e')]===_0x495e('0x30')){if(!_0xb9f511[_0x495e('0x64')][_0x495e('0x92')]){throw new db[(_0x495e('0x93'))]['ValidationError'](_0x495e('0x98'));}if(_0x48a70f[_0x495e('0x2e')]!==_0x495e('0x2b')){throw new db[(_0x495e('0x93'))][(_0x495e('0x94'))](_0x495e('0x81'));}}else{throw new db[(_0x495e('0x93'))][(_0x495e('0x94'))]('Unauthorized');}return _0x48a70f;})['then'](handleEntityNotFound(_0x5545e2,null))[_0x495e('0x2a')](function(_0x432f68){return db[_0x495e('0x99')][_0x495e('0x9a')]({'attributes':['id',_0x495e('0x69'),'enforcePasswordHistory',_0x495e('0x9b')]})['then'](function(_0x475fc1){if(_0x475fc1[_0x495e('0x69')])authService['validatePasswordPattern'](_0xb9f511[_0x495e('0x64')][_0x495e('0x92')]);if(!_0x475fc1[_0x495e('0x9c')]||!_0x432f68[_0x495e('0x9d')])return _0x432f68;authService['validatePasswordHistory'](_0xb9f511[_0x495e('0x64')][_0x495e('0x92')],_0x432f68['previousPasswords'],_0x475fc1['passwordHistoryLimit']);return _0x432f68;})[_0x495e('0x2a')](saveUpdates({'password':_0xb9f511[_0x495e('0x64')][_0x495e('0x92')],'passwordResetAt':_0xb9f511[_0x495e('0x30')]['id']==_0xb9f511['params']['id']?moment():null,'previousPasswords':authService[_0x495e('0x9e')](_0xb9f511[_0x495e('0x64')][_0x495e('0x92')],_0x432f68[_0x495e('0x9d')])},null));})[_0x495e('0x2a')](respondWithResult(_0x5545e2,null))['catch'](handleError(_0x5545e2,null));};exports[_0x495e('0x9f')]=function(_0x114192,_0x46793a){var _0x4ea94b=_0x114192[_0x495e('0x64')][_0x495e('0xa0')];return db[_0x495e('0x46')][_0x495e('0x37')]({'where':{'id':_0x114192[_0x495e('0x5b')]['id']},'attributes':['id','name',_0x495e('0x2e'),'online','loginInPause',_0x495e('0xa1'),_0x495e('0xa2')]})[_0x495e('0x2a')](handleEntityNotFound(_0x46793a,null))[_0x495e('0x2a')](function(_0x5634cf){if(_0x5634cf){if(!utils['isValidChannel'](_0x4ea94b)){throw new db[(_0x495e('0x93'))][(_0x495e('0x94'))](_0x495e('0xa3'));}return _0x5634cf[_0x495e('0xa4')+_['capitalize'](_0x4ea94b[_0x495e('0xa5')]())+_0x495e('0xa6')](_0x114192[_0x495e('0x64')][_0x495e('0x67')],{'penalty':_0x114192[_0x495e('0x64')][_0x495e('0xa7')]||0x0})[_0x495e('0xa8')](function(_0x43fce8){for(var _0x2f3113=0x0;_0x2f3113<_0x114192[_0x495e('0x64')][_0x495e('0x67')]['length'];_0x2f3113+=0x1){var _0x349ce8={'UserId':Number(_0x114192[_0x495e('0x5b')]['id'])};_0x349ce8[_[_0x495e('0xa9')](_0x4ea94b[_0x495e('0xa5')]())+_0x495e('0xaa')]=Number(_0x114192[_0x495e('0x64')][_0x495e('0x67')][_0x2f3113]);socket[_0x495e('0x2c')](_0x495e('0x30')+_[_0x495e('0xa9')](_0x4ea94b[_0x495e('0xa5')]())+'Queue:save',_0x349ce8);}return _0x43fce8;})[_0x495e('0x2a')](function(){if(_0x4ea94b===_0x495e('0xab')){return db['VoiceQueue'][_0x495e('0x4e')]({'where':{'id':_0x114192[_0x495e('0x64')]['ids']||[]},'raw':!![],'attributes':['id','name']});}})[_0x495e('0x2a')](function(_0x1142f0){var _0x79a4a8=_0x5634cf[_0x495e('0xac')]({'plain':!![]});var _0x25e603=[];if(_0x4ea94b===_0x495e('0xab')&&_0x79a4a8[_0x495e('0x2e')]===_0x495e('0x2b')&&_0x79a4a8['online']){for(let _0x4b3778=0x0;_0x4b3778<_0x1142f0[_0x495e('0x52')];_0x4b3778+=0x1){_0x25e603[_0x495e('0x4d')]({'membername':_0x79a4a8['name'],'UserId':_0x79a4a8['id'],'queue_name':_0x1142f0[_0x4b3778]['name'],'VoiceQueueId':_0x1142f0[_0x4b3778]['id'],'interface':_[_0x495e('0x6d')](_0x79a4a8[_0x495e('0xa2')])?util['format'](_0x495e('0xad'),_0x79a4a8[_0x495e('0x3c')]):_0x79a4a8[_0x495e('0xa2')],'paused':_0x79a4a8[_0x495e('0xa1')]||![],'penalty':_0x114192[_0x495e('0x64')][_0x495e('0xa7')]||0x0});}return Promise['all'](_0x25e603[_0x495e('0x34')](function(_0x57603b){return db[_0x495e('0xae')][_0x495e('0xaf')](_0x57603b);}));}return _0x5634cf;});}})['then'](respondWithStatusCode(_0x46793a,null))[_0x495e('0x21')](handleError(_0x46793a,null));};exports[_0x495e('0xb0')]=function(_0x4d8a1b,_0x4a2e87){var _0x5411b7,_0xaa2d84;return db[_0x495e('0x46')][_0x495e('0x37')]({'where':{'id':_0x4d8a1b[_0x495e('0x5b')]['id']},'attributes':['id',_0x495e('0x3c'),_0x495e('0x2e')]})[_0x495e('0x2a')](handleEntityNotFound(_0x4a2e87,null))[_0x495e('0x2a')](function(_0x45e9c1){if(_0x45e9c1){_0x5411b7=_0x45e9c1;if(!_0x4d8a1b[_0x495e('0x50')][_0x495e('0xa0')]||!utils['isValidChannel'](_0x4d8a1b[_0x495e('0x50')]['channel'])){throw new db['Sequelize']['ValidationError'](_0x495e('0xa3'));}return _0x45e9c1['remove'+_[_0x495e('0xa9')](_0x4d8a1b[_0x495e('0x50')][_0x495e('0xa0')][_0x495e('0xa5')]())+_0x495e('0xa6')](_0x4d8a1b[_0x495e('0x50')][_0x495e('0x67')]);}})[_0x495e('0x2a')](function(_0x2af872){if(_[_0x495e('0xb1')](_0x4d8a1b[_0x495e('0x50')]['ids'])){for(var _0x15360b=0x0;_0x15360b<_0x4d8a1b['query'][_0x495e('0x67')][_0x495e('0x52')];_0x15360b+=0x1){_0xaa2d84={'UserId':Number(_0x4d8a1b[_0x495e('0x5b')]['id'])};_0xaa2d84[_[_0x495e('0xa9')](_0x4d8a1b[_0x495e('0x50')][_0x495e('0xa0')]['toLowerCase']())+_0x495e('0xaa')]=Number(_0x4d8a1b[_0x495e('0x50')][_0x495e('0x67')][_0x15360b]);socket['emit'](_0x495e('0x30')+_[_0x495e('0xa9')](_0x4d8a1b['query'][_0x495e('0xa0')][_0x495e('0xa5')]())+_0x495e('0xb2'),_0xaa2d84);}}else{_0xaa2d84={'UserId':Number(_0x4d8a1b[_0x495e('0x5b')]['id'])};_0xaa2d84[_[_0x495e('0xa9')](_0x4d8a1b[_0x495e('0x50')][_0x495e('0xa0')]['toLowerCase']())+_0x495e('0xaa')]=Number(_0x4d8a1b[_0x495e('0x50')]['ids']);socket[_0x495e('0x2c')](_0x495e('0x30')+_['capitalize'](_0x4d8a1b[_0x495e('0x50')][_0x495e('0xa0')][_0x495e('0xa5')]())+_0x495e('0xb2'),_0xaa2d84);}return _0x2af872;})[_0x495e('0x2a')](function(){if(_0x4d8a1b[_0x495e('0x50')][_0x495e('0xa0')]===_0x495e('0xab')){return db['UserVoiceQueueRt'][_0x495e('0x38')]({'where':{'UserId':_0x4d8a1b[_0x495e('0x5b')]['id'],'VoiceQueueId':_0x4d8a1b['query'][_0x495e('0x67')]},'individualHooks':!![]})[_0x495e('0x2a')](function(){return _0x5411b7;});}return _0x5411b7;})[_0x495e('0x2a')](respondWithStatusCode(_0x4a2e87,null))[_0x495e('0x21')](handleError(_0x4a2e87,null));};exports[_0x495e('0xb3')]=function(_0x5e0e09,_0x387e46){_0x5e0e09[_0x495e('0x64')][_0x495e('0xb4')]=_0x5e0e09['file'][_0x495e('0xb5')];return db[_0x495e('0x46')][_0x495e('0x37')]({'where':{'id':_0x5e0e09[_0x495e('0x5b')]['id']}})['then'](handleEntityNotFound(_0x387e46,null))[_0x495e('0x2a')](saveUpdates(_0x5e0e09[_0x495e('0x64')],null))[_0x495e('0x2a')](respondWithResult(_0x387e46,null))[_0x495e('0x21')](handleError(_0x387e46,null));};exports[_0x495e('0xb6')]=function(_0x3cdca2,_0xf3c1e1){var _0x2ab175=path['join'](config[_0x495e('0xb7')],'server/files/images/logos/default_profile.png');return db[_0x495e('0x46')][_0x495e('0x37')]({'where':{'id':_0x3cdca2[_0x495e('0x5b')]['id']},'attributes':['id',_0x495e('0xb4')],'raw':!![]})[_0x495e('0x2a')](handleEntityNotFound(_0xf3c1e1,null))['then'](function(_0x578918){if(_0x578918){if(_[_0x495e('0x6d')](_0x578918[_0x495e('0xb4')])){return _0xf3c1e1[_0x495e('0xb8')](_0x2ab175);}else{if(!fs['existsSync'](path['join'](config[_0x495e('0xb7')],_0x495e('0xb9'),_0x578918['userpic']))){return _0xf3c1e1['download'](_0x2ab175);}return _0xf3c1e1[_0x495e('0xb8')](path[_0x495e('0xba')](config[_0x495e('0xb7')],_0x495e('0xb9'),_0x578918[_0x495e('0xb4')]));}}})[_0x495e('0x21')](handleError(_0xf3c1e1,null));};exports[_0x495e('0xbb')]=function(_0x32c52a,_0x4f8674){return db[_0x495e('0x46')][_0x495e('0x37')]({'where':{'id':_0x32c52a[_0x495e('0x5b')]['id']},'attributes':['id']})[_0x495e('0x2a')](handleEntityNotFound(_0x4f8674,null))[_0x495e('0x2a')](function(_0x273574){var _0x3ea534=[];values=_0x273574[_0x495e('0x54')];_0x3ea534['push'](get_open_tabs('chat',_0x273574['dataValues']));_0x3ea534[_0x495e('0x4d')](get_open_tabs('sms',_0x273574['dataValues']));_0x3ea534[_0x495e('0x4d')](get_open_tabs('openchannel',_0x273574['dataValues']));_0x3ea534[_0x495e('0x4d')](get_open_tabs('whatsapp',_0x273574[_0x495e('0x54')]));_0x3ea534[_0x495e('0x4d')](get_open_tabs('fax',_0x273574[_0x495e('0x54')]));_0x3ea534[_0x495e('0x4d')](get_open_tabs(_0x495e('0x57'),_0x273574['dataValues']));return Promise['all'](_0x3ea534);})[_0x495e('0x2a')](function(_0x2f3601){if(_0x2f3601){var _0x43f244=_[_0x495e('0x34')](values[_0x495e('0xbc')],function(_0x3d055e){return{'channel':_0x495e('0xbd'),'id':_0x3d055e['id'],'createdAt':_0x3d055e[_0x495e('0xbe')]};});var _0x2046f1=_[_0x495e('0x34')](values[_0x495e('0xbf')],function(_0x2c744d){return{'channel':'FAX','id':_0x2c744d['id'],'createdAt':_0x2c744d[_0x495e('0xbe')]};});var _0x3b75e7=_['map'](values[_0x495e('0xc0')],function(_0x192bdb){return{'channel':_0x495e('0xc1'),'id':_0x192bdb['id'],'createdAt':_0x192bdb[_0x495e('0xbe')]};});var _0x5e2e85=_['map'](values[_0x495e('0xc2')],function(_0x539e17){return{'channel':_0x495e('0xc3'),'id':_0x539e17['id'],'createdAt':_0x539e17[_0x495e('0xbe')]};});var _0x285a12=_[_0x495e('0x34')](values['SmsOpenTabs'],function(_0x39a2ba){return{'channel':'SMS','id':_0x39a2ba['id'],'createdAt':_0x39a2ba[_0x495e('0xbe')]};});var _0x40bd01=_[_0x495e('0x34')](values['WhatsappOpenTabs'],function(_0x22bc38){return{'channel':_0x495e('0xc4'),'id':_0x22bc38['id'],'createdAt':_0x22bc38['createdAt']};});var _0x590293=_[_0x495e('0xc5')](_0x43f244,_0x2046f1,_0x3b75e7,_0x5e2e85,_0x285a12,_0x40bd01);var _0x78f3c0={'count':_0x590293['length'],'rows':_0x590293};return _0x78f3c0;}else return null;})['then'](respondWithResult(_0x4f8674,null))[_0x495e('0x21')](handleError(_0x4f8674,null));};exports[_0x495e('0xc6')]=function(_0x30b51b,_0x15dac3){var _0x6a2852={};return db[_0x495e('0x46')][_0x495e('0x9a')]({'where':{'id':_0x30b51b['params']['id']}})[_0x495e('0x2a')](function(_0x294d3e){if(!_0x294d3e){throw new APINotFoundError(util[_0x495e('0xc7')](_0x495e('0xc8'),_0x30b51b[_0x495e('0x5b')]['id']));}return contacts['describe']();})['then'](function(_0x350a4c){_0x30b51b[_0x495e('0x50')][_0x495e('0x46')]=_0x30b51b[_0x495e('0x5b')]['id'];_0x6a2852=qs['getOptions'](_0x350a4c,_0x30b51b);if(_0x30b51b['query']['hasOwnProperty'](_0x495e('0x47'))){_0x6a2852[_0x495e('0x48')]=[{'model':db[_0x495e('0xc9')],'as':'List','required':![]},{'model':db[_0x495e('0xca')],'as':_0x495e('0xcb'),'attributes':['id',_0x495e('0x3c'),'color'],'where':_0x30b51b[_0x495e('0x50')][_0x495e('0xcc')]?{'id':_0x30b51b['query'][_0x495e('0xcc')]}:undefined,'required':_0x30b51b['query'][_0x495e('0xcc')]?!![]:![]}];}return contacts[_0x495e('0x4e')](_0x30b51b[_0x495e('0x50')],_0x30b51b['user'],_0x6a2852,_0x350a4c);})[_0x495e('0x2a')](respondWithFilteredResult(_0x15dac3,_0x6a2852))[_0x495e('0x21')](APIHandleError(_0x15dac3));};exports[_0x495e('0xcd')]=function(_0x5a52f7,_0x351801){var _0x3615ce;var _0x43b725={};var _0x4fe9dc;return db[_0x495e('0x46')][_0x495e('0x9a')]({'where':{'id':_0x5a52f7[_0x495e('0x5b')]['id']},'attributes':['id',_0x495e('0x3c'),_0x495e('0x2e')]})[_0x495e('0x2a')](handleEntityNotFound(_0x351801,null))[_0x495e('0x2a')](function(_0x5d8065){if(!utils[_0x495e('0xce')](_0x5a52f7[_0x495e('0x50')][_0x495e('0xa0')])){throw new db['Sequelize']['ValidationError'](_0x495e('0xa3'));}_0x3615ce=_0x5d8065;var _0x31afe9={};_0x31afe9[_0x495e('0x5f')]=_[_0x495e('0x5d')](db[_[_0x495e('0xa9')](_0x5a52f7[_0x495e('0x50')][_0x495e('0xa0')])+_0x495e('0xcf')][_0x495e('0x3f')]);_0x31afe9[_0x495e('0x50')]=_[_0x495e('0x5d')](_0x5a52f7[_0x495e('0x50')]);_0x31afe9[_0x495e('0xd0')]=_['intersection'](_0x31afe9[_0x495e('0x5f')],_0x31afe9[_0x495e('0x50')]);_0x43b725[_0x495e('0x4c')]=_['intersection'](_0x31afe9[_0x495e('0x5f')],qs[_0x495e('0x60')](_0x5a52f7['query'][_0x495e('0x60')]));_0x43b725[_0x495e('0x4c')]=_0x43b725[_0x495e('0x4c')][_0x495e('0x52')]?_0x43b725['attributes']:_0x31afe9[_0x495e('0x5f')];_0x43b725['order']=qs[_0x495e('0xd1')](_0x5a52f7['query'][_0x495e('0xd1')]);_0x43b725[_0x495e('0xd2')]=qs[_0x495e('0xd0')](_[_0x495e('0xd3')](_0x5a52f7['query'],_0x31afe9[_0x495e('0xd0')]));if(_0x5a52f7[_0x495e('0x50')][_0x495e('0x33')]){_0x43b725[_0x495e('0xd2')]=_[_0x495e('0x61')](_0x43b725[_0x495e('0xd2')],{'$or':_[_0x495e('0x34')](_0x43b725[_0x495e('0x4c')],function(_0x173047){var _0x138755={};_0x138755[_0x173047]={'$like':'%'+_0x5a52f7[_0x495e('0x50')][_0x495e('0x33')]+'%'};return _0x138755;})});}_0x43b725=_['merge']({},_0x43b725,_0x5a52f7['options']);switch(_0x3615ce['role']){case _0x495e('0x2f'):return db[_[_0x495e('0xa9')](_0x5a52f7[_0x495e('0x50')][_0x495e('0xa0')])+'Queue']['findAll'](_0x43b725);case _0x495e('0x30'):case'agent':return _0x3615ce[_0x495e('0xac')+_[_0x495e('0xa9')](_0x5a52f7['query'][_0x495e('0xa0')])+'Queues'](_0x43b725);default:throw new db['Sequelize'][(_0x495e('0x94'))](_0x495e('0xd4'));}})[_0x495e('0x2a')](function(_0x4cc247){_0x4fe9dc=_0x4cc247[_0x495e('0x52')];if(!_0x5a52f7[_0x495e('0x50')][_0x495e('0xd5')](_0x495e('0xd6'))){_0x43b725[_0x495e('0x25')]=qs[_0x495e('0x25')](_0x5a52f7['query']['limit']);_0x43b725['offset']=qs[_0x495e('0x23')](_0x5a52f7[_0x495e('0x50')][_0x495e('0x23')]);}switch(_0x3615ce[_0x495e('0x2e')]){case'admin':return db[_[_0x495e('0xa9')](_0x5a52f7[_0x495e('0x50')][_0x495e('0xa0')])+_0x495e('0xcf')][_0x495e('0x4e')](_0x43b725);case _0x495e('0x30'):case _0x495e('0x2b'):return _0x3615ce[_0x495e('0xac')+_[_0x495e('0xa9')](_0x5a52f7[_0x495e('0x50')][_0x495e('0xa0')])+_0x495e('0xa6')](_0x43b725);}})[_0x495e('0x2a')](function(_0x3f12d0){return{'count':_0x4fe9dc,'rows':_0x3f12d0};})['then'](respondWithResult(_0x351801,null))[_0x495e('0x21')](handleError(_0x351801,null));};exports[_0x495e('0xd7')]=function(_0x136e7e,_0x449d7){var _0x175772={};var _0x25d531={};var _0x37ae2c;var _0xcaae3e;return db['User'][_0x495e('0x9a')]({'where':{'id':_0x136e7e[_0x495e('0x5b')]['id']}})[_0x495e('0x2a')](handleEntityNotFound(_0x449d7,null))['then'](function(_0x562539){if(_0x562539){_0x37ae2c=_0x562539;_0x25d531[_0x495e('0x5f')]=_[_0x495e('0x5d')](db[_0x495e('0xae')][_0x495e('0x3f')]);_0x25d531[_0x495e('0x50')]=_['keys'](_0x136e7e[_0x495e('0x50')]);_0x25d531[_0x495e('0xd0')]=_['intersection'](_0x25d531[_0x495e('0x5f')],_0x25d531[_0x495e('0x50')]);_0x175772[_0x495e('0x4c')]=_[_0x495e('0x5e')](_0x25d531[_0x495e('0x5f')],qs[_0x495e('0x60')](_0x136e7e[_0x495e('0x50')][_0x495e('0x60')]));_0x175772[_0x495e('0x4c')]=_0x175772[_0x495e('0x4c')][_0x495e('0x52')]?_0x175772[_0x495e('0x4c')]:_0x25d531[_0x495e('0x5f')];_0x175772['order']=qs['sort'](_0x136e7e[_0x495e('0x50')]['sort']);_0x175772[_0x495e('0xd2')]=qs[_0x495e('0xd0')](_['pick'](_0x136e7e[_0x495e('0x50')],_0x25d531['filters']));if(_0x136e7e['query']['filter']){_0x175772[_0x495e('0xd2')]=_['merge'](_0x175772[_0x495e('0xd2')],{'$or':_[_0x495e('0x34')](_0x175772[_0x495e('0x4c')],function(_0x5b1548){var _0x348421={};_0x348421[_0x5b1548]={'$like':'%'+_0x136e7e['query'][_0x495e('0x33')]+'%'};return _0x348421;})});}_0x175772=_[_0x495e('0x61')]({},_0x175772,_0x136e7e['options']);return _0x37ae2c[_0x495e('0xd7')](_0x175772);}})[_0x495e('0x2a')](function(_0x47009d){if(_0x47009d){_0xcaae3e=_0x47009d['length'];if(!_0x136e7e['query'][_0x495e('0xd5')](_0x495e('0xd6'))){_0x175772['limit']=qs[_0x495e('0x25')](_0x136e7e['query'][_0x495e('0x25')]);_0x175772[_0x495e('0x23')]=qs[_0x495e('0x23')](_0x136e7e[_0x495e('0x50')][_0x495e('0x23')]);}return _0x37ae2c[_0x495e('0xd7')](_0x175772);}})[_0x495e('0x2a')](function(_0x361cec){if(_0x361cec){return _0x361cec?{'count':_0xcaae3e,'rows':_0x361cec}:null;}})[_0x495e('0x2a')](respondWithResult(_0x449d7,null))[_0x495e('0x21')](handleError(_0x449d7,null));};exports['getGroups']=function(_0x4771f4,_0x325e8f){var _0x3789ec={};var _0x1a1eb9={};var _0x275bc0;var _0x15bef1;return db[_0x495e('0x46')][_0x495e('0x9a')]({'where':{'id':_0x4771f4['params']['id']}})[_0x495e('0x2a')](handleEntityNotFound(_0x325e8f,null))['then'](function(_0x467009){if(_0x467009){_0x275bc0=_0x467009;_0x1a1eb9['model']=_['keys'](db[_0x495e('0xd8')][_0x495e('0x3f')]);_0x1a1eb9[_0x495e('0x50')]=_[_0x495e('0x5d')](_0x4771f4[_0x495e('0x50')]);_0x1a1eb9[_0x495e('0xd0')]=_[_0x495e('0x5e')](_0x1a1eb9[_0x495e('0x5f')],_0x1a1eb9['query']);_0x3789ec[_0x495e('0x4c')]=_[_0x495e('0x5e')](_0x1a1eb9[_0x495e('0x5f')],qs[_0x495e('0x60')](_0x4771f4[_0x495e('0x50')][_0x495e('0x60')]));_0x3789ec[_0x495e('0x4c')]=_0x3789ec['attributes'][_0x495e('0x52')]?_0x3789ec[_0x495e('0x4c')]:_0x1a1eb9['model'];_0x3789ec['order']=qs['sort'](_0x4771f4[_0x495e('0x50')]['sort']);_0x3789ec['where']=qs['filters'](_[_0x495e('0xd3')](_0x4771f4[_0x495e('0x50')],_0x1a1eb9[_0x495e('0xd0')]));if(_0x4771f4['query'][_0x495e('0x33')]){_0x3789ec['where']=_[_0x495e('0x61')](_0x3789ec[_0x495e('0xd2')],{'$or':_[_0x495e('0x34')](_0x3789ec['attributes'],function(_0x109eab){var _0x4f2335={};_0x4f2335[_0x109eab]={'$like':'%'+_0x4771f4[_0x495e('0x50')][_0x495e('0x33')]+'%'};return _0x4f2335;})});}_0x3789ec=_[_0x495e('0x61')]({},_0x3789ec,_0x4771f4[_0x495e('0x62')]);return _0x275bc0[_0x495e('0xd9')](_0x3789ec);}})[_0x495e('0x2a')](function(_0x58b7e6){if(_0x58b7e6){_0x15bef1=_0x58b7e6[_0x495e('0x52')];if(!_0x4771f4['query']['hasOwnProperty']('nolimit')){_0x3789ec[_0x495e('0x25')]=qs[_0x495e('0x25')](_0x4771f4[_0x495e('0x50')]['limit']);_0x3789ec[_0x495e('0x23')]=qs[_0x495e('0x23')](_0x4771f4['query'][_0x495e('0x23')]);}return _0x275bc0['getGroups'](_0x3789ec);}})['then'](function(_0x349eba){if(_0x349eba){return _0x349eba?{'count':_0x15bef1,'rows':_0x349eba}:null;}})['then'](respondWithResult(_0x325e8f,null))[_0x495e('0x21')](handleError(_0x325e8f,null));};exports[_0x495e('0xda')]=function(_0x4de458,_0x5e37a0){var _0x1cb156={'raw':!![],'where':{}};var _0x565c76={};var _0x228514={'count':0x0,'rows':[]};return db[_0x495e('0x46')][_0x495e('0x9a')]({'where':{'id':_0x4de458[_0x495e('0x5b')]['id']}})[_0x495e('0x2a')](handleEntityNotFound(_0x5e37a0,null))['then'](function(_0x1c13cc){if(_0x1c13cc){_0x565c76[_0x495e('0x5f')]=_[_0x495e('0x5d')](db[_0x495e('0xdb')]['rawAttributes']);_0x565c76['query']=_['keys'](_0x4de458[_0x495e('0x50')]);_0x565c76[_0x495e('0xd0')]=_[_0x495e('0x5e')](_0x565c76['model'],_0x565c76[_0x495e('0x50')]);_0x1cb156[_0x495e('0x4c')]=_[_0x495e('0x5e')](_0x565c76[_0x495e('0x5f')],qs[_0x495e('0x60')](_0x4de458[_0x495e('0x50')]['fields']));_0x1cb156[_0x495e('0x4c')]=_0x1cb156[_0x495e('0x4c')][_0x495e('0x52')]?_0x1cb156[_0x495e('0x4c')]:_0x565c76[_0x495e('0x5f')];if(!_0x4de458[_0x495e('0x50')][_0x495e('0xd5')](_0x495e('0xd6'))){_0x1cb156['limit']=qs['limit'](_0x4de458[_0x495e('0x50')][_0x495e('0x25')]);_0x1cb156[_0x495e('0x23')]=qs[_0x495e('0x23')](_0x4de458[_0x495e('0x50')]['offset']);}_0x1cb156[_0x495e('0xdc')]=qs[_0x495e('0xd1')](_0x4de458['query'][_0x495e('0xd1')]);_0x1cb156[_0x495e('0xd2')]=qs[_0x495e('0xd0')](_['pick'](_0x4de458[_0x495e('0x50')],_0x565c76[_0x495e('0xd0')]));_0x1cb156[_0x495e('0xd2')]['UserId']=_0x1c13cc['id'];if(_0x4de458[_0x495e('0x50')]['filter']){_0x1cb156['where']=_[_0x495e('0x61')](_0x1cb156['where'],{'$or':_['map'](_0x1cb156['attributes'],function(_0x5b6097){var _0x5ab0ab={};_0x5ab0ab[_0x5b6097]={'$like':'%'+_0x4de458['query'][_0x495e('0x33')]+'%'};return _0x5ab0ab;})});}_0x1cb156=_[_0x495e('0x61')]({},_0x1cb156,_0x4de458['options']);return db[_0x495e('0xdb')][_0x495e('0x26')]({'where':_0x1cb156[_0x495e('0xd2')]})['then'](function(_0x230729){_0x228514[_0x495e('0x26')]=_0x230729;if(_0x4de458[_0x495e('0x50')][_0x495e('0x47')]){_0x1cb156['include']=[{'all':!![]}];}return db[_0x495e('0xdb')]['findAll'](_0x1cb156);})[_0x495e('0x2a')](function(_0x455aa9){_0x228514['rows']=_0x455aa9;return _0x228514;});}})[_0x495e('0x2a')](respondWithFilteredResult(_0x5e37a0,_0x1cb156))[_0x495e('0x21')](handleError(_0x5e37a0,null));};exports['getScreenRecordings']=function(_0x2941d0,_0x1f4dca){var _0x12c717={'raw':!![],'where':{}};var _0x51eac1={};var _0x20e62d={'count':0x0,'rows':[]};return db[_0x495e('0x46')][_0x495e('0x9a')]({'where':{'id':_0x2941d0['params']['id']}})[_0x495e('0x2a')](handleEntityNotFound(_0x1f4dca,null))['then'](function(_0x564348){if(_0x564348){_0x51eac1['model']=_[_0x495e('0x5d')](db[_0x495e('0xdd')]['rawAttributes']);_0x51eac1[_0x495e('0x50')]=_[_0x495e('0x5d')](_0x2941d0[_0x495e('0x50')]);_0x51eac1[_0x495e('0xd0')]=_[_0x495e('0x5e')](_0x51eac1[_0x495e('0x5f')],_0x51eac1[_0x495e('0x50')]);_0x12c717[_0x495e('0x4c')]=_[_0x495e('0x5e')](_0x51eac1[_0x495e('0x5f')],qs[_0x495e('0x60')](_0x2941d0[_0x495e('0x50')][_0x495e('0x60')]));_0x12c717[_0x495e('0x4c')]=_0x12c717[_0x495e('0x4c')][_0x495e('0x52')]?_0x12c717[_0x495e('0x4c')]:_0x51eac1[_0x495e('0x5f')];if(!_0x2941d0[_0x495e('0x50')][_0x495e('0xd5')](_0x495e('0xd6'))){_0x12c717[_0x495e('0x25')]=qs[_0x495e('0x25')](_0x2941d0[_0x495e('0x50')][_0x495e('0x25')]);_0x12c717[_0x495e('0x23')]=qs[_0x495e('0x23')](_0x2941d0[_0x495e('0x50')][_0x495e('0x23')]);}_0x12c717[_0x495e('0xdc')]=qs[_0x495e('0xd1')](_0x2941d0['query'][_0x495e('0xd1')]);_0x12c717['where']=qs['filters'](_[_0x495e('0xd3')](_0x2941d0['query'],_0x51eac1['filters']));_0x12c717['where'][_0x495e('0xde')]=_0x564348['id'];if(_0x2941d0[_0x495e('0x50')][_0x495e('0x33')]){_0x12c717[_0x495e('0xd2')]=_[_0x495e('0x61')](_0x12c717[_0x495e('0xd2')],{'$or':_[_0x495e('0x34')](_0x12c717[_0x495e('0x4c')],function(_0x3dff36){var _0x10ff45={};_0x10ff45[_0x3dff36]={'$like':'%'+_0x2941d0[_0x495e('0x50')][_0x495e('0x33')]+'%'};return _0x10ff45;})});}_0x12c717=_['merge']({},_0x12c717,_0x2941d0['options']);return db['ScreenRecording'][_0x495e('0x26')]({'where':_0x12c717[_0x495e('0xd2')]})['then'](function(_0x4031a8){_0x20e62d[_0x495e('0x26')]=_0x4031a8;if(_0x2941d0[_0x495e('0x50')]['includeAll']){_0x12c717[_0x495e('0x48')]=[{'all':!![]}];}return db[_0x495e('0xdd')][_0x495e('0x4e')](_0x12c717);})['then'](function(_0x4328fa){_0x20e62d[_0x495e('0x4f')]=_0x4328fa;return _0x20e62d;});}})[_0x495e('0x2a')](respondWithFilteredResult(_0x1f4dca,_0x12c717))['catch'](handleError(_0x1f4dca,null));};exports[_0x495e('0xdf')]=function(_0x5e4eb7,_0xcb7c30){var _0x40eb64={};var _0x2b38f4={};var _0xfd1606;var _0x1f8f54;return db[_0x495e('0x46')][_0x495e('0x9a')]({'where':{'id':_0x5e4eb7['params']['id']}})[_0x495e('0x2a')](handleEntityNotFound(_0xcb7c30,null))[_0x495e('0x2a')](function(_0x5c9eac){if(_0x5c9eac){_0xfd1606=_0x5c9eac;_0x2b38f4[_0x495e('0x5f')]=_[_0x495e('0x5d')](db[_0x495e('0xe0')][_0x495e('0x3f')]);_0x2b38f4[_0x495e('0x50')]=_['keys'](_0x5e4eb7[_0x495e('0x50')]);_0x2b38f4[_0x495e('0xd0')]=_[_0x495e('0x5e')](_0x2b38f4[_0x495e('0x5f')],_0x2b38f4['query']);_0x40eb64[_0x495e('0x4c')]=_['intersection'](_0x2b38f4[_0x495e('0x5f')],qs[_0x495e('0x60')](_0x5e4eb7[_0x495e('0x50')]['fields']));_0x40eb64[_0x495e('0x4c')]=_0x40eb64[_0x495e('0x4c')][_0x495e('0x52')]?_0x40eb64[_0x495e('0x4c')]:_0x2b38f4['model'];_0x40eb64[_0x495e('0xdc')]=qs[_0x495e('0xd1')](_0x5e4eb7[_0x495e('0x50')][_0x495e('0xd1')]);_0x40eb64[_0x495e('0xd2')]=qs[_0x495e('0xd0')](_[_0x495e('0xd3')](_0x5e4eb7[_0x495e('0x50')],_0x2b38f4[_0x495e('0xd0')]));if(_0x5e4eb7[_0x495e('0x50')]['filter']){_0x40eb64[_0x495e('0xd2')]=_['merge'](_0x40eb64[_0x495e('0xd2')],{'$or':_['map'](_0x40eb64[_0x495e('0x4c')],function(_0xf4c1c4){var _0x1eb26d={};_0x1eb26d[_0xf4c1c4]={'$like':'%'+_0x5e4eb7[_0x495e('0x50')][_0x495e('0x33')]+'%'};return _0x1eb26d;})});}_0x40eb64=_[_0x495e('0x61')]({},_0x40eb64,_0x5e4eb7[_0x495e('0x62')]);return _0xfd1606[_0x495e('0xdf')](_0x40eb64);}})[_0x495e('0x2a')](function(_0x49d28b){if(_0x49d28b){_0x1f8f54=_0x49d28b[_0x495e('0x52')];if(!_0x5e4eb7[_0x495e('0x50')][_0x495e('0xd5')](_0x495e('0xd6'))){_0x40eb64[_0x495e('0x25')]=qs[_0x495e('0x25')](_0x5e4eb7[_0x495e('0x50')][_0x495e('0x25')]);_0x40eb64[_0x495e('0x23')]=qs[_0x495e('0x23')](_0x5e4eb7[_0x495e('0x50')][_0x495e('0x23')]);}return _0xfd1606[_0x495e('0xdf')](_0x40eb64);}})[_0x495e('0x2a')](function(_0x4dce08){if(_0x4dce08){return _0x4dce08?{'count':_0x1f8f54,'rows':_0x4dce08}:null;}})[_0x495e('0x2a')](respondWithResult(_0xcb7c30,null))[_0x495e('0x21')](handleError(_0xcb7c30,null));};exports[_0x495e('0xe1')]=function(_0x43f97e,_0xaabe5d){var _0x266f25={};var _0x36648b={};var _0x58dae7;var _0x57b356;return db['User'][_0x495e('0x9a')]({'where':{'id':_0x43f97e['params']['id']}})['then'](handleEntityNotFound(_0xaabe5d,null))[_0x495e('0x2a')](function(_0x1d8ff3){if(_0x1d8ff3){_0x58dae7=_0x1d8ff3;_0x36648b[_0x495e('0x5f')]=_[_0x495e('0x5d')](db[_0x495e('0xe2')][_0x495e('0x3f')]);_0x36648b['query']=_[_0x495e('0x5d')](_0x43f97e['query']);_0x36648b[_0x495e('0xd0')]=_[_0x495e('0x5e')](_0x36648b[_0x495e('0x5f')],_0x36648b['query']);_0x266f25[_0x495e('0x4c')]=_[_0x495e('0x5e')](_0x36648b['model'],qs[_0x495e('0x60')](_0x43f97e['query']['fields']));_0x266f25['attributes']=_0x266f25[_0x495e('0x4c')][_0x495e('0x52')]?_0x266f25[_0x495e('0x4c')]:_0x36648b[_0x495e('0x5f')];_0x266f25[_0x495e('0xdc')]=qs['sort'](_0x43f97e[_0x495e('0x50')][_0x495e('0xd1')]);_0x266f25[_0x495e('0xd2')]=qs[_0x495e('0xd0')](_[_0x495e('0xd3')](_0x43f97e['query'],_0x36648b[_0x495e('0xd0')]));if(_0x43f97e[_0x495e('0x50')][_0x495e('0x33')]){_0x266f25['where']=_[_0x495e('0x61')](_0x266f25[_0x495e('0xd2')],{'$or':_[_0x495e('0x34')](_0x266f25[_0x495e('0x4c')],function(_0x37ea9c){var _0x4cff03={};_0x4cff03[_0x37ea9c]={'$like':'%'+_0x43f97e['query'][_0x495e('0x33')]+'%'};return _0x4cff03;})});}_0x266f25=_['merge']({},_0x266f25,_0x43f97e['options']);return _0x58dae7[_0x495e('0xe1')](_0x266f25);}})['then'](function(_0x4dc318){if(_0x4dc318){_0x57b356=_0x4dc318[_0x495e('0x52')];if(!_0x43f97e[_0x495e('0x50')][_0x495e('0xd5')](_0x495e('0xd6'))){_0x266f25[_0x495e('0x25')]=qs[_0x495e('0x25')](_0x43f97e['query']['limit']);_0x266f25['offset']=qs['offset'](_0x43f97e[_0x495e('0x50')][_0x495e('0x23')]);}return _0x58dae7[_0x495e('0xe1')](_0x266f25);}})[_0x495e('0x2a')](function(_0x585a99){if(_0x585a99){return _0x585a99?{'count':_0x57b356,'rows':_0x585a99}:null;}})[_0x495e('0x2a')](respondWithResult(_0xaabe5d,null))[_0x495e('0x21')](handleError(_0xaabe5d,null));};exports[_0x495e('0xe3')]=function(_0x406f0d,_0x4df9d3){var _0x1a657f={'raw':!![],'where':{}};var _0x1237b9={};var _0x4c0ed5={'count':0x0,'rows':[]};return db['User'][_0x495e('0x9a')]({'where':{'id':_0x406f0d['params']['id']}})[_0x495e('0x2a')](handleEntityNotFound(_0x4df9d3,null))['then'](function(_0xeee882){if(_0xeee882){_0x1237b9[_0x495e('0x5f')]=_[_0x495e('0x5d')](db[_0x495e('0xe4')][_0x495e('0x3f')]);_0x1237b9[_0x495e('0x50')]=_[_0x495e('0x5d')](_0x406f0d[_0x495e('0x50')]);_0x1237b9[_0x495e('0xd0')]=_[_0x495e('0x5e')](_0x1237b9[_0x495e('0x5f')],_0x1237b9[_0x495e('0x50')]);_0x1a657f[_0x495e('0x4c')]=_[_0x495e('0x5e')](_0x1237b9[_0x495e('0x5f')],qs[_0x495e('0x60')](_0x406f0d[_0x495e('0x50')]['fields']));_0x1a657f[_0x495e('0x4c')]=_0x1a657f['attributes']['length']?_0x1a657f[_0x495e('0x4c')]:_0x1237b9[_0x495e('0x5f')];if(!_0x406f0d[_0x495e('0x50')][_0x495e('0xd5')](_0x495e('0xd6'))){_0x1a657f[_0x495e('0x25')]=qs[_0x495e('0x25')](_0x406f0d[_0x495e('0x50')][_0x495e('0x25')]);_0x1a657f[_0x495e('0x23')]=qs[_0x495e('0x23')](_0x406f0d[_0x495e('0x50')][_0x495e('0x23')]);}_0x1a657f['order']=qs['sort'](_0x406f0d[_0x495e('0x50')][_0x495e('0xd1')]);_0x1a657f[_0x495e('0xd2')]=qs[_0x495e('0xd0')](_[_0x495e('0xd3')](_0x406f0d[_0x495e('0x50')],_0x1237b9[_0x495e('0xd0')]));_0x1a657f[_0x495e('0xd2')][_0x495e('0xde')]=_0xeee882['id'];if(_0x406f0d[_0x495e('0x50')][_0x495e('0x33')]){_0x1a657f[_0x495e('0xd2')]=_[_0x495e('0x61')](_0x1a657f[_0x495e('0xd2')],{'$or':_[_0x495e('0x34')](_0x1a657f[_0x495e('0x4c')],function(_0x774e3d){var _0x46141f={};_0x46141f[_0x774e3d]={'$like':'%'+_0x406f0d[_0x495e('0x50')][_0x495e('0x33')]+'%'};return _0x46141f;})});}_0x1a657f=_['merge']({},_0x1a657f,_0x406f0d[_0x495e('0x62')]);return db['MailInteraction']['count']({'where':_0x1a657f[_0x495e('0xd2')]})[_0x495e('0x2a')](function(_0x7ebde7){_0x4c0ed5[_0x495e('0x26')]=_0x7ebde7;if(_0x406f0d[_0x495e('0x50')][_0x495e('0x47')]){_0x1a657f[_0x495e('0x48')]=[{'all':!![]}];}return db[_0x495e('0xe4')]['findAll'](_0x1a657f);})[_0x495e('0x2a')](function(_0x13335f){_0x4c0ed5[_0x495e('0x4f')]=_0x13335f;return _0x4c0ed5;});}})[_0x495e('0x2a')](respondWithFilteredResult(_0x4df9d3,_0x1a657f))[_0x495e('0x21')](handleError(_0x4df9d3,null));};exports['getSmsInteractions']=function(_0x64ae99,_0x562f5d){var _0x24c01f={};var _0x19050a={};var _0x3f3548;var _0x35e055;return db['User'][_0x495e('0x9a')]({'where':{'id':_0x64ae99['params']['id']}})[_0x495e('0x2a')](handleEntityNotFound(_0x562f5d,null))[_0x495e('0x2a')](function(_0x1bafc6){if(_0x1bafc6){_0x3f3548=_0x1bafc6;_0x19050a[_0x495e('0x5f')]=_['keys'](db[_0x495e('0xe5')][_0x495e('0x3f')]);_0x19050a[_0x495e('0x50')]=_[_0x495e('0x5d')](_0x64ae99[_0x495e('0x50')]);_0x19050a[_0x495e('0xd0')]=_[_0x495e('0x5e')](_0x19050a[_0x495e('0x5f')],_0x19050a[_0x495e('0x50')]);_0x24c01f['attributes']=_[_0x495e('0x5e')](_0x19050a['model'],qs[_0x495e('0x60')](_0x64ae99[_0x495e('0x50')]['fields']));_0x24c01f[_0x495e('0x4c')]=_0x24c01f[_0x495e('0x4c')]['length']?_0x24c01f[_0x495e('0x4c')]:_0x19050a[_0x495e('0x5f')];_0x24c01f[_0x495e('0xdc')]=qs['sort'](_0x64ae99[_0x495e('0x50')]['sort']);_0x24c01f[_0x495e('0xd2')]=qs['filters'](_[_0x495e('0xd3')](_0x64ae99[_0x495e('0x50')],_0x19050a[_0x495e('0xd0')]));if(_0x64ae99['query'][_0x495e('0x33')]){_0x24c01f[_0x495e('0xd2')]=_[_0x495e('0x61')](_0x24c01f[_0x495e('0xd2')],{'$or':_[_0x495e('0x34')](_0x24c01f[_0x495e('0x4c')],function(_0xd1520){var _0x35d6ea={};_0x35d6ea[_0xd1520]={'$like':'%'+_0x64ae99['query'][_0x495e('0x33')]+'%'};return _0x35d6ea;})});}_0x24c01f=_[_0x495e('0x61')]({},_0x24c01f,_0x64ae99['options']);return _0x3f3548[_0x495e('0xe6')](_0x24c01f);}})[_0x495e('0x2a')](function(_0x7c54a5){if(_0x7c54a5){_0x35e055=_0x7c54a5[_0x495e('0x52')];if(!_0x64ae99[_0x495e('0x50')]['hasOwnProperty'](_0x495e('0xd6'))){_0x24c01f[_0x495e('0x25')]=qs[_0x495e('0x25')](_0x64ae99[_0x495e('0x50')][_0x495e('0x25')]);_0x24c01f['offset']=qs[_0x495e('0x23')](_0x64ae99[_0x495e('0x50')][_0x495e('0x23')]);}return _0x3f3548[_0x495e('0xe6')](_0x24c01f);}})[_0x495e('0x2a')](function(_0x13c47d){if(_0x13c47d){return _0x13c47d?{'count':_0x35e055,'rows':_0x13c47d}:null;}})[_0x495e('0x2a')](respondWithResult(_0x562f5d,null))['catch'](handleError(_0x562f5d,null));};exports[_0x495e('0xe7')]=function(_0x3ff66a,_0x4c9983){var _0xd0c133={};var _0x529af0={};var _0xbf83e0;var _0x41fc5d;return db[_0x495e('0x46')]['findOne']({'where':{'id':_0x3ff66a['params']['id']}})[_0x495e('0x2a')](handleEntityNotFound(_0x4c9983,null))[_0x495e('0x2a')](function(_0x3bf01c){if(_0x3bf01c){_0xbf83e0=_0x3bf01c;_0x529af0['model']=_['keys'](db[_0x495e('0xe8')][_0x495e('0x3f')]);_0x529af0['query']=_[_0x495e('0x5d')](_0x3ff66a['query']);_0x529af0[_0x495e('0xd0')]=_[_0x495e('0x5e')](_0x529af0['model'],_0x529af0[_0x495e('0x50')]);_0xd0c133[_0x495e('0x4c')]=_[_0x495e('0x5e')](_0x529af0[_0x495e('0x5f')],qs[_0x495e('0x60')](_0x3ff66a[_0x495e('0x50')][_0x495e('0x60')]));_0xd0c133[_0x495e('0x4c')]=_0xd0c133[_0x495e('0x4c')][_0x495e('0x52')]?_0xd0c133[_0x495e('0x4c')]:_0x529af0[_0x495e('0x5f')];_0xd0c133[_0x495e('0xdc')]=qs[_0x495e('0xd1')](_0x3ff66a[_0x495e('0x50')][_0x495e('0xd1')]);_0xd0c133[_0x495e('0xd2')]=qs[_0x495e('0xd0')](_['pick'](_0x3ff66a[_0x495e('0x50')],_0x529af0['filters']));if(_0x3ff66a[_0x495e('0x50')][_0x495e('0x33')]){_0xd0c133[_0x495e('0xd2')]=_[_0x495e('0x61')](_0xd0c133['where'],{'$or':_[_0x495e('0x34')](_0xd0c133[_0x495e('0x4c')],function(_0x2db20c){var _0x4624e6={};_0x4624e6[_0x2db20c]={'$like':'%'+_0x3ff66a[_0x495e('0x50')][_0x495e('0x33')]+'%'};return _0x4624e6;})});}_0xd0c133=_['merge']({},_0xd0c133,_0x3ff66a[_0x495e('0x62')]);return _0xbf83e0[_0x495e('0xe7')](_0xd0c133);}})[_0x495e('0x2a')](function(_0x5c1036){if(_0x5c1036){_0x41fc5d=_0x5c1036[_0x495e('0x52')];if(!_0x3ff66a[_0x495e('0x50')][_0x495e('0xd5')](_0x495e('0xd6'))){_0xd0c133[_0x495e('0x25')]=qs['limit'](_0x3ff66a[_0x495e('0x50')][_0x495e('0x25')]);_0xd0c133[_0x495e('0x23')]=qs[_0x495e('0x23')](_0x3ff66a[_0x495e('0x50')][_0x495e('0x23')]);}return _0xbf83e0[_0x495e('0xe7')](_0xd0c133);}})[_0x495e('0x2a')](function(_0x2a4be4){if(_0x2a4be4){return _0x2a4be4?{'count':_0x41fc5d,'rows':_0x2a4be4}:null;}})[_0x495e('0x2a')](respondWithResult(_0x4c9983,null))[_0x495e('0x21')](handleError(_0x4c9983,null));};exports[_0x495e('0xe9')]=function(_0x402571,_0x51333d){var _0x1771b9={};var _0x3d1362={};var _0x36effa;var _0x4ebcdc;return db[_0x495e('0x46')][_0x495e('0x9a')]({'where':{'id':_0x402571[_0x495e('0x5b')]['id']}})[_0x495e('0x2a')](handleEntityNotFound(_0x51333d,null))[_0x495e('0x2a')](function(_0x5d1823){if(_0x5d1823){_0x36effa=_0x5d1823;_0x3d1362[_0x495e('0x5f')]=_[_0x495e('0x5d')](db[_0x495e('0xea')][_0x495e('0x3f')]);_0x3d1362[_0x495e('0x50')]=_[_0x495e('0x5d')](_0x402571[_0x495e('0x50')]);_0x3d1362[_0x495e('0xd0')]=_[_0x495e('0x5e')](_0x3d1362['model'],_0x3d1362[_0x495e('0x50')]);_0x1771b9[_0x495e('0x4c')]=_['intersection'](_0x3d1362[_0x495e('0x5f')],qs[_0x495e('0x60')](_0x402571[_0x495e('0x50')][_0x495e('0x60')]));_0x1771b9['attributes']=_0x1771b9[_0x495e('0x4c')][_0x495e('0x52')]?_0x1771b9[_0x495e('0x4c')]:_0x3d1362[_0x495e('0x5f')];_0x1771b9[_0x495e('0xdc')]=qs[_0x495e('0xd1')](_0x402571[_0x495e('0x50')][_0x495e('0xd1')]);_0x1771b9['where']=qs[_0x495e('0xd0')](_[_0x495e('0xd3')](_0x402571[_0x495e('0x50')],_0x3d1362[_0x495e('0xd0')]));if(_0x402571[_0x495e('0x50')][_0x495e('0x33')]){_0x1771b9['where']=_[_0x495e('0x61')](_0x1771b9['where'],{'$or':_['map'](_0x1771b9[_0x495e('0x4c')],function(_0x36a9cb){var _0x3438d4={};_0x3438d4[_0x36a9cb]={'$like':'%'+_0x402571[_0x495e('0x50')][_0x495e('0x33')]+'%'};return _0x3438d4;})});}_0x1771b9=_['merge']({},_0x1771b9,_0x402571[_0x495e('0x62')]);return _0x36effa[_0x495e('0xe9')](_0x1771b9);}})[_0x495e('0x2a')](function(_0x10ccac){if(_0x10ccac){_0x4ebcdc=_0x10ccac['length'];if(!_0x402571[_0x495e('0x50')][_0x495e('0xd5')](_0x495e('0xd6'))){_0x1771b9[_0x495e('0x25')]=qs[_0x495e('0x25')](_0x402571['query'][_0x495e('0x25')]);_0x1771b9[_0x495e('0x23')]=qs[_0x495e('0x23')](_0x402571[_0x495e('0x50')][_0x495e('0x23')]);}return _0x36effa['getWhatsappInteractions'](_0x1771b9);}})['then'](function(_0x165ecc){if(_0x165ecc){return _0x165ecc?{'count':_0x4ebcdc,'rows':_0x165ecc}:null;}})[_0x495e('0x2a')](respondWithResult(_0x51333d,null))[_0x495e('0x21')](handleError(_0x51333d,null));};exports['login']=function(_0x1be90b,_0x523125,_0x39ae82){var _0x4ae4a5;var _0x2c081c;var _0x30bec1;var _0x58c7e8=!_['isNil'](_0x1be90b[_0x495e('0x5b')]['id'])?_0x1be90b[_0x495e('0x5b')]['id']:!_[_0x495e('0x6d')](_0x1be90b['user']['id'])?_0x1be90b['user']['id']:null;return db[_0x495e('0x46')][_0x495e('0x37')]({'where':{'id':_0x58c7e8,'role':{'$or':['admin','user',_0x495e('0x2b')]}},'attributes':['id','name',_0x495e('0xeb'),'mobile',_0x495e('0x2e'),_0x495e('0x6e'),_0x495e('0xec')]})[_0x495e('0x2a')](function(_0x2429a4){if(_0x2429a4){if(_0x2429a4[_0x495e('0x2e')]===_0x495e('0x2b')){_0x4ae4a5=_0x2429a4;if(_0x1be90b[_0x495e('0x64')]['interface']){_0x30bec1=util[_0x495e('0xc7')](_0x495e('0xed'),_0x4ae4a5[_0x1be90b[_0x495e('0x64')][_0x495e('0xa2')]]);}else if(_0x1be90b[_0x495e('0x64')][_0x495e('0xee')]){_0x30bec1=util[_0x495e('0xc7')](_0x495e('0xad'),_0x1be90b[_0x495e('0x64')][_0x495e('0xee')]);}else{_0x30bec1=util['format']('SIP/%s',_0x4ae4a5[_0x495e('0x3c')]);}socket['to'](util[_0x495e('0xc7')](_0x495e('0xef'),_0x4ae4a5['name']))['emit']('user:forcelogout',{'user':{'id':_0x4ae4a5['id'],'name':_0x4ae4a5[_0x495e('0x3c')]},'ip':_0x1be90b[_0x495e('0xf0')]['x-forwarded-for']||_0x1be90b[_0x495e('0xf1')][_0x495e('0xf2')]||_0x1be90b[_0x495e('0xf3')][_0x495e('0xf2')]||_0x1be90b[_0x495e('0xf1')]['socket']['remoteAddress']});return db['UserVoiceQueueRt'][_0x495e('0x38')]({'where':{'membername':_0x4ae4a5[_0x495e('0x3c')]},'individualHooks':!![]});}}else{throw new db[(_0x495e('0x93'))][(_0x495e('0x94'))](_0x495e('0xf4'));}})['then'](function(){if(_0x4ae4a5){return _0x4ae4a5['getVoiceQueues']({'raw':!![]});}})[_0x495e('0x2a')](function(_0x214a00){if(_0x4ae4a5){if(_0x214a00){_0x2c081c=_0x214a00;if(_0x2c081c[_0x495e('0x52')]){var _0x30251f=_0x2c081c['map'](function(_0x170f06){var _0x25c6ef={'membername':_0x4ae4a5['name'],'UserId':_0x4ae4a5['id'],'queue_name':_0x170f06[_0x495e('0x3c')],'VoiceQueueId':_0x170f06['id'],'interface':_0x30bec1,'paused':_0x4ae4a5['loginInPause']||![],'penalty':_0x170f06[_0x495e('0xf5')]||0x0};return db[_0x495e('0xae')][_0x495e('0xaf')](_0x25c6ef);});return Promise[_0x495e('0x59')](_0x30251f);}}}})[_0x495e('0x2a')](function(){if(_0x4ae4a5){return db['MemberReport'][_0x495e('0x4e')]({'where':{'membername':_0x4ae4a5[_0x495e('0x3c')],'exitAt':null}});}})[_0x495e('0x2a')](function(_0x3a21dc){if(_0x4ae4a5){var _0x5e747a=[];_0x3a21dc['forEach'](function(_0x380a3a){_0x5e747a[_0x495e('0x4d')](_0x380a3a[_0x495e('0x29')]({'exitAt':moment()[_0x495e('0xc7')](_0x495e('0xf6'))}));});return Promise[_0x495e('0x59')](_0x5e747a);}})['then'](function(){if(_0x4ae4a5){var _0x41f1fa=[];var _0x519db0=[];var _0x2a9560=utils[_0x495e('0xf7')]();var _0x21f51c={'membername':_0x4ae4a5['name'],'interface':_0x30bec1,'enterAt':moment()[_0x495e('0xc7')](_0x495e('0xf6')),'role':_0x4ae4a5[_0x495e('0x2e')],'internal':_0x4ae4a5['internal']};_0x2a9560[_0x495e('0xf8')](function(_0x53750d){_0x41f1fa[_0x495e('0x4d')](_[_0x495e('0x61')]({'channel':_0x53750d,'type':_0x495e('0xf9'),'data1':_0x1be90b[_0x495e('0x64')][_0x495e('0xfa')],'data2':_0x30bec1},_0x21f51c));if(_0x4ae4a5['loginInPause']){_0x519db0[_0x495e('0x4d')](_[_0x495e('0x61')]({'channel':_0x53750d,'type':_0x495e('0xfb'),'data1':'LOGININPAUSE'},_0x21f51c));}});return db['MemberReport'][_0x495e('0xfc')](_0x41f1fa['concat'](_0x519db0),{'individualHooks':!![]});}})[_0x495e('0x2a')](function(){if(_0x4ae4a5){return _0x4ae4a5[_0x495e('0x29')]({'online':!![],'lastLoginAt':moment()[_0x495e('0xc7')](_0x495e('0xf6')),'voicePause':_0x4ae4a5['loginInPause']||![],'mailPause':_0x4ae4a5[_0x495e('0xec')]||![],'chatPause':_0x4ae4a5['loginInPause']||![],'faxPause':_0x4ae4a5[_0x495e('0xec')]||![],'smsPause':_0x4ae4a5[_0x495e('0xec')]||![],'openchannelPause':_0x4ae4a5['loginInPause']||![],'whatsappPause':_0x4ae4a5[_0x495e('0xec')]||![],'pauseType':_0x4ae4a5[_0x495e('0xec')]?_0x495e('0xfd'):null,'interface':_0x30bec1,'lastPauseAt':moment()[_0x495e('0xc7')](_0x495e('0xf6'))});}})[_0x495e('0x2a')](function(_0x42e2d1){if(_0x1be90b[_0x495e('0xfe')]){return _0x39ae82();}else{return Promise[_0x495e('0xff')](_0x42e2d1)['then'](respondWithResult(_0x523125,null));}})[_0x495e('0x21')](handleError(_0x523125,null));};exports[_0x495e('0x100')]=function(_0x3ce8a6,_0x42515a){var _0x5ed15f;return db['User'][_0x495e('0x37')]({'where':{'id':_0x3ce8a6[_0x495e('0x5b')]['id'],'role':_0x495e('0x2b')},'attributes':['id','name',_0x495e('0x2e')]})['then'](handleEntityNotFound(_0x42515a,null))[_0x495e('0x2a')](function(_0x5f2318){if(_0x5f2318){_0x5ed15f=_0x5f2318;return db[_0x495e('0xae')]['destroy']({'where':{'membername':_0x5ed15f[_0x495e('0x3c')]},'individualHooks':!![]});}})[_0x495e('0x2a')](function(){return db[_0x495e('0x101')][_0x495e('0x4e')]({'where':{'membername':_0x5ed15f['name'],'exitAt':null}});})[_0x495e('0x2a')](function(_0x2b310d){var _0x311f33=[];_0x2b310d['forEach'](function(_0x42140e){_0x311f33[_0x495e('0x4d')](_0x42140e[_0x495e('0x29')]({'exitAt':moment()[_0x495e('0xc7')](_0x495e('0xf6'))}));});return Promise[_0x495e('0x59')](_0x311f33);})[_0x495e('0x2a')](function(){return _0x5ed15f[_0x495e('0x29')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![],'interface':null});})[_0x495e('0x2a')](respondWithResult(_0x42515a,null))[_0x495e('0x21')](handleError(_0x42515a,null));};exports['pause']=function(_0x142390,_0x1a1544){var _0x1d4e71;return db['UserVoiceQueueRt'][_0x495e('0x29')]({'paused':0x1},{'where':{'UserId':_0x142390[_0x495e('0x5b')]['id']},'individualHooks':!![]})[_0x495e('0x2a')](function(){return db[_0x495e('0x46')][_0x495e('0x37')]({'where':{'id':_0x142390[_0x495e('0x5b')]['id'],'role':_0x495e('0x2b')},'attributes':['id',_0x495e('0x3c'),_0x495e('0x2e'),'internal',_0x495e('0xa2'),_0x495e('0x102')]});})[_0x495e('0x2a')](handleEntityNotFound(_0x1a1544,null))[_0x495e('0x2a')](function(_0x22bbe4){if(_0x22bbe4){_0x1d4e71=_0x22bbe4;return respondWithRpcPromise(_0x495e('0x103'),_0x495e('0x104'),{'id':_0x1d4e71['id'],'name':_0x1d4e71[_0x495e('0x3c')],'pause':!![]});}})[_0x495e('0x2a')](function(){if(_0x1d4e71){return db[_0x495e('0x101')][_0x495e('0x4e')]({'where':{'membername':_0x1d4e71[_0x495e('0x3c')],'type':_0x495e('0xfb'),'exitAt':null}});}})[_0x495e('0x2a')](function(_0x2b79fa){if(_0x2b79fa['length']){var _0x122d10=moment()[_0x495e('0xc7')](_0x495e('0xf6'));for(var _0xeda97e=0x0,_0x3dd348=_0x2b79fa[_0x495e('0x52')];_0xeda97e<_0x3dd348;_0xeda97e++){_0x2b79fa[_0xeda97e]['updateAttributes']({'exitAt':_0x122d10});}}})[_0x495e('0x2a')](function(){var _0x28514b=[];var _0x2d5cfe=utils[_0x495e('0xf7')]();_0x2d5cfe[_0x495e('0xf8')](function(_0x11c6d6){_0x28514b[_0x495e('0x4d')]({'channel':_0x11c6d6,'membername':_0x1d4e71['name'],'interface':_[_0x495e('0x6d')](_0x1d4e71[_0x495e('0xa2')])?util[_0x495e('0xc7')](_0x495e('0xad'),_0x1d4e71['name']):_0x1d4e71[_0x495e('0xa2')],'type':_0x495e('0xfb'),'enterAt':moment()[_0x495e('0xc7')](_0x495e('0xf6')),'data1':_0x142390[_0x495e('0x64')][_0x495e('0x41')]||'DEFAULT\x20PAUSE','role':_0x1d4e71['role'],'internal':_0x1d4e71['internal']});});return db[_0x495e('0x101')]['bulkCreate'](_0x28514b,{'individualHooks':!![]});})['then'](function(){return _0x1d4e71[_0x495e('0x29')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'whatsappPause':!![],'openchannelPause':!![],'pauseType':_0x142390[_0x495e('0x64')][_0x495e('0x41')]||'DEFAULT\x20PAUSE','lastPauseAt':moment()[_0x495e('0xc7')](_0x495e('0xf6'))});})[_0x495e('0x2a')](respondWithResult(_0x1a1544,null))['catch'](handleError(_0x1a1544,null));};exports[_0x495e('0x105')]=function(_0x524b34,_0x28bc3a){if(_0x524b34[_0x495e('0x64')]['channel']&&!utils[_0x495e('0xce')](_0x524b34['body'][_0x495e('0xa0')])){throw new APIBadRequestError(util['format'](_0x495e('0x106'),_0x524b34[_0x495e('0x64')][_0x495e('0xa0')]));}return db['User'][_0x495e('0x37')]({'where':{'id':_0x524b34[_0x495e('0x5b')]['id']},'attributes':['id','name',_0x495e('0x2e'),_0x495e('0x6e'),_0x495e('0xa2'),_0x495e('0x102'),_0x495e('0xa1'),_0x495e('0x107'),_0x495e('0x108'),_0x495e('0x109'),_0x495e('0x10a'),_0x495e('0x10b'),_0x495e('0x10c'),'pauseType','lastPauseAt']})[_0x495e('0x2a')](function(_0xa4155f){if(!_0xa4155f){throw new APINotFoundError(util[_0x495e('0xc7')](_0x495e('0xc8'),_0x524b34[_0x495e('0x5b')]['id']));}return _0xa4155f[_0x495e('0x105')](_0x524b34['body'][_0x495e('0xa0')]);})['then'](respondWithResult(_0x28bc3a,null))[_0x495e('0x21')](APIHandleError(_0x28bc3a));};exports[_0x495e('0x10d')]=function(_0x41f89f,_0xf7d80a){var _0x1d258b={};var _0x3f046c={};var _0xc38449;var _0x432cfa;return db[_0x495e('0x46')][_0x495e('0x9a')]({'where':{'id':_0x41f89f[_0x495e('0x5b')]['id']}})[_0x495e('0x2a')](handleEntityNotFound(_0xf7d80a,null))[_0x495e('0x2a')](function(_0x14886a){if(_0x14886a){_0xc38449=_0x14886a;_0x3f046c['model']=_[_0x495e('0x5d')](db['Team'][_0x495e('0x3f')]);_0x3f046c[_0x495e('0x50')]=_[_0x495e('0x5d')](_0x41f89f['query']);_0x3f046c[_0x495e('0xd0')]=_['intersection'](_0x3f046c[_0x495e('0x5f')],_0x3f046c['query']);_0x1d258b['attributes']=_[_0x495e('0x5e')](_0x3f046c['model'],qs['fields'](_0x41f89f[_0x495e('0x50')][_0x495e('0x60')]));_0x1d258b['attributes']=_0x1d258b[_0x495e('0x4c')][_0x495e('0x52')]?_0x1d258b[_0x495e('0x4c')]:_0x3f046c[_0x495e('0x5f')];_0x1d258b[_0x495e('0xdc')]=qs['sort'](_0x41f89f[_0x495e('0x50')][_0x495e('0xd1')]);_0x1d258b['where']=qs[_0x495e('0xd0')](_[_0x495e('0xd3')](_0x41f89f[_0x495e('0x50')],_0x3f046c['filters']));if(_0x41f89f['query'][_0x495e('0x33')]){_0x1d258b[_0x495e('0xd2')]=_['merge'](_0x1d258b[_0x495e('0xd2')],{'$or':_[_0x495e('0x34')](_0x1d258b[_0x495e('0x4c')],function(_0x1af5ba){var _0x5d6830={};_0x5d6830[_0x1af5ba]={'$like':'%'+_0x41f89f[_0x495e('0x50')][_0x495e('0x33')]+'%'};return _0x5d6830;})});}_0x1d258b=_['merge']({},_0x1d258b,_0x41f89f[_0x495e('0x62')]);return _0xc38449[_0x495e('0x10d')](_0x1d258b);}})[_0x495e('0x2a')](function(_0x517194){if(_0x517194){_0x432cfa=_0x517194[_0x495e('0x52')];if(!_0x41f89f[_0x495e('0x50')][_0x495e('0xd5')](_0x495e('0xd6'))){_0x1d258b['limit']=qs[_0x495e('0x25')](_0x41f89f[_0x495e('0x50')][_0x495e('0x25')]);_0x1d258b[_0x495e('0x23')]=qs['offset'](_0x41f89f[_0x495e('0x50')][_0x495e('0x23')]);}return _0xc38449[_0x495e('0x10d')](_0x1d258b);}})[_0x495e('0x2a')](function(_0x26eb29){if(_0x26eb29){return _0x26eb29?{'count':_0x432cfa,'rows':_0x26eb29}:null;}})['then'](respondWithResult(_0xf7d80a,null))['catch'](handleError(_0xf7d80a,null));};exports['addTeams']=function(_0x3498ca,_0x34a0a9){var _0x46cc94=_0x3498ca[_0x495e('0x5b')]['id'];var _0x470732=_0x3498ca[_0x495e('0x64')]?_0x3498ca[_0x495e('0x64')]['ids']:null;var _0x27c2d7=[];return Promise[_0x495e('0xff')]()[_0x495e('0x2a')](function(){if(!_0x470732)throw new APIBadRequestError(_0x495e('0x10e'));})[_0x495e('0x2a')](function(){return db[_0x495e('0x46')][_0x495e('0x9a')]({'where':{'id':_0x46cc94}});})[_0x495e('0x2a')](function(_0x121e1f){if(!_0x121e1f)throw new APINotFoundError(util[_0x495e('0xc7')](_0x495e('0xc8'),_0x3498ca[_0x495e('0x5b')]['id']));return db[_0x495e('0x70')]['transaction'](function(_0x26fed8){return _0x121e1f[_0x495e('0x10f')](_0x470732,{'transaction':_0x26fed8})[_0x495e('0x2a')](function(){return db[_0x495e('0x110')][_0x495e('0x4e')]({'where':{'id':{'$in':_0x470732}}});})[_0x495e('0x2a')](function(_0x56668b){var _0x32ebd8=_[_0x495e('0x34')](_0x56668b,function(_0x474b9d){return _0x474b9d['getAssociatedQueues']();});return Promise[_0x495e('0x59')](_0x32ebd8);})['then'](function(_0x1c4f61){_0x27c2d7=_['flattenDeep'](_0x1c4f61);var _0x14c00e=_['map'](_0x27c2d7,function(_0xfb189b){return _0xfb189b['addAgent'](_0x121e1f['id'],{'transaction':_0x26fed8});});return Promise['all'](_0x14c00e);})[_0x495e('0x2a')](function(){if(!_0x121e1f[_0x495e('0x102')])return;var _0x3b774a=_[_0x495e('0x33')](_0x27c2d7,function(_0x2c9a2f){return _0x2c9a2f[_0x495e('0x111')]('channel')==='Voice';});var _0x515def=_['map'](_0x3b774a,function(_0x3de4d1){return db['UserVoiceQueueRt'][_0x495e('0xaf')]({'membername':_0x121e1f[_0x495e('0x3c')],'UserId':_0x121e1f['id'],'queue_name':_0x3de4d1[_0x495e('0x3c')],'VoiceQueueId':_0x3de4d1['id'],'interface':_['isNil'](_0x121e1f[_0x495e('0xa2')])?util['format'](_0x495e('0xad'),_0x121e1f[_0x495e('0x3c')]):_0x121e1f[_0x495e('0xa2')],'paused':_0x121e1f[_0x495e('0xa1')]||![],'penalty':_0x121e1f[_0x495e('0xa7')]},{'transaction':_0x26fed8});});return Promise['all'](_0x515def);})[_0x495e('0x2a')](function(){return db[_0x495e('0x112')][_0x495e('0x4e')]({'where':{'teamId':{'$in':_0x470732}}});})[_0x495e('0x2a')](function(_0x4479e3){var _0x4302a0=_[_0x495e('0x34')](_0x4479e3,function(_0x3e307e){return db['UserVoicePrefix'][_0x495e('0x89')]({'UserId':_0x121e1f['id'],'VoicePrefixId':_0x3e307e['VoicePrefixId']},{'transaction':_0x26fed8});});return Promise[_0x495e('0x59')](_0x4302a0);});});})[_0x495e('0x2a')](function(){for(var _0x194f32=0x0;_0x194f32<_0x27c2d7[_0x495e('0x52')];_0x194f32++){var _0xac2de7=_0x27c2d7[_0x194f32][_0x495e('0x111')](_0x495e('0xa0'));var _0x3dd13b=_0xac2de7+_0x495e('0xaa');socket[_0x495e('0x2c')](_0x495e('0x30')+_0xac2de7+_0x495e('0x113'),{'UserId':_0x46cc94,['queueField']:_0x27c2d7[_0x194f32]['id']});}})[_0x495e('0x2a')](respondWithStatusCode(_0x34a0a9,null))['catch'](APIHandleError(_0x34a0a9));};exports[_0x495e('0x114')]=function(_0x6ae493,_0x3dd99a){var _0x473a16=_0x6ae493[_0x495e('0x5b')]['id'];var _0xc22fde=null;if(_0x6ae493['query']['ids']){_0xc22fde=_[_0x495e('0xb1')](_0x6ae493[_0x495e('0x50')]['ids'])?_0x6ae493[_0x495e('0x50')][_0x495e('0x67')]:[_0x6ae493[_0x495e('0x50')]['ids']];}var _0x24565d=[];return Promise[_0x495e('0xff')]()[_0x495e('0x2a')](function(){if(!_0xc22fde)throw new APIBadRequestError(_0x495e('0x115'));})[_0x495e('0x2a')](function(){return db['User'][_0x495e('0x9a')]({'where':{'id':_0x473a16}});})[_0x495e('0x2a')](function(_0x411f47){if(!_0x411f47)throw new APINotFoundError(util[_0x495e('0xc7')](_0x495e('0xc8'),_0x6ae493[_0x495e('0x5b')]['id']));return db[_0x495e('0x70')]['transaction'](function(_0x36eb50){return _0x411f47[_0x495e('0x114')](_0xc22fde,{'transaction':_0x36eb50})['then'](function(){return db['Team'][_0x495e('0x4e')]({'where':{'id':{'$in':_0xc22fde}}});})[_0x495e('0x2a')](function(_0x493ca2){var _0x5226eb=_[_0x495e('0x34')](_0x493ca2,function(_0x1f1549){return _0x1f1549[_0x495e('0x116')]();});return Promise[_0x495e('0x59')](_0x5226eb);})[_0x495e('0x2a')](function(_0x2af121){_0x24565d=_['flattenDeep'](_0x2af121);var _0xaf01e5=_[_0x495e('0x34')](_0x24565d,function(_0x3ef282){return _0x3ef282[_0x495e('0x117')](_0x411f47['id'],{'transaction':_0x36eb50});});return Promise[_0x495e('0x59')](_0xaf01e5);})['then'](function(){if(!_0x411f47[_0x495e('0x102')])return;var _0x5cb786=_[_0x495e('0x33')](_0x24565d,function(_0x3e5f6f){return _0x3e5f6f[_0x495e('0x111')]('channel')==='Voice';});var _0x2772ca=_[_0x495e('0x34')](_0x5cb786,function(_0x50ff36){return db['UserVoiceQueueRt'][_0x495e('0x38')]({'where':{'VoiceQueueId':_0x50ff36['id'],'UserId':_0x411f47['id']},'transaction':_0x36eb50});});return Promise[_0x495e('0x59')](_0x2772ca);})['then'](function(){return db['TeamVoicePrefix'][_0x495e('0x4e')]({'where':{'teamId':{'$in':_0xc22fde}}});})[_0x495e('0x2a')](function(_0x4de340){var _0x1758ab=_[_0x495e('0x34')](_0x4de340,function(_0x257fd8){return db[_0x495e('0x118')][_0x495e('0x38')]({'where':{'UserId':_0x411f47['id'],'VoicePrefixId':_0x257fd8['VoicePrefixId']}},{'transaction':_0x36eb50});});return Promise[_0x495e('0x59')](_0x1758ab);});});})[_0x495e('0x2a')](function(){for(var _0xdba89c=0x0;_0xdba89c<_0x24565d['length'];_0xdba89c++){var _0x5b1210=_0x24565d[_0xdba89c][_0x495e('0x111')](_0x495e('0xa0'));var _0x3d5516=_0x5b1210+'QueueId';socket[_0x495e('0x2c')](_0x495e('0x30')+_0x5b1210+'Queue:remove',{'UserId':_0x473a16,['queueField']:_0x24565d[_0xdba89c]['id']});}})[_0x495e('0x2a')](respondWithStatusCode(_0x3dd99a,null))[_0x495e('0x21')](APIHandleError(_0x3dd99a));};exports[_0x495e('0x119')]=function(_0x5d8661,_0x34708d){var _0x29872={};var _0x1789e4={};var _0x342cb3;var _0x44ca43;return db['User'][_0x495e('0x9a')]({'where':{'id':_0x5d8661[_0x495e('0x5b')]['id']}})['then'](handleEntityNotFound(_0x34708d,null))['then'](function(_0x4c6b31){if(_0x4c6b31){_0x342cb3=_0x4c6b31;_0x1789e4[_0x495e('0x5f')]=_[_0x495e('0x5d')](db[_0x495e('0xc9')][_0x495e('0x3f')]);_0x1789e4[_0x495e('0x50')]=_['keys'](_0x5d8661['query']);_0x1789e4['filters']=_['intersection'](_0x1789e4[_0x495e('0x5f')],_0x1789e4[_0x495e('0x50')]);_0x29872[_0x495e('0x4c')]=_['intersection'](_0x1789e4[_0x495e('0x5f')],qs[_0x495e('0x60')](_0x5d8661[_0x495e('0x50')][_0x495e('0x60')]));_0x29872[_0x495e('0x4c')]=_0x29872[_0x495e('0x4c')][_0x495e('0x52')]?_0x29872[_0x495e('0x4c')]:_0x1789e4[_0x495e('0x5f')];_0x29872[_0x495e('0xdc')]=qs[_0x495e('0xd1')](_0x5d8661[_0x495e('0x50')][_0x495e('0xd1')]);_0x29872[_0x495e('0xd2')]=qs[_0x495e('0xd0')](_['pick'](_0x5d8661[_0x495e('0x50')],_0x1789e4[_0x495e('0xd0')]));if(_0x5d8661[_0x495e('0x50')][_0x495e('0x33')]){_0x29872[_0x495e('0xd2')]=_[_0x495e('0x61')](_0x29872[_0x495e('0xd2')],{'$or':_[_0x495e('0x34')](_0x29872[_0x495e('0x4c')],function(_0x10ddc6){var _0x12cd28={};_0x12cd28[_0x10ddc6]={'$like':'%'+_0x5d8661[_0x495e('0x50')]['filter']+'%'};return _0x12cd28;})});}_0x29872=_[_0x495e('0x61')]({},_0x29872,_0x5d8661[_0x495e('0x62')]);return _0x342cb3[_0x495e('0x119')](_0x29872);}})[_0x495e('0x2a')](function(_0x389c86){if(_0x389c86){_0x44ca43=_0x389c86[_0x495e('0x52')];if(!_0x5d8661[_0x495e('0x50')][_0x495e('0xd5')](_0x495e('0xd6'))){_0x29872[_0x495e('0x25')]=qs[_0x495e('0x25')](_0x5d8661['query'][_0x495e('0x25')]);_0x29872[_0x495e('0x23')]=qs[_0x495e('0x23')](_0x5d8661['query']['offset']);}return _0x342cb3[_0x495e('0x119')](_0x29872);}})[_0x495e('0x2a')](function(_0x1f9d59){if(_0x1f9d59){return _0x1f9d59?{'count':_0x44ca43,'rows':_0x1f9d59}:null;}})[_0x495e('0x2a')](respondWithResult(_0x34708d,null))[_0x495e('0x21')](handleError(_0x34708d,null));};exports[_0x495e('0x11a')]=function(_0x7762fc,_0x1e4090){var _0x49ac86={};var _0x2b3d96={};var _0x4050f1;return db['User']['findOne']({'where':{'id':_0x7762fc[_0x495e('0x5b')]['id']}})[_0x495e('0x2a')](handleEntityNotFound(_0x1e4090,null))[_0x495e('0x2a')](function(_0x2011ac){if(_0x2011ac){_0x4050f1=_0x2011ac;_0x2b3d96[_0x495e('0x5f')]=_[_0x495e('0x5d')](db[_0x495e('0x46')][_0x495e('0x3f')]);_0x2b3d96['query']=_[_0x495e('0x5d')](_0x7762fc['query']);_0x2b3d96['filters']=_['intersection'](_0x2b3d96[_0x495e('0x5f')],_0x2b3d96[_0x495e('0x50')]);_0x49ac86['attributes']=_[_0x495e('0x5e')](_0x2b3d96[_0x495e('0x5f')],qs['fields'](_0x7762fc[_0x495e('0x50')][_0x495e('0x60')]));_0x49ac86[_0x495e('0x4c')]=_0x49ac86['attributes'][_0x495e('0x52')]?_0x49ac86['attributes']:_0x2b3d96[_0x495e('0x5f')];_0x49ac86[_0x495e('0xdc')]=qs['sort'](_0x7762fc[_0x495e('0x50')]['sort']);_0x49ac86[_0x495e('0xd2')]=qs['filters'](_[_0x495e('0xd3')](_0x7762fc[_0x495e('0x50')],_0x2b3d96[_0x495e('0xd0')]));if(_0x7762fc['query'][_0x495e('0x33')]){_0x49ac86[_0x495e('0xd2')]=_[_0x495e('0x61')](_0x49ac86[_0x495e('0xd2')],{'$or':_[_0x495e('0x34')](_0x49ac86[_0x495e('0x4c')],function(_0x274e35){var _0x8b2fc5={};_0x8b2fc5[_0x274e35]={'$like':'%'+_0x7762fc[_0x495e('0x50')]['filter']+'%'};return _0x8b2fc5;})});}_0x49ac86[_0x495e('0x5f')]=db[_0x495e('0x46')];_0x49ac86['as']='Agents';_0x49ac86=_[_0x495e('0x61')]({},_0x49ac86,_0x7762fc[_0x495e('0x62')]);return _0x4050f1[_0x495e('0x11b')]({'include':[_0x49ac86]});}})['then'](function(_0x3466fa){if(_0x3466fa){var _0x59a1b5={},_0x2ee4e2=[];for(var _0x1f8d62=0x0;_0x1f8d62<_0x3466fa[_0x495e('0x52')];_0x1f8d62+=0x1){for(var _0x35e620=0x0,_0x563567;_0x35e620<_0x3466fa[_0x1f8d62][_0x495e('0x87')][_0x495e('0x52')];_0x35e620+=0x1){_0x563567=_0x3466fa[_0x1f8d62][_0x495e('0x87')][_0x35e620][_0x495e('0xac')]({'plain':!![]});_0x59a1b5[_0x563567['id']]=_0x563567;}}_0x59a1b5=_['values'](_0x59a1b5);for(var _0xe75248=qs[_0x495e('0x23')](_0x7762fc[_0x495e('0x50')]['offset']);_0xe75248<_0x59a1b5[_0x495e('0x52')]&&_0x2ee4e2[_0x495e('0x52')]<qs[_0x495e('0x25')](_0x7762fc[_0x495e('0x50')][_0x495e('0x25')]);_0xe75248+=0x1){if(_0x59a1b5[_0xe75248]){_0x2ee4e2['push'](_0x59a1b5[_0xe75248]);}}return{'count':_0x59a1b5[_0x495e('0x52')],'rows':_0x2ee4e2};}})[_0x495e('0x2a')](respondWithResult(_0x1e4090,null))[_0x495e('0x21')](handleError(_0x1e4090,null));};exports[_0x495e('0x38')]=function(_0x41ef46,_0xba065d){if(_0x41ef46['user']['id']==_0x41ef46[_0x495e('0x5b')]['id']){return _0xba065d[_0x495e('0x27')](0x1f4)[_0x495e('0x3d')]({'message':_0x495e('0x11c')});}return db[_0x495e('0x46')]['find']({'where':{'id':_0x41ef46[_0x495e('0x5b')]['id']}})['then'](handleEntityNotFound(_0xba065d,null))[_0x495e('0x2a')](removeEntity(_0xba065d,null))[_0x495e('0x21')](handleError(_0xba065d,null));};exports[_0x495e('0x11d')]=function(_0x1eeac7,_0x1ff953){return db[_0x495e('0x46')]['find']({'where':{'id':_0x1eeac7[_0x495e('0x5b')]['id']}})['then'](handleEntityNotFound(_0x1ff953,null))[_0x495e('0x2a')](function(_0x50aef8){if(_0x50aef8){return _0x50aef8[_0x495e('0x11d')](_0x1eeac7[_0x495e('0x64')][_0x495e('0x67')],_[_0x495e('0x68')](_0x1eeac7['body'],['ids','id'])||{})[_0x495e('0xa8')](function(){for(var _0x995ee1=0x0;_0x995ee1<_0x1eeac7[_0x495e('0x64')][_0x495e('0x67')]['length'];_0x995ee1+=0x1){socket[_0x495e('0x2c')](_0x495e('0x11e'),{'ChatInteractionId':Number(_0x1eeac7[_0x495e('0x64')][_0x495e('0x67')][_0x995ee1]),'UserId':Number(_0x1eeac7[_0x495e('0x5b')]['id'])});}return _0x1eeac7['body'][_0x495e('0x67')];});}})[_0x495e('0x2a')](respondWithResult(_0x1ff953,null))[_0x495e('0x21')](handleError(_0x1ff953,null));};exports[_0x495e('0x11f')]=function(_0xda60e5,_0x44128b){return db[_0x495e('0x46')][_0x495e('0x37')]({'where':{'id':_0xda60e5[_0x495e('0x5b')]['id']}})['then'](handleEntityNotFound(_0x44128b,null))[_0x495e('0x2a')](function(_0xf6fc6){if(_0xf6fc6){return _0xf6fc6['removeChatInteractions'](_0xda60e5['query']['ids'])[_0x495e('0x2a')](function(){if(_[_0x495e('0xb1')](_0xda60e5[_0x495e('0x50')][_0x495e('0x67')])){for(var _0x2f4753=0x0;_0x2f4753<_0xda60e5[_0x495e('0x50')][_0x495e('0x67')][_0x495e('0x52')];_0x2f4753+=0x1){socket[_0x495e('0x2c')]('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0xda60e5[_0x495e('0x50')][_0x495e('0x67')][_0x2f4753]),'UserId':Number(_0xda60e5[_0x495e('0x5b')]['id'])});}}else{socket[_0x495e('0x2c')](_0x495e('0x120'),{'ChatInteractionId':Number(_0xda60e5[_0x495e('0x50')][_0x495e('0x67')]),'UserId':Number(_0xda60e5['params']['id'])});}});}})[_0x495e('0x2a')](respondWithStatusCode(_0x44128b,null))[_0x495e('0x21')](handleError(_0x44128b,null));};exports[_0x495e('0x121')]=function(_0x7154d5,_0x8352e){return db[_0x495e('0x46')][_0x495e('0x37')]({'where':{'id':_0x7154d5[_0x495e('0x5b')]['id']}})['then'](handleEntityNotFound(_0x8352e,null))[_0x495e('0x2a')](function(_0x4a8539){if(_0x4a8539){return _0x4a8539['addMailInteractions'](_0x7154d5[_0x495e('0x64')][_0x495e('0x67')],_[_0x495e('0x68')](_0x7154d5[_0x495e('0x64')],[_0x495e('0x67'),'id'])||{})[_0x495e('0xa8')](function(){for(var _0xc8d6b7=0x0;_0xc8d6b7<_0x7154d5[_0x495e('0x64')][_0x495e('0x67')]['length'];_0xc8d6b7+=0x1){socket[_0x495e('0x2c')](_0x495e('0x122'),{'MailInteractionId':Number(_0x7154d5[_0x495e('0x64')][_0x495e('0x67')][_0xc8d6b7]),'UserId':Number(_0x7154d5['params']['id'])});}return _0x7154d5['body']['ids'];});}})[_0x495e('0x2a')](respondWithResult(_0x8352e,null))[_0x495e('0x21')](handleError(_0x8352e,null));};exports[_0x495e('0x123')]=function(_0x54aa3d,_0x1b93c0){return db[_0x495e('0x46')][_0x495e('0x37')]({'where':{'id':_0x54aa3d[_0x495e('0x5b')]['id']}})[_0x495e('0x2a')](handleEntityNotFound(_0x1b93c0,null))[_0x495e('0x2a')](function(_0xe3cf61){if(_0xe3cf61){return _0xe3cf61[_0x495e('0x123')](_0x54aa3d[_0x495e('0x50')]['ids'])[_0x495e('0x2a')](function(){if(_[_0x495e('0xb1')](_0x54aa3d[_0x495e('0x50')][_0x495e('0x67')])){for(var _0x51651e=0x0;_0x51651e<_0x54aa3d[_0x495e('0x50')][_0x495e('0x67')][_0x495e('0x52')];_0x51651e+=0x1){socket['emit']('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x54aa3d[_0x495e('0x50')][_0x495e('0x67')][_0x51651e]),'UserId':Number(_0x54aa3d[_0x495e('0x5b')]['id'])});}}else{socket[_0x495e('0x2c')](_0x495e('0x124'),{'MailInteractionId':Number(_0x54aa3d['query'][_0x495e('0x67')]),'UserId':Number(_0x54aa3d['params']['id'])});}});}})[_0x495e('0x2a')](respondWithStatusCode(_0x1b93c0,null))[_0x495e('0x21')](handleError(_0x1b93c0,null));};exports[_0x495e('0x125')]=function(_0x33e4a2,_0x35f664){return db['User'][_0x495e('0x37')]({'where':{'id':_0x33e4a2['params']['id']}})[_0x495e('0x2a')](handleEntityNotFound(_0x35f664,null))[_0x495e('0x2a')](function(_0x302932){if(_0x302932){return _0x302932[_0x495e('0x125')](_0x33e4a2[_0x495e('0x64')][_0x495e('0x67')],_['omit'](_0x33e4a2[_0x495e('0x64')],[_0x495e('0x67'),'id'])||{})[_0x495e('0xa8')](function(){for(var _0x43a96e=0x0;_0x43a96e<_0x33e4a2['body'][_0x495e('0x67')][_0x495e('0x52')];_0x43a96e+=0x1){socket[_0x495e('0x2c')]('user_has_fax_interactions:save',{'FaxInteractionId':Number(_0x33e4a2[_0x495e('0x64')][_0x495e('0x67')][_0x43a96e]),'UserId':Number(_0x33e4a2[_0x495e('0x5b')]['id'])});}return _0x33e4a2[_0x495e('0x64')][_0x495e('0x67')];});}})[_0x495e('0x2a')](respondWithResult(_0x35f664,null))['catch'](handleError(_0x35f664,null));};exports['removeFaxInteractions']=function(_0x2e2be2,_0x3cae8c){return db['User'][_0x495e('0x37')]({'where':{'id':_0x2e2be2[_0x495e('0x5b')]['id']}})['then'](handleEntityNotFound(_0x3cae8c,null))['then'](function(_0x3494b7){if(_0x3494b7){return _0x3494b7[_0x495e('0x126')](_0x2e2be2[_0x495e('0x50')][_0x495e('0x67')])['then'](function(){if(_[_0x495e('0xb1')](_0x2e2be2[_0x495e('0x50')]['ids'])){for(var _0xafef28=0x0;_0xafef28<_0x2e2be2[_0x495e('0x50')][_0x495e('0x67')][_0x495e('0x52')];_0xafef28+=0x1){socket[_0x495e('0x2c')](_0x495e('0x127'),{'FaxInteractionId':Number(_0x2e2be2[_0x495e('0x50')][_0x495e('0x67')][_0xafef28]),'UserId':Number(_0x2e2be2[_0x495e('0x5b')]['id'])});}}else{socket[_0x495e('0x2c')]('user_has_fax_interactions:remove',{'FaxInteractionId':Number(_0x2e2be2[_0x495e('0x50')][_0x495e('0x67')]),'UserId':Number(_0x2e2be2[_0x495e('0x5b')]['id'])});}});}})[_0x495e('0x2a')](respondWithStatusCode(_0x3cae8c,null))[_0x495e('0x21')](handleError(_0x3cae8c,null));};exports['addSmsInteractions']=function(_0x9e4caf,_0x144c23){return db['User']['find']({'where':{'id':_0x9e4caf[_0x495e('0x5b')]['id']}})['then'](handleEntityNotFound(_0x144c23,null))[_0x495e('0x2a')](function(_0x3033d1){if(_0x3033d1){return _0x3033d1[_0x495e('0x128')](_0x9e4caf[_0x495e('0x64')][_0x495e('0x67')],_[_0x495e('0x68')](_0x9e4caf[_0x495e('0x64')],[_0x495e('0x67'),'id'])||{})[_0x495e('0xa8')](function(){for(var _0x51e4ce=0x0;_0x51e4ce<_0x9e4caf[_0x495e('0x64')][_0x495e('0x67')][_0x495e('0x52')];_0x51e4ce+=0x1){socket[_0x495e('0x2c')](_0x495e('0x129'),{'SmsInteractionId':Number(_0x9e4caf['body'][_0x495e('0x67')][_0x51e4ce]),'UserId':Number(_0x9e4caf[_0x495e('0x5b')]['id'])});}return _0x9e4caf[_0x495e('0x64')]['ids'];});}})['then'](respondWithResult(_0x144c23,null))[_0x495e('0x21')](handleError(_0x144c23,null));};exports[_0x495e('0x12a')]=function(_0x1b0aae,_0x2dc1a3){return db['User'][_0x495e('0x37')]({'where':{'id':_0x1b0aae[_0x495e('0x5b')]['id']}})[_0x495e('0x2a')](handleEntityNotFound(_0x2dc1a3,null))[_0x495e('0x2a')](function(_0x1cf85b){if(_0x1cf85b){return _0x1cf85b[_0x495e('0x12a')](_0x1b0aae[_0x495e('0x50')][_0x495e('0x67')])[_0x495e('0x2a')](function(){if(_['isArray'](_0x1b0aae['query']['ids'])){for(var _0x270a0c=0x0;_0x270a0c<_0x1b0aae['query'][_0x495e('0x67')][_0x495e('0x52')];_0x270a0c+=0x1){socket[_0x495e('0x2c')]('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0x1b0aae['query']['ids'][_0x270a0c]),'UserId':Number(_0x1b0aae[_0x495e('0x5b')]['id'])});}}else{socket[_0x495e('0x2c')]('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0x1b0aae[_0x495e('0x50')]['ids']),'UserId':Number(_0x1b0aae[_0x495e('0x5b')]['id'])});}});}})[_0x495e('0x2a')](respondWithStatusCode(_0x2dc1a3,null))[_0x495e('0x21')](handleError(_0x2dc1a3,null));};exports[_0x495e('0x12b')]=function(_0x6bb401,_0x49536e){return db[_0x495e('0x46')][_0x495e('0x37')]({'where':{'id':_0x6bb401[_0x495e('0x5b')]['id']}})[_0x495e('0x2a')](handleEntityNotFound(_0x49536e,null))['then'](function(_0x5d5543){if(_0x5d5543){return _0x5d5543[_0x495e('0x12b')](_0x6bb401[_0x495e('0x64')][_0x495e('0x67')],_[_0x495e('0x68')](_0x6bb401[_0x495e('0x64')],[_0x495e('0x67'),'id'])||{})[_0x495e('0xa8')](function(){for(var _0x23562c=0x0;_0x23562c<_0x6bb401[_0x495e('0x64')][_0x495e('0x67')][_0x495e('0x52')];_0x23562c+=0x1){socket[_0x495e('0x2c')]('user_has_openchannel_interactions:save',{'OpenchannelInteractionId':Number(_0x6bb401[_0x495e('0x64')][_0x495e('0x67')][_0x23562c]),'UserId':Number(_0x6bb401[_0x495e('0x5b')]['id'])});}return _0x6bb401[_0x495e('0x64')][_0x495e('0x67')];});}})['then'](respondWithResult(_0x49536e,null))[_0x495e('0x21')](handleError(_0x49536e,null));};exports[_0x495e('0x12c')]=function(_0x3190e2,_0x139684){return db[_0x495e('0x46')][_0x495e('0x37')]({'where':{'id':_0x3190e2[_0x495e('0x5b')]['id']}})[_0x495e('0x2a')](handleEntityNotFound(_0x139684,null))[_0x495e('0x2a')](function(_0x434424){if(_0x434424){return _0x434424[_0x495e('0x12c')](_0x3190e2[_0x495e('0x50')][_0x495e('0x67')])['then'](function(){if(_[_0x495e('0xb1')](_0x3190e2[_0x495e('0x50')][_0x495e('0x67')])){for(var _0x47b3f6=0x0;_0x47b3f6<_0x3190e2[_0x495e('0x50')]['ids']['length'];_0x47b3f6+=0x1){socket[_0x495e('0x2c')](_0x495e('0x12d'),{'OpenchannelInteractionId':Number(_0x3190e2[_0x495e('0x50')][_0x495e('0x67')][_0x47b3f6]),'UserId':Number(_0x3190e2[_0x495e('0x5b')]['id'])});}}else{socket[_0x495e('0x2c')](_0x495e('0x12d'),{'OpenchannelInteractionId':Number(_0x3190e2[_0x495e('0x50')][_0x495e('0x67')]),'UserId':Number(_0x3190e2[_0x495e('0x5b')]['id'])});}});}})['then'](respondWithStatusCode(_0x139684,null))['catch'](handleError(_0x139684,null));};exports[_0x495e('0x12e')]=function(_0x24c264,_0x9bae1a){return db[_0x495e('0x46')][_0x495e('0x37')]({'where':{'id':_0x24c264[_0x495e('0x5b')]['id']}})['then'](handleEntityNotFound(_0x9bae1a,null))['then'](function(_0x5a2f75){if(_0x5a2f75){return _0x5a2f75[_0x495e('0x12e')](_0x24c264[_0x495e('0x64')]['ids'],_['omit'](_0x24c264[_0x495e('0x64')],['ids','id'])||{})[_0x495e('0xa8')](function(){for(var _0x27d708=0x0;_0x27d708<_0x24c264[_0x495e('0x64')][_0x495e('0x67')][_0x495e('0x52')];_0x27d708+=0x1){socket[_0x495e('0x2c')]('user_has_whatsapp_interactions:save',{'WhatsappInteractionId':Number(_0x24c264[_0x495e('0x64')][_0x495e('0x67')][_0x27d708]),'UserId':Number(_0x24c264[_0x495e('0x5b')]['id'])});}return _0x24c264[_0x495e('0x64')]['ids'];});}})[_0x495e('0x2a')](respondWithResult(_0x9bae1a,null))['catch'](handleError(_0x9bae1a,null));};exports['removeWhatsappInteractions']=function(_0x3dda87,_0x579b09){return db[_0x495e('0x46')][_0x495e('0x37')]({'where':{'id':_0x3dda87[_0x495e('0x5b')]['id']}})[_0x495e('0x2a')](handleEntityNotFound(_0x579b09,null))[_0x495e('0x2a')](function(_0x5d022c){if(_0x5d022c){return _0x5d022c[_0x495e('0x12f')](_0x3dda87[_0x495e('0x50')][_0x495e('0x67')]);}})[_0x495e('0x2a')](respondWithStatusCode(_0x579b09,null))[_0x495e('0x21')](handleError(_0x579b09,null));};exports['getVoicePrefixes']=function(_0x58afe8,_0x59de2e){var _0xa90a28={};var _0x40addb={};var _0x445498;var _0x1212f5;return db['User'][_0x495e('0x9a')]({'where':{'id':_0x58afe8['params']['id']}})[_0x495e('0x2a')](handleEntityNotFound(_0x59de2e,null))[_0x495e('0x2a')](function(_0x2e19f1){if(_0x2e19f1){_0x445498=_0x2e19f1;_0x40addb['model']=_['keys'](db[_0x495e('0x130')]['rawAttributes']);_0x40addb[_0x495e('0x50')]=_[_0x495e('0x5d')](_0x58afe8[_0x495e('0x50')]);_0x40addb[_0x495e('0xd0')]=_['intersection'](_0x40addb[_0x495e('0x5f')],_0x40addb[_0x495e('0x50')]);_0xa90a28['attributes']=_[_0x495e('0x5e')](_0x40addb[_0x495e('0x5f')],qs[_0x495e('0x60')](_0x58afe8[_0x495e('0x50')][_0x495e('0x60')]));_0xa90a28[_0x495e('0x4c')]=_0xa90a28[_0x495e('0x4c')][_0x495e('0x52')]?_0xa90a28['attributes']:_0x40addb[_0x495e('0x5f')];_0xa90a28[_0x495e('0xdc')]=qs['sort'](_0x58afe8[_0x495e('0x50')][_0x495e('0xd1')]);_0xa90a28[_0x495e('0xd2')]=qs[_0x495e('0xd0')](_['pick'](_0x58afe8[_0x495e('0x50')],_0x40addb[_0x495e('0xd0')]));if(_0x58afe8['query'][_0x495e('0x33')]){_0xa90a28['where']=_[_0x495e('0x61')](_0xa90a28[_0x495e('0xd2')],{'$or':_[_0x495e('0x34')](_0xa90a28[_0x495e('0x4c')],function(_0x3b6435){var _0x333391={};_0x333391[_0x3b6435]={'$like':'%'+_0x58afe8[_0x495e('0x50')][_0x495e('0x33')]+'%'};return _0x333391;})});}_0xa90a28=_['merge']({},_0xa90a28,_0x58afe8[_0x495e('0x62')]);return _0x445498[_0x495e('0x131')](_0xa90a28);}})[_0x495e('0x2a')](function(_0x321ce8){if(_0x321ce8){_0x1212f5=_0x321ce8[_0x495e('0x52')];if(!_0x58afe8[_0x495e('0x50')][_0x495e('0xd5')](_0x495e('0xd6'))){_0xa90a28[_0x495e('0x25')]=qs[_0x495e('0x25')](_0x58afe8[_0x495e('0x50')]['limit']);_0xa90a28[_0x495e('0x23')]=qs[_0x495e('0x23')](_0x58afe8[_0x495e('0x50')][_0x495e('0x23')]);}return _0x445498['getVoicePrefixes'](_0xa90a28);}})['then'](function(_0x37d5d2){if(_0x37d5d2){return _0x37d5d2?{'count':_0x1212f5,'rows':_0x37d5d2}:null;}})[_0x495e('0x2a')](respondWithResult(_0x59de2e,null))['catch'](handleError(_0x59de2e,null));};exports[_0x495e('0x132')]=function(_0x5ba59b,_0x2239a2){var _0x24d958={};var _0x3c24a7={};var _0x752cf;var _0x3ae973;return db[_0x495e('0x46')][_0x495e('0x9a')]({'where':{'id':_0x5ba59b[_0x495e('0x5b')]['id']}})['then'](handleEntityNotFound(_0x2239a2,null))[_0x495e('0x2a')](function(_0x454819){if(_0x454819){_0x752cf=_0x454819;_0x3c24a7[_0x495e('0x5f')]=_[_0x495e('0x5d')](db['FaxAccount'][_0x495e('0x3f')]);_0x3c24a7[_0x495e('0x50')]=_[_0x495e('0x5d')](_0x5ba59b['query']);_0x3c24a7[_0x495e('0xd0')]=_['intersection'](_0x3c24a7['model'],_0x3c24a7[_0x495e('0x50')]);_0x24d958[_0x495e('0x4c')]=_[_0x495e('0x5e')](_0x3c24a7[_0x495e('0x5f')],qs[_0x495e('0x60')](_0x5ba59b[_0x495e('0x50')]['fields']));_0x24d958[_0x495e('0x4c')]=_0x24d958[_0x495e('0x4c')]['length']?_0x24d958[_0x495e('0x4c')]:_0x3c24a7[_0x495e('0x5f')];_0x24d958[_0x495e('0xdc')]=qs['sort'](_0x5ba59b[_0x495e('0x50')][_0x495e('0xd1')]);_0x24d958[_0x495e('0xd2')]=qs[_0x495e('0xd0')](_[_0x495e('0xd3')](_0x5ba59b['query'],_0x3c24a7['filters']));if(_0x5ba59b['query'][_0x495e('0x33')]){_0x24d958['where']=_[_0x495e('0x61')](_0x24d958['where'],{'$or':_[_0x495e('0x34')](_0x24d958[_0x495e('0x4c')],function(_0x530978){var _0x4cc862={};_0x4cc862[_0x530978]={'$like':'%'+_0x5ba59b[_0x495e('0x50')]['filter']+'%'};return _0x4cc862;})});}_0x24d958=_['merge']({},_0x24d958,_0x5ba59b[_0x495e('0x62')]);return _0x752cf['getFaxAccounts'](_0x24d958);}})['then'](function(_0x5c35b9){if(_0x5c35b9){_0x3ae973=_0x5c35b9[_0x495e('0x52')];if(!_0x5ba59b['query'][_0x495e('0xd5')](_0x495e('0xd6'))){_0x24d958[_0x495e('0x25')]=qs[_0x495e('0x25')](_0x5ba59b[_0x495e('0x50')][_0x495e('0x25')]);_0x24d958['offset']=qs['offset'](_0x5ba59b[_0x495e('0x50')][_0x495e('0x23')]);}return _0x752cf[_0x495e('0x132')](_0x24d958);}})[_0x495e('0x2a')](function(_0x3d8976){if(_0x3d8976){return _0x3d8976?{'count':_0x3ae973,'rows':_0x3d8976}:null;}})[_0x495e('0x2a')](respondWithResult(_0x2239a2,null))[_0x495e('0x21')](handleError(_0x2239a2,null));};exports[_0x495e('0x133')]=function(_0xeee279,_0x419602){return db['User'][_0x495e('0x37')]({'where':{'id':_0xeee279[_0x495e('0x5b')]['id']}})[_0x495e('0x2a')](handleEntityNotFound(_0x419602,null))[_0x495e('0x2a')](function(_0x116406){if(_0x116406){return _0x116406[_0x495e('0x133')](_0xeee279[_0x495e('0x64')][_0x495e('0x67')],_[_0x495e('0x68')](_0xeee279[_0x495e('0x64')],[_0x495e('0x67'),'id'])||{});}})[_0x495e('0x2a')](respondWithResult(_0x419602,null))[_0x495e('0x21')](handleError(_0x419602,null));};exports['removeFaxAccounts']=function(_0x3b899c,_0x2156f1){return db[_0x495e('0x46')]['find']({'where':{'id':_0x3b899c[_0x495e('0x5b')]['id']}})[_0x495e('0x2a')](handleEntityNotFound(_0x2156f1,null))['then'](function(_0x155634){if(_0x155634){return _0x155634['removeFaxAccounts'](_0x3b899c['query'][_0x495e('0x67')]);}})[_0x495e('0x2a')](respondWithStatusCode(_0x2156f1,null))[_0x495e('0x21')](handleError(_0x2156f1,null));};exports[_0x495e('0x134')]=function(_0x241b10,_0x2fd7ee){var _0x5965dd={};var _0x1dcbaa={};var _0x26e2d7;var _0x324a84;return db[_0x495e('0x46')][_0x495e('0x9a')]({'where':{'id':_0x241b10[_0x495e('0x5b')]['id']}})[_0x495e('0x2a')](handleEntityNotFound(_0x2fd7ee,null))[_0x495e('0x2a')](function(_0x49f7b1){if(_0x49f7b1){_0x26e2d7=_0x49f7b1;_0x1dcbaa['model']=_[_0x495e('0x5d')](db['MailAccount'][_0x495e('0x3f')]);_0x1dcbaa['query']=_['keys'](_0x241b10[_0x495e('0x50')]);_0x1dcbaa['filters']=_[_0x495e('0x5e')](_0x1dcbaa[_0x495e('0x5f')],_0x1dcbaa[_0x495e('0x50')]);_0x5965dd['attributes']=_['intersection'](_0x1dcbaa[_0x495e('0x5f')],qs['fields'](_0x241b10[_0x495e('0x50')][_0x495e('0x60')]));_0x5965dd[_0x495e('0x4c')]=_0x5965dd[_0x495e('0x4c')]['length']?_0x5965dd['attributes']:_0x1dcbaa[_0x495e('0x5f')];_0x5965dd[_0x495e('0xdc')]=qs[_0x495e('0xd1')](_0x241b10[_0x495e('0x50')][_0x495e('0xd1')]);_0x5965dd[_0x495e('0xd2')]=qs['filters'](_[_0x495e('0xd3')](_0x241b10[_0x495e('0x50')],_0x1dcbaa[_0x495e('0xd0')]));if(_0x241b10[_0x495e('0x50')][_0x495e('0x33')]){_0x5965dd[_0x495e('0xd2')]=_[_0x495e('0x61')](_0x5965dd[_0x495e('0xd2')],{'$or':_['map'](_0x5965dd[_0x495e('0x4c')],function(_0x54f28d){var _0x1cb9e4={};_0x1cb9e4[_0x54f28d]={'$like':'%'+_0x241b10[_0x495e('0x50')][_0x495e('0x33')]+'%'};return _0x1cb9e4;})});}_0x5965dd=_[_0x495e('0x61')]({},_0x5965dd,_0x241b10[_0x495e('0x62')]);return _0x26e2d7['getMailAccounts'](_0x5965dd);}})['then'](function(_0xed0f6c){if(_0xed0f6c){_0x324a84=_0xed0f6c['length'];if(!_0x241b10[_0x495e('0x50')][_0x495e('0xd5')](_0x495e('0xd6'))){_0x5965dd[_0x495e('0x25')]=qs[_0x495e('0x25')](_0x241b10['query']['limit']);_0x5965dd[_0x495e('0x23')]=qs[_0x495e('0x23')](_0x241b10[_0x495e('0x50')]['offset']);}return _0x26e2d7[_0x495e('0x134')](_0x5965dd);}})[_0x495e('0x2a')](function(_0x36870d){if(_0x36870d){return _0x36870d?{'count':_0x324a84,'rows':_0x36870d}:null;}})[_0x495e('0x2a')](respondWithResult(_0x2fd7ee,null))[_0x495e('0x21')](handleError(_0x2fd7ee,null));};exports['addMailAccounts']=function(_0x41868a,_0x1b5c73){return db['User'][_0x495e('0x37')]({'where':{'id':_0x41868a[_0x495e('0x5b')]['id']}})[_0x495e('0x2a')](handleEntityNotFound(_0x1b5c73,null))[_0x495e('0x2a')](function(_0x204f63){if(_0x204f63){return _0x204f63[_0x495e('0x135')](_0x41868a['body'][_0x495e('0x67')],_['omit'](_0x41868a[_0x495e('0x64')],[_0x495e('0x67'),'id'])||{});}})['then'](respondWithResult(_0x1b5c73,null))['catch'](handleError(_0x1b5c73,null));};exports[_0x495e('0x136')]=function(_0x5e2763,_0x4fc3ad){return db[_0x495e('0x46')][_0x495e('0x37')]({'where':{'id':_0x5e2763[_0x495e('0x5b')]['id']}})[_0x495e('0x2a')](handleEntityNotFound(_0x4fc3ad,null))[_0x495e('0x2a')](function(_0x3922b3){if(_0x3922b3){return _0x3922b3[_0x495e('0x136')](_0x5e2763[_0x495e('0x50')]['ids']);}})[_0x495e('0x2a')](respondWithStatusCode(_0x4fc3ad,null))['catch'](handleError(_0x4fc3ad,null));};exports[_0x495e('0x137')]=function(_0x36434d,_0x292fd5){var _0x95f9ee={};var _0x17c1b3={};var _0x526365;var _0x16de36;return db[_0x495e('0x46')][_0x495e('0x9a')]({'where':{'id':_0x36434d['params']['id']}})['then'](handleEntityNotFound(_0x292fd5,null))[_0x495e('0x2a')](function(_0x1f2aff){if(_0x1f2aff){_0x526365=_0x1f2aff;_0x17c1b3[_0x495e('0x5f')]=_[_0x495e('0x5d')](db[_0x495e('0x138')][_0x495e('0x3f')]);_0x17c1b3[_0x495e('0x50')]=_['keys'](_0x36434d[_0x495e('0x50')]);_0x17c1b3['filters']=_['intersection'](_0x17c1b3[_0x495e('0x5f')],_0x17c1b3[_0x495e('0x50')]);_0x95f9ee['attributes']=_['intersection'](_0x17c1b3[_0x495e('0x5f')],qs[_0x495e('0x60')](_0x36434d[_0x495e('0x50')][_0x495e('0x60')]));_0x95f9ee[_0x495e('0x4c')]=_0x95f9ee['attributes']['length']?_0x95f9ee[_0x495e('0x4c')]:_0x17c1b3[_0x495e('0x5f')];_0x95f9ee['order']=qs[_0x495e('0xd1')](_0x36434d[_0x495e('0x50')]['sort']);_0x95f9ee[_0x495e('0xd2')]=qs[_0x495e('0xd0')](_['pick'](_0x36434d['query'],_0x17c1b3[_0x495e('0xd0')]));if(_0x36434d[_0x495e('0x50')]['filter']){_0x95f9ee[_0x495e('0xd2')]=_[_0x495e('0x61')](_0x95f9ee['where'],{'$or':_[_0x495e('0x34')](_0x95f9ee[_0x495e('0x4c')],function(_0x1352aa){var _0x24a2a5={};_0x24a2a5[_0x1352aa]={'$like':'%'+_0x36434d[_0x495e('0x50')][_0x495e('0x33')]+'%'};return _0x24a2a5;})});}_0x95f9ee=_['merge']({},_0x95f9ee,_0x36434d[_0x495e('0x62')]);return _0x526365['getOpenchannelAccounts'](_0x95f9ee);}})[_0x495e('0x2a')](function(_0xe434b0){if(_0xe434b0){_0x16de36=_0xe434b0['length'];if(!_0x36434d[_0x495e('0x50')]['hasOwnProperty'](_0x495e('0xd6'))){_0x95f9ee['limit']=qs[_0x495e('0x25')](_0x36434d[_0x495e('0x50')][_0x495e('0x25')]);_0x95f9ee[_0x495e('0x23')]=qs['offset'](_0x36434d[_0x495e('0x50')][_0x495e('0x23')]);}return _0x526365[_0x495e('0x137')](_0x95f9ee);}})[_0x495e('0x2a')](function(_0x11ad41){if(_0x11ad41){return _0x11ad41?{'count':_0x16de36,'rows':_0x11ad41}:null;}})[_0x495e('0x2a')](respondWithResult(_0x292fd5,null))[_0x495e('0x21')](handleError(_0x292fd5,null));};exports[_0x495e('0x139')]=function(_0xdade6c,_0x5a5b7d){return db[_0x495e('0x46')]['find']({'where':{'id':_0xdade6c[_0x495e('0x5b')]['id']}})['then'](handleEntityNotFound(_0x5a5b7d,null))[_0x495e('0x2a')](function(_0x25ff4f){if(_0x25ff4f){return _0x25ff4f['addOpenchannelAccounts'](_0xdade6c[_0x495e('0x64')][_0x495e('0x67')],_[_0x495e('0x68')](_0xdade6c[_0x495e('0x64')],[_0x495e('0x67'),'id'])||{});}})[_0x495e('0x2a')](respondWithResult(_0x5a5b7d,null))[_0x495e('0x21')](handleError(_0x5a5b7d,null));};exports[_0x495e('0x13a')]=function(_0x2e9bd2,_0x2fa424){return db[_0x495e('0x46')]['find']({'where':{'id':_0x2e9bd2[_0x495e('0x5b')]['id']}})[_0x495e('0x2a')](handleEntityNotFound(_0x2fa424,null))[_0x495e('0x2a')](function(_0x12716c){if(_0x12716c){return _0x12716c['removeOpenchannelAccounts'](_0x2e9bd2[_0x495e('0x50')]['ids']);}})[_0x495e('0x2a')](respondWithStatusCode(_0x2fa424,null))['catch'](handleError(_0x2fa424,null));};exports[_0x495e('0x13b')]=function(_0x4346c6,_0x416360){var _0x511a6a={};var _0x4fa7da={};var _0x266009;var _0x15fbf7;return db[_0x495e('0x46')][_0x495e('0x9a')]({'where':{'id':_0x4346c6[_0x495e('0x5b')]['id']}})[_0x495e('0x2a')](handleEntityNotFound(_0x416360,null))[_0x495e('0x2a')](function(_0x33b3d6){if(_0x33b3d6){_0x266009=_0x33b3d6;_0x4fa7da[_0x495e('0x5f')]=_['keys'](db['SmsAccount'][_0x495e('0x3f')]);_0x4fa7da[_0x495e('0x50')]=_[_0x495e('0x5d')](_0x4346c6[_0x495e('0x50')]);_0x4fa7da[_0x495e('0xd0')]=_[_0x495e('0x5e')](_0x4fa7da[_0x495e('0x5f')],_0x4fa7da[_0x495e('0x50')]);_0x511a6a['attributes']=_[_0x495e('0x5e')](_0x4fa7da[_0x495e('0x5f')],qs[_0x495e('0x60')](_0x4346c6[_0x495e('0x50')]['fields']));_0x511a6a[_0x495e('0x4c')]=_0x511a6a[_0x495e('0x4c')]['length']?_0x511a6a[_0x495e('0x4c')]:_0x4fa7da[_0x495e('0x5f')];_0x511a6a['order']=qs[_0x495e('0xd1')](_0x4346c6['query'][_0x495e('0xd1')]);_0x511a6a[_0x495e('0xd2')]=qs[_0x495e('0xd0')](_[_0x495e('0xd3')](_0x4346c6['query'],_0x4fa7da['filters']));if(_0x4346c6[_0x495e('0x50')][_0x495e('0x33')]){_0x511a6a[_0x495e('0xd2')]=_['merge'](_0x511a6a[_0x495e('0xd2')],{'$or':_[_0x495e('0x34')](_0x511a6a[_0x495e('0x4c')],function(_0x3c445a){var _0x47d47d={};_0x47d47d[_0x3c445a]={'$like':'%'+_0x4346c6[_0x495e('0x50')][_0x495e('0x33')]+'%'};return _0x47d47d;})});}_0x511a6a=_[_0x495e('0x61')]({},_0x511a6a,_0x4346c6['options']);return _0x266009[_0x495e('0x13b')](_0x511a6a);}})[_0x495e('0x2a')](function(_0x493af8){if(_0x493af8){_0x15fbf7=_0x493af8[_0x495e('0x52')];if(!_0x4346c6[_0x495e('0x50')][_0x495e('0xd5')](_0x495e('0xd6'))){_0x511a6a[_0x495e('0x25')]=qs[_0x495e('0x25')](_0x4346c6[_0x495e('0x50')][_0x495e('0x25')]);_0x511a6a[_0x495e('0x23')]=qs['offset'](_0x4346c6[_0x495e('0x50')][_0x495e('0x23')]);}return _0x266009[_0x495e('0x13b')](_0x511a6a);}})[_0x495e('0x2a')](function(_0x228d5c){if(_0x228d5c){return _0x228d5c?{'count':_0x15fbf7,'rows':_0x228d5c}:null;}})['then'](respondWithResult(_0x416360,null))[_0x495e('0x21')](handleError(_0x416360,null));};exports[_0x495e('0x13c')]=function(_0x3d1f12,_0xa99bc0){return db[_0x495e('0x46')][_0x495e('0x37')]({'where':{'id':_0x3d1f12[_0x495e('0x5b')]['id']}})['then'](handleEntityNotFound(_0xa99bc0,null))['then'](function(_0x1f63b2){if(_0x1f63b2){return _0x1f63b2[_0x495e('0x13c')](_0x3d1f12[_0x495e('0x64')][_0x495e('0x67')],_[_0x495e('0x68')](_0x3d1f12[_0x495e('0x64')],['ids','id'])||{});}})[_0x495e('0x2a')](respondWithResult(_0xa99bc0,null))[_0x495e('0x21')](handleError(_0xa99bc0,null));};exports['removeSmsAccounts']=function(_0x3bad72,_0x5dc72c){return db[_0x495e('0x46')][_0x495e('0x37')]({'where':{'id':_0x3bad72[_0x495e('0x5b')]['id']}})[_0x495e('0x2a')](handleEntityNotFound(_0x5dc72c,null))['then'](function(_0x9472fe){if(_0x9472fe){return _0x9472fe[_0x495e('0x13d')](_0x3bad72[_0x495e('0x50')][_0x495e('0x67')]);}})[_0x495e('0x2a')](respondWithStatusCode(_0x5dc72c,null))['catch'](handleError(_0x5dc72c,null));};exports[_0x495e('0x13e')]=function(_0x16e6ac,_0x2ceb2d){var _0x2d2d7b={};var _0x58ecd6={};var _0x12f19c;var _0x34533b;return db[_0x495e('0x46')]['findOne']({'where':{'id':_0x16e6ac[_0x495e('0x5b')]['id']}})[_0x495e('0x2a')](handleEntityNotFound(_0x2ceb2d,null))[_0x495e('0x2a')](function(_0xd92b47){if(_0xd92b47){_0x12f19c=_0xd92b47;_0x58ecd6[_0x495e('0x5f')]=_[_0x495e('0x5d')](db[_0x495e('0x13f')][_0x495e('0x3f')]);_0x58ecd6['query']=_['keys'](_0x16e6ac[_0x495e('0x50')]);_0x58ecd6['filters']=_[_0x495e('0x5e')](_0x58ecd6[_0x495e('0x5f')],_0x58ecd6[_0x495e('0x50')]);_0x2d2d7b[_0x495e('0x4c')]=_[_0x495e('0x5e')](_0x58ecd6['model'],qs['fields'](_0x16e6ac['query']['fields']));_0x2d2d7b['attributes']=_0x2d2d7b[_0x495e('0x4c')][_0x495e('0x52')]?_0x2d2d7b[_0x495e('0x4c')]:_0x58ecd6[_0x495e('0x5f')];_0x2d2d7b[_0x495e('0xdc')]=qs['sort'](_0x16e6ac['query'][_0x495e('0xd1')]);_0x2d2d7b[_0x495e('0xd2')]=qs['filters'](_[_0x495e('0xd3')](_0x16e6ac[_0x495e('0x50')],_0x58ecd6[_0x495e('0xd0')]));if(_0x16e6ac[_0x495e('0x50')][_0x495e('0x33')]){_0x2d2d7b[_0x495e('0xd2')]=_['merge'](_0x2d2d7b[_0x495e('0xd2')],{'$or':_[_0x495e('0x34')](_0x2d2d7b[_0x495e('0x4c')],function(_0x3c08d9){var _0x1a5b47={};_0x1a5b47[_0x3c08d9]={'$like':'%'+_0x16e6ac[_0x495e('0x50')][_0x495e('0x33')]+'%'};return _0x1a5b47;})});}_0x2d2d7b=_[_0x495e('0x61')]({},_0x2d2d7b,_0x16e6ac['options']);return _0x12f19c[_0x495e('0x13e')](_0x2d2d7b);}})[_0x495e('0x2a')](function(_0x3d2bc3){if(_0x3d2bc3){_0x34533b=_0x3d2bc3[_0x495e('0x52')];if(!_0x16e6ac['query'][_0x495e('0xd5')](_0x495e('0xd6'))){_0x2d2d7b[_0x495e('0x25')]=qs[_0x495e('0x25')](_0x16e6ac[_0x495e('0x50')][_0x495e('0x25')]);_0x2d2d7b[_0x495e('0x23')]=qs[_0x495e('0x23')](_0x16e6ac[_0x495e('0x50')][_0x495e('0x23')]);}return _0x12f19c[_0x495e('0x13e')](_0x2d2d7b);}})[_0x495e('0x2a')](function(_0x1b5874){if(_0x1b5874){return _0x1b5874?{'count':_0x34533b,'rows':_0x1b5874}:null;}})['then'](respondWithResult(_0x2ceb2d,null))[_0x495e('0x21')](handleError(_0x2ceb2d,null));};exports['addChatWebsites']=function(_0x5458a0,_0x44072d){return db[_0x495e('0x46')][_0x495e('0x37')]({'where':{'id':_0x5458a0[_0x495e('0x5b')]['id']}})[_0x495e('0x2a')](handleEntityNotFound(_0x44072d,null))['then'](function(_0xa8616f){if(_0xa8616f){return _0xa8616f[_0x495e('0x140')](_0x5458a0[_0x495e('0x64')][_0x495e('0x67')],_[_0x495e('0x68')](_0x5458a0[_0x495e('0x64')],[_0x495e('0x67'),'id'])||{});}})[_0x495e('0x2a')](respondWithResult(_0x44072d,null))[_0x495e('0x21')](handleError(_0x44072d,null));};exports[_0x495e('0x141')]=function(_0x3eb35b,_0x264cae){return db[_0x495e('0x46')][_0x495e('0x37')]({'where':{'id':_0x3eb35b[_0x495e('0x5b')]['id']}})[_0x495e('0x2a')](handleEntityNotFound(_0x264cae,null))[_0x495e('0x2a')](function(_0x457fd0){if(_0x457fd0){return _0x457fd0[_0x495e('0x141')](_0x3eb35b[_0x495e('0x50')]['ids']);}})[_0x495e('0x2a')](respondWithStatusCode(_0x264cae,null))[_0x495e('0x21')](handleError(_0x264cae,null));};exports[_0x495e('0x142')]=function(_0x2d24b0,_0x24bc03){var _0x408f61={};var _0x12bff9={};var _0x16b2c9;var _0x316c24;return db[_0x495e('0x46')][_0x495e('0x9a')]({'where':{'id':_0x2d24b0[_0x495e('0x5b')]['id']}})['then'](handleEntityNotFound(_0x24bc03,null))[_0x495e('0x2a')](function(_0xd4c6b6){if(_0xd4c6b6){_0x16b2c9=_0xd4c6b6;_0x12bff9['model']=_[_0x495e('0x5d')](db[_0x495e('0x143')][_0x495e('0x3f')]);_0x12bff9[_0x495e('0x50')]=_[_0x495e('0x5d')](_0x2d24b0[_0x495e('0x50')]);_0x12bff9[_0x495e('0xd0')]=_[_0x495e('0x5e')](_0x12bff9[_0x495e('0x5f')],_0x12bff9[_0x495e('0x50')]);_0x408f61[_0x495e('0x4c')]=_[_0x495e('0x5e')](_0x12bff9[_0x495e('0x5f')],qs[_0x495e('0x60')](_0x2d24b0['query'][_0x495e('0x60')]));_0x408f61['attributes']=_0x408f61[_0x495e('0x4c')]['length']?_0x408f61[_0x495e('0x4c')]:_0x12bff9[_0x495e('0x5f')];_0x408f61[_0x495e('0xdc')]=qs[_0x495e('0xd1')](_0x2d24b0[_0x495e('0x50')][_0x495e('0xd1')]);_0x408f61[_0x495e('0xd2')]=qs[_0x495e('0xd0')](_[_0x495e('0xd3')](_0x2d24b0['query'],_0x12bff9['filters']));if(_0x2d24b0[_0x495e('0x50')][_0x495e('0x33')]){_0x408f61[_0x495e('0xd2')]=_[_0x495e('0x61')](_0x408f61[_0x495e('0xd2')],{'$or':_[_0x495e('0x34')](_0x408f61['attributes'],function(_0x4da54d){var _0x4f38fa={};_0x4f38fa[_0x4da54d]={'$like':'%'+_0x2d24b0[_0x495e('0x50')][_0x495e('0x33')]+'%'};return _0x4f38fa;})});}_0x408f61=_['merge']({},_0x408f61,_0x2d24b0[_0x495e('0x62')]);return _0x16b2c9[_0x495e('0x142')](_0x408f61);}})['then'](function(_0x158436){if(_0x158436){_0x316c24=_0x158436['length'];if(!_0x2d24b0[_0x495e('0x50')][_0x495e('0xd5')](_0x495e('0xd6'))){_0x408f61[_0x495e('0x25')]=qs[_0x495e('0x25')](_0x2d24b0[_0x495e('0x50')][_0x495e('0x25')]);_0x408f61[_0x495e('0x23')]=qs['offset'](_0x2d24b0['query']['offset']);}return _0x16b2c9['getWhatsappAccounts'](_0x408f61);}})[_0x495e('0x2a')](function(_0x15b7a6){if(_0x15b7a6){return _0x15b7a6?{'count':_0x316c24,'rows':_0x15b7a6}:null;}})[_0x495e('0x2a')](respondWithResult(_0x24bc03,null))[_0x495e('0x21')](handleError(_0x24bc03,null));};exports['addWhatsappAccounts']=function(_0x353358,_0x442054){return db[_0x495e('0x46')][_0x495e('0x37')]({'where':{'id':_0x353358[_0x495e('0x5b')]['id']}})['then'](handleEntityNotFound(_0x442054,null))['then'](function(_0x17ff35){if(_0x17ff35){return _0x17ff35[_0x495e('0x144')](_0x353358['body'][_0x495e('0x67')],_['omit'](_0x353358['body'],[_0x495e('0x67'),'id'])||{});}})[_0x495e('0x2a')](respondWithResult(_0x442054,null))['catch'](handleError(_0x442054,null));};exports[_0x495e('0x145')]=function(_0x446474,_0x37008b){return db[_0x495e('0x46')][_0x495e('0x37')]({'where':{'id':_0x446474[_0x495e('0x5b')]['id']}})[_0x495e('0x2a')](handleEntityNotFound(_0x37008b,null))[_0x495e('0x2a')](function(_0x2b180e){if(_0x2b180e){return _0x2b180e[_0x495e('0x145')](_0x446474['query'][_0x495e('0x67')]);}})[_0x495e('0x2a')](respondWithStatusCode(_0x37008b,null))['catch'](handleError(_0x37008b,null));};exports[_0x495e('0x146')]=function(_0x40cc16,_0x1efd8e){var _0x4c1bc3={},_0x4fe2f7={},_0x4bc55b={'count':0x0,'rows':[]};var _0x31336f=db[_0x495e('0x147')]['rawAttributes'];_0x4fe2f7['model']=_[_0x495e('0x5d')](_0x31336f);_0x4fe2f7[_0x495e('0x50')]=_[_0x495e('0x5d')](_0x40cc16['query']);_0x4fe2f7[_0x495e('0xd0')]=_[_0x495e('0x5e')](_0x4fe2f7['model'],_0x4fe2f7[_0x495e('0x50')]);_0x4fe2f7[_0x495e('0xd0')]=_[_0x495e('0xc5')](_0x4fe2f7[_0x495e('0xd0')],[_0x495e('0x148'),_0x495e('0x149'),_0x495e('0x14a'),_0x495e('0x14b'),_0x495e('0x14c'),_0x495e('0x14d'),_0x495e('0x14e'),_0x495e('0x14f'),_0x495e('0x150'),_0x495e('0x151'),_0x495e('0x152'),_0x495e('0x153'),_0x495e('0x154'),_0x495e('0x155'),_0x495e('0x156'),_0x495e('0x157'),_0x495e('0x158'),_0x495e('0x155'),_0x495e('0x159'),'$contains',_0x495e('0x15a'),_0x495e('0x15b')]);_0x4c1bc3[_0x495e('0x4c')]=_['intersection'](_0x4fe2f7[_0x495e('0x5f')],qs['fields'](_0x40cc16[_0x495e('0x50')]['fields']));_0x4c1bc3['attributes']=_0x4c1bc3[_0x495e('0x4c')]['length']?_0x4c1bc3['attributes']:_0x4fe2f7[_0x495e('0x5f')];if(!_0x40cc16[_0x495e('0x50')][_0x495e('0xd5')](_0x495e('0xd6'))){_0x4c1bc3[_0x495e('0x25')]=qs['limit'](_0x40cc16[_0x495e('0x50')]['limit']);_0x4c1bc3['offset']=qs[_0x495e('0x23')](_0x40cc16[_0x495e('0x50')][_0x495e('0x23')]);}_0x4c1bc3[_0x495e('0xdc')]=qs[_0x495e('0xd1')](_0x40cc16['query'][_0x495e('0xd1')]);_0x4c1bc3[_0x495e('0xd2')]=qs['filters'](_['pick'](_0x40cc16['query'],_0x4fe2f7[_0x495e('0xd0')]));if(_0x40cc16[_0x495e('0x50')][_0x495e('0x33')]){_0x4c1bc3['where']=_[_0x495e('0x61')](_0x4c1bc3[_0x495e('0xd2')],{'$or':_['map'](_0x4c1bc3['attributes'],function(_0x4f01dd){var _0x216417={};_0x216417[_0x4f01dd]={'$like':'%'+_0x40cc16['query']['filter']+'%'};return _0x216417;})});}_0x4c1bc3[_0x495e('0xd2')]={'$and':[_0x4c1bc3['where'],{'$or':[{'UserId':_0x40cc16[_0x495e('0x5b')]['id']},{'OwnerId':_0x40cc16[_0x495e('0x5b')]['id']}]}]};_0x4c1bc3=_['merge']({},_0x4c1bc3,_0x40cc16['options']);var _0x12ece6={'where':_0x4c1bc3[_0x495e('0xd2')]};return db[_0x495e('0x147')]['count'](_0x12ece6)['then'](function(_0x252fe4){_0x4bc55b[_0x495e('0x26')]=_0x252fe4;if(_0x40cc16[_0x495e('0x50')][_0x495e('0x47')]){_0x4c1bc3['include']=[{'attributes':['id','firstName',_0x495e('0x15c'),'phone'],'model':db['CmContact'],'as':_0x495e('0x15d')},{'attributes':['id',_0x495e('0x3c'),'dialActive'],'model':db['VoiceQueue'],'as':_0x495e('0xcf')}];}return db[_0x495e('0x147')][_0x495e('0x4e')](_0x4c1bc3);})[_0x495e('0x2a')](function(_0x5c96d3){_0x4bc55b['rows']=_0x5c96d3;return _0x4bc55b;})[_0x495e('0x2a')](respondWithFilteredResult(_0x1efd8e,_0x4c1bc3))[_0x495e('0x21')](handleError(_0x1efd8e,null));};exports[_0x495e('0x15e')]=function(_0x1282a2,_0xd89872){if(!_[_0x495e('0x6d')](_0x1282a2[_0x495e('0x30')]['id'])&&(_0x1282a2[_0x495e('0x30')][_0x495e('0x2e')]==_0x495e('0x2f')||_0x1282a2['user'][_0x495e('0x2e')]==_0x495e('0x30'))){return db['User']['findOne']({'where':{'id':_0x1282a2[_0x495e('0x5b')]['id']},'raw':!![]})[_0x495e('0x2a')](function(_0x11f710){return authService[_0x495e('0x15f')](_0x11f710);})['then'](function(_0x3ef008){if(_0x3ef008){return _0xd89872[_0x495e('0x27')](0xc8)[_0x495e('0x22')]({'api_key':_0x3ef008[_0x495e('0x160')]});}else{return _0xd89872['status'](0xcc)[_0x495e('0x22')]({'message':_0x495e('0x161')});}})['catch'](handleError(_0xd89872,0x193));}else{return _0xd89872['status'](0x191)[_0x495e('0x22')]({'message':_0x495e('0x162')});}};exports['createApiKey']=function(_0x8fef3a,_0x2addf1){if(!_[_0x495e('0x6d')](_0x8fef3a[_0x495e('0x30')]['id'])&&(_0x8fef3a[_0x495e('0x30')][_0x495e('0x2e')]==_0x495e('0x2f')||_0x8fef3a['user'][_0x495e('0x2e')]==_0x495e('0x30'))){return db[_0x495e('0x46')][_0x495e('0x37')]({'where':{'id':_0x8fef3a[_0x495e('0x5b')]['id']}})['then'](function(_0x25e2ec){return authService[_0x495e('0x163')](_0x25e2ec);})[_0x495e('0x2a')](function(_0x4d0370){return db[_0x495e('0x46')]['update']({'apiKeyIat':_0x4d0370[_0x495e('0x164')],'apiKeyNonce':_0x4d0370['nonce']},{'where':{'id':_0x8fef3a[_0x495e('0x5b')]['id']}})[_0x495e('0x2a')](function(){return _0x2addf1[_0x495e('0x27')](0xc8)['json']({'api_key':_0x4d0370[_0x495e('0x160')]});});})['catch'](handleError(_0x2addf1,0x193));}else{return _0x2addf1['status'](0x191)[_0x495e('0x22')]({'message':_0x495e('0x162')});}};exports[_0x495e('0x165')]=function(_0x4d33e2,_0xd6b7d5){if(!_[_0x495e('0x6d')](_0x4d33e2[_0x495e('0x30')]['id'])&&(_0x4d33e2[_0x495e('0x30')][_0x495e('0x2e')]==_0x495e('0x2f')||_0x4d33e2[_0x495e('0x30')][_0x495e('0x2e')]=='user')){return db[_0x495e('0x46')][_0x495e('0x37')]({'where':{'id':_0x4d33e2[_0x495e('0x5b')]['id']}})[_0x495e('0x2a')](handleEntityNotFound(_0xd6b7d5,null))[_0x495e('0x2a')](function(_0x420713){if(_0x420713&&_0x420713[_0x495e('0x166')]&&_0x420713[_0x495e('0x167')])return _0x420713;else throw{'message':'API\x20key\x20not\x20available'};})[_0x495e('0x2a')](function(){return db[_0x495e('0x46')][_0x495e('0x29')]({'apiKeyNonce':null,'apiKeyIat':null},{'where':{'id':_0x4d33e2[_0x495e('0x5b')]['id']}});})['then'](respondWithStatusCode(_0xd6b7d5,0xc8))[_0x495e('0x21')](handleError(_0xd6b7d5,0x193));}else{return _0xd6b7d5[_0x495e('0x27')](0x191)['json']({'message':'You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.'});}};exports[_0x495e('0x168')]=function(_0x37c404,_0x4e8adb){var _0x15a6cc=_0x37c404['user']['get']({'plain':!![]});if(!_0x15a6cc){return _0x4e8adb[_0x495e('0x27')](0x191)[_0x495e('0x3d')](_0x495e('0x169'));}else{Promise[_0x495e('0xff')]()[_0x495e('0x2a')](function(){if(_0x37c404[_0x495e('0x50')][_0x495e('0x49')]!==_0x495e('0x4a'))return;return _0x37c404['user']['getUserSetting']();})[_0x495e('0x2a')](function(_0x58f581){if(!_0x58f581)return;return _0x58f581[_0x495e('0xac')]({'plain':!![]});})[_0x495e('0x2a')](function(_0x45be2f){_0x15a6cc[_0x495e('0x49')]=_0x45be2f;return _0x4e8adb[_0x495e('0x27')](0xc8)[_0x495e('0x22')](_0x15a6cc);});}};exports['getPresence']=function(_0x4516f0,_0xa2c7df){var _0x3c0c49={'offset':0x0},_0x12b515={'count':0x0,'rows':[]};Promise[_0x495e('0xff')]()[_0x495e('0x2a')](function(){if(!_0x4516f0['query']['filter']&&!_0x4516f0[_0x495e('0x50')]['teams']&&!_0x4516f0[_0x495e('0x50')]['queues'])return[];return Promise[_0x495e('0xff')]()['then'](function(){var _0x4d20d7=[];if(!_[_0x495e('0x8e')](_0x4516f0['query'][_0x495e('0x16a')])){_0x4d20d7[_0x495e('0x4d')](db['Team'][_0x495e('0x4e')]({'attributes':['id',_0x495e('0x3c')],'where':{'id':_0x4516f0[_0x495e('0x50')][_0x495e('0x16a')]}}));}if(!_[_0x495e('0x8e')](_0x4516f0[_0x495e('0x50')][_0x495e('0x16b')])){_0x4d20d7[_0x495e('0x4d')](db[_0x495e('0x16c')]['findAll']({'attributes':['id',_0x495e('0x3c')],'type':_0x495e('0x16d'),'where':{'id':_0x4516f0['query']['queues']}}));}return Promise[_0x495e('0x59')](_0x4d20d7);})[_0x495e('0x2a')](function(_0x164cd4){var _0x391cbe=_['flatten'](_0x164cd4)[_0x495e('0x34')](function(_0xf306bf){return _0xf306bf[_0x495e('0x11a')]({'attributes':['id',_0x495e('0x3c'),_0x495e('0x6e'),_0x495e('0x102')],'raw':!![]});});return Promise[_0x495e('0x59')](_0x391cbe);})[_0x495e('0x2a')](function(_0x4f5519){var _0x1d0b65=_[_0x495e('0x16e')](_0x4f5519);if(!_0x4516f0[_0x495e('0x50')][_0x495e('0x33')])return _0x1d0b65;if(_[_0x495e('0x8e')](_0x1d0b65)){return db[_0x495e('0x46')][_0x495e('0x4e')]({'attributes':['id','name',_0x495e('0x6e'),_0x495e('0x102')],'where':{'role':'agent','$or':[db[_0x495e('0x70')]['where'](db['sequelize']['fn'](_0x495e('0x16f'),db[_0x495e('0x70')][_0x495e('0x170')](_0x495e('0x3c'))),{'$like':'%'+_0x4516f0[_0x495e('0x50')][_0x495e('0x33')][_0x495e('0xa5')]()+'%'}),{'internal':{'$like':'%'+_0x4516f0[_0x495e('0x50')][_0x495e('0x33')]+'%'}}]},'raw':!![]});}else{return _(_0x1d0b65)['flatten']()[_0x495e('0x33')](function(_0x3d8cc6){return _0x3d8cc6['name'][_0x495e('0xa5')]()['includes'](_0x4516f0[_0x495e('0x50')][_0x495e('0x33')][_0x495e('0xa5')]())||_0x3d8cc6['internal'][_0x495e('0x171')]()[_0x495e('0x36')](_0x4516f0[_0x495e('0x50')][_0x495e('0x33')]);})['value']();}})[_0x495e('0x2a')](function(_0x1fc6c3){var _0x17cb29=_0x495e('0x3c');var _0x5c5c3a=_0x495e('0x172');if(_0x4516f0[_0x495e('0x50')][_0x495e('0xd1')]){_0x5c5c3a=_0x4516f0[_0x495e('0x50')][_0x495e('0xd1')][0x0]==='-'?_0x495e('0x173'):_0x495e('0x172');_0x17cb29=_0x5c5c3a==='asc'?_0x4516f0[_0x495e('0x50')][_0x495e('0xd1')]:_0x4516f0[_0x495e('0x50')][_0x495e('0xd1')][_0x495e('0x174')](0x1);}return _(_0x1fc6c3)[_0x495e('0x175')]('id')[_0x495e('0x176')]([function(_0x1e5703){return _0x17cb29===_0x495e('0x3c')?_0x1e5703[_0x17cb29][_0x495e('0xa5')]():_0x1e5703[_0x17cb29];}],[_0x5c5c3a])[_0x495e('0x34')](function(_0x167889){return _[_0x495e('0xd3')](_0x167889,['id',_0x495e('0x3c'),_0x495e('0x6e'),'online']);})[_0x495e('0x35')]();})[_0x495e('0x2a')](function(_0xb18b9f){return amiClient['request'](_0x495e('0x87'),_0x4516f0)[_0x495e('0x2a')](function(_0x4502e){if(_0x4502e['error'])throw new Error(_0x495e('0x177'));var _0x274e38=_0x4502e[_0x495e('0x20')];var _0x3d2d56=jayson[_0x495e('0x14')][_0x495e('0x15')]({'port':0x232c});return _0x3d2d56[_0x495e('0x16')](_0x495e('0x87'),_0x4516f0)[_0x495e('0x2a')](function(_0x4858d6){if(_0x4858d6[_0x495e('0x1d')])throw new Error(_0x495e('0x178'));var _0x51ce6a=_0x4858d6[_0x495e('0x20')];return _[_0x495e('0x61')]({},_0x51ce6a,_0x274e38);});})[_0x495e('0x2a')](function(_0x39ad10){return _['map'](_0xb18b9f,function(_0x36cc19){var _0x37bbba=_[_0x495e('0x37')](_0x39ad10[_0x495e('0x4f')],['id',_0x36cc19['id']]);if(!_0x37bbba||!_0x36cc19[_0x495e('0x102')]){_0x36cc19[_0x495e('0x27')]=_0x495e('0x179');}else if(_0x37bbba[_0x495e('0xa1')]){_0x36cc19['status']='pause';}else{_0x36cc19[_0x495e('0x27')]=_[_0x495e('0x36')](['idle',_0x495e('0x17a'),_0x495e('0x17b'),_0x495e('0x17c'),null,undefined],_0x37bbba['voiceStatus'])?_0x495e('0x102'):_0x495e('0x17d');}return _0x36cc19;});});});})['then'](function(_0x20c352){if(!_0x4516f0[_0x495e('0x50')][_0x495e('0xd5')](_0x495e('0xd6'))){_0x3c0c49[_0x495e('0x25')]=qs['limit'](_0x4516f0['query']['limit']||0xa);_0x3c0c49[_0x495e('0x23')]=qs[_0x495e('0x23')](_0x4516f0[_0x495e('0x50')][_0x495e('0x23')]);}_0x12b515[_0x495e('0x26')]=_0x20c352[_0x495e('0x52')];_0x12b515[_0x495e('0x4f')]=_0x3c0c49[_0x495e('0x25')]?_0x20c352['slice'](_0x3c0c49[_0x495e('0x23')],_0x3c0c49[_0x495e('0x23')]+_0x3c0c49[_0x495e('0x25')]):_0x20c352;return _0x12b515;})[_0x495e('0x2a')](respondWithFilteredResult(_0xa2c7df,_0x3c0c49))[_0x495e('0x21')](handleError(_0xa2c7df,null));};function get_open_tabs(_0x156056,_0x2d1dd1){var _0x592967=_0x156056[_0x495e('0x17e')](0x0)[_0x495e('0x17f')]()+_0x156056[_0x495e('0x180')](0x1);var _0x31edd3={'type':db['Sequelize'][_0x495e('0x181')][_0x495e('0x71')],'raw':!![]};return new Promise(function(_0x4f0bbc,_0x3a7732){var _0x31099a=squel[_0x495e('0x182')]()[_0x495e('0x183')](_0x495e('0x184')+_0x592967+'InteractionId','id')[_0x495e('0x183')]('ui.createdAt')[_0x495e('0x72')](_0x495e('0x185')+_0x156056+_0x495e('0x186'),'ui')[_0x495e('0xd2')](_0x495e('0x187'),_0x2d1dd1['id']);return db[_0x495e('0x70')][_0x495e('0x50')](_0x31099a[_0x495e('0x171')](),_0x31edd3)['then'](function(_0x3c8908){_0x2d1dd1[_0x592967+_0x495e('0x188')]=_0x3c8908;_0x4f0bbc(_0x3c8908);})[_0x495e('0x21')](function(_0x2d9d4c){_0x3a7732(_0x2d9d4c);});});}
\ No newline at end of file
index 513ca01..569dee7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf14=['exports','events','../../mysqldb','setMaxListeners','save','update','remove','emit','hook'];(function(_0x50cb4b,_0x140d9a){var _0x53b81a=function(_0x5a5d1a){while(--_0x5a5d1a){_0x50cb4b['push'](_0x50cb4b['shift']());}};_0x53b81a(++_0x140d9a);}(_0xcf14,0x1cc));var _0x4cf1=function(_0x613d3d,_0x39b102){_0x613d3d=_0x613d3d-0x0;var _0x1e3243=_0xcf14[_0x613d3d];return _0x1e3243;};'use strict';var EventEmitter=require(_0x4cf1('0x0'));var User=require(_0x4cf1('0x1'))['db']['User'];var UserEvents=new EventEmitter();UserEvents[_0x4cf1('0x2')](0x0);var events={'afterCreate':_0x4cf1('0x3'),'afterUpdate':_0x4cf1('0x4'),'afterDestroy':_0x4cf1('0x5')};function emitEvent(_0x619c4e){return function(_0x1c3e6c,_0x27eca4,_0x468756){UserEvents[_0x4cf1('0x6')](_0x619c4e+':'+_0x1c3e6c['id'],_0x1c3e6c);UserEvents[_0x4cf1('0x6')](_0x619c4e,_0x1c3e6c);_0x468756(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];User[_0x4cf1('0x7')](e,emitEvent(event));}}module[_0x4cf1('0x8')]=UserEvents;
\ No newline at end of file
+var _0x4de6=['remove','emit','hasOwnProperty','hook','events','../../mysqldb','setMaxListeners','save','update'];(function(_0x486116,_0x11cf1c){var _0x52df58=function(_0x4f74c9){while(--_0x4f74c9){_0x486116['push'](_0x486116['shift']());}};_0x52df58(++_0x11cf1c);}(_0x4de6,0x100));var _0x64de=function(_0x5d8fef,_0x119a2b){_0x5d8fef=_0x5d8fef-0x0;var _0x4c814c=_0x4de6[_0x5d8fef];return _0x4c814c;};'use strict';var EventEmitter=require(_0x64de('0x0'));var User=require(_0x64de('0x1'))['db']['User'];var UserEvents=new EventEmitter();UserEvents[_0x64de('0x2')](0x0);var events={'afterCreate':_0x64de('0x3'),'afterUpdate':_0x64de('0x4'),'afterDestroy':_0x64de('0x5')};function emitEvent(_0x4c49cc){return function(_0x325e85,_0x3bf77f,_0x243b5b){UserEvents['emit'](_0x4c49cc+':'+_0x325e85['id'],_0x325e85);UserEvents[_0x64de('0x6')](_0x4c49cc,_0x325e85);_0x243b5b(null);};}for(var e in events){if(events[_0x64de('0x7')](e)){var event=events[e];User[_0x64de('0x8')](e,emitEvent(event));}}module['exports']=UserEvents;
\ No newline at end of file
index 99d06d6..58167f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe953=['makeSalt','md5secret',':asterisk:','client','http','request','Agents','Unable\x20to\x20retrieve\x20RPC\x20agent\x20(AMI)','result','Unable\x20to\x20retrieve\x20RPC\x20agent\x20(Routing)','manual','Unable\x20to\x20unpause\x20agent\x20%s:$s','message','voice','UserVoiceQueueRt','findOne','PAUSE','channel','map','update','YYYY-MM-DD\x20HH:mm:ss','all','faxPause','whatsappPause','openchannelPause','Pause','getRealtimeData','../../config/utils','getChannels','forEach','Status','setDataValue','lodash','jayson/promise','google','length','context','from-sip','format','%s%s','prefix','merge','CDR(type)=%s','chanspy','record','push','${UNIQUEID}.%s,a','auth','Authenticate','SIP/%s,%s','name','options','join','wav','WAV','gsm','system','Set','CDR(type)=internal','extensionMonitor','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)','SIP/%s,,tTxX','Hangup','priority','defaults','VoiceChanSpy','findAll','catch','exports','define','User','users','utf8','userProfileId','undefined','UserProfile','then','privacyEnabled','updatePassword','resolve','changed','find','password','updateMd5Password','internal','concat','userSetting','createUserSetting','error','VoiceExtension','bulkCreate','destroy','encryptPassword','function','randomBytes','salt','from','pbkdf2Sync','sha1','pbkdf2','toString','base64','indexOf','provider','Invalid\x20password'];(function(_0x3211ff,_0x16937f){var _0x11d3bd=function(_0x6d1e58){while(--_0x6d1e58){_0x3211ff['push'](_0x3211ff['shift']());}};_0x11d3bd(++_0x16937f);}(_0xe953,0x1d0));var _0x3e95=function(_0x22dac7,_0x45d32a){_0x22dac7=_0x22dac7-0x0;var _0x3e6cfa=_0xe953[_0x22dac7];return _0x3e6cfa;};'use strict';var BPromise=require('bluebird');var crypto=require('crypto');var util=require('util');var md5=require('md5');var moment=require('moment');var _=require(_0x3e95('0x0'));var jayson=require(_0x3e95('0x1'));var attributes=require('./user.attributes');var authTypes=[_0x3e95('0x2')];var validatePresenceOf=function(_0x5a0541){return _0x5a0541&&_0x5a0541[_0x3e95('0x3')];};var getChanSpyApplications=function(_0x4eb4a5,_0x30637c,_0x3faa2b){var _0x45f703={'context':_0x4eb4a5[_0x3e95('0x4')]||_0x3e95('0x5'),'type':'system','isApp':![],'UserId':_0x4eb4a5['id']};var _0x38c27b=[];for(var _0x21ac04=0x0,_0x1b6ce7=0x1;_0x21ac04<_0x3faa2b['length'];_0x21ac04++,_0x1b6ce7=0x1){var _0xf019c5={'exten':util[_0x3e95('0x6')](_0x3e95('0x7'),_0x3faa2b[_0x21ac04][_0x3e95('0x8')],_0x30637c),'ChanSpyId':_0x3faa2b[_0x21ac04]['id']};_0x38c27b['push'](_[_0x3e95('0x9')]({'app':'Set','appdata':util[_0x3e95('0x6')](_0x3e95('0xa'),_0x3e95('0xb')),'priority':_0x1b6ce7++},_0x45f703,_0xf019c5));if(_0x3faa2b[_0x21ac04][_0x3e95('0xc')]){_0x38c27b[_0x3e95('0xd')](_[_0x3e95('0x9')]({'app':'MixMonitor','appdata':util[_0x3e95('0x6')](_0x3e95('0xe'),_0x3faa2b[_0x21ac04]['recordingFormat']),'priority':_0x1b6ce7++},_0x45f703,_0xf019c5));}if(_0x3faa2b[_0x21ac04][_0x3e95('0xf')]){_0x38c27b[_0x3e95('0xd')](_[_0x3e95('0x9')]({'app':_0x3e95('0x10'),'appdata':_0x3faa2b[_0x21ac04]['password'],'priority':_0x1b6ce7++},_0x45f703,_0xf019c5));}_0x38c27b[_0x3e95('0xd')](_[_0x3e95('0x9')]({'app':'ChanSpy','appdata':util[_0x3e95('0x6')](_0x3e95('0x11'),_0x4eb4a5[_0x3e95('0x12')],_0x3faa2b[_0x21ac04][_0x3e95('0x13')]?_0x3faa2b[_0x21ac04]['options'][_0x3e95('0x14')](''):''),'priority':_0x1b6ce7++},_0x45f703,_0xf019c5));if(_0x3faa2b[_0x21ac04]['record']){_0x38c27b[_0x3e95('0xd')](_[_0x3e95('0x9')]({'app':'StopMixMonitor','priority':_0x1b6ce7++},_0x45f703,_0xf019c5));}}return _0x38c27b;};var getUserApplications=function(_0x439485,_0x3e8b32){var _0x21928f=[_0x3e95('0x15'),_0x3e95('0x16'),_0x3e95('0x17')];var _0x177818={'context':_0x439485[_0x3e95('0x4')]||'from-sip','exten':_0x3e8b32,'type':_0x3e95('0x18'),'isApp':![],'UserId':_0x439485['id']};var _0x5ba9a1=[{'app':_0x3e95('0x19'),'appdata':_0x3e95('0x1a')}];if(_0x439485[_0x3e95('0x1b')]&&_['includes'](_0x21928f,_0x439485[_0x3e95('0x1b')])){_0x5ba9a1[_0x3e95('0xd')]({'app':_0x3e95('0x19'),'appdata':_0x3e95('0x1c')});_0x5ba9a1[_0x3e95('0xd')]({'app':_0x3e95('0x19'),'appdata':util[_0x3e95('0x6')](_0x3e95('0x1d'),_0x439485[_0x3e95('0x1b')])});_0x5ba9a1[_0x3e95('0xd')]({'app':_0x3e95('0x1e'),'appdata':util[_0x3e95('0x6')](_0x3e95('0x1f'),_0x439485[_0x3e95('0x12')])});}else{_0x5ba9a1[_0x3e95('0xd')]({'app':_0x3e95('0x1e'),'appdata':util[_0x3e95('0x6')](_0x3e95('0x20'),_0x439485[_0x3e95('0x12')])});}_0x5ba9a1[_0x3e95('0xd')]({'app':_0x3e95('0x21')});for(var _0x70753d=0x0;_0x70753d<_0x5ba9a1[_0x3e95('0x3')];_0x70753d++){_0x5ba9a1[_0x70753d][_0x3e95('0x22')]=_0x70753d+0x1;_0x5ba9a1[_0x70753d]=_[_0x3e95('0x23')](_0x5ba9a1[_0x70753d],_0x177818);}return _0x5ba9a1;};var getChanSpyPromise=function(_0x51595b,_0x761f8b){return new BPromise(function(_0x38c2f5,_0x16b907){return _0x51595b[_0x3e95('0x24')][_0x3e95('0x25')]()['then'](function(_0x288abd){if(_0x288abd){var _0x3397b3=getChanSpyApplications(_0x761f8b,_0x761f8b['internal'],_0x288abd);if(_0x761f8b['internal']!=_0x761f8b[_0x3e95('0x12')]){_0x3397b3=_0x3397b3['concat'](getChanSpyApplications(_0x761f8b,_0x761f8b[_0x3e95('0x12')],_0x288abd));}return _0x38c2f5(_0x3397b3);}return _0x38c2f5([]);})[_0x3e95('0x26')](function(_0x4ee356){_0x16b907(_0x4ee356);});});};module[_0x3e95('0x27')]=function(_0x4849de){var _0x1d3970=_0x4849de['models'];return _0x4849de[_0x3e95('0x28')](_0x3e95('0x29'),attributes,{'tableName':_0x3e95('0x2a'),'charset':_0x3e95('0x2b'),'collate':'utf8_bin','hooks':{'beforeCreate':function(_0x39692e,_0x1e8758,_0x4de257){var _0x255ac4=typeof _0x39692e[_0x3e95('0x2c')]===_0x3e95('0x2d')?BPromise['resolve'](null):_0x1d3970[_0x3e95('0x2e')]['find']({'where':{'id':_0x39692e['userProfileId']}});_0x255ac4[_0x3e95('0x2f')](function(_0x50b257){if(_0x50b257){_0x39692e[_0x3e95('0x30')]=_0x50b257['privacyEnabled'];}})['then'](function(){_0x39692e['updateMd5Password']();_0x39692e[_0x3e95('0x31')](_0x4de257);})[_0x3e95('0x26')](function(_0x11b957){_0x4de257(_0x11b957);});},'beforeUpdate':function(_0x126a8e,_0x1c0569,_0x28f2f0){Promise[_0x3e95('0x32')]()[_0x3e95('0x2f')](function(){if(_0x126a8e[_0x3e95('0x33')](_0x3e95('0x2c'))===![])return;return _0x1d3970[_0x3e95('0x2e')][_0x3e95('0x34')]({'where':{'id':_0x126a8e[_0x3e95('0x2c')]}})[_0x3e95('0x2f')](function(_0x397ab9){if(_0x397ab9)_0x126a8e[_0x3e95('0x30')]=_0x397ab9['privacyEnabled'];return;});})[_0x3e95('0x2f')](function(){if(_0x126a8e['changed'](_0x3e95('0x35'))){_0x126a8e[_0x3e95('0x36')]();return _0x126a8e['updatePassword'](_0x28f2f0);}_0x28f2f0();})[_0x3e95('0x26')](function(_0x18c0e4){_0x28f2f0(_0x18c0e4);});},'afterCreate':function(_0x4ffd05,_0x13de48,_0x433da7){var _0x3789c2=getUserApplications(_0x4ffd05,_0x4ffd05[_0x3e95('0x37')]);if(_0x4ffd05[_0x3e95('0x37')]!=_0x4ffd05[_0x3e95('0x12')]){_0x3789c2=_0x3789c2[_0x3e95('0x38')](getUserApplications(_0x4ffd05,_0x4ffd05[_0x3e95('0x12')]));}return Promise[_0x3e95('0x32')]()['then'](function(){if(!_0x4ffd05[_0x3e95('0x39')]){return _0x4ffd05[_0x3e95('0x3a')]({'clientSideLoggingLevel':_0x3e95('0x3b'),'clientSideLoggingEnabled':![]});}})[_0x3e95('0x2f')](function(){return _0x1d3970[_0x3e95('0x3c')][_0x3e95('0x3d')](_0x3789c2);})[_0x3e95('0x2f')](function(){if(_0x4ffd05['chanspy']){return getChanSpyPromise(_0x1d3970,_0x4ffd05);}})[_0x3e95('0x2f')](function(_0x288826){if(_0x288826&&_0x288826[_0x3e95('0x3')]){return _0x1d3970[_0x3e95('0x3c')][_0x3e95('0x3d')](_0x288826);}})[_0x3e95('0x2f')](function(){_0x433da7();})[_0x3e95('0x26')](function(_0x44ddfc){_0x433da7(_0x44ddfc);});},'afterUpdate':function(_0x5889e7,_0xea62e5,_0x370b67){return BPromise[_0x3e95('0x32')]()[_0x3e95('0x2f')](function(){if(_0x5889e7[_0x3e95('0x33')]('chanspy')||_0x5889e7['changed']('context')){return _0x1d3970[_0x3e95('0x3c')]['destroy']({'where':{'UserId':_0x5889e7['id'],'type':'system','ChanSpyId':{'$ne':null}}})[_0x3e95('0x2f')](function(){if(_0x5889e7[_0x3e95('0xb')]){return getChanSpyPromise(_0x1d3970,_0x5889e7)[_0x3e95('0x2f')](function(_0x49fda1){if(_0x49fda1&&_0x49fda1[_0x3e95('0x3')]){return _0x1d3970['VoiceExtension'][_0x3e95('0x3d')](_0x49fda1);}});}});}})[_0x3e95('0x2f')](function(){if(_0x5889e7[_0x3e95('0x33')](_0x3e95('0x1b'))||_0x5889e7[_0x3e95('0x33')]('context')){return _0x1d3970[_0x3e95('0x3c')][_0x3e95('0x3e')]({'where':{'UserId':_0x5889e7['id'],'type':_0x3e95('0x18'),'ChanSpyId':null}})[_0x3e95('0x2f')](function(){var _0x3fd4d3=getUserApplications(_0x5889e7,_0x5889e7['internal']);if(_0x5889e7['internal']!=_0x5889e7[_0x3e95('0x12')]){_0x3fd4d3=_0x3fd4d3[_0x3e95('0x38')](getUserApplications(_0x5889e7,_0x5889e7['name']));}return _0x1d3970[_0x3e95('0x3c')][_0x3e95('0x3d')](_0x3fd4d3);});}})[_0x3e95('0x2f')](function(){_0x370b67();})['catch'](function(_0x1e27f9){_0x370b67(_0x1e27f9);});},'afterDestroy':function(_0x1323fd){return _0x1d3970['VoiceExtension'][_0x3e95('0x3e')]({'where':{'UserId':_0x1323fd['id'],'type':_0x3e95('0x18')}});}},'instanceMethods':{'authenticate':function(_0x1e5627,_0x173a4e){if(!_0x173a4e){return this[_0x3e95('0x35')]===this['encryptPassword'](_0x1e5627);}var _0x1afea8=this;this[_0x3e95('0x3f')](_0x1e5627,function(_0x423573,_0x6e3c79){if(_0x423573){_0x173a4e(_0x423573);}if(_0x1afea8['password']===_0x6e3c79){_0x173a4e(null,!![]);}else{_0x173a4e(null,![]);}});},'makeSalt':function(_0x27c72e,_0x4e4d8b){var _0x4ad471=0x10;if(typeof arguments[0x0]===_0x3e95('0x40')){_0x4e4d8b=arguments[0x0];_0x27c72e=_0x4ad471;}else if(typeof arguments[0x1]===_0x3e95('0x40')){_0x4e4d8b=arguments[0x1];}else{throw new Error('Missing\x20Callback');}if(!_0x27c72e){_0x27c72e=_0x4ad471;}return crypto[_0x3e95('0x41')](_0x27c72e,function(_0x4460ba,_0x130802){if(_0x4460ba){_0x4e4d8b(_0x4460ba);}return _0x4e4d8b(null,_0x130802['toString']('base64'));});},'encryptPassword':function(_0x14e3b8,_0xb2db69){if(!_0x14e3b8||!this[_0x3e95('0x42')]){return _0xb2db69?_0xb2db69(null):null;}var _0x5bd229=0x2710;var _0x5c9e38=0x40;var _0x21d5f8=Buffer[_0x3e95('0x43')](this[_0x3e95('0x42')],'base64');if(!_0xb2db69){return crypto[_0x3e95('0x44')](_0x14e3b8,_0x21d5f8,_0x5bd229,_0x5c9e38,_0x3e95('0x45'))['toString']('base64');}return crypto[_0x3e95('0x46')](_0x14e3b8,_0x21d5f8,_0x5bd229,_0x5c9e38,'sha1',function(_0x26c537,_0x30440b){if(_0x26c537){_0xb2db69(_0x26c537);}return _0xb2db69(null,_0x30440b[_0x3e95('0x47')](_0x3e95('0x48')));});},'updatePassword':function(_0x295c4d){if(!this['password']){return _0x295c4d(null);}if(!validatePresenceOf(this['password'])&&authTypes[_0x3e95('0x49')](this[_0x3e95('0x4a')])===-0x1){_0x295c4d(new Error(_0x3e95('0x4b')));}var _0x44fca1=this;this[_0x3e95('0x4c')](function(_0x529769,_0x54ccce){if(_0x529769){return _0x295c4d(_0x529769);}_0x44fca1[_0x3e95('0x42')]=_0x54ccce;_0x44fca1[_0x3e95('0x3f')](_0x44fca1[_0x3e95('0x35')],function(_0x9093b8,_0x5459b5){if(_0x9093b8){_0x295c4d(_0x9093b8);}_0x44fca1[_0x3e95('0x35')]=_0x5459b5;_0x295c4d(null);});});},'updateMd5Password':function(){this[_0x3e95('0x4d')]=md5(this[_0x3e95('0x12')]+_0x3e95('0x4e')+this['password']);return this[_0x3e95('0x4d')];},'getRealtimeData':function(){var _0x1f0e9c={'id':this['id']};var _0xbbd1c8=jayson[_0x3e95('0x4f')][_0x3e95('0x50')]({'port':0x232a});var _0x350eb0=jayson[_0x3e95('0x4f')][_0x3e95('0x50')]({'port':0x232c});var _0x2ee3a2={};var _0x3751b7={};return _0xbbd1c8[_0x3e95('0x51')](_0x3e95('0x52'),_0x1f0e9c)[_0x3e95('0x2f')](function(_0x311861){if(_0x311861[_0x3e95('0x3b')]){throw new Error(_0x3e95('0x53'));}_0x2ee3a2=_0x311861[_0x3e95('0x54')];return _0x350eb0[_0x3e95('0x51')](_0x3e95('0x52'),_0x1f0e9c);})[_0x3e95('0x2f')](function(_0x50a4dc){if(_0x50a4dc[_0x3e95('0x3b')]){throw new Error(_0x3e95('0x55'));}_0x3751b7=_0x50a4dc[_0x3e95('0x54')];var _0x4ff0b0=_['merge']({},_0x2ee3a2,_0x3751b7);return _0x4ff0b0;})['catch'](function(_0x5cb170){throw _0x5cb170;});},'unpause':function(_0x4dad78,_0x38cdad=_0x3e95('0x56')){var _0x26fa94=this;var _0x3b61df={};return Promise[_0x3e95('0x32')]()['then'](function(){if(!_0x4dad78||_0x4dad78==='voice'&&_0x38cdad==='manual'){var _0x820cb3=jayson['client'][_0x3e95('0x50')]({'port':0x232a});return _0x820cb3[_0x3e95('0x51')]('QueuePause',{'id':_0x26fa94['id'],'name':_0x26fa94[_0x3e95('0x12')],'pause':![]})[_0x3e95('0x2f')](function(_0x5c5286){if(_0x5c5286[_0x3e95('0x3b')]){throw new Error(util['format'](_0x3e95('0x57'),_0x26fa94['id'],_0x26fa94[_0x3e95('0x12')]));}return _0x5c5286[_0x3e95('0x54')][_0x3e95('0x58')];});}})[_0x3e95('0x2f')](function(){if(!_0x4dad78||_0x4dad78===_0x3e95('0x59')){return _0x1d3970[_0x3e95('0x5a')]['update']({'paused':0x0},{'where':{'UserId':_0x26fa94['id']},'individualHooks':!![]});}})['then'](function(){var _0x391d18=!_0x4dad78?_0x3e95('0x25'):_0x3e95('0x5b');var _0x754bc0={'membername':_0x26fa94[_0x3e95('0x12')],'type':_0x3e95('0x5c'),'exitAt':null};if(_0x4dad78){_0x754bc0[_0x3e95('0x5d')]=_0x4dad78;}return _0x1d3970['MemberReport'][_0x391d18]({'where':_0x754bc0});})[_0x3e95('0x2f')](function(_0x49106a){if(_0x49106a){var _0x111305=Array['isArray'](_0x49106a)?_0x49106a:[_0x49106a];var _0x3dd65b=_0x111305[_0x3e95('0x5e')](function(_0x2f21d1){return _0x2f21d1[_0x3e95('0x5f')]({'exitAt':moment()[_0x3e95('0x6')](_0x3e95('0x60')),'data2':_0x38cdad});});return Promise[_0x3e95('0x61')](_0x3dd65b);}})[_0x3e95('0x2f')](function(){if(!_0x4dad78){_0x3b61df['voicePause']=![];_0x3b61df['mailPause']=![];_0x3b61df['chatPause']=![];_0x3b61df[_0x3e95('0x62')]=![];_0x3b61df['smsPause']=![];_0x3b61df[_0x3e95('0x63')]=![];_0x3b61df[_0x3e95('0x64')]=![];}else{_0x3b61df[_0x4dad78+_0x3e95('0x65')]=![];}return _0x26fa94[_0x3e95('0x66')]();})[_0x3e95('0x2f')](function(_0x12deb7){var _0x2a453f=require(_0x3e95('0x67'));var _0x417c1a=_0x2a453f[_0x3e95('0x68')]();_0x417c1a[_0x3e95('0x69')](function(_0xec4aa1){var _0x4e99c0=_0xec4aa1+_0x3e95('0x6a');_0x26fa94[_0x3e95('0x6b')]([_0x4e99c0],_0x12deb7[_0x4e99c0]);});return _0x26fa94[_0x3e95('0x5f')](_0x3b61df);})['catch'](function(_0xe14b57){throw _0xe14b57;});}}});};
\ No newline at end of file
+var _0x33c5=['channel','MemberReport','map','YYYY-MM-DD\x20HH:mm:ss','all','voicePause','mailPause','faxPause','whatsappPause','Pause','../../config/utils','forEach','Status','setDataValue','crypto','util','moment','lodash','jayson/promise','./user.attributes','google','length','context','from-sip','system','format','%s%s','prefix','merge','Set','CDR(type)=%s','chanspy','record','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','auth','push','password','ChanSpy','SIP/%s,%s','name','options','join','StopMixMonitor','wav','WAV','gsm','extensionMonitor','includes','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)','SIP/%s,,tTxX','Hangup','priority','defaults','VoiceChanSpy','findAll','then','internal','concat','catch','exports','models','define','User','users','utf8','utf8_bin','userProfileId','undefined','resolve','find','privacyEnabled','changed','UserProfile','updateMd5Password','updatePassword','userSetting','error','VoiceExtension','bulkCreate','destroy','encryptPassword','function','Missing\x20Callback','toString','base64','salt','sha1','indexOf','provider',':asterisk:','md5secret','http','client','request','Agents','Unable\x20to\x20retrieve\x20RPC\x20agent\x20(AMI)','result','Unable\x20to\x20retrieve\x20RPC\x20agent\x20(Routing)','manual','voice','QueuePause','UserVoiceQueueRt','update'];(function(_0x1ec4b4,_0x2d02d5){var _0x14c6b6=function(_0x595f28){while(--_0x595f28){_0x1ec4b4['push'](_0x1ec4b4['shift']());}};_0x14c6b6(++_0x2d02d5);}(_0x33c5,0xe6));var _0x533c=function(_0x4c9d00,_0x5092d5){_0x4c9d00=_0x4c9d00-0x0;var _0x4a73f5=_0x33c5[_0x4c9d00];return _0x4a73f5;};'use strict';var BPromise=require('bluebird');var crypto=require(_0x533c('0x0'));var util=require(_0x533c('0x1'));var md5=require('md5');var moment=require(_0x533c('0x2'));var _=require(_0x533c('0x3'));var jayson=require(_0x533c('0x4'));var attributes=require(_0x533c('0x5'));var authTypes=[_0x533c('0x6')];var validatePresenceOf=function(_0x49609e){return _0x49609e&&_0x49609e[_0x533c('0x7')];};var getChanSpyApplications=function(_0x364b16,_0x31d912,_0x151732){var _0x34ca89={'context':_0x364b16[_0x533c('0x8')]||_0x533c('0x9'),'type':_0x533c('0xa'),'isApp':![],'UserId':_0x364b16['id']};var _0x2c297c=[];for(var _0x1b929b=0x0,_0x1782eb=0x1;_0x1b929b<_0x151732[_0x533c('0x7')];_0x1b929b++,_0x1782eb=0x1){var _0x2c0214={'exten':util[_0x533c('0xb')](_0x533c('0xc'),_0x151732[_0x1b929b][_0x533c('0xd')],_0x31d912),'ChanSpyId':_0x151732[_0x1b929b]['id']};_0x2c297c['push'](_[_0x533c('0xe')]({'app':_0x533c('0xf'),'appdata':util[_0x533c('0xb')](_0x533c('0x10'),_0x533c('0x11')),'priority':_0x1782eb++},_0x34ca89,_0x2c0214));if(_0x151732[_0x1b929b][_0x533c('0x12')]){_0x2c297c['push'](_[_0x533c('0xe')]({'app':_0x533c('0x13'),'appdata':util[_0x533c('0xb')](_0x533c('0x14'),_0x151732[_0x1b929b][_0x533c('0x15')]),'priority':_0x1782eb++},_0x34ca89,_0x2c0214));}if(_0x151732[_0x1b929b][_0x533c('0x16')]){_0x2c297c[_0x533c('0x17')](_[_0x533c('0xe')]({'app':'Authenticate','appdata':_0x151732[_0x1b929b][_0x533c('0x18')],'priority':_0x1782eb++},_0x34ca89,_0x2c0214));}_0x2c297c[_0x533c('0x17')](_[_0x533c('0xe')]({'app':_0x533c('0x19'),'appdata':util['format'](_0x533c('0x1a'),_0x364b16[_0x533c('0x1b')],_0x151732[_0x1b929b][_0x533c('0x1c')]?_0x151732[_0x1b929b][_0x533c('0x1c')][_0x533c('0x1d')](''):''),'priority':_0x1782eb++},_0x34ca89,_0x2c0214));if(_0x151732[_0x1b929b][_0x533c('0x12')]){_0x2c297c[_0x533c('0x17')](_[_0x533c('0xe')]({'app':_0x533c('0x1e'),'priority':_0x1782eb++},_0x34ca89,_0x2c0214));}}return _0x2c297c;};var getUserApplications=function(_0x12e126,_0x287b9e){var _0x2c41e9=[_0x533c('0x1f'),_0x533c('0x20'),_0x533c('0x21')];var _0x3de9fa={'context':_0x12e126[_0x533c('0x8')]||_0x533c('0x9'),'exten':_0x287b9e,'type':'system','isApp':![],'UserId':_0x12e126['id']};var _0xce8d9=[{'app':'Set','appdata':'CDR(type)=internal'}];if(_0x12e126[_0x533c('0x22')]&&_[_0x533c('0x23')](_0x2c41e9,_0x12e126['extensionMonitor'])){_0xce8d9[_0x533c('0x17')]({'app':_0x533c('0xf'),'appdata':_0x533c('0x24')});_0xce8d9[_0x533c('0x17')]({'app':'Set','appdata':util[_0x533c('0xb')](_0x533c('0x25'),_0x12e126[_0x533c('0x22')])});_0xce8d9[_0x533c('0x17')]({'app':_0x533c('0x26'),'appdata':util[_0x533c('0xb')](_0x533c('0x27'),_0x12e126[_0x533c('0x1b')])});}else{_0xce8d9[_0x533c('0x17')]({'app':_0x533c('0x26'),'appdata':util['format'](_0x533c('0x28'),_0x12e126[_0x533c('0x1b')])});}_0xce8d9['push']({'app':_0x533c('0x29')});for(var _0x4f9f4a=0x0;_0x4f9f4a<_0xce8d9[_0x533c('0x7')];_0x4f9f4a++){_0xce8d9[_0x4f9f4a][_0x533c('0x2a')]=_0x4f9f4a+0x1;_0xce8d9[_0x4f9f4a]=_[_0x533c('0x2b')](_0xce8d9[_0x4f9f4a],_0x3de9fa);}return _0xce8d9;};var getChanSpyPromise=function(_0x8dd7f1,_0x425f60){return new BPromise(function(_0x146a8e,_0x212d1b){return _0x8dd7f1[_0x533c('0x2c')][_0x533c('0x2d')]()[_0x533c('0x2e')](function(_0x441680){if(_0x441680){var _0x73c0=getChanSpyApplications(_0x425f60,_0x425f60['internal'],_0x441680);if(_0x425f60[_0x533c('0x2f')]!=_0x425f60['name']){_0x73c0=_0x73c0[_0x533c('0x30')](getChanSpyApplications(_0x425f60,_0x425f60[_0x533c('0x1b')],_0x441680));}return _0x146a8e(_0x73c0);}return _0x146a8e([]);})[_0x533c('0x31')](function(_0xa42b78){_0x212d1b(_0xa42b78);});});};module[_0x533c('0x32')]=function(_0x397ad3){var _0x41aba0=_0x397ad3[_0x533c('0x33')];return _0x397ad3[_0x533c('0x34')](_0x533c('0x35'),attributes,{'tableName':_0x533c('0x36'),'charset':_0x533c('0x37'),'collate':_0x533c('0x38'),'hooks':{'beforeCreate':function(_0x14dd9d,_0x3803d0,_0x5ac6b4){var _0x2b801e=typeof _0x14dd9d[_0x533c('0x39')]===_0x533c('0x3a')?BPromise[_0x533c('0x3b')](null):_0x41aba0['UserProfile'][_0x533c('0x3c')]({'where':{'id':_0x14dd9d[_0x533c('0x39')]}});_0x2b801e[_0x533c('0x2e')](function(_0x40f077){if(_0x40f077){_0x14dd9d[_0x533c('0x3d')]=_0x40f077['privacyEnabled'];}})['then'](function(){_0x14dd9d['updateMd5Password']();_0x14dd9d['updatePassword'](_0x5ac6b4);})['catch'](function(_0xf21fa4){_0x5ac6b4(_0xf21fa4);});},'beforeUpdate':function(_0x4b6c22,_0x42994d,_0x55726a){Promise[_0x533c('0x3b')]()[_0x533c('0x2e')](function(){if(_0x4b6c22[_0x533c('0x3e')]('userProfileId')===![])return;return _0x41aba0[_0x533c('0x3f')][_0x533c('0x3c')]({'where':{'id':_0x4b6c22[_0x533c('0x39')]}})['then'](function(_0x160d4b){if(_0x160d4b)_0x4b6c22[_0x533c('0x3d')]=_0x160d4b[_0x533c('0x3d')];return;});})['then'](function(){if(_0x4b6c22[_0x533c('0x3e')](_0x533c('0x18'))){_0x4b6c22[_0x533c('0x40')]();return _0x4b6c22[_0x533c('0x41')](_0x55726a);}_0x55726a();})[_0x533c('0x31')](function(_0x4154f9){_0x55726a(_0x4154f9);});},'afterCreate':function(_0x6523bc,_0x2dbd81,_0x40f830){var _0x2c03fa=getUserApplications(_0x6523bc,_0x6523bc[_0x533c('0x2f')]);if(_0x6523bc['internal']!=_0x6523bc[_0x533c('0x1b')]){_0x2c03fa=_0x2c03fa[_0x533c('0x30')](getUserApplications(_0x6523bc,_0x6523bc[_0x533c('0x1b')]));}return Promise[_0x533c('0x3b')]()[_0x533c('0x2e')](function(){if(!_0x6523bc[_0x533c('0x42')]){return _0x6523bc['createUserSetting']({'clientSideLoggingLevel':_0x533c('0x43'),'clientSideLoggingEnabled':![]});}})[_0x533c('0x2e')](function(){return _0x41aba0[_0x533c('0x44')]['bulkCreate'](_0x2c03fa);})[_0x533c('0x2e')](function(){if(_0x6523bc[_0x533c('0x11')]){return getChanSpyPromise(_0x41aba0,_0x6523bc);}})[_0x533c('0x2e')](function(_0x1abd47){if(_0x1abd47&&_0x1abd47['length']){return _0x41aba0[_0x533c('0x44')]['bulkCreate'](_0x1abd47);}})[_0x533c('0x2e')](function(){_0x40f830();})[_0x533c('0x31')](function(_0x55a372){_0x40f830(_0x55a372);});},'afterUpdate':function(_0x3f4015,_0x3f1e47,_0x115d79){return BPromise['resolve']()['then'](function(){if(_0x3f4015['changed']('chanspy')||_0x3f4015[_0x533c('0x3e')]('context')){return _0x41aba0[_0x533c('0x44')]['destroy']({'where':{'UserId':_0x3f4015['id'],'type':_0x533c('0xa'),'ChanSpyId':{'$ne':null}}})['then'](function(){if(_0x3f4015[_0x533c('0x11')]){return getChanSpyPromise(_0x41aba0,_0x3f4015)[_0x533c('0x2e')](function(_0x4c17b1){if(_0x4c17b1&&_0x4c17b1[_0x533c('0x7')]){return _0x41aba0[_0x533c('0x44')][_0x533c('0x45')](_0x4c17b1);}});}});}})[_0x533c('0x2e')](function(){if(_0x3f4015[_0x533c('0x3e')]('extensionMonitor')||_0x3f4015[_0x533c('0x3e')](_0x533c('0x8'))){return _0x41aba0[_0x533c('0x44')][_0x533c('0x46')]({'where':{'UserId':_0x3f4015['id'],'type':'system','ChanSpyId':null}})[_0x533c('0x2e')](function(){var _0x5080a6=getUserApplications(_0x3f4015,_0x3f4015['internal']);if(_0x3f4015['internal']!=_0x3f4015[_0x533c('0x1b')]){_0x5080a6=_0x5080a6['concat'](getUserApplications(_0x3f4015,_0x3f4015[_0x533c('0x1b')]));}return _0x41aba0[_0x533c('0x44')][_0x533c('0x45')](_0x5080a6);});}})[_0x533c('0x2e')](function(){_0x115d79();})[_0x533c('0x31')](function(_0x2d690f){_0x115d79(_0x2d690f);});},'afterDestroy':function(_0xa34f64){return _0x41aba0[_0x533c('0x44')]['destroy']({'where':{'UserId':_0xa34f64['id'],'type':_0x533c('0xa')}});}},'instanceMethods':{'authenticate':function(_0x6b16e1,_0xaaf682){if(!_0xaaf682){return this['password']===this[_0x533c('0x47')](_0x6b16e1);}var _0x30f457=this;this['encryptPassword'](_0x6b16e1,function(_0x1d081c,_0x56610e){if(_0x1d081c){_0xaaf682(_0x1d081c);}if(_0x30f457[_0x533c('0x18')]===_0x56610e){_0xaaf682(null,!![]);}else{_0xaaf682(null,![]);}});},'makeSalt':function(_0x2d1f93,_0x3837d6){var _0x23b2ef=0x10;if(typeof arguments[0x0]===_0x533c('0x48')){_0x3837d6=arguments[0x0];_0x2d1f93=_0x23b2ef;}else if(typeof arguments[0x1]===_0x533c('0x48')){_0x3837d6=arguments[0x1];}else{throw new Error(_0x533c('0x49'));}if(!_0x2d1f93){_0x2d1f93=_0x23b2ef;}return crypto['randomBytes'](_0x2d1f93,function(_0x16ff01,_0x24c2f4){if(_0x16ff01){_0x3837d6(_0x16ff01);}return _0x3837d6(null,_0x24c2f4[_0x533c('0x4a')](_0x533c('0x4b')));});},'encryptPassword':function(_0x24ca50,_0x1558ef){if(!_0x24ca50||!this[_0x533c('0x4c')]){return _0x1558ef?_0x1558ef(null):null;}var _0x50d5a2=0x2710;var _0x58d607=0x40;var _0x57efa5=Buffer['from'](this[_0x533c('0x4c')],_0x533c('0x4b'));if(!_0x1558ef){return crypto['pbkdf2Sync'](_0x24ca50,_0x57efa5,_0x50d5a2,_0x58d607,_0x533c('0x4d'))[_0x533c('0x4a')](_0x533c('0x4b'));}return crypto['pbkdf2'](_0x24ca50,_0x57efa5,_0x50d5a2,_0x58d607,_0x533c('0x4d'),function(_0x564a31,_0x50cfbc){if(_0x564a31){_0x1558ef(_0x564a31);}return _0x1558ef(null,_0x50cfbc[_0x533c('0x4a')](_0x533c('0x4b')));});},'updatePassword':function(_0x37b901){if(!this[_0x533c('0x18')]){return _0x37b901(null);}if(!validatePresenceOf(this[_0x533c('0x18')])&&authTypes[_0x533c('0x4e')](this[_0x533c('0x4f')])===-0x1){_0x37b901(new Error('Invalid\x20password'));}var _0x1ec3d0=this;this['makeSalt'](function(_0x5b3fe6,_0x26645d){if(_0x5b3fe6){return _0x37b901(_0x5b3fe6);}_0x1ec3d0[_0x533c('0x4c')]=_0x26645d;_0x1ec3d0[_0x533c('0x47')](_0x1ec3d0[_0x533c('0x18')],function(_0x178ef7,_0x4118fe){if(_0x178ef7){_0x37b901(_0x178ef7);}_0x1ec3d0[_0x533c('0x18')]=_0x4118fe;_0x37b901(null);});});},'updateMd5Password':function(){this['md5secret']=md5(this[_0x533c('0x1b')]+_0x533c('0x50')+this[_0x533c('0x18')]);return this[_0x533c('0x51')];},'getRealtimeData':function(){var _0x37ea57={'id':this['id']};var _0x25182f=jayson['client'][_0x533c('0x52')]({'port':0x232a});var _0x554a9f=jayson[_0x533c('0x53')][_0x533c('0x52')]({'port':0x232c});var _0x15f70={};var _0x9b28b8={};return _0x25182f[_0x533c('0x54')](_0x533c('0x55'),_0x37ea57)['then'](function(_0x591985){if(_0x591985[_0x533c('0x43')]){throw new Error(_0x533c('0x56'));}_0x15f70=_0x591985[_0x533c('0x57')];return _0x554a9f[_0x533c('0x54')]('Agents',_0x37ea57);})[_0x533c('0x2e')](function(_0x301cba){if(_0x301cba[_0x533c('0x43')]){throw new Error(_0x533c('0x58'));}_0x9b28b8=_0x301cba[_0x533c('0x57')];var _0x2f2863=_[_0x533c('0xe')]({},_0x15f70,_0x9b28b8);return _0x2f2863;})[_0x533c('0x31')](function(_0x10689d){throw _0x10689d;});},'unpause':function(_0x3aba19,_0x404a93=_0x533c('0x59')){var _0x13a7f2=this;var _0xea6ea2={};return Promise[_0x533c('0x3b')]()[_0x533c('0x2e')](function(){if(!_0x3aba19||_0x3aba19===_0x533c('0x5a')&&_0x404a93==='manual'){var _0x31bba1=jayson['client']['http']({'port':0x232a});return _0x31bba1[_0x533c('0x54')](_0x533c('0x5b'),{'id':_0x13a7f2['id'],'name':_0x13a7f2[_0x533c('0x1b')],'pause':![]})[_0x533c('0x2e')](function(_0x417158){if(_0x417158[_0x533c('0x43')]){throw new Error(util[_0x533c('0xb')]('Unable\x20to\x20unpause\x20agent\x20%s:$s',_0x13a7f2['id'],_0x13a7f2[_0x533c('0x1b')]));}return _0x417158[_0x533c('0x57')]['message'];});}})[_0x533c('0x2e')](function(){if(!_0x3aba19||_0x3aba19===_0x533c('0x5a')){return _0x41aba0[_0x533c('0x5c')][_0x533c('0x5d')]({'paused':0x0},{'where':{'UserId':_0x13a7f2['id']},'individualHooks':!![]});}})['then'](function(){var _0x1d4c79=!_0x3aba19?_0x533c('0x2d'):'findOne';var _0x1589b0={'membername':_0x13a7f2[_0x533c('0x1b')],'type':'PAUSE','exitAt':null};if(_0x3aba19){_0x1589b0[_0x533c('0x5e')]=_0x3aba19;}return _0x41aba0[_0x533c('0x5f')][_0x1d4c79]({'where':_0x1589b0});})['then'](function(_0x444f46){if(_0x444f46){var _0x5183e2=Array['isArray'](_0x444f46)?_0x444f46:[_0x444f46];var _0xf36c93=_0x5183e2[_0x533c('0x60')](function(_0x451def){return _0x451def[_0x533c('0x5d')]({'exitAt':moment()['format'](_0x533c('0x61')),'data2':_0x404a93});});return Promise[_0x533c('0x62')](_0xf36c93);}})[_0x533c('0x2e')](function(){if(!_0x3aba19){_0xea6ea2[_0x533c('0x63')]=![];_0xea6ea2[_0x533c('0x64')]=![];_0xea6ea2['chatPause']=![];_0xea6ea2[_0x533c('0x65')]=![];_0xea6ea2['smsPause']=![];_0xea6ea2[_0x533c('0x66')]=![];_0xea6ea2['openchannelPause']=![];}else{_0xea6ea2[_0x3aba19+_0x533c('0x67')]=![];}return _0x13a7f2['getRealtimeData']();})['then'](function(_0x511f74){var _0x3283bb=require(_0x533c('0x68'));var _0x191a3b=_0x3283bb['getChannels']();_0x191a3b[_0x533c('0x69')](function(_0x24a00c){var _0x3fbb08=_0x24a00c+_0x533c('0x6a');_0x13a7f2[_0x533c('0x6b')]([_0x3fbb08],_0x511f74[_0x3fbb08]);});return _0x13a7f2['update'](_0xea6ea2);})['catch'](function(_0x42c389){throw _0x42c389;});}}});};
\ No newline at end of file
index 08eda36..e2c80c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe882=['lastPauseAt','unpause','system','LogoutUser','forEach','all','LoginUser','User','mobile','phone','loginInPause','agent','../../config/license/util','getLicense','agents','Maximum\x20login\x20has\x20been\x20reached','destroy','getVoiceQueues','upsert','getChannels','LOGIN','callysquare','LOGININPAUSE','concat','util','moment','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','redis','socket.io-emitter','./user.socket','register','GetUser','findAll','options','raw','attributes','limit','include','model','map','then','debug','error','message','ShowUser','find','where','info','stringify','catch','name','role','interface','format','User\x20with\x20id\x20%s\x20not\x20found','params','UserVoiceQueueRt','update','MemberReport','length','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','push','SIP/%s','PAUSE','body','type','internal','uniqueid','bulkCreate','DEFAULT\x20PAUSE','UnpauseUser','resolve','channel','isValidChannel','Channel\x20parameter\x20%s\x20is\x20invalid','findOne','mailPause','chatPause','faxPause','openchannelPause','smsPause','whatsappPause'];(function(_0xcd4d13,_0x44acd7){var _0x411fe8=function(_0x341835){while(--_0x341835){_0xcd4d13['push'](_0xcd4d13['shift']());}};_0x411fe8(++_0x44acd7);}(_0xe882,0x1cb));var _0x2e88=function(_0x542b78,_0x458e70){_0x542b78=_0x542b78-0x0;var _0x5b14f2=_0xe882[_0x542b78];return _0x5b14f2;};'use strict';var _=require('lodash');var util=require(_0x2e88('0x0'));var moment=require(_0x2e88('0x1'));var BPromise=require('bluebird');var Redis=require(_0x2e88('0x2'));var db=require(_0x2e88('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x2e88('0x4'))(_0x2e88('0x5'));var config=require(_0x2e88('0x6'));config['redis']=_['defaults'](config[_0x2e88('0x7')],{'host':'localhost','port':0x18eb});var socket=require(_0x2e88('0x8'))(new Redis(config[_0x2e88('0x7')]));require(_0x2e88('0x9'))[_0x2e88('0xa')](socket);exports[_0x2e88('0xb')]=function(_0x164226){var _0x55c7a3=this;return new Promise(function(_0x406ae7,_0x69fa82){return db['User'][_0x2e88('0xc')]({'raw':_0x164226[_0x2e88('0xd')]?_0x164226[_0x2e88('0xd')][_0x2e88('0xe')]===undefined?!![]:![]:!![],'where':_0x164226[_0x2e88('0xd')]?_0x164226['options']['where']||null:null,'attributes':_0x164226[_0x2e88('0xd')]?_0x164226[_0x2e88('0xd')][_0x2e88('0xf')]||null:null,'limit':_0x164226[_0x2e88('0xd')]?_0x164226[_0x2e88('0xd')][_0x2e88('0x10')]||null:null,'include':_0x164226['options']?_0x164226[_0x2e88('0xd')][_0x2e88('0x11')]?_['map'](_0x164226[_0x2e88('0xd')][_0x2e88('0x11')],function(_0x5af376){return{'model':db[_0x5af376[_0x2e88('0x12')]],'as':_0x5af376['as'],'attributes':_0x5af376[_0x2e88('0xf')],'include':_0x5af376[_0x2e88('0x11')]?_[_0x2e88('0x13')](_0x5af376[_0x2e88('0x11')],function(_0x23996d){return{'model':db[_0x23996d['model']],'as':_0x23996d['as'],'attributes':_0x23996d[_0x2e88('0xf')],'include':_0x23996d[_0x2e88('0x11')]?_[_0x2e88('0x13')](_0x23996d[_0x2e88('0x11')],function(_0xaf4448){return{'model':db[_0xaf4448[_0x2e88('0x12')]],'as':_0xaf4448['as'],'attributes':_0xaf4448[_0x2e88('0xf')]};}):[]};}):[]};}):[]:[]})[_0x2e88('0x14')](function(_0x26233b){logger['info']('GetUser',_0x164226);logger[_0x2e88('0x15')]('GetUser',_0x164226,JSON['stringify'](_0x26233b));_0x406ae7(_0x26233b);})['catch'](function(_0x26b1cb){logger['error'](_0x2e88('0xb'),_0x26b1cb['message'],_0x164226);_0x69fa82(_0x55c7a3[_0x2e88('0x16')](0x1f4,_0x26b1cb[_0x2e88('0x17')]));});});};exports[_0x2e88('0x18')]=function(_0x2c8791){var _0x14cb68=this;return new Promise(function(_0x36a3b1,_0x1f98b8){return db['User'][_0x2e88('0x19')]({'raw':_0x2c8791[_0x2e88('0xd')]?_0x2c8791[_0x2e88('0xd')]['raw']===undefined?!![]:![]:!![],'where':_0x2c8791['options']?_0x2c8791[_0x2e88('0xd')][_0x2e88('0x1a')]||null:null,'attributes':_0x2c8791[_0x2e88('0xd')]?_0x2c8791['options']['attributes']||null:null,'include':_0x2c8791[_0x2e88('0xd')]?_0x2c8791[_0x2e88('0xd')][_0x2e88('0x11')]?_['map'](_0x2c8791[_0x2e88('0xd')][_0x2e88('0x11')],function(_0x3ab2e1){return{'model':db[_0x3ab2e1[_0x2e88('0x12')]],'as':_0x3ab2e1['as'],'attributes':_0x3ab2e1['attributes'],'include':_0x3ab2e1[_0x2e88('0x11')]?_[_0x2e88('0x13')](_0x3ab2e1[_0x2e88('0x11')],function(_0x55b644){return{'model':db[_0x55b644['model']],'as':_0x55b644['as'],'attributes':_0x55b644[_0x2e88('0xf')],'include':_0x55b644[_0x2e88('0x11')]?_[_0x2e88('0x13')](_0x55b644[_0x2e88('0x11')],function(_0x4e0572){return{'model':db[_0x4e0572['model']],'as':_0x4e0572['as'],'attributes':_0x4e0572[_0x2e88('0xf')]};}):[]};}):[]};}):[]:[]})[_0x2e88('0x14')](function(_0x4d1396){logger[_0x2e88('0x1b')](_0x2e88('0x18'),_0x2c8791);logger[_0x2e88('0x15')](_0x2e88('0x18'),_0x2c8791,JSON[_0x2e88('0x1c')](_0x4d1396));_0x36a3b1(_0x4d1396);})[_0x2e88('0x1d')](function(_0x3a690d){logger[_0x2e88('0x16')](_0x2e88('0x18'),_0x3a690d[_0x2e88('0x17')],_0x2c8791);_0x1f98b8(_0x14cb68[_0x2e88('0x16')](0x1f4,_0x3a690d[_0x2e88('0x17')]));});});};exports['PauseUser']=function(_0x33833a){var _0x485e8b;return db['User'][_0x2e88('0x19')]({'where':_0x33833a[_0x2e88('0xd')]['where']||{},'attributes':['id',_0x2e88('0x1e'),_0x2e88('0x1f'),'internal',_0x2e88('0x20')]})[_0x2e88('0x14')](function(_0x53f3a1){if(!_0x53f3a1){throw new Error(util[_0x2e88('0x21')](_0x2e88('0x22'),_0x33833a[_0x2e88('0x23')]['id']));}_0x485e8b=_0x53f3a1;return db[_0x2e88('0x24')][_0x2e88('0x25')]({'paused':0x1},{'where':{'UserId':_0x485e8b['id']},'individualHooks':!![]});})[_0x2e88('0x14')](function(){return db[_0x2e88('0x26')][_0x2e88('0xc')]({'where':{'membername':_0x485e8b[_0x2e88('0x1e')],'type':'PAUSE','exitAt':null}});})[_0x2e88('0x14')](function(_0x6f8ce2){if(_0x6f8ce2&&_0x6f8ce2[_0x2e88('0x27')]){var _0x58dd39=moment()[_0x2e88('0x21')](_0x2e88('0x28'));for(var _0x158d97=0x0,_0x4c6892=_0x6f8ce2['length'];_0x158d97<_0x4c6892;_0x158d97++){_0x6f8ce2[_0x158d97][_0x2e88('0x29')]({'exitAt':_0x58dd39});}}})['then'](function(){var _0x4ffef9=[];var _0x1bc4c2=utils['getChannels']();_0x1bc4c2['forEach'](function(_0x18287b){_0x4ffef9[_0x2e88('0x2a')]({'channel':_0x18287b,'membername':_0x485e8b['name'],'interface':_['isNil'](_0x485e8b[_0x2e88('0x20')])?util[_0x2e88('0x21')](_0x2e88('0x2b'),_0x485e8b[_0x2e88('0x1e')]):_0x485e8b[_0x2e88('0x20')],'type':_0x2e88('0x2c'),'enterAt':moment()['format'](_0x2e88('0x28')),'data1':_0x33833a[_0x2e88('0x2d')][_0x2e88('0x2e')]||'DEFAULT\x20PAUSE','role':_0x485e8b[_0x2e88('0x1f')],'internal':_0x485e8b[_0x2e88('0x2f')],'uniqueid':_0x33833a['body'][_0x2e88('0x30')]||null});});return db[_0x2e88('0x26')][_0x2e88('0x31')](_0x4ffef9,{'individualHooks':!![]});})['then'](function(){return _0x485e8b[_0x2e88('0x25')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x33833a[_0x2e88('0x2d')]['type']||_0x2e88('0x32'),'lastPauseAt':moment()[_0x2e88('0x21')]('YYYY-MM-DD\x20HH:mm:ss')});})[_0x2e88('0x1d')](function(_0x2c7839){throw _0x2c7839;});};exports[_0x2e88('0x33')]=function(_0x17f787){return Promise[_0x2e88('0x34')]()['then'](function(){if(_0x17f787[_0x2e88('0x2d')][_0x2e88('0x35')]&&!utils[_0x2e88('0x36')](_0x17f787['body'][_0x2e88('0x35')])){throw new Error(util[_0x2e88('0x21')](_0x2e88('0x37'),_0x17f787[_0x2e88('0x2d')][_0x2e88('0x35')]));}return db['User'][_0x2e88('0x38')]({'where':_0x17f787[_0x2e88('0xd')]['where']||{},'attributes':['id','name',_0x2e88('0x1f'),_0x2e88('0x2f'),_0x2e88('0x20'),'online','voicePause',_0x2e88('0x39'),_0x2e88('0x3a'),_0x2e88('0x3b'),_0x2e88('0x3c'),_0x2e88('0x3d'),_0x2e88('0x3e'),'pauseType',_0x2e88('0x3f')]});})[_0x2e88('0x14')](function(_0x435264){if(!_0x435264){throw new Error(util[_0x2e88('0x21')](_0x2e88('0x22'),_0x17f787[_0x2e88('0x23')]['id']));}return _0x435264[_0x2e88('0x40')](_0x17f787[_0x2e88('0x2d')]['channel'],_0x2e88('0x41'));})[_0x2e88('0x1d')](function(_0x250433){throw _0x250433;});};exports[_0x2e88('0x42')]=function(_0x12aaf2){var _0x15d392=this;return new Promise(function(_0x3be4a0,_0x605d84){var _0x43358e;return db['User']['findOne']({'where':_0x12aaf2[_0x2e88('0xd')][_0x2e88('0x1a')]||{},'attributes':['id',_0x2e88('0x1e')]})[_0x2e88('0x14')](function(_0x5d1295){if(_0x5d1295){_0x43358e=_0x5d1295;return db[_0x2e88('0x24')]['destroy']({'where':{'membername':_0x43358e[_0x2e88('0x1e')]},'individualHooks':!![]});}})[_0x2e88('0x14')](function(){if(_0x43358e){return db['MemberReport'][_0x2e88('0xc')]({'where':{'membername':_0x43358e[_0x2e88('0x1e')],'exitAt':null}});}})[_0x2e88('0x14')](function(_0x1bd578){if(_0x43358e){if(_0x1bd578&&_0x1bd578[_0x2e88('0x27')]){var _0x36b656=[];_0x1bd578[_0x2e88('0x43')](function(_0x17a7f5){_0x36b656[_0x2e88('0x2a')](_0x17a7f5[_0x2e88('0x25')]({'exitAt':moment()['format'](_0x2e88('0x28'))}));});return BPromise[_0x2e88('0x44')](_0x36b656);}}})[_0x2e88('0x14')](function(){if(_0x43358e){return _0x43358e[_0x2e88('0x25')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0x2e88('0x14')](function(_0x41aa6e){_0x3be4a0(_0x41aa6e);})[_0x2e88('0x1d')](function(_0x5d5802){_0x605d84(_0x15d392[_0x2e88('0x16')](0x1f4,_0x5d5802['message']));});});};exports[_0x2e88('0x45')]=function(_0x361ffb){var _0x707d96=this;return new Promise(function(_0x5cea62,_0xbd5f4d){var _0x380bf5;var _0x48131f;var _0x50b9a3;var _0x4c98f2;return db[_0x2e88('0x46')][_0x2e88('0x38')]({'where':_0x361ffb[_0x2e88('0xd')][_0x2e88('0x1a')]||{},'attributes':['id',_0x2e88('0x1e'),_0x2e88('0x1f'),_0x2e88('0x47'),_0x2e88('0x48'),'internal',_0x2e88('0x49'),'interface']})[_0x2e88('0x14')](function(_0x55cf64){if(_0x55cf64){_0x380bf5=_0x55cf64;_0x4c98f2=_0x361ffb[_0x2e88('0x2d')][_0x2e88('0x20')]?_0x361ffb[_0x2e88('0x2d')][_0x2e88('0x20')]:util[_0x2e88('0x21')](_0x2e88('0x2b'),_0x380bf5['name']);return db[_0x2e88('0x46')]['count']({'where':{'role':_0x2e88('0x4a'),'online':!![],'id':{'$ne':_0x380bf5['id']}}});}})[_0x2e88('0x14')](function(_0x40df75){if(_0x40df75){_0x50b9a3=_0x40df75;return require(_0x2e88('0x4b'))[_0x2e88('0x4c')]();}})[_0x2e88('0x14')](function(_0x3c93b2){if(_0x3c93b2&&_0x3c93b2[_0x2e88('0x4d')]&&_0x50b9a3>=_0x3c93b2[_0x2e88('0x4d')]){throw new Error(_0x2e88('0x4e'));}})['then'](function(){if(_0x380bf5){return db[_0x2e88('0x24')][_0x2e88('0x4f')]({'where':{'membername':_0x380bf5[_0x2e88('0x1e')]},'individualHooks':!![]});}})['then'](function(){if(_0x380bf5){return _0x380bf5[_0x2e88('0x50')]({'raw':!![]});}})['then'](function(_0x226a52){if(_0x380bf5){if(_0x226a52){var _0x5bd507=[];_0x48131f=_0x226a52;if(_0x48131f[_0x2e88('0x27')]){for(var _0x58e215=0x0;_0x58e215<_0x48131f[_0x2e88('0x27')];_0x58e215++){_0x5bd507[_0x2e88('0x2a')](db['UserVoiceQueueRt'][_0x2e88('0x51')]({'membername':_0x380bf5['name'],'UserId':_0x380bf5['id'],'queue_name':_0x48131f[_0x58e215][_0x2e88('0x1e')],'VoiceQueueId':_0x48131f[_0x58e215]['id'],'interface':_0x4c98f2,'paused':_0x380bf5[_0x2e88('0x49')]||![],'penalty':_0x48131f[_0x58e215]['UserVoiceQueue.penalty']||0x0}));}return BPromise['all'](_0x5bd507);}}}})[_0x2e88('0x14')](function(){if(_0x380bf5){return db[_0x2e88('0x26')]['findAll']({'where':{'membername':_0x380bf5[_0x2e88('0x1e')],'exitAt':null}});}})['then'](function(_0x4eda85){if(_0x380bf5){if(_0x4eda85&&_0x4eda85[_0x2e88('0x27')]){var _0x5087b5=[];_0x4eda85['forEach'](function(_0x1fe6b3){_0x5087b5['push'](_0x1fe6b3[_0x2e88('0x25')]({'exitAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise[_0x2e88('0x44')](_0x5087b5);}}})[_0x2e88('0x14')](function(){if(_0x380bf5){var _0x273557=[];var _0xe5e1f0=[];var _0x8425f8=utils[_0x2e88('0x52')]();var _0x40644e={'membername':_0x380bf5[_0x2e88('0x1e')],'interface':_0x4c98f2,'enterAt':moment()[_0x2e88('0x21')](_0x2e88('0x28')),'role':_0x380bf5['role'],'internal':_0x380bf5[_0x2e88('0x2f')]};_0x8425f8[_0x2e88('0x43')](function(_0x714fb1){_0x273557[_0x2e88('0x2a')](_['merge']({'channel':_0x714fb1,'type':_0x2e88('0x53'),'data1':_0x2e88('0x54'),'data2':_0x4c98f2},_0x40644e));if(_0x380bf5['loginInPause']){_0xe5e1f0['push'](_['merge']({'channel':_0x714fb1,'type':_0x2e88('0x2c'),'data1':_0x2e88('0x55')},_0x40644e));}});return db[_0x2e88('0x26')][_0x2e88('0x31')](_0x273557[_0x2e88('0x56')](_0xe5e1f0),{'individualHooks':!![]});}})[_0x2e88('0x14')](function(){if(_0x380bf5){return _0x380bf5[_0x2e88('0x25')]({'online':!![],'lastLoginAt':moment()[_0x2e88('0x21')](_0x2e88('0x28')),'voicePause':_0x380bf5['loginInPause']||![],'mailPause':_0x380bf5[_0x2e88('0x49')]||![],'chatPause':_0x380bf5[_0x2e88('0x49')]||![],'faxPause':_0x380bf5['loginInPause']||![],'smsPause':_0x380bf5[_0x2e88('0x49')]||![],'openchannelPause':_0x380bf5[_0x2e88('0x49')]||![],'pauseType':_0x380bf5['loginInPause']?_0x2e88('0x55'):null,'lastPauseAt':moment()[_0x2e88('0x21')](_0x2e88('0x28')),'interface':_0x4c98f2});}})[_0x2e88('0x14')](function(_0x29c64d){_0x5cea62(_0x29c64d);})['catch'](function(_0x1d2c23){_0xbd5f4d(_0x707d96['error'](0x1f4,_0x1d2c23[_0x2e88('0x17')]));});});};
\ No newline at end of file
+var _0x3219=['LOGIN','callysquare','merge','concat','LOGININPAUSE','lodash','util','ioredis','../../mysqldb','../../config/logger','../../config/environment','redis','socket.io-emitter','register','GetUser','findAll','options','attributes','limit','include','map','model','then','info','stringify','error','ShowUser','User','find','raw','message','PauseUser','name','role','internal','interface','format','params','UserVoiceQueueRt','update','MemberReport','PAUSE','length','YYYY-MM-DD\x20HH:mm:ss','getChannels','forEach','push','isNil','body','type','uniqueid','bulkCreate','UnpauseUser','resolve','channel','isValidChannel','where','online','voicePause','mailPause','chatPause','faxPause','openchannelPause','smsPause','User\x20with\x20id\x20%s\x20not\x20found','system','LogoutUser','findOne','all','catch','phone','loginInPause','SIP/%s','count','agent','../../config/license/util','getLicense','agents','Maximum\x20login\x20has\x20been\x20reached','destroy','getVoiceQueues','upsert','UserVoiceQueue.penalty'];(function(_0x17a7d0,_0x1e5f1e){var _0x273d85=function(_0x44dbb6){while(--_0x44dbb6){_0x17a7d0['push'](_0x17a7d0['shift']());}};_0x273d85(++_0x1e5f1e);}(_0x3219,0xfe));var _0x9321=function(_0x3e531a,_0x28a82a){_0x3e531a=_0x3e531a-0x0;var _0x3c2574=_0x3219[_0x3e531a];return _0x3c2574;};'use strict';var _=require(_0x9321('0x0'));var util=require(_0x9321('0x1'));var moment=require('moment');var BPromise=require('bluebird');var Redis=require(_0x9321('0x2'));var db=require(_0x9321('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x9321('0x4'))('rpc');var config=require(_0x9321('0x5'));config['redis']=_['defaults'](config[_0x9321('0x6')],{'host':'localhost','port':0x18eb});var socket=require(_0x9321('0x7'))(new Redis(config[_0x9321('0x6')]));require('./user.socket')[_0x9321('0x8')](socket);exports[_0x9321('0x9')]=function(_0x24b850){var _0x59083e=this;return new Promise(function(_0x139399,_0x213185){return db['User'][_0x9321('0xa')]({'raw':_0x24b850['options']?_0x24b850['options']['raw']===undefined?!![]:![]:!![],'where':_0x24b850['options']?_0x24b850[_0x9321('0xb')]['where']||null:null,'attributes':_0x24b850[_0x9321('0xb')]?_0x24b850[_0x9321('0xb')][_0x9321('0xc')]||null:null,'limit':_0x24b850[_0x9321('0xb')]?_0x24b850[_0x9321('0xb')][_0x9321('0xd')]||null:null,'include':_0x24b850[_0x9321('0xb')]?_0x24b850[_0x9321('0xb')][_0x9321('0xe')]?_[_0x9321('0xf')](_0x24b850[_0x9321('0xb')][_0x9321('0xe')],function(_0x15ce4f){return{'model':db[_0x15ce4f[_0x9321('0x10')]],'as':_0x15ce4f['as'],'attributes':_0x15ce4f['attributes'],'include':_0x15ce4f['include']?_[_0x9321('0xf')](_0x15ce4f[_0x9321('0xe')],function(_0x1eb816){return{'model':db[_0x1eb816[_0x9321('0x10')]],'as':_0x1eb816['as'],'attributes':_0x1eb816[_0x9321('0xc')],'include':_0x1eb816[_0x9321('0xe')]?_[_0x9321('0xf')](_0x1eb816['include'],function(_0x2d20a3){return{'model':db[_0x2d20a3[_0x9321('0x10')]],'as':_0x2d20a3['as'],'attributes':_0x2d20a3[_0x9321('0xc')]};}):[]};}):[]};}):[]:[]})[_0x9321('0x11')](function(_0x517cce){logger[_0x9321('0x12')]('GetUser',_0x24b850);logger['debug'](_0x9321('0x9'),_0x24b850,JSON[_0x9321('0x13')](_0x517cce));_0x139399(_0x517cce);})['catch'](function(_0x47e55d){logger['error']('GetUser',_0x47e55d['message'],_0x24b850);_0x213185(_0x59083e[_0x9321('0x14')](0x1f4,_0x47e55d['message']));});});};exports[_0x9321('0x15')]=function(_0xe987bf){var _0x18418a=this;return new Promise(function(_0x125b21,_0x70b26a){return db[_0x9321('0x16')][_0x9321('0x17')]({'raw':_0xe987bf[_0x9321('0xb')]?_0xe987bf[_0x9321('0xb')][_0x9321('0x18')]===undefined?!![]:![]:!![],'where':_0xe987bf[_0x9321('0xb')]?_0xe987bf[_0x9321('0xb')]['where']||null:null,'attributes':_0xe987bf['options']?_0xe987bf[_0x9321('0xb')][_0x9321('0xc')]||null:null,'include':_0xe987bf[_0x9321('0xb')]?_0xe987bf['options']['include']?_['map'](_0xe987bf['options']['include'],function(_0x1cd421){return{'model':db[_0x1cd421['model']],'as':_0x1cd421['as'],'attributes':_0x1cd421[_0x9321('0xc')],'include':_0x1cd421['include']?_['map'](_0x1cd421[_0x9321('0xe')],function(_0x3145ba){return{'model':db[_0x3145ba[_0x9321('0x10')]],'as':_0x3145ba['as'],'attributes':_0x3145ba[_0x9321('0xc')],'include':_0x3145ba[_0x9321('0xe')]?_[_0x9321('0xf')](_0x3145ba[_0x9321('0xe')],function(_0x2ba952){return{'model':db[_0x2ba952[_0x9321('0x10')]],'as':_0x2ba952['as'],'attributes':_0x2ba952[_0x9321('0xc')]};}):[]};}):[]};}):[]:[]})[_0x9321('0x11')](function(_0x31b99b){logger[_0x9321('0x12')](_0x9321('0x15'),_0xe987bf);logger['debug'](_0x9321('0x15'),_0xe987bf,JSON[_0x9321('0x13')](_0x31b99b));_0x125b21(_0x31b99b);})['catch'](function(_0x1e26b8){logger[_0x9321('0x14')](_0x9321('0x15'),_0x1e26b8[_0x9321('0x19')],_0xe987bf);_0x70b26a(_0x18418a[_0x9321('0x14')](0x1f4,_0x1e26b8['message']));});});};exports[_0x9321('0x1a')]=function(_0x9efcbc){var _0x50930f;return db[_0x9321('0x16')][_0x9321('0x17')]({'where':_0x9efcbc[_0x9321('0xb')]['where']||{},'attributes':['id',_0x9321('0x1b'),_0x9321('0x1c'),_0x9321('0x1d'),_0x9321('0x1e')]})[_0x9321('0x11')](function(_0x5a7877){if(!_0x5a7877){throw new Error(util[_0x9321('0x1f')]('User\x20with\x20id\x20%s\x20not\x20found',_0x9efcbc[_0x9321('0x20')]['id']));}_0x50930f=_0x5a7877;return db[_0x9321('0x21')][_0x9321('0x22')]({'paused':0x1},{'where':{'UserId':_0x50930f['id']},'individualHooks':!![]});})['then'](function(){return db[_0x9321('0x23')]['findAll']({'where':{'membername':_0x50930f['name'],'type':_0x9321('0x24'),'exitAt':null}});})['then'](function(_0x891dcc){if(_0x891dcc&&_0x891dcc[_0x9321('0x25')]){var _0x3cd537=moment()['format'](_0x9321('0x26'));for(var _0x3fde22=0x0,_0x2ec028=_0x891dcc[_0x9321('0x25')];_0x3fde22<_0x2ec028;_0x3fde22++){_0x891dcc[_0x3fde22]['updateAttributes']({'exitAt':_0x3cd537});}}})[_0x9321('0x11')](function(){var _0x5d7384=[];var _0x2106a1=utils[_0x9321('0x27')]();_0x2106a1[_0x9321('0x28')](function(_0x2728eb){_0x5d7384[_0x9321('0x29')]({'channel':_0x2728eb,'membername':_0x50930f[_0x9321('0x1b')],'interface':_[_0x9321('0x2a')](_0x50930f[_0x9321('0x1e')])?util[_0x9321('0x1f')]('SIP/%s',_0x50930f[_0x9321('0x1b')]):_0x50930f[_0x9321('0x1e')],'type':'PAUSE','enterAt':moment()[_0x9321('0x1f')](_0x9321('0x26')),'data1':_0x9efcbc[_0x9321('0x2b')][_0x9321('0x2c')]||'DEFAULT\x20PAUSE','role':_0x50930f[_0x9321('0x1c')],'internal':_0x50930f[_0x9321('0x1d')],'uniqueid':_0x9efcbc['body'][_0x9321('0x2d')]||null});});return db['MemberReport'][_0x9321('0x2e')](_0x5d7384,{'individualHooks':!![]});})[_0x9321('0x11')](function(){return _0x50930f[_0x9321('0x22')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x9efcbc[_0x9321('0x2b')][_0x9321('0x2c')]||'DEFAULT\x20PAUSE','lastPauseAt':moment()['format'](_0x9321('0x26'))});})['catch'](function(_0x3df6d9){throw _0x3df6d9;});};exports[_0x9321('0x2f')]=function(_0x1122e5){return Promise[_0x9321('0x30')]()[_0x9321('0x11')](function(){if(_0x1122e5['body'][_0x9321('0x31')]&&!utils[_0x9321('0x32')](_0x1122e5[_0x9321('0x2b')]['channel'])){throw new Error(util[_0x9321('0x1f')]('Channel\x20parameter\x20%s\x20is\x20invalid',_0x1122e5[_0x9321('0x2b')]['channel']));}return db[_0x9321('0x16')]['findOne']({'where':_0x1122e5[_0x9321('0xb')][_0x9321('0x33')]||{},'attributes':['id',_0x9321('0x1b'),_0x9321('0x1c'),_0x9321('0x1d'),_0x9321('0x1e'),_0x9321('0x34'),_0x9321('0x35'),_0x9321('0x36'),_0x9321('0x37'),_0x9321('0x38'),_0x9321('0x39'),_0x9321('0x3a'),'whatsappPause','pauseType','lastPauseAt']});})[_0x9321('0x11')](function(_0x361acf){if(!_0x361acf){throw new Error(util[_0x9321('0x1f')](_0x9321('0x3b'),_0x1122e5['params']['id']));}return _0x361acf['unpause'](_0x1122e5[_0x9321('0x2b')]['channel'],_0x9321('0x3c'));})['catch'](function(_0x5ab9a0){throw _0x5ab9a0;});};exports[_0x9321('0x3d')]=function(_0x459629){var _0x15f164=this;return new Promise(function(_0x91bde0,_0x169103){var _0xdea350;return db[_0x9321('0x16')][_0x9321('0x3e')]({'where':_0x459629[_0x9321('0xb')][_0x9321('0x33')]||{},'attributes':['id',_0x9321('0x1b')]})[_0x9321('0x11')](function(_0x434a1a){if(_0x434a1a){_0xdea350=_0x434a1a;return db[_0x9321('0x21')]['destroy']({'where':{'membername':_0xdea350[_0x9321('0x1b')]},'individualHooks':!![]});}})[_0x9321('0x11')](function(){if(_0xdea350){return db[_0x9321('0x23')][_0x9321('0xa')]({'where':{'membername':_0xdea350[_0x9321('0x1b')],'exitAt':null}});}})['then'](function(_0x3b87a6){if(_0xdea350){if(_0x3b87a6&&_0x3b87a6[_0x9321('0x25')]){var _0x1f07a0=[];_0x3b87a6[_0x9321('0x28')](function(_0x50762){_0x1f07a0[_0x9321('0x29')](_0x50762[_0x9321('0x22')]({'exitAt':moment()['format'](_0x9321('0x26'))}));});return BPromise[_0x9321('0x3f')](_0x1f07a0);}}})[_0x9321('0x11')](function(){if(_0xdea350){return _0xdea350['update']({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0x9321('0x11')](function(_0x12d2f2){_0x91bde0(_0x12d2f2);})[_0x9321('0x40')](function(_0x42e5d9){_0x169103(_0x15f164[_0x9321('0x14')](0x1f4,_0x42e5d9[_0x9321('0x19')]));});});};exports['LoginUser']=function(_0x38ae4f){var _0x129f2b=this;return new Promise(function(_0x1bdae0,_0x431868){var _0x1a7e82;var _0x4f3240;var _0x96a99b;var _0x5ec8d2;return db[_0x9321('0x16')]['findOne']({'where':_0x38ae4f[_0x9321('0xb')]['where']||{},'attributes':['id',_0x9321('0x1b'),_0x9321('0x1c'),'mobile',_0x9321('0x41'),'internal',_0x9321('0x42'),_0x9321('0x1e')]})[_0x9321('0x11')](function(_0x4d69c0){if(_0x4d69c0){_0x1a7e82=_0x4d69c0;_0x5ec8d2=_0x38ae4f[_0x9321('0x2b')][_0x9321('0x1e')]?_0x38ae4f[_0x9321('0x2b')][_0x9321('0x1e')]:util['format'](_0x9321('0x43'),_0x1a7e82[_0x9321('0x1b')]);return db['User'][_0x9321('0x44')]({'where':{'role':_0x9321('0x45'),'online':!![],'id':{'$ne':_0x1a7e82['id']}}});}})[_0x9321('0x11')](function(_0x3368db){if(_0x3368db){_0x96a99b=_0x3368db;return require(_0x9321('0x46'))[_0x9321('0x47')]();}})[_0x9321('0x11')](function(_0x17de02){if(_0x17de02&&_0x17de02[_0x9321('0x48')]&&_0x96a99b>=_0x17de02['agents']){throw new Error(_0x9321('0x49'));}})[_0x9321('0x11')](function(){if(_0x1a7e82){return db['UserVoiceQueueRt'][_0x9321('0x4a')]({'where':{'membername':_0x1a7e82[_0x9321('0x1b')]},'individualHooks':!![]});}})[_0x9321('0x11')](function(){if(_0x1a7e82){return _0x1a7e82[_0x9321('0x4b')]({'raw':!![]});}})[_0x9321('0x11')](function(_0x521580){if(_0x1a7e82){if(_0x521580){var _0x2eb846=[];_0x4f3240=_0x521580;if(_0x4f3240[_0x9321('0x25')]){for(var _0x526dfd=0x0;_0x526dfd<_0x4f3240[_0x9321('0x25')];_0x526dfd++){_0x2eb846[_0x9321('0x29')](db[_0x9321('0x21')][_0x9321('0x4c')]({'membername':_0x1a7e82[_0x9321('0x1b')],'UserId':_0x1a7e82['id'],'queue_name':_0x4f3240[_0x526dfd][_0x9321('0x1b')],'VoiceQueueId':_0x4f3240[_0x526dfd]['id'],'interface':_0x5ec8d2,'paused':_0x1a7e82[_0x9321('0x42')]||![],'penalty':_0x4f3240[_0x526dfd][_0x9321('0x4d')]||0x0}));}return BPromise[_0x9321('0x3f')](_0x2eb846);}}}})['then'](function(){if(_0x1a7e82){return db[_0x9321('0x23')][_0x9321('0xa')]({'where':{'membername':_0x1a7e82[_0x9321('0x1b')],'exitAt':null}});}})[_0x9321('0x11')](function(_0xdae307){if(_0x1a7e82){if(_0xdae307&&_0xdae307['length']){var _0x36e2d9=[];_0xdae307['forEach'](function(_0x3d39f3){_0x36e2d9['push'](_0x3d39f3[_0x9321('0x22')]({'exitAt':moment()[_0x9321('0x1f')]('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise[_0x9321('0x3f')](_0x36e2d9);}}})[_0x9321('0x11')](function(){if(_0x1a7e82){var _0x15ae44=[];var _0x2bdc08=[];var _0x1f628d=utils[_0x9321('0x27')]();var _0x260fc3={'membername':_0x1a7e82[_0x9321('0x1b')],'interface':_0x5ec8d2,'enterAt':moment()[_0x9321('0x1f')]('YYYY-MM-DD\x20HH:mm:ss'),'role':_0x1a7e82[_0x9321('0x1c')],'internal':_0x1a7e82['internal']};_0x1f628d[_0x9321('0x28')](function(_0x828582){_0x15ae44[_0x9321('0x29')](_['merge']({'channel':_0x828582,'type':_0x9321('0x4e'),'data1':_0x9321('0x4f'),'data2':_0x5ec8d2},_0x260fc3));if(_0x1a7e82[_0x9321('0x42')]){_0x2bdc08[_0x9321('0x29')](_[_0x9321('0x50')]({'channel':_0x828582,'type':_0x9321('0x24'),'data1':'LOGININPAUSE'},_0x260fc3));}});return db[_0x9321('0x23')][_0x9321('0x2e')](_0x15ae44[_0x9321('0x51')](_0x2bdc08),{'individualHooks':!![]});}})['then'](function(){if(_0x1a7e82){return _0x1a7e82[_0x9321('0x22')]({'online':!![],'lastLoginAt':moment()['format'](_0x9321('0x26')),'voicePause':_0x1a7e82[_0x9321('0x42')]||![],'mailPause':_0x1a7e82[_0x9321('0x42')]||![],'chatPause':_0x1a7e82[_0x9321('0x42')]||![],'faxPause':_0x1a7e82[_0x9321('0x42')]||![],'smsPause':_0x1a7e82[_0x9321('0x42')]||![],'openchannelPause':_0x1a7e82[_0x9321('0x42')]||![],'pauseType':_0x1a7e82[_0x9321('0x42')]?_0x9321('0x52'):null,'lastPauseAt':moment()[_0x9321('0x1f')](_0x9321('0x26')),'interface':_0x5ec8d2});}})[_0x9321('0x11')](function(_0x25130b){_0x1bdae0(_0x25130b);})[_0x9321('0x40')](function(_0x1fbedc){_0x431868(_0x129f2b[_0x9321('0x14')](0x1f4,_0x1fbedc['message']));});});};
\ No newline at end of file
index 99a4da9..1cf9a28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x67d7=['emit','removeListener','register','length','user:','./user.events','save','remove'];(function(_0x5e8b4d,_0x4e5ba1){var _0x5d0091=function(_0x53d632){while(--_0x53d632){_0x5e8b4d['push'](_0x5e8b4d['shift']());}};_0x5d0091(++_0x4e5ba1);}(_0x67d7,0x1a5));var _0x767d=function(_0x265d8d,_0x2ef29f){_0x265d8d=_0x265d8d-0x0;var _0x210a0a=_0x67d7[_0x265d8d];return _0x210a0a;};'use strict';var UserEvents=require(_0x767d('0x0'));var events=[_0x767d('0x1'),_0x767d('0x2'),'update'];function createListener(_0xaa7ebe,_0x297573){return function(_0x532166){_0x297573[_0x767d('0x3')](_0xaa7ebe,_0x532166);};}function removeListener(_0x419466,_0x243d0a){return function(){UserEvents[_0x767d('0x4')](_0x419466,_0x243d0a);};}exports[_0x767d('0x5')]=function(_0x3508e4){for(var _0x126591=0x0,_0x4250cf=events[_0x767d('0x6')];_0x126591<_0x4250cf;_0x126591++){var _0x1a1889=events[_0x126591];var _0x5bd21d=createListener(_0x767d('0x7')+_0x1a1889,_0x3508e4);UserEvents['on'](_0x1a1889,_0x5bd21d);}};
\ No newline at end of file
+var _0x9226=['user:','./user.events','save','remove','update','emit','removeListener','register','length'];(function(_0x2fec3b,_0x2407db){var _0xae739a=function(_0x5457c0){while(--_0x5457c0){_0x2fec3b['push'](_0x2fec3b['shift']());}};_0xae739a(++_0x2407db);}(_0x9226,0xd9));var _0x6922=function(_0x84c7fd,_0x13184d){_0x84c7fd=_0x84c7fd-0x0;var _0x91f936=_0x9226[_0x84c7fd];return _0x91f936;};'use strict';var UserEvents=require(_0x6922('0x0'));var events=[_0x6922('0x1'),_0x6922('0x2'),_0x6922('0x3')];function createListener(_0x1777d3,_0x1e5fc4){return function(_0x1f79c7){_0x1e5fc4[_0x6922('0x4')](_0x1777d3,_0x1f79c7);};}function removeListener(_0x2f703f,_0x101c50){return function(){UserEvents[_0x6922('0x5')](_0x2f703f,_0x101c50);};}exports[_0x6922('0x6')]=function(_0xe45c79){for(var _0xa88fcc=0x0,_0x4fe56c=events[_0x6922('0x7')];_0xa88fcc<_0x4fe56c;_0xa88fcc++){var _0x58957b=events[_0xa88fcc];var _0x1b2509=createListener(_0x6922('0x8')+_0x58957b,_0xe45c79);UserEvents['on'](_0x58957b,_0x1b2509);}};
\ No newline at end of file
index bd08f9e..af62c8c 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(_0x595305,_0x1349a9){var _0x4c40c6=function(_0x3d1db8){while(--_0x3d1db8){_0x595305['push'](_0x595305['shift']());}};_0x4c40c6(++_0x1349a9);}(_0x70e0,0x17b));var _0x070e=function(_0x382e04,_0x40ae8c){_0x382e04=_0x382e04-0x0;var _0x17450e=_0x70e0[_0x382e04];return _0x17450e;};'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 _0x70e0=['../../components/auth/service','../../components/interaction/service','exports','multer','util','path','Router','fs-extra'];(function(_0x4f5b30,_0x16244c){var _0x27cd8a=function(_0x5e25a6){while(--_0x5e25a6){_0x4f5b30['push'](_0x4f5b30['shift']());}};_0x27cd8a(++_0x16244c);}(_0x70e0,0x17b));var _0x070e=function(_0x40a60e,_0x494d08){_0x40a60e=_0x40a60e-0x0;var _0x393871=_0x70e0[_0x40a60e];return _0x393871;};'use strict';var multer=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var path=require(_0x070e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x070e('0x3')]();var fs_extra=require(_0x070e('0x4'));var auth=require(_0x070e('0x5'));var interaction=require(_0x070e('0x6'));var config=require('../../config/environment');module[_0x070e('0x7')]=router;
\ No newline at end of file
index 52e7d61..522c93e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f7a=['exports','sequelize'];(function(_0x389a30,_0xdcf849){var _0x503ddb=function(_0x4e448a){while(--_0x4e448a){_0x389a30['push'](_0x389a30['shift']());}};_0x503ddb(++_0xdcf849);}(_0x2f7a,0x151));var _0xa2f7=function(_0x28ef52,_0x74a3a1){_0x28ef52=_0x28ef52-0x0;var _0x515269=_0x2f7a[_0x28ef52];return _0x515269;};'use strict';var Sequelize=require(_0xa2f7('0x0'));module[_0xa2f7('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0xeb00=['exports','sequelize'];(function(_0x1c2585,_0x15812d){var _0x5a5a4b=function(_0x291250){while(--_0x291250){_0x1c2585['push'](_0x1c2585['shift']());}};_0x5a5a4b(++_0x15812d);}(_0xeb00,0x1bb));var _0x0eb0=function(_0x28c9a8,_0x17af11){_0x28c9a8=_0x28c9a8-0x0;var _0x1f4b87=_0xeb00[_0x28c9a8];return _0x1f4b87;};'use strict';var Sequelize=require(_0x0eb0('0x0'));module[_0x0eb0('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index ca84a29..5bd03ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab6e=['./userChatQueue.attributes','define','user_has_chat_queues','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x2c7189,_0x5bc9f3){var _0x27c1fa=function(_0x4e6ba8){while(--_0x4e6ba8){_0x2c7189['push'](_0x2c7189['shift']());}};_0x27c1fa(++_0x5bc9f3);}(_0xab6e,0x148));var _0xeab6=function(_0x735a49,_0x3da3fd){_0x735a49=_0x735a49-0x0;var _0xee7e9=_0xab6e[_0x735a49];return _0xee7e9;};'use strict';var _=require(_0xeab6('0x0'));var util=require(_0xeab6('0x1'));var logger=require(_0xeab6('0x2'))(_0xeab6('0x3'));var moment=require(_0xeab6('0x4'));var BPromise=require(_0xeab6('0x5'));var rp=require(_0xeab6('0x6'));var fs=require('fs');var path=require(_0xeab6('0x7'));var rimraf=require(_0xeab6('0x8'));var config=require(_0xeab6('0x9'));var attributes=require(_0xeab6('0xa'));module['exports']=function(_0x14c7c6,_0x5cab7b){return _0x14c7c6[_0xeab6('0xb')]('UserChatQueue',attributes,{'tableName':_0xeab6('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4464=['path','rimraf','../../config/environment','exports','UserChatQueue','lodash','bluebird'];(function(_0x4b7895,_0x3c4f5d){var _0x264180=function(_0xe0e861){while(--_0xe0e861){_0x4b7895['push'](_0x4b7895['shift']());}};_0x264180(++_0x3c4f5d);}(_0x4464,0x15c));var _0x4446=function(_0x979cf7,_0x4c73ad){_0x979cf7=_0x979cf7-0x0;var _0x52d14a=_0x4464[_0x979cf7];return _0x52d14a;};'use strict';var _=require(_0x4446('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x4446('0x1'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x4446('0x2'));var rimraf=require(_0x4446('0x3'));var config=require(_0x4446('0x4'));var attributes=require('./userChatQueue.attributes');module[_0x4446('0x5')]=function(_0x1382d8,_0x5c9913){return _0x1382d8['define'](_0x4446('0x6'),attributes,{'tableName':'user_has_chat_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 63c162f..767995b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2599=['rpc','../../config/environment','jayson/promise','client','http','request','then','info','UserChatQueue,\x20%s,\x20%s','request\x20sent','debug','UserChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x277107,_0x3420dc){var _0x1da046=function(_0x47122d){while(--_0x47122d){_0x277107['push'](_0x277107['shift']());}};_0x1da046(++_0x3420dc);}(_0x2599,0xb8));var _0x9259=function(_0x4fa383,_0x53118f){_0x4fa383=_0x4fa383-0x0;var _0x2b4153=_0x2599[_0x4fa383];return _0x2b4153;};'use strict';var _=require(_0x9259('0x0'));var util=require(_0x9259('0x1'));var moment=require(_0x9259('0x2'));var BPromise=require(_0x9259('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9259('0x4'));var db=require(_0x9259('0x5'))['db'];var utils=require(_0x9259('0x6'));var logger=require(_0x9259('0x7'))(_0x9259('0x8'));var config=require(_0x9259('0x9'));var jayson=require(_0x9259('0xa'));var client=jayson[_0x9259('0xb')][_0x9259('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x46c11c,_0x51f246,_0x32ed3b){return new BPromise(function(_0x363db9,_0x2ca01f){return client[_0x9259('0xd')](_0x46c11c,_0x32ed3b)[_0x9259('0xe')](function(_0x1188cd){logger[_0x9259('0xf')](_0x9259('0x10'),_0x51f246,_0x9259('0x11'));logger[_0x9259('0x12')](_0x9259('0x13'),_0x51f246,_0x9259('0x11'),JSON[_0x9259('0x14')](_0x1188cd));if(_0x1188cd[_0x9259('0x15')]){if(_0x1188cd[_0x9259('0x15')][_0x9259('0x16')]===0x1f4){logger['error'](_0x9259('0x10'),_0x51f246,_0x1188cd[_0x9259('0x15')][_0x9259('0x17')]);return _0x2ca01f(_0x1188cd[_0x9259('0x15')][_0x9259('0x17')]);}logger['error']('UserChatQueue,\x20%s,\x20%s',_0x51f246,_0x1188cd['error']['message']);return _0x363db9(_0x1188cd['error'][_0x9259('0x17')]);}else{logger[_0x9259('0xf')]('UserChatQueue,\x20%s,\x20%s',_0x51f246,_0x9259('0x11'));_0x363db9(_0x1188cd['result'][_0x9259('0x17')]);}})['catch'](function(_0x54bce9){logger[_0x9259('0x15')](_0x9259('0x10'),_0x51f246,_0x54bce9);_0x2ca01f(_0x54bce9);});});}
\ No newline at end of file
+var _0xd5b2=['request\x20sent','debug','UserChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','jayson/promise','client','http','info','UserChatQueue,\x20%s,\x20%s'];(function(_0x3a2454,_0xed14d3){var _0x4cd64f=function(_0x1399f1){while(--_0x1399f1){_0x3a2454['push'](_0x3a2454['shift']());}};_0x4cd64f(++_0xed14d3);}(_0xd5b2,0x153));var _0x2d5b=function(_0x23e7c1,_0x35110c){_0x23e7c1=_0x23e7c1-0x0;var _0x1add43=_0xd5b2[_0x23e7c1];return _0x1add43;};'use strict';var _=require(_0x2d5b('0x0'));var util=require(_0x2d5b('0x1'));var moment=require(_0x2d5b('0x2'));var BPromise=require(_0x2d5b('0x3'));var rs=require(_0x2d5b('0x4'));var fs=require('fs');var Redis=require(_0x2d5b('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x2d5b('0x6'))(_0x2d5b('0x7'));var config=require('../../config/environment');var jayson=require(_0x2d5b('0x8'));var client=jayson[_0x2d5b('0x9')][_0x2d5b('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1618c1,_0x314755,_0x37faa6){return new BPromise(function(_0x4812ba,_0x56e9ce){return client['request'](_0x1618c1,_0x37faa6)['then'](function(_0x22428a){logger[_0x2d5b('0xb')](_0x2d5b('0xc'),_0x314755,_0x2d5b('0xd'));logger[_0x2d5b('0xe')](_0x2d5b('0xf'),_0x314755,_0x2d5b('0xd'),JSON[_0x2d5b('0x10')](_0x22428a));if(_0x22428a[_0x2d5b('0x11')]){if(_0x22428a[_0x2d5b('0x11')][_0x2d5b('0x12')]===0x1f4){logger[_0x2d5b('0x11')]('UserChatQueue,\x20%s,\x20%s',_0x314755,_0x22428a[_0x2d5b('0x11')][_0x2d5b('0x13')]);return _0x56e9ce(_0x22428a[_0x2d5b('0x11')][_0x2d5b('0x13')]);}logger[_0x2d5b('0x11')](_0x2d5b('0xc'),_0x314755,_0x22428a['error']['message']);return _0x4812ba(_0x22428a[_0x2d5b('0x11')]['message']);}else{logger[_0x2d5b('0xb')]('UserChatQueue,\x20%s,\x20%s',_0x314755,'request\x20sent');_0x4812ba(_0x22428a[_0x2d5b('0x14')][_0x2d5b('0x13')]);}})[_0x2d5b('0x15')](function(_0x28e294){logger['error'](_0x2d5b('0xc'),_0x314755,_0x28e294);_0x56e9ce(_0x28e294);});});}
\ No newline at end of file
index ae7e474..43e9b09 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(_0x48a517,_0x15e1d6){var _0x55ae93=function(_0x332cb4){while(--_0x332cb4){_0x48a517['push'](_0x48a517['shift']());}};_0x55ae93(++_0x15e1d6);}(_0x70e0,0x17b));var _0x070e=function(_0x1008fa,_0x4334b6){_0x1008fa=_0x1008fa-0x0;var _0x43aac3=_0x70e0[_0x1008fa];return _0x43aac3;};'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 _0x70e0=['../../components/auth/service','../../components/interaction/service','exports','multer','util','path','Router','fs-extra'];(function(_0x45fcec,_0x3b9c77){var _0x2d097d=function(_0x115632){while(--_0x115632){_0x45fcec['push'](_0x45fcec['shift']());}};_0x2d097d(++_0x3b9c77);}(_0x70e0,0x17b));var _0x070e=function(_0x2bbd32,_0x5b432b){_0x2bbd32=_0x2bbd32-0x0;var _0x40c2f8=_0x70e0[_0x2bbd32];return _0x40c2f8;};'use strict';var multer=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var path=require(_0x070e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x070e('0x3')]();var fs_extra=require(_0x070e('0x4'));var auth=require(_0x070e('0x5'));var interaction=require(_0x070e('0x6'));var config=require('../../config/environment');module[_0x070e('0x7')]=router;
\ No newline at end of file
index 75ee978..0237e6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd73b=['STRING','INTEGER'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0xd73b,0x1b1));var _0xbd73=function(_0x5aa29b,_0x2a4afa){_0x5aa29b=_0x5aa29b-0x0;var _0x14cda3=_0xd73b[_0x5aa29b];return _0x14cda3;};'use strict';var Sequelize=require('sequelize');module['exports']={'penalty':{'type':Sequelize[_0xbd73('0x0')],'defaultValue':0x0},'assigned':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'queue':{'type':Sequelize[_0xbd73('0x1')]}};
\ No newline at end of file
+var _0x85e8=['INTEGER','STRING','sequelize','exports'];(function(_0x4904ca,_0x1c874e){var _0x2e412d=function(_0x12ae3c){while(--_0x12ae3c){_0x4904ca['push'](_0x4904ca['shift']());}};_0x2e412d(++_0x1c874e);}(_0x85e8,0xaa));var _0x885e=function(_0x27c071,_0x51f1cc){_0x27c071=_0x27c071-0x0;var _0x450cba=_0x85e8[_0x27c071];return _0x450cba;};'use strict';var Sequelize=require(_0x885e('0x0'));module[_0x885e('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x885e('0x2')],'defaultValue':0x0},'queue':{'type':Sequelize[_0x885e('0x3')]}};
\ No newline at end of file
index 298e2c5..25d37f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4043=['api','moment','rimraf','./userFaxQueue.attributes','define','UserFaxQueue','user_has_fax_queues','lodash'];(function(_0x1eaa87,_0x2ab34f){var _0x5a3ccc=function(_0x58896e){while(--_0x58896e){_0x1eaa87['push'](_0x1eaa87['shift']());}};_0x5a3ccc(++_0x2ab34f);}(_0x4043,0x17f));var _0x3404=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x4043[_0x501510];return _0x1e6ee5;};'use strict';var _=require(_0x3404('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x3404('0x1'));var moment=require(_0x3404('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x3404('0x3'));var config=require('../../config/environment');var attributes=require(_0x3404('0x4'));module['exports']=function(_0x13f1c1,_0x5d73c3){return _0x13f1c1[_0x3404('0x5')](_0x3404('0x6'),attributes,{'tableName':_0x3404('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc0d5=['api','moment','bluebird','path','rimraf','./userFaxQueue.attributes','exports','define','UserFaxQueue','user_has_fax_queues','lodash','util','../../config/logger'];(function(_0x5ed61b,_0x4fcc60){var _0xb26d92=function(_0x89ffe){while(--_0x89ffe){_0x5ed61b['push'](_0x5ed61b['shift']());}};_0xb26d92(++_0x4fcc60);}(_0xc0d5,0x1c4));var _0x5c0d=function(_0x405d19,_0x8f6339){_0x405d19=_0x405d19-0x0;var _0x18f7f9=_0xc0d5[_0x405d19];return _0x18f7f9;};'use strict';var _=require(_0x5c0d('0x0'));var util=require(_0x5c0d('0x1'));var logger=require(_0x5c0d('0x2'))(_0x5c0d('0x3'));var moment=require(_0x5c0d('0x4'));var BPromise=require(_0x5c0d('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x5c0d('0x6'));var rimraf=require(_0x5c0d('0x7'));var config=require('../../config/environment');var attributes=require(_0x5c0d('0x8'));module[_0x5c0d('0x9')]=function(_0x366b99,_0x57713d){return _0x366b99[_0x5c0d('0xa')](_0x5c0d('0xb'),attributes,{'tableName':_0x5c0d('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index af98484..de9ed30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe6b9=['../../config/environment','jayson/promise','client','request','UserFaxQueue,\x20%s,\x20%s','request\x20sent','debug','UserFaxQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x4f6289,_0x51b3c0){var _0x433d64=function(_0x3e9087){while(--_0x3e9087){_0x4f6289['push'](_0x4f6289['shift']());}};_0x433d64(++_0x51b3c0);}(_0xe6b9,0xa8));var _0x9e6b=function(_0x24237f,_0x4cf32c){_0x24237f=_0x24237f-0x0;var _0x48298e=_0xe6b9[_0x24237f];return _0x48298e;};'use strict';var _=require('lodash');var util=require(_0x9e6b('0x0'));var moment=require(_0x9e6b('0x1'));var BPromise=require(_0x9e6b('0x2'));var rs=require(_0x9e6b('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9e6b('0x4'))['db'];var utils=require(_0x9e6b('0x5'));var logger=require(_0x9e6b('0x6'))(_0x9e6b('0x7'));var config=require(_0x9e6b('0x8'));var jayson=require(_0x9e6b('0x9'));var client=jayson[_0x9e6b('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1c93b9,_0xdd6616,_0x49d3ab){return new BPromise(function(_0x3a2a52,_0x15e874){return client[_0x9e6b('0xb')](_0x1c93b9,_0x49d3ab)['then'](function(_0x3a89d3){logger['info'](_0x9e6b('0xc'),_0xdd6616,_0x9e6b('0xd'));logger[_0x9e6b('0xe')](_0x9e6b('0xf'),_0xdd6616,_0x9e6b('0xd'),JSON[_0x9e6b('0x10')](_0x3a89d3));if(_0x3a89d3[_0x9e6b('0x11')]){if(_0x3a89d3['error'][_0x9e6b('0x12')]===0x1f4){logger[_0x9e6b('0x11')]('UserFaxQueue,\x20%s,\x20%s',_0xdd6616,_0x3a89d3[_0x9e6b('0x11')][_0x9e6b('0x13')]);return _0x15e874(_0x3a89d3[_0x9e6b('0x11')][_0x9e6b('0x13')]);}logger['error'](_0x9e6b('0xc'),_0xdd6616,_0x3a89d3[_0x9e6b('0x11')][_0x9e6b('0x13')]);return _0x3a2a52(_0x3a89d3[_0x9e6b('0x11')][_0x9e6b('0x13')]);}else{logger['info'](_0x9e6b('0xc'),_0xdd6616,_0x9e6b('0xd'));_0x3a2a52(_0x3a89d3[_0x9e6b('0x14')][_0x9e6b('0x13')]);}})[_0x9e6b('0x15')](function(_0x2b2212){logger['error'](_0x9e6b('0xc'),_0xdd6616,_0x2b2212);_0x15e874(_0x2b2212);});});}
\ No newline at end of file
+var _0x63ff=['rpc','../../config/environment','jayson/promise','client','http','request','info','request\x20sent','debug','stringify','code','error','message','UserFaxQueue,\x20%s,\x20%s','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x2d34d6,_0x397ff9){var _0x1d3d12=function(_0x558800){while(--_0x558800){_0x2d34d6['push'](_0x2d34d6['shift']());}};_0x1d3d12(++_0x397ff9);}(_0x63ff,0x116));var _0xf63f=function(_0x2b2d2c,_0x5cccef){_0x2b2d2c=_0x2b2d2c-0x0;var _0x4d70aa=_0x63ff[_0x2b2d2c];return _0x4d70aa;};'use strict';var _=require(_0xf63f('0x0'));var util=require(_0xf63f('0x1'));var moment=require(_0xf63f('0x2'));var BPromise=require(_0xf63f('0x3'));var rs=require(_0xf63f('0x4'));var fs=require('fs');var Redis=require(_0xf63f('0x5'));var db=require(_0xf63f('0x6'))['db'];var utils=require(_0xf63f('0x7'));var logger=require('../../config/logger')(_0xf63f('0x8'));var config=require(_0xf63f('0x9'));var jayson=require(_0xf63f('0xa'));var client=jayson[_0xf63f('0xb')][_0xf63f('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x5e502c,_0x2c6daf,_0x469b60){return new BPromise(function(_0x734b94,_0xa27f85){return client[_0xf63f('0xd')](_0x5e502c,_0x469b60)['then'](function(_0x52a551){logger[_0xf63f('0xe')]('UserFaxQueue,\x20%s,\x20%s',_0x2c6daf,_0xf63f('0xf'));logger[_0xf63f('0x10')]('UserFaxQueue,\x20%s,\x20%s,\x20%s',_0x2c6daf,_0xf63f('0xf'),JSON[_0xf63f('0x11')](_0x52a551));if(_0x52a551['error']){if(_0x52a551['error'][_0xf63f('0x12')]===0x1f4){logger['error']('UserFaxQueue,\x20%s,\x20%s',_0x2c6daf,_0x52a551['error']['message']);return _0xa27f85(_0x52a551[_0xf63f('0x13')][_0xf63f('0x14')]);}logger[_0xf63f('0x13')](_0xf63f('0x15'),_0x2c6daf,_0x52a551['error'][_0xf63f('0x14')]);return _0x734b94(_0x52a551[_0xf63f('0x13')][_0xf63f('0x14')]);}else{logger[_0xf63f('0xe')](_0xf63f('0x15'),_0x2c6daf,_0xf63f('0xf'));_0x734b94(_0x52a551['result']['message']);}})['catch'](function(_0x2a2a19){logger[_0xf63f('0x13')](_0xf63f('0x15'),_0x2c6daf,_0x2a2a19);_0xa27f85(_0x2a2a19);});});}
\ No newline at end of file
index 7c3fc23..784a9c6 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(_0x42322d,_0x5567b8){var _0x409906=function(_0x591bb6){while(--_0x591bb6){_0x42322d['push'](_0x42322d['shift']());}};_0x409906(++_0x5567b8);}(_0xd8b0,0xad));var _0x0d8b=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xd8b0[_0xa464c9];return _0x3d73c4;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));module['exports']=router;
\ No newline at end of file
+var _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0x5538d5,_0x190032){var _0x323b1a=function(_0x179caa){while(--_0x179caa){_0x5538d5['push'](_0x5538d5['shift']());}};_0x323b1a(++_0x190032);}(_0x9c44,0x178));var _0x49c4=function(_0x5608a3,_0x5b33c5){_0x5608a3=_0x5608a3-0x0;var _0x1ed50a=_0x9c44[_0x5608a3];return _0x1ed50a;};'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 75410fa..e169113 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb768=['INTEGER','sequelize'];(function(_0x4c8fd7,_0x5ac749){var _0xd77a98=function(_0x3a5f2a){while(--_0x3a5f2a){_0x4c8fd7['push'](_0x4c8fd7['shift']());}};_0xd77a98(++_0x5ac749);}(_0xb768,0x7d));var _0x8b76=function(_0x4448cd,_0x5bc3d8){_0x4448cd=_0x4448cd-0x0;var _0xdd3af1=_0xb768[_0x4448cd];return _0xdd3af1;};'use strict';var Sequelize=require(_0x8b76('0x0'));module['exports']={'penalty':{'type':Sequelize[_0x8b76('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x687d=['INTEGER','sequelize','exports'];(function(_0x3ecd60,_0x1c9c62){var _0x52c94b=function(_0x12e2b7){while(--_0x12e2b7){_0x3ecd60['push'](_0x3ecd60['shift']());}};_0x52c94b(++_0x1c9c62);}(_0x687d,0x187));var _0xd687=function(_0x330e77,_0x2dd3c0){_0x330e77=_0x330e77-0x0;var _0xdbadea=_0x687d[_0x330e77];return _0xdbadea;};'use strict';var Sequelize=require(_0xd687('0x0'));module[_0xd687('0x1')]={'penalty':{'type':Sequelize[_0xd687('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 432434e..4946433 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdf4f=['./userMailQueue.attributes','define','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x4516ff,_0x30f19e){var _0x4d8b77=function(_0x39f382){while(--_0x39f382){_0x4516ff['push'](_0x4516ff['shift']());}};_0x4d8b77(++_0x30f19e);}(_0xdf4f,0xbd));var _0xfdf4=function(_0xab3511,_0x95206c){_0xab3511=_0xab3511-0x0;var _0x21dd6d=_0xdf4f[_0xab3511];return _0x21dd6d;};'use strict';var _=require(_0xfdf4('0x0'));var util=require(_0xfdf4('0x1'));var logger=require(_0xfdf4('0x2'))(_0xfdf4('0x3'));var moment=require(_0xfdf4('0x4'));var BPromise=require(_0xfdf4('0x5'));var rp=require(_0xfdf4('0x6'));var fs=require('fs');var path=require(_0xfdf4('0x7'));var rimraf=require(_0xfdf4('0x8'));var config=require('../../config/environment');var attributes=require(_0xfdf4('0x9'));module['exports']=function(_0x24093d,_0xe40d5){return _0x24093d[_0xfdf4('0xa')]('UserMailQueue',attributes,{'tableName':'user_has_mail_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5795=['./userMailQueue.attributes','define','UserMailQueue','user_has_mail_queues','lodash','util','api','moment','bluebird','request-promise','rimraf','../../config/environment'];(function(_0x284807,_0x4be925){var _0x50c774=function(_0xf56cf7){while(--_0xf56cf7){_0x284807['push'](_0x284807['shift']());}};_0x50c774(++_0x4be925);}(_0x5795,0x160));var _0x5579=function(_0x3c8e9a,_0x384306){_0x3c8e9a=_0x3c8e9a-0x0;var _0x2d4c57=_0x5795[_0x3c8e9a];return _0x2d4c57;};'use strict';var _=require(_0x5579('0x0'));var util=require(_0x5579('0x1'));var logger=require('../../config/logger')(_0x5579('0x2'));var moment=require(_0x5579('0x3'));var BPromise=require(_0x5579('0x4'));var rp=require(_0x5579('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x5579('0x6'));var config=require(_0x5579('0x7'));var attributes=require(_0x5579('0x8'));module['exports']=function(_0x8cea52,_0x2cdee1){return _0x8cea52[_0x5579('0x9')](_0x5579('0xa'),attributes,{'tableName':_0x5579('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 223494b..3982558 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x008c=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','info','UserMailQueue,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','UserMailQueue,\x20%s,\x20%s','message','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0x008c,0x188));var _0xc008=function(_0xa96b73,_0x5d4c0c){_0xa96b73=_0xa96b73-0x0;var _0x4aacc7=_0x008c[_0xa96b73];return _0x4aacc7;};'use strict';var _=require(_0xc008('0x0'));var util=require(_0xc008('0x1'));var moment=require(_0xc008('0x2'));var BPromise=require(_0xc008('0x3'));var rs=require(_0xc008('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc008('0x5'))['db'];var utils=require(_0xc008('0x6'));var logger=require(_0xc008('0x7'))(_0xc008('0x8'));var config=require(_0xc008('0x9'));var jayson=require(_0xc008('0xa'));var client=jayson[_0xc008('0xb')][_0xc008('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x9c8cb2,_0x4af530,_0x428fa9){return new BPromise(function(_0x5aa09b,_0x30be38){return client['request'](_0x9c8cb2,_0x428fa9)['then'](function(_0x27830d){logger[_0xc008('0xd')]('UserMailQueue,\x20%s,\x20%s',_0x4af530,'request\x20sent');logger['debug'](_0xc008('0xe'),_0x4af530,_0xc008('0xf'),JSON['stringify'](_0x27830d));if(_0x27830d[_0xc008('0x10')]){if(_0x27830d[_0xc008('0x10')][_0xc008('0x11')]===0x1f4){logger[_0xc008('0x10')](_0xc008('0x12'),_0x4af530,_0x27830d[_0xc008('0x10')][_0xc008('0x13')]);return _0x30be38(_0x27830d['error']['message']);}logger[_0xc008('0x10')]('UserMailQueue,\x20%s,\x20%s',_0x4af530,_0x27830d[_0xc008('0x10')][_0xc008('0x13')]);return _0x5aa09b(_0x27830d[_0xc008('0x10')][_0xc008('0x13')]);}else{logger[_0xc008('0xd')]('UserMailQueue,\x20%s,\x20%s',_0x4af530,'request\x20sent');_0x5aa09b(_0x27830d['result'][_0xc008('0x13')]);}})[_0xc008('0x14')](function(_0x3cafe3){logger[_0xc008('0x10')]('UserMailQueue,\x20%s,\x20%s',_0x4af530,_0x3cafe3);_0x30be38(_0x3cafe3);});});}
\ No newline at end of file
+var _0xa41a=['rpc','../../config/environment','client','http','request','then','info','UserMailQueue,\x20%s,\x20%s','request\x20sent','debug','UserMailQueue,\x20%s,\x20%s,\x20%s','error','message','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0xe5ed36,_0x201000){var _0x2accd4=function(_0xa80433){while(--_0xa80433){_0xe5ed36['push'](_0xe5ed36['shift']());}};_0x2accd4(++_0x201000);}(_0xa41a,0x6b));var _0xaa41=function(_0x4271ea,_0x1428a8){_0x4271ea=_0x4271ea-0x0;var _0x156428=_0xa41a[_0x4271ea];return _0x156428;};'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);});});}
\ No newline at end of file
index d81ac2c..28d92a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c46=['../../config/environment','./userNotification.controller','post','isAuthenticated','sendUserNotification','exports','multer','util','connect-timeout','Router','fs-extra','../../components/interaction/service'];(function(_0x256b72,_0x340985){var _0x2183e3=function(_0xf7fd37){while(--_0xf7fd37){_0x256b72['push'](_0x256b72['shift']());}};_0x2183e3(++_0x340985);}(_0x8c46,0xf6));var _0x68c4=function(_0x4a1e75,_0x28ba73){_0x4a1e75=_0x4a1e75-0x0;var _0x3cf0f5=_0x8c46[_0x4a1e75];return _0x3cf0f5;};'use strict';var multer=require(_0x68c4('0x0'));var util=require(_0x68c4('0x1'));var path=require('path');var timeout=require(_0x68c4('0x2'));var express=require('express');var router=express[_0x68c4('0x3')]();var fs_extra=require(_0x68c4('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x68c4('0x5'));var config=require(_0x68c4('0x6'));var controller=require(_0x68c4('0x7'));router[_0x68c4('0x8')]('/',auth[_0x68c4('0x9')](),controller[_0x68c4('0xa')]);module[_0x68c4('0xb')]=router;
\ No newline at end of file
+var _0x6f00=['./userNotification.controller','post','isAuthenticated','sendUserNotification','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x721f11,_0xec911f){var _0x46c7e4=function(_0x394e39){while(--_0x394e39){_0x721f11['push'](_0x721f11['shift']());}};_0x46c7e4(++_0xec911f);}(_0x6f00,0x163));var _0x06f0=function(_0xbc346f,_0x3db5c0){_0xbc346f=_0xbc346f-0x0;var _0x9f9260=_0x6f00[_0xbc346f];return _0x9f9260;};'use strict';var multer=require(_0x06f0('0x0'));var util=require(_0x06f0('0x1'));var path=require(_0x06f0('0x2'));var timeout=require(_0x06f0('0x3'));var express=require(_0x06f0('0x4'));var router=express[_0x06f0('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x06f0('0x6'));var interaction=require(_0x06f0('0x7'));var config=require(_0x06f0('0x8'));var controller=require(_0x06f0('0x9'));router[_0x06f0('0xa')]('/',auth[_0x06f0('0xb')](),controller[_0x06f0('0xc')]);module['exports']=router;
\ No newline at end of file
index b7819cc..2353d2d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2c8e=['STRING','exports','TEXT'];(function(_0x1b09f3,_0x346ea4){var _0x56f25c=function(_0x4fe1c4){while(--_0x4fe1c4){_0x1b09f3['push'](_0x1b09f3['shift']());}};_0x56f25c(++_0x346ea4);}(_0x2c8e,0xa9));var _0xe2c8=function(_0x295163,_0x3bc57a){_0x295163=_0x295163-0x0;var _0x4d5c6e=_0x2c8e[_0x295163];return _0x4d5c6e;};'use strict';var Sequelize=require('sequelize');module[_0xe2c8('0x0')]={'body':{'type':Sequelize[_0xe2c8('0x1')]},'senderName':{'type':Sequelize[_0xe2c8('0x2')]},'recipientsId':{'type':Sequelize['TEXT']},'recipientsDescription':{'type':Sequelize[_0xe2c8('0x2')]},'beep':{'type':Sequelize['BOOLEAN']}};
\ No newline at end of file
+var _0x3fe3=['STRING','BOOLEAN','sequelize','exports','TEXT'];(function(_0x11ad65,_0x352d3c){var _0x35590c=function(_0x2c3845){while(--_0x2c3845){_0x11ad65['push'](_0x11ad65['shift']());}};_0x35590c(++_0x352d3c);}(_0x3fe3,0x16a));var _0x33fe=function(_0x4f1e5f,_0x4ea601){_0x4f1e5f=_0x4f1e5f-0x0;var _0x4fe5cf=_0x3fe3[_0x4f1e5f];return _0x4fe5cf;};'use strict';var Sequelize=require(_0x33fe('0x0'));module[_0x33fe('0x1')]={'body':{'type':Sequelize[_0x33fe('0x2')]},'senderName':{'type':Sequelize['STRING']},'recipientsId':{'type':Sequelize[_0x33fe('0x2')]},'recipientsDescription':{'type':Sequelize[_0x33fe('0x3')]},'beep':{'type':Sequelize[_0x33fe('0x4')]}};
\ No newline at end of file
index 87d697b..340c185 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xafbc=['jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','redis','socket.io-emitter','./userNotification.socket','register','status','json','offset','limit','undefined','count','set','Content-Range','reject','update','destroy','then','end','sendStatus','error','name','sendUserNotification','body','hasOwnProperty','TemplateId','ValidationError','Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27','view','Sequelize','Missing\x20\x27view\x27\x20parameter','Missing\x20\x27recipients\x27\x20parameter','recipients','Invalid\x20\x27recipients\x27\x20object','chatqueue','faxqueue','smsqueue','voicequeue','team','some','includes','model','toLowerCase','Invalid\x20model\x20in\x20\x27recipients\x27\x20object','senderName','user','fullname','recipientsDescription','beep','SenderId','recipientsId','sortBy','join','transaction','UserNotification','create','forEach','recipient','emit','userNotification:send','text','Template','findOne','html','Invalid\x20\x27TemplateId\x27\x20parameter','render','startCase','ids','replace','queue','Queue','all','flatten','catch','getAgents','rimraf','fast-json-patch','request-promise','moment','util','path','sox','to-csv','lodash','squel','crypto'];(function(_0x13b02f,_0x462a53){var _0x12e9a6=function(_0x187d57){while(--_0x187d57){_0x13b02f['push'](_0x13b02f['shift']());}};_0x12e9a6(++_0x462a53);}(_0xafbc,0x171));var _0xcafb=function(_0x3c0a80,_0x4e292c){_0x3c0a80=_0x3c0a80-0x0;var _0x5f3ec4=_0xafbc[_0x3c0a80];return _0x5f3ec4;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xcafb('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xcafb('0x1'));var rp=require(_0xcafb('0x2'));var moment=require(_0xcafb('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xcafb('0x4'));var path=require(_0xcafb('0x5'));var sox=require(_0xcafb('0x6'));var csv=require(_0xcafb('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xcafb('0x8'));var squel=require(_0xcafb('0x9'));var crypto=require(_0xcafb('0xa'));var jsforce=require(_0xcafb('0xb'));var deskjs=require('desk.js');var toCsv=require(_0xcafb('0x7'));var querystring=require(_0xcafb('0xc'));var Papa=require('papaparse');var Redis=require(_0xcafb('0xd'));var authService=require(_0xcafb('0xe'));var qs=require(_0xcafb('0xf'));var as=require(_0xcafb('0x10'));var hardwareService=require(_0xcafb('0x11'));var logger=require(_0xcafb('0x12'))(_0xcafb('0x13'));var utils=require(_0xcafb('0x14'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xcafb('0x15'))['db'];config[_0xcafb('0x16')]=_['defaults'](config[_0xcafb('0x16')],{'host':'localhost','port':0x18eb});var socket=require(_0xcafb('0x17'))(new Redis(config[_0xcafb('0x16')]));require(_0xcafb('0x18'))[_0xcafb('0x19')](socket);function respondWithStatusCode(_0x276539,_0x35f913){_0x35f913=_0x35f913||0xcc;return function(_0x2b2fe6){if(_0x2b2fe6){return _0x276539['sendStatus'](_0x35f913);}return _0x276539['status'](_0x35f913)['end']();};}function respondWithResult(_0x209f1e,_0x12ac50){_0x12ac50=_0x12ac50||0xc8;return function(_0x7fff3a){if(_0x7fff3a){return _0x209f1e[_0xcafb('0x1a')](_0x12ac50)[_0xcafb('0x1b')](_0x7fff3a);}};}function respondWithFilteredResult(_0x3c98e9,_0x313547){return function(_0x32ac24){if(_0x32ac24){var _0x3ac6fb=typeof _0x313547[_0xcafb('0x1c')]==='undefined'&&typeof _0x313547[_0xcafb('0x1d')]===_0xcafb('0x1e');var _0xfce9fa=_0x32ac24[_0xcafb('0x1f')];var _0x58f5a0=_0x3ac6fb?0x0:_0x313547['offset'];var _0x5aba59=_0x3ac6fb?_0x32ac24[_0xcafb('0x1f')]:_0x313547[_0xcafb('0x1c')]+_0x313547['limit'];var _0xa54302;if(_0x5aba59>=_0xfce9fa){_0x5aba59=_0xfce9fa;_0xa54302=0xc8;}else{_0xa54302=0xce;}_0x3c98e9['status'](_0xa54302);return _0x3c98e9[_0xcafb('0x20')](_0xcafb('0x21'),_0x58f5a0+'-'+_0x5aba59+'/'+_0xfce9fa)[_0xcafb('0x1b')](_0x32ac24);}return null;};}function patchUpdates(_0x551b72){return function(_0x274166){try{jsonpatch['apply'](_0x274166,_0x551b72,!![]);}catch(_0x5c5c58){return BPromise[_0xcafb('0x22')](_0x5c5c58);}return _0x274166['save']();};}function saveUpdates(_0x3d36a6,_0x56546f){return function(_0x355c51){if(_0x355c51){return _0x355c51[_0xcafb('0x23')](_0x3d36a6)['then'](function(_0x4810c3){return _0x4810c3;});}return null;};}function removeEntity(_0x1353e0,_0x5cf505){return function(_0x40f93d){if(_0x40f93d){return _0x40f93d[_0xcafb('0x24')]()[_0xcafb('0x25')](function(){_0x1353e0['status'](0xcc)[_0xcafb('0x26')]();});}};}function handleEntityNotFound(_0x58df61,_0x40a582){return function(_0x4e6c52){if(!_0x4e6c52){_0x58df61[_0xcafb('0x27')](0x194);}return _0x4e6c52;};}function handleError(_0x2ec7dd,_0xd6e35e){_0xd6e35e=_0xd6e35e||0x1f4;return function(_0x2822db){logger[_0xcafb('0x28')](_0x2822db['stack']);if(_0x2822db[_0xcafb('0x29')]){delete _0x2822db[_0xcafb('0x29')];}_0x2ec7dd[_0xcafb('0x1a')](_0xd6e35e)['send'](_0x2822db);};}exports[_0xcafb('0x2a')]=function(_0x59a25e,_0x1f03f9,_0x3cd5a5){if(!_0x59a25e[_0xcafb('0x2b')][_0xcafb('0x2c')]('text')&&!_0x59a25e[_0xcafb('0x2b')][_0xcafb('0x2c')](_0xcafb('0x2d'))){throw new db['Sequelize'][(_0xcafb('0x2e'))](_0xcafb('0x2f'));}else{if(_0x59a25e[_0xcafb('0x2b')][_0xcafb('0x2c')](_0xcafb('0x2d'))&&!_0x59a25e['body'][_0xcafb('0x2c')](_0xcafb('0x30'))){throw new db[(_0xcafb('0x31'))][(_0xcafb('0x2e'))](_0xcafb('0x32'));}if(!_0x59a25e[_0xcafb('0x2b')][_0xcafb('0x2c')]('recipients')){throw new db['Sequelize'][(_0xcafb('0x2e'))](_0xcafb('0x33'));}else{try{var _0x19254c=JSON['parse'](_0x59a25e[_0xcafb('0x2b')][_0xcafb('0x34')]);}catch(_0xccd806){logger['error'](_0xccd806);throw new db[(_0xcafb('0x31'))][(_0xcafb('0x2e'))](_0xcafb('0x35'));}var _0x4c28bd=[_0xcafb('0x36'),_0xcafb('0x37'),'mailqueue','openchannelqueue',_0xcafb('0x38'),_0xcafb('0x39'),'whatsappqueue',_0xcafb('0x3a'),'user'];if(_[_0xcafb('0x3b')](_0x19254c,function(_0x312225){return!_[_0xcafb('0x3c')](_0x4c28bd,_0x312225[_0xcafb('0x3d')][_0xcafb('0x3e')]());})){throw new db['Sequelize'][(_0xcafb('0x2e'))](_0xcafb('0x3f'));}}}var _0x390cbf={};_0x390cbf[_0xcafb('0x40')]=_0x59a25e['body'][_0xcafb('0x2c')](_0xcafb('0x40'))?_0x59a25e[_0xcafb('0x2b')][_0xcafb('0x40')]:_0x59a25e[_0xcafb('0x41')][_0xcafb('0x42')];_0x390cbf[_0xcafb('0x43')]=_['isEmpty'](_0x59a25e[_0xcafb('0x2b')]['recipientsDescription'])?null:_0x59a25e[_0xcafb('0x2b')]['recipientsDescription'];_0x390cbf[_0xcafb('0x44')]=_0x59a25e[_0xcafb('0x2b')][_0xcafb('0x44')]||![];_0x390cbf[_0xcafb('0x45')]=_0x59a25e[_0xcafb('0x41')]['id'];return getContent(_0x59a25e['body'])[_0xcafb('0x25')](function(_0x31b02b){_0x390cbf['body']=_0x31b02b;return getRecipients(_0x19254c);})[_0xcafb('0x25')](function(_0x1bee70){_0x390cbf[_0xcafb('0x46')]=_[_0xcafb('0x47')](_0x1bee70)[_0xcafb('0x48')](',');return db['sequelize'][_0xcafb('0x49')](function(_0x389852){return db[_0xcafb('0x4a')][_0xcafb('0x4b')](_0x390cbf,{'raw':!![],'transaction':_0x389852})[_0xcafb('0x25')](function(_0x5ba164){var _0x4d7d3a={'sender':_0x390cbf[_0xcafb('0x40')],'description':_0x390cbf[_0xcafb('0x43')],'content':_0x390cbf['body'],'beep':_0x390cbf[_0xcafb('0x44')]};_0x1bee70[_0xcafb('0x4c')](function(_0x1fda8c){_0x4d7d3a[_0xcafb('0x4d')]=_0x1fda8c;socket[_0xcafb('0x4e')](_0xcafb('0x4f'),_0x4d7d3a);});return _0x5ba164;});});})[_0xcafb('0x25')](respondWithResult(_0x1f03f9,0xc9))['catch'](handleError(_0x1f03f9,null));};function getContent(_0x29521e){return new BPromise(function(_0xd735ff,_0x19f55d){if(_0x29521e[_0xcafb('0x50')]){_0xd735ff(_0x29521e['text']);return;}return db[_0xcafb('0x51')][_0xcafb('0x52')]({'attributes':[_0xcafb('0x53')],'where':{'id':_0x29521e[_0xcafb('0x2d')]},'raw':!![]})[_0xcafb('0x25')](function(_0x27b7b1){if(!_0x27b7b1)throw new db[(_0xcafb('0x31'))][(_0xcafb('0x2e'))](_0xcafb('0x54'));var _0x480a8b=Mustache[_0xcafb('0x55')](_0x27b7b1[_0xcafb('0x53')],_0x29521e['view']);_0xd735ff(_0x480a8b);})['catch'](function(_0x4c5dbc){_0x19f55d(_0x4c5dbc);});});}function getRecipients(_0x30f559){return new BPromise(function(_0x5312cd,_0x3c3c66){var _0x367fd2=[];var _0x521601=[];_0x30f559[_0xcafb('0x4c')](function(_0x4410db){var _0x571527=_[_0xcafb('0x56')](_0x4410db[_0xcafb('0x3d')][_0xcafb('0x3e')]());if(_0x571527==='User'){_0x367fd2=_['union'](_0x367fd2,_0x4410db[_0xcafb('0x57')]);}else{if(_[_0xcafb('0x3c')](_0x571527,'queue'))_0x571527=_0x571527[_0xcafb('0x58')](_0xcafb('0x59'),_0xcafb('0x5a'));_0x4410db[_0xcafb('0x57')]['forEach'](function(_0x2ad1dd){_0x521601['push'](getAgents(_0x571527,_0x2ad1dd));});}});return BPromise[_0xcafb('0x5b')](_0x521601)[_0xcafb('0x25')](function(_0x17196d){_0x367fd2=_['union'](_0x367fd2,_[_0xcafb('0x5c')](_0x17196d));_0x5312cd(_0x367fd2);})[_0xcafb('0x5d')](function(_0x37de92){_0x3c3c66(_0x37de92);});});}function getAgents(_0x101b54,_0x56f80d){return new BPromise(function(_0x321425,_0x5652c1){return db[_0x101b54][_0xcafb('0x52')]({'where':{'id':_0x56f80d}})['then'](function(_0x271070){return _0x271070[_0xcafb('0x5e')]({'attributes':['id'],'raw':!![]})[_0xcafb('0x25')](function(_0x56ce6b){var _0x12bf0b=_['map'](_0x56ce6b,'id');_0x321425(_0x12bf0b);});})[_0xcafb('0x5d')](function(_0x424e13){_0x5652c1(_0x424e13);});});}
\ No newline at end of file
+var _0x867b=['querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','localhost','socket.io-emitter','redis','./userNotification.socket','register','sendStatus','end','status','json','offset','limit','undefined','count','set','reject','update','then','destroy','error','stack','name','send','sendUserNotification','body','hasOwnProperty','text','TemplateId','Sequelize','view','ValidationError','Missing\x20\x27view\x27\x20parameter','recipients','Missing\x20\x27recipients\x27\x20parameter','parse','Invalid\x20\x27recipients\x27\x20object','faxqueue','mailqueue','openchannelqueue','smsqueue','whatsappqueue','team','user','includes','model','Invalid\x20model\x20in\x20\x27recipients\x27\x20object','senderName','fullname','recipientsDescription','isEmpty','beep','SenderId','recipientsId','sortBy','join','sequelize','UserNotification','create','forEach','recipient','emit','catch','Template','findOne','html','Invalid\x20\x27TemplateId\x27\x20parameter','toLowerCase','ids','queue','replace','Queue','all','union','flatten','getAgents','map','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','lodash','squel','jsforce','desk.js'];(function(_0x5ab2fe,_0x207f6d){var _0x525cc6=function(_0x2bce8a){while(--_0x2bce8a){_0x5ab2fe['push'](_0x5ab2fe['shift']());}};_0x525cc6(++_0x207f6d);}(_0x867b,0x188));var _0xb867=function(_0x300f81,_0x24e338){_0x300f81=_0x300f81-0x0;var _0x35b26f=_0x867b[_0x300f81];return _0x35b26f;};'use strict';var emlformat=require(_0xb867('0x0'));var rimraf=require(_0xb867('0x1'));var zipdir=require(_0xb867('0x2'));var jsonpatch=require(_0xb867('0x3'));var rp=require(_0xb867('0x4'));var moment=require(_0xb867('0x5'));var BPromise=require(_0xb867('0x6'));var Mustache=require(_0xb867('0x7'));var util=require('util');var path=require(_0xb867('0x8'));var sox=require(_0xb867('0x9'));var csv=require(_0xb867('0xa'));var ejs=require(_0xb867('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb867('0xc'));var squel=require(_0xb867('0xd'));var crypto=require('crypto');var jsforce=require(_0xb867('0xe'));var deskjs=require(_0xb867('0xf'));var toCsv=require(_0xb867('0xa'));var querystring=require(_0xb867('0x10'));var Papa=require('papaparse');var Redis=require(_0xb867('0x11'));var authService=require(_0xb867('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xb867('0x13'));var hardwareService=require(_0xb867('0x14'));var logger=require(_0xb867('0x15'))('api');var utils=require(_0xb867('0x16'));var config=require(_0xb867('0x17'));var licenseUtil=require(_0xb867('0x18'));var db=require(_0xb867('0x19'))['db'];config['redis']=_[_0xb867('0x1a')](config['redis'],{'host':_0xb867('0x1b'),'port':0x18eb});var socket=require(_0xb867('0x1c'))(new Redis(config[_0xb867('0x1d')]));require(_0xb867('0x1e'))[_0xb867('0x1f')](socket);function respondWithStatusCode(_0x26ea19,_0x67b47e){_0x67b47e=_0x67b47e||0xcc;return function(_0x1c3aa1){if(_0x1c3aa1){return _0x26ea19[_0xb867('0x20')](_0x67b47e);}return _0x26ea19['status'](_0x67b47e)[_0xb867('0x21')]();};}function respondWithResult(_0x53943d,_0x4adbad){_0x4adbad=_0x4adbad||0xc8;return function(_0x3c92b9){if(_0x3c92b9){return _0x53943d[_0xb867('0x22')](_0x4adbad)[_0xb867('0x23')](_0x3c92b9);}};}function respondWithFilteredResult(_0x52e57d,_0x334c68){return function(_0x552098){if(_0x552098){var _0x49b7fe=typeof _0x334c68[_0xb867('0x24')]==='undefined'&&typeof _0x334c68[_0xb867('0x25')]===_0xb867('0x26');var _0x87c313=_0x552098[_0xb867('0x27')];var _0x3d816b=_0x49b7fe?0x0:_0x334c68[_0xb867('0x24')];var _0xf804c1=_0x49b7fe?_0x552098[_0xb867('0x27')]:_0x334c68[_0xb867('0x24')]+_0x334c68[_0xb867('0x25')];var _0x2c0946;if(_0xf804c1>=_0x87c313){_0xf804c1=_0x87c313;_0x2c0946=0xc8;}else{_0x2c0946=0xce;}_0x52e57d['status'](_0x2c0946);return _0x52e57d[_0xb867('0x28')]('Content-Range',_0x3d816b+'-'+_0xf804c1+'/'+_0x87c313)[_0xb867('0x23')](_0x552098);}return null;};}function patchUpdates(_0x265abd){return function(_0x1163ef){try{jsonpatch['apply'](_0x1163ef,_0x265abd,!![]);}catch(_0x1b5a24){return BPromise[_0xb867('0x29')](_0x1b5a24);}return _0x1163ef['save']();};}function saveUpdates(_0x448af0,_0x4f1d54){return function(_0x68fbf9){if(_0x68fbf9){return _0x68fbf9[_0xb867('0x2a')](_0x448af0)[_0xb867('0x2b')](function(_0x18c72f){return _0x18c72f;});}return null;};}function removeEntity(_0x273c48,_0x4b82f1){return function(_0x1b81a5){if(_0x1b81a5){return _0x1b81a5[_0xb867('0x2c')]()[_0xb867('0x2b')](function(){_0x273c48[_0xb867('0x22')](0xcc)[_0xb867('0x21')]();});}};}function handleEntityNotFound(_0x2251a3,_0x3f5a8b){return function(_0x407199){if(!_0x407199){_0x2251a3[_0xb867('0x20')](0x194);}return _0x407199;};}function handleError(_0x3665cc,_0x18b45c){_0x18b45c=_0x18b45c||0x1f4;return function(_0x23e016){logger[_0xb867('0x2d')](_0x23e016[_0xb867('0x2e')]);if(_0x23e016[_0xb867('0x2f')]){delete _0x23e016[_0xb867('0x2f')];}_0x3665cc[_0xb867('0x22')](_0x18b45c)[_0xb867('0x30')](_0x23e016);};}exports[_0xb867('0x31')]=function(_0x327efc,_0x258681,_0x583207){if(!_0x327efc[_0xb867('0x32')][_0xb867('0x33')](_0xb867('0x34'))&&!_0x327efc[_0xb867('0x32')][_0xb867('0x33')](_0xb867('0x35'))){throw new db[(_0xb867('0x36'))]['ValidationError']('Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27');}else{if(_0x327efc['body']['hasOwnProperty'](_0xb867('0x35'))&&!_0x327efc[_0xb867('0x32')][_0xb867('0x33')](_0xb867('0x37'))){throw new db[(_0xb867('0x36'))][(_0xb867('0x38'))](_0xb867('0x39'));}if(!_0x327efc['body'][_0xb867('0x33')](_0xb867('0x3a'))){throw new db[(_0xb867('0x36'))][(_0xb867('0x38'))](_0xb867('0x3b'));}else{try{var _0x2b183b=JSON[_0xb867('0x3c')](_0x327efc[_0xb867('0x32')][_0xb867('0x3a')]);}catch(_0x38a9ce){logger['error'](_0x38a9ce);throw new db[(_0xb867('0x36'))][(_0xb867('0x38'))](_0xb867('0x3d'));}var _0x1e463a=['chatqueue',_0xb867('0x3e'),_0xb867('0x3f'),_0xb867('0x40'),_0xb867('0x41'),'voicequeue',_0xb867('0x42'),_0xb867('0x43'),_0xb867('0x44')];if(_['some'](_0x2b183b,function(_0x177081){return!_[_0xb867('0x45')](_0x1e463a,_0x177081[_0xb867('0x46')]['toLowerCase']());})){throw new db[(_0xb867('0x36'))]['ValidationError'](_0xb867('0x47'));}}}var _0x100b67={};_0x100b67[_0xb867('0x48')]=_0x327efc[_0xb867('0x32')][_0xb867('0x33')](_0xb867('0x48'))?_0x327efc[_0xb867('0x32')][_0xb867('0x48')]:_0x327efc[_0xb867('0x44')][_0xb867('0x49')];_0x100b67[_0xb867('0x4a')]=_[_0xb867('0x4b')](_0x327efc[_0xb867('0x32')][_0xb867('0x4a')])?null:_0x327efc[_0xb867('0x32')]['recipientsDescription'];_0x100b67[_0xb867('0x4c')]=_0x327efc[_0xb867('0x32')]['beep']||![];_0x100b67[_0xb867('0x4d')]=_0x327efc[_0xb867('0x44')]['id'];return getContent(_0x327efc[_0xb867('0x32')])[_0xb867('0x2b')](function(_0x35a2e6){_0x100b67[_0xb867('0x32')]=_0x35a2e6;return getRecipients(_0x2b183b);})[_0xb867('0x2b')](function(_0x1ef104){_0x100b67[_0xb867('0x4e')]=_[_0xb867('0x4f')](_0x1ef104)[_0xb867('0x50')](',');return db[_0xb867('0x51')]['transaction'](function(_0x2b5574){return db[_0xb867('0x52')][_0xb867('0x53')](_0x100b67,{'raw':!![],'transaction':_0x2b5574})[_0xb867('0x2b')](function(_0x2e3d60){var _0x558c4a={'sender':_0x100b67[_0xb867('0x48')],'description':_0x100b67[_0xb867('0x4a')],'content':_0x100b67[_0xb867('0x32')],'beep':_0x100b67[_0xb867('0x4c')]};_0x1ef104[_0xb867('0x54')](function(_0x4f1c4b){_0x558c4a[_0xb867('0x55')]=_0x4f1c4b;socket[_0xb867('0x56')]('userNotification:send',_0x558c4a);});return _0x2e3d60;});});})[_0xb867('0x2b')](respondWithResult(_0x258681,0xc9))[_0xb867('0x57')](handleError(_0x258681,null));};function getContent(_0x33b6cd){return new BPromise(function(_0x2c8da4,_0x40552a){if(_0x33b6cd[_0xb867('0x34')]){_0x2c8da4(_0x33b6cd[_0xb867('0x34')]);return;}return db[_0xb867('0x58')][_0xb867('0x59')]({'attributes':[_0xb867('0x5a')],'where':{'id':_0x33b6cd[_0xb867('0x35')]},'raw':!![]})[_0xb867('0x2b')](function(_0x549ee4){if(!_0x549ee4)throw new db[(_0xb867('0x36'))][(_0xb867('0x38'))](_0xb867('0x5b'));var _0x550bc9=Mustache['render'](_0x549ee4[_0xb867('0x5a')],_0x33b6cd[_0xb867('0x37')]);_0x2c8da4(_0x550bc9);})[_0xb867('0x57')](function(_0x66c026){_0x40552a(_0x66c026);});});}function getRecipients(_0x166b98){return new BPromise(function(_0xac78a9,_0x53d848){var _0x56448e=[];var _0xac5a94=[];_0x166b98['forEach'](function(_0x311c75){var _0x1feae7=_['startCase'](_0x311c75[_0xb867('0x46')][_0xb867('0x5c')]());if(_0x1feae7==='User'){_0x56448e=_['union'](_0x56448e,_0x311c75[_0xb867('0x5d')]);}else{if(_['includes'](_0x1feae7,_0xb867('0x5e')))_0x1feae7=_0x1feae7[_0xb867('0x5f')]('queue',_0xb867('0x60'));_0x311c75[_0xb867('0x5d')][_0xb867('0x54')](function(_0x49dab0){_0xac5a94['push'](getAgents(_0x1feae7,_0x49dab0));});}});return BPromise[_0xb867('0x61')](_0xac5a94)[_0xb867('0x2b')](function(_0x264898){_0x56448e=_[_0xb867('0x62')](_0x56448e,_[_0xb867('0x63')](_0x264898));_0xac78a9(_0x56448e);})[_0xb867('0x57')](function(_0x48700a){_0x53d848(_0x48700a);});});}function getAgents(_0x394be5,_0x30fbe5){return new BPromise(function(_0x432541,_0x221647){return db[_0x394be5][_0xb867('0x59')]({'where':{'id':_0x30fbe5}})[_0xb867('0x2b')](function(_0x3b4d81){return _0x3b4d81[_0xb867('0x64')]({'attributes':['id'],'raw':!![]})['then'](function(_0x127588){var _0x5d9d55=_[_0xb867('0x65')](_0x127588,'id');_0x432541(_0x5d9d55);});})[_0xb867('0x57')](function(_0x3c7980){_0x221647(_0x3c7980);});});}
\ No newline at end of file
index f0e7cbd..8bc936d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c25=['setMaxListeners','update','emit','hasOwnProperty','events','../../mysqldb'];(function(_0x141e03,_0x18340e){var _0x2074e3=function(_0x2b7ece){while(--_0x2b7ece){_0x141e03['push'](_0x141e03['shift']());}};_0x2074e3(++_0x18340e);}(_0x8c25,0x10c));var _0x58c2=function(_0xcfd3e0,_0x331ddc){_0xcfd3e0=_0xcfd3e0-0x0;var _0x268bfb=_0x8c25[_0xcfd3e0];return _0x268bfb;};'use strict';var EventEmitter=require(_0x58c2('0x0'));var UserNotification=require(_0x58c2('0x1'))['db']['UserNotification'];var UserNotificationEvents=new EventEmitter();UserNotificationEvents[_0x58c2('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x58c2('0x3'),'afterDestroy':'remove'};function emitEvent(_0x328204){return function(_0x1129ce,_0xe8721b,_0x33f10c){UserNotificationEvents[_0x58c2('0x4')](_0x328204+':'+_0x1129ce['id'],_0x1129ce);UserNotificationEvents[_0x58c2('0x4')](_0x328204,_0x1129ce);_0x33f10c(null);};}for(var e in events){if(events[_0x58c2('0x5')](e)){var event=events[e];UserNotification['hook'](e,emitEvent(event));}}module['exports']=UserNotificationEvents;
\ No newline at end of file
+var _0x3be7=['setMaxListeners','save','update','remove','emit','hook','exports','events','../../mysqldb','UserNotification'];(function(_0x4beb25,_0x257d7){var _0x7802a3=function(_0x513456){while(--_0x513456){_0x4beb25['push'](_0x4beb25['shift']());}};_0x7802a3(++_0x257d7);}(_0x3be7,0x6b));var _0x73be=function(_0x2882c2,_0x247c96){_0x2882c2=_0x2882c2-0x0;var _0x37cd78=_0x3be7[_0x2882c2];return _0x37cd78;};'use strict';var EventEmitter=require(_0x73be('0x0'));var UserNotification=require(_0x73be('0x1'))['db'][_0x73be('0x2')];var UserNotificationEvents=new EventEmitter();UserNotificationEvents[_0x73be('0x3')](0x0);var events={'afterCreate':_0x73be('0x4'),'afterUpdate':_0x73be('0x5'),'afterDestroy':_0x73be('0x6')};function emitEvent(_0x308e27){return function(_0x295a90,_0x3ee01b,_0x29188e){UserNotificationEvents[_0x73be('0x7')](_0x308e27+':'+_0x295a90['id'],_0x295a90);UserNotificationEvents[_0x73be('0x7')](_0x308e27,_0x295a90);_0x29188e(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];UserNotification[_0x73be('0x8')](e,emitEvent(event));}}module[_0x73be('0x9')]=UserNotificationEvents;
\ No newline at end of file
index ca24180..e69fca9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8439=['exports','define','UserNotification','userNotifications','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','bluebird','request-promise','path','../../config/environment'];(function(_0x168cf7,_0x5e950e){var _0x52ebcc=function(_0x10b5e5){while(--_0x10b5e5){_0x168cf7['push'](_0x168cf7['shift']());}};_0x52ebcc(++_0x5e950e);}(_0x8439,0x18b));var _0x9843=function(_0x46698a,_0x8de1e4){_0x46698a=_0x46698a-0x0;var _0x356db0=_0x8439[_0x46698a];return _0x356db0;};'use strict';var _=require(_0x9843('0x0'));var util=require(_0x9843('0x1'));var logger=require(_0x9843('0x2'))(_0x9843('0x3'));var moment=require('moment');var BPromise=require(_0x9843('0x4'));var rp=require(_0x9843('0x5'));var fs=require('fs');var path=require(_0x9843('0x6'));var rimraf=require('rimraf');var config=require(_0x9843('0x7'));var attributes=require('./userNotification.attributes');module[_0x9843('0x8')]=function(_0xf700d7,_0x432e0b){return _0xf700d7[_0x9843('0x9')](_0x9843('0xa'),attributes,{'tableName':_0x9843('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x9843('0xc')});};
\ No newline at end of file
+var _0x2e21=['define','UserNotification','userNotifications','utf8mb4','lodash','util','../../config/logger','moment','request-promise','path','rimraf','../../config/environment','./userNotification.attributes','exports'];(function(_0x3a07bb,_0xb6abd1){var _0x595640=function(_0x198b2b){while(--_0x198b2b){_0x3a07bb['push'](_0x3a07bb['shift']());}};_0x595640(++_0xb6abd1);}(_0x2e21,0xba));var _0x12e2=function(_0x36cf14,_0x118f83){_0x36cf14=_0x36cf14-0x0;var _0x5778c0=_0x2e21[_0x36cf14];return _0x5778c0;};'use strict';var _=require(_0x12e2('0x0'));var util=require(_0x12e2('0x1'));var logger=require(_0x12e2('0x2'))('api');var moment=require(_0x12e2('0x3'));var BPromise=require('bluebird');var rp=require(_0x12e2('0x4'));var fs=require('fs');var path=require(_0x12e2('0x5'));var rimraf=require(_0x12e2('0x6'));var config=require(_0x12e2('0x7'));var attributes=require(_0x12e2('0x8'));module[_0x12e2('0x9')]=function(_0x1f4783,_0x1227dc){return _0x1f4783[_0x12e2('0xa')](_0x12e2('0xb'),attributes,{'tableName':_0x12e2('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x12e2('0xd'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index cf38cf0..c12067f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2714=['register','then','debug','UserNotification,\x20%s,\x20%s,\x20%s','stringify','error','message','UserNotification,\x20%s,\x20%s','info','request\x20sent','catch','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter'];(function(_0x787d44,_0x36fea9){var _0x1c1430=function(_0x18bcd6){while(--_0x18bcd6){_0x787d44['push'](_0x787d44['shift']());}};_0x1c1430(++_0x36fea9);}(_0x2714,0x12b));var _0x4271=function(_0x260c72,_0x199c24){_0x260c72=_0x260c72-0x0;var _0x552a11=_0x2714[_0x260c72];return _0x552a11;};'use strict';var _=require('lodash');var util=require(_0x4271('0x0'));var moment=require(_0x4271('0x1'));var BPromise=require(_0x4271('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4271('0x3'))['db'];var utils=require(_0x4271('0x4'));var logger=require(_0x4271('0x5'))('rpc');var config=require(_0x4271('0x6'));var jayson=require(_0x4271('0x7'));var client=jayson[_0x4271('0x8')][_0x4271('0x9')]({'port':0x232a});config[_0x4271('0xa')]=_['defaults'](config['redis'],{'host':_0x4271('0xb'),'port':0x18eb});var socket=require(_0x4271('0xc'))(new Redis(config['redis']));require('./userNotification.socket')[_0x4271('0xd')](socket);function respondWithRpcPromise(_0xff026,_0x142bf4,_0x41f033){return new BPromise(function(_0x23010b,_0x16a82c){return client['request'](_0xff026,_0x41f033)[_0x4271('0xe')](function(_0x5e0e45){logger['info']('UserNotification,\x20%s,\x20%s',_0x142bf4,'request\x20sent');logger[_0x4271('0xf')](_0x4271('0x10'),_0x142bf4,'request\x20sent',JSON[_0x4271('0x11')](_0x5e0e45));if(_0x5e0e45['error']){if(_0x5e0e45[_0x4271('0x12')]['code']===0x1f4){logger[_0x4271('0x12')]('UserNotification,\x20%s,\x20%s',_0x142bf4,_0x5e0e45[_0x4271('0x12')][_0x4271('0x13')]);return _0x16a82c(_0x5e0e45[_0x4271('0x12')][_0x4271('0x13')]);}logger[_0x4271('0x12')](_0x4271('0x14'),_0x142bf4,_0x5e0e45[_0x4271('0x12')][_0x4271('0x13')]);return _0x23010b(_0x5e0e45[_0x4271('0x12')][_0x4271('0x13')]);}else{logger[_0x4271('0x15')](_0x4271('0x14'),_0x142bf4,_0x4271('0x16'));_0x23010b(_0x5e0e45['result'][_0x4271('0x13')]);}})[_0x4271('0x17')](function(_0x8fa148){logger[_0x4271('0x12')]('UserNotification,\x20%s,\x20%s',_0x142bf4,_0x8fa148);_0x16a82c(_0x8fa148);});});}
\ No newline at end of file
+var _0xd504=['UserNotification,\x20%s,\x20%s','request\x20sent','UserNotification,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','defaults','redis','localhost','socket.io-emitter','./userNotification.socket','info'];(function(_0x573972,_0x308c5f){var _0x3b012b=function(_0x403755){while(--_0x403755){_0x573972['push'](_0x573972['shift']());}};_0x3b012b(++_0x308c5f);}(_0xd504,0x6d));var _0x4d50=function(_0x20ef64,_0x4a8fe9){_0x20ef64=_0x20ef64-0x0;var _0x3707d8=_0xd504[_0x20ef64];return _0x3707d8;};'use strict';var _=require(_0x4d50('0x0'));var util=require(_0x4d50('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x4d50('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4d50('0x3'))['db'];var utils=require(_0x4d50('0x4'));var logger=require(_0x4d50('0x5'))(_0x4d50('0x6'));var config=require(_0x4d50('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x4d50('0x8')][_0x4d50('0x9')]({'port':0x232a});config['redis']=_[_0x4d50('0xa')](config[_0x4d50('0xb')],{'host':_0x4d50('0xc'),'port':0x18eb});var socket=require(_0x4d50('0xd'))(new Redis(config[_0x4d50('0xb')]));require(_0x4d50('0xe'))['register'](socket);function respondWithRpcPromise(_0x39fa09,_0x1b55a7,_0x2448b0){return new BPromise(function(_0x3cb6f9,_0x17ac91){return client['request'](_0x39fa09,_0x2448b0)['then'](function(_0x23a545){logger[_0x4d50('0xf')](_0x4d50('0x10'),_0x1b55a7,_0x4d50('0x11'));logger['debug'](_0x4d50('0x12'),_0x1b55a7,_0x4d50('0x11'),JSON[_0x4d50('0x13')](_0x23a545));if(_0x23a545[_0x4d50('0x14')]){if(_0x23a545[_0x4d50('0x14')][_0x4d50('0x15')]===0x1f4){logger[_0x4d50('0x14')](_0x4d50('0x10'),_0x1b55a7,_0x23a545[_0x4d50('0x14')]['message']);return _0x17ac91(_0x23a545[_0x4d50('0x14')][_0x4d50('0x16')]);}logger['error'](_0x4d50('0x10'),_0x1b55a7,_0x23a545['error'][_0x4d50('0x16')]);return _0x3cb6f9(_0x23a545['error'][_0x4d50('0x16')]);}else{logger[_0x4d50('0xf')](_0x4d50('0x10'),_0x1b55a7,'request\x20sent');_0x3cb6f9(_0x23a545[_0x4d50('0x17')][_0x4d50('0x16')]);}})[_0x4d50('0x18')](function(_0x4f5e33){logger[_0x4d50('0x14')](_0x4d50('0x10'),_0x1b55a7,_0x4f5e33);_0x17ac91(_0x4f5e33);});});}
\ No newline at end of file
index 89f2552..4425bbb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a43=['register','length','userNotification:','./userNotification.events','save','remove','update','emit','removeListener'];(function(_0x3024ca,_0x3ba56c){var _0x2c9e32=function(_0x3d15dc){while(--_0x3d15dc){_0x3024ca['push'](_0x3024ca['shift']());}};_0x2c9e32(++_0x3ba56c);}(_0x2a43,0x1b3));var _0x32a4=function(_0x2859ff,_0x1e3250){_0x2859ff=_0x2859ff-0x0;var _0x2ba5d6=_0x2a43[_0x2859ff];return _0x2ba5d6;};'use strict';var UserNotificationEvents=require(_0x32a4('0x0'));var events=[_0x32a4('0x1'),_0x32a4('0x2'),_0x32a4('0x3')];function createListener(_0x2bca0b,_0x410c4d){return function(_0x24ec00){_0x410c4d[_0x32a4('0x4')](_0x2bca0b,_0x24ec00);};}function removeListener(_0x320390,_0x9b108a){return function(){UserNotificationEvents[_0x32a4('0x5')](_0x320390,_0x9b108a);};}exports[_0x32a4('0x6')]=function(_0x53f4d2){for(var _0x88d121=0x0,_0x38079d=events[_0x32a4('0x7')];_0x88d121<_0x38079d;_0x88d121++){var _0xea4bff=events[_0x88d121];var _0x14bbbf=createListener(_0x32a4('0x8')+_0xea4bff,_0x53f4d2);UserNotificationEvents['on'](_0xea4bff,_0x14bbbf);}};
\ No newline at end of file
+var _0xc850=['register','./userNotification.events','remove','emit'];(function(_0x4926f5,_0x110796){var _0x1f076d=function(_0x4801c4){while(--_0x4801c4){_0x4926f5['push'](_0x4926f5['shift']());}};_0x1f076d(++_0x110796);}(_0xc850,0xfd));var _0x0c85=function(_0x500a1f,_0x14745f){_0x500a1f=_0x500a1f-0x0;var _0x2f5bd7=_0xc850[_0x500a1f];return _0x2f5bd7;};'use strict';var UserNotificationEvents=require(_0x0c85('0x0'));var events=['save',_0x0c85('0x1'),'update'];function createListener(_0x450ec6,_0xf4618){return function(_0x431b11){_0xf4618[_0x0c85('0x2')](_0x450ec6,_0x431b11);};}function removeListener(_0x2916bc,_0x732728){return function(){UserNotificationEvents['removeListener'](_0x2916bc,_0x732728);};}exports[_0x0c85('0x3')]=function(_0x187d33){for(var _0x5496cc=0x0,_0x2fec74=events['length'];_0x5496cc<_0x2fec74;_0x5496cc++){var _0x37a91a=events[_0x5496cc];var _0x40b82d=createListener('userNotification:'+_0x37a91a,_0x187d33);UserNotificationEvents['on'](_0x37a91a,_0x40b82d);}};
\ No newline at end of file
index edee75c..11049f9 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(_0x155506,_0x202f81){var _0x14b973=function(_0x560bd2){while(--_0x560bd2){_0x155506['push'](_0x155506['shift']());}};_0x14b973(++_0x202f81);}(_0x9c44,0x178));var _0x49c4=function(_0x36c5b0,_0x5001da){_0x36c5b0=_0x36c5b0-0x0;var _0xf19333=_0x9c44[_0x36c5b0];return _0xf19333;};'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 _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','multer','util'];(function(_0x20732f,_0x147fbc){var _0x5c3d7b=function(_0x168cc6){while(--_0x168cc6){_0x20732f['push'](_0x20732f['shift']());}};_0x5c3d7b(++_0x147fbc);}(_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
index 670b2e4..563289b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x73e1=['exports','sequelize'];(function(_0x56d7a8,_0x2937bf){var _0x16e1a3=function(_0x214641){while(--_0x214641){_0x56d7a8['push'](_0x56d7a8['shift']());}};_0x16e1a3(++_0x2937bf);}(_0x73e1,0x133));var _0x173e=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x73e1[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x173e('0x0'));module[_0x173e('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x130b=['sequelize','exports','INTEGER'];(function(_0xbd8870,_0x4d6d2f){var _0x50c625=function(_0x34ed86){while(--_0x34ed86){_0xbd8870['push'](_0xbd8870['shift']());}};_0x50c625(++_0x4d6d2f);}(_0x130b,0x1b6));var _0xb130=function(_0x47aa64,_0xfb8a07){_0x47aa64=_0x47aa64-0x0;var _0x549c7a=_0x130b[_0x47aa64];return _0x549c7a;};'use strict';var Sequelize=require(_0xb130('0x0'));module[_0xb130('0x1')]={'penalty':{'type':Sequelize[_0xb130('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 0ecbd01..4cfa91d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb4e=['request-promise','path','rimraf','exports','UserOpenchannelQueue','lodash','util','../../config/logger','api'];(function(_0x539df7,_0x1c028d){var _0x180d2a=function(_0x49e457){while(--_0x49e457){_0x539df7['push'](_0x539df7['shift']());}};_0x180d2a(++_0x1c028d);}(_0xfb4e,0x1be));var _0xefb4=function(_0x3e9ec6,_0x694640){_0x3e9ec6=_0x3e9ec6-0x0;var _0x29e452=_0xfb4e[_0x3e9ec6];return _0x29e452;};'use strict';var _=require(_0xefb4('0x0'));var util=require(_0xefb4('0x1'));var logger=require(_0xefb4('0x2'))(_0xefb4('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xefb4('0x4'));var fs=require('fs');var path=require(_0xefb4('0x5'));var rimraf=require(_0xefb4('0x6'));var config=require('../../config/environment');var attributes=require('./userOpenchannelQueue.attributes');module[_0xefb4('0x7')]=function(_0x1b94cf,_0x2b61ae){return _0x1b94cf['define'](_0xefb4('0x8'),attributes,{'tableName':'user_has_openchannel_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5bd1=['path','rimraf','../../config/environment','./userOpenchannelQueue.attributes','exports','define','UserOpenchannelQueue','user_has_openchannel_queues','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0x5bd1,0x19d));var _0x15bd=function(_0x138f59,_0x1b53fb){_0x138f59=_0x138f59-0x0;var _0x3d114d=_0x5bd1[_0x138f59];return _0x3d114d;};'use strict';var _=require(_0x15bd('0x0'));var util=require(_0x15bd('0x1'));var logger=require(_0x15bd('0x2'))(_0x15bd('0x3'));var moment=require(_0x15bd('0x4'));var BPromise=require(_0x15bd('0x5'));var rp=require(_0x15bd('0x6'));var fs=require('fs');var path=require(_0x15bd('0x7'));var rimraf=require(_0x15bd('0x8'));var config=require(_0x15bd('0x9'));var attributes=require(_0x15bd('0xa'));module[_0x15bd('0xb')]=function(_0x1ded2e,_0x461413){return _0x1ded2e[_0x15bd('0xc')](_0x15bd('0xd'),attributes,{'tableName':_0x15bd('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e09ca42..87c68aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3743=['UserOpenchannelQueue,\x20%s,\x20%s','debug','UserOpenchannelQueue,\x20%s,\x20%s,\x20%s','request\x20sent','error','message','result','catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','then','info'];(function(_0x39aedf,_0x2f5df8){var _0x39356c=function(_0x1411c9){while(--_0x1411c9){_0x39aedf['push'](_0x39aedf['shift']());}};_0x39356c(++_0x2f5df8);}(_0x3743,0xd0));var _0x3374=function(_0x2642cb,_0x4b917f){_0x2642cb=_0x2642cb-0x0;var _0xe6e41=_0x3743[_0x2642cb];return _0xe6e41;};'use strict';var _=require(_0x3374('0x0'));var util=require('util');var moment=require(_0x3374('0x1'));var BPromise=require(_0x3374('0x2'));var rs=require(_0x3374('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3374('0x4'))['db'];var utils=require(_0x3374('0x5'));var logger=require(_0x3374('0x6'))(_0x3374('0x7'));var config=require('../../config/environment');var jayson=require(_0x3374('0x8'));var client=jayson[_0x3374('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5bce66,_0xc96d53,_0x6c26c0){return new BPromise(function(_0x38c415,_0x2025a5){return client['request'](_0x5bce66,_0x6c26c0)[_0x3374('0xa')](function(_0x7b5ae3){logger[_0x3374('0xb')](_0x3374('0xc'),_0xc96d53,'request\x20sent');logger[_0x3374('0xd')](_0x3374('0xe'),_0xc96d53,_0x3374('0xf'),JSON['stringify'](_0x7b5ae3));if(_0x7b5ae3[_0x3374('0x10')]){if(_0x7b5ae3['error']['code']===0x1f4){logger[_0x3374('0x10')](_0x3374('0xc'),_0xc96d53,_0x7b5ae3[_0x3374('0x10')][_0x3374('0x11')]);return _0x2025a5(_0x7b5ae3[_0x3374('0x10')]['message']);}logger[_0x3374('0x10')](_0x3374('0xc'),_0xc96d53,_0x7b5ae3[_0x3374('0x10')][_0x3374('0x11')]);return _0x38c415(_0x7b5ae3['error'][_0x3374('0x11')]);}else{logger[_0x3374('0xb')]('UserOpenchannelQueue,\x20%s,\x20%s',_0xc96d53,'request\x20sent');_0x38c415(_0x7b5ae3[_0x3374('0x12')][_0x3374('0x11')]);}})[_0x3374('0x13')](function(_0xa302d8){logger[_0x3374('0x10')](_0x3374('0xc'),_0xc96d53,_0xa302d8);_0x2025a5(_0xa302d8);});});}
\ No newline at end of file
+var _0xcfaa=['lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','UserOpenchannelQueue,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','catch'];(function(_0x2f87e3,_0x2ddeb4){var _0x2b34ea=function(_0x29d4b0){while(--_0x29d4b0){_0x2f87e3['push'](_0x2f87e3['shift']());}};_0x2b34ea(++_0x2ddeb4);}(_0xcfaa,0xdc));var _0xacfa=function(_0x1bf441,_0x49f64b){_0x1bf441=_0x1bf441-0x0;var _0x4d7eee=_0xcfaa[_0x1bf441];return _0x4d7eee;};'use strict';var _=require(_0xacfa('0x0'));var util=require(_0xacfa('0x1'));var moment=require(_0xacfa('0x2'));var BPromise=require(_0xacfa('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xacfa('0x4'));var db=require(_0xacfa('0x5'))['db'];var utils=require(_0xacfa('0x6'));var logger=require('../../config/logger')(_0xacfa('0x7'));var config=require(_0xacfa('0x8'));var jayson=require(_0xacfa('0x9'));var client=jayson[_0xacfa('0xa')][_0xacfa('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x54ba21,_0x5d33c7,_0x12ba2a){return new BPromise(function(_0x539857,_0x4eaf0e){return client[_0xacfa('0xc')](_0x54ba21,_0x12ba2a)['then'](function(_0x25276a){logger['info'](_0xacfa('0xd'),_0x5d33c7,_0xacfa('0xe'));logger[_0xacfa('0xf')]('UserOpenchannelQueue,\x20%s,\x20%s,\x20%s',_0x5d33c7,_0xacfa('0xe'),JSON[_0xacfa('0x10')](_0x25276a));if(_0x25276a[_0xacfa('0x11')]){if(_0x25276a[_0xacfa('0x11')][_0xacfa('0x12')]===0x1f4){logger[_0xacfa('0x11')](_0xacfa('0xd'),_0x5d33c7,_0x25276a['error'][_0xacfa('0x13')]);return _0x4eaf0e(_0x25276a[_0xacfa('0x11')][_0xacfa('0x13')]);}logger[_0xacfa('0x11')]('UserOpenchannelQueue,\x20%s,\x20%s',_0x5d33c7,_0x25276a[_0xacfa('0x11')]['message']);return _0x539857(_0x25276a[_0xacfa('0x11')][_0xacfa('0x13')]);}else{logger[_0xacfa('0x14')](_0xacfa('0xd'),_0x5d33c7,'request\x20sent');_0x539857(_0x25276a['result'][_0xacfa('0x13')]);}})[_0xacfa('0x15')](function(_0x50a804){logger[_0xacfa('0x11')]('UserOpenchannelQueue,\x20%s,\x20%s',_0x5d33c7,_0x50a804);_0x4eaf0e(_0x50a804);});});}
\ No newline at end of file
index 89ac5b0..ce99a0e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5cd5=['../../config/environment','./userProfile.controller','get','isAuthenticated','/:id','/:id/sections','getSections','/:id/resources','post','/:id/clone','clone','addResources','put','update','delete','removeSections','removeResources','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service'];(function(_0x5e9e3d,_0x567718){var _0x579c2c=function(_0xc24425){while(--_0xc24425){_0x5e9e3d['push'](_0x5e9e3d['shift']());}};_0x579c2c(++_0x567718);}(_0x5cd5,0x10b));var _0x55cd=function(_0x45b9cd,_0x5caca1){_0x45b9cd=_0x45b9cd-0x0;var _0x468d3c=_0x5cd5[_0x45b9cd];return _0x468d3c;};'use strict';var multer=require(_0x55cd('0x0'));var util=require(_0x55cd('0x1'));var path=require(_0x55cd('0x2'));var timeout=require(_0x55cd('0x3'));var express=require(_0x55cd('0x4'));var router=express[_0x55cd('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x55cd('0x6'));var interaction=require(_0x55cd('0x7'));var config=require(_0x55cd('0x8'));var controller=require(_0x55cd('0x9'));router[_0x55cd('0xa')]('/',auth[_0x55cd('0xb')](),controller['index']);router[_0x55cd('0xa')]('/describe',auth[_0x55cd('0xb')](),controller['describe']);router[_0x55cd('0xa')](_0x55cd('0xc'),auth[_0x55cd('0xb')](),controller['show']);router['get'](_0x55cd('0xd'),auth[_0x55cd('0xb')](),controller[_0x55cd('0xe')]);router[_0x55cd('0xa')](_0x55cd('0xf'),auth[_0x55cd('0xb')](),controller['getResources']);router['post']('/',auth[_0x55cd('0xb')](),controller['create']);router[_0x55cd('0x10')](_0x55cd('0x11'),auth['isAuthenticated'](),controller[_0x55cd('0x12')]);router['post']('/:id/sections',auth[_0x55cd('0xb')](),controller['addSections']);router[_0x55cd('0x10')](_0x55cd('0xf'),auth[_0x55cd('0xb')](),controller[_0x55cd('0x13')]);router[_0x55cd('0x14')](_0x55cd('0xc'),auth['isAuthenticated'](),controller[_0x55cd('0x15')]);router[_0x55cd('0x16')](_0x55cd('0xc'),auth[_0x55cd('0xb')](),controller['destroy']);router[_0x55cd('0x16')](_0x55cd('0xd'),auth['isAuthenticated'](),controller[_0x55cd('0x17')]);router[_0x55cd('0x16')](_0x55cd('0xf'),auth[_0x55cd('0xb')](),controller[_0x55cd('0x18')]);module['exports']=router;
\ No newline at end of file
+var _0xd2dd=['/:id/resources','getResources','post','clone','addSections','addResources','put','update','delete','removeResources','exports','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','get','/describe','isAuthenticated','/:id','show','/:id/sections','getSections'];(function(_0xf5122b,_0xe143b0){var _0x24c6af=function(_0x44ed94){while(--_0x44ed94){_0xf5122b['push'](_0xf5122b['shift']());}};_0x24c6af(++_0xe143b0);}(_0xd2dd,0x83));var _0xdd2d=function(_0x457a43,_0x374e96){_0x457a43=_0x457a43-0x0;var _0x2c5dbf=_0xd2dd[_0x457a43];return _0x2c5dbf;};'use strict';var multer=require(_0xdd2d('0x0'));var util=require(_0xdd2d('0x1'));var path=require('path');var timeout=require(_0xdd2d('0x2'));var express=require(_0xdd2d('0x3'));var router=express['Router']();var fs_extra=require(_0xdd2d('0x4'));var auth=require(_0xdd2d('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./userProfile.controller');router[_0xdd2d('0x6')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0xdd2d('0x7'),auth[_0xdd2d('0x8')](),controller['describe']);router[_0xdd2d('0x6')](_0xdd2d('0x9'),auth[_0xdd2d('0x8')](),controller[_0xdd2d('0xa')]);router[_0xdd2d('0x6')](_0xdd2d('0xb'),auth[_0xdd2d('0x8')](),controller[_0xdd2d('0xc')]);router[_0xdd2d('0x6')](_0xdd2d('0xd'),auth[_0xdd2d('0x8')](),controller[_0xdd2d('0xe')]);router['post']('/',auth[_0xdd2d('0x8')](),controller['create']);router[_0xdd2d('0xf')]('/:id/clone',auth[_0xdd2d('0x8')](),controller[_0xdd2d('0x10')]);router[_0xdd2d('0xf')](_0xdd2d('0xb'),auth[_0xdd2d('0x8')](),controller[_0xdd2d('0x11')]);router[_0xdd2d('0xf')](_0xdd2d('0xd'),auth['isAuthenticated'](),controller[_0xdd2d('0x12')]);router[_0xdd2d('0x13')](_0xdd2d('0x9'),auth[_0xdd2d('0x8')](),controller[_0xdd2d('0x14')]);router[_0xdd2d('0x15')](_0xdd2d('0x9'),auth['isAuthenticated'](),controller['destroy']);router['delete']('/:id/sections',auth[_0xdd2d('0x8')](),controller['removeSections']);router[_0xdd2d('0x15')](_0xdd2d('0xd'),auth[_0xdd2d('0x8')](),controller[_0xdd2d('0x16')]);module[_0xdd2d('0x17')]=router;
\ No newline at end of file
index f028c37..4356256 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x51fb=['STRING','setDataValue','crudPermissions','getDataValue','split','BOOLEAN','sequelize','name'];(function(_0x468b0f,_0x408566){var _0x3e74d9=function(_0x27a545){while(--_0x27a545){_0x468b0f['push'](_0x468b0f['shift']());}};_0x3e74d9(++_0x408566);}(_0x51fb,0x96));var _0xb51f=function(_0x1cd6af,_0xab7193){_0x1cd6af=_0x1cd6af-0x0;var _0x4a2b1a=_0x51fb[_0x1cd6af];return _0x4a2b1a;};'use strict';var Sequelize=require(_0xb51f('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xb51f('0x1')},'crudPermissions':{'type':Sequelize[_0xb51f('0x2')],'set':function(_0xf2899c){this[_0xb51f('0x3')](_0xb51f('0x4'),_0xf2899c?_0xf2899c['join'](''):[]);},'get':function(){return this[_0xb51f('0x5')]('crudPermissions')?this[_0xb51f('0x5')](_0xb51f('0x4'))[_0xb51f('0x6')](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize[_0xb51f('0x2')],'allowNull':!![]},'privacyEnabled':{'type':Sequelize[_0xb51f('0x7')],'defaultValue':![]},'downloadAttachments':{'type':Sequelize[_0xb51f('0x7')],'defaultValue':!![]},'downloadCallySquareRecordings':{'type':Sequelize[_0xb51f('0x7')],'defaultValue':!![]},'downloadContactManagerLists':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadJscriptySessions':{'type':Sequelize[_0xb51f('0x7')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadScreenRecordings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
+var _0xa504=['BOOLEAN','sequelize','STRING','name','crudPermissions','join','getDataValue','split'];(function(_0xe68486,_0x5bc92e){var _0x3733ee=function(_0x1009ca){while(--_0x1009ca){_0xe68486['push'](_0xe68486['shift']());}};_0x3733ee(++_0x5bc92e);}(_0xa504,0x159));var _0x4a50=function(_0x19d3c1,_0x1c3828){_0x19d3c1=_0x19d3c1-0x0;var _0x3315d5=_0xa504[_0x19d3c1];return _0x3315d5;};'use strict';var Sequelize=require(_0x4a50('0x0'));module['exports']={'name':{'type':Sequelize[_0x4a50('0x1')],'allowNull':![],'unique':_0x4a50('0x2')},'crudPermissions':{'type':Sequelize[_0x4a50('0x1')],'set':function(_0x16f494){this['setDataValue'](_0x4a50('0x3'),_0x16f494?_0x16f494[_0x4a50('0x4')](''):[]);},'get':function(){return this[_0x4a50('0x5')](_0x4a50('0x3'))?this[_0x4a50('0x5')](_0x4a50('0x3'))[_0x4a50('0x6')](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize['STRING'],'allowNull':!![]},'privacyEnabled':{'type':Sequelize[_0x4a50('0x7')],'defaultValue':![]},'downloadAttachments':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadCallySquareRecordings':{'type':Sequelize[_0x4a50('0x7')],'defaultValue':!![]},'downloadContactManagerLists':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadJscriptySessions':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0x4a50('0x7')],'defaultValue':!![]},'downloadScreenRecordings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x4a50('0x7')],'defaultValue':!![]}};
\ No newline at end of file
index c517632..7c9c36a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f2f=['name','send','index','map','UserProfile','rawAttributes','fieldName','type','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','catch','show','params','find','create','body','clone','get','omit','createdAt','updatedAt','crudPermissions','sequelize','transaction','UserProfileSection','each','autoAssociation','UserProfileResource','findAll','userProfileId','Resources','destroy','addSections','sectionId','push','getSections','enabled','includes','isEmpty','subsections','concat','findOne','forEach','resourceId','Plugin','addResources','bulkCreate','removeResources','ids','section','Missing\x20section\x20parameter','getResources','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','localhost','redis','./userProfile.socket','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','stack'];(function(_0xfdd1b0,_0x3c29ea){var _0x394105=function(_0x13b93f){while(--_0x13b93f){_0xfdd1b0['push'](_0xfdd1b0['shift']());}};_0x394105(++_0x3c29ea);}(_0x4f2f,0x120));var _0xf4f2=function(_0x1fc122,_0x5e2c17){_0x1fc122=_0x1fc122-0x0;var _0xa2cb13=_0x4f2f[_0x1fc122];return _0xa2cb13;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xf4f2('0x0'));var rp=require(_0xf4f2('0x1'));var moment=require(_0xf4f2('0x2'));var BPromise=require('bluebird');var Mustache=require(_0xf4f2('0x3'));var util=require(_0xf4f2('0x4'));var path=require(_0xf4f2('0x5'));var sox=require(_0xf4f2('0x6'));var csv=require(_0xf4f2('0x7'));var ejs=require(_0xf4f2('0x8'));var fs=require('fs');var fs_extra=require(_0xf4f2('0x9'));var _=require(_0xf4f2('0xa'));var squel=require(_0xf4f2('0xb'));var crypto=require(_0xf4f2('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xf4f2('0xd'));var toCsv=require(_0xf4f2('0x7'));var querystring=require(_0xf4f2('0xe'));var Papa=require('papaparse');var Redis=require(_0xf4f2('0xf'));var authService=require(_0xf4f2('0x10'));var qs=require(_0xf4f2('0x11'));var as=require(_0xf4f2('0x12'));var hardwareService=require(_0xf4f2('0x13'));var logger=require(_0xf4f2('0x14'))(_0xf4f2('0x15'));var utils=require(_0xf4f2('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xf4f2('0x17'))['db'];config['redis']=_['defaults'](config['redis'],{'host':_0xf4f2('0x18'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xf4f2('0x19')]));require(_0xf4f2('0x1a'))['register'](socket);function respondWithStatusCode(_0x469adf,_0x1cf93e){_0x1cf93e=_0x1cf93e||0xcc;return function(_0x5e75f7){if(_0x5e75f7){return _0x469adf['sendStatus'](_0x1cf93e);}return _0x469adf[_0xf4f2('0x1b')](_0x1cf93e)[_0xf4f2('0x1c')]();};}function respondWithResult(_0x172cae,_0x389693){_0x389693=_0x389693||0xc8;return function(_0x53804b){if(_0x53804b){return _0x172cae['status'](_0x389693)[_0xf4f2('0x1d')](_0x53804b);}};}function respondWithFilteredResult(_0x287ab1,_0x71fc3a){return function(_0xc4f266){if(_0xc4f266){var _0x2cb4d9=typeof _0x71fc3a[_0xf4f2('0x1e')]===_0xf4f2('0x1f')&&typeof _0x71fc3a[_0xf4f2('0x20')]===_0xf4f2('0x1f');var _0xe3cbc7=_0xc4f266[_0xf4f2('0x21')];var _0x1e8eb3=_0x2cb4d9?0x0:_0x71fc3a[_0xf4f2('0x1e')];var _0x4ba893=_0x2cb4d9?_0xc4f266[_0xf4f2('0x21')]:_0x71fc3a['offset']+_0x71fc3a[_0xf4f2('0x20')];var _0x3ec89a;if(_0x4ba893>=_0xe3cbc7){_0x4ba893=_0xe3cbc7;_0x3ec89a=0xc8;}else{_0x3ec89a=0xce;}_0x287ab1[_0xf4f2('0x1b')](_0x3ec89a);return _0x287ab1[_0xf4f2('0x22')](_0xf4f2('0x23'),_0x1e8eb3+'-'+_0x4ba893+'/'+_0xe3cbc7)[_0xf4f2('0x1d')](_0xc4f266);}return null;};}function patchUpdates(_0x8da0f7){return function(_0x358d37){try{jsonpatch[_0xf4f2('0x24')](_0x358d37,_0x8da0f7,!![]);}catch(_0x3ed090){return BPromise[_0xf4f2('0x25')](_0x3ed090);}return _0x358d37[_0xf4f2('0x26')]();};}function saveUpdates(_0x75dfee,_0x3abfe4){return function(_0x4b0eab){if(_0x4b0eab){return _0x4b0eab[_0xf4f2('0x27')](_0x75dfee)[_0xf4f2('0x28')](function(_0xe31fca){return _0xe31fca;});}return null;};}function removeEntity(_0x53d089,_0x3df1df){return function(_0x243217){if(_0x243217){return _0x243217['destroy']()[_0xf4f2('0x28')](function(){_0x53d089[_0xf4f2('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x572ce6,_0x4c21cc){return function(_0x140f88){if(!_0x140f88){_0x572ce6['sendStatus'](0x194);}return _0x140f88;};}function handleError(_0x2257a4,_0x1d44d9){_0x1d44d9=_0x1d44d9||0x1f4;return function(_0xdb126){logger['error'](_0xdb126[_0xf4f2('0x29')]);if(_0xdb126[_0xf4f2('0x2a')]){delete _0xdb126[_0xf4f2('0x2a')];}_0x2257a4[_0xf4f2('0x1b')](_0x1d44d9)[_0xf4f2('0x2b')](_0xdb126);};}exports[_0xf4f2('0x2c')]=function(_0x5ce479,_0x2ff6bc){var _0x54c030={},_0x53515e={},_0x2cdf60={'count':0x0,'rows':[]};var _0x373ca8=_[_0xf4f2('0x2d')](db[_0xf4f2('0x2e')][_0xf4f2('0x2f')],function(_0x295ec5){return{'name':_0x295ec5[_0xf4f2('0x30')],'type':_0x295ec5[_0xf4f2('0x31')]['key']};});_0x53515e['model']=_[_0xf4f2('0x2d')](_0x373ca8,_0xf4f2('0x2a'));_0x53515e[_0xf4f2('0x32')]=_[_0xf4f2('0x33')](_0x5ce479[_0xf4f2('0x32')]);_0x53515e[_0xf4f2('0x34')]=_[_0xf4f2('0x35')](_0x53515e[_0xf4f2('0x36')],_0x53515e[_0xf4f2('0x32')]);_0x54c030['attributes']=_['intersection'](_0x53515e[_0xf4f2('0x36')],qs[_0xf4f2('0x37')](_0x5ce479[_0xf4f2('0x32')]['fields']));_0x54c030[_0xf4f2('0x38')]=_0x54c030[_0xf4f2('0x38')][_0xf4f2('0x39')]?_0x54c030[_0xf4f2('0x38')]:_0x53515e[_0xf4f2('0x36')];if(!_0x5ce479[_0xf4f2('0x32')][_0xf4f2('0x3a')](_0xf4f2('0x3b'))){_0x54c030[_0xf4f2('0x20')]=qs[_0xf4f2('0x20')](_0x5ce479[_0xf4f2('0x32')][_0xf4f2('0x20')]);_0x54c030[_0xf4f2('0x1e')]=qs[_0xf4f2('0x1e')](_0x5ce479[_0xf4f2('0x32')][_0xf4f2('0x1e')]);}_0x54c030[_0xf4f2('0x3c')]=qs[_0xf4f2('0x3d')](_0x5ce479[_0xf4f2('0x32')][_0xf4f2('0x3d')]);_0x54c030[_0xf4f2('0x3e')]=qs[_0xf4f2('0x34')](_[_0xf4f2('0x3f')](_0x5ce479['query'],_0x53515e[_0xf4f2('0x34')]),_0x373ca8);if(_0x5ce479[_0xf4f2('0x32')][_0xf4f2('0x40')]){_0x54c030[_0xf4f2('0x3e')]=_['merge'](_0x54c030[_0xf4f2('0x3e')],{'$or':_[_0xf4f2('0x2d')](_0x373ca8,function(_0x3de3a2){if(_0x3de3a2[_0xf4f2('0x31')]!=='VIRTUAL'){var _0x2f4fbb={};_0x2f4fbb[_0x3de3a2[_0xf4f2('0x2a')]]={'$like':'%'+_0x5ce479[_0xf4f2('0x32')][_0xf4f2('0x40')]+'%'};return _0x2f4fbb;}})});}_0x54c030=_[_0xf4f2('0x41')]({},_0x54c030,_0x5ce479[_0xf4f2('0x42')]);var _0x427770={'where':_0x54c030[_0xf4f2('0x3e')]};return db[_0xf4f2('0x2e')][_0xf4f2('0x21')](_0x427770)[_0xf4f2('0x28')](function(_0xfb42e8){_0x2cdf60[_0xf4f2('0x21')]=_0xfb42e8;if(_0x5ce479['query'][_0xf4f2('0x43')]){_0x54c030['include']=[{'all':!![]}];}return db[_0xf4f2('0x2e')]['findAll'](_0x54c030);})[_0xf4f2('0x28')](function(_0x45ed5f){_0x2cdf60['rows']=_0x45ed5f;return _0x2cdf60;})[_0xf4f2('0x28')](respondWithFilteredResult(_0x2ff6bc,_0x54c030))[_0xf4f2('0x44')](handleError(_0x2ff6bc,null));};exports[_0xf4f2('0x45')]=function(_0x5a4cf2,_0x14d80c){var _0x3b1501={'raw':![],'where':{'id':_0x5a4cf2[_0xf4f2('0x46')]['id']}},_0x2e3efe={};_0x2e3efe[_0xf4f2('0x36')]=_['keys'](db[_0xf4f2('0x2e')][_0xf4f2('0x2f')]);_0x2e3efe[_0xf4f2('0x32')]=_[_0xf4f2('0x33')](_0x5a4cf2['query']);_0x2e3efe[_0xf4f2('0x34')]=_[_0xf4f2('0x35')](_0x2e3efe['model'],_0x2e3efe['query']);_0x3b1501[_0xf4f2('0x38')]=_[_0xf4f2('0x35')](_0x2e3efe[_0xf4f2('0x36')],qs[_0xf4f2('0x37')](_0x5a4cf2[_0xf4f2('0x32')][_0xf4f2('0x37')]));_0x3b1501['attributes']=_0x3b1501['attributes'][_0xf4f2('0x39')]?_0x3b1501[_0xf4f2('0x38')]:_0x2e3efe['model'];if(_0x5a4cf2[_0xf4f2('0x32')][_0xf4f2('0x43')]){_0x3b1501['include']=[{'all':!![]}];}_0x3b1501=_['merge']({},_0x3b1501,_0x5a4cf2[_0xf4f2('0x42')]);return db[_0xf4f2('0x2e')][_0xf4f2('0x47')](_0x3b1501)[_0xf4f2('0x28')](handleEntityNotFound(_0x14d80c,null))['then'](respondWithResult(_0x14d80c,null))[_0xf4f2('0x44')](handleError(_0x14d80c,null));};exports[_0xf4f2('0x48')]=function(_0x63a67,_0x319ad0){return db[_0xf4f2('0x2e')][_0xf4f2('0x48')](_0x63a67[_0xf4f2('0x49')],{})[_0xf4f2('0x28')](respondWithResult(_0x319ad0,0xc9))[_0xf4f2('0x44')](handleError(_0x319ad0,null));};exports[_0xf4f2('0x4a')]=function(_0x1fd15a,_0x306ee4){var _0x4c7024={'where':{'id':_0x1fd15a[_0xf4f2('0x46')]['id']}},_0x4305fa={};_0x4305fa['model']=_['keys'](db['UserProfile'][_0xf4f2('0x2f')]);_0x4c7024['attributes']=_[_0xf4f2('0x35')](_0x4305fa[_0xf4f2('0x36')],qs['fields'](_0x1fd15a[_0xf4f2('0x32')][_0xf4f2('0x37')]));_0x4c7024['attributes']=_0x4c7024[_0xf4f2('0x38')]['length']?_0x4c7024[_0xf4f2('0x38')]:_0x4305fa[_0xf4f2('0x36')];if(_0x1fd15a['query'][_0xf4f2('0x43')]){_0x4c7024['include']=[{'all':!![]}];}_0x4c7024=_[_0xf4f2('0x41')]({},_0x4c7024,_0x1fd15a[_0xf4f2('0x42')]);return db[_0xf4f2('0x2e')][_0xf4f2('0x47')](_0x4c7024)[_0xf4f2('0x28')](handleEntityNotFound(_0x306ee4,null))[_0xf4f2('0x28')](function(_0x3283d){if(_0x3283d){var _0x303595=_0x3283d[_0xf4f2('0x4b')]({'plain':!![]});_0x303595=qs[_0xf4f2('0x4c')](_0x303595,['id',_0xf4f2('0x4d'),_0xf4f2('0x4e'),_0xf4f2('0x4f')]);_0x1fd15a[_0xf4f2('0x49')]=_['omit'](_0x1fd15a[_0xf4f2('0x49')],['id',_0xf4f2('0x4d'),_0xf4f2('0x4e')]);return db[_0xf4f2('0x50')][_0xf4f2('0x51')](function(_0x3a5ab2){return db['UserProfile'][_0xf4f2('0x48')](_[_0xf4f2('0x41')](_0x303595,_0x1fd15a[_0xf4f2('0x49')]),{'include':_0x1fd15a[_0xf4f2('0x32')][_0xf4f2('0x43')]?[{'all':!![]}]:undefined,'transaction':_0x3a5ab2})[_0xf4f2('0x28')](function(_0x259ddb){var _0x3423b4=_0x259ddb[_0xf4f2('0x4b')]({'plain':!![]});return db[_0xf4f2('0x52')]['findAll']({'where':{'userProfileId':_0x1fd15a['params']['id']},'raw':!![]})[_0xf4f2('0x28')](function(_0x2171cd){if(_0x2171cd){return BPromise[_0xf4f2('0x53')](_0x2171cd,function(_0x47d0ad){return new BPromise(function(_0xfd7a44,_0x1887b1){if(_0x47d0ad[_0xf4f2('0x54')]===null||_0x47d0ad[_0xf4f2('0x54')]===0x1)_0xfd7a44(null);return db[_0xf4f2('0x55')][_0xf4f2('0x56')]({'where':{'sectionId':_0x47d0ad['id']},'raw':!![]})[_0xf4f2('0x28')](function(_0x16b41a){var _0x52674c=_['map'](_0x16b41a,function(_0x492dc5){return qs[_0xf4f2('0x4c')](_0x492dc5,['id','createdAt',_0xf4f2('0x4e'),'sectionId']);});_0xfd7a44(_0x52674c);})[_0xf4f2('0x44')](function(_0x872042){_0x1887b1(_0x872042);});})[_0xf4f2('0x28')](function(_0x3fe75a){var _0x17248a=qs[_0xf4f2('0x4c')](_0x47d0ad,['id',_0xf4f2('0x4d'),_0xf4f2('0x4e')]);_0x17248a[_0xf4f2('0x57')]=_0x3423b4['id'];if(_0x3fe75a)_0x17248a[_0xf4f2('0x58')]=_0x3fe75a;return _0x17248a;})[_0xf4f2('0x28')](function(_0x5a3f0c){return db[_0xf4f2('0x52')][_0xf4f2('0x48')](_0x5a3f0c,{'include':[{'model':db[_0xf4f2('0x55')],'as':_0xf4f2('0x58')}],'raw':!![],'transaction':_0x3a5ab2});});})[_0xf4f2('0x28')](function(){return _0x3423b4;});}});});});}})[_0xf4f2('0x28')](respondWithResult(_0x306ee4,0xc9))[_0xf4f2('0x44')](handleError(_0x306ee4,null));};exports[_0xf4f2('0x27')]=function(_0x2e5051,_0x22d90f){if(_0x2e5051[_0xf4f2('0x49')]['id']){delete _0x2e5051['body']['id'];}return db[_0xf4f2('0x2e')][_0xf4f2('0x47')]({'where':{'id':_0x2e5051[_0xf4f2('0x46')]['id']}})['then'](handleEntityNotFound(_0x22d90f,null))[_0xf4f2('0x28')](saveUpdates(_0x2e5051[_0xf4f2('0x49')],null))['then'](respondWithResult(_0x22d90f,null))[_0xf4f2('0x44')](handleError(_0x22d90f,null));};exports[_0xf4f2('0x59')]=function(_0x2697f9,_0x52d8c3){return db[_0xf4f2('0x2e')][_0xf4f2('0x47')]({'where':{'id':_0x2697f9['params']['id']}})[_0xf4f2('0x28')](handleEntityNotFound(_0x52d8c3,null))[_0xf4f2('0x28')](removeEntity(_0x52d8c3,null))['catch'](handleError(_0x52d8c3,null));};exports['describe']=function(_0x2e4feb,_0x29ad5a){return db[_0xf4f2('0x2e')]['describe']()[_0xf4f2('0x28')](respondWithResult(_0x29ad5a,null))['catch'](handleError(_0x29ad5a,null));};exports[_0xf4f2('0x5a')]=function(_0x304b4a,_0x1c733c){var _0x2386d0=_0x304b4a[_0xf4f2('0x49')];return db[_0xf4f2('0x2e')]['find']({'where':{'id':_0x304b4a[_0xf4f2('0x46')]['id']}})['then'](handleEntityNotFound(_0x1c733c,null))[_0xf4f2('0x28')](function(_0xbe3d47){if(_0xbe3d47){return db[_0xf4f2('0x50')]['transaction'](function(_0x35654a){return db[_0xf4f2('0x52')][_0xf4f2('0x59')]({'where':{'userProfileId':_0x304b4a[_0xf4f2('0x46')]['id'],'sectionId':_[_0xf4f2('0x2d')](_0x2386d0,function(_0x1ca6f1){return _0x1ca6f1[_0xf4f2('0x5b')];})},'transaction':_0x35654a})[_0xf4f2('0x28')](function(){var _0x23d76e=_[_0xf4f2('0x2d')](_0x2386d0,function(_0x13a7a1){_0x13a7a1[_0xf4f2('0x57')]=_0x304b4a[_0xf4f2('0x46')]['id'];return _0x13a7a1;});var _0x45f57f=[];return BPromise['each'](_0x23d76e,function(_0x34e8e6){return db['UserProfileSection'][_0xf4f2('0x48')](_0x34e8e6,{'include':[{'model':db[_0xf4f2('0x55')],'as':_0xf4f2('0x58')}],'raw':!![],'transaction':_0x35654a})[_0xf4f2('0x28')](function(_0x56b680){_0x45f57f[_0xf4f2('0x5c')](_0x56b680[_0xf4f2('0x4b')]({'plain':!![]}));});})[_0xf4f2('0x28')](function(){return _0x45f57f;});});});}})[_0xf4f2('0x28')](function(_0x5421b3){return _0x5421b3;})[_0xf4f2('0x28')](respondWithResult(_0x1c733c,null))['catch'](handleError(_0x1c733c,null));};exports['removeSections']=function(_0x1986ae,_0x4b3add){var _0x9c575d;return db[_0xf4f2('0x2e')][_0xf4f2('0x47')]({'where':{'id':_0x1986ae[_0xf4f2('0x46')]['id']},'attributes':['id',_0xf4f2('0x2a')]})[_0xf4f2('0x28')](handleEntityNotFound(_0x4b3add,null))[_0xf4f2('0x28')](function(_0x2b08e9){if(_0x2b08e9){_0x9c575d=_0x2b08e9;return db[_0xf4f2('0x52')]['destroy']({'where':{'userProfileId':_0x1986ae[_0xf4f2('0x46')]['id'],'sectionId':_0x1986ae[_0xf4f2('0x32')]['ids']}});}})[_0xf4f2('0x28')](function(){return _0x9c575d;})[_0xf4f2('0x28')](respondWithStatusCode(_0x4b3add,null))['catch'](handleError(_0x4b3add,null));};exports[_0xf4f2('0x5d')]=function(_0x4af69a,_0x44dcfe){var _0x217a89=[];var _0x31c7ea=[];return db['UserProfileSection']['findAll']({'where':{'userProfileId':_0x4af69a[_0xf4f2('0x46')]['id']},'raw':!![]})[_0xf4f2('0x28')](function(_0x298f3f){_0x217a89=_[_0xf4f2('0x40')](_0x298f3f,function(_0x5e30b5){return _0x5e30b5[_0xf4f2('0x5e')]===0x1||_[_0xf4f2('0x5f')]([0x3eb,0x709],_0x5e30b5[_0xf4f2('0x5b')]);});if(!_[_0xf4f2('0x60')](_0x217a89)){return _[_0xf4f2('0x2d')](_0x217a89,function(_0x5468f0){return _0x5468f0[_0xf4f2('0x5b')];});}else{return;}})[_0xf4f2('0x28')](function(_0x39e413){if(_0x39e413)_0x31c7ea=_0x39e413;if(_[_0xf4f2('0x5f')](_0x31c7ea,0x64)){var _0x2d21eb=_[_0xf4f2('0x47')](_0x217a89,{'sectionId':0x64});return hasDefaultDashboard(_0x2d21eb)[_0xf4f2('0x28')](function(_0x581247){return _['map'](_0x217a89,function(_0x2db482){if(_0x2db482[_0xf4f2('0x5b')]===0x64){_0x2db482[_0xf4f2('0x61')]=_0x581247;}return _0x2db482;});});}else{return;}})[_0xf4f2('0x28')](function(_0x9580b0){if(_0x9580b0)_0x217a89=_0x9580b0;if(_[_0xf4f2('0x5f')](_0x31c7ea,0x3eb)){var _0x210396=_[_0xf4f2('0x47')](_0x217a89,{'sectionId':0x3eb});return getCustomDashboards(_0x210396)[_0xf4f2('0x28')](function(_0x14173f){return _[_0xf4f2('0x2d')](_0x217a89,function(_0x2462c3){if(_0x210396[_0xf4f2('0x5e')]){if(_0x2462c3['sectionId']===0x3eb){_0x2462c3[_0xf4f2('0x61')]=_0x14173f;}}else{if(_0x2462c3[_0xf4f2('0x5b')]===0x64){if(!_0x2462c3[_0xf4f2('0x61')]){_0x2462c3[_0xf4f2('0x61')]=[];}_0x2462c3[_0xf4f2('0x61')]=_0x2462c3[_0xf4f2('0x61')][_0xf4f2('0x62')](_0x14173f);}}return _0x2462c3;});});}else{return;}})[_0xf4f2('0x28')](function(_0x19e667){if(_0x19e667)_0x217a89=_0x19e667;if(_[_0xf4f2('0x5f')](_0x31c7ea,0x709)){var _0x375945=_[_0xf4f2('0x47')](_0x217a89,{'sectionId':0x709});return getPlugins(_0x375945)[_0xf4f2('0x28')](function(_0x238306){if(_0x375945[_0xf4f2('0x5e')]){return _[_0xf4f2('0x2d')](_0x217a89,function(_0x4ee11e){if(_0x4ee11e[_0xf4f2('0x5b')]===0x709){_0x4ee11e[_0xf4f2('0x61')]=_0x238306;}return _0x4ee11e;});}else{var _0x391a60={'sectionId':0x76c,'enabled':0x1,'subsections':_0x238306};var _0x161c40=_['map'](_0x217a89);_0x161c40[_0xf4f2('0x5c')](_0x391a60);return _0x161c40;}});}else{return;}})['then'](function(_0x3b1922){if(_0x3b1922)_0x217a89=_0x3b1922;return _[_0xf4f2('0x40')](_0x217a89,[_0xf4f2('0x5e'),0x1]);})[_0xf4f2('0x28')](respondWithResult(_0x44dcfe,null))[_0xf4f2('0x44')](handleError(_0x44dcfe,null));};function hasDefaultDashboard(_0x5d2d8f){var _0x1ec530=[0x65];return new BPromise(function(_0x42caff,_0x44c599){try{if(_0x5d2d8f[_0xf4f2('0x54')]){_0x42caff(_0x1ec530);}else{return db[_0xf4f2('0x55')][_0xf4f2('0x63')]({'where':{'sectionId':_0x5d2d8f['id']},'raw':!![]})['then'](function(_0x491eb0){_0x491eb0?_0x42caff(_0x1ec530):_0x42caff();});}}catch(_0x302282){_0x44c599(_0x302282);}});}function getCustomDashboards(_0x4ffc5b){var _0x5998d7=[];return new BPromise(function(_0x36ed47,_0x4655d6){try{if(_0x4ffc5b[_0xf4f2('0x54')]){return db['Dashboard'][_0xf4f2('0x56')]({'raw':!![]})['then'](function(_0x15458f){_0x15458f[_0xf4f2('0x64')](function(_0x5a0a52){_0x5998d7['push'](_0x5a0a52['id']+0x1869f);});_0x36ed47(_0x5998d7);});}else{return db[_0xf4f2('0x55')][_0xf4f2('0x56')]({'where':{'sectionId':_0x4ffc5b['id']},'raw':!![]})[_0xf4f2('0x28')](function(_0x504795){_0x504795[_0xf4f2('0x64')](function(_0x3f6db7){_0x5998d7[_0xf4f2('0x5c')](_0x3f6db7[_0xf4f2('0x65')]+0x1869f);});_0x36ed47(_0x5998d7);});}}catch(_0x3d2594){_0x4655d6(_0x3d2594);}});}function getPlugins(_0x4cc675){var _0x5512af=[];return new BPromise(function(_0x13201b,_0x23c7f4){try{if(_0x4cc675['autoAssociation']){return db[_0xf4f2('0x66')][_0xf4f2('0x56')]({'raw':!![]})['then'](function(_0x20a2b7){_0x20a2b7[_0xf4f2('0x64')](function(_0x27a28f){_0x5512af[_0xf4f2('0x5c')](_0x27a28f['id']+0x15b38);});_0x13201b(_0x5512af);});}else{return db[_0xf4f2('0x55')][_0xf4f2('0x56')]({'where':{'sectionId':_0x4cc675['id']},'raw':!![]})['then'](function(_0x530b22){_0x530b22[_0xf4f2('0x64')](function(_0x3cefc9){_0x5512af[_0xf4f2('0x5c')](_0x3cefc9[_0xf4f2('0x65')]+0x15b38);});_0x13201b(_0x5512af);});}}catch(_0x2aa502){_0x23c7f4(_0x2aa502);}});}exports[_0xf4f2('0x67')]=function(_0x3b97d8,_0x2e6d0b){return db[_0xf4f2('0x2e')][_0xf4f2('0x47')]({'where':{'id':_0x3b97d8[_0xf4f2('0x46')]['id']}})[_0xf4f2('0x28')](handleEntityNotFound(_0x2e6d0b,null))['then'](function(_0xa1f7b6){if(_0xa1f7b6){return db[_0xf4f2('0x50')][_0xf4f2('0x51')](function(_0x10d4d7){return db[_0xf4f2('0x52')]['findAll']({'where':{'userProfileId':_0x3b97d8[_0xf4f2('0x46')]['id']},'attributes':['id'],'raw':!![]})[_0xf4f2('0x28')](function(_0x512868){if(_0x512868){return db[_0xf4f2('0x52')][_0xf4f2('0x59')]({'where':{'userProfileId':_0x3b97d8[_0xf4f2('0x46')]['id'],'id':_[_0xf4f2('0x2d')](_0x512868,function(_0x41a9d2){return _0x41a9d2['id'];})},'transaction':_0x10d4d7});}})[_0xf4f2('0x28')](function(_0x48e114){var _0x356aa5=_[_0xf4f2('0x2d')](_0x3b97d8[_0xf4f2('0x49')],function(_0x38cbff){_0x38cbff[_0xf4f2('0x57')]=_0x3b97d8[_0xf4f2('0x46')]['id'];return _0x38cbff;});return db[_0xf4f2('0x52')][_0xf4f2('0x68')](_0x356aa5,{'raw':!![],'transaction':_0x10d4d7});})['then'](function(_0xfe67d4){var _0xad8bd6=_['filter'](_[_0xf4f2('0x2d')](_0xfe67d4,function(_0x3d3cfc){return _0x3d3cfc[_0xf4f2('0x4b')]({'plain':!![]});}),{'includeAll':![]});if(_0xad8bd6){return db['UserProfileSection']['findAll']({'where':{'userProfileId':_0x3b97d8[_0xf4f2('0x46')]['id'],'sectionId':_[_0xf4f2('0x2d')](_0xad8bd6,function(_0xff1a56){return _0xff1a56[_0xf4f2('0x5b')];})},'attributes':['id',_0xf4f2('0x5b')],'raw':!![]})[_0xf4f2('0x28')](function(_0x20765f){var _0x762c9a=_[_0xf4f2('0x2d')](_0x3b97d8[_0xf4f2('0x49')],function(_0x4e4dd6){_0x4e4dd6['userProfileId']=_0x3b97d8[_0xf4f2('0x46')]['id'];return _0x4e4dd6;});return db[_0xf4f2('0x55')][_0xf4f2('0x68')](_0x762c9a,{'raw':!![],'transaction':_0x10d4d7});});}})[_0xf4f2('0x44')](handleError(_0x2e6d0b,null));});}})[_0xf4f2('0x28')](function(_0x4d40ec){var _0x31cdec=_[_0xf4f2('0x2d')](_0x4d40ec,function(_0x50f133){return _0x50f133[_0xf4f2('0x4b')]({'plain':!![]});});})[_0xf4f2('0x28')](respondWithResult(_0x2e6d0b,null))[_0xf4f2('0x44')](handleError(_0x2e6d0b,null));};exports['removeResources']=function(_0x358bea,_0x219999,_0x5d0b0c){return db[_0xf4f2('0x2e')][_0xf4f2('0x47')]({'where':{'id':_0x358bea[_0xf4f2('0x46')]['id']}})['then'](handleEntityNotFound(_0x219999,null))[_0xf4f2('0x28')](function(_0x140736){if(_0x140736){return _0x140736[_0xf4f2('0x69')](_0x358bea[_0xf4f2('0x32')][_0xf4f2('0x6a')]);}})[_0xf4f2('0x28')](respondWithStatusCode(_0x219999,null))[_0xf4f2('0x44')](handleError(_0x219999,null));};exports['getResources']=function(_0x4596c1,_0x248938){var _0x3abaec={};if(!_0x4596c1['query'][_0xf4f2('0x6b')])throw new Error(_0xf4f2('0x6c'));if(!_0x4596c1[_0xf4f2('0x32')][_0xf4f2('0x3a')]('nolimit')){_0x3abaec['limit']=qs[_0xf4f2('0x20')](_0x4596c1[_0xf4f2('0x32')][_0xf4f2('0x20')]);_0x3abaec[_0xf4f2('0x1e')]=qs['offset'](_0x4596c1['query']['offset']);}return db['UserProfile'][_0xf4f2('0x47')]({'where':{'id':_0x4596c1[_0xf4f2('0x46')]['id']}})['then'](function(_0x15f014){if(!_0x15f014)throw new Error('No\x20User\x20Profile\x20found\x20for\x20id\x20'+_0x4596c1[_0xf4f2('0x46')]['id']);return db['UserProfile'][_0xf4f2('0x6d')](_0x4596c1);})['then'](respondWithFilteredResult(_0x248938,_0x3abaec))['catch'](handleError(_0x248938,null));};
\ No newline at end of file
+var _0x673e=['autoAssociation','sectionId','Resources','UserProfileResource','describe','addSections','removeSections','ids','getSections','enabled','includes','subsections','findOne','forEach','push','Plugin','userProfileId','removeResources','getResources','section','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','defaults','redis','localhost','socket.io-emitter','./userProfile.socket','register','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','reject','save','update','then','destroy','stack','send','index','map','UserProfile','rawAttributes','type','key','model','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','merge','VIRTUAL','name','options','include','findAll','rows','catch','params','keys','includeAll','find','create','body','clone','get','createdAt','crudPermissions','omit','updatedAt','sequelize','transaction','UserProfileSection','each'];(function(_0x5276c8,_0x29481a){var _0xe47cb5=function(_0x1fe4b1){while(--_0x1fe4b1){_0x5276c8['push'](_0x5276c8['shift']());}};_0xe47cb5(++_0x29481a);}(_0x673e,0x1c8));var _0xe673=function(_0x4e1203,_0x552082){_0x4e1203=_0x4e1203-0x0;var _0x2923c3=_0x673e[_0x4e1203];return _0x2923c3;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe673('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xe673('0x1'));var rp=require(_0xe673('0x2'));var moment=require('moment');var BPromise=require(_0xe673('0x3'));var Mustache=require(_0xe673('0x4'));var util=require(_0xe673('0x5'));var path=require(_0xe673('0x6'));var sox=require(_0xe673('0x7'));var csv=require(_0xe673('0x8'));var ejs=require(_0xe673('0x9'));var fs=require('fs');var fs_extra=require(_0xe673('0xa'));var _=require(_0xe673('0xb'));var squel=require(_0xe673('0xc'));var crypto=require('crypto');var jsforce=require(_0xe673('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xe673('0x8'));var querystring=require('querystring');var Papa=require(_0xe673('0xe'));var Redis=require(_0xe673('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xe673('0x10'));var as=require(_0xe673('0x11'));var hardwareService=require(_0xe673('0x12'));var logger=require(_0xe673('0x13'))(_0xe673('0x14'));var utils=require(_0xe673('0x15'));var config=require(_0xe673('0x16'));var licenseUtil=require(_0xe673('0x17'));var db=require('../../mysqldb')['db'];config['redis']=_[_0xe673('0x18')](config[_0xe673('0x19')],{'host':_0xe673('0x1a'),'port':0x18eb});var socket=require(_0xe673('0x1b'))(new Redis(config['redis']));require(_0xe673('0x1c'))[_0xe673('0x1d')](socket);function respondWithStatusCode(_0x57ac2f,_0x1d7400){_0x1d7400=_0x1d7400||0xcc;return function(_0x179e13){if(_0x179e13){return _0x57ac2f[_0xe673('0x1e')](_0x1d7400);}return _0x57ac2f['status'](_0x1d7400)['end']();};}function respondWithResult(_0x52793d,_0x13c989){_0x13c989=_0x13c989||0xc8;return function(_0x3f227f){if(_0x3f227f){return _0x52793d[_0xe673('0x1f')](_0x13c989)['json'](_0x3f227f);}};}function respondWithFilteredResult(_0x4da7f8,_0x57d6ef){return function(_0x4f675c){if(_0x4f675c){var _0x4b0687=typeof _0x57d6ef[_0xe673('0x20')]===_0xe673('0x21')&&typeof _0x57d6ef[_0xe673('0x22')]==='undefined';var _0x2a2d12=_0x4f675c[_0xe673('0x23')];var _0x5db86c=_0x4b0687?0x0:_0x57d6ef[_0xe673('0x20')];var _0x5bc49d=_0x4b0687?_0x4f675c[_0xe673('0x23')]:_0x57d6ef['offset']+_0x57d6ef[_0xe673('0x22')];var _0x5e21a2;if(_0x5bc49d>=_0x2a2d12){_0x5bc49d=_0x2a2d12;_0x5e21a2=0xc8;}else{_0x5e21a2=0xce;}_0x4da7f8['status'](_0x5e21a2);return _0x4da7f8[_0xe673('0x24')](_0xe673('0x25'),_0x5db86c+'-'+_0x5bc49d+'/'+_0x2a2d12)[_0xe673('0x26')](_0x4f675c);}return null;};}function patchUpdates(_0x32f612){return function(_0x498b9b){try{jsonpatch['apply'](_0x498b9b,_0x32f612,!![]);}catch(_0x5803a9){return BPromise[_0xe673('0x27')](_0x5803a9);}return _0x498b9b[_0xe673('0x28')]();};}function saveUpdates(_0x246e24,_0x4633fa){return function(_0x1c351f){if(_0x1c351f){return _0x1c351f[_0xe673('0x29')](_0x246e24)[_0xe673('0x2a')](function(_0x5b8976){return _0x5b8976;});}return null;};}function removeEntity(_0x49f3d3,_0x4d37df){return function(_0x13c734){if(_0x13c734){return _0x13c734[_0xe673('0x2b')]()['then'](function(){_0x49f3d3['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x5d20c4,_0xcd02cf){return function(_0x38e500){if(!_0x38e500){_0x5d20c4['sendStatus'](0x194);}return _0x38e500;};}function handleError(_0x42df30,_0x43499e){_0x43499e=_0x43499e||0x1f4;return function(_0x323b71){logger['error'](_0x323b71[_0xe673('0x2c')]);if(_0x323b71['name']){delete _0x323b71['name'];}_0x42df30[_0xe673('0x1f')](_0x43499e)[_0xe673('0x2d')](_0x323b71);};}exports[_0xe673('0x2e')]=function(_0x101109,_0x3cfe24){var _0x6ffb5c={},_0x5809f3={},_0x4ff117={'count':0x0,'rows':[]};var _0x2f9733=_[_0xe673('0x2f')](db[_0xe673('0x30')][_0xe673('0x31')],function(_0x51d776){return{'name':_0x51d776['fieldName'],'type':_0x51d776[_0xe673('0x32')][_0xe673('0x33')]};});_0x5809f3[_0xe673('0x34')]=_[_0xe673('0x2f')](_0x2f9733,'name');_0x5809f3[_0xe673('0x35')]=_['keys'](_0x101109[_0xe673('0x35')]);_0x5809f3['filters']=_[_0xe673('0x36')](_0x5809f3[_0xe673('0x34')],_0x5809f3[_0xe673('0x35')]);_0x6ffb5c[_0xe673('0x37')]=_[_0xe673('0x36')](_0x5809f3[_0xe673('0x34')],qs['fields'](_0x101109[_0xe673('0x35')][_0xe673('0x38')]));_0x6ffb5c['attributes']=_0x6ffb5c[_0xe673('0x37')][_0xe673('0x39')]?_0x6ffb5c[_0xe673('0x37')]:_0x5809f3[_0xe673('0x34')];if(!_0x101109[_0xe673('0x35')][_0xe673('0x3a')](_0xe673('0x3b'))){_0x6ffb5c[_0xe673('0x22')]=qs[_0xe673('0x22')](_0x101109['query']['limit']);_0x6ffb5c[_0xe673('0x20')]=qs[_0xe673('0x20')](_0x101109[_0xe673('0x35')][_0xe673('0x20')]);}_0x6ffb5c['order']=qs[_0xe673('0x3c')](_0x101109[_0xe673('0x35')][_0xe673('0x3c')]);_0x6ffb5c[_0xe673('0x3d')]=qs[_0xe673('0x3e')](_[_0xe673('0x3f')](_0x101109[_0xe673('0x35')],_0x5809f3[_0xe673('0x3e')]),_0x2f9733);if(_0x101109[_0xe673('0x35')][_0xe673('0x40')]){_0x6ffb5c[_0xe673('0x3d')]=_[_0xe673('0x41')](_0x6ffb5c[_0xe673('0x3d')],{'$or':_['map'](_0x2f9733,function(_0x2a25f4){if(_0x2a25f4[_0xe673('0x32')]!==_0xe673('0x42')){var _0x3e346c={};_0x3e346c[_0x2a25f4[_0xe673('0x43')]]={'$like':'%'+_0x101109[_0xe673('0x35')][_0xe673('0x40')]+'%'};return _0x3e346c;}})});}_0x6ffb5c=_[_0xe673('0x41')]({},_0x6ffb5c,_0x101109[_0xe673('0x44')]);var _0x381342={'where':_0x6ffb5c['where']};return db[_0xe673('0x30')]['count'](_0x381342)[_0xe673('0x2a')](function(_0xd6ccee){_0x4ff117['count']=_0xd6ccee;if(_0x101109['query']['includeAll']){_0x6ffb5c[_0xe673('0x45')]=[{'all':!![]}];}return db[_0xe673('0x30')][_0xe673('0x46')](_0x6ffb5c);})['then'](function(_0x85dce8){_0x4ff117[_0xe673('0x47')]=_0x85dce8;return _0x4ff117;})[_0xe673('0x2a')](respondWithFilteredResult(_0x3cfe24,_0x6ffb5c))[_0xe673('0x48')](handleError(_0x3cfe24,null));};exports['show']=function(_0x26f3d0,_0x139872){var _0x42c5ff={'raw':![],'where':{'id':_0x26f3d0[_0xe673('0x49')]['id']}},_0x492728={};_0x492728[_0xe673('0x34')]=_[_0xe673('0x4a')](db[_0xe673('0x30')][_0xe673('0x31')]);_0x492728[_0xe673('0x35')]=_[_0xe673('0x4a')](_0x26f3d0[_0xe673('0x35')]);_0x492728[_0xe673('0x3e')]=_[_0xe673('0x36')](_0x492728[_0xe673('0x34')],_0x492728[_0xe673('0x35')]);_0x42c5ff['attributes']=_['intersection'](_0x492728[_0xe673('0x34')],qs[_0xe673('0x38')](_0x26f3d0[_0xe673('0x35')]['fields']));_0x42c5ff[_0xe673('0x37')]=_0x42c5ff[_0xe673('0x37')][_0xe673('0x39')]?_0x42c5ff['attributes']:_0x492728['model'];if(_0x26f3d0[_0xe673('0x35')][_0xe673('0x4b')]){_0x42c5ff['include']=[{'all':!![]}];}_0x42c5ff=_[_0xe673('0x41')]({},_0x42c5ff,_0x26f3d0['options']);return db[_0xe673('0x30')][_0xe673('0x4c')](_0x42c5ff)[_0xe673('0x2a')](handleEntityNotFound(_0x139872,null))[_0xe673('0x2a')](respondWithResult(_0x139872,null))[_0xe673('0x48')](handleError(_0x139872,null));};exports[_0xe673('0x4d')]=function(_0x491954,_0x3ff92e){return db['UserProfile'][_0xe673('0x4d')](_0x491954[_0xe673('0x4e')],{})[_0xe673('0x2a')](respondWithResult(_0x3ff92e,0xc9))[_0xe673('0x48')](handleError(_0x3ff92e,null));};exports[_0xe673('0x4f')]=function(_0xfde8b9,_0x3e9c4c){var _0x5582e9={'where':{'id':_0xfde8b9['params']['id']}},_0x3c7a12={};_0x3c7a12[_0xe673('0x34')]=_[_0xe673('0x4a')](db['UserProfile'][_0xe673('0x31')]);_0x5582e9[_0xe673('0x37')]=_[_0xe673('0x36')](_0x3c7a12[_0xe673('0x34')],qs[_0xe673('0x38')](_0xfde8b9[_0xe673('0x35')][_0xe673('0x38')]));_0x5582e9['attributes']=_0x5582e9[_0xe673('0x37')][_0xe673('0x39')]?_0x5582e9[_0xe673('0x37')]:_0x3c7a12[_0xe673('0x34')];if(_0xfde8b9[_0xe673('0x35')][_0xe673('0x4b')]){_0x5582e9['include']=[{'all':!![]}];}_0x5582e9=_[_0xe673('0x41')]({},_0x5582e9,_0xfde8b9[_0xe673('0x44')]);return db[_0xe673('0x30')][_0xe673('0x4c')](_0x5582e9)[_0xe673('0x2a')](handleEntityNotFound(_0x3e9c4c,null))['then'](function(_0x4df55e){if(_0x4df55e){var _0x494520=_0x4df55e[_0xe673('0x50')]({'plain':!![]});_0x494520=qs['omit'](_0x494520,['id',_0xe673('0x51'),'updatedAt',_0xe673('0x52')]);_0xfde8b9[_0xe673('0x4e')]=_[_0xe673('0x53')](_0xfde8b9[_0xe673('0x4e')],['id',_0xe673('0x51'),_0xe673('0x54')]);return db[_0xe673('0x55')][_0xe673('0x56')](function(_0x3974d9){return db[_0xe673('0x30')][_0xe673('0x4d')](_[_0xe673('0x41')](_0x494520,_0xfde8b9[_0xe673('0x4e')]),{'include':_0xfde8b9[_0xe673('0x35')][_0xe673('0x4b')]?[{'all':!![]}]:undefined,'transaction':_0x3974d9})[_0xe673('0x2a')](function(_0x58e030){var _0x167d3f=_0x58e030[_0xe673('0x50')]({'plain':!![]});return db[_0xe673('0x57')][_0xe673('0x46')]({'where':{'userProfileId':_0xfde8b9[_0xe673('0x49')]['id']},'raw':!![]})['then'](function(_0x49cb2a){if(_0x49cb2a){return BPromise[_0xe673('0x58')](_0x49cb2a,function(_0x2ecddc){return new BPromise(function(_0x19ede1,_0x11e252){if(_0x2ecddc[_0xe673('0x59')]===null||_0x2ecddc[_0xe673('0x59')]===0x1)_0x19ede1(null);return db['UserProfileResource']['findAll']({'where':{'sectionId':_0x2ecddc['id']},'raw':!![]})[_0xe673('0x2a')](function(_0x582b43){var _0xfcd3e3=_[_0xe673('0x2f')](_0x582b43,function(_0x190322){return qs['omit'](_0x190322,['id',_0xe673('0x51'),_0xe673('0x54'),_0xe673('0x5a')]);});_0x19ede1(_0xfcd3e3);})[_0xe673('0x48')](function(_0x43e0cd){_0x11e252(_0x43e0cd);});})[_0xe673('0x2a')](function(_0x28dcda){var _0x19b624=qs[_0xe673('0x53')](_0x2ecddc,['id',_0xe673('0x51'),_0xe673('0x54')]);_0x19b624['userProfileId']=_0x167d3f['id'];if(_0x28dcda)_0x19b624[_0xe673('0x5b')]=_0x28dcda;return _0x19b624;})['then'](function(_0x2f6a83){return db[_0xe673('0x57')]['create'](_0x2f6a83,{'include':[{'model':db[_0xe673('0x5c')],'as':_0xe673('0x5b')}],'raw':!![],'transaction':_0x3974d9});});})[_0xe673('0x2a')](function(){return _0x167d3f;});}});});});}})['then'](respondWithResult(_0x3e9c4c,0xc9))[_0xe673('0x48')](handleError(_0x3e9c4c,null));};exports[_0xe673('0x29')]=function(_0x2c092c,_0x18406d){if(_0x2c092c['body']['id']){delete _0x2c092c[_0xe673('0x4e')]['id'];}return db[_0xe673('0x30')][_0xe673('0x4c')]({'where':{'id':_0x2c092c[_0xe673('0x49')]['id']}})[_0xe673('0x2a')](handleEntityNotFound(_0x18406d,null))['then'](saveUpdates(_0x2c092c[_0xe673('0x4e')],null))[_0xe673('0x2a')](respondWithResult(_0x18406d,null))['catch'](handleError(_0x18406d,null));};exports[_0xe673('0x2b')]=function(_0x2d056c,_0x25069f){return db[_0xe673('0x30')][_0xe673('0x4c')]({'where':{'id':_0x2d056c['params']['id']}})['then'](handleEntityNotFound(_0x25069f,null))['then'](removeEntity(_0x25069f,null))[_0xe673('0x48')](handleError(_0x25069f,null));};exports['describe']=function(_0x2724b0,_0x43b6ea){return db[_0xe673('0x30')][_0xe673('0x5d')]()[_0xe673('0x2a')](respondWithResult(_0x43b6ea,null))[_0xe673('0x48')](handleError(_0x43b6ea,null));};exports[_0xe673('0x5e')]=function(_0x113d77,_0x9094ba){var _0xea3163=_0x113d77['body'];return db[_0xe673('0x30')][_0xe673('0x4c')]({'where':{'id':_0x113d77[_0xe673('0x49')]['id']}})['then'](handleEntityNotFound(_0x9094ba,null))[_0xe673('0x2a')](function(_0xd58799){if(_0xd58799){return db[_0xe673('0x55')][_0xe673('0x56')](function(_0x1d1b46){return db[_0xe673('0x57')][_0xe673('0x2b')]({'where':{'userProfileId':_0x113d77['params']['id'],'sectionId':_[_0xe673('0x2f')](_0xea3163,function(_0x3ff38c){return _0x3ff38c['sectionId'];})},'transaction':_0x1d1b46})[_0xe673('0x2a')](function(){var _0xf4b6b9=_[_0xe673('0x2f')](_0xea3163,function(_0x5cee48){_0x5cee48['userProfileId']=_0x113d77[_0xe673('0x49')]['id'];return _0x5cee48;});var _0x3443ab=[];return BPromise['each'](_0xf4b6b9,function(_0xfaaf55){return db['UserProfileSection'][_0xe673('0x4d')](_0xfaaf55,{'include':[{'model':db[_0xe673('0x5c')],'as':_0xe673('0x5b')}],'raw':!![],'transaction':_0x1d1b46})['then'](function(_0x5b0b6c){_0x3443ab['push'](_0x5b0b6c[_0xe673('0x50')]({'plain':!![]}));});})[_0xe673('0x2a')](function(){return _0x3443ab;});});});}})['then'](function(_0x46c6ab){return _0x46c6ab;})['then'](respondWithResult(_0x9094ba,null))[_0xe673('0x48')](handleError(_0x9094ba,null));};exports[_0xe673('0x5f')]=function(_0x27f251,_0x30bb8c){var _0x28f7c8;return db[_0xe673('0x30')][_0xe673('0x4c')]({'where':{'id':_0x27f251[_0xe673('0x49')]['id']},'attributes':['id',_0xe673('0x43')]})[_0xe673('0x2a')](handleEntityNotFound(_0x30bb8c,null))[_0xe673('0x2a')](function(_0xffdcb5){if(_0xffdcb5){_0x28f7c8=_0xffdcb5;return db['UserProfileSection'][_0xe673('0x2b')]({'where':{'userProfileId':_0x27f251[_0xe673('0x49')]['id'],'sectionId':_0x27f251[_0xe673('0x35')][_0xe673('0x60')]}});}})['then'](function(){return _0x28f7c8;})['then'](respondWithStatusCode(_0x30bb8c,null))[_0xe673('0x48')](handleError(_0x30bb8c,null));};exports[_0xe673('0x61')]=function(_0x563e3a,_0x27e40e){var _0x3422e2=[];var _0x13d14b=[];return db['UserProfileSection']['findAll']({'where':{'userProfileId':_0x563e3a['params']['id']},'raw':!![]})['then'](function(_0x20d6be){_0x3422e2=_[_0xe673('0x40')](_0x20d6be,function(_0x15e832){return _0x15e832[_0xe673('0x62')]===0x1||_[_0xe673('0x63')]([0x3eb,0x709],_0x15e832[_0xe673('0x5a')]);});if(!_['isEmpty'](_0x3422e2)){return _[_0xe673('0x2f')](_0x3422e2,function(_0x36e28a){return _0x36e28a['sectionId'];});}else{return;}})[_0xe673('0x2a')](function(_0x270e9b){if(_0x270e9b)_0x13d14b=_0x270e9b;if(_['includes'](_0x13d14b,0x64)){var _0x104730=_[_0xe673('0x4c')](_0x3422e2,{'sectionId':0x64});return hasDefaultDashboard(_0x104730)[_0xe673('0x2a')](function(_0x23e8a5){return _[_0xe673('0x2f')](_0x3422e2,function(_0x31968c){if(_0x31968c[_0xe673('0x5a')]===0x64){_0x31968c[_0xe673('0x64')]=_0x23e8a5;}return _0x31968c;});});}else{return;}})[_0xe673('0x2a')](function(_0x10652d){if(_0x10652d)_0x3422e2=_0x10652d;if(_[_0xe673('0x63')](_0x13d14b,0x3eb)){var _0x1b489d=_[_0xe673('0x4c')](_0x3422e2,{'sectionId':0x3eb});return getCustomDashboards(_0x1b489d)[_0xe673('0x2a')](function(_0x4e8e97){return _[_0xe673('0x2f')](_0x3422e2,function(_0x2977e4){if(_0x1b489d[_0xe673('0x62')]){if(_0x2977e4[_0xe673('0x5a')]===0x3eb){_0x2977e4[_0xe673('0x64')]=_0x4e8e97;}}else{if(_0x2977e4[_0xe673('0x5a')]===0x64){if(!_0x2977e4[_0xe673('0x64')]){_0x2977e4[_0xe673('0x64')]=[];}_0x2977e4[_0xe673('0x64')]=_0x2977e4[_0xe673('0x64')]['concat'](_0x4e8e97);}}return _0x2977e4;});});}else{return;}})[_0xe673('0x2a')](function(_0x2825d6){if(_0x2825d6)_0x3422e2=_0x2825d6;if(_[_0xe673('0x63')](_0x13d14b,0x709)){var _0x2ba013=_[_0xe673('0x4c')](_0x3422e2,{'sectionId':0x709});return getPlugins(_0x2ba013)[_0xe673('0x2a')](function(_0x241996){if(_0x2ba013[_0xe673('0x62')]){return _[_0xe673('0x2f')](_0x3422e2,function(_0x3ac719){if(_0x3ac719['sectionId']===0x709){_0x3ac719[_0xe673('0x64')]=_0x241996;}return _0x3ac719;});}else{var _0x5d14f1={'sectionId':0x76c,'enabled':0x1,'subsections':_0x241996};var _0x46066f=_[_0xe673('0x2f')](_0x3422e2);_0x46066f['push'](_0x5d14f1);return _0x46066f;}});}else{return;}})[_0xe673('0x2a')](function(_0x3cea39){if(_0x3cea39)_0x3422e2=_0x3cea39;return _[_0xe673('0x40')](_0x3422e2,[_0xe673('0x62'),0x1]);})[_0xe673('0x2a')](respondWithResult(_0x27e40e,null))[_0xe673('0x48')](handleError(_0x27e40e,null));};function hasDefaultDashboard(_0x359607){var _0x38464c=[0x65];return new BPromise(function(_0x4f31d8,_0x22477f){try{if(_0x359607[_0xe673('0x59')]){_0x4f31d8(_0x38464c);}else{return db['UserProfileResource'][_0xe673('0x65')]({'where':{'sectionId':_0x359607['id']},'raw':!![]})[_0xe673('0x2a')](function(_0x537e33){_0x537e33?_0x4f31d8(_0x38464c):_0x4f31d8();});}}catch(_0x56922e){_0x22477f(_0x56922e);}});}function getCustomDashboards(_0x1d5ab2){var _0xc0a7bf=[];return new BPromise(function(_0x58851a,_0x23e4b1){try{if(_0x1d5ab2['autoAssociation']){return db['Dashboard'][_0xe673('0x46')]({'raw':!![]})[_0xe673('0x2a')](function(_0x5a8e38){_0x5a8e38[_0xe673('0x66')](function(_0x5eb8a0){_0xc0a7bf[_0xe673('0x67')](_0x5eb8a0['id']+0x1869f);});_0x58851a(_0xc0a7bf);});}else{return db[_0xe673('0x5c')][_0xe673('0x46')]({'where':{'sectionId':_0x1d5ab2['id']},'raw':!![]})[_0xe673('0x2a')](function(_0x42cddf){_0x42cddf[_0xe673('0x66')](function(_0xa0298a){_0xc0a7bf[_0xe673('0x67')](_0xa0298a['resourceId']+0x1869f);});_0x58851a(_0xc0a7bf);});}}catch(_0x43c596){_0x23e4b1(_0x43c596);}});}function getPlugins(_0x311164){var _0x328ef0=[];return new BPromise(function(_0x2d4d14,_0x1d9555){try{if(_0x311164[_0xe673('0x59')]){return db[_0xe673('0x68')][_0xe673('0x46')]({'raw':!![]})[_0xe673('0x2a')](function(_0x2c769c){_0x2c769c[_0xe673('0x66')](function(_0xabe2f6){_0x328ef0[_0xe673('0x67')](_0xabe2f6['id']+0x15b38);});_0x2d4d14(_0x328ef0);});}else{return db[_0xe673('0x5c')][_0xe673('0x46')]({'where':{'sectionId':_0x311164['id']},'raw':!![]})[_0xe673('0x2a')](function(_0xb01062){_0xb01062[_0xe673('0x66')](function(_0x35d013){_0x328ef0[_0xe673('0x67')](_0x35d013['resourceId']+0x15b38);});_0x2d4d14(_0x328ef0);});}}catch(_0x58b0f4){_0x1d9555(_0x58b0f4);}});}exports['addResources']=function(_0x2fc934,_0x2e30ad){return db[_0xe673('0x30')][_0xe673('0x4c')]({'where':{'id':_0x2fc934[_0xe673('0x49')]['id']}})[_0xe673('0x2a')](handleEntityNotFound(_0x2e30ad,null))['then'](function(_0x158d35){if(_0x158d35){return db[_0xe673('0x55')]['transaction'](function(_0x516ed3){return db[_0xe673('0x57')][_0xe673('0x46')]({'where':{'userProfileId':_0x2fc934[_0xe673('0x49')]['id']},'attributes':['id'],'raw':!![]})['then'](function(_0x3c290e){if(_0x3c290e){return db[_0xe673('0x57')][_0xe673('0x2b')]({'where':{'userProfileId':_0x2fc934[_0xe673('0x49')]['id'],'id':_[_0xe673('0x2f')](_0x3c290e,function(_0x1e9734){return _0x1e9734['id'];})},'transaction':_0x516ed3});}})['then'](function(_0x5d551b){var _0x1a8aa4=_['map'](_0x2fc934['body'],function(_0x145383){_0x145383[_0xe673('0x69')]=_0x2fc934[_0xe673('0x49')]['id'];return _0x145383;});return db['UserProfileSection']['bulkCreate'](_0x1a8aa4,{'raw':!![],'transaction':_0x516ed3});})[_0xe673('0x2a')](function(_0xc7ea4a){var _0x2cc1aa=_[_0xe673('0x40')](_['map'](_0xc7ea4a,function(_0x5a4668){return _0x5a4668[_0xe673('0x50')]({'plain':!![]});}),{'includeAll':![]});if(_0x2cc1aa){return db[_0xe673('0x57')]['findAll']({'where':{'userProfileId':_0x2fc934[_0xe673('0x49')]['id'],'sectionId':_[_0xe673('0x2f')](_0x2cc1aa,function(_0x5cd75e){return _0x5cd75e['sectionId'];})},'attributes':['id','sectionId'],'raw':!![]})[_0xe673('0x2a')](function(_0x214d9f){var _0x35e080=_[_0xe673('0x2f')](_0x2fc934[_0xe673('0x4e')],function(_0x17a5a2){_0x17a5a2[_0xe673('0x69')]=_0x2fc934[_0xe673('0x49')]['id'];return _0x17a5a2;});return db['UserProfileResource']['bulkCreate'](_0x35e080,{'raw':!![],'transaction':_0x516ed3});});}})['catch'](handleError(_0x2e30ad,null));});}})[_0xe673('0x2a')](function(_0x38a259){var _0x8eba64=_[_0xe673('0x2f')](_0x38a259,function(_0x59e78c){return _0x59e78c['get']({'plain':!![]});});})[_0xe673('0x2a')](respondWithResult(_0x2e30ad,null))[_0xe673('0x48')](handleError(_0x2e30ad,null));};exports[_0xe673('0x6a')]=function(_0x5276b1,_0x57be4f,_0x2343d1){return db[_0xe673('0x30')]['find']({'where':{'id':_0x5276b1[_0xe673('0x49')]['id']}})[_0xe673('0x2a')](handleEntityNotFound(_0x57be4f,null))[_0xe673('0x2a')](function(_0x214480){if(_0x214480){return _0x214480[_0xe673('0x6a')](_0x5276b1['query'][_0xe673('0x60')]);}})[_0xe673('0x2a')](respondWithStatusCode(_0x57be4f,null))[_0xe673('0x48')](handleError(_0x57be4f,null));};exports[_0xe673('0x6b')]=function(_0x4e1d0b,_0x5a93bf){var _0x403533={};if(!_0x4e1d0b[_0xe673('0x35')][_0xe673('0x6c')])throw new Error('Missing\x20section\x20parameter');if(!_0x4e1d0b[_0xe673('0x35')]['hasOwnProperty']('nolimit')){_0x403533['limit']=qs[_0xe673('0x22')](_0x4e1d0b[_0xe673('0x35')]['limit']);_0x403533['offset']=qs[_0xe673('0x20')](_0x4e1d0b[_0xe673('0x35')]['offset']);}return db['UserProfile'][_0xe673('0x4c')]({'where':{'id':_0x4e1d0b[_0xe673('0x49')]['id']}})[_0xe673('0x2a')](function(_0xec1951){if(!_0xec1951)throw new Error('No\x20User\x20Profile\x20found\x20for\x20id\x20'+_0x4e1d0b[_0xe673('0x49')]['id']);return db['UserProfile'][_0xe673('0x6b')](_0x4e1d0b);})['then'](respondWithFilteredResult(_0x5a93bf,_0x403533))[_0xe673('0x48')](handleError(_0x5a93bf,null));};
\ No newline at end of file
index 80cf4fa..fc2080a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4910=['update','remove','emit','hasOwnProperty','hook','events','../../mysqldb','UserProfile','save'];(function(_0xa30766,_0x6f613e){var _0x24e780=function(_0x3d58fb){while(--_0x3d58fb){_0xa30766['push'](_0xa30766['shift']());}};_0x24e780(++_0x6f613e);}(_0x4910,0x1d9));var _0x0491=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0x4910[_0x502c7d];return _0x30b7ed;};'use strict';var EventEmitter=require(_0x0491('0x0'));var UserProfile=require(_0x0491('0x1'))['db'][_0x0491('0x2')];var UserProfileEvents=new EventEmitter();UserProfileEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x0491('0x3'),'afterUpdate':_0x0491('0x4'),'afterDestroy':_0x0491('0x5')};function emitEvent(_0x2fc9e8){return function(_0x408677,_0x51f40d,_0x1ecb19){UserProfileEvents[_0x0491('0x6')](_0x2fc9e8+':'+_0x408677['id'],_0x408677);UserProfileEvents[_0x0491('0x6')](_0x2fc9e8,_0x408677);_0x1ecb19(null);};}for(var e in events){if(events[_0x0491('0x7')](e)){var event=events[e];UserProfile[_0x0491('0x8')](e,emitEvent(event));}}module['exports']=UserProfileEvents;
\ No newline at end of file
+var _0x8a9a=['UserProfile','setMaxListeners','save','update','remove','emit','hook','../../mysqldb'];(function(_0x4af9e4,_0x1a3458){var _0x4b8c9b=function(_0x4170){while(--_0x4170){_0x4af9e4['push'](_0x4af9e4['shift']());}};_0x4b8c9b(++_0x1a3458);}(_0x8a9a,0x17f));var _0xa8a9=function(_0x1035c1,_0x2d8583){_0x1035c1=_0x1035c1-0x0;var _0x308d67=_0x8a9a[_0x1035c1];return _0x308d67;};'use strict';var EventEmitter=require('events');var UserProfile=require(_0xa8a9('0x0'))['db'][_0xa8a9('0x1')];var UserProfileEvents=new EventEmitter();UserProfileEvents[_0xa8a9('0x2')](0x0);var events={'afterCreate':_0xa8a9('0x3'),'afterUpdate':_0xa8a9('0x4'),'afterDestroy':_0xa8a9('0x5')};function emitEvent(_0x2d782d){return function(_0x9570dc,_0x3fcb8c,_0xe5e64b){UserProfileEvents[_0xa8a9('0x6')](_0x2d782d+':'+_0x9570dc['id'],_0x9570dc);UserProfileEvents[_0xa8a9('0x6')](_0x2d782d,_0x9570dc);_0xe5e64b(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];UserProfile[_0xa8a9('0x7')](e,emitEvent(event));}}module['exports']=UserProfileEvents;
\ No newline at end of file
index 04e4e26..22ddd28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x540a=['toUpperCase','slice','Sequelize','QueryTypes','SELECT','select','InteractionId','ui.createdAt','from','user_has_','_interactions','ui.UserId\x20=\x20?','sequelize','query','OpenTabs','define','user_profiles','raw','section','mergeResources','Invalid\x20section\x20\x27','length','push','UserProfileSection','params','all','isEmpty','union','ignore','autoAssociation','rawAttributes','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','limit','offset','order','sort','where','pick','merge','key','VIRTUAL','find','foreignKey','forEach','options','include','reportType','default','DefaultReports','custom','reportId','CustomReports','count','rows','ids','customSorting','extraQueryConditions','includeAll','CmContact','Tags','color','ThroughTags','tag','true','chat','dataValues','sms','fax','mail','openchannel','whatsapp','./userProfile.attributes','../../components/parsers/qs','squel','exports','models','filter','field','findAll','then','associatedResources','map','value','model','catch','resolve','UserProfileResource','AnalyticExtractedReport','resourceId','toLowerCase','squareprojects','childModel','SquareProject','odbc','SquareOdbc','SquareRecording','parentSections','SquareProjects','projectName','Lists','lists','CmList','companies','CmCompany','globalcustomfields','CmCustomField','chatqueues','ChatQueue','faxqueues','FaxQueue','inboundroutes','outboundroutes','VoiceExtension','VoiceContext','voicemails','VoiceMail','voicerecordings','VoiceRecording','membername','agent','Telephones','name','User','role','VoiceQueues','queue','VoiceQueue','inbound','QueueCampaigns','type','musiconholds','VoiceMusicOnHold','chanspies','VoiceChanSpy','VoicePrefix','ivrcampaigns','Campaign','mailqueues','mailaccounts','MailAccount','mailsubstatuses','MailSubstatus','openchannelqueues','OpenchannelQueue','openchannelaccounts','OpenchannelAccount','smsqueues','SmsQueue','smsaccounts','SmsAccount','whatsappqueues','WhatsappQueue','WhatsappAccount','teams','Team','users','agents','telephones','Users','admin','Agents','zendeskaccounts','salesforceaccounts','SalesforceAccount','FreshdeskAccount','sugarcrmaccounts','SugarcrmAccount','deskaccounts','DeskAccount','zohoaccounts','vtigeraccounts','CannedAnswer','dispositions','Disposition','customdashboards','Dashboard','Interval','pauses','Pause','scheduler','Schedule','sounds','Tag','templates','triggers','Trunk','variables','Variable','plugins','extractedreports','Reports','metrics','AnalyticMetric','charAt'];(function(_0x2e45db,_0xac82b2){var _0x22310e=function(_0x584881){while(--_0x584881){_0x2e45db['push'](_0x2e45db['shift']());}};_0x22310e(++_0xac82b2);}(_0x540a,0x1dd));var _0xa540=function(_0x3f801e,_0x2b543b){_0x3f801e=_0x3f801e-0x0;var _0x30a9b7=_0x540a[_0x3f801e];return _0x30a9b7;};'use strict';var _=require('lodash');var attributes=require(_0xa540('0x0'));var qs=require(_0xa540('0x1'));var squel=require(_0xa540('0x2'));module[_0xa540('0x3')]=function(_0x550586){var _0x2e22dd=_0x550586[_0xa540('0x4')];function _0x4cf7e8(_0x36215f,_0x151b9a){return new Promise(function(_0x326339,_0x1c9706){if(!_0x151b9a)return _0x326339(null);var _0x1c010b=_0x151b9a[_0xa540('0x5')]?{[_0x151b9a['filter'][_0xa540('0x6')]]:_0x151b9a[_0xa540('0x5')]['value']}:undefined;return _0x2e22dd[_0x36215f][_0xa540('0x7')]({'where':_0x1c010b,'raw':!![]})[_0xa540('0x8')](function(_0x57b460){_0x151b9a[_0xa540('0x9')]=_[_0xa540('0xa')](_0x57b460,'id');_0x326339(_0x151b9a);})['catch'](function(_0x2933e9){_0x1c9706(_0x2933e9);});});}function _0x15399e(_0x46d3d4,_0xaf2a0){return new Promise(function(_0x5e7b89,_0x582963){var _0x5351fe=_0x46d3d4[_0xa540('0x5')]?{[_0x46d3d4[_0xa540('0x5')][_0xa540('0x6')]]:_0x46d3d4[_0xa540('0x5')][_0xa540('0xb')]}:undefined;return _0x2e22dd[_0x46d3d4[_0xa540('0xc')]][_0xa540('0x7')]({'where':_0x5351fe,'raw':!![]})['then'](function(_0x2926ca){_0xaf2a0[_0xa540('0x9')]=_[_0xa540('0xa')](_0x2926ca,function(_0x481e0f){return _0x481e0f['name'];});_0x5e7b89(_0xaf2a0);})[_0xa540('0xd')](function(_0xa2b516){_0x582963(_0xa2b516);});});}function _0x4fa8ba(_0x2b6413,_0x331eb6,_0x5c9c60){if(!_0x331eb6)return Promise[_0xa540('0xe')](null);return new Promise(function(_0x33f5e9,_0x5caeef){return _0x2e22dd[_0xa540('0xf')][_0xa540('0x7')]({'where':{'sectionId':_0x331eb6['id']},'raw':!![]})[_0xa540('0x8')](function(_0x24c2e2){if(_0x2b6413[_0xa540('0x6')]&&_0x2b6413['field']!=='id'){_0x331eb6[_0xa540('0x9')]=_[_0xa540('0xa')](_0x24c2e2,function(_0x558ab8){return _0x558ab8[_0x2b6413[_0xa540('0x6')]];});}else{if(_0x5c9c60===_0xa540('0x10')){_0x331eb6[_0xa540('0x9')]=_[_0xa540('0xa')](_0x24c2e2,function(_0x40c327){return{'id':_0x40c327[_0xa540('0x11')],'type':_0x40c327['type']};});}else{_0x331eb6[_0xa540('0x9')]=_[_0xa540('0xa')](_0x24c2e2,function(_0xa5bb8d){return _0xa5bb8d['resourceId'];});}}_0x33f5e9(_0x331eb6);})['catch'](function(_0x2187ee){_0x5caeef(_0x2187ee);});});}function _0x2fc61e(_0x555020,_0x53fbc8){var _0xd9e1d4={'parentSections':[]};switch(_0x555020[_0xa540('0x12')]()){case _0xa540('0x13'):_0xd9e1d4[_0xa540('0x14')]=_0xa540('0x15');break;case _0xa540('0x16'):_0xd9e1d4[_0xa540('0x14')]=_0xa540('0x17');break;case'squarerecordings':_0xd9e1d4['childModel']=_0xa540('0x18');_0xd9e1d4[_0xa540('0x19')]=[{'name':_0xa540('0x1a'),'field':'name','foreignKey':_0xa540('0x1b')}];break;case'projects':_0xd9e1d4[_0xa540('0x14')]='JscriptyProject';break;case'contacts':_0xd9e1d4[_0xa540('0x14')]='CmContact';_0xd9e1d4['parentSections']=[{'name':_0xa540('0x1c'),'field':'id','foreignKey':'ListId'}];break;case _0xa540('0x1d'):_0xd9e1d4[_0xa540('0x14')]=_0xa540('0x1e');break;case _0xa540('0x1f'):_0xd9e1d4['childModel']=_0xa540('0x20');break;case _0xa540('0x21'):_0xd9e1d4[_0xa540('0x14')]=_0xa540('0x22');break;case _0xa540('0x23'):_0xd9e1d4[_0xa540('0x14')]=_0xa540('0x24');break;case'chatwebsites':_0xd9e1d4[_0xa540('0x14')]='ChatWebsite';break;case _0xa540('0x25'):_0xd9e1d4['childModel']=_0xa540('0x26');break;case'faxaccounts':_0xd9e1d4['childModel']='FaxAccount';break;case _0xa540('0x27'):case'internalroutes':case _0xa540('0x28'):_0xd9e1d4['childModel']=_0xa540('0x29');break;case'contexts':_0xd9e1d4['childModel']=_0xa540('0x2a');break;case _0xa540('0x2b'):_0xd9e1d4[_0xa540('0x14')]=_0xa540('0x2c');break;case _0xa540('0x2d'):_0xd9e1d4['childModel']=_0xa540('0x2e');_0xd9e1d4[_0xa540('0x19')]=[{'name':'Agents','field':'name','foreignKey':_0xa540('0x2f'),'model':'User','filter':{'field':'role','value':[_0xa540('0x30')]}},{'name':_0xa540('0x31'),'field':_0xa540('0x32'),'foreignKey':_0xa540('0x2f'),'model':_0xa540('0x33'),'filter':{'field':_0xa540('0x34'),'value':['telephone']}},{'name':_0xa540('0x35'),'field':_0xa540('0x32'),'foreignKey':_0xa540('0x36'),'model':_0xa540('0x37'),'filter':{'field':'type','value':[_0xa540('0x38')]}},{'name':_0xa540('0x39'),'field':_0xa540('0x32'),'foreignKey':_0xa540('0x36'),'model':'VoiceQueue','filter':{'field':_0xa540('0x3a'),'value':['outbound']}}];break;case _0xa540('0x3b'):_0xd9e1d4['childModel']=_0xa540('0x3c');break;case _0xa540('0x3d'):_0xd9e1d4[_0xa540('0x14')]=_0xa540('0x3e');break;case'voiceprefixes':_0xd9e1d4[_0xa540('0x14')]=_0xa540('0x3f');break;case _0xa540('0x40'):_0xd9e1d4[_0xa540('0x14')]=_0xa540('0x41');break;case _0xa540('0x42'):_0xd9e1d4[_0xa540('0x14')]='MailQueue';break;case _0xa540('0x43'):_0xd9e1d4[_0xa540('0x14')]=_0xa540('0x44');break;case _0xa540('0x45'):_0xd9e1d4[_0xa540('0x14')]=_0xa540('0x46');break;case _0xa540('0x47'):_0xd9e1d4[_0xa540('0x14')]=_0xa540('0x48');break;case _0xa540('0x49'):_0xd9e1d4[_0xa540('0x14')]=_0xa540('0x4a');break;case _0xa540('0x4b'):_0xd9e1d4[_0xa540('0x14')]=_0xa540('0x4c');break;case _0xa540('0x4d'):_0xd9e1d4[_0xa540('0x14')]=_0xa540('0x4e');break;case _0xa540('0x4f'):_0xd9e1d4['childModel']=_0xa540('0x50');break;case'whatsappaccounts':_0xd9e1d4[_0xa540('0x14')]=_0xa540('0x51');break;case _0xa540('0x52'):_0xd9e1d4[_0xa540('0x14')]=_0xa540('0x53');break;case'voicequeues':case'queuecampaigns':_0xd9e1d4[_0xa540('0x14')]=_0xa540('0x37');if(_0x53fbc8){_0xd9e1d4[_0xa540('0x19')]=[{'name':_0xa540('0x35')},{'name':_0xa540('0x39')}];}break;case _0xa540('0x54'):case _0xa540('0x55'):case _0xa540('0x56'):_0xd9e1d4[_0xa540('0x14')]='User';if(_0x53fbc8){_0xd9e1d4[_0xa540('0x19')]=[{'name':_0xa540('0x57'),'filter':{'field':_0xa540('0x34'),'value':[_0xa540('0x58'),'user']},'ignore':!![]},{'name':_0xa540('0x59')},{'name':_0xa540('0x31')}];}break;case _0xa540('0x5a'):_0xd9e1d4[_0xa540('0x14')]='ZendeskAccount';break;case _0xa540('0x5b'):_0xd9e1d4['childModel']=_0xa540('0x5c');break;case'freshdeskaccounts':_0xd9e1d4[_0xa540('0x14')]=_0xa540('0x5d');break;case _0xa540('0x5e'):_0xd9e1d4[_0xa540('0x14')]=_0xa540('0x5f');break;case _0xa540('0x60'):_0xd9e1d4['childModel']=_0xa540('0x61');break;case _0xa540('0x62'):_0xd9e1d4[_0xa540('0x14')]='ZohoAccount';break;case _0xa540('0x63'):_0xd9e1d4[_0xa540('0x14')]=_0xa540('0x33');break;case'cannedanswers':_0xd9e1d4['childModel']=_0xa540('0x64');break;case _0xa540('0x65'):_0xd9e1d4[_0xa540('0x14')]=_0xa540('0x66');break;case _0xa540('0x67'):_0xd9e1d4[_0xa540('0x14')]=_0xa540('0x68');break;case'intervals':_0xd9e1d4['childModel']=_0xa540('0x69');break;case _0xa540('0x6a'):_0xd9e1d4[_0xa540('0x14')]=_0xa540('0x6b');break;case _0xa540('0x6c'):_0xd9e1d4['childModel']=_0xa540('0x6d');break;case _0xa540('0x6e'):_0xd9e1d4[_0xa540('0x14')]='Sound';break;case'tags':_0xd9e1d4[_0xa540('0x14')]=_0xa540('0x6f');break;case _0xa540('0x70'):_0xd9e1d4[_0xa540('0x14')]='Template';break;case _0xa540('0x71'):_0xd9e1d4[_0xa540('0x14')]='Trigger';break;case'trunks':_0xd9e1d4[_0xa540('0x14')]=_0xa540('0x72');break;case _0xa540('0x73'):_0xd9e1d4[_0xa540('0x14')]=_0xa540('0x74');break;case _0xa540('0x75'):_0xd9e1d4[_0xa540('0x14')]='Plugin';break;case _0xa540('0x76'):_0xd9e1d4[_0xa540('0x14')]='AnalyticExtractedReport';_0xd9e1d4['parentSections']=[{'name':_0xa540('0x77'),'field':'id','foreignKey':'reportId'}];break;case _0xa540('0x78'):_0xd9e1d4[_0xa540('0x14')]=_0xa540('0x79');break;}return _0xd9e1d4;}function _0x5540e9(_0x300890,_0x2d25ac){var _0x18cb8d=_0x300890[_0xa540('0x7a')](0x0)[_0xa540('0x7b')]()+_0x300890[_0xa540('0x7c')](0x1);var _0x331c29={'type':_0x2e22dd[_0xa540('0x7d')][_0xa540('0x7e')][_0xa540('0x7f')],'raw':!![]};return new Promise(function(_0x359bdf,_0x5c0ad2){var _0x141e80=squel[_0xa540('0x80')]()[_0xa540('0x6')]('ui.'+_0x18cb8d+_0xa540('0x81'),'id')['field'](_0xa540('0x82'))[_0xa540('0x83')](_0xa540('0x84')+_0x300890+_0xa540('0x85'),'ui')['where'](_0xa540('0x86'),_0x2d25ac['id']);return _0x2e22dd[_0xa540('0x87')][_0xa540('0x88')](_0x141e80['toString'](),_0x331c29)['then'](function(_0x17d4c9){_0x2d25ac[_0x18cb8d+_0xa540('0x89')]=_0x17d4c9;_0x359bdf(_0x17d4c9);})[_0xa540('0xd')](function(_0x42dbad){_0x5c0ad2(_0x42dbad);});});}return _0x550586[_0xa540('0x8a')]('UserProfile',attributes,{'tableName':_0xa540('0x8b'),'paranoid':![],'indexes':[],'timestamps':!![],'classMethods':{'getResources':function(_0x534691){var _0x46dafd={'raw':_0x534691[_0xa540('0x88')][_0xa540('0x8c')],'where':{}};var _0x580199={};var _0x18c8b4={'count':0x0,'rows':[]};var _0x2d5965=_0x534691['query'][_0xa540('0x8d')];var _0x4dbafd=_0x534691[_0xa540('0x88')][_0xa540('0x8e')]||![];var _0x187766=_0x2fc61e(_0x2d5965,_0x4dbafd);if(!_0x187766[_0xa540('0x14')])throw new Error(_0xa540('0x8f')+_0x2d5965+'\x27');var _0x10add0=[{'name':_0x2d5965}];if(!_['isEmpty'](_0x187766[_0xa540('0x19')]))_0x10add0=_0x187766[_0xa540('0x19')];var _0x21a598=[];for(var _0x280432=0x0;_0x280432<_0x10add0[_0xa540('0x90')];_0x280432++){_0x21a598[_0xa540('0x91')](_0x2e22dd[_0xa540('0x92')]['find']({'where':{'userProfileId':_0x534691[_0xa540('0x93')]['id'],'name':_0x10add0[_0x280432]['name']},'raw':!![]}));}return Promise[_0xa540('0x94')](_0x21a598)['then'](function(_0x4d5096){var _0x3829c9=_['filter'](_0x4d5096,function(_0x3250d8){return _0x3250d8?_0x3250d8:undefined;});var _0x3e7803=_['filter'](_0x10add0,['ignore',!![]]);var _0xd7eef2=_[_0xa540('0x95')](_0x3829c9)&&_[_0xa540('0x95')](_0x3e7803)?null:_[_0xa540('0x96')](_0x3e7803,_0x3829c9);if(!_0xd7eef2)return null;var _0xbe17cb=[];for(var _0x3c6206=0x0;_0x3c6206<_0xd7eef2['length'];_0x3c6206++){var _0x2a824f=_['find'](_0x10add0,function(_0x1c6518){return _0xd7eef2[_0x3c6206]?_0x1c6518[_0xa540('0x32')]===_0xd7eef2[_0x3c6206][_0xa540('0x32')]:null;});if(_0x2a824f){if(_0xd7eef2[_0x3c6206][_0xa540('0x97')]){_0xbe17cb['push'](_0x4cf7e8(_0x187766[_0xa540('0x14')],_0xd7eef2[_0x3c6206]));}else{if(!_0xd7eef2[_0x3c6206][_0xa540('0x98')]){_0xbe17cb[_0xa540('0x91')](_0x4fa8ba(_0x2a824f,_0xd7eef2[_0x3c6206],_0x187766[_0xa540('0x14')]));}else{if(_0x2a824f[_0xa540('0xc')]){_0xbe17cb[_0xa540('0x91')](_0x15399e(_0x2a824f,_0xd7eef2[_0x3c6206]));}}}}}return Promise[_0xa540('0x94')](_0xbe17cb);})['then'](function(_0x1ad404){var _0x139c2a=_0x1ad404;var _0x528fce=null;if(_0x139c2a){_0x528fce=_0x139c2a['length']===0x1?_0x139c2a[0x0]:null;}if(!_0x528fce&&!_0x139c2a)return _0x18c8b4;var _0x21fa59=_0x2e22dd[_0x187766['childModel']][_0xa540('0x99')];_0x580199['model']=_[_0xa540('0x9a')](_0x21fa59);_0x580199['query']=_[_0xa540('0x9a')](_0x534691['query']);_0x580199[_0xa540('0x9b')]=_[_0xa540('0x9c')](_0x580199[_0xa540('0xc')],_0x580199[_0xa540('0x88')]);_0x46dafd[_0xa540('0x9d')]=_[_0xa540('0x9c')](_0x580199[_0xa540('0xc')],qs['fields'](_0x534691[_0xa540('0x88')][_0xa540('0x9e')]));_0x46dafd[_0xa540('0x9d')]=_0x46dafd[_0xa540('0x9d')][_0xa540('0x90')]?_0x46dafd[_0xa540('0x9d')]:_0x580199['model'];if(!_0x534691[_0xa540('0x88')][_0xa540('0x9f')](_0xa540('0xa0'))){_0x46dafd[_0xa540('0xa1')]=qs['limit'](_0x534691[_0xa540('0x88')][_0xa540('0xa1')]);_0x46dafd[_0xa540('0xa2')]=qs[_0xa540('0xa2')](_0x534691['query'][_0xa540('0xa2')]);}_0x46dafd[_0xa540('0xa3')]=qs[_0xa540('0xa4')](_0x534691[_0xa540('0x88')][_0xa540('0xa4')]);_0x46dafd[_0xa540('0xa5')]=qs[_0xa540('0x9b')](_[_0xa540('0xa6')](_0x534691['query'],_0x580199[_0xa540('0x9b')]));if(_0x534691[_0xa540('0x88')]['filter']){_0x46dafd['where']=_[_0xa540('0xa7')](_0x46dafd[_0xa540('0xa5')],{'$or':_[_0xa540('0xa')](_0x21fa59,function(_0x591e37){if(_0x591e37[_0xa540('0x3a')][_0xa540('0xa8')]!==_0xa540('0xa9')){var _0x433285={};_0x433285[_0x591e37[_0xa540('0x6')]]={'$like':'%'+_0x534691[_0xa540('0x88')]['filter']+'%'};return _0x433285;}})});}var _0x12c024=[];var _0x14ffab=null;var _0x4843f1={};if(_0x528fce){_0x14ffab=_[_0xa540('0xaa')](_0x10add0,[_0xa540('0x32'),_0x528fce[_0xa540('0x32')]]);if(_0x14ffab['field']){_0x4843f1={};if(_0x187766[_0xa540('0x14')]===_0xa540('0x10')){_0x4843f1[_0x14ffab[_0xa540('0xab')]]=_['map'](_0x528fce[_0xa540('0x9')],'id');}else{_0x4843f1[_0x14ffab['foreignKey']]=_0x528fce['associatedResources'];}_0x12c024[_0xa540('0x91')](_0x4843f1);}else{_0x46dafd[_0xa540('0xa5')]['id']=_0x528fce[_0xa540('0x9')];}}else{for(var _0x17d7ac=0x0;_0x17d7ac<_0x139c2a[_0xa540('0x90')];_0x17d7ac++){_0x14ffab=_[_0xa540('0xaa')](_0x10add0,[_0xa540('0x32'),_0x139c2a[_0x17d7ac][_0xa540('0x32')]]);if(_0x14ffab['field']){_0x4843f1={};_0x4843f1[_0x14ffab[_0xa540('0xab')]]=_0x139c2a[_0x17d7ac][_0xa540('0x9')];_0x12c024[_0xa540('0x91')](_0x4843f1);}else{if(!_0x46dafd['where']['id'])_0x46dafd[_0xa540('0xa5')]['id']=[];_0x139c2a[_0x17d7ac][_0xa540('0x9')][_0xa540('0xac')](function(_0x4e2509){_0x46dafd[_0xa540('0xa5')]['id'][_0xa540('0x91')](_0x4e2509);});}}}if(!_[_0xa540('0x95')](_0x12c024)){_0x46dafd[_0xa540('0xa5')]=_[_0xa540('0xa7')](_0x46dafd['where'],{'$and':{'$or':_0x12c024}});}_0x46dafd=_[_0xa540('0xa7')]({},_0x46dafd,_0x534691[_0xa540('0xad')]);if(_0x528fce&&!_0x528fce[_0xa540('0x98')]&&_0x187766[_0xa540('0x14')]===_0xa540('0x10')){if(_0x534691[_0xa540('0x88')]['includeAll']){_0x46dafd[_0xa540('0xae')]=[{'all':!![]}];}return _0x2e22dd[_0x187766['childModel']][_0xa540('0x7')](_0x46dafd)[_0xa540('0x8')](function(_0x42e8ee){var _0x1c08dd=[];_0x42e8ee[_0xa540('0xac')](function(_0x2637ce){var _0x128482;switch(_0x2637ce[_0xa540('0xaf')]){case _0xa540('0xb0'):_0x128482=_[_0xa540('0xaa')](_0x528fce[_0xa540('0x9')],function(_0x3f8e91){return _0x3f8e91['id']===_0x2637ce['reportId']&&_0x3f8e91[_0xa540('0x3a')]===_0xa540('0xb1');});break;case _0xa540('0xb2'):_0x128482=_[_0xa540('0xaa')](_0x528fce[_0xa540('0x9')],function(_0xad6a1a){return _0xad6a1a['id']===_0x2637ce[_0xa540('0xb3')]&&_0xad6a1a[_0xa540('0x3a')]===_0xa540('0xb4');});break;}if(_0x128482)_0x1c08dd[_0xa540('0x91')](_0x2637ce);});_0x18c8b4[_0xa540('0xb5')]=_0x1c08dd[_0xa540('0x90')];_0x18c8b4[_0xa540('0xb6')]=_0x1c08dd;return _0x18c8b4;});}else{if(!_[_0xa540('0x95')](_0x534691['query'][_0xa540('0xb7')])){_0x46dafd[_0xa540('0xa5')]['id']=_0x46dafd['where']['id']?_[_0xa540('0x9c')](_0x46dafd['where']['id'],_0x534691[_0xa540('0x88')][_0xa540('0xb7')]):_0x534691[_0xa540('0x88')][_0xa540('0xb7')];if(_0x534691[_0xa540('0x88')][_0xa540('0xb8')]){_0x46dafd[_0xa540('0xa3')]=_0x534691[_0xa540('0x88')][_0xa540('0xb8')];}}if(_0x534691[_0xa540('0x88')][_0xa540('0xb9')]){_0x46dafd['where']=_[_0xa540('0xa7')](_0x46dafd[_0xa540('0xa5')],{'$and':_0x534691[_0xa540('0x88')][_0xa540('0xb9')]});}return _0x2e22dd[_0x187766['childModel']][_0xa540('0xb5')]({'where':_0x46dafd[_0xa540('0xa5')]})[_0xa540('0x8')](function(_0xc6ce85){_0x18c8b4['count']=_0xc6ce85;if(_0x534691[_0xa540('0x88')][_0xa540('0xba')]){if(_0x187766['childModel']===_0xa540('0xbb')){_0x46dafd[_0xa540('0xae')]=[{'model':_0x2e22dd[_0xa540('0x6f')],'as':_0xa540('0xbc'),'attributes':['id','name',_0xa540('0xbd')],'required':_0x534691['query']['tag']?!![]:![]},{'model':_0x2e22dd['Tag'],'as':_0xa540('0xbe'),'attributes':['id','name',_0xa540('0xbd')],'through':_0x534691[_0xa540('0x88')][_0xa540('0xbf')]?{'attributes':[],'where':{'TagId':_0x534691[_0xa540('0x88')]['tag']||undefined}}:{},'required':_0x534691[_0xa540('0x88')][_0xa540('0xbf')]?!![]:![]}];}else{_0x46dafd[_0xa540('0xae')]=[{'all':!![]}];}}return _0x2e22dd[_0x187766[_0xa540('0x14')]][_0xa540('0x7')](_0x46dafd);})['then'](function(_0x24fd5c){_0x18c8b4[_0xa540('0xb6')]=_0x24fd5c;if(_0x2d5965===_0xa540('0x59')&&_0x534691[_0xa540('0x88')]['openTabs']===_0xa540('0xc0')){var _0x136095=[];for(var _0x22d75b=0x0;_0x22d75b<_0x18c8b4['rows']['length'];_0x22d75b++){_0x136095[_0xa540('0x91')](_0x5540e9(_0xa540('0xc1'),_0x18c8b4[_0xa540('0xb6')][_0x22d75b][_0xa540('0xc2')]));_0x136095['push'](_0x5540e9(_0xa540('0xc3'),_0x18c8b4[_0xa540('0xb6')][_0x22d75b][_0xa540('0xc2')]));_0x136095[_0xa540('0x91')](_0x5540e9(_0xa540('0xc4'),_0x18c8b4[_0xa540('0xb6')][_0x22d75b][_0xa540('0xc2')]));_0x136095['push'](_0x5540e9(_0xa540('0xc5'),_0x18c8b4[_0xa540('0xb6')][_0x22d75b][_0xa540('0xc2')]));_0x136095[_0xa540('0x91')](_0x5540e9(_0xa540('0xc6'),_0x18c8b4['rows'][_0x22d75b][_0xa540('0xc2')]));_0x136095[_0xa540('0x91')](_0x5540e9(_0xa540('0xc7'),_0x18c8b4['rows'][_0x22d75b][_0xa540('0xc2')]));}return Promise[_0xa540('0x94')](_0x136095)[_0xa540('0x8')](function(){return _0x18c8b4;});}return _0x18c8b4;});}});}}});};
\ No newline at end of file
+var _0xb97d=['Agents','membername','User','role','Telephones','telephone','VoiceQueues','queue','VoiceQueue','inbound','outbound','musiconholds','chanspies','VoiceChanSpy','voiceprefixes','VoicePrefix','ivrcampaigns','Campaign','mailqueues','MailQueue','mailsubstatuses','MailSubstatus','openchannelqueues','OpenchannelQueue','openchannelaccounts','OpenchannelAccount','smsqueues','smsaccounts','SmsAccount','whatsappqueues','WhatsappQueue','whatsappaccounts','WhatsappAccount','teams','voicequeues','queuecampaigns','QueueCampaigns','users','telephones','admin','zendeskaccounts','ZendeskAccount','salesforceaccounts','SalesforceAccount','freshdeskaccounts','FreshdeskAccount','sugarcrmaccounts','deskaccounts','DeskAccount','zohoaccounts','ZohoAccount','vtigeraccounts','cannedanswers','CannedAnswer','dispositions','Disposition','intervals','Interval','sounds','Sound','Tag','templates','Template','Trigger','trunks','Trunk','Variable','plugins','Plugin','extractedreports','AnalyticExtractedReport','Reports','reportId','metrics','AnalyticMetric','toUpperCase','slice','Sequelize','QueryTypes','SELECT','select','ui.','user_has_','_interactions','where','sequelize','query','toString','define','UserProfile','user_profiles','raw','section','mergeResources','Invalid\x20section\x20\x27','isEmpty','length','UserProfileSection','find','params','ignore','union','push','autoAssociation','model','rawAttributes','keys','filters','intersection','attributes','fields','hasOwnProperty','limit','offset','order','sort','pick','merge','key','VIRTUAL','foreignKey','options','includeAll','include','forEach','default','custom','CustomReports','count','rows','ids','customSorting','extraQueryConditions','Tags','color','tag','ThroughTags','openTabs','true','dataValues','sms','mail','openchannel','whatsapp','all','lodash','./userProfile.attributes','../../components/parsers/qs','squel','exports','models','filter','then','associatedResources','catch','field','value','findAll','name','map','resourceId','type','toLowerCase','squareprojects','childModel','SquareOdbc','squarerecordings','parentSections','SquareProjects','projectName','projects','JscriptyProject','CmContact','lists','CmList','companies','globalcustomfields','CmCustomField','chatqueues','ChatQueue','chatwebsites','FaxQueue','faxaccounts','FaxAccount','internalroutes','outboundroutes','VoiceExtension','contexts','VoiceContext','voicemails','VoiceMail','voicerecordings','VoiceRecording'];(function(_0x3227d0,_0xa369ea){var _0x36edea=function(_0x1bd874){while(--_0x1bd874){_0x3227d0['push'](_0x3227d0['shift']());}};_0x36edea(++_0xa369ea);}(_0xb97d,0x91));var _0xdb97=function(_0x43d11d,_0xccff91){_0x43d11d=_0x43d11d-0x0;var _0x38cd08=_0xb97d[_0x43d11d];return _0x38cd08;};'use strict';var _=require(_0xdb97('0x0'));var attributes=require(_0xdb97('0x1'));var qs=require(_0xdb97('0x2'));var squel=require(_0xdb97('0x3'));module[_0xdb97('0x4')]=function(_0x4535b2){var _0x537500=_0x4535b2[_0xdb97('0x5')];function _0x4d5941(_0x5f2958,_0x11f959){return new Promise(function(_0x362d0b,_0x3ca856){if(!_0x11f959)return _0x362d0b(null);var _0x5e32c8=_0x11f959['filter']?{[_0x11f959[_0xdb97('0x6')]['field']]:_0x11f959[_0xdb97('0x6')]['value']}:undefined;return _0x537500[_0x5f2958]['findAll']({'where':_0x5e32c8,'raw':!![]})[_0xdb97('0x7')](function(_0x14db77){_0x11f959[_0xdb97('0x8')]=_['map'](_0x14db77,'id');_0x362d0b(_0x11f959);})[_0xdb97('0x9')](function(_0x5281f4){_0x3ca856(_0x5281f4);});});}function _0x1c8f1a(_0x500fe2,_0x1baccb){return new Promise(function(_0x48b559,_0x165a08){var _0x4f1164=_0x500fe2['filter']?{[_0x500fe2[_0xdb97('0x6')][_0xdb97('0xa')]]:_0x500fe2[_0xdb97('0x6')][_0xdb97('0xb')]}:undefined;return _0x537500[_0x500fe2['model']][_0xdb97('0xc')]({'where':_0x4f1164,'raw':!![]})[_0xdb97('0x7')](function(_0x14c691){_0x1baccb[_0xdb97('0x8')]=_['map'](_0x14c691,function(_0x58d5ec){return _0x58d5ec[_0xdb97('0xd')];});_0x48b559(_0x1baccb);})[_0xdb97('0x9')](function(_0x31b8c2){_0x165a08(_0x31b8c2);});});}function _0x1a3dc0(_0x50d82f,_0x5146b0,_0x550311){if(!_0x5146b0)return Promise['resolve'](null);return new Promise(function(_0x35c1ca,_0x53a821){return _0x537500['UserProfileResource'][_0xdb97('0xc')]({'where':{'sectionId':_0x5146b0['id']},'raw':!![]})[_0xdb97('0x7')](function(_0x562128){if(_0x50d82f[_0xdb97('0xa')]&&_0x50d82f[_0xdb97('0xa')]!=='id'){_0x5146b0[_0xdb97('0x8')]=_[_0xdb97('0xe')](_0x562128,function(_0xd69bce){return _0xd69bce[_0x50d82f['field']];});}else{if(_0x550311==='AnalyticExtractedReport'){_0x5146b0[_0xdb97('0x8')]=_[_0xdb97('0xe')](_0x562128,function(_0x174f07){return{'id':_0x174f07[_0xdb97('0xf')],'type':_0x174f07[_0xdb97('0x10')]};});}else{_0x5146b0[_0xdb97('0x8')]=_[_0xdb97('0xe')](_0x562128,function(_0x266ca9){return _0x266ca9[_0xdb97('0xf')];});}}_0x35c1ca(_0x5146b0);})[_0xdb97('0x9')](function(_0x29ede1){_0x53a821(_0x29ede1);});});}function _0x2ba36b(_0x4ab52d,_0x4dc4ea){var _0x1f740d={'parentSections':[]};switch(_0x4ab52d[_0xdb97('0x11')]()){case _0xdb97('0x12'):_0x1f740d[_0xdb97('0x13')]='SquareProject';break;case'odbc':_0x1f740d['childModel']=_0xdb97('0x14');break;case _0xdb97('0x15'):_0x1f740d[_0xdb97('0x13')]='SquareRecording';_0x1f740d[_0xdb97('0x16')]=[{'name':_0xdb97('0x17'),'field':_0xdb97('0xd'),'foreignKey':_0xdb97('0x18')}];break;case _0xdb97('0x19'):_0x1f740d[_0xdb97('0x13')]=_0xdb97('0x1a');break;case'contacts':_0x1f740d['childModel']=_0xdb97('0x1b');_0x1f740d[_0xdb97('0x16')]=[{'name':'Lists','field':'id','foreignKey':'ListId'}];break;case _0xdb97('0x1c'):_0x1f740d[_0xdb97('0x13')]=_0xdb97('0x1d');break;case _0xdb97('0x1e'):_0x1f740d[_0xdb97('0x13')]='CmCompany';break;case _0xdb97('0x1f'):_0x1f740d[_0xdb97('0x13')]=_0xdb97('0x20');break;case _0xdb97('0x21'):_0x1f740d[_0xdb97('0x13')]=_0xdb97('0x22');break;case _0xdb97('0x23'):_0x1f740d[_0xdb97('0x13')]='ChatWebsite';break;case'faxqueues':_0x1f740d[_0xdb97('0x13')]=_0xdb97('0x24');break;case _0xdb97('0x25'):_0x1f740d[_0xdb97('0x13')]=_0xdb97('0x26');break;case'inboundroutes':case _0xdb97('0x27'):case _0xdb97('0x28'):_0x1f740d['childModel']=_0xdb97('0x29');break;case _0xdb97('0x2a'):_0x1f740d[_0xdb97('0x13')]=_0xdb97('0x2b');break;case _0xdb97('0x2c'):_0x1f740d[_0xdb97('0x13')]=_0xdb97('0x2d');break;case _0xdb97('0x2e'):_0x1f740d[_0xdb97('0x13')]=_0xdb97('0x2f');_0x1f740d[_0xdb97('0x16')]=[{'name':_0xdb97('0x30'),'field':_0xdb97('0xd'),'foreignKey':_0xdb97('0x31'),'model':_0xdb97('0x32'),'filter':{'field':_0xdb97('0x33'),'value':['agent']}},{'name':_0xdb97('0x34'),'field':_0xdb97('0xd'),'foreignKey':'membername','model':'User','filter':{'field':'role','value':[_0xdb97('0x35')]}},{'name':_0xdb97('0x36'),'field':_0xdb97('0xd'),'foreignKey':_0xdb97('0x37'),'model':_0xdb97('0x38'),'filter':{'field':_0xdb97('0x10'),'value':[_0xdb97('0x39')]}},{'name':'QueueCampaigns','field':_0xdb97('0xd'),'foreignKey':_0xdb97('0x37'),'model':_0xdb97('0x38'),'filter':{'field':_0xdb97('0x10'),'value':[_0xdb97('0x3a')]}}];break;case _0xdb97('0x3b'):_0x1f740d['childModel']='VoiceMusicOnHold';break;case _0xdb97('0x3c'):_0x1f740d[_0xdb97('0x13')]=_0xdb97('0x3d');break;case _0xdb97('0x3e'):_0x1f740d[_0xdb97('0x13')]=_0xdb97('0x3f');break;case _0xdb97('0x40'):_0x1f740d['childModel']=_0xdb97('0x41');break;case _0xdb97('0x42'):_0x1f740d['childModel']=_0xdb97('0x43');break;case'mailaccounts':_0x1f740d['childModel']='MailAccount';break;case _0xdb97('0x44'):_0x1f740d[_0xdb97('0x13')]=_0xdb97('0x45');break;case _0xdb97('0x46'):_0x1f740d[_0xdb97('0x13')]=_0xdb97('0x47');break;case _0xdb97('0x48'):_0x1f740d[_0xdb97('0x13')]=_0xdb97('0x49');break;case _0xdb97('0x4a'):_0x1f740d[_0xdb97('0x13')]='SmsQueue';break;case _0xdb97('0x4b'):_0x1f740d[_0xdb97('0x13')]=_0xdb97('0x4c');break;case _0xdb97('0x4d'):_0x1f740d[_0xdb97('0x13')]=_0xdb97('0x4e');break;case _0xdb97('0x4f'):_0x1f740d[_0xdb97('0x13')]=_0xdb97('0x50');break;case _0xdb97('0x51'):_0x1f740d[_0xdb97('0x13')]='Team';break;case _0xdb97('0x52'):case _0xdb97('0x53'):_0x1f740d[_0xdb97('0x13')]='VoiceQueue';if(_0x4dc4ea){_0x1f740d[_0xdb97('0x16')]=[{'name':_0xdb97('0x36')},{'name':_0xdb97('0x54')}];}break;case _0xdb97('0x55'):case'agents':case _0xdb97('0x56'):_0x1f740d['childModel']=_0xdb97('0x32');if(_0x4dc4ea){_0x1f740d[_0xdb97('0x16')]=[{'name':'Users','filter':{'field':_0xdb97('0x33'),'value':[_0xdb97('0x57'),'user']},'ignore':!![]},{'name':_0xdb97('0x30')},{'name':_0xdb97('0x34')}];}break;case _0xdb97('0x58'):_0x1f740d[_0xdb97('0x13')]=_0xdb97('0x59');break;case _0xdb97('0x5a'):_0x1f740d[_0xdb97('0x13')]=_0xdb97('0x5b');break;case _0xdb97('0x5c'):_0x1f740d[_0xdb97('0x13')]=_0xdb97('0x5d');break;case _0xdb97('0x5e'):_0x1f740d[_0xdb97('0x13')]='SugarcrmAccount';break;case _0xdb97('0x5f'):_0x1f740d['childModel']=_0xdb97('0x60');break;case _0xdb97('0x61'):_0x1f740d[_0xdb97('0x13')]=_0xdb97('0x62');break;case _0xdb97('0x63'):_0x1f740d[_0xdb97('0x13')]=_0xdb97('0x32');break;case _0xdb97('0x64'):_0x1f740d[_0xdb97('0x13')]=_0xdb97('0x65');break;case _0xdb97('0x66'):_0x1f740d['childModel']=_0xdb97('0x67');break;case'customdashboards':_0x1f740d[_0xdb97('0x13')]='Dashboard';break;case _0xdb97('0x68'):_0x1f740d[_0xdb97('0x13')]=_0xdb97('0x69');break;case'pauses':_0x1f740d[_0xdb97('0x13')]='Pause';break;case'scheduler':_0x1f740d[_0xdb97('0x13')]='Schedule';break;case _0xdb97('0x6a'):_0x1f740d[_0xdb97('0x13')]=_0xdb97('0x6b');break;case'tags':_0x1f740d[_0xdb97('0x13')]=_0xdb97('0x6c');break;case _0xdb97('0x6d'):_0x1f740d[_0xdb97('0x13')]=_0xdb97('0x6e');break;case'triggers':_0x1f740d[_0xdb97('0x13')]=_0xdb97('0x6f');break;case _0xdb97('0x70'):_0x1f740d[_0xdb97('0x13')]=_0xdb97('0x71');break;case'variables':_0x1f740d[_0xdb97('0x13')]=_0xdb97('0x72');break;case _0xdb97('0x73'):_0x1f740d[_0xdb97('0x13')]=_0xdb97('0x74');break;case _0xdb97('0x75'):_0x1f740d[_0xdb97('0x13')]=_0xdb97('0x76');_0x1f740d[_0xdb97('0x16')]=[{'name':_0xdb97('0x77'),'field':'id','foreignKey':_0xdb97('0x78')}];break;case _0xdb97('0x79'):_0x1f740d['childModel']=_0xdb97('0x7a');break;}return _0x1f740d;}function _0x2b0469(_0x50ad0a,_0x52a04d){var _0xa035e1=_0x50ad0a['charAt'](0x0)[_0xdb97('0x7b')]()+_0x50ad0a[_0xdb97('0x7c')](0x1);var _0x3ab2e5={'type':_0x537500[_0xdb97('0x7d')][_0xdb97('0x7e')][_0xdb97('0x7f')],'raw':!![]};return new Promise(function(_0x19de5f,_0x5140f1){var _0x52d0c4=squel[_0xdb97('0x80')]()[_0xdb97('0xa')](_0xdb97('0x81')+_0xa035e1+'InteractionId','id')[_0xdb97('0xa')]('ui.createdAt')['from'](_0xdb97('0x82')+_0x50ad0a+_0xdb97('0x83'),'ui')[_0xdb97('0x84')]('ui.UserId\x20=\x20?',_0x52a04d['id']);return _0x537500[_0xdb97('0x85')][_0xdb97('0x86')](_0x52d0c4[_0xdb97('0x87')](),_0x3ab2e5)['then'](function(_0x273918){_0x52a04d[_0xa035e1+'OpenTabs']=_0x273918;_0x19de5f(_0x273918);})[_0xdb97('0x9')](function(_0x3b5991){_0x5140f1(_0x3b5991);});});}return _0x4535b2[_0xdb97('0x88')](_0xdb97('0x89'),attributes,{'tableName':_0xdb97('0x8a'),'paranoid':![],'indexes':[],'timestamps':!![],'classMethods':{'getResources':function(_0x28fed8){var _0x1c9bca={'raw':_0x28fed8[_0xdb97('0x86')][_0xdb97('0x8b')],'where':{}};var _0x3fe194={};var _0x5cd3bb={'count':0x0,'rows':[]};var _0x10b7d6=_0x28fed8['query'][_0xdb97('0x8c')];var _0x4d2c2d=_0x28fed8[_0xdb97('0x86')][_0xdb97('0x8d')]||![];var _0x203465=_0x2ba36b(_0x10b7d6,_0x4d2c2d);if(!_0x203465[_0xdb97('0x13')])throw new Error(_0xdb97('0x8e')+_0x10b7d6+'\x27');var _0x5247e7=[{'name':_0x10b7d6}];if(!_[_0xdb97('0x8f')](_0x203465[_0xdb97('0x16')]))_0x5247e7=_0x203465[_0xdb97('0x16')];var _0x328fac=[];for(var _0x30faac=0x0;_0x30faac<_0x5247e7[_0xdb97('0x90')];_0x30faac++){_0x328fac['push'](_0x537500[_0xdb97('0x91')][_0xdb97('0x92')]({'where':{'userProfileId':_0x28fed8[_0xdb97('0x93')]['id'],'name':_0x5247e7[_0x30faac][_0xdb97('0xd')]},'raw':!![]}));}return Promise['all'](_0x328fac)[_0xdb97('0x7')](function(_0x32c7ef){var _0x39aee5=_[_0xdb97('0x6')](_0x32c7ef,function(_0x4db49a){return _0x4db49a?_0x4db49a:undefined;});var _0x4e0b7b=_[_0xdb97('0x6')](_0x5247e7,[_0xdb97('0x94'),!![]]);var _0x26f7e8=_['isEmpty'](_0x39aee5)&&_[_0xdb97('0x8f')](_0x4e0b7b)?null:_[_0xdb97('0x95')](_0x4e0b7b,_0x39aee5);if(!_0x26f7e8)return null;var _0x374a20=[];for(var _0x3b9ed2=0x0;_0x3b9ed2<_0x26f7e8['length'];_0x3b9ed2++){var _0x506e04=_[_0xdb97('0x92')](_0x5247e7,function(_0x3c2d24){return _0x26f7e8[_0x3b9ed2]?_0x3c2d24[_0xdb97('0xd')]===_0x26f7e8[_0x3b9ed2][_0xdb97('0xd')]:null;});if(_0x506e04){if(_0x26f7e8[_0x3b9ed2]['ignore']){_0x374a20[_0xdb97('0x96')](_0x4d5941(_0x203465[_0xdb97('0x13')],_0x26f7e8[_0x3b9ed2]));}else{if(!_0x26f7e8[_0x3b9ed2][_0xdb97('0x97')]){_0x374a20['push'](_0x1a3dc0(_0x506e04,_0x26f7e8[_0x3b9ed2],_0x203465[_0xdb97('0x13')]));}else{if(_0x506e04[_0xdb97('0x98')]){_0x374a20[_0xdb97('0x96')](_0x1c8f1a(_0x506e04,_0x26f7e8[_0x3b9ed2]));}}}}}return Promise['all'](_0x374a20);})['then'](function(_0x18f275){var _0x38eff8=_0x18f275;var _0x29a755=null;if(_0x38eff8){_0x29a755=_0x38eff8[_0xdb97('0x90')]===0x1?_0x38eff8[0x0]:null;}if(!_0x29a755&&!_0x38eff8)return _0x5cd3bb;var _0xe546cc=_0x537500[_0x203465[_0xdb97('0x13')]][_0xdb97('0x99')];_0x3fe194[_0xdb97('0x98')]=_[_0xdb97('0x9a')](_0xe546cc);_0x3fe194['query']=_[_0xdb97('0x9a')](_0x28fed8[_0xdb97('0x86')]);_0x3fe194[_0xdb97('0x9b')]=_[_0xdb97('0x9c')](_0x3fe194[_0xdb97('0x98')],_0x3fe194[_0xdb97('0x86')]);_0x1c9bca[_0xdb97('0x9d')]=_[_0xdb97('0x9c')](_0x3fe194['model'],qs[_0xdb97('0x9e')](_0x28fed8[_0xdb97('0x86')][_0xdb97('0x9e')]));_0x1c9bca['attributes']=_0x1c9bca[_0xdb97('0x9d')][_0xdb97('0x90')]?_0x1c9bca[_0xdb97('0x9d')]:_0x3fe194[_0xdb97('0x98')];if(!_0x28fed8[_0xdb97('0x86')][_0xdb97('0x9f')]('nolimit')){_0x1c9bca[_0xdb97('0xa0')]=qs[_0xdb97('0xa0')](_0x28fed8[_0xdb97('0x86')]['limit']);_0x1c9bca[_0xdb97('0xa1')]=qs['offset'](_0x28fed8['query']['offset']);}_0x1c9bca[_0xdb97('0xa2')]=qs[_0xdb97('0xa3')](_0x28fed8[_0xdb97('0x86')][_0xdb97('0xa3')]);_0x1c9bca[_0xdb97('0x84')]=qs[_0xdb97('0x9b')](_[_0xdb97('0xa4')](_0x28fed8[_0xdb97('0x86')],_0x3fe194[_0xdb97('0x9b')]));if(_0x28fed8[_0xdb97('0x86')][_0xdb97('0x6')]){_0x1c9bca[_0xdb97('0x84')]=_[_0xdb97('0xa5')](_0x1c9bca['where'],{'$or':_[_0xdb97('0xe')](_0xe546cc,function(_0x5e91cf){if(_0x5e91cf[_0xdb97('0x10')][_0xdb97('0xa6')]!==_0xdb97('0xa7')){var _0x184804={};_0x184804[_0x5e91cf[_0xdb97('0xa')]]={'$like':'%'+_0x28fed8[_0xdb97('0x86')][_0xdb97('0x6')]+'%'};return _0x184804;}})});}var _0x401bed=[];var _0x468902=null;var _0x2d0824={};if(_0x29a755){_0x468902=_[_0xdb97('0x92')](_0x5247e7,[_0xdb97('0xd'),_0x29a755[_0xdb97('0xd')]]);if(_0x468902[_0xdb97('0xa')]){_0x2d0824={};if(_0x203465[_0xdb97('0x13')]===_0xdb97('0x76')){_0x2d0824[_0x468902[_0xdb97('0xa8')]]=_['map'](_0x29a755[_0xdb97('0x8')],'id');}else{_0x2d0824[_0x468902[_0xdb97('0xa8')]]=_0x29a755[_0xdb97('0x8')];}_0x401bed[_0xdb97('0x96')](_0x2d0824);}else{_0x1c9bca[_0xdb97('0x84')]['id']=_0x29a755[_0xdb97('0x8')];}}else{for(var _0x4ebca8=0x0;_0x4ebca8<_0x38eff8[_0xdb97('0x90')];_0x4ebca8++){_0x468902=_[_0xdb97('0x92')](_0x5247e7,[_0xdb97('0xd'),_0x38eff8[_0x4ebca8][_0xdb97('0xd')]]);if(_0x468902[_0xdb97('0xa')]){_0x2d0824={};_0x2d0824[_0x468902[_0xdb97('0xa8')]]=_0x38eff8[_0x4ebca8][_0xdb97('0x8')];_0x401bed[_0xdb97('0x96')](_0x2d0824);}else{if(!_0x1c9bca['where']['id'])_0x1c9bca[_0xdb97('0x84')]['id']=[];_0x38eff8[_0x4ebca8]['associatedResources']['forEach'](function(_0x860a18){_0x1c9bca[_0xdb97('0x84')]['id'][_0xdb97('0x96')](_0x860a18);});}}}if(!_[_0xdb97('0x8f')](_0x401bed)){_0x1c9bca[_0xdb97('0x84')]=_[_0xdb97('0xa5')](_0x1c9bca[_0xdb97('0x84')],{'$and':{'$or':_0x401bed}});}_0x1c9bca=_[_0xdb97('0xa5')]({},_0x1c9bca,_0x28fed8[_0xdb97('0xa9')]);if(_0x29a755&&!_0x29a755[_0xdb97('0x97')]&&_0x203465[_0xdb97('0x13')]===_0xdb97('0x76')){if(_0x28fed8[_0xdb97('0x86')][_0xdb97('0xaa')]){_0x1c9bca[_0xdb97('0xab')]=[{'all':!![]}];}return _0x537500[_0x203465[_0xdb97('0x13')]][_0xdb97('0xc')](_0x1c9bca)[_0xdb97('0x7')](function(_0x377f8e){var _0x5f506d=[];_0x377f8e[_0xdb97('0xac')](function(_0x306dba){var _0x4846db;switch(_0x306dba['reportType']){case _0xdb97('0xad'):_0x4846db=_[_0xdb97('0x92')](_0x29a755[_0xdb97('0x8')],function(_0x35004b){return _0x35004b['id']===_0x306dba['reportId']&&_0x35004b[_0xdb97('0x10')]==='DefaultReports';});break;case _0xdb97('0xae'):_0x4846db=_[_0xdb97('0x92')](_0x29a755[_0xdb97('0x8')],function(_0x145cd2){return _0x145cd2['id']===_0x306dba[_0xdb97('0x78')]&&_0x145cd2[_0xdb97('0x10')]===_0xdb97('0xaf');});break;}if(_0x4846db)_0x5f506d['push'](_0x306dba);});_0x5cd3bb[_0xdb97('0xb0')]=_0x5f506d['length'];_0x5cd3bb[_0xdb97('0xb1')]=_0x5f506d;return _0x5cd3bb;});}else{if(!_[_0xdb97('0x8f')](_0x28fed8[_0xdb97('0x86')]['ids'])){_0x1c9bca[_0xdb97('0x84')]['id']=_0x1c9bca['where']['id']?_['intersection'](_0x1c9bca[_0xdb97('0x84')]['id'],_0x28fed8[_0xdb97('0x86')]['ids']):_0x28fed8[_0xdb97('0x86')][_0xdb97('0xb2')];if(_0x28fed8[_0xdb97('0x86')][_0xdb97('0xb3')]){_0x1c9bca[_0xdb97('0xa2')]=_0x28fed8[_0xdb97('0x86')][_0xdb97('0xb3')];}}if(_0x28fed8['query'][_0xdb97('0xb4')]){_0x1c9bca[_0xdb97('0x84')]=_[_0xdb97('0xa5')](_0x1c9bca[_0xdb97('0x84')],{'$and':_0x28fed8[_0xdb97('0x86')][_0xdb97('0xb4')]});}return _0x537500[_0x203465[_0xdb97('0x13')]][_0xdb97('0xb0')]({'where':_0x1c9bca[_0xdb97('0x84')]})[_0xdb97('0x7')](function(_0x4bd711){_0x5cd3bb[_0xdb97('0xb0')]=_0x4bd711;if(_0x28fed8[_0xdb97('0x86')][_0xdb97('0xaa')]){if(_0x203465['childModel']===_0xdb97('0x1b')){_0x1c9bca[_0xdb97('0xab')]=[{'model':_0x537500[_0xdb97('0x6c')],'as':_0xdb97('0xb5'),'attributes':['id',_0xdb97('0xd'),_0xdb97('0xb6')],'required':_0x28fed8['query'][_0xdb97('0xb7')]?!![]:![]},{'model':_0x537500[_0xdb97('0x6c')],'as':_0xdb97('0xb8'),'attributes':['id',_0xdb97('0xd'),_0xdb97('0xb6')],'through':_0x28fed8[_0xdb97('0x86')][_0xdb97('0xb7')]?{'attributes':[],'where':{'TagId':_0x28fed8['query'][_0xdb97('0xb7')]||undefined}}:{},'required':_0x28fed8[_0xdb97('0x86')][_0xdb97('0xb7')]?!![]:![]}];}else{_0x1c9bca[_0xdb97('0xab')]=[{'all':!![]}];}}return _0x537500[_0x203465['childModel']][_0xdb97('0xc')](_0x1c9bca);})[_0xdb97('0x7')](function(_0x52deee){_0x5cd3bb[_0xdb97('0xb1')]=_0x52deee;if(_0x10b7d6===_0xdb97('0x30')&&_0x28fed8['query'][_0xdb97('0xb9')]===_0xdb97('0xba')){var _0x52a788=[];for(var _0x182bf7=0x0;_0x182bf7<_0x5cd3bb[_0xdb97('0xb1')][_0xdb97('0x90')];_0x182bf7++){_0x52a788['push'](_0x2b0469('chat',_0x5cd3bb[_0xdb97('0xb1')][_0x182bf7][_0xdb97('0xbb')]));_0x52a788[_0xdb97('0x96')](_0x2b0469(_0xdb97('0xbc'),_0x5cd3bb[_0xdb97('0xb1')][_0x182bf7][_0xdb97('0xbb')]));_0x52a788['push'](_0x2b0469('fax',_0x5cd3bb[_0xdb97('0xb1')][_0x182bf7][_0xdb97('0xbb')]));_0x52a788[_0xdb97('0x96')](_0x2b0469(_0xdb97('0xbd'),_0x5cd3bb[_0xdb97('0xb1')][_0x182bf7][_0xdb97('0xbb')]));_0x52a788[_0xdb97('0x96')](_0x2b0469(_0xdb97('0xbe'),_0x5cd3bb[_0xdb97('0xb1')][_0x182bf7][_0xdb97('0xbb')]));_0x52a788[_0xdb97('0x96')](_0x2b0469(_0xdb97('0xbf'),_0x5cd3bb[_0xdb97('0xb1')][_0x182bf7][_0xdb97('0xbb')]));}return Promise[_0xdb97('0xc0')](_0x52a788)[_0xdb97('0x7')](function(){return _0x5cd3bb;});}return _0x5cd3bb;});}});}}});};
\ No newline at end of file
index 7317061..be9d987 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c14=['socket.io-emitter','./userProfile.socket','register','then','info','UserProfile,\x20%s,\x20%s','debug','UserProfile,\x20%s,\x20%s,\x20%s','error','code','message','request\x20sent','result','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','localhost'];(function(_0x53ccf2,_0x13cb67){var _0x5a2964=function(_0x3b0514){while(--_0x3b0514){_0x53ccf2['push'](_0x53ccf2['shift']());}};_0x5a2964(++_0x13cb67);}(_0x6c14,0xd1));var _0x46c1=function(_0x7c38f7,_0x57e345){_0x7c38f7=_0x7c38f7-0x0;var _0x1568ce=_0x6c14[_0x7c38f7];return _0x1568ce;};'use strict';var _=require(_0x46c1('0x0'));var util=require(_0x46c1('0x1'));var moment=require(_0x46c1('0x2'));var BPromise=require(_0x46c1('0x3'));var rs=require(_0x46c1('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x46c1('0x5'))['db'];var utils=require(_0x46c1('0x6'));var logger=require(_0x46c1('0x7'))('rpc');var config=require(_0x46c1('0x8'));var jayson=require(_0x46c1('0x9'));var client=jayson[_0x46c1('0xa')][_0x46c1('0xb')]({'port':0x232a});config[_0x46c1('0xc')]=_[_0x46c1('0xd')](config[_0x46c1('0xc')],{'host':_0x46c1('0xe'),'port':0x18eb});var socket=require(_0x46c1('0xf'))(new Redis(config['redis']));require(_0x46c1('0x10'))[_0x46c1('0x11')](socket);function respondWithRpcPromise(_0x28fae2,_0x5e999d,_0x42af02){return new BPromise(function(_0x3676e3,_0x2c718c){return client['request'](_0x28fae2,_0x42af02)[_0x46c1('0x12')](function(_0x2e9325){logger[_0x46c1('0x13')](_0x46c1('0x14'),_0x5e999d,'request\x20sent');logger[_0x46c1('0x15')](_0x46c1('0x16'),_0x5e999d,'request\x20sent',JSON['stringify'](_0x2e9325));if(_0x2e9325[_0x46c1('0x17')]){if(_0x2e9325[_0x46c1('0x17')][_0x46c1('0x18')]===0x1f4){logger[_0x46c1('0x17')](_0x46c1('0x14'),_0x5e999d,_0x2e9325['error'][_0x46c1('0x19')]);return _0x2c718c(_0x2e9325[_0x46c1('0x17')][_0x46c1('0x19')]);}logger[_0x46c1('0x17')](_0x46c1('0x14'),_0x5e999d,_0x2e9325['error']['message']);return _0x3676e3(_0x2e9325[_0x46c1('0x17')][_0x46c1('0x19')]);}else{logger[_0x46c1('0x13')](_0x46c1('0x14'),_0x5e999d,_0x46c1('0x1a'));_0x3676e3(_0x2e9325[_0x46c1('0x1b')][_0x46c1('0x19')]);}})['catch'](function(_0x247a8b){logger[_0x46c1('0x17')]('UserProfile,\x20%s,\x20%s',_0x5e999d,_0x247a8b);_0x2c718c(_0x247a8b);});});}
\ No newline at end of file
+var _0x6365=['code','message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','localhost','./userProfile.socket','register','then','info','UserProfile,\x20%s,\x20%s','request\x20sent','debug','stringify','error'];(function(_0x4de0a7,_0x2dafac){var _0x494f30=function(_0x2628b6){while(--_0x2628b6){_0x4de0a7['push'](_0x4de0a7['shift']());}};_0x494f30(++_0x2dafac);}(_0x6365,0x148));var _0x5636=function(_0x38ef60,_0x3442a8){_0x38ef60=_0x38ef60-0x0;var _0x344bb0=_0x6365[_0x38ef60];return _0x344bb0;};'use strict';var _=require(_0x5636('0x0'));var util=require(_0x5636('0x1'));var moment=require(_0x5636('0x2'));var BPromise=require(_0x5636('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5636('0x4'));var db=require(_0x5636('0x5'))['db'];var utils=require(_0x5636('0x6'));var logger=require(_0x5636('0x7'))(_0x5636('0x8'));var config=require('../../config/environment');var jayson=require(_0x5636('0x9'));var client=jayson[_0x5636('0xa')][_0x5636('0xb')]({'port':0x232a});config[_0x5636('0xc')]=_['defaults'](config[_0x5636('0xc')],{'host':_0x5636('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x5636('0xe'))[_0x5636('0xf')](socket);function respondWithRpcPromise(_0x2b721b,_0x1b17b7,_0x58a604){return new BPromise(function(_0x4a810c,_0x2b3a3b){return client['request'](_0x2b721b,_0x58a604)[_0x5636('0x10')](function(_0x178669){logger[_0x5636('0x11')](_0x5636('0x12'),_0x1b17b7,_0x5636('0x13'));logger[_0x5636('0x14')]('UserProfile,\x20%s,\x20%s,\x20%s',_0x1b17b7,_0x5636('0x13'),JSON[_0x5636('0x15')](_0x178669));if(_0x178669['error']){if(_0x178669[_0x5636('0x16')][_0x5636('0x17')]===0x1f4){logger['error']('UserProfile,\x20%s,\x20%s',_0x1b17b7,_0x178669[_0x5636('0x16')][_0x5636('0x18')]);return _0x2b3a3b(_0x178669[_0x5636('0x16')][_0x5636('0x18')]);}logger[_0x5636('0x16')]('UserProfile,\x20%s,\x20%s',_0x1b17b7,_0x178669[_0x5636('0x16')]['message']);return _0x4a810c(_0x178669['error'][_0x5636('0x18')]);}else{logger[_0x5636('0x11')](_0x5636('0x12'),_0x1b17b7,_0x5636('0x13'));_0x4a810c(_0x178669[_0x5636('0x19')][_0x5636('0x18')]);}})[_0x5636('0x1a')](function(_0x16efd7){logger['error']('UserProfile,\x20%s,\x20%s',_0x1b17b7,_0x16efd7);_0x2b3a3b(_0x16efd7);});});}
\ No newline at end of file
index 568ce01..6f220cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x419f=['emit','removeListener','userProfile:','save','remove','update'];(function(_0xa8494,_0x47dd23){var _0x4bc87c=function(_0xb7accf){while(--_0xb7accf){_0xa8494['push'](_0xa8494['shift']());}};_0x4bc87c(++_0x47dd23);}(_0x419f,0x117));var _0xf419=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x419f[_0x397e5f];return _0x5302b8;};'use strict';var UserProfileEvents=require('./userProfile.events');var events=[_0xf419('0x0'),_0xf419('0x1'),_0xf419('0x2')];function createListener(_0x3d6d0b,_0x438db4){return function(_0xda596d){_0x438db4[_0xf419('0x3')](_0x3d6d0b,_0xda596d);};}function removeListener(_0x4859c9,_0x5eb455){return function(){UserProfileEvents[_0xf419('0x4')](_0x4859c9,_0x5eb455);};}exports['register']=function(_0x34c818){for(var _0x347ce1=0x0,_0x51673f=events['length'];_0x347ce1<_0x51673f;_0x347ce1++){var _0x4b4819=events[_0x347ce1];var _0x5c6c23=createListener(_0xf419('0x5')+_0x4b4819,_0x34c818);UserProfileEvents['on'](_0x4b4819,_0x5c6c23);}};
\ No newline at end of file
+var _0x19ef=['update','removeListener','userProfile:','./userProfile.events','save','remove'];(function(_0x36d233,_0x1d280d){var _0x288fc5=function(_0x2b23bc){while(--_0x2b23bc){_0x36d233['push'](_0x36d233['shift']());}};_0x288fc5(++_0x1d280d);}(_0x19ef,0x7b));var _0xf19e=function(_0x15a8fa,_0x4652b2){_0x15a8fa=_0x15a8fa-0x0;var _0x1355c2=_0x19ef[_0x15a8fa];return _0x1355c2;};'use strict';var UserProfileEvents=require(_0xf19e('0x0'));var events=[_0xf19e('0x1'),_0xf19e('0x2'),_0xf19e('0x3')];function createListener(_0x49ada6,_0x5de3f7){return function(_0xedfa7e){_0x5de3f7['emit'](_0x49ada6,_0xedfa7e);};}function removeListener(_0x1934a7,_0x2c6b69){return function(){UserProfileEvents[_0xf19e('0x4')](_0x1934a7,_0x2c6b69);};}exports['register']=function(_0x49f014){for(var _0x1123b5=0x0,_0x3f05e2=events['length'];_0x1123b5<_0x3f05e2;_0x1123b5++){var _0x59f16a=events[_0x1123b5];var _0x4e2391=createListener(_0xf19e('0x5')+_0x59f16a,_0x49f014);UserProfileEvents['on'](_0x59f16a,_0x4e2391);}};
\ No newline at end of file
index 1c9c8eb..d88b2e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa7ca=['Router','../../components/interaction/service','../../config/environment','./userProfileResource.controller','get','index','/describe','isAuthenticated','describe','show','post','create','put','/:id','update','delete','exports','util','path','express'];(function(_0x4ca3fb,_0x3eba0e){var _0x39b2e9=function(_0x82dfd1){while(--_0x82dfd1){_0x4ca3fb['push'](_0x4ca3fb['shift']());}};_0x39b2e9(++_0x3eba0e);}(_0xa7ca,0x1a1));var _0xaa7c=function(_0x57b432,_0x1589a0){_0x57b432=_0x57b432-0x0;var _0x2edf2a=_0xa7ca[_0x57b432];return _0x2edf2a;};'use strict';var multer=require('multer');var util=require(_0xaa7c('0x0'));var path=require(_0xaa7c('0x1'));var timeout=require('connect-timeout');var express=require(_0xaa7c('0x2'));var router=express[_0xaa7c('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xaa7c('0x4'));var config=require(_0xaa7c('0x5'));var controller=require(_0xaa7c('0x6'));router[_0xaa7c('0x7')]('/',auth['isAuthenticated'](),controller[_0xaa7c('0x8')]);router['get'](_0xaa7c('0x9'),auth[_0xaa7c('0xa')](),controller[_0xaa7c('0xb')]);router[_0xaa7c('0x7')]('/:id',auth[_0xaa7c('0xa')](),controller[_0xaa7c('0xc')]);router[_0xaa7c('0xd')]('/',auth['isAuthenticated'](),controller[_0xaa7c('0xe')]);router[_0xaa7c('0xf')](_0xaa7c('0x10'),auth['isAuthenticated'](),controller[_0xaa7c('0x11')]);router[_0xaa7c('0x12')](_0xaa7c('0x10'),auth[_0xaa7c('0xa')](),controller['destroy']);module[_0xaa7c('0x13')]=router;
\ No newline at end of file
+var _0x646c=['path','express','Router','../../components/auth/service','../../components/interaction/service','./userProfileResource.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','update','delete','destroy','exports','multer'];(function(_0x8363d3,_0x420b9d){var _0x4704ff=function(_0x3742f5){while(--_0x3742f5){_0x8363d3['push'](_0x8363d3['shift']());}};_0x4704ff(++_0x420b9d);}(_0x646c,0x1a1));var _0xc646=function(_0x340380,_0x4bd2a8){_0x340380=_0x340380-0x0;var _0x49ce1c=_0x646c[_0x340380];return _0x49ce1c;};'use strict';var multer=require(_0xc646('0x0'));var util=require('util');var path=require(_0xc646('0x1'));var timeout=require('connect-timeout');var express=require(_0xc646('0x2'));var router=express[_0xc646('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xc646('0x4'));var interaction=require(_0xc646('0x5'));var config=require('../../config/environment');var controller=require(_0xc646('0x6'));router[_0xc646('0x7')]('/',auth[_0xc646('0x8')](),controller[_0xc646('0x9')]);router[_0xc646('0x7')](_0xc646('0xa'),auth[_0xc646('0x8')](),controller[_0xc646('0xb')]);router[_0xc646('0x7')](_0xc646('0xc'),auth[_0xc646('0x8')](),controller[_0xc646('0xd')]);router[_0xc646('0xe')]('/',auth['isAuthenticated'](),controller['create']);router['put']('/:id',auth[_0xc646('0x8')](),controller[_0xc646('0xf')]);router[_0xc646('0x10')](_0xc646('0xc'),auth[_0xc646('0x8')](),controller[_0xc646('0x11')]);module[_0xc646('0x12')]=router;
\ No newline at end of file
index 0b2af09..e20040e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3241=['INTEGER','sequelize','exports','STRING'];(function(_0x2f8dc2,_0x4f28fc){var _0x5993fb=function(_0xf7ecc2){while(--_0xf7ecc2){_0x2f8dc2['push'](_0x2f8dc2['shift']());}};_0x5993fb(++_0x4f28fc);}(_0x3241,0xe5));var _0x1324=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3241[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x1324('0x0'));module[_0x1324('0x1')]={'name':{'type':Sequelize[_0x1324('0x2')],'allowNull':![]},'resourceId':{'type':Sequelize[_0x1324('0x3')],'allowNull':![]},'type':{'type':Sequelize[_0x1324('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0xa844=['STRING','INTEGER'];(function(_0x35f3e7,_0x10cd40){var _0x1c00f4=function(_0x47063d){while(--_0x47063d){_0x35f3e7['push'](_0x35f3e7['shift']());}};_0x1c00f4(++_0x10cd40);}(_0xa844,0x114));var _0x4a84=function(_0x494b02,_0x16db6c){_0x494b02=_0x494b02-0x0;var _0x45fea5=_0xa844[_0x494b02];return _0x45fea5;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x4a84('0x0')],'allowNull':![]},'resourceId':{'type':Sequelize[_0x4a84('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x4a84('0x0')],'allowNull':![]}};
\ No newline at end of file
index eec5b03..2896876 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd943=['jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','end','error','stack','name','send','index','UserProfileResource','rawAttributes','type','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','map','merge','includeAll','include','findAll','catch','show','params','options','create','body','find','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','ejs','crypto'];(function(_0x2d91b5,_0x20738f){var _0x432cc5=function(_0x564ff7){while(--_0x564ff7){_0x2d91b5['push'](_0x2d91b5['shift']());}};_0x432cc5(++_0x20738f);}(_0xd943,0x15d));var _0x3d94=function(_0x2fea76,_0x32647e){_0x2fea76=_0x2fea76-0x0;var _0x652727=_0xd943[_0x2fea76];return _0x652727;};'use strict';var emlformat=require(_0x3d94('0x0'));var rimraf=require(_0x3d94('0x1'));var zipdir=require(_0x3d94('0x2'));var jsonpatch=require(_0x3d94('0x3'));var rp=require('request-promise');var moment=require(_0x3d94('0x4'));var BPromise=require(_0x3d94('0x5'));var Mustache=require(_0x3d94('0x6'));var util=require(_0x3d94('0x7'));var path=require(_0x3d94('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x3d94('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0x3d94('0xa'));var jsforce=require(_0x3d94('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x3d94('0xc'));var Papa=require(_0x3d94('0xd'));var Redis=require(_0x3d94('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x3d94('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3d94('0x10'));var logger=require(_0x3d94('0x11'))('api');var utils=require(_0x3d94('0x12'));var config=require(_0x3d94('0x13'));var licenseUtil=require(_0x3d94('0x14'));var db=require(_0x3d94('0x15'))['db'];function respondWithStatusCode(_0x15a392,_0x548b89){_0x548b89=_0x548b89||0xcc;return function(_0x96c54b){if(_0x96c54b){return _0x15a392[_0x3d94('0x16')](_0x548b89);}return _0x15a392[_0x3d94('0x17')](_0x548b89)['end']();};}function respondWithResult(_0x24e8b9,_0x29608d){_0x29608d=_0x29608d||0xc8;return function(_0x7d6969){if(_0x7d6969){return _0x24e8b9['status'](_0x29608d)[_0x3d94('0x18')](_0x7d6969);}};}function respondWithFilteredResult(_0x340818,_0x292419){return function(_0x34098e){if(_0x34098e){var _0xaf939a=typeof _0x292419[_0x3d94('0x19')]===_0x3d94('0x1a')&&typeof _0x292419[_0x3d94('0x1b')]==='undefined';var _0x22676a=_0x34098e[_0x3d94('0x1c')];var _0x2acee3=_0xaf939a?0x0:_0x292419[_0x3d94('0x19')];var _0x4afc92=_0xaf939a?_0x34098e[_0x3d94('0x1c')]:_0x292419[_0x3d94('0x19')]+_0x292419['limit'];var _0x9bca24;if(_0x4afc92>=_0x22676a){_0x4afc92=_0x22676a;_0x9bca24=0xc8;}else{_0x9bca24=0xce;}_0x340818['status'](_0x9bca24);return _0x340818[_0x3d94('0x1d')](_0x3d94('0x1e'),_0x2acee3+'-'+_0x4afc92+'/'+_0x22676a)[_0x3d94('0x18')](_0x34098e);}return null;};}function patchUpdates(_0x1e9ec2){return function(_0x35a3cc){try{jsonpatch['apply'](_0x35a3cc,_0x1e9ec2,!![]);}catch(_0x578002){return BPromise[_0x3d94('0x1f')](_0x578002);}return _0x35a3cc[_0x3d94('0x20')]();};}function saveUpdates(_0x9c2f2c,_0x4edee4){return function(_0x30af25){if(_0x30af25){return _0x30af25[_0x3d94('0x21')](_0x9c2f2c)[_0x3d94('0x22')](function(_0x384f76){return _0x384f76;});}return null;};}function removeEntity(_0x395133,_0x4093a4){return function(_0x295493){if(_0x295493){return _0x295493[_0x3d94('0x23')]()[_0x3d94('0x22')](function(){_0x395133[_0x3d94('0x17')](0xcc)[_0x3d94('0x24')]();});}};}function handleEntityNotFound(_0x192839,_0x292976){return function(_0x3496c3){if(!_0x3496c3){_0x192839[_0x3d94('0x16')](0x194);}return _0x3496c3;};}function handleError(_0x5b3b31,_0x123183){_0x123183=_0x123183||0x1f4;return function(_0x558fd2){logger[_0x3d94('0x25')](_0x558fd2[_0x3d94('0x26')]);if(_0x558fd2[_0x3d94('0x27')]){delete _0x558fd2[_0x3d94('0x27')];}_0x5b3b31[_0x3d94('0x17')](_0x123183)[_0x3d94('0x28')](_0x558fd2);};}exports[_0x3d94('0x29')]=function(_0x47d6ab,_0x584c4a){var _0x362642={},_0x4813e1={},_0x4dd410={'count':0x0,'rows':[]};var _0x23d20d=_['map'](db[_0x3d94('0x2a')][_0x3d94('0x2b')],function(_0x32403a){return{'name':_0x32403a['fieldName'],'type':_0x32403a[_0x3d94('0x2c')]['key']};});_0x4813e1[_0x3d94('0x2d')]=_['map'](_0x23d20d,_0x3d94('0x27'));_0x4813e1[_0x3d94('0x2e')]=_[_0x3d94('0x2f')](_0x47d6ab[_0x3d94('0x2e')]);_0x4813e1['filters']=_[_0x3d94('0x30')](_0x4813e1['model'],_0x4813e1[_0x3d94('0x2e')]);_0x362642[_0x3d94('0x31')]=_['intersection'](_0x4813e1['model'],qs[_0x3d94('0x32')](_0x47d6ab[_0x3d94('0x2e')][_0x3d94('0x32')]));_0x362642['attributes']=_0x362642[_0x3d94('0x31')][_0x3d94('0x33')]?_0x362642['attributes']:_0x4813e1[_0x3d94('0x2d')];if(!_0x47d6ab[_0x3d94('0x2e')][_0x3d94('0x34')](_0x3d94('0x35'))){_0x362642[_0x3d94('0x1b')]=qs['limit'](_0x47d6ab[_0x3d94('0x2e')][_0x3d94('0x1b')]);_0x362642[_0x3d94('0x19')]=qs[_0x3d94('0x19')](_0x47d6ab[_0x3d94('0x2e')][_0x3d94('0x19')]);}_0x362642['order']=qs['sort'](_0x47d6ab[_0x3d94('0x2e')][_0x3d94('0x36')]);_0x362642[_0x3d94('0x37')]=qs[_0x3d94('0x38')](_[_0x3d94('0x39')](_0x47d6ab[_0x3d94('0x2e')],_0x4813e1[_0x3d94('0x38')]),_0x23d20d);if(_0x47d6ab[_0x3d94('0x2e')][_0x3d94('0x3a')]){_0x362642[_0x3d94('0x37')]=_['merge'](_0x362642[_0x3d94('0x37')],{'$or':_[_0x3d94('0x3b')](_0x23d20d,function(_0x361fbb){if(_0x361fbb[_0x3d94('0x2c')]!=='VIRTUAL'){var _0xcf7a73={};_0xcf7a73[_0x361fbb[_0x3d94('0x27')]]={'$like':'%'+_0x47d6ab[_0x3d94('0x2e')][_0x3d94('0x3a')]+'%'};return _0xcf7a73;}})});}_0x362642=_[_0x3d94('0x3c')]({},_0x362642,_0x47d6ab['options']);var _0x217e5e={'where':_0x362642[_0x3d94('0x37')]};return db[_0x3d94('0x2a')]['count'](_0x217e5e)['then'](function(_0x4d8a8f){_0x4dd410['count']=_0x4d8a8f;if(_0x47d6ab[_0x3d94('0x2e')][_0x3d94('0x3d')]){_0x362642[_0x3d94('0x3e')]=[{'all':!![]}];}return db[_0x3d94('0x2a')][_0x3d94('0x3f')](_0x362642);})[_0x3d94('0x22')](function(_0x3a3898){_0x4dd410['rows']=_0x3a3898;return _0x4dd410;})['then'](respondWithFilteredResult(_0x584c4a,_0x362642))[_0x3d94('0x40')](handleError(_0x584c4a,null));};exports[_0x3d94('0x41')]=function(_0x512cef,_0x2d0aa2){var _0x4af4b6={'raw':![],'where':{'id':_0x512cef[_0x3d94('0x42')]['id']}},_0x1361fb={};_0x1361fb[_0x3d94('0x2d')]=_[_0x3d94('0x2f')](db[_0x3d94('0x2a')]['rawAttributes']);_0x1361fb[_0x3d94('0x2e')]=_[_0x3d94('0x2f')](_0x512cef[_0x3d94('0x2e')]);_0x1361fb['filters']=_[_0x3d94('0x30')](_0x1361fb['model'],_0x1361fb['query']);_0x4af4b6[_0x3d94('0x31')]=_[_0x3d94('0x30')](_0x1361fb[_0x3d94('0x2d')],qs[_0x3d94('0x32')](_0x512cef['query'][_0x3d94('0x32')]));_0x4af4b6['attributes']=_0x4af4b6[_0x3d94('0x31')][_0x3d94('0x33')]?_0x4af4b6[_0x3d94('0x31')]:_0x1361fb[_0x3d94('0x2d')];if(_0x512cef[_0x3d94('0x2e')][_0x3d94('0x3d')]){_0x4af4b6[_0x3d94('0x3e')]=[{'all':!![]}];}_0x4af4b6=_['merge']({},_0x4af4b6,_0x512cef[_0x3d94('0x43')]);return db[_0x3d94('0x2a')]['find'](_0x4af4b6)['then'](handleEntityNotFound(_0x2d0aa2,null))[_0x3d94('0x22')](respondWithResult(_0x2d0aa2,null))[_0x3d94('0x40')](handleError(_0x2d0aa2,null));};exports['create']=function(_0x3c8571,_0x13fda9){return db[_0x3d94('0x2a')][_0x3d94('0x44')](_0x3c8571[_0x3d94('0x45')],{})[_0x3d94('0x22')](respondWithResult(_0x13fda9,0xc9))[_0x3d94('0x40')](handleError(_0x13fda9,null));};exports[_0x3d94('0x21')]=function(_0x60279f,_0x2429bc){if(_0x60279f[_0x3d94('0x45')]['id']){delete _0x60279f[_0x3d94('0x45')]['id'];}return db[_0x3d94('0x2a')][_0x3d94('0x46')]({'where':{'id':_0x60279f[_0x3d94('0x42')]['id']}})['then'](handleEntityNotFound(_0x2429bc,null))[_0x3d94('0x22')](saveUpdates(_0x60279f[_0x3d94('0x45')],null))[_0x3d94('0x22')](respondWithResult(_0x2429bc,null))[_0x3d94('0x40')](handleError(_0x2429bc,null));};exports[_0x3d94('0x23')]=function(_0x3ce0be,_0x129783){return db[_0x3d94('0x2a')][_0x3d94('0x46')]({'where':{'id':_0x3ce0be['params']['id']}})[_0x3d94('0x22')](handleEntityNotFound(_0x129783,null))['then'](removeEntity(_0x129783,null))[_0x3d94('0x40')](handleError(_0x129783,null));};exports[_0x3d94('0x47')]=function(_0x4af4c2,_0x255630){return db['UserProfileResource']['describe']()[_0x3d94('0x22')](respondWithResult(_0x255630,null))['catch'](handleError(_0x255630,null));};
\ No newline at end of file
+var _0x5f2f=['offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','stack','name','send','index','UserProfileResource','rawAttributes','fieldName','type','map','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','filter','merge','where','options','includeAll','include','findAll','rows','catch','keys','find','body','params','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status'];(function(_0x13c304,_0x4791de){var _0x12696e=function(_0x2070d4){while(--_0x2070d4){_0x13c304['push'](_0x13c304['shift']());}};_0x12696e(++_0x4791de);}(_0x5f2f,0x73));var _0xf5f2=function(_0x245ff4,_0x2f1405){_0x245ff4=_0x245ff4-0x0;var _0x3bc792=_0x5f2f[_0x245ff4];return _0x3bc792;};'use strict';var emlformat=require(_0xf5f2('0x0'));var rimraf=require(_0xf5f2('0x1'));var zipdir=require(_0xf5f2('0x2'));var jsonpatch=require(_0xf5f2('0x3'));var rp=require(_0xf5f2('0x4'));var moment=require(_0xf5f2('0x5'));var BPromise=require(_0xf5f2('0x6'));var Mustache=require(_0xf5f2('0x7'));var util=require('util');var path=require('path');var sox=require(_0xf5f2('0x8'));var csv=require(_0xf5f2('0x9'));var ejs=require(_0xf5f2('0xa'));var fs=require('fs');var fs_extra=require(_0xf5f2('0xb'));var _=require(_0xf5f2('0xc'));var squel=require(_0xf5f2('0xd'));var crypto=require('crypto');var jsforce=require(_0xf5f2('0xe'));var deskjs=require(_0xf5f2('0xf'));var toCsv=require(_0xf5f2('0x9'));var querystring=require('querystring');var Papa=require(_0xf5f2('0x10'));var Redis=require(_0xf5f2('0x11'));var authService=require(_0xf5f2('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xf5f2('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xf5f2('0x14'));var utils=require(_0xf5f2('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xf5f2('0x16'));var db=require(_0xf5f2('0x17'))['db'];function respondWithStatusCode(_0x331482,_0x3f2997){_0x3f2997=_0x3f2997||0xcc;return function(_0x59bb6c){if(_0x59bb6c){return _0x331482[_0xf5f2('0x18')](_0x3f2997);}return _0x331482['status'](_0x3f2997)[_0xf5f2('0x19')]();};}function respondWithResult(_0xea612c,_0x269909){_0x269909=_0x269909||0xc8;return function(_0x1c1a5c){if(_0x1c1a5c){return _0xea612c[_0xf5f2('0x1a')](_0x269909)['json'](_0x1c1a5c);}};}function respondWithFilteredResult(_0xafe430,_0x286197){return function(_0x17d656){if(_0x17d656){var _0x1b6dd2=typeof _0x286197[_0xf5f2('0x1b')]===_0xf5f2('0x1c')&&typeof _0x286197[_0xf5f2('0x1d')]===_0xf5f2('0x1c');var _0x11f702=_0x17d656[_0xf5f2('0x1e')];var _0x20fccd=_0x1b6dd2?0x0:_0x286197[_0xf5f2('0x1b')];var _0x4ff59b=_0x1b6dd2?_0x17d656[_0xf5f2('0x1e')]:_0x286197[_0xf5f2('0x1b')]+_0x286197[_0xf5f2('0x1d')];var _0x1bf655;if(_0x4ff59b>=_0x11f702){_0x4ff59b=_0x11f702;_0x1bf655=0xc8;}else{_0x1bf655=0xce;}_0xafe430['status'](_0x1bf655);return _0xafe430[_0xf5f2('0x1f')](_0xf5f2('0x20'),_0x20fccd+'-'+_0x4ff59b+'/'+_0x11f702)['json'](_0x17d656);}return null;};}function patchUpdates(_0x47acfc){return function(_0x2d2805){try{jsonpatch[_0xf5f2('0x21')](_0x2d2805,_0x47acfc,!![]);}catch(_0x4ae323){return BPromise[_0xf5f2('0x22')](_0x4ae323);}return _0x2d2805[_0xf5f2('0x23')]();};}function saveUpdates(_0x39e44a,_0x39c024){return function(_0x36f1cb){if(_0x36f1cb){return _0x36f1cb['update'](_0x39e44a)[_0xf5f2('0x24')](function(_0x4669a6){return _0x4669a6;});}return null;};}function removeEntity(_0x4e8bda,_0x2833fe){return function(_0x287ad5){if(_0x287ad5){return _0x287ad5['destroy']()['then'](function(){_0x4e8bda[_0xf5f2('0x1a')](0xcc)[_0xf5f2('0x19')]();});}};}function handleEntityNotFound(_0x13da6f,_0x1a5bb3){return function(_0xf6c58d){if(!_0xf6c58d){_0x13da6f[_0xf5f2('0x18')](0x194);}return _0xf6c58d;};}function handleError(_0x13a3be,_0x281ec8){_0x281ec8=_0x281ec8||0x1f4;return function(_0x294414){logger['error'](_0x294414[_0xf5f2('0x25')]);if(_0x294414[_0xf5f2('0x26')]){delete _0x294414[_0xf5f2('0x26')];}_0x13a3be[_0xf5f2('0x1a')](_0x281ec8)[_0xf5f2('0x27')](_0x294414);};}exports[_0xf5f2('0x28')]=function(_0x5b6672,_0x53cb96){var _0x22c826={},_0x14c829={},_0x11c771={'count':0x0,'rows':[]};var _0x5027ab=_['map'](db[_0xf5f2('0x29')][_0xf5f2('0x2a')],function(_0x17394a){return{'name':_0x17394a[_0xf5f2('0x2b')],'type':_0x17394a[_0xf5f2('0x2c')]['key']};});_0x14c829['model']=_[_0xf5f2('0x2d')](_0x5027ab,'name');_0x14c829[_0xf5f2('0x2e')]=_['keys'](_0x5b6672[_0xf5f2('0x2e')]);_0x14c829[_0xf5f2('0x2f')]=_[_0xf5f2('0x30')](_0x14c829[_0xf5f2('0x31')],_0x14c829[_0xf5f2('0x2e')]);_0x22c826[_0xf5f2('0x32')]=_[_0xf5f2('0x30')](_0x14c829[_0xf5f2('0x31')],qs['fields'](_0x5b6672[_0xf5f2('0x2e')][_0xf5f2('0x33')]));_0x22c826[_0xf5f2('0x32')]=_0x22c826[_0xf5f2('0x32')][_0xf5f2('0x34')]?_0x22c826[_0xf5f2('0x32')]:_0x14c829[_0xf5f2('0x31')];if(!_0x5b6672['query'][_0xf5f2('0x35')](_0xf5f2('0x36'))){_0x22c826['limit']=qs[_0xf5f2('0x1d')](_0x5b6672['query'][_0xf5f2('0x1d')]);_0x22c826[_0xf5f2('0x1b')]=qs[_0xf5f2('0x1b')](_0x5b6672[_0xf5f2('0x2e')]['offset']);}_0x22c826['order']=qs[_0xf5f2('0x37')](_0x5b6672[_0xf5f2('0x2e')][_0xf5f2('0x37')]);_0x22c826['where']=qs[_0xf5f2('0x2f')](_['pick'](_0x5b6672[_0xf5f2('0x2e')],_0x14c829['filters']),_0x5027ab);if(_0x5b6672[_0xf5f2('0x2e')][_0xf5f2('0x38')]){_0x22c826['where']=_[_0xf5f2('0x39')](_0x22c826[_0xf5f2('0x3a')],{'$or':_[_0xf5f2('0x2d')](_0x5027ab,function(_0x35f738){if(_0x35f738['type']!=='VIRTUAL'){var _0x3d328f={};_0x3d328f[_0x35f738[_0xf5f2('0x26')]]={'$like':'%'+_0x5b6672[_0xf5f2('0x2e')][_0xf5f2('0x38')]+'%'};return _0x3d328f;}})});}_0x22c826=_[_0xf5f2('0x39')]({},_0x22c826,_0x5b6672[_0xf5f2('0x3b')]);var _0x2bc20e={'where':_0x22c826['where']};return db[_0xf5f2('0x29')][_0xf5f2('0x1e')](_0x2bc20e)['then'](function(_0xc6a1ae){_0x11c771[_0xf5f2('0x1e')]=_0xc6a1ae;if(_0x5b6672[_0xf5f2('0x2e')][_0xf5f2('0x3c')]){_0x22c826[_0xf5f2('0x3d')]=[{'all':!![]}];}return db[_0xf5f2('0x29')][_0xf5f2('0x3e')](_0x22c826);})[_0xf5f2('0x24')](function(_0x574f24){_0x11c771[_0xf5f2('0x3f')]=_0x574f24;return _0x11c771;})[_0xf5f2('0x24')](respondWithFilteredResult(_0x53cb96,_0x22c826))[_0xf5f2('0x40')](handleError(_0x53cb96,null));};exports['show']=function(_0x509dbc,_0x59eb00){var _0x76d21b={'raw':![],'where':{'id':_0x509dbc['params']['id']}},_0x2ad13c={};_0x2ad13c[_0xf5f2('0x31')]=_[_0xf5f2('0x41')](db[_0xf5f2('0x29')][_0xf5f2('0x2a')]);_0x2ad13c[_0xf5f2('0x2e')]=_[_0xf5f2('0x41')](_0x509dbc[_0xf5f2('0x2e')]);_0x2ad13c[_0xf5f2('0x2f')]=_[_0xf5f2('0x30')](_0x2ad13c[_0xf5f2('0x31')],_0x2ad13c[_0xf5f2('0x2e')]);_0x76d21b[_0xf5f2('0x32')]=_[_0xf5f2('0x30')](_0x2ad13c[_0xf5f2('0x31')],qs['fields'](_0x509dbc[_0xf5f2('0x2e')]['fields']));_0x76d21b[_0xf5f2('0x32')]=_0x76d21b[_0xf5f2('0x32')][_0xf5f2('0x34')]?_0x76d21b[_0xf5f2('0x32')]:_0x2ad13c[_0xf5f2('0x31')];if(_0x509dbc[_0xf5f2('0x2e')]['includeAll']){_0x76d21b[_0xf5f2('0x3d')]=[{'all':!![]}];}_0x76d21b=_[_0xf5f2('0x39')]({},_0x76d21b,_0x509dbc[_0xf5f2('0x3b')]);return db[_0xf5f2('0x29')][_0xf5f2('0x42')](_0x76d21b)[_0xf5f2('0x24')](handleEntityNotFound(_0x59eb00,null))[_0xf5f2('0x24')](respondWithResult(_0x59eb00,null))[_0xf5f2('0x40')](handleError(_0x59eb00,null));};exports['create']=function(_0x35dece,_0x33ec29){return db[_0xf5f2('0x29')]['create'](_0x35dece[_0xf5f2('0x43')],{})[_0xf5f2('0x24')](respondWithResult(_0x33ec29,0xc9))[_0xf5f2('0x40')](handleError(_0x33ec29,null));};exports['update']=function(_0x57a7cb,_0x7bb942){if(_0x57a7cb[_0xf5f2('0x43')]['id']){delete _0x57a7cb['body']['id'];}return db[_0xf5f2('0x29')]['find']({'where':{'id':_0x57a7cb[_0xf5f2('0x44')]['id']}})['then'](handleEntityNotFound(_0x7bb942,null))[_0xf5f2('0x24')](saveUpdates(_0x57a7cb['body'],null))[_0xf5f2('0x24')](respondWithResult(_0x7bb942,null))[_0xf5f2('0x40')](handleError(_0x7bb942,null));};exports[_0xf5f2('0x45')]=function(_0x11a083,_0x4fa738){return db[_0xf5f2('0x29')][_0xf5f2('0x42')]({'where':{'id':_0x11a083['params']['id']}})['then'](handleEntityNotFound(_0x4fa738,null))[_0xf5f2('0x24')](removeEntity(_0x4fa738,null))[_0xf5f2('0x40')](handleError(_0x4fa738,null));};exports['describe']=function(_0x22b645,_0xe0ce7f){return db[_0xf5f2('0x29')][_0xf5f2('0x46')]()['then'](respondWithResult(_0xe0ce7f,null))['catch'](handleError(_0xe0ce7f,null));};
\ No newline at end of file
index d623e5e..844b74b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55c6=['path','rimraf','../../config/environment','define','UserProfileResource','user_profile_has_resources','compositeIndex','resourceId','sectionId','lodash','api','moment','bluebird'];(function(_0x5d474a,_0x22d540){var _0x7b068d=function(_0x5c1a9c){while(--_0x5c1a9c){_0x5d474a['push'](_0x5d474a['shift']());}};_0x7b068d(++_0x22d540);}(_0x55c6,0x141));var _0x655c=function(_0x4cffad,_0x553282){_0x4cffad=_0x4cffad-0x0;var _0x1ec3a3=_0x55c6[_0x4cffad];return _0x1ec3a3;};'use strict';var _=require(_0x655c('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x655c('0x1'));var moment=require(_0x655c('0x2'));var BPromise=require(_0x655c('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x655c('0x4'));var rimraf=require(_0x655c('0x5'));var config=require(_0x655c('0x6'));var attributes=require('./userProfileResource.attributes');module['exports']=function(_0x35fdec,_0x3f133b){return _0x35fdec[_0x655c('0x7')](_0x655c('0x8'),attributes,{'tableName':_0x655c('0x9'),'paranoid':![],'indexes':[{'name':_0x655c('0xa'),'fields':[_0x655c('0xb'),_0x655c('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x8dd7=['exports','UserProfileResource','user_profile_has_resources','compositeIndex','lodash','util','../../config/logger','moment','bluebird','request-promise','rimraf','../../config/environment'];(function(_0x8ca327,_0x4a9905){var _0x585b21=function(_0x56788e){while(--_0x56788e){_0x8ca327['push'](_0x8ca327['shift']());}};_0x585b21(++_0x4a9905);}(_0x8dd7,0x1d8));var _0x78dd=function(_0x2b26c5,_0x547bea){_0x2b26c5=_0x2b26c5-0x0;var _0xfc7f7f=_0x8dd7[_0x2b26c5];return _0xfc7f7f;};'use strict';var _=require(_0x78dd('0x0'));var util=require(_0x78dd('0x1'));var logger=require(_0x78dd('0x2'))('api');var moment=require(_0x78dd('0x3'));var BPromise=require(_0x78dd('0x4'));var rp=require(_0x78dd('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x78dd('0x6'));var config=require(_0x78dd('0x7'));var attributes=require('./userProfileResource.attributes');module[_0x78dd('0x8')]=function(_0x58b323,_0x3bb120){return _0x58b323['define'](_0x78dd('0x9'),attributes,{'tableName':_0x78dd('0xa'),'paranoid':![],'indexes':[{'name':_0x78dd('0xb'),'fields':['resourceId','sectionId']}],'timestamps':!![]});};
\ No newline at end of file
index ecc4647..9814a6f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd5ab=['../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','debug','UserProfileResource,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','UserProfileResource,\x20%s,\x20%s','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xd5ab,0x89));var _0xbd5a=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xd5ab[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0xbd5a('0x0'));var util=require(_0xbd5a('0x1'));var moment=require(_0xbd5a('0x2'));var BPromise=require(_0xbd5a('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xbd5a('0x4'));var db=require(_0xbd5a('0x5'))['db'];var utils=require(_0xbd5a('0x6'));var logger=require(_0xbd5a('0x7'))('rpc');var config=require(_0xbd5a('0x8'));var jayson=require(_0xbd5a('0x9'));var client=jayson[_0xbd5a('0xa')][_0xbd5a('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xfe2261,_0x2b8565,_0x52a713){return new BPromise(function(_0x7ea501,_0x7a176d){return client[_0xbd5a('0xc')](_0xfe2261,_0x52a713)[_0xbd5a('0xd')](function(_0x7d06c7){logger[_0xbd5a('0xe')]('UserProfileResource,\x20%s,\x20%s',_0x2b8565,'request\x20sent');logger[_0xbd5a('0xf')](_0xbd5a('0x10'),_0x2b8565,_0xbd5a('0x11'),JSON[_0xbd5a('0x12')](_0x7d06c7));if(_0x7d06c7[_0xbd5a('0x13')]){if(_0x7d06c7[_0xbd5a('0x13')]['code']===0x1f4){logger['error']('UserProfileResource,\x20%s,\x20%s',_0x2b8565,_0x7d06c7[_0xbd5a('0x13')][_0xbd5a('0x14')]);return _0x7a176d(_0x7d06c7[_0xbd5a('0x13')][_0xbd5a('0x14')]);}logger['error'](_0xbd5a('0x15'),_0x2b8565,_0x7d06c7[_0xbd5a('0x13')]['message']);return _0x7ea501(_0x7d06c7['error'][_0xbd5a('0x14')]);}else{logger[_0xbd5a('0xe')]('UserProfileResource,\x20%s,\x20%s',_0x2b8565,'request\x20sent');_0x7ea501(_0x7d06c7[_0xbd5a('0x16')][_0xbd5a('0x14')]);}})[_0xbd5a('0x17')](function(_0x17ea0f){logger[_0xbd5a('0x13')](_0xbd5a('0x15'),_0x2b8565,_0x17ea0f);_0x7a176d(_0x17ea0f);});});}
\ No newline at end of file
+var _0xbc1d=['error','message','result','catch','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','request','then','info','UserProfileResource,\x20%s,\x20%s','request\x20sent','UserProfileResource,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x1b5d15,_0x2d240c){var _0x552b0f=function(_0x1cc643){while(--_0x1cc643){_0x1b5d15['push'](_0x1b5d15['shift']());}};_0x552b0f(++_0x2d240c);}(_0xbc1d,0xac));var _0xdbc1=function(_0x49a57c,_0x2eb02c){_0x49a57c=_0x49a57c-0x0;var _0x4e0316=_0xbc1d[_0x49a57c];return _0x4e0316;};'use strict';var _=require(_0xdbc1('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xdbc1('0x1'));var rs=require(_0xdbc1('0x2'));var fs=require('fs');var Redis=require(_0xdbc1('0x3'));var db=require(_0xdbc1('0x4'))['db'];var utils=require(_0xdbc1('0x5'));var logger=require(_0xdbc1('0x6'))(_0xdbc1('0x7'));var config=require('../../config/environment');var jayson=require(_0xdbc1('0x8'));var client=jayson['client'][_0xdbc1('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3998d0,_0x82c63c,_0xdc5510){return new BPromise(function(_0x447eb0,_0x2b66e9){return client[_0xdbc1('0xa')](_0x3998d0,_0xdc5510)[_0xdbc1('0xb')](function(_0x3db311){logger[_0xdbc1('0xc')](_0xdbc1('0xd'),_0x82c63c,_0xdbc1('0xe'));logger['debug'](_0xdbc1('0xf'),_0x82c63c,_0xdbc1('0xe'),JSON[_0xdbc1('0x10')](_0x3db311));if(_0x3db311[_0xdbc1('0x11')]){if(_0x3db311['error']['code']===0x1f4){logger[_0xdbc1('0x11')](_0xdbc1('0xd'),_0x82c63c,_0x3db311[_0xdbc1('0x11')][_0xdbc1('0x12')]);return _0x2b66e9(_0x3db311[_0xdbc1('0x11')][_0xdbc1('0x12')]);}logger['error'](_0xdbc1('0xd'),_0x82c63c,_0x3db311[_0xdbc1('0x11')]['message']);return _0x447eb0(_0x3db311[_0xdbc1('0x11')][_0xdbc1('0x12')]);}else{logger[_0xdbc1('0xc')]('UserProfileResource,\x20%s,\x20%s',_0x82c63c,_0xdbc1('0xe'));_0x447eb0(_0x3db311[_0xdbc1('0x13')][_0xdbc1('0x12')]);}})[_0xdbc1('0x14')](function(_0x46a4b6){logger[_0xdbc1('0x11')](_0xdbc1('0xd'),_0x82c63c,_0x46a4b6);_0x2b66e9(_0x46a4b6);});});}
\ No newline at end of file
index 48cb7be..4666641 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa7e7=['fs-extra','../../components/interaction/service','../../config/environment','./userProfileSection.controller','get','isAuthenticated','/describe','describe','/:id','show','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router'];(function(_0x27d6b8,_0x18dc1e){var _0x21fa59=function(_0x503f2f){while(--_0x503f2f){_0x27d6b8['push'](_0x27d6b8['shift']());}};_0x21fa59(++_0x18dc1e);}(_0xa7e7,0x19c));var _0x7a7e=function(_0x49e2b6,_0x4e6609){_0x49e2b6=_0x49e2b6-0x0;var _0x37cf09=_0xa7e7[_0x49e2b6];return _0x37cf09;};'use strict';var multer=require(_0x7a7e('0x0'));var util=require(_0x7a7e('0x1'));var path=require(_0x7a7e('0x2'));var timeout=require(_0x7a7e('0x3'));var express=require(_0x7a7e('0x4'));var router=express[_0x7a7e('0x5')]();var fs_extra=require(_0x7a7e('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x7a7e('0x7'));var config=require(_0x7a7e('0x8'));var controller=require(_0x7a7e('0x9'));router[_0x7a7e('0xa')]('/',auth[_0x7a7e('0xb')](),controller['index']);router[_0x7a7e('0xa')](_0x7a7e('0xc'),auth[_0x7a7e('0xb')](),controller[_0x7a7e('0xd')]);router['get'](_0x7a7e('0xe'),auth['isAuthenticated'](),controller[_0x7a7e('0xf')]);router['post']('/',auth[_0x7a7e('0xb')](),controller[_0x7a7e('0x10')]);router[_0x7a7e('0x11')](_0x7a7e('0xe'),auth[_0x7a7e('0xb')](),controller[_0x7a7e('0x12')]);router[_0x7a7e('0x13')]('/:id',auth[_0x7a7e('0xb')](),controller[_0x7a7e('0x14')]);module[_0x7a7e('0x15')]=router;
\ No newline at end of file
+var _0x25fc=['../../components/auth/service','../../components/interaction/service','../../config/environment','./userProfileSection.controller','get','index','/describe','describe','/:id','isAuthenticated','show','post','put','update','multer','util','connect-timeout','Router','fs-extra'];(function(_0x11f37d,_0x2eae6a){var _0x1d18c0=function(_0x839fe1){while(--_0x839fe1){_0x11f37d['push'](_0x11f37d['shift']());}};_0x1d18c0(++_0x2eae6a);}(_0x25fc,0x105));var _0xc25f=function(_0x149e4b,_0xa7450f){_0x149e4b=_0x149e4b-0x0;var _0x38d26a=_0x25fc[_0x149e4b];return _0x38d26a;};'use strict';var multer=require(_0xc25f('0x0'));var util=require(_0xc25f('0x1'));var path=require('path');var timeout=require(_0xc25f('0x2'));var express=require('express');var router=express[_0xc25f('0x3')]();var fs_extra=require(_0xc25f('0x4'));var auth=require(_0xc25f('0x5'));var interaction=require(_0xc25f('0x6'));var config=require(_0xc25f('0x7'));var controller=require(_0xc25f('0x8'));router[_0xc25f('0x9')]('/',auth['isAuthenticated'](),controller[_0xc25f('0xa')]);router['get'](_0xc25f('0xb'),auth['isAuthenticated'](),controller[_0xc25f('0xc')]);router[_0xc25f('0x9')](_0xc25f('0xd'),auth[_0xc25f('0xe')](),controller[_0xc25f('0xf')]);router[_0xc25f('0x10')]('/',auth['isAuthenticated'](),controller['create']);router[_0xc25f('0x11')](_0xc25f('0xd'),auth[_0xc25f('0xe')](),controller[_0xc25f('0x12')]);router['delete'](_0xc25f('0xd'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index bc9b696..e11cbde 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf7b4=['getDataValue','split','sequelize','STRING','INTEGER','setDataValue','crudPermissions','join'];(function(_0x24457f,_0x25b497){var _0x111e04=function(_0x39fe40){while(--_0x39fe40){_0x24457f['push'](_0x24457f['shift']());}};_0x111e04(++_0x25b497);}(_0xf7b4,0x152));var _0x4f7b=function(_0xd2f861,_0x34fa03){_0xd2f861=_0xd2f861-0x0;var _0x492a57=_0xf7b4[_0xd2f861];return _0x492a57;};'use strict';var Sequelize=require(_0x4f7b('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![]},'category':{'type':Sequelize[_0x4f7b('0x1')],'allowNull':![]},'sectionId':{'type':Sequelize[_0x4f7b('0x2')],'allowNull':![]},'enabled':{'type':Sequelize['BOOLEAN'],'defaultValue':null},'autoAssociation':{'type':Sequelize['BOOLEAN'],'defaultValue':null},'crudPermissions':{'type':Sequelize[_0x4f7b('0x1')],'set':function(_0x3e18fd){this[_0x4f7b('0x3')](_0x4f7b('0x4'),_0x3e18fd?_0x3e18fd[_0x4f7b('0x5')](''):[]);},'get':function(){return this[_0x4f7b('0x6')](_0x4f7b('0x4'))?this[_0x4f7b('0x6')](_0x4f7b('0x4'))[_0x4f7b('0x7')](''):[];}}};
\ No newline at end of file
+var _0xb688=['STRING','INTEGER','BOOLEAN','setDataValue','crudPermissions','join','split','exports'];(function(_0x56aa0f,_0x48f19c){var _0x4cd36a=function(_0x815b8f){while(--_0x815b8f){_0x56aa0f['push'](_0x56aa0f['shift']());}};_0x4cd36a(++_0x48f19c);}(_0xb688,0xcf));var _0x8b68=function(_0x471fe0,_0x5c185c){_0x471fe0=_0x471fe0-0x0;var _0x2d5d2e=_0xb688[_0x471fe0];return _0x2d5d2e;};'use strict';var Sequelize=require('sequelize');module[_0x8b68('0x0')]={'name':{'type':Sequelize[_0x8b68('0x1')],'allowNull':![]},'category':{'type':Sequelize[_0x8b68('0x1')],'allowNull':![]},'sectionId':{'type':Sequelize[_0x8b68('0x2')],'allowNull':![]},'enabled':{'type':Sequelize[_0x8b68('0x3')],'defaultValue':null},'autoAssociation':{'type':Sequelize[_0x8b68('0x3')],'defaultValue':null},'crudPermissions':{'type':Sequelize['STRING'],'set':function(_0x41030e){this[_0x8b68('0x4')](_0x8b68('0x5'),_0x41030e?_0x41030e[_0x8b68('0x6')](''):[]);},'get':function(){return this['getDataValue'](_0x8b68('0x5'))?this['getDataValue'](_0x8b68('0x5'))[_0x8b68('0x7')](''):[];}}};
\ No newline at end of file
index 0ae4cee..189dedb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2468=['body','describe','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','end','status','undefined','limit','count','offset','set','Content-Range','json','apply','reject','save','then','destroy','sendStatus','error','stack','name','send','index','map','UserProfileSection','rawAttributes','fieldName','key','keys','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','merge','type','VIRTUAL','filter','options','include','findAll','rows','show','params','find','catch','create'];(function(_0x133277,_0xb1d6b2){var _0x5b4a22=function(_0x484c26){while(--_0x484c26){_0x133277['push'](_0x133277['shift']());}};_0x5b4a22(++_0xb1d6b2);}(_0x2468,0xf2));var _0x8246=function(_0x43b08,_0x15f967){_0x43b08=_0x43b08-0x0;var _0x5e05f4=_0x2468[_0x43b08];return _0x5e05f4;};'use strict';var emlformat=require(_0x8246('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x8246('0x1'));var jsonpatch=require(_0x8246('0x2'));var rp=require(_0x8246('0x3'));var moment=require('moment');var BPromise=require(_0x8246('0x4'));var Mustache=require(_0x8246('0x5'));var util=require(_0x8246('0x6'));var path=require('path');var sox=require(_0x8246('0x7'));var csv=require(_0x8246('0x8'));var ejs=require(_0x8246('0x9'));var fs=require('fs');var fs_extra=require(_0x8246('0xa'));var _=require(_0x8246('0xb'));var squel=require(_0x8246('0xc'));var crypto=require(_0x8246('0xd'));var jsforce=require(_0x8246('0xe'));var deskjs=require(_0x8246('0xf'));var toCsv=require(_0x8246('0x8'));var querystring=require('querystring');var Papa=require(_0x8246('0x10'));var Redis=require(_0x8246('0x11'));var authService=require(_0x8246('0x12'));var qs=require(_0x8246('0x13'));var as=require(_0x8246('0x14'));var hardwareService=require(_0x8246('0x15'));var logger=require(_0x8246('0x16'))(_0x8246('0x17'));var utils=require(_0x8246('0x18'));var config=require(_0x8246('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0x8246('0x1a'))['db'];function respondWithStatusCode(_0x1812af,_0x18e919){_0x18e919=_0x18e919||0xcc;return function(_0x99b133){if(_0x99b133){return _0x1812af['sendStatus'](_0x18e919);}return _0x1812af['status'](_0x18e919)[_0x8246('0x1b')]();};}function respondWithResult(_0x39e4ca,_0x39c42b){_0x39c42b=_0x39c42b||0xc8;return function(_0x43e4c4){if(_0x43e4c4){return _0x39e4ca[_0x8246('0x1c')](_0x39c42b)['json'](_0x43e4c4);}};}function respondWithFilteredResult(_0x3a3fe2,_0x656586){return function(_0x265e8d){if(_0x265e8d){var _0x6d181a=typeof _0x656586['offset']===_0x8246('0x1d')&&typeof _0x656586[_0x8246('0x1e')]===_0x8246('0x1d');var _0x4bd5c9=_0x265e8d[_0x8246('0x1f')];var _0x3ae3ef=_0x6d181a?0x0:_0x656586[_0x8246('0x20')];var _0x1df952=_0x6d181a?_0x265e8d[_0x8246('0x1f')]:_0x656586['offset']+_0x656586[_0x8246('0x1e')];var _0x2a91ba;if(_0x1df952>=_0x4bd5c9){_0x1df952=_0x4bd5c9;_0x2a91ba=0xc8;}else{_0x2a91ba=0xce;}_0x3a3fe2[_0x8246('0x1c')](_0x2a91ba);return _0x3a3fe2[_0x8246('0x21')](_0x8246('0x22'),_0x3ae3ef+'-'+_0x1df952+'/'+_0x4bd5c9)[_0x8246('0x23')](_0x265e8d);}return null;};}function patchUpdates(_0x5f5515){return function(_0x4d2600){try{jsonpatch[_0x8246('0x24')](_0x4d2600,_0x5f5515,!![]);}catch(_0x2055b2){return BPromise[_0x8246('0x25')](_0x2055b2);}return _0x4d2600[_0x8246('0x26')]();};}function saveUpdates(_0x4cb588,_0x582176){return function(_0x4635b3){if(_0x4635b3){return _0x4635b3['update'](_0x4cb588)[_0x8246('0x27')](function(_0x4dda03){return _0x4dda03;});}return null;};}function removeEntity(_0x2b69e2,_0x517014){return function(_0x45698d){if(_0x45698d){return _0x45698d[_0x8246('0x28')]()[_0x8246('0x27')](function(){_0x2b69e2[_0x8246('0x1c')](0xcc)[_0x8246('0x1b')]();});}};}function handleEntityNotFound(_0x136405,_0x255bc9){return function(_0x2deb6f){if(!_0x2deb6f){_0x136405[_0x8246('0x29')](0x194);}return _0x2deb6f;};}function handleError(_0x47be7c,_0xdc04b){_0xdc04b=_0xdc04b||0x1f4;return function(_0x74c86d){logger[_0x8246('0x2a')](_0x74c86d[_0x8246('0x2b')]);if(_0x74c86d[_0x8246('0x2c')]){delete _0x74c86d[_0x8246('0x2c')];}_0x47be7c[_0x8246('0x1c')](_0xdc04b)[_0x8246('0x2d')](_0x74c86d);};}exports[_0x8246('0x2e')]=function(_0x1f3716,_0x54a7bb){var _0x434f4d={},_0x19c66c={},_0x412099={'count':0x0,'rows':[]};var _0x3aa3a3=_[_0x8246('0x2f')](db[_0x8246('0x30')][_0x8246('0x31')],function(_0x238d53){return{'name':_0x238d53[_0x8246('0x32')],'type':_0x238d53['type'][_0x8246('0x33')]};});_0x19c66c['model']=_[_0x8246('0x2f')](_0x3aa3a3,_0x8246('0x2c'));_0x19c66c['query']=_[_0x8246('0x34')](_0x1f3716[_0x8246('0x35')]);_0x19c66c[_0x8246('0x36')]=_[_0x8246('0x37')](_0x19c66c[_0x8246('0x38')],_0x19c66c[_0x8246('0x35')]);_0x434f4d[_0x8246('0x39')]=_['intersection'](_0x19c66c[_0x8246('0x38')],qs[_0x8246('0x3a')](_0x1f3716['query'][_0x8246('0x3a')]));_0x434f4d[_0x8246('0x39')]=_0x434f4d[_0x8246('0x39')][_0x8246('0x3b')]?_0x434f4d[_0x8246('0x39')]:_0x19c66c[_0x8246('0x38')];if(!_0x1f3716[_0x8246('0x35')][_0x8246('0x3c')](_0x8246('0x3d'))){_0x434f4d[_0x8246('0x1e')]=qs[_0x8246('0x1e')](_0x1f3716[_0x8246('0x35')][_0x8246('0x1e')]);_0x434f4d[_0x8246('0x20')]=qs[_0x8246('0x20')](_0x1f3716[_0x8246('0x35')][_0x8246('0x20')]);}_0x434f4d[_0x8246('0x3e')]=qs['sort'](_0x1f3716[_0x8246('0x35')][_0x8246('0x3f')]);_0x434f4d['where']=qs[_0x8246('0x36')](_[_0x8246('0x40')](_0x1f3716['query'],_0x19c66c[_0x8246('0x36')]),_0x3aa3a3);if(_0x1f3716['query']['filter']){_0x434f4d['where']=_[_0x8246('0x41')](_0x434f4d['where'],{'$or':_[_0x8246('0x2f')](_0x3aa3a3,function(_0x43e28d){if(_0x43e28d[_0x8246('0x42')]!==_0x8246('0x43')){var _0x4745c0={};_0x4745c0[_0x43e28d['name']]={'$like':'%'+_0x1f3716[_0x8246('0x35')][_0x8246('0x44')]+'%'};return _0x4745c0;}})});}_0x434f4d=_[_0x8246('0x41')]({},_0x434f4d,_0x1f3716[_0x8246('0x45')]);var _0x2c67df={'where':_0x434f4d['where']};return db[_0x8246('0x30')][_0x8246('0x1f')](_0x2c67df)[_0x8246('0x27')](function(_0x1e64fc){_0x412099[_0x8246('0x1f')]=_0x1e64fc;if(_0x1f3716['query']['includeAll']){_0x434f4d[_0x8246('0x46')]=[{'all':!![]}];}return db[_0x8246('0x30')][_0x8246('0x47')](_0x434f4d);})['then'](function(_0x3b4aae){_0x412099[_0x8246('0x48')]=_0x3b4aae;return _0x412099;})[_0x8246('0x27')](respondWithFilteredResult(_0x54a7bb,_0x434f4d))['catch'](handleError(_0x54a7bb,null));};exports[_0x8246('0x49')]=function(_0x1e50e6,_0x5e0421){var _0x4f1921={'raw':![],'where':{'id':_0x1e50e6[_0x8246('0x4a')]['id']}},_0x137ba6={};_0x137ba6[_0x8246('0x38')]=_[_0x8246('0x34')](db[_0x8246('0x30')][_0x8246('0x31')]);_0x137ba6[_0x8246('0x35')]=_['keys'](_0x1e50e6[_0x8246('0x35')]);_0x137ba6[_0x8246('0x36')]=_[_0x8246('0x37')](_0x137ba6[_0x8246('0x38')],_0x137ba6[_0x8246('0x35')]);_0x4f1921['attributes']=_[_0x8246('0x37')](_0x137ba6[_0x8246('0x38')],qs[_0x8246('0x3a')](_0x1e50e6[_0x8246('0x35')][_0x8246('0x3a')]));_0x4f1921['attributes']=_0x4f1921[_0x8246('0x39')][_0x8246('0x3b')]?_0x4f1921[_0x8246('0x39')]:_0x137ba6[_0x8246('0x38')];if(_0x1e50e6[_0x8246('0x35')]['includeAll']){_0x4f1921[_0x8246('0x46')]=[{'all':!![]}];}_0x4f1921=_['merge']({},_0x4f1921,_0x1e50e6[_0x8246('0x45')]);return db['UserProfileSection'][_0x8246('0x4b')](_0x4f1921)[_0x8246('0x27')](handleEntityNotFound(_0x5e0421,null))[_0x8246('0x27')](respondWithResult(_0x5e0421,null))[_0x8246('0x4c')](handleError(_0x5e0421,null));};exports[_0x8246('0x4d')]=function(_0x472cb9,_0x5bc502){return db[_0x8246('0x30')][_0x8246('0x4d')](_0x472cb9[_0x8246('0x4e')],{})['then'](respondWithResult(_0x5bc502,0xc9))[_0x8246('0x4c')](handleError(_0x5bc502,null));};exports['update']=function(_0x552380,_0x5369f2){if(_0x552380[_0x8246('0x4e')]['id']){delete _0x552380[_0x8246('0x4e')]['id'];}return db[_0x8246('0x30')][_0x8246('0x4b')]({'where':{'id':_0x552380[_0x8246('0x4a')]['id']}})[_0x8246('0x27')](handleEntityNotFound(_0x5369f2,null))[_0x8246('0x27')](saveUpdates(_0x552380[_0x8246('0x4e')],null))[_0x8246('0x27')](respondWithResult(_0x5369f2,null))['catch'](handleError(_0x5369f2,null));};exports['destroy']=function(_0x483454,_0x29bdb1){return db[_0x8246('0x30')][_0x8246('0x4b')]({'where':{'id':_0x483454['params']['id']}})[_0x8246('0x27')](handleEntityNotFound(_0x29bdb1,null))[_0x8246('0x27')](removeEntity(_0x29bdb1,null))[_0x8246('0x4c')](handleError(_0x29bdb1,null));};exports[_0x8246('0x4f')]=function(_0x202da2,_0xdd0fb9){return db['UserProfileSection'][_0x8246('0x4f')]()['then'](respondWithResult(_0xdd0fb9,null))[_0x8246('0x4c')](handleError(_0xdd0fb9,null));};
\ No newline at end of file
+var _0x3ca6=['update','then','destroy','name','send','index','map','rawAttributes','fieldName','key','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filters','filter','where','type','VIRTUAL','merge','options','UserProfileSection','findAll','catch','show','params','includeAll','include','create','body','find','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','lodash','squel','crypto','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save'];(function(_0x2fd61e,_0x408859){var _0x55ee6b=function(_0x175115){while(--_0x175115){_0x2fd61e['push'](_0x2fd61e['shift']());}};_0x55ee6b(++_0x408859);}(_0x3ca6,0x1f0));var _0x63ca=function(_0x4ef15c,_0x4a9183){_0x4ef15c=_0x4ef15c-0x0;var _0x4a731e=_0x3ca6[_0x4ef15c];return _0x4a731e;};'use strict';var emlformat=require(_0x63ca('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x63ca('0x1'));var jsonpatch=require(_0x63ca('0x2'));var rp=require(_0x63ca('0x3'));var moment=require(_0x63ca('0x4'));var BPromise=require(_0x63ca('0x5'));var Mustache=require(_0x63ca('0x6'));var util=require('util');var path=require(_0x63ca('0x7'));var sox=require(_0x63ca('0x8'));var csv=require(_0x63ca('0x9'));var ejs=require(_0x63ca('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x63ca('0xb'));var squel=require(_0x63ca('0xc'));var crypto=require(_0x63ca('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x63ca('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x63ca('0xf'));var authService=require(_0x63ca('0x10'));var qs=require(_0x63ca('0x11'));var as=require(_0x63ca('0x12'));var hardwareService=require(_0x63ca('0x13'));var logger=require(_0x63ca('0x14'))('api');var utils=require(_0x63ca('0x15'));var config=require(_0x63ca('0x16'));var licenseUtil=require(_0x63ca('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x36899a,_0x15b12f){_0x15b12f=_0x15b12f||0xcc;return function(_0x222046){if(_0x222046){return _0x36899a[_0x63ca('0x18')](_0x15b12f);}return _0x36899a[_0x63ca('0x19')](_0x15b12f)[_0x63ca('0x1a')]();};}function respondWithResult(_0x16cbab,_0x16efc2){_0x16efc2=_0x16efc2||0xc8;return function(_0x5aa70d){if(_0x5aa70d){return _0x16cbab[_0x63ca('0x19')](_0x16efc2)[_0x63ca('0x1b')](_0x5aa70d);}};}function respondWithFilteredResult(_0x2e9065,_0x213be7){return function(_0x19ae59){if(_0x19ae59){var _0x26e04e=typeof _0x213be7[_0x63ca('0x1c')]===_0x63ca('0x1d')&&typeof _0x213be7[_0x63ca('0x1e')]===_0x63ca('0x1d');var _0x4265ba=_0x19ae59[_0x63ca('0x1f')];var _0x5978e2=_0x26e04e?0x0:_0x213be7['offset'];var _0x28570e=_0x26e04e?_0x19ae59[_0x63ca('0x1f')]:_0x213be7[_0x63ca('0x1c')]+_0x213be7[_0x63ca('0x1e')];var _0x452664;if(_0x28570e>=_0x4265ba){_0x28570e=_0x4265ba;_0x452664=0xc8;}else{_0x452664=0xce;}_0x2e9065[_0x63ca('0x19')](_0x452664);return _0x2e9065[_0x63ca('0x20')]('Content-Range',_0x5978e2+'-'+_0x28570e+'/'+_0x4265ba)[_0x63ca('0x1b')](_0x19ae59);}return null;};}function patchUpdates(_0x5311e6){return function(_0x201aae){try{jsonpatch[_0x63ca('0x21')](_0x201aae,_0x5311e6,!![]);}catch(_0x2cfd8e){return BPromise[_0x63ca('0x22')](_0x2cfd8e);}return _0x201aae[_0x63ca('0x23')]();};}function saveUpdates(_0xa7153d,_0x2910b8){return function(_0x5c2e03){if(_0x5c2e03){return _0x5c2e03[_0x63ca('0x24')](_0xa7153d)[_0x63ca('0x25')](function(_0x494ad9){return _0x494ad9;});}return null;};}function removeEntity(_0x5eb684,_0x26d797){return function(_0x104f53){if(_0x104f53){return _0x104f53[_0x63ca('0x26')]()['then'](function(){_0x5eb684['status'](0xcc)[_0x63ca('0x1a')]();});}};}function handleEntityNotFound(_0x8613c5,_0x3eecd0){return function(_0x582fa7){if(!_0x582fa7){_0x8613c5[_0x63ca('0x18')](0x194);}return _0x582fa7;};}function handleError(_0x1dc589,_0x149234){_0x149234=_0x149234||0x1f4;return function(_0x476af3){logger['error'](_0x476af3['stack']);if(_0x476af3[_0x63ca('0x27')]){delete _0x476af3[_0x63ca('0x27')];}_0x1dc589['status'](_0x149234)[_0x63ca('0x28')](_0x476af3);};}exports[_0x63ca('0x29')]=function(_0x1880db,_0x5910cb){var _0x5d0bb2={},_0x4ae53a={},_0x1c8266={'count':0x0,'rows':[]};var _0x11b225=_[_0x63ca('0x2a')](db['UserProfileSection'][_0x63ca('0x2b')],function(_0x2382e7){return{'name':_0x2382e7[_0x63ca('0x2c')],'type':_0x2382e7['type'][_0x63ca('0x2d')]};});_0x4ae53a[_0x63ca('0x2e')]=_['map'](_0x11b225,_0x63ca('0x27'));_0x4ae53a['query']=_[_0x63ca('0x2f')](_0x1880db[_0x63ca('0x30')]);_0x4ae53a['filters']=_[_0x63ca('0x31')](_0x4ae53a['model'],_0x4ae53a[_0x63ca('0x30')]);_0x5d0bb2[_0x63ca('0x32')]=_[_0x63ca('0x31')](_0x4ae53a[_0x63ca('0x2e')],qs[_0x63ca('0x33')](_0x1880db['query'][_0x63ca('0x33')]));_0x5d0bb2[_0x63ca('0x32')]=_0x5d0bb2[_0x63ca('0x32')][_0x63ca('0x34')]?_0x5d0bb2[_0x63ca('0x32')]:_0x4ae53a[_0x63ca('0x2e')];if(!_0x1880db['query'][_0x63ca('0x35')](_0x63ca('0x36'))){_0x5d0bb2[_0x63ca('0x1e')]=qs[_0x63ca('0x1e')](_0x1880db[_0x63ca('0x30')][_0x63ca('0x1e')]);_0x5d0bb2[_0x63ca('0x1c')]=qs[_0x63ca('0x1c')](_0x1880db['query']['offset']);}_0x5d0bb2[_0x63ca('0x37')]=qs[_0x63ca('0x38')](_0x1880db[_0x63ca('0x30')][_0x63ca('0x38')]);_0x5d0bb2['where']=qs['filters'](_[_0x63ca('0x39')](_0x1880db[_0x63ca('0x30')],_0x4ae53a[_0x63ca('0x3a')]),_0x11b225);if(_0x1880db[_0x63ca('0x30')][_0x63ca('0x3b')]){_0x5d0bb2[_0x63ca('0x3c')]=_['merge'](_0x5d0bb2[_0x63ca('0x3c')],{'$or':_[_0x63ca('0x2a')](_0x11b225,function(_0x512751){if(_0x512751[_0x63ca('0x3d')]!==_0x63ca('0x3e')){var _0x5025ed={};_0x5025ed[_0x512751['name']]={'$like':'%'+_0x1880db['query'][_0x63ca('0x3b')]+'%'};return _0x5025ed;}})});}_0x5d0bb2=_[_0x63ca('0x3f')]({},_0x5d0bb2,_0x1880db[_0x63ca('0x40')]);var _0x464971={'where':_0x5d0bb2[_0x63ca('0x3c')]};return db[_0x63ca('0x41')][_0x63ca('0x1f')](_0x464971)[_0x63ca('0x25')](function(_0x3bc5fe){_0x1c8266[_0x63ca('0x1f')]=_0x3bc5fe;if(_0x1880db[_0x63ca('0x30')]['includeAll']){_0x5d0bb2['include']=[{'all':!![]}];}return db[_0x63ca('0x41')][_0x63ca('0x42')](_0x5d0bb2);})[_0x63ca('0x25')](function(_0x1e1f5c){_0x1c8266['rows']=_0x1e1f5c;return _0x1c8266;})[_0x63ca('0x25')](respondWithFilteredResult(_0x5910cb,_0x5d0bb2))[_0x63ca('0x43')](handleError(_0x5910cb,null));};exports[_0x63ca('0x44')]=function(_0x534a1f,_0x439050){var _0x1b2db6={'raw':![],'where':{'id':_0x534a1f[_0x63ca('0x45')]['id']}},_0x1cc7a5={};_0x1cc7a5['model']=_[_0x63ca('0x2f')](db['UserProfileSection'][_0x63ca('0x2b')]);_0x1cc7a5[_0x63ca('0x30')]=_[_0x63ca('0x2f')](_0x534a1f[_0x63ca('0x30')]);_0x1cc7a5['filters']=_['intersection'](_0x1cc7a5[_0x63ca('0x2e')],_0x1cc7a5[_0x63ca('0x30')]);_0x1b2db6[_0x63ca('0x32')]=_['intersection'](_0x1cc7a5['model'],qs[_0x63ca('0x33')](_0x534a1f[_0x63ca('0x30')][_0x63ca('0x33')]));_0x1b2db6[_0x63ca('0x32')]=_0x1b2db6[_0x63ca('0x32')][_0x63ca('0x34')]?_0x1b2db6[_0x63ca('0x32')]:_0x1cc7a5[_0x63ca('0x2e')];if(_0x534a1f[_0x63ca('0x30')][_0x63ca('0x46')]){_0x1b2db6[_0x63ca('0x47')]=[{'all':!![]}];}_0x1b2db6=_[_0x63ca('0x3f')]({},_0x1b2db6,_0x534a1f[_0x63ca('0x40')]);return db['UserProfileSection']['find'](_0x1b2db6)[_0x63ca('0x25')](handleEntityNotFound(_0x439050,null))[_0x63ca('0x25')](respondWithResult(_0x439050,null))[_0x63ca('0x43')](handleError(_0x439050,null));};exports[_0x63ca('0x48')]=function(_0x59e934,_0x3c52b2){return db['UserProfileSection'][_0x63ca('0x48')](_0x59e934['body'],{})[_0x63ca('0x25')](respondWithResult(_0x3c52b2,0xc9))[_0x63ca('0x43')](handleError(_0x3c52b2,null));};exports[_0x63ca('0x24')]=function(_0x566784,_0x8a0497){if(_0x566784[_0x63ca('0x49')]['id']){delete _0x566784[_0x63ca('0x49')]['id'];}return db['UserProfileSection'][_0x63ca('0x4a')]({'where':{'id':_0x566784[_0x63ca('0x45')]['id']}})['then'](handleEntityNotFound(_0x8a0497,null))['then'](saveUpdates(_0x566784[_0x63ca('0x49')],null))[_0x63ca('0x25')](respondWithResult(_0x8a0497,null))['catch'](handleError(_0x8a0497,null));};exports['destroy']=function(_0x470a48,_0x45da8c){return db[_0x63ca('0x41')][_0x63ca('0x4a')]({'where':{'id':_0x470a48[_0x63ca('0x45')]['id']}})['then'](handleEntityNotFound(_0x45da8c,null))[_0x63ca('0x25')](removeEntity(_0x45da8c,null))[_0x63ca('0x43')](handleError(_0x45da8c,null));};exports[_0x63ca('0x4b')]=function(_0x46ab82,_0x108d48){return db[_0x63ca('0x41')][_0x63ca('0x4b')]()[_0x63ca('0x25')](respondWithResult(_0x108d48,null))[_0x63ca('0x43')](handleError(_0x108d48,null));};
\ No newline at end of file
index 2065fb0..13d8ee4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf1a=['path','rimraf','./userProfileSection.attributes','define','UserProfileSection','sectionId','userProfileId','lodash','util','../../config/logger','moment'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xaf1a,0xd8));var _0xaaf1=function(_0x50fa6b,_0x5170fa){_0x50fa6b=_0x50fa6b-0x0;var _0x4545df=_0xaf1a[_0x50fa6b];return _0x4545df;};'use strict';var _=require(_0xaaf1('0x0'));var util=require(_0xaaf1('0x1'));var logger=require(_0xaaf1('0x2'))('api');var moment=require(_0xaaf1('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xaaf1('0x4'));var rimraf=require(_0xaaf1('0x5'));var config=require('../../config/environment');var attributes=require(_0xaaf1('0x6'));module['exports']=function(_0xe6ead6,_0x12f40a){return _0xe6ead6[_0xaaf1('0x7')](_0xaaf1('0x8'),attributes,{'tableName':'user_profile_has_sections','paranoid':![],'indexes':[{'name':'compositeIndex','fields':[_0xaaf1('0x9'),_0xaaf1('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x9d99=['bluebird','request-promise','path','../../config/environment','define','UserProfileSection','user_profile_has_sections','compositeIndex','userProfileId','../../config/logger','moment'];(function(_0x56740a,_0x568894){var _0x257144=function(_0x2b8cc5){while(--_0x2b8cc5){_0x56740a['push'](_0x56740a['shift']());}};_0x257144(++_0x568894);}(_0x9d99,0xfb));var _0x99d9=function(_0x4b7895,_0x3c4f5d){_0x4b7895=_0x4b7895-0x0;var _0x264180=_0x9d99[_0x4b7895];return _0x264180;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x99d9('0x0'))('api');var moment=require(_0x99d9('0x1'));var BPromise=require(_0x99d9('0x2'));var rp=require(_0x99d9('0x3'));var fs=require('fs');var path=require(_0x99d9('0x4'));var rimraf=require('rimraf');var config=require(_0x99d9('0x5'));var attributes=require('./userProfileSection.attributes');module['exports']=function(_0x563a37,_0x5a942c){return _0x563a37[_0x99d9('0x6')](_0x99d9('0x7'),attributes,{'tableName':_0x99d9('0x8'),'paranoid':![],'indexes':[{'name':_0x99d9('0x9'),'fields':['sectionId',_0x99d9('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index 8b983c0..b480b8f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x72d7=['message','result','catch','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','UserProfileSection,\x20%s,\x20%s','request\x20sent','debug','error','code'];(function(_0x75eccc,_0x4c2958){var _0x3ac04b=function(_0x271b34){while(--_0x271b34){_0x75eccc['push'](_0x75eccc['shift']());}};_0x3ac04b(++_0x4c2958);}(_0x72d7,0x129));var _0x772d=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0x72d7[_0x6131cd];return _0x47e916;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x772d('0x0'));var BPromise=require(_0x772d('0x1'));var rs=require(_0x772d('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x772d('0x3'))['db'];var utils=require(_0x772d('0x4'));var logger=require(_0x772d('0x5'))(_0x772d('0x6'));var config=require(_0x772d('0x7'));var jayson=require(_0x772d('0x8'));var client=jayson[_0x772d('0x9')][_0x772d('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x115a88,_0x371ee0,_0x379157){return new BPromise(function(_0x492da9,_0x5f4f47){return client['request'](_0x115a88,_0x379157)[_0x772d('0xb')](function(_0x397f2b){logger[_0x772d('0xc')](_0x772d('0xd'),_0x371ee0,_0x772d('0xe'));logger[_0x772d('0xf')]('UserProfileSection,\x20%s,\x20%s,\x20%s',_0x371ee0,_0x772d('0xe'),JSON['stringify'](_0x397f2b));if(_0x397f2b[_0x772d('0x10')]){if(_0x397f2b['error'][_0x772d('0x11')]===0x1f4){logger[_0x772d('0x10')]('UserProfileSection,\x20%s,\x20%s',_0x371ee0,_0x397f2b['error'][_0x772d('0x12')]);return _0x5f4f47(_0x397f2b['error'][_0x772d('0x12')]);}logger['error'](_0x772d('0xd'),_0x371ee0,_0x397f2b['error'][_0x772d('0x12')]);return _0x492da9(_0x397f2b['error'][_0x772d('0x12')]);}else{logger['info'](_0x772d('0xd'),_0x371ee0,'request\x20sent');_0x492da9(_0x397f2b[_0x772d('0x13')][_0x772d('0x12')]);}})[_0x772d('0x14')](function(_0x1b1102){logger[_0x772d('0x10')](_0x772d('0xd'),_0x371ee0,_0x1b1102);_0x5f4f47(_0x1b1102);});});}
\ No newline at end of file
+var _0x58b9=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','UserProfileSection,\x20%s,\x20%s,\x20%s','stringify','error','code','UserProfileSection,\x20%s,\x20%s','message','result','lodash','moment'];(function(_0x22c530,_0xf5b5f){var _0x44f85b=function(_0x404b24){while(--_0x404b24){_0x22c530['push'](_0x22c530['shift']());}};_0x44f85b(++_0xf5b5f);}(_0x58b9,0xad));var _0x958b=function(_0x32c5ae,_0x3c5b87){_0x32c5ae=_0x32c5ae-0x0;var _0x4711f7=_0x58b9[_0x32c5ae];return _0x4711f7;};'use strict';var _=require(_0x958b('0x0'));var util=require('util');var moment=require(_0x958b('0x1'));var BPromise=require(_0x958b('0x2'));var rs=require(_0x958b('0x3'));var fs=require('fs');var Redis=require(_0x958b('0x4'));var db=require(_0x958b('0x5'))['db'];var utils=require(_0x958b('0x6'));var logger=require(_0x958b('0x7'))(_0x958b('0x8'));var config=require(_0x958b('0x9'));var jayson=require(_0x958b('0xa'));var client=jayson[_0x958b('0xb')][_0x958b('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x37e3d6,_0x69d13f,_0xb635d7){return new BPromise(function(_0x2a9ad8,_0x107b83){return client[_0x958b('0xd')](_0x37e3d6,_0xb635d7)[_0x958b('0xe')](function(_0x4fa646){logger[_0x958b('0xf')]('UserProfileSection,\x20%s,\x20%s',_0x69d13f,_0x958b('0x10'));logger[_0x958b('0x11')](_0x958b('0x12'),_0x69d13f,'request\x20sent',JSON[_0x958b('0x13')](_0x4fa646));if(_0x4fa646[_0x958b('0x14')]){if(_0x4fa646[_0x958b('0x14')][_0x958b('0x15')]===0x1f4){logger[_0x958b('0x14')](_0x958b('0x16'),_0x69d13f,_0x4fa646['error']['message']);return _0x107b83(_0x4fa646[_0x958b('0x14')][_0x958b('0x17')]);}logger['error'](_0x958b('0x16'),_0x69d13f,_0x4fa646[_0x958b('0x14')]['message']);return _0x2a9ad8(_0x4fa646[_0x958b('0x14')][_0x958b('0x17')]);}else{logger[_0x958b('0xf')](_0x958b('0x16'),_0x69d13f,'request\x20sent');_0x2a9ad8(_0x4fa646[_0x958b('0x18')][_0x958b('0x17')]);}})['catch'](function(_0x42a20e){logger[_0x958b('0x14')](_0x958b('0x16'),_0x69d13f,_0x42a20e);_0x107b83(_0x42a20e);});});}
\ No newline at end of file
index 1234400..219ea51 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(_0x1dff39,_0x1cf83c){var _0x18bc86=function(_0x4971cb){while(--_0x4971cb){_0x1dff39['push'](_0x1dff39['shift']());}};_0x18bc86(++_0x1cf83c);}(_0x9c44,0x178));var _0x49c4=function(_0x6cf19c,_0x2f3f02){_0x6cf19c=_0x6cf19c-0x0;var _0xce14f3=_0x9c44[_0x6cf19c];return _0xce14f3;};'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 _0xcb91=['express','Router','../../components/auth/service','../../components/interaction/service','exports','path','connect-timeout'];(function(_0xf391af,_0x32f8f0){var _0x5e9331=function(_0x5466f2){while(--_0x5466f2){_0xf391af['push'](_0xf391af['shift']());}};_0x5e9331(++_0x32f8f0);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x1992f1,_0x5c61f0){_0x1992f1=_0x1992f1-0x0;var _0x413dfe=_0xcb91[_0x1992f1];return _0x413dfe;};'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 4cb9e72..03eb2c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb6a8=['exports','INTEGER','sequelize'];(function(_0x25bc3d,_0x19ad33){var _0x3c5aa9=function(_0x3c89f3){while(--_0x3c89f3){_0x25bc3d['push'](_0x25bc3d['shift']());}};_0x3c5aa9(++_0x19ad33);}(_0xb6a8,0xc8));var _0x8b6a=function(_0x57bdd4,_0x1127dc){_0x57bdd4=_0x57bdd4-0x0;var _0x57d31f=_0xb6a8[_0x57bdd4];return _0x57d31f;};'use strict';var Sequelize=require(_0x8b6a('0x0'));module[_0x8b6a('0x1')]={'penalty':{'type':Sequelize[_0x8b6a('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x7edb=['exports','INTEGER'];(function(_0xd511d,_0x3546b9){var _0x3f148e=function(_0x51f35f){while(--_0x51f35f){_0xd511d['push'](_0xd511d['shift']());}};_0x3f148e(++_0x3546b9);}(_0x7edb,0x158));var _0xb7ed=function(_0x49ce15,_0xa0566d){_0x49ce15=_0x49ce15-0x0;var _0x1e7403=_0x7edb[_0x49ce15];return _0x1e7403;};'use strict';var Sequelize=require('sequelize');module[_0xb7ed('0x0')]={'penalty':{'type':Sequelize[_0xb7ed('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index c5b3917..8bd5415 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf072=['path','rimraf','./userSmsQueue.attributes','exports','define','UserSmsQueue','user_has_sms_queues','lodash','util','../../config/logger','moment','request-promise'];(function(_0x4d9d8f,_0x29041c){var _0x2e14b4=function(_0x205ed7){while(--_0x205ed7){_0x4d9d8f['push'](_0x4d9d8f['shift']());}};_0x2e14b4(++_0x29041c);}(_0xf072,0x1cf));var _0x2f07=function(_0x8bbacf,_0x561127){_0x8bbacf=_0x8bbacf-0x0;var _0x505736=_0xf072[_0x8bbacf];return _0x505736;};'use strict';var _=require(_0x2f07('0x0'));var util=require(_0x2f07('0x1'));var logger=require(_0x2f07('0x2'))('api');var moment=require(_0x2f07('0x3'));var BPromise=require('bluebird');var rp=require(_0x2f07('0x4'));var fs=require('fs');var path=require(_0x2f07('0x5'));var rimraf=require(_0x2f07('0x6'));var config=require('../../config/environment');var attributes=require(_0x2f07('0x7'));module[_0x2f07('0x8')]=function(_0x3643bb,_0x2e6422){return _0x3643bb[_0x2f07('0x9')](_0x2f07('0xa'),attributes,{'tableName':_0x2f07('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc6a2=['rimraf','../../config/environment','./userSmsQueue.attributes','exports','define','UserSmsQueue','user_has_sms_queues','lodash','util','api','moment','bluebird','request-promise','path'];(function(_0x946518,_0x22816f){var _0x909b69=function(_0x2fa5a4){while(--_0x2fa5a4){_0x946518['push'](_0x946518['shift']());}};_0x909b69(++_0x22816f);}(_0xc6a2,0x69));var _0x2c6a=function(_0x2acd00,_0xefdf4d){_0x2acd00=_0x2acd00-0x0;var _0x50c980=_0xc6a2[_0x2acd00];return _0x50c980;};'use strict';var _=require(_0x2c6a('0x0'));var util=require(_0x2c6a('0x1'));var logger=require('../../config/logger')(_0x2c6a('0x2'));var moment=require(_0x2c6a('0x3'));var BPromise=require(_0x2c6a('0x4'));var rp=require(_0x2c6a('0x5'));var fs=require('fs');var path=require(_0x2c6a('0x6'));var rimraf=require(_0x2c6a('0x7'));var config=require(_0x2c6a('0x8'));var attributes=require(_0x2c6a('0x9'));module[_0x2c6a('0xa')]=function(_0x3c7e44,_0x4559d8){return _0x3c7e44[_0x2c6a('0xb')](_0x2c6a('0xc'),attributes,{'tableName':_0x2c6a('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5035829..7927d42 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f87=['catch','lodash','util','moment','bluebird','randomstring','ioredis','rpc','../../config/environment','jayson/promise','http','request','then','info','UserSmsQueue,\x20%s,\x20%s','request\x20sent','debug','UserSmsQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result'];(function(_0x202836,_0x507ef8){var _0x478dd4=function(_0x288b61){while(--_0x288b61){_0x202836['push'](_0x202836['shift']());}};_0x478dd4(++_0x507ef8);}(_0x8f87,0xfe));var _0x78f8=function(_0x2dbce7,_0x57cb8d){_0x2dbce7=_0x2dbce7-0x0;var _0x3a3ed0=_0x8f87[_0x2dbce7];return _0x3a3ed0;};'use strict';var _=require(_0x78f8('0x0'));var util=require(_0x78f8('0x1'));var moment=require(_0x78f8('0x2'));var BPromise=require(_0x78f8('0x3'));var rs=require(_0x78f8('0x4'));var fs=require('fs');var Redis=require(_0x78f8('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x78f8('0x6'));var config=require(_0x78f8('0x7'));var jayson=require(_0x78f8('0x8'));var client=jayson['client'][_0x78f8('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3c7fb5,_0xcd247a,_0x442c6c){return new BPromise(function(_0x4e17d9,_0x3440ea){return client[_0x78f8('0xa')](_0x3c7fb5,_0x442c6c)[_0x78f8('0xb')](function(_0x188933){logger[_0x78f8('0xc')](_0x78f8('0xd'),_0xcd247a,_0x78f8('0xe'));logger[_0x78f8('0xf')](_0x78f8('0x10'),_0xcd247a,'request\x20sent',JSON[_0x78f8('0x11')](_0x188933));if(_0x188933[_0x78f8('0x12')]){if(_0x188933[_0x78f8('0x12')][_0x78f8('0x13')]===0x1f4){logger[_0x78f8('0x12')](_0x78f8('0xd'),_0xcd247a,_0x188933[_0x78f8('0x12')]['message']);return _0x3440ea(_0x188933[_0x78f8('0x12')][_0x78f8('0x14')]);}logger[_0x78f8('0x12')]('UserSmsQueue,\x20%s,\x20%s',_0xcd247a,_0x188933['error'][_0x78f8('0x14')]);return _0x4e17d9(_0x188933[_0x78f8('0x12')]['message']);}else{logger[_0x78f8('0xc')](_0x78f8('0xd'),_0xcd247a,_0x78f8('0xe'));_0x4e17d9(_0x188933[_0x78f8('0x15')]['message']);}})[_0x78f8('0x16')](function(_0x1c5468){logger[_0x78f8('0x12')](_0x78f8('0xd'),_0xcd247a,_0x1c5468);_0x3440ea(_0x1c5468);});});}
\ No newline at end of file
+var _0x5d82=['debug','stringify','error','code','message','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','then','info','UserSmsQueue,\x20%s,\x20%s','request\x20sent'];(function(_0x583337,_0x5658be){var _0x43075e=function(_0x1072b2){while(--_0x1072b2){_0x583337['push'](_0x583337['shift']());}};_0x43075e(++_0x5658be);}(_0x5d82,0xcd));var _0x25d8=function(_0x917908,_0x246807){_0x917908=_0x917908-0x0;var _0xb30100=_0x5d82[_0x917908];return _0xb30100;};'use strict';var _=require(_0x25d8('0x0'));var util=require(_0x25d8('0x1'));var moment=require('moment');var BPromise=require(_0x25d8('0x2'));var rs=require(_0x25d8('0x3'));var fs=require('fs');var Redis=require(_0x25d8('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x25d8('0x5'));var logger=require(_0x25d8('0x6'))(_0x25d8('0x7'));var config=require(_0x25d8('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x25d8('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x592ad0,_0x5c637a,_0x5e1191){return new BPromise(function(_0x115462,_0x1f2c8a){return client[_0x25d8('0xa')](_0x592ad0,_0x5e1191)[_0x25d8('0xb')](function(_0x1db46f){logger[_0x25d8('0xc')](_0x25d8('0xd'),_0x5c637a,_0x25d8('0xe'));logger[_0x25d8('0xf')]('UserSmsQueue,\x20%s,\x20%s,\x20%s',_0x5c637a,'request\x20sent',JSON[_0x25d8('0x10')](_0x1db46f));if(_0x1db46f[_0x25d8('0x11')]){if(_0x1db46f[_0x25d8('0x11')][_0x25d8('0x12')]===0x1f4){logger[_0x25d8('0x11')]('UserSmsQueue,\x20%s,\x20%s',_0x5c637a,_0x1db46f[_0x25d8('0x11')][_0x25d8('0x13')]);return _0x1f2c8a(_0x1db46f[_0x25d8('0x11')]['message']);}logger[_0x25d8('0x11')]('UserSmsQueue,\x20%s,\x20%s',_0x5c637a,_0x1db46f['error'][_0x25d8('0x13')]);return _0x115462(_0x1db46f[_0x25d8('0x11')][_0x25d8('0x13')]);}else{logger[_0x25d8('0xc')](_0x25d8('0xd'),_0x5c637a,_0x25d8('0xe'));_0x115462(_0x1db46f['result'][_0x25d8('0x13')]);}})['catch'](function(_0x3fe378){logger[_0x25d8('0x11')](_0x25d8('0xd'),_0x5c637a,_0x3fe378);_0x1f2c8a(_0x3fe378);});});}
\ No newline at end of file
index 95fbe74..3c4d8d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e9f=['exports','INTEGER'];(function(_0x1fe528,_0x236458){var _0x4d2958=function(_0x29f2d4){while(--_0x29f2d4){_0x1fe528['push'](_0x1fe528['shift']());}};_0x4d2958(++_0x236458);}(_0x5e9f,0xac));var _0xf5e9=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0x5e9f[_0xfae23b];return _0x200640;};'use strict';var Sequelize=require('sequelize');module[_0xf5e9('0x0')]={'UserId':{'type':Sequelize['INTEGER']},'VoicePrefixId':{'type':Sequelize[_0xf5e9('0x1')]}};
\ No newline at end of file
+var _0x071a=['INTEGER','exports'];(function(_0xb28906,_0x257af1){var _0x1a7d90=function(_0x5a200d){while(--_0x5a200d){_0xb28906['push'](_0xb28906['shift']());}};_0x1a7d90(++_0x257af1);}(_0x071a,0x1df));var _0xa071=function(_0x32084f,_0x28fc38){_0x32084f=_0x32084f-0x0;var _0x187302=_0x071a[_0x32084f];return _0x187302;};'use strict';var Sequelize=require('sequelize');module[_0xa071('0x0')]={'UserId':{'type':Sequelize['INTEGER']},'VoicePrefixId':{'type':Sequelize[_0xa071('0x1')]}};
\ No newline at end of file
index e55dfed..a8b1bb1 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(_0x3cc29e,_0x31243b){var _0x19b128=function(_0x2424bc){while(--_0x2424bc){_0x3cc29e['push'](_0x3cc29e['shift']());}};_0x19b128(++_0x31243b);}(_0xa9e0,0x123));var _0x0a9e=function(_0x411add,_0x1aed38){_0x411add=_0x411add-0x0;var _0x238242=_0xa9e0[_0x411add];return _0x238242;};'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(_0x1f28e2,_0x3c747a){var _0x54309a=function(_0x163377){while(--_0x163377){_0x1f28e2['push'](_0x1f28e2['shift']());}};_0x54309a(++_0x3c747a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0xa9e0[_0x5ddb1c];return _0x354adc;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var logger=require(_0x0a9e('0x2'))('api');var moment=require('moment');var BPromise=require(_0x0a9e('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0a9e('0x4'));var rimraf=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var attributes=require(_0x0a9e('0x7'));module[_0x0a9e('0x8')]=function(_0x57b080,_0x219af0){return _0x57b080[_0x0a9e('0x9')](_0x0a9e('0xa'),attributes,{'tableName':'user_has_voice_prefixes','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 956b708..26f0ee8 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(_0x1df9f9,_0x5e70b4){var _0x2fe038=function(_0xe1763a){while(--_0xe1763a){_0x1df9f9['push'](_0x1df9f9['shift']());}};_0x2fe038(++_0x5e70b4);}(_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'));module[_0x0a9e('0x7')]=router;
\ No newline at end of file
+var _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','multer','util'];(function(_0x30a02e,_0x1338e8){var _0x36102a=function(_0x43d17c){while(--_0x43d17c){_0x30a02e['push'](_0x30a02e['shift']());}};_0x36102a(++_0x1338e8);}(_0xd8b0,0xad));var _0x0d8b=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xd8b0[_0xa464c9];return _0x3d73c4;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));module['exports']=router;
\ No newline at end of file
index dbf51f3..a8351ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcbe2=['sequelize','exports','INTEGER'];(function(_0x36ed6c,_0x5744f1){var _0x46b013=function(_0x112df8){while(--_0x112df8){_0x36ed6c['push'](_0x36ed6c['shift']());}};_0x46b013(++_0x5744f1);}(_0xcbe2,0xc6));var _0x2cbe=function(_0x4ae426,_0x88ac72){_0x4ae426=_0x4ae426-0x0;var _0x39297b=_0xcbe2[_0x4ae426];return _0x39297b;};'use strict';var Sequelize=require(_0x2cbe('0x0'));module[_0x2cbe('0x1')]={'penalty':{'type':Sequelize[_0x2cbe('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x23b0=['INTEGER','exports'];(function(_0x3e2102,_0x57fdd3){var _0x57074c=function(_0x2f7ef4){while(--_0x2f7ef4){_0x3e2102['push'](_0x3e2102['shift']());}};_0x57074c(++_0x57fdd3);}(_0x23b0,0xc3));var _0x023b=function(_0x197590,_0x18297a){_0x197590=_0x197590-0x0;var _0x2801dd=_0x23b0[_0x197590];return _0x2801dd;};'use strict';var Sequelize=require('sequelize');module[_0x023b('0x0')]={'penalty':{'type':Sequelize[_0x023b('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index 55acef2..b9ffa6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6416=['../../config/environment','exports','define','user_has_voice_queues','lodash','api','moment','rimraf'];(function(_0x484e36,_0x4482d8){var _0xafc85d=function(_0xaba9c8){while(--_0xaba9c8){_0x484e36['push'](_0x484e36['shift']());}};_0xafc85d(++_0x4482d8);}(_0x6416,0x94));var _0x6641=function(_0x5c86e4,_0x2869e3){_0x5c86e4=_0x5c86e4-0x0;var _0x16bcdf=_0x6416[_0x5c86e4];return _0x16bcdf;};'use strict';var _=require(_0x6641('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x6641('0x1'));var moment=require(_0x6641('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x6641('0x3'));var config=require(_0x6641('0x4'));var attributes=require('./userVoiceQueue.attributes');module[_0x6641('0x5')]=function(_0x12bec2,_0xdfc5de){return _0x12bec2[_0x6641('0x6')]('UserVoiceQueue',attributes,{'tableName':_0x6641('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5258=['user_has_voice_queues','lodash','util','bluebird','request-promise','rimraf','define'];(function(_0x2301e1,_0x327e22){var _0xf2b92c=function(_0x30488d){while(--_0x30488d){_0x2301e1['push'](_0x2301e1['shift']());}};_0xf2b92c(++_0x327e22);}(_0x5258,0x1ba));var _0x8525=function(_0x2bd20f,_0x4d6277){_0x2bd20f=_0x2bd20f-0x0;var _0x613789=_0x5258[_0x2bd20f];return _0x613789;};'use strict';var _=require(_0x8525('0x0'));var util=require(_0x8525('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x8525('0x2'));var rp=require(_0x8525('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x8525('0x4'));var config=require('../../config/environment');var attributes=require('./userVoiceQueue.attributes');module['exports']=function(_0x1912f6,_0x1f23e0){return _0x1912f6[_0x8525('0x5')]('UserVoiceQueue',attributes,{'tableName':_0x8525('0x6'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3c22a7b..f3fc93a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9cd1=['stringify','error','code','message','UserVoiceQueue,\x20%s,\x20%s','catch','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','info','debug','UserVoiceQueue,\x20%s,\x20%s,\x20%s','request\x20sent'];(function(_0x1b01c6,_0x16cce2){var _0x30221b=function(_0x438a18){while(--_0x438a18){_0x1b01c6['push'](_0x1b01c6['shift']());}};_0x30221b(++_0x16cce2);}(_0x9cd1,0x132));var _0x19cd=function(_0x3a8ba0,_0x24ebe4){_0x3a8ba0=_0x3a8ba0-0x0;var _0x334f86=_0x9cd1[_0x3a8ba0];return _0x334f86;};'use strict';var _=require('lodash');var util=require(_0x19cd('0x0'));var moment=require('moment');var BPromise=require(_0x19cd('0x1'));var rs=require(_0x19cd('0x2'));var fs=require('fs');var Redis=require(_0x19cd('0x3'));var db=require(_0x19cd('0x4'))['db'];var utils=require(_0x19cd('0x5'));var logger=require(_0x19cd('0x6'))(_0x19cd('0x7'));var config=require(_0x19cd('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x19cd('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x31c17b,_0x2d4393,_0x25bde5){return new BPromise(function(_0x556189,_0x12736b){return client['request'](_0x31c17b,_0x25bde5)['then'](function(_0x382c1a){logger[_0x19cd('0xa')]('UserVoiceQueue,\x20%s,\x20%s',_0x2d4393,'request\x20sent');logger[_0x19cd('0xb')](_0x19cd('0xc'),_0x2d4393,_0x19cd('0xd'),JSON[_0x19cd('0xe')](_0x382c1a));if(_0x382c1a[_0x19cd('0xf')]){if(_0x382c1a[_0x19cd('0xf')][_0x19cd('0x10')]===0x1f4){logger[_0x19cd('0xf')]('UserVoiceQueue,\x20%s,\x20%s',_0x2d4393,_0x382c1a[_0x19cd('0xf')]['message']);return _0x12736b(_0x382c1a['error'][_0x19cd('0x11')]);}logger[_0x19cd('0xf')](_0x19cd('0x12'),_0x2d4393,_0x382c1a[_0x19cd('0xf')][_0x19cd('0x11')]);return _0x556189(_0x382c1a[_0x19cd('0xf')][_0x19cd('0x11')]);}else{logger[_0x19cd('0xa')](_0x19cd('0x12'),_0x2d4393,_0x19cd('0xd'));_0x556189(_0x382c1a['result'][_0x19cd('0x11')]);}})[_0x19cd('0x13')](function(_0x4464cb){logger['error'](_0x19cd('0x12'),_0x2d4393,_0x4464cb);_0x12736b(_0x4464cb);});});}
\ No newline at end of file
+var _0x2207=['ioredis','../../config/utils','rpc','../../config/environment','http','request','then','info','UserVoiceQueue,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','lodash','util','moment','randomstring'];(function(_0x434804,_0x415f68){var _0x573fc8=function(_0x3ce265){while(--_0x3ce265){_0x434804['push'](_0x434804['shift']());}};_0x573fc8(++_0x415f68);}(_0x2207,0x114));var _0x7220=function(_0x157c81,_0x2c0224){_0x157c81=_0x157c81-0x0;var _0x1bfb12=_0x2207[_0x157c81];return _0x1bfb12;};'use strict';var _=require(_0x7220('0x0'));var util=require(_0x7220('0x1'));var moment=require(_0x7220('0x2'));var BPromise=require('bluebird');var rs=require(_0x7220('0x3'));var fs=require('fs');var Redis=require(_0x7220('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x7220('0x5'));var logger=require('../../config/logger')(_0x7220('0x6'));var config=require(_0x7220('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0x7220('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3fef7d,_0x45dbdc,_0x1fc351){return new BPromise(function(_0x598d25,_0x5eb2b7){return client[_0x7220('0x9')](_0x3fef7d,_0x1fc351)[_0x7220('0xa')](function(_0x33a102){logger[_0x7220('0xb')](_0x7220('0xc'),_0x45dbdc,_0x7220('0xd'));logger[_0x7220('0xe')]('UserVoiceQueue,\x20%s,\x20%s,\x20%s',_0x45dbdc,'request\x20sent',JSON['stringify'](_0x33a102));if(_0x33a102[_0x7220('0xf')]){if(_0x33a102['error'][_0x7220('0x10')]===0x1f4){logger[_0x7220('0xf')](_0x7220('0xc'),_0x45dbdc,_0x33a102[_0x7220('0xf')][_0x7220('0x11')]);return _0x5eb2b7(_0x33a102[_0x7220('0xf')][_0x7220('0x11')]);}logger[_0x7220('0xf')]('UserVoiceQueue,\x20%s,\x20%s',_0x45dbdc,_0x33a102[_0x7220('0xf')][_0x7220('0x11')]);return _0x598d25(_0x33a102['error'][_0x7220('0x11')]);}else{logger['info']('UserVoiceQueue,\x20%s,\x20%s',_0x45dbdc,_0x7220('0xd'));_0x598d25(_0x33a102[_0x7220('0x12')][_0x7220('0x11')]);}})[_0x7220('0x13')](function(_0x2028c6){logger[_0x7220('0xf')](_0x7220('0xc'),_0x45dbdc,_0x2028c6);_0x5eb2b7(_0x2028c6);});});}
\ No newline at end of file
index b6dd4cc..bac60ed 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(_0x49a766,_0x1eb3ee){var _0x5dd565=function(_0x4e7087){while(--_0x4e7087){_0x49a766['push'](_0x49a766['shift']());}};_0x5dd565(++_0x1eb3ee);}(_0xcb91,0x1a9));var _0x1cb9=function(_0xa79977,_0x4f7f12){_0xa79977=_0xa79977-0x0;var _0x109f10=_0xcb91[_0xa79977];return _0x109f10;};'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(_0x272710,_0x50110d){var _0x6a343e=function(_0x58e025){while(--_0x58e025){_0x272710['push'](_0x272710['shift']());}};_0x6a343e(++_0x50110d);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x47e93d,_0x26bbdd){_0x47e93d=_0x47e93d-0x0;var _0xe86c46=_0xcb91[_0x47e93d];return _0xe86c46;};'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 1a3ebae..f8ba836 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x553f=['sequelize','exports','INTEGER','Required\x20by\x20Asterisk','STRING','queue_interface'];(function(_0xc0d9bc,_0x2bd6be){var _0x32ff73=function(_0x28c592){while(--_0x28c592){_0xc0d9bc['push'](_0xc0d9bc['shift']());}};_0x32ff73(++_0x2bd6be);}(_0x553f,0x1c2));var _0xf553=function(_0x405667,_0x24afc4){_0x405667=_0x405667-0x0;var _0x437b8c=_0x553f[_0x405667];return _0x437b8c;};'use strict';var Sequelize=require(_0xf553('0x0'));module[_0xf553('0x1')]={'uniqueid':{'type':Sequelize[_0xf553('0x2')],'primaryKey':!![],'autoIncrement':!![],'comment':_0xf553('0x3')},'membername':{'type':Sequelize[_0xf553('0x4')],'allowNull':![],'comment':_0xf553('0x3')},'UserId':{'type':Sequelize[_0xf553('0x2')],'allowNull':![]},'queue_name':{'type':Sequelize[_0xf553('0x4')],'allowNull':![],'unique':_0xf553('0x5'),'comment':_0xf553('0x3')},'VoiceQueueId':{'type':Sequelize[_0xf553('0x2')],'allowNull':![]},'interface':{'type':Sequelize[_0xf553('0x4')],'allowNull':![],'unique':_0xf553('0x5'),'comment':_0xf553('0x3')},'penalty':{'type':Sequelize[_0xf553('0x2')](0xb),'defaultValue':0x0,'comment':_0xf553('0x3')},'paused':{'type':Sequelize[_0xf553('0x2')](0xb),'defaultValue':0x0,'comment':_0xf553('0x3')}};
\ No newline at end of file
+var _0x8c9c=['STRING','sequelize','exports','INTEGER','Required\x20by\x20Asterisk'];(function(_0x9047d,_0x1177d1){var _0xf608bc=function(_0x49a532){while(--_0x49a532){_0x9047d['push'](_0x9047d['shift']());}};_0xf608bc(++_0x1177d1);}(_0x8c9c,0x182));var _0xc8c9=function(_0x53435a,_0x5bd1e6){_0x53435a=_0x53435a-0x0;var _0x2294f3=_0x8c9c[_0x53435a];return _0x2294f3;};'use strict';var Sequelize=require(_0xc8c9('0x0'));module[_0xc8c9('0x1')]={'uniqueid':{'type':Sequelize[_0xc8c9('0x2')],'primaryKey':!![],'autoIncrement':!![],'comment':_0xc8c9('0x3')},'membername':{'type':Sequelize['STRING'],'allowNull':![],'comment':_0xc8c9('0x3')},'UserId':{'type':Sequelize['INTEGER'],'allowNull':![]},'queue_name':{'type':Sequelize['STRING'],'allowNull':![],'unique':'queue_interface','comment':_0xc8c9('0x3')},'VoiceQueueId':{'type':Sequelize[_0xc8c9('0x2')],'allowNull':![]},'interface':{'type':Sequelize[_0xc8c9('0x4')],'allowNull':![],'unique':'queue_interface','comment':_0xc8c9('0x3')},'penalty':{'type':Sequelize[_0xc8c9('0x2')](0xb),'defaultValue':0x0,'comment':_0xc8c9('0x3')},'paused':{'type':Sequelize[_0xc8c9('0x2')](0xb),'defaultValue':0x0,'comment':_0xc8c9('0x3')}};
\ No newline at end of file
index 4ee8481..3cb1bc4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x82db=['remove','hook','events','../../mysqldb','UserVoiceQueueRt','setMaxListeners','save'];(function(_0x287ed0,_0x1bc2f5){var _0x58061a=function(_0x3dd875){while(--_0x3dd875){_0x287ed0['push'](_0x287ed0['shift']());}};_0x58061a(++_0x1bc2f5);}(_0x82db,0x1bb));var _0xb82d=function(_0x331062,_0x2e37c7){_0x331062=_0x331062-0x0;var _0x587038=_0x82db[_0x331062];return _0x587038;};'use strict';var EventEmitter=require(_0xb82d('0x0'));var UserVoiceQueueRt=require(_0xb82d('0x1'))['db'][_0xb82d('0x2')];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents[_0xb82d('0x3')](0x0);var events={'afterCreate':_0xb82d('0x4'),'afterUpdate':'update','afterDestroy':_0xb82d('0x5')};function emitEvent(_0x2af5ce){return function(_0x551041,_0x3d0cf5,_0x505e8a){UserVoiceQueueRtEvents['emit'](_0x2af5ce+':'+_0x551041['id'],_0x551041);UserVoiceQueueRtEvents['emit'](_0x2af5ce,_0x551041);_0x505e8a(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];UserVoiceQueueRt[_0xb82d('0x6')](e,emitEvent(event));}}module['exports']=UserVoiceQueueRtEvents;
\ No newline at end of file
+var _0x7e9f=['remove','emit','hasOwnProperty','hook','exports','../../mysqldb','setMaxListeners','save','update'];(function(_0x1412bc,_0x2ba6ca){var _0x256c90=function(_0x2faf01){while(--_0x2faf01){_0x1412bc['push'](_0x1412bc['shift']());}};_0x256c90(++_0x2ba6ca);}(_0x7e9f,0x1f4));var _0xf7e9=function(_0x147a1b,_0x3674f1){_0x147a1b=_0x147a1b-0x0;var _0x560bbc=_0x7e9f[_0x147a1b];return _0x560bbc;};'use strict';var EventEmitter=require('events');var UserVoiceQueueRt=require(_0xf7e9('0x0'))['db']['UserVoiceQueueRt'];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents[_0xf7e9('0x1')](0x0);var events={'afterCreate':_0xf7e9('0x2'),'afterUpdate':_0xf7e9('0x3'),'afterDestroy':_0xf7e9('0x4')};function emitEvent(_0x56486b){return function(_0x1c7999,_0x1d2331,_0x420224){UserVoiceQueueRtEvents['emit'](_0x56486b+':'+_0x1c7999['id'],_0x1c7999);UserVoiceQueueRtEvents[_0xf7e9('0x5')](_0x56486b,_0x1c7999);_0x420224(null);};}for(var e in events){if(events[_0xf7e9('0x6')](e)){var event=events[e];UserVoiceQueueRt[_0xf7e9('0x7')](e,emitEvent(event));}}module[_0xf7e9('0x8')]=UserVoiceQueueRtEvents;
\ No newline at end of file
index a3c7f01..6cc6266 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4eaa=['bluebird','request-promise','./userVoiceQueueRt.attributes','exports','define','UserVoiceQueueRt','user_has_voice_queues_rt','lodash','api','moment'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0x4eaa,0x93));var _0xa4ea=function(_0x252284,_0x24b471){_0x252284=_0x252284-0x0;var _0x4dea61=_0x4eaa[_0x252284];return _0x4dea61;};'use strict';var _=require(_0xa4ea('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xa4ea('0x1'));var moment=require(_0xa4ea('0x2'));var BPromise=require(_0xa4ea('0x3'));var rp=require(_0xa4ea('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xa4ea('0x5'));module[_0xa4ea('0x6')]=function(_0x51ca68,_0x1bb8a5){return _0x51ca68[_0xa4ea('0x7')](_0xa4ea('0x8'),attributes,{'tableName':_0xa4ea('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7be4=['bluebird','request-promise','path','../../config/environment','./userVoiceQueueRt.attributes','exports','define','UserVoiceQueueRt','user_has_voice_queues_rt','lodash','../../config/logger','api'];(function(_0x423933,_0x432a18){var _0x4b37a0=function(_0x394c5e){while(--_0x394c5e){_0x423933['push'](_0x423933['shift']());}};_0x4b37a0(++_0x432a18);}(_0x7be4,0x1dd));var _0x47be=function(_0x1458ac,_0x5d4ab8){_0x1458ac=_0x1458ac-0x0;var _0x11c1d7=_0x7be4[_0x1458ac];return _0x11c1d7;};'use strict';var _=require(_0x47be('0x0'));var util=require('util');var logger=require(_0x47be('0x1'))(_0x47be('0x2'));var moment=require('moment');var BPromise=require(_0x47be('0x3'));var rp=require(_0x47be('0x4'));var fs=require('fs');var path=require(_0x47be('0x5'));var rimraf=require('rimraf');var config=require(_0x47be('0x6'));var attributes=require(_0x47be('0x7'));module[_0x47be('0x8')]=function(_0x40b82d,_0x4717db){return _0x40b82d[_0x47be('0x9')](_0x47be('0xa'),attributes,{'tableName':_0x47be('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4934744..508ae34 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4adc=['code','message','result','catch','UserVoiceQueueRt','findAll','options','raw','where','sequelize','COUNT','literal','`paused`\x20=\x201,\x201,\x20null','outboundQueuePauses','GetVoiceQueueRtPauses','debug','lodash','bluebird','../../config/logger','rpc','jayson/promise','client','redis','localhost','request','then','info','UserVoiceQueueRt,\x20%s,\x20%s','UserVoiceQueueRt,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x430f44,_0x4ae21b){var _0x1f6b0f=function(_0x35968f){while(--_0x35968f){_0x430f44['push'](_0x430f44['shift']());}};_0x1f6b0f(++_0x4ae21b);}(_0x4adc,0x150));var _0xc4ad=function(_0x5f1391,_0x19c132){_0x5f1391=_0x5f1391-0x0;var _0x50ebe3=_0x4adc[_0x5f1391];return _0x50ebe3;};'use strict';var _=require(_0xc4ad('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xc4ad('0x1'));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(_0xc4ad('0x2'))(_0xc4ad('0x3'));var config=require('../../config/environment');var jayson=require(_0xc4ad('0x4'));var client=jayson[_0xc4ad('0x5')]['http']({'port':0x232a});config[_0xc4ad('0x6')]=_['defaults'](config[_0xc4ad('0x6')],{'host':_0xc4ad('0x7'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xc4ad('0x6')]));require('./userVoiceQueueRt.socket')['register'](socket);function respondWithRpcPromise(_0x243db9,_0x15664d,_0x67f301){return new BPromise(function(_0x39b59f,_0x3720aa){return client[_0xc4ad('0x8')](_0x243db9,_0x67f301)[_0xc4ad('0x9')](function(_0x1b9e33){logger[_0xc4ad('0xa')](_0xc4ad('0xb'),_0x15664d,'request\x20sent');logger['debug'](_0xc4ad('0xc'),_0x15664d,_0xc4ad('0xd'),JSON[_0xc4ad('0xe')](_0x1b9e33));if(_0x1b9e33[_0xc4ad('0xf')]){if(_0x1b9e33['error'][_0xc4ad('0x10')]===0x1f4){logger[_0xc4ad('0xf')]('UserVoiceQueueRt,\x20%s,\x20%s',_0x15664d,_0x1b9e33[_0xc4ad('0xf')][_0xc4ad('0x11')]);return _0x3720aa(_0x1b9e33[_0xc4ad('0xf')][_0xc4ad('0x11')]);}logger[_0xc4ad('0xf')](_0xc4ad('0xb'),_0x15664d,_0x1b9e33['error']['message']);return _0x39b59f(_0x1b9e33[_0xc4ad('0xf')][_0xc4ad('0x11')]);}else{logger['info'](_0xc4ad('0xb'),_0x15664d,'request\x20sent');_0x39b59f(_0x1b9e33[_0xc4ad('0x12')]['message']);}})[_0xc4ad('0x13')](function(_0x4fc14c){logger[_0xc4ad('0xf')](_0xc4ad('0xb'),_0x15664d,_0x4fc14c);_0x3720aa(_0x4fc14c);});});}exports['GetVoiceQueueRtPauses']=function(_0x4a848c){var _0x40f010=this;return new Promise(function(_0x16b6c8,_0x5335bf){return db[_0xc4ad('0x14')][_0xc4ad('0x15')]({'raw':_0x4a848c[_0xc4ad('0x16')]?_0x4a848c[_0xc4ad('0x16')][_0xc4ad('0x17')]===undefined?!![]:![]:!![],'where':_0x4a848c[_0xc4ad('0x16')]?_0x4a848c[_0xc4ad('0x16')][_0xc4ad('0x18')]||null:null,'attributes':[[db[_0xc4ad('0x19')]['fn'](_0xc4ad('0x1a'),db[_0xc4ad('0x19')]['fn']('IF',db[_0xc4ad('0x19')][_0xc4ad('0x1b')](_0xc4ad('0x1c')))),_0xc4ad('0x1d')]]})['then'](function(_0x38bdc1){logger[_0xc4ad('0xa')](_0xc4ad('0x1e'),_0x4a848c);logger[_0xc4ad('0x1f')](_0xc4ad('0x1e'),_0x4a848c,JSON['stringify'](_0x38bdc1));_0x16b6c8(_0x38bdc1);})[_0xc4ad('0x13')](function(_0x2ed0d8){logger[_0xc4ad('0xf')](_0xc4ad('0x1e'),_0x2ed0d8['message'],_0x4a848c);_0x5335bf(_0x40f010[_0xc4ad('0xf')](0x1f4,_0x2ed0d8[_0xc4ad('0x11')]));});});};
\ No newline at end of file
+var _0x0b82=['./userVoiceQueueRt.socket','register','then','UserVoiceQueueRt,\x20%s,\x20%s','request\x20sent','UserVoiceQueueRt,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch','GetVoiceQueueRtPauses','UserVoiceQueueRt','options','raw','sequelize','COUNT','`paused`\x20=\x201,\x201,\x20null','outboundQueuePauses','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','socket.io-emitter'];(function(_0x25570d,_0x59a041){var _0x429d4a=function(_0x121398){while(--_0x121398){_0x25570d['push'](_0x25570d['shift']());}};_0x429d4a(++_0x59a041);}(_0x0b82,0xec));var _0x20b8=function(_0xb2d6a1,_0x194aac){_0xb2d6a1=_0xb2d6a1-0x0;var _0x2aec4b=_0x0b82[_0xb2d6a1];return _0x2aec4b;};'use strict';var _=require('lodash');var util=require(_0x20b8('0x0'));var moment=require(_0x20b8('0x1'));var BPromise=require(_0x20b8('0x2'));var rs=require(_0x20b8('0x3'));var fs=require('fs');var Redis=require(_0x20b8('0x4'));var db=require(_0x20b8('0x5'))['db'];var utils=require(_0x20b8('0x6'));var logger=require(_0x20b8('0x7'))(_0x20b8('0x8'));var config=require(_0x20b8('0x9'));var jayson=require(_0x20b8('0xa'));var client=jayson[_0x20b8('0xb')][_0x20b8('0xc')]({'port':0x232a});config['redis']=_[_0x20b8('0xd')](config[_0x20b8('0xe')],{'host':'localhost','port':0x18eb});var socket=require(_0x20b8('0xf'))(new Redis(config[_0x20b8('0xe')]));require(_0x20b8('0x10'))[_0x20b8('0x11')](socket);function respondWithRpcPromise(_0x1feb8c,_0x31c2f3,_0x5a5d3f){return new BPromise(function(_0x15b38f,_0x4da4eb){return client['request'](_0x1feb8c,_0x5a5d3f)[_0x20b8('0x12')](function(_0x14d3f1){logger['info'](_0x20b8('0x13'),_0x31c2f3,_0x20b8('0x14'));logger['debug'](_0x20b8('0x15'),_0x31c2f3,_0x20b8('0x14'),JSON[_0x20b8('0x16')](_0x14d3f1));if(_0x14d3f1['error']){if(_0x14d3f1[_0x20b8('0x17')][_0x20b8('0x18')]===0x1f4){logger[_0x20b8('0x17')]('UserVoiceQueueRt,\x20%s,\x20%s',_0x31c2f3,_0x14d3f1[_0x20b8('0x17')]['message']);return _0x4da4eb(_0x14d3f1['error']['message']);}logger[_0x20b8('0x17')](_0x20b8('0x13'),_0x31c2f3,_0x14d3f1['error']['message']);return _0x15b38f(_0x14d3f1[_0x20b8('0x17')][_0x20b8('0x19')]);}else{logger[_0x20b8('0x1a')](_0x20b8('0x13'),_0x31c2f3,_0x20b8('0x14'));_0x15b38f(_0x14d3f1['result'][_0x20b8('0x19')]);}})[_0x20b8('0x1b')](function(_0x424139){logger[_0x20b8('0x17')](_0x20b8('0x13'),_0x31c2f3,_0x424139);_0x4da4eb(_0x424139);});});}exports[_0x20b8('0x1c')]=function(_0x406f47){var _0x4c44d3=this;return new Promise(function(_0x272576,_0x244903){return db[_0x20b8('0x1d')]['findAll']({'raw':_0x406f47[_0x20b8('0x1e')]?_0x406f47[_0x20b8('0x1e')][_0x20b8('0x1f')]===undefined?!![]:![]:!![],'where':_0x406f47['options']?_0x406f47[_0x20b8('0x1e')]['where']||null:null,'attributes':[[db[_0x20b8('0x20')]['fn'](_0x20b8('0x21'),db['sequelize']['fn']('IF',db['sequelize']['literal'](_0x20b8('0x22')))),_0x20b8('0x23')]]})['then'](function(_0x549385){logger[_0x20b8('0x1a')]('GetVoiceQueueRtPauses',_0x406f47);logger['debug']('GetVoiceQueueRtPauses',_0x406f47,JSON[_0x20b8('0x16')](_0x549385));_0x272576(_0x549385);})['catch'](function(_0x35b4df){logger[_0x20b8('0x17')](_0x20b8('0x1c'),_0x35b4df[_0x20b8('0x19')],_0x406f47);_0x244903(_0x4c44d3[_0x20b8('0x17')](0x1f4,_0x35b4df[_0x20b8('0x19')]));});});};
\ No newline at end of file
index a049326..f92c52a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x038b=['removeListener','register','length','save','remove','update','emit'];(function(_0x383356,_0x33d2f5){var _0x32ee5a=function(_0x2741db){while(--_0x2741db){_0x383356['push'](_0x383356['shift']());}};_0x32ee5a(++_0x33d2f5);}(_0x038b,0x114));var _0xb038=function(_0x4204bf,_0x10ab69){_0x4204bf=_0x4204bf-0x0;var _0x350077=_0x038b[_0x4204bf];return _0x350077;};'use strict';var UserVoiceQueueRtEvents=require('./userVoiceQueueRt.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(){UserVoiceQueueRtEvents[_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('userVoiceQueueRt:'+_0x1534a9,_0x4fe092);UserVoiceQueueRtEvents['on'](_0x1534a9,_0x4b4085);}};
\ No newline at end of file
+var _0xb7a7=['remove','update','emit','register','length','userVoiceQueueRt:','./userVoiceQueueRt.events','save'];(function(_0x4dab14,_0x164ea0){var _0xf41aa=function(_0x305d50){while(--_0x305d50){_0x4dab14['push'](_0x4dab14['shift']());}};_0xf41aa(++_0x164ea0);}(_0xb7a7,0x6e));var _0x7b7a=function(_0x215d04,_0x5efb80){_0x215d04=_0x215d04-0x0;var _0x33f00c=_0xb7a7[_0x215d04];return _0x33f00c;};'use strict';var UserVoiceQueueRtEvents=require(_0x7b7a('0x0'));var events=[_0x7b7a('0x1'),_0x7b7a('0x2'),_0x7b7a('0x3')];function createListener(_0xdc2ef1,_0x517dd4){return function(_0x51de97){_0x517dd4[_0x7b7a('0x4')](_0xdc2ef1,_0x51de97);};}function removeListener(_0x290959,_0x42d678){return function(){UserVoiceQueueRtEvents['removeListener'](_0x290959,_0x42d678);};}exports[_0x7b7a('0x5')]=function(_0x6e7b3c){for(var _0x3739f9=0x0,_0xf003bc=events[_0x7b7a('0x6')];_0x3739f9<_0xf003bc;_0x3739f9++){var _0x1ef0f3=events[_0x3739f9];var _0x27e956=createListener(_0x7b7a('0x7')+_0x1ef0f3,_0x6e7b3c);UserVoiceQueueRtEvents['on'](_0x1ef0f3,_0x27e956);}};
\ No newline at end of file
index db1949e..73d8cbc 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(_0x5eca9f,_0x1d15d3){var _0x53a05c=function(_0x10bacd){while(--_0x10bacd){_0x5eca9f['push'](_0x5eca9f['shift']());}};_0x53a05c(++_0x1d15d3);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2a6809,_0x44edde){_0x2a6809=_0x2a6809-0x0;var _0x11c371=_0xa9e0[_0x2a6809];return _0x11c371;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));module[_0x0a9e('0x7')]=router;
\ No newline at end of file
+var _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0x17f773,_0x3e3f55){var _0x16576d=function(_0x220150){while(--_0x220150){_0x17f773['push'](_0x17f773['shift']());}};_0x16576d(++_0x3e3f55);}(_0x9c44,0x178));var _0x49c4=function(_0x3ff085,_0x27c92e){_0x3ff085=_0x3ff085-0x0;var _0x2b68c3=_0x9c44[_0x3ff085];return _0x2b68c3;};'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 b00c93b..f7a3c2c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x50a5=['exports','INTEGER','sequelize'];(function(_0x19a67e,_0x25b25e){var _0x221ee7=function(_0x36da39){while(--_0x36da39){_0x19a67e['push'](_0x19a67e['shift']());}};_0x221ee7(++_0x25b25e);}(_0x50a5,0x1e8));var _0x550a=function(_0x4685fa,_0x54abce){_0x4685fa=_0x4685fa-0x0;var _0x431e25=_0x50a5[_0x4685fa];return _0x431e25;};'use strict';var Sequelize=require(_0x550a('0x0'));module[_0x550a('0x1')]={'penalty':{'type':Sequelize[_0x550a('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xb6c8=['sequelize','INTEGER'];(function(_0xc36d01,_0x3bf1a6){var _0xecb231=function(_0x2fb301){while(--_0x2fb301){_0xc36d01['push'](_0xc36d01['shift']());}};_0xecb231(++_0x3bf1a6);}(_0xb6c8,0x180));var _0x8b6c=function(_0x1e8da4,_0x438572){_0x1e8da4=_0x1e8da4-0x0;var _0x1da39a=_0xb6c8[_0x1e8da4];return _0x1da39a;};'use strict';var Sequelize=require(_0x8b6c('0x0'));module['exports']={'penalty':{'type':Sequelize[_0x8b6c('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index 449dfe7..cdc1ac6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc2db=['rimraf','../../config/environment','exports','define','UserWhatsappQueue','user_has_whatsapp_queues','lodash','util','api','bluebird'];(function(_0x36eaaa,_0x326732){var _0x461349=function(_0x4e4180){while(--_0x4e4180){_0x36eaaa['push'](_0x36eaaa['shift']());}};_0x461349(++_0x326732);}(_0xc2db,0x9c));var _0xbc2d=function(_0x126558,_0x143c9a){_0x126558=_0x126558-0x0;var _0x1f6d14=_0xc2db[_0x126558];return _0x1f6d14;};'use strict';var _=require(_0xbc2d('0x0'));var util=require(_0xbc2d('0x1'));var logger=require('../../config/logger')(_0xbc2d('0x2'));var moment=require('moment');var BPromise=require(_0xbc2d('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xbc2d('0x4'));var config=require(_0xbc2d('0x5'));var attributes=require('./userWhatsappQueue.attributes');module[_0xbc2d('0x6')]=function(_0x128a57,_0x5db098){return _0x128a57[_0xbc2d('0x7')](_0xbc2d('0x8'),attributes,{'tableName':_0xbc2d('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf19f=['path','rimraf','../../config/environment','./userWhatsappQueue.attributes','exports','define','user_has_whatsapp_queues','lodash','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x414816,_0x2cab97){var _0x5d6fa8=function(_0x349514){while(--_0x349514){_0x414816['push'](_0x414816['shift']());}};_0x5d6fa8(++_0x2cab97);}(_0xf19f,0x19a));var _0xff19=function(_0x1f3aec,_0x24c18e){_0x1f3aec=_0x1f3aec-0x0;var _0x409f0d=_0xf19f[_0x1f3aec];return _0x409f0d;};'use strict';var _=require(_0xff19('0x0'));var util=require('util');var logger=require(_0xff19('0x1'))(_0xff19('0x2'));var moment=require(_0xff19('0x3'));var BPromise=require(_0xff19('0x4'));var rp=require(_0xff19('0x5'));var fs=require('fs');var path=require(_0xff19('0x6'));var rimraf=require(_0xff19('0x7'));var config=require(_0xff19('0x8'));var attributes=require(_0xff19('0x9'));module[_0xff19('0xa')]=function(_0x1cca13,_0x1d3b1c){return _0x1cca13[_0xff19('0xb')]('UserWhatsappQueue',attributes,{'tableName':_0xff19('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d07d213..c3cf9a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x77a0=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','UserWhatsappQueue,\x20%s,\x20%s','request\x20sent','debug','UserWhatsappQueue,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment','bluebird'];(function(_0x3fe47a,_0x5610b9){var _0x39d23b=function(_0x3c9200){while(--_0x3c9200){_0x3fe47a['push'](_0x3fe47a['shift']());}};_0x39d23b(++_0x5610b9);}(_0x77a0,0x1f0));var _0x077a=function(_0x104662,_0x53a7a7){_0x104662=_0x104662-0x0;var _0x19cba7=_0x77a0[_0x104662];return _0x19cba7;};'use strict';var _=require(_0x077a('0x0'));var util=require(_0x077a('0x1'));var moment=require(_0x077a('0x2'));var BPromise=require(_0x077a('0x3'));var rs=require(_0x077a('0x4'));var fs=require('fs');var Redis=require(_0x077a('0x5'));var db=require(_0x077a('0x6'))['db'];var utils=require(_0x077a('0x7'));var logger=require(_0x077a('0x8'))('rpc');var config=require(_0x077a('0x9'));var jayson=require(_0x077a('0xa'));var client=jayson[_0x077a('0xb')][_0x077a('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x1f9888,_0x5f2451,_0x269a1f){return new BPromise(function(_0x939ba3,_0x4795d1){return client[_0x077a('0xd')](_0x1f9888,_0x269a1f)[_0x077a('0xe')](function(_0x37ab12){logger[_0x077a('0xf')](_0x077a('0x10'),_0x5f2451,_0x077a('0x11'));logger[_0x077a('0x12')](_0x077a('0x13'),_0x5f2451,'request\x20sent',JSON['stringify'](_0x37ab12));if(_0x37ab12[_0x077a('0x14')]){if(_0x37ab12[_0x077a('0x14')][_0x077a('0x15')]===0x1f4){logger[_0x077a('0x14')](_0x077a('0x10'),_0x5f2451,_0x37ab12[_0x077a('0x14')]['message']);return _0x4795d1(_0x37ab12[_0x077a('0x14')][_0x077a('0x16')]);}logger['error'](_0x077a('0x10'),_0x5f2451,_0x37ab12['error'][_0x077a('0x16')]);return _0x939ba3(_0x37ab12['error'][_0x077a('0x16')]);}else{logger[_0x077a('0xf')](_0x077a('0x10'),_0x5f2451,_0x077a('0x11'));_0x939ba3(_0x37ab12[_0x077a('0x17')]['message']);}})[_0x077a('0x18')](function(_0x5028ef){logger['error'](_0x077a('0x10'),_0x5f2451,_0x5028ef);_0x4795d1(_0x5028ef);});});}
\ No newline at end of file
+var _0xd54e=['rpc','../../config/environment','jayson/promise','http','request','UserWhatsappQueue,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger'];(function(_0x45d55e,_0x2fede3){var _0x29812a=function(_0x3c6830){while(--_0x3c6830){_0x45d55e['push'](_0x45d55e['shift']());}};_0x29812a(++_0x2fede3);}(_0xd54e,0x15d));var _0xed54=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xd54e[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0xed54('0x0'));var util=require(_0xed54('0x1'));var moment=require(_0xed54('0x2'));var BPromise=require(_0xed54('0x3'));var rs=require(_0xed54('0x4'));var fs=require('fs');var Redis=require(_0xed54('0x5'));var db=require(_0xed54('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xed54('0x7'))(_0xed54('0x8'));var config=require(_0xed54('0x9'));var jayson=require(_0xed54('0xa'));var client=jayson['client'][_0xed54('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xcfa16c,_0xf099eb,_0x142c0d){return new BPromise(function(_0x57b521,_0x125c53){return client[_0xed54('0xc')](_0xcfa16c,_0x142c0d)['then'](function(_0xb8aa79){logger['info'](_0xed54('0xd'),_0xf099eb,_0xed54('0xe'));logger['debug']('UserWhatsappQueue,\x20%s,\x20%s,\x20%s',_0xf099eb,'request\x20sent',JSON[_0xed54('0xf')](_0xb8aa79));if(_0xb8aa79['error']){if(_0xb8aa79[_0xed54('0x10')][_0xed54('0x11')]===0x1f4){logger['error'](_0xed54('0xd'),_0xf099eb,_0xb8aa79['error'][_0xed54('0x12')]);return _0x125c53(_0xb8aa79[_0xed54('0x10')][_0xed54('0x12')]);}logger[_0xed54('0x10')]('UserWhatsappQueue,\x20%s,\x20%s',_0xf099eb,_0xb8aa79[_0xed54('0x10')][_0xed54('0x12')]);return _0x57b521(_0xb8aa79[_0xed54('0x10')][_0xed54('0x12')]);}else{logger[_0xed54('0x13')](_0xed54('0xd'),_0xf099eb,_0xed54('0xe'));_0x57b521(_0xb8aa79['result'][_0xed54('0x12')]);}})[_0xed54('0x14')](function(_0x50b653){logger[_0xed54('0x10')](_0xed54('0xd'),_0xf099eb,_0x50b653);_0x125c53(_0x50b653);});});}
\ No newline at end of file
index 63bfe1a..83d7e11 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x22fb=['./variable.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x677920,_0x1e3e6a){var _0x1c593b=function(_0x22e305){while(--_0x22e305){_0x677920['push'](_0x677920['shift']());}};_0x1c593b(++_0x1e3e6a);}(_0x22fb,0x192));var _0xb22f=function(_0x15aa87,_0x2c1a14){_0x15aa87=_0x15aa87-0x0;var _0x54c49f=_0x22fb[_0x15aa87];return _0x54c49f;};'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('0xc')]('/',auth[_0xb22f('0x8')](),controller[_0xb22f('0xd')]);router[_0xb22f('0xe')](_0xb22f('0xa'),auth[_0xb22f('0x8')](),controller[_0xb22f('0xf')]);router[_0xb22f('0x10')](_0xb22f('0xa'),auth[_0xb22f('0x8')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x2029=['isAuthenticated','index','show','create','/:id','update','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./variable.controller','get'];(function(_0x42df4d,_0x15e8cd){var _0x473f1f=function(_0x3dbc3a){while(--_0x3dbc3a){_0x42df4d['push'](_0x42df4d['shift']());}};_0x473f1f(++_0x15e8cd);}(_0x2029,0x171));var _0x9202=function(_0x10f78f,_0x95cf1d){_0x10f78f=_0x10f78f-0x0;var _0x2ea242=_0x2029[_0x10f78f];return _0x2ea242;};'use strict';var multer=require(_0x9202('0x0'));var util=require(_0x9202('0x1'));var path=require('path');var timeout=require(_0x9202('0x2'));var express=require(_0x9202('0x3'));var router=express[_0x9202('0x4')]();var fs_extra=require(_0x9202('0x5'));var auth=require(_0x9202('0x6'));var interaction=require(_0x9202('0x7'));var config=require(_0x9202('0x8'));var controller=require(_0x9202('0x9'));router[_0x9202('0xa')]('/',auth[_0x9202('0xb')](),controller[_0x9202('0xc')]);router[_0x9202('0xa')]('/:id',auth['isAuthenticated'](),controller[_0x9202('0xd')]);router['post']('/',auth[_0x9202('0xb')](),controller[_0x9202('0xe')]);router['put'](_0x9202('0xf'),auth[_0x9202('0xb')](),controller[_0x9202('0x10')]);router[_0x9202('0x11')](_0x9202('0xf'),auth[_0x9202('0xb')](),controller[_0x9202('0x12')]);module[_0x9202('0x13')]=router;
\ No newline at end of file
index f9303fc..56942a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd04=['exports','STRING','name'];(function(_0x168c70,_0x27868a){var _0x44d8a7=function(_0x408b46){while(--_0x408b46){_0x168c70['push'](_0x168c70['shift']());}};_0x44d8a7(++_0x27868a);}(_0xdd04,0xde));var _0x4dd0=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xdd04[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require('sequelize');module[_0x4dd0('0x0')]={'name':{'type':Sequelize[_0x4dd0('0x1')],'unique':_0x4dd0('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x4dd0('0x1')]}};
\ No newline at end of file
+var _0xed20=['sequelize','name','STRING'];(function(_0x14d0c3,_0x23182e){var _0xa5804b=function(_0x56e130){while(--_0x56e130){_0x14d0c3['push'](_0x14d0c3['shift']());}};_0xa5804b(++_0x23182e);}(_0xed20,0x1b9));var _0x0ed2=function(_0x2ff514,_0xd07cf4){_0x2ff514=_0x2ff514-0x0;var _0xfe681f=_0xed20[_0x2ff514];return _0xfe681f;};'use strict';var Sequelize=require(_0x0ed2('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0x0ed2('0x1'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x0ed2('0x2')]}};
\ No newline at end of file
index 2e6225c..62b3e74 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb86d=['length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','rows','catch','show','params','rawAttributes','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','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/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','then','get','Variables','destroy','error','stack','name','send','index','map','Variable','fieldName','type','query','keys','filters','intersection','model','attributes','fields'];(function(_0x46698a,_0x8de1e4){var _0x356db0=function(_0x19e83c){while(--_0x19e83c){_0x46698a['push'](_0x46698a['shift']());}};_0x356db0(++_0x8de1e4);}(_0xb86d,0x74));var _0xdb86=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0xb86d[_0x21a9d9];return _0x46adce;};'use strict';var emlformat=require(_0xdb86('0x0'));var rimraf=require(_0xdb86('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xdb86('0x2'));var rp=require(_0xdb86('0x3'));var moment=require('moment');var BPromise=require(_0xdb86('0x4'));var Mustache=require(_0xdb86('0x5'));var util=require(_0xdb86('0x6'));var path=require('path');var sox=require(_0xdb86('0x7'));var csv=require(_0xdb86('0x8'));var ejs=require(_0xdb86('0x9'));var fs=require('fs');var fs_extra=require(_0xdb86('0xa'));var _=require(_0xdb86('0xb'));var squel=require(_0xdb86('0xc'));var crypto=require('crypto');var jsforce=require(_0xdb86('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xdb86('0xe'));var Papa=require(_0xdb86('0xf'));var Redis=require(_0xdb86('0x10'));var authService=require(_0xdb86('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xdb86('0x12'));var hardwareService=require(_0xdb86('0x13'));var logger=require(_0xdb86('0x14'))(_0xdb86('0x15'));var utils=require(_0xdb86('0x16'));var config=require(_0xdb86('0x17'));var licenseUtil=require(_0xdb86('0x18'));var db=require(_0xdb86('0x19'))['db'];function respondWithStatusCode(_0x27dafb,_0x18be88){_0x18be88=_0x18be88||0xcc;return function(_0x53e19e){if(_0x53e19e){return _0x27dafb[_0xdb86('0x1a')](_0x18be88);}return _0x27dafb[_0xdb86('0x1b')](_0x18be88)[_0xdb86('0x1c')]();};}function respondWithResult(_0x470cb9,_0x2159b1){_0x2159b1=_0x2159b1||0xc8;return function(_0x37123b){if(_0x37123b){return _0x470cb9[_0xdb86('0x1b')](_0x2159b1)['json'](_0x37123b);}};}function respondWithFilteredResult(_0x55c90d,_0x132b4f){return function(_0x364792){if(_0x364792){var _0x21ee25=typeof _0x132b4f[_0xdb86('0x1d')]===_0xdb86('0x1e')&&typeof _0x132b4f[_0xdb86('0x1f')]===_0xdb86('0x1e');var _0x330e7b=_0x364792['count'];var _0x2c07f1=_0x21ee25?0x0:_0x132b4f[_0xdb86('0x1d')];var _0x4a6fd4=_0x21ee25?_0x364792[_0xdb86('0x20')]:_0x132b4f[_0xdb86('0x1d')]+_0x132b4f[_0xdb86('0x1f')];var _0x288a17;if(_0x4a6fd4>=_0x330e7b){_0x4a6fd4=_0x330e7b;_0x288a17=0xc8;}else{_0x288a17=0xce;}_0x55c90d[_0xdb86('0x1b')](_0x288a17);return _0x55c90d[_0xdb86('0x21')](_0xdb86('0x22'),_0x2c07f1+'-'+_0x4a6fd4+'/'+_0x330e7b)[_0xdb86('0x23')](_0x364792);}return null;};}function patchUpdates(_0x7bfdd2){return function(_0x29ee54){try{jsonpatch[_0xdb86('0x24')](_0x29ee54,_0x7bfdd2,!![]);}catch(_0x51f244){return BPromise[_0xdb86('0x25')](_0x51f244);}return _0x29ee54['save']();};}function saveUpdates(_0x47ceda,_0x1a7875){return function(_0x282fc5){if(_0x282fc5){return _0x282fc5['update'](_0x47ceda)[_0xdb86('0x26')](function(_0x52e4bd){return _0x52e4bd;});}return null;};}function removeEntity(_0x17eeeb,_0x38144d){return function(_0x30a532){if(_0x30a532){return _0x30a532['destroy']()[_0xdb86('0x26')](function(){var _0x3092ee=_0x30a532[_0xdb86('0x27')]({'plain':!![]});var _0x894736=_0xdb86('0x28');return db['UserProfileResource'][_0xdb86('0x29')]({'where':{'type':_0x894736,'resourceId':_0x3092ee['id']}})[_0xdb86('0x26')](function(){return _0x30a532;});})['then'](function(){_0x17eeeb[_0xdb86('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3a05b7,_0x2b237e){return function(_0x32e910){if(!_0x32e910){_0x3a05b7[_0xdb86('0x1a')](0x194);}return _0x32e910;};}function handleError(_0x16c749,_0xfa4999){_0xfa4999=_0xfa4999||0x1f4;return function(_0x5f59c1){logger[_0xdb86('0x2a')](_0x5f59c1[_0xdb86('0x2b')]);if(_0x5f59c1[_0xdb86('0x2c')]){delete _0x5f59c1[_0xdb86('0x2c')];}_0x16c749[_0xdb86('0x1b')](_0xfa4999)[_0xdb86('0x2d')](_0x5f59c1);};}exports[_0xdb86('0x2e')]=function(_0x3b99b2,_0x3db36a){var _0x32f4de={},_0x27cfba={},_0x447c23={'count':0x0,'rows':[]};var _0x42158d=_[_0xdb86('0x2f')](db[_0xdb86('0x30')]['rawAttributes'],function(_0x591a74){return{'name':_0x591a74[_0xdb86('0x31')],'type':_0x591a74[_0xdb86('0x32')]['key']};});_0x27cfba['model']=_[_0xdb86('0x2f')](_0x42158d,_0xdb86('0x2c'));_0x27cfba[_0xdb86('0x33')]=_[_0xdb86('0x34')](_0x3b99b2[_0xdb86('0x33')]);_0x27cfba[_0xdb86('0x35')]=_[_0xdb86('0x36')](_0x27cfba[_0xdb86('0x37')],_0x27cfba['query']);_0x32f4de[_0xdb86('0x38')]=_['intersection'](_0x27cfba['model'],qs[_0xdb86('0x39')](_0x3b99b2[_0xdb86('0x33')][_0xdb86('0x39')]));_0x32f4de[_0xdb86('0x38')]=_0x32f4de[_0xdb86('0x38')][_0xdb86('0x3a')]?_0x32f4de[_0xdb86('0x38')]:_0x27cfba[_0xdb86('0x37')];if(!_0x3b99b2[_0xdb86('0x33')][_0xdb86('0x3b')](_0xdb86('0x3c'))){_0x32f4de[_0xdb86('0x1f')]=qs[_0xdb86('0x1f')](_0x3b99b2[_0xdb86('0x33')][_0xdb86('0x1f')]);_0x32f4de[_0xdb86('0x1d')]=qs[_0xdb86('0x1d')](_0x3b99b2[_0xdb86('0x33')][_0xdb86('0x1d')]);}_0x32f4de[_0xdb86('0x3d')]=qs[_0xdb86('0x3e')](_0x3b99b2[_0xdb86('0x33')][_0xdb86('0x3e')]);_0x32f4de[_0xdb86('0x3f')]=qs['filters'](_[_0xdb86('0x40')](_0x3b99b2['query'],_0x27cfba[_0xdb86('0x35')]),_0x42158d);if(_0x3b99b2[_0xdb86('0x33')][_0xdb86('0x41')]){_0x32f4de[_0xdb86('0x3f')]=_[_0xdb86('0x42')](_0x32f4de['where'],{'$or':_['map'](_0x42158d,function(_0x647c){if(_0x647c[_0xdb86('0x32')]!==_0xdb86('0x43')){var _0x18d46b={};_0x18d46b[_0x647c[_0xdb86('0x2c')]]={'$like':'%'+_0x3b99b2[_0xdb86('0x33')][_0xdb86('0x41')]+'%'};return _0x18d46b;}})});}_0x32f4de=_[_0xdb86('0x42')]({},_0x32f4de,_0x3b99b2['options']);var _0x1e0914={'where':_0x32f4de['where']};return db[_0xdb86('0x30')][_0xdb86('0x20')](_0x1e0914)[_0xdb86('0x26')](function(_0x265ad4){_0x447c23[_0xdb86('0x20')]=_0x265ad4;if(_0x3b99b2[_0xdb86('0x33')][_0xdb86('0x44')]){_0x32f4de[_0xdb86('0x45')]=[{'all':!![]}];}return db['Variable']['findAll'](_0x32f4de);})[_0xdb86('0x26')](function(_0x551f3c){_0x447c23[_0xdb86('0x46')]=_0x551f3c;return _0x447c23;})[_0xdb86('0x26')](respondWithFilteredResult(_0x3db36a,_0x32f4de))[_0xdb86('0x47')](handleError(_0x3db36a,null));};exports[_0xdb86('0x48')]=function(_0x1a6f2d,_0x18f394){var _0x28c972={'raw':!![],'where':{'id':_0x1a6f2d[_0xdb86('0x49')]['id']}},_0x11b26b={};_0x11b26b[_0xdb86('0x37')]=_['keys'](db[_0xdb86('0x30')][_0xdb86('0x4a')]);_0x11b26b[_0xdb86('0x33')]=_['keys'](_0x1a6f2d[_0xdb86('0x33')]);_0x11b26b[_0xdb86('0x35')]=_[_0xdb86('0x36')](_0x11b26b[_0xdb86('0x37')],_0x11b26b[_0xdb86('0x33')]);_0x28c972['attributes']=_[_0xdb86('0x36')](_0x11b26b['model'],qs[_0xdb86('0x39')](_0x1a6f2d[_0xdb86('0x33')][_0xdb86('0x39')]));_0x28c972[_0xdb86('0x38')]=_0x28c972['attributes'][_0xdb86('0x3a')]?_0x28c972['attributes']:_0x11b26b[_0xdb86('0x37')];if(_0x1a6f2d[_0xdb86('0x33')][_0xdb86('0x44')]){_0x28c972[_0xdb86('0x45')]=[{'all':!![]}];}_0x28c972=_[_0xdb86('0x42')]({},_0x28c972,_0x1a6f2d[_0xdb86('0x4b')]);return db[_0xdb86('0x30')][_0xdb86('0x4c')](_0x28c972)[_0xdb86('0x26')](handleEntityNotFound(_0x18f394,null))[_0xdb86('0x26')](respondWithResult(_0x18f394,null))[_0xdb86('0x47')](handleError(_0x18f394,null));};exports[_0xdb86('0x4d')]=function(_0x557824,_0xf846ca){return db[_0xdb86('0x30')][_0xdb86('0x4d')](_0x557824[_0xdb86('0x4e')],{})[_0xdb86('0x26')](function(_0x58e0c1){var _0x5133f0=_0x557824[_0xdb86('0x4f')][_0xdb86('0x27')]({'plain':!![]});if(!_0x5133f0)throw new Error(_0xdb86('0x50'));if(_0x5133f0[_0xdb86('0x51')]===_0xdb86('0x4f')){var _0x184c0a=_0x58e0c1[_0xdb86('0x27')]({'plain':!![]});var _0x21f646=_0xdb86('0x28');return db[_0xdb86('0x52')][_0xdb86('0x4c')]({'where':{'name':_0x21f646,'userProfileId':_0x5133f0[_0xdb86('0x53')]},'raw':!![]})[_0xdb86('0x26')](function(_0x4c8f2b){if(_0x4c8f2b&&_0x4c8f2b[_0xdb86('0x54')]===0x0){return db[_0xdb86('0x55')]['create']({'name':_0x184c0a[_0xdb86('0x2c')],'resourceId':_0x184c0a['id'],'type':_0x4c8f2b[_0xdb86('0x2c')],'sectionId':_0x4c8f2b['id']},{})['then'](function(){return _0x58e0c1;});}else{return _0x58e0c1;}})['catch'](function(_0x19a6cc){logger[_0xdb86('0x2a')](_0xdb86('0x56'),_0x19a6cc);throw _0x19a6cc;});}return _0x58e0c1;})[_0xdb86('0x26')](respondWithResult(_0xf846ca,0xc9))[_0xdb86('0x47')](handleError(_0xf846ca,null));};exports['update']=function(_0x8929c6,_0x58313e){if(_0x8929c6[_0xdb86('0x4e')]['id']){delete _0x8929c6[_0xdb86('0x4e')]['id'];}return db[_0xdb86('0x30')]['find']({'where':{'id':_0x8929c6['params']['id']}})[_0xdb86('0x26')](handleEntityNotFound(_0x58313e,null))[_0xdb86('0x26')](saveUpdates(_0x8929c6[_0xdb86('0x4e')],null))[_0xdb86('0x26')](respondWithResult(_0x58313e,null))['catch'](handleError(_0x58313e,null));};exports[_0xdb86('0x29')]=function(_0x382f1a,_0x3de47c){return db[_0xdb86('0x30')]['find']({'where':{'id':_0x382f1a[_0xdb86('0x49')]['id']}})[_0xdb86('0x26')](handleEntityNotFound(_0x3de47c,null))[_0xdb86('0x26')](removeEntity(_0x3de47c,null))[_0xdb86('0x47')](handleError(_0x3de47c,null));};
\ No newline at end of file
+var _0x5abb=['rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','count','limit','set','Content-Range','json','reject','save','update','then','get','Variables','UserProfileResource','destroy','end','error','stack','index','map','Variable','rawAttributes','type','model','name','query','keys','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','includeAll','include','rows','show','params','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','find','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','catch','eml-format'];(function(_0x141539,_0x1c3997){var _0x553d51=function(_0x1fe47c){while(--_0x1fe47c){_0x141539['push'](_0x141539['shift']());}};_0x553d51(++_0x1c3997);}(_0x5abb,0x14f));var _0xb5ab=function(_0x281f6b,_0x5a8126){_0x281f6b=_0x281f6b-0x0;var _0x4db410=_0x5abb[_0x281f6b];return _0x4db410;};'use strict';var emlformat=require(_0xb5ab('0x0'));var rimraf=require(_0xb5ab('0x1'));var zipdir=require(_0xb5ab('0x2'));var jsonpatch=require(_0xb5ab('0x3'));var rp=require(_0xb5ab('0x4'));var moment=require(_0xb5ab('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xb5ab('0x6'));var path=require(_0xb5ab('0x7'));var sox=require(_0xb5ab('0x8'));var csv=require(_0xb5ab('0x9'));var ejs=require(_0xb5ab('0xa'));var fs=require('fs');var fs_extra=require(_0xb5ab('0xb'));var _=require(_0xb5ab('0xc'));var squel=require(_0xb5ab('0xd'));var crypto=require(_0xb5ab('0xe'));var jsforce=require(_0xb5ab('0xf'));var deskjs=require(_0xb5ab('0x10'));var toCsv=require(_0xb5ab('0x9'));var querystring=require(_0xb5ab('0x11'));var Papa=require(_0xb5ab('0x12'));var Redis=require(_0xb5ab('0x13'));var authService=require('../../components/auth/service');var qs=require(_0xb5ab('0x14'));var as=require(_0xb5ab('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xb5ab('0x16'))(_0xb5ab('0x17'));var utils=require(_0xb5ab('0x18'));var config=require(_0xb5ab('0x19'));var licenseUtil=require(_0xb5ab('0x1a'));var db=require(_0xb5ab('0x1b'))['db'];function respondWithStatusCode(_0x51d32a,_0x1afd59){_0x1afd59=_0x1afd59||0xcc;return function(_0x5c1504){if(_0x5c1504){return _0x51d32a[_0xb5ab('0x1c')](_0x1afd59);}return _0x51d32a['status'](_0x1afd59)['end']();};}function respondWithResult(_0x1beef8,_0x7d85ba){_0x7d85ba=_0x7d85ba||0xc8;return function(_0x3269d1){if(_0x3269d1){return _0x1beef8[_0xb5ab('0x1d')](_0x7d85ba)['json'](_0x3269d1);}};}function respondWithFilteredResult(_0x5e5b30,_0x202fe0){return function(_0x4d6093){if(_0x4d6093){var _0x4656ab=typeof _0x202fe0[_0xb5ab('0x1e')]===_0xb5ab('0x1f')&&typeof _0x202fe0['limit']===_0xb5ab('0x1f');var _0x465d49=_0x4d6093[_0xb5ab('0x20')];var _0x100236=_0x4656ab?0x0:_0x202fe0[_0xb5ab('0x1e')];var _0x4dddc5=_0x4656ab?_0x4d6093[_0xb5ab('0x20')]:_0x202fe0['offset']+_0x202fe0[_0xb5ab('0x21')];var _0x5494fa;if(_0x4dddc5>=_0x465d49){_0x4dddc5=_0x465d49;_0x5494fa=0xc8;}else{_0x5494fa=0xce;}_0x5e5b30[_0xb5ab('0x1d')](_0x5494fa);return _0x5e5b30[_0xb5ab('0x22')](_0xb5ab('0x23'),_0x100236+'-'+_0x4dddc5+'/'+_0x465d49)[_0xb5ab('0x24')](_0x4d6093);}return null;};}function patchUpdates(_0x2d8aef){return function(_0x40a00b){try{jsonpatch['apply'](_0x40a00b,_0x2d8aef,!![]);}catch(_0x57e58e){return BPromise[_0xb5ab('0x25')](_0x57e58e);}return _0x40a00b[_0xb5ab('0x26')]();};}function saveUpdates(_0x4daf07,_0x329c8a){return function(_0xd244ad){if(_0xd244ad){return _0xd244ad[_0xb5ab('0x27')](_0x4daf07)['then'](function(_0x500d29){return _0x500d29;});}return null;};}function removeEntity(_0x325bab,_0x1add15){return function(_0x2a8611){if(_0x2a8611){return _0x2a8611['destroy']()[_0xb5ab('0x28')](function(){var _0x398c93=_0x2a8611[_0xb5ab('0x29')]({'plain':!![]});var _0x304570=_0xb5ab('0x2a');return db[_0xb5ab('0x2b')][_0xb5ab('0x2c')]({'where':{'type':_0x304570,'resourceId':_0x398c93['id']}})[_0xb5ab('0x28')](function(){return _0x2a8611;});})[_0xb5ab('0x28')](function(){_0x325bab[_0xb5ab('0x1d')](0xcc)[_0xb5ab('0x2d')]();});}};}function handleEntityNotFound(_0x4e7b21,_0x226c9b){return function(_0x210169){if(!_0x210169){_0x4e7b21[_0xb5ab('0x1c')](0x194);}return _0x210169;};}function handleError(_0x1eb3c4,_0xbb0e5f){_0xbb0e5f=_0xbb0e5f||0x1f4;return function(_0x508330){logger[_0xb5ab('0x2e')](_0x508330[_0xb5ab('0x2f')]);if(_0x508330['name']){delete _0x508330['name'];}_0x1eb3c4[_0xb5ab('0x1d')](_0xbb0e5f)['send'](_0x508330);};}exports[_0xb5ab('0x30')]=function(_0x9f8b37,_0x577ed8){var _0x559274={},_0x273062={},_0x541cd6={'count':0x0,'rows':[]};var _0x35aee4=_[_0xb5ab('0x31')](db[_0xb5ab('0x32')][_0xb5ab('0x33')],function(_0x280cb5){return{'name':_0x280cb5['fieldName'],'type':_0x280cb5[_0xb5ab('0x34')]['key']};});_0x273062[_0xb5ab('0x35')]=_[_0xb5ab('0x31')](_0x35aee4,_0xb5ab('0x36'));_0x273062[_0xb5ab('0x37')]=_[_0xb5ab('0x38')](_0x9f8b37[_0xb5ab('0x37')]);_0x273062['filters']=_['intersection'](_0x273062['model'],_0x273062['query']);_0x559274['attributes']=_[_0xb5ab('0x39')](_0x273062['model'],qs[_0xb5ab('0x3a')](_0x9f8b37[_0xb5ab('0x37')]['fields']));_0x559274[_0xb5ab('0x3b')]=_0x559274['attributes']['length']?_0x559274[_0xb5ab('0x3b')]:_0x273062[_0xb5ab('0x35')];if(!_0x9f8b37[_0xb5ab('0x37')][_0xb5ab('0x3c')](_0xb5ab('0x3d'))){_0x559274['limit']=qs[_0xb5ab('0x21')](_0x9f8b37[_0xb5ab('0x37')]['limit']);_0x559274[_0xb5ab('0x1e')]=qs[_0xb5ab('0x1e')](_0x9f8b37['query'][_0xb5ab('0x1e')]);}_0x559274[_0xb5ab('0x3e')]=qs['sort'](_0x9f8b37[_0xb5ab('0x37')][_0xb5ab('0x3f')]);_0x559274[_0xb5ab('0x40')]=qs[_0xb5ab('0x41')](_[_0xb5ab('0x42')](_0x9f8b37[_0xb5ab('0x37')],_0x273062[_0xb5ab('0x41')]),_0x35aee4);if(_0x9f8b37[_0xb5ab('0x37')][_0xb5ab('0x43')]){_0x559274[_0xb5ab('0x40')]=_[_0xb5ab('0x44')](_0x559274[_0xb5ab('0x40')],{'$or':_[_0xb5ab('0x31')](_0x35aee4,function(_0x729de9){if(_0x729de9[_0xb5ab('0x34')]!==_0xb5ab('0x45')){var _0x370acd={};_0x370acd[_0x729de9[_0xb5ab('0x36')]]={'$like':'%'+_0x9f8b37[_0xb5ab('0x37')][_0xb5ab('0x43')]+'%'};return _0x370acd;}})});}_0x559274=_['merge']({},_0x559274,_0x9f8b37['options']);var _0x1cefd5={'where':_0x559274[_0xb5ab('0x40')]};return db[_0xb5ab('0x32')][_0xb5ab('0x20')](_0x1cefd5)[_0xb5ab('0x28')](function(_0xa0010b){_0x541cd6[_0xb5ab('0x20')]=_0xa0010b;if(_0x9f8b37[_0xb5ab('0x37')][_0xb5ab('0x46')]){_0x559274[_0xb5ab('0x47')]=[{'all':!![]}];}return db['Variable']['findAll'](_0x559274);})['then'](function(_0x35a4d2){_0x541cd6[_0xb5ab('0x48')]=_0x35a4d2;return _0x541cd6;})['then'](respondWithFilteredResult(_0x577ed8,_0x559274))['catch'](handleError(_0x577ed8,null));};exports[_0xb5ab('0x49')]=function(_0x438170,_0x2a6f88){var _0x4cd580={'raw':!![],'where':{'id':_0x438170[_0xb5ab('0x4a')]['id']}},_0x1b6487={};_0x1b6487[_0xb5ab('0x35')]=_[_0xb5ab('0x38')](db[_0xb5ab('0x32')]['rawAttributes']);_0x1b6487['query']=_[_0xb5ab('0x38')](_0x438170[_0xb5ab('0x37')]);_0x1b6487[_0xb5ab('0x41')]=_[_0xb5ab('0x39')](_0x1b6487[_0xb5ab('0x35')],_0x1b6487['query']);_0x4cd580['attributes']=_[_0xb5ab('0x39')](_0x1b6487[_0xb5ab('0x35')],qs['fields'](_0x438170[_0xb5ab('0x37')]['fields']));_0x4cd580['attributes']=_0x4cd580[_0xb5ab('0x3b')]['length']?_0x4cd580[_0xb5ab('0x3b')]:_0x1b6487['model'];if(_0x438170[_0xb5ab('0x37')][_0xb5ab('0x46')]){_0x4cd580[_0xb5ab('0x47')]=[{'all':!![]}];}_0x4cd580=_[_0xb5ab('0x44')]({},_0x4cd580,_0x438170['options']);return db[_0xb5ab('0x32')]['find'](_0x4cd580)['then'](handleEntityNotFound(_0x2a6f88,null))[_0xb5ab('0x28')](respondWithResult(_0x2a6f88,null))['catch'](handleError(_0x2a6f88,null));};exports['create']=function(_0x258caa,_0x4b15dd){return db[_0xb5ab('0x32')][_0xb5ab('0x4b')](_0x258caa[_0xb5ab('0x4c')],{})['then'](function(_0x13457c){var _0x54b5c8=_0x258caa[_0xb5ab('0x4d')]['get']({'plain':!![]});if(!_0x54b5c8)throw new Error(_0xb5ab('0x4e'));if(_0x54b5c8[_0xb5ab('0x4f')]===_0xb5ab('0x4d')){var _0x10de35=_0x13457c['get']({'plain':!![]});var _0x208386=_0xb5ab('0x2a');return db['UserProfileSection'][_0xb5ab('0x50')]({'where':{'name':_0x208386,'userProfileId':_0x54b5c8[_0xb5ab('0x51')]},'raw':!![]})[_0xb5ab('0x28')](function(_0x26236b){if(_0x26236b&&_0x26236b['autoAssociation']===0x0){return db[_0xb5ab('0x2b')][_0xb5ab('0x4b')]({'name':_0x10de35['name'],'resourceId':_0x10de35['id'],'type':_0x26236b[_0xb5ab('0x36')],'sectionId':_0x26236b['id']},{})[_0xb5ab('0x28')](function(){return _0x13457c;});}else{return _0x13457c;}})['catch'](function(_0x5b4b6b){logger['error'](_0xb5ab('0x52'),_0x5b4b6b);throw _0x5b4b6b;});}return _0x13457c;})[_0xb5ab('0x28')](respondWithResult(_0x4b15dd,0xc9))[_0xb5ab('0x53')](handleError(_0x4b15dd,null));};exports[_0xb5ab('0x27')]=function(_0x1a6382,_0x3b5363){if(_0x1a6382[_0xb5ab('0x4c')]['id']){delete _0x1a6382['body']['id'];}return db['Variable']['find']({'where':{'id':_0x1a6382[_0xb5ab('0x4a')]['id']}})[_0xb5ab('0x28')](handleEntityNotFound(_0x3b5363,null))[_0xb5ab('0x28')](saveUpdates(_0x1a6382['body'],null))['then'](respondWithResult(_0x3b5363,null))[_0xb5ab('0x53')](handleError(_0x3b5363,null));};exports[_0xb5ab('0x2c')]=function(_0x17b240,_0xc5d539){return db[_0xb5ab('0x32')]['find']({'where':{'id':_0x17b240[_0xb5ab('0x4a')]['id']}})[_0xb5ab('0x28')](handleEntityNotFound(_0xc5d539,null))[_0xb5ab('0x28')](removeEntity(_0xc5d539,null))[_0xb5ab('0x53')](handleError(_0xc5d539,null));};
\ No newline at end of file
index 162a718..8b67890 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x23d5=['path','rimraf','./variable.attributes','define','Variable','tools_variables','util','../../config/logger','api','bluebird','request-promise'];(function(_0x101e7b,_0x4ef05b){var _0x4995c0=function(_0x1a6488){while(--_0x1a6488){_0x101e7b['push'](_0x101e7b['shift']());}};_0x4995c0(++_0x4ef05b);}(_0x23d5,0xc1));var _0x523d=function(_0x489243,_0x3dae24){_0x489243=_0x489243-0x0;var _0x360d07=_0x23d5[_0x489243];return _0x360d07;};'use strict';var _=require('lodash');var util=require(_0x523d('0x0'));var logger=require(_0x523d('0x1'))(_0x523d('0x2'));var moment=require('moment');var BPromise=require(_0x523d('0x3'));var rp=require(_0x523d('0x4'));var fs=require('fs');var path=require(_0x523d('0x5'));var rimraf=require(_0x523d('0x6'));var config=require('../../config/environment');var attributes=require(_0x523d('0x7'));module['exports']=function(_0x2f842a,_0xdb8c57){return _0x2f842a[_0x523d('0x8')](_0x523d('0x9'),attributes,{'tableName':_0x523d('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc9bc=['tools_variables','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','exports','define'];(function(_0x464e71,_0x5f5181){var _0x4c2503=function(_0x1098f6){while(--_0x1098f6){_0x464e71['push'](_0x464e71['shift']());}};_0x4c2503(++_0x5f5181);}(_0xc9bc,0x115));var _0xcc9b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc9bc[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xcc9b('0x0'));var util=require(_0xcc9b('0x1'));var logger=require(_0xcc9b('0x2'))(_0xcc9b('0x3'));var moment=require(_0xcc9b('0x4'));var BPromise=require(_0xcc9b('0x5'));var rp=require(_0xcc9b('0x6'));var fs=require('fs');var path=require(_0xcc9b('0x7'));var rimraf=require(_0xcc9b('0x8'));var config=require('../../config/environment');var attributes=require('./variable.attributes');module[_0xcc9b('0x9')]=function(_0x1e67ca,_0xe674ec){return _0x1e67ca[_0xcc9b('0xa')]('Variable',attributes,{'tableName':_0xcc9b('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 36bea31..418501a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326f=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','info','Variable,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','ShowVariable','Variable','raw','options','include','model','attributes','map','then','stringify','lodash'];(function(_0x618414,_0x1a7a60){var _0x21c19a=function(_0x507b17){while(--_0x507b17){_0x618414['push'](_0x618414['shift']());}};_0x21c19a(++_0x1a7a60);}(_0x326f,0xd1));var _0xf326=function(_0x39700c,_0x5b35dc){_0x39700c=_0x39700c-0x0;var _0x775dde=_0x326f[_0x39700c];return _0x775dde;};'use strict';var _=require(_0xf326('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xf326('0x1'));var rs=require(_0xf326('0x2'));var fs=require('fs');var Redis=require(_0xf326('0x3'));var db=require(_0xf326('0x4'))['db'];var utils=require(_0xf326('0x5'));var logger=require(_0xf326('0x6'))(_0xf326('0x7'));var config=require(_0xf326('0x8'));var jayson=require(_0xf326('0x9'));var client=jayson[_0xf326('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3c254d,_0x3851eb,_0x165f95){return new BPromise(function(_0x1e7b8a,_0x515bfa){return client['request'](_0x3c254d,_0x165f95)['then'](function(_0x3bacf2){logger[_0xf326('0xb')](_0xf326('0xc'),_0x3851eb,_0xf326('0xd'));logger[_0xf326('0xe')]('Variable,\x20%s,\x20%s,\x20%s',_0x3851eb,_0xf326('0xd'),JSON['stringify'](_0x3bacf2));if(_0x3bacf2[_0xf326('0xf')]){if(_0x3bacf2['error'][_0xf326('0x10')]===0x1f4){logger['error'](_0xf326('0xc'),_0x3851eb,_0x3bacf2[_0xf326('0xf')]['message']);return _0x515bfa(_0x3bacf2[_0xf326('0xf')][_0xf326('0x11')]);}logger[_0xf326('0xf')](_0xf326('0xc'),_0x3851eb,_0x3bacf2['error'][_0xf326('0x11')]);return _0x1e7b8a(_0x3bacf2['error']['message']);}else{logger[_0xf326('0xb')](_0xf326('0xc'),_0x3851eb,_0xf326('0xd'));_0x1e7b8a(_0x3bacf2[_0xf326('0x12')][_0xf326('0x11')]);}})[_0xf326('0x13')](function(_0x34128e){logger[_0xf326('0xf')]('Variable,\x20%s,\x20%s',_0x3851eb,_0x34128e);_0x515bfa(_0x34128e);});});}exports[_0xf326('0x14')]=function(_0x453100){var _0x18bee3=this;return new Promise(function(_0x31ffb9,_0xcef2b5){return db[_0xf326('0x15')]['find']({'raw':_0x453100['options']?_0x453100['options'][_0xf326('0x16')]===undefined?!![]:![]:!![],'where':_0x453100[_0xf326('0x17')]?_0x453100['options']['where']||null:null,'attributes':_0x453100[_0xf326('0x17')]?_0x453100['options']['attributes']||null:null,'include':_0x453100[_0xf326('0x17')]?_0x453100[_0xf326('0x17')]['include']?_['map'](_0x453100[_0xf326('0x17')][_0xf326('0x18')],function(_0x5f21a2){return{'model':db[_0x5f21a2[_0xf326('0x19')]],'as':_0x5f21a2['as'],'attributes':_0x5f21a2[_0xf326('0x1a')],'include':_0x5f21a2[_0xf326('0x18')]?_[_0xf326('0x1b')](_0x5f21a2[_0xf326('0x18')],function(_0x2049ec){return{'model':db[_0x2049ec['model']],'as':_0x2049ec['as'],'attributes':_0x2049ec['attributes'],'include':_0x2049ec['include']?_[_0xf326('0x1b')](_0x2049ec[_0xf326('0x18')],function(_0x2cd45a){return{'model':db[_0x2cd45a[_0xf326('0x19')]],'as':_0x2cd45a['as'],'attributes':_0x2cd45a[_0xf326('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xf326('0x1c')](function(_0x5217d4){logger[_0xf326('0xb')](_0xf326('0x14'),_0x453100);logger[_0xf326('0xe')]('ShowVariable',_0x453100,JSON[_0xf326('0x1d')](_0x5217d4));_0x31ffb9(_0x5217d4);})['catch'](function(_0x4a9abf){logger[_0xf326('0xf')](_0xf326('0x14'),_0x4a9abf[_0xf326('0x11')],_0x453100);_0xcef2b5(_0x18bee3['error'](0x1f4,_0x4a9abf[_0xf326('0x11')]));});});};
\ No newline at end of file
+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(_0x4351dc,_0x16dfb5){var _0x149bde=function(_0x377746){while(--_0x377746){_0x4351dc['push'](_0x4351dc['shift']());}};_0x149bde(++_0x16dfb5);}(_0x814b,0x1a2));var _0xb814=function(_0x1dd2cc,_0x36ddfe){_0x1dd2cc=_0x1dd2cc-0x0;var _0x305d8e=_0x814b[_0x1dd2cc];return _0x305d8e;};'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
index a55c7ba..cf382cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5118=['/pull','pull','/restart','restart','/migrations','migrations','express','../../components/auth/service','./version.controller','get','index','/fetch','isAuthenticated','canUpdate','fetch','/reset'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x5118,0x96));var _0x8511=function(_0x418fa3,_0x464468){_0x418fa3=_0x418fa3-0x0;var _0x845083=_0x5118[_0x418fa3];return _0x845083;};'use strict';var express=require(_0x8511('0x0'));var router=express['Router']();var auth=require(_0x8511('0x1'));var controller=require(_0x8511('0x2'));router[_0x8511('0x3')]('/',controller[_0x8511('0x4')]);router[_0x8511('0x3')](_0x8511('0x5'),auth[_0x8511('0x6')](),auth[_0x8511('0x7')](),controller[_0x8511('0x8')]);router['get'](_0x8511('0x9'),auth['isAuthenticated'](),auth[_0x8511('0x7')](),controller['reset']);router[_0x8511('0x3')](_0x8511('0xa'),auth[_0x8511('0x6')](),auth['canUpdate'](),controller[_0x8511('0xb')]);router['get'](_0x8511('0xc'),auth[_0x8511('0x6')](),controller[_0x8511('0xd')]);router[_0x8511('0x3')](_0x8511('0xe'),controller[_0x8511('0xf')]);module['exports']=router;
\ No newline at end of file
+var _0xdef0=['index','/fetch','isAuthenticated','canUpdate','fetch','/reset','pull','restart','/migrations','exports','Router','../../components/auth/service','./version.controller','get'];(function(_0x581617,_0x164cdc){var _0x635776=function(_0x3b8cc6){while(--_0x3b8cc6){_0x581617['push'](_0x581617['shift']());}};_0x635776(++_0x164cdc);}(_0xdef0,0x1ca));var _0x0def=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xdef0[_0x2dafbe];return _0x58a45a;};'use strict';var express=require('express');var router=express[_0x0def('0x0')]();var auth=require(_0x0def('0x1'));var controller=require(_0x0def('0x2'));router[_0x0def('0x3')]('/',controller[_0x0def('0x4')]);router['get'](_0x0def('0x5'),auth[_0x0def('0x6')](),auth[_0x0def('0x7')](),controller[_0x0def('0x8')]);router['get'](_0x0def('0x9'),auth['isAuthenticated'](),auth[_0x0def('0x7')](),controller['reset']);router[_0x0def('0x3')]('/pull',auth[_0x0def('0x6')](),auth[_0x0def('0x7')](),controller[_0x0def('0xa')]);router[_0x0def('0x3')]('/restart',auth[_0x0def('0x6')](),controller[_0x0def('0xb')]);router[_0x0def('0x3')](_0x0def('0xc'),controller['migrations']);module[_0x0def('0xd')]=router;
\ No newline at end of file
index ed0681b..8684750 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7386=['pkginfo','version','compare-versions','child_process','exec','../../mysqldb','../../config/environment','update','simple-git','index','exports','query','latest','fetch','tags','2.0.0','status','json','master','error','git\x20fetch','git\x20fetch\x20origin\x20master','reset','info','git\x20reset\x20--hard\x20FETCH_HEAD','git\x20reset\x20--hard','pull','npm\x20install\x20--production','restart','motion2','then','pm2\x20restart\x20motion\x20%s','Your\x20system\x20has\x20been\x20restart\x20successfully','catch','migrations','readdirSync','join','root','replace','.js','push','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.','server','map','Database\x20migrated\x20successfully\x20from\x20version\x20','last','UniqueConstraintError','Database\x20already\x20up-to-date','umzug','lodash'];(function(_0xc9f49d,_0x4b5ebc){var _0x303031=function(_0xbb9f77){while(--_0xbb9f77){_0xc9f49d['push'](_0xc9f49d['shift']());}};_0x303031(++_0x4b5ebc);}(_0x7386,0xa0));var _0x6738=function(_0x7136a7,_0x32ff85){_0x7136a7=_0x7136a7-0x0;var _0x50cc83=_0x7386[_0x7136a7];return _0x50cc83;};'use strict';var Umzug=require(_0x6738('0x0'));var path=require('path');var fs=require('fs');var _=require(_0x6738('0x1'));var pkginfo=require(_0x6738('0x2'))(module,_0x6738('0x3'));var compareVersions=require(_0x6738('0x4'));var exec=require(_0x6738('0x5'))[_0x6738('0x6')];var db=require(_0x6738('0x7'))['db'];var config=require(_0x6738('0x8'));var pm2=require('../../config/pm2');var logger=require('../../config/logger')(_0x6738('0x9'));var git=require(_0x6738('0xa'))(config['root']);exports[_0x6738('0xb')]=function(_0x466448,_0x4acece){var _0x5e581e={'current':module[_0x6738('0xc')]['version'],'phonebar':0x2};if(_0x466448['query']&&_0x466448[_0x6738('0xd')][_0x6738('0xe')]){return git[_0x6738('0xf')]()[_0x6738('0x10')](function(_0x14e20f,_0x2b1f78){_0x5e581e[_0x6738('0xe')]=(_0x14e20f?module[_0x6738('0xc')]['version']:_0x2b1f78[_0x6738('0xe')])||_0x6738('0x11');return _0x4acece[_0x6738('0x12')](0xc8)[_0x6738('0x13')](_0x5e581e);});}else{return _0x4acece[_0x6738('0x12')](0xc8)[_0x6738('0x13')](_0x5e581e);}};exports[_0x6738('0xf')]=function(_0x5e9f1d,_0x23ab04){return git[_0x6738('0xf')](['origin',_0x6738('0x14')],function(_0x1c4b63){if(_0x1c4b63){logger[_0x6738('0x15')](_0x1c4b63);return _0x23ab04['status'](0x1f4)[_0x6738('0x13')](_0x1c4b63);}logger['info'](_0x6738('0x16'));return _0x23ab04[_0x6738('0x12')](0xc8)[_0x6738('0x13')]({'output':_0x6738('0x17')});});};exports['reset']=function(_0x3818a6,_0x1384e5){return git[_0x6738('0x18')](['--hard','FETCH_HEAD'],function(_0x117636){if(_0x117636){logger[_0x6738('0x15')](_0x117636);return _0x1384e5['status'](0x1f4)[_0x6738('0x13')](_0x117636);}logger[_0x6738('0x19')](_0x6738('0x1a'));return _0x1384e5[_0x6738('0x12')](0xc8)[_0x6738('0x13')]({'output':_0x6738('0x1b')});});};exports[_0x6738('0x1c')]=function(_0x1f1c26,_0x1e7d5d){exec(_0x6738('0x1d'),function(_0x3a257d,_0x4dbb64,_0x5e54fb){logger[_0x6738('0x19')](_0x4dbb64);logger[_0x6738('0x19')](_0x5e54fb);if(_0x3a257d){logger['error'](_0x3a257d);return _0x1e7d5d['status'](0x1f4)[_0x6738('0x13')](_0x3a257d);}return _0x1e7d5d[_0x6738('0x12')](0xc8)[_0x6738('0x13')]({'output':_0x4dbb64});});};exports[_0x6738('0x1e')]=function(_0x44e397,_0x5ce396){return pm2[_0x6738('0x1e')](_0x6738('0x1f'))[_0x6738('0x20')](function(_0x4856cb){logger['info'](_0x6738('0x21'),_0x4856cb);return _0x5ce396[_0x6738('0x12')](0xc8)['json']({'output':_0x6738('0x22')});})[_0x6738('0x23')](function(_0x29a0a0){logger[_0x6738('0x15')](_0x29a0a0);return _0x5ce396[_0x6738('0x12')](0x1f4)[_0x6738('0x13')](_0x29a0a0);});};exports[_0x6738('0x24')]=function(_0x315c42,_0x3b0603){var _0x510488=fs[_0x6738('0x25')](path[_0x6738('0x26')](config[_0x6738('0x27')],'server','migrations'));var _0x511c9e=[];for(var _0x5286e6=0x0;_0x5286e6<_0x510488['length'];_0x5286e6++){var _0x3ada95=_0x510488[_0x5286e6][_0x6738('0x28')](_0x6738('0x29'),'');if(compareVersions(module['exports']['version'],_0x3ada95)===-0x1){_0x511c9e[_0x6738('0x2a')](_0x3ada95);}}if(_0x511c9e['length']){var _0x32536c=_0x511c9e['sort'](compareVersions);var _0x54e3af=new Umzug({'storage':'sequelize','storageOptions':{'model':db[_0x6738('0x2b')],'modelName':_0x6738('0x2b'),'columnName':_0x6738('0x3')},'migrations':{'params':[db[_0x6738('0x2c')][_0x6738('0x2d')](),db['sequelize'][_0x6738('0x2e')],function(){throw new Error(_0x6738('0x2f'));}],'path':path['join'](config[_0x6738('0x27')],_0x6738('0x30'),'migrations'),'pattern':/\.js$/}});_0x54e3af['up']({'migrations':_[_0x6738('0x31')](_0x32536c,function(_0x275dc2){return _0x275dc2+'.js';})})[_0x6738('0x20')](function(){return _0x3b0603[_0x6738('0x12')](0xc8)[_0x6738('0x13')]({'output':_0x6738('0x32')+module[_0x6738('0xc')][_0x6738('0x3')]+'\x20to\x20'+_[_0x6738('0x33')](_0x32536c),'migrations':_[_0x6738('0x26')](_0x32536c)});})[_0x6738('0x23')](function(_0x1761f7){if(_0x1761f7 instanceof db[_0x6738('0x2c')][_0x6738('0x34')]){return _0x3b0603['status'](0xc8)[_0x6738('0x13')]({'output':_0x6738('0x35')});}else{return _0x3b0603[_0x6738('0x12')](0x1f4)[_0x6738('0x13')](_0x1761f7);}});}else{return _0x3b0603[_0x6738('0x12')](0xc8)[_0x6738('0x13')]({'output':'Database\x20already\x20up-to-date'});}};
\ No newline at end of file
+var _0xffce=['fetch','origin','info','git\x20fetch','git\x20fetch\x20origin\x20master','reset','--hard','git\x20reset\x20--hard','pull','error','restart','then','pm2\x20restart\x20motion\x20%s','catch','migrations','readdirSync','join','.js','push','sort','sequelize','Migration','constructor','Migration\x20tried\x20to\x20use\x20old\x20style\x20\x22done\x22\x20callback.\x20Please\x20upgrade\x20to\x20\x22umzug\x22\x20and\x20return\x20a\x20promise\x20instead.','server','map','\x20to\x20','last','UniqueConstraintError','Database\x20already\x20up-to-date','umzug','path','lodash','child_process','exec','../../mysqldb','../../config/environment','../../config/pm2','../../config/logger','update','simple-git','root','index','exports','version','query','latest','tags','2.0.0','status','json'];(function(_0x2caf3a,_0x1d65d6){var _0x34f044=function(_0x31410c){while(--_0x31410c){_0x2caf3a['push'](_0x2caf3a['shift']());}};_0x34f044(++_0x1d65d6);}(_0xffce,0x183));var _0xeffc=function(_0x1625b4,_0x5eebe4){_0x1625b4=_0x1625b4-0x0;var _0x9cdea1=_0xffce[_0x1625b4];return _0x9cdea1;};'use strict';var Umzug=require(_0xeffc('0x0'));var path=require(_0xeffc('0x1'));var fs=require('fs');var _=require(_0xeffc('0x2'));var pkginfo=require('pkginfo')(module,'version');var compareVersions=require('compare-versions');var exec=require(_0xeffc('0x3'))[_0xeffc('0x4')];var db=require(_0xeffc('0x5'))['db'];var config=require(_0xeffc('0x6'));var pm2=require(_0xeffc('0x7'));var logger=require(_0xeffc('0x8'))(_0xeffc('0x9'));var git=require(_0xeffc('0xa'))(config[_0xeffc('0xb')]);exports[_0xeffc('0xc')]=function(_0x275c02,_0x5486c6){var _0xaef7b4={'current':module[_0xeffc('0xd')][_0xeffc('0xe')],'phonebar':0x2};if(_0x275c02[_0xeffc('0xf')]&&_0x275c02[_0xeffc('0xf')][_0xeffc('0x10')]){return git['fetch']()[_0xeffc('0x11')](function(_0x3f7250,_0x86b419){_0xaef7b4[_0xeffc('0x10')]=(_0x3f7250?module['exports'][_0xeffc('0xe')]:_0x86b419[_0xeffc('0x10')])||_0xeffc('0x12');return _0x5486c6['status'](0xc8)['json'](_0xaef7b4);});}else{return _0x5486c6[_0xeffc('0x13')](0xc8)[_0xeffc('0x14')](_0xaef7b4);}};exports['fetch']=function(_0x2e933e,_0x26224d){return git[_0xeffc('0x15')]([_0xeffc('0x16'),'master'],function(_0x316818){if(_0x316818){logger['error'](_0x316818);return _0x26224d[_0xeffc('0x13')](0x1f4)[_0xeffc('0x14')](_0x316818);}logger[_0xeffc('0x17')](_0xeffc('0x18'));return _0x26224d[_0xeffc('0x13')](0xc8)[_0xeffc('0x14')]({'output':_0xeffc('0x19')});});};exports[_0xeffc('0x1a')]=function(_0x1f52ea,_0x568398){return git[_0xeffc('0x1a')]([_0xeffc('0x1b'),'FETCH_HEAD'],function(_0x3494bb){if(_0x3494bb){logger['error'](_0x3494bb);return _0x568398[_0xeffc('0x13')](0x1f4)[_0xeffc('0x14')](_0x3494bb);}logger[_0xeffc('0x17')]('git\x20reset\x20--hard\x20FETCH_HEAD');return _0x568398[_0xeffc('0x13')](0xc8)['json']({'output':_0xeffc('0x1c')});});};exports[_0xeffc('0x1d')]=function(_0x2a9ae2,_0x4fb0e5){exec('npm\x20install\x20--production',function(_0xb7f761,_0x5bfdc7,_0x56873d){logger[_0xeffc('0x17')](_0x5bfdc7);logger[_0xeffc('0x17')](_0x56873d);if(_0xb7f761){logger[_0xeffc('0x1e')](_0xb7f761);return _0x4fb0e5['status'](0x1f4)['json'](_0xb7f761);}return _0x4fb0e5[_0xeffc('0x13')](0xc8)[_0xeffc('0x14')]({'output':_0x5bfdc7});});};exports[_0xeffc('0x1f')]=function(_0x5589bf,_0x413a0d){return pm2[_0xeffc('0x1f')]('motion2')[_0xeffc('0x20')](function(_0x3f1e5f){logger['info'](_0xeffc('0x21'),_0x3f1e5f);return _0x413a0d['status'](0xc8)['json']({'output':'Your\x20system\x20has\x20been\x20restart\x20successfully'});})[_0xeffc('0x22')](function(_0x36d56f){logger[_0xeffc('0x1e')](_0x36d56f);return _0x413a0d[_0xeffc('0x13')](0x1f4)[_0xeffc('0x14')](_0x36d56f);});};exports[_0xeffc('0x23')]=function(_0x4e5262,_0x1a7c1f){var _0x108078=fs[_0xeffc('0x24')](path[_0xeffc('0x25')](config[_0xeffc('0xb')],'server','migrations'));var _0x1ac482=[];for(var _0x4b4fc0=0x0;_0x4b4fc0<_0x108078['length'];_0x4b4fc0++){var _0x3b877e=_0x108078[_0x4b4fc0]['replace'](_0xeffc('0x26'),'');if(compareVersions(module[_0xeffc('0xd')][_0xeffc('0xe')],_0x3b877e)===-0x1){_0x1ac482[_0xeffc('0x27')](_0x3b877e);}}if(_0x1ac482['length']){var _0x31c415=_0x1ac482[_0xeffc('0x28')](compareVersions);var _0x1c945b=new Umzug({'storage':_0xeffc('0x29'),'storageOptions':{'model':db[_0xeffc('0x2a')],'modelName':_0xeffc('0x2a'),'columnName':_0xeffc('0xe')},'migrations':{'params':[db[_0xeffc('0x29')]['getQueryInterface'](),db[_0xeffc('0x29')][_0xeffc('0x2b')],function(){throw new Error(_0xeffc('0x2c'));}],'path':path[_0xeffc('0x25')](config['root'],_0xeffc('0x2d'),_0xeffc('0x23')),'pattern':/\.js$/}});_0x1c945b['up']({'migrations':_[_0xeffc('0x2e')](_0x31c415,function(_0x2970a1){return _0x2970a1+_0xeffc('0x26');})})[_0xeffc('0x20')](function(){return _0x1a7c1f['status'](0xc8)['json']({'output':'Database\x20migrated\x20successfully\x20from\x20version\x20'+module[_0xeffc('0xd')][_0xeffc('0xe')]+_0xeffc('0x2f')+_[_0xeffc('0x30')](_0x31c415),'migrations':_[_0xeffc('0x25')](_0x31c415)});})[_0xeffc('0x22')](function(_0x3d65af){if(_0x3d65af instanceof db[_0xeffc('0x29')][_0xeffc('0x31')]){return _0x1a7c1f[_0xeffc('0x13')](0xc8)[_0xeffc('0x14')]({'output':_0xeffc('0x32')});}else{return _0x1a7c1f['status'](0x1f4)['json'](_0x3d65af);}});}else{return _0x1a7c1f[_0xeffc('0x13')](0xc8)[_0xeffc('0x14')]({'output':_0xeffc('0x32')});}};
\ No newline at end of file
index f2d4548..994f70d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfaf9=['path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','post','update','destroy','exports','multer','util'];(function(_0x3659e0,_0x364f9a){var _0x21d0ab=function(_0x2efd4f){while(--_0x2efd4f){_0x3659e0['push'](_0x3659e0['shift']());}};_0x21d0ab(++_0x364f9a);}(_0xfaf9,0x166));var _0x9faf=function(_0x3ce3c,_0x319337){_0x3ce3c=_0x3ce3c-0x0;var _0x55a2c9=_0xfaf9[_0x3ce3c];return _0x55a2c9;};'use strict';var multer=require(_0x9faf('0x0'));var util=require(_0x9faf('0x1'));var path=require(_0x9faf('0x2'));var timeout=require(_0x9faf('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x9faf('0x4'));var auth=require(_0x9faf('0x5'));var interaction=require(_0x9faf('0x6'));var config=require(_0x9faf('0x7'));var controller=require('./voiceAgentReport.controller');router[_0x9faf('0x8')]('/',auth[_0x9faf('0x9')](),controller[_0x9faf('0xa')]);router[_0x9faf('0x8')](_0x9faf('0xb'),auth[_0x9faf('0x9')](),controller[_0x9faf('0xc')]);router[_0x9faf('0x8')](_0x9faf('0xd'),auth[_0x9faf('0x9')](),controller['show']);router[_0x9faf('0xe')]('/',auth[_0x9faf('0x9')](),controller['create']);router['put'](_0x9faf('0xd'),auth[_0x9faf('0x9')](),controller[_0x9faf('0xf')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0x9faf('0x10')]);module[_0x9faf('0x11')]=router;
\ No newline at end of file
+var _0x5c89=['/:id','update','delete','destroy','exports','multer','util','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','get','index','/describe','isAuthenticated','describe','show','create','put'];(function(_0x2ebce5,_0x4d089a){var _0x2173cf=function(_0x266d6c){while(--_0x266d6c){_0x2ebce5['push'](_0x2ebce5['shift']());}};_0x2173cf(++_0x4d089a);}(_0x5c89,0x69));var _0x95c8=function(_0x4d633a,_0x2e4bc5){_0x4d633a=_0x4d633a-0x0;var _0xc228be=_0x5c89[_0x4d633a];return _0xc228be;};'use strict';var multer=require(_0x95c8('0x0'));var util=require(_0x95c8('0x1'));var path=require('path');var timeout=require(_0x95c8('0x2'));var express=require(_0x95c8('0x3'));var router=express[_0x95c8('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x95c8('0x5'));var config=require(_0x95c8('0x6'));var controller=require('./voiceAgentReport.controller');router[_0x95c8('0x7')]('/',auth['isAuthenticated'](),controller[_0x95c8('0x8')]);router[_0x95c8('0x7')](_0x95c8('0x9'),auth[_0x95c8('0xa')](),controller[_0x95c8('0xb')]);router['get']('/:id',auth[_0x95c8('0xa')](),controller[_0x95c8('0xc')]);router['post']('/',auth['isAuthenticated'](),controller[_0x95c8('0xd')]);router[_0x95c8('0xe')](_0x95c8('0xf'),auth['isAuthenticated'](),controller[_0x95c8('0x10')]);router[_0x95c8('0x11')]('/:id',auth[_0x95c8('0xa')](),controller[_0x95c8('0x12')]);module[_0x95c8('0x13')]=router;
\ No newline at end of file
index 1831627..f31d97d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7462=['sequelize','exports','STRING','DATE','INTEGER','BOOLEAN','FORWARD,\x20BLIND,\x20ATTENDED'];(function(_0x5bf400,_0x2472c0){var _0xff575e=function(_0x174897){while(--_0x174897){_0x5bf400['push'](_0x5bf400['shift']());}};_0xff575e(++_0x2472c0);}(_0x7462,0x165));var _0x2746=function(_0x2d4065,_0x38dc95){_0x2d4065=_0x2d4065-0x0;var _0xef6016=_0x7462[_0x2d4065];return _0xef6016;};'use strict';var Sequelize=require(_0x2746('0x0'));module[_0x2746('0x1')]={'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0x2746('0x2')]},'calleridname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize['STRING']},'interface':{'type':Sequelize[_0x2746('0x2')]},'membername':{'type':Sequelize[_0x2746('0x2')]},'agentcalledAt':{'type':Sequelize['DATE']},'agentconnectAt':{'type':Sequelize[_0x2746('0x3')]},'agentcompleteAt':{'type':Sequelize[_0x2746('0x3')]},'agentringnoanswerAt':{'type':Sequelize[_0x2746('0x3')]},'agentdumpAt':{'type':Sequelize[_0x2746('0x3')]},'holdtime':{'type':Sequelize[_0x2746('0x4')]},'agentcomplete':{'type':Sequelize[_0x2746('0x5')],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize[_0x2746('0x5')],'defaultValue':![]},'agentdump':{'type':Sequelize[_0x2746('0x5')],'defaultValue':![]},'talktime':{'type':Sequelize[_0x2746('0x4')]},'agentacw':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'acwtime':{'type':Sequelize[_0x2746('0x4')]},'reason':{'type':Sequelize[_0x2746('0x2')]},'lastevent':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x2746('0x2')]},'channelstate':{'type':Sequelize[_0x2746('0x4')]},'channelstatedesc':{'type':Sequelize[_0x2746('0x2')]},'connectedlinenum':{'type':Sequelize['STRING']},'connectedlinename':{'type':Sequelize[_0x2746('0x2')]},'language':{'type':Sequelize[_0x2746('0x2')]},'accountcode':{'type':Sequelize[_0x2746('0x2')]},'context':{'type':Sequelize[_0x2746('0x2')]},'exten':{'type':Sequelize[_0x2746('0x2')]},'priority':{'type':Sequelize[_0x2746('0x2')]},'destchannel':{'type':Sequelize[_0x2746('0x2')]},'destchannelstate':{'type':Sequelize[_0x2746('0x4')]},'destchannelstatedesc':{'type':Sequelize[_0x2746('0x2')]},'destcalleridnum':{'type':Sequelize[_0x2746('0x2')]},'destcalleridname':{'type':Sequelize[_0x2746('0x2')]},'destconnectedlinenum':{'type':Sequelize['STRING']},'destconnectedlinename':{'type':Sequelize['STRING']},'destlanguage':{'type':Sequelize[_0x2746('0x2')]},'destaccountcode':{'type':Sequelize[_0x2746('0x2')]},'destcontext':{'type':Sequelize[_0x2746('0x2')]},'destexten':{'type':Sequelize[_0x2746('0x2')]},'destpriority':{'type':Sequelize['STRING']},'destuniqueid':{'type':Sequelize[_0x2746('0x2')]},'answeredelsewheredestinationuniqueid':{'type':Sequelize[_0x2746('0x2')]},'answeredelsewheremembername':{'type':Sequelize['STRING']},'transfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'transfertype':{'type':Sequelize[_0x2746('0x2')],'comment':_0x2746('0x6')},'transferexten':{'type':Sequelize[_0x2746('0x2')]},'transferuniqueid':{'type':Sequelize[_0x2746('0x2')]},'agententerreason':{'type':Sequelize[_0x2746('0x4')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x7df3=['STRING','DATE','INTEGER','BOOLEAN','FORWARD,\x20BLIND,\x20ATTENDED','sequelize','exports'];(function(_0x8e9386,_0x3cc60f){var _0x4abf26=function(_0x59de5a){while(--_0x59de5a){_0x8e9386['push'](_0x8e9386['shift']());}};_0x4abf26(++_0x3cc60f);}(_0x7df3,0x1cc));var _0x37df=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x7df3[_0x1facfa];return _0x9ec701;};'use strict';var Sequelize=require(_0x37df('0x0'));module[_0x37df('0x1')]={'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0x37df('0x2')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x37df('0x2')]},'queue':{'type':Sequelize['STRING']},'interface':{'type':Sequelize[_0x37df('0x2')]},'membername':{'type':Sequelize['STRING']},'agentcalledAt':{'type':Sequelize[_0x37df('0x3')]},'agentconnectAt':{'type':Sequelize[_0x37df('0x3')]},'agentcompleteAt':{'type':Sequelize[_0x37df('0x3')]},'agentringnoanswerAt':{'type':Sequelize[_0x37df('0x3')]},'agentdumpAt':{'type':Sequelize[_0x37df('0x3')]},'holdtime':{'type':Sequelize[_0x37df('0x4')]},'agentcomplete':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentdump':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'talktime':{'type':Sequelize[_0x37df('0x4')]},'agentacw':{'type':Sequelize[_0x37df('0x5')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0x37df('0x4')]},'reason':{'type':Sequelize[_0x37df('0x2')]},'lastevent':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x37df('0x2')]},'channelstate':{'type':Sequelize[_0x37df('0x4')]},'channelstatedesc':{'type':Sequelize[_0x37df('0x2')]},'connectedlinenum':{'type':Sequelize['STRING']},'connectedlinename':{'type':Sequelize[_0x37df('0x2')]},'language':{'type':Sequelize[_0x37df('0x2')]},'accountcode':{'type':Sequelize[_0x37df('0x2')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0x37df('0x2')]},'priority':{'type':Sequelize[_0x37df('0x2')]},'destchannel':{'type':Sequelize[_0x37df('0x2')]},'destchannelstate':{'type':Sequelize[_0x37df('0x4')]},'destchannelstatedesc':{'type':Sequelize[_0x37df('0x2')]},'destcalleridnum':{'type':Sequelize['STRING']},'destcalleridname':{'type':Sequelize[_0x37df('0x2')]},'destconnectedlinenum':{'type':Sequelize[_0x37df('0x2')]},'destconnectedlinename':{'type':Sequelize[_0x37df('0x2')]},'destlanguage':{'type':Sequelize['STRING']},'destaccountcode':{'type':Sequelize[_0x37df('0x2')]},'destcontext':{'type':Sequelize[_0x37df('0x2')]},'destexten':{'type':Sequelize['STRING']},'destpriority':{'type':Sequelize['STRING']},'destuniqueid':{'type':Sequelize['STRING']},'answeredelsewheredestinationuniqueid':{'type':Sequelize[_0x37df('0x2')]},'answeredelsewheremembername':{'type':Sequelize[_0x37df('0x2')]},'transfer':{'type':Sequelize[_0x37df('0x5')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0x37df('0x2')],'comment':_0x37df('0x6')},'transferexten':{'type':Sequelize[_0x37df('0x2')]},'transferuniqueid':{'type':Sequelize[_0x37df('0x2')]},'agententerreason':{'type':Sequelize[_0x37df('0x4')],'defaultValue':0x0}};
\ No newline at end of file
index 3b67322..c0dce6d 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(_0x2aea9e,_0x1f587f){var _0x430b92=function(_0x416c37){while(--_0x416c37){_0x2aea9e['push'](_0x2aea9e['shift']());}};_0x430b92(++_0x1f587f);}(_0xa9e0,0x123));var _0x0a9e=function(_0xf50820,_0x56f041){_0xf50820=_0xf50820-0x0;var _0x2a9b10=_0xa9e0[_0xf50820];return _0x2a9b10;};'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(_0x1cc8fe,_0x105328){var _0x230054=function(_0x1a1b56){while(--_0x1a1b56){_0x1cc8fe['push'](_0x1cc8fe['shift']());}};_0x230054(++_0x105328);}(_0xa9e0,0x123));var _0x0a9e=function(_0x54d4fe,_0x55e869){_0x54d4fe=_0x54d4fe-0x0;var _0x1ab5bb=_0xa9e0[_0x54d4fe];return _0x1ab5bb;};'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 0ebb021..d9fd5a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7cf=['path','rimraf','../../config/environment','./voiceAgentReport.attributes','exports','define','VoiceAgentReport','report_agent','uniqueid','destuniqueid','lodash','util','../../config/logger','api','moment','request-promise'];(function(_0x238671,_0x34aea0){var _0x474844=function(_0x26cab4){while(--_0x26cab4){_0x238671['push'](_0x238671['shift']());}};_0x474844(++_0x34aea0);}(_0xb7cf,0xca));var _0xfb7c=function(_0x2f0496,_0x1b9148){_0x2f0496=_0x2f0496-0x0;var _0x4969df=_0xb7cf[_0x2f0496];return _0x4969df;};'use strict';var _=require(_0xfb7c('0x0'));var util=require(_0xfb7c('0x1'));var logger=require(_0xfb7c('0x2'))(_0xfb7c('0x3'));var moment=require(_0xfb7c('0x4'));var BPromise=require('bluebird');var rp=require(_0xfb7c('0x5'));var fs=require('fs');var path=require(_0xfb7c('0x6'));var rimraf=require(_0xfb7c('0x7'));var config=require(_0xfb7c('0x8'));var attributes=require(_0xfb7c('0x9'));module[_0xfb7c('0xa')]=function(_0x2e245c,_0x135394){return _0x2e245c[_0xfb7c('0xb')](_0xfb7c('0xc'),attributes,{'tableName':_0xfb7c('0xd'),'paranoid':![],'indexes':[{'fields':[_0xfb7c('0xe'),_0xfb7c('0xf')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x06f4=['api','moment','path','../../config/environment','./voiceAgentReport.attributes','exports','define','report_agent','uniqueid','destuniqueid','lodash','util'];(function(_0x2e4373,_0x29cb7f){var _0x333855=function(_0x242789){while(--_0x242789){_0x2e4373['push'](_0x2e4373['shift']());}};_0x333855(++_0x29cb7f);}(_0x06f4,0x136));var _0x406f=function(_0x1ad0c5,_0x3b86f9){_0x1ad0c5=_0x1ad0c5-0x0;var _0x39873f=_0x06f4[_0x1ad0c5];return _0x39873f;};'use strict';var _=require(_0x406f('0x0'));var util=require(_0x406f('0x1'));var logger=require('../../config/logger')(_0x406f('0x2'));var moment=require(_0x406f('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x406f('0x4'));var rimraf=require('rimraf');var config=require(_0x406f('0x5'));var attributes=require(_0x406f('0x6'));module[_0x406f('0x7')]=function(_0x32b2bd,_0x59821c){return _0x32b2bd[_0x406f('0x8')]('VoiceAgentReport',attributes,{'tableName':_0x406f('0x9'),'paranoid':![],'indexes':[{'fields':[_0x406f('0xa'),_0x406f('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 23b6c0c..1796e93 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb41f=['options','raw','update','attributes','limit','UpdateVoiceAgentReport','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','VoiceAgentReport,\x20%s,\x20%s','debug','VoiceAgentReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','CreateVoiceAgentReport','VoiceAgentReport','create'];(function(_0x142827,_0x256ff7){var _0x27de3f=function(_0xf82c65){while(--_0xf82c65){_0x142827['push'](_0x142827['shift']());}};_0x27de3f(++_0x256ff7);}(_0xb41f,0xcc));var _0xfb41=function(_0xaed159,_0x3f96ac){_0xaed159=_0xaed159-0x0;var _0x4fdae1=_0xb41f[_0xaed159];return _0x4fdae1;};'use strict';var _=require(_0xfb41('0x0'));var util=require(_0xfb41('0x1'));var moment=require(_0xfb41('0x2'));var BPromise=require(_0xfb41('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xfb41('0x4'))['db'];var utils=require(_0xfb41('0x5'));var logger=require(_0xfb41('0x6'))(_0xfb41('0x7'));var config=require(_0xfb41('0x8'));var jayson=require(_0xfb41('0x9'));var client=jayson[_0xfb41('0xa')][_0xfb41('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x231245,_0x23e2da,_0x4db462){return new BPromise(function(_0x5a8774,_0x281086){return client[_0xfb41('0xc')](_0x231245,_0x4db462)[_0xfb41('0xd')](function(_0x3a8a8b){logger[_0xfb41('0xe')](_0xfb41('0xf'),_0x23e2da,'request\x20sent');logger[_0xfb41('0x10')](_0xfb41('0x11'),_0x23e2da,_0xfb41('0x12'),JSON[_0xfb41('0x13')](_0x3a8a8b));if(_0x3a8a8b[_0xfb41('0x14')]){if(_0x3a8a8b['error'][_0xfb41('0x15')]===0x1f4){logger[_0xfb41('0x14')](_0xfb41('0xf'),_0x23e2da,_0x3a8a8b[_0xfb41('0x14')][_0xfb41('0x16')]);return _0x281086(_0x3a8a8b['error'][_0xfb41('0x16')]);}logger[_0xfb41('0x14')](_0xfb41('0xf'),_0x23e2da,_0x3a8a8b['error'][_0xfb41('0x16')]);return _0x5a8774(_0x3a8a8b['error'][_0xfb41('0x16')]);}else{logger[_0xfb41('0xe')](_0xfb41('0xf'),_0x23e2da,_0xfb41('0x12'));_0x5a8774(_0x3a8a8b['result'][_0xfb41('0x16')]);}})[_0xfb41('0x17')](function(_0x5781c6){logger[_0xfb41('0x14')]('VoiceAgentReport,\x20%s,\x20%s',_0x23e2da,_0x5781c6);_0x281086(_0x5781c6);});});}exports[_0xfb41('0x18')]=function(_0x23be52){var _0x38e0d5=this;return new Promise(function(_0x173fb8,_0x4150a9){return db[_0xfb41('0x19')][_0xfb41('0x1a')](_0x23be52['body'],{'raw':_0x23be52[_0xfb41('0x1b')]?_0x23be52[_0xfb41('0x1b')][_0xfb41('0x1c')]===undefined?!![]:![]:!![]})[_0xfb41('0xd')](function(_0x3663a2){logger[_0xfb41('0xe')](_0xfb41('0x18'),_0x23be52);logger[_0xfb41('0x10')](_0xfb41('0x18'),_0x23be52,JSON['stringify'](_0x3663a2));_0x173fb8(_0x3663a2);})['catch'](function(_0x28b974){logger[_0xfb41('0x14')](_0xfb41('0x18'),_0x28b974[_0xfb41('0x16')],_0x23be52);_0x4150a9(_0x38e0d5[_0xfb41('0x14')](0x1f4,_0x28b974[_0xfb41('0x16')]));});});};exports['UpdateVoiceAgentReport']=function(_0x159808){var _0x2125c9=this;return new Promise(function(_0x3ee8ee,_0x37f827){return db[_0xfb41('0x19')][_0xfb41('0x1d')](_0x159808['body'],{'raw':_0x159808[_0xfb41('0x1b')]?_0x159808['options'][_0xfb41('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x159808[_0xfb41('0x1b')]?_0x159808[_0xfb41('0x1b')]['where']||null:null,'attributes':_0x159808[_0xfb41('0x1b')]?_0x159808[_0xfb41('0x1b')][_0xfb41('0x1e')]||null:null,'limit':_0x159808[_0xfb41('0x1b')]?_0x159808[_0xfb41('0x1b')][_0xfb41('0x1f')]||null:null})[_0xfb41('0xd')](function(_0x1ba322){logger['info']('UpdateVoiceAgentReport',_0x159808);logger[_0xfb41('0x10')](_0xfb41('0x20'),_0x159808,JSON[_0xfb41('0x13')](_0x1ba322));_0x3ee8ee(_0x1ba322);})[_0xfb41('0x17')](function(_0x59e9af){logger[_0xfb41('0x14')](_0xfb41('0x20'),_0x59e9af[_0xfb41('0x16')],_0x159808);_0x37f827(_0x2125c9['error'](0x1f4,_0x59e9af['message']));});});};
\ No newline at end of file
+var _0x8dc4=['CreateVoiceAgentReport','VoiceAgentReport','create','body','options','raw','then','stringify','UpdateVoiceAgentReport','update','where','attributes','lodash','util','moment','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','info','VoiceAgentReport,\x20%s,\x20%s','request\x20sent','debug','VoiceAgentReport,\x20%s,\x20%s,\x20%s','error','code','message','catch'];(function(_0x4ada53,_0x2fa605){var _0x2ee391=function(_0x9af55a){while(--_0x9af55a){_0x4ada53['push'](_0x4ada53['shift']());}};_0x2ee391(++_0x2fa605);}(_0x8dc4,0xa7));var _0x48dc=function(_0x32acd6,_0x2547b0){_0x32acd6=_0x32acd6-0x0;var _0x386a41=_0x8dc4[_0x32acd6];return _0x386a41;};'use strict';var _=require(_0x48dc('0x0'));var util=require(_0x48dc('0x1'));var moment=require(_0x48dc('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x48dc('0x3'));var db=require(_0x48dc('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x48dc('0x5'))(_0x48dc('0x6'));var config=require(_0x48dc('0x7'));var jayson=require(_0x48dc('0x8'));var client=jayson[_0x48dc('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4345f6,_0x3f61e1,_0x52d74e){return new BPromise(function(_0x8e3da5,_0x562f9b){return client['request'](_0x4345f6,_0x52d74e)['then'](function(_0x3d76bb){logger[_0x48dc('0xa')](_0x48dc('0xb'),_0x3f61e1,_0x48dc('0xc'));logger[_0x48dc('0xd')](_0x48dc('0xe'),_0x3f61e1,_0x48dc('0xc'),JSON['stringify'](_0x3d76bb));if(_0x3d76bb[_0x48dc('0xf')]){if(_0x3d76bb[_0x48dc('0xf')][_0x48dc('0x10')]===0x1f4){logger[_0x48dc('0xf')](_0x48dc('0xb'),_0x3f61e1,_0x3d76bb[_0x48dc('0xf')][_0x48dc('0x11')]);return _0x562f9b(_0x3d76bb[_0x48dc('0xf')][_0x48dc('0x11')]);}logger[_0x48dc('0xf')](_0x48dc('0xb'),_0x3f61e1,_0x3d76bb['error']['message']);return _0x8e3da5(_0x3d76bb['error'][_0x48dc('0x11')]);}else{logger[_0x48dc('0xa')](_0x48dc('0xb'),_0x3f61e1,'request\x20sent');_0x8e3da5(_0x3d76bb['result'][_0x48dc('0x11')]);}})[_0x48dc('0x12')](function(_0x47e358){logger[_0x48dc('0xf')](_0x48dc('0xb'),_0x3f61e1,_0x47e358);_0x562f9b(_0x47e358);});});}exports[_0x48dc('0x13')]=function(_0x5f3b16){var _0x48752c=this;return new Promise(function(_0x42e298,_0x13252d){return db[_0x48dc('0x14')][_0x48dc('0x15')](_0x5f3b16[_0x48dc('0x16')],{'raw':_0x5f3b16[_0x48dc('0x17')]?_0x5f3b16[_0x48dc('0x17')][_0x48dc('0x18')]===undefined?!![]:![]:!![]})[_0x48dc('0x19')](function(_0xdf44a0){logger[_0x48dc('0xa')](_0x48dc('0x13'),_0x5f3b16);logger[_0x48dc('0xd')](_0x48dc('0x13'),_0x5f3b16,JSON[_0x48dc('0x1a')](_0xdf44a0));_0x42e298(_0xdf44a0);})['catch'](function(_0x1107b8){logger['error'](_0x48dc('0x13'),_0x1107b8['message'],_0x5f3b16);_0x13252d(_0x48752c[_0x48dc('0xf')](0x1f4,_0x1107b8[_0x48dc('0x11')]));});});};exports[_0x48dc('0x1b')]=function(_0x3a9275){var _0xec95af=this;return new Promise(function(_0x4ce949,_0x480a4e){return db[_0x48dc('0x14')][_0x48dc('0x1c')](_0x3a9275[_0x48dc('0x16')],{'raw':_0x3a9275[_0x48dc('0x17')]?_0x3a9275[_0x48dc('0x17')][_0x48dc('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3a9275[_0x48dc('0x17')]?_0x3a9275[_0x48dc('0x17')][_0x48dc('0x1d')]||null:null,'attributes':_0x3a9275['options']?_0x3a9275[_0x48dc('0x17')][_0x48dc('0x1e')]||null:null,'limit':_0x3a9275[_0x48dc('0x17')]?_0x3a9275[_0x48dc('0x17')]['limit']||null:null})[_0x48dc('0x19')](function(_0x2510e3){logger[_0x48dc('0xa')](_0x48dc('0x1b'),_0x3a9275);logger[_0x48dc('0xd')](_0x48dc('0x1b'),_0x3a9275,JSON[_0x48dc('0x1a')](_0x2510e3));_0x4ce949(_0x2510e3);})[_0x48dc('0x12')](function(_0x42827d){logger[_0x48dc('0xf')](_0x48dc('0x1b'),_0x42827d['message'],_0x3a9275);_0x480a4e(_0xec95af[_0x48dc('0xf')](0x1f4,_0x42827d[_0x48dc('0x11')]));});});};
\ No newline at end of file
index 2fee3bf..70d8601 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x57d4=['../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceCallReport.controller','get','isAuthenticated','index','/describe','/:id','show','put','update','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra'];(function(_0x32d457,_0x1a39c9){var _0x338386=function(_0x199d7a){while(--_0x199d7a){_0x32d457['push'](_0x32d457['shift']());}};_0x338386(++_0x1a39c9);}(_0x57d4,0x78));var _0x457d=function(_0x2b74fa,_0x58d1d1){_0x2b74fa=_0x2b74fa-0x0;var _0x3c9fd4=_0x57d4[_0x2b74fa];return _0x3c9fd4;};'use strict';var multer=require(_0x457d('0x0'));var util=require(_0x457d('0x1'));var path=require('path');var timeout=require(_0x457d('0x2'));var express=require(_0x457d('0x3'));var router=express[_0x457d('0x4')]();var fs_extra=require(_0x457d('0x5'));var auth=require(_0x457d('0x6'));var interaction=require(_0x457d('0x7'));var config=require(_0x457d('0x8'));var controller=require(_0x457d('0x9'));router[_0x457d('0xa')]('/',auth[_0x457d('0xb')](),controller[_0x457d('0xc')]);router['get'](_0x457d('0xd'),auth[_0x457d('0xb')](),controller['describe']);router['get'](_0x457d('0xe'),auth[_0x457d('0xb')](),controller[_0x457d('0xf')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0x457d('0x10')](_0x457d('0xe'),auth[_0x457d('0xb')](),controller[_0x457d('0x11')]);router[_0x457d('0x12')](_0x457d('0xe'),auth[_0x457d('0xb')](),controller[_0x457d('0x13')]);module[_0x457d('0x14')]=router;
\ No newline at end of file
+var _0xbd50=['path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','isAuthenticated','index','get','/describe','/:id','show','create','delete','exports','multer','util'];(function(_0x13b8f3,_0x442821){var _0x1a6d06=function(_0x5126f2){while(--_0x5126f2){_0x13b8f3['push'](_0x13b8f3['shift']());}};_0x1a6d06(++_0x442821);}(_0xbd50,0x196));var _0x0bd5=function(_0x5c9f19,_0x51d86c){_0x5c9f19=_0x5c9f19-0x0;var _0x1998ca=_0xbd50[_0x5c9f19];return _0x1998ca;};'use strict';var multer=require(_0x0bd5('0x0'));var util=require(_0x0bd5('0x1'));var path=require(_0x0bd5('0x2'));var timeout=require('connect-timeout');var express=require(_0x0bd5('0x3'));var router=express[_0x0bd5('0x4')]();var fs_extra=require(_0x0bd5('0x5'));var auth=require(_0x0bd5('0x6'));var interaction=require(_0x0bd5('0x7'));var config=require('../../config/environment');var controller=require('./voiceCallReport.controller');router['get']('/',auth[_0x0bd5('0x8')](),controller[_0x0bd5('0x9')]);router[_0x0bd5('0xa')](_0x0bd5('0xb'),auth[_0x0bd5('0x8')](),controller['describe']);router['get'](_0x0bd5('0xc'),auth[_0x0bd5('0x8')](),controller[_0x0bd5('0xd')]);router['post']('/',auth[_0x0bd5('0x8')](),controller[_0x0bd5('0xe')]);router['put'](_0x0bd5('0xc'),auth[_0x0bd5('0x8')](),controller['update']);router[_0x0bd5('0xf')](_0x0bd5('0xc'),auth[_0x0bd5('0x8')](),controller['destroy']);module[_0x0bd5('0x10')]=router;
\ No newline at end of file
index f55a5df..f1e9e93 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc50c=['exports','STRING','ENUM','inbound','internal','outbound','inbound-fax','outbound-fax','dialer','TEXT','DATE','INTEGER','sequelize'];(function(_0x29402d,_0x10b9f5){var _0x231067=function(_0x119f48){while(--_0x119f48){_0x29402d['push'](_0x29402d['shift']());}};_0x231067(++_0x10b9f5);}(_0xc50c,0x11d));var _0xcc50=function(_0x12fc8d,_0x19ee33){_0x12fc8d=_0x12fc8d-0x0;var _0x3f9d04=_0xc50c[_0x12fc8d];return _0x3f9d04;};'use strict';var Sequelize=require(_0xcc50('0x0'));module[_0xcc50('0x1')]={'uniqueid':{'type':Sequelize[_0xcc50('0x2')]},'type':{'type':Sequelize[_0xcc50('0x3')](_0xcc50('0x4'),_0xcc50('0x5'),_0xcc50('0x6'),_0xcc50('0x7'),_0xcc50('0x8'),_0xcc50('0x9'))},'tag':{'type':Sequelize[_0xcc50('0x2')]},'accountcode':{'type':Sequelize[_0xcc50('0x2')]},'source':{'type':Sequelize['STRING']},'destination':{'type':Sequelize[_0xcc50('0x2')]},'destinationcontext':{'type':Sequelize[_0xcc50('0x2')]},'callerid':{'type':Sequelize[_0xcc50('0x2')]},'channel':{'type':Sequelize[_0xcc50('0x2')]},'destinationchannel':{'type':Sequelize[_0xcc50('0x2')]},'lastapplication':{'type':Sequelize['STRING']},'lastdata':{'type':Sequelize[_0xcc50('0xa')]},'starttime':{'type':Sequelize[_0xcc50('0xb')]},'systemanswertime':{'type':Sequelize[_0xcc50('0xb')]},'answertime':{'type':Sequelize[_0xcc50('0xb')]},'endtime':{'type':Sequelize[_0xcc50('0xb')]},'duration':{'type':Sequelize[_0xcc50('0xc')]},'billableseconds':{'type':Sequelize['INTEGER']},'mohtime':{'type':Sequelize[_0xcc50('0xc')],'defaultValue':0x0},'disposition':{'type':Sequelize[_0xcc50('0x2')]},'amaflags':{'type':Sequelize[_0xcc50('0x2')]},'userfield':{'type':Sequelize[_0xcc50('0x2')]},'userDisposition':{'type':Sequelize[_0xcc50('0x2')]},'userSecondDisposition':{'type':Sequelize[_0xcc50('0x2')]},'userThirdDisposition':{'type':Sequelize[_0xcc50('0x2')]},'note':{'type':Sequelize[_0xcc50('0x2')]},'prefix':{'type':Sequelize[_0xcc50('0x2')]},'routeid':{'type':Sequelize[_0xcc50('0xc')]},'sipcallid':{'type':Sequelize[_0xcc50('0x2')]}};
\ No newline at end of file
+var _0xc30f=['exports','STRING','ENUM','inbound','internal','inbound-fax','outbound-fax','TEXT','DATE','INTEGER','sequelize'];(function(_0x1cccfe,_0x222884){var _0x34de1a=function(_0x62fdf2){while(--_0x62fdf2){_0x1cccfe['push'](_0x1cccfe['shift']());}};_0x34de1a(++_0x222884);}(_0xc30f,0x1a1));var _0xfc30=function(_0xf10840,_0xad3916){_0xf10840=_0xf10840-0x0;var _0x1fdf7e=_0xc30f[_0xf10840];return _0x1fdf7e;};'use strict';var Sequelize=require(_0xfc30('0x0'));module[_0xfc30('0x1')]={'uniqueid':{'type':Sequelize[_0xfc30('0x2')]},'type':{'type':Sequelize[_0xfc30('0x3')](_0xfc30('0x4'),_0xfc30('0x5'),'outbound',_0xfc30('0x6'),_0xfc30('0x7'),'dialer')},'tag':{'type':Sequelize[_0xfc30('0x2')]},'accountcode':{'type':Sequelize['STRING']},'source':{'type':Sequelize['STRING']},'destination':{'type':Sequelize['STRING']},'destinationcontext':{'type':Sequelize[_0xfc30('0x2')]},'callerid':{'type':Sequelize[_0xfc30('0x2')]},'channel':{'type':Sequelize[_0xfc30('0x2')]},'destinationchannel':{'type':Sequelize[_0xfc30('0x2')]},'lastapplication':{'type':Sequelize[_0xfc30('0x2')]},'lastdata':{'type':Sequelize[_0xfc30('0x8')]},'starttime':{'type':Sequelize[_0xfc30('0x9')]},'systemanswertime':{'type':Sequelize[_0xfc30('0x9')]},'answertime':{'type':Sequelize[_0xfc30('0x9')]},'endtime':{'type':Sequelize[_0xfc30('0x9')]},'duration':{'type':Sequelize[_0xfc30('0xa')]},'billableseconds':{'type':Sequelize['INTEGER']},'mohtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'disposition':{'type':Sequelize[_0xfc30('0x2')]},'amaflags':{'type':Sequelize[_0xfc30('0x2')]},'userfield':{'type':Sequelize[_0xfc30('0x2')]},'userDisposition':{'type':Sequelize[_0xfc30('0x2')]},'userSecondDisposition':{'type':Sequelize[_0xfc30('0x2')]},'userThirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0xfc30('0x2')]},'prefix':{'type':Sequelize[_0xfc30('0x2')]},'routeid':{'type':Sequelize[_0xfc30('0xa')]},'sipcallid':{'type':Sequelize[_0xfc30('0x2')]}};
\ No newline at end of file
index b5441e1..2712b4a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2032=['../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','then','destroy','sendStatus','error','stack','name','send','index','map','VoiceCallReport','fieldName','type','key','query','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','pick','filters','filter','merge','where','options','alias','User','rows','catch','show','params','keys','rawAttributes','includeAll','include','create','body','find','describe','uniqueid','user','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x2032,0xd9));var _0x2203=function(_0x2534fa,_0x116f41){_0x2534fa=_0x2534fa-0x0;var _0x46f7da=_0x2032[_0x2534fa];return _0x46f7da;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2203('0x0'));var zipdir=require(_0x2203('0x1'));var jsonpatch=require(_0x2203('0x2'));var rp=require('request-promise');var moment=require(_0x2203('0x3'));var BPromise=require(_0x2203('0x4'));var Mustache=require('mustache');var util=require(_0x2203('0x5'));var path=require(_0x2203('0x6'));var sox=require(_0x2203('0x7'));var csv=require(_0x2203('0x8'));var ejs=require(_0x2203('0x9'));var fs=require('fs');var fs_extra=require(_0x2203('0xa'));var _=require(_0x2203('0xb'));var squel=require(_0x2203('0xc'));var crypto=require(_0x2203('0xd'));var jsforce=require(_0x2203('0xe'));var deskjs=require(_0x2203('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x2203('0x10'));var Redis=require('ioredis');var authService=require(_0x2203('0x11'));var qs=require(_0x2203('0x12'));var as=require(_0x2203('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x2203('0x14'))('api');var utils=require(_0x2203('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x2203('0x16'));var db=require(_0x2203('0x17'))['db'];function respondWithStatusCode(_0x4b9376,_0x583bc7){_0x583bc7=_0x583bc7||0xcc;return function(_0x585c76){if(_0x585c76){return _0x4b9376['sendStatus'](_0x583bc7);}return _0x4b9376['status'](_0x583bc7)[_0x2203('0x18')]();};}function respondWithResult(_0x538b30,_0x592e47){_0x592e47=_0x592e47||0xc8;return function(_0x21a3af){if(_0x21a3af){return _0x538b30[_0x2203('0x19')](_0x592e47)[_0x2203('0x1a')](_0x21a3af);}};}function respondWithFilteredResult(_0x41af85,_0x226209){return function(_0x3fe0a8){if(_0x3fe0a8){var _0x2c36e6=typeof _0x226209[_0x2203('0x1b')]===_0x2203('0x1c')&&typeof _0x226209[_0x2203('0x1d')]==='undefined';var _0x280eda=_0x3fe0a8[_0x2203('0x1e')];var _0x4893ff=_0x2c36e6?0x0:_0x226209[_0x2203('0x1b')];var _0x8906e1=_0x2c36e6?_0x3fe0a8['count']:_0x226209[_0x2203('0x1b')]+_0x226209['limit'];var _0x2904ba;if(_0x8906e1>=_0x280eda){_0x8906e1=_0x280eda;_0x2904ba=0xc8;}else{_0x2904ba=0xce;}_0x41af85[_0x2203('0x19')](_0x2904ba);return _0x41af85[_0x2203('0x1f')](_0x2203('0x20'),_0x4893ff+'-'+_0x8906e1+'/'+_0x280eda)[_0x2203('0x1a')](_0x3fe0a8);}return null;};}function patchUpdates(_0x449039){return function(_0x538c23){try{jsonpatch[_0x2203('0x21')](_0x538c23,_0x449039,!![]);}catch(_0x50822b){return BPromise['reject'](_0x50822b);}return _0x538c23[_0x2203('0x22')]();};}function saveUpdates(_0x496d82,_0x3b8ef9){return function(_0x5bfe61){if(_0x5bfe61){return _0x5bfe61['update'](_0x496d82)[_0x2203('0x23')](function(_0x5e29cd){return _0x5e29cd;});}return null;};}function removeEntity(_0x5c8da9,_0x226374){return function(_0x2718f5){if(_0x2718f5){return _0x2718f5[_0x2203('0x24')]()[_0x2203('0x23')](function(){_0x5c8da9[_0x2203('0x19')](0xcc)[_0x2203('0x18')]();});}};}function handleEntityNotFound(_0x49c12,_0x250349){return function(_0x576378){if(!_0x576378){_0x49c12[_0x2203('0x25')](0x194);}return _0x576378;};}function handleError(_0x36b958,_0x39a11a){_0x39a11a=_0x39a11a||0x1f4;return function(_0x5f11bf){logger[_0x2203('0x26')](_0x5f11bf[_0x2203('0x27')]);if(_0x5f11bf['name']){delete _0x5f11bf[_0x2203('0x28')];}_0x36b958[_0x2203('0x19')](_0x39a11a)[_0x2203('0x29')](_0x5f11bf);};}exports[_0x2203('0x2a')]=function(_0x28ae02,_0x1df508){var _0x9c53f={},_0x5a95c1={},_0x34b8ba={'count':0x0,'rows':[]};var _0x616ed8=_[_0x2203('0x2b')](db[_0x2203('0x2c')]['rawAttributes'],function(_0x3a8e23){return{'name':_0x3a8e23[_0x2203('0x2d')],'type':_0x3a8e23[_0x2203('0x2e')][_0x2203('0x2f')]};});_0x5a95c1['model']=_[_0x2203('0x2b')](_0x616ed8,_0x2203('0x28'));_0x5a95c1['query']=_['keys'](_0x28ae02[_0x2203('0x30')]);_0x5a95c1['filters']=_['intersection'](_0x5a95c1[_0x2203('0x31')],_0x5a95c1[_0x2203('0x30')]);_0x9c53f[_0x2203('0x32')]=_[_0x2203('0x33')](_0x5a95c1[_0x2203('0x31')],qs['fields'](_0x28ae02[_0x2203('0x30')][_0x2203('0x34')]));_0x9c53f['attributes']=_0x9c53f[_0x2203('0x32')][_0x2203('0x35')]?_0x9c53f[_0x2203('0x32')]:_0x5a95c1[_0x2203('0x31')];if(!_0x28ae02[_0x2203('0x30')][_0x2203('0x36')](_0x2203('0x37'))){_0x9c53f[_0x2203('0x1d')]=qs[_0x2203('0x1d')](_0x28ae02['query'][_0x2203('0x1d')]);_0x9c53f[_0x2203('0x1b')]=qs['offset'](_0x28ae02['query'][_0x2203('0x1b')]);}_0x9c53f['order']=qs[_0x2203('0x38')](_0x28ae02[_0x2203('0x30')][_0x2203('0x38')]);_0x9c53f['where']=qs['filters'](_[_0x2203('0x39')](_0x28ae02['query'],_0x5a95c1[_0x2203('0x3a')]),_0x616ed8);if(_0x28ae02['query'][_0x2203('0x3b')]){_0x9c53f['where']=_[_0x2203('0x3c')](_0x9c53f[_0x2203('0x3d')],{'$or':_[_0x2203('0x2b')](_0x616ed8,function(_0x40a793){if(_0x40a793[_0x2203('0x2e')]!=='VIRTUAL'){var _0x5f1561={};_0x5f1561[_0x40a793['name']]={'$like':'%'+_0x28ae02[_0x2203('0x30')][_0x2203('0x3b')]+'%'};return _0x5f1561;}})});}_0x9c53f=_[_0x2203('0x3c')]({},_0x9c53f,_0x28ae02[_0x2203('0x3e')]);var _0x3283fb={'where':_0x9c53f[_0x2203('0x3d')]};return db[_0x2203('0x2c')]['count'](_0x3283fb)[_0x2203('0x23')](function(_0x1b12c3){_0x34b8ba[_0x2203('0x1e')]=_0x1b12c3;if(_0x28ae02[_0x2203('0x30')]['includeAll']){_0x9c53f['include']=[{'attributes':['id',_0x2203('0x28'),'fullname',_0x2203('0x3f')],'model':db[_0x2203('0x40')],'as':_0x2203('0x40')}];}return db['VoiceCallReport']['findAll'](_0x9c53f);})[_0x2203('0x23')](function(_0x3739f6){_0x34b8ba[_0x2203('0x41')]=_0x3739f6;return _0x34b8ba;})[_0x2203('0x23')](respondWithFilteredResult(_0x1df508,_0x9c53f))[_0x2203('0x42')](handleError(_0x1df508,null));};exports[_0x2203('0x43')]=function(_0x5cd573,_0x15d3b6){var _0x165a3f={'raw':!![],'where':{'id':_0x5cd573[_0x2203('0x44')]['id']}},_0x3a866c={};_0x3a866c[_0x2203('0x31')]=_[_0x2203('0x45')](db[_0x2203('0x2c')][_0x2203('0x46')]);_0x3a866c[_0x2203('0x30')]=_[_0x2203('0x45')](_0x5cd573['query']);_0x3a866c[_0x2203('0x3a')]=_[_0x2203('0x33')](_0x3a866c[_0x2203('0x31')],_0x3a866c[_0x2203('0x30')]);_0x165a3f['attributes']=_['intersection'](_0x3a866c[_0x2203('0x31')],qs['fields'](_0x5cd573[_0x2203('0x30')][_0x2203('0x34')]));_0x165a3f[_0x2203('0x32')]=_0x165a3f[_0x2203('0x32')]['length']?_0x165a3f[_0x2203('0x32')]:_0x3a866c[_0x2203('0x31')];if(_0x5cd573['query'][_0x2203('0x47')]){_0x165a3f[_0x2203('0x48')]=[{'all':!![]}];}_0x165a3f=_[_0x2203('0x3c')]({},_0x165a3f,_0x5cd573[_0x2203('0x3e')]);return db['VoiceCallReport']['find'](_0x165a3f)[_0x2203('0x23')](handleEntityNotFound(_0x15d3b6,null))['then'](respondWithResult(_0x15d3b6,null))['catch'](handleError(_0x15d3b6,null));};exports[_0x2203('0x49')]=function(_0x33b7b5,_0x1a2665){return db['VoiceCallReport']['create'](_0x33b7b5[_0x2203('0x4a')],{})[_0x2203('0x23')](respondWithResult(_0x1a2665,0xc9))[_0x2203('0x42')](handleError(_0x1a2665,null));};exports[_0x2203('0x24')]=function(_0x225b0e,_0x21fd78){return db['VoiceCallReport'][_0x2203('0x4b')]({'where':{'id':_0x225b0e['params']['id']}})[_0x2203('0x23')](handleEntityNotFound(_0x21fd78,null))[_0x2203('0x23')](removeEntity(_0x21fd78,null))[_0x2203('0x42')](handleError(_0x21fd78,null));};exports[_0x2203('0x4c')]=function(_0x58b9bb,_0x506795){return db[_0x2203('0x2c')][_0x2203('0x4c')]()[_0x2203('0x23')](respondWithResult(_0x506795,null))[_0x2203('0x42')](handleError(_0x506795,null));};exports['update']=function(_0x4de47a,_0x49999a){if(_0x4de47a[_0x2203('0x4a')][_0x2203('0x4d')]){delete _0x4de47a['body'][_0x2203('0x4d')];}return db[_0x2203('0x2c')]['find']({'where':{'uniqueid':_0x4de47a[_0x2203('0x44')]['id'],'UserId':{'$or':[null,_0x4de47a[_0x2203('0x4e')]['id']]}}})[_0x2203('0x23')](handleEntityNotFound(_0x49999a,null))[_0x2203('0x23')](saveUpdates(_0x4de47a['body'],null))[_0x2203('0x23')](respondWithResult(_0x49999a,null))['catch'](handleError(_0x49999a,null));};
\ No newline at end of file
+var _0xdb28=['options','includeAll','fullname','User','findAll','rows','catch','show','params','rawAttributes','intersection','include','find','create','destroy','describe','body','uniqueid','user','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','count','limit','set','apply','save','update','then','sendStatus','error','stack','name','send','index','VoiceCallReport','fieldName','type','key','map','query','keys','model','fields','attributes','length','nolimit','order','sort','filters','filter','where','VIRTUAL','merge'];(function(_0xdabaca,_0xac446b){var _0x59dd93=function(_0x29ab46){while(--_0x29ab46){_0xdabaca['push'](_0xdabaca['shift']());}};_0x59dd93(++_0xac446b);}(_0xdb28,0x106));var _0x8db2=function(_0x16c8e1,_0x369313){_0x16c8e1=_0x16c8e1-0x0;var _0x43a6f1=_0xdb28[_0x16c8e1];return _0x43a6f1;};'use strict';var emlformat=require(_0x8db2('0x0'));var rimraf=require(_0x8db2('0x1'));var zipdir=require(_0x8db2('0x2'));var jsonpatch=require(_0x8db2('0x3'));var rp=require('request-promise');var moment=require(_0x8db2('0x4'));var BPromise=require(_0x8db2('0x5'));var Mustache=require(_0x8db2('0x6'));var util=require(_0x8db2('0x7'));var path=require(_0x8db2('0x8'));var sox=require('sox');var csv=require(_0x8db2('0x9'));var ejs=require(_0x8db2('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x8db2('0xb'));var crypto=require(_0x8db2('0xc'));var jsforce=require(_0x8db2('0xd'));var deskjs=require(_0x8db2('0xe'));var toCsv=require(_0x8db2('0x9'));var querystring=require(_0x8db2('0xf'));var Papa=require(_0x8db2('0x10'));var Redis=require('ioredis');var authService=require(_0x8db2('0x11'));var qs=require(_0x8db2('0x12'));var as=require(_0x8db2('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x8db2('0x14'))(_0x8db2('0x15'));var utils=require('../../config/utils');var config=require(_0x8db2('0x16'));var licenseUtil=require(_0x8db2('0x17'));var db=require(_0x8db2('0x18'))['db'];function respondWithStatusCode(_0x204f49,_0x37d017){_0x37d017=_0x37d017||0xcc;return function(_0x559fb1){if(_0x559fb1){return _0x204f49['sendStatus'](_0x37d017);}return _0x204f49[_0x8db2('0x19')](_0x37d017)[_0x8db2('0x1a')]();};}function respondWithResult(_0x350d61,_0x1d6a15){_0x1d6a15=_0x1d6a15||0xc8;return function(_0x227355){if(_0x227355){return _0x350d61[_0x8db2('0x19')](_0x1d6a15)[_0x8db2('0x1b')](_0x227355);}};}function respondWithFilteredResult(_0x3c96a7,_0x131252){return function(_0x16c8c2){if(_0x16c8c2){var _0x5489a9=typeof _0x131252[_0x8db2('0x1c')]===_0x8db2('0x1d')&&typeof _0x131252['limit']===_0x8db2('0x1d');var _0x44957d=_0x16c8c2[_0x8db2('0x1e')];var _0x3fddc2=_0x5489a9?0x0:_0x131252[_0x8db2('0x1c')];var _0x46ce14=_0x5489a9?_0x16c8c2['count']:_0x131252['offset']+_0x131252[_0x8db2('0x1f')];var _0x104e33;if(_0x46ce14>=_0x44957d){_0x46ce14=_0x44957d;_0x104e33=0xc8;}else{_0x104e33=0xce;}_0x3c96a7[_0x8db2('0x19')](_0x104e33);return _0x3c96a7[_0x8db2('0x20')]('Content-Range',_0x3fddc2+'-'+_0x46ce14+'/'+_0x44957d)[_0x8db2('0x1b')](_0x16c8c2);}return null;};}function patchUpdates(_0x36a9ff){return function(_0x260940){try{jsonpatch[_0x8db2('0x21')](_0x260940,_0x36a9ff,!![]);}catch(_0x3dbe8e){return BPromise['reject'](_0x3dbe8e);}return _0x260940[_0x8db2('0x22')]();};}function saveUpdates(_0x3e30e6,_0x18f69c){return function(_0x125be2){if(_0x125be2){return _0x125be2[_0x8db2('0x23')](_0x3e30e6)[_0x8db2('0x24')](function(_0x796ec1){return _0x796ec1;});}return null;};}function removeEntity(_0x5c6614,_0x256202){return function(_0x4f6516){if(_0x4f6516){return _0x4f6516['destroy']()['then'](function(){_0x5c6614['status'](0xcc)[_0x8db2('0x1a')]();});}};}function handleEntityNotFound(_0x29b5cd,_0x3be281){return function(_0x2baed0){if(!_0x2baed0){_0x29b5cd[_0x8db2('0x25')](0x194);}return _0x2baed0;};}function handleError(_0x8d4f54,_0x58cd9d){_0x58cd9d=_0x58cd9d||0x1f4;return function(_0x3544ba){logger[_0x8db2('0x26')](_0x3544ba[_0x8db2('0x27')]);if(_0x3544ba[_0x8db2('0x28')]){delete _0x3544ba['name'];}_0x8d4f54[_0x8db2('0x19')](_0x58cd9d)[_0x8db2('0x29')](_0x3544ba);};}exports[_0x8db2('0x2a')]=function(_0x1687ed,_0xbe5ece){var _0x21bae5={},_0xa54ea3={},_0x3124d5={'count':0x0,'rows':[]};var _0xbc5366=_['map'](db[_0x8db2('0x2b')]['rawAttributes'],function(_0x59cb77){return{'name':_0x59cb77[_0x8db2('0x2c')],'type':_0x59cb77[_0x8db2('0x2d')][_0x8db2('0x2e')]};});_0xa54ea3['model']=_[_0x8db2('0x2f')](_0xbc5366,'name');_0xa54ea3[_0x8db2('0x30')]=_[_0x8db2('0x31')](_0x1687ed[_0x8db2('0x30')]);_0xa54ea3['filters']=_['intersection'](_0xa54ea3[_0x8db2('0x32')],_0xa54ea3[_0x8db2('0x30')]);_0x21bae5['attributes']=_['intersection'](_0xa54ea3[_0x8db2('0x32')],qs[_0x8db2('0x33')](_0x1687ed[_0x8db2('0x30')][_0x8db2('0x33')]));_0x21bae5[_0x8db2('0x34')]=_0x21bae5[_0x8db2('0x34')][_0x8db2('0x35')]?_0x21bae5[_0x8db2('0x34')]:_0xa54ea3[_0x8db2('0x32')];if(!_0x1687ed[_0x8db2('0x30')]['hasOwnProperty'](_0x8db2('0x36'))){_0x21bae5[_0x8db2('0x1f')]=qs['limit'](_0x1687ed[_0x8db2('0x30')][_0x8db2('0x1f')]);_0x21bae5['offset']=qs['offset'](_0x1687ed[_0x8db2('0x30')]['offset']);}_0x21bae5[_0x8db2('0x37')]=qs[_0x8db2('0x38')](_0x1687ed[_0x8db2('0x30')][_0x8db2('0x38')]);_0x21bae5['where']=qs[_0x8db2('0x39')](_['pick'](_0x1687ed[_0x8db2('0x30')],_0xa54ea3[_0x8db2('0x39')]),_0xbc5366);if(_0x1687ed[_0x8db2('0x30')][_0x8db2('0x3a')]){_0x21bae5['where']=_['merge'](_0x21bae5[_0x8db2('0x3b')],{'$or':_[_0x8db2('0x2f')](_0xbc5366,function(_0x5dc2b4){if(_0x5dc2b4[_0x8db2('0x2d')]!==_0x8db2('0x3c')){var _0x656dd2={};_0x656dd2[_0x5dc2b4['name']]={'$like':'%'+_0x1687ed[_0x8db2('0x30')][_0x8db2('0x3a')]+'%'};return _0x656dd2;}})});}_0x21bae5=_[_0x8db2('0x3d')]({},_0x21bae5,_0x1687ed[_0x8db2('0x3e')]);var _0x2e6f0c={'where':_0x21bae5[_0x8db2('0x3b')]};return db[_0x8db2('0x2b')][_0x8db2('0x1e')](_0x2e6f0c)[_0x8db2('0x24')](function(_0x63c561){_0x3124d5[_0x8db2('0x1e')]=_0x63c561;if(_0x1687ed[_0x8db2('0x30')][_0x8db2('0x3f')]){_0x21bae5['include']=[{'attributes':['id',_0x8db2('0x28'),_0x8db2('0x40'),'alias'],'model':db['User'],'as':_0x8db2('0x41')}];}return db['VoiceCallReport'][_0x8db2('0x42')](_0x21bae5);})[_0x8db2('0x24')](function(_0x313130){_0x3124d5[_0x8db2('0x43')]=_0x313130;return _0x3124d5;})[_0x8db2('0x24')](respondWithFilteredResult(_0xbe5ece,_0x21bae5))[_0x8db2('0x44')](handleError(_0xbe5ece,null));};exports[_0x8db2('0x45')]=function(_0x5c97ef,_0x2f86b1){var _0x3d44de={'raw':!![],'where':{'id':_0x5c97ef[_0x8db2('0x46')]['id']}},_0x40c69e={};_0x40c69e['model']=_[_0x8db2('0x31')](db[_0x8db2('0x2b')][_0x8db2('0x47')]);_0x40c69e[_0x8db2('0x30')]=_['keys'](_0x5c97ef[_0x8db2('0x30')]);_0x40c69e['filters']=_[_0x8db2('0x48')](_0x40c69e[_0x8db2('0x32')],_0x40c69e[_0x8db2('0x30')]);_0x3d44de['attributes']=_['intersection'](_0x40c69e[_0x8db2('0x32')],qs['fields'](_0x5c97ef[_0x8db2('0x30')][_0x8db2('0x33')]));_0x3d44de[_0x8db2('0x34')]=_0x3d44de[_0x8db2('0x34')][_0x8db2('0x35')]?_0x3d44de[_0x8db2('0x34')]:_0x40c69e[_0x8db2('0x32')];if(_0x5c97ef[_0x8db2('0x30')][_0x8db2('0x3f')]){_0x3d44de[_0x8db2('0x49')]=[{'all':!![]}];}_0x3d44de=_[_0x8db2('0x3d')]({},_0x3d44de,_0x5c97ef[_0x8db2('0x3e')]);return db['VoiceCallReport'][_0x8db2('0x4a')](_0x3d44de)[_0x8db2('0x24')](handleEntityNotFound(_0x2f86b1,null))[_0x8db2('0x24')](respondWithResult(_0x2f86b1,null))[_0x8db2('0x44')](handleError(_0x2f86b1,null));};exports['create']=function(_0x4ffd9d,_0x11c224){return db[_0x8db2('0x2b')][_0x8db2('0x4b')](_0x4ffd9d['body'],{})['then'](respondWithResult(_0x11c224,0xc9))['catch'](handleError(_0x11c224,null));};exports[_0x8db2('0x4c')]=function(_0x368c37,_0x55c7dd){return db[_0x8db2('0x2b')][_0x8db2('0x4a')]({'where':{'id':_0x368c37[_0x8db2('0x46')]['id']}})[_0x8db2('0x24')](handleEntityNotFound(_0x55c7dd,null))['then'](removeEntity(_0x55c7dd,null))['catch'](handleError(_0x55c7dd,null));};exports[_0x8db2('0x4d')]=function(_0x18c6ef,_0x2908e4){return db[_0x8db2('0x2b')][_0x8db2('0x4d')]()[_0x8db2('0x24')](respondWithResult(_0x2908e4,null))[_0x8db2('0x44')](handleError(_0x2908e4,null));};exports[_0x8db2('0x23')]=function(_0x4187d6,_0x426ae0){if(_0x4187d6[_0x8db2('0x4e')][_0x8db2('0x4f')]){delete _0x4187d6[_0x8db2('0x4e')][_0x8db2('0x4f')];}return db[_0x8db2('0x2b')]['find']({'where':{'uniqueid':_0x4187d6[_0x8db2('0x46')]['id'],'UserId':{'$or':[null,_0x4187d6[_0x8db2('0x50')]['id']]}}})['then'](handleEntityNotFound(_0x426ae0,null))[_0x8db2('0x24')](saveUpdates(_0x4187d6[_0x8db2('0x4e')],null))[_0x8db2('0x24')](respondWithResult(_0x426ae0,null))['catch'](handleError(_0x426ae0,null));};
\ No newline at end of file
index bb92397..6ce7cf0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb857=['bluebird','request-promise','path','rimraf','./voiceCallReport.attributes','exports','define','VoiceCallReport','uniqueid','lodash','util','../../config/logger'];(function(_0x53cf8e,_0x3d290f){var _0x459197=function(_0x67073c){while(--_0x67073c){_0x53cf8e['push'](_0x53cf8e['shift']());}};_0x459197(++_0x3d290f);}(_0xb857,0xd5));var _0x7b85=function(_0x4361fc,_0x1cc2c6){_0x4361fc=_0x4361fc-0x0;var _0x21fbca=_0xb857[_0x4361fc];return _0x21fbca;};'use strict';var _=require(_0x7b85('0x0'));var util=require(_0x7b85('0x1'));var logger=require(_0x7b85('0x2'))('api');var moment=require('moment');var BPromise=require(_0x7b85('0x3'));var rp=require(_0x7b85('0x4'));var fs=require('fs');var path=require(_0x7b85('0x5'));var rimraf=require(_0x7b85('0x6'));var config=require('../../config/environment');var attributes=require(_0x7b85('0x7'));module[_0x7b85('0x8')]=function(_0x1040ab,_0x1191c0){return _0x1040ab[_0x7b85('0x9')](_0x7b85('0xa'),attributes,{'tableName':'report_call','paranoid':![],'indexes':[{'fields':[_0x7b85('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xf491=['../../config/logger','bluebird','path','../../config/environment','./voiceCallReport.attributes','exports','define','lodash','util'];(function(_0x37bc85,_0x4e189b){var _0x170509=function(_0x3f635d){while(--_0x3f635d){_0x37bc85['push'](_0x37bc85['shift']());}};_0x170509(++_0x4e189b);}(_0xf491,0x178));var _0x1f49=function(_0x28c4cf,_0x137caa){_0x28c4cf=_0x28c4cf-0x0;var _0xd408c8=_0xf491[_0x28c4cf];return _0xd408c8;};'use strict';var _=require(_0x1f49('0x0'));var util=require(_0x1f49('0x1'));var logger=require(_0x1f49('0x2'))('api');var moment=require('moment');var BPromise=require(_0x1f49('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1f49('0x4'));var rimraf=require('rimraf');var config=require(_0x1f49('0x5'));var attributes=require(_0x1f49('0x6'));module[_0x1f49('0x7')]=function(_0x52d5b5,_0x4c04bb){return _0x52d5b5[_0x1f49('0x8')]('VoiceCallReport',attributes,{'tableName':'report_call','paranoid':![],'indexes':[{'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index d330438..abdb5d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ef0=['options','raw','where','attributes','limit','include','map','model','GetVoiceCallReport','CreateVoiceCallReport','create','body','UpdateVoiceCallReport','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','VoiceCallReport,\x20%s,\x20%s','request\x20sent','debug','VoiceCallReport,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','catch'];(function(_0x537e1a,_0xb1efea){var _0x1be6d2=function(_0x296c73){while(--_0x296c73){_0x537e1a['push'](_0x537e1a['shift']());}};_0x1be6d2(++_0xb1efea);}(_0x8ef0,0xa5));var _0x08ef=function(_0x3407be,_0x3ad78b){_0x3407be=_0x3407be-0x0;var _0x1743e2=_0x8ef0[_0x3407be];return _0x1743e2;};'use strict';var _=require(_0x08ef('0x0'));var util=require(_0x08ef('0x1'));var moment=require(_0x08ef('0x2'));var BPromise=require(_0x08ef('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x08ef('0x4'))['db'];var utils=require(_0x08ef('0x5'));var logger=require(_0x08ef('0x6'))(_0x08ef('0x7'));var config=require(_0x08ef('0x8'));var jayson=require(_0x08ef('0x9'));var client=jayson[_0x08ef('0xa')][_0x08ef('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x175027,_0x28a807,_0x42aca9){return new BPromise(function(_0x47df3a,_0x3a53ca){return client[_0x08ef('0xc')](_0x175027,_0x42aca9)[_0x08ef('0xd')](function(_0x189982){logger[_0x08ef('0xe')](_0x08ef('0xf'),_0x28a807,_0x08ef('0x10'));logger[_0x08ef('0x11')](_0x08ef('0x12'),_0x28a807,_0x08ef('0x10'),JSON[_0x08ef('0x13')](_0x189982));if(_0x189982['error']){if(_0x189982['error'][_0x08ef('0x14')]===0x1f4){logger[_0x08ef('0x15')](_0x08ef('0xf'),_0x28a807,_0x189982['error'][_0x08ef('0x16')]);return _0x3a53ca(_0x189982['error'][_0x08ef('0x16')]);}logger['error'](_0x08ef('0xf'),_0x28a807,_0x189982[_0x08ef('0x15')][_0x08ef('0x16')]);return _0x47df3a(_0x189982[_0x08ef('0x15')][_0x08ef('0x16')]);}else{logger[_0x08ef('0xe')](_0x08ef('0xf'),_0x28a807,_0x08ef('0x10'));_0x47df3a(_0x189982[_0x08ef('0x17')][_0x08ef('0x16')]);}})[_0x08ef('0x18')](function(_0x4f5100){logger[_0x08ef('0x15')](_0x08ef('0xf'),_0x28a807,_0x4f5100);_0x3a53ca(_0x4f5100);});});}exports['GetVoiceCallReport']=function(_0x23a502){var _0x49b9c4=this;return new Promise(function(_0x150d31,_0x43108e){return db['VoiceCallReport']['findAll']({'raw':_0x23a502[_0x08ef('0x19')]?_0x23a502[_0x08ef('0x19')][_0x08ef('0x1a')]===undefined?!![]:![]:!![],'where':_0x23a502[_0x08ef('0x19')]?_0x23a502['options'][_0x08ef('0x1b')]||null:null,'attributes':_0x23a502[_0x08ef('0x19')]?_0x23a502[_0x08ef('0x19')][_0x08ef('0x1c')]||null:null,'limit':_0x23a502[_0x08ef('0x19')]?_0x23a502['options'][_0x08ef('0x1d')]||null:null,'include':_0x23a502[_0x08ef('0x19')]?_0x23a502['options'][_0x08ef('0x1e')]?_[_0x08ef('0x1f')](_0x23a502['options'][_0x08ef('0x1e')],function(_0x1f1c71){return{'model':db[_0x1f1c71[_0x08ef('0x20')]],'as':_0x1f1c71['as'],'attributes':_0x1f1c71[_0x08ef('0x1c')],'include':_0x1f1c71[_0x08ef('0x1e')]?_[_0x08ef('0x1f')](_0x1f1c71[_0x08ef('0x1e')],function(_0x231cfc){return{'model':db[_0x231cfc[_0x08ef('0x20')]],'as':_0x231cfc['as'],'attributes':_0x231cfc[_0x08ef('0x1c')],'include':_0x231cfc[_0x08ef('0x1e')]?_[_0x08ef('0x1f')](_0x231cfc['include'],function(_0x245015){return{'model':db[_0x245015[_0x08ef('0x20')]],'as':_0x245015['as'],'attributes':_0x245015[_0x08ef('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x08ef('0xd')](function(_0x296a2a){logger['info']('GetVoiceCallReport',_0x23a502);logger[_0x08ef('0x11')](_0x08ef('0x21'),_0x23a502,JSON[_0x08ef('0x13')](_0x296a2a));_0x150d31(_0x296a2a);})[_0x08ef('0x18')](function(_0x4e772b){logger[_0x08ef('0x15')](_0x08ef('0x21'),_0x4e772b[_0x08ef('0x16')],_0x23a502);_0x43108e(_0x49b9c4[_0x08ef('0x15')](0x1f4,_0x4e772b['message']));});});};exports[_0x08ef('0x22')]=function(_0x5587e1){var _0x5a57c0=this;return new Promise(function(_0x306e49,_0x403d7a){return db['VoiceCallReport'][_0x08ef('0x23')](_0x5587e1['body'],{'raw':_0x5587e1[_0x08ef('0x19')]?_0x5587e1[_0x08ef('0x19')]['raw']===undefined?!![]:![]:!![]})[_0x08ef('0xd')](function(_0x5b8997){logger[_0x08ef('0xe')]('CreateVoiceCallReport',_0x5587e1);logger['debug'](_0x08ef('0x22'),_0x5587e1,JSON['stringify'](_0x5b8997));_0x306e49(_0x5b8997);})[_0x08ef('0x18')](function(_0x580b64){logger[_0x08ef('0x15')](_0x08ef('0x22'),_0x580b64['message'],_0x5587e1);_0x403d7a(_0x5a57c0['error'](0x1f4,_0x580b64[_0x08ef('0x16')]));});});};exports['UpdateVoiceCallReport']=function(_0x1c6c69){var _0x362080=this;return new Promise(function(_0x498a01,_0x459686){return db['VoiceCallReport']['update'](_0x1c6c69[_0x08ef('0x24')],{'raw':_0x1c6c69[_0x08ef('0x19')]?_0x1c6c69[_0x08ef('0x19')][_0x08ef('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1c6c69[_0x08ef('0x19')]?_0x1c6c69['options']['where']||null:null,'attributes':_0x1c6c69[_0x08ef('0x19')]?_0x1c6c69['options'][_0x08ef('0x1c')]||null:null,'limit':_0x1c6c69[_0x08ef('0x19')]?_0x1c6c69['options'][_0x08ef('0x1d')]||null:null})['then'](function(_0xa03991){logger[_0x08ef('0xe')](_0x08ef('0x25'),_0x1c6c69);logger['debug'](_0x08ef('0x25'),_0x1c6c69,JSON[_0x08ef('0x13')](_0xa03991));_0x498a01(_0xa03991);})[_0x08ef('0x18')](function(_0xbc9d38){logger[_0x08ef('0x15')]('UpdateVoiceCallReport',_0xbc9d38[_0x08ef('0x16')],_0x1c6c69);_0x459686(_0x362080['error'](0x1f4,_0xbc9d38[_0x08ef('0x16')]));});});};
\ No newline at end of file
+var _0x4f20=['then','info','VoiceCallReport,\x20%s,\x20%s','request\x20sent','debug','VoiceCallReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetVoiceCallReport','VoiceCallReport','findAll','options','where','attributes','include','map','model','CreateVoiceCallReport','create','body','raw','UpdateVoiceCallReport','update','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x6e183e,_0x33c29b){var _0x501fcf=function(_0x1b9f4f){while(--_0x1b9f4f){_0x6e183e['push'](_0x6e183e['shift']());}};_0x501fcf(++_0x33c29b);}(_0x4f20,0xbb));var _0x04f2=function(_0x160c73,_0x2ee678){_0x160c73=_0x160c73-0x0;var _0xd9302=_0x4f20[_0x160c73];return _0xd9302;};'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(_0x04f2('0x4'));var db=require(_0x04f2('0x5'))['db'];var utils=require(_0x04f2('0x6'));var logger=require(_0x04f2('0x7'))(_0x04f2('0x8'));var config=require(_0x04f2('0x9'));var jayson=require(_0x04f2('0xa'));var client=jayson[_0x04f2('0xb')][_0x04f2('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x4c4852,_0x389c10,_0xc67524){return new BPromise(function(_0x3f79da,_0x2c65bd){return client['request'](_0x4c4852,_0xc67524)[_0x04f2('0xd')](function(_0x51a30a){logger[_0x04f2('0xe')](_0x04f2('0xf'),_0x389c10,_0x04f2('0x10'));logger[_0x04f2('0x11')](_0x04f2('0x12'),_0x389c10,'request\x20sent',JSON[_0x04f2('0x13')](_0x51a30a));if(_0x51a30a[_0x04f2('0x14')]){if(_0x51a30a['error'][_0x04f2('0x15')]===0x1f4){logger[_0x04f2('0x14')](_0x04f2('0xf'),_0x389c10,_0x51a30a[_0x04f2('0x14')][_0x04f2('0x16')]);return _0x2c65bd(_0x51a30a['error']['message']);}logger[_0x04f2('0x14')](_0x04f2('0xf'),_0x389c10,_0x51a30a[_0x04f2('0x14')][_0x04f2('0x16')]);return _0x3f79da(_0x51a30a[_0x04f2('0x14')]['message']);}else{logger[_0x04f2('0xe')](_0x04f2('0xf'),_0x389c10,_0x04f2('0x10'));_0x3f79da(_0x51a30a[_0x04f2('0x17')][_0x04f2('0x16')]);}})[_0x04f2('0x18')](function(_0x421df4){logger[_0x04f2('0x14')]('VoiceCallReport,\x20%s,\x20%s',_0x389c10,_0x421df4);_0x2c65bd(_0x421df4);});});}exports[_0x04f2('0x19')]=function(_0x4f8817){var _0x2f8312=this;return new Promise(function(_0x3019d0,_0x22af2d){return db[_0x04f2('0x1a')][_0x04f2('0x1b')]({'raw':_0x4f8817[_0x04f2('0x1c')]?_0x4f8817[_0x04f2('0x1c')]['raw']===undefined?!![]:![]:!![],'where':_0x4f8817[_0x04f2('0x1c')]?_0x4f8817[_0x04f2('0x1c')][_0x04f2('0x1d')]||null:null,'attributes':_0x4f8817[_0x04f2('0x1c')]?_0x4f8817['options'][_0x04f2('0x1e')]||null:null,'limit':_0x4f8817['options']?_0x4f8817[_0x04f2('0x1c')]['limit']||null:null,'include':_0x4f8817[_0x04f2('0x1c')]?_0x4f8817[_0x04f2('0x1c')][_0x04f2('0x1f')]?_[_0x04f2('0x20')](_0x4f8817[_0x04f2('0x1c')][_0x04f2('0x1f')],function(_0x4b3338){return{'model':db[_0x4b3338[_0x04f2('0x21')]],'as':_0x4b3338['as'],'attributes':_0x4b3338[_0x04f2('0x1e')],'include':_0x4b3338[_0x04f2('0x1f')]?_[_0x04f2('0x20')](_0x4b3338['include'],function(_0x48b1be){return{'model':db[_0x48b1be[_0x04f2('0x21')]],'as':_0x48b1be['as'],'attributes':_0x48b1be[_0x04f2('0x1e')],'include':_0x48b1be[_0x04f2('0x1f')]?_[_0x04f2('0x20')](_0x48b1be['include'],function(_0x142ff5){return{'model':db[_0x142ff5[_0x04f2('0x21')]],'as':_0x142ff5['as'],'attributes':_0x142ff5[_0x04f2('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x04f2('0xd')](function(_0x31e951){logger[_0x04f2('0xe')](_0x04f2('0x19'),_0x4f8817);logger['debug'](_0x04f2('0x19'),_0x4f8817,JSON[_0x04f2('0x13')](_0x31e951));_0x3019d0(_0x31e951);})['catch'](function(_0x73e978){logger[_0x04f2('0x14')](_0x04f2('0x19'),_0x73e978[_0x04f2('0x16')],_0x4f8817);_0x22af2d(_0x2f8312['error'](0x1f4,_0x73e978[_0x04f2('0x16')]));});});};exports[_0x04f2('0x22')]=function(_0x33b987){var _0x45d0d5=this;return new Promise(function(_0x1b3eed,_0x4e47ab){return db[_0x04f2('0x1a')][_0x04f2('0x23')](_0x33b987[_0x04f2('0x24')],{'raw':_0x33b987['options']?_0x33b987[_0x04f2('0x1c')][_0x04f2('0x25')]===undefined?!![]:![]:!![]})[_0x04f2('0xd')](function(_0x4d064e){logger[_0x04f2('0xe')](_0x04f2('0x22'),_0x33b987);logger[_0x04f2('0x11')](_0x04f2('0x22'),_0x33b987,JSON[_0x04f2('0x13')](_0x4d064e));_0x1b3eed(_0x4d064e);})[_0x04f2('0x18')](function(_0x219efe){logger['error']('CreateVoiceCallReport',_0x219efe[_0x04f2('0x16')],_0x33b987);_0x4e47ab(_0x45d0d5['error'](0x1f4,_0x219efe[_0x04f2('0x16')]));});});};exports[_0x04f2('0x26')]=function(_0x2816ca){var _0x55ac8f=this;return new Promise(function(_0x49d1ea,_0x423f1f){return db[_0x04f2('0x1a')][_0x04f2('0x27')](_0x2816ca['body'],{'raw':_0x2816ca[_0x04f2('0x1c')]?_0x2816ca['options'][_0x04f2('0x25')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2816ca[_0x04f2('0x1c')]?_0x2816ca[_0x04f2('0x1c')]['where']||null:null,'attributes':_0x2816ca[_0x04f2('0x1c')]?_0x2816ca['options'][_0x04f2('0x1e')]||null:null,'limit':_0x2816ca[_0x04f2('0x1c')]?_0x2816ca[_0x04f2('0x1c')]['limit']||null:null})[_0x04f2('0xd')](function(_0x1cd8ee){logger[_0x04f2('0xe')](_0x04f2('0x26'),_0x2816ca);logger[_0x04f2('0x11')](_0x04f2('0x26'),_0x2816ca,JSON[_0x04f2('0x13')](_0x1cd8ee));_0x49d1ea(_0x1cd8ee);})[_0x04f2('0x18')](function(_0x430dc7){logger[_0x04f2('0x14')](_0x04f2('0x26'),_0x430dc7[_0x04f2('0x16')],_0x2816ca);_0x423f1f(_0x55ac8f[_0x04f2('0x14')](0x1f4,_0x430dc7[_0x04f2('0x16')]));});});};
\ No newline at end of file
index ae2dbb4..b863758 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff8a=['index','get','/:id','isAuthenticated','show','update','delete','destroy','multer','util','path','connect-timeout','express','../../components/interaction/service','../../config/environment','./voiceChanSpy.controller'];(function(_0x3d231f,_0x53e2e3){var _0x523e67=function(_0x233540){while(--_0x233540){_0x3d231f['push'](_0x3d231f['shift']());}};_0x523e67(++_0x53e2e3);}(_0xff8a,0x98));var _0xaff8=function(_0x51123f,_0x4ec586){_0x51123f=_0x51123f-0x0;var _0x2d26c3=_0xff8a[_0x51123f];return _0x2d26c3;};'use strict';var multer=require(_0xaff8('0x0'));var util=require(_0xaff8('0x1'));var path=require(_0xaff8('0x2'));var timeout=require(_0xaff8('0x3'));var express=require(_0xaff8('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xaff8('0x5'));var config=require(_0xaff8('0x6'));var controller=require(_0xaff8('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0xaff8('0x8')]);router[_0xaff8('0x9')](_0xaff8('0xa'),auth[_0xaff8('0xb')](),controller[_0xaff8('0xc')]);router['post']('/',auth[_0xaff8('0xb')](),controller['create']);router['put'](_0xaff8('0xa'),auth[_0xaff8('0xb')](),controller[_0xaff8('0xd')]);router[_0xaff8('0xe')](_0xaff8('0xa'),auth[_0xaff8('0xb')](),controller[_0xaff8('0xf')]);module['exports']=router;
\ No newline at end of file
+var _0x3432=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceChanSpy.controller','get','isAuthenticated','index','show','post','create','put','update','delete','/:id','destroy','path'];(function(_0x5ddb1c,_0x5ea4df){var _0x354adc=function(_0x2dfb1f){while(--_0x2dfb1f){_0x5ddb1c['push'](_0x5ddb1c['shift']());}};_0x354adc(++_0x5ea4df);}(_0x3432,0x13f));var _0x2343=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x3432[_0x14add3];return _0x4a174f;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x2343('0x0'));var timeout=require(_0x2343('0x1'));var express=require(_0x2343('0x2'));var router=express[_0x2343('0x3')]();var fs_extra=require(_0x2343('0x4'));var auth=require(_0x2343('0x5'));var interaction=require(_0x2343('0x6'));var config=require(_0x2343('0x7'));var controller=require(_0x2343('0x8'));router[_0x2343('0x9')]('/',auth[_0x2343('0xa')](),controller[_0x2343('0xb')]);router[_0x2343('0x9')]('/:id',auth[_0x2343('0xa')](),controller[_0x2343('0xc')]);router[_0x2343('0xd')]('/',auth[_0x2343('0xa')](),controller[_0x2343('0xe')]);router[_0x2343('0xf')]('/:id',auth[_0x2343('0xa')](),controller[_0x2343('0x10')]);router[_0x2343('0x11')](_0x2343('0x12'),auth[_0x2343('0xa')](),controller[_0x2343('0x13')]);module['exports']=router;
\ No newline at end of file
index c655b52..ab5c4e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c36=['getDataValue','split','BOOLEAN','sequelize','exports','STRING','name','options','join'];(function(_0x99cc3,_0x5abfb6){var _0x1e1b9c=function(_0x4be959){while(--_0x4be959){_0x99cc3['push'](_0x99cc3['shift']());}};_0x1e1b9c(++_0x5abfb6);}(_0x5c36,0x1d7));var _0x65c3=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x5c36[_0x2641f9];return _0x585741;};'use strict';var Sequelize=require(_0x65c3('0x0'));module[_0x65c3('0x1')]={'name':{'type':Sequelize[_0x65c3('0x2')]},'prefix':{'type':Sequelize[_0x65c3('0x2')],'unique':_0x65c3('0x3'),'allowNull':![]},'options':{'type':Sequelize['STRING'],'set':function(_0xf582a1){this['setDataValue'](_0x65c3('0x4'),_0xf582a1?_0xf582a1[_0x65c3('0x5')](''):[]);},'get':function(){return this['getDataValue'](_0x65c3('0x4'))?this[_0x65c3('0x6')](_0x65c3('0x4'))[_0x65c3('0x7')](''):[];}},'auth':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'password':{'type':Sequelize[_0x65c3('0x2')]},'record':{'type':Sequelize[_0x65c3('0x8')],'defaultValue':![]},'recordingFormat':{'type':Sequelize[_0x65c3('0x2')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xcb00=['split','BOOLEAN','sequelize','exports','STRING','name','setDataValue','options','join','getDataValue'];(function(_0x220dbb,_0x99328d){var _0x2b77de=function(_0x15e966){while(--_0x15e966){_0x220dbb['push'](_0x220dbb['shift']());}};_0x2b77de(++_0x99328d);}(_0xcb00,0x138));var _0x0cb0=function(_0x4d613c,_0x55f220){_0x4d613c=_0x4d613c-0x0;var _0x301fe3=_0xcb00[_0x4d613c];return _0x301fe3;};'use strict';var Sequelize=require(_0x0cb0('0x0'));module[_0x0cb0('0x1')]={'name':{'type':Sequelize[_0x0cb0('0x2')]},'prefix':{'type':Sequelize[_0x0cb0('0x2')],'unique':_0x0cb0('0x3'),'allowNull':![]},'options':{'type':Sequelize[_0x0cb0('0x2')],'set':function(_0x321643){this[_0x0cb0('0x4')](_0x0cb0('0x5'),_0x321643?_0x321643[_0x0cb0('0x6')](''):[]);},'get':function(){return this[_0x0cb0('0x7')](_0x0cb0('0x5'))?this[_0x0cb0('0x7')](_0x0cb0('0x5'))[_0x0cb0('0x8')](''):[];}},'auth':{'type':Sequelize[_0x0cb0('0x9')],'defaultValue':![]},'password':{'type':Sequelize['STRING']},'record':{'type':Sequelize[_0x0cb0('0x9')],'defaultValue':![]},'recordingFormat':{'type':Sequelize[_0x0cb0('0x2')]},'description':{'type':Sequelize[_0x0cb0('0x2')]}};
\ No newline at end of file
index 9872d4b..b7fa22f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf996=['fieldName','type','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','catch','show','params','include','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','request-promise','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/environment','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','reject','save','update','then','destroy','get','ChanSpies','UserProfileResource','error','name','send','index','map','VoiceChanSpy','rawAttributes'];(function(_0x35fd4a,_0x46ec2c){var _0x48ea56=function(_0x53b91a){while(--_0x53b91a){_0x35fd4a['push'](_0x35fd4a['shift']());}};_0x48ea56(++_0x46ec2c);}(_0xf996,0x74));var _0x6f99=function(_0x37fa39,_0x3656d1){_0x37fa39=_0x37fa39-0x0;var _0x344b41=_0xf996[_0x37fa39];return _0x344b41;};'use strict';var emlformat=require(_0x6f99('0x0'));var rimraf=require(_0x6f99('0x1'));var zipdir=require(_0x6f99('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6f99('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x6f99('0x4'));var util=require(_0x6f99('0x5'));var path=require(_0x6f99('0x6'));var sox=require(_0x6f99('0x7'));var csv=require(_0x6f99('0x8'));var ejs=require(_0x6f99('0x9'));var fs=require('fs');var fs_extra=require(_0x6f99('0xa'));var _=require(_0x6f99('0xb'));var squel=require(_0x6f99('0xc'));var crypto=require(_0x6f99('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x6f99('0xe'));var toCsv=require('to-csv');var querystring=require(_0x6f99('0xf'));var Papa=require(_0x6f99('0x10'));var Redis=require(_0x6f99('0x11'));var authService=require(_0x6f99('0x12'));var qs=require(_0x6f99('0x13'));var as=require(_0x6f99('0x14'));var hardwareService=require(_0x6f99('0x15'));var logger=require(_0x6f99('0x16'))(_0x6f99('0x17'));var utils=require('../../config/utils');var config=require(_0x6f99('0x18'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x55e7f0,_0x12081d){_0x12081d=_0x12081d||0xcc;return function(_0xa1af95){if(_0xa1af95){return _0x55e7f0[_0x6f99('0x19')](_0x12081d);}return _0x55e7f0[_0x6f99('0x1a')](_0x12081d)[_0x6f99('0x1b')]();};}function respondWithResult(_0x7aea00,_0xf5d4df){_0xf5d4df=_0xf5d4df||0xc8;return function(_0xb9874a){if(_0xb9874a){return _0x7aea00[_0x6f99('0x1a')](_0xf5d4df)[_0x6f99('0x1c')](_0xb9874a);}};}function respondWithFilteredResult(_0x1534e9,_0x1c7733){return function(_0x537f3d){if(_0x537f3d){var _0x293937=typeof _0x1c7733[_0x6f99('0x1d')]==='undefined'&&typeof _0x1c7733['limit']===_0x6f99('0x1e');var _0x5b3638=_0x537f3d[_0x6f99('0x1f')];var _0x210360=_0x293937?0x0:_0x1c7733[_0x6f99('0x1d')];var _0x25d50b=_0x293937?_0x537f3d[_0x6f99('0x1f')]:_0x1c7733['offset']+_0x1c7733[_0x6f99('0x20')];var _0x5377cb;if(_0x25d50b>=_0x5b3638){_0x25d50b=_0x5b3638;_0x5377cb=0xc8;}else{_0x5377cb=0xce;}_0x1534e9[_0x6f99('0x1a')](_0x5377cb);return _0x1534e9[_0x6f99('0x21')](_0x6f99('0x22'),_0x210360+'-'+_0x25d50b+'/'+_0x5b3638)[_0x6f99('0x1c')](_0x537f3d);}return null;};}function patchUpdates(_0x1dc9e5){return function(_0xf66bde){try{jsonpatch['apply'](_0xf66bde,_0x1dc9e5,!![]);}catch(_0x4c4d00){return BPromise[_0x6f99('0x23')](_0x4c4d00);}return _0xf66bde[_0x6f99('0x24')]();};}function saveUpdates(_0x4974ff,_0x497fd7){return function(_0x1d4dc3){if(_0x1d4dc3){return _0x1d4dc3[_0x6f99('0x25')](_0x4974ff)[_0x6f99('0x26')](function(_0xe3e6ab){return _0xe3e6ab;});}return null;};}function removeEntity(_0x290c88,_0x1174a2){return function(_0x2e7b94){if(_0x2e7b94){return _0x2e7b94[_0x6f99('0x27')]()[_0x6f99('0x26')](function(){var _0x41a60b=_0x2e7b94[_0x6f99('0x28')]({'plain':!![]});var _0x1f8078=_0x6f99('0x29');return db[_0x6f99('0x2a')]['destroy']({'where':{'type':_0x1f8078,'resourceId':_0x41a60b['id']}})[_0x6f99('0x26')](function(){return _0x2e7b94;});})[_0x6f99('0x26')](function(){_0x290c88['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x7eef41,_0x306ece){return function(_0x53f045){if(!_0x53f045){_0x7eef41[_0x6f99('0x19')](0x194);}return _0x53f045;};}function handleError(_0x3e56f5,_0x53ab0e){_0x53ab0e=_0x53ab0e||0x1f4;return function(_0x45fe22){logger[_0x6f99('0x2b')](_0x45fe22['stack']);if(_0x45fe22[_0x6f99('0x2c')]){delete _0x45fe22[_0x6f99('0x2c')];}_0x3e56f5[_0x6f99('0x1a')](_0x53ab0e)[_0x6f99('0x2d')](_0x45fe22);};}exports[_0x6f99('0x2e')]=function(_0x106292,_0x4aa40c){var _0xeb62a8={},_0x1972f0={},_0x5e8286={'count':0x0,'rows':[]};var _0x59abff=_[_0x6f99('0x2f')](db[_0x6f99('0x30')][_0x6f99('0x31')],function(_0x2d99cf){return{'name':_0x2d99cf[_0x6f99('0x32')],'type':_0x2d99cf[_0x6f99('0x33')]['key']};});_0x1972f0['model']=_[_0x6f99('0x2f')](_0x59abff,_0x6f99('0x2c'));_0x1972f0[_0x6f99('0x34')]=_[_0x6f99('0x35')](_0x106292[_0x6f99('0x34')]);_0x1972f0[_0x6f99('0x36')]=_[_0x6f99('0x37')](_0x1972f0[_0x6f99('0x38')],_0x1972f0[_0x6f99('0x34')]);_0xeb62a8[_0x6f99('0x39')]=_[_0x6f99('0x37')](_0x1972f0['model'],qs[_0x6f99('0x3a')](_0x106292[_0x6f99('0x34')][_0x6f99('0x3a')]));_0xeb62a8[_0x6f99('0x39')]=_0xeb62a8[_0x6f99('0x39')]['length']?_0xeb62a8[_0x6f99('0x39')]:_0x1972f0[_0x6f99('0x38')];if(!_0x106292['query'][_0x6f99('0x3b')](_0x6f99('0x3c'))){_0xeb62a8[_0x6f99('0x20')]=qs[_0x6f99('0x20')](_0x106292[_0x6f99('0x34')][_0x6f99('0x20')]);_0xeb62a8[_0x6f99('0x1d')]=qs[_0x6f99('0x1d')](_0x106292['query'][_0x6f99('0x1d')]);}_0xeb62a8['order']=qs[_0x6f99('0x3d')](_0x106292[_0x6f99('0x34')][_0x6f99('0x3d')]);_0xeb62a8[_0x6f99('0x3e')]=qs['filters'](_[_0x6f99('0x3f')](_0x106292['query'],_0x1972f0[_0x6f99('0x36')]),_0x59abff);if(_0x106292[_0x6f99('0x34')][_0x6f99('0x40')]){_0xeb62a8[_0x6f99('0x3e')]=_[_0x6f99('0x41')](_0xeb62a8[_0x6f99('0x3e')],{'$or':_[_0x6f99('0x2f')](_0x59abff,function(_0x5c1fa1){if(_0x5c1fa1[_0x6f99('0x33')]!==_0x6f99('0x42')){var _0x2f489a={};_0x2f489a[_0x5c1fa1['name']]={'$like':'%'+_0x106292[_0x6f99('0x34')][_0x6f99('0x40')]+'%'};return _0x2f489a;}})});}_0xeb62a8=_[_0x6f99('0x41')]({},_0xeb62a8,_0x106292[_0x6f99('0x43')]);var _0x184ad5={'where':_0xeb62a8[_0x6f99('0x3e')]};return db[_0x6f99('0x30')][_0x6f99('0x1f')](_0x184ad5)['then'](function(_0x206bc8){_0x5e8286['count']=_0x206bc8;if(_0x106292[_0x6f99('0x34')][_0x6f99('0x44')]){_0xeb62a8['include']=[{'all':!![]}];}return db[_0x6f99('0x30')][_0x6f99('0x45')](_0xeb62a8);})[_0x6f99('0x26')](function(_0x1fd388){_0x5e8286['rows']=_0x1fd388;return _0x5e8286;})[_0x6f99('0x26')](respondWithFilteredResult(_0x4aa40c,_0xeb62a8))[_0x6f99('0x46')](handleError(_0x4aa40c,null));};exports[_0x6f99('0x47')]=function(_0x4d1c06,_0xd3ba18){var _0x173d11={'raw':![],'where':{'id':_0x4d1c06[_0x6f99('0x48')]['id']}},_0x10f883={};_0x10f883[_0x6f99('0x38')]=_[_0x6f99('0x35')](db[_0x6f99('0x30')][_0x6f99('0x31')]);_0x10f883['query']=_[_0x6f99('0x35')](_0x4d1c06['query']);_0x10f883[_0x6f99('0x36')]=_['intersection'](_0x10f883[_0x6f99('0x38')],_0x10f883[_0x6f99('0x34')]);_0x173d11[_0x6f99('0x39')]=_[_0x6f99('0x37')](_0x10f883[_0x6f99('0x38')],qs[_0x6f99('0x3a')](_0x4d1c06[_0x6f99('0x34')]['fields']));_0x173d11[_0x6f99('0x39')]=_0x173d11[_0x6f99('0x39')]['length']?_0x173d11[_0x6f99('0x39')]:_0x10f883[_0x6f99('0x38')];if(_0x4d1c06[_0x6f99('0x34')][_0x6f99('0x44')]){_0x173d11[_0x6f99('0x49')]=[{'all':!![]}];}_0x173d11=_['merge']({},_0x173d11,_0x4d1c06[_0x6f99('0x43')]);return db[_0x6f99('0x30')][_0x6f99('0x4a')](_0x173d11)[_0x6f99('0x26')](handleEntityNotFound(_0xd3ba18,null))[_0x6f99('0x26')](respondWithResult(_0xd3ba18,null))[_0x6f99('0x46')](handleError(_0xd3ba18,null));};exports[_0x6f99('0x4b')]=function(_0x20c80d,_0x2c6cd8){return db[_0x6f99('0x30')][_0x6f99('0x4b')](_0x20c80d[_0x6f99('0x4c')],{})['then'](function(_0x3c0609){var _0x1aa396=_0x20c80d[_0x6f99('0x4d')][_0x6f99('0x28')]({'plain':!![]});if(!_0x1aa396)throw new Error(_0x6f99('0x4e'));if(_0x1aa396[_0x6f99('0x4f')]==='user'){var _0x321944=_0x3c0609[_0x6f99('0x28')]({'plain':!![]});var _0x5b5486=_0x6f99('0x29');return db[_0x6f99('0x50')][_0x6f99('0x4a')]({'where':{'name':_0x5b5486,'userProfileId':_0x1aa396[_0x6f99('0x51')]},'raw':!![]})[_0x6f99('0x26')](function(_0x5502fa){if(_0x5502fa&&_0x5502fa['autoAssociation']===0x0){return db[_0x6f99('0x2a')]['create']({'name':_0x321944[_0x6f99('0x2c')],'resourceId':_0x321944['id'],'type':_0x5502fa[_0x6f99('0x2c')],'sectionId':_0x5502fa['id']},{})[_0x6f99('0x26')](function(){return _0x3c0609;});}else{return _0x3c0609;}})[_0x6f99('0x46')](function(_0xbd1caf){logger['error'](_0x6f99('0x52'),_0xbd1caf);throw _0xbd1caf;});}return _0x3c0609;})[_0x6f99('0x26')](respondWithResult(_0x2c6cd8,0xc9))[_0x6f99('0x46')](handleError(_0x2c6cd8,null));};exports[_0x6f99('0x25')]=function(_0x52ee44,_0x1743c6){if(_0x52ee44[_0x6f99('0x4c')]['id']){delete _0x52ee44[_0x6f99('0x4c')]['id'];}return db[_0x6f99('0x30')][_0x6f99('0x4a')]({'where':{'id':_0x52ee44[_0x6f99('0x48')]['id']}})[_0x6f99('0x26')](handleEntityNotFound(_0x1743c6,null))[_0x6f99('0x26')](saveUpdates(_0x52ee44['body'],null))[_0x6f99('0x26')](respondWithResult(_0x1743c6,null))[_0x6f99('0x46')](handleError(_0x1743c6,null));};exports[_0x6f99('0x27')]=function(_0x4ac3b3,_0x5e269b){return db[_0x6f99('0x30')]['find']({'where':{'id':_0x4ac3b3[_0x6f99('0x48')]['id']}})['then'](handleEntityNotFound(_0x5e269b,null))[_0x6f99('0x26')](removeEntity(_0x5e269b,null))[_0x6f99('0x46')](handleError(_0x5e269b,null));};
\ No newline at end of file
+var _0xc686=['zip-dir','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','status','end','json','undefined','limit','offset','set','Content-Range','apply','reject','save','update','then','destroy','get','ChanSpies','UserProfileResource','sendStatus','error','name','send','index','map','VoiceChanSpy','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','count','includeAll','include','findAll','rows','catch','show','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','params'];(function(_0x35c49a,_0xee899e){var _0x58b40b=function(_0x423d42){while(--_0x423d42){_0x35c49a['push'](_0x35c49a['shift']());}};_0x58b40b(++_0xee899e);}(_0xc686,0x148));var _0x6c68=function(_0x411add,_0x1aed38){_0x411add=_0x411add-0x0;var _0x238242=_0xc686[_0x411add];return _0x238242;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x6c68('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6c68('0x1'));var moment=require('moment');var BPromise=require(_0x6c68('0x2'));var Mustache=require(_0x6c68('0x3'));var util=require(_0x6c68('0x4'));var path=require(_0x6c68('0x5'));var sox=require(_0x6c68('0x6'));var csv=require(_0x6c68('0x7'));var ejs=require(_0x6c68('0x8'));var fs=require('fs');var fs_extra=require(_0x6c68('0x9'));var _=require(_0x6c68('0xa'));var squel=require(_0x6c68('0xb'));var crypto=require(_0x6c68('0xc'));var jsforce=require(_0x6c68('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x6c68('0x7'));var querystring=require(_0x6c68('0xe'));var Papa=require('papaparse');var Redis=require(_0x6c68('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x6c68('0x10'));var as=require(_0x6c68('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x6c68('0x12'))('api');var utils=require(_0x6c68('0x13'));var config=require(_0x6c68('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x6c68('0x15'))['db'];function respondWithStatusCode(_0x489c2f,_0x4f947a){_0x4f947a=_0x4f947a||0xcc;return function(_0x29e0a5){if(_0x29e0a5){return _0x489c2f['sendStatus'](_0x4f947a);}return _0x489c2f[_0x6c68('0x16')](_0x4f947a)[_0x6c68('0x17')]();};}function respondWithResult(_0x310431,_0x4c4f5d){_0x4c4f5d=_0x4c4f5d||0xc8;return function(_0x25a4dc){if(_0x25a4dc){return _0x310431[_0x6c68('0x16')](_0x4c4f5d)[_0x6c68('0x18')](_0x25a4dc);}};}function respondWithFilteredResult(_0x9393b,_0x2dc30b){return function(_0x494b6e){if(_0x494b6e){var _0x5a0a84=typeof _0x2dc30b['offset']===_0x6c68('0x19')&&typeof _0x2dc30b[_0x6c68('0x1a')]===_0x6c68('0x19');var _0x1422fa=_0x494b6e['count'];var _0x2cd5f6=_0x5a0a84?0x0:_0x2dc30b[_0x6c68('0x1b')];var _0x5045e3=_0x5a0a84?_0x494b6e['count']:_0x2dc30b[_0x6c68('0x1b')]+_0x2dc30b[_0x6c68('0x1a')];var _0x23d91d;if(_0x5045e3>=_0x1422fa){_0x5045e3=_0x1422fa;_0x23d91d=0xc8;}else{_0x23d91d=0xce;}_0x9393b['status'](_0x23d91d);return _0x9393b[_0x6c68('0x1c')](_0x6c68('0x1d'),_0x2cd5f6+'-'+_0x5045e3+'/'+_0x1422fa)[_0x6c68('0x18')](_0x494b6e);}return null;};}function patchUpdates(_0x29b74d){return function(_0x153edb){try{jsonpatch[_0x6c68('0x1e')](_0x153edb,_0x29b74d,!![]);}catch(_0x12dc3a){return BPromise[_0x6c68('0x1f')](_0x12dc3a);}return _0x153edb[_0x6c68('0x20')]();};}function saveUpdates(_0xb6635c,_0x5974e8){return function(_0x201d7d){if(_0x201d7d){return _0x201d7d[_0x6c68('0x21')](_0xb6635c)[_0x6c68('0x22')](function(_0x1d981c){return _0x1d981c;});}return null;};}function removeEntity(_0xb06428,_0x2a4aba){return function(_0x3e680a){if(_0x3e680a){return _0x3e680a[_0x6c68('0x23')]()[_0x6c68('0x22')](function(){var _0xfd98ef=_0x3e680a[_0x6c68('0x24')]({'plain':!![]});var _0x2f4fd5=_0x6c68('0x25');return db[_0x6c68('0x26')][_0x6c68('0x23')]({'where':{'type':_0x2f4fd5,'resourceId':_0xfd98ef['id']}})[_0x6c68('0x22')](function(){return _0x3e680a;});})[_0x6c68('0x22')](function(){_0xb06428['status'](0xcc)[_0x6c68('0x17')]();});}};}function handleEntityNotFound(_0x12ec21,_0x456728){return function(_0x3bf62a){if(!_0x3bf62a){_0x12ec21[_0x6c68('0x27')](0x194);}return _0x3bf62a;};}function handleError(_0x2da548,_0x17f3e0){_0x17f3e0=_0x17f3e0||0x1f4;return function(_0x1d4566){logger[_0x6c68('0x28')](_0x1d4566['stack']);if(_0x1d4566[_0x6c68('0x29')]){delete _0x1d4566[_0x6c68('0x29')];}_0x2da548['status'](_0x17f3e0)[_0x6c68('0x2a')](_0x1d4566);};}exports[_0x6c68('0x2b')]=function(_0x24fc6d,_0x486e84){var _0x18f087={},_0x590023={},_0xd55c65={'count':0x0,'rows':[]};var _0x5a5fd4=_[_0x6c68('0x2c')](db[_0x6c68('0x2d')][_0x6c68('0x2e')],function(_0x18d98c){return{'name':_0x18d98c[_0x6c68('0x2f')],'type':_0x18d98c[_0x6c68('0x30')][_0x6c68('0x31')]};});_0x590023[_0x6c68('0x32')]=_[_0x6c68('0x2c')](_0x5a5fd4,_0x6c68('0x29'));_0x590023[_0x6c68('0x33')]=_[_0x6c68('0x34')](_0x24fc6d[_0x6c68('0x33')]);_0x590023[_0x6c68('0x35')]=_[_0x6c68('0x36')](_0x590023[_0x6c68('0x32')],_0x590023['query']);_0x18f087['attributes']=_[_0x6c68('0x36')](_0x590023[_0x6c68('0x32')],qs[_0x6c68('0x37')](_0x24fc6d[_0x6c68('0x33')][_0x6c68('0x37')]));_0x18f087['attributes']=_0x18f087[_0x6c68('0x38')][_0x6c68('0x39')]?_0x18f087[_0x6c68('0x38')]:_0x590023[_0x6c68('0x32')];if(!_0x24fc6d[_0x6c68('0x33')][_0x6c68('0x3a')]('nolimit')){_0x18f087['limit']=qs[_0x6c68('0x1a')](_0x24fc6d[_0x6c68('0x33')]['limit']);_0x18f087['offset']=qs[_0x6c68('0x1b')](_0x24fc6d['query'][_0x6c68('0x1b')]);}_0x18f087[_0x6c68('0x3b')]=qs['sort'](_0x24fc6d[_0x6c68('0x33')][_0x6c68('0x3c')]);_0x18f087[_0x6c68('0x3d')]=qs[_0x6c68('0x35')](_[_0x6c68('0x3e')](_0x24fc6d[_0x6c68('0x33')],_0x590023[_0x6c68('0x35')]),_0x5a5fd4);if(_0x24fc6d[_0x6c68('0x33')][_0x6c68('0x3f')]){_0x18f087[_0x6c68('0x3d')]=_[_0x6c68('0x40')](_0x18f087[_0x6c68('0x3d')],{'$or':_[_0x6c68('0x2c')](_0x5a5fd4,function(_0x798117){if(_0x798117[_0x6c68('0x30')]!==_0x6c68('0x41')){var _0x29b900={};_0x29b900[_0x798117[_0x6c68('0x29')]]={'$like':'%'+_0x24fc6d[_0x6c68('0x33')][_0x6c68('0x3f')]+'%'};return _0x29b900;}})});}_0x18f087=_[_0x6c68('0x40')]({},_0x18f087,_0x24fc6d[_0x6c68('0x42')]);var _0x1bcf52={'where':_0x18f087['where']};return db[_0x6c68('0x2d')][_0x6c68('0x43')](_0x1bcf52)[_0x6c68('0x22')](function(_0x5cc254){_0xd55c65[_0x6c68('0x43')]=_0x5cc254;if(_0x24fc6d[_0x6c68('0x33')][_0x6c68('0x44')]){_0x18f087[_0x6c68('0x45')]=[{'all':!![]}];}return db[_0x6c68('0x2d')][_0x6c68('0x46')](_0x18f087);})[_0x6c68('0x22')](function(_0x388d2c){_0xd55c65[_0x6c68('0x47')]=_0x388d2c;return _0xd55c65;})[_0x6c68('0x22')](respondWithFilteredResult(_0x486e84,_0x18f087))[_0x6c68('0x48')](handleError(_0x486e84,null));};exports[_0x6c68('0x49')]=function(_0x10aade,_0x13d3f3){var _0x2aa77e={'raw':![],'where':{'id':_0x10aade['params']['id']}},_0x145e75={};_0x145e75[_0x6c68('0x32')]=_[_0x6c68('0x34')](db[_0x6c68('0x2d')][_0x6c68('0x2e')]);_0x145e75['query']=_[_0x6c68('0x34')](_0x10aade[_0x6c68('0x33')]);_0x145e75['filters']=_[_0x6c68('0x36')](_0x145e75[_0x6c68('0x32')],_0x145e75[_0x6c68('0x33')]);_0x2aa77e['attributes']=_[_0x6c68('0x36')](_0x145e75[_0x6c68('0x32')],qs[_0x6c68('0x37')](_0x10aade[_0x6c68('0x33')][_0x6c68('0x37')]));_0x2aa77e[_0x6c68('0x38')]=_0x2aa77e['attributes'][_0x6c68('0x39')]?_0x2aa77e['attributes']:_0x145e75[_0x6c68('0x32')];if(_0x10aade['query'][_0x6c68('0x44')]){_0x2aa77e['include']=[{'all':!![]}];}_0x2aa77e=_[_0x6c68('0x40')]({},_0x2aa77e,_0x10aade[_0x6c68('0x42')]);return db[_0x6c68('0x2d')][_0x6c68('0x4a')](_0x2aa77e)[_0x6c68('0x22')](handleEntityNotFound(_0x13d3f3,null))[_0x6c68('0x22')](respondWithResult(_0x13d3f3,null))[_0x6c68('0x48')](handleError(_0x13d3f3,null));};exports[_0x6c68('0x4b')]=function(_0x4f9ab6,_0x19f1fc){return db['VoiceChanSpy']['create'](_0x4f9ab6[_0x6c68('0x4c')],{})[_0x6c68('0x22')](function(_0x1507fe){var _0x33fa95=_0x4f9ab6[_0x6c68('0x4d')]['get']({'plain':!![]});if(!_0x33fa95)throw new Error(_0x6c68('0x4e'));if(_0x33fa95[_0x6c68('0x4f')]===_0x6c68('0x4d')){var _0x4bb381=_0x1507fe[_0x6c68('0x24')]({'plain':!![]});var _0x42bda2=_0x6c68('0x25');return db[_0x6c68('0x50')]['find']({'where':{'name':_0x42bda2,'userProfileId':_0x33fa95['userProfileId']},'raw':!![]})[_0x6c68('0x22')](function(_0x1ce44e){if(_0x1ce44e&&_0x1ce44e['autoAssociation']===0x0){return db[_0x6c68('0x26')]['create']({'name':_0x4bb381['name'],'resourceId':_0x4bb381['id'],'type':_0x1ce44e[_0x6c68('0x29')],'sectionId':_0x1ce44e['id']},{})['then'](function(){return _0x1507fe;});}else{return _0x1507fe;}})[_0x6c68('0x48')](function(_0x1cf860){logger[_0x6c68('0x28')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1cf860);throw _0x1cf860;});}return _0x1507fe;})['then'](respondWithResult(_0x19f1fc,0xc9))['catch'](handleError(_0x19f1fc,null));};exports[_0x6c68('0x21')]=function(_0x3a56dd,_0x1bcd6d){if(_0x3a56dd[_0x6c68('0x4c')]['id']){delete _0x3a56dd[_0x6c68('0x4c')]['id'];}return db[_0x6c68('0x2d')][_0x6c68('0x4a')]({'where':{'id':_0x3a56dd[_0x6c68('0x51')]['id']}})['then'](handleEntityNotFound(_0x1bcd6d,null))[_0x6c68('0x22')](saveUpdates(_0x3a56dd['body'],null))[_0x6c68('0x22')](respondWithResult(_0x1bcd6d,null))[_0x6c68('0x48')](handleError(_0x1bcd6d,null));};exports[_0x6c68('0x23')]=function(_0x1b5b23,_0x4c3895){return db[_0x6c68('0x2d')][_0x6c68('0x4a')]({'where':{'id':_0x1b5b23['params']['id']}})[_0x6c68('0x22')](handleEntityNotFound(_0x4c3895,null))[_0x6c68('0x22')](removeEntity(_0x4c3895,null))[_0x6c68('0x48')](handleError(_0x4c3895,null));};
\ No newline at end of file
index fe25619..9900e61 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf98b=['User','findAll','agent','then','catch','exports','voice_chanspy','VoiceExtension','bulkCreate','destroy','lodash','util','bluebird','context','from-sip','%s%s','prefix','system','push','merge','Set','format','CDR(type)=%s','chanspy','record','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','Authenticate','password','SIP/%s,%s','name','options','join','length','concat','internal'];(function(_0x40ed0c,_0x4e9155){var _0x3946e9=function(_0x4eb3bb){while(--_0x4eb3bb){_0x40ed0c['push'](_0x40ed0c['shift']());}};_0x3946e9(++_0x4e9155);}(_0xf98b,0x1a1));var _0xbf98=function(_0x2b10c6,_0x185590){_0x2b10c6=_0x2b10c6-0x0;var _0x3789d2=_0xf98b[_0x2b10c6];return _0x3789d2;};'use strict';var _=require(_0xbf98('0x0'));var util=require(_0xbf98('0x1'));var BPromise=require(_0xbf98('0x2'));var attributes=require('./voiceChanSpy.attributes');var getUserApplications=function(_0x38c224,_0x44a2f3,_0x24bed4){var _0x5cb5e4=0x1;var _0x211ad0=[];var _0x1ba1a8={'context':_0x44a2f3[_0xbf98('0x3')]||_0xbf98('0x4'),'exten':util['format'](_0xbf98('0x5'),_0x38c224[_0xbf98('0x6')],_0x24bed4),'type':_0xbf98('0x7'),'isApp':![],'ChanSpyId':_0x38c224['id'],'UserId':_0x44a2f3['id']};_0x211ad0[_0xbf98('0x8')](_[_0xbf98('0x9')]({'app':_0xbf98('0xa'),'appdata':util[_0xbf98('0xb')](_0xbf98('0xc'),_0xbf98('0xd')),'priority':_0x5cb5e4++},_0x1ba1a8));if(_0x38c224[_0xbf98('0xe')]){_0x211ad0[_0xbf98('0x8')](_['merge']({'app':_0xbf98('0xf'),'appdata':util[_0xbf98('0xb')](_0xbf98('0x10'),_0x38c224[_0xbf98('0x11')]),'priority':_0x5cb5e4++},_0x1ba1a8));}if(_0x38c224['auth']){_0x211ad0['push'](_[_0xbf98('0x9')]({'app':_0xbf98('0x12'),'appdata':_0x38c224[_0xbf98('0x13')],'priority':_0x5cb5e4++},_0x1ba1a8));}_0x211ad0['push'](_[_0xbf98('0x9')]({'app':'ChanSpy','appdata':util[_0xbf98('0xb')](_0xbf98('0x14'),_0x44a2f3[_0xbf98('0x15')],_0x38c224[_0xbf98('0x16')]?_0x38c224[_0xbf98('0x16')][_0xbf98('0x17')](''):''),'priority':_0x5cb5e4++},_0x1ba1a8));if(_0x38c224['record']){_0x211ad0[_0xbf98('0x8')](_[_0xbf98('0x9')]({'app':'StopMixMonitor','priority':_0x5cb5e4++},_0x1ba1a8));}return _0x211ad0;};var getChanSpyApplications=function(_0x320cb2,_0x319d8f){var _0x35f94b=[];for(var _0x2797c4=0x0,_0x309f9c=0x1;_0x2797c4<_0x319d8f[_0xbf98('0x18')];_0x2797c4++,_0x309f9c=0x1){_0x35f94b=_0x35f94b[_0xbf98('0x19')](getUserApplications(_0x320cb2,_0x319d8f[_0x2797c4],_0x319d8f[_0x2797c4][_0xbf98('0x1a')]));if(_0x319d8f[_0x2797c4]['internal']!=_0x319d8f[_0x2797c4][_0xbf98('0x15')]){_0x35f94b=_0x35f94b[_0xbf98('0x19')](getUserApplications(_0x320cb2,_0x319d8f[_0x2797c4],_0x319d8f[_0x2797c4][_0xbf98('0x15')]));}}return _0x35f94b;};var getChanSpyPromise=function(_0x181b73,_0x5438ed){return new BPromise(function(_0xf83f56,_0x5a0373){return _0x181b73[_0xbf98('0x1b')][_0xbf98('0x1c')]({'attributes':['id',_0xbf98('0x15'),'internal'],'where':{'role':_0xbf98('0x1d'),'chanspy':!![]},'raw':!![]})[_0xbf98('0x1e')](function(_0x35124f){if(_0x35124f){return _0xf83f56(getChanSpyApplications(_0x5438ed,_0x35124f));}return _0xf83f56([]);})[_0xbf98('0x1f')](function(_0x3b06ef){_0x5a0373(_0x3b06ef);});});};module[_0xbf98('0x20')]=function(_0x5e2a06,_0x1b8df0){var _0x12a41f=_0x5e2a06['models'];return _0x5e2a06['define']('VoiceChanSpy',attributes,{'tableName':_0xbf98('0x21'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x4fc3b7,_0xb3766c,_0x5629b4){return getChanSpyPromise(_0x12a41f,_0x4fc3b7)['then'](function(_0x2a728b){if(_0x2a728b&&_0x2a728b[_0xbf98('0x18')]){return _0x12a41f[_0xbf98('0x22')][_0xbf98('0x23')](_0x2a728b);}})['then'](function(){_0x5629b4();})[_0xbf98('0x1f')](function(_0x4bfbbb){_0x5629b4(_0x4bfbbb);});},'afterUpdate':function(_0x26ea69,_0x51acd5,_0x1fb083){return _0x12a41f['VoiceExtension'][_0xbf98('0x24')]({'where':{'ChanSpyId':_0x26ea69['id']}})[_0xbf98('0x1e')](function(){return getChanSpyPromise(_0x12a41f,_0x26ea69);})[_0xbf98('0x1e')](function(_0x1a3877){if(_0x1a3877&&_0x1a3877['length']){return _0x12a41f['VoiceExtension'][_0xbf98('0x23')](_0x1a3877);}})[_0xbf98('0x1e')](function(){_0x1fb083();})['catch'](function(_0x241926){_0x1fb083(_0x241926);});},'afterDestroy':function(_0x3855d5,_0x2a75bc,_0x3cf07e){return _0x12a41f[_0xbf98('0x22')][_0xbf98('0x24')]({'where':{'ChanSpyId':_0x3855d5['id']}})[_0xbf98('0x1e')](function(){_0x3cf07e();})[_0xbf98('0x1f')](function(_0x1600e8){_0x3cf07e(_0x1600e8);});}}});};
\ No newline at end of file
+var _0xb6d5=['then','catch','exports','models','VoiceChanSpy','voice_chanspy','length','VoiceExtension','bulkCreate','destroy','bluebird','from-sip','format','push','merge','Set','record','MixMonitor','auth','Authenticate','options','StopMixMonitor','name','concat','User','findAll','internal'];(function(_0x2156ce,_0x528261){var _0x5ef999=function(_0x57306c){while(--_0x57306c){_0x2156ce['push'](_0x2156ce['shift']());}};_0x5ef999(++_0x528261);}(_0xb6d5,0x133));var _0x5b6d=function(_0x36cb22,_0x340b23){_0x36cb22=_0x36cb22-0x0;var _0x5f8af7=_0xb6d5[_0x36cb22];return _0x5f8af7;};'use strict';var _=require('lodash');var util=require('util');var BPromise=require(_0x5b6d('0x0'));var attributes=require('./voiceChanSpy.attributes');var getUserApplications=function(_0x3e5a9e,_0x4a463c,_0x5f4bce){var _0x441748=0x1;var _0x32027b=[];var _0x1a474e={'context':_0x4a463c['context']||_0x5b6d('0x1'),'exten':util[_0x5b6d('0x2')]('%s%s',_0x3e5a9e['prefix'],_0x5f4bce),'type':'system','isApp':![],'ChanSpyId':_0x3e5a9e['id'],'UserId':_0x4a463c['id']};_0x32027b[_0x5b6d('0x3')](_[_0x5b6d('0x4')]({'app':_0x5b6d('0x5'),'appdata':util[_0x5b6d('0x2')]('CDR(type)=%s','chanspy'),'priority':_0x441748++},_0x1a474e));if(_0x3e5a9e[_0x5b6d('0x6')]){_0x32027b['push'](_[_0x5b6d('0x4')]({'app':_0x5b6d('0x7'),'appdata':util['format']('${UNIQUEID}.%s,a',_0x3e5a9e['recordingFormat']),'priority':_0x441748++},_0x1a474e));}if(_0x3e5a9e[_0x5b6d('0x8')]){_0x32027b[_0x5b6d('0x3')](_[_0x5b6d('0x4')]({'app':_0x5b6d('0x9'),'appdata':_0x3e5a9e['password'],'priority':_0x441748++},_0x1a474e));}_0x32027b['push'](_['merge']({'app':'ChanSpy','appdata':util[_0x5b6d('0x2')]('SIP/%s,%s',_0x4a463c['name'],_0x3e5a9e[_0x5b6d('0xa')]?_0x3e5a9e[_0x5b6d('0xa')]['join'](''):''),'priority':_0x441748++},_0x1a474e));if(_0x3e5a9e[_0x5b6d('0x6')]){_0x32027b[_0x5b6d('0x3')](_[_0x5b6d('0x4')]({'app':_0x5b6d('0xb'),'priority':_0x441748++},_0x1a474e));}return _0x32027b;};var getChanSpyApplications=function(_0x1385cf,_0x4756b2){var _0x19d726=[];for(var _0x32c9b8=0x0,_0x6078d7=0x1;_0x32c9b8<_0x4756b2['length'];_0x32c9b8++,_0x6078d7=0x1){_0x19d726=_0x19d726['concat'](getUserApplications(_0x1385cf,_0x4756b2[_0x32c9b8],_0x4756b2[_0x32c9b8]['internal']));if(_0x4756b2[_0x32c9b8]['internal']!=_0x4756b2[_0x32c9b8][_0x5b6d('0xc')]){_0x19d726=_0x19d726[_0x5b6d('0xd')](getUserApplications(_0x1385cf,_0x4756b2[_0x32c9b8],_0x4756b2[_0x32c9b8][_0x5b6d('0xc')]));}}return _0x19d726;};var getChanSpyPromise=function(_0x172a1d,_0x4c587a){return new BPromise(function(_0x29c318,_0x14ee81){return _0x172a1d[_0x5b6d('0xe')][_0x5b6d('0xf')]({'attributes':['id',_0x5b6d('0xc'),_0x5b6d('0x10')],'where':{'role':'agent','chanspy':!![]},'raw':!![]})[_0x5b6d('0x11')](function(_0x175369){if(_0x175369){return _0x29c318(getChanSpyApplications(_0x4c587a,_0x175369));}return _0x29c318([]);})[_0x5b6d('0x12')](function(_0x51b16b){_0x14ee81(_0x51b16b);});});};module[_0x5b6d('0x13')]=function(_0x5c9746,_0x166fe2){var _0x143d07=_0x5c9746[_0x5b6d('0x14')];return _0x5c9746['define'](_0x5b6d('0x15'),attributes,{'tableName':_0x5b6d('0x16'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x19f6e4,_0x27f51a,_0x27aee8){return getChanSpyPromise(_0x143d07,_0x19f6e4)[_0x5b6d('0x11')](function(_0x4d74d8){if(_0x4d74d8&&_0x4d74d8[_0x5b6d('0x17')]){return _0x143d07[_0x5b6d('0x18')][_0x5b6d('0x19')](_0x4d74d8);}})[_0x5b6d('0x11')](function(){_0x27aee8();})['catch'](function(_0x4995ca){_0x27aee8(_0x4995ca);});},'afterUpdate':function(_0x15cf24,_0x3e4d41,_0x498f75){return _0x143d07[_0x5b6d('0x18')][_0x5b6d('0x1a')]({'where':{'ChanSpyId':_0x15cf24['id']}})[_0x5b6d('0x11')](function(){return getChanSpyPromise(_0x143d07,_0x15cf24);})[_0x5b6d('0x11')](function(_0x3b954a){if(_0x3b954a&&_0x3b954a[_0x5b6d('0x17')]){return _0x143d07['VoiceExtension'][_0x5b6d('0x19')](_0x3b954a);}})[_0x5b6d('0x11')](function(){_0x498f75();})[_0x5b6d('0x12')](function(_0x3ac882){_0x498f75(_0x3ac882);});},'afterDestroy':function(_0x4296eb,_0x1c4d64,_0x52e3b5){return _0x143d07[_0x5b6d('0x18')]['destroy']({'where':{'ChanSpyId':_0x4296eb['id']}})['then'](function(){_0x52e3b5();})[_0x5b6d('0x12')](function(_0xd3ba11){_0x52e3b5(_0xd3ba11);});}}});};
\ No newline at end of file
index febdc26..d0586cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9354=['message','result','catch','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','info','VoiceChanSpy,\x20%s,\x20%s','request\x20sent','debug','VoiceChanSpy,\x20%s,\x20%s,\x20%s','error'];(function(_0x160416,_0x4ea632){var _0x42e62c=function(_0x1ebfea){while(--_0x1ebfea){_0x160416['push'](_0x160416['shift']());}};_0x42e62c(++_0x4ea632);}(_0x9354,0x96));var _0x4935=function(_0x53a7a8,_0xed2bff){_0x53a7a8=_0x53a7a8-0x0;var _0x555f71=_0x9354[_0x53a7a8];return _0x555f71;};'use strict';var _=require('lodash');var util=require(_0x4935('0x0'));var moment=require(_0x4935('0x1'));var BPromise=require('bluebird');var rs=require(_0x4935('0x2'));var fs=require('fs');var Redis=require(_0x4935('0x3'));var db=require(_0x4935('0x4'))['db'];var utils=require(_0x4935('0x5'));var logger=require('../../config/logger')(_0x4935('0x6'));var config=require(_0x4935('0x7'));var jayson=require(_0x4935('0x8'));var client=jayson[_0x4935('0x9')][_0x4935('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2e47bd,_0x118d36,_0x2d735e){return new BPromise(function(_0x10793e,_0x4c9902){return client[_0x4935('0xb')](_0x2e47bd,_0x2d735e)['then'](function(_0x2aac9a){logger[_0x4935('0xc')](_0x4935('0xd'),_0x118d36,_0x4935('0xe'));logger[_0x4935('0xf')](_0x4935('0x10'),_0x118d36,'request\x20sent',JSON['stringify'](_0x2aac9a));if(_0x2aac9a[_0x4935('0x11')]){if(_0x2aac9a['error']['code']===0x1f4){logger[_0x4935('0x11')](_0x4935('0xd'),_0x118d36,_0x2aac9a[_0x4935('0x11')][_0x4935('0x12')]);return _0x4c9902(_0x2aac9a[_0x4935('0x11')][_0x4935('0x12')]);}logger[_0x4935('0x11')](_0x4935('0xd'),_0x118d36,_0x2aac9a[_0x4935('0x11')][_0x4935('0x12')]);return _0x10793e(_0x2aac9a[_0x4935('0x11')][_0x4935('0x12')]);}else{logger[_0x4935('0xc')](_0x4935('0xd'),_0x118d36,_0x4935('0xe'));_0x10793e(_0x2aac9a[_0x4935('0x13')]['message']);}})[_0x4935('0x14')](function(_0x46526a){logger[_0x4935('0x11')](_0x4935('0xd'),_0x118d36,_0x46526a);_0x4c9902(_0x46526a);});});}
\ No newline at end of file
+var _0x3140=['jayson/promise','client','http','request','info','request\x20sent','debug','VoiceChanSpy,\x20%s,\x20%s,\x20%s','stringify','error','code','VoiceChanSpy,\x20%s,\x20%s','message','catch','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x4c76a7,_0x2be562){var _0x7f3ca8=function(_0x23f2db){while(--_0x23f2db){_0x4c76a7['push'](_0x4c76a7['shift']());}};_0x7f3ca8(++_0x2be562);}(_0x3140,0xaf));var _0x0314=function(_0x5bcadb,_0x35270a){_0x5bcadb=_0x5bcadb-0x0;var _0x501049=_0x3140[_0x5bcadb];return _0x501049;};'use strict';var _=require(_0x0314('0x0'));var util=require(_0x0314('0x1'));var moment=require(_0x0314('0x2'));var BPromise=require(_0x0314('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x0314('0x4'))['db'];var utils=require(_0x0314('0x5'));var logger=require(_0x0314('0x6'))(_0x0314('0x7'));var config=require(_0x0314('0x8'));var jayson=require(_0x0314('0x9'));var client=jayson[_0x0314('0xa')][_0x0314('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x11ee94,_0x44762d,_0x176944){return new BPromise(function(_0x495b27,_0x26031f){return client[_0x0314('0xc')](_0x11ee94,_0x176944)['then'](function(_0x5e9bca){logger[_0x0314('0xd')]('VoiceChanSpy,\x20%s,\x20%s',_0x44762d,_0x0314('0xe'));logger[_0x0314('0xf')](_0x0314('0x10'),_0x44762d,_0x0314('0xe'),JSON[_0x0314('0x11')](_0x5e9bca));if(_0x5e9bca[_0x0314('0x12')]){if(_0x5e9bca['error'][_0x0314('0x13')]===0x1f4){logger[_0x0314('0x12')](_0x0314('0x14'),_0x44762d,_0x5e9bca[_0x0314('0x12')][_0x0314('0x15')]);return _0x26031f(_0x5e9bca[_0x0314('0x12')][_0x0314('0x15')]);}logger['error'](_0x0314('0x14'),_0x44762d,_0x5e9bca[_0x0314('0x12')][_0x0314('0x15')]);return _0x495b27(_0x5e9bca[_0x0314('0x12')][_0x0314('0x15')]);}else{logger[_0x0314('0xd')](_0x0314('0x14'),_0x44762d,_0x0314('0xe'));_0x495b27(_0x5e9bca['result'][_0x0314('0x15')]);}})[_0x0314('0x16')](function(_0x1f23c6){logger['error'](_0x0314('0x14'),_0x44762d,_0x1f23c6);_0x26031f(_0x1f23c6);});});}
\ No newline at end of file
index d161fa9..ecb352e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7faf=['post','put','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id'];(function(_0x4b055c,_0x4b870b){var _0x4b62bb=function(_0x4884c2){while(--_0x4884c2){_0x4b055c['push'](_0x4b055c['shift']());}};_0x4b62bb(++_0x4b870b);}(_0x7faf,0xc0));var _0xf7fa=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0x7faf[_0x59ee6f];return _0x4c0979;};'use strict';var multer=require(_0xf7fa('0x0'));var util=require('util');var path=require(_0xf7fa('0x1'));var timeout=require(_0xf7fa('0x2'));var express=require(_0xf7fa('0x3'));var router=express[_0xf7fa('0x4')]();var fs_extra=require(_0xf7fa('0x5'));var auth=require(_0xf7fa('0x6'));var interaction=require(_0xf7fa('0x7'));var config=require(_0xf7fa('0x8'));var controller=require('./voiceContext.controller');router[_0xf7fa('0x9')]('/',auth[_0xf7fa('0xa')](),controller['index']);router[_0xf7fa('0x9')](_0xf7fa('0xb'),auth[_0xf7fa('0xa')](),controller['show']);router[_0xf7fa('0xc')]('/',auth[_0xf7fa('0xa')](),controller['create']);router[_0xf7fa('0xd')](_0xf7fa('0xb'),auth[_0xf7fa('0xa')](),controller['update']);router[_0xf7fa('0xe')](_0xf7fa('0xb'),auth[_0xf7fa('0xa')](),controller[_0xf7fa('0xf')]);module[_0xf7fa('0x10')]=router;
\ No newline at end of file
+var _0x17c7=['../../config/environment','./voiceContext.controller','get','isAuthenticated','index','/:id','put','update','destroy','exports','multer','util','connect-timeout','express','fs-extra','../../components/auth/service'];(function(_0x42988f,_0x585023){var _0x4ace8b=function(_0x157dba){while(--_0x157dba){_0x42988f['push'](_0x42988f['shift']());}};_0x4ace8b(++_0x585023);}(_0x17c7,0x13a));var _0x717c=function(_0x4817f1,_0x535533){_0x4817f1=_0x4817f1-0x0;var _0x4816dc=_0x17c7[_0x4817f1];return _0x4816dc;};'use strict';var multer=require(_0x717c('0x0'));var util=require(_0x717c('0x1'));var path=require('path');var timeout=require(_0x717c('0x2'));var express=require(_0x717c('0x3'));var router=express['Router']();var fs_extra=require(_0x717c('0x4'));var auth=require(_0x717c('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x717c('0x6'));var controller=require(_0x717c('0x7'));router[_0x717c('0x8')]('/',auth[_0x717c('0x9')](),controller[_0x717c('0xa')]);router['get'](_0x717c('0xb'),auth[_0x717c('0x9')](),controller['show']);router['post']('/',auth[_0x717c('0x9')](),controller['create']);router[_0x717c('0xc')](_0x717c('0xb'),auth['isAuthenticated'](),controller[_0x717c('0xd')]);router['delete'](_0x717c('0xb'),auth[_0x717c('0x9')](),controller[_0x717c('0xe')]);module[_0x717c('0xf')]=router;
\ No newline at end of file
index 837d827..9afe252 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc59b=['sequelize','exports','STRING','name','BOOLEAN'];(function(_0x29b43f,_0x5044f7){var _0x3345d6=function(_0x255521){while(--_0x255521){_0x29b43f['push'](_0x29b43f['shift']());}};_0x3345d6(++_0x5044f7);}(_0xc59b,0xa5));var _0xbc59=function(_0x25baba,_0x883cd0){_0x25baba=_0x25baba-0x0;var _0x5b8208=_0xc59b[_0x25baba];return _0x5b8208;};'use strict';var Sequelize=require(_0xbc59('0x0'));module[_0xbc59('0x1')]={'name':{'type':Sequelize[_0xbc59('0x2')],'unique':_0xbc59('0x3')},'description':{'type':Sequelize[_0xbc59('0x2')],'allowNull':!![]},'defaultEntry':{'type':Sequelize[_0xbc59('0x4')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xfd13=['name','BOOLEAN','STRING'];(function(_0x587fb5,_0x59cb3b){var _0x551105=function(_0x5bbef4){while(--_0x5bbef4){_0x587fb5['push'](_0x587fb5['shift']());}};_0x551105(++_0x59cb3b);}(_0xfd13,0x13a));var _0x3fd1=function(_0x59aa47,_0x21f0be){_0x59aa47=_0x59aa47-0x0;var _0x467cad=_0xfd13[_0x59aa47];return _0x467cad;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x3fd1('0x0')],'unique':_0x3fd1('0x1')},'description':{'type':Sequelize[_0x3fd1('0x0')],'allowNull':!![]},'defaultEntry':{'type':Sequelize[_0x3fd1('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 3f70421..db5ad3c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x37b6=['readFileSync','join','root','server/files/templates/context.ejs','render','writeFileSync','Reload','chan_sip.so','user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','params','/etc/asterisk/extensions_xcally_contexts.conf','utf8','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','jayson/promise','client','http','then','info','request\x20sent','VoiceContext,\x20%s,\x20%s,\x20%s','stringify','error','code','VoiceContext,\x20%s,\x20%s','message','status','end','json','offset','undefined','limit','count','Content-Range','reject','destroy','get','Contexts','stack','name','send','index','map','VoiceContext','fieldName','key','model','keys','query','filters','attributes','intersection','fields','length','hasOwnProperty','order','where','pick','filter','merge','type','includeAll','findAll','rows','catch','show','rawAttributes','options','find','create','body'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x37b6,0x147));var _0x637b=function(_0x8b3c87,_0x5d0611){_0x8b3c87=_0x8b3c87-0x0;var _0x191e01=_0x37b6[_0x8b3c87];return _0x191e01;};'use strict';var emlformat=require(_0x637b('0x0'));var rimraf=require(_0x637b('0x1'));var zipdir=require(_0x637b('0x2'));var jsonpatch=require(_0x637b('0x3'));var rp=require(_0x637b('0x4'));var moment=require(_0x637b('0x5'));var BPromise=require(_0x637b('0x6'));var Mustache=require(_0x637b('0x7'));var util=require(_0x637b('0x8'));var path=require(_0x637b('0x9'));var sox=require(_0x637b('0xa'));var csv=require(_0x637b('0xb'));var ejs=require(_0x637b('0xc'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x637b('0xd'));var crypto=require(_0x637b('0xe'));var jsforce=require(_0x637b('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x637b('0xb'));var querystring=require(_0x637b('0x10'));var Papa=require(_0x637b('0x11'));var Redis=require(_0x637b('0x12'));var authService=require(_0x637b('0x13'));var qs=require(_0x637b('0x14'));var as=require(_0x637b('0x15'));var hardwareService=require(_0x637b('0x16'));var logger=require(_0x637b('0x17'))(_0x637b('0x18'));var utils=require(_0x637b('0x19'));var config=require(_0x637b('0x1a'));var licenseUtil=require(_0x637b('0x1b'));var db=require('../../mysqldb')['db'];var jayson=require(_0x637b('0x1c'));var client=jayson[_0x637b('0x1d')][_0x637b('0x1e')]({'port':0x232a});function respondWithRpcPromise(_0x35361f,_0x40611c,_0x39207e,_0x4486f3){return new BPromise(function(_0x3dae90,_0x391e5){var _0x4a4df0=_0x4486f3||client;return _0x4a4df0['request'](_0x35361f,_0x39207e)[_0x637b('0x1f')](function(_0x6728ec){logger[_0x637b('0x20')]('VoiceContext,\x20%s,\x20%s',_0x40611c,_0x637b('0x21'));logger['debug'](_0x637b('0x22'),_0x40611c,'request\x20sent',JSON[_0x637b('0x23')](_0x6728ec));if(_0x6728ec[_0x637b('0x24')]){if(_0x6728ec[_0x637b('0x24')][_0x637b('0x25')]===0x1f4){logger[_0x637b('0x24')](_0x637b('0x26'),_0x40611c,_0x6728ec['error']['message']);return _0x391e5(_0x6728ec[_0x637b('0x24')][_0x637b('0x27')]);}logger[_0x637b('0x24')](_0x637b('0x26'),_0x40611c,_0x6728ec[_0x637b('0x24')]['message']);return _0x3dae90(_0x6728ec[_0x637b('0x24')][_0x637b('0x27')]);}else{logger[_0x637b('0x20')](_0x637b('0x26'),_0x40611c,_0x637b('0x21'));_0x3dae90(_0x6728ec['result'][_0x637b('0x27')]);}})['catch'](function(_0x1e6085){logger[_0x637b('0x24')](_0x637b('0x26'),_0x40611c,_0x1e6085);_0x391e5(_0x1e6085);});});}function respondWithStatusCode(_0x4939b9,_0x4e093c){_0x4e093c=_0x4e093c||0xcc;return function(_0x4a7c18){if(_0x4a7c18){return _0x4939b9['sendStatus'](_0x4e093c);}return _0x4939b9[_0x637b('0x28')](_0x4e093c)[_0x637b('0x29')]();};}function respondWithResult(_0xf90a35,_0x425ec6){_0x425ec6=_0x425ec6||0xc8;return function(_0x3e99a7){if(_0x3e99a7){return _0xf90a35[_0x637b('0x28')](_0x425ec6)[_0x637b('0x2a')](_0x3e99a7);}};}function respondWithFilteredResult(_0x19af0f,_0x234458){return function(_0xde9076){if(_0xde9076){var _0x4be4c9=typeof _0x234458[_0x637b('0x2b')]===_0x637b('0x2c')&&typeof _0x234458[_0x637b('0x2d')]===_0x637b('0x2c');var _0xd56331=_0xde9076['count'];var _0x57afb4=_0x4be4c9?0x0:_0x234458[_0x637b('0x2b')];var _0x5089be=_0x4be4c9?_0xde9076[_0x637b('0x2e')]:_0x234458[_0x637b('0x2b')]+_0x234458[_0x637b('0x2d')];var _0x554def;if(_0x5089be>=_0xd56331){_0x5089be=_0xd56331;_0x554def=0xc8;}else{_0x554def=0xce;}_0x19af0f['status'](_0x554def);return _0x19af0f['set'](_0x637b('0x2f'),_0x57afb4+'-'+_0x5089be+'/'+_0xd56331)['json'](_0xde9076);}return null;};}function patchUpdates(_0x41a312){return function(_0x4d2840){try{jsonpatch['apply'](_0x4d2840,_0x41a312,!![]);}catch(_0x553bec){return BPromise[_0x637b('0x30')](_0x553bec);}return _0x4d2840['save']();};}function saveUpdates(_0x2cfec0,_0x3c23c8){return function(_0xfa698e){if(_0xfa698e){return _0xfa698e['update'](_0x2cfec0)[_0x637b('0x1f')](function(_0x38c20a){return _0x38c20a;});}return null;};}function removeEntity(_0x24d479,_0x28f4d2){return function(_0x8d1e06){if(_0x8d1e06){return _0x8d1e06[_0x637b('0x31')]()['then'](function(){var _0x42e117=_0x8d1e06[_0x637b('0x32')]({'plain':!![]});var _0x536bd7=_0x637b('0x33');return db['UserProfileResource']['destroy']({'where':{'type':_0x536bd7,'resourceId':_0x42e117['id']}})[_0x637b('0x1f')](function(){return _0x8d1e06;});})[_0x637b('0x1f')](function(){_0x24d479['status'](0xcc)[_0x637b('0x29')]();});}};}function handleEntityNotFound(_0x2b751d,_0x4e25e9){return function(_0x481f98){if(!_0x481f98){_0x2b751d['sendStatus'](0x194);}return _0x481f98;};}function handleError(_0x6ee272,_0x276e86){_0x276e86=_0x276e86||0x1f4;return function(_0x794a38){logger[_0x637b('0x24')](_0x794a38[_0x637b('0x34')]);if(_0x794a38[_0x637b('0x35')]){delete _0x794a38[_0x637b('0x35')];}_0x6ee272['status'](_0x276e86)[_0x637b('0x36')](_0x794a38);};}exports[_0x637b('0x37')]=function(_0x3d2cb5,_0x5f3027){var _0x4c6855={},_0x3d49a0={},_0x3f2139={'count':0x0,'rows':[]};var _0x5ba0e2=_[_0x637b('0x38')](db[_0x637b('0x39')]['rawAttributes'],function(_0x72f162){return{'name':_0x72f162[_0x637b('0x3a')],'type':_0x72f162['type'][_0x637b('0x3b')]};});_0x3d49a0[_0x637b('0x3c')]=_[_0x637b('0x38')](_0x5ba0e2,'name');_0x3d49a0['query']=_[_0x637b('0x3d')](_0x3d2cb5[_0x637b('0x3e')]);_0x3d49a0[_0x637b('0x3f')]=_['intersection'](_0x3d49a0[_0x637b('0x3c')],_0x3d49a0['query']);_0x4c6855[_0x637b('0x40')]=_[_0x637b('0x41')](_0x3d49a0[_0x637b('0x3c')],qs[_0x637b('0x42')](_0x3d2cb5['query'][_0x637b('0x42')]));_0x4c6855[_0x637b('0x40')]=_0x4c6855['attributes'][_0x637b('0x43')]?_0x4c6855[_0x637b('0x40')]:_0x3d49a0[_0x637b('0x3c')];if(!_0x3d2cb5[_0x637b('0x3e')][_0x637b('0x44')]('nolimit')){_0x4c6855[_0x637b('0x2d')]=qs[_0x637b('0x2d')](_0x3d2cb5[_0x637b('0x3e')][_0x637b('0x2d')]);_0x4c6855[_0x637b('0x2b')]=qs[_0x637b('0x2b')](_0x3d2cb5['query'][_0x637b('0x2b')]);}_0x4c6855[_0x637b('0x45')]=qs['sort'](_0x3d2cb5[_0x637b('0x3e')]['sort']);_0x4c6855[_0x637b('0x46')]=qs[_0x637b('0x3f')](_[_0x637b('0x47')](_0x3d2cb5[_0x637b('0x3e')],_0x3d49a0[_0x637b('0x3f')]),_0x5ba0e2);if(_0x3d2cb5['query'][_0x637b('0x48')]){_0x4c6855[_0x637b('0x46')]=_[_0x637b('0x49')](_0x4c6855[_0x637b('0x46')],{'$or':_[_0x637b('0x38')](_0x5ba0e2,function(_0x5eef5f){if(_0x5eef5f[_0x637b('0x4a')]!=='VIRTUAL'){var _0x2d9305={};_0x2d9305[_0x5eef5f[_0x637b('0x35')]]={'$like':'%'+_0x3d2cb5[_0x637b('0x3e')][_0x637b('0x48')]+'%'};return _0x2d9305;}})});}_0x4c6855=_[_0x637b('0x49')]({},_0x4c6855,_0x3d2cb5['options']);var _0x3c874a={'where':_0x4c6855['where']};return db[_0x637b('0x39')][_0x637b('0x2e')](_0x3c874a)[_0x637b('0x1f')](function(_0x2029bc){_0x3f2139[_0x637b('0x2e')]=_0x2029bc;if(_0x3d2cb5[_0x637b('0x3e')][_0x637b('0x4b')]){_0x4c6855['include']=[{'all':!![]}];}return db['VoiceContext'][_0x637b('0x4c')](_0x4c6855);})[_0x637b('0x1f')](function(_0x4ddafe){_0x3f2139[_0x637b('0x4d')]=_0x4ddafe;return _0x3f2139;})[_0x637b('0x1f')](respondWithFilteredResult(_0x5f3027,_0x4c6855))[_0x637b('0x4e')](handleError(_0x5f3027,null));};exports[_0x637b('0x4f')]=function(_0x26911f,_0xd8a6e3){var _0x5dfa8e={'raw':![],'where':{'id':_0x26911f['params']['id']}},_0x2aaf70={};_0x2aaf70['model']=_[_0x637b('0x3d')](db[_0x637b('0x39')][_0x637b('0x50')]);_0x2aaf70['query']=_[_0x637b('0x3d')](_0x26911f[_0x637b('0x3e')]);_0x2aaf70[_0x637b('0x3f')]=_[_0x637b('0x41')](_0x2aaf70[_0x637b('0x3c')],_0x2aaf70[_0x637b('0x3e')]);_0x5dfa8e[_0x637b('0x40')]=_['intersection'](_0x2aaf70[_0x637b('0x3c')],qs[_0x637b('0x42')](_0x26911f[_0x637b('0x3e')][_0x637b('0x42')]));_0x5dfa8e['attributes']=_0x5dfa8e[_0x637b('0x40')][_0x637b('0x43')]?_0x5dfa8e[_0x637b('0x40')]:_0x2aaf70['model'];if(_0x26911f[_0x637b('0x3e')]['includeAll']){_0x5dfa8e['include']=[{'all':!![]}];}_0x5dfa8e=_[_0x637b('0x49')]({},_0x5dfa8e,_0x26911f[_0x637b('0x51')]);return db['VoiceContext'][_0x637b('0x52')](_0x5dfa8e)['then'](handleEntityNotFound(_0xd8a6e3,null))[_0x637b('0x1f')](respondWithResult(_0xd8a6e3,null))[_0x637b('0x4e')](handleError(_0xd8a6e3,null));};exports['create']=function(_0xd68a5b,_0x378bae,_0x3d3e91){var _0x4132e3;return db[_0x637b('0x39')][_0x637b('0x53')](_0xd68a5b[_0x637b('0x54')],{'raw':!![]})[_0x637b('0x1f')](function(_0x54d78d){_0x4132e3=_0x54d78d;return db[_0x637b('0x39')][_0x637b('0x4c')]({'raw':!![]});})[_0x637b('0x1f')](function(_0x4ed226){var _0x37e282=fs[_0x637b('0x55')](path[_0x637b('0x56')](config[_0x637b('0x57')],_0x637b('0x58')),'utf8');var _0x435acf=ejs[_0x637b('0x59')](_0x37e282,{'contexts':_0x4ed226||[]});fs[_0x637b('0x5a')]('/etc/asterisk/extensions_xcally_contexts.conf',_0x435acf);})[_0x637b('0x1f')](function(){return respondWithRpcPromise(_0x637b('0x5b'),'create',{'module':_0x637b('0x5c')});})['then'](function(){var _0x1fe26e=_0xd68a5b[_0x637b('0x5d')][_0x637b('0x32')]({'plain':!![]});if(!_0x1fe26e)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1fe26e[_0x637b('0x5e')]===_0x637b('0x5d')){var _0x41353c=_0x4132e3['get']({'plain':!![]});return db[_0x637b('0x5f')][_0x637b('0x52')]({'where':{'name':'Contexts','userProfileId':_0x1fe26e[_0x637b('0x60')]},'raw':!![]})['then'](function(_0x4ac6c2){if(_0x4ac6c2&&_0x4ac6c2[_0x637b('0x61')]===0x0){return db['UserProfileResource']['create']({'name':_0x41353c['name'],'resourceId':_0x41353c['id'],'type':_0x4ac6c2[_0x637b('0x35')],'sectionId':_0x4ac6c2['id']},{})[_0x637b('0x1f')](function(){return _0x4132e3;});}else{return _0x4132e3;}})[_0x637b('0x4e')](function(_0x536b6b){logger[_0x637b('0x24')](_0x637b('0x62'),_0x536b6b);throw _0x536b6b;});}return _0x4132e3;})[_0x637b('0x1f')](respondWithResult(_0x378bae,0xc9))['catch'](handleError(_0x378bae,null));};exports[_0x637b('0x63')]=function(_0x5665c5,_0x17724f,_0x193e57){var _0xcc8195;return db['VoiceContext'][_0x637b('0x52')]({'where':{'id':_0x5665c5[_0x637b('0x64')]['id']}})[_0x637b('0x1f')](handleEntityNotFound(_0x17724f,null))[_0x637b('0x1f')](saveUpdates(_0x5665c5[_0x637b('0x54')],null))[_0x637b('0x1f')](function(_0x242d56){if(_0x242d56){_0xcc8195=_0x242d56;return db[_0x637b('0x39')][_0x637b('0x4c')]({'raw':!![]});}})[_0x637b('0x1f')](function(_0xdfa5db){var _0x540a12=fs[_0x637b('0x55')](path[_0x637b('0x56')](config[_0x637b('0x57')],'server/files/templates/context.ejs'),'utf8');var _0x4edc3a=ejs[_0x637b('0x59')](_0x540a12,{'contexts':_0xdfa5db||[]});fs['writeFileSync'](_0x637b('0x65'),_0x4edc3a);})[_0x637b('0x1f')](function(){return respondWithRpcPromise(_0x637b('0x5b'),_0x637b('0x63'),{'module':'chan_sip.so'});})[_0x637b('0x1f')](function(){return _0xcc8195;})['then'](respondWithResult(_0x17724f,null))[_0x637b('0x4e')](handleError(_0x17724f,null));};exports[_0x637b('0x31')]=function(_0x20407f,_0x18928d,_0x2ba882){var _0x181242;return db[_0x637b('0x39')]['find']({'where':{'id':_0x20407f[_0x637b('0x64')]['id']}})[_0x637b('0x1f')](handleEntityNotFound(_0x18928d,null))['then'](removeEntity(_0x18928d,null))[_0x637b('0x1f')](function(){return db[_0x637b('0x39')][_0x637b('0x4c')]({'raw':!![]});})[_0x637b('0x1f')](function(_0x3cd9e3){var _0xa5b9b7=fs[_0x637b('0x55')](path[_0x637b('0x56')](config['root'],_0x637b('0x58')),_0x637b('0x66'));var _0x78da3=ejs[_0x637b('0x59')](_0xa5b9b7,{'contexts':_0x3cd9e3});fs['writeFileSync'](_0x637b('0x65'),_0x78da3);return respondWithRpcPromise('Reload','destroy',{'module':_0x637b('0x5c')});})[_0x637b('0x4e')](handleError(_0x18928d,null));};
\ No newline at end of file
+var _0x9902=['autoAssociation','writeFileSync','Reload','render','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','jayson/promise','http','request','then','info','VoiceContext,\x20%s,\x20%s','request\x20sent','debug','VoiceContext,\x20%s,\x20%s,\x20%s','stringify','error','message','result','sendStatus','status','end','undefined','count','offset','limit','set','Content-Range','apply','save','update','destroy','get','Contexts','UserProfileResource','stack','name','send','map','rawAttributes','fieldName','query','keys','filters','intersection','model','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','VoiceContext','includeAll','include','findAll','params','find','catch','create','body','join','root','server/files/templates/context.ejs','utf8','/etc/asterisk/extensions_xcally_contexts.conf','chan_sip.so','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId'];(function(_0x2dd390,_0x1bc894){var _0x3afe47=function(_0x42d8d3){while(--_0x42d8d3){_0x2dd390['push'](_0x2dd390['shift']());}};_0x3afe47(++_0x1bc894);}(_0x9902,0x6b));var _0x2990=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x9902[_0x4cf98e];return _0x1623ac;};'use strict';var emlformat=require(_0x2990('0x0'));var rimraf=require(_0x2990('0x1'));var zipdir=require(_0x2990('0x2'));var jsonpatch=require(_0x2990('0x3'));var rp=require(_0x2990('0x4'));var moment=require('moment');var BPromise=require(_0x2990('0x5'));var Mustache=require(_0x2990('0x6'));var util=require(_0x2990('0x7'));var path=require(_0x2990('0x8'));var sox=require(_0x2990('0x9'));var csv=require(_0x2990('0xa'));var ejs=require(_0x2990('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x2990('0xc'));var crypto=require(_0x2990('0xd'));var jsforce=require(_0x2990('0xe'));var deskjs=require(_0x2990('0xf'));var toCsv=require(_0x2990('0xa'));var querystring=require('querystring');var Papa=require(_0x2990('0x10'));var Redis=require(_0x2990('0x11'));var authService=require(_0x2990('0x12'));var qs=require(_0x2990('0x13'));var as=require(_0x2990('0x14'));var hardwareService=require(_0x2990('0x15'));var logger=require(_0x2990('0x16'))(_0x2990('0x17'));var utils=require(_0x2990('0x18'));var config=require(_0x2990('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0x2990('0x1a'))['db'];var jayson=require(_0x2990('0x1b'));var client=jayson['client'][_0x2990('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0x5d1e44,_0x94d61f,_0x3220d0,_0x179974){return new BPromise(function(_0x5c7a82,_0xc2370a){var _0x4b666f=_0x179974||client;return _0x4b666f[_0x2990('0x1d')](_0x5d1e44,_0x3220d0)[_0x2990('0x1e')](function(_0x9a6f42){logger[_0x2990('0x1f')](_0x2990('0x20'),_0x94d61f,_0x2990('0x21'));logger[_0x2990('0x22')](_0x2990('0x23'),_0x94d61f,'request\x20sent',JSON[_0x2990('0x24')](_0x9a6f42));if(_0x9a6f42[_0x2990('0x25')]){if(_0x9a6f42[_0x2990('0x25')]['code']===0x1f4){logger['error'](_0x2990('0x20'),_0x94d61f,_0x9a6f42[_0x2990('0x25')][_0x2990('0x26')]);return _0xc2370a(_0x9a6f42['error'][_0x2990('0x26')]);}logger[_0x2990('0x25')](_0x2990('0x20'),_0x94d61f,_0x9a6f42[_0x2990('0x25')]['message']);return _0x5c7a82(_0x9a6f42[_0x2990('0x25')][_0x2990('0x26')]);}else{logger[_0x2990('0x1f')](_0x2990('0x20'),_0x94d61f,_0x2990('0x21'));_0x5c7a82(_0x9a6f42[_0x2990('0x27')][_0x2990('0x26')]);}})['catch'](function(_0x44ebbe){logger[_0x2990('0x25')](_0x2990('0x20'),_0x94d61f,_0x44ebbe);_0xc2370a(_0x44ebbe);});});}function respondWithStatusCode(_0x47b8c8,_0x10c6c8){_0x10c6c8=_0x10c6c8||0xcc;return function(_0x1e0b59){if(_0x1e0b59){return _0x47b8c8[_0x2990('0x28')](_0x10c6c8);}return _0x47b8c8[_0x2990('0x29')](_0x10c6c8)[_0x2990('0x2a')]();};}function respondWithResult(_0x2a65d5,_0x18cb9f){_0x18cb9f=_0x18cb9f||0xc8;return function(_0x157278){if(_0x157278){return _0x2a65d5[_0x2990('0x29')](_0x18cb9f)['json'](_0x157278);}};}function respondWithFilteredResult(_0x26a709,_0x5d31d1){return function(_0x31d0cc){if(_0x31d0cc){var _0x37d9a4=typeof _0x5d31d1['offset']===_0x2990('0x2b')&&typeof _0x5d31d1['limit']===_0x2990('0x2b');var _0x4cd9cf=_0x31d0cc[_0x2990('0x2c')];var _0x37773b=_0x37d9a4?0x0:_0x5d31d1['offset'];var _0x30d9ee=_0x37d9a4?_0x31d0cc['count']:_0x5d31d1[_0x2990('0x2d')]+_0x5d31d1[_0x2990('0x2e')];var _0x34c46c;if(_0x30d9ee>=_0x4cd9cf){_0x30d9ee=_0x4cd9cf;_0x34c46c=0xc8;}else{_0x34c46c=0xce;}_0x26a709[_0x2990('0x29')](_0x34c46c);return _0x26a709[_0x2990('0x2f')](_0x2990('0x30'),_0x37773b+'-'+_0x30d9ee+'/'+_0x4cd9cf)['json'](_0x31d0cc);}return null;};}function patchUpdates(_0xe72de4){return function(_0x116568){try{jsonpatch[_0x2990('0x31')](_0x116568,_0xe72de4,!![]);}catch(_0x1a5af7){return BPromise['reject'](_0x1a5af7);}return _0x116568[_0x2990('0x32')]();};}function saveUpdates(_0xcea7e2,_0x48629d){return function(_0x50c8d2){if(_0x50c8d2){return _0x50c8d2[_0x2990('0x33')](_0xcea7e2)[_0x2990('0x1e')](function(_0x25e60b){return _0x25e60b;});}return null;};}function removeEntity(_0x14fa35,_0x33276c){return function(_0x25bf9e){if(_0x25bf9e){return _0x25bf9e[_0x2990('0x34')]()[_0x2990('0x1e')](function(){var _0x467cb0=_0x25bf9e[_0x2990('0x35')]({'plain':!![]});var _0x1ecb5f=_0x2990('0x36');return db[_0x2990('0x37')]['destroy']({'where':{'type':_0x1ecb5f,'resourceId':_0x467cb0['id']}})[_0x2990('0x1e')](function(){return _0x25bf9e;});})['then'](function(){_0x14fa35['status'](0xcc)[_0x2990('0x2a')]();});}};}function handleEntityNotFound(_0x52df79,_0x530581){return function(_0x4e4797){if(!_0x4e4797){_0x52df79[_0x2990('0x28')](0x194);}return _0x4e4797;};}function handleError(_0xf58ec4,_0x1c4108){_0x1c4108=_0x1c4108||0x1f4;return function(_0x5170ab){logger['error'](_0x5170ab[_0x2990('0x38')]);if(_0x5170ab[_0x2990('0x39')]){delete _0x5170ab[_0x2990('0x39')];}_0xf58ec4[_0x2990('0x29')](_0x1c4108)[_0x2990('0x3a')](_0x5170ab);};}exports['index']=function(_0x20e735,_0x1aa686){var _0x3c4f7e={},_0x48bd1d={},_0x5f04f6={'count':0x0,'rows':[]};var _0x43ec0a=_[_0x2990('0x3b')](db['VoiceContext'][_0x2990('0x3c')],function(_0x536a9b){return{'name':_0x536a9b[_0x2990('0x3d')],'type':_0x536a9b['type']['key']};});_0x48bd1d['model']=_[_0x2990('0x3b')](_0x43ec0a,'name');_0x48bd1d[_0x2990('0x3e')]=_[_0x2990('0x3f')](_0x20e735[_0x2990('0x3e')]);_0x48bd1d[_0x2990('0x40')]=_[_0x2990('0x41')](_0x48bd1d[_0x2990('0x42')],_0x48bd1d['query']);_0x3c4f7e[_0x2990('0x43')]=_[_0x2990('0x41')](_0x48bd1d[_0x2990('0x42')],qs[_0x2990('0x44')](_0x20e735[_0x2990('0x3e')][_0x2990('0x44')]));_0x3c4f7e[_0x2990('0x43')]=_0x3c4f7e[_0x2990('0x43')][_0x2990('0x45')]?_0x3c4f7e[_0x2990('0x43')]:_0x48bd1d[_0x2990('0x42')];if(!_0x20e735[_0x2990('0x3e')]['hasOwnProperty'](_0x2990('0x46'))){_0x3c4f7e[_0x2990('0x2e')]=qs[_0x2990('0x2e')](_0x20e735[_0x2990('0x3e')][_0x2990('0x2e')]);_0x3c4f7e[_0x2990('0x2d')]=qs[_0x2990('0x2d')](_0x20e735[_0x2990('0x3e')][_0x2990('0x2d')]);}_0x3c4f7e[_0x2990('0x47')]=qs[_0x2990('0x48')](_0x20e735['query'][_0x2990('0x48')]);_0x3c4f7e[_0x2990('0x49')]=qs[_0x2990('0x40')](_[_0x2990('0x4a')](_0x20e735[_0x2990('0x3e')],_0x48bd1d[_0x2990('0x40')]),_0x43ec0a);if(_0x20e735[_0x2990('0x3e')][_0x2990('0x4b')]){_0x3c4f7e['where']=_[_0x2990('0x4c')](_0x3c4f7e[_0x2990('0x49')],{'$or':_[_0x2990('0x3b')](_0x43ec0a,function(_0x5cdf11){if(_0x5cdf11[_0x2990('0x4d')]!==_0x2990('0x4e')){var _0x2460b6={};_0x2460b6[_0x5cdf11[_0x2990('0x39')]]={'$like':'%'+_0x20e735[_0x2990('0x3e')][_0x2990('0x4b')]+'%'};return _0x2460b6;}})});}_0x3c4f7e=_[_0x2990('0x4c')]({},_0x3c4f7e,_0x20e735[_0x2990('0x4f')]);var _0x43819e={'where':_0x3c4f7e[_0x2990('0x49')]};return db[_0x2990('0x50')]['count'](_0x43819e)[_0x2990('0x1e')](function(_0x44435b){_0x5f04f6[_0x2990('0x2c')]=_0x44435b;if(_0x20e735[_0x2990('0x3e')][_0x2990('0x51')]){_0x3c4f7e[_0x2990('0x52')]=[{'all':!![]}];}return db[_0x2990('0x50')][_0x2990('0x53')](_0x3c4f7e);})[_0x2990('0x1e')](function(_0x55d244){_0x5f04f6['rows']=_0x55d244;return _0x5f04f6;})[_0x2990('0x1e')](respondWithFilteredResult(_0x1aa686,_0x3c4f7e))['catch'](handleError(_0x1aa686,null));};exports['show']=function(_0x248c4c,_0x45903e){var _0x11ec8f={'raw':![],'where':{'id':_0x248c4c[_0x2990('0x54')]['id']}},_0x5ca86b={};_0x5ca86b['model']=_[_0x2990('0x3f')](db[_0x2990('0x50')][_0x2990('0x3c')]);_0x5ca86b[_0x2990('0x3e')]=_['keys'](_0x248c4c[_0x2990('0x3e')]);_0x5ca86b[_0x2990('0x40')]=_[_0x2990('0x41')](_0x5ca86b[_0x2990('0x42')],_0x5ca86b['query']);_0x11ec8f[_0x2990('0x43')]=_[_0x2990('0x41')](_0x5ca86b[_0x2990('0x42')],qs[_0x2990('0x44')](_0x248c4c['query'][_0x2990('0x44')]));_0x11ec8f[_0x2990('0x43')]=_0x11ec8f[_0x2990('0x43')][_0x2990('0x45')]?_0x11ec8f[_0x2990('0x43')]:_0x5ca86b[_0x2990('0x42')];if(_0x248c4c['query'][_0x2990('0x51')]){_0x11ec8f[_0x2990('0x52')]=[{'all':!![]}];}_0x11ec8f=_[_0x2990('0x4c')]({},_0x11ec8f,_0x248c4c[_0x2990('0x4f')]);return db[_0x2990('0x50')][_0x2990('0x55')](_0x11ec8f)['then'](handleEntityNotFound(_0x45903e,null))[_0x2990('0x1e')](respondWithResult(_0x45903e,null))[_0x2990('0x56')](handleError(_0x45903e,null));};exports[_0x2990('0x57')]=function(_0x2c37c5,_0x345b4c,_0xab0570){var _0x143787;return db[_0x2990('0x50')][_0x2990('0x57')](_0x2c37c5[_0x2990('0x58')],{'raw':!![]})[_0x2990('0x1e')](function(_0x56b993){_0x143787=_0x56b993;return db['VoiceContext'][_0x2990('0x53')]({'raw':!![]});})[_0x2990('0x1e')](function(_0x1b916d){var _0x4a9fe7=fs['readFileSync'](path[_0x2990('0x59')](config[_0x2990('0x5a')],_0x2990('0x5b')),_0x2990('0x5c'));var _0x2bacaf=ejs['render'](_0x4a9fe7,{'contexts':_0x1b916d||[]});fs['writeFileSync'](_0x2990('0x5d'),_0x2bacaf);})[_0x2990('0x1e')](function(){return respondWithRpcPromise('Reload',_0x2990('0x57'),{'module':_0x2990('0x5e')});})[_0x2990('0x1e')](function(){var _0x1829dd=_0x2c37c5[_0x2990('0x5f')]['get']({'plain':!![]});if(!_0x1829dd)throw new Error(_0x2990('0x60'));if(_0x1829dd['role']===_0x2990('0x5f')){var _0x259e1c=_0x143787[_0x2990('0x35')]({'plain':!![]});return db[_0x2990('0x61')][_0x2990('0x55')]({'where':{'name':_0x2990('0x36'),'userProfileId':_0x1829dd[_0x2990('0x62')]},'raw':!![]})['then'](function(_0x1ccb85){if(_0x1ccb85&&_0x1ccb85[_0x2990('0x63')]===0x0){return db[_0x2990('0x37')][_0x2990('0x57')]({'name':_0x259e1c[_0x2990('0x39')],'resourceId':_0x259e1c['id'],'type':_0x1ccb85[_0x2990('0x39')],'sectionId':_0x1ccb85['id']},{})['then'](function(){return _0x143787;});}else{return _0x143787;}})[_0x2990('0x56')](function(_0x3d8828){logger[_0x2990('0x25')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3d8828);throw _0x3d8828;});}return _0x143787;})[_0x2990('0x1e')](respondWithResult(_0x345b4c,0xc9))['catch'](handleError(_0x345b4c,null));};exports['update']=function(_0x4b7337,_0x4b088f,_0x183958){var _0xafc11f;return db[_0x2990('0x50')]['find']({'where':{'id':_0x4b7337[_0x2990('0x54')]['id']}})[_0x2990('0x1e')](handleEntityNotFound(_0x4b088f,null))['then'](saveUpdates(_0x4b7337[_0x2990('0x58')],null))['then'](function(_0x47b3c8){if(_0x47b3c8){_0xafc11f=_0x47b3c8;return db['VoiceContext'][_0x2990('0x53')]({'raw':!![]});}})[_0x2990('0x1e')](function(_0x22958a){var _0xe74810=fs['readFileSync'](path[_0x2990('0x59')](config['root'],_0x2990('0x5b')),_0x2990('0x5c'));var _0x43abf4=ejs['render'](_0xe74810,{'contexts':_0x22958a||[]});fs[_0x2990('0x64')]('/etc/asterisk/extensions_xcally_contexts.conf',_0x43abf4);})['then'](function(){return respondWithRpcPromise(_0x2990('0x65'),_0x2990('0x33'),{'module':_0x2990('0x5e')});})[_0x2990('0x1e')](function(){return _0xafc11f;})[_0x2990('0x1e')](respondWithResult(_0x4b088f,null))[_0x2990('0x56')](handleError(_0x4b088f,null));};exports[_0x2990('0x34')]=function(_0x21e8f8,_0x235b5f,_0x473eba){var _0x3e5f7a;return db[_0x2990('0x50')][_0x2990('0x55')]({'where':{'id':_0x21e8f8[_0x2990('0x54')]['id']}})[_0x2990('0x1e')](handleEntityNotFound(_0x235b5f,null))[_0x2990('0x1e')](removeEntity(_0x235b5f,null))['then'](function(){return db[_0x2990('0x50')][_0x2990('0x53')]({'raw':!![]});})[_0x2990('0x1e')](function(_0x2132a5){var _0x4e70ab=fs['readFileSync'](path[_0x2990('0x59')](config['root'],_0x2990('0x5b')),'utf8');var _0x609d0b=ejs[_0x2990('0x66')](_0x4e70ab,{'contexts':_0x2132a5});fs['writeFileSync'](_0x2990('0x5d'),_0x609d0b);return respondWithRpcPromise('Reload',_0x2990('0x34'),{'module':_0x2990('0x5e')});})['catch'](handleError(_0x235b5f,null));};
\ No newline at end of file
index b885e58..d02607d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa3b9=['util','../../config/logger','api','request-promise','path','rimraf','../../config/environment','exports','define','VoiceContext','voice_contexts','lodash'];(function(_0x4a6443,_0x493fa5){var _0x25a648=function(_0x40a641){while(--_0x40a641){_0x4a6443['push'](_0x4a6443['shift']());}};_0x25a648(++_0x493fa5);}(_0xa3b9,0x6b));var _0x9a3b=function(_0x473369,_0x4cf6ed){_0x473369=_0x473369-0x0;var _0x19cd0e=_0xa3b9[_0x473369];return _0x19cd0e;};'use strict';var _=require(_0x9a3b('0x0'));var util=require(_0x9a3b('0x1'));var logger=require(_0x9a3b('0x2'))(_0x9a3b('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x9a3b('0x4'));var fs=require('fs');var path=require(_0x9a3b('0x5'));var rimraf=require(_0x9a3b('0x6'));var config=require(_0x9a3b('0x7'));var attributes=require('./voiceContext.attributes');module[_0x9a3b('0x8')]=function(_0x5649a1,_0x439762){return _0x5649a1[_0x9a3b('0x9')](_0x9a3b('0xa'),attributes,{'tableName':_0x9a3b('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0e80=['bluebird','request-promise','path','rimraf','../../config/environment','./voiceContext.attributes','exports','define','voice_contexts','../../config/logger','api','moment'];(function(_0x2254f2,_0x2a8245){var _0x188eed=function(_0x399a26){while(--_0x399a26){_0x2254f2['push'](_0x2254f2['shift']());}};_0x188eed(++_0x2a8245);}(_0x0e80,0x1ad));var _0x00e8=function(_0x239670,_0x530e4e){_0x239670=_0x239670-0x0;var _0x5bd03a=_0x0e80[_0x239670];return _0x5bd03a;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x00e8('0x0'))(_0x00e8('0x1'));var moment=require(_0x00e8('0x2'));var BPromise=require(_0x00e8('0x3'));var rp=require(_0x00e8('0x4'));var fs=require('fs');var path=require(_0x00e8('0x5'));var rimraf=require(_0x00e8('0x6'));var config=require(_0x00e8('0x7'));var attributes=require(_0x00e8('0x8'));module[_0x00e8('0x9')]=function(_0x256805,_0x437a3c){return _0x256805[_0x00e8('0xa')]('VoiceContext',attributes,{'tableName':_0x00e8('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 711615f..6758efd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd05a=['info','result','catch','util','moment','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','request','then','VoiceContext,\x20%s,\x20%s','debug','VoiceContext,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xd05a,0x143));var _0xad05=function(_0x4dfc76,_0x349670){_0x4dfc76=_0x4dfc76-0x0;var _0x5d5b97=_0xd05a[_0x4dfc76];return _0x5d5b97;};'use strict';var _=require('lodash');var util=require(_0xad05('0x0'));var moment=require(_0xad05('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xad05('0x2'));var logger=require(_0xad05('0x3'))(_0xad05('0x4'));var config=require(_0xad05('0x5'));var jayson=require(_0xad05('0x6'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x39ddaf,_0x45303c,_0xd12d76){return new BPromise(function(_0x565f85,_0x17ec26){return client[_0xad05('0x7')](_0x39ddaf,_0xd12d76)[_0xad05('0x8')](function(_0x573acb){logger['info'](_0xad05('0x9'),_0x45303c,'request\x20sent');logger[_0xad05('0xa')](_0xad05('0xb'),_0x45303c,_0xad05('0xc'),JSON[_0xad05('0xd')](_0x573acb));if(_0x573acb[_0xad05('0xe')]){if(_0x573acb[_0xad05('0xe')][_0xad05('0xf')]===0x1f4){logger[_0xad05('0xe')](_0xad05('0x9'),_0x45303c,_0x573acb[_0xad05('0xe')]['message']);return _0x17ec26(_0x573acb[_0xad05('0xe')]['message']);}logger[_0xad05('0xe')]('VoiceContext,\x20%s,\x20%s',_0x45303c,_0x573acb[_0xad05('0xe')][_0xad05('0x10')]);return _0x565f85(_0x573acb[_0xad05('0xe')]['message']);}else{logger[_0xad05('0x11')]('VoiceContext,\x20%s,\x20%s',_0x45303c,_0xad05('0xc'));_0x565f85(_0x573acb[_0xad05('0x12')][_0xad05('0x10')]);}})[_0xad05('0x13')](function(_0x43ab03){logger[_0xad05('0xe')]('VoiceContext,\x20%s,\x20%s',_0x45303c,_0x43ab03);_0x17ec26(_0x43ab03);});});}
\ No newline at end of file
+var _0x659e=['jayson/promise','http','request','then','info','VoiceContext,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','lodash','moment','bluebird','ioredis','../../config/utils','../../config/environment'];(function(_0x12fb37,_0x260e13){var _0x2b2e56=function(_0x5f4060){while(--_0x5f4060){_0x12fb37['push'](_0x12fb37['shift']());}};_0x2b2e56(++_0x260e13);}(_0x659e,0x117));var _0xe659=function(_0x3c9aef,_0x5d85f3){_0x3c9aef=_0x3c9aef-0x0;var _0x47c0dd=_0x659e[_0x3c9aef];return _0x47c0dd;};'use strict';var _=require(_0xe659('0x0'));var util=require('util');var moment=require(_0xe659('0x1'));var BPromise=require(_0xe659('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe659('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xe659('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0xe659('0x5'));var jayson=require(_0xe659('0x6'));var client=jayson['client'][_0xe659('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x51babb,_0x1a077b,_0x3207ea){return new BPromise(function(_0x8a8cc3,_0x2057cc){return client[_0xe659('0x8')](_0x51babb,_0x3207ea)[_0xe659('0x9')](function(_0x55c8df){logger[_0xe659('0xa')](_0xe659('0xb'),_0x1a077b,_0xe659('0xc'));logger[_0xe659('0xd')]('VoiceContext,\x20%s,\x20%s,\x20%s',_0x1a077b,_0xe659('0xc'),JSON[_0xe659('0xe')](_0x55c8df));if(_0x55c8df[_0xe659('0xf')]){if(_0x55c8df[_0xe659('0xf')][_0xe659('0x10')]===0x1f4){logger['error'](_0xe659('0xb'),_0x1a077b,_0x55c8df[_0xe659('0xf')][_0xe659('0x11')]);return _0x2057cc(_0x55c8df[_0xe659('0xf')][_0xe659('0x11')]);}logger[_0xe659('0xf')](_0xe659('0xb'),_0x1a077b,_0x55c8df[_0xe659('0xf')][_0xe659('0x11')]);return _0x8a8cc3(_0x55c8df[_0xe659('0xf')][_0xe659('0x11')]);}else{logger[_0xe659('0xa')](_0xe659('0xb'),_0x1a077b,'request\x20sent');_0x8a8cc3(_0x55c8df['result'][_0xe659('0x11')]);}})[_0xe659('0x12')](function(_0x26e2e4){logger[_0xe659('0xf')]('VoiceContext,\x20%s,\x20%s',_0x1a077b,_0x26e2e4);_0x2057cc(_0x26e2e4);});});}
\ No newline at end of file
index a30e0ed..d5683db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x554d=['post','create','put','update','delete','destroy','multer','path','connect-timeout','Router','fs-extra','./voiceDialReport.controller','isAuthenticated','get','/describe','describe','/:id','show'];(function(_0x48b598,_0x2a5afb){var _0x580c58=function(_0x157d4c){while(--_0x157d4c){_0x48b598['push'](_0x48b598['shift']());}};_0x580c58(++_0x2a5afb);}(_0x554d,0x1c8));var _0xd554=function(_0x399194,_0x57df7b){_0x399194=_0x399194-0x0;var _0x8384ee=_0x554d[_0x399194];return _0x8384ee;};'use strict';var multer=require(_0xd554('0x0'));var util=require('util');var path=require(_0xd554('0x1'));var timeout=require(_0xd554('0x2'));var express=require('express');var router=express[_0xd554('0x3')]();var fs_extra=require(_0xd554('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xd554('0x5'));router['get']('/',auth[_0xd554('0x6')](),controller['index']);router[_0xd554('0x7')](_0xd554('0x8'),auth[_0xd554('0x6')](),controller[_0xd554('0x9')]);router[_0xd554('0x7')](_0xd554('0xa'),auth[_0xd554('0x6')](),controller[_0xd554('0xb')]);router[_0xd554('0xc')]('/',auth[_0xd554('0x6')](),controller[_0xd554('0xd')]);router[_0xd554('0xe')]('/:id',auth[_0xd554('0x6')](),controller[_0xd554('0xf')]);router[_0xd554('0x10')](_0xd554('0xa'),auth[_0xd554('0x6')](),controller[_0xd554('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0x71a4=['./voiceDialReport.controller','get','index','isAuthenticated','show','create','put','/:id','update','destroy','exports','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x3c0d80,_0x3611d1){var _0xfc78fe=function(_0x56b03a){while(--_0x56b03a){_0x3c0d80['push'](_0x3c0d80['shift']());}};_0xfc78fe(++_0x3611d1);}(_0x71a4,0x14f));var _0x471a=function(_0x46aff1,_0x33782){_0x46aff1=_0x46aff1-0x0;var _0x4415cb=_0x71a4[_0x46aff1];return _0x4415cb;};'use strict';var multer=require(_0x471a('0x0'));var util=require('util');var path=require(_0x471a('0x1'));var timeout=require(_0x471a('0x2'));var express=require('express');var router=express[_0x471a('0x3')]();var fs_extra=require(_0x471a('0x4'));var auth=require(_0x471a('0x5'));var interaction=require(_0x471a('0x6'));var config=require('../../config/environment');var controller=require(_0x471a('0x7'));router[_0x471a('0x8')]('/',auth['isAuthenticated'](),controller[_0x471a('0x9')]);router[_0x471a('0x8')]('/describe',auth['isAuthenticated'](),controller['describe']);router[_0x471a('0x8')]('/:id',auth[_0x471a('0xa')](),controller[_0x471a('0xb')]);router['post']('/',auth[_0x471a('0xa')](),controller[_0x471a('0xc')]);router[_0x471a('0xd')](_0x471a('0xe'),auth[_0x471a('0xa')](),controller[_0x471a('0xf')]);router['delete'](_0x471a('0xe'),auth['isAuthenticated'](),controller[_0x471a('0x10')]);module[_0x471a('0x11')]=router;
\ No newline at end of file
index 64f5f70..0e8b76d 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(_0x16acb7,_0x23f034){var _0x39bf39=function(_0x21281e){while(--_0x21281e){_0x16acb7['push'](_0x16acb7['shift']());}};_0x39bf39(++_0x23f034);}(_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 _0x81bd=['exports','STRING','INTEGER','DATE','sequelize'];(function(_0x3bc158,_0x436e3a){var _0x977671=function(_0xa675fa){while(--_0xa675fa){_0x3bc158['push'](_0x3bc158['shift']());}};_0x977671(++_0x436e3a);}(_0x81bd,0x7c));var _0xd81b=function(_0x1a58d1,_0xa90685){_0x1a58d1=_0x1a58d1-0x0;var _0x101adc=_0x81bd[_0x1a58d1];return _0x101adc;};'use strict';var Sequelize=require(_0xd81b('0x0'));module[_0xd81b('0x1')]={'privilege':{'type':Sequelize[_0xd81b('0x2')]},'channel':{'type':Sequelize[_0xd81b('0x2')]},'channelstate':{'type':Sequelize[_0xd81b('0x3')]},'channelstatedesc':{'type':Sequelize[_0xd81b('0x2')]},'calleridnum':{'type':Sequelize[_0xd81b('0x2')]},'calleridname':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0xd81b('0x2')]},'connectedlinename':{'type':Sequelize[_0xd81b('0x2')]},'language':{'type':Sequelize[_0xd81b('0x2')]},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0xd81b('0x2')]},'exten':{'type':Sequelize[_0xd81b('0x2')]},'priority':{'type':Sequelize[_0xd81b('0x3')]},'uniqueid':{'type':Sequelize['STRING']},'linkedid':{'type':Sequelize['STRING']},'destchannel':{'type':Sequelize[_0xd81b('0x2')]},'destchannelstate':{'type':Sequelize['INTEGER']},'destchannelstatedesc':{'type':Sequelize[_0xd81b('0x2')]},'destcalleridnum':{'type':Sequelize[_0xd81b('0x2')]},'destcalleridname':{'type':Sequelize[_0xd81b('0x2')]},'destconnectedlinenum':{'type':Sequelize[_0xd81b('0x2')]},'destconnectedlinename':{'type':Sequelize[_0xd81b('0x2')]},'destlanguage':{'type':Sequelize[_0xd81b('0x2')]},'destaccountcode':{'type':Sequelize[_0xd81b('0x2')]},'destcontext':{'type':Sequelize[_0xd81b('0x2')]},'destexten':{'type':Sequelize[_0xd81b('0x2')]},'destpriority':{'type':Sequelize[_0xd81b('0x3')]},'destuniqueid':{'type':Sequelize[_0xd81b('0x2')]},'destlinkedid':{'type':Sequelize[_0xd81b('0x2')]},'dialstring':{'type':Sequelize[_0xd81b('0x2')]},'dialstatus':{'type':Sequelize['STRING']},'starttime':{'type':Sequelize[_0xd81b('0x4')]},'answertime':{'type':Sequelize['DATE']},'endtime':{'type':Sequelize[_0xd81b('0x4')]},'lastevent':{'type':Sequelize[_0xd81b('0x2')],'comment':'called,connect,complete'},'routeId':{'type':Sequelize[_0xd81b('0x3')]},'duration':{'type':Sequelize['INTEGER']},'holdtime':{'type':Sequelize[_0xd81b('0x3')]},'billableseconds':{'type':Sequelize[_0xd81b('0x3')]}};
\ No newline at end of file
index 9b1ef2f..a45c1e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7887=['moment','path','sox','fs-extra','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','reject','update','then','error','stack','name','send','index','map','rawAttributes','fieldName','key','model','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','sort','filters','pick','filter','where','merge','type','VoiceDialReport','includeAll','include','findAll','catch','show','length','options','find','create','body','params','destroy','describe','eml-format','rimraf','zip-dir'];(function(_0xe12cab,_0x577f92){var _0x4db000=function(_0x445e81){while(--_0x445e81){_0xe12cab['push'](_0xe12cab['shift']());}};_0x4db000(++_0x577f92);}(_0x7887,0x16a));var _0x7788=function(_0x46e05c,_0x4df59d){_0x46e05c=_0x46e05c-0x0;var _0x33a4e5=_0x7887[_0x46e05c];return _0x33a4e5;};'use strict';var emlformat=require(_0x7788('0x0'));var rimraf=require(_0x7788('0x1'));var zipdir=require(_0x7788('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x7788('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0x7788('0x4'));var sox=require(_0x7788('0x5'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7788('0x6'));var _=require('lodash');var squel=require(_0x7788('0x7'));var crypto=require(_0x7788('0x8'));var jsforce=require(_0x7788('0x9'));var deskjs=require(_0x7788('0xa'));var toCsv=require('to-csv');var querystring=require(_0x7788('0xb'));var Papa=require('papaparse');var Redis=require(_0x7788('0xc'));var authService=require(_0x7788('0xd'));var qs=require(_0x7788('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x7788('0xf'));var logger=require(_0x7788('0x10'))(_0x7788('0x11'));var utils=require(_0x7788('0x12'));var config=require(_0x7788('0x13'));var licenseUtil=require(_0x7788('0x14'));var db=require(_0x7788('0x15'))['db'];function respondWithStatusCode(_0x3c9525,_0x5d22ef){_0x5d22ef=_0x5d22ef||0xcc;return function(_0x1cb20a){if(_0x1cb20a){return _0x3c9525[_0x7788('0x16')](_0x5d22ef);}return _0x3c9525[_0x7788('0x17')](_0x5d22ef)[_0x7788('0x18')]();};}function respondWithResult(_0x35cea4,_0x132232){_0x132232=_0x132232||0xc8;return function(_0x20303c){if(_0x20303c){return _0x35cea4[_0x7788('0x17')](_0x132232)[_0x7788('0x19')](_0x20303c);}};}function respondWithFilteredResult(_0x5f1ee0,_0x316f88){return function(_0x30019f){if(_0x30019f){var _0x1970b6=typeof _0x316f88[_0x7788('0x1a')]==='undefined'&&typeof _0x316f88[_0x7788('0x1b')]===_0x7788('0x1c');var _0xa19350=_0x30019f[_0x7788('0x1d')];var _0x36ccca=_0x1970b6?0x0:_0x316f88[_0x7788('0x1a')];var _0x34aa52=_0x1970b6?_0x30019f[_0x7788('0x1d')]:_0x316f88['offset']+_0x316f88['limit'];var _0x2e5de9;if(_0x34aa52>=_0xa19350){_0x34aa52=_0xa19350;_0x2e5de9=0xc8;}else{_0x2e5de9=0xce;}_0x5f1ee0[_0x7788('0x17')](_0x2e5de9);return _0x5f1ee0[_0x7788('0x1e')](_0x7788('0x1f'),_0x36ccca+'-'+_0x34aa52+'/'+_0xa19350)[_0x7788('0x19')](_0x30019f);}return null;};}function patchUpdates(_0x2ac06e){return function(_0x246c23){try{jsonpatch['apply'](_0x246c23,_0x2ac06e,!![]);}catch(_0x1f7b4c){return BPromise[_0x7788('0x20')](_0x1f7b4c);}return _0x246c23['save']();};}function saveUpdates(_0x28f2d4,_0x3ff875){return function(_0x3f824d){if(_0x3f824d){return _0x3f824d[_0x7788('0x21')](_0x28f2d4)[_0x7788('0x22')](function(_0x1087f0){return _0x1087f0;});}return null;};}function removeEntity(_0x1f1c7b,_0x252b48){return function(_0x3cee9a){if(_0x3cee9a){return _0x3cee9a['destroy']()[_0x7788('0x22')](function(){_0x1f1c7b['status'](0xcc)[_0x7788('0x18')]();});}};}function handleEntityNotFound(_0x205311,_0x55bf08){return function(_0x2daada){if(!_0x2daada){_0x205311[_0x7788('0x16')](0x194);}return _0x2daada;};}function handleError(_0x3122de,_0x27882){_0x27882=_0x27882||0x1f4;return function(_0x899deb){logger[_0x7788('0x23')](_0x899deb[_0x7788('0x24')]);if(_0x899deb[_0x7788('0x25')]){delete _0x899deb['name'];}_0x3122de[_0x7788('0x17')](_0x27882)[_0x7788('0x26')](_0x899deb);};}exports[_0x7788('0x27')]=function(_0x1453f5,_0x330d15){var _0x321b92={},_0x3e2812={},_0x12b05e={'count':0x0,'rows':[]};var _0x4dc6b3=_[_0x7788('0x28')](db['VoiceDialReport'][_0x7788('0x29')],function(_0x27a7f5){return{'name':_0x27a7f5[_0x7788('0x2a')],'type':_0x27a7f5['type'][_0x7788('0x2b')]};});_0x3e2812[_0x7788('0x2c')]=_[_0x7788('0x28')](_0x4dc6b3,_0x7788('0x25'));_0x3e2812[_0x7788('0x2d')]=_[_0x7788('0x2e')](_0x1453f5[_0x7788('0x2d')]);_0x3e2812['filters']=_[_0x7788('0x2f')](_0x3e2812[_0x7788('0x2c')],_0x3e2812[_0x7788('0x2d')]);_0x321b92[_0x7788('0x30')]=_[_0x7788('0x2f')](_0x3e2812[_0x7788('0x2c')],qs[_0x7788('0x31')](_0x1453f5['query'][_0x7788('0x31')]));_0x321b92[_0x7788('0x30')]=_0x321b92[_0x7788('0x30')]['length']?_0x321b92['attributes']:_0x3e2812[_0x7788('0x2c')];if(!_0x1453f5[_0x7788('0x2d')][_0x7788('0x32')](_0x7788('0x33'))){_0x321b92[_0x7788('0x1b')]=qs[_0x7788('0x1b')](_0x1453f5[_0x7788('0x2d')]['limit']);_0x321b92['offset']=qs[_0x7788('0x1a')](_0x1453f5[_0x7788('0x2d')][_0x7788('0x1a')]);}_0x321b92['order']=qs[_0x7788('0x34')](_0x1453f5[_0x7788('0x2d')][_0x7788('0x34')]);_0x321b92['where']=qs[_0x7788('0x35')](_[_0x7788('0x36')](_0x1453f5[_0x7788('0x2d')],_0x3e2812['filters']),_0x4dc6b3);if(_0x1453f5['query'][_0x7788('0x37')]){_0x321b92[_0x7788('0x38')]=_[_0x7788('0x39')](_0x321b92['where'],{'$or':_[_0x7788('0x28')](_0x4dc6b3,function(_0x4855f6){if(_0x4855f6[_0x7788('0x3a')]!=='VIRTUAL'){var _0xe280b3={};_0xe280b3[_0x4855f6[_0x7788('0x25')]]={'$like':'%'+_0x1453f5[_0x7788('0x2d')][_0x7788('0x37')]+'%'};return _0xe280b3;}})});}_0x321b92=_[_0x7788('0x39')]({},_0x321b92,_0x1453f5['options']);var _0x219254={'where':_0x321b92[_0x7788('0x38')]};return db[_0x7788('0x3b')][_0x7788('0x1d')](_0x219254)['then'](function(_0xcee025){_0x12b05e[_0x7788('0x1d')]=_0xcee025;if(_0x1453f5[_0x7788('0x2d')][_0x7788('0x3c')]){_0x321b92[_0x7788('0x3d')]=[{'all':!![]}];}return db[_0x7788('0x3b')][_0x7788('0x3e')](_0x321b92);})[_0x7788('0x22')](function(_0x2df12a){_0x12b05e['rows']=_0x2df12a;return _0x12b05e;})[_0x7788('0x22')](respondWithFilteredResult(_0x330d15,_0x321b92))[_0x7788('0x3f')](handleError(_0x330d15,null));};exports[_0x7788('0x40')]=function(_0x138305,_0x4a119d){var _0x20d5aa={'raw':!![],'where':{'id':_0x138305['params']['id']}},_0x1e289f={};_0x1e289f[_0x7788('0x2c')]=_[_0x7788('0x2e')](db[_0x7788('0x3b')][_0x7788('0x29')]);_0x1e289f['query']=_[_0x7788('0x2e')](_0x138305[_0x7788('0x2d')]);_0x1e289f[_0x7788('0x35')]=_[_0x7788('0x2f')](_0x1e289f['model'],_0x1e289f['query']);_0x20d5aa[_0x7788('0x30')]=_[_0x7788('0x2f')](_0x1e289f[_0x7788('0x2c')],qs['fields'](_0x138305[_0x7788('0x2d')][_0x7788('0x31')]));_0x20d5aa[_0x7788('0x30')]=_0x20d5aa[_0x7788('0x30')][_0x7788('0x41')]?_0x20d5aa[_0x7788('0x30')]:_0x1e289f[_0x7788('0x2c')];if(_0x138305[_0x7788('0x2d')][_0x7788('0x3c')]){_0x20d5aa[_0x7788('0x3d')]=[{'all':!![]}];}_0x20d5aa=_['merge']({},_0x20d5aa,_0x138305[_0x7788('0x42')]);return db[_0x7788('0x3b')][_0x7788('0x43')](_0x20d5aa)[_0x7788('0x22')](handleEntityNotFound(_0x4a119d,null))[_0x7788('0x22')](respondWithResult(_0x4a119d,null))[_0x7788('0x3f')](handleError(_0x4a119d,null));};exports[_0x7788('0x44')]=function(_0x114ecc,_0x1e7a9c){return db['VoiceDialReport'][_0x7788('0x44')](_0x114ecc[_0x7788('0x45')],{})[_0x7788('0x22')](respondWithResult(_0x1e7a9c,0xc9))[_0x7788('0x3f')](handleError(_0x1e7a9c,null));};exports[_0x7788('0x21')]=function(_0x2d3f48,_0x10e406){if(_0x2d3f48['body']['id']){delete _0x2d3f48[_0x7788('0x45')]['id'];}return db[_0x7788('0x3b')][_0x7788('0x43')]({'where':{'id':_0x2d3f48[_0x7788('0x46')]['id']}})[_0x7788('0x22')](handleEntityNotFound(_0x10e406,null))[_0x7788('0x22')](saveUpdates(_0x2d3f48[_0x7788('0x45')],null))[_0x7788('0x22')](respondWithResult(_0x10e406,null))['catch'](handleError(_0x10e406,null));};exports[_0x7788('0x47')]=function(_0x501f45,_0x1d4066){return db[_0x7788('0x3b')]['find']({'where':{'id':_0x501f45[_0x7788('0x46')]['id']}})[_0x7788('0x22')](handleEntityNotFound(_0x1d4066,null))[_0x7788('0x22')](removeEntity(_0x1d4066,null))[_0x7788('0x3f')](handleError(_0x1d4066,null));};exports[_0x7788('0x48')]=function(_0x5e8835,_0xc1524f){return db['VoiceDialReport']['describe']()[_0x7788('0x22')](respondWithResult(_0xc1524f,null))[_0x7788('0x3f')](handleError(_0xc1524f,null));};
\ No newline at end of file
+var _0xa75b=['body','find','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','count','offset','Content-Range','apply','reject','save','update','then','destroy','error','name','send','map','VoiceDialReport','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','length','hasOwnProperty','nolimit','limit','sort','filters','pick','where','filter','merge','includeAll','findAll','rows','catch','show','params','fields','include','options','create'];(function(_0x2e726d,_0x48f27d){var _0x50f185=function(_0x1d29c1){while(--_0x1d29c1){_0x2e726d['push'](_0x2e726d['shift']());}};_0x50f185(++_0x48f27d);}(_0xa75b,0x123));var _0xba75=function(_0x386819,_0x49f38d){_0x386819=_0x386819-0x0;var _0xddaf70=_0xa75b[_0x386819];return _0xddaf70;};'use strict';var emlformat=require(_0xba75('0x0'));var rimraf=require(_0xba75('0x1'));var zipdir=require(_0xba75('0x2'));var jsonpatch=require(_0xba75('0x3'));var rp=require(_0xba75('0x4'));var moment=require('moment');var BPromise=require(_0xba75('0x5'));var Mustache=require(_0xba75('0x6'));var util=require('util');var path=require(_0xba75('0x7'));var sox=require(_0xba75('0x8'));var csv=require(_0xba75('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0xba75('0xa'));var jsforce=require(_0xba75('0xb'));var deskjs=require(_0xba75('0xc'));var toCsv=require(_0xba75('0x9'));var querystring=require(_0xba75('0xd'));var Papa=require(_0xba75('0xe'));var Redis=require(_0xba75('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xba75('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xba75('0x11'))(_0xba75('0x12'));var utils=require('../../config/utils');var config=require(_0xba75('0x13'));var licenseUtil=require(_0xba75('0x14'));var db=require(_0xba75('0x15'))['db'];function respondWithStatusCode(_0x10cd60,_0x565ee2){_0x565ee2=_0x565ee2||0xcc;return function(_0x20ad69){if(_0x20ad69){return _0x10cd60[_0xba75('0x16')](_0x565ee2);}return _0x10cd60['status'](_0x565ee2)[_0xba75('0x17')]();};}function respondWithResult(_0x404995,_0x4cfdba){_0x4cfdba=_0x4cfdba||0xc8;return function(_0xe4b0a7){if(_0xe4b0a7){return _0x404995[_0xba75('0x18')](_0x4cfdba)[_0xba75('0x19')](_0xe4b0a7);}};}function respondWithFilteredResult(_0x5bf394,_0x2d46c8){return function(_0x54f1df){if(_0x54f1df){var _0x5d59fd=typeof _0x2d46c8['offset']==='undefined'&&typeof _0x2d46c8['limit']==='undefined';var _0x46e688=_0x54f1df[_0xba75('0x1a')];var _0x4adcd1=_0x5d59fd?0x0:_0x2d46c8[_0xba75('0x1b')];var _0x3c73a1=_0x5d59fd?_0x54f1df[_0xba75('0x1a')]:_0x2d46c8['offset']+_0x2d46c8['limit'];var _0x7b77f9;if(_0x3c73a1>=_0x46e688){_0x3c73a1=_0x46e688;_0x7b77f9=0xc8;}else{_0x7b77f9=0xce;}_0x5bf394[_0xba75('0x18')](_0x7b77f9);return _0x5bf394['set'](_0xba75('0x1c'),_0x4adcd1+'-'+_0x3c73a1+'/'+_0x46e688)[_0xba75('0x19')](_0x54f1df);}return null;};}function patchUpdates(_0x5280ef){return function(_0x3f7b5d){try{jsonpatch[_0xba75('0x1d')](_0x3f7b5d,_0x5280ef,!![]);}catch(_0x46c557){return BPromise[_0xba75('0x1e')](_0x46c557);}return _0x3f7b5d[_0xba75('0x1f')]();};}function saveUpdates(_0x2c9c74,_0x19a3f2){return function(_0x4094f6){if(_0x4094f6){return _0x4094f6[_0xba75('0x20')](_0x2c9c74)[_0xba75('0x21')](function(_0x9de7ac){return _0x9de7ac;});}return null;};}function removeEntity(_0x17dd08,_0x3aee73){return function(_0x148327){if(_0x148327){return _0x148327[_0xba75('0x22')]()[_0xba75('0x21')](function(){_0x17dd08['status'](0xcc)[_0xba75('0x17')]();});}};}function handleEntityNotFound(_0x3b2ea6,_0x168a18){return function(_0x1f0273){if(!_0x1f0273){_0x3b2ea6[_0xba75('0x16')](0x194);}return _0x1f0273;};}function handleError(_0x4a1df6,_0x38aab8){_0x38aab8=_0x38aab8||0x1f4;return function(_0x45e077){logger[_0xba75('0x23')](_0x45e077['stack']);if(_0x45e077[_0xba75('0x24')]){delete _0x45e077[_0xba75('0x24')];}_0x4a1df6['status'](_0x38aab8)[_0xba75('0x25')](_0x45e077);};}exports['index']=function(_0x15bdd6,_0x3ac21e){var _0x4be1b5={},_0x38c031={},_0x4ef8c5={'count':0x0,'rows':[]};var _0x321750=_[_0xba75('0x26')](db[_0xba75('0x27')][_0xba75('0x28')],function(_0x3f8e7e){return{'name':_0x3f8e7e[_0xba75('0x29')],'type':_0x3f8e7e[_0xba75('0x2a')][_0xba75('0x2b')]};});_0x38c031[_0xba75('0x2c')]=_[_0xba75('0x26')](_0x321750,_0xba75('0x24'));_0x38c031[_0xba75('0x2d')]=_[_0xba75('0x2e')](_0x15bdd6['query']);_0x38c031['filters']=_[_0xba75('0x2f')](_0x38c031[_0xba75('0x2c')],_0x38c031[_0xba75('0x2d')]);_0x4be1b5[_0xba75('0x30')]=_[_0xba75('0x2f')](_0x38c031[_0xba75('0x2c')],qs['fields'](_0x15bdd6[_0xba75('0x2d')]['fields']));_0x4be1b5[_0xba75('0x30')]=_0x4be1b5['attributes'][_0xba75('0x31')]?_0x4be1b5['attributes']:_0x38c031[_0xba75('0x2c')];if(!_0x15bdd6[_0xba75('0x2d')][_0xba75('0x32')](_0xba75('0x33'))){_0x4be1b5['limit']=qs[_0xba75('0x34')](_0x15bdd6[_0xba75('0x2d')][_0xba75('0x34')]);_0x4be1b5[_0xba75('0x1b')]=qs[_0xba75('0x1b')](_0x15bdd6[_0xba75('0x2d')][_0xba75('0x1b')]);}_0x4be1b5['order']=qs['sort'](_0x15bdd6[_0xba75('0x2d')][_0xba75('0x35')]);_0x4be1b5['where']=qs[_0xba75('0x36')](_[_0xba75('0x37')](_0x15bdd6[_0xba75('0x2d')],_0x38c031[_0xba75('0x36')]),_0x321750);if(_0x15bdd6[_0xba75('0x2d')]['filter']){_0x4be1b5[_0xba75('0x38')]=_['merge'](_0x4be1b5['where'],{'$or':_['map'](_0x321750,function(_0x16183d){if(_0x16183d[_0xba75('0x2a')]!=='VIRTUAL'){var _0x336f2c={};_0x336f2c[_0x16183d[_0xba75('0x24')]]={'$like':'%'+_0x15bdd6[_0xba75('0x2d')][_0xba75('0x39')]+'%'};return _0x336f2c;}})});}_0x4be1b5=_[_0xba75('0x3a')]({},_0x4be1b5,_0x15bdd6['options']);var _0x1fbe35={'where':_0x4be1b5[_0xba75('0x38')]};return db[_0xba75('0x27')][_0xba75('0x1a')](_0x1fbe35)[_0xba75('0x21')](function(_0x11704b){_0x4ef8c5[_0xba75('0x1a')]=_0x11704b;if(_0x15bdd6[_0xba75('0x2d')][_0xba75('0x3b')]){_0x4be1b5['include']=[{'all':!![]}];}return db[_0xba75('0x27')][_0xba75('0x3c')](_0x4be1b5);})[_0xba75('0x21')](function(_0x4c3517){_0x4ef8c5[_0xba75('0x3d')]=_0x4c3517;return _0x4ef8c5;})[_0xba75('0x21')](respondWithFilteredResult(_0x3ac21e,_0x4be1b5))[_0xba75('0x3e')](handleError(_0x3ac21e,null));};exports[_0xba75('0x3f')]=function(_0x3ae339,_0x4b17ba){var _0x28b373={'raw':!![],'where':{'id':_0x3ae339[_0xba75('0x40')]['id']}},_0x51e203={};_0x51e203[_0xba75('0x2c')]=_[_0xba75('0x2e')](db[_0xba75('0x27')][_0xba75('0x28')]);_0x51e203[_0xba75('0x2d')]=_[_0xba75('0x2e')](_0x3ae339[_0xba75('0x2d')]);_0x51e203[_0xba75('0x36')]=_['intersection'](_0x51e203['model'],_0x51e203[_0xba75('0x2d')]);_0x28b373[_0xba75('0x30')]=_[_0xba75('0x2f')](_0x51e203[_0xba75('0x2c')],qs['fields'](_0x3ae339[_0xba75('0x2d')][_0xba75('0x41')]));_0x28b373[_0xba75('0x30')]=_0x28b373[_0xba75('0x30')][_0xba75('0x31')]?_0x28b373[_0xba75('0x30')]:_0x51e203[_0xba75('0x2c')];if(_0x3ae339[_0xba75('0x2d')][_0xba75('0x3b')]){_0x28b373[_0xba75('0x42')]=[{'all':!![]}];}_0x28b373=_['merge']({},_0x28b373,_0x3ae339[_0xba75('0x43')]);return db['VoiceDialReport']['find'](_0x28b373)[_0xba75('0x21')](handleEntityNotFound(_0x4b17ba,null))['then'](respondWithResult(_0x4b17ba,null))['catch'](handleError(_0x4b17ba,null));};exports[_0xba75('0x44')]=function(_0x16df62,_0x1491b0){return db[_0xba75('0x27')][_0xba75('0x44')](_0x16df62['body'],{})[_0xba75('0x21')](respondWithResult(_0x1491b0,0xc9))[_0xba75('0x3e')](handleError(_0x1491b0,null));};exports['update']=function(_0x4d94ff,_0x310825){if(_0x4d94ff[_0xba75('0x45')]['id']){delete _0x4d94ff['body']['id'];}return db[_0xba75('0x27')][_0xba75('0x46')]({'where':{'id':_0x4d94ff[_0xba75('0x40')]['id']}})['then'](handleEntityNotFound(_0x310825,null))[_0xba75('0x21')](saveUpdates(_0x4d94ff['body'],null))[_0xba75('0x21')](respondWithResult(_0x310825,null))[_0xba75('0x3e')](handleError(_0x310825,null));};exports[_0xba75('0x22')]=function(_0x10a9eb,_0x438a4f){return db['VoiceDialReport']['find']({'where':{'id':_0x10a9eb[_0xba75('0x40')]['id']}})[_0xba75('0x21')](handleEntityNotFound(_0x438a4f,null))[_0xba75('0x21')](removeEntity(_0x438a4f,null))[_0xba75('0x3e')](handleError(_0x438a4f,null));};exports[_0xba75('0x47')]=function(_0x13596d,_0x367502){return db[_0xba75('0x27')]['describe']()[_0xba75('0x21')](respondWithResult(_0x367502,null))[_0xba75('0x3e')](handleError(_0x367502,null));};
\ No newline at end of file
index 75b53d0..1445009 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ae2=['uniqueid','lodash','util','../../config/logger','api','bluebird','request-promise','rimraf','define','VoiceDialReport','report_dial'];(function(_0x4b7cf0,_0x824680){var _0x100c29=function(_0x209d74){while(--_0x209d74){_0x4b7cf0['push'](_0x4b7cf0['shift']());}};_0x100c29(++_0x824680);}(_0x8ae2,0x140));var _0x28ae=function(_0x54e1b7,_0x33705){_0x54e1b7=_0x54e1b7-0x0;var _0x3fc1b6=_0x8ae2[_0x54e1b7];return _0x3fc1b6;};'use strict';var _=require(_0x28ae('0x0'));var util=require(_0x28ae('0x1'));var logger=require(_0x28ae('0x2'))(_0x28ae('0x3'));var moment=require('moment');var BPromise=require(_0x28ae('0x4'));var rp=require(_0x28ae('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x28ae('0x6'));var config=require('../../config/environment');var attributes=require('./voiceDialReport.attributes');module['exports']=function(_0x3ea80d,_0x2ea573){return _0x3ea80d[_0x28ae('0x7')](_0x28ae('0x8'),attributes,{'tableName':_0x28ae('0x9'),'paranoid':![],'indexes':[{'fields':[_0x28ae('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xed1c=['path','rimraf','../../config/environment','exports','define','VoiceDialReport','uniqueid','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x214dec,_0x18e1ed){var _0x387b92=function(_0x27c47d){while(--_0x27c47d){_0x214dec['push'](_0x214dec['shift']());}};_0x387b92(++_0x18e1ed);}(_0xed1c,0xf5));var _0xced1=function(_0xc2629,_0x4c47df){_0xc2629=_0xc2629-0x0;var _0x24bf1b=_0xed1c[_0xc2629];return _0x24bf1b;};'use strict';var _=require(_0xced1('0x0'));var util=require(_0xced1('0x1'));var logger=require(_0xced1('0x2'))(_0xced1('0x3'));var moment=require(_0xced1('0x4'));var BPromise=require(_0xced1('0x5'));var rp=require(_0xced1('0x6'));var fs=require('fs');var path=require(_0xced1('0x7'));var rimraf=require(_0xced1('0x8'));var config=require(_0xced1('0x9'));var attributes=require('./voiceDialReport.attributes');module[_0xced1('0xa')]=function(_0x3fb929,_0x4cef66){return _0x3fb929[_0xced1('0xb')](_0xced1('0xc'),attributes,{'tableName':'report_dial','paranoid':![],'indexes':[{'fields':[_0xced1('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index cce7d2e..258c3a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf101=['raw','then','info','UpdateVoiceDialReport','update','limit','lodash','util','randomstring','../../config/utils','rpc','../../config/environment','client','request','VoiceDialReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','CreateVoiceDialReport','VoiceDialReport','create','options'];(function(_0xedaf59,_0x563492){var _0x3efbc7=function(_0x23ffc3){while(--_0x23ffc3){_0xedaf59['push'](_0xedaf59['shift']());}};_0x3efbc7(++_0x563492);}(_0xf101,0xc3));var _0x1f10=function(_0x343e70,_0xe5f373){_0x343e70=_0x343e70-0x0;var _0x2742fd=_0xf101[_0x343e70];return _0x2742fd;};'use strict';var _=require(_0x1f10('0x0'));var util=require(_0x1f10('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x1f10('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x1f10('0x3'));var logger=require('../../config/logger')(_0x1f10('0x4'));var config=require(_0x1f10('0x5'));var jayson=require('jayson/promise');var client=jayson[_0x1f10('0x6')]['http']({'port':0x232a});function respondWithRpcPromise(_0x24f1a9,_0x1d4e2c,_0x5d12e4){return new BPromise(function(_0x142b0f,_0x22c57d){return client[_0x1f10('0x7')](_0x24f1a9,_0x5d12e4)['then'](function(_0x3edca5){logger['info'](_0x1f10('0x8'),_0x1d4e2c,_0x1f10('0x9'));logger[_0x1f10('0xa')]('VoiceDialReport,\x20%s,\x20%s,\x20%s',_0x1d4e2c,_0x1f10('0x9'),JSON[_0x1f10('0xb')](_0x3edca5));if(_0x3edca5['error']){if(_0x3edca5[_0x1f10('0xc')][_0x1f10('0xd')]===0x1f4){logger[_0x1f10('0xc')](_0x1f10('0x8'),_0x1d4e2c,_0x3edca5['error'][_0x1f10('0xe')]);return _0x22c57d(_0x3edca5[_0x1f10('0xc')][_0x1f10('0xe')]);}logger[_0x1f10('0xc')](_0x1f10('0x8'),_0x1d4e2c,_0x3edca5[_0x1f10('0xc')][_0x1f10('0xe')]);return _0x142b0f(_0x3edca5[_0x1f10('0xc')][_0x1f10('0xe')]);}else{logger['info'](_0x1f10('0x8'),_0x1d4e2c,_0x1f10('0x9'));_0x142b0f(_0x3edca5[_0x1f10('0xf')][_0x1f10('0xe')]);}})[_0x1f10('0x10')](function(_0x388654){logger[_0x1f10('0xc')](_0x1f10('0x8'),_0x1d4e2c,_0x388654);_0x22c57d(_0x388654);});});}exports[_0x1f10('0x11')]=function(_0x157444){var _0x167d77=this;return new Promise(function(_0x37d0c7,_0x2bff6a){return db[_0x1f10('0x12')][_0x1f10('0x13')](_0x157444['body'],{'raw':_0x157444['options']?_0x157444[_0x1f10('0x14')][_0x1f10('0x15')]===undefined?!![]:![]:!![]})[_0x1f10('0x16')](function(_0x138827){logger[_0x1f10('0x17')](_0x1f10('0x11'),_0x157444);logger[_0x1f10('0xa')]('CreateVoiceDialReport',_0x157444,JSON[_0x1f10('0xb')](_0x138827));_0x37d0c7(_0x138827);})[_0x1f10('0x10')](function(_0x256d96){logger[_0x1f10('0xc')](_0x1f10('0x11'),_0x256d96[_0x1f10('0xe')],_0x157444);_0x2bff6a(_0x167d77[_0x1f10('0xc')](0x1f4,_0x256d96[_0x1f10('0xe')]));});});};exports[_0x1f10('0x18')]=function(_0x154ec0){var _0x141f53=this;return new Promise(function(_0x1a68b7,_0x14dd94){return db[_0x1f10('0x12')][_0x1f10('0x19')](_0x154ec0['body'],{'raw':_0x154ec0[_0x1f10('0x14')]?_0x154ec0[_0x1f10('0x14')][_0x1f10('0x15')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x154ec0['options']?_0x154ec0[_0x1f10('0x14')]['where']||null:null,'attributes':_0x154ec0[_0x1f10('0x14')]?_0x154ec0[_0x1f10('0x14')]['attributes']||null:null,'limit':_0x154ec0[_0x1f10('0x14')]?_0x154ec0['options'][_0x1f10('0x1a')]||null:null})[_0x1f10('0x16')](function(_0x3c4df6){logger[_0x1f10('0x17')](_0x1f10('0x18'),_0x154ec0);logger[_0x1f10('0xa')](_0x1f10('0x18'),_0x154ec0,JSON[_0x1f10('0xb')](_0x3c4df6));_0x1a68b7(_0x3c4df6);})[_0x1f10('0x10')](function(_0x11cdb2){logger[_0x1f10('0xc')](_0x1f10('0x18'),_0x11cdb2['message'],_0x154ec0);_0x14dd94(_0x141f53[_0x1f10('0xc')](0x1f4,_0x11cdb2[_0x1f10('0xe')]));});});};
\ No newline at end of file
+var _0xf7e7=['VoiceDialReport,\x20%s,\x20%s','request\x20sent','debug','VoiceDialReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','CreateVoiceDialReport','VoiceDialReport','create','body','options','raw','catch','UpdateVoiceDialReport','where','limit','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info'];(function(_0x2ade6c,_0x2d42f2){var _0x2cb372=function(_0x477d8a){while(--_0x477d8a){_0x2ade6c['push'](_0x2ade6c['shift']());}};_0x2cb372(++_0x2d42f2);}(_0xf7e7,0xb8));var _0x7f7e=function(_0x483a30,_0x34ffb7){_0x483a30=_0x483a30-0x0;var _0x5278b3=_0xf7e7[_0x483a30];return _0x5278b3;};'use strict';var _=require('lodash');var util=require(_0x7f7e('0x0'));var moment=require(_0x7f7e('0x1'));var BPromise=require(_0x7f7e('0x2'));var rs=require(_0x7f7e('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7f7e('0x4'))['db'];var utils=require(_0x7f7e('0x5'));var logger=require(_0x7f7e('0x6'))(_0x7f7e('0x7'));var config=require(_0x7f7e('0x8'));var jayson=require(_0x7f7e('0x9'));var client=jayson['client'][_0x7f7e('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3d9f66,_0x383ff,_0x3ae419){return new BPromise(function(_0x2fed32,_0x5cbb81){return client[_0x7f7e('0xb')](_0x3d9f66,_0x3ae419)[_0x7f7e('0xc')](function(_0x40b252){logger[_0x7f7e('0xd')](_0x7f7e('0xe'),_0x383ff,_0x7f7e('0xf'));logger[_0x7f7e('0x10')](_0x7f7e('0x11'),_0x383ff,_0x7f7e('0xf'),JSON[_0x7f7e('0x12')](_0x40b252));if(_0x40b252['error']){if(_0x40b252[_0x7f7e('0x13')][_0x7f7e('0x14')]===0x1f4){logger[_0x7f7e('0x13')](_0x7f7e('0xe'),_0x383ff,_0x40b252[_0x7f7e('0x13')][_0x7f7e('0x15')]);return _0x5cbb81(_0x40b252[_0x7f7e('0x13')]['message']);}logger[_0x7f7e('0x13')]('VoiceDialReport,\x20%s,\x20%s',_0x383ff,_0x40b252[_0x7f7e('0x13')][_0x7f7e('0x15')]);return _0x2fed32(_0x40b252[_0x7f7e('0x13')][_0x7f7e('0x15')]);}else{logger[_0x7f7e('0xd')](_0x7f7e('0xe'),_0x383ff,'request\x20sent');_0x2fed32(_0x40b252[_0x7f7e('0x16')]['message']);}})['catch'](function(_0x57b16a){logger['error']('VoiceDialReport,\x20%s,\x20%s',_0x383ff,_0x57b16a);_0x5cbb81(_0x57b16a);});});}exports[_0x7f7e('0x17')]=function(_0x707ea9){var _0x3863bb=this;return new Promise(function(_0x461f52,_0x471fa5){return db[_0x7f7e('0x18')][_0x7f7e('0x19')](_0x707ea9[_0x7f7e('0x1a')],{'raw':_0x707ea9[_0x7f7e('0x1b')]?_0x707ea9[_0x7f7e('0x1b')][_0x7f7e('0x1c')]===undefined?!![]:![]:!![]})[_0x7f7e('0xc')](function(_0x411cfd){logger[_0x7f7e('0xd')](_0x7f7e('0x17'),_0x707ea9);logger[_0x7f7e('0x10')](_0x7f7e('0x17'),_0x707ea9,JSON[_0x7f7e('0x12')](_0x411cfd));_0x461f52(_0x411cfd);})[_0x7f7e('0x1d')](function(_0xfbff56){logger[_0x7f7e('0x13')]('CreateVoiceDialReport',_0xfbff56[_0x7f7e('0x15')],_0x707ea9);_0x471fa5(_0x3863bb[_0x7f7e('0x13')](0x1f4,_0xfbff56[_0x7f7e('0x15')]));});});};exports[_0x7f7e('0x1e')]=function(_0x58852b){var _0xc44174=this;return new Promise(function(_0x3e6ab3,_0x4797a2){return db[_0x7f7e('0x18')]['update'](_0x58852b['body'],{'raw':_0x58852b['options']?_0x58852b['options'][_0x7f7e('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x58852b[_0x7f7e('0x1b')]?_0x58852b[_0x7f7e('0x1b')][_0x7f7e('0x1f')]||null:null,'attributes':_0x58852b[_0x7f7e('0x1b')]?_0x58852b[_0x7f7e('0x1b')]['attributes']||null:null,'limit':_0x58852b[_0x7f7e('0x1b')]?_0x58852b[_0x7f7e('0x1b')][_0x7f7e('0x20')]||null:null})[_0x7f7e('0xc')](function(_0x5d5968){logger['info']('UpdateVoiceDialReport',_0x58852b);logger[_0x7f7e('0x10')](_0x7f7e('0x1e'),_0x58852b,JSON[_0x7f7e('0x12')](_0x5d5968));_0x3e6ab3(_0x5d5968);})[_0x7f7e('0x1d')](function(_0x20159a){logger[_0x7f7e('0x13')](_0x7f7e('0x1e'),_0x20159a[_0x7f7e('0x15')],_0x58852b);_0x4797a2(_0xc44174[_0x7f7e('0x13')](0x1f4,_0x20159a[_0x7f7e('0x15')]));});});};
\ No newline at end of file
index e9cce2a..ccc8a76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x652f=['index','/:id','show','post','create','/:id/applications','put','update','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceExtension.controller','get','isAuthenticated'];(function(_0x218655,_0x459551){var _0x4f2909=function(_0x534494){while(--_0x534494){_0x218655['push'](_0x218655['shift']());}};_0x4f2909(++_0x459551);}(_0x652f,0x11e));var _0xf652=function(_0x18347a,_0x52a459){_0x18347a=_0x18347a-0x0;var _0x1c2057=_0x652f[_0x18347a];return _0x1c2057;};'use strict';var multer=require(_0xf652('0x0'));var util=require(_0xf652('0x1'));var path=require(_0xf652('0x2'));var timeout=require(_0xf652('0x3'));var express=require(_0xf652('0x4'));var router=express[_0xf652('0x5')]();var fs_extra=require(_0xf652('0x6'));var auth=require(_0xf652('0x7'));var interaction=require(_0xf652('0x8'));var config=require(_0xf652('0x9'));var controller=require(_0xf652('0xa'));router[_0xf652('0xb')]('/',auth[_0xf652('0xc')](),controller[_0xf652('0xd')]);router['get'](_0xf652('0xe'),auth[_0xf652('0xc')](),controller[_0xf652('0xf')]);router[_0xf652('0x10')]('/',auth[_0xf652('0xc')](),controller[_0xf652('0x11')]);router[_0xf652('0x10')](_0xf652('0x12'),auth[_0xf652('0xc')](),controller['addApplications']);router[_0xf652('0x13')](_0xf652('0xe'),auth[_0xf652('0xc')](),controller[_0xf652('0x14')]);router['delete'](_0xf652('0xe'),auth[_0xf652('0xc')](),controller[_0xf652('0x15')]);module[_0xf652('0x16')]=router;
\ No newline at end of file
+var _0x78ef=['delete','exports','util','path','connect-timeout','express','Router','../../config/environment','./voiceExtension.controller','get','isAuthenticated','index','show','post','/:id/applications','put','/:id'];(function(_0x44993f,_0x6d18a1){var _0x1e8ec8=function(_0x5d4501){while(--_0x5d4501){_0x44993f['push'](_0x44993f['shift']());}};_0x1e8ec8(++_0x6d18a1);}(_0x78ef,0x112));var _0xf78e=function(_0x6b6b18,_0x55cdb6){_0x6b6b18=_0x6b6b18-0x0;var _0x1f748e=_0x78ef[_0x6b6b18];return _0x1f748e;};'use strict';var multer=require('multer');var util=require(_0xf78e('0x0'));var path=require(_0xf78e('0x1'));var timeout=require(_0xf78e('0x2'));var express=require(_0xf78e('0x3'));var router=express[_0xf78e('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xf78e('0x5'));var controller=require(_0xf78e('0x6'));router[_0xf78e('0x7')]('/',auth[_0xf78e('0x8')](),controller[_0xf78e('0x9')]);router[_0xf78e('0x7')]('/:id',auth[_0xf78e('0x8')](),controller[_0xf78e('0xa')]);router[_0xf78e('0xb')]('/',auth['isAuthenticated'](),controller['create']);router[_0xf78e('0xb')](_0xf78e('0xc'),auth[_0xf78e('0x8')](),controller['addApplications']);router[_0xf78e('0xd')](_0xf78e('0xe'),auth[_0xf78e('0x8')](),controller['update']);router[_0xf78e('0xf')](_0xf78e('0xe'),auth[_0xf78e('0x8')](),controller['destroy']);module[_0xf78e('0x10')]=router;
\ No newline at end of file
index 7764201..ba5889e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x422b=['NoOp','ENUM','inbound','outbound','internal','outbound-fax','any','*,*,*,*','INTEGER','BOOLEAN','wav','VIRTUAL','getDataValue','exten','sequelize','exports','compositeIndex','STRING'];(function(_0x3147de,_0x31a150){var _0x3cbd4d=function(_0x4ab80b){while(--_0x4ab80b){_0x3147de['push'](_0x3147de['shift']());}};_0x3cbd4d(++_0x31a150);}(_0x422b,0x164));var _0xb422=function(_0x37c12b,_0x27a9fa){_0x37c12b=_0x37c12b-0x0;var _0x319304=_0x422b[_0x37c12b];return _0x319304;};'use strict';var Sequelize=require(_0xb422('0x0'));module[_0xb422('0x1')]={'context':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xb422('0x2'),'validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize[_0xb422('0x3')],'allowNull':![],'unique':_0xb422('0x2')},'priority':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'1','unique':_0xb422('0x2')},'tag':{'type':Sequelize[_0xb422('0x3')],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize[_0xb422('0x3')],'allowNull':![],'defaultValue':_0xb422('0x4')},'appdata':{'type':Sequelize[_0xb422('0x3')](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize[_0xb422('0x5')](_0xb422('0x6'),_0xb422('0x7'),_0xb422('0x8'),'inbound-fax',_0xb422('0x9'),'system',_0xb422('0xa')),'allowNull':![]},'description':{'type':Sequelize[_0xb422('0x3')]},'interval':{'type':Sequelize[_0xb422('0x3')],'allowNull':![],'defaultValue':_0xb422('0xb')},'IntervalId':{'type':Sequelize[_0xb422('0xc')]},'isApp':{'type':Sequelize['BOOLEAN'],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize[_0xb422('0x3')],'defaultValue':null},'callerID':{'type':Sequelize[_0xb422('0x3')],'allowNull':!![]},'record':{'type':Sequelize[_0xb422('0xd')],'defaultValue':![]},'cutdigits':{'type':Sequelize[_0xb422('0xc')]},'recordingFormat':{'type':Sequelize[_0xb422('0x3')],'defaultValue':_0xb422('0xe')},'answer':{'type':Sequelize[_0xb422('0xd')],'defaultValue':!![]},'name':{'type':Sequelize[_0xb422('0xf')],'get':function(_0x12f8c9){return this[_0xb422('0x10')](_0xb422('0x11'));}},'alias':{'type':Sequelize['STRING'],'allowNull':!![]}};
\ No newline at end of file
+var _0xdf9b=['BOOLEAN','VIRTUAL','getDataValue','exten','sequelize','exports','compositeIndex','STRING','ENUM','inbound','outbound','internal','inbound-fax','outbound-fax','system','any','*,*,*,*','INTEGER'];(function(_0x10bb5d,_0x3a2470){var _0x20d051=function(_0x4d948e){while(--_0x4d948e){_0x10bb5d['push'](_0x10bb5d['shift']());}};_0x20d051(++_0x3a2470);}(_0xdf9b,0xdc));var _0xbdf9=function(_0x1da527,_0x2dc953){_0x1da527=_0x1da527-0x0;var _0x40fc7c=_0xdf9b[_0x1da527];return _0x40fc7c;};'use strict';var Sequelize=require(_0xbdf9('0x0'));module[_0xbdf9('0x1')]={'context':{'type':Sequelize['STRING'],'allowNull':![],'unique':'compositeIndex','validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xbdf9('0x2')},'priority':{'type':Sequelize[_0xbdf9('0x3')],'allowNull':![],'defaultValue':'1','unique':_0xbdf9('0x2')},'tag':{'type':Sequelize[_0xbdf9('0x3')],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'NoOp'},'appdata':{'type':Sequelize[_0xbdf9('0x3')](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize[_0xbdf9('0x4')](_0xbdf9('0x5'),_0xbdf9('0x6'),_0xbdf9('0x7'),_0xbdf9('0x8'),_0xbdf9('0x9'),_0xbdf9('0xa'),_0xbdf9('0xb')),'allowNull':![]},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0xbdf9('0x3')],'allowNull':![],'defaultValue':_0xbdf9('0xc')},'IntervalId':{'type':Sequelize[_0xbdf9('0xd')]},'isApp':{'type':Sequelize[_0xbdf9('0xe')],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize[_0xbdf9('0x3')],'defaultValue':null},'callerID':{'type':Sequelize['STRING'],'allowNull':!![]},'record':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'cutdigits':{'type':Sequelize['INTEGER']},'recordingFormat':{'type':Sequelize['STRING'],'defaultValue':'wav'},'answer':{'type':Sequelize[_0xbdf9('0xe')],'defaultValue':!![]},'name':{'type':Sequelize[_0xbdf9('0xf')],'get':function(_0x28a457){return this[_0xbdf9('0x10')](_0xbdf9('0x11'));}},'alias':{'type':Sequelize[_0xbdf9('0x3')],'allowNull':!![]}};
\ No newline at end of file
index 9be6fb8..d5ac4f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x75ba=['update','params','context','description','cutdigits','mandatoryDisposition','alias','addApplications','sequelize','Transaction','ISOLATION_LEVELS','READ_COMMITTED','findOne','createRouting','bulkCreate','findAndCountAll','cast(priority\x20as\x20unsigned)','finally','lodash','../../components/parsers/qs','../../config/logger','redis','defaults','localhost','socket.io-emitter','./voiceExtension.socket','register','sendStatus','status','end','json','undefined','limit','offset','count','set','destroy','then','get','InboundRoutes','inbound','OutboundRoutes','InternalRoutes','ignore','map','value','includes','type','find','name','UserProfileResource','error','stack','send','index','VoiceExtension','rawAttributes','fieldName','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','keys','body','outbound','startsWith','exten','concat','create','user','role','internal','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s'];(function(_0x1773ec,_0x443b1b){var _0x1686e3=function(_0x32324b){while(--_0x32324b){_0x1773ec['push'](_0x1773ec['shift']());}};_0x1686e3(++_0x443b1b);}(_0x75ba,0x6e));var _0xa75b=function(_0xb0de07,_0x3ca2a0){_0xb0de07=_0xb0de07-0x0;var _0x4633d8=_0x75ba[_0xb0de07];return _0x4633d8;};'use strict';var _=require(_0xa75b('0x0'));var Redis=require('ioredis');var qs=require(_0xa75b('0x1'));var logger=require(_0xa75b('0x2'))('api');var config=require('../../config/environment');var db=require('../../mysqldb')['db'];config[_0xa75b('0x3')]=_[_0xa75b('0x4')](config[_0xa75b('0x3')],{'host':_0xa75b('0x5'),'port':0x18eb});var socket=require(_0xa75b('0x6'))(new Redis(config[_0xa75b('0x3')]));require(_0xa75b('0x7'))[_0xa75b('0x8')](socket);function respondWithStatusCode(_0x15a44f,_0x41a567){_0x41a567=_0x41a567||0xcc;return function(_0x52a821){if(_0x52a821){return _0x15a44f[_0xa75b('0x9')](_0x41a567);}return _0x15a44f[_0xa75b('0xa')](_0x41a567)[_0xa75b('0xb')]();};}function respondWithResult(_0x29bde3,_0x540624){_0x540624=_0x540624||0xc8;return function(_0x5b61dc){if(_0x5b61dc){return _0x29bde3[_0xa75b('0xa')](_0x540624)[_0xa75b('0xc')](_0x5b61dc);}};}function respondWithFilteredResult(_0x4ff1d5,_0x5d194a){return function(_0x4eecb2){if(_0x4eecb2){var _0x19f97d=typeof _0x5d194a['offset']===_0xa75b('0xd')&&typeof _0x5d194a[_0xa75b('0xe')]===_0xa75b('0xd');var _0x5effe2=_0x4eecb2['count'];var _0x56d579=_0x19f97d?0x0:_0x5d194a[_0xa75b('0xf')];var _0x8f23ad=_0x19f97d?_0x4eecb2[_0xa75b('0x10')]:_0x5d194a[_0xa75b('0xf')]+_0x5d194a[_0xa75b('0xe')];var _0x36d46f;if(_0x8f23ad>=_0x5effe2){_0x8f23ad=_0x5effe2;_0x36d46f=0xc8;}else{_0x36d46f=0xce;}_0x4ff1d5[_0xa75b('0xa')](_0x36d46f);return _0x4ff1d5[_0xa75b('0x11')]('Content-Range',_0x56d579+'-'+_0x8f23ad+'/'+_0x5effe2)[_0xa75b('0xc')](_0x4eecb2);}return null;};}function removeEntity(_0x17413e){return function(_0x22ed7e){if(_0x22ed7e){return _0x22ed7e[_0xa75b('0x12')]()[_0xa75b('0x13')](function(){var _0x1911f0=_0x22ed7e[_0xa75b('0x14')]({'plain':!![]});var _0x50dde6=[{'name':_0xa75b('0x15'),'value':_0xa75b('0x16'),'ignore':![]},{'name':_0xa75b('0x17'),'value':'outbound','ignore':![]},{'name':_0xa75b('0x18'),'value':'internal','ignore':![]}];var _0x4c99a5=_(_0x50dde6)['filter'](_0xa75b('0x19'))[_0xa75b('0x1a')](_0xa75b('0x1b'))['value']();if(_[_0xa75b('0x1c')](_0x4c99a5,_0x1911f0[_0xa75b('0x1d')])){return;}var _0x4d9d16=_[_0xa75b('0x1e')](_0x50dde6,[_0xa75b('0x1b'),_0x1911f0['type']])[_0xa75b('0x1f')];return db[_0xa75b('0x20')]['destroy']({'where':{'type':_0x4d9d16,'resourceId':_0x1911f0['id']}})[_0xa75b('0x13')](function(){return _0x22ed7e;});})['then'](function(){_0x17413e[_0xa75b('0xa')](0xcc)[_0xa75b('0xb')]();});}};}function handleEntityNotFound(_0x507fb6){return function(_0x241d88){if(!_0x241d88){_0x507fb6['sendStatus'](0x194);}return _0x241d88;};}function handleError(_0x317736,_0x551e10){_0x551e10=_0x551e10||0x1f4;return function(_0x1a337e){logger[_0xa75b('0x21')](_0x1a337e[_0xa75b('0x22')]);if(_0x1a337e[_0xa75b('0x1f')]){delete _0x1a337e['name'];}_0x317736['status'](_0x551e10)[_0xa75b('0x23')](_0x1a337e);};}exports[_0xa75b('0x24')]=function(_0x170e78,_0x5ea8a8){var _0x1c2e93={},_0x44f8d5={},_0x46f3d8={'count':0x0,'rows':[]};var _0x1889b7=_[_0xa75b('0x1a')](db[_0xa75b('0x25')][_0xa75b('0x26')],function(_0x259b34){return{'name':_0x259b34[_0xa75b('0x27')],'type':_0x259b34[_0xa75b('0x1d')][_0xa75b('0x28')]};});_0x44f8d5[_0xa75b('0x29')]=_[_0xa75b('0x1a')](_0x1889b7,_0xa75b('0x1f'));_0x44f8d5[_0xa75b('0x2a')]=_['keys'](_0x170e78[_0xa75b('0x2a')]);_0x44f8d5[_0xa75b('0x2b')]=_[_0xa75b('0x2c')](_0x44f8d5[_0xa75b('0x29')],_0x44f8d5[_0xa75b('0x2a')]);_0x1c2e93['attributes']=_[_0xa75b('0x2c')](_0x44f8d5[_0xa75b('0x29')],qs['fields'](_0x170e78[_0xa75b('0x2a')][_0xa75b('0x2d')]));_0x1c2e93['attributes']=_0x1c2e93[_0xa75b('0x2e')][_0xa75b('0x2f')]?_0x1c2e93[_0xa75b('0x2e')]:_0x44f8d5['model'];if(!_0x170e78[_0xa75b('0x2a')][_0xa75b('0x30')](_0xa75b('0x31'))){_0x1c2e93[_0xa75b('0xe')]=qs[_0xa75b('0xe')](_0x170e78['query'][_0xa75b('0xe')]);_0x1c2e93[_0xa75b('0xf')]=qs[_0xa75b('0xf')](_0x170e78[_0xa75b('0x2a')][_0xa75b('0xf')]);}_0x1c2e93['order']=qs[_0xa75b('0x32')](_0x170e78[_0xa75b('0x2a')][_0xa75b('0x32')]);_0x1c2e93[_0xa75b('0x33')]=qs[_0xa75b('0x2b')](_['pick'](_0x170e78[_0xa75b('0x2a')],_0x44f8d5[_0xa75b('0x2b')]),_0x1889b7);if(_0x170e78['query'][_0xa75b('0x34')]){_0x1c2e93[_0xa75b('0x33')]=_[_0xa75b('0x35')](_0x1c2e93['where'],{'$or':_['map'](_0x1889b7,function(_0x3131e1){if(_0x3131e1[_0xa75b('0x1d')]!==_0xa75b('0x36')){var _0x1f317c={};_0x1f317c[_0x3131e1[_0xa75b('0x1f')]]={'$like':'%'+_0x170e78[_0xa75b('0x2a')][_0xa75b('0x34')]+'%'};return _0x1f317c;}})});}_0x1c2e93=_['merge']({},_0x1c2e93,_0x170e78[_0xa75b('0x37')]);var _0x50f0e3={'where':_0x1c2e93[_0xa75b('0x33')]};return db[_0xa75b('0x25')]['count'](_0x50f0e3)[_0xa75b('0x13')](function(_0x311ac7){_0x46f3d8['count']=_0x311ac7;if(_0x170e78[_0xa75b('0x2a')][_0xa75b('0x38')]){_0x1c2e93[_0xa75b('0x39')]=[{'all':!![]}];}return db[_0xa75b('0x25')]['findAll'](_0x1c2e93);})[_0xa75b('0x13')](function(_0x32f532){_0x46f3d8[_0xa75b('0x3a')]=_0x32f532;return _0x46f3d8;})[_0xa75b('0x13')](respondWithFilteredResult(_0x5ea8a8,_0x1c2e93))[_0xa75b('0x3b')](handleError(_0x5ea8a8,null));};exports['show']=function(_0x2f9623,_0x3488e4){var _0x3a185f={'raw':![],'where':{'id':_0x2f9623['params']['id']}},_0x3e364f={};_0x3e364f[_0xa75b('0x29')]=_[_0xa75b('0x3c')](db[_0xa75b('0x25')][_0xa75b('0x26')]);_0x3e364f[_0xa75b('0x2a')]=_['keys'](_0x2f9623[_0xa75b('0x2a')]);_0x3e364f['filters']=_[_0xa75b('0x2c')](_0x3e364f[_0xa75b('0x29')],_0x3e364f['query']);_0x3a185f[_0xa75b('0x2e')]=_[_0xa75b('0x2c')](_0x3e364f[_0xa75b('0x29')],qs['fields'](_0x2f9623[_0xa75b('0x2a')]['fields']));_0x3a185f[_0xa75b('0x2e')]=_0x3a185f[_0xa75b('0x2e')][_0xa75b('0x2f')]?_0x3a185f[_0xa75b('0x2e')]:_0x3e364f['model'];if(_0x2f9623[_0xa75b('0x2a')][_0xa75b('0x38')]){_0x3a185f['include']=[{'all':!![]}];}_0x3a185f=_[_0xa75b('0x35')]({},_0x3a185f,_0x2f9623[_0xa75b('0x37')]);return db['VoiceExtension'][_0xa75b('0x1e')](_0x3a185f)[_0xa75b('0x13')](handleEntityNotFound(_0x3488e4,null))['then'](respondWithResult(_0x3488e4,null))[_0xa75b('0x3b')](handleError(_0x3488e4,null));};exports[_0xa75b('0x12')]=function(_0x321921,_0x40c333){return db[_0xa75b('0x25')][_0xa75b('0x1e')]({'where':{'id':_0x321921['params']['id']}})[_0xa75b('0x13')](handleEntityNotFound(_0x40c333,null))[_0xa75b('0x13')](removeEntity(_0x40c333,null))['catch'](handleError(_0x40c333,null));};exports['create']=function(_0x4df1d1,_0x43d086){if(_0x4df1d1[_0xa75b('0x3d')]['type']===_0xa75b('0x3e')&&!_[_0xa75b('0x3f')](_0x4df1d1['body'][_0xa75b('0x40')],'_')){_0x4df1d1['body'][_0xa75b('0x40')]='_'[_0xa75b('0x41')](_0x4df1d1[_0xa75b('0x3d')][_0xa75b('0x40')]);}return db[_0xa75b('0x25')][_0xa75b('0x42')](_0x4df1d1['body'],{'raw':![]})['then'](function(_0x2a7b83){var _0x3a203f=_0x4df1d1[_0xa75b('0x43')]['get']({'plain':!![]});if(!_0x3a203f)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3a203f[_0xa75b('0x44')]==='user'){var _0x56ebc9=_0x2a7b83['get']({'plain':!![]});var _0x46d25f=[{'name':_0xa75b('0x15'),'value':_0xa75b('0x16')},{'name':_0xa75b('0x17'),'value':_0xa75b('0x3e')},{'name':_0xa75b('0x18'),'value':_0xa75b('0x45')}];var _0x359de0=_['find'](_0x46d25f,[_0xa75b('0x1b'),_0x56ebc9[_0xa75b('0x1d')]])['name'];return db[_0xa75b('0x46')][_0xa75b('0x1e')]({'where':{'name':_0x359de0,'userProfileId':_0x3a203f[_0xa75b('0x47')]},'raw':!![]})[_0xa75b('0x13')](function(_0x3c055d){if(_0x3c055d&&_0x3c055d[_0xa75b('0x48')]===0x0){return db['UserProfileResource'][_0xa75b('0x42')]({'name':_0x56ebc9[_0xa75b('0x1f')],'resourceId':_0x56ebc9['id'],'type':_0x3c055d[_0xa75b('0x1f')],'sectionId':_0x3c055d['id']},{})['then'](function(){return _0x2a7b83;});}else{return _0x2a7b83;}})['catch'](function(_0x45f9a8){logger[_0xa75b('0x21')](_0xa75b('0x49'),_0x45f9a8);throw _0x45f9a8;});}return _0x2a7b83;})[_0xa75b('0x13')](respondWithResult(_0x43d086,0xc9))[_0xa75b('0x3b')](handleError(_0x43d086,null));};exports[_0xa75b('0x4a')]=function(_0x43255c,_0x3b4ce5){if(_0x43255c[_0xa75b('0x3d')]['id']){delete _0x43255c[_0xa75b('0x3d')]['id'];}return db[_0xa75b('0x25')][_0xa75b('0x1e')]({'where':{'id':_0x43255c[_0xa75b('0x4b')]['id']}})[_0xa75b('0x13')](handleEntityNotFound(_0x3b4ce5,null))[_0xa75b('0x13')](function(_0x532550){if(_0x532550){return db[_0xa75b('0x25')]['update'](_['pick'](_0x43255c[_0xa75b('0x3d')],[_0xa75b('0x40'),_0xa75b('0x4c'),_0xa75b('0x4d'),'recordingFormat',_0xa75b('0x4e'),_0xa75b('0x4f'),_0xa75b('0x50')]),{'where':{'context':_0x532550[_0xa75b('0x4c')],'exten':_0x532550[_0xa75b('0x40')]},'individualHooks':!![]})[_0xa75b('0x13')](function(_0x54b34c){return _0x54b34c;});}return null;})[_0xa75b('0x13')](respondWithStatusCode(_0x3b4ce5,null))[_0xa75b('0x3b')](handleError(_0x3b4ce5,null));};exports[_0xa75b('0x51')]=function(_0x51491f,_0x1acd6b){var _0x2f2173=_0x51491f[_0xa75b('0x4b')]['id'];var _0x4f9d45=_0x51491f[_0xa75b('0x3d')];var _0x237368=0xc8;var _0xd92e17=null;return db[_0xa75b('0x52')]['transaction']({'isolationLevel':db['sequelize'][_0xa75b('0x53')][_0xa75b('0x54')][_0xa75b('0x55')]},function(_0x7ec18){return db[_0xa75b('0x25')][_0xa75b('0x56')]({'where':{'id':_0x2f2173},'transaction':_0x7ec18})[_0xa75b('0x13')](function(_0x5c5132){if(_0x5c5132){return db[_0xa75b('0x25')]['destroy']({'where':{'VoiceExtensionId':_0x2f2173},'transaction':_0x7ec18})['then'](function(){var _0x5c58bc=_[_0xa75b('0x1a')](_0x4f9d45,function(_0x41bc16){_0x41bc16['VoiceExtensionId']=_0x2f2173;_0x41bc16['isApp']=!![];return _0x41bc16;});return _0x5c5132[_0xa75b('0x57')](_0x5c58bc);})['then'](function(_0x57664f){return db['VoiceExtension'][_0xa75b('0x58')](_0x57664f,{'transaction':_0x7ec18});});}else{_0x237368=0x194;_0xd92e17=[];}});})[_0xa75b('0x13')](function(){if(_0x237368!==0x194){return db[_0xa75b('0x25')][_0xa75b('0x59')]({'where':{'isApp':!![],'VoiceExtensionId':_0x2f2173},'order':_0xa75b('0x5a')})[_0xa75b('0x13')](function(_0x799c32){_0xd92e17=_0x799c32;});}})['catch'](function(_0x3d8e01){_0x237368=0x1f4;logger[_0xa75b('0x21')](_0x3d8e01['stack']);if(_0x3d8e01[_0xa75b('0x1f')]){delete _0x3d8e01['name'];}_0xd92e17=_0x3d8e01;})[_0xa75b('0x5b')](function(){if(_0xd92e17===null){_0x1acd6b[_0xa75b('0x9')](_0x237368);}else{if(_0x237368===0x1f4){_0x1acd6b[_0xa75b('0xa')](_0x237368)['send'](_0xd92e17);}else{_0x1acd6b['status'](_0x237368)[_0xa75b('0xc')](_0xd92e17);}}});};
\ No newline at end of file
+var _0x5c39=['params','catch','create','body','outbound','startsWith','exten','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','internal','UserProfileSection','autoAssociation','update','context','description','recordingFormat','cutdigits','mandatoryDisposition','alias','addApplications','Transaction','ISOLATION_LEVELS','READ_COMMITTED','findOne','isApp','createRouting','bulkCreate','cast(priority\x20as\x20unsigned)','stack','send','../../config/logger','api','../../mysqldb','defaults','localhost','socket.io-emitter','register','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','destroy','get','InboundRoutes','inbound','OutboundRoutes','InternalRoutes','filter','ignore','map','value','includes','find','type','name','UserProfileResource','then','error','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','sort','where','pick','merge','VIRTUAL','options','VoiceExtension','includeAll','findAll','rows','show'];(function(_0x220413,_0x359dcb){var _0x248f13=function(_0x38ec86){while(--_0x38ec86){_0x220413['push'](_0x220413['shift']());}};_0x248f13(++_0x359dcb);}(_0x5c39,0x76));var _0x95c3=function(_0x3f5543,_0x23eed3){_0x3f5543=_0x3f5543-0x0;var _0x2c00e4=_0x5c39[_0x3f5543];return _0x2c00e4;};'use strict';var _=require('lodash');var Redis=require('ioredis');var qs=require('../../components/parsers/qs');var logger=require(_0x95c3('0x0'))(_0x95c3('0x1'));var config=require('../../config/environment');var db=require(_0x95c3('0x2'))['db'];config['redis']=_[_0x95c3('0x3')](config['redis'],{'host':_0x95c3('0x4'),'port':0x18eb});var socket=require(_0x95c3('0x5'))(new Redis(config['redis']));require('./voiceExtension.socket')[_0x95c3('0x6')](socket);function respondWithStatusCode(_0x4f748d,_0xabd4bd){_0xabd4bd=_0xabd4bd||0xcc;return function(_0x533d74){if(_0x533d74){return _0x4f748d[_0x95c3('0x7')](_0xabd4bd);}return _0x4f748d[_0x95c3('0x8')](_0xabd4bd)[_0x95c3('0x9')]();};}function respondWithResult(_0x57346c,_0x5cf638){_0x5cf638=_0x5cf638||0xc8;return function(_0x1032ef){if(_0x1032ef){return _0x57346c[_0x95c3('0x8')](_0x5cf638)[_0x95c3('0xa')](_0x1032ef);}};}function respondWithFilteredResult(_0x186141,_0x88003e){return function(_0x4f7a26){if(_0x4f7a26){var _0x219ad4=typeof _0x88003e['offset']===_0x95c3('0xb')&&typeof _0x88003e[_0x95c3('0xc')]===_0x95c3('0xb');var _0x4973f6=_0x4f7a26[_0x95c3('0xd')];var _0x4fd190=_0x219ad4?0x0:_0x88003e[_0x95c3('0xe')];var _0x1cc708=_0x219ad4?_0x4f7a26['count']:_0x88003e[_0x95c3('0xe')]+_0x88003e[_0x95c3('0xc')];var _0x3001b0;if(_0x1cc708>=_0x4973f6){_0x1cc708=_0x4973f6;_0x3001b0=0xc8;}else{_0x3001b0=0xce;}_0x186141['status'](_0x3001b0);return _0x186141[_0x95c3('0xf')](_0x95c3('0x10'),_0x4fd190+'-'+_0x1cc708+'/'+_0x4973f6)[_0x95c3('0xa')](_0x4f7a26);}return null;};}function removeEntity(_0x1b193b){return function(_0x24c771){if(_0x24c771){return _0x24c771[_0x95c3('0x11')]()['then'](function(){var _0x46df8d=_0x24c771[_0x95c3('0x12')]({'plain':!![]});var _0x9ef9ac=[{'name':_0x95c3('0x13'),'value':_0x95c3('0x14'),'ignore':![]},{'name':_0x95c3('0x15'),'value':'outbound','ignore':![]},{'name':_0x95c3('0x16'),'value':'internal','ignore':![]}];var _0x174135=_(_0x9ef9ac)[_0x95c3('0x17')](_0x95c3('0x18'))[_0x95c3('0x19')](_0x95c3('0x1a'))[_0x95c3('0x1a')]();if(_[_0x95c3('0x1b')](_0x174135,_0x46df8d['type'])){return;}var _0x4fc11f=_[_0x95c3('0x1c')](_0x9ef9ac,[_0x95c3('0x1a'),_0x46df8d[_0x95c3('0x1d')]])[_0x95c3('0x1e')];return db[_0x95c3('0x1f')][_0x95c3('0x11')]({'where':{'type':_0x4fc11f,'resourceId':_0x46df8d['id']}})['then'](function(){return _0x24c771;});})[_0x95c3('0x20')](function(){_0x1b193b[_0x95c3('0x8')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5be174){return function(_0x145eae){if(!_0x145eae){_0x5be174[_0x95c3('0x7')](0x194);}return _0x145eae;};}function handleError(_0x3de360,_0x280d36){_0x280d36=_0x280d36||0x1f4;return function(_0x403714){logger[_0x95c3('0x21')](_0x403714['stack']);if(_0x403714[_0x95c3('0x1e')]){delete _0x403714[_0x95c3('0x1e')];}_0x3de360['status'](_0x280d36)['send'](_0x403714);};}exports['index']=function(_0xcffea1,_0x39f013){var _0x3047d7={},_0x22951b={},_0x315c90={'count':0x0,'rows':[]};var _0x1d3afc=_[_0x95c3('0x19')](db['VoiceExtension'][_0x95c3('0x22')],function(_0x1d02ca){return{'name':_0x1d02ca[_0x95c3('0x23')],'type':_0x1d02ca['type'][_0x95c3('0x24')]};});_0x22951b[_0x95c3('0x25')]=_[_0x95c3('0x19')](_0x1d3afc,_0x95c3('0x1e'));_0x22951b[_0x95c3('0x26')]=_[_0x95c3('0x27')](_0xcffea1[_0x95c3('0x26')]);_0x22951b[_0x95c3('0x28')]=_[_0x95c3('0x29')](_0x22951b['model'],_0x22951b['query']);_0x3047d7[_0x95c3('0x2a')]=_[_0x95c3('0x29')](_0x22951b['model'],qs[_0x95c3('0x2b')](_0xcffea1['query']['fields']));_0x3047d7[_0x95c3('0x2a')]=_0x3047d7[_0x95c3('0x2a')][_0x95c3('0x2c')]?_0x3047d7[_0x95c3('0x2a')]:_0x22951b[_0x95c3('0x25')];if(!_0xcffea1[_0x95c3('0x26')]['hasOwnProperty']('nolimit')){_0x3047d7['limit']=qs['limit'](_0xcffea1[_0x95c3('0x26')][_0x95c3('0xc')]);_0x3047d7[_0x95c3('0xe')]=qs[_0x95c3('0xe')](_0xcffea1[_0x95c3('0x26')][_0x95c3('0xe')]);}_0x3047d7['order']=qs[_0x95c3('0x2d')](_0xcffea1[_0x95c3('0x26')]['sort']);_0x3047d7[_0x95c3('0x2e')]=qs[_0x95c3('0x28')](_[_0x95c3('0x2f')](_0xcffea1[_0x95c3('0x26')],_0x22951b[_0x95c3('0x28')]),_0x1d3afc);if(_0xcffea1[_0x95c3('0x26')][_0x95c3('0x17')]){_0x3047d7['where']=_[_0x95c3('0x30')](_0x3047d7[_0x95c3('0x2e')],{'$or':_[_0x95c3('0x19')](_0x1d3afc,function(_0x4d86e6){if(_0x4d86e6['type']!==_0x95c3('0x31')){var _0x44e6db={};_0x44e6db[_0x4d86e6[_0x95c3('0x1e')]]={'$like':'%'+_0xcffea1['query'][_0x95c3('0x17')]+'%'};return _0x44e6db;}})});}_0x3047d7=_[_0x95c3('0x30')]({},_0x3047d7,_0xcffea1[_0x95c3('0x32')]);var _0x57eac3={'where':_0x3047d7[_0x95c3('0x2e')]};return db[_0x95c3('0x33')][_0x95c3('0xd')](_0x57eac3)['then'](function(_0x463f67){_0x315c90['count']=_0x463f67;if(_0xcffea1['query'][_0x95c3('0x34')]){_0x3047d7['include']=[{'all':!![]}];}return db[_0x95c3('0x33')][_0x95c3('0x35')](_0x3047d7);})[_0x95c3('0x20')](function(_0x3b5a5b){_0x315c90[_0x95c3('0x36')]=_0x3b5a5b;return _0x315c90;})[_0x95c3('0x20')](respondWithFilteredResult(_0x39f013,_0x3047d7))['catch'](handleError(_0x39f013,null));};exports[_0x95c3('0x37')]=function(_0x223f80,_0x4440d0){var _0x30736f={'raw':![],'where':{'id':_0x223f80[_0x95c3('0x38')]['id']}},_0x454770={};_0x454770[_0x95c3('0x25')]=_[_0x95c3('0x27')](db['VoiceExtension'][_0x95c3('0x22')]);_0x454770[_0x95c3('0x26')]=_[_0x95c3('0x27')](_0x223f80[_0x95c3('0x26')]);_0x454770[_0x95c3('0x28')]=_[_0x95c3('0x29')](_0x454770[_0x95c3('0x25')],_0x454770[_0x95c3('0x26')]);_0x30736f[_0x95c3('0x2a')]=_[_0x95c3('0x29')](_0x454770[_0x95c3('0x25')],qs[_0x95c3('0x2b')](_0x223f80[_0x95c3('0x26')][_0x95c3('0x2b')]));_0x30736f[_0x95c3('0x2a')]=_0x30736f[_0x95c3('0x2a')][_0x95c3('0x2c')]?_0x30736f[_0x95c3('0x2a')]:_0x454770[_0x95c3('0x25')];if(_0x223f80[_0x95c3('0x26')]['includeAll']){_0x30736f['include']=[{'all':!![]}];}_0x30736f=_[_0x95c3('0x30')]({},_0x30736f,_0x223f80[_0x95c3('0x32')]);return db[_0x95c3('0x33')]['find'](_0x30736f)[_0x95c3('0x20')](handleEntityNotFound(_0x4440d0,null))['then'](respondWithResult(_0x4440d0,null))[_0x95c3('0x39')](handleError(_0x4440d0,null));};exports['destroy']=function(_0x1b5c2e,_0x15c6bb){return db['VoiceExtension']['find']({'where':{'id':_0x1b5c2e[_0x95c3('0x38')]['id']}})[_0x95c3('0x20')](handleEntityNotFound(_0x15c6bb,null))[_0x95c3('0x20')](removeEntity(_0x15c6bb,null))['catch'](handleError(_0x15c6bb,null));};exports[_0x95c3('0x3a')]=function(_0xbb1fd1,_0x5f13e9){if(_0xbb1fd1[_0x95c3('0x3b')][_0x95c3('0x1d')]===_0x95c3('0x3c')&&!_[_0x95c3('0x3d')](_0xbb1fd1[_0x95c3('0x3b')][_0x95c3('0x3e')],'_')){_0xbb1fd1[_0x95c3('0x3b')][_0x95c3('0x3e')]='_'['concat'](_0xbb1fd1[_0x95c3('0x3b')][_0x95c3('0x3e')]);}return db[_0x95c3('0x33')][_0x95c3('0x3a')](_0xbb1fd1[_0x95c3('0x3b')],{'raw':![]})['then'](function(_0x607655){var _0x4aa752=_0xbb1fd1[_0x95c3('0x3f')][_0x95c3('0x12')]({'plain':!![]});if(!_0x4aa752)throw new Error(_0x95c3('0x40'));if(_0x4aa752[_0x95c3('0x41')]===_0x95c3('0x3f')){var _0x3cfbc5=_0x607655[_0x95c3('0x12')]({'plain':!![]});var _0x408a02=[{'name':_0x95c3('0x13'),'value':_0x95c3('0x14')},{'name':'OutboundRoutes','value':_0x95c3('0x3c')},{'name':_0x95c3('0x16'),'value':_0x95c3('0x42')}];var _0x5c1e01=_[_0x95c3('0x1c')](_0x408a02,[_0x95c3('0x1a'),_0x3cfbc5[_0x95c3('0x1d')]])[_0x95c3('0x1e')];return db[_0x95c3('0x43')]['find']({'where':{'name':_0x5c1e01,'userProfileId':_0x4aa752['userProfileId']},'raw':!![]})[_0x95c3('0x20')](function(_0x2f9a16){if(_0x2f9a16&&_0x2f9a16[_0x95c3('0x44')]===0x0){return db['UserProfileResource'][_0x95c3('0x3a')]({'name':_0x3cfbc5[_0x95c3('0x1e')],'resourceId':_0x3cfbc5['id'],'type':_0x2f9a16[_0x95c3('0x1e')],'sectionId':_0x2f9a16['id']},{})[_0x95c3('0x20')](function(){return _0x607655;});}else{return _0x607655;}})['catch'](function(_0x43e6d4){logger[_0x95c3('0x21')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x43e6d4);throw _0x43e6d4;});}return _0x607655;})[_0x95c3('0x20')](respondWithResult(_0x5f13e9,0xc9))['catch'](handleError(_0x5f13e9,null));};exports['update']=function(_0xe211e,_0x4362ac){if(_0xe211e['body']['id']){delete _0xe211e['body']['id'];}return db['VoiceExtension'][_0x95c3('0x1c')]({'where':{'id':_0xe211e['params']['id']}})[_0x95c3('0x20')](handleEntityNotFound(_0x4362ac,null))[_0x95c3('0x20')](function(_0x151e27){if(_0x151e27){return db['VoiceExtension'][_0x95c3('0x45')](_['pick'](_0xe211e[_0x95c3('0x3b')],[_0x95c3('0x3e'),_0x95c3('0x46'),_0x95c3('0x47'),_0x95c3('0x48'),_0x95c3('0x49'),_0x95c3('0x4a'),_0x95c3('0x4b')]),{'where':{'context':_0x151e27[_0x95c3('0x46')],'exten':_0x151e27[_0x95c3('0x3e')]},'individualHooks':!![]})[_0x95c3('0x20')](function(_0x59dc74){return _0x59dc74;});}return null;})[_0x95c3('0x20')](respondWithStatusCode(_0x4362ac,null))['catch'](handleError(_0x4362ac,null));};exports[_0x95c3('0x4c')]=function(_0x586b95,_0xacdbdb){var _0x151f37=_0x586b95[_0x95c3('0x38')]['id'];var _0x20af68=_0x586b95['body'];var _0x1c55d8=0xc8;var _0x318ad6=null;return db['sequelize']['transaction']({'isolationLevel':db['sequelize'][_0x95c3('0x4d')][_0x95c3('0x4e')][_0x95c3('0x4f')]},function(_0x2a4ca2){return db[_0x95c3('0x33')][_0x95c3('0x50')]({'where':{'id':_0x151f37},'transaction':_0x2a4ca2})[_0x95c3('0x20')](function(_0x1fe535){if(_0x1fe535){return db['VoiceExtension'][_0x95c3('0x11')]({'where':{'VoiceExtensionId':_0x151f37},'transaction':_0x2a4ca2})[_0x95c3('0x20')](function(){var _0x593af8=_['map'](_0x20af68,function(_0x22e48c){_0x22e48c['VoiceExtensionId']=_0x151f37;_0x22e48c[_0x95c3('0x51')]=!![];return _0x22e48c;});return _0x1fe535[_0x95c3('0x52')](_0x593af8);})[_0x95c3('0x20')](function(_0x524d15){return db[_0x95c3('0x33')][_0x95c3('0x53')](_0x524d15,{'transaction':_0x2a4ca2});});}else{_0x1c55d8=0x194;_0x318ad6=[];}});})['then'](function(){if(_0x1c55d8!==0x194){return db['VoiceExtension']['findAndCountAll']({'where':{'isApp':!![],'VoiceExtensionId':_0x151f37},'order':_0x95c3('0x54')})[_0x95c3('0x20')](function(_0x3f7f2b){_0x318ad6=_0x3f7f2b;});}})[_0x95c3('0x39')](function(_0x1c2aa5){_0x1c55d8=0x1f4;logger['error'](_0x1c2aa5[_0x95c3('0x55')]);if(_0x1c2aa5[_0x95c3('0x1e')]){delete _0x1c2aa5[_0x95c3('0x1e')];}_0x318ad6=_0x1c2aa5;})['finally'](function(){if(_0x318ad6===null){_0xacdbdb['sendStatus'](_0x1c55d8);}else{if(_0x1c55d8===0x1f4){_0xacdbdb[_0x95c3('0x8')](_0x1c55d8)[_0x95c3('0x56')](_0x318ad6);}else{_0xacdbdb['status'](_0x1c55d8)[_0x95c3('0xa')](_0x318ad6);}}});};
\ No newline at end of file
index fe1b849..dc770d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x10fd=['events','../../mysqldb','VoiceExtension','setMaxListeners','update','remove','emit','hasOwnProperty','exports'];(function(_0x537309,_0x53e925){var _0x1e8563=function(_0x1efc5c){while(--_0x1efc5c){_0x537309['push'](_0x537309['shift']());}};_0x1e8563(++_0x53e925);}(_0x10fd,0xcf));var _0xd10f=function(_0x1f98e4,_0x48bb7d){_0x1f98e4=_0x1f98e4-0x0;var _0x2838e1=_0x10fd[_0x1f98e4];return _0x2838e1;};'use strict';var EventEmitter=require(_0xd10f('0x0'));var VoiceExtension=require(_0xd10f('0x1'))['db'][_0xd10f('0x2')];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents[_0xd10f('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0xd10f('0x4'),'afterDestroy':_0xd10f('0x5')};function emitEvent(_0x19088c){return function(_0x275ceb,_0x358447,_0x1ca4ac){VoiceExtensionEvents[_0xd10f('0x6')](_0x19088c+':'+_0x275ceb['id'],_0x275ceb);VoiceExtensionEvents['emit'](_0x19088c,_0x275ceb);_0x1ca4ac(null);};}for(var e in events){if(events[_0xd10f('0x7')](e)){var event=events[e];VoiceExtension['hook'](e,emitEvent(event));}}module[_0xd10f('0x8')]=VoiceExtensionEvents;
\ No newline at end of file
+var _0xc86d=['VoiceExtension','save','update','remove','hook','exports','../../mysqldb'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0xc86d,0x99));var _0xdc86=function(_0x164eca,_0x555e28){_0x164eca=_0x164eca-0x0;var _0x2ce562=_0xc86d[_0x164eca];return _0x2ce562;};'use strict';var EventEmitter=require('events');var VoiceExtension=require(_0xdc86('0x0'))['db'][_0xdc86('0x1')];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xdc86('0x2'),'afterUpdate':_0xdc86('0x3'),'afterDestroy':_0xdc86('0x4')};function emitEvent(_0x2d5389){return function(_0x2179ad,_0x5557a7,_0x153ff9){VoiceExtensionEvents['emit'](_0x2d5389+':'+_0x2179ad['id'],_0x2179ad);VoiceExtensionEvents['emit'](_0x2d5389,_0x2179ad);_0x153ff9(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoiceExtension[_0xdc86('0x5')](e,emitEvent(event));}}module[_0xdc86('0x6')]=VoiceExtensionEvents;
\ No newline at end of file
index 8bf4e1e..78fee12 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd9ef=['alias','NoOp','CDR(routeAlias)=','push','inbound','CDR(routeid)=','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','outbound','CDR(type)=outbound','No\x20alias\x20set','CDR(destination)=','cutdigits','${EXTEN:','${EXTEN}','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','MONITOR_OPTIONS=ab','hasOwnProperty','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','wav','options','url','length','name','trunk','param','prefix','phone','split','SIP','join','indexOf','U(xcally-mixmonitor-context)','replace','isEmpty','Interval','then','interval','IntervalId','filter','toLowerCase','tag','CDR(tag)=','intervals','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):','Set(CALLERID(all)=','NoOp(No\x20number\x20available)','answer','queue','app','appType','custom','XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','splice','GotoIfTime',',${EXTEN},','outboundDial','appdata','priority','concat','last','define','VoiceExtension','voice_extensions','get','Hangup','lodash','./voiceExtension.attributes','type','Set','CDR(type)=','context','exten'];(function(_0x4a114a,_0x60443){var _0x3d5bcd=function(_0x6f868a){while(--_0x6f868a){_0x4a114a['push'](_0x4a114a['shift']());}};_0x3d5bcd(++_0x60443);}(_0xd9ef,0x95));var _0xfd9e=function(_0x345349,_0x874cd2){_0x345349=_0x345349-0x0;var _0x1de32f=_0xd9ef[_0x345349];return _0x1de32f;};'use strict';var _=require(_0xfd9e('0x0'));var attributes=require(_0xfd9e('0x1'));module['exports']=function(_0x1e4dfc){var _0x55d1e2=_0x1e4dfc['models'];function _0x505f7f(_0xdce9ae){var _0x28cfac=0x2;var _0xe6990b=[{'type':_0xdce9ae[_0xfd9e('0x2')],'app':_0xfd9e('0x3'),'appdata':_0xfd9e('0x4')+_0xdce9ae[_0xfd9e('0x2')],'context':_0xdce9ae[_0xfd9e('0x5')],'exten':_0xdce9ae[_0xfd9e('0x6')],'priority':_0x28cfac++,'VoiceExtensionId':_0xdce9ae['id']},{'type':_0xdce9ae[_0xfd9e('0x2')],'app':_0xdce9ae[_0xfd9e('0x7')]?_0xfd9e('0x3'):_0xfd9e('0x8'),'appdata':_0xdce9ae['alias']?_0xfd9e('0x9')+_0xdce9ae[_0xfd9e('0x7')]:'No\x20alias\x20set','context':_0xdce9ae[_0xfd9e('0x5')],'exten':_0xdce9ae[_0xfd9e('0x6')],'priority':_0x28cfac++,'VoiceExtensionId':_0xdce9ae['id']}];if(_0xdce9ae[_0xfd9e('0x2')]==='inbound'){_0xe6990b[_0xfd9e('0xa')]({'type':_0xfd9e('0xb'),'app':_0xfd9e('0x3'),'appdata':_0xfd9e('0xc')+_0xdce9ae['id'],'context':_0xdce9ae[_0xfd9e('0x5')],'exten':_0xdce9ae['exten'],'priority':_0x28cfac++,'VoiceExtensionId':_0xdce9ae['id']});}_0xe6990b[_0xfd9e('0xa')]({'type':_0xdce9ae[_0xfd9e('0x2')],'app':_0xfd9e('0x3'),'appdata':_0xfd9e('0xd'),'context':_0xdce9ae[_0xfd9e('0x5')],'exten':_0xdce9ae[_0xfd9e('0x6')],'priority':_0x28cfac++,'VoiceExtensionId':_0xdce9ae['id']},{'type':_0xdce9ae[_0xfd9e('0x2')],'app':_0xfd9e('0x3'),'appdata':_0xfd9e('0xe'),'context':_0xdce9ae[_0xfd9e('0x5')],'exten':_0xdce9ae['exten'],'priority':_0x28cfac++,'VoiceExtensionId':_0xdce9ae['id']},{'type':_0xdce9ae[_0xfd9e('0x2')],'app':'Set','appdata':'MONITOR_OPTIONS=ab','context':_0xdce9ae[_0xfd9e('0x5')],'exten':_0xdce9ae[_0xfd9e('0x6')],'priority':_0x28cfac++,'VoiceExtensionId':_0xdce9ae['id']});return _0xe6990b;}function _0x144372(_0x4d605a){var _0x3c329e=0x2;var _0xee091f=[{'type':_0xfd9e('0xf'),'app':_0xfd9e('0x3'),'appdata':_0xfd9e('0x10'),'context':_0x4d605a[_0xfd9e('0x5')],'exten':_0x4d605a[_0xfd9e('0x6')],'priority':_0x3c329e++,'VoiceExtensionId':_0x4d605a['id']},{'type':'outbound','app':_0x4d605a[_0xfd9e('0x7')]?_0xfd9e('0x3'):_0xfd9e('0x8'),'appdata':_0x4d605a[_0xfd9e('0x7')]?_0xfd9e('0x9')+_0x4d605a[_0xfd9e('0x7')]:_0xfd9e('0x11'),'context':_0x4d605a[_0xfd9e('0x5')],'exten':_0x4d605a[_0xfd9e('0x6')],'priority':_0x3c329e++,'VoiceExtensionId':_0x4d605a['id']},{'type':_0xfd9e('0xf'),'app':'Set','appdata':_0xfd9e('0x12')+(_0x4d605a[_0xfd9e('0x13')]?_0xfd9e('0x14')+_0x4d605a[_0xfd9e('0x13')]+'}':_0xfd9e('0x15')),'context':_0x4d605a['context'],'exten':_0x4d605a[_0xfd9e('0x6')],'priority':_0x3c329e++,'VoiceExtensionId':_0x4d605a['id']},{'type':_0xfd9e('0xf'),'app':'Set','appdata':'CDR(routeid)='+_0x4d605a['id'],'context':_0x4d605a[_0xfd9e('0x5')],'exten':_0x4d605a[_0xfd9e('0x6')],'priority':_0x3c329e++,'VoiceExtensionId':_0x4d605a['id']},{'type':_0xfd9e('0xf'),'app':_0xfd9e('0x16'),'appdata':_0xfd9e('0x17')+(_0x3c329e+0x2)+'):Goto('+(_0x3c329e+0x1)+')','context':_0x4d605a[_0xfd9e('0x5')],'exten':_0x4d605a[_0xfd9e('0x6')],'priority':_0x3c329e++,'VoiceExtensionId':_0x4d605a['id']},{'type':_0xfd9e('0xf'),'app':_0xfd9e('0x3'),'appdata':_0x4d605a[_0xfd9e('0x13')]?'CDR(prefix)=${EXTEN:0:'+_0x4d605a['cutdigits']+'}':'CDR(prefix)=noprefix','context':_0x4d605a[_0xfd9e('0x5')],'exten':_0x4d605a['exten'],'priority':_0x3c329e++,'VoiceExtensionId':_0x4d605a['id']},{'type':'outbound','app':_0xfd9e('0x3'),'appdata':_0xfd9e('0xd'),'context':_0x4d605a['context'],'exten':_0x4d605a[_0xfd9e('0x6')],'priority':_0x3c329e++,'VoiceExtensionId':_0x4d605a['id']},{'type':_0xfd9e('0xf'),'app':_0xfd9e('0x3'),'appdata':_0xfd9e('0xe'),'context':_0x4d605a['context'],'exten':_0x4d605a['exten'],'priority':_0x3c329e++,'VoiceExtensionId':_0x4d605a['id']},{'type':_0xfd9e('0xf'),'app':_0xfd9e('0x3'),'appdata':_0xfd9e('0x18'),'context':_0x4d605a[_0xfd9e('0x5')],'exten':_0x4d605a['exten'],'priority':_0x3c329e++,'VoiceExtensionId':_0x4d605a['id']},{'type':_0xfd9e('0xf'),'app':_0xfd9e('0x3'),'appdata':'outboundrouteid='+_0x4d605a['id'],'context':_0x4d605a['context'],'exten':_0x4d605a[_0xfd9e('0x6')],'priority':_0x3c329e++,'VoiceExtensionId':_0x4d605a['id']}];if(_0x4d605a[_0xfd9e('0x19')](_0xfd9e('0x1a'))&&_0x4d605a[_0xfd9e('0x1a')]!==_0xfd9e('0x1b')){_0xee091f[_0xfd9e('0xa')]({'type':_0xfd9e('0xf'),'app':_0xfd9e('0x3'),'appdata':_0xfd9e('0x1c'),'context':_0x4d605a['context'],'exten':_0x4d605a[_0xfd9e('0x6')],'priority':_0x3c329e++,'VoiceExtensionId':_0x4d605a['id']},{'type':_0xfd9e('0xf'),'app':_0xfd9e('0x3'),'appdata':_0xfd9e('0x1d')+_0x4d605a[_0xfd9e('0x1a')]||_0xfd9e('0x1e'),'context':_0x4d605a[_0xfd9e('0x5')],'exten':_0x4d605a[_0xfd9e('0x6')],'priority':_0x3c329e++,'VoiceExtensionId':_0x4d605a['id']});}return _0xee091f;}function _0xfdac9f(_0x124282,_0xa21478){var _0x4ab28c=[{'name':'trunk','param':0x0},{'name':'timeout','param':0x1},{'name':_0xfd9e('0x1f'),'param':0x2},{'name':_0xfd9e('0x20'),'param':0x3}];var _0x56422f={};var _0x4b0b5b=_0xa21478['split'](',');var _0x12a42f=[];for(var _0x1fdd36=0x0;_0x1fdd36<_0x4ab28c[_0xfd9e('0x21')];_0x1fdd36++){switch(_0x4ab28c[_0x1fdd36][_0xfd9e('0x22')]){case _0xfd9e('0x23'):_0x56422f[_0xfd9e('0x23')]=_0x4b0b5b[_0x4ab28c[_0x1fdd36][_0xfd9e('0x24')]]['split']('/')[0x1];_0x56422f['phone']=_0x4b0b5b[_0x4ab28c[_0x1fdd36][_0xfd9e('0x24')]]['split']('/')[0x2];_0x56422f[_0xfd9e('0x25')]=_0x56422f[_0xfd9e('0x26')]?_0x56422f[_0xfd9e('0x26')][_0xfd9e('0x27')]('$')[0x0]:undefined;_0x56422f[_0xfd9e('0x26')]=_0x124282[_0xfd9e('0x13')]?(_0x56422f['prefix']||'')+'${EXTEN:'+_0x124282[_0xfd9e('0x13')]+'}':(_0x56422f['prefix']||'')+_0xfd9e('0x15');_0x12a42f[_0x4ab28c[_0x1fdd36][_0xfd9e('0x24')]]=[_0xfd9e('0x28'),_0x56422f[_0xfd9e('0x23')],_0x56422f[_0xfd9e('0x26')]][_0xfd9e('0x29')]('/');break;case _0xfd9e('0x1f'):_0x56422f[_0xfd9e('0x1f')]=_0x4b0b5b[_0x4ab28c[_0x1fdd36][_0xfd9e('0x24')]];if(_0x124282[_0xfd9e('0x1a')]!==_0xfd9e('0x1b')){if(_0x56422f['options'][_0xfd9e('0x2a')](_0xfd9e('0x2b'))<0x0){_0x56422f[_0xfd9e('0x1f')]+=_0xfd9e('0x2b');}}else{_0x56422f[_0xfd9e('0x1f')]=_0x56422f[_0xfd9e('0x1f')][_0xfd9e('0x2c')](_0xfd9e('0x2b'),'');}_0x12a42f[_0x4ab28c[_0x1fdd36][_0xfd9e('0x24')]]=_0x56422f[_0xfd9e('0x1f')];break;default:_0x12a42f[_0x4ab28c[_0x1fdd36][_0xfd9e('0x24')]]=_0x4b0b5b[_0x4ab28c[_0x1fdd36][_0xfd9e('0x24')]];}}return _0x12a42f[_0xfd9e('0x29')](',');}function _0x4324ff(_0x176e45,_0x243abf,_0x212205){return new Promise(function(_0x2ad5d7,_0x176be7){var _0x44fb81=[];if(_[_0xfd9e('0x2d')](_0x243abf))return _0x2ad5d7(_0x44fb81);_0x55d1e2[_0xfd9e('0x2e')]['findAll']({'attributes':['id','interval','IntervalId'],'raw':!![]})[_0xfd9e('0x2f')](function(_0x2ec245){for(var _0x442621=0x0,_0x4220d4=0x0;_0x442621<_0x243abf['length'];_0x442621++,_0x4220d4=0x0){var _0x5965fb=_0x243abf[_0x442621];var _0x225036=[];var _0x104d06=[];delete _0x5965fb['id'];if(_0x5965fb['interval']!=='*,*,*,*'){_0x5965fb['intervals']=[_0x5965fb[_0xfd9e('0x30')]];}else{_0x5965fb['intervals']=_0x5965fb[_0xfd9e('0x31')]?_['map'](_[_0xfd9e('0x32')](_0x2ec245,{'IntervalId':_0x5965fb[_0xfd9e('0x31')]}),_0xfd9e('0x30')):[];}_0x5965fb[_0xfd9e('0x5')]=_0x176e45['context'];_0x5965fb[_0xfd9e('0x6')]=_0x176e45[_0xfd9e('0x6')];if(_0x5965fb[_0xfd9e('0x2')])_0x5965fb['type']=_0x5965fb[_0xfd9e('0x2')][_0xfd9e('0x33')]();if(_0x176e45[_0xfd9e('0x2')]===_0xfd9e('0xf')){if(_0x5965fb[_0xfd9e('0x19')](_0xfd9e('0x34'))&&_0x5965fb[_0xfd9e('0x34')]&&_0x5965fb[_0xfd9e('0x34')]!=='--'){_0x225036[_0xfd9e('0xa')]({'type':_0x5965fb[_0xfd9e('0x2')][_0xfd9e('0x33')](),'app':_0xfd9e('0x3'),'appdata':_0xfd9e('0x35')+_0x5965fb[_0xfd9e('0x34')],'context':_0x176e45[_0xfd9e('0x5')],'exten':_0x176e45[_0xfd9e('0x6')],'priority':_0x5965fb[_0xfd9e('0x36')][_0xfd9e('0x21')]+_0x212205+_0x4220d4++,'VoiceExtensionId':_0x176e45['id']});}_0x225036[_0xfd9e('0xa')]({'type':_0x5965fb[_0xfd9e('0x2')]['toLowerCase'](),'app':_0xfd9e('0x16'),'appdata':_0xfd9e('0x37')+(_0x5965fb['callerID']?_0xfd9e('0x38')+_0x5965fb['callerID']+')':_0xfd9e('0x39')),'context':_0x176e45[_0xfd9e('0x5')],'exten':_0x176e45[_0xfd9e('0x6')],'priority':_0x5965fb[_0xfd9e('0x36')][_0xfd9e('0x21')]+_0x212205+_0x4220d4++,'VoiceExtensionId':_0x176e45['id']});}else{if(_0x5965fb['hasOwnProperty'](_0xfd9e('0x3a'))){if([_0xfd9e('0x3b'),'playback']['includes'](_0x5965fb[_0xfd9e('0x3c')][_0xfd9e('0x33')]())&&_0x5965fb[_0xfd9e('0x3d')]!==_0xfd9e('0x3e')){if(_0x5965fb['answer']){_0x225036[_0xfd9e('0xa')]({'type':_0x5965fb[_0xfd9e('0x2')][_0xfd9e('0x33')](),'app':_0xfd9e('0x16'),'appdata':'$[${XCALLY-MOTION-ANSWER}=0]?Answer','context':_0x176e45[_0xfd9e('0x5')],'exten':_0x176e45[_0xfd9e('0x6')],'priority':_0x5965fb[_0xfd9e('0x36')]['length']+_0x212205+_0x4220d4++,'VoiceExtensionId':_0x176e45['id']});_0x225036[_0xfd9e('0xa')]({'type':_0x5965fb[_0xfd9e('0x2')]['toLowerCase'](),'app':_0xfd9e('0x3'),'appdata':_0xfd9e('0x3f'),'context':_0x176e45[_0xfd9e('0x5')],'exten':_0x176e45[_0xfd9e('0x6')],'priority':_0x5965fb[_0xfd9e('0x36')][_0xfd9e('0x21')]+_0x212205+_0x4220d4++,'VoiceExtensionId':_0x176e45['id']});}else{_0x225036[_0xfd9e('0xa')]({'type':_0x5965fb[_0xfd9e('0x2')][_0xfd9e('0x33')](),'app':_0xfd9e('0x16'),'appdata':_0xfd9e('0x40'),'context':_0x176e45[_0xfd9e('0x5')],'exten':_0x176e45['exten'],'priority':_0x5965fb['intervals'][_0xfd9e('0x21')]+_0x212205+_0x4220d4++,'VoiceExtensionId':_0x176e45['id']});_0x225036[_0xfd9e('0xa')]({'type':_0x5965fb[_0xfd9e('0x2')][_0xfd9e('0x33')](),'app':_0xfd9e('0x3'),'appdata':'XCALLY-MOTION-PROGRESS=1','context':_0x176e45['context'],'exten':_0x176e45['exten'],'priority':_0x5965fb['intervals'][_0xfd9e('0x21')]+_0x212205+_0x4220d4++,'VoiceExtensionId':_0x176e45['id']});}}}}for(var _0x3ab92c=0x0;_0x3ab92c<_0x5965fb[_0xfd9e('0x36')][_0xfd9e('0x21')];_0x3ab92c++){var _0x2fb211=_0x212205+_0x5965fb['intervals'][_0xfd9e('0x21')];var _0x51b8a4=_0x3ab92c===_0x5965fb[_0xfd9e('0x36')][_0xfd9e('0x21')]-0x1?_0x212205+_0x225036[_0xfd9e('0x21')]+_0x104d06[_0xfd9e('0x21')]+0x2:_0x212205+_0x3ab92c+0x1;_0x225036[_0xfd9e('0x41')](_0x3ab92c,0x0,{'type':_0x176e45[_0xfd9e('0x2')],'app':_0xfd9e('0x42'),'appdata':_0x5965fb['intervals'][_0x3ab92c]+'?'+_0x176e45[_0xfd9e('0x5')]+',${EXTEN},'+_0x2fb211+':'+_0x176e45['context']+_0xfd9e('0x43')+_0x51b8a4,'exten':_0x176e45[_0xfd9e('0x6')],'context':_0x176e45[_0xfd9e('0x5')],'priority':_0x212205+_0x3ab92c,'VoiceExtensionId':_0x176e45['id']});}if(_0x5965fb[_0xfd9e('0x3d')]===_0xfd9e('0x44'))_0x5965fb[_0xfd9e('0x45')]=_0xfdac9f(_0x176e45,_0x5965fb[_0xfd9e('0x45')]);_0x5965fb[_0xfd9e('0x46')]=_0x225036[_0xfd9e('0x21')]?_['last'](_0x225036)[_0xfd9e('0x46')]+0x1:_0x212205;_0x44fb81=_[_0xfd9e('0x47')](_0x44fb81,_0x225036,[_0x5965fb],_0x104d06);_0x212205=_[_0xfd9e('0x48')](_0x44fb81)[_0xfd9e('0x46')]+0x1;}return _0x2ad5d7(_0x44fb81);})['catch'](function(_0x255ec8){_0x176be7(_0x255ec8);});});}return _0x1e4dfc[_0xfd9e('0x49')](_0xfd9e('0x4a'),attributes,{'tableName':_0xfd9e('0x4b'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x1901c1){var _0x211e73=this[_0xfd9e('0x4c')]({'plain':!![]});var _0x3b5ece=_0x211e73[_0xfd9e('0x2')]===_0xfd9e('0xf')?_0x144372(_0x211e73):_0x505f7f(_0x211e73);return _0x4324ff(_0x211e73,_0x1901c1,_[_0xfd9e('0x48')](_0x3b5ece)[_0xfd9e('0x46')]+0x1)['then'](function(_0x4d6445){var _0x31d3fc=_[_0xfd9e('0x47')](_0x3b5ece,_0x4d6445);_0x31d3fc[_0xfd9e('0xa')]({'type':_0x211e73[_0xfd9e('0x2')],'app':_0xfd9e('0x4d'),'exten':_0x211e73['exten'],'context':_0x211e73[_0xfd9e('0x5')],'priority':_['last'](_0x31d3fc)[_0xfd9e('0x46')]+0x1,'VoiceExtensionId':_0x211e73['id']});return _0x31d3fc;});}}});};
\ No newline at end of file
+var _0xe81d=['filter','hasOwnProperty','tag','toLowerCase','CDR(tag)=','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):','callerID','Set(CALLERID(all)=','NoOp(No\x20number\x20available)','playback','includes','app','custom','answer','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1','splice','GotoIfTime',',${EXTEN},','appType','outboundDial','appdata','last','concat','priority','define','VoiceExtension','voice_extensions','get','then','lodash','./voiceExtension.attributes','exports','models','Set','CDR(type)=','context','exten','type','alias','No\x20alias\x20set','push','inbound','CDR(routeid)=','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','outbound','CDR(type)=outbound','NoOp','CDR(routeAlias)=','CDR(destination)=','cutdigits','${EXTEN:','${EXTEN}','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','outboundrouteid=','recordingFormat','none','_XCALLY_MIXMONITOR_FORMAT=','trunk','options','url','split','length','param','prefix','phone','indexOf','U(xcally-mixmonitor-context)','isEmpty','Interval','interval','*,*,*,*','intervals','IntervalId','map'];(function(_0x2d7312,_0x31ca1b){var _0x567211=function(_0x3bed7b){while(--_0x3bed7b){_0x2d7312['push'](_0x2d7312['shift']());}};_0x567211(++_0x31ca1b);}(_0xe81d,0xc4));var _0xde81=function(_0x3a7940,_0x46f938){_0x3a7940=_0x3a7940-0x0;var _0x46aff1=_0xe81d[_0x3a7940];return _0x46aff1;};'use strict';var _=require(_0xde81('0x0'));var attributes=require(_0xde81('0x1'));module[_0xde81('0x2')]=function(_0xb24c86){var _0x2fd581=_0xb24c86[_0xde81('0x3')];function _0x15211c(_0x29d917){var _0x28698c=0x2;var _0x5a50f7=[{'type':_0x29d917['type'],'app':_0xde81('0x4'),'appdata':_0xde81('0x5')+_0x29d917['type'],'context':_0x29d917[_0xde81('0x6')],'exten':_0x29d917[_0xde81('0x7')],'priority':_0x28698c++,'VoiceExtensionId':_0x29d917['id']},{'type':_0x29d917[_0xde81('0x8')],'app':_0x29d917[_0xde81('0x9')]?_0xde81('0x4'):'NoOp','appdata':_0x29d917[_0xde81('0x9')]?'CDR(routeAlias)='+_0x29d917[_0xde81('0x9')]:_0xde81('0xa'),'context':_0x29d917[_0xde81('0x6')],'exten':_0x29d917[_0xde81('0x7')],'priority':_0x28698c++,'VoiceExtensionId':_0x29d917['id']}];if(_0x29d917['type']==='inbound'){_0x5a50f7[_0xde81('0xb')]({'type':_0xde81('0xc'),'app':_0xde81('0x4'),'appdata':_0xde81('0xd')+_0x29d917['id'],'context':_0x29d917['context'],'exten':_0x29d917[_0xde81('0x7')],'priority':_0x28698c++,'VoiceExtensionId':_0x29d917['id']});}_0x5a50f7['push']({'type':_0x29d917['type'],'app':_0xde81('0x4'),'appdata':_0xde81('0xe'),'context':_0x29d917[_0xde81('0x6')],'exten':_0x29d917['exten'],'priority':_0x28698c++,'VoiceExtensionId':_0x29d917['id']},{'type':_0x29d917[_0xde81('0x8')],'app':_0xde81('0x4'),'appdata':_0xde81('0xf'),'context':_0x29d917['context'],'exten':_0x29d917[_0xde81('0x7')],'priority':_0x28698c++,'VoiceExtensionId':_0x29d917['id']},{'type':_0x29d917[_0xde81('0x8')],'app':_0xde81('0x4'),'appdata':_0xde81('0x10'),'context':_0x29d917['context'],'exten':_0x29d917[_0xde81('0x7')],'priority':_0x28698c++,'VoiceExtensionId':_0x29d917['id']});return _0x5a50f7;}function _0x513272(_0x403693){var _0x38a25b=0x2;var _0x2e9aef=[{'type':_0xde81('0x11'),'app':_0xde81('0x4'),'appdata':_0xde81('0x12'),'context':_0x403693['context'],'exten':_0x403693[_0xde81('0x7')],'priority':_0x38a25b++,'VoiceExtensionId':_0x403693['id']},{'type':'outbound','app':_0x403693[_0xde81('0x9')]?_0xde81('0x4'):_0xde81('0x13'),'appdata':_0x403693[_0xde81('0x9')]?_0xde81('0x14')+_0x403693[_0xde81('0x9')]:_0xde81('0xa'),'context':_0x403693[_0xde81('0x6')],'exten':_0x403693[_0xde81('0x7')],'priority':_0x38a25b++,'VoiceExtensionId':_0x403693['id']},{'type':'outbound','app':_0xde81('0x4'),'appdata':_0xde81('0x15')+(_0x403693[_0xde81('0x16')]?_0xde81('0x17')+_0x403693['cutdigits']+'}':_0xde81('0x18')),'context':_0x403693['context'],'exten':_0x403693[_0xde81('0x7')],'priority':_0x38a25b++,'VoiceExtensionId':_0x403693['id']},{'type':_0xde81('0x11'),'app':_0xde81('0x4'),'appdata':_0xde81('0xd')+_0x403693['id'],'context':_0x403693[_0xde81('0x6')],'exten':_0x403693[_0xde81('0x7')],'priority':_0x38a25b++,'VoiceExtensionId':_0x403693['id']},{'type':_0xde81('0x11'),'app':_0xde81('0x19'),'appdata':_0xde81('0x1a')+(_0x38a25b+0x2)+'):Goto('+(_0x38a25b+0x1)+')','context':_0x403693['context'],'exten':_0x403693[_0xde81('0x7')],'priority':_0x38a25b++,'VoiceExtensionId':_0x403693['id']},{'type':_0xde81('0x11'),'app':_0xde81('0x4'),'appdata':_0x403693['cutdigits']?_0xde81('0x1b')+_0x403693[_0xde81('0x16')]+'}':_0xde81('0x1c'),'context':_0x403693[_0xde81('0x6')],'exten':_0x403693[_0xde81('0x7')],'priority':_0x38a25b++,'VoiceExtensionId':_0x403693['id']},{'type':_0xde81('0x11'),'app':_0xde81('0x4'),'appdata':_0xde81('0xe'),'context':_0x403693['context'],'exten':_0x403693[_0xde81('0x7')],'priority':_0x38a25b++,'VoiceExtensionId':_0x403693['id']},{'type':_0xde81('0x11'),'app':_0xde81('0x4'),'appdata':_0xde81('0xf'),'context':_0x403693[_0xde81('0x6')],'exten':_0x403693['exten'],'priority':_0x38a25b++,'VoiceExtensionId':_0x403693['id']},{'type':_0xde81('0x11'),'app':_0xde81('0x4'),'appdata':_0xde81('0x10'),'context':_0x403693['context'],'exten':_0x403693[_0xde81('0x7')],'priority':_0x38a25b++,'VoiceExtensionId':_0x403693['id']},{'type':_0xde81('0x11'),'app':_0xde81('0x4'),'appdata':_0xde81('0x1d')+_0x403693['id'],'context':_0x403693['context'],'exten':_0x403693[_0xde81('0x7')],'priority':_0x38a25b++,'VoiceExtensionId':_0x403693['id']}];if(_0x403693['hasOwnProperty'](_0xde81('0x1e'))&&_0x403693[_0xde81('0x1e')]!==_0xde81('0x1f')){_0x2e9aef[_0xde81('0xb')]({'type':_0xde81('0x11'),'app':'Set','appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','context':_0x403693[_0xde81('0x6')],'exten':_0x403693['exten'],'priority':_0x38a25b++,'VoiceExtensionId':_0x403693['id']},{'type':_0xde81('0x11'),'app':_0xde81('0x4'),'appdata':_0xde81('0x20')+_0x403693[_0xde81('0x1e')]||'wav','context':_0x403693[_0xde81('0x6')],'exten':_0x403693[_0xde81('0x7')],'priority':_0x38a25b++,'VoiceExtensionId':_0x403693['id']});}return _0x2e9aef;}function _0x27abea(_0xe521e2,_0xc63793){var _0x21fb42=[{'name':_0xde81('0x21'),'param':0x0},{'name':'timeout','param':0x1},{'name':_0xde81('0x22'),'param':0x2},{'name':_0xde81('0x23'),'param':0x3}];var _0x1b1bf0={};var _0x5f5c0e=_0xc63793[_0xde81('0x24')](',');var _0x49c546=[];for(var _0x28cddf=0x0;_0x28cddf<_0x21fb42[_0xde81('0x25')];_0x28cddf++){switch(_0x21fb42[_0x28cddf]['name']){case _0xde81('0x21'):_0x1b1bf0[_0xde81('0x21')]=_0x5f5c0e[_0x21fb42[_0x28cddf][_0xde81('0x26')]][_0xde81('0x24')]('/')[0x1];_0x1b1bf0['phone']=_0x5f5c0e[_0x21fb42[_0x28cddf][_0xde81('0x26')]][_0xde81('0x24')]('/')[0x2];_0x1b1bf0[_0xde81('0x27')]=_0x1b1bf0[_0xde81('0x28')]?_0x1b1bf0[_0xde81('0x28')][_0xde81('0x24')]('$')[0x0]:undefined;_0x1b1bf0[_0xde81('0x28')]=_0xe521e2[_0xde81('0x16')]?(_0x1b1bf0[_0xde81('0x27')]||'')+_0xde81('0x17')+_0xe521e2[_0xde81('0x16')]+'}':(_0x1b1bf0['prefix']||'')+_0xde81('0x18');_0x49c546[_0x21fb42[_0x28cddf][_0xde81('0x26')]]=['SIP',_0x1b1bf0[_0xde81('0x21')],_0x1b1bf0['phone']]['join']('/');break;case _0xde81('0x22'):_0x1b1bf0[_0xde81('0x22')]=_0x5f5c0e[_0x21fb42[_0x28cddf][_0xde81('0x26')]];if(_0xe521e2[_0xde81('0x1e')]!=='none'){if(_0x1b1bf0['options'][_0xde81('0x29')](_0xde81('0x2a'))<0x0){_0x1b1bf0[_0xde81('0x22')]+='U(xcally-mixmonitor-context)';}}else{_0x1b1bf0['options']=_0x1b1bf0['options']['replace'](_0xde81('0x2a'),'');}_0x49c546[_0x21fb42[_0x28cddf][_0xde81('0x26')]]=_0x1b1bf0[_0xde81('0x22')];break;default:_0x49c546[_0x21fb42[_0x28cddf][_0xde81('0x26')]]=_0x5f5c0e[_0x21fb42[_0x28cddf][_0xde81('0x26')]];}}return _0x49c546['join'](',');}function _0x567f33(_0x3f40f7,_0x284b04,_0x5d833f){return new Promise(function(_0x48c897,_0x3dbc01){var _0x16eaeb=[];if(_[_0xde81('0x2b')](_0x284b04))return _0x48c897(_0x16eaeb);_0x2fd581[_0xde81('0x2c')]['findAll']({'attributes':['id',_0xde81('0x2d'),'IntervalId'],'raw':!![]})['then'](function(_0x48aae4){for(var _0x204d94=0x0,_0x2c2232=0x0;_0x204d94<_0x284b04[_0xde81('0x25')];_0x204d94++,_0x2c2232=0x0){var _0x1235a5=_0x284b04[_0x204d94];var _0x47082d=[];var _0x25506a=[];delete _0x1235a5['id'];if(_0x1235a5['interval']!==_0xde81('0x2e')){_0x1235a5['intervals']=[_0x1235a5[_0xde81('0x2d')]];}else{_0x1235a5[_0xde81('0x2f')]=_0x1235a5[_0xde81('0x30')]?_[_0xde81('0x31')](_[_0xde81('0x32')](_0x48aae4,{'IntervalId':_0x1235a5[_0xde81('0x30')]}),_0xde81('0x2d')):[];}_0x1235a5['context']=_0x3f40f7[_0xde81('0x6')];_0x1235a5[_0xde81('0x7')]=_0x3f40f7['exten'];if(_0x1235a5[_0xde81('0x8')])_0x1235a5[_0xde81('0x8')]=_0x1235a5[_0xde81('0x8')]['toLowerCase']();if(_0x3f40f7[_0xde81('0x8')]===_0xde81('0x11')){if(_0x1235a5[_0xde81('0x33')](_0xde81('0x34'))&&_0x1235a5[_0xde81('0x34')]&&_0x1235a5[_0xde81('0x34')]!=='--'){_0x47082d[_0xde81('0xb')]({'type':_0x1235a5['type'][_0xde81('0x35')](),'app':_0xde81('0x4'),'appdata':_0xde81('0x36')+_0x1235a5['tag'],'context':_0x3f40f7[_0xde81('0x6')],'exten':_0x3f40f7['exten'],'priority':_0x1235a5['intervals']['length']+_0x5d833f+_0x2c2232++,'VoiceExtensionId':_0x3f40f7['id']});}_0x47082d[_0xde81('0xb')]({'type':_0x1235a5['type']['toLowerCase'](),'app':'ExecIf','appdata':_0xde81('0x37')+(_0x1235a5[_0xde81('0x38')]?_0xde81('0x39')+_0x1235a5['callerID']+')':_0xde81('0x3a')),'context':_0x3f40f7[_0xde81('0x6')],'exten':_0x3f40f7['exten'],'priority':_0x1235a5[_0xde81('0x2f')]['length']+_0x5d833f+_0x2c2232++,'VoiceExtensionId':_0x3f40f7['id']});}else{if(_0x1235a5[_0xde81('0x33')]('answer')){if(['queue',_0xde81('0x3b')][_0xde81('0x3c')](_0x1235a5[_0xde81('0x3d')][_0xde81('0x35')]())&&_0x1235a5['appType']!==_0xde81('0x3e')){if(_0x1235a5[_0xde81('0x3f')]){_0x47082d['push']({'type':_0x1235a5['type']['toLowerCase'](),'app':'ExecIf','appdata':_0xde81('0x40'),'context':_0x3f40f7[_0xde81('0x6')],'exten':_0x3f40f7[_0xde81('0x7')],'priority':_0x1235a5[_0xde81('0x2f')]['length']+_0x5d833f+_0x2c2232++,'VoiceExtensionId':_0x3f40f7['id']});_0x47082d[_0xde81('0xb')]({'type':_0x1235a5['type'][_0xde81('0x35')](),'app':_0xde81('0x4'),'appdata':_0xde81('0x41'),'context':_0x3f40f7[_0xde81('0x6')],'exten':_0x3f40f7[_0xde81('0x7')],'priority':_0x1235a5[_0xde81('0x2f')][_0xde81('0x25')]+_0x5d833f+_0x2c2232++,'VoiceExtensionId':_0x3f40f7['id']});}else{_0x47082d[_0xde81('0xb')]({'type':_0x1235a5[_0xde81('0x8')][_0xde81('0x35')](),'app':_0xde81('0x19'),'appdata':_0xde81('0x42'),'context':_0x3f40f7[_0xde81('0x6')],'exten':_0x3f40f7['exten'],'priority':_0x1235a5[_0xde81('0x2f')]['length']+_0x5d833f+_0x2c2232++,'VoiceExtensionId':_0x3f40f7['id']});_0x47082d['push']({'type':_0x1235a5[_0xde81('0x8')][_0xde81('0x35')](),'app':_0xde81('0x4'),'appdata':_0xde81('0x43'),'context':_0x3f40f7[_0xde81('0x6')],'exten':_0x3f40f7[_0xde81('0x7')],'priority':_0x1235a5[_0xde81('0x2f')][_0xde81('0x25')]+_0x5d833f+_0x2c2232++,'VoiceExtensionId':_0x3f40f7['id']});}}}}for(var _0x5d7c4f=0x0;_0x5d7c4f<_0x1235a5[_0xde81('0x2f')][_0xde81('0x25')];_0x5d7c4f++){var _0x111817=_0x5d833f+_0x1235a5['intervals'][_0xde81('0x25')];var _0x2ec7ca=_0x5d7c4f===_0x1235a5['intervals'][_0xde81('0x25')]-0x1?_0x5d833f+_0x47082d[_0xde81('0x25')]+_0x25506a['length']+0x2:_0x5d833f+_0x5d7c4f+0x1;_0x47082d[_0xde81('0x44')](_0x5d7c4f,0x0,{'type':_0x3f40f7[_0xde81('0x8')],'app':_0xde81('0x45'),'appdata':_0x1235a5['intervals'][_0x5d7c4f]+'?'+_0x3f40f7[_0xde81('0x6')]+_0xde81('0x46')+_0x111817+':'+_0x3f40f7[_0xde81('0x6')]+',${EXTEN},'+_0x2ec7ca,'exten':_0x3f40f7['exten'],'context':_0x3f40f7[_0xde81('0x6')],'priority':_0x5d833f+_0x5d7c4f,'VoiceExtensionId':_0x3f40f7['id']});}if(_0x1235a5[_0xde81('0x47')]===_0xde81('0x48'))_0x1235a5[_0xde81('0x49')]=_0x27abea(_0x3f40f7,_0x1235a5[_0xde81('0x49')]);_0x1235a5['priority']=_0x47082d['length']?_[_0xde81('0x4a')](_0x47082d)['priority']+0x1:_0x5d833f;_0x16eaeb=_[_0xde81('0x4b')](_0x16eaeb,_0x47082d,[_0x1235a5],_0x25506a);_0x5d833f=_[_0xde81('0x4a')](_0x16eaeb)[_0xde81('0x4c')]+0x1;}return _0x48c897(_0x16eaeb);})['catch'](function(_0x359c2e){_0x3dbc01(_0x359c2e);});});}return _0xb24c86[_0xde81('0x4d')](_0xde81('0x4e'),attributes,{'tableName':_0xde81('0x4f'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x44c0cb){var _0x47d642=this[_0xde81('0x50')]({'plain':!![]});var _0x5dfa08=_0x47d642['type']===_0xde81('0x11')?_0x513272(_0x47d642):_0x15211c(_0x47d642);return _0x567f33(_0x47d642,_0x44c0cb,_['last'](_0x5dfa08)[_0xde81('0x4c')]+0x1)[_0xde81('0x51')](function(_0x507055){var _0x5c69a9=_['concat'](_0x5dfa08,_0x507055);_0x5c69a9[_0xde81('0xb')]({'type':_0x47d642['type'],'app':'Hangup','exten':_0x47d642[_0xde81('0x7')],'context':_0x47d642[_0xde81('0x6')],'priority':_['last'](_0x5c69a9)['priority']+0x1,'VoiceExtensionId':_0x47d642['id']});return _0x5c69a9;});}}});};
\ No newline at end of file
index a4f6a6d..835801f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x41fe=['message','result','catch','GetVoiceExtension','VoiceExtension','findAll','options','raw','where','attributes','include','map','model','then','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','register','info','VoiceExtension,\x20%s,\x20%s','request\x20sent','debug','VoiceExtension,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x2212d3,_0x324f32){var _0x51c05d=function(_0x376102){while(--_0x376102){_0x2212d3['push'](_0x2212d3['shift']());}};_0x51c05d(++_0x324f32);}(_0x41fe,0xd1));var _0xe41f=function(_0x29db36,_0x410ae9){_0x29db36=_0x29db36-0x0;var _0x234e87=_0x41fe[_0x29db36];return _0x234e87;};'use strict';var _=require(_0xe41f('0x0'));var util=require(_0xe41f('0x1'));var moment=require(_0xe41f('0x2'));var BPromise=require(_0xe41f('0x3'));var rs=require(_0xe41f('0x4'));var fs=require('fs');var Redis=require(_0xe41f('0x5'));var db=require(_0xe41f('0x6'))['db'];var utils=require(_0xe41f('0x7'));var logger=require(_0xe41f('0x8'))(_0xe41f('0x9'));var config=require(_0xe41f('0xa'));var jayson=require(_0xe41f('0xb'));var client=jayson[_0xe41f('0xc')][_0xe41f('0xd')]({'port':0x232a});config[_0xe41f('0xe')]=_[_0xe41f('0xf')](config[_0xe41f('0xe')],{'host':'localhost','port':0x18eb});var socket=require(_0xe41f('0x10'))(new Redis(config[_0xe41f('0xe')]));require('./voiceExtension.socket')[_0xe41f('0x11')](socket);function respondWithRpcPromise(_0x5710cf,_0x57b620,_0x500a97){return new BPromise(function(_0x1b014d,_0x4c733f){return client['request'](_0x5710cf,_0x500a97)['then'](function(_0xde0ab5){logger[_0xe41f('0x12')](_0xe41f('0x13'),_0x57b620,_0xe41f('0x14'));logger[_0xe41f('0x15')](_0xe41f('0x16'),_0x57b620,_0xe41f('0x14'),JSON[_0xe41f('0x17')](_0xde0ab5));if(_0xde0ab5[_0xe41f('0x18')]){if(_0xde0ab5[_0xe41f('0x18')]['code']===0x1f4){logger[_0xe41f('0x18')](_0xe41f('0x13'),_0x57b620,_0xde0ab5['error'][_0xe41f('0x19')]);return _0x4c733f(_0xde0ab5[_0xe41f('0x18')][_0xe41f('0x19')]);}logger[_0xe41f('0x18')](_0xe41f('0x13'),_0x57b620,_0xde0ab5[_0xe41f('0x18')][_0xe41f('0x19')]);return _0x1b014d(_0xde0ab5['error']['message']);}else{logger[_0xe41f('0x12')]('VoiceExtension,\x20%s,\x20%s',_0x57b620,'request\x20sent');_0x1b014d(_0xde0ab5[_0xe41f('0x1a')][_0xe41f('0x19')]);}})[_0xe41f('0x1b')](function(_0x33cfd6){logger[_0xe41f('0x18')]('VoiceExtension,\x20%s,\x20%s',_0x57b620,_0x33cfd6);_0x4c733f(_0x33cfd6);});});}exports[_0xe41f('0x1c')]=function(_0x5339dd){var _0x28501a=this;return new Promise(function(_0x2c264c,_0x4dcb21){return db[_0xe41f('0x1d')][_0xe41f('0x1e')]({'raw':_0x5339dd[_0xe41f('0x1f')]?_0x5339dd['options'][_0xe41f('0x20')]===undefined?!![]:![]:!![],'where':_0x5339dd[_0xe41f('0x1f')]?_0x5339dd[_0xe41f('0x1f')][_0xe41f('0x21')]||null:null,'attributes':_0x5339dd[_0xe41f('0x1f')]?_0x5339dd[_0xe41f('0x1f')][_0xe41f('0x22')]||null:null,'limit':_0x5339dd['options']?_0x5339dd[_0xe41f('0x1f')]['limit']||null:null,'include':_0x5339dd['options']?_0x5339dd[_0xe41f('0x1f')][_0xe41f('0x23')]?_[_0xe41f('0x24')](_0x5339dd['options'][_0xe41f('0x23')],function(_0x573b3){return{'model':db[_0x573b3[_0xe41f('0x25')]],'as':_0x573b3['as'],'attributes':_0x573b3['attributes'],'include':_0x573b3[_0xe41f('0x23')]?_['map'](_0x573b3[_0xe41f('0x23')],function(_0x44fb04){return{'model':db[_0x44fb04['model']],'as':_0x44fb04['as'],'attributes':_0x44fb04[_0xe41f('0x22')],'include':_0x44fb04[_0xe41f('0x23')]?_[_0xe41f('0x24')](_0x44fb04[_0xe41f('0x23')],function(_0x348531){return{'model':db[_0x348531[_0xe41f('0x25')]],'as':_0x348531['as'],'attributes':_0x348531[_0xe41f('0x22')]};}):[]};}):[]};}):[]:[]})[_0xe41f('0x26')](function(_0x6ec664){logger[_0xe41f('0x12')](_0xe41f('0x1c'),_0x5339dd);logger[_0xe41f('0x15')](_0xe41f('0x1c'),_0x5339dd,JSON[_0xe41f('0x17')](_0x6ec664));_0x2c264c(_0x6ec664);})[_0xe41f('0x1b')](function(_0x4ef341){logger[_0xe41f('0x18')](_0xe41f('0x1c'),_0x4ef341[_0xe41f('0x19')],_0x5339dd);_0x4dcb21(_0x28501a[_0xe41f('0x18')](0x1f4,_0x4ef341[_0xe41f('0x19')]));});});};
\ No newline at end of file
+var _0xcca7=['raw','attributes','limit','map','include','model','stringify','catch','lodash','util','moment','bluebird','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','./voiceExtension.socket','register','request','then','info','VoiceExtension,\x20%s,\x20%s','debug','VoiceExtension,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','GetVoiceExtension','VoiceExtension','findAll','options'];(function(_0x296897,_0x4d23ea){var _0x2b44ab=function(_0xdf90d8){while(--_0xdf90d8){_0x296897['push'](_0x296897['shift']());}};_0x2b44ab(++_0x4d23ea);}(_0xcca7,0x1aa));var _0x7cca=function(_0x1d30b9,_0x14ed70){_0x1d30b9=_0x1d30b9-0x0;var _0x16c235=_0xcca7[_0x1d30b9];return _0x16c235;};'use strict';var _=require(_0x7cca('0x0'));var util=require(_0x7cca('0x1'));var moment=require(_0x7cca('0x2'));var BPromise=require(_0x7cca('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7cca('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x7cca('0x5'))(_0x7cca('0x6'));var config=require(_0x7cca('0x7'));var jayson=require(_0x7cca('0x8'));var client=jayson[_0x7cca('0x9')][_0x7cca('0xa')]({'port':0x232a});config['redis']=_['defaults'](config[_0x7cca('0xb')],{'host':_0x7cca('0xc'),'port':0x18eb});var socket=require(_0x7cca('0xd'))(new Redis(config[_0x7cca('0xb')]));require(_0x7cca('0xe'))[_0x7cca('0xf')](socket);function respondWithRpcPromise(_0x20ffa9,_0x2b8b62,_0x27323a){return new BPromise(function(_0x1a773e,_0x53b5f6){return client[_0x7cca('0x10')](_0x20ffa9,_0x27323a)[_0x7cca('0x11')](function(_0x275ab2){logger[_0x7cca('0x12')](_0x7cca('0x13'),_0x2b8b62,'request\x20sent');logger[_0x7cca('0x14')](_0x7cca('0x15'),_0x2b8b62,_0x7cca('0x16'),JSON['stringify'](_0x275ab2));if(_0x275ab2['error']){if(_0x275ab2[_0x7cca('0x17')][_0x7cca('0x18')]===0x1f4){logger[_0x7cca('0x17')](_0x7cca('0x13'),_0x2b8b62,_0x275ab2[_0x7cca('0x17')][_0x7cca('0x19')]);return _0x53b5f6(_0x275ab2[_0x7cca('0x17')]['message']);}logger[_0x7cca('0x17')]('VoiceExtension,\x20%s,\x20%s',_0x2b8b62,_0x275ab2['error']['message']);return _0x1a773e(_0x275ab2[_0x7cca('0x17')][_0x7cca('0x19')]);}else{logger[_0x7cca('0x12')](_0x7cca('0x13'),_0x2b8b62,_0x7cca('0x16'));_0x1a773e(_0x275ab2['result'][_0x7cca('0x19')]);}})['catch'](function(_0x5d47f8){logger['error'](_0x7cca('0x13'),_0x2b8b62,_0x5d47f8);_0x53b5f6(_0x5d47f8);});});}exports[_0x7cca('0x1a')]=function(_0x2beb6c){var _0x1a20be=this;return new Promise(function(_0x36ba41,_0x45db2f){return db[_0x7cca('0x1b')][_0x7cca('0x1c')]({'raw':_0x2beb6c['options']?_0x2beb6c[_0x7cca('0x1d')][_0x7cca('0x1e')]===undefined?!![]:![]:!![],'where':_0x2beb6c[_0x7cca('0x1d')]?_0x2beb6c[_0x7cca('0x1d')]['where']||null:null,'attributes':_0x2beb6c[_0x7cca('0x1d')]?_0x2beb6c[_0x7cca('0x1d')][_0x7cca('0x1f')]||null:null,'limit':_0x2beb6c[_0x7cca('0x1d')]?_0x2beb6c[_0x7cca('0x1d')][_0x7cca('0x20')]||null:null,'include':_0x2beb6c[_0x7cca('0x1d')]?_0x2beb6c[_0x7cca('0x1d')]['include']?_[_0x7cca('0x21')](_0x2beb6c[_0x7cca('0x1d')][_0x7cca('0x22')],function(_0xdaf07f){return{'model':db[_0xdaf07f[_0x7cca('0x23')]],'as':_0xdaf07f['as'],'attributes':_0xdaf07f[_0x7cca('0x1f')],'include':_0xdaf07f[_0x7cca('0x22')]?_[_0x7cca('0x21')](_0xdaf07f['include'],function(_0x2cafe1){return{'model':db[_0x2cafe1['model']],'as':_0x2cafe1['as'],'attributes':_0x2cafe1[_0x7cca('0x1f')],'include':_0x2cafe1[_0x7cca('0x22')]?_['map'](_0x2cafe1[_0x7cca('0x22')],function(_0x3d91b1){return{'model':db[_0x3d91b1['model']],'as':_0x3d91b1['as'],'attributes':_0x3d91b1[_0x7cca('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x7cca('0x11')](function(_0x100061){logger['info']('GetVoiceExtension',_0x2beb6c);logger[_0x7cca('0x14')](_0x7cca('0x1a'),_0x2beb6c,JSON[_0x7cca('0x24')](_0x100061));_0x36ba41(_0x100061);})[_0x7cca('0x25')](function(_0x34336c){logger[_0x7cca('0x17')](_0x7cca('0x1a'),_0x34336c['message'],_0x2beb6c);_0x45db2f(_0x1a20be['error'](0x1f4,_0x34336c[_0x7cca('0x19')]));});});};
\ No newline at end of file
index 82577d7..726432d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1261=['save','remove','update','emit','removeListener','voiceExtension:'];(function(_0x5d182c,_0x475b2c){var _0x1130fb=function(_0x1062a9){while(--_0x1062a9){_0x5d182c['push'](_0x5d182c['shift']());}};_0x1130fb(++_0x475b2c);}(_0x1261,0x144));var _0x1126=function(_0x4ca160,_0x14886c){_0x4ca160=_0x4ca160-0x0;var _0x303ae9=_0x1261[_0x4ca160];return _0x303ae9;};'use strict';var VoiceExtensionEvents=require('./voiceExtension.events');var events=[_0x1126('0x0'),_0x1126('0x1'),_0x1126('0x2')];function createListener(_0x331a2c,_0x39b786){return function(_0x350f3a){_0x39b786[_0x1126('0x3')](_0x331a2c,_0x350f3a);};}function removeListener(_0x4245ca,_0x21a480){return function(){VoiceExtensionEvents[_0x1126('0x4')](_0x4245ca,_0x21a480);};}exports['register']=function(_0x5c68c8){for(var _0x40ba58=0x0,_0x907180=events['length'];_0x40ba58<_0x907180;_0x40ba58++){var _0x17e5f0=events[_0x40ba58];var _0x28772d=createListener(_0x1126('0x5')+_0x17e5f0,_0x5c68c8);VoiceExtensionEvents['on'](_0x17e5f0,_0x28772d);}};
\ No newline at end of file
+var _0x326f=['update','emit','removeListener','register','length','./voiceExtension.events'];(function(_0x35873d,_0x531474){var _0x4c67d3=function(_0x3e8b86){while(--_0x3e8b86){_0x35873d['push'](_0x35873d['shift']());}};_0x4c67d3(++_0x531474);}(_0x326f,0xd1));var _0xf326=function(_0x191a43,_0x29638c){_0x191a43=_0x191a43-0x0;var _0x5b7da4=_0x326f[_0x191a43];return _0x5b7da4;};'use strict';var VoiceExtensionEvents=require(_0xf326('0x0'));var events=['save','remove',_0xf326('0x1')];function createListener(_0x330ddb,_0x22aabf){return function(_0x408257){_0x22aabf[_0xf326('0x2')](_0x330ddb,_0x408257);};}function removeListener(_0x120a26,_0x9445c6){return function(){VoiceExtensionEvents[_0xf326('0x3')](_0x120a26,_0x9445c6);};}exports[_0xf326('0x4')]=function(_0x3ace29){for(var _0x4c2249=0x0,_0x3c254d=events[_0xf326('0x5')];_0x4c2249<_0x3c254d;_0x4c2249++){var _0x165f95=events[_0x4c2249];var _0x1e7b8a=createListener('voiceExtension:'+_0x165f95,_0x3ace29);VoiceExtensionEvents['on'](_0x165f95,_0x1e7b8a);}};
\ No newline at end of file
index 91f4ad5..4554162 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x27a0=['exports','util','path','connect-timeout','express','Router','./voiceMail.controller','get','isAuthenticated','index','/:id','show','/:id/messages','getMessages','post','put','update','delete','destroy'];(function(_0x2351c4,_0x1dca54){var _0x1dd3f8=function(_0x4c3fa2){while(--_0x4c3fa2){_0x2351c4['push'](_0x2351c4['shift']());}};_0x1dd3f8(++_0x1dca54);}(_0x27a0,0xbf));var _0x027a=function(_0x3d55eb,_0x2b3f1c){_0x3d55eb=_0x3d55eb-0x0;var _0x255b6b=_0x27a0[_0x3d55eb];return _0x255b6b;};'use strict';var multer=require('multer');var util=require(_0x027a('0x0'));var path=require(_0x027a('0x1'));var timeout=require(_0x027a('0x2'));var express=require(_0x027a('0x3'));var router=express[_0x027a('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x027a('0x5'));router[_0x027a('0x6')]('/',auth[_0x027a('0x7')](),controller[_0x027a('0x8')]);router[_0x027a('0x6')](_0x027a('0x9'),auth['isAuthenticated'](),controller[_0x027a('0xa')]);router[_0x027a('0x6')](_0x027a('0xb'),auth['isAuthenticated'](),controller[_0x027a('0xc')]);router[_0x027a('0xd')]('/',auth[_0x027a('0x7')](),controller['create']);router[_0x027a('0xe')](_0x027a('0x9'),auth[_0x027a('0x7')](),controller[_0x027a('0xf')]);router[_0x027a('0x10')](_0x027a('0x9'),auth[_0x027a('0x7')](),controller[_0x027a('0x11')]);module[_0x027a('0x12')]=router;
\ No newline at end of file
+var _0x7046=['exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./voiceMail.controller','get','isAuthenticated','index','/:id','getMessages','post','create','put','update'];(function(_0x3c2a69,_0x4c8b41){var _0x596bc8=function(_0x1b4b7c){while(--_0x1b4b7c){_0x3c2a69['push'](_0x3c2a69['shift']());}};_0x596bc8(++_0x4c8b41);}(_0x7046,0x144));var _0x6704=function(_0x4e676e,_0x2a7c6d){_0x4e676e=_0x4e676e-0x0;var _0x336a3c=_0x7046[_0x4e676e];return _0x336a3c;};'use strict';var multer=require(_0x6704('0x0'));var util=require(_0x6704('0x1'));var path=require(_0x6704('0x2'));var timeout=require(_0x6704('0x3'));var express=require('express');var router=express[_0x6704('0x4')]();var fs_extra=require(_0x6704('0x5'));var auth=require(_0x6704('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x6704('0x7'));var controller=require(_0x6704('0x8'));router[_0x6704('0x9')]('/',auth[_0x6704('0xa')](),controller[_0x6704('0xb')]);router['get'](_0x6704('0xc'),auth['isAuthenticated'](),controller['show']);router[_0x6704('0x9')]('/:id/messages',auth['isAuthenticated'](),controller[_0x6704('0xd')]);router[_0x6704('0xe')]('/',auth[_0x6704('0xa')](),controller[_0x6704('0xf')]);router[_0x6704('0x10')](_0x6704('0xc'),auth[_0x6704('0xa')](),controller[_0x6704('0x11')]);router['delete'](_0x6704('0xc'),auth[_0x6704('0xa')](),controller['destroy']);module[_0x6704('0x12')]=router;
\ No newline at end of file
index 2527f96..bb0d56b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4399=['mailbox','sequelize','exports','STRING','from-voicemail','contest_mailbox','setDataValue','email','string','trim','central','ENUM','yes','TINYINT(4)','TIMESTAMP','INTEGER','VIRTUAL','\x20-\x20','getDataValue'];(function(_0x5a6e4e,_0x416c25){var _0x5d99f2=function(_0x117ce5){while(--_0x117ce5){_0x5a6e4e['push'](_0x5a6e4e['shift']());}};_0x5d99f2(++_0x416c25);}(_0x4399,0x190));var _0x9439=function(_0x5831e4,_0x4818b3){_0x5831e4=_0x5831e4-0x0;var _0x578987=_0x4399[_0x5831e4];return _0x578987;};'use strict';var Sequelize=require(_0x9439('0x0'));module[_0x9439('0x1')]={'customer_id':{'type':Sequelize[_0x9439('0x2')]},'context':{'type':Sequelize['STRING'],'defaultValue':_0x9439('0x3'),'unique':_0x9439('0x4')},'mailbox':{'type':Sequelize[_0x9439('0x2')],'defaultValue':'','allowNull':![],'unique':_0x9439('0x4')},'password':{'type':Sequelize[_0x9439('0x2')]},'fullname':{'type':Sequelize[_0x9439('0x2')]},'email':{'type':Sequelize[_0x9439('0x2')],'validate':{'isEmail':!![]},'set':function(_0xe07979){this[_0x9439('0x5')](_0x9439('0x6'),typeof _0xe07979===_0x9439('0x7')&&_0xe07979[_0x9439('0x8')]()?_0xe07979[_0x9439('0x8')]():null);}},'pager':{'type':Sequelize[_0x9439('0x2')]},'tz':{'type':Sequelize[_0x9439('0x2')],'defaultValue':_0x9439('0x9')},'attach':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'yes','allowNull':![]},'saycid':{'type':Sequelize[_0x9439('0xa')](_0x9439('0xb'),'no'),'defaultValue':_0x9439('0xb'),'allowNull':![]},'dialout':{'type':Sequelize['STRING']},'callback':{'type':Sequelize[_0x9439('0x2')]},'review':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize[_0x9439('0xa')](_0x9439('0xb'),'no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize[_0x9439('0xa')](_0x9439('0xb'),'no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':_0x9439('0xc'),'defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize[_0x9439('0xa')](_0x9439('0xb'),'no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize['ENUM'](_0x9439('0xb'),'no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize[_0x9439('0xa')](_0x9439('0xb'),'no'),'defaultValue':_0x9439('0xb'),'allowNull':![]},'forcename':{'type':Sequelize[_0x9439('0xa')](_0x9439('0xb'),'no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize['ENUM'](_0x9439('0xb'),'no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize[_0x9439('0xa')](_0x9439('0xb'),'no'),'defaultValue':_0x9439('0xb'),'allowNull':![]},'stamp':{'type':_0x9439('0xd')},'emailsubject':{'type':Sequelize['STRING']},'emailbody':{'type':Sequelize[_0x9439('0x2')]},'maxsecs':{'type':Sequelize[_0x9439('0xe')](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize['INTEGER'](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize[_0x9439('0xf')],'get':function(){return this['getDataValue']('fullname')+_0x9439('0x10')+this[_0x9439('0x11')](_0x9439('0x12'));}}};
\ No newline at end of file
+var _0x39d1=['yes','ENUM','TINYINT(4)','TIMESTAMP','INTEGER','VIRTUAL','fullname','getDataValue','mailbox','sequelize','STRING','contest_mailbox','setDataValue','email','trim','central'];(function(_0x2da357,_0x1f9b2f){var _0x138fdd=function(_0xe3077d){while(--_0xe3077d){_0x2da357['push'](_0x2da357['shift']());}};_0x138fdd(++_0x1f9b2f);}(_0x39d1,0x199));var _0x139d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x39d1[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x139d('0x0'));module['exports']={'customer_id':{'type':Sequelize[_0x139d('0x1')]},'context':{'type':Sequelize['STRING'],'defaultValue':'from-voicemail','unique':_0x139d('0x2')},'mailbox':{'type':Sequelize['STRING'],'defaultValue':'','allowNull':![],'unique':'contest_mailbox'},'password':{'type':Sequelize['STRING']},'fullname':{'type':Sequelize['STRING']},'email':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]},'set':function(_0x4a77b6){this[_0x139d('0x3')](_0x139d('0x4'),typeof _0x4a77b6==='string'&&_0x4a77b6[_0x139d('0x5')]()?_0x4a77b6['trim']():null);}},'pager':{'type':Sequelize['STRING']},'tz':{'type':Sequelize['STRING'],'defaultValue':_0x139d('0x6')},'attach':{'type':Sequelize['ENUM'](_0x139d('0x7'),'no'),'defaultValue':_0x139d('0x7'),'allowNull':![]},'saycid':{'type':Sequelize['ENUM'](_0x139d('0x7'),'no'),'defaultValue':_0x139d('0x7'),'allowNull':![]},'dialout':{'type':Sequelize[_0x139d('0x1')]},'callback':{'type':Sequelize[_0x139d('0x1')]},'review':{'type':Sequelize[_0x139d('0x8')](_0x139d('0x7'),'no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize[_0x139d('0x8')]('yes','no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize[_0x139d('0x8')](_0x139d('0x7'),'no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize[_0x139d('0x8')](_0x139d('0x7'),'no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':_0x139d('0x9'),'defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize[_0x139d('0x8')](_0x139d('0x7'),'no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize[_0x139d('0x8')](_0x139d('0x7'),'no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize[_0x139d('0x8')](_0x139d('0x7'),'no'),'defaultValue':'yes','allowNull':![]},'forcename':{'type':Sequelize[_0x139d('0x8')](_0x139d('0x7'),'no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize[_0x139d('0x8')]('yes','no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':_0x139d('0x7'),'allowNull':![]},'stamp':{'type':_0x139d('0xa')},'emailsubject':{'type':Sequelize['STRING']},'emailbody':{'type':Sequelize[_0x139d('0x1')]},'maxsecs':{'type':Sequelize[_0x139d('0xb')](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize[_0x139d('0xb')](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize[_0x139d('0xc')],'get':function(){return this['getDataValue'](_0x139d('0xd'))+'\x20-\x20'+this[_0x139d('0xe')](_0x139d('0xf'));}}};
\ No newline at end of file
index db93a80..19ac1a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x36ee=['set','Content-Range','apply','reject','save','update','then','destroy','get','Voicemails','stack','index','map','VoiceMail','rawAttributes','fieldName','type','model','name','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','include','rows','catch','show','params','includeAll','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','UserProfileResource','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getMessages','findOne','VoiceMailMessage','mailbox','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count'];(function(_0x458ed6,_0x504646){var _0xa5dfd9=function(_0x504e7b){while(--_0x504e7b){_0x458ed6['push'](_0x458ed6['shift']());}};_0xa5dfd9(++_0x504646);}(_0x36ee,0xe8));var _0xe36e=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x36ee[_0x2dafbe];return _0x58a45a;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xe36e('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe36e('0x1'));var moment=require(_0xe36e('0x2'));var BPromise=require(_0xe36e('0x3'));var Mustache=require(_0xe36e('0x4'));var util=require(_0xe36e('0x5'));var path=require(_0xe36e('0x6'));var sox=require(_0xe36e('0x7'));var csv=require(_0xe36e('0x8'));var ejs=require(_0xe36e('0x9'));var fs=require('fs');var fs_extra=require(_0xe36e('0xa'));var _=require(_0xe36e('0xb'));var squel=require(_0xe36e('0xc'));var crypto=require('crypto');var jsforce=require(_0xe36e('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xe36e('0x8'));var querystring=require(_0xe36e('0xe'));var Papa=require(_0xe36e('0xf'));var Redis=require('ioredis');var authService=require(_0xe36e('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xe36e('0x11'));var hardwareService=require(_0xe36e('0x12'));var logger=require(_0xe36e('0x13'))(_0xe36e('0x14'));var utils=require(_0xe36e('0x15'));var config=require(_0xe36e('0x16'));var licenseUtil=require(_0xe36e('0x17'));var db=require(_0xe36e('0x18'))['db'];function respondWithStatusCode(_0x4fbdb2,_0x32981d){_0x32981d=_0x32981d||0xcc;return function(_0x27841e){if(_0x27841e){return _0x4fbdb2[_0xe36e('0x19')](_0x32981d);}return _0x4fbdb2[_0xe36e('0x1a')](_0x32981d)['end']();};}function respondWithResult(_0x3e264a,_0x521afa){_0x521afa=_0x521afa||0xc8;return function(_0x525155){if(_0x525155){return _0x3e264a[_0xe36e('0x1a')](_0x521afa)[_0xe36e('0x1b')](_0x525155);}};}function respondWithFilteredResult(_0x26fb37,_0x278135){return function(_0xd6828e){if(_0xd6828e){var _0x924cd5=typeof _0x278135[_0xe36e('0x1c')]===_0xe36e('0x1d')&&typeof _0x278135[_0xe36e('0x1e')]===_0xe36e('0x1d');var _0x5792e8=_0xd6828e[_0xe36e('0x1f')];var _0x2184ae=_0x924cd5?0x0:_0x278135['offset'];var _0x21d9a3=_0x924cd5?_0xd6828e['count']:_0x278135[_0xe36e('0x1c')]+_0x278135[_0xe36e('0x1e')];var _0x5e15f5;if(_0x21d9a3>=_0x5792e8){_0x21d9a3=_0x5792e8;_0x5e15f5=0xc8;}else{_0x5e15f5=0xce;}_0x26fb37[_0xe36e('0x1a')](_0x5e15f5);return _0x26fb37[_0xe36e('0x20')](_0xe36e('0x21'),_0x2184ae+'-'+_0x21d9a3+'/'+_0x5792e8)['json'](_0xd6828e);}return null;};}function patchUpdates(_0x21e95e){return function(_0x21bcf9){try{jsonpatch[_0xe36e('0x22')](_0x21bcf9,_0x21e95e,!![]);}catch(_0x3c4017){return BPromise[_0xe36e('0x23')](_0x3c4017);}return _0x21bcf9[_0xe36e('0x24')]();};}function saveUpdates(_0x4f438a,_0xd71137){return function(_0x4f214a){if(_0x4f214a){return _0x4f214a[_0xe36e('0x25')](_0x4f438a)[_0xe36e('0x26')](function(_0x437f3f){return _0x437f3f;});}return null;};}function removeEntity(_0x53e13a,_0x598a7a){return function(_0x4749a8){if(_0x4749a8){return _0x4749a8[_0xe36e('0x27')]()[_0xe36e('0x26')](function(){var _0xb32195=_0x4749a8[_0xe36e('0x28')]({'plain':!![]});var _0x1507f9=_0xe36e('0x29');return db['UserProfileResource'][_0xe36e('0x27')]({'where':{'type':_0x1507f9,'resourceId':_0xb32195['id']}})[_0xe36e('0x26')](function(){return _0x4749a8;});})[_0xe36e('0x26')](function(){_0x53e13a[_0xe36e('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2d757c,_0x5a3133){return function(_0xf7b02e){if(!_0xf7b02e){_0x2d757c['sendStatus'](0x194);}return _0xf7b02e;};}function handleError(_0x19f001,_0x5884cb){_0x5884cb=_0x5884cb||0x1f4;return function(_0x410504){logger['error'](_0x410504[_0xe36e('0x2a')]);if(_0x410504['name']){delete _0x410504['name'];}_0x19f001['status'](_0x5884cb)['send'](_0x410504);};}exports[_0xe36e('0x2b')]=function(_0x1fc639,_0x4cf185){var _0x4ac819={},_0x1fa1ec={},_0xb8d44e={'count':0x0,'rows':[]};var _0x259e19=_[_0xe36e('0x2c')](db[_0xe36e('0x2d')][_0xe36e('0x2e')],function(_0x57bb9b){return{'name':_0x57bb9b[_0xe36e('0x2f')],'type':_0x57bb9b[_0xe36e('0x30')]['key']};});_0x1fa1ec[_0xe36e('0x31')]=_[_0xe36e('0x2c')](_0x259e19,_0xe36e('0x32'));_0x1fa1ec[_0xe36e('0x33')]=_[_0xe36e('0x34')](_0x1fc639[_0xe36e('0x33')]);_0x1fa1ec[_0xe36e('0x35')]=_[_0xe36e('0x36')](_0x1fa1ec[_0xe36e('0x31')],_0x1fa1ec[_0xe36e('0x33')]);_0x4ac819[_0xe36e('0x37')]=_['intersection'](_0x1fa1ec[_0xe36e('0x31')],qs['fields'](_0x1fc639['query'][_0xe36e('0x38')]));_0x4ac819['attributes']=_0x4ac819[_0xe36e('0x37')][_0xe36e('0x39')]?_0x4ac819[_0xe36e('0x37')]:_0x1fa1ec[_0xe36e('0x31')];if(!_0x1fc639['query']['hasOwnProperty'](_0xe36e('0x3a'))){_0x4ac819[_0xe36e('0x1e')]=qs[_0xe36e('0x1e')](_0x1fc639[_0xe36e('0x33')]['limit']);_0x4ac819[_0xe36e('0x1c')]=qs[_0xe36e('0x1c')](_0x1fc639[_0xe36e('0x33')]['offset']);}_0x4ac819[_0xe36e('0x3b')]=qs[_0xe36e('0x3c')](_0x1fc639['query'][_0xe36e('0x3c')]);_0x4ac819[_0xe36e('0x3d')]=qs[_0xe36e('0x35')](_[_0xe36e('0x3e')](_0x1fc639[_0xe36e('0x33')],_0x1fa1ec[_0xe36e('0x35')]),_0x259e19);if(_0x1fc639[_0xe36e('0x33')][_0xe36e('0x3f')]){_0x4ac819[_0xe36e('0x3d')]=_[_0xe36e('0x40')](_0x4ac819[_0xe36e('0x3d')],{'$or':_[_0xe36e('0x2c')](_0x259e19,function(_0x3c4703){if(_0x3c4703['type']!==_0xe36e('0x41')){var _0x134fb2={};_0x134fb2[_0x3c4703[_0xe36e('0x32')]]={'$like':'%'+_0x1fc639[_0xe36e('0x33')][_0xe36e('0x3f')]+'%'};return _0x134fb2;}})});}_0x4ac819=_['merge']({},_0x4ac819,_0x1fc639['options']);var _0x4094c6={'where':_0x4ac819[_0xe36e('0x3d')]};return db[_0xe36e('0x2d')][_0xe36e('0x1f')](_0x4094c6)[_0xe36e('0x26')](function(_0x34a1ba){_0xb8d44e[_0xe36e('0x1f')]=_0x34a1ba;if(_0x1fc639[_0xe36e('0x33')]['includeAll']){_0x4ac819[_0xe36e('0x42')]=[{'all':!![]}];}return db[_0xe36e('0x2d')]['findAll'](_0x4ac819);})[_0xe36e('0x26')](function(_0x5ef3e4){_0xb8d44e[_0xe36e('0x43')]=_0x5ef3e4;return _0xb8d44e;})[_0xe36e('0x26')](respondWithFilteredResult(_0x4cf185,_0x4ac819))[_0xe36e('0x44')](handleError(_0x4cf185,null));};exports[_0xe36e('0x45')]=function(_0x3b1269,_0x4c5e10){var _0x2ffc34={'raw':!![],'where':{'id':_0x3b1269[_0xe36e('0x46')]['id']}},_0x2961c9={};_0x2961c9[_0xe36e('0x31')]=_[_0xe36e('0x34')](db[_0xe36e('0x2d')]['rawAttributes']);_0x2961c9[_0xe36e('0x33')]=_[_0xe36e('0x34')](_0x3b1269[_0xe36e('0x33')]);_0x2961c9[_0xe36e('0x35')]=_[_0xe36e('0x36')](_0x2961c9['model'],_0x2961c9[_0xe36e('0x33')]);_0x2ffc34[_0xe36e('0x37')]=_[_0xe36e('0x36')](_0x2961c9[_0xe36e('0x31')],qs[_0xe36e('0x38')](_0x3b1269[_0xe36e('0x33')][_0xe36e('0x38')]));_0x2ffc34[_0xe36e('0x37')]=_0x2ffc34[_0xe36e('0x37')]['length']?_0x2ffc34['attributes']:_0x2961c9[_0xe36e('0x31')];if(_0x3b1269['query'][_0xe36e('0x47')]){_0x2ffc34[_0xe36e('0x42')]=[{'all':!![]}];}_0x2ffc34=_[_0xe36e('0x40')]({},_0x2ffc34,_0x3b1269[_0xe36e('0x48')]);return db['VoiceMail'][_0xe36e('0x49')](_0x2ffc34)[_0xe36e('0x26')](handleEntityNotFound(_0x4c5e10,null))['then'](respondWithResult(_0x4c5e10,null))[_0xe36e('0x44')](handleError(_0x4c5e10,null));};exports[_0xe36e('0x4a')]=function(_0x2c26e6,_0x42eae5){return db[_0xe36e('0x2d')][_0xe36e('0x4a')](_0x2c26e6[_0xe36e('0x4b')],{})[_0xe36e('0x26')](function(_0x17555e){var _0x3a99aa=_0x2c26e6[_0xe36e('0x4c')][_0xe36e('0x28')]({'plain':!![]});if(!_0x3a99aa)throw new Error(_0xe36e('0x4d'));if(_0x3a99aa[_0xe36e('0x4e')]===_0xe36e('0x4c')){var _0x5678d3=_0x17555e[_0xe36e('0x28')]({'plain':!![]});var _0x55aadf='Voicemails';return db[_0xe36e('0x4f')][_0xe36e('0x49')]({'where':{'name':_0x55aadf,'userProfileId':_0x3a99aa['userProfileId']},'raw':!![]})[_0xe36e('0x26')](function(_0x3814eb){if(_0x3814eb&&_0x3814eb[_0xe36e('0x50')]===0x0){return db[_0xe36e('0x51')][_0xe36e('0x4a')]({'name':_0x5678d3[_0xe36e('0x32')],'resourceId':_0x5678d3['id'],'type':_0x3814eb[_0xe36e('0x32')],'sectionId':_0x3814eb['id']},{})[_0xe36e('0x26')](function(){return _0x17555e;});}else{return _0x17555e;}})[_0xe36e('0x44')](function(_0x55d190){logger[_0xe36e('0x52')](_0xe36e('0x53'),_0x55d190);throw _0x55d190;});}return _0x17555e;})['then'](respondWithResult(_0x42eae5,0xc9))[_0xe36e('0x44')](handleError(_0x42eae5,null));};exports[_0xe36e('0x25')]=function(_0x3e1040,_0x206f75){if(_0x3e1040[_0xe36e('0x4b')]['id']){delete _0x3e1040['body']['id'];}return db['VoiceMail']['find']({'where':{'id':_0x3e1040['params']['id']}})[_0xe36e('0x26')](handleEntityNotFound(_0x206f75,null))[_0xe36e('0x26')](saveUpdates(_0x3e1040[_0xe36e('0x4b')],null))[_0xe36e('0x26')](respondWithResult(_0x206f75,null))[_0xe36e('0x44')](handleError(_0x206f75,null));};exports[_0xe36e('0x27')]=function(_0x7c3766,_0x17965c){return db[_0xe36e('0x2d')]['find']({'where':{'id':_0x7c3766[_0xe36e('0x46')]['id']}})[_0xe36e('0x26')](handleEntityNotFound(_0x17965c,null))['then'](removeEntity(_0x17965c,null))[_0xe36e('0x44')](handleError(_0x17965c,null));};exports[_0xe36e('0x54')]=function(_0x169369,_0x443154,_0x700b63){return db[_0xe36e('0x2d')][_0xe36e('0x55')]({'where':{'id':_0x169369[_0xe36e('0x46')]['id']}})[_0xe36e('0x26')](handleEntityNotFound(_0x443154,null))[_0xe36e('0x26')](function(_0x56718a){var _0x2cf7fc;var _0x389e91={},_0x6f979f={};_0x6f979f[_0xe36e('0x31')]=_[_0xe36e('0x34')](db[_0xe36e('0x56')][_0xe36e('0x2e')]);_0x6f979f[_0xe36e('0x33')]=_[_0xe36e('0x34')](_0x169369[_0xe36e('0x33')]);_0x6f979f[_0xe36e('0x35')]=_[_0xe36e('0x36')](_0x6f979f[_0xe36e('0x31')],_0x6f979f[_0xe36e('0x33')]);_0x389e91['attributes']=_[_0xe36e('0x36')](_0x6f979f[_0xe36e('0x31')],qs['fields'](_0x169369[_0xe36e('0x33')][_0xe36e('0x38')]));_0x389e91[_0xe36e('0x37')]=_0x389e91[_0xe36e('0x37')][_0xe36e('0x39')]?_0x389e91[_0xe36e('0x37')]:_0x6f979f['model'];if(!_0x169369[_0xe36e('0x33')]['hasOwnProperty'](_0xe36e('0x3a'))){_0x389e91[_0xe36e('0x1e')]=qs[_0xe36e('0x1e')](_0x169369[_0xe36e('0x33')][_0xe36e('0x1e')]);_0x389e91[_0xe36e('0x1c')]=qs[_0xe36e('0x1c')](_0x169369[_0xe36e('0x33')]['offset']);}_0x389e91[_0xe36e('0x3b')]=qs[_0xe36e('0x3c')](_0x169369['query'][_0xe36e('0x3c')]);_0x389e91[_0xe36e('0x3d')]=qs[_0xe36e('0x35')](_[_0xe36e('0x3e')](_0x169369[_0xe36e('0x33')],_0x6f979f[_0xe36e('0x35')]));if(_0x169369[_0xe36e('0x33')]['filter']){_0x389e91[_0xe36e('0x3d')]=_[_0xe36e('0x40')](_0x389e91[_0xe36e('0x3d')],{'$or':_[_0xe36e('0x2c')](_0x389e91[_0xe36e('0x37')],function(_0x43d8c2){var _0xc1daf8={};_0xc1daf8[_0x43d8c2]={'$like':'%'+_0x169369[_0xe36e('0x33')][_0xe36e('0x3f')]+'%'};return _0xc1daf8;})});}_0x389e91[_0xe36e('0x3d')]=_[_0xe36e('0x40')](_0x389e91['where'],{'mailboxuser':_0x56718a[_0xe36e('0x57')]});_0x389e91=_[_0xe36e('0x40')]({},_0x389e91,_0x169369[_0xe36e('0x48')]);return db[_0xe36e('0x56')]['findAndCountAll'](_0x389e91)['then'](respondWithFilteredResult(_0x443154,_0x389e91));})[_0xe36e('0x44')](handleError(_0x443154,null));};
\ No newline at end of file
+var _0xb9be=['filter','options','include','findAll','rows','catch','show','rawAttributes','length','includeAll','create','body','user','UserProfileSection','find','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','getMessages','findOne','VoiceMailMessage','mailbox','findAndCountAll','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/license/util','../../mysqldb','end','offset','undefined','limit','count','status','Content-Range','apply','reject','save','update','then','destroy','get','UserProfileResource','sendStatus','error','name','index','VoiceMail','fieldName','type','key','model','map','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','filters','pick','where','merge','VIRTUAL'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0xb9be,0xc5));var _0xeb9b=function(_0x5dfc2a,_0x1a953f){_0x5dfc2a=_0x5dfc2a-0x0;var _0x3f1a71=_0xb9be[_0x5dfc2a];return _0x3f1a71;};'use strict';var emlformat=require(_0xeb9b('0x0'));var rimraf=require(_0xeb9b('0x1'));var zipdir=require(_0xeb9b('0x2'));var jsonpatch=require(_0xeb9b('0x3'));var rp=require(_0xeb9b('0x4'));var moment=require(_0xeb9b('0x5'));var BPromise=require(_0xeb9b('0x6'));var Mustache=require(_0xeb9b('0x7'));var util=require(_0xeb9b('0x8'));var path=require('path');var sox=require('sox');var csv=require(_0xeb9b('0x9'));var ejs=require(_0xeb9b('0xa'));var fs=require('fs');var fs_extra=require(_0xeb9b('0xb'));var _=require('lodash');var squel=require(_0xeb9b('0xc'));var crypto=require(_0xeb9b('0xd'));var jsforce=require(_0xeb9b('0xe'));var deskjs=require(_0xeb9b('0xf'));var toCsv=require(_0xeb9b('0x9'));var querystring=require(_0xeb9b('0x10'));var Papa=require(_0xeb9b('0x11'));var Redis=require(_0xeb9b('0x12'));var authService=require(_0xeb9b('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0xeb9b('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xeb9b('0x15'));var utils=require(_0xeb9b('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xeb9b('0x17'));var db=require(_0xeb9b('0x18'))['db'];function respondWithStatusCode(_0x3df18a,_0x2a01df){_0x2a01df=_0x2a01df||0xcc;return function(_0x51598f){if(_0x51598f){return _0x3df18a['sendStatus'](_0x2a01df);}return _0x3df18a['status'](_0x2a01df)[_0xeb9b('0x19')]();};}function respondWithResult(_0x1ef03f,_0x2674e6){_0x2674e6=_0x2674e6||0xc8;return function(_0x4ec46d){if(_0x4ec46d){return _0x1ef03f['status'](_0x2674e6)['json'](_0x4ec46d);}};}function respondWithFilteredResult(_0x32538b,_0x1a5f27){return function(_0x406afd){if(_0x406afd){var _0x3fa308=typeof _0x1a5f27[_0xeb9b('0x1a')]===_0xeb9b('0x1b')&&typeof _0x1a5f27[_0xeb9b('0x1c')]==='undefined';var _0x2e8645=_0x406afd[_0xeb9b('0x1d')];var _0x21aca6=_0x3fa308?0x0:_0x1a5f27[_0xeb9b('0x1a')];var _0x3cbe3e=_0x3fa308?_0x406afd[_0xeb9b('0x1d')]:_0x1a5f27[_0xeb9b('0x1a')]+_0x1a5f27[_0xeb9b('0x1c')];var _0x2c199f;if(_0x3cbe3e>=_0x2e8645){_0x3cbe3e=_0x2e8645;_0x2c199f=0xc8;}else{_0x2c199f=0xce;}_0x32538b[_0xeb9b('0x1e')](_0x2c199f);return _0x32538b['set'](_0xeb9b('0x1f'),_0x21aca6+'-'+_0x3cbe3e+'/'+_0x2e8645)['json'](_0x406afd);}return null;};}function patchUpdates(_0x5d5f54){return function(_0x580498){try{jsonpatch[_0xeb9b('0x20')](_0x580498,_0x5d5f54,!![]);}catch(_0x4ab4b8){return BPromise[_0xeb9b('0x21')](_0x4ab4b8);}return _0x580498[_0xeb9b('0x22')]();};}function saveUpdates(_0x37935c,_0x37d7e0){return function(_0x3c8be7){if(_0x3c8be7){return _0x3c8be7[_0xeb9b('0x23')](_0x37935c)[_0xeb9b('0x24')](function(_0x15e5b8){return _0x15e5b8;});}return null;};}function removeEntity(_0x142d1c,_0x46df93){return function(_0x61c86d){if(_0x61c86d){return _0x61c86d[_0xeb9b('0x25')]()[_0xeb9b('0x24')](function(){var _0xe6d3e1=_0x61c86d[_0xeb9b('0x26')]({'plain':!![]});var _0x434461='Voicemails';return db[_0xeb9b('0x27')]['destroy']({'where':{'type':_0x434461,'resourceId':_0xe6d3e1['id']}})[_0xeb9b('0x24')](function(){return _0x61c86d;});})['then'](function(){_0x142d1c[_0xeb9b('0x1e')](0xcc)[_0xeb9b('0x19')]();});}};}function handleEntityNotFound(_0x7e0134,_0xe3eda5){return function(_0x52f6c1){if(!_0x52f6c1){_0x7e0134[_0xeb9b('0x28')](0x194);}return _0x52f6c1;};}function handleError(_0x42fe78,_0x54ab67){_0x54ab67=_0x54ab67||0x1f4;return function(_0x35ff07){logger[_0xeb9b('0x29')](_0x35ff07['stack']);if(_0x35ff07[_0xeb9b('0x2a')]){delete _0x35ff07[_0xeb9b('0x2a')];}_0x42fe78[_0xeb9b('0x1e')](_0x54ab67)['send'](_0x35ff07);};}exports[_0xeb9b('0x2b')]=function(_0x5336f2,_0x6bb66){var _0x4c1331={},_0x411467={},_0x54c659={'count':0x0,'rows':[]};var _0x27578d=_['map'](db[_0xeb9b('0x2c')]['rawAttributes'],function(_0x25b8da){return{'name':_0x25b8da[_0xeb9b('0x2d')],'type':_0x25b8da[_0xeb9b('0x2e')][_0xeb9b('0x2f')]};});_0x411467[_0xeb9b('0x30')]=_[_0xeb9b('0x31')](_0x27578d,_0xeb9b('0x2a'));_0x411467[_0xeb9b('0x32')]=_[_0xeb9b('0x33')](_0x5336f2[_0xeb9b('0x32')]);_0x411467['filters']=_[_0xeb9b('0x34')](_0x411467[_0xeb9b('0x30')],_0x411467[_0xeb9b('0x32')]);_0x4c1331[_0xeb9b('0x35')]=_[_0xeb9b('0x34')](_0x411467[_0xeb9b('0x30')],qs[_0xeb9b('0x36')](_0x5336f2['query'][_0xeb9b('0x36')]));_0x4c1331[_0xeb9b('0x35')]=_0x4c1331[_0xeb9b('0x35')]['length']?_0x4c1331[_0xeb9b('0x35')]:_0x411467[_0xeb9b('0x30')];if(!_0x5336f2[_0xeb9b('0x32')][_0xeb9b('0x37')](_0xeb9b('0x38'))){_0x4c1331[_0xeb9b('0x1c')]=qs['limit'](_0x5336f2[_0xeb9b('0x32')][_0xeb9b('0x1c')]);_0x4c1331['offset']=qs[_0xeb9b('0x1a')](_0x5336f2[_0xeb9b('0x32')][_0xeb9b('0x1a')]);}_0x4c1331[_0xeb9b('0x39')]=qs[_0xeb9b('0x3a')](_0x5336f2[_0xeb9b('0x32')][_0xeb9b('0x3a')]);_0x4c1331['where']=qs[_0xeb9b('0x3b')](_[_0xeb9b('0x3c')](_0x5336f2[_0xeb9b('0x32')],_0x411467['filters']),_0x27578d);if(_0x5336f2['query']['filter']){_0x4c1331[_0xeb9b('0x3d')]=_[_0xeb9b('0x3e')](_0x4c1331[_0xeb9b('0x3d')],{'$or':_['map'](_0x27578d,function(_0x409ce6){if(_0x409ce6[_0xeb9b('0x2e')]!==_0xeb9b('0x3f')){var _0x20da52={};_0x20da52[_0x409ce6[_0xeb9b('0x2a')]]={'$like':'%'+_0x5336f2[_0xeb9b('0x32')][_0xeb9b('0x40')]+'%'};return _0x20da52;}})});}_0x4c1331=_['merge']({},_0x4c1331,_0x5336f2[_0xeb9b('0x41')]);var _0x3ccf45={'where':_0x4c1331[_0xeb9b('0x3d')]};return db['VoiceMail']['count'](_0x3ccf45)[_0xeb9b('0x24')](function(_0x110122){_0x54c659['count']=_0x110122;if(_0x5336f2[_0xeb9b('0x32')]['includeAll']){_0x4c1331[_0xeb9b('0x42')]=[{'all':!![]}];}return db[_0xeb9b('0x2c')][_0xeb9b('0x43')](_0x4c1331);})[_0xeb9b('0x24')](function(_0xbee63e){_0x54c659[_0xeb9b('0x44')]=_0xbee63e;return _0x54c659;})[_0xeb9b('0x24')](respondWithFilteredResult(_0x6bb66,_0x4c1331))[_0xeb9b('0x45')](handleError(_0x6bb66,null));};exports[_0xeb9b('0x46')]=function(_0x311e7d,_0x21bcf1){var _0x761d18={'raw':!![],'where':{'id':_0x311e7d['params']['id']}},_0x5e270a={};_0x5e270a[_0xeb9b('0x30')]=_['keys'](db[_0xeb9b('0x2c')][_0xeb9b('0x47')]);_0x5e270a[_0xeb9b('0x32')]=_['keys'](_0x311e7d[_0xeb9b('0x32')]);_0x5e270a[_0xeb9b('0x3b')]=_['intersection'](_0x5e270a[_0xeb9b('0x30')],_0x5e270a[_0xeb9b('0x32')]);_0x761d18[_0xeb9b('0x35')]=_[_0xeb9b('0x34')](_0x5e270a[_0xeb9b('0x30')],qs[_0xeb9b('0x36')](_0x311e7d[_0xeb9b('0x32')][_0xeb9b('0x36')]));_0x761d18['attributes']=_0x761d18['attributes'][_0xeb9b('0x48')]?_0x761d18['attributes']:_0x5e270a['model'];if(_0x311e7d[_0xeb9b('0x32')][_0xeb9b('0x49')]){_0x761d18[_0xeb9b('0x42')]=[{'all':!![]}];}_0x761d18=_[_0xeb9b('0x3e')]({},_0x761d18,_0x311e7d[_0xeb9b('0x41')]);return db[_0xeb9b('0x2c')]['find'](_0x761d18)['then'](handleEntityNotFound(_0x21bcf1,null))['then'](respondWithResult(_0x21bcf1,null))[_0xeb9b('0x45')](handleError(_0x21bcf1,null));};exports['create']=function(_0x4901b0,_0x2ee59c){return db[_0xeb9b('0x2c')][_0xeb9b('0x4a')](_0x4901b0[_0xeb9b('0x4b')],{})[_0xeb9b('0x24')](function(_0x202ef3){var _0x1a2189=_0x4901b0[_0xeb9b('0x4c')][_0xeb9b('0x26')]({'plain':!![]});if(!_0x1a2189)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1a2189['role']===_0xeb9b('0x4c')){var _0x21c93a=_0x202ef3['get']({'plain':!![]});var _0x19bfe9='Voicemails';return db[_0xeb9b('0x4d')][_0xeb9b('0x4e')]({'where':{'name':_0x19bfe9,'userProfileId':_0x1a2189['userProfileId']},'raw':!![]})['then'](function(_0x530c1c){if(_0x530c1c&&_0x530c1c[_0xeb9b('0x4f')]===0x0){return db[_0xeb9b('0x27')][_0xeb9b('0x4a')]({'name':_0x21c93a['name'],'resourceId':_0x21c93a['id'],'type':_0x530c1c['name'],'sectionId':_0x530c1c['id']},{})[_0xeb9b('0x24')](function(){return _0x202ef3;});}else{return _0x202ef3;}})[_0xeb9b('0x45')](function(_0x3e6e73){logger[_0xeb9b('0x29')](_0xeb9b('0x50'),_0x3e6e73);throw _0x3e6e73;});}return _0x202ef3;})[_0xeb9b('0x24')](respondWithResult(_0x2ee59c,0xc9))['catch'](handleError(_0x2ee59c,null));};exports[_0xeb9b('0x23')]=function(_0x1fab7a,_0x47e84a){if(_0x1fab7a[_0xeb9b('0x4b')]['id']){delete _0x1fab7a['body']['id'];}return db[_0xeb9b('0x2c')][_0xeb9b('0x4e')]({'where':{'id':_0x1fab7a['params']['id']}})[_0xeb9b('0x24')](handleEntityNotFound(_0x47e84a,null))['then'](saveUpdates(_0x1fab7a[_0xeb9b('0x4b')],null))[_0xeb9b('0x24')](respondWithResult(_0x47e84a,null))[_0xeb9b('0x45')](handleError(_0x47e84a,null));};exports[_0xeb9b('0x25')]=function(_0x5c769e,_0x5a641a){return db[_0xeb9b('0x2c')][_0xeb9b('0x4e')]({'where':{'id':_0x5c769e[_0xeb9b('0x51')]['id']}})['then'](handleEntityNotFound(_0x5a641a,null))[_0xeb9b('0x24')](removeEntity(_0x5a641a,null))[_0xeb9b('0x45')](handleError(_0x5a641a,null));};exports[_0xeb9b('0x52')]=function(_0x24444e,_0x2d0ba9,_0x114132){return db[_0xeb9b('0x2c')][_0xeb9b('0x53')]({'where':{'id':_0x24444e[_0xeb9b('0x51')]['id']}})[_0xeb9b('0x24')](handleEntityNotFound(_0x2d0ba9,null))[_0xeb9b('0x24')](function(_0x58e550){var _0x5531a4;var _0x4b2506={},_0x83d48a={};_0x83d48a['model']=_[_0xeb9b('0x33')](db[_0xeb9b('0x54')][_0xeb9b('0x47')]);_0x83d48a['query']=_[_0xeb9b('0x33')](_0x24444e[_0xeb9b('0x32')]);_0x83d48a[_0xeb9b('0x3b')]=_[_0xeb9b('0x34')](_0x83d48a[_0xeb9b('0x30')],_0x83d48a[_0xeb9b('0x32')]);_0x4b2506[_0xeb9b('0x35')]=_[_0xeb9b('0x34')](_0x83d48a['model'],qs['fields'](_0x24444e[_0xeb9b('0x32')][_0xeb9b('0x36')]));_0x4b2506[_0xeb9b('0x35')]=_0x4b2506['attributes'][_0xeb9b('0x48')]?_0x4b2506['attributes']:_0x83d48a[_0xeb9b('0x30')];if(!_0x24444e['query'][_0xeb9b('0x37')](_0xeb9b('0x38'))){_0x4b2506[_0xeb9b('0x1c')]=qs[_0xeb9b('0x1c')](_0x24444e[_0xeb9b('0x32')]['limit']);_0x4b2506[_0xeb9b('0x1a')]=qs[_0xeb9b('0x1a')](_0x24444e['query']['offset']);}_0x4b2506[_0xeb9b('0x39')]=qs[_0xeb9b('0x3a')](_0x24444e['query'][_0xeb9b('0x3a')]);_0x4b2506['where']=qs[_0xeb9b('0x3b')](_['pick'](_0x24444e[_0xeb9b('0x32')],_0x83d48a[_0xeb9b('0x3b')]));if(_0x24444e[_0xeb9b('0x32')][_0xeb9b('0x40')]){_0x4b2506[_0xeb9b('0x3d')]=_[_0xeb9b('0x3e')](_0x4b2506['where'],{'$or':_[_0xeb9b('0x31')](_0x4b2506[_0xeb9b('0x35')],function(_0x5b670b){var _0x1acf82={};_0x1acf82[_0x5b670b]={'$like':'%'+_0x24444e[_0xeb9b('0x32')][_0xeb9b('0x40')]+'%'};return _0x1acf82;})});}_0x4b2506[_0xeb9b('0x3d')]=_['merge'](_0x4b2506[_0xeb9b('0x3d')],{'mailboxuser':_0x58e550[_0xeb9b('0x55')]});_0x4b2506=_['merge']({},_0x4b2506,_0x24444e[_0xeb9b('0x41')]);return db[_0xeb9b('0x54')][_0xeb9b('0x56')](_0x4b2506)[_0xeb9b('0x24')](respondWithFilteredResult(_0x2d0ba9,_0x4b2506));})[_0xeb9b('0x45')](handleError(_0x2d0ba9,null));};
\ No newline at end of file
index fd9b3f8..ffb803b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf43=['api','bluebird','path','rimraf','../../config/environment','./voiceMail.attributes','exports','define','voice_voicemail','context','lodash','util'];(function(_0x2d1a6e,_0x26f215){var _0x4b1674=function(_0x170ed3){while(--_0x170ed3){_0x2d1a6e['push'](_0x2d1a6e['shift']());}};_0x4b1674(++_0x26f215);}(_0xaf43,0x196));var _0x3af4=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0xaf43[_0x4565bf];return _0x5610ba;};'use strict';var _=require(_0x3af4('0x0'));var util=require(_0x3af4('0x1'));var logger=require('../../config/logger')(_0x3af4('0x2'));var moment=require('moment');var BPromise=require(_0x3af4('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x3af4('0x4'));var rimraf=require(_0x3af4('0x5'));var config=require(_0x3af4('0x6'));var attributes=require(_0x3af4('0x7'));module[_0x3af4('0x8')]=function(_0x40302b,_0x4dc53e){return _0x40302b[_0x3af4('0x9')]('VoiceMail',attributes,{'tableName':_0x3af4('0xa'),'paranoid':![],'indexes':[{'name':'mailbox_context','fields':['mailbox',_0x3af4('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x4be7=['rimraf','../../config/environment','./voiceMail.attributes','exports','define','mailbox_context','mailbox','lodash','util','../../config/logger','api','bluebird','request-promise'];(function(_0x539dfc,_0x4c80ee){var _0x1c3bc7=function(_0x62148c){while(--_0x62148c){_0x539dfc['push'](_0x539dfc['shift']());}};_0x1c3bc7(++_0x4c80ee);}(_0x4be7,0xbd));var _0x74be=function(_0x865e28,_0x3de135){_0x865e28=_0x865e28-0x0;var _0x3c97d9=_0x4be7[_0x865e28];return _0x3c97d9;};'use strict';var _=require(_0x74be('0x0'));var util=require(_0x74be('0x1'));var logger=require(_0x74be('0x2'))(_0x74be('0x3'));var moment=require('moment');var BPromise=require(_0x74be('0x4'));var rp=require(_0x74be('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x74be('0x6'));var config=require(_0x74be('0x7'));var attributes=require(_0x74be('0x8'));module[_0x74be('0x9')]=function(_0x4e5d0f,_0x34f8cb){return _0x4e5d0f[_0x74be('0xa')]('VoiceMail',attributes,{'tableName':'voice_voicemail','paranoid':![],'indexes':[{'name':_0x74be('0xb'),'fields':[_0x74be('0xc'),'context']}],'timestamps':!![]});};
\ No newline at end of file
index 73724cc..0936dd0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x24cc=['rpc','../../config/environment','client','http','request','then','info','VoiceMail,\x20%s,\x20%s','debug','VoiceMail,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','code','error','message','result','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x3ae69c,_0x31267a){var _0x46ca50=function(_0x47a96e){while(--_0x47a96e){_0x3ae69c['push'](_0x3ae69c['shift']());}};_0x46ca50(++_0x31267a);}(_0x24cc,0x180));var _0xc24c=function(_0x537563,_0x49b366){_0x537563=_0x537563-0x0;var _0x27675f=_0x24cc[_0x537563];return _0x27675f;};'use strict';var _=require(_0xc24c('0x0'));var util=require(_0xc24c('0x1'));var moment=require(_0xc24c('0x2'));var BPromise=require('bluebird');var rs=require(_0xc24c('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc24c('0x4'))['db'];var utils=require(_0xc24c('0x5'));var logger=require(_0xc24c('0x6'))(_0xc24c('0x7'));var config=require(_0xc24c('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xc24c('0x9')][_0xc24c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4021a1,_0x227508,_0xc820a4){return new BPromise(function(_0x5c01ee,_0x45b868){return client[_0xc24c('0xb')](_0x4021a1,_0xc820a4)[_0xc24c('0xc')](function(_0x4effe3){logger[_0xc24c('0xd')](_0xc24c('0xe'),_0x227508,'request\x20sent');logger[_0xc24c('0xf')](_0xc24c('0x10'),_0x227508,_0xc24c('0x11'),JSON[_0xc24c('0x12')](_0x4effe3));if(_0x4effe3['error']){if(_0x4effe3['error'][_0xc24c('0x13')]===0x1f4){logger[_0xc24c('0x14')]('VoiceMail,\x20%s,\x20%s',_0x227508,_0x4effe3[_0xc24c('0x14')][_0xc24c('0x15')]);return _0x45b868(_0x4effe3['error']['message']);}logger[_0xc24c('0x14')](_0xc24c('0xe'),_0x227508,_0x4effe3[_0xc24c('0x14')]['message']);return _0x5c01ee(_0x4effe3['error']['message']);}else{logger[_0xc24c('0xd')](_0xc24c('0xe'),_0x227508,_0xc24c('0x11'));_0x5c01ee(_0x4effe3[_0xc24c('0x16')]['message']);}})['catch'](function(_0x509be6){logger[_0xc24c('0x14')](_0xc24c('0xe'),_0x227508,_0x509be6);_0x45b868(_0x509be6);});});}
\ No newline at end of file
+var _0xaf18=['request','info','request\x20sent','VoiceMail,\x20%s,\x20%s,\x20%s','stringify','error','code','message','VoiceMail,\x20%s,\x20%s','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http'];(function(_0x465028,_0x4570ac){var _0xb783d4=function(_0x5458c5){while(--_0x5458c5){_0x465028['push'](_0x465028['shift']());}};_0xb783d4(++_0x4570ac);}(_0xaf18,0xa5));var _0x8af1=function(_0x303be2,_0x250934){_0x303be2=_0x303be2-0x0;var _0x11b038=_0xaf18[_0x303be2];return _0x11b038;};'use strict';var _=require(_0x8af1('0x0'));var util=require('util');var moment=require(_0x8af1('0x1'));var BPromise=require(_0x8af1('0x2'));var rs=require(_0x8af1('0x3'));var fs=require('fs');var Redis=require(_0x8af1('0x4'));var db=require(_0x8af1('0x5'))['db'];var utils=require(_0x8af1('0x6'));var logger=require(_0x8af1('0x7'))('rpc');var config=require(_0x8af1('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x8af1('0x9')][_0x8af1('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5725b4,_0x2b7975,_0xf65390){return new BPromise(function(_0x2e4160,_0x4757d5){return client[_0x8af1('0xb')](_0x5725b4,_0xf65390)['then'](function(_0x5bdc24){logger[_0x8af1('0xc')]('VoiceMail,\x20%s,\x20%s',_0x2b7975,_0x8af1('0xd'));logger['debug'](_0x8af1('0xe'),_0x2b7975,_0x8af1('0xd'),JSON[_0x8af1('0xf')](_0x5bdc24));if(_0x5bdc24[_0x8af1('0x10')]){if(_0x5bdc24[_0x8af1('0x10')][_0x8af1('0x11')]===0x1f4){logger[_0x8af1('0x10')]('VoiceMail,\x20%s,\x20%s',_0x2b7975,_0x5bdc24[_0x8af1('0x10')][_0x8af1('0x12')]);return _0x4757d5(_0x5bdc24[_0x8af1('0x10')]['message']);}logger[_0x8af1('0x10')](_0x8af1('0x13'),_0x2b7975,_0x5bdc24[_0x8af1('0x10')][_0x8af1('0x12')]);return _0x2e4160(_0x5bdc24[_0x8af1('0x10')][_0x8af1('0x12')]);}else{logger[_0x8af1('0xc')]('VoiceMail,\x20%s,\x20%s',_0x2b7975,_0x8af1('0xd'));_0x2e4160(_0x5bdc24[_0x8af1('0x14')]['message']);}})[_0x8af1('0x15')](function(_0x59d4e1){logger[_0x8af1('0x10')](_0x8af1('0x13'),_0x2b7975,_0x59d4e1);_0x4757d5(_0x59d4e1);});});}
\ No newline at end of file
index 7a770e0..ba2e48b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x26b9=['delete','destroy','exports','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/:id','show','/:id/download','download','post','put','update'];(function(_0x5eea1e,_0x22c683){var _0xdb1734=function(_0x251002){while(--_0x251002){_0x5eea1e['push'](_0x5eea1e['shift']());}};_0xdb1734(++_0x22c683);}(_0x26b9,0x157));var _0x926b=function(_0x2b3bb9,_0x1556ce){_0x2b3bb9=_0x2b3bb9-0x0;var _0x5d3da5=_0x26b9[_0x2b3bb9];return _0x5d3da5;};'use strict';var multer=require('multer');var util=require(_0x926b('0x0'));var path=require(_0x926b('0x1'));var timeout=require(_0x926b('0x2'));var express=require('express');var router=express[_0x926b('0x3')]();var fs_extra=require(_0x926b('0x4'));var auth=require(_0x926b('0x5'));var interaction=require(_0x926b('0x6'));var config=require('../../config/environment');var controller=require('./voiceMailMessage.controller');router[_0x926b('0x7')]('/',auth[_0x926b('0x8')](),controller[_0x926b('0x9')]);router[_0x926b('0x7')](_0x926b('0xa'),auth['isAuthenticated'](),controller[_0x926b('0xb')]);router[_0x926b('0x7')](_0x926b('0xc'),auth[_0x926b('0x8')](),controller[_0x926b('0xd')]);router[_0x926b('0xe')]('/',auth[_0x926b('0x8')](),controller['create']);router[_0x926b('0xf')](_0x926b('0xa'),auth[_0x926b('0x8')](),controller[_0x926b('0x10')]);router[_0x926b('0x11')]('/:id',auth[_0x926b('0x8')](),controller[_0x926b('0x12')]);module[_0x926b('0x13')]=router;
\ No newline at end of file
+var _0x3693=['/:id/download','download','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','./voiceMailMessage.controller','get','isAuthenticated','index','/:id','show'];(function(_0x1de2bd,_0x953fb){var _0x595960=function(_0xea260b){while(--_0xea260b){_0x1de2bd['push'](_0x1de2bd['shift']());}};_0x595960(++_0x953fb);}(_0x3693,0x1be));var _0x3369=function(_0x3ceafb,_0x7dbe59){_0x3ceafb=_0x3ceafb-0x0;var _0x12df3d=_0x3693[_0x3ceafb];return _0x12df3d;};'use strict';var multer=require(_0x3369('0x0'));var util=require(_0x3369('0x1'));var path=require(_0x3369('0x2'));var timeout=require(_0x3369('0x3'));var express=require(_0x3369('0x4'));var router=express[_0x3369('0x5')]();var fs_extra=require(_0x3369('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x3369('0x7'));var config=require('../../config/environment');var controller=require(_0x3369('0x8'));router[_0x3369('0x9')]('/',auth[_0x3369('0xa')](),controller[_0x3369('0xb')]);router[_0x3369('0x9')](_0x3369('0xc'),auth[_0x3369('0xa')](),controller[_0x3369('0xd')]);router[_0x3369('0x9')](_0x3369('0xe'),auth[_0x3369('0xa')](),controller[_0x3369('0xf')]);router[_0x3369('0x10')]('/',auth[_0x3369('0xa')](),controller[_0x3369('0x11')]);router[_0x3369('0x12')](_0x3369('0xc'),auth[_0x3369('0xa')](),controller[_0x3369('0x13')]);router[_0x3369('0x14')]('/:id',auth[_0x3369('0xa')](),controller[_0x3369('0x15')]);module[_0x3369('0x16')]=router;
\ No newline at end of file
index 51bfc0b..1508229 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7468=['getDataValue','INTEGER','STRING','BLOB','long','TIMESTAMP','literal','CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','sequelize'];(function(_0x27af45,_0x1b57aa){var _0x18df21=function(_0x4b7679){while(--_0x4b7679){_0x27af45['push'](_0x27af45['shift']());}};_0x18df21(++_0x1b57aa);}(_0x7468,0xaa));var _0x8746=function(_0x55d2a1,_0x2c64dc){_0x55d2a1=_0x55d2a1-0x0;var _0x1663f7=_0x7468[_0x55d2a1];return _0x1663f7;};'use strict';var Sequelize=require(_0x8746('0x0'));module['exports']={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x51d735){return this[_0x8746('0x1')]('id');}},'msgnum':{'type':Sequelize[_0x8746('0x2')](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize[_0x8746('0x3')],'defaultValue':''},'context':{'type':Sequelize[_0x8746('0x3')],'defaultValue':''},'macrocontext':{'type':Sequelize[_0x8746('0x3')],'defaultValue':''},'callerid':{'type':Sequelize[_0x8746('0x3')],'defaultValue':''},'origtime':{'type':Sequelize[_0x8746('0x3')],'defaultValue':''},'duration':{'type':Sequelize[_0x8746('0x3')],'defaultValue':''},'mailboxuser':{'type':Sequelize[_0x8746('0x3')],'defaultValue':''},'mailboxcontext':{'type':Sequelize[_0x8746('0x3')],'defaultValue':''},'recording':{'type':Sequelize[_0x8746('0x4')](_0x8746('0x5')),'defaultValue':null},'flag':{'type':Sequelize[_0x8746('0x3')],'defaultValue':''},'msg_id':{'type':Sequelize[_0x8746('0x3')],'defaultValue':''},'stamp':{'type':_0x8746('0x6'),'defaultValue':Sequelize[_0x8746('0x7')](_0x8746('0x8'))}};
\ No newline at end of file
+var _0x9349=['VIRTUAL','getDataValue','INTEGER','STRING','BLOB','TIMESTAMP','literal','CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','sequelize'];(function(_0x445f3e,_0x542027){var _0x2aacc1=function(_0x32498d){while(--_0x32498d){_0x445f3e['push'](_0x445f3e['shift']());}};_0x2aacc1(++_0x542027);}(_0x9349,0xfb));var _0x9934=function(_0x3fb364,_0x4e95db){_0x3fb364=_0x3fb364-0x0;var _0x148164=_0x9349[_0x3fb364];return _0x148164;};'use strict';var Sequelize=require(_0x9934('0x0'));module['exports']={'name':{'type':Sequelize[_0x9934('0x1')],'get':function(_0x3609f6){return this[_0x9934('0x2')]('id');}},'msgnum':{'type':Sequelize[_0x9934('0x3')](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize[_0x9934('0x4')],'defaultValue':''},'context':{'type':Sequelize[_0x9934('0x4')],'defaultValue':''},'macrocontext':{'type':Sequelize['STRING'],'defaultValue':''},'callerid':{'type':Sequelize[_0x9934('0x4')],'defaultValue':''},'origtime':{'type':Sequelize[_0x9934('0x4')],'defaultValue':''},'duration':{'type':Sequelize[_0x9934('0x4')],'defaultValue':''},'mailboxuser':{'type':Sequelize[_0x9934('0x4')],'defaultValue':''},'mailboxcontext':{'type':Sequelize[_0x9934('0x4')],'defaultValue':''},'recording':{'type':Sequelize[_0x9934('0x5')]('long'),'defaultValue':null},'flag':{'type':Sequelize[_0x9934('0x4')],'defaultValue':''},'msg_id':{'type':Sequelize[_0x9934('0x4')],'defaultValue':''},'stamp':{'type':_0x9934('0x6'),'defaultValue':Sequelize[_0x9934('0x7')](_0x9934('0x8'))}};
\ No newline at end of file
index f28a890..23449d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa4ba=['count','status','set','Content-Range','apply','save','update','then','destroy','stack','name','send','index','map','rawAttributes','type','model','differenceBy','query','filters','intersection','fields','attributes','order','sort','where','pick','merge','VIRTUAL','filter','options','VoiceMailMessage','includeAll','findAll','rows','show','params','keys','length','include','catch','create','body','download','find','recording','msg_id','Sequelize','ValidationError','VoiceMailMessage\x20not\x20found','audio/wav','attachment','Content-Disposition','attachment;\x20filename=\x22','.wav\x22','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','fs-extra','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','limit','undefined'];(function(_0x5912be,_0x1bd806){var _0x41be72=function(_0x1566fc){while(--_0x1566fc){_0x5912be['push'](_0x5912be['shift']());}};_0x41be72(++_0x1bd806);}(_0xa4ba,0x8f));var _0xaa4b=function(_0x346737,_0x3e6081){_0x346737=_0x346737-0x0;var _0x1ade2e=_0xa4ba[_0x346737];return _0x1ade2e;};'use strict';var emlformat=require(_0xaa4b('0x0'));var rimraf=require(_0xaa4b('0x1'));var zipdir=require(_0xaa4b('0x2'));var jsonpatch=require(_0xaa4b('0x3'));var rp=require(_0xaa4b('0x4'));var moment=require(_0xaa4b('0x5'));var BPromise=require(_0xaa4b('0x6'));var Mustache=require(_0xaa4b('0x7'));var util=require(_0xaa4b('0x8'));var path=require(_0xaa4b('0x9'));var sox=require(_0xaa4b('0xa'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xaa4b('0xb'));var _=require('lodash');var squel=require(_0xaa4b('0xc'));var crypto=require('crypto');var jsforce=require(_0xaa4b('0xd'));var deskjs=require(_0xaa4b('0xe'));var toCsv=require(_0xaa4b('0xf'));var querystring=require(_0xaa4b('0x10'));var Papa=require(_0xaa4b('0x11'));var Redis=require(_0xaa4b('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xaa4b('0x13'));var as=require(_0xaa4b('0x14'));var hardwareService=require(_0xaa4b('0x15'));var logger=require('../../config/logger')(_0xaa4b('0x16'));var utils=require(_0xaa4b('0x17'));var config=require(_0xaa4b('0x18'));var licenseUtil=require(_0xaa4b('0x19'));var db=require(_0xaa4b('0x1a'))['db'];function respondWithStatusCode(_0x2b4052,_0x180906){_0x180906=_0x180906||0xcc;return function(_0x2f8248){if(_0x2f8248){return _0x2b4052[_0xaa4b('0x1b')](_0x180906);}return _0x2b4052['status'](_0x180906)[_0xaa4b('0x1c')]();};}function respondWithResult(_0x40dd89,_0x4cf123){_0x4cf123=_0x4cf123||0xc8;return function(_0x20c80f){if(_0x20c80f){return _0x40dd89['status'](_0x4cf123)[_0xaa4b('0x1d')](_0x20c80f);}};}function respondWithFilteredResult(_0xfc24d4,_0x3a8a13){return function(_0x314035){if(_0x314035){var _0x35ae5d=typeof _0x3a8a13[_0xaa4b('0x1e')]==='undefined'&&typeof _0x3a8a13[_0xaa4b('0x1f')]===_0xaa4b('0x20');var _0x1cecfe=_0x314035[_0xaa4b('0x21')];var _0x416f12=_0x35ae5d?0x0:_0x3a8a13['offset'];var _0x346dcc=_0x35ae5d?_0x314035['count']:_0x3a8a13[_0xaa4b('0x1e')]+_0x3a8a13['limit'];var _0x28bc63;if(_0x346dcc>=_0x1cecfe){_0x346dcc=_0x1cecfe;_0x28bc63=0xc8;}else{_0x28bc63=0xce;}_0xfc24d4[_0xaa4b('0x22')](_0x28bc63);return _0xfc24d4[_0xaa4b('0x23')](_0xaa4b('0x24'),_0x416f12+'-'+_0x346dcc+'/'+_0x1cecfe)[_0xaa4b('0x1d')](_0x314035);}return null;};}function patchUpdates(_0x3d6ad6){return function(_0x242aaa){try{jsonpatch[_0xaa4b('0x25')](_0x242aaa,_0x3d6ad6,!![]);}catch(_0x4beadd){return BPromise['reject'](_0x4beadd);}return _0x242aaa[_0xaa4b('0x26')]();};}function saveUpdates(_0x3daf26,_0x39666){return function(_0x4b08f6){if(_0x4b08f6){return _0x4b08f6[_0xaa4b('0x27')](_0x3daf26)[_0xaa4b('0x28')](function(_0x10a768){return _0x10a768;});}return null;};}function removeEntity(_0x186863,_0x20905f){return function(_0x1ec669){if(_0x1ec669){return _0x1ec669[_0xaa4b('0x29')]()[_0xaa4b('0x28')](function(){_0x186863['status'](0xcc)[_0xaa4b('0x1c')]();});}};}function handleEntityNotFound(_0x882460,_0x3ffc21){return function(_0x3f8eb8){if(!_0x3f8eb8){_0x882460[_0xaa4b('0x1b')](0x194);}return _0x3f8eb8;};}function handleError(_0x189573,_0x51f2f9){_0x51f2f9=_0x51f2f9||0x1f4;return function(_0x530397){logger['error'](_0x530397[_0xaa4b('0x2a')]);if(_0x530397[_0xaa4b('0x2b')]){delete _0x530397[_0xaa4b('0x2b')];}_0x189573['status'](_0x51f2f9)[_0xaa4b('0x2c')](_0x530397);};}exports[_0xaa4b('0x2d')]=function(_0x10fe2d,_0x1dca3e){var _0x3a7558={},_0x35c602={},_0x2145e6={'count':0x0,'rows':[]};var _0x2d887b=_[_0xaa4b('0x2e')](db['VoiceMailMessage'][_0xaa4b('0x2f')],function(_0x3a3060){return{'name':_0x3a3060['fieldName'],'type':_0x3a3060[_0xaa4b('0x30')]['key']};});_0x35c602[_0xaa4b('0x31')]=_[_0xaa4b('0x32')](_['map'](_0x2d887b,_0xaa4b('0x2b')),[_0xaa4b('0x2b')]);_0x35c602['query']=_['keys'](_0x10fe2d[_0xaa4b('0x33')]);_0x35c602[_0xaa4b('0x34')]=_['intersection'](_0x35c602[_0xaa4b('0x31')],_0x35c602[_0xaa4b('0x33')]);_0x3a7558['attributes']=_[_0xaa4b('0x35')](_0x35c602[_0xaa4b('0x31')],qs['fields'](_0x10fe2d[_0xaa4b('0x33')][_0xaa4b('0x36')]));_0x3a7558[_0xaa4b('0x37')]=_0x3a7558[_0xaa4b('0x37')]['length']?_0x3a7558['attributes']:_0x35c602[_0xaa4b('0x31')];if(!_0x10fe2d['query']['hasOwnProperty']('nolimit')){_0x3a7558[_0xaa4b('0x1f')]=qs[_0xaa4b('0x1f')](_0x10fe2d['query']['limit']);_0x3a7558[_0xaa4b('0x1e')]=qs[_0xaa4b('0x1e')](_0x10fe2d[_0xaa4b('0x33')][_0xaa4b('0x1e')]);}_0x3a7558[_0xaa4b('0x38')]=qs['sort'](_0x10fe2d[_0xaa4b('0x33')][_0xaa4b('0x39')]);_0x3a7558[_0xaa4b('0x3a')]=qs[_0xaa4b('0x34')](_[_0xaa4b('0x3b')](_0x10fe2d[_0xaa4b('0x33')],_0x35c602[_0xaa4b('0x34')]),_0x2d887b);if(_0x10fe2d[_0xaa4b('0x33')]['filter']){_0x3a7558[_0xaa4b('0x3a')]=_[_0xaa4b('0x3c')](_0x3a7558[_0xaa4b('0x3a')],{'$or':_[_0xaa4b('0x2e')](_0x2d887b,function(_0x310982){if(_0x310982[_0xaa4b('0x30')]!==_0xaa4b('0x3d')){var _0x423ddd={};_0x423ddd[_0x310982['name']]={'$like':'%'+_0x10fe2d[_0xaa4b('0x33')][_0xaa4b('0x3e')]+'%'};return _0x423ddd;}})});}_0x3a7558=_[_0xaa4b('0x3c')]({},_0x3a7558,_0x10fe2d[_0xaa4b('0x3f')]);var _0x890e1={'where':_0x3a7558[_0xaa4b('0x3a')]};return db[_0xaa4b('0x40')]['count'](_0x890e1)[_0xaa4b('0x28')](function(_0x16766a){_0x2145e6[_0xaa4b('0x21')]=_0x16766a;if(_0x10fe2d[_0xaa4b('0x33')][_0xaa4b('0x41')]){_0x3a7558['include']=[{'all':!![]}];}return db[_0xaa4b('0x40')][_0xaa4b('0x42')](_0x3a7558);})['then'](function(_0x2a8933){_0x2145e6[_0xaa4b('0x43')]=_0x2a8933;return _0x2145e6;})[_0xaa4b('0x28')](respondWithFilteredResult(_0x1dca3e,_0x3a7558))['catch'](handleError(_0x1dca3e,null));};exports[_0xaa4b('0x44')]=function(_0x1edfe1,_0x6bf815){var _0x1cd1c={'raw':!![],'where':{'id':_0x1edfe1[_0xaa4b('0x45')]['id']}},_0x417ce6={};_0x417ce6[_0xaa4b('0x31')]=_[_0xaa4b('0x46')](db[_0xaa4b('0x40')][_0xaa4b('0x2f')]);_0x417ce6[_0xaa4b('0x33')]=_[_0xaa4b('0x46')](_0x1edfe1[_0xaa4b('0x33')]);_0x417ce6[_0xaa4b('0x34')]=_[_0xaa4b('0x35')](_0x417ce6['model'],_0x417ce6['query']);_0x1cd1c[_0xaa4b('0x37')]=_[_0xaa4b('0x35')](_0x417ce6[_0xaa4b('0x31')],qs[_0xaa4b('0x36')](_0x1edfe1[_0xaa4b('0x33')][_0xaa4b('0x36')]));_0x1cd1c[_0xaa4b('0x37')]=_0x1cd1c[_0xaa4b('0x37')][_0xaa4b('0x47')]?_0x1cd1c[_0xaa4b('0x37')]:_0x417ce6[_0xaa4b('0x31')];if(_0x1edfe1[_0xaa4b('0x33')][_0xaa4b('0x41')]){_0x1cd1c[_0xaa4b('0x48')]=[{'all':!![]}];}_0x1cd1c=_[_0xaa4b('0x3c')]({},_0x1cd1c,_0x1edfe1[_0xaa4b('0x3f')]);return db['VoiceMailMessage']['find'](_0x1cd1c)[_0xaa4b('0x28')](handleEntityNotFound(_0x6bf815,null))[_0xaa4b('0x28')](respondWithResult(_0x6bf815,null))[_0xaa4b('0x49')](handleError(_0x6bf815,null));};exports[_0xaa4b('0x4a')]=function(_0x2004fa,_0x5ac6fd){return db[_0xaa4b('0x40')][_0xaa4b('0x4a')](_0x2004fa[_0xaa4b('0x4b')],{})['then'](respondWithResult(_0x5ac6fd,0xc9))['catch'](handleError(_0x5ac6fd,null));};exports['update']=function(_0x1b5c86,_0x2cb78a){if(_0x1b5c86[_0xaa4b('0x4b')]['id']){delete _0x1b5c86[_0xaa4b('0x4b')]['id'];}return db['VoiceMailMessage']['find']({'where':{'id':_0x1b5c86['params']['id']}})[_0xaa4b('0x28')](handleEntityNotFound(_0x2cb78a,null))[_0xaa4b('0x28')](saveUpdates(_0x1b5c86['body'],null))[_0xaa4b('0x28')](respondWithResult(_0x2cb78a,null))[_0xaa4b('0x49')](handleError(_0x2cb78a,null));};exports[_0xaa4b('0x29')]=function(_0x341b55,_0x391f2e){return db[_0xaa4b('0x40')]['find']({'where':{'id':_0x341b55[_0xaa4b('0x45')]['id']}})[_0xaa4b('0x28')](handleEntityNotFound(_0x391f2e,null))[_0xaa4b('0x28')](removeEntity(_0x391f2e,null))['catch'](handleError(_0x391f2e,null));};exports[_0xaa4b('0x4c')]=function(_0x5dbba4,_0x1cef29,_0x21f10f){return db['VoiceMailMessage'][_0xaa4b('0x4d')]({'where':{'id':_0x5dbba4['params']['id']},'attributes':['id',_0xaa4b('0x4e'),_0xaa4b('0x4f')]})[_0xaa4b('0x28')](handleEntityNotFound(_0x1cef29,null))[_0xaa4b('0x28')](function(_0x5d3d9f){if(_0x5d3d9f){if(!_0x5d3d9f['recording']){throw new db[(_0xaa4b('0x50'))][(_0xaa4b('0x51'))](_0xaa4b('0x52'));}var _0x1a215b={'Content-Type':_0xaa4b('0x53'),'Content-Disposition':_0xaa4b('0x54')};if(_0x5d3d9f[_0xaa4b('0x4f')]){_0x1a215b[_0xaa4b('0x55')]=_0xaa4b('0x56')+_0x5d3d9f[_0xaa4b('0x4f')]+_0xaa4b('0x57');}_0x1cef29[_0xaa4b('0x23')](_0x1a215b);return _0x1cef29['send'](new Buffer(_0x5d3d9f[_0xaa4b('0x4e')]));}})[_0xaa4b('0x49')](handleError(_0x1cef29,null));};
\ No newline at end of file
+var _0x8786=['fields','length','hasOwnProperty','nolimit','order','sort','where','merge','map','filter','options','includeAll','findAll','catch','show','params','include','find','create','update','body','destroy','download','recording','msg_id','Sequelize','ValidationError','audio/wav','attachment','Content-Disposition','attachment;\x20filename=\x22','.wav\x22','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','undefined','count','limit','set','apply','reject','save','then','stack','name','send','VoiceMailMessage','rawAttributes','fieldName','type','key','model','differenceBy','query','keys','filters','intersection','attributes'];(function(_0x45b5df,_0x526a1d){var _0x5b6542=function(_0x49a1fa){while(--_0x49a1fa){_0x45b5df['push'](_0x45b5df['shift']());}};_0x5b6542(++_0x526a1d);}(_0x8786,0xcc));var _0x6878=function(_0x1d1779,_0x284147){_0x1d1779=_0x1d1779-0x0;var _0x2377e9=_0x8786[_0x1d1779];return _0x2377e9;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x6878('0x0'));var zipdir=require(_0x6878('0x1'));var jsonpatch=require(_0x6878('0x2'));var rp=require(_0x6878('0x3'));var moment=require(_0x6878('0x4'));var BPromise=require(_0x6878('0x5'));var Mustache=require(_0x6878('0x6'));var util=require('util');var path=require(_0x6878('0x7'));var sox=require(_0x6878('0x8'));var csv=require(_0x6878('0x9'));var ejs=require(_0x6878('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x6878('0xb'));var squel=require(_0x6878('0xc'));var crypto=require(_0x6878('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x6878('0xe'));var toCsv=require(_0x6878('0x9'));var querystring=require(_0x6878('0xf'));var Papa=require(_0x6878('0x10'));var Redis=require(_0x6878('0x11'));var authService=require(_0x6878('0x12'));var qs=require(_0x6878('0x13'));var as=require(_0x6878('0x14'));var hardwareService=require(_0x6878('0x15'));var logger=require(_0x6878('0x16'))(_0x6878('0x17'));var utils=require('../../config/utils');var config=require(_0x6878('0x18'));var licenseUtil=require(_0x6878('0x19'));var db=require(_0x6878('0x1a'))['db'];function respondWithStatusCode(_0x4f3217,_0x4c0d64){_0x4c0d64=_0x4c0d64||0xcc;return function(_0x38c006){if(_0x38c006){return _0x4f3217[_0x6878('0x1b')](_0x4c0d64);}return _0x4f3217['status'](_0x4c0d64)[_0x6878('0x1c')]();};}function respondWithResult(_0x1be2dc,_0x8a1ae9){_0x8a1ae9=_0x8a1ae9||0xc8;return function(_0x30952b){if(_0x30952b){return _0x1be2dc[_0x6878('0x1d')](_0x8a1ae9)['json'](_0x30952b);}};}function respondWithFilteredResult(_0x171fb5,_0x16ecfe){return function(_0x10e59f){if(_0x10e59f){var _0x2550c0=typeof _0x16ecfe[_0x6878('0x1e')]==='undefined'&&typeof _0x16ecfe['limit']===_0x6878('0x1f');var _0x400cbf=_0x10e59f['count'];var _0xba004f=_0x2550c0?0x0:_0x16ecfe[_0x6878('0x1e')];var _0x428a3f=_0x2550c0?_0x10e59f[_0x6878('0x20')]:_0x16ecfe[_0x6878('0x1e')]+_0x16ecfe[_0x6878('0x21')];var _0x16e233;if(_0x428a3f>=_0x400cbf){_0x428a3f=_0x400cbf;_0x16e233=0xc8;}else{_0x16e233=0xce;}_0x171fb5[_0x6878('0x1d')](_0x16e233);return _0x171fb5[_0x6878('0x22')]('Content-Range',_0xba004f+'-'+_0x428a3f+'/'+_0x400cbf)['json'](_0x10e59f);}return null;};}function patchUpdates(_0x223e32){return function(_0x248ec2){try{jsonpatch[_0x6878('0x23')](_0x248ec2,_0x223e32,!![]);}catch(_0x4aa441){return BPromise[_0x6878('0x24')](_0x4aa441);}return _0x248ec2[_0x6878('0x25')]();};}function saveUpdates(_0x316f2a,_0x5049e9){return function(_0x389112){if(_0x389112){return _0x389112['update'](_0x316f2a)[_0x6878('0x26')](function(_0x31b0ff){return _0x31b0ff;});}return null;};}function removeEntity(_0x2570ef,_0x50eda4){return function(_0x4801b4){if(_0x4801b4){return _0x4801b4['destroy']()[_0x6878('0x26')](function(){_0x2570ef[_0x6878('0x1d')](0xcc)[_0x6878('0x1c')]();});}};}function handleEntityNotFound(_0x43ccaa,_0xa6786d){return function(_0x1df646){if(!_0x1df646){_0x43ccaa[_0x6878('0x1b')](0x194);}return _0x1df646;};}function handleError(_0x1d305f,_0x15b570){_0x15b570=_0x15b570||0x1f4;return function(_0x293a19){logger['error'](_0x293a19[_0x6878('0x27')]);if(_0x293a19[_0x6878('0x28')]){delete _0x293a19[_0x6878('0x28')];}_0x1d305f[_0x6878('0x1d')](_0x15b570)[_0x6878('0x29')](_0x293a19);};}exports['index']=function(_0x8692ca,_0x3369f0){var _0x238707={},_0x1b2f47={},_0x5d4779={'count':0x0,'rows':[]};var _0x2c6734=_['map'](db[_0x6878('0x2a')][_0x6878('0x2b')],function(_0x1bc1fc){return{'name':_0x1bc1fc[_0x6878('0x2c')],'type':_0x1bc1fc[_0x6878('0x2d')][_0x6878('0x2e')]};});_0x1b2f47[_0x6878('0x2f')]=_[_0x6878('0x30')](_['map'](_0x2c6734,'name'),[_0x6878('0x28')]);_0x1b2f47[_0x6878('0x31')]=_[_0x6878('0x32')](_0x8692ca[_0x6878('0x31')]);_0x1b2f47[_0x6878('0x33')]=_[_0x6878('0x34')](_0x1b2f47[_0x6878('0x2f')],_0x1b2f47[_0x6878('0x31')]);_0x238707[_0x6878('0x35')]=_['intersection'](_0x1b2f47[_0x6878('0x2f')],qs['fields'](_0x8692ca['query'][_0x6878('0x36')]));_0x238707[_0x6878('0x35')]=_0x238707[_0x6878('0x35')][_0x6878('0x37')]?_0x238707[_0x6878('0x35')]:_0x1b2f47['model'];if(!_0x8692ca[_0x6878('0x31')][_0x6878('0x38')](_0x6878('0x39'))){_0x238707['limit']=qs['limit'](_0x8692ca[_0x6878('0x31')][_0x6878('0x21')]);_0x238707[_0x6878('0x1e')]=qs[_0x6878('0x1e')](_0x8692ca[_0x6878('0x31')][_0x6878('0x1e')]);}_0x238707[_0x6878('0x3a')]=qs['sort'](_0x8692ca[_0x6878('0x31')][_0x6878('0x3b')]);_0x238707[_0x6878('0x3c')]=qs[_0x6878('0x33')](_['pick'](_0x8692ca['query'],_0x1b2f47[_0x6878('0x33')]),_0x2c6734);if(_0x8692ca[_0x6878('0x31')]['filter']){_0x238707[_0x6878('0x3c')]=_[_0x6878('0x3d')](_0x238707[_0x6878('0x3c')],{'$or':_[_0x6878('0x3e')](_0x2c6734,function(_0x61350e){if(_0x61350e[_0x6878('0x2d')]!=='VIRTUAL'){var _0x13de64={};_0x13de64[_0x61350e[_0x6878('0x28')]]={'$like':'%'+_0x8692ca[_0x6878('0x31')][_0x6878('0x3f')]+'%'};return _0x13de64;}})});}_0x238707=_[_0x6878('0x3d')]({},_0x238707,_0x8692ca[_0x6878('0x40')]);var _0x122008={'where':_0x238707[_0x6878('0x3c')]};return db[_0x6878('0x2a')][_0x6878('0x20')](_0x122008)[_0x6878('0x26')](function(_0x3c5cfb){_0x5d4779[_0x6878('0x20')]=_0x3c5cfb;if(_0x8692ca['query'][_0x6878('0x41')]){_0x238707['include']=[{'all':!![]}];}return db['VoiceMailMessage'][_0x6878('0x42')](_0x238707);})[_0x6878('0x26')](function(_0x5bb55f){_0x5d4779['rows']=_0x5bb55f;return _0x5d4779;})[_0x6878('0x26')](respondWithFilteredResult(_0x3369f0,_0x238707))[_0x6878('0x43')](handleError(_0x3369f0,null));};exports[_0x6878('0x44')]=function(_0x5d236f,_0x41d2c6){var _0x4ff319={'raw':!![],'where':{'id':_0x5d236f[_0x6878('0x45')]['id']}},_0xe717c7={};_0xe717c7[_0x6878('0x2f')]=_[_0x6878('0x32')](db[_0x6878('0x2a')]['rawAttributes']);_0xe717c7[_0x6878('0x31')]=_[_0x6878('0x32')](_0x5d236f['query']);_0xe717c7[_0x6878('0x33')]=_[_0x6878('0x34')](_0xe717c7[_0x6878('0x2f')],_0xe717c7[_0x6878('0x31')]);_0x4ff319[_0x6878('0x35')]=_[_0x6878('0x34')](_0xe717c7[_0x6878('0x2f')],qs[_0x6878('0x36')](_0x5d236f['query'][_0x6878('0x36')]));_0x4ff319[_0x6878('0x35')]=_0x4ff319[_0x6878('0x35')][_0x6878('0x37')]?_0x4ff319[_0x6878('0x35')]:_0xe717c7['model'];if(_0x5d236f[_0x6878('0x31')][_0x6878('0x41')]){_0x4ff319[_0x6878('0x46')]=[{'all':!![]}];}_0x4ff319=_['merge']({},_0x4ff319,_0x5d236f[_0x6878('0x40')]);return db['VoiceMailMessage'][_0x6878('0x47')](_0x4ff319)['then'](handleEntityNotFound(_0x41d2c6,null))[_0x6878('0x26')](respondWithResult(_0x41d2c6,null))['catch'](handleError(_0x41d2c6,null));};exports[_0x6878('0x48')]=function(_0x2d72f7,_0x159038){return db['VoiceMailMessage'][_0x6878('0x48')](_0x2d72f7['body'],{})[_0x6878('0x26')](respondWithResult(_0x159038,0xc9))[_0x6878('0x43')](handleError(_0x159038,null));};exports[_0x6878('0x49')]=function(_0x20f54e,_0x5533b7){if(_0x20f54e[_0x6878('0x4a')]['id']){delete _0x20f54e[_0x6878('0x4a')]['id'];}return db[_0x6878('0x2a')][_0x6878('0x47')]({'where':{'id':_0x20f54e[_0x6878('0x45')]['id']}})[_0x6878('0x26')](handleEntityNotFound(_0x5533b7,null))['then'](saveUpdates(_0x20f54e[_0x6878('0x4a')],null))[_0x6878('0x26')](respondWithResult(_0x5533b7,null))[_0x6878('0x43')](handleError(_0x5533b7,null));};exports[_0x6878('0x4b')]=function(_0x113455,_0x262882){return db['VoiceMailMessage'][_0x6878('0x47')]({'where':{'id':_0x113455[_0x6878('0x45')]['id']}})['then'](handleEntityNotFound(_0x262882,null))[_0x6878('0x26')](removeEntity(_0x262882,null))[_0x6878('0x43')](handleError(_0x262882,null));};exports[_0x6878('0x4c')]=function(_0x1c15f9,_0x24ef7e,_0x1edebf){return db[_0x6878('0x2a')]['find']({'where':{'id':_0x1c15f9[_0x6878('0x45')]['id']},'attributes':['id',_0x6878('0x4d'),_0x6878('0x4e')]})[_0x6878('0x26')](handleEntityNotFound(_0x24ef7e,null))[_0x6878('0x26')](function(_0x2931b9){if(_0x2931b9){if(!_0x2931b9['recording']){throw new db[(_0x6878('0x4f'))][(_0x6878('0x50'))]('VoiceMailMessage\x20not\x20found');}var _0x326757={'Content-Type':_0x6878('0x51'),'Content-Disposition':_0x6878('0x52')};if(_0x2931b9[_0x6878('0x4e')]){_0x326757[_0x6878('0x53')]=_0x6878('0x54')+_0x2931b9[_0x6878('0x4e')]+_0x6878('0x55');}_0x24ef7e['set'](_0x326757);return _0x24ef7e[_0x6878('0x29')](new Buffer(_0x2931b9['recording']));}})['catch'](handleError(_0x24ef7e,null));};
\ No newline at end of file
index 2fbef89..a4e17ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9dcc=['../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./voiceMailMessage.attributes','exports','define','VoiceMailMessage','dir','lodash','util'];(function(_0x2b9235,_0x34f14e){var _0x17ed9d=function(_0x13c4fa){while(--_0x13c4fa){_0x2b9235['push'](_0x2b9235['shift']());}};_0x17ed9d(++_0x34f14e);}(_0x9dcc,0xfa));var _0xc9dc=function(_0x5a1a5b,_0x1c8fb9){_0x5a1a5b=_0x5a1a5b-0x0;var _0x36eccd=_0x9dcc[_0x5a1a5b];return _0x36eccd;};'use strict';var _=require(_0xc9dc('0x0'));var util=require(_0xc9dc('0x1'));var logger=require(_0xc9dc('0x2'))(_0xc9dc('0x3'));var moment=require(_0xc9dc('0x4'));var BPromise=require(_0xc9dc('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xc9dc('0x6'));var rimraf=require(_0xc9dc('0x7'));var config=require(_0xc9dc('0x8'));var attributes=require(_0xc9dc('0x9'));module[_0xc9dc('0xa')]=function(_0x58a14d,_0xd32739){return _0x58a14d[_0xc9dc('0xb')](_0xc9dc('0xc'),attributes,{'tableName':'voice_voicemail_messages','paranoid':![],'indexes':[{'name':_0xc9dc('0xd'),'fields':['dir']}],'timestamps':![]});};
\ No newline at end of file
+var _0xc1f6=['bluebird','request-promise','path','rimraf','../../config/environment','./voiceMailMessage.attributes','dir','util','../../config/logger','api','moment'];(function(_0x21f9e2,_0x4d4b88){var _0x4d0032=function(_0x4911a7){while(--_0x4911a7){_0x21f9e2['push'](_0x21f9e2['shift']());}};_0x4d0032(++_0x4d4b88);}(_0xc1f6,0x125));var _0x6c1f=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc1f6[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0x6c1f('0x0'));var logger=require(_0x6c1f('0x1'))(_0x6c1f('0x2'));var moment=require(_0x6c1f('0x3'));var BPromise=require(_0x6c1f('0x4'));var rp=require(_0x6c1f('0x5'));var fs=require('fs');var path=require(_0x6c1f('0x6'));var rimraf=require(_0x6c1f('0x7'));var config=require(_0x6c1f('0x8'));var attributes=require(_0x6c1f('0x9'));module['exports']=function(_0x3ce581,_0x269908){return _0x3ce581['define']('VoiceMailMessage',attributes,{'tableName':'voice_voicemail_messages','paranoid':![],'indexes':[{'name':'dir','fields':[_0x6c1f('0xa')]}],'timestamps':![]});};
\ No newline at end of file
index f3aa49d..e9f521e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0308=['VoiceMailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','request','then','VoiceMailMessage,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x0308,0x74));var _0x8030=function(_0x543460,_0x2c3426){_0x543460=_0x543460-0x0;var _0x1a8fc9=_0x0308[_0x543460];return _0x1a8fc9;};'use strict';var _=require(_0x8030('0x0'));var util=require('util');var moment=require(_0x8030('0x1'));var BPromise=require(_0x8030('0x2'));var rs=require(_0x8030('0x3'));var fs=require('fs');var Redis=require(_0x8030('0x4'));var db=require(_0x8030('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x8030('0x6'));var config=require(_0x8030('0x7'));var jayson=require(_0x8030('0x8'));var client=jayson[_0x8030('0x9')][_0x8030('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x50d168,_0x3e4d20,_0x2bf714){return new BPromise(function(_0x47d0e1,_0x578d84){return client[_0x8030('0xb')](_0x50d168,_0x2bf714)[_0x8030('0xc')](function(_0x4b7ed0){logger['info'](_0x8030('0xd'),_0x3e4d20,_0x8030('0xe'));logger[_0x8030('0xf')](_0x8030('0x10'),_0x3e4d20,'request\x20sent',JSON[_0x8030('0x11')](_0x4b7ed0));if(_0x4b7ed0[_0x8030('0x12')]){if(_0x4b7ed0[_0x8030('0x12')][_0x8030('0x13')]===0x1f4){logger[_0x8030('0x12')](_0x8030('0xd'),_0x3e4d20,_0x4b7ed0['error'][_0x8030('0x14')]);return _0x578d84(_0x4b7ed0[_0x8030('0x12')][_0x8030('0x14')]);}logger[_0x8030('0x12')](_0x8030('0xd'),_0x3e4d20,_0x4b7ed0[_0x8030('0x12')][_0x8030('0x14')]);return _0x47d0e1(_0x4b7ed0[_0x8030('0x12')]['message']);}else{logger[_0x8030('0x15')](_0x8030('0xd'),_0x3e4d20,_0x8030('0xe'));_0x47d0e1(_0x4b7ed0['result']['message']);}})['catch'](function(_0x2c473d){logger[_0x8030('0x12')](_0x8030('0xd'),_0x3e4d20,_0x2c473d);_0x578d84(_0x2c473d);});});}
\ No newline at end of file
+var _0xdb82=['code','message','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','http','request','then','info','VoiceMailMessage,\x20%s,\x20%s','request\x20sent','debug','VoiceMailMessage,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0xdb82,0x18f));var _0x2db8=function(_0x4212d9,_0x44eedd){_0x4212d9=_0x4212d9-0x0;var _0x5c3cac=_0xdb82[_0x4212d9];return _0x5c3cac;};'use strict';var _=require(_0x2db8('0x0'));var util=require(_0x2db8('0x1'));var moment=require('moment');var BPromise=require(_0x2db8('0x2'));var rs=require(_0x2db8('0x3'));var fs=require('fs');var Redis=require(_0x2db8('0x4'));var db=require(_0x2db8('0x5'))['db'];var utils=require(_0x2db8('0x6'));var logger=require('../../config/logger')(_0x2db8('0x7'));var config=require('../../config/environment');var jayson=require(_0x2db8('0x8'));var client=jayson['client'][_0x2db8('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x88e48a,_0x4efb97,_0x2ddbc7){return new BPromise(function(_0x13e244,_0x148c64){return client[_0x2db8('0xa')](_0x88e48a,_0x2ddbc7)[_0x2db8('0xb')](function(_0x72aec2){logger[_0x2db8('0xc')](_0x2db8('0xd'),_0x4efb97,_0x2db8('0xe'));logger[_0x2db8('0xf')](_0x2db8('0x10'),_0x4efb97,_0x2db8('0xe'),JSON[_0x2db8('0x11')](_0x72aec2));if(_0x72aec2[_0x2db8('0x12')]){if(_0x72aec2[_0x2db8('0x12')][_0x2db8('0x13')]===0x1f4){logger['error'](_0x2db8('0xd'),_0x4efb97,_0x72aec2[_0x2db8('0x12')][_0x2db8('0x14')]);return _0x148c64(_0x72aec2[_0x2db8('0x12')]['message']);}logger['error']('VoiceMailMessage,\x20%s,\x20%s',_0x4efb97,_0x72aec2[_0x2db8('0x12')][_0x2db8('0x14')]);return _0x13e244(_0x72aec2['error'][_0x2db8('0x14')]);}else{logger[_0x2db8('0xc')]('VoiceMailMessage,\x20%s,\x20%s',_0x4efb97,_0x2db8('0xe'));_0x13e244(_0x72aec2['result'][_0x2db8('0x14')]);}})[_0x2db8('0x15')](function(_0x3d7b12){logger['error']('VoiceMailMessage,\x20%s,\x20%s',_0x4efb97,_0x3d7b12);_0x148c64(_0x3d7b12);});});}
\ No newline at end of file
index 4227ffc..9192669 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x02c3=['update','delete','/:id','destroy','/:id/sounds/:id2','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id/sounds','getSounds','post','addSound','put'];(function(_0x3b08f6,_0x287d40){var _0x24dcfc=function(_0x25e57f){while(--_0x25e57f){_0x3b08f6['push'](_0x3b08f6['shift']());}};_0x24dcfc(++_0x287d40);}(_0x02c3,0x8a));var _0x302c=function(_0x2f7bbc,_0x24cedb){_0x2f7bbc=_0x2f7bbc-0x0;var _0x4bd860=_0x02c3[_0x2f7bbc];return _0x4bd860;};'use strict';var multer=require(_0x302c('0x0'));var util=require('util');var path=require(_0x302c('0x1'));var timeout=require(_0x302c('0x2'));var express=require(_0x302c('0x3'));var router=express[_0x302c('0x4')]();var fs_extra=require(_0x302c('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x302c('0x6'));var config=require(_0x302c('0x7'));var controller=require('./voiceMusicOnHold.controller');router[_0x302c('0x8')]('/',auth[_0x302c('0x9')](),controller[_0x302c('0xa')]);router[_0x302c('0x8')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0x302c('0x8')](_0x302c('0xb'),auth[_0x302c('0x9')](),controller[_0x302c('0xc')]);router[_0x302c('0xd')]('/',auth[_0x302c('0x9')](),controller['create']);router[_0x302c('0xd')](_0x302c('0xb'),auth['isAuthenticated'](),controller[_0x302c('0xe')]);router[_0x302c('0xf')]('/:id',auth[_0x302c('0x9')](),controller[_0x302c('0x10')]);router[_0x302c('0x11')](_0x302c('0x12'),auth[_0x302c('0x9')](),controller[_0x302c('0x13')]);router[_0x302c('0x11')](_0x302c('0x14'),auth[_0x302c('0x9')](),controller['removeSound']);module[_0x302c('0x15')]=router;
\ No newline at end of file
+var _0xa966=['addSound','put','update','delete','destroy','/:id/sounds/:id2','exports','path','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','getSounds','post','create','/:id/sounds'];(function(_0x299392,_0x3eb1f9){var _0x4a0f4f=function(_0x4502b6){while(--_0x4502b6){_0x299392['push'](_0x299392['shift']());}};_0x4a0f4f(++_0x3eb1f9);}(_0xa966,0x1d5));var _0x6a96=function(_0x5c416e,_0x469158){_0x5c416e=_0x5c416e-0x0;var _0x4f4f03=_0xa966[_0x5c416e];return _0x4f4f03;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x6a96('0x0'));var timeout=require(_0x6a96('0x1'));var express=require(_0x6a96('0x2'));var router=express['Router']();var fs_extra=require(_0x6a96('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x6a96('0x4'));var config=require(_0x6a96('0x5'));var controller=require('./voiceMusicOnHold.controller');router[_0x6a96('0x6')]('/',auth[_0x6a96('0x7')](),controller[_0x6a96('0x8')]);router[_0x6a96('0x6')](_0x6a96('0x9'),auth[_0x6a96('0x7')](),controller[_0x6a96('0xa')]);router[_0x6a96('0x6')]('/:id/sounds',auth['isAuthenticated'](),controller[_0x6a96('0xb')]);router[_0x6a96('0xc')]('/',auth[_0x6a96('0x7')](),controller[_0x6a96('0xd')]);router['post'](_0x6a96('0xe'),auth[_0x6a96('0x7')](),controller[_0x6a96('0xf')]);router[_0x6a96('0x10')](_0x6a96('0x9'),auth[_0x6a96('0x7')](),controller[_0x6a96('0x11')]);router[_0x6a96('0x12')](_0x6a96('0x9'),auth['isAuthenticated'](),controller[_0x6a96('0x13')]);router['delete'](_0x6a96('0x14'),auth['isAuthenticated'](),controller['removeSound']);module[_0x6a96('0x15')]=router;
\ No newline at end of file
index f40d067..2cc70d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3da0=['sequelize','STRING','name','custom','quietmp3nb','quietmp3','mp3','TIMESTAMP','BOOLEAN'];(function(_0x92462d,_0x3952ad){var _0xbc1e06=function(_0x14dfa4){while(--_0x14dfa4){_0x92462d['push'](_0x92462d['shift']());}};_0xbc1e06(++_0x3952ad);}(_0x3da0,0xb4));var _0x03da=function(_0x5a26db,_0x2c5ccd){_0x5a26db=_0x5a26db-0x0;var _0x4619dd=_0x3da0[_0x5a26db];return _0x4619dd;};'use strict';var Sequelize=require(_0x03da('0x0'));module['exports']={'name':{'type':Sequelize[_0x03da('0x1')],'allowNull':![],'unique':_0x03da('0x2')},'mode':{'type':Sequelize['ENUM'](_0x03da('0x3'),'files','mp3nb',_0x03da('0x4'),_0x03da('0x5'),_0x03da('0x6')),'allowNull':!![],'defaultValue':'files'},'directory':{'type':Sequelize['STRING'],'allowNull':!![]},'application':{'type':Sequelize['STRING'],'allowNull':!![]},'digit':{'type':Sequelize[_0x03da('0x1')],'allowNull':!![]},'sort':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':'alpha'},'format':{'type':Sequelize['STRING'],'allowNull':!![]},'stamp':{'type':_0x03da('0x7')},'defaultEntry':{'type':Sequelize[_0x03da('0x8')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x34e2=['ENUM','custom','files','mp3nb','quietmp3nb','quietmp3','STRING','alpha','TIMESTAMP','BOOLEAN','sequelize','exports','name'];(function(_0x5a2896,_0x1a4c6f){var _0x104ccf=function(_0x28b0ef){while(--_0x28b0ef){_0x5a2896['push'](_0x5a2896['shift']());}};_0x104ccf(++_0x1a4c6f);}(_0x34e2,0x14f));var _0x234e=function(_0x3afaa6,_0x20bae5){_0x3afaa6=_0x3afaa6-0x0;var _0x532cef=_0x34e2[_0x3afaa6];return _0x532cef;};'use strict';var Sequelize=require(_0x234e('0x0'));module[_0x234e('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x234e('0x2')},'mode':{'type':Sequelize[_0x234e('0x3')](_0x234e('0x4'),_0x234e('0x5'),_0x234e('0x6'),_0x234e('0x7'),_0x234e('0x8'),'mp3'),'allowNull':!![],'defaultValue':_0x234e('0x5')},'directory':{'type':Sequelize[_0x234e('0x9')],'allowNull':!![]},'application':{'type':Sequelize[_0x234e('0x9')],'allowNull':!![]},'digit':{'type':Sequelize[_0x234e('0x9')],'allowNull':!![]},'sort':{'type':Sequelize[_0x234e('0x9')],'allowNull':!![],'defaultValue':_0x234e('0xa')},'format':{'type':Sequelize[_0x234e('0x9')],'allowNull':!![]},'stamp':{'type':_0x234e('0xb')},'defaultEntry':{'type':Sequelize[_0x234e('0xc')],'defaultValue':0x0}};
\ No newline at end of file
index 1933f82..ab50916 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x439a=['../../config/license/util','../../mysqldb','sendStatus','status','undefined','limit','offset','set','Content-Range','json','apply','reject','save','update','then','destroy','MusicOnHolds','end','error','stack','name','index','map','rawAttributes','fieldName','type','key','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','VoiceMusicOnHold','count','include','findAll','rows','show','model','includeAll','find','catch','body','create','mode','files','directory','join','root','server/files/moh','mkdirSync','0777','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','forEach','unlinkSync','rmdirSync','Sequelize','ValidationError','message','sequelize','transaction','addSound','Sound','findOne','save_name','converted_format','createdAt','%s.%s','basename','extname','symlinkSync','removeSound','id2','getSounds','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','lodash','squel','desk.js','querystring','papaparse','ioredis','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment'];(function(_0x22ff18,_0x366f17){var _0x7fc5=function(_0x248aa0){while(--_0x248aa0){_0x22ff18['push'](_0x22ff18['shift']());}};_0x7fc5(++_0x366f17);}(_0x439a,0x144));var _0xa439=function(_0x3a2147,_0x536e69){_0x3a2147=_0x3a2147-0x0;var _0x158499=_0x439a[_0x3a2147];return _0x158499;};'use strict';var emlformat=require(_0xa439('0x0'));var rimraf=require(_0xa439('0x1'));var zipdir=require(_0xa439('0x2'));var jsonpatch=require(_0xa439('0x3'));var rp=require(_0xa439('0x4'));var moment=require(_0xa439('0x5'));var BPromise=require(_0xa439('0x6'));var Mustache=require(_0xa439('0x7'));var util=require('util');var path=require('path');var sox=require(_0xa439('0x8'));var csv=require(_0xa439('0x9'));var ejs=require(_0xa439('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xa439('0xb'));var squel=require(_0xa439('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xa439('0xd'));var toCsv=require(_0xa439('0x9'));var querystring=require(_0xa439('0xe'));var Papa=require(_0xa439('0xf'));var Redis=require(_0xa439('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa439('0x11'));var logger=require(_0xa439('0x12'))('api');var utils=require(_0xa439('0x13'));var config=require(_0xa439('0x14'));var licenseUtil=require(_0xa439('0x15'));var db=require(_0xa439('0x16'))['db'];function respondWithStatusCode(_0x328c7c,_0x1d0adb){_0x1d0adb=_0x1d0adb||0xcc;return function(_0x50f69f){if(_0x50f69f){return _0x328c7c[_0xa439('0x17')](_0x1d0adb);}return _0x328c7c[_0xa439('0x18')](_0x1d0adb)['end']();};}function respondWithResult(_0xab1dc8,_0x504848){_0x504848=_0x504848||0xc8;return function(_0x4f62e0){if(_0x4f62e0){return _0xab1dc8[_0xa439('0x18')](_0x504848)['json'](_0x4f62e0);}};}function respondWithFilteredResult(_0x155971,_0x4fc534){return function(_0x7c0677){if(_0x7c0677){var _0x560e6e=typeof _0x4fc534['offset']===_0xa439('0x19')&&typeof _0x4fc534[_0xa439('0x1a')]===_0xa439('0x19');var _0x587a50=_0x7c0677['count'];var _0x58aa07=_0x560e6e?0x0:_0x4fc534[_0xa439('0x1b')];var _0x2da9c9=_0x560e6e?_0x7c0677['count']:_0x4fc534[_0xa439('0x1b')]+_0x4fc534[_0xa439('0x1a')];var _0xcbee84;if(_0x2da9c9>=_0x587a50){_0x2da9c9=_0x587a50;_0xcbee84=0xc8;}else{_0xcbee84=0xce;}_0x155971[_0xa439('0x18')](_0xcbee84);return _0x155971[_0xa439('0x1c')](_0xa439('0x1d'),_0x58aa07+'-'+_0x2da9c9+'/'+_0x587a50)[_0xa439('0x1e')](_0x7c0677);}return null;};}function patchUpdates(_0x2e82ad){return function(_0x1b41ca){try{jsonpatch[_0xa439('0x1f')](_0x1b41ca,_0x2e82ad,!![]);}catch(_0x4694e8){return BPromise[_0xa439('0x20')](_0x4694e8);}return _0x1b41ca[_0xa439('0x21')]();};}function saveUpdates(_0x15485a,_0x4064ae){return function(_0x2ea105){if(_0x2ea105){return _0x2ea105[_0xa439('0x22')](_0x15485a)[_0xa439('0x23')](function(_0x2d3de1){return _0x2d3de1;});}return null;};}function removeEntity(_0x112c84,_0x43c3c8){return function(_0x3c86a5){if(_0x3c86a5){return _0x3c86a5[_0xa439('0x24')]()[_0xa439('0x23')](function(){var _0x2f65ab=_0x3c86a5['get']({'plain':!![]});var _0x5493bf=_0xa439('0x25');return db['UserProfileResource'][_0xa439('0x24')]({'where':{'type':_0x5493bf,'resourceId':_0x2f65ab['id']}})[_0xa439('0x23')](function(){return _0x3c86a5;});})[_0xa439('0x23')](function(){_0x112c84['status'](0xcc)[_0xa439('0x26')]();});}};}function handleEntityNotFound(_0x22eee8,_0x26d975){return function(_0x10f2af){if(!_0x10f2af){_0x22eee8[_0xa439('0x17')](0x194);}return _0x10f2af;};}function handleError(_0x1c5ea6,_0xf99650){_0xf99650=_0xf99650||0x1f4;return function(_0x44fc78){logger[_0xa439('0x27')](_0x44fc78[_0xa439('0x28')]);if(_0x44fc78[_0xa439('0x29')]){delete _0x44fc78[_0xa439('0x29')];}_0x1c5ea6[_0xa439('0x18')](_0xf99650)['send'](_0x44fc78);};}exports[_0xa439('0x2a')]=function(_0x4484a9,_0x3f6fc2){var _0x21e120={},_0x1a2988={},_0xb3fff6={'count':0x0,'rows':[]};var _0x428bf7=_[_0xa439('0x2b')](db['VoiceMusicOnHold'][_0xa439('0x2c')],function(_0x8f1e42){return{'name':_0x8f1e42[_0xa439('0x2d')],'type':_0x8f1e42[_0xa439('0x2e')][_0xa439('0x2f')]};});_0x1a2988['model']=_['map'](_0x428bf7,'name');_0x1a2988[_0xa439('0x30')]=_[_0xa439('0x31')](_0x4484a9['query']);_0x1a2988[_0xa439('0x32')]=_[_0xa439('0x33')](_0x1a2988['model'],_0x1a2988[_0xa439('0x30')]);_0x21e120[_0xa439('0x34')]=_[_0xa439('0x33')](_0x1a2988['model'],qs['fields'](_0x4484a9[_0xa439('0x30')][_0xa439('0x35')]));_0x21e120[_0xa439('0x34')]=_0x21e120[_0xa439('0x34')][_0xa439('0x36')]?_0x21e120[_0xa439('0x34')]:_0x1a2988['model'];if(!_0x4484a9[_0xa439('0x30')][_0xa439('0x37')](_0xa439('0x38'))){_0x21e120['limit']=qs[_0xa439('0x1a')](_0x4484a9[_0xa439('0x30')]['limit']);_0x21e120['offset']=qs['offset'](_0x4484a9['query']['offset']);}_0x21e120[_0xa439('0x39')]=qs['sort'](_0x4484a9[_0xa439('0x30')]['sort']);delete _0x4484a9[_0xa439('0x30')][_0xa439('0x3a')];_0x21e120[_0xa439('0x3b')]=qs[_0xa439('0x32')](_[_0xa439('0x3c')](_0x4484a9[_0xa439('0x30')],_0x1a2988[_0xa439('0x32')]),_0x428bf7);if(_0x4484a9[_0xa439('0x30')]['filter']){_0x21e120[_0xa439('0x3b')]=_[_0xa439('0x3d')](_0x21e120[_0xa439('0x3b')],{'$or':_[_0xa439('0x2b')](_0x428bf7,function(_0x5978f5){if(_0x5978f5[_0xa439('0x2e')]!==_0xa439('0x3e')){var _0x3b6156={};_0x3b6156[_0x5978f5[_0xa439('0x29')]]={'$like':'%'+_0x4484a9['query'][_0xa439('0x3f')]+'%'};return _0x3b6156;}})});}_0x21e120=_['merge']({},_0x21e120,_0x4484a9[_0xa439('0x40')]);var _0x1c3df3={'where':_0x21e120['where']};return db[_0xa439('0x41')][_0xa439('0x42')](_0x1c3df3)[_0xa439('0x23')](function(_0x36b5ca){_0xb3fff6['count']=_0x36b5ca;if(_0x4484a9[_0xa439('0x30')]['includeAll']){_0x21e120[_0xa439('0x43')]=[{'all':!![]}];}return db[_0xa439('0x41')][_0xa439('0x44')](_0x21e120);})['then'](function(_0x3b6a44){_0xb3fff6[_0xa439('0x45')]=_0x3b6a44;return _0xb3fff6;})[_0xa439('0x23')](respondWithFilteredResult(_0x3f6fc2,_0x21e120))['catch'](handleError(_0x3f6fc2,null));};exports[_0xa439('0x46')]=function(_0x1ece24,_0x4bf8b6){var _0x3f4ef5={'raw':![],'where':{'id':_0x1ece24['params']['id']}},_0x40f26f={};_0x40f26f[_0xa439('0x47')]=_[_0xa439('0x31')](db[_0xa439('0x41')][_0xa439('0x2c')]);_0x40f26f[_0xa439('0x30')]=_[_0xa439('0x31')](_0x1ece24[_0xa439('0x30')]);_0x40f26f['filters']=_[_0xa439('0x33')](_0x40f26f[_0xa439('0x47')],_0x40f26f[_0xa439('0x30')]);_0x3f4ef5[_0xa439('0x34')]=_['intersection'](_0x40f26f['model'],qs[_0xa439('0x35')](_0x1ece24[_0xa439('0x30')][_0xa439('0x35')]));_0x3f4ef5[_0xa439('0x34')]=_0x3f4ef5[_0xa439('0x34')]['length']?_0x3f4ef5['attributes']:_0x40f26f[_0xa439('0x47')];if(_0x1ece24[_0xa439('0x30')][_0xa439('0x48')]){_0x3f4ef5[_0xa439('0x43')]=[{'all':!![]}];}_0x3f4ef5=_[_0xa439('0x3d')]({},_0x3f4ef5,_0x1ece24[_0xa439('0x40')]);return db[_0xa439('0x41')][_0xa439('0x49')](_0x3f4ef5)['then'](handleEntityNotFound(_0x4bf8b6,null))[_0xa439('0x23')](respondWithResult(_0x4bf8b6,null))[_0xa439('0x4a')](handleError(_0x4bf8b6,null));};exports[_0xa439('0x22')]=function(_0x474479,_0x3ed2a2){if(_0x474479[_0xa439('0x4b')]['id']){delete _0x474479[_0xa439('0x4b')]['id'];}return db[_0xa439('0x41')][_0xa439('0x49')]({'where':{'id':_0x474479['params']['id']}})[_0xa439('0x23')](handleEntityNotFound(_0x3ed2a2,null))[_0xa439('0x23')](saveUpdates(_0x474479['body'],null))[_0xa439('0x23')](respondWithResult(_0x3ed2a2,null))['catch'](handleError(_0x3ed2a2,null));};exports[_0xa439('0x4c')]=function(_0x4b5bc1,_0x1c38be,_0xd79c61){return db['sequelize']['transaction'](function(_0x5a108a){if(_0x4b5bc1[_0xa439('0x4b')][_0xa439('0x4d')]===_0xa439('0x4e')){_0x4b5bc1[_0xa439('0x4b')][_0xa439('0x4f')]=path[_0xa439('0x50')](config[_0xa439('0x51')],_0xa439('0x52'),_0x4b5bc1[_0xa439('0x4b')][_0xa439('0x29')]);}return db[_0xa439('0x41')][_0xa439('0x4c')](_0x4b5bc1[_0xa439('0x4b')],{'transaction':_0x5a108a})[_0xa439('0x23')](function(_0x2024e0){if(_0x4b5bc1[_0xa439('0x4b')]['mode']==='files'){fs[_0xa439('0x53')](_0x2024e0[_0xa439('0x4f')],parseInt(_0xa439('0x54'),0x8));}var _0x277e0d=_0x4b5bc1['user'][_0xa439('0x55')]({'plain':!![]});if(!_0x277e0d)throw new Error(_0xa439('0x56'));if(_0x277e0d['role']===_0xa439('0x57')){var _0x150a66=_0x2024e0[_0xa439('0x55')]({'plain':!![]});return db[_0xa439('0x58')][_0xa439('0x49')]({'where':{'name':_0xa439('0x25'),'userProfileId':_0x277e0d[_0xa439('0x59')]},'raw':!![]})[_0xa439('0x23')](function(_0x33340b){if(_0x33340b&&_0x33340b[_0xa439('0x5a')]===0x0){return db[_0xa439('0x5b')]['create']({'name':_0x150a66['name'],'resourceId':_0x150a66['id'],'type':_0x33340b[_0xa439('0x29')],'sectionId':_0x33340b['id']},{})[_0xa439('0x23')](function(){return _0x2024e0;});}else{return _0x2024e0;}})[_0xa439('0x4a')](function(_0x5564c4){logger['error'](_0xa439('0x5c'),_0x5564c4);});}return _0x2024e0;});})['then'](respondWithResult(_0x1c38be,0xc9))[_0xa439('0x4a')](handleError(_0x1c38be,null));};exports[_0xa439('0x24')]=function(_0x53ee0b,_0x17dd41,_0x35cf0f){var _0x49d8e3;return db[_0xa439('0x41')]['find']({'where':{'id':_0x53ee0b[_0xa439('0x5d')]['id']}})['then'](function(_0x1f730d){if(_0x1f730d){return db['sequelize']['transaction'](function(_0x1c97b0){return _0x1f730d['destroy']({'transaction':_0x1c97b0,'raw':!![]})[_0xa439('0x23')](function(_0x129437){if(_0x129437[_0xa439('0x4f')]){fs['readdirSync'](_0x129437[_0xa439('0x4f')])[_0xa439('0x5e')](function(_0x4db95a){fs[_0xa439('0x5f')](path[_0xa439('0x50')](_0x129437['directory'],_0x4db95a));});fs[_0xa439('0x60')](_0x129437[_0xa439('0x4f')]);}return _0x129437;});})[_0xa439('0x4a')](function(_0x3de850){throw new db[(_0xa439('0x61'))][(_0xa439('0x62'))](_0x3de850[_0xa439('0x63')]);});}})[_0xa439('0x23')](handleEntityNotFound(_0x17dd41,null))['then'](removeEntity(_0x17dd41,null))[_0xa439('0x4a')](handleError(_0x17dd41,null));};exports['addSound']=function(_0x45c322,_0x499e51,_0xc8f28b){return db[_0xa439('0x64')][_0xa439('0x65')](function(_0x204fce){var _0x2417a9;return db[_0xa439('0x41')]['find']({'where':{'id':_0x45c322[_0xa439('0x5d')]['id']}})['then'](function(_0x104752){if(_0x104752){_0x2417a9=_0x104752;return _0x104752[_0xa439('0x66')](_0x45c322[_0xa439('0x4b')]['id'],{'transaction':_0x204fce});}})['then'](function(_0x239466){if(_0x239466){return db[_0xa439('0x67')][_0xa439('0x68')]({'where':{'id':_0x45c322['body']['id']},'attributes':['id',_0xa439('0x29'),_0xa439('0x69'),_0xa439('0x6a'),_0xa439('0x6b')],'raw':!![]});}})[_0xa439('0x23')](function(_0x149bb1){if(_0x149bb1){var _0x2b748b=path[_0xa439('0x50')](config[_0xa439('0x51')],'server/files/sounds/converted',util['format'](_0xa439('0x6c'),path[_0xa439('0x6d')](_0x149bb1['save_name'],path[_0xa439('0x6e')](_0x149bb1[_0xa439('0x69')])),_0x149bb1['converted_format']));var _0x3fb425=path[_0xa439('0x50')](config[_0xa439('0x51')],_0xa439('0x52'),_0x2417a9['name'],util['format'](_0xa439('0x6c'),_0x149bb1[_0xa439('0x29')],_0x149bb1[_0xa439('0x6a')]));fs[_0xa439('0x6f')](_0x2b748b,_0x3fb425);return _0x149bb1;}})[_0xa439('0x4a')](function(_0x4a2575){throw new db['Sequelize'][(_0xa439('0x62'))](_0x4a2575[_0xa439('0x63')]);});})[_0xa439('0x23')](handleEntityNotFound(_0x499e51,null))[_0xa439('0x23')](respondWithResult(_0x499e51,0xc9))['catch'](handleError(_0x499e51,null));};exports['removeSound']=function(_0x3f3439,_0x373bd5,_0x1c3bcc){return db[_0xa439('0x64')]['transaction'](function(_0x1877cb){var _0x25cef3;return db[_0xa439('0x41')][_0xa439('0x68')]({'where':{'id':_0x3f3439[_0xa439('0x5d')]['id']}})[_0xa439('0x23')](handleEntityNotFound(_0x373bd5,null))[_0xa439('0x23')](function(_0x55a921){if(_0x55a921){_0x25cef3=_0x55a921;return _0x55a921[_0xa439('0x70')](_0x3f3439[_0xa439('0x5d')][_0xa439('0x71')]);}})['then'](function(_0x368200){if(_0x368200){return db[_0xa439('0x67')][_0xa439('0x68')]({'where':{'id':_0x3f3439['params'][_0xa439('0x71')]},'attributes':['id',_0xa439('0x29'),_0xa439('0x69'),_0xa439('0x6a'),'createdAt'],'raw':!![]});}})['then'](function(_0x250b9d){if(_0x250b9d){fs[_0xa439('0x5f')](path['join'](_0x25cef3[_0xa439('0x4f')],util['format'](_0xa439('0x6c'),_0x250b9d['name'],_0x250b9d['converted_format'])));return _0x250b9d;}})['catch'](function(_0x8627c9){throw new db[(_0xa439('0x61'))][(_0xa439('0x62'))](_0x8627c9[_0xa439('0x63')]);});})['then'](handleEntityNotFound(_0x373bd5,null))[_0xa439('0x23')](respondWithStatusCode(_0x373bd5,0xcc))[_0xa439('0x4a')](handleError(_0x373bd5,null));};exports[_0xa439('0x72')]=function(_0x4bc28d,_0x145117,_0x50503f){var _0x4ff572={};var _0x4c9994={};var _0x36cb87;var _0x5b85f7;return db[_0xa439('0x41')][_0xa439('0x68')]({'where':{'id':_0x4bc28d[_0xa439('0x5d')]['id']}})['then'](handleEntityNotFound(_0x145117,null))[_0xa439('0x23')](function(_0x5a795d){if(_0x5a795d){_0x36cb87=_0x5a795d;_0x4c9994[_0xa439('0x47')]=_[_0xa439('0x31')](db[_0xa439('0x67')][_0xa439('0x2c')]);_0x4c9994[_0xa439('0x30')]=_[_0xa439('0x31')](_0x4bc28d['query']);_0x4c9994[_0xa439('0x32')]=_['intersection'](_0x4c9994[_0xa439('0x47')],_0x4c9994[_0xa439('0x30')]);_0x4ff572[_0xa439('0x34')]=_['intersection'](_0x4c9994[_0xa439('0x47')],qs[_0xa439('0x35')](_0x4bc28d[_0xa439('0x30')][_0xa439('0x35')]));_0x4ff572[_0xa439('0x34')]=_0x4ff572[_0xa439('0x34')][_0xa439('0x36')]?_0x4ff572[_0xa439('0x34')]:_0x4c9994['model'];_0x4ff572[_0xa439('0x39')]=qs[_0xa439('0x3a')](_0x4bc28d[_0xa439('0x30')][_0xa439('0x3a')]);_0x4ff572['where']=qs[_0xa439('0x32')](_[_0xa439('0x3c')](_0x4bc28d[_0xa439('0x30')],_0x4c9994[_0xa439('0x32')]));if(_0x4bc28d[_0xa439('0x30')][_0xa439('0x3f')]){_0x4ff572[_0xa439('0x3b')]=_[_0xa439('0x3d')](_0x4ff572[_0xa439('0x3b')],{'$or':_[_0xa439('0x2b')](_0x4ff572[_0xa439('0x34')],function(_0x2dbdee){var _0x348601={};_0x348601[_0x2dbdee]={'$like':'%'+_0x4bc28d[_0xa439('0x30')][_0xa439('0x3f')]+'%'};return _0x348601;})});}_0x4ff572=_[_0xa439('0x3d')]({},_0x4ff572,_0x4bc28d[_0xa439('0x40')]);return _0x36cb87['getSounds'](_0x4ff572);}})[_0xa439('0x23')](function(_0x2b32f2){if(_0x2b32f2){_0x5b85f7=_0x2b32f2[_0xa439('0x36')];if(!_0x4bc28d[_0xa439('0x30')]['hasOwnProperty'](_0xa439('0x38'))){_0x4ff572[_0xa439('0x1a')]=qs[_0xa439('0x1a')](_0x4bc28d[_0xa439('0x30')][_0xa439('0x1a')]);_0x4ff572[_0xa439('0x1b')]=qs[_0xa439('0x1b')](_0x4bc28d[_0xa439('0x30')][_0xa439('0x1b')]);}return _0x36cb87[_0xa439('0x72')](_0x4ff572);}})[_0xa439('0x23')](function(_0x476191){if(_0x476191){return _0x476191?{'count':_0x5b85f7,'rows':_0x476191}:null;}})[_0xa439('0x23')](respondWithResult(_0x145117,null))[_0xa439('0x4a')](handleError(_0x145117,null));};
\ No newline at end of file
+var _0x02eb=['server/files/moh','files','mkdirSync','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','readdirSync','forEach','unlinkSync','join','rmdirSync','ValidationError','addSound','Sound','findOne','save_name','converted_format','server/files/sounds/converted','format','%s.%s','basename','symlinkSync','message','removeSound','id2','createdAt','getSounds','order','hasOwnProperty','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','path','fs-extra','lodash','squel','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','apply','reject','save','update','then','destroy','get','MusicOnHolds','UserProfileResource','stack','name','send','index','VoiceMusicOnHold','rawAttributes','type','key','model','map','keys','query','filters','intersection','attributes','fields','nolimit','sort','where','pick','filter','merge','options','include','findAll','rows','catch','params','length','includeAll','find','body','create','sequelize','transaction','mode','directory','root'];(function(_0x1e1b18,_0x5d471b){var _0x3da8f2=function(_0x51fe71){while(--_0x51fe71){_0x1e1b18['push'](_0x1e1b18['shift']());}};_0x3da8f2(++_0x5d471b);}(_0x02eb,0x1d8));var _0xb02e=function(_0x50451e,_0x124670){_0x50451e=_0x50451e-0x0;var _0x30524d=_0x02eb[_0x50451e];return _0x30524d;};'use strict';var emlformat=require(_0xb02e('0x0'));var rimraf=require(_0xb02e('0x1'));var zipdir=require(_0xb02e('0x2'));var jsonpatch=require(_0xb02e('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xb02e('0x4'));var Mustache=require(_0xb02e('0x5'));var util=require(_0xb02e('0x6'));var path=require(_0xb02e('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb02e('0x8'));var _=require(_0xb02e('0x9'));var squel=require(_0xb02e('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xb02e('0xb'));var toCsv=require('to-csv');var querystring=require(_0xb02e('0xc'));var Papa=require(_0xb02e('0xd'));var Redis=require(_0xb02e('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xb02e('0xf'));var as=require(_0xb02e('0x10'));var hardwareService=require(_0xb02e('0x11'));var logger=require(_0xb02e('0x12'))('api');var utils=require(_0xb02e('0x13'));var config=require(_0xb02e('0x14'));var licenseUtil=require(_0xb02e('0x15'));var db=require(_0xb02e('0x16'))['db'];function respondWithStatusCode(_0x329ad9,_0xe22c50){_0xe22c50=_0xe22c50||0xcc;return function(_0xd13c05){if(_0xd13c05){return _0x329ad9[_0xb02e('0x17')](_0xe22c50);}return _0x329ad9[_0xb02e('0x18')](_0xe22c50)[_0xb02e('0x19')]();};}function respondWithResult(_0x47b248,_0x4dc15a){_0x4dc15a=_0x4dc15a||0xc8;return function(_0x1f6c4d){if(_0x1f6c4d){return _0x47b248['status'](_0x4dc15a)[_0xb02e('0x1a')](_0x1f6c4d);}};}function respondWithFilteredResult(_0x22b554,_0x152f2a){return function(_0x1bfefb){if(_0x1bfefb){var _0x24309d=typeof _0x152f2a[_0xb02e('0x1b')]===_0xb02e('0x1c')&&typeof _0x152f2a['limit']===_0xb02e('0x1c');var _0x6cb0d1=_0x1bfefb[_0xb02e('0x1d')];var _0x5abad1=_0x24309d?0x0:_0x152f2a[_0xb02e('0x1b')];var _0x4bd17d=_0x24309d?_0x1bfefb[_0xb02e('0x1d')]:_0x152f2a[_0xb02e('0x1b')]+_0x152f2a[_0xb02e('0x1e')];var _0x21d774;if(_0x4bd17d>=_0x6cb0d1){_0x4bd17d=_0x6cb0d1;_0x21d774=0xc8;}else{_0x21d774=0xce;}_0x22b554[_0xb02e('0x18')](_0x21d774);return _0x22b554['set']('Content-Range',_0x5abad1+'-'+_0x4bd17d+'/'+_0x6cb0d1)[_0xb02e('0x1a')](_0x1bfefb);}return null;};}function patchUpdates(_0x53a5c7){return function(_0x4c9515){try{jsonpatch[_0xb02e('0x1f')](_0x4c9515,_0x53a5c7,!![]);}catch(_0xf03762){return BPromise[_0xb02e('0x20')](_0xf03762);}return _0x4c9515[_0xb02e('0x21')]();};}function saveUpdates(_0x3dc13f,_0x200864){return function(_0x3b19de){if(_0x3b19de){return _0x3b19de[_0xb02e('0x22')](_0x3dc13f)[_0xb02e('0x23')](function(_0x7c752a){return _0x7c752a;});}return null;};}function removeEntity(_0x546297,_0x2049a6){return function(_0xe81d5d){if(_0xe81d5d){return _0xe81d5d[_0xb02e('0x24')]()[_0xb02e('0x23')](function(){var _0x3936d6=_0xe81d5d[_0xb02e('0x25')]({'plain':!![]});var _0x5c05b0=_0xb02e('0x26');return db[_0xb02e('0x27')][_0xb02e('0x24')]({'where':{'type':_0x5c05b0,'resourceId':_0x3936d6['id']}})['then'](function(){return _0xe81d5d;});})['then'](function(){_0x546297['status'](0xcc)[_0xb02e('0x19')]();});}};}function handleEntityNotFound(_0xffe5c4,_0x301356){return function(_0x707e96){if(!_0x707e96){_0xffe5c4[_0xb02e('0x17')](0x194);}return _0x707e96;};}function handleError(_0x1df5a4,_0x55e83e){_0x55e83e=_0x55e83e||0x1f4;return function(_0x53a589){logger['error'](_0x53a589[_0xb02e('0x28')]);if(_0x53a589[_0xb02e('0x29')]){delete _0x53a589[_0xb02e('0x29')];}_0x1df5a4[_0xb02e('0x18')](_0x55e83e)[_0xb02e('0x2a')](_0x53a589);};}exports[_0xb02e('0x2b')]=function(_0x1e1f70,_0x446c54){var _0x5dbd13={},_0x16d9df={},_0x6d7a0a={'count':0x0,'rows':[]};var _0x31f5c1=_['map'](db[_0xb02e('0x2c')][_0xb02e('0x2d')],function(_0x5d84b5){return{'name':_0x5d84b5['fieldName'],'type':_0x5d84b5[_0xb02e('0x2e')][_0xb02e('0x2f')]};});_0x16d9df[_0xb02e('0x30')]=_[_0xb02e('0x31')](_0x31f5c1,_0xb02e('0x29'));_0x16d9df['query']=_[_0xb02e('0x32')](_0x1e1f70[_0xb02e('0x33')]);_0x16d9df[_0xb02e('0x34')]=_[_0xb02e('0x35')](_0x16d9df[_0xb02e('0x30')],_0x16d9df['query']);_0x5dbd13[_0xb02e('0x36')]=_[_0xb02e('0x35')](_0x16d9df[_0xb02e('0x30')],qs[_0xb02e('0x37')](_0x1e1f70[_0xb02e('0x33')][_0xb02e('0x37')]));_0x5dbd13[_0xb02e('0x36')]=_0x5dbd13['attributes']['length']?_0x5dbd13['attributes']:_0x16d9df[_0xb02e('0x30')];if(!_0x1e1f70['query']['hasOwnProperty'](_0xb02e('0x38'))){_0x5dbd13[_0xb02e('0x1e')]=qs[_0xb02e('0x1e')](_0x1e1f70[_0xb02e('0x33')]['limit']);_0x5dbd13['offset']=qs[_0xb02e('0x1b')](_0x1e1f70['query'][_0xb02e('0x1b')]);}_0x5dbd13['order']=qs[_0xb02e('0x39')](_0x1e1f70['query']['sort']);delete _0x1e1f70[_0xb02e('0x33')][_0xb02e('0x39')];_0x5dbd13[_0xb02e('0x3a')]=qs[_0xb02e('0x34')](_[_0xb02e('0x3b')](_0x1e1f70[_0xb02e('0x33')],_0x16d9df['filters']),_0x31f5c1);if(_0x1e1f70[_0xb02e('0x33')][_0xb02e('0x3c')]){_0x5dbd13['where']=_[_0xb02e('0x3d')](_0x5dbd13[_0xb02e('0x3a')],{'$or':_[_0xb02e('0x31')](_0x31f5c1,function(_0x3491cb){if(_0x3491cb[_0xb02e('0x2e')]!=='VIRTUAL'){var _0x22367b={};_0x22367b[_0x3491cb[_0xb02e('0x29')]]={'$like':'%'+_0x1e1f70[_0xb02e('0x33')][_0xb02e('0x3c')]+'%'};return _0x22367b;}})});}_0x5dbd13=_[_0xb02e('0x3d')]({},_0x5dbd13,_0x1e1f70[_0xb02e('0x3e')]);var _0xebf8fd={'where':_0x5dbd13[_0xb02e('0x3a')]};return db[_0xb02e('0x2c')][_0xb02e('0x1d')](_0xebf8fd)[_0xb02e('0x23')](function(_0x3620a){_0x6d7a0a[_0xb02e('0x1d')]=_0x3620a;if(_0x1e1f70[_0xb02e('0x33')]['includeAll']){_0x5dbd13[_0xb02e('0x3f')]=[{'all':!![]}];}return db['VoiceMusicOnHold'][_0xb02e('0x40')](_0x5dbd13);})[_0xb02e('0x23')](function(_0x2cd9a1){_0x6d7a0a[_0xb02e('0x41')]=_0x2cd9a1;return _0x6d7a0a;})[_0xb02e('0x23')](respondWithFilteredResult(_0x446c54,_0x5dbd13))[_0xb02e('0x42')](handleError(_0x446c54,null));};exports['show']=function(_0x5ef9d,_0x50e0b8){var _0x18abb9={'raw':![],'where':{'id':_0x5ef9d[_0xb02e('0x43')]['id']}},_0x3d6437={};_0x3d6437[_0xb02e('0x30')]=_[_0xb02e('0x32')](db['VoiceMusicOnHold']['rawAttributes']);_0x3d6437[_0xb02e('0x33')]=_[_0xb02e('0x32')](_0x5ef9d['query']);_0x3d6437[_0xb02e('0x34')]=_['intersection'](_0x3d6437['model'],_0x3d6437[_0xb02e('0x33')]);_0x18abb9[_0xb02e('0x36')]=_[_0xb02e('0x35')](_0x3d6437[_0xb02e('0x30')],qs[_0xb02e('0x37')](_0x5ef9d[_0xb02e('0x33')][_0xb02e('0x37')]));_0x18abb9[_0xb02e('0x36')]=_0x18abb9['attributes'][_0xb02e('0x44')]?_0x18abb9[_0xb02e('0x36')]:_0x3d6437[_0xb02e('0x30')];if(_0x5ef9d[_0xb02e('0x33')][_0xb02e('0x45')]){_0x18abb9[_0xb02e('0x3f')]=[{'all':!![]}];}_0x18abb9=_[_0xb02e('0x3d')]({},_0x18abb9,_0x5ef9d[_0xb02e('0x3e')]);return db[_0xb02e('0x2c')][_0xb02e('0x46')](_0x18abb9)['then'](handleEntityNotFound(_0x50e0b8,null))[_0xb02e('0x23')](respondWithResult(_0x50e0b8,null))[_0xb02e('0x42')](handleError(_0x50e0b8,null));};exports[_0xb02e('0x22')]=function(_0x46e669,_0x55c92b){if(_0x46e669[_0xb02e('0x47')]['id']){delete _0x46e669[_0xb02e('0x47')]['id'];}return db[_0xb02e('0x2c')]['find']({'where':{'id':_0x46e669[_0xb02e('0x43')]['id']}})[_0xb02e('0x23')](handleEntityNotFound(_0x55c92b,null))[_0xb02e('0x23')](saveUpdates(_0x46e669['body'],null))['then'](respondWithResult(_0x55c92b,null))[_0xb02e('0x42')](handleError(_0x55c92b,null));};exports[_0xb02e('0x48')]=function(_0x219844,_0x4d50f5,_0x1119b4){return db[_0xb02e('0x49')][_0xb02e('0x4a')](function(_0x36636b){if(_0x219844['body'][_0xb02e('0x4b')]==='files'){_0x219844['body'][_0xb02e('0x4c')]=path['join'](config[_0xb02e('0x4d')],_0xb02e('0x4e'),_0x219844['body']['name']);}return db[_0xb02e('0x2c')][_0xb02e('0x48')](_0x219844[_0xb02e('0x47')],{'transaction':_0x36636b})['then'](function(_0x20d840){if(_0x219844[_0xb02e('0x47')]['mode']===_0xb02e('0x4f')){fs[_0xb02e('0x50')](_0x20d840[_0xb02e('0x4c')],parseInt('0777',0x8));}var _0x2a7d4f=_0x219844[_0xb02e('0x51')][_0xb02e('0x25')]({'plain':!![]});if(!_0x2a7d4f)throw new Error(_0xb02e('0x52'));if(_0x2a7d4f[_0xb02e('0x53')]==='user'){var _0xc15f45=_0x20d840[_0xb02e('0x25')]({'plain':!![]});return db['UserProfileSection'][_0xb02e('0x46')]({'where':{'name':_0xb02e('0x26'),'userProfileId':_0x2a7d4f[_0xb02e('0x54')]},'raw':!![]})['then'](function(_0x7cc632){if(_0x7cc632&&_0x7cc632[_0xb02e('0x55')]===0x0){return db[_0xb02e('0x27')][_0xb02e('0x48')]({'name':_0xc15f45[_0xb02e('0x29')],'resourceId':_0xc15f45['id'],'type':_0x7cc632[_0xb02e('0x29')],'sectionId':_0x7cc632['id']},{})[_0xb02e('0x23')](function(){return _0x20d840;});}else{return _0x20d840;}})['catch'](function(_0x440e26){logger['error'](_0xb02e('0x56'),_0x440e26);});}return _0x20d840;});})[_0xb02e('0x23')](respondWithResult(_0x4d50f5,0xc9))[_0xb02e('0x42')](handleError(_0x4d50f5,null));};exports['destroy']=function(_0x2423aa,_0x168833,_0x3bbe56){var _0x45988c;return db[_0xb02e('0x2c')]['find']({'where':{'id':_0x2423aa['params']['id']}})['then'](function(_0x259c18){if(_0x259c18){return db['sequelize'][_0xb02e('0x4a')](function(_0x3c9def){return _0x259c18['destroy']({'transaction':_0x3c9def,'raw':!![]})[_0xb02e('0x23')](function(_0x55d6de){if(_0x55d6de[_0xb02e('0x4c')]){fs[_0xb02e('0x57')](_0x55d6de[_0xb02e('0x4c')])[_0xb02e('0x58')](function(_0x556389){fs[_0xb02e('0x59')](path[_0xb02e('0x5a')](_0x55d6de[_0xb02e('0x4c')],_0x556389));});fs[_0xb02e('0x5b')](_0x55d6de[_0xb02e('0x4c')]);}return _0x55d6de;});})[_0xb02e('0x42')](function(_0x177154){throw new db['Sequelize'][(_0xb02e('0x5c'))](_0x177154['message']);});}})[_0xb02e('0x23')](handleEntityNotFound(_0x168833,null))['then'](removeEntity(_0x168833,null))[_0xb02e('0x42')](handleError(_0x168833,null));};exports[_0xb02e('0x5d')]=function(_0x36aa1a,_0x4831f5,_0x3a2cc4){return db['sequelize'][_0xb02e('0x4a')](function(_0x154e48){var _0x140547;return db[_0xb02e('0x2c')]['find']({'where':{'id':_0x36aa1a['params']['id']}})[_0xb02e('0x23')](function(_0x35dce7){if(_0x35dce7){_0x140547=_0x35dce7;return _0x35dce7['addSound'](_0x36aa1a['body']['id'],{'transaction':_0x154e48});}})[_0xb02e('0x23')](function(_0xb436ab){if(_0xb436ab){return db[_0xb02e('0x5e')][_0xb02e('0x5f')]({'where':{'id':_0x36aa1a[_0xb02e('0x47')]['id']},'attributes':['id','name',_0xb02e('0x60'),_0xb02e('0x61'),'createdAt'],'raw':!![]});}})[_0xb02e('0x23')](function(_0x5dffb5){if(_0x5dffb5){var _0x162d5c=path['join'](config[_0xb02e('0x4d')],_0xb02e('0x62'),util[_0xb02e('0x63')](_0xb02e('0x64'),path[_0xb02e('0x65')](_0x5dffb5[_0xb02e('0x60')],path['extname'](_0x5dffb5['save_name'])),_0x5dffb5[_0xb02e('0x61')]));var _0x52f3ed=path['join'](config[_0xb02e('0x4d')],_0xb02e('0x4e'),_0x140547[_0xb02e('0x29')],util[_0xb02e('0x63')]('%s.%s',_0x5dffb5[_0xb02e('0x29')],_0x5dffb5[_0xb02e('0x61')]));fs[_0xb02e('0x66')](_0x162d5c,_0x52f3ed);return _0x5dffb5;}})['catch'](function(_0x314dc6){throw new db['Sequelize'][(_0xb02e('0x5c'))](_0x314dc6[_0xb02e('0x67')]);});})[_0xb02e('0x23')](handleEntityNotFound(_0x4831f5,null))['then'](respondWithResult(_0x4831f5,0xc9))[_0xb02e('0x42')](handleError(_0x4831f5,null));};exports[_0xb02e('0x68')]=function(_0x1cc24b,_0x413e31,_0x988dc5){return db[_0xb02e('0x49')]['transaction'](function(_0x74afbc){var _0x59271e;return db[_0xb02e('0x2c')][_0xb02e('0x5f')]({'where':{'id':_0x1cc24b[_0xb02e('0x43')]['id']}})[_0xb02e('0x23')](handleEntityNotFound(_0x413e31,null))[_0xb02e('0x23')](function(_0x4b594b){if(_0x4b594b){_0x59271e=_0x4b594b;return _0x4b594b[_0xb02e('0x68')](_0x1cc24b[_0xb02e('0x43')][_0xb02e('0x69')]);}})[_0xb02e('0x23')](function(_0x15f95b){if(_0x15f95b){return db[_0xb02e('0x5e')][_0xb02e('0x5f')]({'where':{'id':_0x1cc24b['params'][_0xb02e('0x69')]},'attributes':['id','name',_0xb02e('0x60'),_0xb02e('0x61'),_0xb02e('0x6a')],'raw':!![]});}})[_0xb02e('0x23')](function(_0x5b3476){if(_0x5b3476){fs[_0xb02e('0x59')](path[_0xb02e('0x5a')](_0x59271e[_0xb02e('0x4c')],util[_0xb02e('0x63')](_0xb02e('0x64'),_0x5b3476['name'],_0x5b3476[_0xb02e('0x61')])));return _0x5b3476;}})['catch'](function(_0x4a8fa9){throw new db['Sequelize'][(_0xb02e('0x5c'))](_0x4a8fa9[_0xb02e('0x67')]);});})[_0xb02e('0x23')](handleEntityNotFound(_0x413e31,null))[_0xb02e('0x23')](respondWithStatusCode(_0x413e31,0xcc))[_0xb02e('0x42')](handleError(_0x413e31,null));};exports[_0xb02e('0x6b')]=function(_0x6357a1,_0x39761d,_0x457825){var _0x45b952={};var _0xb3afd={};var _0x2d9584;var _0x21c8c2;return db[_0xb02e('0x2c')][_0xb02e('0x5f')]({'where':{'id':_0x6357a1['params']['id']}})['then'](handleEntityNotFound(_0x39761d,null))['then'](function(_0x5c12c7){if(_0x5c12c7){_0x2d9584=_0x5c12c7;_0xb3afd[_0xb02e('0x30')]=_[_0xb02e('0x32')](db[_0xb02e('0x5e')][_0xb02e('0x2d')]);_0xb3afd[_0xb02e('0x33')]=_['keys'](_0x6357a1[_0xb02e('0x33')]);_0xb3afd['filters']=_[_0xb02e('0x35')](_0xb3afd[_0xb02e('0x30')],_0xb3afd[_0xb02e('0x33')]);_0x45b952[_0xb02e('0x36')]=_['intersection'](_0xb3afd[_0xb02e('0x30')],qs['fields'](_0x6357a1['query'][_0xb02e('0x37')]));_0x45b952[_0xb02e('0x36')]=_0x45b952[_0xb02e('0x36')][_0xb02e('0x44')]?_0x45b952['attributes']:_0xb3afd[_0xb02e('0x30')];_0x45b952[_0xb02e('0x6c')]=qs[_0xb02e('0x39')](_0x6357a1[_0xb02e('0x33')][_0xb02e('0x39')]);_0x45b952[_0xb02e('0x3a')]=qs['filters'](_['pick'](_0x6357a1[_0xb02e('0x33')],_0xb3afd['filters']));if(_0x6357a1[_0xb02e('0x33')][_0xb02e('0x3c')]){_0x45b952[_0xb02e('0x3a')]=_['merge'](_0x45b952['where'],{'$or':_[_0xb02e('0x31')](_0x45b952[_0xb02e('0x36')],function(_0xe2897f){var _0x1b2989={};_0x1b2989[_0xe2897f]={'$like':'%'+_0x6357a1[_0xb02e('0x33')]['filter']+'%'};return _0x1b2989;})});}_0x45b952=_['merge']({},_0x45b952,_0x6357a1['options']);return _0x2d9584[_0xb02e('0x6b')](_0x45b952);}})[_0xb02e('0x23')](function(_0x5408af){if(_0x5408af){_0x21c8c2=_0x5408af['length'];if(!_0x6357a1[_0xb02e('0x33')][_0xb02e('0x6d')]('nolimit')){_0x45b952[_0xb02e('0x1e')]=qs[_0xb02e('0x1e')](_0x6357a1[_0xb02e('0x33')]['limit']);_0x45b952[_0xb02e('0x1b')]=qs[_0xb02e('0x1b')](_0x6357a1[_0xb02e('0x33')][_0xb02e('0x1b')]);}return _0x2d9584[_0xb02e('0x6b')](_0x45b952);}})[_0xb02e('0x23')](function(_0x26092d){if(_0x26092d){return _0x26092d?{'count':_0x21c8c2,'rows':_0x26092d}:null;}})[_0xb02e('0x23')](respondWithResult(_0x39761d,null))[_0xb02e('0x42')](handleError(_0x39761d,null));};
\ No newline at end of file
index e47366e..04b2c18 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x483b=['voice_musiconhold','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./voiceMusicOnHold.attributes','define'];(function(_0x51e79c,_0x51485e){var _0x2467be=function(_0xbf70f0){while(--_0xbf70f0){_0x51e79c['push'](_0x51e79c['shift']());}};_0x2467be(++_0x51485e);}(_0x483b,0x140));var _0xb483=function(_0x45618b,_0x4197c2){_0x45618b=_0x45618b-0x0;var _0x1f0a89=_0x483b[_0x45618b];return _0x1f0a89;};'use strict';var _=require('lodash');var util=require(_0xb483('0x0'));var logger=require(_0xb483('0x1'))(_0xb483('0x2'));var moment=require(_0xb483('0x3'));var BPromise=require('bluebird');var rp=require(_0xb483('0x4'));var fs=require('fs');var path=require(_0xb483('0x5'));var rimraf=require(_0xb483('0x6'));var config=require(_0xb483('0x7'));var attributes=require(_0xb483('0x8'));module['exports']=function(_0x139314,_0x268c2f){return _0x139314[_0xb483('0x9')]('VoiceMusicOnHold',attributes,{'tableName':_0xb483('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc4d2=['exports','define','VoiceMusicOnHold','voice_musiconhold','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./voiceMusicOnHold.attributes'];(function(_0xf664aa,_0x5d12b1){var _0x1aa8dd=function(_0x53bc1f){while(--_0x53bc1f){_0xf664aa['push'](_0xf664aa['shift']());}};_0x1aa8dd(++_0x5d12b1);}(_0xc4d2,0x100));var _0x2c4d=function(_0x3ff8c9,_0x53e690){_0x3ff8c9=_0x3ff8c9-0x0;var _0x55857=_0xc4d2[_0x3ff8c9];return _0x55857;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x2c4d('0x0'))('api');var moment=require(_0x2c4d('0x1'));var BPromise=require(_0x2c4d('0x2'));var rp=require(_0x2c4d('0x3'));var fs=require('fs');var path=require(_0x2c4d('0x4'));var rimraf=require(_0x2c4d('0x5'));var config=require(_0x2c4d('0x6'));var attributes=require(_0x2c4d('0x7'));module[_0x2c4d('0x8')]=function(_0x2a0683,_0x317806){return _0x2a0683[_0x2c4d('0x9')](_0x2c4d('0xa'),attributes,{'tableName':_0x2c4d('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a1d0745..efe47e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','stringify','error','code','VoiceMusicOnHold,\x20%s,\x20%s','message','catch','util'];(function(_0xb38baa,_0x571c29){var _0x5e7717=function(_0x478f7c){while(--_0x478f7c){_0xb38baa['push'](_0xb38baa['shift']());}};_0x5e7717(++_0x571c29);}(_0xedd9,0xfc));var _0x9edd=function(_0x43171f,_0x43b445){_0x43171f=_0x43171f-0x0;var _0x1dcd07=_0xedd9[_0x43171f];return _0x1dcd07;};'use strict';var _=require('lodash');var util=require(_0x9edd('0x0'));var moment=require(_0x9edd('0x1'));var BPromise=require(_0x9edd('0x2'));var rs=require(_0x9edd('0x3'));var fs=require('fs');var Redis=require(_0x9edd('0x4'));var db=require(_0x9edd('0x5'))['db'];var utils=require(_0x9edd('0x6'));var logger=require(_0x9edd('0x7'))('rpc');var config=require(_0x9edd('0x8'));var jayson=require(_0x9edd('0x9'));var client=jayson[_0x9edd('0xa')][_0x9edd('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5319f7,_0xf0b2d8,_0x571af9){return new BPromise(function(_0x172522,_0x190185){return client[_0x9edd('0xc')](_0x5319f7,_0x571af9)[_0x9edd('0xd')](function(_0x49d5e3){logger[_0x9edd('0xe')]('VoiceMusicOnHold,\x20%s,\x20%s',_0xf0b2d8,_0x9edd('0xf'));logger[_0x9edd('0x10')]('VoiceMusicOnHold,\x20%s,\x20%s,\x20%s',_0xf0b2d8,_0x9edd('0xf'),JSON[_0x9edd('0x11')](_0x49d5e3));if(_0x49d5e3['error']){if(_0x49d5e3[_0x9edd('0x12')][_0x9edd('0x13')]===0x1f4){logger[_0x9edd('0x12')](_0x9edd('0x14'),_0xf0b2d8,_0x49d5e3[_0x9edd('0x12')][_0x9edd('0x15')]);return _0x190185(_0x49d5e3[_0x9edd('0x12')][_0x9edd('0x15')]);}logger['error'](_0x9edd('0x14'),_0xf0b2d8,_0x49d5e3[_0x9edd('0x12')][_0x9edd('0x15')]);return _0x172522(_0x49d5e3[_0x9edd('0x12')][_0x9edd('0x15')]);}else{logger[_0x9edd('0xe')](_0x9edd('0x14'),_0xf0b2d8,_0x9edd('0xf'));_0x172522(_0x49d5e3['result'][_0x9edd('0x15')]);}})[_0x9edd('0x16')](function(_0x449cee){logger['error'](_0x9edd('0x14'),_0xf0b2d8,_0x449cee);_0x190185(_0x449cee);});});}
\ No newline at end of file
+var _0x34e8=['lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','VoiceMusicOnHold,\x20%s,\x20%s','request\x20sent','debug','VoiceMusicOnHold,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch'];(function(_0x3a56fc,_0x2760e5){var _0x3ca353=function(_0x32c0a9){while(--_0x32c0a9){_0x3a56fc['push'](_0x3a56fc['shift']());}};_0x3ca353(++_0x2760e5);}(_0x34e8,0x12c));var _0x834e=function(_0x4aab7e,_0x292b5e){_0x4aab7e=_0x4aab7e-0x0;var _0x51dd1b=_0x34e8[_0x4aab7e];return _0x51dd1b;};'use strict';var _=require(_0x834e('0x0'));var util=require(_0x834e('0x1'));var moment=require(_0x834e('0x2'));var BPromise=require(_0x834e('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x834e('0x4'));var db=require(_0x834e('0x5'))['db'];var utils=require(_0x834e('0x6'));var logger=require(_0x834e('0x7'))(_0x834e('0x8'));var config=require(_0x834e('0x9'));var jayson=require(_0x834e('0xa'));var client=jayson['client'][_0x834e('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x52056d,_0x3e16d2,_0x3cc2e3){return new BPromise(function(_0x3a3ef6,_0x2e69e2){return client[_0x834e('0xc')](_0x52056d,_0x3cc2e3)[_0x834e('0xd')](function(_0x363786){logger[_0x834e('0xe')](_0x834e('0xf'),_0x3e16d2,_0x834e('0x10'));logger[_0x834e('0x11')](_0x834e('0x12'),_0x3e16d2,_0x834e('0x10'),JSON[_0x834e('0x13')](_0x363786));if(_0x363786[_0x834e('0x14')]){if(_0x363786[_0x834e('0x14')][_0x834e('0x15')]===0x1f4){logger['error'](_0x834e('0xf'),_0x3e16d2,_0x363786[_0x834e('0x14')]['message']);return _0x2e69e2(_0x363786[_0x834e('0x14')][_0x834e('0x16')]);}logger[_0x834e('0x14')](_0x834e('0xf'),_0x3e16d2,_0x363786['error'][_0x834e('0x16')]);return _0x3a3ef6(_0x363786[_0x834e('0x14')]['message']);}else{logger[_0x834e('0xe')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x3e16d2,_0x834e('0x10'));_0x3a3ef6(_0x363786[_0x834e('0x17')]['message']);}})[_0x834e('0x18')](function(_0x22106e){logger[_0x834e('0x14')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x3e16d2,_0x22106e);_0x2e69e2(_0x22106e);});});}
\ No newline at end of file
index beec4fc..9f07ad4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x72a2=['update','delete','removeTeams','util','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','index','get','/describe','isAuthenticated','/:id','show','/:id/users','getAgents','getTeams','post','create','addAgents','/:id/teams','addTeams','put'];(function(_0x48999d,_0x1e02cb){var _0x1ad0d1=function(_0x3f974e){while(--_0x3f974e){_0x48999d['push'](_0x48999d['shift']());}};_0x1ad0d1(++_0x1e02cb);}(_0x72a2,0x161));var _0x272a=function(_0x35bb68,_0x511028){_0x35bb68=_0x35bb68-0x0;var _0x20fc42=_0x72a2[_0x35bb68];return _0x20fc42;};'use strict';var multer=require('multer');var util=require(_0x272a('0x0'));var path=require(_0x272a('0x1'));var timeout=require(_0x272a('0x2'));var express=require(_0x272a('0x3'));var router=express[_0x272a('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x272a('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x272a('0x6'));var controller=require('./voicePrefix.controller');router['get']('/',auth['isAuthenticated'](),controller[_0x272a('0x7')]);router[_0x272a('0x8')](_0x272a('0x9'),auth[_0x272a('0xa')](),controller['describe']);router['get'](_0x272a('0xb'),auth['isAuthenticated'](),controller[_0x272a('0xc')]);router['get'](_0x272a('0xd'),auth[_0x272a('0xa')](),controller[_0x272a('0xe')]);router[_0x272a('0x8')]('/:id/teams',auth['isAuthenticated'](),controller[_0x272a('0xf')]);router[_0x272a('0x10')]('/',auth['isAuthenticated'](),controller[_0x272a('0x11')]);router[_0x272a('0x10')](_0x272a('0xd'),auth[_0x272a('0xa')](),controller[_0x272a('0x12')]);router['post'](_0x272a('0x13'),auth[_0x272a('0xa')](),controller[_0x272a('0x14')]);router[_0x272a('0x15')]('/:id',auth[_0x272a('0xa')](),controller[_0x272a('0x16')]);router['delete']('/:id',auth['isAuthenticated'](),controller['destroy']);router['delete']('/:id/users',auth[_0x272a('0xa')](),controller['removeAgents']);router[_0x272a('0x17')](_0x272a('0x13'),auth[_0x272a('0xa')](),controller[_0x272a('0x18')]);module['exports']=router;
\ No newline at end of file
+var _0xceee=['post','create','addAgents','/:id/teams','put','/:id','update','delete','destroy','removeAgents','removeTeams','exports','multer','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','describe','/:id/users'];(function(_0x11efa4,_0x53b156){var _0x38955e=function(_0xb710f5){while(--_0xb710f5){_0x11efa4['push'](_0x11efa4['shift']());}};_0x38955e(++_0x53b156);}(_0xceee,0xbb));var _0xecee=function(_0xcbe794,_0x5292b7){_0xcbe794=_0xcbe794-0x0;var _0x23237f=_0xceee[_0xcbe794];return _0x23237f;};'use strict';var multer=require(_0xecee('0x0'));var util=require(_0xecee('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xecee('0x2'));var router=express[_0xecee('0x3')]();var fs_extra=require(_0xecee('0x4'));var auth=require(_0xecee('0x5'));var interaction=require(_0xecee('0x6'));var config=require(_0xecee('0x7'));var controller=require('./voicePrefix.controller');router[_0xecee('0x8')]('/',auth[_0xecee('0x9')](),controller[_0xecee('0xa')]);router[_0xecee('0x8')]('/describe',auth['isAuthenticated'](),controller[_0xecee('0xb')]);router[_0xecee('0x8')]('/:id',auth[_0xecee('0x9')](),controller['show']);router['get'](_0xecee('0xc'),auth[_0xecee('0x9')](),controller['getAgents']);router['get']('/:id/teams',auth[_0xecee('0x9')](),controller['getTeams']);router[_0xecee('0xd')]('/',auth['isAuthenticated'](),controller[_0xecee('0xe')]);router[_0xecee('0xd')](_0xecee('0xc'),auth[_0xecee('0x9')](),controller[_0xecee('0xf')]);router[_0xecee('0xd')](_0xecee('0x10'),auth[_0xecee('0x9')](),controller['addTeams']);router[_0xecee('0x11')](_0xecee('0x12'),auth[_0xecee('0x9')](),controller[_0xecee('0x13')]);router[_0xecee('0x14')]('/:id',auth[_0xecee('0x9')](),controller[_0xecee('0x15')]);router[_0xecee('0x14')](_0xecee('0xc'),auth[_0xecee('0x9')](),controller[_0xecee('0x16')]);router[_0xecee('0x14')](_0xecee('0x10'),auth[_0xecee('0x9')](),controller[_0xecee('0x17')]);module[_0xecee('0x18')]=router;
\ No newline at end of file
index 127dd53..23b336c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd5ad=['INTEGER','sequelize','STRING','system-','getDataValue','name'];(function(_0x29e6e1,_0x5dce92){var _0xf15909=function(_0x1a824d){while(--_0x1a824d){_0x29e6e1['push'](_0x29e6e1['shift']());}};_0xf15909(++_0x5dce92);}(_0xd5ad,0x1e1));var _0xdd5a=function(_0x3cc19e,_0x4c3a2e){_0x3cc19e=_0x3cc19e-0x0;var _0x2c772a=_0xd5ad[_0x3cc19e];return _0x2c772a;};'use strict';var Sequelize=require(_0xdd5a('0x0'));module['exports']={'name':{'type':Sequelize[_0xdd5a('0x1')],'allowNull':![],'unique':'name'},'prefix':{'type':Sequelize['VIRTUAL'],'get':function(_0x2d6ea9){return _0xdd5a('0x2')+this[_0xdd5a('0x3')](_0xdd5a('0x4'))+'-';}},'description':{'type':Sequelize[_0xdd5a('0x1')]},'callerIdAll':{'type':Sequelize[_0xdd5a('0x1')]},'VoiceExtensionId':{'type':Sequelize[_0xdd5a('0x5')]}};
\ No newline at end of file
+var _0x0fe6=['name','INTEGER','sequelize','exports','STRING','VIRTUAL'];(function(_0x44f5d1,_0x299ff1){var _0x2a2213=function(_0x5d25bb){while(--_0x5d25bb){_0x44f5d1['push'](_0x44f5d1['shift']());}};_0x2a2213(++_0x299ff1);}(_0x0fe6,0x104));var _0x60fe=function(_0x54e2f8,_0x2c2a88){_0x54e2f8=_0x54e2f8-0x0;var _0x34a489=_0x0fe6[_0x54e2f8];return _0x34a489;};'use strict';var Sequelize=require(_0x60fe('0x0'));module[_0x60fe('0x1')]={'name':{'type':Sequelize[_0x60fe('0x2')],'allowNull':![],'unique':'name'},'prefix':{'type':Sequelize[_0x60fe('0x3')],'get':function(_0x1c54a4){return'system-'+this['getDataValue'](_0x60fe('0x4'))+'-';}},'description':{'type':Sequelize['STRING']},'callerIdAll':{'type':Sequelize[_0x60fe('0x2')]},'VoiceExtensionId':{'type':Sequelize[_0x60fe('0x5')]}};
\ No newline at end of file
index dc5ab81..727646a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xefda=['value','isEmpty','eml-format','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js','querystring','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./voicePrefix.socket','register','sendStatus','status','end','offset','undefined','count','limit','set','apply','save','update','destroy','VoicePrefixes','then','error','stack','send','index','VoicePrefix','rawAttributes','fieldName','type','key','model','map','name','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','catch','show','params','find','describe','create','transaction','body','VoiceExtensionId','user','get','role','UserProfileSection','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','context','app','system','description','priority','appdata','NoOp','Voice\x20Prefix','VoicePrefixId','VoiceExtension','bulkCreate','Extensions\x20creation\x20failed','prefix','Set','callerIdAll','push','PREFIX-CALLERIDALL=','No\x20callerid\x20available','goto','charAt','system-','sequelize','findById','addAgents','ids','spread','removeAgents','emit','userVoicePrefix:remove','getAgents','User','getTeams','findOne','Team','addTeams','interface','flatMap','Agents','upsert','each','UserVoicePrefix','forEach','userVoicePrefix:save','removeTeams','select','tq.TeamId','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','toString','QueryTypes','SELECT','every','TeamId','all','union','compact'];(function(_0xac721a,_0x51dbc7){var _0x50dbde=function(_0x2e78e6){while(--_0x2e78e6){_0xac721a['push'](_0xac721a['shift']());}};_0x50dbde(++_0x51dbc7);}(_0xefda,0x96));var _0xaefd=function(_0x11c780,_0x30248f){_0x11c780=_0x11c780-0x0;var _0x55e66d=_0xefda[_0x11c780];return _0x55e66d;};'use strict';var emlformat=require(_0xaefd('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xaefd('0x1'));var rp=require(_0xaefd('0x2'));var moment=require('moment');var BPromise=require(_0xaefd('0x3'));var Mustache=require(_0xaefd('0x4'));var util=require(_0xaefd('0x5'));var path=require(_0xaefd('0x6'));var sox=require(_0xaefd('0x7'));var csv=require(_0xaefd('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xaefd('0x9'));var _=require(_0xaefd('0xa'));var squel=require(_0xaefd('0xb'));var crypto=require(_0xaefd('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xaefd('0xd'));var toCsv=require(_0xaefd('0x8'));var querystring=require(_0xaefd('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xaefd('0xf'));var as=require(_0xaefd('0x10'));var hardwareService=require(_0xaefd('0x11'));var logger=require(_0xaefd('0x12'))(_0xaefd('0x13'));var utils=require(_0xaefd('0x14'));var config=require(_0xaefd('0x15'));var licenseUtil=require(_0xaefd('0x16'));var db=require(_0xaefd('0x17'))['db'];config[_0xaefd('0x18')]=_[_0xaefd('0x19')](config['redis'],{'host':_0xaefd('0x1a'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xaefd('0x18')]));require(_0xaefd('0x1b'))[_0xaefd('0x1c')](socket);function respondWithStatusCode(_0x43b82a,_0x4ec92a){_0x4ec92a=_0x4ec92a||0xcc;return function(_0x16e4f4){if(_0x16e4f4){return _0x43b82a[_0xaefd('0x1d')](_0x4ec92a);}return _0x43b82a[_0xaefd('0x1e')](_0x4ec92a)[_0xaefd('0x1f')]();};}function respondWithResult(_0x10ee28,_0x32f75e){_0x32f75e=_0x32f75e||0xc8;return function(_0x277070){if(_0x277070){return _0x10ee28[_0xaefd('0x1e')](_0x32f75e)['json'](_0x277070);}};}function respondWithFilteredResult(_0x9d9c29,_0x109604){return function(_0x9748f4){if(_0x9748f4){var _0x1737a1=typeof _0x109604[_0xaefd('0x20')]===_0xaefd('0x21')&&typeof _0x109604['limit']===_0xaefd('0x21');var _0x182f9a=_0x9748f4[_0xaefd('0x22')];var _0x1260dd=_0x1737a1?0x0:_0x109604[_0xaefd('0x20')];var _0x1f302c=_0x1737a1?_0x9748f4['count']:_0x109604[_0xaefd('0x20')]+_0x109604[_0xaefd('0x23')];var _0x2dcdd8;if(_0x1f302c>=_0x182f9a){_0x1f302c=_0x182f9a;_0x2dcdd8=0xc8;}else{_0x2dcdd8=0xce;}_0x9d9c29[_0xaefd('0x1e')](_0x2dcdd8);return _0x9d9c29[_0xaefd('0x24')]('Content-Range',_0x1260dd+'-'+_0x1f302c+'/'+_0x182f9a)['json'](_0x9748f4);}return null;};}function patchUpdates(_0x5b9967){return function(_0x21680a){try{jsonpatch[_0xaefd('0x25')](_0x21680a,_0x5b9967,!![]);}catch(_0x313a6f){return BPromise['reject'](_0x313a6f);}return _0x21680a[_0xaefd('0x26')]();};}function saveUpdates(_0x4cd9b2,_0x3deec8){return function(_0x3caa99){if(_0x3caa99){return _0x3caa99[_0xaefd('0x27')](_0x4cd9b2)['then'](function(_0x435413){return _0x435413;});}return null;};}function removeEntity(_0x3ffc9c,_0x18e720){return function(_0x14cc9d){if(_0x14cc9d){return _0x14cc9d[_0xaefd('0x28')]()['then'](function(){var _0x2fe27e=_0x14cc9d['get']({'plain':!![]});var _0x810bf=_0xaefd('0x29');return db['UserProfileResource'][_0xaefd('0x28')]({'where':{'type':_0x810bf,'resourceId':_0x2fe27e['id']}})[_0xaefd('0x2a')](function(){return _0x14cc9d;});})['then'](function(){_0x3ffc9c[_0xaefd('0x1e')](0xcc)[_0xaefd('0x1f')]();});}};}function handleEntityNotFound(_0x36b6b7,_0x4c0898){return function(_0x45f0e8){if(!_0x45f0e8){_0x36b6b7['sendStatus'](0x194);}return _0x45f0e8;};}function handleError(_0x109e19,_0x5c5639){_0x5c5639=_0x5c5639||0x1f4;return function(_0x4a1acb){logger[_0xaefd('0x2b')](_0x4a1acb[_0xaefd('0x2c')]);if(_0x4a1acb['name']){delete _0x4a1acb['name'];}_0x109e19['status'](_0x5c5639)[_0xaefd('0x2d')](_0x4a1acb);};}exports[_0xaefd('0x2e')]=function(_0x4b6910,_0x5503d0){var _0x62ef86={},_0x465d99={},_0x3f4947={'count':0x0,'rows':[]};var _0x21d358=_['map'](db[_0xaefd('0x2f')][_0xaefd('0x30')],function(_0x3b11e4){return{'name':_0x3b11e4[_0xaefd('0x31')],'type':_0x3b11e4[_0xaefd('0x32')][_0xaefd('0x33')]};});_0x465d99[_0xaefd('0x34')]=_[_0xaefd('0x35')](_0x21d358,_0xaefd('0x36'));_0x465d99[_0xaefd('0x37')]=_[_0xaefd('0x38')](_0x4b6910[_0xaefd('0x37')]);_0x465d99[_0xaefd('0x39')]=_[_0xaefd('0x3a')](_0x465d99[_0xaefd('0x34')],_0x465d99[_0xaefd('0x37')]);_0x62ef86['attributes']=_[_0xaefd('0x3a')](_0x465d99[_0xaefd('0x34')],qs[_0xaefd('0x3b')](_0x4b6910['query'][_0xaefd('0x3b')]));_0x62ef86['attributes']=_0x62ef86[_0xaefd('0x3c')][_0xaefd('0x3d')]?_0x62ef86[_0xaefd('0x3c')]:_0x465d99[_0xaefd('0x34')];if(!_0x4b6910[_0xaefd('0x37')][_0xaefd('0x3e')](_0xaefd('0x3f'))){_0x62ef86[_0xaefd('0x23')]=qs[_0xaefd('0x23')](_0x4b6910[_0xaefd('0x37')][_0xaefd('0x23')]);_0x62ef86[_0xaefd('0x20')]=qs[_0xaefd('0x20')](_0x4b6910[_0xaefd('0x37')]['offset']);}_0x62ef86[_0xaefd('0x40')]=qs['sort'](_0x4b6910[_0xaefd('0x37')][_0xaefd('0x41')]);_0x62ef86[_0xaefd('0x42')]=qs[_0xaefd('0x39')](_[_0xaefd('0x43')](_0x4b6910[_0xaefd('0x37')],_0x465d99[_0xaefd('0x39')]),_0x21d358);if(_0x4b6910[_0xaefd('0x37')][_0xaefd('0x44')]){_0x62ef86[_0xaefd('0x42')]=_['merge'](_0x62ef86[_0xaefd('0x42')],{'$or':_[_0xaefd('0x35')](_0x21d358,function(_0x4dfea1){if(_0x4dfea1[_0xaefd('0x32')]!==_0xaefd('0x45')){var _0x27daa8={};_0x27daa8[_0x4dfea1['name']]={'$like':'%'+_0x4b6910['query'][_0xaefd('0x44')]+'%'};return _0x27daa8;}})});}_0x62ef86=_[_0xaefd('0x46')]({},_0x62ef86,_0x4b6910[_0xaefd('0x47')]);var _0x179648={'where':_0x62ef86[_0xaefd('0x42')]};return db[_0xaefd('0x2f')][_0xaefd('0x22')](_0x179648)[_0xaefd('0x2a')](function(_0x48a7af){_0x3f4947[_0xaefd('0x22')]=_0x48a7af;if(_0x4b6910[_0xaefd('0x37')][_0xaefd('0x48')]){_0x62ef86[_0xaefd('0x49')]=[{'all':!![]}];}return db[_0xaefd('0x2f')][_0xaefd('0x4a')](_0x62ef86);})[_0xaefd('0x2a')](function(_0x1f4a15){_0x3f4947['rows']=_0x1f4a15;return _0x3f4947;})['then'](respondWithFilteredResult(_0x5503d0,_0x62ef86))[_0xaefd('0x4b')](handleError(_0x5503d0,null));};exports[_0xaefd('0x4c')]=function(_0x532328,_0x599738){var _0x17d611={'raw':![],'where':{'id':_0x532328[_0xaefd('0x4d')]['id']}},_0xe37b2c={};_0xe37b2c[_0xaefd('0x34')]=_[_0xaefd('0x38')](db[_0xaefd('0x2f')][_0xaefd('0x30')]);_0xe37b2c[_0xaefd('0x37')]=_[_0xaefd('0x38')](_0x532328['query']);_0xe37b2c[_0xaefd('0x39')]=_[_0xaefd('0x3a')](_0xe37b2c[_0xaefd('0x34')],_0xe37b2c[_0xaefd('0x37')]);_0x17d611[_0xaefd('0x3c')]=_[_0xaefd('0x3a')](_0xe37b2c[_0xaefd('0x34')],qs['fields'](_0x532328[_0xaefd('0x37')]['fields']));_0x17d611[_0xaefd('0x3c')]=_0x17d611[_0xaefd('0x3c')][_0xaefd('0x3d')]?_0x17d611[_0xaefd('0x3c')]:_0xe37b2c['model'];if(_0x532328['query'][_0xaefd('0x48')]){_0x17d611[_0xaefd('0x49')]=[{'all':!![]}];}_0x17d611=_[_0xaefd('0x46')]({},_0x17d611,_0x532328['options']);return db[_0xaefd('0x2f')][_0xaefd('0x4e')](_0x17d611)['then'](handleEntityNotFound(_0x599738,null))[_0xaefd('0x2a')](respondWithResult(_0x599738,null))[_0xaefd('0x4b')](handleError(_0x599738,null));};exports[_0xaefd('0x28')]=function(_0x23d4a9,_0x398aee){return db[_0xaefd('0x2f')][_0xaefd('0x4e')]({'where':{'id':_0x23d4a9[_0xaefd('0x4d')]['id']}})['then'](handleEntityNotFound(_0x398aee,null))['then'](removeEntity(_0x398aee,null))[_0xaefd('0x4b')](handleError(_0x398aee,null));};exports[_0xaefd('0x4f')]=function(_0x578e0c,_0x332743){return db['VoicePrefix'][_0xaefd('0x4f')]()[_0xaefd('0x2a')](respondWithResult(_0x332743,null))[_0xaefd('0x4b')](handleError(_0x332743,null));};exports[_0xaefd('0x50')]=function(_0x27fd3f,_0xf727cd){var _0x4b709a;return db['sequelize'][_0xaefd('0x51')](function(_0x338823){return db['VoicePrefix'][_0xaefd('0x50')](_0x27fd3f[_0xaefd('0x52')],{'transaction':_0x338823})[_0xaefd('0x2a')](function(_0x23fee9){_0x4b709a=_0x23fee9['get']({'plain':!![]});return db['VoiceExtension'][_0xaefd('0x4e')]({'where':{'id':_0x4b709a[_0xaefd('0x53')]},'raw':!![]})[_0xaefd('0x2a')](function(_0x1fe44a){return createVoicePrefixExtensions(_0x4b709a,_0x1fe44a,_0x338823);});});})[_0xaefd('0x2a')](function(){var _0x47cac9=_0x27fd3f[_0xaefd('0x54')][_0xaefd('0x55')]({'plain':!![]});if(!_0x47cac9)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x47cac9[_0xaefd('0x56')]===_0xaefd('0x54')){var _0x5f2925=_0x4b709a;return db[_0xaefd('0x57')][_0xaefd('0x4e')]({'where':{'name':_0xaefd('0x29'),'userProfileId':_0x47cac9['userProfileId']},'raw':!![]})[_0xaefd('0x2a')](function(_0x1a9842){if(_0x1a9842&&_0x1a9842['autoAssociation']===0x0){return db[_0xaefd('0x58')][_0xaefd('0x50')]({'name':_0x5f2925[_0xaefd('0x36')],'resourceId':_0x5f2925['id'],'type':_0x1a9842[_0xaefd('0x36')],'sectionId':_0x1a9842['id']},{})['then'](function(){return _0x4b709a;});}else{return _0x4b709a;}})['catch'](function(_0x232bf9){logger[_0xaefd('0x2b')](_0xaefd('0x59'),_0x232bf9);throw _0x232bf9;});}return _0x4b709a;})[_0xaefd('0x2a')](respondWithResult(_0xf727cd,null))[_0xaefd('0x4b')](handleError(_0xf727cd,null));};function Extension(_0x8ab9e7,_0x314660,_0x368fd3,_0x1e519e){this[_0xaefd('0x5a')]='from-sip';this['exten']=_0x8ab9e7;this[_0xaefd('0x5b')]=_0x368fd3;this[_0xaefd('0x32')]=_0xaefd('0x5c');this[_0xaefd('0x5d')]='Voice\x20Prefix\x20Extension';this[_0xaefd('0x5e')]=_0x314660;this[_0xaefd('0x5f')]=_0x1e519e;}function createVoicePrefixExtensions(_0x422b9e,_0x1ad04e,_0x16c227){return new BPromise(function(_0x37414d,_0x241e93){var _0x2c1004=new Extension(formatPrefixName(_0x422b9e['prefix']),0x1,_0xaefd('0x60'),_0xaefd('0x61'));_0x2c1004[_0xaefd('0x62')]=_0x422b9e['id'];return db[_0xaefd('0x63')]['create'](_0x2c1004,{'transaction':_0x16c227})[_0xaefd('0x2a')](function(_0x53888d){var _0xeb739=_0x53888d[_0xaefd('0x55')]({'plain':!![]});var _0x516913=_['map'](addVoicePrefixExtensions(_0x422b9e,_0x1ad04e),function(_0x45028e){_0x45028e['VoiceExtensionId']=_0xeb739['id'];_0x45028e['VoicePrefixId']=_0x422b9e['id'];return _0x45028e;});return db['VoiceExtension'][_0xaefd('0x64')](_0x516913,{'transaction':_0x16c227})[_0xaefd('0x2a')](function(_0x27fcb4){if(!_0x27fcb4){return _0x241e93(_0xaefd('0x65'));}else{return _0x37414d(_0x27fcb4);}})[_0xaefd('0x4b')](function(_0x384847){return _0x241e93(_0x384847);});});;});};function addVoicePrefixExtensions(_0x509a87,_0x5d308a){var _0x4f8e16=[];var _0x5c7220=formatPrefixName(_0x509a87[_0xaefd('0x66')]);_0x4f8e16['push'](new Extension(_0x5c7220,0x2,_0xaefd('0x67'),'CDR(prefix)='+_0x509a87[_0xaefd('0x36')]));if(_0x509a87[_0xaefd('0x68')]){_0x4f8e16[_0xaefd('0x69')](new Extension(_0x5c7220,0x3,_0xaefd('0x67'),_0xaefd('0x6a')+_0x509a87[_0xaefd('0x68')]));}else{_0x4f8e16[_0xaefd('0x69')](new Extension(_0x5c7220,0x3,'NoOp',_0xaefd('0x6b')));}_0x4f8e16[_0xaefd('0x69')](new Extension(_0x5c7220,0x4,_0xaefd('0x6c'),_0x5d308a[_0xaefd('0x5a')]+','+'${EXTEN:'+(0x8+_0x509a87[_0xaefd('0x36')]['length'])+'}'+','+0x1));return _0x4f8e16;}function formatPrefixName(_0x28db3a){var _0x40b493='_';for(var _0x110379=0x0;_0x110379<_0x28db3a[_0xaefd('0x3d')];_0x110379++){if(_0x28db3a[_0xaefd('0x6d')](_0x110379)=='-'){_0x40b493+=_0x28db3a[_0xaefd('0x6d')](_0x110379);}else{_0x40b493+='['+_0x28db3a['charAt'](_0x110379)+']';}}_0x40b493+='.';return _0x40b493;}exports[_0xaefd('0x27')]=function(_0x3b39db,_0x4a9fa5,_0x39ee5){var _0x279ad4=_0x3b39db['body'];_0x279ad4[_0xaefd('0x66')]=_0xaefd('0x6e')+_0x279ad4[_0xaefd('0x36')]+'-';return db[_0xaefd('0x6f')][_0xaefd('0x51')](function(_0x406c6d){return db[_0xaefd('0x2f')][_0xaefd('0x27')](_0x279ad4,{'where':{'id':_0x279ad4['id']},'transaction':_0x406c6d})[_0xaefd('0x2a')](function(){return db[_0xaefd('0x63')][_0xaefd('0x28')]({'where':{'VoicePrefixId':_0x279ad4['id']},'transaction':_0x406c6d})[_0xaefd('0x2a')](function(){return db[_0xaefd('0x63')][_0xaefd('0x4e')]({'where':{'id':_0x279ad4[_0xaefd('0x53')]},'raw':!![]})[_0xaefd('0x2a')](function(_0x3e0836){return createVoicePrefixExtensions(_0x279ad4,_0x3e0836,_0x406c6d);});});});})['then'](function(){return db[_0xaefd('0x2f')][_0xaefd('0x70')](_0x279ad4['id']);})[_0xaefd('0x2a')](respondWithResult(_0x4a9fa5,null))['catch'](handleError(_0x4a9fa5,null));};exports[_0xaefd('0x71')]=function(_0x12391f,_0x47270b,_0x594a75){return db['VoicePrefix'][_0xaefd('0x4e')]({'where':{'id':_0x12391f['params']['id']}})[_0xaefd('0x2a')](handleEntityNotFound(_0x47270b,null))['then'](function(_0x1e8616){if(_0x1e8616){return _0x1e8616[_0xaefd('0x71')](_0x12391f[_0xaefd('0x52')]['ids'],_['omit'](_0x12391f[_0xaefd('0x52')],[_0xaefd('0x72'),'id'])||{})[_0xaefd('0x73')](function(_0x99f17b){for(var _0x157a2a=0x0;_0x157a2a<_0x12391f[_0xaefd('0x52')]['ids']['length'];_0x157a2a+=0x1){socket['emit']('userVoicePrefix:save',{'UserId':Number(_0x12391f['body'][_0xaefd('0x72')][_0x157a2a]),'VoicePrefixId':Number(_0x12391f[_0xaefd('0x4d')]['id'])});}return _0x99f17b;});}})[_0xaefd('0x2a')](respondWithResult(_0x47270b,null))[_0xaefd('0x4b')](handleError(_0x47270b,null));};exports['removeAgents']=function(_0x3ae6ba,_0x1c4508,_0x4a3586){return db[_0xaefd('0x2f')]['find']({'where':{'id':_0x3ae6ba[_0xaefd('0x4d')]['id']}})['then'](handleEntityNotFound(_0x1c4508,null))[_0xaefd('0x2a')](function(_0x4b1ade){if(_0x4b1ade){return _0x4b1ade[_0xaefd('0x74')](_0x3ae6ba['query'][_0xaefd('0x72')])[_0xaefd('0x2a')](function(){if(_['isArray'](_0x3ae6ba[_0xaefd('0x37')][_0xaefd('0x72')])){for(var _0x47235e=0x0;_0x47235e<_0x3ae6ba['query'][_0xaefd('0x72')][_0xaefd('0x3d')];_0x47235e+=0x1){socket[_0xaefd('0x75')](_0xaefd('0x76'),{'UserId':Number(_0x3ae6ba[_0xaefd('0x37')]['ids'][_0x47235e]),'VoicePrefixId':Number(_0x3ae6ba[_0xaefd('0x4d')]['id'])});}}else{socket[_0xaefd('0x75')]('userVoicePrefix:remove',{'UserId':Number(_0x3ae6ba[_0xaefd('0x37')][_0xaefd('0x72')]),'VoicePrefixId':Number(_0x3ae6ba[_0xaefd('0x4d')]['id'])});}});}})[_0xaefd('0x2a')](respondWithStatusCode(_0x1c4508,null))['catch'](handleError(_0x1c4508,null));};exports[_0xaefd('0x77')]=function(_0x491978,_0xf2925d,_0x1bbeec){var _0x19b574={};var _0x5e2823={};var _0xa53ec;var _0x888d96;return db[_0xaefd('0x2f')]['findOne']({'where':{'id':_0x491978[_0xaefd('0x4d')]['id']}})[_0xaefd('0x2a')](handleEntityNotFound(_0xf2925d,null))[_0xaefd('0x2a')](function(_0x317b55){if(_0x317b55){_0xa53ec=_0x317b55;_0x5e2823['model']=_[_0xaefd('0x38')](db[_0xaefd('0x78')][_0xaefd('0x30')]);_0x5e2823[_0xaefd('0x37')]=_['keys'](_0x491978[_0xaefd('0x37')]);_0x5e2823[_0xaefd('0x39')]=_[_0xaefd('0x3a')](_0x5e2823[_0xaefd('0x34')],_0x5e2823['query']);_0x19b574[_0xaefd('0x3c')]=_['intersection'](_0x5e2823[_0xaefd('0x34')],qs['fields'](_0x491978[_0xaefd('0x37')][_0xaefd('0x3b')]));_0x19b574[_0xaefd('0x3c')]=_0x19b574[_0xaefd('0x3c')][_0xaefd('0x3d')]?_0x19b574['attributes']:_0x5e2823[_0xaefd('0x34')];_0x19b574['order']=qs[_0xaefd('0x41')](_0x491978['query'][_0xaefd('0x41')]);_0x19b574[_0xaefd('0x42')]=qs[_0xaefd('0x39')](_['pick'](_0x491978[_0xaefd('0x37')],_0x5e2823['filters']));if(_0x491978[_0xaefd('0x37')][_0xaefd('0x44')]){_0x19b574[_0xaefd('0x42')]=_[_0xaefd('0x46')](_0x19b574['where'],{'$or':_[_0xaefd('0x35')](_0x19b574[_0xaefd('0x3c')],function(_0x215986){var _0x407c6a={};_0x407c6a[_0x215986]={'$like':'%'+_0x491978[_0xaefd('0x37')][_0xaefd('0x44')]+'%'};return _0x407c6a;})});}_0x19b574=_[_0xaefd('0x46')]({},_0x19b574,_0x491978[_0xaefd('0x47')]);return _0xa53ec[_0xaefd('0x77')](_0x19b574);}})['then'](function(_0x250d61){if(_0x250d61){_0x888d96=_0x250d61[_0xaefd('0x3d')];if(!_0x491978[_0xaefd('0x37')][_0xaefd('0x3e')](_0xaefd('0x3f'))){_0x19b574[_0xaefd('0x23')]=qs[_0xaefd('0x23')](_0x491978[_0xaefd('0x37')][_0xaefd('0x23')]);_0x19b574[_0xaefd('0x20')]=qs[_0xaefd('0x20')](_0x491978[_0xaefd('0x37')][_0xaefd('0x20')]);}return _0xa53ec[_0xaefd('0x77')](_0x19b574);}})[_0xaefd('0x2a')](function(_0x4db4b0){if(_0x4db4b0){return _0x4db4b0?{'count':_0x888d96,'rows':_0x4db4b0}:null;}})['then'](respondWithResult(_0xf2925d,null))[_0xaefd('0x4b')](handleError(_0xf2925d,null));};exports[_0xaefd('0x79')]=function(_0x48e33f,_0x24c994,_0x3ea496){var _0x320cc6={};var _0x17ba3d={};var _0x321b4c;var _0x128a26;return db['VoicePrefix'][_0xaefd('0x7a')]({'where':{'id':_0x48e33f[_0xaefd('0x4d')]['id']}})[_0xaefd('0x2a')](handleEntityNotFound(_0x24c994,null))[_0xaefd('0x2a')](function(_0x4d0fc3){if(_0x4d0fc3){_0x321b4c=_0x4d0fc3;_0x17ba3d[_0xaefd('0x34')]=_[_0xaefd('0x38')](db[_0xaefd('0x7b')][_0xaefd('0x30')]);_0x17ba3d['query']=_[_0xaefd('0x38')](_0x48e33f[_0xaefd('0x37')]);_0x17ba3d['filters']=_[_0xaefd('0x3a')](_0x17ba3d[_0xaefd('0x34')],_0x17ba3d['query']);_0x320cc6[_0xaefd('0x3c')]=_[_0xaefd('0x3a')](_0x17ba3d[_0xaefd('0x34')],qs['fields'](_0x48e33f[_0xaefd('0x37')][_0xaefd('0x3b')]));_0x320cc6['attributes']=_0x320cc6[_0xaefd('0x3c')][_0xaefd('0x3d')]?_0x320cc6[_0xaefd('0x3c')]:_0x17ba3d[_0xaefd('0x34')];_0x320cc6[_0xaefd('0x40')]=qs[_0xaefd('0x41')](_0x48e33f[_0xaefd('0x37')]['sort']);_0x320cc6[_0xaefd('0x42')]=qs[_0xaefd('0x39')](_['pick'](_0x48e33f['query'],_0x17ba3d[_0xaefd('0x39')]));if(_0x48e33f[_0xaefd('0x37')][_0xaefd('0x44')]){_0x320cc6['where']=_[_0xaefd('0x46')](_0x320cc6['where'],{'$or':_['map'](_0x320cc6[_0xaefd('0x3c')],function(_0x32045b){var _0x3056d2={};_0x3056d2[_0x32045b]={'$like':'%'+_0x48e33f[_0xaefd('0x37')][_0xaefd('0x44')]+'%'};return _0x3056d2;})});}_0x320cc6=_[_0xaefd('0x46')]({},_0x320cc6,_0x48e33f[_0xaefd('0x47')]);return _0x321b4c[_0xaefd('0x79')](_0x320cc6);}})[_0xaefd('0x2a')](function(_0x4e8481){if(_0x4e8481){_0x128a26=_0x4e8481[_0xaefd('0x3d')];if(!_0x48e33f[_0xaefd('0x37')][_0xaefd('0x3e')](_0xaefd('0x3f'))){_0x320cc6[_0xaefd('0x23')]=qs['limit'](_0x48e33f[_0xaefd('0x37')][_0xaefd('0x23')]);_0x320cc6['offset']=qs[_0xaefd('0x20')](_0x48e33f['query'][_0xaefd('0x20')]);}return _0x321b4c['getTeams'](_0x320cc6);}})['then'](function(_0x2d88da){if(_0x2d88da){return _0x2d88da?{'count':_0x128a26,'rows':_0x2d88da}:null;}})[_0xaefd('0x2a')](respondWithResult(_0x24c994,null))['catch'](handleError(_0x24c994,null));};exports[_0xaefd('0x7c')]=function(_0x1aa4f7,_0x67e396,_0x261efa){var _0x4e8867=_0x1aa4f7[_0xaefd('0x52')][_0xaefd('0x72')];var _0x5dad4e;return db[_0xaefd('0x7b')]['findAll']({'where':{'id':_0x4e8867},'attributes':['id'],'include':[{'model':db[_0xaefd('0x78')],'as':'Agents','attributes':['id','name','online','voicePause',_0xaefd('0x7d')],'raw':!![]}]})[_0xaefd('0x2a')](function(_0x3e7f61){if(_0x3e7f61){_0x5dad4e=_0x3e7f61;var _0x13fd50=_[_0xaefd('0x7e')](_0x3e7f61,function(_0x3a705b){var _0x46d502=_0x3a705b[_0xaefd('0x55')]({'plain':!![]});return _0x46d502[_0xaefd('0x7f')];});return db[_0xaefd('0x2f')]['find']({'where':{'id':_0x1aa4f7[_0xaefd('0x4d')]['id']}})['then'](function(_0x3dafc3){return db[_0xaefd('0x6f')][_0xaefd('0x51')](function(_0x336594){return _0x3dafc3[_0xaefd('0x7c')](_0x4e8867,{'transaction':_0x336594})['then'](function(){return BPromise['each'](_0x5dad4e,function(_0x27790f){return db['TeamVoicePrefix'][_0xaefd('0x80')]({'TeamId':_0x27790f['id'],'VoicePrefixId':_0x1aa4f7[_0xaefd('0x4d')]['id']},{'transaction':_0x336594});});})['then'](function(){return BPromise[_0xaefd('0x81')](_0x13fd50,function(_0x4887f7){return db[_0xaefd('0x82')]['findOrCreate']({'where':{'UserId':_0x4887f7['id'],'VoicePrefixId':_0x1aa4f7[_0xaefd('0x4d')]['id']},'transaction':_0x336594});});})['then'](function(){_0x13fd50[_0xaefd('0x83')](function(_0x47a053){socket['emit'](_0xaefd('0x84'),{'UserId':_0x47a053['id'],'VoicePrefixId':_0x3dafc3['id']});});});});});}})[_0xaefd('0x2a')](respondWithStatusCode(_0x67e396,null))[_0xaefd('0x4b')](handleError(_0x67e396,null));};exports[_0xaefd('0x85')]=function(_0x2f3049,_0x7fd0d8,_0x2efdca){return db[_0xaefd('0x7b')][_0xaefd('0x4a')]({'where':{'id':_0x2f3049[_0xaefd('0x37')]['ids']},'attributes':['id'],'include':[{'model':db[_0xaefd('0x78')],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0xaefd('0x2a')](handleEntityNotFound(_0x7fd0d8,null))[_0xaefd('0x2a')](function(_0x4c3cb0){var _0x7380d5=_['map'](_0x4c3cb0,'id');var _0x3723e6=[];var _0x58e4c5=[];var _0x42e09b=squel[_0xaefd('0x86')]();_0x42e09b['field'](_0xaefd('0x87'))['from']('team_has_voice_prefixes','tq')['join'](_0xaefd('0x88'),'ut',_0xaefd('0x89'))['where']('VoicePrefixId\x20=\x20?',_0x2f3049[_0xaefd('0x4d')]['id']);for(var _0x35b685=0x0;_0x35b685<_0x4c3cb0['length'];_0x35b685+=0x1){let _0x1af15a=_0x4c3cb0[_0x35b685];for(var _0x42c685=0x0;_0x42c685<_0x1af15a[_0xaefd('0x7f')][_0xaefd('0x3d')];_0x42c685+=0x1){let _0x2fe05a=_0x1af15a[_0xaefd('0x7f')][_0x42c685];var _0x4df2de=_0x42e09b['clone']();_0x4df2de[_0xaefd('0x42')]('ut.UserId\x20=\x20?',_0x2fe05a['id']);_0x58e4c5['push'](db[_0xaefd('0x6f')][_0xaefd('0x37')](_0x4df2de[_0xaefd('0x8a')](),{'type':db[_0xaefd('0x6f')][_0xaefd('0x8b')][_0xaefd('0x8c')]})['then'](function(_0x129a22){if(_0x129a22[_0xaefd('0x3d')]===0x1){return _0x2fe05a['id'];}else{var _0x1911a2=_[_0xaefd('0x8d')](_[_0xaefd('0x35')](_0x129a22,_0xaefd('0x8e')),function(_0x1ce217){return _['includes'](_0x7380d5,_0x1ce217);});if(_0x1911a2){return _0x2fe05a['id'];}}}));}}return BPromise[_0xaefd('0x8f')](_0x58e4c5)['then'](function(_0x1f0cc0){_0x3723e6=_(_0x3723e6)[_0xaefd('0x90')](_0x1f0cc0)[_0xaefd('0x91')]()[_0xaefd('0x92')]();return db[_0xaefd('0x2f')][_0xaefd('0x4e')]({'where':{'id':_0x2f3049[_0xaefd('0x4d')]['id']}})[_0xaefd('0x2a')](function(_0x34cc20){return db[_0xaefd('0x6f')][_0xaefd('0x51')](function(_0x5ee5cd){return _0x34cc20['removeTeams'](_0x2f3049[_0xaefd('0x37')][_0xaefd('0x72')],{'transaction':_0x5ee5cd})['then'](function(){if(!_[_0xaefd('0x93')](_0x3723e6)){return _0x34cc20[_0xaefd('0x74')](_0x3723e6,{'transaction':_0x5ee5cd});}})[_0xaefd('0x2a')](function(){_0x3723e6[_0xaefd('0x83')](function(_0x7a283b){socket[_0xaefd('0x75')]('userVoicePrefix:remove',{'UserId':_0x7a283b,'VoicePrefixId':_0x34cc20['id']});});});});});});})['then'](respondWithStatusCode(_0x7fd0d8,null))[_0xaefd('0x4b')](handleError(_0x7fd0d8,null));};
\ No newline at end of file
+var _0x236c=['User','getAgents','getTeams','Team','pick','addTeams','findAll','Agents','online','interface','flatMap','each','TeamVoicePrefix','UserVoicePrefix','findOrCreate','forEach','removeTeams','select','team_has_voice_prefixes','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','VoicePrefixId\x20=\x20?','clone','ut.UserId\x20=\x20?','toString','QueryTypes','TeamId','includes','all','union','compact','value','isEmpty','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','defaults','socket.io-emitter','redis','./voicePrefix.socket','register','status','end','undefined','count','offset','limit','set','json','apply','reject','save','update','then','UserProfileResource','sendStatus','stack','name','send','index','map','VoicePrefix','rawAttributes','fieldName','query','keys','filters','intersection','attributes','fields','length','model','hasOwnProperty','nolimit','order','sort','filter','where','merge','type','VIRTUAL','options','includeAll','include','rows','catch','show','find','destroy','params','describe','create','sequelize','transaction','get','VoiceExtension','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','error','context','exten','system','description','Voice\x20Prefix\x20Extension','appdata','prefix','NoOp','Voice\x20Prefix','bulkCreate','push','Set','CDR(prefix)=','callerIdAll','No\x20callerid\x20available','goto','${EXTEN:','charAt','body','system-','findById','addAgents','ids','omit','spread','removeAgents','isArray','emit','userVoicePrefix:remove','findOne'];(function(_0xf50820,_0x56f041){var _0x2a9b10=function(_0x33f0f4){while(--_0x33f0f4){_0xf50820['push'](_0xf50820['shift']());}};_0x2a9b10(++_0x56f041);}(_0x236c,0x155));var _0xc236=function(_0x3ae9de,_0x46f134){_0x3ae9de=_0x3ae9de-0x0;var _0x33711b=_0x236c[_0x3ae9de];return _0x33711b;};'use strict';var emlformat=require(_0xc236('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xc236('0x1'));var jsonpatch=require(_0xc236('0x2'));var rp=require(_0xc236('0x3'));var moment=require(_0xc236('0x4'));var BPromise=require(_0xc236('0x5'));var Mustache=require('mustache');var util=require(_0xc236('0x6'));var path=require(_0xc236('0x7'));var sox=require(_0xc236('0x8'));var csv=require(_0xc236('0x9'));var ejs=require(_0xc236('0xa'));var fs=require('fs');var fs_extra=require(_0xc236('0xb'));var _=require('lodash');var squel=require(_0xc236('0xc'));var crypto=require(_0xc236('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xc236('0xe'));var Papa=require('papaparse');var Redis=require(_0xc236('0xf'));var authService=require(_0xc236('0x10'));var qs=require(_0xc236('0x11'));var as=require(_0xc236('0x12'));var hardwareService=require(_0xc236('0x13'));var logger=require('../../config/logger')(_0xc236('0x14'));var utils=require(_0xc236('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xc236('0x16'));var db=require(_0xc236('0x17'))['db'];config['redis']=_[_0xc236('0x18')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xc236('0x19'))(new Redis(config[_0xc236('0x1a')]));require(_0xc236('0x1b'))[_0xc236('0x1c')](socket);function respondWithStatusCode(_0x5052db,_0x13a42b){_0x13a42b=_0x13a42b||0xcc;return function(_0x55b188){if(_0x55b188){return _0x5052db['sendStatus'](_0x13a42b);}return _0x5052db[_0xc236('0x1d')](_0x13a42b)[_0xc236('0x1e')]();};}function respondWithResult(_0x443a46,_0x1aeafc){_0x1aeafc=_0x1aeafc||0xc8;return function(_0x267913){if(_0x267913){return _0x443a46['status'](_0x1aeafc)['json'](_0x267913);}};}function respondWithFilteredResult(_0x57355b,_0x3f5884){return function(_0x76f45){if(_0x76f45){var _0x11ec65=typeof _0x3f5884['offset']===_0xc236('0x1f')&&typeof _0x3f5884['limit']==='undefined';var _0x1eafba=_0x76f45[_0xc236('0x20')];var _0x3a6183=_0x11ec65?0x0:_0x3f5884[_0xc236('0x21')];var _0x2b6d3f=_0x11ec65?_0x76f45[_0xc236('0x20')]:_0x3f5884[_0xc236('0x21')]+_0x3f5884[_0xc236('0x22')];var _0x54ffac;if(_0x2b6d3f>=_0x1eafba){_0x2b6d3f=_0x1eafba;_0x54ffac=0xc8;}else{_0x54ffac=0xce;}_0x57355b[_0xc236('0x1d')](_0x54ffac);return _0x57355b[_0xc236('0x23')]('Content-Range',_0x3a6183+'-'+_0x2b6d3f+'/'+_0x1eafba)[_0xc236('0x24')](_0x76f45);}return null;};}function patchUpdates(_0x34d73a){return function(_0x3bd41b){try{jsonpatch[_0xc236('0x25')](_0x3bd41b,_0x34d73a,!![]);}catch(_0x27afba){return BPromise[_0xc236('0x26')](_0x27afba);}return _0x3bd41b[_0xc236('0x27')]();};}function saveUpdates(_0xf921e6,_0x1d65e2){return function(_0x3b4059){if(_0x3b4059){return _0x3b4059[_0xc236('0x28')](_0xf921e6)['then'](function(_0x308cd6){return _0x308cd6;});}return null;};}function removeEntity(_0x21d78f,_0x356042){return function(_0x9017ec){if(_0x9017ec){return _0x9017ec['destroy']()[_0xc236('0x29')](function(){var _0x5da4b2=_0x9017ec['get']({'plain':!![]});var _0x15ead8='VoicePrefixes';return db[_0xc236('0x2a')]['destroy']({'where':{'type':_0x15ead8,'resourceId':_0x5da4b2['id']}})[_0xc236('0x29')](function(){return _0x9017ec;});})['then'](function(){_0x21d78f[_0xc236('0x1d')](0xcc)[_0xc236('0x1e')]();});}};}function handleEntityNotFound(_0x4f5175,_0x5a61b5){return function(_0x265c8d){if(!_0x265c8d){_0x4f5175[_0xc236('0x2b')](0x194);}return _0x265c8d;};}function handleError(_0x1f4995,_0x6ad83f){_0x6ad83f=_0x6ad83f||0x1f4;return function(_0x5f3891){logger['error'](_0x5f3891[_0xc236('0x2c')]);if(_0x5f3891['name']){delete _0x5f3891[_0xc236('0x2d')];}_0x1f4995['status'](_0x6ad83f)[_0xc236('0x2e')](_0x5f3891);};}exports[_0xc236('0x2f')]=function(_0x57c99e,_0x5a5ec3){var _0x2537f9={},_0x3053a3={},_0xbda858={'count':0x0,'rows':[]};var _0x2f64bd=_[_0xc236('0x30')](db[_0xc236('0x31')][_0xc236('0x32')],function(_0x22a2ca){return{'name':_0x22a2ca[_0xc236('0x33')],'type':_0x22a2ca['type']['key']};});_0x3053a3['model']=_[_0xc236('0x30')](_0x2f64bd,_0xc236('0x2d'));_0x3053a3[_0xc236('0x34')]=_[_0xc236('0x35')](_0x57c99e[_0xc236('0x34')]);_0x3053a3[_0xc236('0x36')]=_[_0xc236('0x37')](_0x3053a3['model'],_0x3053a3[_0xc236('0x34')]);_0x2537f9[_0xc236('0x38')]=_[_0xc236('0x37')](_0x3053a3['model'],qs[_0xc236('0x39')](_0x57c99e[_0xc236('0x34')][_0xc236('0x39')]));_0x2537f9[_0xc236('0x38')]=_0x2537f9['attributes'][_0xc236('0x3a')]?_0x2537f9[_0xc236('0x38')]:_0x3053a3[_0xc236('0x3b')];if(!_0x57c99e[_0xc236('0x34')][_0xc236('0x3c')](_0xc236('0x3d'))){_0x2537f9[_0xc236('0x22')]=qs[_0xc236('0x22')](_0x57c99e[_0xc236('0x34')][_0xc236('0x22')]);_0x2537f9[_0xc236('0x21')]=qs[_0xc236('0x21')](_0x57c99e[_0xc236('0x34')][_0xc236('0x21')]);}_0x2537f9[_0xc236('0x3e')]=qs[_0xc236('0x3f')](_0x57c99e[_0xc236('0x34')]['sort']);_0x2537f9['where']=qs['filters'](_['pick'](_0x57c99e[_0xc236('0x34')],_0x3053a3['filters']),_0x2f64bd);if(_0x57c99e[_0xc236('0x34')][_0xc236('0x40')]){_0x2537f9[_0xc236('0x41')]=_[_0xc236('0x42')](_0x2537f9[_0xc236('0x41')],{'$or':_[_0xc236('0x30')](_0x2f64bd,function(_0x427de1){if(_0x427de1[_0xc236('0x43')]!==_0xc236('0x44')){var _0x12a270={};_0x12a270[_0x427de1[_0xc236('0x2d')]]={'$like':'%'+_0x57c99e[_0xc236('0x34')][_0xc236('0x40')]+'%'};return _0x12a270;}})});}_0x2537f9=_[_0xc236('0x42')]({},_0x2537f9,_0x57c99e[_0xc236('0x45')]);var _0x594ffc={'where':_0x2537f9[_0xc236('0x41')]};return db[_0xc236('0x31')]['count'](_0x594ffc)[_0xc236('0x29')](function(_0x5b0bc5){_0xbda858[_0xc236('0x20')]=_0x5b0bc5;if(_0x57c99e['query'][_0xc236('0x46')]){_0x2537f9[_0xc236('0x47')]=[{'all':!![]}];}return db[_0xc236('0x31')]['findAll'](_0x2537f9);})[_0xc236('0x29')](function(_0x429e08){_0xbda858[_0xc236('0x48')]=_0x429e08;return _0xbda858;})['then'](respondWithFilteredResult(_0x5a5ec3,_0x2537f9))[_0xc236('0x49')](handleError(_0x5a5ec3,null));};exports[_0xc236('0x4a')]=function(_0x317431,_0x408312){var _0xc35ef9={'raw':![],'where':{'id':_0x317431['params']['id']}},_0x3235b0={};_0x3235b0[_0xc236('0x3b')]=_['keys'](db[_0xc236('0x31')][_0xc236('0x32')]);_0x3235b0[_0xc236('0x34')]=_[_0xc236('0x35')](_0x317431[_0xc236('0x34')]);_0x3235b0[_0xc236('0x36')]=_[_0xc236('0x37')](_0x3235b0['model'],_0x3235b0[_0xc236('0x34')]);_0xc35ef9['attributes']=_[_0xc236('0x37')](_0x3235b0[_0xc236('0x3b')],qs['fields'](_0x317431[_0xc236('0x34')][_0xc236('0x39')]));_0xc35ef9[_0xc236('0x38')]=_0xc35ef9[_0xc236('0x38')][_0xc236('0x3a')]?_0xc35ef9[_0xc236('0x38')]:_0x3235b0[_0xc236('0x3b')];if(_0x317431['query']['includeAll']){_0xc35ef9[_0xc236('0x47')]=[{'all':!![]}];}_0xc35ef9=_[_0xc236('0x42')]({},_0xc35ef9,_0x317431['options']);return db[_0xc236('0x31')][_0xc236('0x4b')](_0xc35ef9)[_0xc236('0x29')](handleEntityNotFound(_0x408312,null))[_0xc236('0x29')](respondWithResult(_0x408312,null))[_0xc236('0x49')](handleError(_0x408312,null));};exports[_0xc236('0x4c')]=function(_0x300523,_0x14a83d){return db[_0xc236('0x31')]['find']({'where':{'id':_0x300523[_0xc236('0x4d')]['id']}})[_0xc236('0x29')](handleEntityNotFound(_0x14a83d,null))[_0xc236('0x29')](removeEntity(_0x14a83d,null))[_0xc236('0x49')](handleError(_0x14a83d,null));};exports[_0xc236('0x4e')]=function(_0x28e6b4,_0x3ea045){return db['VoicePrefix'][_0xc236('0x4e')]()[_0xc236('0x29')](respondWithResult(_0x3ea045,null))[_0xc236('0x49')](handleError(_0x3ea045,null));};exports[_0xc236('0x4f')]=function(_0x4860d8,_0xa34c01){var _0x3e6da6;return db[_0xc236('0x50')][_0xc236('0x51')](function(_0x9d81c8){return db['VoicePrefix'][_0xc236('0x4f')](_0x4860d8['body'],{'transaction':_0x9d81c8})[_0xc236('0x29')](function(_0x93904b){_0x3e6da6=_0x93904b[_0xc236('0x52')]({'plain':!![]});return db[_0xc236('0x53')][_0xc236('0x4b')]({'where':{'id':_0x3e6da6['VoiceExtensionId']},'raw':!![]})['then'](function(_0x3bee67){return createVoicePrefixExtensions(_0x3e6da6,_0x3bee67,_0x9d81c8);});});})[_0xc236('0x29')](function(){var _0x205d09=_0x4860d8[_0xc236('0x54')][_0xc236('0x52')]({'plain':!![]});if(!_0x205d09)throw new Error(_0xc236('0x55'));if(_0x205d09[_0xc236('0x56')]===_0xc236('0x54')){var _0x24af08=_0x3e6da6;return db[_0xc236('0x57')]['find']({'where':{'name':'VoicePrefixes','userProfileId':_0x205d09[_0xc236('0x58')]},'raw':!![]})[_0xc236('0x29')](function(_0x8e19c6){if(_0x8e19c6&&_0x8e19c6[_0xc236('0x59')]===0x0){return db['UserProfileResource'][_0xc236('0x4f')]({'name':_0x24af08[_0xc236('0x2d')],'resourceId':_0x24af08['id'],'type':_0x8e19c6['name'],'sectionId':_0x8e19c6['id']},{})[_0xc236('0x29')](function(){return _0x3e6da6;});}else{return _0x3e6da6;}})[_0xc236('0x49')](function(_0x445f03){logger[_0xc236('0x5a')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x445f03);throw _0x445f03;});}return _0x3e6da6;})[_0xc236('0x29')](respondWithResult(_0xa34c01,null))[_0xc236('0x49')](handleError(_0xa34c01,null));};function Extension(_0x35955c,_0x2602f8,_0x41a160,_0x1edbae){this[_0xc236('0x5b')]='from-sip';this[_0xc236('0x5c')]=_0x35955c;this['app']=_0x41a160;this[_0xc236('0x43')]=_0xc236('0x5d');this[_0xc236('0x5e')]=_0xc236('0x5f');this['priority']=_0x2602f8;this[_0xc236('0x60')]=_0x1edbae;}function createVoicePrefixExtensions(_0x3f1a5f,_0x379e99,_0x4ed4fc){return new BPromise(function(_0x175d5d,_0x2bc7f0){var _0x2ecad1=new Extension(formatPrefixName(_0x3f1a5f[_0xc236('0x61')]),0x1,_0xc236('0x62'),_0xc236('0x63'));_0x2ecad1['VoicePrefixId']=_0x3f1a5f['id'];return db['VoiceExtension'][_0xc236('0x4f')](_0x2ecad1,{'transaction':_0x4ed4fc})[_0xc236('0x29')](function(_0x125f9a){var _0x1e9ad8=_0x125f9a[_0xc236('0x52')]({'plain':!![]});var _0x4649a3=_[_0xc236('0x30')](addVoicePrefixExtensions(_0x3f1a5f,_0x379e99),function(_0x553f58){_0x553f58['VoiceExtensionId']=_0x1e9ad8['id'];_0x553f58['VoicePrefixId']=_0x3f1a5f['id'];return _0x553f58;});return db[_0xc236('0x53')][_0xc236('0x64')](_0x4649a3,{'transaction':_0x4ed4fc})[_0xc236('0x29')](function(_0x2d6b00){if(!_0x2d6b00){return _0x2bc7f0('Extensions\x20creation\x20failed');}else{return _0x175d5d(_0x2d6b00);}})['catch'](function(_0x506910){return _0x2bc7f0(_0x506910);});});;});};function addVoicePrefixExtensions(_0x528d3d,_0x145e86){var _0x5df2ba=[];var _0x20a1eb=formatPrefixName(_0x528d3d['prefix']);_0x5df2ba[_0xc236('0x65')](new Extension(_0x20a1eb,0x2,_0xc236('0x66'),_0xc236('0x67')+_0x528d3d[_0xc236('0x2d')]));if(_0x528d3d[_0xc236('0x68')]){_0x5df2ba[_0xc236('0x65')](new Extension(_0x20a1eb,0x3,_0xc236('0x66'),'PREFIX-CALLERIDALL='+_0x528d3d[_0xc236('0x68')]));}else{_0x5df2ba['push'](new Extension(_0x20a1eb,0x3,_0xc236('0x62'),_0xc236('0x69')));}_0x5df2ba[_0xc236('0x65')](new Extension(_0x20a1eb,0x4,_0xc236('0x6a'),_0x145e86[_0xc236('0x5b')]+','+_0xc236('0x6b')+(0x8+_0x528d3d['name'][_0xc236('0x3a')])+'}'+','+0x1));return _0x5df2ba;}function formatPrefixName(_0x94f65d){var _0x4bb0c6='_';for(var _0x2fb86f=0x0;_0x2fb86f<_0x94f65d[_0xc236('0x3a')];_0x2fb86f++){if(_0x94f65d[_0xc236('0x6c')](_0x2fb86f)=='-'){_0x4bb0c6+=_0x94f65d['charAt'](_0x2fb86f);}else{_0x4bb0c6+='['+_0x94f65d[_0xc236('0x6c')](_0x2fb86f)+']';}}_0x4bb0c6+='.';return _0x4bb0c6;}exports[_0xc236('0x28')]=function(_0x5897a1,_0x2c8f89,_0x340f7c){var _0x1c07d7=_0x5897a1[_0xc236('0x6d')];_0x1c07d7[_0xc236('0x61')]=_0xc236('0x6e')+_0x1c07d7[_0xc236('0x2d')]+'-';return db[_0xc236('0x50')][_0xc236('0x51')](function(_0x5d627d){return db[_0xc236('0x31')][_0xc236('0x28')](_0x1c07d7,{'where':{'id':_0x1c07d7['id']},'transaction':_0x5d627d})[_0xc236('0x29')](function(){return db['VoiceExtension'][_0xc236('0x4c')]({'where':{'VoicePrefixId':_0x1c07d7['id']},'transaction':_0x5d627d})[_0xc236('0x29')](function(){return db[_0xc236('0x53')][_0xc236('0x4b')]({'where':{'id':_0x1c07d7['VoiceExtensionId']},'raw':!![]})[_0xc236('0x29')](function(_0x4a433e){return createVoicePrefixExtensions(_0x1c07d7,_0x4a433e,_0x5d627d);});});});})[_0xc236('0x29')](function(){return db['VoicePrefix'][_0xc236('0x6f')](_0x1c07d7['id']);})[_0xc236('0x29')](respondWithResult(_0x2c8f89,null))['catch'](handleError(_0x2c8f89,null));};exports['addAgents']=function(_0x4ec6d1,_0x930527,_0x4e9624){return db[_0xc236('0x31')][_0xc236('0x4b')]({'where':{'id':_0x4ec6d1['params']['id']}})[_0xc236('0x29')](handleEntityNotFound(_0x930527,null))[_0xc236('0x29')](function(_0x4d7e8d){if(_0x4d7e8d){return _0x4d7e8d[_0xc236('0x70')](_0x4ec6d1[_0xc236('0x6d')][_0xc236('0x71')],_[_0xc236('0x72')](_0x4ec6d1['body'],[_0xc236('0x71'),'id'])||{})[_0xc236('0x73')](function(_0x14cbad){for(var _0x1a27c9=0x0;_0x1a27c9<_0x4ec6d1[_0xc236('0x6d')][_0xc236('0x71')][_0xc236('0x3a')];_0x1a27c9+=0x1){socket['emit']('userVoicePrefix:save',{'UserId':Number(_0x4ec6d1[_0xc236('0x6d')][_0xc236('0x71')][_0x1a27c9]),'VoicePrefixId':Number(_0x4ec6d1[_0xc236('0x4d')]['id'])});}return _0x14cbad;});}})[_0xc236('0x29')](respondWithResult(_0x930527,null))[_0xc236('0x49')](handleError(_0x930527,null));};exports[_0xc236('0x74')]=function(_0x8967c,_0x1c6923,_0x4df1a5){return db['VoicePrefix'][_0xc236('0x4b')]({'where':{'id':_0x8967c['params']['id']}})[_0xc236('0x29')](handleEntityNotFound(_0x1c6923,null))[_0xc236('0x29')](function(_0x25d982){if(_0x25d982){return _0x25d982['removeAgents'](_0x8967c[_0xc236('0x34')]['ids'])[_0xc236('0x29')](function(){if(_[_0xc236('0x75')](_0x8967c[_0xc236('0x34')][_0xc236('0x71')])){for(var _0x48cf03=0x0;_0x48cf03<_0x8967c[_0xc236('0x34')][_0xc236('0x71')]['length'];_0x48cf03+=0x1){socket[_0xc236('0x76')](_0xc236('0x77'),{'UserId':Number(_0x8967c[_0xc236('0x34')][_0xc236('0x71')][_0x48cf03]),'VoicePrefixId':Number(_0x8967c[_0xc236('0x4d')]['id'])});}}else{socket[_0xc236('0x76')](_0xc236('0x77'),{'UserId':Number(_0x8967c['query'][_0xc236('0x71')]),'VoicePrefixId':Number(_0x8967c[_0xc236('0x4d')]['id'])});}});}})[_0xc236('0x29')](respondWithStatusCode(_0x1c6923,null))[_0xc236('0x49')](handleError(_0x1c6923,null));};exports['getAgents']=function(_0x3646c6,_0x1ee8d0,_0x50d1c6){var _0x40fd6d={};var _0x593b62={};var _0x25f91e;var _0xfc94e8;return db['VoicePrefix'][_0xc236('0x78')]({'where':{'id':_0x3646c6[_0xc236('0x4d')]['id']}})['then'](handleEntityNotFound(_0x1ee8d0,null))['then'](function(_0x2a9308){if(_0x2a9308){_0x25f91e=_0x2a9308;_0x593b62[_0xc236('0x3b')]=_[_0xc236('0x35')](db[_0xc236('0x79')][_0xc236('0x32')]);_0x593b62[_0xc236('0x34')]=_['keys'](_0x3646c6[_0xc236('0x34')]);_0x593b62[_0xc236('0x36')]=_[_0xc236('0x37')](_0x593b62[_0xc236('0x3b')],_0x593b62['query']);_0x40fd6d[_0xc236('0x38')]=_[_0xc236('0x37')](_0x593b62[_0xc236('0x3b')],qs[_0xc236('0x39')](_0x3646c6[_0xc236('0x34')]['fields']));_0x40fd6d['attributes']=_0x40fd6d[_0xc236('0x38')]['length']?_0x40fd6d[_0xc236('0x38')]:_0x593b62[_0xc236('0x3b')];_0x40fd6d[_0xc236('0x3e')]=qs[_0xc236('0x3f')](_0x3646c6['query'][_0xc236('0x3f')]);_0x40fd6d['where']=qs[_0xc236('0x36')](_['pick'](_0x3646c6[_0xc236('0x34')],_0x593b62[_0xc236('0x36')]));if(_0x3646c6[_0xc236('0x34')][_0xc236('0x40')]){_0x40fd6d[_0xc236('0x41')]=_[_0xc236('0x42')](_0x40fd6d[_0xc236('0x41')],{'$or':_[_0xc236('0x30')](_0x40fd6d[_0xc236('0x38')],function(_0x577ace){var _0x4849a6={};_0x4849a6[_0x577ace]={'$like':'%'+_0x3646c6[_0xc236('0x34')][_0xc236('0x40')]+'%'};return _0x4849a6;})});}_0x40fd6d=_[_0xc236('0x42')]({},_0x40fd6d,_0x3646c6[_0xc236('0x45')]);return _0x25f91e[_0xc236('0x7a')](_0x40fd6d);}})[_0xc236('0x29')](function(_0x557ad9){if(_0x557ad9){_0xfc94e8=_0x557ad9[_0xc236('0x3a')];if(!_0x3646c6[_0xc236('0x34')][_0xc236('0x3c')](_0xc236('0x3d'))){_0x40fd6d[_0xc236('0x22')]=qs[_0xc236('0x22')](_0x3646c6[_0xc236('0x34')][_0xc236('0x22')]);_0x40fd6d[_0xc236('0x21')]=qs[_0xc236('0x21')](_0x3646c6[_0xc236('0x34')][_0xc236('0x21')]);}return _0x25f91e[_0xc236('0x7a')](_0x40fd6d);}})[_0xc236('0x29')](function(_0x475c8f){if(_0x475c8f){return _0x475c8f?{'count':_0xfc94e8,'rows':_0x475c8f}:null;}})['then'](respondWithResult(_0x1ee8d0,null))[_0xc236('0x49')](handleError(_0x1ee8d0,null));};exports[_0xc236('0x7b')]=function(_0x17080e,_0x1070a3,_0x2bc6ed){var _0x4ed695={};var _0x424b51={};var _0x7bbb2c;var _0x1a938e;return db['VoicePrefix'][_0xc236('0x78')]({'where':{'id':_0x17080e['params']['id']}})['then'](handleEntityNotFound(_0x1070a3,null))[_0xc236('0x29')](function(_0x436845){if(_0x436845){_0x7bbb2c=_0x436845;_0x424b51[_0xc236('0x3b')]=_[_0xc236('0x35')](db[_0xc236('0x7c')]['rawAttributes']);_0x424b51[_0xc236('0x34')]=_[_0xc236('0x35')](_0x17080e[_0xc236('0x34')]);_0x424b51[_0xc236('0x36')]=_[_0xc236('0x37')](_0x424b51['model'],_0x424b51['query']);_0x4ed695[_0xc236('0x38')]=_[_0xc236('0x37')](_0x424b51[_0xc236('0x3b')],qs[_0xc236('0x39')](_0x17080e['query'][_0xc236('0x39')]));_0x4ed695[_0xc236('0x38')]=_0x4ed695[_0xc236('0x38')][_0xc236('0x3a')]?_0x4ed695[_0xc236('0x38')]:_0x424b51['model'];_0x4ed695[_0xc236('0x3e')]=qs[_0xc236('0x3f')](_0x17080e[_0xc236('0x34')][_0xc236('0x3f')]);_0x4ed695[_0xc236('0x41')]=qs['filters'](_[_0xc236('0x7d')](_0x17080e[_0xc236('0x34')],_0x424b51['filters']));if(_0x17080e[_0xc236('0x34')][_0xc236('0x40')]){_0x4ed695[_0xc236('0x41')]=_[_0xc236('0x42')](_0x4ed695[_0xc236('0x41')],{'$or':_['map'](_0x4ed695[_0xc236('0x38')],function(_0x182750){var _0x32f936={};_0x32f936[_0x182750]={'$like':'%'+_0x17080e[_0xc236('0x34')][_0xc236('0x40')]+'%'};return _0x32f936;})});}_0x4ed695=_[_0xc236('0x42')]({},_0x4ed695,_0x17080e['options']);return _0x7bbb2c[_0xc236('0x7b')](_0x4ed695);}})['then'](function(_0x391ad3){if(_0x391ad3){_0x1a938e=_0x391ad3['length'];if(!_0x17080e[_0xc236('0x34')]['hasOwnProperty'](_0xc236('0x3d'))){_0x4ed695['limit']=qs[_0xc236('0x22')](_0x17080e[_0xc236('0x34')][_0xc236('0x22')]);_0x4ed695[_0xc236('0x21')]=qs[_0xc236('0x21')](_0x17080e[_0xc236('0x34')]['offset']);}return _0x7bbb2c[_0xc236('0x7b')](_0x4ed695);}})[_0xc236('0x29')](function(_0x32d1cc){if(_0x32d1cc){return _0x32d1cc?{'count':_0x1a938e,'rows':_0x32d1cc}:null;}})[_0xc236('0x29')](respondWithResult(_0x1070a3,null))[_0xc236('0x49')](handleError(_0x1070a3,null));};exports[_0xc236('0x7e')]=function(_0x424875,_0x14177d,_0x30e7b3){var _0x23fc57=_0x424875[_0xc236('0x6d')][_0xc236('0x71')];var _0x2bed4b;return db[_0xc236('0x7c')][_0xc236('0x7f')]({'where':{'id':_0x23fc57},'attributes':['id'],'include':[{'model':db[_0xc236('0x79')],'as':_0xc236('0x80'),'attributes':['id',_0xc236('0x2d'),_0xc236('0x81'),'voicePause',_0xc236('0x82')],'raw':!![]}]})[_0xc236('0x29')](function(_0x210989){if(_0x210989){_0x2bed4b=_0x210989;var _0x5164e5=_[_0xc236('0x83')](_0x210989,function(_0x32765e){var _0x4f9faf=_0x32765e[_0xc236('0x52')]({'plain':!![]});return _0x4f9faf[_0xc236('0x80')];});return db['VoicePrefix'][_0xc236('0x4b')]({'where':{'id':_0x424875[_0xc236('0x4d')]['id']}})[_0xc236('0x29')](function(_0xfb7a98){return db['sequelize'][_0xc236('0x51')](function(_0x53287f){return _0xfb7a98[_0xc236('0x7e')](_0x23fc57,{'transaction':_0x53287f})[_0xc236('0x29')](function(){return BPromise[_0xc236('0x84')](_0x2bed4b,function(_0x2900ed){return db[_0xc236('0x85')]['upsert']({'TeamId':_0x2900ed['id'],'VoicePrefixId':_0x424875[_0xc236('0x4d')]['id']},{'transaction':_0x53287f});});})[_0xc236('0x29')](function(){return BPromise[_0xc236('0x84')](_0x5164e5,function(_0x29131a){return db[_0xc236('0x86')][_0xc236('0x87')]({'where':{'UserId':_0x29131a['id'],'VoicePrefixId':_0x424875[_0xc236('0x4d')]['id']},'transaction':_0x53287f});});})[_0xc236('0x29')](function(){_0x5164e5[_0xc236('0x88')](function(_0x833f85){socket[_0xc236('0x76')]('userVoicePrefix:save',{'UserId':_0x833f85['id'],'VoicePrefixId':_0xfb7a98['id']});});});});});}})['then'](respondWithStatusCode(_0x14177d,null))[_0xc236('0x49')](handleError(_0x14177d,null));};exports[_0xc236('0x89')]=function(_0x2207a8,_0x36fd37,_0x2494d9){return db[_0xc236('0x7c')][_0xc236('0x7f')]({'where':{'id':_0x2207a8[_0xc236('0x34')][_0xc236('0x71')]},'attributes':['id'],'include':[{'model':db[_0xc236('0x79')],'as':_0xc236('0x80'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x36fd37,null))[_0xc236('0x29')](function(_0x1669c4){var _0x29ae97=_[_0xc236('0x30')](_0x1669c4,'id');var _0x2a8f63=[];var _0x38aecf=[];var _0x2b46e4=squel[_0xc236('0x8a')]();_0x2b46e4['field']('tq.TeamId')['from'](_0xc236('0x8b'),'tq')['join'](_0xc236('0x8c'),'ut',_0xc236('0x8d'))[_0xc236('0x41')](_0xc236('0x8e'),_0x2207a8[_0xc236('0x4d')]['id']);for(var _0x43216e=0x0;_0x43216e<_0x1669c4[_0xc236('0x3a')];_0x43216e+=0x1){let _0x49d232=_0x1669c4[_0x43216e];for(var _0x870908=0x0;_0x870908<_0x49d232[_0xc236('0x80')][_0xc236('0x3a')];_0x870908+=0x1){let _0x364d8d=_0x49d232[_0xc236('0x80')][_0x870908];var _0x53cd27=_0x2b46e4[_0xc236('0x8f')]();_0x53cd27[_0xc236('0x41')](_0xc236('0x90'),_0x364d8d['id']);_0x38aecf[_0xc236('0x65')](db[_0xc236('0x50')][_0xc236('0x34')](_0x53cd27[_0xc236('0x91')](),{'type':db[_0xc236('0x50')][_0xc236('0x92')]['SELECT']})[_0xc236('0x29')](function(_0x281d3c){if(_0x281d3c[_0xc236('0x3a')]===0x1){return _0x364d8d['id'];}else{var _0x33cdb2=_['every'](_[_0xc236('0x30')](_0x281d3c,_0xc236('0x93')),function(_0x5ca99c){return _[_0xc236('0x94')](_0x29ae97,_0x5ca99c);});if(_0x33cdb2){return _0x364d8d['id'];}}}));}}return BPromise[_0xc236('0x95')](_0x38aecf)[_0xc236('0x29')](function(_0x32658a){_0x2a8f63=_(_0x2a8f63)[_0xc236('0x96')](_0x32658a)[_0xc236('0x97')]()[_0xc236('0x98')]();return db[_0xc236('0x31')]['find']({'where':{'id':_0x2207a8[_0xc236('0x4d')]['id']}})[_0xc236('0x29')](function(_0x26c461){return db[_0xc236('0x50')][_0xc236('0x51')](function(_0x57a83b){return _0x26c461[_0xc236('0x89')](_0x2207a8['query'][_0xc236('0x71')],{'transaction':_0x57a83b})[_0xc236('0x29')](function(){if(!_[_0xc236('0x99')](_0x2a8f63)){return _0x26c461[_0xc236('0x74')](_0x2a8f63,{'transaction':_0x57a83b});}})[_0xc236('0x29')](function(){_0x2a8f63[_0xc236('0x88')](function(_0x2e4215){socket[_0xc236('0x76')](_0xc236('0x77'),{'UserId':_0x2e4215,'VoicePrefixId':_0x26c461['id']});});});});});});})[_0xc236('0x29')](respondWithStatusCode(_0x36fd37,null))[_0xc236('0x49')](handleError(_0x36fd37,null));};
\ No newline at end of file
index 1735a7b..9bf4e58 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb768=['remove','emit','hasOwnProperty','hook','../../mysqldb','VoicePrefix','setMaxListeners','update'];(function(_0x1a72f3,_0x217011){var _0x57ef47=function(_0x20123d){while(--_0x20123d){_0x1a72f3['push'](_0x1a72f3['shift']());}};_0x57ef47(++_0x217011);}(_0xb768,0x1cc));var _0x8b76=function(_0x49b722,_0x2eb6c0){_0x49b722=_0x49b722-0x0;var _0xa8507f=_0xb768[_0x49b722];return _0xa8507f;};'use strict';var EventEmitter=require('events');var VoicePrefix=require(_0x8b76('0x0'))['db'][_0x8b76('0x1')];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents[_0x8b76('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x8b76('0x3'),'afterDestroy':_0x8b76('0x4')};function emitEvent(_0x37b04d){return function(_0x53fd6c,_0xafdc85,_0x1086c4){VoicePrefixEvents[_0x8b76('0x5')](_0x37b04d+':'+_0x53fd6c['id'],_0x53fd6c);VoicePrefixEvents[_0x8b76('0x5')](_0x37b04d,_0x53fd6c);_0x1086c4(null);};}for(var e in events){if(events[_0x8b76('0x6')](e)){var event=events[e];VoicePrefix[_0x8b76('0x7')](e,emitEvent(event));}}module['exports']=VoicePrefixEvents;
\ No newline at end of file
+var _0xd9bb=['update','emit','hasOwnProperty','exports','../../mysqldb','VoicePrefix','save'];(function(_0x3b91ed,_0x3cd0e2){var _0x1c30e6=function(_0x552e06){while(--_0x552e06){_0x3b91ed['push'](_0x3b91ed['shift']());}};_0x1c30e6(++_0x3cd0e2);}(_0xd9bb,0x193));var _0xbd9b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd9bb[_0x20a584];return _0x4b41a8;};'use strict';var EventEmitter=require('events');var VoicePrefix=require(_0xbd9b('0x0'))['db'][_0xbd9b('0x1')];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xbd9b('0x2'),'afterUpdate':_0xbd9b('0x3'),'afterDestroy':'remove'};function emitEvent(_0xd6a8a2){return function(_0x49a590,_0x22ee86,_0x152293){VoicePrefixEvents[_0xbd9b('0x4')](_0xd6a8a2+':'+_0x49a590['id'],_0x49a590);VoicePrefixEvents[_0xbd9b('0x4')](_0xd6a8a2,_0x49a590);_0x152293(null);};}for(var e in events){if(events[_0xbd9b('0x5')](e)){var event=events[e];VoicePrefix['hook'](e,emitEvent(event));}}module[_0xbd9b('0x6')]=VoicePrefixEvents;
\ No newline at end of file
index 474842e..b728587 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7ab=['bluebird','request-promise','path','rimraf','../../config/environment','define','VoicePrefix','lodash','util','../../config/logger','api'];(function(_0x4b110f,_0x43029b){var _0x4def47=function(_0x10eeef){while(--_0x10eeef){_0x4b110f['push'](_0x4b110f['shift']());}};_0x4def47(++_0x43029b);}(_0xb7ab,0x6a));var _0xbb7a=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0xb7ab[_0x42cae2];return _0x5f256f;};'use strict';var _=require(_0xbb7a('0x0'));var util=require(_0xbb7a('0x1'));var logger=require(_0xbb7a('0x2'))(_0xbb7a('0x3'));var moment=require('moment');var BPromise=require(_0xbb7a('0x4'));var rp=require(_0xbb7a('0x5'));var fs=require('fs');var path=require(_0xbb7a('0x6'));var rimraf=require(_0xbb7a('0x7'));var config=require(_0xbb7a('0x8'));var attributes=require('./voicePrefix.attributes');module['exports']=function(_0x1af535,_0x2d27ee){return _0x1af535[_0xbb7a('0x9')](_0xbb7a('0xa'),attributes,{'tableName':'voice_prefixes','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4f80=['voice_prefixes','lodash','util','../../config/logger','moment','bluebird','request-promise','rimraf','../../config/environment','./voicePrefix.attributes','exports','define','VoicePrefix'];(function(_0x33bc64,_0x4d1e92){var _0x3fdd34=function(_0x4b40a4){while(--_0x4b40a4){_0x33bc64['push'](_0x33bc64['shift']());}};_0x3fdd34(++_0x4d1e92);}(_0x4f80,0x76));var _0x04f8=function(_0x470d22,_0x1b6a4f){_0x470d22=_0x470d22-0x0;var _0x3cc44d=_0x4f80[_0x470d22];return _0x3cc44d;};'use strict';var _=require(_0x04f8('0x0'));var util=require(_0x04f8('0x1'));var logger=require(_0x04f8('0x2'))('api');var moment=require(_0x04f8('0x3'));var BPromise=require(_0x04f8('0x4'));var rp=require(_0x04f8('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x04f8('0x6'));var config=require(_0x04f8('0x7'));var attributes=require(_0x04f8('0x8'));module[_0x04f8('0x9')]=function(_0x231cd9,_0x4fe045){return _0x231cd9[_0x04f8('0xa')](_0x04f8('0xb'),attributes,{'tableName':_0x04f8('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1430aca..fd8d279 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7bd0=['register','then','info','VoicePrefix,\x20%s,\x20%s','request\x20sent','debug','VoicePrefix,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','./voicePrefix.socket'];(function(_0x2bbc9f,_0x5d0c94){var _0x5945be=function(_0x2b930d){while(--_0x2b930d){_0x2bbc9f['push'](_0x2bbc9f['shift']());}};_0x5945be(++_0x5d0c94);}(_0x7bd0,0x111));var _0x07bd=function(_0x403fc7,_0x32931a){_0x403fc7=_0x403fc7-0x0;var _0x5d0827=_0x7bd0[_0x403fc7];return _0x5d0827;};'use strict';var _=require(_0x07bd('0x0'));var util=require(_0x07bd('0x1'));var moment=require(_0x07bd('0x2'));var BPromise=require(_0x07bd('0x3'));var rs=require(_0x07bd('0x4'));var fs=require('fs');var Redis=require(_0x07bd('0x5'));var db=require(_0x07bd('0x6'))['db'];var utils=require(_0x07bd('0x7'));var logger=require('../../config/logger')(_0x07bd('0x8'));var config=require(_0x07bd('0x9'));var jayson=require(_0x07bd('0xa'));var client=jayson[_0x07bd('0xb')][_0x07bd('0xc')]({'port':0x232a});config[_0x07bd('0xd')]=_[_0x07bd('0xe')](config['redis'],{'host':_0x07bd('0xf'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x07bd('0xd')]));require(_0x07bd('0x10'))[_0x07bd('0x11')](socket);function respondWithRpcPromise(_0x5984fa,_0x2bace8,_0x141e8b){return new BPromise(function(_0x324a46,_0x169b07){return client['request'](_0x5984fa,_0x141e8b)[_0x07bd('0x12')](function(_0x313ca5){logger[_0x07bd('0x13')](_0x07bd('0x14'),_0x2bace8,_0x07bd('0x15'));logger[_0x07bd('0x16')](_0x07bd('0x17'),_0x2bace8,_0x07bd('0x15'),JSON['stringify'](_0x313ca5));if(_0x313ca5['error']){if(_0x313ca5[_0x07bd('0x18')][_0x07bd('0x19')]===0x1f4){logger[_0x07bd('0x18')](_0x07bd('0x14'),_0x2bace8,_0x313ca5[_0x07bd('0x18')][_0x07bd('0x1a')]);return _0x169b07(_0x313ca5[_0x07bd('0x18')]['message']);}logger[_0x07bd('0x18')]('VoicePrefix,\x20%s,\x20%s',_0x2bace8,_0x313ca5[_0x07bd('0x18')][_0x07bd('0x1a')]);return _0x324a46(_0x313ca5[_0x07bd('0x18')][_0x07bd('0x1a')]);}else{logger[_0x07bd('0x13')]('VoicePrefix,\x20%s,\x20%s',_0x2bace8,_0x07bd('0x15'));_0x324a46(_0x313ca5[_0x07bd('0x1b')]['message']);}})[_0x07bd('0x1c')](function(_0x72f775){logger[_0x07bd('0x18')](_0x07bd('0x14'),_0x2bace8,_0x72f775);_0x169b07(_0x72f775);});});}
\ No newline at end of file
+var _0x8b8e=['error','code','message','result','lodash','moment','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','./voicePrefix.socket','request','then','info','VoicePrefix,\x20%s,\x20%s','request\x20sent','debug','VoicePrefix,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x31ddea,_0x40de6d){var _0x12539b=function(_0x1d353b){while(--_0x1d353b){_0x31ddea['push'](_0x31ddea['shift']());}};_0x12539b(++_0x40de6d);}(_0x8b8e,0x108));var _0xe8b8=function(_0x1246ab,_0x2b7f94){_0x1246ab=_0x1246ab-0x0;var _0x15777c=_0x8b8e[_0x1246ab];return _0x15777c;};'use strict';var _=require(_0xe8b8('0x0'));var util=require('util');var moment=require(_0xe8b8('0x1'));var BPromise=require('bluebird');var rs=require(_0xe8b8('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xe8b8('0x3'));var logger=require(_0xe8b8('0x4'))(_0xe8b8('0x5'));var config=require(_0xe8b8('0x6'));var jayson=require(_0xe8b8('0x7'));var client=jayson[_0xe8b8('0x8')][_0xe8b8('0x9')]({'port':0x232a});config[_0xe8b8('0xa')]=_[_0xe8b8('0xb')](config[_0xe8b8('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0xe8b8('0xc'))(new Redis(config['redis']));require(_0xe8b8('0xd'))['register'](socket);function respondWithRpcPromise(_0x48b59f,_0x2ccbeb,_0xcf1e01){return new BPromise(function(_0x568241,_0x54eb14){return client[_0xe8b8('0xe')](_0x48b59f,_0xcf1e01)[_0xe8b8('0xf')](function(_0x886a64){logger[_0xe8b8('0x10')](_0xe8b8('0x11'),_0x2ccbeb,_0xe8b8('0x12'));logger[_0xe8b8('0x13')](_0xe8b8('0x14'),_0x2ccbeb,_0xe8b8('0x12'),JSON[_0xe8b8('0x15')](_0x886a64));if(_0x886a64[_0xe8b8('0x16')]){if(_0x886a64[_0xe8b8('0x16')][_0xe8b8('0x17')]===0x1f4){logger[_0xe8b8('0x16')]('VoicePrefix,\x20%s,\x20%s',_0x2ccbeb,_0x886a64[_0xe8b8('0x16')]['message']);return _0x54eb14(_0x886a64[_0xe8b8('0x16')][_0xe8b8('0x18')]);}logger[_0xe8b8('0x16')](_0xe8b8('0x11'),_0x2ccbeb,_0x886a64[_0xe8b8('0x16')][_0xe8b8('0x18')]);return _0x568241(_0x886a64[_0xe8b8('0x16')][_0xe8b8('0x18')]);}else{logger[_0xe8b8('0x10')](_0xe8b8('0x11'),_0x2ccbeb,'request\x20sent');_0x568241(_0x886a64[_0xe8b8('0x19')][_0xe8b8('0x18')]);}})['catch'](function(_0x35b573){logger[_0xe8b8('0x16')](_0xe8b8('0x11'),_0x2ccbeb,_0x35b573);_0x54eb14(_0x35b573);});});}
\ No newline at end of file
index cf10958..fbaf6f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x073e=['./voicePrefix.events','save','remove','update','emit','length','voicePrefix:'];(function(_0x2dd390,_0x1bc894){var _0x3afe47=function(_0x42d8d3){while(--_0x42d8d3){_0x2dd390['push'](_0x2dd390['shift']());}};_0x3afe47(++_0x1bc894);}(_0x073e,0x181));var _0xe073=function(_0x388d76,_0x692c8a){_0x388d76=_0x388d76-0x0;var _0x4aacc5=_0x073e[_0x388d76];return _0x4aacc5;};'use strict';var VoicePrefixEvents=require(_0xe073('0x0'));var events=[_0xe073('0x1'),_0xe073('0x2'),_0xe073('0x3')];function createListener(_0x4a6f42,_0x488838){return function(_0x4e8df8){_0x488838[_0xe073('0x4')](_0x4a6f42,_0x4e8df8);};}function removeListener(_0x4534b6,_0x29444b){return function(){VoicePrefixEvents['removeListener'](_0x4534b6,_0x29444b);};}exports['register']=function(_0x4bc6b3){for(var _0x45995e=0x0,_0x44092d=events[_0xe073('0x5')];_0x45995e<_0x44092d;_0x45995e++){var _0x3b4fc7=events[_0x45995e];var _0x373bf6=createListener(_0xe073('0x6')+_0x3b4fc7,_0x4bc6b3);VoicePrefixEvents['on'](_0x3b4fc7,_0x373bf6);}};
\ No newline at end of file
+var _0x2c54=['length','voicePrefix:','./voicePrefix.events','save','remove','emit','register'];(function(_0x45d033,_0x314bea){var _0x278c98=function(_0x408488){while(--_0x408488){_0x45d033['push'](_0x45d033['shift']());}};_0x278c98(++_0x314bea);}(_0x2c54,0x136));var _0x42c5=function(_0x487ee4,_0x3d3e66){_0x487ee4=_0x487ee4-0x0;var _0x3b0877=_0x2c54[_0x487ee4];return _0x3b0877;};'use strict';var VoicePrefixEvents=require(_0x42c5('0x0'));var events=[_0x42c5('0x1'),_0x42c5('0x2'),'update'];function createListener(_0xbe3529,_0x46bcc4){return function(_0x3d5e1d){_0x46bcc4[_0x42c5('0x3')](_0xbe3529,_0x3d5e1d);};}function removeListener(_0x2407d0,_0x17924f){return function(){VoicePrefixEvents['removeListener'](_0x2407d0,_0x17924f);};}exports[_0x42c5('0x4')]=function(_0x551181){for(var _0x4d9ed4=0x0,_0x1959c1=events[_0x42c5('0x5')];_0x4d9ed4<_0x1959c1;_0x4d9ed4++){var _0x38d528=events[_0x4d9ed4];var _0x134cb6=createListener(_0x42c5('0x6')+_0x38d528,_0x551181);VoicePrefixEvents['on'](_0x38d528,_0x134cb6);}};
\ No newline at end of file
index f2799ea..d4206a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueue.controller','get','index','isAuthenticated','show','/:id/hoppers','getHoppers','/:id/hopper_histories','/:id/hopper_finals','getHopperBlacks','/:id/teams','getTeams','/:id/users','getAgents','/:id/members','getMembers','/:id/lists','/:id/blacklists','getBlackLists','post','create','/:id/clone','addTeams','addAgents','addLists','addBlackLists','put','/:id','update','delete','removeTeams','removeAgents','removeLists','removeBlackLists','exports','multer','path','connect-timeout'];(function(_0x172133,_0x10246b){var _0x2460e5=function(_0x3c4918){while(--_0x3c4918){_0x172133['push'](_0x172133['shift']());}};_0x2460e5(++_0x10246b);}(_0xb10b,0x12a));var _0xbb10=function(_0x5eff86,_0x2cdd22){_0x5eff86=_0x5eff86-0x0;var _0x4b3010=_0xb10b[_0x5eff86];return _0x4b3010;};'use strict';var multer=require(_0xbb10('0x0'));var util=require('util');var path=require(_0xbb10('0x1'));var timeout=require(_0xbb10('0x2'));var express=require(_0xbb10('0x3'));var router=express['Router']();var fs_extra=require(_0xbb10('0x4'));var auth=require(_0xbb10('0x5'));var interaction=require(_0xbb10('0x6'));var config=require(_0xbb10('0x7'));var controller=require(_0xbb10('0x8'));router[_0xbb10('0x9')]('/',auth['isAuthenticated'](),controller[_0xbb10('0xa')]);router[_0xbb10('0x9')]('/:id',auth[_0xbb10('0xb')](),controller[_0xbb10('0xc')]);router[_0xbb10('0x9')](_0xbb10('0xd'),auth[_0xbb10('0xb')](),controller[_0xbb10('0xe')]);router[_0xbb10('0x9')](_0xbb10('0xf'),auth['isAuthenticated'](),controller['getHopperHistories']);router[_0xbb10('0x9')](_0xbb10('0x10'),auth[_0xbb10('0xb')](),controller['getHopperFinals']);router[_0xbb10('0x9')]('/:id/hopper_black',auth[_0xbb10('0xb')](),controller[_0xbb10('0x11')]);router[_0xbb10('0x9')](_0xbb10('0x12'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x13')]);router['get'](_0xbb10('0x14'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x15')]);router[_0xbb10('0x9')](_0xbb10('0x16'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x17')]);router[_0xbb10('0x9')](_0xbb10('0x18'),auth[_0xbb10('0xb')](),controller['getLists']);router[_0xbb10('0x9')](_0xbb10('0x19'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x1a')]);router[_0xbb10('0x1b')]('/',auth[_0xbb10('0xb')](),controller[_0xbb10('0x1c')]);router[_0xbb10('0x1b')](_0xbb10('0x1d'),auth[_0xbb10('0xb')](),controller['clone']);router[_0xbb10('0x1b')](_0xbb10('0x12'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x1e')]);router[_0xbb10('0x1b')](_0xbb10('0x14'),auth['isAuthenticated'](),controller[_0xbb10('0x1f')]);router[_0xbb10('0x1b')]('/:id/lists',auth['isAuthenticated'](),controller[_0xbb10('0x20')]);router[_0xbb10('0x1b')](_0xbb10('0x19'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x21')]);router[_0xbb10('0x22')](_0xbb10('0x23'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x24')]);router[_0xbb10('0x25')](_0xbb10('0x23'),auth[_0xbb10('0xb')](),controller['destroy']);router['delete']('/:id/teams',auth[_0xbb10('0xb')](),controller[_0xbb10('0x26')]);router[_0xbb10('0x25')]('/:id/users',auth[_0xbb10('0xb')](),controller[_0xbb10('0x27')]);router[_0xbb10('0x25')](_0xbb10('0x18'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x28')]);router[_0xbb10('0x25')]('/:id/blacklists',auth[_0xbb10('0xb')](),controller[_0xbb10('0x29')]);module[_0xbb10('0x2a')]=router;
\ No newline at end of file
+var _0xa9e0=['addAgents','/:id/blacklists','addBlackLists','update','delete','destroy','removeTeams','removeAgents','removeLists','removeBlackLists','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueue.controller','get','index','/:id','getHoppers','/:id/hopper_histories','isAuthenticated','getHopperHistories','/:id/hopper_black','getHopperBlacks','/:id/teams','/:id/users','getAgents','/:id/members','getMembers','/:id/lists','getLists','post','create','/:id/clone','clone','addTeams'];(function(_0x497d20,_0x291910){var _0x3b9e7f=function(_0x4e7def){while(--_0x4e7def){_0x497d20['push'](_0x497d20['shift']());}};_0x3b9e7f(++_0x291910);}(_0xa9e0,0x123));var _0x0a9e=function(_0xf50820,_0x56f041){_0xf50820=_0xf50820-0x0;var _0x2a9b10=_0xa9e0[_0xf50820];return _0x2a9b10;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0x8')]('/:id/hoppers',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0x8')]('/:id/hopper_finals',auth['isAuthenticated'](),controller['getHopperFinals']);router['get'](_0x0a9e('0xf'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x8')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller['getTeams']);router[_0x0a9e('0x8')](_0x0a9e('0x12'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);router[_0x0a9e('0x8')](_0x0a9e('0x14'),auth['isAuthenticated'](),controller[_0x0a9e('0x15')]);router['get'](_0x0a9e('0x16'),auth['isAuthenticated'](),controller[_0x0a9e('0x17')]);router[_0x0a9e('0x8')]('/:id/blacklists',auth[_0x0a9e('0xd')](),controller['getBlackLists']);router[_0x0a9e('0x18')]('/',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x19')]);router[_0x0a9e('0x18')](_0x0a9e('0x1a'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1b')]);router[_0x0a9e('0x18')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1c')]);router[_0x0a9e('0x18')]('/:id/users',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1d')]);router['post'](_0x0a9e('0x16'),auth['isAuthenticated'](),controller['addLists']);router[_0x0a9e('0x18')](_0x0a9e('0x1e'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1f')]);router['put'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x20')]);router[_0x0a9e('0x21')](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x22')]);router['delete']('/:id/teams',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x23')]);router[_0x0a9e('0x21')](_0x0a9e('0x12'),auth['isAuthenticated'](),controller[_0x0a9e('0x24')]);router['delete'](_0x0a9e('0x16'),auth['isAuthenticated'](),controller[_0x0a9e('0x25')]);router[_0x0a9e('0x21')](_0x0a9e('0x1e'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x26')]);module[_0x0a9e('0x27')]=router;
\ No newline at end of file
index 08dbab6..239d868 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x202c=['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\x20(min:1,\x20max:999)','Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','sequelize','exports','STRING','name','ENUM','inbound','outbound','leastrecent','fewestcalls','linear','rrordered','ringall','strategy','getDataValue','type','preview','roundrobin','setDataValue','INTEGER','yes','all','once','periodic_announce','join','split','joinempty','leavewhenempty','BOOLEAN','acw','wrapuptime','Active/Disactive\x20Campaign','progressive','predictive','booked','UNSIGNED','Max\x209999\x20channels,\x200\x20means\x20unlimited.','FLOAT','dropRate','Only\x20for\x20predictive\x20method.','Interval\x20Predictive\x20Minutes\x20(min:5\x20max:30)','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','tTxX','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)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','never','Active/Disactive\x20AMD','#AMD\x20Initial\x20Silence','#AMD\x20Greeting','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Min\x20Word\x20Length','#AMD\x20Maximum\x20Word\x20Length','#RecallMe\x20Timeout\x20(min:1)','Active/Disactive\x20Recall\x20In\x20Queue','DESC','ASC'];(function(_0x254744,_0x219e6b){var _0x2a6a96=function(_0x26aceb){while(--_0x26aceb){_0x254744['push'](_0x254744['shift']());}};_0x2a6a96(++_0x219e6b);}(_0x202c,0x122));var _0xc202=function(_0x1ea78c,_0x5227e6){_0x1ea78c=_0x1ea78c-0x0;var _0xcda3d4=_0x202c[_0x1ea78c];return _0xcda3d4;};'use strict';var Sequelize=require(_0xc202('0x0'));module[_0xc202('0x1')]={'name':{'type':Sequelize[_0xc202('0x2')],'allowNull':![],'unique':_0xc202('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0xc202('0x4')](_0xc202('0x5'),_0xc202('0x6')),'allowNull':![],'defaultValue':_0xc202('0x5')},'musiconhold':{'type':Sequelize[_0xc202('0x2')],'defaultValue':'default'},'announce':{'type':Sequelize['STRING'],'defaultValue':''},'strategy':{'type':Sequelize['ENUM']('rr','ringall',_0xc202('0x7'),_0xc202('0x8'),'random','rrmemory',_0xc202('0x9'),'wrandom',_0xc202('0xa')),'allowNull':![],'defaultValue':_0xc202('0xb'),'set':function(_0x2891ab){this['setDataValue'](_0xc202('0xc'),_0x2891ab?_0x2891ab:'rrmemory');},'get':function(){var _0x14ebd8=this[_0xc202('0xd')](_0xc202('0xe'));var _0x57ae36=this[_0xc202('0xd')]('dialMethod');var _0x585cd1=this['getDataValue'](_0xc202('0xc'));if(_0x14ebd8==='outbound'){if(_0x57ae36===_0xc202('0xf')){return null;}if(_0x57ae36==='booked'&&!['rrmemory',_0xc202('0x10')]['includes'](_0x585cd1)){this[_0xc202('0x11')](_0xc202('0xc'),'rrmemory');}}return _0x585cd1;}},'servicelevel':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'context':{'type':Sequelize[_0xc202('0x2')],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize['INTEGER'](0xb)},'timeout':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0xf},'retry':{'type':Sequelize[_0xc202('0x12')](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize[_0xc202('0x2')]},'weight':{'type':Sequelize[_0xc202('0x12')](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize['ENUM'](_0xc202('0x13'),'no'),'defaultValue':_0xc202('0x13')},'autopause':{'type':Sequelize[_0xc202('0x4')](_0xc202('0x13'),'no',_0xc202('0x14')),'defaultValue':'no'},'autopausedelay':{'type':Sequelize[_0xc202('0x12')](0xb)},'autopausebusy':{'type':Sequelize['ENUM'](_0xc202('0x13'),'no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize[_0xc202('0x4')]('yes','no'),'defaultValue':'no'},'maxlen':{'type':Sequelize[_0xc202('0x12')](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize[_0xc202('0x4')]('yes','no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize[_0xc202('0x4')](_0xc202('0x13'),'no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize[_0xc202('0x4')](_0xc202('0x13'),'no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize[_0xc202('0x4')](_0xc202('0x13'),'no'),'defaultValue':'no'},'membermacro':{'type':Sequelize[_0xc202('0x2')],'allowNull':!![]},'membergosub':{'type':Sequelize[_0xc202('0x2')],'allowNull':!![]},'announce_frequency':{'type':Sequelize[_0xc202('0x12')](0xb),'defaultValue':0x0},'min_announce_frequency':{'type':Sequelize[_0xc202('0x12')](0xb),'defaultValue':0x0},'periodic_announce_frequency':{'type':Sequelize[_0xc202('0x12')](0xb),'defaultValue':0x0},'random_periodic_announce':{'type':Sequelize[_0xc202('0x4')]('yes','no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize[_0xc202('0x4')]('yes','no'),'defaultValue':'yes'},'announce_holdtime':{'type':Sequelize[_0xc202('0x4')](_0xc202('0x13'),'no',_0xc202('0x15')),'defaultValue':'no'},'announce_position':{'type':Sequelize['STRING'],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize[_0xc202('0x4')]('yes','no')},'announce_position_limit':{'type':Sequelize['INTEGER'](0xb)},'announce_round_seconds':{'type':Sequelize[_0xc202('0x4')]('0','5','10','15','20','30'),'defaultValue':'0'},'monitor_format':{'type':Sequelize[_0xc202('0x2')],'defaultValue':''},'monitor_type':{'type':Sequelize[_0xc202('0x2')]},'queue_youarenext':{'type':Sequelize[_0xc202('0x2')],'defaultValue':null},'queue_thereare':{'type':Sequelize[_0xc202('0x2')],'defaultValue':null},'queue_callswaiting':{'type':Sequelize[_0xc202('0x2')],'defaultValue':null},'queue_holdtime':{'type':Sequelize[_0xc202('0x2')],'defaultValue':null},'queue_minute':{'type':Sequelize[_0xc202('0x2')],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize[_0xc202('0x2')],'defaultValue':null},'queue_seconds':{'type':Sequelize['STRING'],'defaultValue':null},'queue_thankyou':{'type':Sequelize[_0xc202('0x2')],'defaultValue':null},'queue_reporthold':{'type':Sequelize[_0xc202('0x2')]},'queue_quantity1':{'type':Sequelize['STRING']},'queue_quantity2':{'type':Sequelize[_0xc202('0x2')]},'queue_periodic_announce':{'type':Sequelize[_0xc202('0x2')]},'queue_less_than':{'type':Sequelize[_0xc202('0x2')]},'periodic_announce':{'type':Sequelize['TEXT'],'set':function(_0xc28687){this[_0xc202('0x11')](_0xc202('0x16'),_0xc28687?_0xc28687[_0xc202('0x17')](','):[]);},'get':function(){return this[_0xc202('0xd')](_0xc202('0x16'))?this[_0xc202('0xd')]('periodic_announce')[_0xc202('0x18')](','):[];}},'joinempty':{'type':Sequelize[_0xc202('0x2')],'defaultValue':_0xc202('0x13'),'set':function(_0x173ca7){this[_0xc202('0x11')](_0xc202('0x19'),_0x173ca7?_0x173ca7[_0xc202('0x17')](','):undefined);},'get':function(){return this['getDataValue']('joinempty')?this[_0xc202('0xd')](_0xc202('0x19'))['split'](','):undefined;}},'leavewhenempty':{'type':Sequelize[_0xc202('0x2')],'defaultValue':'no','set':function(_0x574885){this['setDataValue'](_0xc202('0x1a'),_0x574885?_0x574885[_0xc202('0x17')](','):undefined);},'get':function(){return this[_0xc202('0xd')]('leavewhenempty')?this[_0xc202('0xd')](_0xc202('0x1a'))[_0xc202('0x18')](','):undefined;}},'reportholdtime':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize[_0xc202('0x4')](_0xc202('0x13'),'no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize[_0xc202('0x12')](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize[_0xc202('0x4')]('yes','no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize[_0xc202('0x2')]},'description':{'type':Sequelize[_0xc202('0x2')]},'acw':{'type':Sequelize[_0xc202('0x1b')],'defaultValue':0x0,'set':function(_0x59f9dc){this[_0xc202('0x11')](_0xc202('0x1c'),_0x59f9dc);if(_0x59f9dc){if(this[_0xc202('0xd')](_0xc202('0x1d'))<0x2){this['setDataValue'](_0xc202('0x1d'),0x2);}}}},'acwTimeout':{'type':Sequelize[_0xc202('0x12')](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize[_0xc202('0x1b')],'defaultValue':0x0,'comment':_0xc202('0x1e')},'dialMethod':{'type':Sequelize['ENUM'](_0xc202('0xf'),_0xc202('0x1f'),'power',_0xc202('0x20'),_0xc202('0x21')),'defaultValue':_0xc202('0x1f'),'comment':'Dial\x20Method.'},'dialLimitChannel':{'type':Sequelize[_0xc202('0x12')](0x4)[_0xc202('0x22')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0xc202('0x23')},'dialLimitQueue':{'type':Sequelize[_0xc202('0x12')](0x4)[_0xc202('0x22')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':'Max\x209999\x20member\x20in\x20queue(min:1,\x20max:9999),\x200\x20means\x20unlimited.'},'dialPowerLevel':{'type':Sequelize[_0xc202('0x24')](0x2)[_0xc202('0x22')],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':'Power\x20Level:\x20Calls\x20for\x20agents\x20(min:1,\x20max:10).'},'dialPredictiveOptimization':{'type':Sequelize[_0xc202('0x4')]('agentBusyFactor',_0xc202('0x25')),'defaultValue':_0xc202('0x25'),'comment':_0xc202('0x26')},'dialPredictiveOptimizationPercentage':{'type':Sequelize[_0xc202('0x24')](0x2)[_0xc202('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':'Predictive\x20Optimization\x20Percentage\x20(min:\x201,\x20max:\x2095)'},'dialPredictiveInterval':{'type':Sequelize[_0xc202('0x12')](0x3)[_0xc202('0x22')],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':_0xc202('0x27')},'dialOriginateCallerIdName':{'type':Sequelize[_0xc202('0x2')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0xc202('0x2')]},'dialOriginateTimeout':{'type':Sequelize[_0xc202('0x12')](0x3)[_0xc202('0x22')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc202('0x28')},'dialQueueOptions':{'type':Sequelize[_0xc202('0x2')],'defaultValue':_0xc202('0x29'),'comment':'https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Application_Queue'},'dialQueueTimeout':{'type':Sequelize[_0xc202('0x12')](0x3)[_0xc202('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc202('0x2a')},'dialQueueProject':{'type':Sequelize['STRING'],'comment':_0xc202('0x2b')},'dialCongestionMaxRetry':{'type':Sequelize[_0xc202('0x12')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc202('0x2c')},'dialCongestionRetryFrequency':{'type':Sequelize[_0xc202('0x12')](0x5)[_0xc202('0x22')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc202('0x2d')},'dialBusyMaxRetry':{'type':Sequelize[_0xc202('0x12')](0x3)[_0xc202('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc202('0x2e')},'dialBusyRetryFrequency':{'type':Sequelize[_0xc202('0x12')](0x5)[_0xc202('0x22')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialNoAnswerMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xc202('0x22')],'defaultValue':0x3,'comment':'#NoAnswer\x20Retry\x20(min:1,\x20max:999)'},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0xc202('0x12')](0x5)[_0xc202('0x22')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialGlobalMaxRetry':{'type':Sequelize[_0xc202('0x12')](0x3)[_0xc202('0x22')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0xc202('0x2f')},'dialTimezone':{'type':Sequelize['STRING'],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize['STRING'],'defaultValue':'07:00-22:00,*,*,*'},'dialPrefix':{'type':Sequelize['STRING'],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize[_0xc202('0x4')]('always',_0xc202('0x30'),'onlyIfOpen'),'defaultValue':'always'},'dialAMDActive':{'type':Sequelize[_0xc202('0x1b')],'defaultValue':0x0,'comment':_0xc202('0x31')},'dialAMDInitialSilence':{'type':Sequelize[_0xc202('0x12')](0x9)[_0xc202('0x22')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0xc202('0x32')},'dialAMDGreeting':{'type':Sequelize['INTEGER'](0x9)[_0xc202('0x22')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0xc202('0x33')},'dialAMDAfterGreetingSilence':{'type':Sequelize['INTEGER'](0x9)[_0xc202('0x22')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0xc202('0x34')},'dialAMDTotalAnalysisTime':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xc202('0x35')},'dialAMDMinWordLength':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0xc202('0x36')},'dialAMDBetweenWordsSilence':{'type':Sequelize['INTEGER'](0x9)[_0xc202('0x22')],'defaultValue':0x32,'validate':{'min':0x0},'comment':'#AMD\x20Between\x20Words\x20Silence'},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0xc202('0x12')](0x9)[_0xc202('0x22')],'defaultValue':0x3,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Number\x20Of\x20Words'},'dialAMDSilenceThreshold':{'type':Sequelize[_0xc202('0x12')](0x5)[_0xc202('0x22')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':'#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)'},'dialAMDMaximumWordLength':{'type':Sequelize[_0xc202('0x12')](0x9)[_0xc202('0x22')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xc202('0x37')},'dialRecallMeTimeout':{'type':Sequelize[_0xc202('0x12')](0x5)[_0xc202('0x22')],'validate':{'min':0x1},'defaultValue':0x1e,'comment':_0xc202('0x38')},'dialRecallInQueue':{'type':Sequelize[_0xc202('0x1b')],'defaultValue':0x0,'comment':_0xc202('0x39')},'dialOrderByScheduledAt':{'type':Sequelize[_0xc202('0x4')](_0xc202('0x3a'),_0xc202('0x3b')),'defaultValue':'DESC'},'dialQueueProject2':{'type':Sequelize[_0xc202('0x2')],'comment':_0xc202('0x2b')},'dialAgiAfterHangupClient':{'type':Sequelize[_0xc202('0x1b')],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize[_0xc202('0x1b')],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0xc202('0x12')](0x3)[_0xc202('0x22')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xc202('0x3c')},'dialCutDigit':{'type':Sequelize[_0xc202('0x12')](0x3)['UNSIGNED'],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Cut\x20Digit\x20(min:1,\x20max:15)'},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0xc202('0x12')](0x3)[_0xc202('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc202('0x3d')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0xc202('0x12')](0x5)[_0xc202('0x22')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialDropMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xc202('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc202('0x3e')},'dialDropRetryFrequency':{'type':Sequelize[_0xc202('0x12')](0x5)[_0xc202('0x22')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc202('0x3f')},'dialAbandonedMaxRetry':{'type':Sequelize[_0xc202('0x12')](0x3)[_0xc202('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc202('0x40')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0xc202('0x12')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc202('0x41')},'dialMachineMaxRetry':{'type':Sequelize[_0xc202('0x12')](0x3)[_0xc202('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Machine\x20Retry\x20(min:1,\x20max:999)'},'dialMachineRetryFrequency':{'type':Sequelize[_0xc202('0x12')](0x5)[_0xc202('0x22')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc202('0x42')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0xc202('0x12')](0x3)[_0xc202('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#AgentReject\x20Retry\x20(min:1,\x20max:999)'},'dialAgentRejectRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xc202('0x22')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc202('0x43')},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'allowNull':!![],'comment':_0xc202('0x44')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0xc202('0x45'),'set':function(_0x37822e){if(!_0x37822e)this[_0xc202('0x11')]('mandatoryDispositionPauseId',null);this[_0xc202('0x11')]('mandatoryDisposition',_0x37822e);}},'dialPredictiveIntervalMaxThreshold':{'type':Sequelize['INTEGER'](0x3)[_0xc202('0x22')],'defaultValue':0x14,'validate':{'min':0x1,'max':0x64}},'dialPredictiveIntervalMinThreshold':{'type':Sequelize[_0xc202('0x12')](0x3)['UNSIGNED'],'defaultValue':0xa,'validate':{'min':0x1,'max':0x64}},'dialPreviewAutoRecallMe':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'callAdditionalPhoneAfterMin':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x4},'dialPreviewRecallmeReminder':{'type':Sequelize[_0xc202('0x1b')],'defaultValue':![]}};
\ No newline at end of file
+var _0xacd0=['Active/Disactive\x20AMD','#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','#AMD\x20Maximum\x20Word\x20Length','#RecallMe\x20Timeout\x20(min:1)','Active/Disactive\x20Recall\x20In\x20Queue','DESC','ASC','Random\x20Last\x20Digit\x20(min:1,\x20max:15)','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Drop\x20Retry\x20(min:1,\x20max:999)','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','mandatoryDisposition','ENUM','inbound','STRING','random','rrmemory','linear','wrandom','rrordered','setDataValue','type','getDataValue','dialMethod','strategy','outbound','preview','roundrobin','includes','INTEGER','yes','all','once','TEXT','join','joinempty','split','leavewhenempty','BOOLEAN','acw','wrapuptime','Active/Disactive\x20Campaign','power','predictive','booked','Dial\x20Method.','Max\x209999\x20channels,\x200\x20means\x20unlimited.','Max\x209999\x20member\x20in\x20queue(min:1,\x20max:9999),\x200\x20means\x20unlimited.','FLOAT','Power\x20Level:\x20Calls\x20for\x20agents\x20(min:1,\x20max:10).','agentBusyFactor','dropRate','Only\x20for\x20predictive\x20method.','UNSIGNED','Predictive\x20Optimization\x20Percentage\x20(min:\x201,\x20max:\x2095)','Interval\x20Predictive\x20Minutes\x20(min:5\x20max:30)','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','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\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#NoAnswer\x20Retry\x20(min:1,\x20max:999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','07:00-22:00,*,*,*','always','never','onlyIfOpen'];(function(_0x2639d2,_0x3b57d2){var _0x4702d3=function(_0xded99e){while(--_0xded99e){_0x2639d2['push'](_0x2639d2['shift']());}};_0x4702d3(++_0x3b57d2);}(_0xacd0,0x1bf));var _0x0acd=function(_0x262957,_0x34c699){_0x262957=_0x262957-0x0;var _0x27e221=_0xacd0[_0x262957];return _0x27e221;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0x0acd('0x0')](_0x0acd('0x1'),'outbound'),'allowNull':![],'defaultValue':_0x0acd('0x1')},'musiconhold':{'type':Sequelize[_0x0acd('0x2')],'defaultValue':'default'},'announce':{'type':Sequelize['STRING'],'defaultValue':''},'strategy':{'type':Sequelize[_0x0acd('0x0')]('rr','ringall','leastrecent','fewestcalls',_0x0acd('0x3'),_0x0acd('0x4'),_0x0acd('0x5'),_0x0acd('0x6'),_0x0acd('0x7')),'allowNull':![],'defaultValue':'ringall','set':function(_0x2bf2ce){this[_0x0acd('0x8')]('strategy',_0x2bf2ce?_0x2bf2ce:_0x0acd('0x4'));},'get':function(){var _0x2b58d9=this['getDataValue'](_0x0acd('0x9'));var _0x530017=this[_0x0acd('0xa')](_0x0acd('0xb'));var _0x3cf3b2=this[_0x0acd('0xa')](_0x0acd('0xc'));if(_0x2b58d9===_0x0acd('0xd')){if(_0x530017===_0x0acd('0xe')){return null;}if(_0x530017==='booked'&&![_0x0acd('0x4'),_0x0acd('0xf')][_0x0acd('0x10')](_0x3cf3b2)){this[_0x0acd('0x8')](_0x0acd('0xc'),_0x0acd('0x4'));}}return _0x3cf3b2;}},'servicelevel':{'type':Sequelize[_0x0acd('0x11')](0xb),'defaultValue':0x0},'context':{'type':Sequelize[_0x0acd('0x2')],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize[_0x0acd('0x11')](0xb)},'timeout':{'type':Sequelize[_0x0acd('0x11')](0xb),'defaultValue':0xf},'retry':{'type':Sequelize[_0x0acd('0x11')](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize['STRING']},'weight':{'type':Sequelize[_0x0acd('0x11')](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize[_0x0acd('0x11')](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize[_0x0acd('0x0')]('yes','no'),'defaultValue':'yes'},'autopause':{'type':Sequelize[_0x0acd('0x0')](_0x0acd('0x12'),'no',_0x0acd('0x13')),'defaultValue':'no'},'autopausedelay':{'type':Sequelize[_0x0acd('0x11')](0xb)},'autopausebusy':{'type':Sequelize[_0x0acd('0x0')]('yes','no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize[_0x0acd('0x0')]('yes','no'),'defaultValue':'no'},'maxlen':{'type':Sequelize[_0x0acd('0x11')](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize[_0x0acd('0x0')](_0x0acd('0x12'),'no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize[_0x0acd('0x0')](_0x0acd('0x12'),'no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize[_0x0acd('0x0')](_0x0acd('0x12'),'no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize[_0x0acd('0x0')](_0x0acd('0x12'),'no'),'defaultValue':'no'},'membermacro':{'type':Sequelize['STRING'],'allowNull':!![]},'membergosub':{'type':Sequelize['STRING'],'allowNull':!![]},'announce_frequency':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'min_announce_frequency':{'type':Sequelize[_0x0acd('0x11')](0xb),'defaultValue':0x0},'periodic_announce_frequency':{'type':Sequelize[_0x0acd('0x11')](0xb),'defaultValue':0x0},'random_periodic_announce':{'type':Sequelize['ENUM'](_0x0acd('0x12'),'no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize[_0x0acd('0x0')]('yes','no'),'defaultValue':_0x0acd('0x12')},'announce_holdtime':{'type':Sequelize[_0x0acd('0x0')](_0x0acd('0x12'),'no',_0x0acd('0x14')),'defaultValue':'no'},'announce_position':{'type':Sequelize[_0x0acd('0x2')],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize['ENUM'](_0x0acd('0x12'),'no')},'announce_position_limit':{'type':Sequelize[_0x0acd('0x11')](0xb)},'announce_round_seconds':{'type':Sequelize[_0x0acd('0x0')]('0','5','10','15','20','30'),'defaultValue':'0'},'monitor_format':{'type':Sequelize['STRING'],'defaultValue':''},'monitor_type':{'type':Sequelize['STRING']},'queue_youarenext':{'type':Sequelize[_0x0acd('0x2')],'defaultValue':null},'queue_thereare':{'type':Sequelize[_0x0acd('0x2')],'defaultValue':null},'queue_callswaiting':{'type':Sequelize[_0x0acd('0x2')],'defaultValue':null},'queue_holdtime':{'type':Sequelize['STRING'],'defaultValue':null},'queue_minute':{'type':Sequelize[_0x0acd('0x2')],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize[_0x0acd('0x2')],'defaultValue':null},'queue_seconds':{'type':Sequelize[_0x0acd('0x2')],'defaultValue':null},'queue_thankyou':{'type':Sequelize[_0x0acd('0x2')],'defaultValue':null},'queue_reporthold':{'type':Sequelize[_0x0acd('0x2')]},'queue_quantity1':{'type':Sequelize[_0x0acd('0x2')]},'queue_quantity2':{'type':Sequelize[_0x0acd('0x2')]},'queue_periodic_announce':{'type':Sequelize[_0x0acd('0x2')]},'queue_less_than':{'type':Sequelize[_0x0acd('0x2')]},'periodic_announce':{'type':Sequelize[_0x0acd('0x15')],'set':function(_0xb43319){this[_0x0acd('0x8')]('periodic_announce',_0xb43319?_0xb43319[_0x0acd('0x16')](','):[]);},'get':function(){return this['getDataValue']('periodic_announce')?this[_0x0acd('0xa')]('periodic_announce')['split'](','):[];}},'joinempty':{'type':Sequelize[_0x0acd('0x2')],'defaultValue':_0x0acd('0x12'),'set':function(_0xb0231b){this[_0x0acd('0x8')](_0x0acd('0x17'),_0xb0231b?_0xb0231b[_0x0acd('0x16')](','):undefined);},'get':function(){return this[_0x0acd('0xa')]('joinempty')?this[_0x0acd('0xa')]('joinempty')[_0x0acd('0x18')](','):undefined;}},'leavewhenempty':{'type':Sequelize['STRING'],'defaultValue':'no','set':function(_0x27b273){this['setDataValue'](_0x0acd('0x19'),_0x27b273?_0x27b273[_0x0acd('0x16')](','):undefined);},'get':function(){return this[_0x0acd('0xa')](_0x0acd('0x19'))?this[_0x0acd('0xa')](_0x0acd('0x19'))[_0x0acd('0x18')](','):undefined;}},'reportholdtime':{'type':Sequelize['ENUM'](_0x0acd('0x12'),'no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize['ENUM'](_0x0acd('0x12'),'no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize[_0x0acd('0x11')](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize[_0x0acd('0x0')](_0x0acd('0x12'),'no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize[_0x0acd('0x2')]},'description':{'type':Sequelize[_0x0acd('0x2')]},'acw':{'type':Sequelize[_0x0acd('0x1a')],'defaultValue':0x0,'set':function(_0x1357fb){this[_0x0acd('0x8')](_0x0acd('0x1b'),_0x1357fb);if(_0x1357fb){if(this[_0x0acd('0xa')](_0x0acd('0x1c'))<0x2){this[_0x0acd('0x8')](_0x0acd('0x1c'),0x2);}}}},'acwTimeout':{'type':Sequelize[_0x0acd('0x11')](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize[_0x0acd('0x1a')],'defaultValue':0x0,'comment':_0x0acd('0x1d')},'dialMethod':{'type':Sequelize['ENUM'](_0x0acd('0xe'),'progressive',_0x0acd('0x1e'),_0x0acd('0x1f'),_0x0acd('0x20')),'defaultValue':'progressive','comment':_0x0acd('0x21')},'dialLimitChannel':{'type':Sequelize['INTEGER'](0x4)['UNSIGNED'],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0x0acd('0x22')},'dialLimitQueue':{'type':Sequelize[_0x0acd('0x11')](0x4)['UNSIGNED'],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0x0acd('0x23')},'dialPowerLevel':{'type':Sequelize[_0x0acd('0x24')](0x2)['UNSIGNED'],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':_0x0acd('0x25')},'dialPredictiveOptimization':{'type':Sequelize[_0x0acd('0x0')](_0x0acd('0x26'),_0x0acd('0x27')),'defaultValue':_0x0acd('0x27'),'comment':_0x0acd('0x28')},'dialPredictiveOptimizationPercentage':{'type':Sequelize[_0x0acd('0x24')](0x2)[_0x0acd('0x29')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':_0x0acd('0x2a')},'dialPredictiveInterval':{'type':Sequelize[_0x0acd('0x11')](0x3)[_0x0acd('0x29')],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':_0x0acd('0x2b')},'dialOriginateCallerIdName':{'type':Sequelize['STRING']},'dialOriginateCallerIdNumber':{'type':Sequelize[_0x0acd('0x2')]},'dialOriginateTimeout':{'type':Sequelize['INTEGER'](0x3)[_0x0acd('0x29')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0x0acd('0x2c')},'dialQueueOptions':{'type':Sequelize[_0x0acd('0x2')],'defaultValue':'tTxX','comment':_0x0acd('0x2d')},'dialQueueTimeout':{'type':Sequelize[_0x0acd('0x11')](0x3)[_0x0acd('0x29')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x0acd('0x2e')},'dialQueueProject':{'type':Sequelize['STRING'],'comment':_0x0acd('0x2f')},'dialCongestionMaxRetry':{'type':Sequelize[_0x0acd('0x11')](0x3)[_0x0acd('0x29')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Congestion\x20Retry\x20(min:1,\x20max:999)'},'dialCongestionRetryFrequency':{'type':Sequelize[_0x0acd('0x11')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x0acd('0x30')},'dialBusyMaxRetry':{'type':Sequelize[_0x0acd('0x11')](0x3)[_0x0acd('0x29')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Busy\x20Retry\x20(min:1,\x20max:999)'},'dialBusyRetryFrequency':{'type':Sequelize[_0x0acd('0x11')](0x5)[_0x0acd('0x29')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x0acd('0x31')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0x0acd('0x11')](0x3)[_0x0acd('0x29')],'defaultValue':0x3,'comment':_0x0acd('0x32')},'dialNoAnswerRetryFrequency':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x0acd('0x33')},'dialGlobalMaxRetry':{'type':Sequelize[_0x0acd('0x11')](0x3)[_0x0acd('0x29')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0x0acd('0x34')},'dialTimezone':{'type':Sequelize[_0x0acd('0x2')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize['STRING'],'defaultValue':_0x0acd('0x35')},'dialPrefix':{'type':Sequelize['STRING'],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize[_0x0acd('0x0')](_0x0acd('0x36'),_0x0acd('0x37'),_0x0acd('0x38')),'defaultValue':_0x0acd('0x36')},'dialAMDActive':{'type':Sequelize[_0x0acd('0x1a')],'defaultValue':0x0,'comment':_0x0acd('0x39')},'dialAMDInitialSilence':{'type':Sequelize[_0x0acd('0x11')](0x9)['UNSIGNED'],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0x0acd('0x3a')},'dialAMDGreeting':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0x0acd('0x3b')},'dialAMDAfterGreetingSilence':{'type':Sequelize['INTEGER'](0x9)[_0x0acd('0x29')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0x0acd('0x3c')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0x0acd('0x11')](0x9)[_0x0acd('0x29')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x0acd('0x3d')},'dialAMDMinWordLength':{'type':Sequelize[_0x0acd('0x11')](0x9)[_0x0acd('0x29')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0x0acd('0x3e')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0x0acd('0x11')](0x9)[_0x0acd('0x29')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0x0acd('0x3f')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0x0acd('0x11')](0x9)[_0x0acd('0x29')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0x0acd('0x40')},'dialAMDSilenceThreshold':{'type':Sequelize['INTEGER'](0x5)[_0x0acd('0x29')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':'#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)'},'dialAMDMaximumWordLength':{'type':Sequelize[_0x0acd('0x11')](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x0acd('0x41')},'dialRecallMeTimeout':{'type':Sequelize[_0x0acd('0x11')](0x5)[_0x0acd('0x29')],'validate':{'min':0x1},'defaultValue':0x1e,'comment':_0x0acd('0x42')},'dialRecallInQueue':{'type':Sequelize[_0x0acd('0x1a')],'defaultValue':0x0,'comment':_0x0acd('0x43')},'dialOrderByScheduledAt':{'type':Sequelize[_0x0acd('0x0')](_0x0acd('0x44'),_0x0acd('0x45')),'defaultValue':_0x0acd('0x44')},'dialQueueProject2':{'type':Sequelize[_0x0acd('0x2')],'comment':_0x0acd('0x2f')},'dialAgiAfterHangupClient':{'type':Sequelize[_0x0acd('0x1a')],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize[_0x0acd('0x1a')],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0x0acd('0x11')](0x3)[_0x0acd('0x29')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x0acd('0x46')},'dialCutDigit':{'type':Sequelize[_0x0acd('0x11')](0x3)[_0x0acd('0x29')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Cut\x20Digit\x20(min:1,\x20max:15)'},'dialNoSuchNumberMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x0acd('0x29')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x0acd('0x47')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0x0acd('0x11')](0x5)[_0x0acd('0x29')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x0acd('0x48')},'dialDropMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x0acd('0x29')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x0acd('0x49')},'dialDropRetryFrequency':{'type':Sequelize[_0x0acd('0x11')](0x5)[_0x0acd('0x29')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x0acd('0x4a')},'dialAbandonedMaxRetry':{'type':Sequelize[_0x0acd('0x11')](0x3)[_0x0acd('0x29')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x0acd('0x4b')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0x0acd('0x11')](0x5)[_0x0acd('0x29')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x0acd('0x4c')},'dialMachineMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x0acd('0x29')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x0acd('0x4d')},'dialMachineRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x0acd('0x29')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x0acd('0x4e')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0x0acd('0x11')](0x3)[_0x0acd('0x29')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x0acd('0x4f')},'dialAgentRejectRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x0acd('0x29')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x0acd('0x50')},'mandatoryDispositionPauseId':{'type':Sequelize[_0x0acd('0x11')],'allowNull':!![],'comment':_0x0acd('0x51')},'mandatoryDisposition':{'type':Sequelize[_0x0acd('0x1a')],'defaultValue':![],'comment':_0x0acd('0x52'),'set':function(_0x4eb1f7){if(!_0x4eb1f7)this['setDataValue']('mandatoryDispositionPauseId',null);this[_0x0acd('0x8')](_0x0acd('0x53'),_0x4eb1f7);}},'dialPredictiveIntervalMaxThreshold':{'type':Sequelize[_0x0acd('0x11')](0x3)[_0x0acd('0x29')],'defaultValue':0x14,'validate':{'min':0x1,'max':0x64}},'dialPredictiveIntervalMinThreshold':{'type':Sequelize[_0x0acd('0x11')](0x3)[_0x0acd('0x29')],'defaultValue':0xa,'validate':{'min':0x1,'max':0x64}},'dialPreviewAutoRecallMe':{'type':Sequelize[_0x0acd('0x1a')],'defaultValue':!![]},'callAdditionalPhoneAfterMin':{'type':Sequelize['INTEGER'](0x3)[_0x0acd('0x29')],'defaultValue':0x4},'dialPreviewRecallmeReminder':{'type':Sequelize[_0x0acd('0x1a')],'defaultValue':![]}};
\ No newline at end of file
index ce27c3b..329845c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4753=['order','sort','where','merge','options','include','findAll','rows','catch','params','includeAll','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','QueueCampaigns','outbound','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','clone','omit','createdAt','updatedAt','body','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','findOne','CmHopper','pick','getHopperHistories','VoiceQueueId','CmHopperHistory','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','Team','getTeams','teams','User','Agents','voicePause','interface','flatMap','penalty','sequelize','transaction','addTeams','each','TeamVoiceQueue','upsert','UserVoiceQueueRt','isNil','format','SIP/%s','forEach','emit','userVoiceQueue:save','removeTeams','ids','select','field','tq.TeamId','from','team_has_voice_queues','join','VoiceQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','QueryTypes','TeamId','includes','all','isEmpty','removeAgents','userVoiceQueue:remove','addAgents','spread','online','isArray','getAgents','getMembers','getLists','addLists','YYYY-MM-DD\x20HH:mm:ss','dialCheckDuplicateType','insert','cm_hopper','fromQuery','phone','scheduledAt','ContactId','ListId','CmListId','toString','cm_contacts','deletedAt\x20IS\x20NULL','phone\x20NOT\x20IN\x20(?)','cm_hopper_final','onlyIfOpen','into','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','COALESCE(phone,\x27\x27)','cm_hopper_additional_phones','CmHopperId','OrderBy','h.id','ci.OrderBy+1','cm_contact_has_items','h.scheduledat=?','ci.ItemClass=?','PHONE','removeLists','getBlackLists','CmList','addBlackLists','NOW()','removeBlackLists','eml-format','rimraf','zip-dir','request-promise','moment','mustache','ejs','fs-extra','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','redis','localhost','socket.io-emitter','./voiceQueue.socket','register','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','get','VoiceQueues','inbound','filter','ignore','map','value','type','find','end','error','stack','name','send','index','VoiceQueue','rawAttributes','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit'];(function(_0x1cbb0f,_0x3c6ae6){var _0x3b8532=function(_0x492b29){while(--_0x492b29){_0x1cbb0f['push'](_0x1cbb0f['shift']());}};_0x3b8532(++_0x3c6ae6);}(_0x4753,0x1f4));var _0x3475=function(_0x3028ab,_0x3d59a6){_0x3028ab=_0x3028ab-0x0;var _0x2a787b=_0x4753[_0x3028ab];return _0x2a787b;};'use strict';var emlformat=require(_0x3475('0x0'));var rimraf=require(_0x3475('0x1'));var zipdir=require(_0x3475('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x3475('0x3'));var moment=require(_0x3475('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x3475('0x5'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x3475('0x6'));var fs=require('fs');var fs_extra=require(_0x3475('0x7'));var _=require('lodash');var squel=require(_0x3475('0x8'));var crypto=require(_0x3475('0x9'));var jsforce=require(_0x3475('0xa'));var deskjs=require(_0x3475('0xb'));var toCsv=require(_0x3475('0xc'));var querystring=require(_0x3475('0xd'));var Papa=require(_0x3475('0xe'));var Redis=require(_0x3475('0xf'));var authService=require(_0x3475('0x10'));var qs=require(_0x3475('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3475('0x12'));var logger=require(_0x3475('0x13'))(_0x3475('0x14'));var utils=require('../../config/utils');var config=require(_0x3475('0x15'));var licenseUtil=require(_0x3475('0x16'));var db=require('../../mysqldb')['db'];config[_0x3475('0x17')]=_['defaults'](config[_0x3475('0x17')],{'host':_0x3475('0x18'),'port':0x18eb});var socket=require(_0x3475('0x19'))(new Redis(config['redis']));require(_0x3475('0x1a'))[_0x3475('0x1b')](socket);function respondWithStatusCode(_0x306cd8,_0x219520){_0x219520=_0x219520||0xcc;return function(_0x4b5bc4){if(_0x4b5bc4){return _0x306cd8[_0x3475('0x1c')](_0x219520);}return _0x306cd8['status'](_0x219520)['end']();};}function respondWithResult(_0x3fd0d2,_0x1dd054){_0x1dd054=_0x1dd054||0xc8;return function(_0x325fe5){if(_0x325fe5){return _0x3fd0d2[_0x3475('0x1d')](_0x1dd054)[_0x3475('0x1e')](_0x325fe5);}};}function respondWithFilteredResult(_0x49ba96,_0x1e1cb0){return function(_0x547009){if(_0x547009){var _0x12a893=typeof _0x1e1cb0[_0x3475('0x1f')]===_0x3475('0x20')&&typeof _0x1e1cb0[_0x3475('0x21')]==='undefined';var _0x3711a1=_0x547009['count'];var _0x3ab7a8=_0x12a893?0x0:_0x1e1cb0[_0x3475('0x1f')];var _0x2e53a9=_0x12a893?_0x547009[_0x3475('0x22')]:_0x1e1cb0['offset']+_0x1e1cb0[_0x3475('0x21')];var _0xdac710;if(_0x2e53a9>=_0x3711a1){_0x2e53a9=_0x3711a1;_0xdac710=0xc8;}else{_0xdac710=0xce;}_0x49ba96[_0x3475('0x1d')](_0xdac710);return _0x49ba96['set'](_0x3475('0x23'),_0x3ab7a8+'-'+_0x2e53a9+'/'+_0x3711a1)[_0x3475('0x1e')](_0x547009);}return null;};}function patchUpdates(_0x438992){return function(_0x38ea14){try{jsonpatch[_0x3475('0x24')](_0x38ea14,_0x438992,!![]);}catch(_0x44b708){return BPromise[_0x3475('0x25')](_0x44b708);}return _0x38ea14[_0x3475('0x26')]();};}function saveUpdates(_0x10746b,_0x3ade34){return function(_0x1d0e95){if(_0x1d0e95){return _0x1d0e95[_0x3475('0x27')](_0x10746b)[_0x3475('0x28')](function(_0x4ff2a1){return _0x4ff2a1;});}return null;};}function removeEntity(_0x4d35f9,_0x52c825){return function(_0x552cc){if(_0x552cc){return _0x552cc[_0x3475('0x29')]()['then'](function(){var _0x1f3481=_0x552cc[_0x3475('0x2a')]({'plain':!![]});var _0x6a0197=[{'name':_0x3475('0x2b'),'value':_0x3475('0x2c'),'ignore':![]},{'name':'QueueCampaigns','value':'outbound','ignore':![]}];var _0x307467=_(_0x6a0197)[_0x3475('0x2d')](_0x3475('0x2e'))[_0x3475('0x2f')](_0x3475('0x30'))[_0x3475('0x30')]();if(_['includes'](_0x307467,_0x1f3481[_0x3475('0x31')])){return;}var _0x1b6ef3=_[_0x3475('0x32')](_0x6a0197,[_0x3475('0x30'),_0x1f3481[_0x3475('0x31')]])['name'];return db['UserProfileResource'][_0x3475('0x29')]({'where':{'type':_0x1b6ef3,'resourceId':_0x1f3481['id']}})[_0x3475('0x28')](function(){return _0x552cc;});})[_0x3475('0x28')](function(){_0x4d35f9['status'](0xcc)[_0x3475('0x33')]();});}};}function handleEntityNotFound(_0x40d37a,_0x2554b5){return function(_0x10ec45){if(!_0x10ec45){_0x40d37a[_0x3475('0x1c')](0x194);}return _0x10ec45;};}function handleError(_0x4362ad,_0xb4cc70){_0xb4cc70=_0xb4cc70||0x1f4;return function(_0x580942){logger[_0x3475('0x34')](_0x580942[_0x3475('0x35')]);if(_0x580942[_0x3475('0x36')]){delete _0x580942[_0x3475('0x36')];}_0x4362ad[_0x3475('0x1d')](_0xb4cc70)[_0x3475('0x37')](_0x580942);};}exports[_0x3475('0x38')]=function(_0x1dfd4c,_0x784ef8){var _0x651d4c={},_0x501775={},_0x49d11d={'count':0x0,'rows':[]};var _0x229124=_[_0x3475('0x2f')](db[_0x3475('0x39')][_0x3475('0x3a')],function(_0x3bc3fd){return{'name':_0x3bc3fd['fieldName'],'type':_0x3bc3fd['type'][_0x3475('0x3b')]};});_0x501775[_0x3475('0x3c')]=_[_0x3475('0x2f')](_0x229124,_0x3475('0x36'));_0x501775['query']=_[_0x3475('0x3d')](_0x1dfd4c[_0x3475('0x3e')]);_0x501775[_0x3475('0x3f')]=_[_0x3475('0x40')](_0x501775[_0x3475('0x3c')],_0x501775[_0x3475('0x3e')]);_0x651d4c[_0x3475('0x41')]=_[_0x3475('0x40')](_0x501775[_0x3475('0x3c')],qs[_0x3475('0x42')](_0x1dfd4c[_0x3475('0x3e')]['fields']));_0x651d4c['attributes']=_0x651d4c[_0x3475('0x41')][_0x3475('0x43')]?_0x651d4c[_0x3475('0x41')]:_0x501775[_0x3475('0x3c')];if(!_0x1dfd4c[_0x3475('0x3e')][_0x3475('0x44')](_0x3475('0x45'))){_0x651d4c[_0x3475('0x21')]=qs['limit'](_0x1dfd4c[_0x3475('0x3e')][_0x3475('0x21')]);_0x651d4c[_0x3475('0x1f')]=qs['offset'](_0x1dfd4c[_0x3475('0x3e')][_0x3475('0x1f')]);}_0x651d4c[_0x3475('0x46')]=qs[_0x3475('0x47')](_0x1dfd4c['query'][_0x3475('0x47')]);_0x651d4c[_0x3475('0x48')]=qs[_0x3475('0x3f')](_['pick'](_0x1dfd4c[_0x3475('0x3e')],_0x501775['filters']),_0x229124);if(_0x1dfd4c[_0x3475('0x3e')][_0x3475('0x2d')]){_0x651d4c[_0x3475('0x48')]=_[_0x3475('0x49')](_0x651d4c[_0x3475('0x48')],{'$or':_['map'](_0x229124,function(_0x264209){if(_0x264209['type']!=='VIRTUAL'){var _0x327288={};_0x327288[_0x264209[_0x3475('0x36')]]={'$like':'%'+_0x1dfd4c['query'][_0x3475('0x2d')]+'%'};return _0x327288;}})});}_0x651d4c=_[_0x3475('0x49')]({},_0x651d4c,_0x1dfd4c[_0x3475('0x4a')]);var _0x394d62={'where':_0x651d4c['where']};return db['VoiceQueue'][_0x3475('0x22')](_0x394d62)['then'](function(_0x492218){_0x49d11d['count']=_0x492218;if(_0x1dfd4c[_0x3475('0x3e')]['includeAll']){_0x651d4c[_0x3475('0x4b')]=[{'all':!![]}];}return db[_0x3475('0x39')][_0x3475('0x4c')](_0x651d4c);})[_0x3475('0x28')](function(_0x2042da){_0x49d11d[_0x3475('0x4d')]=_0x2042da;return _0x49d11d;})['then'](respondWithFilteredResult(_0x784ef8,_0x651d4c))[_0x3475('0x4e')](handleError(_0x784ef8,null));};exports['show']=function(_0x473747,_0x3793c4){var _0x5c5e3e={'raw':![],'where':{'id':_0x473747[_0x3475('0x4f')]['id']}},_0x34e589={};_0x34e589[_0x3475('0x3c')]=_['keys'](db[_0x3475('0x39')]['rawAttributes']);_0x34e589[_0x3475('0x3e')]=_['keys'](_0x473747['query']);_0x34e589[_0x3475('0x3f')]=_[_0x3475('0x40')](_0x34e589[_0x3475('0x3c')],_0x34e589['query']);_0x5c5e3e['attributes']=_[_0x3475('0x40')](_0x34e589['model'],qs[_0x3475('0x42')](_0x473747[_0x3475('0x3e')][_0x3475('0x42')]));_0x5c5e3e[_0x3475('0x41')]=_0x5c5e3e['attributes'][_0x3475('0x43')]?_0x5c5e3e['attributes']:_0x34e589['model'];if(_0x473747['query'][_0x3475('0x50')]){_0x5c5e3e[_0x3475('0x4b')]=[{'all':!![]}];}_0x5c5e3e=_[_0x3475('0x49')]({},_0x5c5e3e,_0x473747['options']);return db[_0x3475('0x39')][_0x3475('0x32')](_0x5c5e3e)['then'](handleEntityNotFound(_0x3793c4,null))[_0x3475('0x28')](respondWithResult(_0x3793c4,null))[_0x3475('0x4e')](handleError(_0x3793c4,null));};exports[_0x3475('0x51')]=function(_0x37e664,_0x36df85){return db['VoiceQueue'][_0x3475('0x51')](_0x37e664['body'],{})[_0x3475('0x28')](function(_0x1000db){var _0x318b98=_0x37e664[_0x3475('0x52')]['get']({'plain':!![]});if(!_0x318b98)throw new Error(_0x3475('0x53'));if(_0x318b98[_0x3475('0x54')]===_0x3475('0x52')){var _0x22c104=_0x1000db[_0x3475('0x2a')]({'plain':!![]});var _0x33aac5=[{'name':_0x3475('0x2b'),'value':'inbound'},{'name':_0x3475('0x55'),'value':_0x3475('0x56')}];var _0x4a77ac=_[_0x3475('0x32')](_0x33aac5,[_0x3475('0x30'),_0x22c104['type']])[_0x3475('0x36')];return db[_0x3475('0x57')]['find']({'where':{'name':_0x4a77ac,'userProfileId':_0x318b98[_0x3475('0x58')]},'raw':!![]})[_0x3475('0x28')](function(_0x4256f9){if(_0x4256f9&&_0x4256f9[_0x3475('0x59')]===0x0){return db[_0x3475('0x5a')][_0x3475('0x51')]({'name':_0x22c104[_0x3475('0x36')],'resourceId':_0x22c104['id'],'type':_0x4256f9[_0x3475('0x36')],'sectionId':_0x4256f9['id']},{})[_0x3475('0x28')](function(){return _0x1000db;});}else{return _0x1000db;}})[_0x3475('0x4e')](function(_0x4439ad){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4439ad);throw _0x4439ad;});}return _0x1000db;})[_0x3475('0x28')](respondWithResult(_0x36df85,0xc9))[_0x3475('0x4e')](handleError(_0x36df85,null));};exports[_0x3475('0x5b')]=function(_0x59e620,_0x281901){var _0x2671da={'where':{'id':_0x59e620[_0x3475('0x4f')]['id']}},_0x3cd513={};_0x3cd513[_0x3475('0x3c')]=_['keys'](db[_0x3475('0x39')][_0x3475('0x3a')]);_0x2671da[_0x3475('0x41')]=_[_0x3475('0x40')](_0x3cd513[_0x3475('0x3c')],qs[_0x3475('0x42')](_0x59e620[_0x3475('0x3e')][_0x3475('0x42')]));_0x2671da[_0x3475('0x41')]=_0x2671da['attributes'][_0x3475('0x43')]?_0x2671da[_0x3475('0x41')]:_0x3cd513[_0x3475('0x3c')];if(_0x59e620[_0x3475('0x3e')][_0x3475('0x50')]){_0x2671da['include']=[{'all':!![]}];}_0x2671da=_[_0x3475('0x49')]({},_0x2671da,_0x59e620['options']);return db[_0x3475('0x39')][_0x3475('0x32')](_0x2671da)[_0x3475('0x28')](handleEntityNotFound(_0x281901,null))['then'](function(_0x280e27){if(_0x280e27){var _0x3a5a7a=_0x280e27[_0x3475('0x2a')]({'plain':!![]});_0x3a5a7a=qs[_0x3475('0x5c')](_0x3a5a7a,['id',_0x3475('0x5d'),_0x3475('0x5e')]);_0x59e620[_0x3475('0x5f')]=_[_0x3475('0x5c')](_0x59e620['body'],['id','createdAt',_0x3475('0x5e')]);return db[_0x3475('0x39')]['create'](_[_0x3475('0x49')](_0x3a5a7a,_0x59e620['body']),{'include':_0x59e620[_0x3475('0x3e')][_0x3475('0x50')]?[{'all':!![]}]:undefined})['then'](function(_0x5ba83f){var _0x58824d=_0x59e620['user']['get']({'plain':!![]});if(!_0x58824d)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x58824d['role']==='user'){var _0x7f47a8=_0x5ba83f['get']({'plain':!![]});var _0x415d1d=[{'name':_0x3475('0x2b'),'value':_0x3475('0x2c')},{'name':_0x3475('0x55'),'value':'outbound'}];var _0x298a10=_[_0x3475('0x32')](_0x415d1d,['value',_0x7f47a8[_0x3475('0x31')]])['name'];return db[_0x3475('0x57')][_0x3475('0x32')]({'where':{'name':_0x298a10,'userProfileId':_0x58824d[_0x3475('0x58')]},'raw':!![]})['then'](function(_0x2773e6){if(_0x2773e6&&_0x2773e6[_0x3475('0x59')]===0x0){return db[_0x3475('0x5a')]['create']({'name':_0x7f47a8[_0x3475('0x36')],'resourceId':_0x7f47a8['id'],'type':_0x2773e6['name'],'sectionId':_0x2773e6['id']},{})[_0x3475('0x28')](function(){return _0x5ba83f;});}else{return _0x5ba83f;}})['catch'](function(_0xdb9407){logger[_0x3475('0x34')](_0x3475('0x60'),_0xdb9407);throw _0xdb9407;});}return _0x5ba83f;});}})[_0x3475('0x28')](respondWithResult(_0x281901,0xc9))[_0x3475('0x4e')](handleError(_0x281901,null));};exports['update']=function(_0x30df25,_0xd228c3){if(_0x30df25[_0x3475('0x5f')]['id']){delete _0x30df25[_0x3475('0x5f')]['id'];}return db['VoiceQueue'][_0x3475('0x32')]({'where':{'id':_0x30df25[_0x3475('0x4f')]['id']}})[_0x3475('0x28')](handleEntityNotFound(_0xd228c3,null))[_0x3475('0x28')](saveUpdates(_0x30df25[_0x3475('0x5f')],null))['then'](respondWithResult(_0xd228c3,null))[_0x3475('0x4e')](handleError(_0xd228c3,null));};exports['destroy']=function(_0x2e78b8,_0x55a3ff){return db['VoiceQueue'][_0x3475('0x32')]({'where':{'id':_0x2e78b8[_0x3475('0x4f')]['id']}})[_0x3475('0x28')](handleEntityNotFound(_0x55a3ff,null))[_0x3475('0x28')](removeEntity(_0x55a3ff,null))[_0x3475('0x4e')](handleError(_0x55a3ff,null));};exports['getHoppers']=function(_0x4ef66c,_0x14131a,_0xcc0802){var _0x3f22f7={'raw':![],'where':{}};var _0x393be3={};var _0x5860b0={'count':0x0,'rows':[]};return db['VoiceQueue'][_0x3475('0x61')]({'where':{'id':_0x4ef66c[_0x3475('0x4f')]['id']}})['then'](handleEntityNotFound(_0x14131a,null))[_0x3475('0x28')](function(_0x1ed305){if(_0x1ed305){_0x393be3['model']=_['keys'](db[_0x3475('0x62')][_0x3475('0x3a')]);_0x393be3['query']=_['keys'](_0x4ef66c[_0x3475('0x3e')]);_0x393be3['filters']=_[_0x3475('0x40')](_0x393be3[_0x3475('0x3c')],_0x393be3['query']);_0x3f22f7[_0x3475('0x41')]=_[_0x3475('0x40')](_0x393be3[_0x3475('0x3c')],qs[_0x3475('0x42')](_0x4ef66c[_0x3475('0x3e')][_0x3475('0x42')]));_0x3f22f7[_0x3475('0x41')]=_0x3f22f7[_0x3475('0x41')][_0x3475('0x43')]?_0x3f22f7[_0x3475('0x41')]:_0x393be3['model'];if(!_0x4ef66c[_0x3475('0x3e')][_0x3475('0x44')]('nolimit')){_0x3f22f7[_0x3475('0x21')]=qs[_0x3475('0x21')](_0x4ef66c[_0x3475('0x3e')][_0x3475('0x21')]);_0x3f22f7[_0x3475('0x1f')]=qs[_0x3475('0x1f')](_0x4ef66c[_0x3475('0x3e')][_0x3475('0x1f')]);}_0x3f22f7[_0x3475('0x46')]=qs[_0x3475('0x47')](_0x4ef66c[_0x3475('0x3e')][_0x3475('0x47')]);_0x3f22f7[_0x3475('0x48')]=qs['filters'](_[_0x3475('0x63')](_0x4ef66c[_0x3475('0x3e')],_0x393be3[_0x3475('0x3f')]));_0x3f22f7[_0x3475('0x48')]['VoiceQueueId']=_0x1ed305['id'];if(_0x4ef66c['query']['filter']){_0x3f22f7[_0x3475('0x48')]=_[_0x3475('0x49')](_0x3f22f7[_0x3475('0x48')],{'$or':_[_0x3475('0x2f')](_0x3f22f7[_0x3475('0x41')],function(_0x4289c9){var _0x409099={};_0x409099[_0x4289c9]={'$like':'%'+_0x4ef66c[_0x3475('0x3e')][_0x3475('0x2d')]+'%'};return _0x409099;})});}_0x3f22f7=_[_0x3475('0x49')]({},_0x3f22f7,_0x4ef66c[_0x3475('0x4a')]);return db[_0x3475('0x62')][_0x3475('0x22')]({'where':_0x3f22f7[_0x3475('0x48')]})['then'](function(_0x28fa96){_0x5860b0[_0x3475('0x22')]=_0x28fa96;if(_0x4ef66c['query']['includeAll']){_0x3f22f7['include']=[{'all':!![]}];}return db[_0x3475('0x62')]['findAll'](_0x3f22f7);})[_0x3475('0x28')](function(_0x91abf3){_0x5860b0[_0x3475('0x4d')]=_0x91abf3;return _0x5860b0;});}})[_0x3475('0x28')](respondWithFilteredResult(_0x14131a,_0x3f22f7))[_0x3475('0x4e')](handleError(_0x14131a,null));};exports[_0x3475('0x64')]=function(_0x30e30b,_0x25d092,_0x384490){var _0x392da4={'raw':!![],'where':{}};var _0x2d6986={};var _0x5425c9={'count':0x0,'rows':[]};return db['VoiceQueue'][_0x3475('0x61')]({'where':{'id':_0x30e30b[_0x3475('0x4f')]['id']}})[_0x3475('0x28')](handleEntityNotFound(_0x25d092,null))[_0x3475('0x28')](function(_0x5efa7e){if(_0x5efa7e){_0x2d6986[_0x3475('0x3c')]=_[_0x3475('0x3d')](db['CmHopperHistory'][_0x3475('0x3a')]);_0x2d6986[_0x3475('0x3e')]=_['keys'](_0x30e30b[_0x3475('0x3e')]);_0x2d6986[_0x3475('0x3f')]=_[_0x3475('0x40')](_0x2d6986[_0x3475('0x3c')],_0x2d6986[_0x3475('0x3e')]);_0x392da4[_0x3475('0x41')]=_[_0x3475('0x40')](_0x2d6986[_0x3475('0x3c')],qs[_0x3475('0x42')](_0x30e30b[_0x3475('0x3e')]['fields']));_0x392da4[_0x3475('0x41')]=_0x392da4[_0x3475('0x41')][_0x3475('0x43')]?_0x392da4['attributes']:_0x2d6986[_0x3475('0x3c')];if(!_0x30e30b[_0x3475('0x3e')][_0x3475('0x44')](_0x3475('0x45'))){_0x392da4[_0x3475('0x21')]=qs[_0x3475('0x21')](_0x30e30b[_0x3475('0x3e')][_0x3475('0x21')]);_0x392da4['offset']=qs[_0x3475('0x1f')](_0x30e30b[_0x3475('0x3e')]['offset']);}_0x392da4['order']=qs[_0x3475('0x47')](_0x30e30b[_0x3475('0x3e')][_0x3475('0x47')]);_0x392da4[_0x3475('0x48')]=qs[_0x3475('0x3f')](_['pick'](_0x30e30b[_0x3475('0x3e')],_0x2d6986[_0x3475('0x3f')]));_0x392da4[_0x3475('0x48')][_0x3475('0x65')]=_0x5efa7e['id'];if(_0x30e30b['query'][_0x3475('0x2d')]){_0x392da4[_0x3475('0x48')]=_[_0x3475('0x49')](_0x392da4[_0x3475('0x48')],{'$or':_[_0x3475('0x2f')](_0x392da4[_0x3475('0x41')],function(_0x193b83){var _0x442db0={};_0x442db0[_0x193b83]={'$like':'%'+_0x30e30b[_0x3475('0x3e')][_0x3475('0x2d')]+'%'};return _0x442db0;})});}_0x392da4=_[_0x3475('0x49')]({},_0x392da4,_0x30e30b[_0x3475('0x4a')]);return db['CmHopperHistory'][_0x3475('0x22')]({'where':_0x392da4[_0x3475('0x48')]})[_0x3475('0x28')](function(_0x2802a0){_0x5425c9[_0x3475('0x22')]=_0x2802a0;if(_0x30e30b[_0x3475('0x3e')][_0x3475('0x50')]){_0x392da4['include']=[{'all':!![]}];}return db[_0x3475('0x66')][_0x3475('0x4c')](_0x392da4);})[_0x3475('0x28')](function(_0x24bf38){_0x5425c9[_0x3475('0x4d')]=_0x24bf38;return _0x5425c9;});}})[_0x3475('0x28')](respondWithFilteredResult(_0x25d092,_0x392da4))[_0x3475('0x4e')](handleError(_0x25d092,null));};exports[_0x3475('0x67')]=function(_0x1d8e82,_0x3ea7af,_0x4dd301){var _0x1abff8={'raw':!![],'where':{}};var _0x2889fa={};var _0x2a381f={'count':0x0,'rows':[]};return db['VoiceQueue']['findOne']({'where':{'id':_0x1d8e82[_0x3475('0x4f')]['id']}})[_0x3475('0x28')](handleEntityNotFound(_0x3ea7af,null))['then'](function(_0x2872af){if(_0x2872af){_0x2889fa[_0x3475('0x3c')]=_['keys'](db[_0x3475('0x68')]['rawAttributes']);_0x2889fa['query']=_[_0x3475('0x3d')](_0x1d8e82[_0x3475('0x3e')]);_0x2889fa[_0x3475('0x3f')]=_[_0x3475('0x40')](_0x2889fa['model'],_0x2889fa[_0x3475('0x3e')]);_0x1abff8['attributes']=_[_0x3475('0x40')](_0x2889fa[_0x3475('0x3c')],qs[_0x3475('0x42')](_0x1d8e82['query'][_0x3475('0x42')]));_0x1abff8[_0x3475('0x41')]=_0x1abff8[_0x3475('0x41')][_0x3475('0x43')]?_0x1abff8[_0x3475('0x41')]:_0x2889fa[_0x3475('0x3c')];if(!_0x1d8e82[_0x3475('0x3e')]['hasOwnProperty'](_0x3475('0x45'))){_0x1abff8[_0x3475('0x21')]=qs[_0x3475('0x21')](_0x1d8e82[_0x3475('0x3e')][_0x3475('0x21')]);_0x1abff8[_0x3475('0x1f')]=qs[_0x3475('0x1f')](_0x1d8e82[_0x3475('0x3e')][_0x3475('0x1f')]);}_0x1abff8[_0x3475('0x46')]=qs[_0x3475('0x47')](_0x1d8e82[_0x3475('0x3e')]['sort']);_0x1abff8[_0x3475('0x48')]=qs[_0x3475('0x3f')](_[_0x3475('0x63')](_0x1d8e82['query'],_0x2889fa[_0x3475('0x3f')]));_0x1abff8[_0x3475('0x48')][_0x3475('0x65')]=_0x2872af['id'];if(_0x1d8e82[_0x3475('0x3e')][_0x3475('0x2d')]){_0x1abff8[_0x3475('0x48')]=_[_0x3475('0x49')](_0x1abff8[_0x3475('0x48')],{'$or':_[_0x3475('0x2f')](_0x1abff8[_0x3475('0x41')],function(_0x485aee){var _0x488251={};_0x488251[_0x485aee]={'$like':'%'+_0x1d8e82['query'][_0x3475('0x2d')]+'%'};return _0x488251;})});}_0x1abff8=_[_0x3475('0x49')]({},_0x1abff8,_0x1d8e82[_0x3475('0x4a')]);return db['CmHopperFinal'][_0x3475('0x22')]({'where':_0x1abff8[_0x3475('0x48')]})[_0x3475('0x28')](function(_0xaef48c){_0x2a381f['count']=_0xaef48c;if(_0x1d8e82['query'][_0x3475('0x50')]){_0x1abff8[_0x3475('0x4b')]=[{'all':!![]}];}return db[_0x3475('0x68')]['findAll'](_0x1abff8);})[_0x3475('0x28')](function(_0x5eb24a){_0x2a381f['rows']=_0x5eb24a;return _0x2a381f;});}})[_0x3475('0x28')](respondWithFilteredResult(_0x3ea7af,_0x1abff8))[_0x3475('0x4e')](handleError(_0x3ea7af,null));};exports[_0x3475('0x69')]=function(_0x2a1e4a,_0x5b2150,_0xf364d5){var _0x5b0e19={'raw':!![],'where':{}};var _0x40151c={};var _0x17ad75={'count':0x0,'rows':[]};return db['VoiceQueue'][_0x3475('0x61')]({'where':{'id':_0x2a1e4a[_0x3475('0x4f')]['id']}})[_0x3475('0x28')](handleEntityNotFound(_0x5b2150,null))[_0x3475('0x28')](function(_0x5d35d4){if(_0x5d35d4){_0x40151c[_0x3475('0x3c')]=_[_0x3475('0x3d')](db[_0x3475('0x6a')][_0x3475('0x3a')]);_0x40151c['query']=_[_0x3475('0x3d')](_0x2a1e4a[_0x3475('0x3e')]);_0x40151c[_0x3475('0x3f')]=_['intersection'](_0x40151c[_0x3475('0x3c')],_0x40151c['query']);_0x5b0e19[_0x3475('0x41')]=_['intersection'](_0x40151c['model'],qs[_0x3475('0x42')](_0x2a1e4a['query'][_0x3475('0x42')]));_0x5b0e19[_0x3475('0x41')]=_0x5b0e19[_0x3475('0x41')][_0x3475('0x43')]?_0x5b0e19[_0x3475('0x41')]:_0x40151c[_0x3475('0x3c')];if(!_0x2a1e4a[_0x3475('0x3e')]['hasOwnProperty'](_0x3475('0x45'))){_0x5b0e19[_0x3475('0x21')]=qs[_0x3475('0x21')](_0x2a1e4a[_0x3475('0x3e')][_0x3475('0x21')]);_0x5b0e19['offset']=qs['offset'](_0x2a1e4a[_0x3475('0x3e')]['offset']);}_0x5b0e19[_0x3475('0x46')]=qs[_0x3475('0x47')](_0x2a1e4a['query']['sort']);_0x5b0e19['where']=qs[_0x3475('0x3f')](_['pick'](_0x2a1e4a[_0x3475('0x3e')],_0x40151c[_0x3475('0x3f')]));_0x5b0e19[_0x3475('0x48')]['VoiceQueueId']=_0x5d35d4['id'];if(_0x2a1e4a[_0x3475('0x3e')][_0x3475('0x2d')]){_0x5b0e19[_0x3475('0x48')]=_['merge'](_0x5b0e19['where'],{'$or':_[_0x3475('0x2f')](_0x5b0e19[_0x3475('0x41')],function(_0x4eb43d){var _0x49a3a9={};_0x49a3a9[_0x4eb43d]={'$like':'%'+_0x2a1e4a['query'][_0x3475('0x2d')]+'%'};return _0x49a3a9;})});}_0x5b0e19=_[_0x3475('0x49')]({},_0x5b0e19,_0x2a1e4a['options']);return db[_0x3475('0x6a')]['count']({'where':_0x5b0e19['where']})['then'](function(_0x71563d){_0x17ad75['count']=_0x71563d;if(_0x2a1e4a[_0x3475('0x3e')][_0x3475('0x50')]){_0x5b0e19['include']=[{'all':!![]}];}return db['CmHopperBlack'][_0x3475('0x4c')](_0x5b0e19);})['then'](function(_0x1faf92){_0x17ad75[_0x3475('0x4d')]=_0x1faf92;return _0x17ad75;});}})[_0x3475('0x28')](respondWithFilteredResult(_0x5b2150,_0x5b0e19))[_0x3475('0x4e')](handleError(_0x5b2150,null));};exports['getTeams']=function(_0x1cc1d,_0x411570,_0x30822a){var _0x25970c={};var _0x28148d={};var _0x42f84f;var _0x109cf9;return db[_0x3475('0x39')][_0x3475('0x61')]({'where':{'id':_0x1cc1d[_0x3475('0x4f')]['id']}})[_0x3475('0x28')](handleEntityNotFound(_0x411570,null))[_0x3475('0x28')](function(_0x2b13fb){if(_0x2b13fb){_0x42f84f=_0x2b13fb;_0x28148d[_0x3475('0x3c')]=_[_0x3475('0x3d')](db[_0x3475('0x6b')][_0x3475('0x3a')]);_0x28148d[_0x3475('0x3e')]=_[_0x3475('0x3d')](_0x1cc1d[_0x3475('0x3e')]);_0x28148d['filters']=_['intersection'](_0x28148d[_0x3475('0x3c')],_0x28148d['query']);_0x25970c[_0x3475('0x41')]=_[_0x3475('0x40')](_0x28148d[_0x3475('0x3c')],qs[_0x3475('0x42')](_0x1cc1d[_0x3475('0x3e')][_0x3475('0x42')]));_0x25970c[_0x3475('0x41')]=_0x25970c['attributes']['length']?_0x25970c['attributes']:_0x28148d[_0x3475('0x3c')];_0x25970c['order']=qs[_0x3475('0x47')](_0x1cc1d[_0x3475('0x3e')][_0x3475('0x47')]);_0x25970c[_0x3475('0x48')]=qs['filters'](_[_0x3475('0x63')](_0x1cc1d[_0x3475('0x3e')],_0x28148d[_0x3475('0x3f')]));if(_0x1cc1d[_0x3475('0x3e')][_0x3475('0x2d')]){_0x25970c[_0x3475('0x48')]=_['merge'](_0x25970c[_0x3475('0x48')],{'$or':_[_0x3475('0x2f')](_0x25970c[_0x3475('0x41')],function(_0x4306b7){var _0x1df288={};_0x1df288[_0x4306b7]={'$like':'%'+_0x1cc1d['query'][_0x3475('0x2d')]+'%'};return _0x1df288;})});}_0x25970c=_[_0x3475('0x49')]({},_0x25970c,_0x1cc1d[_0x3475('0x4a')]);return _0x42f84f[_0x3475('0x6c')](_0x25970c);}})['then'](function(_0x57d255){if(_0x57d255){_0x109cf9=_0x57d255[_0x3475('0x43')];if(!_0x1cc1d['query'][_0x3475('0x44')]('nolimit')){_0x25970c[_0x3475('0x21')]=qs[_0x3475('0x21')](_0x1cc1d[_0x3475('0x3e')][_0x3475('0x21')]);_0x25970c[_0x3475('0x1f')]=qs['offset'](_0x1cc1d[_0x3475('0x3e')]['offset']);}return _0x42f84f['getTeams'](_0x25970c);}})[_0x3475('0x28')](function(_0x395f92){if(_0x395f92){return _0x395f92?{'count':_0x109cf9,'rows':_0x395f92}:null;}})['then'](respondWithResult(_0x411570,null))[_0x3475('0x4e')](handleError(_0x411570,null));};exports['addTeams']=function(_0x1f100b,_0x1b2415,_0x3f4a53){var _0x1bf064=_0x1f100b['body'][_0x3475('0x6d')];var _0x50f52a=_['map'](_0x1bf064,'id');return db[_0x3475('0x6b')][_0x3475('0x4c')]({'where':{'id':_0x50f52a},'attributes':['id'],'include':[{'model':db[_0x3475('0x6e')],'as':_0x3475('0x6f'),'attributes':['id','name','online',_0x3475('0x70'),_0x3475('0x71')],'raw':!![]}]})[_0x3475('0x28')](function(_0x18efb6){if(_0x18efb6){var _0x61a848=_[_0x3475('0x72')](_0x18efb6,function(_0x3da621){var _0x1b5af1=_0x3da621[_0x3475('0x2a')]({'plain':!![]});_0x1b5af1[_0x3475('0x6f')]['forEach'](function(_0x266f63){_0x266f63[_0x3475('0x73')]=_[_0x3475('0x32')](_0x1bf064,{'id':_0x1b5af1['id']})[_0x3475('0x73')];});return _0x1b5af1['Agents'];});return db[_0x3475('0x39')]['find']({'where':{'id':_0x1f100b['params']['id']}})[_0x3475('0x28')](function(_0x1f9004){return db[_0x3475('0x74')][_0x3475('0x75')](function(_0x355fa3){return _0x1f9004[_0x3475('0x76')](_0x50f52a,{'transaction':_0x355fa3})[_0x3475('0x28')](function(){return BPromise[_0x3475('0x77')](_0x1bf064,function(_0x2596de){return db[_0x3475('0x78')][_0x3475('0x79')]({'TeamId':_0x2596de['id'],'VoiceQueueId':_0x1f100b['params']['id'],'penalty':_0x2596de[_0x3475('0x73')]},{'transaction':_0x355fa3});});})[_0x3475('0x28')](function(){return BPromise[_0x3475('0x77')](_0x61a848,function(_0x109572){return db['UserVoiceQueue']['findOrCreate']({'where':{'UserId':_0x109572['id'],'VoiceQueueId':_0x1f100b[_0x3475('0x4f')]['id']},'defaults':{'penalty':_0x109572[_0x3475('0x73')]},'transaction':_0x355fa3});});})[_0x3475('0x28')](function(){return BPromise['each'](_['filter'](_0x61a848,{'online':!![]}),function(_0x505f5a){return db[_0x3475('0x7a')][_0x3475('0x79')]({'membername':_0x505f5a['name'],'UserId':_0x505f5a['id'],'queue_name':_0x1f9004[_0x3475('0x36')],'VoiceQueueId':_0x1f9004['id'],'interface':_[_0x3475('0x7b')](_0x505f5a['interface'])?util[_0x3475('0x7c')](_0x3475('0x7d'),_0x505f5a[_0x3475('0x36')]):_0x505f5a[_0x3475('0x71')],'paused':_0x505f5a[_0x3475('0x70')]||![],'penalty':_0x505f5a['penalty']},{'transaction':_0x355fa3});});})['then'](function(){_0x61a848[_0x3475('0x7e')](function(_0x5d22d1){socket[_0x3475('0x7f')](_0x3475('0x80'),{'UserId':_0x5d22d1['id'],'VoiceQueueId':_0x1f9004['id']});});});});});}})[_0x3475('0x28')](respondWithStatusCode(_0x1b2415,null))[_0x3475('0x4e')](handleError(_0x1b2415,null));};exports[_0x3475('0x81')]=function(_0x3d84a6,_0x2a40f9,_0x51ce2b){return db[_0x3475('0x6b')][_0x3475('0x4c')]({'where':{'id':_0x3d84a6[_0x3475('0x3e')][_0x3475('0x82')]},'attributes':['id'],'include':[{'model':db[_0x3475('0x6e')],'as':_0x3475('0x6f'),'attributes':['id'],'raw':!![]}]})[_0x3475('0x28')](handleEntityNotFound(_0x2a40f9,null))[_0x3475('0x28')](function(_0x1ab6ee){var _0x475b3d=_[_0x3475('0x2f')](_0x1ab6ee,'id');var _0x35f527=[];var _0x3befac=[];var _0x116dde=squel[_0x3475('0x83')]();_0x116dde[_0x3475('0x84')](_0x3475('0x85'))[_0x3475('0x86')](_0x3475('0x87'),'tq')[_0x3475('0x88')]('user_has_teams','ut','ut.TeamId\x20=\x20tq.TeamId')['where'](_0x3475('0x89'),_0x3d84a6['params']['id']);for(var _0x166df3=0x0;_0x166df3<_0x1ab6ee['length'];_0x166df3+=0x1){let _0x4c61fd=_0x1ab6ee[_0x166df3];for(var _0x533a2d=0x0;_0x533a2d<_0x4c61fd[_0x3475('0x6f')][_0x3475('0x43')];_0x533a2d+=0x1){let _0x3650c6=_0x4c61fd[_0x3475('0x6f')][_0x533a2d];var _0x31bd02=_0x116dde[_0x3475('0x5b')]();_0x31bd02['where'](_0x3475('0x8a'),_0x3650c6['id']);_0x3befac[_0x3475('0x8b')](db['sequelize'][_0x3475('0x3e')](_0x31bd02['toString'](),{'type':db[_0x3475('0x74')][_0x3475('0x8c')]['SELECT']})[_0x3475('0x28')](function(_0x4b5838){if(_0x4b5838['length']===0x1){return _0x3650c6['id'];}else{var _0x28272c=_['every'](_['map'](_0x4b5838,_0x3475('0x8d')),function(_0x5b79b7){return _[_0x3475('0x8e')](_0x475b3d,_0x5b79b7);});if(_0x28272c){return _0x3650c6['id'];}}}));}}return BPromise[_0x3475('0x8f')](_0x3befac)[_0x3475('0x28')](function(_0x1dbbe9){_0x35f527=_(_0x35f527)['union'](_0x1dbbe9)['compact']()[_0x3475('0x30')]();return db['VoiceQueue'][_0x3475('0x32')]({'where':{'id':_0x3d84a6[_0x3475('0x4f')]['id']}})[_0x3475('0x28')](function(_0x118e11){return db[_0x3475('0x74')][_0x3475('0x75')](function(_0x3cf975){return _0x118e11[_0x3475('0x81')](_0x3d84a6['query'][_0x3475('0x82')],{'transaction':_0x3cf975})['then'](function(){if(!_[_0x3475('0x90')](_0x35f527)){return _0x118e11[_0x3475('0x91')](_0x35f527,{'transaction':_0x3cf975})[_0x3475('0x28')](function(){return db[_0x3475('0x7a')][_0x3475('0x29')]({'where':{'VoiceQueueId':_0x3d84a6[_0x3475('0x4f')]['id'],'UserId':_0x35f527},'transaction':_0x3cf975});});}})[_0x3475('0x28')](function(){_0x35f527[_0x3475('0x7e')](function(_0x81b80c){socket[_0x3475('0x7f')](_0x3475('0x92'),{'UserId':_0x81b80c,'VoiceQueueId':_0x118e11['id']});});});});});});})[_0x3475('0x28')](respondWithStatusCode(_0x2a40f9,null))['catch'](handleError(_0x2a40f9,null));};exports[_0x3475('0x93')]=function(_0x149324,_0x59c41f,_0x4e5bf9){var _0x54bfd0,_0xc7385f;return db[_0x3475('0x39')][_0x3475('0x32')]({'where':{'id':_0x149324[_0x3475('0x4f')]['id']}})['then'](handleEntityNotFound(_0x59c41f,null))[_0x3475('0x28')](function(_0x38ce99){if(_0x38ce99){_0xc7385f=_0x38ce99;return _0x38ce99['addAgents'](_0x149324[_0x3475('0x5f')][_0x3475('0x82')],_[_0x3475('0x5c')](_0x149324[_0x3475('0x5f')],[_0x3475('0x82'),'id'])||{})[_0x3475('0x94')](function(_0x5bfde2){for(var _0x3cb345=0x0;_0x3cb345<_0x149324[_0x3475('0x5f')][_0x3475('0x82')][_0x3475('0x43')];_0x3cb345+=0x1){socket['emit']('userVoiceQueue:save',{'UserId':Number(_0x149324[_0x3475('0x5f')][_0x3475('0x82')][_0x3cb345]),'VoiceQueueId':Number(_0x149324['params']['id'])});}return _0x5bfde2;});}})[_0x3475('0x28')](function(_0x588a48){_0x54bfd0=_0x588a48||[];if(_0xc7385f){return db['User'][_0x3475('0x4c')]({'where':{'id':_0x149324[_0x3475('0x5f')]['ids']},'attributes':['id',_0x3475('0x36'),_0x3475('0x95'),'voicePause','interface'],'raw':!![]});}})['then'](function(_0x24c4f8){if(!_[_0x3475('0x90')](_0x24c4f8)){var _0x4eb337=[];for(var _0x372656=0x0;_0x372656<_0x24c4f8['length'];_0x372656++){if(_0x24c4f8[_0x372656][_0x3475('0x95')]){_0x4eb337['push'](db['UserVoiceQueueRt'][_0x3475('0x79')]({'membername':_0x24c4f8[_0x372656][_0x3475('0x36')],'UserId':_0x24c4f8[_0x372656]['id'],'queue_name':_0xc7385f[_0x3475('0x36')],'VoiceQueueId':_0xc7385f['id'],'interface':_[_0x3475('0x7b')](_0x24c4f8[_0x372656][_0x3475('0x71')])?util['format']('SIP/%s',_0x24c4f8[_0x372656][_0x3475('0x36')]):_0x24c4f8[_0x372656]['interface'],'paused':_0x24c4f8[_0x372656][_0x3475('0x70')]||![],'penalty':_0x149324[_0x3475('0x5f')][_0x3475('0x73')]||0x0}));}}return BPromise[_0x3475('0x8f')](_0x4eb337);}})[_0x3475('0x28')](function(){return _0x54bfd0;})[_0x3475('0x28')](respondWithResult(_0x59c41f,null))[_0x3475('0x4e')](handleError(_0x59c41f,null));};exports['removeAgents']=function(_0x2cdeed,_0x359c71,_0x3edb9f){return db[_0x3475('0x39')][_0x3475('0x32')]({'where':{'id':_0x2cdeed[_0x3475('0x4f')]['id']}})['then'](handleEntityNotFound(_0x359c71,null))['then'](function(_0x3f4685){if(_0x3f4685){return _0x3f4685[_0x3475('0x91')](_0x2cdeed[_0x3475('0x3e')][_0x3475('0x82')])[_0x3475('0x28')](function(){if(_[_0x3475('0x96')](_0x2cdeed[_0x3475('0x3e')][_0x3475('0x82')])){for(var _0x4f102c=0x0;_0x4f102c<_0x2cdeed[_0x3475('0x3e')][_0x3475('0x82')]['length'];_0x4f102c+=0x1){socket['emit']('userVoiceQueue:remove',{'UserId':Number(_0x2cdeed['query'][_0x3475('0x82')][_0x4f102c]),'VoiceQueueId':Number(_0x2cdeed[_0x3475('0x4f')]['id'])});}}else{socket[_0x3475('0x7f')]('userVoiceQueue:remove',{'UserId':Number(_0x2cdeed[_0x3475('0x3e')]['ids']),'VoiceQueueId':Number(_0x2cdeed['params']['id'])});}});}})[_0x3475('0x28')](function(_0x3d3b89){return db[_0x3475('0x7a')][_0x3475('0x29')]({'where':{'VoiceQueueId':_0x2cdeed[_0x3475('0x4f')]['id'],'UserId':_0x2cdeed[_0x3475('0x3e')][_0x3475('0x82')]}})[_0x3475('0x28')](function(){return _0x3d3b89;});})[_0x3475('0x28')](respondWithStatusCode(_0x359c71,null))[_0x3475('0x4e')](handleError(_0x359c71,null));};exports['getAgents']=function(_0x259d66,_0xd5f66,_0x389ecc){var _0x45fdf8={};var _0x5903de={};var _0x2ce45d;var _0x3f4097;return db[_0x3475('0x39')][_0x3475('0x61')]({'where':{'id':_0x259d66[_0x3475('0x4f')]['id']}})[_0x3475('0x28')](handleEntityNotFound(_0xd5f66,null))['then'](function(_0x1771bf){if(_0x1771bf){_0x2ce45d=_0x1771bf;_0x5903de[_0x3475('0x3c')]=_[_0x3475('0x3d')](db[_0x3475('0x6e')]['rawAttributes']);_0x5903de[_0x3475('0x3e')]=_[_0x3475('0x3d')](_0x259d66['query']);_0x5903de['filters']=_[_0x3475('0x40')](_0x5903de[_0x3475('0x3c')],_0x5903de[_0x3475('0x3e')]);_0x45fdf8[_0x3475('0x41')]=_[_0x3475('0x40')](_0x5903de[_0x3475('0x3c')],qs[_0x3475('0x42')](_0x259d66['query'][_0x3475('0x42')]));_0x45fdf8[_0x3475('0x41')]=_0x45fdf8[_0x3475('0x41')][_0x3475('0x43')]?_0x45fdf8[_0x3475('0x41')]:_0x5903de['model'];_0x45fdf8['order']=qs[_0x3475('0x47')](_0x259d66[_0x3475('0x3e')]['sort']);_0x45fdf8[_0x3475('0x48')]=qs[_0x3475('0x3f')](_[_0x3475('0x63')](_0x259d66['query'],_0x5903de[_0x3475('0x3f')]));if(_0x259d66[_0x3475('0x3e')][_0x3475('0x2d')]){_0x45fdf8['where']=_[_0x3475('0x49')](_0x45fdf8[_0x3475('0x48')],{'$or':_[_0x3475('0x2f')](_0x45fdf8[_0x3475('0x41')],function(_0x223151){var _0xe9d5d0={};_0xe9d5d0[_0x223151]={'$like':'%'+_0x259d66[_0x3475('0x3e')][_0x3475('0x2d')]+'%'};return _0xe9d5d0;})});}_0x45fdf8=_[_0x3475('0x49')]({},_0x45fdf8,_0x259d66[_0x3475('0x4a')]);return _0x2ce45d[_0x3475('0x97')](_0x45fdf8);}})[_0x3475('0x28')](function(_0x50ad8b){if(_0x50ad8b){_0x3f4097=_0x50ad8b[_0x3475('0x43')];if(!_0x259d66[_0x3475('0x3e')][_0x3475('0x44')](_0x3475('0x45'))){_0x45fdf8[_0x3475('0x21')]=qs[_0x3475('0x21')](_0x259d66[_0x3475('0x3e')][_0x3475('0x21')]);_0x45fdf8[_0x3475('0x1f')]=qs[_0x3475('0x1f')](_0x259d66[_0x3475('0x3e')][_0x3475('0x1f')]);}return _0x2ce45d[_0x3475('0x97')](_0x45fdf8);}})[_0x3475('0x28')](function(_0x495297){if(_0x495297){return _0x495297?{'count':_0x3f4097,'rows':_0x495297}:null;}})[_0x3475('0x28')](respondWithResult(_0xd5f66,null))[_0x3475('0x4e')](handleError(_0xd5f66,null));};exports[_0x3475('0x98')]=function(_0x5b6569,_0x1b00b9,_0x50af02){var _0x43434d={};var _0x452529={};var _0x3dd126;var _0x48c055;return db[_0x3475('0x39')][_0x3475('0x61')]({'where':{'id':_0x5b6569[_0x3475('0x4f')]['id']}})[_0x3475('0x28')](handleEntityNotFound(_0x1b00b9,null))[_0x3475('0x28')](function(_0x2e7e62){if(_0x2e7e62){_0x3dd126=_0x2e7e62;_0x452529['model']=_[_0x3475('0x3d')](db[_0x3475('0x7a')][_0x3475('0x3a')]);_0x452529['query']=_['keys'](_0x5b6569['query']);_0x452529['filters']=_['intersection'](_0x452529[_0x3475('0x3c')],_0x452529['query']);_0x43434d[_0x3475('0x41')]=_['intersection'](_0x452529[_0x3475('0x3c')],qs[_0x3475('0x42')](_0x5b6569['query'][_0x3475('0x42')]));_0x43434d[_0x3475('0x41')]=_0x43434d[_0x3475('0x41')][_0x3475('0x43')]?_0x43434d[_0x3475('0x41')]:_0x452529[_0x3475('0x3c')];_0x43434d['order']=qs[_0x3475('0x47')](_0x5b6569[_0x3475('0x3e')][_0x3475('0x47')]);_0x43434d[_0x3475('0x48')]=qs[_0x3475('0x3f')](_[_0x3475('0x63')](_0x5b6569[_0x3475('0x3e')],_0x452529[_0x3475('0x3f')]));if(_0x5b6569['query'][_0x3475('0x2d')]){_0x43434d[_0x3475('0x48')]=_[_0x3475('0x49')](_0x43434d[_0x3475('0x48')],{'$or':_[_0x3475('0x2f')](_0x43434d['attributes'],function(_0x38444b){var _0x15553c={};_0x15553c[_0x38444b]={'$like':'%'+_0x5b6569['query'][_0x3475('0x2d')]+'%'};return _0x15553c;})});}_0x43434d=_['merge']({},_0x43434d,_0x5b6569[_0x3475('0x4a')]);return _0x3dd126['getMembers'](_0x43434d);}})['then'](function(_0x259c90){if(_0x259c90){_0x48c055=_0x259c90[_0x3475('0x43')];if(!_0x5b6569[_0x3475('0x3e')][_0x3475('0x44')](_0x3475('0x45'))){_0x43434d['limit']=qs[_0x3475('0x21')](_0x5b6569['query'][_0x3475('0x21')]);_0x43434d[_0x3475('0x1f')]=qs['offset'](_0x5b6569[_0x3475('0x3e')][_0x3475('0x1f')]);}return _0x3dd126[_0x3475('0x98')](_0x43434d);}})['then'](function(_0x481027){return _0x481027?{'count':_0x48c055,'rows':_0x481027}:null;})[_0x3475('0x28')](respondWithResult(_0x1b00b9,null))[_0x3475('0x4e')](handleError(_0x1b00b9,null));};exports[_0x3475('0x99')]=function(_0x1d333e,_0x1e9343,_0x654a6d){var _0x5d280f={};var _0x3a197f={};var _0x4322c7;var _0x62db6;return db['VoiceQueue'][_0x3475('0x61')]({'where':{'id':_0x1d333e[_0x3475('0x4f')]['id']}})[_0x3475('0x28')](handleEntityNotFound(_0x1e9343,null))[_0x3475('0x28')](function(_0x3c8b8a){if(_0x3c8b8a){_0x4322c7=_0x3c8b8a;_0x3a197f['model']=_[_0x3475('0x3d')](db['CmList'][_0x3475('0x3a')]);_0x3a197f[_0x3475('0x3e')]=_[_0x3475('0x3d')](_0x1d333e['query']);_0x3a197f[_0x3475('0x3f')]=_[_0x3475('0x40')](_0x3a197f[_0x3475('0x3c')],_0x3a197f[_0x3475('0x3e')]);_0x5d280f[_0x3475('0x41')]=_['intersection'](_0x3a197f['model'],qs[_0x3475('0x42')](_0x1d333e['query'][_0x3475('0x42')]));_0x5d280f[_0x3475('0x41')]=_0x5d280f[_0x3475('0x41')]['length']?_0x5d280f[_0x3475('0x41')]:_0x3a197f[_0x3475('0x3c')];_0x5d280f['order']=qs['sort'](_0x1d333e[_0x3475('0x3e')][_0x3475('0x47')]);_0x5d280f[_0x3475('0x48')]=qs[_0x3475('0x3f')](_[_0x3475('0x63')](_0x1d333e[_0x3475('0x3e')],_0x3a197f[_0x3475('0x3f')]));if(_0x1d333e[_0x3475('0x3e')][_0x3475('0x2d')]){_0x5d280f[_0x3475('0x48')]=_[_0x3475('0x49')](_0x5d280f[_0x3475('0x48')],{'$or':_[_0x3475('0x2f')](_0x5d280f['attributes'],function(_0x59aeed){var _0x15a627={};_0x15a627[_0x59aeed]={'$like':'%'+_0x1d333e['query'][_0x3475('0x2d')]+'%'};return _0x15a627;})});}_0x5d280f=_[_0x3475('0x49')]({},_0x5d280f,_0x1d333e[_0x3475('0x4a')]);return _0x4322c7[_0x3475('0x99')](_0x5d280f);}})[_0x3475('0x28')](function(_0x214938){if(_0x214938){_0x62db6=_0x214938['length'];if(!_0x1d333e[_0x3475('0x3e')][_0x3475('0x44')](_0x3475('0x45'))){_0x5d280f['limit']=qs[_0x3475('0x21')](_0x1d333e[_0x3475('0x3e')][_0x3475('0x21')]);_0x5d280f['offset']=qs[_0x3475('0x1f')](_0x1d333e[_0x3475('0x3e')][_0x3475('0x1f')]);}return _0x4322c7[_0x3475('0x99')](_0x5d280f);}})['then'](function(_0x20a000){if(_0x20a000){return _0x20a000?{'count':_0x62db6,'rows':_0x20a000}:null;}})['then'](respondWithResult(_0x1e9343,null))[_0x3475('0x4e')](handleError(_0x1e9343,null));};exports[_0x3475('0x9a')]=function(_0x29dab3,_0x2e6d40,_0x23d321){var _0x14b75c=moment()[_0x3475('0x7c')](_0x3475('0x9b'));var _0x30b61a,_0x30f102;return db[_0x3475('0x39')][_0x3475('0x32')]({'where':{'id':_0x29dab3[_0x3475('0x4f')]['id']}})[_0x3475('0x28')](handleEntityNotFound(_0x2e6d40,null))[_0x3475('0x28')](function(_0x465ee9){if(_0x465ee9){_0x30f102=_0x465ee9;return _0x465ee9[_0x3475('0x9a')](_0x29dab3[_0x3475('0x5f')]['ids'],_[_0x3475('0x5c')](_0x29dab3[_0x3475('0x5f')],[_0x3475('0x82'),'id'])||{});}return null;})[_0x3475('0x94')](function(_0x4134ad){var _0x4ee8ff;_0x30b61a=_0x4134ad||[];var _0xd3453=[];if(_0x4134ad){for(var _0x53144f=0x0;_0x53144f<_0x4134ad['length'];_0x53144f+=0x1){var _0x303fa3=_0x4134ad[_0x53144f]['get']({'plain':!![]});_0x30f102['dialCheckDuplicateType']=_0x29dab3[_0x3475('0x5f')]['dialCheckDuplicateType']?_0x29dab3[_0x3475('0x5f')][_0x3475('0x9c')]:_0x30f102['dialCheckDuplicateType'];switch(_0x30f102[_0x3475('0x9c')]){case'always':_0x4ee8ff=squel[_0x3475('0x9d')]()['into'](_0x3475('0x9e'))[_0x3475('0x9f')]([_0x3475('0xa0'),_0x3475('0xa1'),_0x3475('0xa2'),_0x3475('0xa3'),'VoiceQueueId',_0x3475('0x5d'),_0x3475('0x5e')],squel[_0x3475('0x83')]()[_0x3475('0x84')](_0x3475('0xa0'),_0x3475('0xa0'))[_0x3475('0x84')]('\x27'+_0x14b75c+'\x27','scheduledAt')[_0x3475('0x84')]('id',_0x3475('0xa2'))['field'](_0x303fa3[_0x3475('0xa4')]['toString'](),_0x3475('0xa3'))[_0x3475('0x84')](_0x29dab3[_0x3475('0x4f')]['id'][_0x3475('0xa5')](),'VoiceQueueId')[_0x3475('0x84')]('\x27'+_0x14b75c+'\x27','createdAt')[_0x3475('0x84')]('\x27'+_0x14b75c+'\x27',_0x3475('0x5e'))['from'](_0x3475('0xa6'))[_0x3475('0x48')](_0x3475('0xa7'))[_0x3475('0x48')]('ListId\x20=\x20?',_0x303fa3[_0x3475('0xa4')][_0x3475('0xa5')]())[_0x3475('0x48')]('phone\x20IS\x20NOT\x20NULL')['where'](_0x3475('0xa8'),squel[_0x3475('0x83')]()[_0x3475('0x84')]('COALESCE(calleridnum,\x27\x27)')[_0x3475('0x86')](_0x3475('0xa9'))[_0x3475('0x48')](_0x3475('0x89'),_0x29dab3[_0x3475('0x4f')]['id']['toString']()))[_0x3475('0x48')]('phone\x20NOT\x20IN\x20(?)',squel[_0x3475('0x83')]()['field']('COALESCE(phone,\x27\x27)')[_0x3475('0x86')](_0x3475('0x9e'))[_0x3475('0x48')]('VoiceQueueId\x20=\x20?',_0x29dab3['params']['id'][_0x3475('0xa5')]())))['toString']();break;case _0x3475('0xaa'):_0x4ee8ff=squel[_0x3475('0x9d')]()[_0x3475('0xab')](_0x3475('0x9e'))['fromQuery']([_0x3475('0xa0'),_0x3475('0xa1'),_0x3475('0xa2'),'ListId',_0x3475('0x65'),_0x3475('0x5d'),_0x3475('0x5e')],squel[_0x3475('0x83')]()['field'](_0x3475('0xa0'),'phone')[_0x3475('0x84')]('\x27'+_0x14b75c+'\x27',_0x3475('0xa1'))[_0x3475('0x84')]('id',_0x3475('0xa2'))[_0x3475('0x84')](_0x303fa3[_0x3475('0xa4')][_0x3475('0xa5')](),'ListId')[_0x3475('0x84')](_0x29dab3[_0x3475('0x4f')]['id'][_0x3475('0xa5')](),'VoiceQueueId')[_0x3475('0x84')]('\x27'+_0x14b75c+'\x27',_0x3475('0x5d'))[_0x3475('0x84')]('\x27'+_0x14b75c+'\x27',_0x3475('0x5e'))[_0x3475('0x86')]('cm_contacts')[_0x3475('0x48')](_0x3475('0xa7'))[_0x3475('0x48')](_0x3475('0xac'),_0x303fa3['CmListId']['toString']())[_0x3475('0x48')](_0x3475('0xad'))[_0x3475('0x48')]('phone\x20NOT\x20IN\x20(?)',squel['select']()[_0x3475('0x84')](_0x3475('0xae'))[_0x3475('0x86')]('cm_hopper')[_0x3475('0x48')](_0x3475('0x89'),_0x29dab3[_0x3475('0x4f')]['id']['toString']())))['toString']();break;default:_0x4ee8ff=squel['insert']()[_0x3475('0xab')](_0x3475('0x9e'))[_0x3475('0x9f')]([_0x3475('0xa0'),_0x3475('0xa1'),_0x3475('0xa2'),'ListId',_0x3475('0x65'),_0x3475('0x5d'),_0x3475('0x5e')],squel[_0x3475('0x83')]()[_0x3475('0x84')](_0x3475('0xa0'),_0x3475('0xa0'))[_0x3475('0x84')]('\x27'+_0x14b75c+'\x27',_0x3475('0xa1'))['field']('id',_0x3475('0xa2'))[_0x3475('0x84')](_0x303fa3['CmListId'][_0x3475('0xa5')](),'ListId')['field'](_0x29dab3[_0x3475('0x4f')]['id']['toString'](),'VoiceQueueId')[_0x3475('0x84')]('\x27'+_0x14b75c+'\x27',_0x3475('0x5d'))[_0x3475('0x84')]('\x27'+_0x14b75c+'\x27',_0x3475('0x5e'))[_0x3475('0x86')](_0x3475('0xa6'))[_0x3475('0x48')](_0x3475('0xa7'))['where'](_0x3475('0xac'),_0x303fa3[_0x3475('0xa4')][_0x3475('0xa5')]())[_0x3475('0x48')](_0x3475('0xad')))[_0x3475('0xa5')]();}_0xd3453[_0x3475('0x8b')](db[_0x3475('0x74')][_0x3475('0x3e')](_0x4ee8ff));}return BPromise['all'](_0xd3453);}})[_0x3475('0x28')](function(){var _0x59a19e=[];var _0x21b6bf=squel['insert']()['into'](_0x3475('0xaf'))[_0x3475('0x9f')]([_0x3475('0xb0'),_0x3475('0xa0'),_0x3475('0xb1'),'createdAt',_0x3475('0x5e')],squel[_0x3475('0x83')]()[_0x3475('0x84')](_0x3475('0xb2'))[_0x3475('0x84')]('ci.item')[_0x3475('0x84')](_0x3475('0xb3'))[_0x3475('0x84')]('\x27'+_0x14b75c+'\x27','createdAt')[_0x3475('0x84')]('\x27'+_0x14b75c+'\x27',_0x3475('0x5e'))['from'](_0x3475('0xb4'),'ci')[_0x3475('0x88')](_0x3475('0x9e'),'h','h.ContactId=ci.CmContactId')['where'](_0x3475('0xb5'),_0x14b75c)[_0x3475('0x48')](_0x3475('0xb6'),_0x3475('0xb7')))[_0x3475('0xa5')]();_0x59a19e[_0x3475('0x8b')](db[_0x3475('0x74')][_0x3475('0x3e')](_0x21b6bf));return BPromise['all'](_0x59a19e);})[_0x3475('0x28')](function(){return _0x30b61a;})[_0x3475('0x28')](respondWithResult(_0x2e6d40,null))[_0x3475('0x4e')](handleError(_0x2e6d40,null));};exports['removeLists']=function(_0x2e541f,_0x2b2894,_0x5de29d){return db['VoiceQueue'][_0x3475('0x32')]({'where':{'id':_0x2e541f[_0x3475('0x4f')]['id']}})[_0x3475('0x28')](handleEntityNotFound(_0x2b2894,null))['then'](function(_0x522e4f){if(_0x522e4f){return _0x522e4f[_0x3475('0xb8')](_0x2e541f['query'][_0x3475('0x82')]);}})[_0x3475('0x28')](function(_0x5e5809){if(_0x5e5809){return db[_0x3475('0x62')][_0x3475('0x29')]({'where':{'ListId':_0x2e541f[_0x3475('0x3e')][_0x3475('0x82')],'VoiceQueueId':_0x2e541f[_0x3475('0x4f')]['id']}})[_0x3475('0x28')](function(){return _0x5e5809;});}})[_0x3475('0x28')](respondWithStatusCode(_0x2b2894,null))[_0x3475('0x4e')](handleError(_0x2b2894,null));};exports[_0x3475('0xb9')]=function(_0x4368fb,_0x11ea60,_0x4f64fa){var _0x4cd92b={};var _0x23782f={};var _0x2157a8;var _0x53d2ee;return db['VoiceQueue'][_0x3475('0x61')]({'where':{'id':_0x4368fb[_0x3475('0x4f')]['id']}})['then'](handleEntityNotFound(_0x11ea60,null))[_0x3475('0x28')](function(_0x1950ee){if(_0x1950ee){_0x2157a8=_0x1950ee;_0x23782f['model']=_[_0x3475('0x3d')](db[_0x3475('0xba')][_0x3475('0x3a')]);_0x23782f[_0x3475('0x3e')]=_[_0x3475('0x3d')](_0x4368fb[_0x3475('0x3e')]);_0x23782f[_0x3475('0x3f')]=_['intersection'](_0x23782f['model'],_0x23782f[_0x3475('0x3e')]);_0x4cd92b[_0x3475('0x41')]=_[_0x3475('0x40')](_0x23782f[_0x3475('0x3c')],qs['fields'](_0x4368fb[_0x3475('0x3e')][_0x3475('0x42')]));_0x4cd92b[_0x3475('0x41')]=_0x4cd92b[_0x3475('0x41')][_0x3475('0x43')]?_0x4cd92b[_0x3475('0x41')]:_0x23782f[_0x3475('0x3c')];_0x4cd92b['order']=qs[_0x3475('0x47')](_0x4368fb[_0x3475('0x3e')]['sort']);_0x4cd92b[_0x3475('0x48')]=qs[_0x3475('0x3f')](_[_0x3475('0x63')](_0x4368fb['query'],_0x23782f[_0x3475('0x3f')]));if(_0x4368fb[_0x3475('0x3e')][_0x3475('0x2d')]){_0x4cd92b[_0x3475('0x48')]=_[_0x3475('0x49')](_0x4cd92b[_0x3475('0x48')],{'$or':_[_0x3475('0x2f')](_0x4cd92b[_0x3475('0x41')],function(_0x191e4c){var _0x753426={};_0x753426[_0x191e4c]={'$like':'%'+_0x4368fb[_0x3475('0x3e')]['filter']+'%'};return _0x753426;})});}_0x4cd92b=_[_0x3475('0x49')]({},_0x4cd92b,_0x4368fb[_0x3475('0x4a')]);return _0x2157a8[_0x3475('0xb9')](_0x4cd92b);}})['then'](function(_0x53e4f5){if(_0x53e4f5){_0x53d2ee=_0x53e4f5[_0x3475('0x43')];if(!_0x4368fb[_0x3475('0x3e')]['hasOwnProperty'](_0x3475('0x45'))){_0x4cd92b[_0x3475('0x21')]=qs[_0x3475('0x21')](_0x4368fb['query'][_0x3475('0x21')]);_0x4cd92b['offset']=qs[_0x3475('0x1f')](_0x4368fb[_0x3475('0x3e')][_0x3475('0x1f')]);}return _0x2157a8[_0x3475('0xb9')](_0x4cd92b);}})[_0x3475('0x28')](function(_0x575e12){if(_0x575e12){return _0x575e12?{'count':_0x53d2ee,'rows':_0x575e12}:null;}})[_0x3475('0x28')](respondWithResult(_0x11ea60,null))[_0x3475('0x4e')](handleError(_0x11ea60,null));};exports[_0x3475('0xbb')]=function(_0x58fba1,_0x3ed37c,_0x48415e){var _0x570835,_0xf18e52;return db[_0x3475('0x39')]['find']({'where':{'id':_0x58fba1['params']['id']}})['then'](handleEntityNotFound(_0x3ed37c,null))['then'](function(_0x514aec){if(_0x514aec){_0xf18e52=_0x514aec;return _0x514aec[_0x3475('0xbb')](_0x58fba1[_0x3475('0x5f')][_0x3475('0x82')],_[_0x3475('0x5c')](_0x58fba1['body'],[_0x3475('0x82'),'id'])||{});}return null;})[_0x3475('0x94')](function(_0x3f04ec){var _0x258405;_0x570835=_0x3f04ec||[];var _0x1da7c5=[];if(_0x3f04ec){for(var _0x5885b1=0x0;_0x5885b1<_0x3f04ec[_0x3475('0x43')];_0x5885b1+=0x1){var _0x42de1d=_0x3f04ec[_0x5885b1][_0x3475('0x2a')]({'plain':!![]});_0x258405=squel[_0x3475('0x9d')]()[_0x3475('0xab')]('cm_hopper_black')[_0x3475('0x9f')]([_0x3475('0xa0'),'ContactId','ListId',_0x3475('0x65'),_0x3475('0x5d'),_0x3475('0x5e')],squel['select']()[_0x3475('0x84')](_0x3475('0xa0'),_0x3475('0xa0'))[_0x3475('0x84')]('id',_0x3475('0xa2'))[_0x3475('0x84')](_0x42de1d[_0x3475('0xa4')][_0x3475('0xa5')](),_0x3475('0xa3'))[_0x3475('0x84')](_0x58fba1[_0x3475('0x4f')]['id'][_0x3475('0xa5')](),_0x3475('0x65'))[_0x3475('0x84')](_0x3475('0xbc'),_0x3475('0x5d'))[_0x3475('0x84')]('NOW()',_0x3475('0x5e'))['from'](_0x3475('0xa6'))[_0x3475('0x48')](_0x3475('0xa7'))[_0x3475('0x48')](_0x3475('0xac'),_0x42de1d[_0x3475('0xa4')][_0x3475('0xa5')]())[_0x3475('0x48')](_0x3475('0xad')))['toString']();_0x1da7c5['push'](db[_0x3475('0x74')]['query'](_0x258405));}return BPromise['all'](_0x1da7c5);}})[_0x3475('0x28')](function(){return _0x570835;})[_0x3475('0x28')](respondWithResult(_0x3ed37c,null))['catch'](handleError(_0x3ed37c,null));};exports['removeBlackLists']=function(_0x365f19,_0x44dc85,_0x9f2598){return db[_0x3475('0x39')][_0x3475('0x32')]({'where':{'id':_0x365f19['params']['id']}})[_0x3475('0x28')](handleEntityNotFound(_0x44dc85,null))[_0x3475('0x28')](function(_0xdd99d2){if(_0xdd99d2){return _0xdd99d2[_0x3475('0xbd')](_0x365f19[_0x3475('0x3e')]['ids']);}})[_0x3475('0x28')](function(_0x17da57){if(_0x17da57){return db['CmHopperBlack']['destroy']({'where':{'ListId':_0x365f19['query']['ids'],'VoiceQueueId':_0x365f19['params']['id']}})[_0x3475('0x28')](function(){return _0x17da57;});}})['then'](respondWithStatusCode(_0x44dc85,null))[_0x3475('0x4e')](handleError(_0x44dc85,null));};
\ No newline at end of file
+var _0xb3f9=['VIRTUAL','merge','options','includeAll','include','catch','show','create','body','user','role','inbound','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','params','omit','createdAt','updatedAt','QueueCampaigns','UserProfileSection','update','getHoppers','findOne','CmHopper','nolimit','pick','findAll','getHopperHistories','CmHopperHistory','VoiceQueueId','rows','CmHopperFinal','getHopperBlacks','CmHopperBlack','Team','getTeams','addTeams','Agents','online','voicePause','flatMap','forEach','penalty','sequelize','TeamVoiceQueue','each','UserVoiceQueue','findOrCreate','UserVoiceQueueRt','upsert','isNil','format','SIP/%s','emit','userVoiceQueue:save','removeTeams','User','select','field','from','team_has_voice_queues','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','VoiceQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','QueryTypes','SELECT','all','union','compact','transaction','ids','isEmpty','removeAgents','userVoiceQueue:remove','addAgents','interface','isArray','getAgents','getLists','CmList','addLists','spread','dialCheckDuplicateType','always','into','cm_hopper','fromQuery','phone','scheduledAt','ContactId','CmListId','toString','cm_contacts','deletedAt\x20IS\x20NULL','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','cm_hopper_final','COALESCE(phone,\x27\x27)','onlyIfOpen','insert','ListId','cm_hopper_additional_phones','CmHopperId','OrderBy','h.id','ci.item','ci.OrderBy+1','cm_contact_has_items','join','h.scheduledat=?','ci.ItemClass=?','PHONE','removeLists','getBlackLists','addBlackLists','NOW()','ListId\x20=\x20?','removeBlackLists','eml-format','rimraf','request-promise','bluebird','mustache','util','path','sox','to-csv','lodash','squel','jsforce','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./voiceQueue.socket','register','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','then','destroy','get','VoiceQueues','outbound','filter','map','value','includes','type','find','name','UserProfileResource','end','error','stack','send','index','VoiceQueue','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where'];(function(_0xcc956e,_0x5b8076){var _0x352d62=function(_0x5e7a59){while(--_0x5e7a59){_0xcc956e['push'](_0xcc956e['shift']());}};_0x352d62(++_0x5b8076);}(_0xb3f9,0x7a));var _0x9b3f=function(_0xb1b3a6,_0x38623f){_0xb1b3a6=_0xb1b3a6-0x0;var _0x4e074e=_0xb3f9[_0xb1b3a6];return _0x4e074e;};'use strict';var emlformat=require(_0x9b3f('0x0'));var rimraf=require(_0x9b3f('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x9b3f('0x2'));var moment=require('moment');var BPromise=require(_0x9b3f('0x3'));var Mustache=require(_0x9b3f('0x4'));var util=require(_0x9b3f('0x5'));var path=require(_0x9b3f('0x6'));var sox=require(_0x9b3f('0x7'));var csv=require(_0x9b3f('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9b3f('0x9'));var squel=require(_0x9b3f('0xa'));var crypto=require('crypto');var jsforce=require(_0x9b3f('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x9b3f('0xc'));var Redis=require('ioredis');var authService=require(_0x9b3f('0xd'));var qs=require(_0x9b3f('0xe'));var as=require(_0x9b3f('0xf'));var hardwareService=require(_0x9b3f('0x10'));var logger=require(_0x9b3f('0x11'))('api');var utils=require(_0x9b3f('0x12'));var config=require(_0x9b3f('0x13'));var licenseUtil=require(_0x9b3f('0x14'));var db=require(_0x9b3f('0x15'))['db'];config[_0x9b3f('0x16')]=_[_0x9b3f('0x17')](config[_0x9b3f('0x16')],{'host':_0x9b3f('0x18'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x9b3f('0x19'))[_0x9b3f('0x1a')](socket);function respondWithStatusCode(_0x27dab5,_0x377bfa){_0x377bfa=_0x377bfa||0xcc;return function(_0x76978e){if(_0x76978e){return _0x27dab5['sendStatus'](_0x377bfa);}return _0x27dab5['status'](_0x377bfa)['end']();};}function respondWithResult(_0x34fb19,_0x427992){_0x427992=_0x427992||0xc8;return function(_0x484323){if(_0x484323){return _0x34fb19[_0x9b3f('0x1b')](_0x427992)[_0x9b3f('0x1c')](_0x484323);}};}function respondWithFilteredResult(_0x2cdc7c,_0x5f5c1c){return function(_0x579c32){if(_0x579c32){var _0x2f2a53=typeof _0x5f5c1c[_0x9b3f('0x1d')]===_0x9b3f('0x1e')&&typeof _0x5f5c1c[_0x9b3f('0x1f')]===_0x9b3f('0x1e');var _0x297fa8=_0x579c32[_0x9b3f('0x20')];var _0x17f2d3=_0x2f2a53?0x0:_0x5f5c1c[_0x9b3f('0x1d')];var _0x13e65b=_0x2f2a53?_0x579c32[_0x9b3f('0x20')]:_0x5f5c1c[_0x9b3f('0x1d')]+_0x5f5c1c[_0x9b3f('0x1f')];var _0x1218c0;if(_0x13e65b>=_0x297fa8){_0x13e65b=_0x297fa8;_0x1218c0=0xc8;}else{_0x1218c0=0xce;}_0x2cdc7c[_0x9b3f('0x1b')](_0x1218c0);return _0x2cdc7c[_0x9b3f('0x21')](_0x9b3f('0x22'),_0x17f2d3+'-'+_0x13e65b+'/'+_0x297fa8)[_0x9b3f('0x1c')](_0x579c32);}return null;};}function patchUpdates(_0x3360d6){return function(_0x5b4f21){try{jsonpatch[_0x9b3f('0x23')](_0x5b4f21,_0x3360d6,!![]);}catch(_0x4db496){return BPromise[_0x9b3f('0x24')](_0x4db496);}return _0x5b4f21['save']();};}function saveUpdates(_0x3c9d8d,_0x28dd96){return function(_0x16452e){if(_0x16452e){return _0x16452e['update'](_0x3c9d8d)[_0x9b3f('0x25')](function(_0x483eb3){return _0x483eb3;});}return null;};}function removeEntity(_0x325c74,_0x526355){return function(_0x1b3ba8){if(_0x1b3ba8){return _0x1b3ba8[_0x9b3f('0x26')]()['then'](function(){var _0x248c9d=_0x1b3ba8[_0x9b3f('0x27')]({'plain':!![]});var _0x2dfef4=[{'name':_0x9b3f('0x28'),'value':'inbound','ignore':![]},{'name':'QueueCampaigns','value':_0x9b3f('0x29'),'ignore':![]}];var _0x555bf4=_(_0x2dfef4)[_0x9b3f('0x2a')]('ignore')[_0x9b3f('0x2b')](_0x9b3f('0x2c'))[_0x9b3f('0x2c')]();if(_[_0x9b3f('0x2d')](_0x555bf4,_0x248c9d[_0x9b3f('0x2e')])){return;}var _0x590e9c=_[_0x9b3f('0x2f')](_0x2dfef4,[_0x9b3f('0x2c'),_0x248c9d[_0x9b3f('0x2e')]])[_0x9b3f('0x30')];return db[_0x9b3f('0x31')][_0x9b3f('0x26')]({'where':{'type':_0x590e9c,'resourceId':_0x248c9d['id']}})[_0x9b3f('0x25')](function(){return _0x1b3ba8;});})['then'](function(){_0x325c74['status'](0xcc)[_0x9b3f('0x32')]();});}};}function handleEntityNotFound(_0x4ddecb,_0x53bf78){return function(_0x20b019){if(!_0x20b019){_0x4ddecb['sendStatus'](0x194);}return _0x20b019;};}function handleError(_0x44dab3,_0x1a123a){_0x1a123a=_0x1a123a||0x1f4;return function(_0x294506){logger[_0x9b3f('0x33')](_0x294506[_0x9b3f('0x34')]);if(_0x294506['name']){delete _0x294506[_0x9b3f('0x30')];}_0x44dab3[_0x9b3f('0x1b')](_0x1a123a)[_0x9b3f('0x35')](_0x294506);};}exports[_0x9b3f('0x36')]=function(_0x378e87,_0x365df5){var _0x5c7a9d={},_0x1ae307={},_0x4082cb={'count':0x0,'rows':[]};var _0x222118=_['map'](db[_0x9b3f('0x37')][_0x9b3f('0x38')],function(_0x23d4d6){return{'name':_0x23d4d6[_0x9b3f('0x39')],'type':_0x23d4d6[_0x9b3f('0x2e')][_0x9b3f('0x3a')]};});_0x1ae307[_0x9b3f('0x3b')]=_[_0x9b3f('0x2b')](_0x222118,_0x9b3f('0x30'));_0x1ae307[_0x9b3f('0x3c')]=_[_0x9b3f('0x3d')](_0x378e87[_0x9b3f('0x3c')]);_0x1ae307[_0x9b3f('0x3e')]=_[_0x9b3f('0x3f')](_0x1ae307[_0x9b3f('0x3b')],_0x1ae307['query']);_0x5c7a9d[_0x9b3f('0x40')]=_[_0x9b3f('0x3f')](_0x1ae307[_0x9b3f('0x3b')],qs[_0x9b3f('0x41')](_0x378e87[_0x9b3f('0x3c')][_0x9b3f('0x41')]));_0x5c7a9d[_0x9b3f('0x40')]=_0x5c7a9d['attributes'][_0x9b3f('0x42')]?_0x5c7a9d[_0x9b3f('0x40')]:_0x1ae307['model'];if(!_0x378e87[_0x9b3f('0x3c')][_0x9b3f('0x43')]('nolimit')){_0x5c7a9d[_0x9b3f('0x1f')]=qs[_0x9b3f('0x1f')](_0x378e87[_0x9b3f('0x3c')]['limit']);_0x5c7a9d[_0x9b3f('0x1d')]=qs[_0x9b3f('0x1d')](_0x378e87[_0x9b3f('0x3c')][_0x9b3f('0x1d')]);}_0x5c7a9d[_0x9b3f('0x44')]=qs['sort'](_0x378e87['query'][_0x9b3f('0x45')]);_0x5c7a9d[_0x9b3f('0x46')]=qs['filters'](_['pick'](_0x378e87[_0x9b3f('0x3c')],_0x1ae307['filters']),_0x222118);if(_0x378e87[_0x9b3f('0x3c')]['filter']){_0x5c7a9d[_0x9b3f('0x46')]=_['merge'](_0x5c7a9d['where'],{'$or':_[_0x9b3f('0x2b')](_0x222118,function(_0x3ff5f5){if(_0x3ff5f5[_0x9b3f('0x2e')]!==_0x9b3f('0x47')){var _0x588e84={};_0x588e84[_0x3ff5f5['name']]={'$like':'%'+_0x378e87[_0x9b3f('0x3c')]['filter']+'%'};return _0x588e84;}})});}_0x5c7a9d=_[_0x9b3f('0x48')]({},_0x5c7a9d,_0x378e87[_0x9b3f('0x49')]);var _0x503210={'where':_0x5c7a9d[_0x9b3f('0x46')]};return db[_0x9b3f('0x37')][_0x9b3f('0x20')](_0x503210)[_0x9b3f('0x25')](function(_0x5bb2a7){_0x4082cb[_0x9b3f('0x20')]=_0x5bb2a7;if(_0x378e87[_0x9b3f('0x3c')][_0x9b3f('0x4a')]){_0x5c7a9d[_0x9b3f('0x4b')]=[{'all':!![]}];}return db[_0x9b3f('0x37')]['findAll'](_0x5c7a9d);})[_0x9b3f('0x25')](function(_0x2cb8e0){_0x4082cb['rows']=_0x2cb8e0;return _0x4082cb;})[_0x9b3f('0x25')](respondWithFilteredResult(_0x365df5,_0x5c7a9d))[_0x9b3f('0x4c')](handleError(_0x365df5,null));};exports[_0x9b3f('0x4d')]=function(_0x735da1,_0x2efc70){var _0xdf1738={'raw':![],'where':{'id':_0x735da1['params']['id']}},_0x24d87c={};_0x24d87c[_0x9b3f('0x3b')]=_[_0x9b3f('0x3d')](db[_0x9b3f('0x37')][_0x9b3f('0x38')]);_0x24d87c[_0x9b3f('0x3c')]=_[_0x9b3f('0x3d')](_0x735da1[_0x9b3f('0x3c')]);_0x24d87c[_0x9b3f('0x3e')]=_[_0x9b3f('0x3f')](_0x24d87c['model'],_0x24d87c[_0x9b3f('0x3c')]);_0xdf1738['attributes']=_[_0x9b3f('0x3f')](_0x24d87c[_0x9b3f('0x3b')],qs[_0x9b3f('0x41')](_0x735da1[_0x9b3f('0x3c')]['fields']));_0xdf1738[_0x9b3f('0x40')]=_0xdf1738[_0x9b3f('0x40')][_0x9b3f('0x42')]?_0xdf1738[_0x9b3f('0x40')]:_0x24d87c['model'];if(_0x735da1['query']['includeAll']){_0xdf1738['include']=[{'all':!![]}];}_0xdf1738=_[_0x9b3f('0x48')]({},_0xdf1738,_0x735da1[_0x9b3f('0x49')]);return db[_0x9b3f('0x37')][_0x9b3f('0x2f')](_0xdf1738)[_0x9b3f('0x25')](handleEntityNotFound(_0x2efc70,null))['then'](respondWithResult(_0x2efc70,null))[_0x9b3f('0x4c')](handleError(_0x2efc70,null));};exports['create']=function(_0x330975,_0x3c6950){return db['VoiceQueue'][_0x9b3f('0x4e')](_0x330975[_0x9b3f('0x4f')],{})[_0x9b3f('0x25')](function(_0x42b751){var _0x36320e=_0x330975[_0x9b3f('0x50')][_0x9b3f('0x27')]({'plain':!![]});if(!_0x36320e)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x36320e[_0x9b3f('0x51')]==='user'){var _0x9503f0=_0x42b751[_0x9b3f('0x27')]({'plain':!![]});var _0x7839f9=[{'name':_0x9b3f('0x28'),'value':_0x9b3f('0x52')},{'name':'QueueCampaigns','value':_0x9b3f('0x29')}];var _0xbea8cb=_['find'](_0x7839f9,[_0x9b3f('0x2c'),_0x9503f0[_0x9b3f('0x2e')]])[_0x9b3f('0x30')];return db['UserProfileSection'][_0x9b3f('0x2f')]({'where':{'name':_0xbea8cb,'userProfileId':_0x36320e[_0x9b3f('0x53')]},'raw':!![]})['then'](function(_0x4652c4){if(_0x4652c4&&_0x4652c4[_0x9b3f('0x54')]===0x0){return db[_0x9b3f('0x31')][_0x9b3f('0x4e')]({'name':_0x9503f0[_0x9b3f('0x30')],'resourceId':_0x9503f0['id'],'type':_0x4652c4['name'],'sectionId':_0x4652c4['id']},{})[_0x9b3f('0x25')](function(){return _0x42b751;});}else{return _0x42b751;}})[_0x9b3f('0x4c')](function(_0x36eb9c){logger[_0x9b3f('0x33')](_0x9b3f('0x55'),_0x36eb9c);throw _0x36eb9c;});}return _0x42b751;})[_0x9b3f('0x25')](respondWithResult(_0x3c6950,0xc9))[_0x9b3f('0x4c')](handleError(_0x3c6950,null));};exports[_0x9b3f('0x56')]=function(_0x323c6d,_0x3dd4fc){var _0x2dc3b2={'where':{'id':_0x323c6d[_0x9b3f('0x57')]['id']}},_0x11011e={};_0x11011e[_0x9b3f('0x3b')]=_[_0x9b3f('0x3d')](db['VoiceQueue'][_0x9b3f('0x38')]);_0x2dc3b2[_0x9b3f('0x40')]=_[_0x9b3f('0x3f')](_0x11011e[_0x9b3f('0x3b')],qs[_0x9b3f('0x41')](_0x323c6d[_0x9b3f('0x3c')][_0x9b3f('0x41')]));_0x2dc3b2[_0x9b3f('0x40')]=_0x2dc3b2['attributes'][_0x9b3f('0x42')]?_0x2dc3b2['attributes']:_0x11011e[_0x9b3f('0x3b')];if(_0x323c6d[_0x9b3f('0x3c')][_0x9b3f('0x4a')]){_0x2dc3b2[_0x9b3f('0x4b')]=[{'all':!![]}];}_0x2dc3b2=_[_0x9b3f('0x48')]({},_0x2dc3b2,_0x323c6d[_0x9b3f('0x49')]);return db[_0x9b3f('0x37')][_0x9b3f('0x2f')](_0x2dc3b2)[_0x9b3f('0x25')](handleEntityNotFound(_0x3dd4fc,null))[_0x9b3f('0x25')](function(_0x51adab){if(_0x51adab){var _0x461999=_0x51adab[_0x9b3f('0x27')]({'plain':!![]});_0x461999=qs[_0x9b3f('0x58')](_0x461999,['id',_0x9b3f('0x59'),_0x9b3f('0x5a')]);_0x323c6d['body']=_[_0x9b3f('0x58')](_0x323c6d[_0x9b3f('0x4f')],['id','createdAt',_0x9b3f('0x5a')]);return db['VoiceQueue']['create'](_['merge'](_0x461999,_0x323c6d['body']),{'include':_0x323c6d[_0x9b3f('0x3c')][_0x9b3f('0x4a')]?[{'all':!![]}]:undefined})['then'](function(_0x514aac){var _0x24a45a=_0x323c6d[_0x9b3f('0x50')][_0x9b3f('0x27')]({'plain':!![]});if(!_0x24a45a)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x24a45a[_0x9b3f('0x51')]==='user'){var _0x4b0575=_0x514aac['get']({'plain':!![]});var _0x56631b=[{'name':'VoiceQueues','value':_0x9b3f('0x52')},{'name':_0x9b3f('0x5b'),'value':_0x9b3f('0x29')}];var _0x1bfaad=_[_0x9b3f('0x2f')](_0x56631b,[_0x9b3f('0x2c'),_0x4b0575[_0x9b3f('0x2e')]])['name'];return db[_0x9b3f('0x5c')][_0x9b3f('0x2f')]({'where':{'name':_0x1bfaad,'userProfileId':_0x24a45a[_0x9b3f('0x53')]},'raw':!![]})[_0x9b3f('0x25')](function(_0x44ec13){if(_0x44ec13&&_0x44ec13['autoAssociation']===0x0){return db['UserProfileResource'][_0x9b3f('0x4e')]({'name':_0x4b0575[_0x9b3f('0x30')],'resourceId':_0x4b0575['id'],'type':_0x44ec13['name'],'sectionId':_0x44ec13['id']},{})[_0x9b3f('0x25')](function(){return _0x514aac;});}else{return _0x514aac;}})[_0x9b3f('0x4c')](function(_0x3fdfe9){logger[_0x9b3f('0x33')](_0x9b3f('0x55'),_0x3fdfe9);throw _0x3fdfe9;});}return _0x514aac;});}})['then'](respondWithResult(_0x3dd4fc,0xc9))[_0x9b3f('0x4c')](handleError(_0x3dd4fc,null));};exports[_0x9b3f('0x5d')]=function(_0x41fff0,_0x430570){if(_0x41fff0['body']['id']){delete _0x41fff0[_0x9b3f('0x4f')]['id'];}return db[_0x9b3f('0x37')][_0x9b3f('0x2f')]({'where':{'id':_0x41fff0['params']['id']}})[_0x9b3f('0x25')](handleEntityNotFound(_0x430570,null))['then'](saveUpdates(_0x41fff0[_0x9b3f('0x4f')],null))[_0x9b3f('0x25')](respondWithResult(_0x430570,null))[_0x9b3f('0x4c')](handleError(_0x430570,null));};exports[_0x9b3f('0x26')]=function(_0x39fdb1,_0x25b2a5){return db[_0x9b3f('0x37')][_0x9b3f('0x2f')]({'where':{'id':_0x39fdb1[_0x9b3f('0x57')]['id']}})[_0x9b3f('0x25')](handleEntityNotFound(_0x25b2a5,null))[_0x9b3f('0x25')](removeEntity(_0x25b2a5,null))[_0x9b3f('0x4c')](handleError(_0x25b2a5,null));};exports[_0x9b3f('0x5e')]=function(_0x37d719,_0x2896de,_0x43751c){var _0x479657={'raw':![],'where':{}};var _0x5ab9f4={};var _0xca9f52={'count':0x0,'rows':[]};return db[_0x9b3f('0x37')][_0x9b3f('0x5f')]({'where':{'id':_0x37d719[_0x9b3f('0x57')]['id']}})[_0x9b3f('0x25')](handleEntityNotFound(_0x2896de,null))[_0x9b3f('0x25')](function(_0x3b2b87){if(_0x3b2b87){_0x5ab9f4[_0x9b3f('0x3b')]=_['keys'](db[_0x9b3f('0x60')][_0x9b3f('0x38')]);_0x5ab9f4[_0x9b3f('0x3c')]=_[_0x9b3f('0x3d')](_0x37d719[_0x9b3f('0x3c')]);_0x5ab9f4[_0x9b3f('0x3e')]=_[_0x9b3f('0x3f')](_0x5ab9f4[_0x9b3f('0x3b')],_0x5ab9f4[_0x9b3f('0x3c')]);_0x479657['attributes']=_[_0x9b3f('0x3f')](_0x5ab9f4['model'],qs[_0x9b3f('0x41')](_0x37d719[_0x9b3f('0x3c')]['fields']));_0x479657[_0x9b3f('0x40')]=_0x479657[_0x9b3f('0x40')][_0x9b3f('0x42')]?_0x479657[_0x9b3f('0x40')]:_0x5ab9f4[_0x9b3f('0x3b')];if(!_0x37d719['query'][_0x9b3f('0x43')](_0x9b3f('0x61'))){_0x479657[_0x9b3f('0x1f')]=qs[_0x9b3f('0x1f')](_0x37d719[_0x9b3f('0x3c')][_0x9b3f('0x1f')]);_0x479657[_0x9b3f('0x1d')]=qs[_0x9b3f('0x1d')](_0x37d719[_0x9b3f('0x3c')]['offset']);}_0x479657[_0x9b3f('0x44')]=qs[_0x9b3f('0x45')](_0x37d719[_0x9b3f('0x3c')][_0x9b3f('0x45')]);_0x479657[_0x9b3f('0x46')]=qs[_0x9b3f('0x3e')](_[_0x9b3f('0x62')](_0x37d719[_0x9b3f('0x3c')],_0x5ab9f4['filters']));_0x479657[_0x9b3f('0x46')]['VoiceQueueId']=_0x3b2b87['id'];if(_0x37d719[_0x9b3f('0x3c')][_0x9b3f('0x2a')]){_0x479657[_0x9b3f('0x46')]=_[_0x9b3f('0x48')](_0x479657['where'],{'$or':_[_0x9b3f('0x2b')](_0x479657[_0x9b3f('0x40')],function(_0xf7412c){var _0x4b94f3={};_0x4b94f3[_0xf7412c]={'$like':'%'+_0x37d719['query'][_0x9b3f('0x2a')]+'%'};return _0x4b94f3;})});}_0x479657=_[_0x9b3f('0x48')]({},_0x479657,_0x37d719[_0x9b3f('0x49')]);return db['CmHopper']['count']({'where':_0x479657[_0x9b3f('0x46')]})['then'](function(_0x48a45c){_0xca9f52[_0x9b3f('0x20')]=_0x48a45c;if(_0x37d719[_0x9b3f('0x3c')][_0x9b3f('0x4a')]){_0x479657['include']=[{'all':!![]}];}return db['CmHopper'][_0x9b3f('0x63')](_0x479657);})[_0x9b3f('0x25')](function(_0x5d7cf7){_0xca9f52['rows']=_0x5d7cf7;return _0xca9f52;});}})[_0x9b3f('0x25')](respondWithFilteredResult(_0x2896de,_0x479657))[_0x9b3f('0x4c')](handleError(_0x2896de,null));};exports[_0x9b3f('0x64')]=function(_0x22d633,_0x37bcc2,_0x81d2a0){var _0x8cdf78={'raw':!![],'where':{}};var _0x57d301={};var _0xbb6d44={'count':0x0,'rows':[]};return db['VoiceQueue']['findOne']({'where':{'id':_0x22d633[_0x9b3f('0x57')]['id']}})[_0x9b3f('0x25')](handleEntityNotFound(_0x37bcc2,null))[_0x9b3f('0x25')](function(_0x21ab78){if(_0x21ab78){_0x57d301[_0x9b3f('0x3b')]=_[_0x9b3f('0x3d')](db[_0x9b3f('0x65')]['rawAttributes']);_0x57d301[_0x9b3f('0x3c')]=_[_0x9b3f('0x3d')](_0x22d633[_0x9b3f('0x3c')]);_0x57d301[_0x9b3f('0x3e')]=_[_0x9b3f('0x3f')](_0x57d301[_0x9b3f('0x3b')],_0x57d301['query']);_0x8cdf78[_0x9b3f('0x40')]=_[_0x9b3f('0x3f')](_0x57d301['model'],qs['fields'](_0x22d633[_0x9b3f('0x3c')][_0x9b3f('0x41')]));_0x8cdf78[_0x9b3f('0x40')]=_0x8cdf78['attributes']['length']?_0x8cdf78[_0x9b3f('0x40')]:_0x57d301[_0x9b3f('0x3b')];if(!_0x22d633['query'][_0x9b3f('0x43')](_0x9b3f('0x61'))){_0x8cdf78[_0x9b3f('0x1f')]=qs['limit'](_0x22d633[_0x9b3f('0x3c')][_0x9b3f('0x1f')]);_0x8cdf78[_0x9b3f('0x1d')]=qs[_0x9b3f('0x1d')](_0x22d633[_0x9b3f('0x3c')][_0x9b3f('0x1d')]);}_0x8cdf78[_0x9b3f('0x44')]=qs['sort'](_0x22d633[_0x9b3f('0x3c')][_0x9b3f('0x45')]);_0x8cdf78[_0x9b3f('0x46')]=qs[_0x9b3f('0x3e')](_[_0x9b3f('0x62')](_0x22d633[_0x9b3f('0x3c')],_0x57d301[_0x9b3f('0x3e')]));_0x8cdf78[_0x9b3f('0x46')][_0x9b3f('0x66')]=_0x21ab78['id'];if(_0x22d633[_0x9b3f('0x3c')]['filter']){_0x8cdf78['where']=_[_0x9b3f('0x48')](_0x8cdf78[_0x9b3f('0x46')],{'$or':_[_0x9b3f('0x2b')](_0x8cdf78[_0x9b3f('0x40')],function(_0x7e5dce){var _0x19c42b={};_0x19c42b[_0x7e5dce]={'$like':'%'+_0x22d633['query']['filter']+'%'};return _0x19c42b;})});}_0x8cdf78=_[_0x9b3f('0x48')]({},_0x8cdf78,_0x22d633[_0x9b3f('0x49')]);return db[_0x9b3f('0x65')]['count']({'where':_0x8cdf78['where']})[_0x9b3f('0x25')](function(_0x573abe){_0xbb6d44[_0x9b3f('0x20')]=_0x573abe;if(_0x22d633[_0x9b3f('0x3c')][_0x9b3f('0x4a')]){_0x8cdf78['include']=[{'all':!![]}];}return db[_0x9b3f('0x65')][_0x9b3f('0x63')](_0x8cdf78);})['then'](function(_0xd911b7){_0xbb6d44[_0x9b3f('0x67')]=_0xd911b7;return _0xbb6d44;});}})['then'](respondWithFilteredResult(_0x37bcc2,_0x8cdf78))['catch'](handleError(_0x37bcc2,null));};exports['getHopperFinals']=function(_0x13d7f5,_0x27584f,_0x296989){var _0x1b4a44={'raw':!![],'where':{}};var _0x468cb2={};var _0x53d7ef={'count':0x0,'rows':[]};return db[_0x9b3f('0x37')][_0x9b3f('0x5f')]({'where':{'id':_0x13d7f5['params']['id']}})[_0x9b3f('0x25')](handleEntityNotFound(_0x27584f,null))[_0x9b3f('0x25')](function(_0x4174cb){if(_0x4174cb){_0x468cb2['model']=_[_0x9b3f('0x3d')](db[_0x9b3f('0x68')][_0x9b3f('0x38')]);_0x468cb2[_0x9b3f('0x3c')]=_['keys'](_0x13d7f5[_0x9b3f('0x3c')]);_0x468cb2[_0x9b3f('0x3e')]=_[_0x9b3f('0x3f')](_0x468cb2[_0x9b3f('0x3b')],_0x468cb2[_0x9b3f('0x3c')]);_0x1b4a44[_0x9b3f('0x40')]=_[_0x9b3f('0x3f')](_0x468cb2[_0x9b3f('0x3b')],qs['fields'](_0x13d7f5['query']['fields']));_0x1b4a44['attributes']=_0x1b4a44[_0x9b3f('0x40')]['length']?_0x1b4a44[_0x9b3f('0x40')]:_0x468cb2['model'];if(!_0x13d7f5['query'][_0x9b3f('0x43')]('nolimit')){_0x1b4a44[_0x9b3f('0x1f')]=qs[_0x9b3f('0x1f')](_0x13d7f5['query']['limit']);_0x1b4a44[_0x9b3f('0x1d')]=qs[_0x9b3f('0x1d')](_0x13d7f5[_0x9b3f('0x3c')]['offset']);}_0x1b4a44[_0x9b3f('0x44')]=qs[_0x9b3f('0x45')](_0x13d7f5['query'][_0x9b3f('0x45')]);_0x1b4a44[_0x9b3f('0x46')]=qs['filters'](_[_0x9b3f('0x62')](_0x13d7f5[_0x9b3f('0x3c')],_0x468cb2[_0x9b3f('0x3e')]));_0x1b4a44[_0x9b3f('0x46')]['VoiceQueueId']=_0x4174cb['id'];if(_0x13d7f5['query'][_0x9b3f('0x2a')]){_0x1b4a44['where']=_['merge'](_0x1b4a44[_0x9b3f('0x46')],{'$or':_['map'](_0x1b4a44[_0x9b3f('0x40')],function(_0x3476d7){var _0x1891fa={};_0x1891fa[_0x3476d7]={'$like':'%'+_0x13d7f5[_0x9b3f('0x3c')]['filter']+'%'};return _0x1891fa;})});}_0x1b4a44=_[_0x9b3f('0x48')]({},_0x1b4a44,_0x13d7f5[_0x9b3f('0x49')]);return db['CmHopperFinal'][_0x9b3f('0x20')]({'where':_0x1b4a44['where']})[_0x9b3f('0x25')](function(_0x3b9018){_0x53d7ef[_0x9b3f('0x20')]=_0x3b9018;if(_0x13d7f5['query'][_0x9b3f('0x4a')]){_0x1b4a44[_0x9b3f('0x4b')]=[{'all':!![]}];}return db[_0x9b3f('0x68')][_0x9b3f('0x63')](_0x1b4a44);})[_0x9b3f('0x25')](function(_0x357cc1){_0x53d7ef[_0x9b3f('0x67')]=_0x357cc1;return _0x53d7ef;});}})[_0x9b3f('0x25')](respondWithFilteredResult(_0x27584f,_0x1b4a44))[_0x9b3f('0x4c')](handleError(_0x27584f,null));};exports[_0x9b3f('0x69')]=function(_0x279406,_0x136498,_0xf47c7){var _0x38a399={'raw':!![],'where':{}};var _0x3625ec={};var _0x2d9f95={'count':0x0,'rows':[]};return db[_0x9b3f('0x37')][_0x9b3f('0x5f')]({'where':{'id':_0x279406[_0x9b3f('0x57')]['id']}})['then'](handleEntityNotFound(_0x136498,null))['then'](function(_0x5a4418){if(_0x5a4418){_0x3625ec[_0x9b3f('0x3b')]=_['keys'](db[_0x9b3f('0x6a')][_0x9b3f('0x38')]);_0x3625ec['query']=_[_0x9b3f('0x3d')](_0x279406[_0x9b3f('0x3c')]);_0x3625ec[_0x9b3f('0x3e')]=_[_0x9b3f('0x3f')](_0x3625ec[_0x9b3f('0x3b')],_0x3625ec[_0x9b3f('0x3c')]);_0x38a399[_0x9b3f('0x40')]=_['intersection'](_0x3625ec[_0x9b3f('0x3b')],qs[_0x9b3f('0x41')](_0x279406[_0x9b3f('0x3c')][_0x9b3f('0x41')]));_0x38a399['attributes']=_0x38a399[_0x9b3f('0x40')][_0x9b3f('0x42')]?_0x38a399[_0x9b3f('0x40')]:_0x3625ec['model'];if(!_0x279406[_0x9b3f('0x3c')]['hasOwnProperty']('nolimit')){_0x38a399['limit']=qs['limit'](_0x279406['query']['limit']);_0x38a399['offset']=qs[_0x9b3f('0x1d')](_0x279406[_0x9b3f('0x3c')][_0x9b3f('0x1d')]);}_0x38a399[_0x9b3f('0x44')]=qs[_0x9b3f('0x45')](_0x279406[_0x9b3f('0x3c')][_0x9b3f('0x45')]);_0x38a399[_0x9b3f('0x46')]=qs[_0x9b3f('0x3e')](_[_0x9b3f('0x62')](_0x279406[_0x9b3f('0x3c')],_0x3625ec['filters']));_0x38a399[_0x9b3f('0x46')][_0x9b3f('0x66')]=_0x5a4418['id'];if(_0x279406[_0x9b3f('0x3c')][_0x9b3f('0x2a')]){_0x38a399['where']=_[_0x9b3f('0x48')](_0x38a399[_0x9b3f('0x46')],{'$or':_[_0x9b3f('0x2b')](_0x38a399['attributes'],function(_0x164294){var _0x509551={};_0x509551[_0x164294]={'$like':'%'+_0x279406[_0x9b3f('0x3c')]['filter']+'%'};return _0x509551;})});}_0x38a399=_[_0x9b3f('0x48')]({},_0x38a399,_0x279406['options']);return db[_0x9b3f('0x6a')]['count']({'where':_0x38a399['where']})[_0x9b3f('0x25')](function(_0xc4af69){_0x2d9f95[_0x9b3f('0x20')]=_0xc4af69;if(_0x279406[_0x9b3f('0x3c')][_0x9b3f('0x4a')]){_0x38a399[_0x9b3f('0x4b')]=[{'all':!![]}];}return db[_0x9b3f('0x6a')][_0x9b3f('0x63')](_0x38a399);})[_0x9b3f('0x25')](function(_0x5cc7bf){_0x2d9f95[_0x9b3f('0x67')]=_0x5cc7bf;return _0x2d9f95;});}})[_0x9b3f('0x25')](respondWithFilteredResult(_0x136498,_0x38a399))[_0x9b3f('0x4c')](handleError(_0x136498,null));};exports['getTeams']=function(_0x91daa8,_0x23e6db,_0x3fdd88){var _0x179905={};var _0x1e53c0={};var _0x27b517;var _0x3b2150;return db['VoiceQueue'][_0x9b3f('0x5f')]({'where':{'id':_0x91daa8['params']['id']}})[_0x9b3f('0x25')](handleEntityNotFound(_0x23e6db,null))[_0x9b3f('0x25')](function(_0x38b675){if(_0x38b675){_0x27b517=_0x38b675;_0x1e53c0['model']=_[_0x9b3f('0x3d')](db[_0x9b3f('0x6b')][_0x9b3f('0x38')]);_0x1e53c0[_0x9b3f('0x3c')]=_[_0x9b3f('0x3d')](_0x91daa8['query']);_0x1e53c0[_0x9b3f('0x3e')]=_[_0x9b3f('0x3f')](_0x1e53c0[_0x9b3f('0x3b')],_0x1e53c0['query']);_0x179905[_0x9b3f('0x40')]=_[_0x9b3f('0x3f')](_0x1e53c0['model'],qs[_0x9b3f('0x41')](_0x91daa8[_0x9b3f('0x3c')]['fields']));_0x179905[_0x9b3f('0x40')]=_0x179905[_0x9b3f('0x40')]['length']?_0x179905[_0x9b3f('0x40')]:_0x1e53c0[_0x9b3f('0x3b')];_0x179905[_0x9b3f('0x44')]=qs[_0x9b3f('0x45')](_0x91daa8[_0x9b3f('0x3c')]['sort']);_0x179905[_0x9b3f('0x46')]=qs['filters'](_[_0x9b3f('0x62')](_0x91daa8[_0x9b3f('0x3c')],_0x1e53c0[_0x9b3f('0x3e')]));if(_0x91daa8[_0x9b3f('0x3c')][_0x9b3f('0x2a')]){_0x179905[_0x9b3f('0x46')]=_['merge'](_0x179905[_0x9b3f('0x46')],{'$or':_[_0x9b3f('0x2b')](_0x179905[_0x9b3f('0x40')],function(_0x59e63b){var _0x27f5cf={};_0x27f5cf[_0x59e63b]={'$like':'%'+_0x91daa8[_0x9b3f('0x3c')][_0x9b3f('0x2a')]+'%'};return _0x27f5cf;})});}_0x179905=_[_0x9b3f('0x48')]({},_0x179905,_0x91daa8[_0x9b3f('0x49')]);return _0x27b517[_0x9b3f('0x6c')](_0x179905);}})[_0x9b3f('0x25')](function(_0x11d867){if(_0x11d867){_0x3b2150=_0x11d867[_0x9b3f('0x42')];if(!_0x91daa8[_0x9b3f('0x3c')][_0x9b3f('0x43')](_0x9b3f('0x61'))){_0x179905[_0x9b3f('0x1f')]=qs[_0x9b3f('0x1f')](_0x91daa8['query'][_0x9b3f('0x1f')]);_0x179905[_0x9b3f('0x1d')]=qs[_0x9b3f('0x1d')](_0x91daa8[_0x9b3f('0x3c')][_0x9b3f('0x1d')]);}return _0x27b517[_0x9b3f('0x6c')](_0x179905);}})[_0x9b3f('0x25')](function(_0xb45da2){if(_0xb45da2){return _0xb45da2?{'count':_0x3b2150,'rows':_0xb45da2}:null;}})[_0x9b3f('0x25')](respondWithResult(_0x23e6db,null))['catch'](handleError(_0x23e6db,null));};exports[_0x9b3f('0x6d')]=function(_0x16bf29,_0x221c2a,_0x45bd1f){var _0x152e4a=_0x16bf29[_0x9b3f('0x4f')]['teams'];var _0x5ef2f1=_['map'](_0x152e4a,'id');return db[_0x9b3f('0x6b')]['findAll']({'where':{'id':_0x5ef2f1},'attributes':['id'],'include':[{'model':db['User'],'as':_0x9b3f('0x6e'),'attributes':['id','name',_0x9b3f('0x6f'),_0x9b3f('0x70'),'interface'],'raw':!![]}]})[_0x9b3f('0x25')](function(_0x55b3e5){if(_0x55b3e5){var _0x297172=_[_0x9b3f('0x71')](_0x55b3e5,function(_0x4f03b1){var _0x4657eb=_0x4f03b1['get']({'plain':!![]});_0x4657eb[_0x9b3f('0x6e')][_0x9b3f('0x72')](function(_0x33baf9){_0x33baf9[_0x9b3f('0x73')]=_[_0x9b3f('0x2f')](_0x152e4a,{'id':_0x4657eb['id']})[_0x9b3f('0x73')];});return _0x4657eb[_0x9b3f('0x6e')];});return db[_0x9b3f('0x37')][_0x9b3f('0x2f')]({'where':{'id':_0x16bf29[_0x9b3f('0x57')]['id']}})[_0x9b3f('0x25')](function(_0x5cd274){return db[_0x9b3f('0x74')]['transaction'](function(_0x467b2a){return _0x5cd274[_0x9b3f('0x6d')](_0x5ef2f1,{'transaction':_0x467b2a})[_0x9b3f('0x25')](function(){return BPromise['each'](_0x152e4a,function(_0x235d18){return db[_0x9b3f('0x75')]['upsert']({'TeamId':_0x235d18['id'],'VoiceQueueId':_0x16bf29[_0x9b3f('0x57')]['id'],'penalty':_0x235d18[_0x9b3f('0x73')]},{'transaction':_0x467b2a});});})['then'](function(){return BPromise[_0x9b3f('0x76')](_0x297172,function(_0x2e589a){return db[_0x9b3f('0x77')][_0x9b3f('0x78')]({'where':{'UserId':_0x2e589a['id'],'VoiceQueueId':_0x16bf29[_0x9b3f('0x57')]['id']},'defaults':{'penalty':_0x2e589a[_0x9b3f('0x73')]},'transaction':_0x467b2a});});})[_0x9b3f('0x25')](function(){return BPromise[_0x9b3f('0x76')](_[_0x9b3f('0x2a')](_0x297172,{'online':!![]}),function(_0x5e78d8){return db[_0x9b3f('0x79')][_0x9b3f('0x7a')]({'membername':_0x5e78d8['name'],'UserId':_0x5e78d8['id'],'queue_name':_0x5cd274['name'],'VoiceQueueId':_0x5cd274['id'],'interface':_[_0x9b3f('0x7b')](_0x5e78d8['interface'])?util[_0x9b3f('0x7c')](_0x9b3f('0x7d'),_0x5e78d8[_0x9b3f('0x30')]):_0x5e78d8['interface'],'paused':_0x5e78d8['voicePause']||![],'penalty':_0x5e78d8[_0x9b3f('0x73')]},{'transaction':_0x467b2a});});})[_0x9b3f('0x25')](function(){_0x297172[_0x9b3f('0x72')](function(_0x58b594){socket[_0x9b3f('0x7e')](_0x9b3f('0x7f'),{'UserId':_0x58b594['id'],'VoiceQueueId':_0x5cd274['id']});});});});});}})[_0x9b3f('0x25')](respondWithStatusCode(_0x221c2a,null))[_0x9b3f('0x4c')](handleError(_0x221c2a,null));};exports[_0x9b3f('0x80')]=function(_0x37bde7,_0x5304fe,_0x172ebb){return db[_0x9b3f('0x6b')][_0x9b3f('0x63')]({'where':{'id':_0x37bde7[_0x9b3f('0x3c')]['ids']},'attributes':['id'],'include':[{'model':db[_0x9b3f('0x81')],'as':_0x9b3f('0x6e'),'attributes':['id'],'raw':!![]}]})[_0x9b3f('0x25')](handleEntityNotFound(_0x5304fe,null))[_0x9b3f('0x25')](function(_0x44b8af){var _0x1a7336=_['map'](_0x44b8af,'id');var _0x375ade=[];var _0x421cd8=[];var _0x3abe8f=squel[_0x9b3f('0x82')]();_0x3abe8f[_0x9b3f('0x83')]('tq.TeamId')[_0x9b3f('0x84')](_0x9b3f('0x85'),'tq')['join'](_0x9b3f('0x86'),'ut',_0x9b3f('0x87'))[_0x9b3f('0x46')](_0x9b3f('0x88'),_0x37bde7[_0x9b3f('0x57')]['id']);for(var _0xeda184=0x0;_0xeda184<_0x44b8af['length'];_0xeda184+=0x1){let _0x4b1b77=_0x44b8af[_0xeda184];for(var _0xc956ce=0x0;_0xc956ce<_0x4b1b77[_0x9b3f('0x6e')][_0x9b3f('0x42')];_0xc956ce+=0x1){let _0x1a73ab=_0x4b1b77[_0x9b3f('0x6e')][_0xc956ce];var _0xa85fa=_0x3abe8f['clone']();_0xa85fa['where'](_0x9b3f('0x89'),_0x1a73ab['id']);_0x421cd8[_0x9b3f('0x8a')](db[_0x9b3f('0x74')]['query'](_0xa85fa['toString'](),{'type':db[_0x9b3f('0x74')][_0x9b3f('0x8b')][_0x9b3f('0x8c')]})[_0x9b3f('0x25')](function(_0x429bc3){if(_0x429bc3['length']===0x1){return _0x1a73ab['id'];}else{var _0x224012=_['every'](_['map'](_0x429bc3,'TeamId'),function(_0x1c224a){return _[_0x9b3f('0x2d')](_0x1a7336,_0x1c224a);});if(_0x224012){return _0x1a73ab['id'];}}}));}}return BPromise[_0x9b3f('0x8d')](_0x421cd8)['then'](function(_0x58759e){_0x375ade=_(_0x375ade)[_0x9b3f('0x8e')](_0x58759e)[_0x9b3f('0x8f')]()[_0x9b3f('0x2c')]();return db[_0x9b3f('0x37')][_0x9b3f('0x2f')]({'where':{'id':_0x37bde7[_0x9b3f('0x57')]['id']}})[_0x9b3f('0x25')](function(_0x1c0eeb){return db[_0x9b3f('0x74')][_0x9b3f('0x90')](function(_0x5f2bf7){return _0x1c0eeb[_0x9b3f('0x80')](_0x37bde7['query'][_0x9b3f('0x91')],{'transaction':_0x5f2bf7})['then'](function(){if(!_[_0x9b3f('0x92')](_0x375ade)){return _0x1c0eeb[_0x9b3f('0x93')](_0x375ade,{'transaction':_0x5f2bf7})[_0x9b3f('0x25')](function(){return db[_0x9b3f('0x79')][_0x9b3f('0x26')]({'where':{'VoiceQueueId':_0x37bde7[_0x9b3f('0x57')]['id'],'UserId':_0x375ade},'transaction':_0x5f2bf7});});}})[_0x9b3f('0x25')](function(){_0x375ade[_0x9b3f('0x72')](function(_0x37886f){socket[_0x9b3f('0x7e')](_0x9b3f('0x94'),{'UserId':_0x37886f,'VoiceQueueId':_0x1c0eeb['id']});});});});});});})[_0x9b3f('0x25')](respondWithStatusCode(_0x5304fe,null))[_0x9b3f('0x4c')](handleError(_0x5304fe,null));};exports[_0x9b3f('0x95')]=function(_0x3c56a2,_0x23aa6c,_0x246813){var _0x268566,_0x2b21ec;return db[_0x9b3f('0x37')]['find']({'where':{'id':_0x3c56a2[_0x9b3f('0x57')]['id']}})[_0x9b3f('0x25')](handleEntityNotFound(_0x23aa6c,null))[_0x9b3f('0x25')](function(_0x3b73b4){if(_0x3b73b4){_0x2b21ec=_0x3b73b4;return _0x3b73b4[_0x9b3f('0x95')](_0x3c56a2[_0x9b3f('0x4f')][_0x9b3f('0x91')],_[_0x9b3f('0x58')](_0x3c56a2[_0x9b3f('0x4f')],[_0x9b3f('0x91'),'id'])||{})['spread'](function(_0x262f23){for(var _0x491d83=0x0;_0x491d83<_0x3c56a2[_0x9b3f('0x4f')][_0x9b3f('0x91')][_0x9b3f('0x42')];_0x491d83+=0x1){socket[_0x9b3f('0x7e')](_0x9b3f('0x7f'),{'UserId':Number(_0x3c56a2[_0x9b3f('0x4f')][_0x9b3f('0x91')][_0x491d83]),'VoiceQueueId':Number(_0x3c56a2[_0x9b3f('0x57')]['id'])});}return _0x262f23;});}})['then'](function(_0x3504e1){_0x268566=_0x3504e1||[];if(_0x2b21ec){return db[_0x9b3f('0x81')][_0x9b3f('0x63')]({'where':{'id':_0x3c56a2[_0x9b3f('0x4f')][_0x9b3f('0x91')]},'attributes':['id',_0x9b3f('0x30'),'online',_0x9b3f('0x70'),_0x9b3f('0x96')],'raw':!![]});}})['then'](function(_0x9d437f){if(!_[_0x9b3f('0x92')](_0x9d437f)){var _0x209dce=[];for(var _0x572b1b=0x0;_0x572b1b<_0x9d437f[_0x9b3f('0x42')];_0x572b1b++){if(_0x9d437f[_0x572b1b][_0x9b3f('0x6f')]){_0x209dce[_0x9b3f('0x8a')](db[_0x9b3f('0x79')][_0x9b3f('0x7a')]({'membername':_0x9d437f[_0x572b1b][_0x9b3f('0x30')],'UserId':_0x9d437f[_0x572b1b]['id'],'queue_name':_0x2b21ec[_0x9b3f('0x30')],'VoiceQueueId':_0x2b21ec['id'],'interface':_[_0x9b3f('0x7b')](_0x9d437f[_0x572b1b][_0x9b3f('0x96')])?util[_0x9b3f('0x7c')]('SIP/%s',_0x9d437f[_0x572b1b]['name']):_0x9d437f[_0x572b1b][_0x9b3f('0x96')],'paused':_0x9d437f[_0x572b1b][_0x9b3f('0x70')]||![],'penalty':_0x3c56a2[_0x9b3f('0x4f')]['penalty']||0x0}));}}return BPromise[_0x9b3f('0x8d')](_0x209dce);}})[_0x9b3f('0x25')](function(){return _0x268566;})[_0x9b3f('0x25')](respondWithResult(_0x23aa6c,null))[_0x9b3f('0x4c')](handleError(_0x23aa6c,null));};exports['removeAgents']=function(_0x463bc3,_0x1d79f4,_0xa9c31b){return db[_0x9b3f('0x37')][_0x9b3f('0x2f')]({'where':{'id':_0x463bc3[_0x9b3f('0x57')]['id']}})['then'](handleEntityNotFound(_0x1d79f4,null))[_0x9b3f('0x25')](function(_0x4aaaa2){if(_0x4aaaa2){return _0x4aaaa2[_0x9b3f('0x93')](_0x463bc3[_0x9b3f('0x3c')]['ids'])[_0x9b3f('0x25')](function(){if(_[_0x9b3f('0x97')](_0x463bc3['query'][_0x9b3f('0x91')])){for(var _0x5a78c8=0x0;_0x5a78c8<_0x463bc3[_0x9b3f('0x3c')][_0x9b3f('0x91')][_0x9b3f('0x42')];_0x5a78c8+=0x1){socket[_0x9b3f('0x7e')](_0x9b3f('0x94'),{'UserId':Number(_0x463bc3[_0x9b3f('0x3c')]['ids'][_0x5a78c8]),'VoiceQueueId':Number(_0x463bc3['params']['id'])});}}else{socket[_0x9b3f('0x7e')](_0x9b3f('0x94'),{'UserId':Number(_0x463bc3[_0x9b3f('0x3c')][_0x9b3f('0x91')]),'VoiceQueueId':Number(_0x463bc3[_0x9b3f('0x57')]['id'])});}});}})[_0x9b3f('0x25')](function(_0x461f3c){return db[_0x9b3f('0x79')][_0x9b3f('0x26')]({'where':{'VoiceQueueId':_0x463bc3['params']['id'],'UserId':_0x463bc3[_0x9b3f('0x3c')]['ids']}})[_0x9b3f('0x25')](function(){return _0x461f3c;});})[_0x9b3f('0x25')](respondWithStatusCode(_0x1d79f4,null))['catch'](handleError(_0x1d79f4,null));};exports['getAgents']=function(_0x56ec83,_0x876a8b,_0x2f933a){var _0x5e369a={};var _0x2a661c={};var _0x115cb0;var _0x4cca54;return db[_0x9b3f('0x37')][_0x9b3f('0x5f')]({'where':{'id':_0x56ec83[_0x9b3f('0x57')]['id']}})[_0x9b3f('0x25')](handleEntityNotFound(_0x876a8b,null))[_0x9b3f('0x25')](function(_0x5d3261){if(_0x5d3261){_0x115cb0=_0x5d3261;_0x2a661c[_0x9b3f('0x3b')]=_[_0x9b3f('0x3d')](db[_0x9b3f('0x81')]['rawAttributes']);_0x2a661c['query']=_['keys'](_0x56ec83['query']);_0x2a661c[_0x9b3f('0x3e')]=_['intersection'](_0x2a661c['model'],_0x2a661c[_0x9b3f('0x3c')]);_0x5e369a[_0x9b3f('0x40')]=_[_0x9b3f('0x3f')](_0x2a661c[_0x9b3f('0x3b')],qs[_0x9b3f('0x41')](_0x56ec83['query']['fields']));_0x5e369a[_0x9b3f('0x40')]=_0x5e369a['attributes'][_0x9b3f('0x42')]?_0x5e369a[_0x9b3f('0x40')]:_0x2a661c[_0x9b3f('0x3b')];_0x5e369a[_0x9b3f('0x44')]=qs['sort'](_0x56ec83[_0x9b3f('0x3c')][_0x9b3f('0x45')]);_0x5e369a[_0x9b3f('0x46')]=qs['filters'](_[_0x9b3f('0x62')](_0x56ec83['query'],_0x2a661c[_0x9b3f('0x3e')]));if(_0x56ec83[_0x9b3f('0x3c')]['filter']){_0x5e369a[_0x9b3f('0x46')]=_[_0x9b3f('0x48')](_0x5e369a['where'],{'$or':_[_0x9b3f('0x2b')](_0x5e369a[_0x9b3f('0x40')],function(_0x20bb74){var _0x4d5fd1={};_0x4d5fd1[_0x20bb74]={'$like':'%'+_0x56ec83[_0x9b3f('0x3c')][_0x9b3f('0x2a')]+'%'};return _0x4d5fd1;})});}_0x5e369a=_[_0x9b3f('0x48')]({},_0x5e369a,_0x56ec83[_0x9b3f('0x49')]);return _0x115cb0[_0x9b3f('0x98')](_0x5e369a);}})[_0x9b3f('0x25')](function(_0x35871a){if(_0x35871a){_0x4cca54=_0x35871a[_0x9b3f('0x42')];if(!_0x56ec83['query'][_0x9b3f('0x43')]('nolimit')){_0x5e369a['limit']=qs['limit'](_0x56ec83[_0x9b3f('0x3c')]['limit']);_0x5e369a['offset']=qs[_0x9b3f('0x1d')](_0x56ec83[_0x9b3f('0x3c')][_0x9b3f('0x1d')]);}return _0x115cb0[_0x9b3f('0x98')](_0x5e369a);}})[_0x9b3f('0x25')](function(_0x255dcb){if(_0x255dcb){return _0x255dcb?{'count':_0x4cca54,'rows':_0x255dcb}:null;}})[_0x9b3f('0x25')](respondWithResult(_0x876a8b,null))['catch'](handleError(_0x876a8b,null));};exports['getMembers']=function(_0x23fcf9,_0xb6cda0,_0x29f684){var _0x5084d1={};var _0x1aa0cb={};var _0x21aa68;var _0x4d991e;return db[_0x9b3f('0x37')][_0x9b3f('0x5f')]({'where':{'id':_0x23fcf9[_0x9b3f('0x57')]['id']}})[_0x9b3f('0x25')](handleEntityNotFound(_0xb6cda0,null))['then'](function(_0x2d1511){if(_0x2d1511){_0x21aa68=_0x2d1511;_0x1aa0cb[_0x9b3f('0x3b')]=_['keys'](db[_0x9b3f('0x79')][_0x9b3f('0x38')]);_0x1aa0cb[_0x9b3f('0x3c')]=_[_0x9b3f('0x3d')](_0x23fcf9[_0x9b3f('0x3c')]);_0x1aa0cb[_0x9b3f('0x3e')]=_[_0x9b3f('0x3f')](_0x1aa0cb[_0x9b3f('0x3b')],_0x1aa0cb[_0x9b3f('0x3c')]);_0x5084d1[_0x9b3f('0x40')]=_[_0x9b3f('0x3f')](_0x1aa0cb[_0x9b3f('0x3b')],qs[_0x9b3f('0x41')](_0x23fcf9['query'][_0x9b3f('0x41')]));_0x5084d1[_0x9b3f('0x40')]=_0x5084d1[_0x9b3f('0x40')]['length']?_0x5084d1[_0x9b3f('0x40')]:_0x1aa0cb[_0x9b3f('0x3b')];_0x5084d1[_0x9b3f('0x44')]=qs[_0x9b3f('0x45')](_0x23fcf9[_0x9b3f('0x3c')][_0x9b3f('0x45')]);_0x5084d1[_0x9b3f('0x46')]=qs['filters'](_[_0x9b3f('0x62')](_0x23fcf9[_0x9b3f('0x3c')],_0x1aa0cb[_0x9b3f('0x3e')]));if(_0x23fcf9[_0x9b3f('0x3c')][_0x9b3f('0x2a')]){_0x5084d1['where']=_[_0x9b3f('0x48')](_0x5084d1[_0x9b3f('0x46')],{'$or':_['map'](_0x5084d1['attributes'],function(_0x199477){var _0x2b71ff={};_0x2b71ff[_0x199477]={'$like':'%'+_0x23fcf9[_0x9b3f('0x3c')][_0x9b3f('0x2a')]+'%'};return _0x2b71ff;})});}_0x5084d1=_[_0x9b3f('0x48')]({},_0x5084d1,_0x23fcf9[_0x9b3f('0x49')]);return _0x21aa68['getMembers'](_0x5084d1);}})[_0x9b3f('0x25')](function(_0x5a96d8){if(_0x5a96d8){_0x4d991e=_0x5a96d8['length'];if(!_0x23fcf9[_0x9b3f('0x3c')][_0x9b3f('0x43')]('nolimit')){_0x5084d1[_0x9b3f('0x1f')]=qs[_0x9b3f('0x1f')](_0x23fcf9[_0x9b3f('0x3c')][_0x9b3f('0x1f')]);_0x5084d1['offset']=qs[_0x9b3f('0x1d')](_0x23fcf9[_0x9b3f('0x3c')][_0x9b3f('0x1d')]);}return _0x21aa68['getMembers'](_0x5084d1);}})['then'](function(_0x1b3fb7){return _0x1b3fb7?{'count':_0x4d991e,'rows':_0x1b3fb7}:null;})[_0x9b3f('0x25')](respondWithResult(_0xb6cda0,null))[_0x9b3f('0x4c')](handleError(_0xb6cda0,null));};exports[_0x9b3f('0x99')]=function(_0xe8cbd1,_0x1d2887,_0x3c2e8d){var _0x113923={};var _0x4a84e8={};var _0x1ea162;var _0x229b52;return db[_0x9b3f('0x37')][_0x9b3f('0x5f')]({'where':{'id':_0xe8cbd1[_0x9b3f('0x57')]['id']}})[_0x9b3f('0x25')](handleEntityNotFound(_0x1d2887,null))[_0x9b3f('0x25')](function(_0x50d6c1){if(_0x50d6c1){_0x1ea162=_0x50d6c1;_0x4a84e8[_0x9b3f('0x3b')]=_[_0x9b3f('0x3d')](db[_0x9b3f('0x9a')][_0x9b3f('0x38')]);_0x4a84e8[_0x9b3f('0x3c')]=_[_0x9b3f('0x3d')](_0xe8cbd1[_0x9b3f('0x3c')]);_0x4a84e8[_0x9b3f('0x3e')]=_[_0x9b3f('0x3f')](_0x4a84e8['model'],_0x4a84e8[_0x9b3f('0x3c')]);_0x113923[_0x9b3f('0x40')]=_[_0x9b3f('0x3f')](_0x4a84e8[_0x9b3f('0x3b')],qs['fields'](_0xe8cbd1[_0x9b3f('0x3c')][_0x9b3f('0x41')]));_0x113923[_0x9b3f('0x40')]=_0x113923[_0x9b3f('0x40')][_0x9b3f('0x42')]?_0x113923['attributes']:_0x4a84e8[_0x9b3f('0x3b')];_0x113923[_0x9b3f('0x44')]=qs[_0x9b3f('0x45')](_0xe8cbd1[_0x9b3f('0x3c')][_0x9b3f('0x45')]);_0x113923[_0x9b3f('0x46')]=qs[_0x9b3f('0x3e')](_[_0x9b3f('0x62')](_0xe8cbd1['query'],_0x4a84e8[_0x9b3f('0x3e')]));if(_0xe8cbd1['query'][_0x9b3f('0x2a')]){_0x113923[_0x9b3f('0x46')]=_[_0x9b3f('0x48')](_0x113923['where'],{'$or':_[_0x9b3f('0x2b')](_0x113923[_0x9b3f('0x40')],function(_0x133095){var _0x102bfe={};_0x102bfe[_0x133095]={'$like':'%'+_0xe8cbd1['query'][_0x9b3f('0x2a')]+'%'};return _0x102bfe;})});}_0x113923=_[_0x9b3f('0x48')]({},_0x113923,_0xe8cbd1['options']);return _0x1ea162[_0x9b3f('0x99')](_0x113923);}})['then'](function(_0x357dd8){if(_0x357dd8){_0x229b52=_0x357dd8[_0x9b3f('0x42')];if(!_0xe8cbd1['query'][_0x9b3f('0x43')]('nolimit')){_0x113923[_0x9b3f('0x1f')]=qs[_0x9b3f('0x1f')](_0xe8cbd1['query']['limit']);_0x113923[_0x9b3f('0x1d')]=qs[_0x9b3f('0x1d')](_0xe8cbd1[_0x9b3f('0x3c')]['offset']);}return _0x1ea162['getLists'](_0x113923);}})[_0x9b3f('0x25')](function(_0x425b6e){if(_0x425b6e){return _0x425b6e?{'count':_0x229b52,'rows':_0x425b6e}:null;}})[_0x9b3f('0x25')](respondWithResult(_0x1d2887,null))[_0x9b3f('0x4c')](handleError(_0x1d2887,null));};exports[_0x9b3f('0x9b')]=function(_0x2317fd,_0x36131f,_0x55498b){var _0x291cbe=moment()[_0x9b3f('0x7c')]('YYYY-MM-DD\x20HH:mm:ss');var _0x1e72b9,_0x2abfde;return db[_0x9b3f('0x37')][_0x9b3f('0x2f')]({'where':{'id':_0x2317fd[_0x9b3f('0x57')]['id']}})[_0x9b3f('0x25')](handleEntityNotFound(_0x36131f,null))['then'](function(_0xbf63dc){if(_0xbf63dc){_0x2abfde=_0xbf63dc;return _0xbf63dc['addLists'](_0x2317fd[_0x9b3f('0x4f')]['ids'],_[_0x9b3f('0x58')](_0x2317fd[_0x9b3f('0x4f')],[_0x9b3f('0x91'),'id'])||{});}return null;})[_0x9b3f('0x9c')](function(_0x2896ad){var _0x19e8a6;_0x1e72b9=_0x2896ad||[];var _0x4f5d97=[];if(_0x2896ad){for(var _0x296fe8=0x0;_0x296fe8<_0x2896ad['length'];_0x296fe8+=0x1){var _0x567212=_0x2896ad[_0x296fe8]['get']({'plain':!![]});_0x2abfde[_0x9b3f('0x9d')]=_0x2317fd[_0x9b3f('0x4f')]['dialCheckDuplicateType']?_0x2317fd['body']['dialCheckDuplicateType']:_0x2abfde[_0x9b3f('0x9d')];switch(_0x2abfde[_0x9b3f('0x9d')]){case _0x9b3f('0x9e'):_0x19e8a6=squel['insert']()[_0x9b3f('0x9f')](_0x9b3f('0xa0'))[_0x9b3f('0xa1')]([_0x9b3f('0xa2'),_0x9b3f('0xa3'),_0x9b3f('0xa4'),'ListId',_0x9b3f('0x66'),_0x9b3f('0x59'),'updatedAt'],squel[_0x9b3f('0x82')]()['field'](_0x9b3f('0xa2'),_0x9b3f('0xa2'))[_0x9b3f('0x83')]('\x27'+_0x291cbe+'\x27','scheduledAt')[_0x9b3f('0x83')]('id',_0x9b3f('0xa4'))['field'](_0x567212[_0x9b3f('0xa5')][_0x9b3f('0xa6')](),'ListId')[_0x9b3f('0x83')](_0x2317fd[_0x9b3f('0x57')]['id'][_0x9b3f('0xa6')](),'VoiceQueueId')[_0x9b3f('0x83')]('\x27'+_0x291cbe+'\x27',_0x9b3f('0x59'))[_0x9b3f('0x83')]('\x27'+_0x291cbe+'\x27','updatedAt')[_0x9b3f('0x84')](_0x9b3f('0xa7'))[_0x9b3f('0x46')](_0x9b3f('0xa8'))['where']('ListId\x20=\x20?',_0x567212[_0x9b3f('0xa5')][_0x9b3f('0xa6')]())[_0x9b3f('0x46')](_0x9b3f('0xa9'))['where'](_0x9b3f('0xaa'),squel['select']()['field']('COALESCE(calleridnum,\x27\x27)')['from'](_0x9b3f('0xab'))[_0x9b3f('0x46')](_0x9b3f('0x88'),_0x2317fd[_0x9b3f('0x57')]['id'][_0x9b3f('0xa6')]()))[_0x9b3f('0x46')](_0x9b3f('0xaa'),squel[_0x9b3f('0x82')]()[_0x9b3f('0x83')](_0x9b3f('0xac'))[_0x9b3f('0x84')](_0x9b3f('0xa0'))[_0x9b3f('0x46')](_0x9b3f('0x88'),_0x2317fd[_0x9b3f('0x57')]['id'][_0x9b3f('0xa6')]())))[_0x9b3f('0xa6')]();break;case _0x9b3f('0xad'):_0x19e8a6=squel[_0x9b3f('0xae')]()['into'](_0x9b3f('0xa0'))['fromQuery']([_0x9b3f('0xa2'),_0x9b3f('0xa3'),'ContactId',_0x9b3f('0xaf'),_0x9b3f('0x66'),'createdAt',_0x9b3f('0x5a')],squel[_0x9b3f('0x82')]()[_0x9b3f('0x83')](_0x9b3f('0xa2'),_0x9b3f('0xa2'))[_0x9b3f('0x83')]('\x27'+_0x291cbe+'\x27',_0x9b3f('0xa3'))['field']('id',_0x9b3f('0xa4'))[_0x9b3f('0x83')](_0x567212[_0x9b3f('0xa5')][_0x9b3f('0xa6')](),_0x9b3f('0xaf'))[_0x9b3f('0x83')](_0x2317fd[_0x9b3f('0x57')]['id'][_0x9b3f('0xa6')](),_0x9b3f('0x66'))[_0x9b3f('0x83')]('\x27'+_0x291cbe+'\x27',_0x9b3f('0x59'))[_0x9b3f('0x83')]('\x27'+_0x291cbe+'\x27',_0x9b3f('0x5a'))[_0x9b3f('0x84')](_0x9b3f('0xa7'))[_0x9b3f('0x46')]('deletedAt\x20IS\x20NULL')[_0x9b3f('0x46')]('ListId\x20=\x20?',_0x567212[_0x9b3f('0xa5')][_0x9b3f('0xa6')]())['where'](_0x9b3f('0xa9'))[_0x9b3f('0x46')](_0x9b3f('0xaa'),squel[_0x9b3f('0x82')]()[_0x9b3f('0x83')](_0x9b3f('0xac'))['from'](_0x9b3f('0xa0'))[_0x9b3f('0x46')](_0x9b3f('0x88'),_0x2317fd['params']['id'][_0x9b3f('0xa6')]())))[_0x9b3f('0xa6')]();break;default:_0x19e8a6=squel[_0x9b3f('0xae')]()[_0x9b3f('0x9f')](_0x9b3f('0xa0'))[_0x9b3f('0xa1')]([_0x9b3f('0xa2'),_0x9b3f('0xa3'),'ContactId',_0x9b3f('0xaf'),'VoiceQueueId',_0x9b3f('0x59'),_0x9b3f('0x5a')],squel['select']()['field'](_0x9b3f('0xa2'),_0x9b3f('0xa2'))[_0x9b3f('0x83')]('\x27'+_0x291cbe+'\x27',_0x9b3f('0xa3'))['field']('id','ContactId')['field'](_0x567212['CmListId'][_0x9b3f('0xa6')](),_0x9b3f('0xaf'))[_0x9b3f('0x83')](_0x2317fd[_0x9b3f('0x57')]['id'][_0x9b3f('0xa6')](),_0x9b3f('0x66'))[_0x9b3f('0x83')]('\x27'+_0x291cbe+'\x27',_0x9b3f('0x59'))[_0x9b3f('0x83')]('\x27'+_0x291cbe+'\x27',_0x9b3f('0x5a'))[_0x9b3f('0x84')](_0x9b3f('0xa7'))[_0x9b3f('0x46')](_0x9b3f('0xa8'))['where']('ListId\x20=\x20?',_0x567212[_0x9b3f('0xa5')][_0x9b3f('0xa6')]())[_0x9b3f('0x46')]('phone\x20IS\x20NOT\x20NULL'))['toString']();}_0x4f5d97[_0x9b3f('0x8a')](db[_0x9b3f('0x74')][_0x9b3f('0x3c')](_0x19e8a6));}return BPromise[_0x9b3f('0x8d')](_0x4f5d97);}})['then'](function(){var _0x395455=[];var _0x542f0f=squel[_0x9b3f('0xae')]()[_0x9b3f('0x9f')](_0x9b3f('0xb0'))[_0x9b3f('0xa1')]([_0x9b3f('0xb1'),_0x9b3f('0xa2'),_0x9b3f('0xb2'),_0x9b3f('0x59'),_0x9b3f('0x5a')],squel[_0x9b3f('0x82')]()[_0x9b3f('0x83')](_0x9b3f('0xb3'))[_0x9b3f('0x83')](_0x9b3f('0xb4'))[_0x9b3f('0x83')](_0x9b3f('0xb5'))[_0x9b3f('0x83')]('\x27'+_0x291cbe+'\x27',_0x9b3f('0x59'))[_0x9b3f('0x83')]('\x27'+_0x291cbe+'\x27',_0x9b3f('0x5a'))[_0x9b3f('0x84')](_0x9b3f('0xb6'),'ci')[_0x9b3f('0xb7')](_0x9b3f('0xa0'),'h','h.ContactId=ci.CmContactId')[_0x9b3f('0x46')](_0x9b3f('0xb8'),_0x291cbe)['where'](_0x9b3f('0xb9'),_0x9b3f('0xba')))[_0x9b3f('0xa6')]();_0x395455[_0x9b3f('0x8a')](db[_0x9b3f('0x74')][_0x9b3f('0x3c')](_0x542f0f));return BPromise['all'](_0x395455);})['then'](function(){return _0x1e72b9;})['then'](respondWithResult(_0x36131f,null))[_0x9b3f('0x4c')](handleError(_0x36131f,null));};exports[_0x9b3f('0xbb')]=function(_0x13e7a5,_0xcf9bad,_0x168698){return db[_0x9b3f('0x37')][_0x9b3f('0x2f')]({'where':{'id':_0x13e7a5[_0x9b3f('0x57')]['id']}})[_0x9b3f('0x25')](handleEntityNotFound(_0xcf9bad,null))[_0x9b3f('0x25')](function(_0x11ffce){if(_0x11ffce){return _0x11ffce[_0x9b3f('0xbb')](_0x13e7a5[_0x9b3f('0x3c')][_0x9b3f('0x91')]);}})[_0x9b3f('0x25')](function(_0x35ecc7){if(_0x35ecc7){return db[_0x9b3f('0x60')]['destroy']({'where':{'ListId':_0x13e7a5['query'][_0x9b3f('0x91')],'VoiceQueueId':_0x13e7a5[_0x9b3f('0x57')]['id']}})[_0x9b3f('0x25')](function(){return _0x35ecc7;});}})[_0x9b3f('0x25')](respondWithStatusCode(_0xcf9bad,null))[_0x9b3f('0x4c')](handleError(_0xcf9bad,null));};exports[_0x9b3f('0xbc')]=function(_0x3081fd,_0xd0aa59,_0x114f15){var _0x2314e8={};var _0x50fd7a={};var _0x174182;var _0x5726ce;return db['VoiceQueue'][_0x9b3f('0x5f')]({'where':{'id':_0x3081fd['params']['id']}})[_0x9b3f('0x25')](handleEntityNotFound(_0xd0aa59,null))[_0x9b3f('0x25')](function(_0x2a30b9){if(_0x2a30b9){_0x174182=_0x2a30b9;_0x50fd7a[_0x9b3f('0x3b')]=_[_0x9b3f('0x3d')](db[_0x9b3f('0x9a')]['rawAttributes']);_0x50fd7a['query']=_['keys'](_0x3081fd[_0x9b3f('0x3c')]);_0x50fd7a['filters']=_[_0x9b3f('0x3f')](_0x50fd7a[_0x9b3f('0x3b')],_0x50fd7a[_0x9b3f('0x3c')]);_0x2314e8[_0x9b3f('0x40')]=_['intersection'](_0x50fd7a[_0x9b3f('0x3b')],qs[_0x9b3f('0x41')](_0x3081fd[_0x9b3f('0x3c')]['fields']));_0x2314e8['attributes']=_0x2314e8[_0x9b3f('0x40')][_0x9b3f('0x42')]?_0x2314e8[_0x9b3f('0x40')]:_0x50fd7a[_0x9b3f('0x3b')];_0x2314e8['order']=qs[_0x9b3f('0x45')](_0x3081fd[_0x9b3f('0x3c')][_0x9b3f('0x45')]);_0x2314e8[_0x9b3f('0x46')]=qs[_0x9b3f('0x3e')](_['pick'](_0x3081fd[_0x9b3f('0x3c')],_0x50fd7a[_0x9b3f('0x3e')]));if(_0x3081fd[_0x9b3f('0x3c')]['filter']){_0x2314e8[_0x9b3f('0x46')]=_[_0x9b3f('0x48')](_0x2314e8[_0x9b3f('0x46')],{'$or':_['map'](_0x2314e8[_0x9b3f('0x40')],function(_0x48082a){var _0x1b0f50={};_0x1b0f50[_0x48082a]={'$like':'%'+_0x3081fd[_0x9b3f('0x3c')][_0x9b3f('0x2a')]+'%'};return _0x1b0f50;})});}_0x2314e8=_['merge']({},_0x2314e8,_0x3081fd[_0x9b3f('0x49')]);return _0x174182[_0x9b3f('0xbc')](_0x2314e8);}})[_0x9b3f('0x25')](function(_0x4f9219){if(_0x4f9219){_0x5726ce=_0x4f9219[_0x9b3f('0x42')];if(!_0x3081fd[_0x9b3f('0x3c')][_0x9b3f('0x43')](_0x9b3f('0x61'))){_0x2314e8[_0x9b3f('0x1f')]=qs[_0x9b3f('0x1f')](_0x3081fd[_0x9b3f('0x3c')][_0x9b3f('0x1f')]);_0x2314e8[_0x9b3f('0x1d')]=qs[_0x9b3f('0x1d')](_0x3081fd[_0x9b3f('0x3c')][_0x9b3f('0x1d')]);}return _0x174182[_0x9b3f('0xbc')](_0x2314e8);}})[_0x9b3f('0x25')](function(_0x59cb79){if(_0x59cb79){return _0x59cb79?{'count':_0x5726ce,'rows':_0x59cb79}:null;}})[_0x9b3f('0x25')](respondWithResult(_0xd0aa59,null))[_0x9b3f('0x4c')](handleError(_0xd0aa59,null));};exports[_0x9b3f('0xbd')]=function(_0x34bb7c,_0x1390a7,_0xf542b5){var _0xa77f64,_0x47b122;return db[_0x9b3f('0x37')]['find']({'where':{'id':_0x34bb7c['params']['id']}})['then'](handleEntityNotFound(_0x1390a7,null))[_0x9b3f('0x25')](function(_0x45b9fa){if(_0x45b9fa){_0x47b122=_0x45b9fa;return _0x45b9fa['addBlackLists'](_0x34bb7c[_0x9b3f('0x4f')][_0x9b3f('0x91')],_['omit'](_0x34bb7c[_0x9b3f('0x4f')],[_0x9b3f('0x91'),'id'])||{});}return null;})[_0x9b3f('0x9c')](function(_0x4df618){var _0x1327cc;_0xa77f64=_0x4df618||[];var _0x2aa355=[];if(_0x4df618){for(var _0x48457d=0x0;_0x48457d<_0x4df618['length'];_0x48457d+=0x1){var _0xf75f7e=_0x4df618[_0x48457d][_0x9b3f('0x27')]({'plain':!![]});_0x1327cc=squel[_0x9b3f('0xae')]()[_0x9b3f('0x9f')]('cm_hopper_black')['fromQuery']([_0x9b3f('0xa2'),'ContactId',_0x9b3f('0xaf'),_0x9b3f('0x66'),_0x9b3f('0x59'),_0x9b3f('0x5a')],squel[_0x9b3f('0x82')]()['field']('phone','phone')['field']('id',_0x9b3f('0xa4'))[_0x9b3f('0x83')](_0xf75f7e[_0x9b3f('0xa5')][_0x9b3f('0xa6')](),'ListId')['field'](_0x34bb7c[_0x9b3f('0x57')]['id'][_0x9b3f('0xa6')](),_0x9b3f('0x66'))[_0x9b3f('0x83')](_0x9b3f('0xbe'),_0x9b3f('0x59'))['field']('NOW()','updatedAt')[_0x9b3f('0x84')](_0x9b3f('0xa7'))[_0x9b3f('0x46')](_0x9b3f('0xa8'))[_0x9b3f('0x46')](_0x9b3f('0xbf'),_0xf75f7e[_0x9b3f('0xa5')]['toString']())[_0x9b3f('0x46')](_0x9b3f('0xa9')))[_0x9b3f('0xa6')]();_0x2aa355[_0x9b3f('0x8a')](db['sequelize'][_0x9b3f('0x3c')](_0x1327cc));}return BPromise[_0x9b3f('0x8d')](_0x2aa355);}})[_0x9b3f('0x25')](function(){return _0xa77f64;})[_0x9b3f('0x25')](respondWithResult(_0x1390a7,null))[_0x9b3f('0x4c')](handleError(_0x1390a7,null));};exports[_0x9b3f('0xc0')]=function(_0x2ef027,_0x3b1a67,_0x5e6d5d){return db['VoiceQueue'][_0x9b3f('0x2f')]({'where':{'id':_0x2ef027[_0x9b3f('0x57')]['id']}})[_0x9b3f('0x25')](handleEntityNotFound(_0x3b1a67,null))[_0x9b3f('0x25')](function(_0x453c16){if(_0x453c16){return _0x453c16[_0x9b3f('0xc0')](_0x2ef027[_0x9b3f('0x3c')]['ids']);}})[_0x9b3f('0x25')](function(_0x61e89b){if(_0x61e89b){return db[_0x9b3f('0x6a')][_0x9b3f('0x26')]({'where':{'ListId':_0x2ef027[_0x9b3f('0x3c')][_0x9b3f('0x91')],'VoiceQueueId':_0x2ef027[_0x9b3f('0x57')]['id']}})[_0x9b3f('0x25')](function(){return _0x61e89b;});}})[_0x9b3f('0x25')](respondWithStatusCode(_0x3b1a67,null))[_0x9b3f('0x4c')](handleError(_0x3b1a67,null));};
\ No newline at end of file
index 8447edb..5bb993e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1439=['emit','hasOwnProperty','events','../../mysqldb','save','update','remove'];(function(_0x56737a,_0x29cb2e){var _0x47e109=function(_0x1e6d38){while(--_0x1e6d38){_0x56737a['push'](_0x56737a['shift']());}};_0x47e109(++_0x29cb2e);}(_0x1439,0x1e5));var _0x9143=function(_0x2e603b,_0x52345e){_0x2e603b=_0x2e603b-0x0;var _0x208f71=_0x1439[_0x2e603b];return _0x208f71;};'use strict';var EventEmitter=require(_0x9143('0x0'));var VoiceQueue=require(_0x9143('0x1'))['db']['VoiceQueue'];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x9143('0x2'),'afterUpdate':_0x9143('0x3'),'afterDestroy':_0x9143('0x4')};function emitEvent(_0x375ae0){return function(_0x525940,_0x4ae96e,_0x4f395c){VoiceQueueEvents[_0x9143('0x5')](_0x375ae0+':'+_0x525940['id'],_0x525940);VoiceQueueEvents['emit'](_0x375ae0,_0x525940);_0x4f395c(null);};}for(var e in events){if(events[_0x9143('0x6')](e)){var event=events[e];VoiceQueue['hook'](e,emitEvent(event));}}module['exports']=VoiceQueueEvents;
\ No newline at end of file
+var _0xcae7=['save','update','remove','hasOwnProperty','hook','exports','events'];(function(_0x2b220d,_0x20abc6){var _0x1bc864=function(_0x3de047){while(--_0x3de047){_0x2b220d['push'](_0x2b220d['shift']());}};_0x1bc864(++_0x20abc6);}(_0xcae7,0x102));var _0x7cae=function(_0x5013bd,_0x4d4b8d){_0x5013bd=_0x5013bd-0x0;var _0x5d3e13=_0xcae7[_0x5013bd];return _0x5d3e13;};'use strict';var EventEmitter=require(_0x7cae('0x0'));var VoiceQueue=require('../../mysqldb')['db']['VoiceQueue'];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x7cae('0x1'),'afterUpdate':_0x7cae('0x2'),'afterDestroy':_0x7cae('0x3')};function emitEvent(_0x5df556){return function(_0xddc7d,_0xbb623a,_0x240909){VoiceQueueEvents['emit'](_0x5df556+':'+_0xddc7d['id'],_0xddc7d);VoiceQueueEvents['emit'](_0x5df556,_0xddc7d);_0x240909(null);};}for(var e in events){if(events[_0x7cae('0x4')](e)){var event=events[e];VoiceQueue[_0x7cae('0x5')](e,emitEvent(event));}}module[_0x7cae('0x6')]=VoiceQueueEvents;
\ No newline at end of file
index 27fd190..fe1692e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e8=['voice_queues','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./voiceQueue.attributes','exports','VoiceQueue'];(function(_0x44157d,_0x2b24ef){var _0xb8d331=function(_0x2d9812){while(--_0x2d9812){_0x44157d['push'](_0x44157d['shift']());}};_0xb8d331(++_0x2b24ef);}(_0x34e8,0x12c));var _0x834e=function(_0xa886e5,_0xa240f6){_0xa886e5=_0xa886e5-0x0;var _0x1aaf40=_0x34e8[_0xa886e5];return _0x1aaf40;};'use strict';var _=require(_0x834e('0x0'));var util=require(_0x834e('0x1'));var logger=require(_0x834e('0x2'))(_0x834e('0x3'));var moment=require('moment');var BPromise=require(_0x834e('0x4'));var rp=require(_0x834e('0x5'));var fs=require('fs');var path=require(_0x834e('0x6'));var rimraf=require(_0x834e('0x7'));var config=require(_0x834e('0x8'));var attributes=require(_0x834e('0x9'));module[_0x834e('0xa')]=function(_0x4a2018,_0x858aa1){return _0x4a2018['define'](_0x834e('0xb'),attributes,{'tableName':_0x834e('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9c44=['request-promise','path','./voiceQueue.attributes','define','VoiceQueue','voice_queues','../../config/logger','api','moment','bluebird'];(function(_0x4d8951,_0x119d49){var _0xd159de=function(_0xb8274d){while(--_0xb8274d){_0x4d8951['push'](_0x4d8951['shift']());}};_0xd159de(++_0x119d49);}(_0x9c44,0x178));var _0x49c4=function(_0x543084,_0x4337f5){_0x543084=_0x543084-0x0;var _0x306a57=_0x9c44[_0x543084];return _0x306a57;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x49c4('0x0'))(_0x49c4('0x1'));var moment=require(_0x49c4('0x2'));var BPromise=require(_0x49c4('0x3'));var rp=require(_0x49c4('0x4'));var fs=require('fs');var path=require(_0x49c4('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x49c4('0x6'));module['exports']=function(_0xc1278f,_0x6030ae){return _0xc1278f[_0x49c4('0x7')](_0x49c4('0x8'),attributes,{'tableName':_0x49c4('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 27a09ac..3833096 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeee7=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./voiceQueue.socket','register','request','then','info','VoiceQueue,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','catch','VoiceQueue','findAll','options','raw','where','limit','include','map','model','attributes','GetVoiceQueue','ShowVoiceQueue','find','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x29632e,_0x5ecba4){var _0x426e04=function(_0x4eb357){while(--_0x4eb357){_0x29632e['push'](_0x29632e['shift']());}};_0x426e04(++_0x5ecba4);}(_0xeee7,0x7d));var _0x7eee=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0xeee7[_0x42cae2];return _0x5f256f;};'use strict';var _=require(_0x7eee('0x0'));var util=require('util');var moment=require(_0x7eee('0x1'));var BPromise=require(_0x7eee('0x2'));var rs=require(_0x7eee('0x3'));var fs=require('fs');var Redis=require(_0x7eee('0x4'));var db=require(_0x7eee('0x5'))['db'];var utils=require(_0x7eee('0x6'));var logger=require(_0x7eee('0x7'))(_0x7eee('0x8'));var config=require(_0x7eee('0x9'));var jayson=require(_0x7eee('0xa'));var client=jayson[_0x7eee('0xb')][_0x7eee('0xc')]({'port':0x232a});config[_0x7eee('0xd')]=_[_0x7eee('0xe')](config[_0x7eee('0xd')],{'host':_0x7eee('0xf'),'port':0x18eb});var socket=require(_0x7eee('0x10'))(new Redis(config[_0x7eee('0xd')]));require(_0x7eee('0x11'))[_0x7eee('0x12')](socket);function respondWithRpcPromise(_0x3b711d,_0x22db01,_0x58a6bf){return new BPromise(function(_0xc83fe8,_0x2f5f1a){return client[_0x7eee('0x13')](_0x3b711d,_0x58a6bf)[_0x7eee('0x14')](function(_0x431376){logger[_0x7eee('0x15')](_0x7eee('0x16'),_0x22db01,'request\x20sent');logger[_0x7eee('0x17')]('VoiceQueue,\x20%s,\x20%s,\x20%s',_0x22db01,_0x7eee('0x18'),JSON[_0x7eee('0x19')](_0x431376));if(_0x431376[_0x7eee('0x1a')]){if(_0x431376[_0x7eee('0x1a')][_0x7eee('0x1b')]===0x1f4){logger[_0x7eee('0x1a')](_0x7eee('0x16'),_0x22db01,_0x431376[_0x7eee('0x1a')]['message']);return _0x2f5f1a(_0x431376[_0x7eee('0x1a')][_0x7eee('0x1c')]);}logger[_0x7eee('0x1a')](_0x7eee('0x16'),_0x22db01,_0x431376[_0x7eee('0x1a')][_0x7eee('0x1c')]);return _0xc83fe8(_0x431376[_0x7eee('0x1a')][_0x7eee('0x1c')]);}else{logger[_0x7eee('0x15')](_0x7eee('0x16'),_0x22db01,_0x7eee('0x18'));_0xc83fe8(_0x431376[_0x7eee('0x1d')][_0x7eee('0x1c')]);}})[_0x7eee('0x1e')](function(_0x4b05ce){logger[_0x7eee('0x1a')](_0x7eee('0x16'),_0x22db01,_0x4b05ce);_0x2f5f1a(_0x4b05ce);});});}exports['GetVoiceQueue']=function(_0x5f2ad9){var _0x593eb6=this;return new Promise(function(_0x1b6b22,_0x160ba2){return db[_0x7eee('0x1f')][_0x7eee('0x20')]({'raw':_0x5f2ad9[_0x7eee('0x21')]?_0x5f2ad9['options'][_0x7eee('0x22')]===undefined?!![]:![]:!![],'where':_0x5f2ad9[_0x7eee('0x21')]?_0x5f2ad9['options'][_0x7eee('0x23')]||null:null,'attributes':_0x5f2ad9[_0x7eee('0x21')]?_0x5f2ad9[_0x7eee('0x21')]['attributes']||null:null,'limit':_0x5f2ad9['options']?_0x5f2ad9['options'][_0x7eee('0x24')]||null:null,'include':_0x5f2ad9[_0x7eee('0x21')]?_0x5f2ad9[_0x7eee('0x21')][_0x7eee('0x25')]?_[_0x7eee('0x26')](_0x5f2ad9[_0x7eee('0x21')]['include'],function(_0x4eb8d8){return{'model':db[_0x4eb8d8[_0x7eee('0x27')]],'as':_0x4eb8d8['as'],'attributes':_0x4eb8d8[_0x7eee('0x28')],'include':_0x4eb8d8[_0x7eee('0x25')]?_[_0x7eee('0x26')](_0x4eb8d8[_0x7eee('0x25')],function(_0xc512a){return{'model':db[_0xc512a['model']],'as':_0xc512a['as'],'attributes':_0xc512a['attributes'],'include':_0xc512a['include']?_[_0x7eee('0x26')](_0xc512a[_0x7eee('0x25')],function(_0x256eef){return{'model':db[_0x256eef[_0x7eee('0x27')]],'as':_0x256eef['as'],'attributes':_0x256eef[_0x7eee('0x28')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x423028){logger[_0x7eee('0x15')](_0x7eee('0x29'),_0x5f2ad9);logger[_0x7eee('0x17')](_0x7eee('0x29'),_0x5f2ad9,JSON[_0x7eee('0x19')](_0x423028));_0x1b6b22(_0x423028);})[_0x7eee('0x1e')](function(_0x135431){logger[_0x7eee('0x1a')](_0x7eee('0x29'),_0x135431[_0x7eee('0x1c')],_0x5f2ad9);_0x160ba2(_0x593eb6[_0x7eee('0x1a')](0x1f4,_0x135431[_0x7eee('0x1c')]));});});};exports[_0x7eee('0x2a')]=function(_0x5a351b){var _0x2f74a8=this;return new Promise(function(_0x4b5595,_0x522cbf){return db[_0x7eee('0x1f')][_0x7eee('0x2b')]({'raw':_0x5a351b[_0x7eee('0x21')]?_0x5a351b[_0x7eee('0x21')][_0x7eee('0x22')]===undefined?!![]:![]:!![],'where':_0x5a351b[_0x7eee('0x21')]?_0x5a351b[_0x7eee('0x21')][_0x7eee('0x23')]||null:null,'attributes':_0x5a351b[_0x7eee('0x21')]?_0x5a351b[_0x7eee('0x21')]['attributes']||null:null,'include':_0x5a351b[_0x7eee('0x21')]?_0x5a351b['options'][_0x7eee('0x25')]?_[_0x7eee('0x26')](_0x5a351b[_0x7eee('0x21')][_0x7eee('0x25')],function(_0x3d84c2){return{'model':db[_0x3d84c2['model']],'as':_0x3d84c2['as'],'attributes':_0x3d84c2[_0x7eee('0x28')],'include':_0x3d84c2[_0x7eee('0x25')]?_[_0x7eee('0x26')](_0x3d84c2[_0x7eee('0x25')],function(_0x46c452){return{'model':db[_0x46c452[_0x7eee('0x27')]],'as':_0x46c452['as'],'attributes':_0x46c452['attributes'],'include':_0x46c452['include']?_[_0x7eee('0x26')](_0x46c452[_0x7eee('0x25')],function(_0x167afb){return{'model':db[_0x167afb[_0x7eee('0x27')]],'as':_0x167afb['as'],'attributes':_0x167afb[_0x7eee('0x28')]};}):[]};}):[]};}):[]:[]})[_0x7eee('0x14')](function(_0x13d6e2){logger[_0x7eee('0x15')]('ShowVoiceQueue',_0x5a351b);logger[_0x7eee('0x17')]('ShowVoiceQueue',_0x5a351b,JSON[_0x7eee('0x19')](_0x13d6e2));_0x4b5595(_0x13d6e2);})[_0x7eee('0x1e')](function(_0x1ee99a){logger[_0x7eee('0x1a')](_0x7eee('0x2a'),_0x1ee99a[_0x7eee('0x1c')],_0x5a351b);_0x522cbf(_0x2f74a8['error'](0x1f4,_0x1ee99a[_0x7eee('0x1c')]));});});};
\ No newline at end of file
+var _0x1d3c=['socket.io-emitter','request','then','VoiceQueue,\x20%s,\x20%s','request\x20sent','error','code','message','info','catch','GetVoiceQueue','findAll','options','raw','limit','include','model','map','attributes','stringify','ShowVoiceQueue','where','debug','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','localhost'];(function(_0x26f639,_0x1bcf59){var _0x405890=function(_0x4b9538){while(--_0x4b9538){_0x26f639['push'](_0x26f639['shift']());}};_0x405890(++_0x1bcf59);}(_0x1d3c,0xd5));var _0xc1d3=function(_0x3005d5,_0xf588c7){_0x3005d5=_0x3005d5-0x0;var _0x547c7e=_0x1d3c[_0x3005d5];return _0x547c7e;};'use strict';var _=require(_0xc1d3('0x0'));var util=require(_0xc1d3('0x1'));var moment=require(_0xc1d3('0x2'));var BPromise=require(_0xc1d3('0x3'));var rs=require(_0xc1d3('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc1d3('0x5'))['db'];var utils=require(_0xc1d3('0x6'));var logger=require(_0xc1d3('0x7'))(_0xc1d3('0x8'));var config=require(_0xc1d3('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xc1d3('0xa')][_0xc1d3('0xb')]({'port':0x232a});config[_0xc1d3('0xc')]=_[_0xc1d3('0xd')](config['redis'],{'host':_0xc1d3('0xe'),'port':0x18eb});var socket=require(_0xc1d3('0xf'))(new Redis(config['redis']));require('./voiceQueue.socket')['register'](socket);function respondWithRpcPromise(_0x9e694e,_0x16764f,_0x2f2079){return new BPromise(function(_0x2da452,_0x28cd79){return client[_0xc1d3('0x10')](_0x9e694e,_0x2f2079)[_0xc1d3('0x11')](function(_0x3cc2a4){logger['info'](_0xc1d3('0x12'),_0x16764f,_0xc1d3('0x13'));logger['debug']('VoiceQueue,\x20%s,\x20%s,\x20%s',_0x16764f,_0xc1d3('0x13'),JSON['stringify'](_0x3cc2a4));if(_0x3cc2a4['error']){if(_0x3cc2a4[_0xc1d3('0x14')][_0xc1d3('0x15')]===0x1f4){logger[_0xc1d3('0x14')](_0xc1d3('0x12'),_0x16764f,_0x3cc2a4[_0xc1d3('0x14')][_0xc1d3('0x16')]);return _0x28cd79(_0x3cc2a4['error'][_0xc1d3('0x16')]);}logger[_0xc1d3('0x14')](_0xc1d3('0x12'),_0x16764f,_0x3cc2a4[_0xc1d3('0x14')][_0xc1d3('0x16')]);return _0x2da452(_0x3cc2a4[_0xc1d3('0x14')][_0xc1d3('0x16')]);}else{logger[_0xc1d3('0x17')]('VoiceQueue,\x20%s,\x20%s',_0x16764f,_0xc1d3('0x13'));_0x2da452(_0x3cc2a4['result'][_0xc1d3('0x16')]);}})[_0xc1d3('0x18')](function(_0x2da940){logger[_0xc1d3('0x14')](_0xc1d3('0x12'),_0x16764f,_0x2da940);_0x28cd79(_0x2da940);});});}exports[_0xc1d3('0x19')]=function(_0x279edc){var _0x27fb7f=this;return new Promise(function(_0x5e4b43,_0x1dc10a){return db['VoiceQueue'][_0xc1d3('0x1a')]({'raw':_0x279edc[_0xc1d3('0x1b')]?_0x279edc[_0xc1d3('0x1b')][_0xc1d3('0x1c')]===undefined?!![]:![]:!![],'where':_0x279edc[_0xc1d3('0x1b')]?_0x279edc[_0xc1d3('0x1b')]['where']||null:null,'attributes':_0x279edc['options']?_0x279edc[_0xc1d3('0x1b')]['attributes']||null:null,'limit':_0x279edc['options']?_0x279edc[_0xc1d3('0x1b')][_0xc1d3('0x1d')]||null:null,'include':_0x279edc[_0xc1d3('0x1b')]?_0x279edc[_0xc1d3('0x1b')][_0xc1d3('0x1e')]?_['map'](_0x279edc[_0xc1d3('0x1b')]['include'],function(_0x2a65b0){return{'model':db[_0x2a65b0[_0xc1d3('0x1f')]],'as':_0x2a65b0['as'],'attributes':_0x2a65b0['attributes'],'include':_0x2a65b0[_0xc1d3('0x1e')]?_[_0xc1d3('0x20')](_0x2a65b0[_0xc1d3('0x1e')],function(_0x3bcb77){return{'model':db[_0x3bcb77['model']],'as':_0x3bcb77['as'],'attributes':_0x3bcb77[_0xc1d3('0x21')],'include':_0x3bcb77[_0xc1d3('0x1e')]?_[_0xc1d3('0x20')](_0x3bcb77[_0xc1d3('0x1e')],function(_0x23f3b0){return{'model':db[_0x23f3b0[_0xc1d3('0x1f')]],'as':_0x23f3b0['as'],'attributes':_0x23f3b0[_0xc1d3('0x21')]};}):[]};}):[]};}):[]:[]})[_0xc1d3('0x11')](function(_0x558eb4){logger[_0xc1d3('0x17')](_0xc1d3('0x19'),_0x279edc);logger['debug'](_0xc1d3('0x19'),_0x279edc,JSON[_0xc1d3('0x22')](_0x558eb4));_0x5e4b43(_0x558eb4);})['catch'](function(_0x3d12eb){logger[_0xc1d3('0x14')]('GetVoiceQueue',_0x3d12eb['message'],_0x279edc);_0x1dc10a(_0x27fb7f['error'](0x1f4,_0x3d12eb[_0xc1d3('0x16')]));});});};exports[_0xc1d3('0x23')]=function(_0x3462ae){var _0x20944d=this;return new Promise(function(_0x36ef72,_0x23bc26){return db['VoiceQueue']['find']({'raw':_0x3462ae[_0xc1d3('0x1b')]?_0x3462ae[_0xc1d3('0x1b')][_0xc1d3('0x1c')]===undefined?!![]:![]:!![],'where':_0x3462ae[_0xc1d3('0x1b')]?_0x3462ae[_0xc1d3('0x1b')][_0xc1d3('0x24')]||null:null,'attributes':_0x3462ae[_0xc1d3('0x1b')]?_0x3462ae[_0xc1d3('0x1b')][_0xc1d3('0x21')]||null:null,'include':_0x3462ae[_0xc1d3('0x1b')]?_0x3462ae[_0xc1d3('0x1b')][_0xc1d3('0x1e')]?_['map'](_0x3462ae[_0xc1d3('0x1b')][_0xc1d3('0x1e')],function(_0x15f186){return{'model':db[_0x15f186[_0xc1d3('0x1f')]],'as':_0x15f186['as'],'attributes':_0x15f186['attributes'],'include':_0x15f186[_0xc1d3('0x1e')]?_[_0xc1d3('0x20')](_0x15f186[_0xc1d3('0x1e')],function(_0x1fe7a2){return{'model':db[_0x1fe7a2[_0xc1d3('0x1f')]],'as':_0x1fe7a2['as'],'attributes':_0x1fe7a2['attributes'],'include':_0x1fe7a2['include']?_[_0xc1d3('0x20')](_0x1fe7a2[_0xc1d3('0x1e')],function(_0x35d22d){return{'model':db[_0x35d22d[_0xc1d3('0x1f')]],'as':_0x35d22d['as'],'attributes':_0x35d22d['attributes']};}):[]};}):[]};}):[]:[]})[_0xc1d3('0x11')](function(_0x37db91){logger[_0xc1d3('0x17')](_0xc1d3('0x23'),_0x3462ae);logger[_0xc1d3('0x25')](_0xc1d3('0x23'),_0x3462ae,JSON[_0xc1d3('0x22')](_0x37db91));_0x36ef72(_0x37db91);})[_0xc1d3('0x18')](function(_0x14cc15){logger[_0xc1d3('0x14')](_0xc1d3('0x23'),_0x14cc15[_0xc1d3('0x16')],_0x3462ae);_0x23bc26(_0x20944d[_0xc1d3('0x14')](0x1f4,_0x14cc15[_0xc1d3('0x16')]));});});};
\ No newline at end of file
index f7f3df2..c65cd9c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa590=['voiceQueue:','remove','emit','register'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xa590,0x129));var _0x0a59=function(_0x58965a,_0x2e71db){_0x58965a=_0x58965a-0x0;var _0x254efc=_0xa590[_0x58965a];return _0x254efc;};'use strict';var VoiceQueueEvents=require('./voiceQueue.events');var events=['save',_0x0a59('0x0'),'update'];function createListener(_0x59da3d,_0xc8d18c){return function(_0x5a154b){_0xc8d18c[_0x0a59('0x1')](_0x59da3d,_0x5a154b);};}function removeListener(_0x59c03a,_0x22befe){return function(){VoiceQueueEvents['removeListener'](_0x59c03a,_0x22befe);};}exports[_0x0a59('0x2')]=function(_0x2963e7){for(var _0x2033a5=0x0,_0x1487ea=events['length'];_0x2033a5<_0x1487ea;_0x2033a5++){var _0x156a47=events[_0x2033a5];var _0x5d2a9a=createListener(_0x0a59('0x3')+_0x156a47,_0x2963e7);VoiceQueueEvents['on'](_0x156a47,_0x5d2a9a);}};
\ No newline at end of file
+var _0xfb7c=['emit','removeListener','register','voiceQueue:','./voiceQueue.events','save','remove','update'];(function(_0x3f1403,_0x2cfd1a){var _0xb8103d=function(_0x1cc5ec){while(--_0x1cc5ec){_0x3f1403['push'](_0x3f1403['shift']());}};_0xb8103d(++_0x2cfd1a);}(_0xfb7c,0x8c));var _0xcfb7=function(_0x5eff54,_0x11d9d6){_0x5eff54=_0x5eff54-0x0;var _0x16523d=_0xfb7c[_0x5eff54];return _0x16523d;};'use strict';var VoiceQueueEvents=require(_0xcfb7('0x0'));var events=[_0xcfb7('0x1'),_0xcfb7('0x2'),_0xcfb7('0x3')];function createListener(_0x1876f3,_0xcae377){return function(_0x460c88){_0xcae377[_0xcfb7('0x4')](_0x1876f3,_0x460c88);};}function removeListener(_0x4146b6,_0x16cbe8){return function(){VoiceQueueEvents[_0xcfb7('0x5')](_0x4146b6,_0x16cbe8);};}exports[_0xcfb7('0x6')]=function(_0x558662){for(var _0x31f9c4=0x0,_0x87fd57=events['length'];_0x31f9c4<_0x87fd57;_0x31f9c4++){var _0x27963e=events[_0x31f9c4];var _0x3260f1=createListener(_0xcfb7('0x7')+_0x27963e,_0x558662);VoiceQueueEvents['on'](_0x27963e,_0x3260f1);}};
\ No newline at end of file
index 2e88448..4f21119 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ed9=['util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./voiceQueueReport.controller','get','index','/describe','isAuthenticated','describe','/index','show','create','/:id','update','delete','exports','multer'];(function(_0xa016f6,_0x3a8863){var _0x313949=function(_0x570eeb){while(--_0x570eeb){_0xa016f6['push'](_0xa016f6['shift']());}};_0x313949(++_0x3a8863);}(_0x3ed9,0x1f3));var _0x93ed=function(_0x1139d0,_0x41e5f8){_0x1139d0=_0x1139d0-0x0;var _0xcc01a6=_0x3ed9[_0x1139d0];return _0xcc01a6;};'use strict';var multer=require(_0x93ed('0x0'));var util=require(_0x93ed('0x1'));var path=require('path');var timeout=require(_0x93ed('0x2'));var express=require(_0x93ed('0x3'));var router=express['Router']();var fs_extra=require(_0x93ed('0x4'));var auth=require(_0x93ed('0x5'));var interaction=require(_0x93ed('0x6'));var config=require('../../config/environment');var controller=require(_0x93ed('0x7'));router[_0x93ed('0x8')]('/',auth['isAuthenticated'](),controller[_0x93ed('0x9')]);router[_0x93ed('0x8')](_0x93ed('0xa'),auth[_0x93ed('0xb')](),controller[_0x93ed('0xc')]);router['get'](_0x93ed('0xd'),auth[_0x93ed('0xb')](),controller['getVoiceQueuesReport']);router[_0x93ed('0x8')]('/:id',auth[_0x93ed('0xb')](),controller[_0x93ed('0xe')]);router['post']('/',auth[_0x93ed('0xb')](),controller[_0x93ed('0xf')]);router['put'](_0x93ed('0x10'),auth[_0x93ed('0xb')](),controller[_0x93ed('0x11')]);router[_0x93ed('0x12')](_0x93ed('0x10'),auth[_0x93ed('0xb')](),controller['destroy']);module[_0x93ed('0x13')]=router;
\ No newline at end of file
+var _0x9f48=['exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./voiceQueueReport.controller','get','isAuthenticated','index','/describe','/index','getVoiceQueuesReport','show','post','put','/:id','update','delete','destroy'];(function(_0x319e2e,_0x2f727f){var _0x302524=function(_0x5cad9d){while(--_0x5cad9d){_0x319e2e['push'](_0x319e2e['shift']());}};_0x302524(++_0x2f727f);}(_0x9f48,0x199));var _0x89f4=function(_0x3d60f7,_0x2d0750){_0x3d60f7=_0x3d60f7-0x0;var _0x291f0f=_0x9f48[_0x3d60f7];return _0x291f0f;};'use strict';var multer=require(_0x89f4('0x0'));var util=require(_0x89f4('0x1'));var path=require(_0x89f4('0x2'));var timeout=require(_0x89f4('0x3'));var express=require(_0x89f4('0x4'));var router=express[_0x89f4('0x5')]();var fs_extra=require(_0x89f4('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x89f4('0x7'));var config=require(_0x89f4('0x8'));var controller=require(_0x89f4('0x9'));router[_0x89f4('0xa')]('/',auth[_0x89f4('0xb')](),controller[_0x89f4('0xc')]);router['get'](_0x89f4('0xd'),auth[_0x89f4('0xb')](),controller['describe']);router[_0x89f4('0xa')](_0x89f4('0xe'),auth[_0x89f4('0xb')](),controller[_0x89f4('0xf')]);router[_0x89f4('0xa')]('/:id',auth[_0x89f4('0xb')](),controller[_0x89f4('0x10')]);router[_0x89f4('0x11')]('/',auth[_0x89f4('0xb')](),controller['create']);router[_0x89f4('0x12')](_0x89f4('0x13'),auth[_0x89f4('0xb')](),controller[_0x89f4('0x14')]);router[_0x89f4('0x15')](_0x89f4('0x13'),auth[_0x89f4('0xb')](),controller[_0x89f4('0x16')]);module[_0x89f4('0x17')]=router;
\ No newline at end of file
index f9e57cd..4435c72 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6886=['FORWARD,\x20BLIND,\x20ATTENDED','sequelize','moment','exports','STRING','DATE','queuecallerjoinAt','YYYY-MM-DD\x20HH:mm:ss','setDataValue','queuecallerleaveAt','BOOLEAN','COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT','INTEGER'];(function(_0x1cb01e,_0x41b1b7){var _0x1c56cf=function(_0x32ab64){while(--_0x32ab64){_0x1cb01e['push'](_0x1cb01e['shift']());}};_0x1c56cf(++_0x41b1b7);}(_0x6886,0x187));var _0x6688=function(_0x4aa9c4,_0x2f86b1){_0x4aa9c4=_0x4aa9c4-0x0;var _0x533e5b=_0x6886[_0x4aa9c4];return _0x533e5b;};'use strict';var Sequelize=require(_0x6688('0x0'));var moment=require(_0x6688('0x1'));module[_0x6688('0x2')]={'type':{'type':Sequelize[_0x6688('0x3')]},'uniqueid':{'type':Sequelize[_0x6688('0x3')]},'calleridnum':{'type':Sequelize[_0x6688('0x3')]},'calleridname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0x6688('0x3')]},'queuecallerjoinAt':{'type':Sequelize[_0x6688('0x4')]},'queuecallerleaveAt':{'type':Sequelize[_0x6688('0x4')],'set':function(_0x28558f){var _0x43546f=moment(_0x28558f);var _0xb58cea=moment(this['getDataValue'](_0x6688('0x5')))['format'](_0x6688('0x6'));var _0x17decb=_0x43546f['diff'](_0xb58cea,'seconds');this[_0x6688('0x7')](_0x6688('0x8'),_0x28558f);this[_0x6688('0x7')]('holdtime',_0x17decb||null);}},'position':{'type':Sequelize['INTEGER']},'count':{'type':Sequelize['INTEGER']},'queuecallerabandon':{'type':Sequelize[_0x6688('0x9')],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize[_0x6688('0x4')]},'queuecallercomplete':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize[_0x6688('0x4')]},'queuecallerexit':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize[_0x6688('0x4')]},'queuecallerexitreason':{'type':Sequelize[_0x6688('0x3')],'comment':_0x6688('0xa')},'originalposition':{'type':Sequelize[_0x6688('0xb')]},'channel':{'type':Sequelize[_0x6688('0x3')]},'connectedlinenum':{'type':Sequelize[_0x6688('0x3')]},'connectedlinename':{'type':Sequelize[_0x6688('0x3')]},'accountcode':{'type':Sequelize[_0x6688('0x3')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0x6688('0x3')]},'priority':{'type':Sequelize[_0x6688('0x3')]},'holdtime':{'type':Sequelize[_0x6688('0xb')]},'mohtime':{'type':Sequelize[_0x6688('0xb')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x6688('0x9')],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize['STRING']},'transfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'transfertype':{'type':Sequelize[_0x6688('0x3')],'comment':_0x6688('0xc')},'transferexten':{'type':Sequelize[_0x6688('0x3')]},'transferuniqueid':{'type':Sequelize['STRING']},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0x6688('0x3')]},'thirdDisposition':{'type':Sequelize[_0x6688('0x3')]},'queuecallerenterreason':{'type':Sequelize[_0x6688('0xb')],'defaultValue':0x0},'note':{'type':Sequelize[_0x6688('0x3')]}};
\ No newline at end of file
+var _0x0e91=['YYYY-MM-DD\x20HH:mm:ss','diff','seconds','setDataValue','holdtime','BOOLEAN','COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT','INTEGER','FORWARD,\x20BLIND,\x20ATTENDED','moment','exports','STRING','DATE','getDataValue','queuecallerjoinAt','format'];(function(_0x54216f,_0x479e90){var _0x34cbba=function(_0x3242b0){while(--_0x3242b0){_0x54216f['push'](_0x54216f['shift']());}};_0x34cbba(++_0x479e90);}(_0x0e91,0x109));var _0x10e9=function(_0x28669c,_0x1f62c4){_0x28669c=_0x28669c-0x0;var _0x4a3af6=_0x0e91[_0x28669c];return _0x4a3af6;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x10e9('0x0'));module[_0x10e9('0x1')]={'type':{'type':Sequelize[_0x10e9('0x2')]},'uniqueid':{'type':Sequelize[_0x10e9('0x2')]},'calleridnum':{'type':Sequelize[_0x10e9('0x2')]},'calleridname':{'type':Sequelize[_0x10e9('0x2')]},'queue':{'type':Sequelize['STRING']},'queuecallerjoinAt':{'type':Sequelize[_0x10e9('0x3')]},'queuecallerleaveAt':{'type':Sequelize[_0x10e9('0x3')],'set':function(_0x326966){var _0x54344b=moment(_0x326966);var _0x37154a=moment(this[_0x10e9('0x4')](_0x10e9('0x5')))[_0x10e9('0x6')](_0x10e9('0x7'));var _0x589a8a=_0x54344b[_0x10e9('0x8')](_0x37154a,_0x10e9('0x9'));this[_0x10e9('0xa')]('queuecallerleaveAt',_0x326966);this[_0x10e9('0xa')](_0x10e9('0xb'),_0x589a8a||null);}},'position':{'type':Sequelize['INTEGER']},'count':{'type':Sequelize['INTEGER']},'queuecallerabandon':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize[_0x10e9('0x3')]},'queuecallercomplete':{'type':Sequelize[_0x10e9('0xc')],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize[_0x10e9('0x3')]},'queuecallerexit':{'type':Sequelize[_0x10e9('0xc')],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize[_0x10e9('0x3')]},'queuecallerexitreason':{'type':Sequelize['STRING'],'comment':_0x10e9('0xd')},'originalposition':{'type':Sequelize[_0x10e9('0xe')]},'channel':{'type':Sequelize[_0x10e9('0x2')]},'connectedlinenum':{'type':Sequelize[_0x10e9('0x2')]},'connectedlinename':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0x10e9('0x2')]},'context':{'type':Sequelize[_0x10e9('0x2')]},'exten':{'type':Sequelize[_0x10e9('0x2')]},'priority':{'type':Sequelize[_0x10e9('0x2')]},'holdtime':{'type':Sequelize[_0x10e9('0xe')]},'mohtime':{'type':Sequelize[_0x10e9('0xe')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x10e9('0xc')],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize['STRING']},'transfer':{'type':Sequelize[_0x10e9('0xc')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0x10e9('0x2')],'comment':_0x10e9('0xf')},'transferexten':{'type':Sequelize[_0x10e9('0x2')]},'transferuniqueid':{'type':Sequelize[_0x10e9('0x2')]},'disposition':{'type':Sequelize[_0x10e9('0x2')]},'secondDisposition':{'type':Sequelize[_0x10e9('0x2')]},'thirdDisposition':{'type':Sequelize[_0x10e9('0x2')]},'queuecallerenterreason':{'type':Sequelize[_0x10e9('0xe')],'defaultValue':0x0},'note':{'type':Sequelize[_0x10e9('0x2')]}};
\ No newline at end of file
index 36d0072..896af32 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b69=['rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./voiceQueueReport.socket','register','status','json','offset','undefined','limit','count','set','then','destroy','end','sendStatus','error','stack','name','send','index','map','VoiceQueueReport','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','VIRTUAL','merge','options','include','findAll','params','includeAll','catch','create','body','update','find','describe','getVoiceQueuesReport','rawAttributes'];(function(_0x109946,_0x3494b7){var _0x4ed20b=function(_0x578aa4){while(--_0x578aa4){_0x109946['push'](_0x109946['shift']());}};_0x4ed20b(++_0x3494b7);}(_0x0b69,0xa6));var _0x90b6=function(_0x113855,_0x2bd31b){_0x113855=_0x113855-0x0;var _0x229a37=_0x0b69[_0x113855];return _0x229a37;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x90b6('0x0'));var zipdir=require(_0x90b6('0x1'));var jsonpatch=require(_0x90b6('0x2'));var rp=require(_0x90b6('0x3'));var moment=require(_0x90b6('0x4'));var BPromise=require(_0x90b6('0x5'));var Mustache=require(_0x90b6('0x6'));var util=require(_0x90b6('0x7'));var path=require(_0x90b6('0x8'));var sox=require(_0x90b6('0x9'));var csv=require(_0x90b6('0xa'));var ejs=require(_0x90b6('0xb'));var fs=require('fs');var fs_extra=require(_0x90b6('0xc'));var _=require(_0x90b6('0xd'));var squel=require(_0x90b6('0xe'));var crypto=require(_0x90b6('0xf'));var jsforce=require(_0x90b6('0x10'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x90b6('0x11'));var Papa=require(_0x90b6('0x12'));var Redis=require(_0x90b6('0x13'));var authService=require('../../components/auth/service');var qs=require(_0x90b6('0x14'));var as=require(_0x90b6('0x15'));var hardwareService=require(_0x90b6('0x16'));var logger=require(_0x90b6('0x17'))('api');var utils=require(_0x90b6('0x18'));var config=require(_0x90b6('0x19'));var licenseUtil=require(_0x90b6('0x1a'));var db=require('../../mysqldb')['db'];config[_0x90b6('0x1b')]=_[_0x90b6('0x1c')](config['redis'],{'host':_0x90b6('0x1d'),'port':0x18eb});var socket=require(_0x90b6('0x1e'))(new Redis(config[_0x90b6('0x1b')]));require(_0x90b6('0x1f'))[_0x90b6('0x20')](socket);function respondWithStatusCode(_0x527fd2,_0x463c2e){_0x463c2e=_0x463c2e||0xcc;return function(_0x19f406){if(_0x19f406){return _0x527fd2['sendStatus'](_0x463c2e);}return _0x527fd2[_0x90b6('0x21')](_0x463c2e)['end']();};}function respondWithResult(_0x4c2cf9,_0x395456){_0x395456=_0x395456||0xc8;return function(_0x158734){if(_0x158734){return _0x4c2cf9[_0x90b6('0x21')](_0x395456)[_0x90b6('0x22')](_0x158734);}};}function respondWithFilteredResult(_0x4f7825,_0x961553){return function(_0x18304e){if(_0x18304e){var _0x3c474a=typeof _0x961553[_0x90b6('0x23')]===_0x90b6('0x24')&&typeof _0x961553[_0x90b6('0x25')]===_0x90b6('0x24');var _0x56b4a9=_0x18304e[_0x90b6('0x26')];var _0x289c82=_0x3c474a?0x0:_0x961553[_0x90b6('0x23')];var _0x40ba65=_0x3c474a?_0x18304e[_0x90b6('0x26')]:_0x961553[_0x90b6('0x23')]+_0x961553['limit'];var _0x989aa0;if(_0x40ba65>=_0x56b4a9){_0x40ba65=_0x56b4a9;_0x989aa0=0xc8;}else{_0x989aa0=0xce;}_0x4f7825[_0x90b6('0x21')](_0x989aa0);return _0x4f7825[_0x90b6('0x27')]('Content-Range',_0x289c82+'-'+_0x40ba65+'/'+_0x56b4a9)['json'](_0x18304e);}return null;};}function patchUpdates(_0x26e488){return function(_0x2bbfe2){try{jsonpatch['apply'](_0x2bbfe2,_0x26e488,!![]);}catch(_0x2138c7){return BPromise['reject'](_0x2138c7);}return _0x2bbfe2['save']();};}function saveUpdates(_0x3c424b,_0x8f237a){return function(_0x981ae8){if(_0x981ae8){return _0x981ae8['update'](_0x3c424b)[_0x90b6('0x28')](function(_0x2c49f9){return _0x2c49f9;});}return null;};}function removeEntity(_0x3abc6b,_0x1d058b){return function(_0x199bd8){if(_0x199bd8){return _0x199bd8[_0x90b6('0x29')]()[_0x90b6('0x28')](function(){_0x3abc6b['status'](0xcc)[_0x90b6('0x2a')]();});}};}function handleEntityNotFound(_0x45608f,_0x449be9){return function(_0x4aacaf){if(!_0x4aacaf){_0x45608f[_0x90b6('0x2b')](0x194);}return _0x4aacaf;};}function handleError(_0x485ab0,_0x38a3fd){_0x38a3fd=_0x38a3fd||0x1f4;return function(_0x504c8b){logger[_0x90b6('0x2c')](_0x504c8b[_0x90b6('0x2d')]);if(_0x504c8b[_0x90b6('0x2e')]){delete _0x504c8b[_0x90b6('0x2e')];}_0x485ab0[_0x90b6('0x21')](_0x38a3fd)[_0x90b6('0x2f')](_0x504c8b);};}exports[_0x90b6('0x30')]=function(_0x5ae853,_0x3bebc2){var _0x1fa64f={},_0x159f1f={},_0x2b1804={'count':0x0,'rows':[]};var _0x3ba654=_[_0x90b6('0x31')](db[_0x90b6('0x32')]['rawAttributes'],function(_0x3f4ad7){return{'name':_0x3f4ad7[_0x90b6('0x33')],'type':_0x3f4ad7[_0x90b6('0x34')]['key']};});_0x159f1f[_0x90b6('0x35')]=_[_0x90b6('0x31')](_0x3ba654,_0x90b6('0x2e'));_0x159f1f[_0x90b6('0x36')]=_[_0x90b6('0x37')](_0x5ae853[_0x90b6('0x36')]);_0x159f1f[_0x90b6('0x38')]=_[_0x90b6('0x39')](_0x159f1f[_0x90b6('0x35')],_0x159f1f[_0x90b6('0x36')]);_0x1fa64f[_0x90b6('0x3a')]=_[_0x90b6('0x39')](_0x159f1f[_0x90b6('0x35')],qs[_0x90b6('0x3b')](_0x5ae853[_0x90b6('0x36')][_0x90b6('0x3b')]));_0x1fa64f[_0x90b6('0x3a')]=_0x1fa64f['attributes'][_0x90b6('0x3c')]?_0x1fa64f[_0x90b6('0x3a')]:_0x159f1f[_0x90b6('0x35')];if(!_0x5ae853[_0x90b6('0x36')][_0x90b6('0x3d')](_0x90b6('0x3e'))){_0x1fa64f[_0x90b6('0x25')]=qs[_0x90b6('0x25')](_0x5ae853[_0x90b6('0x36')][_0x90b6('0x25')]);_0x1fa64f[_0x90b6('0x23')]=qs['offset'](_0x5ae853[_0x90b6('0x36')][_0x90b6('0x23')]);}_0x1fa64f[_0x90b6('0x3f')]=qs[_0x90b6('0x40')](_0x5ae853[_0x90b6('0x36')][_0x90b6('0x40')]);_0x1fa64f['where']=qs[_0x90b6('0x38')](_[_0x90b6('0x41')](_0x5ae853['query'],_0x159f1f[_0x90b6('0x38')]),_0x3ba654);if(_0x5ae853[_0x90b6('0x36')][_0x90b6('0x42')]){_0x1fa64f[_0x90b6('0x43')]=_['merge'](_0x1fa64f[_0x90b6('0x43')],{'$or':_[_0x90b6('0x31')](_0x3ba654,function(_0x79075b){if(_0x79075b[_0x90b6('0x34')]!==_0x90b6('0x44')){var _0x5e575b={};_0x5e575b[_0x79075b[_0x90b6('0x2e')]]={'$like':'%'+_0x5ae853[_0x90b6('0x36')][_0x90b6('0x42')]+'%'};return _0x5e575b;}})});}_0x1fa64f=_[_0x90b6('0x45')]({},_0x1fa64f,_0x5ae853[_0x90b6('0x46')]);var _0x2983ac={'where':_0x1fa64f[_0x90b6('0x43')]};return db[_0x90b6('0x32')][_0x90b6('0x26')](_0x2983ac)[_0x90b6('0x28')](function(_0x1e70b1){_0x2b1804[_0x90b6('0x26')]=_0x1e70b1;if(_0x5ae853[_0x90b6('0x36')]['includeAll']){_0x1fa64f[_0x90b6('0x47')]=[{'all':!![]}];}return db[_0x90b6('0x32')][_0x90b6('0x48')](_0x1fa64f);})[_0x90b6('0x28')](function(_0x1660db){_0x2b1804['rows']=_0x1660db;return _0x2b1804;})[_0x90b6('0x28')](respondWithFilteredResult(_0x3bebc2,_0x1fa64f))['catch'](handleError(_0x3bebc2,null));};exports['show']=function(_0x29ffde,_0x155e70){var _0x5e0b3b={'raw':![],'where':{'id':_0x29ffde[_0x90b6('0x49')]['id']}},_0x4228ca={};_0x4228ca[_0x90b6('0x35')]=_[_0x90b6('0x37')](db[_0x90b6('0x32')]['rawAttributes']);_0x4228ca['query']=_[_0x90b6('0x37')](_0x29ffde['query']);_0x4228ca[_0x90b6('0x38')]=_[_0x90b6('0x39')](_0x4228ca[_0x90b6('0x35')],_0x4228ca[_0x90b6('0x36')]);_0x5e0b3b['attributes']=_[_0x90b6('0x39')](_0x4228ca[_0x90b6('0x35')],qs[_0x90b6('0x3b')](_0x29ffde[_0x90b6('0x36')][_0x90b6('0x3b')]));_0x5e0b3b[_0x90b6('0x3a')]=_0x5e0b3b[_0x90b6('0x3a')][_0x90b6('0x3c')]?_0x5e0b3b[_0x90b6('0x3a')]:_0x4228ca[_0x90b6('0x35')];if(_0x29ffde['query'][_0x90b6('0x4a')]){_0x5e0b3b[_0x90b6('0x47')]=[{'all':!![]}];}_0x5e0b3b=_[_0x90b6('0x45')]({},_0x5e0b3b,_0x29ffde['options']);return db[_0x90b6('0x32')]['find'](_0x5e0b3b)[_0x90b6('0x28')](handleEntityNotFound(_0x155e70,null))[_0x90b6('0x28')](respondWithResult(_0x155e70,null))[_0x90b6('0x4b')](handleError(_0x155e70,null));};exports[_0x90b6('0x4c')]=function(_0x2c6f1a,_0x1ee9d9){return db[_0x90b6('0x32')]['create'](_0x2c6f1a[_0x90b6('0x4d')],{})[_0x90b6('0x28')](respondWithResult(_0x1ee9d9,0xc9))[_0x90b6('0x4b')](handleError(_0x1ee9d9,null));};exports[_0x90b6('0x4e')]=function(_0x36fc8d,_0x5da9bf){if(_0x36fc8d[_0x90b6('0x4d')]['id']){delete _0x36fc8d[_0x90b6('0x4d')]['id'];}return db[_0x90b6('0x32')][_0x90b6('0x4f')]({'where':{'id':_0x36fc8d['params']['id']}})[_0x90b6('0x28')](handleEntityNotFound(_0x5da9bf,null))['then'](saveUpdates(_0x36fc8d[_0x90b6('0x4d')],null))[_0x90b6('0x28')](respondWithResult(_0x5da9bf,null))[_0x90b6('0x4b')](handleError(_0x5da9bf,null));};exports[_0x90b6('0x29')]=function(_0x1dad8d,_0x1ad987){return db['VoiceQueueReport'][_0x90b6('0x4f')]({'where':{'id':_0x1dad8d[_0x90b6('0x49')]['id']}})[_0x90b6('0x28')](handleEntityNotFound(_0x1ad987,null))['then'](removeEntity(_0x1ad987,null))['catch'](handleError(_0x1ad987,null));};exports[_0x90b6('0x50')]=function(_0x3ab770,_0x4bc33c){return db[_0x90b6('0x32')][_0x90b6('0x50')]()[_0x90b6('0x28')](respondWithResult(_0x4bc33c,null))[_0x90b6('0x4b')](handleError(_0x4bc33c,null));};exports[_0x90b6('0x51')]=function(_0x45e194,_0x37a4bb){var _0x37bc51={},_0x214bb1={},_0x3d7daf={'count':0x0,'rows':[]};_0x214bb1['model']=_['keys'](db[_0x90b6('0x32')][_0x90b6('0x52')]);_0x214bb1['query']=_['keys'](_0x45e194[_0x90b6('0x36')]);_0x214bb1[_0x90b6('0x38')]=_[_0x90b6('0x39')](_0x214bb1[_0x90b6('0x35')],_0x214bb1[_0x90b6('0x36')]);_0x37bc51[_0x90b6('0x3a')]=_['intersection'](_0x214bb1[_0x90b6('0x35')],qs[_0x90b6('0x3b')](_0x45e194[_0x90b6('0x36')][_0x90b6('0x3b')]));_0x37bc51[_0x90b6('0x3a')]=_0x37bc51['attributes'][_0x90b6('0x3c')]?_0x37bc51[_0x90b6('0x3a')]:_0x214bb1['model'];if(!_0x45e194['query'][_0x90b6('0x3d')](_0x90b6('0x3e'))){_0x37bc51[_0x90b6('0x25')]=qs[_0x90b6('0x25')](_0x45e194[_0x90b6('0x36')][_0x90b6('0x25')]);_0x37bc51['offset']=qs[_0x90b6('0x23')](_0x45e194[_0x90b6('0x36')][_0x90b6('0x23')]);}_0x37bc51[_0x90b6('0x3f')]=qs[_0x90b6('0x40')](_0x45e194[_0x90b6('0x36')][_0x90b6('0x40')]);_0x37bc51[_0x90b6('0x43')]=qs['filters'](_[_0x90b6('0x41')](_0x45e194['query'],_0x214bb1[_0x90b6('0x38')]));if(_0x45e194[_0x90b6('0x36')]['filter']){_0x37bc51[_0x90b6('0x43')]=_[_0x90b6('0x45')](_0x37bc51[_0x90b6('0x43')],{'$or':_[_0x90b6('0x31')](_0x37bc51[_0x90b6('0x3a')],function(_0x118ad5){var _0x540672={};_0x540672[_0x118ad5]={'$like':'%'+_0x45e194[_0x90b6('0x36')][_0x90b6('0x42')]+'%'};return _0x540672;})});}_0x37bc51=_[_0x90b6('0x45')]({},_0x37bc51,_0x45e194[_0x90b6('0x46')]);var _0x1ffa2f={'where':_0x37bc51[_0x90b6('0x43')]};return db[_0x90b6('0x32')][_0x90b6('0x26')](_0x1ffa2f)['then'](function(_0x55c6eb){_0x3d7daf[_0x90b6('0x26')]=_0x55c6eb;if(_0x45e194[_0x90b6('0x36')][_0x90b6('0x4a')]){_0x37bc51[_0x90b6('0x47')]=[{'all':!![]}];}return db[_0x90b6('0x32')]['findAll'](_0x37bc51);})[_0x90b6('0x28')](function(_0x3d88af){_0x3d7daf['rows']=_0x3d88af;return _0x3d7daf;})[_0x90b6('0x28')](respondWithFilteredResult(_0x37a4bb,_0x37bc51,'getVoiceQueuesReport'))[_0x90b6('0x4b')](handleError(_0x37a4bb,null,_0x90b6('0x51')));};
\ No newline at end of file
+var _0x227f=['../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./voiceQueueReport.socket','register','status','end','json','offset','limit','undefined','count','Content-Range','reject','save','then','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','VoiceQueueReport','includeAll','include','findAll','show','keys','find','catch','create','body','destroy','params','describe','getVoiceQueuesReport','hasOwnProperty','rows','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','squel','desk.js','to-csv','querystring','papaparse','../../components/auth/service'];(function(_0x3c4a32,_0x3bceea){var _0x2063bc=function(_0x3e6c42){while(--_0x3e6c42){_0x3c4a32['push'](_0x3c4a32['shift']());}};_0x2063bc(++_0x3bceea);}(_0x227f,0x18c));var _0xf227=function(_0x483ccb,_0x19998f){_0x483ccb=_0x483ccb-0x0;var _0x25d677=_0x227f[_0x483ccb];return _0x25d677;};'use strict';var emlformat=require(_0xf227('0x0'));var rimraf=require(_0xf227('0x1'));var zipdir=require(_0xf227('0x2'));var jsonpatch=require(_0xf227('0x3'));var rp=require(_0xf227('0x4'));var moment=require(_0xf227('0x5'));var BPromise=require(_0xf227('0x6'));var Mustache=require(_0xf227('0x7'));var util=require(_0xf227('0x8'));var path=require(_0xf227('0x9'));var sox=require(_0xf227('0xa'));var csv=require('to-csv');var ejs=require(_0xf227('0xb'));var fs=require('fs');var fs_extra=require(_0xf227('0xc'));var _=require('lodash');var squel=require(_0xf227('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xf227('0xe'));var toCsv=require(_0xf227('0xf'));var querystring=require(_0xf227('0x10'));var Papa=require(_0xf227('0x11'));var Redis=require('ioredis');var authService=require(_0xf227('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf227('0x13'));var logger=require('../../config/logger')('api');var utils=require(_0xf227('0x14'));var config=require(_0xf227('0x15'));var licenseUtil=require(_0xf227('0x16'));var db=require(_0xf227('0x17'))['db'];config[_0xf227('0x18')]=_[_0xf227('0x19')](config[_0xf227('0x18')],{'host':_0xf227('0x1a'),'port':0x18eb});var socket=require(_0xf227('0x1b'))(new Redis(config[_0xf227('0x18')]));require(_0xf227('0x1c'))[_0xf227('0x1d')](socket);function respondWithStatusCode(_0x4ee4c5,_0x57088f){_0x57088f=_0x57088f||0xcc;return function(_0x3b34dd){if(_0x3b34dd){return _0x4ee4c5['sendStatus'](_0x57088f);}return _0x4ee4c5[_0xf227('0x1e')](_0x57088f)[_0xf227('0x1f')]();};}function respondWithResult(_0x4f3693,_0x4e2e6d){_0x4e2e6d=_0x4e2e6d||0xc8;return function(_0x10e74d){if(_0x10e74d){return _0x4f3693[_0xf227('0x1e')](_0x4e2e6d)[_0xf227('0x20')](_0x10e74d);}};}function respondWithFilteredResult(_0x326066,_0x5178c9){return function(_0x33991e){if(_0x33991e){var _0x33b4b2=typeof _0x5178c9[_0xf227('0x21')]==='undefined'&&typeof _0x5178c9[_0xf227('0x22')]===_0xf227('0x23');var _0xfaf3b9=_0x33991e[_0xf227('0x24')];var _0x4a03b4=_0x33b4b2?0x0:_0x5178c9[_0xf227('0x21')];var _0x3a7616=_0x33b4b2?_0x33991e[_0xf227('0x24')]:_0x5178c9[_0xf227('0x21')]+_0x5178c9[_0xf227('0x22')];var _0x351da9;if(_0x3a7616>=_0xfaf3b9){_0x3a7616=_0xfaf3b9;_0x351da9=0xc8;}else{_0x351da9=0xce;}_0x326066[_0xf227('0x1e')](_0x351da9);return _0x326066['set'](_0xf227('0x25'),_0x4a03b4+'-'+_0x3a7616+'/'+_0xfaf3b9)['json'](_0x33991e);}return null;};}function patchUpdates(_0x424209){return function(_0x1a5585){try{jsonpatch['apply'](_0x1a5585,_0x424209,!![]);}catch(_0x3974cd){return BPromise[_0xf227('0x26')](_0x3974cd);}return _0x1a5585[_0xf227('0x27')]();};}function saveUpdates(_0x3fcb1e,_0x5eb340){return function(_0x3f72f7){if(_0x3f72f7){return _0x3f72f7['update'](_0x3fcb1e)['then'](function(_0x3a01ce){return _0x3a01ce;});}return null;};}function removeEntity(_0x23d296,_0x275ea6){return function(_0x4bf9ea){if(_0x4bf9ea){return _0x4bf9ea['destroy']()[_0xf227('0x28')](function(){_0x23d296[_0xf227('0x1e')](0xcc)[_0xf227('0x1f')]();});}};}function handleEntityNotFound(_0x23120e,_0x1087cf){return function(_0x4aebfc){if(!_0x4aebfc){_0x23120e['sendStatus'](0x194);}return _0x4aebfc;};}function handleError(_0x35ea04,_0x38ad81){_0x38ad81=_0x38ad81||0x1f4;return function(_0x584517){logger[_0xf227('0x29')](_0x584517[_0xf227('0x2a')]);if(_0x584517[_0xf227('0x2b')]){delete _0x584517[_0xf227('0x2b')];}_0x35ea04[_0xf227('0x1e')](_0x38ad81)[_0xf227('0x2c')](_0x584517);};}exports[_0xf227('0x2d')]=function(_0x4dad7a,_0x10e7c1){var _0x2da3ec={},_0xb89e61={},_0x5550cf={'count':0x0,'rows':[]};var _0x1e4e19=_[_0xf227('0x2e')](db['VoiceQueueReport'][_0xf227('0x2f')],function(_0x37af3c){return{'name':_0x37af3c[_0xf227('0x30')],'type':_0x37af3c[_0xf227('0x31')][_0xf227('0x32')]};});_0xb89e61[_0xf227('0x33')]=_[_0xf227('0x2e')](_0x1e4e19,_0xf227('0x2b'));_0xb89e61[_0xf227('0x34')]=_['keys'](_0x4dad7a['query']);_0xb89e61[_0xf227('0x35')]=_['intersection'](_0xb89e61['model'],_0xb89e61[_0xf227('0x34')]);_0x2da3ec['attributes']=_[_0xf227('0x36')](_0xb89e61[_0xf227('0x33')],qs[_0xf227('0x37')](_0x4dad7a[_0xf227('0x34')][_0xf227('0x37')]));_0x2da3ec[_0xf227('0x38')]=_0x2da3ec['attributes'][_0xf227('0x39')]?_0x2da3ec[_0xf227('0x38')]:_0xb89e61[_0xf227('0x33')];if(!_0x4dad7a[_0xf227('0x34')]['hasOwnProperty'](_0xf227('0x3a'))){_0x2da3ec[_0xf227('0x22')]=qs[_0xf227('0x22')](_0x4dad7a[_0xf227('0x34')][_0xf227('0x22')]);_0x2da3ec[_0xf227('0x21')]=qs['offset'](_0x4dad7a[_0xf227('0x34')][_0xf227('0x21')]);}_0x2da3ec[_0xf227('0x3b')]=qs[_0xf227('0x3c')](_0x4dad7a[_0xf227('0x34')][_0xf227('0x3c')]);_0x2da3ec['where']=qs[_0xf227('0x35')](_[_0xf227('0x3d')](_0x4dad7a['query'],_0xb89e61['filters']),_0x1e4e19);if(_0x4dad7a['query'][_0xf227('0x3e')]){_0x2da3ec[_0xf227('0x3f')]=_[_0xf227('0x40')](_0x2da3ec[_0xf227('0x3f')],{'$or':_['map'](_0x1e4e19,function(_0xb6e17c){if(_0xb6e17c[_0xf227('0x31')]!==_0xf227('0x41')){var _0x349872={};_0x349872[_0xb6e17c['name']]={'$like':'%'+_0x4dad7a[_0xf227('0x34')][_0xf227('0x3e')]+'%'};return _0x349872;}})});}_0x2da3ec=_[_0xf227('0x40')]({},_0x2da3ec,_0x4dad7a[_0xf227('0x42')]);var _0x34d1ae={'where':_0x2da3ec[_0xf227('0x3f')]};return db[_0xf227('0x43')][_0xf227('0x24')](_0x34d1ae)['then'](function(_0x5ca2ec){_0x5550cf[_0xf227('0x24')]=_0x5ca2ec;if(_0x4dad7a[_0xf227('0x34')][_0xf227('0x44')]){_0x2da3ec[_0xf227('0x45')]=[{'all':!![]}];}return db[_0xf227('0x43')][_0xf227('0x46')](_0x2da3ec);})[_0xf227('0x28')](function(_0x5d2f6a){_0x5550cf['rows']=_0x5d2f6a;return _0x5550cf;})[_0xf227('0x28')](respondWithFilteredResult(_0x10e7c1,_0x2da3ec))['catch'](handleError(_0x10e7c1,null));};exports[_0xf227('0x47')]=function(_0x42e2a3,_0x52a4fb){var _0x95d6bd={'raw':![],'where':{'id':_0x42e2a3['params']['id']}},_0xc5d8db={};_0xc5d8db[_0xf227('0x33')]=_[_0xf227('0x48')](db[_0xf227('0x43')]['rawAttributes']);_0xc5d8db[_0xf227('0x34')]=_[_0xf227('0x48')](_0x42e2a3[_0xf227('0x34')]);_0xc5d8db['filters']=_[_0xf227('0x36')](_0xc5d8db[_0xf227('0x33')],_0xc5d8db[_0xf227('0x34')]);_0x95d6bd[_0xf227('0x38')]=_[_0xf227('0x36')](_0xc5d8db[_0xf227('0x33')],qs[_0xf227('0x37')](_0x42e2a3['query'][_0xf227('0x37')]));_0x95d6bd['attributes']=_0x95d6bd[_0xf227('0x38')][_0xf227('0x39')]?_0x95d6bd[_0xf227('0x38')]:_0xc5d8db['model'];if(_0x42e2a3['query'][_0xf227('0x44')]){_0x95d6bd['include']=[{'all':!![]}];}_0x95d6bd=_[_0xf227('0x40')]({},_0x95d6bd,_0x42e2a3['options']);return db[_0xf227('0x43')][_0xf227('0x49')](_0x95d6bd)[_0xf227('0x28')](handleEntityNotFound(_0x52a4fb,null))['then'](respondWithResult(_0x52a4fb,null))[_0xf227('0x4a')](handleError(_0x52a4fb,null));};exports[_0xf227('0x4b')]=function(_0xdb095c,_0x2330e3){return db[_0xf227('0x43')]['create'](_0xdb095c['body'],{})[_0xf227('0x28')](respondWithResult(_0x2330e3,0xc9))['catch'](handleError(_0x2330e3,null));};exports['update']=function(_0x4669dc,_0x3738b3){if(_0x4669dc[_0xf227('0x4c')]['id']){delete _0x4669dc['body']['id'];}return db[_0xf227('0x43')]['find']({'where':{'id':_0x4669dc['params']['id']}})[_0xf227('0x28')](handleEntityNotFound(_0x3738b3,null))['then'](saveUpdates(_0x4669dc['body'],null))[_0xf227('0x28')](respondWithResult(_0x3738b3,null))[_0xf227('0x4a')](handleError(_0x3738b3,null));};exports[_0xf227('0x4d')]=function(_0x28e2ac,_0x421d4e){return db['VoiceQueueReport'][_0xf227('0x49')]({'where':{'id':_0x28e2ac[_0xf227('0x4e')]['id']}})['then'](handleEntityNotFound(_0x421d4e,null))['then'](removeEntity(_0x421d4e,null))['catch'](handleError(_0x421d4e,null));};exports[_0xf227('0x4f')]=function(_0x5901c3,_0x4eef4e){return db[_0xf227('0x43')][_0xf227('0x4f')]()[_0xf227('0x28')](respondWithResult(_0x4eef4e,null))[_0xf227('0x4a')](handleError(_0x4eef4e,null));};exports[_0xf227('0x50')]=function(_0x2a8d19,_0x13b1eb){var _0xad92f8={},_0x11f438={},_0x194be0={'count':0x0,'rows':[]};_0x11f438[_0xf227('0x33')]=_[_0xf227('0x48')](db[_0xf227('0x43')][_0xf227('0x2f')]);_0x11f438[_0xf227('0x34')]=_[_0xf227('0x48')](_0x2a8d19[_0xf227('0x34')]);_0x11f438['filters']=_[_0xf227('0x36')](_0x11f438[_0xf227('0x33')],_0x11f438['query']);_0xad92f8[_0xf227('0x38')]=_[_0xf227('0x36')](_0x11f438['model'],qs[_0xf227('0x37')](_0x2a8d19[_0xf227('0x34')][_0xf227('0x37')]));_0xad92f8[_0xf227('0x38')]=_0xad92f8[_0xf227('0x38')][_0xf227('0x39')]?_0xad92f8[_0xf227('0x38')]:_0x11f438['model'];if(!_0x2a8d19[_0xf227('0x34')][_0xf227('0x51')](_0xf227('0x3a'))){_0xad92f8[_0xf227('0x22')]=qs[_0xf227('0x22')](_0x2a8d19['query'][_0xf227('0x22')]);_0xad92f8[_0xf227('0x21')]=qs[_0xf227('0x21')](_0x2a8d19[_0xf227('0x34')][_0xf227('0x21')]);}_0xad92f8[_0xf227('0x3b')]=qs['sort'](_0x2a8d19[_0xf227('0x34')][_0xf227('0x3c')]);_0xad92f8['where']=qs['filters'](_[_0xf227('0x3d')](_0x2a8d19[_0xf227('0x34')],_0x11f438[_0xf227('0x35')]));if(_0x2a8d19[_0xf227('0x34')]['filter']){_0xad92f8[_0xf227('0x3f')]=_[_0xf227('0x40')](_0xad92f8['where'],{'$or':_[_0xf227('0x2e')](_0xad92f8[_0xf227('0x38')],function(_0xda4f82){var _0x55477e={};_0x55477e[_0xda4f82]={'$like':'%'+_0x2a8d19[_0xf227('0x34')]['filter']+'%'};return _0x55477e;})});}_0xad92f8=_[_0xf227('0x40')]({},_0xad92f8,_0x2a8d19[_0xf227('0x42')]);var _0x534afa={'where':_0xad92f8[_0xf227('0x3f')]};return db[_0xf227('0x43')][_0xf227('0x24')](_0x534afa)[_0xf227('0x28')](function(_0x18feae){_0x194be0[_0xf227('0x24')]=_0x18feae;if(_0x2a8d19[_0xf227('0x34')][_0xf227('0x44')]){_0xad92f8[_0xf227('0x45')]=[{'all':!![]}];}return db[_0xf227('0x43')][_0xf227('0x46')](_0xad92f8);})[_0xf227('0x28')](function(_0x51045b){_0x194be0[_0xf227('0x52')]=_0x51045b;return _0x194be0;})[_0xf227('0x28')](respondWithFilteredResult(_0x13b1eb,_0xad92f8,_0xf227('0x50')))[_0xf227('0x4a')](handleError(_0x13b1eb,null,_0xf227('0x50')));};
\ No newline at end of file
index 03b08a6..19a12b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9285=['hasOwnProperty','hook','exports','events','save','update','remove','emit'];(function(_0x25e7cb,_0x3579b7){var _0x375d92=function(_0xe8cf3b){while(--_0xe8cf3b){_0x25e7cb['push'](_0x25e7cb['shift']());}};_0x375d92(++_0x3579b7);}(_0x9285,0x193));var _0x5928=function(_0x39622f,_0x33d268){_0x39622f=_0x39622f-0x0;var _0x3eb359=_0x9285[_0x39622f];return _0x3eb359;};'use strict';var EventEmitter=require(_0x5928('0x0'));var VoiceQueueReport=require('../../mysqldb')['db']['VoiceQueueReport'];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x5928('0x1'),'afterUpdate':_0x5928('0x2'),'afterDestroy':_0x5928('0x3')};function emitEvent(_0x103933){return function(_0x23d8a0,_0xef8c9b,_0x2da045){VoiceQueueReportEvents[_0x5928('0x4')](_0x103933+':'+_0x23d8a0['id'],_0x23d8a0);VoiceQueueReportEvents[_0x5928('0x4')](_0x103933,_0x23d8a0);_0x2da045(null);};}for(var e in events){if(events[_0x5928('0x5')](e)){var event=events[e];VoiceQueueReport[_0x5928('0x6')](e,emitEvent(event));}}module[_0x5928('0x7')]=VoiceQueueReportEvents;
\ No newline at end of file
+var _0xb6b0=['VoiceQueueReport','save','update','remove','emit','hasOwnProperty','exports','../../mysqldb'];(function(_0x32d779,_0x1d0095){var _0xa3d166=function(_0x18764b){while(--_0x18764b){_0x32d779['push'](_0x32d779['shift']());}};_0xa3d166(++_0x1d0095);}(_0xb6b0,0xef));var _0x0b6b=function(_0x5363ed,_0x2c7479){_0x5363ed=_0x5363ed-0x0;var _0x366ad6=_0xb6b0[_0x5363ed];return _0x366ad6;};'use strict';var EventEmitter=require('events');var VoiceQueueReport=require(_0x0b6b('0x0'))['db'][_0x0b6b('0x1')];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x0b6b('0x2'),'afterUpdate':_0x0b6b('0x3'),'afterDestroy':_0x0b6b('0x4')};function emitEvent(_0x536c90){return function(_0x3a084c,_0x49e1f2,_0x101a06){VoiceQueueReportEvents[_0x0b6b('0x5')](_0x536c90+':'+_0x3a084c['id'],_0x3a084c);VoiceQueueReportEvents['emit'](_0x536c90,_0x3a084c);_0x101a06(null);};}for(var e in events){if(events[_0x0b6b('0x6')](e)){var event=events[e];VoiceQueueReport['hook'](e,emitEvent(event));}}module[_0x0b6b('0x7')]=VoiceQueueReportEvents;
\ No newline at end of file
index 4a491e8..27bc395 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf32c=['moment','bluebird','path','./voiceQueueReport.attributes','exports','define','report_queue','uniqueid','calleridnum','lodash','util','api'];(function(_0x31c70c,_0x585474){var _0x1a87e7=function(_0x2e53d4){while(--_0x2e53d4){_0x31c70c['push'](_0x31c70c['shift']());}};_0x1a87e7(++_0x585474);}(_0xf32c,0x14d));var _0xcf32=function(_0x13138c,_0x3bb68a){_0x13138c=_0x13138c-0x0;var _0x852112=_0xf32c[_0x13138c];return _0x852112;};'use strict';var _=require(_0xcf32('0x0'));var util=require(_0xcf32('0x1'));var logger=require('../../config/logger')(_0xcf32('0x2'));var moment=require(_0xcf32('0x3'));var BPromise=require(_0xcf32('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xcf32('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xcf32('0x6'));module[_0xcf32('0x7')]=function(_0x5adda7,_0x4314bc){return _0x5adda7[_0xcf32('0x8')]('VoiceQueueReport',attributes,{'tableName':_0xcf32('0x9'),'paranoid':![],'indexes':[{'fields':[_0xcf32('0xa')]},{'fields':[_0xcf32('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x7295=['request-promise','rimraf','../../config/environment','define','report_queue','uniqueid','calleridnum','lodash','util','../../config/logger','api','moment'];(function(_0x455b12,_0x4bf8c4){var _0x3204f6=function(_0x137c64){while(--_0x137c64){_0x455b12['push'](_0x455b12['shift']());}};_0x3204f6(++_0x4bf8c4);}(_0x7295,0xa3));var _0x5729=function(_0x508685,_0x9f94af){_0x508685=_0x508685-0x0;var _0x976a76=_0x7295[_0x508685];return _0x976a76;};'use strict';var _=require(_0x5729('0x0'));var util=require(_0x5729('0x1'));var logger=require(_0x5729('0x2'))(_0x5729('0x3'));var moment=require(_0x5729('0x4'));var BPromise=require('bluebird');var rp=require(_0x5729('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x5729('0x6'));var config=require(_0x5729('0x7'));var attributes=require('./voiceQueueReport.attributes');module['exports']=function(_0x2992fa,_0x33b5cc){return _0x2992fa[_0x5729('0x8')]('VoiceQueueReport',attributes,{'tableName':_0x5729('0x9'),'paranoid':![],'indexes':[{'fields':[_0x5729('0xa')]},{'fields':[_0x5729('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 3eb6c83..3ee60ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7dec=['redis','defaults','localhost','socket.io-emitter','./voiceQueueReport.socket','register','request','then','info','VoiceQueueReport,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','catch','GetVoiceQueueReport','VoiceQueueReport','findAll','options','where','attributes','limit','include','map','model','CreateVoiceQueueReport','create','body','raw','UpdateVoiceQueueReport','update','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client'];(function(_0x4154a6,_0x2c0b8e){var _0x3b2786=function(_0x2f5936){while(--_0x2f5936){_0x4154a6['push'](_0x4154a6['shift']());}};_0x3b2786(++_0x2c0b8e);}(_0x7dec,0x124));var _0xc7de=function(_0x146484,_0x27a7f0){_0x146484=_0x146484-0x0;var _0x4c7aa3=_0x7dec[_0x146484];return _0x4c7aa3;};'use strict';var _=require(_0xc7de('0x0'));var util=require('util');var moment=require(_0xc7de('0x1'));var BPromise=require(_0xc7de('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc7de('0x3'));var db=require(_0xc7de('0x4'))['db'];var utils=require(_0xc7de('0x5'));var logger=require('../../config/logger')(_0xc7de('0x6'));var config=require('../../config/environment');var jayson=require(_0xc7de('0x7'));var client=jayson[_0xc7de('0x8')]['http']({'port':0x232a});config[_0xc7de('0x9')]=_[_0xc7de('0xa')](config['redis'],{'host':_0xc7de('0xb'),'port':0x18eb});var socket=require(_0xc7de('0xc'))(new Redis(config[_0xc7de('0x9')]));require(_0xc7de('0xd'))[_0xc7de('0xe')](socket);function respondWithRpcPromise(_0x2913a9,_0x5b14f2,_0x29b910){return new BPromise(function(_0x10745b,_0x1877ac){return client[_0xc7de('0xf')](_0x2913a9,_0x29b910)[_0xc7de('0x10')](function(_0x1a7351){logger[_0xc7de('0x11')](_0xc7de('0x12'),_0x5b14f2,'request\x20sent');logger[_0xc7de('0x13')]('VoiceQueueReport,\x20%s,\x20%s,\x20%s',_0x5b14f2,_0xc7de('0x14'),JSON[_0xc7de('0x15')](_0x1a7351));if(_0x1a7351[_0xc7de('0x16')]){if(_0x1a7351[_0xc7de('0x16')][_0xc7de('0x17')]===0x1f4){logger['error'](_0xc7de('0x12'),_0x5b14f2,_0x1a7351['error']['message']);return _0x1877ac(_0x1a7351[_0xc7de('0x16')][_0xc7de('0x18')]);}logger[_0xc7de('0x16')](_0xc7de('0x12'),_0x5b14f2,_0x1a7351[_0xc7de('0x16')][_0xc7de('0x18')]);return _0x10745b(_0x1a7351[_0xc7de('0x16')][_0xc7de('0x18')]);}else{logger[_0xc7de('0x11')](_0xc7de('0x12'),_0x5b14f2,_0xc7de('0x14'));_0x10745b(_0x1a7351[_0xc7de('0x19')][_0xc7de('0x18')]);}})[_0xc7de('0x1a')](function(_0x2cfe27){logger[_0xc7de('0x16')](_0xc7de('0x12'),_0x5b14f2,_0x2cfe27);_0x1877ac(_0x2cfe27);});});}exports[_0xc7de('0x1b')]=function(_0x1924f5){var _0x6a7404=this;return new Promise(function(_0x54d7ec,_0x148be9){return db[_0xc7de('0x1c')][_0xc7de('0x1d')]({'raw':_0x1924f5[_0xc7de('0x1e')]?_0x1924f5[_0xc7de('0x1e')]['raw']===undefined?!![]:![]:!![],'where':_0x1924f5[_0xc7de('0x1e')]?_0x1924f5[_0xc7de('0x1e')][_0xc7de('0x1f')]||null:null,'attributes':_0x1924f5['options']?_0x1924f5[_0xc7de('0x1e')][_0xc7de('0x20')]||null:null,'limit':_0x1924f5[_0xc7de('0x1e')]?_0x1924f5['options'][_0xc7de('0x21')]||null:null,'include':_0x1924f5[_0xc7de('0x1e')]?_0x1924f5[_0xc7de('0x1e')][_0xc7de('0x22')]?_[_0xc7de('0x23')](_0x1924f5[_0xc7de('0x1e')]['include'],function(_0x15e11f){return{'model':db[_0x15e11f['model']],'as':_0x15e11f['as'],'attributes':_0x15e11f[_0xc7de('0x20')],'include':_0x15e11f[_0xc7de('0x22')]?_['map'](_0x15e11f[_0xc7de('0x22')],function(_0x3c3297){return{'model':db[_0x3c3297['model']],'as':_0x3c3297['as'],'attributes':_0x3c3297[_0xc7de('0x20')],'include':_0x3c3297[_0xc7de('0x22')]?_['map'](_0x3c3297[_0xc7de('0x22')],function(_0x5c31d3){return{'model':db[_0x5c31d3[_0xc7de('0x24')]],'as':_0x5c31d3['as'],'attributes':_0x5c31d3['attributes']};}):[]};}):[]};}):[]:[]})[_0xc7de('0x10')](function(_0x2b56fc){logger['info'](_0xc7de('0x1b'),_0x1924f5);logger[_0xc7de('0x13')]('GetVoiceQueueReport',_0x1924f5,JSON[_0xc7de('0x15')](_0x2b56fc));_0x54d7ec(_0x2b56fc);})['catch'](function(_0x1a6a55){logger[_0xc7de('0x16')](_0xc7de('0x1b'),_0x1a6a55['message'],_0x1924f5);_0x148be9(_0x6a7404['error'](0x1f4,_0x1a6a55[_0xc7de('0x18')]));});});};exports[_0xc7de('0x25')]=function(_0x2dfa59){var _0x79f38d=this;return new Promise(function(_0x29df42,_0xb07b9b){return db[_0xc7de('0x1c')][_0xc7de('0x26')](_0x2dfa59[_0xc7de('0x27')],{'raw':_0x2dfa59[_0xc7de('0x1e')]?_0x2dfa59[_0xc7de('0x1e')][_0xc7de('0x28')]===undefined?!![]:![]:!![]})['then'](function(_0x48c97d){logger['info'](_0xc7de('0x25'),_0x2dfa59);logger[_0xc7de('0x13')]('CreateVoiceQueueReport',_0x2dfa59,JSON[_0xc7de('0x15')](_0x48c97d));_0x29df42(_0x48c97d);})[_0xc7de('0x1a')](function(_0x3fc196){logger[_0xc7de('0x16')](_0xc7de('0x25'),_0x3fc196[_0xc7de('0x18')],_0x2dfa59);_0xb07b9b(_0x79f38d[_0xc7de('0x16')](0x1f4,_0x3fc196[_0xc7de('0x18')]));});});};exports[_0xc7de('0x29')]=function(_0x4028ff){var _0x1715d3=this;return new Promise(function(_0x16bbe8,_0x464350){return db['VoiceQueueReport'][_0xc7de('0x2a')](_0x4028ff[_0xc7de('0x27')],{'raw':_0x4028ff[_0xc7de('0x1e')]?_0x4028ff[_0xc7de('0x1e')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4028ff['options']?_0x4028ff[_0xc7de('0x1e')]['where']||null:null,'attributes':_0x4028ff[_0xc7de('0x1e')]?_0x4028ff[_0xc7de('0x1e')][_0xc7de('0x20')]||null:null,'limit':_0x4028ff[_0xc7de('0x1e')]?_0x4028ff['options']['limit']||null:null})[_0xc7de('0x10')](function(_0x284c28){logger[_0xc7de('0x11')](_0xc7de('0x29'),_0x4028ff);logger[_0xc7de('0x13')](_0xc7de('0x29'),_0x4028ff,JSON['stringify'](_0x284c28));_0x16bbe8(_0x284c28);})[_0xc7de('0x1a')](function(_0x52bcb7){logger['error'](_0xc7de('0x29'),_0x52bcb7['message'],_0x4028ff);_0x464350(_0x1715d3[_0xc7de('0x16')](0x1f4,_0x52bcb7['message']));});});};
\ No newline at end of file
+var _0x15eb=['catch','GetVoiceQueueReport','VoiceQueueReport','options','where','limit','include','map','attributes','model','raw','CreateVoiceQueueReport','update','UpdateVoiceQueueReport','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','defaults','redis','localhost','./voiceQueueReport.socket','request','then','info','VoiceQueueReport,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result'];(function(_0x3441d5,_0x1ba541){var _0x45fdeb=function(_0x5de0eb){while(--_0x5de0eb){_0x3441d5['push'](_0x3441d5['shift']());}};_0x45fdeb(++_0x1ba541);}(_0x15eb,0xae));var _0xb15e=function(_0x4a87d6,_0x38ac8c){_0x4a87d6=_0x4a87d6-0x0;var _0xd19aac=_0x15eb[_0x4a87d6];return _0xd19aac;};'use strict';var _=require(_0xb15e('0x0'));var util=require('util');var moment=require(_0xb15e('0x1'));var BPromise=require(_0xb15e('0x2'));var rs=require(_0xb15e('0x3'));var fs=require('fs');var Redis=require(_0xb15e('0x4'));var db=require(_0xb15e('0x5'))['db'];var utils=require(_0xb15e('0x6'));var logger=require(_0xb15e('0x7'))('rpc');var config=require(_0xb15e('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xb15e('0x9')][_0xb15e('0xa')]({'port':0x232a});config['redis']=_[_0xb15e('0xb')](config[_0xb15e('0xc')],{'host':_0xb15e('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xb15e('0xe'))['register'](socket);function respondWithRpcPromise(_0x1c0bd5,_0xc23ad4,_0x186a75){return new BPromise(function(_0x28d327,_0x27bad3){return client[_0xb15e('0xf')](_0x1c0bd5,_0x186a75)[_0xb15e('0x10')](function(_0x48c8ff){logger[_0xb15e('0x11')](_0xb15e('0x12'),_0xc23ad4,'request\x20sent');logger[_0xb15e('0x13')]('VoiceQueueReport,\x20%s,\x20%s,\x20%s',_0xc23ad4,_0xb15e('0x14'),JSON[_0xb15e('0x15')](_0x48c8ff));if(_0x48c8ff[_0xb15e('0x16')]){if(_0x48c8ff[_0xb15e('0x16')][_0xb15e('0x17')]===0x1f4){logger[_0xb15e('0x16')]('VoiceQueueReport,\x20%s,\x20%s',_0xc23ad4,_0x48c8ff['error'][_0xb15e('0x18')]);return _0x27bad3(_0x48c8ff[_0xb15e('0x16')]['message']);}logger[_0xb15e('0x16')](_0xb15e('0x12'),_0xc23ad4,_0x48c8ff[_0xb15e('0x16')]['message']);return _0x28d327(_0x48c8ff[_0xb15e('0x16')][_0xb15e('0x18')]);}else{logger[_0xb15e('0x11')](_0xb15e('0x12'),_0xc23ad4,_0xb15e('0x14'));_0x28d327(_0x48c8ff[_0xb15e('0x19')]['message']);}})[_0xb15e('0x1a')](function(_0x5cf097){logger[_0xb15e('0x16')](_0xb15e('0x12'),_0xc23ad4,_0x5cf097);_0x27bad3(_0x5cf097);});});}exports[_0xb15e('0x1b')]=function(_0x384f7a){var _0x256893=this;return new Promise(function(_0xe52e4f,_0x5e4f96){return db[_0xb15e('0x1c')]['findAll']({'raw':_0x384f7a[_0xb15e('0x1d')]?_0x384f7a[_0xb15e('0x1d')]['raw']===undefined?!![]:![]:!![],'where':_0x384f7a[_0xb15e('0x1d')]?_0x384f7a[_0xb15e('0x1d')][_0xb15e('0x1e')]||null:null,'attributes':_0x384f7a[_0xb15e('0x1d')]?_0x384f7a[_0xb15e('0x1d')]['attributes']||null:null,'limit':_0x384f7a[_0xb15e('0x1d')]?_0x384f7a['options'][_0xb15e('0x1f')]||null:null,'include':_0x384f7a['options']?_0x384f7a[_0xb15e('0x1d')][_0xb15e('0x20')]?_[_0xb15e('0x21')](_0x384f7a[_0xb15e('0x1d')][_0xb15e('0x20')],function(_0x4c05b5){return{'model':db[_0x4c05b5['model']],'as':_0x4c05b5['as'],'attributes':_0x4c05b5[_0xb15e('0x22')],'include':_0x4c05b5[_0xb15e('0x20')]?_['map'](_0x4c05b5['include'],function(_0x5567e5){return{'model':db[_0x5567e5[_0xb15e('0x23')]],'as':_0x5567e5['as'],'attributes':_0x5567e5['attributes'],'include':_0x5567e5[_0xb15e('0x20')]?_[_0xb15e('0x21')](_0x5567e5[_0xb15e('0x20')],function(_0x4e186a){return{'model':db[_0x4e186a[_0xb15e('0x23')]],'as':_0x4e186a['as'],'attributes':_0x4e186a[_0xb15e('0x22')]};}):[]};}):[]};}):[]:[]})[_0xb15e('0x10')](function(_0x55e215){logger[_0xb15e('0x11')](_0xb15e('0x1b'),_0x384f7a);logger['debug'](_0xb15e('0x1b'),_0x384f7a,JSON[_0xb15e('0x15')](_0x55e215));_0xe52e4f(_0x55e215);})[_0xb15e('0x1a')](function(_0x56fccf){logger[_0xb15e('0x16')](_0xb15e('0x1b'),_0x56fccf[_0xb15e('0x18')],_0x384f7a);_0x5e4f96(_0x256893[_0xb15e('0x16')](0x1f4,_0x56fccf['message']));});});};exports['CreateVoiceQueueReport']=function(_0x1df2d4){var _0x3f1745=this;return new Promise(function(_0x4042bc,_0x481a01){return db[_0xb15e('0x1c')]['create'](_0x1df2d4['body'],{'raw':_0x1df2d4[_0xb15e('0x1d')]?_0x1df2d4[_0xb15e('0x1d')][_0xb15e('0x24')]===undefined?!![]:![]:!![]})[_0xb15e('0x10')](function(_0x48640c){logger[_0xb15e('0x11')]('CreateVoiceQueueReport',_0x1df2d4);logger['debug'](_0xb15e('0x25'),_0x1df2d4,JSON['stringify'](_0x48640c));_0x4042bc(_0x48640c);})[_0xb15e('0x1a')](function(_0x69486e){logger['error']('CreateVoiceQueueReport',_0x69486e['message'],_0x1df2d4);_0x481a01(_0x3f1745[_0xb15e('0x16')](0x1f4,_0x69486e[_0xb15e('0x18')]));});});};exports['UpdateVoiceQueueReport']=function(_0x4bc8c0){var _0x304f0d=this;return new Promise(function(_0x551607,_0xe3a6a7){return db['VoiceQueueReport'][_0xb15e('0x26')](_0x4bc8c0['body'],{'raw':_0x4bc8c0[_0xb15e('0x1d')]?_0x4bc8c0[_0xb15e('0x1d')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4bc8c0[_0xb15e('0x1d')]?_0x4bc8c0[_0xb15e('0x1d')][_0xb15e('0x1e')]||null:null,'attributes':_0x4bc8c0[_0xb15e('0x1d')]?_0x4bc8c0['options'][_0xb15e('0x22')]||null:null,'limit':_0x4bc8c0[_0xb15e('0x1d')]?_0x4bc8c0[_0xb15e('0x1d')][_0xb15e('0x1f')]||null:null})[_0xb15e('0x10')](function(_0x1ce5fe){logger[_0xb15e('0x11')](_0xb15e('0x27'),_0x4bc8c0);logger[_0xb15e('0x13')](_0xb15e('0x27'),_0x4bc8c0,JSON[_0xb15e('0x15')](_0x1ce5fe));_0x551607(_0x1ce5fe);})[_0xb15e('0x1a')](function(_0x21ff7b){logger[_0xb15e('0x16')](_0xb15e('0x27'),_0x21ff7b[_0xb15e('0x18')],_0x4bc8c0);_0xe3a6a7(_0x304f0d[_0xb15e('0x16')](0x1f4,_0x21ff7b['message']));});});};
\ No newline at end of file
index 56b2fa0..ae61581 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd694=['length','./voiceQueueReport.events','remove','update','emit','removeListener'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0xd694,0x11b));var _0x4d69=function(_0x300a26,_0x1ad864){_0x300a26=_0x300a26-0x0;var _0x43bccd=_0xd694[_0x300a26];return _0x43bccd;};'use strict';var VoiceQueueReportEvents=require(_0x4d69('0x0'));var events=['save',_0x4d69('0x1'),_0x4d69('0x2')];function createListener(_0x164800,_0x25a783){return function(_0x49042c){_0x25a783[_0x4d69('0x3')](_0x164800,_0x49042c);};}function removeListener(_0x49b1d8,_0x763dab){return function(){VoiceQueueReportEvents[_0x4d69('0x4')](_0x49b1d8,_0x763dab);};}exports['register']=function(_0x2b85a8){for(var _0x3e4906=0x0,_0x28bc00=events[_0x4d69('0x5')];_0x3e4906<_0x28bc00;_0x3e4906++){var _0x482ff3=events[_0x3e4906];var _0x16c8dd=createListener('voiceQueueReport:'+_0x482ff3,_0x2b85a8);VoiceQueueReportEvents['on'](_0x482ff3,_0x16c8dd);}};
\ No newline at end of file
+var _0xbf18=['emit','length','remove','update'];(function(_0x487496,_0x249683){var _0x539dc8=function(_0x2c38e1){while(--_0x2c38e1){_0x487496['push'](_0x487496['shift']());}};_0x539dc8(++_0x249683);}(_0xbf18,0xfa));var _0x8bf1=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xbf18[_0x3dd15e];return _0x231fd0;};'use strict';var VoiceQueueReportEvents=require('./voiceQueueReport.events');var events=['save',_0x8bf1('0x0'),_0x8bf1('0x1')];function createListener(_0x8d0b33,_0x232f1e){return function(_0x2cf5c1){_0x232f1e[_0x8bf1('0x2')](_0x8d0b33,_0x2cf5c1);};}function removeListener(_0x6337f5,_0x4d69f4){return function(){VoiceQueueReportEvents['removeListener'](_0x6337f5,_0x4d69f4);};}exports['register']=function(_0x39a737){for(var _0x420f67=0x0,_0xe16cb7=events[_0x8bf1('0x3')];_0x420f67<_0xe16cb7;_0x420f67++){var _0x47b4b0=events[_0x420f67];var _0x4a006d=createListener('voiceQueueReport:'+_0x47b4b0,_0x39a737);VoiceQueueReportEvents['on'](_0x47b4b0,_0x4a006d);}};
\ No newline at end of file
index d5a1bed..22afe8d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd27=['connect-timeout','Router','fs-extra','get','/:id','post','isAuthenticated','put','delete','destroy','exports','multer','path'];(function(_0x28d664,_0x8e4d85){var _0x1ce626=function(_0x3911dd){while(--_0x3911dd){_0x28d664['push'](_0x28d664['shift']());}};_0x1ce626(++_0x8e4d85);}(_0xfd27,0xb4));var _0x7fd2=function(_0x14dfe6,_0x370f63){_0x14dfe6=_0x14dfe6-0x0;var _0x187e46=_0xfd27[_0x14dfe6];return _0x187e46;};'use strict';var multer=require(_0x7fd2('0x0'));var util=require('util');var path=require(_0x7fd2('0x1'));var timeout=require(_0x7fd2('0x2'));var express=require('express');var router=express[_0x7fd2('0x3')]();var fs_extra=require(_0x7fd2('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./voiceQueuesLog.controller');router[_0x7fd2('0x5')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0x7fd2('0x6'),auth['isAuthenticated'](),controller['show']);router[_0x7fd2('0x7')]('/',auth[_0x7fd2('0x8')](),controller['create']);router[_0x7fd2('0x9')](_0x7fd2('0x6'),auth[_0x7fd2('0x8')](),controller['update']);router[_0x7fd2('0xa')](_0x7fd2('0x6'),auth[_0x7fd2('0x8')](),controller[_0x7fd2('0xb')]);module[_0x7fd2('0xc')]=router;
\ No newline at end of file
+var _0xa4b7=['connect-timeout','express','Router','fs-extra','../../components/interaction/service','./voiceQueuesLog.controller','get','isAuthenticated','index','/:id','post','create','put','update','delete','multer'];(function(_0x461887,_0x20c794){var _0x3734c4=function(_0xc00b9c){while(--_0xc00b9c){_0x461887['push'](_0x461887['shift']());}};_0x3734c4(++_0x20c794);}(_0xa4b7,0xbf));var _0x7a4b=function(_0x584ee3,_0x1d2e62){_0x584ee3=_0x584ee3-0x0;var _0x25bc23=_0xa4b7[_0x584ee3];return _0x25bc23;};'use strict';var multer=require(_0x7a4b('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x7a4b('0x1'));var express=require(_0x7a4b('0x2'));var router=express[_0x7a4b('0x3')]();var fs_extra=require(_0x7a4b('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x7a4b('0x5'));var config=require('../../config/environment');var controller=require(_0x7a4b('0x6'));router[_0x7a4b('0x7')]('/',auth[_0x7a4b('0x8')](),controller[_0x7a4b('0x9')]);router[_0x7a4b('0x7')](_0x7a4b('0xa'),auth[_0x7a4b('0x8')](),controller['show']);router[_0x7a4b('0xb')]('/',auth[_0x7a4b('0x8')](),controller[_0x7a4b('0xc')]);router[_0x7a4b('0xd')](_0x7a4b('0xa'),auth[_0x7a4b('0x8')](),controller[_0x7a4b('0xe')]);router[_0x7a4b('0xf')](_0x7a4b('0xa'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 20a5b31..d812810 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x22e3=['exports','STRING','DATE','literal','CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','sequelize','moment'];(function(_0x2c5a11,_0x1f2a36){var _0x2742dc=function(_0x38b9a5){while(--_0x38b9a5){_0x2c5a11['push'](_0x2c5a11['shift']());}};_0x2742dc(++_0x1f2a36);}(_0x22e3,0x132));var _0x322e=function(_0x5072b8,_0x2c3792){_0x5072b8=_0x5072b8-0x0;var _0x473681=_0x22e3[_0x5072b8];return _0x473681;};'use strict';var Sequelize=require(_0x322e('0x0'));var moment=require(_0x322e('0x1'));module[_0x322e('0x2')]={'time':{'type':Sequelize[_0x322e('0x3')]},'callid':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize[_0x322e('0x3')],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize[_0x322e('0x3')],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize[_0x322e('0x3')],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize[_0x322e('0x3')],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize[_0x322e('0x3')],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize[_0x322e('0x3')],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize[_0x322e('0x3')],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize[_0x322e('0x3')],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize[_0x322e('0x4')],'allowNull':![],'defaultValue':Sequelize[_0x322e('0x5')](_0x322e('0x6'))}};
\ No newline at end of file
+var _0x3bb7=['literal','CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','sequelize','exports','STRING'];(function(_0x39a2d6,_0x477459){var _0x23af66=function(_0x2eb95e){while(--_0x2eb95e){_0x39a2d6['push'](_0x39a2d6['shift']());}};_0x23af66(++_0x477459);}(_0x3bb7,0xed));var _0x73bb=function(_0x1f2941,_0x3544ce){_0x1f2941=_0x1f2941-0x0;var _0x31e313=_0x3bb7[_0x1f2941];return _0x31e313;};'use strict';var Sequelize=require(_0x73bb('0x0'));var moment=require('moment');module[_0x73bb('0x1')]={'time':{'type':Sequelize[_0x73bb('0x2')]},'callid':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize[_0x73bb('0x2')],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize[_0x73bb('0x2')],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize[_0x73bb('0x2')],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize[_0x73bb('0x2')],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize[_0x73bb('0x2')],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':Sequelize[_0x73bb('0x3')](_0x73bb('0x4'))}};
\ No newline at end of file
index 3946b94..3870af1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd765=['../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','offset','limit','undefined','count','json','apply','reject','save','update','then','destroy','error','name','send','index','VoiceQueuesLog','rawAttributes','fieldName','key','map','query','keys','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','options','includeAll','include','findAll','rows','catch','show','params','create','body','find','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'];(function(_0x513452,_0x18b76c){var _0x366e0c=function(_0x1ada96){while(--_0x1ada96){_0x513452['push'](_0x513452['shift']());}};_0x366e0c(++_0x18b76c);}(_0xd765,0x87));var _0x5d76=function(_0x27af45,_0x1b57aa){_0x27af45=_0x27af45-0x0;var _0x18df21=_0xd765[_0x27af45];return _0x18df21;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5d76('0x0'));var zipdir=require(_0x5d76('0x1'));var jsonpatch=require(_0x5d76('0x2'));var rp=require(_0x5d76('0x3'));var moment=require(_0x5d76('0x4'));var BPromise=require(_0x5d76('0x5'));var Mustache=require(_0x5d76('0x6'));var util=require(_0x5d76('0x7'));var path=require(_0x5d76('0x8'));var sox=require(_0x5d76('0x9'));var csv=require(_0x5d76('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x5d76('0xb'));var _=require(_0x5d76('0xc'));var squel=require(_0x5d76('0xd'));var crypto=require(_0x5d76('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x5d76('0xf'));var toCsv=require('to-csv');var querystring=require(_0x5d76('0x10'));var Papa=require(_0x5d76('0x11'));var Redis=require(_0x5d76('0x12'));var authService=require(_0x5d76('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x5d76('0x14'));var hardwareService=require(_0x5d76('0x15'));var logger=require(_0x5d76('0x16'))(_0x5d76('0x17'));var utils=require(_0x5d76('0x18'));var config=require(_0x5d76('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0x5d76('0x1a'))['db'];function respondWithStatusCode(_0x53db03,_0x5f352d){_0x5f352d=_0x5f352d||0xcc;return function(_0x4e759f){if(_0x4e759f){return _0x53db03[_0x5d76('0x1b')](_0x5f352d);}return _0x53db03[_0x5d76('0x1c')](_0x5f352d)[_0x5d76('0x1d')]();};}function respondWithResult(_0x4f948e,_0x138916){_0x138916=_0x138916||0xc8;return function(_0x1e4396){if(_0x1e4396){return _0x4f948e[_0x5d76('0x1c')](_0x138916)['json'](_0x1e4396);}};}function respondWithFilteredResult(_0x4f4811,_0x321d39){return function(_0xeec92f){if(_0xeec92f){var _0x3c9bd4=typeof _0x321d39[_0x5d76('0x1e')]==='undefined'&&typeof _0x321d39[_0x5d76('0x1f')]===_0x5d76('0x20');var _0x3bab78=_0xeec92f[_0x5d76('0x21')];var _0x3af26c=_0x3c9bd4?0x0:_0x321d39[_0x5d76('0x1e')];var _0x2a619d=_0x3c9bd4?_0xeec92f[_0x5d76('0x21')]:_0x321d39[_0x5d76('0x1e')]+_0x321d39[_0x5d76('0x1f')];var _0x42b548;if(_0x2a619d>=_0x3bab78){_0x2a619d=_0x3bab78;_0x42b548=0xc8;}else{_0x42b548=0xce;}_0x4f4811[_0x5d76('0x1c')](_0x42b548);return _0x4f4811['set']('Content-Range',_0x3af26c+'-'+_0x2a619d+'/'+_0x3bab78)[_0x5d76('0x22')](_0xeec92f);}return null;};}function patchUpdates(_0x2e5260){return function(_0x57c2b0){try{jsonpatch[_0x5d76('0x23')](_0x57c2b0,_0x2e5260,!![]);}catch(_0x373c0b){return BPromise[_0x5d76('0x24')](_0x373c0b);}return _0x57c2b0[_0x5d76('0x25')]();};}function saveUpdates(_0x175d8f,_0x58546e){return function(_0x4111c4){if(_0x4111c4){return _0x4111c4[_0x5d76('0x26')](_0x175d8f)[_0x5d76('0x27')](function(_0x5a823e){return _0x5a823e;});}return null;};}function removeEntity(_0x31a2ef,_0x284ac2){return function(_0x5673b1){if(_0x5673b1){return _0x5673b1[_0x5d76('0x28')]()[_0x5d76('0x27')](function(){_0x31a2ef[_0x5d76('0x1c')](0xcc)[_0x5d76('0x1d')]();});}};}function handleEntityNotFound(_0x17887a,_0x578546){return function(_0x12809b){if(!_0x12809b){_0x17887a['sendStatus'](0x194);}return _0x12809b;};}function handleError(_0x5de19b,_0x3ff9bc){_0x3ff9bc=_0x3ff9bc||0x1f4;return function(_0x40dd6e){logger[_0x5d76('0x29')](_0x40dd6e['stack']);if(_0x40dd6e[_0x5d76('0x2a')]){delete _0x40dd6e['name'];}_0x5de19b['status'](_0x3ff9bc)[_0x5d76('0x2b')](_0x40dd6e);};}exports[_0x5d76('0x2c')]=function(_0x2bdc45,_0x3fcb45){var _0x3edece={},_0x321fcc={},_0x1407a7={'count':0x0,'rows':[]};var _0x5be2c0=_['map'](db[_0x5d76('0x2d')][_0x5d76('0x2e')],function(_0x569611){return{'name':_0x569611[_0x5d76('0x2f')],'type':_0x569611['type'][_0x5d76('0x30')]};});_0x321fcc['model']=_[_0x5d76('0x31')](_0x5be2c0,_0x5d76('0x2a'));_0x321fcc[_0x5d76('0x32')]=_[_0x5d76('0x33')](_0x2bdc45[_0x5d76('0x32')]);_0x321fcc['filters']=_[_0x5d76('0x34')](_0x321fcc[_0x5d76('0x35')],_0x321fcc[_0x5d76('0x32')]);_0x3edece[_0x5d76('0x36')]=_[_0x5d76('0x34')](_0x321fcc[_0x5d76('0x35')],qs['fields'](_0x2bdc45[_0x5d76('0x32')][_0x5d76('0x37')]));_0x3edece[_0x5d76('0x36')]=_0x3edece['attributes'][_0x5d76('0x38')]?_0x3edece[_0x5d76('0x36')]:_0x321fcc[_0x5d76('0x35')];if(!_0x2bdc45[_0x5d76('0x32')][_0x5d76('0x39')](_0x5d76('0x3a'))){_0x3edece[_0x5d76('0x1f')]=qs[_0x5d76('0x1f')](_0x2bdc45['query'][_0x5d76('0x1f')]);_0x3edece[_0x5d76('0x1e')]=qs[_0x5d76('0x1e')](_0x2bdc45[_0x5d76('0x32')][_0x5d76('0x1e')]);}_0x3edece[_0x5d76('0x3b')]=qs[_0x5d76('0x3c')](_0x2bdc45[_0x5d76('0x32')][_0x5d76('0x3c')]);_0x3edece[_0x5d76('0x3d')]=qs[_0x5d76('0x3e')](_[_0x5d76('0x3f')](_0x2bdc45['query'],_0x321fcc[_0x5d76('0x3e')]),_0x5be2c0);if(_0x2bdc45[_0x5d76('0x32')][_0x5d76('0x40')]){_0x3edece[_0x5d76('0x3d')]=_[_0x5d76('0x41')](_0x3edece[_0x5d76('0x3d')],{'$or':_[_0x5d76('0x31')](_0x5be2c0,function(_0x58258e){if(_0x58258e['type']!=='VIRTUAL'){var _0x10af57={};_0x10af57[_0x58258e[_0x5d76('0x2a')]]={'$like':'%'+_0x2bdc45[_0x5d76('0x32')]['filter']+'%'};return _0x10af57;}})});}_0x3edece=_[_0x5d76('0x41')]({},_0x3edece,_0x2bdc45[_0x5d76('0x42')]);var _0x44a3c5={'where':_0x3edece['where']};return db[_0x5d76('0x2d')][_0x5d76('0x21')](_0x44a3c5)[_0x5d76('0x27')](function(_0x51c1e2){_0x1407a7[_0x5d76('0x21')]=_0x51c1e2;if(_0x2bdc45[_0x5d76('0x32')][_0x5d76('0x43')]){_0x3edece[_0x5d76('0x44')]=[{'all':!![]}];}return db[_0x5d76('0x2d')][_0x5d76('0x45')](_0x3edece);})[_0x5d76('0x27')](function(_0x45d298){_0x1407a7[_0x5d76('0x46')]=_0x45d298;return _0x1407a7;})['then'](respondWithFilteredResult(_0x3fcb45,_0x3edece))[_0x5d76('0x47')](handleError(_0x3fcb45,null));};exports[_0x5d76('0x48')]=function(_0x50949a,_0x53e97b){var _0x33f18b={'raw':!![],'where':{'id':_0x50949a[_0x5d76('0x49')]['id']}},_0x7a90b2={};_0x7a90b2[_0x5d76('0x35')]=_[_0x5d76('0x33')](db['VoiceQueuesLog'][_0x5d76('0x2e')]);_0x7a90b2[_0x5d76('0x32')]=_[_0x5d76('0x33')](_0x50949a['query']);_0x7a90b2['filters']=_[_0x5d76('0x34')](_0x7a90b2[_0x5d76('0x35')],_0x7a90b2[_0x5d76('0x32')]);_0x33f18b[_0x5d76('0x36')]=_[_0x5d76('0x34')](_0x7a90b2[_0x5d76('0x35')],qs[_0x5d76('0x37')](_0x50949a[_0x5d76('0x32')]['fields']));_0x33f18b['attributes']=_0x33f18b[_0x5d76('0x36')][_0x5d76('0x38')]?_0x33f18b['attributes']:_0x7a90b2[_0x5d76('0x35')];if(_0x50949a[_0x5d76('0x32')][_0x5d76('0x43')]){_0x33f18b[_0x5d76('0x44')]=[{'all':!![]}];}_0x33f18b=_[_0x5d76('0x41')]({},_0x33f18b,_0x50949a[_0x5d76('0x42')]);return db[_0x5d76('0x2d')]['find'](_0x33f18b)[_0x5d76('0x27')](handleEntityNotFound(_0x53e97b,null))[_0x5d76('0x27')](respondWithResult(_0x53e97b,null))[_0x5d76('0x47')](handleError(_0x53e97b,null));};exports['create']=function(_0x1cf468,_0x41db22){return db[_0x5d76('0x2d')][_0x5d76('0x4a')](_0x1cf468[_0x5d76('0x4b')],{})['then'](respondWithResult(_0x41db22,0xc9))[_0x5d76('0x47')](handleError(_0x41db22,null));};exports['update']=function(_0x479c90,_0x4b992c){if(_0x479c90[_0x5d76('0x4b')]['id']){delete _0x479c90[_0x5d76('0x4b')]['id'];}return db['VoiceQueuesLog'][_0x5d76('0x4c')]({'where':{'id':_0x479c90[_0x5d76('0x49')]['id']}})['then'](handleEntityNotFound(_0x4b992c,null))[_0x5d76('0x27')](saveUpdates(_0x479c90[_0x5d76('0x4b')],null))['then'](respondWithResult(_0x4b992c,null))[_0x5d76('0x47')](handleError(_0x4b992c,null));};exports[_0x5d76('0x28')]=function(_0x35570c,_0x46623f){return db[_0x5d76('0x2d')][_0x5d76('0x4c')]({'where':{'id':_0x35570c['params']['id']}})[_0x5d76('0x27')](handleEntityNotFound(_0x46623f,null))['then'](removeEntity(_0x46623f,null))[_0x5d76('0x47')](handleError(_0x46623f,null));};
\ No newline at end of file
+var _0xee79=['reject','save','update','then','error','stack','name','index','map','VoiceQueuesLog','rawAttributes','fieldName','model','query','filters','intersection','attributes','fields','hasOwnProperty','sort','filter','where','type','VIRTUAL','merge','options','includeAll','include','catch','show','params','keys','find','create','body','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../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','apply'];(function(_0x1ac595,_0x5d2081){var _0x455fff=function(_0x3043ee){while(--_0x3043ee){_0x1ac595['push'](_0x1ac595['shift']());}};_0x455fff(++_0x5d2081);}(_0xee79,0xfc));var _0x9ee7=function(_0x6b23f3,_0x4189c9){_0x6b23f3=_0x6b23f3-0x0;var _0x473e8f=_0xee79[_0x6b23f3];return _0x473e8f;};'use strict';var emlformat=require(_0x9ee7('0x0'));var rimraf=require(_0x9ee7('0x1'));var zipdir=require(_0x9ee7('0x2'));var jsonpatch=require(_0x9ee7('0x3'));var rp=require(_0x9ee7('0x4'));var moment=require('moment');var BPromise=require(_0x9ee7('0x5'));var Mustache=require(_0x9ee7('0x6'));var util=require(_0x9ee7('0x7'));var path=require('path');var sox=require(_0x9ee7('0x8'));var csv=require(_0x9ee7('0x9'));var ejs=require(_0x9ee7('0xa'));var fs=require('fs');var fs_extra=require(_0x9ee7('0xb'));var _=require('lodash');var squel=require(_0x9ee7('0xc'));var crypto=require('crypto');var jsforce=require(_0x9ee7('0xd'));var deskjs=require(_0x9ee7('0xe'));var toCsv=require(_0x9ee7('0x9'));var querystring=require('querystring');var Papa=require(_0x9ee7('0xf'));var Redis=require(_0x9ee7('0x10'));var authService=require(_0x9ee7('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x9ee7('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x9ee7('0x13'))(_0x9ee7('0x14'));var utils=require(_0x9ee7('0x15'));var config=require(_0x9ee7('0x16'));var licenseUtil=require(_0x9ee7('0x17'));var db=require(_0x9ee7('0x18'))['db'];function respondWithStatusCode(_0x2f08ad,_0x3e6dee){_0x3e6dee=_0x3e6dee||0xcc;return function(_0x1c775f){if(_0x1c775f){return _0x2f08ad[_0x9ee7('0x19')](_0x3e6dee);}return _0x2f08ad[_0x9ee7('0x1a')](_0x3e6dee)[_0x9ee7('0x1b')]();};}function respondWithResult(_0x373826,_0x2807c7){_0x2807c7=_0x2807c7||0xc8;return function(_0x17e1a5){if(_0x17e1a5){return _0x373826[_0x9ee7('0x1a')](_0x2807c7)[_0x9ee7('0x1c')](_0x17e1a5);}};}function respondWithFilteredResult(_0x397b40,_0x13f89c){return function(_0x199d86){if(_0x199d86){var _0x40b388=typeof _0x13f89c[_0x9ee7('0x1d')]===_0x9ee7('0x1e')&&typeof _0x13f89c[_0x9ee7('0x1f')]===_0x9ee7('0x1e');var _0x599979=_0x199d86[_0x9ee7('0x20')];var _0x1d6299=_0x40b388?0x0:_0x13f89c[_0x9ee7('0x1d')];var _0x324be2=_0x40b388?_0x199d86['count']:_0x13f89c[_0x9ee7('0x1d')]+_0x13f89c[_0x9ee7('0x1f')];var _0x27188a;if(_0x324be2>=_0x599979){_0x324be2=_0x599979;_0x27188a=0xc8;}else{_0x27188a=0xce;}_0x397b40['status'](_0x27188a);return _0x397b40[_0x9ee7('0x21')](_0x9ee7('0x22'),_0x1d6299+'-'+_0x324be2+'/'+_0x599979)[_0x9ee7('0x1c')](_0x199d86);}return null;};}function patchUpdates(_0x21f843){return function(_0x12b2ac){try{jsonpatch[_0x9ee7('0x23')](_0x12b2ac,_0x21f843,!![]);}catch(_0x73aef4){return BPromise[_0x9ee7('0x24')](_0x73aef4);}return _0x12b2ac[_0x9ee7('0x25')]();};}function saveUpdates(_0x3089c1,_0x44649d){return function(_0x528eab){if(_0x528eab){return _0x528eab[_0x9ee7('0x26')](_0x3089c1)[_0x9ee7('0x27')](function(_0x1cd5cf){return _0x1cd5cf;});}return null;};}function removeEntity(_0x403132,_0x1f7905){return function(_0xd799cd){if(_0xd799cd){return _0xd799cd['destroy']()[_0x9ee7('0x27')](function(){_0x403132['status'](0xcc)[_0x9ee7('0x1b')]();});}};}function handleEntityNotFound(_0x134ebe,_0x309ecc){return function(_0x936563){if(!_0x936563){_0x134ebe[_0x9ee7('0x19')](0x194);}return _0x936563;};}function handleError(_0x2d6790,_0x1780e5){_0x1780e5=_0x1780e5||0x1f4;return function(_0x713637){logger[_0x9ee7('0x28')](_0x713637[_0x9ee7('0x29')]);if(_0x713637[_0x9ee7('0x2a')]){delete _0x713637['name'];}_0x2d6790[_0x9ee7('0x1a')](_0x1780e5)['send'](_0x713637);};}exports[_0x9ee7('0x2b')]=function(_0x3745bf,_0x39e8b1){var _0xd33dbc={},_0x1d9e25={},_0x2c4dca={'count':0x0,'rows':[]};var _0xb0665b=_[_0x9ee7('0x2c')](db[_0x9ee7('0x2d')][_0x9ee7('0x2e')],function(_0x52df54){return{'name':_0x52df54[_0x9ee7('0x2f')],'type':_0x52df54['type']['key']};});_0x1d9e25[_0x9ee7('0x30')]=_[_0x9ee7('0x2c')](_0xb0665b,_0x9ee7('0x2a'));_0x1d9e25['query']=_['keys'](_0x3745bf[_0x9ee7('0x31')]);_0x1d9e25[_0x9ee7('0x32')]=_[_0x9ee7('0x33')](_0x1d9e25[_0x9ee7('0x30')],_0x1d9e25[_0x9ee7('0x31')]);_0xd33dbc[_0x9ee7('0x34')]=_[_0x9ee7('0x33')](_0x1d9e25[_0x9ee7('0x30')],qs[_0x9ee7('0x35')](_0x3745bf[_0x9ee7('0x31')]['fields']));_0xd33dbc['attributes']=_0xd33dbc[_0x9ee7('0x34')]['length']?_0xd33dbc[_0x9ee7('0x34')]:_0x1d9e25[_0x9ee7('0x30')];if(!_0x3745bf[_0x9ee7('0x31')][_0x9ee7('0x36')]('nolimit')){_0xd33dbc[_0x9ee7('0x1f')]=qs[_0x9ee7('0x1f')](_0x3745bf['query'][_0x9ee7('0x1f')]);_0xd33dbc[_0x9ee7('0x1d')]=qs[_0x9ee7('0x1d')](_0x3745bf[_0x9ee7('0x31')][_0x9ee7('0x1d')]);}_0xd33dbc['order']=qs[_0x9ee7('0x37')](_0x3745bf['query'][_0x9ee7('0x37')]);_0xd33dbc['where']=qs[_0x9ee7('0x32')](_['pick'](_0x3745bf[_0x9ee7('0x31')],_0x1d9e25[_0x9ee7('0x32')]),_0xb0665b);if(_0x3745bf[_0x9ee7('0x31')][_0x9ee7('0x38')]){_0xd33dbc[_0x9ee7('0x39')]=_['merge'](_0xd33dbc[_0x9ee7('0x39')],{'$or':_[_0x9ee7('0x2c')](_0xb0665b,function(_0x43cc7c){if(_0x43cc7c[_0x9ee7('0x3a')]!==_0x9ee7('0x3b')){var _0x4f1a1d={};_0x4f1a1d[_0x43cc7c[_0x9ee7('0x2a')]]={'$like':'%'+_0x3745bf['query']['filter']+'%'};return _0x4f1a1d;}})});}_0xd33dbc=_[_0x9ee7('0x3c')]({},_0xd33dbc,_0x3745bf[_0x9ee7('0x3d')]);var _0x2f7ce1={'where':_0xd33dbc[_0x9ee7('0x39')]};return db[_0x9ee7('0x2d')][_0x9ee7('0x20')](_0x2f7ce1)[_0x9ee7('0x27')](function(_0x5f14ef){_0x2c4dca[_0x9ee7('0x20')]=_0x5f14ef;if(_0x3745bf['query'][_0x9ee7('0x3e')]){_0xd33dbc[_0x9ee7('0x3f')]=[{'all':!![]}];}return db['VoiceQueuesLog']['findAll'](_0xd33dbc);})['then'](function(_0x3660c4){_0x2c4dca['rows']=_0x3660c4;return _0x2c4dca;})[_0x9ee7('0x27')](respondWithFilteredResult(_0x39e8b1,_0xd33dbc))[_0x9ee7('0x40')](handleError(_0x39e8b1,null));};exports[_0x9ee7('0x41')]=function(_0x58758e,_0xb5f754){var _0x5a1298={'raw':!![],'where':{'id':_0x58758e[_0x9ee7('0x42')]['id']}},_0x154b0f={};_0x154b0f[_0x9ee7('0x30')]=_[_0x9ee7('0x43')](db['VoiceQueuesLog'][_0x9ee7('0x2e')]);_0x154b0f[_0x9ee7('0x31')]=_['keys'](_0x58758e[_0x9ee7('0x31')]);_0x154b0f[_0x9ee7('0x32')]=_['intersection'](_0x154b0f[_0x9ee7('0x30')],_0x154b0f[_0x9ee7('0x31')]);_0x5a1298[_0x9ee7('0x34')]=_[_0x9ee7('0x33')](_0x154b0f[_0x9ee7('0x30')],qs[_0x9ee7('0x35')](_0x58758e[_0x9ee7('0x31')]['fields']));_0x5a1298[_0x9ee7('0x34')]=_0x5a1298[_0x9ee7('0x34')]['length']?_0x5a1298[_0x9ee7('0x34')]:_0x154b0f['model'];if(_0x58758e[_0x9ee7('0x31')][_0x9ee7('0x3e')]){_0x5a1298[_0x9ee7('0x3f')]=[{'all':!![]}];}_0x5a1298=_[_0x9ee7('0x3c')]({},_0x5a1298,_0x58758e[_0x9ee7('0x3d')]);return db[_0x9ee7('0x2d')][_0x9ee7('0x44')](_0x5a1298)[_0x9ee7('0x27')](handleEntityNotFound(_0xb5f754,null))[_0x9ee7('0x27')](respondWithResult(_0xb5f754,null))['catch'](handleError(_0xb5f754,null));};exports['create']=function(_0x577a78,_0x4f6ed9){return db['VoiceQueuesLog'][_0x9ee7('0x45')](_0x577a78['body'],{})['then'](respondWithResult(_0x4f6ed9,0xc9))[_0x9ee7('0x40')](handleError(_0x4f6ed9,null));};exports[_0x9ee7('0x26')]=function(_0x1931f3,_0x26f5bf){if(_0x1931f3['body']['id']){delete _0x1931f3[_0x9ee7('0x46')]['id'];}return db['VoiceQueuesLog'][_0x9ee7('0x44')]({'where':{'id':_0x1931f3[_0x9ee7('0x42')]['id']}})[_0x9ee7('0x27')](handleEntityNotFound(_0x26f5bf,null))[_0x9ee7('0x27')](saveUpdates(_0x1931f3[_0x9ee7('0x46')],null))[_0x9ee7('0x27')](respondWithResult(_0x26f5bf,null))[_0x9ee7('0x40')](handleError(_0x26f5bf,null));};exports[_0x9ee7('0x47')]=function(_0x409ce9,_0x22dcfb){return db[_0x9ee7('0x2d')][_0x9ee7('0x44')]({'where':{'id':_0x409ce9['params']['id']}})[_0x9ee7('0x27')](handleEntityNotFound(_0x22dcfb,null))[_0x9ee7('0x27')](removeEntity(_0x22dcfb,null))[_0x9ee7('0x40')](handleError(_0x22dcfb,null));};
\ No newline at end of file
index 80dad3c..c4da199 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb205=['../../config/logger','api','moment','path','../../config/environment','./voiceQueuesLog.attributes','define','voice_queues_log','event_dtm','lodash','util'];(function(_0x1ea170,_0x28d157){var _0x32487e=function(_0x5bebe9){while(--_0x5bebe9){_0x1ea170['push'](_0x1ea170['shift']());}};_0x32487e(++_0x28d157);}(_0xb205,0xf0));var _0x5b20=function(_0x28260d,_0x555b8d){_0x28260d=_0x28260d-0x0;var _0x49e95b=_0xb205[_0x28260d];return _0x49e95b;};'use strict';var _=require(_0x5b20('0x0'));var util=require(_0x5b20('0x1'));var logger=require(_0x5b20('0x2'))(_0x5b20('0x3'));var moment=require(_0x5b20('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x5b20('0x5'));var rimraf=require('rimraf');var config=require(_0x5b20('0x6'));var attributes=require(_0x5b20('0x7'));module['exports']=function(_0x3206cd,_0x29d926){return _0x3206cd[_0x5b20('0x8')]('VoiceQueuesLog',attributes,{'tableName':_0x5b20('0x9'),'paranoid':![],'indexes':[{'name':_0x5b20('0xa'),'fields':['event','dtm']}],'timestamps':![]});};
\ No newline at end of file
+var _0x6483=['./voiceQueuesLog.attributes','VoiceQueuesLog','voice_queues_log','event_dtm','event','dtm','lodash','util','../../config/logger','moment','request-promise','path','rimraf','../../config/environment'];(function(_0x55b3b5,_0x254983){var _0x5297a9=function(_0x5f302f){while(--_0x5f302f){_0x55b3b5['push'](_0x55b3b5['shift']());}};_0x5297a9(++_0x254983);}(_0x6483,0x1e2));var _0x3648=function(_0x191acd,_0xf381a2){_0x191acd=_0x191acd-0x0;var _0x34df87=_0x6483[_0x191acd];return _0x34df87;};'use strict';var _=require(_0x3648('0x0'));var util=require(_0x3648('0x1'));var logger=require(_0x3648('0x2'))('api');var moment=require(_0x3648('0x3'));var BPromise=require('bluebird');var rp=require(_0x3648('0x4'));var fs=require('fs');var path=require(_0x3648('0x5'));var rimraf=require(_0x3648('0x6'));var config=require(_0x3648('0x7'));var attributes=require(_0x3648('0x8'));module['exports']=function(_0x513772,_0x1f453c){return _0x513772['define'](_0x3648('0x9'),attributes,{'tableName':_0x3648('0xa'),'paranoid':![],'indexes':[{'name':_0x3648('0xb'),'fields':[_0x3648('0xc'),_0x3648('0xd')]}],'timestamps':![]});};
\ No newline at end of file
index cebbce7..8f12a38 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e23=['../../config/logger','rpc','jayson/promise','client','http','request','VoiceQueuesLog,\x20%s,\x20%s','request\x20sent','VoiceQueuesLog,\x20%s,\x20%s,\x20%s','stringify','error','message','info','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x25f57f,_0x75013d){var _0x18f206=function(_0x4c934f){while(--_0x4c934f){_0x25f57f['push'](_0x25f57f['shift']());}};_0x18f206(++_0x75013d);}(_0x4e23,0x173));var _0x34e2=function(_0x2d0820,_0x5d2b64){_0x2d0820=_0x2d0820-0x0;var _0x55ed67=_0x4e23[_0x2d0820];return _0x55ed67;};'use strict';var _=require(_0x34e2('0x0'));var util=require('util');var moment=require(_0x34e2('0x1'));var BPromise=require(_0x34e2('0x2'));var rs=require(_0x34e2('0x3'));var fs=require('fs');var Redis=require(_0x34e2('0x4'));var db=require(_0x34e2('0x5'))['db'];var utils=require(_0x34e2('0x6'));var logger=require(_0x34e2('0x7'))(_0x34e2('0x8'));var config=require('../../config/environment');var jayson=require(_0x34e2('0x9'));var client=jayson[_0x34e2('0xa')][_0x34e2('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3862d5,_0x28ff76,_0x11faf1){return new BPromise(function(_0x24b9f6,_0x581889){return client[_0x34e2('0xc')](_0x3862d5,_0x11faf1)['then'](function(_0x33cf9c){logger['info'](_0x34e2('0xd'),_0x28ff76,_0x34e2('0xe'));logger['debug'](_0x34e2('0xf'),_0x28ff76,_0x34e2('0xe'),JSON[_0x34e2('0x10')](_0x33cf9c));if(_0x33cf9c[_0x34e2('0x11')]){if(_0x33cf9c[_0x34e2('0x11')]['code']===0x1f4){logger['error'](_0x34e2('0xd'),_0x28ff76,_0x33cf9c[_0x34e2('0x11')][_0x34e2('0x12')]);return _0x581889(_0x33cf9c[_0x34e2('0x11')]['message']);}logger[_0x34e2('0x11')](_0x34e2('0xd'),_0x28ff76,_0x33cf9c[_0x34e2('0x11')][_0x34e2('0x12')]);return _0x24b9f6(_0x33cf9c[_0x34e2('0x11')][_0x34e2('0x12')]);}else{logger[_0x34e2('0x13')]('VoiceQueuesLog,\x20%s,\x20%s',_0x28ff76,'request\x20sent');_0x24b9f6(_0x33cf9c['result'][_0x34e2('0x12')]);}})[_0x34e2('0x14')](function(_0x14671a){logger[_0x34e2('0x11')](_0x34e2('0xd'),_0x28ff76,_0x14671a);_0x581889(_0x14671a);});});}
\ No newline at end of file
+var _0x9532=['../../config/logger','../../config/environment','client','http','request','info','VoiceQueuesLog,\x20%s,\x20%s','request\x20sent','VoiceQueuesLog,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils'];(function(_0x19ded1,_0x306816){var _0x40b970=function(_0x3e8dab){while(--_0x3e8dab){_0x19ded1['push'](_0x19ded1['shift']());}};_0x40b970(++_0x306816);}(_0x9532,0x8c));var _0x2953=function(_0x571f5d,_0x509507){_0x571f5d=_0x571f5d-0x0;var _0x4844ef=_0x9532[_0x571f5d];return _0x4844ef;};'use strict';var _=require(_0x2953('0x0'));var util=require(_0x2953('0x1'));var moment=require(_0x2953('0x2'));var BPromise=require(_0x2953('0x3'));var rs=require(_0x2953('0x4'));var fs=require('fs');var Redis=require(_0x2953('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x2953('0x6'));var logger=require(_0x2953('0x7'))('rpc');var config=require(_0x2953('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x2953('0x9')][_0x2953('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5b2aea,_0x53566f,_0x21a76a){return new BPromise(function(_0x5cbdaa,_0x49f180){return client[_0x2953('0xb')](_0x5b2aea,_0x21a76a)['then'](function(_0xc5c60f){logger[_0x2953('0xc')](_0x2953('0xd'),_0x53566f,_0x2953('0xe'));logger['debug'](_0x2953('0xf'),_0x53566f,_0x2953('0xe'),JSON[_0x2953('0x10')](_0xc5c60f));if(_0xc5c60f[_0x2953('0x11')]){if(_0xc5c60f[_0x2953('0x11')][_0x2953('0x12')]===0x1f4){logger['error']('VoiceQueuesLog,\x20%s,\x20%s',_0x53566f,_0xc5c60f[_0x2953('0x11')][_0x2953('0x13')]);return _0x49f180(_0xc5c60f['error'][_0x2953('0x13')]);}logger['error']('VoiceQueuesLog,\x20%s,\x20%s',_0x53566f,_0xc5c60f['error']['message']);return _0x5cbdaa(_0xc5c60f[_0x2953('0x11')][_0x2953('0x13')]);}else{logger[_0x2953('0xc')](_0x2953('0xd'),_0x53566f,_0x2953('0xe'));_0x5cbdaa(_0xc5c60f['result'][_0x2953('0x13')]);}})[_0x2953('0x14')](function(_0x341e73){logger[_0x2953('0x11')](_0x2953('0xd'),_0x53566f,_0x341e73);_0x49f180(_0x341e73);});});}
\ No newline at end of file
index 3a387ef..0c9d96e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x79a4=['Router','fs-extra','../../config/environment','get','/describe','isAuthenticated','/:id','show','/:id/download','/:id/transcribe','create','runTranscribe','delete','destroy','exports','util','connect-timeout'];(function(_0x363af0,_0x32d136){var _0x257614=function(_0x4a1ebd){while(--_0x4a1ebd){_0x363af0['push'](_0x363af0['shift']());}};_0x257614(++_0x32d136);}(_0x79a4,0x10e));var _0x479a=function(_0x49bd91,_0x1f70b4){_0x49bd91=_0x49bd91-0x0;var _0x488a88=_0x79a4[_0x49bd91];return _0x488a88;};'use strict';var multer=require('multer');var util=require(_0x479a('0x0'));var path=require('path');var timeout=require(_0x479a('0x1'));var express=require('express');var router=express[_0x479a('0x2')]();var fs_extra=require(_0x479a('0x3'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x479a('0x4'));var controller=require('./voiceRecording.controller');router[_0x479a('0x5')]('/',auth['isAuthenticated'](),controller['index']);router[_0x479a('0x5')](_0x479a('0x6'),auth[_0x479a('0x7')](),controller['describe']);router[_0x479a('0x5')](_0x479a('0x8'),auth[_0x479a('0x7')](),controller[_0x479a('0x9')]);router[_0x479a('0x5')](_0x479a('0xa'),auth['isAuthenticated'](),controller['download']);router[_0x479a('0x5')]('/:id/downloads',controller['downloads']);router[_0x479a('0x5')](_0x479a('0xb'),auth['isAuthenticated'](),controller['downloadTranscribe']);router['post']('/',auth[_0x479a('0x7')](),controller[_0x479a('0xc')]);router['post'](_0x479a('0xb'),auth[_0x479a('0x7')](),controller[_0x479a('0xd')]);router['put'](_0x479a('0x8'),auth[_0x479a('0x7')](),controller['update']);router[_0x479a('0xe')](_0x479a('0x8'),auth[_0x479a('0x7')](),controller[_0x479a('0xf')]);module[_0x479a('0x10')]=router;
\ No newline at end of file
+var _0x83e7=['express','Router','fs-extra','../../components/interaction/service','../../config/environment','./voiceRecording.controller','get','isAuthenticated','describe','/:id','show','/:id/download','download','/:id/downloads','downloads','/:id/transcribe','downloadTranscribe','post','create','runTranscribe','put','update','delete','destroy','exports','multer','util','path'];(function(_0x40bfc2,_0x538e26){var _0x14d1db=function(_0x3c46bc){while(--_0x3c46bc){_0x40bfc2['push'](_0x40bfc2['shift']());}};_0x14d1db(++_0x538e26);}(_0x83e7,0x131));var _0x783e=function(_0x1837f6,_0x2daff9){_0x1837f6=_0x1837f6-0x0;var _0x487418=_0x83e7[_0x1837f6];return _0x487418;};'use strict';var multer=require(_0x783e('0x0'));var util=require(_0x783e('0x1'));var path=require(_0x783e('0x2'));var timeout=require('connect-timeout');var express=require(_0x783e('0x3'));var router=express[_0x783e('0x4')]();var fs_extra=require(_0x783e('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x783e('0x6'));var config=require(_0x783e('0x7'));var controller=require(_0x783e('0x8'));router[_0x783e('0x9')]('/',auth[_0x783e('0xa')](),controller['index']);router[_0x783e('0x9')]('/describe',auth[_0x783e('0xa')](),controller[_0x783e('0xb')]);router[_0x783e('0x9')](_0x783e('0xc'),auth[_0x783e('0xa')](),controller[_0x783e('0xd')]);router['get'](_0x783e('0xe'),auth['isAuthenticated'](),controller[_0x783e('0xf')]);router[_0x783e('0x9')](_0x783e('0x10'),controller[_0x783e('0x11')]);router[_0x783e('0x9')](_0x783e('0x12'),auth[_0x783e('0xa')](),controller[_0x783e('0x13')]);router[_0x783e('0x14')]('/',auth[_0x783e('0xa')](),controller[_0x783e('0x15')]);router[_0x783e('0x14')](_0x783e('0x12'),auth['isAuthenticated'](),controller[_0x783e('0x16')]);router[_0x783e('0x17')](_0x783e('0xc'),auth['isAuthenticated'](),controller[_0x783e('0x18')]);router[_0x783e('0x19')](_0x783e('0xc'),auth['isAuthenticated'](),controller[_0x783e('0x1a')]);module[_0x783e('0x1b')]=router;
\ No newline at end of file
index 2ea3c8a..1edfa87 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(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2b4411,_0x2625ed){_0x2b4411=_0x2b4411-0x0;var _0x8e41ef=_0xa9e0[_0x2b4411];return _0x8e41ef;};'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(_0x513aa5,_0x1fba79){var _0x1a1a7c=function(_0x240e3f){while(--_0x240e3f){_0x513aa5['push'](_0x513aa5['shift']());}};_0x1a1a7c(++_0x1fba79);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2763f2,_0x416af8){_0x2763f2=_0x2763f2-0x0;var _0x3ef471=_0xa9e0[_0x2763f2];return _0x3ef471;};'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 0b804a1..0f7fb80 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3edb=['transcribeName','transcribeStatus','TranscriptionJobStatus','findOne','secrets','Voice\x20Recording\x20not\x20found','transcribeAccountId','Transcribe\x20not\x20configured','runSentiment','sentimentAccountId','sentimentRegion','language','Sentiment\x20Analysis\x20not\x20configured','CloudProvider','Cloud\x20Provider\x20not\x20available','data1','data2','Cloud\x20Provider\x20not\x20configured','transcribeRegion','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20not\x20available','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20available','IN_PROGRESS','tempSentiment','updateAttributes','downloadTranscribe','fileText','/server/files/transcribes/transcribe_','.txt','Transcript\x20not\x20available','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','papaparse','aws-sdk','uuid/v4','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','undefined','limit','count','offset','set','Content-Range','apply','reject','save','destroy','then','error','stack','name','send','index','map','rawAttributes','fieldName','model','differenceBy','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','filter','where','merge','type','VIRTUAL','options','includeAll','include','VoiceRecording','rows','catch','show','keys','find','create','body','update','params','describe','download','../../components/encryptor','uniqueid','value','format','%s.cypher','existsSync','recording','Sequelize','ValidationError','VoiceRecording\x20not\x20found','filename','unlink','message','Not\x20found','downloads','sequelize','col','token','push','$and','decryptFile','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','isNil','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','listBuckets','createBucket','upload','TranscribeService','startTranscriptionJob','[RUNTRANSCRIPT][%d]\x20Starting\x20voice\x20recording\x20upload\x20in\x20bucket\x20%s','basename','readFileSync','[RUNTRANSCRIPT][%d]\x20Voice\x20recording\x20uploaded\x20in\x20bucket\x20%s\x20(%s)','bucket','Bucket','Location','[RUNTRANSCRIPT][%d]\x20Sending\x20transcribe\x20request','[RUNTRANSCRIPT][%d]\x20Transcription\x20job\x20%s\x20created','TranscriptionJob','TranscriptionJobName'];(function(_0x1d10cb,_0x369746){var _0x3efe9a=function(_0x44878b){while(--_0x44878b){_0x1d10cb['push'](_0x1d10cb['shift']());}};_0x3efe9a(++_0x369746);}(_0x3edb,0xb7));var _0xb3ed=function(_0x376b45,_0x5964fb){_0x376b45=_0x376b45-0x0;var _0x2341b3=_0x3edb[_0x376b45];return _0x2341b3;};'use strict';var emlformat=require(_0xb3ed('0x0'));var rimraf=require(_0xb3ed('0x1'));var zipdir=require(_0xb3ed('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xb3ed('0x3'));var moment=require(_0xb3ed('0x4'));var BPromise=require(_0xb3ed('0x5'));var Mustache=require('mustache');var util=require(_0xb3ed('0x6'));var path=require(_0xb3ed('0x7'));var sox=require(_0xb3ed('0x8'));var csv=require(_0xb3ed('0x9'));var ejs=require(_0xb3ed('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb3ed('0xb'));var squel=require(_0xb3ed('0xc'));var crypto=require('crypto');var jsforce=require(_0xb3ed('0xd'));var deskjs=require(_0xb3ed('0xe'));var toCsv=require(_0xb3ed('0x9'));var querystring=require(_0xb3ed('0xf'));var Papa=require(_0xb3ed('0x10'));var AWS=require(_0xb3ed('0x11'));var uuidv4=require(_0xb3ed('0x12'));var Redis=require(_0xb3ed('0x13'));var authService=require(_0xb3ed('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0xb3ed('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xb3ed('0x16'))(_0xb3ed('0x17'));var utils=require(_0xb3ed('0x18'));var config=require(_0xb3ed('0x19'));var licenseUtil=require(_0xb3ed('0x1a'));var db=require(_0xb3ed('0x1b'))['db'];function respondWithStatusCode(_0x153e7d,_0x20adf4){_0x20adf4=_0x20adf4||0xcc;return function(_0x4e0e0f){if(_0x4e0e0f){return _0x153e7d[_0xb3ed('0x1c')](_0x20adf4);}return _0x153e7d[_0xb3ed('0x1d')](_0x20adf4)[_0xb3ed('0x1e')]();};}function respondWithResult(_0x3442ff,_0xeb74e){_0xeb74e=_0xeb74e||0xc8;return function(_0x1bd70f){if(_0x1bd70f){return _0x3442ff[_0xb3ed('0x1d')](_0xeb74e)['json'](_0x1bd70f);}};}function respondWithFilteredResult(_0x3ca6e5,_0x492e2a){return function(_0x2558ba){if(_0x2558ba){var _0x23b14d=typeof _0x492e2a['offset']===_0xb3ed('0x1f')&&typeof _0x492e2a[_0xb3ed('0x20')]===_0xb3ed('0x1f');var _0x1d1bc8=_0x2558ba[_0xb3ed('0x21')];var _0x1a5bd8=_0x23b14d?0x0:_0x492e2a[_0xb3ed('0x22')];var _0x475f7=_0x23b14d?_0x2558ba['count']:_0x492e2a[_0xb3ed('0x22')]+_0x492e2a['limit'];var _0x4f937b;if(_0x475f7>=_0x1d1bc8){_0x475f7=_0x1d1bc8;_0x4f937b=0xc8;}else{_0x4f937b=0xce;}_0x3ca6e5[_0xb3ed('0x1d')](_0x4f937b);return _0x3ca6e5[_0xb3ed('0x23')](_0xb3ed('0x24'),_0x1a5bd8+'-'+_0x475f7+'/'+_0x1d1bc8)['json'](_0x2558ba);}return null;};}function patchUpdates(_0x1563e0){return function(_0x2ae697){try{jsonpatch[_0xb3ed('0x25')](_0x2ae697,_0x1563e0,!![]);}catch(_0xd67cda){return BPromise[_0xb3ed('0x26')](_0xd67cda);}return _0x2ae697[_0xb3ed('0x27')]();};}function saveUpdates(_0xd70785,_0x4abdef){return function(_0x2df873){if(_0x2df873){return _0x2df873['update'](_0xd70785)['then'](function(_0x4f31c0){return _0x4f31c0;});}return null;};}function removeEntity(_0x2f8ab2,_0x787a69){return function(_0x1be488){if(_0x1be488){return _0x1be488[_0xb3ed('0x28')]()[_0xb3ed('0x29')](function(){_0x2f8ab2['status'](0xcc)[_0xb3ed('0x1e')]();});}};}function handleEntityNotFound(_0x5eaf74,_0x2f8c09){return function(_0x596209){if(!_0x596209){_0x5eaf74[_0xb3ed('0x1c')](0x194);}return _0x596209;};}function handleError(_0x18f7f8,_0x1db409){_0x1db409=_0x1db409||0x1f4;return function(_0x32ac81){logger[_0xb3ed('0x2a')](_0x32ac81[_0xb3ed('0x2b')]);if(_0x32ac81['name']){delete _0x32ac81[_0xb3ed('0x2c')];}_0x18f7f8['status'](_0x1db409)[_0xb3ed('0x2d')](_0x32ac81);};}exports[_0xb3ed('0x2e')]=function(_0x5335c1,_0x21a3e9){var _0x60ce33={},_0x1db0d1={},_0xd622b3={'count':0x0,'rows':[]};var _0x18f143=_[_0xb3ed('0x2f')](db['VoiceRecording'][_0xb3ed('0x30')],function(_0x61c5c){return{'name':_0x61c5c[_0xb3ed('0x31')],'type':_0x61c5c['type']['key']};});_0x1db0d1[_0xb3ed('0x32')]=_[_0xb3ed('0x33')](_['map'](_0x18f143,'name'),['format']);_0x1db0d1['query']=_['keys'](_0x5335c1[_0xb3ed('0x34')]);_0x1db0d1[_0xb3ed('0x35')]=_[_0xb3ed('0x36')](_0x1db0d1[_0xb3ed('0x32')],_0x1db0d1[_0xb3ed('0x34')]);_0x60ce33[_0xb3ed('0x37')]=_[_0xb3ed('0x36')](_0x1db0d1[_0xb3ed('0x32')],qs[_0xb3ed('0x38')](_0x5335c1[_0xb3ed('0x34')][_0xb3ed('0x38')]));_0x60ce33[_0xb3ed('0x37')]=_0x60ce33[_0xb3ed('0x37')][_0xb3ed('0x39')]?_0x60ce33[_0xb3ed('0x37')]:_0x1db0d1['model'];if(!_0x5335c1[_0xb3ed('0x34')][_0xb3ed('0x3a')](_0xb3ed('0x3b'))){_0x60ce33[_0xb3ed('0x20')]=qs[_0xb3ed('0x20')](_0x5335c1[_0xb3ed('0x34')][_0xb3ed('0x20')]);_0x60ce33[_0xb3ed('0x22')]=qs[_0xb3ed('0x22')](_0x5335c1['query']['offset']);}_0x60ce33['order']=qs[_0xb3ed('0x3c')](_0x5335c1[_0xb3ed('0x34')][_0xb3ed('0x3c')]);_0x60ce33['where']=qs['filters'](_['pick'](_0x5335c1[_0xb3ed('0x34')],_0x1db0d1[_0xb3ed('0x35')]),_0x18f143);if(_0x5335c1['query'][_0xb3ed('0x3d')]){_0x60ce33[_0xb3ed('0x3e')]=_[_0xb3ed('0x3f')](_0x60ce33[_0xb3ed('0x3e')],{'$or':_['map'](_0x18f143,function(_0x16176c){if(_0x16176c[_0xb3ed('0x40')]!==_0xb3ed('0x41')){var _0x575a73={};_0x575a73[_0x16176c[_0xb3ed('0x2c')]]={'$like':'%'+_0x5335c1[_0xb3ed('0x34')]['filter']+'%'};return _0x575a73;}})});}_0x60ce33=_[_0xb3ed('0x3f')]({},_0x60ce33,_0x5335c1[_0xb3ed('0x42')]);var _0x211f56={'where':_0x60ce33[_0xb3ed('0x3e')]};return db['VoiceRecording'][_0xb3ed('0x21')](_0x211f56)[_0xb3ed('0x29')](function(_0x4d47bf){_0xd622b3[_0xb3ed('0x21')]=_0x4d47bf;if(_0x5335c1['query'][_0xb3ed('0x43')]){_0x60ce33[_0xb3ed('0x44')]=[{'all':!![]}];}return db[_0xb3ed('0x45')]['findAll'](_0x60ce33);})['then'](function(_0x233493){_0xd622b3[_0xb3ed('0x46')]=_0x233493;return _0xd622b3;})[_0xb3ed('0x29')](respondWithFilteredResult(_0x21a3e9,_0x60ce33))[_0xb3ed('0x47')](handleError(_0x21a3e9,null));};exports[_0xb3ed('0x48')]=function(_0x583de6,_0x56dde0){var _0x307fdf={'raw':![],'where':{'id':_0x583de6['params']['id']}},_0xbc1e25={};_0xbc1e25['model']=_['keys'](db[_0xb3ed('0x45')]['rawAttributes']);_0xbc1e25[_0xb3ed('0x34')]=_[_0xb3ed('0x49')](_0x583de6[_0xb3ed('0x34')]);_0xbc1e25[_0xb3ed('0x35')]=_['intersection'](_0xbc1e25[_0xb3ed('0x32')],_0xbc1e25[_0xb3ed('0x34')]);_0x307fdf[_0xb3ed('0x37')]=_[_0xb3ed('0x36')](_0xbc1e25[_0xb3ed('0x32')],qs[_0xb3ed('0x38')](_0x583de6['query'][_0xb3ed('0x38')]));_0x307fdf['attributes']=_0x307fdf[_0xb3ed('0x37')]['length']?_0x307fdf[_0xb3ed('0x37')]:_0xbc1e25[_0xb3ed('0x32')];if(_0x583de6[_0xb3ed('0x34')]['includeAll']){_0x307fdf[_0xb3ed('0x44')]=[{'all':!![]}];}_0x307fdf=_[_0xb3ed('0x3f')]({},_0x307fdf,_0x583de6[_0xb3ed('0x42')]);return db[_0xb3ed('0x45')][_0xb3ed('0x4a')](_0x307fdf)[_0xb3ed('0x29')](handleEntityNotFound(_0x56dde0,null))[_0xb3ed('0x29')](respondWithResult(_0x56dde0,null))[_0xb3ed('0x47')](handleError(_0x56dde0,null));};exports['create']=function(_0x9d984f,_0xf41532){return db[_0xb3ed('0x45')][_0xb3ed('0x4b')](_0x9d984f[_0xb3ed('0x4c')],{})['then'](respondWithResult(_0xf41532,0xc9))[_0xb3ed('0x47')](handleError(_0xf41532,null));};exports[_0xb3ed('0x4d')]=function(_0x2ad530,_0x4fc9d0){if(_0x2ad530[_0xb3ed('0x4c')]['id']){delete _0x2ad530[_0xb3ed('0x4c')]['id'];}return db['VoiceRecording'][_0xb3ed('0x4a')]({'where':{'id':_0x2ad530[_0xb3ed('0x4e')]['id']}})['then'](handleEntityNotFound(_0x4fc9d0,null))['then'](saveUpdates(_0x2ad530['body'],null))['then'](respondWithResult(_0x4fc9d0,null))[_0xb3ed('0x47')](handleError(_0x4fc9d0,null));};exports[_0xb3ed('0x4f')]=function(_0x346009,_0x43cbef){return db[_0xb3ed('0x45')]['describe']()[_0xb3ed('0x29')](respondWithResult(_0x43cbef,null))[_0xb3ed('0x47')](handleError(_0x43cbef,null));};exports[_0xb3ed('0x50')]=function(_0x1018c6,_0x1b7839,_0x36cefb){var _0x321f3c=require(_0xb3ed('0x51'));var _0x1af27f=![];var _0x13bdba={};if(_0x1018c6[_0xb3ed('0x34')][_0xb3ed('0x40')]&&_0x1018c6[_0xb3ed('0x34')][_0xb3ed('0x40')]==='uniqueid'){_0x13bdba[_0xb3ed('0x52')]=_0x1018c6[_0xb3ed('0x4e')]['id'];}else{_0x13bdba['id']=_0x1018c6[_0xb3ed('0x4e')]['id'];}return db[_0xb3ed('0x45')][_0xb3ed('0x4a')]({'where':_0x13bdba,'attributes':['id','value'],'raw':!![]})[_0xb3ed('0x29')](handleEntityNotFound(_0x1b7839,null))['then'](function(_0x171254){if(_0x171254){var _0x2370ce=_0x171254[_0xb3ed('0x53')];var _0x15e9b9=util[_0xb3ed('0x54')](_0xb3ed('0x55'),_0x2370ce);if(fs[_0xb3ed('0x56')](_0x15e9b9)){_0x1af27f=!![];return _0x321f3c['decryptFile'](_0x15e9b9,_0x2370ce,config['secrets'][_0xb3ed('0x57')])[_0xb3ed('0x29')](function(){return _0x171254;});}return _0x171254;}})[_0xb3ed('0x29')](function(_0x55d28d){if(_0x55d28d){var _0x1e0e90=_0x55d28d[_0xb3ed('0x53')];if(!fs[_0xb3ed('0x56')](_0x1e0e90)){throw new db[(_0xb3ed('0x58'))][(_0xb3ed('0x59'))](_0xb3ed('0x5a'));}if(_0x55d28d[_0xb3ed('0x5b')]){return _0x1b7839['download'](_0x1e0e90,_0x55d28d[_0xb3ed('0x5b')]+path['extname'](_0x1e0e90),function(){if(_0x1af27f){fs[_0xb3ed('0x5c')](_0x1e0e90);}});}else{return _0x1b7839[_0xb3ed('0x50')](_0x1e0e90,function(_0x4a99ef){if(_0x1af27f){fs[_0xb3ed('0x5c')](_0x1e0e90);}});}}})[_0xb3ed('0x47')](function(_0x14ce36){if(_0x14ce36[_0xb3ed('0x5d')]===_0xb3ed('0x5a')){_0x1b7839[_0xb3ed('0x1d')](0x194)[_0xb3ed('0x2d')](_0xb3ed('0x5e'));}else{return handleError(_0x1b7839,null);}});};exports[_0xb3ed('0x5f')]=function(_0x2981b3,_0x199639,_0x3b71fe){var _0x19ec08=require(_0xb3ed('0x51'));var _0x1f3b12=![];var _0x41a7a8={'$and':[db[_0xb3ed('0x60')]['where'](db[_0xb3ed('0x60')]['fn']('MD5',db[_0xb3ed('0x60')][_0xb3ed('0x61')](_0xb3ed('0x52'))),_0x2981b3[_0xb3ed('0x34')][_0xb3ed('0x62')])]};if(_0x2981b3[_0xb3ed('0x34')][_0xb3ed('0x40')]&&_0x2981b3['query'][_0xb3ed('0x40')]==='uniqueid'){_0x41a7a8['$and'][_0xb3ed('0x63')]({'uniqueid':_0x2981b3[_0xb3ed('0x4e')]['id']});}else{_0x41a7a8[_0xb3ed('0x64')][_0xb3ed('0x63')]({'id':_0x2981b3[_0xb3ed('0x4e')]['id']});}return db[_0xb3ed('0x45')][_0xb3ed('0x4a')]({'where':_0x41a7a8,'attributes':['id',_0xb3ed('0x53')],'raw':!![]})['then'](handleEntityNotFound(_0x199639,null))[_0xb3ed('0x29')](function(_0x5178d5){if(_0x5178d5){var _0x514405=util[_0xb3ed('0x54')]('%s.cypher',_0x5178d5[_0xb3ed('0x53')]);if(fs[_0xb3ed('0x56')](_0x514405)){_0x1f3b12=!![];return _0x19ec08[_0xb3ed('0x65')](_0x514405,_0x5178d5['value'],config['secrets'][_0xb3ed('0x57')])[_0xb3ed('0x29')](function(){return _0x5178d5;});}return _0x5178d5;}})[_0xb3ed('0x29')](function(_0x472b9c){if(_0x472b9c){if(!fs['existsSync'](_0x472b9c[_0xb3ed('0x53')])){throw new db[(_0xb3ed('0x58'))]['ValidationError'](_0xb3ed('0x5a'));}if(_0x472b9c[_0xb3ed('0x5b')]){return _0x199639['download'](_0x472b9c[_0xb3ed('0x53')],_0x472b9c[_0xb3ed('0x5b')]+path['extname'](_0x472b9c['value']),function(){if(_0x1f3b12){fs[_0xb3ed('0x5c')](_0x472b9c[_0xb3ed('0x53')]);}});}else{return _0x199639['download'](_0x472b9c[_0xb3ed('0x53')],function(_0x5c8c9f){if(_0x1f3b12){fs[_0xb3ed('0x5c')](_0x472b9c[_0xb3ed('0x53')]);}});}}})[_0xb3ed('0x47')](handleError(_0x199639,null));};exports[_0xb3ed('0x28')]=function(_0x57044d,_0x5e3999){return db[_0xb3ed('0x45')]['find']({'where':{'id':_0x57044d[_0xb3ed('0x4e')]['id']}})['then'](function(_0x55d311){if(_['isNil'](_0x55d311)){throw new ReferenceError(_0xb3ed('0x66'));}return _0x55d311;})[_0xb3ed('0x29')](function(_0x133fd7){var _0x37bc16=_0x133fd7[_0xb3ed('0x53')];logger[_0xb3ed('0x67')](_0xb3ed('0x68'),_0x37bc16);if(!_[_0xb3ed('0x69')](_0x133fd7[_0xb3ed('0x53')])&&fs[_0xb3ed('0x56')](_0x37bc16)){logger[_0xb3ed('0x67')]('File:\x20\x22'+_0x37bc16+_0xb3ed('0x6a'));fs[_0xb3ed('0x6b')](_0x37bc16);}_0x37bc16=_0x37bc16+_0xb3ed('0x6c');if(!_[_0xb3ed('0x69')](_0x133fd7[_0xb3ed('0x53')])&&fs[_0xb3ed('0x56')](_0x37bc16)){logger[_0xb3ed('0x67')]('File:\x20\x22'+_0x37bc16+_0xb3ed('0x6a'));fs[_0xb3ed('0x6b')](_0x37bc16);}return _0x133fd7;})['then'](function(_0x16e7e2){if(!_0x16e7e2)throw new InternalError();return _0x16e7e2[_0xb3ed('0x28')]();})['then'](function(){_0x5e3999[_0xb3ed('0x1d')](0xcc)[_0xb3ed('0x1e')]();})[_0xb3ed('0x47')](handleError(_0x5e3999,null));};function getBucketslist(_0xcc71da,_0x514f64,_0x3ac7c9){return new Promise(function(_0x15ade8,_0x2e89a4){var _0x461867=new AWS['S3']({'accessKeyId':_0x514f64,'secretAccessKey':_0xcc71da,'region':_0x3ac7c9});_0x461867[_0xb3ed('0x6d')]({},function(_0x50267e,_0x3d860e){if(_0x50267e){return _0x2e89a4(_0x50267e);}else{return _0x15ade8(_0x3d860e);}});});}function createBucket(_0x51ab55,_0x1c9c56,_0x579888,_0x9b67fc){return new Promise(function(_0x2d87c5,_0x2dc0a9){var _0x15a834=new AWS['S3']({'accessKeyId':_0x1c9c56,'secretAccessKey':_0x51ab55,'region':_0x579888});_0x15a834[_0xb3ed('0x6e')]({'Bucket':_0x9b67fc},function(_0x118352,_0x143eb6){if(_0x118352){return _0x2dc0a9(_0x118352);}else{return _0x2d87c5(_0x143eb6);}});});}function uploadFile(_0x5bf6b7,_0x5989e6,_0x4d6399,_0x142171,_0x443460,_0x24ae1d){return new Promise(function(_0x40d8ba,_0xebd0ad){var _0x58481f=new AWS['S3']({'accessKeyId':_0x5989e6,'secretAccessKey':_0x5bf6b7,'region':_0x4d6399});_0x58481f[_0xb3ed('0x6f')]({'Bucket':_0x142171,'Key':_0x443460,'Body':_0x24ae1d},function(_0x1d1e29,_0x44b5c9){if(_0x1d1e29){return _0xebd0ad(_0x1d1e29);}else{return _0x40d8ba(_0x44b5c9);}});});}function startTranscribe(_0x324b89,_0x3d08da,_0x3e980b,_0x50e4d6,_0x241097,_0x1d2dcd){return new Promise(function(_0x1daaa2,_0x4f7c13){var _0x575e28=new AWS[(_0xb3ed('0x70'))]({'accessKeyId':_0x3d08da,'secretAccessKey':_0x324b89,'region':_0x3e980b});_0x575e28[_0xb3ed('0x71')]({'TranscriptionJobName':_0x50e4d6,'LanguageCode':_0x241097,'Media':{'MediaFileUri':_0x1d2dcd}},function(_0x4237b7,_0x260b11){if(_0x4237b7){return _0x4f7c13(_0x4237b7);}else{return _0x1daaa2(_0x260b11);}});});}function transcribe(_0x21b8d3,_0x2f3444,_0x4dcd25,_0x6f92a8,_0x50f380,_0x513a55,_0x1b52c9){return new Promise(function(_0x3f7024,_0x2676c8){var _0x17c099={};logger[_0xb3ed('0x67')](util['format'](_0xb3ed('0x72'),_0x21b8d3,_0x50f380));return uploadFile(_0x2f3444,_0x4dcd25,_0x6f92a8,_0x50f380,path[_0xb3ed('0x73')](_0x513a55),fs[_0xb3ed('0x74')](_0x513a55))['then'](function(_0x29932f){logger[_0xb3ed('0x67')](util[_0xb3ed('0x54')](_0xb3ed('0x75'),_0x21b8d3,_0x50f380,_0x29932f['Location']));_0x17c099[_0xb3ed('0x76')]=_0x29932f[_0xb3ed('0x77')];_0x17c099['location']=_0x29932f[_0xb3ed('0x78')];logger[_0xb3ed('0x67')](util['format'](_0xb3ed('0x79'),_0x21b8d3));return startTranscribe(_0x2f3444,_0x4dcd25,_0x6f92a8,uuidv4(),_0x1b52c9,_0x29932f[_0xb3ed('0x78')]);})[_0xb3ed('0x29')](function(_0x403fe7){logger[_0xb3ed('0x67')](util[_0xb3ed('0x54')](_0xb3ed('0x7a'),_0x21b8d3,_0x403fe7[_0xb3ed('0x7b')][_0xb3ed('0x7c')]));_0x17c099[_0xb3ed('0x7d')]=_0x403fe7[_0xb3ed('0x7b')][_0xb3ed('0x7c')];_0x17c099[_0xb3ed('0x7e')]=_0x403fe7[_0xb3ed('0x7b')][_0xb3ed('0x7f')];return _0x3f7024(_0x17c099);})['catch'](function(_0x32f19a){return _0x2676c8(_0x32f19a);});});}exports['runTranscribe']=function(_0x4d00d0,_0x2bb6f2,_0x154ea3){var _0x59e115;var _0x315ebe;var _0x442b0a;var _0x5d158e=require(_0xb3ed('0x51'));return db[_0xb3ed('0x45')][_0xb3ed('0x80')]({'where':{'id':_0x4d00d0[_0xb3ed('0x4e')]['id']}})['then'](function(_0x4cffdf){if(_0x4cffdf){var _0x15e3b6=util[_0xb3ed('0x54')](_0xb3ed('0x55'),_0x4cffdf['value']);if(fs[_0xb3ed('0x56')](_0x15e3b6)){cypher=!![];return _0x5d158e[_0xb3ed('0x65')](_0x15e3b6,_0x4cffdf['value'],config[_0xb3ed('0x81')][_0xb3ed('0x57')])[_0xb3ed('0x29')](function(){return _0x4cffdf;});}return _0x4cffdf;}})['then'](function(_0x40ef94){if(!_0x40ef94){throw new db['Sequelize'][(_0xb3ed('0x59'))](_0xb3ed('0x82'));}_0x315ebe=_0x40ef94;return db['Setting'][_0xb3ed('0x80')]({'where':{'id':0x1}});})[_0xb3ed('0x29')](handleEntityNotFound(_0x2bb6f2,null))[_0xb3ed('0x29')](function(_0xb29ef1){if(_0xb29ef1){_0x59e115=_0xb29ef1;if(!_0x59e115['transcribe']||!_0x59e115[_0xb3ed('0x83')]||!_0x59e115['transcribeRegion']||!_0x59e115['language']||!_0x59e115[_0xb3ed('0x76')]){throw new db['Sequelize']['ValidationError'](_0xb3ed('0x84'));}if(_0x4d00d0[_0xb3ed('0x4c')][_0xb3ed('0x85')]&&(!_0x59e115['sentiment']||!_0x59e115[_0xb3ed('0x86')]||!_0x59e115[_0xb3ed('0x87')]||!_0x59e115[_0xb3ed('0x88')]||!_0x59e115[_0xb3ed('0x76')])){throw new db['Sequelize'][(_0xb3ed('0x59'))](_0xb3ed('0x89'));}return db[_0xb3ed('0x8a')][_0xb3ed('0x80')]({'where':{'id':_0x59e115[_0xb3ed('0x83')]}});}})[_0xb3ed('0x29')](function(_0x504928){if(!_0x504928){throw new db['Sequelize'][(_0xb3ed('0x59'))](_0xb3ed('0x8b'));}if(!_0x504928[_0xb3ed('0x8c')]||!_0x504928[_0xb3ed('0x8d')]){throw new db['Sequelize'][(_0xb3ed('0x59'))](_0xb3ed('0x8e'));}_0x442b0a=_0x504928;return getBucketslist(_0x442b0a[_0xb3ed('0x8c')],_0x442b0a[_0xb3ed('0x8d')],_0x59e115[_0xb3ed('0x8f')]);})[_0xb3ed('0x29')](function(_0x98ff71){if(_0x98ff71&&_0x98ff71['Buckets']){var _0x13d6c2=_[_0xb3ed('0x4a')](_0x98ff71['Buckets'],function(_0x222726){return _0x222726['Name']===_0x59e115[_0xb3ed('0x76')];});if(!_0x13d6c2){logger[_0xb3ed('0x67')](util[_0xb3ed('0x54')](_0xb3ed('0x90'),_0x4d00d0[_0xb3ed('0x4e')]['id'],_0x59e115[_0xb3ed('0x76')]));return createBucket(_0x442b0a[_0xb3ed('0x8c')],_0x442b0a[_0xb3ed('0x8d')],_0x59e115[_0xb3ed('0x8f')],_0x59e115[_0xb3ed('0x76')]);}logger['info'](util[_0xb3ed('0x54')](_0xb3ed('0x91'),_0x4d00d0[_0xb3ed('0x4e')]['id'],_0x59e115[_0xb3ed('0x76')]));return;}})[_0xb3ed('0x29')](function(_0x250418){if(_0x315ebe[_0xb3ed('0x7e')]==='NEW'){return transcribe(_0x4d00d0['params']['id'],_0x442b0a[_0xb3ed('0x8c')],_0x442b0a[_0xb3ed('0x8d')],_0x59e115['transcribeRegion'],_0x59e115[_0xb3ed('0x76')],_0x315ebe['value'],_0x59e115[_0xb3ed('0x88')]);}else{logger[_0xb3ed('0x67')](util['format']('[RUNTRANSCRIPT][%d]\x20Transcript\x20action\x20already\x20requested',_0x4d00d0[_0xb3ed('0x4e')]['id']));return{'transcribeStatus':_0xb3ed('0x92')};}})[_0xb3ed('0x29')](function(_0x9e7052){if(_0x9e7052){_0x9e7052[_0xb3ed('0x93')]=_0x4d00d0[_0xb3ed('0x4c')][_0xb3ed('0x85')];return _0x315ebe[_0xb3ed('0x94')](_0x9e7052);}})[_0xb3ed('0x29')](respondWithResult(_0x2bb6f2,null))[_0xb3ed('0x47')](handleError(_0x2bb6f2,null));};function writeFile(_0x27964e,_0x22dd90){return new Promise(function(_0x2d0000,_0x2dfb01){fs['writeFile'](_0x22dd90,_0x27964e,function(_0x11c58a,_0x17d9cd){if(_0x11c58a){return _0x2dfb01(_0x11c58a);}else{return _0x2d0000(_0x17d9cd);}});});}exports[_0xb3ed('0x95')]=function(_0x4ef9d6,_0x105145,_0x8593f){return db[_0xb3ed('0x45')][_0xb3ed('0x80')]({'where':{'id':_0x4ef9d6['params']['id']}})[_0xb3ed('0x29')](handleEntityNotFound(_0x105145))['then'](function(_0x481e6c){if(_0x481e6c&&_0x481e6c[_0xb3ed('0x96')]){var _0x2a6be7=_0x481e6c[_0xb3ed('0x96')];var _0x4414cc=config['root']+_0xb3ed('0x97')+_0x481e6c['id']+_0xb3ed('0x98');if(fs[_0xb3ed('0x56')](_0x4414cc)){return _0x4414cc;}return writeFile(_0x2a6be7,_0x4414cc)[_0xb3ed('0x29')](function(){return _0x4414cc;});}else{throw new db['Sequelize'][(_0xb3ed('0x59'))](_0xb3ed('0x99'));}})[_0xb3ed('0x29')](function(_0x229578){return _0x105145[_0xb3ed('0x50')](_0x229578);})[_0xb3ed('0x47')](handleError(_0x105145));};
\ No newline at end of file
+var _0x0557=['format','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','offset','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','update','describe','download','../../components/encryptor','uniqueid','value','%s.cypher','existsSync','decryptFile','secrets','recording','Sequelize','ValidationError','filename','extname','unlink','message','Not\x20found','sequelize','MD5','col','$and','push','VoiceRecording\x20not\x20found','isNil','Entity\x20not\x20found','cancellazione\x20fisica\x20documento\x20%s','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','.cypher','info','end','listBuckets','createBucket','upload','TranscribeService','startTranscriptionJob','basename','readFileSync','[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','transcribeStatus','TranscriptionJobStatus','findOne','Voice\x20Recording\x20not\x20found','Setting','transcribe','transcribeRegion','language','Transcribe\x20not\x20configured','runSentiment','sentiment','sentimentAccountId','sentimentRegion','CloudProvider','transcribeAccountId','Cloud\x20Provider\x20not\x20available','data1','data2','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','updateAttributes','writeFile','downloadTranscribe','fileText','/server/files/transcribes/transcribe_','.txt','Transcript\x20not\x20available','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','querystring','papaparse','aws-sdk','uuid/v4','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','limit','undefined','count','set','Content-Range','apply','reject','save','destroy','then','name','send','index','map','VoiceRecording','rawAttributes','fieldName','model'];(function(_0xffa4af,_0x37bf12){var _0x49b0f2=function(_0x529404){while(--_0x529404){_0xffa4af['push'](_0xffa4af['shift']());}};_0x49b0f2(++_0x37bf12);}(_0x0557,0x6f));var _0x7055=function(_0x252606,_0x58f158){_0x252606=_0x252606-0x0;var _0x28d340=_0x0557[_0x252606];return _0x28d340;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7055('0x0'));var zipdir=require(_0x7055('0x1'));var jsonpatch=require(_0x7055('0x2'));var rp=require(_0x7055('0x3'));var moment=require(_0x7055('0x4'));var BPromise=require(_0x7055('0x5'));var Mustache=require(_0x7055('0x6'));var util=require(_0x7055('0x7'));var path=require(_0x7055('0x8'));var sox=require(_0x7055('0x9'));var csv=require('to-csv');var ejs=require(_0x7055('0xa'));var fs=require('fs');var fs_extra=require(_0x7055('0xb'));var _=require(_0x7055('0xc'));var squel=require(_0x7055('0xd'));var crypto=require(_0x7055('0xe'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x7055('0xf'));var Papa=require(_0x7055('0x10'));var AWS=require(_0x7055('0x11'));var uuidv4=require(_0x7055('0x12'));var Redis=require(_0x7055('0x13'));var authService=require(_0x7055('0x14'));var qs=require(_0x7055('0x15'));var as=require(_0x7055('0x16'));var hardwareService=require(_0x7055('0x17'));var logger=require(_0x7055('0x18'))(_0x7055('0x19'));var utils=require(_0x7055('0x1a'));var config=require('../../config/environment');var licenseUtil=require(_0x7055('0x1b'));var db=require(_0x7055('0x1c'))['db'];function respondWithStatusCode(_0x106475,_0xd1efb6){_0xd1efb6=_0xd1efb6||0xcc;return function(_0x2edcc5){if(_0x2edcc5){return _0x106475[_0x7055('0x1d')](_0xd1efb6);}return _0x106475[_0x7055('0x1e')](_0xd1efb6)['end']();};}function respondWithResult(_0x3de85,_0x1c5c61){_0x1c5c61=_0x1c5c61||0xc8;return function(_0x9a0859){if(_0x9a0859){return _0x3de85[_0x7055('0x1e')](_0x1c5c61)[_0x7055('0x1f')](_0x9a0859);}};}function respondWithFilteredResult(_0x24f235,_0x13c9a7){return function(_0x565670){if(_0x565670){var _0x72d285=typeof _0x13c9a7['offset']==='undefined'&&typeof _0x13c9a7[_0x7055('0x20')]===_0x7055('0x21');var _0x927238=_0x565670['count'];var _0x2bcb3d=_0x72d285?0x0:_0x13c9a7['offset'];var _0x5e8d91=_0x72d285?_0x565670[_0x7055('0x22')]:_0x13c9a7['offset']+_0x13c9a7[_0x7055('0x20')];var _0x42ca23;if(_0x5e8d91>=_0x927238){_0x5e8d91=_0x927238;_0x42ca23=0xc8;}else{_0x42ca23=0xce;}_0x24f235[_0x7055('0x1e')](_0x42ca23);return _0x24f235[_0x7055('0x23')](_0x7055('0x24'),_0x2bcb3d+'-'+_0x5e8d91+'/'+_0x927238)[_0x7055('0x1f')](_0x565670);}return null;};}function patchUpdates(_0x5bba75){return function(_0x53000c){try{jsonpatch[_0x7055('0x25')](_0x53000c,_0x5bba75,!![]);}catch(_0x496b12){return BPromise[_0x7055('0x26')](_0x496b12);}return _0x53000c[_0x7055('0x27')]();};}function saveUpdates(_0x439b42,_0x228d4f){return function(_0x15ad86){if(_0x15ad86){return _0x15ad86['update'](_0x439b42)['then'](function(_0x2fea39){return _0x2fea39;});}return null;};}function removeEntity(_0x5cad6a,_0x30d91c){return function(_0x2120ac){if(_0x2120ac){return _0x2120ac[_0x7055('0x28')]()[_0x7055('0x29')](function(){_0x5cad6a[_0x7055('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3565b6,_0x540172){return function(_0x34e064){if(!_0x34e064){_0x3565b6[_0x7055('0x1d')](0x194);}return _0x34e064;};}function handleError(_0x15be5a,_0x57f690){_0x57f690=_0x57f690||0x1f4;return function(_0x3da76b){logger['error'](_0x3da76b['stack']);if(_0x3da76b[_0x7055('0x2a')]){delete _0x3da76b['name'];}_0x15be5a[_0x7055('0x1e')](_0x57f690)[_0x7055('0x2b')](_0x3da76b);};}exports[_0x7055('0x2c')]=function(_0x4dc709,_0xd95a3e){var _0x4a9040={},_0x4b6155={},_0x34a534={'count':0x0,'rows':[]};var _0x3f628e=_[_0x7055('0x2d')](db[_0x7055('0x2e')][_0x7055('0x2f')],function(_0x54a361){return{'name':_0x54a361[_0x7055('0x30')],'type':_0x54a361['type']['key']};});_0x4b6155[_0x7055('0x31')]=_['differenceBy'](_[_0x7055('0x2d')](_0x3f628e,'name'),[_0x7055('0x32')]);_0x4b6155[_0x7055('0x33')]=_[_0x7055('0x34')](_0x4dc709[_0x7055('0x33')]);_0x4b6155[_0x7055('0x35')]=_[_0x7055('0x36')](_0x4b6155['model'],_0x4b6155[_0x7055('0x33')]);_0x4a9040['attributes']=_['intersection'](_0x4b6155[_0x7055('0x31')],qs[_0x7055('0x37')](_0x4dc709[_0x7055('0x33')][_0x7055('0x37')]));_0x4a9040['attributes']=_0x4a9040[_0x7055('0x38')][_0x7055('0x39')]?_0x4a9040[_0x7055('0x38')]:_0x4b6155['model'];if(!_0x4dc709[_0x7055('0x33')][_0x7055('0x3a')]('nolimit')){_0x4a9040[_0x7055('0x20')]=qs['limit'](_0x4dc709[_0x7055('0x33')][_0x7055('0x20')]);_0x4a9040[_0x7055('0x3b')]=qs[_0x7055('0x3b')](_0x4dc709[_0x7055('0x33')][_0x7055('0x3b')]);}_0x4a9040[_0x7055('0x3c')]=qs[_0x7055('0x3d')](_0x4dc709[_0x7055('0x33')][_0x7055('0x3d')]);_0x4a9040[_0x7055('0x3e')]=qs[_0x7055('0x35')](_[_0x7055('0x3f')](_0x4dc709[_0x7055('0x33')],_0x4b6155['filters']),_0x3f628e);if(_0x4dc709[_0x7055('0x33')][_0x7055('0x40')]){_0x4a9040['where']=_[_0x7055('0x41')](_0x4a9040[_0x7055('0x3e')],{'$or':_[_0x7055('0x2d')](_0x3f628e,function(_0x4c8357){if(_0x4c8357[_0x7055('0x42')]!==_0x7055('0x43')){var _0x8d8666={};_0x8d8666[_0x4c8357[_0x7055('0x2a')]]={'$like':'%'+_0x4dc709[_0x7055('0x33')][_0x7055('0x40')]+'%'};return _0x8d8666;}})});}_0x4a9040=_[_0x7055('0x41')]({},_0x4a9040,_0x4dc709[_0x7055('0x44')]);var _0x3b1703={'where':_0x4a9040[_0x7055('0x3e')]};return db[_0x7055('0x2e')][_0x7055('0x22')](_0x3b1703)[_0x7055('0x29')](function(_0x13a6cf){_0x34a534[_0x7055('0x22')]=_0x13a6cf;if(_0x4dc709[_0x7055('0x33')][_0x7055('0x45')]){_0x4a9040[_0x7055('0x46')]=[{'all':!![]}];}return db['VoiceRecording'][_0x7055('0x47')](_0x4a9040);})[_0x7055('0x29')](function(_0x551960){_0x34a534[_0x7055('0x48')]=_0x551960;return _0x34a534;})['then'](respondWithFilteredResult(_0xd95a3e,_0x4a9040))[_0x7055('0x49')](handleError(_0xd95a3e,null));};exports[_0x7055('0x4a')]=function(_0x172c98,_0x287e19){var _0x5228db={'raw':![],'where':{'id':_0x172c98[_0x7055('0x4b')]['id']}},_0x27fa5a={};_0x27fa5a[_0x7055('0x31')]=_[_0x7055('0x34')](db[_0x7055('0x2e')][_0x7055('0x2f')]);_0x27fa5a[_0x7055('0x33')]=_[_0x7055('0x34')](_0x172c98[_0x7055('0x33')]);_0x27fa5a['filters']=_['intersection'](_0x27fa5a['model'],_0x27fa5a[_0x7055('0x33')]);_0x5228db[_0x7055('0x38')]=_['intersection'](_0x27fa5a[_0x7055('0x31')],qs['fields'](_0x172c98[_0x7055('0x33')][_0x7055('0x37')]));_0x5228db[_0x7055('0x38')]=_0x5228db['attributes'][_0x7055('0x39')]?_0x5228db[_0x7055('0x38')]:_0x27fa5a[_0x7055('0x31')];if(_0x172c98[_0x7055('0x33')][_0x7055('0x45')]){_0x5228db[_0x7055('0x46')]=[{'all':!![]}];}_0x5228db=_[_0x7055('0x41')]({},_0x5228db,_0x172c98[_0x7055('0x44')]);return db[_0x7055('0x2e')][_0x7055('0x4c')](_0x5228db)[_0x7055('0x29')](handleEntityNotFound(_0x287e19,null))['then'](respondWithResult(_0x287e19,null))[_0x7055('0x49')](handleError(_0x287e19,null));};exports[_0x7055('0x4d')]=function(_0x10895c,_0x47c879){return db[_0x7055('0x2e')][_0x7055('0x4d')](_0x10895c[_0x7055('0x4e')],{})[_0x7055('0x29')](respondWithResult(_0x47c879,0xc9))[_0x7055('0x49')](handleError(_0x47c879,null));};exports[_0x7055('0x4f')]=function(_0x25a895,_0x56fb42){if(_0x25a895[_0x7055('0x4e')]['id']){delete _0x25a895[_0x7055('0x4e')]['id'];}return db[_0x7055('0x2e')][_0x7055('0x4c')]({'where':{'id':_0x25a895[_0x7055('0x4b')]['id']}})[_0x7055('0x29')](handleEntityNotFound(_0x56fb42,null))[_0x7055('0x29')](saveUpdates(_0x25a895[_0x7055('0x4e')],null))[_0x7055('0x29')](respondWithResult(_0x56fb42,null))[_0x7055('0x49')](handleError(_0x56fb42,null));};exports[_0x7055('0x50')]=function(_0x306735,_0x33f69c){return db['VoiceRecording'][_0x7055('0x50')]()['then'](respondWithResult(_0x33f69c,null))[_0x7055('0x49')](handleError(_0x33f69c,null));};exports[_0x7055('0x51')]=function(_0x1e8bb7,_0x50fca9,_0x82efa){var _0xb8f06=require(_0x7055('0x52'));var _0x3dffc9=![];var _0x36d7aa={};if(_0x1e8bb7[_0x7055('0x33')][_0x7055('0x42')]&&_0x1e8bb7[_0x7055('0x33')]['type']==='uniqueid'){_0x36d7aa[_0x7055('0x53')]=_0x1e8bb7[_0x7055('0x4b')]['id'];}else{_0x36d7aa['id']=_0x1e8bb7[_0x7055('0x4b')]['id'];}return db[_0x7055('0x2e')]['find']({'where':_0x36d7aa,'attributes':['id','value'],'raw':!![]})[_0x7055('0x29')](handleEntityNotFound(_0x50fca9,null))[_0x7055('0x29')](function(_0x6b1aba){if(_0x6b1aba){var _0x29bea2=_0x6b1aba[_0x7055('0x54')];var _0x2e9398=util[_0x7055('0x32')](_0x7055('0x55'),_0x29bea2);if(fs[_0x7055('0x56')](_0x2e9398)){_0x3dffc9=!![];return _0xb8f06[_0x7055('0x57')](_0x2e9398,_0x29bea2,config[_0x7055('0x58')][_0x7055('0x59')])['then'](function(){return _0x6b1aba;});}return _0x6b1aba;}})['then'](function(_0x57c9d1){if(_0x57c9d1){var _0x41834b=_0x57c9d1[_0x7055('0x54')];if(!fs['existsSync'](_0x41834b)){throw new db[(_0x7055('0x5a'))][(_0x7055('0x5b'))]('VoiceRecording\x20not\x20found');}if(_0x57c9d1[_0x7055('0x5c')]){return _0x50fca9['download'](_0x41834b,_0x57c9d1[_0x7055('0x5c')]+path[_0x7055('0x5d')](_0x41834b),function(){if(_0x3dffc9){fs[_0x7055('0x5e')](_0x41834b);}});}else{return _0x50fca9[_0x7055('0x51')](_0x41834b,function(_0x50aff0){if(_0x3dffc9){fs['unlink'](_0x41834b);}});}}})[_0x7055('0x49')](function(_0x5b3939){if(_0x5b3939[_0x7055('0x5f')]==='VoiceRecording\x20not\x20found'){_0x50fca9[_0x7055('0x1e')](0x194)[_0x7055('0x2b')](_0x7055('0x60'));}else{return handleError(_0x50fca9,null);}});};exports['downloads']=function(_0x114012,_0x166fc7,_0x56f841){var _0x3e1a4d=require(_0x7055('0x52'));var _0x1fbad9=![];var _0x1bd113={'$and':[db[_0x7055('0x61')][_0x7055('0x3e')](db[_0x7055('0x61')]['fn'](_0x7055('0x62'),db['sequelize'][_0x7055('0x63')](_0x7055('0x53'))),_0x114012[_0x7055('0x33')]['token'])]};if(_0x114012[_0x7055('0x33')][_0x7055('0x42')]&&_0x114012['query'][_0x7055('0x42')]==='uniqueid'){_0x1bd113[_0x7055('0x64')][_0x7055('0x65')]({'uniqueid':_0x114012['params']['id']});}else{_0x1bd113[_0x7055('0x64')][_0x7055('0x65')]({'id':_0x114012[_0x7055('0x4b')]['id']});}return db[_0x7055('0x2e')]['find']({'where':_0x1bd113,'attributes':['id',_0x7055('0x54')],'raw':!![]})[_0x7055('0x29')](handleEntityNotFound(_0x166fc7,null))[_0x7055('0x29')](function(_0x1644d3){if(_0x1644d3){var _0xca7c0f=util[_0x7055('0x32')](_0x7055('0x55'),_0x1644d3['value']);if(fs[_0x7055('0x56')](_0xca7c0f)){_0x1fbad9=!![];return _0x3e1a4d['decryptFile'](_0xca7c0f,_0x1644d3[_0x7055('0x54')],config[_0x7055('0x58')][_0x7055('0x59')])[_0x7055('0x29')](function(){return _0x1644d3;});}return _0x1644d3;}})[_0x7055('0x29')](function(_0x851689){if(_0x851689){if(!fs['existsSync'](_0x851689['value'])){throw new db[(_0x7055('0x5a'))][(_0x7055('0x5b'))](_0x7055('0x66'));}if(_0x851689[_0x7055('0x5c')]){return _0x166fc7['download'](_0x851689[_0x7055('0x54')],_0x851689[_0x7055('0x5c')]+path[_0x7055('0x5d')](_0x851689['value']),function(){if(_0x1fbad9){fs['unlink'](_0x851689['value']);}});}else{return _0x166fc7['download'](_0x851689[_0x7055('0x54')],function(_0x56c86a){if(_0x1fbad9){fs['unlink'](_0x851689[_0x7055('0x54')]);}});}}})['catch'](handleError(_0x166fc7,null));};exports[_0x7055('0x28')]=function(_0x539f20,_0x52f6e6){return db[_0x7055('0x2e')]['find']({'where':{'id':_0x539f20[_0x7055('0x4b')]['id']}})[_0x7055('0x29')](function(_0x183eec){if(_[_0x7055('0x67')](_0x183eec)){throw new ReferenceError(_0x7055('0x68'));}return _0x183eec;})['then'](function(_0x390f2a){var _0x3ef8d2=_0x390f2a[_0x7055('0x54')];logger['info'](_0x7055('0x69'),_0x3ef8d2);if(!_[_0x7055('0x67')](_0x390f2a[_0x7055('0x54')])&&fs[_0x7055('0x56')](_0x3ef8d2)){logger['info'](_0x7055('0x6a')+_0x3ef8d2+_0x7055('0x6b'));fs['unlinkSync'](_0x3ef8d2);}_0x3ef8d2=_0x3ef8d2+_0x7055('0x6c');if(!_['isNil'](_0x390f2a['value'])&&fs[_0x7055('0x56')](_0x3ef8d2)){logger[_0x7055('0x6d')](_0x7055('0x6a')+_0x3ef8d2+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs['unlinkSync'](_0x3ef8d2);}return _0x390f2a;})['then'](function(_0x1f9200){if(!_0x1f9200)throw new InternalError();return _0x1f9200[_0x7055('0x28')]();})[_0x7055('0x29')](function(){_0x52f6e6['status'](0xcc)[_0x7055('0x6e')]();})[_0x7055('0x49')](handleError(_0x52f6e6,null));};function getBucketslist(_0x47fdaa,_0x36e2b1,_0x8a7f5e){return new Promise(function(_0xb6389a,_0x26c336){var _0x364894=new AWS['S3']({'accessKeyId':_0x36e2b1,'secretAccessKey':_0x47fdaa,'region':_0x8a7f5e});_0x364894[_0x7055('0x6f')]({},function(_0xda8124,_0x19476a){if(_0xda8124){return _0x26c336(_0xda8124);}else{return _0xb6389a(_0x19476a);}});});}function createBucket(_0x1f16ea,_0x1435a6,_0x13d8a0,_0x2dab5b){return new Promise(function(_0x51a56d,_0x58b09d){var _0x4f809e=new AWS['S3']({'accessKeyId':_0x1435a6,'secretAccessKey':_0x1f16ea,'region':_0x13d8a0});_0x4f809e[_0x7055('0x70')]({'Bucket':_0x2dab5b},function(_0x4f8a5e,_0x2cbd3c){if(_0x4f8a5e){return _0x58b09d(_0x4f8a5e);}else{return _0x51a56d(_0x2cbd3c);}});});}function uploadFile(_0x3041e6,_0x59fa1d,_0x41f553,_0x5c5948,_0x42e185,_0x131947){return new Promise(function(_0x45e7fb,_0x58d60e){var _0x3c38ba=new AWS['S3']({'accessKeyId':_0x59fa1d,'secretAccessKey':_0x3041e6,'region':_0x41f553});_0x3c38ba[_0x7055('0x71')]({'Bucket':_0x5c5948,'Key':_0x42e185,'Body':_0x131947},function(_0x2dc4b3,_0x396775){if(_0x2dc4b3){return _0x58d60e(_0x2dc4b3);}else{return _0x45e7fb(_0x396775);}});});}function startTranscribe(_0x4d26e1,_0x1254d2,_0x29e222,_0x14ab6b,_0x2feb92,_0x24dd64){return new Promise(function(_0x40ef75,_0x34ee3f){var _0x5c5d40=new AWS[(_0x7055('0x72'))]({'accessKeyId':_0x1254d2,'secretAccessKey':_0x4d26e1,'region':_0x29e222});_0x5c5d40[_0x7055('0x73')]({'TranscriptionJobName':_0x14ab6b,'LanguageCode':_0x2feb92,'Media':{'MediaFileUri':_0x24dd64}},function(_0x347c21,_0x2223b5){if(_0x347c21){return _0x34ee3f(_0x347c21);}else{return _0x40ef75(_0x2223b5);}});});}function transcribe(_0x1382ca,_0x573846,_0x136ffa,_0x767c5b,_0x1b4f05,_0x527c03,_0x17606d){return new Promise(function(_0x4c51de,_0x3581e5){var _0x4ece11={};logger['info'](util[_0x7055('0x32')]('[RUNTRANSCRIPT][%d]\x20Starting\x20voice\x20recording\x20upload\x20in\x20bucket\x20%s',_0x1382ca,_0x1b4f05));return uploadFile(_0x573846,_0x136ffa,_0x767c5b,_0x1b4f05,path[_0x7055('0x74')](_0x527c03),fs[_0x7055('0x75')](_0x527c03))['then'](function(_0x2bd3bd){logger[_0x7055('0x6d')](util[_0x7055('0x32')](_0x7055('0x76'),_0x1382ca,_0x1b4f05,_0x2bd3bd[_0x7055('0x77')]));_0x4ece11[_0x7055('0x78')]=_0x2bd3bd[_0x7055('0x79')];_0x4ece11[_0x7055('0x7a')]=_0x2bd3bd[_0x7055('0x77')];logger[_0x7055('0x6d')](util[_0x7055('0x32')](_0x7055('0x7b'),_0x1382ca));return startTranscribe(_0x573846,_0x136ffa,_0x767c5b,uuidv4(),_0x17606d,_0x2bd3bd[_0x7055('0x77')]);})[_0x7055('0x29')](function(_0x3fc863){logger[_0x7055('0x6d')](util['format'](_0x7055('0x7c'),_0x1382ca,_0x3fc863[_0x7055('0x7d')][_0x7055('0x7e')]));_0x4ece11[_0x7055('0x7f')]=_0x3fc863[_0x7055('0x7d')][_0x7055('0x7e')];_0x4ece11[_0x7055('0x80')]=_0x3fc863[_0x7055('0x7d')][_0x7055('0x81')];return _0x4c51de(_0x4ece11);})[_0x7055('0x49')](function(_0x390c21){return _0x3581e5(_0x390c21);});});}exports['runTranscribe']=function(_0x7bf1d7,_0x2eacdf,_0x3cdafc){var _0x5a5f89;var _0x5e9863;var _0x1c3918;var _0x44ba2b=require(_0x7055('0x52'));return db[_0x7055('0x2e')][_0x7055('0x82')]({'where':{'id':_0x7bf1d7[_0x7055('0x4b')]['id']}})[_0x7055('0x29')](function(_0x1dad3c){if(_0x1dad3c){var _0x454363=util['format'](_0x7055('0x55'),_0x1dad3c[_0x7055('0x54')]);if(fs[_0x7055('0x56')](_0x454363)){cypher=!![];return _0x44ba2b[_0x7055('0x57')](_0x454363,_0x1dad3c[_0x7055('0x54')],config[_0x7055('0x58')][_0x7055('0x59')])[_0x7055('0x29')](function(){return _0x1dad3c;});}return _0x1dad3c;}})[_0x7055('0x29')](function(_0x1b8cf0){if(!_0x1b8cf0){throw new db[(_0x7055('0x5a'))][(_0x7055('0x5b'))](_0x7055('0x83'));}_0x5e9863=_0x1b8cf0;return db[_0x7055('0x84')]['findOne']({'where':{'id':0x1}});})[_0x7055('0x29')](handleEntityNotFound(_0x2eacdf,null))[_0x7055('0x29')](function(_0x30832f){if(_0x30832f){_0x5a5f89=_0x30832f;if(!_0x5a5f89[_0x7055('0x85')]||!_0x5a5f89['transcribeAccountId']||!_0x5a5f89[_0x7055('0x86')]||!_0x5a5f89[_0x7055('0x87')]||!_0x5a5f89[_0x7055('0x78')]){throw new db[(_0x7055('0x5a'))][(_0x7055('0x5b'))](_0x7055('0x88'));}if(_0x7bf1d7[_0x7055('0x4e')][_0x7055('0x89')]&&(!_0x5a5f89[_0x7055('0x8a')]||!_0x5a5f89[_0x7055('0x8b')]||!_0x5a5f89[_0x7055('0x8c')]||!_0x5a5f89[_0x7055('0x87')]||!_0x5a5f89[_0x7055('0x78')])){throw new db[(_0x7055('0x5a'))][(_0x7055('0x5b'))]('Sentiment\x20Analysis\x20not\x20configured');}return db[_0x7055('0x8d')][_0x7055('0x82')]({'where':{'id':_0x5a5f89[_0x7055('0x8e')]}});}})['then'](function(_0x2f8f44){if(!_0x2f8f44){throw new db[(_0x7055('0x5a'))][(_0x7055('0x5b'))](_0x7055('0x8f'));}if(!_0x2f8f44[_0x7055('0x90')]||!_0x2f8f44['data2']){throw new db['Sequelize'][(_0x7055('0x5b'))]('Cloud\x20Provider\x20not\x20configured');}_0x1c3918=_0x2f8f44;return getBucketslist(_0x1c3918[_0x7055('0x90')],_0x1c3918[_0x7055('0x91')],_0x5a5f89['transcribeRegion']);})[_0x7055('0x29')](function(_0x230262){if(_0x230262&&_0x230262['Buckets']){var _0x7968e2=_[_0x7055('0x4c')](_0x230262[_0x7055('0x92')],function(_0x495501){return _0x495501[_0x7055('0x93')]===_0x5a5f89[_0x7055('0x78')];});if(!_0x7968e2){logger[_0x7055('0x6d')](util['format'](_0x7055('0x94'),_0x7bf1d7['params']['id'],_0x5a5f89[_0x7055('0x78')]));return createBucket(_0x1c3918[_0x7055('0x90')],_0x1c3918[_0x7055('0x91')],_0x5a5f89[_0x7055('0x86')],_0x5a5f89[_0x7055('0x78')]);}logger[_0x7055('0x6d')](util[_0x7055('0x32')](_0x7055('0x95'),_0x7bf1d7['params']['id'],_0x5a5f89[_0x7055('0x78')]));return;}})['then'](function(_0x57f844){if(_0x5e9863[_0x7055('0x80')]===_0x7055('0x96')){return transcribe(_0x7bf1d7[_0x7055('0x4b')]['id'],_0x1c3918[_0x7055('0x90')],_0x1c3918[_0x7055('0x91')],_0x5a5f89[_0x7055('0x86')],_0x5a5f89[_0x7055('0x78')],_0x5e9863[_0x7055('0x54')],_0x5a5f89[_0x7055('0x87')]);}else{logger[_0x7055('0x6d')](util[_0x7055('0x32')](_0x7055('0x97'),_0x7bf1d7[_0x7055('0x4b')]['id']));return{'transcribeStatus':_0x7055('0x98')};}})['then'](function(_0x52abdd){if(_0x52abdd){_0x52abdd[_0x7055('0x99')]=_0x7bf1d7[_0x7055('0x4e')]['runSentiment'];return _0x5e9863[_0x7055('0x9a')](_0x52abdd);}})[_0x7055('0x29')](respondWithResult(_0x2eacdf,null))[_0x7055('0x49')](handleError(_0x2eacdf,null));};function writeFile(_0xa704dc,_0x237345){return new Promise(function(_0x3fd8f4,_0x9c7219){fs[_0x7055('0x9b')](_0x237345,_0xa704dc,function(_0x39de33,_0x25f85f){if(_0x39de33){return _0x9c7219(_0x39de33);}else{return _0x3fd8f4(_0x25f85f);}});});}exports[_0x7055('0x9c')]=function(_0x405082,_0x5bfd48,_0x4bf57f){return db[_0x7055('0x2e')][_0x7055('0x82')]({'where':{'id':_0x405082[_0x7055('0x4b')]['id']}})[_0x7055('0x29')](handleEntityNotFound(_0x5bfd48))['then'](function(_0x1daa91){if(_0x1daa91&&_0x1daa91[_0x7055('0x9d')]){var _0x1916aa=_0x1daa91[_0x7055('0x9d')];var _0x4f276=config['root']+_0x7055('0x9e')+_0x1daa91['id']+_0x7055('0x9f');if(fs[_0x7055('0x56')](_0x4f276)){return _0x4f276;}return writeFile(_0x1916aa,_0x4f276)[_0x7055('0x29')](function(){return _0x4f276;});}else{throw new db[(_0x7055('0x5a'))][(_0x7055('0x5b'))](_0x7055('0xa0'));}})[_0x7055('0x29')](function(_0x1afbfe){return _0x5bfd48[_0x7055('0x51')](_0x1afbfe);})[_0x7055('0x49')](handleError(_0x5bfd48));};
\ No newline at end of file
index 26f20e3..5a61f67 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1666=['define','VoiceRecording','voice_recordings','uniqueid','transcribeStatus','./voiceRecording.attributes','exports'];(function(_0x465028,_0x4570ac){var _0xb783d4=function(_0x5458c5){while(--_0x5458c5){_0x465028['push'](_0x465028['shift']());}};_0xb783d4(++_0x4570ac);}(_0x1666,0x75));var _0x6166=function(_0x38d923,_0x46b8ff){_0x38d923=_0x38d923-0x0;var _0x3e9d67=_0x1666[_0x38d923];return _0x3e9d67;};'use strict';var attributes=require(_0x6166('0x0'));module[_0x6166('0x1')]=function(_0x4f60ad,_0x18af67){return _0x4f60ad[_0x6166('0x2')](_0x6166('0x3'),attributes,{'tableName':_0x6166('0x4'),'paranoid':![],'indexes':[{'name':_0x6166('0x5'),'fields':[_0x6166('0x5')]},{'name':_0x6166('0x6'),'fields':[_0x6166('0x6')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xa9e5=['define','VoiceRecording','voice_recordings','uniqueid','transcribeStatus','./voiceRecording.attributes','exports'];(function(_0x8be9fb,_0x2f90d9){var _0x3b41ac=function(_0x369a8f){while(--_0x369a8f){_0x8be9fb['push'](_0x8be9fb['shift']());}};_0x3b41ac(++_0x2f90d9);}(_0xa9e5,0x8a));var _0x5a9e=function(_0x8d766f,_0x4b18b8){_0x8d766f=_0x8d766f-0x0;var _0x3df385=_0xa9e5[_0x8d766f];return _0x3df385;};'use strict';var attributes=require(_0x5a9e('0x0'));module[_0x5a9e('0x1')]=function(_0x4b77d6,_0x2790f7){return _0x4b77d6[_0x5a9e('0x2')](_0x5a9e('0x3'),attributes,{'tableName':_0x5a9e('0x4'),'paranoid':![],'indexes':[{'name':_0x5a9e('0x5'),'fields':[_0x5a9e('0x5')]},{'name':_0x5a9e('0x6'),'fields':[_0x5a9e('0x6')]}],'timestamps':!![]});};
\ No newline at end of file
index 406f7e9..ccdb9f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x57ca=['update','body','options','where','limit','then','debug','stringify','CreateVoiceRecording','../../components/encryptor','Setting','callRecordingEncryption','create','value','format','recording','unlink','CreateVoiceRecording\x20file\x20encrypted','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','info','request\x20sent','VoiceRecording,\x20%s,\x20%s,\x20%s','error','code','VoiceRecording,\x20%s,\x20%s','message','result','catch','UpdateVoiceRecording','VoiceRecording'];(function(_0x3be714,_0x38e9f4){var _0xcf112e=function(_0x15d9c2){while(--_0x15d9c2){_0x3be714['push'](_0x3be714['shift']());}};_0xcf112e(++_0x38e9f4);}(_0x57ca,0x108));var _0xa57c=function(_0x10d76c,_0x4c8135){_0x10d76c=_0x10d76c-0x0;var _0x415d3d=_0x57ca[_0x10d76c];return _0x415d3d;};'use strict';var _=require('lodash');var util=require(_0xa57c('0x0'));var moment=require(_0xa57c('0x1'));var BPromise=require('bluebird');var rs=require(_0xa57c('0x2'));var fs=require('fs');var Redis=require(_0xa57c('0x3'));var db=require(_0xa57c('0x4'))['db'];var utils=require(_0xa57c('0x5'));var logger=require(_0xa57c('0x6'))('rpc');var config=require(_0xa57c('0x7'));var jayson=require(_0xa57c('0x8'));var client=jayson[_0xa57c('0x9')][_0xa57c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xbdfffb,_0x314574,_0x19e28e){return new BPromise(function(_0x271ccc,_0x5e3962){return client[_0xa57c('0xb')](_0xbdfffb,_0x19e28e)['then'](function(_0x46ba92){logger[_0xa57c('0xc')]('VoiceRecording,\x20%s,\x20%s',_0x314574,_0xa57c('0xd'));logger['debug'](_0xa57c('0xe'),_0x314574,_0xa57c('0xd'),JSON['stringify'](_0x46ba92));if(_0x46ba92[_0xa57c('0xf')]){if(_0x46ba92['error'][_0xa57c('0x10')]===0x1f4){logger[_0xa57c('0xf')](_0xa57c('0x11'),_0x314574,_0x46ba92[_0xa57c('0xf')][_0xa57c('0x12')]);return _0x5e3962(_0x46ba92['error'][_0xa57c('0x12')]);}logger['error'](_0xa57c('0x11'),_0x314574,_0x46ba92[_0xa57c('0xf')][_0xa57c('0x12')]);return _0x271ccc(_0x46ba92[_0xa57c('0xf')][_0xa57c('0x12')]);}else{logger[_0xa57c('0xc')](_0xa57c('0x11'),_0x314574,'request\x20sent');_0x271ccc(_0x46ba92[_0xa57c('0x13')][_0xa57c('0x12')]);}})[_0xa57c('0x14')](function(_0x5a6024){logger[_0xa57c('0xf')]('VoiceRecording,\x20%s,\x20%s',_0x314574,_0x5a6024);_0x5e3962(_0x5a6024);});});}exports[_0xa57c('0x15')]=function(_0x3d781d){var _0x93462c=this;return new Promise(function(_0xe3d505,_0x1fd0d8){return db[_0xa57c('0x16')][_0xa57c('0x17')](_0x3d781d[_0xa57c('0x18')],{'raw':_0x3d781d['options']?_0x3d781d[_0xa57c('0x19')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3d781d['options']?_0x3d781d[_0xa57c('0x19')][_0xa57c('0x1a')]||null:null,'attributes':_0x3d781d[_0xa57c('0x19')]?_0x3d781d[_0xa57c('0x19')]['attributes']||null:null,'limit':_0x3d781d[_0xa57c('0x19')]?_0x3d781d[_0xa57c('0x19')][_0xa57c('0x1b')]||null:null})[_0xa57c('0x1c')](function(_0x3bb969){logger[_0xa57c('0xc')](_0xa57c('0x15'),_0x3d781d);logger[_0xa57c('0x1d')](_0xa57c('0x15'),_0x3d781d,JSON[_0xa57c('0x1e')](_0x3bb969));_0xe3d505(_0x3bb969);})[_0xa57c('0x14')](function(_0x1e7f7a){logger[_0xa57c('0xf')](_0xa57c('0x15'),_0x1e7f7a[_0xa57c('0x12')],_0x3d781d);_0x1fd0d8(_0x93462c['error'](0x1f4,_0x1e7f7a[_0xa57c('0x12')]));});});};exports[_0xa57c('0x1f')]=function(_0x27884d){var _0x5228b9=this;return new Promise(function(_0x315ad7,_0x1e8e45){var _0x8ee1c0=require(_0xa57c('0x20'));var _0x337f97;return db[_0xa57c('0x21')]['findOne']({'attributes':['id',_0xa57c('0x22')],'where':{'id':0x1},'raw':!![]})['then'](function(_0x54a18b){_0x337f97=_0x54a18b;return db[_0xa57c('0x16')][_0xa57c('0x23')](_0x27884d['body']);})[_0xa57c('0x1c')](function(_0x1ef331){if(_0x337f97[_0xa57c('0x22')]&&fs['existsSync'](_0x1ef331[_0xa57c('0x24')])){var _0x58d46f=util[_0xa57c('0x25')]('%s.cypher',_0x1ef331[_0xa57c('0x24')]);return _0x8ee1c0['encryptFile'](_0x1ef331[_0xa57c('0x24')],_0x58d46f,config['secrets'][_0xa57c('0x26')])[_0xa57c('0x1c')](function(){fs[_0xa57c('0x27')](_0x1ef331[_0xa57c('0x24')]);logger[_0xa57c('0xc')](_0xa57c('0x28'));return _0x1ef331;});}return _0x1ef331;})[_0xa57c('0x1c')](function(_0x5aa91e){logger[_0xa57c('0xc')]('CreateVoiceRecording',_0x27884d);logger[_0xa57c('0x1d')](_0xa57c('0x1f'),_0x27884d,JSON[_0xa57c('0x1e')](_0x5aa91e));_0x315ad7(_0x5aa91e);})['catch'](function(_0x289174){logger['error'](_0xa57c('0x1f'),_0x289174['message'],_0x27884d);_0x1e8e45(_0x5228b9[_0xa57c('0xf')](0x1f4,_0x289174['message']));});});};
\ No newline at end of file
+var _0x47c5=['secrets','recording','unlink','CreateVoiceRecording\x20file\x20encrypted','CreateVoiceRecording','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','then','info','VoiceRecording,\x20%s,\x20%s','request\x20sent','debug','VoiceRecording,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','VoiceRecording','update','body','options','raw','where','attributes','limit','UpdateVoiceRecording','findOne','callRecordingEncryption','existsSync','value','format','%s.cypher'];(function(_0x55fa03,_0xcb96c2){var _0x2cd7cd=function(_0x56611f){while(--_0x56611f){_0x55fa03['push'](_0x55fa03['shift']());}};_0x2cd7cd(++_0xcb96c2);}(_0x47c5,0x165));var _0x547c=function(_0x2fa2d6,_0x5d7dc8){_0x2fa2d6=_0x2fa2d6-0x0;var _0x3eb8ab=_0x47c5[_0x2fa2d6];return _0x3eb8ab;};'use strict';var _=require(_0x547c('0x0'));var util=require(_0x547c('0x1'));var moment=require(_0x547c('0x2'));var BPromise=require(_0x547c('0x3'));var rs=require(_0x547c('0x4'));var fs=require('fs');var Redis=require(_0x547c('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x547c('0x6'));var logger=require(_0x547c('0x7'))('rpc');var config=require(_0x547c('0x8'));var jayson=require(_0x547c('0x9'));var client=jayson['client'][_0x547c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x439f25,_0x381f2e,_0x10a334){return new BPromise(function(_0x12fb7d,_0x4ef079){return client[_0x547c('0xb')](_0x439f25,_0x10a334)[_0x547c('0xc')](function(_0x10dec9){logger[_0x547c('0xd')](_0x547c('0xe'),_0x381f2e,_0x547c('0xf'));logger[_0x547c('0x10')](_0x547c('0x11'),_0x381f2e,_0x547c('0xf'),JSON[_0x547c('0x12')](_0x10dec9));if(_0x10dec9[_0x547c('0x13')]){if(_0x10dec9['error'][_0x547c('0x14')]===0x1f4){logger[_0x547c('0x13')]('VoiceRecording,\x20%s,\x20%s',_0x381f2e,_0x10dec9[_0x547c('0x13')][_0x547c('0x15')]);return _0x4ef079(_0x10dec9[_0x547c('0x13')][_0x547c('0x15')]);}logger[_0x547c('0x13')](_0x547c('0xe'),_0x381f2e,_0x10dec9[_0x547c('0x13')][_0x547c('0x15')]);return _0x12fb7d(_0x10dec9[_0x547c('0x13')][_0x547c('0x15')]);}else{logger[_0x547c('0xd')](_0x547c('0xe'),_0x381f2e,_0x547c('0xf'));_0x12fb7d(_0x10dec9[_0x547c('0x16')][_0x547c('0x15')]);}})[_0x547c('0x17')](function(_0x39498d){logger[_0x547c('0x13')]('VoiceRecording,\x20%s,\x20%s',_0x381f2e,_0x39498d);_0x4ef079(_0x39498d);});});}exports['UpdateVoiceRecording']=function(_0x23fa9e){var _0x199e4f=this;return new Promise(function(_0xeb059e,_0x4a8901){return db[_0x547c('0x18')][_0x547c('0x19')](_0x23fa9e[_0x547c('0x1a')],{'raw':_0x23fa9e['options']?_0x23fa9e[_0x547c('0x1b')][_0x547c('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x23fa9e['options']?_0x23fa9e['options'][_0x547c('0x1d')]||null:null,'attributes':_0x23fa9e[_0x547c('0x1b')]?_0x23fa9e['options'][_0x547c('0x1e')]||null:null,'limit':_0x23fa9e[_0x547c('0x1b')]?_0x23fa9e['options'][_0x547c('0x1f')]||null:null})[_0x547c('0xc')](function(_0x436e67){logger['info'](_0x547c('0x20'),_0x23fa9e);logger[_0x547c('0x10')](_0x547c('0x20'),_0x23fa9e,JSON[_0x547c('0x12')](_0x436e67));_0xeb059e(_0x436e67);})[_0x547c('0x17')](function(_0x2663bc){logger[_0x547c('0x13')](_0x547c('0x20'),_0x2663bc['message'],_0x23fa9e);_0x4a8901(_0x199e4f[_0x547c('0x13')](0x1f4,_0x2663bc['message']));});});};exports['CreateVoiceRecording']=function(_0x4855fd){var _0x478f04=this;return new Promise(function(_0x2c725d,_0x4c5256){var _0x93985c=require('../../components/encryptor');var _0x3ea493;return db['Setting'][_0x547c('0x21')]({'attributes':['id',_0x547c('0x22')],'where':{'id':0x1},'raw':!![]})[_0x547c('0xc')](function(_0x30a96c){_0x3ea493=_0x30a96c;return db[_0x547c('0x18')]['create'](_0x4855fd['body']);})[_0x547c('0xc')](function(_0x54de6f){if(_0x3ea493[_0x547c('0x22')]&&fs[_0x547c('0x23')](_0x54de6f[_0x547c('0x24')])){var _0x1695be=util[_0x547c('0x25')](_0x547c('0x26'),_0x54de6f[_0x547c('0x24')]);return _0x93985c['encryptFile'](_0x54de6f['value'],_0x1695be,config[_0x547c('0x27')][_0x547c('0x28')])[_0x547c('0xc')](function(){fs[_0x547c('0x29')](_0x54de6f[_0x547c('0x24')]);logger[_0x547c('0xd')](_0x547c('0x2a'));return _0x54de6f;});}return _0x54de6f;})[_0x547c('0xc')](function(_0x378bac){logger[_0x547c('0xd')](_0x547c('0x2b'),_0x4855fd);logger[_0x547c('0x10')](_0x547c('0x2b'),_0x4855fd,JSON[_0x547c('0x12')](_0x378bac));_0x2c725d(_0x378bac);})['catch'](function(_0x3afc28){logger['error']('CreateVoiceRecording',_0x3afc28['message'],_0x4855fd);_0x4c5256(_0x478f04[_0x547c('0x13')](0x1f4,_0x3afc28[_0x547c('0x15')]));});});};
\ No newline at end of file
index decf589..a1b9517 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4cd2=['exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','./voiceTransferReport.controller','get','isAuthenticated','index','describe','/:id','post','put','update','delete'];(function(_0x37df93,_0x2a2efb){var _0x37be54=function(_0x573856){while(--_0x573856){_0x37df93['push'](_0x37df93['shift']());}};_0x37be54(++_0x2a2efb);}(_0x4cd2,0x91));var _0x24cd=function(_0x21848b,_0x59f2dd){_0x21848b=_0x21848b-0x0;var _0x3e67b8=_0x4cd2[_0x21848b];return _0x3e67b8;};'use strict';var multer=require(_0x24cd('0x0'));var util=require(_0x24cd('0x1'));var path=require('path');var timeout=require(_0x24cd('0x2'));var express=require(_0x24cd('0x3'));var router=express[_0x24cd('0x4')]();var fs_extra=require(_0x24cd('0x5'));var auth=require(_0x24cd('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x24cd('0x7'));router[_0x24cd('0x8')]('/',auth[_0x24cd('0x9')](),controller[_0x24cd('0xa')]);router[_0x24cd('0x8')]('/describe',auth['isAuthenticated'](),controller[_0x24cd('0xb')]);router[_0x24cd('0x8')](_0x24cd('0xc'),auth[_0x24cd('0x9')](),controller['show']);router[_0x24cd('0xd')]('/',auth[_0x24cd('0x9')](),controller['create']);router[_0x24cd('0xe')](_0x24cd('0xc'),auth[_0x24cd('0x9')](),controller[_0x24cd('0xf')]);router[_0x24cd('0x10')](_0x24cd('0xc'),auth[_0x24cd('0x9')](),controller['destroy']);module[_0x24cd('0x11')]=router;
\ No newline at end of file
+var _0x1b79=['show','create','put','destroy','exports','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id'];(function(_0x2385e6,_0x186cd4){var _0xa0ffd4=function(_0x5da6b0){while(--_0x5da6b0){_0x2385e6['push'](_0x2385e6['shift']());}};_0xa0ffd4(++_0x186cd4);}(_0x1b79,0x1e0));var _0x91b7=function(_0x4da2c3,_0x105a2a){_0x4da2c3=_0x4da2c3-0x0;var _0x3313ba=_0x1b79[_0x4da2c3];return _0x3313ba;};'use strict';var multer=require(_0x91b7('0x0'));var util=require('util');var path=require(_0x91b7('0x1'));var timeout=require(_0x91b7('0x2'));var express=require('express');var router=express[_0x91b7('0x3')]();var fs_extra=require(_0x91b7('0x4'));var auth=require(_0x91b7('0x5'));var interaction=require(_0x91b7('0x6'));var config=require(_0x91b7('0x7'));var controller=require('./voiceTransferReport.controller');router[_0x91b7('0x8')]('/',auth[_0x91b7('0x9')](),controller[_0x91b7('0xa')]);router[_0x91b7('0x8')](_0x91b7('0xb'),auth[_0x91b7('0x9')](),controller[_0x91b7('0xc')]);router['get'](_0x91b7('0xd'),auth[_0x91b7('0x9')](),controller[_0x91b7('0xe')]);router['post']('/',auth[_0x91b7('0x9')](),controller[_0x91b7('0xf')]);router[_0x91b7('0x10')]('/:id',auth['isAuthenticated'](),controller['update']);router['delete'](_0x91b7('0xd'),auth[_0x91b7('0x9')](),controller[_0x91b7('0x11')]);module[_0x91b7('0x12')]=router;
\ No newline at end of file
index 7465122..1eb9b28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70be=['ENUM','blind','STRING','Yes','sequelize','moment','exports'];(function(_0x178e48,_0x3c9509){var _0x440d7e=function(_0xc2f8a0){while(--_0xc2f8a0){_0x178e48['push'](_0x178e48['shift']());}};_0x440d7e(++_0x3c9509);}(_0x70be,0x154));var _0xe70b=function(_0x360090,_0x42ecc0){_0x360090=_0x360090-0x0;var _0x2a7eb7=_0x70be[_0x360090];return _0x2a7eb7;};'use strict';var Sequelize=require(_0xe70b('0x0'));var moment=require(_0xe70b('0x1'));module[_0xe70b('0x2')]={'type':{'type':Sequelize[_0xe70b('0x3')](_0xe70b('0x4'),'attended')},'result':{'type':Sequelize[_0xe70b('0x5')]},'transfererchannel':{'type':Sequelize['STRING']},'transferercalleridnum':{'type':Sequelize[_0xe70b('0x5')]},'transferercalleridname':{'type':Sequelize[_0xe70b('0x5')]},'transfererconnectedlinenum':{'type':Sequelize['STRING']},'transfererconnectedlinename':{'type':Sequelize[_0xe70b('0x5')]},'transfereraccountcode':{'type':Sequelize['STRING']},'transferercontext':{'type':Sequelize[_0xe70b('0x5')]},'transfererexten':{'type':Sequelize['STRING']},'transfererlinkedid':{'type':Sequelize['STRING']},'transfereechannel':{'type':Sequelize[_0xe70b('0x5')]},'transfereecalleridnum':{'type':Sequelize[_0xe70b('0x5')]},'transfereecalleridname':{'type':Sequelize[_0xe70b('0x5')]},'transfereeconnectedlinenum':{'type':Sequelize[_0xe70b('0x5')]},'transfereeconnectedlinename':{'type':Sequelize[_0xe70b('0x5')]},'transfereeaccountcode':{'type':Sequelize[_0xe70b('0x5')]},'transfereecontext':{'type':Sequelize[_0xe70b('0x5')]},'transfereeexten':{'type':Sequelize[_0xe70b('0x5')]},'transfereelinkedid':{'type':Sequelize['STRING']},'isexternal':{'type':Sequelize['ENUM'](_0xe70b('0x6'),'No')},'context':{'type':Sequelize['STRING']},'extension':{'type':Sequelize[_0xe70b('0x5')]}};
\ No newline at end of file
+var _0x37f3=['exports','ENUM','blind','STRING','Yes','sequelize','moment'];(function(_0x4b6923,_0x10e0c8){var _0x5d5603=function(_0x4b8222){while(--_0x4b8222){_0x4b6923['push'](_0x4b6923['shift']());}};_0x5d5603(++_0x10e0c8);}(_0x37f3,0x124));var _0x337f=function(_0x4ded65,_0xc8d7c1){_0x4ded65=_0x4ded65-0x0;var _0x5864fb=_0x37f3[_0x4ded65];return _0x5864fb;};'use strict';var Sequelize=require(_0x337f('0x0'));var moment=require(_0x337f('0x1'));module[_0x337f('0x2')]={'type':{'type':Sequelize[_0x337f('0x3')](_0x337f('0x4'),'attended')},'result':{'type':Sequelize[_0x337f('0x5')]},'transfererchannel':{'type':Sequelize[_0x337f('0x5')]},'transferercalleridnum':{'type':Sequelize[_0x337f('0x5')]},'transferercalleridname':{'type':Sequelize[_0x337f('0x5')]},'transfererconnectedlinenum':{'type':Sequelize[_0x337f('0x5')]},'transfererconnectedlinename':{'type':Sequelize[_0x337f('0x5')]},'transfereraccountcode':{'type':Sequelize[_0x337f('0x5')]},'transferercontext':{'type':Sequelize[_0x337f('0x5')]},'transfererexten':{'type':Sequelize[_0x337f('0x5')]},'transfererlinkedid':{'type':Sequelize['STRING']},'transfereechannel':{'type':Sequelize['STRING']},'transfereecalleridnum':{'type':Sequelize[_0x337f('0x5')]},'transfereecalleridname':{'type':Sequelize[_0x337f('0x5')]},'transfereeconnectedlinenum':{'type':Sequelize['STRING']},'transfereeconnectedlinename':{'type':Sequelize['STRING']},'transfereeaccountcode':{'type':Sequelize[_0x337f('0x5')]},'transfereecontext':{'type':Sequelize[_0x337f('0x5')]},'transfereeexten':{'type':Sequelize['STRING']},'transfereelinkedid':{'type':Sequelize['STRING']},'isexternal':{'type':Sequelize[_0x337f('0x3')](_0x337f('0x6'),'No')},'context':{'type':Sequelize[_0x337f('0x5')]},'extension':{'type':Sequelize[_0x337f('0x5')]}};
\ No newline at end of file
index dcb945d..7f8d248 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c84=['model','map','query','keys','intersection','attributes','fields','length','order','sort','filters','pick','filter','where','merge','VIRTUAL','options','VoiceTransferReport','then','include','findAll','rows','show','rawAttributes','catch','create','body','find','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','path','ejs','fs-extra','squel','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','save','update','destroy','error','stack','name','send','fieldName','type'];(function(_0x1abe50,_0x4e0b29){var _0x1ddd7f=function(_0x3dbcc8){while(--_0x3dbcc8){_0x1abe50['push'](_0x1abe50['shift']());}};_0x1ddd7f(++_0x4e0b29);}(_0x6c84,0xac));var _0x46c8=function(_0x138adb,_0x193fee){_0x138adb=_0x138adb-0x0;var _0x1b27f2=_0x6c84[_0x138adb];return _0x1b27f2;};'use strict';var emlformat=require(_0x46c8('0x0'));var rimraf=require(_0x46c8('0x1'));var zipdir=require(_0x46c8('0x2'));var jsonpatch=require(_0x46c8('0x3'));var rp=require(_0x46c8('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x46c8('0x5'));var util=require('util');var path=require(_0x46c8('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x46c8('0x7'));var fs=require('fs');var fs_extra=require(_0x46c8('0x8'));var _=require('lodash');var squel=require(_0x46c8('0x9'));var crypto=require('crypto');var jsforce=require(_0x46c8('0xa'));var deskjs=require(_0x46c8('0xb'));var toCsv=require(_0x46c8('0xc'));var querystring=require('querystring');var Papa=require(_0x46c8('0xd'));var Redis=require(_0x46c8('0xe'));var authService=require(_0x46c8('0xf'));var qs=require(_0x46c8('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x46c8('0x11'));var logger=require(_0x46c8('0x12'))('api');var utils=require('../../config/utils');var config=require(_0x46c8('0x13'));var licenseUtil=require(_0x46c8('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x39f3b0,_0x564a8e){_0x564a8e=_0x564a8e||0xcc;return function(_0x451289){if(_0x451289){return _0x39f3b0[_0x46c8('0x15')](_0x564a8e);}return _0x39f3b0[_0x46c8('0x16')](_0x564a8e)[_0x46c8('0x17')]();};}function respondWithResult(_0x2a005f,_0x38915f){_0x38915f=_0x38915f||0xc8;return function(_0x1edbce){if(_0x1edbce){return _0x2a005f['status'](_0x38915f)[_0x46c8('0x18')](_0x1edbce);}};}function respondWithFilteredResult(_0x38cc4b,_0x1c150a){return function(_0x3e2b12){if(_0x3e2b12){var _0x2a9284=typeof _0x1c150a[_0x46c8('0x19')]==='undefined'&&typeof _0x1c150a[_0x46c8('0x1a')]===_0x46c8('0x1b');var _0x321113=_0x3e2b12[_0x46c8('0x1c')];var _0x35e728=_0x2a9284?0x0:_0x1c150a[_0x46c8('0x19')];var _0x3e6200=_0x2a9284?_0x3e2b12[_0x46c8('0x1c')]:_0x1c150a[_0x46c8('0x19')]+_0x1c150a['limit'];var _0xd83040;if(_0x3e6200>=_0x321113){_0x3e6200=_0x321113;_0xd83040=0xc8;}else{_0xd83040=0xce;}_0x38cc4b['status'](_0xd83040);return _0x38cc4b[_0x46c8('0x1d')](_0x46c8('0x1e'),_0x35e728+'-'+_0x3e6200+'/'+_0x321113)['json'](_0x3e2b12);}return null;};}function patchUpdates(_0x1ac617){return function(_0xcaed82){try{jsonpatch[_0x46c8('0x1f')](_0xcaed82,_0x1ac617,!![]);}catch(_0x1f50e8){return BPromise['reject'](_0x1f50e8);}return _0xcaed82[_0x46c8('0x20')]();};}function saveUpdates(_0x3de64e,_0x4485aa){return function(_0x44eaeb){if(_0x44eaeb){return _0x44eaeb[_0x46c8('0x21')](_0x3de64e)['then'](function(_0x1f58f3){return _0x1f58f3;});}return null;};}function removeEntity(_0x4fb1d2,_0x28c17b){return function(_0x1b2b13){if(_0x1b2b13){return _0x1b2b13[_0x46c8('0x22')]()['then'](function(){_0x4fb1d2[_0x46c8('0x16')](0xcc)[_0x46c8('0x17')]();});}};}function handleEntityNotFound(_0x5e3e36,_0x43a303){return function(_0x131b50){if(!_0x131b50){_0x5e3e36['sendStatus'](0x194);}return _0x131b50;};}function handleError(_0x5bd0ee,_0x565f4c){_0x565f4c=_0x565f4c||0x1f4;return function(_0x2ea7a7){logger[_0x46c8('0x23')](_0x2ea7a7[_0x46c8('0x24')]);if(_0x2ea7a7['name']){delete _0x2ea7a7[_0x46c8('0x25')];}_0x5bd0ee[_0x46c8('0x16')](_0x565f4c)[_0x46c8('0x26')](_0x2ea7a7);};}exports['index']=function(_0x156b89,_0x79c2bf){var _0x2b4e4f={},_0x4c84cd={},_0x523734={'count':0x0,'rows':[]};var _0x387108=_['map'](db['VoiceTransferReport']['rawAttributes'],function(_0x35095c){return{'name':_0x35095c[_0x46c8('0x27')],'type':_0x35095c[_0x46c8('0x28')]['key']};});_0x4c84cd[_0x46c8('0x29')]=_[_0x46c8('0x2a')](_0x387108,'name');_0x4c84cd[_0x46c8('0x2b')]=_[_0x46c8('0x2c')](_0x156b89['query']);_0x4c84cd['filters']=_[_0x46c8('0x2d')](_0x4c84cd['model'],_0x4c84cd[_0x46c8('0x2b')]);_0x2b4e4f[_0x46c8('0x2e')]=_['intersection'](_0x4c84cd['model'],qs[_0x46c8('0x2f')](_0x156b89[_0x46c8('0x2b')][_0x46c8('0x2f')]));_0x2b4e4f['attributes']=_0x2b4e4f[_0x46c8('0x2e')][_0x46c8('0x30')]?_0x2b4e4f[_0x46c8('0x2e')]:_0x4c84cd['model'];if(!_0x156b89[_0x46c8('0x2b')]['hasOwnProperty']('nolimit')){_0x2b4e4f[_0x46c8('0x1a')]=qs[_0x46c8('0x1a')](_0x156b89['query'][_0x46c8('0x1a')]);_0x2b4e4f[_0x46c8('0x19')]=qs['offset'](_0x156b89[_0x46c8('0x2b')]['offset']);}_0x2b4e4f[_0x46c8('0x31')]=qs[_0x46c8('0x32')](_0x156b89[_0x46c8('0x2b')][_0x46c8('0x32')]);_0x2b4e4f['where']=qs[_0x46c8('0x33')](_[_0x46c8('0x34')](_0x156b89['query'],_0x4c84cd[_0x46c8('0x33')]),_0x387108);if(_0x156b89[_0x46c8('0x2b')][_0x46c8('0x35')]){_0x2b4e4f[_0x46c8('0x36')]=_[_0x46c8('0x37')](_0x2b4e4f[_0x46c8('0x36')],{'$or':_[_0x46c8('0x2a')](_0x387108,function(_0xb0e7ac){if(_0xb0e7ac['type']!==_0x46c8('0x38')){var _0x3145b7={};_0x3145b7[_0xb0e7ac[_0x46c8('0x25')]]={'$like':'%'+_0x156b89['query'][_0x46c8('0x35')]+'%'};return _0x3145b7;}})});}_0x2b4e4f=_[_0x46c8('0x37')]({},_0x2b4e4f,_0x156b89[_0x46c8('0x39')]);var _0xe87fae={'where':_0x2b4e4f[_0x46c8('0x36')]};return db[_0x46c8('0x3a')][_0x46c8('0x1c')](_0xe87fae)[_0x46c8('0x3b')](function(_0x50ecfd){_0x523734[_0x46c8('0x1c')]=_0x50ecfd;if(_0x156b89[_0x46c8('0x2b')]['includeAll']){_0x2b4e4f[_0x46c8('0x3c')]=[{'all':!![]}];}return db[_0x46c8('0x3a')][_0x46c8('0x3d')](_0x2b4e4f);})['then'](function(_0x58d215){_0x523734[_0x46c8('0x3e')]=_0x58d215;return _0x523734;})['then'](respondWithFilteredResult(_0x79c2bf,_0x2b4e4f))['catch'](handleError(_0x79c2bf,null));};exports[_0x46c8('0x3f')]=function(_0x46481d,_0xacfaa6){var _0x19cff0={'raw':!![],'where':{'id':_0x46481d['params']['id']}},_0x23f04c={};_0x23f04c[_0x46c8('0x29')]=_[_0x46c8('0x2c')](db['VoiceTransferReport'][_0x46c8('0x40')]);_0x23f04c[_0x46c8('0x2b')]=_[_0x46c8('0x2c')](_0x46481d[_0x46c8('0x2b')]);_0x23f04c[_0x46c8('0x33')]=_[_0x46c8('0x2d')](_0x23f04c[_0x46c8('0x29')],_0x23f04c['query']);_0x19cff0['attributes']=_[_0x46c8('0x2d')](_0x23f04c[_0x46c8('0x29')],qs['fields'](_0x46481d[_0x46c8('0x2b')]['fields']));_0x19cff0[_0x46c8('0x2e')]=_0x19cff0[_0x46c8('0x2e')]['length']?_0x19cff0[_0x46c8('0x2e')]:_0x23f04c['model'];if(_0x46481d[_0x46c8('0x2b')]['includeAll']){_0x19cff0[_0x46c8('0x3c')]=[{'all':!![]}];}_0x19cff0=_[_0x46c8('0x37')]({},_0x19cff0,_0x46481d[_0x46c8('0x39')]);return db[_0x46c8('0x3a')]['find'](_0x19cff0)[_0x46c8('0x3b')](handleEntityNotFound(_0xacfaa6,null))[_0x46c8('0x3b')](respondWithResult(_0xacfaa6,null))[_0x46c8('0x41')](handleError(_0xacfaa6,null));};exports[_0x46c8('0x42')]=function(_0x385256,_0x4ef67d){return db[_0x46c8('0x3a')][_0x46c8('0x42')](_0x385256[_0x46c8('0x43')],{})['then'](respondWithResult(_0x4ef67d,0xc9))[_0x46c8('0x41')](handleError(_0x4ef67d,null));};exports[_0x46c8('0x21')]=function(_0x207ec3,_0x958a49){if(_0x207ec3[_0x46c8('0x43')]['id']){delete _0x207ec3[_0x46c8('0x43')]['id'];}return db['VoiceTransferReport'][_0x46c8('0x44')]({'where':{'id':_0x207ec3[_0x46c8('0x45')]['id']}})['then'](handleEntityNotFound(_0x958a49,null))[_0x46c8('0x3b')](saveUpdates(_0x207ec3[_0x46c8('0x43')],null))[_0x46c8('0x3b')](respondWithResult(_0x958a49,null))['catch'](handleError(_0x958a49,null));};exports['destroy']=function(_0x4d5598,_0x1630be){return db['VoiceTransferReport'][_0x46c8('0x44')]({'where':{'id':_0x4d5598['params']['id']}})[_0x46c8('0x3b')](handleEntityNotFound(_0x1630be,null))[_0x46c8('0x3b')](removeEntity(_0x1630be,null))['catch'](handleError(_0x1630be,null));};exports['describe']=function(_0x81ec2,_0x2b9bc2){return db[_0x46c8('0x3a')][_0x46c8('0x46')]()[_0x46c8('0x3b')](respondWithResult(_0x2b9bc2,null))[_0x46c8('0x41')](handleError(_0x2b9bc2,null));};
\ No newline at end of file
+var _0x8660=['../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','limit','count','set','Content-Range','reject','save','update','then','end','error','stack','name','send','index','map','VoiceTransferReport','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','nolimit','sort','where','pick','merge','VIRTUAL','filter','options','include','findAll','catch','find','create','body','params','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/logger','../../config/utils'];(function(_0x430416,_0x35d1f0){var _0x18de49=function(_0x21cd48){while(--_0x21cd48){_0x430416['push'](_0x430416['shift']());}};_0x18de49(++_0x35d1f0);}(_0x8660,0x1dc));var _0x0866=function(_0x5a1252,_0x5c436a){_0x5a1252=_0x5a1252-0x0;var _0x55888d=_0x8660[_0x5a1252];return _0x55888d;};'use strict';var emlformat=require(_0x0866('0x0'));var rimraf=require(_0x0866('0x1'));var zipdir=require(_0x0866('0x2'));var jsonpatch=require(_0x0866('0x3'));var rp=require(_0x0866('0x4'));var moment=require(_0x0866('0x5'));var BPromise=require(_0x0866('0x6'));var Mustache=require(_0x0866('0x7'));var util=require(_0x0866('0x8'));var path=require(_0x0866('0x9'));var sox=require('sox');var csv=require(_0x0866('0xa'));var ejs=require(_0x0866('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x0866('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x0866('0xd'));var deskjs=require(_0x0866('0xe'));var toCsv=require(_0x0866('0xa'));var querystring=require(_0x0866('0xf'));var Papa=require(_0x0866('0x10'));var Redis=require(_0x0866('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x0866('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x0866('0x13'))('api');var utils=require(_0x0866('0x14'));var config=require(_0x0866('0x15'));var licenseUtil=require(_0x0866('0x16'));var db=require(_0x0866('0x17'))['db'];function respondWithStatusCode(_0x489603,_0x3fe5cb){_0x3fe5cb=_0x3fe5cb||0xcc;return function(_0x5b46cc){if(_0x5b46cc){return _0x489603['sendStatus'](_0x3fe5cb);}return _0x489603[_0x0866('0x18')](_0x3fe5cb)['end']();};}function respondWithResult(_0x298bb7,_0x2a2d31){_0x2a2d31=_0x2a2d31||0xc8;return function(_0x76032){if(_0x76032){return _0x298bb7[_0x0866('0x18')](_0x2a2d31)[_0x0866('0x19')](_0x76032);}};}function respondWithFilteredResult(_0x2ec617,_0x554e84){return function(_0x178857){if(_0x178857){var _0x204a41=typeof _0x554e84[_0x0866('0x1a')]==='undefined'&&typeof _0x554e84[_0x0866('0x1b')]==='undefined';var _0x19fcf8=_0x178857['count'];var _0x3d331a=_0x204a41?0x0:_0x554e84[_0x0866('0x1a')];var _0x259386=_0x204a41?_0x178857[_0x0866('0x1c')]:_0x554e84['offset']+_0x554e84[_0x0866('0x1b')];var _0x2035c0;if(_0x259386>=_0x19fcf8){_0x259386=_0x19fcf8;_0x2035c0=0xc8;}else{_0x2035c0=0xce;}_0x2ec617[_0x0866('0x18')](_0x2035c0);return _0x2ec617[_0x0866('0x1d')](_0x0866('0x1e'),_0x3d331a+'-'+_0x259386+'/'+_0x19fcf8)[_0x0866('0x19')](_0x178857);}return null;};}function patchUpdates(_0xefff86){return function(_0x41b46e){try{jsonpatch['apply'](_0x41b46e,_0xefff86,!![]);}catch(_0x286f43){return BPromise[_0x0866('0x1f')](_0x286f43);}return _0x41b46e[_0x0866('0x20')]();};}function saveUpdates(_0x43762d,_0x5485ab){return function(_0x925589){if(_0x925589){return _0x925589[_0x0866('0x21')](_0x43762d)[_0x0866('0x22')](function(_0xe52ae6){return _0xe52ae6;});}return null;};}function removeEntity(_0x2fa6af,_0x583e85){return function(_0xc2e042){if(_0xc2e042){return _0xc2e042['destroy']()[_0x0866('0x22')](function(){_0x2fa6af[_0x0866('0x18')](0xcc)[_0x0866('0x23')]();});}};}function handleEntityNotFound(_0x5bb649,_0x1161b7){return function(_0x234f90){if(!_0x234f90){_0x5bb649['sendStatus'](0x194);}return _0x234f90;};}function handleError(_0x46f0f1,_0x5c705c){_0x5c705c=_0x5c705c||0x1f4;return function(_0x4877f5){logger[_0x0866('0x24')](_0x4877f5[_0x0866('0x25')]);if(_0x4877f5[_0x0866('0x26')]){delete _0x4877f5[_0x0866('0x26')];}_0x46f0f1[_0x0866('0x18')](_0x5c705c)[_0x0866('0x27')](_0x4877f5);};}exports[_0x0866('0x28')]=function(_0x2aaf23,_0x58fca2){var _0x597448={},_0x1dda94={},_0x518a61={'count':0x0,'rows':[]};var _0x46d394=_[_0x0866('0x29')](db[_0x0866('0x2a')][_0x0866('0x2b')],function(_0x1004db){return{'name':_0x1004db[_0x0866('0x2c')],'type':_0x1004db[_0x0866('0x2d')]['key']};});_0x1dda94[_0x0866('0x2e')]=_['map'](_0x46d394,'name');_0x1dda94[_0x0866('0x2f')]=_[_0x0866('0x30')](_0x2aaf23[_0x0866('0x2f')]);_0x1dda94[_0x0866('0x31')]=_[_0x0866('0x32')](_0x1dda94[_0x0866('0x2e')],_0x1dda94[_0x0866('0x2f')]);_0x597448[_0x0866('0x33')]=_['intersection'](_0x1dda94['model'],qs[_0x0866('0x34')](_0x2aaf23['query']['fields']));_0x597448['attributes']=_0x597448[_0x0866('0x33')][_0x0866('0x35')]?_0x597448[_0x0866('0x33')]:_0x1dda94[_0x0866('0x2e')];if(!_0x2aaf23[_0x0866('0x2f')]['hasOwnProperty'](_0x0866('0x36'))){_0x597448[_0x0866('0x1b')]=qs[_0x0866('0x1b')](_0x2aaf23[_0x0866('0x2f')][_0x0866('0x1b')]);_0x597448[_0x0866('0x1a')]=qs[_0x0866('0x1a')](_0x2aaf23[_0x0866('0x2f')]['offset']);}_0x597448['order']=qs[_0x0866('0x37')](_0x2aaf23[_0x0866('0x2f')][_0x0866('0x37')]);_0x597448[_0x0866('0x38')]=qs[_0x0866('0x31')](_[_0x0866('0x39')](_0x2aaf23[_0x0866('0x2f')],_0x1dda94[_0x0866('0x31')]),_0x46d394);if(_0x2aaf23[_0x0866('0x2f')]['filter']){_0x597448['where']=_[_0x0866('0x3a')](_0x597448['where'],{'$or':_[_0x0866('0x29')](_0x46d394,function(_0x272610){if(_0x272610['type']!==_0x0866('0x3b')){var _0x3bbb9d={};_0x3bbb9d[_0x272610[_0x0866('0x26')]]={'$like':'%'+_0x2aaf23['query'][_0x0866('0x3c')]+'%'};return _0x3bbb9d;}})});}_0x597448=_[_0x0866('0x3a')]({},_0x597448,_0x2aaf23[_0x0866('0x3d')]);var _0x53f037={'where':_0x597448[_0x0866('0x38')]};return db[_0x0866('0x2a')][_0x0866('0x1c')](_0x53f037)[_0x0866('0x22')](function(_0x426eee){_0x518a61[_0x0866('0x1c')]=_0x426eee;if(_0x2aaf23[_0x0866('0x2f')]['includeAll']){_0x597448[_0x0866('0x3e')]=[{'all':!![]}];}return db[_0x0866('0x2a')][_0x0866('0x3f')](_0x597448);})[_0x0866('0x22')](function(_0x3a1ea8){_0x518a61['rows']=_0x3a1ea8;return _0x518a61;})[_0x0866('0x22')](respondWithFilteredResult(_0x58fca2,_0x597448))[_0x0866('0x40')](handleError(_0x58fca2,null));};exports['show']=function(_0x111a73,_0xe1d6c9){var _0x16f3af={'raw':!![],'where':{'id':_0x111a73['params']['id']}},_0x4023d4={};_0x4023d4[_0x0866('0x2e')]=_[_0x0866('0x30')](db[_0x0866('0x2a')][_0x0866('0x2b')]);_0x4023d4['query']=_[_0x0866('0x30')](_0x111a73[_0x0866('0x2f')]);_0x4023d4['filters']=_[_0x0866('0x32')](_0x4023d4[_0x0866('0x2e')],_0x4023d4[_0x0866('0x2f')]);_0x16f3af[_0x0866('0x33')]=_[_0x0866('0x32')](_0x4023d4[_0x0866('0x2e')],qs['fields'](_0x111a73[_0x0866('0x2f')]['fields']));_0x16f3af[_0x0866('0x33')]=_0x16f3af['attributes'][_0x0866('0x35')]?_0x16f3af[_0x0866('0x33')]:_0x4023d4[_0x0866('0x2e')];if(_0x111a73['query']['includeAll']){_0x16f3af[_0x0866('0x3e')]=[{'all':!![]}];}_0x16f3af=_['merge']({},_0x16f3af,_0x111a73[_0x0866('0x3d')]);return db[_0x0866('0x2a')][_0x0866('0x41')](_0x16f3af)[_0x0866('0x22')](handleEntityNotFound(_0xe1d6c9,null))['then'](respondWithResult(_0xe1d6c9,null))[_0x0866('0x40')](handleError(_0xe1d6c9,null));};exports['create']=function(_0x2f9811,_0xcd2011){return db[_0x0866('0x2a')][_0x0866('0x42')](_0x2f9811[_0x0866('0x43')],{})[_0x0866('0x22')](respondWithResult(_0xcd2011,0xc9))[_0x0866('0x40')](handleError(_0xcd2011,null));};exports[_0x0866('0x21')]=function(_0x55fab6,_0x115fb7){if(_0x55fab6[_0x0866('0x43')]['id']){delete _0x55fab6['body']['id'];}return db['VoiceTransferReport']['find']({'where':{'id':_0x55fab6[_0x0866('0x44')]['id']}})['then'](handleEntityNotFound(_0x115fb7,null))['then'](saveUpdates(_0x55fab6[_0x0866('0x43')],null))[_0x0866('0x22')](respondWithResult(_0x115fb7,null))[_0x0866('0x40')](handleError(_0x115fb7,null));};exports[_0x0866('0x45')]=function(_0x1d22e8,_0x53fdaf){return db[_0x0866('0x2a')]['find']({'where':{'id':_0x1d22e8[_0x0866('0x44')]['id']}})[_0x0866('0x22')](handleEntityNotFound(_0x53fdaf,null))[_0x0866('0x22')](removeEntity(_0x53fdaf,null))[_0x0866('0x40')](handleError(_0x53fdaf,null));};exports[_0x0866('0x46')]=function(_0x13e390,_0x10b62f){return db[_0x0866('0x2a')][_0x0866('0x46')]()[_0x0866('0x22')](respondWithResult(_0x10b62f,null))[_0x0866('0x40')](handleError(_0x10b62f,null));};
\ No newline at end of file
index 3de6d44..408ceda 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaec4=['lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./voiceTransferReport.attributes','exports','define','report_call_transfer'];(function(_0x113450,_0x1b9b5c){var _0x1a78b1=function(_0x202cc4){while(--_0x202cc4){_0x113450['push'](_0x113450['shift']());}};_0x1a78b1(++_0x1b9b5c);}(_0xaec4,0xea));var _0x4aec=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0xaec4[_0x5b644e];return _0x49c6bf;};'use strict';var _=require(_0x4aec('0x0'));var util=require('util');var logger=require(_0x4aec('0x1'))(_0x4aec('0x2'));var moment=require(_0x4aec('0x3'));var BPromise=require(_0x4aec('0x4'));var rp=require(_0x4aec('0x5'));var fs=require('fs');var path=require(_0x4aec('0x6'));var rimraf=require(_0x4aec('0x7'));var config=require(_0x4aec('0x8'));var attributes=require(_0x4aec('0x9'));module[_0x4aec('0xa')]=function(_0x5cd27b,_0x3bfa06){return _0x5cd27b[_0x4aec('0xb')]('VoiceTransferReport',attributes,{'tableName':_0x4aec('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9f3e=['util','moment','request-promise','path','rimraf','./voiceTransferReport.attributes','exports','define','VoiceTransferReport','report_call_transfer','lodash'];(function(_0xcf3bd2,_0x5629f1){var _0x1ac33d=function(_0x4499f3){while(--_0x4499f3){_0xcf3bd2['push'](_0xcf3bd2['shift']());}};_0x1ac33d(++_0x5629f1);}(_0x9f3e,0x1e3));var _0xe9f3=function(_0x1dc4b8,_0x1401fc){_0x1dc4b8=_0x1dc4b8-0x0;var _0x4de150=_0x9f3e[_0x1dc4b8];return _0x4de150;};'use strict';var _=require(_0xe9f3('0x0'));var util=require(_0xe9f3('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xe9f3('0x2'));var BPromise=require('bluebird');var rp=require(_0xe9f3('0x3'));var fs=require('fs');var path=require(_0xe9f3('0x4'));var rimraf=require(_0xe9f3('0x5'));var config=require('../../config/environment');var attributes=require(_0xe9f3('0x6'));module[_0xe9f3('0x7')]=function(_0x4e7522,_0xc7d572){return _0x4e7522[_0xe9f3('0x8')](_0xe9f3('0x9'),attributes,{'tableName':_0xe9f3('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 03e8d59..3967730 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf14a=['../../config/utils','../../config/logger','jayson/promise','then','VoiceTransferReport,\x20%s,\x20%s','VoiceTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','VoiceTransferReport','create','body','options','raw','info','debug','CreateVoiceTransferReport','lodash','moment','bluebird','randomstring','ioredis'];(function(_0x15d4ff,_0x584e44){var _0x3d0f1f=function(_0x1d5daf){while(--_0x1d5daf){_0x15d4ff['push'](_0x15d4ff['shift']());}};_0x3d0f1f(++_0x584e44);}(_0xf14a,0x18b));var _0xaf14=function(_0x19d604,_0x385b6a){_0x19d604=_0x19d604-0x0;var _0x54d472=_0xf14a[_0x19d604];return _0x54d472;};'use strict';var _=require(_0xaf14('0x0'));var util=require('util');var moment=require(_0xaf14('0x1'));var BPromise=require(_0xaf14('0x2'));var rs=require(_0xaf14('0x3'));var fs=require('fs');var Redis=require(_0xaf14('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xaf14('0x5'));var logger=require(_0xaf14('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0xaf14('0x7'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x1472e6,_0x52817f,_0x892733){return new BPromise(function(_0x1686f9,_0x380c53){return client['request'](_0x1472e6,_0x892733)[_0xaf14('0x8')](function(_0x3ccf40){logger['info'](_0xaf14('0x9'),_0x52817f,'request\x20sent');logger['debug'](_0xaf14('0xa'),_0x52817f,_0xaf14('0xb'),JSON[_0xaf14('0xc')](_0x3ccf40));if(_0x3ccf40[_0xaf14('0xd')]){if(_0x3ccf40['error'][_0xaf14('0xe')]===0x1f4){logger[_0xaf14('0xd')](_0xaf14('0x9'),_0x52817f,_0x3ccf40[_0xaf14('0xd')][_0xaf14('0xf')]);return _0x380c53(_0x3ccf40[_0xaf14('0xd')][_0xaf14('0xf')]);}logger[_0xaf14('0xd')](_0xaf14('0x9'),_0x52817f,_0x3ccf40[_0xaf14('0xd')][_0xaf14('0xf')]);return _0x1686f9(_0x3ccf40['error'][_0xaf14('0xf')]);}else{logger['info'](_0xaf14('0x9'),_0x52817f,_0xaf14('0xb'));_0x1686f9(_0x3ccf40['result'][_0xaf14('0xf')]);}})[_0xaf14('0x10')](function(_0x5c1a03){logger[_0xaf14('0xd')](_0xaf14('0x9'),_0x52817f,_0x5c1a03);_0x380c53(_0x5c1a03);});});}exports['CreateVoiceTransferReport']=function(_0x53fe20){var _0x2b208b=this;return new Promise(function(_0x177ce5,_0x2fdca2){return db[_0xaf14('0x11')][_0xaf14('0x12')](_0x53fe20[_0xaf14('0x13')],{'raw':_0x53fe20[_0xaf14('0x14')]?_0x53fe20[_0xaf14('0x14')][_0xaf14('0x15')]===undefined?!![]:![]:!![]})[_0xaf14('0x8')](function(_0x451e66){logger[_0xaf14('0x16')]('CreateVoiceTransferReport',_0x53fe20);logger[_0xaf14('0x17')](_0xaf14('0x18'),_0x53fe20,JSON['stringify'](_0x451e66));_0x177ce5(_0x451e66);})['catch'](function(_0x5a3d44){logger[_0xaf14('0xd')](_0xaf14('0x18'),_0x5a3d44['message'],_0x53fe20);_0x2fdca2(_0x2b208b[_0xaf14('0xd')](0x1f4,_0x5a3d44[_0xaf14('0xf')]));});});};
\ No newline at end of file
+var _0x6140=['debug','stringify','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','VoiceTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','VoiceTransferReport,\x20%s,\x20%s','catch','VoiceTransferReport','raw','CreateVoiceTransferReport'];(function(_0xff9cb,_0x1b45d7){var _0x455a53=function(_0x50cd1b){while(--_0x50cd1b){_0xff9cb['push'](_0xff9cb['shift']());}};_0x455a53(++_0x1b45d7);}(_0x6140,0x89));var _0x0614=function(_0x4df17c,_0x2d2b61){_0x4df17c=_0x4df17c-0x0;var _0x4e79b5=_0x6140[_0x4df17c];return _0x4e79b5;};'use strict';var _=require(_0x0614('0x0'));var util=require('util');var moment=require(_0x0614('0x1'));var BPromise=require(_0x0614('0x2'));var rs=require(_0x0614('0x3'));var fs=require('fs');var Redis=require(_0x0614('0x4'));var db=require(_0x0614('0x5'))['db'];var utils=require(_0x0614('0x6'));var logger=require(_0x0614('0x7'))(_0x0614('0x8'));var config=require(_0x0614('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x0614('0xa')][_0x0614('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x200a97,_0x49c6e4,_0x522354){return new BPromise(function(_0x39ea27,_0x5002b6){return client[_0x0614('0xc')](_0x200a97,_0x522354)[_0x0614('0xd')](function(_0x513636){logger[_0x0614('0xe')]('VoiceTransferReport,\x20%s,\x20%s',_0x49c6e4,'request\x20sent');logger['debug'](_0x0614('0xf'),_0x49c6e4,_0x0614('0x10'),JSON['stringify'](_0x513636));if(_0x513636[_0x0614('0x11')]){if(_0x513636[_0x0614('0x11')][_0x0614('0x12')]===0x1f4){logger['error']('VoiceTransferReport,\x20%s,\x20%s',_0x49c6e4,_0x513636['error'][_0x0614('0x13')]);return _0x5002b6(_0x513636[_0x0614('0x11')][_0x0614('0x13')]);}logger[_0x0614('0x11')](_0x0614('0x14'),_0x49c6e4,_0x513636[_0x0614('0x11')][_0x0614('0x13')]);return _0x39ea27(_0x513636[_0x0614('0x11')]['message']);}else{logger[_0x0614('0xe')](_0x0614('0x14'),_0x49c6e4,_0x0614('0x10'));_0x39ea27(_0x513636['result'][_0x0614('0x13')]);}})[_0x0614('0x15')](function(_0x46e57a){logger[_0x0614('0x11')](_0x0614('0x14'),_0x49c6e4,_0x46e57a);_0x5002b6(_0x46e57a);});});}exports['CreateVoiceTransferReport']=function(_0x5cf464){var _0x2d14bb=this;return new Promise(function(_0x3c4bd1,_0x58a2d9){return db[_0x0614('0x16')]['create'](_0x5cf464['body'],{'raw':_0x5cf464['options']?_0x5cf464['options'][_0x0614('0x17')]===undefined?!![]:![]:!![]})[_0x0614('0xd')](function(_0x1a4448){logger[_0x0614('0xe')](_0x0614('0x18'),_0x5cf464);logger[_0x0614('0x19')]('CreateVoiceTransferReport',_0x5cf464,JSON[_0x0614('0x1a')](_0x1a4448));_0x3c4bd1(_0x1a4448);})[_0x0614('0x15')](function(_0x4c3c5b){logger[_0x0614('0x11')](_0x0614('0x18'),_0x4c3c5b[_0x0614('0x13')],_0x5cf464);_0x58a2d9(_0x2d14bb[_0x0614('0x11')](0x1f4,_0x4c3c5b[_0x0614('0x13')]));});});};
\ No newline at end of file
index e020fed..b04133a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe14d=['hangup','answer','/hold','hold','/unhold','unhold','/calls','calls','/transfer','transfer','exports','express','Router','../../components/auth/service','./webbar.controller','/originate','isAuthenticated','originate','post','/hangup','isWebrtcLicence'];(function(_0x5b8310,_0x77ea6f){var _0xd3ebc1=function(_0x9dfb29){while(--_0x9dfb29){_0x5b8310['push'](_0x5b8310['shift']());}};_0xd3ebc1(++_0x77ea6f);}(_0xe14d,0x1ee));var _0xde14=function(_0x1b349a,_0x22222c){_0x1b349a=_0x1b349a-0x0;var _0x5d1f7c=_0xe14d[_0x1b349a];return _0x5d1f7c;};'use strict';var express=require(_0xde14('0x0'));var router=express[_0xde14('0x1')]();var auth=require(_0xde14('0x2'));var controller=require(_0xde14('0x3'));router['post'](_0xde14('0x4'),auth[_0xde14('0x5')](),auth['isWebrtcLicence'](),controller[_0xde14('0x6')]);router[_0xde14('0x7')](_0xde14('0x8'),auth[_0xde14('0x5')](),auth[_0xde14('0x9')](),controller[_0xde14('0xa')]);router['post']('/answer',auth[_0xde14('0x5')](),auth[_0xde14('0x9')](),controller[_0xde14('0xb')]);router[_0xde14('0x7')](_0xde14('0xc'),auth[_0xde14('0x5')](),auth[_0xde14('0x9')](),controller[_0xde14('0xd')]);router['post'](_0xde14('0xe'),auth[_0xde14('0x5')](),auth[_0xde14('0x9')](),controller[_0xde14('0xf')]);router[_0xde14('0x7')](_0xde14('0x10'),auth[_0xde14('0x5')](),auth[_0xde14('0x9')](),controller[_0xde14('0x11')]);router[_0xde14('0x7')](_0xde14('0x12'),auth[_0xde14('0x5')](),auth[_0xde14('0x9')](),controller[_0xde14('0x13')]);module[_0xde14('0x14')]=router;
\ No newline at end of file
+var _0xa9e0=['/transfer','transfer','exports','express','Router','../../components/auth/service','/originate','isWebrtcLicence','originate','post','/hangup','isAuthenticated','hangup','/answer','answer','hold','/unhold','calls'];(function(_0x24a753,_0x31a42c){var _0x10c9c3=function(_0x89b507){while(--_0x89b507){_0x24a753['push'](_0x24a753['shift']());}};_0x10c9c3(++_0x31a42c);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1da04e,_0x31024b){_0x1da04e=_0x1da04e-0x0;var _0xdd8c41=_0xa9e0[_0x1da04e];return _0xdd8c41;};'use strict';var express=require(_0x0a9e('0x0'));var router=express[_0x0a9e('0x1')]();var auth=require(_0x0a9e('0x2'));var controller=require('./webbar.controller');router['post'](_0x0a9e('0x3'),auth['isAuthenticated'](),auth[_0x0a9e('0x4')](),controller[_0x0a9e('0x5')]);router[_0x0a9e('0x6')](_0x0a9e('0x7'),auth[_0x0a9e('0x8')](),auth['isWebrtcLicence'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x6')](_0x0a9e('0xa'),auth['isAuthenticated'](),auth['isWebrtcLicence'](),controller[_0x0a9e('0xb')]);router['post']('/hold',auth[_0x0a9e('0x8')](),auth[_0x0a9e('0x4')](),controller[_0x0a9e('0xc')]);router[_0x0a9e('0x6')](_0x0a9e('0xd'),auth[_0x0a9e('0x8')](),auth['isWebrtcLicence'](),controller['unhold']);router['post']('/calls',auth[_0x0a9e('0x8')](),auth[_0x0a9e('0x4')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0x6')](_0x0a9e('0xf'),auth[_0x0a9e('0x8')](),auth['isWebrtcLicence'](),controller[_0x0a9e('0x10')]);module[_0x0a9e('0x11')]=router;
\ No newline at end of file
index 9bab1e7..1f2268b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0ba7=['client','http','../../config/logger','webbarapi','ioredis','redis','defaults','localhost','socket.io-emitter','validate','number','userId\x20is\x20required','string','transferNumber\x20is\x20required','info','stringify','emit','error','stack','name','status','send','NotFound','request','code','message','result','findOne','agent','then','VoiceChannels','filter','UserId','length','sessionId\x20','\x20not\x20found!','originate','originate\x20fired:','body','json','callNumber','callerId','callbackUrl','format','user:%s','webbar:originate','originate\x20executed!','hangup','hangup\x20fired:','userId','sessionId','hangup\x20executed!','catch','answer','answer\x20fired:','entityFound:','webbar:answer','answer\x20executed!','hold\x20fired:','webbar:hold','unhold','calls','calls\x20fired:','conference','conference\x20fired:','transfer','transfer\x20fired:','transferNumber','webbar:transfer','path','../../mysqldb','../../config/environment','util','bluebird'];(function(_0x1840c1,_0x217972){var _0x4587b0=function(_0x799208){while(--_0x799208){_0x1840c1['push'](_0x1840c1['shift']());}};_0x4587b0(++_0x217972);}(_0x0ba7,0x16d));var _0x70ba=function(_0x15615a,_0x77e2f4){_0x15615a=_0x15615a-0x0;var _0x141e50=_0x0ba7[_0x15615a];return _0x141e50;};'use strict';var path=require(_0x70ba('0x0'));var fs=require('fs');var _=require('lodash');var db=require(_0x70ba('0x1'))['db'];var config=require(_0x70ba('0x2'));var util=require(_0x70ba('0x3'));var BPromise=require(_0x70ba('0x4'));var jayson=require('jayson/promise');var amiClient=jayson[_0x70ba('0x5')][_0x70ba('0x6')]({'port':0x232a});var logger=require(_0x70ba('0x7'))(_0x70ba('0x8'));var Redis=require(_0x70ba('0x9'));config[_0x70ba('0xa')]=_[_0x70ba('0xb')](config[_0x70ba('0xa')],{'host':_0x70ba('0xc'),'port':0x18eb});var io=require(_0x70ba('0xd'))(new Redis(config[_0x70ba('0xa')]));var Schema=require(_0x70ba('0xe'));var originateValidation=new Schema({'userId':{'type':_0x70ba('0xf'),'required':[!![],_0x70ba('0x10')]},'callNumber':{'type':_0x70ba('0x11'),'required':[!![],'callNumber\x20is\x20required']},'callerId':{'type':_0x70ba('0x11')},'callbackUrl':{'type':'string'}});var hangupValidation=new Schema({'userId':{'type':_0x70ba('0xf'),'required':[!![],_0x70ba('0x10')]},'sessionId':{'type':_0x70ba('0x11'),'required':![]}});var answerValidation=new Schema({'userId':{'type':_0x70ba('0xf'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':'string','required':![]}});var transferValidation=new Schema({'userId':{'type':_0x70ba('0xf'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0x70ba('0x11'),'required':[!![],'sessionId\x20is\x20required']},'transferNumber':{'type':_0x70ba('0x11'),'required':[!![],_0x70ba('0x12')]}});var holdValidation=new Schema({'userId':{'type':'number','required':[!![],_0x70ba('0x10')]},'sessionId':{'type':'string','required':![]}});var unholdValidation=new Schema({'userId':{'type':_0x70ba('0xf'),'required':[!![],_0x70ba('0x10')]},'sessionId':{'type':_0x70ba('0x11'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0x70ba('0xf'),'required':[!![],_0x70ba('0x10')]}});var conferenceValidation=new Schema({'userId':{'type':_0x70ba('0xf'),'required':[!![],_0x70ba('0x10')]}});function emit(_0x164521,_0x18334a,_0x3e27e8){logger[_0x70ba('0x13')](_0x164521,_0x18334a,JSON[_0x70ba('0x14')](_0x3e27e8));io['to'](_0x164521)[_0x70ba('0x15')](_0x18334a,_0x3e27e8);}function handleError(_0xb6d69a){return function(_0x5ed907){console['log']('handleError:',_0x5ed907,_0x5ed907 instanceof RangeError);logger[_0x70ba('0x16')](_0x5ed907[_0x70ba('0x17')]);if(_0x5ed907 instanceof RangeError){if(_0x5ed907[_0x70ba('0x18')]){delete _0x5ed907[_0x70ba('0x18')];}_0xb6d69a[_0x70ba('0x19')](0x194)[_0x70ba('0x1a')](_0x5ed907);}else{if(_0x5ed907[_0x70ba('0x18')]){delete _0x5ed907[_0x70ba('0x18')];}_0xb6d69a[_0x70ba('0x19')](0x1f4)[_0x70ba('0x1a')](_0x5ed907);}};}function checkError(){return function(_0x26c039){if(!_0x26c039){throw new RangeError(_0x70ba('0x1b'));}return _0x26c039;};}function respondWithRpcPromise(_0x2a1328,_0x4570b0){return new BPromise(function(_0x273ce4,_0x5ebe9d){var _0x3b31ef=amiClient;return _0x3b31ef[_0x70ba('0x1c')](_0x2a1328,_0x4570b0)['then'](function(_0x123b0c){if(_0x123b0c['error']){if(_0x123b0c['error'][_0x70ba('0x1d')]===0x1f4){return _0x5ebe9d(_0x123b0c['error'][_0x70ba('0x1e')]);}return _0x273ce4(_0x123b0c[_0x70ba('0x16')]['message']);}else{_0x273ce4(_0x123b0c[_0x70ba('0x1f')]);}})['catch'](function(_0x5ad828){_0x5ebe9d(_0x5ad828);});});}function getAgent(_0x39482c){return db['User'][_0x70ba('0x20')]({'where':{'id':_0x39482c,'role':_0x70ba('0x21')}})[_0x70ba('0x22')](checkError());}function getAgentCheckSession(_0x33e218,_0x2c6d18){return new BPromise(function(_0x265423,_0x5a8558){var _0x2d840e=respondWithRpcPromise(_0x70ba('0x23'));var _0x797467=getAgent(_0x33e218);Promise['all']([_0x2d840e,_0x797467])[_0x70ba('0x22')](function(_0x51b5cb){var _0x5955dc=_0x51b5cb[0x0];var _0x505f98=_0x51b5cb[0x1];var _0x77e564=_[_0x70ba('0x24')](_0x5955dc['rows'],function(_0x51b3e3){return _0x51b3e3[_0x70ba('0x25')]==_0x505f98['id']&&_0x51b3e3['sessionId']==_0x2c6d18;});if(_0x77e564[_0x70ba('0x26')]==0x1){_0x265423(_0x505f98);}else{_0x5a8558(new RangeError(_0x70ba('0x27')+_0x2c6d18+_0x70ba('0x28')));}});});}exports[_0x70ba('0x29')]=function(_0x1db0c4,_0x269943){logger[_0x70ba('0x13')](_0x70ba('0x2a'),_0x1db0c4[_0x70ba('0x2b')]);var _0x6055d3=originateValidation[_0x70ba('0xe')](_0x1db0c4['body']);if(_0x6055d3['length']>0x0){return _0x269943[_0x70ba('0x19')](0x190)[_0x70ba('0x2c')](_0x6055d3);}var _0x943e49=_0x1db0c4['body']['userId'];var _0x507f00=_0x1db0c4[_0x70ba('0x2b')][_0x70ba('0x2d')];var _0x2200d3=_0x1db0c4['body'][_0x70ba('0x2e')];var _0x5bc56f=_0x1db0c4['body'][_0x70ba('0x2f')];return getAgent(_0x943e49)['then'](function(_0x15774e){logger[_0x70ba('0x13')]('entityFound:',_0x15774e[_0x70ba('0x18')]);emit(util[_0x70ba('0x30')](_0x70ba('0x31'),_0x15774e['name']),_0x70ba('0x32'),{'callNumber':_0x507f00,'callerId':_0x2200d3,'callbackUrl':_0x5bc56f});return _0x269943[_0x70ba('0x19')](0xc8)[_0x70ba('0x2c')]({'error':![],'message':_0x70ba('0x33')});})['catch'](handleError(_0x269943));};exports[_0x70ba('0x34')]=function(_0x569ae3,_0x17707a){logger[_0x70ba('0x13')](_0x70ba('0x35'),_0x569ae3[_0x70ba('0x2b')]);var _0x16ce39=hangupValidation[_0x70ba('0xe')](_0x569ae3[_0x70ba('0x2b')]);if(_0x16ce39['length']>0x0){return _0x17707a[_0x70ba('0x19')](0x190)[_0x70ba('0x2c')](_0x16ce39);}var _0x31e713=_0x569ae3[_0x70ba('0x2b')][_0x70ba('0x36')];var _0x473489=_0x569ae3['body'][_0x70ba('0x37')];return getAgent(_0x31e713)[_0x70ba('0x22')](function(_0x1861ed){logger['info']('entityFound:',_0x1861ed['name']);emit(util[_0x70ba('0x30')](_0x70ba('0x31'),_0x1861ed[_0x70ba('0x18')]),'webbar:hangup',{'sessionId':_0x473489});return _0x17707a[_0x70ba('0x19')](0xc8)[_0x70ba('0x2c')]({'error':![],'message':_0x70ba('0x38')});})[_0x70ba('0x39')](handleError(_0x17707a));};exports[_0x70ba('0x3a')]=function(_0x54e732,_0x5ee74c){logger[_0x70ba('0x13')](_0x70ba('0x3b'),_0x54e732[_0x70ba('0x2b')]);var _0x5a1edb=answerValidation['validate'](_0x54e732[_0x70ba('0x2b')]);if(_0x5a1edb['length']>0x0){return _0x5ee74c[_0x70ba('0x19')](0x190)[_0x70ba('0x2c')](_0x5a1edb);}var _0x705ca4=_0x54e732[_0x70ba('0x2b')][_0x70ba('0x36')];var _0x51f4df=_0x54e732[_0x70ba('0x2b')][_0x70ba('0x37')];return getAgent(_0x705ca4)[_0x70ba('0x22')](function(_0x3dc2f7){logger[_0x70ba('0x13')](_0x70ba('0x3c'),_0x3dc2f7[_0x70ba('0x18')]);emit(util[_0x70ba('0x30')](_0x70ba('0x31'),_0x3dc2f7[_0x70ba('0x18')]),_0x70ba('0x3d'),{'sessionId':_0x51f4df});return _0x5ee74c[_0x70ba('0x19')](0xc8)[_0x70ba('0x2c')]({'error':![],'message':_0x70ba('0x3e')});})[_0x70ba('0x39')](handleError(_0x5ee74c));};exports['hold']=function(_0xd7638f,_0x3121f6){logger['info'](_0x70ba('0x3f'),_0xd7638f[_0x70ba('0x2b')]);var _0x3de825=holdValidation[_0x70ba('0xe')](_0xd7638f[_0x70ba('0x2b')]);if(_0x3de825[_0x70ba('0x26')]>0x0){return _0x3121f6[_0x70ba('0x19')](0x190)['json'](_0x3de825);}var _0x2e2613=_0xd7638f[_0x70ba('0x2b')][_0x70ba('0x36')];var _0x3d1f89=_0xd7638f[_0x70ba('0x2b')][_0x70ba('0x37')];return getAgent(_0x2e2613)[_0x70ba('0x22')](function(_0x400c37){logger[_0x70ba('0x13')](_0x70ba('0x3c'),_0x400c37[_0x70ba('0x18')]);emit(util[_0x70ba('0x30')](_0x70ba('0x31'),_0x400c37[_0x70ba('0x18')]),_0x70ba('0x40'),{'sessionId':_0x3d1f89});return _0x3121f6[_0x70ba('0x19')](0xc8)[_0x70ba('0x2c')]({'error':![],'message':'hold\x20executed!'});})[_0x70ba('0x39')](handleError(_0x3121f6));};exports[_0x70ba('0x41')]=function(_0x2dc3c5,_0x19c99c){logger['info']('unhold\x20fired:',_0x2dc3c5['body']);var _0x471d19=unholdValidation[_0x70ba('0xe')](_0x2dc3c5['body']);if(_0x471d19['length']>0x0){return _0x19c99c[_0x70ba('0x19')](0x190)[_0x70ba('0x2c')](_0x471d19);}var _0x3e3779=_0x2dc3c5[_0x70ba('0x2b')][_0x70ba('0x36')];var _0x4e2397=_0x2dc3c5[_0x70ba('0x2b')]['sessionId'];return getAgent(_0x3e3779)['then'](function(_0x361699){logger[_0x70ba('0x13')](_0x70ba('0x3c'),_0x361699[_0x70ba('0x18')]);emit(util['format'](_0x70ba('0x31'),_0x361699[_0x70ba('0x18')]),'webbar:unhold',{'sessionId':_0x4e2397});return _0x19c99c['status'](0xc8)['json']({'error':![],'message':'unhold\x20executed!'});})[_0x70ba('0x39')](handleError(_0x19c99c));};exports[_0x70ba('0x42')]=function(_0x1cb9c7,_0x4cc5b1){logger[_0x70ba('0x13')](_0x70ba('0x43'),_0x4cc5b1[_0x70ba('0x2b')]);var _0x5214eb=callsValidation[_0x70ba('0xe')](_0x1cb9c7[_0x70ba('0x2b')]);if(_0x5214eb['length']>0x0){return _0x4cc5b1['status'](0x190)[_0x70ba('0x2c')](_0x5214eb);}var _0x15b3ab=_0x1cb9c7[_0x70ba('0x2b')][_0x70ba('0x36')];var _0x10e824=respondWithRpcPromise(_0x70ba('0x23'));var _0x44cb31=getAgent(_0x15b3ab);return Promise['all']([_0x10e824,_0x44cb31])[_0x70ba('0x22')](function(_0x27d101){var _0x4de412=_0x27d101[0x0];var _0x508da6=_0x27d101[0x1];var _0x137b7d=_[_0x70ba('0x24')](_0x4de412['rows'],function(_0x4ea26b){return _0x4ea26b[_0x70ba('0x25')]==_0x508da6['id'];});return _0x4cc5b1['status'](0xc8)['json']({'count':_0x137b7d[_0x70ba('0x26')],'rows':_0x137b7d});})[_0x70ba('0x39')](handleError(_0x4cc5b1));};exports[_0x70ba('0x44')]=function(_0xb03649,_0x10bb90){logger[_0x70ba('0x13')](_0x70ba('0x45'),_0xb03649['body']);var _0x46a8a6=conferenceValidation[_0x70ba('0xe')](_0xb03649[_0x70ba('0x2b')]);if(_0x46a8a6[_0x70ba('0x26')]>0x0){return _0x10bb90[_0x70ba('0x19')](0x190)[_0x70ba('0x2c')](_0x46a8a6);}var _0x5d58a1=_0xb03649[_0x70ba('0x2b')]['userId'];return getAgent(_0x5d58a1)[_0x70ba('0x22')](function(_0x4b385b){logger[_0x70ba('0x13')](_0x70ba('0x3c'),_0x4b385b[_0x70ba('0x18')]);emit(util[_0x70ba('0x30')](_0x70ba('0x31'),_0x4b385b[_0x70ba('0x18')]),'webbar:conference');return _0x10bb90[_0x70ba('0x19')](0xc8)['json']({'error':![],'message':'conference\x20executed!'});})[_0x70ba('0x39')](handleError(_0x10bb90));};exports[_0x70ba('0x46')]=function(_0x5b1824,_0x208333){logger['info'](_0x70ba('0x47'),_0x5b1824[_0x70ba('0x2b')]);var _0x378893=transferValidation['validate'](_0x5b1824[_0x70ba('0x2b')]);if(_0x378893['length']>0x0){return _0x208333[_0x70ba('0x19')](0x190)['json'](_0x378893);}var _0x2ee3d0=_0x5b1824[_0x70ba('0x2b')][_0x70ba('0x36')];var _0x4ebc09=_0x5b1824['body'][_0x70ba('0x37')];var _0x530324=_0x5b1824[_0x70ba('0x2b')][_0x70ba('0x48')];return getAgent(_0x2ee3d0)[_0x70ba('0x22')](function(_0x32a246){logger['info'](_0x70ba('0x3c'),_0x32a246[_0x70ba('0x18')]);emit(util[_0x70ba('0x30')](_0x70ba('0x31'),_0x32a246[_0x70ba('0x18')]),_0x70ba('0x49'),{'sessionId':_0x4ebc09,'transferNumber':_0x530324});return _0x208333[_0x70ba('0x19')](0xc8)[_0x70ba('0x2c')]({'error':![],'message':'transfer\x20executed!'});})[_0x70ba('0x39')](handleError(_0x208333));};
\ No newline at end of file
+var _0x4876=['send','NotFound','request','then','message','result','catch','User','agent','VoiceChannels','all','rows','sessionId','length','sessionId\x20','\x20not\x20found!','originate','originate\x20fired:','json','body','callNumber','callerId','callbackUrl','entityFound:','user:%s','webbar:originate','originate\x20executed!','hangup','hangup\x20fired:','userId','format','webbar:hangup','hangup\x20executed!','answer','answer\x20fired:','webbar:answer','answer\x20executed!','hold\x20fired:','webbar:hold','hold\x20executed!','unhold','unhold\x20fired:','webbar:unhold','unhold\x20executed!','calls','calls\x20fired:','filter','conference','conference\x20fired:','webbar:conference','transfer','transferNumber','webbar:transfer','transfer\x20executed!','../../mysqldb','bluebird','client','http','../../config/logger','webbarapi','redis','defaults','localhost','socket.io-emitter','validate','number','userId\x20is\x20required','string','callNumber\x20is\x20required','sessionId\x20is\x20required','transferNumber\x20is\x20required','info','stringify','emit','error','stack','name','status'];(function(_0x56b225,_0x1c1a1d){var _0x475a87=function(_0x11b923){while(--_0x11b923){_0x56b225['push'](_0x56b225['shift']());}};_0x475a87(++_0x1c1a1d);}(_0x4876,0x84));var _0x6487=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x4876[_0x3dd15e];return _0x231fd0;};'use strict';var path=require('path');var fs=require('fs');var _=require('lodash');var db=require(_0x6487('0x0'))['db'];var config=require('../../config/environment');var util=require('util');var BPromise=require(_0x6487('0x1'));var jayson=require('jayson/promise');var amiClient=jayson[_0x6487('0x2')][_0x6487('0x3')]({'port':0x232a});var logger=require(_0x6487('0x4'))(_0x6487('0x5'));var Redis=require('ioredis');config[_0x6487('0x6')]=_[_0x6487('0x7')](config['redis'],{'host':_0x6487('0x8'),'port':0x18eb});var io=require(_0x6487('0x9'))(new Redis(config[_0x6487('0x6')]));var Schema=require(_0x6487('0xa'));var originateValidation=new Schema({'userId':{'type':_0x6487('0xb'),'required':[!![],_0x6487('0xc')]},'callNumber':{'type':_0x6487('0xd'),'required':[!![],_0x6487('0xe')]},'callerId':{'type':_0x6487('0xd')},'callbackUrl':{'type':'string'}});var hangupValidation=new Schema({'userId':{'type':_0x6487('0xb'),'required':[!![],_0x6487('0xc')]},'sessionId':{'type':_0x6487('0xd'),'required':![]}});var answerValidation=new Schema({'userId':{'type':_0x6487('0xb'),'required':[!![],_0x6487('0xc')]},'sessionId':{'type':_0x6487('0xd'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0x6487('0xb'),'required':[!![],_0x6487('0xc')]},'sessionId':{'type':'string','required':[!![],_0x6487('0xf')]},'transferNumber':{'type':_0x6487('0xd'),'required':[!![],_0x6487('0x10')]}});var holdValidation=new Schema({'userId':{'type':_0x6487('0xb'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0x6487('0xd'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0x6487('0xb'),'required':[!![],_0x6487('0xc')]},'sessionId':{'type':_0x6487('0xd'),'required':![]}});var callsValidation=new Schema({'userId':{'type':'number','required':[!![],'userId\x20is\x20required']}});var conferenceValidation=new Schema({'userId':{'type':_0x6487('0xb'),'required':[!![],'userId\x20is\x20required']}});function emit(_0x2fdfc3,_0x583f04,_0x1bd934){logger[_0x6487('0x11')](_0x2fdfc3,_0x583f04,JSON[_0x6487('0x12')](_0x1bd934));io['to'](_0x2fdfc3)[_0x6487('0x13')](_0x583f04,_0x1bd934);}function handleError(_0x18c6cf){return function(_0x59514e){console['log']('handleError:',_0x59514e,_0x59514e instanceof RangeError);logger[_0x6487('0x14')](_0x59514e[_0x6487('0x15')]);if(_0x59514e instanceof RangeError){if(_0x59514e[_0x6487('0x16')]){delete _0x59514e[_0x6487('0x16')];}_0x18c6cf[_0x6487('0x17')](0x194)[_0x6487('0x18')](_0x59514e);}else{if(_0x59514e[_0x6487('0x16')]){delete _0x59514e[_0x6487('0x16')];}_0x18c6cf[_0x6487('0x17')](0x1f4)[_0x6487('0x18')](_0x59514e);}};}function checkError(){return function(_0xee261d){if(!_0xee261d){throw new RangeError(_0x6487('0x19'));}return _0xee261d;};}function respondWithRpcPromise(_0x3efa5e,_0x8cdc62){return new BPromise(function(_0x21b8e8,_0x21050d){var _0x3affe7=amiClient;return _0x3affe7[_0x6487('0x1a')](_0x3efa5e,_0x8cdc62)[_0x6487('0x1b')](function(_0x4d06b2){if(_0x4d06b2['error']){if(_0x4d06b2[_0x6487('0x14')]['code']===0x1f4){return _0x21050d(_0x4d06b2['error'][_0x6487('0x1c')]);}return _0x21b8e8(_0x4d06b2[_0x6487('0x14')]['message']);}else{_0x21b8e8(_0x4d06b2[_0x6487('0x1d')]);}})[_0x6487('0x1e')](function(_0x2f4190){_0x21050d(_0x2f4190);});});}function getAgent(_0x3afdc6){return db[_0x6487('0x1f')]['findOne']({'where':{'id':_0x3afdc6,'role':_0x6487('0x20')}})['then'](checkError());}function getAgentCheckSession(_0x335bd8,_0x5a29f9){return new BPromise(function(_0x5a9ef0,_0x412056){var _0x31ede3=respondWithRpcPromise(_0x6487('0x21'));var _0x4c424a=getAgent(_0x335bd8);Promise[_0x6487('0x22')]([_0x31ede3,_0x4c424a])[_0x6487('0x1b')](function(_0x33085b){var _0x63ddc7=_0x33085b[0x0];var _0x35b089=_0x33085b[0x1];var _0x8b42e5=_['filter'](_0x63ddc7[_0x6487('0x23')],function(_0x270e6e){return _0x270e6e['UserId']==_0x35b089['id']&&_0x270e6e[_0x6487('0x24')]==_0x5a29f9;});if(_0x8b42e5[_0x6487('0x25')]==0x1){_0x5a9ef0(_0x35b089);}else{_0x412056(new RangeError(_0x6487('0x26')+_0x5a29f9+_0x6487('0x27')));}});});}exports[_0x6487('0x28')]=function(_0x809bb8,_0x21aff9){logger['info'](_0x6487('0x29'),_0x809bb8['body']);var _0x2d320c=originateValidation['validate'](_0x809bb8['body']);if(_0x2d320c['length']>0x0){return _0x21aff9['status'](0x190)[_0x6487('0x2a')](_0x2d320c);}var _0x36c78e=_0x809bb8[_0x6487('0x2b')]['userId'];var _0x1c9393=_0x809bb8['body'][_0x6487('0x2c')];var _0x3685ff=_0x809bb8[_0x6487('0x2b')][_0x6487('0x2d')];var _0x1bbe0b=_0x809bb8['body'][_0x6487('0x2e')];return getAgent(_0x36c78e)['then'](function(_0x32dbf5){logger[_0x6487('0x11')](_0x6487('0x2f'),_0x32dbf5[_0x6487('0x16')]);emit(util['format'](_0x6487('0x30'),_0x32dbf5[_0x6487('0x16')]),_0x6487('0x31'),{'callNumber':_0x1c9393,'callerId':_0x3685ff,'callbackUrl':_0x1bbe0b});return _0x21aff9['status'](0xc8)['json']({'error':![],'message':_0x6487('0x32')});})['catch'](handleError(_0x21aff9));};exports[_0x6487('0x33')]=function(_0x175a9c,_0xff0c42){logger['info'](_0x6487('0x34'),_0x175a9c[_0x6487('0x2b')]);var _0xd9235c=hangupValidation[_0x6487('0xa')](_0x175a9c[_0x6487('0x2b')]);if(_0xd9235c[_0x6487('0x25')]>0x0){return _0xff0c42[_0x6487('0x17')](0x190)['json'](_0xd9235c);}var _0xa2a8dc=_0x175a9c[_0x6487('0x2b')][_0x6487('0x35')];var _0x5f4720=_0x175a9c[_0x6487('0x2b')]['sessionId'];return getAgent(_0xa2a8dc)[_0x6487('0x1b')](function(_0x499b8a){logger[_0x6487('0x11')]('entityFound:',_0x499b8a[_0x6487('0x16')]);emit(util[_0x6487('0x36')](_0x6487('0x30'),_0x499b8a[_0x6487('0x16')]),_0x6487('0x37'),{'sessionId':_0x5f4720});return _0xff0c42[_0x6487('0x17')](0xc8)[_0x6487('0x2a')]({'error':![],'message':_0x6487('0x38')});})['catch'](handleError(_0xff0c42));};exports[_0x6487('0x39')]=function(_0x33feca,_0x746f40){logger[_0x6487('0x11')](_0x6487('0x3a'),_0x33feca[_0x6487('0x2b')]);var _0x594b42=answerValidation[_0x6487('0xa')](_0x33feca[_0x6487('0x2b')]);if(_0x594b42['length']>0x0){return _0x746f40[_0x6487('0x17')](0x190)[_0x6487('0x2a')](_0x594b42);}var _0x26f2da=_0x33feca[_0x6487('0x2b')][_0x6487('0x35')];var _0x1168c9=_0x33feca[_0x6487('0x2b')][_0x6487('0x24')];return getAgent(_0x26f2da)[_0x6487('0x1b')](function(_0x5a3f2b){logger[_0x6487('0x11')](_0x6487('0x2f'),_0x5a3f2b[_0x6487('0x16')]);emit(util['format']('user:%s',_0x5a3f2b[_0x6487('0x16')]),_0x6487('0x3b'),{'sessionId':_0x1168c9});return _0x746f40[_0x6487('0x17')](0xc8)[_0x6487('0x2a')]({'error':![],'message':_0x6487('0x3c')});})[_0x6487('0x1e')](handleError(_0x746f40));};exports['hold']=function(_0xc43296,_0x480fb5){logger[_0x6487('0x11')](_0x6487('0x3d'),_0xc43296[_0x6487('0x2b')]);var _0x223fe0=holdValidation[_0x6487('0xa')](_0xc43296[_0x6487('0x2b')]);if(_0x223fe0[_0x6487('0x25')]>0x0){return _0x480fb5[_0x6487('0x17')](0x190)[_0x6487('0x2a')](_0x223fe0);}var _0x1e8ae7=_0xc43296[_0x6487('0x2b')][_0x6487('0x35')];var _0x552ed6=_0xc43296[_0x6487('0x2b')]['sessionId'];return getAgent(_0x1e8ae7)[_0x6487('0x1b')](function(_0x2c4272){logger[_0x6487('0x11')](_0x6487('0x2f'),_0x2c4272[_0x6487('0x16')]);emit(util[_0x6487('0x36')](_0x6487('0x30'),_0x2c4272[_0x6487('0x16')]),_0x6487('0x3e'),{'sessionId':_0x552ed6});return _0x480fb5[_0x6487('0x17')](0xc8)[_0x6487('0x2a')]({'error':![],'message':_0x6487('0x3f')});})[_0x6487('0x1e')](handleError(_0x480fb5));};exports[_0x6487('0x40')]=function(_0x2a7715,_0x2dde3c){logger[_0x6487('0x11')](_0x6487('0x41'),_0x2a7715[_0x6487('0x2b')]);var _0x56aa08=unholdValidation[_0x6487('0xa')](_0x2a7715[_0x6487('0x2b')]);if(_0x56aa08['length']>0x0){return _0x2dde3c[_0x6487('0x17')](0x190)[_0x6487('0x2a')](_0x56aa08);}var _0x128700=_0x2a7715[_0x6487('0x2b')]['userId'];var _0x3506fc=_0x2a7715[_0x6487('0x2b')][_0x6487('0x24')];return getAgent(_0x128700)[_0x6487('0x1b')](function(_0x2deb3c){logger[_0x6487('0x11')](_0x6487('0x2f'),_0x2deb3c['name']);emit(util[_0x6487('0x36')](_0x6487('0x30'),_0x2deb3c[_0x6487('0x16')]),_0x6487('0x42'),{'sessionId':_0x3506fc});return _0x2dde3c[_0x6487('0x17')](0xc8)[_0x6487('0x2a')]({'error':![],'message':_0x6487('0x43')});})[_0x6487('0x1e')](handleError(_0x2dde3c));};exports[_0x6487('0x44')]=function(_0xe0858c,_0x301400){logger['info'](_0x6487('0x45'),_0x301400['body']);var _0xe1f349=callsValidation[_0x6487('0xa')](_0xe0858c[_0x6487('0x2b')]);if(_0xe1f349[_0x6487('0x25')]>0x0){return _0x301400[_0x6487('0x17')](0x190)[_0x6487('0x2a')](_0xe1f349);}var _0x2fb140=_0xe0858c[_0x6487('0x2b')]['userId'];var _0x4d7a8a=respondWithRpcPromise(_0x6487('0x21'));var _0x1c0ab6=getAgent(_0x2fb140);return Promise['all']([_0x4d7a8a,_0x1c0ab6])[_0x6487('0x1b')](function(_0x3fd845){var _0x382ce1=_0x3fd845[0x0];var _0x7b0612=_0x3fd845[0x1];var _0x1c7a3f=_[_0x6487('0x46')](_0x382ce1[_0x6487('0x23')],function(_0x5296dd){return _0x5296dd['UserId']==_0x7b0612['id'];});return _0x301400['status'](0xc8)['json']({'count':_0x1c7a3f['length'],'rows':_0x1c7a3f});})[_0x6487('0x1e')](handleError(_0x301400));};exports[_0x6487('0x47')]=function(_0xfed030,_0xec93d9){logger[_0x6487('0x11')](_0x6487('0x48'),_0xfed030[_0x6487('0x2b')]);var _0x27e7a5=conferenceValidation['validate'](_0xfed030['body']);if(_0x27e7a5[_0x6487('0x25')]>0x0){return _0xec93d9[_0x6487('0x17')](0x190)[_0x6487('0x2a')](_0x27e7a5);}var _0x1585ae=_0xfed030[_0x6487('0x2b')][_0x6487('0x35')];return getAgent(_0x1585ae)[_0x6487('0x1b')](function(_0xce3a79){logger['info'](_0x6487('0x2f'),_0xce3a79[_0x6487('0x16')]);emit(util[_0x6487('0x36')](_0x6487('0x30'),_0xce3a79[_0x6487('0x16')]),_0x6487('0x49'));return _0xec93d9[_0x6487('0x17')](0xc8)[_0x6487('0x2a')]({'error':![],'message':'conference\x20executed!'});})['catch'](handleError(_0xec93d9));};exports[_0x6487('0x4a')]=function(_0x3d4a23,_0x3ea745){logger[_0x6487('0x11')]('transfer\x20fired:',_0x3d4a23['body']);var _0xe432f4=transferValidation[_0x6487('0xa')](_0x3d4a23[_0x6487('0x2b')]);if(_0xe432f4[_0x6487('0x25')]>0x0){return _0x3ea745[_0x6487('0x17')](0x190)[_0x6487('0x2a')](_0xe432f4);}var _0x3a7a85=_0x3d4a23[_0x6487('0x2b')][_0x6487('0x35')];var _0x1eeecb=_0x3d4a23['body'][_0x6487('0x24')];var _0x283454=_0x3d4a23[_0x6487('0x2b')][_0x6487('0x4b')];return getAgent(_0x3a7a85)[_0x6487('0x1b')](function(_0x1d3eae){logger[_0x6487('0x11')](_0x6487('0x2f'),_0x1d3eae['name']);emit(util[_0x6487('0x36')]('user:%s',_0x1d3eae[_0x6487('0x16')]),_0x6487('0x4c'),{'sessionId':_0x1eeecb,'transferNumber':_0x283454});return _0x3ea745[_0x6487('0x17')](0xc8)[_0x6487('0x2a')]({'error':![],'message':_0x6487('0x4d')});})['catch'](handleError(_0x3ea745));};
\ No newline at end of file
index 086bc5a..e9baf02 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x47c5=['/:id/notify','notify','send','update','delete','removeAnswers','removeAgents','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./whatsappAccount.controller','get','index','/describe','isAuthenticated','describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/users','/:id/applications','getApplications','post','create','addDisposition','addAnswer','addApplications'];(function(_0x2b10c6,_0x185590){var _0x3789d2=function(_0x272987){while(--_0x272987){_0x2b10c6['push'](_0x2b10c6['shift']());}};_0x3789d2(++_0x185590);}(_0x47c5,0x165));var _0x547c=function(_0x56d896,_0x3b4c9c){_0x56d896=_0x56d896-0x0;var _0x293639=_0x47c5[_0x56d896];return _0x293639;};'use strict';var multer=require(_0x547c('0x0'));var util=require(_0x547c('0x1'));var path=require(_0x547c('0x2'));var timeout=require(_0x547c('0x3'));var express=require(_0x547c('0x4'));var router=express[_0x547c('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x547c('0x6'));var interaction=require(_0x547c('0x7'));var config=require('../../config/environment');var controller=require(_0x547c('0x8'));router[_0x547c('0x9')]('/',auth['isAuthenticated'](),controller[_0x547c('0xa')]);router[_0x547c('0x9')](_0x547c('0xb'),auth[_0x547c('0xc')](),controller[_0x547c('0xd')]);router[_0x547c('0x9')](_0x547c('0xe'),auth[_0x547c('0xc')](),controller[_0x547c('0xf')]);router[_0x547c('0x9')](_0x547c('0x10'),auth[_0x547c('0xc')](),controller[_0x547c('0x11')]);router[_0x547c('0x9')](_0x547c('0x12'),auth[_0x547c('0xc')](),controller[_0x547c('0x13')]);router['get'](_0x547c('0x14'),auth[_0x547c('0xc')](),controller['getAgents']);router[_0x547c('0x9')](_0x547c('0x15'),auth[_0x547c('0xc')](),controller[_0x547c('0x16')]);router[_0x547c('0x17')]('/',auth[_0x547c('0xc')](),controller[_0x547c('0x18')]);router[_0x547c('0x17')](_0x547c('0x10'),auth[_0x547c('0xc')](),controller[_0x547c('0x19')]);router[_0x547c('0x17')](_0x547c('0x12'),auth[_0x547c('0xc')](),controller[_0x547c('0x1a')]);router[_0x547c('0x17')](_0x547c('0x14'),auth[_0x547c('0xc')](),controller['addAgents']);router['post'](_0x547c('0x15'),auth[_0x547c('0xc')](),controller[_0x547c('0x1b')]);router['post'](_0x547c('0x1c'),controller[_0x547c('0x1d')]);router[_0x547c('0x17')]('/:id/send',auth[_0x547c('0xc')](),controller[_0x547c('0x1e')]);router['put']('/:id',auth[_0x547c('0xc')](),controller[_0x547c('0x1f')]);router['delete'](_0x547c('0xe'),auth[_0x547c('0xc')](),controller['destroy']);router[_0x547c('0x20')](_0x547c('0x10'),auth[_0x547c('0xc')](),controller['removeDispositions']);router[_0x547c('0x20')](_0x547c('0x12'),auth[_0x547c('0xc')](),controller[_0x547c('0x21')]);router[_0x547c('0x20')](_0x547c('0x14'),auth[_0x547c('0xc')](),controller[_0x547c('0x22')]);module['exports']=router;
\ No newline at end of file
+var _0x4888=['/:id','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/users','getAgents','getApplications','addDisposition','post','addAnswer','addAgents','/:id/applications','addApplications','/:id/notify','notify','/:id/send','update','delete','destroy','removeDispositions','removeAnswers','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./whatsappAccount.controller','get','isAuthenticated','index'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0x4888,0x198));var _0x8488=function(_0x24fd11,_0x57c976){_0x24fd11=_0x24fd11-0x0;var _0x5da68f=_0x4888[_0x24fd11];return _0x5da68f;};'use strict';var multer=require('multer');var util=require(_0x8488('0x0'));var path=require(_0x8488('0x1'));var timeout=require(_0x8488('0x2'));var express=require(_0x8488('0x3'));var router=express[_0x8488('0x4')]();var fs_extra=require(_0x8488('0x5'));var auth=require(_0x8488('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x8488('0x7'));var controller=require(_0x8488('0x8'));router[_0x8488('0x9')]('/',auth[_0x8488('0xa')](),controller[_0x8488('0xb')]);router[_0x8488('0x9')]('/describe',auth['isAuthenticated'](),controller['describe']);router['get'](_0x8488('0xc'),auth[_0x8488('0xa')](),controller['show']);router[_0x8488('0x9')](_0x8488('0xd'),auth[_0x8488('0xa')](),controller[_0x8488('0xe')]);router['get'](_0x8488('0xf'),auth[_0x8488('0xa')](),controller[_0x8488('0x10')]);router[_0x8488('0x9')](_0x8488('0x11'),auth['isAuthenticated'](),controller[_0x8488('0x12')]);router[_0x8488('0x9')]('/:id/applications',auth['isAuthenticated'](),controller[_0x8488('0x13')]);router['post']('/',auth[_0x8488('0xa')](),controller['create']);router['post'](_0x8488('0xd'),auth[_0x8488('0xa')](),controller[_0x8488('0x14')]);router[_0x8488('0x15')](_0x8488('0xf'),auth[_0x8488('0xa')](),controller[_0x8488('0x16')]);router['post'](_0x8488('0x11'),auth[_0x8488('0xa')](),controller[_0x8488('0x17')]);router[_0x8488('0x15')](_0x8488('0x18'),auth[_0x8488('0xa')](),controller[_0x8488('0x19')]);router[_0x8488('0x15')](_0x8488('0x1a'),controller[_0x8488('0x1b')]);router[_0x8488('0x15')](_0x8488('0x1c'),auth[_0x8488('0xa')](),controller['send']);router['put'](_0x8488('0xc'),auth[_0x8488('0xa')](),controller[_0x8488('0x1d')]);router[_0x8488('0x1e')](_0x8488('0xc'),auth[_0x8488('0xa')](),controller[_0x8488('0x1f')]);router[_0x8488('0x1e')](_0x8488('0xd'),auth['isAuthenticated'](),controller[_0x8488('0x20')]);router[_0x8488('0x1e')](_0x8488('0xf'),auth[_0x8488('0xa')](),controller[_0x8488('0x21')]);router['delete']('/:id/users',auth['isAuthenticated'](),controller['removeAgents']);module[_0x8488('0x22')]=router;
\ No newline at end of file
index f886a6f..614bbc9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe7db=['Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','sequelize','randomstring','exports','STRING','name','generate','ENUM','twilio','sinch','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER'];(function(_0xeae311,_0x3bd316){var _0x185cb7=function(_0x38ad53){while(--_0x38ad53){_0xeae311['push'](_0xeae311['shift']());}};_0x185cb7(++_0x3bd316);}(_0xe7db,0x158));var _0xbe7d=function(_0x2d2c16,_0x4e88b6){_0x2d2c16=_0x2d2c16-0x0;var _0x53f2fb=_0xe7db[_0x2d2c16];return _0x53f2fb;};'use strict';var Sequelize=require(_0xbe7d('0x0'));var rs=require(_0xbe7d('0x1'));module[_0xbe7d('0x2')]={'name':{'type':Sequelize[_0xbe7d('0x3')],'unique':_0xbe7d('0x4'),'allowNull':![]},'key':{'type':Sequelize[_0xbe7d('0x3')],'allowNull':![]},'remote':{'type':Sequelize['STRING'],'allowNull':![]},'token':{'type':Sequelize[_0xbe7d('0x3')],'defaultValue':function(){return rs[_0xbe7d('0x5')]();}},'phone':{'type':Sequelize[_0xbe7d('0x3')]},'type':{'type':Sequelize[_0xbe7d('0x6')](_0xbe7d('0x7'),_0xbe7d('0x8'))},'accountSid':{'type':Sequelize[_0xbe7d('0x3')]},'baseUrl':{'type':Sequelize[_0xbe7d('0x3')]},'authToken':{'type':Sequelize[_0xbe7d('0x3')]},'notificationTemplate':{'type':Sequelize[_0xbe7d('0x9')],'defaultValue':function(){return _0xbe7d('0xa');}},'notificationSound':{'type':Sequelize[_0xbe7d('0xb')],'defaultValue':![]},'notificationShake':{'type':Sequelize[_0xbe7d('0xb')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xbe7d('0xb')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xbe7d('0xc')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xbe7d('0xc')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xbe7d('0xc')],'comment':_0xbe7d('0xd')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0xbe7d('0xe'),'set':function(_0x1c329a){if(!_0x1c329a){this[_0xbe7d('0xf')](_0xbe7d('0x10'),null);}this[_0xbe7d('0xf')]('mandatoryDisposition',_0x1c329a);}},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x0f75=['generate','ENUM','twilio','sinch','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','sequelize','randomstring','exports','STRING'];(function(_0x4e3d04,_0x2d0d13){var _0xd9ab65=function(_0x4ba091){while(--_0x4ba091){_0x4e3d04['push'](_0x4e3d04['shift']());}};_0xd9ab65(++_0x2d0d13);}(_0x0f75,0x1ac));var _0x50f7=function(_0x4782f6,_0x4433a1){_0x4782f6=_0x4782f6-0x0;var _0x5646e4=_0x0f75[_0x4782f6];return _0x5646e4;};'use strict';var Sequelize=require(_0x50f7('0x0'));var rs=require(_0x50f7('0x1'));module[_0x50f7('0x2')]={'name':{'type':Sequelize[_0x50f7('0x3')],'unique':'name','allowNull':![]},'key':{'type':Sequelize[_0x50f7('0x3')],'allowNull':![]},'remote':{'type':Sequelize[_0x50f7('0x3')],'allowNull':![]},'token':{'type':Sequelize[_0x50f7('0x3')],'defaultValue':function(){return rs[_0x50f7('0x4')]();}},'phone':{'type':Sequelize[_0x50f7('0x3')]},'type':{'type':Sequelize[_0x50f7('0x5')](_0x50f7('0x6'),_0x50f7('0x7'))},'accountSid':{'type':Sequelize[_0x50f7('0x3')]},'baseUrl':{'type':Sequelize[_0x50f7('0x3')]},'authToken':{'type':Sequelize[_0x50f7('0x3')]},'notificationTemplate':{'type':Sequelize[_0x50f7('0x8')],'defaultValue':function(){return _0x50f7('0x9');}},'notificationSound':{'type':Sequelize[_0x50f7('0xa')],'defaultValue':![]},'notificationShake':{'type':Sequelize[_0x50f7('0xa')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x50f7('0xb')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x50f7('0xa')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x50f7('0xb')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x50f7('0xb')],'comment':_0x50f7('0xc')},'mandatoryDisposition':{'type':Sequelize[_0x50f7('0xa')],'defaultValue':![],'comment':_0x50f7('0xd'),'set':function(_0x40f42e){if(!_0x40f42e){this[_0x50f7('0xe')](_0x50f7('0xf'),null);}this[_0x50f7('0xe')]('mandatoryDisposition',_0x40f42e);}},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 8a91445..0ded51c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x60c1=['asc','Sequelize','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','mobile','from','From','replace','whatsapp:','Body','messageId','MessageSid','notifications','isNil','ValidationError','from\x20is\x20mandatory','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','ListId','Contacts','DESC','list','CmContact','contact','WhatsappInteraction','spread','interaction','created','autoclose','push','unmanaged','WhatsappMessage','UserId','unshift','agent','waitForTheAssignedAgent','*,*,*,*','Start','startRouting','receiveMessage','entity\x20found','WhatsappAccount,\x20%s,\x20%s,\x20%s,\x20%s','twilio','Content-Type','text/xml','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','to\x20is\x20mandatory','List','Messages','dataValues','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./whatsappAccount.socket','register','client','http','request','then','WhatsappAccount,\x20%s,\x20%s','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','update','destroy','get','WhatsappAccounts','UserProfileResource','name','send','index','Pause','mandatoryDispositionPause','map','WhatsappAccount','fieldName','key','model','query','filters','intersection','attributes','fields','length','nolimit','order','sort','pick','filter','where','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','keys','rawAttributes','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','find','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','WhatsappAccountId','Disposition','getDispositions','hasOwnProperty','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','findOne','removeAnswers','addAgents','omit','emit','userWhatsappAccount:save','removeAgents','userWhatsappAccount:remove','getAgents','User','addApplications','sequelize','transaction','READ_COMMITTED','WhatsappApplication','findAndCountAll','priority','stack','finally','getApplications','whatsapp','account','sinch','statuses','state','timestamp','applications','orderBy','Applications'];(function(_0x284096,_0x5af6ef){var _0x2fefdb=function(_0x11e911){while(--_0x11e911){_0x284096['push'](_0x284096['shift']());}};_0x2fefdb(++_0x5af6ef);}(_0x60c1,0x103));var _0x160c=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0x60c1[_0x42cae2];return _0x5f256f;};'use strict';var emlformat=require(_0x160c('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x160c('0x1'));var jsonpatch=require(_0x160c('0x2'));var rp=require(_0x160c('0x3'));var moment=require(_0x160c('0x4'));var BPromise=require(_0x160c('0x5'));var Mustache=require(_0x160c('0x6'));var util=require(_0x160c('0x7'));var path=require(_0x160c('0x8'));var sox=require(_0x160c('0x9'));var csv=require(_0x160c('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x160c('0xb'));var _=require(_0x160c('0xc'));var squel=require(_0x160c('0xd'));var crypto=require(_0x160c('0xe'));var jsforce=require(_0x160c('0xf'));var deskjs=require(_0x160c('0x10'));var toCsv=require(_0x160c('0xa'));var querystring=require(_0x160c('0x11'));var Papa=require(_0x160c('0x12'));var Redis=require('ioredis');var authService=require(_0x160c('0x13'));var qs=require(_0x160c('0x14'));var as=require(_0x160c('0x15'));var hardwareService=require(_0x160c('0x16'));var logger=require(_0x160c('0x17'))(_0x160c('0x18'));var utils=require(_0x160c('0x19'));var config=require(_0x160c('0x1a'));var licenseUtil=require(_0x160c('0x1b'));var db=require(_0x160c('0x1c'))['db'];config[_0x160c('0x1d')]=_[_0x160c('0x1e')](config[_0x160c('0x1d')],{'host':_0x160c('0x1f'),'port':0x18eb});var socket=require(_0x160c('0x20'))(new Redis(config[_0x160c('0x1d')]));require(_0x160c('0x21'))[_0x160c('0x22')](socket);var jayson=require('jayson/promise');var client=jayson[_0x160c('0x23')][_0x160c('0x24')]({'port':0x232c});function respondWithRpcPromise(_0x2db328,_0x13f9fe,_0x12104e,_0x48b823){return new BPromise(function(_0x2ec462,_0xa2d316){var _0x1220b6=_0x48b823||client;return _0x1220b6[_0x160c('0x25')](_0x2db328,_0x12104e)[_0x160c('0x26')](function(_0x20cf3c){logger['info'](_0x160c('0x27'),_0x13f9fe,'request\x20sent');logger[_0x160c('0x28')](_0x160c('0x29'),_0x13f9fe,_0x160c('0x2a'),JSON[_0x160c('0x2b')](_0x20cf3c));if(_0x20cf3c['error']){if(_0x20cf3c[_0x160c('0x2c')][_0x160c('0x2d')]===0x1f4){logger['error'](_0x160c('0x27'),_0x13f9fe,_0x20cf3c[_0x160c('0x2c')]['message']);return _0xa2d316(_0x20cf3c[_0x160c('0x2c')][_0x160c('0x2e')]);}logger[_0x160c('0x2c')](_0x160c('0x27'),_0x13f9fe,_0x20cf3c[_0x160c('0x2c')][_0x160c('0x2e')]);return _0x2ec462(_0x20cf3c[_0x160c('0x2c')]['message']);}else{logger[_0x160c('0x2f')](_0x160c('0x27'),_0x13f9fe,_0x160c('0x2a'));_0x2ec462(_0x20cf3c[_0x160c('0x30')]['message']);}})['catch'](function(_0x50a638){logger[_0x160c('0x2c')](_0x160c('0x27'),_0x13f9fe,_0x50a638);_0xa2d316(_0x50a638);});});}function respondWithStatusCode(_0x3780b2,_0x2f3263){_0x2f3263=_0x2f3263||0xcc;return function(_0x19bd4a){if(_0x19bd4a){return _0x3780b2[_0x160c('0x31')](_0x2f3263);}return _0x3780b2[_0x160c('0x32')](_0x2f3263)[_0x160c('0x33')]();};}function respondWithResult(_0x2aaaed,_0x42df86){_0x42df86=_0x42df86||0xc8;return function(_0x4eb0b2){if(_0x4eb0b2){return _0x2aaaed[_0x160c('0x32')](_0x42df86)[_0x160c('0x34')](_0x4eb0b2);}};}function respondWithFilteredResult(_0x3c9914,_0x17b9c8){return function(_0x2429ac){if(_0x2429ac){var _0xacd6b9=typeof _0x17b9c8[_0x160c('0x35')]==='undefined'&&typeof _0x17b9c8['limit']===_0x160c('0x36');var _0x33a726=_0x2429ac[_0x160c('0x37')];var _0x4b1393=_0xacd6b9?0x0:_0x17b9c8[_0x160c('0x35')];var _0x16673=_0xacd6b9?_0x2429ac[_0x160c('0x37')]:_0x17b9c8[_0x160c('0x35')]+_0x17b9c8[_0x160c('0x38')];var _0x452da5;if(_0x16673>=_0x33a726){_0x16673=_0x33a726;_0x452da5=0xc8;}else{_0x452da5=0xce;}_0x3c9914['status'](_0x452da5);return _0x3c9914[_0x160c('0x39')](_0x160c('0x3a'),_0x4b1393+'-'+_0x16673+'/'+_0x33a726)[_0x160c('0x34')](_0x2429ac);}return null;};}function patchUpdates(_0x5be660){return function(_0x18c3b7){try{jsonpatch[_0x160c('0x3b')](_0x18c3b7,_0x5be660,!![]);}catch(_0x3fce43){return BPromise[_0x160c('0x3c')](_0x3fce43);}return _0x18c3b7['save']();};}function saveUpdates(_0x58cbb1,_0x34b334){return function(_0x143926){if(_0x143926){return _0x143926[_0x160c('0x3d')](_0x58cbb1)[_0x160c('0x26')](function(_0x26872f){return _0x26872f;});}return null;};}function removeEntity(_0xcd224,_0x5e7cab){return function(_0x577e0b){if(_0x577e0b){return _0x577e0b[_0x160c('0x3e')]()[_0x160c('0x26')](function(){var _0x5bed52=_0x577e0b[_0x160c('0x3f')]({'plain':!![]});var _0x51345c=_0x160c('0x40');return db[_0x160c('0x41')]['destroy']({'where':{'type':_0x51345c,'resourceId':_0x5bed52['id']}})[_0x160c('0x26')](function(){return _0x577e0b;});})['then'](function(){_0xcd224[_0x160c('0x32')](0xcc)['end']();});}};}function handleEntityNotFound(_0x217461,_0x5d1192){return function(_0xa05750){if(!_0xa05750){_0x217461['sendStatus'](0x194);}return _0xa05750;};}function handleError(_0x3e5f7f,_0x5e8405){_0x5e8405=_0x5e8405||0x1f4;return function(_0x2353e4){logger[_0x160c('0x2c')](_0x2353e4['stack']);if(_0x2353e4[_0x160c('0x42')]){delete _0x2353e4[_0x160c('0x42')];}_0x3e5f7f['status'](_0x5e8405)[_0x160c('0x43')](_0x2353e4);};}exports[_0x160c('0x44')]=function(_0x1daf7c,_0x5ad259){var _0x58c1c1={'include':[{'model':db[_0x160c('0x45')],'as':_0x160c('0x46')}]},_0x650207={},_0x234687={'count':0x0,'rows':[]};var _0x470a2c=_[_0x160c('0x47')](db[_0x160c('0x48')]['rawAttributes'],function(_0x328ed9){return{'name':_0x328ed9[_0x160c('0x49')],'type':_0x328ed9['type'][_0x160c('0x4a')]};});_0x650207[_0x160c('0x4b')]=_[_0x160c('0x47')](_0x470a2c,_0x160c('0x42'));_0x650207[_0x160c('0x4c')]=_['keys'](_0x1daf7c[_0x160c('0x4c')]);_0x650207[_0x160c('0x4d')]=_[_0x160c('0x4e')](_0x650207[_0x160c('0x4b')],_0x650207[_0x160c('0x4c')]);_0x58c1c1[_0x160c('0x4f')]=_[_0x160c('0x4e')](_0x650207[_0x160c('0x4b')],qs[_0x160c('0x50')](_0x1daf7c[_0x160c('0x4c')][_0x160c('0x50')]));_0x58c1c1[_0x160c('0x4f')]=_0x58c1c1[_0x160c('0x4f')][_0x160c('0x51')]?_0x58c1c1[_0x160c('0x4f')]:_0x650207[_0x160c('0x4b')];if(!_0x1daf7c['query']['hasOwnProperty'](_0x160c('0x52'))){_0x58c1c1[_0x160c('0x38')]=qs[_0x160c('0x38')](_0x1daf7c[_0x160c('0x4c')][_0x160c('0x38')]);_0x58c1c1['offset']=qs[_0x160c('0x35')](_0x1daf7c[_0x160c('0x4c')][_0x160c('0x35')]);}_0x58c1c1[_0x160c('0x53')]=qs[_0x160c('0x54')](_0x1daf7c[_0x160c('0x4c')][_0x160c('0x54')]);_0x58c1c1['where']=qs[_0x160c('0x4d')](_[_0x160c('0x55')](_0x1daf7c['query'],_0x650207['filters']),_0x470a2c);if(_0x1daf7c['query'][_0x160c('0x56')]){_0x58c1c1[_0x160c('0x57')]=_[_0x160c('0x58')](_0x58c1c1[_0x160c('0x57')],{'$or':_[_0x160c('0x47')](_0x470a2c,function(_0x1f40cf){if(_0x1f40cf[_0x160c('0x59')]!==_0x160c('0x5a')){var _0x100890={};_0x100890[_0x1f40cf[_0x160c('0x42')]]={'$like':'%'+_0x1daf7c[_0x160c('0x4c')][_0x160c('0x56')]+'%'};return _0x100890;}})});}_0x58c1c1=_['merge']({},_0x58c1c1,_0x1daf7c[_0x160c('0x5b')]);var _0x547c0a={'where':_0x58c1c1[_0x160c('0x57')]};return db['WhatsappAccount'][_0x160c('0x37')](_0x547c0a)[_0x160c('0x26')](function(_0x34cb45){_0x234687[_0x160c('0x37')]=_0x34cb45;if(_0x1daf7c[_0x160c('0x4c')][_0x160c('0x5c')]){_0x58c1c1[_0x160c('0x5d')]=[{'all':!![]}];}return db[_0x160c('0x48')][_0x160c('0x5e')](_0x58c1c1);})['then'](function(_0x5377ef){_0x234687[_0x160c('0x5f')]=_0x5377ef;return _0x234687;})[_0x160c('0x26')](respondWithFilteredResult(_0x5ad259,_0x58c1c1))[_0x160c('0x60')](handleError(_0x5ad259,null));};exports[_0x160c('0x61')]=function(_0xb59475,_0x57fc10){var _0x412446={'raw':![],'where':{'id':_0xb59475[_0x160c('0x62')]['id']},'include':[{'model':db['Pause'],'as':_0x160c('0x46')}]},_0x2e62a6={};_0x2e62a6['model']=_[_0x160c('0x63')](db[_0x160c('0x48')][_0x160c('0x64')]);_0x2e62a6[_0x160c('0x4c')]=_[_0x160c('0x63')](_0xb59475[_0x160c('0x4c')]);_0x2e62a6['filters']=_[_0x160c('0x4e')](_0x2e62a6['model'],_0x2e62a6['query']);_0x412446[_0x160c('0x4f')]=_[_0x160c('0x4e')](_0x2e62a6['model'],qs[_0x160c('0x50')](_0xb59475[_0x160c('0x4c')][_0x160c('0x50')]));_0x412446[_0x160c('0x4f')]=_0x412446[_0x160c('0x4f')][_0x160c('0x51')]?_0x412446[_0x160c('0x4f')]:_0x2e62a6[_0x160c('0x4b')];if(_0xb59475[_0x160c('0x4c')][_0x160c('0x5c')]){_0x412446[_0x160c('0x5d')]=[{'all':!![]}];}_0x412446=_[_0x160c('0x58')]({},_0x412446,_0xb59475['options']);return db[_0x160c('0x48')]['find'](_0x412446)[_0x160c('0x26')](handleEntityNotFound(_0x57fc10,null))[_0x160c('0x26')](respondWithResult(_0x57fc10,null))[_0x160c('0x60')](handleError(_0x57fc10,null));};exports[_0x160c('0x65')]=function(_0x395b04,_0x8d9c25){return db[_0x160c('0x48')]['create'](_0x395b04['body'],{})['then'](function(_0xc58a83){var _0x374456=_0x395b04['user'][_0x160c('0x3f')]({'plain':!![]});if(!_0x374456)throw new Error(_0x160c('0x66'));if(_0x374456[_0x160c('0x67')]===_0x160c('0x68')){var _0x1092ca=_0xc58a83[_0x160c('0x3f')]({'plain':!![]});var _0x293032='WhatsappAccounts';return db[_0x160c('0x69')][_0x160c('0x6a')]({'where':{'name':_0x293032,'userProfileId':_0x374456[_0x160c('0x6b')]},'raw':!![]})[_0x160c('0x26')](function(_0x38b0b3){if(_0x38b0b3&&_0x38b0b3['autoAssociation']===0x0){return db[_0x160c('0x41')]['create']({'name':_0x1092ca[_0x160c('0x42')],'resourceId':_0x1092ca['id'],'type':_0x38b0b3['name'],'sectionId':_0x38b0b3['id']},{})[_0x160c('0x26')](function(){return _0xc58a83;});}else{return _0xc58a83;}})[_0x160c('0x60')](function(_0x5f12ea){logger['error'](_0x160c('0x6c'),_0x5f12ea);throw _0x5f12ea;});}return _0xc58a83;})[_0x160c('0x26')](respondWithResult(_0x8d9c25,0xc9))['catch'](handleError(_0x8d9c25,null));};exports['update']=function(_0x2eb010,_0x160a45){if(_0x2eb010[_0x160c('0x6d')]['id']){delete _0x2eb010['body']['id'];}return db[_0x160c('0x48')]['find']({'where':{'id':_0x2eb010['params']['id']},'include':[{'model':db[_0x160c('0x45')],'as':_0x160c('0x46')}]})[_0x160c('0x26')](handleEntityNotFound(_0x160a45,null))['then'](saveUpdates(_0x2eb010[_0x160c('0x6d')],null))['then'](respondWithResult(_0x160a45,null))[_0x160c('0x60')](handleError(_0x160a45,null));};exports[_0x160c('0x3e')]=function(_0x5f34e6,_0x28ffee){return db[_0x160c('0x48')]['find']({'where':{'id':_0x5f34e6[_0x160c('0x62')]['id']}})[_0x160c('0x26')](handleEntityNotFound(_0x28ffee,null))[_0x160c('0x26')](removeEntity(_0x28ffee,null))['catch'](handleError(_0x28ffee,null));};exports['describe']=function(_0x6314c9,_0xd9daef){return db[_0x160c('0x48')][_0x160c('0x6e')]()[_0x160c('0x26')](respondWithResult(_0xd9daef,null))[_0x160c('0x60')](handleError(_0xd9daef,null));};exports['addDisposition']=function(_0x56772f,_0x2fb173,_0x97aefa){if(_0x56772f[_0x160c('0x6d')]['id']){delete _0x56772f['body']['id'];}return db[_0x160c('0x48')][_0x160c('0x6a')]({'where':{'id':_0x56772f[_0x160c('0x62')]['id']}})[_0x160c('0x26')](handleEntityNotFound(_0x2fb173,null))[_0x160c('0x26')](function(_0x265f53){if(_0x265f53){_0x56772f[_0x160c('0x6d')][_0x160c('0x6f')]=_0x265f53['id'];return db[_0x160c('0x70')][_0x160c('0x65')](_0x56772f[_0x160c('0x6d')]);}})[_0x160c('0x26')](respondWithResult(_0x2fb173,null))[_0x160c('0x60')](handleError(_0x2fb173,null));};exports[_0x160c('0x71')]=function(_0x42aa97,_0x552bb4,_0x1b60e4){var _0x1d36e3={'raw':![],'where':{}};var _0x236492={};var _0x1d0e13={'count':0x0,'rows':[]};return db['WhatsappAccount']['findOne']({'where':{'id':_0x42aa97[_0x160c('0x62')]['id']}})['then'](handleEntityNotFound(_0x552bb4,null))[_0x160c('0x26')](function(_0x2135b8){if(_0x2135b8){_0x236492['model']=_[_0x160c('0x63')](db[_0x160c('0x70')][_0x160c('0x64')]);_0x236492[_0x160c('0x4c')]=_[_0x160c('0x63')](_0x42aa97[_0x160c('0x4c')]);_0x236492[_0x160c('0x4d')]=_[_0x160c('0x4e')](_0x236492[_0x160c('0x4b')],_0x236492['query']);_0x1d36e3['attributes']=_[_0x160c('0x4e')](_0x236492['model'],qs['fields'](_0x42aa97[_0x160c('0x4c')][_0x160c('0x50')]));_0x1d36e3['attributes']=_0x1d36e3[_0x160c('0x4f')][_0x160c('0x51')]?_0x1d36e3[_0x160c('0x4f')]:_0x236492[_0x160c('0x4b')];if(!_0x42aa97[_0x160c('0x4c')][_0x160c('0x72')](_0x160c('0x52'))){_0x1d36e3[_0x160c('0x38')]=qs[_0x160c('0x38')](_0x42aa97[_0x160c('0x4c')][_0x160c('0x38')]);_0x1d36e3['offset']=qs['offset'](_0x42aa97[_0x160c('0x4c')][_0x160c('0x35')]);}_0x1d36e3[_0x160c('0x53')]=qs[_0x160c('0x54')](_0x42aa97[_0x160c('0x4c')][_0x160c('0x54')]);_0x1d36e3[_0x160c('0x57')]=qs[_0x160c('0x4d')](_[_0x160c('0x55')](_0x42aa97[_0x160c('0x4c')],_0x236492[_0x160c('0x4d')]));_0x1d36e3[_0x160c('0x57')][_0x160c('0x6f')]=_0x2135b8['id'];if(_0x42aa97[_0x160c('0x4c')][_0x160c('0x56')]){_0x1d36e3[_0x160c('0x57')]=_[_0x160c('0x58')](_0x1d36e3['where'],{'$or':_[_0x160c('0x47')](_0x1d36e3['attributes'],function(_0xc86201){var _0x11a30e={};_0x11a30e[_0xc86201]={'$like':'%'+_0x42aa97[_0x160c('0x4c')][_0x160c('0x56')]+'%'};return _0x11a30e;})});}_0x1d36e3=_['merge']({},_0x1d36e3,_0x42aa97[_0x160c('0x5b')]);return db['Disposition'][_0x160c('0x37')]({'where':_0x1d36e3[_0x160c('0x57')]})[_0x160c('0x26')](function(_0xbf4694){_0x1d0e13[_0x160c('0x37')]=_0xbf4694;if(_0x42aa97[_0x160c('0x4c')][_0x160c('0x5c')]){_0x1d36e3[_0x160c('0x5d')]=[{'all':!![]}];}return db[_0x160c('0x70')]['findAll'](_0x1d36e3);})['then'](function(_0x302f7a){_0x1d0e13[_0x160c('0x5f')]=_0x302f7a;return _0x1d0e13;});}})[_0x160c('0x26')](respondWithFilteredResult(_0x552bb4,_0x1d36e3))[_0x160c('0x60')](handleError(_0x552bb4,null));};exports[_0x160c('0x73')]=function(_0x1c86c1,_0x3d4c90,_0x22cd01){return db[_0x160c('0x48')][_0x160c('0x6a')]({'where':{'id':_0x1c86c1[_0x160c('0x62')]['id']}})[_0x160c('0x26')](handleEntityNotFound(_0x3d4c90,null))['then'](function(_0xe34648){if(_0xe34648){return _0xe34648[_0x160c('0x73')](_0x1c86c1[_0x160c('0x4c')][_0x160c('0x74')]);}})[_0x160c('0x26')](respondWithStatusCode(_0x3d4c90,null))[_0x160c('0x60')](handleError(_0x3d4c90,null));};exports[_0x160c('0x75')]=function(_0x4e9eba,_0x5ac12c,_0x15756e){if(_0x4e9eba['body']['id']){delete _0x4e9eba[_0x160c('0x6d')]['id'];}return db[_0x160c('0x48')]['find']({'where':{'id':_0x4e9eba[_0x160c('0x62')]['id']}})[_0x160c('0x26')](handleEntityNotFound(_0x5ac12c,null))['then'](function(_0x32d6f0){if(_0x32d6f0){_0x4e9eba[_0x160c('0x6d')][_0x160c('0x6f')]=_0x32d6f0['id'];return db[_0x160c('0x76')]['create'](_0x4e9eba['body']);}})['then'](respondWithResult(_0x5ac12c,null))[_0x160c('0x60')](handleError(_0x5ac12c,null));};exports[_0x160c('0x77')]=function(_0x3e0879,_0x30e9d3,_0x367d81){var _0x2ab54d={'raw':![],'where':{}};var _0x47fb63={};var _0x478ce0={'count':0x0,'rows':[]};return db[_0x160c('0x48')][_0x160c('0x78')]({'where':{'id':_0x3e0879[_0x160c('0x62')]['id']}})['then'](handleEntityNotFound(_0x30e9d3,null))['then'](function(_0x4023a7){if(_0x4023a7){_0x47fb63[_0x160c('0x4b')]=_[_0x160c('0x63')](db[_0x160c('0x76')][_0x160c('0x64')]);_0x47fb63[_0x160c('0x4c')]=_[_0x160c('0x63')](_0x3e0879[_0x160c('0x4c')]);_0x47fb63[_0x160c('0x4d')]=_[_0x160c('0x4e')](_0x47fb63[_0x160c('0x4b')],_0x47fb63[_0x160c('0x4c')]);_0x2ab54d[_0x160c('0x4f')]=_['intersection'](_0x47fb63[_0x160c('0x4b')],qs['fields'](_0x3e0879[_0x160c('0x4c')][_0x160c('0x50')]));_0x2ab54d[_0x160c('0x4f')]=_0x2ab54d[_0x160c('0x4f')][_0x160c('0x51')]?_0x2ab54d[_0x160c('0x4f')]:_0x47fb63[_0x160c('0x4b')];if(!_0x3e0879[_0x160c('0x4c')][_0x160c('0x72')]('nolimit')){_0x2ab54d[_0x160c('0x38')]=qs[_0x160c('0x38')](_0x3e0879[_0x160c('0x4c')][_0x160c('0x38')]);_0x2ab54d[_0x160c('0x35')]=qs['offset'](_0x3e0879[_0x160c('0x4c')][_0x160c('0x35')]);}_0x2ab54d[_0x160c('0x53')]=qs[_0x160c('0x54')](_0x3e0879[_0x160c('0x4c')][_0x160c('0x54')]);_0x2ab54d[_0x160c('0x57')]=qs['filters'](_[_0x160c('0x55')](_0x3e0879[_0x160c('0x4c')],_0x47fb63[_0x160c('0x4d')]));_0x2ab54d['where'][_0x160c('0x6f')]=_0x4023a7['id'];if(_0x3e0879[_0x160c('0x4c')]['filter']){_0x2ab54d['where']=_[_0x160c('0x58')](_0x2ab54d['where'],{'$or':_['map'](_0x2ab54d[_0x160c('0x4f')],function(_0x3d160b){var _0x301aa5={};_0x301aa5[_0x3d160b]={'$like':'%'+_0x3e0879[_0x160c('0x4c')][_0x160c('0x56')]+'%'};return _0x301aa5;})});}_0x2ab54d=_[_0x160c('0x58')]({},_0x2ab54d,_0x3e0879[_0x160c('0x5b')]);return db[_0x160c('0x76')]['count']({'where':_0x2ab54d[_0x160c('0x57')]})[_0x160c('0x26')](function(_0x4082ac){_0x478ce0[_0x160c('0x37')]=_0x4082ac;if(_0x3e0879[_0x160c('0x4c')]['includeAll']){_0x2ab54d['include']=[{'all':!![]}];}return db[_0x160c('0x76')]['findAll'](_0x2ab54d);})[_0x160c('0x26')](function(_0x43f863){_0x478ce0[_0x160c('0x5f')]=_0x43f863;return _0x478ce0;});}})[_0x160c('0x26')](respondWithFilteredResult(_0x30e9d3,_0x2ab54d))[_0x160c('0x60')](handleError(_0x30e9d3,null));};exports[_0x160c('0x79')]=function(_0x5c0ca2,_0xfe1b48,_0x33ce5e){return db['WhatsappAccount'][_0x160c('0x6a')]({'where':{'id':_0x5c0ca2[_0x160c('0x62')]['id']}})[_0x160c('0x26')](handleEntityNotFound(_0xfe1b48,null))[_0x160c('0x26')](function(_0x49da8c){if(_0x49da8c){return _0x49da8c[_0x160c('0x79')](_0x5c0ca2['query']['ids']);}})[_0x160c('0x26')](respondWithStatusCode(_0xfe1b48,null))[_0x160c('0x60')](handleError(_0xfe1b48,null));};exports['addAgents']=function(_0x454241,_0xbda10,_0xc45adc){return db[_0x160c('0x48')][_0x160c('0x6a')]({'where':{'id':_0x454241[_0x160c('0x62')]['id']}})[_0x160c('0x26')](handleEntityNotFound(_0xbda10,null))['then'](function(_0x2732d1){if(_0x2732d1){return _0x2732d1[_0x160c('0x7a')](_0x454241['body'][_0x160c('0x74')],_[_0x160c('0x7b')](_0x454241[_0x160c('0x6d')],[_0x160c('0x74'),'id'])||{})['spread'](function(_0x5bea0a){for(var _0x327e21=0x0;_0x327e21<_0x454241[_0x160c('0x6d')][_0x160c('0x74')][_0x160c('0x51')];_0x327e21+=0x1){socket[_0x160c('0x7c')](_0x160c('0x7d'),{'UserId':Number(_0x454241[_0x160c('0x6d')][_0x160c('0x74')][_0x327e21]),'WhatsappAccountId':Number(_0x454241[_0x160c('0x62')]['id'])});}return _0x5bea0a;});}})[_0x160c('0x26')](respondWithResult(_0xbda10,null))[_0x160c('0x60')](handleError(_0xbda10,null));};exports[_0x160c('0x7e')]=function(_0x3d4acf,_0x2da6d1,_0x4679e4){return db[_0x160c('0x48')]['find']({'where':{'id':_0x3d4acf['params']['id']}})[_0x160c('0x26')](handleEntityNotFound(_0x2da6d1,null))['then'](function(_0x487299){if(_0x487299){return _0x487299['removeAgents'](_0x3d4acf[_0x160c('0x4c')][_0x160c('0x74')])[_0x160c('0x26')](function(){if(_['isArray'](_0x3d4acf[_0x160c('0x4c')][_0x160c('0x74')])){for(var _0x3316a1=0x0;_0x3316a1<_0x3d4acf[_0x160c('0x4c')][_0x160c('0x74')][_0x160c('0x51')];_0x3316a1+=0x1){socket[_0x160c('0x7c')]('userWhatsappAccount:remove',{'UserId':Number(_0x3d4acf[_0x160c('0x4c')][_0x160c('0x74')][_0x3316a1]),'WhatsappAccountId':Number(_0x3d4acf[_0x160c('0x62')]['id'])});}}else{socket[_0x160c('0x7c')](_0x160c('0x7f'),{'UserId':Number(_0x3d4acf[_0x160c('0x4c')][_0x160c('0x74')]),'WhatsappAccountId':Number(_0x3d4acf[_0x160c('0x62')]['id'])});}});}})[_0x160c('0x26')](respondWithStatusCode(_0x2da6d1,null))[_0x160c('0x60')](handleError(_0x2da6d1,null));};exports[_0x160c('0x80')]=function(_0x5bbdbc,_0x42ab88,_0xe6999a){var _0x348dd2={};var _0x3b70d0={};var _0x3ed09a;var _0x516967;return db[_0x160c('0x48')][_0x160c('0x78')]({'where':{'id':_0x5bbdbc['params']['id']}})[_0x160c('0x26')](handleEntityNotFound(_0x42ab88,null))[_0x160c('0x26')](function(_0x58169f){if(_0x58169f){_0x3ed09a=_0x58169f;_0x3b70d0[_0x160c('0x4b')]=_[_0x160c('0x63')](db[_0x160c('0x81')][_0x160c('0x64')]);_0x3b70d0[_0x160c('0x4c')]=_[_0x160c('0x63')](_0x5bbdbc[_0x160c('0x4c')]);_0x3b70d0[_0x160c('0x4d')]=_[_0x160c('0x4e')](_0x3b70d0['model'],_0x3b70d0[_0x160c('0x4c')]);_0x348dd2[_0x160c('0x4f')]=_[_0x160c('0x4e')](_0x3b70d0[_0x160c('0x4b')],qs[_0x160c('0x50')](_0x5bbdbc[_0x160c('0x4c')][_0x160c('0x50')]));_0x348dd2['attributes']=_0x348dd2[_0x160c('0x4f')][_0x160c('0x51')]?_0x348dd2[_0x160c('0x4f')]:_0x3b70d0['model'];_0x348dd2[_0x160c('0x53')]=qs[_0x160c('0x54')](_0x5bbdbc[_0x160c('0x4c')][_0x160c('0x54')]);_0x348dd2[_0x160c('0x57')]=qs[_0x160c('0x4d')](_[_0x160c('0x55')](_0x5bbdbc[_0x160c('0x4c')],_0x3b70d0['filters']));if(_0x5bbdbc[_0x160c('0x4c')][_0x160c('0x56')]){_0x348dd2['where']=_[_0x160c('0x58')](_0x348dd2[_0x160c('0x57')],{'$or':_[_0x160c('0x47')](_0x348dd2[_0x160c('0x4f')],function(_0x52c803){var _0x4b1260={};_0x4b1260[_0x52c803]={'$like':'%'+_0x5bbdbc[_0x160c('0x4c')][_0x160c('0x56')]+'%'};return _0x4b1260;})});}_0x348dd2=_[_0x160c('0x58')]({},_0x348dd2,_0x5bbdbc[_0x160c('0x5b')]);return _0x3ed09a['getAgents'](_0x348dd2);}})[_0x160c('0x26')](function(_0x5758ad){if(_0x5758ad){_0x516967=_0x5758ad[_0x160c('0x51')];if(!_0x5bbdbc[_0x160c('0x4c')][_0x160c('0x72')](_0x160c('0x52'))){_0x348dd2['limit']=qs['limit'](_0x5bbdbc[_0x160c('0x4c')][_0x160c('0x38')]);_0x348dd2['offset']=qs[_0x160c('0x35')](_0x5bbdbc[_0x160c('0x4c')][_0x160c('0x35')]);}return _0x3ed09a[_0x160c('0x80')](_0x348dd2);}})[_0x160c('0x26')](function(_0x19be77){if(_0x19be77){return _0x19be77?{'count':_0x516967,'rows':_0x19be77}:null;}})[_0x160c('0x26')](respondWithResult(_0x42ab88,null))[_0x160c('0x60')](handleError(_0x42ab88,null));};exports[_0x160c('0x82')]=function(_0xa73104,_0x40004f){var _0x4ad880=_0xa73104['params']['id'];var _0x306982=_0xa73104[_0x160c('0x6d')];var _0xb2d65f=0xc8;var _0x559a01=null;return db[_0x160c('0x83')][_0x160c('0x84')]({'isolationLevel':db[_0x160c('0x83')]['Transaction']['ISOLATION_LEVELS'][_0x160c('0x85')]},function(_0x43381d){return db[_0x160c('0x48')][_0x160c('0x78')]({'where':{'id':_0x4ad880},'transaction':_0x43381d})[_0x160c('0x26')](function(_0x4e95dd){if(_0x4e95dd){return db[_0x160c('0x86')]['destroy']({'where':{'WhatsappAccountId':_0x4ad880},'transaction':_0x43381d})['then'](function(){var _0x3e85c3=_[_0x160c('0x47')](_0x306982,function(_0x563210){_0x563210[_0x160c('0x6f')]=_0x4ad880;return _0x563210;});return db[_0x160c('0x86')]['bulkCreate'](_0x3e85c3,{'transaction':_0x43381d});});}else{_0xb2d65f=0x194;_0x559a01=[];}});})[_0x160c('0x26')](function(){if(_0xb2d65f!==0x194){return db[_0x160c('0x86')][_0x160c('0x87')]({'where':{'WhatsappAccountId':_0x4ad880},'order':_0x160c('0x88')})[_0x160c('0x26')](function(_0x2a5903){_0x559a01=_0x2a5903;});}})[_0x160c('0x60')](function(_0x407820){_0xb2d65f=0x1f4;logger[_0x160c('0x2c')](_0x407820[_0x160c('0x89')]);if(_0x407820[_0x160c('0x42')]){delete _0x407820[_0x160c('0x42')];}_0x559a01=_0x407820;})[_0x160c('0x8a')](function(){if(_0x559a01===null){_0x40004f[_0x160c('0x31')](_0xb2d65f);}else{if(_0xb2d65f===0x1f4){_0x40004f['status'](_0xb2d65f)[_0x160c('0x43')](_0x559a01);}else{_0x40004f[_0x160c('0x32')](_0xb2d65f)[_0x160c('0x34')](_0x559a01);}}});};exports[_0x160c('0x8b')]=function(_0x1b7002,_0xe1c39f,_0x5b2826){var _0x1d99a4={};var _0x578e07={};var _0x574eea;var _0x52b98e;return db[_0x160c('0x48')]['findOne']({'where':{'id':_0x1b7002[_0x160c('0x62')]['id']}})[_0x160c('0x26')](handleEntityNotFound(_0xe1c39f,null))[_0x160c('0x26')](function(_0x483ef8){if(_0x483ef8){_0x574eea=_0x483ef8;_0x578e07[_0x160c('0x4b')]=_[_0x160c('0x63')](db[_0x160c('0x86')][_0x160c('0x64')]);_0x578e07[_0x160c('0x4c')]=_[_0x160c('0x63')](_0x1b7002[_0x160c('0x4c')]);_0x578e07[_0x160c('0x4d')]=_[_0x160c('0x4e')](_0x578e07[_0x160c('0x4b')],_0x578e07[_0x160c('0x4c')]);_0x1d99a4[_0x160c('0x4f')]=_[_0x160c('0x4e')](_0x578e07[_0x160c('0x4b')],qs[_0x160c('0x50')](_0x1b7002[_0x160c('0x4c')][_0x160c('0x50')]));_0x1d99a4[_0x160c('0x4f')]=_0x1d99a4['attributes']['length']?_0x1d99a4['attributes']:_0x578e07[_0x160c('0x4b')];_0x1d99a4[_0x160c('0x53')]=qs[_0x160c('0x54')](_0x1b7002['query'][_0x160c('0x54')]);_0x1d99a4[_0x160c('0x57')]=qs[_0x160c('0x4d')](_['pick'](_0x1b7002['query'],_0x578e07['filters']));if(_0x1b7002['query'][_0x160c('0x56')]){_0x1d99a4[_0x160c('0x57')]=_['merge'](_0x1d99a4[_0x160c('0x57')],{'$or':_['map'](_0x1d99a4[_0x160c('0x4f')],function(_0x27e517){var _0x337ee3={};_0x337ee3[_0x27e517]={'$like':'%'+_0x1b7002[_0x160c('0x4c')][_0x160c('0x56')]+'%'};return _0x337ee3;})});}_0x1d99a4=_['merge']({},_0x1d99a4,_0x1b7002[_0x160c('0x5b')]);return _0x574eea[_0x160c('0x8b')](_0x1d99a4);}})['then'](function(_0x4a589c){if(_0x4a589c){_0x52b98e=_0x4a589c[_0x160c('0x51')];if(!_0x1b7002[_0x160c('0x4c')][_0x160c('0x72')]('nolimit')){_0x1d99a4['limit']=qs['limit'](_0x1b7002[_0x160c('0x4c')][_0x160c('0x38')]);_0x1d99a4[_0x160c('0x35')]=qs[_0x160c('0x35')](_0x1b7002[_0x160c('0x4c')][_0x160c('0x35')]);}return _0x574eea[_0x160c('0x8b')](_0x1d99a4);}})[_0x160c('0x26')](function(_0x2ef680){if(_0x2ef680){return _0x2ef680?{'count':_0x52b98e,'rows':_0x2ef680}:null;}})['then'](respondWithResult(_0xe1c39f,null))[_0x160c('0x60')](handleError(_0xe1c39f,null));};exports['notify']=function(_0xb8a078,_0x18a29d,_0x5d815b){var _0x4e8f54={'channel':_0x160c('0x8c')};var _0x154130=[];var _0x45f825=[];var _0x5475b1={};return db[_0x160c('0x48')]['find']({'where':{'id':_0xb8a078[_0x160c('0x62')]['id']},'include':[{'model':db[_0x160c('0x86')],'as':'Applications'}]})[_0x160c('0x26')](handleEntityNotFound(_0x18a29d,null))[_0x160c('0x26')](function(_0x29b924){_0x4e8f54[_0x160c('0x8d')]=_0x29b924;if(_0x4e8f54['account']&&_0x4e8f54[_0x160c('0x8d')]['type']===_0x160c('0x8e')&&_0xb8a078[_0x160c('0x6d')][_0x160c('0x8f')]){if(_0xb8a078[_0x160c('0x6d')][_0x160c('0x8f')]['length']===0x0)return;if(_0xb8a078[_0x160c('0x6d')][_0x160c('0x8f')][0x0][_0x160c('0x90')]!=='read')return;return db['WhatsappMessage'][_0x160c('0x3d')]({'read':!![],'readAt':_0xb8a078[_0x160c('0x6d')][_0x160c('0x8f')][0x0][_0x160c('0x91')]},{'where':{'messageId':_0xb8a078['body']['statuses'][0x0]['message_id']},'individualHooks':!![]})[_0x160c('0x26')](function(_0x2f6888){return _0x18a29d[_0x160c('0x32')](0xc8)[_0x160c('0x34')](_0x2f6888);});}_0x4e8f54[_0x160c('0x92')]=_[_0x160c('0x93')](_0x29b924[_0x160c('0x94')],['priority'],[_0x160c('0x95')]);if(_0x4e8f54[_0x160c('0x8d')][_0x160c('0x94')]){delete _0x4e8f54[_0x160c('0x8d')][_0x160c('0x94')];}return db['CmContact'][_0x160c('0x6e')]()[_0x160c('0x26')](function(_0x25687a){if(!_0x25687a){throw new db[(_0x160c('0x96'))]['ValidationError'](_0x160c('0x97'));}_0x154130=_[_0x160c('0x98')](_[_0x160c('0x63')](_0x25687a),[_0x160c('0x99'),_0x160c('0x9a')]);_0x45f825=_['difference'](_[_0x160c('0x63')](_0x25687a),[_0x160c('0x99'),_0x160c('0x9a'),_0x160c('0x9b'),'ListId']);_0x4e8f54[_0x160c('0x6d')]={'mapKey':_0x160c('0x9c')};if(_0x4e8f54[_0x160c('0x8d')]&&_0x4e8f54[_0x160c('0x8d')][_0x160c('0x59')]==='twilio'){_0x4e8f54[_0x160c('0x6d')][_0x160c('0x9d')]=_0xb8a078['body'][_0x160c('0x9e')][_0x160c('0x9f')](_0x160c('0xa0'),'');_0x4e8f54[_0x160c('0x6d')][_0x160c('0x6d')]=_0xb8a078[_0x160c('0x6d')][_0x160c('0xa1')];_0x4e8f54[_0x160c('0x6d')][_0x160c('0xa2')]=_0xb8a078[_0x160c('0x6d')][_0x160c('0xa3')];}if(_0x4e8f54[_0x160c('0x8d')]&&_0x4e8f54['account'][_0x160c('0x59')]===_0x160c('0x8e')){_0x4e8f54[_0x160c('0x6d')]['from']=_0xb8a078[_0x160c('0x6d')][_0x160c('0xa4')][0x0][_0x160c('0x9d')];_0x4e8f54['body'][_0x160c('0x6d')]=_0xb8a078[_0x160c('0x6d')][_0x160c('0xa4')][0x0][_0x160c('0x2e')]['body'];_0x4e8f54[_0x160c('0x6d')]['messageId']=_0xb8a078[_0x160c('0x6d')][_0x160c('0xa4')][0x0]['message_id'];}if(_0x4e8f54[_0x160c('0x6d')]['id']){delete _0x4e8f54[_0x160c('0x6d')]['id'];}if(_[_0x160c('0xa5')](_0x4e8f54[_0x160c('0x6d')][_0x160c('0x9d')])){throw new db['Sequelize'][(_0x160c('0xa6'))](_0x160c('0xa7'));}if(_[_0x160c('0xa5')](_0x4e8f54[_0x160c('0x6d')][_0x160c('0x6d')])||_0x4e8f54['body']['body']===''){throw new db['Sequelize'][(_0x160c('0xa6'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x160c('0xa5')](_0x4e8f54[_0x160c('0x6d')][_0x160c('0xa8')])){throw new db[(_0x160c('0x96'))]['ValidationError'](_0x160c('0xa9')+_0x45f825);}if(!_[_0x160c('0xaa')](_0x45f825,_0x4e8f54['body'][_0x160c('0xa8')])){throw new db[(_0x160c('0x96'))][(_0x160c('0xa6'))](_0x160c('0xab')+_0x45f825);}_0x5475b1[_0x4e8f54[_0x160c('0x6d')][_0x160c('0xa8')]]=_0x4e8f54[_0x160c('0x6d')][_0x160c('0x9d')];return db['CmList'][_0x160c('0x6a')]({'where':{'id':_0x4e8f54[_0x160c('0x8d')][_0x160c('0xac')]},'include':[{'model':db['CmContact'],'as':_0x160c('0xad'),'where':_0x5475b1,'limit':0x1,'order':[[_0x160c('0x9a'),_0x160c('0xae')]]}]});})[_0x160c('0x26')](handleEntityNotFound(_0x18a29d,null))['then'](function(_0xb267af){if(_0xb267af){_0x4e8f54[_0x160c('0xaf')]=_[_0x160c('0x7b')](_0xb267af,[_0x160c('0xad')]);if(_0xb267af[_0x160c('0xad')][_0x160c('0x51')]){return _0xb267af[_0x160c('0xad')][0x0];}var _0x45e969=_[_0x160c('0x1e')](_0x4e8f54[_0x160c('0x6d')],{'firstName':_0x4e8f54[_0x160c('0x6d')][_0x160c('0x9d')],'ListId':_0xb267af['id']});_0x45e969[_0x4e8f54[_0x160c('0x6d')][_0x160c('0xa8')]]=_0x4e8f54['body'][_0x160c('0x9d')];return db[_0x160c('0xb0')][_0x160c('0x65')](_0x45e969,{'fields':_0x154130,'raw':!![]});}})[_0x160c('0x26')](handleEntityNotFound(_0x18a29d,null))[_0x160c('0x26')](function(_0x2c1798){if(_0x2c1798){_0x4e8f54[_0x160c('0xb1')]=_0x2c1798;var _0x1f3fcd={'ContactId':_0x2c1798['id'],'phone':_0x4e8f54[_0x160c('0x6d')][_0x160c('0x9d')],'WhatsappAccountId':_0xb8a078['params']['id']};var _0x59041e={'ContactId':_0x2c1798['id'],'WhatsappAccountId':_0xb8a078[_0x160c('0x62')]['id'],'closed':![]};return db[_0x160c('0xb2')][_0x160c('0x6a')]({'where':_0x59041e})['then'](function(_0x380b3c){if(_0x380b3c){return[_0x380b3c,![]];}return db['WhatsappInteraction'][_0x160c('0x65')](_0x1f3fcd)[_0x160c('0x26')](function(_0x13fa34){return[_0x13fa34,!![]];});});}})[_0x160c('0xb3')](function(_0x4d9146,_0x2163c5){_0x4e8f54[_0x160c('0xb4')]=_0x4d9146[_0x160c('0x3f')]({'plain':!![]});_0x4e8f54[_0x160c('0xb4')][_0x160c('0xb5')]=![];if(_0x2163c5){if(_0x4e8f54['account'][_0x160c('0xb6')]){_0x4e8f54['applications'][_0x160c('0xb7')]({'id':0x0,'priority':_0x4e8f54['applications'][_0x160c('0x51')]+0x1,'app':'close','appdata':_0x160c('0xb8'),'interval':'*,*,*,*'});}_0x4e8f54[_0x160c('0xb4')][_0x160c('0xb5')]=!![];}return db[_0x160c('0xb9')][_0x160c('0x65')]({'phone':_0x4e8f54['body'][_0x160c('0x9d')],'messageId':_0x4e8f54[_0x160c('0x6d')][_0x160c('0xa2')],'body':_0x4e8f54['body']['body'],'WhatsappAccountId':_0xb8a078['params']['id'],'WhatsappInteractionId':_0x4d9146['id'],'direction':'in','ContactId':_0x4d9146['ContactId'],'AttachmentId':_0x4e8f54[_0x160c('0x6d')]['AttachmentId']});})[_0x160c('0x26')](function(_0x353191){_0x4e8f54[_0x160c('0x2e')]=_0x353191;if(_0x4e8f54[_0x160c('0xb4')][_0x160c('0xba')]){return db[_0x160c('0x81')][_0x160c('0x6a')]({'attributes':['id',_0x160c('0x42')],'where':{'id':_0x4e8f54[_0x160c('0xb4')]['UserId']}})[_0x160c('0x26')](function(_0x293093){if(_0x293093){_0x4e8f54['applications'][_0x160c('0xbb')]({'id':0x0,'priority':0x0,'app':_0x160c('0xbc'),'appdata':_0x293093[_0x160c('0x42')]+','+(_0x4e8f54['account'][_0x160c('0xbd')]||0xa),'interval':_0x160c('0xbe')});}return respondWithRpcPromise(_0x160c('0xbf'),_0x160c('0xc0'),_0x4e8f54);});}return respondWithRpcPromise('Start',_0x160c('0xc0'),_0x4e8f54);})[_0x160c('0x26')](function(_0xa76882){if(_0xa76882){var _0x3dc4ce=0xc8;var _0x4aadad=_0x160c('0xc1');logger[_0x160c('0x2f')](_0x160c('0x29'),_0x4aadad,_0x3dc4ce,_0x160c('0xc2'));logger[_0x160c('0x28')](_0x160c('0xc3'),_0x4aadad,_0x3dc4ce,_0x160c('0xc2'),JSON[_0x160c('0x2b')](_0xa76882));if(_0x4e8f54[_0x160c('0x8d')][_0x160c('0x59')]===_0x160c('0xc4')){return _0x18a29d[_0x160c('0x32')](_0x3dc4ce)[_0x160c('0x39')](_0x160c('0xc5'),_0x160c('0xc6'))[_0x160c('0x43')](_0x160c('0xc7'));}else{return _0x18a29d['status'](_0x3dc4ce)[_0x160c('0x34')](_0xa76882);}}});})[_0x160c('0x60')](handleError(_0x18a29d,null));};exports[_0x160c('0x43')]=function(_0x43d87f,_0x217927,_0x237841){var _0x27fac6,_0x481d85,_0x5f57d4;if(_['isNil'](_0x43d87f[_0x160c('0x6d')][_0x160c('0x6d')])||_0x43d87f[_0x160c('0x6d')][_0x160c('0x6d')]===''){throw new db[(_0x160c('0x96'))]['ValidationError']('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_['isNil'](_0x43d87f[_0x160c('0x6d')]['to'])){throw new db[(_0x160c('0x96'))][(_0x160c('0xa6'))](_0x160c('0xc8'));}_0x27fac6=_0x43d87f[_0x160c('0x6d')]['to'];return db['WhatsappAccount'][_0x160c('0x6a')]({'where':{'id':_0x43d87f[_0x160c('0x62')]['id']},'include':[{'model':db['CmList'],'as':_0x160c('0xc9'),'include':[{'model':db[_0x160c('0xb0')],'as':_0x160c('0xad'),'where':{'mobile':_0x27fac6},'limit':0x1,'order':[[_0x160c('0x9a'),_0x160c('0xae')]]}]}]})[_0x160c('0x26')](handleEntityNotFound(_0x217927,null))[_0x160c('0x26')](function(_0x3eed59){if(_0x3eed59&&_0x3eed59['List']){_0x481d85=_0x3eed59[_0x160c('0x3f')]({'plain':!![]});if(_0x481d85['List']&&_0x481d85['List'][_0x160c('0xad')]['length']){return _0x481d85[_0x160c('0xc9')][_0x160c('0xad')][0x0];}return db[_0x160c('0xb0')][_0x160c('0x65')](_[_0x160c('0x1e')](_0x43d87f[_0x160c('0x6d')],{'firstName':_0x27fac6,'mobile':_0x27fac6,'phone':_0x27fac6,'ListId':_0x481d85[_0x160c('0xac')]}));}})[_0x160c('0x26')](handleEntityNotFound(_0x217927,null))['then'](function(_0x2fba13){if(_0x2fba13){_0x5f57d4=_0x2fba13;return db[_0x160c('0xb2')][_0x160c('0x6a')]({'where':{'ContactId':_0x5f57d4['id'],'closed':![],'WhatsappAccountId':_0x481d85['id']}})[_0x160c('0x26')](function(_0x352e0a){if(_0x352e0a){return[_0x352e0a,![]];}return db[_0x160c('0xb2')][_0x160c('0x65')]({'UserId':_0x43d87f[_0x160c('0x68')]['id'],'ContactId':_0x5f57d4['id'],'WhatsappAccountId':_0x481d85['id'],'phone':_0x27fac6,'firstMsgDirection':'out','Messages':[_[_0x160c('0x58')](_0x43d87f[_0x160c('0x6d')],{'read':![],'body':_0x43d87f[_0x160c('0x6d')][_0x160c('0x6d')],'phone':_0x27fac6,'WhatsappAccountId':_0x481d85['id'],'UserId':_0x43d87f[_0x160c('0x68')]['id'],'ContactId':_0x5f57d4['id']})]},{'include':[{'model':db['WhatsappMessage'],'as':_0x160c('0xca')}]})[_0x160c('0x26')](function(_0x28d621){return[_0x28d621,!![]];});});}})[_0x160c('0xb3')](function(_0x149984,_0x5e22c8){if(_0x5e22c8){return _0x149984;}return db['WhatsappMessage'][_0x160c('0x65')](_['merge'](_0x43d87f[_0x160c('0x6d')],{'read':![],'body':_0x43d87f[_0x160c('0x6d')]['body'],'phone':_0x27fac6,'WhatsappAccountId':_0x481d85['id'],'WhatsappInteractionId':_0x149984['id'],'UserId':_0x43d87f['user']['id'],'ContactId':_0x5f57d4['id']}))['then'](function(_0x30db09){_0x149984[_0x160c('0xcb')][_0x160c('0xca')]=[];_0x149984[_0x160c('0xcb')][_0x160c('0xca')][_0x160c('0xb7')](_0x30db09[_0x160c('0xcb')]);return _0x149984;});})[_0x160c('0x26')](respondWithResult(_0x217927,null))[_0x160c('0x60')](handleError(_0x217927,null));};
\ No newline at end of file
+var _0x66a0=['request-promise','moment','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./whatsappAccount.socket','register','jayson/promise','http','request','info','WhatsappAccount,\x20%s,\x20%s','request\x20sent','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','sendStatus','status','end','undefined','limit','count','offset','set','Content-Range','json','apply','reject','save','then','WhatsappAccounts','destroy','name','send','index','Pause','mandatoryDispositionPause','WhatsappAccount','rawAttributes','fieldName','type','model','map','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','include','findAll','show','includeAll','find','create','body','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','userProfileId','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','params','describe','addDisposition','WhatsappAccountId','Disposition','findOne','keys','rows','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','removeAnswers','addAgents','omit','spread','emit','userWhatsappAccount:save','removeAgents','isArray','userWhatsappAccount:remove','getAgents','User','addApplications','transaction','sequelize','Transaction','ISOLATION_LEVELS','WhatsappApplication','priority','finally','getApplications','Applications','account','sinch','statuses','read','WhatsappMessage','timestamp','message_id','applications','orderBy','asc','CmContact','Sequelize','ValidationError','no\x20available\x20attributes','difference','updatedAt','CompanyId','ListId','mobile','twilio','from','replace','Body','messageId','MessageSid','notifications','isNil','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','CmList','Contacts','contact','interaction','created','autoclose','ContactId','AttachmentId','UserId','unshift','agent','waitForTheAssignedAgent','*,*,*,*','Start','startRouting','receiveMessage','WhatsappAccount,\x20%s,\x20%s,\x20%s,\x20%s','entity\x20found','Content-Type','text/xml','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','to\x20is\x20mandatory','List','DESC','WhatsappInteraction','out','Messages','dataValues','push','eml-format','rimraf','zip-dir','fast-json-patch'];(function(_0x1c3a1a,_0xfa88ee){var _0x37eb4e=function(_0x48c7c0){while(--_0x48c7c0){_0x1c3a1a['push'](_0x1c3a1a['shift']());}};_0x37eb4e(++_0xfa88ee);}(_0x66a0,0xc3));var _0x066a=function(_0x29e35f,_0x4859ef){_0x29e35f=_0x29e35f-0x0;var _0x266b74=_0x66a0[_0x29e35f];return _0x266b74;};'use strict';var emlformat=require(_0x066a('0x0'));var rimraf=require(_0x066a('0x1'));var zipdir=require(_0x066a('0x2'));var jsonpatch=require(_0x066a('0x3'));var rp=require(_0x066a('0x4'));var moment=require(_0x066a('0x5'));var BPromise=require(_0x066a('0x6'));var Mustache=require(_0x066a('0x7'));var util=require(_0x066a('0x8'));var path=require('path');var sox=require(_0x066a('0x9'));var csv=require(_0x066a('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x066a('0xb'));var _=require(_0x066a('0xc'));var squel=require(_0x066a('0xd'));var crypto=require('crypto');var jsforce=require(_0x066a('0xe'));var deskjs=require(_0x066a('0xf'));var toCsv=require(_0x066a('0xa'));var querystring=require(_0x066a('0x10'));var Papa=require(_0x066a('0x11'));var Redis=require(_0x066a('0x12'));var authService=require(_0x066a('0x13'));var qs=require(_0x066a('0x14'));var as=require(_0x066a('0x15'));var hardwareService=require(_0x066a('0x16'));var logger=require(_0x066a('0x17'))(_0x066a('0x18'));var utils=require(_0x066a('0x19'));var config=require('../../config/environment');var licenseUtil=require(_0x066a('0x1a'));var db=require(_0x066a('0x1b'))['db'];config['redis']=_[_0x066a('0x1c')](config[_0x066a('0x1d')],{'host':_0x066a('0x1e'),'port':0x18eb});var socket=require(_0x066a('0x1f'))(new Redis(config[_0x066a('0x1d')]));require(_0x066a('0x20'))[_0x066a('0x21')](socket);var jayson=require(_0x066a('0x22'));var client=jayson['client'][_0x066a('0x23')]({'port':0x232c});function respondWithRpcPromise(_0x2f7a3a,_0x255f2c,_0x92f30c,_0x457ecf){return new BPromise(function(_0x1c8517,_0x464f70){var _0x1f84d9=_0x457ecf||client;return _0x1f84d9[_0x066a('0x24')](_0x2f7a3a,_0x92f30c)['then'](function(_0x2f3465){logger[_0x066a('0x25')](_0x066a('0x26'),_0x255f2c,_0x066a('0x27'));logger[_0x066a('0x28')](_0x066a('0x29'),_0x255f2c,_0x066a('0x27'),JSON[_0x066a('0x2a')](_0x2f3465));if(_0x2f3465[_0x066a('0x2b')]){if(_0x2f3465[_0x066a('0x2b')][_0x066a('0x2c')]===0x1f4){logger[_0x066a('0x2b')](_0x066a('0x26'),_0x255f2c,_0x2f3465[_0x066a('0x2b')][_0x066a('0x2d')]);return _0x464f70(_0x2f3465[_0x066a('0x2b')][_0x066a('0x2d')]);}logger['error'](_0x066a('0x26'),_0x255f2c,_0x2f3465[_0x066a('0x2b')][_0x066a('0x2d')]);return _0x1c8517(_0x2f3465['error'][_0x066a('0x2d')]);}else{logger[_0x066a('0x25')](_0x066a('0x26'),_0x255f2c,'request\x20sent');_0x1c8517(_0x2f3465['result'][_0x066a('0x2d')]);}})[_0x066a('0x2e')](function(_0x168571){logger['error'](_0x066a('0x26'),_0x255f2c,_0x168571);_0x464f70(_0x168571);});});}function respondWithStatusCode(_0x59a797,_0xca9edc){_0xca9edc=_0xca9edc||0xcc;return function(_0x1bcfcd){if(_0x1bcfcd){return _0x59a797[_0x066a('0x2f')](_0xca9edc);}return _0x59a797[_0x066a('0x30')](_0xca9edc)[_0x066a('0x31')]();};}function respondWithResult(_0x2adeda,_0x573a3f){_0x573a3f=_0x573a3f||0xc8;return function(_0xe4506a){if(_0xe4506a){return _0x2adeda[_0x066a('0x30')](_0x573a3f)['json'](_0xe4506a);}};}function respondWithFilteredResult(_0x1b71e1,_0x30b656){return function(_0xb1831){if(_0xb1831){var _0x56a473=typeof _0x30b656['offset']===_0x066a('0x32')&&typeof _0x30b656[_0x066a('0x33')]===_0x066a('0x32');var _0x5ed057=_0xb1831[_0x066a('0x34')];var _0x2f99a6=_0x56a473?0x0:_0x30b656[_0x066a('0x35')];var _0x10f1ce=_0x56a473?_0xb1831[_0x066a('0x34')]:_0x30b656[_0x066a('0x35')]+_0x30b656[_0x066a('0x33')];var _0x5aae56;if(_0x10f1ce>=_0x5ed057){_0x10f1ce=_0x5ed057;_0x5aae56=0xc8;}else{_0x5aae56=0xce;}_0x1b71e1['status'](_0x5aae56);return _0x1b71e1[_0x066a('0x36')](_0x066a('0x37'),_0x2f99a6+'-'+_0x10f1ce+'/'+_0x5ed057)[_0x066a('0x38')](_0xb1831);}return null;};}function patchUpdates(_0x565046){return function(_0x50cbcc){try{jsonpatch[_0x066a('0x39')](_0x50cbcc,_0x565046,!![]);}catch(_0x18d3d8){return BPromise[_0x066a('0x3a')](_0x18d3d8);}return _0x50cbcc[_0x066a('0x3b')]();};}function saveUpdates(_0xb0900b,_0x385746){return function(_0x396dd9){if(_0x396dd9){return _0x396dd9['update'](_0xb0900b)['then'](function(_0x412305){return _0x412305;});}return null;};}function removeEntity(_0x4de008,_0x15964b){return function(_0x3815fc){if(_0x3815fc){return _0x3815fc['destroy']()[_0x066a('0x3c')](function(){var _0x868fee=_0x3815fc['get']({'plain':!![]});var _0x3eecf3=_0x066a('0x3d');return db['UserProfileResource'][_0x066a('0x3e')]({'where':{'type':_0x3eecf3,'resourceId':_0x868fee['id']}})[_0x066a('0x3c')](function(){return _0x3815fc;});})[_0x066a('0x3c')](function(){_0x4de008[_0x066a('0x30')](0xcc)['end']();});}};}function handleEntityNotFound(_0x29c88d,_0x510365){return function(_0x19ded1){if(!_0x19ded1){_0x29c88d[_0x066a('0x2f')](0x194);}return _0x19ded1;};}function handleError(_0x15abf4,_0x2c0b17){_0x2c0b17=_0x2c0b17||0x1f4;return function(_0x21c092){logger[_0x066a('0x2b')](_0x21c092['stack']);if(_0x21c092[_0x066a('0x3f')]){delete _0x21c092['name'];}_0x15abf4[_0x066a('0x30')](_0x2c0b17)[_0x066a('0x40')](_0x21c092);};}exports[_0x066a('0x41')]=function(_0x4b1db8,_0x5ebf1b){var _0x4c4a21={'include':[{'model':db[_0x066a('0x42')],'as':_0x066a('0x43')}]},_0x945412={},_0x1bac25={'count':0x0,'rows':[]};var _0x396b04=_['map'](db[_0x066a('0x44')][_0x066a('0x45')],function(_0x5e699c){return{'name':_0x5e699c[_0x066a('0x46')],'type':_0x5e699c[_0x066a('0x47')]['key']};});_0x945412[_0x066a('0x48')]=_[_0x066a('0x49')](_0x396b04,_0x066a('0x3f'));_0x945412[_0x066a('0x4a')]=_['keys'](_0x4b1db8[_0x066a('0x4a')]);_0x945412[_0x066a('0x4b')]=_[_0x066a('0x4c')](_0x945412['model'],_0x945412[_0x066a('0x4a')]);_0x4c4a21['attributes']=_[_0x066a('0x4c')](_0x945412[_0x066a('0x48')],qs[_0x066a('0x4d')](_0x4b1db8['query'][_0x066a('0x4d')]));_0x4c4a21[_0x066a('0x4e')]=_0x4c4a21['attributes'][_0x066a('0x4f')]?_0x4c4a21[_0x066a('0x4e')]:_0x945412['model'];if(!_0x4b1db8['query'][_0x066a('0x50')](_0x066a('0x51'))){_0x4c4a21[_0x066a('0x33')]=qs[_0x066a('0x33')](_0x4b1db8['query'][_0x066a('0x33')]);_0x4c4a21[_0x066a('0x35')]=qs[_0x066a('0x35')](_0x4b1db8[_0x066a('0x4a')]['offset']);}_0x4c4a21[_0x066a('0x52')]=qs[_0x066a('0x53')](_0x4b1db8[_0x066a('0x4a')][_0x066a('0x53')]);_0x4c4a21[_0x066a('0x54')]=qs[_0x066a('0x4b')](_[_0x066a('0x55')](_0x4b1db8[_0x066a('0x4a')],_0x945412['filters']),_0x396b04);if(_0x4b1db8[_0x066a('0x4a')][_0x066a('0x56')]){_0x4c4a21[_0x066a('0x54')]=_[_0x066a('0x57')](_0x4c4a21['where'],{'$or':_[_0x066a('0x49')](_0x396b04,function(_0x464819){if(_0x464819['type']!=='VIRTUAL'){var _0x512727={};_0x512727[_0x464819[_0x066a('0x3f')]]={'$like':'%'+_0x4b1db8['query'][_0x066a('0x56')]+'%'};return _0x512727;}})});}_0x4c4a21=_[_0x066a('0x57')]({},_0x4c4a21,_0x4b1db8[_0x066a('0x58')]);var _0x5a41c3={'where':_0x4c4a21[_0x066a('0x54')]};return db[_0x066a('0x44')]['count'](_0x5a41c3)[_0x066a('0x3c')](function(_0x2013ce){_0x1bac25[_0x066a('0x34')]=_0x2013ce;if(_0x4b1db8[_0x066a('0x4a')]['includeAll']){_0x4c4a21[_0x066a('0x59')]=[{'all':!![]}];}return db[_0x066a('0x44')][_0x066a('0x5a')](_0x4c4a21);})[_0x066a('0x3c')](function(_0x34135d){_0x1bac25['rows']=_0x34135d;return _0x1bac25;})[_0x066a('0x3c')](respondWithFilteredResult(_0x5ebf1b,_0x4c4a21))['catch'](handleError(_0x5ebf1b,null));};exports[_0x066a('0x5b')]=function(_0x27a184,_0x442231){var _0x5ceaed={'raw':![],'where':{'id':_0x27a184['params']['id']},'include':[{'model':db[_0x066a('0x42')],'as':_0x066a('0x43')}]},_0x1da130={};_0x1da130[_0x066a('0x48')]=_['keys'](db['WhatsappAccount'][_0x066a('0x45')]);_0x1da130[_0x066a('0x4a')]=_['keys'](_0x27a184[_0x066a('0x4a')]);_0x1da130[_0x066a('0x4b')]=_['intersection'](_0x1da130[_0x066a('0x48')],_0x1da130[_0x066a('0x4a')]);_0x5ceaed[_0x066a('0x4e')]=_['intersection'](_0x1da130['model'],qs['fields'](_0x27a184['query'][_0x066a('0x4d')]));_0x5ceaed[_0x066a('0x4e')]=_0x5ceaed['attributes'][_0x066a('0x4f')]?_0x5ceaed[_0x066a('0x4e')]:_0x1da130[_0x066a('0x48')];if(_0x27a184[_0x066a('0x4a')][_0x066a('0x5c')]){_0x5ceaed[_0x066a('0x59')]=[{'all':!![]}];}_0x5ceaed=_[_0x066a('0x57')]({},_0x5ceaed,_0x27a184[_0x066a('0x58')]);return db[_0x066a('0x44')][_0x066a('0x5d')](_0x5ceaed)[_0x066a('0x3c')](handleEntityNotFound(_0x442231,null))[_0x066a('0x3c')](respondWithResult(_0x442231,null))['catch'](handleError(_0x442231,null));};exports[_0x066a('0x5e')]=function(_0xa10c2b,_0x389cef){return db['WhatsappAccount'][_0x066a('0x5e')](_0xa10c2b[_0x066a('0x5f')],{})['then'](function(_0x503c5a){var _0x333997=_0xa10c2b['user'][_0x066a('0x60')]({'plain':!![]});if(!_0x333997)throw new Error(_0x066a('0x61'));if(_0x333997[_0x066a('0x62')]===_0x066a('0x63')){var _0x49e3f7=_0x503c5a[_0x066a('0x60')]({'plain':!![]});var _0xe642a4=_0x066a('0x3d');return db['UserProfileSection'][_0x066a('0x5d')]({'where':{'name':_0xe642a4,'userProfileId':_0x333997[_0x066a('0x64')]},'raw':!![]})['then'](function(_0x42857a){if(_0x42857a&&_0x42857a['autoAssociation']===0x0){return db[_0x066a('0x65')]['create']({'name':_0x49e3f7[_0x066a('0x3f')],'resourceId':_0x49e3f7['id'],'type':_0x42857a[_0x066a('0x3f')],'sectionId':_0x42857a['id']},{})['then'](function(){return _0x503c5a;});}else{return _0x503c5a;}})[_0x066a('0x2e')](function(_0x20ba13){logger['error'](_0x066a('0x66'),_0x20ba13);throw _0x20ba13;});}return _0x503c5a;})[_0x066a('0x3c')](respondWithResult(_0x389cef,0xc9))[_0x066a('0x2e')](handleError(_0x389cef,null));};exports[_0x066a('0x67')]=function(_0x3f89a7,_0x282795){if(_0x3f89a7[_0x066a('0x5f')]['id']){delete _0x3f89a7[_0x066a('0x5f')]['id'];}return db['WhatsappAccount']['find']({'where':{'id':_0x3f89a7[_0x066a('0x68')]['id']},'include':[{'model':db[_0x066a('0x42')],'as':'mandatoryDispositionPause'}]})[_0x066a('0x3c')](handleEntityNotFound(_0x282795,null))['then'](saveUpdates(_0x3f89a7['body'],null))['then'](respondWithResult(_0x282795,null))['catch'](handleError(_0x282795,null));};exports[_0x066a('0x3e')]=function(_0x391355,_0xa0d832){return db['WhatsappAccount']['find']({'where':{'id':_0x391355['params']['id']}})['then'](handleEntityNotFound(_0xa0d832,null))[_0x066a('0x3c')](removeEntity(_0xa0d832,null))[_0x066a('0x2e')](handleError(_0xa0d832,null));};exports[_0x066a('0x69')]=function(_0x56e4c1,_0x3d662f){return db[_0x066a('0x44')][_0x066a('0x69')]()[_0x066a('0x3c')](respondWithResult(_0x3d662f,null))[_0x066a('0x2e')](handleError(_0x3d662f,null));};exports[_0x066a('0x6a')]=function(_0x59d2cb,_0x5790bb,_0x3c4096){if(_0x59d2cb[_0x066a('0x5f')]['id']){delete _0x59d2cb[_0x066a('0x5f')]['id'];}return db[_0x066a('0x44')][_0x066a('0x5d')]({'where':{'id':_0x59d2cb[_0x066a('0x68')]['id']}})[_0x066a('0x3c')](handleEntityNotFound(_0x5790bb,null))[_0x066a('0x3c')](function(_0x45dc8e){if(_0x45dc8e){_0x59d2cb['body'][_0x066a('0x6b')]=_0x45dc8e['id'];return db[_0x066a('0x6c')][_0x066a('0x5e')](_0x59d2cb[_0x066a('0x5f')]);}})['then'](respondWithResult(_0x5790bb,null))[_0x066a('0x2e')](handleError(_0x5790bb,null));};exports['getDispositions']=function(_0x2c7bc4,_0x3a409d,_0x1133f2){var _0x25e6fa={'raw':![],'where':{}};var _0x519f09={};var _0x37daa5={'count':0x0,'rows':[]};return db[_0x066a('0x44')][_0x066a('0x6d')]({'where':{'id':_0x2c7bc4[_0x066a('0x68')]['id']}})[_0x066a('0x3c')](handleEntityNotFound(_0x3a409d,null))[_0x066a('0x3c')](function(_0x24fcdf){if(_0x24fcdf){_0x519f09[_0x066a('0x48')]=_[_0x066a('0x6e')](db[_0x066a('0x6c')][_0x066a('0x45')]);_0x519f09[_0x066a('0x4a')]=_[_0x066a('0x6e')](_0x2c7bc4['query']);_0x519f09[_0x066a('0x4b')]=_['intersection'](_0x519f09[_0x066a('0x48')],_0x519f09[_0x066a('0x4a')]);_0x25e6fa[_0x066a('0x4e')]=_[_0x066a('0x4c')](_0x519f09[_0x066a('0x48')],qs['fields'](_0x2c7bc4[_0x066a('0x4a')]['fields']));_0x25e6fa[_0x066a('0x4e')]=_0x25e6fa[_0x066a('0x4e')][_0x066a('0x4f')]?_0x25e6fa[_0x066a('0x4e')]:_0x519f09[_0x066a('0x48')];if(!_0x2c7bc4[_0x066a('0x4a')][_0x066a('0x50')](_0x066a('0x51'))){_0x25e6fa[_0x066a('0x33')]=qs['limit'](_0x2c7bc4[_0x066a('0x4a')]['limit']);_0x25e6fa['offset']=qs['offset'](_0x2c7bc4['query']['offset']);}_0x25e6fa[_0x066a('0x52')]=qs['sort'](_0x2c7bc4['query'][_0x066a('0x53')]);_0x25e6fa[_0x066a('0x54')]=qs[_0x066a('0x4b')](_[_0x066a('0x55')](_0x2c7bc4[_0x066a('0x4a')],_0x519f09[_0x066a('0x4b')]));_0x25e6fa[_0x066a('0x54')][_0x066a('0x6b')]=_0x24fcdf['id'];if(_0x2c7bc4[_0x066a('0x4a')][_0x066a('0x56')]){_0x25e6fa[_0x066a('0x54')]=_['merge'](_0x25e6fa['where'],{'$or':_['map'](_0x25e6fa['attributes'],function(_0x1d5f50){var _0x2fc284={};_0x2fc284[_0x1d5f50]={'$like':'%'+_0x2c7bc4[_0x066a('0x4a')][_0x066a('0x56')]+'%'};return _0x2fc284;})});}_0x25e6fa=_[_0x066a('0x57')]({},_0x25e6fa,_0x2c7bc4[_0x066a('0x58')]);return db[_0x066a('0x6c')][_0x066a('0x34')]({'where':_0x25e6fa['where']})[_0x066a('0x3c')](function(_0x5664ae){_0x37daa5[_0x066a('0x34')]=_0x5664ae;if(_0x2c7bc4[_0x066a('0x4a')][_0x066a('0x5c')]){_0x25e6fa[_0x066a('0x59')]=[{'all':!![]}];}return db['Disposition'][_0x066a('0x5a')](_0x25e6fa);})[_0x066a('0x3c')](function(_0x4097b7){_0x37daa5[_0x066a('0x6f')]=_0x4097b7;return _0x37daa5;});}})[_0x066a('0x3c')](respondWithFilteredResult(_0x3a409d,_0x25e6fa))[_0x066a('0x2e')](handleError(_0x3a409d,null));};exports[_0x066a('0x70')]=function(_0x1d9755,_0x5c6f86,_0x676a24){return db[_0x066a('0x44')][_0x066a('0x5d')]({'where':{'id':_0x1d9755[_0x066a('0x68')]['id']}})['then'](handleEntityNotFound(_0x5c6f86,null))[_0x066a('0x3c')](function(_0x4b3192){if(_0x4b3192){return _0x4b3192['removeDispositions'](_0x1d9755[_0x066a('0x4a')][_0x066a('0x71')]);}})[_0x066a('0x3c')](respondWithStatusCode(_0x5c6f86,null))[_0x066a('0x2e')](handleError(_0x5c6f86,null));};exports[_0x066a('0x72')]=function(_0x5b9a3c,_0x117dcd,_0x3f5895){if(_0x5b9a3c[_0x066a('0x5f')]['id']){delete _0x5b9a3c[_0x066a('0x5f')]['id'];}return db[_0x066a('0x44')][_0x066a('0x5d')]({'where':{'id':_0x5b9a3c[_0x066a('0x68')]['id']}})[_0x066a('0x3c')](handleEntityNotFound(_0x117dcd,null))[_0x066a('0x3c')](function(_0x2301ce){if(_0x2301ce){_0x5b9a3c[_0x066a('0x5f')][_0x066a('0x6b')]=_0x2301ce['id'];return db[_0x066a('0x73')]['create'](_0x5b9a3c[_0x066a('0x5f')]);}})['then'](respondWithResult(_0x117dcd,null))[_0x066a('0x2e')](handleError(_0x117dcd,null));};exports[_0x066a('0x74')]=function(_0x402124,_0x3cab2c,_0x434ce2){var _0x4c0db6={'raw':![],'where':{}};var _0x1159cd={};var _0x17edab={'count':0x0,'rows':[]};return db[_0x066a('0x44')][_0x066a('0x6d')]({'where':{'id':_0x402124['params']['id']}})[_0x066a('0x3c')](handleEntityNotFound(_0x3cab2c,null))[_0x066a('0x3c')](function(_0x281fcb){if(_0x281fcb){_0x1159cd[_0x066a('0x48')]=_[_0x066a('0x6e')](db[_0x066a('0x73')][_0x066a('0x45')]);_0x1159cd[_0x066a('0x4a')]=_[_0x066a('0x6e')](_0x402124[_0x066a('0x4a')]);_0x1159cd[_0x066a('0x4b')]=_[_0x066a('0x4c')](_0x1159cd[_0x066a('0x48')],_0x1159cd['query']);_0x4c0db6[_0x066a('0x4e')]=_['intersection'](_0x1159cd['model'],qs['fields'](_0x402124['query']['fields']));_0x4c0db6[_0x066a('0x4e')]=_0x4c0db6[_0x066a('0x4e')]['length']?_0x4c0db6['attributes']:_0x1159cd[_0x066a('0x48')];if(!_0x402124[_0x066a('0x4a')][_0x066a('0x50')](_0x066a('0x51'))){_0x4c0db6[_0x066a('0x33')]=qs['limit'](_0x402124[_0x066a('0x4a')][_0x066a('0x33')]);_0x4c0db6[_0x066a('0x35')]=qs['offset'](_0x402124[_0x066a('0x4a')][_0x066a('0x35')]);}_0x4c0db6['order']=qs[_0x066a('0x53')](_0x402124['query'][_0x066a('0x53')]);_0x4c0db6['where']=qs[_0x066a('0x4b')](_[_0x066a('0x55')](_0x402124[_0x066a('0x4a')],_0x1159cd[_0x066a('0x4b')]));_0x4c0db6[_0x066a('0x54')][_0x066a('0x6b')]=_0x281fcb['id'];if(_0x402124[_0x066a('0x4a')][_0x066a('0x56')]){_0x4c0db6[_0x066a('0x54')]=_[_0x066a('0x57')](_0x4c0db6[_0x066a('0x54')],{'$or':_[_0x066a('0x49')](_0x4c0db6[_0x066a('0x4e')],function(_0x482976){var _0x4ebecc={};_0x4ebecc[_0x482976]={'$like':'%'+_0x402124[_0x066a('0x4a')][_0x066a('0x56')]+'%'};return _0x4ebecc;})});}_0x4c0db6=_[_0x066a('0x57')]({},_0x4c0db6,_0x402124[_0x066a('0x58')]);return db[_0x066a('0x73')]['count']({'where':_0x4c0db6[_0x066a('0x54')]})[_0x066a('0x3c')](function(_0x524a4d){_0x17edab[_0x066a('0x34')]=_0x524a4d;if(_0x402124[_0x066a('0x4a')][_0x066a('0x5c')]){_0x4c0db6[_0x066a('0x59')]=[{'all':!![]}];}return db['CannedAnswer'][_0x066a('0x5a')](_0x4c0db6);})[_0x066a('0x3c')](function(_0x5e046d){_0x17edab[_0x066a('0x6f')]=_0x5e046d;return _0x17edab;});}})[_0x066a('0x3c')](respondWithFilteredResult(_0x3cab2c,_0x4c0db6))[_0x066a('0x2e')](handleError(_0x3cab2c,null));};exports[_0x066a('0x75')]=function(_0x2b0976,_0x45e484,_0x252880){return db[_0x066a('0x44')][_0x066a('0x5d')]({'where':{'id':_0x2b0976['params']['id']}})[_0x066a('0x3c')](handleEntityNotFound(_0x45e484,null))[_0x066a('0x3c')](function(_0x5e4286){if(_0x5e4286){return _0x5e4286[_0x066a('0x75')](_0x2b0976[_0x066a('0x4a')]['ids']);}})[_0x066a('0x3c')](respondWithStatusCode(_0x45e484,null))[_0x066a('0x2e')](handleError(_0x45e484,null));};exports['addAgents']=function(_0x1c46ba,_0x576d3a,_0x326e49){return db['WhatsappAccount'][_0x066a('0x5d')]({'where':{'id':_0x1c46ba[_0x066a('0x68')]['id']}})['then'](handleEntityNotFound(_0x576d3a,null))['then'](function(_0x2cc6c8){if(_0x2cc6c8){return _0x2cc6c8[_0x066a('0x76')](_0x1c46ba['body']['ids'],_[_0x066a('0x77')](_0x1c46ba[_0x066a('0x5f')],['ids','id'])||{})[_0x066a('0x78')](function(_0x486618){for(var _0x57bd24=0x0;_0x57bd24<_0x1c46ba['body'][_0x066a('0x71')]['length'];_0x57bd24+=0x1){socket[_0x066a('0x79')](_0x066a('0x7a'),{'UserId':Number(_0x1c46ba[_0x066a('0x5f')][_0x066a('0x71')][_0x57bd24]),'WhatsappAccountId':Number(_0x1c46ba[_0x066a('0x68')]['id'])});}return _0x486618;});}})[_0x066a('0x3c')](respondWithResult(_0x576d3a,null))[_0x066a('0x2e')](handleError(_0x576d3a,null));};exports[_0x066a('0x7b')]=function(_0x89e287,_0x3d8980,_0x415efb){return db[_0x066a('0x44')]['find']({'where':{'id':_0x89e287['params']['id']}})[_0x066a('0x3c')](handleEntityNotFound(_0x3d8980,null))[_0x066a('0x3c')](function(_0x448784){if(_0x448784){return _0x448784[_0x066a('0x7b')](_0x89e287[_0x066a('0x4a')][_0x066a('0x71')])[_0x066a('0x3c')](function(){if(_[_0x066a('0x7c')](_0x89e287[_0x066a('0x4a')]['ids'])){for(var _0x365078=0x0;_0x365078<_0x89e287[_0x066a('0x4a')]['ids'][_0x066a('0x4f')];_0x365078+=0x1){socket[_0x066a('0x79')](_0x066a('0x7d'),{'UserId':Number(_0x89e287[_0x066a('0x4a')][_0x066a('0x71')][_0x365078]),'WhatsappAccountId':Number(_0x89e287[_0x066a('0x68')]['id'])});}}else{socket[_0x066a('0x79')]('userWhatsappAccount:remove',{'UserId':Number(_0x89e287[_0x066a('0x4a')][_0x066a('0x71')]),'WhatsappAccountId':Number(_0x89e287[_0x066a('0x68')]['id'])});}});}})[_0x066a('0x3c')](respondWithStatusCode(_0x3d8980,null))[_0x066a('0x2e')](handleError(_0x3d8980,null));};exports[_0x066a('0x7e')]=function(_0x55fd3d,_0x3846da,_0x103fca){var _0x1187f5={};var _0x498fbf={};var _0x9bb73e;var _0x29900f;return db[_0x066a('0x44')][_0x066a('0x6d')]({'where':{'id':_0x55fd3d['params']['id']}})['then'](handleEntityNotFound(_0x3846da,null))[_0x066a('0x3c')](function(_0xcb8490){if(_0xcb8490){_0x9bb73e=_0xcb8490;_0x498fbf[_0x066a('0x48')]=_[_0x066a('0x6e')](db[_0x066a('0x7f')][_0x066a('0x45')]);_0x498fbf[_0x066a('0x4a')]=_[_0x066a('0x6e')](_0x55fd3d[_0x066a('0x4a')]);_0x498fbf[_0x066a('0x4b')]=_[_0x066a('0x4c')](_0x498fbf[_0x066a('0x48')],_0x498fbf[_0x066a('0x4a')]);_0x1187f5[_0x066a('0x4e')]=_['intersection'](_0x498fbf[_0x066a('0x48')],qs[_0x066a('0x4d')](_0x55fd3d['query'][_0x066a('0x4d')]));_0x1187f5[_0x066a('0x4e')]=_0x1187f5['attributes'][_0x066a('0x4f')]?_0x1187f5[_0x066a('0x4e')]:_0x498fbf['model'];_0x1187f5[_0x066a('0x52')]=qs[_0x066a('0x53')](_0x55fd3d['query'][_0x066a('0x53')]);_0x1187f5[_0x066a('0x54')]=qs[_0x066a('0x4b')](_[_0x066a('0x55')](_0x55fd3d[_0x066a('0x4a')],_0x498fbf[_0x066a('0x4b')]));if(_0x55fd3d[_0x066a('0x4a')][_0x066a('0x56')]){_0x1187f5[_0x066a('0x54')]=_['merge'](_0x1187f5['where'],{'$or':_[_0x066a('0x49')](_0x1187f5[_0x066a('0x4e')],function(_0x3ac9f6){var _0x535406={};_0x535406[_0x3ac9f6]={'$like':'%'+_0x55fd3d['query'][_0x066a('0x56')]+'%'};return _0x535406;})});}_0x1187f5=_[_0x066a('0x57')]({},_0x1187f5,_0x55fd3d[_0x066a('0x58')]);return _0x9bb73e[_0x066a('0x7e')](_0x1187f5);}})['then'](function(_0x3186ae){if(_0x3186ae){_0x29900f=_0x3186ae[_0x066a('0x4f')];if(!_0x55fd3d[_0x066a('0x4a')][_0x066a('0x50')]('nolimit')){_0x1187f5[_0x066a('0x33')]=qs[_0x066a('0x33')](_0x55fd3d['query'][_0x066a('0x33')]);_0x1187f5[_0x066a('0x35')]=qs['offset'](_0x55fd3d[_0x066a('0x4a')][_0x066a('0x35')]);}return _0x9bb73e['getAgents'](_0x1187f5);}})[_0x066a('0x3c')](function(_0x679c43){if(_0x679c43){return _0x679c43?{'count':_0x29900f,'rows':_0x679c43}:null;}})['then'](respondWithResult(_0x3846da,null))['catch'](handleError(_0x3846da,null));};exports[_0x066a('0x80')]=function(_0x1008bc,_0x14e6fb){var _0x132638=_0x1008bc[_0x066a('0x68')]['id'];var _0x572a3f=_0x1008bc[_0x066a('0x5f')];var _0x30aeac=0xc8;var _0x2c1c1e=null;return db['sequelize'][_0x066a('0x81')]({'isolationLevel':db[_0x066a('0x82')][_0x066a('0x83')][_0x066a('0x84')]['READ_COMMITTED']},function(_0x3df063){return db[_0x066a('0x44')]['findOne']({'where':{'id':_0x132638},'transaction':_0x3df063})['then'](function(_0x1de6aa){if(_0x1de6aa){return db[_0x066a('0x85')][_0x066a('0x3e')]({'where':{'WhatsappAccountId':_0x132638},'transaction':_0x3df063})[_0x066a('0x3c')](function(){var _0x1cc18d=_['map'](_0x572a3f,function(_0x40dd2d){_0x40dd2d[_0x066a('0x6b')]=_0x132638;return _0x40dd2d;});return db['WhatsappApplication']['bulkCreate'](_0x1cc18d,{'transaction':_0x3df063});});}else{_0x30aeac=0x194;_0x2c1c1e=[];}});})['then'](function(){if(_0x30aeac!==0x194){return db['WhatsappApplication']['findAndCountAll']({'where':{'WhatsappAccountId':_0x132638},'order':_0x066a('0x86')})[_0x066a('0x3c')](function(_0x179e8a){_0x2c1c1e=_0x179e8a;});}})[_0x066a('0x2e')](function(_0x3b6468){_0x30aeac=0x1f4;logger[_0x066a('0x2b')](_0x3b6468['stack']);if(_0x3b6468[_0x066a('0x3f')]){delete _0x3b6468[_0x066a('0x3f')];}_0x2c1c1e=_0x3b6468;})[_0x066a('0x87')](function(){if(_0x2c1c1e===null){_0x14e6fb['sendStatus'](_0x30aeac);}else{if(_0x30aeac===0x1f4){_0x14e6fb['status'](_0x30aeac)[_0x066a('0x40')](_0x2c1c1e);}else{_0x14e6fb['status'](_0x30aeac)['json'](_0x2c1c1e);}}});};exports[_0x066a('0x88')]=function(_0x4441e9,_0x41765d,_0x49c879){var _0x42e966={};var _0x58dce7={};var _0x3e0fa3;var _0x46ab6e;return db[_0x066a('0x44')][_0x066a('0x6d')]({'where':{'id':_0x4441e9[_0x066a('0x68')]['id']}})[_0x066a('0x3c')](handleEntityNotFound(_0x41765d,null))['then'](function(_0x28a919){if(_0x28a919){_0x3e0fa3=_0x28a919;_0x58dce7[_0x066a('0x48')]=_[_0x066a('0x6e')](db[_0x066a('0x85')][_0x066a('0x45')]);_0x58dce7[_0x066a('0x4a')]=_[_0x066a('0x6e')](_0x4441e9[_0x066a('0x4a')]);_0x58dce7[_0x066a('0x4b')]=_[_0x066a('0x4c')](_0x58dce7[_0x066a('0x48')],_0x58dce7[_0x066a('0x4a')]);_0x42e966[_0x066a('0x4e')]=_['intersection'](_0x58dce7['model'],qs[_0x066a('0x4d')](_0x4441e9[_0x066a('0x4a')]['fields']));_0x42e966['attributes']=_0x42e966[_0x066a('0x4e')]['length']?_0x42e966[_0x066a('0x4e')]:_0x58dce7[_0x066a('0x48')];_0x42e966['order']=qs[_0x066a('0x53')](_0x4441e9[_0x066a('0x4a')][_0x066a('0x53')]);_0x42e966[_0x066a('0x54')]=qs[_0x066a('0x4b')](_[_0x066a('0x55')](_0x4441e9[_0x066a('0x4a')],_0x58dce7[_0x066a('0x4b')]));if(_0x4441e9['query']['filter']){_0x42e966[_0x066a('0x54')]=_[_0x066a('0x57')](_0x42e966[_0x066a('0x54')],{'$or':_[_0x066a('0x49')](_0x42e966[_0x066a('0x4e')],function(_0x1fe8da){var _0x3c37f4={};_0x3c37f4[_0x1fe8da]={'$like':'%'+_0x4441e9[_0x066a('0x4a')]['filter']+'%'};return _0x3c37f4;})});}_0x42e966=_[_0x066a('0x57')]({},_0x42e966,_0x4441e9[_0x066a('0x58')]);return _0x3e0fa3[_0x066a('0x88')](_0x42e966);}})[_0x066a('0x3c')](function(_0x24fe06){if(_0x24fe06){_0x46ab6e=_0x24fe06[_0x066a('0x4f')];if(!_0x4441e9[_0x066a('0x4a')][_0x066a('0x50')](_0x066a('0x51'))){_0x42e966[_0x066a('0x33')]=qs['limit'](_0x4441e9['query'][_0x066a('0x33')]);_0x42e966['offset']=qs[_0x066a('0x35')](_0x4441e9[_0x066a('0x4a')][_0x066a('0x35')]);}return _0x3e0fa3[_0x066a('0x88')](_0x42e966);}})[_0x066a('0x3c')](function(_0x4c6fed){if(_0x4c6fed){return _0x4c6fed?{'count':_0x46ab6e,'rows':_0x4c6fed}:null;}})[_0x066a('0x3c')](respondWithResult(_0x41765d,null))[_0x066a('0x2e')](handleError(_0x41765d,null));};exports['notify']=function(_0x3135cd,_0x208a8,_0x1aa961){var _0x20fec1={'channel':'whatsapp'};var _0x218d43=[];var _0x4ae54b=[];var _0x55934a={};return db[_0x066a('0x44')]['find']({'where':{'id':_0x3135cd['params']['id']},'include':[{'model':db[_0x066a('0x85')],'as':_0x066a('0x89')}]})[_0x066a('0x3c')](handleEntityNotFound(_0x208a8,null))['then'](function(_0x1a4efd){_0x20fec1['account']=_0x1a4efd;if(_0x20fec1[_0x066a('0x8a')]&&_0x20fec1[_0x066a('0x8a')][_0x066a('0x47')]===_0x066a('0x8b')&&_0x3135cd[_0x066a('0x5f')][_0x066a('0x8c')]){if(_0x3135cd[_0x066a('0x5f')][_0x066a('0x8c')][_0x066a('0x4f')]===0x0)return;if(_0x3135cd[_0x066a('0x5f')]['statuses'][0x0]['state']!==_0x066a('0x8d'))return;return db[_0x066a('0x8e')][_0x066a('0x67')]({'read':!![],'readAt':_0x3135cd['body'][_0x066a('0x8c')][0x0][_0x066a('0x8f')]},{'where':{'messageId':_0x3135cd[_0x066a('0x5f')][_0x066a('0x8c')][0x0][_0x066a('0x90')]},'individualHooks':!![]})[_0x066a('0x3c')](function(_0x297273){return _0x208a8['status'](0xc8)[_0x066a('0x38')](_0x297273);});}_0x20fec1[_0x066a('0x91')]=_[_0x066a('0x92')](_0x1a4efd[_0x066a('0x89')],['priority'],[_0x066a('0x93')]);if(_0x20fec1[_0x066a('0x8a')][_0x066a('0x89')]){delete _0x20fec1[_0x066a('0x8a')][_0x066a('0x89')];}return db[_0x066a('0x94')][_0x066a('0x69')]()[_0x066a('0x3c')](function(_0x2e9f71){if(!_0x2e9f71){throw new db[(_0x066a('0x95'))][(_0x066a('0x96'))](_0x066a('0x97'));}_0x218d43=_[_0x066a('0x98')](_[_0x066a('0x6e')](_0x2e9f71),['createdAt','updatedAt']);_0x4ae54b=_['difference'](_[_0x066a('0x6e')](_0x2e9f71),['createdAt',_0x066a('0x99'),_0x066a('0x9a'),_0x066a('0x9b')]);_0x20fec1[_0x066a('0x5f')]={'mapKey':_0x066a('0x9c')};if(_0x20fec1[_0x066a('0x8a')]&&_0x20fec1[_0x066a('0x8a')][_0x066a('0x47')]===_0x066a('0x9d')){_0x20fec1[_0x066a('0x5f')][_0x066a('0x9e')]=_0x3135cd[_0x066a('0x5f')]['From'][_0x066a('0x9f')]('whatsapp:','');_0x20fec1[_0x066a('0x5f')][_0x066a('0x5f')]=_0x3135cd['body'][_0x066a('0xa0')];_0x20fec1['body'][_0x066a('0xa1')]=_0x3135cd[_0x066a('0x5f')][_0x066a('0xa2')];}if(_0x20fec1[_0x066a('0x8a')]&&_0x20fec1['account'][_0x066a('0x47')]==='sinch'){_0x20fec1[_0x066a('0x5f')][_0x066a('0x9e')]=_0x3135cd['body'][_0x066a('0xa3')][0x0][_0x066a('0x9e')];_0x20fec1[_0x066a('0x5f')][_0x066a('0x5f')]=_0x3135cd[_0x066a('0x5f')]['notifications'][0x0]['message'][_0x066a('0x5f')];_0x20fec1[_0x066a('0x5f')][_0x066a('0xa1')]=_0x3135cd[_0x066a('0x5f')][_0x066a('0xa3')][0x0][_0x066a('0x90')];}if(_0x20fec1['body']['id']){delete _0x20fec1[_0x066a('0x5f')]['id'];}if(_[_0x066a('0xa4')](_0x20fec1[_0x066a('0x5f')]['from'])){throw new db[(_0x066a('0x95'))][(_0x066a('0x96'))](_0x066a('0xa5'));}if(_[_0x066a('0xa4')](_0x20fec1[_0x066a('0x5f')][_0x066a('0x5f')])||_0x20fec1[_0x066a('0x5f')][_0x066a('0x5f')]===''){throw new db[(_0x066a('0x95'))][(_0x066a('0x96'))](_0x066a('0xa6'));}if(_[_0x066a('0xa4')](_0x20fec1[_0x066a('0x5f')][_0x066a('0xa7')])){throw new db['Sequelize'][(_0x066a('0x96'))](_0x066a('0xa8')+_0x4ae54b);}if(!_[_0x066a('0xa9')](_0x4ae54b,_0x20fec1['body'][_0x066a('0xa7')])){throw new db[(_0x066a('0x95'))][(_0x066a('0x96'))]('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x4ae54b);}_0x55934a[_0x20fec1['body'][_0x066a('0xa7')]]=_0x20fec1[_0x066a('0x5f')][_0x066a('0x9e')];return db[_0x066a('0xaa')][_0x066a('0x5d')]({'where':{'id':_0x20fec1[_0x066a('0x8a')]['ListId']},'include':[{'model':db[_0x066a('0x94')],'as':_0x066a('0xab'),'where':_0x55934a,'limit':0x1,'order':[['updatedAt','DESC']]}]});})[_0x066a('0x3c')](handleEntityNotFound(_0x208a8,null))[_0x066a('0x3c')](function(_0x29bc5f){if(_0x29bc5f){_0x20fec1['list']=_[_0x066a('0x77')](_0x29bc5f,['Contacts']);if(_0x29bc5f[_0x066a('0xab')][_0x066a('0x4f')]){return _0x29bc5f['Contacts'][0x0];}var _0x518406=_[_0x066a('0x1c')](_0x20fec1[_0x066a('0x5f')],{'firstName':_0x20fec1[_0x066a('0x5f')]['from'],'ListId':_0x29bc5f['id']});_0x518406[_0x20fec1[_0x066a('0x5f')][_0x066a('0xa7')]]=_0x20fec1[_0x066a('0x5f')][_0x066a('0x9e')];return db[_0x066a('0x94')][_0x066a('0x5e')](_0x518406,{'fields':_0x218d43,'raw':!![]});}})[_0x066a('0x3c')](handleEntityNotFound(_0x208a8,null))[_0x066a('0x3c')](function(_0x34acbd){if(_0x34acbd){_0x20fec1[_0x066a('0xac')]=_0x34acbd;var _0x4929a1={'ContactId':_0x34acbd['id'],'phone':_0x20fec1['body'][_0x066a('0x9e')],'WhatsappAccountId':_0x3135cd[_0x066a('0x68')]['id']};var _0x6781bb={'ContactId':_0x34acbd['id'],'WhatsappAccountId':_0x3135cd[_0x066a('0x68')]['id'],'closed':![]};return db['WhatsappInteraction'][_0x066a('0x5d')]({'where':_0x6781bb})[_0x066a('0x3c')](function(_0x259442){if(_0x259442){return[_0x259442,![]];}return db['WhatsappInteraction'][_0x066a('0x5e')](_0x4929a1)[_0x066a('0x3c')](function(_0x37e550){return[_0x37e550,!![]];});});}})[_0x066a('0x78')](function(_0x41ceae,_0x125872){_0x20fec1[_0x066a('0xad')]=_0x41ceae[_0x066a('0x60')]({'plain':!![]});_0x20fec1['interaction'][_0x066a('0xae')]=![];if(_0x125872){if(_0x20fec1[_0x066a('0x8a')][_0x066a('0xaf')]){_0x20fec1['applications']['push']({'id':0x0,'priority':_0x20fec1[_0x066a('0x91')][_0x066a('0x4f')]+0x1,'app':'close','appdata':'unmanaged','interval':'*,*,*,*'});}_0x20fec1[_0x066a('0xad')][_0x066a('0xae')]=!![];}return db[_0x066a('0x8e')]['create']({'phone':_0x20fec1['body'][_0x066a('0x9e')],'messageId':_0x20fec1[_0x066a('0x5f')][_0x066a('0xa1')],'body':_0x20fec1[_0x066a('0x5f')]['body'],'WhatsappAccountId':_0x3135cd[_0x066a('0x68')]['id'],'WhatsappInteractionId':_0x41ceae['id'],'direction':'in','ContactId':_0x41ceae[_0x066a('0xb0')],'AttachmentId':_0x20fec1['body'][_0x066a('0xb1')]});})[_0x066a('0x3c')](function(_0x3a94e0){_0x20fec1[_0x066a('0x2d')]=_0x3a94e0;if(_0x20fec1['interaction'][_0x066a('0xb2')]){return db[_0x066a('0x7f')][_0x066a('0x5d')]({'attributes':['id','name'],'where':{'id':_0x20fec1[_0x066a('0xad')]['UserId']}})[_0x066a('0x3c')](function(_0x3bfe72){if(_0x3bfe72){_0x20fec1[_0x066a('0x91')][_0x066a('0xb3')]({'id':0x0,'priority':0x0,'app':_0x066a('0xb4'),'appdata':_0x3bfe72[_0x066a('0x3f')]+','+(_0x20fec1[_0x066a('0x8a')][_0x066a('0xb5')]||0xa),'interval':_0x066a('0xb6')});}return respondWithRpcPromise(_0x066a('0xb7'),_0x066a('0xb8'),_0x20fec1);});}return respondWithRpcPromise(_0x066a('0xb7'),_0x066a('0xb8'),_0x20fec1);})[_0x066a('0x3c')](function(_0x23226e){if(_0x23226e){var _0x3b1b6b=0xc8;var _0x5c5be6=_0x066a('0xb9');logger['info'](_0x066a('0x29'),_0x5c5be6,_0x3b1b6b,'entity\x20found');logger['debug'](_0x066a('0xba'),_0x5c5be6,_0x3b1b6b,_0x066a('0xbb'),JSON['stringify'](_0x23226e));if(_0x20fec1['account'][_0x066a('0x47')]===_0x066a('0x9d')){return _0x208a8[_0x066a('0x30')](_0x3b1b6b)[_0x066a('0x36')](_0x066a('0xbc'),_0x066a('0xbd'))[_0x066a('0x40')](_0x066a('0xbe'));}else{return _0x208a8[_0x066a('0x30')](_0x3b1b6b)[_0x066a('0x38')](_0x23226e);}}});})[_0x066a('0x2e')](handleError(_0x208a8,null));};exports[_0x066a('0x40')]=function(_0x2d6527,_0x3ef93c,_0x2f2cba){var _0x5373c9,_0x3e456e,_0x3bb9bc;if(_[_0x066a('0xa4')](_0x2d6527[_0x066a('0x5f')][_0x066a('0x5f')])||_0x2d6527[_0x066a('0x5f')][_0x066a('0x5f')]===''){throw new db[(_0x066a('0x95'))]['ValidationError'](_0x066a('0xa6'));}if(_[_0x066a('0xa4')](_0x2d6527[_0x066a('0x5f')]['to'])){throw new db[(_0x066a('0x95'))]['ValidationError'](_0x066a('0xbf'));}_0x5373c9=_0x2d6527[_0x066a('0x5f')]['to'];return db[_0x066a('0x44')][_0x066a('0x5d')]({'where':{'id':_0x2d6527[_0x066a('0x68')]['id']},'include':[{'model':db['CmList'],'as':_0x066a('0xc0'),'include':[{'model':db[_0x066a('0x94')],'as':'Contacts','where':{'mobile':_0x5373c9},'limit':0x1,'order':[['updatedAt',_0x066a('0xc1')]]}]}]})[_0x066a('0x3c')](handleEntityNotFound(_0x3ef93c,null))[_0x066a('0x3c')](function(_0x57bb94){if(_0x57bb94&&_0x57bb94[_0x066a('0xc0')]){_0x3e456e=_0x57bb94[_0x066a('0x60')]({'plain':!![]});if(_0x3e456e['List']&&_0x3e456e[_0x066a('0xc0')][_0x066a('0xab')][_0x066a('0x4f')]){return _0x3e456e[_0x066a('0xc0')][_0x066a('0xab')][0x0];}return db[_0x066a('0x94')][_0x066a('0x5e')](_[_0x066a('0x1c')](_0x2d6527[_0x066a('0x5f')],{'firstName':_0x5373c9,'mobile':_0x5373c9,'phone':_0x5373c9,'ListId':_0x3e456e[_0x066a('0x9b')]}));}})[_0x066a('0x3c')](handleEntityNotFound(_0x3ef93c,null))[_0x066a('0x3c')](function(_0x4f53d7){if(_0x4f53d7){_0x3bb9bc=_0x4f53d7;return db[_0x066a('0xc2')]['find']({'where':{'ContactId':_0x3bb9bc['id'],'closed':![],'WhatsappAccountId':_0x3e456e['id']}})[_0x066a('0x3c')](function(_0x4b2d6d){if(_0x4b2d6d){return[_0x4b2d6d,![]];}return db[_0x066a('0xc2')][_0x066a('0x5e')]({'UserId':_0x2d6527[_0x066a('0x63')]['id'],'ContactId':_0x3bb9bc['id'],'WhatsappAccountId':_0x3e456e['id'],'phone':_0x5373c9,'firstMsgDirection':_0x066a('0xc3'),'Messages':[_['merge'](_0x2d6527[_0x066a('0x5f')],{'read':![],'body':_0x2d6527[_0x066a('0x5f')][_0x066a('0x5f')],'phone':_0x5373c9,'WhatsappAccountId':_0x3e456e['id'],'UserId':_0x2d6527[_0x066a('0x63')]['id'],'ContactId':_0x3bb9bc['id']})]},{'include':[{'model':db[_0x066a('0x8e')],'as':_0x066a('0xc4')}]})['then'](function(_0x1945bb){return[_0x1945bb,!![]];});});}})['spread'](function(_0x8e1072,_0x1c321f){if(_0x1c321f){return _0x8e1072;}return db['WhatsappMessage']['create'](_[_0x066a('0x57')](_0x2d6527[_0x066a('0x5f')],{'read':![],'body':_0x2d6527['body']['body'],'phone':_0x5373c9,'WhatsappAccountId':_0x3e456e['id'],'WhatsappInteractionId':_0x8e1072['id'],'UserId':_0x2d6527['user']['id'],'ContactId':_0x3bb9bc['id']}))[_0x066a('0x3c')](function(_0x4bf969){_0x8e1072[_0x066a('0xc5')][_0x066a('0xc4')]=[];_0x8e1072['dataValues']['Messages'][_0x066a('0xc6')](_0x4bf969['dataValues']);return _0x8e1072;});})[_0x066a('0x3c')](respondWithResult(_0x3ef93c,null))[_0x066a('0x2e')](handleError(_0x3ef93c,null));};
\ No newline at end of file
index 03b1978..de9149b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x48e2=['update','remove','emit','exports','../../mysqldb','WhatsappAccount','setMaxListeners'];(function(_0x5b9709,_0x5ce3e9){var _0x33f2f6=function(_0x2a10fe){while(--_0x2a10fe){_0x5b9709['push'](_0x5b9709['shift']());}};_0x33f2f6(++_0x5ce3e9);}(_0x48e2,0x1d9));var _0x248e=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0x48e2[_0x21a9d9];return _0x46adce;};'use strict';var EventEmitter=require('events');var WhatsappAccount=require(_0x248e('0x0'))['db'][_0x248e('0x1')];var WhatsappAccountEvents=new EventEmitter();WhatsappAccountEvents[_0x248e('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x248e('0x3'),'afterDestroy':_0x248e('0x4')};function emitEvent(_0x42e964){return function(_0xf0ee9a,_0x3ca46d,_0x1b9998){WhatsappAccountEvents['emit'](_0x42e964+':'+_0xf0ee9a['id'],_0xf0ee9a);WhatsappAccountEvents[_0x248e('0x5')](_0x42e964,_0xf0ee9a);_0x1b9998(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappAccount['hook'](e,emitEvent(event));}}module[_0x248e('0x6')]=WhatsappAccountEvents;
\ No newline at end of file
+var _0x6122=['../../mysqldb','setMaxListeners','remove','emit','hasOwnProperty','hook','events'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x6122,0x1c6));var _0x2612=function(_0x527733,_0x16051c){_0x527733=_0x527733-0x0;var _0x5400ba=_0x6122[_0x527733];return _0x5400ba;};'use strict';var EventEmitter=require(_0x2612('0x0'));var WhatsappAccount=require(_0x2612('0x1'))['db']['WhatsappAccount'];var WhatsappAccountEvents=new EventEmitter();WhatsappAccountEvents[_0x2612('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x2612('0x3')};function emitEvent(_0x14a8f2){return function(_0x2fa13d,_0x4db35d,_0x136061){WhatsappAccountEvents[_0x2612('0x4')](_0x14a8f2+':'+_0x2fa13d['id'],_0x2fa13d);WhatsappAccountEvents[_0x2612('0x4')](_0x14a8f2,_0x2fa13d);_0x136061(null);};}for(var e in events){if(events[_0x2612('0x5')](e)){var event=events[e];WhatsappAccount[_0x2612('0x6')](e,emitEvent(event));}}module['exports']=WhatsappAccountEvents;
\ No newline at end of file
index 3d1c40c..e999856 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3691=['define','whatsapp_accounts','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./whatsappAccount.attributes','exports'];(function(_0x4e7c3d,_0x31e8e2){var _0x5c71f8=function(_0x110e16){while(--_0x110e16){_0x4e7c3d['push'](_0x4e7c3d['shift']());}};_0x5c71f8(++_0x31e8e2);}(_0x3691,0xd3));var _0x1369=function(_0x243a5c,_0xbd26d8){_0x243a5c=_0x243a5c-0x0;var _0x280ad8=_0x3691[_0x243a5c];return _0x280ad8;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x1369('0x0'))(_0x1369('0x1'));var moment=require(_0x1369('0x2'));var BPromise=require(_0x1369('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1369('0x4'));var rimraf=require(_0x1369('0x5'));var config=require(_0x1369('0x6'));var attributes=require(_0x1369('0x7'));module[_0x1369('0x8')]=function(_0xdffeda,_0x38be5c){return _0xdffeda[_0x1369('0x9')]('WhatsappAccount',attributes,{'tableName':_0x1369('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc6ff=['request-promise','path','rimraf','../../config/environment','./whatsappAccount.attributes','exports','define','WhatsappAccount','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x47159c,_0x1c8216){var _0x454dbe=function(_0x2b54f7){while(--_0x2b54f7){_0x47159c['push'](_0x47159c['shift']());}};_0x454dbe(++_0x1c8216);}(_0xc6ff,0xe8));var _0xfc6f=function(_0xf817f4,_0x2306ca){_0xf817f4=_0xf817f4-0x0;var _0x344f65=_0xc6ff[_0xf817f4];return _0x344f65;};'use strict';var _=require(_0xfc6f('0x0'));var util=require(_0xfc6f('0x1'));var logger=require(_0xfc6f('0x2'))(_0xfc6f('0x3'));var moment=require(_0xfc6f('0x4'));var BPromise=require(_0xfc6f('0x5'));var rp=require(_0xfc6f('0x6'));var fs=require('fs');var path=require(_0xfc6f('0x7'));var rimraf=require(_0xfc6f('0x8'));var config=require(_0xfc6f('0x9'));var attributes=require(_0xfc6f('0xa'));module[_0xfc6f('0xb')]=function(_0x188655,_0x308825){return _0x188655[_0xfc6f('0xc')](_0xfc6f('0xd'),attributes,{'tableName':'whatsapp_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c3c3ee9..f5571d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd903=['model','ShowWhatsappAccount','util','moment','bluebird','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','http','./whatsappAccount.socket','request','then','WhatsappAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result','catch','options','where','attributes','include','map'];(function(_0x386d66,_0x4d823d){var _0x391aa8=function(_0x67f73c){while(--_0x67f73c){_0x386d66['push'](_0x386d66['shift']());}};_0x391aa8(++_0x4d823d);}(_0xd903,0x198));var _0x3d90=function(_0x4cd5db,_0x77188c){_0x4cd5db=_0x4cd5db-0x0;var _0x2e9975=_0xd903[_0x4cd5db];return _0x2e9975;};'use strict';var _=require('lodash');var util=require(_0x3d90('0x0'));var moment=require(_0x3d90('0x1'));var BPromise=require(_0x3d90('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x3d90('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x3d90('0x4'));var logger=require('../../config/logger')(_0x3d90('0x5'));var config=require(_0x3d90('0x6'));var jayson=require(_0x3d90('0x7'));var client=jayson['client'][_0x3d90('0x8')]({'port':0x232a});config['redis']=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x3d90('0x9'))['register'](socket);function respondWithRpcPromise(_0x489e39,_0x41f4a7,_0x3ad461){return new BPromise(function(_0x387b26,_0x2a78e8){return client[_0x3d90('0xa')](_0x489e39,_0x3ad461)[_0x3d90('0xb')](function(_0x5058c2){logger['info'](_0x3d90('0xc'),_0x41f4a7,_0x3d90('0xd'));logger[_0x3d90('0xe')]('WhatsappAccount,\x20%s,\x20%s,\x20%s',_0x41f4a7,_0x3d90('0xd'),JSON[_0x3d90('0xf')](_0x5058c2));if(_0x5058c2[_0x3d90('0x10')]){if(_0x5058c2['error'][_0x3d90('0x11')]===0x1f4){logger[_0x3d90('0x10')](_0x3d90('0xc'),_0x41f4a7,_0x5058c2['error'][_0x3d90('0x12')]);return _0x2a78e8(_0x5058c2[_0x3d90('0x10')][_0x3d90('0x12')]);}logger[_0x3d90('0x10')](_0x3d90('0xc'),_0x41f4a7,_0x5058c2[_0x3d90('0x10')][_0x3d90('0x12')]);return _0x387b26(_0x5058c2[_0x3d90('0x10')][_0x3d90('0x12')]);}else{logger[_0x3d90('0x13')](_0x3d90('0xc'),_0x41f4a7,'request\x20sent');_0x387b26(_0x5058c2[_0x3d90('0x14')][_0x3d90('0x12')]);}})[_0x3d90('0x15')](function(_0x5b4d75){logger[_0x3d90('0x10')]('WhatsappAccount,\x20%s,\x20%s',_0x41f4a7,_0x5b4d75);_0x2a78e8(_0x5b4d75);});});}exports['ShowWhatsappAccount']=function(_0x15af1d){var _0x4b90c7=this;return new Promise(function(_0x57788f,_0x5a1c07){return db['WhatsappAccount']['find']({'raw':_0x15af1d[_0x3d90('0x16')]?_0x15af1d['options']['raw']===undefined?!![]:![]:!![],'where':_0x15af1d[_0x3d90('0x16')]?_0x15af1d[_0x3d90('0x16')][_0x3d90('0x17')]||null:null,'attributes':_0x15af1d[_0x3d90('0x16')]?_0x15af1d[_0x3d90('0x16')][_0x3d90('0x18')]||null:null,'include':_0x15af1d[_0x3d90('0x16')]?_0x15af1d[_0x3d90('0x16')][_0x3d90('0x19')]?_[_0x3d90('0x1a')](_0x15af1d[_0x3d90('0x16')]['include'],function(_0x474b9b){return{'model':db[_0x474b9b[_0x3d90('0x1b')]],'as':_0x474b9b['as'],'attributes':_0x474b9b[_0x3d90('0x18')],'include':_0x474b9b[_0x3d90('0x19')]?_['map'](_0x474b9b[_0x3d90('0x19')],function(_0x3eae72){return{'model':db[_0x3eae72[_0x3d90('0x1b')]],'as':_0x3eae72['as'],'attributes':_0x3eae72['attributes'],'include':_0x3eae72['include']?_[_0x3d90('0x1a')](_0x3eae72[_0x3d90('0x19')],function(_0x1046da){return{'model':db[_0x1046da[_0x3d90('0x1b')]],'as':_0x1046da['as'],'attributes':_0x1046da[_0x3d90('0x18')]};}):[]};}):[]};}):[]:[]})[_0x3d90('0xb')](function(_0x2208c0){logger[_0x3d90('0x13')](_0x3d90('0x1c'),_0x15af1d);logger[_0x3d90('0xe')](_0x3d90('0x1c'),_0x15af1d,JSON[_0x3d90('0xf')](_0x2208c0));_0x57788f(_0x2208c0);})['catch'](function(_0xd2c2f){logger[_0x3d90('0x10')](_0x3d90('0x1c'),_0xd2c2f[_0x3d90('0x12')],_0x15af1d);_0x5a1c07(_0x4b90c7[_0x3d90('0x10')](0x1f4,_0xd2c2f[_0x3d90('0x12')]));});});};
\ No newline at end of file
+var _0x2898=['info','result','catch','ShowWhatsappAccount','WhatsappAccount','find','options','raw','where','attributes','include','map','model','stringify','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./whatsappAccount.socket','register','request','then','WhatsappAccount,\x20%s,\x20%s','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message'];(function(_0x25c454,_0x190f0d){var _0x955617=function(_0x430210){while(--_0x430210){_0x25c454['push'](_0x25c454['shift']());}};_0x955617(++_0x190f0d);}(_0x2898,0x1bb));var _0x8289=function(_0x12e073,_0x4d43db){_0x12e073=_0x12e073-0x0;var _0x267748=_0x2898[_0x12e073];return _0x267748;};'use strict';var _=require('lodash');var util=require(_0x8289('0x0'));var moment=require('moment');var BPromise=require(_0x8289('0x1'));var rs=require(_0x8289('0x2'));var fs=require('fs');var Redis=require(_0x8289('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x8289('0x4'));var logger=require(_0x8289('0x5'))(_0x8289('0x6'));var config=require(_0x8289('0x7'));var jayson=require(_0x8289('0x8'));var client=jayson['client'][_0x8289('0x9')]({'port':0x232a});config[_0x8289('0xa')]=_[_0x8289('0xb')](config[_0x8289('0xa')],{'host':_0x8289('0xc'),'port':0x18eb});var socket=require(_0x8289('0xd'))(new Redis(config['redis']));require(_0x8289('0xe'))[_0x8289('0xf')](socket);function respondWithRpcPromise(_0x9b38f1,_0x3ee84a,_0x2419d9){return new BPromise(function(_0x12d157,_0xdb28fe){return client[_0x8289('0x10')](_0x9b38f1,_0x2419d9)[_0x8289('0x11')](function(_0x13b360){logger['info'](_0x8289('0x12'),_0x3ee84a,'request\x20sent');logger[_0x8289('0x13')](_0x8289('0x14'),_0x3ee84a,_0x8289('0x15'),JSON['stringify'](_0x13b360));if(_0x13b360['error']){if(_0x13b360[_0x8289('0x16')][_0x8289('0x17')]===0x1f4){logger[_0x8289('0x16')](_0x8289('0x12'),_0x3ee84a,_0x13b360[_0x8289('0x16')][_0x8289('0x18')]);return _0xdb28fe(_0x13b360[_0x8289('0x16')][_0x8289('0x18')]);}logger[_0x8289('0x16')]('WhatsappAccount,\x20%s,\x20%s',_0x3ee84a,_0x13b360[_0x8289('0x16')][_0x8289('0x18')]);return _0x12d157(_0x13b360[_0x8289('0x16')][_0x8289('0x18')]);}else{logger[_0x8289('0x19')](_0x8289('0x12'),_0x3ee84a,_0x8289('0x15'));_0x12d157(_0x13b360[_0x8289('0x1a')][_0x8289('0x18')]);}})[_0x8289('0x1b')](function(_0xc8685b){logger[_0x8289('0x16')](_0x8289('0x12'),_0x3ee84a,_0xc8685b);_0xdb28fe(_0xc8685b);});});}exports[_0x8289('0x1c')]=function(_0x5018e6){var _0x460eb0=this;return new Promise(function(_0x323ff5,_0x4a4ad5){return db[_0x8289('0x1d')][_0x8289('0x1e')]({'raw':_0x5018e6['options']?_0x5018e6[_0x8289('0x1f')][_0x8289('0x20')]===undefined?!![]:![]:!![],'where':_0x5018e6[_0x8289('0x1f')]?_0x5018e6[_0x8289('0x1f')][_0x8289('0x21')]||null:null,'attributes':_0x5018e6[_0x8289('0x1f')]?_0x5018e6['options'][_0x8289('0x22')]||null:null,'include':_0x5018e6[_0x8289('0x1f')]?_0x5018e6[_0x8289('0x1f')][_0x8289('0x23')]?_[_0x8289('0x24')](_0x5018e6['options'][_0x8289('0x23')],function(_0x16d54c){return{'model':db[_0x16d54c[_0x8289('0x25')]],'as':_0x16d54c['as'],'attributes':_0x16d54c[_0x8289('0x22')],'include':_0x16d54c[_0x8289('0x23')]?_[_0x8289('0x24')](_0x16d54c[_0x8289('0x23')],function(_0x3df19d){return{'model':db[_0x3df19d['model']],'as':_0x3df19d['as'],'attributes':_0x3df19d[_0x8289('0x22')],'include':_0x3df19d[_0x8289('0x23')]?_[_0x8289('0x24')](_0x3df19d[_0x8289('0x23')],function(_0x3587f5){return{'model':db[_0x3587f5[_0x8289('0x25')]],'as':_0x3587f5['as'],'attributes':_0x3587f5[_0x8289('0x22')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x3c88de){logger[_0x8289('0x19')](_0x8289('0x1c'),_0x5018e6);logger[_0x8289('0x13')]('ShowWhatsappAccount',_0x5018e6,JSON[_0x8289('0x26')](_0x3c88de));_0x323ff5(_0x3c88de);})[_0x8289('0x1b')](function(_0x37870c){logger[_0x8289('0x16')](_0x8289('0x1c'),_0x37870c[_0x8289('0x18')],_0x5018e6);_0x4a4ad5(_0x460eb0[_0x8289('0x16')](0x1f4,_0x37870c['message']));});});};
\ No newline at end of file
index 3ba7aa2..074f788 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5bfe=['emit','removeListener','./whatsappAccount.events','save','remove','update'];(function(_0x594670,_0x4b9fdd){var _0x36a5b7=function(_0x45471e){while(--_0x45471e){_0x594670['push'](_0x594670['shift']());}};_0x36a5b7(++_0x4b9fdd);}(_0x5bfe,0x13a));var _0xe5bf=function(_0x4a1820,_0x42bdcb){_0x4a1820=_0x4a1820-0x0;var _0x2b2729=_0x5bfe[_0x4a1820];return _0x2b2729;};'use strict';var WhatsappAccountEvents=require(_0xe5bf('0x0'));var events=[_0xe5bf('0x1'),_0xe5bf('0x2'),_0xe5bf('0x3')];function createListener(_0x254f48,_0xabfe44){return function(_0x5e445a){_0xabfe44[_0xe5bf('0x4')](_0x254f48,_0x5e445a);};}function removeListener(_0x4f71e0,_0x53e567){return function(){WhatsappAccountEvents[_0xe5bf('0x5')](_0x4f71e0,_0x53e567);};}exports['register']=function(_0x479f97){for(var _0x344299=0x0,_0x51936d=events['length'];_0x344299<_0x51936d;_0x344299++){var _0x4dd33f=events[_0x344299];var _0x55d4cf=createListener('whatsappAccount:'+_0x4dd33f,_0x479f97);WhatsappAccountEvents['on'](_0x4dd33f,_0x55d4cf);}};
\ No newline at end of file
+var _0x4ec4=['length','./whatsappAccount.events','save','update','emit'];(function(_0x230a28,_0x47f00f){var _0x5c13d9=function(_0x36507c){while(--_0x36507c){_0x230a28['push'](_0x230a28['shift']());}};_0x5c13d9(++_0x47f00f);}(_0x4ec4,0x92));var _0x44ec=function(_0x2ed208,_0xb84fa0){_0x2ed208=_0x2ed208-0x0;var _0x188adf=_0x4ec4[_0x2ed208];return _0x188adf;};'use strict';var WhatsappAccountEvents=require(_0x44ec('0x0'));var events=[_0x44ec('0x1'),'remove',_0x44ec('0x2')];function createListener(_0x535ee7,_0x2a9a43){return function(_0x569d9f){_0x2a9a43[_0x44ec('0x3')](_0x535ee7,_0x569d9f);};}function removeListener(_0xe9a75c,_0x513a33){return function(){WhatsappAccountEvents['removeListener'](_0xe9a75c,_0x513a33);};}exports['register']=function(_0x647b62){for(var _0x53b10c=0x0,_0x256315=events[_0x44ec('0x4')];_0x53b10c<_0x256315;_0x53b10c++){var _0x4fc3c0=events[_0x53b10c];var _0x19e768=createListener('whatsappAccount:'+_0x4fc3c0,_0x647b62);WhatsappAccountEvents['on'](_0x4fc3c0,_0x19e768);}};
\ No newline at end of file
index 36bf5af..21e9112 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa1ce=['Router','fs-extra','../../components/interaction/service','../../config/environment','./whatsappApplication.controller','get','isAuthenticated','index','post','put','/:id','update','delete','exports','util','path','express'];(function(_0x30bb7c,_0x27a364){var _0x3b32be=function(_0x4b031d){while(--_0x4b031d){_0x30bb7c['push'](_0x30bb7c['shift']());}};_0x3b32be(++_0x27a364);}(_0xa1ce,0x140));var _0xea1c=function(_0x2fb307,_0x3f90d6){_0x2fb307=_0x2fb307-0x0;var _0x3623e5=_0xa1ce[_0x2fb307];return _0x3623e5;};'use strict';var multer=require('multer');var util=require(_0xea1c('0x0'));var path=require(_0xea1c('0x1'));var timeout=require('connect-timeout');var express=require(_0xea1c('0x2'));var router=express[_0xea1c('0x3')]();var fs_extra=require(_0xea1c('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xea1c('0x5'));var config=require(_0xea1c('0x6'));var controller=require(_0xea1c('0x7'));router[_0xea1c('0x8')]('/',auth[_0xea1c('0x9')](),controller[_0xea1c('0xa')]);router[_0xea1c('0x8')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0xea1c('0xb')]('/',auth['isAuthenticated'](),controller['create']);router[_0xea1c('0xc')](_0xea1c('0xd'),auth['isAuthenticated'](),controller[_0xea1c('0xe')]);router[_0xea1c('0xf')](_0xea1c('0xd'),auth[_0xea1c('0x9')](),controller['destroy']);module[_0xea1c('0x10')]=router;
\ No newline at end of file
+var _0xf288=['../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappApplication.controller','get','isAuthenticated','show','create','put','/:id','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra'];(function(_0x387777,_0x356171){var _0x3f84c0=function(_0x4d4423){while(--_0x4d4423){_0x387777['push'](_0x387777['shift']());}};_0x3f84c0(++_0x356171);}(_0xf288,0xe9));var _0x8f28=function(_0x21b706,_0x1022f4){_0x21b706=_0x21b706-0x0;var _0x13b94a=_0xf288[_0x21b706];return _0x13b94a;};'use strict';var multer=require(_0x8f28('0x0'));var util=require(_0x8f28('0x1'));var path=require(_0x8f28('0x2'));var timeout=require(_0x8f28('0x3'));var express=require(_0x8f28('0x4'));var router=express[_0x8f28('0x5')]();var fs_extra=require(_0x8f28('0x6'));var auth=require(_0x8f28('0x7'));var interaction=require(_0x8f28('0x8'));var config=require(_0x8f28('0x9'));var controller=require(_0x8f28('0xa'));router[_0x8f28('0xb')]('/',auth['isAuthenticated'](),controller['index']);router[_0x8f28('0xb')]('/:id',auth[_0x8f28('0xc')](),controller[_0x8f28('0xd')]);router['post']('/',auth[_0x8f28('0xc')](),controller[_0x8f28('0xe')]);router[_0x8f28('0xf')](_0x8f28('0x10'),auth[_0x8f28('0xc')](),controller['update']);router[_0x8f28('0x11')](_0x8f28('0x10'),auth[_0x8f28('0xc')](),controller[_0x8f28('0x12')]);module[_0x8f28('0x13')]=router;
\ No newline at end of file
index ccb8398..c833aea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x310a=['TEXT','exports','STRING','noop'];(function(_0x4b33c0,_0x17fb55){var _0x43c889=function(_0x410c0d){while(--_0x410c0d){_0x4b33c0['push'](_0x4b33c0['shift']());}};_0x43c889(++_0x17fb55);}(_0x310a,0x175));var _0xa310=function(_0x4953df,_0x4897d7){_0x4953df=_0x4953df-0x0;var _0xf120ed=_0x310a[_0x4953df];return _0xf120ed;};'use strict';var Sequelize=require('sequelize');module[_0xa310('0x0')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0xa310('0x1')],'allowNull':![],'defaultValue':_0xa310('0x2')},'appdata':{'type':Sequelize[_0xa310('0x3')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0xa310('0x1')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
+var _0x2565=['exports','INTEGER','STRING','noop','TEXT','*,*,*,*'];(function(_0x10f5d1,_0x32f939){var _0x5b7aec=function(_0x20ca5e){while(--_0x20ca5e){_0x10f5d1['push'](_0x10f5d1['shift']());}};_0x5b7aec(++_0x32f939);}(_0x2565,0x96));var _0x5256=function(_0x47dac4,_0x1edac3){_0x47dac4=_0x47dac4-0x0;var _0x43d72c=_0x2565[_0x47dac4];return _0x43d72c;};'use strict';var Sequelize=require('sequelize');module[_0x5256('0x0')]={'priority':{'type':Sequelize[_0x5256('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0x5256('0x2')],'allowNull':![],'defaultValue':_0x5256('0x3')},'appdata':{'type':Sequelize[_0x5256('0x4')]()},'description':{'type':Sequelize[_0x5256('0x2')]},'interval':{'type':Sequelize[_0x5256('0x2')],'defaultValue':_0x5256('0x5')}};
\ No newline at end of file
index 1f9a1f0..df4a5b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ab9=['WhatsappApplication','rawAttributes','fieldName','key','model','intersection','query','attributes','fields','nolimit','sort','where','pick','filters','filter','merge','type','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','keys','length','create','body','find','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','reject','save','update','destroy','then','error','stack','name','send','index','map'];(function(_0x12f52e,_0x26fd99){var _0x12763c=function(_0x303e9b){while(--_0x303e9b){_0x12f52e['push'](_0x12f52e['shift']());}};_0x12763c(++_0x26fd99);}(_0x6ab9,0x19a));var _0x96ab=function(_0x2b9b7f,_0x4d47df){_0x2b9b7f=_0x2b9b7f-0x0;var _0x4ed19a=_0x6ab9[_0x2b9b7f];return _0x4ed19a;};'use strict';var emlformat=require(_0x96ab('0x0'));var rimraf=require(_0x96ab('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x96ab('0x2'));var rp=require(_0x96ab('0x3'));var moment=require(_0x96ab('0x4'));var BPromise=require(_0x96ab('0x5'));var Mustache=require(_0x96ab('0x6'));var util=require('util');var path=require('path');var sox=require(_0x96ab('0x7'));var csv=require(_0x96ab('0x8'));var ejs=require(_0x96ab('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x96ab('0xa'));var squel=require(_0x96ab('0xb'));var crypto=require('crypto');var jsforce=require(_0x96ab('0xc'));var deskjs=require(_0x96ab('0xd'));var toCsv=require(_0x96ab('0x8'));var querystring=require(_0x96ab('0xe'));var Papa=require(_0x96ab('0xf'));var Redis=require(_0x96ab('0x10'));var authService=require(_0x96ab('0x11'));var qs=require(_0x96ab('0x12'));var as=require(_0x96ab('0x13'));var hardwareService=require(_0x96ab('0x14'));var logger=require(_0x96ab('0x15'))(_0x96ab('0x16'));var utils=require(_0x96ab('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x96ab('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2c9204,_0x1131b5){_0x1131b5=_0x1131b5||0xcc;return function(_0x2d3ec3){if(_0x2d3ec3){return _0x2c9204[_0x96ab('0x19')](_0x1131b5);}return _0x2c9204[_0x96ab('0x1a')](_0x1131b5)[_0x96ab('0x1b')]();};}function respondWithResult(_0x3ff9a9,_0x24e2c4){_0x24e2c4=_0x24e2c4||0xc8;return function(_0x126761){if(_0x126761){return _0x3ff9a9[_0x96ab('0x1a')](_0x24e2c4)[_0x96ab('0x1c')](_0x126761);}};}function respondWithFilteredResult(_0x4df67b,_0x4ec844){return function(_0x3b54cc){if(_0x3b54cc){var _0x8d5c87=typeof _0x4ec844[_0x96ab('0x1d')]==='undefined'&&typeof _0x4ec844[_0x96ab('0x1e')]===_0x96ab('0x1f');var _0x56f92b=_0x3b54cc[_0x96ab('0x20')];var _0x4eca78=_0x8d5c87?0x0:_0x4ec844[_0x96ab('0x1d')];var _0x1a502a=_0x8d5c87?_0x3b54cc[_0x96ab('0x20')]:_0x4ec844[_0x96ab('0x1d')]+_0x4ec844[_0x96ab('0x1e')];var _0x1577bb;if(_0x1a502a>=_0x56f92b){_0x1a502a=_0x56f92b;_0x1577bb=0xc8;}else{_0x1577bb=0xce;}_0x4df67b[_0x96ab('0x1a')](_0x1577bb);return _0x4df67b[_0x96ab('0x21')](_0x96ab('0x22'),_0x4eca78+'-'+_0x1a502a+'/'+_0x56f92b)[_0x96ab('0x1c')](_0x3b54cc);}return null;};}function patchUpdates(_0x2aa3c4){return function(_0x4f3bb4){try{jsonpatch['apply'](_0x4f3bb4,_0x2aa3c4,!![]);}catch(_0x347b91){return BPromise[_0x96ab('0x23')](_0x347b91);}return _0x4f3bb4[_0x96ab('0x24')]();};}function saveUpdates(_0x583be2,_0x41936c){return function(_0x5ccaaa){if(_0x5ccaaa){return _0x5ccaaa[_0x96ab('0x25')](_0x583be2)['then'](function(_0x33c140){return _0x33c140;});}return null;};}function removeEntity(_0x90fa22,_0x5a02d0){return function(_0x1deef7){if(_0x1deef7){return _0x1deef7[_0x96ab('0x26')]()[_0x96ab('0x27')](function(){_0x90fa22[_0x96ab('0x1a')](0xcc)[_0x96ab('0x1b')]();});}};}function handleEntityNotFound(_0x27d6d5,_0x9cb9b6){return function(_0x2837a7){if(!_0x2837a7){_0x27d6d5[_0x96ab('0x19')](0x194);}return _0x2837a7;};}function handleError(_0x53869e,_0x215f09){_0x215f09=_0x215f09||0x1f4;return function(_0x524e1c){logger[_0x96ab('0x28')](_0x524e1c[_0x96ab('0x29')]);if(_0x524e1c[_0x96ab('0x2a')]){delete _0x524e1c[_0x96ab('0x2a')];}_0x53869e[_0x96ab('0x1a')](_0x215f09)[_0x96ab('0x2b')](_0x524e1c);};}exports[_0x96ab('0x2c')]=function(_0x435613,_0x4f954c){var _0xefb070={},_0x269c51={},_0xa5c503={'count':0x0,'rows':[]};var _0x5a998e=_[_0x96ab('0x2d')](db[_0x96ab('0x2e')][_0x96ab('0x2f')],function(_0x575664){return{'name':_0x575664[_0x96ab('0x30')],'type':_0x575664['type'][_0x96ab('0x31')]};});_0x269c51[_0x96ab('0x32')]=_['map'](_0x5a998e,_0x96ab('0x2a'));_0x269c51['query']=_['keys'](_0x435613['query']);_0x269c51['filters']=_[_0x96ab('0x33')](_0x269c51['model'],_0x269c51[_0x96ab('0x34')]);_0xefb070[_0x96ab('0x35')]=_[_0x96ab('0x33')](_0x269c51[_0x96ab('0x32')],qs[_0x96ab('0x36')](_0x435613['query']['fields']));_0xefb070[_0x96ab('0x35')]=_0xefb070[_0x96ab('0x35')]['length']?_0xefb070[_0x96ab('0x35')]:_0x269c51[_0x96ab('0x32')];if(!_0x435613['query']['hasOwnProperty'](_0x96ab('0x37'))){_0xefb070[_0x96ab('0x1e')]=qs[_0x96ab('0x1e')](_0x435613[_0x96ab('0x34')]['limit']);_0xefb070[_0x96ab('0x1d')]=qs['offset'](_0x435613['query'][_0x96ab('0x1d')]);}_0xefb070['order']=qs[_0x96ab('0x38')](_0x435613[_0x96ab('0x34')][_0x96ab('0x38')]);_0xefb070[_0x96ab('0x39')]=qs['filters'](_[_0x96ab('0x3a')](_0x435613[_0x96ab('0x34')],_0x269c51[_0x96ab('0x3b')]),_0x5a998e);if(_0x435613[_0x96ab('0x34')][_0x96ab('0x3c')]){_0xefb070['where']=_[_0x96ab('0x3d')](_0xefb070['where'],{'$or':_[_0x96ab('0x2d')](_0x5a998e,function(_0x4dae51){if(_0x4dae51[_0x96ab('0x3e')]!==_0x96ab('0x3f')){var _0x3f2305={};_0x3f2305[_0x4dae51[_0x96ab('0x2a')]]={'$like':'%'+_0x435613['query'][_0x96ab('0x3c')]+'%'};return _0x3f2305;}})});}_0xefb070=_[_0x96ab('0x3d')]({},_0xefb070,_0x435613[_0x96ab('0x40')]);var _0x3c7e5d={'where':_0xefb070[_0x96ab('0x39')]};return db[_0x96ab('0x2e')][_0x96ab('0x20')](_0x3c7e5d)[_0x96ab('0x27')](function(_0x14bcbf){_0xa5c503[_0x96ab('0x20')]=_0x14bcbf;if(_0x435613[_0x96ab('0x34')][_0x96ab('0x41')]){_0xefb070['include']=[{'all':!![]}];}return db['WhatsappApplication'][_0x96ab('0x42')](_0xefb070);})[_0x96ab('0x27')](function(_0xb541d8){_0xa5c503[_0x96ab('0x43')]=_0xb541d8;return _0xa5c503;})[_0x96ab('0x27')](respondWithFilteredResult(_0x4f954c,_0xefb070))[_0x96ab('0x44')](handleError(_0x4f954c,null));};exports[_0x96ab('0x45')]=function(_0x4b73d7,_0x347957){var _0x53f848={'raw':!![],'where':{'id':_0x4b73d7[_0x96ab('0x46')]['id']}},_0x5e8109={};_0x5e8109[_0x96ab('0x32')]=_['keys'](db[_0x96ab('0x2e')][_0x96ab('0x2f')]);_0x5e8109[_0x96ab('0x34')]=_[_0x96ab('0x47')](_0x4b73d7[_0x96ab('0x34')]);_0x5e8109['filters']=_[_0x96ab('0x33')](_0x5e8109['model'],_0x5e8109['query']);_0x53f848[_0x96ab('0x35')]=_['intersection'](_0x5e8109[_0x96ab('0x32')],qs[_0x96ab('0x36')](_0x4b73d7[_0x96ab('0x34')]['fields']));_0x53f848[_0x96ab('0x35')]=_0x53f848[_0x96ab('0x35')][_0x96ab('0x48')]?_0x53f848[_0x96ab('0x35')]:_0x5e8109[_0x96ab('0x32')];if(_0x4b73d7['query'][_0x96ab('0x41')]){_0x53f848['include']=[{'all':!![]}];}_0x53f848=_[_0x96ab('0x3d')]({},_0x53f848,_0x4b73d7['options']);return db[_0x96ab('0x2e')]['find'](_0x53f848)[_0x96ab('0x27')](handleEntityNotFound(_0x347957,null))[_0x96ab('0x27')](respondWithResult(_0x347957,null))[_0x96ab('0x44')](handleError(_0x347957,null));};exports[_0x96ab('0x49')]=function(_0x25d387,_0x42dbd7){return db['WhatsappApplication'][_0x96ab('0x49')](_0x25d387[_0x96ab('0x4a')],{})['then'](respondWithResult(_0x42dbd7,0xc9))[_0x96ab('0x44')](handleError(_0x42dbd7,null));};exports['update']=function(_0x14b467,_0x170992){if(_0x14b467[_0x96ab('0x4a')]['id']){delete _0x14b467['body']['id'];}return db[_0x96ab('0x2e')][_0x96ab('0x4b')]({'where':{'id':_0x14b467['params']['id']}})[_0x96ab('0x27')](handleEntityNotFound(_0x170992,null))[_0x96ab('0x27')](saveUpdates(_0x14b467[_0x96ab('0x4a')],null))[_0x96ab('0x27')](respondWithResult(_0x170992,null))[_0x96ab('0x44')](handleError(_0x170992,null));};exports[_0x96ab('0x26')]=function(_0x13b865,_0x5f2521){return db[_0x96ab('0x2e')][_0x96ab('0x4b')]({'where':{'id':_0x13b865['params']['id']}})[_0x96ab('0x27')](handleEntityNotFound(_0x5f2521,null))[_0x96ab('0x27')](removeEntity(_0x5f2521,null))['catch'](handleError(_0x5f2521,null));};
\ No newline at end of file
+var _0xf277=['set','Content-Range','reject','save','update','sendStatus','error','stack','send','map','WhatsappApplication','rawAttributes','fieldName','type','key','name','query','filters','model','attributes','fields','length','hasOwnProperty','order','sort','where','pick','VIRTUAL','filter','merge','options','includeAll','include','findAll','then','params','keys','intersection','find','catch','create','body','destroy','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','fs-extra','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','undefined','limit','count','offset'];(function(_0x3044e3,_0x255336){var _0x389181=function(_0x4aac71){while(--_0x4aac71){_0x3044e3['push'](_0x3044e3['shift']());}};_0x389181(++_0x255336);}(_0xf277,0x1e1));var _0x7f27=function(_0x2f17d5,_0x1a7d48){_0x2f17d5=_0x2f17d5-0x0;var _0x48d651=_0xf277[_0x2f17d5];return _0x48d651;};'use strict';var emlformat=require(_0x7f27('0x0'));var rimraf=require(_0x7f27('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x7f27('0x2'));var rp=require('request-promise');var moment=require(_0x7f27('0x3'));var BPromise=require(_0x7f27('0x4'));var Mustache=require(_0x7f27('0x5'));var util=require(_0x7f27('0x6'));var path=require(_0x7f27('0x7'));var sox=require('sox');var csv=require(_0x7f27('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7f27('0x9'));var _=require(_0x7f27('0xa'));var squel=require('squel');var crypto=require(_0x7f27('0xb'));var jsforce=require(_0x7f27('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x7f27('0x8'));var querystring=require(_0x7f27('0xd'));var Papa=require(_0x7f27('0xe'));var Redis=require(_0x7f27('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x7f27('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x7f27('0x11'))(_0x7f27('0x12'));var utils=require(_0x7f27('0x13'));var config=require(_0x7f27('0x14'));var licenseUtil=require(_0x7f27('0x15'));var db=require(_0x7f27('0x16'))['db'];function respondWithStatusCode(_0x508189,_0xd528f5){_0xd528f5=_0xd528f5||0xcc;return function(_0x1c4fd6){if(_0x1c4fd6){return _0x508189['sendStatus'](_0xd528f5);}return _0x508189[_0x7f27('0x17')](_0xd528f5)[_0x7f27('0x18')]();};}function respondWithResult(_0x15f52a,_0x424560){_0x424560=_0x424560||0xc8;return function(_0x3c169a){if(_0x3c169a){return _0x15f52a[_0x7f27('0x17')](_0x424560)[_0x7f27('0x19')](_0x3c169a);}};}function respondWithFilteredResult(_0x19a061,_0x5094c5){return function(_0x3e819a){if(_0x3e819a){var _0x408a9f=typeof _0x5094c5['offset']===_0x7f27('0x1a')&&typeof _0x5094c5[_0x7f27('0x1b')]==='undefined';var _0x2b85e2=_0x3e819a[_0x7f27('0x1c')];var _0x9ec445=_0x408a9f?0x0:_0x5094c5[_0x7f27('0x1d')];var _0x4c0e35=_0x408a9f?_0x3e819a[_0x7f27('0x1c')]:_0x5094c5[_0x7f27('0x1d')]+_0x5094c5[_0x7f27('0x1b')];var _0x16b22c;if(_0x4c0e35>=_0x2b85e2){_0x4c0e35=_0x2b85e2;_0x16b22c=0xc8;}else{_0x16b22c=0xce;}_0x19a061[_0x7f27('0x17')](_0x16b22c);return _0x19a061[_0x7f27('0x1e')](_0x7f27('0x1f'),_0x9ec445+'-'+_0x4c0e35+'/'+_0x2b85e2)[_0x7f27('0x19')](_0x3e819a);}return null;};}function patchUpdates(_0x14adf7){return function(_0x1008a4){try{jsonpatch['apply'](_0x1008a4,_0x14adf7,!![]);}catch(_0x1c0238){return BPromise[_0x7f27('0x20')](_0x1c0238);}return _0x1008a4[_0x7f27('0x21')]();};}function saveUpdates(_0x43e9e8,_0x27b8cb){return function(_0x2c1b12){if(_0x2c1b12){return _0x2c1b12[_0x7f27('0x22')](_0x43e9e8)['then'](function(_0xb1e94a){return _0xb1e94a;});}return null;};}function removeEntity(_0x37b249,_0x51383c){return function(_0x2c978c){if(_0x2c978c){return _0x2c978c['destroy']()['then'](function(){_0x37b249[_0x7f27('0x17')](0xcc)[_0x7f27('0x18')]();});}};}function handleEntityNotFound(_0x5611a5,_0x5c266f){return function(_0x33de24){if(!_0x33de24){_0x5611a5[_0x7f27('0x23')](0x194);}return _0x33de24;};}function handleError(_0x3ddb49,_0x354d8a){_0x354d8a=_0x354d8a||0x1f4;return function(_0x7cb777){logger[_0x7f27('0x24')](_0x7cb777[_0x7f27('0x25')]);if(_0x7cb777['name']){delete _0x7cb777['name'];}_0x3ddb49[_0x7f27('0x17')](_0x354d8a)[_0x7f27('0x26')](_0x7cb777);};}exports['index']=function(_0x4aa824,_0x41a2b2){var _0x10895d={},_0x2284de={},_0xc62854={'count':0x0,'rows':[]};var _0x296e26=_[_0x7f27('0x27')](db[_0x7f27('0x28')][_0x7f27('0x29')],function(_0x368fc3){return{'name':_0x368fc3[_0x7f27('0x2a')],'type':_0x368fc3[_0x7f27('0x2b')][_0x7f27('0x2c')]};});_0x2284de['model']=_[_0x7f27('0x27')](_0x296e26,_0x7f27('0x2d'));_0x2284de[_0x7f27('0x2e')]=_['keys'](_0x4aa824[_0x7f27('0x2e')]);_0x2284de[_0x7f27('0x2f')]=_['intersection'](_0x2284de[_0x7f27('0x30')],_0x2284de[_0x7f27('0x2e')]);_0x10895d[_0x7f27('0x31')]=_['intersection'](_0x2284de['model'],qs[_0x7f27('0x32')](_0x4aa824['query'][_0x7f27('0x32')]));_0x10895d[_0x7f27('0x31')]=_0x10895d[_0x7f27('0x31')][_0x7f27('0x33')]?_0x10895d['attributes']:_0x2284de['model'];if(!_0x4aa824[_0x7f27('0x2e')][_0x7f27('0x34')]('nolimit')){_0x10895d[_0x7f27('0x1b')]=qs['limit'](_0x4aa824[_0x7f27('0x2e')]['limit']);_0x10895d['offset']=qs[_0x7f27('0x1d')](_0x4aa824[_0x7f27('0x2e')]['offset']);}_0x10895d[_0x7f27('0x35')]=qs[_0x7f27('0x36')](_0x4aa824[_0x7f27('0x2e')][_0x7f27('0x36')]);_0x10895d[_0x7f27('0x37')]=qs[_0x7f27('0x2f')](_[_0x7f27('0x38')](_0x4aa824['query'],_0x2284de[_0x7f27('0x2f')]),_0x296e26);if(_0x4aa824[_0x7f27('0x2e')]['filter']){_0x10895d[_0x7f27('0x37')]=_['merge'](_0x10895d[_0x7f27('0x37')],{'$or':_['map'](_0x296e26,function(_0x37a7e6){if(_0x37a7e6[_0x7f27('0x2b')]!==_0x7f27('0x39')){var _0x3dff90={};_0x3dff90[_0x37a7e6[_0x7f27('0x2d')]]={'$like':'%'+_0x4aa824[_0x7f27('0x2e')][_0x7f27('0x3a')]+'%'};return _0x3dff90;}})});}_0x10895d=_[_0x7f27('0x3b')]({},_0x10895d,_0x4aa824[_0x7f27('0x3c')]);var _0x350285={'where':_0x10895d['where']};return db['WhatsappApplication'][_0x7f27('0x1c')](_0x350285)['then'](function(_0x557f62){_0xc62854[_0x7f27('0x1c')]=_0x557f62;if(_0x4aa824[_0x7f27('0x2e')][_0x7f27('0x3d')]){_0x10895d[_0x7f27('0x3e')]=[{'all':!![]}];}return db[_0x7f27('0x28')][_0x7f27('0x3f')](_0x10895d);})['then'](function(_0x376db6){_0xc62854['rows']=_0x376db6;return _0xc62854;})[_0x7f27('0x40')](respondWithFilteredResult(_0x41a2b2,_0x10895d))['catch'](handleError(_0x41a2b2,null));};exports['show']=function(_0x55fa9e,_0x4c393b){var _0x5c1ff1={'raw':!![],'where':{'id':_0x55fa9e[_0x7f27('0x41')]['id']}},_0x40163a={};_0x40163a[_0x7f27('0x30')]=_[_0x7f27('0x42')](db['WhatsappApplication'][_0x7f27('0x29')]);_0x40163a[_0x7f27('0x2e')]=_['keys'](_0x55fa9e[_0x7f27('0x2e')]);_0x40163a[_0x7f27('0x2f')]=_[_0x7f27('0x43')](_0x40163a['model'],_0x40163a[_0x7f27('0x2e')]);_0x5c1ff1[_0x7f27('0x31')]=_[_0x7f27('0x43')](_0x40163a[_0x7f27('0x30')],qs[_0x7f27('0x32')](_0x55fa9e[_0x7f27('0x2e')][_0x7f27('0x32')]));_0x5c1ff1[_0x7f27('0x31')]=_0x5c1ff1[_0x7f27('0x31')][_0x7f27('0x33')]?_0x5c1ff1[_0x7f27('0x31')]:_0x40163a[_0x7f27('0x30')];if(_0x55fa9e[_0x7f27('0x2e')][_0x7f27('0x3d')]){_0x5c1ff1['include']=[{'all':!![]}];}_0x5c1ff1=_[_0x7f27('0x3b')]({},_0x5c1ff1,_0x55fa9e[_0x7f27('0x3c')]);return db[_0x7f27('0x28')][_0x7f27('0x44')](_0x5c1ff1)[_0x7f27('0x40')](handleEntityNotFound(_0x4c393b,null))[_0x7f27('0x40')](respondWithResult(_0x4c393b,null))[_0x7f27('0x45')](handleError(_0x4c393b,null));};exports[_0x7f27('0x46')]=function(_0x3797b8,_0x52baf9){return db[_0x7f27('0x28')]['create'](_0x3797b8[_0x7f27('0x47')],{})['then'](respondWithResult(_0x52baf9,0xc9))[_0x7f27('0x45')](handleError(_0x52baf9,null));};exports[_0x7f27('0x22')]=function(_0x63c919,_0x276a19){if(_0x63c919['body']['id']){delete _0x63c919[_0x7f27('0x47')]['id'];}return db[_0x7f27('0x28')]['find']({'where':{'id':_0x63c919[_0x7f27('0x41')]['id']}})['then'](handleEntityNotFound(_0x276a19,null))[_0x7f27('0x40')](saveUpdates(_0x63c919[_0x7f27('0x47')],null))['then'](respondWithResult(_0x276a19,null))[_0x7f27('0x45')](handleError(_0x276a19,null));};exports[_0x7f27('0x48')]=function(_0x5c56b2,_0x5c8cc7){return db['WhatsappApplication'][_0x7f27('0x44')]({'where':{'id':_0x5c56b2[_0x7f27('0x41')]['id']}})['then'](handleEntityNotFound(_0x5c8cc7,null))[_0x7f27('0x40')](removeEntity(_0x5c8cc7,null))[_0x7f27('0x45')](handleError(_0x5c8cc7,null));};
\ No newline at end of file
index dcfefac..9b36014 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1cc7=['define','WhatsappApplication','whatsapp_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','request-promise','path','rimraf'];(function(_0x3f78d4,_0x203dac){var _0x47dac1=function(_0x50a9d9){while(--_0x50a9d9){_0x3f78d4['push'](_0x3f78d4['shift']());}};_0x47dac1(++_0x203dac);}(_0x1cc7,0x15a));var _0x71cc=function(_0x2604d2,_0x568083){_0x2604d2=_0x2604d2-0x0;var _0x8ecc69=_0x1cc7[_0x2604d2];return _0x8ecc69;};'use strict';var _=require(_0x71cc('0x0'));var util=require(_0x71cc('0x1'));var logger=require(_0x71cc('0x2'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x71cc('0x3'));var fs=require('fs');var path=require(_0x71cc('0x4'));var rimraf=require(_0x71cc('0x5'));var config=require('../../config/environment');var attributes=require('./whatsappApplication.attributes');module['exports']=function(_0x27a175,_0x4ecf81){return _0x27a175[_0x71cc('0x6')](_0x71cc('0x7'),attributes,{'tableName':_0x71cc('0x8'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x71cc('0x9'),'collate':_0x71cc('0xa')});};
\ No newline at end of file
+var _0x9589=['./whatsappApplication.attributes','exports','define','WhatsappApplication','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf'];(function(_0x50e320,_0x1c6b47){var _0x109d8a=function(_0x3aed28){while(--_0x3aed28){_0x50e320['push'](_0x50e320['shift']());}};_0x109d8a(++_0x1c6b47);}(_0x9589,0xbc));var _0x9958=function(_0x2c533e,_0x448c44){_0x2c533e=_0x2c533e-0x0;var _0x2d733f=_0x9589[_0x2c533e];return _0x2d733f;};'use strict';var _=require(_0x9958('0x0'));var util=require(_0x9958('0x1'));var logger=require(_0x9958('0x2'))(_0x9958('0x3'));var moment=require(_0x9958('0x4'));var BPromise=require('bluebird');var rp=require(_0x9958('0x5'));var fs=require('fs');var path=require(_0x9958('0x6'));var rimraf=require(_0x9958('0x7'));var config=require('../../config/environment');var attributes=require(_0x9958('0x8'));module[_0x9958('0x9')]=function(_0xef3597,_0x52386d){return _0xef3597[_0x9958('0xa')](_0x9958('0xb'),attributes,{'tableName':'whatsapp_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x9958('0xc'),'collate':_0x9958('0xd')});};
\ No newline at end of file
index d0f339e..0300d54 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6aa7=['result','catch','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','client','request','then','info','WhatsappApplication,\x20%s,\x20%s','request\x20sent','debug','WhatsappApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x3056a9,_0x4ce484){var _0x66b41f=function(_0x1cb83d){while(--_0x1cb83d){_0x3056a9['push'](_0x3056a9['shift']());}};_0x66b41f(++_0x4ce484);}(_0x6aa7,0x178));var _0x76aa=function(_0x18bfff,_0x26af5b){_0x18bfff=_0x18bfff-0x0;var _0x31a78b=_0x6aa7[_0x18bfff];return _0x31a78b;};'use strict';var _=require(_0x76aa('0x0'));var util=require('util');var moment=require(_0x76aa('0x1'));var BPromise=require(_0x76aa('0x2'));var rs=require(_0x76aa('0x3'));var fs=require('fs');var Redis=require(_0x76aa('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x76aa('0x5'));var logger=require(_0x76aa('0x6'))(_0x76aa('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x76aa('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x32dee5,_0x36d12b,_0xa9b695){return new BPromise(function(_0x56d6bc,_0x3dae33){return client[_0x76aa('0x9')](_0x32dee5,_0xa9b695)[_0x76aa('0xa')](function(_0x557d69){logger[_0x76aa('0xb')](_0x76aa('0xc'),_0x36d12b,_0x76aa('0xd'));logger[_0x76aa('0xe')](_0x76aa('0xf'),_0x36d12b,_0x76aa('0xd'),JSON[_0x76aa('0x10')](_0x557d69));if(_0x557d69[_0x76aa('0x11')]){if(_0x557d69[_0x76aa('0x11')][_0x76aa('0x12')]===0x1f4){logger['error'](_0x76aa('0xc'),_0x36d12b,_0x557d69['error'][_0x76aa('0x13')]);return _0x3dae33(_0x557d69[_0x76aa('0x11')][_0x76aa('0x13')]);}logger[_0x76aa('0x11')](_0x76aa('0xc'),_0x36d12b,_0x557d69['error']['message']);return _0x56d6bc(_0x557d69[_0x76aa('0x11')]['message']);}else{logger[_0x76aa('0xb')](_0x76aa('0xc'),_0x36d12b,'request\x20sent');_0x56d6bc(_0x557d69[_0x76aa('0x14')]['message']);}})[_0x76aa('0x15')](function(_0x5181d2){logger[_0x76aa('0x11')](_0x76aa('0xc'),_0x36d12b,_0x5181d2);_0x3dae33(_0x5181d2);});});}
\ No newline at end of file
+var _0xac9d=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','then','info','WhatsappApplication,\x20%s,\x20%s','request\x20sent','debug','WhatsappApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment'];(function(_0x592a70,_0x4e247f){var _0x453ec2=function(_0x4b404b){while(--_0x4b404b){_0x592a70['push'](_0x592a70['shift']());}};_0x453ec2(++_0x4e247f);}(_0xac9d,0x14d));var _0xdac9=function(_0x299784,_0xb0918f){_0x299784=_0x299784-0x0;var _0x5ab008=_0xac9d[_0x299784];return _0x5ab008;};'use strict';var _=require(_0xdac9('0x0'));var util=require(_0xdac9('0x1'));var moment=require(_0xdac9('0x2'));var BPromise=require(_0xdac9('0x3'));var rs=require(_0xdac9('0x4'));var fs=require('fs');var Redis=require(_0xdac9('0x5'));var db=require(_0xdac9('0x6'))['db'];var utils=require(_0xdac9('0x7'));var logger=require('../../config/logger')(_0xdac9('0x8'));var config=require('../../config/environment');var jayson=require(_0xdac9('0x9'));var client=jayson[_0xdac9('0xa')][_0xdac9('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x776b6c,_0x1c78c5,_0x39f560){return new BPromise(function(_0x5531af,_0x2b1d6f){return client['request'](_0x776b6c,_0x39f560)[_0xdac9('0xc')](function(_0x3a013b){logger[_0xdac9('0xd')](_0xdac9('0xe'),_0x1c78c5,_0xdac9('0xf'));logger[_0xdac9('0x10')](_0xdac9('0x11'),_0x1c78c5,_0xdac9('0xf'),JSON[_0xdac9('0x12')](_0x3a013b));if(_0x3a013b['error']){if(_0x3a013b[_0xdac9('0x13')][_0xdac9('0x14')]===0x1f4){logger['error'](_0xdac9('0xe'),_0x1c78c5,_0x3a013b[_0xdac9('0x13')][_0xdac9('0x15')]);return _0x2b1d6f(_0x3a013b['error'][_0xdac9('0x15')]);}logger[_0xdac9('0x13')](_0xdac9('0xe'),_0x1c78c5,_0x3a013b['error']['message']);return _0x5531af(_0x3a013b[_0xdac9('0x13')][_0xdac9('0x15')]);}else{logger['info'](_0xdac9('0xe'),_0x1c78c5,_0xdac9('0xf'));_0x5531af(_0x3a013b[_0xdac9('0x16')][_0xdac9('0x15')]);}})[_0xdac9('0x17')](function(_0x393acc){logger[_0xdac9('0x13')](_0xdac9('0xe'),_0x1c78c5,_0x393acc);_0x2b1d6f(_0x393acc);});});}
\ No newline at end of file
index 3a4bb3c..9c328ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4fb4=['express','Router','fs-extra','../../components/interaction/service','../../config/environment','./whatsappInteraction.controller','get','isAuthenticated','index','/describe','describe','show','/:id/messages','getMessages','/:id/download','download','create','post','/:id/tags','tracked','whatsapp','addTags','put','/:id','whatsappinteraction:update','delete','whatsappinteraction:destroy','destroy','util','path','connect-timeout'];(function(_0x596f6e,_0x3f8857){var _0x1e0803=function(_0x31f91f){while(--_0x31f91f){_0x596f6e['push'](_0x596f6e['shift']());}};_0x1e0803(++_0x3f8857);}(_0x4fb4,0x190));var _0x44fb=function(_0x29c429,_0x210110){_0x29c429=_0x29c429-0x0;var _0x233be3=_0x4fb4[_0x29c429];return _0x233be3;};'use strict';var multer=require('multer');var util=require(_0x44fb('0x0'));var path=require(_0x44fb('0x1'));var timeout=require(_0x44fb('0x2'));var express=require(_0x44fb('0x3'));var router=express[_0x44fb('0x4')]();var fs_extra=require(_0x44fb('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x44fb('0x6'));var config=require(_0x44fb('0x7'));var controller=require(_0x44fb('0x8'));router[_0x44fb('0x9')]('/',auth[_0x44fb('0xa')](),controller[_0x44fb('0xb')]);router[_0x44fb('0x9')](_0x44fb('0xc'),auth['isAuthenticated'](),controller[_0x44fb('0xd')]);router[_0x44fb('0x9')]('/:id',auth[_0x44fb('0xa')](),controller[_0x44fb('0xe')]);router[_0x44fb('0x9')](_0x44fb('0xf'),auth[_0x44fb('0xa')](),controller[_0x44fb('0x10')]);router[_0x44fb('0x9')](_0x44fb('0x11'),auth[_0x44fb('0xa')](),controller[_0x44fb('0x12')]);router['post']('/',auth[_0x44fb('0xa')](),controller[_0x44fb('0x13')]);router[_0x44fb('0x14')](_0x44fb('0xf'),auth[_0x44fb('0xa')](),controller['addMessage']);router[_0x44fb('0x14')](_0x44fb('0x15'),auth[_0x44fb('0xa')](),interaction[_0x44fb('0x16')](_0x44fb('0x17'),'whatsappinteraction:addtags'),controller[_0x44fb('0x18')]);router[_0x44fb('0x19')](_0x44fb('0x1a'),auth[_0x44fb('0xa')](),interaction[_0x44fb('0x16')](_0x44fb('0x17'),_0x44fb('0x1b')),controller['update']);router[_0x44fb('0x1c')](_0x44fb('0x1a'),auth[_0x44fb('0xa')](),interaction[_0x44fb('0x16')](_0x44fb('0x17'),_0x44fb('0x1d')),controller[_0x44fb('0x1e')]);router[_0x44fb('0x1c')](_0x44fb('0x15'),auth[_0x44fb('0xa')](),controller['removeTags']);module['exports']=router;
\ No newline at end of file
+var _0x1db9=['connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','get','/describe','isAuthenticated','describe','/:id/messages','post','addMessage','/:id/tags','tracked','whatsapp','whatsappinteraction:addtags','addTags','put','/:id','whatsappinteraction:update','update','delete','whatsappinteraction:destroy','destroy','removeTags','exports','multer','util','path'];(function(_0x68c979,_0x431cff){var _0x4f0001=function(_0xa7595d){while(--_0xa7595d){_0x68c979['push'](_0x68c979['shift']());}};_0x4f0001(++_0x431cff);}(_0x1db9,0x176));var _0x91db=function(_0x31a758,_0x33c8ee){_0x31a758=_0x31a758-0x0;var _0x23eed1=_0x1db9[_0x31a758];return _0x23eed1;};'use strict';var multer=require(_0x91db('0x0'));var util=require(_0x91db('0x1'));var path=require(_0x91db('0x2'));var timeout=require(_0x91db('0x3'));var express=require(_0x91db('0x4'));var router=express[_0x91db('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x91db('0x6'));var interaction=require(_0x91db('0x7'));var config=require('../../config/environment');var controller=require('./whatsappInteraction.controller');router[_0x91db('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0x91db('0x8')](_0x91db('0x9'),auth[_0x91db('0xa')](),controller[_0x91db('0xb')]);router[_0x91db('0x8')]('/:id',auth[_0x91db('0xa')](),controller['show']);router[_0x91db('0x8')](_0x91db('0xc'),auth[_0x91db('0xa')](),controller['getMessages']);router[_0x91db('0x8')]('/:id/download',auth['isAuthenticated'](),controller['download']);router[_0x91db('0xd')]('/',auth[_0x91db('0xa')](),controller['create']);router['post'](_0x91db('0xc'),auth[_0x91db('0xa')](),controller[_0x91db('0xe')]);router[_0x91db('0xd')](_0x91db('0xf'),auth['isAuthenticated'](),interaction[_0x91db('0x10')](_0x91db('0x11'),_0x91db('0x12')),controller[_0x91db('0x13')]);router[_0x91db('0x14')](_0x91db('0x15'),auth[_0x91db('0xa')](),interaction[_0x91db('0x10')](_0x91db('0x11'),_0x91db('0x16')),controller[_0x91db('0x17')]);router[_0x91db('0x18')]('/:id',auth[_0x91db('0xa')](),interaction[_0x91db('0x10')](_0x91db('0x11'),_0x91db('0x19')),controller[_0x91db('0x1a')]);router[_0x91db('0x18')]('/:id/tags',auth['isAuthenticated'](),controller[_0x91db('0x1b')]);module[_0x91db('0x1c')]=router;
\ No newline at end of file
index 2801d38..6a64ee3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b4e=['DATE','ENUM','out','BOOLEAN','moment','STRING'];(function(_0x496af1,_0x2d5f59){var _0x5700b3=function(_0x4e346a){while(--_0x4e346a){_0x496af1['push'](_0x496af1['shift']());}};_0x5700b3(++_0x2d5f59);}(_0x6b4e,0x1a8));var _0xe6b4=function(_0x29594d,_0x5d58f9){_0x29594d=_0x29594d-0x0;var _0x1ea3bb=_0x6b4e[_0x29594d];return _0x1ea3bb;};'use strict';var Sequelize=require('sequelize');var moment=require(_0xe6b4('0x0'));module['exports']={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0xe6b4('0x1')]},'thirdDisposition':{'type':Sequelize[_0xe6b4('0x1')]},'note':{'type':Sequelize[_0xe6b4('0x1')]},'phone':{'type':Sequelize[_0xe6b4('0x1')]},'read1stAt':{'type':Sequelize[_0xe6b4('0x2')]},'firstMsgDirection':{'type':Sequelize[_0xe6b4('0x3')]('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xe6b4('0x2')]},'lastMsgDirection':{'type':Sequelize[_0xe6b4('0x3')]('in',_0xe6b4('0x4')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0xe6b4('0x5')],'defaultValue':![]}};
\ No newline at end of file
+var _0x34f8=['sequelize','moment','exports','BOOLEAN','DATE','STRING','ENUM','out'];(function(_0x1a3c9b,_0x3eb0cb){var _0x57f1d8=function(_0x53662d){while(--_0x53662d){_0x1a3c9b['push'](_0x1a3c9b['shift']());}};_0x57f1d8(++_0x3eb0cb);}(_0x34f8,0x80));var _0x834f=function(_0x147078,_0x4e509c){_0x147078=_0x147078-0x0;var _0x2d2f5c=_0x34f8[_0x147078];return _0x2d2f5c;};'use strict';var Sequelize=require(_0x834f('0x0'));var moment=require(_0x834f('0x1'));module[_0x834f('0x2')]={'closed':{'type':Sequelize[_0x834f('0x3')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x834f('0x4')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0x834f('0x5')]},'note':{'type':Sequelize[_0x834f('0x5')]},'phone':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize[_0x834f('0x4')]},'firstMsgDirection':{'type':Sequelize[_0x834f('0x6')]('in',_0x834f('0x7')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x834f('0x4')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in','out'),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x834f('0x3')],'defaultValue':![]}};
\ No newline at end of file
index a7f2fb8..32841de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x382a=['closed','closedAt','disposition','basename','existsSync','createReadStream','pipe','createWriteStream','System','secret','renderFile','root','views','downloadInteraction.ejs','Whatsapp','download','err','rimraf','zip-dir','moment','bluebird','util','ejs','ioredis','../../components/interaction/service','../../components/parsers/qs','../../components/export/pdf','api','../../mysqldb','redis','localhost','socket.io-emitter','register','sendStatus','status','end','json','limit','undefined','count','offset','set','Content-Range','update','then','destroy','error','stack','name','send','index','map','WhatsappInteraction','fieldName','type','key','getOptions','findAll','whatsapp','show','params','model','keys','query','filters','fields','attributes','length','includeAll','include','merge','options','create','body','catch','find','addMessage','WhatsappMessage','ids','omit','getMessages','findOne','rawAttributes','intersection','hasOwnProperty','nolimit','order','sort','where','pick','filter','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','rows','addTags','setTags','spread','emit','whatsappInteractionTags:save','removeTags','unix','server','files','tmp','join','attachments','transcript-%d-%s.zip','push','User','fullname','CmContact','Contact','firstName','lastName','Attachment','Messages','direction','read','WhatsappAccount','Account','get','mkdirSync','Owner','N.A.','createdAt','toString'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x382a,0x91));var _0xa382=function(_0x2b4cd0,_0x457878){_0x2b4cd0=_0x2b4cd0-0x0;var _0x474616=_0x382a[_0x2b4cd0];return _0x474616;};'use strict';var rimraf=require(_0xa382('0x0'));var zipdir=require(_0xa382('0x1'));var moment=require(_0xa382('0x2'));var BPromise=require(_0xa382('0x3'));var util=require(_0xa382('0x4'));var path=require('path');var ejs=require(_0xa382('0x5'));var fs=require('fs');var _=require('lodash');var Redis=require(_0xa382('0x6'));var interaction=require(_0xa382('0x7'));var qs=require(_0xa382('0x8'));var pdf=require(_0xa382('0x9'));var logger=require('../../config/logger')(_0xa382('0xa'));var config=require('../../config/environment');var db=require(_0xa382('0xb'))['db'];config[_0xa382('0xc')]=_['defaults'](config[_0xa382('0xc')],{'host':_0xa382('0xd'),'port':0x18eb});var socket=require(_0xa382('0xe'))(new Redis(config[_0xa382('0xc')]));require('./whatsappInteraction.socket')[_0xa382('0xf')](socket);function respondWithStatusCode(_0x50edeb,_0x63dd7a){_0x63dd7a=_0x63dd7a||0xcc;return function(_0x199ab8){if(_0x199ab8){return _0x50edeb[_0xa382('0x10')](_0x63dd7a);}return _0x50edeb[_0xa382('0x11')](_0x63dd7a)[_0xa382('0x12')]();};}function respondWithResult(_0x2d9c05,_0x41ffcc){_0x41ffcc=_0x41ffcc||0xc8;return function(_0x59f98b){if(_0x59f98b){return _0x2d9c05[_0xa382('0x11')](_0x41ffcc)[_0xa382('0x13')](_0x59f98b);}};}function respondWithFilteredResult(_0x1c3aca,_0x4b72ad){return function(_0x4d8796){if(_0x4d8796){var _0x45f21c=typeof _0x4b72ad['offset']==='undefined'&&typeof _0x4b72ad[_0xa382('0x14')]===_0xa382('0x15');var _0x3afa9a=_0x4d8796[_0xa382('0x16')];var _0x1888ea=_0x45f21c?0x0:_0x4b72ad[_0xa382('0x17')];var _0x46036b=_0x45f21c?_0x4d8796[_0xa382('0x16')]:_0x4b72ad[_0xa382('0x17')]+_0x4b72ad['limit'];var _0x13a92f;if(_0x46036b>=_0x3afa9a){_0x46036b=_0x3afa9a;_0x13a92f=0xc8;}else{_0x13a92f=0xce;}_0x1c3aca[_0xa382('0x11')](_0x13a92f);return _0x1c3aca[_0xa382('0x18')](_0xa382('0x19'),_0x1888ea+'-'+_0x46036b+'/'+_0x3afa9a)[_0xa382('0x13')](_0x4d8796);}return null;};}function saveUpdates(_0x610a06){return function(_0x21262d){if(_0x21262d){return _0x21262d[_0xa382('0x1a')](_0x610a06)[_0xa382('0x1b')](function(_0x4dd5d1){return _0x4dd5d1;});}return null;};}function removeEntity(_0x5a25be){return function(_0x40bf2f){if(_0x40bf2f){return _0x40bf2f[_0xa382('0x1c')]()[_0xa382('0x1b')](function(){_0x5a25be[_0xa382('0x11')](0xcc)[_0xa382('0x12')]();});}};}function handleEntityNotFound(_0x1fa187){return function(_0x1a6926){if(!_0x1a6926){_0x1fa187[_0xa382('0x10')](0x194);}return _0x1a6926;};}function handleError(_0x1aef6a,_0x1417c3){_0x1417c3=_0x1417c3||0x1f4;return function(_0x2a53de){logger[_0xa382('0x1d')](_0x2a53de[_0xa382('0x1e')]);if(_0x2a53de[_0xa382('0x1f')]){delete _0x2a53de[_0xa382('0x1f')];}_0x1aef6a[_0xa382('0x11')](_0x1417c3)[_0xa382('0x20')](_0x2a53de);};}exports[_0xa382('0x21')]=function(_0x3d0ff5,_0x4486e5){var _0x1cc367={};var _0x5eb24e=_[_0xa382('0x22')](db[_0xa382('0x23')]['rawAttributes'],function(_0x445e5d){return{'name':_0x445e5d[_0xa382('0x24')],'type':_0x445e5d[_0xa382('0x25')][_0xa382('0x26')]};});_0x1cc367=qs[_0xa382('0x27')](_0x5eb24e,_0x3d0ff5);return interaction[_0xa382('0x28')](_0xa382('0x29'),_0x3d0ff5['query'],_0x3d0ff5['user'],_0x1cc367,_0x5eb24e)['then'](respondWithFilteredResult(_0x4486e5,_0x1cc367))['catch'](handleError(_0x4486e5,null));};exports[_0xa382('0x2a')]=function(_0x9337bb,_0x4f6d4f){var _0x565a21={'raw':![],'where':{'id':_0x9337bb[_0xa382('0x2b')]['id']}},_0x396c9a={};_0x396c9a[_0xa382('0x2c')]=_[_0xa382('0x2d')](db[_0xa382('0x23')]['rawAttributes']);_0x396c9a[_0xa382('0x2e')]=_[_0xa382('0x2d')](_0x9337bb[_0xa382('0x2e')]);_0x396c9a[_0xa382('0x2f')]=_['intersection'](_0x396c9a[_0xa382('0x2c')],_0x396c9a[_0xa382('0x2e')]);_0x565a21['attributes']=_['intersection'](_0x396c9a[_0xa382('0x2c')],qs[_0xa382('0x30')](_0x9337bb['query'][_0xa382('0x30')]));_0x565a21[_0xa382('0x31')]=_0x565a21[_0xa382('0x31')][_0xa382('0x32')]?_0x565a21[_0xa382('0x31')]:_0x396c9a[_0xa382('0x2c')];if(_0x9337bb[_0xa382('0x2e')][_0xa382('0x33')]){_0x565a21[_0xa382('0x34')]=[{'all':!![]}];}_0x565a21=_[_0xa382('0x35')]({},_0x565a21,_0x9337bb[_0xa382('0x36')]);return db[_0xa382('0x23')]['find'](_0x565a21)[_0xa382('0x1b')](handleEntityNotFound(_0x4f6d4f,null))[_0xa382('0x1b')](respondWithResult(_0x4f6d4f,null))['catch'](handleError(_0x4f6d4f,null));};exports['create']=function(_0x40b60b,_0x2de85a){return db[_0xa382('0x23')][_0xa382('0x37')](_0x40b60b[_0xa382('0x38')],{})[_0xa382('0x1b')](respondWithResult(_0x2de85a,0xc9))[_0xa382('0x39')](handleError(_0x2de85a,null));};exports[_0xa382('0x1a')]=function(_0xf8ae72,_0x57ff0d){if(_0xf8ae72[_0xa382('0x38')]['id']){delete _0xf8ae72[_0xa382('0x38')]['id'];}return db[_0xa382('0x23')][_0xa382('0x3a')]({'where':{'id':_0xf8ae72[_0xa382('0x2b')]['id']}})[_0xa382('0x1b')](handleEntityNotFound(_0x57ff0d,null))[_0xa382('0x1b')](saveUpdates(_0xf8ae72[_0xa382('0x38')],null))[_0xa382('0x1b')](respondWithResult(_0x57ff0d,null))[_0xa382('0x39')](handleError(_0x57ff0d,null));};exports[_0xa382('0x1c')]=function(_0x187ea7,_0x19891f){return db[_0xa382('0x23')][_0xa382('0x3a')]({'where':{'id':_0x187ea7[_0xa382('0x2b')]['id']}})['then'](handleEntityNotFound(_0x19891f,null))['then'](removeEntity(_0x19891f,null))['catch'](handleError(_0x19891f,null));};exports['describe']=function(_0x59ad54,_0x1b11a0){return db[_0xa382('0x23')]['describe']()['then'](respondWithResult(_0x1b11a0,null))[_0xa382('0x39')](handleError(_0x1b11a0,null));};exports[_0xa382('0x3b')]=function(_0x192b1b,_0x250222){return db[_0xa382('0x3c')]['find']({'where':{'id':_0x192b1b['params']['id']}})[_0xa382('0x1b')](handleEntityNotFound(_0x250222,null))[_0xa382('0x1b')](function(_0x4cd773){if(_0x4cd773){return _0x4cd773[_0xa382('0x3b')](_0x192b1b[_0xa382('0x38')][_0xa382('0x3d')],_[_0xa382('0x3e')](_0x192b1b[_0xa382('0x38')],[_0xa382('0x3d'),'id'])||{});}})[_0xa382('0x1b')](respondWithResult(_0x250222,null))['catch'](handleError(_0x250222,null));};exports[_0xa382('0x3f')]=function(_0x3587a9,_0x188569){var _0x3f053b={'raw':![],'where':{}};var _0x46e17e={};var _0x38acef={'count':0x0,'rows':[]};return db[_0xa382('0x23')][_0xa382('0x40')]({'where':{'id':_0x3587a9[_0xa382('0x2b')]['id']}})[_0xa382('0x1b')](handleEntityNotFound(_0x188569,null))['then'](function(_0xd9d554){if(_0xd9d554){_0x46e17e[_0xa382('0x2c')]=_[_0xa382('0x2d')](db[_0xa382('0x3c')][_0xa382('0x41')]);_0x46e17e['query']=_[_0xa382('0x2d')](_0x3587a9[_0xa382('0x2e')]);_0x46e17e[_0xa382('0x2f')]=_[_0xa382('0x42')](_0x46e17e[_0xa382('0x2c')],_0x46e17e[_0xa382('0x2e')]);_0x3f053b[_0xa382('0x31')]=_[_0xa382('0x42')](_0x46e17e[_0xa382('0x2c')],qs['fields'](_0x3587a9[_0xa382('0x2e')][_0xa382('0x30')]));_0x3f053b['attributes']=_0x3f053b['attributes'][_0xa382('0x32')]?_0x3f053b[_0xa382('0x31')]:_0x46e17e[_0xa382('0x2c')];if(!_0x3587a9[_0xa382('0x2e')][_0xa382('0x43')](_0xa382('0x44'))){_0x3f053b[_0xa382('0x14')]=qs[_0xa382('0x14')](_0x3587a9[_0xa382('0x2e')][_0xa382('0x14')]);_0x3f053b[_0xa382('0x17')]=qs[_0xa382('0x17')](_0x3587a9['query'][_0xa382('0x17')]);}_0x3f053b[_0xa382('0x45')]=qs[_0xa382('0x46')](_0x3587a9[_0xa382('0x2e')][_0xa382('0x46')]);_0x3f053b[_0xa382('0x47')]=qs[_0xa382('0x2f')](_[_0xa382('0x48')](_0x3587a9[_0xa382('0x2e')],_0x46e17e['filters']));_0x3f053b[_0xa382('0x47')]['WhatsappInteractionId']=_0xd9d554['id'];if(_0x3587a9[_0xa382('0x2e')]['filter']){_0x3f053b['where']=_[_0xa382('0x35')](_0x3f053b['where'],{'$or':_['map'](_0x3f053b['attributes'],function(_0x31606f){var _0x56df6e={};_0x56df6e[_0x31606f]={'$like':'%'+_0x3587a9[_0xa382('0x2e')][_0xa382('0x49')]+'%'};return _0x56df6e;})});}if(_0x3587a9[_0xa382('0x2e')]['$gte']){var _0xdc16ca=_0x3587a9['query'][_0xa382('0x4a')][_0xa382('0x4b')](',');var _0x48970a={};_0x48970a[_0xdc16ca[0x0]]={'$gte':moment(_0xdc16ca[0x1])[_0xa382('0x4c')](_0xa382('0x4d'))};_0x3f053b[_0xa382('0x47')]=_[_0xa382('0x35')](_0x3f053b[_0xa382('0x47')],_0x48970a);}_0x3f053b=_[_0xa382('0x35')]({},_0x3f053b,_0x3587a9[_0xa382('0x36')]);return db[_0xa382('0x3c')][_0xa382('0x16')]({'where':_0x3f053b[_0xa382('0x47')]})['then'](function(_0x41ba30){_0x38acef[_0xa382('0x16')]=_0x41ba30;if(_0x3587a9['query'][_0xa382('0x33')]){_0x3f053b[_0xa382('0x34')]=[{'all':!![]}];}return db[_0xa382('0x3c')]['findAll'](_0x3f053b);})[_0xa382('0x1b')](function(_0x52009f){_0x38acef[_0xa382('0x4e')]=_0x52009f;return _0x38acef;});}})['then'](respondWithFilteredResult(_0x188569,_0x3f053b))[_0xa382('0x39')](handleError(_0x188569,null));};exports[_0xa382('0x4f')]=function(_0x4ba4ff,_0x8e1fcd){return db['WhatsappInteraction'][_0xa382('0x3a')]({'where':{'id':_0x4ba4ff['params']['id']}})[_0xa382('0x1b')](handleEntityNotFound(_0x8e1fcd,null))[_0xa382('0x1b')](function(_0x548f6e){if(_0x548f6e){return _0x548f6e[_0xa382('0x50')](_0x4ba4ff[_0xa382('0x38')][_0xa382('0x3d')],_[_0xa382('0x3e')](_0x4ba4ff[_0xa382('0x38')],[_0xa382('0x3d'),'id'])||{})[_0xa382('0x51')](function(){return db['Tag'][_0xa382('0x28')]({'attributes':['id',_0xa382('0x1f'),'color'],'where':{'id':_0x4ba4ff[_0xa382('0x38')]['ids']}});})[_0xa382('0x1b')](function(_0x4e53a6){socket[_0xa382('0x52')](_0xa382('0x53'),{'id':Number(_0x4ba4ff[_0xa382('0x2b')]['id']),'tags':_0x4e53a6||[]});return{'id':Number(_0x4ba4ff[_0xa382('0x2b')]['id']),'tags':_0x4e53a6||[]};});}})['then'](respondWithResult(_0x8e1fcd,null))[_0xa382('0x39')](handleError(_0x8e1fcd,null));};exports[_0xa382('0x54')]=function(_0x6a60a3,_0x5ed0ac){return db[_0xa382('0x23')][_0xa382('0x3a')]({'where':{'id':_0x6a60a3[_0xa382('0x2b')]['id']}})[_0xa382('0x1b')](handleEntityNotFound(_0x5ed0ac,null))['then'](function(_0x5507c5){if(_0x5507c5){return _0x5507c5['removeTags'](_0x6a60a3[_0xa382('0x2e')]['ids']);}})['then'](respondWithStatusCode(_0x5ed0ac,null))['catch'](handleError(_0x5ed0ac,null));};exports['download']=function(_0x299518,_0x192d01){var _0x449433=moment()[_0xa382('0x55')]()['toString']();var _0x20d007=path['join'](config['root'],_0xa382('0x56'),_0xa382('0x57'),_0xa382('0x58'));var _0x5731f9=path[_0xa382('0x59')](config['root'],_0xa382('0x56'),_0xa382('0x57'),_0xa382('0x5a'));var _0x13871=path[_0xa382('0x59')](_0x20d007,_0x449433);var _0x3f2d62=util[_0xa382('0x4c')](_0xa382('0x5b'),_0x299518[_0xa382('0x2b')]['id'],_0x449433);var _0x35ada6=path[_0xa382('0x59')](_0x20d007,_0x3f2d62);var _0x5781ff=[];_0x5781ff[_0xa382('0x5c')]({'model':db[_0xa382('0x5d')],'as':_0xa382('0x5d'),'attributes':['id',_0xa382('0x5e')],'raw':!![]});_0x5781ff['push']({'model':db[_0xa382('0x5f')],'as':_0xa382('0x60'),'attributes':['id',_0xa382('0x61'),_0xa382('0x62')],'raw':!![]});if(_0x299518[_0xa382('0x2e')][_0xa382('0x5a')]){_0x5781ff[_0xa382('0x5c')]({'model':db[_0xa382('0x63')],'as':_0xa382('0x63'),'raw':!![]});}var _0x2cd71c=[{'model':db['WhatsappMessage'],'as':_0xa382('0x64'),'attributes':['id',_0xa382('0x38'),'createdAt',_0xa382('0x65'),'secret',_0xa382('0x66')],'include':_0x5781ff}];_0x2cd71c['push']({'model':db[_0xa382('0x67')],'as':_0xa382('0x68'),'attributes':['id',_0xa382('0x1f')]});_0x2cd71c[_0xa382('0x5c')]({'model':db[_0xa382('0x5d')],'as':'Owner','attributes':['id','fullname']});return db[_0xa382('0x23')][_0xa382('0x3a')]({'where':{'id':_0x299518['params']['id']},'include':_0x2cd71c})[_0xa382('0x1b')](handleEntityNotFound(_0x192d01,null))[_0xa382('0x1b')](function(_0x49ae16){if(_0x49ae16){var _0x3f548a=_0x49ae16[_0xa382('0x69')]({'plain':!![]});fs[_0xa382('0x6a')](_0x13871);var _0x4159c7={'channel':'Whatsapp','account':_0x3f548a[_0xa382('0x68')][_0xa382('0x1f')],'agent':_0x3f548a[_0xa382('0x6b')]?_0x3f548a[_0xa382('0x6b')][_0xa382('0x5e')]:_0xa382('0x6c'),'createdAt':moment(_0x3f548a[_0xa382('0x6d')])[_0xa382('0x4c')](_0xa382('0x4d'))[_0xa382('0x6e')](),'closedAt':_0x3f548a[_0xa382('0x6f')]?moment(_0x3f548a[_0xa382('0x70')])[_0xa382('0x4c')]('YYYY-MM-DD\x20HH:mm:ss')[_0xa382('0x6e')]():'','disposition':_0x3f548a[_0xa382('0x71')],'messages':_(_0x3f548a[_0xa382('0x64')])['filter']({'secret':![]})[_0xa382('0x22')](function(_0x33fbfd){if(_0x33fbfd[_0xa382('0x63')]){var _0x3b7867=path[_0xa382('0x59')](_0x5731f9,_0x33fbfd[_0xa382('0x63')][_0xa382('0x72')]);if(fs[_0xa382('0x73')](_0x3b7867)){fs[_0xa382('0x74')](_0x3b7867)[_0xa382('0x75')](fs[_0xa382('0x76')](path['join'](_0x13871,_0x33fbfd['Attachment'][_0xa382('0x72')])));}}return{'date':moment(_0x33fbfd['createdAt'])[_0xa382('0x4c')]('YYYY-MM-DD\x20HH:mm:ss')[_0xa382('0x6e')](),'sender':_0x33fbfd['direction']==='out'?_0x33fbfd['User']?_0x33fbfd[_0xa382('0x5d')][_0xa382('0x5e')]:_0xa382('0x77'):_0x33fbfd[_0xa382('0x60')][_0xa382('0x61')]+(_0x33fbfd[_0xa382('0x60')][_0xa382('0x62')]?'\x20'+_0x33fbfd[_0xa382('0x60')][_0xa382('0x62')]:''),'body':_0x33fbfd[_0xa382('0x63')]?_0x33fbfd[_0xa382('0x63')][_0xa382('0x72')]:_0x33fbfd[_0xa382('0x38')],'direction':_0x33fbfd[_0xa382('0x65')]==='out'?'A':'C','secret':_0x33fbfd[_0xa382('0x78')],'read':_0x33fbfd[_0xa382('0x66')],'attachment':_0x33fbfd['Attachment']};})['value']()};return ejs[_0xa382('0x79')](path[_0xa382('0x59')](config[_0xa382('0x7a')],_0xa382('0x56'),_0xa382('0x7b'),_0xa382('0x7c')),{'interaction':_0x4159c7})['then'](function(_0x4f14c5){var _0x196ab5=path[_0xa382('0x59')](_0x13871,'transcript-'+_0x3f548a['id']+'-'+_0x449433+'.pdf');var _0x5e72a7={'path':_0x196ab5,'channel':_0xa382('0x7d'),'interactionId':_0x3f548a['id']};return pdf['createPdfFromHTML'](_0x4f14c5,_0x5e72a7);})[_0xa382('0x1b')](function(){return new BPromise(function(_0x4e2d4e,_0x4badb0){zipdir(_0x13871,{'saveTo':_0x35ada6},function(_0x37480b,_0x10b7ca){if(_0x37480b)return _0x4badb0(_0x37480b);return _0x4e2d4e(_0x10b7ca);});})['then'](function(){return new BPromise(function(_0x20f166,_0x4033c3){rimraf(_0x13871,function(_0x1731a4){if(_0x1731a4)_0x4033c3(_0x1731a4);return _0x20f166();});});})[_0xa382('0x1b')](function(){return _0x192d01[_0xa382('0x7e')](_0x35ada6,_0x3f2d62,function(_0x5a7ab0){if(_0x5a7ab0){console['log'](_0xa382('0x7f'),_0x5a7ab0);}else{fs['unlinkSync'](_0x35ada6);}});});});}else{return _0x192d01[_0xa382('0x10')](0xc8);}})[_0xa382('0x39')](handleError(_0x192d01,null));};
\ No newline at end of file
+var _0x0a27=['sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','then','stack','name','send','index','map','rawAttributes','fieldName','key','getOptions','findAll','whatsapp','query','catch','params','keys','WhatsappInteraction','filters','intersection','model','attributes','fields','length','include','merge','options','create','update','body','destroy','find','describe','addMessage','omit','getMessages','findOne','WhatsappMessage','hasOwnProperty','order','sort','where','pick','WhatsappInteractionId','filter','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','includeAll','rows','addTags','setTags','ids','spread','whatsappInteractionTags:save','removeTags','download','toString','join','server','files','root','attachments','transcript-%d-%s.zip','push','User','fullname','CmContact','Contact','firstName','Attachment','direction','secret','read','WhatsappAccount','Account','Owner','mkdirSync','Whatsapp','N.A.','createdAt','closed','closedAt','disposition','Messages','basename','existsSync','createReadStream','out','lastName','value','renderFile','transcript-','.pdf','createPdfFromHTML','err','rimraf','moment','bluebird','util','path','ejs','lodash','ioredis','../../components/export/pdf','api','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./whatsappInteraction.socket'];(function(_0x2650f5,_0x156f93){var _0xbd3ed7=function(_0x13bb52){while(--_0x13bb52){_0x2650f5['push'](_0x2650f5['shift']());}};_0xbd3ed7(++_0x156f93);}(_0x0a27,0x69));var _0x70a2=function(_0x1d615b,_0x45d453){_0x1d615b=_0x1d615b-0x0;var _0x50cde7=_0x0a27[_0x1d615b];return _0x50cde7;};'use strict';var rimraf=require(_0x70a2('0x0'));var zipdir=require('zip-dir');var moment=require(_0x70a2('0x1'));var BPromise=require(_0x70a2('0x2'));var util=require(_0x70a2('0x3'));var path=require(_0x70a2('0x4'));var ejs=require(_0x70a2('0x5'));var fs=require('fs');var _=require(_0x70a2('0x6'));var Redis=require(_0x70a2('0x7'));var interaction=require('../../components/interaction/service');var qs=require('../../components/parsers/qs');var pdf=require(_0x70a2('0x8'));var logger=require('../../config/logger')(_0x70a2('0x9'));var config=require(_0x70a2('0xa'));var db=require(_0x70a2('0xb'))['db'];config[_0x70a2('0xc')]=_[_0x70a2('0xd')](config['redis'],{'host':_0x70a2('0xe'),'port':0x18eb});var socket=require(_0x70a2('0xf'))(new Redis(config[_0x70a2('0xc')]));require(_0x70a2('0x10'))['register'](socket);function respondWithStatusCode(_0x16b8bd,_0x4d54e7){_0x4d54e7=_0x4d54e7||0xcc;return function(_0x40411f){if(_0x40411f){return _0x16b8bd[_0x70a2('0x11')](_0x4d54e7);}return _0x16b8bd[_0x70a2('0x12')](_0x4d54e7)[_0x70a2('0x13')]();};}function respondWithResult(_0x42665e,_0x58dd98){_0x58dd98=_0x58dd98||0xc8;return function(_0x6f199f){if(_0x6f199f){return _0x42665e[_0x70a2('0x12')](_0x58dd98)[_0x70a2('0x14')](_0x6f199f);}};}function respondWithFilteredResult(_0x4c5ae4,_0x1f45ca){return function(_0x421f31){if(_0x421f31){var _0x454580=typeof _0x1f45ca[_0x70a2('0x15')]===_0x70a2('0x16')&&typeof _0x1f45ca[_0x70a2('0x17')]===_0x70a2('0x16');var _0x2c9d6d=_0x421f31[_0x70a2('0x18')];var _0x32a3a8=_0x454580?0x0:_0x1f45ca[_0x70a2('0x15')];var _0x2d766d=_0x454580?_0x421f31[_0x70a2('0x18')]:_0x1f45ca[_0x70a2('0x15')]+_0x1f45ca[_0x70a2('0x17')];var _0x2e92a9;if(_0x2d766d>=_0x2c9d6d){_0x2d766d=_0x2c9d6d;_0x2e92a9=0xc8;}else{_0x2e92a9=0xce;}_0x4c5ae4[_0x70a2('0x12')](_0x2e92a9);return _0x4c5ae4['set'](_0x70a2('0x19'),_0x32a3a8+'-'+_0x2d766d+'/'+_0x2c9d6d)[_0x70a2('0x14')](_0x421f31);}return null;};}function saveUpdates(_0x2bcfa7){return function(_0x44426b){if(_0x44426b){return _0x44426b['update'](_0x2bcfa7)[_0x70a2('0x1a')](function(_0x3ed7b3){return _0x3ed7b3;});}return null;};}function removeEntity(_0x1953bf){return function(_0x9d59f4){if(_0x9d59f4){return _0x9d59f4['destroy']()[_0x70a2('0x1a')](function(){_0x1953bf['status'](0xcc)[_0x70a2('0x13')]();});}};}function handleEntityNotFound(_0x4b630c){return function(_0x23bd81){if(!_0x23bd81){_0x4b630c[_0x70a2('0x11')](0x194);}return _0x23bd81;};}function handleError(_0x334c19,_0x50931f){_0x50931f=_0x50931f||0x1f4;return function(_0x283031){logger['error'](_0x283031[_0x70a2('0x1b')]);if(_0x283031[_0x70a2('0x1c')]){delete _0x283031[_0x70a2('0x1c')];}_0x334c19[_0x70a2('0x12')](_0x50931f)[_0x70a2('0x1d')](_0x283031);};}exports[_0x70a2('0x1e')]=function(_0x10cf3d,_0xdd26c1){var _0x22c296={};var _0x27d29a=_[_0x70a2('0x1f')](db['WhatsappInteraction'][_0x70a2('0x20')],function(_0x42fc9b){return{'name':_0x42fc9b[_0x70a2('0x21')],'type':_0x42fc9b['type'][_0x70a2('0x22')]};});_0x22c296=qs[_0x70a2('0x23')](_0x27d29a,_0x10cf3d);return interaction[_0x70a2('0x24')](_0x70a2('0x25'),_0x10cf3d[_0x70a2('0x26')],_0x10cf3d['user'],_0x22c296,_0x27d29a)[_0x70a2('0x1a')](respondWithFilteredResult(_0xdd26c1,_0x22c296))[_0x70a2('0x27')](handleError(_0xdd26c1,null));};exports['show']=function(_0x4b0f2e,_0x5f1132){var _0x2a8d2b={'raw':![],'where':{'id':_0x4b0f2e[_0x70a2('0x28')]['id']}},_0x263ed9={};_0x263ed9['model']=_[_0x70a2('0x29')](db[_0x70a2('0x2a')][_0x70a2('0x20')]);_0x263ed9['query']=_[_0x70a2('0x29')](_0x4b0f2e['query']);_0x263ed9[_0x70a2('0x2b')]=_[_0x70a2('0x2c')](_0x263ed9[_0x70a2('0x2d')],_0x263ed9[_0x70a2('0x26')]);_0x2a8d2b[_0x70a2('0x2e')]=_['intersection'](_0x263ed9[_0x70a2('0x2d')],qs[_0x70a2('0x2f')](_0x4b0f2e[_0x70a2('0x26')][_0x70a2('0x2f')]));_0x2a8d2b['attributes']=_0x2a8d2b[_0x70a2('0x2e')][_0x70a2('0x30')]?_0x2a8d2b['attributes']:_0x263ed9['model'];if(_0x4b0f2e[_0x70a2('0x26')]['includeAll']){_0x2a8d2b[_0x70a2('0x31')]=[{'all':!![]}];}_0x2a8d2b=_[_0x70a2('0x32')]({},_0x2a8d2b,_0x4b0f2e[_0x70a2('0x33')]);return db['WhatsappInteraction']['find'](_0x2a8d2b)[_0x70a2('0x1a')](handleEntityNotFound(_0x5f1132,null))['then'](respondWithResult(_0x5f1132,null))[_0x70a2('0x27')](handleError(_0x5f1132,null));};exports[_0x70a2('0x34')]=function(_0x4a34cb,_0x12a7bb){return db[_0x70a2('0x2a')][_0x70a2('0x34')](_0x4a34cb['body'],{})[_0x70a2('0x1a')](respondWithResult(_0x12a7bb,0xc9))[_0x70a2('0x27')](handleError(_0x12a7bb,null));};exports[_0x70a2('0x35')]=function(_0x31785d,_0x322bb9){if(_0x31785d[_0x70a2('0x36')]['id']){delete _0x31785d[_0x70a2('0x36')]['id'];}return db['WhatsappInteraction']['find']({'where':{'id':_0x31785d[_0x70a2('0x28')]['id']}})[_0x70a2('0x1a')](handleEntityNotFound(_0x322bb9,null))[_0x70a2('0x1a')](saveUpdates(_0x31785d[_0x70a2('0x36')],null))['then'](respondWithResult(_0x322bb9,null))[_0x70a2('0x27')](handleError(_0x322bb9,null));};exports[_0x70a2('0x37')]=function(_0x4b4e95,_0x5cb3e1){return db['WhatsappInteraction'][_0x70a2('0x38')]({'where':{'id':_0x4b4e95[_0x70a2('0x28')]['id']}})['then'](handleEntityNotFound(_0x5cb3e1,null))[_0x70a2('0x1a')](removeEntity(_0x5cb3e1,null))[_0x70a2('0x27')](handleError(_0x5cb3e1,null));};exports[_0x70a2('0x39')]=function(_0x353c79,_0x4d9730){return db[_0x70a2('0x2a')][_0x70a2('0x39')]()[_0x70a2('0x1a')](respondWithResult(_0x4d9730,null))[_0x70a2('0x27')](handleError(_0x4d9730,null));};exports[_0x70a2('0x3a')]=function(_0xb61854,_0x818ccb){return db['WhatsappMessage'][_0x70a2('0x38')]({'where':{'id':_0xb61854[_0x70a2('0x28')]['id']}})[_0x70a2('0x1a')](handleEntityNotFound(_0x818ccb,null))[_0x70a2('0x1a')](function(_0x4b7c9b){if(_0x4b7c9b){return _0x4b7c9b['addMessage'](_0xb61854['body']['ids'],_[_0x70a2('0x3b')](_0xb61854['body'],['ids','id'])||{});}})[_0x70a2('0x1a')](respondWithResult(_0x818ccb,null))[_0x70a2('0x27')](handleError(_0x818ccb,null));};exports[_0x70a2('0x3c')]=function(_0x1bd2b8,_0x5c5cb8){var _0x23ef6a={'raw':![],'where':{}};var _0x105dec={};var _0x7cb748={'count':0x0,'rows':[]};return db[_0x70a2('0x2a')][_0x70a2('0x3d')]({'where':{'id':_0x1bd2b8[_0x70a2('0x28')]['id']}})[_0x70a2('0x1a')](handleEntityNotFound(_0x5c5cb8,null))[_0x70a2('0x1a')](function(_0x1dbc1a){if(_0x1dbc1a){_0x105dec[_0x70a2('0x2d')]=_[_0x70a2('0x29')](db[_0x70a2('0x3e')][_0x70a2('0x20')]);_0x105dec[_0x70a2('0x26')]=_[_0x70a2('0x29')](_0x1bd2b8[_0x70a2('0x26')]);_0x105dec['filters']=_[_0x70a2('0x2c')](_0x105dec['model'],_0x105dec[_0x70a2('0x26')]);_0x23ef6a[_0x70a2('0x2e')]=_['intersection'](_0x105dec[_0x70a2('0x2d')],qs[_0x70a2('0x2f')](_0x1bd2b8[_0x70a2('0x26')][_0x70a2('0x2f')]));_0x23ef6a[_0x70a2('0x2e')]=_0x23ef6a[_0x70a2('0x2e')]['length']?_0x23ef6a[_0x70a2('0x2e')]:_0x105dec[_0x70a2('0x2d')];if(!_0x1bd2b8['query'][_0x70a2('0x3f')]('nolimit')){_0x23ef6a[_0x70a2('0x17')]=qs[_0x70a2('0x17')](_0x1bd2b8[_0x70a2('0x26')][_0x70a2('0x17')]);_0x23ef6a[_0x70a2('0x15')]=qs['offset'](_0x1bd2b8[_0x70a2('0x26')][_0x70a2('0x15')]);}_0x23ef6a[_0x70a2('0x40')]=qs[_0x70a2('0x41')](_0x1bd2b8['query'][_0x70a2('0x41')]);_0x23ef6a[_0x70a2('0x42')]=qs[_0x70a2('0x2b')](_[_0x70a2('0x43')](_0x1bd2b8['query'],_0x105dec[_0x70a2('0x2b')]));_0x23ef6a[_0x70a2('0x42')][_0x70a2('0x44')]=_0x1dbc1a['id'];if(_0x1bd2b8[_0x70a2('0x26')][_0x70a2('0x45')]){_0x23ef6a[_0x70a2('0x42')]=_[_0x70a2('0x32')](_0x23ef6a['where'],{'$or':_[_0x70a2('0x1f')](_0x23ef6a[_0x70a2('0x2e')],function(_0x388806){var _0x2b0803={};_0x2b0803[_0x388806]={'$like':'%'+_0x1bd2b8[_0x70a2('0x26')]['filter']+'%'};return _0x2b0803;})});}if(_0x1bd2b8[_0x70a2('0x26')][_0x70a2('0x46')]){var _0x1722c4=_0x1bd2b8[_0x70a2('0x26')][_0x70a2('0x46')][_0x70a2('0x47')](',');var _0x1d133e={};_0x1d133e[_0x1722c4[0x0]]={'$gte':moment(_0x1722c4[0x1])[_0x70a2('0x48')](_0x70a2('0x49'))};_0x23ef6a[_0x70a2('0x42')]=_['merge'](_0x23ef6a[_0x70a2('0x42')],_0x1d133e);}_0x23ef6a=_[_0x70a2('0x32')]({},_0x23ef6a,_0x1bd2b8[_0x70a2('0x33')]);return db[_0x70a2('0x3e')][_0x70a2('0x18')]({'where':_0x23ef6a['where']})['then'](function(_0x1a90ac){_0x7cb748[_0x70a2('0x18')]=_0x1a90ac;if(_0x1bd2b8['query'][_0x70a2('0x4a')]){_0x23ef6a[_0x70a2('0x31')]=[{'all':!![]}];}return db[_0x70a2('0x3e')][_0x70a2('0x24')](_0x23ef6a);})[_0x70a2('0x1a')](function(_0xa1752d){_0x7cb748[_0x70a2('0x4b')]=_0xa1752d;return _0x7cb748;});}})[_0x70a2('0x1a')](respondWithFilteredResult(_0x5c5cb8,_0x23ef6a))[_0x70a2('0x27')](handleError(_0x5c5cb8,null));};exports[_0x70a2('0x4c')]=function(_0xa66de3,_0x199eea){return db['WhatsappInteraction']['find']({'where':{'id':_0xa66de3[_0x70a2('0x28')]['id']}})['then'](handleEntityNotFound(_0x199eea,null))['then'](function(_0x351fb2){if(_0x351fb2){return _0x351fb2[_0x70a2('0x4d')](_0xa66de3['body'][_0x70a2('0x4e')],_[_0x70a2('0x3b')](_0xa66de3[_0x70a2('0x36')],[_0x70a2('0x4e'),'id'])||{})[_0x70a2('0x4f')](function(){return db['Tag'][_0x70a2('0x24')]({'attributes':['id',_0x70a2('0x1c'),'color'],'where':{'id':_0xa66de3[_0x70a2('0x36')][_0x70a2('0x4e')]}});})[_0x70a2('0x1a')](function(_0x6baf61){socket['emit'](_0x70a2('0x50'),{'id':Number(_0xa66de3['params']['id']),'tags':_0x6baf61||[]});return{'id':Number(_0xa66de3['params']['id']),'tags':_0x6baf61||[]};});}})['then'](respondWithResult(_0x199eea,null))[_0x70a2('0x27')](handleError(_0x199eea,null));};exports[_0x70a2('0x51')]=function(_0xc1da7b,_0x5471dd){return db['WhatsappInteraction'][_0x70a2('0x38')]({'where':{'id':_0xc1da7b[_0x70a2('0x28')]['id']}})[_0x70a2('0x1a')](handleEntityNotFound(_0x5471dd,null))[_0x70a2('0x1a')](function(_0x5d0995){if(_0x5d0995){return _0x5d0995[_0x70a2('0x51')](_0xc1da7b['query']['ids']);}})[_0x70a2('0x1a')](respondWithStatusCode(_0x5471dd,null))[_0x70a2('0x27')](handleError(_0x5471dd,null));};exports[_0x70a2('0x52')]=function(_0x36cc38,_0x528ad8){var _0x36689b=moment()['unix']()[_0x70a2('0x53')]();var _0x391527=path[_0x70a2('0x54')](config['root'],_0x70a2('0x55'),_0x70a2('0x56'),'tmp');var _0x370bfa=path['join'](config[_0x70a2('0x57')],_0x70a2('0x55'),_0x70a2('0x56'),_0x70a2('0x58'));var _0x3bf8d1=path[_0x70a2('0x54')](_0x391527,_0x36689b);var _0x1213c5=util[_0x70a2('0x48')](_0x70a2('0x59'),_0x36cc38[_0x70a2('0x28')]['id'],_0x36689b);var _0x348999=path[_0x70a2('0x54')](_0x391527,_0x1213c5);var _0x3e53cd=[];_0x3e53cd[_0x70a2('0x5a')]({'model':db[_0x70a2('0x5b')],'as':_0x70a2('0x5b'),'attributes':['id',_0x70a2('0x5c')],'raw':!![]});_0x3e53cd[_0x70a2('0x5a')]({'model':db[_0x70a2('0x5d')],'as':_0x70a2('0x5e'),'attributes':['id',_0x70a2('0x5f'),'lastName'],'raw':!![]});if(_0x36cc38[_0x70a2('0x26')][_0x70a2('0x58')]){_0x3e53cd[_0x70a2('0x5a')]({'model':db[_0x70a2('0x60')],'as':_0x70a2('0x60'),'raw':!![]});}var _0x56dce9=[{'model':db['WhatsappMessage'],'as':'Messages','attributes':['id',_0x70a2('0x36'),'createdAt',_0x70a2('0x61'),_0x70a2('0x62'),_0x70a2('0x63')],'include':_0x3e53cd}];_0x56dce9['push']({'model':db[_0x70a2('0x64')],'as':_0x70a2('0x65'),'attributes':['id',_0x70a2('0x1c')]});_0x56dce9[_0x70a2('0x5a')]({'model':db['User'],'as':_0x70a2('0x66'),'attributes':['id','fullname']});return db[_0x70a2('0x2a')][_0x70a2('0x38')]({'where':{'id':_0x36cc38[_0x70a2('0x28')]['id']},'include':_0x56dce9})[_0x70a2('0x1a')](handleEntityNotFound(_0x528ad8,null))['then'](function(_0x1a8799){if(_0x1a8799){var _0x20cd26=_0x1a8799['get']({'plain':!![]});fs[_0x70a2('0x67')](_0x3bf8d1);var _0x1af87a={'channel':_0x70a2('0x68'),'account':_0x20cd26[_0x70a2('0x65')][_0x70a2('0x1c')],'agent':_0x20cd26[_0x70a2('0x66')]?_0x20cd26['Owner'][_0x70a2('0x5c')]:_0x70a2('0x69'),'createdAt':moment(_0x20cd26[_0x70a2('0x6a')])[_0x70a2('0x48')](_0x70a2('0x49'))[_0x70a2('0x53')](),'closedAt':_0x20cd26[_0x70a2('0x6b')]?moment(_0x20cd26[_0x70a2('0x6c')])[_0x70a2('0x48')](_0x70a2('0x49'))[_0x70a2('0x53')]():'','disposition':_0x20cd26[_0x70a2('0x6d')],'messages':_(_0x20cd26[_0x70a2('0x6e')])['filter']({'secret':![]})[_0x70a2('0x1f')](function(_0x10231e){if(_0x10231e[_0x70a2('0x60')]){var _0xf2dbe3=path[_0x70a2('0x54')](_0x370bfa,_0x10231e[_0x70a2('0x60')][_0x70a2('0x6f')]);if(fs[_0x70a2('0x70')](_0xf2dbe3)){fs[_0x70a2('0x71')](_0xf2dbe3)['pipe'](fs['createWriteStream'](path[_0x70a2('0x54')](_0x3bf8d1,_0x10231e['Attachment']['basename'])));}}return{'date':moment(_0x10231e[_0x70a2('0x6a')])[_0x70a2('0x48')](_0x70a2('0x49'))['toString'](),'sender':_0x10231e['direction']===_0x70a2('0x72')?_0x10231e[_0x70a2('0x5b')]?_0x10231e[_0x70a2('0x5b')][_0x70a2('0x5c')]:'System':_0x10231e[_0x70a2('0x5e')]['firstName']+(_0x10231e['Contact'][_0x70a2('0x73')]?'\x20'+_0x10231e['Contact'][_0x70a2('0x73')]:''),'body':_0x10231e['Attachment']?_0x10231e[_0x70a2('0x60')][_0x70a2('0x6f')]:_0x10231e[_0x70a2('0x36')],'direction':_0x10231e[_0x70a2('0x61')]===_0x70a2('0x72')?'A':'C','secret':_0x10231e[_0x70a2('0x62')],'read':_0x10231e[_0x70a2('0x63')],'attachment':_0x10231e[_0x70a2('0x60')]};})[_0x70a2('0x74')]()};return ejs[_0x70a2('0x75')](path[_0x70a2('0x54')](config[_0x70a2('0x57')],_0x70a2('0x55'),'views','downloadInteraction.ejs'),{'interaction':_0x1af87a})['then'](function(_0x1afe12){var _0x8eda28=path[_0x70a2('0x54')](_0x3bf8d1,_0x70a2('0x76')+_0x20cd26['id']+'-'+_0x36689b+_0x70a2('0x77'));var _0x3530e0={'path':_0x8eda28,'channel':_0x70a2('0x68'),'interactionId':_0x20cd26['id']};return pdf[_0x70a2('0x78')](_0x1afe12,_0x3530e0);})[_0x70a2('0x1a')](function(){return new BPromise(function(_0x12e4af,_0x222e12){zipdir(_0x3bf8d1,{'saveTo':_0x348999},function(_0x2ac94b,_0xe80575){if(_0x2ac94b)return _0x222e12(_0x2ac94b);return _0x12e4af(_0xe80575);});})[_0x70a2('0x1a')](function(){return new BPromise(function(_0x3f7551,_0x154572){rimraf(_0x3bf8d1,function(_0x4a3215){if(_0x4a3215)_0x154572(_0x4a3215);return _0x3f7551();});});})[_0x70a2('0x1a')](function(){return _0x528ad8[_0x70a2('0x52')](_0x348999,_0x1213c5,function(_0x5bb982){if(_0x5bb982){console['log'](_0x70a2('0x79'),_0x5bb982);}else{fs['unlinkSync'](_0x348999);}});});});}else{return _0x528ad8[_0x70a2('0x11')](0xc8);}})[_0x70a2('0x27')](handleError(_0x528ad8,null));};
\ No newline at end of file
index d7c2aff..79cc683 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b40=['length','emit','catch','hasOwnProperty','hook','exports','../../mysqldb','WhatsappInteraction','WhatsappMessage','setMaxListeners','save','update','remove','getUsers','then','setDataValue','Users','map','findAll','unreadMessages'];(function(_0x101a17,_0x5d047a){var _0x3b76ee=function(_0x89be1b){while(--_0x89be1b){_0x101a17['push'](_0x101a17['shift']());}};_0x3b76ee(++_0x5d047a);}(_0x0b40,0xba));var _0x00b4=function(_0x4c6d6f,_0x291557){_0x4c6d6f=_0x4c6d6f-0x0;var _0x2d4478=_0x0b40[_0x4c6d6f];return _0x2d4478;};'use strict';var EventEmitter=require('events');var WhatsappInteraction=require(_0x00b4('0x0'))['db'][_0x00b4('0x1')];var WhatsappMessage=require('../../mysqldb')['db'][_0x00b4('0x2')];var WhatsappInteractionEvents=new EventEmitter();WhatsappInteractionEvents[_0x00b4('0x3')](0x0);var events={'afterCreate':_0x00b4('0x4'),'afterUpdate':_0x00b4('0x5'),'afterDestroy':_0x00b4('0x6')};function emitEvent(_0x40d4f4){return function(_0x4ff8ad,_0x1b5f2f,_0xbcf545){_0x4ff8ad[_0x00b4('0x7')]({'attributes':['id'],'raw':!![]})[_0x00b4('0x8')](function(_0x5684ec){_0x4ff8ad[_0x00b4('0x9')](_0x00b4('0xa'),_0x5684ec[_0x00b4('0xb')](function(_0x57f82a){return{'id':_0x57f82a['id']};}));return WhatsappMessage[_0x00b4('0xc')]({'where':{'WhatsappInteractionId':_0x4ff8ad['id'],'direction':'in','read':![]},'raw':!![]});})[_0x00b4('0x8')](function(_0x4eec0b){_0x4ff8ad['setDataValue'](_0x00b4('0xd'),_0x4eec0b[_0x00b4('0xe')]);WhatsappInteractionEvents[_0x00b4('0xf')](_0x40d4f4+':'+_0x4ff8ad['id'],_0x4ff8ad);WhatsappInteractionEvents[_0x00b4('0xf')](_0x40d4f4,_0x4ff8ad);_0xbcf545(null);})[_0x00b4('0x10')](_0xbcf545(null));};}for(var e in events){if(events[_0x00b4('0x11')](e)){var event=events[e];WhatsappInteraction[_0x00b4('0x12')](e,emitEvent(event));}}module[_0x00b4('0x13')]=WhatsappInteractionEvents;
\ No newline at end of file
+var _0xf323=['remove','getUsers','then','Users','map','findAll','setDataValue','unreadMessages','emit','catch','hook','exports','WhatsappInteraction','../../mysqldb','setMaxListeners','save','update'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xf323,0x1c6));var _0x3f32=function(_0x7970bf,_0xb8a417){_0x7970bf=_0x7970bf-0x0;var _0x27590e=_0xf323[_0x7970bf];return _0x27590e;};'use strict';var EventEmitter=require('events');var WhatsappInteraction=require('../../mysqldb')['db'][_0x3f32('0x0')];var WhatsappMessage=require(_0x3f32('0x1'))['db']['WhatsappMessage'];var WhatsappInteractionEvents=new EventEmitter();WhatsappInteractionEvents[_0x3f32('0x2')](0x0);var events={'afterCreate':_0x3f32('0x3'),'afterUpdate':_0x3f32('0x4'),'afterDestroy':_0x3f32('0x5')};function emitEvent(_0x319ba4){return function(_0x556aa5,_0xd1ad3e,_0x2b4488){_0x556aa5[_0x3f32('0x6')]({'attributes':['id'],'raw':!![]})[_0x3f32('0x7')](function(_0x5c9dc2){_0x556aa5['setDataValue'](_0x3f32('0x8'),_0x5c9dc2[_0x3f32('0x9')](function(_0x1c6cb8){return{'id':_0x1c6cb8['id']};}));return WhatsappMessage[_0x3f32('0xa')]({'where':{'WhatsappInteractionId':_0x556aa5['id'],'direction':'in','read':![]},'raw':!![]});})[_0x3f32('0x7')](function(_0x1c3257){_0x556aa5[_0x3f32('0xb')](_0x3f32('0xc'),_0x1c3257['length']);WhatsappInteractionEvents[_0x3f32('0xd')](_0x319ba4+':'+_0x556aa5['id'],_0x556aa5);WhatsappInteractionEvents[_0x3f32('0xd')](_0x319ba4,_0x556aa5);_0x2b4488(null);})[_0x3f32('0xe')](_0x2b4488(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappInteraction[_0x3f32('0xf')](e,emitEvent(event));}}module[_0x3f32('0x10')]=WhatsappInteractionEvents;
\ No newline at end of file
index a7dcb97..75a18ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x14ec=['request-promise','path','../../config/environment','define','WhatsappInteraction','whatsapp_interactions','closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','../../config/logger','api','moment','bluebird'];(function(_0x27ac32,_0x42771f){var _0x20c811=function(_0x12d837){while(--_0x12d837){_0x27ac32['push'](_0x27ac32['shift']());}};_0x20c811(++_0x42771f);}(_0x14ec,0x127));var _0xc14e=function(_0x370707,_0x69a6c3){_0x370707=_0x370707-0x0;var _0x1d52da=_0x14ec[_0x370707];return _0x1d52da;};'use strict';var _=require(_0xc14e('0x0'));var util=require('util');var logger=require(_0xc14e('0x1'))(_0xc14e('0x2'));var moment=require(_0xc14e('0x3'));var BPromise=require(_0xc14e('0x4'));var rp=require(_0xc14e('0x5'));var fs=require('fs');var path=require(_0xc14e('0x6'));var rimraf=require('rimraf');var config=require(_0xc14e('0x7'));var attributes=require('./whatsappInteraction.attributes');module['exports']=function(_0x128caf,_0x23f61f){return _0x128caf[_0xc14e('0x8')](_0xc14e('0x9'),attributes,{'tableName':_0xc14e('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x351e15,_0x4f2c31,_0x3c1f3a){if(_0x351e15['changed'](_0xc14e('0xb'))){_0x351e15[_0xc14e('0xc')]=moment()[_0xc14e('0xd')](_0xc14e('0xe'));}_0x3c1f3a(null,_0x351e15);}}});};
\ No newline at end of file
+var _0x1de5=['format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','api','moment','bluebird','path','./whatsappInteraction.attributes','define','WhatsappInteraction','whatsapp_interactions','closed','closedAt'];(function(_0x2ef22c,_0x5350de){var _0x3fc2ac=function(_0xcd41c6){while(--_0xcd41c6){_0x2ef22c['push'](_0x2ef22c['shift']());}};_0x3fc2ac(++_0x5350de);}(_0x1de5,0x13d));var _0x51de=function(_0xda464c,_0x26e47d){_0xda464c=_0xda464c-0x0;var _0x19e222=_0x1de5[_0xda464c];return _0x19e222;};'use strict';var _=require(_0x51de('0x0'));var util=require(_0x51de('0x1'));var logger=require(_0x51de('0x2'))(_0x51de('0x3'));var moment=require(_0x51de('0x4'));var BPromise=require(_0x51de('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x51de('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x51de('0x7'));module['exports']=function(_0x29204f,_0x399a04){return _0x29204f[_0x51de('0x8')](_0x51de('0x9'),attributes,{'tableName':_0x51de('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x3e57ef,_0xd44509,_0x37b91c){if(_0x3e57ef['changed'](_0x51de('0xb'))){_0x3e57ef[_0x51de('0xc')]=moment()[_0x51de('0xd')](_0x51de('0xe'));}_0x37b91c(null,_0x3e57ef);}}});};
\ No newline at end of file
index 2da81f9..3d30a70 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3313=['register','request','then','info','request\x20sent','WhatsappInteraction,\x20%s,\x20%s,\x20%s','stringify','error','WhatsappInteraction,\x20%s,\x20%s','message','result','catch','UpdateWhatsappInteraction','WhatsappInteraction','body','options','raw','where','limit','debug','AddTagsToWhatsappInteraction','ids','omit','spread','AddTags','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','socket.io-emitter','./whatsappInteraction.socket'];(function(_0x343c4a,_0x316f6c){var _0x56dd64=function(_0x141b5a){while(--_0x141b5a){_0x343c4a['push'](_0x343c4a['shift']());}};_0x56dd64(++_0x316f6c);}(_0x3313,0x181));var _0x3331=function(_0x15a143,_0x1d7c56){_0x15a143=_0x15a143-0x0;var _0xae979=_0x3313[_0x15a143];return _0xae979;};'use strict';var _=require(_0x3331('0x0'));var util=require(_0x3331('0x1'));var moment=require(_0x3331('0x2'));var BPromise=require('bluebird');var rs=require(_0x3331('0x3'));var fs=require('fs');var Redis=require(_0x3331('0x4'));var db=require(_0x3331('0x5'))['db'];var utils=require(_0x3331('0x6'));var logger=require(_0x3331('0x7'))(_0x3331('0x8'));var config=require(_0x3331('0x9'));var jayson=require(_0x3331('0xa'));var client=jayson['client'][_0x3331('0xb')]({'port':0x232a});config[_0x3331('0xc')]=_['defaults'](config[_0x3331('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0x3331('0xd'))(new Redis(config['redis']));require(_0x3331('0xe'))[_0x3331('0xf')](socket);function respondWithRpcPromise(_0x3fd7e2,_0x25d8c1,_0x219d49){return new BPromise(function(_0x46bb02,_0x177d1f){return client[_0x3331('0x10')](_0x3fd7e2,_0x219d49)[_0x3331('0x11')](function(_0x436eaf){logger[_0x3331('0x12')]('WhatsappInteraction,\x20%s,\x20%s',_0x25d8c1,_0x3331('0x13'));logger['debug'](_0x3331('0x14'),_0x25d8c1,_0x3331('0x13'),JSON[_0x3331('0x15')](_0x436eaf));if(_0x436eaf[_0x3331('0x16')]){if(_0x436eaf[_0x3331('0x16')]['code']===0x1f4){logger[_0x3331('0x16')](_0x3331('0x17'),_0x25d8c1,_0x436eaf['error'][_0x3331('0x18')]);return _0x177d1f(_0x436eaf[_0x3331('0x16')][_0x3331('0x18')]);}logger[_0x3331('0x16')](_0x3331('0x17'),_0x25d8c1,_0x436eaf[_0x3331('0x16')]['message']);return _0x46bb02(_0x436eaf[_0x3331('0x16')][_0x3331('0x18')]);}else{logger['info'](_0x3331('0x17'),_0x25d8c1,_0x3331('0x13'));_0x46bb02(_0x436eaf[_0x3331('0x19')][_0x3331('0x18')]);}})[_0x3331('0x1a')](function(_0x460994){logger[_0x3331('0x16')](_0x3331('0x17'),_0x25d8c1,_0x460994);_0x177d1f(_0x460994);});});}exports[_0x3331('0x1b')]=function(_0x3e5f49){var _0x96449=this;return new Promise(function(_0x382f78,_0x170fde){return db[_0x3331('0x1c')]['update'](_0x3e5f49[_0x3331('0x1d')],{'raw':_0x3e5f49[_0x3331('0x1e')]?_0x3e5f49['options'][_0x3331('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3e5f49['options']?_0x3e5f49[_0x3331('0x1e')][_0x3331('0x20')]||null:null,'attributes':_0x3e5f49['options']?_0x3e5f49[_0x3331('0x1e')]['attributes']||null:null,'limit':_0x3e5f49[_0x3331('0x1e')]?_0x3e5f49[_0x3331('0x1e')][_0x3331('0x21')]||null:null})[_0x3331('0x11')](function(_0x54fe1c){logger[_0x3331('0x12')](_0x3331('0x1b'),_0x3e5f49);logger[_0x3331('0x22')]('UpdateWhatsappInteraction',_0x3e5f49,JSON[_0x3331('0x15')](_0x54fe1c));_0x382f78(_0x54fe1c);})['catch'](function(_0x4405b3){logger[_0x3331('0x16')]('UpdateWhatsappInteraction',_0x4405b3[_0x3331('0x18')],_0x3e5f49);_0x170fde(_0x96449[_0x3331('0x16')](0x1f4,_0x4405b3[_0x3331('0x18')]));});});};exports[_0x3331('0x23')]=function(_0x57cfb6){return new Promise(function(_0x299680,_0x283082){return db['WhatsappInteraction']['find']({'where':_0x57cfb6['options']?_0x57cfb6[_0x3331('0x1e')][_0x3331('0x20')]||null:null})['then'](function(_0x85995b){if(_0x85995b){return _0x85995b['addTags'](_0x57cfb6[_0x3331('0x1d')][_0x3331('0x24')],_[_0x3331('0x25')](_0x57cfb6[_0x3331('0x1d')],[_0x3331('0x24'),'id'])||{});}})[_0x3331('0x26')](function(_0x466b2){logger['info']('AddTags',_0x57cfb6);logger[_0x3331('0x22')]('AddTags',_0x57cfb6,JSON[_0x3331('0x15')](_0x466b2));_0x299680(_0x466b2);})[_0x3331('0x1a')](function(_0x4873be){logger[_0x3331('0x16')](_0x3331('0x27'),_0x4873be['message'],_0x57cfb6);_0x283082(_this['error'](0x1f4,_0x4873be[_0x3331('0x18')]));});});};
\ No newline at end of file
+var _0x4a8c=['jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./whatsappInteraction.socket','register','request','then','info','WhatsappInteraction,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','UpdateWhatsappInteraction','WhatsappInteraction','body','options','where','attributes','limit','ids','omit','spread','AddTags','lodash','bluebird','randomstring','../../mysqldb','../../config/logger','../../config/environment'];(function(_0x30c5d1,_0x47b162){var _0x4dd245=function(_0x18d938){while(--_0x18d938){_0x30c5d1['push'](_0x30c5d1['shift']());}};_0x4dd245(++_0x47b162);}(_0x4a8c,0x147));var _0xc4a8=function(_0x318a74,_0x38b9fd){_0x318a74=_0x318a74-0x0;var _0x665fe=_0x4a8c[_0x318a74];return _0x665fe;};'use strict';var _=require(_0xc4a8('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xc4a8('0x1'));var rs=require(_0xc4a8('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc4a8('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xc4a8('0x4'))('rpc');var config=require(_0xc4a8('0x5'));var jayson=require(_0xc4a8('0x6'));var client=jayson[_0xc4a8('0x7')][_0xc4a8('0x8')]({'port':0x232a});config[_0xc4a8('0x9')]=_[_0xc4a8('0xa')](config[_0xc4a8('0x9')],{'host':_0xc4a8('0xb'),'port':0x18eb});var socket=require(_0xc4a8('0xc'))(new Redis(config[_0xc4a8('0x9')]));require(_0xc4a8('0xd'))[_0xc4a8('0xe')](socket);function respondWithRpcPromise(_0x1cc5c5,_0x4f77c0,_0x311b7c){return new BPromise(function(_0x476868,_0x1acb94){return client[_0xc4a8('0xf')](_0x1cc5c5,_0x311b7c)[_0xc4a8('0x10')](function(_0xd5e64a){logger[_0xc4a8('0x11')](_0xc4a8('0x12'),_0x4f77c0,_0xc4a8('0x13'));logger[_0xc4a8('0x14')]('WhatsappInteraction,\x20%s,\x20%s,\x20%s',_0x4f77c0,'request\x20sent',JSON[_0xc4a8('0x15')](_0xd5e64a));if(_0xd5e64a[_0xc4a8('0x16')]){if(_0xd5e64a['error'][_0xc4a8('0x17')]===0x1f4){logger['error'](_0xc4a8('0x12'),_0x4f77c0,_0xd5e64a[_0xc4a8('0x16')][_0xc4a8('0x18')]);return _0x1acb94(_0xd5e64a[_0xc4a8('0x16')]['message']);}logger['error']('WhatsappInteraction,\x20%s,\x20%s',_0x4f77c0,_0xd5e64a[_0xc4a8('0x16')]['message']);return _0x476868(_0xd5e64a[_0xc4a8('0x16')][_0xc4a8('0x18')]);}else{logger[_0xc4a8('0x11')](_0xc4a8('0x12'),_0x4f77c0,_0xc4a8('0x13'));_0x476868(_0xd5e64a['result'][_0xc4a8('0x18')]);}})[_0xc4a8('0x19')](function(_0x2c1c0c){logger[_0xc4a8('0x16')](_0xc4a8('0x12'),_0x4f77c0,_0x2c1c0c);_0x1acb94(_0x2c1c0c);});});}exports[_0xc4a8('0x1a')]=function(_0x31e33b){var _0x34a773=this;return new Promise(function(_0x3cac95,_0x571564){return db[_0xc4a8('0x1b')]['update'](_0x31e33b[_0xc4a8('0x1c')],{'raw':_0x31e33b[_0xc4a8('0x1d')]?_0x31e33b[_0xc4a8('0x1d')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x31e33b[_0xc4a8('0x1d')]?_0x31e33b[_0xc4a8('0x1d')][_0xc4a8('0x1e')]||null:null,'attributes':_0x31e33b[_0xc4a8('0x1d')]?_0x31e33b[_0xc4a8('0x1d')][_0xc4a8('0x1f')]||null:null,'limit':_0x31e33b['options']?_0x31e33b[_0xc4a8('0x1d')][_0xc4a8('0x20')]||null:null})['then'](function(_0x25b084){logger[_0xc4a8('0x11')](_0xc4a8('0x1a'),_0x31e33b);logger['debug']('UpdateWhatsappInteraction',_0x31e33b,JSON[_0xc4a8('0x15')](_0x25b084));_0x3cac95(_0x25b084);})['catch'](function(_0xa3337c){logger['error'](_0xc4a8('0x1a'),_0xa3337c[_0xc4a8('0x18')],_0x31e33b);_0x571564(_0x34a773[_0xc4a8('0x16')](0x1f4,_0xa3337c['message']));});});};exports['AddTagsToWhatsappInteraction']=function(_0x393b8a){return new Promise(function(_0x1478fb,_0x5e5e99){return db['WhatsappInteraction']['find']({'where':_0x393b8a['options']?_0x393b8a[_0xc4a8('0x1d')][_0xc4a8('0x1e')]||null:null})['then'](function(_0x39fbf1){if(_0x39fbf1){return _0x39fbf1['addTags'](_0x393b8a[_0xc4a8('0x1c')][_0xc4a8('0x21')],_[_0xc4a8('0x22')](_0x393b8a[_0xc4a8('0x1c')],[_0xc4a8('0x21'),'id'])||{});}})[_0xc4a8('0x23')](function(_0x1c2b61){logger[_0xc4a8('0x11')](_0xc4a8('0x24'),_0x393b8a);logger['debug'](_0xc4a8('0x24'),_0x393b8a,JSON[_0xc4a8('0x15')](_0x1c2b61));_0x1478fb(_0x1c2b61);})['catch'](function(_0x517706){logger[_0xc4a8('0x16')](_0xc4a8('0x24'),_0x517706[_0xc4a8('0x18')],_0x393b8a);_0x5e5e99(_this[_0xc4a8('0x16')](0x1f4,_0x517706[_0xc4a8('0x18')]));});});};
\ No newline at end of file
index e08bcb9..da54315 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b02=['emit','register','length','whatsappInteraction:','update'];(function(_0x5d4607,_0x6b5e7b){var _0x5e4a86=function(_0x46891a){while(--_0x46891a){_0x5d4607['push'](_0x5d4607['shift']());}};_0x5e4a86(++_0x6b5e7b);}(_0x8b02,0x9a));var _0x28b0=function(_0x1f4f7a,_0xf788dc){_0x1f4f7a=_0x1f4f7a-0x0;var _0x392956=_0x8b02[_0x1f4f7a];return _0x392956;};'use strict';var WhatsappInteractionEvents=require('./whatsappInteraction.events');var events=['save','remove',_0x28b0('0x0')];function createListener(_0x5bf76e,_0x2de149){return function(_0x4268a6){_0x2de149[_0x28b0('0x1')](_0x5bf76e,_0x4268a6);};}function removeListener(_0x4844a6,_0x57e6fc){return function(){WhatsappInteractionEvents['removeListener'](_0x4844a6,_0x57e6fc);};}exports[_0x28b0('0x2')]=function(_0x2c57ad){for(var _0x1c877c=0x0,_0x29c3ba=events[_0x28b0('0x3')];_0x1c877c<_0x29c3ba;_0x1c877c++){var _0x3b8407=events[_0x1c877c];var _0x438c08=createListener(_0x28b0('0x4')+_0x3b8407,_0x2c57ad);WhatsappInteractionEvents['on'](_0x3b8407,_0x438c08);}};
\ No newline at end of file
+var _0xa0f1=['save','update','emit','removeListener','register','length','whatsappInteraction:','./whatsappInteraction.events'];(function(_0x1df79c,_0x5ad8fd){var _0x2f23e4=function(_0x47836f){while(--_0x47836f){_0x1df79c['push'](_0x1df79c['shift']());}};_0x2f23e4(++_0x5ad8fd);}(_0xa0f1,0x1c7));var _0x1a0f=function(_0x223f39,_0x56659e){_0x223f39=_0x223f39-0x0;var _0xa7fcf9=_0xa0f1[_0x223f39];return _0xa7fcf9;};'use strict';var WhatsappInteractionEvents=require(_0x1a0f('0x0'));var events=[_0x1a0f('0x1'),'remove',_0x1a0f('0x2')];function createListener(_0x3b6537,_0x3cc0e2){return function(_0x5d446a){_0x3cc0e2[_0x1a0f('0x3')](_0x3b6537,_0x5d446a);};}function removeListener(_0x5546fe,_0x71b95){return function(){WhatsappInteractionEvents[_0x1a0f('0x4')](_0x5546fe,_0x71b95);};}exports[_0x1a0f('0x5')]=function(_0x2acdd6){for(var _0x90c19e=0x0,_0x137015=events[_0x1a0f('0x6')];_0x90c19e<_0x137015;_0x90c19e++){var _0x1b3d13=events[_0x90c19e];var _0x2739a0=createListener(_0x1a0f('0x7')+_0x1b3d13,_0x2acdd6);WhatsappInteractionEvents['on'](_0x1b3d13,_0x2739a0);}};
\ No newline at end of file
index 8468104..4e8ebee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x660e=['status','put','update','/:id/accept','accept','/:id/reject','reject','delete','/:id','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappMessage.controller','get','isAuthenticated','describe','tracked','whatsapp','whatsappmessage:create','create','post','/:id/status'];(function(_0x12a0a3,_0x2652d1){var _0x1c47c4=function(_0x22261b){while(--_0x22261b){_0x12a0a3['push'](_0x12a0a3['shift']());}};_0x1c47c4(++_0x2652d1);}(_0x660e,0x83));var _0xe660=function(_0x13f1c8,_0x49a872){_0x13f1c8=_0x13f1c8-0x0;var _0x1e716a=_0x660e[_0x13f1c8];return _0x1e716a;};'use strict';var multer=require(_0xe660('0x0'));var util=require(_0xe660('0x1'));var path=require(_0xe660('0x2'));var timeout=require('connect-timeout');var express=require(_0xe660('0x3'));var router=express[_0xe660('0x4')]();var fs_extra=require(_0xe660('0x5'));var auth=require(_0xe660('0x6'));var interaction=require(_0xe660('0x7'));var config=require(_0xe660('0x8'));var controller=require(_0xe660('0x9'));router[_0xe660('0xa')]('/',auth[_0xe660('0xb')](),controller['index']);router[_0xe660('0xa')]('/describe',auth[_0xe660('0xb')](),controller[_0xe660('0xc')]);router[_0xe660('0xa')]('/:id',auth[_0xe660('0xb')](),controller['show']);router['post']('/',auth[_0xe660('0xb')](),interaction[_0xe660('0xd')](_0xe660('0xe'),_0xe660('0xf')),controller[_0xe660('0x10')]);router[_0xe660('0x11')](_0xe660('0x12'),controller[_0xe660('0x13')]);router[_0xe660('0x14')]('/:id',auth['isAuthenticated'](),controller[_0xe660('0x15')]);router[_0xe660('0x14')](_0xe660('0x16'),auth[_0xe660('0xb')](),controller[_0xe660('0x17')]);router[_0xe660('0x14')](_0xe660('0x18'),auth[_0xe660('0xb')](),controller[_0xe660('0x19')]);router[_0xe660('0x1a')](_0xe660('0x1b'),auth[_0xe660('0xb')](),controller[_0xe660('0x1c')]);module[_0xe660('0x1d')]=router;
\ No newline at end of file
+var _0xfcc0=['destroy','exports','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','get','/describe','describe','/:id','show','post','whatsapp','whatsappmessage:create','create','/:id/status','status','update','put','/:id/accept','accept','/:id/reject','delete'];(function(_0x46698a,_0x8de1e4){var _0x356db0=function(_0x19e83c){while(--_0x19e83c){_0x46698a['push'](_0x46698a['shift']());}};_0x356db0(++_0x8de1e4);}(_0xfcc0,0x1c2));var _0x0fcc=function(_0x59956c,_0x4b5fbf){_0x59956c=_0x59956c-0x0;var _0x3b9ba8=_0xfcc0[_0x59956c];return _0x3b9ba8;};'use strict';var multer=require(_0x0fcc('0x0'));var util=require('util');var path=require(_0x0fcc('0x1'));var timeout=require(_0x0fcc('0x2'));var express=require('express');var router=express[_0x0fcc('0x3')]();var fs_extra=require(_0x0fcc('0x4'));var auth=require(_0x0fcc('0x5'));var interaction=require(_0x0fcc('0x6'));var config=require(_0x0fcc('0x7'));var controller=require('./whatsappMessage.controller');router['get']('/',auth[_0x0fcc('0x8')](),controller['index']);router[_0x0fcc('0x9')](_0x0fcc('0xa'),auth[_0x0fcc('0x8')](),controller[_0x0fcc('0xb')]);router['get'](_0x0fcc('0xc'),auth[_0x0fcc('0x8')](),controller[_0x0fcc('0xd')]);router[_0x0fcc('0xe')]('/',auth['isAuthenticated'](),interaction['tracked'](_0x0fcc('0xf'),_0x0fcc('0x10')),controller[_0x0fcc('0x11')]);router['post'](_0x0fcc('0x12'),controller[_0x0fcc('0x13')]);router['put'](_0x0fcc('0xc'),auth[_0x0fcc('0x8')](),controller[_0x0fcc('0x14')]);router[_0x0fcc('0x15')](_0x0fcc('0x16'),auth[_0x0fcc('0x8')](),controller[_0x0fcc('0x17')]);router[_0x0fcc('0x15')](_0x0fcc('0x18'),auth[_0x0fcc('0x8')](),controller['reject']);router[_0x0fcc('0x19')]('/:id',auth[_0x0fcc('0x8')](),controller[_0x0fcc('0x1a')]);module[_0x0fcc('0x1b')]=router;
\ No newline at end of file
index 20a0a08..a6eb308 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa24b=['sequelize','exports','TEXT','medium','BOOLEAN','ENUM','out','STRING','DATE'];(function(_0x368e49,_0x1c1e88){var _0x997dfb=function(_0xe5b542){while(--_0xe5b542){_0x368e49['push'](_0x368e49['shift']());}};_0x997dfb(++_0x1c1e88);}(_0xa24b,0x1cb));var _0xba24=function(_0x55b2fc,_0x450a27){_0x55b2fc=_0x55b2fc-0x0;var _0x2512d8=_0xa24b[_0x55b2fc];return _0x2512d8;};'use strict';var Sequelize=require(_0xba24('0x0'));module[_0xba24('0x1')]={'body':{'type':Sequelize[_0xba24('0x2')](_0xba24('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0xba24('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0xba24('0x5')]('in',_0xba24('0x6')),'defaultValue':_0xba24('0x6'),'allowNull':![]},'messageId':{'type':Sequelize['STRING'](0xbe)},'phone':{'type':Sequelize[_0xba24('0x7')]},'readAt':{'type':Sequelize[_0xba24('0x8')]},'secret':{'type':Sequelize[_0xba24('0x4')],'defaultValue':![]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
+var _0x0aee=['TEXT','BOOLEAN','out','STRING','sequelize'];(function(_0x5bb0ba,_0x3a1803){var _0x551a4e=function(_0x46de11){while(--_0x46de11){_0x5bb0ba['push'](_0x5bb0ba['shift']());}};_0x551a4e(++_0x3a1803);}(_0x0aee,0x1a3));var _0xe0ae=function(_0x2b20c7,_0x278d49){_0x2b20c7=_0x2b20c7-0x0;var _0x3a6e02=_0x0aee[_0x2b20c7];return _0x3a6e02;};'use strict';var Sequelize=require(_0xe0ae('0x0'));module['exports']={'body':{'type':Sequelize[_0xe0ae('0x1')]('medium'),'allowNull':![]},'read':{'type':Sequelize[_0xe0ae('0x2')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in','out'),'defaultValue':_0xe0ae('0x3'),'allowNull':![]},'messageId':{'type':Sequelize[_0xe0ae('0x4')](0xbe)},'phone':{'type':Sequelize[_0xe0ae('0x4')]},'readAt':{'type':Sequelize['DATE']},'secret':{'type':Sequelize[_0xe0ae('0x2')],'defaultValue':![]},'providerName':{'type':Sequelize[_0xe0ae('0x4')]},'providerResponse':{'type':Sequelize[_0xe0ae('0x1')]}};
\ No newline at end of file
index 8aace22..1c1b1d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x02b3=['WhatsappMessage','includeAll','include','findAll','rows','catch','show','params','options','find','create','body','update','describe','whatsapp-interactions','whatsapp','read','format','YYYY-MM-DD\x20HH:mm:ss','UserId','agent','get','WhatsappInteraction','WhatsappInteractionId','isNil','read1stAt','interaction','[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','contact','fullname','manual','SIP/%s','channel','event','accept','EventManager','acceptmessage','role','RejectMessage','rejectMessage','SELECT','User','internal','interface','motionChannel','rejectmessage','WhatsappAccount','WhatsappAccountId','WhatsppMessage,\x20%s,\x20%s,\x20%s','type','inspect','twilio','MessageSid','messageId','MessageStatus','WhatsappAccount,\x20%s,\x20%s,\x20%s','rimraf','zip-dir','moment','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./whatsappMessage.socket','register','jayson/promise','http','client','request','WhatsappMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result','sendStatus','status','json','offset','undefined','limit','count','Content-Range','reject','then','stack','name','send','index','map','rawAttributes','fieldName','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL'];(function(_0x3c6daa,_0x205e9c){var _0x47e94d=function(_0x179819){while(--_0x179819){_0x3c6daa['push'](_0x3c6daa['shift']());}};_0x47e94d(++_0x205e9c);}(_0x02b3,0x1ee));var _0x302b=function(_0x2261ce,_0x9ed8b6){_0x2261ce=_0x2261ce-0x0;var _0x524640=_0x02b3[_0x2261ce];return _0x524640;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x302b('0x0'));var zipdir=require(_0x302b('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x302b('0x2'));var BPromise=require('bluebird');var Mustache=require(_0x302b('0x3'));var util=require(_0x302b('0x4'));var path=require(_0x302b('0x5'));var sox=require(_0x302b('0x6'));var csv=require(_0x302b('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x302b('0x8'));var _=require('lodash');var squel=require(_0x302b('0x9'));var crypto=require(_0x302b('0xa'));var jsforce=require(_0x302b('0xb'));var deskjs=require(_0x302b('0xc'));var toCsv=require('to-csv');var querystring=require(_0x302b('0xd'));var Papa=require(_0x302b('0xe'));var Redis=require(_0x302b('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x302b('0x10'));var hardwareService=require(_0x302b('0x11'));var logger=require(_0x302b('0x12'))(_0x302b('0x13'));var utils=require(_0x302b('0x14'));var config=require(_0x302b('0x15'));var licenseUtil=require(_0x302b('0x16'));var db=require(_0x302b('0x17'))['db'];config[_0x302b('0x18')]=_[_0x302b('0x19')](config[_0x302b('0x18')],{'host':_0x302b('0x1a'),'port':0x18eb});var socket=require(_0x302b('0x1b'))(new Redis(config['redis']));require(_0x302b('0x1c'))[_0x302b('0x1d')](socket);var jayson=require(_0x302b('0x1e'));var client=jayson['client'][_0x302b('0x1f')]({'port':0x232c});var client9002=jayson[_0x302b('0x20')][_0x302b('0x1f')]({'port':0x232a});function respondWithRpcPromise(_0xd21d7c,_0x50d904,_0xcc6774,_0x2fb801){return new BPromise(function(_0x2c1cf4,_0x46c2ab){var _0x538b72=_0x2fb801||client;return _0x538b72[_0x302b('0x21')](_0xd21d7c,_0xcc6774)['then'](function(_0x2ff7a0){logger['info'](_0x302b('0x22'),_0x50d904,_0x302b('0x23'));logger[_0x302b('0x24')]('WhatsappMessage,\x20%s,\x20%s,\x20%s',_0x50d904,_0x302b('0x23'),JSON[_0x302b('0x25')](_0x2ff7a0));if(_0x2ff7a0[_0x302b('0x26')]){if(_0x2ff7a0[_0x302b('0x26')][_0x302b('0x27')]===0x1f4){logger[_0x302b('0x26')](_0x302b('0x22'),_0x50d904,_0x2ff7a0[_0x302b('0x26')][_0x302b('0x28')]);return _0x46c2ab(_0x2ff7a0[_0x302b('0x26')][_0x302b('0x28')]);}logger[_0x302b('0x26')](_0x302b('0x22'),_0x50d904,_0x2ff7a0[_0x302b('0x26')][_0x302b('0x28')]);return _0x2c1cf4(_0x2ff7a0[_0x302b('0x26')][_0x302b('0x28')]);}else{logger[_0x302b('0x29')](_0x302b('0x22'),_0x50d904,_0x302b('0x23'));_0x2c1cf4(_0x2ff7a0[_0x302b('0x2a')][_0x302b('0x28')]);}})['catch'](function(_0x6b9a1){logger[_0x302b('0x26')]('WhatsappMessage,\x20%s,\x20%s',_0x50d904,_0x6b9a1);_0x46c2ab(_0x6b9a1);});});}function respondWithStatusCode(_0x4aecff,_0x58ed8a){_0x58ed8a=_0x58ed8a||0xcc;return function(_0x12244){if(_0x12244){return _0x4aecff[_0x302b('0x2b')](_0x58ed8a);}return _0x4aecff[_0x302b('0x2c')](_0x58ed8a)['end']();};}function respondWithResult(_0x31ce83,_0x26eba0){_0x26eba0=_0x26eba0||0xc8;return function(_0x472dc1){if(_0x472dc1){return _0x31ce83['status'](_0x26eba0)[_0x302b('0x2d')](_0x472dc1);}};}function respondWithFilteredResult(_0x393d23,_0x1f334f){return function(_0x34cb29){if(_0x34cb29){var _0x33d3fe=typeof _0x1f334f[_0x302b('0x2e')]===_0x302b('0x2f')&&typeof _0x1f334f[_0x302b('0x30')]===_0x302b('0x2f');var _0x4bd3a8=_0x34cb29[_0x302b('0x31')];var _0x3a9124=_0x33d3fe?0x0:_0x1f334f['offset'];var _0x194aca=_0x33d3fe?_0x34cb29[_0x302b('0x31')]:_0x1f334f[_0x302b('0x2e')]+_0x1f334f[_0x302b('0x30')];var _0x4aac86;if(_0x194aca>=_0x4bd3a8){_0x194aca=_0x4bd3a8;_0x4aac86=0xc8;}else{_0x4aac86=0xce;}_0x393d23[_0x302b('0x2c')](_0x4aac86);return _0x393d23['set'](_0x302b('0x32'),_0x3a9124+'-'+_0x194aca+'/'+_0x4bd3a8)[_0x302b('0x2d')](_0x34cb29);}return null;};}function patchUpdates(_0x15f81a){return function(_0x35fdf8){try{jsonpatch['apply'](_0x35fdf8,_0x15f81a,!![]);}catch(_0x213817){return BPromise[_0x302b('0x33')](_0x213817);}return _0x35fdf8['save']();};}function saveUpdates(_0x15494e,_0x6edcca){return function(_0x273213){if(_0x273213){return _0x273213['update'](_0x15494e)[_0x302b('0x34')](function(_0x43122a){return _0x43122a;});}return null;};}function removeEntity(_0x1d5665,_0x103709){return function(_0x288db3){if(_0x288db3){return _0x288db3['destroy']()['then'](function(){_0x1d5665[_0x302b('0x2c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x44ccc0,_0xc35bc0){return function(_0x367efe){if(!_0x367efe){_0x44ccc0[_0x302b('0x2b')](0x194);}return _0x367efe;};}function handleError(_0x19c4ac,_0x2c6dc8){_0x2c6dc8=_0x2c6dc8||0x1f4;return function(_0x380e62){logger[_0x302b('0x26')](_0x380e62[_0x302b('0x35')]);if(_0x380e62[_0x302b('0x36')]){delete _0x380e62[_0x302b('0x36')];}_0x19c4ac[_0x302b('0x2c')](_0x2c6dc8)[_0x302b('0x37')](_0x380e62);};}exports[_0x302b('0x38')]=function(_0x409a80,_0x1fcdd0){var _0x51ae74={},_0x909915={},_0x4958e0={'count':0x0,'rows':[]};var _0xfc03=_[_0x302b('0x39')](db['WhatsappMessage'][_0x302b('0x3a')],function(_0x225934){return{'name':_0x225934[_0x302b('0x3b')],'type':_0x225934['type'][_0x302b('0x3c')]};});_0x909915[_0x302b('0x3d')]=_['map'](_0xfc03,_0x302b('0x36'));_0x909915[_0x302b('0x3e')]=_[_0x302b('0x3f')](_0x409a80[_0x302b('0x3e')]);_0x909915['filters']=_[_0x302b('0x40')](_0x909915[_0x302b('0x3d')],_0x909915[_0x302b('0x3e')]);_0x51ae74[_0x302b('0x41')]=_[_0x302b('0x40')](_0x909915['model'],qs[_0x302b('0x42')](_0x409a80['query'][_0x302b('0x42')]));_0x51ae74['attributes']=_0x51ae74[_0x302b('0x41')][_0x302b('0x43')]?_0x51ae74[_0x302b('0x41')]:_0x909915['model'];if(!_0x409a80[_0x302b('0x3e')][_0x302b('0x44')](_0x302b('0x45'))){_0x51ae74[_0x302b('0x30')]=qs[_0x302b('0x30')](_0x409a80[_0x302b('0x3e')]['limit']);_0x51ae74['offset']=qs[_0x302b('0x2e')](_0x409a80['query']['offset']);}_0x51ae74[_0x302b('0x46')]=qs[_0x302b('0x47')](_0x409a80[_0x302b('0x3e')]['sort']);_0x51ae74[_0x302b('0x48')]=qs[_0x302b('0x49')](_[_0x302b('0x4a')](_0x409a80[_0x302b('0x3e')],_0x909915['filters']),_0xfc03);if(_0x409a80['query'][_0x302b('0x4b')]){_0x51ae74[_0x302b('0x48')]=_[_0x302b('0x4c')](_0x51ae74[_0x302b('0x48')],{'$or':_['map'](_0xfc03,function(_0x10fc04){if(_0x10fc04['type']!==_0x302b('0x4d')){var _0x5454a5={};_0x5454a5[_0x10fc04[_0x302b('0x36')]]={'$like':'%'+_0x409a80[_0x302b('0x3e')][_0x302b('0x4b')]+'%'};return _0x5454a5;}})});}_0x51ae74=_[_0x302b('0x4c')]({},_0x51ae74,_0x409a80['options']);var _0x41855b={'where':_0x51ae74['where']};return db[_0x302b('0x4e')][_0x302b('0x31')](_0x41855b)[_0x302b('0x34')](function(_0x3959cd){_0x4958e0[_0x302b('0x31')]=_0x3959cd;if(_0x409a80[_0x302b('0x3e')][_0x302b('0x4f')]){_0x51ae74[_0x302b('0x50')]=[{'all':!![]}];}return db['WhatsappMessage'][_0x302b('0x51')](_0x51ae74);})['then'](function(_0x4d6452){_0x4958e0[_0x302b('0x52')]=_0x4d6452;return _0x4958e0;})[_0x302b('0x34')](respondWithFilteredResult(_0x1fcdd0,_0x51ae74))[_0x302b('0x53')](handleError(_0x1fcdd0,null));};exports[_0x302b('0x54')]=function(_0x238235,_0x504185){var _0x1db4d5={'raw':!![],'where':{'id':_0x238235[_0x302b('0x55')]['id']}},_0x540a9e={};_0x540a9e[_0x302b('0x3d')]=_['keys'](db[_0x302b('0x4e')][_0x302b('0x3a')]);_0x540a9e[_0x302b('0x3e')]=_[_0x302b('0x3f')](_0x238235[_0x302b('0x3e')]);_0x540a9e[_0x302b('0x49')]=_[_0x302b('0x40')](_0x540a9e[_0x302b('0x3d')],_0x540a9e[_0x302b('0x3e')]);_0x1db4d5[_0x302b('0x41')]=_[_0x302b('0x40')](_0x540a9e[_0x302b('0x3d')],qs[_0x302b('0x42')](_0x238235[_0x302b('0x3e')][_0x302b('0x42')]));_0x1db4d5[_0x302b('0x41')]=_0x1db4d5[_0x302b('0x41')][_0x302b('0x43')]?_0x1db4d5[_0x302b('0x41')]:_0x540a9e[_0x302b('0x3d')];if(_0x238235[_0x302b('0x3e')]['includeAll']){_0x1db4d5[_0x302b('0x50')]=[{'all':!![]}];}_0x1db4d5=_[_0x302b('0x4c')]({},_0x1db4d5,_0x238235[_0x302b('0x56')]);return db[_0x302b('0x4e')][_0x302b('0x57')](_0x1db4d5)[_0x302b('0x34')](handleEntityNotFound(_0x504185,null))[_0x302b('0x34')](respondWithResult(_0x504185,null))[_0x302b('0x53')](handleError(_0x504185,null));};exports[_0x302b('0x58')]=function(_0x146841,_0x5401be){return db[_0x302b('0x4e')][_0x302b('0x58')](_0x146841[_0x302b('0x59')],{})[_0x302b('0x34')](respondWithResult(_0x5401be,0xc9))[_0x302b('0x53')](handleError(_0x5401be,null));};exports[_0x302b('0x5a')]=function(_0x286008,_0x1fe07a){if(_0x286008[_0x302b('0x59')]['id']){delete _0x286008[_0x302b('0x59')]['id'];}return db['WhatsappMessage'][_0x302b('0x57')]({'where':{'id':_0x286008[_0x302b('0x55')]['id']}})[_0x302b('0x34')](handleEntityNotFound(_0x1fe07a,null))[_0x302b('0x34')](saveUpdates(_0x286008[_0x302b('0x59')],null))['then'](respondWithResult(_0x1fe07a,null))[_0x302b('0x53')](handleError(_0x1fe07a,null));};exports['destroy']=function(_0x321506,_0x573941){return db['WhatsappMessage']['find']({'where':{'id':_0x321506[_0x302b('0x55')]['id']}})[_0x302b('0x34')](handleEntityNotFound(_0x573941,null))[_0x302b('0x34')](removeEntity(_0x573941,null))[_0x302b('0x53')](handleError(_0x573941,null));};exports['describe']=function(_0x20580f,_0x466824){return db['WhatsappMessage'][_0x302b('0x5b')]()[_0x302b('0x34')](respondWithResult(_0x466824,null))[_0x302b('0x53')](handleError(_0x466824,null));};var interaction_log=require('../../config/logger')(_0x302b('0x5c'));exports['accept']=function(_0x3aa58b,_0x5bb4fd,_0x309efe){var _0x44aae0={'agent':{},'channel':_0x302b('0x5d')};if(_0x3aa58b[_0x302b('0x59')]['id']){delete _0x3aa58b['body']['id'];}_0x3aa58b[_0x302b('0x59')][_0x302b('0x5e')]=!![];_0x3aa58b['body']['readAt']=moment()[_0x302b('0x5f')](_0x302b('0x60'));_0x3aa58b['body'][_0x302b('0x61')]=_0x3aa58b[_0x302b('0x59')]['UserId']||_0x3aa58b['user']['id'];_0x44aae0[_0x302b('0x62')]['id']=_0x3aa58b['body'][_0x302b('0x61')];return db[_0x302b('0x4e')][_0x302b('0x57')]({'where':{'id':_0x3aa58b[_0x302b('0x55')]['id'],'UserId':null}})[_0x302b('0x34')](handleEntityNotFound(_0x5bb4fd,null))[_0x302b('0x34')](saveUpdates(_0x3aa58b[_0x302b('0x59')],null))[_0x302b('0x34')](function(_0xb3bd75){if(_0xb3bd75){_0x44aae0[_0x302b('0x28')]=_0xb3bd75[_0x302b('0x63')]({'plain':!![]});return db[_0x302b('0x64')][_0x302b('0x57')]({'where':{'id':_0xb3bd75[_0x302b('0x65')]}});}return null;})['then'](handleEntityNotFound(_0x5bb4fd,null))[_0x302b('0x34')](function(_0x52cb60){if(_0x52cb60){return _0x52cb60['update']({'UserId':_0x3aa58b[_0x302b('0x59')][_0x302b('0x61')],'read1stAt':_[_0x302b('0x66')](_0x52cb60[_0x302b('0x67')])?moment()[_0x302b('0x5f')](_0x302b('0x60')):undefined});}return null;})[_0x302b('0x34')](function(_0x303065){if(_0x303065){_0x44aae0[_0x302b('0x68')]=_0x303065['get']({'plain':!![]});interaction_log[_0x302b('0x29')](_0x302b('0x69'),_0x3aa58b[_0x302b('0x6a')]['id'],_0x3aa58b[_0x302b('0x6a')][_0x302b('0x36')],_0x3aa58b[_0x302b('0x6a')]['role'],_0x44aae0[_0x302b('0x68')]['id'],_0x3aa58b[_0x302b('0x59')]?JSON[_0x302b('0x25')](_0x3aa58b[_0x302b('0x59')]):_0x302b('0x6b'));return respondWithRpcPromise(_0x302b('0x6c'),_0x302b('0x6d'),_0x44aae0);}return null;})['then'](function(_0x2aa7a0){var _0x5baf2a=_0x302b('0x6e')+_0x2aa7a0['message'][_0x302b('0x6f')];return db[_0x302b('0x70')][_0x302b('0x3e')](_0x5baf2a,{'type':db[_0x302b('0x71')][_0x302b('0x72')]['SELECT'],'raw':!![]})[_0x302b('0x34')](function(_0x234f04){return _0x234f04;});})[_0x302b('0x34')](function(_0x3c3cd4){if(_0x3c3cd4){_0x44aae0['message'][_0x302b('0x73')]=_0x3c3cd4[0x0];if(!_0x3aa58b[_0x302b('0x59')][_0x302b('0x61')])return;return db['User'][_0x302b('0x57')]({'where':{'id':_0x3aa58b[_0x302b('0x59')]['UserId'],'role':_0x302b('0x62')},'attributes':['id','name',_0x302b('0x74'),'email','internal'],'raw':!![]});}return null;})[_0x302b('0x34')](function(_0x5bf06c){if(!_0x5bf06c)return null;_0x44aae0[_0x302b('0x28')][_0x302b('0x62')]=_0x5bf06c;return _0x44aae0;})[_0x302b('0x34')](function(_0x343c3f){if(_0x343c3f){if(_0x3aa58b['body'][_0x302b('0x75')]){_0x44aae0[_0x302b('0x28')]['interface']=util['format'](_0x302b('0x76'),_0x3aa58b[_0x302b('0x6a')][_0x302b('0x36')]);_0x44aae0[_0x302b('0x28')][_0x302b('0x77')]=_0x44aae0['channel'];_0x44aae0[_0x302b('0x28')]['motionChannel']=_0x44aae0[_0x302b('0x77')];_0x44aae0['message'][_0x302b('0x78')]=_0x302b('0x79');return respondWithRpcPromise('EventManager',_0x302b('0x7a'),{'event':_0x302b('0x7b'),'message':_0x44aae0[_0x302b('0x28')]},client9002)[_0x302b('0x34')](function(){return _0x44aae0;});}return _0x44aae0;}return null;})[_0x302b('0x34')](respondWithResult(_0x5bb4fd,null))[_0x302b('0x53')](handleError(_0x5bb4fd,null));};var interaction_log=require('../../config/logger')(_0x302b('0x5c'));exports[_0x302b('0x33')]=function(_0x16b3f4,_0xf7a426,_0x3521c6){var _0xe1bf75={'agent':{},'channel':_0x302b('0x5d')};if(_0x16b3f4['body']['id']){delete _0x16b3f4[_0x302b('0x59')]['id'];}_0x16b3f4[_0x302b('0x59')][_0x302b('0x61')]=_0x16b3f4['body'][_0x302b('0x61')]||_0x16b3f4[_0x302b('0x6a')]['id'];_0xe1bf75['agent']['id']=_0x16b3f4[_0x302b('0x59')]['UserId'];return db[_0x302b('0x4e')][_0x302b('0x57')]({'where':{'id':_0x16b3f4[_0x302b('0x55')]['id'],'UserId':null}})[_0x302b('0x34')](handleEntityNotFound(_0xf7a426,null))['then'](function(_0x393341){if(_0x393341){_0xe1bf75[_0x302b('0x28')]=_0x393341[_0x302b('0x63')]({'plain':!![]});return db[_0x302b('0x64')][_0x302b('0x57')]({'where':{'id':_0x393341[_0x302b('0x65')]}});}return null;})['then'](handleEntityNotFound(_0xf7a426,null))['then'](function(_0x215de5){if(_0x215de5){_0xe1bf75['interaction']=_0x215de5[_0x302b('0x63')]({'plain':!![]});interaction_log[_0x302b('0x29')]('[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x16b3f4[_0x302b('0x6a')]['id'],_0x16b3f4[_0x302b('0x6a')][_0x302b('0x36')],_0x16b3f4[_0x302b('0x6a')][_0x302b('0x7c')],_0xe1bf75[_0x302b('0x68')]['id'],_0x16b3f4['body']?JSON[_0x302b('0x25')](_0x16b3f4[_0x302b('0x59')]):_0x302b('0x6b'));return respondWithRpcPromise(_0x302b('0x7d'),_0x302b('0x7e'),_0xe1bf75);}return null;})[_0x302b('0x34')](function(_0x227abd){var _0x4ada8a='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x227abd[_0x302b('0x28')][_0x302b('0x6f')];return db[_0x302b('0x70')][_0x302b('0x3e')](_0x4ada8a,{'type':db[_0x302b('0x71')][_0x302b('0x72')][_0x302b('0x7f')],'raw':!![]})[_0x302b('0x34')](function(_0x572cff){return _0x572cff;});})[_0x302b('0x34')](function(_0x27db0f){if(_0x27db0f){_0xe1bf75[_0x302b('0x28')][_0x302b('0x73')]=_0x27db0f[0x0];if(!_0x16b3f4['body'][_0x302b('0x61')])return;return db[_0x302b('0x80')]['find']({'where':{'id':_0x16b3f4[_0x302b('0x59')][_0x302b('0x61')],'role':'agent'},'attributes':['id',_0x302b('0x36'),'fullname','email',_0x302b('0x81')],'raw':!![]});}return null;})[_0x302b('0x34')](function(_0x258ad3){if(!_0x258ad3)return null;_0xe1bf75[_0x302b('0x28')][_0x302b('0x62')]=_0x258ad3;return _0xe1bf75;})[_0x302b('0x34')](function(_0xaeb8c){if(_0xaeb8c){_0xaeb8c[_0x302b('0x28')][_0x302b('0x82')]=util[_0x302b('0x5f')](_0x302b('0x76'),_0x16b3f4[_0x302b('0x6a')][_0x302b('0x36')]);_0xaeb8c['message'][_0x302b('0x77')]=_0xe1bf75['channel'];_0xaeb8c[_0x302b('0x28')][_0x302b('0x83')]=_0xe1bf75[_0x302b('0x77')];_0xaeb8c['message'][_0x302b('0x78')]=_0x302b('0x33');respondWithRpcPromise(_0x302b('0x7a'),_0x302b('0x7a'),{'event':_0x302b('0x84'),'message':_0xaeb8c['message']},client9002);return _0xe1bf75;}return null;})[_0x302b('0x34')](respondWithResult(_0xf7a426,null))[_0x302b('0x53')](handleError(_0xf7a426,null));};exports[_0x302b('0x2c')]=function(_0x4785cc,_0x114153,_0x1c63d7){if(_0x4785cc['body']['id']){delete _0x4785cc[_0x302b('0x59')]['id'];}var _0x4ec501;return db[_0x302b('0x4e')][_0x302b('0x57')]({'where':{'id':_0x4785cc['params']['id']}})[_0x302b('0x34')](handleEntityNotFound(_0x114153,null))['then'](function(_0x34a174){if(_0x34a174){_0x4ec501=_0x34a174;return db[_0x302b('0x85')]['find']({'where':{'id':_0x34a174[_0x302b('0x86')]}});}})[_0x302b('0x34')](handleEntityNotFound(_0x114153,null))['then'](function(_0xd15c58){if(_0xd15c58){logger[_0x302b('0x24')](_0x302b('0x87'),_0x302b('0x2c'),'received\x20delivery\x20report\x20from',_0xd15c58[_0x302b('0x88')],util[_0x302b('0x89')](_0x4785cc[_0x302b('0x59')],{'showHidden':![],'depth':null}));switch(_0xd15c58[_0x302b('0x88')]){case _0x302b('0x8a'):if(_0x4785cc[_0x302b('0x59')][_0x302b('0x8b')]&&_0x4785cc[_0x302b('0x59')]['MessageSid']===_0x4ec501[_0x302b('0x8c')]&&_0x4785cc[_0x302b('0x59')][_0x302b('0x8d')]&&_0x4785cc[_0x302b('0x59')]['MessageStatus']===_0x302b('0x5e')){return _0x4ec501[_0x302b('0x5a')]({'read':!![]});}else{logger[_0x302b('0x26')](_0x302b('0x8e'),'status',_0x302b('0x8a'),util[_0x302b('0x89')](_0x4785cc['body'],{'showHidden':![],'depth':null}));}break;}return _0x4ec501;}})[_0x302b('0x34')](respondWithResult(_0x114153,null))['catch'](handleError(_0x114153,null));};
\ No newline at end of file
+var _0x587e=['set','save','update','destroy','name','send','index','map','WhatsappMessage','rawAttributes','type','model','query','keys','filters','intersection','attributes','fields','length','nolimit','limit','order','sort','pick','where','VIRTUAL','merge','includeAll','include','findAll','rows','show','options','find','create','body','params','describe','whatsapp-interactions','whatsapp','read','readAt','format','UserId','user','get','WhatsappInteraction','WhatsappInteractionId','isNil','read1stAt','YYYY-MM-DD\x20HH:mm:ss','interaction','[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','QueryTypes','contact','User','agent','fullname','manual','interface','SIP/%s','channel','event','accept','EventManager','acceptmessage','rejectMessage','Sequelize','SELECT','internal','reject','rejectmessage','WhatsappAccount','WhatsappAccountId','WhatsppMessage,\x20%s,\x20%s,\x20%s','received\x20delivery\x20report\x20from','twilio','MessageSid','messageId','MessageStatus','WhatsappAccount,\x20%s,\x20%s,\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./whatsappMessage.socket','jayson/promise','client','http','request','then','info','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','WhatsappMessage,\x20%s,\x20%s','result','catch','sendStatus','end','status','offset','undefined','count'];(function(_0x4b2cc6,_0x29ef43){var _0x3e0b08=function(_0x3b4131){while(--_0x3b4131){_0x4b2cc6['push'](_0x4b2cc6['shift']());}};_0x3e0b08(++_0x29ef43);}(_0x587e,0xdf));var _0xe587=function(_0x27dc79,_0x23b277){_0x27dc79=_0x27dc79-0x0;var _0x96037c=_0x587e[_0x27dc79];return _0x96037c;};'use strict';var emlformat=require(_0xe587('0x0'));var rimraf=require(_0xe587('0x1'));var zipdir=require(_0xe587('0x2'));var jsonpatch=require(_0xe587('0x3'));var rp=require(_0xe587('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xe587('0x5'));var util=require('util');var path=require(_0xe587('0x6'));var sox=require(_0xe587('0x7'));var csv=require(_0xe587('0x8'));var ejs=require(_0xe587('0x9'));var fs=require('fs');var fs_extra=require(_0xe587('0xa'));var _=require(_0xe587('0xb'));var squel=require(_0xe587('0xc'));var crypto=require(_0xe587('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xe587('0xe'));var toCsv=require(_0xe587('0x8'));var querystring=require(_0xe587('0xf'));var Papa=require(_0xe587('0x10'));var Redis=require(_0xe587('0x11'));var authService=require(_0xe587('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xe587('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xe587('0x14'))('api');var utils=require(_0xe587('0x15'));var config=require(_0xe587('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xe587('0x17'))['db'];config[_0xe587('0x18')]=_[_0xe587('0x19')](config['redis'],{'host':_0xe587('0x1a'),'port':0x18eb});var socket=require(_0xe587('0x1b'))(new Redis(config[_0xe587('0x18')]));require(_0xe587('0x1c'))['register'](socket);var jayson=require(_0xe587('0x1d'));var client=jayson[_0xe587('0x1e')][_0xe587('0x1f')]({'port':0x232c});var client9002=jayson[_0xe587('0x1e')][_0xe587('0x1f')]({'port':0x232a});function respondWithRpcPromise(_0x5f438f,_0x29cec5,_0x5c9aab,_0x5d31e5){return new BPromise(function(_0x11cc6f,_0x2db4c5){var _0x455ca4=_0x5d31e5||client;return _0x455ca4[_0xe587('0x20')](_0x5f438f,_0x5c9aab)[_0xe587('0x21')](function(_0x277c86){logger[_0xe587('0x22')]('WhatsappMessage,\x20%s,\x20%s',_0x29cec5,'request\x20sent');logger[_0xe587('0x23')](_0xe587('0x24'),_0x29cec5,_0xe587('0x25'),JSON[_0xe587('0x26')](_0x277c86));if(_0x277c86[_0xe587('0x27')]){if(_0x277c86[_0xe587('0x27')][_0xe587('0x28')]===0x1f4){logger[_0xe587('0x27')]('WhatsappMessage,\x20%s,\x20%s',_0x29cec5,_0x277c86[_0xe587('0x27')][_0xe587('0x29')]);return _0x2db4c5(_0x277c86[_0xe587('0x27')][_0xe587('0x29')]);}logger['error']('WhatsappMessage,\x20%s,\x20%s',_0x29cec5,_0x277c86['error']['message']);return _0x11cc6f(_0x277c86[_0xe587('0x27')][_0xe587('0x29')]);}else{logger[_0xe587('0x22')](_0xe587('0x2a'),_0x29cec5,_0xe587('0x25'));_0x11cc6f(_0x277c86[_0xe587('0x2b')][_0xe587('0x29')]);}})[_0xe587('0x2c')](function(_0x3e237d){logger['error'](_0xe587('0x2a'),_0x29cec5,_0x3e237d);_0x2db4c5(_0x3e237d);});});}function respondWithStatusCode(_0x276487,_0x3e7cad){_0x3e7cad=_0x3e7cad||0xcc;return function(_0x2e1ac4){if(_0x2e1ac4){return _0x276487[_0xe587('0x2d')](_0x3e7cad);}return _0x276487['status'](_0x3e7cad)[_0xe587('0x2e')]();};}function respondWithResult(_0x242c7d,_0x439f3c){_0x439f3c=_0x439f3c||0xc8;return function(_0x3a2341){if(_0x3a2341){return _0x242c7d[_0xe587('0x2f')](_0x439f3c)['json'](_0x3a2341);}};}function respondWithFilteredResult(_0x5cf0d5,_0x4ce68a){return function(_0x2996dd){if(_0x2996dd){var _0x57d533=typeof _0x4ce68a[_0xe587('0x30')]===_0xe587('0x31')&&typeof _0x4ce68a['limit']==='undefined';var _0x245f59=_0x2996dd['count'];var _0x228f17=_0x57d533?0x0:_0x4ce68a[_0xe587('0x30')];var _0xa4b833=_0x57d533?_0x2996dd[_0xe587('0x32')]:_0x4ce68a[_0xe587('0x30')]+_0x4ce68a['limit'];var _0x933fa7;if(_0xa4b833>=_0x245f59){_0xa4b833=_0x245f59;_0x933fa7=0xc8;}else{_0x933fa7=0xce;}_0x5cf0d5[_0xe587('0x2f')](_0x933fa7);return _0x5cf0d5[_0xe587('0x33')]('Content-Range',_0x228f17+'-'+_0xa4b833+'/'+_0x245f59)['json'](_0x2996dd);}return null;};}function patchUpdates(_0x3dc5d8){return function(_0x2d6034){try{jsonpatch['apply'](_0x2d6034,_0x3dc5d8,!![]);}catch(_0x4eedd3){return BPromise['reject'](_0x4eedd3);}return _0x2d6034[_0xe587('0x34')]();};}function saveUpdates(_0x5969e7,_0x317f89){return function(_0x22a862){if(_0x22a862){return _0x22a862[_0xe587('0x35')](_0x5969e7)['then'](function(_0x31784b){return _0x31784b;});}return null;};}function removeEntity(_0x3f3706,_0x2bd806){return function(_0x5c3b77){if(_0x5c3b77){return _0x5c3b77[_0xe587('0x36')]()[_0xe587('0x21')](function(){_0x3f3706[_0xe587('0x2f')](0xcc)[_0xe587('0x2e')]();});}};}function handleEntityNotFound(_0x122620,_0x2e4006){return function(_0x175b1c){if(!_0x175b1c){_0x122620['sendStatus'](0x194);}return _0x175b1c;};}function handleError(_0x42741d,_0x3c4350){_0x3c4350=_0x3c4350||0x1f4;return function(_0x28e515){logger[_0xe587('0x27')](_0x28e515['stack']);if(_0x28e515['name']){delete _0x28e515[_0xe587('0x37')];}_0x42741d[_0xe587('0x2f')](_0x3c4350)[_0xe587('0x38')](_0x28e515);};}exports[_0xe587('0x39')]=function(_0xb225e2,_0x427aa2){var _0x5d0a42={},_0x336297={},_0x7b6185={'count':0x0,'rows':[]};var _0x28c389=_[_0xe587('0x3a')](db[_0xe587('0x3b')][_0xe587('0x3c')],function(_0x5d1982){return{'name':_0x5d1982['fieldName'],'type':_0x5d1982[_0xe587('0x3d')]['key']};});_0x336297[_0xe587('0x3e')]=_[_0xe587('0x3a')](_0x28c389,_0xe587('0x37'));_0x336297[_0xe587('0x3f')]=_[_0xe587('0x40')](_0xb225e2['query']);_0x336297[_0xe587('0x41')]=_[_0xe587('0x42')](_0x336297[_0xe587('0x3e')],_0x336297['query']);_0x5d0a42[_0xe587('0x43')]=_[_0xe587('0x42')](_0x336297[_0xe587('0x3e')],qs[_0xe587('0x44')](_0xb225e2['query']['fields']));_0x5d0a42['attributes']=_0x5d0a42[_0xe587('0x43')][_0xe587('0x45')]?_0x5d0a42[_0xe587('0x43')]:_0x336297['model'];if(!_0xb225e2[_0xe587('0x3f')]['hasOwnProperty'](_0xe587('0x46'))){_0x5d0a42[_0xe587('0x47')]=qs[_0xe587('0x47')](_0xb225e2['query'][_0xe587('0x47')]);_0x5d0a42[_0xe587('0x30')]=qs['offset'](_0xb225e2['query'][_0xe587('0x30')]);}_0x5d0a42[_0xe587('0x48')]=qs['sort'](_0xb225e2[_0xe587('0x3f')][_0xe587('0x49')]);_0x5d0a42['where']=qs[_0xe587('0x41')](_[_0xe587('0x4a')](_0xb225e2[_0xe587('0x3f')],_0x336297[_0xe587('0x41')]),_0x28c389);if(_0xb225e2[_0xe587('0x3f')]['filter']){_0x5d0a42[_0xe587('0x4b')]=_['merge'](_0x5d0a42[_0xe587('0x4b')],{'$or':_['map'](_0x28c389,function(_0x132ebe){if(_0x132ebe['type']!==_0xe587('0x4c')){var _0x20c3f6={};_0x20c3f6[_0x132ebe[_0xe587('0x37')]]={'$like':'%'+_0xb225e2[_0xe587('0x3f')]['filter']+'%'};return _0x20c3f6;}})});}_0x5d0a42=_[_0xe587('0x4d')]({},_0x5d0a42,_0xb225e2['options']);var _0x1a99d9={'where':_0x5d0a42[_0xe587('0x4b')]};return db[_0xe587('0x3b')][_0xe587('0x32')](_0x1a99d9)[_0xe587('0x21')](function(_0x2efca6){_0x7b6185[_0xe587('0x32')]=_0x2efca6;if(_0xb225e2[_0xe587('0x3f')][_0xe587('0x4e')]){_0x5d0a42[_0xe587('0x4f')]=[{'all':!![]}];}return db['WhatsappMessage'][_0xe587('0x50')](_0x5d0a42);})['then'](function(_0x35de1e){_0x7b6185[_0xe587('0x51')]=_0x35de1e;return _0x7b6185;})[_0xe587('0x21')](respondWithFilteredResult(_0x427aa2,_0x5d0a42))[_0xe587('0x2c')](handleError(_0x427aa2,null));};exports[_0xe587('0x52')]=function(_0x23028c,_0x673f4e){var _0x29bfd4={'raw':!![],'where':{'id':_0x23028c['params']['id']}},_0x212e99={};_0x212e99[_0xe587('0x3e')]=_[_0xe587('0x40')](db[_0xe587('0x3b')][_0xe587('0x3c')]);_0x212e99[_0xe587('0x3f')]=_[_0xe587('0x40')](_0x23028c[_0xe587('0x3f')]);_0x212e99[_0xe587('0x41')]=_[_0xe587('0x42')](_0x212e99['model'],_0x212e99['query']);_0x29bfd4[_0xe587('0x43')]=_[_0xe587('0x42')](_0x212e99['model'],qs[_0xe587('0x44')](_0x23028c[_0xe587('0x3f')][_0xe587('0x44')]));_0x29bfd4['attributes']=_0x29bfd4[_0xe587('0x43')][_0xe587('0x45')]?_0x29bfd4[_0xe587('0x43')]:_0x212e99[_0xe587('0x3e')];if(_0x23028c[_0xe587('0x3f')][_0xe587('0x4e')]){_0x29bfd4[_0xe587('0x4f')]=[{'all':!![]}];}_0x29bfd4=_[_0xe587('0x4d')]({},_0x29bfd4,_0x23028c[_0xe587('0x53')]);return db[_0xe587('0x3b')][_0xe587('0x54')](_0x29bfd4)[_0xe587('0x21')](handleEntityNotFound(_0x673f4e,null))[_0xe587('0x21')](respondWithResult(_0x673f4e,null))[_0xe587('0x2c')](handleError(_0x673f4e,null));};exports[_0xe587('0x55')]=function(_0xb41e1c,_0x275e5e){return db[_0xe587('0x3b')]['create'](_0xb41e1c[_0xe587('0x56')],{})['then'](respondWithResult(_0x275e5e,0xc9))['catch'](handleError(_0x275e5e,null));};exports[_0xe587('0x35')]=function(_0x4ed57b,_0x294808){if(_0x4ed57b[_0xe587('0x56')]['id']){delete _0x4ed57b[_0xe587('0x56')]['id'];}return db[_0xe587('0x3b')][_0xe587('0x54')]({'where':{'id':_0x4ed57b[_0xe587('0x57')]['id']}})[_0xe587('0x21')](handleEntityNotFound(_0x294808,null))[_0xe587('0x21')](saveUpdates(_0x4ed57b[_0xe587('0x56')],null))[_0xe587('0x21')](respondWithResult(_0x294808,null))[_0xe587('0x2c')](handleError(_0x294808,null));};exports[_0xe587('0x36')]=function(_0x5eab50,_0x1e008d){return db[_0xe587('0x3b')]['find']({'where':{'id':_0x5eab50[_0xe587('0x57')]['id']}})[_0xe587('0x21')](handleEntityNotFound(_0x1e008d,null))[_0xe587('0x21')](removeEntity(_0x1e008d,null))[_0xe587('0x2c')](handleError(_0x1e008d,null));};exports[_0xe587('0x58')]=function(_0x3ac7e9,_0x5b76fa){return db[_0xe587('0x3b')][_0xe587('0x58')]()[_0xe587('0x21')](respondWithResult(_0x5b76fa,null))[_0xe587('0x2c')](handleError(_0x5b76fa,null));};var interaction_log=require(_0xe587('0x14'))(_0xe587('0x59'));exports['accept']=function(_0x368d7f,_0x10f08f,_0xc56482){var _0x5c7450={'agent':{},'channel':_0xe587('0x5a')};if(_0x368d7f['body']['id']){delete _0x368d7f['body']['id'];}_0x368d7f[_0xe587('0x56')][_0xe587('0x5b')]=!![];_0x368d7f[_0xe587('0x56')][_0xe587('0x5c')]=moment()[_0xe587('0x5d')]('YYYY-MM-DD\x20HH:mm:ss');_0x368d7f['body'][_0xe587('0x5e')]=_0x368d7f['body'][_0xe587('0x5e')]||_0x368d7f[_0xe587('0x5f')]['id'];_0x5c7450['agent']['id']=_0x368d7f['body']['UserId'];return db[_0xe587('0x3b')][_0xe587('0x54')]({'where':{'id':_0x368d7f[_0xe587('0x57')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x10f08f,null))[_0xe587('0x21')](saveUpdates(_0x368d7f[_0xe587('0x56')],null))[_0xe587('0x21')](function(_0x47032b){if(_0x47032b){_0x5c7450['message']=_0x47032b[_0xe587('0x60')]({'plain':!![]});return db[_0xe587('0x61')][_0xe587('0x54')]({'where':{'id':_0x47032b[_0xe587('0x62')]}});}return null;})[_0xe587('0x21')](handleEntityNotFound(_0x10f08f,null))[_0xe587('0x21')](function(_0x3fc307){if(_0x3fc307){return _0x3fc307[_0xe587('0x35')]({'UserId':_0x368d7f[_0xe587('0x56')][_0xe587('0x5e')],'read1stAt':_[_0xe587('0x63')](_0x3fc307[_0xe587('0x64')])?moment()[_0xe587('0x5d')](_0xe587('0x65')):undefined});}return null;})[_0xe587('0x21')](function(_0x2d1ce0){if(_0x2d1ce0){_0x5c7450[_0xe587('0x66')]=_0x2d1ce0[_0xe587('0x60')]({'plain':!![]});interaction_log[_0xe587('0x22')](_0xe587('0x67'),_0x368d7f['user']['id'],_0x368d7f[_0xe587('0x5f')][_0xe587('0x37')],_0x368d7f[_0xe587('0x5f')][_0xe587('0x68')],_0x5c7450[_0xe587('0x66')]['id'],_0x368d7f['body']?JSON['stringify'](_0x368d7f[_0xe587('0x56')]):_0xe587('0x69'));return respondWithRpcPromise('AcceptMessage','acceptMessage',_0x5c7450);}return null;})[_0xe587('0x21')](function(_0x262181){var _0x3b71c5=_0xe587('0x6a')+_0x262181['message'][_0xe587('0x6b')];return db[_0xe587('0x6c')][_0xe587('0x3f')](_0x3b71c5,{'type':db['Sequelize'][_0xe587('0x6d')]['SELECT'],'raw':!![]})[_0xe587('0x21')](function(_0x299b95){return _0x299b95;});})[_0xe587('0x21')](function(_0x5afdf8){if(_0x5afdf8){_0x5c7450[_0xe587('0x29')][_0xe587('0x6e')]=_0x5afdf8[0x0];if(!_0x368d7f[_0xe587('0x56')]['UserId'])return;return db[_0xe587('0x6f')]['find']({'where':{'id':_0x368d7f[_0xe587('0x56')]['UserId'],'role':_0xe587('0x70')},'attributes':['id',_0xe587('0x37'),_0xe587('0x71'),'email','internal'],'raw':!![]});}return null;})['then'](function(_0x1050b4){if(!_0x1050b4)return null;_0x5c7450['message'][_0xe587('0x70')]=_0x1050b4;return _0x5c7450;})[_0xe587('0x21')](function(_0x5740b2){if(_0x5740b2){if(_0x368d7f[_0xe587('0x56')][_0xe587('0x72')]){_0x5c7450[_0xe587('0x29')][_0xe587('0x73')]=util[_0xe587('0x5d')](_0xe587('0x74'),_0x368d7f['user'][_0xe587('0x37')]);_0x5c7450[_0xe587('0x29')][_0xe587('0x75')]=_0x5c7450[_0xe587('0x75')];_0x5c7450[_0xe587('0x29')]['motionChannel']=_0x5c7450[_0xe587('0x75')];_0x5c7450[_0xe587('0x29')][_0xe587('0x76')]=_0xe587('0x77');return respondWithRpcPromise(_0xe587('0x78'),'EventManager',{'event':_0xe587('0x79'),'message':_0x5c7450[_0xe587('0x29')]},client9002)[_0xe587('0x21')](function(){return _0x5c7450;});}return _0x5c7450;}return null;})[_0xe587('0x21')](respondWithResult(_0x10f08f,null))[_0xe587('0x2c')](handleError(_0x10f08f,null));};var interaction_log=require(_0xe587('0x14'))(_0xe587('0x59'));exports['reject']=function(_0x5c7c44,_0xca0416,_0x460dfe){var _0x442e0f={'agent':{},'channel':'whatsapp'};if(_0x5c7c44['body']['id']){delete _0x5c7c44[_0xe587('0x56')]['id'];}_0x5c7c44[_0xe587('0x56')][_0xe587('0x5e')]=_0x5c7c44[_0xe587('0x56')][_0xe587('0x5e')]||_0x5c7c44[_0xe587('0x5f')]['id'];_0x442e0f['agent']['id']=_0x5c7c44[_0xe587('0x56')][_0xe587('0x5e')];return db[_0xe587('0x3b')][_0xe587('0x54')]({'where':{'id':_0x5c7c44[_0xe587('0x57')]['id'],'UserId':null}})[_0xe587('0x21')](handleEntityNotFound(_0xca0416,null))[_0xe587('0x21')](function(_0x26aa45){if(_0x26aa45){_0x442e0f[_0xe587('0x29')]=_0x26aa45[_0xe587('0x60')]({'plain':!![]});return db[_0xe587('0x61')]['find']({'where':{'id':_0x26aa45[_0xe587('0x62')]}});}return null;})['then'](handleEntityNotFound(_0xca0416,null))[_0xe587('0x21')](function(_0x1fb266){if(_0x1fb266){_0x442e0f['interaction']=_0x1fb266[_0xe587('0x60')]({'plain':!![]});interaction_log[_0xe587('0x22')]('[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x5c7c44[_0xe587('0x5f')]['id'],_0x5c7c44[_0xe587('0x5f')]['name'],_0x5c7c44[_0xe587('0x5f')][_0xe587('0x68')],_0x442e0f['interaction']['id'],_0x5c7c44[_0xe587('0x56')]?JSON[_0xe587('0x26')](_0x5c7c44[_0xe587('0x56')]):'null');return respondWithRpcPromise('RejectMessage',_0xe587('0x7a'),_0x442e0f);}return null;})['then'](function(_0x3923dc){var _0x74cc2c=_0xe587('0x6a')+_0x3923dc[_0xe587('0x29')]['ContactId'];return db['sequelize'][_0xe587('0x3f')](_0x74cc2c,{'type':db[_0xe587('0x7b')][_0xe587('0x6d')][_0xe587('0x7c')],'raw':!![]})['then'](function(_0xd9277c){return _0xd9277c;});})[_0xe587('0x21')](function(_0x44dfe1){if(_0x44dfe1){_0x442e0f[_0xe587('0x29')][_0xe587('0x6e')]=_0x44dfe1[0x0];if(!_0x5c7c44[_0xe587('0x56')][_0xe587('0x5e')])return;return db[_0xe587('0x6f')][_0xe587('0x54')]({'where':{'id':_0x5c7c44[_0xe587('0x56')][_0xe587('0x5e')],'role':'agent'},'attributes':['id',_0xe587('0x37'),'fullname','email',_0xe587('0x7d')],'raw':!![]});}return null;})[_0xe587('0x21')](function(_0x421241){if(!_0x421241)return null;_0x442e0f[_0xe587('0x29')]['agent']=_0x421241;return _0x442e0f;})[_0xe587('0x21')](function(_0x558224){if(_0x558224){_0x558224[_0xe587('0x29')]['interface']=util[_0xe587('0x5d')](_0xe587('0x74'),_0x5c7c44[_0xe587('0x5f')][_0xe587('0x37')]);_0x558224[_0xe587('0x29')][_0xe587('0x75')]=_0x442e0f['channel'];_0x558224['message']['motionChannel']=_0x442e0f[_0xe587('0x75')];_0x558224[_0xe587('0x29')][_0xe587('0x76')]=_0xe587('0x7e');respondWithRpcPromise(_0xe587('0x78'),_0xe587('0x78'),{'event':_0xe587('0x7f'),'message':_0x558224[_0xe587('0x29')]},client9002);return _0x442e0f;}return null;})[_0xe587('0x21')](respondWithResult(_0xca0416,null))[_0xe587('0x2c')](handleError(_0xca0416,null));};exports[_0xe587('0x2f')]=function(_0x57d48b,_0x18c555,_0x69e10e){if(_0x57d48b[_0xe587('0x56')]['id']){delete _0x57d48b[_0xe587('0x56')]['id'];}var _0x3fff6e;return db[_0xe587('0x3b')][_0xe587('0x54')]({'where':{'id':_0x57d48b[_0xe587('0x57')]['id']}})[_0xe587('0x21')](handleEntityNotFound(_0x18c555,null))['then'](function(_0x44ef07){if(_0x44ef07){_0x3fff6e=_0x44ef07;return db[_0xe587('0x80')][_0xe587('0x54')]({'where':{'id':_0x44ef07[_0xe587('0x81')]}});}})[_0xe587('0x21')](handleEntityNotFound(_0x18c555,null))['then'](function(_0x469539){if(_0x469539){logger['debug'](_0xe587('0x82'),_0xe587('0x2f'),_0xe587('0x83'),_0x469539[_0xe587('0x3d')],util['inspect'](_0x57d48b[_0xe587('0x56')],{'showHidden':![],'depth':null}));switch(_0x469539[_0xe587('0x3d')]){case _0xe587('0x84'):if(_0x57d48b[_0xe587('0x56')][_0xe587('0x85')]&&_0x57d48b[_0xe587('0x56')][_0xe587('0x85')]===_0x3fff6e[_0xe587('0x86')]&&_0x57d48b[_0xe587('0x56')][_0xe587('0x87')]&&_0x57d48b[_0xe587('0x56')][_0xe587('0x87')]==='read'){return _0x3fff6e[_0xe587('0x35')]({'read':!![]});}else{logger[_0xe587('0x27')](_0xe587('0x88'),_0xe587('0x2f'),'twilio',util['inspect'](_0x57d48b[_0xe587('0x56')],{'showHidden':![],'depth':null}));}break;}return _0x3fff6e;}})[_0xe587('0x21')](respondWithResult(_0x18c555,null))[_0xe587('0x2c')](handleError(_0x18c555,null));};
\ No newline at end of file
index caee8f6..c71c819 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6cb4=['update','remove','emit','hook','exports','events','../../mysqldb','WhatsappMessage','setMaxListeners','save'];(function(_0x36a87e,_0x2b4407){var _0x24749f=function(_0x532f26){while(--_0x532f26){_0x36a87e['push'](_0x36a87e['shift']());}};_0x24749f(++_0x2b4407);}(_0x6cb4,0xff));var _0x46cb=function(_0x195709,_0x3db14b){_0x195709=_0x195709-0x0;var _0x5008f8=_0x6cb4[_0x195709];return _0x5008f8;};'use strict';var EventEmitter=require(_0x46cb('0x0'));var WhatsappMessage=require(_0x46cb('0x1'))['db'][_0x46cb('0x2')];var WhatsappMessageEvents=new EventEmitter();WhatsappMessageEvents[_0x46cb('0x3')](0x0);var events={'afterCreate':_0x46cb('0x4'),'afterUpdate':_0x46cb('0x5'),'afterDestroy':_0x46cb('0x6')};function emitEvent(_0x786ab7){return function(_0x2efd19,_0x5032a4,_0x1a3fe4){WhatsappMessageEvents['emit'](_0x786ab7+':'+_0x2efd19['id'],_0x2efd19);WhatsappMessageEvents[_0x46cb('0x7')](_0x786ab7,_0x2efd19);_0x1a3fe4(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappMessage[_0x46cb('0x8')](e,emitEvent(event));}}module[_0x46cb('0x9')]=WhatsappMessageEvents;
\ No newline at end of file
+var _0x94df=['hasOwnProperty','hook','exports','events','../../mysqldb','WhatsappMessage','setMaxListeners','save','update','emit'];(function(_0x1d7037,_0x57dd95){var _0x4d6568=function(_0x5c64c5){while(--_0x5c64c5){_0x1d7037['push'](_0x1d7037['shift']());}};_0x4d6568(++_0x57dd95);}(_0x94df,0xa3));var _0xf94d=function(_0x57195b,_0x5c0d12){_0x57195b=_0x57195b-0x0;var _0x3d1453=_0x94df[_0x57195b];return _0x3d1453;};'use strict';var EventEmitter=require(_0xf94d('0x0'));var WhatsappMessage=require(_0xf94d('0x1'))['db'][_0xf94d('0x2')];var WhatsappMessageEvents=new EventEmitter();WhatsappMessageEvents[_0xf94d('0x3')](0x0);var events={'afterCreate':_0xf94d('0x4'),'afterUpdate':_0xf94d('0x5'),'afterDestroy':'remove'};function emitEvent(_0x468c7e){return function(_0x1ca087,_0x1aa1b1,_0x29b6fd){WhatsappMessageEvents[_0xf94d('0x6')](_0x468c7e+':'+_0x1ca087['id'],_0x1ca087);WhatsappMessageEvents[_0xf94d('0x6')](_0x468c7e,_0x1ca087);_0x29b6fd(null);};}for(var e in events){if(events[_0xf94d('0x7')](e)){var event=events[e];WhatsappMessage[_0xf94d('0x8')](e,emitEvent(event));}}module[_0xf94d('0x9')]=WhatsappMessageEvents;
\ No newline at end of file
index a23b5f1..6c62d5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf462=['message_id','err','WhatsappMessage,\x20%s','finally','utf8mb4','lodash','../../config/logger','api','bluebird','node-fetch','path','rimraf','../../config/environment','exports','define','WhatsappMessage','whatsapp_messages','messageId','fti_whatsapp_messages','FULLTEXT','get','direction','toLowerCase','out','isNil','UserId','WhatsappInteraction','findOne','WhatsappInteractionId','then','update','createdAt','catch','error','secret','WhatsappAccount','find','WhatsappAccountId','type','twilio','accountSid','authToken','create','whatsapp:','phone','remote','/api/whatsapp/messages/','/status?token=','token','WhatsappMessage,\x20%s,\x20%s,\x20%s','afterCreate','inspect','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','sinch','baseUrl','/whatsapp/v1/','/messages/','body','POST','statuses'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xf462,0xb9));var _0x2f46=function(_0x2ffc46,_0x35ce3c){_0x2ffc46=_0x2ffc46-0x0;var _0x1eda8f=_0xf462[_0x2ffc46];return _0x1eda8f;};'use strict';var _=require(_0x2f46('0x0'));var util=require('util');var logger=require(_0x2f46('0x1'))(_0x2f46('0x2'));var moment=require('moment');var BPromise=require(_0x2f46('0x3'));var rp=require('request-promise');var fetch=require(_0x2f46('0x4'));var fs=require('fs');var path=require(_0x2f46('0x5'));var rimraf=require(_0x2f46('0x6'));var config=require(_0x2f46('0x7'));var attributes=require('./whatsappMessage.attributes');module[_0x2f46('0x8')]=function(_0x11a386,_0x425fe5){return _0x11a386[_0x2f46('0x9')](_0x2f46('0xa'),attributes,{'tableName':_0x2f46('0xb'),'paranoid':![],'indexes':[{'name':_0x2f46('0xc'),'fields':[_0x2f46('0xc')]},{'name':_0x2f46('0xd'),'fields':['body'],'type':_0x2f46('0xe')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x18369a,_0x3d4bcf,_0x450be0){var _0x4663be=_0x11a386['models'];var _0x418d64=_0x18369a[_0x2f46('0xf')]({'plain':!![]});if(_0x418d64[_0x2f46('0x10')][_0x2f46('0x11')]()==='in'||_0x418d64['direction'][_0x2f46('0x11')]()===_0x2f46('0x12')&&!_0x418d64['secret']&&!_[_0x2f46('0x13')](_0x418d64[_0x2f46('0x14')])){_0x4663be[_0x2f46('0x15')][_0x2f46('0x16')]({'where':{'id':_0x418d64[_0x2f46('0x17')]}})[_0x2f46('0x18')](function(_0x5f8899){if(_0x5f8899){_0x5f8899[_0x2f46('0x19')]({'lastMsgAt':_0x418d64[_0x2f46('0x1a')],'lastMsgDirection':_0x418d64[_0x2f46('0x10')][_0x2f46('0x11')]()});}})[_0x2f46('0x1b')](function(_0x4974f6){console[_0x2f46('0x1c')](_0x4974f6);});}if(_0x418d64[_0x2f46('0x10')]===_0x2f46('0x12')&&!_0x418d64[_0x2f46('0x1d')]){var _0x1bd70a;_0x4663be[_0x2f46('0x1e')][_0x2f46('0x1f')]({'where':{'id':_0x418d64[_0x2f46('0x20')]},'raw':!![]})[_0x2f46('0x18')](function(_0xff1448){_0x1bd70a=_0xff1448;if(_0x1bd70a&&_0x1bd70a[_0x2f46('0x21')]){switch(_0x1bd70a[_0x2f46('0x21')]){case'twilio':var _0x28beec=require(_0x2f46('0x22'));if(_0x1bd70a[_0x2f46('0x23')]&&_0x1bd70a[_0x2f46('0x24')]&&_0x1bd70a['phone']){var _0x50c666=new _0x28beec(_0x1bd70a[_0x2f46('0x23')],_0x1bd70a[_0x2f46('0x24')]);_0x50c666['messages'][_0x2f46('0x25')]({'body':_0x418d64['body'],'to':_0x2f46('0x26')+_0x418d64[_0x2f46('0x27')],'from':_0x2f46('0x26')+_0x1bd70a['phone'],'statusCallback':_0x1bd70a[_0x2f46('0x28')]+_0x2f46('0x29')+_0x418d64['id']+_0x2f46('0x2a')+_0x1bd70a[_0x2f46('0x2b')]})[_0x2f46('0x18')](function(_0x22fbb6){if(_0x22fbb6['sid']){return _0x18369a[_0x2f46('0x19')]({'messageId':_0x22fbb6['sid']});}})[_0x2f46('0x1b')](function(_0x4009a9){logger['error'](_0x2f46('0x2c'),_0x2f46('0x2d'),_0x2f46('0x22'),util[_0x2f46('0x2e')](_0x4009a9,{'showHidden':![],'depth':null}));});}else{logger[_0x2f46('0x1c')](_0x2f46('0x2c'),'afterCreate',_0x2f46('0x22'),_0x2f46('0x2f'));}break;case _0x2f46('0x30'):var _0x53fa54=_0x1bd70a['accountSid'];var _0xbdf362=_0x1bd70a[_0x2f46('0x24')];var _0x2f4003=_0x1bd70a[_0x2f46('0x31')]+_0x2f46('0x32')+_0x53fa54+_0x2f46('0x33');var _0x27ea04={'to':[_0x418d64[_0x2f46('0x27')]],'message':{'type':'text','text':_0x418d64[_0x2f46('0x34')]}};var _0x28cd8f={'method':_0x2f46('0x35'),'uri':_0x2f4003,'headers':{'Authorization':'Bearer\x20'+_0xbdf362,'Content-Type':'application/json'},'body':_0x27ea04,'json':!![]};rp(_0x28cd8f)[_0x2f46('0x18')](function(_0x572c72){if(_0x572c72[_0x2f46('0x36')][0x0]['message_id']){return _0x18369a[_0x2f46('0x19')]({'messageId':_0x572c72[_0x2f46('0x36')][0x0][_0x2f46('0x37')]});}})[_0x2f46('0x1b')](function(_0x3c09c8){logger[_0x2f46('0x38')](_0x2f46('0x39'),_0x3c09c8);});break;}}})[_0x2f46('0x3a')](function(){_0x450be0();});}else{_0x450be0();}}},'charset':_0x2f46('0x3b'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x3967=['./whatsappMessage.attributes','exports','define','WhatsappMessage','messageId','fti_whatsapp_messages','body','models','direction','toLowerCase','out','secret','isNil','UserId','WhatsappInteraction','WhatsappInteractionId','then','createdAt','catch','WhatsappAccount','WhatsappAccountId','type','twilio','accountSid','authToken','phone','create','whatsapp:','remote','/api/whatsapp/messages/','token','update','sid','afterCreate','inspect','error','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','sinch','text','POST','Bearer\x20','application/json','statuses','message_id','err','WhatsappMessage,\x20%s','finally','utf8mb4','api','moment','bluebird','node-fetch','path','rimraf','../../config/environment'];(function(_0x6fffa8,_0x49519b){var _0xceb4ca=function(_0x477370){while(--_0x477370){_0x6fffa8['push'](_0x6fffa8['shift']());}};_0xceb4ca(++_0x49519b);}(_0x3967,0x9e));var _0x7396=function(_0x2272b5,_0x362458){_0x2272b5=_0x2272b5-0x0;var _0x110156=_0x3967[_0x2272b5];return _0x110156;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x7396('0x0'));var moment=require(_0x7396('0x1'));var BPromise=require(_0x7396('0x2'));var rp=require('request-promise');var fetch=require(_0x7396('0x3'));var fs=require('fs');var path=require(_0x7396('0x4'));var rimraf=require(_0x7396('0x5'));var config=require(_0x7396('0x6'));var attributes=require(_0x7396('0x7'));module[_0x7396('0x8')]=function(_0x833745,_0x3df5cc){return _0x833745[_0x7396('0x9')](_0x7396('0xa'),attributes,{'tableName':'whatsapp_messages','paranoid':![],'indexes':[{'name':'messageId','fields':[_0x7396('0xb')]},{'name':_0x7396('0xc'),'fields':[_0x7396('0xd')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x4fe54b,_0x4b51fa,_0x40c447){var _0x3d0d6d=_0x833745[_0x7396('0xe')];var _0x4660a1=_0x4fe54b['get']({'plain':!![]});if(_0x4660a1[_0x7396('0xf')]['toLowerCase']()==='in'||_0x4660a1['direction'][_0x7396('0x10')]()===_0x7396('0x11')&&!_0x4660a1[_0x7396('0x12')]&&!_[_0x7396('0x13')](_0x4660a1[_0x7396('0x14')])){_0x3d0d6d[_0x7396('0x15')]['findOne']({'where':{'id':_0x4660a1[_0x7396('0x16')]}})[_0x7396('0x17')](function(_0x330796){if(_0x330796){_0x330796['update']({'lastMsgAt':_0x4660a1[_0x7396('0x18')],'lastMsgDirection':_0x4660a1[_0x7396('0xf')][_0x7396('0x10')]()});}})[_0x7396('0x19')](function(_0x5a5621){console['error'](_0x5a5621);});}if(_0x4660a1[_0x7396('0xf')]==='out'&&!_0x4660a1[_0x7396('0x12')]){var _0x20be85;_0x3d0d6d[_0x7396('0x1a')]['find']({'where':{'id':_0x4660a1[_0x7396('0x1b')]},'raw':!![]})[_0x7396('0x17')](function(_0xd8693){_0x20be85=_0xd8693;if(_0x20be85&&_0x20be85[_0x7396('0x1c')]){switch(_0x20be85[_0x7396('0x1c')]){case _0x7396('0x1d'):var _0x33e812=require(_0x7396('0x1d'));if(_0x20be85[_0x7396('0x1e')]&&_0x20be85[_0x7396('0x1f')]&&_0x20be85[_0x7396('0x20')]){var _0x31d608=new _0x33e812(_0x20be85[_0x7396('0x1e')],_0x20be85[_0x7396('0x1f')]);_0x31d608['messages'][_0x7396('0x21')]({'body':_0x4660a1[_0x7396('0xd')],'to':'whatsapp:'+_0x4660a1[_0x7396('0x20')],'from':_0x7396('0x22')+_0x20be85['phone'],'statusCallback':_0x20be85[_0x7396('0x23')]+_0x7396('0x24')+_0x4660a1['id']+'/status?token='+_0x20be85[_0x7396('0x25')]})[_0x7396('0x17')](function(_0x24c83d){if(_0x24c83d['sid']){return _0x4fe54b[_0x7396('0x26')]({'messageId':_0x24c83d[_0x7396('0x27')]});}})[_0x7396('0x19')](function(_0x173089){logger['error']('WhatsappMessage,\x20%s,\x20%s,\x20%s',_0x7396('0x28'),_0x7396('0x1d'),util[_0x7396('0x29')](_0x173089,{'showHidden':![],'depth':null}));});}else{logger[_0x7396('0x2a')]('WhatsappMessage,\x20%s,\x20%s,\x20%s',_0x7396('0x28'),_0x7396('0x1d'),_0x7396('0x2b'));}break;case _0x7396('0x2c'):var _0x161b0c=_0x20be85['accountSid'];var _0x4d93d9=_0x20be85[_0x7396('0x1f')];var _0x3e3386=_0x20be85['baseUrl']+'/whatsapp/v1/'+_0x161b0c+'/messages/';var _0xe6f6a5={'to':[_0x4660a1[_0x7396('0x20')]],'message':{'type':_0x7396('0x2d'),'text':_0x4660a1[_0x7396('0xd')]}};var _0x307232={'method':_0x7396('0x2e'),'uri':_0x3e3386,'headers':{'Authorization':_0x7396('0x2f')+_0x4d93d9,'Content-Type':_0x7396('0x30')},'body':_0xe6f6a5,'json':!![]};rp(_0x307232)[_0x7396('0x17')](function(_0x5e5569){if(_0x5e5569[_0x7396('0x31')][0x0][_0x7396('0x32')]){return _0x4fe54b[_0x7396('0x26')]({'messageId':_0x5e5569[_0x7396('0x31')][0x0][_0x7396('0x32')]});}})['catch'](function(_0x362109){logger[_0x7396('0x33')](_0x7396('0x34'),_0x362109);});break;}}})[_0x7396('0x35')](function(){_0x40c447();});}else{_0x40c447();}}},'charset':_0x7396('0x36'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index f8685cd..0419cd2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdf59=['register','request','then','info','WhatsappMessage,\x20%s,\x20%s','request\x20sent','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','error','message','result','catch','CreateWhatsappMessage','WhatsappMessage','create','body','options','raw','stringify','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./whatsappMessage.socket'];(function(_0x5624b4,_0x331827){var _0x5be5dc=function(_0x3d4315){while(--_0x3d4315){_0x5624b4['push'](_0x5624b4['shift']());}};_0x5be5dc(++_0x331827);}(_0xdf59,0x9f));var _0x9df5=function(_0x418474,_0x153d88){_0x418474=_0x418474-0x0;var _0xdb4685=_0xdf59[_0x418474];return _0xdb4685;};'use strict';var _=require(_0x9df5('0x0'));var util=require(_0x9df5('0x1'));var moment=require(_0x9df5('0x2'));var BPromise=require('bluebird');var rs=require(_0x9df5('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9df5('0x4'))['db'];var utils=require(_0x9df5('0x5'));var logger=require('../../config/logger')(_0x9df5('0x6'));var config=require(_0x9df5('0x7'));var jayson=require(_0x9df5('0x8'));var client=jayson[_0x9df5('0x9')][_0x9df5('0xa')]({'port':0x232a});config[_0x9df5('0xb')]=_[_0x9df5('0xc')](config[_0x9df5('0xb')],{'host':_0x9df5('0xd'),'port':0x18eb});var socket=require(_0x9df5('0xe'))(new Redis(config[_0x9df5('0xb')]));require(_0x9df5('0xf'))[_0x9df5('0x10')](socket);function respondWithRpcPromise(_0x148d30,_0x121f0d,_0x3cb16b){return new BPromise(function(_0x46d1a0,_0x3f218f){return client[_0x9df5('0x11')](_0x148d30,_0x3cb16b)[_0x9df5('0x12')](function(_0x3fc407){logger[_0x9df5('0x13')](_0x9df5('0x14'),_0x121f0d,_0x9df5('0x15'));logger[_0x9df5('0x16')](_0x9df5('0x17'),_0x121f0d,_0x9df5('0x15'),JSON['stringify'](_0x3fc407));if(_0x3fc407[_0x9df5('0x18')]){if(_0x3fc407[_0x9df5('0x18')]['code']===0x1f4){logger[_0x9df5('0x18')](_0x9df5('0x14'),_0x121f0d,_0x3fc407[_0x9df5('0x18')][_0x9df5('0x19')]);return _0x3f218f(_0x3fc407['error']['message']);}logger[_0x9df5('0x18')](_0x9df5('0x14'),_0x121f0d,_0x3fc407['error'][_0x9df5('0x19')]);return _0x46d1a0(_0x3fc407['error'][_0x9df5('0x19')]);}else{logger[_0x9df5('0x13')](_0x9df5('0x14'),_0x121f0d,'request\x20sent');_0x46d1a0(_0x3fc407[_0x9df5('0x1a')][_0x9df5('0x19')]);}})[_0x9df5('0x1b')](function(_0x46b5ef){logger['error']('WhatsappMessage,\x20%s,\x20%s',_0x121f0d,_0x46b5ef);_0x3f218f(_0x46b5ef);});});}exports[_0x9df5('0x1c')]=function(_0x3eafed){var _0x104308=this;return new Promise(function(_0x14ab2a,_0x57fb5b){return db[_0x9df5('0x1d')][_0x9df5('0x1e')](_0x3eafed[_0x9df5('0x1f')],{'raw':_0x3eafed[_0x9df5('0x20')]?_0x3eafed[_0x9df5('0x20')][_0x9df5('0x21')]===undefined?!![]:![]:!![]})[_0x9df5('0x12')](function(_0x2f1770){logger['info']('CreateWhatsappMessage',_0x3eafed);logger[_0x9df5('0x16')]('CreateWhatsappMessage',_0x3eafed,JSON[_0x9df5('0x22')](_0x2f1770));_0x14ab2a(_0x2f1770);})[_0x9df5('0x1b')](function(_0x47b2e4){logger[_0x9df5('0x18')](_0x9df5('0x1c'),_0x47b2e4[_0x9df5('0x19')],_0x3eafed);_0x57fb5b(_0x104308[_0x9df5('0x18')](0x1f4,_0x47b2e4[_0x9df5('0x19')]));});});};
\ No newline at end of file
+var _0xfd1c=['CreateWhatsappMessage','WhatsappMessage','create','body','options','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','./whatsappMessage.socket','register','request','then','info','request\x20sent','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','WhatsappMessage,\x20%s,\x20%s','message','result','catch'];(function(_0xd27ded,_0x1164e2){var _0x5ef850=function(_0x582e7d){while(--_0x582e7d){_0xd27ded['push'](_0xd27ded['shift']());}};_0x5ef850(++_0x1164e2);}(_0xfd1c,0x159));var _0xcfd1=function(_0x1d70db,_0x142b63){_0x1d70db=_0x1d70db-0x0;var _0x3060c6=_0xfd1c[_0x1d70db];return _0x3060c6;};'use strict';var _=require(_0xcfd1('0x0'));var util=require('util');var moment=require(_0xcfd1('0x1'));var BPromise=require('bluebird');var rs=require(_0xcfd1('0x2'));var fs=require('fs');var Redis=require(_0xcfd1('0x3'));var db=require(_0xcfd1('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xcfd1('0x5'))(_0xcfd1('0x6'));var config=require(_0xcfd1('0x7'));var jayson=require(_0xcfd1('0x8'));var client=jayson[_0xcfd1('0x9')][_0xcfd1('0xa')]({'port':0x232a});config[_0xcfd1('0xb')]=_[_0xcfd1('0xc')](config[_0xcfd1('0xb')],{'host':_0xcfd1('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xcfd1('0xe'))[_0xcfd1('0xf')](socket);function respondWithRpcPromise(_0x5b09a8,_0x55c2ec,_0x4958e6){return new BPromise(function(_0x34265e,_0x3e01a1){return client[_0xcfd1('0x10')](_0x5b09a8,_0x4958e6)[_0xcfd1('0x11')](function(_0x5e57de){logger[_0xcfd1('0x12')]('WhatsappMessage,\x20%s,\x20%s',_0x55c2ec,_0xcfd1('0x13'));logger[_0xcfd1('0x14')](_0xcfd1('0x15'),_0x55c2ec,_0xcfd1('0x13'),JSON[_0xcfd1('0x16')](_0x5e57de));if(_0x5e57de['error']){if(_0x5e57de[_0xcfd1('0x17')][_0xcfd1('0x18')]===0x1f4){logger[_0xcfd1('0x17')](_0xcfd1('0x19'),_0x55c2ec,_0x5e57de[_0xcfd1('0x17')]['message']);return _0x3e01a1(_0x5e57de[_0xcfd1('0x17')][_0xcfd1('0x1a')]);}logger[_0xcfd1('0x17')](_0xcfd1('0x19'),_0x55c2ec,_0x5e57de[_0xcfd1('0x17')]['message']);return _0x34265e(_0x5e57de[_0xcfd1('0x17')][_0xcfd1('0x1a')]);}else{logger[_0xcfd1('0x12')](_0xcfd1('0x19'),_0x55c2ec,_0xcfd1('0x13'));_0x34265e(_0x5e57de[_0xcfd1('0x1b')][_0xcfd1('0x1a')]);}})[_0xcfd1('0x1c')](function(_0xbe55f6){logger[_0xcfd1('0x17')](_0xcfd1('0x19'),_0x55c2ec,_0xbe55f6);_0x3e01a1(_0xbe55f6);});});}exports[_0xcfd1('0x1d')]=function(_0x193d85){var _0x1cffc9=this;return new Promise(function(_0x8af0cc,_0xc83235){return db[_0xcfd1('0x1e')][_0xcfd1('0x1f')](_0x193d85[_0xcfd1('0x20')],{'raw':_0x193d85[_0xcfd1('0x21')]?_0x193d85[_0xcfd1('0x21')]['raw']===undefined?!![]:![]:!![]})[_0xcfd1('0x11')](function(_0x29498d){logger['info'](_0xcfd1('0x1d'),_0x193d85);logger[_0xcfd1('0x14')](_0xcfd1('0x1d'),_0x193d85,JSON[_0xcfd1('0x16')](_0x29498d));_0x8af0cc(_0x29498d);})[_0xcfd1('0x1c')](function(_0x1a19d3){logger[_0xcfd1('0x17')]('CreateWhatsappMessage',_0x1a19d3[_0xcfd1('0x1a')],_0x193d85);_0xc83235(_0x1cffc9['error'](0x1f4,_0x1a19d3[_0xcfd1('0x1a')]));});});};
\ No newline at end of file
index 2efab68..f22869b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc96f=['removeListener','whatsappMessage:','./whatsappMessage.events','save','remove'];(function(_0x1037a6,_0x3667ce){var _0x589c1c=function(_0x35811e){while(--_0x35811e){_0x1037a6['push'](_0x1037a6['shift']());}};_0x589c1c(++_0x3667ce);}(_0xc96f,0x17e));var _0xfc96=function(_0x7105e,_0x2e0ade){_0x7105e=_0x7105e-0x0;var _0x167962=_0xc96f[_0x7105e];return _0x167962;};'use strict';var WhatsappMessageEvents=require(_0xfc96('0x0'));var events=[_0xfc96('0x1'),_0xfc96('0x2'),'update'];function createListener(_0x5808ef,_0x10a7a0){return function(_0x489bf8){_0x10a7a0['emit'](_0x5808ef,_0x489bf8);};}function removeListener(_0xfaa62a,_0x3fe383){return function(){WhatsappMessageEvents[_0xfc96('0x3')](_0xfaa62a,_0x3fe383);};}exports['register']=function(_0x488e1c){for(var _0x1e7eaa=0x0,_0x206089=events['length'];_0x1e7eaa<_0x206089;_0x1e7eaa++){var _0x3dfecc=events[_0x1e7eaa];var _0xdf98bd=createListener(_0xfc96('0x4')+_0x3dfecc,_0x488e1c);WhatsappMessageEvents['on'](_0x3dfecc,_0xdf98bd);}};
\ No newline at end of file
+var _0xa7fd=['length','whatsappMessage:','./whatsappMessage.events','save','remove','update','emit','removeListener','register'];(function(_0x442aa3,_0x205924){var _0x528db6=function(_0x547195){while(--_0x547195){_0x442aa3['push'](_0x442aa3['shift']());}};_0x528db6(++_0x205924);}(_0xa7fd,0x14f));var _0xda7f=function(_0x200950,_0x2cfe54){_0x200950=_0x200950-0x0;var _0x5549b0=_0xa7fd[_0x200950];return _0x5549b0;};'use strict';var WhatsappMessageEvents=require(_0xda7f('0x0'));var events=[_0xda7f('0x1'),_0xda7f('0x2'),_0xda7f('0x3')];function createListener(_0x1ac3d9,_0x4d2d8b){return function(_0xd29b98){_0x4d2d8b[_0xda7f('0x4')](_0x1ac3d9,_0xd29b98);};}function removeListener(_0x28a020,_0x24aa50){return function(){WhatsappMessageEvents[_0xda7f('0x5')](_0x28a020,_0x24aa50);};}exports[_0xda7f('0x6')]=function(_0x240e3c){for(var _0x198a26=0x0,_0x112ae6=events[_0xda7f('0x7')];_0x198a26<_0x112ae6;_0x198a26++){var _0x11ec5c=events[_0x198a26];var _0xcfad43=createListener(_0xda7f('0x8')+_0x11ec5c,_0x240e3c);WhatsappMessageEvents['on'](_0x11ec5c,_0xcfad43);}};
\ No newline at end of file
index 0d9ab71..70e820c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d9a=['getTeams','/:id/users','getAgents','post','create','addAgents','put','/:id','delete','removeTeams','removeAgents','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','describe','show','/:id/members','/:id/teams'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x3d9a,0x11a));var _0xa3d9=function(_0x1d59d,_0x53eba5){_0x1d59d=_0x1d59d-0x0;var _0x5b5036=_0x3d9a[_0x1d59d];return _0x5b5036;};'use strict';var multer=require(_0xa3d9('0x0'));var util=require(_0xa3d9('0x1'));var path=require('path');var timeout=require(_0xa3d9('0x2'));var express=require(_0xa3d9('0x3'));var router=express[_0xa3d9('0x4')]();var fs_extra=require(_0xa3d9('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xa3d9('0x6'));var config=require(_0xa3d9('0x7'));var controller=require('./whatsappQueue.controller');router[_0xa3d9('0x8')]('/',auth[_0xa3d9('0x9')](),controller[_0xa3d9('0xa')]);router[_0xa3d9('0x8')]('/describe',auth[_0xa3d9('0x9')](),controller[_0xa3d9('0xb')]);router['get']('/:id',auth[_0xa3d9('0x9')](),controller[_0xa3d9('0xc')]);router[_0xa3d9('0x8')](_0xa3d9('0xd'),auth[_0xa3d9('0x9')](),controller['getMembers']);router[_0xa3d9('0x8')](_0xa3d9('0xe'),auth[_0xa3d9('0x9')](),controller[_0xa3d9('0xf')]);router[_0xa3d9('0x8')](_0xa3d9('0x10'),auth[_0xa3d9('0x9')](),controller[_0xa3d9('0x11')]);router[_0xa3d9('0x12')]('/',auth[_0xa3d9('0x9')](),controller[_0xa3d9('0x13')]);router[_0xa3d9('0x12')]('/:id/teams',auth[_0xa3d9('0x9')](),controller['addTeams']);router[_0xa3d9('0x12')]('/:id/users',auth[_0xa3d9('0x9')](),controller[_0xa3d9('0x14')]);router[_0xa3d9('0x15')](_0xa3d9('0x16'),auth[_0xa3d9('0x9')](),controller['update']);router[_0xa3d9('0x17')]('/:id',auth[_0xa3d9('0x9')](),controller['destroy']);router['delete']('/:id/teams',auth[_0xa3d9('0x9')](),controller[_0xa3d9('0x18')]);router['delete'](_0xa3d9('0x10'),auth[_0xa3d9('0x9')](),controller[_0xa3d9('0x19')]);module[_0xa3d9('0x1a')]=router;
\ No newline at end of file
+var _0x1759=['post','/:id/teams','addTeams','addAgents','put','delete','destroy','removeTeams','removeAgents','exports','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./whatsappQueue.controller','get','isAuthenticated','index','describe','/:id','/:id/members','getTeams','/:id/users','getAgents'];(function(_0x1423d4,_0x17ad6f){var _0x27415a=function(_0x4df1d3){while(--_0x4df1d3){_0x1423d4['push'](_0x1423d4['shift']());}};_0x27415a(++_0x17ad6f);}(_0x1759,0xfd));var _0x9175=function(_0x594670,_0x4b9fdd){_0x594670=_0x594670-0x0;var _0x36a5b7=_0x1759[_0x594670];return _0x36a5b7;};'use strict';var multer=require('multer');var util=require(_0x9175('0x0'));var path=require('path');var timeout=require(_0x9175('0x1'));var express=require(_0x9175('0x2'));var router=express[_0x9175('0x3')]();var fs_extra=require(_0x9175('0x4'));var auth=require(_0x9175('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x9175('0x6'));var controller=require(_0x9175('0x7'));router[_0x9175('0x8')]('/',auth[_0x9175('0x9')](),controller[_0x9175('0xa')]);router[_0x9175('0x8')]('/describe',auth[_0x9175('0x9')](),controller[_0x9175('0xb')]);router['get'](_0x9175('0xc'),auth[_0x9175('0x9')](),controller['show']);router['get'](_0x9175('0xd'),auth['isAuthenticated'](),controller['getMembers']);router[_0x9175('0x8')]('/:id/teams',auth[_0x9175('0x9')](),controller[_0x9175('0xe')]);router[_0x9175('0x8')](_0x9175('0xf'),auth['isAuthenticated'](),controller[_0x9175('0x10')]);router[_0x9175('0x11')]('/',auth['isAuthenticated'](),controller['create']);router[_0x9175('0x11')](_0x9175('0x12'),auth[_0x9175('0x9')](),controller[_0x9175('0x13')]);router['post'](_0x9175('0xf'),auth['isAuthenticated'](),controller[_0x9175('0x14')]);router[_0x9175('0x15')](_0x9175('0xc'),auth[_0x9175('0x9')](),controller['update']);router[_0x9175('0x16')](_0x9175('0xc'),auth['isAuthenticated'](),controller[_0x9175('0x17')]);router['delete'](_0x9175('0x12'),auth[_0x9175('0x9')](),controller[_0x9175('0x18')]);router[_0x9175('0x16')]('/:id/users',auth[_0x9175('0x9')](),controller[_0x9175('0x19')]);module[_0x9175('0x1a')]=router;
\ No newline at end of file
index 7ea5c40..e23bd27 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9879=['exports','STRING','name','INTEGER','ENUM','rrmemory','beepall','roundrobin'];(function(_0xd3e43a,_0x1f1bd8){var _0x20f3e9=function(_0x392c6d){while(--_0x392c6d){_0xd3e43a['push'](_0xd3e43a['shift']());}};_0x20f3e9(++_0x1f1bd8);}(_0x9879,0x98));var _0x9987=function(_0x40bd2f,_0x4bf10d){_0x40bd2f=_0x40bd2f-0x0;var _0x2f4be4=_0x9879[_0x40bd2f];return _0x2f4be4;};'use strict';var Sequelize=require('sequelize');module[_0x9987('0x0')]={'name':{'type':Sequelize[_0x9987('0x1')],'unique':_0x9987('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'timeout':{'type':Sequelize[_0x9987('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x9987('0x4')](_0x9987('0x5'),_0x9987('0x6'),_0x9987('0x7'))},'description':{'type':Sequelize[_0x9987('0x1')]}};
\ No newline at end of file
+var _0xa588=['roundrobin','exports','STRING','name','INTEGER','ENUM','rrmemory','beepall'];(function(_0x583a4d,_0x140183){var _0x5df0be=function(_0x12f8ef){while(--_0x12f8ef){_0x583a4d['push'](_0x583a4d['shift']());}};_0x5df0be(++_0x140183);}(_0xa588,0xe1));var _0x8a58=function(_0x55dd18,_0xdb250){_0x55dd18=_0x55dd18-0x0;var _0x1b48fd=_0xa588[_0x55dd18];return _0x1b48fd;};'use strict';var Sequelize=require('sequelize');module[_0x8a58('0x0')]={'name':{'type':Sequelize[_0x8a58('0x1')],'unique':_0x8a58('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'timeout':{'type':Sequelize[_0x8a58('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x8a58('0x4')](_0x8a58('0x5'),_0x8a58('0x6'),_0x8a58('0x7'))},'description':{'type':Sequelize[_0x8a58('0x1')]}};
\ No newline at end of file
index d1b0ee9..f75d534 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ba1=['ejs','fs-extra','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./whatsappQueue.socket','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','get','WhatsappQueues','UserProfileResource','destroy','stack','name','send','index','WhatsappQueue','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','map','VIRTUAL','include','findAll','rows','show','params','includeAll','options','find','catch','create','body','user','userProfileId','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','UserWhatsappQueue','nolimit','WhatsappQueueId','User','agent','whatsappPause','updatedAt','createdAt','format','%s/%s','SIP','findOne','Team','getTeams','addTeams','Agents','online','interface','flatMap','transaction','findOrCreate','forEach','emit','userWhatsappQueue:save','ids','select','field','from','team_has_whatsapp_queues','join','ut.TeamId\x20=\x20tq.TeamId','WhatsappQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','sequelize','toString','TeamId','includes','all','union','compact','removeTeams','isEmpty','removeAgents','userWhatsappQueue:remove','addAgents','omit','spread','isArray','getAgents','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv'];(function(_0x13ce01,_0x576bb1){var _0x306c53=function(_0x533eb0){while(--_0x533eb0){_0x13ce01['push'](_0x13ce01['shift']());}};_0x306c53(++_0x576bb1);}(_0x4ba1,0x19e));var _0x14ba=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x4ba1[_0x3bf83f];return _0x22c4a9;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x14ba('0x0'));var zipdir=require(_0x14ba('0x1'));var jsonpatch=require(_0x14ba('0x2'));var rp=require(_0x14ba('0x3'));var moment=require(_0x14ba('0x4'));var BPromise=require(_0x14ba('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x14ba('0x6'));var sox=require(_0x14ba('0x7'));var csv=require(_0x14ba('0x8'));var ejs=require(_0x14ba('0x9'));var fs=require('fs');var fs_extra=require(_0x14ba('0xa'));var _=require('lodash');var squel=require(_0x14ba('0xb'));var crypto=require('crypto');var jsforce=require(_0x14ba('0xc'));var deskjs=require(_0x14ba('0xd'));var toCsv=require(_0x14ba('0x8'));var querystring=require(_0x14ba('0xe'));var Papa=require(_0x14ba('0xf'));var Redis=require(_0x14ba('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x14ba('0x11'));var as=require(_0x14ba('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x14ba('0x13'))(_0x14ba('0x14'));var utils=require(_0x14ba('0x15'));var config=require(_0x14ba('0x16'));var licenseUtil=require(_0x14ba('0x17'));var db=require(_0x14ba('0x18'))['db'];config[_0x14ba('0x19')]=_[_0x14ba('0x1a')](config[_0x14ba('0x19')],{'host':_0x14ba('0x1b'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x14ba('0x1c'))['register'](socket);function respondWithStatusCode(_0x26eaae,_0x387da1){_0x387da1=_0x387da1||0xcc;return function(_0x311e57){if(_0x311e57){return _0x26eaae[_0x14ba('0x1d')](_0x387da1);}return _0x26eaae[_0x14ba('0x1e')](_0x387da1)[_0x14ba('0x1f')]();};}function respondWithResult(_0x222075,_0x4b2a82){_0x4b2a82=_0x4b2a82||0xc8;return function(_0x1f1970){if(_0x1f1970){return _0x222075[_0x14ba('0x1e')](_0x4b2a82)[_0x14ba('0x20')](_0x1f1970);}};}function respondWithFilteredResult(_0x19f2ed,_0x259884){return function(_0x502a02){if(_0x502a02){var _0x2c858d=typeof _0x259884[_0x14ba('0x21')]===_0x14ba('0x22')&&typeof _0x259884[_0x14ba('0x23')]===_0x14ba('0x22');var _0x168d59=_0x502a02[_0x14ba('0x24')];var _0x300f48=_0x2c858d?0x0:_0x259884['offset'];var _0x33dcb8=_0x2c858d?_0x502a02[_0x14ba('0x24')]:_0x259884[_0x14ba('0x21')]+_0x259884['limit'];var _0x431620;if(_0x33dcb8>=_0x168d59){_0x33dcb8=_0x168d59;_0x431620=0xc8;}else{_0x431620=0xce;}_0x19f2ed[_0x14ba('0x1e')](_0x431620);return _0x19f2ed[_0x14ba('0x25')](_0x14ba('0x26'),_0x300f48+'-'+_0x33dcb8+'/'+_0x168d59)[_0x14ba('0x20')](_0x502a02);}return null;};}function patchUpdates(_0x422af2){return function(_0x2c2ed1){try{jsonpatch['apply'](_0x2c2ed1,_0x422af2,!![]);}catch(_0x190e29){return BPromise[_0x14ba('0x27')](_0x190e29);}return _0x2c2ed1[_0x14ba('0x28')]();};}function saveUpdates(_0x4f6e6b,_0x20e165){return function(_0x5d4e84){if(_0x5d4e84){return _0x5d4e84[_0x14ba('0x29')](_0x4f6e6b)[_0x14ba('0x2a')](function(_0x3830b8){return _0x3830b8;});}return null;};}function removeEntity(_0x17be86,_0x304840){return function(_0x5a8b5f){if(_0x5a8b5f){return _0x5a8b5f['destroy']()['then'](function(){var _0x4277d5=_0x5a8b5f[_0x14ba('0x2b')]({'plain':!![]});var _0x34d409=_0x14ba('0x2c');return db[_0x14ba('0x2d')][_0x14ba('0x2e')]({'where':{'type':_0x34d409,'resourceId':_0x4277d5['id']}})[_0x14ba('0x2a')](function(){return _0x5a8b5f;});})[_0x14ba('0x2a')](function(){_0x17be86[_0x14ba('0x1e')](0xcc)[_0x14ba('0x1f')]();});}};}function handleEntityNotFound(_0x3765ba,_0x42b30c){return function(_0x567a1b){if(!_0x567a1b){_0x3765ba['sendStatus'](0x194);}return _0x567a1b;};}function handleError(_0x24ec85,_0x4e70ca){_0x4e70ca=_0x4e70ca||0x1f4;return function(_0x34ab6a){logger['error'](_0x34ab6a[_0x14ba('0x2f')]);if(_0x34ab6a[_0x14ba('0x30')]){delete _0x34ab6a[_0x14ba('0x30')];}_0x24ec85[_0x14ba('0x1e')](_0x4e70ca)[_0x14ba('0x31')](_0x34ab6a);};}exports[_0x14ba('0x32')]=function(_0x212c73,_0x44db11){var _0x1d28fd={},_0x2f71ae={},_0x4dd916={'count':0x0,'rows':[]};var _0x569dd9=_['map'](db[_0x14ba('0x33')][_0x14ba('0x34')],function(_0x48e210){return{'name':_0x48e210[_0x14ba('0x35')],'type':_0x48e210[_0x14ba('0x36')][_0x14ba('0x37')]};});_0x2f71ae['model']=_['map'](_0x569dd9,_0x14ba('0x30'));_0x2f71ae[_0x14ba('0x38')]=_[_0x14ba('0x39')](_0x212c73[_0x14ba('0x38')]);_0x2f71ae[_0x14ba('0x3a')]=_[_0x14ba('0x3b')](_0x2f71ae[_0x14ba('0x3c')],_0x2f71ae[_0x14ba('0x38')]);_0x1d28fd[_0x14ba('0x3d')]=_[_0x14ba('0x3b')](_0x2f71ae[_0x14ba('0x3c')],qs[_0x14ba('0x3e')](_0x212c73[_0x14ba('0x38')][_0x14ba('0x3e')]));_0x1d28fd['attributes']=_0x1d28fd['attributes'][_0x14ba('0x3f')]?_0x1d28fd[_0x14ba('0x3d')]:_0x2f71ae[_0x14ba('0x3c')];if(!_0x212c73[_0x14ba('0x38')][_0x14ba('0x40')]('nolimit')){_0x1d28fd[_0x14ba('0x23')]=qs[_0x14ba('0x23')](_0x212c73['query'][_0x14ba('0x23')]);_0x1d28fd[_0x14ba('0x21')]=qs['offset'](_0x212c73[_0x14ba('0x38')]['offset']);}_0x1d28fd[_0x14ba('0x41')]=qs[_0x14ba('0x42')](_0x212c73[_0x14ba('0x38')][_0x14ba('0x42')]);_0x1d28fd[_0x14ba('0x43')]=qs[_0x14ba('0x3a')](_[_0x14ba('0x44')](_0x212c73['query'],_0x2f71ae[_0x14ba('0x3a')]),_0x569dd9);if(_0x212c73[_0x14ba('0x38')][_0x14ba('0x45')]){_0x1d28fd['where']=_[_0x14ba('0x46')](_0x1d28fd[_0x14ba('0x43')],{'$or':_[_0x14ba('0x47')](_0x569dd9,function(_0x5b2f16){if(_0x5b2f16[_0x14ba('0x36')]!==_0x14ba('0x48')){var _0x4b79f7={};_0x4b79f7[_0x5b2f16['name']]={'$like':'%'+_0x212c73['query']['filter']+'%'};return _0x4b79f7;}})});}_0x1d28fd=_[_0x14ba('0x46')]({},_0x1d28fd,_0x212c73['options']);var _0x913ff1={'where':_0x1d28fd['where']};return db[_0x14ba('0x33')][_0x14ba('0x24')](_0x913ff1)[_0x14ba('0x2a')](function(_0x2b8c47){_0x4dd916[_0x14ba('0x24')]=_0x2b8c47;if(_0x212c73[_0x14ba('0x38')]['includeAll']){_0x1d28fd[_0x14ba('0x49')]=[{'all':!![]}];}return db[_0x14ba('0x33')][_0x14ba('0x4a')](_0x1d28fd);})[_0x14ba('0x2a')](function(_0xa0e813){_0x4dd916[_0x14ba('0x4b')]=_0xa0e813;return _0x4dd916;})[_0x14ba('0x2a')](respondWithFilteredResult(_0x44db11,_0x1d28fd))['catch'](handleError(_0x44db11,null));};exports[_0x14ba('0x4c')]=function(_0xd95729,_0x1a88fa){var _0x31b20b={'raw':!![],'where':{'id':_0xd95729[_0x14ba('0x4d')]['id']}},_0x160a6d={};_0x160a6d[_0x14ba('0x3c')]=_[_0x14ba('0x39')](db[_0x14ba('0x33')]['rawAttributes']);_0x160a6d[_0x14ba('0x38')]=_[_0x14ba('0x39')](_0xd95729['query']);_0x160a6d['filters']=_[_0x14ba('0x3b')](_0x160a6d[_0x14ba('0x3c')],_0x160a6d[_0x14ba('0x38')]);_0x31b20b[_0x14ba('0x3d')]=_[_0x14ba('0x3b')](_0x160a6d[_0x14ba('0x3c')],qs[_0x14ba('0x3e')](_0xd95729[_0x14ba('0x38')]['fields']));_0x31b20b[_0x14ba('0x3d')]=_0x31b20b[_0x14ba('0x3d')][_0x14ba('0x3f')]?_0x31b20b[_0x14ba('0x3d')]:_0x160a6d[_0x14ba('0x3c')];if(_0xd95729[_0x14ba('0x38')][_0x14ba('0x4e')]){_0x31b20b[_0x14ba('0x49')]=[{'all':!![]}];}_0x31b20b=_['merge']({},_0x31b20b,_0xd95729[_0x14ba('0x4f')]);return db['WhatsappQueue'][_0x14ba('0x50')](_0x31b20b)['then'](handleEntityNotFound(_0x1a88fa,null))[_0x14ba('0x2a')](respondWithResult(_0x1a88fa,null))[_0x14ba('0x51')](handleError(_0x1a88fa,null));};exports[_0x14ba('0x52')]=function(_0x5b1a45,_0x2d3eaa){return db['WhatsappQueue']['create'](_0x5b1a45[_0x14ba('0x53')],{})[_0x14ba('0x2a')](function(_0x35d943){var _0x30cf6e=_0x5b1a45['user']['get']({'plain':!![]});if(!_0x30cf6e)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x30cf6e['role']===_0x14ba('0x54')){var _0x156e3b=_0x35d943[_0x14ba('0x2b')]({'plain':!![]});var _0x48490a=_0x14ba('0x2c');return db['UserProfileSection'][_0x14ba('0x50')]({'where':{'name':_0x48490a,'userProfileId':_0x30cf6e[_0x14ba('0x55')]},'raw':!![]})[_0x14ba('0x2a')](function(_0x34a175){if(_0x34a175&&_0x34a175['autoAssociation']===0x0){return db[_0x14ba('0x2d')]['create']({'name':_0x156e3b[_0x14ba('0x30')],'resourceId':_0x156e3b['id'],'type':_0x34a175[_0x14ba('0x30')],'sectionId':_0x34a175['id']},{})[_0x14ba('0x2a')](function(){return _0x35d943;});}else{return _0x35d943;}})[_0x14ba('0x51')](function(_0x4225c7){logger[_0x14ba('0x56')](_0x14ba('0x57'),_0x4225c7);throw _0x4225c7;});}return _0x35d943;})[_0x14ba('0x2a')](respondWithResult(_0x2d3eaa,0xc9))[_0x14ba('0x51')](handleError(_0x2d3eaa,null));};exports[_0x14ba('0x29')]=function(_0x722544,_0x41cde9){if(_0x722544[_0x14ba('0x53')]['id']){delete _0x722544['body']['id'];}return db[_0x14ba('0x33')][_0x14ba('0x50')]({'where':{'id':_0x722544[_0x14ba('0x4d')]['id']}})[_0x14ba('0x2a')](handleEntityNotFound(_0x41cde9,null))[_0x14ba('0x2a')](saveUpdates(_0x722544[_0x14ba('0x53')],null))[_0x14ba('0x2a')](respondWithResult(_0x41cde9,null))['catch'](handleError(_0x41cde9,null));};exports[_0x14ba('0x2e')]=function(_0x2a7916,_0x39c27f){return db[_0x14ba('0x33')]['find']({'where':{'id':_0x2a7916['params']['id']}})[_0x14ba('0x2a')](handleEntityNotFound(_0x39c27f,null))[_0x14ba('0x2a')](removeEntity(_0x39c27f,null))[_0x14ba('0x51')](handleError(_0x39c27f,null));};exports[_0x14ba('0x58')]=function(_0x5e95c6,_0x2ed532){return db[_0x14ba('0x33')][_0x14ba('0x58')]()[_0x14ba('0x2a')](respondWithResult(_0x2ed532,null))['catch'](handleError(_0x2ed532,null));};exports[_0x14ba('0x59')]=function(_0x46607f,_0x2283a4,_0x9e61c7){var _0x29789a={'raw':!![],'where':{}},_0x4d157a={},_0x233aff;return db[_0x14ba('0x33')]['findOne']({'where':{'id':_0x46607f['params']['id']}})[_0x14ba('0x2a')](handleEntityNotFound(_0x2283a4,null))[_0x14ba('0x2a')](function(_0x209459){if(_0x209459){_0x233aff=_0x209459[_0x14ba('0x2b')]({'plain':!![]});_0x4d157a[_0x14ba('0x3c')]=_[_0x14ba('0x39')](db[_0x14ba('0x5a')][_0x14ba('0x34')]);_0x4d157a[_0x14ba('0x38')]=_[_0x14ba('0x39')](_0x46607f['query']);_0x4d157a[_0x14ba('0x3a')]=_[_0x14ba('0x3b')](_0x4d157a[_0x14ba('0x3c')],_0x4d157a['query']);_0x29789a[_0x14ba('0x3d')]=_[_0x14ba('0x3b')](_0x4d157a['model'],qs['fields'](_0x46607f[_0x14ba('0x38')]['fields']));_0x29789a[_0x14ba('0x3d')]=_0x29789a[_0x14ba('0x3d')]['length']?_0x29789a[_0x14ba('0x3d')]:_0x4d157a[_0x14ba('0x3c')];if(!_0x46607f[_0x14ba('0x38')][_0x14ba('0x40')](_0x14ba('0x5b'))){_0x29789a['limit']=qs[_0x14ba('0x23')](_0x46607f['query'][_0x14ba('0x23')]);_0x29789a['offset']=qs[_0x14ba('0x21')](_0x46607f['query']['offset']);}_0x29789a['order']=qs[_0x14ba('0x42')](_0x46607f[_0x14ba('0x38')][_0x14ba('0x42')]);_0x29789a[_0x14ba('0x43')]=qs[_0x14ba('0x3a')](_['pick'](_0x46607f[_0x14ba('0x38')],_0x4d157a['filters']));_0x29789a[_0x14ba('0x43')][_0x14ba('0x5c')]=_0x209459['id'];if(_0x46607f[_0x14ba('0x38')]['filter']){_0x29789a['where']=_[_0x14ba('0x46')](_0x29789a['where'],{'$or':_[_0x14ba('0x47')](_0x29789a[_0x14ba('0x3d')],function(_0x21f1e2){var _0x127971={};_0x127971[_0x21f1e2]={'$like':'%'+_0x46607f[_0x14ba('0x38')]['filter']+'%'};return _0x127971;})});}_0x29789a=_[_0x14ba('0x46')]({},_0x29789a,_0x46607f['options']);return db[_0x14ba('0x5a')]['findAll'](_0x29789a);}})[_0x14ba('0x2a')](function(_0x1da495){if(_0x1da495){return db[_0x14ba('0x5d')]['findAndCountAll']({'where':{'id':_[_0x14ba('0x47')](_0x1da495,'UserId'),'role':_0x14ba('0x5e')},'attributes':['id',_0x14ba('0x30'),_0x14ba('0x5f'),_0x14ba('0x60'),_0x14ba('0x61')]});}})[_0x14ba('0x2a')](function(_0x19ea15){if(_0x19ea15){return{'count':_0x19ea15[_0x14ba('0x24')],'rows':_[_0x14ba('0x47')](_0x19ea15[_0x14ba('0x4b')],function(_0x617c57){return{'membername':_0x617c57[_0x14ba('0x30')],'UserId':_0x617c57['id'],'queue_name':_0x233aff[_0x14ba('0x30')],'WhatsappQueueId':_0x233aff['id'],'interface':util[_0x14ba('0x62')](_0x14ba('0x63'),_0x14ba('0x64'),_0x617c57['name']),'penalty':0x0,'paused':_0x617c57['whatsappPause'],'createdAt':_0x617c57[_0x14ba('0x61')],'updatedAt':_0x617c57[_0x14ba('0x60')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x2283a4,_0x29789a))['catch'](handleError(_0x2283a4,null));};exports['getTeams']=function(_0x16ad3a,_0x23bdc4,_0x164af8){var _0x158490={};var _0xb1fb8={};var _0x20b77b;var _0x1789ed;return db[_0x14ba('0x33')][_0x14ba('0x65')]({'where':{'id':_0x16ad3a[_0x14ba('0x4d')]['id']}})['then'](handleEntityNotFound(_0x23bdc4,null))[_0x14ba('0x2a')](function(_0xf8a8de){if(_0xf8a8de){_0x20b77b=_0xf8a8de;_0xb1fb8[_0x14ba('0x3c')]=_[_0x14ba('0x39')](db[_0x14ba('0x66')][_0x14ba('0x34')]);_0xb1fb8['query']=_[_0x14ba('0x39')](_0x16ad3a[_0x14ba('0x38')]);_0xb1fb8[_0x14ba('0x3a')]=_[_0x14ba('0x3b')](_0xb1fb8[_0x14ba('0x3c')],_0xb1fb8[_0x14ba('0x38')]);_0x158490[_0x14ba('0x3d')]=_['intersection'](_0xb1fb8[_0x14ba('0x3c')],qs['fields'](_0x16ad3a[_0x14ba('0x38')][_0x14ba('0x3e')]));_0x158490[_0x14ba('0x3d')]=_0x158490[_0x14ba('0x3d')]['length']?_0x158490[_0x14ba('0x3d')]:_0xb1fb8[_0x14ba('0x3c')];_0x158490[_0x14ba('0x41')]=qs[_0x14ba('0x42')](_0x16ad3a['query'][_0x14ba('0x42')]);_0x158490[_0x14ba('0x43')]=qs[_0x14ba('0x3a')](_['pick'](_0x16ad3a[_0x14ba('0x38')],_0xb1fb8[_0x14ba('0x3a')]));if(_0x16ad3a[_0x14ba('0x38')][_0x14ba('0x45')]){_0x158490[_0x14ba('0x43')]=_['merge'](_0x158490['where'],{'$or':_[_0x14ba('0x47')](_0x158490[_0x14ba('0x3d')],function(_0x404d0e){var _0x4d7e41={};_0x4d7e41[_0x404d0e]={'$like':'%'+_0x16ad3a[_0x14ba('0x38')][_0x14ba('0x45')]+'%'};return _0x4d7e41;})});}_0x158490=_[_0x14ba('0x46')]({},_0x158490,_0x16ad3a[_0x14ba('0x4f')]);return _0x20b77b['getTeams'](_0x158490);}})[_0x14ba('0x2a')](function(_0x134b66){if(_0x134b66){_0x1789ed=_0x134b66[_0x14ba('0x3f')];if(!_0x16ad3a[_0x14ba('0x38')][_0x14ba('0x40')]('nolimit')){_0x158490['limit']=qs[_0x14ba('0x23')](_0x16ad3a[_0x14ba('0x38')][_0x14ba('0x23')]);_0x158490[_0x14ba('0x21')]=qs['offset'](_0x16ad3a[_0x14ba('0x38')]['offset']);}return _0x20b77b[_0x14ba('0x67')](_0x158490);}})['then'](function(_0x475587){if(_0x475587){return _0x475587?{'count':_0x1789ed,'rows':_0x475587}:null;}})[_0x14ba('0x2a')](respondWithResult(_0x23bdc4,null))[_0x14ba('0x51')](handleError(_0x23bdc4,null));};exports[_0x14ba('0x68')]=function(_0x4bcf23,_0x9c46c5,_0x2cbb8b){var _0x15493a=_0x4bcf23[_0x14ba('0x53')]['ids'];return db[_0x14ba('0x66')]['findAll']({'where':{'id':_0x15493a},'attributes':['id'],'include':[{'model':db[_0x14ba('0x5d')],'as':_0x14ba('0x69'),'attributes':['id','name',_0x14ba('0x6a'),'voicePause',_0x14ba('0x6b')],'raw':!![]}]})[_0x14ba('0x2a')](function(_0x2296ea){if(_0x2296ea){var _0x16e0b6=_[_0x14ba('0x6c')](_0x2296ea,function(_0x2d1883){var _0x55c630=_0x2d1883['get']({'plain':!![]});return _0x55c630[_0x14ba('0x69')];});return db[_0x14ba('0x33')][_0x14ba('0x50')]({'where':{'id':_0x4bcf23[_0x14ba('0x4d')]['id']}})['then'](function(_0x1caea7){return db['sequelize'][_0x14ba('0x6d')](function(_0x5008f){return _0x1caea7[_0x14ba('0x68')](_0x15493a,{'transaction':_0x5008f})[_0x14ba('0x2a')](function(){return BPromise['each'](_0x16e0b6,function(_0x1e0dd9){return db[_0x14ba('0x5a')][_0x14ba('0x6e')]({'where':{'UserId':_0x1e0dd9['id'],'WhatsappQueueId':_0x4bcf23[_0x14ba('0x4d')]['id']},'transaction':_0x5008f});});})[_0x14ba('0x2a')](function(){_0x16e0b6[_0x14ba('0x6f')](function(_0x200f16){socket[_0x14ba('0x70')](_0x14ba('0x71'),{'UserId':_0x200f16['id'],'WhatsappQueueId':_0x1caea7['id']});});});});});}})[_0x14ba('0x2a')](respondWithStatusCode(_0x9c46c5,null))[_0x14ba('0x51')](handleError(_0x9c46c5,null));};exports['removeTeams']=function(_0x550fc9,_0xea2377,_0x34e54c){return db[_0x14ba('0x66')][_0x14ba('0x4a')]({'where':{'id':_0x550fc9[_0x14ba('0x38')][_0x14ba('0x72')]},'attributes':['id'],'include':[{'model':db[_0x14ba('0x5d')],'as':_0x14ba('0x69'),'attributes':['id'],'raw':!![]}]})[_0x14ba('0x2a')](handleEntityNotFound(_0xea2377,null))[_0x14ba('0x2a')](function(_0x562096){var _0x263002=_[_0x14ba('0x47')](_0x562096,'id');var _0x3fc07a=[];var _0x1e0be7=[];var _0x888085=squel[_0x14ba('0x73')]();_0x888085[_0x14ba('0x74')]('tq.TeamId')[_0x14ba('0x75')](_0x14ba('0x76'),'tq')[_0x14ba('0x77')]('user_has_teams','ut',_0x14ba('0x78'))['where'](_0x14ba('0x79'),_0x550fc9[_0x14ba('0x4d')]['id']);for(var _0x1ef3ce=0x0;_0x1ef3ce<_0x562096[_0x14ba('0x3f')];_0x1ef3ce+=0x1){let _0x511db6=_0x562096[_0x1ef3ce];for(var _0x278971=0x0;_0x278971<_0x511db6['Agents'][_0x14ba('0x3f')];_0x278971+=0x1){let _0x45af94=_0x511db6[_0x14ba('0x69')][_0x278971];var _0x506be1=_0x888085[_0x14ba('0x7a')]();_0x506be1[_0x14ba('0x43')](_0x14ba('0x7b'),_0x45af94['id']);_0x1e0be7[_0x14ba('0x7c')](db[_0x14ba('0x7d')][_0x14ba('0x38')](_0x506be1[_0x14ba('0x7e')](),{'type':db['sequelize']['QueryTypes']['SELECT']})[_0x14ba('0x2a')](function(_0x17d1d2){if(_0x17d1d2[_0x14ba('0x3f')]===0x1){return _0x45af94['id'];}else{var _0x316832=_['every'](_['map'](_0x17d1d2,_0x14ba('0x7f')),function(_0x38ed8a){return _[_0x14ba('0x80')](_0x263002,_0x38ed8a);});if(_0x316832){return _0x45af94['id'];}}}));}}return BPromise[_0x14ba('0x81')](_0x1e0be7)['then'](function(_0x46ded2){_0x3fc07a=_(_0x3fc07a)[_0x14ba('0x82')](_0x46ded2)[_0x14ba('0x83')]()['value']();return db[_0x14ba('0x33')][_0x14ba('0x50')]({'where':{'id':_0x550fc9['params']['id']}})[_0x14ba('0x2a')](function(_0xb91fc7){return db[_0x14ba('0x7d')][_0x14ba('0x6d')](function(_0x567d59){return _0xb91fc7[_0x14ba('0x84')](_0x550fc9[_0x14ba('0x38')]['ids'],{'transaction':_0x567d59})['then'](function(){if(!_[_0x14ba('0x85')](_0x3fc07a)){return _0xb91fc7[_0x14ba('0x86')](_0x3fc07a,{'transaction':_0x567d59});}})[_0x14ba('0x2a')](function(){_0x3fc07a[_0x14ba('0x6f')](function(_0x44e7cb){socket[_0x14ba('0x70')](_0x14ba('0x87'),{'UserId':_0x44e7cb,'WhatsappQueueId':_0xb91fc7['id']});});});});});});})[_0x14ba('0x2a')](respondWithStatusCode(_0xea2377,null))['catch'](handleError(_0xea2377,null));};exports[_0x14ba('0x88')]=function(_0x1e0136,_0x4090a8,_0x1553bd){return db[_0x14ba('0x33')][_0x14ba('0x50')]({'where':{'id':_0x1e0136[_0x14ba('0x4d')]['id']}})[_0x14ba('0x2a')](handleEntityNotFound(_0x4090a8,null))[_0x14ba('0x2a')](function(_0x48fe76){if(_0x48fe76){return _0x48fe76['addAgents'](_0x1e0136[_0x14ba('0x53')][_0x14ba('0x72')],_[_0x14ba('0x89')](_0x1e0136[_0x14ba('0x53')],[_0x14ba('0x72'),'id'])||{})[_0x14ba('0x8a')](function(_0x40f8cc){for(var _0x1c457c=0x0;_0x1c457c<_0x1e0136[_0x14ba('0x53')][_0x14ba('0x72')][_0x14ba('0x3f')];_0x1c457c+=0x1){socket[_0x14ba('0x70')](_0x14ba('0x71'),{'UserId':Number(_0x1e0136[_0x14ba('0x53')]['ids'][_0x1c457c]),'WhatsappQueueId':Number(_0x1e0136[_0x14ba('0x4d')]['id'])});}return _0x40f8cc;});}})[_0x14ba('0x2a')](respondWithResult(_0x4090a8,null))[_0x14ba('0x51')](handleError(_0x4090a8,null));};exports[_0x14ba('0x86')]=function(_0x1e4059,_0x444957,_0xb43b0b){return db[_0x14ba('0x33')][_0x14ba('0x50')]({'where':{'id':_0x1e4059[_0x14ba('0x4d')]['id']}})[_0x14ba('0x2a')](handleEntityNotFound(_0x444957,null))[_0x14ba('0x2a')](function(_0x30d085){if(_0x30d085){return _0x30d085[_0x14ba('0x86')](_0x1e4059[_0x14ba('0x38')]['ids'])['then'](function(){if(_[_0x14ba('0x8b')](_0x1e4059[_0x14ba('0x38')][_0x14ba('0x72')])){for(var _0x14aa92=0x0;_0x14aa92<_0x1e4059[_0x14ba('0x38')][_0x14ba('0x72')]['length'];_0x14aa92+=0x1){socket[_0x14ba('0x70')]('userWhatsappQueue:remove',{'UserId':Number(_0x1e4059[_0x14ba('0x38')][_0x14ba('0x72')][_0x14aa92]),'WhatsappQueueId':Number(_0x1e4059[_0x14ba('0x4d')]['id'])});}}else{socket[_0x14ba('0x70')]('userWhatsappQueue:remove',{'UserId':Number(_0x1e4059[_0x14ba('0x38')][_0x14ba('0x72')]),'WhatsappQueueId':Number(_0x1e4059[_0x14ba('0x4d')]['id'])});}});}})['then'](respondWithStatusCode(_0x444957,null))[_0x14ba('0x51')](handleError(_0x444957,null));};exports[_0x14ba('0x8c')]=function(_0x2ffd82,_0x1d56c3,_0x142467){var _0x28e65e={};var _0x2b9d9e={};var _0x40071b;var _0xba54e3;return db[_0x14ba('0x33')][_0x14ba('0x65')]({'where':{'id':_0x2ffd82['params']['id']}})[_0x14ba('0x2a')](handleEntityNotFound(_0x1d56c3,null))[_0x14ba('0x2a')](function(_0xdd84fb){if(_0xdd84fb){_0x40071b=_0xdd84fb;_0x2b9d9e['model']=_[_0x14ba('0x39')](db[_0x14ba('0x5d')]['rawAttributes']);_0x2b9d9e[_0x14ba('0x38')]=_[_0x14ba('0x39')](_0x2ffd82[_0x14ba('0x38')]);_0x2b9d9e[_0x14ba('0x3a')]=_[_0x14ba('0x3b')](_0x2b9d9e[_0x14ba('0x3c')],_0x2b9d9e[_0x14ba('0x38')]);_0x28e65e[_0x14ba('0x3d')]=_[_0x14ba('0x3b')](_0x2b9d9e[_0x14ba('0x3c')],qs[_0x14ba('0x3e')](_0x2ffd82[_0x14ba('0x38')][_0x14ba('0x3e')]));_0x28e65e[_0x14ba('0x3d')]=_0x28e65e['attributes'][_0x14ba('0x3f')]?_0x28e65e[_0x14ba('0x3d')]:_0x2b9d9e[_0x14ba('0x3c')];_0x28e65e[_0x14ba('0x41')]=qs['sort'](_0x2ffd82[_0x14ba('0x38')][_0x14ba('0x42')]);_0x28e65e['where']=qs[_0x14ba('0x3a')](_[_0x14ba('0x44')](_0x2ffd82[_0x14ba('0x38')],_0x2b9d9e[_0x14ba('0x3a')]));if(_0x2ffd82[_0x14ba('0x38')]['filter']){_0x28e65e[_0x14ba('0x43')]=_[_0x14ba('0x46')](_0x28e65e['where'],{'$or':_[_0x14ba('0x47')](_0x28e65e[_0x14ba('0x3d')],function(_0x4fbd3c){var _0x3850dc={};_0x3850dc[_0x4fbd3c]={'$like':'%'+_0x2ffd82[_0x14ba('0x38')]['filter']+'%'};return _0x3850dc;})});}_0x28e65e=_[_0x14ba('0x46')]({},_0x28e65e,_0x2ffd82[_0x14ba('0x4f')]);return _0x40071b[_0x14ba('0x8c')](_0x28e65e);}})[_0x14ba('0x2a')](function(_0x418ba5){if(_0x418ba5){_0xba54e3=_0x418ba5[_0x14ba('0x3f')];if(!_0x2ffd82[_0x14ba('0x38')][_0x14ba('0x40')](_0x14ba('0x5b'))){_0x28e65e[_0x14ba('0x23')]=qs['limit'](_0x2ffd82['query']['limit']);_0x28e65e[_0x14ba('0x21')]=qs['offset'](_0x2ffd82[_0x14ba('0x38')]['offset']);}return _0x40071b[_0x14ba('0x8c')](_0x28e65e);}})[_0x14ba('0x2a')](function(_0xf55982){if(_0xf55982){return _0xf55982?{'count':_0xba54e3,'rows':_0xf55982}:null;}})[_0x14ba('0x2a')](respondWithResult(_0x1d56c3,null))['catch'](handleError(_0x1d56c3,null));};
\ No newline at end of file
+var _0x5da2=['includeAll','include','catch','show','params','find','create','user','role','get','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','findOne','UserWhatsappQueue','WhatsappQueueId','findAll','User','findAndCountAll','UserId','agent','updatedAt','createdAt','rows','format','SIP','pick','getTeams','addTeams','Team','online','voicePause','flatMap','Agents','sequelize','transaction','each','findOrCreate','forEach','userWhatsappQueue:save','field','tq.TeamId','from','team_has_whatsapp_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','WhatsappQueueId\x20=\x20?','ut.UserId\x20=\x20?','SELECT','every','TeamId','all','union','compact','value','removeTeams','isEmpty','removeAgents','emit','addAgents','omit','spread','ids','isArray','userWhatsappQueue:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./whatsappQueue.socket','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','WhatsappQueues','UserProfileResource','end','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','filter','merge','VIRTUAL','options','WhatsappQueue'];(function(_0x35e0de,_0x3de3ed){var _0x179362=function(_0x398001){while(--_0x398001){_0x35e0de['push'](_0x35e0de['shift']());}};_0x179362(++_0x3de3ed);}(_0x5da2,0x16e));var _0x25da=function(_0x454018,_0x46e33a){_0x454018=_0x454018-0x0;var _0x24697d=_0x5da2[_0x454018];return _0x24697d;};'use strict';var emlformat=require(_0x25da('0x0'));var rimraf=require(_0x25da('0x1'));var zipdir=require(_0x25da('0x2'));var jsonpatch=require(_0x25da('0x3'));var rp=require(_0x25da('0x4'));var moment=require(_0x25da('0x5'));var BPromise=require(_0x25da('0x6'));var Mustache=require('mustache');var util=require(_0x25da('0x7'));var path=require(_0x25da('0x8'));var sox=require(_0x25da('0x9'));var csv=require(_0x25da('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x25da('0xb'));var _=require(_0x25da('0xc'));var squel=require(_0x25da('0xd'));var crypto=require(_0x25da('0xe'));var jsforce=require(_0x25da('0xf'));var deskjs=require(_0x25da('0x10'));var toCsv=require(_0x25da('0xa'));var querystring=require(_0x25da('0x11'));var Papa=require(_0x25da('0x12'));var Redis=require(_0x25da('0x13'));var authService=require(_0x25da('0x14'));var qs=require(_0x25da('0x15'));var as=require(_0x25da('0x16'));var hardwareService=require(_0x25da('0x17'));var logger=require(_0x25da('0x18'))('api');var utils=require(_0x25da('0x19'));var config=require(_0x25da('0x1a'));var licenseUtil=require(_0x25da('0x1b'));var db=require(_0x25da('0x1c'))['db'];config[_0x25da('0x1d')]=_['defaults'](config[_0x25da('0x1d')],{'host':_0x25da('0x1e'),'port':0x18eb});var socket=require(_0x25da('0x1f'))(new Redis(config[_0x25da('0x1d')]));require(_0x25da('0x20'))['register'](socket);function respondWithStatusCode(_0x13fe05,_0x3ab483){_0x3ab483=_0x3ab483||0xcc;return function(_0x1b2bc1){if(_0x1b2bc1){return _0x13fe05[_0x25da('0x21')](_0x3ab483);}return _0x13fe05[_0x25da('0x22')](_0x3ab483)['end']();};}function respondWithResult(_0xdbea63,_0x3bb4a3){_0x3bb4a3=_0x3bb4a3||0xc8;return function(_0x210494){if(_0x210494){return _0xdbea63['status'](_0x3bb4a3)[_0x25da('0x23')](_0x210494);}};}function respondWithFilteredResult(_0x50e8c8,_0x1a5992){return function(_0x438220){if(_0x438220){var _0x5ac20c=typeof _0x1a5992[_0x25da('0x24')]===_0x25da('0x25')&&typeof _0x1a5992[_0x25da('0x26')]===_0x25da('0x25');var _0xd87c04=_0x438220[_0x25da('0x27')];var _0xa845bf=_0x5ac20c?0x0:_0x1a5992[_0x25da('0x24')];var _0x24c88a=_0x5ac20c?_0x438220['count']:_0x1a5992[_0x25da('0x24')]+_0x1a5992[_0x25da('0x26')];var _0x32519f;if(_0x24c88a>=_0xd87c04){_0x24c88a=_0xd87c04;_0x32519f=0xc8;}else{_0x32519f=0xce;}_0x50e8c8[_0x25da('0x22')](_0x32519f);return _0x50e8c8[_0x25da('0x28')](_0x25da('0x29'),_0xa845bf+'-'+_0x24c88a+'/'+_0xd87c04)[_0x25da('0x23')](_0x438220);}return null;};}function patchUpdates(_0x1a0d1d){return function(_0x5a653c){try{jsonpatch[_0x25da('0x2a')](_0x5a653c,_0x1a0d1d,!![]);}catch(_0x518c2d){return BPromise[_0x25da('0x2b')](_0x518c2d);}return _0x5a653c['save']();};}function saveUpdates(_0x55680e,_0x5af71d){return function(_0x3322d0){if(_0x3322d0){return _0x3322d0[_0x25da('0x2c')](_0x55680e)[_0x25da('0x2d')](function(_0x28dd4f){return _0x28dd4f;});}return null;};}function removeEntity(_0x6ba824,_0x5621f9){return function(_0xcfe161){if(_0xcfe161){return _0xcfe161[_0x25da('0x2e')]()['then'](function(){var _0x2ab8fa=_0xcfe161['get']({'plain':!![]});var _0x25db98=_0x25da('0x2f');return db[_0x25da('0x30')][_0x25da('0x2e')]({'where':{'type':_0x25db98,'resourceId':_0x2ab8fa['id']}})[_0x25da('0x2d')](function(){return _0xcfe161;});})[_0x25da('0x2d')](function(){_0x6ba824[_0x25da('0x22')](0xcc)[_0x25da('0x31')]();});}};}function handleEntityNotFound(_0x25807a,_0x26708f){return function(_0x456318){if(!_0x456318){_0x25807a[_0x25da('0x21')](0x194);}return _0x456318;};}function handleError(_0x485f21,_0x1e31ff){_0x1e31ff=_0x1e31ff||0x1f4;return function(_0xe7a60a){logger[_0x25da('0x32')](_0xe7a60a[_0x25da('0x33')]);if(_0xe7a60a['name']){delete _0xe7a60a[_0x25da('0x34')];}_0x485f21[_0x25da('0x22')](_0x1e31ff)[_0x25da('0x35')](_0xe7a60a);};}exports[_0x25da('0x36')]=function(_0x5cbca8,_0x4e677d){var _0x2dfcfd={},_0x1a0074={},_0x5057e3={'count':0x0,'rows':[]};var _0x447cab=_[_0x25da('0x37')](db['WhatsappQueue'][_0x25da('0x38')],function(_0x406a47){return{'name':_0x406a47[_0x25da('0x39')],'type':_0x406a47[_0x25da('0x3a')][_0x25da('0x3b')]};});_0x1a0074[_0x25da('0x3c')]=_[_0x25da('0x37')](_0x447cab,_0x25da('0x34'));_0x1a0074[_0x25da('0x3d')]=_[_0x25da('0x3e')](_0x5cbca8[_0x25da('0x3d')]);_0x1a0074['filters']=_[_0x25da('0x3f')](_0x1a0074['model'],_0x1a0074['query']);_0x2dfcfd[_0x25da('0x40')]=_[_0x25da('0x3f')](_0x1a0074[_0x25da('0x3c')],qs[_0x25da('0x41')](_0x5cbca8['query'][_0x25da('0x41')]));_0x2dfcfd[_0x25da('0x40')]=_0x2dfcfd[_0x25da('0x40')][_0x25da('0x42')]?_0x2dfcfd[_0x25da('0x40')]:_0x1a0074[_0x25da('0x3c')];if(!_0x5cbca8[_0x25da('0x3d')][_0x25da('0x43')](_0x25da('0x44'))){_0x2dfcfd['limit']=qs[_0x25da('0x26')](_0x5cbca8[_0x25da('0x3d')][_0x25da('0x26')]);_0x2dfcfd[_0x25da('0x24')]=qs[_0x25da('0x24')](_0x5cbca8[_0x25da('0x3d')]['offset']);}_0x2dfcfd[_0x25da('0x45')]=qs['sort'](_0x5cbca8[_0x25da('0x3d')][_0x25da('0x46')]);_0x2dfcfd[_0x25da('0x47')]=qs[_0x25da('0x48')](_['pick'](_0x5cbca8[_0x25da('0x3d')],_0x1a0074['filters']),_0x447cab);if(_0x5cbca8[_0x25da('0x3d')][_0x25da('0x49')]){_0x2dfcfd[_0x25da('0x47')]=_[_0x25da('0x4a')](_0x2dfcfd[_0x25da('0x47')],{'$or':_[_0x25da('0x37')](_0x447cab,function(_0x445581){if(_0x445581[_0x25da('0x3a')]!==_0x25da('0x4b')){var _0x3248e5={};_0x3248e5[_0x445581[_0x25da('0x34')]]={'$like':'%'+_0x5cbca8[_0x25da('0x3d')][_0x25da('0x49')]+'%'};return _0x3248e5;}})});}_0x2dfcfd=_[_0x25da('0x4a')]({},_0x2dfcfd,_0x5cbca8[_0x25da('0x4c')]);var _0x10c1b1={'where':_0x2dfcfd[_0x25da('0x47')]};return db[_0x25da('0x4d')][_0x25da('0x27')](_0x10c1b1)[_0x25da('0x2d')](function(_0x279660){_0x5057e3[_0x25da('0x27')]=_0x279660;if(_0x5cbca8[_0x25da('0x3d')][_0x25da('0x4e')]){_0x2dfcfd[_0x25da('0x4f')]=[{'all':!![]}];}return db[_0x25da('0x4d')]['findAll'](_0x2dfcfd);})[_0x25da('0x2d')](function(_0x3eb775){_0x5057e3['rows']=_0x3eb775;return _0x5057e3;})[_0x25da('0x2d')](respondWithFilteredResult(_0x4e677d,_0x2dfcfd))[_0x25da('0x50')](handleError(_0x4e677d,null));};exports[_0x25da('0x51')]=function(_0x530939,_0x28f15f){var _0x44b6d2={'raw':!![],'where':{'id':_0x530939[_0x25da('0x52')]['id']}},_0x196137={};_0x196137[_0x25da('0x3c')]=_[_0x25da('0x3e')](db[_0x25da('0x4d')]['rawAttributes']);_0x196137[_0x25da('0x3d')]=_[_0x25da('0x3e')](_0x530939[_0x25da('0x3d')]);_0x196137[_0x25da('0x48')]=_[_0x25da('0x3f')](_0x196137[_0x25da('0x3c')],_0x196137['query']);_0x44b6d2[_0x25da('0x40')]=_[_0x25da('0x3f')](_0x196137['model'],qs[_0x25da('0x41')](_0x530939['query'][_0x25da('0x41')]));_0x44b6d2['attributes']=_0x44b6d2[_0x25da('0x40')][_0x25da('0x42')]?_0x44b6d2['attributes']:_0x196137[_0x25da('0x3c')];if(_0x530939['query'][_0x25da('0x4e')]){_0x44b6d2[_0x25da('0x4f')]=[{'all':!![]}];}_0x44b6d2=_[_0x25da('0x4a')]({},_0x44b6d2,_0x530939[_0x25da('0x4c')]);return db['WhatsappQueue'][_0x25da('0x53')](_0x44b6d2)[_0x25da('0x2d')](handleEntityNotFound(_0x28f15f,null))[_0x25da('0x2d')](respondWithResult(_0x28f15f,null))[_0x25da('0x50')](handleError(_0x28f15f,null));};exports[_0x25da('0x54')]=function(_0x57ac4f,_0x19955d){return db[_0x25da('0x4d')][_0x25da('0x54')](_0x57ac4f['body'],{})['then'](function(_0x2b71f4){var _0x4834cf=_0x57ac4f[_0x25da('0x55')]['get']({'plain':!![]});if(!_0x4834cf)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4834cf[_0x25da('0x56')]==='user'){var _0x1d7c71=_0x2b71f4[_0x25da('0x57')]({'plain':!![]});var _0x503220=_0x25da('0x2f');return db[_0x25da('0x58')][_0x25da('0x53')]({'where':{'name':_0x503220,'userProfileId':_0x4834cf[_0x25da('0x59')]},'raw':!![]})[_0x25da('0x2d')](function(_0x404899){if(_0x404899&&_0x404899[_0x25da('0x5a')]===0x0){return db[_0x25da('0x30')][_0x25da('0x54')]({'name':_0x1d7c71[_0x25da('0x34')],'resourceId':_0x1d7c71['id'],'type':_0x404899[_0x25da('0x34')],'sectionId':_0x404899['id']},{})[_0x25da('0x2d')](function(){return _0x2b71f4;});}else{return _0x2b71f4;}})[_0x25da('0x50')](function(_0x59accc){logger[_0x25da('0x32')](_0x25da('0x5b'),_0x59accc);throw _0x59accc;});}return _0x2b71f4;})['then'](respondWithResult(_0x19955d,0xc9))[_0x25da('0x50')](handleError(_0x19955d,null));};exports[_0x25da('0x2c')]=function(_0x4b80bb,_0x97a932){if(_0x4b80bb[_0x25da('0x5c')]['id']){delete _0x4b80bb[_0x25da('0x5c')]['id'];}return db[_0x25da('0x4d')][_0x25da('0x53')]({'where':{'id':_0x4b80bb[_0x25da('0x52')]['id']}})['then'](handleEntityNotFound(_0x97a932,null))[_0x25da('0x2d')](saveUpdates(_0x4b80bb[_0x25da('0x5c')],null))[_0x25da('0x2d')](respondWithResult(_0x97a932,null))[_0x25da('0x50')](handleError(_0x97a932,null));};exports[_0x25da('0x2e')]=function(_0x326308,_0x47954b){return db[_0x25da('0x4d')][_0x25da('0x53')]({'where':{'id':_0x326308[_0x25da('0x52')]['id']}})[_0x25da('0x2d')](handleEntityNotFound(_0x47954b,null))[_0x25da('0x2d')](removeEntity(_0x47954b,null))[_0x25da('0x50')](handleError(_0x47954b,null));};exports[_0x25da('0x5d')]=function(_0x42acdf,_0xb291ac){return db[_0x25da('0x4d')][_0x25da('0x5d')]()[_0x25da('0x2d')](respondWithResult(_0xb291ac,null))[_0x25da('0x50')](handleError(_0xb291ac,null));};exports['getMembers']=function(_0x17a3b7,_0x214e2d,_0x5980c5){var _0x13a716={'raw':!![],'where':{}},_0x145742={},_0x50f4ae;return db[_0x25da('0x4d')][_0x25da('0x5e')]({'where':{'id':_0x17a3b7[_0x25da('0x52')]['id']}})[_0x25da('0x2d')](handleEntityNotFound(_0x214e2d,null))[_0x25da('0x2d')](function(_0x44e61d){if(_0x44e61d){_0x50f4ae=_0x44e61d[_0x25da('0x57')]({'plain':!![]});_0x145742[_0x25da('0x3c')]=_[_0x25da('0x3e')](db[_0x25da('0x5f')]['rawAttributes']);_0x145742[_0x25da('0x3d')]=_[_0x25da('0x3e')](_0x17a3b7['query']);_0x145742['filters']=_[_0x25da('0x3f')](_0x145742['model'],_0x145742[_0x25da('0x3d')]);_0x13a716[_0x25da('0x40')]=_['intersection'](_0x145742[_0x25da('0x3c')],qs[_0x25da('0x41')](_0x17a3b7[_0x25da('0x3d')]['fields']));_0x13a716[_0x25da('0x40')]=_0x13a716[_0x25da('0x40')][_0x25da('0x42')]?_0x13a716[_0x25da('0x40')]:_0x145742[_0x25da('0x3c')];if(!_0x17a3b7[_0x25da('0x3d')][_0x25da('0x43')](_0x25da('0x44'))){_0x13a716[_0x25da('0x26')]=qs['limit'](_0x17a3b7[_0x25da('0x3d')]['limit']);_0x13a716[_0x25da('0x24')]=qs[_0x25da('0x24')](_0x17a3b7['query'][_0x25da('0x24')]);}_0x13a716[_0x25da('0x45')]=qs[_0x25da('0x46')](_0x17a3b7[_0x25da('0x3d')][_0x25da('0x46')]);_0x13a716[_0x25da('0x47')]=qs[_0x25da('0x48')](_['pick'](_0x17a3b7[_0x25da('0x3d')],_0x145742[_0x25da('0x48')]));_0x13a716[_0x25da('0x47')][_0x25da('0x60')]=_0x44e61d['id'];if(_0x17a3b7[_0x25da('0x3d')][_0x25da('0x49')]){_0x13a716[_0x25da('0x47')]=_[_0x25da('0x4a')](_0x13a716[_0x25da('0x47')],{'$or':_[_0x25da('0x37')](_0x13a716[_0x25da('0x40')],function(_0x3ed072){var _0x46b88a={};_0x46b88a[_0x3ed072]={'$like':'%'+_0x17a3b7[_0x25da('0x3d')][_0x25da('0x49')]+'%'};return _0x46b88a;})});}_0x13a716=_['merge']({},_0x13a716,_0x17a3b7[_0x25da('0x4c')]);return db[_0x25da('0x5f')][_0x25da('0x61')](_0x13a716);}})[_0x25da('0x2d')](function(_0x2a6189){if(_0x2a6189){return db[_0x25da('0x62')][_0x25da('0x63')]({'where':{'id':_[_0x25da('0x37')](_0x2a6189,_0x25da('0x64')),'role':_0x25da('0x65')},'attributes':['id','name','whatsappPause',_0x25da('0x66'),_0x25da('0x67')]});}})['then'](function(_0x25f3ec){if(_0x25f3ec){return{'count':_0x25f3ec['count'],'rows':_[_0x25da('0x37')](_0x25f3ec[_0x25da('0x68')],function(_0x44b520){return{'membername':_0x44b520['name'],'UserId':_0x44b520['id'],'queue_name':_0x50f4ae[_0x25da('0x34')],'WhatsappQueueId':_0x50f4ae['id'],'interface':util[_0x25da('0x69')]('%s/%s',_0x25da('0x6a'),_0x44b520[_0x25da('0x34')]),'penalty':0x0,'paused':_0x44b520['whatsappPause'],'createdAt':_0x44b520[_0x25da('0x67')],'updatedAt':_0x44b520['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0x25da('0x2d')](respondWithFilteredResult(_0x214e2d,_0x13a716))[_0x25da('0x50')](handleError(_0x214e2d,null));};exports['getTeams']=function(_0x4eb962,_0xc391b9,_0x21feb9){var _0x3bfb5a={};var _0x28ae7f={};var _0x3cfb10;var _0x5f1993;return db[_0x25da('0x4d')][_0x25da('0x5e')]({'where':{'id':_0x4eb962[_0x25da('0x52')]['id']}})[_0x25da('0x2d')](handleEntityNotFound(_0xc391b9,null))[_0x25da('0x2d')](function(_0x10a4b6){if(_0x10a4b6){_0x3cfb10=_0x10a4b6;_0x28ae7f[_0x25da('0x3c')]=_['keys'](db['Team'][_0x25da('0x38')]);_0x28ae7f[_0x25da('0x3d')]=_[_0x25da('0x3e')](_0x4eb962[_0x25da('0x3d')]);_0x28ae7f[_0x25da('0x48')]=_[_0x25da('0x3f')](_0x28ae7f['model'],_0x28ae7f[_0x25da('0x3d')]);_0x3bfb5a[_0x25da('0x40')]=_[_0x25da('0x3f')](_0x28ae7f[_0x25da('0x3c')],qs[_0x25da('0x41')](_0x4eb962[_0x25da('0x3d')][_0x25da('0x41')]));_0x3bfb5a['attributes']=_0x3bfb5a[_0x25da('0x40')]['length']?_0x3bfb5a[_0x25da('0x40')]:_0x28ae7f[_0x25da('0x3c')];_0x3bfb5a[_0x25da('0x45')]=qs[_0x25da('0x46')](_0x4eb962['query'][_0x25da('0x46')]);_0x3bfb5a['where']=qs['filters'](_[_0x25da('0x6b')](_0x4eb962[_0x25da('0x3d')],_0x28ae7f['filters']));if(_0x4eb962[_0x25da('0x3d')][_0x25da('0x49')]){_0x3bfb5a[_0x25da('0x47')]=_[_0x25da('0x4a')](_0x3bfb5a[_0x25da('0x47')],{'$or':_[_0x25da('0x37')](_0x3bfb5a[_0x25da('0x40')],function(_0x31f1d9){var _0x19c5dc={};_0x19c5dc[_0x31f1d9]={'$like':'%'+_0x4eb962[_0x25da('0x3d')][_0x25da('0x49')]+'%'};return _0x19c5dc;})});}_0x3bfb5a=_['merge']({},_0x3bfb5a,_0x4eb962[_0x25da('0x4c')]);return _0x3cfb10['getTeams'](_0x3bfb5a);}})[_0x25da('0x2d')](function(_0x574679){if(_0x574679){_0x5f1993=_0x574679[_0x25da('0x42')];if(!_0x4eb962[_0x25da('0x3d')]['hasOwnProperty'](_0x25da('0x44'))){_0x3bfb5a[_0x25da('0x26')]=qs['limit'](_0x4eb962[_0x25da('0x3d')][_0x25da('0x26')]);_0x3bfb5a[_0x25da('0x24')]=qs[_0x25da('0x24')](_0x4eb962['query'][_0x25da('0x24')]);}return _0x3cfb10[_0x25da('0x6c')](_0x3bfb5a);}})[_0x25da('0x2d')](function(_0x624a51){if(_0x624a51){return _0x624a51?{'count':_0x5f1993,'rows':_0x624a51}:null;}})[_0x25da('0x2d')](respondWithResult(_0xc391b9,null))['catch'](handleError(_0xc391b9,null));};exports[_0x25da('0x6d')]=function(_0x31d208,_0x1494cf,_0x5c9fb2){var _0x2df508=_0x31d208[_0x25da('0x5c')]['ids'];return db[_0x25da('0x6e')][_0x25da('0x61')]({'where':{'id':_0x2df508},'attributes':['id'],'include':[{'model':db['User'],'as':'Agents','attributes':['id',_0x25da('0x34'),_0x25da('0x6f'),_0x25da('0x70'),'interface'],'raw':!![]}]})['then'](function(_0x570869){if(_0x570869){var _0x4362dd=_[_0x25da('0x71')](_0x570869,function(_0x20fda0){var _0x40a664=_0x20fda0[_0x25da('0x57')]({'plain':!![]});return _0x40a664[_0x25da('0x72')];});return db['WhatsappQueue']['find']({'where':{'id':_0x31d208[_0x25da('0x52')]['id']}})['then'](function(_0x3cb7f2){return db[_0x25da('0x73')][_0x25da('0x74')](function(_0x9f4d3d){return _0x3cb7f2[_0x25da('0x6d')](_0x2df508,{'transaction':_0x9f4d3d})[_0x25da('0x2d')](function(){return BPromise[_0x25da('0x75')](_0x4362dd,function(_0x53276d){return db['UserWhatsappQueue'][_0x25da('0x76')]({'where':{'UserId':_0x53276d['id'],'WhatsappQueueId':_0x31d208[_0x25da('0x52')]['id']},'transaction':_0x9f4d3d});});})['then'](function(){_0x4362dd[_0x25da('0x77')](function(_0x1e331d){socket['emit'](_0x25da('0x78'),{'UserId':_0x1e331d['id'],'WhatsappQueueId':_0x3cb7f2['id']});});});});});}})['then'](respondWithStatusCode(_0x1494cf,null))[_0x25da('0x50')](handleError(_0x1494cf,null));};exports['removeTeams']=function(_0x45dbe6,_0x5352ea,_0x3e20ce){return db[_0x25da('0x6e')][_0x25da('0x61')]({'where':{'id':_0x45dbe6[_0x25da('0x3d')]['ids']},'attributes':['id'],'include':[{'model':db[_0x25da('0x62')],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0x25da('0x2d')](handleEntityNotFound(_0x5352ea,null))['then'](function(_0x577a3e){var _0x4cc811=_[_0x25da('0x37')](_0x577a3e,'id');var _0x82d8e0=[];var _0x1c1a19=[];var _0x5aff41=squel['select']();_0x5aff41[_0x25da('0x79')](_0x25da('0x7a'))[_0x25da('0x7b')](_0x25da('0x7c'),'tq')[_0x25da('0x7d')](_0x25da('0x7e'),'ut',_0x25da('0x7f'))['where'](_0x25da('0x80'),_0x45dbe6[_0x25da('0x52')]['id']);for(var _0x30a3e6=0x0;_0x30a3e6<_0x577a3e[_0x25da('0x42')];_0x30a3e6+=0x1){let _0x9eb4ac=_0x577a3e[_0x30a3e6];for(var _0x5cf51e=0x0;_0x5cf51e<_0x9eb4ac['Agents'][_0x25da('0x42')];_0x5cf51e+=0x1){let _0x13a348=_0x9eb4ac[_0x25da('0x72')][_0x5cf51e];var _0xd0225a=_0x5aff41['clone']();_0xd0225a['where'](_0x25da('0x81'),_0x13a348['id']);_0x1c1a19['push'](db[_0x25da('0x73')][_0x25da('0x3d')](_0xd0225a['toString'](),{'type':db[_0x25da('0x73')]['QueryTypes'][_0x25da('0x82')]})[_0x25da('0x2d')](function(_0x1f653e){if(_0x1f653e['length']===0x1){return _0x13a348['id'];}else{var _0x2b2a93=_[_0x25da('0x83')](_[_0x25da('0x37')](_0x1f653e,_0x25da('0x84')),function(_0x2a9ae8){return _['includes'](_0x4cc811,_0x2a9ae8);});if(_0x2b2a93){return _0x13a348['id'];}}}));}}return BPromise[_0x25da('0x85')](_0x1c1a19)[_0x25da('0x2d')](function(_0x42ef79){_0x82d8e0=_(_0x82d8e0)[_0x25da('0x86')](_0x42ef79)[_0x25da('0x87')]()[_0x25da('0x88')]();return db[_0x25da('0x4d')][_0x25da('0x53')]({'where':{'id':_0x45dbe6[_0x25da('0x52')]['id']}})[_0x25da('0x2d')](function(_0x31ee78){return db['sequelize']['transaction'](function(_0x33baae){return _0x31ee78[_0x25da('0x89')](_0x45dbe6[_0x25da('0x3d')]['ids'],{'transaction':_0x33baae})[_0x25da('0x2d')](function(){if(!_[_0x25da('0x8a')](_0x82d8e0)){return _0x31ee78[_0x25da('0x8b')](_0x82d8e0,{'transaction':_0x33baae});}})[_0x25da('0x2d')](function(){_0x82d8e0[_0x25da('0x77')](function(_0x563df1){socket[_0x25da('0x8c')]('userWhatsappQueue:remove',{'UserId':_0x563df1,'WhatsappQueueId':_0x31ee78['id']});});});});});});})[_0x25da('0x2d')](respondWithStatusCode(_0x5352ea,null))['catch'](handleError(_0x5352ea,null));};exports[_0x25da('0x8d')]=function(_0x1223bb,_0x27a967,_0x305894){return db['WhatsappQueue'][_0x25da('0x53')]({'where':{'id':_0x1223bb['params']['id']}})['then'](handleEntityNotFound(_0x27a967,null))[_0x25da('0x2d')](function(_0x10efec){if(_0x10efec){return _0x10efec[_0x25da('0x8d')](_0x1223bb[_0x25da('0x5c')]['ids'],_[_0x25da('0x8e')](_0x1223bb[_0x25da('0x5c')],['ids','id'])||{})[_0x25da('0x8f')](function(_0x550f48){for(var _0x17b651=0x0;_0x17b651<_0x1223bb['body'][_0x25da('0x90')][_0x25da('0x42')];_0x17b651+=0x1){socket[_0x25da('0x8c')]('userWhatsappQueue:save',{'UserId':Number(_0x1223bb['body']['ids'][_0x17b651]),'WhatsappQueueId':Number(_0x1223bb[_0x25da('0x52')]['id'])});}return _0x550f48;});}})[_0x25da('0x2d')](respondWithResult(_0x27a967,null))[_0x25da('0x50')](handleError(_0x27a967,null));};exports[_0x25da('0x8b')]=function(_0x1c93dc,_0x99353d,_0x48f014){return db[_0x25da('0x4d')][_0x25da('0x53')]({'where':{'id':_0x1c93dc['params']['id']}})[_0x25da('0x2d')](handleEntityNotFound(_0x99353d,null))['then'](function(_0xf9f3ba){if(_0xf9f3ba){return _0xf9f3ba[_0x25da('0x8b')](_0x1c93dc[_0x25da('0x3d')]['ids'])[_0x25da('0x2d')](function(){if(_[_0x25da('0x91')](_0x1c93dc[_0x25da('0x3d')][_0x25da('0x90')])){for(var _0x25d015=0x0;_0x25d015<_0x1c93dc[_0x25da('0x3d')]['ids'][_0x25da('0x42')];_0x25d015+=0x1){socket[_0x25da('0x8c')](_0x25da('0x92'),{'UserId':Number(_0x1c93dc['query']['ids'][_0x25d015]),'WhatsappQueueId':Number(_0x1c93dc['params']['id'])});}}else{socket[_0x25da('0x8c')](_0x25da('0x92'),{'UserId':Number(_0x1c93dc[_0x25da('0x3d')][_0x25da('0x90')]),'WhatsappQueueId':Number(_0x1c93dc['params']['id'])});}});}})[_0x25da('0x2d')](respondWithStatusCode(_0x99353d,null))['catch'](handleError(_0x99353d,null));};exports[_0x25da('0x93')]=function(_0x1ad20e,_0x22ff08,_0x19d9c8){var _0x102911={};var _0x5403bf={};var _0x1ab5a1;var _0x492753;return db['WhatsappQueue'][_0x25da('0x5e')]({'where':{'id':_0x1ad20e['params']['id']}})[_0x25da('0x2d')](handleEntityNotFound(_0x22ff08,null))['then'](function(_0x1fd776){if(_0x1fd776){_0x1ab5a1=_0x1fd776;_0x5403bf[_0x25da('0x3c')]=_[_0x25da('0x3e')](db[_0x25da('0x62')][_0x25da('0x38')]);_0x5403bf['query']=_[_0x25da('0x3e')](_0x1ad20e[_0x25da('0x3d')]);_0x5403bf['filters']=_['intersection'](_0x5403bf[_0x25da('0x3c')],_0x5403bf[_0x25da('0x3d')]);_0x102911[_0x25da('0x40')]=_['intersection'](_0x5403bf[_0x25da('0x3c')],qs[_0x25da('0x41')](_0x1ad20e[_0x25da('0x3d')]['fields']));_0x102911[_0x25da('0x40')]=_0x102911['attributes'][_0x25da('0x42')]?_0x102911[_0x25da('0x40')]:_0x5403bf['model'];_0x102911[_0x25da('0x45')]=qs[_0x25da('0x46')](_0x1ad20e[_0x25da('0x3d')][_0x25da('0x46')]);_0x102911[_0x25da('0x47')]=qs['filters'](_[_0x25da('0x6b')](_0x1ad20e[_0x25da('0x3d')],_0x5403bf[_0x25da('0x48')]));if(_0x1ad20e[_0x25da('0x3d')][_0x25da('0x49')]){_0x102911[_0x25da('0x47')]=_[_0x25da('0x4a')](_0x102911['where'],{'$or':_[_0x25da('0x37')](_0x102911[_0x25da('0x40')],function(_0xbd37f6){var _0x23ff35={};_0x23ff35[_0xbd37f6]={'$like':'%'+_0x1ad20e[_0x25da('0x3d')]['filter']+'%'};return _0x23ff35;})});}_0x102911=_['merge']({},_0x102911,_0x1ad20e[_0x25da('0x4c')]);return _0x1ab5a1[_0x25da('0x93')](_0x102911);}})[_0x25da('0x2d')](function(_0x3735e3){if(_0x3735e3){_0x492753=_0x3735e3[_0x25da('0x42')];if(!_0x1ad20e[_0x25da('0x3d')][_0x25da('0x43')](_0x25da('0x44'))){_0x102911[_0x25da('0x26')]=qs[_0x25da('0x26')](_0x1ad20e[_0x25da('0x3d')]['limit']);_0x102911[_0x25da('0x24')]=qs[_0x25da('0x24')](_0x1ad20e[_0x25da('0x3d')][_0x25da('0x24')]);}return _0x1ab5a1[_0x25da('0x93')](_0x102911);}})[_0x25da('0x2d')](function(_0x487e31){if(_0x487e31){return _0x487e31?{'count':_0x492753,'rows':_0x487e31}:null;}})[_0x25da('0x2d')](respondWithResult(_0x22ff08,null))[_0x25da('0x50')](handleError(_0x22ff08,null));};
\ No newline at end of file
index 6aae84e..c1662f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaaf1=['emit','hasOwnProperty','hook','exports','../../mysqldb','WhatsappQueue','save','update','remove'];(function(_0x599f41,_0x4db732){var _0x2e4d58=function(_0x14c882){while(--_0x14c882){_0x599f41['push'](_0x599f41['shift']());}};_0x2e4d58(++_0x4db732);}(_0xaaf1,0x109));var _0x1aaf=function(_0x24d474,_0xdf655e){_0x24d474=_0x24d474-0x0;var _0x5a3b8e=_0xaaf1[_0x24d474];return _0x5a3b8e;};'use strict';var EventEmitter=require('events');var WhatsappQueue=require(_0x1aaf('0x0'))['db'][_0x1aaf('0x1')];var WhatsappQueueEvents=new EventEmitter();WhatsappQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x1aaf('0x2'),'afterUpdate':_0x1aaf('0x3'),'afterDestroy':_0x1aaf('0x4')};function emitEvent(_0x49f0fe){return function(_0x1d3ae6,_0x539699,_0x514d7c){WhatsappQueueEvents[_0x1aaf('0x5')](_0x49f0fe+':'+_0x1d3ae6['id'],_0x1d3ae6);WhatsappQueueEvents['emit'](_0x49f0fe,_0x1d3ae6);_0x514d7c(null);};}for(var e in events){if(events[_0x1aaf('0x6')](e)){var event=events[e];WhatsappQueue[_0x1aaf('0x7')](e,emitEvent(event));}}module[_0x1aaf('0x8')]=WhatsappQueueEvents;
\ No newline at end of file
+var _0x802a=['WhatsappQueue','save','update','remove','emit','hasOwnProperty','hook','events'];(function(_0x155b34,_0x5d5f34){var _0x1cabe4=function(_0x4f6b26){while(--_0x4f6b26){_0x155b34['push'](_0x155b34['shift']());}};_0x1cabe4(++_0x5d5f34);}(_0x802a,0x9f));var _0xa802=function(_0x59d89e,_0x55edf5){_0x59d89e=_0x59d89e-0x0;var _0x554e93=_0x802a[_0x59d89e];return _0x554e93;};'use strict';var EventEmitter=require(_0xa802('0x0'));var WhatsappQueue=require('../../mysqldb')['db'][_0xa802('0x1')];var WhatsappQueueEvents=new EventEmitter();WhatsappQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xa802('0x2'),'afterUpdate':_0xa802('0x3'),'afterDestroy':_0xa802('0x4')};function emitEvent(_0x37a3f1){return function(_0x35e8de,_0x5d1c12,_0x3b8b89){WhatsappQueueEvents[_0xa802('0x5')](_0x37a3f1+':'+_0x35e8de['id'],_0x35e8de);WhatsappQueueEvents[_0xa802('0x5')](_0x37a3f1,_0x35e8de);_0x3b8b89(null);};}for(var e in events){if(events[_0xa802('0x6')](e)){var event=events[e];WhatsappQueue[_0xa802('0x7')](e,emitEvent(event));}}module['exports']=WhatsappQueueEvents;
\ No newline at end of file
index 1cf7e4a..024ff98 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x58c6=['../../config/environment','./whatsappQueue.attributes','lodash','util','api','moment','bluebird','path'];(function(_0x5805d7,_0x3d584a){var _0x170fe4=function(_0x3b9b73){while(--_0x3b9b73){_0x5805d7['push'](_0x5805d7['shift']());}};_0x170fe4(++_0x3d584a);}(_0x58c6,0x122));var _0x658c=function(_0x95411e,_0x38b4c3){_0x95411e=_0x95411e-0x0;var _0x2c8718=_0x58c6[_0x95411e];return _0x2c8718;};'use strict';var _=require(_0x658c('0x0'));var util=require(_0x658c('0x1'));var logger=require('../../config/logger')(_0x658c('0x2'));var moment=require(_0x658c('0x3'));var BPromise=require(_0x658c('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x658c('0x5'));var rimraf=require('rimraf');var config=require(_0x658c('0x6'));var attributes=require(_0x658c('0x7'));module['exports']=function(_0xe3f20a,_0x270c0e){return _0xe3f20a['define']('WhatsappQueue',attributes,{'tableName':'whatsapp_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa06c=['api','bluebird','request-promise','path','rimraf','../../config/environment','./whatsappQueue.attributes','define','WhatsappQueue','whatsapp_queues','lodash','util','../../config/logger'];(function(_0x297bbe,_0x145037){var _0x3fc47f=function(_0x37fa3d){while(--_0x37fa3d){_0x297bbe['push'](_0x297bbe['shift']());}};_0x3fc47f(++_0x145037);}(_0xa06c,0xf4));var _0xca06=function(_0x595f65,_0x3713c1){_0x595f65=_0x595f65-0x0;var _0x1c3e9c=_0xa06c[_0x595f65];return _0x1c3e9c;};'use strict';var _=require(_0xca06('0x0'));var util=require(_0xca06('0x1'));var logger=require(_0xca06('0x2'))(_0xca06('0x3'));var moment=require('moment');var BPromise=require(_0xca06('0x4'));var rp=require(_0xca06('0x5'));var fs=require('fs');var path=require(_0xca06('0x6'));var rimraf=require(_0xca06('0x7'));var config=require(_0xca06('0x8'));var attributes=require(_0xca06('0x9'));module['exports']=function(_0x7185de,_0x5d36c9){return _0x7185de[_0xca06('0xa')](_0xca06('0xb'),attributes,{'tableName':_0xca06('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2373ff5..c970755 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e94=['error','code','message','catch','GetWhatsappQueue','WhatsappQueue','options','raw','where','limit','include','model','attributes','map','then','ShowWhatsappQueue','find','debug','lodash','util','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./whatsappQueue.socket','register','request','info','WhatsappQueue,\x20%s,\x20%s','WhatsappQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x2ef548,_0x3f534f){var _0x3b1cb9=function(_0x319457){while(--_0x319457){_0x2ef548['push'](_0x2ef548['shift']());}};_0x3b1cb9(++_0x3f534f);}(_0x1e94,0x8d));var _0x41e9=function(_0x312944,_0x594eba){_0x312944=_0x312944-0x0;var _0x996a46=_0x1e94[_0x312944];return _0x996a46;};'use strict';var _=require(_0x41e9('0x0'));var util=require(_0x41e9('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x41e9('0x2'));var db=require(_0x41e9('0x3'))['db'];var utils=require(_0x41e9('0x4'));var logger=require(_0x41e9('0x5'))(_0x41e9('0x6'));var config=require(_0x41e9('0x7'));var jayson=require(_0x41e9('0x8'));var client=jayson[_0x41e9('0x9')][_0x41e9('0xa')]({'port':0x232a});config[_0x41e9('0xb')]=_[_0x41e9('0xc')](config[_0x41e9('0xb')],{'host':_0x41e9('0xd'),'port':0x18eb});var socket=require(_0x41e9('0xe'))(new Redis(config['redis']));require(_0x41e9('0xf'))[_0x41e9('0x10')](socket);function respondWithRpcPromise(_0x1876cb,_0x599f02,_0xd25bcb){return new BPromise(function(_0x432657,_0x2ac80e){return client[_0x41e9('0x11')](_0x1876cb,_0xd25bcb)['then'](function(_0x650d1c){logger[_0x41e9('0x12')](_0x41e9('0x13'),_0x599f02,'request\x20sent');logger['debug'](_0x41e9('0x14'),_0x599f02,_0x41e9('0x15'),JSON[_0x41e9('0x16')](_0x650d1c));if(_0x650d1c[_0x41e9('0x17')]){if(_0x650d1c[_0x41e9('0x17')][_0x41e9('0x18')]===0x1f4){logger[_0x41e9('0x17')](_0x41e9('0x13'),_0x599f02,_0x650d1c[_0x41e9('0x17')][_0x41e9('0x19')]);return _0x2ac80e(_0x650d1c['error']['message']);}logger[_0x41e9('0x17')](_0x41e9('0x13'),_0x599f02,_0x650d1c[_0x41e9('0x17')][_0x41e9('0x19')]);return _0x432657(_0x650d1c[_0x41e9('0x17')]['message']);}else{logger['info']('WhatsappQueue,\x20%s,\x20%s',_0x599f02,_0x41e9('0x15'));_0x432657(_0x650d1c['result'][_0x41e9('0x19')]);}})[_0x41e9('0x1a')](function(_0x4f064b){logger[_0x41e9('0x17')](_0x41e9('0x13'),_0x599f02,_0x4f064b);_0x2ac80e(_0x4f064b);});});}exports[_0x41e9('0x1b')]=function(_0x1ce457){var _0x3d98bb=this;return new Promise(function(_0x72480e,_0x12f4d0){return db[_0x41e9('0x1c')]['findAll']({'raw':_0x1ce457[_0x41e9('0x1d')]?_0x1ce457['options'][_0x41e9('0x1e')]===undefined?!![]:![]:!![],'where':_0x1ce457[_0x41e9('0x1d')]?_0x1ce457[_0x41e9('0x1d')][_0x41e9('0x1f')]||null:null,'attributes':_0x1ce457[_0x41e9('0x1d')]?_0x1ce457['options']['attributes']||null:null,'limit':_0x1ce457[_0x41e9('0x1d')]?_0x1ce457[_0x41e9('0x1d')][_0x41e9('0x20')]||null:null,'include':_0x1ce457[_0x41e9('0x1d')]?_0x1ce457[_0x41e9('0x1d')][_0x41e9('0x21')]?_['map'](_0x1ce457[_0x41e9('0x1d')][_0x41e9('0x21')],function(_0x240fbd){return{'model':db[_0x240fbd[_0x41e9('0x22')]],'as':_0x240fbd['as'],'attributes':_0x240fbd[_0x41e9('0x23')],'include':_0x240fbd[_0x41e9('0x21')]?_[_0x41e9('0x24')](_0x240fbd[_0x41e9('0x21')],function(_0x541d0a){return{'model':db[_0x541d0a[_0x41e9('0x22')]],'as':_0x541d0a['as'],'attributes':_0x541d0a[_0x41e9('0x23')],'include':_0x541d0a[_0x41e9('0x21')]?_[_0x41e9('0x24')](_0x541d0a[_0x41e9('0x21')],function(_0x11a54a){return{'model':db[_0x11a54a[_0x41e9('0x22')]],'as':_0x11a54a['as'],'attributes':_0x11a54a[_0x41e9('0x23')]};}):[]};}):[]};}):[]:[]})[_0x41e9('0x25')](function(_0x78cb91){logger[_0x41e9('0x12')](_0x41e9('0x1b'),_0x1ce457);logger['debug'](_0x41e9('0x1b'),_0x1ce457,JSON[_0x41e9('0x16')](_0x78cb91));_0x72480e(_0x78cb91);})[_0x41e9('0x1a')](function(_0x5c31a7){logger[_0x41e9('0x17')](_0x41e9('0x1b'),_0x5c31a7[_0x41e9('0x19')],_0x1ce457);_0x12f4d0(_0x3d98bb[_0x41e9('0x17')](0x1f4,_0x5c31a7[_0x41e9('0x19')]));});});};exports[_0x41e9('0x26')]=function(_0x3917d6){var _0x41bc28=this;return new Promise(function(_0x13bcdd,_0x15a7e3){return db['WhatsappQueue'][_0x41e9('0x27')]({'raw':_0x3917d6[_0x41e9('0x1d')]?_0x3917d6[_0x41e9('0x1d')]['raw']===undefined?!![]:![]:!![],'where':_0x3917d6[_0x41e9('0x1d')]?_0x3917d6['options'][_0x41e9('0x1f')]||null:null,'attributes':_0x3917d6[_0x41e9('0x1d')]?_0x3917d6[_0x41e9('0x1d')]['attributes']||null:null,'include':_0x3917d6[_0x41e9('0x1d')]?_0x3917d6['options'][_0x41e9('0x21')]?_[_0x41e9('0x24')](_0x3917d6[_0x41e9('0x1d')][_0x41e9('0x21')],function(_0xf9a3b1){return{'model':db[_0xf9a3b1[_0x41e9('0x22')]],'as':_0xf9a3b1['as'],'attributes':_0xf9a3b1[_0x41e9('0x23')],'include':_0xf9a3b1[_0x41e9('0x21')]?_[_0x41e9('0x24')](_0xf9a3b1['include'],function(_0x19c202){return{'model':db[_0x19c202[_0x41e9('0x22')]],'as':_0x19c202['as'],'attributes':_0x19c202[_0x41e9('0x23')],'include':_0x19c202[_0x41e9('0x21')]?_['map'](_0x19c202[_0x41e9('0x21')],function(_0x1e4527){return{'model':db[_0x1e4527[_0x41e9('0x22')]],'as':_0x1e4527['as'],'attributes':_0x1e4527[_0x41e9('0x23')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x40aec0){logger[_0x41e9('0x12')]('ShowWhatsappQueue',_0x3917d6);logger[_0x41e9('0x28')]('ShowWhatsappQueue',_0x3917d6,JSON['stringify'](_0x40aec0));_0x13bcdd(_0x40aec0);})[_0x41e9('0x1a')](function(_0x4db8c5){logger[_0x41e9('0x17')]('ShowWhatsappQueue',_0x4db8c5[_0x41e9('0x19')],_0x3917d6);_0x15a7e3(_0x41bc28[_0x41e9('0x17')](0x1f4,_0x4db8c5[_0x41e9('0x19')]));});});};
\ No newline at end of file
+var _0xba6d=['WhatsappQueue','findAll','options','where','limit','include','map','model','attributes','debug','catch','ShowWhatsappQueue','find','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','redis','localhost','./whatsappQueue.socket','register','request','then','info','WhatsappQueue,\x20%s,\x20%s','request\x20sent','WhatsappQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','result','GetWhatsappQueue'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xba6d,0x193));var _0xdba6=function(_0x50f474,_0x3c3f46){_0x50f474=_0x50f474-0x0;var _0x11befd=_0xba6d[_0x50f474];return _0x11befd;};'use strict';var _=require(_0xdba6('0x0'));var util=require(_0xdba6('0x1'));var moment=require(_0xdba6('0x2'));var BPromise=require('bluebird');var rs=require(_0xdba6('0x3'));var fs=require('fs');var Redis=require(_0xdba6('0x4'));var db=require(_0xdba6('0x5'))['db'];var utils=require(_0xdba6('0x6'));var logger=require(_0xdba6('0x7'))(_0xdba6('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xdba6('0x9')][_0xdba6('0xa')]({'port':0x232a});config[_0xdba6('0xb')]=_['defaults'](config[_0xdba6('0xb')],{'host':_0xdba6('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xdba6('0xd'))[_0xdba6('0xe')](socket);function respondWithRpcPromise(_0x3199f1,_0x286139,_0xbc79fe){return new BPromise(function(_0x590781,_0x840b18){return client[_0xdba6('0xf')](_0x3199f1,_0xbc79fe)[_0xdba6('0x10')](function(_0x4ab941){logger[_0xdba6('0x11')](_0xdba6('0x12'),_0x286139,_0xdba6('0x13'));logger['debug'](_0xdba6('0x14'),_0x286139,_0xdba6('0x13'),JSON[_0xdba6('0x15')](_0x4ab941));if(_0x4ab941[_0xdba6('0x16')]){if(_0x4ab941['error']['code']===0x1f4){logger[_0xdba6('0x16')](_0xdba6('0x12'),_0x286139,_0x4ab941['error'][_0xdba6('0x17')]);return _0x840b18(_0x4ab941['error'][_0xdba6('0x17')]);}logger['error'](_0xdba6('0x12'),_0x286139,_0x4ab941[_0xdba6('0x16')][_0xdba6('0x17')]);return _0x590781(_0x4ab941[_0xdba6('0x16')][_0xdba6('0x17')]);}else{logger['info'](_0xdba6('0x12'),_0x286139,'request\x20sent');_0x590781(_0x4ab941[_0xdba6('0x18')]['message']);}})['catch'](function(_0x9c15eb){logger[_0xdba6('0x16')](_0xdba6('0x12'),_0x286139,_0x9c15eb);_0x840b18(_0x9c15eb);});});}exports[_0xdba6('0x19')]=function(_0x45d3b){var _0x2493c0=this;return new Promise(function(_0x3e07a9,_0x3d8b90){return db[_0xdba6('0x1a')][_0xdba6('0x1b')]({'raw':_0x45d3b[_0xdba6('0x1c')]?_0x45d3b[_0xdba6('0x1c')]['raw']===undefined?!![]:![]:!![],'where':_0x45d3b[_0xdba6('0x1c')]?_0x45d3b['options'][_0xdba6('0x1d')]||null:null,'attributes':_0x45d3b[_0xdba6('0x1c')]?_0x45d3b[_0xdba6('0x1c')]['attributes']||null:null,'limit':_0x45d3b[_0xdba6('0x1c')]?_0x45d3b[_0xdba6('0x1c')][_0xdba6('0x1e')]||null:null,'include':_0x45d3b[_0xdba6('0x1c')]?_0x45d3b[_0xdba6('0x1c')][_0xdba6('0x1f')]?_[_0xdba6('0x20')](_0x45d3b[_0xdba6('0x1c')][_0xdba6('0x1f')],function(_0x3305c0){return{'model':db[_0x3305c0[_0xdba6('0x21')]],'as':_0x3305c0['as'],'attributes':_0x3305c0[_0xdba6('0x22')],'include':_0x3305c0[_0xdba6('0x1f')]?_['map'](_0x3305c0[_0xdba6('0x1f')],function(_0x3b53a5){return{'model':db[_0x3b53a5[_0xdba6('0x21')]],'as':_0x3b53a5['as'],'attributes':_0x3b53a5[_0xdba6('0x22')],'include':_0x3b53a5[_0xdba6('0x1f')]?_[_0xdba6('0x20')](_0x3b53a5[_0xdba6('0x1f')],function(_0x415c0c){return{'model':db[_0x415c0c['model']],'as':_0x415c0c['as'],'attributes':_0x415c0c[_0xdba6('0x22')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4b9773){logger[_0xdba6('0x11')]('GetWhatsappQueue',_0x45d3b);logger[_0xdba6('0x23')](_0xdba6('0x19'),_0x45d3b,JSON[_0xdba6('0x15')](_0x4b9773));_0x3e07a9(_0x4b9773);})[_0xdba6('0x24')](function(_0x4fbfa5){logger[_0xdba6('0x16')]('GetWhatsappQueue',_0x4fbfa5[_0xdba6('0x17')],_0x45d3b);_0x3d8b90(_0x2493c0[_0xdba6('0x16')](0x1f4,_0x4fbfa5[_0xdba6('0x17')]));});});};exports[_0xdba6('0x25')]=function(_0x29509b){var _0x56f53c=this;return new Promise(function(_0x5f20ba,_0x543963){return db[_0xdba6('0x1a')][_0xdba6('0x26')]({'raw':_0x29509b[_0xdba6('0x1c')]?_0x29509b['options']['raw']===undefined?!![]:![]:!![],'where':_0x29509b['options']?_0x29509b['options'][_0xdba6('0x1d')]||null:null,'attributes':_0x29509b[_0xdba6('0x1c')]?_0x29509b[_0xdba6('0x1c')][_0xdba6('0x22')]||null:null,'include':_0x29509b[_0xdba6('0x1c')]?_0x29509b[_0xdba6('0x1c')][_0xdba6('0x1f')]?_['map'](_0x29509b[_0xdba6('0x1c')][_0xdba6('0x1f')],function(_0x8f3373){return{'model':db[_0x8f3373['model']],'as':_0x8f3373['as'],'attributes':_0x8f3373[_0xdba6('0x22')],'include':_0x8f3373[_0xdba6('0x1f')]?_[_0xdba6('0x20')](_0x8f3373[_0xdba6('0x1f')],function(_0x3d70d7){return{'model':db[_0x3d70d7[_0xdba6('0x21')]],'as':_0x3d70d7['as'],'attributes':_0x3d70d7['attributes'],'include':_0x3d70d7['include']?_['map'](_0x3d70d7['include'],function(_0x2a6c85){return{'model':db[_0x2a6c85[_0xdba6('0x21')]],'as':_0x2a6c85['as'],'attributes':_0x2a6c85[_0xdba6('0x22')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2ac0ab){logger[_0xdba6('0x11')](_0xdba6('0x25'),_0x29509b);logger[_0xdba6('0x23')](_0xdba6('0x25'),_0x29509b,JSON[_0xdba6('0x15')](_0x2ac0ab));_0x5f20ba(_0x2ac0ab);})['catch'](function(_0x535151){logger[_0xdba6('0x16')](_0xdba6('0x25'),_0x535151[_0xdba6('0x17')],_0x29509b);_0x543963(_0x56f53c[_0xdba6('0x16')](0x1f4,_0x535151[_0xdba6('0x17')]));});});};
\ No newline at end of file
index 1d9f121..4d69b93 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ef7=['length','./whatsappQueue.events','emit','register'];(function(_0x1d230d,_0x312764){var _0x284ee9=function(_0x4ffde8){while(--_0x4ffde8){_0x1d230d['push'](_0x1d230d['shift']());}};_0x284ee9(++_0x312764);}(_0x2ef7,0x1f1));var _0x72ef=function(_0x58b47a,_0x444c72){_0x58b47a=_0x58b47a-0x0;var _0x5e9eba=_0x2ef7[_0x58b47a];return _0x5e9eba;};'use strict';var WhatsappQueueEvents=require(_0x72ef('0x0'));var events=['save','remove','update'];function createListener(_0x11e308,_0x1208b5){return function(_0x4857ad){_0x1208b5[_0x72ef('0x1')](_0x11e308,_0x4857ad);};}function removeListener(_0x3a18fe,_0x5b17d3){return function(){WhatsappQueueEvents['removeListener'](_0x3a18fe,_0x5b17d3);};}exports[_0x72ef('0x2')]=function(_0x1d728f){for(var _0x50a93b=0x0,_0x908ec7=events[_0x72ef('0x3')];_0x50a93b<_0x908ec7;_0x50a93b++){var _0x41f830=events[_0x50a93b];var _0x1b298e=createListener('whatsappQueue:'+_0x41f830,_0x1d728f);WhatsappQueueEvents['on'](_0x41f830,_0x1b298e);}};
\ No newline at end of file
+var _0xff91=['update','emit','register','length','save','remove'];(function(_0x24f31b,_0x44b8f3){var _0x488401=function(_0x204caf){while(--_0x204caf){_0x24f31b['push'](_0x24f31b['shift']());}};_0x488401(++_0x44b8f3);}(_0xff91,0xa6));var _0x1ff9=function(_0x336d4f,_0x2234cc){_0x336d4f=_0x336d4f-0x0;var _0x55374d=_0xff91[_0x336d4f];return _0x55374d;};'use strict';var WhatsappQueueEvents=require('./whatsappQueue.events');var events=[_0x1ff9('0x0'),_0x1ff9('0x1'),_0x1ff9('0x2')];function createListener(_0xaa6036,_0x145cce){return function(_0x1fb000){_0x145cce[_0x1ff9('0x3')](_0xaa6036,_0x1fb000);};}function removeListener(_0x4e5a3c,_0x409d1b){return function(){WhatsappQueueEvents['removeListener'](_0x4e5a3c,_0x409d1b);};}exports[_0x1ff9('0x4')]=function(_0x572f5b){for(var _0x4abe9d=0x0,_0x1944f6=events[_0x1ff9('0x5')];_0x4abe9d<_0x1944f6;_0x4abe9d++){var _0x1b46c6=events[_0x4abe9d];var _0x391e8a=createListener('whatsappQueue:'+_0x1b46c6,_0x572f5b);WhatsappQueueEvents['on'](_0x1b46c6,_0x391e8a);}};
\ No newline at end of file
index 1f8cb94..a6d91d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2c50=['put','update','delete','exports','multer','util','path','connect-timeout','express','Router','../../components/interaction/service','./whatsappQueueReport.controller','isAuthenticated','index','get','/describe','describe','show','create'];(function(_0x40927b,_0xf9b0a0){var _0x2635e8=function(_0x1f2b8c){while(--_0x1f2b8c){_0x40927b['push'](_0x40927b['shift']());}};_0x2635e8(++_0xf9b0a0);}(_0x2c50,0x180));var _0x02c5=function(_0x13ff53,_0x5e1424){_0x13ff53=_0x13ff53-0x0;var _0x290228=_0x2c50[_0x13ff53];return _0x290228;};'use strict';var multer=require(_0x02c5('0x0'));var util=require(_0x02c5('0x1'));var path=require(_0x02c5('0x2'));var timeout=require(_0x02c5('0x3'));var express=require(_0x02c5('0x4'));var router=express[_0x02c5('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x02c5('0x6'));var config=require('../../config/environment');var controller=require(_0x02c5('0x7'));router['get']('/',auth[_0x02c5('0x8')](),controller[_0x02c5('0x9')]);router[_0x02c5('0xa')](_0x02c5('0xb'),auth[_0x02c5('0x8')](),controller[_0x02c5('0xc')]);router['get']('/:id',auth[_0x02c5('0x8')](),controller[_0x02c5('0xd')]);router['post']('/',auth[_0x02c5('0x8')](),controller[_0x02c5('0xe')]);router[_0x02c5('0xf')]('/:id',auth[_0x02c5('0x8')](),controller[_0x02c5('0x10')]);router[_0x02c5('0x11')]('/:id',auth[_0x02c5('0x8')](),controller['destroy']);module[_0x02c5('0x12')]=router;
\ No newline at end of file
+var _0xcd8c=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappQueueReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','put','update','destroy','exports','path','express'];(function(_0x29c9eb,_0x3d680b){var _0x438352=function(_0x1e5198){while(--_0x1e5198){_0x29c9eb['push'](_0x29c9eb['shift']());}};_0x438352(++_0x3d680b);}(_0xcd8c,0x1cc));var _0xccd8=function(_0x51ab83,_0x2721b9){_0x51ab83=_0x51ab83-0x0;var _0x14b6de=_0xcd8c[_0x51ab83];return _0x14b6de;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xccd8('0x0'));var timeout=require('connect-timeout');var express=require(_0xccd8('0x1'));var router=express[_0xccd8('0x2')]();var fs_extra=require(_0xccd8('0x3'));var auth=require(_0xccd8('0x4'));var interaction=require(_0xccd8('0x5'));var config=require(_0xccd8('0x6'));var controller=require(_0xccd8('0x7'));router[_0xccd8('0x8')]('/',auth[_0xccd8('0x9')](),controller[_0xccd8('0xa')]);router[_0xccd8('0x8')](_0xccd8('0xb'),auth[_0xccd8('0x9')](),controller[_0xccd8('0xc')]);router['get'](_0xccd8('0xd'),auth['isAuthenticated'](),controller[_0xccd8('0xe')]);router[_0xccd8('0xf')]('/',auth[_0xccd8('0x9')](),controller[_0xccd8('0x10')]);router[_0xccd8('0x11')](_0xccd8('0xd'),auth[_0xccd8('0x9')](),controller[_0xccd8('0x12')]);router['delete'](_0xccd8('0xd'),auth[_0xccd8('0x9')](),controller[_0xccd8('0x13')]);module[_0xccd8('0x14')]=router;
\ No newline at end of file
index e87f8a4..86c12f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['STRING','DATE','sequelize','exports'];(function(_0x3d2690,_0x4aaddc){var _0xb8ad18=function(_0x5da1ea){while(--_0x5da1ea){_0x3d2690['push'](_0x3d2690['shift']());}};_0xb8ad18(++_0x4aaddc);}(_0x7a54,0x106));var _0x47a5=function(_0x4ed5b0,_0x5f00e1){_0x4ed5b0=_0x4ed5b0-0x0;var _0x43ba95=_0x7a54[_0x4ed5b0];return _0x43ba95;};'use strict';var Sequelize=require(_0x47a5('0x0'));module[_0x47a5('0x1')]={'uniqueid':{'type':Sequelize[_0x47a5('0x2')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x47a5('0x3')]},'leaveAt':{'type':Sequelize[_0x47a5('0x3')]},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0x47a5('0x3')]},'reason':{'type':Sequelize[_0x47a5('0x2')]}};
\ No newline at end of file
+var _0x7a54=['STRING','DATE','sequelize','exports'];(function(_0xbf7411,_0x28ad11){var _0x5632d5=function(_0x49c33e){while(--_0x49c33e){_0xbf7411['push'](_0xbf7411['shift']());}};_0x5632d5(++_0x28ad11);}(_0x7a54,0x106));var _0x47a5=function(_0xa826b,_0x2937dd){_0xa826b=_0xa826b-0x0;var _0x59a16c=_0x7a54[_0xa826b];return _0x59a16c;};'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 c4f49aa..8fab968 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfef3=['offset','limit','undefined','count','status','set','Content-Range','apply','reject','save','update','destroy','stack','name','send','map','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','WhatsappQueueReport','then','includeAll','include','findAll','rows','catch','show','params','fields','create','body','find','describe','eml-format','zip-dir','request-promise','moment','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','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','json'];(function(_0xc5a279,_0x155360){var _0xc755d3=function(_0x15051c){while(--_0x15051c){_0xc5a279['push'](_0xc5a279['shift']());}};_0xc755d3(++_0x155360);}(_0xfef3,0x118));var _0x3fef=function(_0xf2f5de,_0x10038b){_0xf2f5de=_0xf2f5de-0x0;var _0x1be255=_0xfef3[_0xf2f5de];return _0x1be255;};'use strict';var emlformat=require(_0x3fef('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x3fef('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x3fef('0x2'));var moment=require(_0x3fef('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x3fef('0x4'));var util=require(_0x3fef('0x5'));var path=require('path');var sox=require(_0x3fef('0x6'));var csv=require(_0x3fef('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x3fef('0x8'));var _=require(_0x3fef('0x9'));var squel=require(_0x3fef('0xa'));var crypto=require(_0x3fef('0xb'));var jsforce=require(_0x3fef('0xc'));var deskjs=require(_0x3fef('0xd'));var toCsv=require(_0x3fef('0x7'));var querystring=require(_0x3fef('0xe'));var Papa=require(_0x3fef('0xf'));var Redis=require(_0x3fef('0x10'));var authService=require(_0x3fef('0x11'));var qs=require(_0x3fef('0x12'));var as=require(_0x3fef('0x13'));var hardwareService=require(_0x3fef('0x14'));var logger=require('../../config/logger')(_0x3fef('0x15'));var utils=require(_0x3fef('0x16'));var config=require(_0x3fef('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x3fef('0x18'))['db'];function respondWithStatusCode(_0x4c4a47,_0x2c99ff){_0x2c99ff=_0x2c99ff||0xcc;return function(_0x3d2c2d){if(_0x3d2c2d){return _0x4c4a47[_0x3fef('0x19')](_0x2c99ff);}return _0x4c4a47['status'](_0x2c99ff)[_0x3fef('0x1a')]();};}function respondWithResult(_0x4be62f,_0x15b757){_0x15b757=_0x15b757||0xc8;return function(_0x14c053){if(_0x14c053){return _0x4be62f['status'](_0x15b757)[_0x3fef('0x1b')](_0x14c053);}};}function respondWithFilteredResult(_0x177e28,_0x40b479){return function(_0x79b617){if(_0x79b617){var _0x395df0=typeof _0x40b479[_0x3fef('0x1c')]==='undefined'&&typeof _0x40b479[_0x3fef('0x1d')]===_0x3fef('0x1e');var _0x1ec282=_0x79b617[_0x3fef('0x1f')];var _0x1613ad=_0x395df0?0x0:_0x40b479[_0x3fef('0x1c')];var _0x53d993=_0x395df0?_0x79b617[_0x3fef('0x1f')]:_0x40b479[_0x3fef('0x1c')]+_0x40b479['limit'];var _0x2c7f36;if(_0x53d993>=_0x1ec282){_0x53d993=_0x1ec282;_0x2c7f36=0xc8;}else{_0x2c7f36=0xce;}_0x177e28[_0x3fef('0x20')](_0x2c7f36);return _0x177e28[_0x3fef('0x21')](_0x3fef('0x22'),_0x1613ad+'-'+_0x53d993+'/'+_0x1ec282)[_0x3fef('0x1b')](_0x79b617);}return null;};}function patchUpdates(_0x2b5226){return function(_0x451d11){try{jsonpatch[_0x3fef('0x23')](_0x451d11,_0x2b5226,!![]);}catch(_0x124e7c){return BPromise[_0x3fef('0x24')](_0x124e7c);}return _0x451d11[_0x3fef('0x25')]();};}function saveUpdates(_0x3bb110,_0x2eb578){return function(_0x39a8ea){if(_0x39a8ea){return _0x39a8ea[_0x3fef('0x26')](_0x3bb110)['then'](function(_0x5b56de){return _0x5b56de;});}return null;};}function removeEntity(_0x50025f,_0x378b03){return function(_0x3ba38d){if(_0x3ba38d){return _0x3ba38d[_0x3fef('0x27')]()['then'](function(){_0x50025f[_0x3fef('0x20')](0xcc)['end']();});}};}function handleEntityNotFound(_0x45464b,_0x2c0848){return function(_0x64d3e6){if(!_0x64d3e6){_0x45464b[_0x3fef('0x19')](0x194);}return _0x64d3e6;};}function handleError(_0x30e17a,_0x492ea0){_0x492ea0=_0x492ea0||0x1f4;return function(_0x4b4dee){logger['error'](_0x4b4dee[_0x3fef('0x28')]);if(_0x4b4dee[_0x3fef('0x29')]){delete _0x4b4dee['name'];}_0x30e17a[_0x3fef('0x20')](_0x492ea0)[_0x3fef('0x2a')](_0x4b4dee);};}exports['index']=function(_0x30a954,_0x3bdf03){var _0xf892bb={},_0x2b73fb={},_0x3a1a0a={'count':0x0,'rows':[]};var _0x137849=_[_0x3fef('0x2b')](db['WhatsappQueueReport'][_0x3fef('0x2c')],function(_0xc20ce5){return{'name':_0xc20ce5[_0x3fef('0x2d')],'type':_0xc20ce5[_0x3fef('0x2e')]['key']};});_0x2b73fb[_0x3fef('0x2f')]=_['map'](_0x137849,_0x3fef('0x29'));_0x2b73fb[_0x3fef('0x30')]=_[_0x3fef('0x31')](_0x30a954[_0x3fef('0x30')]);_0x2b73fb[_0x3fef('0x32')]=_[_0x3fef('0x33')](_0x2b73fb[_0x3fef('0x2f')],_0x2b73fb[_0x3fef('0x30')]);_0xf892bb[_0x3fef('0x34')]=_[_0x3fef('0x33')](_0x2b73fb['model'],qs['fields'](_0x30a954[_0x3fef('0x30')]['fields']));_0xf892bb[_0x3fef('0x34')]=_0xf892bb[_0x3fef('0x34')][_0x3fef('0x35')]?_0xf892bb[_0x3fef('0x34')]:_0x2b73fb[_0x3fef('0x2f')];if(!_0x30a954[_0x3fef('0x30')][_0x3fef('0x36')](_0x3fef('0x37'))){_0xf892bb[_0x3fef('0x1d')]=qs[_0x3fef('0x1d')](_0x30a954[_0x3fef('0x30')][_0x3fef('0x1d')]);_0xf892bb[_0x3fef('0x1c')]=qs[_0x3fef('0x1c')](_0x30a954['query'][_0x3fef('0x1c')]);}_0xf892bb[_0x3fef('0x38')]=qs[_0x3fef('0x39')](_0x30a954[_0x3fef('0x30')][_0x3fef('0x39')]);_0xf892bb[_0x3fef('0x3a')]=qs['filters'](_['pick'](_0x30a954[_0x3fef('0x30')],_0x2b73fb[_0x3fef('0x32')]),_0x137849);if(_0x30a954[_0x3fef('0x30')][_0x3fef('0x3b')]){_0xf892bb[_0x3fef('0x3a')]=_[_0x3fef('0x3c')](_0xf892bb[_0x3fef('0x3a')],{'$or':_[_0x3fef('0x2b')](_0x137849,function(_0x1fa70f){if(_0x1fa70f[_0x3fef('0x2e')]!==_0x3fef('0x3d')){var _0x560aae={};_0x560aae[_0x1fa70f[_0x3fef('0x29')]]={'$like':'%'+_0x30a954[_0x3fef('0x30')]['filter']+'%'};return _0x560aae;}})});}_0xf892bb=_['merge']({},_0xf892bb,_0x30a954[_0x3fef('0x3e')]);var _0x3dda68={'where':_0xf892bb[_0x3fef('0x3a')]};return db[_0x3fef('0x3f')][_0x3fef('0x1f')](_0x3dda68)[_0x3fef('0x40')](function(_0x17aff8){_0x3a1a0a[_0x3fef('0x1f')]=_0x17aff8;if(_0x30a954['query'][_0x3fef('0x41')]){_0xf892bb[_0x3fef('0x42')]=[{'all':!![]}];}return db[_0x3fef('0x3f')][_0x3fef('0x43')](_0xf892bb);})[_0x3fef('0x40')](function(_0x2143ec){_0x3a1a0a[_0x3fef('0x44')]=_0x2143ec;return _0x3a1a0a;})[_0x3fef('0x40')](respondWithFilteredResult(_0x3bdf03,_0xf892bb))[_0x3fef('0x45')](handleError(_0x3bdf03,null));};exports[_0x3fef('0x46')]=function(_0x12867c,_0x254880){var _0x2e1d7f={'raw':!![],'where':{'id':_0x12867c[_0x3fef('0x47')]['id']}},_0x15d2c7={};_0x15d2c7['model']=_[_0x3fef('0x31')](db[_0x3fef('0x3f')][_0x3fef('0x2c')]);_0x15d2c7[_0x3fef('0x30')]=_[_0x3fef('0x31')](_0x12867c[_0x3fef('0x30')]);_0x15d2c7['filters']=_[_0x3fef('0x33')](_0x15d2c7['model'],_0x15d2c7[_0x3fef('0x30')]);_0x2e1d7f[_0x3fef('0x34')]=_['intersection'](_0x15d2c7[_0x3fef('0x2f')],qs['fields'](_0x12867c[_0x3fef('0x30')][_0x3fef('0x48')]));_0x2e1d7f[_0x3fef('0x34')]=_0x2e1d7f[_0x3fef('0x34')][_0x3fef('0x35')]?_0x2e1d7f[_0x3fef('0x34')]:_0x15d2c7[_0x3fef('0x2f')];if(_0x12867c[_0x3fef('0x30')][_0x3fef('0x41')]){_0x2e1d7f[_0x3fef('0x42')]=[{'all':!![]}];}_0x2e1d7f=_[_0x3fef('0x3c')]({},_0x2e1d7f,_0x12867c[_0x3fef('0x3e')]);return db[_0x3fef('0x3f')]['find'](_0x2e1d7f)[_0x3fef('0x40')](handleEntityNotFound(_0x254880,null))[_0x3fef('0x40')](respondWithResult(_0x254880,null))['catch'](handleError(_0x254880,null));};exports[_0x3fef('0x49')]=function(_0x4210d6,_0x2f00c0){return db['WhatsappQueueReport'][_0x3fef('0x49')](_0x4210d6[_0x3fef('0x4a')],{})['then'](respondWithResult(_0x2f00c0,0xc9))[_0x3fef('0x45')](handleError(_0x2f00c0,null));};exports['update']=function(_0x48322c,_0x15fb2c){if(_0x48322c['body']['id']){delete _0x48322c[_0x3fef('0x4a')]['id'];}return db[_0x3fef('0x3f')]['find']({'where':{'id':_0x48322c[_0x3fef('0x47')]['id']}})[_0x3fef('0x40')](handleEntityNotFound(_0x15fb2c,null))[_0x3fef('0x40')](saveUpdates(_0x48322c['body'],null))[_0x3fef('0x40')](respondWithResult(_0x15fb2c,null))[_0x3fef('0x45')](handleError(_0x15fb2c,null));};exports[_0x3fef('0x27')]=function(_0x5b1acb,_0x324f70){return db[_0x3fef('0x3f')][_0x3fef('0x4b')]({'where':{'id':_0x5b1acb[_0x3fef('0x47')]['id']}})[_0x3fef('0x40')](handleEntityNotFound(_0x324f70,null))['then'](removeEntity(_0x324f70,null))[_0x3fef('0x45')](handleError(_0x324f70,null));};exports[_0x3fef('0x4c')]=function(_0x39a4b1,_0x2b9275){return db[_0x3fef('0x3f')][_0x3fef('0x4c')]()[_0x3fef('0x40')](respondWithResult(_0x2b9275,null))[_0x3fef('0x45')](handleError(_0x2b9275,null));};
\ No newline at end of file
+var _0xb10b=['fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','reject','update','then','destroy','end','error','stack','name','send','index','map','rawAttributes','fieldName','key','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','VIRTUAL','filter','merge','options','WhatsappQueueReport','includeAll','include','rows','show','params','find','catch','create','body','describe','eml-format','zip-dir'];(function(_0x16e7f4,_0x517118){var _0xe38c96=function(_0x3f33ab){while(--_0x3f33ab){_0x16e7f4['push'](_0x16e7f4['shift']());}};_0xe38c96(++_0x517118);}(_0xb10b,0x12a));var _0xbb10=function(_0x3c2407,_0x3c9a47){_0x3c2407=_0x3c2407-0x0;var _0x5d2eac=_0xb10b[_0x3c2407];return _0x5d2eac;};'use strict';var emlformat=require(_0xbb10('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xbb10('0x1'));var jsonpatch=require(_0xbb10('0x2'));var rp=require(_0xbb10('0x3'));var moment=require('moment');var BPromise=require(_0xbb10('0x4'));var Mustache=require(_0xbb10('0x5'));var util=require(_0xbb10('0x6'));var path=require(_0xbb10('0x7'));var sox=require(_0xbb10('0x8'));var csv=require(_0xbb10('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xbb10('0xa'));var _=require(_0xbb10('0xb'));var squel=require('squel');var crypto=require(_0xbb10('0xc'));var jsforce=require(_0xbb10('0xd'));var deskjs=require(_0xbb10('0xe'));var toCsv=require(_0xbb10('0x9'));var querystring=require(_0xbb10('0xf'));var Papa=require(_0xbb10('0x10'));var Redis=require(_0xbb10('0x11'));var authService=require(_0xbb10('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xbb10('0x13'));var logger=require(_0xbb10('0x14'))(_0xbb10('0x15'));var utils=require('../../config/utils');var config=require(_0xbb10('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xbb10('0x17'))['db'];function respondWithStatusCode(_0x916a32,_0x285009){_0x285009=_0x285009||0xcc;return function(_0x193a27){if(_0x193a27){return _0x916a32[_0xbb10('0x18')](_0x285009);}return _0x916a32[_0xbb10('0x19')](_0x285009)['end']();};}function respondWithResult(_0x26e021,_0x42d7e4){_0x42d7e4=_0x42d7e4||0xc8;return function(_0x45b9d6){if(_0x45b9d6){return _0x26e021[_0xbb10('0x19')](_0x42d7e4)[_0xbb10('0x1a')](_0x45b9d6);}};}function respondWithFilteredResult(_0x2f2ebf,_0x24a57b){return function(_0x36b5e8){if(_0x36b5e8){var _0x3e26f4=typeof _0x24a57b[_0xbb10('0x1b')]==='undefined'&&typeof _0x24a57b[_0xbb10('0x1c')]===_0xbb10('0x1d');var _0x133ac2=_0x36b5e8[_0xbb10('0x1e')];var _0x378da8=_0x3e26f4?0x0:_0x24a57b[_0xbb10('0x1b')];var _0x575cca=_0x3e26f4?_0x36b5e8[_0xbb10('0x1e')]:_0x24a57b[_0xbb10('0x1b')]+_0x24a57b[_0xbb10('0x1c')];var _0x48b6e9;if(_0x575cca>=_0x133ac2){_0x575cca=_0x133ac2;_0x48b6e9=0xc8;}else{_0x48b6e9=0xce;}_0x2f2ebf[_0xbb10('0x19')](_0x48b6e9);return _0x2f2ebf[_0xbb10('0x1f')](_0xbb10('0x20'),_0x378da8+'-'+_0x575cca+'/'+_0x133ac2)[_0xbb10('0x1a')](_0x36b5e8);}return null;};}function patchUpdates(_0xdf237d){return function(_0x44e563){try{jsonpatch['apply'](_0x44e563,_0xdf237d,!![]);}catch(_0x12f888){return BPromise[_0xbb10('0x21')](_0x12f888);}return _0x44e563['save']();};}function saveUpdates(_0x4c4b0d,_0x8e2b97){return function(_0x311abe){if(_0x311abe){return _0x311abe[_0xbb10('0x22')](_0x4c4b0d)[_0xbb10('0x23')](function(_0x445761){return _0x445761;});}return null;};}function removeEntity(_0x1824b7,_0x407cb4){return function(_0x436104){if(_0x436104){return _0x436104[_0xbb10('0x24')]()[_0xbb10('0x23')](function(){_0x1824b7[_0xbb10('0x19')](0xcc)[_0xbb10('0x25')]();});}};}function handleEntityNotFound(_0x537898,_0x4fedac){return function(_0x4fb5e0){if(!_0x4fb5e0){_0x537898[_0xbb10('0x18')](0x194);}return _0x4fb5e0;};}function handleError(_0x3c5ae7,_0x2c89b9){_0x2c89b9=_0x2c89b9||0x1f4;return function(_0x4e25ff){logger[_0xbb10('0x26')](_0x4e25ff[_0xbb10('0x27')]);if(_0x4e25ff[_0xbb10('0x28')]){delete _0x4e25ff[_0xbb10('0x28')];}_0x3c5ae7[_0xbb10('0x19')](_0x2c89b9)[_0xbb10('0x29')](_0x4e25ff);};}exports[_0xbb10('0x2a')]=function(_0x4aabb9,_0x3796c7){var _0x21ac54={},_0xfc3595={},_0x2e0249={'count':0x0,'rows':[]};var _0x1d30aa=_[_0xbb10('0x2b')](db['WhatsappQueueReport'][_0xbb10('0x2c')],function(_0x4ee02e){return{'name':_0x4ee02e[_0xbb10('0x2d')],'type':_0x4ee02e['type'][_0xbb10('0x2e')]};});_0xfc3595[_0xbb10('0x2f')]=_[_0xbb10('0x2b')](_0x1d30aa,'name');_0xfc3595['query']=_[_0xbb10('0x30')](_0x4aabb9[_0xbb10('0x31')]);_0xfc3595['filters']=_[_0xbb10('0x32')](_0xfc3595[_0xbb10('0x2f')],_0xfc3595[_0xbb10('0x31')]);_0x21ac54[_0xbb10('0x33')]=_[_0xbb10('0x32')](_0xfc3595[_0xbb10('0x2f')],qs[_0xbb10('0x34')](_0x4aabb9['query'][_0xbb10('0x34')]));_0x21ac54[_0xbb10('0x33')]=_0x21ac54[_0xbb10('0x33')][_0xbb10('0x35')]?_0x21ac54[_0xbb10('0x33')]:_0xfc3595[_0xbb10('0x2f')];if(!_0x4aabb9[_0xbb10('0x31')][_0xbb10('0x36')](_0xbb10('0x37'))){_0x21ac54['limit']=qs[_0xbb10('0x1c')](_0x4aabb9[_0xbb10('0x31')][_0xbb10('0x1c')]);_0x21ac54[_0xbb10('0x1b')]=qs['offset'](_0x4aabb9[_0xbb10('0x31')]['offset']);}_0x21ac54['order']=qs[_0xbb10('0x38')](_0x4aabb9[_0xbb10('0x31')][_0xbb10('0x38')]);_0x21ac54[_0xbb10('0x39')]=qs[_0xbb10('0x3a')](_[_0xbb10('0x3b')](_0x4aabb9['query'],_0xfc3595[_0xbb10('0x3a')]),_0x1d30aa);if(_0x4aabb9[_0xbb10('0x31')]['filter']){_0x21ac54['where']=_['merge'](_0x21ac54[_0xbb10('0x39')],{'$or':_[_0xbb10('0x2b')](_0x1d30aa,function(_0x2b658a){if(_0x2b658a['type']!==_0xbb10('0x3c')){var _0x3e8538={};_0x3e8538[_0x2b658a[_0xbb10('0x28')]]={'$like':'%'+_0x4aabb9['query'][_0xbb10('0x3d')]+'%'};return _0x3e8538;}})});}_0x21ac54=_[_0xbb10('0x3e')]({},_0x21ac54,_0x4aabb9[_0xbb10('0x3f')]);var _0x446f49={'where':_0x21ac54['where']};return db[_0xbb10('0x40')][_0xbb10('0x1e')](_0x446f49)['then'](function(_0xe2040f){_0x2e0249[_0xbb10('0x1e')]=_0xe2040f;if(_0x4aabb9[_0xbb10('0x31')][_0xbb10('0x41')]){_0x21ac54[_0xbb10('0x42')]=[{'all':!![]}];}return db[_0xbb10('0x40')]['findAll'](_0x21ac54);})[_0xbb10('0x23')](function(_0x1c7fae){_0x2e0249[_0xbb10('0x43')]=_0x1c7fae;return _0x2e0249;})[_0xbb10('0x23')](respondWithFilteredResult(_0x3796c7,_0x21ac54))['catch'](handleError(_0x3796c7,null));};exports[_0xbb10('0x44')]=function(_0x331751,_0x23dc18){var _0x403beb={'raw':!![],'where':{'id':_0x331751[_0xbb10('0x45')]['id']}},_0x5e2cfa={};_0x5e2cfa[_0xbb10('0x2f')]=_['keys'](db['WhatsappQueueReport'][_0xbb10('0x2c')]);_0x5e2cfa['query']=_[_0xbb10('0x30')](_0x331751[_0xbb10('0x31')]);_0x5e2cfa['filters']=_[_0xbb10('0x32')](_0x5e2cfa[_0xbb10('0x2f')],_0x5e2cfa[_0xbb10('0x31')]);_0x403beb['attributes']=_[_0xbb10('0x32')](_0x5e2cfa[_0xbb10('0x2f')],qs[_0xbb10('0x34')](_0x331751[_0xbb10('0x31')][_0xbb10('0x34')]));_0x403beb[_0xbb10('0x33')]=_0x403beb[_0xbb10('0x33')][_0xbb10('0x35')]?_0x403beb[_0xbb10('0x33')]:_0x5e2cfa[_0xbb10('0x2f')];if(_0x331751[_0xbb10('0x31')][_0xbb10('0x41')]){_0x403beb['include']=[{'all':!![]}];}_0x403beb=_[_0xbb10('0x3e')]({},_0x403beb,_0x331751[_0xbb10('0x3f')]);return db['WhatsappQueueReport'][_0xbb10('0x46')](_0x403beb)[_0xbb10('0x23')](handleEntityNotFound(_0x23dc18,null))[_0xbb10('0x23')](respondWithResult(_0x23dc18,null))[_0xbb10('0x47')](handleError(_0x23dc18,null));};exports[_0xbb10('0x48')]=function(_0x39f0de,_0x3e06b0){return db['WhatsappQueueReport']['create'](_0x39f0de[_0xbb10('0x49')],{})[_0xbb10('0x23')](respondWithResult(_0x3e06b0,0xc9))[_0xbb10('0x47')](handleError(_0x3e06b0,null));};exports['update']=function(_0x5f0c12,_0x3cd6f3){if(_0x5f0c12[_0xbb10('0x49')]['id']){delete _0x5f0c12[_0xbb10('0x49')]['id'];}return db[_0xbb10('0x40')][_0xbb10('0x46')]({'where':{'id':_0x5f0c12[_0xbb10('0x45')]['id']}})[_0xbb10('0x23')](handleEntityNotFound(_0x3cd6f3,null))[_0xbb10('0x23')](saveUpdates(_0x5f0c12[_0xbb10('0x49')],null))[_0xbb10('0x23')](respondWithResult(_0x3cd6f3,null))['catch'](handleError(_0x3cd6f3,null));};exports['destroy']=function(_0x412e13,_0x467dba){return db[_0xbb10('0x40')][_0xbb10('0x46')]({'where':{'id':_0x412e13[_0xbb10('0x45')]['id']}})[_0xbb10('0x23')](handleEntityNotFound(_0x467dba,null))[_0xbb10('0x23')](removeEntity(_0x467dba,null))[_0xbb10('0x47')](handleError(_0x467dba,null));};exports[_0xbb10('0x4a')]=function(_0x1214f7,_0x19ca3e){return db[_0xbb10('0x40')][_0xbb10('0x4a')]()[_0xbb10('0x23')](respondWithResult(_0x19ca3e,null))[_0xbb10('0x47')](handleError(_0x19ca3e,null));};
\ No newline at end of file
index 31c6697..fec4980 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e36=['define','WhatsappQueueReport','uniqueid','lodash','util','api','moment','bluebird','path','rimraf','../../config/environment','./whatsappQueueReport.attributes','exports'];(function(_0xdd642,_0x5949fd){var _0x409035=function(_0x412f3d){while(--_0x412f3d){_0xdd642['push'](_0xdd642['shift']());}};_0x409035(++_0x5949fd);}(_0x5e36,0x1d7));var _0x65e3=function(_0x166677,_0x436edb){_0x166677=_0x166677-0x0;var _0x2b57ba=_0x5e36[_0x166677];return _0x2b57ba;};'use strict';var _=require(_0x65e3('0x0'));var util=require(_0x65e3('0x1'));var logger=require('../../config/logger')(_0x65e3('0x2'));var moment=require(_0x65e3('0x3'));var BPromise=require(_0x65e3('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x65e3('0x5'));var rimraf=require(_0x65e3('0x6'));var config=require(_0x65e3('0x7'));var attributes=require(_0x65e3('0x8'));module[_0x65e3('0x9')]=function(_0x53259b,_0x3f17a4){return _0x53259b[_0x65e3('0xa')](_0x65e3('0xb'),attributes,{'tableName':'report_whatsapp_queue','paranoid':![],'indexes':[{'name':_0x65e3('0xc'),'fields':[_0x65e3('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xfbcb=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','./whatsappQueueReport.attributes','exports','define','report_whatsapp_queue','uniqueid'];(function(_0x3899d1,_0x4aa04c){var _0xeb4a7d=function(_0x3ea5ee){while(--_0x3ea5ee){_0x3899d1['push'](_0x3899d1['shift']());}};_0xeb4a7d(++_0x4aa04c);}(_0xfbcb,0x180));var _0xbfbc=function(_0x5d6f2f,_0x1706cc){_0x5d6f2f=_0x5d6f2f-0x0;var _0x435ffb=_0xfbcb[_0x5d6f2f];return _0x435ffb;};'use strict';var _=require(_0xbfbc('0x0'));var util=require(_0xbfbc('0x1'));var logger=require(_0xbfbc('0x2'))(_0xbfbc('0x3'));var moment=require(_0xbfbc('0x4'));var BPromise=require(_0xbfbc('0x5'));var rp=require(_0xbfbc('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xbfbc('0x7'));module[_0xbfbc('0x8')]=function(_0x3619ee,_0x248cac){return _0x3619ee[_0xbfbc('0x9')]('WhatsappQueueReport',attributes,{'tableName':_0xbfbc('0xa'),'paranoid':![],'indexes':[{'name':_0xbfbc('0xb'),'fields':[_0xbfbc('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index bcc4e3a..4db8db4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc2af=['where','attributes','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','request\x20sent','WhatsappQueueReport,\x20%s,\x20%s,\x20%s','stringify','code','error','WhatsappQueueReport,\x20%s,\x20%s','message','result','catch','CreateWhatsappQueueReport','create','body','options','debug','UpdateWhatsappQueueReport','WhatsappQueueReport','update','raw'];(function(_0x7277f,_0x86fcf9){var _0xf31450=function(_0x1d571d){while(--_0x1d571d){_0x7277f['push'](_0x7277f['shift']());}};_0xf31450(++_0x86fcf9);}(_0xc2af,0x1bc));var _0xfc2a=function(_0xe94b0b,_0x3e28d5){_0xe94b0b=_0xe94b0b-0x0;var _0x2be2c7=_0xc2af[_0xe94b0b];return _0x2be2c7;};'use strict';var _=require(_0xfc2a('0x0'));var util=require('util');var moment=require(_0xfc2a('0x1'));var BPromise=require('bluebird');var rs=require(_0xfc2a('0x2'));var fs=require('fs');var Redis=require(_0xfc2a('0x3'));var db=require(_0xfc2a('0x4'))['db'];var utils=require(_0xfc2a('0x5'));var logger=require(_0xfc2a('0x6'))(_0xfc2a('0x7'));var config=require(_0xfc2a('0x8'));var jayson=require(_0xfc2a('0x9'));var client=jayson['client'][_0xfc2a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4c193b,_0x4330c3,_0x5cc7fc){return new BPromise(function(_0x1b96b1,_0x1427a6){return client[_0xfc2a('0xb')](_0x4c193b,_0x5cc7fc)[_0xfc2a('0xc')](function(_0x4c826a){logger[_0xfc2a('0xd')]('WhatsappQueueReport,\x20%s,\x20%s',_0x4330c3,_0xfc2a('0xe'));logger['debug'](_0xfc2a('0xf'),_0x4330c3,_0xfc2a('0xe'),JSON[_0xfc2a('0x10')](_0x4c826a));if(_0x4c826a['error']){if(_0x4c826a['error'][_0xfc2a('0x11')]===0x1f4){logger[_0xfc2a('0x12')](_0xfc2a('0x13'),_0x4330c3,_0x4c826a[_0xfc2a('0x12')][_0xfc2a('0x14')]);return _0x1427a6(_0x4c826a[_0xfc2a('0x12')][_0xfc2a('0x14')]);}logger[_0xfc2a('0x12')](_0xfc2a('0x13'),_0x4330c3,_0x4c826a['error']['message']);return _0x1b96b1(_0x4c826a[_0xfc2a('0x12')][_0xfc2a('0x14')]);}else{logger['info'](_0xfc2a('0x13'),_0x4330c3,_0xfc2a('0xe'));_0x1b96b1(_0x4c826a[_0xfc2a('0x15')][_0xfc2a('0x14')]);}})[_0xfc2a('0x16')](function(_0xa93aa7){logger[_0xfc2a('0x12')](_0xfc2a('0x13'),_0x4330c3,_0xa93aa7);_0x1427a6(_0xa93aa7);});});}exports[_0xfc2a('0x17')]=function(_0x1e1524){var _0x43edb3=this;return new Promise(function(_0x39bcb2,_0x27fb82){return db['WhatsappQueueReport'][_0xfc2a('0x18')](_0x1e1524[_0xfc2a('0x19')],{'raw':_0x1e1524['options']?_0x1e1524[_0xfc2a('0x1a')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x3e88fe){logger[_0xfc2a('0xd')](_0xfc2a('0x17'),_0x1e1524);logger[_0xfc2a('0x1b')](_0xfc2a('0x17'),_0x1e1524,JSON['stringify'](_0x3e88fe));_0x39bcb2(_0x3e88fe);})[_0xfc2a('0x16')](function(_0x4908d7){logger['error']('CreateWhatsappQueueReport',_0x4908d7[_0xfc2a('0x14')],_0x1e1524);_0x27fb82(_0x43edb3['error'](0x1f4,_0x4908d7['message']));});});};exports[_0xfc2a('0x1c')]=function(_0x10396d){var _0x2c732c=this;return new Promise(function(_0x7c9bb5,_0x55ed0a){return db[_0xfc2a('0x1d')][_0xfc2a('0x1e')](_0x10396d[_0xfc2a('0x19')],{'raw':_0x10396d['options']?_0x10396d[_0xfc2a('0x1a')][_0xfc2a('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x10396d['options']?_0x10396d['options'][_0xfc2a('0x20')]||null:null,'attributes':_0x10396d['options']?_0x10396d[_0xfc2a('0x1a')][_0xfc2a('0x21')]||null:null,'limit':_0x10396d[_0xfc2a('0x1a')]?_0x10396d[_0xfc2a('0x1a')]['limit']||null:null})['then'](function(_0x5f4165){logger[_0xfc2a('0xd')](_0xfc2a('0x1c'),_0x10396d);logger['debug'](_0xfc2a('0x1c'),_0x10396d,JSON[_0xfc2a('0x10')](_0x5f4165));_0x7c9bb5(_0x5f4165);})[_0xfc2a('0x16')](function(_0xec7c14){logger[_0xfc2a('0x12')](_0xfc2a('0x1c'),_0xec7c14[_0xfc2a('0x14')],_0x10396d);_0x55ed0a(_0x2c732c[_0xfc2a('0x12')](0x1f4,_0xec7c14[_0xfc2a('0x14')]));});});};
\ No newline at end of file
+var _0xa006=['../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','WhatsappQueueReport,\x20%s,\x20%s','request\x20sent','error','code','message','result','CreateWhatsappQueueReport','WhatsappQueueReport','create','body','options','info','debug','stringify','UpdateWhatsappQueueReport','update','attributes','limit','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb'];(function(_0x3785a5,_0x26eda9){var _0x26acf9=function(_0x33bb1f){while(--_0x33bb1f){_0x3785a5['push'](_0x3785a5['shift']());}};_0x26acf9(++_0x26eda9);}(_0xa006,0x17a));var _0x6a00=function(_0x23f74d,_0x2462a4){_0x23f74d=_0x23f74d-0x0;var _0x1e7bca=_0xa006[_0x23f74d];return _0x1e7bca;};'use strict';var _=require(_0x6a00('0x0'));var util=require(_0x6a00('0x1'));var moment=require(_0x6a00('0x2'));var BPromise=require(_0x6a00('0x3'));var rs=require(_0x6a00('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6a00('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x6a00('0x6'))(_0x6a00('0x7'));var config=require(_0x6a00('0x8'));var jayson=require(_0x6a00('0x9'));var client=jayson[_0x6a00('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x16d45e,_0x2bba9c,_0x27939a){return new BPromise(function(_0x199af7,_0x497c08){return client[_0x6a00('0xb')](_0x16d45e,_0x27939a)[_0x6a00('0xc')](function(_0x227857){logger['info'](_0x6a00('0xd'),_0x2bba9c,_0x6a00('0xe'));logger['debug']('WhatsappQueueReport,\x20%s,\x20%s,\x20%s',_0x2bba9c,'request\x20sent',JSON['stringify'](_0x227857));if(_0x227857[_0x6a00('0xf')]){if(_0x227857[_0x6a00('0xf')][_0x6a00('0x10')]===0x1f4){logger['error']('WhatsappQueueReport,\x20%s,\x20%s',_0x2bba9c,_0x227857[_0x6a00('0xf')][_0x6a00('0x11')]);return _0x497c08(_0x227857[_0x6a00('0xf')][_0x6a00('0x11')]);}logger[_0x6a00('0xf')](_0x6a00('0xd'),_0x2bba9c,_0x227857[_0x6a00('0xf')][_0x6a00('0x11')]);return _0x199af7(_0x227857[_0x6a00('0xf')][_0x6a00('0x11')]);}else{logger['info'](_0x6a00('0xd'),_0x2bba9c,_0x6a00('0xe'));_0x199af7(_0x227857[_0x6a00('0x12')][_0x6a00('0x11')]);}})['catch'](function(_0x1e105e){logger[_0x6a00('0xf')](_0x6a00('0xd'),_0x2bba9c,_0x1e105e);_0x497c08(_0x1e105e);});});}exports[_0x6a00('0x13')]=function(_0x1440b7){var _0x1b3660=this;return new Promise(function(_0x4b10fe,_0x4f44b4){return db[_0x6a00('0x14')][_0x6a00('0x15')](_0x1440b7[_0x6a00('0x16')],{'raw':_0x1440b7[_0x6a00('0x17')]?_0x1440b7[_0x6a00('0x17')]['raw']===undefined?!![]:![]:!![]})[_0x6a00('0xc')](function(_0x53d079){logger[_0x6a00('0x18')](_0x6a00('0x13'),_0x1440b7);logger[_0x6a00('0x19')]('CreateWhatsappQueueReport',_0x1440b7,JSON[_0x6a00('0x1a')](_0x53d079));_0x4b10fe(_0x53d079);})['catch'](function(_0x2567c8){logger[_0x6a00('0xf')](_0x6a00('0x13'),_0x2567c8[_0x6a00('0x11')],_0x1440b7);_0x4f44b4(_0x1b3660[_0x6a00('0xf')](0x1f4,_0x2567c8[_0x6a00('0x11')]));});});};exports[_0x6a00('0x1b')]=function(_0x58bc61){var _0x42455e=this;return new Promise(function(_0x1a02ea,_0x2bc2b3){return db[_0x6a00('0x14')][_0x6a00('0x1c')](_0x58bc61[_0x6a00('0x16')],{'raw':_0x58bc61[_0x6a00('0x17')]?_0x58bc61['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x58bc61[_0x6a00('0x17')]?_0x58bc61[_0x6a00('0x17')]['where']||null:null,'attributes':_0x58bc61['options']?_0x58bc61[_0x6a00('0x17')][_0x6a00('0x1d')]||null:null,'limit':_0x58bc61[_0x6a00('0x17')]?_0x58bc61[_0x6a00('0x17')][_0x6a00('0x1e')]||null:null})[_0x6a00('0xc')](function(_0x1a6dc1){logger[_0x6a00('0x18')](_0x6a00('0x1b'),_0x58bc61);logger[_0x6a00('0x19')](_0x6a00('0x1b'),_0x58bc61,JSON[_0x6a00('0x1a')](_0x1a6dc1));_0x1a02ea(_0x1a6dc1);})[_0x6a00('0x1f')](function(_0x12eea3){logger[_0x6a00('0xf')](_0x6a00('0x1b'),_0x12eea3[_0x6a00('0x11')],_0x58bc61);_0x2bc2b3(_0x42455e[_0x6a00('0xf')](0x1f4,_0x12eea3[_0x6a00('0x11')]));});});};
\ No newline at end of file
index 0e8f6ef..a2e7812 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd5cd=['exports','multer','express','Router','fs-extra','../../components/interaction/service','./whatsappTransferReport.controller','isAuthenticated','get','/describe','describe','/:id','show','post','update','delete','destroy'];(function(_0x285218,_0x23421b){var _0x40afaf=function(_0x41379c){while(--_0x41379c){_0x285218['push'](_0x285218['shift']());}};_0x40afaf(++_0x23421b);}(_0xd5cd,0x1dd));var _0xdd5c=function(_0x3a95cd,_0x11a89b){_0x3a95cd=_0x3a95cd-0x0;var _0x29bcfb=_0xd5cd[_0x3a95cd];return _0x29bcfb;};'use strict';var multer=require(_0xdd5c('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0xdd5c('0x1'));var router=express[_0xdd5c('0x2')]();var fs_extra=require(_0xdd5c('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xdd5c('0x4'));var config=require('../../config/environment');var controller=require(_0xdd5c('0x5'));router['get']('/',auth[_0xdd5c('0x6')](),controller['index']);router[_0xdd5c('0x7')](_0xdd5c('0x8'),auth['isAuthenticated'](),controller[_0xdd5c('0x9')]);router[_0xdd5c('0x7')](_0xdd5c('0xa'),auth[_0xdd5c('0x6')](),controller[_0xdd5c('0xb')]);router[_0xdd5c('0xc')]('/',auth[_0xdd5c('0x6')](),controller['create']);router['put'](_0xdd5c('0xa'),auth[_0xdd5c('0x6')](),controller[_0xdd5c('0xd')]);router[_0xdd5c('0xe')](_0xdd5c('0xa'),auth[_0xdd5c('0x6')](),controller[_0xdd5c('0xf')]);module[_0xdd5c('0x10')]=router;
\ No newline at end of file
+var _0x297a=['path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./whatsappTransferReport.controller','get','isAuthenticated','index','/describe','describe','create','put','/:id','update','delete','exports','multer','util'];(function(_0x40186e,_0x11bef0){var _0x360f8f=function(_0x242324){while(--_0x242324){_0x40186e['push'](_0x40186e['shift']());}};_0x360f8f(++_0x11bef0);}(_0x297a,0xbb));var _0xa297=function(_0x57173f,_0x209f1f){_0x57173f=_0x57173f-0x0;var _0x479016=_0x297a[_0x57173f];return _0x479016;};'use strict';var multer=require(_0xa297('0x0'));var util=require(_0xa297('0x1'));var path=require(_0xa297('0x2'));var timeout=require(_0xa297('0x3'));var express=require(_0xa297('0x4'));var router=express[_0xa297('0x5')]();var fs_extra=require(_0xa297('0x6'));var auth=require(_0xa297('0x7'));var interaction=require(_0xa297('0x8'));var config=require('../../config/environment');var controller=require(_0xa297('0x9'));router[_0xa297('0xa')]('/',auth[_0xa297('0xb')](),controller[_0xa297('0xc')]);router[_0xa297('0xa')](_0xa297('0xd'),auth[_0xa297('0xb')](),controller[_0xa297('0xe')]);router[_0xa297('0xa')]('/:id',auth['isAuthenticated'](),controller['show']);router['post']('/',auth[_0xa297('0xb')](),controller[_0xa297('0xf')]);router[_0xa297('0x10')](_0xa297('0x11'),auth[_0xa297('0xb')](),controller[_0xa297('0x12')]);router[_0xa297('0x13')](_0xa297('0x11'),auth[_0xa297('0xb')](),controller['destroy']);module[_0xa297('0x14')]=router;
\ No newline at end of file
index cfaaa08..4075cc7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a13=['agent','queue','exports','STRING','ENUM','account'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5a13,0x92));var _0x35a1=function(_0x494692,_0x37bd69){_0x494692=_0x494692-0x0;var _0x3cfd51=_0x5a13[_0x494692];return _0x3cfd51;};'use strict';var Sequelize=require('sequelize');module[_0x35a1('0x0')]={'uniqueid':{'type':Sequelize[_0x35a1('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x35a1('0x2')](_0x35a1('0x3'),_0x35a1('0x4'),_0x35a1('0x5')),'allowNull':![]},'transferredAt':{'type':Sequelize['DATE']}};
\ No newline at end of file
+var _0xb12d=['STRING','account','queue','DATE','sequelize','exports'];(function(_0xadb619,_0x3b0970){var _0x3ce7bd=function(_0x518067){while(--_0x518067){_0xadb619['push'](_0xadb619['shift']());}};_0x3ce7bd(++_0x3b0970);}(_0xb12d,0x124));var _0xdb12=function(_0x2e41e2,_0x4e7250){_0x2e41e2=_0x2e41e2-0x0;var _0x2844d6=_0xb12d[_0x2e41e2];return _0x2844d6;};'use strict';var Sequelize=require(_0xdb12('0x0'));module[_0xdb12('0x1')]={'uniqueid':{'type':Sequelize[_0xdb12('0x2')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0xdb12('0x3'),'agent',_0xdb12('0x4')),'allowNull':![]},'transferredAt':{'type':Sequelize[_0xdb12('0x5')]}};
\ No newline at end of file
index f15eac3..8bf639f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x260d=['../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','save','then','error','stack','name','WhatsappTransferReport','rawAttributes','fieldName','type','key','model','map','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','params','options','find','catch','body','destroy','describe','fast-json-patch','bluebird','mustache','path','sox','to-csv','fs-extra','lodash','squel','crypto','querystring','papaparse','ioredis','../../components/auth/service'];(function(_0x15b1b8,_0x2d2c17){var _0x34029d=function(_0x216ea5){while(--_0x216ea5){_0x15b1b8['push'](_0x15b1b8['shift']());}};_0x34029d(++_0x2d2c17);}(_0x260d,0xc4));var _0xd260=function(_0x4124a4,_0x5f17a0){_0x4124a4=_0x4124a4-0x0;var _0x5cc2e7=_0x260d[_0x4124a4];return _0x5cc2e7;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xd260('0x0'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xd260('0x1'));var Mustache=require(_0xd260('0x2'));var util=require('util');var path=require(_0xd260('0x3'));var sox=require(_0xd260('0x4'));var csv=require(_0xd260('0x5'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xd260('0x6'));var _=require(_0xd260('0x7'));var squel=require(_0xd260('0x8'));var crypto=require(_0xd260('0x9'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xd260('0xa'));var Papa=require(_0xd260('0xb'));var Redis=require(_0xd260('0xc'));var authService=require(_0xd260('0xd'));var qs=require(_0xd260('0xe'));var as=require(_0xd260('0xf'));var hardwareService=require(_0xd260('0x10'));var logger=require(_0xd260('0x11'))('api');var utils=require('../../config/utils');var config=require(_0xd260('0x12'));var licenseUtil=require(_0xd260('0x13'));var db=require(_0xd260('0x14'))['db'];function respondWithStatusCode(_0x417c97,_0xb8682f){_0xb8682f=_0xb8682f||0xcc;return function(_0x3e573c){if(_0x3e573c){return _0x417c97[_0xd260('0x15')](_0xb8682f);}return _0x417c97[_0xd260('0x16')](_0xb8682f)[_0xd260('0x17')]();};}function respondWithResult(_0x13027e,_0x2cc44c){_0x2cc44c=_0x2cc44c||0xc8;return function(_0x5cb8fb){if(_0x5cb8fb){return _0x13027e[_0xd260('0x16')](_0x2cc44c)[_0xd260('0x18')](_0x5cb8fb);}};}function respondWithFilteredResult(_0x144494,_0x47340f){return function(_0x2ccc2e){if(_0x2ccc2e){var _0x39641f=typeof _0x47340f[_0xd260('0x19')]===_0xd260('0x1a')&&typeof _0x47340f[_0xd260('0x1b')]===_0xd260('0x1a');var _0x3de5b3=_0x2ccc2e[_0xd260('0x1c')];var _0x54f370=_0x39641f?0x0:_0x47340f[_0xd260('0x19')];var _0x131a53=_0x39641f?_0x2ccc2e[_0xd260('0x1c')]:_0x47340f[_0xd260('0x19')]+_0x47340f[_0xd260('0x1b')];var _0x165114;if(_0x131a53>=_0x3de5b3){_0x131a53=_0x3de5b3;_0x165114=0xc8;}else{_0x165114=0xce;}_0x144494[_0xd260('0x16')](_0x165114);return _0x144494[_0xd260('0x1d')]('Content-Range',_0x54f370+'-'+_0x131a53+'/'+_0x3de5b3)[_0xd260('0x18')](_0x2ccc2e);}return null;};}function patchUpdates(_0x388e13){return function(_0x2da5ec){try{jsonpatch[_0xd260('0x1e')](_0x2da5ec,_0x388e13,!![]);}catch(_0x401052){return BPromise['reject'](_0x401052);}return _0x2da5ec[_0xd260('0x1f')]();};}function saveUpdates(_0x1366a8,_0x304cce){return function(_0x3f35a9){if(_0x3f35a9){return _0x3f35a9['update'](_0x1366a8)[_0xd260('0x20')](function(_0x2c9a03){return _0x2c9a03;});}return null;};}function removeEntity(_0x4267b1,_0xacd283){return function(_0x6e1b58){if(_0x6e1b58){return _0x6e1b58['destroy']()[_0xd260('0x20')](function(){_0x4267b1[_0xd260('0x16')](0xcc)[_0xd260('0x17')]();});}};}function handleEntityNotFound(_0x1801a7,_0x4f91aa){return function(_0x1a6fc1){if(!_0x1a6fc1){_0x1801a7[_0xd260('0x15')](0x194);}return _0x1a6fc1;};}function handleError(_0xb6c5e6,_0x489c2d){_0x489c2d=_0x489c2d||0x1f4;return function(_0xc64d2c){logger[_0xd260('0x21')](_0xc64d2c[_0xd260('0x22')]);if(_0xc64d2c[_0xd260('0x23')]){delete _0xc64d2c[_0xd260('0x23')];}_0xb6c5e6[_0xd260('0x16')](_0x489c2d)['send'](_0xc64d2c);};}exports['index']=function(_0x404a54,_0x22ec23){var _0x439817={},_0x3a80be={},_0xda6d76={'count':0x0,'rows':[]};var _0x78921d=_['map'](db[_0xd260('0x24')][_0xd260('0x25')],function(_0x4b3cca){return{'name':_0x4b3cca[_0xd260('0x26')],'type':_0x4b3cca[_0xd260('0x27')][_0xd260('0x28')]};});_0x3a80be[_0xd260('0x29')]=_[_0xd260('0x2a')](_0x78921d,_0xd260('0x23'));_0x3a80be[_0xd260('0x2b')]=_[_0xd260('0x2c')](_0x404a54[_0xd260('0x2b')]);_0x3a80be['filters']=_['intersection'](_0x3a80be['model'],_0x3a80be['query']);_0x439817['attributes']=_[_0xd260('0x2d')](_0x3a80be[_0xd260('0x29')],qs[_0xd260('0x2e')](_0x404a54['query'][_0xd260('0x2e')]));_0x439817[_0xd260('0x2f')]=_0x439817[_0xd260('0x2f')][_0xd260('0x30')]?_0x439817[_0xd260('0x2f')]:_0x3a80be['model'];if(!_0x404a54[_0xd260('0x2b')][_0xd260('0x31')](_0xd260('0x32'))){_0x439817[_0xd260('0x1b')]=qs['limit'](_0x404a54[_0xd260('0x2b')][_0xd260('0x1b')]);_0x439817['offset']=qs[_0xd260('0x19')](_0x404a54[_0xd260('0x2b')][_0xd260('0x19')]);}_0x439817[_0xd260('0x33')]=qs['sort'](_0x404a54[_0xd260('0x2b')][_0xd260('0x34')]);_0x439817[_0xd260('0x35')]=qs[_0xd260('0x36')](_[_0xd260('0x37')](_0x404a54[_0xd260('0x2b')],_0x3a80be[_0xd260('0x36')]),_0x78921d);if(_0x404a54['query'][_0xd260('0x38')]){_0x439817[_0xd260('0x35')]=_[_0xd260('0x39')](_0x439817[_0xd260('0x35')],{'$or':_['map'](_0x78921d,function(_0x4d7025){if(_0x4d7025[_0xd260('0x27')]!==_0xd260('0x3a')){var _0x48d076={};_0x48d076[_0x4d7025[_0xd260('0x23')]]={'$like':'%'+_0x404a54['query'][_0xd260('0x38')]+'%'};return _0x48d076;}})});}_0x439817=_[_0xd260('0x39')]({},_0x439817,_0x404a54['options']);var _0x2748ae={'where':_0x439817['where']};return db[_0xd260('0x24')]['count'](_0x2748ae)['then'](function(_0xc1b4de){_0xda6d76[_0xd260('0x1c')]=_0xc1b4de;if(_0x404a54[_0xd260('0x2b')][_0xd260('0x3b')]){_0x439817[_0xd260('0x3c')]=[{'all':!![]}];}return db[_0xd260('0x24')][_0xd260('0x3d')](_0x439817);})['then'](function(_0xbb3bda){_0xda6d76[_0xd260('0x3e')]=_0xbb3bda;return _0xda6d76;})[_0xd260('0x20')](respondWithFilteredResult(_0x22ec23,_0x439817))['catch'](handleError(_0x22ec23,null));};exports['show']=function(_0x579e2b,_0x469b6f){var _0x108899={'raw':!![],'where':{'id':_0x579e2b[_0xd260('0x3f')]['id']}},_0x55e308={};_0x55e308[_0xd260('0x29')]=_['keys'](db[_0xd260('0x24')][_0xd260('0x25')]);_0x55e308[_0xd260('0x2b')]=_[_0xd260('0x2c')](_0x579e2b[_0xd260('0x2b')]);_0x55e308[_0xd260('0x36')]=_[_0xd260('0x2d')](_0x55e308[_0xd260('0x29')],_0x55e308[_0xd260('0x2b')]);_0x108899[_0xd260('0x2f')]=_[_0xd260('0x2d')](_0x55e308[_0xd260('0x29')],qs[_0xd260('0x2e')](_0x579e2b[_0xd260('0x2b')][_0xd260('0x2e')]));_0x108899['attributes']=_0x108899[_0xd260('0x2f')][_0xd260('0x30')]?_0x108899[_0xd260('0x2f')]:_0x55e308['model'];if(_0x579e2b['query'][_0xd260('0x3b')]){_0x108899[_0xd260('0x3c')]=[{'all':!![]}];}_0x108899=_[_0xd260('0x39')]({},_0x108899,_0x579e2b[_0xd260('0x40')]);return db['WhatsappTransferReport'][_0xd260('0x41')](_0x108899)[_0xd260('0x20')](handleEntityNotFound(_0x469b6f,null))[_0xd260('0x20')](respondWithResult(_0x469b6f,null))[_0xd260('0x42')](handleError(_0x469b6f,null));};exports['create']=function(_0x2deaba,_0x32edb0){return db[_0xd260('0x24')]['create'](_0x2deaba['body'],{})[_0xd260('0x20')](respondWithResult(_0x32edb0,0xc9))[_0xd260('0x42')](handleError(_0x32edb0,null));};exports['update']=function(_0x30f38d,_0x1d3549){if(_0x30f38d[_0xd260('0x43')]['id']){delete _0x30f38d[_0xd260('0x43')]['id'];}return db[_0xd260('0x24')][_0xd260('0x41')]({'where':{'id':_0x30f38d[_0xd260('0x3f')]['id']}})[_0xd260('0x20')](handleEntityNotFound(_0x1d3549,null))[_0xd260('0x20')](saveUpdates(_0x30f38d[_0xd260('0x43')],null))['then'](respondWithResult(_0x1d3549,null))[_0xd260('0x42')](handleError(_0x1d3549,null));};exports[_0xd260('0x44')]=function(_0x508964,_0x1baf2f){return db[_0xd260('0x24')][_0xd260('0x41')]({'where':{'id':_0x508964[_0xd260('0x3f')]['id']}})[_0xd260('0x20')](handleEntityNotFound(_0x1baf2f,null))[_0xd260('0x20')](removeEntity(_0x1baf2f,null))[_0xd260('0x42')](handleError(_0x1baf2f,null));};exports['describe']=function(_0x1c0f32,_0x3240aa){return db[_0xd260('0x24')][_0xd260('0x45')]()[_0xd260('0x20')](respondWithResult(_0x3240aa,null))['catch'](handleError(_0x3240aa,null));};
\ No newline at end of file
+var _0x7334=['create','body','describe','eml-format','rimraf','zip-dir','moment','mustache','util','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','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','limit','undefined','count','set','Content-Range','apply','save','update','then','destroy','error','name','send','map','WhatsappTransferReport','type','query','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','keys','rawAttributes','length','include','find'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x7334,0x184));var _0x4733=function(_0x58e86f,_0x5ec7d7){_0x58e86f=_0x58e86f-0x0;var _0x207c08=_0x7334[_0x58e86f];return _0x207c08;};'use strict';var emlformat=require(_0x4733('0x0'));var rimraf=require(_0x4733('0x1'));var zipdir=require(_0x4733('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x4733('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x4733('0x4'));var util=require(_0x4733('0x5'));var path=require(_0x4733('0x6'));var sox=require(_0x4733('0x7'));var csv=require(_0x4733('0x8'));var ejs=require(_0x4733('0x9'));var fs=require('fs');var fs_extra=require(_0x4733('0xa'));var _=require(_0x4733('0xb'));var squel=require(_0x4733('0xc'));var crypto=require(_0x4733('0xd'));var jsforce=require(_0x4733('0xe'));var deskjs=require(_0x4733('0xf'));var toCsv=require(_0x4733('0x8'));var querystring=require(_0x4733('0x10'));var Papa=require(_0x4733('0x11'));var Redis=require(_0x4733('0x12'));var authService=require(_0x4733('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x4733('0x14'));var hardwareService=require(_0x4733('0x15'));var logger=require('../../config/logger')(_0x4733('0x16'));var utils=require('../../config/utils');var config=require(_0x4733('0x17'));var licenseUtil=require(_0x4733('0x18'));var db=require(_0x4733('0x19'))['db'];function respondWithStatusCode(_0x461f74,_0x100ecd){_0x100ecd=_0x100ecd||0xcc;return function(_0x1c146c){if(_0x1c146c){return _0x461f74[_0x4733('0x1a')](_0x100ecd);}return _0x461f74['status'](_0x100ecd)[_0x4733('0x1b')]();};}function respondWithResult(_0x543caf,_0x4327f3){_0x4327f3=_0x4327f3||0xc8;return function(_0x1a22e4){if(_0x1a22e4){return _0x543caf[_0x4733('0x1c')](_0x4327f3)[_0x4733('0x1d')](_0x1a22e4);}};}function respondWithFilteredResult(_0x3813df,_0x167016){return function(_0x12f111){if(_0x12f111){var _0x9fff=typeof _0x167016[_0x4733('0x1e')]==='undefined'&&typeof _0x167016[_0x4733('0x1f')]===_0x4733('0x20');var _0x47b129=_0x12f111[_0x4733('0x21')];var _0x1d2fb6=_0x9fff?0x0:_0x167016[_0x4733('0x1e')];var _0x384e0c=_0x9fff?_0x12f111['count']:_0x167016['offset']+_0x167016[_0x4733('0x1f')];var _0x3b730a;if(_0x384e0c>=_0x47b129){_0x384e0c=_0x47b129;_0x3b730a=0xc8;}else{_0x3b730a=0xce;}_0x3813df['status'](_0x3b730a);return _0x3813df[_0x4733('0x22')](_0x4733('0x23'),_0x1d2fb6+'-'+_0x384e0c+'/'+_0x47b129)[_0x4733('0x1d')](_0x12f111);}return null;};}function patchUpdates(_0x7a4e0){return function(_0x493cd3){try{jsonpatch[_0x4733('0x24')](_0x493cd3,_0x7a4e0,!![]);}catch(_0xb45e1){return BPromise['reject'](_0xb45e1);}return _0x493cd3[_0x4733('0x25')]();};}function saveUpdates(_0x18da47,_0x478e34){return function(_0x15a291){if(_0x15a291){return _0x15a291[_0x4733('0x26')](_0x18da47)[_0x4733('0x27')](function(_0x1a0643){return _0x1a0643;});}return null;};}function removeEntity(_0x3a2542,_0x24db74){return function(_0x180049){if(_0x180049){return _0x180049[_0x4733('0x28')]()['then'](function(){_0x3a2542[_0x4733('0x1c')](0xcc)[_0x4733('0x1b')]();});}};}function handleEntityNotFound(_0x7884e5,_0x2cb247){return function(_0x30ee9b){if(!_0x30ee9b){_0x7884e5[_0x4733('0x1a')](0x194);}return _0x30ee9b;};}function handleError(_0x24fc0d,_0xc3ab0a){_0xc3ab0a=_0xc3ab0a||0x1f4;return function(_0x13bc12){logger[_0x4733('0x29')](_0x13bc12['stack']);if(_0x13bc12[_0x4733('0x2a')]){delete _0x13bc12['name'];}_0x24fc0d['status'](_0xc3ab0a)[_0x4733('0x2b')](_0x13bc12);};}exports['index']=function(_0xcde4f4,_0x479989){var _0x4abc0d={},_0x517c73={},_0x2976b0={'count':0x0,'rows':[]};var _0x3bfe53=_[_0x4733('0x2c')](db[_0x4733('0x2d')]['rawAttributes'],function(_0x538a7c){return{'name':_0x538a7c['fieldName'],'type':_0x538a7c[_0x4733('0x2e')]['key']};});_0x517c73['model']=_[_0x4733('0x2c')](_0x3bfe53,_0x4733('0x2a'));_0x517c73[_0x4733('0x2f')]=_['keys'](_0xcde4f4['query']);_0x517c73[_0x4733('0x30')]=_[_0x4733('0x31')](_0x517c73[_0x4733('0x32')],_0x517c73[_0x4733('0x2f')]);_0x4abc0d[_0x4733('0x33')]=_['intersection'](_0x517c73[_0x4733('0x32')],qs[_0x4733('0x34')](_0xcde4f4[_0x4733('0x2f')][_0x4733('0x34')]));_0x4abc0d[_0x4733('0x33')]=_0x4abc0d['attributes']['length']?_0x4abc0d[_0x4733('0x33')]:_0x517c73[_0x4733('0x32')];if(!_0xcde4f4[_0x4733('0x2f')][_0x4733('0x35')](_0x4733('0x36'))){_0x4abc0d['limit']=qs[_0x4733('0x1f')](_0xcde4f4[_0x4733('0x2f')][_0x4733('0x1f')]);_0x4abc0d['offset']=qs[_0x4733('0x1e')](_0xcde4f4[_0x4733('0x2f')][_0x4733('0x1e')]);}_0x4abc0d[_0x4733('0x37')]=qs[_0x4733('0x38')](_0xcde4f4[_0x4733('0x2f')][_0x4733('0x38')]);_0x4abc0d[_0x4733('0x39')]=qs['filters'](_[_0x4733('0x3a')](_0xcde4f4['query'],_0x517c73[_0x4733('0x30')]),_0x3bfe53);if(_0xcde4f4[_0x4733('0x2f')][_0x4733('0x3b')]){_0x4abc0d[_0x4733('0x39')]=_[_0x4733('0x3c')](_0x4abc0d[_0x4733('0x39')],{'$or':_[_0x4733('0x2c')](_0x3bfe53,function(_0x15ab49){if(_0x15ab49['type']!==_0x4733('0x3d')){var _0x68d682={};_0x68d682[_0x15ab49['name']]={'$like':'%'+_0xcde4f4[_0x4733('0x2f')][_0x4733('0x3b')]+'%'};return _0x68d682;}})});}_0x4abc0d=_['merge']({},_0x4abc0d,_0xcde4f4[_0x4733('0x3e')]);var _0x50849a={'where':_0x4abc0d[_0x4733('0x39')]};return db['WhatsappTransferReport'][_0x4733('0x21')](_0x50849a)[_0x4733('0x27')](function(_0x5d4b95){_0x2976b0['count']=_0x5d4b95;if(_0xcde4f4[_0x4733('0x2f')][_0x4733('0x3f')]){_0x4abc0d['include']=[{'all':!![]}];}return db[_0x4733('0x2d')][_0x4733('0x40')](_0x4abc0d);})[_0x4733('0x27')](function(_0x28ed14){_0x2976b0[_0x4733('0x41')]=_0x28ed14;return _0x2976b0;})[_0x4733('0x27')](respondWithFilteredResult(_0x479989,_0x4abc0d))[_0x4733('0x42')](handleError(_0x479989,null));};exports[_0x4733('0x43')]=function(_0x1f04dd,_0x42e055){var _0x444471={'raw':!![],'where':{'id':_0x1f04dd[_0x4733('0x44')]['id']}},_0x1d32df={};_0x1d32df[_0x4733('0x32')]=_[_0x4733('0x45')](db[_0x4733('0x2d')][_0x4733('0x46')]);_0x1d32df[_0x4733('0x2f')]=_['keys'](_0x1f04dd[_0x4733('0x2f')]);_0x1d32df[_0x4733('0x30')]=_[_0x4733('0x31')](_0x1d32df[_0x4733('0x32')],_0x1d32df[_0x4733('0x2f')]);_0x444471[_0x4733('0x33')]=_[_0x4733('0x31')](_0x1d32df[_0x4733('0x32')],qs[_0x4733('0x34')](_0x1f04dd[_0x4733('0x2f')][_0x4733('0x34')]));_0x444471[_0x4733('0x33')]=_0x444471[_0x4733('0x33')][_0x4733('0x47')]?_0x444471['attributes']:_0x1d32df['model'];if(_0x1f04dd[_0x4733('0x2f')][_0x4733('0x3f')]){_0x444471[_0x4733('0x48')]=[{'all':!![]}];}_0x444471=_[_0x4733('0x3c')]({},_0x444471,_0x1f04dd[_0x4733('0x3e')]);return db[_0x4733('0x2d')][_0x4733('0x49')](_0x444471)[_0x4733('0x27')](handleEntityNotFound(_0x42e055,null))[_0x4733('0x27')](respondWithResult(_0x42e055,null))[_0x4733('0x42')](handleError(_0x42e055,null));};exports['create']=function(_0x4c5f4e,_0x51e201){return db['WhatsappTransferReport'][_0x4733('0x4a')](_0x4c5f4e[_0x4733('0x4b')],{})[_0x4733('0x27')](respondWithResult(_0x51e201,0xc9))[_0x4733('0x42')](handleError(_0x51e201,null));};exports[_0x4733('0x26')]=function(_0x45b9cf,_0x1c6abf){if(_0x45b9cf[_0x4733('0x4b')]['id']){delete _0x45b9cf[_0x4733('0x4b')]['id'];}return db[_0x4733('0x2d')]['find']({'where':{'id':_0x45b9cf['params']['id']}})[_0x4733('0x27')](handleEntityNotFound(_0x1c6abf,null))['then'](saveUpdates(_0x45b9cf[_0x4733('0x4b')],null))[_0x4733('0x27')](respondWithResult(_0x1c6abf,null))[_0x4733('0x42')](handleError(_0x1c6abf,null));};exports['destroy']=function(_0x3f2a78,_0x45c9ad){return db[_0x4733('0x2d')][_0x4733('0x49')]({'where':{'id':_0x3f2a78[_0x4733('0x44')]['id']}})[_0x4733('0x27')](handleEntityNotFound(_0x45c9ad,null))[_0x4733('0x27')](removeEntity(_0x45c9ad,null))[_0x4733('0x42')](handleError(_0x45c9ad,null));};exports[_0x4733('0x4c')]=function(_0x5af8c7,_0x31fb69){return db[_0x4733('0x2d')][_0x4733('0x4c')]()['then'](respondWithResult(_0x31fb69,null))[_0x4733('0x42')](handleError(_0x31fb69,null));};
\ No newline at end of file
index 78bfc80..accccd3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4a29=['api','moment','bluebird','request-promise','../../config/environment','exports','define','WhatsappTransferReport','report_whatsapp_transfer','uniqueid','lodash','../../config/logger'];(function(_0x3995dd,_0x24f96f){var _0x410f8a=function(_0xe2c273){while(--_0xe2c273){_0x3995dd['push'](_0x3995dd['shift']());}};_0x410f8a(++_0x24f96f);}(_0x4a29,0xd6));var _0x94a2=function(_0x416742,_0x2ef5bd){_0x416742=_0x416742-0x0;var _0x31d84a=_0x4a29[_0x416742];return _0x31d84a;};'use strict';var _=require(_0x94a2('0x0'));var util=require('util');var logger=require(_0x94a2('0x1'))(_0x94a2('0x2'));var moment=require(_0x94a2('0x3'));var BPromise=require(_0x94a2('0x4'));var rp=require(_0x94a2('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x94a2('0x6'));var attributes=require('./whatsappTransferReport.attributes');module[_0x94a2('0x7')]=function(_0x23909c,_0x3c57bf){return _0x23909c[_0x94a2('0x8')](_0x94a2('0x9'),attributes,{'tableName':_0x94a2('0xa'),'paranoid':![],'indexes':[{'name':_0x94a2('0xb'),'fields':[_0x94a2('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xea6f=['rimraf','../../config/environment','./whatsappTransferReport.attributes','report_whatsapp_transfer','uniqueid','util','moment','request-promise'];(function(_0x2f4731,_0x3d5938){var _0x50a21a=function(_0x1e98f2){while(--_0x1e98f2){_0x2f4731['push'](_0x2f4731['shift']());}};_0x50a21a(++_0x3d5938);}(_0xea6f,0x6d));var _0xfea6=function(_0x23cb66,_0x57bc4d){_0x23cb66=_0x23cb66-0x0;var _0x514fd6=_0xea6f[_0x23cb66];return _0x514fd6;};'use strict';var _=require('lodash');var util=require(_0xfea6('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0xfea6('0x1'));var BPromise=require('bluebird');var rp=require(_0xfea6('0x2'));var fs=require('fs');var path=require('path');var rimraf=require(_0xfea6('0x3'));var config=require(_0xfea6('0x4'));var attributes=require(_0xfea6('0x5'));module['exports']=function(_0x359b65,_0x581ce9){return _0x359b65['define']('WhatsappTransferReport',attributes,{'tableName':_0xfea6('0x6'),'paranoid':![],'indexes':[{'name':_0xfea6('0x7'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 52c8c8a..05687ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e1f=['lodash','util','moment','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','WhatsappTransferReport,\x20%s,\x20%s','request\x20sent','WhatsappTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch'];(function(_0x3ecfba,_0x58ec2f){var _0x272815=function(_0x58c119){while(--_0x58c119){_0x3ecfba['push'](_0x3ecfba['shift']());}};_0x272815(++_0x58ec2f);}(_0x2e1f,0x93));var _0xf2e1=function(_0x42e4d7,_0x4bd202){_0x42e4d7=_0x42e4d7-0x0;var _0x346cd8=_0x2e1f[_0x42e4d7];return _0x346cd8;};'use strict';var _=require(_0xf2e1('0x0'));var util=require(_0xf2e1('0x1'));var moment=require(_0xf2e1('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf2e1('0x3'))['db'];var utils=require(_0xf2e1('0x4'));var logger=require(_0xf2e1('0x5'))(_0xf2e1('0x6'));var config=require(_0xf2e1('0x7'));var jayson=require(_0xf2e1('0x8'));var client=jayson['client'][_0xf2e1('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1c0612,_0xefd2f5,_0x27d951){return new BPromise(function(_0x1c8507,_0x405ae9){return client[_0xf2e1('0xa')](_0x1c0612,_0x27d951)[_0xf2e1('0xb')](function(_0xe4f620){logger['info'](_0xf2e1('0xc'),_0xefd2f5,_0xf2e1('0xd'));logger['debug'](_0xf2e1('0xe'),_0xefd2f5,_0xf2e1('0xd'),JSON[_0xf2e1('0xf')](_0xe4f620));if(_0xe4f620['error']){if(_0xe4f620[_0xf2e1('0x10')]['code']===0x1f4){logger[_0xf2e1('0x10')](_0xf2e1('0xc'),_0xefd2f5,_0xe4f620[_0xf2e1('0x10')][_0xf2e1('0x11')]);return _0x405ae9(_0xe4f620[_0xf2e1('0x10')][_0xf2e1('0x11')]);}logger[_0xf2e1('0x10')](_0xf2e1('0xc'),_0xefd2f5,_0xe4f620[_0xf2e1('0x10')][_0xf2e1('0x11')]);return _0x1c8507(_0xe4f620[_0xf2e1('0x10')][_0xf2e1('0x11')]);}else{logger[_0xf2e1('0x12')](_0xf2e1('0xc'),_0xefd2f5,_0xf2e1('0xd'));_0x1c8507(_0xe4f620[_0xf2e1('0x13')][_0xf2e1('0x11')]);}})[_0xf2e1('0x14')](function(_0x515ffa){logger[_0xf2e1('0x10')](_0xf2e1('0xc'),_0xefd2f5,_0x515ffa);_0x405ae9(_0x515ffa);});});}
\ No newline at end of file
+var _0xc7d6=['jayson/promise','client','http','request','then','info','request\x20sent','stringify','error','WhatsappTransferReport,\x20%s,\x20%s','message','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc'];(function(_0x17928f,_0x4ad33f){var _0x500b63=function(_0x127644){while(--_0x127644){_0x17928f['push'](_0x17928f['shift']());}};_0x500b63(++_0x4ad33f);}(_0xc7d6,0x14c));var _0x6c7d=function(_0x455f1e,_0x16f811){_0x455f1e=_0x455f1e-0x0;var _0x3736ee=_0xc7d6[_0x455f1e];return _0x3736ee;};'use strict';var _=require(_0x6c7d('0x0'));var util=require(_0x6c7d('0x1'));var moment=require(_0x6c7d('0x2'));var BPromise=require(_0x6c7d('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6c7d('0x4'));var db=require(_0x6c7d('0x5'))['db'];var utils=require(_0x6c7d('0x6'));var logger=require('../../config/logger')(_0x6c7d('0x7'));var config=require('../../config/environment');var jayson=require(_0x6c7d('0x8'));var client=jayson[_0x6c7d('0x9')][_0x6c7d('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x395220,_0x2e4c83,_0x2e4450){return new BPromise(function(_0x3e7332,_0x5347b1){return client[_0x6c7d('0xb')](_0x395220,_0x2e4450)[_0x6c7d('0xc')](function(_0x26ffb6){logger[_0x6c7d('0xd')]('WhatsappTransferReport,\x20%s,\x20%s',_0x2e4c83,_0x6c7d('0xe'));logger['debug']('WhatsappTransferReport,\x20%s,\x20%s,\x20%s',_0x2e4c83,_0x6c7d('0xe'),JSON[_0x6c7d('0xf')](_0x26ffb6));if(_0x26ffb6[_0x6c7d('0x10')]){if(_0x26ffb6[_0x6c7d('0x10')]['code']===0x1f4){logger[_0x6c7d('0x10')](_0x6c7d('0x11'),_0x2e4c83,_0x26ffb6[_0x6c7d('0x10')][_0x6c7d('0x12')]);return _0x5347b1(_0x26ffb6['error'][_0x6c7d('0x12')]);}logger['error'](_0x6c7d('0x11'),_0x2e4c83,_0x26ffb6[_0x6c7d('0x10')][_0x6c7d('0x12')]);return _0x3e7332(_0x26ffb6[_0x6c7d('0x10')][_0x6c7d('0x12')]);}else{logger['info']('WhatsappTransferReport,\x20%s,\x20%s',_0x2e4c83,_0x6c7d('0xe'));_0x3e7332(_0x26ffb6['result'][_0x6c7d('0x12')]);}})[_0x6c7d('0x13')](function(_0x582b4d){logger[_0x6c7d('0x10')](_0x6c7d('0x11'),_0x2e4c83,_0x582b4d);_0x5347b1(_0x582b4d);});});}
\ No newline at end of file
index ffc05a4..458f4fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf961=['start','filter','number','exitCode','length','\x20processes\x20failed\x20at\x20startup:\x20','map','pm2_env','Online\x20apps:','online','name','join','Offline\x20apps:','status','log','App\x20Ready!','Server\x20failed\x20to\x20start\x20due\x20to\x20error!','error','exit','lodash','./mysqldb','./config/seedDB','./config/license','./config/environment','./config/logger','app','./config/pm2/config','./config/schedule','./config/schedule/chat','./config/schedule/transcribe','sequelize','sync','then','seedDB','default','listen','info'];(function(_0x152678,_0x11e0ac){var _0x311a9=function(_0x4f5291){while(--_0x4f5291){_0x152678['push'](_0x152678['shift']());}};_0x311a9(++_0x11e0ac);}(_0xf961,0x1cf));var _0x1f96=function(_0x1d24eb,_0x12295b){_0x1d24eb=_0x1d24eb-0x0;var _0x1dc576=_0xf961[_0x1d24eb];return _0x1dc576;};'use strict';var _=require(_0x1f96('0x0'));var db=require(_0x1f96('0x1'))['db'];var seedDb=require(_0x1f96('0x2'));var checkLicense=require(_0x1f96('0x3'));var rpc=require('./rpc');var config=require(_0x1f96('0x4'));var logger=require(_0x1f96('0x5'))(_0x1f96('0x6'));var pm2=require('./config/pm2');var pm2Config=require(_0x1f96('0x7'));var schedule=require(_0x1f96('0x8'));var chat=require(_0x1f96('0x9'));var whatsapp=require('./config/schedule/whatsapp');var transcribe=require(_0x1f96('0xa'));var provider=require('./config/schedule/cloud-provider');function main(){return db[_0x1f96('0xb')][_0x1f96('0xc')]()[_0x1f96('0xd')](function(){if(config[_0x1f96('0xe')]){return seedDb[_0x1f96('0xf')]();}})[_0x1f96('0xd')](function(){return checkLicense['default']();})['then'](function(){return rpc[_0x1f96('0x10')]();})['then'](function(_0x32b621){logger[_0x1f96('0x11')](_0x32b621);return chat[_0x1f96('0x12')]();})[_0x1f96('0xd')](function(){return whatsapp['start']();})[_0x1f96('0xd')](function(){return schedule[_0x1f96('0x12')]();})[_0x1f96('0xd')](function(){return transcribe['start']();})[_0x1f96('0xd')](function(){return provider[_0x1f96('0x12')]();})[_0x1f96('0xd')](function(_0xe69e8c){logger[_0x1f96('0x11')](_0xe69e8c);return pm2[_0x1f96('0x12')](pm2Config);})['then'](function(_0x11d22d){var _0x43e677=_0x11d22d[_0x1f96('0x13')](function(_0xf77194){return typeof _0xf77194['exitCode']===_0x1f96('0x14')&&_0xf77194[_0x1f96('0x15')]>=0x0;});if(_0x43e677[_0x1f96('0x16')]>0x0){throw new Error(_0x43e677[_0x1f96('0x16')]+_0x1f96('0x17')+_[_0x1f96('0x18')](_0x43e677,function(_0x16e9c4){return'\x22'+_0x16e9c4[_0x1f96('0x19')]['name']+'\x22';}));}logger[_0x1f96('0x11')](_0x1f96('0x1a'),_['map'](_[_0x1f96('0x13')](_0x11d22d,{'status':_0x1f96('0x1b')}),_0x1f96('0x1c'))[_0x1f96('0x1d')]());logger[_0x1f96('0x11')](_0x1f96('0x1e'),_['map'](_[_0x1f96('0x13')](_0x11d22d,function(_0x47f3e6){return _0x47f3e6[_0x1f96('0x1f')]!==_0x1f96('0x1b');}),_0x1f96('0x1c'))[_0x1f96('0x1d')]()||'None');console[_0x1f96('0x20')](_0x1f96('0x21'));})['catch'](function(_0x4e965a){console[_0x1f96('0x20')](_0x1f96('0x22'),_0x4e965a);logger[_0x1f96('0x23')]('Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s',_0x4e965a);process[_0x1f96('0x24')](0x1);});}main();
\ No newline at end of file
+var _0xe132=['./config/pm2','./config/pm2/config','./config/schedule/whatsapp','./config/schedule/transcribe','./config/schedule/cloud-provider','sequelize','sync','then','seedDB','default','listen','info','start','filter','exitCode','length','pm2_env','name','Online\x20apps:','map','online','join','Offline\x20apps:','status','log','App\x20Ready!','catch','Server\x20failed\x20to\x20start\x20due\x20to\x20error!','Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s','exit','lodash','./config/seedDB','./config/license','./rpc','./config/environment','./config/logger'];(function(_0x1da33a,_0x456c9a){var _0x147532=function(_0x3397b9){while(--_0x3397b9){_0x1da33a['push'](_0x1da33a['shift']());}};_0x147532(++_0x456c9a);}(_0xe132,0x162));var _0x2e13=function(_0x11a611,_0x5704b7){_0x11a611=_0x11a611-0x0;var _0x5d6eee=_0xe132[_0x11a611];return _0x5d6eee;};'use strict';var _=require(_0x2e13('0x0'));var db=require('./mysqldb')['db'];var seedDb=require(_0x2e13('0x1'));var checkLicense=require(_0x2e13('0x2'));var rpc=require(_0x2e13('0x3'));var config=require(_0x2e13('0x4'));var logger=require(_0x2e13('0x5'))('app');var pm2=require(_0x2e13('0x6'));var pm2Config=require(_0x2e13('0x7'));var schedule=require('./config/schedule');var chat=require('./config/schedule/chat');var whatsapp=require(_0x2e13('0x8'));var transcribe=require(_0x2e13('0x9'));var provider=require(_0x2e13('0xa'));function main(){return db[_0x2e13('0xb')][_0x2e13('0xc')]()[_0x2e13('0xd')](function(){if(config[_0x2e13('0xe')]){return seedDb[_0x2e13('0xf')]();}})[_0x2e13('0xd')](function(){return checkLicense[_0x2e13('0xf')]();})['then'](function(){return rpc[_0x2e13('0x10')]();})[_0x2e13('0xd')](function(_0x31b284){logger[_0x2e13('0x11')](_0x31b284);return chat[_0x2e13('0x12')]();})[_0x2e13('0xd')](function(){return whatsapp[_0x2e13('0x12')]();})['then'](function(){return schedule[_0x2e13('0x12')]();})[_0x2e13('0xd')](function(){return transcribe[_0x2e13('0x12')]();})[_0x2e13('0xd')](function(){return provider[_0x2e13('0x12')]();})[_0x2e13('0xd')](function(_0x23a32a){logger['info'](_0x23a32a);return pm2[_0x2e13('0x12')](pm2Config);})[_0x2e13('0xd')](function(_0xfaca18){var _0x4bc56a=_0xfaca18[_0x2e13('0x13')](function(_0x2a58e5){return typeof _0x2a58e5[_0x2e13('0x14')]==='number'&&_0x2a58e5[_0x2e13('0x14')]>=0x0;});if(_0x4bc56a[_0x2e13('0x15')]>0x0){throw new Error(_0x4bc56a[_0x2e13('0x15')]+'\x20processes\x20failed\x20at\x20startup:\x20'+_['map'](_0x4bc56a,function(_0x2a3007){return'\x22'+_0x2a3007[_0x2e13('0x16')][_0x2e13('0x17')]+'\x22';}));}logger[_0x2e13('0x11')](_0x2e13('0x18'),_[_0x2e13('0x19')](_[_0x2e13('0x13')](_0xfaca18,{'status':_0x2e13('0x1a')}),'name')[_0x2e13('0x1b')]());logger[_0x2e13('0x11')](_0x2e13('0x1c'),_[_0x2e13('0x19')](_['filter'](_0xfaca18,function(_0x5d6938){return _0x5d6938[_0x2e13('0x1d')]!==_0x2e13('0x1a');}),'name')['join']()||'None');console[_0x2e13('0x1e')](_0x2e13('0x1f'));})[_0x2e13('0x20')](function(_0x21c579){console[_0x2e13('0x1e')](_0x2e13('0x21'),_0x21c579);logger['error'](_0x2e13('0x22'),_0x21c579);process[_0x2e13('0x23')](0x1);});}main();
\ No newline at end of file
index b9f9c11..d755310 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00bb=['lastLoginAt','lastPauseAt','crudPermissions','allowmessenger','passwordResetAt','alias','phoneBarAutoAnswerDelay','phoneBarDnd','phoneBarEnableDtmfTone','phoneBarEnableSettings','phoneBarRemoteControl','interface','userProfileId','privacyEnabled','settingsEnabled','downloadVoiceRecordings','downloadAttachments','selectRecallMeCampaign','chatAutoanswerDelay','emailAutoanswer','smsAutoanswerDelay','openchannelAutoanswerDelay','faxAutoanswer','faxAutoanswerDelay','whatsappAutoanswer','isChatInteractionAuthorized','use','user','findOne','params','disposition','then','closed','unmanaged','Unmanaged.','Forbidden.','catch','isAuthenticated','headers','authorization','Basic','User','find','pass','status','Wrong\x20credentials.','Bearer','json','Unknown\x20authorization\x20format','query','getUuid','apikey','sub','Setting','allowedLoginAttempts','apiKeyNonce','nonce','API\x20access\x20key\x20is\x20not\x20valid\x20anymore','disabled','Invalid\x20API\x20access\x20key','blocked','blockDuration','blockedAt','add','User\x20not\x20found.','User\x20object\x20not\x20found.','canUpdate','getLicense','update','Forbidden','webrtc','signToken','It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.','cookie','redirect','/dashboards/general','send','isNil','apiKeyIat','Please\x20use\x20the\x20previous\x20API\x20access\x20key\x20to\x20generate\x20a\x20new\x20one','validatePasswordPattern','test','Sequelize','ValidationError','validatePasswordHistory','decryptString','split','toLowerCase','format','The\x20password\x20must\x20be\x20different\x20from\x20the\x20last\x20one.\x20Please\x20choose\x20another\x20one.','updatePasswordsHistory','length','unshift','encryptString','join','promisify','sign','secret','options','verify','toString','hex','floor','../../mysqldb','../../config/environment','../../config/license/hardware','../encryptor','jsonwebtoken','express-jwt','basic-auth','crypto','secrets','session','role','fullname','name','internal','permissions','md5secret','voicePause','chatPause','mailPause','smsPause'];(function(_0x2a6178,_0x513283){var _0x4b1df0=function(_0x5419fc){while(--_0x5419fc){_0x2a6178['push'](_0x2a6178['shift']());}};_0x4b1df0(++_0x513283);}(_0x00bb,0x1d8));var _0xb00b=function(_0x5b561d,_0x422b7c){_0x5b561d=_0x5b561d-0x0;var _0x431060=_0x00bb[_0x5b561d];return _0x431060;};'use strict';var db=require(_0xb00b('0x0'))['db'];var config=require(_0xb00b('0x1'));var hardwareConf=require(_0xb00b('0x2'));var licenseUtil=require('../../config/license/util');var encryptor=require(_0xb00b('0x3'));var _=require('lodash');var jwt=require(_0xb00b('0x4'));var expressJwt=require(_0xb00b('0x5'));var compose=require('composable-middleware');var basicAuth=require(_0xb00b('0x6'));var crypto=require(_0xb00b('0x7'));var BPromise=require('bluebird');var util=require('util');var moment=require('moment');var validateJwt=expressJwt({'secret':config[_0xb00b('0x8')][_0xb00b('0x9')]});var userAttributes=['id',_0xb00b('0xa'),_0xb00b('0xb'),_0xb00b('0xc'),_0xb00b('0xd'),'email','userpic',_0xb00b('0xe'),_0xb00b('0xf'),_0xb00b('0x10'),_0xb00b('0x11'),_0xb00b('0x12'),'faxPause',_0xb00b('0x13'),'openchannelPause','pauseType','showWebBar',_0xb00b('0x14'),_0xb00b('0x15'),_0xb00b('0x16'),_0xb00b('0x17'),_0xb00b('0x18'),_0xb00b('0x19'),'phoneBarAutoAnswer',_0xb00b('0x1a'),_0xb00b('0x1b'),'phoneBarEnableRecording',_0xb00b('0x1c'),_0xb00b('0x1d'),'phoneBarExpires','phoneBarPrefixRequired',_0xb00b('0x1e'),'phoneBarRemoteControlPort','hotdesk',_0xb00b('0x1f'),_0xb00b('0x20'),_0xb00b('0x21'),_0xb00b('0x22'),'wssPort',_0xb00b('0x23'),'downloadOmnichannelInteractions',_0xb00b('0x24'),'ignorePauseForPreviewCalls',_0xb00b('0x25'),'chatAutoanswer',_0xb00b('0x26'),_0xb00b('0x27'),'emailAutoanswerDelay','smsAutoanswer',_0xb00b('0x28'),'openchannelAutoanswer',_0xb00b('0x29'),_0xb00b('0x2a'),_0xb00b('0x2b'),_0xb00b('0x2c'),'whatsappAutoanswerDelay'];exports[_0xb00b('0x2d')]=function(){return this['isAuthenticated'](!![])[_0xb00b('0x2e')](function(_0x121ec7,_0x51b841,_0x231293){if(_0x121ec7[_0xb00b('0x2f')]){_0x231293();}else{return db['ChatInteraction'][_0xb00b('0x30')]({'where':{'id':_0x121ec7[_0xb00b('0x31')]['id']},'attributes':['id','closed',_0xb00b('0x32')],'raw':!![]})[_0xb00b('0x33')](function(_0x3c9500){if(_0x3c9500&&_0x3c9500[_0xb00b('0x34')]){return _0x51b841['status'](_0x3c9500['disposition']===_0xb00b('0x35')?0x195:0x193)['json']({'message':_0x3c9500['disposition']==='unmanaged'?_0xb00b('0x36'):_0xb00b('0x37')});}else{_0x231293();}})[_0xb00b('0x38')](function(_0x3825af){_0x231293(_0x3825af);});}});};exports[_0xb00b('0x39')]=function isAuthenticated(_0x197379){return compose()[_0xb00b('0x2e')](function(_0x4a8d2b,_0x22c22d,_0x503c9c){var _0x450129;if(_0x4a8d2b[_0xb00b('0x3a')][_0xb00b('0x3b')]){if(_['startsWith'](_0x4a8d2b[_0xb00b('0x3a')][_0xb00b('0x3b')],_0xb00b('0x3c'))){var _0x183233=basicAuth(_0x4a8d2b);db[_0xb00b('0x3d')][_0xb00b('0x3e')]({'where':{'name':_0x183233[_0xb00b('0xc')]}})[_0xb00b('0x33')](function(_0x149c1a){if(!_0x149c1a||!_0x149c1a['authenticate'](_0x183233[_0xb00b('0x3f')])){return _0x22c22d[_0xb00b('0x40')](0x191)['json']({'message':_0xb00b('0x41')});}_0x4a8d2b[_0xb00b('0x2f')]={'id':_0x149c1a['id']};_0x503c9c();})['catch'](function(_0x456241){_0x503c9c(_0x456241);});}else if(_['startsWith'](_0x4a8d2b[_0xb00b('0x3a')][_0xb00b('0x3b')],_0xb00b('0x42'))){validateJwt(_0x4a8d2b,_0x22c22d,_0x503c9c);}else{if(_0x197379){_0x503c9c();}else{return _0x22c22d[_0xb00b('0x40')](0x193)[_0xb00b('0x43')]({'message':_0xb00b('0x44')});}}}else if(_0x4a8d2b[_0xb00b('0x45')]['apikey']){try{var _0x57e8f9={'audience':hardwareConf['getUuid'](),'issuer':hardwareConf[_0xb00b('0x46')]()};verifyJwt(_0x4a8d2b[_0xb00b('0x45')][_0xb00b('0x47')],_0x57e8f9)[_0xb00b('0x33')](function(_0x5cfa60){return db[_0xb00b('0x3d')][_0xb00b('0x3e')]({'where':{'id':_0x5cfa60[_0xb00b('0x48')]}})[_0xb00b('0x33')](function(_0x261c80){_0x450129=_0x261c80;return db[_0xb00b('0x49')][_0xb00b('0x30')]({'where':{'id':0x1},'attributes':[_0xb00b('0x4a'),'blockDuration'],'raw':!![]});})['then'](function(_0x2ea41d){if(!_0x450129||!_['isEqual'](_0x450129[_0xb00b('0x4b')],_0x5cfa60[_0xb00b('0x4c')])){return _0x22c22d[_0xb00b('0x40')](0x191)[_0xb00b('0x43')]({'message':_0xb00b('0x4d')});}if(_0x450129[_0xb00b('0x4e')]){return _0x22c22d[_0xb00b('0x40')](0x191)['json']({'message':_0xb00b('0x4f')});}if(_0x450129[_0xb00b('0x50')]){if(_0x2ea41d[_0xb00b('0x51')]>0x0){if(moment(_0x450129[_0xb00b('0x52')])[_0xb00b('0x53')](_0x2ea41d[_0xb00b('0x51')],'minutes')>moment()){return _0x22c22d[_0xb00b('0x40')](0x191)[_0xb00b('0x43')]({'message':'Invalid\x20API\x20access\x20key'});}}else{return _0x22c22d[_0xb00b('0x40')](0x191)[_0xb00b('0x43')]({'message':_0xb00b('0x4f')});}}_0x4a8d2b[_0xb00b('0x2f')]={'id':_0x450129['id']};_0x503c9c();});})[_0xb00b('0x38')](function(){return _0x22c22d['status'](0x191)[_0xb00b('0x43')]({'message':_0xb00b('0x4f')});});}catch(_0xb76ede){_0x503c9c(_0xb76ede);}}else if(_0x197379){_0x503c9c();}else{return _0x22c22d[_0xb00b('0x40')](0x193)['json']({'message':'Unknown\x20authorization\x20format'});}})[_0xb00b('0x2e')](function(_0xf6ae0c,_0x10a348,_0x152437){if(_0xf6ae0c[_0xb00b('0x2f')]){db[_0xb00b('0x3d')][_0xb00b('0x3e')]({'where':{'id':_0xf6ae0c['user']['id']},'attributes':userAttributes})[_0xb00b('0x33')](function(_0x3b72c4){if(!_0x3b72c4){return _0x10a348[_0xb00b('0x40')](0x194)[_0xb00b('0x43')]({'message':_0xb00b('0x54')});}_0xf6ae0c[_0xb00b('0x2f')]=_0x3b72c4;_0x152437();})[_0xb00b('0x38')](function(_0x974a29){_0x152437(_0x974a29);});}else if(_0x197379){_0x152437();}else{return _0x10a348[_0xb00b('0x40')](0x194)[_0xb00b('0x43')]({'message':_0xb00b('0x55')});}});};exports[_0xb00b('0x56')]=function canUpdate(){return compose()['use'](function(_0x3da23c,_0x35a0ba,_0xd07fb8){return licenseUtil[_0xb00b('0x57')]()[_0xb00b('0x33')](function(_0x2d9174){if(_0x2d9174[_0xb00b('0x58')]){_0xd07fb8();}else{return _0x35a0ba[_0xb00b('0x40')](0x193)[_0xb00b('0x43')]({'message':_0xb00b('0x59')});}})[_0xb00b('0x38')](function(_0x3b3031){_0xd07fb8(_0x3b3031);});});};exports['isWebrtcLicence']=function isWebrtcLicence(){return compose()['use'](function(_0x47c6c0,_0x3f8f60,_0x23d858){return licenseUtil['getLicense']()[_0xb00b('0x33')](function(_0x3c0fa){if(_0x3c0fa[_0xb00b('0x5a')]){_0x23d858();}else{return _0x3f8f60[_0xb00b('0x40')](0x193)['json']({'message':'Forbidden'});}})[_0xb00b('0x38')](function(_0x40c2fd){_0x23d858(_0x40c2fd);});});};exports['isMiddleware']=function(_0x514c5b,_0x154759,_0x3a205d){_0x514c5b['isMiddleware']=!![];return _0x3a205d();};exports[_0xb00b('0x5b')]=function signToken(_0x47a814){return signJwt(_0x47a814);};exports['setTokenCookie']=function(_0x4bcc9e,_0x465d90){if(!_0x4bcc9e['user']){return _0x465d90[_0xb00b('0x40')](0x194)[_0xb00b('0x43')]({'message':_0xb00b('0x5c')});}var _0xe724a5={'payload':{'id':_0x4bcc9e[_0xb00b('0x2f')]['id'],'role':_0x4bcc9e[_0xb00b('0x2f')]['role']},'options':{'expiresIn':0x15180}};return signJwt(_0xe724a5)['then'](function(_0x1d2a0d){_0x465d90[_0xb00b('0x5d')]('motion.token',_0x1d2a0d);_0x465d90[_0xb00b('0x5e')](_0xb00b('0x5f'));})['catch'](function(_0x15dcbf){return _0x465d90[_0xb00b('0x40')](0x1f4)[_0xb00b('0x60')](_0x15dcbf);});};exports['retrieveApiKey']=function(_0x501cbe){if(_[_0xb00b('0x61')](_0x501cbe[_0xb00b('0x4b')])||_[_0xb00b('0x61')](_0x501cbe[_0xb00b('0x62')])){return null;}else{return createJwt(_0x501cbe);}};exports['generateApiKey']=function(_0x380acb){_0x380acb[_0xb00b('0x4b')]=generateNonce();_0x380acb['apiKeyIat']=generateIssuedAt();return createJwt(_0x380acb);};exports['regenerateApiKey']=function(_0x160965,_0x524b05){var _0x1ab196=_0x160965[_0xb00b('0x45')][_0xb00b('0x47')];if(_0x1ab196){var _0x222459={'nonce':_0x524b05[_0xb00b('0x4b')],'iat':_0x524b05[_0xb00b('0x62')],'audience':hardwareConf['getUuid'](),'issuer':hardwareConf[_0xb00b('0x46')]()};return verifyJwt(_0x1ab196,_0x222459)['then'](function(){return generateApiKey(_0x524b05);});}else{throw{'message':_0xb00b('0x63')};}};exports[_0xb00b('0x64')]=function(_0x4129ba){var _0x5ac79e=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(!_0x5ac79e[_0xb00b('0x65')](_0x4129ba))throw new db[(_0xb00b('0x66'))][(_0xb00b('0x67'))]('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[_0xb00b('0x68')]=function(_0x309ae6,_0x219b74,_0x385029){var _0x131848=encryptor[_0xb00b('0x69')](_0x219b74)[_0xb00b('0x6a')](',');for(var _0x3a0b90=0x0;_0x3a0b90<_0x385029;_0x3a0b90++){if(!_0x131848[_0x3a0b90])break;if(_0x309ae6['toLowerCase']()===_0x131848[_0x3a0b90][_0xb00b('0x6b')]()){var _0x2cbe80=util[_0xb00b('0x6c')]('The\x20password\x20must\x20be\x20different\x20from\x20the\x20previous\x20%d\x20passwords.\x20Please\x20choose\x20another\x20one.',_0x385029);if(_0x385029===0x1){_0x2cbe80=_0xb00b('0x6d');}throw new db[(_0xb00b('0x66'))][(_0xb00b('0x67'))](_0x2cbe80);}}return;};exports[_0xb00b('0x6e')]=function(_0x1ad387,_0x4bfe0b){var _0xfd4ecc=_0x4bfe0b?encryptor[_0xb00b('0x69')](_0x4bfe0b)[_0xb00b('0x6a')](','):[];if(_0xfd4ecc[_0xb00b('0x6f')]===0x5){_0xfd4ecc['splice'](-0x1,0x1);}_0xfd4ecc[_0xb00b('0x70')](_0x1ad387);return encryptor[_0xb00b('0x71')](_0xfd4ecc[_0xb00b('0x72')](','));};function signJwt(_0x2d73bb){var _0x161216=BPromise[_0xb00b('0x73')](jwt[_0xb00b('0x74')],{'context':jwt});var _0x542223=_0x2d73bb[_0xb00b('0x75')]||config['secrets'][_0xb00b('0x9')];return new BPromise(function(_0x4c2186,_0x3b3272){_0x161216(_0x2d73bb['payload'],_0x542223,_0x2d73bb[_0xb00b('0x76')])['then'](function(_0x3dffaf){_0x4c2186(_0x3dffaf);})[_0xb00b('0x38')](function(_0x3bae02){_0x3b3272(_0x3bae02);});});}function verifyJwt(_0x4d1cec,_0x51fbe2,_0x4f7a59){var _0x21a53d=BPromise[_0xb00b('0x73')](jwt[_0xb00b('0x77')],{'context':jwt});var _0x49246b=_0x4f7a59||config[_0xb00b('0x8')][_0xb00b('0x9')];return new BPromise(function(_0xca87d4,_0x2ddba4){_0x21a53d(_0x4d1cec,_0x49246b,_0x51fbe2)[_0xb00b('0x33')](function(_0x485033){_0xca87d4(_0x485033);})[_0xb00b('0x38')](function(_0x27b13b){_0x2ddba4(_0x27b13b);});});}function generateNonce(){return crypto['randomBytes'](0x10)[_0xb00b('0x78')](_0xb00b('0x79'));}function generateIssuedAt(){return Math[_0xb00b('0x7a')](Date['now']()/0x3e8)['toString']();}function createJwt(_0x359669){var _0x188da7={'payload':{'iat':_0x359669[_0xb00b('0x62')],'nonce':_0x359669['apiKeyNonce']},'options':{'algorithm':'HS512','subject':_0x359669['id']['toString'](),'issuer':hardwareConf['getUuid'](),'audience':hardwareConf[_0xb00b('0x46')]()}};return signJwt(_0x188da7)['then'](function(_0x2434a0){return{'iat':_0x359669[_0xb00b('0x62')],'nonce':_0x359669['apiKeyNonce'],'token':_0x2434a0};});}
\ No newline at end of file
+var _0x008c=['The\x20password\x20must\x20be\x20different\x20from\x20the\x20last\x20one.\x20Please\x20choose\x20another\x20one.','updatePasswordsHistory','length','splice','unshift','encryptString','sign','session','payload','options','promisify','verify','randomBytes','hex','floor','HS512','toString','../../mysqldb','../../config/environment','../../config/license/hardware','../../config/license/util','../encryptor','jsonwebtoken','express-jwt','composable-middleware','basic-auth','crypto','bluebird','util','moment','secrets','role','name','userpic','permissions','mailPause','faxPause','openchannelPause','pauseType','showWebBar','lastLoginAt','lastPauseAt','crudPermissions','allowmessenger','phoneBarAutoAnswer','phoneBarDnd','phoneBarEnableRecording','phoneBarEnableDtmfTone','phoneBarEnableSettings','phoneBarExpires','hotdesk','interface','userProfileId','privacyEnabled','downloadAttachments','ignorePauseForPreviewCalls','chatAutoanswer','smsAutoanswerDelay','whatsappAutoanswerDelay','isChatInteractionAuthorized','isAuthenticated','use','user','params','closed','disposition','then','unmanaged','json','headers','startsWith','User','find','authenticate','pass','status','Wrong\x20credentials.','catch','Bearer','Unknown\x20authorization\x20format','query','apikey','getUuid','sub','Setting','findOne','blockDuration','isEqual','apiKeyNonce','nonce','disabled','Invalid\x20API\x20access\x20key','blocked','blockedAt','add','minutes','User\x20not\x20found.','User\x20object\x20not\x20found.','update','Forbidden','isWebrtcLicence','getLicense','webrtc','isMiddleware','setTokenCookie','It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.','cookie','motion.token','redirect','send','retrieveApiKey','isNil','apiKeyIat','generateApiKey','regenerateApiKey','Please\x20use\x20the\x20previous\x20API\x20access\x20key\x20to\x20generate\x20a\x20new\x20one','validatePasswordPattern','test','Sequelize','ValidationError','The\x20password\x20must\x20be\x20at\x20least\x208\x20characters\x20long\x20and\x20have\x201\x20lowercase\x20character,\x201\x20uppercase\x20character,\x201\x20number\x20and\x201\x20special\x20character\x20~!@#$%^&-_=+[{]}.','decryptString','split','toLowerCase','format'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x008c,0x188));var _0xc008=function(_0x1b7368,_0x3286ed){_0x1b7368=_0x1b7368-0x0;var _0x25d54c=_0x008c[_0x1b7368];return _0x25d54c;};'use strict';var db=require(_0xc008('0x0'))['db'];var config=require(_0xc008('0x1'));var hardwareConf=require(_0xc008('0x2'));var licenseUtil=require(_0xc008('0x3'));var encryptor=require(_0xc008('0x4'));var _=require('lodash');var jwt=require(_0xc008('0x5'));var expressJwt=require(_0xc008('0x6'));var compose=require(_0xc008('0x7'));var basicAuth=require(_0xc008('0x8'));var crypto=require(_0xc008('0x9'));var BPromise=require(_0xc008('0xa'));var util=require(_0xc008('0xb'));var moment=require(_0xc008('0xc'));var validateJwt=expressJwt({'secret':config[_0xc008('0xd')]['session']});var userAttributes=['id',_0xc008('0xe'),'fullname',_0xc008('0xf'),'internal','email',_0xc008('0x10'),_0xc008('0x11'),'md5secret','voicePause','chatPause',_0xc008('0x12'),_0xc008('0x13'),'smsPause',_0xc008('0x14'),_0xc008('0x15'),_0xc008('0x16'),_0xc008('0x17'),_0xc008('0x18'),_0xc008('0x19'),_0xc008('0x1a'),'passwordResetAt','alias',_0xc008('0x1b'),'phoneBarAutoAnswerDelay',_0xc008('0x1c'),_0xc008('0x1d'),_0xc008('0x1e'),_0xc008('0x1f'),_0xc008('0x20'),'phoneBarPrefixRequired','phoneBarRemoteControl','phoneBarRemoteControlPort',_0xc008('0x21'),_0xc008('0x22'),_0xc008('0x23'),_0xc008('0x24'),'settingsEnabled','wssPort','downloadVoiceRecordings','downloadOmnichannelInteractions',_0xc008('0x25'),_0xc008('0x26'),'selectRecallMeCampaign',_0xc008('0x27'),'chatAutoanswerDelay','emailAutoanswer','emailAutoanswerDelay','smsAutoanswer',_0xc008('0x28'),'openchannelAutoanswer','openchannelAutoanswerDelay','faxAutoanswer','faxAutoanswerDelay','whatsappAutoanswer',_0xc008('0x29')];exports[_0xc008('0x2a')]=function(){return this[_0xc008('0x2b')](!![])[_0xc008('0x2c')](function(_0x11cc75,_0x110128,_0x4f43e2){if(_0x11cc75[_0xc008('0x2d')]){_0x4f43e2();}else{return db['ChatInteraction']['findOne']({'where':{'id':_0x11cc75[_0xc008('0x2e')]['id']},'attributes':['id',_0xc008('0x2f'),_0xc008('0x30')],'raw':!![]})[_0xc008('0x31')](function(_0x5410f5){if(_0x5410f5&&_0x5410f5['closed']){return _0x110128['status'](_0x5410f5[_0xc008('0x30')]===_0xc008('0x32')?0x195:0x193)[_0xc008('0x33')]({'message':_0x5410f5[_0xc008('0x30')]==='unmanaged'?'Unmanaged.':'Forbidden.'});}else{_0x4f43e2();}})['catch'](function(_0x4caaf4){_0x4f43e2(_0x4caaf4);});}});};exports[_0xc008('0x2b')]=function isAuthenticated(_0x29ba43){return compose()[_0xc008('0x2c')](function(_0x529961,_0x24c14c,_0x32390d){var _0x209591;if(_0x529961[_0xc008('0x34')]['authorization']){if(_[_0xc008('0x35')](_0x529961[_0xc008('0x34')]['authorization'],'Basic')){var _0x539766=basicAuth(_0x529961);db[_0xc008('0x36')][_0xc008('0x37')]({'where':{'name':_0x539766[_0xc008('0xf')]}})[_0xc008('0x31')](function(_0x1de04b){if(!_0x1de04b||!_0x1de04b[_0xc008('0x38')](_0x539766[_0xc008('0x39')])){return _0x24c14c[_0xc008('0x3a')](0x191)[_0xc008('0x33')]({'message':_0xc008('0x3b')});}_0x529961[_0xc008('0x2d')]={'id':_0x1de04b['id']};_0x32390d();})[_0xc008('0x3c')](function(_0x596ee8){_0x32390d(_0x596ee8);});}else if(_[_0xc008('0x35')](_0x529961[_0xc008('0x34')]['authorization'],_0xc008('0x3d'))){validateJwt(_0x529961,_0x24c14c,_0x32390d);}else{if(_0x29ba43){_0x32390d();}else{return _0x24c14c[_0xc008('0x3a')](0x193)[_0xc008('0x33')]({'message':_0xc008('0x3e')});}}}else if(_0x529961[_0xc008('0x3f')][_0xc008('0x40')]){try{var _0x7cfbc5={'audience':hardwareConf[_0xc008('0x41')](),'issuer':hardwareConf[_0xc008('0x41')]()};verifyJwt(_0x529961['query'][_0xc008('0x40')],_0x7cfbc5)[_0xc008('0x31')](function(_0x459df4){return db[_0xc008('0x36')][_0xc008('0x37')]({'where':{'id':_0x459df4[_0xc008('0x42')]}})[_0xc008('0x31')](function(_0x5d0e06){_0x209591=_0x5d0e06;return db[_0xc008('0x43')][_0xc008('0x44')]({'where':{'id':0x1},'attributes':['allowedLoginAttempts',_0xc008('0x45')],'raw':!![]});})[_0xc008('0x31')](function(_0x5e38d5){if(!_0x209591||!_[_0xc008('0x46')](_0x209591[_0xc008('0x47')],_0x459df4[_0xc008('0x48')])){return _0x24c14c['status'](0x191)['json']({'message':'API\x20access\x20key\x20is\x20not\x20valid\x20anymore'});}if(_0x209591[_0xc008('0x49')]){return _0x24c14c['status'](0x191)[_0xc008('0x33')]({'message':_0xc008('0x4a')});}if(_0x209591[_0xc008('0x4b')]){if(_0x5e38d5[_0xc008('0x45')]>0x0){if(moment(_0x209591[_0xc008('0x4c')])[_0xc008('0x4d')](_0x5e38d5[_0xc008('0x45')],_0xc008('0x4e'))>moment()){return _0x24c14c[_0xc008('0x3a')](0x191)[_0xc008('0x33')]({'message':_0xc008('0x4a')});}}else{return _0x24c14c[_0xc008('0x3a')](0x191)[_0xc008('0x33')]({'message':_0xc008('0x4a')});}}_0x529961['user']={'id':_0x209591['id']};_0x32390d();});})[_0xc008('0x3c')](function(){return _0x24c14c[_0xc008('0x3a')](0x191)[_0xc008('0x33')]({'message':_0xc008('0x4a')});});}catch(_0x49a16d){_0x32390d(_0x49a16d);}}else if(_0x29ba43){_0x32390d();}else{return _0x24c14c[_0xc008('0x3a')](0x193)[_0xc008('0x33')]({'message':_0xc008('0x3e')});}})[_0xc008('0x2c')](function(_0x2d142d,_0x5706bb,_0x398cdd){if(_0x2d142d[_0xc008('0x2d')]){db[_0xc008('0x36')][_0xc008('0x37')]({'where':{'id':_0x2d142d[_0xc008('0x2d')]['id']},'attributes':userAttributes})['then'](function(_0xf4cc4b){if(!_0xf4cc4b){return _0x5706bb[_0xc008('0x3a')](0x194)[_0xc008('0x33')]({'message':_0xc008('0x4f')});}_0x2d142d['user']=_0xf4cc4b;_0x398cdd();})[_0xc008('0x3c')](function(_0xe37446){_0x398cdd(_0xe37446);});}else if(_0x29ba43){_0x398cdd();}else{return _0x5706bb[_0xc008('0x3a')](0x194)['json']({'message':_0xc008('0x50')});}});};exports['canUpdate']=function canUpdate(){return compose()[_0xc008('0x2c')](function(_0x5d3a72,_0x46fa8f,_0x213014){return licenseUtil['getLicense']()[_0xc008('0x31')](function(_0x24ba0f){if(_0x24ba0f[_0xc008('0x51')]){_0x213014();}else{return _0x46fa8f['status'](0x193)[_0xc008('0x33')]({'message':_0xc008('0x52')});}})[_0xc008('0x3c')](function(_0x44fc5d){_0x213014(_0x44fc5d);});});};exports[_0xc008('0x53')]=function isWebrtcLicence(){return compose()[_0xc008('0x2c')](function(_0x59ca2b,_0x47cafa,_0x5283a8){return licenseUtil[_0xc008('0x54')]()[_0xc008('0x31')](function(_0x103a83){if(_0x103a83[_0xc008('0x55')]){_0x5283a8();}else{return _0x47cafa[_0xc008('0x3a')](0x193)[_0xc008('0x33')]({'message':_0xc008('0x52')});}})[_0xc008('0x3c')](function(_0x572593){_0x5283a8(_0x572593);});});};exports['isMiddleware']=function(_0x516e43,_0x2d5a49,_0x2651cf){_0x516e43[_0xc008('0x56')]=!![];return _0x2651cf();};exports['signToken']=function signToken(_0x28bc33){return signJwt(_0x28bc33);};exports[_0xc008('0x57')]=function(_0x17ab1a,_0x1c2c50){if(!_0x17ab1a[_0xc008('0x2d')]){return _0x1c2c50[_0xc008('0x3a')](0x194)[_0xc008('0x33')]({'message':_0xc008('0x58')});}var _0x3fd7d9={'payload':{'id':_0x17ab1a[_0xc008('0x2d')]['id'],'role':_0x17ab1a['user']['role']},'options':{'expiresIn':0x15180}};return signJwt(_0x3fd7d9)[_0xc008('0x31')](function(_0x51cb14){_0x1c2c50[_0xc008('0x59')](_0xc008('0x5a'),_0x51cb14);_0x1c2c50[_0xc008('0x5b')]('/dashboards/general');})[_0xc008('0x3c')](function(_0x32b435){return _0x1c2c50[_0xc008('0x3a')](0x1f4)[_0xc008('0x5c')](_0x32b435);});};exports[_0xc008('0x5d')]=function(_0x51105f){if(_[_0xc008('0x5e')](_0x51105f[_0xc008('0x47')])||_['isNil'](_0x51105f[_0xc008('0x5f')])){return null;}else{return createJwt(_0x51105f);}};exports[_0xc008('0x60')]=function(_0x5b5fbf){_0x5b5fbf['apiKeyNonce']=generateNonce();_0x5b5fbf[_0xc008('0x5f')]=generateIssuedAt();return createJwt(_0x5b5fbf);};exports[_0xc008('0x61')]=function(_0x20947b,_0x30d0aa){var _0x14b6a0=_0x20947b['query']['apikey'];if(_0x14b6a0){var _0x34b72a={'nonce':_0x30d0aa['apiKeyNonce'],'iat':_0x30d0aa[_0xc008('0x5f')],'audience':hardwareConf[_0xc008('0x41')](),'issuer':hardwareConf[_0xc008('0x41')]()};return verifyJwt(_0x14b6a0,_0x34b72a)[_0xc008('0x31')](function(){return generateApiKey(_0x30d0aa);});}else{throw{'message':_0xc008('0x62')};}};exports[_0xc008('0x63')]=function(_0x49d8b0){var _0x2ea742=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(!_0x2ea742[_0xc008('0x64')](_0x49d8b0))throw new db[(_0xc008('0x65'))][(_0xc008('0x66'))](_0xc008('0x67'));return;};exports['validatePasswordHistory']=function(_0x41fae3,_0x4fdab4,_0x535e6e){var _0x5dbfca=encryptor[_0xc008('0x68')](_0x4fdab4)[_0xc008('0x69')](',');for(var _0x5dfb69=0x0;_0x5dfb69<_0x535e6e;_0x5dfb69++){if(!_0x5dbfca[_0x5dfb69])break;if(_0x41fae3['toLowerCase']()===_0x5dbfca[_0x5dfb69][_0xc008('0x6a')]()){var _0x2d8361=util[_0xc008('0x6b')]('The\x20password\x20must\x20be\x20different\x20from\x20the\x20previous\x20%d\x20passwords.\x20Please\x20choose\x20another\x20one.',_0x535e6e);if(_0x535e6e===0x1){_0x2d8361=_0xc008('0x6c');}throw new db[(_0xc008('0x65'))][(_0xc008('0x66'))](_0x2d8361);}}return;};exports[_0xc008('0x6d')]=function(_0x5baff1,_0x4022dd){var _0x4eaa6d=_0x4022dd?encryptor[_0xc008('0x68')](_0x4022dd)[_0xc008('0x69')](','):[];if(_0x4eaa6d[_0xc008('0x6e')]===0x5){_0x4eaa6d[_0xc008('0x6f')](-0x1,0x1);}_0x4eaa6d[_0xc008('0x70')](_0x5baff1);return encryptor[_0xc008('0x71')](_0x4eaa6d['join'](','));};function signJwt(_0x375e71){var _0x570001=BPromise['promisify'](jwt[_0xc008('0x72')],{'context':jwt});var _0x30aa1e=_0x375e71['secret']||config[_0xc008('0xd')][_0xc008('0x73')];return new BPromise(function(_0x3e373e,_0x4517c0){_0x570001(_0x375e71[_0xc008('0x74')],_0x30aa1e,_0x375e71[_0xc008('0x75')])[_0xc008('0x31')](function(_0x57ce9a){_0x3e373e(_0x57ce9a);})[_0xc008('0x3c')](function(_0x462e1e){_0x4517c0(_0x462e1e);});});}function verifyJwt(_0x3bfb15,_0x2a60e6,_0xb3ca0f){var _0x167425=BPromise[_0xc008('0x76')](jwt[_0xc008('0x77')],{'context':jwt});var _0xbc430a=_0xb3ca0f||config[_0xc008('0xd')][_0xc008('0x73')];return new BPromise(function(_0x2b5eb6,_0x131b81){_0x167425(_0x3bfb15,_0xbc430a,_0x2a60e6)[_0xc008('0x31')](function(_0x4e0251){_0x2b5eb6(_0x4e0251);})[_0xc008('0x3c')](function(_0x2e5467){_0x131b81(_0x2e5467);});});}function generateNonce(){return crypto[_0xc008('0x78')](0x10)['toString'](_0xc008('0x79'));}function generateIssuedAt(){return Math[_0xc008('0x7a')](Date['now']()/0x3e8)['toString']();}function createJwt(_0x1a03fd){var _0x2a4c2b={'payload':{'iat':_0x1a03fd[_0xc008('0x5f')],'nonce':_0x1a03fd[_0xc008('0x47')]},'options':{'algorithm':_0xc008('0x7b'),'subject':_0x1a03fd['id'][_0xc008('0x7c')](),'issuer':hardwareConf[_0xc008('0x41')](),'audience':hardwareConf[_0xc008('0x41')]()}};return signJwt(_0x2a4c2b)[_0xc008('0x31')](function(_0x1b059b){return{'iat':_0x1a03fd[_0xc008('0x5f')],'nonce':_0x1a03fd['apiKeyNonce'],'token':_0x1b059b};});}
\ No newline at end of file
index 95c24b0..53e03f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1988=['buildContactsQuery','getFilteredContacts','rows','catch','describe','CmContact','keys','filter','startsWith','cf_','map','CmCustomField','findOne','slice','length','fieldType','findAll','skipContactsQuery','getContactsSubquery','resolve','search','parseQueryParameters','then','where','fields','user','clause','skip','checkListsRestrictions','tag','countFilteredContacts','count','User'];(function(_0x1612ac,_0x11cf88){var _0x25cf92=function(_0x8b82fc){while(--_0x8b82fc){_0x1612ac['push'](_0x1612ac['shift']());}};_0x25cf92(++_0x11cf88);}(_0x1988,0x139));var _0x8198=function(_0x584117,_0x111b02){_0x584117=_0x584117-0x0;var _0xef0a23=_0x1988[_0x584117];return _0xef0a23;};'use strict';var _=require('lodash');var sqlUtils=require('./sql-utils');var db=require('../../mysqldb')['db'];exports[_0x8198('0x0')]=function(_0x590377,_0x4a8ee9,_0x84d79c,_0x2e0915){var _0x1402d5={'count':0x0,'rows':[]};var _0x575f9c=sqlUtils[_0x8198('0x1')](_0x4a8ee9,_0x590377);if(_0x575f9c){return Promise['resolve'](_0x1402d5);}var _0x545c44=sqlUtils[_0x8198('0x2')]();var _0x3ead44={};var _0x453da3=![];var _0x4763c0=![];return Promise[_0x8198('0x3')]()['then'](function(){if(_0x590377[_0x8198('0x4')]){return sqlUtils['parseAdvancedSearchFilter'](_0x590377[_0x8198('0x4')],_0x2e0915);}else{return sqlUtils[_0x8198('0x5')](_0x590377,_0x2e0915);}})[_0x8198('0x6')](function(_0x1822a5){_0x545c44[_0x8198('0x7')](_0x1822a5['default']);_0x545c44[_0x8198('0x7')](_0x1822a5[_0x8198('0x8')]);_0x545c44[_0x8198('0x7')](_0x1822a5['filter']);_0x545c44[_0x8198('0x7')](_0x1822a5[_0x8198('0x9')][_0x8198('0xa')]);_0x3ead44=_0x1822a5['tags'];_0x4763c0=_0x1822a5[_0x8198('0x9')][_0x8198('0xb')];return sqlUtils[_0x8198('0xc')](_0x4a8ee9,_0x590377,_0x4763c0);})[_0x8198('0x6')](function(_0x475c6b){_0x545c44[_0x8198('0x7')](_0x475c6b);var _0x34438b=_0x590377['search']?_0x3ead44['ids']:_0x590377[_0x8198('0xd')];_0x453da3=_0x34438b?!![]:![];return sqlUtils[_0x8198('0xe')](_0x545c44,_0x34438b);})[_0x8198('0x6')](function(_0x3c0288){_0x1402d5[_0x8198('0xf')]=_0x3c0288;if(_0x1402d5[_0x8198('0xf')]===0x0){return;}if(_0x590377[_0x8198('0x10')]){_0x4763c0=!![];}return sqlUtils[_0x8198('0x11')](_0x545c44,_0x590377[_0x8198('0x8')],_0x84d79c,_0x453da3,_0x3ead44[_0x8198('0xa')],_0x4763c0);})['then'](function(_0x32ccd2){if(!_0x32ccd2){return[];}return sqlUtils[_0x8198('0x12')](_0x32ccd2,_0x590377,_0x84d79c);})[_0x8198('0x6')](function(_0x1f4b2c){_0x1402d5[_0x8198('0x13')]=_0x1f4b2c;return _0x1402d5;})[_0x8198('0x14')](function(_0x3b5820){throw _0x3b5820;});};exports[_0x8198('0x15')]=function(){var _0x52007d={};var _0x25c855=[];return db[_0x8198('0x16')]['describe']()[_0x8198('0x6')](function(_0x5ce420){_0x52007d=_0x5ce420;var _0x29f52d=Object[_0x8198('0x17')](_0x52007d)[_0x8198('0x18')](function(_0x4e277d){return _[_0x8198('0x19')](_0x4e277d,_0x8198('0x1a'))?_0x4e277d:undefined;});var _0x53625b=_0x29f52d[_0x8198('0x1b')](function(_0x51c044){return db[_0x8198('0x1c')][_0x8198('0x1d')]({'where':{'id':_0x51c044[_0x8198('0x1e')](0x3)},'raw':!![]});});return Promise['all'](_0x53625b);})[_0x8198('0x6')](function(_0x4ace44){for(var _0x196588=0x0;_0x196588<_0x4ace44[_0x8198('0x1f')];_0x196588++){if(_0x4ace44[_0x196588]){var _0x5091dd=_0x8198('0x1a')+_0x4ace44[_0x196588]['id'];_0x52007d[_0x5091dd][_0x8198('0x20')]=_0x4ace44[_0x196588]['type'];}}_0x25c855=_['map'](Object[_0x8198('0x17')](_0x52007d),function(_0x88ec02){return{'name':_0x88ec02,'type':_0x52007d[_0x88ec02]['type']};});return _0x25c855;})[_0x8198('0x14')](function(_0x3fc45c){throw _0x3fc45c;});};
\ No newline at end of file
+var _0x87c7=['default','fields','filter','user','clause','tags','skip','checkListsRestrictions','ids','count','User','buildContactsQuery','getFilteredContacts','rows','catch','describe','CmContact','keys','startsWith','cf_','findOne','slice','all','fieldType','map','type','./sql-utils','findAll','skipContactsQuery','resolve','then','search','parseAdvancedSearchFilter','parseQueryParameters','where'];(function(_0x33725b,_0x3460c1){var _0x351e62=function(_0x129b2e){while(--_0x129b2e){_0x33725b['push'](_0x33725b['shift']());}};_0x351e62(++_0x3460c1);}(_0x87c7,0x83));var _0x787c=function(_0x220241,_0x101899){_0x220241=_0x220241-0x0;var _0xabf9d7=_0x87c7[_0x220241];return _0xabf9d7;};'use strict';var _=require('lodash');var sqlUtils=require(_0x787c('0x0'));var db=require('../../mysqldb')['db'];exports[_0x787c('0x1')]=function(_0x2dbd5a,_0x542c52,_0x4990ef,_0x48e932){var _0x40ec6c={'count':0x0,'rows':[]};var _0x28f106=sqlUtils[_0x787c('0x2')](_0x542c52,_0x2dbd5a);if(_0x28f106){return Promise[_0x787c('0x3')](_0x40ec6c);}var _0x1a0db8=sqlUtils['getContactsSubquery']();var _0x3ee368={};var _0x3e2843=![];var _0x84abf7=![];return Promise[_0x787c('0x3')]()[_0x787c('0x4')](function(){if(_0x2dbd5a[_0x787c('0x5')]){return sqlUtils[_0x787c('0x6')](_0x2dbd5a['search'],_0x48e932);}else{return sqlUtils[_0x787c('0x7')](_0x2dbd5a,_0x48e932);}})[_0x787c('0x4')](function(_0x24aaf6){_0x1a0db8[_0x787c('0x8')](_0x24aaf6[_0x787c('0x9')]);_0x1a0db8[_0x787c('0x8')](_0x24aaf6[_0x787c('0xa')]);_0x1a0db8['where'](_0x24aaf6[_0x787c('0xb')]);_0x1a0db8[_0x787c('0x8')](_0x24aaf6[_0x787c('0xc')][_0x787c('0xd')]);_0x3ee368=_0x24aaf6[_0x787c('0xe')];_0x84abf7=_0x24aaf6['user'][_0x787c('0xf')];return sqlUtils[_0x787c('0x10')](_0x542c52,_0x2dbd5a,_0x84abf7);})['then'](function(_0x2ce9b8){_0x1a0db8[_0x787c('0x8')](_0x2ce9b8);var _0x308707=_0x2dbd5a[_0x787c('0x5')]?_0x3ee368[_0x787c('0x11')]:_0x2dbd5a['tag'];_0x3e2843=_0x308707?!![]:![];return sqlUtils['countFilteredContacts'](_0x1a0db8,_0x308707);})['then'](function(_0xb6fb5f){_0x40ec6c['count']=_0xb6fb5f;if(_0x40ec6c[_0x787c('0x12')]===0x0){return;}if(_0x2dbd5a[_0x787c('0x13')]){_0x84abf7=!![];}return sqlUtils[_0x787c('0x14')](_0x1a0db8,_0x2dbd5a[_0x787c('0xa')],_0x4990ef,_0x3e2843,_0x3ee368['clause'],_0x84abf7);})[_0x787c('0x4')](function(_0x5c1440){if(!_0x5c1440){return[];}return sqlUtils[_0x787c('0x15')](_0x5c1440,_0x2dbd5a,_0x4990ef);})[_0x787c('0x4')](function(_0x17d603){_0x40ec6c[_0x787c('0x16')]=_0x17d603;return _0x40ec6c;})[_0x787c('0x17')](function(_0x1ccbce){throw _0x1ccbce;});};exports[_0x787c('0x18')]=function(){var _0x57b6f9={};var _0x256ceb=[];return db[_0x787c('0x19')][_0x787c('0x18')]()[_0x787c('0x4')](function(_0x3466cd){_0x57b6f9=_0x3466cd;var _0x339401=Object[_0x787c('0x1a')](_0x57b6f9)[_0x787c('0xb')](function(_0x1d8fa4){return _[_0x787c('0x1b')](_0x1d8fa4,_0x787c('0x1c'))?_0x1d8fa4:undefined;});var _0x4a1e07=_0x339401['map'](function(_0x3fd981){return db['CmCustomField'][_0x787c('0x1d')]({'where':{'id':_0x3fd981[_0x787c('0x1e')](0x3)},'raw':!![]});});return Promise[_0x787c('0x1f')](_0x4a1e07);})[_0x787c('0x4')](function(_0x3e8788){for(var _0x3c56f8=0x0;_0x3c56f8<_0x3e8788['length'];_0x3c56f8++){if(_0x3e8788[_0x3c56f8]){var _0x459122=_0x787c('0x1c')+_0x3e8788[_0x3c56f8]['id'];_0x57b6f9[_0x459122][_0x787c('0x20')]=_0x3e8788[_0x3c56f8]['type'];}}_0x256ceb=_[_0x787c('0x21')](Object[_0x787c('0x1a')](_0x57b6f9),function(_0x45e056){return{'name':_0x45e056,'type':_0x57b6f9[_0x45e056][_0x787c('0x22')]};});return _0x256ceb;})[_0x787c('0x17')](function(_0x51f8b3){throw _0x51f8b3;});};
\ No newline at end of file
index 441cf50..84a4c4c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa07a=['includes','push','TagIds','field','GROUP_CONCAT(DISTINCT\x20t.id)','expr','getSelectedTags','forEach','CONCAT(\x27,\x27,\x20subqry.TagIds,\x20\x27,\x27)\x20LIKE\x20?','replace','length','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','isNumeric','c.phone\x20LIKE\x20?','c.mobile\x20LIKE\x20?','c.fax\x20LIKE\x20?','isEmail','c.firstName\x20LIKE\x20?','c.email\x20LIKE\x20?','parseSearch','conditions','find','name','dateOfBirth','DATE','type','default','text','start','end','Tag','value','split','clause','tags','ids','User','user','and','skip','map','some','compact','Contact','c.ListId\x20IN\x20?','concat','CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?','uc.UserId\x20=\x20?','\x20=\x20?','resolve','then','fields','tag','role','getLists','c.ListId\x20IS\x20NULL','attributes','group','c.id','limit','offset','subqry.id','having','order','DESC','subqry.','findAll','color','keyBy','Sequelize','QueryTypes','SELECT','CmContact','sequelize','query','toString','Tags','COUNT(*)','isEmpty','t.id\x20IN\x20?','exports','../parsers/advancedSearch','../parsers/qs','../interaction/utils','../../mysqldb','agent','search','ListId','autocomplete','true','select','from','where','c.deletedAt\x20IS\x20NULL','subqry','left_join','cm_user_has_contacts','uc.CmContactId\x20=\x20','.id','cm_contact_has_tags','ct.CmContactId\x20=\x20','firstName','lastName','phone','mobile','fax','CompanyId','createdAt','updatedAt'];(function(_0x5a5f05,_0x234d2a){var _0x52a1d4=function(_0x4d9e7c){while(--_0x4d9e7c){_0x5a5f05['push'](_0x5a5f05['shift']());}};_0x52a1d4(++_0x234d2a);}(_0xa07a,0xbe));var _0xaa07=function(_0x4b0637,_0x18d2c8){_0x4b0637=_0x4b0637-0x0;var _0x2239c4=_0xa07a[_0x4b0637];return _0x2239c4;};'use strict';var _=require('lodash');var squel=require('squel');var as=require(_0xaa07('0x0'));var qs=require(_0xaa07('0x1'));var utils=require(_0xaa07('0x2'));var db=require(_0xaa07('0x3'))['db'];function skipContactsQuery(_0x54a8cc,_0x3e13eb){var _0x14f0c3=![];if(_0x54a8cc['role']===_0xaa07('0x4')&&!_0x3e13eb[_0xaa07('0x5')]&&!_0x3e13eb[_0xaa07('0x6')]&&_0x3e13eb[_0xaa07('0x7')]!==_0xaa07('0x8')){_0x14f0c3=!![];}return _0x14f0c3;}function getContactsSubquery(){return squel[_0xaa07('0x9')]()[_0xaa07('0xa')]('cm_contacts','c')[_0xaa07('0xb')](_0xaa07('0xc'));}function applyJoinClauses(_0x2a4e78,_0x30855b){var _0x5ea234=_0x30855b?'c':_0xaa07('0xd');_0x2a4e78[_0xaa07('0xe')](_0xaa07('0xf'),'uc',_0xaa07('0x10')+_0x5ea234+_0xaa07('0x11'))[_0xaa07('0xe')](_0xaa07('0x12'),'ct',_0xaa07('0x13')+_0x5ea234+_0xaa07('0x11'))['left_join']('tools_tags','t','t.id\x20=\x20ct.TagId');return _0x2a4e78;}function addFieldsToQuery(_0x56de0d,_0x530eab,_0x51fdd3,_0x10e457,_0x1fe152){var _0x381fdb=_0x1fe152?'c':'subqry';if(!_0x530eab){_0x530eab=['id',_0xaa07('0x14'),_0xaa07('0x15'),_0xaa07('0x16'),_0xaa07('0x17'),_0xaa07('0x18'),'email',_0xaa07('0x6'),_0xaa07('0x19'),_0xaa07('0x1a'),_0xaa07('0x1b'),'deletedAt','TagIds'];}else if(!_0x530eab[_0xaa07('0x1c')]('id')){_0x530eab[_0xaa07('0x1d')]('id');}var _0x5cb913=_0x51fdd3&&_0x1fe152||!_0x51fdd3&&!_0x1fe152;if(_0x10e457){_0x5cb913=_0x10e457&&_0x1fe152||!_0x10e457&&!_0x1fe152;}_0x530eab['forEach'](function(_0x2cfc5e){if(_0x2cfc5e===_0xaa07('0x1e')){if(_0x5cb913){_0x56de0d[_0xaa07('0x1f')](_0xaa07('0x20'),_0x2cfc5e);}else if(_0x51fdd3||_0x10e457){_0x56de0d[_0xaa07('0x1f')](_0x381fdb+'.'+_0x2cfc5e);}}else{_0x56de0d['field'](_0x381fdb+'.'+_0x2cfc5e);}});return _0x56de0d;}function getSqlClauses(){var _0x39b033={'default':squel['expr'](),'fields':squel[_0xaa07('0x21')](),'filter':squel[_0xaa07('0x21')](),'tags':{'clause':squel['expr'](),'ids':null},'user':{'clause':squel[_0xaa07('0x21')](),'skip':![]}};return _0x39b033;}function parseTagParameter(_0x952eb1){var _0x2d40fe=squel[_0xaa07('0x21')]();if(_0x952eb1){var _0x46a9a8=utils[_0xaa07('0x22')](_0x952eb1);_0x46a9a8[_0xaa07('0x23')](function(_0x1bbabf){_0x2d40fe['or'](_0xaa07('0x24'),'%,'+_0x1bbabf+',%');});}return _0x2d40fe;}function parseSearchFilter(_0xd124b3){var _0x27fe81=squel[_0xaa07('0x21')]();if(_0xd124b3){var _0x15ec63=_0xd124b3[_0xaa07('0x25')]('\x5c','\x5c\x5c')[_0xaa07('0x25')](/'/g,'\x27\x27');if(_0x15ec63['split']('\x20')[_0xaa07('0x26')]>0x1){_0x27fe81['or'](_0xaa07('0x27'),qs['getFullTextValue'](_0x15ec63,!![]),null);}else{if(qs[_0xaa07('0x28')](_0x15ec63)){_0x27fe81['or']('c.id\x20LIKE\x20?',_0x15ec63+'%');_0x27fe81['or'](_0xaa07('0x29'),_0x15ec63+'%');_0x27fe81['or'](_0xaa07('0x2a'),_0x15ec63+'%');_0x27fe81['or'](_0xaa07('0x2b'),_0x15ec63+'%');}else if(qs[_0xaa07('0x2c')](_0x15ec63)){_0x27fe81['or']('c.email\x20LIKE\x20?',_0x15ec63+'%');}else{_0x27fe81['or'](_0xaa07('0x2d'),'%'+_0x15ec63+'%');_0x27fe81['or']('c.lastName\x20LIKE\x20?','%'+_0x15ec63+'%');_0x27fe81['or'](_0xaa07('0x2e'),'%'+_0x15ec63+'%');}}}return _0x27fe81;}function parseAdvancedSearchFilter(_0x53b894,_0x393ec4){var _0x5b3d97=getSqlClauses();var _0x130f62=as[_0xaa07('0x2f')](_0x53b894);var _0x458742=_0x130f62['sqlOperator'];for(var _0x4561b4=0x0;_0x4561b4<_0x130f62[_0xaa07('0x30')][_0xaa07('0x26')];_0x4561b4++){var _0x3181c6=_0x130f62[_0xaa07('0x30')][_0x4561b4];var _0x3da2be='c';var _0x5dd761=_[_0xaa07('0x31')](_0x393ec4,[_0xaa07('0x32'),_0x3181c6[_0xaa07('0x1f')]]);if(_0x5dd761){if(_0x3181c6['field']===_0xaa07('0x33')||_0x5dd761['fieldType']==='datetime'){_0x3181c6['castTo']=_0xaa07('0x34');}var _0x40f5b4=as['buildExpression'](_0x3da2be,_0x5dd761[_0xaa07('0x35')],_0x3181c6);_0x5b3d97[_0xaa07('0x36')][_0x458742](_0x40f5b4[_0xaa07('0x37')],_0x40f5b4['value'][_0xaa07('0x38')],_0x40f5b4['value'][_0xaa07('0x39')]);}else{if(_0x3181c6['field']===_0xaa07('0x3a')){var _0x45783a=_0x3181c6[_0xaa07('0x3b')][_0xaa07('0x3c')](',')['map'](function(_0xb52a3d){return Number(_0xb52a3d);});var _0x2dafcd=parseTagParameter(_0x45783a);_0x5b3d97['tags'][_0xaa07('0x3d')]['and'](_0x2dafcd);_0x5b3d97[_0xaa07('0x3e')][_0xaa07('0x3f')]=_0x45783a;}else if(_0x3181c6[_0xaa07('0x1f')]===_0xaa07('0x40')){_0x5b3d97[_0xaa07('0x41')]['clause'][_0xaa07('0x42')]('uc.UserId\x20=\x20?',_0x3181c6[_0xaa07('0x3b')]);_0x5b3d97[_0xaa07('0x41')][_0xaa07('0x43')]=!![];}}}return _0x5b3d97;}function parseModelFields(_0x563eb8,_0x4413de){var _0x425ce1=squel[_0xaa07('0x21')]();var _0x2904eb=_(_0x563eb8)['keys']()[_0xaa07('0x44')](function(_0x1db2f6){return _[_0xaa07('0x45')](_0x4413de,[_0xaa07('0x32'),_0x1db2f6])?_0x1db2f6:undefined;})[_0xaa07('0x46')]()['value']();if(_0x563eb8['Contact']){_0x2904eb[_0xaa07('0x1d')](_0xaa07('0x47'));}if(_0x563eb8['User']){_0x2904eb[_0xaa07('0x1d')](_0xaa07('0x40'));}if(_0x2904eb[_0xaa07('0x26')]>0x0){_0x2904eb[_0xaa07('0x23')](function(_0x1f7da3){if(_0x1f7da3==='ListId'){_0x425ce1[_0xaa07('0x42')](_0xaa07('0x48'),[][_0xaa07('0x49')](_0x563eb8[_0x1f7da3]));}else if(_0x1f7da3===_0xaa07('0x47')){var _0x382ff3='%'+_0x563eb8[_0x1f7da3]+'%';_0x425ce1[_0xaa07('0x42')](_0xaa07('0x4a'),_0x382ff3);}else if(_0x1f7da3===_0xaa07('0x40')){_0x425ce1[_0xaa07('0x42')](_0xaa07('0x4b'),_0x563eb8[_0x1f7da3]);}else{_0x425ce1[_0xaa07('0x42')]('c.'+_0x1f7da3+_0xaa07('0x4c'),_0x563eb8[_0x1f7da3]);}});}return _0x425ce1;}function parseQueryParameters(_0x1a011c,_0x589ba2){var _0xf2767e=getSqlClauses();return Promise[_0xaa07('0x4d')]()[_0xaa07('0x4e')](function(){return parseModelFields(_0x1a011c,_0x589ba2);})[_0xaa07('0x4e')](function(_0xa231f6){_0xf2767e[_0xaa07('0x4f')][_0xaa07('0x42')](_0xa231f6);return parseTagParameter(_0x1a011c[_0xaa07('0x50')]);})[_0xaa07('0x4e')](function(_0x4d727c){_0xf2767e[_0xaa07('0x3e')]['clause'][_0xaa07('0x42')](_0x4d727c);return parseSearchFilter(_0x1a011c['filter']);})[_0xaa07('0x4e')](function(_0x427eae){_0xf2767e['filter']=_0x427eae;return _0xf2767e;});}function checkListsRestrictions(_0x2c904b,_0x509976,_0x16848b){var _0x2dea00=squel[_0xaa07('0x21')]();return Promise['resolve']()[_0xaa07('0x4e')](function(){if(_0x509976['search']&&_0x2c904b[_0xaa07('0x51')]===_0xaa07('0x4')&&!_0x16848b){return _0x2c904b[_0xaa07('0x52')]({'attributes':['id'],'raw':!![]});}})['then'](function(_0x588bff){if(_0x588bff){if(_0x588bff[_0xaa07('0x26')]===0x0){_0x2dea00['and'](_0xaa07('0x53'));}else{_0x2dea00[_0xaa07('0x42')](_0xaa07('0x48'),_[_0xaa07('0x44')](_0x588bff,'id'));}}})[_0xaa07('0x4e')](function(){return _0x2dea00;});}function buildContactsQuery(_0x52e8eb,_0x3ff0a9,_0x138690,_0x576803,_0xf0604b,_0x290af4){if(_0x3ff0a9){_0x3ff0a9=_0x138690[_0xaa07('0x54')];}_0x52e8eb=addFieldsToQuery(_0x52e8eb,_0x3ff0a9,_0x576803,_0x290af4,!![]);var _0x23e165=squel[_0xaa07('0x9')]();_0x23e165=addFieldsToQuery(_0x23e165,_0x3ff0a9,_0x576803,_0x290af4,![]);if(_0x576803||_0x290af4){_0x52e8eb=applyJoinClauses(_0x52e8eb,!![]);_0x52e8eb[_0xaa07('0x55')](_0xaa07('0x56'));if(_0x138690[_0xaa07('0x57')]){_0x23e165[_0xaa07('0x57')](_0x138690[_0xaa07('0x57')]);}if(_0x138690[_0xaa07('0x58')]){_0x23e165[_0xaa07('0x58')](_0x138690[_0xaa07('0x58')]);}}else{_0x23e165=applyJoinClauses(_0x23e165,![]);_0x23e165['group'](_0xaa07('0x59'));if(_0x138690[_0xaa07('0x57')]){_0x52e8eb['limit'](_0x138690[_0xaa07('0x57')]);}if(_0x138690[_0xaa07('0x58')]){_0x52e8eb[_0xaa07('0x58')](_0x138690[_0xaa07('0x58')]);}}_0x23e165[_0xaa07('0x5a')](_0xf0604b);if(_0x138690[_0xaa07('0x5b')]){_0x138690['order'][_0xaa07('0x23')](function(_0x43b66d){_0x52e8eb['order']('c.'+_0x43b66d[0x0],_0x43b66d[0x1]===_0xaa07('0x5c')?![]:!![]);_0x23e165[_0xaa07('0x5b')](_0xaa07('0x5d')+_0x43b66d[0x0],_0x43b66d[0x1]==='DESC'?![]:!![]);});}_0x23e165[_0xaa07('0xa')](_0x52e8eb,_0xaa07('0xd'));return _0x23e165;}function getFilteredContacts(_0x1709c5){var _0x1dc8de=[];return db[_0xaa07('0x3a')][_0xaa07('0x5e')]({'attributes':['id','name',_0xaa07('0x5f')],'raw':!![]})[_0xaa07('0x4e')](function(_0x4910c9){_0x1dc8de=_[_0xaa07('0x60')](_0x4910c9,'id');var _0x5924ed={'type':db[_0xaa07('0x61')][_0xaa07('0x62')][_0xaa07('0x63')],'model':db[_0xaa07('0x64')],'mapToModel':!![],'nest':!![],'raw':!![]};return db[_0xaa07('0x65')][_0xaa07('0x66')](_0x1709c5[_0xaa07('0x67')](),_0x5924ed);})[_0xaa07('0x4e')](function(_0x518f66){_0x518f66['forEach'](function(_0x33f2b5){if(_0x33f2b5[_0xaa07('0x1e')]){_0x33f2b5[_0xaa07('0x68')]=[];_0x33f2b5[_0xaa07('0x1e')][_0xaa07('0x3c')](',')['forEach'](function(_0x2c8e9b){_0x33f2b5[_0xaa07('0x68')][_0xaa07('0x1d')](_0x1dc8de[_0x2c8e9b]);});}delete _0x33f2b5['TagIds'];});return _0x518f66;});}function countFilteredContacts(_0x7c5e5c,_0x55524c){var _0x59153c=_0x7c5e5c['clone']();_0x59153c[_0xaa07('0x1f')](_0xaa07('0x69'));_0x59153c=applyJoinClauses(_0x59153c,!![]);_0x7c5e5c['group'](_0xaa07('0x56'));var _0x4b7b5a=utils[_0xaa07('0x22')](_0x55524c);if(!_[_0xaa07('0x6a')](_0x4b7b5a)){_0x59153c[_0xaa07('0xb')](_0xaa07('0x6b'),_0x4b7b5a);}var _0xcef175={'type':db[_0xaa07('0x61')]['QueryTypes']['SELECT'],'raw':!![]};return db[_0xaa07('0x65')]['query'](_0x59153c[_0xaa07('0x67')](),_0xcef175)[_0xaa07('0x4e')](function(_0x1cde24){return _0x1cde24[0x0][_0xaa07('0x69')];});}module[_0xaa07('0x6c')]={'buildContactsQuery':buildContactsQuery,'checkListsRestrictions':checkListsRestrictions,'countFilteredContacts':countFilteredContacts,'getContactsSubquery':getContactsSubquery,'getFilteredContacts':getFilteredContacts,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipContactsQuery':skipContactsQuery};
\ No newline at end of file
+var _0x9e7f=['keyBy','QueryTypes','SELECT','CmContact','query','toString','Tags','COUNT(*)','c.id','isEmpty','t.id\x20IN\x20?','Sequelize','sequelize','exports','squel','../parsers/advancedSearch','../parsers/qs','role','agent','ListId','autocomplete','true','from','cm_contacts','where','c.deletedAt\x20IS\x20NULL','subqry','left_join','uc.CmContactId\x20=\x20','.id','cm_contact_has_tags','ct.CmContactId\x20=\x20','tools_tags','t.id\x20=\x20ct.TagId','firstName','phone','mobile','email','CompanyId','createdAt','updatedAt','deletedAt','TagIds','includes','forEach','field','expr','getSelectedTags','CONCAT(\x27,\x27,\x20subqry.TagIds,\x20\x27,\x27)\x20LIKE\x20?','replace','length','getFullTextValue','isNumeric','c.mobile\x20LIKE\x20?','c.fax\x20LIKE\x20?','isEmail','c.email\x20LIKE\x20?','c.firstName\x20LIKE\x20?','c.lastName\x20LIKE\x20?','parseSearch','sqlOperator','conditions','find','name','dateOfBirth','datetime','DATE','buildExpression','type','default','text','value','start','split','map','tags','clause','and','uc.UserId\x20=\x20?','user','skip','keys','Contact','push','User','c.ListId\x20IN\x20?','CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?','\x20=\x20?','resolve','then','fields','search','getLists','c.ListId\x20IS\x20NULL','select','limit','offset','order','DESC','Tag','findAll'];(function(_0x430205,_0x328c94){var _0x3f5146=function(_0x3cd6bd){while(--_0x3cd6bd){_0x430205['push'](_0x430205['shift']());}};_0x3f5146(++_0x328c94);}(_0x9e7f,0x13d));var _0xf9e7=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x9e7f[_0x2dafbe];return _0x58a45a;};'use strict';var _=require('lodash');var squel=require(_0xf9e7('0x0'));var as=require(_0xf9e7('0x1'));var qs=require(_0xf9e7('0x2'));var utils=require('../interaction/utils');var db=require('../../mysqldb')['db'];function skipContactsQuery(_0x29acf4,_0x3ddb60){var _0x599764=![];if(_0x29acf4[_0xf9e7('0x3')]===_0xf9e7('0x4')&&!_0x3ddb60['search']&&!_0x3ddb60[_0xf9e7('0x5')]&&_0x3ddb60[_0xf9e7('0x6')]!==_0xf9e7('0x7')){_0x599764=!![];}return _0x599764;}function getContactsSubquery(){return squel['select']()[_0xf9e7('0x8')](_0xf9e7('0x9'),'c')[_0xf9e7('0xa')](_0xf9e7('0xb'));}function applyJoinClauses(_0x207875,_0x51eeb4){var _0x38314c=_0x51eeb4?'c':_0xf9e7('0xc');_0x207875[_0xf9e7('0xd')]('cm_user_has_contacts','uc',_0xf9e7('0xe')+_0x38314c+_0xf9e7('0xf'))[_0xf9e7('0xd')](_0xf9e7('0x10'),'ct',_0xf9e7('0x11')+_0x38314c+_0xf9e7('0xf'))[_0xf9e7('0xd')](_0xf9e7('0x12'),'t',_0xf9e7('0x13'));return _0x207875;}function addFieldsToQuery(_0x20902b,_0x1f6b46,_0x55dde0,_0x4c587d,_0x259670){var _0x550946=_0x259670?'c':_0xf9e7('0xc');if(!_0x1f6b46){_0x1f6b46=['id',_0xf9e7('0x14'),'lastName',_0xf9e7('0x15'),_0xf9e7('0x16'),'fax',_0xf9e7('0x17'),_0xf9e7('0x5'),_0xf9e7('0x18'),_0xf9e7('0x19'),_0xf9e7('0x1a'),_0xf9e7('0x1b'),_0xf9e7('0x1c')];}else if(!_0x1f6b46[_0xf9e7('0x1d')]('id')){_0x1f6b46['push']('id');}var _0xff7205=_0x55dde0&&_0x259670||!_0x55dde0&&!_0x259670;if(_0x4c587d){_0xff7205=_0x4c587d&&_0x259670||!_0x4c587d&&!_0x259670;}_0x1f6b46[_0xf9e7('0x1e')](function(_0xe904ca){if(_0xe904ca===_0xf9e7('0x1c')){if(_0xff7205){_0x20902b[_0xf9e7('0x1f')]('GROUP_CONCAT(DISTINCT\x20t.id)',_0xe904ca);}else if(_0x55dde0||_0x4c587d){_0x20902b[_0xf9e7('0x1f')](_0x550946+'.'+_0xe904ca);}}else{_0x20902b[_0xf9e7('0x1f')](_0x550946+'.'+_0xe904ca);}});return _0x20902b;}function getSqlClauses(){var _0x269456={'default':squel[_0xf9e7('0x20')](),'fields':squel[_0xf9e7('0x20')](),'filter':squel['expr'](),'tags':{'clause':squel[_0xf9e7('0x20')](),'ids':null},'user':{'clause':squel[_0xf9e7('0x20')](),'skip':![]}};return _0x269456;}function parseTagParameter(_0x4e1a6e){var _0x285304=squel[_0xf9e7('0x20')]();if(_0x4e1a6e){var _0x3ec6d5=utils[_0xf9e7('0x21')](_0x4e1a6e);_0x3ec6d5[_0xf9e7('0x1e')](function(_0x5eb135){_0x285304['or'](_0xf9e7('0x22'),'%,'+_0x5eb135+',%');});}return _0x285304;}function parseSearchFilter(_0x548407){var _0x178778=squel[_0xf9e7('0x20')]();if(_0x548407){var _0x43a81f=_0x548407[_0xf9e7('0x23')]('\x5c','\x5c\x5c')[_0xf9e7('0x23')](/'/g,'\x27\x27');if(_0x43a81f['split']('\x20')[_0xf9e7('0x24')]>0x1){_0x178778['or']('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0xf9e7('0x25')](_0x43a81f,!![]),null);}else{if(qs[_0xf9e7('0x26')](_0x43a81f)){_0x178778['or']('c.id\x20LIKE\x20?',_0x43a81f+'%');_0x178778['or']('c.phone\x20LIKE\x20?',_0x43a81f+'%');_0x178778['or'](_0xf9e7('0x27'),_0x43a81f+'%');_0x178778['or'](_0xf9e7('0x28'),_0x43a81f+'%');}else if(qs[_0xf9e7('0x29')](_0x43a81f)){_0x178778['or'](_0xf9e7('0x2a'),_0x43a81f+'%');}else{_0x178778['or'](_0xf9e7('0x2b'),'%'+_0x43a81f+'%');_0x178778['or'](_0xf9e7('0x2c'),'%'+_0x43a81f+'%');_0x178778['or'](_0xf9e7('0x2a'),'%'+_0x43a81f+'%');}}}return _0x178778;}function parseAdvancedSearchFilter(_0xd78889,_0x3625ed){var _0x2e5c9f=getSqlClauses();var _0x57dd2a=as[_0xf9e7('0x2d')](_0xd78889);var _0x3ceb95=_0x57dd2a[_0xf9e7('0x2e')];for(var _0x4de113=0x0;_0x4de113<_0x57dd2a[_0xf9e7('0x2f')][_0xf9e7('0x24')];_0x4de113++){var _0x5f4732=_0x57dd2a['conditions'][_0x4de113];var _0x3d7b95='c';var _0x3c5a5a=_[_0xf9e7('0x30')](_0x3625ed,[_0xf9e7('0x31'),_0x5f4732[_0xf9e7('0x1f')]]);if(_0x3c5a5a){if(_0x5f4732[_0xf9e7('0x1f')]===_0xf9e7('0x32')||_0x3c5a5a['fieldType']===_0xf9e7('0x33')){_0x5f4732['castTo']=_0xf9e7('0x34');}var _0x21fded=as[_0xf9e7('0x35')](_0x3d7b95,_0x3c5a5a[_0xf9e7('0x36')],_0x5f4732);_0x2e5c9f[_0xf9e7('0x37')][_0x3ceb95](_0x21fded[_0xf9e7('0x38')],_0x21fded[_0xf9e7('0x39')][_0xf9e7('0x3a')],_0x21fded[_0xf9e7('0x39')]['end']);}else{if(_0x5f4732['field']==='Tag'){var _0x1c8919=_0x5f4732[_0xf9e7('0x39')][_0xf9e7('0x3b')](',')[_0xf9e7('0x3c')](function(_0x592c65){return Number(_0x592c65);});var _0x4b4699=parseTagParameter(_0x1c8919);_0x2e5c9f[_0xf9e7('0x3d')][_0xf9e7('0x3e')][_0xf9e7('0x3f')](_0x4b4699);_0x2e5c9f['tags']['ids']=_0x1c8919;}else if(_0x5f4732['field']==='User'){_0x2e5c9f['user'][_0xf9e7('0x3e')]['and'](_0xf9e7('0x40'),_0x5f4732[_0xf9e7('0x39')]);_0x2e5c9f[_0xf9e7('0x41')][_0xf9e7('0x42')]=!![];}}}return _0x2e5c9f;}function parseModelFields(_0x3404e8,_0x445dfd){var _0x467595=squel[_0xf9e7('0x20')]();var _0x5877c8=_(_0x3404e8)[_0xf9e7('0x43')]()[_0xf9e7('0x3c')](function(_0x52a8e6){return _['some'](_0x445dfd,[_0xf9e7('0x31'),_0x52a8e6])?_0x52a8e6:undefined;})['compact']()[_0xf9e7('0x39')]();if(_0x3404e8[_0xf9e7('0x44')]){_0x5877c8[_0xf9e7('0x45')](_0xf9e7('0x44'));}if(_0x3404e8[_0xf9e7('0x46')]){_0x5877c8[_0xf9e7('0x45')](_0xf9e7('0x46'));}if(_0x5877c8[_0xf9e7('0x24')]>0x0){_0x5877c8[_0xf9e7('0x1e')](function(_0x262582){if(_0x262582===_0xf9e7('0x5')){_0x467595[_0xf9e7('0x3f')](_0xf9e7('0x47'),[]['concat'](_0x3404e8[_0x262582]));}else if(_0x262582===_0xf9e7('0x44')){var _0x56c9c7='%'+_0x3404e8[_0x262582]+'%';_0x467595[_0xf9e7('0x3f')](_0xf9e7('0x48'),_0x56c9c7);}else if(_0x262582===_0xf9e7('0x46')){_0x467595[_0xf9e7('0x3f')]('uc.UserId\x20=\x20?',_0x3404e8[_0x262582]);}else{_0x467595[_0xf9e7('0x3f')]('c.'+_0x262582+_0xf9e7('0x49'),_0x3404e8[_0x262582]);}});}return _0x467595;}function parseQueryParameters(_0x281cfd,_0x195682){var _0x1bd629=getSqlClauses();return Promise[_0xf9e7('0x4a')]()[_0xf9e7('0x4b')](function(){return parseModelFields(_0x281cfd,_0x195682);})['then'](function(_0x305afb){_0x1bd629[_0xf9e7('0x4c')][_0xf9e7('0x3f')](_0x305afb);return parseTagParameter(_0x281cfd['tag']);})['then'](function(_0x5b3f2a){_0x1bd629[_0xf9e7('0x3d')][_0xf9e7('0x3e')][_0xf9e7('0x3f')](_0x5b3f2a);return parseSearchFilter(_0x281cfd['filter']);})['then'](function(_0x271a12){_0x1bd629['filter']=_0x271a12;return _0x1bd629;});}function checkListsRestrictions(_0x505633,_0x46d185,_0x161c7e){var _0x198b2c=squel['expr']();return Promise['resolve']()[_0xf9e7('0x4b')](function(){if(_0x46d185[_0xf9e7('0x4d')]&&_0x505633[_0xf9e7('0x3')]===_0xf9e7('0x4')&&!_0x161c7e){return _0x505633[_0xf9e7('0x4e')]({'attributes':['id'],'raw':!![]});}})[_0xf9e7('0x4b')](function(_0xdd48ca){if(_0xdd48ca){if(_0xdd48ca[_0xf9e7('0x24')]===0x0){_0x198b2c[_0xf9e7('0x3f')](_0xf9e7('0x4f'));}else{_0x198b2c['and'](_0xf9e7('0x47'),_[_0xf9e7('0x3c')](_0xdd48ca,'id'));}}})['then'](function(){return _0x198b2c;});}function buildContactsQuery(_0x1f0c7b,_0x1973f6,_0x3bd643,_0x167e87,_0x1f6c5c,_0x5b3987){if(_0x1973f6){_0x1973f6=_0x3bd643['attributes'];}_0x1f0c7b=addFieldsToQuery(_0x1f0c7b,_0x1973f6,_0x167e87,_0x5b3987,!![]);var _0x59adc3=squel[_0xf9e7('0x50')]();_0x59adc3=addFieldsToQuery(_0x59adc3,_0x1973f6,_0x167e87,_0x5b3987,![]);if(_0x167e87||_0x5b3987){_0x1f0c7b=applyJoinClauses(_0x1f0c7b,!![]);_0x1f0c7b['group']('c.id');if(_0x3bd643[_0xf9e7('0x51')]){_0x59adc3[_0xf9e7('0x51')](_0x3bd643[_0xf9e7('0x51')]);}if(_0x3bd643['offset']){_0x59adc3[_0xf9e7('0x52')](_0x3bd643[_0xf9e7('0x52')]);}}else{_0x59adc3=applyJoinClauses(_0x59adc3,![]);_0x59adc3['group']('subqry.id');if(_0x3bd643[_0xf9e7('0x51')]){_0x1f0c7b[_0xf9e7('0x51')](_0x3bd643[_0xf9e7('0x51')]);}if(_0x3bd643['offset']){_0x1f0c7b[_0xf9e7('0x52')](_0x3bd643['offset']);}}_0x59adc3['having'](_0x1f6c5c);if(_0x3bd643['order']){_0x3bd643[_0xf9e7('0x53')]['forEach'](function(_0x25b57f){_0x1f0c7b[_0xf9e7('0x53')]('c.'+_0x25b57f[0x0],_0x25b57f[0x1]===_0xf9e7('0x54')?![]:!![]);_0x59adc3['order']('subqry.'+_0x25b57f[0x0],_0x25b57f[0x1]===_0xf9e7('0x54')?![]:!![]);});}_0x59adc3[_0xf9e7('0x8')](_0x1f0c7b,'subqry');return _0x59adc3;}function getFilteredContacts(_0x1723c2){var _0x35e68d=[];return db[_0xf9e7('0x55')][_0xf9e7('0x56')]({'attributes':['id',_0xf9e7('0x31'),'color'],'raw':!![]})['then'](function(_0x254358){_0x35e68d=_[_0xf9e7('0x57')](_0x254358,'id');var _0x524146={'type':db['Sequelize'][_0xf9e7('0x58')][_0xf9e7('0x59')],'model':db[_0xf9e7('0x5a')],'mapToModel':!![],'nest':!![],'raw':!![]};return db['sequelize'][_0xf9e7('0x5b')](_0x1723c2[_0xf9e7('0x5c')](),_0x524146);})[_0xf9e7('0x4b')](function(_0x2f3750){_0x2f3750[_0xf9e7('0x1e')](function(_0xa12eeb){if(_0xa12eeb[_0xf9e7('0x1c')]){_0xa12eeb[_0xf9e7('0x5d')]=[];_0xa12eeb[_0xf9e7('0x1c')]['split'](',')[_0xf9e7('0x1e')](function(_0x2a53fa){_0xa12eeb[_0xf9e7('0x5d')]['push'](_0x35e68d[_0x2a53fa]);});}delete _0xa12eeb[_0xf9e7('0x1c')];});return _0x2f3750;});}function countFilteredContacts(_0x116681,_0x30ec62){var _0x6e7676=_0x116681['clone']();_0x6e7676['field'](_0xf9e7('0x5e'));_0x6e7676=applyJoinClauses(_0x6e7676,!![]);_0x116681['group'](_0xf9e7('0x5f'));var _0x1e536f=utils['getSelectedTags'](_0x30ec62);if(!_[_0xf9e7('0x60')](_0x1e536f)){_0x6e7676[_0xf9e7('0xa')](_0xf9e7('0x61'),_0x1e536f);}var _0x318ff4={'type':db[_0xf9e7('0x62')][_0xf9e7('0x58')]['SELECT'],'raw':!![]};return db[_0xf9e7('0x63')][_0xf9e7('0x5b')](_0x6e7676['toString'](),_0x318ff4)[_0xf9e7('0x4b')](function(_0x2edd34){return _0x2edd34[0x0][_0xf9e7('0x5e')];});}module[_0xf9e7('0x64')]={'buildContactsQuery':buildContactsQuery,'checkListsRestrictions':checkListsRestrictions,'countFilteredContacts':countFilteredContacts,'getContactsSubquery':getContactsSubquery,'getFilteredContacts':getFilteredContacts,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipContactsQuery':skipContactsQuery};
\ No newline at end of file
index 319abaf..bb71464 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0cb0=['decryptFile','createDecipher','encryptString','secret','update','utf8','base64','crypto','bluebird','lodash','../../config/logger','app','secrets','session','aes-256-ctr','aes192','encrypt','algorithm','join','error','test','getCiphers','indexOf','hasOwnProperty','encryptFile','createReadStream','createWriteStream','createCipher','write','end','final','binary','close','unlink'];(function(_0x18f713,_0x379588){var _0x4d524a=function(_0x405ef4){while(--_0x405ef4){_0x18f713['push'](_0x18f713['shift']());}};_0x4d524a(++_0x379588);}(_0x0cb0,0x15b));var _0x00cb=function(_0x52faef,_0x3dee75){_0x52faef=_0x52faef-0x0;var _0x5114ee=_0x0cb0[_0x52faef];return _0x5114ee;};'use strict';var crypto=require(_0x00cb('0x0'));var fs=require('fs');var BPromise=require(_0x00cb('0x1'));var _=require(_0x00cb('0x2'));var config=require('../../config/environment');var logger=require(_0x00cb('0x3'))(_0x00cb('0x4'));const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config[_0x00cb('0x5')][_0x00cb('0x6')],'algorithm':_0x00cb('0x7')};const fileOptions={'algorithm':_0x00cb('0x8')};if(config[_0x00cb('0x9')]&&config[_0x00cb('0x9')][_0x00cb('0xa')]){var isSupported=isAlgorithmSupported(config[_0x00cb('0x9')][_0x00cb('0xa')]);if(isSupported){fileOptions[_0x00cb('0xa')]=config[_0x00cb('0x9')]['algorithm'];}else{var supportedAlgorithms=getSupportedCiphers()[_0x00cb('0xb')](',\x20');logger[_0x00cb('0xc')](config[_0x00cb('0x9')][_0x00cb('0xa')],'is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:',supportedAlgorithms);}}function isASupportedCipher(_0x175137){return AES_SUPPORTED_RX[_0x00cb('0xd')](_0x175137);}function getSupportedCiphers(){return crypto[_0x00cb('0xe')]()['filter'](isASupportedCipher);}function isAlgorithmSupported(_0xfb607e){return getSupportedCiphers()[_0x00cb('0xf')](_0xfb607e)>-0x1;}function combineOptions(_0x31cf68){var _0x5ee050={};for(var _0x85b8bd in fileOptions){if(fileOptions[_0x00cb('0x10')](_0x85b8bd)){_0x5ee050[_0x85b8bd]=fileOptions[_0x85b8bd];}}if(_0x31cf68){for(var _0x201880 in _0x31cf68){if(_0x31cf68[_0x00cb('0x10')](_0x201880)){_0x5ee050[_0x201880]=_0x31cf68[_0x201880];}}}return _0x5ee050;}exports[_0x00cb('0x11')]=function(_0xc623c4,_0x3bc01d,_0x31c4f5,_0x5e017e){return new BPromise(function(_0x2a2dd6,_0x142269){_0x5e017e=combineOptions(_0x5e017e);var _0x5ea5e8=new Buffer(_0x31c4f5);var _0x469d16=fs[_0x00cb('0x12')](_0xc623c4);var _0x4da74f=fs[_0x00cb('0x13')](_0x3bc01d);var _0x322d4f=crypto[_0x00cb('0x14')](_0x5e017e['algorithm'],_0x5ea5e8);_0x469d16['on']('data',function(_0x54c7c3){var _0x1af560=new Buffer(_0x322d4f['update'](_0x54c7c3),'binary');_0x4da74f[_0x00cb('0x15')](_0x1af560);});_0x469d16['on'](_0x00cb('0x16'),function(){try{var _0x20fef3=new Buffer(_0x322d4f[_0x00cb('0x17')](_0x00cb('0x18')),'binary');_0x4da74f[_0x00cb('0x15')](_0x20fef3);_0x4da74f[_0x00cb('0x16')]();_0x4da74f['on'](_0x00cb('0x19'),function(){return _0x2a2dd6(_0x3bc01d);});}catch(_0x389639){fs[_0x00cb('0x1a')](_0x3bc01d);return _0x142269(_0x389639);}});});};exports[_0x00cb('0x1b')]=function(_0x54b35a,_0x278ed9,_0x425999,_0xf3dfd0){return new BPromise(function(_0x2f9031,_0x49f572){_0xf3dfd0=combineOptions(_0xf3dfd0);var _0x1c52ca=new Buffer(_0x425999);var _0x11f606=fs[_0x00cb('0x12')](_0x54b35a);var _0x5eb20e=fs[_0x00cb('0x13')](_0x278ed9);var _0x1ffe24=crypto[_0x00cb('0x1c')](_0xf3dfd0['algorithm'],_0x1c52ca);_0x11f606['on']('data',function(_0x2cd3c6){var _0x1021c8=new Buffer(_0x1ffe24['update'](_0x2cd3c6),_0x00cb('0x18'));_0x5eb20e[_0x00cb('0x15')](_0x1021c8);});_0x11f606['on'](_0x00cb('0x16'),function(){try{var _0x542ff0=new Buffer(_0x1ffe24['final'](_0x00cb('0x18')),_0x00cb('0x18'));_0x5eb20e[_0x00cb('0x15')](_0x542ff0);_0x5eb20e[_0x00cb('0x16')]();_0x5eb20e['on'](_0x00cb('0x19'),function(){return _0x2f9031(_0x278ed9);});}catch(_0x19bd82){fs['unlink'](_0x278ed9);return _0x49f572(_0x19bd82);}});});};exports[_0x00cb('0x1d')]=function(_0x5dffce,_0x5c8b14,_0x5a6277){var _0x43f2f0=_0x5a6277||stringOptions['algorithm'];var _0x3a8144=_0x5c8b14||stringOptions[_0x00cb('0x1e')];var _0x198aec=crypto['createCipher'](_0x43f2f0,_0x3a8144);var _0x19c398=_0x198aec[_0x00cb('0x1f')](_0x5dffce,_0x00cb('0x20'),_0x00cb('0x21'));_0x19c398+=_0x198aec[_0x00cb('0x17')](_0x00cb('0x21'));return _0x19c398;};exports['decryptString']=function(_0x2f38a4,_0x15edf9,_0x2533ab){var _0x405270=_0x2533ab||stringOptions[_0x00cb('0xa')];var _0x278972=_0x15edf9||stringOptions[_0x00cb('0x1e')];var _0x32a467=crypto['createDecipher'](_0x405270,_0x278972);var _0x3889e9=_0x32a467[_0x00cb('0x1f')](_0x2f38a4,_0x00cb('0x21'),'utf8');_0x3889e9+=_0x32a467[_0x00cb('0x17')](_0x00cb('0x20'));return _0x3889e9;};
\ No newline at end of file
+var _0xf25d=['decryptFile','createDecipher','data','encryptString','secret','utf8','base64','crypto','bluebird','lodash','../../config/environment','../../config/logger','app','secrets','session','aes-256-ctr','encrypt','algorithm','join','error','is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:','getCiphers','hasOwnProperty','encryptFile','createReadStream','createWriteStream','createCipher','update','binary','write','end','final','close','unlink'];(function(_0x478d6a,_0x5e2a8d){var _0x2992de=function(_0x826280){while(--_0x826280){_0x478d6a['push'](_0x478d6a['shift']());}};_0x2992de(++_0x5e2a8d);}(_0xf25d,0x117));var _0xdf25=function(_0x58fd6c,_0x5a15d2){_0x58fd6c=_0x58fd6c-0x0;var _0xf979ab=_0xf25d[_0x58fd6c];return _0xf979ab;};'use strict';var crypto=require(_0xdf25('0x0'));var fs=require('fs');var BPromise=require(_0xdf25('0x1'));var _=require(_0xdf25('0x2'));var config=require(_0xdf25('0x3'));var logger=require(_0xdf25('0x4'))(_0xdf25('0x5'));const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config[_0xdf25('0x6')][_0xdf25('0x7')],'algorithm':_0xdf25('0x8')};const fileOptions={'algorithm':'aes192'};if(config[_0xdf25('0x9')]&&config['encrypt'][_0xdf25('0xa')]){var isSupported=isAlgorithmSupported(config['encrypt'][_0xdf25('0xa')]);if(isSupported){fileOptions[_0xdf25('0xa')]=config['encrypt'][_0xdf25('0xa')];}else{var supportedAlgorithms=getSupportedCiphers()[_0xdf25('0xb')](',\x20');logger[_0xdf25('0xc')](config[_0xdf25('0x9')][_0xdf25('0xa')],_0xdf25('0xd'),supportedAlgorithms);}}function isASupportedCipher(_0x3da7e0){return AES_SUPPORTED_RX['test'](_0x3da7e0);}function getSupportedCiphers(){return crypto[_0xdf25('0xe')]()['filter'](isASupportedCipher);}function isAlgorithmSupported(_0x325795){return getSupportedCiphers()['indexOf'](_0x325795)>-0x1;}function combineOptions(_0x2dd4f8){var _0x1351f1={};for(var _0x2c97af in fileOptions){if(fileOptions[_0xdf25('0xf')](_0x2c97af)){_0x1351f1[_0x2c97af]=fileOptions[_0x2c97af];}}if(_0x2dd4f8){for(var _0x166f51 in _0x2dd4f8){if(_0x2dd4f8['hasOwnProperty'](_0x166f51)){_0x1351f1[_0x166f51]=_0x2dd4f8[_0x166f51];}}}return _0x1351f1;}exports[_0xdf25('0x10')]=function(_0x549397,_0x194a92,_0x295d1c,_0x4e6898){return new BPromise(function(_0x4577a6,_0x4bc0b6){_0x4e6898=combineOptions(_0x4e6898);var _0x2af8dc=new Buffer(_0x295d1c);var _0x916aa3=fs[_0xdf25('0x11')](_0x549397);var _0x11ee1f=fs[_0xdf25('0x12')](_0x194a92);var _0x574510=crypto[_0xdf25('0x13')](_0x4e6898['algorithm'],_0x2af8dc);_0x916aa3['on']('data',function(_0x2b8089){var _0x188095=new Buffer(_0x574510[_0xdf25('0x14')](_0x2b8089),_0xdf25('0x15'));_0x11ee1f[_0xdf25('0x16')](_0x188095);});_0x916aa3['on'](_0xdf25('0x17'),function(){try{var _0x242e2c=new Buffer(_0x574510[_0xdf25('0x18')]('binary'),_0xdf25('0x15'));_0x11ee1f[_0xdf25('0x16')](_0x242e2c);_0x11ee1f[_0xdf25('0x17')]();_0x11ee1f['on'](_0xdf25('0x19'),function(){return _0x4577a6(_0x194a92);});}catch(_0x5f0858){fs[_0xdf25('0x1a')](_0x194a92);return _0x4bc0b6(_0x5f0858);}});});};exports[_0xdf25('0x1b')]=function(_0x15f00d,_0x1a306a,_0x1580bc,_0x3abdfc){return new BPromise(function(_0x5db700,_0xebe72e){_0x3abdfc=combineOptions(_0x3abdfc);var _0x4b534c=new Buffer(_0x1580bc);var _0x1992c4=fs[_0xdf25('0x11')](_0x15f00d);var _0x5234ce=fs['createWriteStream'](_0x1a306a);var _0x528896=crypto[_0xdf25('0x1c')](_0x3abdfc[_0xdf25('0xa')],_0x4b534c);_0x1992c4['on'](_0xdf25('0x1d'),function(_0x1b4557){var _0x3337cf=new Buffer(_0x528896['update'](_0x1b4557),_0xdf25('0x15'));_0x5234ce[_0xdf25('0x16')](_0x3337cf);});_0x1992c4['on'](_0xdf25('0x17'),function(){try{var _0x584ffc=new Buffer(_0x528896['final'](_0xdf25('0x15')),'binary');_0x5234ce[_0xdf25('0x16')](_0x584ffc);_0x5234ce[_0xdf25('0x17')]();_0x5234ce['on']('close',function(){return _0x5db700(_0x1a306a);});}catch(_0x36c762){fs[_0xdf25('0x1a')](_0x1a306a);return _0xebe72e(_0x36c762);}});});};exports[_0xdf25('0x1e')]=function(_0x4ae274,_0x462f1f,_0x2bca8a){var _0x36d0b2=_0x2bca8a||stringOptions[_0xdf25('0xa')];var _0x261fe6=_0x462f1f||stringOptions[_0xdf25('0x1f')];var _0x171976=crypto['createCipher'](_0x36d0b2,_0x261fe6);var _0x474840=_0x171976[_0xdf25('0x14')](_0x4ae274,_0xdf25('0x20'),_0xdf25('0x21'));_0x474840+=_0x171976['final']('base64');return _0x474840;};exports['decryptString']=function(_0x3815d8,_0x357729,_0x65c4b3){var _0x48d826=_0x65c4b3||stringOptions[_0xdf25('0xa')];var _0x11102d=_0x357729||stringOptions[_0xdf25('0x1f')];var _0x552a18=crypto['createDecipher'](_0x48d826,_0x11102d);var _0x494d67=_0x552a18['update'](_0x3815d8,_0xdf25('0x21'),_0xdf25('0x20'));_0x494d67+=_0x552a18[_0xdf25('0x18')](_0xdf25('0x20'));return _0x494d67;};
\ No newline at end of file
index 9d191fb..b18d587 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x87d0=['to-csv','bluebird','zip-dir','rimraf','../../mysqldb','dbH','../../config/logger','argv','savename','AnalyticExtractedReport','update','info','format','Setting','find','split','splitSizeCsv','then','sequelize','query','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','QueryTypes','SELECT','Empty','length','num','forEach','%s\x20limit\x20%d\x20OFFSET\x20%d','push','dirname','.csv','existsSync','join','%s%d.%s','csv','%s.%s','writeFileSync','zip','zip\x20finished','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','CSV','Completed','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','Failed','exit','path','lodash'];(function(_0x6dfbaa,_0x31eede){var _0xfbe02=function(_0x4adcaf){while(--_0x4adcaf){_0x6dfbaa['push'](_0x6dfbaa['shift']());}};_0xfbe02(++_0x31eede);}(_0x87d0,0x1b7));var _0x087d=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x87d0[_0x14add3];return _0x4a174f;};'use strict';var util=require('util');var path=require(_0x087d('0x0'));var _=require(_0x087d('0x1'));var csv=require(_0x087d('0x2'));var fs=require('fs');var BPromise=require(_0x087d('0x3'));var zipdir=require(_0x087d('0x4'));var rimraf=require(_0x087d('0x5'));var db=require(_0x087d('0x6'))['db'];var dbH=require('../../mysqldb')[_0x087d('0x7')];var logger=require(_0x087d('0x8'))('analytics');var EXTRACTED_REPORT_ID=Number(process[_0x087d('0x9')][0x2]);var QUERY=process[_0x087d('0x9')][0x3];var PATH=process['argv'][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0xba4e61,_0x179741){var _0x14f982={'status':_0xba4e61};var _0x5e8fc9={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x179741){_0x14f982[_0x087d('0xa')]=_0x179741;}return db[_0x087d('0xb')][_0x087d('0xc')](_0x14f982,_0x5e8fc9);}function main(){var _0x188adc=0x1388;var _0x17fd52;logger[_0x087d('0xd')](util[_0x087d('0xe')]('Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,'CSV'));return db[_0x087d('0xf')][_0x087d('0x10')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x087d('0x11'),_0x087d('0x12')]})[_0x087d('0x13')](function(_0x499fa6){if(_0x499fa6){_0x17fd52=_0x499fa6;_0x188adc=_0x17fd52['splitSizeCsv']||0x1388;}})[_0x087d('0x13')](function(){return dbH[_0x087d('0x14')][_0x087d('0x15')](util[_0x087d('0xe')](_0x087d('0x16'),QUERY),{'type':dbH[_0x087d('0x14')][_0x087d('0x17')][_0x087d('0x18')]});})[_0x087d('0x13')](function(_0x6c1b32){if(!_0x6c1b32[0x0]['num']){return analyticExtractedReport(_0x087d('0x19'));}var _0x650acb=[];var _0x3970f8=0x0;if(_0x17fd52['split']){if(_0x6c1b32&&_0x6c1b32[_0x087d('0x1a')]){var _0x5b0274=_['range'](_0x6c1b32[0x0][_0x087d('0x1b')]/_0x188adc);var _0x4f19ef=Number['isInteger'](_0x6c1b32[0x0][_0x087d('0x1b')]/_0x188adc)?_0x6c1b32[0x0][_0x087d('0x1b')]%_0x188adc:0x0;_0x5b0274[_0x087d('0x1c')](function(_0x4a45f0){if(_0x4a45f0>0x0){_0x3970f8+=_0x188adc;}_0x650acb['push'](dbH[_0x087d('0x14')][_0x087d('0x15')](util['format'](_0x087d('0x1d'),QUERY,_0x188adc,_0x3970f8),{'type':dbH[_0x087d('0x14')][_0x087d('0x17')][_0x087d('0x18')]}));});if(_0x4f19ef>0x0){_0x3970f8+=_0x188adc;_0x650acb[_0x087d('0x1e')](dbH[_0x087d('0x14')][_0x087d('0x15')](util[_0x087d('0xe')](_0x087d('0x1d'),QUERY,_0x4f19ef,_0x3970f8),{'type':dbH['sequelize']['QueryTypes']['SELECT']}));}}}else{_0x650acb[_0x087d('0x1e')](dbH['sequelize'][_0x087d('0x15')](QUERY,{'type':dbH[_0x087d('0x14')][_0x087d('0x17')]['SELECT']}));}var _0x2e9ccf=path[_0x087d('0x1f')](PATH);var _0x2d7cd4=path['basename'](PATH,_0x087d('0x20'));var _0x3150be=_0x17fd52[_0x087d('0x11')]&&_0x650acb[_0x087d('0x1a')]>0x1;var _0x1d310=[];if(!fs[_0x087d('0x21')](path[_0x087d('0x22')](_0x2e9ccf,_0x2d7cd4))&&_0x3150be){fs['mkdirSync'](path[_0x087d('0x22')](_0x2e9ccf,_0x2d7cd4));}return BPromise['each'](_0x650acb,function(_0x14b130){_0x1d310[_0x087d('0x1e')](_0x14b130);})['then'](function(){for(var _0x25d8cb=0x0;_0x25d8cb<_0x1d310[_0x087d('0x1a')];_0x25d8cb+=0x1){var _0x2adf8c;var _0x4ef6c5=_0x1d310[_0x25d8cb];if(_0x3150be){_0x2adf8c=path[_0x087d('0x22')](_0x2e9ccf,_0x2d7cd4,util[_0x087d('0xe')](_0x087d('0x23'),_0x2d7cd4,_0x25d8cb,_0x087d('0x24')));}else{_0x2adf8c=path['join'](_0x2e9ccf,util[_0x087d('0xe')](_0x087d('0x25'),_0x2d7cd4,_0x087d('0x24')));}fs[_0x087d('0x26')](_0x2adf8c,csv(_0x4ef6c5));}})[_0x087d('0x13')](function(){if(_0x3150be){return new Promise(function(_0xa44c6b){zipdir(path[_0x087d('0x22')](_0x2e9ccf,_0x2d7cd4),{'saveTo':path['join'](_0x2e9ccf,util['format']('%s.%s',_0x2d7cd4,_0x087d('0x27')))},function(_0x2590bf,_0x55b92b){rimraf(path[_0x087d('0x22')](_0x2e9ccf,_0x2d7cd4),function(){});_0xa44c6b(_0x087d('0x28'));});});}})[_0x087d('0x13')](function(){logger[_0x087d('0xd')](util['format'](_0x087d('0x29'),EXTRACTED_REPORT_ID,_0x087d('0x2a')));return analyticExtractedReport(_0x087d('0x2b'),_0x3150be?util[_0x087d('0xe')]('%s.%s',_0x2d7cd4,_0x3150be?_0x087d('0x27'):_0x087d('0x24')):null);});})[_0x087d('0x2c')](function(_0x4b3764){logger[_0x087d('0xd')](util[_0x087d('0xe')](_0x087d('0x2d'),EXTRACTED_REPORT_ID,_0x087d('0x2a')),util[_0x087d('0x2e')](_0x4b3764,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x087d('0x2f'));})['finally'](function(){process[_0x087d('0x30')](EXIT_CODE);});}main();
\ No newline at end of file
+var _0x718d=['forEach','%s\x20limit\x20%d\x20OFFSET\x20%d','SELECT','push','format','dirname','basename','.csv','existsSync','join','each','csv','%s.%s','writeFileSync','zip','zip\x20finished','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','inspect','Failed','finally','exit','path','to-csv','bluebird','zip-dir','rimraf','../../mysqldb','../../config/logger','analytics','argv','savename','AnalyticExtractedReport','update','info','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','CSV','Setting','find','splitSizeCsv','then','sequelize','query','QueryTypes','num','Empty','split','length','range'];(function(_0x5a2f71,_0x98029e){var _0x3267cc=function(_0x5d64db){while(--_0x5d64db){_0x5a2f71['push'](_0x5a2f71['shift']());}};_0x3267cc(++_0x98029e);}(_0x718d,0xe4));var _0xd718=function(_0x3c1187,_0x20a4c3){_0x3c1187=_0x3c1187-0x0;var _0x1b7e2b=_0x718d[_0x3c1187];return _0x1b7e2b;};'use strict';var util=require('util');var path=require(_0xd718('0x0'));var _=require('lodash');var csv=require(_0xd718('0x1'));var fs=require('fs');var BPromise=require(_0xd718('0x2'));var zipdir=require(_0xd718('0x3'));var rimraf=require(_0xd718('0x4'));var db=require('../../mysqldb')['db'];var dbH=require(_0xd718('0x5'))['dbH'];var logger=require(_0xd718('0x6'))(_0xd718('0x7'));var EXTRACTED_REPORT_ID=Number(process[_0xd718('0x8')][0x2]);var QUERY=process['argv'][0x3];var PATH=process['argv'][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x3e6cb7,_0x1232bd){var _0x192e7e={'status':_0x3e6cb7};var _0x13a781={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x1232bd){_0x192e7e[_0xd718('0x9')]=_0x1232bd;}return db[_0xd718('0xa')][_0xd718('0xb')](_0x192e7e,_0x13a781);}function main(){var _0x537005=0x1388;var _0x59200a;logger[_0xd718('0xc')](util['format'](_0xd718('0xd'),EXTRACTED_REPORT_ID,_0xd718('0xe')));return db[_0xd718('0xf')][_0xd718('0x10')]({'where':{'id':0x1},'raw':!![],'attributes':['id','split',_0xd718('0x11')]})['then'](function(_0x17d817){if(_0x17d817){_0x59200a=_0x17d817;_0x537005=_0x59200a[_0xd718('0x11')]||0x1388;}})[_0xd718('0x12')](function(){return dbH[_0xd718('0x13')][_0xd718('0x14')](util['format']('SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t',QUERY),{'type':dbH[_0xd718('0x13')][_0xd718('0x15')]['SELECT']});})[_0xd718('0x12')](function(_0x2e1c26){if(!_0x2e1c26[0x0][_0xd718('0x16')]){return analyticExtractedReport(_0xd718('0x17'));}var _0x52f7a7=[];var _0x4b4f82=0x0;if(_0x59200a[_0xd718('0x18')]){if(_0x2e1c26&&_0x2e1c26[_0xd718('0x19')]){var _0x38b02d=_[_0xd718('0x1a')](_0x2e1c26[0x0][_0xd718('0x16')]/_0x537005);var _0x3f300e=Number['isInteger'](_0x2e1c26[0x0][_0xd718('0x16')]/_0x537005)?_0x2e1c26[0x0][_0xd718('0x16')]%_0x537005:0x0;_0x38b02d[_0xd718('0x1b')](function(_0x4992b0){if(_0x4992b0>0x0){_0x4b4f82+=_0x537005;}_0x52f7a7['push'](dbH['sequelize'][_0xd718('0x14')](util['format'](_0xd718('0x1c'),QUERY,_0x537005,_0x4b4f82),{'type':dbH['sequelize'][_0xd718('0x15')][_0xd718('0x1d')]}));});if(_0x3f300e>0x0){_0x4b4f82+=_0x537005;_0x52f7a7[_0xd718('0x1e')](dbH[_0xd718('0x13')][_0xd718('0x14')](util[_0xd718('0x1f')](_0xd718('0x1c'),QUERY,_0x3f300e,_0x4b4f82),{'type':dbH[_0xd718('0x13')]['QueryTypes']['SELECT']}));}}}else{_0x52f7a7['push'](dbH['sequelize']['query'](QUERY,{'type':dbH[_0xd718('0x13')]['QueryTypes'][_0xd718('0x1d')]}));}var _0x1973b5=path[_0xd718('0x20')](PATH);var _0x22331b=path[_0xd718('0x21')](PATH,_0xd718('0x22'));var _0xaa07ab=_0x59200a[_0xd718('0x18')]&&_0x52f7a7[_0xd718('0x19')]>0x1;var _0x307231=[];if(!fs[_0xd718('0x23')](path[_0xd718('0x24')](_0x1973b5,_0x22331b))&&_0xaa07ab){fs['mkdirSync'](path[_0xd718('0x24')](_0x1973b5,_0x22331b));}return BPromise[_0xd718('0x25')](_0x52f7a7,function(_0x5f3b04){_0x307231[_0xd718('0x1e')](_0x5f3b04);})[_0xd718('0x12')](function(){for(var _0xfd8559=0x0;_0xfd8559<_0x307231[_0xd718('0x19')];_0xfd8559+=0x1){var _0x19f190;var _0x4c5246=_0x307231[_0xfd8559];if(_0xaa07ab){_0x19f190=path[_0xd718('0x24')](_0x1973b5,_0x22331b,util[_0xd718('0x1f')]('%s%d.%s',_0x22331b,_0xfd8559,_0xd718('0x26')));}else{_0x19f190=path[_0xd718('0x24')](_0x1973b5,util[_0xd718('0x1f')](_0xd718('0x27'),_0x22331b,_0xd718('0x26')));}fs[_0xd718('0x28')](_0x19f190,csv(_0x4c5246));}})[_0xd718('0x12')](function(){if(_0xaa07ab){return new Promise(function(_0x5cf403){zipdir(path[_0xd718('0x24')](_0x1973b5,_0x22331b),{'saveTo':path[_0xd718('0x24')](_0x1973b5,util[_0xd718('0x1f')](_0xd718('0x27'),_0x22331b,_0xd718('0x29')))},function(_0x2c6651,_0x7b97cd){rimraf(path[_0xd718('0x24')](_0x1973b5,_0x22331b),function(){});_0x5cf403(_0xd718('0x2a'));});});}})[_0xd718('0x12')](function(){logger[_0xd718('0xc')](util[_0xd718('0x1f')](_0xd718('0x2b'),EXTRACTED_REPORT_ID,_0xd718('0xe')));return analyticExtractedReport(_0xd718('0x2c'),_0xaa07ab?util[_0xd718('0x1f')](_0xd718('0x27'),_0x22331b,_0xaa07ab?_0xd718('0x29'):_0xd718('0x26')):null);});})[_0xd718('0x2d')](function(_0xb63704){logger[_0xd718('0xc')](util[_0xd718('0x1f')](_0xd718('0x2e'),EXTRACTED_REPORT_ID,_0xd718('0xe')),util[_0xd718('0x2f')](_0xb63704,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0xd718('0x30'));})[_0xd718('0x31')](function(){process[_0xd718('0x32')](EXIT_CODE);});}main();
\ No newline at end of file
index 5d7c5d7..04ade46 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f62=['interactionId','YYYY-MM-DD','Arial','center','Interaction\x20Transcript','\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s','pipe','createWriteStream','finish','error','end','createPdfFromHTML','lodash','path','html-to-pdfmake','pdfmake/src/printer','JSDOM','window','bluebird','../../mysqldb','dbH','../../config/logger','analytics','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','savename','AnalyticExtractedReport','update','map','toString','value','fill','length','auto','body','push','concat','keys','format','Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s','endDate','header','before','margin','landscape','\x20/\x20','footer','right','num','Empty','Setting','split','splitSizePdf','then','range','isInteger','forEach','query','%s\x20limit\x20%d\x20OFFSET\x20%d','SELECT','sequelize','QueryTypes','dirname','basename','.pdf','existsSync','join','mkdirSync','each','flatten','pdf','all','zip\x20finished','info','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','PDF','Completed','%s.%s','zip','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','inspect','Failed','finally','exit','/fonts/arial-bold.ttf','/fonts/arial-italic.ttf','%s\x20#%d'];(function(_0x44038f,_0x28824c){var _0x5531bf=function(_0x319de3){while(--_0x319de3){_0x44038f['push'](_0x44038f['shift']());}};_0x5531bf(++_0x28824c);}(_0x9f62,0xc0));var _0x29f6=function(_0x1f06b5,_0x5e7ea4){_0x1f06b5=_0x1f06b5-0x0;var _0x555196=_0x9f62[_0x1f06b5];return _0x555196;};'use strict';var _=require(_0x29f6('0x0'));var fs=require('fs');var util=require('util');var path=require(_0x29f6('0x1'));var moment=require('moment');var htmlToPdfmake=require(_0x29f6('0x2'));var PdfPrinter=require(_0x29f6('0x3'));var zipdir=require('zip-dir');var rimraf=require('rimraf');var JSDOM=require('jsdom')[_0x29f6('0x4')];var window=new JSDOM('')[_0x29f6('0x5')];var BPromise=require(_0x29f6('0x6'));var db=require(_0x29f6('0x7'))['db'];var dbH=require(_0x29f6('0x7'))[_0x29f6('0x8')];var logger=require(_0x29f6('0x9'))(_0x29f6('0xa'));var EXTRACTED_REPORT_ID=Number(process['argv'][0x2]);var QUERY=process['argv'][0x3];var PATH=process[_0x29f6('0xb')][0x4];var NAME=process[_0x29f6('0xb')][0x5];var FORMAT=_0x29f6('0xc');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x1cbe86,_0x1c4e9b){var _0x2d2dd6={'status':_0x1cbe86};var _0x3e03aa={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x1c4e9b){_0x2d2dd6[_0x29f6('0xd')]=_0x1c4e9b;}return db[_0x29f6('0xe')][_0x29f6('0xf')](_0x2d2dd6,_0x3e03aa);}function getHeaders(_0x1c3e52){return _['map'](_0x1c3e52,function(_0x339e77){return{'text':_0x339e77,'style':'tableHeader'};});}function getRows(_0x38ea5d,_0xd709c1){return _[_0x29f6('0x10')](_0xd709c1,function(_0x5a91c2){return _(_0x5a91c2)['pick'](_0x38ea5d)[_0x29f6('0x10')](function(_0x56d940){return _0x56d940?_[_0x29f6('0x11')](_0x56d940):'';})[_0x29f6('0x12')]();});}function createTable(_0x8a5f50,_0x14420a){var _0x4ad058={'widths':_[_0x29f6('0x13')](Array(_0x8a5f50[_0x29f6('0x14')]),0x91),'heights':function(_0x2d609c){return _0x2d609c===0x0?_0x29f6('0x15'):0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x56063f=getHeaders(_0x8a5f50);_0x4ad058[_0x29f6('0x16')][_0x29f6('0x17')](_0x56063f);var _0x580caa=getRows(_0x8a5f50,_0x14420a);_0x4ad058[_0x29f6('0x16')]=_0x4ad058[_0x29f6('0x16')][_0x29f6('0x18')](_0x580caa);return _0x4ad058;}function createTables(_0x1660e7){var _0x2f8d78=[];var _0x33ff07=_['chunk'](Object[_0x29f6('0x19')](_0x1660e7[0x0]),0x5);_0x33ff07['forEach'](function(_0x38e059){_0x2f8d78['push'](createTable(_0x38e059,_0x1660e7));});return _0x2f8d78;}function getPDFDocDefinition(_0x131199){var _0x4a33b6=util[_0x29f6('0x1a')](_0x29f6('0x1b'),NAME,EXTRACTED_REPORT['name'],moment(EXTRACTED_REPORT['startDate'])[_0x29f6('0x1a')](FORMAT),moment(EXTRACTED_REPORT[_0x29f6('0x1c')])[_0x29f6('0x1a')](FORMAT));var _0x264f66=[];for(var _0x50a3b8=0x0;_0x50a3b8<_0x131199[_0x29f6('0x14')];_0x50a3b8++){var _0x49255d=[];if(_0x50a3b8===0x0){_0x49255d[_0x29f6('0x17')]({'text':_0x4a33b6,'style':_0x29f6('0x1d')});}var _0x1184f3={'table':_0x131199[_0x50a3b8]};if(_0x50a3b8>0x0){_0x1184f3['pageBreak']=_0x29f6('0x1e');_0x1184f3[_0x29f6('0x1f')]=[0x0,0x46,0x0,0x0];}_0x49255d[_0x29f6('0x17')](_0x1184f3);_0x264f66[_0x29f6('0x17')](_0x49255d);}return{'pageSize':'A4','pageOrientation':_0x29f6('0x20'),'content':_0x264f66,'footer':function(_0x3ab6d6,_0x37f044){return{'text':_0x3ab6d6[_0x29f6('0x11')]()+_0x29f6('0x21')+_0x37f044,'style':_0x29f6('0x22')};},'defaultStyle':{'font':'Arial'},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':'black'},'footer':{'alignment':_0x29f6('0x23'),'margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x4d74ee){var _0x853b7f=0x1388;var _0x3083c5;if(!_0x4d74ee[0x0][_0x29f6('0x24')]){return analyticExtractedReport(_0x29f6('0x25'));}return db[_0x29f6('0x26')]['find']({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x29f6('0x27'),_0x29f6('0x28')]})[_0x29f6('0x29')](function(_0x2b004b){if(_0x2b004b){_0x3083c5=_0x2b004b;_0x853b7f=_0x3083c5[_0x29f6('0x28')]||0x3e8;}})[_0x29f6('0x29')](function(){var _0x3d1060=[];var _0x21f073=0x0;if(_0x3083c5['split']){if(_0x4d74ee&&_0x4d74ee[_0x29f6('0x14')]){var _0x131344=_[_0x29f6('0x2a')](_0x4d74ee[0x0][_0x29f6('0x24')]/_0x853b7f);var _0x14c986=Number[_0x29f6('0x2b')](_0x4d74ee[0x0]['num']/_0x853b7f)?_0x4d74ee[0x0][_0x29f6('0x24')]%_0x853b7f:0x0;_0x131344[_0x29f6('0x2c')](function(_0x1d7f18){if(_0x1d7f18>0x0){_0x21f073+=_0x853b7f;}_0x3d1060[_0x29f6('0x17')](dbH['sequelize'][_0x29f6('0x2d')](util[_0x29f6('0x1a')](_0x29f6('0x2e'),QUERY,_0x853b7f,_0x21f073),{'type':dbH['sequelize']['QueryTypes'][_0x29f6('0x2f')]}));});if(_0x14c986>0x0){_0x21f073+=_0x853b7f;_0x3d1060['push'](dbH[_0x29f6('0x30')][_0x29f6('0x2d')](util[_0x29f6('0x1a')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x14c986,_0x21f073),{'type':dbH[_0x29f6('0x30')][_0x29f6('0x31')][_0x29f6('0x2f')]}));}}}else{_0x3d1060[_0x29f6('0x17')](dbH[_0x29f6('0x30')]['query'](QUERY,{'type':dbH[_0x29f6('0x30')]['QueryTypes'][_0x29f6('0x2f')]}));}var _0x219336=path[_0x29f6('0x32')](PATH);var _0x4fb5f7=path[_0x29f6('0x33')](PATH,_0x29f6('0x34'));var _0x4a3c8c=_0x3083c5['split']&&_0x3d1060[_0x29f6('0x14')]>0x1;var _0x161859=[];if(!fs[_0x29f6('0x35')](path[_0x29f6('0x36')](_0x219336,_0x4fb5f7))&&_0x4a3c8c){fs[_0x29f6('0x37')](path[_0x29f6('0x36')](_0x219336,_0x4fb5f7));}return BPromise[_0x29f6('0x38')](_0x3d1060,function(_0x4f7c89){_0x161859[_0x29f6('0x17')](_0x4f7c89);})[_0x29f6('0x29')](function(){var _0x49d771=[];for(var _0xb3f908=0x0;_0xb3f908<_0x161859['length'];_0xb3f908+=0x1){var _0x4e5059=_0x161859[_0xb3f908];var _0x3eb4fa=createTables(_[_0x29f6('0x39')](_0x4e5059));var _0x3ab8ac;var _0xefecca=getPDFDocDefinition(_0x3eb4fa);var _0x5a3dd1=getPDFPrinter();var _0x5eba10=_0x5a3dd1['createPdfKitDocument'](_0xefecca);if(_0x4a3c8c){_0x3ab8ac=path[_0x29f6('0x36')](_0x219336,_0x4fb5f7,util[_0x29f6('0x1a')]('%s%d.%s',_0x4fb5f7,_0xb3f908,_0x29f6('0x3a')));}else{_0x3ab8ac=path[_0x29f6('0x36')](_0x219336,util['format']('%s.%s',_0x4fb5f7,_0x29f6('0x3a')));}_0x49d771[_0x29f6('0x17')](writePDFDocument(_0x5eba10,_0x3ab8ac));}return Promise[_0x29f6('0x3b')](_0x49d771);})[_0x29f6('0x29')](function(){if(_0x4a3c8c){return new Promise(function(_0x4616cb){zipdir(path[_0x29f6('0x36')](_0x219336,_0x4fb5f7),{'saveTo':path['join'](_0x219336,util[_0x29f6('0x1a')]('%s.%s',_0x4fb5f7,'zip'))},function(){rimraf(path[_0x29f6('0x36')](_0x219336,_0x4fb5f7),function(){});_0x4616cb(_0x29f6('0x3c'));});});}})[_0x29f6('0x29')](function(){if(!_0x4a3c8c)return;rimraf(path[_0x29f6('0x36')](_0x219336,_0x4fb5f7),function(){});})['then'](function(){logger[_0x29f6('0x3d')](util[_0x29f6('0x1a')](_0x29f6('0x3e'),EXTRACTED_REPORT_ID,_0x29f6('0x3f')));return analyticExtractedReport(_0x29f6('0x40'),_0x4a3c8c?util[_0x29f6('0x1a')](_0x29f6('0x41'),_0x4fb5f7,_0x4a3c8c?_0x29f6('0x42'):_0x29f6('0x3a')):null);});});}function main(){if(!EXTRACTED_REPORT_ID)return;logger[_0x29f6('0x3d')](util[_0x29f6('0x1a')](_0x29f6('0x43'),EXTRACTED_REPORT_ID,_0x29f6('0x3f')));return db[_0x29f6('0xe')][_0x29f6('0x44')]({'where':{'id':EXTRACTED_REPORT_ID}})[_0x29f6('0x29')](function(_0x513dff){EXTRACTED_REPORT=_0x513dff;return dbH[_0x29f6('0x30')][_0x29f6('0x2d')](util[_0x29f6('0x1a')](_0x29f6('0x45'),QUERY),{'type':dbH[_0x29f6('0x30')][_0x29f6('0x31')]['SELECT']});})[_0x29f6('0x29')](extractReport)['catch'](function(_0x4bbc66){logger[_0x29f6('0x3d')](util[_0x29f6('0x1a')](_0x29f6('0x46'),EXTRACTED_REPORT_ID,_0x29f6('0x3f')),util[_0x29f6('0x47')](_0x4bbc66,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x29f6('0x48'));})[_0x29f6('0x49')](function(){process[_0x29f6('0x4a')](EXIT_CODE);});}main();function getPDFPrinter(){var _0x49484f=new PdfPrinter({'Arial':{'normal':__dirname+'/fonts/arial-regular.ttf','bold':__dirname+_0x29f6('0x4b'),'italics':__dirname+_0x29f6('0x4c'),'bolditalics':__dirname+'/fonts/arial-bold-italic.ttf'}});return _0x49484f;}function getPDFDocDefinitionFromHTML(_0x4f9a94,_0x12f409){var _0x5a36c1=util[_0x29f6('0x1a')](_0x29f6('0x4d'),_0x12f409['channel'],_0x12f409[_0x29f6('0x4e')]);var _0x57533a=moment()[_0x29f6('0x1a')](_0x29f6('0x4f'))[_0x29f6('0x11')]();var _0x196e5e=htmlToPdfmake(_0x4f9a94,{'window':window,'tableAutoSize':!![]});return{'content':[_0x196e5e],'defaultStyle':{'font':_0x29f6('0x50')},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':'center','margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':_0x29f6('0x51'),'margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':'center'}},'header':function(){return[{'text':_0x29f6('0x52'),'style':_0x29f6('0x1d')}];},'footer':function(_0x14f153,_0x391cfc){return[{'text':util[_0x29f6('0x1a')](_0x29f6('0x53'),_0x5a36c1,_0x14f153,_0x391cfc,_0x57533a),'style':_0x29f6('0x22')}];}};}function writePDFDocument(_0x516ae9,_0x1b40da){return new Promise(function(_0x311728,_0x471525){var _0x51fad4=_0x516ae9[_0x29f6('0x54')](fs[_0x29f6('0x55')](_0x1b40da));_0x51fad4['on'](_0x29f6('0x56'),function(){_0x311728(_0x29f6('0x56'));});_0x51fad4['on'](_0x29f6('0x57'),function(_0x53078f){_0x471525(_0x53078f);});_0x516ae9[_0x29f6('0x58')]();});}exports[_0x29f6('0x59')]=function(_0x4eb1f8,_0x5b50b8){var _0x24a388=getPDFPrinter();var _0x3bba10=getPDFDocDefinitionFromHTML(_0x4eb1f8,_0x5b50b8);var _0x35a0b6=_0x24a388['createPdfKitDocument'](_0x3bba10);return writePDFDocument(_0x35a0b6,_0x5b50b8['path'])['catch'](function(_0x3289b4){throw _0x3289b4;});};
\ No newline at end of file
+var _0x47d8=['name','endDate','header','pageBreak','before','margin','landscape','\x20/\x20','footer','Arial','black','right','num','Setting','find','split','then','isInteger','sequelize','query','%s\x20limit\x20%d\x20OFFSET\x20%d','QueryTypes','SELECT','dirname','basename','.pdf','mkdirSync','join','each','flatten','createPdfKitDocument','%s%d.%s','pdf','all','%s.%s','zip','zip\x20finished','PDF','Completed','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','findOne','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','exit','/fonts/arial-regular.ttf','/fonts/arial-bold.ttf','/fonts/arial-italic.ttf','/fonts/arial-bold-italic.ttf','%s\x20#%d','channel','interactionId','YYYY-MM-DD','center','Interaction\x20Transcript','pipe','createWriteStream','finish','error','end','createPdfFromHTML','lodash','util','path','html-to-pdfmake','pdfmake/src/printer','rimraf','jsdom','JSDOM','window','bluebird','../../mysqldb','../../config/logger','analytics','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','savename','AnalyticExtractedReport','tableHeader','map','toString','value','fill','length','auto','body','concat','keys','forEach','push','format','Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s'];(function(_0x4828db,_0x356f4d){var _0x3384f1=function(_0xbab4a1){while(--_0xbab4a1){_0x4828db['push'](_0x4828db['shift']());}};_0x3384f1(++_0x356f4d);}(_0x47d8,0xf8));var _0x847d=function(_0x50348b,_0x15548e){_0x50348b=_0x50348b-0x0;var _0x5d81ab=_0x47d8[_0x50348b];return _0x5d81ab;};'use strict';var _=require(_0x847d('0x0'));var fs=require('fs');var util=require(_0x847d('0x1'));var path=require(_0x847d('0x2'));var moment=require('moment');var htmlToPdfmake=require(_0x847d('0x3'));var PdfPrinter=require(_0x847d('0x4'));var zipdir=require('zip-dir');var rimraf=require(_0x847d('0x5'));var JSDOM=require(_0x847d('0x6'))[_0x847d('0x7')];var window=new JSDOM('')[_0x847d('0x8')];var BPromise=require(_0x847d('0x9'));var db=require(_0x847d('0xa'))['db'];var dbH=require(_0x847d('0xa'))['dbH'];var logger=require(_0x847d('0xb'))(_0x847d('0xc'));var EXTRACTED_REPORT_ID=Number(process[_0x847d('0xd')][0x2]);var QUERY=process['argv'][0x3];var PATH=process['argv'][0x4];var NAME=process[_0x847d('0xd')][0x5];var FORMAT=_0x847d('0xe');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x54fbc6,_0x1efe3e){var _0x5eb1a3={'status':_0x54fbc6};var _0x290adc={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x1efe3e){_0x5eb1a3[_0x847d('0xf')]=_0x1efe3e;}return db[_0x847d('0x10')]['update'](_0x5eb1a3,_0x290adc);}function getHeaders(_0x4fbad9){return _['map'](_0x4fbad9,function(_0x3f7607){return{'text':_0x3f7607,'style':_0x847d('0x11')};});}function getRows(_0x2bc175,_0x3d75f5){return _['map'](_0x3d75f5,function(_0x2d1ecf){return _(_0x2d1ecf)['pick'](_0x2bc175)[_0x847d('0x12')](function(_0xcb6b6e){return _0xcb6b6e?_[_0x847d('0x13')](_0xcb6b6e):'';})[_0x847d('0x14')]();});}function createTable(_0x1a716b,_0x43473b){var _0x45d336={'widths':_[_0x847d('0x15')](Array(_0x1a716b[_0x847d('0x16')]),0x91),'heights':function(_0x25c5b2){return _0x25c5b2===0x0?_0x847d('0x17'):0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x5e1066=getHeaders(_0x1a716b);_0x45d336[_0x847d('0x18')]['push'](_0x5e1066);var _0x9a5464=getRows(_0x1a716b,_0x43473b);_0x45d336[_0x847d('0x18')]=_0x45d336[_0x847d('0x18')][_0x847d('0x19')](_0x9a5464);return _0x45d336;}function createTables(_0x49950b){var _0x5deeef=[];var _0x1841a2=_['chunk'](Object[_0x847d('0x1a')](_0x49950b[0x0]),0x5);_0x1841a2[_0x847d('0x1b')](function(_0x2c21f0){_0x5deeef[_0x847d('0x1c')](createTable(_0x2c21f0,_0x49950b));});return _0x5deeef;}function getPDFDocDefinition(_0x21f957){var _0xd24261=util[_0x847d('0x1d')](_0x847d('0x1e'),NAME,EXTRACTED_REPORT[_0x847d('0x1f')],moment(EXTRACTED_REPORT['startDate'])[_0x847d('0x1d')](FORMAT),moment(EXTRACTED_REPORT[_0x847d('0x20')])[_0x847d('0x1d')](FORMAT));var _0x45376d=[];for(var _0x7ec467=0x0;_0x7ec467<_0x21f957[_0x847d('0x16')];_0x7ec467++){var _0x15ab9a=[];if(_0x7ec467===0x0){_0x15ab9a[_0x847d('0x1c')]({'text':_0xd24261,'style':_0x847d('0x21')});}var _0x591493={'table':_0x21f957[_0x7ec467]};if(_0x7ec467>0x0){_0x591493[_0x847d('0x22')]=_0x847d('0x23');_0x591493[_0x847d('0x24')]=[0x0,0x46,0x0,0x0];}_0x15ab9a[_0x847d('0x1c')](_0x591493);_0x45376d[_0x847d('0x1c')](_0x15ab9a);}return{'pageSize':'A4','pageOrientation':_0x847d('0x25'),'content':_0x45376d,'footer':function(_0x2f7965,_0x1cce7d){return{'text':_0x2f7965[_0x847d('0x13')]()+_0x847d('0x26')+_0x1cce7d,'style':_0x847d('0x27')};},'defaultStyle':{'font':_0x847d('0x28')},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':_0x847d('0x29')},'footer':{'alignment':_0x847d('0x2a'),'margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x25f820){var _0x5c3ae6=0x1388;var _0x1dce74;if(!_0x25f820[0x0][_0x847d('0x2b')]){return analyticExtractedReport('Empty');}return db[_0x847d('0x2c')][_0x847d('0x2d')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x847d('0x2e'),'splitSizePdf']})[_0x847d('0x2f')](function(_0x952497){if(_0x952497){_0x1dce74=_0x952497;_0x5c3ae6=_0x1dce74['splitSizePdf']||0x3e8;}})['then'](function(){var _0x21bdde=[];var _0x345911=0x0;if(_0x1dce74[_0x847d('0x2e')]){if(_0x25f820&&_0x25f820['length']){var _0x3f29b3=_['range'](_0x25f820[0x0]['num']/_0x5c3ae6);var _0x235ade=Number[_0x847d('0x30')](_0x25f820[0x0]['num']/_0x5c3ae6)?_0x25f820[0x0][_0x847d('0x2b')]%_0x5c3ae6:0x0;_0x3f29b3['forEach'](function(_0x3e8f22){if(_0x3e8f22>0x0){_0x345911+=_0x5c3ae6;}_0x21bdde[_0x847d('0x1c')](dbH[_0x847d('0x31')][_0x847d('0x32')](util[_0x847d('0x1d')](_0x847d('0x33'),QUERY,_0x5c3ae6,_0x345911),{'type':dbH[_0x847d('0x31')][_0x847d('0x34')][_0x847d('0x35')]}));});if(_0x235ade>0x0){_0x345911+=_0x5c3ae6;_0x21bdde[_0x847d('0x1c')](dbH['sequelize'][_0x847d('0x32')](util[_0x847d('0x1d')](_0x847d('0x33'),QUERY,_0x235ade,_0x345911),{'type':dbH['sequelize'][_0x847d('0x34')][_0x847d('0x35')]}));}}}else{_0x21bdde['push'](dbH['sequelize'][_0x847d('0x32')](QUERY,{'type':dbH[_0x847d('0x31')]['QueryTypes'][_0x847d('0x35')]}));}var _0x1e8af2=path[_0x847d('0x36')](PATH);var _0xa96bcc=path[_0x847d('0x37')](PATH,_0x847d('0x38'));var _0x30d76f=_0x1dce74[_0x847d('0x2e')]&&_0x21bdde[_0x847d('0x16')]>0x1;var _0x45c931=[];if(!fs['existsSync'](path['join'](_0x1e8af2,_0xa96bcc))&&_0x30d76f){fs[_0x847d('0x39')](path[_0x847d('0x3a')](_0x1e8af2,_0xa96bcc));}return BPromise[_0x847d('0x3b')](_0x21bdde,function(_0x2fe344){_0x45c931['push'](_0x2fe344);})[_0x847d('0x2f')](function(){var _0x3e42c0=[];for(var _0x362933=0x0;_0x362933<_0x45c931['length'];_0x362933+=0x1){var _0x569369=_0x45c931[_0x362933];var _0x16f488=createTables(_[_0x847d('0x3c')](_0x569369));var _0x3ebef2;var _0x22dc44=getPDFDocDefinition(_0x16f488);var _0x88378c=getPDFPrinter();var _0x158a77=_0x88378c[_0x847d('0x3d')](_0x22dc44);if(_0x30d76f){_0x3ebef2=path[_0x847d('0x3a')](_0x1e8af2,_0xa96bcc,util[_0x847d('0x1d')](_0x847d('0x3e'),_0xa96bcc,_0x362933,_0x847d('0x3f')));}else{_0x3ebef2=path[_0x847d('0x3a')](_0x1e8af2,util['format']('%s.%s',_0xa96bcc,'pdf'));}_0x3e42c0[_0x847d('0x1c')](writePDFDocument(_0x158a77,_0x3ebef2));}return Promise[_0x847d('0x40')](_0x3e42c0);})['then'](function(){if(_0x30d76f){return new Promise(function(_0x58d6e0){zipdir(path['join'](_0x1e8af2,_0xa96bcc),{'saveTo':path['join'](_0x1e8af2,util['format'](_0x847d('0x41'),_0xa96bcc,_0x847d('0x42')))},function(){rimraf(path[_0x847d('0x3a')](_0x1e8af2,_0xa96bcc),function(){});_0x58d6e0(_0x847d('0x43'));});});}})['then'](function(){if(!_0x30d76f)return;rimraf(path[_0x847d('0x3a')](_0x1e8af2,_0xa96bcc),function(){});})[_0x847d('0x2f')](function(){logger['info'](util[_0x847d('0x1d')]('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,_0x847d('0x44')));return analyticExtractedReport(_0x847d('0x45'),_0x30d76f?util['format'](_0x847d('0x41'),_0xa96bcc,_0x30d76f?_0x847d('0x42'):'pdf'):null);});});}function main(){if(!EXTRACTED_REPORT_ID)return;logger['info'](util['format'](_0x847d('0x46'),EXTRACTED_REPORT_ID,_0x847d('0x44')));return db[_0x847d('0x10')][_0x847d('0x47')]({'where':{'id':EXTRACTED_REPORT_ID}})['then'](function(_0x356f19){EXTRACTED_REPORT=_0x356f19;return dbH[_0x847d('0x31')]['query'](util['format'](_0x847d('0x48'),QUERY),{'type':dbH[_0x847d('0x31')]['QueryTypes'][_0x847d('0x35')]});})[_0x847d('0x2f')](extractReport)[_0x847d('0x49')](function(_0x2eed37){logger['info'](util['format'](_0x847d('0x4a'),EXTRACTED_REPORT_ID,_0x847d('0x44')),util[_0x847d('0x4b')](_0x2eed37,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport('Failed');})['finally'](function(){process[_0x847d('0x4c')](EXIT_CODE);});}main();function getPDFPrinter(){var _0x526bdb=new PdfPrinter({'Arial':{'normal':__dirname+_0x847d('0x4d'),'bold':__dirname+_0x847d('0x4e'),'italics':__dirname+_0x847d('0x4f'),'bolditalics':__dirname+_0x847d('0x50')}});return _0x526bdb;}function getPDFDocDefinitionFromHTML(_0xd71308,_0x316742){var _0x503840=util['format'](_0x847d('0x51'),_0x316742[_0x847d('0x52')],_0x316742[_0x847d('0x53')]);var _0x4de96c=moment()['format'](_0x847d('0x54'))[_0x847d('0x13')]();var _0x21a76a=htmlToPdfmake(_0xd71308,{'window':window,'tableAutoSize':!![]});return{'content':[_0x21a76a],'defaultStyle':{'font':_0x847d('0x28')},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':'center','margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':_0x847d('0x55'),'margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':'center'}},'header':function(){return[{'text':_0x847d('0x56'),'style':'header'}];},'footer':function(_0x596c3e,_0x53e3a3){return[{'text':util['format']('\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s',_0x503840,_0x596c3e,_0x53e3a3,_0x4de96c),'style':_0x847d('0x27')}];}};}function writePDFDocument(_0x5331bc,_0x41c378){return new Promise(function(_0x363ed1,_0x1de074){var _0x2cd801=_0x5331bc[_0x847d('0x57')](fs[_0x847d('0x58')](_0x41c378));_0x2cd801['on'](_0x847d('0x59'),function(){_0x363ed1('finish');});_0x2cd801['on'](_0x847d('0x5a'),function(_0x1be732){_0x1de074(_0x1be732);});_0x5331bc[_0x847d('0x5b')]();});}exports[_0x847d('0x5c')]=function(_0x3f91f4,_0x119d9f){var _0x306655=getPDFPrinter();var _0x5989f5=getPDFDocDefinitionFromHTML(_0x3f91f4,_0x119d9f);var _0x24ee8f=_0x306655[_0x847d('0x3d')](_0x5989f5);return writePDFDocument(_0x24ee8f,_0x119d9f[_0x847d('0x2')])[_0x847d('0x49')](function(_0x73e337){throw _0x73e337;});};
\ No newline at end of file
index 73b3f11..4e03577 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe33c=['inspect','Failed','finally','exit','path','json2xls','bluebird','zip-dir','rimraf','../../mysqldb','dbH','../../config/logger','analytics','argv','savename','AnalyticExtractedReport','update','info','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','find','split','splitSizeXlsx','then','sequelize','query','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','QueryTypes','SELECT','num','length','range','isInteger','forEach','%s\x20limit\x20%d\x20OFFSET\x20%d','push','dirname','basename','join','mkdirSync','each','%s%d.%s','xlsx','%s.%s','writeFileSync','binary','zip','zip\x20finished','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Completed','catch','XLSX'];(function(_0x431a2d,_0x53c582){var _0x5ac2ae=function(_0x290ba1){while(--_0x290ba1){_0x431a2d['push'](_0x431a2d['shift']());}};_0x5ac2ae(++_0x53c582);}(_0xe33c,0x1a4));var _0xce33=function(_0x2d440b,_0x4972fa){_0x2d440b=_0x2d440b-0x0;var _0x562a32=_0xe33c[_0x2d440b];return _0x562a32;};'use strict';var util=require('util');var path=require(_0xce33('0x0'));var _=require('lodash');var fs=require('fs');var json2xls=require(_0xce33('0x1'));var BPromise=require(_0xce33('0x2'));var zipdir=require(_0xce33('0x3'));var rimraf=require(_0xce33('0x4'));var db=require('../../mysqldb')['db'];var dbH=require(_0xce33('0x5'))[_0xce33('0x6')];var logger=require(_0xce33('0x7'))(_0xce33('0x8'));var EXTRACTED_REPORT_ID=Number(process[_0xce33('0x9')][0x2]);var QUERY=process[_0xce33('0x9')][0x3];var PATH=process[_0xce33('0x9')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x41f42f,_0x21cd17){var _0x18b060={'status':_0x41f42f};var _0x168733={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x21cd17){_0x18b060[_0xce33('0xa')]=_0x21cd17;}return db[_0xce33('0xb')][_0xce33('0xc')](_0x18b060,_0x168733);}function main(){var _0x53f9e2=0x1388;var _0x3fbc1c;logger[_0xce33('0xd')](util[_0xce33('0xe')](_0xce33('0xf'),EXTRACTED_REPORT_ID,'XLSX'));return db['Setting'][_0xce33('0x10')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0xce33('0x11'),_0xce33('0x12')]})[_0xce33('0x13')](function(_0x52db70){if(_0x52db70){_0x3fbc1c=_0x52db70;_0x53f9e2=_0x3fbc1c[_0xce33('0x12')]||0x1388;}})[_0xce33('0x13')](function(){return dbH[_0xce33('0x14')][_0xce33('0x15')](util[_0xce33('0xe')](_0xce33('0x16'),QUERY),{'type':dbH[_0xce33('0x14')][_0xce33('0x17')][_0xce33('0x18')]});})['then'](function(_0x18b206){if(!_0x18b206[0x0][_0xce33('0x19')]){return analyticExtractedReport('Empty');}var _0x15c180=[];var _0x35659b=0x0;if(_0x3fbc1c[_0xce33('0x11')]){if(_0x18b206&&_0x18b206[_0xce33('0x1a')]){var _0x3c7cde=_[_0xce33('0x1b')](_0x18b206[0x0][_0xce33('0x19')]/_0x53f9e2);var _0x50bfff=Number[_0xce33('0x1c')](_0x18b206[0x0][_0xce33('0x19')]/_0x53f9e2)?_0x18b206[0x0]['num']%_0x53f9e2:0x0;_0x3c7cde[_0xce33('0x1d')](function(_0x498991){if(_0x498991>0x0){_0x35659b+=_0x53f9e2;}_0x15c180['push'](dbH[_0xce33('0x14')][_0xce33('0x15')](util[_0xce33('0xe')](_0xce33('0x1e'),QUERY,_0x53f9e2,_0x35659b),{'type':dbH[_0xce33('0x14')][_0xce33('0x17')][_0xce33('0x18')]}));});if(_0x50bfff>0x0){_0x35659b+=_0x53f9e2;_0x15c180[_0xce33('0x1f')](dbH[_0xce33('0x14')]['query'](util[_0xce33('0xe')](_0xce33('0x1e'),QUERY,_0x50bfff,_0x35659b),{'type':dbH[_0xce33('0x14')][_0xce33('0x17')][_0xce33('0x18')]}));}}}else{_0x15c180['push'](dbH['sequelize'][_0xce33('0x15')](QUERY,{'type':dbH[_0xce33('0x14')][_0xce33('0x17')][_0xce33('0x18')]}));}var _0x7c7c2a=path[_0xce33('0x20')](PATH);var _0x2f914c=path[_0xce33('0x21')](PATH,'.xlsx');var _0x544c9c=_0x3fbc1c['split']&&_0x15c180[_0xce33('0x1a')]>0x1;var _0x3e2d83=[];if(!fs['existsSync'](path[_0xce33('0x22')](_0x7c7c2a,_0x2f914c))&&_0x544c9c){fs[_0xce33('0x23')](path['join'](_0x7c7c2a,_0x2f914c));}return BPromise[_0xce33('0x24')](_0x15c180,function(_0x50a87b){_0x3e2d83[_0xce33('0x1f')](_0x50a87b);})[_0xce33('0x13')](function(){for(var _0x4e2f9b=0x0;_0x4e2f9b<_0x3e2d83[_0xce33('0x1a')];_0x4e2f9b+=0x1){var _0x150de3;var _0x3b4b8d=_0x3e2d83[_0x4e2f9b];if(_0x544c9c){_0x150de3=path[_0xce33('0x22')](_0x7c7c2a,_0x2f914c,util[_0xce33('0xe')](_0xce33('0x25'),_0x2f914c,_0x4e2f9b,_0xce33('0x26')));}else{_0x150de3=path[_0xce33('0x22')](_0x7c7c2a,util['format'](_0xce33('0x27'),_0x2f914c,_0xce33('0x26')));}fs[_0xce33('0x28')](_0x150de3,json2xls(_0x3b4b8d),_0xce33('0x29'));}})[_0xce33('0x13')](function(){if(_0x544c9c){return new Promise(function(_0x1ffca8){zipdir(path['join'](_0x7c7c2a,_0x2f914c),{'saveTo':path['join'](_0x7c7c2a,util[_0xce33('0xe')]('%s.%s',_0x2f914c,_0xce33('0x2a')))},function(_0x3b8c0b,_0xeb56f1){rimraf(path[_0xce33('0x22')](_0x7c7c2a,_0x2f914c),function(){});_0x1ffca8(_0xce33('0x2b'));});});}})['then'](function(){logger['info'](util[_0xce33('0xe')](_0xce33('0x2c'),EXTRACTED_REPORT_ID,'XLSX'));return analyticExtractedReport(_0xce33('0x2d'),_0x544c9c?util[_0xce33('0xe')](_0xce33('0x27'),_0x2f914c,_0x544c9c?_0xce33('0x2a'):_0xce33('0x26')):null);});})[_0xce33('0x2e')](function(_0x3c732d){logger[_0xce33('0xd')](util[_0xce33('0xe')]('Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0xce33('0x2f')),util[_0xce33('0x30')](_0x3c732d,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0xce33('0x31'));})[_0xce33('0x32')](function(){process[_0xce33('0x33')](EXIT_CODE);});}main();
\ No newline at end of file
+var _0x83eb=['bluebird','zip-dir','rimraf','../../mysqldb','dbH','../../config/logger','analytics','argv','savename','update','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','XLSX','then','splitSizeXlsx','sequelize','query','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','QueryTypes','num','Empty','split','length','isInteger','forEach','%s\x20limit\x20%d\x20OFFSET\x20%d','push','SELECT','dirname','basename','.xlsx','existsSync','join','mkdirSync','%s%d.%s','xlsx','writeFileSync','binary','%s.%s','zip','zip\x20finished','info','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','finally','exit','util','path'];(function(_0x3a9635,_0x1ab817){var _0x10d08c=function(_0x222242){while(--_0x222242){_0x3a9635['push'](_0x3a9635['shift']());}};_0x10d08c(++_0x1ab817);}(_0x83eb,0x1f2));var _0xb83e=function(_0x15b68f,_0x372bcf){_0x15b68f=_0x15b68f-0x0;var _0x47b462=_0x83eb[_0x15b68f];return _0x47b462;};'use strict';var util=require(_0xb83e('0x0'));var path=require(_0xb83e('0x1'));var _=require('lodash');var fs=require('fs');var json2xls=require('json2xls');var BPromise=require(_0xb83e('0x2'));var zipdir=require(_0xb83e('0x3'));var rimraf=require(_0xb83e('0x4'));var db=require(_0xb83e('0x5'))['db'];var dbH=require('../../mysqldb')[_0xb83e('0x6')];var logger=require(_0xb83e('0x7'))(_0xb83e('0x8'));var EXTRACTED_REPORT_ID=Number(process[_0xb83e('0x9')][0x2]);var QUERY=process['argv'][0x3];var PATH=process[_0xb83e('0x9')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x329bed,_0x9f4445){var _0x30bd8c={'status':_0x329bed};var _0x5f3340={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x9f4445){_0x30bd8c[_0xb83e('0xa')]=_0x9f4445;}return db['AnalyticExtractedReport'][_0xb83e('0xb')](_0x30bd8c,_0x5f3340);}function main(){var _0x46c3ef=0x1388;var _0x37552e;logger['info'](util[_0xb83e('0xc')](_0xb83e('0xd'),EXTRACTED_REPORT_ID,_0xb83e('0xe')));return db['Setting']['find']({'where':{'id':0x1},'raw':!![],'attributes':['id','split','splitSizeXlsx']})[_0xb83e('0xf')](function(_0x2ba613){if(_0x2ba613){_0x37552e=_0x2ba613;_0x46c3ef=_0x37552e[_0xb83e('0x10')]||0x1388;}})[_0xb83e('0xf')](function(){return dbH[_0xb83e('0x11')][_0xb83e('0x12')](util[_0xb83e('0xc')](_0xb83e('0x13'),QUERY),{'type':dbH[_0xb83e('0x11')][_0xb83e('0x14')]['SELECT']});})[_0xb83e('0xf')](function(_0x4fede3){if(!_0x4fede3[0x0][_0xb83e('0x15')]){return analyticExtractedReport(_0xb83e('0x16'));}var _0x4c4bfd=[];var _0x17c04d=0x0;if(_0x37552e[_0xb83e('0x17')]){if(_0x4fede3&&_0x4fede3[_0xb83e('0x18')]){var _0x2ee781=_['range'](_0x4fede3[0x0]['num']/_0x46c3ef);var _0x52f7ec=Number[_0xb83e('0x19')](_0x4fede3[0x0][_0xb83e('0x15')]/_0x46c3ef)?_0x4fede3[0x0][_0xb83e('0x15')]%_0x46c3ef:0x0;_0x2ee781[_0xb83e('0x1a')](function(_0x3be546){if(_0x3be546>0x0){_0x17c04d+=_0x46c3ef;}_0x4c4bfd['push'](dbH['sequelize'][_0xb83e('0x12')](util[_0xb83e('0xc')](_0xb83e('0x1b'),QUERY,_0x46c3ef,_0x17c04d),{'type':dbH[_0xb83e('0x11')]['QueryTypes']['SELECT']}));});if(_0x52f7ec>0x0){_0x17c04d+=_0x46c3ef;_0x4c4bfd[_0xb83e('0x1c')](dbH['sequelize'][_0xb83e('0x12')](util[_0xb83e('0xc')](_0xb83e('0x1b'),QUERY,_0x52f7ec,_0x17c04d),{'type':dbH[_0xb83e('0x11')][_0xb83e('0x14')][_0xb83e('0x1d')]}));}}}else{_0x4c4bfd[_0xb83e('0x1c')](dbH[_0xb83e('0x11')][_0xb83e('0x12')](QUERY,{'type':dbH[_0xb83e('0x11')][_0xb83e('0x14')][_0xb83e('0x1d')]}));}var _0x5e9af7=path[_0xb83e('0x1e')](PATH);var _0x20f4de=path[_0xb83e('0x1f')](PATH,_0xb83e('0x20'));var _0x556ae8=_0x37552e[_0xb83e('0x17')]&&_0x4c4bfd[_0xb83e('0x18')]>0x1;var _0x174c78=[];if(!fs[_0xb83e('0x21')](path[_0xb83e('0x22')](_0x5e9af7,_0x20f4de))&&_0x556ae8){fs[_0xb83e('0x23')](path[_0xb83e('0x22')](_0x5e9af7,_0x20f4de));}return BPromise['each'](_0x4c4bfd,function(_0x2ca771){_0x174c78[_0xb83e('0x1c')](_0x2ca771);})[_0xb83e('0xf')](function(){for(var _0x3984be=0x0;_0x3984be<_0x174c78[_0xb83e('0x18')];_0x3984be+=0x1){var _0x2384fe;var _0x2922d2=_0x174c78[_0x3984be];if(_0x556ae8){_0x2384fe=path['join'](_0x5e9af7,_0x20f4de,util[_0xb83e('0xc')](_0xb83e('0x24'),_0x20f4de,_0x3984be,'xlsx'));}else{_0x2384fe=path[_0xb83e('0x22')](_0x5e9af7,util[_0xb83e('0xc')]('%s.%s',_0x20f4de,_0xb83e('0x25')));}fs[_0xb83e('0x26')](_0x2384fe,json2xls(_0x2922d2),_0xb83e('0x27'));}})[_0xb83e('0xf')](function(){if(_0x556ae8){return new Promise(function(_0x203d02){zipdir(path[_0xb83e('0x22')](_0x5e9af7,_0x20f4de),{'saveTo':path['join'](_0x5e9af7,util[_0xb83e('0xc')](_0xb83e('0x28'),_0x20f4de,_0xb83e('0x29')))},function(_0x595f4d,_0x3adf61){rimraf(path[_0xb83e('0x22')](_0x5e9af7,_0x20f4de),function(){});_0x203d02(_0xb83e('0x2a'));});});}})[_0xb83e('0xf')](function(){logger[_0xb83e('0x2b')](util[_0xb83e('0xc')](_0xb83e('0x2c'),EXTRACTED_REPORT_ID,_0xb83e('0xe')));return analyticExtractedReport('Completed',_0x556ae8?util[_0xb83e('0xc')]('%s.%s',_0x20f4de,_0x556ae8?_0xb83e('0x29'):_0xb83e('0x25')):null);});})[_0xb83e('0x2d')](function(_0x1c12db){logger['info'](util['format'](_0xb83e('0x2e'),EXTRACTED_REPORT_ID,_0xb83e('0xe')),util[_0xb83e('0x2f')](_0x1c12db,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport('Failed');})[_0xb83e('0x30')](function(){process[_0xb83e('0x31')](EXIT_CODE);});}main();
\ No newline at end of file
index 3ee2c42..99657a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb0b9=['custom','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1','splice','GotoIfTime',',${EXTEN},','last','concat','destroy','bulkCreate','sortBy','catch','error','lodash','util','models','Interval','findAll','then','intervals','VoiceExtension','IntervalId','uniq','map','exten','CAST(priority\x20AS\x20UNSIGNED)','filter','groupBy','queue','playback','hasOwnProperty','priority','extensions','extension','find','push','type','Set','format','CDR(type)=%s','outbound','CDR(destination)=','cutdigits','${EXTEN:','VoiceExtensionId','CDR(routeid)=','context','ExecIf','):Goto(','CDR(prefix)=noprefix','recordingFormat','none','_XCALLY_MIXMONITOR_FORMAT=','wav','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','length','toLowerCase','updatedAt','interval','*,*,*,*','tag','CDR(tag)=','callerID','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):Set(CALLERID(all)=','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):NoOp(No\x20number\x20available)','indexOf','app','appType'];(function(_0x2aa0e7,_0x4e5145){var _0x1472c0=function(_0x4deaeb){while(--_0x4deaeb){_0x2aa0e7['push'](_0x2aa0e7['shift']());}};_0x1472c0(++_0x4e5145);}(_0xb0b9,0x1f0));var _0x9b0b=function(_0x44a601,_0xb65d5f){_0x44a601=_0x44a601-0x0;var _0xfe6e4b=_0xb0b9[_0x44a601];return _0xfe6e4b;};'use strict';var _=require(_0x9b0b('0x0'));var util=require(_0x9b0b('0x1'));function rewrite(_0x239e9d,_0x2ae912){var _0x590168=this;return _0x239e9d[_0x9b0b('0x2')][_0x9b0b('0x3')][_0x9b0b('0x4')]({'raw':!![]})[_0x9b0b('0x5')](function(_0x369241){_0x590168[_0x9b0b('0x6')]=_0x369241;return _0x239e9d[_0x9b0b('0x2')][_0x9b0b('0x7')][_0x9b0b('0x4')]({'where':{'IntervalId':_0x2ae912[_0x9b0b('0x8')]},'raw':!![]});})[_0x9b0b('0x5')](function(_0x2c18c4){return _0x239e9d['models']['VoiceExtension'][_0x9b0b('0x4')]({'where':{'exten':{'$in':_[_0x9b0b('0x9')](_[_0x9b0b('0xa')](_0x2c18c4,_0x9b0b('0xb')))}},'order':[{'raw':_0x9b0b('0xc')}],'raw':!![]});})[_0x9b0b('0x5')](function(_0x2f8e6e){var _0x360309=_[_0x9b0b('0xd')](_0x2f8e6e,{'priority':'1'});var _0x9d8ee1=_[_0x9b0b('0xd')](_0x2f8e6e,{'isApp':0x1});var _0x10232c=_[_0x9b0b('0xe')](_0x9d8ee1,_0x9b0b('0xb'));var _0xae6a0c=[_0x9b0b('0xf'),_0x9b0b('0x10')];var _0x176438=[];var _0x564dd6=[];for(var _0x4d6338 in _0x10232c){if(_0x10232c[_0x9b0b('0x11')](_0x4d6338)){_0x590168[_0x9b0b('0x12')]=0x2;_0x590168[_0x9b0b('0x13')]=[];_0x590168[_0x9b0b('0x14')]=_[_0x9b0b('0x15')](_0x360309,{'exten':_0x10232c[_0x4d6338][0x0]['exten']});_0x590168[_0x9b0b('0x13')][_0x9b0b('0x16')]({'type':_0x10232c[_0x4d6338][0x0][_0x9b0b('0x17')],'app':_0x9b0b('0x18'),'appdata':util[_0x9b0b('0x19')](_0x9b0b('0x1a'),_0x10232c[_0x4d6338][0x0][_0x9b0b('0x17')]),'context':_0x10232c[_0x4d6338][0x0]['context'],'exten':_0x10232c[_0x4d6338][0x0][_0x9b0b('0xb')],'priority':_0x590168[_0x9b0b('0x12')]++,'VoiceExtensionId':_0x10232c[_0x4d6338][0x0]['VoiceExtensionId']});if(_0x10232c[_0x4d6338][0x0]['type']==='inbound'){_0x590168[_0x9b0b('0x13')][_0x9b0b('0x16')]({'type':_0x10232c[_0x4d6338][0x0][_0x9b0b('0x17')],'app':_0x9b0b('0x18'),'appdata':'CDR(routeid)='+_0x10232c[_0x4d6338][0x0]['VoiceExtensionId'],'context':_0x10232c[_0x4d6338][0x0]['context'],'exten':_0x10232c[_0x4d6338][0x0][_0x9b0b('0xb')],'priority':_0x590168[_0x9b0b('0x12')]++,'VoiceExtensionId':_0x10232c[_0x4d6338][0x0]['VoiceExtensionId']});}else if(_0x10232c[_0x4d6338][0x0][_0x9b0b('0x17')]===_0x9b0b('0x1b')){if(_0x590168[_0x9b0b('0x14')]){_0x590168['extensions'][_0x9b0b('0x16')]({'type':_0x10232c[_0x4d6338][0x0]['type'],'app':'Set','appdata':_0x9b0b('0x1c')+(_0x590168[_0x9b0b('0x14')][_0x9b0b('0x1d')]?_0x9b0b('0x1e')+_0x590168[_0x9b0b('0x14')][_0x9b0b('0x1d')]+'}':'${EXTEN}'),'context':_0x10232c[_0x4d6338][0x0]['context'],'exten':_0x10232c[_0x4d6338][0x0][_0x9b0b('0xb')],'priority':_0x590168['priority']++,'VoiceExtensionId':_0x10232c[_0x4d6338][0x0][_0x9b0b('0x1f')]});}_0x590168[_0x9b0b('0x13')]['push']({'type':_0x10232c[_0x4d6338][0x0][_0x9b0b('0x17')],'app':'Set','appdata':_0x9b0b('0x20')+_0x10232c[_0x4d6338][0x0][_0x9b0b('0x1f')],'context':_0x10232c[_0x4d6338][0x0][_0x9b0b('0x21')],'exten':_0x10232c[_0x4d6338][0x0][_0x9b0b('0xb')],'priority':_0x590168[_0x9b0b('0x12')]++,'VoiceExtensionId':_0x10232c[_0x4d6338][0x0][_0x9b0b('0x1f')]});var _0x82dacd=_0x590168[_0x9b0b('0x12')]++;_0x590168[_0x9b0b('0x13')][_0x9b0b('0x16')]({'type':_0x10232c[_0x4d6338][0x0][_0x9b0b('0x17')],'app':_0x9b0b('0x22'),'appdata':'$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto('+(_0x82dacd+0x2)+_0x9b0b('0x23')+(_0x82dacd+0x1)+')','context':_0x10232c[_0x4d6338][0x0][_0x9b0b('0x21')],'exten':_0x10232c[_0x4d6338][0x0][_0x9b0b('0xb')],'priority':_0x82dacd,'VoiceExtensionId':_0x10232c[_0x4d6338][0x0]['VoiceExtensionId']});if(_0x590168[_0x9b0b('0x14')]){_0x590168[_0x9b0b('0x13')][_0x9b0b('0x16')]({'type':_0x10232c[_0x4d6338][0x0][_0x9b0b('0x17')],'app':_0x9b0b('0x18'),'appdata':_0x590168[_0x9b0b('0x14')][_0x9b0b('0x1d')]?'CDR(prefix)=${EXTEN:0:'+_0x590168[_0x9b0b('0x14')][_0x9b0b('0x1d')]+'}':_0x9b0b('0x24'),'context':_0x10232c[_0x4d6338][0x0][_0x9b0b('0x21')],'exten':_0x10232c[_0x4d6338][0x0][_0x9b0b('0xb')],'priority':_0x590168['priority']++,'VoiceExtensionId':_0x10232c[_0x4d6338][0x0][_0x9b0b('0x1f')]});}_0x590168[_0x9b0b('0x13')][_0x9b0b('0x16')]({'type':_0x10232c[_0x4d6338][0x0][_0x9b0b('0x17')],'app':_0x9b0b('0x18'),'appdata':'outboundrouteid='+_0x10232c[_0x4d6338][0x0][_0x9b0b('0x1f')],'context':_0x10232c[_0x4d6338][0x0][_0x9b0b('0x21')],'exten':_0x10232c[_0x4d6338][0x0]['exten'],'priority':_0x590168[_0x9b0b('0x12')]++,'VoiceExtensionId':_0x10232c[_0x4d6338][0x0][_0x9b0b('0x1f')]});if(_0x590168[_0x9b0b('0x14')]&&_0x590168[_0x9b0b('0x14')][_0x9b0b('0x11')]('recordingFormat')&&_0x590168[_0x9b0b('0x14')][_0x9b0b('0x25')]!==_0x9b0b('0x26')){_0x590168[_0x9b0b('0x13')]['push']({'type':_0x10232c[_0x4d6338][0x0][_0x9b0b('0x17')],'app':_0x9b0b('0x18'),'appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','context':_0x10232c[_0x4d6338][0x0][_0x9b0b('0x21')],'exten':_0x10232c[_0x4d6338][0x0]['exten'],'priority':_0x590168[_0x9b0b('0x12')]++,'VoiceExtensionId':_0x10232c[_0x4d6338][0x0][_0x9b0b('0x1f')]});_0x590168[_0x9b0b('0x13')][_0x9b0b('0x16')]({'type':_0x10232c[_0x4d6338][0x0]['type'],'app':_0x9b0b('0x18'),'appdata':_0x9b0b('0x27')+_0x590168['extension'][_0x9b0b('0x25')]||_0x9b0b('0x28'),'context':_0x10232c[_0x4d6338][0x0][_0x9b0b('0x21')],'exten':_0x10232c[_0x4d6338][0x0]['exten'],'priority':_0x590168[_0x9b0b('0x12')]++,'VoiceExtensionId':_0x10232c[_0x4d6338][0x0][_0x9b0b('0x1f')]});}}_0x590168[_0x9b0b('0x13')][_0x9b0b('0x16')]({'type':_0x10232c[_0x4d6338][0x0]['type'],'app':_0x9b0b('0x18'),'appdata':'XCALLY-MOTION-ANSWER=0','context':_0x10232c[_0x4d6338][0x0][_0x9b0b('0x21')],'exten':_0x10232c[_0x4d6338][0x0][_0x9b0b('0xb')],'priority':_0x590168[_0x9b0b('0x12')]++,'VoiceExtensionId':_0x10232c[_0x4d6338][0x0][_0x9b0b('0x1f')]});_0x590168['extensions'][_0x9b0b('0x16')]({'type':_0x10232c[_0x4d6338][0x0][_0x9b0b('0x17')],'app':_0x9b0b('0x18'),'appdata':_0x9b0b('0x29'),'context':_0x10232c[_0x4d6338][0x0][_0x9b0b('0x21')],'exten':_0x10232c[_0x4d6338][0x0][_0x9b0b('0xb')],'priority':_0x590168[_0x9b0b('0x12')]++,'VoiceExtensionId':_0x10232c[_0x4d6338][0x0]['VoiceExtensionId']});_0x590168[_0x9b0b('0x13')][_0x9b0b('0x16')]({'type':_0x10232c[_0x4d6338][0x0]['type'],'app':_0x9b0b('0x18'),'appdata':_0x9b0b('0x2a'),'context':_0x10232c[_0x4d6338][0x0][_0x9b0b('0x21')],'exten':_0x10232c[_0x4d6338][0x0][_0x9b0b('0xb')],'priority':_0x590168[_0x9b0b('0x12')]++,'VoiceExtensionId':_0x10232c[_0x4d6338][0x0][_0x9b0b('0x1f')]});for(var _0x1479c9=0x0,_0x54a358=0x0;_0x1479c9<_0x10232c[_0x4d6338][_0x9b0b('0x2b')];_0x1479c9+=0x1,_0x54a358=0x0){var _0x301d25=_0x10232c[_0x4d6338][_0x1479c9];if(_0x301d25['type']){_0x301d25[_0x9b0b('0x17')]=_0x301d25['type'][_0x9b0b('0x2c')]();}var _0x2e4a5f=[];var _0x14ba8c=[];delete _0x301d25['id'];delete _0x301d25['createdAt'];delete _0x301d25[_0x9b0b('0x2d')];var _0x49255b=_0x301d25[_0x9b0b('0x2e')]!==_0x9b0b('0x2f')?[_0x301d25['interval']]:_0x301d25[_0x9b0b('0x8')]?_['map'](_[_0x9b0b('0xd')](_0x590168[_0x9b0b('0x6')],{'IntervalId':_0x301d25[_0x9b0b('0x8')]}),'interval'):[];if(_0x301d25['hasOwnProperty'](_0x9b0b('0x30'))){if(_0x301d25[_0x9b0b('0x30')]&&_0x301d25[_0x9b0b('0x30')]!=='--'){_0x2e4a5f[_0x9b0b('0x16')]({'type':_0x301d25['type'],'app':'Set','appdata':_0x9b0b('0x31')+_0x301d25[_0x9b0b('0x30')],'context':_0x301d25[_0x9b0b('0x21')],'exten':_0x301d25[_0x9b0b('0xb')],'priority':_0x49255b[_0x9b0b('0x2b')]+_0x590168[_0x9b0b('0x12')]+_0x54a358++,'VoiceExtensionId':_0x301d25['VoiceExtensionId']});}}if(_0x301d25['type']===_0x9b0b('0x1b')&&_0x301d25[_0x9b0b('0x11')](_0x9b0b('0x32'))){if(_0x301d25[_0x9b0b('0x32')]){_0x2e4a5f[_0x9b0b('0x16')]({'type':_0x301d25[_0x9b0b('0x17')],'app':'ExecIf','appdata':_0x9b0b('0x33')+_0x301d25[_0x9b0b('0x32')]+')','context':_0x301d25[_0x9b0b('0x21')],'exten':_0x301d25['exten'],'priority':_0x49255b[_0x9b0b('0x2b')]+_0x590168[_0x9b0b('0x12')]+_0x54a358++,'VoiceExtensionId':_0x301d25['VoiceExtensionId']});}else{_0x2e4a5f[_0x9b0b('0x16')]({'type':_0x301d25[_0x9b0b('0x17')],'app':_0x9b0b('0x22'),'appdata':_0x9b0b('0x34'),'context':_0x301d25[_0x9b0b('0x21')],'exten':_0x301d25[_0x9b0b('0xb')],'priority':_0x49255b[_0x9b0b('0x2b')]+_0x590168[_0x9b0b('0x12')]+_0x54a358++,'VoiceExtensionId':_0x301d25[_0x9b0b('0x1f')]});}}if(_0x301d25[_0x9b0b('0x11')]('answer')){if(_0xae6a0c[_0x9b0b('0x35')](_0x301d25[_0x9b0b('0x36')][_0x9b0b('0x2c')]())>=0x0&&_0x301d25[_0x9b0b('0x37')]!==_0x9b0b('0x38')){if(_0x301d25['answer']){_0x2e4a5f['push']({'type':_0x301d25[_0x9b0b('0x17')],'app':'ExecIf','appdata':_0x9b0b('0x39'),'context':_0x301d25[_0x9b0b('0x21')],'exten':_0x301d25[_0x9b0b('0xb')],'priority':_0x49255b['length']+_0x590168[_0x9b0b('0x12')]+_0x54a358++,'VoiceExtensionId':_0x301d25['VoiceExtensionId']});_0x2e4a5f['push']({'type':_0x301d25[_0x9b0b('0x17')],'app':'Set','appdata':_0x9b0b('0x3a'),'context':_0x301d25[_0x9b0b('0x21')],'exten':_0x301d25['exten'],'priority':_0x49255b[_0x9b0b('0x2b')]+_0x590168[_0x9b0b('0x12')]+_0x54a358++,'VoiceExtensionId':_0x301d25[_0x9b0b('0x1f')]});}else{_0x2e4a5f[_0x9b0b('0x16')]({'type':_0x301d25[_0x9b0b('0x17')],'app':_0x9b0b('0x22'),'appdata':'$[${XCALLY-MOTION-PROGRESS}=0]?Progress','context':_0x301d25['context'],'exten':_0x301d25[_0x9b0b('0xb')],'priority':_0x49255b[_0x9b0b('0x2b')]+_0x590168[_0x9b0b('0x12')]+_0x54a358++,'VoiceExtensionId':_0x301d25[_0x9b0b('0x1f')]});_0x2e4a5f[_0x9b0b('0x16')]({'type':_0x301d25[_0x9b0b('0x17')],'app':_0x9b0b('0x18'),'appdata':'XCALLY-MOTION-PROGRESS=1','context':_0x301d25[_0x9b0b('0x21')],'exten':_0x301d25['exten'],'priority':_0x49255b[_0x9b0b('0x2b')]+_0x590168[_0x9b0b('0x12')]+_0x54a358++,'VoiceExtensionId':_0x301d25[_0x9b0b('0x1f')]});}}}for(var _0x2e98b7=0x0;_0x2e98b7<_0x49255b[_0x9b0b('0x2b')];_0x2e98b7+=0x1){var _0x3cc0bf=_0x590168[_0x9b0b('0x12')]+_0x49255b['length'];var _0x364b66=_0x2e98b7===_0x49255b[_0x9b0b('0x2b')]-0x1?_0x590168[_0x9b0b('0x12')]+_0x2e4a5f[_0x9b0b('0x2b')]+_0x14ba8c[_0x9b0b('0x2b')]+0x2:_0x590168[_0x9b0b('0x12')]+_0x2e98b7+0x1;_0x2e4a5f[_0x9b0b('0x3b')](_0x2e98b7,0x0,{'type':_0x301d25['type'],'app':_0x9b0b('0x3c'),'appdata':_0x49255b[_0x2e98b7]+'?'+_0x301d25[_0x9b0b('0x21')]+_0x9b0b('0x3d')+_0x3cc0bf+':'+_0x301d25[_0x9b0b('0x21')]+_0x9b0b('0x3d')+_0x364b66,'exten':_0x301d25[_0x9b0b('0xb')],'context':_0x301d25[_0x9b0b('0x21')],'priority':_0x590168[_0x9b0b('0x12')]+_0x2e98b7,'VoiceExtensionId':_0x10232c[_0x4d6338][0x0]['VoiceExtensionId']});}_0x301d25[_0x9b0b('0x12')]=_0x2e4a5f['length']?_[_0x9b0b('0x3e')](_0x2e4a5f)['priority']+0x1:_0x590168[_0x9b0b('0x12')];_0x590168['priority']=(_0x14ba8c['length']?_[_0x9b0b('0x3e')](_0x14ba8c)['priority']:_0x301d25['priority'])+0x1;_0x590168[_0x9b0b('0x13')]=_[_0x9b0b('0x3f')](_0x590168[_0x9b0b('0x13')],_0x2e4a5f,[_0x301d25],_0x14ba8c);}_0x590168[_0x9b0b('0x13')][_0x9b0b('0x16')]({'type':_0x10232c[_0x4d6338][0x0][_0x9b0b('0x17')],'app':'Hangup','exten':_0x10232c[_0x4d6338][0x0]['exten'],'context':_0x10232c[_0x4d6338][0x0][_0x9b0b('0x21')],'priority':_0x590168[_0x9b0b('0x12')],'VoiceExtensionId':_0x10232c[_0x4d6338][0x0]['VoiceExtensionId']});_0x176438[_0x9b0b('0x16')](_0x10232c[_0x4d6338][0x0][_0x9b0b('0x1f')]);_0x564dd6=_[_0x9b0b('0x3f')](_0x564dd6,_0x590168['extensions']);}}return _0x239e9d['transaction'](function(_0x325dfa){return _0x239e9d[_0x9b0b('0x2')]['VoiceExtension'][_0x9b0b('0x40')]({'where':{'VoiceExtensionId':{'$in':_0x176438}},'transaction':_0x325dfa})['then'](function(_0x2d6f5d){return _0x239e9d[_0x9b0b('0x2')][_0x9b0b('0x7')][_0x9b0b('0x41')](_[_0x9b0b('0x42')](_0x564dd6,_0x9b0b('0x12')),{'transaction':_0x325dfa});});});})[_0x9b0b('0x43')](function(_0x211c2b){console[_0x9b0b('0x44')](_0x211c2b);});}exports['rewrite']=rewrite;
\ No newline at end of file
+var _0xf2b3=['appType','custom','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1','splice','GotoIfTime',',${EXTEN},','last','concat','Hangup','transaction','catch','error','lodash','Interval','findAll','intervals','models','VoiceExtension','IntervalId','then','filter','groupBy','queue','playback','hasOwnProperty','priority','extensions','extension','find','push','type','CDR(type)=%s','context','exten','Set','CDR(routeid)=','VoiceExtensionId','outbound','${EXTEN:','cutdigits','ExecIf','):Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','length','toLowerCase','createdAt','updatedAt','interval','tag','callerID','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):Set(CALLERID(all)=','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):NoOp(No\x20number\x20available)','answer','indexOf','app'];(function(_0x5aa430,_0x4af94b){var _0x4eba19=function(_0x2724f5){while(--_0x2724f5){_0x5aa430['push'](_0x5aa430['shift']());}};_0x4eba19(++_0x4af94b);}(_0xf2b3,0x195));var _0x3f2b=function(_0x1e312f,_0x4a1296){_0x1e312f=_0x1e312f-0x0;var _0x16eafd=_0xf2b3[_0x1e312f];return _0x16eafd;};'use strict';var _=require(_0x3f2b('0x0'));var util=require('util');function rewrite(_0x4d1875,_0x204de1){var _0x419eb9=this;return _0x4d1875['models'][_0x3f2b('0x1')][_0x3f2b('0x2')]({'raw':!![]})['then'](function(_0x1c950e){_0x419eb9[_0x3f2b('0x3')]=_0x1c950e;return _0x4d1875[_0x3f2b('0x4')][_0x3f2b('0x5')][_0x3f2b('0x2')]({'where':{'IntervalId':_0x204de1[_0x3f2b('0x6')]},'raw':!![]});})[_0x3f2b('0x7')](function(_0x14b9ac){return _0x4d1875[_0x3f2b('0x4')]['VoiceExtension'][_0x3f2b('0x2')]({'where':{'exten':{'$in':_['uniq'](_['map'](_0x14b9ac,'exten'))}},'order':[{'raw':'CAST(priority\x20AS\x20UNSIGNED)'}],'raw':!![]});})[_0x3f2b('0x7')](function(_0x510e25){var _0x37e5f4=_[_0x3f2b('0x8')](_0x510e25,{'priority':'1'});var _0x5758a3=_[_0x3f2b('0x8')](_0x510e25,{'isApp':0x1});var _0x50f536=_[_0x3f2b('0x9')](_0x5758a3,'exten');var _0x39cd17=[_0x3f2b('0xa'),_0x3f2b('0xb')];var _0x18ac1b=[];var _0x467cc3=[];for(var _0x478ade in _0x50f536){if(_0x50f536[_0x3f2b('0xc')](_0x478ade)){_0x419eb9[_0x3f2b('0xd')]=0x2;_0x419eb9[_0x3f2b('0xe')]=[];_0x419eb9[_0x3f2b('0xf')]=_[_0x3f2b('0x10')](_0x37e5f4,{'exten':_0x50f536[_0x478ade][0x0]['exten']});_0x419eb9[_0x3f2b('0xe')][_0x3f2b('0x11')]({'type':_0x50f536[_0x478ade][0x0][_0x3f2b('0x12')],'app':'Set','appdata':util['format'](_0x3f2b('0x13'),_0x50f536[_0x478ade][0x0][_0x3f2b('0x12')]),'context':_0x50f536[_0x478ade][0x0][_0x3f2b('0x14')],'exten':_0x50f536[_0x478ade][0x0][_0x3f2b('0x15')],'priority':_0x419eb9['priority']++,'VoiceExtensionId':_0x50f536[_0x478ade][0x0]['VoiceExtensionId']});if(_0x50f536[_0x478ade][0x0]['type']==='inbound'){_0x419eb9[_0x3f2b('0xe')]['push']({'type':_0x50f536[_0x478ade][0x0][_0x3f2b('0x12')],'app':_0x3f2b('0x16'),'appdata':_0x3f2b('0x17')+_0x50f536[_0x478ade][0x0][_0x3f2b('0x18')],'context':_0x50f536[_0x478ade][0x0][_0x3f2b('0x14')],'exten':_0x50f536[_0x478ade][0x0][_0x3f2b('0x15')],'priority':_0x419eb9[_0x3f2b('0xd')]++,'VoiceExtensionId':_0x50f536[_0x478ade][0x0][_0x3f2b('0x18')]});}else if(_0x50f536[_0x478ade][0x0][_0x3f2b('0x12')]===_0x3f2b('0x19')){if(_0x419eb9[_0x3f2b('0xf')]){_0x419eb9[_0x3f2b('0xe')][_0x3f2b('0x11')]({'type':_0x50f536[_0x478ade][0x0][_0x3f2b('0x12')],'app':'Set','appdata':'CDR(destination)='+(_0x419eb9['extension']['cutdigits']?_0x3f2b('0x1a')+_0x419eb9[_0x3f2b('0xf')][_0x3f2b('0x1b')]+'}':'${EXTEN}'),'context':_0x50f536[_0x478ade][0x0][_0x3f2b('0x14')],'exten':_0x50f536[_0x478ade][0x0][_0x3f2b('0x15')],'priority':_0x419eb9['priority']++,'VoiceExtensionId':_0x50f536[_0x478ade][0x0]['VoiceExtensionId']});}_0x419eb9[_0x3f2b('0xe')][_0x3f2b('0x11')]({'type':_0x50f536[_0x478ade][0x0][_0x3f2b('0x12')],'app':_0x3f2b('0x16'),'appdata':'CDR(routeid)='+_0x50f536[_0x478ade][0x0]['VoiceExtensionId'],'context':_0x50f536[_0x478ade][0x0][_0x3f2b('0x14')],'exten':_0x50f536[_0x478ade][0x0][_0x3f2b('0x15')],'priority':_0x419eb9[_0x3f2b('0xd')]++,'VoiceExtensionId':_0x50f536[_0x478ade][0x0][_0x3f2b('0x18')]});var _0x42124e=_0x419eb9['priority']++;_0x419eb9[_0x3f2b('0xe')]['push']({'type':_0x50f536[_0x478ade][0x0]['type'],'app':_0x3f2b('0x1c'),'appdata':'$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto('+(_0x42124e+0x2)+_0x3f2b('0x1d')+(_0x42124e+0x1)+')','context':_0x50f536[_0x478ade][0x0][_0x3f2b('0x14')],'exten':_0x50f536[_0x478ade][0x0][_0x3f2b('0x15')],'priority':_0x42124e,'VoiceExtensionId':_0x50f536[_0x478ade][0x0]['VoiceExtensionId']});if(_0x419eb9[_0x3f2b('0xf')]){_0x419eb9['extensions']['push']({'type':_0x50f536[_0x478ade][0x0][_0x3f2b('0x12')],'app':'Set','appdata':_0x419eb9['extension']['cutdigits']?_0x3f2b('0x1e')+_0x419eb9['extension']['cutdigits']+'}':_0x3f2b('0x1f'),'context':_0x50f536[_0x478ade][0x0][_0x3f2b('0x14')],'exten':_0x50f536[_0x478ade][0x0]['exten'],'priority':_0x419eb9['priority']++,'VoiceExtensionId':_0x50f536[_0x478ade][0x0]['VoiceExtensionId']});}_0x419eb9[_0x3f2b('0xe')][_0x3f2b('0x11')]({'type':_0x50f536[_0x478ade][0x0][_0x3f2b('0x12')],'app':_0x3f2b('0x16'),'appdata':'outboundrouteid='+_0x50f536[_0x478ade][0x0][_0x3f2b('0x18')],'context':_0x50f536[_0x478ade][0x0][_0x3f2b('0x14')],'exten':_0x50f536[_0x478ade][0x0][_0x3f2b('0x15')],'priority':_0x419eb9[_0x3f2b('0xd')]++,'VoiceExtensionId':_0x50f536[_0x478ade][0x0]['VoiceExtensionId']});if(_0x419eb9[_0x3f2b('0xf')]&&_0x419eb9['extension'][_0x3f2b('0xc')](_0x3f2b('0x20'))&&_0x419eb9['extension'][_0x3f2b('0x20')]!==_0x3f2b('0x21')){_0x419eb9[_0x3f2b('0xe')][_0x3f2b('0x11')]({'type':_0x50f536[_0x478ade][0x0]['type'],'app':_0x3f2b('0x16'),'appdata':_0x3f2b('0x22'),'context':_0x50f536[_0x478ade][0x0][_0x3f2b('0x14')],'exten':_0x50f536[_0x478ade][0x0][_0x3f2b('0x15')],'priority':_0x419eb9[_0x3f2b('0xd')]++,'VoiceExtensionId':_0x50f536[_0x478ade][0x0]['VoiceExtensionId']});_0x419eb9['extensions']['push']({'type':_0x50f536[_0x478ade][0x0][_0x3f2b('0x12')],'app':_0x3f2b('0x16'),'appdata':_0x3f2b('0x23')+_0x419eb9[_0x3f2b('0xf')][_0x3f2b('0x20')]||'wav','context':_0x50f536[_0x478ade][0x0][_0x3f2b('0x14')],'exten':_0x50f536[_0x478ade][0x0][_0x3f2b('0x15')],'priority':_0x419eb9[_0x3f2b('0xd')]++,'VoiceExtensionId':_0x50f536[_0x478ade][0x0][_0x3f2b('0x18')]});}}_0x419eb9[_0x3f2b('0xe')][_0x3f2b('0x11')]({'type':_0x50f536[_0x478ade][0x0][_0x3f2b('0x12')],'app':_0x3f2b('0x16'),'appdata':'XCALLY-MOTION-ANSWER=0','context':_0x50f536[_0x478ade][0x0]['context'],'exten':_0x50f536[_0x478ade][0x0]['exten'],'priority':_0x419eb9['priority']++,'VoiceExtensionId':_0x50f536[_0x478ade][0x0]['VoiceExtensionId']});_0x419eb9['extensions']['push']({'type':_0x50f536[_0x478ade][0x0][_0x3f2b('0x12')],'app':'Set','appdata':_0x3f2b('0x24'),'context':_0x50f536[_0x478ade][0x0][_0x3f2b('0x14')],'exten':_0x50f536[_0x478ade][0x0][_0x3f2b('0x15')],'priority':_0x419eb9[_0x3f2b('0xd')]++,'VoiceExtensionId':_0x50f536[_0x478ade][0x0][_0x3f2b('0x18')]});_0x419eb9[_0x3f2b('0xe')][_0x3f2b('0x11')]({'type':_0x50f536[_0x478ade][0x0][_0x3f2b('0x12')],'app':'Set','appdata':_0x3f2b('0x25'),'context':_0x50f536[_0x478ade][0x0][_0x3f2b('0x14')],'exten':_0x50f536[_0x478ade][0x0][_0x3f2b('0x15')],'priority':_0x419eb9['priority']++,'VoiceExtensionId':_0x50f536[_0x478ade][0x0][_0x3f2b('0x18')]});for(var _0x349279=0x0,_0x3c610e=0x0;_0x349279<_0x50f536[_0x478ade][_0x3f2b('0x26')];_0x349279+=0x1,_0x3c610e=0x0){var _0x5d91c1=_0x50f536[_0x478ade][_0x349279];if(_0x5d91c1[_0x3f2b('0x12')]){_0x5d91c1[_0x3f2b('0x12')]=_0x5d91c1[_0x3f2b('0x12')][_0x3f2b('0x27')]();}var _0x542130=[];var _0x116702=[];delete _0x5d91c1['id'];delete _0x5d91c1[_0x3f2b('0x28')];delete _0x5d91c1[_0x3f2b('0x29')];var _0x34552e=_0x5d91c1[_0x3f2b('0x2a')]!=='*,*,*,*'?[_0x5d91c1[_0x3f2b('0x2a')]]:_0x5d91c1[_0x3f2b('0x6')]?_['map'](_[_0x3f2b('0x8')](_0x419eb9[_0x3f2b('0x3')],{'IntervalId':_0x5d91c1[_0x3f2b('0x6')]}),_0x3f2b('0x2a')):[];if(_0x5d91c1[_0x3f2b('0xc')](_0x3f2b('0x2b'))){if(_0x5d91c1['tag']&&_0x5d91c1[_0x3f2b('0x2b')]!=='--'){_0x542130['push']({'type':_0x5d91c1[_0x3f2b('0x12')],'app':_0x3f2b('0x16'),'appdata':'CDR(tag)='+_0x5d91c1['tag'],'context':_0x5d91c1[_0x3f2b('0x14')],'exten':_0x5d91c1[_0x3f2b('0x15')],'priority':_0x34552e['length']+_0x419eb9[_0x3f2b('0xd')]+_0x3c610e++,'VoiceExtensionId':_0x5d91c1[_0x3f2b('0x18')]});}}if(_0x5d91c1[_0x3f2b('0x12')]==='outbound'&&_0x5d91c1[_0x3f2b('0xc')](_0x3f2b('0x2c'))){if(_0x5d91c1[_0x3f2b('0x2c')]){_0x542130[_0x3f2b('0x11')]({'type':_0x5d91c1[_0x3f2b('0x12')],'app':_0x3f2b('0x1c'),'appdata':_0x3f2b('0x2d')+_0x5d91c1[_0x3f2b('0x2c')]+')','context':_0x5d91c1[_0x3f2b('0x14')],'exten':_0x5d91c1['exten'],'priority':_0x34552e[_0x3f2b('0x26')]+_0x419eb9['priority']+_0x3c610e++,'VoiceExtensionId':_0x5d91c1[_0x3f2b('0x18')]});}else{_0x542130[_0x3f2b('0x11')]({'type':_0x5d91c1[_0x3f2b('0x12')],'app':_0x3f2b('0x1c'),'appdata':_0x3f2b('0x2e'),'context':_0x5d91c1[_0x3f2b('0x14')],'exten':_0x5d91c1['exten'],'priority':_0x34552e[_0x3f2b('0x26')]+_0x419eb9[_0x3f2b('0xd')]+_0x3c610e++,'VoiceExtensionId':_0x5d91c1[_0x3f2b('0x18')]});}}if(_0x5d91c1[_0x3f2b('0xc')](_0x3f2b('0x2f'))){if(_0x39cd17[_0x3f2b('0x30')](_0x5d91c1[_0x3f2b('0x31')]['toLowerCase']())>=0x0&&_0x5d91c1[_0x3f2b('0x32')]!==_0x3f2b('0x33')){if(_0x5d91c1[_0x3f2b('0x2f')]){_0x542130[_0x3f2b('0x11')]({'type':_0x5d91c1['type'],'app':'ExecIf','appdata':_0x3f2b('0x34'),'context':_0x5d91c1[_0x3f2b('0x14')],'exten':_0x5d91c1[_0x3f2b('0x15')],'priority':_0x34552e[_0x3f2b('0x26')]+_0x419eb9[_0x3f2b('0xd')]+_0x3c610e++,'VoiceExtensionId':_0x5d91c1[_0x3f2b('0x18')]});_0x542130[_0x3f2b('0x11')]({'type':_0x5d91c1[_0x3f2b('0x12')],'app':'Set','appdata':_0x3f2b('0x35'),'context':_0x5d91c1[_0x3f2b('0x14')],'exten':_0x5d91c1[_0x3f2b('0x15')],'priority':_0x34552e[_0x3f2b('0x26')]+_0x419eb9[_0x3f2b('0xd')]+_0x3c610e++,'VoiceExtensionId':_0x5d91c1[_0x3f2b('0x18')]});}else{_0x542130[_0x3f2b('0x11')]({'type':_0x5d91c1['type'],'app':_0x3f2b('0x1c'),'appdata':_0x3f2b('0x36'),'context':_0x5d91c1[_0x3f2b('0x14')],'exten':_0x5d91c1['exten'],'priority':_0x34552e['length']+_0x419eb9[_0x3f2b('0xd')]+_0x3c610e++,'VoiceExtensionId':_0x5d91c1[_0x3f2b('0x18')]});_0x542130[_0x3f2b('0x11')]({'type':_0x5d91c1['type'],'app':'Set','appdata':_0x3f2b('0x37'),'context':_0x5d91c1[_0x3f2b('0x14')],'exten':_0x5d91c1['exten'],'priority':_0x34552e[_0x3f2b('0x26')]+_0x419eb9['priority']+_0x3c610e++,'VoiceExtensionId':_0x5d91c1[_0x3f2b('0x18')]});}}}for(var _0x1fd6fe=0x0;_0x1fd6fe<_0x34552e[_0x3f2b('0x26')];_0x1fd6fe+=0x1){var _0x24a3cc=_0x419eb9[_0x3f2b('0xd')]+_0x34552e[_0x3f2b('0x26')];var _0x5bf310=_0x1fd6fe===_0x34552e[_0x3f2b('0x26')]-0x1?_0x419eb9['priority']+_0x542130[_0x3f2b('0x26')]+_0x116702['length']+0x2:_0x419eb9[_0x3f2b('0xd')]+_0x1fd6fe+0x1;_0x542130[_0x3f2b('0x38')](_0x1fd6fe,0x0,{'type':_0x5d91c1[_0x3f2b('0x12')],'app':_0x3f2b('0x39'),'appdata':_0x34552e[_0x1fd6fe]+'?'+_0x5d91c1['context']+',${EXTEN},'+_0x24a3cc+':'+_0x5d91c1[_0x3f2b('0x14')]+_0x3f2b('0x3a')+_0x5bf310,'exten':_0x5d91c1['exten'],'context':_0x5d91c1['context'],'priority':_0x419eb9[_0x3f2b('0xd')]+_0x1fd6fe,'VoiceExtensionId':_0x50f536[_0x478ade][0x0][_0x3f2b('0x18')]});}_0x5d91c1[_0x3f2b('0xd')]=_0x542130[_0x3f2b('0x26')]?_[_0x3f2b('0x3b')](_0x542130)[_0x3f2b('0xd')]+0x1:_0x419eb9[_0x3f2b('0xd')];_0x419eb9[_0x3f2b('0xd')]=(_0x116702[_0x3f2b('0x26')]?_['last'](_0x116702)[_0x3f2b('0xd')]:_0x5d91c1[_0x3f2b('0xd')])+0x1;_0x419eb9[_0x3f2b('0xe')]=_[_0x3f2b('0x3c')](_0x419eb9['extensions'],_0x542130,[_0x5d91c1],_0x116702);}_0x419eb9[_0x3f2b('0xe')][_0x3f2b('0x11')]({'type':_0x50f536[_0x478ade][0x0][_0x3f2b('0x12')],'app':_0x3f2b('0x3d'),'exten':_0x50f536[_0x478ade][0x0][_0x3f2b('0x15')],'context':_0x50f536[_0x478ade][0x0][_0x3f2b('0x14')],'priority':_0x419eb9[_0x3f2b('0xd')],'VoiceExtensionId':_0x50f536[_0x478ade][0x0][_0x3f2b('0x18')]});_0x18ac1b['push'](_0x50f536[_0x478ade][0x0]['VoiceExtensionId']);_0x467cc3=_['concat'](_0x467cc3,_0x419eb9[_0x3f2b('0xe')]);}}return _0x4d1875[_0x3f2b('0x3e')](function(_0x2b5d7e){return _0x4d1875[_0x3f2b('0x4')]['VoiceExtension']['destroy']({'where':{'VoiceExtensionId':{'$in':_0x18ac1b}},'transaction':_0x2b5d7e})[_0x3f2b('0x7')](function(_0x1f7f73){return _0x4d1875[_0x3f2b('0x4')][_0x3f2b('0x5')]['bulkCreate'](_['sortBy'](_0x467cc3,_0x3f2b('0xd')),{'transaction':_0x2b5d7e});});});})[_0x3f2b('0x3f')](function(_0x7c5cb0){console[_0x3f2b('0x40')](_0x7c5cb0);});}exports['rewrite']=rewrite;
\ No newline at end of file
index 914096a..09772ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0810=['cm_hopper_black','VoiceQueue','findAll','outbound','get','dialCheckDuplicateType','sequelize','query','VoiceQueueId','onlyIfOpen','all','CmList','BlackLists','Campaign','Lists','always','CampaignId','cmContact,\x20%s,\x20%s','generalCheckHopper','Error\x20processing\x20rows\x20block:','finally','emit','contact:csv_','resolve','unlinkSync','SIGINT','info','createReadStream','parse','pause','CSV\x20parsed\x20correctly!','CSV\x20parse\x20error','bluebird','util','lodash','squel','../../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','argv','undefined','Missing\x20filepath\x20parameter!','null','Missing\x20binding\x20parameters!','zipObject','split','Missing\x20socket_timestamp\x20parameter!','index','test','isNil','error','The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!','map','errors','message','join','hasOwnProperty','data','firstName','phone','phone\x20not\x20specified!','YYYY-MM-DD','isValid','birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!','email','email\x20format\x20is\x20not\x20valid!','ListId','length','find','duplicate','Duplicate\x20Contact','create','keys','then','push','pick','catch','Error\x20while\x20creating\x20contact:\x20','stringify','cmContact','checkHopper','inspect','insert','into','scheduledAt','ContactId','createdAt','updatedAt','select','field','NOW()','toString','cm_contacts','deletedAt\x20IS\x20NULL','where','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','from','cm_hopper','\x20=\x20?','fromQuery','id\x20IN\x20?','str','calleridnum','cm_hopper_final'];(function(_0x3ad4f1,_0x4135b1){var _0xa4be3=function(_0x262629){while(--_0x262629){_0x3ad4f1['push'](_0x3ad4f1['shift']());}};_0xa4be3(++_0x4135b1);}(_0x0810,0xfa));var _0x0081=function(_0x1daacc,_0x4a7eb1){_0x1daacc=_0x1daacc-0x0;var _0x4c6dad=_0x0810[_0x1daacc];return _0x4c6dad;};'use strict';var BPromise=require(_0x0081('0x0'));var util=require(_0x0081('0x1'));var _=require(_0x0081('0x2'));var fs=require('fs');var squel=require(_0x0081('0x3'));var Papa=require('papaparse');var Redis=require('ioredis');var db=require(_0x0081('0x4'))['db'];var config=require('../../../config/environment');var logger=require('../../../config/logger')('api');config[_0x0081('0x5')]=_[_0x0081('0x6')](config['redis'],{'host':_0x0081('0x7'),'port':0x18eb});var socket=require(_0x0081('0x8'))(new Redis(config[_0x0081('0x5')]));require('../../../api/cmContact/cmContact.socket')[_0x0081('0x9')](socket);try{if(!process[_0x0081('0xa')][0x2]||process['argv'][0x2]===_0x0081('0xb')||process[_0x0081('0xa')][0x2]==='null'){throw new Error(_0x0081('0xc'));}var FILEPATH=process['argv'][0x2];if(!process['argv'][0x3]||process['argv'][0x3]===_0x0081('0xb')||process[_0x0081('0xa')][0x3]==='null'||!process[_0x0081('0xa')][0x4]||process[_0x0081('0xa')][0x4]===_0x0081('0xb')||process[_0x0081('0xa')][0x4]===_0x0081('0xd')){throw new Error(_0x0081('0xe'));}var FIELDS=_[_0x0081('0xf')](process[_0x0081('0xa')][0x3][_0x0081('0x10')](','),process[_0x0081('0xa')][0x4]['split'](','));if(!process[_0x0081('0xa')][0x5]||process[_0x0081('0xa')][0x5]===_0x0081('0xb')||process['argv'][0x5]==='null'){throw new Error('Missing\x20ListId\x20parameter!');}var LISTID=process['argv'][0x5];var COMPANYID=process[_0x0081('0xa')][0x6]&&process['argv'][0x6]!==_0x0081('0xb')&&process[_0x0081('0xa')][0x6]!==_0x0081('0xd')?process[_0x0081('0xa')][0x6]:null;var DUPLICATES=process[_0x0081('0xa')][0x7]&&process[_0x0081('0xa')][0x7]!==_0x0081('0xb')&&process[_0x0081('0xa')][0x7]!=='null'?process['argv'][0x7]:null;if(!process['argv'][0x8]||process[_0x0081('0xa')][0x8]==='undefined'||process['argv'][0x8]===_0x0081('0xd')){throw new Error(_0x0081('0x11'));}var SOCKET_TIMESTAMP=process[_0x0081('0xa')][0x8];}catch(_0x3e517a){logger['error'](_0x3e517a);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(_0x4a9109,_0x245f25,_0x16a9c3,_0x42cb82){var _0x5cf0eb={'message':_0x245f25};_0x5cf0eb[_0x4a9109]=!![];if(_0x16a9c3){_0x5cf0eb['contact']=_0x16a9c3;}if(_0x42cb82){_0x5cf0eb[_0x0081('0x12')]=_0x42cb82;}return _0x5cf0eb;}function isEmail(_0x32577d){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))*$/[_0x0081('0x13')](_0x32577d);}function checkRow(_0x2dbada,_0x25f0c3,_0x48ed7d){return new BPromise(function(_0x187ab7,_0x31c39e){if(_[_0x0081('0x14')](_0x2dbada)){return _0x31c39e(handleCheckRowError(_0x0081('0x15'),_0x0081('0x16'),null,_0x48ed7d));}if(_0x2dbada['errors']&&_0x2dbada['errors']['length']){var _0xbeb84c=_[_0x0081('0x17')](_0x2dbada[_0x0081('0x18')],_0x0081('0x19'))[_0x0081('0x1a')](';');return _0x31c39e(handleCheckRowError(_0x0081('0x15'),_0xbeb84c,null,_0x48ed7d));}var _0x4e5531={};for(var _0x48a948 in FIELDS){if(FIELDS[_0x0081('0x1b')](_0x48a948)&&FIELDS[_0x48a948]){_0x4e5531[_0x48a948]=_0x2dbada[_0x0081('0x1c')][0x0][FIELDS[_0x48a948]]||_0x2dbada['data'][0x0]['\ufeff'+FIELDS[_0x48a948]];}}if(!_0x4e5531[_0x0081('0x1d')]){return _0x31c39e(handleCheckRowError(_0x0081('0x15'),'firstName\x20not\x20specified!',null,_0x48ed7d));}if(!_0x4e5531[_0x0081('0x1e')]){return _0x31c39e(handleCheckRowError(_0x0081('0x15'),_0x0081('0x1f'),null,_0x48ed7d));}if(_0x4e5531['birthDate']){var _0x460600=moment(_0x4e5531['birthDate'],_0x0081('0x20'));if(!_0x460600[_0x0081('0x21')]()){return _0x31c39e(handleCheckRowError(_0x0081('0x15'),_0x0081('0x22'),null,_0x48ed7d));}}if(_0x4e5531[_0x0081('0x23')]){if(!isEmail(_0x4e5531[_0x0081('0x23')])){return _0x31c39e(handleCheckRowError(_0x0081('0x15'),_0x0081('0x24'),null,_0x48ed7d));}}_0x4e5531[_0x0081('0x25')]=LISTID;_0x4e5531['CompanyId']=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES[_0x0081('0x26')]&&_0x25f0c3){var _0x898518={};for(var _0x16d221=0x0,_0x37be55=DUPLICATES[_0x0081('0x26')];_0x16d221<_0x37be55;_0x16d221+=0x1){_0x898518[DUPLICATES[_0x16d221]]=_0x4e5531[DUPLICATES[_0x16d221]];}var _0x30d2e1=_[_0x0081('0x27')](_0x25f0c3,_0x898518);if(_0x30d2e1){return _0x31c39e(handleCheckRowError(_0x0081('0x28'),_0x0081('0x29'),_0x30d2e1,_0x48ed7d));}}return db['CmContact'][_0x0081('0x2a')](_0x4e5531,{'raw':!![],'hooks':![],'fields':_[_0x0081('0x2b')](_0x4e5531)})[_0x0081('0x2c')](function(_0x37fbda){if(DUPLICATES&&DUPLICATES[_0x0081('0x26')]&&_0x25f0c3){_0x25f0c3[_0x0081('0x2d')](_[_0x0081('0x2e')](_0x4e5531,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x37fbda['id'];return _0x187ab7();})[_0x0081('0x2f')](function(_0x1bdb27){return _0x31c39e(handleCheckRowError(_0x0081('0x15'),_0x0081('0x30')+(_0x1bdb27[_0x0081('0x19')]||JSON[_0x0081('0x31')](_0x1bdb27)),null,_0x48ed7d));});});}function checkHopper(){function _0x4a22d9(){return function(_0x156cd8){logger[_0x0081('0x15')](_0x0081('0x32'),_0x0081('0x33'),util[_0x0081('0x34')](_0x156cd8,{'showHidden':![],'depth':null}));};}var _0x4d359c=function(_0x1942de,_0x1ace87){var _0x44b8be=squel[_0x0081('0x35')]()[_0x0081('0x36')]('cm_hopper')['fromQuery']([_0x0081('0x1e'),_0x0081('0x37'),_0x0081('0x38'),'ListId',_0x1ace87,_0x0081('0x39'),_0x0081('0x3a')],squel[_0x0081('0x3b')]()[_0x0081('0x3c')]('phone',_0x0081('0x1e'))[_0x0081('0x3c')](_0x0081('0x3d'),_0x0081('0x37'))[_0x0081('0x3c')]('id',_0x0081('0x38'))[_0x0081('0x3c')](LISTID['toString'](),_0x0081('0x25'))[_0x0081('0x3c')](_0x1942de['id'][_0x0081('0x3e')](),_0x1ace87)[_0x0081('0x3c')](_0x0081('0x3d'),'createdAt')[_0x0081('0x3c')]('NOW()','updatedAt')['from'](_0x0081('0x3f'))['where'](_0x0081('0x40'))[_0x0081('0x41')](_0x0081('0x42'),LISTID['toString']())[_0x0081('0x41')](_0x0081('0x43'))[_0x0081('0x41')](_0x0081('0x44'),squel[_0x0081('0x3b')]()[_0x0081('0x3c')](_0x0081('0x1e'))[_0x0081('0x45')](_0x0081('0x46'))['where'](_0x1ace87+_0x0081('0x47'),_0x1942de['id'][_0x0081('0x3e')]())))[_0x0081('0x3e')]();return _0x44b8be;};var _0x1565f1=function(_0x48eeff,_0x50befa){var _0x5a8203=squel[_0x0081('0x35')]()[_0x0081('0x36')](_0x0081('0x46'))[_0x0081('0x48')]([_0x0081('0x1e'),'scheduledAt',_0x0081('0x38'),_0x0081('0x25'),_0x50befa,_0x0081('0x39'),_0x0081('0x3a')],squel[_0x0081('0x3b')]()[_0x0081('0x3c')](_0x0081('0x1e'),_0x0081('0x1e'))['field'](_0x0081('0x3d'),_0x0081('0x37'))['field']('id',_0x0081('0x38'))['field'](LISTID[_0x0081('0x3e')](),'ListId')[_0x0081('0x3c')](_0x48eeff['id'][_0x0081('0x3e')](),_0x50befa)[_0x0081('0x3c')]('NOW()',_0x0081('0x39'))[_0x0081('0x3c')]('NOW()',_0x0081('0x3a'))[_0x0081('0x45')](_0x0081('0x3f'))[_0x0081('0x41')](_0x0081('0x40'))[_0x0081('0x41')](_0x0081('0x42'),LISTID[_0x0081('0x3e')]())[_0x0081('0x41')](_0x0081('0x49'),squel[_0x0081('0x4a')](hopperContacts))[_0x0081('0x41')](_0x0081('0x43'))[_0x0081('0x41')](_0x0081('0x44'),squel[_0x0081('0x3b')]()[_0x0081('0x3c')](_0x0081('0x4b'))['from'](_0x0081('0x4c'))[_0x0081('0x41')](_0x50befa+_0x0081('0x47'),_0x48eeff['id'][_0x0081('0x3e')]()))[_0x0081('0x41')]('phone\x20NOT\x20IN\x20(?)',squel[_0x0081('0x3b')]()[_0x0081('0x3c')](_0x0081('0x1e'))[_0x0081('0x45')]('cm_hopper')[_0x0081('0x41')](_0x50befa+_0x0081('0x47'),_0x48eeff['id'][_0x0081('0x3e')]())))[_0x0081('0x3e')]();return _0x5a8203;};function _0x516ae0(_0x2323a7,_0x4b0be2){var _0x2b1765=squel['insert']()['into'](_0x0081('0x46'))[_0x0081('0x48')]([_0x0081('0x1e'),_0x0081('0x37'),_0x0081('0x38'),'ListId',_0x4b0be2,_0x0081('0x39'),_0x0081('0x3a')],squel['select']()[_0x0081('0x3c')](_0x0081('0x1e'),'phone')['field'](_0x0081('0x3d'),_0x0081('0x37'))['field']('id',_0x0081('0x38'))[_0x0081('0x3c')](LISTID[_0x0081('0x3e')](),'ListId')['field'](_0x2323a7['id'][_0x0081('0x3e')](),_0x4b0be2)[_0x0081('0x3c')]('NOW()','createdAt')[_0x0081('0x3c')](_0x0081('0x3d'),_0x0081('0x3a'))[_0x0081('0x45')](_0x0081('0x3f'))[_0x0081('0x41')](_0x0081('0x40'))[_0x0081('0x41')]('ListId\x20=\x20?',LISTID[_0x0081('0x3e')]())[_0x0081('0x41')](_0x0081('0x49'),squel[_0x0081('0x4a')](hopperContacts))[_0x0081('0x41')](_0x0081('0x43')))[_0x0081('0x3e')]();return _0x2b1765;}function _0x20e3e2(_0x5ca391,_0x29f0f0){var _0x10bdfc=squel[_0x0081('0x35')]()[_0x0081('0x36')](_0x0081('0x4d'))[_0x0081('0x48')]([_0x0081('0x1e'),_0x0081('0x38'),'ListId',_0x29f0f0,'createdAt','updatedAt'],squel['select']()[_0x0081('0x3c')](_0x0081('0x1e'),_0x0081('0x1e'))[_0x0081('0x3c')]('id',_0x0081('0x38'))[_0x0081('0x3c')](LISTID[_0x0081('0x3e')](),'ListId')['field'](_0x5ca391['id'][_0x0081('0x3e')](),_0x29f0f0)[_0x0081('0x3c')](_0x0081('0x3d'),_0x0081('0x39'))[_0x0081('0x3c')](_0x0081('0x3d'),'updatedAt')[_0x0081('0x45')](_0x0081('0x3f'))[_0x0081('0x41')](_0x0081('0x40'))[_0x0081('0x41')](_0x0081('0x42'),LISTID['toString']())[_0x0081('0x41')](_0x0081('0x49'),squel[_0x0081('0x4a')](hopperContacts))[_0x0081('0x41')]('phone\x20IS\x20NOT\x20NULL'))[_0x0081('0x3e')]();return _0x10bdfc;}return db[_0x0081('0x4e')][_0x0081('0x4f')]({'where':{'type':_0x0081('0x50')},'attributes':['id','dialCheckDuplicateType'],'include':[{'model':db['CmList'],'as':'Lists','where':{'id':LISTID}}]})[_0x0081('0x2c')](function(_0xd4652a){var _0x52e1f3=[];if(_0xd4652a){var _0x7a2e9;for(var _0x58b13b=0x0,_0x4d7133;_0x58b13b<_0xd4652a['length'];_0x58b13b+=0x1){_0x4d7133=_0xd4652a[_0x58b13b][_0x0081('0x51')]({'plain':!![]});switch(_0x4d7133[_0x0081('0x52')]){case'always':_0x52e1f3[_0x0081('0x2d')](db[_0x0081('0x53')][_0x0081('0x54')](_0x1565f1(_0x4d7133,_0x0081('0x55')))['then'](function(){})[_0x0081('0x2f')](_0x4a22d9()));break;case _0x0081('0x56'):_0x52e1f3['push'](db['sequelize'][_0x0081('0x54')](_0x4d359c(_0x4d7133,_0x0081('0x55')))[_0x0081('0x2c')](function(){})[_0x0081('0x2f')](_0x4a22d9()));break;default:_0x52e1f3[_0x0081('0x2d')](db[_0x0081('0x53')][_0x0081('0x54')](_0x516ae0(_0x4d7133,'VoiceQueueId'))[_0x0081('0x2c')](function(){})[_0x0081('0x2f')](_0x4a22d9()));}}}return _0x52e1f3;})[_0x0081('0x57')]()[_0x0081('0x2c')](function(){return db[_0x0081('0x4e')][_0x0081('0x4f')]({'where':{'type':_0x0081('0x50')},'attributes':['id'],'include':[{'model':db[_0x0081('0x58')],'as':_0x0081('0x59'),'where':{'id':LISTID}}]})[_0x0081('0x2c')](function(_0x10e35f){var _0x43da1d=[];if(_0x10e35f){var _0x40399b;for(var _0x2bc690=0x0,_0x2dd510;_0x2bc690<_0x10e35f[_0x0081('0x26')];_0x2bc690+=0x1){_0x2dd510=_0x10e35f[_0x2bc690][_0x0081('0x51')]({'plain':!![]});_0x43da1d[_0x0081('0x2d')](db[_0x0081('0x53')]['query'](_0x20e3e2(_0x2dd510,_0x0081('0x55')))[_0x0081('0x2c')](function(){})['catch'](_0x4a22d9()));}}return _0x43da1d;})['all']();})[_0x0081('0x2c')](function(){return db[_0x0081('0x5a')][_0x0081('0x4f')]({'attributes':['id',_0x0081('0x52')],'include':[{'model':db['CmList'],'as':_0x0081('0x5b'),'where':{'id':LISTID}}]})[_0x0081('0x2c')](function(_0x70e0ad){var _0x3e3fe1=[];if(_0x70e0ad){for(var _0x5c6d20=0x0,_0x31ff9b;_0x5c6d20<_0x70e0ad[_0x0081('0x26')];_0x5c6d20+=0x1){_0x31ff9b=_0x70e0ad[_0x5c6d20][_0x0081('0x51')]({'plain':!![]});switch(_0x31ff9b['dialCheckDuplicateType']){case _0x0081('0x5c'):_0x3e3fe1[_0x0081('0x2d')](db[_0x0081('0x53')][_0x0081('0x54')](_0x1565f1(_0x31ff9b,_0x0081('0x5d')))[_0x0081('0x2c')](function(){})[_0x0081('0x2f')](_0x4a22d9()));break;case _0x0081('0x56'):_0x3e3fe1[_0x0081('0x2d')](db['sequelize'][_0x0081('0x54')](_0x4d359c(_0x31ff9b,_0x0081('0x5d')))['then'](function(){})[_0x0081('0x2f')](_0x4a22d9()));break;default:_0x3e3fe1[_0x0081('0x2d')](db['sequelize'][_0x0081('0x54')](_0x516ae0(_0x31ff9b,_0x0081('0x5d')))[_0x0081('0x2c')](function(){})[_0x0081('0x2f')](_0x4a22d9()));}}}return _0x3e3fe1;})['all']();})['then'](function(){return db[_0x0081('0x5a')][_0x0081('0x4f')]({'attributes':['id'],'include':[{'model':db[_0x0081('0x58')],'as':_0x0081('0x59'),'where':{'id':LISTID}}]})['then'](function(_0x5e0e51){var _0x1ec801=[];if(_0x5e0e51){for(var _0x1acd7e=0x0,_0x2403c7;_0x1acd7e<_0x5e0e51[_0x0081('0x26')];_0x1acd7e+=0x1){_0x2403c7=_0x5e0e51[_0x1acd7e][_0x0081('0x51')]({'plain':!![]});_0x1ec801[_0x0081('0x2d')](db[_0x0081('0x53')][_0x0081('0x54')](_0x20e3e2(_0x2403c7,_0x0081('0x5d')))[_0x0081('0x2c')](function(){})[_0x0081('0x2f')](_0x4a22d9()));}}return _0x1ec801;})['all']();})['catch'](function(_0x5518e0){logger['error'](_0x0081('0x5e'),_0x0081('0x5f'),_0x5518e0[_0x0081('0x19')]);});}var processPromises=function(_0x195e6b){return BPromise[_0x0081('0x57')](promises)[_0x0081('0x2c')](function(_0x51ed5){})[_0x0081('0x2f')](function(_0xff357e){logger[_0x0081('0x15')](_0x0081('0x60'),JSON[_0x0081('0x31')](_0xff357e));})[_0x0081('0x61')](function(){socket[_0x0081('0x62')](_0x0081('0x63')+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x195e6b){return _0x195e6b['resume']();}});};var endCsv=function(){return BPromise[_0x0081('0x64')]()[_0x0081('0x2c')](function(){if(hopperContacts){return checkHopper();}})['then'](function(){socket[_0x0081('0x62')]('contact:csv_'+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs[_0x0081('0x65')](FILEPATH);}catch(_0x44e1b0){logger[_0x0081('0x15')]('Unable\x20to\x20delete\x20temp\x20file:',JSON['stringify'](_0x44e1b0));}finally{process['exit'](0x0);}});};process['on'](_0x0081('0x66'),function(){logger[_0x0081('0x67')]('CSV\x20import\x20process\x20stopped!');endCsv();});function main(){return BPromise['resolve']()['then'](function(){if(DUPLICATES){DUPLICATES=DUPLICATES[_0x0081('0x10')](',');return db['CmContact'][_0x0081('0x4f')]({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})[_0x0081('0x2c')](function(_0x17ea98){var _0x25d52a=fs[_0x0081('0x68')](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa[_0x0081('0x69')](_0x25d52a,{'header':!![],'skipEmptyLines':!![],'step':function(_0x555f3d,_0x40b0a5){total+=0x1;var _0x12a6f3=total;promises[_0x0081('0x2d')](checkRow(_0x555f3d,_0x17ea98,_0x12a6f3)[_0x0081('0x2c')](function(){success+=0x1;})[_0x0081('0x2f')](function(_0x155448){if(_0x155448[_0x0081('0x15')]){errors+=0x1;delete _0x155448[_0x0081('0x15')];}else if(_0x155448[_0x0081('0x28')]){duplicates+=0x1;delete _0x155448[_0x0081('0x28')];}rows['push'](_0x155448);}));if(total%0xc8===0x0){_0x40b0a5[_0x0081('0x6a')]();return processPromises(_0x40b0a5);}},'complete':function(){return processPromises()['then'](function(){logger[_0x0081('0x67')](_0x0081('0x6b'));endCsv();});},'error':function(_0x208a0a,_0x4bbba5){logger[_0x0081('0x67')](_0x0081('0x6c'),JSON[_0x0081('0x31')](_0x208a0a));endCsv();}});})[_0x0081('0x2f')](function(_0x34ed15){logger[_0x0081('0x15')]('Error\x20executing\x20contact\x20csv\x20import:',JSON[_0x0081('0x31')](_0x34ed15));});}main();
\ No newline at end of file
+var _0x8ebc=['push','catch','stringify','cmContact','cm_hopper','fromQuery','phone','scheduledAt','ContactId','createdAt','updatedAt','select','field','NOW()','toString','from','where','deletedAt\x20IS\x20NULL','phone\x20IS\x20NOT\x20NULL','insert','into','cm_contacts','id\x20IN\x20?','phone\x20NOT\x20IN\x20(?)','cm_hopper_final','\x20=\x20?','ListId\x20=\x20?','str','VoiceQueue','outbound','CmList','Lists','then','get','dialCheckDuplicateType','query','VoiceQueueId','onlyIfOpen','sequelize','BlackLists','Campaign','findAll','CampaignId','all','cmContact,\x20%s,\x20%s','finally','emit','contact:csv_','resume','resolve','Unable\x20to\x20delete\x20temp\x20file:','exit','info','CSV\x20import\x20process\x20stopped!','createReadStream','parse','pause','CSV\x20parsed\x20correctly!','CSV\x20parse\x20error','Error\x20executing\x20contact\x20csv\x20import:','bluebird','util','lodash','squel','../../../mysqldb','../../../config/logger','api','redis','defaults','localhost','socket.io-emitter','../../../api/cmContact/cmContact.socket','register','argv','undefined','null','Missing\x20filepath\x20parameter!','Missing\x20binding\x20parameters!','zipObject','split','Missing\x20ListId\x20parameter!','Missing\x20socket_timestamp\x20parameter!','contact','index','test','isNil','error','errors','length','map','message','join','hasOwnProperty','data','firstName','firstName\x20not\x20specified!','phone\x20not\x20specified!','birthDate','isValid','email\x20format\x20is\x20not\x20valid!','ListId','find','duplicate','Duplicate\x20Contact','create','keys'];(function(_0x350213,_0x5d71f8){var _0x3fcae2=function(_0x141c8e){while(--_0x141c8e){_0x350213['push'](_0x350213['shift']());}};_0x3fcae2(++_0x5d71f8);}(_0x8ebc,0x110));var _0xc8eb=function(_0x4e175a,_0x2bae34){_0x4e175a=_0x4e175a-0x0;var _0x2ff2c4=_0x8ebc[_0x4e175a];return _0x2ff2c4;};'use strict';var BPromise=require(_0xc8eb('0x0'));var util=require(_0xc8eb('0x1'));var _=require(_0xc8eb('0x2'));var fs=require('fs');var squel=require(_0xc8eb('0x3'));var Papa=require('papaparse');var Redis=require('ioredis');var db=require(_0xc8eb('0x4'))['db'];var config=require('../../../config/environment');var logger=require(_0xc8eb('0x5'))(_0xc8eb('0x6'));config[_0xc8eb('0x7')]=_[_0xc8eb('0x8')](config['redis'],{'host':_0xc8eb('0x9'),'port':0x18eb});var socket=require(_0xc8eb('0xa'))(new Redis(config[_0xc8eb('0x7')]));require(_0xc8eb('0xb'))[_0xc8eb('0xc')](socket);try{if(!process[_0xc8eb('0xd')][0x2]||process[_0xc8eb('0xd')][0x2]===_0xc8eb('0xe')||process['argv'][0x2]===_0xc8eb('0xf')){throw new Error(_0xc8eb('0x10'));}var FILEPATH=process['argv'][0x2];if(!process[_0xc8eb('0xd')][0x3]||process[_0xc8eb('0xd')][0x3]===_0xc8eb('0xe')||process[_0xc8eb('0xd')][0x3]===_0xc8eb('0xf')||!process[_0xc8eb('0xd')][0x4]||process['argv'][0x4]===_0xc8eb('0xe')||process[_0xc8eb('0xd')][0x4]===_0xc8eb('0xf')){throw new Error(_0xc8eb('0x11'));}var FIELDS=_[_0xc8eb('0x12')](process[_0xc8eb('0xd')][0x3][_0xc8eb('0x13')](','),process[_0xc8eb('0xd')][0x4][_0xc8eb('0x13')](','));if(!process['argv'][0x5]||process[_0xc8eb('0xd')][0x5]===_0xc8eb('0xe')||process[_0xc8eb('0xd')][0x5]==='null'){throw new Error(_0xc8eb('0x14'));}var LISTID=process['argv'][0x5];var COMPANYID=process[_0xc8eb('0xd')][0x6]&&process[_0xc8eb('0xd')][0x6]!==_0xc8eb('0xe')&&process['argv'][0x6]!==_0xc8eb('0xf')?process[_0xc8eb('0xd')][0x6]:null;var DUPLICATES=process[_0xc8eb('0xd')][0x7]&&process['argv'][0x7]!==_0xc8eb('0xe')&&process[_0xc8eb('0xd')][0x7]!==_0xc8eb('0xf')?process[_0xc8eb('0xd')][0x7]:null;if(!process[_0xc8eb('0xd')][0x8]||process[_0xc8eb('0xd')][0x8]===_0xc8eb('0xe')||process[_0xc8eb('0xd')][0x8]==='null'){throw new Error(_0xc8eb('0x15'));}var SOCKET_TIMESTAMP=process[_0xc8eb('0xd')][0x8];}catch(_0x4490b0){logger['error'](_0x4490b0);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(_0x5c61f8,_0x16fcd2,_0x33339e,_0x31676f){var _0x273aca={'message':_0x16fcd2};_0x273aca[_0x5c61f8]=!![];if(_0x33339e){_0x273aca[_0xc8eb('0x16')]=_0x33339e;}if(_0x31676f){_0x273aca[_0xc8eb('0x17')]=_0x31676f;}return _0x273aca;}function isEmail(_0x49c305){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))*$/[_0xc8eb('0x18')](_0x49c305);}function checkRow(_0x30befc,_0x185f17,_0x239efd){return new BPromise(function(_0x1cfb7f,_0x580b40){if(_[_0xc8eb('0x19')](_0x30befc)){return _0x580b40(handleCheckRowError(_0xc8eb('0x1a'),'The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!',null,_0x239efd));}if(_0x30befc['errors']&&_0x30befc[_0xc8eb('0x1b')][_0xc8eb('0x1c')]){var _0x36624d=_[_0xc8eb('0x1d')](_0x30befc[_0xc8eb('0x1b')],_0xc8eb('0x1e'))[_0xc8eb('0x1f')](';');return _0x580b40(handleCheckRowError('error',_0x36624d,null,_0x239efd));}var _0x19b3b6={};for(var _0x4386c8 in FIELDS){if(FIELDS[_0xc8eb('0x20')](_0x4386c8)&&FIELDS[_0x4386c8]){_0x19b3b6[_0x4386c8]=_0x30befc[_0xc8eb('0x21')][0x0][FIELDS[_0x4386c8]]||_0x30befc[_0xc8eb('0x21')][0x0]['\ufeff'+FIELDS[_0x4386c8]];}}if(!_0x19b3b6[_0xc8eb('0x22')]){return _0x580b40(handleCheckRowError(_0xc8eb('0x1a'),_0xc8eb('0x23'),null,_0x239efd));}if(!_0x19b3b6['phone']){return _0x580b40(handleCheckRowError(_0xc8eb('0x1a'),_0xc8eb('0x24'),null,_0x239efd));}if(_0x19b3b6[_0xc8eb('0x25')]){var _0x5ddf3d=moment(_0x19b3b6[_0xc8eb('0x25')],'YYYY-MM-DD');if(!_0x5ddf3d[_0xc8eb('0x26')]()){return _0x580b40(handleCheckRowError('error','birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!',null,_0x239efd));}}if(_0x19b3b6['email']){if(!isEmail(_0x19b3b6['email'])){return _0x580b40(handleCheckRowError(_0xc8eb('0x1a'),_0xc8eb('0x27'),null,_0x239efd));}}_0x19b3b6[_0xc8eb('0x28')]=LISTID;_0x19b3b6['CompanyId']=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES[_0xc8eb('0x1c')]&&_0x185f17){var _0xdd4afd={};for(var _0x337ea1=0x0,_0x491169=DUPLICATES['length'];_0x337ea1<_0x491169;_0x337ea1+=0x1){_0xdd4afd[DUPLICATES[_0x337ea1]]=_0x19b3b6[DUPLICATES[_0x337ea1]];}var _0x47c7a1=_[_0xc8eb('0x29')](_0x185f17,_0xdd4afd);if(_0x47c7a1){return _0x580b40(handleCheckRowError(_0xc8eb('0x2a'),_0xc8eb('0x2b'),_0x47c7a1,_0x239efd));}}return db['CmContact'][_0xc8eb('0x2c')](_0x19b3b6,{'raw':!![],'hooks':![],'fields':_[_0xc8eb('0x2d')](_0x19b3b6)})['then'](function(_0x3eacb8){if(DUPLICATES&&DUPLICATES['length']&&_0x185f17){_0x185f17[_0xc8eb('0x2e')](_['pick'](_0x19b3b6,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x3eacb8['id'];return _0x1cfb7f();})[_0xc8eb('0x2f')](function(_0x48ad83){return _0x580b40(handleCheckRowError(_0xc8eb('0x1a'),'Error\x20while\x20creating\x20contact:\x20'+(_0x48ad83[_0xc8eb('0x1e')]||JSON[_0xc8eb('0x30')](_0x48ad83)),null,_0x239efd));});});}function checkHopper(){function _0x5edb2a(){return function(_0x52ac18){logger[_0xc8eb('0x1a')](_0xc8eb('0x31'),'checkHopper',util['inspect'](_0x52ac18,{'showHidden':![],'depth':null}));};}var _0x264899=function(_0x16ce3b,_0x30875d){var _0x3e5d8c=squel['insert']()['into'](_0xc8eb('0x32'))[_0xc8eb('0x33')]([_0xc8eb('0x34'),_0xc8eb('0x35'),_0xc8eb('0x36'),'ListId',_0x30875d,_0xc8eb('0x37'),_0xc8eb('0x38')],squel[_0xc8eb('0x39')]()[_0xc8eb('0x3a')](_0xc8eb('0x34'),_0xc8eb('0x34'))[_0xc8eb('0x3a')](_0xc8eb('0x3b'),_0xc8eb('0x35'))[_0xc8eb('0x3a')]('id',_0xc8eb('0x36'))[_0xc8eb('0x3a')](LISTID[_0xc8eb('0x3c')](),'ListId')['field'](_0x16ce3b['id'][_0xc8eb('0x3c')](),_0x30875d)[_0xc8eb('0x3a')](_0xc8eb('0x3b'),'createdAt')['field']('NOW()','updatedAt')[_0xc8eb('0x3d')]('cm_contacts')[_0xc8eb('0x3e')](_0xc8eb('0x3f'))['where']('ListId\x20=\x20?',LISTID[_0xc8eb('0x3c')]())[_0xc8eb('0x3e')](_0xc8eb('0x40'))[_0xc8eb('0x3e')]('phone\x20NOT\x20IN\x20(?)',squel[_0xc8eb('0x39')]()[_0xc8eb('0x3a')](_0xc8eb('0x34'))[_0xc8eb('0x3d')]('cm_hopper')['where'](_0x30875d+'\x20=\x20?',_0x16ce3b['id']['toString']())))['toString']();return _0x3e5d8c;};var _0x246c13=function(_0x374115,_0x419979){var _0x10f878=squel[_0xc8eb('0x41')]()[_0xc8eb('0x42')](_0xc8eb('0x32'))[_0xc8eb('0x33')]([_0xc8eb('0x34'),'scheduledAt','ContactId','ListId',_0x419979,_0xc8eb('0x37'),_0xc8eb('0x38')],squel['select']()[_0xc8eb('0x3a')](_0xc8eb('0x34'),_0xc8eb('0x34'))['field'](_0xc8eb('0x3b'),'scheduledAt')['field']('id',_0xc8eb('0x36'))[_0xc8eb('0x3a')](LISTID[_0xc8eb('0x3c')](),_0xc8eb('0x28'))[_0xc8eb('0x3a')](_0x374115['id'][_0xc8eb('0x3c')](),_0x419979)['field'](_0xc8eb('0x3b'),_0xc8eb('0x37'))[_0xc8eb('0x3a')](_0xc8eb('0x3b'),_0xc8eb('0x38'))['from'](_0xc8eb('0x43'))['where']('deletedAt\x20IS\x20NULL')[_0xc8eb('0x3e')]('ListId\x20=\x20?',LISTID['toString']())[_0xc8eb('0x3e')](_0xc8eb('0x44'),squel['str'](hopperContacts))[_0xc8eb('0x3e')]('phone\x20IS\x20NOT\x20NULL')['where'](_0xc8eb('0x45'),squel[_0xc8eb('0x39')]()[_0xc8eb('0x3a')]('calleridnum')['from'](_0xc8eb('0x46'))[_0xc8eb('0x3e')](_0x419979+_0xc8eb('0x47'),_0x374115['id'][_0xc8eb('0x3c')]()))[_0xc8eb('0x3e')](_0xc8eb('0x45'),squel[_0xc8eb('0x39')]()[_0xc8eb('0x3a')]('phone')[_0xc8eb('0x3d')](_0xc8eb('0x32'))[_0xc8eb('0x3e')](_0x419979+_0xc8eb('0x47'),_0x374115['id']['toString']())))[_0xc8eb('0x3c')]();return _0x10f878;};function _0x4660b3(_0xcfa64b,_0x2fcb73){var _0x588353=squel['insert']()[_0xc8eb('0x42')]('cm_hopper')['fromQuery']([_0xc8eb('0x34'),_0xc8eb('0x35'),_0xc8eb('0x36'),'ListId',_0x2fcb73,'createdAt','updatedAt'],squel['select']()[_0xc8eb('0x3a')](_0xc8eb('0x34'),_0xc8eb('0x34'))[_0xc8eb('0x3a')](_0xc8eb('0x3b'),_0xc8eb('0x35'))[_0xc8eb('0x3a')]('id',_0xc8eb('0x36'))[_0xc8eb('0x3a')](LISTID[_0xc8eb('0x3c')](),'ListId')['field'](_0xcfa64b['id'][_0xc8eb('0x3c')](),_0x2fcb73)[_0xc8eb('0x3a')]('NOW()','createdAt')['field'](_0xc8eb('0x3b'),'updatedAt')[_0xc8eb('0x3d')](_0xc8eb('0x43'))[_0xc8eb('0x3e')]('deletedAt\x20IS\x20NULL')['where'](_0xc8eb('0x48'),LISTID['toString']())['where'](_0xc8eb('0x44'),squel[_0xc8eb('0x49')](hopperContacts))[_0xc8eb('0x3e')](_0xc8eb('0x40')))['toString']();return _0x588353;}function _0x404017(_0x127825,_0x30112b){var _0x2652a9=squel['insert']()['into']('cm_hopper_black')[_0xc8eb('0x33')]([_0xc8eb('0x34'),_0xc8eb('0x36'),'ListId',_0x30112b,'createdAt',_0xc8eb('0x38')],squel['select']()[_0xc8eb('0x3a')](_0xc8eb('0x34'),_0xc8eb('0x34'))[_0xc8eb('0x3a')]('id',_0xc8eb('0x36'))[_0xc8eb('0x3a')](LISTID[_0xc8eb('0x3c')](),_0xc8eb('0x28'))[_0xc8eb('0x3a')](_0x127825['id']['toString'](),_0x30112b)[_0xc8eb('0x3a')](_0xc8eb('0x3b'),_0xc8eb('0x37'))['field'](_0xc8eb('0x3b'),_0xc8eb('0x38'))[_0xc8eb('0x3d')](_0xc8eb('0x43'))[_0xc8eb('0x3e')](_0xc8eb('0x3f'))[_0xc8eb('0x3e')]('ListId\x20=\x20?',LISTID[_0xc8eb('0x3c')]())[_0xc8eb('0x3e')](_0xc8eb('0x44'),squel[_0xc8eb('0x49')](hopperContacts))[_0xc8eb('0x3e')](_0xc8eb('0x40')))[_0xc8eb('0x3c')]();return _0x2652a9;}return db[_0xc8eb('0x4a')]['findAll']({'where':{'type':_0xc8eb('0x4b')},'attributes':['id','dialCheckDuplicateType'],'include':[{'model':db[_0xc8eb('0x4c')],'as':_0xc8eb('0x4d'),'where':{'id':LISTID}}]})[_0xc8eb('0x4e')](function(_0x2c755c){var _0x4aab19=[];if(_0x2c755c){var _0x38d22f;for(var _0x34f18c=0x0,_0x42212c;_0x34f18c<_0x2c755c['length'];_0x34f18c+=0x1){_0x42212c=_0x2c755c[_0x34f18c][_0xc8eb('0x4f')]({'plain':!![]});switch(_0x42212c[_0xc8eb('0x50')]){case'always':_0x4aab19[_0xc8eb('0x2e')](db['sequelize'][_0xc8eb('0x51')](_0x246c13(_0x42212c,_0xc8eb('0x52')))[_0xc8eb('0x4e')](function(){})[_0xc8eb('0x2f')](_0x5edb2a()));break;case _0xc8eb('0x53'):_0x4aab19[_0xc8eb('0x2e')](db[_0xc8eb('0x54')][_0xc8eb('0x51')](_0x264899(_0x42212c,_0xc8eb('0x52')))[_0xc8eb('0x4e')](function(){})[_0xc8eb('0x2f')](_0x5edb2a()));break;default:_0x4aab19[_0xc8eb('0x2e')](db[_0xc8eb('0x54')][_0xc8eb('0x51')](_0x4660b3(_0x42212c,_0xc8eb('0x52')))['then'](function(){})['catch'](_0x5edb2a()));}}}return _0x4aab19;})['all']()['then'](function(){return db[_0xc8eb('0x4a')]['findAll']({'where':{'type':_0xc8eb('0x4b')},'attributes':['id'],'include':[{'model':db[_0xc8eb('0x4c')],'as':_0xc8eb('0x55'),'where':{'id':LISTID}}]})[_0xc8eb('0x4e')](function(_0x33066e){var _0x32290c=[];if(_0x33066e){var _0x37b762;for(var _0x602d6a=0x0,_0x16166c;_0x602d6a<_0x33066e[_0xc8eb('0x1c')];_0x602d6a+=0x1){_0x16166c=_0x33066e[_0x602d6a][_0xc8eb('0x4f')]({'plain':!![]});_0x32290c[_0xc8eb('0x2e')](db[_0xc8eb('0x54')][_0xc8eb('0x51')](_0x404017(_0x16166c,_0xc8eb('0x52')))['then'](function(){})[_0xc8eb('0x2f')](_0x5edb2a()));}}return _0x32290c;})['all']();})[_0xc8eb('0x4e')](function(){return db[_0xc8eb('0x56')][_0xc8eb('0x57')]({'attributes':['id',_0xc8eb('0x50')],'include':[{'model':db[_0xc8eb('0x4c')],'as':'Lists','where':{'id':LISTID}}]})['then'](function(_0x1cc78e){var _0x59df45=[];if(_0x1cc78e){for(var _0x234b3b=0x0,_0x15cedf;_0x234b3b<_0x1cc78e['length'];_0x234b3b+=0x1){_0x15cedf=_0x1cc78e[_0x234b3b][_0xc8eb('0x4f')]({'plain':!![]});switch(_0x15cedf[_0xc8eb('0x50')]){case'always':_0x59df45[_0xc8eb('0x2e')](db[_0xc8eb('0x54')][_0xc8eb('0x51')](_0x246c13(_0x15cedf,_0xc8eb('0x58')))['then'](function(){})[_0xc8eb('0x2f')](_0x5edb2a()));break;case _0xc8eb('0x53'):_0x59df45[_0xc8eb('0x2e')](db[_0xc8eb('0x54')][_0xc8eb('0x51')](_0x264899(_0x15cedf,_0xc8eb('0x58')))[_0xc8eb('0x4e')](function(){})['catch'](_0x5edb2a()));break;default:_0x59df45['push'](db['sequelize'][_0xc8eb('0x51')](_0x4660b3(_0x15cedf,_0xc8eb('0x58')))['then'](function(){})[_0xc8eb('0x2f')](_0x5edb2a()));}}}return _0x59df45;})[_0xc8eb('0x59')]();})['then'](function(){return db[_0xc8eb('0x56')][_0xc8eb('0x57')]({'attributes':['id'],'include':[{'model':db['CmList'],'as':_0xc8eb('0x55'),'where':{'id':LISTID}}]})['then'](function(_0x217599){var _0x49e59c=[];if(_0x217599){for(var _0x3580c8=0x0,_0x571f61;_0x3580c8<_0x217599[_0xc8eb('0x1c')];_0x3580c8+=0x1){_0x571f61=_0x217599[_0x3580c8][_0xc8eb('0x4f')]({'plain':!![]});_0x49e59c['push'](db['sequelize']['query'](_0x404017(_0x571f61,_0xc8eb('0x58')))[_0xc8eb('0x4e')](function(){})['catch'](_0x5edb2a()));}}return _0x49e59c;})['all']();})[_0xc8eb('0x2f')](function(_0x3722ef){logger[_0xc8eb('0x1a')](_0xc8eb('0x5a'),'generalCheckHopper',_0x3722ef[_0xc8eb('0x1e')]);});}var processPromises=function(_0x4026e8){return BPromise[_0xc8eb('0x59')](promises)[_0xc8eb('0x4e')](function(_0x262c4e){})[_0xc8eb('0x2f')](function(_0x2b54af){logger[_0xc8eb('0x1a')]('Error\x20processing\x20rows\x20block:',JSON['stringify'](_0x2b54af));})[_0xc8eb('0x5b')](function(){socket[_0xc8eb('0x5c')](_0xc8eb('0x5d')+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x4026e8){return _0x4026e8[_0xc8eb('0x5e')]();}});};var endCsv=function(){return BPromise[_0xc8eb('0x5f')]()[_0xc8eb('0x4e')](function(){if(hopperContacts){return checkHopper();}})[_0xc8eb('0x4e')](function(){socket['emit'](_0xc8eb('0x5d')+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs['unlinkSync'](FILEPATH);}catch(_0x1b96c5){logger[_0xc8eb('0x1a')](_0xc8eb('0x60'),JSON['stringify'](_0x1b96c5));}finally{process[_0xc8eb('0x61')](0x0);}});};process['on']('SIGINT',function(){logger[_0xc8eb('0x62')](_0xc8eb('0x63'));endCsv();});function main(){return BPromise['resolve']()[_0xc8eb('0x4e')](function(){if(DUPLICATES){DUPLICATES=DUPLICATES['split'](',');return db['CmContact'][_0xc8eb('0x57')]({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})[_0xc8eb('0x4e')](function(_0x146f43){var _0x4ee9a6=fs[_0xc8eb('0x64')](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa[_0xc8eb('0x65')](_0x4ee9a6,{'header':!![],'skipEmptyLines':!![],'step':function(_0x3789cf,_0x49e603){total+=0x1;var _0x360525=total;promises['push'](checkRow(_0x3789cf,_0x146f43,_0x360525)[_0xc8eb('0x4e')](function(){success+=0x1;})[_0xc8eb('0x2f')](function(_0x596d48){if(_0x596d48[_0xc8eb('0x1a')]){errors+=0x1;delete _0x596d48['error'];}else if(_0x596d48[_0xc8eb('0x2a')]){duplicates+=0x1;delete _0x596d48[_0xc8eb('0x2a')];}rows[_0xc8eb('0x2e')](_0x596d48);}));if(total%0xc8===0x0){_0x49e603[_0xc8eb('0x66')]();return processPromises(_0x49e603);}},'complete':function(){return processPromises()['then'](function(){logger[_0xc8eb('0x62')](_0xc8eb('0x67'));endCsv();});},'error':function(_0x3063f3,_0x28eb4b){logger[_0xc8eb('0x62')](_0xc8eb('0x68'),JSON['stringify'](_0x3063f3));endCsv();}});})[_0xc8eb('0x2f')](function(_0x3c289b){logger[_0xc8eb('0x1a')](_0xc8eb('0x69'),JSON[_0xc8eb('0x30')](_0x3c289b));});}main();
\ No newline at end of file
index 919048c..603bf14 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ce1=['socket.io-emitter','format','YYYY-MM-DD\x20HH:mm:ss','test','field','phone','from','join','.id\x20=\x20','where','.dialCheckDuplicateType\x20IN\x20(','CmContact','findAll','then','push','all','split','length','filter','CmContactHasItem','update','PHONE','inserted','cm_contacts.phone','cm_contacts.scheduledat','cm_contacts.id','cm_contacts.updatedAt','cm_contacts.priority','cm_contacts.UserId','insert','into','cm_hopper','fromQuery','scheduledat','ContactId','ListId','createdAt','UserId','recallme','cm_contacts','.CmListId','.CmListId\x20=\x20?','cm_contacts.createdAt\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22always\x22','toString','cm_contacts.createdAt','cm_contacts.ListId\x20=\x20','select','cm_hopper_black','ListId\x20=\x20?','\x20=\x20','date_add(cm_contacts.scheduledat,interval\x20','.offset-cm_contacts.utcOffset\x20minute)','cm_contacts.ListId','updatedAt','priority','fields','cm_contact_has_items.item','cm_contact_has_items.createdAt','cm_contact_has_items.updatedAt','cm_contact_has_items','cm_contacts.id\x20=\x20cm_contact_has_items.CmContactId','cm_hopper.ListId\x20=\x20?','keys','CompanyId',')\x20NOT\x20IN\x20?','deletedAt\x20IS\x20NULL','id\x20IN\x20?','MIN(id)','group','info','Received\x20SIGINT','error','message','exit','errors','code','sequelize','spread','catch','campaigns_has_cm_lists','campaigns.id\x20=\x20campaigns_has_cm_lists.CampaignId','campaigns_has_cm_lists.CmListId=','query','voice_queues.id','voice_queues.dialTimezone','voice_queues','voice_queues_has_cm_lists','timezones','isNil','utcOffset','set','offset','dialTimezone','stringify','send','clone','server/files/tmp','.csv','includes','header','ContactItemType','name','_description','writeFileSync','parse','createReadStream','find','data','trim','replace','isValid','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','isNaN','email','email\x20wrong\x20format','YYYY-MM-DD','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','\x20not\x20specified','hasOwnProperty','itemTypeId','description','appendFileSync','rows','emit','contact:import:','abort','SystemError','duplicates','cm_contacts_','\x20LIKE\x20cm_contacts;','campaigns_','voice_queues_','CREATE\x20TABLE\x20','(id\x20int,dialTimezone\x20varchar(255),offset\x20int);','each','dialTimezone,utcOffset',',\x20scheduledAt\x20=\x20NOW()','contactId','contactTypeId','VoiceQueueId','voice_queues_has_cm_blacklists','campaigns','campaigns_has_cm_blacklists','CampaignId','DROP\x20TABLE\x20','finish','affectedRows','unlink','complete','argv','root','binding','phone\x20is\x20mandatory','firstName','firstName\x20is\x20mandatory','ListId\x20is\x20mandatory','body\x20id\x20mandatory','map','No\x20agent\x20available','uncaughtException','path','lodash','papaparse','util','bluebird','moment','squel','../../../mysqldb','../../../config/environment','../../../config/environment/shared','../../../config/logger','redis','defaults','localhost'];(function(_0x31dbf1,_0x424a9c){var _0x3966cb=function(_0xbbbaad){while(--_0xbbbaad){_0x31dbf1['push'](_0x31dbf1['shift']());}};_0x3966cb(++_0x424a9c);}(_0x8ce1,0x152));var _0x18ce=function(_0xb861ff,_0x43ef8e){_0xb861ff=_0xb861ff-0x0;var _0x1eb706=_0x8ce1[_0xb861ff];return _0x1eb706;};'use strict';var fs=require('fs');var path=require(_0x18ce('0x0'));var _=require(_0x18ce('0x1'));var Papa=require(_0x18ce('0x2'));var util=require(_0x18ce('0x3'));var BPromise=require(_0x18ce('0x4'));var moment=require(_0x18ce('0x5'));var squel=require(_0x18ce('0x6'));var Redis=require('ioredis');var db=require(_0x18ce('0x7'))['db'];var config=require(_0x18ce('0x8'));var shared=require(_0x18ce('0x9'));var logger=require(_0x18ce('0xa'))('import');config[_0x18ce('0xb')]=_[_0x18ce('0xc')](config['redis'],{'host':_0x18ce('0xd'),'port':0x18eb});var socket=require(_0x18ce('0xe'))(new Redis(config['redis']));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var promisesAdditionalPhones=[];var orderBy=0x0;var stopped=![];var NOW=moment()[_0x18ce('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()[_0x18ce('0xf')](_0x18ce('0x10'));function isEmail(_0x3f43d6){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))*$/[_0x18ce('0x11')](_0x3f43d6);}function selectNotIn(_0x42cbc6,_0x59b4f2,_0x5d0755,_0x1c1322,_0x48c5f4){return squel['select']()[_0x18ce('0x12')](_0x18ce('0x13'))[_0x18ce('0x14')](_0x1c1322)[_0x18ce('0x15')](_0x59b4f2,null,_0x59b4f2+_0x18ce('0x16')+_0x1c1322+'.'+_0x5d0755)[_0x18ce('0x17')](_0x1c1322+'.'+_0x5d0755+'\x20=\x20'+_0x42cbc6+'.'+_0x5d0755)[_0x18ce('0x17')](_0x59b4f2+_0x18ce('0x18')+_0x48c5f4[_0x18ce('0x15')]()+')');}function handleAdditionalPhones(){return new Promise(function(_0x4563ff,_0x19d328){promisesAdditionalPhones=[];return db[_0x18ce('0x19')][_0x18ce('0x1a')]({'raw':!![],'attributes':['id','AdditionalPhones'],'where':{'createdAt':NOW,'AdditionalPhones':{'$ne':null}}})[_0x18ce('0x1b')](function(_0x5a7d99){if(_0x5a7d99!==null){var _0x5ca452=[];for(var _0x522def=0x0;_0x522def<_0x5a7d99['length'];_0x522def++){var _0x1171bf=_0x5a7d99[_0x522def];_0x5ca452[_0x18ce('0x1c')](insertAdditionalPhones(_0x1171bf));}}Promise[_0x18ce('0x1d')](_0x5ca452)['then'](function(){_0x4563ff({'val':0x1});});});});}function insertAdditionalPhones(_0x2f2b56){return new Promise(function(_0xf9363b,_0x160b52){var _0x293979=_0x2f2b56['AdditionalPhones'];var _0x3e9b16=_0x293979[_0x18ce('0x1e')](';');var _0x49615e=[];orderBy=0x0;for(var _0x381699=0x0;_0x381699<_0x3e9b16[_0x18ce('0x1f')];_0x381699++){_0x49615e[_0x18ce('0x1c')](splitAdditionalPhone(_0x2f2b56['id'],_0x3e9b16[_0x381699]));}Promise[_0x18ce('0x1d')](_0x49615e)['then'](function(){_0xf9363b({'val':_0x3e9b16['length']});});});}function splitAdditionalPhone(_0x456049,_0xa805cc){return new Promise(function(_0xc25148,_0x2e1df5){var _0x387110=_0xa805cc[_0x18ce('0x1e')](':');var _0x4b8310=_0x387110[0x0];var _0x5e185e=_0x387110[0x1];if(!_['isNil'](_0x5e185e)){var _0x163cb8=_0x5e185e[_0x18ce('0x1e')]('|');var _0x29a581=[];for(var _0xb55940=0x0;_0xb55940<_0x163cb8[_0x18ce('0x1f')];_0xb55940++){if(_0x163cb8[_0xb55940]!==''){var _0x4cc82e=_[_0x18ce('0x20')](promisesAdditionalPhones,{'contactId':_0x456049,'phone':_0x163cb8[_0xb55940]});if(_0x4cc82e[_0x18ce('0x1f')]==0x0){orderBy++;promisesAdditionalPhones[_0x18ce('0x1c')]({'contactId':_0x456049,'contactTypeId':_0x4b8310,'phone':_0x163cb8[_0xb55940],'orderBy':orderBy});}}}_0xc25148({'ok':0x1});}else _0xc25148({'res':0x0});});}function createAdditionalPhone(_0x51bb26,_0x511ab8,_0x163bfa,_0x5b5588){var _0x50c58c='';var _0x5caa01='';var _0x9a0d94=_0x163bfa['split']('§');_0x50c58c=_0x9a0d94[0x0];if(_0x9a0d94[_0x18ce('0x1f')]==0x2)_0x5caa01=_0x9a0d94[0x1];return new Promise(function(_0x45aec1,_0x71ef2d){return db[_0x18ce('0x21')]['findOne']({'where':{'CmContactId':_0x51bb26,'item':_0x50c58c}})[_0x18ce('0x1b')](function(_0x211848){if(_0x211848){return db[_0x18ce('0x21')][_0x18ce('0x22')]({'ItemTypeId':_0x511ab8,'description':_0x5caa01,'OrderBy':_0x5b5588},{'where':{'CmContactId':_0x51bb26,'item':_0x50c58c}})[_0x18ce('0x1b')](function(_0x1734ba){_0x45aec1({'res':'updated'});});}else{return db['CmContactHasItem']['create']({'CmContactId':_0x51bb26,'item':_0x50c58c,'description':_0x5caa01,'ItemTypeId':_0x511ab8,'OrderBy':_0x5b5588,'ItemClass':_0x18ce('0x23')})[_0x18ce('0x1b')](function(_0x2a3405){_0x45aec1({'res':_0x18ce('0x24')});});}});});}function insertCmHopper(_0x2b1827,_0x1dadd6,_0x473fd8,_0x91d42a,_0x3b6c34){var _0x1735dc=[_0x18ce('0x25'),_0x18ce('0x26'),_0x18ce('0x27'),'cm_contacts.ListId',_0x1dadd6+'.'+_0x91d42a,'cm_contacts.createdAt',_0x18ce('0x28'),_0x18ce('0x29'),_0x18ce('0x2a'),'\x22'+_0x3b6c34+'\x22'];return squel[_0x18ce('0x2b')]()[_0x18ce('0x2c')](_0x18ce('0x2d'))[_0x18ce('0x2e')]([_0x18ce('0x13'),_0x18ce('0x2f'),_0x18ce('0x30'),_0x18ce('0x31'),_0x91d42a,_0x18ce('0x32'),'updatedAt','priority',_0x18ce('0x33'),_0x18ce('0x34')],squel['select']()['fields'](_0x1735dc)[_0x18ce('0x14')](_0x1dadd6)[_0x18ce('0x15')](_0x18ce('0x35'),null,'cm_contacts.ListId\x20=\x20'+_0x1dadd6+_0x18ce('0x36'))['join'](_0x473fd8,null,_0x473fd8+_0x18ce('0x16')+_0x1dadd6+'.'+_0x91d42a)[_0x18ce('0x17')](_0x1dadd6+_0x18ce('0x37'),_0x2b1827)[_0x18ce('0x17')](_0x18ce('0x38'),NOW)[_0x18ce('0x17')](_0x18ce('0x39'),selectNotIn(_0x1dadd6,_0x473fd8,_0x91d42a,_0x18ce('0x2d'),['\x22always\x22','\x22onlyIfOpen\x22']))[_0x18ce('0x17')]('cm_contacts.phone\x20NOT\x20IN\x20(?)',selectNotIn(_0x1dadd6,_0x473fd8,_0x91d42a,_0x18ce('0x2d'),[_0x18ce('0x3a')])))[_0x18ce('0x3b')]();}function insertCmHopperBlack(_0x39ba56,_0x159d81,_0x495fd3,_0xc704be){var _0x49c4a6=['cm_contacts.phone','cm_contacts.id','cm_contacts.ListId',_0x159d81+'.'+_0xc704be,_0x18ce('0x3c'),_0x18ce('0x28')];return squel[_0x18ce('0x2b')]()[_0x18ce('0x2c')]('cm_hopper_black')['fromQuery']([_0x18ce('0x13'),_0x18ce('0x30'),_0x18ce('0x31'),_0xc704be,'createdAt','updatedAt'],squel['select']()['fields'](_0x49c4a6)['from'](_0x159d81)['join']('cm_contacts',null,_0x18ce('0x3d')+_0x159d81+_0x18ce('0x36'))['join'](_0x495fd3,null,_0x495fd3+_0x18ce('0x16')+_0x159d81+'.'+_0xc704be)[_0x18ce('0x17')](_0x159d81+'.CmListId\x20=\x20?',_0x39ba56)['where'](_0x18ce('0x38'),NOW)[_0x18ce('0x17')]('cm_contacts.phone\x20NOT\x20IN\x20(?)',squel[_0x18ce('0x3e')]()[_0x18ce('0x12')]('phone')[_0x18ce('0x14')](_0x18ce('0x3f'))[_0x18ce('0x17')](_0x18ce('0x40'),_0x39ba56)[_0x18ce('0x17')](_0xc704be+_0x18ce('0x41')+_0x159d81+'.'+_0xc704be)))['toString']();}function insertTzCmHopper(_0x5e614f,_0x2aba05,_0x3752df,_0x31d69d,_0x3f5e51,_0x21641e){var _0x846bd8=[_0x18ce('0x25'),_0x18ce('0x42')+_0x21641e+_0x18ce('0x43'),'cm_contacts.id',_0x18ce('0x44'),_0x2aba05+'.'+_0x31d69d,_0x18ce('0x3c'),_0x18ce('0x28'),_0x18ce('0x29'),_0x18ce('0x2a'),'\x22'+_0x3f5e51+'\x22'];var _0x24b6dd=squel['insert']()['into']('cm_hopper')[_0x18ce('0x2e')](['phone',_0x18ce('0x2f'),_0x18ce('0x30'),'ListId',_0x31d69d,_0x18ce('0x32'),_0x18ce('0x45'),_0x18ce('0x46'),_0x18ce('0x33'),_0x18ce('0x34')],squel[_0x18ce('0x3e')]()[_0x18ce('0x47')](_0x846bd8)['from'](_0x2aba05)['join'](_0x18ce('0x35'),null,_0x18ce('0x3d')+_0x2aba05+_0x18ce('0x36'))['join'](_0x3752df,null,_0x3752df+_0x18ce('0x16')+_0x2aba05+'.'+_0x31d69d)[_0x18ce('0x15')](_0x21641e,null,_0x21641e+_0x18ce('0x16')+_0x2aba05+'.'+_0x31d69d)[_0x18ce('0x17')](_0x2aba05+_0x18ce('0x37'),_0x5e614f)['where'](_0x18ce('0x38'),NOW)[_0x18ce('0x17')](_0x18ce('0x39'),selectNotIn(_0x2aba05,_0x3752df,_0x31d69d,'cm_hopper',[_0x18ce('0x3a'),'\x22onlyIfOpen\x22']))['where'](_0x18ce('0x39'),selectNotIn(_0x2aba05,_0x3752df,_0x31d69d,_0x18ce('0x2d'),['\x22always\x22'])))[_0x18ce('0x3b')]();return _0x24b6dd;}function insertTzCmHopperBlack(_0x3c7cfd,_0x3f4884,_0x446284,_0x760d69){var _0x2ac232=[_0x18ce('0x25'),_0x18ce('0x27'),_0x18ce('0x44'),_0x3f4884+'.'+_0x760d69,_0x18ce('0x3c'),'cm_contacts.updatedAt'];return squel[_0x18ce('0x2b')]()[_0x18ce('0x2c')]('cm_hopper_black')[_0x18ce('0x2e')](['phone',_0x18ce('0x30'),'ListId',_0x760d69,_0x18ce('0x32'),_0x18ce('0x45')],squel[_0x18ce('0x3e')]()[_0x18ce('0x47')](_0x2ac232)[_0x18ce('0x14')](_0x3f4884)[_0x18ce('0x15')](_0x18ce('0x35'),null,_0x18ce('0x3d')+_0x3f4884+'.CmListId')[_0x18ce('0x15')](_0x446284,null,_0x446284+_0x18ce('0x16')+_0x3f4884+'.'+_0x760d69)[_0x18ce('0x17')](_0x3f4884+'.CmListId\x20=\x20?',_0x3c7cfd)['where'](_0x18ce('0x38'),NOW)[_0x18ce('0x17')]('cm_contacts.phone\x20NOT\x20IN\x20(?)',squel[_0x18ce('0x3e')]()[_0x18ce('0x12')](_0x18ce('0x13'))['from'](_0x18ce('0x3f'))[_0x18ce('0x17')]('ListId\x20=\x20?',_0x3c7cfd)[_0x18ce('0x17')](_0x760d69+_0x18ce('0x41')+_0x3f4884+'.'+_0x760d69)))[_0x18ce('0x3b')]();}function insertCmHopperAdditionalPhones(_0x529f7e){var _0x47d7d6=['cm_hopper.id',_0x18ce('0x48'),'cm_contact_has_items.OrderBy',_0x18ce('0x49'),_0x18ce('0x4a')];return squel[_0x18ce('0x2b')]()['into']('cm_hopper_additional_phones')[_0x18ce('0x2e')](['CmHopperId',_0x18ce('0x13'),'OrderBy',_0x18ce('0x32'),_0x18ce('0x45')],squel[_0x18ce('0x3e')]()[_0x18ce('0x47')](_0x47d7d6)[_0x18ce('0x14')](_0x18ce('0x2d'))[_0x18ce('0x15')](_0x18ce('0x35'),null,'cm_contacts.id\x20=\x20cm_hopper.ContactId')[_0x18ce('0x15')](_0x18ce('0x4b'),null,_0x18ce('0x4c'))[_0x18ce('0x17')](_0x18ce('0x4d'),_0x529f7e)[_0x18ce('0x17')](_0x18ce('0x38'),NOW))[_0x18ce('0x3b')]();}function insertCmContact(_0x576355,_0x48b14a,_0x228b80,_0x45ea26){var _0x32a595=_['concat'](_[_0x18ce('0x4e')](_0x45ea26),[_0x18ce('0x31'),_0x18ce('0x4f'),_0x18ce('0x32'),_0x18ce('0x45')]);return squel['insert']()[_0x18ce('0x2c')](_0x18ce('0x35'))[_0x18ce('0x2e')](_0x32a595,squel['select']()[_0x18ce('0x47')](_0x32a595)[_0x18ce('0x14')](_0x48b14a)[_0x18ce('0x17')]('('+_0x228b80[_0x18ce('0x15')](',')+_0x18ce('0x50'),squel[_0x18ce('0x3e')]()[_0x18ce('0x47')](_0x228b80)['from']('cm_contacts')[_0x18ce('0x17')]('ListId\x20=\x20?',_0x576355)[_0x18ce('0x17')](_0x18ce('0x51')))[_0x18ce('0x17')](_0x18ce('0x52'),squel['select']()['field'](_0x18ce('0x53'),'min_id')['from'](_0x48b14a)[_0x18ce('0x54')](_0x228b80[_0x18ce('0x15')](','))))[_0x18ce('0x3b')]();}function handleStop(){logger[_0x18ce('0x55')](_0x18ce('0x56'));stopped=!![];}function handleUncaughtException(_0x2a7bb8){logger[_0x18ce('0x57')](_0x2a7bb8[_0x18ce('0x58')]);process[_0x18ce('0x59')](0x1);}function handleError(_0xc36587,_0x3f2b88){stats[_0x18ce('0x5a')]['push']({'name':_0x3f2b88[_0x18ce('0x5b')],'message':_0x3f2b88['message'],'row':_0xc36587});}function handleQuery(_0x2c5769){logger[_0x18ce('0x55')](_0x2c5769);return db[_0x18ce('0x5c')]['query'](_0x2c5769)[_0x18ce('0x5d')](function(_0x2d4414){results[_0x18ce('0x1c')](_0x2d4414);})[_0x18ce('0x5e')](function(_0x7239c8){logger['error'](_0x7239c8['message']);});}function updateTzCampaigns(_0x397072){return new Promise(function(_0x18f561,_0x27a913){var _0xcb5edb=squel[_0x18ce('0x3e')]()['fields'](['campaigns.id','campaigns.dialTimezone'])['from']('campaigns')[_0x18ce('0x15')](_0x18ce('0x5f'),null,_0x18ce('0x60'))['where'](_0x18ce('0x61')+_0x397072);db[_0x18ce('0x5c')][_0x18ce('0x62')](_0xcb5edb['toString']())['spread'](function(_0x1f56b3){var _0x251559=[];for(var _0x35379e=0x0;_0x35379e<_0x1f56b3[_0x18ce('0x1f')];_0x35379e++){_0x251559['push'](getTimezoneData(_0x1f56b3[_0x35379e],tmp_campaigns));}BPromise[_0x18ce('0x1d')](_0x251559)[_0x18ce('0x1b')](function(){_0x18f561({'val':0x1});});})[_0x18ce('0x5e')](function(_0x2f1a48){logger[_0x18ce('0x57')](_0x2f1a48[_0x18ce('0x58')]);_0x18f561({'val':0x0});});});}function updateTzVoiceQueues(_0x2af3aa){return new Promise(function(_0x30113e,_0x2c7388){var _0x33414a=squel[_0x18ce('0x3e')]()[_0x18ce('0x47')]([_0x18ce('0x63'),_0x18ce('0x64')])[_0x18ce('0x14')](_0x18ce('0x65'))[_0x18ce('0x15')](_0x18ce('0x66'),null,'voice_queues.id\x20=\x20voice_queues_has_cm_lists.VoiceQueueId')[_0x18ce('0x17')]('voice_queues_has_cm_lists.CmListId='+_0x2af3aa);db[_0x18ce('0x5c')][_0x18ce('0x62')](_0x33414a[_0x18ce('0x3b')]())['spread'](function(_0x549ff5){var _0x5bf4f6=[];for(var _0x3544c1=0x0;_0x3544c1<_0x549ff5[_0x18ce('0x1f')];_0x3544c1++){_0x5bf4f6['push'](getTimezoneData(_0x549ff5[_0x3544c1],tmp_voice_queues));}BPromise[_0x18ce('0x1d')](_0x5bf4f6)['then'](function(){_0x30113e({'val':0x1});});})[_0x18ce('0x5e')](function(_0x4ecc31){logger[_0x18ce('0x57')](_0x4ecc31[_0x18ce('0x58')]);_0x30113e({'val':0x0});});});}function getTimezoneData(_0x3fc7db,_0x467493){return new Promise(function(_0x4f72e0,_0x31d9a8){var _0xa3c692=shared[_0x18ce('0x67')];var _0x175cf7=_0xa3c692[_0x3fc7db['dialTimezone']];if(_[_0x18ce('0x68')](_0x175cf7)){_0x4f72e0({'ret':0x1});}else{var _0x28fdab=_0x175cf7[_0x18ce('0x69')];var _0x38c081=squel[_0x18ce('0x2b')]()[_0x18ce('0x2c')](_0x467493)['set']('id',_0x3fc7db['id'])[_0x18ce('0x6a')](_0x18ce('0x6b'),_0x28fdab)[_0x18ce('0x6a')](_0x18ce('0x6c'),_0x3fc7db['dialTimezone'])[_0x18ce('0x3b')]();return db['sequelize'][_0x18ce('0x62')](_0x38c081)[_0x18ce('0x5d')](function(_0x3b58d5){_0x4f72e0({'ret':0x1});})[_0x18ce('0x5e')](function(_0x51ce65){logger[_0x18ce('0x57')](_0x51ce65['message']);_0x31d9a8({'ret':0x1});});}});}function handleTZQuery(_0x2f4c0d){logger[_0x18ce('0x55')](_0x2f4c0d);return db[_0x18ce('0x5c')][_0x18ce('0x62')](_0x2f4c0d)[_0x18ce('0x5d')](function(_0x53c9c1){})[_0x18ce('0x5e')](function(_0x591dab){logger[_0x18ce('0x57')](_0x591dab['message']);});}function main(_0x12758a,_0x4254a8,_0x43ced1,_0x1ae9c7){logger[_0x18ce('0x55')]('main',_0x12758a,JSON[_0x18ce('0x6d')](_0x4254a8));process[_0x18ce('0x6e')]('start');var _0x4c24ad=_0x4254a8['binding'];var _0x1e2fc5=_[_0x18ce('0x6f')](_0x4c24ad);var _0x1e724c=_0x4254a8['socket_timestamp'];var _0x215c8a=path[_0x18ce('0x15')](config['root'],_0x18ce('0x70'),_0x1e724c+_0x18ce('0x71'));hasTZ=_[_0x18ce('0x4e')](_0x4c24ad)[_0x18ce('0x72')](_0x18ce('0x6c'));var _0x194378=_['keys'](_0x4c24ad)[_0x18ce('0x15')]();logger[_0x18ce('0x55')](_0x18ce('0x73'),_0x194378);db[_0x18ce('0x74')][_0x18ce('0x1a')]({'raw':!![],'attributes':['id',_0x18ce('0x75')]})[_0x18ce('0x1b')](function(_0x3be9d8){for(var _0x503049=0x0;_0x503049<_0x3be9d8[_0x18ce('0x1f')];_0x503049++){if(_0x3be9d8[_0x503049]['name']in _0x4c24ad){contactItemTypes[_0x18ce('0x1c')](_0x3be9d8[_0x503049]);delete _0x1e2fc5[_0x3be9d8[_0x503049][_0x18ce('0x75')]];hasAdditionalPhones=!![];}for(var _0x430ea4 in _0x4c24ad){if(_0x3be9d8[_0x503049][_0x18ce('0x75')]+_0x18ce('0x76')===_0x430ea4){phoneDescriptions[_0x18ce('0x1c')]({'itemTypeId':_0x3be9d8[_0x503049]['id'],'description':_0x430ea4});delete _0x1e2fc5[_0x430ea4];}}}if(hasAdditionalPhones)_0x1e2fc5['AdditionalPhones']='';var _0x5b9c82=_['keys'](_0x1e2fc5)[_0x18ce('0x15')]();logger[_0x18ce('0x55')](_0x18ce('0x73'),_0x5b9c82);fs[_0x18ce('0x77')](_0x215c8a,_0x5b9c82+'\x0a');Papa[_0x18ce('0x78')](fs[_0x18ce('0x79')](_0x12758a),{'header':!![],'skipEmptyLines':!![],'step':function(_0x560cf3,_0x5aee60){try{for(var _0xd4ed7a=0x0,_0x53bd8e=[];_0xd4ed7a<_0x560cf3['data'][_0x18ce('0x1f')];_0xd4ed7a++){stats['rows']+=0x1;if(_0x560cf3[_0x18ce('0x5a')][_0xd4ed7a]){handleError(_0x560cf3['data'][_0xd4ed7a],_0x560cf3[_0x18ce('0x5a')][_0xd4ed7a]);}else{var _0x29995c=[];var _0x298222=[];var _0x559911={};for(var _0x2935fb in _0x4c24ad){let _0xff6707=contactItemTypes[_0x18ce('0x7a')](_0x1e02b7=>_0x1e02b7[_0x18ce('0x75')]===_0x2935fb);let _0x12a58d=contactItemTypes['find'](_0x30ef00=>_0x30ef00[_0x18ce('0x75')]+'_description'===_0x2935fb);if(_['isNil'](_0xff6707)&&_[_0x18ce('0x68')](_0x12a58d)){if(_0x4c24ad['hasOwnProperty'](_0x2935fb)){if(_0x560cf3[_0x18ce('0x7b')][_0xd4ed7a][_0x4c24ad[_0x2935fb]]){var _0x1a506d=_[_0x18ce('0x7c')](_0x560cf3[_0x18ce('0x7b')][_0xd4ed7a][_0x4c24ad[_0x2935fb]][_0x18ce('0x7d')](/"/g,'\x27'));switch(_0x2935fb){case _0x18ce('0x2f'):var _0x457f49=moment(_0x1a506d,_0x18ce('0x10'),!![]);if(_0x457f49[_0x18ce('0x7e')]()){_0x53bd8e[_0x18ce('0x1c')]('\x22'+_0x1a506d+'\x22');}else{_0x29995c[_0x18ce('0x1c')](_0x18ce('0x7f'));}break;case'priority':var _0xa4f810=parseInt(_0x1a506d);_0x1a506d=_[_0x18ce('0x80')](_0xa4f810)||_0xa4f810<0x0||_0xa4f810>0x4?_0x1ae9c7?0x3:0x2:_0xa4f810;_0x53bd8e['push']('\x22'+_0x1a506d+'\x22');break;case _0x18ce('0x33'):var _0x57a804=parseInt(_0x1a506d);if(_['isNumber'](_0x57a804)&&_[_0x18ce('0x72')](_0x43ced1,_0x57a804)){_0x53bd8e[_0x18ce('0x1c')]('\x22'+_0x57a804+'\x22');}else{_0x29995c[_0x18ce('0x1c')]('agent\x20not\x20exists');}break;case _0x18ce('0x81'):if(isEmail(_0x1a506d)){_0x53bd8e[_0x18ce('0x1c')]('\x22'+_0x1a506d+'\x22');}else{_0x29995c[_0x18ce('0x1c')](_0x18ce('0x82'));}break;case'dateOfBirth':var _0x15df65=moment(_0x1a506d,_0x18ce('0x83'),!![]);if(_0x15df65[_0x18ce('0x7e')]()){_0x53bd8e[_0x18ce('0x1c')]('\x22'+_0x1a506d+'\x22');}else{_0x29995c['push'](_0x18ce('0x84'));}break;case _0x18ce('0x6c'):var _0x18a437=shared[_0x18ce('0x67')];var _0x2d842d=_0x18a437[_0x1a506d];if(!_[_0x18ce('0x68')](_0x2d842d)){var _0x1b68c8=_0x2d842d['utcOffset'];_0x53bd8e[_0x18ce('0x1c')]('\x22'+_0x1a506d+'\x22');_0x53bd8e[_0x18ce('0x1c')]('\x22'+_0x1b68c8+'\x22');}break;default:_0x53bd8e['push']('\x22'+_0x1a506d+'\x22');}}else{switch(_0x2935fb){case'firstName':case _0x18ce('0x13'):_0x29995c[_0x18ce('0x1c')](_0x2935fb+_0x18ce('0x85'));break;default:_0x53bd8e[_0x18ce('0x1c')]('\x22\x22');}}}}else{var _0x502e88='';if(!_[_0x18ce('0x68')](_0xff6707)){if(!_0x559911[_0x18ce('0x86')](_0xff6707['id'])){if(!_[_0x18ce('0x68')](_0x560cf3[_0x18ce('0x7b')][_0xd4ed7a][_0x4c24ad[_0x2935fb]])){var _0x1a506d=_['trim'](_0x560cf3[_0x18ce('0x7b')][_0xd4ed7a][_0x4c24ad[_0x2935fb]][_0x18ce('0x7d')](/"/g,'\x27'));var _0x4919f2=phoneDescriptions['find'](_0x21fa1f=>_0x21fa1f[_0x18ce('0x87')]===_0xff6707['id']);if(!_[_0x18ce('0x68')](_0x4919f2)){var _0x186960=_[_0x18ce('0x7c')](_0x560cf3[_0x18ce('0x7b')][_0xd4ed7a][_0x4c24ad[_0x4919f2[_0x18ce('0x88')]]]['replace'](/"/g,'\x27'));if(!_[_0x18ce('0x68')](_0x186960))_0x1a506d=_0x1a506d+'§'+_0x186960;}if(_0x502e88=='')_0x502e88=_0x1a506d;else _0x502e88+='|'+_0x1a506d;}_0x298222[_0x18ce('0x1c')](_0xff6707['id']+':'+_0x502e88);_0x559911[_0xff6707['id']]=0x1;}}}}if(hasAdditionalPhones){_0x53bd8e['push']('\x22'+_0x298222[_0x18ce('0x15')](';')+'\x22');}if(_0x29995c[_0x18ce('0x1f')]){handleError(_0x560cf3[_0x18ce('0x7b')][_0xd4ed7a],{'code':'SystemRow','message':_0x29995c[_0x18ce('0x15')]()});}else{fs[_0x18ce('0x89')](_0x215c8a,_0x53bd8e[_0x18ce('0x15')]()+'\x0a');}_0x53bd8e=[];}if(!(stats[_0x18ce('0x8a')]%0xc8)){socket[_0x18ce('0x8b')](_0x18ce('0x8c')+_0x1e724c,stats);stats[_0x18ce('0x5a')]=[];}}if(stopped){logger[_0x18ce('0x55')]('Abort\x20parser');_0x5aee60[_0x18ce('0x8d')]();}}catch(_0x519642){handleError(_0x560cf3[_0x18ce('0x7b')][_0xd4ed7a],{'code':_0x18ce('0x8e'),'message':_0x519642['message']});logger['error']('step',_0x519642[_0x18ce('0x58')]);}},'complete':function(){try{var _0x26e580=[];var _0x2a11a2=[];var _0x3deb74=_0x18ce('0x35');if(_0x4254a8[_0x18ce('0x8f')]&&_0x4254a8[_0x18ce('0x8f')][_0x18ce('0x1f')]){_0x3deb74=_0x18ce('0x90')+_0x1e724c;_0x26e580[_0x18ce('0x1c')]('CREATE\x20TABLE\x20'+_0x3deb74+_0x18ce('0x91'));}tmp_campaigns=_0x18ce('0x92')+_0x1e724c;tmp_voice_queues=_0x18ce('0x93')+_0x1e724c;_0x2a11a2[_0x18ce('0x1c')](_0x18ce('0x94')+tmp_campaigns+_0x18ce('0x95'));_0x2a11a2[_0x18ce('0x1c')](_0x18ce('0x94')+tmp_voice_queues+_0x18ce('0x95'));BPromise[_0x18ce('0x96')](_0x2a11a2,handleTZQuery)[_0x18ce('0x1b')](function(_0x1c2780){updateTzCampaigns(_0x4254a8['ListId'])['then'](function(_0x5df6f0){updateTzVoiceQueues(_0x4254a8[_0x18ce('0x31')])[_0x18ce('0x1b')](function(_0x4e320d){if(hasTZ)_0x5b9c82=_0x5b9c82['replace'](_0x18ce('0x6c'),_0x18ce('0x97'));var _0x1949a8=util[_0x18ce('0xf')]('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',_0x215c8a,_0x3deb74,_0x5b9c82,_0x4254a8[_0x18ce('0x31')],_0x4254a8['CompanyId']||null,NOW,NOW);if(_['isNil'](_0x4c24ad[_0x18ce('0x2f')])){_0x1949a8+=_0x18ce('0x98');}_0x26e580[_0x18ce('0x1c')](_0x1949a8);if(_0x4254a8[_0x18ce('0x8f')]&&_0x4254a8[_0x18ce('0x8f')][_0x18ce('0x1f')]){_0x26e580['push'](insertCmContact(_0x4254a8[_0x18ce('0x31')],_0x3deb74,_0x4254a8[_0x18ce('0x8f')],_0x4c24ad));_0x26e580[_0x18ce('0x1c')]('DROP\x20TABLE\x20'+_0x3deb74+';');}BPromise[_0x18ce('0x96')](_0x26e580,handleQuery)[_0x18ce('0x1b')](function(_0x459d5a){BPromise[_0x18ce('0x1d')]([handleAdditionalPhones()])[_0x18ce('0x1b')](function(){_0x26e580=[];for(var _0x2994b5=0x0;_0x2994b5<promisesAdditionalPhones[_0x18ce('0x1f')];_0x2994b5++){if(promisesAdditionalPhones[_0x2994b5]['phone']!='§'){_0x26e580[_0x18ce('0x1c')](createAdditionalPhone(promisesAdditionalPhones[_0x2994b5][_0x18ce('0x99')],promisesAdditionalPhones[_0x2994b5][_0x18ce('0x9a')],promisesAdditionalPhones[_0x2994b5][_0x18ce('0x13')],promisesAdditionalPhones[_0x2994b5]['orderBy']));}}BPromise[_0x18ce('0x1d')](_0x26e580)[_0x18ce('0x1b')](function(){_0x26e580=[];if(hasTZ){_0x26e580[_0x18ce('0x1c')](insertTzCmHopper(_0x4254a8['ListId'],_0x18ce('0x66'),'voice_queues',_0x18ce('0x9b'),_0x1ae9c7,tmp_voice_queues));_0x26e580[_0x18ce('0x1c')](insertTzCmHopperBlack(_0x4254a8[_0x18ce('0x31')],_0x18ce('0x9c'),_0x18ce('0x65'),_0x18ce('0x9b')));_0x26e580[_0x18ce('0x1c')](insertTzCmHopper(_0x4254a8[_0x18ce('0x31')],'campaigns_has_cm_lists',_0x18ce('0x9d'),'CampaignId',_0x1ae9c7,tmp_campaigns));_0x26e580[_0x18ce('0x1c')](insertTzCmHopperBlack(_0x4254a8[_0x18ce('0x31')],_0x18ce('0x9e'),_0x18ce('0x9d'),'CampaignId'));_0x26e580[_0x18ce('0x1c')](insertCmHopperAdditionalPhones(_0x4254a8['ListId']));}else{_0x26e580[_0x18ce('0x1c')](insertCmHopper(_0x4254a8[_0x18ce('0x31')],_0x18ce('0x66'),_0x18ce('0x65'),_0x18ce('0x9b'),_0x1ae9c7));_0x26e580[_0x18ce('0x1c')](insertCmHopperBlack(_0x4254a8[_0x18ce('0x31')],_0x18ce('0x9c'),_0x18ce('0x65'),_0x18ce('0x9b')));_0x26e580[_0x18ce('0x1c')](insertCmHopper(_0x4254a8[_0x18ce('0x31')],_0x18ce('0x5f'),'campaigns',_0x18ce('0x9f'),_0x1ae9c7));_0x26e580['push'](insertCmHopperBlack(_0x4254a8[_0x18ce('0x31')],_0x18ce('0x9e'),_0x18ce('0x9d'),'CampaignId'));_0x26e580[_0x18ce('0x1c')](insertCmHopperAdditionalPhones(_0x4254a8['ListId']));}_0x26e580[_0x18ce('0x1c')](_0x18ce('0xa0')+tmp_campaigns+';');_0x26e580[_0x18ce('0x1c')](_0x18ce('0xa0')+tmp_voice_queues+';');BPromise['each'](_0x26e580,handleQuery)[_0x18ce('0x1b')](function(_0x5f23ed){stats[_0x18ce('0xa1')]=!![];stats[_0x18ce('0xa2')]=_0x4254a8[_0x18ce('0x8f')]&&_0x4254a8[_0x18ce('0x8f')][_0x18ce('0x1f')]?results[0x2][_0x18ce('0xa2')]:results[0x0]['affectedRows'];socket[_0x18ce('0x8b')](_0x18ce('0x8c')+_0x1e724c,stats);fs['unlink'](_0x12758a);fs[_0x18ce('0xa3')](_0x215c8a);process[_0x18ce('0x59')](0x0);})[_0x18ce('0x5e')](function(_0x4e0ec2){logger[_0x18ce('0x57')](_0x4e0ec2[_0x18ce('0x58')]);process[_0x18ce('0x59')](0x1);});});});})[_0x18ce('0x5e')](function(_0x2d088f){logger[_0x18ce('0x57')](_0x2d088f[_0x18ce('0x58')]);process['exit'](0x1);});});});});}catch(_0x551166){logger['error'](_0x18ce('0xa4'),_0x551166[_0x18ce('0x58')]);process[_0x18ce('0x59')](0x1);}},'error':function(_0x493bcc,_0xd81f2b,_0x4f1642,_0x5659e3){throw new Error(_0x5659e3);}});});}function validate(){if(process['argv']&&process[_0x18ce('0xa5')][_0x18ce('0x1f')]<0x4){throw new Error('arguments\x20<filename>\x20<parameters>\x20<agents>');}var _0x410f99=path[_0x18ce('0x15')](config[_0x18ce('0xa6')],_0x18ce('0x70'),process[_0x18ce('0xa5')][0x2]);if(!fs['existsSync'](_0x410f99)){throw new Error('file\x20doesn\x27t\x20exists');}var _0x9b8609={};try{_0x9b8609=JSON['parse'](process[_0x18ce('0xa5')][0x3]);if(!_0x9b8609[_0x18ce('0xa7')]){throw new Error('binding\x20doesn\x27t\x20exists');}if(!_0x9b8609[_0x18ce('0xa7')][_0x18ce('0x13')]){throw new Error(_0x18ce('0xa8'));}if(!_0x9b8609[_0x18ce('0xa7')][_0x18ce('0xa9')]){throw new Error(_0x18ce('0xaa'));}var _0x106d2f=0x0;if(_0x9b8609[_0x18ce('0xa7')][_0x18ce('0x33')]){_0x106d2f=0x1;}if(!_0x9b8609[_0x18ce('0x31')]){throw new Error(_0x18ce('0xab'));}}catch(_0x30c834){throw new Error(_0x18ce('0xac'));}var _0x375870=[];try{_0x375870=_[_0x18ce('0xad')](JSON['parse'](process['argv'][0x4]),'id');}catch(_0x162624){logger['info'](_0x18ce('0xae'));}main(_0x410f99,_0x9b8609,_0x375870,_0x106d2f);}validate();process['on']('SIGINT',handleStop);process['on'](_0x18ce('0xaf'),handleUncaughtException);
\ No newline at end of file
+var _0x5f2a=['contact:import:','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()','DROP\x20TABLE\x20','contactId','contactTypeId','orderBy','VoiceQueueId','voice_queues_has_cm_blacklists','CampaignId','campaigns_has_cm_blacklists','affectedRows','unlink','complete','argv','arguments\x20<filename>\x20<parameters>\x20<agents>','server/files/tmp','existsSync','file\x20doesn\x27t\x20exists','binding\x20doesn\x27t\x20exists','phone\x20is\x20mandatory','firstName\x20is\x20mandatory','body\x20id\x20mandatory','map','uncaughtException','path','lodash','bluebird','moment','squel','ioredis','../../../mysqldb','../../../config/environment','../../../config/environment/shared','../../../config/logger','import','redis','defaults','localhost','format','YYYY-MM-DD\x20HH:mm:ss','test','select','field','phone','from','join','.id\x20=\x20','where','\x20=\x20','.dialCheckDuplicateType\x20IN\x20(','findAll','AdditionalPhones','then','push','all','split','length','isNil','CmContactHasItem','findOne','update','create','PHONE','inserted','cm_contacts.phone','cm_contacts.scheduledat','cm_contacts.id','cm_contacts.ListId','cm_contacts.updatedAt','cm_contacts.priority','cm_contacts.UserId','insert','into','cm_hopper','fromQuery','scheduledat','ContactId','ListId','createdAt','UserId','recallme','fields','cm_contacts','cm_contacts.ListId\x20=\x20','.CmListId','.CmListId\x20=\x20?','\x22always\x22','\x22onlyIfOpen\x22','cm_contacts.phone\x20NOT\x20IN\x20(?)','toString','cm_contacts.createdAt','cm_hopper_black','updatedAt','cm_contacts.createdAt\x20=\x20?','ListId\x20=\x20?','date_add(cm_contacts.scheduledat,interval\x20','.offset-cm_contacts.utcOffset\x20minute)','priority','cm_contact_has_items.item','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?','concat','keys','CompanyId',')\x20NOT\x20IN\x20?','deletedAt\x20IS\x20NULL','id\x20IN\x20?','MIN(id)','min_id','group','Received\x20SIGINT','error','message','exit','code','sequelize','spread','catch','campaigns','campaigns_has_cm_lists','query','voice_queues','voice_queues_has_cm_lists','set','dialTimezone','info','main','stringify','send','start','binding','clone','socket_timestamp','root','.csv','header','ContactItemType','name','writeFileSync','parse','createReadStream','data','find','_description','hasOwnProperty','trim','replace','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','isNaN','isNumber','agent\x20not\x20exists','email','email\x20wrong\x20format','dateOfBirth','YYYY-MM-DD','firstName','\x20not\x20specified','itemTypeId','description','SystemRow','appendFileSync','rows','emit'];(function(_0x378289,_0x163424){var _0x47c851=function(_0x342949){while(--_0x342949){_0x378289['push'](_0x378289['shift']());}};_0x47c851(++_0x163424);}(_0x5f2a,0x194));var _0xa5f2=function(_0x36b946,_0x57f1af){_0x36b946=_0x36b946-0x0;var _0x4356d6=_0x5f2a[_0x36b946];return _0x4356d6;};'use strict';var fs=require('fs');var path=require(_0xa5f2('0x0'));var _=require(_0xa5f2('0x1'));var Papa=require('papaparse');var util=require('util');var BPromise=require(_0xa5f2('0x2'));var moment=require(_0xa5f2('0x3'));var squel=require(_0xa5f2('0x4'));var Redis=require(_0xa5f2('0x5'));var db=require(_0xa5f2('0x6'))['db'];var config=require(_0xa5f2('0x7'));var shared=require(_0xa5f2('0x8'));var logger=require(_0xa5f2('0x9'))(_0xa5f2('0xa'));config[_0xa5f2('0xb')]=_[_0xa5f2('0xc')](config[_0xa5f2('0xb')],{'host':_0xa5f2('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xa5f2('0xb')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var promisesAdditionalPhones=[];var orderBy=0x0;var stopped=![];var NOW=moment()[_0xa5f2('0xe')]('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'](_0xa5f2('0xf'));function isEmail(_0x22eaed){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))*$/[_0xa5f2('0x10')](_0x22eaed);}function selectNotIn(_0x1ebe74,_0x3784f3,_0x2c9354,_0x58ea32,_0x2884ea){return squel[_0xa5f2('0x11')]()[_0xa5f2('0x12')](_0xa5f2('0x13'))[_0xa5f2('0x14')](_0x58ea32)[_0xa5f2('0x15')](_0x3784f3,null,_0x3784f3+_0xa5f2('0x16')+_0x58ea32+'.'+_0x2c9354)[_0xa5f2('0x17')](_0x58ea32+'.'+_0x2c9354+_0xa5f2('0x18')+_0x1ebe74+'.'+_0x2c9354)[_0xa5f2('0x17')](_0x3784f3+_0xa5f2('0x19')+_0x2884ea['join']()+')');}function handleAdditionalPhones(){return new Promise(function(_0xce11ee,_0x5e3c0b){promisesAdditionalPhones=[];return db['CmContact'][_0xa5f2('0x1a')]({'raw':!![],'attributes':['id',_0xa5f2('0x1b')],'where':{'createdAt':NOW,'AdditionalPhones':{'$ne':null}}})[_0xa5f2('0x1c')](function(_0x4a1e58){if(_0x4a1e58!==null){var _0x4dd9c8=[];for(var _0x1f7ba5=0x0;_0x1f7ba5<_0x4a1e58['length'];_0x1f7ba5++){var _0x2b9e35=_0x4a1e58[_0x1f7ba5];_0x4dd9c8[_0xa5f2('0x1d')](insertAdditionalPhones(_0x2b9e35));}}Promise[_0xa5f2('0x1e')](_0x4dd9c8)[_0xa5f2('0x1c')](function(){_0xce11ee({'val':0x1});});});});}function insertAdditionalPhones(_0x466e23){return new Promise(function(_0x496e90,_0x28a271){var _0xba7bf4=_0x466e23[_0xa5f2('0x1b')];var _0x57219a=_0xba7bf4[_0xa5f2('0x1f')](';');var _0x52317b=[];orderBy=0x0;for(var _0x4bddde=0x0;_0x4bddde<_0x57219a[_0xa5f2('0x20')];_0x4bddde++){_0x52317b[_0xa5f2('0x1d')](splitAdditionalPhone(_0x466e23['id'],_0x57219a[_0x4bddde]));}Promise[_0xa5f2('0x1e')](_0x52317b)[_0xa5f2('0x1c')](function(){_0x496e90({'val':_0x57219a[_0xa5f2('0x20')]});});});}function splitAdditionalPhone(_0x518fe8,_0x4a5848){return new Promise(function(_0x2a8d52,_0x3c220e){var _0x2e80a3=_0x4a5848['split'](':');var _0x13b248=_0x2e80a3[0x0];var _0x40c5a3=_0x2e80a3[0x1];if(!_[_0xa5f2('0x21')](_0x40c5a3)){var _0x35cf1f=_0x40c5a3[_0xa5f2('0x1f')]('|');var _0x20ad2d=[];for(var _0x20f84f=0x0;_0x20f84f<_0x35cf1f[_0xa5f2('0x20')];_0x20f84f++){if(_0x35cf1f[_0x20f84f]!==''){var _0x13174a=_['filter'](promisesAdditionalPhones,{'contactId':_0x518fe8,'phone':_0x35cf1f[_0x20f84f]});if(_0x13174a[_0xa5f2('0x20')]==0x0){orderBy++;promisesAdditionalPhones[_0xa5f2('0x1d')]({'contactId':_0x518fe8,'contactTypeId':_0x13b248,'phone':_0x35cf1f[_0x20f84f],'orderBy':orderBy});}}}_0x2a8d52({'ok':0x1});}else _0x2a8d52({'res':0x0});});}function createAdditionalPhone(_0x40cb2f,_0x588dc2,_0x1f14e3,_0x72f6d0){var _0x3ea8d4='';var _0x4d9c9d='';var _0x280b8c=_0x1f14e3['split']('§');_0x3ea8d4=_0x280b8c[0x0];if(_0x280b8c[_0xa5f2('0x20')]==0x2)_0x4d9c9d=_0x280b8c[0x1];return new Promise(function(_0x3ad4a7,_0x39bbf4){return db[_0xa5f2('0x22')][_0xa5f2('0x23')]({'where':{'CmContactId':_0x40cb2f,'item':_0x3ea8d4}})[_0xa5f2('0x1c')](function(_0x2a254b){if(_0x2a254b){return db[_0xa5f2('0x22')][_0xa5f2('0x24')]({'ItemTypeId':_0x588dc2,'description':_0x4d9c9d,'OrderBy':_0x72f6d0},{'where':{'CmContactId':_0x40cb2f,'item':_0x3ea8d4}})['then'](function(_0x1a77b0){_0x3ad4a7({'res':'updated'});});}else{return db[_0xa5f2('0x22')][_0xa5f2('0x25')]({'CmContactId':_0x40cb2f,'item':_0x3ea8d4,'description':_0x4d9c9d,'ItemTypeId':_0x588dc2,'OrderBy':_0x72f6d0,'ItemClass':_0xa5f2('0x26')})[_0xa5f2('0x1c')](function(_0x1c7201){_0x3ad4a7({'res':_0xa5f2('0x27')});});}});});}function insertCmHopper(_0x2d46a3,_0x4ba48c,_0x17eaff,_0x4a4c23,_0x231e8a){var _0x390cee=[_0xa5f2('0x28'),_0xa5f2('0x29'),_0xa5f2('0x2a'),_0xa5f2('0x2b'),_0x4ba48c+'.'+_0x4a4c23,'cm_contacts.createdAt',_0xa5f2('0x2c'),_0xa5f2('0x2d'),_0xa5f2('0x2e'),'\x22'+_0x231e8a+'\x22'];return squel[_0xa5f2('0x2f')]()[_0xa5f2('0x30')](_0xa5f2('0x31'))[_0xa5f2('0x32')](['phone',_0xa5f2('0x33'),_0xa5f2('0x34'),_0xa5f2('0x35'),_0x4a4c23,_0xa5f2('0x36'),'updatedAt','priority',_0xa5f2('0x37'),_0xa5f2('0x38')],squel['select']()[_0xa5f2('0x39')](_0x390cee)[_0xa5f2('0x14')](_0x4ba48c)[_0xa5f2('0x15')](_0xa5f2('0x3a'),null,_0xa5f2('0x3b')+_0x4ba48c+_0xa5f2('0x3c'))['join'](_0x17eaff,null,_0x17eaff+_0xa5f2('0x16')+_0x4ba48c+'.'+_0x4a4c23)[_0xa5f2('0x17')](_0x4ba48c+_0xa5f2('0x3d'),_0x2d46a3)[_0xa5f2('0x17')]('cm_contacts.createdAt\x20=\x20?',NOW)[_0xa5f2('0x17')]('cm_contacts.phone\x20NOT\x20IN\x20(?)',selectNotIn(_0x4ba48c,_0x17eaff,_0x4a4c23,_0xa5f2('0x31'),[_0xa5f2('0x3e'),_0xa5f2('0x3f')]))['where'](_0xa5f2('0x40'),selectNotIn(_0x4ba48c,_0x17eaff,_0x4a4c23,_0xa5f2('0x31'),['\x22always\x22'])))[_0xa5f2('0x41')]();}function insertCmHopperBlack(_0x560fad,_0xba1953,_0x2c4cda,_0x1fa88a){var _0x29047b=[_0xa5f2('0x28'),_0xa5f2('0x2a'),_0xa5f2('0x2b'),_0xba1953+'.'+_0x1fa88a,_0xa5f2('0x42'),_0xa5f2('0x2c')];return squel[_0xa5f2('0x2f')]()[_0xa5f2('0x30')](_0xa5f2('0x43'))[_0xa5f2('0x32')]([_0xa5f2('0x13'),'ContactId',_0xa5f2('0x35'),_0x1fa88a,_0xa5f2('0x36'),_0xa5f2('0x44')],squel[_0xa5f2('0x11')]()['fields'](_0x29047b)[_0xa5f2('0x14')](_0xba1953)[_0xa5f2('0x15')](_0xa5f2('0x3a'),null,_0xa5f2('0x3b')+_0xba1953+_0xa5f2('0x3c'))[_0xa5f2('0x15')](_0x2c4cda,null,_0x2c4cda+_0xa5f2('0x16')+_0xba1953+'.'+_0x1fa88a)['where'](_0xba1953+'.CmListId\x20=\x20?',_0x560fad)[_0xa5f2('0x17')](_0xa5f2('0x45'),NOW)[_0xa5f2('0x17')](_0xa5f2('0x40'),squel[_0xa5f2('0x11')]()[_0xa5f2('0x12')](_0xa5f2('0x13'))[_0xa5f2('0x14')](_0xa5f2('0x43'))[_0xa5f2('0x17')](_0xa5f2('0x46'),_0x560fad)[_0xa5f2('0x17')](_0x1fa88a+'\x20=\x20'+_0xba1953+'.'+_0x1fa88a)))[_0xa5f2('0x41')]();}function insertTzCmHopper(_0x466438,_0xecb001,_0xbef6a6,_0x51c586,_0x4ca56f,_0x524f6f){var _0x1fe9e8=[_0xa5f2('0x28'),_0xa5f2('0x47')+_0x524f6f+_0xa5f2('0x48'),_0xa5f2('0x2a'),_0xa5f2('0x2b'),_0xecb001+'.'+_0x51c586,_0xa5f2('0x42'),_0xa5f2('0x2c'),_0xa5f2('0x2d'),_0xa5f2('0x2e'),'\x22'+_0x4ca56f+'\x22'];var _0xdc4047=squel['insert']()[_0xa5f2('0x30')](_0xa5f2('0x31'))[_0xa5f2('0x32')]([_0xa5f2('0x13'),'scheduledat',_0xa5f2('0x34'),_0xa5f2('0x35'),_0x51c586,_0xa5f2('0x36'),'updatedAt',_0xa5f2('0x49'),_0xa5f2('0x37'),_0xa5f2('0x38')],squel['select']()['fields'](_0x1fe9e8)[_0xa5f2('0x14')](_0xecb001)[_0xa5f2('0x15')](_0xa5f2('0x3a'),null,_0xa5f2('0x3b')+_0xecb001+_0xa5f2('0x3c'))[_0xa5f2('0x15')](_0xbef6a6,null,_0xbef6a6+_0xa5f2('0x16')+_0xecb001+'.'+_0x51c586)[_0xa5f2('0x15')](_0x524f6f,null,_0x524f6f+_0xa5f2('0x16')+_0xecb001+'.'+_0x51c586)['where'](_0xecb001+_0xa5f2('0x3d'),_0x466438)[_0xa5f2('0x17')]('cm_contacts.createdAt\x20=\x20?',NOW)['where']('cm_contacts.phone\x20NOT\x20IN\x20(?)',selectNotIn(_0xecb001,_0xbef6a6,_0x51c586,_0xa5f2('0x31'),[_0xa5f2('0x3e'),'\x22onlyIfOpen\x22']))[_0xa5f2('0x17')](_0xa5f2('0x40'),selectNotIn(_0xecb001,_0xbef6a6,_0x51c586,_0xa5f2('0x31'),['\x22always\x22'])))['toString']();return _0xdc4047;}function insertTzCmHopperBlack(_0x2eceed,_0x56f831,_0x3a565b,_0x2e3455){var _0x45e42d=[_0xa5f2('0x28'),_0xa5f2('0x2a'),_0xa5f2('0x2b'),_0x56f831+'.'+_0x2e3455,_0xa5f2('0x42'),_0xa5f2('0x2c')];return squel['insert']()['into'](_0xa5f2('0x43'))[_0xa5f2('0x32')]([_0xa5f2('0x13'),_0xa5f2('0x34'),_0xa5f2('0x35'),_0x2e3455,_0xa5f2('0x36'),_0xa5f2('0x44')],squel['select']()[_0xa5f2('0x39')](_0x45e42d)[_0xa5f2('0x14')](_0x56f831)[_0xa5f2('0x15')](_0xa5f2('0x3a'),null,_0xa5f2('0x3b')+_0x56f831+_0xa5f2('0x3c'))[_0xa5f2('0x15')](_0x3a565b,null,_0x3a565b+'.id\x20=\x20'+_0x56f831+'.'+_0x2e3455)[_0xa5f2('0x17')](_0x56f831+_0xa5f2('0x3d'),_0x2eceed)['where'](_0xa5f2('0x45'),NOW)[_0xa5f2('0x17')](_0xa5f2('0x40'),squel[_0xa5f2('0x11')]()[_0xa5f2('0x12')]('phone')[_0xa5f2('0x14')](_0xa5f2('0x43'))[_0xa5f2('0x17')](_0xa5f2('0x46'),_0x2eceed)[_0xa5f2('0x17')](_0x2e3455+_0xa5f2('0x18')+_0x56f831+'.'+_0x2e3455)))[_0xa5f2('0x41')]();}function insertCmHopperAdditionalPhones(_0x18acdf){var _0x439e14=['cm_hopper.id',_0xa5f2('0x4a'),'cm_contact_has_items.OrderBy',_0xa5f2('0x4b'),'cm_contact_has_items.updatedAt'];return squel[_0xa5f2('0x2f')]()[_0xa5f2('0x30')](_0xa5f2('0x4c'))[_0xa5f2('0x32')]([_0xa5f2('0x4d'),_0xa5f2('0x13'),_0xa5f2('0x4e'),_0xa5f2('0x36'),_0xa5f2('0x44')],squel[_0xa5f2('0x11')]()[_0xa5f2('0x39')](_0x439e14)['from'](_0xa5f2('0x31'))[_0xa5f2('0x15')](_0xa5f2('0x3a'),null,_0xa5f2('0x4f'))[_0xa5f2('0x15')](_0xa5f2('0x50'),null,_0xa5f2('0x51'))['where'](_0xa5f2('0x52'),_0x18acdf)[_0xa5f2('0x17')](_0xa5f2('0x45'),NOW))['toString']();}function insertCmContact(_0x3e6dea,_0x5cf879,_0x54c5ec,_0x207457){var _0x730584=_[_0xa5f2('0x53')](_[_0xa5f2('0x54')](_0x207457),[_0xa5f2('0x35'),_0xa5f2('0x55'),_0xa5f2('0x36'),_0xa5f2('0x44'),'scheduledAt']);return squel[_0xa5f2('0x2f')]()[_0xa5f2('0x30')]('cm_contacts')['fromQuery'](_0x730584,squel['select']()['fields'](_0x730584)[_0xa5f2('0x14')](_0x5cf879)[_0xa5f2('0x17')]('('+_0x54c5ec[_0xa5f2('0x15')](',')+_0xa5f2('0x56'),squel[_0xa5f2('0x11')]()[_0xa5f2('0x39')](_0x54c5ec)['from'](_0xa5f2('0x3a'))['where'](_0xa5f2('0x46'),_0x3e6dea)[_0xa5f2('0x17')](_0xa5f2('0x57')))[_0xa5f2('0x17')](_0xa5f2('0x58'),squel[_0xa5f2('0x11')]()[_0xa5f2('0x12')](_0xa5f2('0x59'),_0xa5f2('0x5a'))[_0xa5f2('0x14')](_0x5cf879)[_0xa5f2('0x5b')](_0x54c5ec[_0xa5f2('0x15')](','))))['toString']();}function handleStop(){logger['info'](_0xa5f2('0x5c'));stopped=!![];}function handleUncaughtException(_0x20803d){logger[_0xa5f2('0x5d')](_0x20803d[_0xa5f2('0x5e')]);process[_0xa5f2('0x5f')](0x1);}function handleError(_0x1d8591,_0x19f554){stats['errors'][_0xa5f2('0x1d')]({'name':_0x19f554[_0xa5f2('0x60')],'message':_0x19f554['message'],'row':_0x1d8591});}function handleQuery(_0x5b7dc9){logger['info'](_0x5b7dc9);return db[_0xa5f2('0x61')]['query'](_0x5b7dc9)[_0xa5f2('0x62')](function(_0x5165cf){results[_0xa5f2('0x1d')](_0x5165cf);})[_0xa5f2('0x63')](function(_0x53ca98){logger[_0xa5f2('0x5d')](_0x53ca98['message']);});}function updateTzCampaigns(_0x22f554){return new Promise(function(_0x236ddf,_0x221072){var _0x5af80f=squel[_0xa5f2('0x11')]()[_0xa5f2('0x39')](['campaigns.id','campaigns.dialTimezone'])[_0xa5f2('0x14')](_0xa5f2('0x64'))['join'](_0xa5f2('0x65'),null,'campaigns.id\x20=\x20campaigns_has_cm_lists.CampaignId')[_0xa5f2('0x17')]('campaigns_has_cm_lists.CmListId='+_0x22f554);db['sequelize'][_0xa5f2('0x66')](_0x5af80f[_0xa5f2('0x41')]())[_0xa5f2('0x62')](function(_0x3ba50b){var _0x3d1642=[];for(var _0x2e5e7a=0x0;_0x2e5e7a<_0x3ba50b[_0xa5f2('0x20')];_0x2e5e7a++){_0x3d1642['push'](getTimezoneData(_0x3ba50b[_0x2e5e7a],tmp_campaigns));}BPromise['all'](_0x3d1642)['then'](function(){_0x236ddf({'val':0x1});});})[_0xa5f2('0x63')](function(_0x510444){logger[_0xa5f2('0x5d')](_0x510444[_0xa5f2('0x5e')]);_0x236ddf({'val':0x0});});});}function updateTzVoiceQueues(_0x1a9cd0){return new Promise(function(_0x4bb580,_0x39fd54){var _0x22dbe5=squel['select']()['fields'](['voice_queues.id','voice_queues.dialTimezone'])['from'](_0xa5f2('0x67'))[_0xa5f2('0x15')](_0xa5f2('0x68'),null,'voice_queues.id\x20=\x20voice_queues_has_cm_lists.VoiceQueueId')[_0xa5f2('0x17')]('voice_queues_has_cm_lists.CmListId='+_0x1a9cd0);db[_0xa5f2('0x61')]['query'](_0x22dbe5[_0xa5f2('0x41')]())[_0xa5f2('0x62')](function(_0xf854db){var _0x25e2fb=[];for(var _0x489f2a=0x0;_0x489f2a<_0xf854db[_0xa5f2('0x20')];_0x489f2a++){_0x25e2fb['push'](getTimezoneData(_0xf854db[_0x489f2a],tmp_voice_queues));}BPromise[_0xa5f2('0x1e')](_0x25e2fb)[_0xa5f2('0x1c')](function(){_0x4bb580({'val':0x1});});})['catch'](function(_0x204079){logger['error'](_0x204079[_0xa5f2('0x5e')]);_0x4bb580({'val':0x0});});});}function getTimezoneData(_0x58d2eb,_0x23e181){return new Promise(function(_0x359538,_0x527f72){var _0x224e45=shared['timezones'];var _0x93a032=_0x224e45[_0x58d2eb['dialTimezone']];if(_[_0xa5f2('0x21')](_0x93a032)){_0x359538({'ret':0x1});}else{var _0x36b79=_0x93a032['utcOffset'];var _0x2a1c8b=squel['insert']()[_0xa5f2('0x30')](_0x23e181)[_0xa5f2('0x69')]('id',_0x58d2eb['id'])['set']('offset',_0x36b79)[_0xa5f2('0x69')](_0xa5f2('0x6a'),_0x58d2eb[_0xa5f2('0x6a')])[_0xa5f2('0x41')]();return db[_0xa5f2('0x61')][_0xa5f2('0x66')](_0x2a1c8b)['spread'](function(_0x37944d){_0x359538({'ret':0x1});})[_0xa5f2('0x63')](function(_0x3a6885){logger[_0xa5f2('0x5d')](_0x3a6885[_0xa5f2('0x5e')]);_0x527f72({'ret':0x1});});}});}function handleTZQuery(_0xa3eba4){logger[_0xa5f2('0x6b')](_0xa3eba4);return db[_0xa5f2('0x61')][_0xa5f2('0x66')](_0xa3eba4)[_0xa5f2('0x62')](function(_0x5451ce){})[_0xa5f2('0x63')](function(_0x1a6595){logger['error'](_0x1a6595[_0xa5f2('0x5e')]);});}function main(_0x12da4d,_0x4eff12,_0xcee23f,_0x51f7b2){logger[_0xa5f2('0x6b')](_0xa5f2('0x6c'),_0x12da4d,JSON[_0xa5f2('0x6d')](_0x4eff12));process[_0xa5f2('0x6e')](_0xa5f2('0x6f'));var _0x2810f2=_0x4eff12[_0xa5f2('0x70')];var _0x31a767=_[_0xa5f2('0x71')](_0x2810f2);var _0x5848c9=_0x4eff12[_0xa5f2('0x72')];var _0x38de51=path[_0xa5f2('0x15')](config[_0xa5f2('0x73')],'server/files/tmp',_0x5848c9+_0xa5f2('0x74'));hasTZ=_[_0xa5f2('0x54')](_0x2810f2)['includes'](_0xa5f2('0x6a'));var _0x5ced87=_[_0xa5f2('0x54')](_0x2810f2)['join']();logger['info'](_0xa5f2('0x75'),_0x5ced87);db[_0xa5f2('0x76')]['findAll']({'raw':!![],'attributes':['id',_0xa5f2('0x77')]})['then'](function(_0x4089c6){for(var _0x489c5b=0x0;_0x489c5b<_0x4089c6[_0xa5f2('0x20')];_0x489c5b++){if(_0x4089c6[_0x489c5b][_0xa5f2('0x77')]in _0x2810f2){contactItemTypes['push'](_0x4089c6[_0x489c5b]);delete _0x31a767[_0x4089c6[_0x489c5b][_0xa5f2('0x77')]];hasAdditionalPhones=!![];}for(var _0x4926ed in _0x2810f2){if(_0x4089c6[_0x489c5b][_0xa5f2('0x77')]+'_description'===_0x4926ed){phoneDescriptions['push']({'itemTypeId':_0x4089c6[_0x489c5b]['id'],'description':_0x4926ed});delete _0x31a767[_0x4926ed];}}}if(hasAdditionalPhones)_0x31a767[_0xa5f2('0x1b')]='';var _0x52300e=_[_0xa5f2('0x54')](_0x31a767)['join']();logger[_0xa5f2('0x6b')]('header',_0x52300e);fs[_0xa5f2('0x78')](_0x38de51,_0x52300e+'\x0a');Papa[_0xa5f2('0x79')](fs[_0xa5f2('0x7a')](_0x12da4d),{'header':!![],'skipEmptyLines':!![],'step':function(_0x4962c5,_0x2561d8){try{for(var _0x49f8d5=0x0,_0x96141e=[];_0x49f8d5<_0x4962c5[_0xa5f2('0x7b')][_0xa5f2('0x20')];_0x49f8d5++){stats['rows']+=0x1;if(_0x4962c5['errors'][_0x49f8d5]){handleError(_0x4962c5[_0xa5f2('0x7b')][_0x49f8d5],_0x4962c5['errors'][_0x49f8d5]);}else{var _0x20aab5=[];var _0x5af5f7=[];var _0x337435={};for(var _0xd0ff10 in _0x2810f2){let _0x119500=contactItemTypes[_0xa5f2('0x7c')](_0x1480ec=>_0x1480ec['name']===_0xd0ff10);let _0x4111ce=contactItemTypes['find'](_0x4725e2=>_0x4725e2[_0xa5f2('0x77')]+_0xa5f2('0x7d')===_0xd0ff10);if(_[_0xa5f2('0x21')](_0x119500)&&_[_0xa5f2('0x21')](_0x4111ce)){if(_0x2810f2[_0xa5f2('0x7e')](_0xd0ff10)){if(_0x4962c5[_0xa5f2('0x7b')][_0x49f8d5][_0x2810f2[_0xd0ff10]]){var _0x9be2ca=_[_0xa5f2('0x7f')](_0x4962c5[_0xa5f2('0x7b')][_0x49f8d5][_0x2810f2[_0xd0ff10]][_0xa5f2('0x80')](/"/g,'\x27'));switch(_0xd0ff10){case _0xa5f2('0x33'):var _0xa498b2=moment(_0x9be2ca,'YYYY-MM-DD\x20HH:mm:ss',!![]);if(_0xa498b2['isValid']()){_0x96141e[_0xa5f2('0x1d')]('\x22'+_0x9be2ca+'\x22');}else{_0x20aab5['push'](_0xa5f2('0x81'));}break;case _0xa5f2('0x49'):var _0x1891ed=parseInt(_0x9be2ca);_0x9be2ca=_[_0xa5f2('0x82')](_0x1891ed)||_0x1891ed<0x0||_0x1891ed>0x4?_0x51f7b2?0x3:0x2:_0x1891ed;_0x96141e[_0xa5f2('0x1d')]('\x22'+_0x9be2ca+'\x22');break;case _0xa5f2('0x37'):var _0x2b14b1=parseInt(_0x9be2ca);if(_[_0xa5f2('0x83')](_0x2b14b1)&&_['includes'](_0xcee23f,_0x2b14b1)){_0x96141e[_0xa5f2('0x1d')]('\x22'+_0x2b14b1+'\x22');}else{_0x20aab5['push'](_0xa5f2('0x84'));}break;case _0xa5f2('0x85'):if(isEmail(_0x9be2ca)){_0x96141e['push']('\x22'+_0x9be2ca+'\x22');}else{_0x20aab5[_0xa5f2('0x1d')](_0xa5f2('0x86'));}break;case _0xa5f2('0x87'):var _0x426d9f=moment(_0x9be2ca,_0xa5f2('0x88'),!![]);if(_0x426d9f['isValid']()){_0x96141e['push']('\x22'+_0x9be2ca+'\x22');}else{_0x20aab5[_0xa5f2('0x1d')]('dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)');}break;case'dialTimezone':var _0x13285e=shared['timezones'];var _0x1954b9=_0x13285e[_0x9be2ca];if(!_[_0xa5f2('0x21')](_0x1954b9)){var _0x327183=_0x1954b9['utcOffset'];_0x96141e[_0xa5f2('0x1d')]('\x22'+_0x9be2ca+'\x22');_0x96141e[_0xa5f2('0x1d')]('\x22'+_0x327183+'\x22');}break;default:_0x96141e[_0xa5f2('0x1d')]('\x22'+_0x9be2ca+'\x22');}}else{switch(_0xd0ff10){case _0xa5f2('0x89'):case _0xa5f2('0x13'):_0x20aab5[_0xa5f2('0x1d')](_0xd0ff10+_0xa5f2('0x8a'));break;default:_0x96141e[_0xa5f2('0x1d')]('\x22\x22');}}}}else{var _0x3e329b='';if(!_[_0xa5f2('0x21')](_0x119500)){if(!_0x337435[_0xa5f2('0x7e')](_0x119500['id'])){if(!_[_0xa5f2('0x21')](_0x4962c5[_0xa5f2('0x7b')][_0x49f8d5][_0x2810f2[_0xd0ff10]])){var _0x9be2ca=_[_0xa5f2('0x7f')](_0x4962c5['data'][_0x49f8d5][_0x2810f2[_0xd0ff10]][_0xa5f2('0x80')](/"/g,'\x27'));var _0xa551a3=phoneDescriptions[_0xa5f2('0x7c')](_0xa5297b=>_0xa5297b[_0xa5f2('0x8b')]===_0x119500['id']);if(!_[_0xa5f2('0x21')](_0xa551a3)){var _0x3e297f=_['trim'](_0x4962c5[_0xa5f2('0x7b')][_0x49f8d5][_0x2810f2[_0xa551a3[_0xa5f2('0x8c')]]][_0xa5f2('0x80')](/"/g,'\x27'));if(!_[_0xa5f2('0x21')](_0x3e297f))_0x9be2ca=_0x9be2ca+'§'+_0x3e297f;}if(_0x3e329b=='')_0x3e329b=_0x9be2ca;else _0x3e329b+='|'+_0x9be2ca;}_0x5af5f7[_0xa5f2('0x1d')](_0x119500['id']+':'+_0x3e329b);_0x337435[_0x119500['id']]=0x1;}}}}if(hasAdditionalPhones){_0x96141e[_0xa5f2('0x1d')]('\x22'+_0x5af5f7[_0xa5f2('0x15')](';')+'\x22');}if(_0x20aab5[_0xa5f2('0x20')]){handleError(_0x4962c5[_0xa5f2('0x7b')][_0x49f8d5],{'code':_0xa5f2('0x8d'),'message':_0x20aab5[_0xa5f2('0x15')]()});}else{fs[_0xa5f2('0x8e')](_0x38de51,_0x96141e[_0xa5f2('0x15')]()+'\x0a');}_0x96141e=[];}if(!(stats[_0xa5f2('0x8f')]%0xc8)){socket[_0xa5f2('0x90')](_0xa5f2('0x91')+_0x5848c9,stats);stats['errors']=[];}}if(stopped){logger[_0xa5f2('0x6b')](_0xa5f2('0x92'));_0x2561d8[_0xa5f2('0x93')]();}}catch(_0xd914f9){handleError(_0x4962c5['data'][_0x49f8d5],{'code':_0xa5f2('0x94'),'message':_0xd914f9[_0xa5f2('0x5e')]});logger['error'](_0xa5f2('0x95'),_0xd914f9[_0xa5f2('0x5e')]);}},'complete':function(){try{var _0x43b2fa=[];var _0x19d575=[];var _0x5f92c3=_0xa5f2('0x3a');if(_0x4eff12[_0xa5f2('0x96')]&&_0x4eff12[_0xa5f2('0x96')][_0xa5f2('0x20')]){_0x5f92c3=_0xa5f2('0x97')+_0x5848c9;_0x43b2fa[_0xa5f2('0x1d')](_0xa5f2('0x98')+_0x5f92c3+_0xa5f2('0x99'));}tmp_campaigns=_0xa5f2('0x9a')+_0x5848c9;tmp_voice_queues=_0xa5f2('0x9b')+_0x5848c9;_0x19d575[_0xa5f2('0x1d')](_0xa5f2('0x98')+tmp_campaigns+_0xa5f2('0x9c'));_0x19d575[_0xa5f2('0x1d')](_0xa5f2('0x98')+tmp_voice_queues+_0xa5f2('0x9c'));BPromise[_0xa5f2('0x9d')](_0x19d575,handleTZQuery)[_0xa5f2('0x1c')](function(_0x286cca){updateTzCampaigns(_0x4eff12['ListId'])[_0xa5f2('0x1c')](function(_0x4b4a82){updateTzVoiceQueues(_0x4eff12[_0xa5f2('0x35')])[_0xa5f2('0x1c')](function(_0x169ee5){if(hasTZ)_0x52300e=_0x52300e['replace'](_0xa5f2('0x6a'),_0xa5f2('0x9e'));var _0x2c9116=util[_0xa5f2('0xe')](_0xa5f2('0x9f'),_0x38de51,_0x5f92c3,_0x52300e,_0x4eff12[_0xa5f2('0x35')],_0x4eff12[_0xa5f2('0x55')]||null,NOW,NOW);if(_[_0xa5f2('0x21')](_0x2810f2[_0xa5f2('0x33')])){_0x2c9116+=_0xa5f2('0xa0');}_0x43b2fa['push'](_0x2c9116);if(_0x4eff12[_0xa5f2('0x96')]&&_0x4eff12['duplicates'][_0xa5f2('0x20')]){_0x43b2fa[_0xa5f2('0x1d')](insertCmContact(_0x4eff12[_0xa5f2('0x35')],_0x5f92c3,_0x4eff12[_0xa5f2('0x96')],_0x2810f2));_0x43b2fa['push'](_0xa5f2('0xa1')+_0x5f92c3+';');}BPromise[_0xa5f2('0x9d')](_0x43b2fa,handleQuery)['then'](function(_0x598084){BPromise[_0xa5f2('0x1e')]([handleAdditionalPhones()])[_0xa5f2('0x1c')](function(){_0x43b2fa=[];for(var _0xd0a979=0x0;_0xd0a979<promisesAdditionalPhones['length'];_0xd0a979++){if(promisesAdditionalPhones[_0xd0a979][_0xa5f2('0x13')]!='§'){_0x43b2fa[_0xa5f2('0x1d')](createAdditionalPhone(promisesAdditionalPhones[_0xd0a979][_0xa5f2('0xa2')],promisesAdditionalPhones[_0xd0a979][_0xa5f2('0xa3')],promisesAdditionalPhones[_0xd0a979][_0xa5f2('0x13')],promisesAdditionalPhones[_0xd0a979][_0xa5f2('0xa4')]));}}BPromise[_0xa5f2('0x1e')](_0x43b2fa)[_0xa5f2('0x1c')](function(){_0x43b2fa=[];if(hasTZ){_0x43b2fa['push'](insertTzCmHopper(_0x4eff12[_0xa5f2('0x35')],'voice_queues_has_cm_lists',_0xa5f2('0x67'),_0xa5f2('0xa5'),_0x51f7b2,tmp_voice_queues));_0x43b2fa[_0xa5f2('0x1d')](insertTzCmHopperBlack(_0x4eff12[_0xa5f2('0x35')],_0xa5f2('0xa6'),_0xa5f2('0x67'),_0xa5f2('0xa5')));_0x43b2fa[_0xa5f2('0x1d')](insertTzCmHopper(_0x4eff12['ListId'],_0xa5f2('0x65'),'campaigns','CampaignId',_0x51f7b2,tmp_campaigns));_0x43b2fa[_0xa5f2('0x1d')](insertTzCmHopperBlack(_0x4eff12[_0xa5f2('0x35')],'campaigns_has_cm_blacklists','campaigns',_0xa5f2('0xa7')));_0x43b2fa[_0xa5f2('0x1d')](insertCmHopperAdditionalPhones(_0x4eff12[_0xa5f2('0x35')]));}else{_0x43b2fa['push'](insertCmHopper(_0x4eff12['ListId'],_0xa5f2('0x68'),'voice_queues','VoiceQueueId',_0x51f7b2));_0x43b2fa[_0xa5f2('0x1d')](insertCmHopperBlack(_0x4eff12[_0xa5f2('0x35')],_0xa5f2('0xa6'),_0xa5f2('0x67'),_0xa5f2('0xa5')));_0x43b2fa['push'](insertCmHopper(_0x4eff12[_0xa5f2('0x35')],'campaigns_has_cm_lists','campaigns','CampaignId',_0x51f7b2));_0x43b2fa[_0xa5f2('0x1d')](insertCmHopperBlack(_0x4eff12['ListId'],_0xa5f2('0xa8'),'campaigns',_0xa5f2('0xa7')));_0x43b2fa['push'](insertCmHopperAdditionalPhones(_0x4eff12[_0xa5f2('0x35')]));}_0x43b2fa['push'](_0xa5f2('0xa1')+tmp_campaigns+';');_0x43b2fa[_0xa5f2('0x1d')](_0xa5f2('0xa1')+tmp_voice_queues+';');BPromise[_0xa5f2('0x9d')](_0x43b2fa,handleQuery)[_0xa5f2('0x1c')](function(_0x53e4e1){stats['finish']=!![];stats[_0xa5f2('0xa9')]=_0x4eff12[_0xa5f2('0x96')]&&_0x4eff12[_0xa5f2('0x96')][_0xa5f2('0x20')]?results[0x2][_0xa5f2('0xa9')]:results[0x0][_0xa5f2('0xa9')];socket[_0xa5f2('0x90')](_0xa5f2('0x91')+_0x5848c9,stats);fs[_0xa5f2('0xaa')](_0x12da4d);fs['unlink'](_0x38de51);process[_0xa5f2('0x5f')](0x0);})[_0xa5f2('0x63')](function(_0x2377fa){logger[_0xa5f2('0x5d')](_0x2377fa['message']);process[_0xa5f2('0x5f')](0x1);});});});})[_0xa5f2('0x63')](function(_0x515b11){logger[_0xa5f2('0x5d')](_0x515b11[_0xa5f2('0x5e')]);process['exit'](0x1);});});});});}catch(_0x1d89d3){logger[_0xa5f2('0x5d')](_0xa5f2('0xab'),_0x1d89d3['message']);process[_0xa5f2('0x5f')](0x1);}},'error':function(_0x515167,_0x1e734d,_0x4507d3,_0x5b7556){throw new Error(_0x5b7556);}});});}function validate(){if(process[_0xa5f2('0xac')]&&process[_0xa5f2('0xac')][_0xa5f2('0x20')]<0x4){throw new Error(_0xa5f2('0xad'));}var _0x3f71bf=path['join'](config[_0xa5f2('0x73')],_0xa5f2('0xae'),process[_0xa5f2('0xac')][0x2]);if(!fs[_0xa5f2('0xaf')](_0x3f71bf)){throw new Error(_0xa5f2('0xb0'));}var _0x5c8319={};try{_0x5c8319=JSON[_0xa5f2('0x79')](process[_0xa5f2('0xac')][0x3]);if(!_0x5c8319[_0xa5f2('0x70')]){throw new Error(_0xa5f2('0xb1'));}if(!_0x5c8319[_0xa5f2('0x70')]['phone']){throw new Error(_0xa5f2('0xb2'));}if(!_0x5c8319['binding']['firstName']){throw new Error(_0xa5f2('0xb3'));}var _0x255c28=0x0;if(_0x5c8319[_0xa5f2('0x70')][_0xa5f2('0x37')]){_0x255c28=0x1;}if(!_0x5c8319[_0xa5f2('0x35')]){throw new Error('ListId\x20is\x20mandatory');}}catch(_0x4cb040){throw new Error(_0xa5f2('0xb4'));}var _0x522151=[];try{_0x522151=_[_0xa5f2('0xb5')](JSON[_0xa5f2('0x79')](process[_0xa5f2('0xac')][0x4]),'id');}catch(_0x494a6d){logger['info']('No\x20agent\x20available');}main(_0x3f71bf,_0x5c8319,_0x522151,_0x255c28);}validate();process['on']('SIGINT',handleStop);process['on'](_0xa5f2('0xb6'),handleUncaughtException);
\ No newline at end of file
index b3e85c6..212db4b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc6d=['cm_contacts.ListId\x20=\x20','.CmListId','.CmListId\x20=\x20?','cm_contacts.createdAt\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22always\x22','cm_contacts.ListId','insert','cm_hopper_black','fromQuery','select','\x20=\x20?','toString','cm_hopper.id','cm_contact_has_items.createdAt','cm_contact_has_items.updatedAt','into','CmHopperId','OrderBy','cm_contacts.id\x20=\x20cm_hopper.ContactId','cm_contacts.id\x20=\x20cm_contact_has_items.CmContactId','cm_hopper.ListId\x20=\x20?','keys',')\x20NOT\x20IN\x20?','ListId\x20=\x20?','id\x20IN\x20?','MIN(id)','min_id','group','Received\x20SIGINT','error','exit','code','query','info','main','stringify','send','binding','clone','root','server/files/tmp','.csv','body','findAll','name','header','writeFileSync','createReadStream','data','rows','errors','find','_description','hasOwnProperty','trim','scheduledat','isValid','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','isNaN','includes','agent\x20not\x20exists','email','dateOfBirth','YYYY-MM-DD','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','firstName','\x20not\x20specified','replace','itemTypeId','description','SystemRow','appendFileSync','emit','contact:import:','Abort\x20parser','abort','SystemError','step','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','CompanyId',',\x20scheduledAt\x20=\x20NOW()','each','contact','contactId','contactTypeId','orderBy','DROP\x20TABLE\x20','finish','affectedRows','argv','arguments\x20<filename>\x20<parameters>\x20<agents>','existsSync','file\x20doesn\x27t\x20exists','parse','binding\x20doesn\x27t\x20exists','UserId','ListId\x20is\x20mandatory','body\x20id\x20mandatory','No\x20agent\x20available','SIGINT','uncaughtException','path','lodash','papaparse','util','bluebird','squel','../../../config/environment','import','localhost','redis','format','YYYY-MM-DD\x20HH:mm:ss','cm_contacts_temp_','field','phone','from','join','.id\x20=\x20','where','\x20=\x20','.dialCheckDuplicateType\x20IN\x20(','sequelize','select\x20*\x20from\x20','spread','length','isNil','push','all','then','catch','message','AdditionalPhones','split','filter','findOne','update','updated','PHONE','inserted','CmContact','cm_contacts.phone','cm_contacts.scheduledat','cm_contacts.id','cm_contacts.createdAt','cm_contacts.updatedAt','cm_contacts.UserId','cm_hopper','ContactId','ListId','createdAt','updatedAt','priority','recallme','fields','cm_contacts'];(function(_0xe53304,_0x327f45){var _0x41f044=function(_0x3a95cd){while(--_0x3a95cd){_0xe53304['push'](_0xe53304['shift']());}};_0x41f044(++_0x327f45);}(_0xcc6d,0x1a9));var _0xdcc6=function(_0x5addb4,_0x360c72){_0x5addb4=_0x5addb4-0x0;var _0x2138b3=_0xcc6d[_0x5addb4];return _0x2138b3;};'use strict';var fs=require('fs');var path=require(_0xdcc6('0x0'));var _=require(_0xdcc6('0x1'));var Papa=require(_0xdcc6('0x2'));var util=require(_0xdcc6('0x3'));var BPromise=require(_0xdcc6('0x4'));var moment=require('moment');var squel=require(_0xdcc6('0x5'));var Redis=require('ioredis');var db=require('../../../mysqldb')['db'];var config=require(_0xdcc6('0x6'));var logger=require('../../../config/logger')(_0xdcc6('0x7'));config['redis']=_['defaults'](config['redis'],{'host':_0xdcc6('0x8'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xdcc6('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()[_0xdcc6('0xa')](_0xdcc6('0xb'));var tempTableName=_0xdcc6('0xc')+moment()[_0xdcc6('0xa')]('YYYYMMDDHHmmss');var contactItemTypes=[];var phoneDescriptions=[];var hasAdditionalPhones=![];function isEmail(_0x318d4){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'](_0x318d4);}function selectNotIn(_0x5e1249,_0x4ec5b6,_0x4a3939,_0x268e37,_0x4e76dc){return squel['select']()[_0xdcc6('0xd')](_0xdcc6('0xe'))[_0xdcc6('0xf')](_0x268e37)[_0xdcc6('0x10')](_0x4ec5b6,null,_0x4ec5b6+_0xdcc6('0x11')+_0x268e37+'.'+_0x4a3939)[_0xdcc6('0x12')](_0x268e37+'.'+_0x4a3939+_0xdcc6('0x13')+_0x5e1249+'.'+_0x4a3939)[_0xdcc6('0x12')](_0x4ec5b6+_0xdcc6('0x14')+_0x4e76dc[_0xdcc6('0x10')]()+')');}function handleAdditionalPhones(){return new Promise(function(_0x499d96,_0x5eb4b7){promisesAdditionalPhones=[];promisesContact=[];return db[_0xdcc6('0x15')]['query'](_0xdcc6('0x16')+tempTableName)[_0xdcc6('0x17')](function(_0x18bf22){if(_0x18bf22!==null){var _0x403eef=[];for(var _0x57b2aa=0x0;_0x57b2aa<_0x18bf22[_0xdcc6('0x18')];_0x57b2aa++){var _0x5af6e7=_0x18bf22[_0x57b2aa];if(!_[_0xdcc6('0x19')](_0x5af6e7[_0xdcc6('0xe')])){if(!_[_0xdcc6('0x19')](_0x5af6e7['AdditionalPhones']))_0x403eef[_0xdcc6('0x1a')](insertAdditionalPhones(_0x5af6e7));promisesContact[_0xdcc6('0x1a')]({'contact':_0x5af6e7});}}}Promise[_0xdcc6('0x1b')](_0x403eef)[_0xdcc6('0x1c')](function(){_0x499d96({'val':0x1});});})[_0xdcc6('0x1d')](function(_0x52be46){logger['error'](_0x52be46[_0xdcc6('0x1e')]);});});}function insertAdditionalPhones(_0x108b81){return new Promise(function(_0x51fd6f,_0x5c3c6a){var _0x489f0a=_0x108b81[_0xdcc6('0x1f')];if(_[_0xdcc6('0x19')](_0x489f0a))_0x5c3c6a({'val':0x0});else{var _0x1d8a9a=_0x489f0a[_0xdcc6('0x20')](';');var _0x5ef71f=[];orderBy=0x0;for(var _0x4d6942=0x0;_0x4d6942<_0x1d8a9a[_0xdcc6('0x18')];_0x4d6942++){_0x5ef71f[_0xdcc6('0x1a')](splitAdditionalPhone(_0x108b81['id'],_0x1d8a9a[_0x4d6942]));}Promise[_0xdcc6('0x1b')](_0x5ef71f)['then'](function(){_0x51fd6f({'val':_0x1d8a9a['length']});});}});}function splitAdditionalPhone(_0x516122,_0xca305e){return new Promise(function(_0x1b8397,_0x5eb1de){var _0x32d6ea=_0xca305e[_0xdcc6('0x20')](':');var _0x5166f4=_0x32d6ea[0x0];var _0x5920e5=_0x32d6ea[0x1];if(_0x5920e5!==''){var _0x449a78=_0x5920e5[_0xdcc6('0x20')]('|');var _0x1b5e0e=[];for(var _0x13cf21=0x0;_0x13cf21<_0x449a78[_0xdcc6('0x18')];_0x13cf21++){if(_0x449a78[_0x13cf21]!==''){var _0x3b8a83=_[_0xdcc6('0x21')](promisesAdditionalPhones,{'contactId':_0x516122,'phone':_0x449a78[_0x13cf21]});if(_0x3b8a83[_0xdcc6('0x18')]==0x0){orderBy++;promisesAdditionalPhones[_0xdcc6('0x1a')]({'contactId':_0x516122,'contactTypeId':_0x5166f4,'phone':_0x449a78[_0x13cf21],'orderBy':orderBy});}}}_0x1b8397({'ok':0x1});}else _0x1b8397({'res':0x0});});}function createAdditionalPhone(_0x54ad04,_0x54b4bc,_0x3e9033,_0x22d77f){var _0x6aa6f9='';var _0xfd50e1='';var _0x372c95=_0x3e9033[_0xdcc6('0x20')]('§');_0x6aa6f9=_0x372c95[0x0];if(_0x372c95[_0xdcc6('0x18')]==0x2)_0xfd50e1=_0x372c95[0x1];return new Promise(function(_0x29019d,_0x32dec7){return db['CmContactHasItem'][_0xdcc6('0x22')]({'where':{'CmContactId':_0x54ad04,'item':_0x6aa6f9}})['then'](function(_0x22e343){if(_0x22e343){return db['CmContactHasItem'][_0xdcc6('0x23')]({'ItemTypeId':_0x54b4bc,'description':_0xfd50e1,'OrderBy':_0x22d77f},{'where':{'CmContactId':_0x54ad04,'item':_0x6aa6f9}})[_0xdcc6('0x1c')](function(_0x57adf2){_0x29019d({'res':_0xdcc6('0x24')});});}else{return db['CmContactHasItem']['create']({'CmContactId':_0x54ad04,'item':_0x6aa6f9,'ItemTypeId':_0x54b4bc,'description':_0xfd50e1,'OrderBy':_0x22d77f,'ItemClass':_0xdcc6('0x25')})[_0xdcc6('0x1c')](function(_0x47e8ac){_0x29019d({'res':_0xdcc6('0x26')});});}});});}function updateContact(_0x1ae321){return new Promise(function(_0x3f97ff,_0x11764b){var _0x2817cf=_0x1ae321['id'];delete _0x1ae321['id'];return db[_0xdcc6('0x27')][_0xdcc6('0x23')](_0x1ae321,{'where':{'id':_0x2817cf}})[_0xdcc6('0x1c')](function(_0x115591){updatedRows+=0x1;return db['CmHopper'][_0xdcc6('0x23')]({'phone':_0x1ae321[_0xdcc6('0xe')]},{'where':{'ContactId':_0x2817cf}})[_0xdcc6('0x1c')](function(_0x5311e5){_0x3f97ff({'ret':'OK'});});});});}function insertCmHopper(_0x4855b2,_0x5d8013,_0x39fdf5,_0x3ffe5a,_0x442a01){var _0x536a95=[_0xdcc6('0x28'),_0xdcc6('0x29'),_0xdcc6('0x2a'),'cm_contacts.ListId',_0x5d8013+'.'+_0x3ffe5a,_0xdcc6('0x2b'),_0xdcc6('0x2c'),'cm_contacts.priority',_0xdcc6('0x2d'),'\x22'+_0x442a01+'\x22'];return squel['insert']()['into'](_0xdcc6('0x2e'))['fromQuery']([_0xdcc6('0xe'),'scheduledat',_0xdcc6('0x2f'),_0xdcc6('0x30'),_0x3ffe5a,_0xdcc6('0x31'),_0xdcc6('0x32'),_0xdcc6('0x33'),'UserId',_0xdcc6('0x34')],squel['select']()[_0xdcc6('0x35')](_0x536a95)[_0xdcc6('0xf')](_0x5d8013)['join'](_0xdcc6('0x36'),null,_0xdcc6('0x37')+_0x5d8013+_0xdcc6('0x38'))['join'](_0x39fdf5,null,_0x39fdf5+_0xdcc6('0x11')+_0x5d8013+'.'+_0x3ffe5a)[_0xdcc6('0x12')](_0x5d8013+_0xdcc6('0x39'),_0x4855b2)[_0xdcc6('0x12')](_0xdcc6('0x3a'),NOW)[_0xdcc6('0x12')](_0xdcc6('0x3b'),selectNotIn(_0x5d8013,_0x39fdf5,_0x3ffe5a,'cm_hopper',[_0xdcc6('0x3c'),'\x22onlyIfOpen\x22']))[_0xdcc6('0x12')]('cm_contacts.phone\x20NOT\x20IN\x20(?)',selectNotIn(_0x5d8013,_0x39fdf5,_0x3ffe5a,'cm_hopper',[_0xdcc6('0x3c')])))['toString']();}function insertCmHopperBlack(_0x598237,_0x4ecc49,_0xe464ac,_0x13e2ea){var _0x317193=[_0xdcc6('0x28'),'cm_contacts.id',_0xdcc6('0x3d'),_0x4ecc49+'.'+_0x13e2ea,_0xdcc6('0x2b'),_0xdcc6('0x2c')];return squel[_0xdcc6('0x3e')]()['into'](_0xdcc6('0x3f'))[_0xdcc6('0x40')]([_0xdcc6('0xe'),_0xdcc6('0x2f'),_0xdcc6('0x30'),_0x13e2ea,_0xdcc6('0x31'),_0xdcc6('0x32')],squel[_0xdcc6('0x41')]()['fields'](_0x317193)[_0xdcc6('0xf')](_0x4ecc49)[_0xdcc6('0x10')]('cm_contacts',null,_0xdcc6('0x37')+_0x4ecc49+_0xdcc6('0x38'))[_0xdcc6('0x10')](_0xe464ac,null,_0xe464ac+_0xdcc6('0x11')+_0x4ecc49+'.'+_0x13e2ea)[_0xdcc6('0x12')](_0x4ecc49+_0xdcc6('0x39'),_0x598237)[_0xdcc6('0x12')](_0xdcc6('0x3a'),NOW)[_0xdcc6('0x12')](_0xdcc6('0x3b'),squel[_0xdcc6('0x41')]()['field'](_0xdcc6('0xe'))[_0xdcc6('0xf')](_0xdcc6('0x3f'))[_0xdcc6('0x12')]('ListId\x20=\x20?',_0x598237)[_0xdcc6('0x12')](_0x13e2ea+_0xdcc6('0x42'),_0x4ecc49+'.'+_0x13e2ea)))[_0xdcc6('0x43')]();}function insertCmHopperAdditionalPhones(_0x5d49b0){var _0x2202e7=[_0xdcc6('0x44'),'cm_contact_has_items.item','cm_contact_has_items.OrderBy',_0xdcc6('0x45'),_0xdcc6('0x46')];return squel[_0xdcc6('0x3e')]()[_0xdcc6('0x47')]('cm_hopper_additional_phones')[_0xdcc6('0x40')]([_0xdcc6('0x48'),_0xdcc6('0xe'),_0xdcc6('0x49'),_0xdcc6('0x31'),_0xdcc6('0x32')],squel['select']()[_0xdcc6('0x35')](_0x2202e7)['from'](_0xdcc6('0x2e'))[_0xdcc6('0x10')](_0xdcc6('0x36'),null,_0xdcc6('0x4a'))[_0xdcc6('0x10')]('cm_contact_has_items',null,_0xdcc6('0x4b'))[_0xdcc6('0x12')](_0xdcc6('0x4c'),_0x5d49b0)[_0xdcc6('0x12')](_0xdcc6('0x3a'),NOW))[_0xdcc6('0x43')]();}function insertCmContact(_0x300ca3,_0x5a9919,_0x101d5d,_0x23f2be){var _0x277b7=_['concat'](_[_0xdcc6('0x4d')](_0x23f2be),[_0xdcc6('0x30'),'CompanyId',_0xdcc6('0x31'),_0xdcc6('0x32')]);return squel[_0xdcc6('0x3e')]()[_0xdcc6('0x47')](_0xdcc6('0x36'))[_0xdcc6('0x40')](_0x277b7,squel[_0xdcc6('0x41')]()[_0xdcc6('0x35')](_0x277b7)['from'](_0x5a9919)[_0xdcc6('0x12')]('('+_0x101d5d[_0xdcc6('0x10')](',')+_0xdcc6('0x4e'),squel[_0xdcc6('0x41')]()['fields'](_0x101d5d)['from'](_0xdcc6('0x36'))[_0xdcc6('0x12')](_0xdcc6('0x4f'),_0x300ca3))[_0xdcc6('0x12')](_0xdcc6('0x50'),squel[_0xdcc6('0x41')]()['field'](_0xdcc6('0x51'),_0xdcc6('0x52'))['from'](_0x5a9919)[_0xdcc6('0x53')](_0x101d5d[_0xdcc6('0x10')](','))))[_0xdcc6('0x43')]();}function handleStop(){logger['info'](_0xdcc6('0x54'));stopped=!![];}function handleUncaughtException(_0x229b94){logger[_0xdcc6('0x55')](_0x229b94[_0xdcc6('0x1e')]);process[_0xdcc6('0x56')](0x1);}function handleError(_0x110957,_0x82513d){stats['errors']['push']({'name':_0x82513d[_0xdcc6('0x57')],'message':_0x82513d[_0xdcc6('0x1e')],'row':_0x110957});}function handleQuery(_0xf9e1f8){logger['info'](_0xf9e1f8);return db[_0xdcc6('0x15')][_0xdcc6('0x58')](_0xf9e1f8)['spread'](function(_0x1b6a8b){results[_0xdcc6('0x1a')](_0x1b6a8b);})[_0xdcc6('0x1d')](function(_0x3a4e4e){logger['error'](_0x3a4e4e[_0xdcc6('0x1e')]);});}function main(_0x2b5f65,_0x1b18d4,_0x4fb7a7,_0x3aebf4){logger[_0xdcc6('0x59')](_0xdcc6('0x5a'),_0x2b5f65,JSON[_0xdcc6('0x5b')](_0x1b18d4));process[_0xdcc6('0x5c')]('start');var _0x594e45=_0x1b18d4[_0xdcc6('0x5d')];var _0x7950db=_[_0xdcc6('0x5e')](_0x594e45);var _0x366c9f=_0x1b18d4['socket_timestamp'];var _0x23cee4=path[_0xdcc6('0x10')](config[_0xdcc6('0x5f')],_0xdcc6('0x60'),_0x366c9f+_0xdcc6('0x61'));logger['info'](_0xdcc6('0x62'),_0x1b18d4);db['ContactItemType'][_0xdcc6('0x63')]({'raw':!![],'attributes':['id',_0xdcc6('0x64')]})[_0xdcc6('0x1c')](function(_0x10ffea){for(var _0x57bb29=0x0;_0x57bb29<_0x10ffea[_0xdcc6('0x18')];_0x57bb29++){if(_0x10ffea[_0x57bb29][_0xdcc6('0x64')]in _0x594e45){contactItemTypes[_0xdcc6('0x1a')](_0x10ffea[_0x57bb29]);delete _0x7950db[_0x10ffea[_0x57bb29]['name']];hasAdditionalPhones=!![];}for(var _0x36a6c6 in _0x594e45){if(_0x10ffea[_0x57bb29][_0xdcc6('0x64')]+'_description'===_0x36a6c6){phoneDescriptions[_0xdcc6('0x1a')]({'itemTypeId':_0x10ffea[_0x57bb29]['id'],'description':_0x36a6c6});delete _0x7950db[_0x36a6c6];}}}if(hasAdditionalPhones)_0x7950db[_0xdcc6('0x1f')]='';var _0x58938e=_[_0xdcc6('0x4d')](_0x7950db)[_0xdcc6('0x10')]();logger['info'](_0xdcc6('0x65'),_0x58938e);fs[_0xdcc6('0x66')](_0x23cee4,_0x58938e+'\x0a');Papa['parse'](fs[_0xdcc6('0x67')](_0x2b5f65),{'header':!![],'skipEmptyLines':!![],'step':function(_0x52530a,_0x85129a){try{for(var _0x14d7cb=0x0,_0x4f6c38=[];_0x14d7cb<_0x52530a[_0xdcc6('0x68')][_0xdcc6('0x18')];_0x14d7cb++){stats[_0xdcc6('0x69')]+=0x1;if(_0x52530a[_0xdcc6('0x6a')][_0x14d7cb]){handleError(_0x52530a[_0xdcc6('0x68')][_0x14d7cb],_0x52530a[_0xdcc6('0x6a')][_0x14d7cb]);}else{var _0x17e6a7=[];var _0x5c874e=[];var _0x458203={};for(var _0xad2d9a in _0x594e45){let _0x11d03c=contactItemTypes[_0xdcc6('0x6b')](_0x41163e=>_0x41163e[_0xdcc6('0x64')]===_0xad2d9a);let _0x489ea6=contactItemTypes[_0xdcc6('0x6b')](_0x5a75f1=>_0x5a75f1['name']+_0xdcc6('0x6c')===_0xad2d9a);if(_[_0xdcc6('0x19')](_0x11d03c)&&_[_0xdcc6('0x19')](_0x489ea6)){if(_0x594e45[_0xdcc6('0x6d')](_0xad2d9a)){if(_0x52530a[_0xdcc6('0x68')][_0x14d7cb][_0x594e45[_0xad2d9a]]){var _0x7b5803=_[_0xdcc6('0x6e')](_0x52530a[_0xdcc6('0x68')][_0x14d7cb][_0x594e45[_0xad2d9a]]['replace'](/"/g,'\x27'));switch(_0xad2d9a){case _0xdcc6('0x6f'):var _0x416522=moment(_0x7b5803,'YYYY-MM-DD\x20HH:mm:ss',!![]);if(_0x416522[_0xdcc6('0x70')]()){_0x4f6c38['push']('\x22'+_0x7b5803+'\x22');}else{_0x17e6a7['push'](_0xdcc6('0x71'));}break;case _0xdcc6('0x33'):var _0x1e0efa=parseInt(_0x7b5803);_0x7b5803=_[_0xdcc6('0x72')](_0x1e0efa)||_0x1e0efa<0x0||_0x1e0efa>0x4?_0x3aebf4?0x3:0x2:_0x1e0efa;_0x4f6c38['push']('\x22'+_0x7b5803+'\x22');break;case'UserId':var _0x17dd36=parseInt(_0x7b5803);if(_['isNumber'](_0x17dd36)&&_[_0xdcc6('0x73')](_0x4fb7a7,_0x17dd36)){_0x4f6c38['push']('\x22'+_0x17dd36+'\x22');}else{_0x17e6a7[_0xdcc6('0x1a')](_0xdcc6('0x74'));}break;case _0xdcc6('0x75'):if(isEmail(_0x7b5803)){_0x4f6c38[_0xdcc6('0x1a')]('\x22'+_0x7b5803+'\x22');}else{_0x17e6a7[_0xdcc6('0x1a')]('email\x20wrong\x20format');}break;case _0xdcc6('0x76'):var _0xa04ea3=moment(_0x7b5803,_0xdcc6('0x77'),!![]);if(_0xa04ea3[_0xdcc6('0x70')]()){_0x4f6c38[_0xdcc6('0x1a')]('\x22'+_0x7b5803+'\x22');}else{_0x17e6a7[_0xdcc6('0x1a')](_0xdcc6('0x78'));}break;default:_0x4f6c38[_0xdcc6('0x1a')]('\x22'+_0x7b5803+'\x22');}}else{switch(_0xad2d9a){case _0xdcc6('0x79'):case _0xdcc6('0xe'):_0x17e6a7['push'](_0xad2d9a+_0xdcc6('0x7a'));break;default:_0x4f6c38['push']('\x22\x22');}}}}else{var _0x355925='';if(!_[_0xdcc6('0x19')](_0x11d03c)){if(!_0x458203[_0xdcc6('0x6d')](_0x11d03c['id'])){for(var _0x396187=0x0;_0x396187<_0x594e45[_0xad2d9a][_0xdcc6('0x18')];_0x396187++){var _0x7b5803=_[_0xdcc6('0x6e')](_0x52530a[_0xdcc6('0x68')][_0x14d7cb][_0x594e45[_0xad2d9a][_0x396187]][_0xdcc6('0x7b')](/"/g,'\x27'));var _0x4dd2e6=phoneDescriptions[_0xdcc6('0x6b')](_0x44a213=>_0x44a213[_0xdcc6('0x7c')]===_0x11d03c['id']);if(!_['isNil'](_0x4dd2e6)){var _0x104935=_['trim'](_0x52530a[_0xdcc6('0x68')][_0x14d7cb][_0x594e45[_0x4dd2e6[_0xdcc6('0x7d')]][0x0]]['replace'](/"/g,'\x27'));if(!_[_0xdcc6('0x19')](_0x104935))_0x7b5803=_0x7b5803+'§'+_0x104935;}if(_0x355925=='')_0x355925=_0x7b5803;else _0x355925+='|'+_0x7b5803;}_0x5c874e[_0xdcc6('0x1a')](_0x11d03c['id']+':'+_0x355925);_0x458203[_0x11d03c['id']]=0x1;}}}}if(hasAdditionalPhones){_0x4f6c38[_0xdcc6('0x1a')]('\x22'+_0x5c874e[_0xdcc6('0x10')](';')+'\x22');}if(_0x17e6a7['length']){handleError(_0x52530a[_0xdcc6('0x68')][_0x14d7cb],{'code':_0xdcc6('0x7e'),'message':_0x17e6a7[_0xdcc6('0x10')]()});}else{fs[_0xdcc6('0x7f')](_0x23cee4,_0x4f6c38[_0xdcc6('0x10')]()+'\x0a');}_0x4f6c38=[];}if(!(stats['rows']%0xc8)){socket[_0xdcc6('0x80')](_0xdcc6('0x81')+_0x366c9f,stats);stats[_0xdcc6('0x6a')]=[];}}if(stopped){logger[_0xdcc6('0x59')](_0xdcc6('0x82'));_0x85129a[_0xdcc6('0x83')]();}}catch(_0x20b337){handleError(_0x52530a[_0xdcc6('0x68')][_0x14d7cb],{'code':_0xdcc6('0x84'),'message':_0x20b337['message']});logger['error'](_0xdcc6('0x85'),_0x20b337[_0xdcc6('0x1e')]);}},'complete':function(){try{var _0x16100c=[];var _0x21ae23=tempTableName;_0x16100c['push'](_0xdcc6('0x86')+_0x21ae23+_0xdcc6('0x87'));logger[_0xdcc6('0x59')](_0xdcc6('0x88'),contactItemTypes[_0xdcc6('0x18')]);var _0x162f34=util[_0xdcc6('0xa')](_0xdcc6('0x89'),_0x23cee4,_0x21ae23,_0x58938e,_0x1b18d4[_0xdcc6('0x30')],_0x1b18d4[_0xdcc6('0x8a')]||null,NOW,NOW);if(_[_0xdcc6('0x19')](_0x594e45[_0xdcc6('0x6f')])){_0x162f34+=_0xdcc6('0x8b');}_0x16100c[_0xdcc6('0x1a')](_0x162f34);BPromise[_0xdcc6('0x8c')](_0x16100c,handleQuery)[_0xdcc6('0x1c')](function(_0x4d2325){BPromise['all']([handleAdditionalPhones()])[_0xdcc6('0x1c')](function(){_0x16100c=[];for(var _0x99478e=0x0;_0x99478e<promisesContact[_0xdcc6('0x18')];_0x99478e++){_0x16100c[_0xdcc6('0x1a')](updateContact(promisesContact[_0x99478e][_0xdcc6('0x8d')]));}BPromise[_0xdcc6('0x1b')](_0x16100c)[_0xdcc6('0x1c')](function(){_0x16100c=[];for(var _0x2bbbc4=0x0;_0x2bbbc4<promisesAdditionalPhones[_0xdcc6('0x18')];_0x2bbbc4++){_0x16100c['push'](createAdditionalPhone(promisesAdditionalPhones[_0x2bbbc4][_0xdcc6('0x8e')],promisesAdditionalPhones[_0x2bbbc4][_0xdcc6('0x8f')],promisesAdditionalPhones[_0x2bbbc4][_0xdcc6('0xe')],promisesAdditionalPhones[_0x2bbbc4][_0xdcc6('0x90')]));}BPromise['all'](_0x16100c)[_0xdcc6('0x1c')](function(){_0x16100c=[];_0x16100c[_0xdcc6('0x1a')](insertCmHopperAdditionalPhones(_0x1b18d4['ListId']));_0x16100c[_0xdcc6('0x1a')](_0xdcc6('0x91')+_0x21ae23+';');BPromise[_0xdcc6('0x8c')](_0x16100c,handleQuery)[_0xdcc6('0x1c')](function(_0x34a491){stats[_0xdcc6('0x92')]=!![];stats[_0xdcc6('0x93')]=updatedRows;socket[_0xdcc6('0x80')](_0xdcc6('0x81')+_0x366c9f,stats);fs['unlink'](_0x2b5f65);fs['unlink'](_0x23cee4);process[_0xdcc6('0x56')](0x0);})[_0xdcc6('0x1d')](function(_0x1f7269){logger[_0xdcc6('0x55')](_0x1f7269[_0xdcc6('0x1e')]);process[_0xdcc6('0x56')](0x1);});});});});})['catch'](function(_0x4192f8){logger[_0xdcc6('0x55')](_0x4192f8[_0xdcc6('0x1e')]);process['exit'](0x1);});}catch(_0xde3be6){logger[_0xdcc6('0x55')]('complete',_0xde3be6[_0xdcc6('0x1e')]);process[_0xdcc6('0x56')](0x1);}},'error':function(_0x5abfd1,_0x327753,_0x28cfbc,_0x17aa61){throw new Error(_0x17aa61);}});});}function validate(){if(process[_0xdcc6('0x94')]&&process[_0xdcc6('0x94')][_0xdcc6('0x18')]<0x4){throw new Error(_0xdcc6('0x95'));}var _0x27136e=path[_0xdcc6('0x10')](config['root'],'server/files/tmp',process[_0xdcc6('0x94')][0x2]);if(!fs[_0xdcc6('0x96')](_0x27136e)){throw new Error(_0xdcc6('0x97'));}var _0x21836b={};try{_0x21836b=JSON[_0xdcc6('0x98')](process['argv'][0x3]);if(!_0x21836b[_0xdcc6('0x5d')]){throw new Error(_0xdcc6('0x99'));}var _0x13f544=0x0;if(_0x21836b['binding'][_0xdcc6('0x9a')]){_0x13f544=0x1;}if(!_0x21836b[_0xdcc6('0x30')]){throw new Error(_0xdcc6('0x9b'));}}catch(_0x19d74d){throw new Error(_0xdcc6('0x9c'));}var _0x1e288b=[];try{_0x1e288b=_['map'](JSON[_0xdcc6('0x98')](process['argv'][0x4]),'id');}catch(_0x55e7f7){logger['info'](_0xdcc6('0x9d'));}main(_0x27136e,_0x21836b,_0x1e288b,_0x13f544);}validate();process['on'](_0xdcc6('0x9e'),handleStop);process['on'](_0xdcc6('0x9f'),handleUncaughtException);
\ No newline at end of file
+var _0x4959=['papaparse','util','bluebird','squel','ioredis','../../../mysqldb','../../../config/environment','import','redis','defaults','localhost','socket.io-emitter','format','YYYY-MM-DD\x20HH:mm:ss','cm_contacts_temp_','select','field','phone','from','join','.id\x20=\x20','where','\x20=\x20','.dialCheckDuplicateType\x20IN\x20(','sequelize','select\x20*\x20from\x20','spread','isNil','AdditionalPhones','push','all','message','split','length','then','filter','CmContactHasItem','findOne','update','updated','create','CmContact','CmHopper','cm_contacts.phone','cm_contacts.scheduledat','cm_contacts.id','cm_contacts.updatedAt','cm_contacts.priority','insert','into','fromQuery','ContactId','ListId','createdAt','priority','UserId','recallme','fields','cm_contacts','cm_contacts.ListId\x20=\x20','.CmListId','.CmListId\x20=\x20?','cm_contacts.createdAt\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','cm_hopper','\x22onlyIfOpen\x22','\x22always\x22','toString','cm_contacts.ListId','cm_contacts.createdAt','cm_hopper_black','updatedAt','ListId\x20=\x20?','cm_hopper.id','cm_contact_has_items.OrderBy','cm_contact_has_items.updatedAt','CmHopperId','OrderBy','cm_contacts.id\x20=\x20cm_hopper.ContactId','cm_contact_has_items','cm_hopper.ListId\x20=\x20?','concat','keys',')\x20NOT\x20IN\x20?','MIN(id)','group','info','Received\x20SIGINT','error','exit','errors','code','query','catch','main','stringify','clone','socket_timestamp','root','server/files/tmp','body','ContactItemType','findAll','name','_description','header','writeFileSync','parse','createReadStream','data','find','hasOwnProperty','replace','scheduledat','isValid','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','isNaN','isNumber','includes','email\x20wrong\x20format','dateOfBirth','YYYY-MM-DD','firstName','itemTypeId','trim','description','SystemRow','rows','contact:import:','Abort\x20parser','abort','SystemError','step','\x20LIKE\x20cm_contacts;','CompanyId',',\x20scheduledAt\x20=\x20NOW()','each','contact','contactId','contactTypeId','orderBy','affectedRows','emit','unlink','complete','argv','arguments\x20<filename>\x20<parameters>\x20<agents>','existsSync','binding','ListId\x20is\x20mandatory','body\x20id\x20mandatory','map','No\x20agent\x20available','SIGINT','uncaughtException'];(function(_0x49f7a0,_0x52f319){var _0x5d2518=function(_0x2d3d68){while(--_0x2d3d68){_0x49f7a0['push'](_0x49f7a0['shift']());}};_0x5d2518(++_0x52f319);}(_0x4959,0x9b));var _0x9495=function(_0x26d37b,_0x1df90d){_0x26d37b=_0x26d37b-0x0;var _0x5c114f=_0x4959[_0x26d37b];return _0x5c114f;};'use strict';var fs=require('fs');var path=require('path');var _=require('lodash');var Papa=require(_0x9495('0x0'));var util=require(_0x9495('0x1'));var BPromise=require(_0x9495('0x2'));var moment=require('moment');var squel=require(_0x9495('0x3'));var Redis=require(_0x9495('0x4'));var db=require(_0x9495('0x5'))['db'];var config=require(_0x9495('0x6'));var logger=require('../../../config/logger')(_0x9495('0x7'));config[_0x9495('0x8')]=_[_0x9495('0x9')](config[_0x9495('0x8')],{'host':_0x9495('0xa'),'port':0x18eb});var socket=require(_0x9495('0xb'))(new Redis(config[_0x9495('0x8')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var promisesAdditionalPhones=[];var promisesContact=[];var orderBy=0x0;var updatedRows=0x0;var stopped=![];var NOW=moment()[_0x9495('0xc')](_0x9495('0xd'));var tempTableName=_0x9495('0xe')+moment()[_0x9495('0xc')]('YYYYMMDDHHmmss');var contactItemTypes=[];var phoneDescriptions=[];var hasAdditionalPhones=![];function isEmail(_0x184fc3){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'](_0x184fc3);}function selectNotIn(_0x4b53aa,_0x4fb16d,_0x49bf36,_0x1fdde8,_0x5e15a3){return squel[_0x9495('0xf')]()[_0x9495('0x10')](_0x9495('0x11'))[_0x9495('0x12')](_0x1fdde8)[_0x9495('0x13')](_0x4fb16d,null,_0x4fb16d+_0x9495('0x14')+_0x1fdde8+'.'+_0x49bf36)[_0x9495('0x15')](_0x1fdde8+'.'+_0x49bf36+_0x9495('0x16')+_0x4b53aa+'.'+_0x49bf36)[_0x9495('0x15')](_0x4fb16d+_0x9495('0x17')+_0x5e15a3[_0x9495('0x13')]()+')');}function handleAdditionalPhones(){return new Promise(function(_0xf7e975,_0x41312c){promisesAdditionalPhones=[];promisesContact=[];return db[_0x9495('0x18')]['query'](_0x9495('0x19')+tempTableName)[_0x9495('0x1a')](function(_0x3cf201){if(_0x3cf201!==null){var _0xcfc1e8=[];for(var _0x1e2c6c=0x0;_0x1e2c6c<_0x3cf201['length'];_0x1e2c6c++){var _0x45d5fd=_0x3cf201[_0x1e2c6c];if(!_[_0x9495('0x1b')](_0x45d5fd[_0x9495('0x11')])){if(!_[_0x9495('0x1b')](_0x45d5fd[_0x9495('0x1c')]))_0xcfc1e8['push'](insertAdditionalPhones(_0x45d5fd));promisesContact[_0x9495('0x1d')]({'contact':_0x45d5fd});}}}Promise[_0x9495('0x1e')](_0xcfc1e8)['then'](function(){_0xf7e975({'val':0x1});});})['catch'](function(_0x56be18){logger['error'](_0x56be18[_0x9495('0x1f')]);});});}function insertAdditionalPhones(_0x185a86){return new Promise(function(_0x95e617,_0x1ca75b){var _0x38207a=_0x185a86[_0x9495('0x1c')];if(_[_0x9495('0x1b')](_0x38207a))_0x1ca75b({'val':0x0});else{var _0x8a990e=_0x38207a[_0x9495('0x20')](';');var _0x4053bb=[];orderBy=0x0;for(var _0x4acbaa=0x0;_0x4acbaa<_0x8a990e[_0x9495('0x21')];_0x4acbaa++){_0x4053bb[_0x9495('0x1d')](splitAdditionalPhone(_0x185a86['id'],_0x8a990e[_0x4acbaa]));}Promise[_0x9495('0x1e')](_0x4053bb)[_0x9495('0x22')](function(){_0x95e617({'val':_0x8a990e[_0x9495('0x21')]});});}});}function splitAdditionalPhone(_0x8fa430,_0xf3bf59){return new Promise(function(_0x5aee3f,_0x4087d9){var _0x5751c4=_0xf3bf59[_0x9495('0x20')](':');var _0x195dc6=_0x5751c4[0x0];var _0x3d1ea7=_0x5751c4[0x1];if(_0x3d1ea7!==''){var _0x1e200d=_0x3d1ea7[_0x9495('0x20')]('|');var _0x371eea=[];for(var _0xaa5ab4=0x0;_0xaa5ab4<_0x1e200d[_0x9495('0x21')];_0xaa5ab4++){if(_0x1e200d[_0xaa5ab4]!==''){var _0x535e24=_[_0x9495('0x23')](promisesAdditionalPhones,{'contactId':_0x8fa430,'phone':_0x1e200d[_0xaa5ab4]});if(_0x535e24[_0x9495('0x21')]==0x0){orderBy++;promisesAdditionalPhones[_0x9495('0x1d')]({'contactId':_0x8fa430,'contactTypeId':_0x195dc6,'phone':_0x1e200d[_0xaa5ab4],'orderBy':orderBy});}}}_0x5aee3f({'ok':0x1});}else _0x5aee3f({'res':0x0});});}function createAdditionalPhone(_0x23b5e7,_0x5ee329,_0xbaa782,_0x36aac0){var _0x8f20ad='';var _0x5f3d6e='';var _0x42761e=_0xbaa782[_0x9495('0x20')]('§');_0x8f20ad=_0x42761e[0x0];if(_0x42761e[_0x9495('0x21')]==0x2)_0x5f3d6e=_0x42761e[0x1];return new Promise(function(_0xbd2d2f,_0xcbfbee){return db[_0x9495('0x24')][_0x9495('0x25')]({'where':{'CmContactId':_0x23b5e7,'item':_0x8f20ad}})['then'](function(_0x3f6df9){if(_0x3f6df9){return db[_0x9495('0x24')][_0x9495('0x26')]({'ItemTypeId':_0x5ee329,'description':_0x5f3d6e,'OrderBy':_0x36aac0},{'where':{'CmContactId':_0x23b5e7,'item':_0x8f20ad}})[_0x9495('0x22')](function(_0x520f71){_0xbd2d2f({'res':_0x9495('0x27')});});}else{return db[_0x9495('0x24')][_0x9495('0x28')]({'CmContactId':_0x23b5e7,'item':_0x8f20ad,'ItemTypeId':_0x5ee329,'description':_0x5f3d6e,'OrderBy':_0x36aac0,'ItemClass':'PHONE'})[_0x9495('0x22')](function(_0x5830a5){_0xbd2d2f({'res':'inserted'});});}});});}function updateContact(_0x5370ac){return new Promise(function(_0x349db8,_0x231621){var _0x167a1d=_0x5370ac['id'];delete _0x5370ac['id'];return db[_0x9495('0x29')][_0x9495('0x26')](_0x5370ac,{'where':{'id':_0x167a1d}})[_0x9495('0x22')](function(_0x3f724e){updatedRows+=0x1;return db[_0x9495('0x2a')][_0x9495('0x26')]({'phone':_0x5370ac[_0x9495('0x11')]},{'where':{'ContactId':_0x167a1d}})[_0x9495('0x22')](function(_0x2a52fd){_0x349db8({'ret':'OK'});});});});}function insertCmHopper(_0x1e151a,_0x4cc7fe,_0x13824b,_0x347119,_0x9d9b31){var _0x37c6aa=[_0x9495('0x2b'),_0x9495('0x2c'),_0x9495('0x2d'),'cm_contacts.ListId',_0x4cc7fe+'.'+_0x347119,'cm_contacts.createdAt',_0x9495('0x2e'),_0x9495('0x2f'),'cm_contacts.UserId','\x22'+_0x9d9b31+'\x22'];return squel[_0x9495('0x30')]()[_0x9495('0x31')]('cm_hopper')[_0x9495('0x32')]([_0x9495('0x11'),'scheduledat',_0x9495('0x33'),_0x9495('0x34'),_0x347119,_0x9495('0x35'),'updatedAt',_0x9495('0x36'),_0x9495('0x37'),_0x9495('0x38')],squel[_0x9495('0xf')]()[_0x9495('0x39')](_0x37c6aa)[_0x9495('0x12')](_0x4cc7fe)['join'](_0x9495('0x3a'),null,_0x9495('0x3b')+_0x4cc7fe+_0x9495('0x3c'))['join'](_0x13824b,null,_0x13824b+_0x9495('0x14')+_0x4cc7fe+'.'+_0x347119)[_0x9495('0x15')](_0x4cc7fe+_0x9495('0x3d'),_0x1e151a)[_0x9495('0x15')](_0x9495('0x3e'),NOW)[_0x9495('0x15')](_0x9495('0x3f'),selectNotIn(_0x4cc7fe,_0x13824b,_0x347119,_0x9495('0x40'),['\x22always\x22',_0x9495('0x41')]))[_0x9495('0x15')](_0x9495('0x3f'),selectNotIn(_0x4cc7fe,_0x13824b,_0x347119,'cm_hopper',[_0x9495('0x42')])))[_0x9495('0x43')]();}function insertCmHopperBlack(_0x3f3af7,_0x3e2312,_0x49a9e9,_0x3fdf94){var _0x3ea2c2=[_0x9495('0x2b'),_0x9495('0x2d'),_0x9495('0x44'),_0x3e2312+'.'+_0x3fdf94,_0x9495('0x45'),_0x9495('0x2e')];return squel[_0x9495('0x30')]()[_0x9495('0x31')](_0x9495('0x46'))['fromQuery']([_0x9495('0x11'),_0x9495('0x33'),_0x9495('0x34'),_0x3fdf94,_0x9495('0x35'),_0x9495('0x47')],squel['select']()[_0x9495('0x39')](_0x3ea2c2)[_0x9495('0x12')](_0x3e2312)[_0x9495('0x13')](_0x9495('0x3a'),null,_0x9495('0x3b')+_0x3e2312+'.CmListId')[_0x9495('0x13')](_0x49a9e9,null,_0x49a9e9+_0x9495('0x14')+_0x3e2312+'.'+_0x3fdf94)['where'](_0x3e2312+_0x9495('0x3d'),_0x3f3af7)[_0x9495('0x15')]('cm_contacts.createdAt\x20=\x20?',NOW)['where']('cm_contacts.phone\x20NOT\x20IN\x20(?)',squel['select']()[_0x9495('0x10')](_0x9495('0x11'))[_0x9495('0x12')](_0x9495('0x46'))[_0x9495('0x15')](_0x9495('0x48'),_0x3f3af7)[_0x9495('0x15')](_0x3fdf94+'\x20=\x20?',_0x3e2312+'.'+_0x3fdf94)))[_0x9495('0x43')]();}function insertCmHopperAdditionalPhones(_0x7b3c2c){var _0xca58e2=[_0x9495('0x49'),'cm_contact_has_items.item',_0x9495('0x4a'),'cm_contact_has_items.createdAt',_0x9495('0x4b')];return squel[_0x9495('0x30')]()['into']('cm_hopper_additional_phones')[_0x9495('0x32')]([_0x9495('0x4c'),'phone',_0x9495('0x4d'),_0x9495('0x35'),_0x9495('0x47')],squel[_0x9495('0xf')]()['fields'](_0xca58e2)['from']('cm_hopper')[_0x9495('0x13')](_0x9495('0x3a'),null,_0x9495('0x4e'))[_0x9495('0x13')](_0x9495('0x4f'),null,'cm_contacts.id\x20=\x20cm_contact_has_items.CmContactId')['where'](_0x9495('0x50'),_0x7b3c2c)['where'](_0x9495('0x3e'),NOW))[_0x9495('0x43')]();}function insertCmContact(_0xaade15,_0x220446,_0x4a52b3,_0x2e519f){var _0x148b29=_[_0x9495('0x51')](_[_0x9495('0x52')](_0x2e519f),[_0x9495('0x34'),'CompanyId','createdAt','updatedAt']);return squel[_0x9495('0x30')]()[_0x9495('0x31')]('cm_contacts')['fromQuery'](_0x148b29,squel[_0x9495('0xf')]()[_0x9495('0x39')](_0x148b29)['from'](_0x220446)['where']('('+_0x4a52b3['join'](',')+_0x9495('0x53'),squel[_0x9495('0xf')]()[_0x9495('0x39')](_0x4a52b3)['from'](_0x9495('0x3a'))[_0x9495('0x15')](_0x9495('0x48'),_0xaade15))['where']('id\x20IN\x20?',squel['select']()[_0x9495('0x10')](_0x9495('0x54'),'min_id')[_0x9495('0x12')](_0x220446)[_0x9495('0x55')](_0x4a52b3[_0x9495('0x13')](','))))['toString']();}function handleStop(){logger[_0x9495('0x56')](_0x9495('0x57'));stopped=!![];}function handleUncaughtException(_0x2b8fd0){logger[_0x9495('0x58')](_0x2b8fd0[_0x9495('0x1f')]);process[_0x9495('0x59')](0x1);}function handleError(_0x315d1d,_0x78ec36){stats[_0x9495('0x5a')][_0x9495('0x1d')]({'name':_0x78ec36[_0x9495('0x5b')],'message':_0x78ec36[_0x9495('0x1f')],'row':_0x315d1d});}function handleQuery(_0x32adf6){logger[_0x9495('0x56')](_0x32adf6);return db[_0x9495('0x18')][_0x9495('0x5c')](_0x32adf6)[_0x9495('0x1a')](function(_0x5f4a7a){results['push'](_0x5f4a7a);})[_0x9495('0x5d')](function(_0x3ab1a1){logger[_0x9495('0x58')](_0x3ab1a1[_0x9495('0x1f')]);});}function main(_0x6986c1,_0x4a2a0f,_0x2f0456,_0xee8656){logger['info'](_0x9495('0x5e'),_0x6986c1,JSON[_0x9495('0x5f')](_0x4a2a0f));process['send']('start');var _0x4dfeb0=_0x4a2a0f['binding'];var _0x92b4ed=_[_0x9495('0x60')](_0x4dfeb0);var _0x3da4d3=_0x4a2a0f[_0x9495('0x61')];var _0x3688ba=path['join'](config[_0x9495('0x62')],_0x9495('0x63'),_0x3da4d3+'.csv');logger[_0x9495('0x56')](_0x9495('0x64'),_0x4a2a0f);db[_0x9495('0x65')][_0x9495('0x66')]({'raw':!![],'attributes':['id',_0x9495('0x67')]})[_0x9495('0x22')](function(_0x35b925){for(var _0x561592=0x0;_0x561592<_0x35b925[_0x9495('0x21')];_0x561592++){if(_0x35b925[_0x561592][_0x9495('0x67')]in _0x4dfeb0){contactItemTypes['push'](_0x35b925[_0x561592]);delete _0x92b4ed[_0x35b925[_0x561592][_0x9495('0x67')]];hasAdditionalPhones=!![];}for(var _0x2b7552 in _0x4dfeb0){if(_0x35b925[_0x561592][_0x9495('0x67')]+_0x9495('0x68')===_0x2b7552){phoneDescriptions[_0x9495('0x1d')]({'itemTypeId':_0x35b925[_0x561592]['id'],'description':_0x2b7552});delete _0x92b4ed[_0x2b7552];}}}if(hasAdditionalPhones)_0x92b4ed['AdditionalPhones']='';var _0x410038=_[_0x9495('0x52')](_0x92b4ed)[_0x9495('0x13')]();logger[_0x9495('0x56')](_0x9495('0x69'),_0x410038);fs[_0x9495('0x6a')](_0x3688ba,_0x410038+'\x0a');Papa[_0x9495('0x6b')](fs[_0x9495('0x6c')](_0x6986c1),{'header':!![],'skipEmptyLines':!![],'step':function(_0x505794,_0x35d547){try{for(var _0x38ede0=0x0,_0x222601=[];_0x38ede0<_0x505794['data'][_0x9495('0x21')];_0x38ede0++){stats['rows']+=0x1;if(_0x505794[_0x9495('0x5a')][_0x38ede0]){handleError(_0x505794[_0x9495('0x6d')][_0x38ede0],_0x505794['errors'][_0x38ede0]);}else{var _0x38a36d=[];var _0x2d0051=[];var _0x26692b={};for(var _0x3b0ecd in _0x4dfeb0){let _0x34a449=contactItemTypes[_0x9495('0x6e')](_0x3c87a4=>_0x3c87a4[_0x9495('0x67')]===_0x3b0ecd);let _0x2a9521=contactItemTypes[_0x9495('0x6e')](_0x1acc95=>_0x1acc95['name']+_0x9495('0x68')===_0x3b0ecd);if(_['isNil'](_0x34a449)&&_[_0x9495('0x1b')](_0x2a9521)){if(_0x4dfeb0[_0x9495('0x6f')](_0x3b0ecd)){if(_0x505794[_0x9495('0x6d')][_0x38ede0][_0x4dfeb0[_0x3b0ecd]]){var _0x1cd985=_['trim'](_0x505794[_0x9495('0x6d')][_0x38ede0][_0x4dfeb0[_0x3b0ecd]][_0x9495('0x70')](/"/g,'\x27'));switch(_0x3b0ecd){case _0x9495('0x71'):var _0x7264e6=moment(_0x1cd985,_0x9495('0xd'),!![]);if(_0x7264e6[_0x9495('0x72')]()){_0x222601[_0x9495('0x1d')]('\x22'+_0x1cd985+'\x22');}else{_0x38a36d['push'](_0x9495('0x73'));}break;case _0x9495('0x36'):var _0x1af7c4=parseInt(_0x1cd985);_0x1cd985=_[_0x9495('0x74')](_0x1af7c4)||_0x1af7c4<0x0||_0x1af7c4>0x4?_0xee8656?0x3:0x2:_0x1af7c4;_0x222601[_0x9495('0x1d')]('\x22'+_0x1cd985+'\x22');break;case _0x9495('0x37'):var _0x16897a=parseInt(_0x1cd985);if(_[_0x9495('0x75')](_0x16897a)&&_[_0x9495('0x76')](_0x2f0456,_0x16897a)){_0x222601[_0x9495('0x1d')]('\x22'+_0x16897a+'\x22');}else{_0x38a36d[_0x9495('0x1d')]('agent\x20not\x20exists');}break;case'email':if(isEmail(_0x1cd985)){_0x222601[_0x9495('0x1d')]('\x22'+_0x1cd985+'\x22');}else{_0x38a36d[_0x9495('0x1d')](_0x9495('0x77'));}break;case _0x9495('0x78'):var _0x166e8f=moment(_0x1cd985,_0x9495('0x79'),!![]);if(_0x166e8f[_0x9495('0x72')]()){_0x222601['push']('\x22'+_0x1cd985+'\x22');}else{_0x38a36d[_0x9495('0x1d')]('dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)');}break;default:_0x222601['push']('\x22'+_0x1cd985+'\x22');}}else{switch(_0x3b0ecd){case _0x9495('0x7a'):case'phone':_0x38a36d[_0x9495('0x1d')](_0x3b0ecd+'\x20not\x20specified');break;default:_0x222601[_0x9495('0x1d')]('\x22\x22');}}}}else{var _0x32e5f3='';if(!_[_0x9495('0x1b')](_0x34a449)){if(!_0x26692b[_0x9495('0x6f')](_0x34a449['id'])){for(var _0x1b6536=0x0;_0x1b6536<_0x4dfeb0[_0x3b0ecd][_0x9495('0x21')];_0x1b6536++){var _0x1cd985=_['trim'](_0x505794[_0x9495('0x6d')][_0x38ede0][_0x4dfeb0[_0x3b0ecd][_0x1b6536]][_0x9495('0x70')](/"/g,'\x27'));var _0x447f7a=phoneDescriptions[_0x9495('0x6e')](_0x49d0ad=>_0x49d0ad[_0x9495('0x7b')]===_0x34a449['id']);if(!_[_0x9495('0x1b')](_0x447f7a)){var _0xd1d6dd=_[_0x9495('0x7c')](_0x505794[_0x9495('0x6d')][_0x38ede0][_0x4dfeb0[_0x447f7a[_0x9495('0x7d')]][0x0]][_0x9495('0x70')](/"/g,'\x27'));if(!_['isNil'](_0xd1d6dd))_0x1cd985=_0x1cd985+'§'+_0xd1d6dd;}if(_0x32e5f3=='')_0x32e5f3=_0x1cd985;else _0x32e5f3+='|'+_0x1cd985;}_0x2d0051[_0x9495('0x1d')](_0x34a449['id']+':'+_0x32e5f3);_0x26692b[_0x34a449['id']]=0x1;}}}}if(hasAdditionalPhones){_0x222601[_0x9495('0x1d')]('\x22'+_0x2d0051[_0x9495('0x13')](';')+'\x22');}if(_0x38a36d[_0x9495('0x21')]){handleError(_0x505794['data'][_0x38ede0],{'code':_0x9495('0x7e'),'message':_0x38a36d[_0x9495('0x13')]()});}else{fs['appendFileSync'](_0x3688ba,_0x222601[_0x9495('0x13')]()+'\x0a');}_0x222601=[];}if(!(stats[_0x9495('0x7f')]%0xc8)){socket['emit'](_0x9495('0x80')+_0x3da4d3,stats);stats[_0x9495('0x5a')]=[];}}if(stopped){logger[_0x9495('0x56')](_0x9495('0x81'));_0x35d547[_0x9495('0x82')]();}}catch(_0x24049b){handleError(_0x505794[_0x9495('0x6d')][_0x38ede0],{'code':_0x9495('0x83'),'message':_0x24049b[_0x9495('0x1f')]});logger[_0x9495('0x58')](_0x9495('0x84'),_0x24049b[_0x9495('0x1f')]);}},'complete':function(){try{var _0x1fc709=[];var _0x2c6782=tempTableName;_0x1fc709[_0x9495('0x1d')]('CREATE\x20TABLE\x20'+_0x2c6782+_0x9495('0x85'));logger[_0x9495('0x56')]('CIS\x20len',contactItemTypes[_0x9495('0x21')]);var _0x4716d7=util[_0x9495('0xc')]('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',_0x3688ba,_0x2c6782,_0x410038,_0x4a2a0f[_0x9495('0x34')],_0x4a2a0f[_0x9495('0x86')]||null,NOW,NOW);if(_[_0x9495('0x1b')](_0x4dfeb0[_0x9495('0x71')])){_0x4716d7+=_0x9495('0x87');}_0x1fc709[_0x9495('0x1d')](_0x4716d7);BPromise[_0x9495('0x88')](_0x1fc709,handleQuery)[_0x9495('0x22')](function(_0x47dc90){BPromise[_0x9495('0x1e')]([handleAdditionalPhones()])[_0x9495('0x22')](function(){_0x1fc709=[];for(var _0x5ae053=0x0;_0x5ae053<promisesContact[_0x9495('0x21')];_0x5ae053++){_0x1fc709[_0x9495('0x1d')](updateContact(promisesContact[_0x5ae053][_0x9495('0x89')]));}BPromise['all'](_0x1fc709)[_0x9495('0x22')](function(){_0x1fc709=[];for(var _0xf284f1=0x0;_0xf284f1<promisesAdditionalPhones[_0x9495('0x21')];_0xf284f1++){_0x1fc709[_0x9495('0x1d')](createAdditionalPhone(promisesAdditionalPhones[_0xf284f1][_0x9495('0x8a')],promisesAdditionalPhones[_0xf284f1][_0x9495('0x8b')],promisesAdditionalPhones[_0xf284f1][_0x9495('0x11')],promisesAdditionalPhones[_0xf284f1][_0x9495('0x8c')]));}BPromise[_0x9495('0x1e')](_0x1fc709)[_0x9495('0x22')](function(){_0x1fc709=[];_0x1fc709[_0x9495('0x1d')](insertCmHopperAdditionalPhones(_0x4a2a0f['ListId']));_0x1fc709[_0x9495('0x1d')]('DROP\x20TABLE\x20'+_0x2c6782+';');BPromise['each'](_0x1fc709,handleQuery)[_0x9495('0x22')](function(_0x4cc1b0){stats['finish']=!![];stats[_0x9495('0x8d')]=updatedRows;socket[_0x9495('0x8e')](_0x9495('0x80')+_0x3da4d3,stats);fs[_0x9495('0x8f')](_0x6986c1);fs['unlink'](_0x3688ba);process[_0x9495('0x59')](0x0);})['catch'](function(_0xcf9e21){logger['error'](_0xcf9e21[_0x9495('0x1f')]);process[_0x9495('0x59')](0x1);});});});});})[_0x9495('0x5d')](function(_0x2310e1){logger[_0x9495('0x58')](_0x2310e1[_0x9495('0x1f')]);process[_0x9495('0x59')](0x1);});}catch(_0xbb3e25){logger[_0x9495('0x58')](_0x9495('0x90'),_0xbb3e25[_0x9495('0x1f')]);process[_0x9495('0x59')](0x1);}},'error':function(_0x96b8b4,_0x11b8c3,_0x25c2a5,_0x3030ac){throw new Error(_0x3030ac);}});});}function validate(){if(process[_0x9495('0x91')]&&process[_0x9495('0x91')][_0x9495('0x21')]<0x4){throw new Error(_0x9495('0x92'));}var _0x35758e=path[_0x9495('0x13')](config[_0x9495('0x62')],'server/files/tmp',process[_0x9495('0x91')][0x2]);if(!fs[_0x9495('0x93')](_0x35758e)){throw new Error('file\x20doesn\x27t\x20exists');}var _0x3f629b={};try{_0x3f629b=JSON[_0x9495('0x6b')](process['argv'][0x3]);if(!_0x3f629b[_0x9495('0x94')]){throw new Error('binding\x20doesn\x27t\x20exists');}var _0x1ab41f=0x0;if(_0x3f629b[_0x9495('0x94')][_0x9495('0x37')]){_0x1ab41f=0x1;}if(!_0x3f629b[_0x9495('0x34')]){throw new Error(_0x9495('0x95'));}}catch(_0x55fe26){throw new Error(_0x9495('0x96'));}var _0x30ed03=[];try{_0x30ed03=_[_0x9495('0x97')](JSON[_0x9495('0x6b')](process[_0x9495('0x91')][0x4]),'id');}catch(_0x5bd185){logger[_0x9495('0x56')](_0x9495('0x98'));}main(_0x35758e,_0x3f629b,_0x30ed03,_0x1ab41f);}validate();process['on'](_0x9495('0x99'),handleStop);process['on'](_0x9495('0x9a'),handleUncaughtException);
\ No newline at end of file
index daea427..a2bc2b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6fa0=['Agent\x20Complete','agentcompleteAt','holdtime','talktime','Called\x20Number','Member\x20Name','starttime','Answer\x20Time','Complete\x20Time','endtime','Duration','duration','Billable\x20Time','billableseconds','getSubjects','string','[xCALLY\x20Ticket]','voice','inbound','push','variable','outbound','Outbound\x20Call','destcalleridnum','getDescriptions','toLowerCase','***\x20Call\x20Info\x20***','keyValue','Caller\x20Number','calleridnum','Caller\x20Name','calleridname','destexten','Queue','queue','UniqueId','uniqueid','Date','***\x20Agent\x20Info\x20***','Agent\x20Name','Agent\x20Number','***\x20Time\x20Info\x20***','Agent\x20Ring','agentcalledAt','Agent\x20Connect','agentconnectAt'];(function(_0x3337cd,_0x2b44f7){var _0x118205=function(_0x269eb6){while(--_0x269eb6){_0x3337cd['push'](_0x3337cd['shift']());}};_0x118205(++_0x2b44f7);}(_0x6fa0,0xc6));var _0x06fa=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0x6fa0[_0x2c91e9];return _0x13f0ff;};'use strict';exports[_0x06fa('0x0')]=function(_0x1990bb,_0x279070){var _0x1011d5=[{'type':_0x06fa('0x1'),'content':_0x06fa('0x2'),'variableName':null}];switch(_0x1990bb['toLowerCase']()){case _0x06fa('0x3'):switch(_0x279070['toLowerCase']()){case _0x06fa('0x4'):_0x1011d5[_0x06fa('0x5')]({'type':_0x06fa('0x6'),'content':'','variableName':'queue'});_0x1011d5[_0x06fa('0x5')]({'type':_0x06fa('0x6'),'content':'','variableName':'calleridnum'});break;case _0x06fa('0x7'):_0x1011d5[_0x06fa('0x5')]({'type':'string','content':_0x06fa('0x8'),'variableName':null});_0x1011d5['push']({'type':_0x06fa('0x6'),'content':'','variableName':_0x06fa('0x9')});break;}}return _0x1011d5;};exports[_0x06fa('0xa')]=function(_0x52a073,_0x18da19){var _0x2aa981=[];switch(_0x52a073[_0x06fa('0xb')]()){case _0x06fa('0x3'):switch(_0x18da19[_0x06fa('0xb')]()){case'inbound':_0x2aa981=[{'type':_0x06fa('0x1'),'content':_0x06fa('0xc'),'key':null,'keyType':null,'variableName':null},{'type':_0x06fa('0xd'),'content':'','key':_0x06fa('0xe'),'keyType':_0x06fa('0x6'),'variableName':_0x06fa('0xf')},{'type':_0x06fa('0xd'),'content':'','key':_0x06fa('0x10'),'keyType':_0x06fa('0x6'),'variableName':_0x06fa('0x11')},{'type':_0x06fa('0xd'),'content':'','key':'Call\x20To','keyType':'variable','variableName':_0x06fa('0x12')},{'type':'keyValue','content':'','key':_0x06fa('0x13'),'keyType':_0x06fa('0x6'),'variableName':_0x06fa('0x14')},{'type':_0x06fa('0xd'),'content':'','key':_0x06fa('0x15'),'keyType':'variable','variableName':_0x06fa('0x16')},{'type':_0x06fa('0xd'),'content':'','key':_0x06fa('0x17'),'keyType':'variable','variableName':'agentcalledAt'},{'type':_0x06fa('0x1'),'content':_0x06fa('0x18'),'key':null,'keyType':null,'variableName':null},{'type':'keyValue','content':'','key':_0x06fa('0x19'),'keyType':'variable','variableName':'destcalleridname'},{'type':_0x06fa('0xd'),'content':'','key':_0x06fa('0x1a'),'keyType':'variable','variableName':_0x06fa('0x9')},{'type':_0x06fa('0x1'),'content':_0x06fa('0x1b'),'key':null,'keyType':null,'variableName':null},{'type':_0x06fa('0xd'),'content':'','key':_0x06fa('0x1c'),'keyType':'variable','variableName':_0x06fa('0x1d')},{'type':_0x06fa('0xd'),'content':'','key':_0x06fa('0x1e'),'keyType':_0x06fa('0x6'),'variableName':_0x06fa('0x1f')},{'type':_0x06fa('0xd'),'content':'','key':_0x06fa('0x20'),'keyType':_0x06fa('0x6'),'variableName':_0x06fa('0x21')},{'type':_0x06fa('0xd'),'content':'','key':'Hold\x20Time','keyType':_0x06fa('0x6'),'variableName':_0x06fa('0x22')},{'type':_0x06fa('0xd'),'content':'','key':'Talk\x20Time','keyType':_0x06fa('0x6'),'variableName':_0x06fa('0x23')}];break;case'outbound':_0x2aa981=[{'type':_0x06fa('0x1'),'content':_0x06fa('0xc'),'variableName':null},{'type':_0x06fa('0xd'),'content':'','key':_0x06fa('0x24'),'keyType':'variable','keyContent':'','variableName':'destcalleridnum'},{'type':_0x06fa('0xd'),'content':'','key':_0x06fa('0x25'),'keyType':_0x06fa('0x6'),'keyContent':'','variableName':'membername'},{'type':'keyValue','content':'','key':_0x06fa('0x15'),'keyType':_0x06fa('0x6'),'keyContent':'','variableName':_0x06fa('0x16')},{'type':_0x06fa('0xd'),'content':'','key':'Date','keyType':'variable','keyContent':'','variableName':_0x06fa('0x26')},{'type':_0x06fa('0x1'),'content':_0x06fa('0x1b')},{'type':_0x06fa('0xd'),'content':'','key':_0x06fa('0x27'),'keyType':_0x06fa('0x6'),'keyContent':'','variableName':'answertime'},{'type':_0x06fa('0xd'),'content':'','key':_0x06fa('0x28'),'keyType':_0x06fa('0x6'),'keyContent':'','variableName':_0x06fa('0x29')},{'type':_0x06fa('0xd'),'content':'','key':_0x06fa('0x2a'),'keyType':_0x06fa('0x6'),'keyContent':'','variableName':_0x06fa('0x2b')},{'type':_0x06fa('0xd'),'content':'','key':_0x06fa('0x2c'),'keyType':_0x06fa('0x6'),'keyContent':'','variableName':_0x06fa('0x2d')}];break;}}return _0x2aa981;};
\ No newline at end of file
+var _0xd76e=['Hold\x20Time','holdtime','Talk\x20Time','Called\x20Number','Member\x20Name','membername','uniqueid','starttime','answertime','endtime','Duration','Billable\x20Time','billableseconds','getSubjects','string','[xCALLY\x20Ticket]','toLowerCase','inbound','push','variable','outbound','Outbound\x20Call','getDescriptions','voice','***\x20Call\x20Info\x20***','Caller\x20Number','keyValue','destexten','Queue','queue','UniqueId','Date','agentcalledAt','Agent\x20Name','destcalleridname','Agent\x20Number','destcalleridnum','***\x20Time\x20Info\x20***','Agent\x20Ring','Agent\x20Connect','agentconnectAt','agentcompleteAt'];(function(_0x1b541a,_0x3b6171){var _0x45b12c=function(_0x3ef877){while(--_0x3ef877){_0x1b541a['push'](_0x1b541a['shift']());}};_0x45b12c(++_0x3b6171);}(_0xd76e,0x109));var _0xed76=function(_0x2c406a,_0x344cca){_0x2c406a=_0x2c406a-0x0;var _0x16cdfd=_0xd76e[_0x2c406a];return _0x16cdfd;};'use strict';exports[_0xed76('0x0')]=function(_0x329a2d,_0x2a61e8){var _0x5c002a=[{'type':_0xed76('0x1'),'content':_0xed76('0x2'),'variableName':null}];switch(_0x329a2d[_0xed76('0x3')]()){case'voice':switch(_0x2a61e8[_0xed76('0x3')]()){case _0xed76('0x4'):_0x5c002a[_0xed76('0x5')]({'type':_0xed76('0x6'),'content':'','variableName':'queue'});_0x5c002a[_0xed76('0x5')]({'type':_0xed76('0x6'),'content':'','variableName':'calleridnum'});break;case _0xed76('0x7'):_0x5c002a[_0xed76('0x5')]({'type':_0xed76('0x1'),'content':_0xed76('0x8'),'variableName':null});_0x5c002a['push']({'type':_0xed76('0x6'),'content':'','variableName':'destcalleridnum'});break;}}return _0x5c002a;};exports[_0xed76('0x9')]=function(_0x4e426e,_0x2342a1){var _0x4e0b27=[];switch(_0x4e426e[_0xed76('0x3')]()){case _0xed76('0xa'):switch(_0x2342a1['toLowerCase']()){case _0xed76('0x4'):_0x4e0b27=[{'type':_0xed76('0x1'),'content':_0xed76('0xb'),'key':null,'keyType':null,'variableName':null},{'type':'keyValue','content':'','key':_0xed76('0xc'),'keyType':_0xed76('0x6'),'variableName':'calleridnum'},{'type':_0xed76('0xd'),'content':'','key':'Caller\x20Name','keyType':_0xed76('0x6'),'variableName':'calleridname'},{'type':_0xed76('0xd'),'content':'','key':'Call\x20To','keyType':_0xed76('0x6'),'variableName':_0xed76('0xe')},{'type':'keyValue','content':'','key':_0xed76('0xf'),'keyType':'variable','variableName':_0xed76('0x10')},{'type':_0xed76('0xd'),'content':'','key':_0xed76('0x11'),'keyType':'variable','variableName':'uniqueid'},{'type':_0xed76('0xd'),'content':'','key':_0xed76('0x12'),'keyType':'variable','variableName':_0xed76('0x13')},{'type':_0xed76('0x1'),'content':'***\x20Agent\x20Info\x20***','key':null,'keyType':null,'variableName':null},{'type':_0xed76('0xd'),'content':'','key':_0xed76('0x14'),'keyType':_0xed76('0x6'),'variableName':_0xed76('0x15')},{'type':_0xed76('0xd'),'content':'','key':_0xed76('0x16'),'keyType':_0xed76('0x6'),'variableName':_0xed76('0x17')},{'type':_0xed76('0x1'),'content':_0xed76('0x18'),'key':null,'keyType':null,'variableName':null},{'type':'keyValue','content':'','key':_0xed76('0x19'),'keyType':_0xed76('0x6'),'variableName':_0xed76('0x13')},{'type':_0xed76('0xd'),'content':'','key':_0xed76('0x1a'),'keyType':_0xed76('0x6'),'variableName':_0xed76('0x1b')},{'type':_0xed76('0xd'),'content':'','key':'Agent\x20Complete','keyType':_0xed76('0x6'),'variableName':_0xed76('0x1c')},{'type':_0xed76('0xd'),'content':'','key':_0xed76('0x1d'),'keyType':_0xed76('0x6'),'variableName':_0xed76('0x1e')},{'type':'keyValue','content':'','key':_0xed76('0x1f'),'keyType':_0xed76('0x6'),'variableName':'talktime'}];break;case _0xed76('0x7'):_0x4e0b27=[{'type':_0xed76('0x1'),'content':'***\x20Call\x20Info\x20***','variableName':null},{'type':_0xed76('0xd'),'content':'','key':_0xed76('0x20'),'keyType':'variable','keyContent':'','variableName':'destcalleridnum'},{'type':_0xed76('0xd'),'content':'','key':_0xed76('0x21'),'keyType':_0xed76('0x6'),'keyContent':'','variableName':_0xed76('0x22')},{'type':'keyValue','content':'','key':_0xed76('0x11'),'keyType':'variable','keyContent':'','variableName':_0xed76('0x23')},{'type':_0xed76('0xd'),'content':'','key':_0xed76('0x12'),'keyType':'variable','keyContent':'','variableName':_0xed76('0x24')},{'type':_0xed76('0x1'),'content':'***\x20Time\x20Info\x20***'},{'type':'keyValue','content':'','key':'Answer\x20Time','keyType':_0xed76('0x6'),'keyContent':'','variableName':_0xed76('0x25')},{'type':_0xed76('0xd'),'content':'','key':'Complete\x20Time','keyType':'variable','keyContent':'','variableName':_0xed76('0x26')},{'type':_0xed76('0xd'),'content':'','key':_0xed76('0x27'),'keyType':_0xed76('0x6'),'keyContent':'','variableName':'duration'},{'type':_0xed76('0xd'),'content':'','key':_0xed76('0x28'),'keyType':'variable','keyContent':'','variableName':_0xed76('0x29')}];break;}}return _0x4e0b27;};
\ No newline at end of file
index 8855191..8bcb2b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x72e9=['body','html','phone','fax','mobile','updateUser','lodash','./sql-utils','./utils','findAll','skipInteractionsQuery','resolve','getInteractionsQuery','then','search','parseAdvancedSearchFilter','parseQueryParameters','where','user','having','read','tags','checkAccountsRestrictions','group','ids','tag','countFilteredInteractions','length','count','clause','order','forEach','DESC','closed','getClosedOrderClause','rows','query','clone'];(function(_0x55f1ea,_0x451d6b){var _0x48465c=function(_0x4688a2){while(--_0x4688a2){_0x55f1ea['push'](_0x55f1ea['shift']());}};_0x48465c(++_0x451d6b);}(_0x72e9,0x78));var _0x972e=function(_0x1258a7,_0x378e45){_0x1258a7=_0x1258a7-0x0;var _0x5379b8=_0x72e9[_0x1258a7];return _0x5379b8;};'use strict';var _=require(_0x972e('0x0'));var sqlUtils=require(_0x972e('0x1'));var utils=require(_0x972e('0x2'));exports[_0x972e('0x3')]=function(_0x2d0ba8,_0x5b2a07,_0x7b0f15,_0x3e4e59,_0x1d088d){var _0x3f4f4f={'count':0x0,'rows':[]};var _0x2233ab=sqlUtils[_0x972e('0x4')](_0x2d0ba8,_0x7b0f15,_0x5b2a07);if(_0x2233ab){return Promise[_0x972e('0x5')](_0x3f4f4f);}var _0x4e5286=sqlUtils[_0x972e('0x6')](_0x2d0ba8);var _0x4d5151={};return Promise[_0x972e('0x5')]()[_0x972e('0x7')](function(){if(_0x5b2a07[_0x972e('0x8')]){return sqlUtils[_0x972e('0x9')](_0x5b2a07[_0x972e('0x8')],_0x1d088d);}else{return sqlUtils[_0x972e('0xa')](_0x2d0ba8,_0x5b2a07,_0x1d088d);}})['then'](function(_0x5af923){_0x4e5286[_0x972e('0xb')](_0x5af923['body']);_0x4e5286[_0x972e('0xb')](_0x5af923['contact']);_0x4e5286[_0x972e('0xb')](_0x5af923['default']);_0x4e5286[_0x972e('0xb')](_0x5af923['fields']);_0x4e5286[_0x972e('0xb')](_0x5af923['filter']);_0x4e5286[_0x972e('0xb')](_0x5af923[_0x972e('0xc')]);_0x4e5286[_0x972e('0xd')](_0x5af923[_0x972e('0xe')]);_0x4d5151=_0x5af923[_0x972e('0xf')];return sqlUtils[_0x972e('0x10')](_0x2d0ba8,_0x7b0f15,_0x5b2a07);})[_0x972e('0x7')](function(_0x555f47){_0x4e5286[_0x972e('0xb')](_0x555f47);_0x4e5286[_0x972e('0x11')]('i.id');var _0xa54483=_0x5b2a07['search']?_0x4d5151[_0x972e('0x12')]:_0x5b2a07[_0x972e('0x13')];return sqlUtils[_0x972e('0x14')](_0x4e5286,_0xa54483);})['then'](function(_0x271245){_0x3f4f4f['count']=_0x271245[_0x972e('0x15')];if(_0x3f4f4f[_0x972e('0x16')]===0x0){return[];}_0x4e5286[_0x972e('0xd')](_0x4d5151[_0x972e('0x17')]);if(_0x3e4e59[_0x972e('0x18')]){_0x3e4e59[_0x972e('0x18')][_0x972e('0x19')](function(_0x268c0f){var _0x1436ca=_0x268c0f[0x0]==='contactName'?_0x268c0f[0x0]:'i.'+_0x268c0f[0x0];_0x4e5286[_0x972e('0x18')](_0x1436ca,_0x268c0f[0x1]===_0x972e('0x1a')?![]:!![]);if(_0x268c0f[0x0]===_0x972e('0x1b')){var _0x4020b0=sqlUtils[_0x972e('0x1c')](_0x2d0ba8,_0x5b2a07);_0x4e5286[_0x972e('0x18')](_0x4020b0,_0x268c0f[0x1]===_0x972e('0x1a')?![]:!![]);}});}return sqlUtils['getFilteredInteractions'](_0x2d0ba8,_0x4e5286,_0x5b2a07,_0x3e4e59);})[_0x972e('0x7')](function(_0x49988d){_0x3f4f4f[_0x972e('0x1d')]=_0x49988d;return _0x3f4f4f;})['catch'](function(_0xce749a){throw _0xce749a;});};exports['tracked']=function(_0x3d1be0,_0x21338d){return function(_0x42c153,_0x31e1d4,_0x2d4e08){var _0x15fde1=_0x42c153[_0x972e('0xc')];var _0x5b25d6={};var _0x142643=_0x42c153[_0x972e('0x1e')];if(_0x5b25d6){_0x5b25d6=_[_0x972e('0x1f')](_0x42c153[_0x972e('0x20')]);_0x5b25d6=_['omit'](_0x5b25d6,[_0x972e('0x20'),_0x972e('0x21'),_0x972e('0x22'),_0x972e('0x23'),_0x972e('0x24')]);}utils[_0x972e('0x25')](_0x15fde1,_0x5b25d6,_0x142643,_0x3d1be0,_0x21338d);_0x2d4e08(null);};};
\ No newline at end of file
+var _0x6a1c=['skipInteractionsQuery','getInteractionsQuery','resolve','then','parseAdvancedSearchFilter','parseQueryParameters','body','where','contact','default','filter','user','read','checkAccountsRestrictions','group','i.id','tag','count','length','order','contactName','DESC','closed','getClosedOrderClause','getFilteredInteractions','rows','catch','tracked','query','clone','omit','phone','fax','mobile','updateUser','lodash','./sql-utils','./utils','findAll'];(function(_0x9fb06b,_0xf1fa83){var _0x4de9f8=function(_0x4327b4){while(--_0x4327b4){_0x9fb06b['push'](_0x9fb06b['shift']());}};_0x4de9f8(++_0xf1fa83);}(_0x6a1c,0xbf));var _0xc6a1=function(_0x42da90,_0xfa7c0d){_0x42da90=_0x42da90-0x0;var _0x397b02=_0x6a1c[_0x42da90];return _0x397b02;};'use strict';var _=require(_0xc6a1('0x0'));var sqlUtils=require(_0xc6a1('0x1'));var utils=require(_0xc6a1('0x2'));exports[_0xc6a1('0x3')]=function(_0x21d5c9,_0x5e0ceb,_0x2259ea,_0x501f7c,_0x426809){var _0x42b7da={'count':0x0,'rows':[]};var _0x522a5a=sqlUtils[_0xc6a1('0x4')](_0x21d5c9,_0x2259ea,_0x5e0ceb);if(_0x522a5a){return Promise['resolve'](_0x42b7da);}var _0x3cc974=sqlUtils[_0xc6a1('0x5')](_0x21d5c9);var _0x39391f={};return Promise[_0xc6a1('0x6')]()[_0xc6a1('0x7')](function(){if(_0x5e0ceb['search']){return sqlUtils[_0xc6a1('0x8')](_0x5e0ceb['search'],_0x426809);}else{return sqlUtils[_0xc6a1('0x9')](_0x21d5c9,_0x5e0ceb,_0x426809);}})[_0xc6a1('0x7')](function(_0x52c02a){_0x3cc974['where'](_0x52c02a[_0xc6a1('0xa')]);_0x3cc974[_0xc6a1('0xb')](_0x52c02a[_0xc6a1('0xc')]);_0x3cc974['where'](_0x52c02a[_0xc6a1('0xd')]);_0x3cc974[_0xc6a1('0xb')](_0x52c02a['fields']);_0x3cc974[_0xc6a1('0xb')](_0x52c02a[_0xc6a1('0xe')]);_0x3cc974[_0xc6a1('0xb')](_0x52c02a[_0xc6a1('0xf')]);_0x3cc974['having'](_0x52c02a[_0xc6a1('0x10')]);_0x39391f=_0x52c02a['tags'];return sqlUtils[_0xc6a1('0x11')](_0x21d5c9,_0x2259ea,_0x5e0ceb);})['then'](function(_0x25de9a){_0x3cc974[_0xc6a1('0xb')](_0x25de9a);_0x3cc974[_0xc6a1('0x12')](_0xc6a1('0x13'));var _0x5627fa=_0x5e0ceb['search']?_0x39391f['ids']:_0x5e0ceb[_0xc6a1('0x14')];return sqlUtils['countFilteredInteractions'](_0x3cc974,_0x5627fa);})['then'](function(_0x543a1){_0x42b7da[_0xc6a1('0x15')]=_0x543a1[_0xc6a1('0x16')];if(_0x42b7da[_0xc6a1('0x15')]===0x0){return[];}_0x3cc974['having'](_0x39391f['clause']);if(_0x501f7c[_0xc6a1('0x17')]){_0x501f7c['order']['forEach'](function(_0x540030){var _0x32ef07=_0x540030[0x0]===_0xc6a1('0x18')?_0x540030[0x0]:'i.'+_0x540030[0x0];_0x3cc974['order'](_0x32ef07,_0x540030[0x1]===_0xc6a1('0x19')?![]:!![]);if(_0x540030[0x0]===_0xc6a1('0x1a')){var _0x2faf70=sqlUtils[_0xc6a1('0x1b')](_0x21d5c9,_0x5e0ceb);_0x3cc974[_0xc6a1('0x17')](_0x2faf70,_0x540030[0x1]==='DESC'?![]:!![]);}});}return sqlUtils[_0xc6a1('0x1c')](_0x21d5c9,_0x3cc974,_0x5e0ceb,_0x501f7c);})[_0xc6a1('0x7')](function(_0x3342f7){_0x42b7da[_0xc6a1('0x1d')]=_0x3342f7;return _0x42b7da;})[_0xc6a1('0x1e')](function(_0x1ce235){throw _0x1ce235;});};exports[_0xc6a1('0x1f')]=function(_0x334c3e,_0x23dd54){return function(_0x2ea11e,_0x50e52a,_0x2a258b){var _0x510488=_0x2ea11e[_0xc6a1('0xf')];var _0x2f6444={};var _0x41c483=_0x2ea11e[_0xc6a1('0x20')];if(_0x2f6444){_0x2f6444=_[_0xc6a1('0x21')](_0x2ea11e[_0xc6a1('0xa')]);_0x2f6444=_[_0xc6a1('0x22')](_0x2f6444,[_0xc6a1('0xa'),'html',_0xc6a1('0x23'),_0xc6a1('0x24'),_0xc6a1('0x25')]);}utils[_0xc6a1('0x26')](_0x510488,_0x2f6444,_0x41c483,_0x334c3e,_0x23dd54);_0x2a258b(null);};};
\ No newline at end of file
index f55affb..8aa12dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9bc9=['read','and','Contact','$substring','split','contact','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','type','Tag','tags','ids','User','operator','user','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','body','text','compact','concat','createdAt','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','resolve','then','fields','tag','clause','filter','get','capitalize','chat','Websites','Accounts','\x20IS\x20NULL','\x20IS\x20NOT\x20NULL','i.thirdDisposition','i.secondDisposition','unshift','i.substatus','closed','CONCAT_WS(\x27\x27,\x20','join','Interaction','QueryTypes','SELECT','sequelize','query','toString','attributes','a.key','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','a.email','Account.email','i.id','i.createdAt','i.closedAt','i.lastMsgAt','i.lastMsgDirection','i.disposition','i.to','i.MailAccountId','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','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','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','TagIds','limit','offset','enableEmailPreview','all','COUNT(*)','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','getSelectedTags','isEmpty','Sequelize','exports','lodash','squel','../parsers/advancedSearch','../parsers/qs','./update-interaction','updateInteraction','./utils','../../mysqldb','getAccountFK','role','agent','search','select','name','color','from','getInteractionFK','user_has_','_interactions','u.id','field','left_join','users','u.id\x20=\x20ui.UserId','length','where','ui.','\x20IN\x20?','map','getInteractionsTables','interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','a.id\x20=\x20i.','messages','\x20=\x20i.id','interactionsTags','t.id\x20=\x20it.TagId','expr','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','{OPERATOR}','replace','i.id\x20LIKE\x20?','sms','whatsapp','includes','i.fax\x20LIKE\x20?','i.from\x20LIKE\x20?','isEmail','c.email\x20LIKE\x20?','mail','MATCH\x20(i.to,\x20i.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','MATCH\x20(me.plainBody,\x20me.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','parseSearch','sqlOperator','conditions','find','buildExpression','default','value','start','end','unreadMessages'];(function(_0x9df060,_0x253d33){var _0x338dfe=function(_0x17d9a5){while(--_0x17d9a5){_0x9df060['push'](_0x9df060['shift']());}};_0x338dfe(++_0x253d33);}(_0x9bc9,0x108));var _0x99bc=function(_0x129fb9,_0x31992e){_0x129fb9=_0x129fb9-0x0;var _0x4c47ac=_0x9bc9[_0x129fb9];return _0x4c47ac;};'use strict';var _=require(_0x99bc('0x0'));var squel=require(_0x99bc('0x1'));var as=require(_0x99bc('0x2'));var qs=require(_0x99bc('0x3'));var updateInteraction=require(_0x99bc('0x4'))[_0x99bc('0x5')];var utils=require(_0x99bc('0x6'));var db=require(_0x99bc('0x7'))['db'];function skipInteractionsQuery(_0x4a0e20,_0x71d793,_0x282c23){var _0x40729a=![];var _0x4cd445=utils[_0x99bc('0x8')](_0x4a0e20);if(_0x71d793[_0x99bc('0x9')]===_0x99bc('0xa')&&!_0x282c23[_0x99bc('0xb')]&&!_0x282c23[_0x4cd445]){_0x40729a=!![];}return _0x40729a;}function getTagsQuery(){return squel[_0x99bc('0xc')]()['field']('id')['field'](_0x99bc('0xd'))['field'](_0x99bc('0xe'))[_0x99bc('0xf')]('tools_tags');}function getUsersQuery(_0x175a76,_0x23e9cb){var _0x26602c=utils[_0x99bc('0x10')](_0x175a76);var _0x5f49be=_0x99bc('0x11')+_0x175a76+_0x99bc('0x12');var _0x5364b0=squel[_0x99bc('0xc')]()['field'](_0x99bc('0x13'))[_0x99bc('0x14')]('u.fullname')[_0x99bc('0x14')]('ui.'+_0x26602c)[_0x99bc('0xf')](_0x5f49be,'ui')[_0x99bc('0x15')](_0x99bc('0x16'),'u',_0x99bc('0x17'));if(_0x23e9cb[_0x99bc('0x18')]>0x0){_0x5364b0[_0x99bc('0x19')](_0x99bc('0x1a')+_0x26602c+_0x99bc('0x1b'),_[_0x99bc('0x1c')](_0x23e9cb,'id'));}return _0x5364b0;}function getInteractionsQuery(_0x31e4f3){var _0x3a4a5b=utils[_0x99bc('0x1d')](_0x31e4f3);var _0x5c6c04=utils['getAccountFK'](_0x31e4f3);var _0x21c8a8=utils[_0x99bc('0x10')](_0x31e4f3);return squel['select']()[_0x99bc('0xf')](_0x3a4a5b[_0x99bc('0x1e')],'i')['left_join'](_0x99bc('0x1f'),'c',_0x99bc('0x20'))[_0x99bc('0x15')](_0x99bc('0x16'),'o',_0x99bc('0x21'))[_0x99bc('0x15')](_0x3a4a5b['accounts'],'a',_0x99bc('0x22')+_0x5c6c04)[_0x99bc('0x15')](_0x3a4a5b[_0x99bc('0x23')],'me','me.'+_0x21c8a8+_0x99bc('0x24'))[_0x99bc('0x15')](_0x3a4a5b[_0x99bc('0x25')],'it','it.'+_0x21c8a8+_0x99bc('0x24'))['left_join']('tools_tags','t',_0x99bc('0x26'));}function getSqlClauses(){var _0x3498e1={'body':squel['expr'](),'contact':squel['expr'](),'default':squel[_0x99bc('0x27')](),'fields':squel[_0x99bc('0x27')](),'filter':squel['expr'](),'read':squel[_0x99bc('0x27')](),'tags':{'clause':squel['expr'](),'ids':null},'user':squel[_0x99bc('0x27')]()};return _0x3498e1;}function parseTagParameter(_0x13c39d){var _0xdbc6eb=squel[_0x99bc('0x27')]();if(_0x13c39d){var _0x4a3beb=utils['getSelectedTags'](_0x13c39d);_0x4a3beb[_0x99bc('0x28')](function(_0x30c436){_0xdbc6eb['or'](_0x99bc('0x29'),'%,'+_0x30c436+',%');});}return _0xdbc6eb;}function parseReadParameter(_0x5c53e4){var _0x5b1771='';if(_0x5c53e4){_0x5b1771='unreadMessages\x20{OPERATOR}\x200';if(_0x5c53e4==='1'){_0x5b1771=_0x5b1771['replace'](_0x99bc('0x2a'),'=');}else{_0x5b1771=_0x5b1771[_0x99bc('0x2b')](_0x99bc('0x2a'),'>');}}return _0x5b1771;}function parseSearchFilter(_0x5b0748,_0x499dc3){var _0x175eb4=squel[_0x99bc('0x27')]();if(_0x499dc3){var _0x35b997=_0x499dc3['replace']('\x5c','\x5c\x5c')[_0x99bc('0x2b')](/'/g,'\x27\x27');if(qs['isNumeric'](_0x35b997)){_0x175eb4['or'](_0x99bc('0x2c'),_0x35b997+'%');if([_0x99bc('0x2d'),_0x99bc('0x2e')][_0x99bc('0x2f')](_0x5b0748)){_0x175eb4['or']('i.phone\x20LIKE\x20?',_0x35b997+'%');}else if(_0x5b0748==='fax'){_0x175eb4['or'](_0x99bc('0x30'),_0x35b997+'%');}else if(_0x5b0748==='openchannel'){_0x175eb4['or'](_0x99bc('0x31'),_0x35b997+'%');}}else if(_0x5b0748==='mail'&&qs[_0x99bc('0x32')](_0x35b997)){_0x175eb4['or'](_0x99bc('0x33'),_0x35b997+'%');}else{if(_0x5b0748===_0x99bc('0x34')){_0x175eb4['or'](_0x99bc('0x35'),qs['getFullTextValue'](_0x35b997,!![]))['or'](_0x99bc('0x36'),qs[_0x99bc('0x37')](_0x35b997));}else if(_0x5b0748!=='fax'){_0x175eb4['or'](_0x99bc('0x38'),qs['getFullTextValue'](_0x35b997));}_0x175eb4['or'](_0x99bc('0x39'),qs[_0x99bc('0x37')](_0x35b997,!![]),null);}}return _0x175eb4;}function parseAdvancedSearchFilter(_0x6c30e5,_0x345caf){var _0x33268e=getSqlClauses();var _0x4c4cc8=as[_0x99bc('0x3a')](_0x6c30e5);var _0x58136b=_0x4c4cc8[_0x99bc('0x3b')];for(var _0x3ca2c7=0x0;_0x3ca2c7<_0x4c4cc8[_0x99bc('0x3c')][_0x99bc('0x18')];_0x3ca2c7++){var _0x39e997=_0x4c4cc8[_0x99bc('0x3c')][_0x3ca2c7];var _0x5c261b='i';var _0x40ba60=_[_0x99bc('0x3d')](_0x345caf,[_0x99bc('0xd'),_0x39e997[_0x99bc('0x14')]]);if(_0x40ba60){var _0x1e52a8=as[_0x99bc('0x3e')](_0x5c261b,_0x40ba60['type'],_0x39e997);_0x33268e[_0x99bc('0x3f')][_0x58136b](_0x1e52a8['text'],_0x1e52a8[_0x99bc('0x40')][_0x99bc('0x41')],_0x1e52a8[_0x99bc('0x40')][_0x99bc('0x42')]);}else{switch(_0x39e997[_0x99bc('0x14')]){case _0x99bc('0x43'):var _0x11a6ac=parseReadParameter(_0x39e997[_0x99bc('0x40')]);_0x33268e[_0x99bc('0x44')][_0x99bc('0x45')](_0x11a6ac);break;case _0x99bc('0x46'):if(_0x39e997['operator']===_0x99bc('0x47')){if(_0x39e997['value'][_0x99bc('0x48')]('\x20')[_0x99bc('0x18')]>0x1){_0x33268e[_0x99bc('0x49')][_0x58136b](_0x99bc('0x39'),qs['getFullTextValue'](_0x39e997['value'],!![]),null);}else{var _0x3c3504='%'+_0x39e997[_0x99bc('0x40')]+'%';_0x33268e['contact'][_0x58136b](_0x99bc('0x4a'),_0x3c3504,_0x3c3504,_0x3c3504);}}else{_0x40ba60=_['find'](_0x345caf,[_0x99bc('0xd'),'ContactId']);_0x39e997[_0x99bc('0x14')]=_0x99bc('0x4b');_0x1e52a8=as[_0x99bc('0x3e')](_0x5c261b,_0x40ba60[_0x99bc('0x4c')],_0x39e997);_0x33268e[_0x99bc('0x49')][_0x58136b](_0x1e52a8['text'],_0x1e52a8['value'][_0x99bc('0x41')],_0x1e52a8[_0x99bc('0x40')]['end']);}break;case _0x99bc('0x4d'):var _0x244fb6=_0x39e997['value']['split'](',')[_0x99bc('0x1c')](function(_0x565070){return Number(_0x565070);});var _0x24c518=parseTagParameter(_0x244fb6);_0x33268e[_0x99bc('0x4e')]['clause']['and'](_0x24c518);_0x33268e[_0x99bc('0x4e')][_0x99bc('0x4f')]=_0x244fb6;break;case _0x99bc('0x50'):if(_0x39e997[_0x99bc('0x51')]===_0x99bc('0x47')){_0x33268e[_0x99bc('0x52')][_0x58136b](_0x99bc('0x53'),'%'+_0x39e997['value']+'%',null);}else{_0x40ba60=_[_0x99bc('0x3d')](_0x345caf,[_0x99bc('0xd'),_0x99bc('0x54')]);_0x39e997[_0x99bc('0x14')]=_0x99bc('0x54');_0x1e52a8=as[_0x99bc('0x3e')](_0x5c261b,_0x40ba60['type'],_0x39e997);_0x33268e[_0x99bc('0x52')][_0x58136b](_0x1e52a8['text'],_0x1e52a8[_0x99bc('0x40')][_0x99bc('0x41')],_0x1e52a8[_0x99bc('0x40')][_0x99bc('0x42')]);}break;case'body':case'plainBody':_0x1e52a8=as[_0x99bc('0x3e')]('me',null,_0x39e997);_0x33268e[_0x99bc('0x55')][_0x58136b](_0x1e52a8[_0x99bc('0x56')],_0x1e52a8['value'][_0x99bc('0x41')],_0x1e52a8[_0x99bc('0x40')][_0x99bc('0x42')]);break;}}}return _0x33268e;}function parseModelFields(_0x37c170,_0x34ac6d,_0x2de0ec){var _0x47cd17=utils[_0x99bc('0x8')](_0x37c170);var _0x151955=squel[_0x99bc('0x27')]();var _0x476f31=_(_0x34ac6d)['keys']()[_0x99bc('0x1c')](function(_0x48f6d9){return _['some'](_0x2de0ec,[_0x99bc('0xd'),_0x48f6d9])?_0x48f6d9:undefined;})[_0x99bc('0x57')]()[_0x99bc('0x40')]();if(_0x476f31[_0x99bc('0x18')]>0x0){_0x476f31[_0x99bc('0x28')](function(_0x1388b5){if(_0x1388b5===_0x47cd17){_0x151955[_0x99bc('0x45')]('i.'+_0x47cd17+_0x99bc('0x1b'),[][_0x99bc('0x58')](_0x34ac6d[_0x1388b5]));}else if(_0x1388b5===_0x99bc('0x59')){var _0x2ff3ef=JSON[_0x99bc('0x5a')](_0x34ac6d[_0x1388b5])[_0x99bc('0x5b')];var _0x1f9cd9=JSON['parse'](_0x34ac6d[_0x1388b5])[_0x99bc('0x5c')];_0x151955[_0x99bc('0x45')](_0x99bc('0x5d'),_0x2ff3ef,_0x1f9cd9);}else{if(_0x34ac6d[_0x1388b5]===_0x99bc('0x5e')){_0x151955['and']('i.'+_0x1388b5+'\x20IS\x20NULL');}else{_0x151955[_0x99bc('0x45')]('i.'+_0x1388b5+'\x20=\x20?',_0x34ac6d[_0x1388b5]);}}});}return _0x151955;}function parseQueryParameters(_0xc65fca,_0x18b191,_0x55d807){var _0x535eab=getSqlClauses();return Promise[_0x99bc('0x5f')]()[_0x99bc('0x60')](function(){return parseModelFields(_0xc65fca,_0x18b191,_0x55d807);})['then'](function(_0x1a2e51){_0x535eab[_0x99bc('0x61')][_0x99bc('0x45')](_0x1a2e51);return parseReadParameter(_0x18b191['read']);})[_0x99bc('0x60')](function(_0x7946df){_0x535eab['read'][_0x99bc('0x45')](_0x7946df);return parseTagParameter(_0x18b191[_0x99bc('0x62')]);})[_0x99bc('0x60')](function(_0x2ea788){_0x535eab[_0x99bc('0x4e')][_0x99bc('0x63')][_0x99bc('0x45')](_0x2ea788);return parseSearchFilter(_0xc65fca,_0x18b191['filter']);})[_0x99bc('0x60')](function(_0x5190b8){_0x535eab[_0x99bc('0x64')]=_0x5190b8;return _0x535eab;});}function checkAccountsRestrictions(_0x4db44e,_0x4b9138,_0x38aec7){var _0x58f4c2=utils[_0x99bc('0x8')](_0x4db44e);var _0x4e9fa3=_0x99bc('0x65')+_[_0x99bc('0x66')](_0x4db44e)+(_0x4db44e===_0x99bc('0x67')?_0x99bc('0x68'):_0x99bc('0x69'));var _0x1a5871=squel[_0x99bc('0x27')]();return Promise[_0x99bc('0x5f')]()[_0x99bc('0x60')](function(){if(_0x38aec7[_0x99bc('0xb')]&&_0x4b9138[_0x99bc('0x9')]==='agent'){return _0x4b9138[_0x4e9fa3]({'attributes':['id'],'raw':!![]});}})[_0x99bc('0x60')](function(_0x289c6d){if(_0x289c6d){if(_0x289c6d[_0x99bc('0x18')]===0x0){_0x1a5871[_0x99bc('0x45')]('i.'+_0x58f4c2+_0x99bc('0x6a'));}else{_0x1a5871['and']('i.'+_0x58f4c2+_0x99bc('0x1b'),_['map'](_0x289c6d,'id'));}}else if(!_0x38aec7[_0x58f4c2]){_0x1a5871[_0x99bc('0x45')]('i.'+_0x58f4c2+_0x99bc('0x6b'));}})[_0x99bc('0x60')](function(){return _0x1a5871;});}function getClosedOrderClause(_0x4261d9,_0x42803f){var _0x261b4c='';var _0x1da36a=[_0x99bc('0x6c'),_0x99bc('0x6d'),'i.disposition'];if(_0x4261d9==='mail'){_0x1da36a[_0x99bc('0x6e')](_0x99bc('0x6f'));}if(_0x42803f[_0x99bc('0x70')]==='0'&&_0x4261d9==='mail'){_0x261b4c='i.substatus';}else{if(_0x42803f['closed']==='1'){_0x1da36a['shift']();}_0x261b4c=_0x99bc('0x71')+_0x1da36a[_0x99bc('0x72')](',\x20')+')';}return _0x261b4c;}function getFilteredInteractions(_0xed8dcd,_0x12d7a7,_0x580474,_0x5b0305){var _0x5da232=utils[_0x99bc('0x10')](_0xed8dcd);var _0x23e1b6=_[_0x99bc('0x66')](_0xed8dcd)+_0x99bc('0x73');var _0x30c736=[];var _0x5d588e=getTagsQuery();var _0x376d62={'type':db['Sequelize'][_0x99bc('0x74')][_0x99bc('0x75')],'raw':!![]};var _0x14e73c=[];var _0x2923dd=[];return db[_0x99bc('0x76')][_0x99bc('0x77')](_0x5d588e[_0x99bc('0x78')](),_0x376d62)['then'](function(_0x31b9dd){_0x30c736=_['keyBy'](_0x31b9dd,'id');_0x376d62=_['merge'](_0x376d62,{'model':db[_0x23e1b6],'mapToModel':!![],'nest':!![]});if(_0x580474[_0x99bc('0x61')]){_0x5b0305[_0x99bc('0x79')]['forEach'](function(_0x5d40ae){_0x12d7a7[_0x99bc('0x14')]('i.'+_0x5d40ae);});}else{_0x12d7a7['field']('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','unreadMessages');_0x12d7a7[_0x99bc('0x14')](_0x99bc('0x7a'),_0x99bc('0x7b'));_0x12d7a7[_0x99bc('0x14')](_0x99bc('0x7c'),_0x99bc('0x7d'));if(_0xed8dcd===_0x99bc('0x34')){_0x12d7a7[_0x99bc('0x14')](_0x99bc('0x7e'),_0x99bc('0x7f'));_0x12d7a7['field']('CASE\x20WHEN\x20i.to\x20IS\x20NOT\x20NULL\x20AND\x20i.to\x20<>\x20\x27\x27\x20AND\x20i.to\x20NOT\x20LIKE\x20CONCAT(\x27%\x27,\x20a.email,\x20\x27%\x27)\x20THEN\x20TRIM(SUBSTRING_INDEX(i.to,\x20\x27<\x27,\x201))\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','contactName');_0x12d7a7[_0x99bc('0x14')](_0x99bc('0x80'));_0x12d7a7[_0x99bc('0x14')](_0x99bc('0x81'));_0x12d7a7['field']('i.updatedAt');_0x12d7a7[_0x99bc('0x14')]('i.closed');_0x12d7a7[_0x99bc('0x14')](_0x99bc('0x82'));_0x12d7a7[_0x99bc('0x14')]('i.attach');_0x12d7a7[_0x99bc('0x14')](_0x99bc('0x83'));_0x12d7a7[_0x99bc('0x14')](_0x99bc('0x84'));_0x12d7a7[_0x99bc('0x14')]('i.subject');_0x12d7a7[_0x99bc('0x14')](_0x99bc('0x85'));_0x12d7a7['field'](_0x99bc('0x6d'));_0x12d7a7[_0x99bc('0x14')]('i.thirdDisposition');_0x12d7a7['field']('i.substatus');_0x12d7a7[_0x99bc('0x14')](_0x99bc('0x86'));_0x12d7a7[_0x99bc('0x14')]('i.ContactId');_0x12d7a7[_0x99bc('0x14')](_0x99bc('0x87'));_0x12d7a7['field']('i.UserId');}else if(_0xed8dcd==='openchannel'){_0x12d7a7[_0x99bc('0x14')](_0x99bc('0x88'),_0x99bc('0x89'));}else{_0x12d7a7[_0x99bc('0x14')](_0x99bc('0x8a'),_0x99bc('0x89'));}if(_0xed8dcd!==_0x99bc('0x34')){_0x12d7a7[_0x99bc('0x14')](_0x99bc('0x8b'));}_0x12d7a7[_0x99bc('0x14')](_0x99bc('0x8c'),_0x99bc('0x8d'));_0x12d7a7[_0x99bc('0x14')](_0x99bc('0x8e'),_0x99bc('0x8f'));_0x12d7a7[_0x99bc('0x14')]('c.email',_0x99bc('0x90'));_0x12d7a7[_0x99bc('0x14')](_0x99bc('0x91'),'Contact.phone');_0x12d7a7['field'](_0x99bc('0x92'),_0x99bc('0x93'));_0x12d7a7['field'](_0x99bc('0x94'),_0x99bc('0x95'));_0x12d7a7[_0x99bc('0x14')](_0x99bc('0x96'),_0x99bc('0x97'));_0x12d7a7[_0x99bc('0x14')](_0x99bc('0x98'),_0x99bc('0x99'));_0x12d7a7['field'](_0x99bc('0x9a'),_0x99bc('0x9b'));}if(_0x5b0305[_0x99bc('0x9c')]){_0x12d7a7[_0x99bc('0x9c')](_0x5b0305[_0x99bc('0x9c')]);}if(_0x5b0305[_0x99bc('0x9d')]){_0x12d7a7[_0x99bc('0x9d')](_0x5b0305[_0x99bc('0x9d')]);}return db['sequelize']['query'](_0x12d7a7['toString'](),_0x376d62);})[_0x99bc('0x60')](function(_0x2eaf9f){_0x14e73c=_0x2eaf9f;var _0x358f04=getUsersQuery(_0xed8dcd,_0x14e73c);return db['sequelize'][_0x99bc('0x77')](_0x358f04['toString'](),_0x376d62);})[_0x99bc('0x60')](function(_0x54f8e0){_0x2923dd=_['groupBy'](_0x54f8e0,_0x5da232);if(_0xed8dcd==='mail'){return db['Setting']['findOne']({'attributes':[_0x99bc('0x9e')],'raw':!![]});}})['then'](function(_0x524947){var _0x4402aa=_0x524947?_0x524947[_0x99bc('0x9e')]:undefined;var _0x4bbcb5=_0x14e73c[_0x99bc('0x1c')](function(_0x1c0497){return updateInteraction(_0x1c0497,_0x30c736,_0x2923dd,_0x4402aa);});return Promise[_0x99bc('0x9f')](_0x4bbcb5);});}function countFilteredInteractions(_0xa469c0,_0x3855f1){var _0x26d066=_0xa469c0['clone']();_0x26d066[_0x99bc('0x14')](_0x99bc('0xa0'));_0x26d066[_0x99bc('0x14')](_0x99bc('0xa1'),_0x99bc('0x43'));var _0x283c9b=utils[_0x99bc('0xa2')](_0x3855f1);if(!_[_0x99bc('0xa3')](_0x283c9b)){_0x26d066['where']('t.id\x20IN\x20?',_0x283c9b);}var _0x61f4d1={'type':db[_0x99bc('0xa4')][_0x99bc('0x74')][_0x99bc('0x75')],'raw':!![]};return db['sequelize'][_0x99bc('0x77')](_0x26d066[_0x99bc('0x78')](),_0x61f4d1);}module[_0x99bc('0xa5')]={'checkAccountsRestrictions':checkAccountsRestrictions,'countFilteredInteractions':countFilteredInteractions,'getClosedOrderClause':getClosedOrderClause,'getFilteredInteractions':getFilteredInteractions,'getInteractionsQuery':getInteractionsQuery,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipInteractionsQuery':skipInteractionsQuery};
\ No newline at end of file
+var _0xd0ab=['enableEmailPreview','all','clone','COUNT(*)','isEmpty','lodash','squel','../parsers/advancedSearch','../parsers/qs','updateInteraction','../../mysqldb','role','select','field','name','color','from','tools_tags','getInteractionFK','user_has_','_interactions','u.id','u.fullname','ui.','users','length','where','\x20IN\x20?','map','getInteractionsTables','interactions','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','left_join','accounts','messages','me.','\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','getSelectedTags','forEach','unreadMessages\x20{OPERATOR}\x200','replace','{OPERATOR}','isNumeric','i.id\x20LIKE\x20?','sms','fax','i.fax\x20LIKE\x20?','openchannel','i.from\x20LIKE\x20?','mail','c.email\x20LIKE\x20?','MATCH\x20(i.to,\x20i.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','MATCH\x20(me.plainBody,\x20me.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','parseSearch','conditions','find','type','default','text','start','value','end','read','and','operator','$substring','split','contact','ContactId','buildExpression','Tag','tags','clause','ids','user','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','body','plainBody','getAccountFK','keys','some','compact','concat','createdAt','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20=\x20?','resolve','then','fields','tag','filter','get','Websites','search','agent','\x20IS\x20NOT\x20NULL','i.secondDisposition','unshift','i.substatus','closed','join','capitalize','Interaction','Sequelize','QueryTypes','SELECT','sequelize','query','toString','keyBy','merge','unreadMessages','a.key','a.mandatoryDisposition','Account.email','CASE\x20WHEN\x20i.to\x20IS\x20NOT\x20NULL\x20AND\x20i.to\x20<>\x20\x27\x27\x20AND\x20i.to\x20NOT\x20LIKE\x20CONCAT(\x27%\x27,\x20a.email,\x20\x27%\x27)\x20THEN\x20TRIM(SUBSTRING_INDEX(i.to,\x20\x27<\x27,\x201))\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','contactName','i.createdAt','i.updatedAt','i.closed','i.attach','i.lastMsgAt','i.lastMsgDirection','i.subject','i.disposition','i.thirdDisposition','i.to','i.ContactId','i.MailAccountId','i.UserId','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','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','Contact.firstName','Contact.lastName','c.email','Contact.email','c.phone','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname','o.internal','GROUP_CONCAT(DISTINCT\x20t.id)','TagIds','limit','offset','Setting','findOne'];(function(_0x4ea571,_0x524bc2){var _0x122eba=function(_0x2b82be){while(--_0x2b82be){_0x4ea571['push'](_0x4ea571['shift']());}};_0x122eba(++_0x524bc2);}(_0xd0ab,0x147));var _0xbd0a=function(_0x149e18,_0xa2e269){_0x149e18=_0x149e18-0x0;var _0x14112f=_0xd0ab[_0x149e18];return _0x14112f;};'use strict';var _=require(_0xbd0a('0x0'));var squel=require(_0xbd0a('0x1'));var as=require(_0xbd0a('0x2'));var qs=require(_0xbd0a('0x3'));var updateInteraction=require('./update-interaction')[_0xbd0a('0x4')];var utils=require('./utils');var db=require(_0xbd0a('0x5'))['db'];function skipInteractionsQuery(_0x4b86fe,_0x23fb63,_0x478503){var _0x2ee192=![];var _0x52a28c=utils['getAccountFK'](_0x4b86fe);if(_0x23fb63[_0xbd0a('0x6')]==='agent'&&!_0x478503['search']&&!_0x478503[_0x52a28c]){_0x2ee192=!![];}return _0x2ee192;}function getTagsQuery(){return squel[_0xbd0a('0x7')]()[_0xbd0a('0x8')]('id')[_0xbd0a('0x8')](_0xbd0a('0x9'))[_0xbd0a('0x8')](_0xbd0a('0xa'))[_0xbd0a('0xb')](_0xbd0a('0xc'));}function getUsersQuery(_0x411bb4,_0x4c6881){var _0x560674=utils[_0xbd0a('0xd')](_0x411bb4);var _0x1da269=_0xbd0a('0xe')+_0x411bb4+_0xbd0a('0xf');var _0xbb99f=squel[_0xbd0a('0x7')]()[_0xbd0a('0x8')](_0xbd0a('0x10'))[_0xbd0a('0x8')](_0xbd0a('0x11'))[_0xbd0a('0x8')](_0xbd0a('0x12')+_0x560674)[_0xbd0a('0xb')](_0x1da269,'ui')['left_join'](_0xbd0a('0x13'),'u','u.id\x20=\x20ui.UserId');if(_0x4c6881[_0xbd0a('0x14')]>0x0){_0xbb99f[_0xbd0a('0x15')](_0xbd0a('0x12')+_0x560674+_0xbd0a('0x16'),_[_0xbd0a('0x17')](_0x4c6881,'id'));}return _0xbb99f;}function getInteractionsQuery(_0x5da037){var _0x42ab19=utils[_0xbd0a('0x18')](_0x5da037);var _0x469752=utils['getAccountFK'](_0x5da037);var _0x1a14c5=utils[_0xbd0a('0xd')](_0x5da037);return squel[_0xbd0a('0x7')]()[_0xbd0a('0xb')](_0x42ab19[_0xbd0a('0x19')],'i')['left_join']('cm_contacts','c',_0xbd0a('0x1a'))[_0xbd0a('0x1b')]('users','o','o.id\x20=\x20i.UserId')[_0xbd0a('0x1b')](_0x42ab19[_0xbd0a('0x1c')],'a','a.id\x20=\x20i.'+_0x469752)[_0xbd0a('0x1b')](_0x42ab19[_0xbd0a('0x1d')],'me',_0xbd0a('0x1e')+_0x1a14c5+_0xbd0a('0x1f'))['left_join'](_0x42ab19['interactionsTags'],'it','it.'+_0x1a14c5+'\x20=\x20i.id')[_0xbd0a('0x1b')](_0xbd0a('0xc'),'t',_0xbd0a('0x20'));}function getSqlClauses(){var _0x5dbc52={'body':squel[_0xbd0a('0x21')](),'contact':squel['expr'](),'default':squel[_0xbd0a('0x21')](),'fields':squel[_0xbd0a('0x21')](),'filter':squel[_0xbd0a('0x21')](),'read':squel[_0xbd0a('0x21')](),'tags':{'clause':squel[_0xbd0a('0x21')](),'ids':null},'user':squel[_0xbd0a('0x21')]()};return _0x5dbc52;}function parseTagParameter(_0x55378a){var _0x5c10c5=squel['expr']();if(_0x55378a){var _0x42ce34=utils[_0xbd0a('0x22')](_0x55378a);_0x42ce34[_0xbd0a('0x23')](function(_0x102a31){_0x5c10c5['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x102a31+',%');});}return _0x5c10c5;}function parseReadParameter(_0x5226ac){var _0x3a20fa='';if(_0x5226ac){_0x3a20fa=_0xbd0a('0x24');if(_0x5226ac==='1'){_0x3a20fa=_0x3a20fa[_0xbd0a('0x25')](_0xbd0a('0x26'),'=');}else{_0x3a20fa=_0x3a20fa[_0xbd0a('0x25')](_0xbd0a('0x26'),'>');}}return _0x3a20fa;}function parseSearchFilter(_0x27ced9,_0xca745e){var _0x28bb07=squel['expr']();if(_0xca745e){var _0x3803ee=_0xca745e[_0xbd0a('0x25')]('\x5c','\x5c\x5c')[_0xbd0a('0x25')](/'/g,'\x27\x27');if(qs[_0xbd0a('0x27')](_0x3803ee)){_0x28bb07['or'](_0xbd0a('0x28'),_0x3803ee+'%');if([_0xbd0a('0x29'),'whatsapp']['includes'](_0x27ced9)){_0x28bb07['or']('i.phone\x20LIKE\x20?',_0x3803ee+'%');}else if(_0x27ced9===_0xbd0a('0x2a')){_0x28bb07['or'](_0xbd0a('0x2b'),_0x3803ee+'%');}else if(_0x27ced9===_0xbd0a('0x2c')){_0x28bb07['or'](_0xbd0a('0x2d'),_0x3803ee+'%');}}else if(_0x27ced9===_0xbd0a('0x2e')&&qs['isEmail'](_0x3803ee)){_0x28bb07['or'](_0xbd0a('0x2f'),_0x3803ee+'%');}else{if(_0x27ced9===_0xbd0a('0x2e')){_0x28bb07['or'](_0xbd0a('0x30'),qs[_0xbd0a('0x31')](_0x3803ee,!![]))['or'](_0xbd0a('0x32'),qs['getFullTextValue'](_0x3803ee));}else if(_0x27ced9!==_0xbd0a('0x2a')){_0x28bb07['or'](_0xbd0a('0x33'),qs[_0xbd0a('0x31')](_0x3803ee));}_0x28bb07['or'](_0xbd0a('0x34'),qs['getFullTextValue'](_0x3803ee,!![]),null);}}return _0x28bb07;}function parseAdvancedSearchFilter(_0x4b9756,_0x20f777){var _0x162a47=getSqlClauses();var _0x465335=as[_0xbd0a('0x35')](_0x4b9756);var _0x3c6b5d=_0x465335['sqlOperator'];for(var _0x2aa482=0x0;_0x2aa482<_0x465335[_0xbd0a('0x36')][_0xbd0a('0x14')];_0x2aa482++){var _0x6011b6=_0x465335[_0xbd0a('0x36')][_0x2aa482];var _0x2d0be6='i';var _0x1c00fe=_[_0xbd0a('0x37')](_0x20f777,[_0xbd0a('0x9'),_0x6011b6[_0xbd0a('0x8')]]);if(_0x1c00fe){var _0x386203=as['buildExpression'](_0x2d0be6,_0x1c00fe[_0xbd0a('0x38')],_0x6011b6);_0x162a47[_0xbd0a('0x39')][_0x3c6b5d](_0x386203[_0xbd0a('0x3a')],_0x386203['value'][_0xbd0a('0x3b')],_0x386203[_0xbd0a('0x3c')][_0xbd0a('0x3d')]);}else{switch(_0x6011b6[_0xbd0a('0x8')]){case'unreadMessages':var _0xe75aab=parseReadParameter(_0x6011b6['value']);_0x162a47[_0xbd0a('0x3e')][_0xbd0a('0x3f')](_0xe75aab);break;case'Contact':if(_0x6011b6[_0xbd0a('0x40')]===_0xbd0a('0x41')){if(_0x6011b6['value'][_0xbd0a('0x42')]('\x20')['length']>0x1){_0x162a47['contact'][_0x3c6b5d](_0xbd0a('0x34'),qs[_0xbd0a('0x31')](_0x6011b6[_0xbd0a('0x3c')],!![]),null);}else{var _0x55fa16='%'+_0x6011b6['value']+'%';_0x162a47[_0xbd0a('0x43')][_0x3c6b5d]('c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?',_0x55fa16,_0x55fa16,_0x55fa16);}}else{_0x1c00fe=_[_0xbd0a('0x37')](_0x20f777,[_0xbd0a('0x9'),_0xbd0a('0x44')]);_0x6011b6['field']=_0xbd0a('0x44');_0x386203=as[_0xbd0a('0x45')](_0x2d0be6,_0x1c00fe[_0xbd0a('0x38')],_0x6011b6);_0x162a47[_0xbd0a('0x43')][_0x3c6b5d](_0x386203[_0xbd0a('0x3a')],_0x386203['value'][_0xbd0a('0x3b')],_0x386203['value'][_0xbd0a('0x3d')]);}break;case _0xbd0a('0x46'):var _0x1e2da4=_0x6011b6['value'][_0xbd0a('0x42')](',')['map'](function(_0x3f840b){return Number(_0x3f840b);});var _0xcbace1=parseTagParameter(_0x1e2da4);_0x162a47[_0xbd0a('0x47')][_0xbd0a('0x48')][_0xbd0a('0x3f')](_0xcbace1);_0x162a47[_0xbd0a('0x47')][_0xbd0a('0x49')]=_0x1e2da4;break;case'User':if(_0x6011b6[_0xbd0a('0x40')]===_0xbd0a('0x41')){_0x162a47[_0xbd0a('0x4a')][_0x3c6b5d](_0xbd0a('0x4b'),'%'+_0x6011b6[_0xbd0a('0x3c')]+'%',null);}else{_0x1c00fe=_[_0xbd0a('0x37')](_0x20f777,[_0xbd0a('0x9'),'UserId']);_0x6011b6[_0xbd0a('0x8')]=_0xbd0a('0x4c');_0x386203=as['buildExpression'](_0x2d0be6,_0x1c00fe[_0xbd0a('0x38')],_0x6011b6);_0x162a47[_0xbd0a('0x4a')][_0x3c6b5d](_0x386203[_0xbd0a('0x3a')],_0x386203[_0xbd0a('0x3c')][_0xbd0a('0x3b')],_0x386203[_0xbd0a('0x3c')]['end']);}break;case _0xbd0a('0x4d'):case _0xbd0a('0x4e'):_0x386203=as[_0xbd0a('0x45')]('me',null,_0x6011b6);_0x162a47[_0xbd0a('0x4d')][_0x3c6b5d](_0x386203[_0xbd0a('0x3a')],_0x386203[_0xbd0a('0x3c')][_0xbd0a('0x3b')],_0x386203[_0xbd0a('0x3c')][_0xbd0a('0x3d')]);break;}}}return _0x162a47;}function parseModelFields(_0x2cb086,_0x126fc4,_0x3b0345){var _0x15410c=utils[_0xbd0a('0x4f')](_0x2cb086);var _0x22596b=squel[_0xbd0a('0x21')]();var _0x5293d3=_(_0x126fc4)[_0xbd0a('0x50')]()['map'](function(_0x553fe9){return _[_0xbd0a('0x51')](_0x3b0345,['name',_0x553fe9])?_0x553fe9:undefined;})[_0xbd0a('0x52')]()[_0xbd0a('0x3c')]();if(_0x5293d3[_0xbd0a('0x14')]>0x0){_0x5293d3[_0xbd0a('0x23')](function(_0xe762a2){if(_0xe762a2===_0x15410c){_0x22596b[_0xbd0a('0x3f')]('i.'+_0x15410c+_0xbd0a('0x16'),[][_0xbd0a('0x53')](_0x126fc4[_0xe762a2]));}else if(_0xe762a2===_0xbd0a('0x54')){var _0x2a4078=JSON[_0xbd0a('0x55')](_0x126fc4[_0xe762a2])[_0xbd0a('0x56')];var _0x546db4=JSON['parse'](_0x126fc4[_0xe762a2])[_0xbd0a('0x57')];_0x22596b['and'](_0xbd0a('0x58'),_0x2a4078,_0x546db4);}else{if(_0x126fc4[_0xe762a2]===_0xbd0a('0x59')){_0x22596b[_0xbd0a('0x3f')]('i.'+_0xe762a2+'\x20IS\x20NULL');}else{_0x22596b[_0xbd0a('0x3f')]('i.'+_0xe762a2+_0xbd0a('0x5a'),_0x126fc4[_0xe762a2]);}}});}return _0x22596b;}function parseQueryParameters(_0x3f69e4,_0x3f77c9,_0x54c52b){var _0x3024ab=getSqlClauses();return Promise[_0xbd0a('0x5b')]()['then'](function(){return parseModelFields(_0x3f69e4,_0x3f77c9,_0x54c52b);})[_0xbd0a('0x5c')](function(_0x556a2a){_0x3024ab[_0xbd0a('0x5d')][_0xbd0a('0x3f')](_0x556a2a);return parseReadParameter(_0x3f77c9['read']);})[_0xbd0a('0x5c')](function(_0x76b289){_0x3024ab[_0xbd0a('0x3e')][_0xbd0a('0x3f')](_0x76b289);return parseTagParameter(_0x3f77c9[_0xbd0a('0x5e')]);})['then'](function(_0x38be18){_0x3024ab[_0xbd0a('0x47')][_0xbd0a('0x48')][_0xbd0a('0x3f')](_0x38be18);return parseSearchFilter(_0x3f69e4,_0x3f77c9[_0xbd0a('0x5f')]);})['then'](function(_0x1cbc8b){_0x3024ab[_0xbd0a('0x5f')]=_0x1cbc8b;return _0x3024ab;});}function checkAccountsRestrictions(_0x4f34b4,_0x382119,_0x119219){var _0x40432c=utils['getAccountFK'](_0x4f34b4);var _0x3c8440=_0xbd0a('0x60')+_['capitalize'](_0x4f34b4)+(_0x4f34b4==='chat'?_0xbd0a('0x61'):'Accounts');var _0x589a6b=squel['expr']();return Promise[_0xbd0a('0x5b')]()['then'](function(){if(_0x119219[_0xbd0a('0x62')]&&_0x382119['role']===_0xbd0a('0x63')){return _0x382119[_0x3c8440]({'attributes':['id'],'raw':!![]});}})[_0xbd0a('0x5c')](function(_0x480479){if(_0x480479){if(_0x480479['length']===0x0){_0x589a6b[_0xbd0a('0x3f')]('i.'+_0x40432c+'\x20IS\x20NULL');}else{_0x589a6b[_0xbd0a('0x3f')]('i.'+_0x40432c+_0xbd0a('0x16'),_[_0xbd0a('0x17')](_0x480479,'id'));}}else if(!_0x119219[_0x40432c]){_0x589a6b[_0xbd0a('0x3f')]('i.'+_0x40432c+_0xbd0a('0x64'));}})['then'](function(){return _0x589a6b;});}function getClosedOrderClause(_0x1307ad,_0x50fb9b){var _0xe7cb91='';var _0x531822=['i.thirdDisposition',_0xbd0a('0x65'),'i.disposition'];if(_0x1307ad===_0xbd0a('0x2e')){_0x531822[_0xbd0a('0x66')](_0xbd0a('0x67'));}if(_0x50fb9b[_0xbd0a('0x68')]==='0'&&_0x1307ad==='mail'){_0xe7cb91=_0xbd0a('0x67');}else{if(_0x50fb9b['closed']==='1'){_0x531822['shift']();}_0xe7cb91='CONCAT_WS(\x27\x27,\x20'+_0x531822[_0xbd0a('0x69')](',\x20')+')';}return _0xe7cb91;}function getFilteredInteractions(_0x25e849,_0x3dcbc4,_0x187fdb,_0x129a22){var _0x415e8d=utils[_0xbd0a('0xd')](_0x25e849);var _0x149e3b=_[_0xbd0a('0x6a')](_0x25e849)+_0xbd0a('0x6b');var _0x44f7a4=[];var _0x4aec95=getTagsQuery();var _0x1d9086={'type':db[_0xbd0a('0x6c')][_0xbd0a('0x6d')][_0xbd0a('0x6e')],'raw':!![]};var _0x46e386=[];var _0x58cdaa=[];return db[_0xbd0a('0x6f')][_0xbd0a('0x70')](_0x4aec95[_0xbd0a('0x71')](),_0x1d9086)[_0xbd0a('0x5c')](function(_0x298ef1){_0x44f7a4=_[_0xbd0a('0x72')](_0x298ef1,'id');_0x1d9086=_[_0xbd0a('0x73')](_0x1d9086,{'model':db[_0x149e3b],'mapToModel':!![],'nest':!![]});if(_0x187fdb[_0xbd0a('0x5d')]){_0x129a22['attributes'][_0xbd0a('0x23')](function(_0x18d5a3){_0x3dcbc4[_0xbd0a('0x8')]('i.'+_0x18d5a3);});}else{_0x3dcbc4[_0xbd0a('0x8')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0xbd0a('0x74'));_0x3dcbc4['field'](_0xbd0a('0x75'),'Account.key');_0x3dcbc4[_0xbd0a('0x8')](_0xbd0a('0x76'),'Account.mandatoryDisposition');if(_0x25e849===_0xbd0a('0x2e')){_0x3dcbc4[_0xbd0a('0x8')]('a.email',_0xbd0a('0x77'));_0x3dcbc4['field'](_0xbd0a('0x78'),_0xbd0a('0x79'));_0x3dcbc4['field']('i.id');_0x3dcbc4[_0xbd0a('0x8')](_0xbd0a('0x7a'));_0x3dcbc4[_0xbd0a('0x8')](_0xbd0a('0x7b'));_0x3dcbc4[_0xbd0a('0x8')](_0xbd0a('0x7c'));_0x3dcbc4[_0xbd0a('0x8')]('i.closedAt');_0x3dcbc4[_0xbd0a('0x8')](_0xbd0a('0x7d'));_0x3dcbc4[_0xbd0a('0x8')](_0xbd0a('0x7e'));_0x3dcbc4['field'](_0xbd0a('0x7f'));_0x3dcbc4[_0xbd0a('0x8')](_0xbd0a('0x80'));_0x3dcbc4[_0xbd0a('0x8')](_0xbd0a('0x81'));_0x3dcbc4[_0xbd0a('0x8')]('i.secondDisposition');_0x3dcbc4[_0xbd0a('0x8')](_0xbd0a('0x82'));_0x3dcbc4[_0xbd0a('0x8')](_0xbd0a('0x67'));_0x3dcbc4[_0xbd0a('0x8')](_0xbd0a('0x83'));_0x3dcbc4[_0xbd0a('0x8')](_0xbd0a('0x84'));_0x3dcbc4[_0xbd0a('0x8')](_0xbd0a('0x85'));_0x3dcbc4[_0xbd0a('0x8')](_0xbd0a('0x86'));}else if(_0x25e849===_0xbd0a('0x2c')){_0x3dcbc4[_0xbd0a('0x8')](_0xbd0a('0x87'),_0xbd0a('0x79'));}else{_0x3dcbc4[_0xbd0a('0x8')](_0xbd0a('0x88'),'contactName');}if(_0x25e849!==_0xbd0a('0x2e')){_0x3dcbc4[_0xbd0a('0x8')]('i.*');}_0x3dcbc4[_0xbd0a('0x8')]('c.firstName',_0xbd0a('0x89'));_0x3dcbc4[_0xbd0a('0x8')]('c.lastName',_0xbd0a('0x8a'));_0x3dcbc4[_0xbd0a('0x8')](_0xbd0a('0x8b'),_0xbd0a('0x8c'));_0x3dcbc4[_0xbd0a('0x8')](_0xbd0a('0x8d'),_0xbd0a('0x8e'));_0x3dcbc4[_0xbd0a('0x8')](_0xbd0a('0x8f'),_0xbd0a('0x90'));_0x3dcbc4[_0xbd0a('0x8')](_0xbd0a('0x91'),_0xbd0a('0x92'));_0x3dcbc4[_0xbd0a('0x8')](_0xbd0a('0x93'),_0xbd0a('0x94'));_0x3dcbc4[_0xbd0a('0x8')](_0xbd0a('0x95'),'Owner.internal');_0x3dcbc4[_0xbd0a('0x8')](_0xbd0a('0x96'),_0xbd0a('0x97'));}if(_0x129a22['limit']){_0x3dcbc4[_0xbd0a('0x98')](_0x129a22[_0xbd0a('0x98')]);}if(_0x129a22[_0xbd0a('0x99')]){_0x3dcbc4[_0xbd0a('0x99')](_0x129a22['offset']);}return db[_0xbd0a('0x6f')][_0xbd0a('0x70')](_0x3dcbc4[_0xbd0a('0x71')](),_0x1d9086);})[_0xbd0a('0x5c')](function(_0x3ff69e){_0x46e386=_0x3ff69e;var _0x1dab8f=getUsersQuery(_0x25e849,_0x46e386);return db[_0xbd0a('0x6f')][_0xbd0a('0x70')](_0x1dab8f[_0xbd0a('0x71')](),_0x1d9086);})[_0xbd0a('0x5c')](function(_0x1de504){_0x58cdaa=_['groupBy'](_0x1de504,_0x415e8d);if(_0x25e849==='mail'){return db[_0xbd0a('0x9a')][_0xbd0a('0x9b')]({'attributes':[_0xbd0a('0x9c')],'raw':!![]});}})[_0xbd0a('0x5c')](function(_0x10fd4a){var _0x500b6e=_0x10fd4a?_0x10fd4a[_0xbd0a('0x9c')]:undefined;var _0x1dc327=_0x46e386['map'](function(_0x19bf47){return updateInteraction(_0x19bf47,_0x44f7a4,_0x58cdaa,_0x500b6e);});return Promise[_0xbd0a('0x9d')](_0x1dc327);});}function countFilteredInteractions(_0x962696,_0x23acaa){var _0xff2d68=_0x962696[_0xbd0a('0x9e')]();_0xff2d68['field'](_0xbd0a('0x9f'));_0xff2d68[_0xbd0a('0x8')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0xbd0a('0x74'));var _0x3d0ee7=utils[_0xbd0a('0x22')](_0x23acaa);if(!_[_0xbd0a('0xa0')](_0x3d0ee7)){_0xff2d68[_0xbd0a('0x15')]('t.id\x20IN\x20?',_0x3d0ee7);}var _0x530b94={'type':db['Sequelize'][_0xbd0a('0x6d')]['SELECT'],'raw':!![]};return db[_0xbd0a('0x6f')][_0xbd0a('0x70')](_0xff2d68[_0xbd0a('0x71')](),_0x530b94);}module['exports']={'checkAccountsRestrictions':checkAccountsRestrictions,'countFilteredInteractions':countFilteredInteractions,'getClosedOrderClause':getClosedOrderClause,'getFilteredInteractions':getFilteredInteractions,'getInteractionsQuery':getInteractionsQuery,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipInteractionsQuery':skipInteractionsQuery};
\ No newline at end of file
index d2689d1..94d7605 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e0e=['split','forEach','push','waiting','talking','answered','unmanaged','abandoned','closed','UserId','disposition','MailMessage','findOne','out','plainBody','-id','catch','updateInteraction','then','Users','TagIds','../../mysqldb','fullname'];(function(_0x13235f,_0x2d6a35){var _0x5c8694=function(_0x3b25f4){while(--_0x3b25f4){_0x13235f['push'](_0x13235f['shift']());}};_0x5c8694(++_0x2d6a35);}(_0x4e0e,0x1ca));var _0xe4e0=function(_0x29a45f,_0x1a3548){_0x29a45f=_0x29a45f-0x0;var _0x1d0145=_0x4e0e[_0x29a45f];return _0x1d0145;};'use strict';var _=require('lodash');var db=require(_0xe4e0('0x0'))['db'];function getInteractionUsers(_0x13acd4,_0x29ba6e){return new Promise(function(_0x57945b,_0x4f5415){try{var _0x563423=[];if(_0x29ba6e[_0x13acd4]){_0x563423=_0x29ba6e[_0x13acd4]['map'](function(_0x2186f2){return{'id':_0x2186f2['id'],'fullname':_0x2186f2[_0xe4e0('0x1')]};});}return _0x57945b(_0x563423);}catch(_0x1d0efb){_0x4f5415(_0x1d0efb);}});}function getInteractionTags(_0x5605a2,_0x112dc6){var _0x2a6a60=[];if(_0x5605a2){_0x5605a2[_0xe4e0('0x2')](',')[_0xe4e0('0x3')](function(_0x37bb67){_0x2a6a60[_0xe4e0('0x4')](_0x112dc6[_0x37bb67]);});}return _0x2a6a60;}function updateWaitingCounter(_0x32b7a9){if(_0x32b7a9[_0xe4e0('0x5')]){_0x32b7a9[_0xe4e0('0x5')]-=0x1;}}function updateInteractionCounters(_0x2c2934){_0x2c2934[_0xe4e0('0x5')]=0x0;_0x2c2934[_0xe4e0('0x6')]=0x0;_0x2c2934[_0xe4e0('0x7')]=0x0;_0x2c2934[_0xe4e0('0x8')]=0x0;_0x2c2934[_0xe4e0('0x9')]=0x0;_0x2c2934['total']=0x0;if(_0x2c2934[_0xe4e0('0xa')]){if(_0x2c2934['disposition']==='abandoned'){_0x2c2934[_0xe4e0('0x9')]+=0x1;updateWaitingCounter(_0x2c2934);}if(_0x2c2934[_0xe4e0('0xb')]){_0x2c2934[_0xe4e0('0x7')]+=0x1;if(_0x2c2934[_0xe4e0('0x6')]){_0x2c2934[_0xe4e0('0x6')]-=0x1;}}else{if(_0x2c2934[_0xe4e0('0xc')]){_0x2c2934[_0xe4e0('0x8')]+=0x1;updateWaitingCounter(_0x2c2934);}}}else{if(!_0x2c2934[_0xe4e0('0xb')]){_0x2c2934[_0xe4e0('0x5')]+=0x1;}if(_0x2c2934['UserId']){_0x2c2934[_0xe4e0('0x6')]+=0x1;updateWaitingCounter(_0x2c2934);}}_0x2c2934['total']+=0x1;return _0x2c2934;}function getLastMessageText(_0x138e86){return db[_0xe4e0('0xd')][_0xe4e0('0xe')]({'where':{'$and':[{'MailInteractionId':_0x138e86['id']},{'$or':[{'direction':'in'},{'$and':[{'direction':_0xe4e0('0xf')},{'secret':![]},{'UserId':{'$ne':null}}]}]}]},'attributes':[_0xe4e0('0x10')],'order':_0xe4e0('0x11'),'raw':!![]})['then'](function(_0x23180f){if(_0x23180f&&_0x23180f[_0xe4e0('0x10')]){_0x138e86['lastMsgText']=_['trimStart'](_0x23180f[_0xe4e0('0x10')]);}return _0x138e86;})[_0xe4e0('0x12')](function(_0x39386a){throw _0x39386a;});}exports[_0xe4e0('0x13')]=function(_0xcbe363,_0x1e505b,_0x26b52e,_0x1eaae2){return new Promise(function(_0x42007d,_0x4b66cc){return getInteractionUsers(_0xcbe363['id'],_0x26b52e)[_0xe4e0('0x14')](function(_0x2dbdf8){_0xcbe363[_0xe4e0('0x15')]=_0x2dbdf8;return getInteractionTags(_0xcbe363['TagIds'],_0x1e505b);})[_0xe4e0('0x14')](function(_0x5a0ee2){_0xcbe363['Tags']=_0x5a0ee2;delete _0xcbe363[_0xe4e0('0x16')];return updateInteractionCounters(_0xcbe363);})[_0xe4e0('0x14')](function(_0x5aa39d){if(_0x1eaae2){return getLastMessageText(_0x5aa39d);}else{return _0x5aa39d;}})[_0xe4e0('0x14')](function(_0x12483d){_0x42007d(_0x12483d);})[_0xe4e0('0x12')](function(_0x2871e2){_0x4b66cc(_0x2871e2);});});};
\ No newline at end of file
+var _0x74df=['abandoned','total','closed','disposition','UserId','unmanaged','MailMessage','findOne','out','plainBody','-id','then','lastMsgText','trimStart','catch','updateInteraction','Users','TagIds','lodash','../../mysqldb','forEach','waiting','talking','answered'];(function(_0x2174fd,_0x259235){var _0x3bfd50=function(_0x486801){while(--_0x486801){_0x2174fd['push'](_0x2174fd['shift']());}};_0x3bfd50(++_0x259235);}(_0x74df,0xd2));var _0xf74d=function(_0x54d9af,_0x4afe0d){_0x54d9af=_0x54d9af-0x0;var _0x328a3a=_0x74df[_0x54d9af];return _0x328a3a;};'use strict';var _=require(_0xf74d('0x0'));var db=require(_0xf74d('0x1'))['db'];function getInteractionUsers(_0x5852eb,_0x3c1fc0){return new Promise(function(_0x39ed0a,_0x22aacd){try{var _0x3d5935=[];if(_0x3c1fc0[_0x5852eb]){_0x3d5935=_0x3c1fc0[_0x5852eb]['map'](function(_0xaf5330){return{'id':_0xaf5330['id'],'fullname':_0xaf5330['fullname']};});}return _0x39ed0a(_0x3d5935);}catch(_0x41cef9){_0x22aacd(_0x41cef9);}});}function getInteractionTags(_0x173e24,_0x2da6b2){var _0x21aa9e=[];if(_0x173e24){_0x173e24['split'](',')[_0xf74d('0x2')](function(_0x46959b){_0x21aa9e['push'](_0x2da6b2[_0x46959b]);});}return _0x21aa9e;}function updateWaitingCounter(_0x3727d2){if(_0x3727d2[_0xf74d('0x3')]){_0x3727d2['waiting']-=0x1;}}function updateInteractionCounters(_0x292392){_0x292392[_0xf74d('0x3')]=0x0;_0x292392[_0xf74d('0x4')]=0x0;_0x292392[_0xf74d('0x5')]=0x0;_0x292392['unmanaged']=0x0;_0x292392[_0xf74d('0x6')]=0x0;_0x292392[_0xf74d('0x7')]=0x0;if(_0x292392[_0xf74d('0x8')]){if(_0x292392[_0xf74d('0x9')]===_0xf74d('0x6')){_0x292392[_0xf74d('0x6')]+=0x1;updateWaitingCounter(_0x292392);}if(_0x292392[_0xf74d('0xa')]){_0x292392[_0xf74d('0x5')]+=0x1;if(_0x292392['talking']){_0x292392[_0xf74d('0x4')]-=0x1;}}else{if(_0x292392[_0xf74d('0x9')]){_0x292392[_0xf74d('0xb')]+=0x1;updateWaitingCounter(_0x292392);}}}else{if(!_0x292392[_0xf74d('0xa')]){_0x292392['waiting']+=0x1;}if(_0x292392[_0xf74d('0xa')]){_0x292392[_0xf74d('0x4')]+=0x1;updateWaitingCounter(_0x292392);}}_0x292392[_0xf74d('0x7')]+=0x1;return _0x292392;}function getLastMessageText(_0x211874){return db[_0xf74d('0xc')][_0xf74d('0xd')]({'where':{'$and':[{'MailInteractionId':_0x211874['id']},{'$or':[{'direction':'in'},{'$and':[{'direction':_0xf74d('0xe')},{'secret':![]},{'UserId':{'$ne':null}}]}]}]},'attributes':[_0xf74d('0xf')],'order':_0xf74d('0x10'),'raw':!![]})[_0xf74d('0x11')](function(_0x5623ab){if(_0x5623ab&&_0x5623ab[_0xf74d('0xf')]){_0x211874[_0xf74d('0x12')]=_[_0xf74d('0x13')](_0x5623ab[_0xf74d('0xf')]);}return _0x211874;})[_0xf74d('0x14')](function(_0x276be9){throw _0x276be9;});}exports[_0xf74d('0x15')]=function(_0x4c21d1,_0x20cee4,_0x4a9379,_0x3909e5){return new Promise(function(_0x25543b,_0x51d6bc){return getInteractionUsers(_0x4c21d1['id'],_0x4a9379)['then'](function(_0x189436){_0x4c21d1[_0xf74d('0x16')]=_0x189436;return getInteractionTags(_0x4c21d1[_0xf74d('0x17')],_0x20cee4);})[_0xf74d('0x11')](function(_0x3c81c8){_0x4c21d1['Tags']=_0x3c81c8;delete _0x4c21d1[_0xf74d('0x17')];return updateInteractionCounters(_0x4c21d1);})[_0xf74d('0x11')](function(_0x473eb2){if(_0x3909e5){return getLastMessageText(_0x473eb2);}else{return _0x473eb2;}})[_0xf74d('0x11')](function(_0x49ebe3){_0x25543b(_0x49ebe3);})['catch'](function(_0x1cd109){_0x51d6bc(_0x1cd109);});});};
\ No newline at end of file
index 06ef93e..1b29ffa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa6f=['sms-interactions','chat-interactions','whatsapp-interactions','capitalize','chat','Website','Account','InteractionId','upperFirst','unknown','websites','accounts','_interactions','_messages','user_has_','isArray','toLowerCase','[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','toUpperCase','name','role','findOne','then','update','info','error','exports','lodash','openchannel-interactions','mail-interactions','../../config/logger','fax-interactions'];(function(_0x4fb570,_0x4236b4){var _0x5d9448=function(_0xca452d){while(--_0xca452d){_0x4fb570['push'](_0x4fb570['shift']());}};_0x5d9448(++_0x4236b4);}(_0xfa6f,0x13b));var _0xffa6=function(_0xe66cf2,_0x32ba5f){_0xe66cf2=_0xe66cf2-0x0;var _0x2d84e7=_0xfa6f[_0xe66cf2];return _0x2d84e7;};'use strict';var _=require(_0xffa6('0x0'));var db=require('../../mysqldb')['db'];var loggers={'openchannel':require('../../config/logger')(_0xffa6('0x1')),'mail':require('../../config/logger')(_0xffa6('0x2')),'fax':require(_0xffa6('0x3'))(_0xffa6('0x4')),'sms':require('../../config/logger')(_0xffa6('0x5')),'chat':require(_0xffa6('0x3'))(_0xffa6('0x6')),'whatsapp':require(_0xffa6('0x3'))(_0xffa6('0x7'))};function getAccountFK(_0x3daa4c){return _[_0xffa6('0x8')](_0x3daa4c)+(_0x3daa4c===_0xffa6('0x9')?_0xffa6('0xa'):_0xffa6('0xb'))+'Id';}function getInteractionFK(_0x319f32){return _['capitalize'](_0x319f32)+_0xffa6('0xc');}function getInteractionId(_0x18cc3e,_0x29f980,_0x331b0d){if(_0x18cc3e&&_0x18cc3e[_[_0xffa6('0xd')](_0x331b0d)+_0xffa6('0xc')]){return _0x18cc3e[_[_0xffa6('0xd')](_0x331b0d)+'InteractionId'];}else if(_0x18cc3e&&_0x18cc3e['id']){return _0x18cc3e['id'];}else if(_0x29f980&&_0x29f980['id']){return _0x29f980['id'];}else{return _0xffa6('0xe');}}function getInteractionsTables(_0x14f2db){return{'accounts':_0x14f2db+'_'+(_0x14f2db===_0xffa6('0x9')?_0xffa6('0xf'):_0xffa6('0x10')),'interactions':_0x14f2db+_0xffa6('0x11'),'interactionsTags':_0x14f2db+'_interaction_has_tags','messages':_0x14f2db+_0xffa6('0x12'),'userInteractions':_0xffa6('0x13')+_0x14f2db+_0xffa6('0x11')};}function getSelectedTags(_0x49badb){var _0x7dff97=[];if(_0x49badb){_0x7dff97=Array[_0xffa6('0x14')](_0x49badb)?_0x49badb:[_0x49badb];}return _0x7dff97;}function log(_0x22ea2b,_0x34d99b,_0x29c451,_0x4d348e,_0x3bb60a,_0x3c0f24){loggers[_0x3bb60a[_0xffa6('0x15')]()][_0x22ea2b](_0xffa6('0x16'),_0x3c0f24[_0xffa6('0x17')](),_0x34d99b?_0x34d99b['id']:null,_0x34d99b?_0x34d99b[_0xffa6('0x18')]:null,_0x34d99b?_0x34d99b[_0xffa6('0x19')]:null,getInteractionId(_0x29c451,_0x4d348e,_0x3bb60a),_0x29c451?JSON['stringify'](_0x29c451):'null');}function updateUser(_0x4570d5,_0x4a4317,_0x4e33dd,_0x14537d,_0x4c02af){db[_['upperFirst'](_0x14537d)+'Interaction'][_0xffa6('0x1a')]({'where':{'id':getInteractionId(_0x4a4317,_0x4e33dd,_0x14537d)}})[_0xffa6('0x1b')](function(_0x492b7f){if(_0x492b7f){return _0x492b7f[_0xffa6('0x1c')]({'UserId':_0x4570d5?_0x4570d5['id']:null});}})['then'](function(_0x3ea2e8){if(_0x3ea2e8){log(_0xffa6('0x1d'),_0x4570d5,_0x4a4317,_0x4e33dd,_0x14537d,_0x4c02af);}})['catch'](function(){log(_0xffa6('0x1e'),_0x4570d5,_0x4a4317,_0x4e33dd,_0x14537d,_0x4c02af);});}module[_0xffa6('0x1f')]={'getAccountFK':getAccountFK,'getInteractionFK':getInteractionFK,'getInteractionsTables':getInteractionsTables,'getSelectedTags':getSelectedTags,'updateUser':updateUser};
\ No newline at end of file
+var _0xb884=['chat','_interactions','_interaction_has_tags','_messages','toUpperCase','name','role','stringify','null','findOne','update','then','info','error','exports','lodash','../../mysqldb','../../config/logger','openchannel-interactions','fax-interactions','sms-interactions','chat-interactions','whatsapp-interactions','capitalize','Website','upperFirst','InteractionId','unknown'];(function(_0xd5fd5c,_0x3e2a66){var _0x3b0663=function(_0x40643b){while(--_0x40643b){_0xd5fd5c['push'](_0xd5fd5c['shift']());}};_0x3b0663(++_0x3e2a66);}(_0xb884,0x15f));var _0x4b88=function(_0x23f8c8,_0xb536b9){_0x23f8c8=_0x23f8c8-0x0;var _0x3dc718=_0xb884[_0x23f8c8];return _0x3dc718;};'use strict';var _=require(_0x4b88('0x0'));var db=require(_0x4b88('0x1'))['db'];var loggers={'openchannel':require(_0x4b88('0x2'))(_0x4b88('0x3')),'mail':require(_0x4b88('0x2'))('mail-interactions'),'fax':require('../../config/logger')(_0x4b88('0x4')),'sms':require('../../config/logger')(_0x4b88('0x5')),'chat':require(_0x4b88('0x2'))(_0x4b88('0x6')),'whatsapp':require('../../config/logger')(_0x4b88('0x7'))};function getAccountFK(_0x1ed847){return _[_0x4b88('0x8')](_0x1ed847)+(_0x1ed847==='chat'?_0x4b88('0x9'):'Account')+'Id';}function getInteractionFK(_0xdac2f4){return _[_0x4b88('0x8')](_0xdac2f4)+'InteractionId';}function getInteractionId(_0xfa4900,_0x48f06a,_0x5c6665){if(_0xfa4900&&_0xfa4900[_[_0x4b88('0xa')](_0x5c6665)+_0x4b88('0xb')]){return _0xfa4900[_[_0x4b88('0xa')](_0x5c6665)+'InteractionId'];}else if(_0xfa4900&&_0xfa4900['id']){return _0xfa4900['id'];}else if(_0x48f06a&&_0x48f06a['id']){return _0x48f06a['id'];}else{return _0x4b88('0xc');}}function getInteractionsTables(_0x2c1346){return{'accounts':_0x2c1346+'_'+(_0x2c1346===_0x4b88('0xd')?'websites':'accounts'),'interactions':_0x2c1346+_0x4b88('0xe'),'interactionsTags':_0x2c1346+_0x4b88('0xf'),'messages':_0x2c1346+_0x4b88('0x10'),'userInteractions':'user_has_'+_0x2c1346+_0x4b88('0xe')};}function getSelectedTags(_0x305991){var _0x249d29=[];if(_0x305991){_0x249d29=Array['isArray'](_0x305991)?_0x305991:[_0x305991];}return _0x249d29;}function log(_0x5b52c3,_0x1a59ec,_0x46fc15,_0x829534,_0x31f133,_0x49c121){loggers[_0x31f133['toLowerCase']()][_0x5b52c3]('[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x49c121[_0x4b88('0x11')](),_0x1a59ec?_0x1a59ec['id']:null,_0x1a59ec?_0x1a59ec[_0x4b88('0x12')]:null,_0x1a59ec?_0x1a59ec[_0x4b88('0x13')]:null,getInteractionId(_0x46fc15,_0x829534,_0x31f133),_0x46fc15?JSON[_0x4b88('0x14')](_0x46fc15):_0x4b88('0x15'));}function updateUser(_0x5f2da6,_0x226427,_0x4b23ac,_0x4c37dc,_0x3b03ad){db[_[_0x4b88('0xa')](_0x4c37dc)+'Interaction'][_0x4b88('0x16')]({'where':{'id':getInteractionId(_0x226427,_0x4b23ac,_0x4c37dc)}})['then'](function(_0x4ee0e4){if(_0x4ee0e4){return _0x4ee0e4[_0x4b88('0x17')]({'UserId':_0x5f2da6?_0x5f2da6['id']:null});}})[_0x4b88('0x18')](function(_0xc4d2bf){if(_0xc4d2bf){log(_0x4b88('0x19'),_0x5f2da6,_0x226427,_0x4b23ac,_0x4c37dc,_0x3b03ad);}})['catch'](function(){log(_0x4b88('0x1a'),_0x5f2da6,_0x226427,_0x4b23ac,_0x4c37dc,_0x3b03ad);});}module[_0x4b88('0x1b')]={'getAccountFK':getAccountFK,'getInteractionFK':getInteractionFK,'getInteractionsTables':getInteractionsTables,'getSelectedTags':getSelectedTags,'updateUser':updateUser};
\ No newline at end of file
index 2d9e3e9..acb3d9d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcbde=['../../config/environment','data1','license','split','createDecipher','aes-256-ctr','format','%s:%s:%s','update','utf8','hasOwnProperty','use','License','findOne','then','count','status','json','catch','users','User','admin','user','isUserLimit','crypto','composable-middleware','../../mysqldb'];(function(_0x406644,_0xf00f88){var _0x52d888=function(_0x4d33cc){while(--_0x4d33cc){_0x406644['push'](_0x406644['shift']());}};_0x52d888(++_0xf00f88);}(_0xcbde,0x141));var _0xecbd=function(_0x500d43,_0x36d396){_0x500d43=_0x500d43-0x0;var _0x1b1258=_0xcbde[_0x500d43];return _0x1b1258;};'use strict';var crypto=require(_0xecbd('0x0'));var util=require('util');var compose=require(_0xecbd('0x1'));var db=require(_0xecbd('0x2'))['db'];var config=require(_0xecbd('0x3'));function getValueFromLicense(_0x456f7f,_0x1a4c26){if(_0x456f7f&&_0x1a4c26){if(_0x1a4c26['data1']&&_0x1a4c26['license']){var _0x12470a=_0x1a4c26[_0xecbd('0x4')];var _0x566536=_0x1a4c26[_0xecbd('0x5')];var _0x27a04d=_0x12470a['split']('-')[0x4];var _0x5d1ba5=_0x12470a[_0xecbd('0x6')]('-')[0x0];var _0x3e9e7a=crypto[_0xecbd('0x7')](_0xecbd('0x8'),util[_0xecbd('0x9')](_0xecbd('0xa'),_0x27a04d,_0x12470a,_0x5d1ba5));var _0x493b24=_0x3e9e7a[_0xecbd('0xb')](_0x566536,'base64',_0xecbd('0xc'));_0x493b24+=_0x3e9e7a['final']('utf8');var _0x3ddb13=JSON['parse'](_0x493b24);return _0x3ddb13[_0xecbd('0xd')](_0x456f7f)?_0x3ddb13[_0x456f7f]:null;}}return null;}function isLimit(_0x24ec82,_0x4cd06f,_0x3c6429,_0x444a88){var _0x447856=_0x4cd06f;return compose()[_0xecbd('0xe')](function(_0x27c02a,_0x2ba71e,_0x1f4122){return db[_0xecbd('0xf')][_0xecbd('0x10')]({'where':{'id':0x1},'raw':!![]})['then'](function(_0xc7bb2b){var _0x1607ec=getValueFromLicense(_0x24ec82,_0xc7bb2b);return _0x1607ec?_0x1607ec:_0x447856;})[_0xecbd('0x11')](function(_0x3805a){_0x447856=_0x3805a;return _0x3c6429[_0xecbd('0x12')](_0x444a88);})[_0xecbd('0x11')](function(_0x26d4c4){if(_0x26d4c4>=_0x447856){return _0x2ba71e[_0xecbd('0x13')](0x193)[_0xecbd('0x14')]({'message':util[_0xecbd('0x9')]('Maximum\x20%s\x20limit\x20have\x20been\x20reached',_0x24ec82)});}_0x1f4122();})[_0xecbd('0x15')](function(_0x57c160){_0x1f4122(_0x57c160);});});}function isUserLimit(){return isLimit(_0xecbd('0x16'),0x1,db[_0xecbd('0x17')],{'where':{'$or':[{'role':_0xecbd('0x18')},{'role':_0xecbd('0x19')}]}});}exports[_0xecbd('0x1a')]=isUserLimit;
\ No newline at end of file
+var _0x2d34=['../../config/environment','split','createDecipher','%s:%s:%s','update','utf8','final','parse','hasOwnProperty','then','count','json','format','Maximum\x20%s\x20limit\x20have\x20been\x20reached','catch','users','User','admin','user','isUserLimit','util','composable-middleware','../../mysqldb'];(function(_0x2d1623,_0x18c3e8){var _0x50d246=function(_0x139331){while(--_0x139331){_0x2d1623['push'](_0x2d1623['shift']());}};_0x50d246(++_0x18c3e8);}(_0x2d34,0x156));var _0x42d3=function(_0x3a14b7,_0x3cd9d5){_0x3a14b7=_0x3a14b7-0x0;var _0x37b5cd=_0x2d34[_0x3a14b7];return _0x37b5cd;};'use strict';var crypto=require('crypto');var util=require(_0x42d3('0x0'));var compose=require(_0x42d3('0x1'));var db=require(_0x42d3('0x2'))['db'];var config=require(_0x42d3('0x3'));function getValueFromLicense(_0x45ee46,_0x1f96dd){if(_0x45ee46&&_0x1f96dd){if(_0x1f96dd['data1']&&_0x1f96dd['license']){var _0x298a50=_0x1f96dd['data1'];var _0xe80ef9=_0x1f96dd['license'];var _0x12e12b=_0x298a50['split']('-')[0x4];var _0x544b44=_0x298a50[_0x42d3('0x4')]('-')[0x0];var _0x34f057=crypto[_0x42d3('0x5')]('aes-256-ctr',util['format'](_0x42d3('0x6'),_0x12e12b,_0x298a50,_0x544b44));var _0xead1c1=_0x34f057[_0x42d3('0x7')](_0xe80ef9,'base64',_0x42d3('0x8'));_0xead1c1+=_0x34f057[_0x42d3('0x9')](_0x42d3('0x8'));var _0x81523d=JSON[_0x42d3('0xa')](_0xead1c1);return _0x81523d[_0x42d3('0xb')](_0x45ee46)?_0x81523d[_0x45ee46]:null;}}return null;}function isLimit(_0x2600f4,_0x8fe88c,_0x2aab00,_0x389f58){var _0x13fd5b=_0x8fe88c;return compose()['use'](function(_0x1347d0,_0x3f56fd,_0x4fc61f){return db['License']['findOne']({'where':{'id':0x1},'raw':!![]})[_0x42d3('0xc')](function(_0x2fa398){var _0x4d41ae=getValueFromLicense(_0x2600f4,_0x2fa398);return _0x4d41ae?_0x4d41ae:_0x13fd5b;})[_0x42d3('0xc')](function(_0x460abe){_0x13fd5b=_0x460abe;return _0x2aab00[_0x42d3('0xd')](_0x389f58);})[_0x42d3('0xc')](function(_0x1cb8d7){if(_0x1cb8d7>=_0x13fd5b){return _0x3f56fd['status'](0x193)[_0x42d3('0xe')]({'message':util[_0x42d3('0xf')](_0x42d3('0x10'),_0x2600f4)});}_0x4fc61f();})[_0x42d3('0x11')](function(_0xc9a998){_0x4fc61f(_0xc9a998);});});}function isUserLimit(){return isLimit(_0x42d3('0x12'),0x1,db[_0x42d3('0x13')],{'where':{'$or':[{'role':_0x42d3('0x14')},{'role':_0x42d3('0x15')}]}});}exports[_0x42d3('0x16')]=isUserLimit;
\ No newline at end of file
index 7b5b0fa..1447d91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c16=['$eq','$between','value','includes','$gt','days','format','YYYY-MM-DD','castTo','text','field','\x20AS\x20','$in','IN\x20?','$notIn','NOT\x20IN\x20?','=\x20?','$ne','<>\x20?','$substring','$startsWith','$endsWith','<\x20?','>\x20?','$lte','<=\x20?','$gte','>=\x20?','start','pop','utcOffset','add','hours','minutes','seconds','moment','parseSearch','sqlOperator','startsWith','[$or]','replace','[$and]','split','length','slice','forEach','shift','match','filter','indexOf','conditions','push','buildExpression','DATE','operator'];(function(_0x177f5b,_0x5c095a){var _0x515bec=function(_0x41594e){while(--_0x41594e){_0x177f5b['push'](_0x177f5b['shift']());}};_0x515bec(++_0x5c095a);}(_0x7c16,0x136));var _0x67c1=function(_0x53ba30,_0x210d1e){_0x53ba30=_0x53ba30-0x0;var _0x46e47a=_0x7c16[_0x53ba30];return _0x46e47a;};'use strict';var _=require('lodash');var moment=require(_0x67c1('0x0'));exports[_0x67c1('0x1')]=function(_0x48e8f8){var _0x1f8909={'conditions':[]};_0x1f8909[_0x67c1('0x2')]=_[_0x67c1('0x3')](_0x48e8f8,_0x67c1('0x4'))?'or':'and';var _0x24a4b0=_0x48e8f8[_0x67c1('0x5')](_0x67c1('0x6'),'')[_0x67c1('0x5')]('[$or]','')[_0x67c1('0x7')]('||');for(var _0x15b51a=0x0;_0x15b51a<_0x24a4b0[_0x67c1('0x8')];_0x15b51a++){var _0x3579dd=_0x24a4b0[_0x15b51a]['split'](':=');var _0x9afee4=_0x3579dd[0x0];var _0x11efd7=_0x3579dd[_0x67c1('0x9')](0x1);_0x11efd7[_0x67c1('0xa')](function(_0xe8157a){var _0x1f72e5=_0xe8157a[_0x67c1('0x7')]('[')[_0x67c1('0xb')]();var _0x3a43e2=_0xe8157a[_0x67c1('0xc')](/\[(.*?)\]/g);_0x3a43e2[_0x67c1('0xa')](function(_0x51acf2){var _0x48a913=_0x51acf2['split']('[')[_0x67c1('0xd')](function(_0x5cd621){return _0x5cd621[_0x67c1('0xe')](']')>-0x1;})['map'](function(_0x3ffa72){return _0x3ffa72[_0x67c1('0x7')](']')[0x0];})[0x0];_0x1f8909[_0x67c1('0xf')][_0x67c1('0x10')]({'field':_0x9afee4,'operator':_0x1f72e5,'value':_0x48a913});});});}return _0x1f8909;};exports[_0x67c1('0x11')]=function(_0x3b44ad,_0x409370,_0x384a21){var _0x5e72ba={};if(_0x409370===_0x67c1('0x12')){if(_0x384a21[_0x67c1('0x13')]===_0x67c1('0x14')){_0x384a21[_0x67c1('0x13')]=_0x67c1('0x15');_0x384a21[_0x67c1('0x16')]+=','+_0x384a21[_0x67c1('0x16')];}else if(_[_0x67c1('0x17')]([_0x67c1('0x18'),'$lte'],_0x384a21[_0x67c1('0x13')])){_0x384a21[_0x67c1('0x16')]=moment(_0x384a21['value'])['add'](0x1,_0x67c1('0x19'))[_0x67c1('0x1a')](_0x67c1('0x1b'));}}if(_0x384a21[_0x67c1('0x1c')]){_0x409370=_0x384a21[_0x67c1('0x1c')];_0x5e72ba[_0x67c1('0x1d')]='CAST('+_0x3b44ad+'.'+_0x384a21[_0x67c1('0x1e')]+_0x67c1('0x1f')+_0x384a21['castTo']+')\x20'+parseOperator(_0x384a21[_0x67c1('0x13')]);}else{_0x5e72ba['text']=_0x3b44ad+'.'+_0x384a21['field']+'\x20'+parseOperator(_0x384a21[_0x67c1('0x13')]);}if(_[_0x67c1('0x17')](['$ne','$notIn'],_0x384a21[_0x67c1('0x13')]))_0x5e72ba[_0x67c1('0x1d')]='('+_0x5e72ba[_0x67c1('0x1d')]+'\x20OR\x20'+_0x3b44ad+'.'+_0x384a21[_0x67c1('0x1e')]+'\x20IS\x20NULL)';_0x5e72ba[_0x67c1('0x16')]=parseValue(_0x409370,_0x384a21['operator'],_0x384a21[_0x67c1('0x16')]);return _0x5e72ba;};function parseOperator(_0xc8d4bf){var _0x40bcb8;switch(_0xc8d4bf){case _0x67c1('0x20'):_0x40bcb8=_0x67c1('0x21');break;case _0x67c1('0x22'):_0x40bcb8=_0x67c1('0x23');break;case _0x67c1('0x14'):_0x40bcb8=_0x67c1('0x24');break;case _0x67c1('0x25'):_0x40bcb8=_0x67c1('0x26');break;case _0x67c1('0x27'):case _0x67c1('0x28'):case _0x67c1('0x29'):_0x40bcb8='LIKE\x20?';break;case'$lt':_0x40bcb8=_0x67c1('0x2a');break;case _0x67c1('0x18'):_0x40bcb8=_0x67c1('0x2b');break;case _0x67c1('0x2c'):_0x40bcb8=_0x67c1('0x2d');break;case _0x67c1('0x2e'):_0x40bcb8=_0x67c1('0x2f');break;case'$between':_0x40bcb8='BETWEEN\x20?\x20AND\x20?';break;}return _0x40bcb8;}function parseValue(_0x1dd683,_0xd99823,_0x1c45a8){var _0x506b05={'start':undefined,'end':undefined};switch(_0xd99823){case'$in':case'$notIn':_0x506b05[_0x67c1('0x30')]=_0x1c45a8['split'](',');break;case _0x67c1('0x27'):_0x506b05[_0x67c1('0x30')]='%'+_0x1c45a8+'%';break;case _0x67c1('0x28'):_0x506b05[_0x67c1('0x30')]=_0x1c45a8+'%';break;case'$endsWith':_0x506b05['start']='%'+_0x1c45a8;break;case _0x67c1('0x15'):var _0x1833d7=_0x1c45a8['split'](',');var _0x1c45a8=_0x1833d7[_0x67c1('0xb')]();var _0x1daca1=_0x1833d7[_0x67c1('0x31')]();if(_0x1dd683===_0x67c1('0x12')){_0x1c45a8=moment(_0x1c45a8)[_0x67c1('0x32')](0x0,!![])[_0x67c1('0x1a')]();_0x1daca1=moment(_0x1daca1)['utcOffset'](0x0,!![])[_0x67c1('0x33')](0x17,_0x67c1('0x34'))[_0x67c1('0x33')](0x3b,_0x67c1('0x35'))[_0x67c1('0x33')](0x3b,_0x67c1('0x36'))[_0x67c1('0x1a')]();}_0x506b05={'start':_0x1c45a8,'end':_0x1daca1};break;default:_0x506b05[_0x67c1('0x30')]=_0x1c45a8;break;}return _0x506b05;}
\ No newline at end of file
+var _0x3520=['YYYY-MM-DD','castTo','text','CAST(','field','$ne','\x20OR\x20','\x20IS\x20NULL)','$in','IN\x20?','$notIn','=\x20?','<>\x20?','$substring','$startsWith','$endsWith','LIKE\x20?','<\x20?','>\x20?','$gte','>=\x20?','BETWEEN\x20?\x20AND\x20?','start','pop','utcOffset','hours','minutes','seconds','moment','sqlOperator','and','replace','[$and]','[$or]','split','length','slice','forEach','shift','match','filter','indexOf','map','buildExpression','DATE','operator','$eq','$between','value','includes','$gt','$lte','add','days','format'];(function(_0x4d5cfd,_0x5b5c6c){var _0x442f17=function(_0x32a375){while(--_0x32a375){_0x4d5cfd['push'](_0x4d5cfd['shift']());}};_0x442f17(++_0x5b5c6c);}(_0x3520,0x166));var _0x0352=function(_0x28405b,_0x583b9f){_0x28405b=_0x28405b-0x0;var _0x47a902=_0x3520[_0x28405b];return _0x47a902;};'use strict';var _=require('lodash');var moment=require(_0x0352('0x0'));exports['parseSearch']=function(_0x22b811){var _0x3fefa8={'conditions':[]};_0x3fefa8[_0x0352('0x1')]=_['startsWith'](_0x22b811,'[$or]')?'or':_0x0352('0x2');var _0x424591=_0x22b811[_0x0352('0x3')](_0x0352('0x4'),'')['replace'](_0x0352('0x5'),'')[_0x0352('0x6')]('||');for(var _0x526aaa=0x0;_0x526aaa<_0x424591[_0x0352('0x7')];_0x526aaa++){var _0x45df15=_0x424591[_0x526aaa][_0x0352('0x6')](':=');var _0x34e301=_0x45df15[0x0];var _0x64f791=_0x45df15[_0x0352('0x8')](0x1);_0x64f791[_0x0352('0x9')](function(_0x563323){var _0x4d1471=_0x563323['split']('[')[_0x0352('0xa')]();var _0x8a3da0=_0x563323[_0x0352('0xb')](/\[(.*?)\]/g);_0x8a3da0['forEach'](function(_0x534fa0){var _0x2a1012=_0x534fa0[_0x0352('0x6')]('[')[_0x0352('0xc')](function(_0xf05173){return _0xf05173[_0x0352('0xd')](']')>-0x1;})[_0x0352('0xe')](function(_0x19386b){return _0x19386b[_0x0352('0x6')](']')[0x0];})[0x0];_0x3fefa8['conditions']['push']({'field':_0x34e301,'operator':_0x4d1471,'value':_0x2a1012});});});}return _0x3fefa8;};exports[_0x0352('0xf')]=function(_0x47d188,_0x1a8313,_0x11a698){var _0x2a66ab={};if(_0x1a8313===_0x0352('0x10')){if(_0x11a698[_0x0352('0x11')]===_0x0352('0x12')){_0x11a698[_0x0352('0x11')]=_0x0352('0x13');_0x11a698[_0x0352('0x14')]+=','+_0x11a698[_0x0352('0x14')];}else if(_[_0x0352('0x15')]([_0x0352('0x16'),_0x0352('0x17')],_0x11a698[_0x0352('0x11')])){_0x11a698[_0x0352('0x14')]=moment(_0x11a698['value'])[_0x0352('0x18')](0x1,_0x0352('0x19'))[_0x0352('0x1a')](_0x0352('0x1b'));}}if(_0x11a698[_0x0352('0x1c')]){_0x1a8313=_0x11a698[_0x0352('0x1c')];_0x2a66ab[_0x0352('0x1d')]=_0x0352('0x1e')+_0x47d188+'.'+_0x11a698[_0x0352('0x1f')]+'\x20AS\x20'+_0x11a698[_0x0352('0x1c')]+')\x20'+parseOperator(_0x11a698[_0x0352('0x11')]);}else{_0x2a66ab['text']=_0x47d188+'.'+_0x11a698[_0x0352('0x1f')]+'\x20'+parseOperator(_0x11a698[_0x0352('0x11')]);}if(_[_0x0352('0x15')]([_0x0352('0x20'),'$notIn'],_0x11a698[_0x0352('0x11')]))_0x2a66ab[_0x0352('0x1d')]='('+_0x2a66ab[_0x0352('0x1d')]+_0x0352('0x21')+_0x47d188+'.'+_0x11a698['field']+_0x0352('0x22');_0x2a66ab[_0x0352('0x14')]=parseValue(_0x1a8313,_0x11a698[_0x0352('0x11')],_0x11a698[_0x0352('0x14')]);return _0x2a66ab;};function parseOperator(_0x246667){var _0x441669;switch(_0x246667){case _0x0352('0x23'):_0x441669=_0x0352('0x24');break;case _0x0352('0x25'):_0x441669='NOT\x20IN\x20?';break;case'$eq':_0x441669=_0x0352('0x26');break;case _0x0352('0x20'):_0x441669=_0x0352('0x27');break;case _0x0352('0x28'):case _0x0352('0x29'):case _0x0352('0x2a'):_0x441669=_0x0352('0x2b');break;case'$lt':_0x441669=_0x0352('0x2c');break;case _0x0352('0x16'):_0x441669=_0x0352('0x2d');break;case _0x0352('0x17'):_0x441669='<=\x20?';break;case _0x0352('0x2e'):_0x441669=_0x0352('0x2f');break;case'$between':_0x441669=_0x0352('0x30');break;}return _0x441669;}function parseValue(_0x16122c,_0x404829,_0x2639da){var _0xfc8543={'start':undefined,'end':undefined};switch(_0x404829){case _0x0352('0x23'):case _0x0352('0x25'):_0xfc8543[_0x0352('0x31')]=_0x2639da[_0x0352('0x6')](',');break;case'$substring':_0xfc8543[_0x0352('0x31')]='%'+_0x2639da+'%';break;case _0x0352('0x29'):_0xfc8543['start']=_0x2639da+'%';break;case'$endsWith':_0xfc8543['start']='%'+_0x2639da;break;case _0x0352('0x13'):var _0x466fa9=_0x2639da[_0x0352('0x6')](',');var _0x2639da=_0x466fa9['shift']();var _0x126bce=_0x466fa9[_0x0352('0x32')]();if(_0x16122c===_0x0352('0x10')){_0x2639da=moment(_0x2639da)[_0x0352('0x33')](0x0,!![])[_0x0352('0x1a')]();_0x126bce=moment(_0x126bce)[_0x0352('0x33')](0x0,!![])[_0x0352('0x18')](0x17,_0x0352('0x34'))[_0x0352('0x18')](0x3b,_0x0352('0x35'))['add'](0x3b,_0x0352('0x36'))['format']();}_0xfc8543={'start':_0x2639da,'end':_0x126bce};break;default:_0xfc8543[_0x0352('0x31')]=_0x2639da;break;}return _0xfc8543;}
\ No newline at end of file
index 087e645..648abbe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d13=['order','where','pick','filter','object','value','merge','VIRTUAL','lower','options','sequelize','moment','parse','keys','includes','fields','split','isEmpty','forOwn','find','type','DATE','isPlainObject','$gte','format','YYYY-MM-DD','utc','subtract','name','uniqueid','isArray','limit','offset','sort','priority','cast','DESC','col','unsigned','ASC','omit','length','isString','unset','hasOwnProperty','isNumeric','match','^[+]?[0-9]*$','isEmail','getFullTextValue','{EXPR}','replace','push','join','getOptions','query','$id','model','map','filters','attributes','intersection','nolimit'];(function(_0x1d4eb5,_0xa3107b){var _0x395c26=function(_0x2791de){while(--_0x2791de){_0x1d4eb5['push'](_0x1d4eb5['shift']());}};_0x395c26(++_0xa3107b);}(_0x8d13,0x106));var _0x38d1=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x8d13[_0x2dafbe];return _0x58a45a;};'use strict';var _=require('lodash');var sequelize=require(_0x38d1('0x0'));var moment=require(_0x38d1('0x1'));var LIMIT_VALUE=0xfa;function hasSequelizeOperator(_0xd35b5e){var _0x48938e=['ne'];try{var _0x2ee83b=JSON[_0x38d1('0x2')](_0xd35b5e);var _0x19903d=Object[_0x38d1('0x3')](_0x2ee83b)[0x0];return _0x48938e[_0x38d1('0x4')](_0x19903d);}catch(_0x1b88df){return![];}}function getOperatorValue(_0x514268){var _0x145ce4=JSON[_0x38d1('0x2')](_0x514268);var _0x3a6ef2=Object[_0x38d1('0x3')](_0x145ce4)[0x0];var _0x5d0837=_0x145ce4[_0x3a6ef2];return{['$'+_0x3a6ef2]:_0x5d0837};}exports[_0x38d1('0x5')]=function(_0xe05353){var _0x12e694=null;if(_0xe05353){_0x12e694=_0xe05353[_0x38d1('0x6')](',');}return _0x12e694;};exports['filters']=function(_0x24a34b,_0x428876){var _0xcf2b67={};if(!_[_0x38d1('0x7')](_0x24a34b)){_[_0x38d1('0x8')](_0x24a34b,function(_0x3e6dd9,_0x1be308){try{if(_0x428876){var _0x5abf44=_[_0x38d1('0x9')](_0x428876,{'name':_0x1be308})||{};if(hasSequelizeOperator(_0x3e6dd9)){_0xcf2b67[_0x1be308]=getOperatorValue(_0x3e6dd9);}else if(_0x5abf44[_0x38d1('0xa')]===_0x38d1('0xb')&&_[_0x38d1('0xc')](_0x3e6dd9)){var _0x34516e=JSON[_0x38d1('0x2')](_0x3e6dd9);var _0x3b9e2a={'$gte':moment(moment(_0x34516e[_0x38d1('0xd')])[_0x38d1('0xe')](_0x38d1('0xf')))[_0x38d1('0x10')]()['format'](),'$lte':moment(moment(_0x34516e['$lte'])[_0x38d1('0xe')](_0x38d1('0xf')))[_0x38d1('0x10')]()[_0x38d1('0x11')](0x1,'s')[_0x38d1('0xe')]()};_0xcf2b67[_0x1be308]=_0x3b9e2a;}else if(_0x5abf44[_0x38d1('0x12')]===_0x38d1('0x13')){_0xcf2b67[_0x1be308]=_0x3e6dd9;}else{_0xcf2b67[_0x1be308]=_['isArray'](_0x3e6dd9)?_0x3e6dd9:JSON[_0x38d1('0x2')](_0x3e6dd9);}}else{_0xcf2b67[_0x1be308]=_[_0x38d1('0x14')](_0x3e6dd9)?_0x3e6dd9:JSON[_0x38d1('0x2')](_0x3e6dd9);}}catch(_0x238a28){_0xcf2b67[_0x1be308]=_0x3e6dd9[_0x38d1('0x6')](',');}});}return _0xcf2b67;};exports[_0x38d1('0x15')]=function(_0x2aa9c3){_0x2aa9c3=parseInt(_0x2aa9c3,0xa);if(!_0x2aa9c3||_0x2aa9c3<0x0){_0x2aa9c3=LIMIT_VALUE;}return _0x2aa9c3;};exports[_0x38d1('0x16')]=function(_0x152917){_0x152917=parseInt(_0x152917,0xa);if(!_0x152917||_0x152917<0x0){_0x152917=0x0;}return _0x152917;};exports[_0x38d1('0x17')]=function(_0x2007f0){var _0x35ed0b,_0x101ce1=null;if(_0x2007f0){_0x35ed0b=_0x2007f0['split'](',');_0x101ce1=_['map'](_0x35ed0b,function(_0x1c868f){if(_0x1c868f['indexOf']('-')===0x0){return[_0x1c868f===_0x38d1('0x18')?sequelize[_0x38d1('0x19')](sequelize['col'](_0x38d1('0x18')),'unsigned'):_0x1c868f['substr'](0x1),_0x38d1('0x1a')];}else{return[_0x1c868f==='priority'?sequelize[_0x38d1('0x19')](sequelize[_0x38d1('0x1b')]('priority'),_0x38d1('0x1c')):_0x1c868f,_0x38d1('0x1d')];}});}return _0x101ce1;};exports[_0x38d1('0x1e')]=function(_0x54b055,_0x4e2636){if(_[_0x38d1('0x7')](_0x54b055)){return _0x54b055;}if(_[_0x38d1('0x14')](_0x54b055)){for(var _0x2ba4d1=0x0;_0x2ba4d1<_0x54b055[_0x38d1('0x1f')];_0x2ba4d1+=0x1){_0x54b055[_0x2ba4d1]=this[_0x38d1('0x1e')](_0x54b055[_0x2ba4d1],_0x4e2636);}return _0x54b055;}if(!_['isObject'](_0x54b055)){return _0x54b055;}if(_[_0x38d1('0x20')](_0x4e2636)){_0x4e2636=[_0x4e2636];}if(!_[_0x38d1('0x14')](_0x4e2636)){return _0x54b055;}for(var _0x20a598=0x0;_0x20a598<_0x4e2636[_0x38d1('0x1f')];_0x20a598+=0x1){_[_0x38d1('0x21')](_0x54b055,_0x4e2636[_0x20a598]);}for(var _0x1eb838 in _0x54b055){if(_0x54b055[_0x38d1('0x22')](_0x1eb838)){_0x54b055[_0x1eb838]=this[_0x38d1('0x1e')](_0x54b055[_0x1eb838],_0x4e2636);}}return _0x54b055;};exports[_0x38d1('0x23')]=function(_0x44542f){return _0x44542f[_0x38d1('0x24')](RegExp(_0x38d1('0x25')))?!![]:![];};exports[_0x38d1('0x26')]=function(_0x18cf8f){return _0x18cf8f[_0x38d1('0x24')](/^\S+@\S+$/)?!![]:![];};exports[_0x38d1('0x27')]=function(_0x3b880c,_0x53f820){var _0x16c390=[];var _0x465fec=/[ `!@#$%^&*()_\-?~]/;var _0x310c01=_0x53f820?'\x22{EXPR}\x22':_0x38d1('0x28');_0x3b880c[_0x38d1('0x6')](/[ ,]+/)['forEach'](function(_0x29a272){_0x29a272=_0x29a272[_0x38d1('0x29')](/([^:]")"+/g,'$1');_0x29a272='+'+_0x29a272+'*';var _0x2d3a59=_0x29a272[_0x38d1('0x24')](_0x465fec);if(_0x2d3a59){_0x29a272='\x22'+_0x29a272+'\x22';}_0x16c390[_0x38d1('0x2a')](_0x29a272);});_0x310c01=_0x310c01[_0x38d1('0x29')](_0x38d1('0x28'),_0x16c390[_0x38d1('0x2b')]('\x20'));return _0x310c01;};exports[_0x38d1('0x2c')]=function(_0x504881,_0x24ad11,_0x593ec6){var _0x212356={},_0x58c507={};if(_0x24ad11[_0x38d1('0x2d')][_0x38d1('0x2e')]){_0x24ad11[_0x38d1('0x2d')]['id']=_0x24ad11[_0x38d1('0x2d')][_0x38d1('0x2e')];delete _0x24ad11[_0x38d1('0x2d')][_0x38d1('0x2e')];}_0x212356[_0x38d1('0x2f')]=_[_0x38d1('0x30')](_0x504881,_0x38d1('0x12'));_0x212356['query']=_['keys'](_0x24ad11['query']);_0x212356[_0x38d1('0x31')]=_['intersection'](_0x212356[_0x38d1('0x2f')],_0x212356['query']);_0x58c507[_0x38d1('0x32')]=_[_0x38d1('0x33')](_0x212356[_0x38d1('0x2f')],this['fields'](_0x24ad11['query']['fields']));_0x58c507['attributes']=_0x58c507[_0x38d1('0x32')]['length']?_0x58c507[_0x38d1('0x32')]:_0x212356[_0x38d1('0x2f')];if(!_0x24ad11[_0x38d1('0x2d')][_0x38d1('0x22')](_0x38d1('0x34'))){_0x58c507[_0x38d1('0x15')]=this[_0x38d1('0x15')](_0x24ad11['query'][_0x38d1('0x15')]);_0x58c507[_0x38d1('0x16')]=this[_0x38d1('0x16')](_0x24ad11[_0x38d1('0x2d')][_0x38d1('0x16')]);}_0x58c507[_0x38d1('0x35')]=this[_0x38d1('0x17')](_0x24ad11[_0x38d1('0x2d')][_0x38d1('0x17')]);_0x58c507[_0x38d1('0x36')]=this[_0x38d1('0x31')](_[_0x38d1('0x37')](_0x24ad11[_0x38d1('0x2d')],_0x212356[_0x38d1('0x31')]),_0x504881);if(_0x24ad11[_0x38d1('0x2d')]['filter']){var _0x54f885=_0x504881;var _0xb0e569=_0x24ad11[_0x38d1('0x2d')][_0x38d1('0x38')];if(typeof _0xb0e569===_0x38d1('0x39')){_0x54f885=_[_0x38d1('0x38')](_0x504881,function(_0x337283){return _[_0x38d1('0x4')](_0xb0e569['columns'],_0x337283['name']);});_0xb0e569=_0xb0e569[_0x38d1('0x3a')];}_0x58c507[_0x38d1('0x36')]=_[_0x38d1('0x3b')](_0x58c507[_0x38d1('0x36')],{'$or':_[_0x38d1('0x30')](_0x54f885,function(_0x6c70fe){if(_0x6c70fe[_0x38d1('0xa')]!==_0x38d1('0x3c')){if(_0x593ec6){return sequelize['where'](sequelize['fn'](_0x38d1('0x3d'),sequelize[_0x38d1('0x1b')](_0x6c70fe['name'])),{'$like':sequelize['fn'](_0x38d1('0x3d'),'%'+_0x24ad11['query'][_0x38d1('0x38')]+'%')});}else{var _0x3fe054={};_0x3fe054[_0x6c70fe[_0x38d1('0x12')]]={'$like':'%'+_0x24ad11['query'][_0x38d1('0x38')]+'%'};return _0x3fe054;}}})});}_0x58c507=_['merge']({},_0x58c507,_0x24ad11[_0x38d1('0x3e')]);return _0x58c507;};
\ No newline at end of file
+var _0x72ba=['where','VIRTUAL','lower','filter','options','sequelize','parse','keys','fields','split','filters','isEmpty','forOwn','find','type','DATE','isPlainObject','$gte','YYYY-MM-DD','utc','$lte','format','name','isArray','limit','offset','map','indexOf','priority','cast','col','unsigned','DESC','ASC','length','omit','isObject','isString','hasOwnProperty','isNumeric','^[+]?[0-9]*$','isEmail','match','getFullTextValue','forEach','replace','push','join','getOptions','query','$id','model','intersection','attributes','order','sort','pick','object','includes','columns'];(function(_0xc06fc3,_0x31b690){var _0x5e81e1=function(_0x36e00c){while(--_0x36e00c){_0xc06fc3['push'](_0xc06fc3['shift']());}};_0x5e81e1(++_0x31b690);}(_0x72ba,0xf5));var _0xa72b=function(_0x286726,_0x20a337){_0x286726=_0x286726-0x0;var _0xcd4fe9=_0x72ba[_0x286726];return _0xcd4fe9;};'use strict';var _=require('lodash');var sequelize=require(_0xa72b('0x0'));var moment=require('moment');var LIMIT_VALUE=0xfa;function hasSequelizeOperator(_0x4e26f7){var _0x5c2aa8=['ne'];try{var _0x2a3e80=JSON[_0xa72b('0x1')](_0x4e26f7);var _0x54a763=Object[_0xa72b('0x2')](_0x2a3e80)[0x0];return _0x5c2aa8['includes'](_0x54a763);}catch(_0x34d5dd){return![];}}function getOperatorValue(_0x34e398){var _0x1201d6=JSON['parse'](_0x34e398);var _0x4ea88a=Object['keys'](_0x1201d6)[0x0];var _0x13fd81=_0x1201d6[_0x4ea88a];return{['$'+_0x4ea88a]:_0x13fd81};}exports[_0xa72b('0x3')]=function(_0x2b69df){var _0x473fbd=null;if(_0x2b69df){_0x473fbd=_0x2b69df[_0xa72b('0x4')](',');}return _0x473fbd;};exports[_0xa72b('0x5')]=function(_0x1209b1,_0x28f53e){var _0x221313={};if(!_[_0xa72b('0x6')](_0x1209b1)){_[_0xa72b('0x7')](_0x1209b1,function(_0x14d1e6,_0x545d4e){try{if(_0x28f53e){var _0x2b23f4=_[_0xa72b('0x8')](_0x28f53e,{'name':_0x545d4e})||{};if(hasSequelizeOperator(_0x14d1e6)){_0x221313[_0x545d4e]=getOperatorValue(_0x14d1e6);}else if(_0x2b23f4[_0xa72b('0x9')]===_0xa72b('0xa')&&_[_0xa72b('0xb')](_0x14d1e6)){var _0x57770f=JSON['parse'](_0x14d1e6);var _0x105f00={'$gte':moment(moment(_0x57770f[_0xa72b('0xc')])['format'](_0xa72b('0xd')))[_0xa72b('0xe')]()['format'](),'$lte':moment(moment(_0x57770f[_0xa72b('0xf')])[_0xa72b('0x10')](_0xa72b('0xd')))[_0xa72b('0xe')]()['subtract'](0x1,'s')[_0xa72b('0x10')]()};_0x221313[_0x545d4e]=_0x105f00;}else if(_0x2b23f4[_0xa72b('0x11')]==='uniqueid'){_0x221313[_0x545d4e]=_0x14d1e6;}else{_0x221313[_0x545d4e]=_[_0xa72b('0x12')](_0x14d1e6)?_0x14d1e6:JSON['parse'](_0x14d1e6);}}else{_0x221313[_0x545d4e]=_['isArray'](_0x14d1e6)?_0x14d1e6:JSON[_0xa72b('0x1')](_0x14d1e6);}}catch(_0x7e83ad){_0x221313[_0x545d4e]=_0x14d1e6[_0xa72b('0x4')](',');}});}return _0x221313;};exports[_0xa72b('0x13')]=function(_0x467e1f){_0x467e1f=parseInt(_0x467e1f,0xa);if(!_0x467e1f||_0x467e1f<0x0){_0x467e1f=LIMIT_VALUE;}return _0x467e1f;};exports[_0xa72b('0x14')]=function(_0x2cf01a){_0x2cf01a=parseInt(_0x2cf01a,0xa);if(!_0x2cf01a||_0x2cf01a<0x0){_0x2cf01a=0x0;}return _0x2cf01a;};exports['sort']=function(_0x2a5b79){var _0x1a18aa,_0x2a6f24=null;if(_0x2a5b79){_0x1a18aa=_0x2a5b79[_0xa72b('0x4')](',');_0x2a6f24=_[_0xa72b('0x15')](_0x1a18aa,function(_0x296ca4){if(_0x296ca4[_0xa72b('0x16')]('-')===0x0){return[_0x296ca4===_0xa72b('0x17')?sequelize[_0xa72b('0x18')](sequelize[_0xa72b('0x19')]('priority'),_0xa72b('0x1a')):_0x296ca4['substr'](0x1),_0xa72b('0x1b')];}else{return[_0x296ca4===_0xa72b('0x17')?sequelize[_0xa72b('0x18')](sequelize['col'](_0xa72b('0x17')),_0xa72b('0x1a')):_0x296ca4,_0xa72b('0x1c')];}});}return _0x2a6f24;};exports['omit']=function(_0x127bbb,_0x1abc60){if(_[_0xa72b('0x6')](_0x127bbb)){return _0x127bbb;}if(_[_0xa72b('0x12')](_0x127bbb)){for(var _0x272486=0x0;_0x272486<_0x127bbb[_0xa72b('0x1d')];_0x272486+=0x1){_0x127bbb[_0x272486]=this[_0xa72b('0x1e')](_0x127bbb[_0x272486],_0x1abc60);}return _0x127bbb;}if(!_[_0xa72b('0x1f')](_0x127bbb)){return _0x127bbb;}if(_[_0xa72b('0x20')](_0x1abc60)){_0x1abc60=[_0x1abc60];}if(!_[_0xa72b('0x12')](_0x1abc60)){return _0x127bbb;}for(var _0x5bb4ac=0x0;_0x5bb4ac<_0x1abc60['length'];_0x5bb4ac+=0x1){_['unset'](_0x127bbb,_0x1abc60[_0x5bb4ac]);}for(var _0x24b405 in _0x127bbb){if(_0x127bbb[_0xa72b('0x21')](_0x24b405)){_0x127bbb[_0x24b405]=this[_0xa72b('0x1e')](_0x127bbb[_0x24b405],_0x1abc60);}}return _0x127bbb;};exports[_0xa72b('0x22')]=function(_0x4ac7b8){return _0x4ac7b8['match'](RegExp(_0xa72b('0x23')))?!![]:![];};exports[_0xa72b('0x24')]=function(_0x488b1){return _0x488b1[_0xa72b('0x25')](/^\S+@\S+$/)?!![]:![];};exports[_0xa72b('0x26')]=function(_0x59e352,_0xd46dd4){var _0x302f41=[];var _0x376e9f=/[ `!@#$%^&*()_\-?~]/;var _0x247227=_0xd46dd4?'\x22{EXPR}\x22':'{EXPR}';_0x59e352[_0xa72b('0x4')](/[ ,]+/)[_0xa72b('0x27')](function(_0x41ded7){_0x41ded7=_0x41ded7[_0xa72b('0x28')](/([^:]")"+/g,'$1');_0x41ded7='+'+_0x41ded7+'*';var _0x4cfd6e=_0x41ded7[_0xa72b('0x25')](_0x376e9f);if(_0x4cfd6e){_0x41ded7='\x22'+_0x41ded7+'\x22';}_0x302f41[_0xa72b('0x29')](_0x41ded7);});_0x247227=_0x247227['replace']('{EXPR}',_0x302f41[_0xa72b('0x2a')]('\x20'));return _0x247227;};exports[_0xa72b('0x2b')]=function(_0x178429,_0x122083,_0x9f8ef0){var _0x9a0d0={},_0x3857ca={};if(_0x122083['query']['$id']){_0x122083[_0xa72b('0x2c')]['id']=_0x122083['query'][_0xa72b('0x2d')];delete _0x122083[_0xa72b('0x2c')][_0xa72b('0x2d')];}_0x9a0d0[_0xa72b('0x2e')]=_[_0xa72b('0x15')](_0x178429,_0xa72b('0x11'));_0x9a0d0[_0xa72b('0x2c')]=_[_0xa72b('0x2')](_0x122083['query']);_0x9a0d0[_0xa72b('0x5')]=_[_0xa72b('0x2f')](_0x9a0d0[_0xa72b('0x2e')],_0x9a0d0[_0xa72b('0x2c')]);_0x3857ca['attributes']=_[_0xa72b('0x2f')](_0x9a0d0[_0xa72b('0x2e')],this[_0xa72b('0x3')](_0x122083[_0xa72b('0x2c')]['fields']));_0x3857ca[_0xa72b('0x30')]=_0x3857ca[_0xa72b('0x30')][_0xa72b('0x1d')]?_0x3857ca[_0xa72b('0x30')]:_0x9a0d0[_0xa72b('0x2e')];if(!_0x122083[_0xa72b('0x2c')][_0xa72b('0x21')]('nolimit')){_0x3857ca[_0xa72b('0x13')]=this[_0xa72b('0x13')](_0x122083['query']['limit']);_0x3857ca['offset']=this['offset'](_0x122083['query'][_0xa72b('0x14')]);}_0x3857ca[_0xa72b('0x31')]=this[_0xa72b('0x32')](_0x122083[_0xa72b('0x2c')][_0xa72b('0x32')]);_0x3857ca['where']=this[_0xa72b('0x5')](_[_0xa72b('0x33')](_0x122083[_0xa72b('0x2c')],_0x9a0d0[_0xa72b('0x5')]),_0x178429);if(_0x122083[_0xa72b('0x2c')]['filter']){var _0x485aca=_0x178429;var _0x153fb5=_0x122083[_0xa72b('0x2c')]['filter'];if(typeof _0x153fb5===_0xa72b('0x34')){_0x485aca=_['filter'](_0x178429,function(_0x44b6ff){return _[_0xa72b('0x35')](_0x153fb5[_0xa72b('0x36')],_0x44b6ff[_0xa72b('0x11')]);});_0x153fb5=_0x153fb5['value'];}_0x3857ca[_0xa72b('0x37')]=_['merge'](_0x3857ca['where'],{'$or':_[_0xa72b('0x15')](_0x485aca,function(_0x356830){if(_0x356830[_0xa72b('0x9')]!==_0xa72b('0x38')){if(_0x9f8ef0){return sequelize[_0xa72b('0x37')](sequelize['fn'](_0xa72b('0x39'),sequelize[_0xa72b('0x19')](_0x356830[_0xa72b('0x11')])),{'$like':sequelize['fn'](_0xa72b('0x39'),'%'+_0x122083['query'][_0xa72b('0x3a')]+'%')});}else{var _0x580130={};_0x580130[_0x356830[_0xa72b('0x11')]]={'$like':'%'+_0x122083[_0xa72b('0x2c')][_0xa72b('0x3a')]+'%'};return _0x580130;}}})});}_0x3857ca=_['merge']({},_0x3857ca,_0x122083[_0xa72b('0x3b')]);return _0x3857ca;};
\ No newline at end of file
index b94f4b0..8712e4c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x78f4=['omit','pick','filterAgentAttributes','jayson/promise','client','http','chatPause','faxPause','mailPause','openchannelPause','smsPause','voicePause','whatsappPause','every','filter','length','unknown','unavailable','ringing','voiceStatus','pause','chatStatus','faxStatus','mailStatus','openchannelStatus','smsStatus','whatsappStatus','Agents','then','result','error','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','catch','getRealtimeAgents','*pause','idle','getAgentStatus','isArray','startCase','Queue','getAgents','all','map','uniq','value','getAgentIdsByQueues','includes','busy','resolve','User','findAll','name','pauseType','find','globalStatus','getSortedAgentsIdsByStatus','split','fields','order','DESC','ASC','fullname','internal','substring','indexOf','validateSortParameter','sort','toLowerCase','lastLoginAt','lastPauseAt','address','openchannelCapacity','whatsappCapacity','faxCapacity','chatCurrentCapacity','openchannelCurrentCapacity','faxCurrentCapacity','openchannelStatusTime','mailStatusTime','smsStatusTime','whatsappStatusTime','faxStatusTime','voiceStatusTime','queue','phoneBarEnableScreenRecordingByAgent','phoneBarEnableAutomaticScreenRecording','routealias','online'];(function(_0x5f49b1,_0x2e245c){var _0x59e7a4=function(_0x20fc99){while(--_0x20fc99){_0x5f49b1['push'](_0x5f49b1['shift']());}};_0x59e7a4(++_0x2e245c);}(_0x78f4,0x10b));var _0x478f=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x78f4[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var jayson=require(_0x478f('0x0'));var db=require('../../mysqldb')['db'];var amiClient=jayson[_0x478f('0x1')]['http']({'port':0x232a});var routingClient=jayson[_0x478f('0x1')][_0x478f('0x2')]({'port':0x232c});function isAgentPaused(_0xe2e5dd,_0x4fb936){var _0x36eb4f=[_0xe2e5dd[_0x478f('0x3')],_0xe2e5dd[_0x478f('0x4')],_0xe2e5dd[_0x478f('0x5')],_0xe2e5dd[_0x478f('0x6')],_0xe2e5dd[_0x478f('0x7')],_0xe2e5dd[_0x478f('0x8')],_0xe2e5dd[_0x478f('0x9')]];if(!_0x4fb936)return _[_0x478f('0xa')](_0x36eb4f);var _0x6c924e=_[_0x478f('0xb')](_0x36eb4f);return _0x6c924e[_0x478f('0xc')]>0x0&&_0x6c924e[_0x478f('0xc')]<_0x36eb4f[_0x478f('0xc')]?!![]:![];}function isIdle(_0x304d25){return _0x304d25==='idle'||_0x304d25===_0x478f('0xd')||_0x304d25===_0x478f('0xe')||_0x304d25===_0x478f('0xf')||_['isNil'](_0x304d25);}function isAgentIdle(_0x49b231){if(_0x49b231[_0x478f('0x10')]!=='idle'&&_0x49b231[_0x478f('0x8')]){_0x49b231[_0x478f('0x10')]=_0x478f('0x11');return![];}return _[_0x478f('0xa')]([_0x49b231[_0x478f('0x12')],_0x49b231[_0x478f('0x13')],_0x49b231[_0x478f('0x14')],_0x49b231[_0x478f('0x15')],_0x49b231[_0x478f('0x16')],_0x49b231[_0x478f('0x10')],_0x49b231[_0x478f('0x17')]],isIdle);}function getRealtimeAgents(){return amiClient['request'](_0x478f('0x18'),{})[_0x478f('0x19')](function(_0x1de011){if(_0x1de011['error']){throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)');}var _0xb39e2=_0x1de011[_0x478f('0x1a')];return routingClient['request']('Agents',{})[_0x478f('0x19')](function(_0x385407){if(_0x385407[_0x478f('0x1b')]){throw new Error(_0x478f('0x1c'));}var _0x5808af=_0x385407['result'];return _['merge']({},_0xb39e2,_0x5808af);});})[_0x478f('0x1d')](function(_0x391693){throw _0x391693;});}exports[_0x478f('0x1e')]=getRealtimeAgents;function getAgentStatus(_0x1607b0){var _0x9f3955=_0x478f('0xd');if(isAgentPaused(_0x1607b0))_0x9f3955=_0x478f('0x11');else if(isAgentPaused(_0x1607b0,!![]))_0x9f3955=_0x478f('0x1f');else if(isAgentIdle(_0x1607b0))_0x9f3955=_0x478f('0x20');else _0x9f3955='busy';return _0x9f3955;}exports[_0x478f('0x21')]=getAgentStatus;function getAgentIdsByQueues(_0x4bd053,_0x5dcfb4){var _0x48b144=_[_0x478f('0x22')](_0x4bd053)?_0x4bd053:[_0x4bd053];var _0x1c0b17=_[_0x478f('0x23')](_0x5dcfb4)+_0x478f('0x24');var _0x3fa3e3=_['map'](_0x48b144,function(_0x1e349d){return db[_0x1c0b17]['findOne']({'where':{'id':_0x1e349d}})[_0x478f('0x19')](function(_0x2b2fa6){if(!_0x2b2fa6)return[];return _0x2b2fa6[_0x478f('0x25')]({'attributes':['id'],'raw':!![]});});});return Promise[_0x478f('0x26')](_0x3fa3e3)[_0x478f('0x19')](function(_0x1d658e){var _0x1a2f23=_(_0x1d658e)['flatten']()[_0x478f('0x27')]('id')[_0x478f('0x28')]()[_0x478f('0x29')]();return _0x1a2f23;});}exports[_0x478f('0x2a')]=getAgentIdsByQueues;function getAgentIdsByStatus(_0xbf862a,_0x12bce7,_0x5d67aa){try{if(_0x12bce7[_0x478f('0xc')]>0x0){_0xbf862a=_0xbf862a[_0x478f('0xb')](function(_0x29f9f1){return _0x12bce7[_0x478f('0x2b')](_0x29f9f1['id']);});}var _0x4759cb=_0xbf862a['filter'](function(_0xdcf6ce){var _0x80ca00=_0x478f('0x2c');if(isAgentIdle(_0xdcf6ce)){_0x80ca00=_0x478f('0x20');}return _0x80ca00===_0x5d67aa;});return _['map'](_0x4759cb,'id');}catch(_0x4fa6cf){throw _0x4fa6cf;}}exports['getAgentIdsByStatus']=getAgentIdsByStatus;function getSortedAgentsIdsByStatus(_0x430e5f,_0x2ca3c9,_0xd3ccbe){return Promise[_0x478f('0x2d')]()[_0x478f('0x19')](function(){if(_0x2ca3c9[_0x478f('0xc')]>0x0){_0x430e5f=_0x430e5f['filter'](function(_0xdba608){return _0x2ca3c9[_0x478f('0x2b')](_0xdba608['id']);});}return _0x430e5f;})[_0x478f('0x19')](function(){return db[_0x478f('0x2e')][_0x478f('0x2f')]({'attributes':['id',_0x478f('0x30'),'fullname',_0x478f('0x3'),_0x478f('0x4'),_0x478f('0x5'),_0x478f('0x6'),'smsPause','voicePause',_0x478f('0x9'),_0x478f('0x31')],'where':{'id':{'$in':_[_0x478f('0x27')](_0x430e5f,'id')}},'raw':!![]});})['then'](function(_0x140053){return _0x140053['map'](function(_0x5b77ed){var _0x5745dc=_[_0x478f('0x32')](_0x430e5f,['id',_0x5b77ed['id']]);var _0x4806f1=filterAgentAttributes(_0x5745dc);_['merge'](_0x5b77ed,_0x4806f1);_0x5b77ed[_0x478f('0x33')]=getAgentStatus(_0x5b77ed);return _0x5b77ed;});})['then'](function(_0x2c1c0d){var _0x1a815e=sortAgentsByStatus(_0x2c1c0d,_0xd3ccbe);return _[_0x478f('0x27')](_0x1a815e,'id');})['catch'](function(_0x11e040){throw _0x11e040;});}exports[_0x478f('0x34')]=getSortedAgentsIdsByStatus;function getUpdatedSortOptions(_0x5948f8){var _0x121431={'fields':[],'order':null};var _0x3e7d64=_0x5948f8[_0x478f('0x35')](',');_0x121431[_0x478f('0x36')]=_['filter'](_0x3e7d64,function(_0x5ac85a){if(!_0x5ac85a['includes'](_0x478f('0x33'))){return!![];}_0x121431[_0x478f('0x37')]=_['startsWith'](_0x5ac85a,'-')?_0x478f('0x38'):_0x478f('0x39');return![];});return _0x121431;}exports['getUpdatedSortOptions']=getUpdatedSortOptions;function validateSortParameter(_0x5bdd73){if(_0x5bdd73['includes'](_0x478f('0x3a'))&&!_0x5bdd73[_0x478f('0x2b')](_0x478f('0x3b'))){var _0xd07fa8=_0x5bdd73[_0x478f('0x3c')](0x0,_0x5bdd73[_0x478f('0x3d')](_0x478f('0x3a')));_0x5bdd73+=','+_0xd07fa8+_0x478f('0x3b');}return _0x5bdd73;}exports[_0x478f('0x3e')]=validateSortParameter;function sortAgentsByStatus(_0x17363b,_0xd28798){var _0x353dee=_0x17363b[_0x478f('0x3f')](function(_0x41aefb,_0x2ccdcd){if(_0x41aefb[_0x478f('0x33')]===_0x2ccdcd[_0x478f('0x33')]){if(_0x41aefb[_0x478f('0x33')]==='pause'){if(_0xd28798==='DESC'){return(_0x41aefb['pauseType']||'')<(_0x2ccdcd['pauseType']||'')||_0x41aefb[_0x478f('0x3a')]['toLowerCase']()>_0x2ccdcd[_0x478f('0x3a')][_0x478f('0x40')]()?0x1:-0x1;}else{return(_0x41aefb[_0x478f('0x31')]||'')<(_0x2ccdcd[_0x478f('0x31')]||'')||_0x41aefb['fullname']['toLowerCase']()>_0x2ccdcd[_0x478f('0x3a')]['toLowerCase']()?-0x1:0x1;}}else{if(_0xd28798==='DESC'){return _0x41aefb['fullname'][_0x478f('0x40')]()<_0x2ccdcd[_0x478f('0x3a')]['toLowerCase']()?0x1:-0x1;}else{return _0x41aefb[_0x478f('0x3a')][_0x478f('0x40')]()<_0x2ccdcd[_0x478f('0x3a')]['toLowerCase']()?-0x1:0x1;}}}else{if(_0xd28798==='DESC'){return _0x41aefb[_0x478f('0x33')]<_0x2ccdcd[_0x478f('0x33')]?0x1:-0x1;}else{return _0x41aefb['globalStatus']<_0x2ccdcd[_0x478f('0x33')]?-0x1:0x1;}}});return _0x353dee;}exports['sortAgentsByStatus']=sortAgentsByStatus;function filterAgentAttributes(_0x3eb1af){var _0x55f7f0=['userpic','online',_0x478f('0x41'),'lastPauseAt',_0x478f('0x31'),_0x478f('0x42'),_0x478f('0x3b'),_0x478f('0x43'),_0x478f('0x3'),_0x478f('0x6'),_0x478f('0x5'),'smsPause',_0x478f('0x9'),'faxPause',_0x478f('0x8'),'chatCapacity',_0x478f('0x44'),'mailCapacity','smsCapacity',_0x478f('0x45'),_0x478f('0x46'),_0x478f('0x47'),_0x478f('0x48'),'mailCurrentCapacity','smsCurrentCapacity','whatsappCurrentCapacity',_0x478f('0x49'),'chatStatus','openchannelStatus',_0x478f('0x14'),_0x478f('0x16'),_0x478f('0x17'),_0x478f('0x13'),_0x478f('0x10'),'chatStatusTime',_0x478f('0x4a'),_0x478f('0x4b'),_0x478f('0x4c'),_0x478f('0x4d'),_0x478f('0x4e'),_0x478f('0x4f'),_0x478f('0x50'),'destconnectedlinenum','screenrecording',_0x478f('0x51'),_0x478f('0x52'),_0x478f('0x53')];var _0x221b19=[_0x478f('0x3'),'openchannelPause',_0x478f('0x5'),'smsPause','whatsappPause','faxPause',_0x478f('0x8'),_0x478f('0x54')];var _0x5b5dce=_(_0x3eb1af)[_0x478f('0x55')](_0x221b19)[_0x478f('0x56')](_0x55f7f0)[_0x478f('0x29')]();return _0x5b5dce;}exports[_0x478f('0x57')]=filterAgentAttributes;
\ No newline at end of file
+var _0x9660=['request','Agents','then','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','result','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','merge','getRealtimeAgents','busy','getAgentStatus','isArray','startCase','Queue','map','findOne','all','flatten','uniq','value','includes','findAll','name','fullname','faxPause','mailPause','smsPause','whatsappPause','find','globalStatus','catch','getSortedAgentsIdsByStatus','split','fields','startsWith','DESC','ASC','substring','indexOf','validateSortParameter','sort','pause','pauseType','toLowerCase','sortAgentsByStatus','online','lastLoginAt','lastPauseAt','internal','address','chatCapacity','openchannelCapacity','mailCapacity','whatsappCapacity','faxCapacity','chatCurrentCapacity','smsCurrentCapacity','whatsappCurrentCapacity','faxCurrentCapacity','openchannelStatus','openchannelStatusTime','mailStatusTime','smsStatusTime','whatsappStatusTime','faxStatusTime','voiceStatusTime','destconnectedlinenum','screenrecording','phoneBarEnableScreenRecordingByAgent','phoneBarEnableAutomaticScreenRecording','omit','filterAgentAttributes','lodash','jayson/promise','client','http','chatPause','openchannelPause','voicePause','every','filter','length','unknown','ringing','idle','voiceStatus','faxStatus','mailStatus','smsStatus','whatsappStatus'];(function(_0x20aae1,_0x51efd4){var _0x510601=function(_0x20895f){while(--_0x20895f){_0x20aae1['push'](_0x20aae1['shift']());}};_0x510601(++_0x51efd4);}(_0x9660,0xf9));var _0x0966=function(_0x145af7,_0x6b0258){_0x145af7=_0x145af7-0x0;var _0x45e218=_0x9660[_0x145af7];return _0x45e218;};'use strict';var _=require(_0x0966('0x0'));var jayson=require(_0x0966('0x1'));var db=require('../../mysqldb')['db'];var amiClient=jayson[_0x0966('0x2')][_0x0966('0x3')]({'port':0x232a});var routingClient=jayson[_0x0966('0x2')][_0x0966('0x3')]({'port':0x232c});function isAgentPaused(_0x22be1a,_0x3d2fea){var _0x2dfbcc=[_0x22be1a[_0x0966('0x4')],_0x22be1a['faxPause'],_0x22be1a['mailPause'],_0x22be1a[_0x0966('0x5')],_0x22be1a['smsPause'],_0x22be1a[_0x0966('0x6')],_0x22be1a['whatsappPause']];if(!_0x3d2fea)return _[_0x0966('0x7')](_0x2dfbcc);var _0x1b6451=_[_0x0966('0x8')](_0x2dfbcc);return _0x1b6451[_0x0966('0x9')]>0x0&&_0x1b6451[_0x0966('0x9')]<_0x2dfbcc[_0x0966('0x9')]?!![]:![];}function isIdle(_0x5b0ee2){return _0x5b0ee2==='idle'||_0x5b0ee2===_0x0966('0xa')||_0x5b0ee2==='unavailable'||_0x5b0ee2===_0x0966('0xb')||_['isNil'](_0x5b0ee2);}function isAgentIdle(_0x5b8bbb){if(_0x5b8bbb['voiceStatus']!==_0x0966('0xc')&&_0x5b8bbb['voicePause']){_0x5b8bbb[_0x0966('0xd')]='pause';return![];}return _[_0x0966('0x7')]([_0x5b8bbb['chatStatus'],_0x5b8bbb[_0x0966('0xe')],_0x5b8bbb[_0x0966('0xf')],_0x5b8bbb['openchannelStatus'],_0x5b8bbb[_0x0966('0x10')],_0x5b8bbb['voiceStatus'],_0x5b8bbb[_0x0966('0x11')]],isIdle);}function getRealtimeAgents(){return amiClient[_0x0966('0x12')](_0x0966('0x13'),{})[_0x0966('0x14')](function(_0x7355c3){if(_0x7355c3['error']){throw new Error(_0x0966('0x15'));}var _0x127903=_0x7355c3[_0x0966('0x16')];return routingClient['request'](_0x0966('0x13'),{})[_0x0966('0x14')](function(_0x7ec182){if(_0x7ec182['error']){throw new Error(_0x0966('0x17'));}var _0x26fe8e=_0x7ec182[_0x0966('0x16')];return _[_0x0966('0x18')]({},_0x127903,_0x26fe8e);});})['catch'](function(_0x2af03a){throw _0x2af03a;});}exports[_0x0966('0x19')]=getRealtimeAgents;function getAgentStatus(_0x562491){var _0x60b2cd=_0x0966('0xa');if(isAgentPaused(_0x562491))_0x60b2cd='pause';else if(isAgentPaused(_0x562491,!![]))_0x60b2cd='*pause';else if(isAgentIdle(_0x562491))_0x60b2cd=_0x0966('0xc');else _0x60b2cd=_0x0966('0x1a');return _0x60b2cd;}exports[_0x0966('0x1b')]=getAgentStatus;function getAgentIdsByQueues(_0x298be6,_0x3d40f7){var _0x4d2156=_[_0x0966('0x1c')](_0x298be6)?_0x298be6:[_0x298be6];var _0x344295=_[_0x0966('0x1d')](_0x3d40f7)+_0x0966('0x1e');var _0x4754cd=_[_0x0966('0x1f')](_0x4d2156,function(_0x4b4554){return db[_0x344295][_0x0966('0x20')]({'where':{'id':_0x4b4554}})['then'](function(_0x119823){if(!_0x119823)return[];return _0x119823['getAgents']({'attributes':['id'],'raw':!![]});});});return Promise[_0x0966('0x21')](_0x4754cd)[_0x0966('0x14')](function(_0x377558){var _0x44f510=_(_0x377558)[_0x0966('0x22')]()[_0x0966('0x1f')]('id')[_0x0966('0x23')]()[_0x0966('0x24')]();return _0x44f510;});}exports['getAgentIdsByQueues']=getAgentIdsByQueues;function getAgentIdsByStatus(_0x4edd09,_0x4e3d7a,_0x95003a){try{if(_0x4e3d7a['length']>0x0){_0x4edd09=_0x4edd09['filter'](function(_0xe4ba2a){return _0x4e3d7a[_0x0966('0x25')](_0xe4ba2a['id']);});}var _0x546021=_0x4edd09[_0x0966('0x8')](function(_0x38671c){var _0x24db8d=_0x0966('0x1a');if(isAgentIdle(_0x38671c)){_0x24db8d=_0x0966('0xc');}return _0x24db8d===_0x95003a;});return _[_0x0966('0x1f')](_0x546021,'id');}catch(_0x52ded7){throw _0x52ded7;}}exports['getAgentIdsByStatus']=getAgentIdsByStatus;function getSortedAgentsIdsByStatus(_0x3c393e,_0x401adf,_0x2fcf4e){return Promise['resolve']()[_0x0966('0x14')](function(){if(_0x401adf[_0x0966('0x9')]>0x0){_0x3c393e=_0x3c393e['filter'](function(_0x5b5976){return _0x401adf[_0x0966('0x25')](_0x5b5976['id']);});}return _0x3c393e;})[_0x0966('0x14')](function(){return db['User'][_0x0966('0x26')]({'attributes':['id',_0x0966('0x27'),_0x0966('0x28'),_0x0966('0x4'),_0x0966('0x29'),_0x0966('0x2a'),_0x0966('0x5'),_0x0966('0x2b'),_0x0966('0x6'),_0x0966('0x2c'),'pauseType'],'where':{'id':{'$in':_[_0x0966('0x1f')](_0x3c393e,'id')}},'raw':!![]});})[_0x0966('0x14')](function(_0x4a8acd){return _0x4a8acd[_0x0966('0x1f')](function(_0x32cbcc){var _0x2d6b57=_[_0x0966('0x2d')](_0x3c393e,['id',_0x32cbcc['id']]);var _0x4eb53d=filterAgentAttributes(_0x2d6b57);_[_0x0966('0x18')](_0x32cbcc,_0x4eb53d);_0x32cbcc[_0x0966('0x2e')]=getAgentStatus(_0x32cbcc);return _0x32cbcc;});})['then'](function(_0x5879ab){var _0x2eed78=sortAgentsByStatus(_0x5879ab,_0x2fcf4e);return _[_0x0966('0x1f')](_0x2eed78,'id');})[_0x0966('0x2f')](function(_0x47cd57){throw _0x47cd57;});}exports[_0x0966('0x30')]=getSortedAgentsIdsByStatus;function getUpdatedSortOptions(_0x445542){var _0x33e45f={'fields':[],'order':null};var _0x11cb1c=_0x445542[_0x0966('0x31')](',');_0x33e45f[_0x0966('0x32')]=_['filter'](_0x11cb1c,function(_0x89a8e3){if(!_0x89a8e3[_0x0966('0x25')]('globalStatus')){return!![];}_0x33e45f['order']=_[_0x0966('0x33')](_0x89a8e3,'-')?_0x0966('0x34'):_0x0966('0x35');return![];});return _0x33e45f;}exports['getUpdatedSortOptions']=getUpdatedSortOptions;function validateSortParameter(_0x4f0e6a){if(_0x4f0e6a[_0x0966('0x25')](_0x0966('0x28'))&&!_0x4f0e6a[_0x0966('0x25')]('internal')){var _0x352c14=_0x4f0e6a[_0x0966('0x36')](0x0,_0x4f0e6a[_0x0966('0x37')](_0x0966('0x28')));_0x4f0e6a+=','+_0x352c14+'internal';}return _0x4f0e6a;}exports[_0x0966('0x38')]=validateSortParameter;function sortAgentsByStatus(_0x39a0a3,_0x122bef){var _0x32790f=_0x39a0a3[_0x0966('0x39')](function(_0x339b68,_0x56d137){if(_0x339b68[_0x0966('0x2e')]===_0x56d137[_0x0966('0x2e')]){if(_0x339b68['globalStatus']===_0x0966('0x3a')){if(_0x122bef===_0x0966('0x34')){return(_0x339b68[_0x0966('0x3b')]||'')<(_0x56d137[_0x0966('0x3b')]||'')||_0x339b68[_0x0966('0x28')]['toLowerCase']()>_0x56d137[_0x0966('0x28')][_0x0966('0x3c')]()?0x1:-0x1;}else{return(_0x339b68['pauseType']||'')<(_0x56d137[_0x0966('0x3b')]||'')||_0x339b68['fullname'][_0x0966('0x3c')]()>_0x56d137[_0x0966('0x28')][_0x0966('0x3c')]()?-0x1:0x1;}}else{if(_0x122bef==='DESC'){return _0x339b68['fullname']['toLowerCase']()<_0x56d137[_0x0966('0x28')]['toLowerCase']()?0x1:-0x1;}else{return _0x339b68['fullname'][_0x0966('0x3c')]()<_0x56d137[_0x0966('0x28')]['toLowerCase']()?-0x1:0x1;}}}else{if(_0x122bef==='DESC'){return _0x339b68[_0x0966('0x2e')]<_0x56d137[_0x0966('0x2e')]?0x1:-0x1;}else{return _0x339b68['globalStatus']<_0x56d137[_0x0966('0x2e')]?-0x1:0x1;}}});return _0x32790f;}exports[_0x0966('0x3d')]=sortAgentsByStatus;function filterAgentAttributes(_0x289496){var _0x473e73=['userpic',_0x0966('0x3e'),_0x0966('0x3f'),_0x0966('0x40'),'pauseType',_0x0966('0x40'),_0x0966('0x41'),_0x0966('0x42'),'chatPause',_0x0966('0x5'),_0x0966('0x2a'),_0x0966('0x2b'),'whatsappPause','faxPause',_0x0966('0x6'),_0x0966('0x43'),_0x0966('0x44'),_0x0966('0x45'),'smsCapacity',_0x0966('0x46'),_0x0966('0x47'),_0x0966('0x48'),'openchannelCurrentCapacity','mailCurrentCapacity',_0x0966('0x49'),_0x0966('0x4a'),_0x0966('0x4b'),'chatStatus',_0x0966('0x4c'),_0x0966('0xf'),'smsStatus',_0x0966('0x11'),_0x0966('0xe'),_0x0966('0xd'),'chatStatusTime',_0x0966('0x4d'),_0x0966('0x4e'),_0x0966('0x4f'),_0x0966('0x50'),_0x0966('0x51'),_0x0966('0x52'),'queue',_0x0966('0x53'),_0x0966('0x54'),_0x0966('0x55'),_0x0966('0x56'),'routealias'];var _0xa3cb39=[_0x0966('0x4'),'openchannelPause','mailPause',_0x0966('0x2b'),_0x0966('0x2c'),_0x0966('0x29'),_0x0966('0x6'),_0x0966('0x3e')];var _0x98831e=_(_0x289496)[_0x0966('0x57')](_0xa3cb39)['pick'](_0x473e73)[_0x0966('0x24')]();return _0x98831e;}exports[_0x0966('0x58')]=filterAgentAttributes;
\ No newline at end of file
index cd06a96..d8c56dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc81=['then','error','format','Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues','catch','getRealtimeQueues','inbound','concat','outbound','map','get','originated','merge','pick','initializeQueues','lodash','jayson/promise','util','client','http','available','loggedIn','paused','waiting','busy','inUse','invalid','loggedInDb','notInUse','onHold','talking','unavailable','unknown','pTalking','message','statusMessage','dialActive','dialMethod','startPredictive','startProgressive','erlangCalls','erlangCallToSecond','erlangBusyFactor','dialPredictiveInterval','dialPredictiveIntervalMinThreshold','predictiveIntervalAvailable','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','voice','startCase'];(function(_0x16efae,_0x2d1d8b){var _0x49f0d9=function(_0x53a9dd){while(--_0x53a9dd){_0x16efae['push'](_0x16efae['shift']());}};_0x49f0d9(++_0x2d1d8b);}(_0xcc81,0x14d));var _0x1cc8=function(_0x4a18f0,_0x903c50){_0x4a18f0=_0x4a18f0-0x0;var _0x158316=_0xcc81[_0x4a18f0];return _0x158316;};'use strict';var _=require(_0x1cc8('0x0'));var jayson=require(_0x1cc8('0x1'));var util=require(_0x1cc8('0x2'));var amiClient=jayson[_0x1cc8('0x3')]['http']({'port':0x232a});var routingClient=jayson['client'][_0x1cc8('0x4')]({'port':0x232c});var DEFAULT_QUEUE_ATTRIBUTES=[_0x1cc8('0x5'),_0x1cc8('0x6'),_0x1cc8('0x7'),_0x1cc8('0x8')];var VOICE_QUEUE_ATTRIBUTES=[_0x1cc8('0x9'),_0x1cc8('0xa'),_0x1cc8('0xb'),_0x1cc8('0xc'),_0x1cc8('0xd'),_0x1cc8('0xe'),'ringing','ringInUse',_0x1cc8('0xf'),_0x1cc8('0x10'),_0x1cc8('0x11')];var OUTBOUND_QUEUE_ATTRIBUTES=[_0x1cc8('0x12'),'originated',_0x1cc8('0x13'),_0x1cc8('0x14'),_0x1cc8('0x15'),_0x1cc8('0x16'),'Trunk',_0x1cc8('0x17'),_0x1cc8('0x18'),_0x1cc8('0x19'),_0x1cc8('0x1a'),'erlangAbandonmentRate',_0x1cc8('0x1b'),_0x1cc8('0x1c'),'dialPredictiveIntervalMaxThreshold',_0x1cc8('0x1d'),_0x1cc8('0x1e'),_0x1cc8('0x1f'),_0x1cc8('0x20'),'predictiveIntervalDroppedCallsTimeout',_0x1cc8('0x21'),_0x1cc8('0x22'),_0x1cc8('0x23')];function getRealtimeQueues(_0x5529c4,_0x576d10){var _0x5d8113=_0x576d10===_0x1cc8('0x24')?amiClient:routingClient;return _0x5d8113['request'](_[_0x1cc8('0x25')](_0x576d10)+'Queues',_0x5529c4)[_0x1cc8('0x26')](function(_0x3680df){if(_0x3680df[_0x1cc8('0x27')])throw new Error(util[_0x1cc8('0x28')](_0x1cc8('0x29'),_0x576d10));return _0x3680df['result'];})[_0x1cc8('0x2a')](function(_0x21a14b){throw _0x21a14b;});}exports[_0x1cc8('0x2b')]=getRealtimeQueues;function initializeQueues(_0x590a87,_0x4c6a4b,_0x3f9309,_0x32bc60){var _0x591c9b=DEFAULT_QUEUE_ATTRIBUTES;if(_0x3f9309===_0x1cc8('0x24')){if(_0x32bc60===_0x1cc8('0x2c')){_0x591c9b=_0x591c9b[_0x1cc8('0x2d')](VOICE_QUEUE_ATTRIBUTES);}else if(_0x32bc60===_0x1cc8('0x2e')){_0x591c9b=_0x591c9b[_0x1cc8('0x2d')](VOICE_QUEUE_ATTRIBUTES,OUTBOUND_QUEUE_ATTRIBUTES);}}return _0x590a87[_0x1cc8('0x2f')](function(_0x3158a0){var _0x4821ae=_0x3158a0[_0x1cc8('0x30')]({'plain':!![]});_0x4821ae[_0x1cc8('0x7')]=0x0;_0x4821ae[_0x1cc8('0xc')]=0x0;_0x4821ae[_0x1cc8('0x6')]=0x0;_0x4821ae[_0x1cc8('0x5')]=0x0;_0x4821ae[_0x1cc8('0x8')]=0x0;if(_0x3f9309===_0x1cc8('0x24')){_0x4821ae[_0x1cc8('0xf')]=0x0;_0x4821ae[_0x1cc8('0x9')]=0x0;if(_0x32bc60==='outbound'){_0x4821ae[_0x1cc8('0x12')]=0x0;_0x4821ae[_0x1cc8('0x31')]=0x0;}}var _0x2fc18d=_['find'](_0x4c6a4b,['id',_0x4821ae['id']]);if(_0x2fc18d){_[_0x1cc8('0x32')](_0x4821ae,_[_0x1cc8('0x33')](_0x2fc18d,_0x591c9b));}return _0x4821ae;});}exports[_0x1cc8('0x34')]=initializeQueues;
\ No newline at end of file
+var _0xdd78=['message','dialMethod','Trunk','startPredictive','startProgressive','erlangCalls','erlangCallToSecond','predictiveIntervalAvailable','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','request','startCase','Queues','error','format','result','catch','voice','outbound','concat','map','get','find','merge','pick','jayson/promise','util','http','client','available','loggedIn','waiting','busy','inUse','invalid','loggedInDb','onHold','ringInUse','talking','unavailable','unknown','originated'];(function(_0x4fbfd9,_0x3ab91a){var _0x31dc94=function(_0x11e53b){while(--_0x11e53b){_0x4fbfd9['push'](_0x4fbfd9['shift']());}};_0x31dc94(++_0x3ab91a);}(_0xdd78,0x157));var _0x8dd7=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xdd78[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var jayson=require(_0x8dd7('0x0'));var util=require(_0x8dd7('0x1'));var amiClient=jayson['client'][_0x8dd7('0x2')]({'port':0x232a});var routingClient=jayson[_0x8dd7('0x3')]['http']({'port':0x232c});var DEFAULT_QUEUE_ATTRIBUTES=[_0x8dd7('0x4'),_0x8dd7('0x5'),'paused',_0x8dd7('0x6')];var VOICE_QUEUE_ATTRIBUTES=[_0x8dd7('0x7'),_0x8dd7('0x8'),_0x8dd7('0x9'),_0x8dd7('0xa'),'notInUse',_0x8dd7('0xb'),'ringing',_0x8dd7('0xc'),_0x8dd7('0xd'),_0x8dd7('0xe'),_0x8dd7('0xf')];var OUTBOUND_QUEUE_ATTRIBUTES=['pTalking',_0x8dd7('0x10'),_0x8dd7('0x11'),'statusMessage','dialActive',_0x8dd7('0x12'),_0x8dd7('0x13'),_0x8dd7('0x14'),_0x8dd7('0x15'),_0x8dd7('0x16'),_0x8dd7('0x17'),'erlangAbandonmentRate','erlangBusyFactor','dialPredictiveInterval','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold',_0x8dd7('0x18'),_0x8dd7('0x19'),_0x8dd7('0x1a'),'predictiveIntervalDroppedCallsTimeout',_0x8dd7('0x1b'),_0x8dd7('0x1c'),_0x8dd7('0x1d')];function getRealtimeQueues(_0x1a3b2b,_0xe21a3){var _0x4acdfb=_0xe21a3==='voice'?amiClient:routingClient;return _0x4acdfb[_0x8dd7('0x1e')](_[_0x8dd7('0x1f')](_0xe21a3)+_0x8dd7('0x20'),_0x1a3b2b)['then'](function(_0x595b5b){if(_0x595b5b[_0x8dd7('0x21')])throw new Error(util[_0x8dd7('0x22')]('Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues',_0xe21a3));return _0x595b5b[_0x8dd7('0x23')];})[_0x8dd7('0x24')](function(_0x2999a9){throw _0x2999a9;});}exports['getRealtimeQueues']=getRealtimeQueues;function initializeQueues(_0x8a5af0,_0x340937,_0x526c24,_0x121995){var _0x42c02f=DEFAULT_QUEUE_ATTRIBUTES;if(_0x526c24===_0x8dd7('0x25')){if(_0x121995==='inbound'){_0x42c02f=_0x42c02f['concat'](VOICE_QUEUE_ATTRIBUTES);}else if(_0x121995===_0x8dd7('0x26')){_0x42c02f=_0x42c02f[_0x8dd7('0x27')](VOICE_QUEUE_ATTRIBUTES,OUTBOUND_QUEUE_ATTRIBUTES);}}return _0x8a5af0[_0x8dd7('0x28')](function(_0x3bf43f){var _0x27b3b5=_0x3bf43f[_0x8dd7('0x29')]({'plain':!![]});_0x27b3b5['paused']=0x0;_0x27b3b5[_0x8dd7('0xa')]=0x0;_0x27b3b5['loggedIn']=0x0;_0x27b3b5[_0x8dd7('0x4')]=0x0;_0x27b3b5[_0x8dd7('0x6')]=0x0;if(_0x526c24===_0x8dd7('0x25')){_0x27b3b5[_0x8dd7('0xd')]=0x0;_0x27b3b5[_0x8dd7('0x7')]=0x0;if(_0x121995===_0x8dd7('0x26')){_0x27b3b5['pTalking']=0x0;_0x27b3b5[_0x8dd7('0x10')]=0x0;}}var _0xf2bfa4=_[_0x8dd7('0x2a')](_0x340937,['id',_0x27b3b5['id']]);if(_0xf2bfa4){_[_0x8dd7('0x2b')](_0x27b3b5,_[_0x8dd7('0x2c')](_0xf2bfa4,_0x42c02f));}return _0x27b3b5;});}exports['initializeQueues']=initializeQueues;
\ No newline at end of file
index e35b804..6542b2c 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(_0x4c974e,_0x513d9e){var _0x31327b=function(_0x5db97c){while(--_0x5db97c){_0x4c974e['push'](_0x4c974e['shift']());}};_0x31327b(++_0x513d9e);}(_0x9957,0x93));var _0x7995=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0x9957[_0x5ddb1c];return _0x354adc;};'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(_0x157db4,_0x56f68b){var _0x4c77a1=function(_0x10a643){while(--_0x10a643){_0x157db4['push'](_0x157db4['shift']());}};_0x4c77a1(++_0x56f68b);}(_0x9957,0x93));var _0x7995=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x9957[_0x14add3];return _0x4a174f;};'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 e1a349b..bf065b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb908=['md5','update','getUuid','licenseToken','test','win32','dmidecode\x20--string\x20system-uuid','utf8','hostname','ipAddress','digest','hex','substring','lodash','crypto','bimedia-machine-uuid','child_process','networkInterfaces','orderBy','keys','length','filter','family','IPv4','internal','concat','mac','00:00:00:00:00:00','address','127.0.0.1','getFirstInterface','cpus','map','createHash'];(function(_0x511e82,_0x5c8e7b){var _0x32bc8e=function(_0xc02fd5){while(--_0xc02fd5){_0x511e82['push'](_0x511e82['shift']());}};_0x32bc8e(++_0x5c8e7b);}(_0xb908,0x11d));var _0x8b90=function(_0x511b76,_0x4727fa){_0x511b76=_0x511b76-0x0;var _0x5424ff=_0xb908[_0x511b76];return _0x5424ff;};'use strict';var _=require(_0x8b90('0x0'));var os=require('os');var crypto=require(_0x8b90('0x1'));var machine=require(_0x8b90('0x2'));var exec=require(_0x8b90('0x3'))['execSync'];var config=require('../environment');function getInterfaces(){var _0x484e30=[];var _0x3dd574=os[_0x8b90('0x4')]();var _0x1e7fa0=_[_0x8b90('0x5')](_[_0x8b90('0x6')](_0x3dd574));for(var _0x5547db=0x0;_0x5547db<_0x1e7fa0[_0x8b90('0x7')];_0x5547db++){var _0x5476e2=_0x3dd574[_0x1e7fa0[_0x5547db]][_0x8b90('0x8')](function(_0x1657a6){return _0x1657a6[_0x8b90('0x9')]===_0x8b90('0xa')&&_0x1657a6[_0x8b90('0xb')]===![];});_0x484e30=_0x484e30[_0x8b90('0xc')](_0x5476e2);}return _0x484e30;}function getFirstInterface(){var _0xf63127=_['head'](getInterfaces());return{'macAddress':_0xf63127&&_0xf63127['mac']?_0xf63127[_0x8b90('0xd')]:_0x8b90('0xe'),'ipAddress':_0xf63127&&_0xf63127[_0x8b90('0xf')]?_0xf63127[_0x8b90('0xf')]:_0x8b90('0x10')};}exports[_0x8b90('0x11')]=getFirstInterface;function getCPUhash(){var _0xdcefb8=_['orderBy'](os[_0x8b90('0x12')]()[_0x8b90('0x13')](function(_0x138f70){return _0x138f70['model'];}))['join'](':');return crypto[_0x8b90('0x14')](_0x8b90('0x15'))[_0x8b90('0x16')](_0xdcefb8)['digest']('hex');}exports[_0x8b90('0x17')]=function(){var _0x648c4d=os['platform']();var _0x17909e=/[0-9a-f-]{36}/;if(config[_0x8b90('0x18')]&&_0x17909e[_0x8b90('0x19')](config[_0x8b90('0x18')])){return config['licenseToken'];}else if(_0x648c4d===_0x8b90('0x1a')){return exec(_0x8b90('0x1b'),{'encoding':_0x8b90('0x1c')})['replace']('\x0d\x0a','');}else{var _0x41ab4c=getFirstInterface();var _0xfe6770=getCPUhash();var _0x1118d8=_0xfe6770+'|'+os[_0x8b90('0x1d')]()+'|'+_0x41ab4c['macAddress']+'|'+_0x41ab4c[_0x8b90('0x1e')];var _0x30320c=crypto[_0x8b90('0x14')]('md5')[_0x8b90('0x16')](_0x1118d8)[_0x8b90('0x1f')](_0x8b90('0x20'));return _0x30320c['substring'](0x0,0x8)+'-'+_0x30320c[_0x8b90('0x21')](0x8,0xc)+'-'+_0x30320c['substring'](0xc,0x10)+'-'+_0x30320c[_0x8b90('0x21')](0x10,0x14)+'-'+_0x30320c[_0x8b90('0x21')](0x14);}};
\ No newline at end of file
+var _0x61c4=['bimedia-machine-uuid','child_process','execSync','../environment','orderBy','keys','length','family','IPv4','internal','concat','head','mac','00:00:00:00:00:00','address','127.0.0.1','getFirstInterface','cpus','map','model','join','createHash','md5','digest','hex','getUuid','platform','licenseToken','test','dmidecode\x20--string\x20system-uuid','utf8','replace','hostname','macAddress','ipAddress','update','substring','lodash','crypto'];(function(_0x52cc00,_0x38520b){var _0x23cbad=function(_0x34affd){while(--_0x34affd){_0x52cc00['push'](_0x52cc00['shift']());}};_0x23cbad(++_0x38520b);}(_0x61c4,0xe8));var _0x461c=function(_0x30625f,_0x32c487){_0x30625f=_0x30625f-0x0;var _0x563d63=_0x61c4[_0x30625f];return _0x563d63;};'use strict';var _=require(_0x461c('0x0'));var os=require('os');var crypto=require(_0x461c('0x1'));var machine=require(_0x461c('0x2'));var exec=require(_0x461c('0x3'))[_0x461c('0x4')];var config=require(_0x461c('0x5'));function getInterfaces(){var _0x996fee=[];var _0x21fa30=os['networkInterfaces']();var _0x286647=_[_0x461c('0x6')](_[_0x461c('0x7')](_0x21fa30));for(var _0x2d0a7e=0x0;_0x2d0a7e<_0x286647[_0x461c('0x8')];_0x2d0a7e++){var _0x370af9=_0x21fa30[_0x286647[_0x2d0a7e]]['filter'](function(_0x6f7d96){return _0x6f7d96[_0x461c('0x9')]===_0x461c('0xa')&&_0x6f7d96[_0x461c('0xb')]===![];});_0x996fee=_0x996fee[_0x461c('0xc')](_0x370af9);}return _0x996fee;}function getFirstInterface(){var _0x560b3b=_[_0x461c('0xd')](getInterfaces());return{'macAddress':_0x560b3b&&_0x560b3b['mac']?_0x560b3b[_0x461c('0xe')]:_0x461c('0xf'),'ipAddress':_0x560b3b&&_0x560b3b[_0x461c('0x10')]?_0x560b3b['address']:_0x461c('0x11')};}exports[_0x461c('0x12')]=getFirstInterface;function getCPUhash(){var _0x2e2f08=_[_0x461c('0x6')](os[_0x461c('0x13')]()[_0x461c('0x14')](function(_0x11cfc1){return _0x11cfc1[_0x461c('0x15')];}))[_0x461c('0x16')](':');return crypto[_0x461c('0x17')](_0x461c('0x18'))['update'](_0x2e2f08)[_0x461c('0x19')](_0x461c('0x1a'));}exports[_0x461c('0x1b')]=function(){var _0x54b8df=os[_0x461c('0x1c')]();var _0x38b509=/[0-9a-f-]{36}/;if(config[_0x461c('0x1d')]&&_0x38b509[_0x461c('0x1e')](config[_0x461c('0x1d')])){return config[_0x461c('0x1d')];}else if(_0x54b8df==='win32'){return exec(_0x461c('0x1f'),{'encoding':_0x461c('0x20')})[_0x461c('0x21')]('\x0d\x0a','');}else{var _0xa5bcaf=getFirstInterface();var _0x16642a=getCPUhash();var _0x36f503=_0x16642a+'|'+os[_0x461c('0x22')]()+'|'+_0xa5bcaf[_0x461c('0x23')]+'|'+_0xa5bcaf[_0x461c('0x24')];var _0x5849d8=crypto[_0x461c('0x17')](_0x461c('0x18'))[_0x461c('0x25')](_0x36f503)[_0x461c('0x19')](_0x461c('0x1a'));return _0x5849d8[_0x461c('0x26')](0x0,0x8)+'-'+_0x5849d8[_0x461c('0x26')](0x8,0xc)+'-'+_0x5849d8[_0x461c('0x26')](0xc,0x10)+'-'+_0x5849d8[_0x461c('0x26')](0x10,0x14)+'-'+_0x5849d8['substring'](0x14);}};
\ No newline at end of file
index 1576c0e..c7de603 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9dbd=['bluebird','version','../../mysqldb','../../components/encryptor','./hardware','../logger','license','https://www.xcallymotion.com','format','%s/api/servers/%s/check?version=%s','exports','%s/api/servers/%s/check?version=%s&oldtoken=%s','GET','then','catch','get','data2','data1','active','THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED','info','THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED','update','Disabled','THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED','toUpperCase','encryptString','YYYY-MM-DD\x20HH:mm','diff','decryptString','DEMO\x20START\x20AT\x20%s','NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s','error','message','finally','getUuid','findOrCreate','spread','SERVICE\x20LICENSE\x20STARTED\x20%s','default','util','moment'];(function(_0x47dd60,_0x177de1){var _0x137a84=function(_0xa92aa5){while(--_0xa92aa5){_0x47dd60['push'](_0x47dd60['shift']());}};_0x137a84(++_0x177de1);}(_0x9dbd,0x1cc));var _0xd9db=function(_0x5c5e10,_0x5c9696){_0x5c5e10=_0x5c5e10-0x0;var _0x41b3e0=_0x9dbd[_0x5c5e10];return _0x41b3e0;};'use strict';var util=require(_0xd9db('0x0'));var moment=require(_0xd9db('0x1'));var rp=require('request-promise');var BPromise=require(_0xd9db('0x2'));var pkginfo=require('pkginfo')(module,_0xd9db('0x3'));var db=require(_0xd9db('0x4'))['db'];var encryptor=require(_0xd9db('0x5'));var hardware=require(_0xd9db('0x6'));var logger=require(_0xd9db('0x7'))(_0xd9db('0x8'));var HOST=_0xd9db('0x9');var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var oldToken;var isOldTokenSent=![];function httpRequest(_0x585696){return new BPromise(function(_0x4680f9,_0x589fe8){var _0x313bbf=util[_0xd9db('0xa')](_0xd9db('0xb'),HOST,_0x585696,module[_0xd9db('0xc')]['version']);if(oldToken){_0x313bbf=util[_0xd9db('0xa')](_0xd9db('0xd'),HOST,_0x585696,module[_0xd9db('0xc')][_0xd9db('0x3')],oldToken);}var _0x1bd8b0={'uri':_0x313bbf,'method':_0xd9db('0xe'),'timeout':0xea60,'json':!![]};return rp(_0x1bd8b0)[_0xd9db('0xf')](function(_0x543666){_0x4680f9(_0x543666);})[_0xd9db('0x10')](function(_0x2209d2){_0x589fe8(_0x2209d2);});});}function manageLicense(_0x177f79,_0x52228c){var _0x34c251=_0x52228c[_0xd9db('0x11')]({'plain':!![]});if(!isOldTokenSent&&_0x34c251['data1']!==_0x177f79&&!_0x34c251[_0xd9db('0x12')]){oldToken=_0x34c251[_0xd9db('0x13')];}httpRequest(_0x177f79)['then'](function(_0x15332e){if(oldToken){oldToken=undefined;isOldTokenSent=!![];}if(_0x15332e[_0xd9db('0x14')]){isOldTokenSent=![];if(!_0x34c251[_0xd9db('0x8')]&&_0x34c251[_0xd9db('0x8')]!=_0x15332e['license']||_0x34c251[_0xd9db('0x8')]&&_0x34c251[_0xd9db('0x12')]){logger['info'](_0xd9db('0x15'));}if(_0x34c251['license']&&!_0x34c251['data2']&&_0x34c251['license']!=_0x15332e['license']){logger[_0xd9db('0x16')](_0xd9db('0x17'));}if(_0x34c251['license']&&!_0x34c251['data2']&&_0x34c251[_0xd9db('0x8')]==_0x15332e[_0xd9db('0x8')]){return _0x52228c;}return _0x52228c[_0xd9db('0x18')]({'data1':_0x177f79,'data2':null,'license':_0x15332e[_0xd9db('0x8')]});}else{if(_0x15332e[_0xd9db('0x8')]||_0x34c251[_0xd9db('0x8')]){if(!_0x34c251[_0xd9db('0x12')]){if(_0x34c251[_0xd9db('0x13')]==_0x177f79){GRAY_PERIOD_REASON=_0xd9db('0x19');logger['info'](_0xd9db('0x1a'));}else{GRAY_PERIOD_REASON='Changed';logger['info']('NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s',_0x34c251[_0xd9db('0x13')],_0x177f79);}logger['info']('%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s',GRAY_PERIOD_REASON[_0xd9db('0x1b')](),moment()[_0xd9db('0xa')]('YYYY-MM-DD\x20HH:mm'));return _0x52228c[_0xd9db('0x18')]({'data2':encryptor[_0xd9db('0x1c')](moment()['format'](_0xd9db('0x1d')))});}else{if(moment()[_0xd9db('0x1e')](encryptor[_0xd9db('0x1f')](_0x34c251[_0xd9db('0x12')]),'days')>DAYS){logger['info'](_0xd9db('0x20'),moment()[_0xd9db('0xa')](_0xd9db('0x1d')));isOldTokenSent=![];return _0x52228c[_0xd9db('0x18')]({'data1':_0x177f79,'data2':null,'license':null});}}}else{if(_0x34c251['data1']!=_0x177f79){logger[_0xd9db('0x16')](_0xd9db('0x21'),_0x34c251[_0xd9db('0x13')],_0x177f79);return _0x52228c['update']({'data1':_0x177f79,'data2':null,'license':null});}}}return _0x52228c;})['then'](function(_0x5df83b){_0x52228c=_0x5df83b;})[_0xd9db('0x10')](function(_0x3702af){logger[_0xd9db('0x22')](_0x3702af[_0xd9db('0x23')]);})[_0xd9db('0x24')](function(){setTimeout(function(){manageLicense(hardware['getUuid'](),_0x52228c);},TIME);});}function defaultLicense(){var _0x3354de=hardware[_0xd9db('0x25')]();if(_0x3354de){return db['License'][_0xd9db('0x26')]({'where':{'id':0x1},'defaults':{'data1':_0x3354de}})[_0xd9db('0x27')](function(_0x3bd366,_0x38a25a){logger[_0xd9db('0x16')](_0xd9db('0x28'),_0x3354de);manageLicense(_0x3354de,_0x3bd366);})[_0xd9db('0x10')](function(_0x3c666b){logger[_0xd9db('0x22')](_0x3c666b['message']);});}}exports[_0xd9db('0x29')]=defaultLicense;
\ No newline at end of file
+var _0xa72d=['decryptString','DEMO\x20START\x20AT\x20%s','error','finally','getUuid','License','findOrCreate','spread','SERVICE\x20LICENSE\x20STARTED\x20%s','default','moment','bluebird','pkginfo','../../mysqldb','../../components/encryptor','../logger','https://www.xcallymotion.com','format','%s/api/servers/%s/check?version=%s','exports','version','%s/api/servers/%s/check?version=%s&oldtoken=%s','GET','then','catch','get','data1','data2','license','info','THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED','THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED','update','Disabled','Changed','NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s','toUpperCase','encryptString','YYYY-MM-DD\x20HH:mm','diff'];(function(_0x32a208,_0x9a7c49){var _0x9515ca=function(_0x45da0a){while(--_0x45da0a){_0x32a208['push'](_0x32a208['shift']());}};_0x9515ca(++_0x9a7c49);}(_0xa72d,0xaa));var _0xda72=function(_0x525ed8,_0xe73dbc){_0x525ed8=_0x525ed8-0x0;var _0xac0a0a=_0xa72d[_0x525ed8];return _0xac0a0a;};'use strict';var util=require('util');var moment=require(_0xda72('0x0'));var rp=require('request-promise');var BPromise=require(_0xda72('0x1'));var pkginfo=require(_0xda72('0x2'))(module,'version');var db=require(_0xda72('0x3'))['db'];var encryptor=require(_0xda72('0x4'));var hardware=require('./hardware');var logger=require(_0xda72('0x5'))('license');var HOST=_0xda72('0x6');var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var oldToken;var isOldTokenSent=![];function httpRequest(_0x33b329){return new BPromise(function(_0xac4391,_0x325bc0){var _0x4b494c=util[_0xda72('0x7')](_0xda72('0x8'),HOST,_0x33b329,module[_0xda72('0x9')][_0xda72('0xa')]);if(oldToken){_0x4b494c=util[_0xda72('0x7')](_0xda72('0xb'),HOST,_0x33b329,module['exports'][_0xda72('0xa')],oldToken);}var _0x606fe1={'uri':_0x4b494c,'method':_0xda72('0xc'),'timeout':0xea60,'json':!![]};return rp(_0x606fe1)[_0xda72('0xd')](function(_0x288e55){_0xac4391(_0x288e55);})[_0xda72('0xe')](function(_0x11d59e){_0x325bc0(_0x11d59e);});});}function manageLicense(_0x566f8b,_0x163d60){var _0x107011=_0x163d60[_0xda72('0xf')]({'plain':!![]});if(!isOldTokenSent&&_0x107011[_0xda72('0x10')]!==_0x566f8b&&!_0x107011[_0xda72('0x11')]){oldToken=_0x107011[_0xda72('0x10')];}httpRequest(_0x566f8b)[_0xda72('0xd')](function(_0x166007){if(oldToken){oldToken=undefined;isOldTokenSent=!![];}if(_0x166007['active']){isOldTokenSent=![];if(!_0x107011[_0xda72('0x12')]&&_0x107011[_0xda72('0x12')]!=_0x166007[_0xda72('0x12')]||_0x107011[_0xda72('0x12')]&&_0x107011[_0xda72('0x11')]){logger[_0xda72('0x13')](_0xda72('0x14'));}if(_0x107011[_0xda72('0x12')]&&!_0x107011['data2']&&_0x107011[_0xda72('0x12')]!=_0x166007[_0xda72('0x12')]){logger[_0xda72('0x13')](_0xda72('0x15'));}if(_0x107011[_0xda72('0x12')]&&!_0x107011['data2']&&_0x107011[_0xda72('0x12')]==_0x166007[_0xda72('0x12')]){return _0x163d60;}return _0x163d60[_0xda72('0x16')]({'data1':_0x566f8b,'data2':null,'license':_0x166007[_0xda72('0x12')]});}else{if(_0x166007['license']||_0x107011[_0xda72('0x12')]){if(!_0x107011[_0xda72('0x11')]){if(_0x107011[_0xda72('0x10')]==_0x566f8b){GRAY_PERIOD_REASON=_0xda72('0x17');logger[_0xda72('0x13')]('THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED');}else{GRAY_PERIOD_REASON=_0xda72('0x18');logger[_0xda72('0x13')](_0xda72('0x19'),_0x107011[_0xda72('0x10')],_0x566f8b);}logger[_0xda72('0x13')]('%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s',GRAY_PERIOD_REASON[_0xda72('0x1a')](),moment()[_0xda72('0x7')]('YYYY-MM-DD\x20HH:mm'));return _0x163d60['update']({'data2':encryptor[_0xda72('0x1b')](moment()[_0xda72('0x7')](_0xda72('0x1c')))});}else{if(moment()[_0xda72('0x1d')](encryptor[_0xda72('0x1e')](_0x107011[_0xda72('0x11')]),'days')>DAYS){logger['info'](_0xda72('0x1f'),moment()[_0xda72('0x7')](_0xda72('0x1c')));isOldTokenSent=![];return _0x163d60[_0xda72('0x16')]({'data1':_0x566f8b,'data2':null,'license':null});}}}else{if(_0x107011[_0xda72('0x10')]!=_0x566f8b){logger[_0xda72('0x13')]('NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s',_0x107011[_0xda72('0x10')],_0x566f8b);return _0x163d60['update']({'data1':_0x566f8b,'data2':null,'license':null});}}}return _0x163d60;})[_0xda72('0xd')](function(_0x22adae){_0x163d60=_0x22adae;})[_0xda72('0xe')](function(_0x176d3a){logger[_0xda72('0x20')](_0x176d3a['message']);})[_0xda72('0x21')](function(){setTimeout(function(){manageLicense(hardware['getUuid'](),_0x163d60);},TIME);});}function defaultLicense(){var _0x5879fc=hardware[_0xda72('0x22')]();if(_0x5879fc){return db[_0xda72('0x23')][_0xda72('0x24')]({'where':{'id':0x1},'defaults':{'data1':_0x5879fc}})[_0xda72('0x25')](function(_0xd1d4e5,_0x1ebf1d){logger['info'](_0xda72('0x26'),_0x5879fc);manageLicense(_0x5879fc,_0xd1d4e5);})[_0xda72('0xe')](function(_0x31bcbb){logger[_0xda72('0x20')](_0x31bcbb['message']);});}}exports[_0xda72('0x27')]=defaultLicense;
\ No newline at end of file
index 11cb5cb..1919055 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xefe6=['forEach','user','catch','pick','countBy','License\x20limit\x20reached\x20for\x20users','License\x20limit\x20reached\x20for\x20telephones','exports','util','lodash','./hardware','../../components/encryptor','../../mysqldb','2027-01-01T00:00:00.000Z','getUuid','Breaking\x20license','License','find','defaults','then','uuid','data1','isEmpty','License\x20key\x20value\x20not\x20found','data2','split','decryptString','%s:%s:%s','parse','demo','machineUuid','gray','deadline','add','format','grayReason','changed','disabled','message','User','findAll','sequelize','COUNT','col','role','count','admin','telephone'];(function(_0x4505da,_0x328eea){var _0x191417=function(_0x2bd9c6){while(--_0x2bd9c6){_0x4505da['push'](_0x4505da['shift']());}};_0x191417(++_0x328eea);}(_0xefe6,0xc8));var _0x6efe=function(_0x279e6f,_0x566574){_0x279e6f=_0x279e6f-0x0;var _0x489a5f=_0xefe6[_0x279e6f];return _0x489a5f;};'use strict';var util=require(_0x6efe('0x0'));var _=require(_0x6efe('0x1'));var moment=require('moment');var BPromise=require('bluebird');var hardware=require(_0x6efe('0x2'));var encryptor=require(_0x6efe('0x3'));var db=require(_0x6efe('0x4'))['db'];const demoLicense={'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x6efe('0x5'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'description':'Demo\x20license','machineUuid':hardware[_0x6efe('0x6')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};const breakingLicense={'breaking':!![],'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x6efe('0x5'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'update':![],'description':_0x6efe('0x7'),'machineUuid':hardware['getUuid'](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0x2e712e){return new BPromise(function(_0x5b3a5f,_0x22d6a9){return db[_0x6efe('0x8')][_0x6efe('0x9')](_[_0x6efe('0xa')](_0x2e712e,{'raw':!![],'where':{'id':0x1}}))[_0x6efe('0xb')](function(_0x588ee7){return checkLicense(_0x588ee7,null);})[_0x6efe('0xb')](function(_0x16abdb){_0x5b3a5f(_0x16abdb);return;})['catch'](function(_0x40b997){_0x22d6a9(_0x40b997);});});}function checkLicense(_0x57c5e4,_0x5cda70){if(!_0x57c5e4){demoLicense[_0x6efe('0xc')]=_0x57c5e4[_0x6efe('0xd')];return demoLicense;}try{var _0x4a0bf2=_0x5cda70||_0x57c5e4['license'];if(_[_0x6efe('0xe')](_0x4a0bf2)){throw new Error(_0x6efe('0xf'));}var _0x6da620=_0x57c5e4[_0x6efe('0xd')];var _0x8a5415=_0x57c5e4[_0x6efe('0x10')];var _0x53ca56=_0x6da620[_0x6efe('0x11')]('-')[0x4];var _0x27fb11=_0x6da620[_0x6efe('0x11')]('-')[0x0];var _0xc1b46c=encryptor[_0x6efe('0x12')](_0x4a0bf2,util['format'](_0x6efe('0x13'),_0x53ca56,_0x6da620,_0x27fb11));var _0x2649c3=JSON[_0x6efe('0x14')](_0xc1b46c);_0x2649c3[_0x6efe('0x15')]=![];_0x2649c3[_0x6efe('0xc')]=_0x6da620;_0x2649c3[_0x6efe('0x16')]=hardware[_0x6efe('0x6')]();if(_0x8a5415){var _0x2b4b81=encryptor[_0x6efe('0x12')](_0x8a5415);_0x2649c3[_0x6efe('0x17')]=_0x2b4b81;_0x2649c3[_0x6efe('0x18')]=moment(_0x2b4b81)[_0x6efe('0x19')](0x7,'days')[_0x6efe('0x1a')]();_0x2649c3[_0x6efe('0x1b')]=_0x2649c3[_0x6efe('0xc')]!=_0x2649c3[_0x6efe('0x16')]?_0x6efe('0x1c'):_0x6efe('0x1d');}return _0x2649c3;}catch(_0x13b7e6){breakingLicense[_0x6efe('0xc')]=_0x57c5e4[_0x6efe('0xd')];breakingLicense[_0x6efe('0x1e')]=_0x13b7e6[_0x6efe('0x1e')];return breakingLicense;}}function getLimits(){return new BPromise(function(_0x1553e2,_0xad9cf4){getLicense()[_0x6efe('0xb')](function(_0x225bd9){return db[_0x6efe('0x1f')][_0x6efe('0x20')]({'attributes':['role',[db[_0x6efe('0x21')]['fn'](_0x6efe('0x22'),db[_0x6efe('0x21')][_0x6efe('0x23')](_0x6efe('0x24'))),_0x6efe('0x25')]],'group':_0x6efe('0x24'),'where':{'role':{'$or':[_0x6efe('0x26'),'user',_0x6efe('0x27')]}},'raw':!![]})[_0x6efe('0xb')](function(_0x20bef7){var _0x248347={'user':_0x225bd9['users']||0x0,'telephone':_0x225bd9['telephones']||0x0};_0x20bef7[_0x6efe('0x28')](function(_0x5a91de){var _0x5bad8e=_0x5a91de['role']===_0x6efe('0x26')?_0x6efe('0x29'):_0x5a91de[_0x6efe('0x24')];_0x248347[_0x5bad8e]-=_0x5a91de[_0x6efe('0x25')];if(_0x248347[_0x5bad8e]<0x0)_0x248347[_0x5bad8e]=0x0;});_0x1553e2(_0x248347);return;});})[_0x6efe('0x2a')](function(_0x56162d){_0xad9cf4(_0x56162d);});});}function checkUserLimits(_0xf7882a){return new BPromise(function(_0x1bea65,_0x5d46d1){getLimits()['then'](function(_0x550335){var _0x1d3cd0=_[_0x6efe('0x2b')](_[_0x6efe('0x2c')](_0xf7882a,'role'),[_0x6efe('0x26'),_0x6efe('0x29'),_0x6efe('0x27')]);var _0x511b17=(_0x1d3cd0[_0x6efe('0x26')]||0x0)+(_0x1d3cd0['user']||0x0);var _0x4be941=_0x1d3cd0[_0x6efe('0x27')]||0x0;if(_0x511b17>_0x550335[_0x6efe('0x29')])return _0x5d46d1(_0x6efe('0x2d'));if(_0x4be941>_0x550335[_0x6efe('0x27')])return _0x5d46d1(_0x6efe('0x2e'));return _0x1bea65();})[_0x6efe('0x2a')](function(_0x3b3867){_0x5d46d1(_0x3b3867);});});}module[_0x6efe('0x2f')]={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};
\ No newline at end of file
+var _0xa6f7=['catch','uuid','license','isEmpty','data2','split','decryptString','%s:%s:%s','parse','machineUuid','gray','deadline','format','grayReason','message','User','findAll','role','sequelize','col','users','telephones','forEach','admin','user','count','pick','countBy','telephone','License\x20limit\x20reached\x20for\x20users','License\x20limit\x20reached\x20for\x20telephones','exports','util','moment','bluebird','./hardware','../../mysqldb','getUuid','2027-01-01T00:00:00.000Z','Breaking\x20license','License','find','defaults','then'];(function(_0x416541,_0xc1193a){var _0x1206c9=function(_0x407790){while(--_0x407790){_0x416541['push'](_0x416541['shift']());}};_0x1206c9(++_0xc1193a);}(_0xa6f7,0xd0));var _0x7a6f=function(_0x1b3de6,_0x23f905){_0x1b3de6=_0x1b3de6-0x0;var _0x65e20c=_0xa6f7[_0x1b3de6];return _0x65e20c;};'use strict';var util=require(_0x7a6f('0x0'));var _=require('lodash');var moment=require(_0x7a6f('0x1'));var BPromise=require(_0x7a6f('0x2'));var hardware=require(_0x7a6f('0x3'));var encryptor=require('../../components/encryptor');var db=require(_0x7a6f('0x4'))['db'];const demoLicense={'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':![],'description':'Demo\x20license','machineUuid':hardware[_0x7a6f('0x5')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};const breakingLicense={'breaking':!![],'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x7a6f('0x6'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'update':![],'description':_0x7a6f('0x7'),'machineUuid':hardware[_0x7a6f('0x5')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0x1e3fe2){return new BPromise(function(_0x4061ab,_0x466486){return db[_0x7a6f('0x8')][_0x7a6f('0x9')](_[_0x7a6f('0xa')](_0x1e3fe2,{'raw':!![],'where':{'id':0x1}}))[_0x7a6f('0xb')](function(_0x4701cb){return checkLicense(_0x4701cb,null);})[_0x7a6f('0xb')](function(_0x1647a4){_0x4061ab(_0x1647a4);return;})[_0x7a6f('0xc')](function(_0x3ae83a){_0x466486(_0x3ae83a);});});}function checkLicense(_0x3d2c7f,_0xdca0fd){if(!_0x3d2c7f){demoLicense[_0x7a6f('0xd')]=_0x3d2c7f['data1'];return demoLicense;}try{var _0x2a702=_0xdca0fd||_0x3d2c7f[_0x7a6f('0xe')];if(_[_0x7a6f('0xf')](_0x2a702)){throw new Error('License\x20key\x20value\x20not\x20found');}var _0x2c0ad0=_0x3d2c7f['data1'];var _0x447a61=_0x3d2c7f[_0x7a6f('0x10')];var _0xb6d6b7=_0x2c0ad0['split']('-')[0x4];var _0x296774=_0x2c0ad0[_0x7a6f('0x11')]('-')[0x0];var _0x5ba35d=encryptor[_0x7a6f('0x12')](_0x2a702,util['format'](_0x7a6f('0x13'),_0xb6d6b7,_0x2c0ad0,_0x296774));var _0x4ff070=JSON[_0x7a6f('0x14')](_0x5ba35d);_0x4ff070['demo']=![];_0x4ff070[_0x7a6f('0xd')]=_0x2c0ad0;_0x4ff070[_0x7a6f('0x15')]=hardware[_0x7a6f('0x5')]();if(_0x447a61){var _0x7d7bd4=encryptor[_0x7a6f('0x12')](_0x447a61);_0x4ff070[_0x7a6f('0x16')]=_0x7d7bd4;_0x4ff070[_0x7a6f('0x17')]=moment(_0x7d7bd4)['add'](0x7,'days')[_0x7a6f('0x18')]();_0x4ff070[_0x7a6f('0x19')]=_0x4ff070[_0x7a6f('0xd')]!=_0x4ff070[_0x7a6f('0x15')]?'changed':'disabled';}return _0x4ff070;}catch(_0x4df108){breakingLicense[_0x7a6f('0xd')]=_0x3d2c7f['data1'];breakingLicense[_0x7a6f('0x1a')]=_0x4df108['message'];return breakingLicense;}}function getLimits(){return new BPromise(function(_0x3b23ce,_0x448a90){getLicense()[_0x7a6f('0xb')](function(_0x1a8ba5){return db[_0x7a6f('0x1b')][_0x7a6f('0x1c')]({'attributes':[_0x7a6f('0x1d'),[db['sequelize']['fn']('COUNT',db[_0x7a6f('0x1e')][_0x7a6f('0x1f')](_0x7a6f('0x1d'))),'count']],'group':_0x7a6f('0x1d'),'where':{'role':{'$or':['admin','user','telephone']}},'raw':!![]})[_0x7a6f('0xb')](function(_0xc26c4e){var _0xca9ee4={'user':_0x1a8ba5[_0x7a6f('0x20')]||0x0,'telephone':_0x1a8ba5[_0x7a6f('0x21')]||0x0};_0xc26c4e[_0x7a6f('0x22')](function(_0x5d23da){var _0x374f6d=_0x5d23da[_0x7a6f('0x1d')]===_0x7a6f('0x23')?_0x7a6f('0x24'):_0x5d23da[_0x7a6f('0x1d')];_0xca9ee4[_0x374f6d]-=_0x5d23da[_0x7a6f('0x25')];if(_0xca9ee4[_0x374f6d]<0x0)_0xca9ee4[_0x374f6d]=0x0;});_0x3b23ce(_0xca9ee4);return;});})[_0x7a6f('0xc')](function(_0x1afb00){_0x448a90(_0x1afb00);});});}function checkUserLimits(_0x4a3a54){return new BPromise(function(_0xd31968,_0x18e797){getLimits()['then'](function(_0x520945){var _0x5100cf=_[_0x7a6f('0x26')](_[_0x7a6f('0x27')](_0x4a3a54,_0x7a6f('0x1d')),[_0x7a6f('0x23'),_0x7a6f('0x24'),_0x7a6f('0x28')]);var _0x382531=(_0x5100cf[_0x7a6f('0x23')]||0x0)+(_0x5100cf[_0x7a6f('0x24')]||0x0);var _0x38bef4=_0x5100cf[_0x7a6f('0x28')]||0x0;if(_0x382531>_0x520945['user'])return _0x18e797(_0x7a6f('0x29'));if(_0x38bef4>_0x520945['telephone'])return _0x18e797(_0x7a6f('0x2a'));return _0xd31968();})['catch'](function(_0x27f4f4){_0x18e797(_0x27f4f4);});});}module[_0x7a6f('0x2b')]={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};
\ No newline at end of file
index c5d1df7..6824be6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4888=['http://localhost:9000','myappanuglar-secret','app-id','secret'];(function(_0x106db6,_0xd6decc){var _0x4dc175=function(_0x14c433){while(--_0x14c433){_0x106db6['push'](_0x106db6['shift']());}};_0x4dc175(++_0xd6decc);}(_0x4888,0x198));var _0x8488=function(_0x5b474c,_0x53a6e5){_0x5b474c=_0x5b474c-0x0;var _0x6f3112=_0x4888[_0x5b474c];return _0x6f3112;};'use strict';module['exports']={'DOMAIN':_0x8488('0x0'),'SESSION_SECRET':_0x8488('0x1'),'GOOGLE_ID':_0x8488('0x2'),'GOOGLE_SECRET':_0x8488('0x3'),'DEBUG':''};
\ No newline at end of file
+var _0x3423=['app-id','secret','myappanuglar-secret'];(function(_0x11846c,_0x35f9b8){var _0x3298fb=function(_0x539859){while(--_0x539859){_0x11846c['push'](_0x11846c['shift']());}};_0x3298fb(++_0x35f9b8);}(_0x3423,0x188));var _0x3342=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3423[_0x3dd15e];return _0x231fd0;};'use strict';module['exports']={'DOMAIN':'http://localhost:9000','SESSION_SECRET':_0x3342('0x0'),'GOOGLE_ID':_0x3342('0x1'),'GOOGLE_SECRET':_0x3342('0x2'),'DEBUG':''};
\ No newline at end of file
index d6c8edf..65b5a3b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x594e=['exports','../utils/loggers','fileLogger'];(function(_0x3c8567,_0x583661){var _0x573c7d=function(_0x4c26f9){while(--_0x4c26f9){_0x3c8567['push'](_0x3c8567['shift']());}};_0x573c7d(++_0x583661);}(_0x594e,0x1b1));var _0xe594=function(_0x896dc4,_0x4007ec){_0x896dc4=_0x896dc4-0x0;var _0x1e36be=_0x594e[_0x896dc4];return _0x1e36be;};'use strict';var fileLogger=require(_0xe594('0x0'))[_0xe594('0x1')];module[_0xe594('0x2')]=fileLogger;
\ No newline at end of file
+'use strict';var fileLogger=require('../utils/loggers')['fileLogger'];module['exports']=fileLogger;
\ No newline at end of file
index 54a3954..42e826a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3596=['exports','path','../../config/environment','resolve','root','express','../../services/express/index.js','join','../../services/ami/index.js','agi','../../services/agi/index.js','email','../../services/email/index.js','routing','../../services/routing/index.js','xdr'];(function(_0x3cc739,_0x2532de){var _0x5b89ff=function(_0x24844a){while(--_0x24844a){_0x3cc739['push'](_0x3cc739['shift']());}};_0x5b89ff(++_0x2532de);}(_0x3596,0x151));var _0x6359=function(_0xd1d19a,_0x1933f0){_0xd1d19a=_0xd1d19a-0x0;var _0x52a79d=_0x3596[_0xd1d19a];return _0x52a79d;};'use strict';var path=require(_0x6359('0x0'));var cfg=require(_0x6359('0x1'));var env={'NODE_PATH':path[_0x6359('0x2')](path['join'](cfg[_0x6359('0x3')],'legacy-libs'))};var pm2config={'apps':[{'name':_0x6359('0x4'),'script':path['join'](__dirname,_0x6359('0x5')),'env':env},{'name':'ami','script':path[_0x6359('0x6')](__dirname,_0x6359('0x7')),'env':env},{'name':_0x6359('0x8'),'script':path['join'](__dirname,_0x6359('0x9')),'env':env},{'name':_0x6359('0xa'),'script':path[_0x6359('0x6')](__dirname,_0x6359('0xb')),'env':env},{'name':_0x6359('0xc'),'script':path['join'](__dirname,_0x6359('0xd')),'env':env},{'name':_0x6359('0xe'),'script':path[_0x6359('0x6')](__dirname,'../../services/xdr/index.js'),'env':env}]};module[_0x6359('0xf')]=pm2config;
\ No newline at end of file
+var _0x4f31=['../../services/routing/index.js','../../services/xdr/index.js','exports','resolve','join','root','legacy-libs','express','../../services/express/index.js','agi','../../services/agi/index.js','../../services/email/index.js','routing'];(function(_0x41c358,_0xb928de){var _0x25a609=function(_0x390471){while(--_0x390471){_0x41c358['push'](_0x41c358['shift']());}};_0x25a609(++_0xb928de);}(_0x4f31,0x114));var _0x14f3=function(_0x299c75,_0x48e5e8){_0x299c75=_0x299c75-0x0;var _0x3e43fa=_0x4f31[_0x299c75];return _0x3e43fa;};'use strict';var path=require('path');var cfg=require('../../config/environment');var env={'NODE_PATH':path[_0x14f3('0x0')](path[_0x14f3('0x1')](cfg[_0x14f3('0x2')],_0x14f3('0x3')))};var pm2config={'apps':[{'name':_0x14f3('0x4'),'script':path[_0x14f3('0x1')](__dirname,_0x14f3('0x5')),'env':env},{'name':'ami','script':path[_0x14f3('0x1')](__dirname,'../../services/ami/index.js'),'env':env},{'name':_0x14f3('0x6'),'script':path[_0x14f3('0x1')](__dirname,_0x14f3('0x7')),'env':env},{'name':'email','script':path[_0x14f3('0x1')](__dirname,_0x14f3('0x8')),'env':env},{'name':_0x14f3('0x9'),'script':path[_0x14f3('0x1')](__dirname,_0x14f3('0xa')),'env':env},{'name':'xdr','script':path[_0x14f3('0x1')](__dirname,_0x14f3('0xb')),'env':env}]};module[_0x14f3('0xc')]=pm2config;
\ No newline at end of file
index 8e5abfa..084cf64 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd70=['delete','dump','bluebird','./config','connect','connected','start','then','disconnect','stop','restart','list','describe'];(function(_0xc99b00,_0x16f60f){var _0x31369d=function(_0x46c31d){while(--_0x46c31d){_0xc99b00['push'](_0xc99b00['shift']());}};_0x31369d(++_0x16f60f);}(_0xfd70,0x154));var _0x0fd7=function(_0x4ec520,_0x15fee2){_0x4ec520=_0x4ec520-0x0;var _0xed49d7=_0xfd70[_0x4ec520];return _0xed49d7;};'use strict';var pm2=require('pm2');var BPromise=require(_0x0fd7('0x0'));var config=require(_0x0fd7('0x1'));function connect(){return new BPromise(function(_0x43e686,_0x581da6){return pm2[_0x0fd7('0x2')](function(_0x2f5478){if(_0x2f5478){return _0x581da6(_0x2f5478);}return _0x43e686(_0x0fd7('0x3'));});});};exports[_0x0fd7('0x4')]=function(_0x317b14){return connect()[_0x0fd7('0x5')](function(){return new BPromise(function(_0x1d95bf,_0x4726c7){return pm2[_0x0fd7('0x4')](_0x317b14,function(_0x3934c6,_0x22747e){if(_0x3934c6){return _0x4726c7(_0x3934c6);}pm2[_0x0fd7('0x6')]();return _0x1d95bf(_0x22747e);});});});};exports[_0x0fd7('0x7')]=function(_0x4f71ac){return connect()[_0x0fd7('0x5')](function(){return new BPromise(function(_0x2cba3c,_0x468f3a){return pm2[_0x0fd7('0x7')](_0x4f71ac,function(_0x186612,_0x3792fd){if(_0x186612){return _0x468f3a(_0x186612);}pm2[_0x0fd7('0x6')]();return _0x2cba3c(_0x3792fd);});});});};exports[_0x0fd7('0x8')]=function(_0xe2a59f){return connect()[_0x0fd7('0x5')](function(){return new BPromise(function(_0x4afb9a,_0x257d3e){return pm2[_0x0fd7('0x8')](_0xe2a59f,function(_0x54156e,_0x4f919c){if(_0x54156e){return _0x257d3e(_0x54156e);}pm2[_0x0fd7('0x6')]();return _0x4afb9a(_0x4f919c);});});});};exports[_0x0fd7('0x9')]=function(){return connect()[_0x0fd7('0x5')](function(){return new BPromise(function(_0x5cc6a4,_0x5247a9){return pm2[_0x0fd7('0x9')](function(_0x31ba4f,_0x16b709){if(_0x31ba4f){return _0x5247a9(_0x31ba4f);}pm2[_0x0fd7('0x6')]();return _0x5cc6a4(_0x16b709);});});});};exports[_0x0fd7('0xa')]=function(_0xff44cd){return connect()[_0x0fd7('0x5')](function(){return new BPromise(function(_0x13b9f5,_0x314f8b){return pm2[_0x0fd7('0xa')](_0xff44cd,function(_0x35a79b,_0x23fa85){if(_0x35a79b){return _0x314f8b(_0x35a79b);}pm2[_0x0fd7('0x6')]();return _0x13b9f5(_0x23fa85);});});});};exports['delete']=function(_0xb9bd1e){return connect()[_0x0fd7('0x5')](function(){return new BPromise(function(_0x1b8704,_0x2cf2d3){return pm2[_0x0fd7('0xb')](_0xb9bd1e,function(_0x427c57,_0x1546e4){if(_0x427c57){return _0x2cf2d3(_0x427c57);}pm2[_0x0fd7('0x6')]();return _0x1b8704(_0x1546e4);});});});};exports[_0x0fd7('0xc')]=function(){return connect()[_0x0fd7('0x5')](function(){return new BPromise(function(_0xe327eb,_0x37341f){return pm2[_0x0fd7('0xc')](function(_0x597b12){if(_0x597b12){return _0x37341f(_0x597b12);}return _0xe327eb('saved');});});});};
\ No newline at end of file
+var _0x1fe3=['pm2','bluebird','./config','connect','connected','start','disconnect','stop','then','restart','list','describe','delete','dump','saved'];(function(_0x3fbb91,_0x5ec106){var _0x3eb213=function(_0x118b9f){while(--_0x118b9f){_0x3fbb91['push'](_0x3fbb91['shift']());}};_0x3eb213(++_0x5ec106);}(_0x1fe3,0x159));var _0x31fe=function(_0x34f29c,_0x19ff72){_0x34f29c=_0x34f29c-0x0;var _0x5a2904=_0x1fe3[_0x34f29c];return _0x5a2904;};'use strict';var pm2=require(_0x31fe('0x0'));var BPromise=require(_0x31fe('0x1'));var config=require(_0x31fe('0x2'));function connect(){return new BPromise(function(_0x133a7f,_0x38809c){return pm2[_0x31fe('0x3')](function(_0xaf7b62){if(_0xaf7b62){return _0x38809c(_0xaf7b62);}return _0x133a7f(_0x31fe('0x4'));});});};exports[_0x31fe('0x5')]=function(_0x1b317f){return connect()['then'](function(){return new BPromise(function(_0x162c41,_0x270b2f){return pm2['start'](_0x1b317f,function(_0x5a3d65,_0x191bca){if(_0x5a3d65){return _0x270b2f(_0x5a3d65);}pm2[_0x31fe('0x6')]();return _0x162c41(_0x191bca);});});});};exports[_0x31fe('0x7')]=function(_0x25e863){return connect()[_0x31fe('0x8')](function(){return new BPromise(function(_0xf5aaef,_0x2ef8a4){return pm2[_0x31fe('0x7')](_0x25e863,function(_0x48eb7d,_0xb8f1f4){if(_0x48eb7d){return _0x2ef8a4(_0x48eb7d);}pm2['disconnect']();return _0xf5aaef(_0xb8f1f4);});});});};exports[_0x31fe('0x9')]=function(_0x4e8bfc){return connect()[_0x31fe('0x8')](function(){return new BPromise(function(_0xf3f829,_0x4c4872){return pm2[_0x31fe('0x9')](_0x4e8bfc,function(_0x4838ce,_0x25c842){if(_0x4838ce){return _0x4c4872(_0x4838ce);}pm2['disconnect']();return _0xf3f829(_0x25c842);});});});};exports[_0x31fe('0xa')]=function(){return connect()['then'](function(){return new BPromise(function(_0x4e5063,_0x57e4dd){return pm2[_0x31fe('0xa')](function(_0x34696b,_0x3a7043){if(_0x34696b){return _0x57e4dd(_0x34696b);}pm2[_0x31fe('0x6')]();return _0x4e5063(_0x3a7043);});});});};exports['describe']=function(_0x102a46){return connect()[_0x31fe('0x8')](function(){return new BPromise(function(_0x44575a,_0x17472b){return pm2[_0x31fe('0xb')](_0x102a46,function(_0x3a48e4,_0x417905){if(_0x3a48e4){return _0x17472b(_0x3a48e4);}pm2[_0x31fe('0x6')]();return _0x44575a(_0x417905);});});});};exports[_0x31fe('0xc')]=function(_0x1d0231){return connect()[_0x31fe('0x8')](function(){return new BPromise(function(_0x2332c7,_0x2f7c6f){return pm2[_0x31fe('0xc')](_0x1d0231,function(_0xf3a44c,_0x204b62){if(_0xf3a44c){return _0x2f7c6f(_0xf3a44c);}pm2['disconnect']();return _0x2332c7(_0x204b62);});});});};exports[_0x31fe('0xd')]=function(){return connect()[_0x31fe('0x8')](function(){return new BPromise(function(_0xa47606,_0x1c60e2){return pm2[_0x31fe('0xd')](function(_0x4ba5b1){if(_0x4ba5b1){return _0x1c60e2(_0x4ba5b1);}return _0xa47606(_0x31fe('0xe'));});});});};
\ No newline at end of file
index b03591e..f4a5060 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd93e=['lodash','moment','ioredis','util','../../config/environment','../../mysqldb','../logger','defaults','redis','localhost','socket.io-emitter','Setting','find','chatTimeout','ChatInteraction','findAll','lastMsgAt','subtract','minutes','then','length','map','join','update','timeout','format','YYYY-MM-DD\x20HH:mm:ss','[CHAT]\x20Sending\x20updates\x20for\x20interactions:','chatInteraction:update','error','start'];(function(_0x3ac4ca,_0x274864){var _0xba10d7=function(_0x436d5f){while(--_0x436d5f){_0x3ac4ca['push'](_0x3ac4ca['shift']());}};_0xba10d7(++_0x274864);}(_0xd93e,0x1f0));var _0xed93=function(_0x4ae6ef,_0xc2af80){_0x4ae6ef=_0x4ae6ef-0x0;var _0x3cbb4e=_0xd93e[_0x4ae6ef];return _0x3cbb4e;};'use strict';var _=require(_0xed93('0x0'));var moment=require(_0xed93('0x1'));var Redis=require(_0xed93('0x2'));var util=require(_0xed93('0x3'));var config=require(_0xed93('0x4'));var db=require(_0xed93('0x5'))['db'];var logger=require(_0xed93('0x6'))('schedule');config['redis']=_[_0xed93('0x7')](config[_0xed93('0x8')],{'host':_0xed93('0x9'),'port':0x18eb});var io=require(_0xed93('0xa'))(new Redis(config[_0xed93('0x8')]));function closeInteractions(){var _0x573f1f=0x0;var _0xc0a8c=[];return db[_0xed93('0xb')][_0xed93('0xc')]({'raw':!![],'attributes':['id',_0xed93('0xd')],'where':{'id':0x1}})['then'](function(_0x1ae280){_0x573f1f=_0x1ae280[_0xed93('0xd')];if(_0x573f1f){return db[_0xed93('0xe')][_0xed93('0xf')]({'raw':!![],'attributes':['id',_0xed93('0x10')],'where':{'closed':![],'lastMsgAt':{'$lt':moment()[_0xed93('0x11')](_0x1ae280[_0xed93('0xd')],_0xed93('0x12'))}}});}else{return[];}})[_0xed93('0x13')](function(_0x26dc3b){if(_0x26dc3b&&_0x26dc3b[_0xed93('0x14')]){_0xc0a8c=_[_0xed93('0x15')](_0x26dc3b||[],'id');logger['info']('[CHAT]\x20Interactions\x20to\x20close:',_0xc0a8c[_0xed93('0x16')]());return db[_0xed93('0xe')][_0xed93('0x17')]({'closeReason':'system','disposition':_0xed93('0x18'),'closed':!![],'closedAt':moment()[_0xed93('0x19')](_0xed93('0x1a'))},{'where':{'id':_0xc0a8c}});}})[_0xed93('0x13')](function(){if(_0xc0a8c&&_0xc0a8c[_0xed93('0x14')]){logger['info'](_0xed93('0x1b'),_0xc0a8c[_0xed93('0x16')]());for(var _0x5ed75b=0x0;_0x5ed75b<_0xc0a8c[_0xed93('0x14')];_0x5ed75b++){io['emit'](_0xed93('0x1c'),{'id':_0xc0a8c[_0x5ed75b],'closed':!![]});}}})['catch'](function(_0x577b5f){logger[_0xed93('0x1d')]('[CHAT]\x20Error\x20closing\x20interactions',_0x577b5f?util['inspect'](_0x577b5f,{'showHidden':![],'depth':null}):'');});}exports[_0xed93('0x1e')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
+var _0xd21a=['ChatInteraction','findAll','lastMsgAt','subtract','length','map','join','update','system','timeout','format','YYYY-MM-DD\x20HH:mm:ss','info','[CHAT]\x20Sending\x20updates\x20for\x20interactions:','emit','chatInteraction:update','catch','error','[CHAT]\x20Error\x20closing\x20interactions','inspect','start','moment','util','../../config/environment','../../mysqldb','../logger','schedule','redis','defaults','localhost','socket.io-emitter','Setting','find','chatTimeout','then'];(function(_0x375233,_0x165da0){var _0xb1fac5=function(_0x535787){while(--_0x535787){_0x375233['push'](_0x375233['shift']());}};_0xb1fac5(++_0x165da0);}(_0xd21a,0x150));var _0xad21=function(_0x343801,_0x5c99de){_0x343801=_0x343801-0x0;var _0x89bc33=_0xd21a[_0x343801];return _0x89bc33;};'use strict';var _=require('lodash');var moment=require(_0xad21('0x0'));var Redis=require('ioredis');var util=require(_0xad21('0x1'));var config=require(_0xad21('0x2'));var db=require(_0xad21('0x3'))['db'];var logger=require(_0xad21('0x4'))(_0xad21('0x5'));config[_0xad21('0x6')]=_[_0xad21('0x7')](config[_0xad21('0x6')],{'host':_0xad21('0x8'),'port':0x18eb});var io=require(_0xad21('0x9'))(new Redis(config[_0xad21('0x6')]));function closeInteractions(){var _0x279ac8=0x0;var _0x54dd01=[];return db[_0xad21('0xa')][_0xad21('0xb')]({'raw':!![],'attributes':['id',_0xad21('0xc')],'where':{'id':0x1}})[_0xad21('0xd')](function(_0x5d7916){_0x279ac8=_0x5d7916[_0xad21('0xc')];if(_0x279ac8){return db[_0xad21('0xe')][_0xad21('0xf')]({'raw':!![],'attributes':['id',_0xad21('0x10')],'where':{'closed':![],'lastMsgAt':{'$lt':moment()[_0xad21('0x11')](_0x5d7916['chatTimeout'],'minutes')}}});}else{return[];}})[_0xad21('0xd')](function(_0xa799db){if(_0xa799db&&_0xa799db[_0xad21('0x12')]){_0x54dd01=_[_0xad21('0x13')](_0xa799db||[],'id');logger['info']('[CHAT]\x20Interactions\x20to\x20close:',_0x54dd01[_0xad21('0x14')]());return db[_0xad21('0xe')][_0xad21('0x15')]({'closeReason':_0xad21('0x16'),'disposition':_0xad21('0x17'),'closed':!![],'closedAt':moment()[_0xad21('0x18')](_0xad21('0x19'))},{'where':{'id':_0x54dd01}});}})['then'](function(){if(_0x54dd01&&_0x54dd01[_0xad21('0x12')]){logger[_0xad21('0x1a')](_0xad21('0x1b'),_0x54dd01[_0xad21('0x14')]());for(var _0x57b629=0x0;_0x57b629<_0x54dd01[_0xad21('0x12')];_0x57b629++){io[_0xad21('0x1c')](_0xad21('0x1d'),{'id':_0x54dd01[_0x57b629],'closed':!![]});}}})[_0xad21('0x1e')](function(_0x14530b){logger[_0xad21('0x1f')](_0xad21('0x20'),_0x14530b?util[_0xad21('0x21')](_0x14530b,{'showHidden':![],'depth':null}):'');});}exports[_0xad21('0x22')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index 242b06e..17451d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb129=['../../api/cloudProvider/cloudProvider.oauth.js','startAllRefreshIntervals','exports'];(function(_0x1ded25,_0x26be3d){var _0x8ec99f=function(_0x3017ac){while(--_0x3017ac){_0x1ded25['push'](_0x1ded25['shift']());}};_0x8ec99f(++_0x26be3d);}(_0xb129,0x7b));var _0x9b12=function(_0x5c7525,_0x39490f){_0x5c7525=_0x5c7525-0x0;var _0x2e2ec8=_0xb129[_0x5c7525];return _0x2e2ec8;};'use strict';function start(){var _0x845228=require(_0x9b12('0x0'));return _0x845228[_0x9b12('0x1')]();}module[_0x9b12('0x2')]={'intervals':{},'start':start};
\ No newline at end of file
+var _0x0c68=['exports','../../api/cloudProvider/cloudProvider.oauth.js'];(function(_0x22a91c,_0x5ce13f){var _0x733c2f=function(_0x1ef119){while(--_0x1ef119){_0x22a91c['push'](_0x22a91c['shift']());}};_0x733c2f(++_0x5ce13f);}(_0x0c68,0x12d));var _0x80c6=function(_0x1b97ae,_0xfc51f6){_0x1b97ae=_0x1b97ae-0x0;var _0x15bb2f=_0x0c68[_0x1b97ae];return _0x15bb2f;};'use strict';function start(){var _0x4801b4=require(_0x80c6('0x0'));return _0x4801b4['startAllRefreshIntervals']();}module[_0x80c6('0x1')]={'intervals':{},'start':start};
\ No newline at end of file
index 27e8e7a..a9258d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb477=['deleteJob','delete\x20cron','toRun','index','resolve','run\x20job','cron','active','isBetween','startAt','endAt','add','add\x20cron','stop\x20cron','update','run','util','path','lodash','moment','jayson/promise','../logger','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','client','info','Try\x20to\x20send\x20a\x20mail\x20to','email','MailAccount','getSmtpOptions','format','\x22%s\x22\x20<%s>','name','user','Report\x20%s\x20last\x20%s\x20%s','subtractNumber','subtractUnit','../../files/reports','%s.%s','basename','extname','join','existsSync','status','Sent','message','text','stringify','sendIfEmpty','empty\x20file,\x20email\x20not\x20sent','SendMail','then','error','error\x20mail','email\x20sent','catch','Smtp','subtractNumber\x20null\x20or\x20undefined','isNil','subtractUnit\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss','output','DefaultReportId','runReport','CustomReportId','findAll','MailServerOut','keys','jobs','map','toString','keyBy','difference','intersection','length','exists','stop'];(function(_0x50dd7d,_0x12f7a5){var _0x7ff8ae=function(_0x4dbbdc){while(--_0x4dbbdc){_0x50dd7d['push'](_0x50dd7d['shift']());}};_0x7ff8ae(++_0x12f7a5);}(_0xb477,0xac));var _0x7b47=function(_0x4b055c,_0x4b870b){_0x4b055c=_0x4b055c-0x0;var _0x4b62bb=_0xb477[_0x4b055c];return _0x4b62bb;};'use strict';var fs=require('fs');var util=require(_0x7b47('0x0'));var path=require(_0x7b47('0x1'));var _=require(_0x7b47('0x2'));var moment=require(_0x7b47('0x3'));var CronJobManager=require('cron-job-manager');var jayson=require(_0x7b47('0x4'));var BPromise=require('bluebird');var logger=require(_0x7b47('0x5'))('schedule');var db=require(_0x7b47('0x6'))['db'];var analyticCustomReportController=require(_0x7b47('0x7'));var analyticDefaultReportController=require('../../api/analyticDefaultReport/analyticDefaultReport.controller');var client=jayson[_0x7b47('0x8')]['http']({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x369933,_0x1f3f89){return function(){logger[_0x7b47('0x9')](_0x7b47('0xa'),_0x369933[_0x7b47('0xb')]);var _0x1873b0=!![];var _0x392158=_0x369933[_0x7b47('0xc')][_0x7b47('0xd')]();var _0x7dafed={'account':_0x392158,'message':{'from':util[_0x7b47('0xe')](_0x7b47('0xf'),_0x369933['MailAccount'][_0x7b47('0x10')],_0x369933[_0x7b47('0xc')][_0x7b47('0xb')]||_0x369933[_0x7b47('0xc')]['Smtp'][_0x7b47('0x11')]),'to':_0x369933['email'],'cc':_0x369933['cc'],'bcc':_0x369933['bcc'],'subject':util[_0x7b47('0xe')](_0x7b47('0x12'),_0x1f3f89[_0x7b47('0x10')],_0x369933[_0x7b47('0x13')],_0x369933[_0x7b47('0x14')])}};var _0x4daa5d=path['join'](__dirname,_0x7b47('0x15'));var _0x36aade=_0x1f3f89['savename'];var _0x22f14b=util[_0x7b47('0xe')](_0x7b47('0x16'),path[_0x7b47('0x17')](_0x1f3f89['savename'],path[_0x7b47('0x18')](_0x1f3f89['savename'])),'zip');var _0x1b24f0=path[_0x7b47('0x19')](_0x4daa5d,_0x36aade);var _0x131087=path[_0x7b47('0x19')](_0x4daa5d,_0x22f14b);if(fs[_0x7b47('0x1a')](_0x1b24f0)){_0x1f3f89[_0x7b47('0x1b')]=_0x7b47('0x1c');_0x7dafed['message']['attachments']=[{'filename':_0x36aade,'path':_0x1b24f0}];_0x7dafed[_0x7b47('0x1d')][_0x7b47('0x1e')]=util[_0x7b47('0xe')]('Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a',JSON[_0x7b47('0x1f')](_0x1f3f89,null,0x2));}else if(fs[_0x7b47('0x1a')](_0x131087)){_0x1f3f89['status']=_0x7b47('0x1c');_0x7dafed[_0x7b47('0x1d')]['attachments']=[{'filename':_0x22f14b,'path':_0x131087}];}else{_0x7dafed[_0x7b47('0x1d')]['text']='Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a';if(!_0x369933[_0x7b47('0x20')]){_0x1873b0=![];logger[_0x7b47('0x9')](_0x7b47('0x21'));}}if(_0x1873b0){return client['request'](_0x7b47('0x22'),_0x7dafed)[_0x7b47('0x23')](function(_0x21b337){if(_0x21b337['error']){return logger[_0x7b47('0x24')](_0x7b47('0x25'),JSON[_0x7b47('0x1f')](_0x21b337));}return logger[_0x7b47('0x9')](_0x7b47('0x26'));})[_0x7b47('0x27')](function(_0x26d93){return logger['error'](_0x7b47('0x25'),JSON[_0x7b47('0x1f')](_0x26d93));});}};}function handleError(){return function(_0x20d7b1){return logger[_0x7b47('0x24')](JSON['stringify'](_0x20d7b1));};}function handleResult(_0xdfdbb1){return function(_0x2875e){logger[_0x7b47('0x9')]('data',JSON['stringify'](_0x2875e));if(_0xdfdbb1[_0x7b47('0xc')]&&_0xdfdbb1['MailAccount'][_0x7b47('0x28')]&&!_['isNil'](_0xdfdbb1[_0x7b47('0xb')])){setTimeout(handleSendEmail(_0xdfdbb1,_0x2875e),0x3c*0x3e8);}};}function handleJob(_0x4bbea2){return function(){try{if(_['isNil'](_0x4bbea2[_0x7b47('0x13')])){return logger[_0x7b47('0x9')](_0x7b47('0x29'));}if(_[_0x7b47('0x2a')](_0x4bbea2[_0x7b47('0x14')])){return logger[_0x7b47('0x9')](_0x7b47('0x2b'));}var _0x2525ba={'startDate':moment()[_0x7b47('0x2c')](_0x4bbea2['subtractNumber'],_0x4bbea2[_0x7b47('0x14')])[_0x7b47('0xe')](_0x7b47('0x2d')),'endDate':moment()[_0x7b47('0xe')](_0x7b47('0x2d')),'type':'scheduled','output':_0x4bbea2[_0x7b47('0x2e')],'name':_0x4bbea2[_0x7b47('0x10')]};if(!_[_0x7b47('0x2a')](_0x4bbea2[_0x7b47('0x2f')])){logger[_0x7b47('0x9')]('exec\x20defaul\x20report\x20id:%s',_0x4bbea2['DefaultReportId']);return analyticDefaultReportController[_0x7b47('0x30')]({'id':_0x4bbea2[_0x7b47('0x2f')]},_0x2525ba)[_0x7b47('0x23')](handleResult(_0x4bbea2))[_0x7b47('0x27')](handleError());}if(!_[_0x7b47('0x2a')](_0x4bbea2['CustomReportId'])){logger[_0x7b47('0x9')]('exec\x20custom\x20report\x20id:%s',_0x4bbea2['CustomReportId']);return analyticCustomReportController['runReport']({'id':_0x4bbea2[_0x7b47('0x31')]},_0x2525ba)[_0x7b47('0x23')](handleResult(_0x4bbea2))[_0x7b47('0x27')](handleError());}}catch(_0x1ec947){logger[_0x7b47('0x24')](JSON['stringify'](_0x1ec947));}return logger['info']('no\x20report\x20id');};}function getJobs(_0x1100df){var _0xc30d72={};if(_0x1100df){_0xc30d72['id']=_0x1100df;}return db['Schedule'][_0x7b47('0x32')]({'where':_0xc30d72,'include':[{'model':db[_0x7b47('0xc')],'attributes':['id',_0x7b47('0x10'),_0x7b47('0xb')],'include':[{'model':db[_0x7b47('0x33')],'as':_0x7b47('0x28'),'include':[{'model':db['CloudProvider'],'as':'CloudProvider'}]}]}]})['then'](function(_0x11c991){var _0x3857ff=_[_0x7b47('0x34')](manager[_0x7b47('0x35')]);var _0x466417=_[_0x7b47('0x36')](_0x11c991,function(_0x530e81){return _0x530e81['id'][_0x7b47('0x37')]();});var _0x581941=_[_0x7b47('0x38')](_0x11c991,function(_0x1618e4){return _0x1618e4['id'][_0x7b47('0x37')]();});var _0x1cc17d=_0x1100df?_0x466417:_[_0x7b47('0x39')](_0x466417,_0x3857ff);var _0x51305e=_[_0x7b47('0x3a')](_0x466417,_0x3857ff);var _0x16b32e=_[_0x7b47('0x39')](_0x3857ff,_0x466417);var _0x3a6484;var _0xa32a71;for(_0x3a6484=0x0;_0x3a6484<_0x16b32e[_0x7b47('0x3b')]&&!_0x1100df;_0x3a6484+=0x1){_0xa32a71=_0x16b32e[_0x3a6484][_0x7b47('0x37')]();if(manager[_0x7b47('0x3c')](_0xa32a71)){manager[_0x7b47('0x3d')](_0xa32a71);manager[_0x7b47('0x3e')](_0xa32a71);logger['info'](_0x7b47('0x3f'),_0xa32a71);}}logger[_0x7b47('0x9')](_0x7b47('0x40'),JSON[_0x7b47('0x1f')](_0x1cc17d));for(_0x3a6484=0x0;_0x3a6484<_0x1cc17d[_0x7b47('0x3b')];_0x3a6484+=0x1){_0xa32a71=_0x1cc17d[_0x3a6484][_0x7b47('0x37')]();logger[_0x7b47('0x9')](_0x7b47('0x41'),_0xa32a71);if(_0x1100df){logger[_0x7b47('0x9')]('my\x20id',_0x1100df);logger['info'](JSON['stringify'](_0x581941[_0xa32a71]));BPromise[_0x7b47('0x42')]()[_0x7b47('0x23')](handleJob(_0x581941[_0xa32a71]));logger['info'](_0x7b47('0x43'),_0x581941[_0xa32a71]['name'],_0x581941[_0xa32a71][_0x7b47('0x44')]);}else if(_0x581941[_0xa32a71][_0x7b47('0x44')]&&_0x581941[_0xa32a71][_0x7b47('0x45')]&&moment()[_0x7b47('0x46')](_0x581941[_0xa32a71][_0x7b47('0x47')],_0x581941[_0xa32a71][_0x7b47('0x48')])){manager[_0x7b47('0x49')](_0xa32a71,_0x581941[_0xa32a71][_0x7b47('0x44')],handleJob(_0x581941[_0xa32a71]));manager['start'](_0xa32a71);logger[_0x7b47('0x9')](_0x7b47('0x4a'),_0x581941[_0xa32a71][_0x7b47('0x10')],_0x581941[_0xa32a71][_0x7b47('0x44')]);}else if(manager['exists'](_0xa32a71)){manager[_0x7b47('0x3d')](_0xa32a71);manager['deleteJob'](_0xa32a71);logger[_0x7b47('0x9')](_0x7b47('0x4b'),_0x581941[_0xa32a71][_0x7b47('0x10')],_0x581941[_0xa32a71][_0x7b47('0x44')]);}}for(_0x3a6484=0x0,_0xa32a71;_0x3a6484<_0x51305e['length']&&!_0x1100df;_0x3a6484+=0x1){_0xa32a71=_0x51305e[_0x3a6484][_0x7b47('0x37')]();if(manager[_0x7b47('0x3c')](_0xa32a71)){if(_0x581941[_0xa32a71][_0x7b47('0x44')]&&_0x581941[_0xa32a71][_0x7b47('0x45')]&&moment()['isBetween'](_0x581941[_0xa32a71][_0x7b47('0x47')],_0x581941[_0xa32a71][_0x7b47('0x48')])){manager[_0x7b47('0x4c')](_0xa32a71,_0x581941[_0xa32a71]['cron'],handleJob(_0x581941[_0xa32a71]));logger[_0x7b47('0x9')]('update\x20cron',_0x581941[_0xa32a71]['name'],_0x581941[_0xa32a71][_0x7b47('0x44')]);}else{manager[_0x7b47('0x3d')](_0xa32a71);manager[_0x7b47('0x3e')](_0xa32a71);logger[_0x7b47('0x9')](_0x7b47('0x4b'),_0x581941[_0xa32a71]['name'],_0x581941[_0xa32a71][_0x7b47('0x44')]);}}}})['catch'](function(_0x5cf65e){logger[_0x7b47('0x24')](JSON[_0x7b47('0x1f')](_0x5cf65e));});}exports[_0x7b47('0x4d')]=function(_0x13099e){return getJobs(_0x13099e);};exports['start']=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
+var _0x1105=['subtractNumber\x20null\x20or\x20undefined','YYYY-MM-DD\x20HH:mm:ss','scheduled','output','DefaultReportId','runReport','CustomReportId','no\x20report\x20id','Schedule','findAll','CloudProvider','keys','jobs','map','keyBy','toString','difference','length','exists','stop','deleteJob','delete\x20cron','index','my\x20id','resolve','run\x20job','cron','active','isBetween','startAt','add','start','add\x20cron','update','update\x20cron','stop\x20cron','run','util','lodash','moment','cron-job-manager','jayson/promise','bluebird','../logger','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','client','info','MailAccount','getSmtpOptions','format','\x22%s\x22\x20<%s>','user','email','bcc','Report\x20%s\x20last\x20%s\x20%s','name','subtractUnit','../../files/reports','savename','%s.%s','basename','zip','join','existsSync','Sent','message','text','stringify','attachments','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','email\x20sent','catch','error\x20mail','data','Smtp','isNil','subtractNumber'];(function(_0x3763da,_0x58158b){var _0x5d192f=function(_0x329668){while(--_0x329668){_0x3763da['push'](_0x3763da['shift']());}};_0x5d192f(++_0x58158b);}(_0x1105,0x124));var _0x5110=function(_0x3939ff,_0x255995){_0x3939ff=_0x3939ff-0x0;var _0x57f27b=_0x1105[_0x3939ff];return _0x57f27b;};'use strict';var fs=require('fs');var util=require(_0x5110('0x0'));var path=require('path');var _=require(_0x5110('0x1'));var moment=require(_0x5110('0x2'));var CronJobManager=require(_0x5110('0x3'));var jayson=require(_0x5110('0x4'));var BPromise=require(_0x5110('0x5'));var logger=require(_0x5110('0x6'))('schedule');var db=require(_0x5110('0x7'))['db'];var analyticCustomReportController=require(_0x5110('0x8'));var analyticDefaultReportController=require(_0x5110('0x9'));var client=jayson[_0x5110('0xa')]['http']({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x3ac53f,_0x35d214){return function(){logger[_0x5110('0xb')]('Try\x20to\x20send\x20a\x20mail\x20to',_0x3ac53f['email']);var _0x199d9f=!![];var _0x2a669c=_0x3ac53f[_0x5110('0xc')][_0x5110('0xd')]();var _0x577e66={'account':_0x2a669c,'message':{'from':util[_0x5110('0xe')](_0x5110('0xf'),_0x3ac53f['MailAccount']['name'],_0x3ac53f[_0x5110('0xc')]['email']||_0x3ac53f['MailAccount']['Smtp'][_0x5110('0x10')]),'to':_0x3ac53f[_0x5110('0x11')],'cc':_0x3ac53f['cc'],'bcc':_0x3ac53f[_0x5110('0x12')],'subject':util[_0x5110('0xe')](_0x5110('0x13'),_0x35d214[_0x5110('0x14')],_0x3ac53f['subtractNumber'],_0x3ac53f[_0x5110('0x15')])}};var _0x5220bd=path['join'](__dirname,_0x5110('0x16'));var _0x2b64c3=_0x35d214[_0x5110('0x17')];var _0x3d05ef=util[_0x5110('0xe')](_0x5110('0x18'),path[_0x5110('0x19')](_0x35d214['savename'],path['extname'](_0x35d214['savename'])),_0x5110('0x1a'));var _0x3aee41=path[_0x5110('0x1b')](_0x5220bd,_0x2b64c3);var _0x2d9e17=path['join'](_0x5220bd,_0x3d05ef);if(fs[_0x5110('0x1c')](_0x3aee41)){_0x35d214['status']=_0x5110('0x1d');_0x577e66[_0x5110('0x1e')]['attachments']=[{'filename':_0x2b64c3,'path':_0x3aee41}];_0x577e66[_0x5110('0x1e')][_0x5110('0x1f')]=util[_0x5110('0xe')]('Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a',JSON[_0x5110('0x20')](_0x35d214,null,0x2));}else if(fs[_0x5110('0x1c')](_0x2d9e17)){_0x35d214['status']=_0x5110('0x1d');_0x577e66[_0x5110('0x1e')][_0x5110('0x21')]=[{'filename':_0x3d05ef,'path':_0x2d9e17}];}else{_0x577e66[_0x5110('0x1e')][_0x5110('0x1f')]=_0x5110('0x22');if(!_0x3ac53f[_0x5110('0x23')]){_0x199d9f=![];logger['info'](_0x5110('0x24'));}}if(_0x199d9f){return client[_0x5110('0x25')](_0x5110('0x26'),_0x577e66)[_0x5110('0x27')](function(_0x344a4c){if(_0x344a4c[_0x5110('0x28')]){return logger['error']('error\x20mail',JSON['stringify'](_0x344a4c));}return logger['info'](_0x5110('0x29'));})[_0x5110('0x2a')](function(_0x224ca2){return logger[_0x5110('0x28')](_0x5110('0x2b'),JSON[_0x5110('0x20')](_0x224ca2));});}};}function handleError(){return function(_0x20adef){return logger[_0x5110('0x28')](JSON[_0x5110('0x20')](_0x20adef));};}function handleResult(_0x2781a4){return function(_0x4ca968){logger[_0x5110('0xb')](_0x5110('0x2c'),JSON['stringify'](_0x4ca968));if(_0x2781a4[_0x5110('0xc')]&&_0x2781a4[_0x5110('0xc')][_0x5110('0x2d')]&&!_[_0x5110('0x2e')](_0x2781a4[_0x5110('0x11')])){setTimeout(handleSendEmail(_0x2781a4,_0x4ca968),0x3c*0x3e8);}};}function handleJob(_0x317abf){return function(){try{if(_['isNil'](_0x317abf[_0x5110('0x2f')])){return logger[_0x5110('0xb')](_0x5110('0x30'));}if(_[_0x5110('0x2e')](_0x317abf['subtractUnit'])){return logger[_0x5110('0xb')]('subtractUnit\x20null\x20or\x20undefined');}var _0x4b7429={'startDate':moment()['subtract'](_0x317abf['subtractNumber'],_0x317abf[_0x5110('0x15')])['format'](_0x5110('0x31')),'endDate':moment()[_0x5110('0xe')]('YYYY-MM-DD\x20HH:mm:ss'),'type':_0x5110('0x32'),'output':_0x317abf[_0x5110('0x33')],'name':_0x317abf[_0x5110('0x14')]};if(!_['isNil'](_0x317abf['DefaultReportId'])){logger[_0x5110('0xb')]('exec\x20defaul\x20report\x20id:%s',_0x317abf[_0x5110('0x34')]);return analyticDefaultReportController[_0x5110('0x35')]({'id':_0x317abf[_0x5110('0x34')]},_0x4b7429)[_0x5110('0x27')](handleResult(_0x317abf))[_0x5110('0x2a')](handleError());}if(!_[_0x5110('0x2e')](_0x317abf[_0x5110('0x36')])){logger[_0x5110('0xb')]('exec\x20custom\x20report\x20id:%s',_0x317abf[_0x5110('0x36')]);return analyticCustomReportController[_0x5110('0x35')]({'id':_0x317abf['CustomReportId']},_0x4b7429)[_0x5110('0x27')](handleResult(_0x317abf))[_0x5110('0x2a')](handleError());}}catch(_0x217939){logger['error'](JSON[_0x5110('0x20')](_0x217939));}return logger[_0x5110('0xb')](_0x5110('0x37'));};}function getJobs(_0x595f51){var _0x5bdea6={};if(_0x595f51){_0x5bdea6['id']=_0x595f51;}return db[_0x5110('0x38')][_0x5110('0x39')]({'where':_0x5bdea6,'include':[{'model':db[_0x5110('0xc')],'attributes':['id',_0x5110('0x14'),_0x5110('0x11')],'include':[{'model':db['MailServerOut'],'as':'Smtp','include':[{'model':db[_0x5110('0x3a')],'as':'CloudProvider'}]}]}]})[_0x5110('0x27')](function(_0x5cfd77){var _0x14c4a1=_[_0x5110('0x3b')](manager[_0x5110('0x3c')]);var _0x123643=_[_0x5110('0x3d')](_0x5cfd77,function(_0x4867fb){return _0x4867fb['id']['toString']();});var _0xf96c0c=_[_0x5110('0x3e')](_0x5cfd77,function(_0x4c30e4){return _0x4c30e4['id'][_0x5110('0x3f')]();});var _0x12b5ef=_0x595f51?_0x123643:_[_0x5110('0x40')](_0x123643,_0x14c4a1);var _0x147bd8=_['intersection'](_0x123643,_0x14c4a1);var _0x5e7d57=_['difference'](_0x14c4a1,_0x123643);var _0xae5e5c;var _0x414fda;for(_0xae5e5c=0x0;_0xae5e5c<_0x5e7d57[_0x5110('0x41')]&&!_0x595f51;_0xae5e5c+=0x1){_0x414fda=_0x5e7d57[_0xae5e5c]['toString']();if(manager[_0x5110('0x42')](_0x414fda)){manager[_0x5110('0x43')](_0x414fda);manager[_0x5110('0x44')](_0x414fda);logger[_0x5110('0xb')](_0x5110('0x45'),_0x414fda);}}logger[_0x5110('0xb')]('toRun',JSON['stringify'](_0x12b5ef));for(_0xae5e5c=0x0;_0xae5e5c<_0x12b5ef[_0x5110('0x41')];_0xae5e5c+=0x1){_0x414fda=_0x12b5ef[_0xae5e5c][_0x5110('0x3f')]();logger[_0x5110('0xb')](_0x5110('0x46'),_0x414fda);if(_0x595f51){logger[_0x5110('0xb')](_0x5110('0x47'),_0x595f51);logger[_0x5110('0xb')](JSON[_0x5110('0x20')](_0xf96c0c[_0x414fda]));BPromise[_0x5110('0x48')]()[_0x5110('0x27')](handleJob(_0xf96c0c[_0x414fda]));logger[_0x5110('0xb')](_0x5110('0x49'),_0xf96c0c[_0x414fda][_0x5110('0x14')],_0xf96c0c[_0x414fda][_0x5110('0x4a')]);}else if(_0xf96c0c[_0x414fda][_0x5110('0x4a')]&&_0xf96c0c[_0x414fda][_0x5110('0x4b')]&&moment()[_0x5110('0x4c')](_0xf96c0c[_0x414fda][_0x5110('0x4d')],_0xf96c0c[_0x414fda]['endAt'])){manager[_0x5110('0x4e')](_0x414fda,_0xf96c0c[_0x414fda][_0x5110('0x4a')],handleJob(_0xf96c0c[_0x414fda]));manager[_0x5110('0x4f')](_0x414fda);logger[_0x5110('0xb')](_0x5110('0x50'),_0xf96c0c[_0x414fda][_0x5110('0x14')],_0xf96c0c[_0x414fda][_0x5110('0x4a')]);}else if(manager[_0x5110('0x42')](_0x414fda)){manager[_0x5110('0x43')](_0x414fda);manager[_0x5110('0x44')](_0x414fda);logger['info']('stop\x20cron',_0xf96c0c[_0x414fda]['name'],_0xf96c0c[_0x414fda][_0x5110('0x4a')]);}}for(_0xae5e5c=0x0,_0x414fda;_0xae5e5c<_0x147bd8[_0x5110('0x41')]&&!_0x595f51;_0xae5e5c+=0x1){_0x414fda=_0x147bd8[_0xae5e5c]['toString']();if(manager[_0x5110('0x42')](_0x414fda)){if(_0xf96c0c[_0x414fda][_0x5110('0x4a')]&&_0xf96c0c[_0x414fda][_0x5110('0x4b')]&&moment()[_0x5110('0x4c')](_0xf96c0c[_0x414fda][_0x5110('0x4d')],_0xf96c0c[_0x414fda]['endAt'])){manager[_0x5110('0x51')](_0x414fda,_0xf96c0c[_0x414fda][_0x5110('0x4a')],handleJob(_0xf96c0c[_0x414fda]));logger[_0x5110('0xb')](_0x5110('0x52'),_0xf96c0c[_0x414fda]['name'],_0xf96c0c[_0x414fda][_0x5110('0x4a')]);}else{manager[_0x5110('0x43')](_0x414fda);manager[_0x5110('0x44')](_0x414fda);logger['info'](_0x5110('0x53'),_0xf96c0c[_0x414fda][_0x5110('0x14')],_0xf96c0c[_0x414fda][_0x5110('0x4a')]);}}}})[_0x5110('0x2a')](function(_0x369d5c){logger['error'](JSON[_0x5110('0x20')](_0x369d5c));});}exports[_0x5110('0x54')]=function(_0x24220e){return getJobs(_0x24220e);};exports['start']=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
index 5572040..4ea59f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a1c=['Neutral','FAILED','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','Sentiment\x20Analysis\x20not\x20requested','findOne','sentimentAccountId','Cloud\x20Provider\x20not\x20available','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','Mixed','catch','name','SequelizeValidationError','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','findAll','No\x20transcribe\x20job\x20to\x20check','Setting','forEach','push','all','start','lodash','aws-sdk','bluebird','../../config/logger','transcribe','TranscribeService','getTranscriptionJob','Comprehend','detectSentiment','info','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','data1','data2','transcribeRegion','transcribeName','then','format','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','TranscriptionJobStatus','fileText','COMPLETED','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','results','transcripts','length','transcript','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','Sequelize','ValidationError','sentiment','sentimentRegion','bucket','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','CloudProvider','Cloud\x20Provider\x20not\x20configured','language','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','SentimentScore','Positive','Negative'];(function(_0x761864,_0x2d960d){var _0x49247e=function(_0x493c5f){while(--_0x493c5f){_0x761864['push'](_0x761864['shift']());}};_0x49247e(++_0x2d960d);}(_0x5a1c,0x1b5));var _0xc5a1=function(_0x5c04d1,_0x4ca02e){_0x5c04d1=_0x5c04d1-0x0;var _0x48ca76=_0x5a1c[_0x5c04d1];return _0x48ca76;};var _=require(_0xc5a1('0x0'));var AWS=require(_0xc5a1('0x1'));var rp=require('request-promise');var util=require('util');var BPromise=require(_0xc5a1('0x2'));var db=require('../../mysqldb')['db'];var logger=require(_0xc5a1('0x3'))(_0xc5a1('0x4'));function getTranscriptionJob(_0x71fc1,_0x5c3f2d,_0x57b342,_0x429a68){return new Promise(function(_0x3d356e,_0x1ed54a){var _0x5782b9=new AWS[(_0xc5a1('0x5'))]({'accessKeyId':_0x5c3f2d,'secretAccessKey':_0x71fc1,'region':_0x57b342});_0x5782b9[_0xc5a1('0x6')]({'TranscriptionJobName':_0x429a68},function(_0x1ce1df,_0x111921){if(_0x1ce1df){return _0x1ed54a(_0x1ce1df);}else{return _0x3d356e(_0x111921);}});});}function sentiment(_0x42b181,_0x54a2de,_0x28234b,_0x45c8b8,_0x2fb166){return new Promise(function(_0x364ef4,_0x363a3e){var _0x501d85=new AWS[(_0xc5a1('0x7'))]({'accessKeyId':_0x54a2de,'secretAccessKey':_0x42b181,'region':_0x28234b});_0x501d85[_0xc5a1('0x8')]({'Text':_0x45c8b8,'LanguageCode':_0x2fb166['substring'](0x0,0x2)},function(_0x5bac8b,_0xb6fe3b){if(_0x5bac8b){return _0x363a3e(_0x5bac8b);}else{return _0x364ef4(_0xb6fe3b);}});});}function checkTranscribeJob(_0x514744,_0x17d063,_0x5f2534){var _0x37b863;return new BPromise(function(_0x3fafdc,_0x4f4b59){logger[_0xc5a1('0x9')](util['format'](_0xc5a1('0xa'),_0x514744['id'],_0x514744['transcribeName']));return getTranscriptionJob(_0x5f2534[_0xc5a1('0xb')],_0x5f2534[_0xc5a1('0xc')],_0x17d063[_0xc5a1('0xd')],_0x514744[_0xc5a1('0xe')])[_0xc5a1('0xf')](function(_0x5af680){logger[_0xc5a1('0x9')](util[_0xc5a1('0x10')](_0xc5a1('0x11'),_0x514744['id'],_0x514744[_0xc5a1('0xe')],_0x5af680[_0xc5a1('0x12')][_0xc5a1('0x13')]));if(!_0x514744[_0xc5a1('0x14')]){switch(_0x5af680['TranscriptionJob'][_0xc5a1('0x13')]){case _0xc5a1('0x15'):var _0x3b7e90={'transcribeStatus':_0x5af680[_0xc5a1('0x12')]['TranscriptionJobStatus'],'fileUri':_0x5af680[_0xc5a1('0x12')][_0xc5a1('0x16')][_0xc5a1('0x17')]};logger[_0xc5a1('0x9')](util[_0xc5a1('0x10')](_0xc5a1('0x18'),_0x514744['id']));return rp({'uri':_0x5af680[_0xc5a1('0x12')][_0xc5a1('0x16')]['TranscriptFileUri'],'json':!![]})[_0xc5a1('0xf')](function(_0x578788){logger[_0xc5a1('0x9')](util[_0xc5a1('0x10')]('[RECORDING:%d]\x20Transcript\x20downloaded',_0x514744['id']));if(_0x578788&&_0x578788[_0xc5a1('0x19')]&&_0x578788[_0xc5a1('0x19')]['transcripts']&&_0x578788['results'][_0xc5a1('0x1a')][_0xc5a1('0x1b')]){_0x3b7e90['fileText']='';for(var _0x9168e2=0x0;_0x9168e2<_0x578788['results'][_0xc5a1('0x1a')][_0xc5a1('0x1b')];_0x9168e2++){_0x3b7e90[_0xc5a1('0x14')]+=_0x578788[_0xc5a1('0x19')][_0xc5a1('0x1a')][_0x9168e2][_0xc5a1('0x1c')]+'';}}return _0x514744[_0xc5a1('0x1d')](_0x3b7e90);})[_0xc5a1('0xf')](function(){logger[_0xc5a1('0x9')](util[_0xc5a1('0x10')](_0xc5a1('0x1e'),_0x514744['id']));if(!_0x514744['tempSentiment']){throw new db[(_0xc5a1('0x1f'))][(_0xc5a1('0x20'))]('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x17d063[_0xc5a1('0x21')]||!_0x17d063['sentimentAccountId']||!_0x17d063[_0xc5a1('0x22')]||!_0x17d063['language']||!_0x17d063[_0xc5a1('0x23')]){throw new db[(_0xc5a1('0x1f'))][(_0xc5a1('0x20'))](_0xc5a1('0x24'));}if(!_0x3b7e90[_0xc5a1('0x14')]){throw new Error(_0xc5a1('0x25'));}if(_0x17d063['sentimentAccountId']===_0x5f2534['id']){return _0x5f2534;}else{return db[_0xc5a1('0x26')]['findOne']({'where':{'id':_settings['sentimentAccountId']}});}})[_0xc5a1('0xf')](function(_0x2ec457){if(!_0x2ec457){throw new db[(_0xc5a1('0x1f'))][(_0xc5a1('0x20'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x2ec457[_0xc5a1('0xb')]||!_0x2ec457['data2']){throw new db[(_0xc5a1('0x1f'))]['ValidationError'](_0xc5a1('0x27'));}_0x37b863=_0x2ec457;logger[_0xc5a1('0x9')](util[_0xc5a1('0x10')]('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x514744['id']));return sentiment(_0x37b863[_0xc5a1('0xb')],_0x37b863[_0xc5a1('0xc')],_0x17d063[_0xc5a1('0x22')],_0x3b7e90['fileText'],_0x17d063[_0xc5a1('0x28')]);})['then'](function(_0x2d4d56){logger['info'](util[_0xc5a1('0x10')](_0xc5a1('0x29'),_0x514744['id']));return _0x514744[_0xc5a1('0x1d')]({'sentiment':_0x2d4d56[_0xc5a1('0x2a')],'sPositive':_0x2d4d56[_0xc5a1('0x2b')][_0xc5a1('0x2c')],'sNegative':_0x2d4d56[_0xc5a1('0x2b')][_0xc5a1('0x2d')],'sMixed':_0x2d4d56['SentimentScore']['Mixed'],'sNeutral':_0x2d4d56[_0xc5a1('0x2b')][_0xc5a1('0x2e')]});})[_0xc5a1('0xf')](function(){logger[_0xc5a1('0x9')](util['format'](_0xc5a1('0x1e'),_0x514744['id']));_0x3fafdc();});case _0xc5a1('0x2f'):return _0x514744[_0xc5a1('0x1d')]({'transcribeStatus':_0xc5a1('0x2f'),'failureReason':_0x5af680['TranscriptionJob']['FailureReason']})[_0xc5a1('0xf')](function(){logger['info'](util['format'](_0xc5a1('0x1e'),_0x514744['id']));_0x3fafdc();});default:logger[_0xc5a1('0x9')](util[_0xc5a1('0x10')](_0xc5a1('0x30'),_0x514744['id']));break;}}else{return BPromise[_0xc5a1('0x31')]()[_0xc5a1('0xf')](function(){if(!_0x514744['tempSentiment']){throw new db[(_0xc5a1('0x1f'))][(_0xc5a1('0x20'))](_0xc5a1('0x32'));}if(!_0x17d063[_0xc5a1('0x21')]||!_0x17d063['sentimentAccountId']||!_0x17d063['sentimentRegion']||!_0x17d063[_0xc5a1('0x28')]||!_0x17d063[_0xc5a1('0x23')]){throw new db[(_0xc5a1('0x1f'))][(_0xc5a1('0x20'))]('Sentiment\x20Analysis\x20not\x20configured');}if(!_0x514744['fileText']){throw new Error(_0xc5a1('0x25'));}if(_0x17d063['sentimentAccountId']===_0x5f2534['id']){return _0x5f2534;}else{return db[_0xc5a1('0x26')][_0xc5a1('0x33')]({'where':{'id':_settings[_0xc5a1('0x34')]}});}})['then'](function(_0x5cd707){if(!_0x5cd707){throw new db[(_0xc5a1('0x1f'))][(_0xc5a1('0x20'))](_0xc5a1('0x35'));}if(!_0x5cd707[_0xc5a1('0xb')]||!_0x5cd707[_0xc5a1('0xc')]){throw new db[(_0xc5a1('0x1f'))][(_0xc5a1('0x20'))](_0xc5a1('0x27'));}_0x37b863=_0x5cd707;logger[_0xc5a1('0x9')](util[_0xc5a1('0x10')](_0xc5a1('0x36'),_0x514744['id']));return sentiment(_0x37b863[_0xc5a1('0xb')],_0x37b863['data2'],_0x17d063['sentimentRegion'],_0x514744[_0xc5a1('0x14')],_0x17d063[_0xc5a1('0x28')]);})['then'](function(_0xb0fa81){logger['info'](util['format'](_0xc5a1('0x29'),_0x514744['id']));return _0x514744[_0xc5a1('0x1d')]({'sentiment':_0xb0fa81[_0xc5a1('0x2a')],'sPositive':_0xb0fa81[_0xc5a1('0x2b')][_0xc5a1('0x2c')],'sNegative':_0xb0fa81['SentimentScore'][_0xc5a1('0x2d')],'sMixed':_0xb0fa81[_0xc5a1('0x2b')][_0xc5a1('0x37')],'sNeutral':_0xb0fa81[_0xc5a1('0x2b')][_0xc5a1('0x2e')],'transcribeStatus':_0xc5a1('0x15')});})[_0xc5a1('0xf')](function(){logger['info'](util[_0xc5a1('0x10')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x514744['id']));_0x3fafdc();});}})[_0xc5a1('0x38')](function(_0x207524){if(_0x207524){if(!_0x207524[_0xc5a1('0x39')]||_0x207524[_0xc5a1('0x39')]!==_0xc5a1('0x3a')){logger[_0xc5a1('0x3b')](util[_0xc5a1('0x10')](_0xc5a1('0x3c'),_0x514744['id']),util[_0xc5a1('0x3d')](_0x207524,{'showHidden':![],'depth':null}));}}_0x3fafdc();});});}function checkTranscribe(){var _0x12e97f;var _0xc98bde;var _0x57e111;return db['VoiceRecording'][_0xc5a1('0x3e')]({'where':{'transcribeStatus':'IN_PROGRESS'}})['then'](function(_0xfe4a4f){if(!_0xfe4a4f||!_0xfe4a4f[_0xc5a1('0x1b')]){throw new db[(_0xc5a1('0x1f'))][(_0xc5a1('0x20'))](_0xc5a1('0x3f'));}_0x12e97f=_0xfe4a4f;return db[_0xc5a1('0x40')][_0xc5a1('0x33')]({'where':{'id':0x1}});})[_0xc5a1('0xf')](function(_0x3e74af){if(!_0x3e74af){throw new db['Sequelize'][(_0xc5a1('0x20'))]('Settings\x20not\x20available');}_0xc98bde=_0x3e74af;if(!_0xc98bde[_0xc5a1('0x4')]||!_0xc98bde['transcribeAccountId']||!_0xc98bde['transcribeRegion']||!_0xc98bde[_0xc5a1('0x28')]||!_0xc98bde[_0xc5a1('0x23')]){throw new db[(_0xc5a1('0x1f'))][(_0xc5a1('0x20'))]('Transcribe\x20not\x20configured');}return db['CloudProvider'][_0xc5a1('0x33')]({'where':{'id':_0xc98bde['transcribeAccountId']}});})[_0xc5a1('0xf')](function(_0x55f332){if(!_0x55f332){throw new db['Sequelize'][(_0xc5a1('0x20'))](_0xc5a1('0x35'));}if(!_0x55f332['data1']||!_0x55f332[_0xc5a1('0xc')]){throw new db[(_0xc5a1('0x1f'))]['ValidationError'](_0xc5a1('0x27'));}_0x57e111=_0x55f332;var _0x2e93e5=[];_0x12e97f[_0xc5a1('0x41')](function(_0x6ce549){_0x2e93e5[_0xc5a1('0x42')](checkTranscribeJob(_0x6ce549,_0xc98bde,_0x57e111));});return BPromise[_0xc5a1('0x43')](_0x2e93e5);})[_0xc5a1('0x38')](function(_0x10dc18){if(_0x10dc18){if(!_0x10dc18[_0xc5a1('0x39')]||_0x10dc18[_0xc5a1('0x39')]!==_0xc5a1('0x3a')){logger[_0xc5a1('0x3b')](util[_0xc5a1('0x3d')](_0x10dc18,{'showHidden':![],'depth':null}));}}});}exports[_0xc5a1('0x44')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};
\ No newline at end of file
+var _0xf53d=['[RECORDING:%d]\x20Get\x20transcript','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','transcript','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','Sequelize','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentimentAccountId','bucket','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','CloudProvider','Cloud\x20Provider\x20not\x20available','data1','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','language','Sentiment','SentimentScore','Mixed','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','sentiment','sentimentRegion','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Positive','Negative','Neutral','name','SequelizeValidationError','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','VoiceRecording','findAll','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Setting','findOne','Settings\x20not\x20available','Transcribe\x20not\x20configured','push','all','catch','inspect','lodash','aws-sdk','util','bluebird','../../mysqldb','transcribe','TranscribeService','getTranscriptionJob','detectSentiment','substring','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data2','transcribeRegion','then','info','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','TranscriptionJobStatus','fileText','Transcript','TranscriptFileUri'];(function(_0x5b08f3,_0x40e4ea){var _0x3cac3e=function(_0x7f0d3){while(--_0x7f0d3){_0x5b08f3['push'](_0x5b08f3['shift']());}};_0x3cac3e(++_0x40e4ea);}(_0xf53d,0x199));var _0xdf53=function(_0x52930a,_0x419035){_0x52930a=_0x52930a-0x0;var _0x26b0c0=_0xf53d[_0x52930a];return _0x26b0c0;};var _=require(_0xdf53('0x0'));var AWS=require(_0xdf53('0x1'));var rp=require('request-promise');var util=require(_0xdf53('0x2'));var BPromise=require(_0xdf53('0x3'));var db=require(_0xdf53('0x4'))['db'];var logger=require('../../config/logger')(_0xdf53('0x5'));function getTranscriptionJob(_0x5d9500,_0x3ae2e2,_0x5e66f4,_0x531636){return new Promise(function(_0xa9fb11,_0x4cf8d5){var _0x1500ae=new AWS[(_0xdf53('0x6'))]({'accessKeyId':_0x3ae2e2,'secretAccessKey':_0x5d9500,'region':_0x5e66f4});_0x1500ae[_0xdf53('0x7')]({'TranscriptionJobName':_0x531636},function(_0x3a449,_0x328fd3){if(_0x3a449){return _0x4cf8d5(_0x3a449);}else{return _0xa9fb11(_0x328fd3);}});});}function sentiment(_0x1549ef,_0x14af2f,_0x3cb753,_0x4c0fb1,_0x29152a){return new Promise(function(_0x2293f3,_0x5e1df7){var _0x1e54dd=new AWS['Comprehend']({'accessKeyId':_0x14af2f,'secretAccessKey':_0x1549ef,'region':_0x3cb753});_0x1e54dd[_0xdf53('0x8')]({'Text':_0x4c0fb1,'LanguageCode':_0x29152a[_0xdf53('0x9')](0x0,0x2)},function(_0x2412ce,_0x39f5c7){if(_0x2412ce){return _0x5e1df7(_0x2412ce);}else{return _0x2293f3(_0x39f5c7);}});});}function checkTranscribeJob(_0xc8937d,_0x336304,_0x4c1eee){var _0x4082e3;return new BPromise(function(_0x5d5447,_0x493d4e){logger['info'](util[_0xdf53('0xa')](_0xdf53('0xb'),_0xc8937d['id'],_0xc8937d[_0xdf53('0xc')]));return getTranscriptionJob(_0x4c1eee['data1'],_0x4c1eee[_0xdf53('0xd')],_0x336304[_0xdf53('0xe')],_0xc8937d[_0xdf53('0xc')])[_0xdf53('0xf')](function(_0x22deb2){logger[_0xdf53('0x10')](util[_0xdf53('0xa')](_0xdf53('0x11'),_0xc8937d['id'],_0xc8937d[_0xdf53('0xc')],_0x22deb2[_0xdf53('0x12')][_0xdf53('0x13')]));if(!_0xc8937d[_0xdf53('0x14')]){switch(_0x22deb2['TranscriptionJob'][_0xdf53('0x13')]){case'COMPLETED':var _0x22d112={'transcribeStatus':_0x22deb2[_0xdf53('0x12')][_0xdf53('0x13')],'fileUri':_0x22deb2['TranscriptionJob'][_0xdf53('0x15')][_0xdf53('0x16')]};logger[_0xdf53('0x10')](util['format'](_0xdf53('0x17'),_0xc8937d['id']));return rp({'uri':_0x22deb2['TranscriptionJob']['Transcript'][_0xdf53('0x16')],'json':!![]})['then'](function(_0x1e003d){logger[_0xdf53('0x10')](util[_0xdf53('0xa')](_0xdf53('0x18'),_0xc8937d['id']));if(_0x1e003d&&_0x1e003d[_0xdf53('0x19')]&&_0x1e003d[_0xdf53('0x19')][_0xdf53('0x1a')]&&_0x1e003d['results'][_0xdf53('0x1a')][_0xdf53('0x1b')]){_0x22d112[_0xdf53('0x14')]='';for(var _0x260cb3=0x0;_0x260cb3<_0x1e003d['results'][_0xdf53('0x1a')][_0xdf53('0x1b')];_0x260cb3++){_0x22d112[_0xdf53('0x14')]+=_0x1e003d[_0xdf53('0x19')][_0xdf53('0x1a')][_0x260cb3][_0xdf53('0x1c')]+'';}}return _0xc8937d[_0xdf53('0x1d')](_0x22d112);})[_0xdf53('0xf')](function(){logger[_0xdf53('0x10')](util[_0xdf53('0xa')](_0xdf53('0x1e'),_0xc8937d['id']));if(!_0xc8937d[_0xdf53('0x1f')]){throw new db[(_0xdf53('0x20'))][(_0xdf53('0x21'))](_0xdf53('0x22'));}if(!_0x336304['sentiment']||!_0x336304[_0xdf53('0x23')]||!_0x336304['sentimentRegion']||!_0x336304['language']||!_0x336304[_0xdf53('0x24')]){throw new db[(_0xdf53('0x20'))][(_0xdf53('0x21'))](_0xdf53('0x25'));}if(!_0x22d112[_0xdf53('0x14')]){throw new Error(_0xdf53('0x26'));}if(_0x336304[_0xdf53('0x23')]===_0x4c1eee['id']){return _0x4c1eee;}else{return db[_0xdf53('0x27')]['findOne']({'where':{'id':_settings[_0xdf53('0x23')]}});}})[_0xdf53('0xf')](function(_0x2afa60){if(!_0x2afa60){throw new db[(_0xdf53('0x20'))][(_0xdf53('0x21'))](_0xdf53('0x28'));}if(!_0x2afa60[_0xdf53('0x29')]||!_0x2afa60[_0xdf53('0xd')]){throw new db[(_0xdf53('0x20'))][(_0xdf53('0x21'))](_0xdf53('0x2a'));}_0x4082e3=_0x2afa60;logger[_0xdf53('0x10')](util[_0xdf53('0xa')](_0xdf53('0x2b'),_0xc8937d['id']));return sentiment(_0x4082e3['data1'],_0x4082e3[_0xdf53('0xd')],_0x336304['sentimentRegion'],_0x22d112[_0xdf53('0x14')],_0x336304[_0xdf53('0x2c')]);})['then'](function(_0x3a993d){logger['info'](util[_0xdf53('0xa')]('[RECORDING:%d]\x20Sentiment\x20Analysis\x20available',_0xc8937d['id']));return _0xc8937d[_0xdf53('0x1d')]({'sentiment':_0x3a993d[_0xdf53('0x2d')],'sPositive':_0x3a993d[_0xdf53('0x2e')]['Positive'],'sNegative':_0x3a993d[_0xdf53('0x2e')]['Negative'],'sMixed':_0x3a993d['SentimentScore'][_0xdf53('0x2f')],'sNeutral':_0x3a993d['SentimentScore']['Neutral']});})[_0xdf53('0xf')](function(){logger[_0xdf53('0x10')](util[_0xdf53('0xa')](_0xdf53('0x1e'),_0xc8937d['id']));_0x5d5447();});case'FAILED':return _0xc8937d[_0xdf53('0x1d')]({'transcribeStatus':'FAILED','failureReason':_0x22deb2[_0xdf53('0x12')]['FailureReason']})[_0xdf53('0xf')](function(){logger[_0xdf53('0x10')](util['format'](_0xdf53('0x1e'),_0xc8937d['id']));_0x5d5447();});default:logger[_0xdf53('0x10')](util[_0xdf53('0xa')](_0xdf53('0x30'),_0xc8937d['id']));break;}}else{return BPromise[_0xdf53('0x31')]()[_0xdf53('0xf')](function(){if(!_0xc8937d[_0xdf53('0x1f')]){throw new db[(_0xdf53('0x20'))][(_0xdf53('0x21'))](_0xdf53('0x22'));}if(!_0x336304[_0xdf53('0x32')]||!_0x336304[_0xdf53('0x23')]||!_0x336304['sentimentRegion']||!_0x336304[_0xdf53('0x2c')]||!_0x336304[_0xdf53('0x24')]){throw new db[(_0xdf53('0x20'))][(_0xdf53('0x21'))](_0xdf53('0x25'));}if(!_0xc8937d[_0xdf53('0x14')]){throw new Error(_0xdf53('0x26'));}if(_0x336304[_0xdf53('0x23')]===_0x4c1eee['id']){return _0x4c1eee;}else{return db['CloudProvider']['findOne']({'where':{'id':_settings[_0xdf53('0x23')]}});}})[_0xdf53('0xf')](function(_0x4a5b42){if(!_0x4a5b42){throw new db['Sequelize'][(_0xdf53('0x21'))](_0xdf53('0x28'));}if(!_0x4a5b42['data1']||!_0x4a5b42[_0xdf53('0xd')]){throw new db[(_0xdf53('0x20'))][(_0xdf53('0x21'))](_0xdf53('0x2a'));}_0x4082e3=_0x4a5b42;logger['info'](util[_0xdf53('0xa')](_0xdf53('0x2b'),_0xc8937d['id']));return sentiment(_0x4082e3[_0xdf53('0x29')],_0x4082e3[_0xdf53('0xd')],_0x336304[_0xdf53('0x33')],_0xc8937d[_0xdf53('0x14')],_0x336304['language']);})['then'](function(_0x2d339f){logger['info'](util['format'](_0xdf53('0x34'),_0xc8937d['id']));return _0xc8937d[_0xdf53('0x1d')]({'sentiment':_0x2d339f['Sentiment'],'sPositive':_0x2d339f[_0xdf53('0x2e')][_0xdf53('0x35')],'sNegative':_0x2d339f[_0xdf53('0x2e')][_0xdf53('0x36')],'sMixed':_0x2d339f['SentimentScore'][_0xdf53('0x2f')],'sNeutral':_0x2d339f[_0xdf53('0x2e')][_0xdf53('0x37')],'transcribeStatus':'COMPLETED'});})[_0xdf53('0xf')](function(){logger[_0xdf53('0x10')](util['format']('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0xc8937d['id']));_0x5d5447();});}})['catch'](function(_0x368e7b){if(_0x368e7b){if(!_0x368e7b[_0xdf53('0x38')]||_0x368e7b[_0xdf53('0x38')]!==_0xdf53('0x39')){logger[_0xdf53('0x3a')](util[_0xdf53('0xa')](_0xdf53('0x3b'),_0xc8937d['id']),util['inspect'](_0x368e7b,{'showHidden':![],'depth':null}));}}_0x5d5447();});});}function checkTranscribe(){var _0x4fca5f;var _0x94f1d9;var _0x37f56c;return db[_0xdf53('0x3c')][_0xdf53('0x3d')]({'where':{'transcribeStatus':_0xdf53('0x3e')}})[_0xdf53('0xf')](function(_0x1c98d7){if(!_0x1c98d7||!_0x1c98d7[_0xdf53('0x1b')]){throw new db[(_0xdf53('0x20'))][(_0xdf53('0x21'))](_0xdf53('0x3f'));}_0x4fca5f=_0x1c98d7;return db[_0xdf53('0x40')][_0xdf53('0x41')]({'where':{'id':0x1}});})[_0xdf53('0xf')](function(_0x3808fd){if(!_0x3808fd){throw new db[(_0xdf53('0x20'))][(_0xdf53('0x21'))](_0xdf53('0x42'));}_0x94f1d9=_0x3808fd;if(!_0x94f1d9[_0xdf53('0x5')]||!_0x94f1d9['transcribeAccountId']||!_0x94f1d9[_0xdf53('0xe')]||!_0x94f1d9[_0xdf53('0x2c')]||!_0x94f1d9[_0xdf53('0x24')]){throw new db['Sequelize'][(_0xdf53('0x21'))](_0xdf53('0x43'));}return db['CloudProvider'][_0xdf53('0x41')]({'where':{'id':_0x94f1d9['transcribeAccountId']}});})[_0xdf53('0xf')](function(_0x33853b){if(!_0x33853b){throw new db['Sequelize'][(_0xdf53('0x21'))](_0xdf53('0x28'));}if(!_0x33853b[_0xdf53('0x29')]||!_0x33853b[_0xdf53('0xd')]){throw new db[(_0xdf53('0x20'))][(_0xdf53('0x21'))](_0xdf53('0x2a'));}_0x37f56c=_0x33853b;var _0x2fdef4=[];_0x4fca5f['forEach'](function(_0x5cbfc3){_0x2fdef4[_0xdf53('0x44')](checkTranscribeJob(_0x5cbfc3,_0x94f1d9,_0x37f56c));});return BPromise[_0xdf53('0x45')](_0x2fdef4);})[_0xdf53('0x46')](function(_0x40cff4){if(_0x40cff4){if(!_0x40cff4[_0xdf53('0x38')]||_0x40cff4['name']!=='SequelizeValidationError'){logger['error'](util[_0xdf53('0x47')](_0x40cff4,{'showHidden':![],'depth':null}));}}});}exports['start']=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};
\ No newline at end of file
index 44bd891..2b317e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedf0=['hours','then','length','[WHATSAPP]\x20Interactions\x20to\x20close:','join','update','system','timeout','YYYY-MM-DD\x20HH:mm:ss','info','[WHATSAPP]\x20Sending\x20updates\x20for\x20interactions:','emit','catch','error','[WHATSAPP]\x20Error\x20closing\x20interactions','inspect','start','lodash','moment','util','../../mysqldb','../logger','schedule','defaults','redis','localhost','socket.io-emitter','WhatsappInteraction','subtract'];(function(_0x2794c6,_0x53cd52){var _0x56774f=function(_0x1f1719){while(--_0x1f1719){_0x2794c6['push'](_0x2794c6['shift']());}};_0x56774f(++_0x53cd52);}(_0xedf0,0xbf));var _0x0edf=function(_0x512550,_0x6a8b6f){_0x512550=_0x512550-0x0;var _0x19f661=_0xedf0[_0x512550];return _0x19f661;};'use strict';var _=require(_0x0edf('0x0'));var moment=require(_0x0edf('0x1'));var Redis=require('ioredis');var util=require(_0x0edf('0x2'));var config=require('../../config/environment');var db=require(_0x0edf('0x3'))['db'];var logger=require(_0x0edf('0x4'))(_0x0edf('0x5'));config['redis']=_[_0x0edf('0x6')](config[_0x0edf('0x7')],{'host':_0x0edf('0x8'),'port':0x18eb});var io=require(_0x0edf('0x9'))(new Redis(config[_0x0edf('0x7')]));function closeInteractions(){var _0x3917bb=[];return db[_0x0edf('0xa')]['findAll']({'raw':!![],'attributes':['id','lastMsgAt'],'where':{'closed':![],'lastMsgDirection':'in','lastMsgAt':{'$lt':moment()[_0x0edf('0xb')](0x18,_0x0edf('0xc'))}}})[_0x0edf('0xd')](function(_0x54b8ce){if(_0x54b8ce&&_0x54b8ce[_0x0edf('0xe')]){_0x3917bb=_['map'](_0x54b8ce||[],'id');logger['info'](_0x0edf('0xf'),_0x3917bb[_0x0edf('0x10')]());return db['WhatsappInteraction'][_0x0edf('0x11')]({'closeReason':_0x0edf('0x12'),'disposition':_0x0edf('0x13'),'closed':!![],'closedAt':moment()['format'](_0x0edf('0x14'))},{'where':{'id':_0x3917bb}});}})[_0x0edf('0xd')](function(){if(_0x3917bb&&_0x3917bb[_0x0edf('0xe')]){logger[_0x0edf('0x15')](_0x0edf('0x16'),_0x3917bb[_0x0edf('0x10')]());for(var _0x18d5a9=0x0;_0x18d5a9<_0x3917bb['length'];_0x18d5a9++){io[_0x0edf('0x17')]('whatsappInteraction:update',{'id':_0x3917bb[_0x18d5a9],'closed':!![]});}}})[_0x0edf('0x18')](function(_0x110059){logger[_0x0edf('0x19')](_0x0edf('0x1a'),_0x110059?util[_0x0edf('0x1b')](_0x110059,{'showHidden':![],'depth':null}):'');});}exports[_0x0edf('0x1c')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
+var _0x20de=['info','[WHATSAPP]\x20Sending\x20updates\x20for\x20interactions:','emit','whatsappInteraction:update','catch','error','inspect','start','lodash','ioredis','util','../../config/environment','../../mysqldb','../logger','schedule','redis','defaults','localhost','socket.io-emitter','subtract','hours','then','length','map','[WHATSAPP]\x20Interactions\x20to\x20close:','join','update','system','timeout','format'];(function(_0x160c73,_0x2ee678){var _0xd9302=function(_0x169454){while(--_0x169454){_0x160c73['push'](_0x160c73['shift']());}};_0xd9302(++_0x2ee678);}(_0x20de,0x134));var _0xe20d=function(_0x2b9b7f,_0x4d47df){_0x2b9b7f=_0x2b9b7f-0x0;var _0x4ed19a=_0x20de[_0x2b9b7f];return _0x4ed19a;};'use strict';var _=require(_0xe20d('0x0'));var moment=require('moment');var Redis=require(_0xe20d('0x1'));var util=require(_0xe20d('0x2'));var config=require(_0xe20d('0x3'));var db=require(_0xe20d('0x4'))['db'];var logger=require(_0xe20d('0x5'))(_0xe20d('0x6'));config[_0xe20d('0x7')]=_[_0xe20d('0x8')](config[_0xe20d('0x7')],{'host':_0xe20d('0x9'),'port':0x18eb});var io=require(_0xe20d('0xa'))(new Redis(config['redis']));function closeInteractions(){var _0x374faa=[];return db['WhatsappInteraction']['findAll']({'raw':!![],'attributes':['id','lastMsgAt'],'where':{'closed':![],'lastMsgDirection':'in','lastMsgAt':{'$lt':moment()[_0xe20d('0xb')](0x18,_0xe20d('0xc'))}}})[_0xe20d('0xd')](function(_0x50f487){if(_0x50f487&&_0x50f487[_0xe20d('0xe')]){_0x374faa=_[_0xe20d('0xf')](_0x50f487||[],'id');logger['info'](_0xe20d('0x10'),_0x374faa[_0xe20d('0x11')]());return db['WhatsappInteraction'][_0xe20d('0x12')]({'closeReason':_0xe20d('0x13'),'disposition':_0xe20d('0x14'),'closed':!![],'closedAt':moment()[_0xe20d('0x15')]('YYYY-MM-DD\x20HH:mm:ss')},{'where':{'id':_0x374faa}});}})['then'](function(){if(_0x374faa&&_0x374faa[_0xe20d('0xe')]){logger[_0xe20d('0x16')](_0xe20d('0x17'),_0x374faa[_0xe20d('0x11')]());for(var _0x1b2c37=0x0;_0x1b2c37<_0x374faa[_0xe20d('0xe')];_0x1b2c37++){io[_0xe20d('0x18')](_0xe20d('0x19'),{'id':_0x374faa[_0x1b2c37],'closed':!![]});}}})[_0xe20d('0x1a')](function(_0x56eeea){logger[_0xe20d('0x1b')]('[WHATSAPP]\x20Error\x20closing\x20interactions',_0x56eeea?util[_0xe20d('0x1c')](_0x56eeea,{'showHidden':![],'depth':null}):'');});}exports[_0xe20d('0x1d')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index e3553df..41174ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x31d8=['CmHopper','log','contacts2','hopper2','util','../mysqldb','push','Innocenzo','Biondo','innocenzo.biondo','@xcally.com','now','CmContact','destroy','then','bulkCreate','finished\x20populating','contacts1'];(function(_0x3540f3,_0x2fb848){var _0x37fc59=function(_0x1b0751){while(--_0x1b0751){_0x3540f3['push'](_0x3540f3['shift']());}};_0x37fc59(++_0x2fb848);}(_0x31d8,0x70));var _0x831d=function(_0x56ab81,_0x48a2f2){_0x56ab81=_0x56ab81-0x0;var _0x58513b=_0x31d8[_0x56ab81];return _0x58513b;};'use strict';var util=require(_0x831d('0x0'));var db=require(_0x831d('0x1'))['db'];var contacts=[];var hopper=[];var contacts2=[];var hopper2=[];for(var i=0x1;i<=0x4b0;i+=0x1){contacts[_0x831d('0x2')]({'id':i,'firstName':_0x831d('0x3')+i,'lastName':_0x831d('0x4')+i,'phone':0xf879fb460+i,'email':_0x831d('0x5')+i+_0x831d('0x6')});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper[_0x831d('0x2')]({'id':i,'active':![],'scheduledat':Date['now'](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0x831d('0x7')](),'updatedAt':Date['now']()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2[_0x831d('0x2')]({'id':i,'firstName':'Innocenzo'+i,'lastName':_0x831d('0x4')+i,'phone':0xf879fb460+i,'email':_0x831d('0x5')+i+_0x831d('0x6')});}for(var i=0x4b1;i<=0x960;i+=0x1){hopper2[_0x831d('0x2')]({'id':i,'active':![],'scheduledat':Date[_0x831d('0x7')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0x831d('0x7')](),'updatedAt':Date[_0x831d('0x7')]()});}db[_0x831d('0x8')][_0x831d('0x9')]({'where':{}})[_0x831d('0xa')](function(){return db[_0x831d('0x8')][_0x831d('0xb')](contacts);})[_0x831d('0xa')](function(){console['log'](_0x831d('0xc'),_0x831d('0xd'));return db[_0x831d('0xe')][_0x831d('0x9')]({'where':{}});})[_0x831d('0xa')](function(){return db[_0x831d('0xe')][_0x831d('0xb')](hopper);})[_0x831d('0xa')](function(){console[_0x831d('0xf')](_0x831d('0xc'),'hopper1');return db[_0x831d('0x8')]['bulkCreate'](contacts2);})['then'](function(){console[_0x831d('0xf')]('finished\x20populating',_0x831d('0x10'));return db[_0x831d('0xe')][_0x831d('0xb')](hopper2);})[_0x831d('0xa')](function(){console[_0x831d('0xf')](_0x831d('0xc'),_0x831d('0x11'));})['catch'](function(_0x20df44){console['log'](_0x20df44);});
\ No newline at end of file
+var _0x7904=['Biondo','innocenzo.biondo','@xcally.com','now','destroy','CmContact','bulkCreate','then','log','finished\x20populating','CmHopper','hopper1','hopper2','util','../mysqldb','push'];(function(_0x5bcb51,_0x3b18a4){var _0x2ecb43=function(_0x520c05){while(--_0x520c05){_0x5bcb51['push'](_0x5bcb51['shift']());}};_0x2ecb43(++_0x3b18a4);}(_0x7904,0x15d));var _0x4790=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7904[_0x3dd15e];return _0x231fd0;};'use strict';var util=require(_0x4790('0x0'));var db=require(_0x4790('0x1'))['db'];var contacts=[];var hopper=[];var contacts2=[];var hopper2=[];for(var i=0x1;i<=0x4b0;i+=0x1){contacts[_0x4790('0x2')]({'id':i,'firstName':'Innocenzo'+i,'lastName':_0x4790('0x3')+i,'phone':0xf879fb460+i,'email':_0x4790('0x4')+i+_0x4790('0x5')});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper[_0x4790('0x2')]({'id':i,'active':![],'scheduledat':Date[_0x4790('0x6')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date['now'](),'updatedAt':Date[_0x4790('0x6')]()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2['push']({'id':i,'firstName':'Innocenzo'+i,'lastName':_0x4790('0x3')+i,'phone':0xf879fb460+i,'email':_0x4790('0x4')+i+_0x4790('0x5')});}for(var i=0x4b1;i<=0x960;i+=0x1){hopper2[_0x4790('0x2')]({'id':i,'active':![],'scheduledat':Date[_0x4790('0x6')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date['now'](),'updatedAt':Date[_0x4790('0x6')]()});}db['CmContact'][_0x4790('0x7')]({'where':{}})['then'](function(){return db[_0x4790('0x8')][_0x4790('0x9')](contacts);})[_0x4790('0xa')](function(){console[_0x4790('0xb')](_0x4790('0xc'),'contacts1');return db[_0x4790('0xd')]['destroy']({'where':{}});})[_0x4790('0xa')](function(){return db[_0x4790('0xd')]['bulkCreate'](hopper);})[_0x4790('0xa')](function(){console['log']('finished\x20populating',_0x4790('0xe'));return db['CmContact'][_0x4790('0x9')](contacts2);})[_0x4790('0xa')](function(){console[_0x4790('0xb')](_0x4790('0xc'),'contacts2');return db[_0x4790('0xd')][_0x4790('0x9')](hopper2);})['then'](function(){console[_0x4790('0xb')]('finished\x20populating',_0x4790('0xf'));})['catch'](function(_0xea9dde){console['log'](_0xea9dde);});
\ No newline at end of file
index 2f89696..dede46c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e59=['udp','wss','all','ulaw','yes','/etc/pki/tls/certs/motion.crt','actpass','bulkCreate','log','add\x20user','catch','util','../mysqldb','%s%s','format','agent','password','friend'];(function(_0x3b83e3,_0x25bdd3){var _0x1ec22c=function(_0x1ad8c5){while(--_0x1ad8c5){_0x3b83e3['push'](_0x3b83e3['shift']());}};_0x1ec22c(++_0x25bdd3);}(_0x6e59,0x77));var _0x96e5=function(_0x4ba6f2,_0x142966){_0x4ba6f2=_0x4ba6f2-0x0;var _0x36f265=_0x6e59[_0x4ba6f2];return _0x36f265;};'use strict';var util=require(_0x96e5('0x0'));var db=require(_0x96e5('0x1'))['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users['push']({'name':util['format'](_0x96e5('0x2'),'agent',i),'fullname':util['format'](_0x96e5('0x2'),'agent',i),'email':util[_0x96e5('0x3')]('%s%s@xcally.com',_0x96e5('0x4'),i),'role':_0x96e5('0x4'),'password':_0x96e5('0x5'),'internal':0xfa0+i,'type':_0x96e5('0x6'),'transport':[_0x96e5('0x7'),'ws',_0x96e5('0x8')],'disallow':[_0x96e5('0x9')],'allow':[_0x96e5('0xa')],'defaultuser':util[_0x96e5('0x3')](_0x96e5('0x2'),'agent',i),'encryption':_0x96e5('0xb'),'avpf':'yes','force_avp':'yes','icesupport':_0x96e5('0xb'),'dtlsenable':_0x96e5('0xb'),'dtlsverify':'no','dtlscertfile':_0x96e5('0xc'),'dtlsprivatekey':'/etc/pki/tls/private/motion.key','dtlssetup':_0x96e5('0xd'),'callerid':util[_0x96e5('0x3')]('\x22%s\x22\x20<%s>',util['format']('%s%s','agent',i),0xfa0+i)});}db['User'][_0x96e5('0xe')](users)['then'](function(){console[_0x96e5('0xf')](_0x96e5('0x10'));})[_0x96e5('0x11')](function(_0x336ee6){console['log'](_0x336ee6);});
\ No newline at end of file
+var _0x67e2=['util','../mysqldb','push','format','%s%s','%s%s@xcally.com','agent','udp','yes','/etc/pki/tls/certs/motion.crt','/etc/pki/tls/private/motion.key','actpass','\x22%s\x22\x20<%s>','User','then','add\x20user','log'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x67e2,0x187));var _0x267e=function(_0x1413b5,_0xbfdb9){_0x1413b5=_0x1413b5-0x0;var _0x36e5eb=_0x67e2[_0x1413b5];return _0x36e5eb;};'use strict';var util=require(_0x267e('0x0'));var db=require(_0x267e('0x1'))['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users[_0x267e('0x2')]({'name':util[_0x267e('0x3')](_0x267e('0x4'),'agent',i),'fullname':util[_0x267e('0x3')](_0x267e('0x4'),'agent',i),'email':util[_0x267e('0x3')](_0x267e('0x5'),_0x267e('0x6'),i),'role':_0x267e('0x6'),'password':'password','internal':0xfa0+i,'type':'friend','transport':[_0x267e('0x7'),'ws','wss'],'disallow':['all'],'allow':['ulaw'],'defaultuser':util[_0x267e('0x3')](_0x267e('0x4'),_0x267e('0x6'),i),'encryption':'yes','avpf':_0x267e('0x8'),'force_avp':'yes','icesupport':_0x267e('0x8'),'dtlsenable':'yes','dtlsverify':'no','dtlscertfile':_0x267e('0x9'),'dtlsprivatekey':_0x267e('0xa'),'dtlssetup':_0x267e('0xb'),'callerid':util[_0x267e('0x3')](_0x267e('0xc'),util[_0x267e('0x3')](_0x267e('0x4'),_0x267e('0x6'),i),0xfa0+i)});}db[_0x267e('0xd')]['bulkCreate'](users)[_0x267e('0xe')](function(){console['log'](_0x267e('0xf'));})['catch'](function(_0x2f3aaa){console[_0x267e('0x10')](_0x2f3aaa);});
\ No newline at end of file
index 2d64894..853155d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf628=['trunk:%s','campaign:%s:%s','leave','removeChatInteractions','emit','user_has_chat_interactions:remove','MailInteractions','removeMailInteractions','user_has_mail_interactions:remove','removeFaxInteractions','user_has_fax_interactions:remove','removeSmsInteractions','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','removeWhatsappInteractions','catch','log','join','default','setMaxListeners','address','request','connection','remoteAddress','remotePort','connectedAt','nsp','disconnect','DISCONNECTED','CONNECTED','lodash','util','bluebird','../mysqldb','User','name','role','agent','ivr','autoAssociation','VoiceQueues','FaxQueues','SmsQueues','findAll','Telephones','Trunks','IvrCampaigns','then','map','resourceId','telephone','type','format','user:%s','Agents','handshake','query','userProfileId','ChatInteraction','ChatInteractions','FaxInteraction','FaxInteractions','SmsInteraction','SmsInteractions','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteraction','WhatsappInteractions','admin','voice:inbound','voice:outbound','hasOwnProperty','include','push','ChatQueue','FaxQueue','SmsQueue','MailQueue','WhatsappQueue','Campaign','ChatQueues','MailQueues','OpenchannelQueues','OpenchannelQueue','getVoiceQueues','getChatQueues','getSmsQueues','getOpenchannelQueues','getWhatsappQueues','all','length','fax','sms','mail','openchannel','whatsapp','telephone:%s'];(function(_0xa1e3e3,_0x29fe0e){var _0xc980e9=function(_0x1f5adc){while(--_0x1f5adc){_0xa1e3e3['push'](_0xa1e3e3['shift']());}};_0xc980e9(++_0x29fe0e);}(_0xf628,0x7f));var _0x8f62=function(_0x55ea56,_0x4a7b79){_0x55ea56=_0x55ea56-0x0;var _0x88315c=_0xf628[_0x55ea56];return _0x88315c;};'use strict';var _=require(_0x8f62('0x0'));var util=require(_0x8f62('0x1'));var BPromise=require(_0x8f62('0x2'));var db=require(_0x8f62('0x3'))['db'];var config=require('./environment');var queryQueues={'attributes':['id','name'],'include':[{'as':'Agents','model':db[_0x8f62('0x4')],'attributes':['id',_0x8f62('0x5'),_0x8f62('0x6')],'raw':!![],'where':{'role':_0x8f62('0x7')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x8f62('0x5')],'where':{'role':'telephone'}};var queryTrunks={'raw':!![],'attributes':['id',_0x8f62('0x5')]};var queryAgents={'raw':!![],'attributes':['id','name'],'where':{'role':_0x8f62('0x7')}};var queryCampaigns={'raw':!![],'attributes':['id',_0x8f62('0x5'),'type'],'where':{'type':_0x8f62('0x8')}};function getAssociatedResources(_0x230f8e,_0xf1c4b0,_0x4ef856){return db['UserProfileSection']['findOne']({'where':{'name':_0x230f8e,'userProfileId':_0xf1c4b0},'raw':!![]})['then'](function(_0x4b1e43){if(_0x4b1e43){if(_0x4b1e43[_0x8f62('0x9')]){switch(_0x230f8e){case _0x8f62('0xa'):case'ChatQueues':case _0x8f62('0xb'):case _0x8f62('0xc'):case'MailQueues':case'OpenchannelQueues':case'WhatsappQueues':return db[_0x4ef856][_0x8f62('0xd')](queryQueues);case _0x8f62('0xe'):return db[_0x4ef856][_0x8f62('0xd')](queryTelephones);case _0x8f62('0xf'):return db[_0x4ef856][_0x8f62('0xd')](queryTrunks);case _0x8f62('0x10'):return db[_0x4ef856][_0x8f62('0xd')](queryCampaigns);}}else{return db['UserProfileResource'][_0x8f62('0xd')]({'attributes':['resourceId'],'where':{'sectionId':_0x4b1e43['id']},'raw':!![]})[_0x8f62('0x11')](function(_0x58a7d7){if(_0x58a7d7){var _0xbe2da7={'where':{'id':_[_0x8f62('0x12')](_0x58a7d7,_0x8f62('0x13'))},'raw':!![]};switch(_0x4ef856){case _0x8f62('0x4'):_0xbe2da7['where'][_0x8f62('0x6')]=_0x8f62('0x14');break;case'Campaign':_0xbe2da7['where'][_0x8f62('0x15')]='ivr';break;}return db[_0x4ef856][_0x8f62('0xd')](_0xbe2da7);}else{return[];}});}}else{return[];}})['then'](function(_0x109d91){return _0x109d91;});}function joinOrLeaveQueues(_0xde5808,_0xb8d46a,_0x40b1e6,_0x4a854f){_0xde5808[_0xb8d46a](util[_0x8f62('0x16')]('%s:queue:%s',_0x40b1e6,_0x4a854f['name']));if(_0x4a854f['Agents']){for(var _0x398c08=0x0;_0x398c08<_0x4a854f['Agents']['length'];_0x398c08+=0x1){_0xde5808[_0xb8d46a](util['format'](_0x8f62('0x17'),_0x4a854f[_0x8f62('0x18')][_0x398c08][_0x8f62('0x5')]));}}}function joinOrLeave(_0x4aee91,_0x50f9cd,_0x329dae){var _0x4a0935;if(_0x4aee91[_0x8f62('0x19')][_0x8f62('0x1a')]['id']){db['User']['find']({'attributes':['id','name','role',_0x8f62('0x1b')],'where':{'id':_0x4aee91[_0x8f62('0x19')]['query']['id']},'include':[{'model':db[_0x8f62('0x1c')],'as':_0x8f62('0x1d'),'attributes':['id'],'raw':!![]},{'model':db['MailInteraction'],'as':'MailInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x8f62('0x1e')],'as':_0x8f62('0x1f'),'attributes':['id'],'raw':!![]},{'model':db[_0x8f62('0x20')],'as':_0x8f62('0x21'),'attributes':['id'],'raw':!![]},{'model':db[_0x8f62('0x22')],'as':_0x8f62('0x23'),'attributes':['id'],'raw':!![]},{'model':db[_0x8f62('0x24')],'as':_0x8f62('0x25'),'attributes':['id'],'raw':!![]}]})['then'](function(_0x39d684){if(_0x39d684){_0x4a0935=_0x39d684;_0x4aee91[_0x50f9cd](util[_0x8f62('0x16')]('user:%s',_0x39d684[_0x8f62('0x5')]));var _0x5f2e12=[];switch(_0x39d684[_0x8f62('0x6')]){case _0x8f62('0x26'):_0x4aee91[_0x50f9cd](_0x8f62('0x27'));_0x4aee91[_0x50f9cd](_0x8f62('0x28'));if(queryQueues[_0x8f62('0x29')]('include')){delete queryQueues[_0x8f62('0x2a')];}_0x5f2e12[_0x8f62('0x2b')](db['VoiceQueue'][_0x8f62('0xd')](queryQueues));_0x5f2e12[_0x8f62('0x2b')](db[_0x8f62('0x2c')][_0x8f62('0xd')](queryQueues));_0x5f2e12[_0x8f62('0x2b')](db[_0x8f62('0x2d')][_0x8f62('0xd')](queryQueues));_0x5f2e12[_0x8f62('0x2b')](db[_0x8f62('0x2e')][_0x8f62('0xd')](queryQueues));_0x5f2e12[_0x8f62('0x2b')](db[_0x8f62('0x2f')][_0x8f62('0xd')](queryQueues));_0x5f2e12['push'](db['OpenchannelQueue'][_0x8f62('0xd')](queryQueues));_0x5f2e12[_0x8f62('0x2b')](db[_0x8f62('0x30')][_0x8f62('0xd')](queryQueues));_0x5f2e12['push'](db[_0x8f62('0x4')][_0x8f62('0xd')](queryTelephones));_0x5f2e12[_0x8f62('0x2b')](db['Trunk'][_0x8f62('0xd')](queryTrunks));_0x5f2e12[_0x8f62('0x2b')](db[_0x8f62('0x31')][_0x8f62('0xd')](queryCampaigns));_0x5f2e12[_0x8f62('0x2b')](db[_0x8f62('0x4')]['findAll'](queryAgents));break;case'user':_0x4aee91[_0x50f9cd](_0x8f62('0x27'));_0x4aee91[_0x50f9cd]('voice:outbound');_0x5f2e12[_0x8f62('0x2b')](getAssociatedResources(_0x8f62('0xa'),_0x39d684['userProfileId'],'VoiceQueue'));_0x5f2e12[_0x8f62('0x2b')](getAssociatedResources(_0x8f62('0x32'),_0x39d684['userProfileId'],_0x8f62('0x2c')));_0x5f2e12[_0x8f62('0x2b')](getAssociatedResources(_0x8f62('0xb'),_0x39d684[_0x8f62('0x1b')],_0x8f62('0x2d')));_0x5f2e12[_0x8f62('0x2b')](getAssociatedResources('SmsQueues',_0x39d684[_0x8f62('0x1b')],_0x8f62('0x2e')));_0x5f2e12[_0x8f62('0x2b')](getAssociatedResources(_0x8f62('0x33'),_0x39d684[_0x8f62('0x1b')],'MailQueue'));_0x5f2e12['push'](getAssociatedResources(_0x8f62('0x34'),_0x39d684[_0x8f62('0x1b')],_0x8f62('0x35')));_0x5f2e12['push'](getAssociatedResources('WhatsappQueues',_0x39d684[_0x8f62('0x1b')],_0x8f62('0x30')));_0x5f2e12[_0x8f62('0x2b')](getAssociatedResources(_0x8f62('0xe'),_0x39d684[_0x8f62('0x1b')],'User'));_0x5f2e12[_0x8f62('0x2b')](getAssociatedResources(_0x8f62('0xf'),_0x39d684[_0x8f62('0x1b')],'Trunk'));_0x5f2e12['push'](getAssociatedResources(_0x8f62('0x10'),_0x39d684['userProfileId'],_0x8f62('0x31')));_0x5f2e12['push'](db['User'][_0x8f62('0xd')](queryAgents));break;case'agent':_0x4aee91[_0x50f9cd](_0x8f62('0x27'));_0x4aee91[_0x50f9cd](_0x8f62('0x28'));_0x5f2e12[_0x8f62('0x2b')](_0x39d684[_0x8f62('0x36')]({'attributes':['id',_0x8f62('0x5')]}));_0x5f2e12[_0x8f62('0x2b')](_0x39d684[_0x8f62('0x37')]({'attributes':['id','name']}));_0x5f2e12[_0x8f62('0x2b')](_0x39d684['getFaxQueues']({'attributes':['id','name']}));_0x5f2e12[_0x8f62('0x2b')](_0x39d684[_0x8f62('0x38')]({'attributes':['id','name']}));_0x5f2e12[_0x8f62('0x2b')](_0x39d684['getMailQueues']({'attributes':['id',_0x8f62('0x5')]}));_0x5f2e12[_0x8f62('0x2b')](_0x39d684[_0x8f62('0x39')]({'attributes':['id',_0x8f62('0x5')]}));_0x5f2e12[_0x8f62('0x2b')](_0x39d684[_0x8f62('0x3a')]({'attributes':['id',_0x8f62('0x5')]}));break;}return BPromise[_0x8f62('0x3b')](_0x5f2e12);}})['then'](function(_0x5c9eba){if(_0x5c9eba&&_0x5c9eba[_0x8f62('0x3c')]){for(var _0x48ec6f=0x0;_0x48ec6f<_0x5c9eba[_0x8f62('0x3c')];_0x48ec6f+=0x1){for(var _0x31bac3=0x0;_0x31bac3<_0x5c9eba[_0x48ec6f][_0x8f62('0x3c')];_0x31bac3+=0x1){switch(_0x48ec6f){case 0x0:joinOrLeaveQueues(_0x4aee91,_0x50f9cd,'voice',_0x5c9eba[_0x48ec6f][_0x31bac3]);break;case 0x1:joinOrLeaveQueues(_0x4aee91,_0x50f9cd,'chat',_0x5c9eba[_0x48ec6f][_0x31bac3]);break;case 0x2:joinOrLeaveQueues(_0x4aee91,_0x50f9cd,_0x8f62('0x3d'),_0x5c9eba[_0x48ec6f][_0x31bac3]);break;case 0x3:joinOrLeaveQueues(_0x4aee91,_0x50f9cd,_0x8f62('0x3e'),_0x5c9eba[_0x48ec6f][_0x31bac3]);break;case 0x4:joinOrLeaveQueues(_0x4aee91,_0x50f9cd,_0x8f62('0x3f'),_0x5c9eba[_0x48ec6f][_0x31bac3]);break;case 0x5:joinOrLeaveQueues(_0x4aee91,_0x50f9cd,_0x8f62('0x40'),_0x5c9eba[_0x48ec6f][_0x31bac3]);break;case 0x6:joinOrLeaveQueues(_0x4aee91,_0x50f9cd,_0x8f62('0x41'),_0x5c9eba[_0x48ec6f][_0x31bac3]);break;case 0x7:if(_0x4a0935[_0x8f62('0x6')]!==_0x8f62('0x7'))_0x4aee91[_0x50f9cd](util[_0x8f62('0x16')](_0x8f62('0x42'),_0x5c9eba[_0x48ec6f][_0x31bac3][_0x8f62('0x5')]));break;case 0x8:if(_0x4a0935[_0x8f62('0x6')]!=='agent')_0x4aee91[_0x50f9cd](util[_0x8f62('0x16')](_0x8f62('0x43'),_0x5c9eba[_0x48ec6f][_0x31bac3][_0x8f62('0x5')]));break;case 0x9:if(_0x4a0935[_0x8f62('0x6')]!=='agent')_0x4aee91[_0x50f9cd](util[_0x8f62('0x16')](_0x8f62('0x44'),_0x5c9eba[_0x48ec6f][_0x31bac3][_0x8f62('0x15')],_0x5c9eba[_0x48ec6f][_0x31bac3][_0x8f62('0x5')]));break;case 0xa:_0x4aee91[_0x50f9cd](util[_0x8f62('0x16')](_0x8f62('0x17'),_0x5c9eba[_0x48ec6f][_0x31bac3][_0x8f62('0x5')]));break;}}}}})[_0x8f62('0x11')](function(){if(_0x50f9cd===_0x8f62('0x45')){var _0x265eeb=_[_0x8f62('0x12')](_0x4a0935[_0x8f62('0x1d')],'id');return _0x4a0935[_0x8f62('0x46')](_0x265eeb)['then'](function(){for(var _0x35fe57=0x0;_0x35fe57<_0x265eeb[_0x8f62('0x3c')];_0x35fe57+=0x1){_0x329dae[_0x8f62('0x47')](_0x8f62('0x48'),{'ChatInteractionId':Number(_0x265eeb[_0x35fe57]),'UserId':Number(_0x4a0935['id'])});}});}})[_0x8f62('0x11')](function(){if(_0x50f9cd===_0x8f62('0x45')){var _0x3e6190=_[_0x8f62('0x12')](_0x4a0935[_0x8f62('0x49')],'id');return _0x4a0935[_0x8f62('0x4a')](_0x3e6190)[_0x8f62('0x11')](function(){for(var _0x481ccb=0x0;_0x481ccb<_0x3e6190[_0x8f62('0x3c')];_0x481ccb+=0x1){_0x329dae['emit'](_0x8f62('0x4b'),{'MailInteractionId':Number(_0x3e6190[_0x481ccb]),'UserId':Number(_0x4a0935['id'])});}});}})[_0x8f62('0x11')](function(){if(_0x50f9cd==='leave'){var _0x25396e=_[_0x8f62('0x12')](_0x4a0935['FaxInteractions'],'id');return _0x4a0935[_0x8f62('0x4c')](_0x25396e)[_0x8f62('0x11')](function(){for(var _0x125495=0x0;_0x125495<_0x25396e[_0x8f62('0x3c')];_0x125495+=0x1){_0x329dae[_0x8f62('0x47')](_0x8f62('0x4d'),{'FaxInteractionId':Number(_0x25396e[_0x125495]),'UserId':Number(_0x4a0935['id'])});}});}})[_0x8f62('0x11')](function(){if(_0x50f9cd==='leave'){var _0x56ca96=_[_0x8f62('0x12')](_0x4a0935['SmsInteractions'],'id');return _0x4a0935[_0x8f62('0x4e')](_0x56ca96)[_0x8f62('0x11')](function(){for(var _0x22605c=0x0;_0x22605c<_0x56ca96[_0x8f62('0x3c')];_0x22605c+=0x1){_0x329dae['emit']('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0x56ca96[_0x22605c]),'UserId':Number(_0x4a0935['id'])});}});}})[_0x8f62('0x11')](function(){if(_0x50f9cd===_0x8f62('0x45')){var _0x4af63e=_['map'](_0x4a0935['OpenchannelInteractions'],'id');return _0x4a0935[_0x8f62('0x4f')](_0x4af63e)[_0x8f62('0x11')](function(){for(var _0x1e9bf6=0x0;_0x1e9bf6<_0x4af63e[_0x8f62('0x3c')];_0x1e9bf6+=0x1){_0x329dae['emit'](_0x8f62('0x50'),{'OpenchannelInteractionId':Number(_0x4af63e[_0x1e9bf6]),'UserId':Number(_0x4a0935['id'])});}});}})[_0x8f62('0x11')](function(){if(_0x50f9cd===_0x8f62('0x45')){var _0x2d634f=_[_0x8f62('0x12')](_0x4a0935['WhatsappInteractions'],'id');return _0x4a0935[_0x8f62('0x51')](_0x2d634f)[_0x8f62('0x11')](function(){for(var _0x4684af=0x0;_0x4684af<_0x2d634f[_0x8f62('0x3c')];_0x4684af+=0x1){_0x329dae['emit']('user_has_whatsapp_interactions:remove',{'WhatsappInteractionId':Number(_0x2d634f[_0x4684af]),'UserId':Number(_0x4a0935['id'])});}});}})[_0x8f62('0x52')](function(_0x339cd7){_0x4aee91[_0x8f62('0x53')](_0x339cd7);});}}function onDisconnect(_0x596fbb,_0x1ca596){joinOrLeave(_0x596fbb,_0x8f62('0x45'),_0x1ca596);}function onConnect(_0x3d0b6f){joinOrLeave(_0x3d0b6f,_0x8f62('0x54'));}exports[_0x8f62('0x55')]=function(_0x16241b){_0x16241b['on']('connection',function(_0x4b38b7){_0x4b38b7[_0x8f62('0x56')](0x0);_0x4b38b7[_0x8f62('0x57')]=_0x4b38b7[_0x8f62('0x58')][_0x8f62('0x59')][_0x8f62('0x5a')]+':'+_0x4b38b7[_0x8f62('0x58')][_0x8f62('0x59')][_0x8f62('0x5b')];_0x4b38b7[_0x8f62('0x5c')]=new Date();_0x4b38b7[_0x8f62('0x53')]=function(_0x3dfd94){console['log']('SocketIO\x20'+_0x4b38b7[_0x8f62('0x5d')][_0x8f62('0x5')]+'['+_0x4b38b7[_0x8f62('0x57')]+']',_0x3dfd94);};_0x4b38b7['on'](_0x8f62('0x5e'),function(){onDisconnect(_0x4b38b7,_0x16241b);_0x4b38b7[_0x8f62('0x53')](_0x8f62('0x5f'));});onConnect(_0x4b38b7);_0x4b38b7['log'](_0x8f62('0x60'));});};
\ No newline at end of file
+var _0x0a01=['WhatsappQueues','findAll','Trunks','UserProfileResource','resourceId','User','where','Campaign','format','%s:queue:%s','length','user:%s','handshake','query','find','userProfileId','ChatInteractions','MailInteractions','FaxInteraction','FaxInteractions','SmsInteraction','SmsInteractions','OpenchannelInteraction','WhatsappInteraction','admin','voice:inbound','voice:outbound','hasOwnProperty','include','push','VoiceQueue','FaxQueue','SmsQueue','MailQueue','OpenchannelQueue','WhatsappQueue','user','ChatQueues','Telephones','Trunk','IvrCampaigns','getChatQueues','getFaxQueues','getOpenchannelQueues','getWhatsappQueues','all','voice','chat','fax','sms','mail','whatsapp','telephone:%s','trunk:%s','leave','map','user_has_chat_interactions:remove','removeMailInteractions','emit','user_has_mail_interactions:remove','user_has_fax_interactions:remove','removeSmsInteractions','OpenchannelInteractions','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','WhatsappInteractions','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','log','default','connection','address','request','remotePort','connectedAt','SocketIO\x20','nsp','disconnect','DISCONNECTED','../mysqldb','Agents','name','role','agent','telephone','type','ivr','UserProfileSection','findOne','then','VoiceQueues','SmsQueues','MailQueues','OpenchannelQueues'];(function(_0x110dde,_0x4953f0){var _0x375b8c=function(_0x2a5e26){while(--_0x2a5e26){_0x110dde['push'](_0x110dde['shift']());}};_0x375b8c(++_0x4953f0);}(_0x0a01,0x10b));var _0x10a0=function(_0x7c3bf0,_0x1f0a94){_0x7c3bf0=_0x7c3bf0-0x0;var _0x37ddaa=_0x0a01[_0x7c3bf0];return _0x37ddaa;};'use strict';var _=require('lodash');var util=require('util');var BPromise=require('bluebird');var db=require(_0x10a0('0x0'))['db'];var config=require('./environment');var queryQueues={'attributes':['id','name'],'include':[{'as':_0x10a0('0x1'),'model':db['User'],'attributes':['id',_0x10a0('0x2'),_0x10a0('0x3')],'raw':!![],'where':{'role':_0x10a0('0x4')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x10a0('0x2')],'where':{'role':_0x10a0('0x5')}};var queryTrunks={'raw':!![],'attributes':['id',_0x10a0('0x2')]};var queryAgents={'raw':!![],'attributes':['id','name'],'where':{'role':_0x10a0('0x4')}};var queryCampaigns={'raw':!![],'attributes':['id',_0x10a0('0x2'),_0x10a0('0x6')],'where':{'type':_0x10a0('0x7')}};function getAssociatedResources(_0x46fc47,_0x83c11c,_0x5cfb34){return db[_0x10a0('0x8')][_0x10a0('0x9')]({'where':{'name':_0x46fc47,'userProfileId':_0x83c11c},'raw':!![]})[_0x10a0('0xa')](function(_0x51ab67){if(_0x51ab67){if(_0x51ab67['autoAssociation']){switch(_0x46fc47){case _0x10a0('0xb'):case'ChatQueues':case'FaxQueues':case _0x10a0('0xc'):case _0x10a0('0xd'):case _0x10a0('0xe'):case _0x10a0('0xf'):return db[_0x5cfb34]['findAll'](queryQueues);case'Telephones':return db[_0x5cfb34][_0x10a0('0x10')](queryTelephones);case _0x10a0('0x11'):return db[_0x5cfb34][_0x10a0('0x10')](queryTrunks);case'IvrCampaigns':return db[_0x5cfb34]['findAll'](queryCampaigns);}}else{return db[_0x10a0('0x12')][_0x10a0('0x10')]({'attributes':[_0x10a0('0x13')],'where':{'sectionId':_0x51ab67['id']},'raw':!![]})['then'](function(_0x2ddd25){if(_0x2ddd25){var _0x2b778b={'where':{'id':_['map'](_0x2ddd25,'resourceId')},'raw':!![]};switch(_0x5cfb34){case _0x10a0('0x14'):_0x2b778b[_0x10a0('0x15')][_0x10a0('0x3')]=_0x10a0('0x5');break;case _0x10a0('0x16'):_0x2b778b[_0x10a0('0x15')][_0x10a0('0x6')]='ivr';break;}return db[_0x5cfb34]['findAll'](_0x2b778b);}else{return[];}});}}else{return[];}})[_0x10a0('0xa')](function(_0x4630dc){return _0x4630dc;});}function joinOrLeaveQueues(_0x27c929,_0x3c28a6,_0x4cff8f,_0x5e97be){_0x27c929[_0x3c28a6](util[_0x10a0('0x17')](_0x10a0('0x18'),_0x4cff8f,_0x5e97be['name']));if(_0x5e97be[_0x10a0('0x1')]){for(var _0x5b9829=0x0;_0x5b9829<_0x5e97be[_0x10a0('0x1')][_0x10a0('0x19')];_0x5b9829+=0x1){_0x27c929[_0x3c28a6](util[_0x10a0('0x17')](_0x10a0('0x1a'),_0x5e97be[_0x10a0('0x1')][_0x5b9829][_0x10a0('0x2')]));}}}function joinOrLeave(_0x34d4e5,_0xee103a,_0x396df6){var _0x508e3c;if(_0x34d4e5[_0x10a0('0x1b')][_0x10a0('0x1c')]['id']){db[_0x10a0('0x14')][_0x10a0('0x1d')]({'attributes':['id',_0x10a0('0x2'),_0x10a0('0x3'),_0x10a0('0x1e')],'where':{'id':_0x34d4e5['handshake'][_0x10a0('0x1c')]['id']},'include':[{'model':db['ChatInteraction'],'as':_0x10a0('0x1f'),'attributes':['id'],'raw':!![]},{'model':db['MailInteraction'],'as':_0x10a0('0x20'),'attributes':['id'],'raw':!![]},{'model':db[_0x10a0('0x21')],'as':_0x10a0('0x22'),'attributes':['id'],'raw':!![]},{'model':db[_0x10a0('0x23')],'as':_0x10a0('0x24'),'attributes':['id'],'raw':!![]},{'model':db[_0x10a0('0x25')],'as':'OpenchannelInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x10a0('0x26')],'as':'WhatsappInteractions','attributes':['id'],'raw':!![]}]})['then'](function(_0x27cb88){if(_0x27cb88){_0x508e3c=_0x27cb88;_0x34d4e5[_0xee103a](util[_0x10a0('0x17')]('user:%s',_0x27cb88[_0x10a0('0x2')]));var _0x5c82d1=[];switch(_0x27cb88[_0x10a0('0x3')]){case _0x10a0('0x27'):_0x34d4e5[_0xee103a](_0x10a0('0x28'));_0x34d4e5[_0xee103a](_0x10a0('0x29'));if(queryQueues[_0x10a0('0x2a')]('include')){delete queryQueues[_0x10a0('0x2b')];}_0x5c82d1[_0x10a0('0x2c')](db[_0x10a0('0x2d')][_0x10a0('0x10')](queryQueues));_0x5c82d1['push'](db['ChatQueue'][_0x10a0('0x10')](queryQueues));_0x5c82d1['push'](db[_0x10a0('0x2e')]['findAll'](queryQueues));_0x5c82d1[_0x10a0('0x2c')](db[_0x10a0('0x2f')][_0x10a0('0x10')](queryQueues));_0x5c82d1['push'](db[_0x10a0('0x30')][_0x10a0('0x10')](queryQueues));_0x5c82d1[_0x10a0('0x2c')](db[_0x10a0('0x31')][_0x10a0('0x10')](queryQueues));_0x5c82d1['push'](db[_0x10a0('0x32')][_0x10a0('0x10')](queryQueues));_0x5c82d1[_0x10a0('0x2c')](db[_0x10a0('0x14')][_0x10a0('0x10')](queryTelephones));_0x5c82d1[_0x10a0('0x2c')](db['Trunk'][_0x10a0('0x10')](queryTrunks));_0x5c82d1[_0x10a0('0x2c')](db[_0x10a0('0x16')]['findAll'](queryCampaigns));_0x5c82d1['push'](db[_0x10a0('0x14')]['findAll'](queryAgents));break;case _0x10a0('0x33'):_0x34d4e5[_0xee103a]('voice:inbound');_0x34d4e5[_0xee103a](_0x10a0('0x29'));_0x5c82d1[_0x10a0('0x2c')](getAssociatedResources(_0x10a0('0xb'),_0x27cb88['userProfileId'],'VoiceQueue'));_0x5c82d1[_0x10a0('0x2c')](getAssociatedResources(_0x10a0('0x34'),_0x27cb88['userProfileId'],'ChatQueue'));_0x5c82d1[_0x10a0('0x2c')](getAssociatedResources('FaxQueues',_0x27cb88['userProfileId'],_0x10a0('0x2e')));_0x5c82d1[_0x10a0('0x2c')](getAssociatedResources('SmsQueues',_0x27cb88[_0x10a0('0x1e')],_0x10a0('0x2f')));_0x5c82d1[_0x10a0('0x2c')](getAssociatedResources('MailQueues',_0x27cb88['userProfileId'],'MailQueue'));_0x5c82d1[_0x10a0('0x2c')](getAssociatedResources(_0x10a0('0xe'),_0x27cb88['userProfileId'],_0x10a0('0x31')));_0x5c82d1[_0x10a0('0x2c')](getAssociatedResources(_0x10a0('0xf'),_0x27cb88[_0x10a0('0x1e')],_0x10a0('0x32')));_0x5c82d1[_0x10a0('0x2c')](getAssociatedResources(_0x10a0('0x35'),_0x27cb88['userProfileId'],_0x10a0('0x14')));_0x5c82d1[_0x10a0('0x2c')](getAssociatedResources(_0x10a0('0x11'),_0x27cb88[_0x10a0('0x1e')],_0x10a0('0x36')));_0x5c82d1[_0x10a0('0x2c')](getAssociatedResources(_0x10a0('0x37'),_0x27cb88['userProfileId'],'Campaign'));_0x5c82d1['push'](db[_0x10a0('0x14')][_0x10a0('0x10')](queryAgents));break;case'agent':_0x34d4e5[_0xee103a](_0x10a0('0x28'));_0x34d4e5[_0xee103a](_0x10a0('0x29'));_0x5c82d1[_0x10a0('0x2c')](_0x27cb88['getVoiceQueues']({'attributes':['id',_0x10a0('0x2')]}));_0x5c82d1[_0x10a0('0x2c')](_0x27cb88[_0x10a0('0x38')]({'attributes':['id',_0x10a0('0x2')]}));_0x5c82d1['push'](_0x27cb88[_0x10a0('0x39')]({'attributes':['id','name']}));_0x5c82d1['push'](_0x27cb88['getSmsQueues']({'attributes':['id',_0x10a0('0x2')]}));_0x5c82d1['push'](_0x27cb88['getMailQueues']({'attributes':['id',_0x10a0('0x2')]}));_0x5c82d1['push'](_0x27cb88[_0x10a0('0x3a')]({'attributes':['id','name']}));_0x5c82d1[_0x10a0('0x2c')](_0x27cb88[_0x10a0('0x3b')]({'attributes':['id',_0x10a0('0x2')]}));break;}return BPromise[_0x10a0('0x3c')](_0x5c82d1);}})[_0x10a0('0xa')](function(_0x570ee8){if(_0x570ee8&&_0x570ee8[_0x10a0('0x19')]){for(var _0x44fa5d=0x0;_0x44fa5d<_0x570ee8['length'];_0x44fa5d+=0x1){for(var _0x923863=0x0;_0x923863<_0x570ee8[_0x44fa5d]['length'];_0x923863+=0x1){switch(_0x44fa5d){case 0x0:joinOrLeaveQueues(_0x34d4e5,_0xee103a,_0x10a0('0x3d'),_0x570ee8[_0x44fa5d][_0x923863]);break;case 0x1:joinOrLeaveQueues(_0x34d4e5,_0xee103a,_0x10a0('0x3e'),_0x570ee8[_0x44fa5d][_0x923863]);break;case 0x2:joinOrLeaveQueues(_0x34d4e5,_0xee103a,_0x10a0('0x3f'),_0x570ee8[_0x44fa5d][_0x923863]);break;case 0x3:joinOrLeaveQueues(_0x34d4e5,_0xee103a,_0x10a0('0x40'),_0x570ee8[_0x44fa5d][_0x923863]);break;case 0x4:joinOrLeaveQueues(_0x34d4e5,_0xee103a,_0x10a0('0x41'),_0x570ee8[_0x44fa5d][_0x923863]);break;case 0x5:joinOrLeaveQueues(_0x34d4e5,_0xee103a,'openchannel',_0x570ee8[_0x44fa5d][_0x923863]);break;case 0x6:joinOrLeaveQueues(_0x34d4e5,_0xee103a,_0x10a0('0x42'),_0x570ee8[_0x44fa5d][_0x923863]);break;case 0x7:if(_0x508e3c[_0x10a0('0x3')]!==_0x10a0('0x4'))_0x34d4e5[_0xee103a](util[_0x10a0('0x17')](_0x10a0('0x43'),_0x570ee8[_0x44fa5d][_0x923863][_0x10a0('0x2')]));break;case 0x8:if(_0x508e3c[_0x10a0('0x3')]!=='agent')_0x34d4e5[_0xee103a](util[_0x10a0('0x17')](_0x10a0('0x44'),_0x570ee8[_0x44fa5d][_0x923863][_0x10a0('0x2')]));break;case 0x9:if(_0x508e3c[_0x10a0('0x3')]!==_0x10a0('0x4'))_0x34d4e5[_0xee103a](util[_0x10a0('0x17')]('campaign:%s:%s',_0x570ee8[_0x44fa5d][_0x923863][_0x10a0('0x6')],_0x570ee8[_0x44fa5d][_0x923863][_0x10a0('0x2')]));break;case 0xa:_0x34d4e5[_0xee103a](util[_0x10a0('0x17')](_0x10a0('0x1a'),_0x570ee8[_0x44fa5d][_0x923863][_0x10a0('0x2')]));break;}}}}})['then'](function(){if(_0xee103a===_0x10a0('0x45')){var _0x5f2231=_[_0x10a0('0x46')](_0x508e3c[_0x10a0('0x1f')],'id');return _0x508e3c['removeChatInteractions'](_0x5f2231)[_0x10a0('0xa')](function(){for(var _0x399443=0x0;_0x399443<_0x5f2231[_0x10a0('0x19')];_0x399443+=0x1){_0x396df6['emit'](_0x10a0('0x47'),{'ChatInteractionId':Number(_0x5f2231[_0x399443]),'UserId':Number(_0x508e3c['id'])});}});}})[_0x10a0('0xa')](function(){if(_0xee103a===_0x10a0('0x45')){var _0x3c6fc0=_[_0x10a0('0x46')](_0x508e3c[_0x10a0('0x20')],'id');return _0x508e3c[_0x10a0('0x48')](_0x3c6fc0)[_0x10a0('0xa')](function(){for(var _0x4e8828=0x0;_0x4e8828<_0x3c6fc0[_0x10a0('0x19')];_0x4e8828+=0x1){_0x396df6[_0x10a0('0x49')](_0x10a0('0x4a'),{'MailInteractionId':Number(_0x3c6fc0[_0x4e8828]),'UserId':Number(_0x508e3c['id'])});}});}})[_0x10a0('0xa')](function(){if(_0xee103a==='leave'){var _0x182bba=_['map'](_0x508e3c[_0x10a0('0x22')],'id');return _0x508e3c['removeFaxInteractions'](_0x182bba)['then'](function(){for(var _0xe62fd=0x0;_0xe62fd<_0x182bba[_0x10a0('0x19')];_0xe62fd+=0x1){_0x396df6[_0x10a0('0x49')](_0x10a0('0x4b'),{'FaxInteractionId':Number(_0x182bba[_0xe62fd]),'UserId':Number(_0x508e3c['id'])});}});}})[_0x10a0('0xa')](function(){if(_0xee103a===_0x10a0('0x45')){var _0x12760e=_[_0x10a0('0x46')](_0x508e3c[_0x10a0('0x24')],'id');return _0x508e3c[_0x10a0('0x4c')](_0x12760e)['then'](function(){for(var _0x2fd284=0x0;_0x2fd284<_0x12760e[_0x10a0('0x19')];_0x2fd284+=0x1){_0x396df6[_0x10a0('0x49')]('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0x12760e[_0x2fd284]),'UserId':Number(_0x508e3c['id'])});}});}})[_0x10a0('0xa')](function(){if(_0xee103a===_0x10a0('0x45')){var _0xf127a1=_['map'](_0x508e3c[_0x10a0('0x4d')],'id');return _0x508e3c[_0x10a0('0x4e')](_0xf127a1)[_0x10a0('0xa')](function(){for(var _0x322528=0x0;_0x322528<_0xf127a1['length'];_0x322528+=0x1){_0x396df6['emit'](_0x10a0('0x4f'),{'OpenchannelInteractionId':Number(_0xf127a1[_0x322528]),'UserId':Number(_0x508e3c['id'])});}});}})['then'](function(){if(_0xee103a==='leave'){var _0x279a16=_[_0x10a0('0x46')](_0x508e3c[_0x10a0('0x50')],'id');return _0x508e3c[_0x10a0('0x51')](_0x279a16)[_0x10a0('0xa')](function(){for(var _0x39013c=0x0;_0x39013c<_0x279a16[_0x10a0('0x19')];_0x39013c+=0x1){_0x396df6['emit'](_0x10a0('0x52'),{'WhatsappInteractionId':Number(_0x279a16[_0x39013c]),'UserId':Number(_0x508e3c['id'])});}});}})['catch'](function(_0x15dae1){_0x34d4e5[_0x10a0('0x53')](_0x15dae1);});}}function onDisconnect(_0x1bdfcc,_0x2f5fed){joinOrLeave(_0x1bdfcc,_0x10a0('0x45'),_0x2f5fed);}function onConnect(_0x4ab6b5){joinOrLeave(_0x4ab6b5,'join');}exports[_0x10a0('0x54')]=function(_0x14358c){_0x14358c['on'](_0x10a0('0x55'),function(_0x549524){_0x549524['setMaxListeners'](0x0);_0x549524[_0x10a0('0x56')]=_0x549524['request'][_0x10a0('0x55')]['remoteAddress']+':'+_0x549524[_0x10a0('0x57')][_0x10a0('0x55')][_0x10a0('0x58')];_0x549524[_0x10a0('0x59')]=new Date();_0x549524[_0x10a0('0x53')]=function(_0x56af55){console[_0x10a0('0x53')](_0x10a0('0x5a')+_0x549524[_0x10a0('0x5b')][_0x10a0('0x2')]+'['+_0x549524['address']+']',_0x56af55);};_0x549524['on'](_0x10a0('0x5c'),function(){onDisconnect(_0x549524,_0x14358c);_0x549524['log'](_0x10a0('0x5d'));});onConnect(_0x549524);_0x549524[_0x10a0('0x53')]('CONNECTED');});};
\ No newline at end of file
index 05714ae..19f7a2e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ff1=['Whatsapp','WhatsappInteraction','Fax','FaxInteraction','Mail','MailInteraction','Openchannel','OpenchannelInteraction','EventManager','info','Trigger,\x20%s','error','code','catch','get','event','direction','resolve','then','ContactId','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','query','Sequelize','QueryTypes','contact','UserId','undefined','interface','format','SIP/%s','name','channel','incomingmessage','outgoingmessage','AfterCreateMessage','offlineMessage','motionChannel','SELECT','agent','AfterCreate','changed','closed','substatus','AfterUpdate','User','find','fullname','email','internal','length','hasOwnProperty','model','hook','callback','condition','../../mysqldb','jayson/promise','triggers','client','http','ChatInteraction','newinteraction','Chat','afterUpdate','closedinteraction','ChatMessage','newmessage','ChatOfflineMessage','Sms','SmsInteraction','afterCreate'];(function(_0x5f5bcc,_0x9d5909){var _0x368add=function(_0x294fac){while(--_0x294fac){_0x5f5bcc['push'](_0x5f5bcc['shift']());}};_0x368add(++_0x9d5909);}(_0x6ff1,0x80));var _0x16ff=function(_0x53bf2e,_0x5eca16){_0x53bf2e=_0x53bf2e-0x0;var _0x532b69=_0x6ff1[_0x53bf2e];return _0x532b69;};'use strict';var util=require('util');var db=require(_0x16ff('0x0'))['db'];var jayson=require(_0x16ff('0x1'));var logger=require('../logger')(_0x16ff('0x2'));var client=jayson[_0x16ff('0x3')][_0x16ff('0x4')]({'port':0x232a});var triggers=[{'channel':'Chat','model':_0x16ff('0x5'),'event':'afterCreate','condition':_0x16ff('0x6'),'callback':afterCreate},{'channel':_0x16ff('0x7'),'model':_0x16ff('0x5'),'event':_0x16ff('0x8'),'condition':_0x16ff('0x9'),'callback':afterUpdate},{'channel':_0x16ff('0x7'),'model':_0x16ff('0xa'),'event':'afterCreate','condition':_0x16ff('0xb'),'callback':afterCreateMessage},{'channel':_0x16ff('0x7'),'model':_0x16ff('0xc'),'event':'afterCreate','condition':'newmessage','callback':afterCreateOfflineMessage},{'channel':_0x16ff('0xd'),'model':_0x16ff('0xe'),'event':'afterCreate','condition':_0x16ff('0x6'),'callback':afterCreate},{'channel':'Sms','model':_0x16ff('0xe'),'event':'afterUpdate','condition':_0x16ff('0x9'),'callback':afterUpdate},{'channel':_0x16ff('0xd'),'model':'SmsMessage','event':_0x16ff('0xf'),'condition':_0x16ff('0xb'),'callback':afterCreateMessage},{'channel':_0x16ff('0x10'),'model':_0x16ff('0x11'),'event':_0x16ff('0xf'),'condition':'newinteraction','callback':afterCreate},{'channel':_0x16ff('0x10'),'model':_0x16ff('0x11'),'event':_0x16ff('0x8'),'condition':_0x16ff('0x9'),'callback':afterUpdate},{'channel':_0x16ff('0x10'),'model':'WhatsappMessage','event':_0x16ff('0xf'),'condition':_0x16ff('0xb'),'callback':afterCreateMessage},{'channel':_0x16ff('0x12'),'model':_0x16ff('0x13'),'event':'afterCreate','condition':_0x16ff('0x6'),'callback':afterCreate},{'channel':_0x16ff('0x12'),'model':'FaxInteraction','event':_0x16ff('0x8'),'condition':'closedinteraction','callback':afterUpdate},{'channel':_0x16ff('0x12'),'model':'FaxMessage','event':'afterCreate','condition':_0x16ff('0xb'),'callback':afterCreateMessage},{'channel':'Mail','model':'MailInteraction','event':_0x16ff('0xf'),'condition':_0x16ff('0x6'),'callback':afterCreate},{'channel':_0x16ff('0x14'),'model':_0x16ff('0x15'),'event':_0x16ff('0x8'),'condition':_0x16ff('0x9'),'callback':afterUpdate},{'channel':_0x16ff('0x14'),'model':'MailMessage','event':_0x16ff('0xf'),'condition':'newmessage','callback':afterCreateMessage},{'channel':_0x16ff('0x16'),'model':_0x16ff('0x17'),'event':'afterCreate','condition':_0x16ff('0x6'),'callback':afterCreate},{'channel':'Openchannel','model':_0x16ff('0x17'),'event':'afterUpdate','condition':'closedinteraction','callback':afterUpdate},{'channel':_0x16ff('0x16'),'model':'OpenchannelMessage','event':_0x16ff('0xf'),'condition':_0x16ff('0xb'),'callback':afterCreateMessage}];function request(_0x1c51db){return client['request'](_0x16ff('0x18'),_0x1c51db)['then'](function(_0x31e14d){logger[_0x16ff('0x19')](_0x16ff('0x1a'),'EventManager',_0x31e14d);if(_0x31e14d[_0x16ff('0x1b')]){if(_0x31e14d[_0x16ff('0x1b')][_0x16ff('0x1c')]===0x1f4){logger[_0x16ff('0x1b')](_0x16ff('0x1a'),_0x16ff('0x18'),_0x31e14d[_0x16ff('0x1b')]);}}})[_0x16ff('0x1d')](function(_0x12173b){logger['error'](_0x16ff('0x1a'),'EventManager',_0x12173b);});}function afterCreateMessage(_0x508eaa){return function(_0x4fb132){_0x4fb132=_0x4fb132[_0x16ff('0x1e')]({'plain':!![]});_0x4fb132['channel']=_0x508eaa;_0x4fb132['motionChannel']=_0x508eaa;_0x4fb132[_0x16ff('0x1f')]=_0x4fb132[_0x16ff('0x20')];Promise[_0x16ff('0x21')]()[_0x16ff('0x22')](function(){if(typeof _0x4fb132[_0x16ff('0x23')]==='undefined')return null;var _0x53bcfc=_0x16ff('0x24')+_0x4fb132[_0x16ff('0x23')];return db[_0x16ff('0x25')][_0x16ff('0x26')](_0x53bcfc,{'type':db[_0x16ff('0x27')][_0x16ff('0x28')]['SELECT'],'raw':!![]});})[_0x16ff('0x22')](function(_0x4d28a9){if(_0x4d28a9){_0x4fb132[_0x16ff('0x29')]=_0x4d28a9[0x0];}if(typeof _0x4fb132[_0x16ff('0x2a')]===_0x16ff('0x2b'))return;return getAgent(_0x4fb132[_0x16ff('0x2a')]);})[_0x16ff('0x22')](function(_0x3fa32d){if(_0x3fa32d){_0x4fb132[_0x16ff('0x2c')]=util[_0x16ff('0x2d')](_0x16ff('0x2e'),_0x3fa32d[_0x16ff('0x2f')]);_0x4fb132['agent']=_0x3fa32d;_0x4fb132[_0x16ff('0x30')]=_0x508eaa;return request({'event':_0x16ff('0x31'),'message':_0x4fb132});}else{return request({'event':_0x16ff('0x32'),'message':_0x4fb132});}})[_0x16ff('0x1d')](function(_0x1bcb59){logger[_0x16ff('0x1b')](_0x16ff('0x1a'),_0x16ff('0x33'),_0x1bcb59);});};}function afterCreateOfflineMessage(_0x582bac){return function(_0x3271d6){_0x3271d6=_0x3271d6[_0x16ff('0x1e')]({'plain':!![]});_0x3271d6['channel']=_0x582bac;_0x3271d6['motionChannel']=_0x582bac;_0x3271d6['event']=_0x16ff('0x34');return request({'event':_0x3271d6[_0x16ff('0x1f')],'message':_0x3271d6});};}function afterCreate(_0x394025,_0x373010){return function(_0x594f4e){_0x594f4e=_0x594f4e[_0x16ff('0x1e')]({'plain':!![]});_0x594f4e[_0x16ff('0x30')]=_0x394025;_0x594f4e[_0x16ff('0x35')]=_0x394025;_0x594f4e[_0x16ff('0x1f')]='opened';Promise[_0x16ff('0x21')]()['then'](function(){var _0x1a9782=_0x16ff('0x24')+_0x594f4e[_0x16ff('0x23')];return db[_0x16ff('0x25')][_0x16ff('0x26')](_0x1a9782,{'type':db[_0x16ff('0x27')][_0x16ff('0x28')][_0x16ff('0x36')],'raw':!![]});})['then'](function(_0xc99cf){if(_0xc99cf){_0x594f4e['contact']=_0xc99cf[0x0];}if(typeof _0x594f4e['UserId']===_0x16ff('0x2b'))return;return getAgent(_0x594f4e['UserId']);})[_0x16ff('0x22')](function(_0x45f692){if(_0x45f692){_0x594f4e[_0x16ff('0x2c')]=util[_0x16ff('0x2d')](_0x16ff('0x2e'),_0x45f692[_0x16ff('0x2f')]);_0x594f4e[_0x16ff('0x37')]=_0x45f692;}return request({'event':_0x373010,'message':_0x594f4e});})[_0x16ff('0x1d')](function(_0x371c36){logger['error'](_0x16ff('0x1a'),_0x16ff('0x38'),_0x371c36);});};}function afterUpdate(_0x55ff17){return function(_0x564e24){var _0x49213a=_0x564e24[_0x16ff('0x39')]('closed')&&_0x564e24[_0x16ff('0x3a')];var _0x4c710f=_0x564e24['changed']('substatus');if(_0x49213a||_0x4c710f){var _0xe7f3e0=_0x49213a?'closedinteraction':_0x16ff('0x3b');var _0x1051ca=_0x564e24['get']({'plain':!![]});_0x1051ca[_0x16ff('0x30')]=_0x55ff17;_0x1051ca[_0x16ff('0x35')]=_0x55ff17;_0x1051ca[_0x16ff('0x1f')]=_0x49213a?_0x16ff('0x3a'):_0x16ff('0x3b');var _0x9484eb=_0x16ff('0x24')+_0x1051ca['ContactId'];return db[_0x16ff('0x25')]['query'](_0x9484eb,{'type':db[_0x16ff('0x27')]['QueryTypes'][_0x16ff('0x36')],'raw':!![]})[_0x16ff('0x22')](function(_0x446e2d){if(_0x446e2d){_0x1051ca['contact']=_0x446e2d[0x0];}if(typeof _0x1051ca['UserId']==='undefined')return;return getAgent(_0x1051ca[_0x16ff('0x2a')]);})[_0x16ff('0x22')](function(_0x2aad21){if(_0x2aad21){_0x1051ca[_0x16ff('0x2c')]=util[_0x16ff('0x2d')](_0x16ff('0x2e'),_0x2aad21[_0x16ff('0x2f')]);_0x1051ca['agent']=_0x2aad21;}return request({'event':_0xe7f3e0,'message':_0x1051ca});})[_0x16ff('0x1d')](function(_0x42d1c8){logger[_0x16ff('0x1b')](_0x16ff('0x1a'),_0x16ff('0x3c'),_0x42d1c8);});}};}function getAgent(_0x20a171){return db[_0x16ff('0x3d')][_0x16ff('0x3e')]({'where':{'id':_0x20a171},'attributes':['id','name',_0x16ff('0x3f'),_0x16ff('0x40'),_0x16ff('0x41')],'raw':!![]})[_0x16ff('0x22')](function(_0x20af05){return _0x20af05;});}exports['default']=function(){for(var _0x4af8fd=0x0;_0x4af8fd<triggers[_0x16ff('0x42')];_0x4af8fd+=0x1){if(db[_0x16ff('0x43')](triggers[_0x4af8fd][_0x16ff('0x44')])){db[triggers[_0x4af8fd][_0x16ff('0x44')]][_0x16ff('0x45')](triggers[_0x4af8fd][_0x16ff('0x1f')],triggers[_0x4af8fd][_0x16ff('0x46')](triggers[_0x4af8fd][_0x16ff('0x30')]['toLowerCase'](),triggers[_0x4af8fd][_0x16ff('0x47')]));}}};
\ No newline at end of file
+var _0x37a3=['error','code','catch','get','channel','motionChannel','event','resolve','ContactId','undefined','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','QueryTypes','SELECT','UserId','format','SIP/%s','name','agent','AfterCreateMessage','offlineMessage','opened','Sequelize','contact','AfterCreate','changed','closed','substatus','query','AfterUpdate','User','find','email','internal','default','length','model','callback','toLowerCase','condition','util','../../mysqldb','jayson/promise','triggers','http','Chat','ChatInteraction','closedinteraction','ChatMessage','afterCreate','newmessage','ChatOfflineMessage','SmsInteraction','newinteraction','Sms','SmsMessage','Whatsapp','WhatsappInteraction','WhatsappMessage','Fax','FaxInteraction','afterUpdate','FaxMessage','Mail','MailInteraction','MailMessage','Openchannel','OpenchannelInteraction','OpenchannelMessage','request','EventManager','then','info','Trigger,\x20%s'];(function(_0x935c9e,_0x52a825){var _0x26c7aa=function(_0x9c9b5a){while(--_0x9c9b5a){_0x935c9e['push'](_0x935c9e['shift']());}};_0x26c7aa(++_0x52a825);}(_0x37a3,0x19a));var _0x337a=function(_0x5c4a4a,_0x2ac658){_0x5c4a4a=_0x5c4a4a-0x0;var _0x26c387=_0x37a3[_0x5c4a4a];return _0x26c387;};'use strict';var util=require(_0x337a('0x0'));var db=require(_0x337a('0x1'))['db'];var jayson=require(_0x337a('0x2'));var logger=require('../logger')(_0x337a('0x3'));var client=jayson['client'][_0x337a('0x4')]({'port':0x232a});var triggers=[{'channel':_0x337a('0x5'),'model':'ChatInteraction','event':'afterCreate','condition':'newinteraction','callback':afterCreate},{'channel':_0x337a('0x5'),'model':_0x337a('0x6'),'event':'afterUpdate','condition':_0x337a('0x7'),'callback':afterUpdate},{'channel':_0x337a('0x5'),'model':_0x337a('0x8'),'event':_0x337a('0x9'),'condition':_0x337a('0xa'),'callback':afterCreateMessage},{'channel':_0x337a('0x5'),'model':_0x337a('0xb'),'event':_0x337a('0x9'),'condition':_0x337a('0xa'),'callback':afterCreateOfflineMessage},{'channel':'Sms','model':_0x337a('0xc'),'event':_0x337a('0x9'),'condition':_0x337a('0xd'),'callback':afterCreate},{'channel':_0x337a('0xe'),'model':'SmsInteraction','event':'afterUpdate','condition':_0x337a('0x7'),'callback':afterUpdate},{'channel':_0x337a('0xe'),'model':_0x337a('0xf'),'event':_0x337a('0x9'),'condition':_0x337a('0xa'),'callback':afterCreateMessage},{'channel':_0x337a('0x10'),'model':_0x337a('0x11'),'event':_0x337a('0x9'),'condition':_0x337a('0xd'),'callback':afterCreate},{'channel':_0x337a('0x10'),'model':_0x337a('0x11'),'event':'afterUpdate','condition':'closedinteraction','callback':afterUpdate},{'channel':_0x337a('0x10'),'model':_0x337a('0x12'),'event':'afterCreate','condition':_0x337a('0xa'),'callback':afterCreateMessage},{'channel':_0x337a('0x13'),'model':_0x337a('0x14'),'event':_0x337a('0x9'),'condition':'newinteraction','callback':afterCreate},{'channel':_0x337a('0x13'),'model':_0x337a('0x14'),'event':_0x337a('0x15'),'condition':_0x337a('0x7'),'callback':afterUpdate},{'channel':_0x337a('0x13'),'model':_0x337a('0x16'),'event':_0x337a('0x9'),'condition':_0x337a('0xa'),'callback':afterCreateMessage},{'channel':_0x337a('0x17'),'model':_0x337a('0x18'),'event':_0x337a('0x9'),'condition':'newinteraction','callback':afterCreate},{'channel':_0x337a('0x17'),'model':'MailInteraction','event':_0x337a('0x15'),'condition':_0x337a('0x7'),'callback':afterUpdate},{'channel':_0x337a('0x17'),'model':_0x337a('0x19'),'event':_0x337a('0x9'),'condition':_0x337a('0xa'),'callback':afterCreateMessage},{'channel':_0x337a('0x1a'),'model':_0x337a('0x1b'),'event':'afterCreate','condition':_0x337a('0xd'),'callback':afterCreate},{'channel':_0x337a('0x1a'),'model':'OpenchannelInteraction','event':_0x337a('0x15'),'condition':_0x337a('0x7'),'callback':afterUpdate},{'channel':_0x337a('0x1a'),'model':_0x337a('0x1c'),'event':'afterCreate','condition':'newmessage','callback':afterCreateMessage}];function request(_0x2199ba){return client[_0x337a('0x1d')](_0x337a('0x1e'),_0x2199ba)[_0x337a('0x1f')](function(_0x2b04d1){logger[_0x337a('0x20')](_0x337a('0x21'),_0x337a('0x1e'),_0x2b04d1);if(_0x2b04d1['error']){if(_0x2b04d1[_0x337a('0x22')][_0x337a('0x23')]===0x1f4){logger['error'](_0x337a('0x21'),_0x337a('0x1e'),_0x2b04d1[_0x337a('0x22')]);}}})[_0x337a('0x24')](function(_0x220a42){logger['error']('Trigger,\x20%s',_0x337a('0x1e'),_0x220a42);});}function afterCreateMessage(_0x13d65b){return function(_0x102995){_0x102995=_0x102995[_0x337a('0x25')]({'plain':!![]});_0x102995[_0x337a('0x26')]=_0x13d65b;_0x102995[_0x337a('0x27')]=_0x13d65b;_0x102995[_0x337a('0x28')]=_0x102995['direction'];Promise[_0x337a('0x29')]()[_0x337a('0x1f')](function(){if(typeof _0x102995[_0x337a('0x2a')]===_0x337a('0x2b'))return null;var _0x5a1dc7=_0x337a('0x2c')+_0x102995[_0x337a('0x2a')];return db[_0x337a('0x2d')]['query'](_0x5a1dc7,{'type':db['Sequelize'][_0x337a('0x2e')][_0x337a('0x2f')],'raw':!![]});})['then'](function(_0x236045){if(_0x236045){_0x102995['contact']=_0x236045[0x0];}if(typeof _0x102995[_0x337a('0x30')]===_0x337a('0x2b'))return;return getAgent(_0x102995[_0x337a('0x30')]);})[_0x337a('0x1f')](function(_0x1d993c){if(_0x1d993c){_0x102995['interface']=util[_0x337a('0x31')](_0x337a('0x32'),_0x1d993c[_0x337a('0x33')]);_0x102995[_0x337a('0x34')]=_0x1d993c;_0x102995[_0x337a('0x26')]=_0x13d65b;return request({'event':'incomingmessage','message':_0x102995});}else{return request({'event':'outgoingmessage','message':_0x102995});}})[_0x337a('0x24')](function(_0x5ab9f3){logger[_0x337a('0x22')]('Trigger,\x20%s',_0x337a('0x35'),_0x5ab9f3);});};}function afterCreateOfflineMessage(_0x1b2f9c){return function(_0x5caf62){_0x5caf62=_0x5caf62[_0x337a('0x25')]({'plain':!![]});_0x5caf62[_0x337a('0x26')]=_0x1b2f9c;_0x5caf62[_0x337a('0x27')]=_0x1b2f9c;_0x5caf62[_0x337a('0x28')]=_0x337a('0x36');return request({'event':_0x5caf62[_0x337a('0x28')],'message':_0x5caf62});};}function afterCreate(_0x1377dc,_0x4e4f95){return function(_0x5ce247){_0x5ce247=_0x5ce247[_0x337a('0x25')]({'plain':!![]});_0x5ce247[_0x337a('0x26')]=_0x1377dc;_0x5ce247[_0x337a('0x27')]=_0x1377dc;_0x5ce247[_0x337a('0x28')]=_0x337a('0x37');Promise[_0x337a('0x29')]()[_0x337a('0x1f')](function(){var _0x57919d='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x5ce247[_0x337a('0x2a')];return db[_0x337a('0x2d')]['query'](_0x57919d,{'type':db[_0x337a('0x38')][_0x337a('0x2e')][_0x337a('0x2f')],'raw':!![]});})[_0x337a('0x1f')](function(_0x8f93de){if(_0x8f93de){_0x5ce247[_0x337a('0x39')]=_0x8f93de[0x0];}if(typeof _0x5ce247[_0x337a('0x30')]==='undefined')return;return getAgent(_0x5ce247[_0x337a('0x30')]);})[_0x337a('0x1f')](function(_0x16cb23){if(_0x16cb23){_0x5ce247['interface']=util['format'](_0x337a('0x32'),_0x16cb23[_0x337a('0x33')]);_0x5ce247[_0x337a('0x34')]=_0x16cb23;}return request({'event':_0x4e4f95,'message':_0x5ce247});})[_0x337a('0x24')](function(_0x5d3aed){logger[_0x337a('0x22')]('Trigger,\x20%s',_0x337a('0x3a'),_0x5d3aed);});};}function afterUpdate(_0x3725c0){return function(_0x20e2a7){var _0x5d6a9c=_0x20e2a7[_0x337a('0x3b')](_0x337a('0x3c'))&&_0x20e2a7[_0x337a('0x3c')];var _0x5c6bfa=_0x20e2a7['changed'](_0x337a('0x3d'));if(_0x5d6a9c||_0x5c6bfa){var _0x181be6=_0x5d6a9c?'closedinteraction':_0x337a('0x3d');var _0x3e8ac9=_0x20e2a7[_0x337a('0x25')]({'plain':!![]});_0x3e8ac9[_0x337a('0x26')]=_0x3725c0;_0x3e8ac9[_0x337a('0x27')]=_0x3725c0;_0x3e8ac9[_0x337a('0x28')]=_0x5d6a9c?_0x337a('0x3c'):_0x337a('0x3d');var _0x374d2c=_0x337a('0x2c')+_0x3e8ac9[_0x337a('0x2a')];return db['sequelize'][_0x337a('0x3e')](_0x374d2c,{'type':db[_0x337a('0x38')]['QueryTypes'][_0x337a('0x2f')],'raw':!![]})[_0x337a('0x1f')](function(_0x1c8f9f){if(_0x1c8f9f){_0x3e8ac9[_0x337a('0x39')]=_0x1c8f9f[0x0];}if(typeof _0x3e8ac9[_0x337a('0x30')]===_0x337a('0x2b'))return;return getAgent(_0x3e8ac9[_0x337a('0x30')]);})[_0x337a('0x1f')](function(_0x29c45f){if(_0x29c45f){_0x3e8ac9['interface']=util['format'](_0x337a('0x32'),_0x29c45f[_0x337a('0x33')]);_0x3e8ac9['agent']=_0x29c45f;}return request({'event':_0x181be6,'message':_0x3e8ac9});})[_0x337a('0x24')](function(_0x3eacb5){logger[_0x337a('0x22')](_0x337a('0x21'),_0x337a('0x3f'),_0x3eacb5);});}};}function getAgent(_0x2000cf){return db[_0x337a('0x40')][_0x337a('0x41')]({'where':{'id':_0x2000cf},'attributes':['id',_0x337a('0x33'),'fullname',_0x337a('0x42'),_0x337a('0x43')],'raw':!![]})[_0x337a('0x1f')](function(_0x3bcedb){return _0x3bcedb;});}exports[_0x337a('0x44')]=function(){for(var _0x125f8c=0x0;_0x125f8c<triggers[_0x337a('0x45')];_0x125f8c+=0x1){if(db['hasOwnProperty'](triggers[_0x125f8c]['model'])){db[triggers[_0x125f8c][_0x337a('0x46')]]['hook'](triggers[_0x125f8c][_0x337a('0x28')],triggers[_0x125f8c][_0x337a('0x47')](triggers[_0x125f8c]['channel'][_0x337a('0x48')](),triggers[_0x125f8c][_0x337a('0x49')]));}}};
\ No newline at end of file
index 1c4e50a..4b8da5f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7809=['./license/util','voice','chat','fax','sms','openchannel','getChannels','toLowerCase','includes','isUndefined','updateAttributes','getLicense','role','agent','User','count','then','agents','Maximum\x20login\x20has\x20been\x20reached','catch','bluebird','../mysqldb'];(function(_0x2aacf6,_0x387e5f){var _0x25c14c=function(_0x2b6b6c){while(--_0x2b6b6c){_0x2aacf6['push'](_0x2aacf6['shift']());}};_0x25c14c(++_0x387e5f);}(_0x7809,0x15e));var _0x9780=function(_0x231df4,_0x4a78d5){_0x231df4=_0x231df4-0x0;var _0x4b4789=_0x7809[_0x231df4];return _0x4b4789;};'use strict';var _=require('lodash');var BPromise=require(_0x9780('0x0'));var db=require(_0x9780('0x1'))['db'];var util=require(_0x9780('0x2'));var channels=[_0x9780('0x3'),'mail',_0x9780('0x4'),_0x9780('0x5'),_0x9780('0x6'),'whatsapp',_0x9780('0x7')];exports[_0x9780('0x8')]=function(){return channels;};exports['isValidChannel']=function(_0x541171){_0x541171=_0x541171[_0x9780('0x9')]();return _[_0x9780('0xa')](channels,_0x541171);};exports['clearBlockUser']=function(_0x2deffa,_0x51ab89,_0x1b5e78,_0x41bdbb){var _0x5b7dd6={'loginAttempts':_0x51ab89,'blocked':_0x1b5e78};if(!_[_0x9780('0xb')](_0x41bdbb)){_0x5b7dd6['blockedAt']=_0x41bdbb;}return _0x2deffa[_0x9780('0xc')](_0x5b7dd6);};exports[_0x9780('0xd')]=function(_0x4b2936){return new BPromise(function(_0x3c3beb,_0x140c9a){var _0x583eae=0x0;if(_0x4b2936[_0x9780('0xe')]!==_0x9780('0xf')){_0x3c3beb(_0x4b2936);}db[_0x9780('0x10')][_0x9780('0x11')]({'where':{'role':'agent','online':!![],'id':{'$ne':_0x4b2936['id']}}})[_0x9780('0x12')](function(_0x3cfbbc){_0x583eae=_0x3cfbbc;return util[_0x9780('0xd')]();})[_0x9780('0x12')](function(_0x36563c){if(_0x36563c&&_0x36563c[_0x9780('0x13')]&&_0x583eae>=_0x36563c[_0x9780('0x13')]){throw Error(_0x9780('0x14'));}_0x3c3beb(_0x4b2936);})[_0x9780('0x15')](function(_0x4b4e80){_0x140c9a(_0x4b4e80);});});};
\ No newline at end of file
+var _0xd55b=['mail','chat','fax','sms','whatsapp','openchannel','isValidChannel','clearBlockUser','blockedAt','updateAttributes','getLicense','agent','count','then','agents','catch','bluebird','../mysqldb','voice'];(function(_0xf93c97,_0xed15f1){var _0x1bb9f9=function(_0x1a6433){while(--_0x1a6433){_0xf93c97['push'](_0xf93c97['shift']());}};_0x1bb9f9(++_0xed15f1);}(_0xd55b,0xce));var _0xbd55=function(_0x40690f,_0x59e306){_0x40690f=_0x40690f-0x0;var _0x53938d=_0xd55b[_0x40690f];return _0x53938d;};'use strict';var _=require('lodash');var BPromise=require(_0xbd55('0x0'));var db=require(_0xbd55('0x1'))['db'];var util=require('./license/util');var channels=[_0xbd55('0x2'),_0xbd55('0x3'),_0xbd55('0x4'),_0xbd55('0x5'),_0xbd55('0x6'),_0xbd55('0x7'),_0xbd55('0x8')];exports['getChannels']=function(){return channels;};exports[_0xbd55('0x9')]=function(_0x1f6d9d){_0x1f6d9d=_0x1f6d9d['toLowerCase']();return _['includes'](channels,_0x1f6d9d);};exports[_0xbd55('0xa')]=function(_0x370c61,_0x46ddea,_0x255f7b,_0x36bad0){var _0x12ffc9={'loginAttempts':_0x46ddea,'blocked':_0x255f7b};if(!_['isUndefined'](_0x36bad0)){_0x12ffc9[_0xbd55('0xb')]=_0x36bad0;}return _0x370c61[_0xbd55('0xc')](_0x12ffc9);};exports[_0xbd55('0xd')]=function(_0x7e885c){return new BPromise(function(_0x12dee7,_0x4060c2){var _0xeaea55=0x0;if(_0x7e885c['role']!==_0xbd55('0xe')){_0x12dee7(_0x7e885c);}db['User'][_0xbd55('0xf')]({'where':{'role':_0xbd55('0xe'),'online':!![],'id':{'$ne':_0x7e885c['id']}}})[_0xbd55('0x10')](function(_0x214fba){_0xeaea55=_0x214fba;return util[_0xbd55('0xd')]();})[_0xbd55('0x10')](function(_0x4da846){if(_0x4da846&&_0x4da846[_0xbd55('0x11')]&&_0xeaea55>=_0x4da846['agents']){throw Error('Maximum\x20login\x20has\x20been\x20reached');}_0x12dee7(_0x7e885c);})[_0xbd55('0x12')](function(_0x1fa212){_0x4060c2(_0x1fa212);});});};
\ No newline at end of file
index 265959c..36d41ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['message','name','Error','inherits','Bad\x20Request','Entity\x20not\x20found','Forbidden','OutOfInterval','Not\x20Found','status','send','util','../config/logger','api'];(function(_0x2ef7ed,_0x45a9c3){var _0x1a83c7=function(_0x1ed2e5){while(--_0x1ed2e5){_0x2ef7ed['push'](_0x2ef7ed['shift']());}};_0x1a83c7(++_0x45a9c3);}(_0xa9e0,0x123));var _0x0a9e=function(_0x102e37,_0x14a181){_0x102e37=_0x102e37-0x0;var _0x35a07c=_0xa9e0[_0x102e37];return _0x35a07c;};'use strict';var util=require(_0x0a9e('0x0'));var logger=require(_0x0a9e('0x1'))(_0x0a9e('0x2'));var APIError=function(_0x5dd881,_0x550fbc){this[_0x0a9e('0x3')]=_0x5dd881||'Internal\x20Server\x20Error';this[_0x0a9e('0x4')]=_0x550fbc||_0x0a9e('0x5');util[_0x0a9e('0x6')](APIError,Error);};var APIBadRequestError=function(_0x991246){this[_0x0a9e('0x3')]=_0x991246||'Bad\x20Request';this[_0x0a9e('0x4')]=_0x0a9e('0x7');util[_0x0a9e('0x6')](APIBadRequestError,APIError);};var APINotFoundError=function(_0x5f41ea){this['message']=_0x5f41ea||_0x0a9e('0x8');this['name']='Not\x20Found';util[_0x0a9e('0x6')](APINotFoundError,APIError);};function getStatusCode(_0xf81284){switch(_0xf81284){case _0x0a9e('0x7'):return 0x190;case _0x0a9e('0x9'),_0x0a9e('0xa'):return 0x193;case _0x0a9e('0xb'):return 0x194;default:return 0x1f4;}}function handleError(_0x4a4c56){return function(_0x50dfb2){logger['error'](_0x50dfb2['stack']);var _0x273d4d=getStatusCode(_0x50dfb2[_0x0a9e('0x4')]);if(_0x50dfb2[_0x0a9e('0x4')])delete _0x50dfb2[_0x0a9e('0x4')];return _0x4a4c56[_0x0a9e('0xc')](_0x273d4d)[_0x0a9e('0xd')](_0x50dfb2);};}module['exports']={'APIError':APIError,'APIBadRequestError':APIBadRequestError,'APINotFoundError':APINotFoundError,'handleError':handleError};
\ No newline at end of file
+var _0x153f=['inherits','Forbidden','OutOfInterval','error','status','send','exports','util','../config/logger','api','message','Internal\x20Server\x20Error','Error','Bad\x20Request','name','Entity\x20not\x20found','Not\x20Found'];(function(_0x29aa5c,_0x36d523){var _0x2ec180=function(_0x408da6){while(--_0x408da6){_0x29aa5c['push'](_0x29aa5c['shift']());}};_0x2ec180(++_0x36d523);}(_0x153f,0x15b));var _0xf153=function(_0x537471,_0x5dca2d){_0x537471=_0x537471-0x0;var _0x3627c6=_0x153f[_0x537471];return _0x3627c6;};'use strict';var util=require(_0xf153('0x0'));var logger=require(_0xf153('0x1'))(_0xf153('0x2'));var APIError=function(_0x44cea3,_0x2afb9a){this[_0xf153('0x3')]=_0x44cea3||_0xf153('0x4');this['name']=_0x2afb9a||_0xf153('0x5');util['inherits'](APIError,Error);};var APIBadRequestError=function(_0x1f9ead){this[_0xf153('0x3')]=_0x1f9ead||_0xf153('0x6');this[_0xf153('0x7')]=_0xf153('0x6');util['inherits'](APIBadRequestError,APIError);};var APINotFoundError=function(_0x17ba96){this[_0xf153('0x3')]=_0x17ba96||_0xf153('0x8');this[_0xf153('0x7')]=_0xf153('0x9');util[_0xf153('0xa')](APINotFoundError,APIError);};function getStatusCode(_0x44845c){switch(_0x44845c){case _0xf153('0x6'):return 0x190;case _0xf153('0xb'),_0xf153('0xc'):return 0x193;case'Not\x20Found':return 0x194;default:return 0x1f4;}}function handleError(_0x2b76eb){return function(_0x1c8de7){logger[_0xf153('0xd')](_0x1c8de7['stack']);var _0x3a8838=getStatusCode(_0x1c8de7[_0xf153('0x7')]);if(_0x1c8de7[_0xf153('0x7')])delete _0x1c8de7[_0xf153('0x7')];return _0x2b76eb[_0xf153('0xe')](_0x3a8838)[_0xf153('0xf')](_0x1c8de7);};}module[_0xf153('0x10')]={'APIError':APIError,'APIBadRequestError':APIBadRequestError,'APINotFoundError':APINotFoundError,'handleError':handleError};
\ No newline at end of file
index 32c1a49..6dd8cae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4060=['status','json','404'];(function(_0x33b259,_0x2036be){var _0xf95548=function(_0x5b3424){while(--_0x5b3424){_0x33b259['push'](_0x33b259['shift']());}};_0xf95548(++_0x2036be);}(_0x4060,0x89));var _0x0406=function(_0x41c59c,_0x5f02b9){_0x41c59c=_0x41c59c-0x0;var _0x4dc97f=_0x4060[_0x41c59c];return _0x4dc97f;};'use strict';module['exports'][0x194]=function pageNotFound(_0x12e00d,_0x54b435){var _0xcbe62c=_0x0406('0x0');var _0x46a2ec=0x194;var _0x2f0e53={'status':_0x46a2ec};_0x54b435[_0x0406('0x1')](_0x2f0e53[_0x0406('0x1')]);_0x54b435['render'](_0xcbe62c,{},function(_0x42156d,_0x3279ca){if(_0x42156d){return _0x54b435['status'](_0x2f0e53[_0x0406('0x1')])[_0x0406('0x2')](_0x2f0e53);}_0x54b435['send'](_0x3279ca);});};
\ No newline at end of file
+var _0x3010=['404','status','json','send','exports'];(function(_0x68ee8b,_0x3cc6c5){var _0x5148f7=function(_0x5dcbd5){while(--_0x5dcbd5){_0x68ee8b['push'](_0x68ee8b['shift']());}};_0x5148f7(++_0x3cc6c5);}(_0x3010,0x7c));var _0x0301=function(_0x58e37a,_0x3dd00f){_0x58e37a=_0x58e37a-0x0;var _0x40ff7c=_0x3010[_0x58e37a];return _0x40ff7c;};'use strict';module[_0x0301('0x0')][0x194]=function pageNotFound(_0xb089ab,_0x4a829c){var _0x104c59=_0x0301('0x1');var _0x296c6d=0x194;var _0x5e4a07={'status':_0x296c6d};_0x4a829c[_0x0301('0x2')](_0x5e4a07[_0x0301('0x2')]);_0x4a829c['render'](_0x104c59,{},function(_0x39d66b,_0x1dea24){if(_0x39d66b){return _0x4a829c['status'](_0x5e4a07[_0x0301('0x2')])[_0x0301('0x3')](_0x5e4a07);}_0x4a829c[_0x0301('0x4')](_0x1dea24);});};
\ No newline at end of file
diff --git a/server/migrations/2.6.14.js b/server/migrations/2.6.14.js
new file mode 100644 (file)
index 0000000..ceb719d
--- /dev/null
@@ -0,0 +1,172 @@
+'use strict';
+
+var BPromise = require('bluebird');
+var util = require('util');
+var logger = require('../config/logger')('migration');
+var Sequence = function() {};
+
+Sequence.prototype.enqueue = function(fn) {
+  this.tail = this.tail ? this.tail.finally(fn) : fn();
+};
+
+var Migration = function(queryInterface) {
+  this.queryInterface = queryInterface;
+  this.sequence = new Sequence();
+};
+
+Migration.prototype.changeColumn = function(table, column, type) {
+  var _this = this;
+  this.sequence.enqueue(function() {
+    return _this.queryInterface
+      .changeColumn(table, column, type)
+      .then(function() {
+        logger.info('Changed column %s in table %s', column, table);
+      })
+      .catch(function(err) {
+        logger.info(JSON.stringify(err));
+      });
+  });
+};
+
+Migration.prototype.addColumn = function(table, column, type) {
+  var _this = this;
+  this.sequence.enqueue(function() {
+    return _this.queryInterface
+      .addColumn(table, column, type)
+      .then(function() {
+        logger.info('Added column %s to %s', column, table);
+      })
+      .catch(function(err) {
+        logger.info(JSON.stringify(err));
+      });
+  });
+};
+
+Migration.prototype.dropTable = function(table) {
+  var _this = this;
+  this.sequence.enqueue(function() {
+    return _this.queryInterface
+      .dropTable(table, {
+        force: true,
+      })
+      .then(function() {
+        logger.info('table dropped %s', table);
+      })
+      .catch(function(err) {
+        logger.info(JSON.stringify(err));
+      });
+  });
+};
+
+Migration.prototype.addIndex = function(table, column, indexName) {
+  var _this = this;
+  this.sequence.enqueue(function() {
+    return _this.queryInterface
+      .addIndex(table, column, {
+        indexName: indexName,
+      })
+      .then(function() {
+        logger.info('addIndex %s %s %s', table, column.join(','), indexName);
+      })
+      .catch(function(err) {
+        logger.info(JSON.stringify(err));
+      });
+  });
+};
+
+Migration.prototype.removeIndex = function(table, indexName) {
+  var _this = this;
+  this.sequence.enqueue(function() {
+    return _this.queryInterface
+      .removeIndex(table, indexName)
+      .then(function() {
+        logger.info('removeIndex %s %s', table, indexName);
+      })
+      .catch(function(err) {
+        logger.info(JSON.stringify(err));
+      });
+  });
+};
+
+Migration.prototype.query = function(sql) {
+  var _this = this;
+  this.sequence.enqueue(function() {
+    return _this.queryInterface.sequelize
+      .query(sql)
+      .then(function() {
+        logger.info('query %s', sql);
+      })
+      .catch(function(err) {
+        logger.info(JSON.stringify(err));
+      });
+  });
+};
+
+Migration.prototype.removeColumn = function(table, column) {
+  var _this = this;
+  this.sequence.enqueue(function() {
+    return _this.queryInterface
+      .removeColumn(table, column)
+      .then(function() {
+        logger.info('Removed column %s from %s', column, table);
+      })
+      .catch(function(err) {
+        logger.info(
+          util.inspect(err, {
+            showHidden: false,
+            depth: null,
+          })
+        );
+      });
+  });
+};
+
+Migration.prototype.renameColumn = function(table, oldColumn, newColumn) {
+  var _this = this;
+  this.sequence.enqueue(function() {
+    return _this.queryInterface
+      .renameColumn(table, oldColumn, newColumn)
+      .then(function() {
+        logger.info(
+          'Renamed column from %s to %s on %s',
+          oldColumn,
+          newColumn,
+          table
+        );
+      })
+      .catch(function(err) {
+        logger.info(
+          util.inspect(err, {
+            showHidden: false,
+            depth: null,
+          })
+        );
+      });
+  });
+};
+
+Migration.prototype.final = function(resolve) {
+  this.sequence.enqueue(function() {
+    return resolve();
+  });
+};
+
+module.exports = {
+  up: function(queryInterface /* , Sequelize */ ) {
+    return new BPromise(function(resolve) {
+      var migration = new Migration(queryInterface);
+
+      // START users
+      migration.query('ALTER TABLE users CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;');
+      // END users
+
+      // START FINAL
+      migration.final(resolve);
+      // END FINAL
+    });
+  },
+
+  down: function( /* queryInterface, Sequelize */ ) {
+    // var migration = new Migration(queryInterface);
+  },
+};
\ No newline at end of file
index d819518..3fc9476 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['SquareRecording','../api/squareRecording/squareRecording.model','SquareMessage','../api/squareMessage/squareMessage.model','License','Migration','../api/migration/migration.model','Attachment','../api/attachment/attachment.model','Plugin','../api/plugin/plugin.model','ChatTransferReport','../api/chatTransferReport/chatTransferReport.model','FaxTransferReport','../api/faxTransferReport/faxTransferReport.model','OpenchannelTransferReport','../api/openchannelTransferReport/openchannelTransferReport.model','SmsTransferReport','../api/smsTransferReport/smsTransferReport.model','../api/cmList/cmList.model','VoicePrefix','UserProfile','UserProfileSection','UserProfileResource','UserNotification','../api/userNotification/userNotification.model','WhatsappAccount','../api/whatsappAccount/whatsappAccount.model','WhatsappApplication','../api/whatsappApplication/whatsappApplication.model','WhatsappInteraction','../api/whatsappInteraction/whatsappInteraction.model','WhatsappMessage','WhatsappQueueReport','../api/whatsappQueueReport/whatsappQueueReport.model','../api/whatsappTransferReport/whatsappTransferReport.model','WhatsappQueue','../api/whatsappQueue/whatsappQueue.model','CloudProvider','../api/cloudProvider/cloudProvider.model','TeamVoiceQueue','../api/teamVoiceQueue/teamVoiceQueue.model','TeamVoicePrefix','../api/teamVoicePrefix/teamVoicePrefix.model','UserVoicePrefix','../api/userVoicePrefix/userVoicePrefix.model','hasOne','VoiceMail','userSetting','cascade','UserId','hasMany','VoiceRecording','Recordings','VoiceQueuesRt','Extensions','HopperFinals','CmHopperHistory','HopperHistory','OpenchannelInteractions','ChatInteractions','SmsInteractions','FaxInteraction','MailInteraction','MailInteractions','WhatsappInteractions','UserNotifications','SenderId','belongsToMany','Groups','chat_group_has_users','CmContact','Contacts','cm_user_has_contacts','Lists','cm_user_has_lists','Team','user_has_teams','user_has_mail_interactions','FaxInteractions','user_has_fax_interactions','user_has_sms_interactions','user_has_openchannel_interactions','user_has_whatsapp_interactions','VoiceQueues','VoicePrefixes','ChatQueues','UserChatQueue','FaxQueues','SmsQueues','OpenchannelQueue','WhatsappQueues','CmList','ChatWebsites','user_has_chat_websites','user_has_fax_accounts','MailAccounts','user_has_mail_accounts','OpenchannelAccounts','user_has_openchannel_accounts','SmsAccounts','user_has_sms_accounts','WhatsappAccounts','user_has_whatsapp_accounts','ChanSpyId','VoiceContext','Applications','Sounds','moh_has_sounds','Members','VoiceQueueId','Hoppers','HopperBlacks','JscriptySessions','TrunkId','belongsTo','TrunkBackup','TrunkBackupId','IntervalId','mandatoryDispositionPauseId','Teams','BlackLists','voice_queues_has_cm_blacklists','Messages','mailbox','mailboxuser','VoiceCallReport','QueueCalls','uniqueid','VoiceAgentReport','AgentReports','Contact','MailAccountId','CloudProviderId','MailServerOut','restrict','Imap','Smtp','Disposition','Dispositions','Answers','Interactions','MailApplication','List','ListId','TemplateId','mandatoryDispositionPause','Agents','team_has_mail_queues','ContactId','mail_interaction_has_tags','Tags','ThroughTags','Users','MailInteractionId','Attachments','Interaction','ChatWebsiteId','Interval','MailQueueReport','Dashboard','CannedAnswer','FaxAccountId','Exntensions','TagId','FaxInteractionId','Account','Owner','fax_interaction_has_tags','AttachmentId','team_has_fax_queues','SmsAccountId','SmsInteractionId','sms_interaction_has_tags','SmsQueueId','team_has_sms_queues','OpenchannelAccountId','OpenchannelQueueId','OpenchannelInteractionId','team_has_openchannel_queues','ChatProactiveAction','ProactiveActions','Agent','Queue','ChatQueueId','Website','ChatInteractionId','chat_interaction_has_tags','user_has_chat_interactions','ChatOfflineMessageId','team_has_chat_queues','ChatGroupId','CmContactId','HopperHistories','CmCompany','Company','cm_contact_has_tags','CmHopperAdditionalPhone','AdditionalPhones','CmHopperId','Campaign','OwnerId','CampaignId','All','OneAll','OneAny','Actions','ParentId','Intervals','MailApplications','ChatApplications','FaxApplications','SmsApplications','DefaultReportId','CustomReportId','openchannel_interaction_has_tags','whatsapp_interaction_has_tags','CmContactHasItem','ItemType','ItemTypeId','Hopper','AllConditions','AllCondition','TriggerAllId','AnyConditions','AnyCondition','TriggerAnyId','AnalyticCustomReport','Fields','MetricId','Configurations','Subjects','DescriptionId','FieldId','AccountId','Subject','SubjectId','Description','Field','SugarcrmField','Descriptions','VariableId','DeskAccount','ZendeskConfiguration','int_zendesk_configuration_has_tags','FreshdeskAccount','FreshdeskConfiguration','int_freshdesk_configuration_has_tags','VtigerAccount','ServicenowField','ToId','JscriptyQuestionReport','JscriptyProject','ProjectId','MailQueues','OpenchannelQueues','team_has_whatsapp_queues','SquareProjectId','campaigns_has_cm_lists','campaigns_has_cm_blacklists','MailTransferReport','FromMailAccountId','FromAccount','FromAgent','ToUserId','ToAgent','ToMailAccountId','ToAccount','FromChatWebsiteId','FromUserId','ToChatQueueId','ToChatWebsiteId','FromFaxAccountId','ToFaxQueueId','ToQueue','FromSmsAccountId','CmCustomField','CustomFields','voice_queues_has_cm_lists','userProfileId','UserProfileSections','Resources','sectionId','WhatsappAccountId','WhatsappInteractionId','WhatsappTransferReport','FromWhatsappAccountId','ToWhatsappAccountId','ToQueueId','UserSetting','user','../config/environment','sequelize','lodash','motion2','xcall','xC@LL1234','127.0.0.1','utf8mb4','name','utf8','defaultsDeep','mysql','username','password','options','database','sequelizeHistory','User','import','VoiceChanSpy','../api/voiceChanSpy/voiceChanSpy.model','../api/voiceContext/voiceContext.model','VoiceExtension','../api/voiceExtension/voiceExtension.model','VoiceMusicOnHold','../api/voiceMusicOnHold/voiceMusicOnHold.model','VoiceQueue','../api/voiceQueue/voiceQueue.model','ScreenRecording','../api/screenRecording/screenRecording.model','../api/voiceMail/voiceMail.model','VoiceMailMessage','../api/voiceMailMessage/voiceMailMessage.model','../api/voiceCallReport/voiceCallReport.model','VoiceDialReport','../api/voiceDialReport/voiceDialReport.model','../api/voiceAgentReport/voiceAgentReport.model','VoiceQueueReport','../api/voiceQueueReport/voiceQueueReport.model','MemberReport','Trunk','../api/trunk/trunk.model','../api/voiceTransferReport/voiceTransferReport.model','UserVoiceQueueRt','../api/userVoiceQueueRt/userVoiceQueueRt.model','UserVoiceQueue','../api/userVoiceQueue/userVoiceQueue.model','../api/userChatQueue/userChatQueue.model','UserMailQueue','../api/userMailQueue/userMailQueue.model','UserFaxQueue','../api/userFaxQueue/userFaxQueue.model','UserSmsQueue','UserOpenchannelQueue','../api/userOpenchannelQueue/userOpenchannelQueue.model','UserWhatsappQueue','../api/userWhatsappQueue/userWhatsappQueue.model','MailServerIn','../api/mailServerOut/mailServerOut.model','MailAccount','MailQueue','MailSubstatus','MailMessage','../api/mailMessage/mailMessage.model','../api/mailApplication/mailApplication.model','../api/mailQueueReport/mailQueueReport.model','../api/dashboard/dashboard.model','DashboardItem','../api/dashboardItem/dashboardItem.model','FaxAccount','../api/faxAccount/faxAccount.model','FaxApplication','../api/faxApplication/faxApplication.model','../api/faxInteraction/faxInteraction.model','FaxMessage','../api/faxMessage/faxMessage.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/smsQueue/smsQueue.model','OpenchannelAccount','../api/openchannelAccount/openchannelAccount.model','OpenchannelApplication','../api/openchannelApplication/openchannelApplication.model','OpenchannelInteraction','OpenchannelMessage','../api/openchannelQueue/openchannelQueue.model','ChatWebsite','../api/chatWebsite/chatWebsite.model','OpenchannelQueueReport','ChatApplication','ChatInteraction','ChatMessage','ChatOfflineMessage','ChatQueue','ChatGroup','../api/chatGroup/chatGroup.model','../api/chatProactiveAction/chatProactiveAction.model','../api/cmCompany/cmCompany.model','../api/cmContact/cmContact.model','CmHopper','../api/cmHopper/cmHopper.model','CmHopperBlack','../api/cmHopperBlack/cmHopperBlack.model','CmHopperFinal','../api/cmHopperFinal/cmHopperFinal.model','ReportAgentPreview','Action','../api/action/action.model','Automation','../api/automation/automation.model','../api/cannedAnswer/cannedAnswer.model','../api/disposition/disposition.model','Condition','../api/condition/condition.model','../api/interval/interval.model','Pause','../api/pause/pause.model','Cdr','../api/cdr/cdr.model','../api/voiceQueuesLog/voiceQueuesLog.model','Schedule','../api/schedule/schedule.model','Sound','../api/sound/sound.model','Tag','../api/tag/tag.model','ContactItemType','../api/contactItemType/contactItemType.model','../api/cmContactHasItem/cmContactHasItem.model','Template','../api/template/template.model','Trigger','Variable','../api/variable/variable.model','Integration','../api/integration/integration.model','../api/integrationReport/integrationReport.model','../api/analyticCustomReport/analyticCustomReport.model','AnalyticDefaultReport','../api/analyticDefaultReport/analyticDefaultReport.model','AnalyticExtractedReport','../api/analyticExtractedReport/analyticExtractedReport.model','AnalyticMetric','AnalyticFieldReport','../api/analyticFieldReport/analyticFieldReport.model','../api/analyticTreeReport/analyticTreeReport.model','SalesforceAccount','../api/intSalesforceAccount/intSalesforceAccount.model','SalesforceConfiguration','../api/intSalesforceConfiguration/intSalesforceConfiguration.model','SalesforceField','SugarcrmAccount','SugarcrmConfiguration','../api/intSugarcrmConfiguration/intSugarcrmConfiguration.model','../api/intSugarcrmField/intSugarcrmField.model','../api/intDeskAccount/intDeskAccount.model','DeskConfiguration','../api/intDeskConfiguration/intDeskConfiguration.model','DeskField','../api/intDeskField/intDeskField.model','ZohoAccount','../api/intZohoAccount/intZohoAccount.model','ZohoConfiguration','../api/intZohoConfiguration/intZohoConfiguration.model','ZohoField','ZendeskAccount','../api/intZendeskAccount/intZendeskAccount.model','../api/intZendeskConfiguration/intZendeskConfiguration.model','ZendeskField','../api/intZendeskField/intZendeskField.model','../api/intFreshdeskConfiguration/intFreshdeskConfiguration.model','FreshdeskField','../api/intFreshdeskField/intFreshdeskField.model','../api/intVtigerAccount/intVtigerAccount.model','VtigerConfiguration','VtigerField','ServicenowAccount','../api/intServicenowAccount/intServicenowAccount.model','ServicenowConfiguration','../api/intServicenowConfiguration/intServicenowConfiguration.model','Dynamics365Account','Dynamics365Configuration','../api/intDynamics365Configuration/intDynamics365Configuration.model','Dynamics365Field','../api/intDynamics365Field/intDynamics365Field.model','FreshsalesAccount','../api/intFreshsalesAccount/intFreshsalesAccount.model','FreshsalesConfiguration','../api/intFreshsalesConfiguration/intFreshsalesConfiguration.model','FreshsalesField','../api/intFreshsalesField/intFreshsalesField.model','../api/network/network.model','ChatQueueReport','../api/chatQueueReport/chatQueueReport.model','ChatInternalMessage','JscriptyAnswerReport','../api/jscriptyAnswerReport/jscriptyAnswerReport.model','../api/jscriptyQuestionReport/jscriptyQuestionReport.model','JscriptySessionReport','../api/jscriptySessionReport/jscriptySessionReport.model','SmsQueueReport','../api/smsQueueReport/smsQueueReport.model','SquareReport','../api/squareReport/squareReport.model','SquareDetailsReport','../api/squareReportDetail/squareReportDetail.model','../api/jscriptyProject/jscriptyProject.model','Setting','../api/setting/setting.model','../api/squareOdbc/squareOdbc.model','SquareProject'];(function(_0x2de0a7,_0x38d3e7){var _0x429437=function(_0x23c148){while(--_0x23c148){_0x2de0a7['push'](_0x2de0a7['shift']());}};_0x429437(++_0x38d3e7);}(_0xa9e0,0x123));var _0x0a9e=function(_0x298ed3,_0x4ab5e1){_0x298ed3=_0x298ed3-0x0;var _0x5aad28=_0xa9e0[_0x298ed3];return _0x5aad28;};'use strict';var config=require(_0x0a9e('0x0'));var Sequelize=require(_0x0a9e('0x1'));var _=require(_0x0a9e('0x2'));var jstz=require('jstz');var timezone=jstz['determine']();config[_0x0a9e('0x1')]=_['defaultsDeep'](config[_0x0a9e('0x1')],{'database':_0x0a9e('0x3'),'username':_0x0a9e('0x4'),'password':_0x0a9e('0x5'),'options':{'host':_0x0a9e('0x6'),'port':0xcea,'dialect':'mysql','dialectOptions':{'charset':_0x0a9e('0x7')},'logging':![],'timezone':timezone[_0x0a9e('0x8')](),'define':{'charset':_0x0a9e('0x9'),'collate':'utf8_general_ci'}}});config['sequelizeHistory']=_[_0x0a9e('0xa')](config['sequelizeHistory'],{'database':'motion2','username':_0x0a9e('0x4'),'password':_0x0a9e('0x5'),'options':{'host':_0x0a9e('0x6'),'port':0xcea,'dialect':_0x0a9e('0xb'),'dialectOptions':{'charset':_0x0a9e('0x7')},'logging':![],'timezone':timezone[_0x0a9e('0x8')](),'define':{'charset':'utf8','collate':'utf8_general_ci'}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config['sequelize']['database'],config[_0x0a9e('0x1')][_0x0a9e('0xc')],config[_0x0a9e('0x1')][_0x0a9e('0xd')],config[_0x0a9e('0x1')][_0x0a9e('0xe')])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config['sequelizeHistory'][_0x0a9e('0xf')],config[_0x0a9e('0x10')][_0x0a9e('0xc')],config[_0x0a9e('0x10')][_0x0a9e('0xd')],config[_0x0a9e('0x10')]['options'])};db[_0x0a9e('0x11')]=db['sequelize'][_0x0a9e('0x12')]('../api/user/user.model');db[_0x0a9e('0x13')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x14'));db['VoiceContext']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x15'));db[_0x0a9e('0x16')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x17'));db[_0x0a9e('0x18')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x19'));db[_0x0a9e('0x1a')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x1b'));db['VoiceRecording']=db[_0x0a9e('0x1')]['import']('../api/voiceRecording/voiceRecording.model');db[_0x0a9e('0x1c')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x1d'));db['VoiceMail']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x1e'));db[_0x0a9e('0x1f')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x20'));db['VoiceCallReport']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x21'));db[_0x0a9e('0x22')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x23'));db['VoiceAgentReport']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x24'));db[_0x0a9e('0x25')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x26'));db[_0x0a9e('0x27')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/memberReport/memberReport.model');db[_0x0a9e('0x28')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x29'));db['VoiceTransferReport']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x2a'));db[_0x0a9e('0x2b')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x2c'));db[_0x0a9e('0x2d')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x2e'));db['UserChatQueue']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x2f'));db[_0x0a9e('0x30')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x31'));db[_0x0a9e('0x32')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x33'));db[_0x0a9e('0x34')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/userSmsQueue/userSmsQueue.model');db[_0x0a9e('0x35')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x36'));db[_0x0a9e('0x37')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x38'));db[_0x0a9e('0x39')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/mailServerIn/mailServerIn.model');db['MailServerOut']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x3a'));db[_0x0a9e('0x3b')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/mailAccount/mailAccount.model');db[_0x0a9e('0x3c')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/mailQueue/mailQueue.model');db[_0x0a9e('0x3d')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/mailSubstatus/mailSubstatus.model');db['MailInteraction']=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/mailInteraction/mailInteraction.model');db[_0x0a9e('0x3e')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x3f'));db['MailApplication']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x40'));db['MailQueueReport']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x41'));db['Dashboard']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x42'));db[_0x0a9e('0x43')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x44'));db[_0x0a9e('0x45')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x46'));db[_0x0a9e('0x47')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x48'));db['FaxInteraction']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x49'));db[_0x0a9e('0x4a')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x4b'));db[_0x0a9e('0x4c')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x4d'));db[_0x0a9e('0x4e')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x4f'));db[_0x0a9e('0x50')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x51'));db[_0x0a9e('0x52')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/smsApplication/smsApplication.model');db[_0x0a9e('0x53')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x54'));db[_0x0a9e('0x55')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x56'));db[_0x0a9e('0x57')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x58'));db[_0x0a9e('0x59')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x5a'));db[_0x0a9e('0x5b')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x5c'));db[_0x0a9e('0x5d')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/openchannelInteraction/openchannelInteraction.model');db[_0x0a9e('0x5e')]=db[_0x0a9e('0x1')]['import']('../api/openchannelMessage/openchannelMessage.model');db['OpenchannelQueue']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x5f'));db[_0x0a9e('0x60')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x61'));db[_0x0a9e('0x62')]=db['sequelize']['import']('../api/openchannelQueueReport/openchannelQueueReport.model');db[_0x0a9e('0x63')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/chatApplication/chatApplication.model');db[_0x0a9e('0x64')]=db[_0x0a9e('0x1')]['import']('../api/chatInteraction/chatInteraction.model');db[_0x0a9e('0x65')]=db['sequelize'][_0x0a9e('0x12')]('../api/chatMessage/chatMessage.model');db[_0x0a9e('0x66')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/chatOfflineMessage/chatOfflineMessage.model');db[_0x0a9e('0x67')]=db[_0x0a9e('0x1')]['import']('../api/chatQueue/chatQueue.model');db[_0x0a9e('0x68')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x69'));db['ChatProactiveAction']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x6a'));db['CmCompany']=db['sequelize']['import'](_0x0a9e('0x6b'));db['CmContact']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x6c'));db[_0x0a9e('0x6d')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x6e'));db[_0x0a9e('0x6f')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x70'));db[_0x0a9e('0x71')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x72'));db['CmHopperHistory']=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/cmHopperHistory/cmHopperHistory.model');db[_0x0a9e('0x73')]=db['sequelize'][_0x0a9e('0x12')]('../api/reportAgentPreview/reportAgentPreview.model');db['CmCustomField']=db['sequelize'][_0x0a9e('0x12')]('../api/cmCustomField/cmCustomField.model');db[_0x0a9e('0x74')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x75'));db[_0x0a9e('0x76')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x77'));db['CannedAnswer']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x78'));db['Disposition']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x79'));db[_0x0a9e('0x7a')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x7b'));db['Interval']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x7c'));db[_0x0a9e('0x7d')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x7e'));db[_0x0a9e('0x7f')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x80'));db['VoiceQueuesLog']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x81'));db[_0x0a9e('0x82')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x83'));db[_0x0a9e('0x84')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x85'));db[_0x0a9e('0x86')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x87'));db[_0x0a9e('0x88')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x89'));db['CmContactHasItem']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x8a'));db['CmHopperAdditionalPhone']=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.model');db[_0x0a9e('0x8b')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x8c'));db[_0x0a9e('0x8d')]=db['sequelize']['import']('../api/trigger/trigger.model');db[_0x0a9e('0x8e')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x8f'));db[_0x0a9e('0x90')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x91'));db['IntegrationReport']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x92'));db['AnalyticCustomReport']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x93'));db[_0x0a9e('0x94')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x95'));db[_0x0a9e('0x96')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x97'));db[_0x0a9e('0x98')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/analyticMetric/analyticMetric.model');db[_0x0a9e('0x99')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x9a'));db['AnalyticTreeReport']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x9b'));db[_0x0a9e('0x9c')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x9d'));db[_0x0a9e('0x9e')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x9f'));db[_0x0a9e('0xa0')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/intSalesforceField/intSalesforceField.model');db[_0x0a9e('0xa1')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/intSugarcrmAccount/intSugarcrmAccount.model');db[_0x0a9e('0xa2')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xa3'));db['SugarcrmField']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xa4'));db['DeskAccount']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xa5'));db[_0x0a9e('0xa6')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xa7'));db[_0x0a9e('0xa8')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xa9'));db[_0x0a9e('0xaa')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xab'));db[_0x0a9e('0xac')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xad'));db[_0x0a9e('0xae')]=db['sequelize'][_0x0a9e('0x12')]('../api/intZohoField/intZohoField.model');db[_0x0a9e('0xaf')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xb0'));db['ZendeskConfiguration']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xb1'));db[_0x0a9e('0xb2')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xb3'));db['FreshdeskAccount']=db['sequelize'][_0x0a9e('0x12')]('../api/intFreshdeskAccount/intFreshdeskAccount.model');db['FreshdeskConfiguration']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xb4'));db[_0x0a9e('0xb5')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xb6'));db['VtigerAccount']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xb7'));db[_0x0a9e('0xb8')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/intVtigerConfiguration/intVtigerConfiguration.model');db[_0x0a9e('0xb9')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/intVtigerField/intVtigerField.model');db[_0x0a9e('0xba')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xbb'));db[_0x0a9e('0xbc')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xbd'));db['ServicenowField']=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/intServicenowField/intServicenowField.model');db[_0x0a9e('0xbe')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/intDynamics365Account/intDynamics365Account.model');db[_0x0a9e('0xbf')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xc0'));db[_0x0a9e('0xc1')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xc2'));db[_0x0a9e('0xc3')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xc4'));db[_0x0a9e('0xc5')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xc6'));db[_0x0a9e('0xc7')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xc8'));db[_0x0a9e('0x90')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x91'));db['Network']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xc9'));db[_0x0a9e('0xca')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xcb'));db[_0x0a9e('0xcc')]=db['sequelize'][_0x0a9e('0x12')]('../api/chatInternalMessage/chatInternalMessage.model');db[_0x0a9e('0xcd')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xce'));db['JscriptyQuestionReport']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xcf'));db[_0x0a9e('0xd0')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xd1'));db[_0x0a9e('0xd2')]=db['sequelize']['import'](_0x0a9e('0xd3'));db[_0x0a9e('0xd4')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xd5'));db[_0x0a9e('0xd6')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xd7'));db['JscriptyProject']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xd8'));db[_0x0a9e('0xd9')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xda'));db['SquareOdbc']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xdb'));db[_0x0a9e('0xdc')]=db[_0x0a9e('0x1')]['import']('../api/squareProject/squareProject.model');db[_0x0a9e('0xdd')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xde'));db[_0x0a9e('0xdf')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xe0'));db['Team']=db['sequelize'][_0x0a9e('0x12')]('../api/team/team.model');db[_0x0a9e('0xe1')]=db['sequelize'][_0x0a9e('0x12')]('../api/license/license.model');db['Campaign']=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/campaign/campaign.model');db[_0x0a9e('0xe2')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xe3'));db[_0x0a9e('0xe4')]=db['sequelize']['import'](_0x0a9e('0xe5'));db[_0x0a9e('0xe6')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xe7'));db['MailTransferReport']=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/mailTransferReport/mailTransferReport.model');db[_0x0a9e('0xe8')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xe9'));db[_0x0a9e('0xea')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xeb'));db[_0x0a9e('0xec')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xed'));db[_0x0a9e('0xee')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xef'));db['CmList']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xf0'));db[_0x0a9e('0xf1')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/voicePrefix/voicePrefix.model');db[_0x0a9e('0xf2')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/userProfile/userProfile.model');db[_0x0a9e('0xf3')]=db['sequelize'][_0x0a9e('0x12')]('../api/userProfileSection/userProfileSection.model');db[_0x0a9e('0xf4')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/userProfileResource/userProfileResource.model');db[_0x0a9e('0xf5')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xf6'));db[_0x0a9e('0xf7')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xf8'));db[_0x0a9e('0xf9')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xfa'));db[_0x0a9e('0xfb')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xfc'));db[_0x0a9e('0xfd')]=db[_0x0a9e('0x1')]['import']('../api/whatsappMessage/whatsappMessage.model');db[_0x0a9e('0xfe')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xff'));db['WhatsappTransferReport']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x100'));db[_0x0a9e('0x101')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x102'));db[_0x0a9e('0x103')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x104'));db[_0x0a9e('0x105')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x106'));db[_0x0a9e('0x107')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x108'));db[_0x0a9e('0x109')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x10a'));db['UserSetting']=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/user-setting/user-setting.model');db[_0x0a9e('0x11')][_0x0a9e('0x10b')](db[_0x0a9e('0x10c')],{'as':'VoiceMail','onDelete':'cascade','foreignKey':'UserId'});db[_0x0a9e('0x11')][_0x0a9e('0x10b')](db['UserSetting'],{'as':_0x0a9e('0x10d'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x10f')});db['User'][_0x0a9e('0x110')](db[_0x0a9e('0x111')],{'as':_0x0a9e('0x112'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x2b')],{'as':_0x0a9e('0x113'),'foreignKey':_0x0a9e('0x10f')});db['User'][_0x0a9e('0x110')](db['VoiceExtension'],{'as':_0x0a9e('0x114'),'onDelete':_0x0a9e('0x10e'),'hooks':!![]});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x71')],{'as':_0x0a9e('0x115'),'foreignKey':'UserId'});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x116')],{'as':_0x0a9e('0x117'),'foreignKey':'UserId'});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x73')],{'as':_0x0a9e('0x73'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x5d')],{'as':_0x0a9e('0x118'),'foreignKey':_0x0a9e('0x10f')});db['User'][_0x0a9e('0x110')](db[_0x0a9e('0x64')],{'as':_0x0a9e('0x119'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x53')],{'as':_0x0a9e('0x11a'),'foreignKey':'UserId'});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x11b')],{'as':'FaxInteractions','foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x11c')],{'as':_0x0a9e('0x11d'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0xfb')],{'as':_0x0a9e('0x11e'),'foreignKey':'UserId'});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0xf5')],{'as':_0x0a9e('0x11f'),'foreignKey':_0x0a9e('0x120')});db[_0x0a9e('0x11')]['belongsTo'](db[_0x0a9e('0xf2')],{'as':'UserProfile','foreignKey':'userProfileId'});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0x68')],{'as':_0x0a9e('0x122'),'through':_0x0a9e('0x123')});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x125'),'through':_0x0a9e('0x126')});db[_0x0a9e('0x11')]['belongsToMany'](db['CmList'],{'as':_0x0a9e('0x127'),'through':_0x0a9e('0x128')});db[_0x0a9e('0x11')]['belongsToMany'](db[_0x0a9e('0x129')],{'through':_0x0a9e('0x12a')});db[_0x0a9e('0x11')]['belongsToMany'](db[_0x0a9e('0x11c')],{'as':_0x0a9e('0x11d'),'through':_0x0a9e('0x12b')});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0x64')],{'as':_0x0a9e('0x119'),'through':'user_has_chat_interactions'});db['User']['belongsToMany'](db[_0x0a9e('0x11b')],{'as':_0x0a9e('0x12c'),'through':_0x0a9e('0x12d')});db[_0x0a9e('0x11')]['belongsToMany'](db[_0x0a9e('0x53')],{'as':'SmsInteractions','through':_0x0a9e('0x12e')});db[_0x0a9e('0x11')][_0x0a9e('0x121')](db['OpenchannelInteraction'],{'as':_0x0a9e('0x118'),'through':_0x0a9e('0x12f')});db[_0x0a9e('0x11')]['belongsToMany'](db[_0x0a9e('0xfb')],{'as':'WhatsappInteractions','through':_0x0a9e('0x130')});db['User'][_0x0a9e('0x121')](db['VoiceQueue'],{'as':_0x0a9e('0x131'),'through':_0x0a9e('0x2d'),'required':![]});db[_0x0a9e('0x11')][_0x0a9e('0x121')](db[_0x0a9e('0xf1')],{'as':_0x0a9e('0x132'),'through':_0x0a9e('0x109'),'required':![]});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0x3c')],{'as':'MailQueues','through':_0x0a9e('0x30'),'required':![]});db[_0x0a9e('0x11')]['belongsToMany'](db[_0x0a9e('0x67')],{'as':_0x0a9e('0x133'),'through':_0x0a9e('0x134'),'required':![],'hooks':!![]});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0x4c')],{'as':_0x0a9e('0x135'),'through':_0x0a9e('0x32'),'required':![]});db[_0x0a9e('0x11')][_0x0a9e('0x121')](db[_0x0a9e('0x57')],{'as':_0x0a9e('0x136'),'through':_0x0a9e('0x34'),'required':![]});db[_0x0a9e('0x11')]['belongsToMany'](db[_0x0a9e('0x137')],{'as':'OpenchannelQueues','through':_0x0a9e('0x35'),'required':![]});db[_0x0a9e('0x11')][_0x0a9e('0x121')](db[_0x0a9e('0x101')],{'as':_0x0a9e('0x138'),'through':_0x0a9e('0x37'),'required':![]});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0x139')],{'through':_0x0a9e('0x128')});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0x60')],{'as':_0x0a9e('0x13a'),'through':_0x0a9e('0x13b')});db[_0x0a9e('0x11')][_0x0a9e('0x121')](db[_0x0a9e('0x45')],{'as':'FaxAccounts','through':_0x0a9e('0x13c')});db[_0x0a9e('0x11')][_0x0a9e('0x121')](db[_0x0a9e('0x3b')],{'as':_0x0a9e('0x13d'),'through':_0x0a9e('0x13e')});db[_0x0a9e('0x11')]['belongsToMany'](db['OpenchannelAccount'],{'as':_0x0a9e('0x13f'),'through':_0x0a9e('0x140')});db[_0x0a9e('0x11')][_0x0a9e('0x121')](db[_0x0a9e('0x50')],{'as':_0x0a9e('0x141'),'through':_0x0a9e('0x142')});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0xf7')],{'as':_0x0a9e('0x143'),'through':_0x0a9e('0x144')});db[_0x0a9e('0x13')][_0x0a9e('0x110')](db[_0x0a9e('0x16')],{'as':'SpiedAgents','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x145')});db[_0x0a9e('0x146')]['hasMany'](db[_0x0a9e('0x16')],{'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x16')][_0x0a9e('0x110')](db['VoiceExtension'],{'as':_0x0a9e('0x147'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x18')][_0x0a9e('0x121')](db[_0x0a9e('0x84')],{'as':_0x0a9e('0x148'),'through':_0x0a9e('0x149')});db[_0x0a9e('0x1a')]['hasMany'](db[_0x0a9e('0x2b')],{'as':_0x0a9e('0x14a'),'foreignKey':_0x0a9e('0x14b')});db[_0x0a9e('0x1a')]['hasMany'](db['CmHopper'],{'as':_0x0a9e('0x14c'),'foreignKey':_0x0a9e('0x14b')});db[_0x0a9e('0x1a')]['hasMany'](db[_0x0a9e('0x71')],{'as':_0x0a9e('0x115'),'foreignKey':'VoiceQueueId'});db[_0x0a9e('0x1a')]['hasMany'](db[_0x0a9e('0x116')],{'as':'HopperHistories','foreignKey':'VoiceQueueId'});db['VoiceQueue'][_0x0a9e('0x110')](db[_0x0a9e('0x73')],{'as':_0x0a9e('0x73'),'foreignKey':_0x0a9e('0x14b')});db[_0x0a9e('0x1a')][_0x0a9e('0x110')](db['CmHopperBlack'],{'as':_0x0a9e('0x14d'),'foreignKey':_0x0a9e('0x14b')});db[_0x0a9e('0x1a')][_0x0a9e('0x110')](db[_0x0a9e('0xd0')],{'as':_0x0a9e('0x14e'),'foreignKey':_0x0a9e('0x14b')});db['VoiceQueue']['belongsTo'](db[_0x0a9e('0x28')],{'as':'Trunk','foreignKey':_0x0a9e('0x14f')});db[_0x0a9e('0x1a')][_0x0a9e('0x150')](db[_0x0a9e('0x28')],{'as':_0x0a9e('0x151'),'foreignKey':_0x0a9e('0x152')});db['VoiceQueue'][_0x0a9e('0x150')](db['Interval'],{'as':'Interval','foreignKey':_0x0a9e('0x153')});db['VoiceQueue'][_0x0a9e('0x150')](db['Pause'],{'as':'mandatoryDispositionPause','foreignKey':_0x0a9e('0x154')});db['VoiceQueue'][_0x0a9e('0x121')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x127'),'through':'voice_queues_has_cm_lists'});db[_0x0a9e('0x1a')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':'Agents','through':'UserVoiceQueue'});db[_0x0a9e('0x1a')][_0x0a9e('0x121')](db[_0x0a9e('0x129')],{'as':_0x0a9e('0x155'),'through':_0x0a9e('0x105')});db[_0x0a9e('0x1a')][_0x0a9e('0x121')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x156'),'through':_0x0a9e('0x157')});db['VoiceRecording']['belongsTo'](db['User'],{'as':_0x0a9e('0x11'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x1c')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x11'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x10c')]['hasMany'](db['VoiceMailMessage'],{'as':_0x0a9e('0x158'),'onDelete':_0x0a9e('0x10e'),'foreignKey':'mailboxuser','sourceKey':_0x0a9e('0x159')});db[_0x0a9e('0x1f')][_0x0a9e('0x150')](db[_0x0a9e('0x10c')],{'foreignKey':_0x0a9e('0x15a'),'targetKey':_0x0a9e('0x159')});db[_0x0a9e('0x15b')][_0x0a9e('0x110')](db[_0x0a9e('0x25')],{'as':_0x0a9e('0x15c'),'foreignKey':_0x0a9e('0x15d'),'constraints':![]});db[_0x0a9e('0x15b')]['hasMany'](db[_0x0a9e('0x15e')],{'as':_0x0a9e('0x15f'),'foreignKey':_0x0a9e('0x15d'),'constraints':![]});db[_0x0a9e('0x15b')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x11'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x15b')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':'ContactId'});db['MailServerIn'][_0x0a9e('0x150')](db[_0x0a9e('0x3b')],{'as':_0x0a9e('0x3b'),'foreignKey':_0x0a9e('0x161')});db[_0x0a9e('0x39')][_0x0a9e('0x150')](db[_0x0a9e('0x103')],{'as':'CloudProvider','foreignKey':_0x0a9e('0x162'),'onDelete':'restrict'});db[_0x0a9e('0x163')][_0x0a9e('0x150')](db[_0x0a9e('0x3b')],{'as':_0x0a9e('0x3b'),'foreignKey':_0x0a9e('0x161')});db[_0x0a9e('0x163')][_0x0a9e('0x150')](db[_0x0a9e('0x103')],{'as':_0x0a9e('0x103'),'foreignKey':_0x0a9e('0x162'),'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x3b')][_0x0a9e('0x10b')](db[_0x0a9e('0x39')],{'as':_0x0a9e('0x165'),'onDelete':_0x0a9e('0x10e')});db['MailAccount']['hasOne'](db[_0x0a9e('0x163')],{'as':_0x0a9e('0x166'),'onDelete':'cascade'});db['MailAccount'][_0x0a9e('0x110')](db[_0x0a9e('0x167')],{'as':_0x0a9e('0x168'),'foreignKey':'MailAccountId','onDelete':_0x0a9e('0x10e')});db['MailAccount'][_0x0a9e('0x110')](db['CannedAnswer'],{'as':_0x0a9e('0x169'),'foreignKey':'MailAccountId'});db[_0x0a9e('0x3b')][_0x0a9e('0x110')](db[_0x0a9e('0x3e')],{'as':'Messages','foreignKey':_0x0a9e('0x161')});db['MailAccount']['hasMany'](db[_0x0a9e('0x11c')],{'as':_0x0a9e('0x16a')});db[_0x0a9e('0x3b')][_0x0a9e('0x110')](db[_0x0a9e('0x16b')],{'as':_0x0a9e('0x147'),'foreignKey':_0x0a9e('0x161'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x3b')][_0x0a9e('0x150')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x3b')][_0x0a9e('0x150')](db[_0x0a9e('0x8b')],{'as':_0x0a9e('0x8b'),'foreignKey':_0x0a9e('0x16e')});db[_0x0a9e('0x3b')]['belongsTo'](db[_0x0a9e('0x7d')],{'as':_0x0a9e('0x16f'),'foreignKey':_0x0a9e('0x154')});db[_0x0a9e('0x3b')]['belongsToMany'](db['User'],{'as':'Agents','through':_0x0a9e('0x13e')});db['MailQueue'][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':_0x0a9e('0x30')});db[_0x0a9e('0x3c')][_0x0a9e('0x121')](db[_0x0a9e('0x129')],{'through':_0x0a9e('0x171'),'as':_0x0a9e('0x155')});db[_0x0a9e('0x11c')]['hasMany'](db[_0x0a9e('0x3e')],{'as':'Messages','onDelete':_0x0a9e('0x10e'),'foreignKey':'MailInteractionId'});db[_0x0a9e('0x11c')][_0x0a9e('0x150')](db[_0x0a9e('0x3b')],{'as':'Account','foreignKey':_0x0a9e('0x161')});db[_0x0a9e('0x11c')]['belongsTo'](db['CmContact'],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x11c')]['belongsTo'](db['User'],{'as':'Owner','foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x11c')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'through':_0x0a9e('0x173'),'as':_0x0a9e('0x174')});db[_0x0a9e('0x11c')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'through':_0x0a9e('0x173'),'as':_0x0a9e('0x175')});db[_0x0a9e('0x11c')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x176'),'through':_0x0a9e('0x12b'),'foreignKey':_0x0a9e('0x177')});db[_0x0a9e('0x3e')]['hasMany'](db[_0x0a9e('0xe4')],{'as':_0x0a9e('0x178'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x3e')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':'User'});db[_0x0a9e('0x3e')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'onDelete':_0x0a9e('0x10e'),'as':_0x0a9e('0x160')});db[_0x0a9e('0x3e')][_0x0a9e('0x150')](db[_0x0a9e('0x11c')],{'as':_0x0a9e('0x179'),'foreignKey':'MailInteractionId'});db['MailMessage'][_0x0a9e('0x150')](db[_0x0a9e('0x3b')],{'as':'Account','foreignKey':_0x0a9e('0x161')});db[_0x0a9e('0x3e')]['belongsTo'](db[_0x0a9e('0x60')],{'as':'ChatWebsite','foreignKey':_0x0a9e('0x17a')});db[_0x0a9e('0x3e')]['belongsTo'](db[_0x0a9e('0x66')],{'as':_0x0a9e('0x66'),'foreignKey':'ChatOfflineMessageId'});db[_0x0a9e('0x16b')][_0x0a9e('0x150')](db['User'],{'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x16b')][_0x0a9e('0x150')](db[_0x0a9e('0x3c')],{'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x16b')]['belongsTo'](db[_0x0a9e('0x3b')],{'onDelete':_0x0a9e('0x164')});db['MailApplication'][_0x0a9e('0x150')](db[_0x0a9e('0x17b')],{'onDelete':_0x0a9e('0x164'),'foreignKey':_0x0a9e('0x153')});db[_0x0a9e('0x16b')][_0x0a9e('0x150')](db[_0x0a9e('0x86')],{'onDelete':'restrict','foreignKey':'TagId'});db['MailQueueReport']['belongsTo'](db['MailAccount'],{});db[_0x0a9e('0x17c')][_0x0a9e('0x150')](db['CmList'],{'as':'List','foreignKey':_0x0a9e('0x16d')});db['MailQueueReport'][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x17c')][_0x0a9e('0x150')](db['MailInteraction'],{});db[_0x0a9e('0x17c')][_0x0a9e('0x150')](db['MailMessage'],{});db[_0x0a9e('0x17c')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{});db[_0x0a9e('0x17c')][_0x0a9e('0x150')](db[_0x0a9e('0x3c')],{});db[_0x0a9e('0x17d')]['hasMany'](db[_0x0a9e('0x43')],{'as':'Items','onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x45')]['hasMany'](db[_0x0a9e('0x167')],{'as':_0x0a9e('0x168'),'foreignKey':'FaxAccountId','onDelete':_0x0a9e('0x10e')});db['FaxAccount'][_0x0a9e('0x110')](db[_0x0a9e('0x17e')],{'as':'Answers','foreignKey':_0x0a9e('0x17f')});db['FaxAccount'][_0x0a9e('0x110')](db[_0x0a9e('0x11b')],{'as':_0x0a9e('0x16a')});db[_0x0a9e('0x45')][_0x0a9e('0x110')](db[_0x0a9e('0x47')],{'as':_0x0a9e('0x147'),'foreignKey':'FaxAccountId','onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x45')][_0x0a9e('0x110')](db[_0x0a9e('0x16')],{'as':_0x0a9e('0x180'),'onDelete':'cascade'});db[_0x0a9e('0x45')]['hasMany'](db['FaxMessage'],{'as':_0x0a9e('0x158')});db['FaxAccount'][_0x0a9e('0x150')](db[_0x0a9e('0x28')],{'as':'Trunk'});db[_0x0a9e('0x45')][_0x0a9e('0x150')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x45')][_0x0a9e('0x150')](db[_0x0a9e('0x7d')],{'as':_0x0a9e('0x16f'),'foreignKey':'mandatoryDispositionPauseId'});db[_0x0a9e('0x45')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':'user_has_fax_accounts'});db[_0x0a9e('0x47')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'onDelete':'restrict'});db[_0x0a9e('0x47')][_0x0a9e('0x150')](db[_0x0a9e('0x4c')],{'onDelete':'restrict'});db[_0x0a9e('0x47')]['belongsTo'](db[_0x0a9e('0x45')],{'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x47')][_0x0a9e('0x150')](db[_0x0a9e('0x86')],{'onDelete':_0x0a9e('0x164'),'foreignKey':_0x0a9e('0x181')});db['FaxInteraction'][_0x0a9e('0x110')](db[_0x0a9e('0x4a')],{'as':_0x0a9e('0x158'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x182')});db[_0x0a9e('0x11b')][_0x0a9e('0x150')](db[_0x0a9e('0x45')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x17f')});db[_0x0a9e('0x11b')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x11b')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x184'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x11b')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'through':'fax_interaction_has_tags','as':_0x0a9e('0x174')});db[_0x0a9e('0x11b')][_0x0a9e('0x121')](db['Tag'],{'through':_0x0a9e('0x185'),'as':'ThroughTags'});db[_0x0a9e('0x11b')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x176'),'through':_0x0a9e('0x12d'),'foreignKey':_0x0a9e('0x182')});db[_0x0a9e('0x4a')][_0x0a9e('0x150')](db['User'],{'onDelete':_0x0a9e('0x10e'),'as':_0x0a9e('0x11')});db['FaxMessage'][_0x0a9e('0x150')](db[_0x0a9e('0x11b')],{'as':_0x0a9e('0x179'),'foreignKey':'FaxInteractionId'});db[_0x0a9e('0x4a')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'onDelete':_0x0a9e('0x10e'),'as':'Contact'});db[_0x0a9e('0x4a')][_0x0a9e('0x150')](db[_0x0a9e('0xe4')],{'as':_0x0a9e('0xe4'),'foreignKey':_0x0a9e('0x186')});db['FaxMessage'][_0x0a9e('0x150')](db[_0x0a9e('0x45')],{'as':'Account','foreignKey':_0x0a9e('0x17f')});db[_0x0a9e('0x4c')][_0x0a9e('0x121')](db['User'],{'as':'Agents','through':_0x0a9e('0x32')});db[_0x0a9e('0x4c')][_0x0a9e('0x121')](db[_0x0a9e('0x129')],{'through':_0x0a9e('0x187'),'as':_0x0a9e('0x155')});db[_0x0a9e('0x4e')][_0x0a9e('0x150')](db['FaxAccount'],{});db['FaxQueueReport'][_0x0a9e('0x150')](db['CmList'],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x4e')][_0x0a9e('0x150')](db['CmContact'],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db['FaxQueueReport'][_0x0a9e('0x150')](db['FaxInteraction'],{});db[_0x0a9e('0x4e')][_0x0a9e('0x150')](db[_0x0a9e('0x4a')],{});db[_0x0a9e('0x4e')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{});db['FaxQueueReport'][_0x0a9e('0x150')](db['FaxQueue'],{});db[_0x0a9e('0x50')][_0x0a9e('0x110')](db[_0x0a9e('0x167')],{'as':_0x0a9e('0x168'),'foreignKey':_0x0a9e('0x188'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x50')]['hasMany'](db[_0x0a9e('0x17e')],{'as':_0x0a9e('0x169'),'foreignKey':_0x0a9e('0x188')});db[_0x0a9e('0x50')][_0x0a9e('0x110')](db['SmsMessage'],{'as':_0x0a9e('0x158'),'foreignKey':_0x0a9e('0x188')});db['SmsAccount']['hasMany'](db[_0x0a9e('0x53')],{'as':_0x0a9e('0x16a')});db[_0x0a9e('0x50')][_0x0a9e('0x110')](db[_0x0a9e('0x52')],{'as':_0x0a9e('0x147'),'foreignKey':'SmsAccountId','onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x50')][_0x0a9e('0x150')](db['CmList'],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x50')][_0x0a9e('0x150')](db['Pause'],{'as':'mandatoryDispositionPause','foreignKey':_0x0a9e('0x154')});db[_0x0a9e('0x50')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':_0x0a9e('0x142')});db[_0x0a9e('0x52')][_0x0a9e('0x150')](db['User'],{'onDelete':_0x0a9e('0x164')});db['SmsApplication'][_0x0a9e('0x150')](db[_0x0a9e('0x57')],{'onDelete':_0x0a9e('0x164')});db['SmsApplication']['belongsTo'](db[_0x0a9e('0x50')],{'onDelete':'restrict'});db[_0x0a9e('0x52')]['belongsTo'](db['Interval'],{'onDelete':_0x0a9e('0x164'),'foreignKey':_0x0a9e('0x153')});db[_0x0a9e('0x52')][_0x0a9e('0x150')](db[_0x0a9e('0x86')],{'onDelete':_0x0a9e('0x164'),'foreignKey':_0x0a9e('0x181')});db[_0x0a9e('0x53')][_0x0a9e('0x110')](db[_0x0a9e('0x55')],{'as':_0x0a9e('0x158'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x189')});db['SmsInteraction']['belongsTo'](db[_0x0a9e('0x50')],{'as':'Account','foreignKey':_0x0a9e('0x188')});db[_0x0a9e('0x53')][_0x0a9e('0x150')](db['CmContact'],{'as':'Contact','foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x53')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x184'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x53')]['belongsToMany'](db[_0x0a9e('0x86')],{'through':'sms_interaction_has_tags','as':_0x0a9e('0x174')});db[_0x0a9e('0x53')]['belongsToMany'](db[_0x0a9e('0x86')],{'through':_0x0a9e('0x18a'),'as':_0x0a9e('0x175')});db[_0x0a9e('0x53')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':'Users','through':_0x0a9e('0x12e'),'foreignKey':_0x0a9e('0x189')});db[_0x0a9e('0x55')]['belongsTo'](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x11')});db[_0x0a9e('0x55')]['belongsTo'](db[_0x0a9e('0x124')],{'onDelete':_0x0a9e('0x10e'),'as':_0x0a9e('0x160')});db[_0x0a9e('0x55')][_0x0a9e('0x150')](db[_0x0a9e('0x53')],{'onDelete':'cascade','as':'Interaction','foreignKey':_0x0a9e('0x189')});db[_0x0a9e('0x55')]['belongsTo'](db[_0x0a9e('0x50')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x188')});db[_0x0a9e('0x57')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':'Agents','through':_0x0a9e('0x34'),'foreignKey':_0x0a9e('0x18b')});db[_0x0a9e('0x57')]['belongsToMany'](db[_0x0a9e('0x129')],{'through':_0x0a9e('0x18c'),'as':_0x0a9e('0x155')});db[_0x0a9e('0x59')]['hasMany'](db['Disposition'],{'as':_0x0a9e('0x168'),'foreignKey':_0x0a9e('0x18d'),'onDelete':_0x0a9e('0x10e')});db['OpenchannelAccount'][_0x0a9e('0x110')](db[_0x0a9e('0x17e')],{'as':_0x0a9e('0x169'),'foreignKey':_0x0a9e('0x18d')});db[_0x0a9e('0x59')][_0x0a9e('0x110')](db[_0x0a9e('0x5d')],{'as':_0x0a9e('0x16a'),'foreignKey':'OpenchannelAccountId'});db['OpenchannelAccount'][_0x0a9e('0x110')](db[_0x0a9e('0x5e')],{'as':'Messages','foreignKey':_0x0a9e('0x18d')});db['OpenchannelAccount'][_0x0a9e('0x110')](db[_0x0a9e('0x5b')],{'as':'Applications','foreignKey':_0x0a9e('0x18d'),'onDelete':_0x0a9e('0x10e')});db['OpenchannelAccount'][_0x0a9e('0x150')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x59')][_0x0a9e('0x150')](db[_0x0a9e('0x7d')],{'as':'mandatoryDispositionPause','foreignKey':_0x0a9e('0x154')});db[_0x0a9e('0x59')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':_0x0a9e('0x140')});db[_0x0a9e('0x5b')]['belongsTo'](db['User'],{'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x5b')][_0x0a9e('0x150')](db['OpenchannelQueue'],{'onDelete':'restrict','foreignKey':_0x0a9e('0x18e')});db['OpenchannelApplication'][_0x0a9e('0x150')](db[_0x0a9e('0x59')],{'onDelete':_0x0a9e('0x164'),'foreignKey':_0x0a9e('0x18d')});db[_0x0a9e('0x5b')][_0x0a9e('0x150')](db[_0x0a9e('0x17b')],{'onDelete':_0x0a9e('0x164'),'foreignKey':_0x0a9e('0x153')});db['OpenchannelApplication']['belongsTo'](db[_0x0a9e('0x86')],{'onDelete':'restrict','foreignKey':_0x0a9e('0x181')});db[_0x0a9e('0x5d')][_0x0a9e('0x110')](db[_0x0a9e('0x5e')],{'as':'Messages','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x18f')});db[_0x0a9e('0x5d')]['belongsTo'](db[_0x0a9e('0x59')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x18d')});db['OpenchannelInteraction'][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x5d')][_0x0a9e('0x150')](db['User'],{'as':'Owner','foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x5d')][_0x0a9e('0x121')](db['Tag'],{'through':'openchannel_interaction_has_tags','as':_0x0a9e('0x174')});db[_0x0a9e('0x5d')][_0x0a9e('0x121')](db['Tag'],{'through':'openchannel_interaction_has_tags','as':_0x0a9e('0x175')});db[_0x0a9e('0x5d')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x176'),'through':'user_has_openchannel_interactions','foreignKey':_0x0a9e('0x18f')});db['OpenchannelMessage'][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'onDelete':'cascade','as':_0x0a9e('0x11')});db['OpenchannelMessage'][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'onDelete':_0x0a9e('0x10e'),'as':_0x0a9e('0x160')});db[_0x0a9e('0x5e')]['belongsTo'](db[_0x0a9e('0x5d')],{'onDelete':_0x0a9e('0x10e'),'as':_0x0a9e('0x179'),'foreignKey':'OpenchannelInteractionId'});db[_0x0a9e('0x5e')]['belongsTo'](db[_0x0a9e('0xe4')],{'as':_0x0a9e('0xe4'),'foreignKey':_0x0a9e('0x186')});db['OpenchannelMessage'][_0x0a9e('0x150')](db[_0x0a9e('0x59')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x18d')});db[_0x0a9e('0x137')][_0x0a9e('0x121')](db['User'],{'as':_0x0a9e('0x170'),'through':_0x0a9e('0x35'),'foreignKey':_0x0a9e('0x18e')});db[_0x0a9e('0x137')][_0x0a9e('0x121')](db[_0x0a9e('0x129')],{'through':_0x0a9e('0x190'),'as':_0x0a9e('0x155')});db['ChatWebsite'][_0x0a9e('0x110')](db[_0x0a9e('0x167')],{'as':_0x0a9e('0x168'),'foreignKey':_0x0a9e('0x17a'),'onDelete':'cascade'});db[_0x0a9e('0x60')]['hasMany'](db[_0x0a9e('0x17e')],{'as':_0x0a9e('0x169'),'foreignKey':_0x0a9e('0x17a')});db['ChatWebsite'][_0x0a9e('0x110')](db[_0x0a9e('0x191')],{'as':_0x0a9e('0x192')});db[_0x0a9e('0x60')]['hasMany'](db[_0x0a9e('0x64')],{'as':_0x0a9e('0x16a')});db[_0x0a9e('0x60')][_0x0a9e('0x110')](db[_0x0a9e('0x63')],{'as':_0x0a9e('0x147'),'foreignKey':_0x0a9e('0x17a'),'onDelete':'cascade'});db[_0x0a9e('0x60')][_0x0a9e('0x110')](db[_0x0a9e('0x65')],{'as':_0x0a9e('0x158')});db['ChatWebsite'][_0x0a9e('0x150')](db['CmList'],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x60')][_0x0a9e('0x150')](db[_0x0a9e('0x17b')],{'as':_0x0a9e('0x17b'),'foreignKey':_0x0a9e('0x153')});db['ChatWebsite'][_0x0a9e('0x150')](db['MailAccount'],{'as':_0x0a9e('0x3b'),'foreignKey':_0x0a9e('0x161')});db['ChatWebsite'][_0x0a9e('0x150')](db[_0x0a9e('0x7d')],{'as':_0x0a9e('0x16f'),'foreignKey':_0x0a9e('0x154')});db['ChatWebsite'][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':'Agents','through':_0x0a9e('0x13b')});db['OpenchannelQueueReport']['belongsTo'](db['OpenchannelAccount'],{});db[_0x0a9e('0x62')][_0x0a9e('0x150')](db['CmList'],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db['OpenchannelQueueReport'][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x62')][_0x0a9e('0x150')](db[_0x0a9e('0x5d')],{});db['OpenchannelQueueReport'][_0x0a9e('0x150')](db['OpenchannelMessage'],{});db[_0x0a9e('0x62')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{});db[_0x0a9e('0x62')][_0x0a9e('0x150')](db[_0x0a9e('0x137')],{});db['ChatApplication'][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x193'),'foreignKey':'UserId','onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x63')][_0x0a9e('0x150')](db[_0x0a9e('0x67')],{'as':_0x0a9e('0x194'),'foreignKey':_0x0a9e('0x195'),'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x63')][_0x0a9e('0x150')](db[_0x0a9e('0x60')],{'as':_0x0a9e('0x196'),'foreignKey':_0x0a9e('0x17a'),'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x63')][_0x0a9e('0x150')](db[_0x0a9e('0x86')],{'onDelete':'restrict','foreignKey':_0x0a9e('0x181')});db[_0x0a9e('0x64')][_0x0a9e('0x110')](db['ChatMessage'],{'as':_0x0a9e('0x158'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x197')});db[_0x0a9e('0x64')]['belongsTo'](db[_0x0a9e('0x60')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x17a')});db[_0x0a9e('0x64')]['belongsTo'](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x64')]['belongsTo'](db['User'],{'as':_0x0a9e('0x184'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x64')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'through':_0x0a9e('0x198'),'as':_0x0a9e('0x174')});db[_0x0a9e('0x64')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'through':_0x0a9e('0x198'),'as':_0x0a9e('0x175')});db[_0x0a9e('0x64')][_0x0a9e('0x121')](db['User'],{'as':_0x0a9e('0x176'),'through':_0x0a9e('0x199'),'foreignKey':_0x0a9e('0x197')});db['ChatMessage']['belongsTo'](db[_0x0a9e('0x11')],{'onDelete':'cascade','as':_0x0a9e('0x11')});db[_0x0a9e('0x65')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'onDelete':'cascade','as':'Contact','foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x65')][_0x0a9e('0x150')](db[_0x0a9e('0x64')],{'onDelete':'cascade','as':_0x0a9e('0x179'),'foreignKey':_0x0a9e('0x197')});db[_0x0a9e('0x65')][_0x0a9e('0x150')](db[_0x0a9e('0xe4')],{'as':'Attachment','foreignKey':'AttachmentId'});db[_0x0a9e('0x65')][_0x0a9e('0x150')](db[_0x0a9e('0x60')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x17a')});db[_0x0a9e('0x66')][_0x0a9e('0x110')](db['Attachment'],{'as':_0x0a9e('0x178'),'foreignKey':_0x0a9e('0x19a'),'onDelete':_0x0a9e('0x10e'),'hooks':!![]});db['ChatOfflineMessage']['belongsTo'](db['CmContact'],{'onDelete':_0x0a9e('0x10e'),'as':_0x0a9e('0x160'),'foreignKey':'ContactId'});db[_0x0a9e('0x66')][_0x0a9e('0x150')](db[_0x0a9e('0x60')],{'as':'Account','foreignKey':'ChatWebsiteId'});db[_0x0a9e('0x67')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':'UserChatQueue','hooks':!![]});db[_0x0a9e('0x67')]['belongsToMany'](db['Team'],{'through':_0x0a9e('0x19b'),'as':'Teams'});db[_0x0a9e('0x68')][_0x0a9e('0x110')](db[_0x0a9e('0xcc')],{'as':'Messages','foreignKey':_0x0a9e('0x19c'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x68')]['belongsToMany'](db['User'],{'as':_0x0a9e('0x14a'),'through':_0x0a9e('0x123')});db[_0x0a9e('0x191')][_0x0a9e('0x150')](db[_0x0a9e('0x60')],{'as':_0x0a9e('0x196'),'foreignKey':'ChatWebsiteId'});db['CmCompany'][_0x0a9e('0x110')](db[_0x0a9e('0x124')],{'as':'Contacts','foreignKey':'CompanyId'});db['CmContact']['hasMany'](db['CmContactHasItem'],{'as':'Phones','foreignKey':_0x0a9e('0x19d')});db['CmContact'][_0x0a9e('0x110')](db[_0x0a9e('0x6d')],{'as':_0x0a9e('0x14c'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x124')][_0x0a9e('0x110')](db[_0x0a9e('0x71')],{'as':'HopperFinals','foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x124')][_0x0a9e('0x110')](db[_0x0a9e('0x116')],{'as':_0x0a9e('0x19e'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x124')][_0x0a9e('0x110')](db[_0x0a9e('0x73')],{'as':_0x0a9e('0x73'),'foreignKey':_0x0a9e('0x172')});db['CmContact'][_0x0a9e('0x110')](db[_0x0a9e('0xd0')],{'as':'JscriptySessions','foreignKey':_0x0a9e('0x172')});db['CmContact'][_0x0a9e('0x110')](db[_0x0a9e('0x5d')],{'as':'OpenchannelInteractions','foreignKey':'ContactId','onDelete':_0x0a9e('0x164')});db['CmContact'][_0x0a9e('0x110')](db[_0x0a9e('0x64')],{'as':_0x0a9e('0x119'),'foreignKey':_0x0a9e('0x172'),'onDelete':_0x0a9e('0x164')});db['CmContact'][_0x0a9e('0x110')](db['SmsInteraction'],{'as':'SmsInteractions','foreignKey':_0x0a9e('0x172'),'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x124')][_0x0a9e('0x110')](db[_0x0a9e('0x11b')],{'as':'FaxInteractions','foreignKey':_0x0a9e('0x172'),'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x124')][_0x0a9e('0x110')](db['MailInteraction'],{'as':_0x0a9e('0x11d'),'foreignKey':_0x0a9e('0x172'),'onDelete':'restrict'});db[_0x0a9e('0x124')][_0x0a9e('0x150')](db[_0x0a9e('0x19f')],{'as':_0x0a9e('0x1a0'),'foreignKey':'CompanyId'});db[_0x0a9e('0x124')][_0x0a9e('0x150')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d'),'onDelete':'cascade'});db[_0x0a9e('0x124')][_0x0a9e('0x121')](db['User'],{'as':_0x0a9e('0x176'),'through':'cm_user_has_contacts'});db[_0x0a9e('0x124')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'as':_0x0a9e('0x174'),'through':_0x0a9e('0x1a1')});db[_0x0a9e('0x124')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'through':_0x0a9e('0x1a1'),'as':_0x0a9e('0x175')});db[_0x0a9e('0x6d')][_0x0a9e('0x110')](db[_0x0a9e('0x1a2')],{'as':_0x0a9e('0x1a3'),'foreignKey':_0x0a9e('0x1a4')});db['CmHopper'][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x6d')][_0x0a9e('0x150')](db[_0x0a9e('0x139')],{'as':'List','foreignKey':'ListId','onDelete':'cascade'});db['CmHopper'][_0x0a9e('0x150')](db['User'],{'as':'Agent','foreignKey':'UserId'});db[_0x0a9e('0x6d')][_0x0a9e('0x150')](db[_0x0a9e('0x1a')],{'as':_0x0a9e('0x194'),'foreignKey':'VoiceQueueId','onDelete':'cascade'});db[_0x0a9e('0x6d')][_0x0a9e('0x150')](db[_0x0a9e('0x1a5')],{'as':_0x0a9e('0x1a5'),'foreignKey':'CampaignId','onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x6d')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x184'),'foreignKey':_0x0a9e('0x1a6')});db['CmHopperBlack'][_0x0a9e('0x150')](db['CmContact'],{'as':'Contact','foreignKey':_0x0a9e('0x172'),'onDelete':'cascade'});db[_0x0a9e('0x6f')][_0x0a9e('0x150')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x6f')][_0x0a9e('0x150')](db[_0x0a9e('0x1a')],{'as':'Queue','foreignKey':_0x0a9e('0x14b'),'onDelete':_0x0a9e('0x10e')});db['CmHopperBlack'][_0x0a9e('0x150')](db[_0x0a9e('0x1a5')],{'as':_0x0a9e('0x1a5'),'foreignKey':_0x0a9e('0x1a7'),'onDelete':'cascade'});db[_0x0a9e('0x76')][_0x0a9e('0x110')](db[_0x0a9e('0x7a')],{'as':{'plural':_0x0a9e('0x1a8'),'singular':_0x0a9e('0x1a9')},'foreignKey':'AutomationAllId','onDelete':'cascade','hooks':!![]});db[_0x0a9e('0x76')]['hasMany'](db[_0x0a9e('0x7a')],{'as':{'plural':'Any','singular':_0x0a9e('0x1aa')},'foreignKey':'AutomationAnyId','onDelete':_0x0a9e('0x10e'),'hooks':!![]});db['Automation'][_0x0a9e('0x110')](db[_0x0a9e('0x74')],{'as':_0x0a9e('0x1ab'),'foreignKey':'AutomationId','onDelete':'cascade','hooks':!![]});db[_0x0a9e('0x167')]['hasMany'](db[_0x0a9e('0x167')],{'as':'Dispositions','foreignKey':_0x0a9e('0x1ac'),'onDelete':'cascade'});db[_0x0a9e('0x17b')][_0x0a9e('0x110')](db['Interval'],{'as':_0x0a9e('0x1ad'),'foreignKey':_0x0a9e('0x153'),'onDelete':_0x0a9e('0x10e'),'hooks':!![],'required':![]});db[_0x0a9e('0x17b')][_0x0a9e('0x110')](db[_0x0a9e('0x16')],{'as':_0x0a9e('0x114'),'foreignKey':_0x0a9e('0x153'),'onDelete':_0x0a9e('0x164')});db['Interval'][_0x0a9e('0x110')](db[_0x0a9e('0x16b')],{'as':_0x0a9e('0x1ae'),'foreignKey':_0x0a9e('0x153')});db[_0x0a9e('0x17b')]['hasMany'](db['ChatApplication'],{'as':_0x0a9e('0x1af'),'foreignKey':'IntervalId'});db[_0x0a9e('0x17b')]['hasMany'](db[_0x0a9e('0x47')],{'as':_0x0a9e('0x1b0'),'foreignKey':_0x0a9e('0x153')});db[_0x0a9e('0x17b')][_0x0a9e('0x110')](db[_0x0a9e('0x52')],{'as':_0x0a9e('0x1b1'),'foreignKey':'IntervalId'});db['Schedule'][_0x0a9e('0x150')](db[_0x0a9e('0x3b')],{});db['Schedule'][_0x0a9e('0x150')](db[_0x0a9e('0x94')],{'foreignKey':_0x0a9e('0x1b2')});db['Schedule']['belongsTo'](db['AnalyticCustomReport'],{'foreignKey':_0x0a9e('0x1b3')});db[_0x0a9e('0x84')][_0x0a9e('0x121')](db[_0x0a9e('0x18')],{'as':'Mohs','through':_0x0a9e('0x149'),'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x86')]['belongsToMany'](db[_0x0a9e('0x124')],{'through':'cm_contact_has_tags'});db['Tag'][_0x0a9e('0x121')](db[_0x0a9e('0x64')],{'through':'chat_interaction_has_tags'});db['Tag'][_0x0a9e('0x121')](db['MailInteraction'],{'through':_0x0a9e('0x173')});db['Tag'][_0x0a9e('0x121')](db[_0x0a9e('0x53')],{'through':_0x0a9e('0x18a')});db['Tag']['belongsToMany'](db[_0x0a9e('0x11b')],{'through':_0x0a9e('0x185')});db[_0x0a9e('0x86')][_0x0a9e('0x121')](db['OpenchannelInteraction'],{'through':_0x0a9e('0x1b4')});db[_0x0a9e('0x86')]['belongsToMany'](db[_0x0a9e('0xfb')],{'through':_0x0a9e('0x1b5')});db[_0x0a9e('0x1b6')]['belongsTo'](db[_0x0a9e('0x88')],{'as':_0x0a9e('0x1b7'),'foreignKey':_0x0a9e('0x1b8')});db[_0x0a9e('0x1a2')][_0x0a9e('0x150')](db[_0x0a9e('0x6d')],{'as':_0x0a9e('0x1b9'),'foreignKey':_0x0a9e('0x1a4')});db[_0x0a9e('0x1b6')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x19d')});db[_0x0a9e('0x8d')][_0x0a9e('0x110')](db[_0x0a9e('0x7a')],{'as':{'plural':_0x0a9e('0x1ba'),'singular':_0x0a9e('0x1bb')},'foreignKey':_0x0a9e('0x1bc'),'onDelete':_0x0a9e('0x10e'),'hooks':!![]});db[_0x0a9e('0x8d')][_0x0a9e('0x110')](db['Condition'],{'as':{'plural':_0x0a9e('0x1bd'),'singular':_0x0a9e('0x1be')},'foreignKey':_0x0a9e('0x1bf'),'onDelete':'cascade','hooks':!![]});db[_0x0a9e('0x8d')][_0x0a9e('0x110')](db[_0x0a9e('0x74')],{'as':_0x0a9e('0x1ab'),'foreignKey':'TriggerId','onDelete':_0x0a9e('0x10e'),'hooks':!![]});db[_0x0a9e('0x1c0')]['hasMany'](db[_0x0a9e('0x99')],{'as':_0x0a9e('0x1c1'),'onDelete':_0x0a9e('0x10e'),'foreignKey':'CustomReportId','hooks':!![]});db['AnalyticDefaultReport'][_0x0a9e('0x110')](db[_0x0a9e('0x99')],{'as':_0x0a9e('0x1c1'),'onDelete':'cascade','foreignKey':'DefaultReportId'});db[_0x0a9e('0x98')][_0x0a9e('0x110')](db[_0x0a9e('0x99')],{'as':_0x0a9e('0x1c1'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c2')});db['AnalyticFieldReport']['belongsTo'](db[_0x0a9e('0x98')],{'foreignKey':_0x0a9e('0x1c2')});db[_0x0a9e('0x9c')]['hasMany'](db[_0x0a9e('0x9e')],{'as':_0x0a9e('0x1c3'),'onDelete':_0x0a9e('0x10e'),'foreignKey':'AccountId'});db['SalesforceConfiguration'][_0x0a9e('0x110')](db[_0x0a9e('0xa0')],{'as':_0x0a9e('0x1c4'),'onDelete':'cascade','foreignKey':'SubjectId'});db[_0x0a9e('0x9e')]['hasMany'](db['SalesforceField'],{'as':'Descriptions','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0x9e')]['hasMany'](db[_0x0a9e('0xa0')],{'as':_0x0a9e('0x1c1'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c6')});db['SalesforceConfiguration'][_0x0a9e('0x150')](db[_0x0a9e('0x9c')],{'as':'Account','foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xa0')][_0x0a9e('0x110')](db['SalesforceField'],{'as':_0x0a9e('0x1c8'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xa0')]['hasMany'](db[_0x0a9e('0xa0')],{'as':_0x0a9e('0x1ca'),'foreignKey':_0x0a9e('0x1c5')});db['SalesforceField'][_0x0a9e('0x110')](db[_0x0a9e('0xa0')],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xa0')][_0x0a9e('0x150')](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':'VariableId'});db[_0x0a9e('0xa1')][_0x0a9e('0x110')](db[_0x0a9e('0xa2')],{'as':_0x0a9e('0x1c3'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xa2')]['hasMany'](db[_0x0a9e('0x1cc')],{'as':_0x0a9e('0x1c4'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xa2')][_0x0a9e('0x110')](db[_0x0a9e('0x1cc')],{'as':_0x0a9e('0x1cd'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c5')});db['SugarcrmConfiguration'][_0x0a9e('0x110')](db[_0x0a9e('0x1cc')],{'as':'Fields','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c6')});db['SugarcrmConfiguration'][_0x0a9e('0x150')](db[_0x0a9e('0xa1')],{'as':'Account','foreignKey':_0x0a9e('0x1c7')});db['SugarcrmField']['hasMany'](db['SugarcrmField'],{'as':_0x0a9e('0x1c8'),'foreignKey':_0x0a9e('0x1c9')});db['SugarcrmField'][_0x0a9e('0x110')](db[_0x0a9e('0x1cc')],{'as':'Description','foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0x1cc')]['hasMany'](db[_0x0a9e('0x1cc')],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db['SugarcrmField'][_0x0a9e('0x150')](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':_0x0a9e('0x1ce')});db[_0x0a9e('0x1cf')]['hasMany'](db[_0x0a9e('0xa6')],{'as':'Configurations','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xa6')][_0x0a9e('0x110')](db[_0x0a9e('0xa8')],{'as':_0x0a9e('0x1c4'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xa6')]['hasMany'](db[_0x0a9e('0xa8')],{'as':_0x0a9e('0x1cd'),'onDelete':_0x0a9e('0x10e'),'foreignKey':'DescriptionId'});db['DeskConfiguration']['hasMany'](db['DeskField'],{'as':'Fields','onDelete':_0x0a9e('0x10e'),'foreignKey':'FieldId'});db[_0x0a9e('0xa6')][_0x0a9e('0x150')](db[_0x0a9e('0x1cf')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xa6')]['belongsToMany'](db[_0x0a9e('0x86')],{'through':'int_desk_configuration_has_tags'});db['DeskField'][_0x0a9e('0x110')](db['DeskField'],{'as':_0x0a9e('0x1c8'),'foreignKey':'SubjectId'});db[_0x0a9e('0xa8')][_0x0a9e('0x110')](db[_0x0a9e('0xa8')],{'as':_0x0a9e('0x1ca'),'foreignKey':_0x0a9e('0x1c5')});db['DeskField'][_0x0a9e('0x110')](db[_0x0a9e('0xa8')],{'as':'Field','foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xa8')]['belongsTo'](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':_0x0a9e('0x1ce')});db[_0x0a9e('0xaa')][_0x0a9e('0x110')](db[_0x0a9e('0xac')],{'as':_0x0a9e('0x1c3'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xac')][_0x0a9e('0x110')](db[_0x0a9e('0xae')],{'as':'Subjects','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xac')][_0x0a9e('0x110')](db[_0x0a9e('0xae')],{'as':_0x0a9e('0x1cd'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c5')});db['ZohoConfiguration'][_0x0a9e('0x110')](db[_0x0a9e('0xae')],{'as':_0x0a9e('0x1c1'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xac')][_0x0a9e('0x150')](db[_0x0a9e('0xaa')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xae')][_0x0a9e('0x110')](db[_0x0a9e('0xae')],{'as':_0x0a9e('0x1c8'),'foreignKey':'SubjectId'});db[_0x0a9e('0xae')][_0x0a9e('0x110')](db[_0x0a9e('0xae')],{'as':'Description','foreignKey':'DescriptionId'});db[_0x0a9e('0xae')][_0x0a9e('0x110')](db[_0x0a9e('0xae')],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xae')][_0x0a9e('0x150')](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':'VariableId'});db[_0x0a9e('0xaf')][_0x0a9e('0x110')](db['ZendeskConfiguration'],{'as':_0x0a9e('0x1c3'),'onDelete':_0x0a9e('0x10e'),'foreignKey':'AccountId'});db['ZendeskConfiguration'][_0x0a9e('0x110')](db[_0x0a9e('0xb2')],{'as':_0x0a9e('0x1c4'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0x1d0')]['hasMany'](db[_0x0a9e('0xb2')],{'as':'Descriptions','foreignKey':'DescriptionId'});db['ZendeskConfiguration'][_0x0a9e('0x110')](db['ZendeskField'],{'as':'Fields','foreignKey':'FieldId'});db[_0x0a9e('0x1d0')][_0x0a9e('0x150')](db[_0x0a9e('0xaf')],{'as':_0x0a9e('0x183'),'foreignKey':'AccountId'});db[_0x0a9e('0x1d0')]['belongsToMany'](db['Tag'],{'through':_0x0a9e('0x1d1')});db[_0x0a9e('0xb2')][_0x0a9e('0x110')](db['ZendeskField'],{'as':'Subject','foreignKey':'SubjectId'});db[_0x0a9e('0xb2')][_0x0a9e('0x110')](db[_0x0a9e('0xb2')],{'as':_0x0a9e('0x1ca'),'foreignKey':_0x0a9e('0x1c5')});db['ZendeskField'][_0x0a9e('0x110')](db[_0x0a9e('0xb2')],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xb2')][_0x0a9e('0x150')](db['Variable'],{'as':_0x0a9e('0x8e'),'foreignKey':_0x0a9e('0x1ce')});db[_0x0a9e('0x1d2')][_0x0a9e('0x110')](db[_0x0a9e('0x1d3')],{'as':_0x0a9e('0x1c3'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0x1d3')][_0x0a9e('0x110')](db[_0x0a9e('0xb5')],{'as':_0x0a9e('0x1c4'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0x1d3')][_0x0a9e('0x110')](db[_0x0a9e('0xb5')],{'as':_0x0a9e('0x1cd'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0x1d3')]['hasMany'](db['FreshdeskField'],{'as':'Fields','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c6')});db['FreshdeskConfiguration'][_0x0a9e('0x150')](db[_0x0a9e('0x1d2')],{'as':'Account','foreignKey':_0x0a9e('0x1c7')});db['FreshdeskConfiguration'][_0x0a9e('0x121')](db['Tag'],{'through':_0x0a9e('0x1d4')});db[_0x0a9e('0xb5')][_0x0a9e('0x110')](db[_0x0a9e('0xb5')],{'as':'Subject','foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xb5')][_0x0a9e('0x110')](db['FreshdeskField'],{'as':'Description','foreignKey':'DescriptionId'});db['FreshdeskField'][_0x0a9e('0x110')](db[_0x0a9e('0xb5')],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xb5')]['belongsTo'](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':_0x0a9e('0x1ce')});db[_0x0a9e('0x1d5')]['hasMany'](db[_0x0a9e('0xb8')],{'as':_0x0a9e('0x1c3'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xb8')]['hasMany'](db[_0x0a9e('0xb9')],{'as':_0x0a9e('0x1c4'),'foreignKey':_0x0a9e('0x1c9')});db['VtigerConfiguration'][_0x0a9e('0x110')](db['VtigerField'],{'as':_0x0a9e('0x1cd'),'foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0xb8')][_0x0a9e('0x110')](db[_0x0a9e('0xb9')],{'as':'Fields','foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xb8')][_0x0a9e('0x150')](db[_0x0a9e('0x1d5')],{'as':_0x0a9e('0x183'),'foreignKey':'AccountId'});db[_0x0a9e('0xb9')][_0x0a9e('0x110')](db[_0x0a9e('0xb9')],{'as':'Subject','foreignKey':_0x0a9e('0x1c9')});db['VtigerField']['hasMany'](db[_0x0a9e('0xb9')],{'as':'Description','foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0xb9')][_0x0a9e('0x110')](db['VtigerField'],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xb9')][_0x0a9e('0x150')](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':_0x0a9e('0x1ce')});db[_0x0a9e('0xba')]['hasMany'](db[_0x0a9e('0xbc')],{'as':_0x0a9e('0x1c3'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xbc')]['hasMany'](db['ServicenowField'],{'as':_0x0a9e('0x1c4'),'foreignKey':'SubjectId'});db[_0x0a9e('0xbc')][_0x0a9e('0x110')](db['ServicenowField'],{'as':_0x0a9e('0x1cd'),'foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0xbc')]['hasMany'](db[_0x0a9e('0x1d6')],{'as':_0x0a9e('0x1c1'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xbc')][_0x0a9e('0x150')](db[_0x0a9e('0xba')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x1c7')});db['ServicenowField'][_0x0a9e('0x110')](db[_0x0a9e('0x1d6')],{'as':_0x0a9e('0x1c8'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0x1d6')]['hasMany'](db[_0x0a9e('0x1d6')],{'as':'Description','foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0x1d6')][_0x0a9e('0x110')](db['ServicenowField'],{'as':_0x0a9e('0x1cb'),'foreignKey':'FieldId'});db[_0x0a9e('0x1d6')][_0x0a9e('0x150')](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':'VariableId'});db[_0x0a9e('0xbe')]['hasMany'](db[_0x0a9e('0xbf')],{'as':_0x0a9e('0x1c3'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xbe')][_0x0a9e('0x150')](db['CloudProvider'],{'as':_0x0a9e('0x103'),'foreignKey':'CloudProviderId'});db[_0x0a9e('0xbf')][_0x0a9e('0x110')](db['Dynamics365Field'],{'as':'Subjects','onDelete':'cascade','foreignKey':'SubjectId'});db[_0x0a9e('0xbf')][_0x0a9e('0x110')](db[_0x0a9e('0xc1')],{'as':_0x0a9e('0x1cd'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c5')});db['Dynamics365Configuration'][_0x0a9e('0x110')](db[_0x0a9e('0xc1')],{'as':'Fields','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xbf')][_0x0a9e('0x150')](db[_0x0a9e('0xbe')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x1c7')});db['Dynamics365Field'][_0x0a9e('0x110')](db[_0x0a9e('0xc1')],{'as':_0x0a9e('0x1c8'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xc1')][_0x0a9e('0x110')](db[_0x0a9e('0xc1')],{'as':_0x0a9e('0x1ca'),'foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0xc1')][_0x0a9e('0x110')](db['Dynamics365Field'],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xc1')][_0x0a9e('0x150')](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':_0x0a9e('0x1ce')});db['FreshsalesAccount'][_0x0a9e('0x110')](db[_0x0a9e('0xc5')],{'as':_0x0a9e('0x1c3'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xc5')][_0x0a9e('0x110')](db['FreshsalesField'],{'as':'Subjects','foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xc5')][_0x0a9e('0x110')](db[_0x0a9e('0xc7')],{'as':_0x0a9e('0x1cd'),'foreignKey':'DescriptionId'});db[_0x0a9e('0xc5')]['hasMany'](db[_0x0a9e('0xc7')],{'as':_0x0a9e('0x1c1'),'foreignKey':'FieldId'});db[_0x0a9e('0xc5')]['belongsTo'](db[_0x0a9e('0xc3')],{'as':_0x0a9e('0x183'),'foreignKey':'AccountId'});db[_0x0a9e('0xc7')][_0x0a9e('0x110')](db[_0x0a9e('0xc7')],{'as':'Subject','foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xc7')][_0x0a9e('0x110')](db[_0x0a9e('0xc7')],{'as':_0x0a9e('0x1ca'),'foreignKey':_0x0a9e('0x1c5')});db['FreshsalesField'][_0x0a9e('0x110')](db[_0x0a9e('0xc7')],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db['FreshsalesField']['belongsTo'](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':_0x0a9e('0x1ce')});db['ChatQueueReport']['belongsTo'](db[_0x0a9e('0x60')],{});db['ChatQueueReport']['belongsTo'](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x16c'),'foreignKey':'ListId'});db[_0x0a9e('0xca')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db['ChatQueueReport'][_0x0a9e('0x150')](db[_0x0a9e('0x64')],{});db['ChatQueueReport'][_0x0a9e('0x150')](db[_0x0a9e('0x65')],{});db[_0x0a9e('0xca')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{});db['ChatQueueReport'][_0x0a9e('0x150')](db[_0x0a9e('0x67')],{});db['ChatInternalMessage']['belongsTo'](db[_0x0a9e('0x11')],{'onDelete':_0x0a9e('0x10e'),'foreignKey':'FromId'});db['ChatInternalMessage'][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1d7')});db[_0x0a9e('0xd0')]['hasMany'](db[_0x0a9e('0x1d8')],{'foreignKey':'SessionId','onDelete':'cascade'});db[_0x0a9e('0xd0')]['hasMany'](db[_0x0a9e('0xcd')],{'foreignKey':'SessionId','onDelete':_0x0a9e('0x10e')});db['SmsQueueReport']['belongsTo'](db[_0x0a9e('0x50')],{});db[_0x0a9e('0xd2')][_0x0a9e('0x150')](db['CmList'],{'as':'List','foreignKey':'ListId'});db[_0x0a9e('0xd2')][_0x0a9e('0x150')](db['CmContact'],{'as':_0x0a9e('0x160'),'foreignKey':'ContactId'});db[_0x0a9e('0xd2')]['belongsTo'](db[_0x0a9e('0x53')],{});db[_0x0a9e('0xd2')]['belongsTo'](db['SmsMessage'],{});db['SmsQueueReport'][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{});db[_0x0a9e('0xd2')][_0x0a9e('0x150')](db[_0x0a9e('0x57')],{});db[_0x0a9e('0x1d9')][_0x0a9e('0x110')](db[_0x0a9e('0xd0')],{'foreignKey':_0x0a9e('0x1da')});db[_0x0a9e('0x1d9')][_0x0a9e('0x110')](db[_0x0a9e('0x1d8')],{'foreignKey':_0x0a9e('0x1da')});db[_0x0a9e('0x1d9')][_0x0a9e('0x110')](db['JscriptyAnswerReport'],{'foreignKey':'ProjectId'});db[_0x0a9e('0x129')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':'user_has_teams'});db[_0x0a9e('0x129')]['belongsToMany'](db[_0x0a9e('0x1a')],{'through':'TeamVoiceQueue','as':_0x0a9e('0x131')});db['Team']['belongsToMany'](db[_0x0a9e('0x3c')],{'through':_0x0a9e('0x171'),'as':_0x0a9e('0x1db')});db[_0x0a9e('0x129')]['belongsToMany'](db['ChatQueue'],{'through':_0x0a9e('0x19b'),'as':'ChatQueues'});db[_0x0a9e('0x129')][_0x0a9e('0x121')](db['FaxQueue'],{'through':_0x0a9e('0x187'),'as':'FaxQueues'});db[_0x0a9e('0x129')][_0x0a9e('0x121')](db[_0x0a9e('0x57')],{'through':_0x0a9e('0x18c'),'as':_0x0a9e('0x136')});db[_0x0a9e('0x129')][_0x0a9e('0x121')](db[_0x0a9e('0x137')],{'through':_0x0a9e('0x190'),'as':_0x0a9e('0x1dc')});db[_0x0a9e('0x129')][_0x0a9e('0x121')](db[_0x0a9e('0x101')],{'through':_0x0a9e('0x1dd'),'as':_0x0a9e('0x138')});db[_0x0a9e('0x129')]['belongsToMany'](db[_0x0a9e('0xf1')],{'through':_0x0a9e('0x107'),'as':_0x0a9e('0x132')});db['Campaign'][_0x0a9e('0x110')](db[_0x0a9e('0x6d')],{'as':_0x0a9e('0x14c'),'foreignKey':_0x0a9e('0x1a7')});db[_0x0a9e('0x1a5')][_0x0a9e('0x110')](db[_0x0a9e('0x71')],{'as':_0x0a9e('0x115'),'foreignKey':_0x0a9e('0x1a7')});db[_0x0a9e('0x1a5')][_0x0a9e('0x110')](db['CmHopperHistory'],{'as':_0x0a9e('0x19e'),'foreignKey':_0x0a9e('0x1a7')});db[_0x0a9e('0x1a5')]['hasMany'](db[_0x0a9e('0x6f')],{'as':'HopperBlacks','foreignKey':'CampaignId'});db[_0x0a9e('0x1a5')]['belongsTo'](db[_0x0a9e('0x28')],{'as':'Trunk','foreignKey':_0x0a9e('0x14f')});db[_0x0a9e('0x1a5')][_0x0a9e('0x150')](db['Trunk'],{'as':_0x0a9e('0x151'),'foreignKey':'TrunkBackupId'});db['Campaign'][_0x0a9e('0x150')](db[_0x0a9e('0x17b')],{'as':_0x0a9e('0x17b'),'foreignKey':_0x0a9e('0x153')});db[_0x0a9e('0x1a5')][_0x0a9e('0x150')](db['SquareProject'],{'as':_0x0a9e('0xdc'),'foreignKey':_0x0a9e('0x1de')});db[_0x0a9e('0x1a5')][_0x0a9e('0x121')](db[_0x0a9e('0x139')],{'as':'Lists','through':_0x0a9e('0x1df')});db[_0x0a9e('0x1a5')][_0x0a9e('0x121')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x156'),'through':_0x0a9e('0x1e0')});db[_0x0a9e('0xe4')][_0x0a9e('0x150')](db[_0x0a9e('0x66')],{'as':_0x0a9e('0x66'),'foreignKey':_0x0a9e('0x19a')});db[_0x0a9e('0x1e1')][_0x0a9e('0x150')](db['MailMessage'],{});db['MailTransferReport'][_0x0a9e('0x150')](db[_0x0a9e('0x11c')],{});db['MailTransferReport'][_0x0a9e('0x150')](db[_0x0a9e('0x3b')],{'foreignKey':_0x0a9e('0x1e2'),'as':_0x0a9e('0x1e3')});db[_0x0a9e('0x1e1')]['belongsTo'](db['User'],{'foreignKey':'FromUserId','as':_0x0a9e('0x1e4')});db[_0x0a9e('0x1e1')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'foreignKey':_0x0a9e('0x1e5'),'as':_0x0a9e('0x1e6')});db[_0x0a9e('0x1e1')][_0x0a9e('0x150')](db[_0x0a9e('0x3c')],{'foreignKey':'ToMailQueueId','as':'ToQueue'});db[_0x0a9e('0x1e1')][_0x0a9e('0x150')](db[_0x0a9e('0x3b')],{'foreignKey':_0x0a9e('0x1e7'),'as':_0x0a9e('0x1e8')});db[_0x0a9e('0xe8')][_0x0a9e('0x150')](db[_0x0a9e('0x65')],{});db[_0x0a9e('0xe8')][_0x0a9e('0x150')](db['ChatInteraction'],{});db[_0x0a9e('0xe8')]['belongsTo'](db['ChatWebsite'],{'foreignKey':_0x0a9e('0x1e9'),'as':_0x0a9e('0x1e3')});db[_0x0a9e('0xe8')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'foreignKey':_0x0a9e('0x1ea'),'as':_0x0a9e('0x1e4')});db[_0x0a9e('0xe8')][_0x0a9e('0x150')](db['User'],{'foreignKey':_0x0a9e('0x1e5'),'as':_0x0a9e('0x1e6')});db[_0x0a9e('0xe8')]['belongsTo'](db[_0x0a9e('0x67')],{'foreignKey':_0x0a9e('0x1eb'),'as':'ToQueue'});db['ChatTransferReport']['belongsTo'](db['ChatWebsite'],{'foreignKey':_0x0a9e('0x1ec'),'as':_0x0a9e('0x1e8')});db['FaxTransferReport'][_0x0a9e('0x150')](db['FaxMessage'],{});db[_0x0a9e('0xea')][_0x0a9e('0x150')](db[_0x0a9e('0x11b')],{});db['FaxTransferReport']['belongsTo'](db[_0x0a9e('0x45')],{'foreignKey':_0x0a9e('0x1ed'),'as':_0x0a9e('0x1e3')});db[_0x0a9e('0xea')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'foreignKey':_0x0a9e('0x1ea'),'as':_0x0a9e('0x1e4')});db[_0x0a9e('0xea')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'foreignKey':'ToUserId','as':_0x0a9e('0x1e6')});db[_0x0a9e('0xea')]['belongsTo'](db['FaxQueue'],{'foreignKey':_0x0a9e('0x1ee'),'as':_0x0a9e('0x1ef')});db[_0x0a9e('0xea')][_0x0a9e('0x150')](db[_0x0a9e('0x45')],{'foreignKey':'ToFaxAccountId','as':_0x0a9e('0x1e8')});db[_0x0a9e('0xec')]['belongsTo'](db[_0x0a9e('0x5e')],{});db['OpenchannelTransferReport']['belongsTo'](db['OpenchannelInteraction'],{});db[_0x0a9e('0xec')][_0x0a9e('0x150')](db['OpenchannelAccount'],{'foreignKey':'FromOpenchannelAccountId','as':_0x0a9e('0x1e3')});db[_0x0a9e('0xec')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'foreignKey':'FromUserId','as':_0x0a9e('0x1e4')});db[_0x0a9e('0xec')][_0x0a9e('0x150')](db['User'],{'foreignKey':_0x0a9e('0x1e5'),'as':_0x0a9e('0x1e6')});db[_0x0a9e('0xec')][_0x0a9e('0x150')](db[_0x0a9e('0x137')],{'foreignKey':'ToOpenchannelQueueId','as':'ToQueue'});db[_0x0a9e('0xec')][_0x0a9e('0x150')](db[_0x0a9e('0x59')],{'foreignKey':'ToOpenchannelAccountId','as':'ToAccount'});db['SmsTransferReport']['belongsTo'](db[_0x0a9e('0x55')],{});db[_0x0a9e('0xee')][_0x0a9e('0x150')](db[_0x0a9e('0x53')],{});db[_0x0a9e('0xee')]['belongsTo'](db[_0x0a9e('0x50')],{'foreignKey':_0x0a9e('0x1f0'),'as':_0x0a9e('0x1e3')});db[_0x0a9e('0xee')][_0x0a9e('0x150')](db['User'],{'foreignKey':_0x0a9e('0x1ea'),'as':_0x0a9e('0x1e4')});db[_0x0a9e('0xee')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'foreignKey':'ToUserId','as':_0x0a9e('0x1e6')});db[_0x0a9e('0xee')]['belongsTo'](db['SmsQueue'],{'foreignKey':'ToSmsQueueId','as':_0x0a9e('0x1ef')});db[_0x0a9e('0xee')]['belongsTo'](db[_0x0a9e('0x50')],{'foreignKey':'ToSmsAccountId','as':'ToAccount'});db['CmList']['hasMany'](db[_0x0a9e('0x167')],{'as':_0x0a9e('0x168'),'foreignKey':_0x0a9e('0x16d'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x139')][_0x0a9e('0x110')](db[_0x0a9e('0x1f1')],{'as':_0x0a9e('0x1f2'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x139')][_0x0a9e('0x110')](db['CmContact'],{'as':_0x0a9e('0x125'),'onDelete':'cascade','foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x139')][_0x0a9e('0x110')](db[_0x0a9e('0x71')],{'as':_0x0a9e('0x115'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x139')][_0x0a9e('0x110')](db[_0x0a9e('0x116')],{'as':'HopperHistory','foreignKey':'ListId'});db['CmList'][_0x0a9e('0x110')](db[_0x0a9e('0x73')],{'as':_0x0a9e('0x73'),'foreignKey':'ListId'});db[_0x0a9e('0x139')][_0x0a9e('0x121')](db[_0x0a9e('0x1a')],{'as':'Queues','through':_0x0a9e('0x1f3')});db[_0x0a9e('0x139')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':'Agents','through':_0x0a9e('0x128')});db[_0x0a9e('0xf1')][_0x0a9e('0x110')](db[_0x0a9e('0x16')],{'as':_0x0a9e('0x114'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0xf1')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':'UserVoicePrefix'});db[_0x0a9e('0xf1')]['belongsToMany'](db[_0x0a9e('0x129')],{'through':'TeamVoicePrefix','as':_0x0a9e('0x155')});db[_0x0a9e('0xf2')][_0x0a9e('0x110')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x176'),'foreignKey':_0x0a9e('0x1f4')});db['UserProfile'][_0x0a9e('0x110')](db['UserProfileSection'],{'as':_0x0a9e('0x1f5'),'foreignKey':_0x0a9e('0x1f4'),'onDelete':_0x0a9e('0x10e')});db['UserProfileSection']['hasMany'](db['UserProfileResource'],{'as':_0x0a9e('0x1f6'),'foreignKey':_0x0a9e('0x1f7'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0xf7')][_0x0a9e('0x110')](db[_0x0a9e('0x167')],{'as':'Dispositions','foreignKey':_0x0a9e('0x1f8'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0xf7')][_0x0a9e('0x110')](db['CannedAnswer'],{'as':_0x0a9e('0x169'),'foreignKey':_0x0a9e('0x1f8')});db['WhatsappAccount'][_0x0a9e('0x110')](db[_0x0a9e('0xfd')],{'as':_0x0a9e('0x158'),'foreignKey':'WhatsappAccountId'});db[_0x0a9e('0xf7')]['hasMany'](db[_0x0a9e('0xfb')],{'as':'Interactions'});db[_0x0a9e('0xf7')][_0x0a9e('0x110')](db['WhatsappApplication'],{'as':_0x0a9e('0x147'),'foreignKey':_0x0a9e('0x1f8'),'onDelete':_0x0a9e('0x10e')});db['WhatsappAccount'][_0x0a9e('0x150')](db['CmList'],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0xf7')][_0x0a9e('0x150')](db[_0x0a9e('0x7d')],{'as':'mandatoryDispositionPause','foreignKey':_0x0a9e('0x154')});db[_0x0a9e('0xf7')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':_0x0a9e('0x144')});db[_0x0a9e('0xf9')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0xf9')][_0x0a9e('0x150')](db[_0x0a9e('0x101')],{'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0xf9')][_0x0a9e('0x150')](db['WhatsappAccount'],{'onDelete':_0x0a9e('0x164')});db['WhatsappApplication'][_0x0a9e('0x150')](db[_0x0a9e('0x17b')],{'onDelete':'restrict','foreignKey':_0x0a9e('0x153')});db[_0x0a9e('0xf9')]['belongsTo'](db[_0x0a9e('0x86')],{'onDelete':_0x0a9e('0x164'),'foreignKey':_0x0a9e('0x181')});db['WhatsappInteraction'][_0x0a9e('0x110')](db['WhatsappMessage'],{'as':'Messages','onDelete':'cascade','foreignKey':_0x0a9e('0x1f9')});db[_0x0a9e('0xfb')][_0x0a9e('0x150')](db[_0x0a9e('0xf7')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x1f8')});db[_0x0a9e('0xfb')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0xfb')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x184'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0xfb')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'through':_0x0a9e('0x1b5'),'as':_0x0a9e('0x174')});db['WhatsappInteraction'][_0x0a9e('0x121')](db['Tag'],{'through':_0x0a9e('0x1b5'),'as':_0x0a9e('0x175')});db[_0x0a9e('0xfb')]['belongsToMany'](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x176'),'through':_0x0a9e('0x130'),'foreignKey':'WhatsappInteractionId'});db[_0x0a9e('0xfd')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x11')});db[_0x0a9e('0xfd')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'onDelete':'cascade','as':_0x0a9e('0x160')});db[_0x0a9e('0xfd')][_0x0a9e('0x150')](db['WhatsappInteraction'],{'onDelete':'cascade','as':_0x0a9e('0x179'),'foreignKey':_0x0a9e('0x1f9')});db[_0x0a9e('0xfd')]['belongsTo'](db[_0x0a9e('0xf7')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x1f8')});db[_0x0a9e('0xfe')][_0x0a9e('0x150')](db[_0x0a9e('0xf7')],{});db['WhatsappQueueReport'][_0x0a9e('0x150')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0xfe')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0xfe')][_0x0a9e('0x150')](db['WhatsappInteraction'],{});db['WhatsappQueueReport']['belongsTo'](db[_0x0a9e('0x101')],{});db[_0x0a9e('0xfe')]['belongsTo'](db['WhatsappMessage'],{});db[_0x0a9e('0xfe')][_0x0a9e('0x150')](db['User'],{});db['WhatsappTransferReport'][_0x0a9e('0x150')](db[_0x0a9e('0xfd')],{});db['WhatsappTransferReport'][_0x0a9e('0x150')](db[_0x0a9e('0xfb')],{});db[_0x0a9e('0x1fa')]['belongsTo'](db['WhatsappAccount'],{'foreignKey':_0x0a9e('0x1fb'),'as':_0x0a9e('0x1e3')});db['WhatsappTransferReport']['belongsTo'](db[_0x0a9e('0xf7')],{'foreignKey':_0x0a9e('0x1fc'),'as':'ToAccount'});db[_0x0a9e('0x1fa')]['belongsTo'](db['WhatsappQueue'],{'foreignKey':_0x0a9e('0x1fd'),'as':_0x0a9e('0x1ef')});db['WhatsappTransferReport']['belongsTo'](db['User'],{'foreignKey':_0x0a9e('0x1ea'),'as':'FromAgent'});db[_0x0a9e('0x1fa')][_0x0a9e('0x150')](db['User'],{'foreignKey':'ToUserId','as':_0x0a9e('0x1e6')});db[_0x0a9e('0x101')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':_0x0a9e('0x37'),'foreignKey':'WhatsappQueueId'});db[_0x0a9e('0x101')][_0x0a9e('0x121')](db[_0x0a9e('0x129')],{'through':_0x0a9e('0x1dd'),'as':'Teams'});db[_0x0a9e('0x1fe')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x1ff'),'foreignKey':_0x0a9e('0x10f'),'onDelete':_0x0a9e('0x10e'),'hooks':!![]});db[_0x0a9e('0x103')][_0x0a9e('0x10b')](db['Dynamics365Account'],{'as':_0x0a9e('0xbe'),'onDelete':_0x0a9e('0x164')});db['CloudProvider'][_0x0a9e('0x10b')](db['MailServerIn'],{'as':'Imap','onDelete':_0x0a9e('0x164')});db['CloudProvider']['hasOne'](db['MailServerOut'],{'as':'Smtp','onDelete':_0x0a9e('0x164')});module['exports']={'db':db,'dbH':dbH};
\ No newline at end of file
+var _0xa9e0=['SquareRecording','../api/squareRecording/squareRecording.model','SquareMessage','../api/squareMessage/squareMessage.model','License','Migration','../api/migration/migration.model','Attachment','../api/attachment/attachment.model','Plugin','../api/plugin/plugin.model','ChatTransferReport','../api/chatTransferReport/chatTransferReport.model','FaxTransferReport','../api/faxTransferReport/faxTransferReport.model','OpenchannelTransferReport','../api/openchannelTransferReport/openchannelTransferReport.model','SmsTransferReport','../api/smsTransferReport/smsTransferReport.model','../api/cmList/cmList.model','VoicePrefix','UserProfile','UserProfileSection','UserProfileResource','UserNotification','../api/userNotification/userNotification.model','WhatsappAccount','../api/whatsappAccount/whatsappAccount.model','WhatsappApplication','../api/whatsappApplication/whatsappApplication.model','WhatsappInteraction','../api/whatsappInteraction/whatsappInteraction.model','WhatsappMessage','WhatsappQueueReport','../api/whatsappQueueReport/whatsappQueueReport.model','../api/whatsappTransferReport/whatsappTransferReport.model','WhatsappQueue','../api/whatsappQueue/whatsappQueue.model','CloudProvider','../api/cloudProvider/cloudProvider.model','TeamVoiceQueue','../api/teamVoiceQueue/teamVoiceQueue.model','TeamVoicePrefix','../api/teamVoicePrefix/teamVoicePrefix.model','UserVoicePrefix','../api/userVoicePrefix/userVoicePrefix.model','hasOne','VoiceMail','userSetting','cascade','UserId','hasMany','VoiceRecording','Recordings','VoiceQueuesRt','Extensions','HopperFinals','CmHopperHistory','HopperHistory','OpenchannelInteractions','ChatInteractions','SmsInteractions','FaxInteraction','MailInteraction','MailInteractions','WhatsappInteractions','UserNotifications','SenderId','belongsToMany','Groups','chat_group_has_users','CmContact','Contacts','cm_user_has_contacts','Lists','cm_user_has_lists','Team','user_has_teams','user_has_mail_interactions','FaxInteractions','user_has_fax_interactions','user_has_sms_interactions','user_has_openchannel_interactions','user_has_whatsapp_interactions','VoiceQueues','VoicePrefixes','ChatQueues','UserChatQueue','FaxQueues','SmsQueues','OpenchannelQueue','WhatsappQueues','CmList','ChatWebsites','user_has_chat_websites','user_has_fax_accounts','MailAccounts','user_has_mail_accounts','OpenchannelAccounts','user_has_openchannel_accounts','SmsAccounts','user_has_sms_accounts','WhatsappAccounts','user_has_whatsapp_accounts','ChanSpyId','VoiceContext','Applications','Sounds','moh_has_sounds','Members','VoiceQueueId','Hoppers','HopperBlacks','JscriptySessions','TrunkId','belongsTo','TrunkBackup','TrunkBackupId','IntervalId','mandatoryDispositionPauseId','Teams','BlackLists','voice_queues_has_cm_blacklists','Messages','mailbox','mailboxuser','VoiceCallReport','QueueCalls','uniqueid','VoiceAgentReport','AgentReports','Contact','MailAccountId','CloudProviderId','MailServerOut','restrict','Imap','Smtp','Disposition','Dispositions','Answers','Interactions','MailApplication','List','ListId','TemplateId','mandatoryDispositionPause','Agents','team_has_mail_queues','ContactId','mail_interaction_has_tags','Tags','ThroughTags','Users','MailInteractionId','Attachments','Interaction','ChatWebsiteId','Interval','MailQueueReport','Dashboard','CannedAnswer','FaxAccountId','Exntensions','TagId','FaxInteractionId','Account','Owner','fax_interaction_has_tags','AttachmentId','team_has_fax_queues','SmsAccountId','SmsInteractionId','sms_interaction_has_tags','SmsQueueId','team_has_sms_queues','OpenchannelAccountId','OpenchannelQueueId','OpenchannelInteractionId','team_has_openchannel_queues','ChatProactiveAction','ProactiveActions','Agent','Queue','ChatQueueId','Website','ChatInteractionId','chat_interaction_has_tags','user_has_chat_interactions','ChatOfflineMessageId','team_has_chat_queues','ChatGroupId','CmContactId','HopperHistories','CmCompany','Company','cm_contact_has_tags','CmHopperAdditionalPhone','AdditionalPhones','CmHopperId','Campaign','OwnerId','CampaignId','All','OneAll','OneAny','Actions','ParentId','Intervals','MailApplications','ChatApplications','FaxApplications','SmsApplications','DefaultReportId','CustomReportId','openchannel_interaction_has_tags','whatsapp_interaction_has_tags','CmContactHasItem','ItemType','ItemTypeId','Hopper','AllConditions','AllCondition','TriggerAllId','AnyConditions','AnyCondition','TriggerAnyId','AnalyticCustomReport','Fields','MetricId','Configurations','Subjects','DescriptionId','FieldId','AccountId','Subject','SubjectId','Description','Field','SugarcrmField','Descriptions','VariableId','DeskAccount','ZendeskConfiguration','int_zendesk_configuration_has_tags','FreshdeskAccount','FreshdeskConfiguration','int_freshdesk_configuration_has_tags','VtigerAccount','ServicenowField','ToId','JscriptyQuestionReport','JscriptyProject','ProjectId','MailQueues','OpenchannelQueues','team_has_whatsapp_queues','SquareProjectId','campaigns_has_cm_lists','campaigns_has_cm_blacklists','MailTransferReport','FromMailAccountId','FromAccount','FromAgent','ToUserId','ToAgent','ToMailAccountId','ToAccount','FromChatWebsiteId','FromUserId','ToChatQueueId','ToChatWebsiteId','FromFaxAccountId','ToFaxQueueId','ToQueue','FromSmsAccountId','CmCustomField','CustomFields','voice_queues_has_cm_lists','userProfileId','UserProfileSections','Resources','sectionId','WhatsappAccountId','WhatsappInteractionId','WhatsappTransferReport','FromWhatsappAccountId','ToWhatsappAccountId','ToQueueId','UserSetting','user','../config/environment','sequelize','lodash','motion2','xcall','xC@LL1234','127.0.0.1','utf8mb4','name','utf8','defaultsDeep','mysql','username','password','options','database','sequelizeHistory','User','import','VoiceChanSpy','../api/voiceChanSpy/voiceChanSpy.model','../api/voiceContext/voiceContext.model','VoiceExtension','../api/voiceExtension/voiceExtension.model','VoiceMusicOnHold','../api/voiceMusicOnHold/voiceMusicOnHold.model','VoiceQueue','../api/voiceQueue/voiceQueue.model','ScreenRecording','../api/screenRecording/screenRecording.model','../api/voiceMail/voiceMail.model','VoiceMailMessage','../api/voiceMailMessage/voiceMailMessage.model','../api/voiceCallReport/voiceCallReport.model','VoiceDialReport','../api/voiceDialReport/voiceDialReport.model','../api/voiceAgentReport/voiceAgentReport.model','VoiceQueueReport','../api/voiceQueueReport/voiceQueueReport.model','MemberReport','Trunk','../api/trunk/trunk.model','../api/voiceTransferReport/voiceTransferReport.model','UserVoiceQueueRt','../api/userVoiceQueueRt/userVoiceQueueRt.model','UserVoiceQueue','../api/userVoiceQueue/userVoiceQueue.model','../api/userChatQueue/userChatQueue.model','UserMailQueue','../api/userMailQueue/userMailQueue.model','UserFaxQueue','../api/userFaxQueue/userFaxQueue.model','UserSmsQueue','UserOpenchannelQueue','../api/userOpenchannelQueue/userOpenchannelQueue.model','UserWhatsappQueue','../api/userWhatsappQueue/userWhatsappQueue.model','MailServerIn','../api/mailServerOut/mailServerOut.model','MailAccount','MailQueue','MailSubstatus','MailMessage','../api/mailMessage/mailMessage.model','../api/mailApplication/mailApplication.model','../api/mailQueueReport/mailQueueReport.model','../api/dashboard/dashboard.model','DashboardItem','../api/dashboardItem/dashboardItem.model','FaxAccount','../api/faxAccount/faxAccount.model','FaxApplication','../api/faxApplication/faxApplication.model','../api/faxInteraction/faxInteraction.model','FaxMessage','../api/faxMessage/faxMessage.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/smsQueue/smsQueue.model','OpenchannelAccount','../api/openchannelAccount/openchannelAccount.model','OpenchannelApplication','../api/openchannelApplication/openchannelApplication.model','OpenchannelInteraction','OpenchannelMessage','../api/openchannelQueue/openchannelQueue.model','ChatWebsite','../api/chatWebsite/chatWebsite.model','OpenchannelQueueReport','ChatApplication','ChatInteraction','ChatMessage','ChatOfflineMessage','ChatQueue','ChatGroup','../api/chatGroup/chatGroup.model','../api/chatProactiveAction/chatProactiveAction.model','../api/cmCompany/cmCompany.model','../api/cmContact/cmContact.model','CmHopper','../api/cmHopper/cmHopper.model','CmHopperBlack','../api/cmHopperBlack/cmHopperBlack.model','CmHopperFinal','../api/cmHopperFinal/cmHopperFinal.model','ReportAgentPreview','Action','../api/action/action.model','Automation','../api/automation/automation.model','../api/cannedAnswer/cannedAnswer.model','../api/disposition/disposition.model','Condition','../api/condition/condition.model','../api/interval/interval.model','Pause','../api/pause/pause.model','Cdr','../api/cdr/cdr.model','../api/voiceQueuesLog/voiceQueuesLog.model','Schedule','../api/schedule/schedule.model','Sound','../api/sound/sound.model','Tag','../api/tag/tag.model','ContactItemType','../api/contactItemType/contactItemType.model','../api/cmContactHasItem/cmContactHasItem.model','Template','../api/template/template.model','Trigger','Variable','../api/variable/variable.model','Integration','../api/integration/integration.model','../api/integrationReport/integrationReport.model','../api/analyticCustomReport/analyticCustomReport.model','AnalyticDefaultReport','../api/analyticDefaultReport/analyticDefaultReport.model','AnalyticExtractedReport','../api/analyticExtractedReport/analyticExtractedReport.model','AnalyticMetric','AnalyticFieldReport','../api/analyticFieldReport/analyticFieldReport.model','../api/analyticTreeReport/analyticTreeReport.model','SalesforceAccount','../api/intSalesforceAccount/intSalesforceAccount.model','SalesforceConfiguration','../api/intSalesforceConfiguration/intSalesforceConfiguration.model','SalesforceField','SugarcrmAccount','SugarcrmConfiguration','../api/intSugarcrmConfiguration/intSugarcrmConfiguration.model','../api/intSugarcrmField/intSugarcrmField.model','../api/intDeskAccount/intDeskAccount.model','DeskConfiguration','../api/intDeskConfiguration/intDeskConfiguration.model','DeskField','../api/intDeskField/intDeskField.model','ZohoAccount','../api/intZohoAccount/intZohoAccount.model','ZohoConfiguration','../api/intZohoConfiguration/intZohoConfiguration.model','ZohoField','ZendeskAccount','../api/intZendeskAccount/intZendeskAccount.model','../api/intZendeskConfiguration/intZendeskConfiguration.model','ZendeskField','../api/intZendeskField/intZendeskField.model','../api/intFreshdeskConfiguration/intFreshdeskConfiguration.model','FreshdeskField','../api/intFreshdeskField/intFreshdeskField.model','../api/intVtigerAccount/intVtigerAccount.model','VtigerConfiguration','VtigerField','ServicenowAccount','../api/intServicenowAccount/intServicenowAccount.model','ServicenowConfiguration','../api/intServicenowConfiguration/intServicenowConfiguration.model','Dynamics365Account','Dynamics365Configuration','../api/intDynamics365Configuration/intDynamics365Configuration.model','Dynamics365Field','../api/intDynamics365Field/intDynamics365Field.model','FreshsalesAccount','../api/intFreshsalesAccount/intFreshsalesAccount.model','FreshsalesConfiguration','../api/intFreshsalesConfiguration/intFreshsalesConfiguration.model','FreshsalesField','../api/intFreshsalesField/intFreshsalesField.model','../api/network/network.model','ChatQueueReport','../api/chatQueueReport/chatQueueReport.model','ChatInternalMessage','JscriptyAnswerReport','../api/jscriptyAnswerReport/jscriptyAnswerReport.model','../api/jscriptyQuestionReport/jscriptyQuestionReport.model','JscriptySessionReport','../api/jscriptySessionReport/jscriptySessionReport.model','SmsQueueReport','../api/smsQueueReport/smsQueueReport.model','SquareReport','../api/squareReport/squareReport.model','SquareDetailsReport','../api/squareReportDetail/squareReportDetail.model','../api/jscriptyProject/jscriptyProject.model','Setting','../api/setting/setting.model','../api/squareOdbc/squareOdbc.model','SquareProject'];(function(_0x2e249d,_0x41b7e7){var _0x1faa37=function(_0x1422b4){while(--_0x1422b4){_0x2e249d['push'](_0x2e249d['shift']());}};_0x1faa37(++_0x41b7e7);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4e1d03,_0x786f3a){_0x4e1d03=_0x4e1d03-0x0;var _0x362d4b=_0xa9e0[_0x4e1d03];return _0x362d4b;};'use strict';var config=require(_0x0a9e('0x0'));var Sequelize=require(_0x0a9e('0x1'));var _=require(_0x0a9e('0x2'));var jstz=require('jstz');var timezone=jstz['determine']();config[_0x0a9e('0x1')]=_['defaultsDeep'](config[_0x0a9e('0x1')],{'database':_0x0a9e('0x3'),'username':_0x0a9e('0x4'),'password':_0x0a9e('0x5'),'options':{'host':_0x0a9e('0x6'),'port':0xcea,'dialect':'mysql','dialectOptions':{'charset':_0x0a9e('0x7')},'logging':![],'timezone':timezone[_0x0a9e('0x8')](),'define':{'charset':_0x0a9e('0x9'),'collate':'utf8_general_ci'}}});config['sequelizeHistory']=_[_0x0a9e('0xa')](config['sequelizeHistory'],{'database':'motion2','username':_0x0a9e('0x4'),'password':_0x0a9e('0x5'),'options':{'host':_0x0a9e('0x6'),'port':0xcea,'dialect':_0x0a9e('0xb'),'dialectOptions':{'charset':_0x0a9e('0x7')},'logging':![],'timezone':timezone[_0x0a9e('0x8')](),'define':{'charset':'utf8','collate':'utf8_general_ci'}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config['sequelize']['database'],config[_0x0a9e('0x1')][_0x0a9e('0xc')],config[_0x0a9e('0x1')][_0x0a9e('0xd')],config[_0x0a9e('0x1')][_0x0a9e('0xe')])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config['sequelizeHistory'][_0x0a9e('0xf')],config[_0x0a9e('0x10')][_0x0a9e('0xc')],config[_0x0a9e('0x10')][_0x0a9e('0xd')],config[_0x0a9e('0x10')]['options'])};db[_0x0a9e('0x11')]=db['sequelize'][_0x0a9e('0x12')]('../api/user/user.model');db[_0x0a9e('0x13')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x14'));db['VoiceContext']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x15'));db[_0x0a9e('0x16')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x17'));db[_0x0a9e('0x18')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x19'));db[_0x0a9e('0x1a')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x1b'));db['VoiceRecording']=db[_0x0a9e('0x1')]['import']('../api/voiceRecording/voiceRecording.model');db[_0x0a9e('0x1c')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x1d'));db['VoiceMail']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x1e'));db[_0x0a9e('0x1f')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x20'));db['VoiceCallReport']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x21'));db[_0x0a9e('0x22')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x23'));db['VoiceAgentReport']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x24'));db[_0x0a9e('0x25')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x26'));db[_0x0a9e('0x27')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/memberReport/memberReport.model');db[_0x0a9e('0x28')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x29'));db['VoiceTransferReport']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x2a'));db[_0x0a9e('0x2b')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x2c'));db[_0x0a9e('0x2d')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x2e'));db['UserChatQueue']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x2f'));db[_0x0a9e('0x30')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x31'));db[_0x0a9e('0x32')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x33'));db[_0x0a9e('0x34')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/userSmsQueue/userSmsQueue.model');db[_0x0a9e('0x35')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x36'));db[_0x0a9e('0x37')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x38'));db[_0x0a9e('0x39')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/mailServerIn/mailServerIn.model');db['MailServerOut']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x3a'));db[_0x0a9e('0x3b')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/mailAccount/mailAccount.model');db[_0x0a9e('0x3c')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/mailQueue/mailQueue.model');db[_0x0a9e('0x3d')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/mailSubstatus/mailSubstatus.model');db['MailInteraction']=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/mailInteraction/mailInteraction.model');db[_0x0a9e('0x3e')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x3f'));db['MailApplication']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x40'));db['MailQueueReport']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x41'));db['Dashboard']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x42'));db[_0x0a9e('0x43')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x44'));db[_0x0a9e('0x45')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x46'));db[_0x0a9e('0x47')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x48'));db['FaxInteraction']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x49'));db[_0x0a9e('0x4a')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x4b'));db[_0x0a9e('0x4c')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x4d'));db[_0x0a9e('0x4e')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x4f'));db[_0x0a9e('0x50')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x51'));db[_0x0a9e('0x52')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/smsApplication/smsApplication.model');db[_0x0a9e('0x53')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x54'));db[_0x0a9e('0x55')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x56'));db[_0x0a9e('0x57')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x58'));db[_0x0a9e('0x59')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x5a'));db[_0x0a9e('0x5b')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x5c'));db[_0x0a9e('0x5d')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/openchannelInteraction/openchannelInteraction.model');db[_0x0a9e('0x5e')]=db[_0x0a9e('0x1')]['import']('../api/openchannelMessage/openchannelMessage.model');db['OpenchannelQueue']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x5f'));db[_0x0a9e('0x60')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x61'));db[_0x0a9e('0x62')]=db['sequelize']['import']('../api/openchannelQueueReport/openchannelQueueReport.model');db[_0x0a9e('0x63')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/chatApplication/chatApplication.model');db[_0x0a9e('0x64')]=db[_0x0a9e('0x1')]['import']('../api/chatInteraction/chatInteraction.model');db[_0x0a9e('0x65')]=db['sequelize'][_0x0a9e('0x12')]('../api/chatMessage/chatMessage.model');db[_0x0a9e('0x66')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/chatOfflineMessage/chatOfflineMessage.model');db[_0x0a9e('0x67')]=db[_0x0a9e('0x1')]['import']('../api/chatQueue/chatQueue.model');db[_0x0a9e('0x68')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x69'));db['ChatProactiveAction']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x6a'));db['CmCompany']=db['sequelize']['import'](_0x0a9e('0x6b'));db['CmContact']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x6c'));db[_0x0a9e('0x6d')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x6e'));db[_0x0a9e('0x6f')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x70'));db[_0x0a9e('0x71')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x72'));db['CmHopperHistory']=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/cmHopperHistory/cmHopperHistory.model');db[_0x0a9e('0x73')]=db['sequelize'][_0x0a9e('0x12')]('../api/reportAgentPreview/reportAgentPreview.model');db['CmCustomField']=db['sequelize'][_0x0a9e('0x12')]('../api/cmCustomField/cmCustomField.model');db[_0x0a9e('0x74')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x75'));db[_0x0a9e('0x76')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x77'));db['CannedAnswer']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x78'));db['Disposition']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x79'));db[_0x0a9e('0x7a')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x7b'));db['Interval']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x7c'));db[_0x0a9e('0x7d')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x7e'));db[_0x0a9e('0x7f')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x80'));db['VoiceQueuesLog']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x81'));db[_0x0a9e('0x82')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x83'));db[_0x0a9e('0x84')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x85'));db[_0x0a9e('0x86')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x87'));db[_0x0a9e('0x88')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x89'));db['CmContactHasItem']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x8a'));db['CmHopperAdditionalPhone']=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.model');db[_0x0a9e('0x8b')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x8c'));db[_0x0a9e('0x8d')]=db['sequelize']['import']('../api/trigger/trigger.model');db[_0x0a9e('0x8e')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x8f'));db[_0x0a9e('0x90')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x91'));db['IntegrationReport']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x92'));db['AnalyticCustomReport']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x93'));db[_0x0a9e('0x94')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x95'));db[_0x0a9e('0x96')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x97'));db[_0x0a9e('0x98')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/analyticMetric/analyticMetric.model');db[_0x0a9e('0x99')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x9a'));db['AnalyticTreeReport']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x9b'));db[_0x0a9e('0x9c')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x9d'));db[_0x0a9e('0x9e')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x9f'));db[_0x0a9e('0xa0')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/intSalesforceField/intSalesforceField.model');db[_0x0a9e('0xa1')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/intSugarcrmAccount/intSugarcrmAccount.model');db[_0x0a9e('0xa2')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xa3'));db['SugarcrmField']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xa4'));db['DeskAccount']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xa5'));db[_0x0a9e('0xa6')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xa7'));db[_0x0a9e('0xa8')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xa9'));db[_0x0a9e('0xaa')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xab'));db[_0x0a9e('0xac')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xad'));db[_0x0a9e('0xae')]=db['sequelize'][_0x0a9e('0x12')]('../api/intZohoField/intZohoField.model');db[_0x0a9e('0xaf')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xb0'));db['ZendeskConfiguration']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xb1'));db[_0x0a9e('0xb2')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xb3'));db['FreshdeskAccount']=db['sequelize'][_0x0a9e('0x12')]('../api/intFreshdeskAccount/intFreshdeskAccount.model');db['FreshdeskConfiguration']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xb4'));db[_0x0a9e('0xb5')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xb6'));db['VtigerAccount']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xb7'));db[_0x0a9e('0xb8')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/intVtigerConfiguration/intVtigerConfiguration.model');db[_0x0a9e('0xb9')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/intVtigerField/intVtigerField.model');db[_0x0a9e('0xba')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xbb'));db[_0x0a9e('0xbc')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xbd'));db['ServicenowField']=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/intServicenowField/intServicenowField.model');db[_0x0a9e('0xbe')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/intDynamics365Account/intDynamics365Account.model');db[_0x0a9e('0xbf')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xc0'));db[_0x0a9e('0xc1')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xc2'));db[_0x0a9e('0xc3')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xc4'));db[_0x0a9e('0xc5')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xc6'));db[_0x0a9e('0xc7')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xc8'));db[_0x0a9e('0x90')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x91'));db['Network']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xc9'));db[_0x0a9e('0xca')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xcb'));db[_0x0a9e('0xcc')]=db['sequelize'][_0x0a9e('0x12')]('../api/chatInternalMessage/chatInternalMessage.model');db[_0x0a9e('0xcd')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xce'));db['JscriptyQuestionReport']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xcf'));db[_0x0a9e('0xd0')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xd1'));db[_0x0a9e('0xd2')]=db['sequelize']['import'](_0x0a9e('0xd3'));db[_0x0a9e('0xd4')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xd5'));db[_0x0a9e('0xd6')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xd7'));db['JscriptyProject']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xd8'));db[_0x0a9e('0xd9')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xda'));db['SquareOdbc']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xdb'));db[_0x0a9e('0xdc')]=db[_0x0a9e('0x1')]['import']('../api/squareProject/squareProject.model');db[_0x0a9e('0xdd')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xde'));db[_0x0a9e('0xdf')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xe0'));db['Team']=db['sequelize'][_0x0a9e('0x12')]('../api/team/team.model');db[_0x0a9e('0xe1')]=db['sequelize'][_0x0a9e('0x12')]('../api/license/license.model');db['Campaign']=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/campaign/campaign.model');db[_0x0a9e('0xe2')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xe3'));db[_0x0a9e('0xe4')]=db['sequelize']['import'](_0x0a9e('0xe5'));db[_0x0a9e('0xe6')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xe7'));db['MailTransferReport']=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/mailTransferReport/mailTransferReport.model');db[_0x0a9e('0xe8')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xe9'));db[_0x0a9e('0xea')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xeb'));db[_0x0a9e('0xec')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xed'));db[_0x0a9e('0xee')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xef'));db['CmList']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xf0'));db[_0x0a9e('0xf1')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/voicePrefix/voicePrefix.model');db[_0x0a9e('0xf2')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/userProfile/userProfile.model');db[_0x0a9e('0xf3')]=db['sequelize'][_0x0a9e('0x12')]('../api/userProfileSection/userProfileSection.model');db[_0x0a9e('0xf4')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/userProfileResource/userProfileResource.model');db[_0x0a9e('0xf5')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xf6'));db[_0x0a9e('0xf7')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xf8'));db[_0x0a9e('0xf9')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xfa'));db[_0x0a9e('0xfb')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xfc'));db[_0x0a9e('0xfd')]=db[_0x0a9e('0x1')]['import']('../api/whatsappMessage/whatsappMessage.model');db[_0x0a9e('0xfe')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xff'));db['WhatsappTransferReport']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x100'));db[_0x0a9e('0x101')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x102'));db[_0x0a9e('0x103')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x104'));db[_0x0a9e('0x105')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x106'));db[_0x0a9e('0x107')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x108'));db[_0x0a9e('0x109')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x10a'));db['UserSetting']=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/user-setting/user-setting.model');db[_0x0a9e('0x11')][_0x0a9e('0x10b')](db[_0x0a9e('0x10c')],{'as':'VoiceMail','onDelete':'cascade','foreignKey':'UserId'});db[_0x0a9e('0x11')][_0x0a9e('0x10b')](db['UserSetting'],{'as':_0x0a9e('0x10d'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x10f')});db['User'][_0x0a9e('0x110')](db[_0x0a9e('0x111')],{'as':_0x0a9e('0x112'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x2b')],{'as':_0x0a9e('0x113'),'foreignKey':_0x0a9e('0x10f')});db['User'][_0x0a9e('0x110')](db['VoiceExtension'],{'as':_0x0a9e('0x114'),'onDelete':_0x0a9e('0x10e'),'hooks':!![]});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x71')],{'as':_0x0a9e('0x115'),'foreignKey':'UserId'});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x116')],{'as':_0x0a9e('0x117'),'foreignKey':'UserId'});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x73')],{'as':_0x0a9e('0x73'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x5d')],{'as':_0x0a9e('0x118'),'foreignKey':_0x0a9e('0x10f')});db['User'][_0x0a9e('0x110')](db[_0x0a9e('0x64')],{'as':_0x0a9e('0x119'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x53')],{'as':_0x0a9e('0x11a'),'foreignKey':'UserId'});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x11b')],{'as':'FaxInteractions','foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x11c')],{'as':_0x0a9e('0x11d'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0xfb')],{'as':_0x0a9e('0x11e'),'foreignKey':'UserId'});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0xf5')],{'as':_0x0a9e('0x11f'),'foreignKey':_0x0a9e('0x120')});db[_0x0a9e('0x11')]['belongsTo'](db[_0x0a9e('0xf2')],{'as':'UserProfile','foreignKey':'userProfileId'});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0x68')],{'as':_0x0a9e('0x122'),'through':_0x0a9e('0x123')});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x125'),'through':_0x0a9e('0x126')});db[_0x0a9e('0x11')]['belongsToMany'](db['CmList'],{'as':_0x0a9e('0x127'),'through':_0x0a9e('0x128')});db[_0x0a9e('0x11')]['belongsToMany'](db[_0x0a9e('0x129')],{'through':_0x0a9e('0x12a')});db[_0x0a9e('0x11')]['belongsToMany'](db[_0x0a9e('0x11c')],{'as':_0x0a9e('0x11d'),'through':_0x0a9e('0x12b')});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0x64')],{'as':_0x0a9e('0x119'),'through':'user_has_chat_interactions'});db['User']['belongsToMany'](db[_0x0a9e('0x11b')],{'as':_0x0a9e('0x12c'),'through':_0x0a9e('0x12d')});db[_0x0a9e('0x11')]['belongsToMany'](db[_0x0a9e('0x53')],{'as':'SmsInteractions','through':_0x0a9e('0x12e')});db[_0x0a9e('0x11')][_0x0a9e('0x121')](db['OpenchannelInteraction'],{'as':_0x0a9e('0x118'),'through':_0x0a9e('0x12f')});db[_0x0a9e('0x11')]['belongsToMany'](db[_0x0a9e('0xfb')],{'as':'WhatsappInteractions','through':_0x0a9e('0x130')});db['User'][_0x0a9e('0x121')](db['VoiceQueue'],{'as':_0x0a9e('0x131'),'through':_0x0a9e('0x2d'),'required':![]});db[_0x0a9e('0x11')][_0x0a9e('0x121')](db[_0x0a9e('0xf1')],{'as':_0x0a9e('0x132'),'through':_0x0a9e('0x109'),'required':![]});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0x3c')],{'as':'MailQueues','through':_0x0a9e('0x30'),'required':![]});db[_0x0a9e('0x11')]['belongsToMany'](db[_0x0a9e('0x67')],{'as':_0x0a9e('0x133'),'through':_0x0a9e('0x134'),'required':![],'hooks':!![]});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0x4c')],{'as':_0x0a9e('0x135'),'through':_0x0a9e('0x32'),'required':![]});db[_0x0a9e('0x11')][_0x0a9e('0x121')](db[_0x0a9e('0x57')],{'as':_0x0a9e('0x136'),'through':_0x0a9e('0x34'),'required':![]});db[_0x0a9e('0x11')]['belongsToMany'](db[_0x0a9e('0x137')],{'as':'OpenchannelQueues','through':_0x0a9e('0x35'),'required':![]});db[_0x0a9e('0x11')][_0x0a9e('0x121')](db[_0x0a9e('0x101')],{'as':_0x0a9e('0x138'),'through':_0x0a9e('0x37'),'required':![]});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0x139')],{'through':_0x0a9e('0x128')});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0x60')],{'as':_0x0a9e('0x13a'),'through':_0x0a9e('0x13b')});db[_0x0a9e('0x11')][_0x0a9e('0x121')](db[_0x0a9e('0x45')],{'as':'FaxAccounts','through':_0x0a9e('0x13c')});db[_0x0a9e('0x11')][_0x0a9e('0x121')](db[_0x0a9e('0x3b')],{'as':_0x0a9e('0x13d'),'through':_0x0a9e('0x13e')});db[_0x0a9e('0x11')]['belongsToMany'](db['OpenchannelAccount'],{'as':_0x0a9e('0x13f'),'through':_0x0a9e('0x140')});db[_0x0a9e('0x11')][_0x0a9e('0x121')](db[_0x0a9e('0x50')],{'as':_0x0a9e('0x141'),'through':_0x0a9e('0x142')});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0xf7')],{'as':_0x0a9e('0x143'),'through':_0x0a9e('0x144')});db[_0x0a9e('0x13')][_0x0a9e('0x110')](db[_0x0a9e('0x16')],{'as':'SpiedAgents','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x145')});db[_0x0a9e('0x146')]['hasMany'](db[_0x0a9e('0x16')],{'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x16')][_0x0a9e('0x110')](db['VoiceExtension'],{'as':_0x0a9e('0x147'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x18')][_0x0a9e('0x121')](db[_0x0a9e('0x84')],{'as':_0x0a9e('0x148'),'through':_0x0a9e('0x149')});db[_0x0a9e('0x1a')]['hasMany'](db[_0x0a9e('0x2b')],{'as':_0x0a9e('0x14a'),'foreignKey':_0x0a9e('0x14b')});db[_0x0a9e('0x1a')]['hasMany'](db['CmHopper'],{'as':_0x0a9e('0x14c'),'foreignKey':_0x0a9e('0x14b')});db[_0x0a9e('0x1a')]['hasMany'](db[_0x0a9e('0x71')],{'as':_0x0a9e('0x115'),'foreignKey':'VoiceQueueId'});db[_0x0a9e('0x1a')]['hasMany'](db[_0x0a9e('0x116')],{'as':'HopperHistories','foreignKey':'VoiceQueueId'});db['VoiceQueue'][_0x0a9e('0x110')](db[_0x0a9e('0x73')],{'as':_0x0a9e('0x73'),'foreignKey':_0x0a9e('0x14b')});db[_0x0a9e('0x1a')][_0x0a9e('0x110')](db['CmHopperBlack'],{'as':_0x0a9e('0x14d'),'foreignKey':_0x0a9e('0x14b')});db[_0x0a9e('0x1a')][_0x0a9e('0x110')](db[_0x0a9e('0xd0')],{'as':_0x0a9e('0x14e'),'foreignKey':_0x0a9e('0x14b')});db['VoiceQueue']['belongsTo'](db[_0x0a9e('0x28')],{'as':'Trunk','foreignKey':_0x0a9e('0x14f')});db[_0x0a9e('0x1a')][_0x0a9e('0x150')](db[_0x0a9e('0x28')],{'as':_0x0a9e('0x151'),'foreignKey':_0x0a9e('0x152')});db['VoiceQueue'][_0x0a9e('0x150')](db['Interval'],{'as':'Interval','foreignKey':_0x0a9e('0x153')});db['VoiceQueue'][_0x0a9e('0x150')](db['Pause'],{'as':'mandatoryDispositionPause','foreignKey':_0x0a9e('0x154')});db['VoiceQueue'][_0x0a9e('0x121')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x127'),'through':'voice_queues_has_cm_lists'});db[_0x0a9e('0x1a')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':'Agents','through':'UserVoiceQueue'});db[_0x0a9e('0x1a')][_0x0a9e('0x121')](db[_0x0a9e('0x129')],{'as':_0x0a9e('0x155'),'through':_0x0a9e('0x105')});db[_0x0a9e('0x1a')][_0x0a9e('0x121')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x156'),'through':_0x0a9e('0x157')});db['VoiceRecording']['belongsTo'](db['User'],{'as':_0x0a9e('0x11'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x1c')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x11'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x10c')]['hasMany'](db['VoiceMailMessage'],{'as':_0x0a9e('0x158'),'onDelete':_0x0a9e('0x10e'),'foreignKey':'mailboxuser','sourceKey':_0x0a9e('0x159')});db[_0x0a9e('0x1f')][_0x0a9e('0x150')](db[_0x0a9e('0x10c')],{'foreignKey':_0x0a9e('0x15a'),'targetKey':_0x0a9e('0x159')});db[_0x0a9e('0x15b')][_0x0a9e('0x110')](db[_0x0a9e('0x25')],{'as':_0x0a9e('0x15c'),'foreignKey':_0x0a9e('0x15d'),'constraints':![]});db[_0x0a9e('0x15b')]['hasMany'](db[_0x0a9e('0x15e')],{'as':_0x0a9e('0x15f'),'foreignKey':_0x0a9e('0x15d'),'constraints':![]});db[_0x0a9e('0x15b')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x11'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x15b')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':'ContactId'});db['MailServerIn'][_0x0a9e('0x150')](db[_0x0a9e('0x3b')],{'as':_0x0a9e('0x3b'),'foreignKey':_0x0a9e('0x161')});db[_0x0a9e('0x39')][_0x0a9e('0x150')](db[_0x0a9e('0x103')],{'as':'CloudProvider','foreignKey':_0x0a9e('0x162'),'onDelete':'restrict'});db[_0x0a9e('0x163')][_0x0a9e('0x150')](db[_0x0a9e('0x3b')],{'as':_0x0a9e('0x3b'),'foreignKey':_0x0a9e('0x161')});db[_0x0a9e('0x163')][_0x0a9e('0x150')](db[_0x0a9e('0x103')],{'as':_0x0a9e('0x103'),'foreignKey':_0x0a9e('0x162'),'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x3b')][_0x0a9e('0x10b')](db[_0x0a9e('0x39')],{'as':_0x0a9e('0x165'),'onDelete':_0x0a9e('0x10e')});db['MailAccount']['hasOne'](db[_0x0a9e('0x163')],{'as':_0x0a9e('0x166'),'onDelete':'cascade'});db['MailAccount'][_0x0a9e('0x110')](db[_0x0a9e('0x167')],{'as':_0x0a9e('0x168'),'foreignKey':'MailAccountId','onDelete':_0x0a9e('0x10e')});db['MailAccount'][_0x0a9e('0x110')](db['CannedAnswer'],{'as':_0x0a9e('0x169'),'foreignKey':'MailAccountId'});db[_0x0a9e('0x3b')][_0x0a9e('0x110')](db[_0x0a9e('0x3e')],{'as':'Messages','foreignKey':_0x0a9e('0x161')});db['MailAccount']['hasMany'](db[_0x0a9e('0x11c')],{'as':_0x0a9e('0x16a')});db[_0x0a9e('0x3b')][_0x0a9e('0x110')](db[_0x0a9e('0x16b')],{'as':_0x0a9e('0x147'),'foreignKey':_0x0a9e('0x161'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x3b')][_0x0a9e('0x150')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x3b')][_0x0a9e('0x150')](db[_0x0a9e('0x8b')],{'as':_0x0a9e('0x8b'),'foreignKey':_0x0a9e('0x16e')});db[_0x0a9e('0x3b')]['belongsTo'](db[_0x0a9e('0x7d')],{'as':_0x0a9e('0x16f'),'foreignKey':_0x0a9e('0x154')});db[_0x0a9e('0x3b')]['belongsToMany'](db['User'],{'as':'Agents','through':_0x0a9e('0x13e')});db['MailQueue'][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':_0x0a9e('0x30')});db[_0x0a9e('0x3c')][_0x0a9e('0x121')](db[_0x0a9e('0x129')],{'through':_0x0a9e('0x171'),'as':_0x0a9e('0x155')});db[_0x0a9e('0x11c')]['hasMany'](db[_0x0a9e('0x3e')],{'as':'Messages','onDelete':_0x0a9e('0x10e'),'foreignKey':'MailInteractionId'});db[_0x0a9e('0x11c')][_0x0a9e('0x150')](db[_0x0a9e('0x3b')],{'as':'Account','foreignKey':_0x0a9e('0x161')});db[_0x0a9e('0x11c')]['belongsTo'](db['CmContact'],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x11c')]['belongsTo'](db['User'],{'as':'Owner','foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x11c')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'through':_0x0a9e('0x173'),'as':_0x0a9e('0x174')});db[_0x0a9e('0x11c')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'through':_0x0a9e('0x173'),'as':_0x0a9e('0x175')});db[_0x0a9e('0x11c')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x176'),'through':_0x0a9e('0x12b'),'foreignKey':_0x0a9e('0x177')});db[_0x0a9e('0x3e')]['hasMany'](db[_0x0a9e('0xe4')],{'as':_0x0a9e('0x178'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x3e')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':'User'});db[_0x0a9e('0x3e')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'onDelete':_0x0a9e('0x10e'),'as':_0x0a9e('0x160')});db[_0x0a9e('0x3e')][_0x0a9e('0x150')](db[_0x0a9e('0x11c')],{'as':_0x0a9e('0x179'),'foreignKey':'MailInteractionId'});db['MailMessage'][_0x0a9e('0x150')](db[_0x0a9e('0x3b')],{'as':'Account','foreignKey':_0x0a9e('0x161')});db[_0x0a9e('0x3e')]['belongsTo'](db[_0x0a9e('0x60')],{'as':'ChatWebsite','foreignKey':_0x0a9e('0x17a')});db[_0x0a9e('0x3e')]['belongsTo'](db[_0x0a9e('0x66')],{'as':_0x0a9e('0x66'),'foreignKey':'ChatOfflineMessageId'});db[_0x0a9e('0x16b')][_0x0a9e('0x150')](db['User'],{'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x16b')][_0x0a9e('0x150')](db[_0x0a9e('0x3c')],{'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x16b')]['belongsTo'](db[_0x0a9e('0x3b')],{'onDelete':_0x0a9e('0x164')});db['MailApplication'][_0x0a9e('0x150')](db[_0x0a9e('0x17b')],{'onDelete':_0x0a9e('0x164'),'foreignKey':_0x0a9e('0x153')});db[_0x0a9e('0x16b')][_0x0a9e('0x150')](db[_0x0a9e('0x86')],{'onDelete':'restrict','foreignKey':'TagId'});db['MailQueueReport']['belongsTo'](db['MailAccount'],{});db[_0x0a9e('0x17c')][_0x0a9e('0x150')](db['CmList'],{'as':'List','foreignKey':_0x0a9e('0x16d')});db['MailQueueReport'][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x17c')][_0x0a9e('0x150')](db['MailInteraction'],{});db[_0x0a9e('0x17c')][_0x0a9e('0x150')](db['MailMessage'],{});db[_0x0a9e('0x17c')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{});db[_0x0a9e('0x17c')][_0x0a9e('0x150')](db[_0x0a9e('0x3c')],{});db[_0x0a9e('0x17d')]['hasMany'](db[_0x0a9e('0x43')],{'as':'Items','onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x45')]['hasMany'](db[_0x0a9e('0x167')],{'as':_0x0a9e('0x168'),'foreignKey':'FaxAccountId','onDelete':_0x0a9e('0x10e')});db['FaxAccount'][_0x0a9e('0x110')](db[_0x0a9e('0x17e')],{'as':'Answers','foreignKey':_0x0a9e('0x17f')});db['FaxAccount'][_0x0a9e('0x110')](db[_0x0a9e('0x11b')],{'as':_0x0a9e('0x16a')});db[_0x0a9e('0x45')][_0x0a9e('0x110')](db[_0x0a9e('0x47')],{'as':_0x0a9e('0x147'),'foreignKey':'FaxAccountId','onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x45')][_0x0a9e('0x110')](db[_0x0a9e('0x16')],{'as':_0x0a9e('0x180'),'onDelete':'cascade'});db[_0x0a9e('0x45')]['hasMany'](db['FaxMessage'],{'as':_0x0a9e('0x158')});db['FaxAccount'][_0x0a9e('0x150')](db[_0x0a9e('0x28')],{'as':'Trunk'});db[_0x0a9e('0x45')][_0x0a9e('0x150')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x45')][_0x0a9e('0x150')](db[_0x0a9e('0x7d')],{'as':_0x0a9e('0x16f'),'foreignKey':'mandatoryDispositionPauseId'});db[_0x0a9e('0x45')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':'user_has_fax_accounts'});db[_0x0a9e('0x47')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'onDelete':'restrict'});db[_0x0a9e('0x47')][_0x0a9e('0x150')](db[_0x0a9e('0x4c')],{'onDelete':'restrict'});db[_0x0a9e('0x47')]['belongsTo'](db[_0x0a9e('0x45')],{'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x47')][_0x0a9e('0x150')](db[_0x0a9e('0x86')],{'onDelete':_0x0a9e('0x164'),'foreignKey':_0x0a9e('0x181')});db['FaxInteraction'][_0x0a9e('0x110')](db[_0x0a9e('0x4a')],{'as':_0x0a9e('0x158'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x182')});db[_0x0a9e('0x11b')][_0x0a9e('0x150')](db[_0x0a9e('0x45')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x17f')});db[_0x0a9e('0x11b')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x11b')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x184'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x11b')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'through':'fax_interaction_has_tags','as':_0x0a9e('0x174')});db[_0x0a9e('0x11b')][_0x0a9e('0x121')](db['Tag'],{'through':_0x0a9e('0x185'),'as':'ThroughTags'});db[_0x0a9e('0x11b')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x176'),'through':_0x0a9e('0x12d'),'foreignKey':_0x0a9e('0x182')});db[_0x0a9e('0x4a')][_0x0a9e('0x150')](db['User'],{'onDelete':_0x0a9e('0x10e'),'as':_0x0a9e('0x11')});db['FaxMessage'][_0x0a9e('0x150')](db[_0x0a9e('0x11b')],{'as':_0x0a9e('0x179'),'foreignKey':'FaxInteractionId'});db[_0x0a9e('0x4a')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'onDelete':_0x0a9e('0x10e'),'as':'Contact'});db[_0x0a9e('0x4a')][_0x0a9e('0x150')](db[_0x0a9e('0xe4')],{'as':_0x0a9e('0xe4'),'foreignKey':_0x0a9e('0x186')});db['FaxMessage'][_0x0a9e('0x150')](db[_0x0a9e('0x45')],{'as':'Account','foreignKey':_0x0a9e('0x17f')});db[_0x0a9e('0x4c')][_0x0a9e('0x121')](db['User'],{'as':'Agents','through':_0x0a9e('0x32')});db[_0x0a9e('0x4c')][_0x0a9e('0x121')](db[_0x0a9e('0x129')],{'through':_0x0a9e('0x187'),'as':_0x0a9e('0x155')});db[_0x0a9e('0x4e')][_0x0a9e('0x150')](db['FaxAccount'],{});db['FaxQueueReport'][_0x0a9e('0x150')](db['CmList'],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x4e')][_0x0a9e('0x150')](db['CmContact'],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db['FaxQueueReport'][_0x0a9e('0x150')](db['FaxInteraction'],{});db[_0x0a9e('0x4e')][_0x0a9e('0x150')](db[_0x0a9e('0x4a')],{});db[_0x0a9e('0x4e')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{});db['FaxQueueReport'][_0x0a9e('0x150')](db['FaxQueue'],{});db[_0x0a9e('0x50')][_0x0a9e('0x110')](db[_0x0a9e('0x167')],{'as':_0x0a9e('0x168'),'foreignKey':_0x0a9e('0x188'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x50')]['hasMany'](db[_0x0a9e('0x17e')],{'as':_0x0a9e('0x169'),'foreignKey':_0x0a9e('0x188')});db[_0x0a9e('0x50')][_0x0a9e('0x110')](db['SmsMessage'],{'as':_0x0a9e('0x158'),'foreignKey':_0x0a9e('0x188')});db['SmsAccount']['hasMany'](db[_0x0a9e('0x53')],{'as':_0x0a9e('0x16a')});db[_0x0a9e('0x50')][_0x0a9e('0x110')](db[_0x0a9e('0x52')],{'as':_0x0a9e('0x147'),'foreignKey':'SmsAccountId','onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x50')][_0x0a9e('0x150')](db['CmList'],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x50')][_0x0a9e('0x150')](db['Pause'],{'as':'mandatoryDispositionPause','foreignKey':_0x0a9e('0x154')});db[_0x0a9e('0x50')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':_0x0a9e('0x142')});db[_0x0a9e('0x52')][_0x0a9e('0x150')](db['User'],{'onDelete':_0x0a9e('0x164')});db['SmsApplication'][_0x0a9e('0x150')](db[_0x0a9e('0x57')],{'onDelete':_0x0a9e('0x164')});db['SmsApplication']['belongsTo'](db[_0x0a9e('0x50')],{'onDelete':'restrict'});db[_0x0a9e('0x52')]['belongsTo'](db['Interval'],{'onDelete':_0x0a9e('0x164'),'foreignKey':_0x0a9e('0x153')});db[_0x0a9e('0x52')][_0x0a9e('0x150')](db[_0x0a9e('0x86')],{'onDelete':_0x0a9e('0x164'),'foreignKey':_0x0a9e('0x181')});db[_0x0a9e('0x53')][_0x0a9e('0x110')](db[_0x0a9e('0x55')],{'as':_0x0a9e('0x158'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x189')});db['SmsInteraction']['belongsTo'](db[_0x0a9e('0x50')],{'as':'Account','foreignKey':_0x0a9e('0x188')});db[_0x0a9e('0x53')][_0x0a9e('0x150')](db['CmContact'],{'as':'Contact','foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x53')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x184'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x53')]['belongsToMany'](db[_0x0a9e('0x86')],{'through':'sms_interaction_has_tags','as':_0x0a9e('0x174')});db[_0x0a9e('0x53')]['belongsToMany'](db[_0x0a9e('0x86')],{'through':_0x0a9e('0x18a'),'as':_0x0a9e('0x175')});db[_0x0a9e('0x53')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':'Users','through':_0x0a9e('0x12e'),'foreignKey':_0x0a9e('0x189')});db[_0x0a9e('0x55')]['belongsTo'](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x11')});db[_0x0a9e('0x55')]['belongsTo'](db[_0x0a9e('0x124')],{'onDelete':_0x0a9e('0x10e'),'as':_0x0a9e('0x160')});db[_0x0a9e('0x55')][_0x0a9e('0x150')](db[_0x0a9e('0x53')],{'onDelete':'cascade','as':'Interaction','foreignKey':_0x0a9e('0x189')});db[_0x0a9e('0x55')]['belongsTo'](db[_0x0a9e('0x50')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x188')});db[_0x0a9e('0x57')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':'Agents','through':_0x0a9e('0x34'),'foreignKey':_0x0a9e('0x18b')});db[_0x0a9e('0x57')]['belongsToMany'](db[_0x0a9e('0x129')],{'through':_0x0a9e('0x18c'),'as':_0x0a9e('0x155')});db[_0x0a9e('0x59')]['hasMany'](db['Disposition'],{'as':_0x0a9e('0x168'),'foreignKey':_0x0a9e('0x18d'),'onDelete':_0x0a9e('0x10e')});db['OpenchannelAccount'][_0x0a9e('0x110')](db[_0x0a9e('0x17e')],{'as':_0x0a9e('0x169'),'foreignKey':_0x0a9e('0x18d')});db[_0x0a9e('0x59')][_0x0a9e('0x110')](db[_0x0a9e('0x5d')],{'as':_0x0a9e('0x16a'),'foreignKey':'OpenchannelAccountId'});db['OpenchannelAccount'][_0x0a9e('0x110')](db[_0x0a9e('0x5e')],{'as':'Messages','foreignKey':_0x0a9e('0x18d')});db['OpenchannelAccount'][_0x0a9e('0x110')](db[_0x0a9e('0x5b')],{'as':'Applications','foreignKey':_0x0a9e('0x18d'),'onDelete':_0x0a9e('0x10e')});db['OpenchannelAccount'][_0x0a9e('0x150')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x59')][_0x0a9e('0x150')](db[_0x0a9e('0x7d')],{'as':'mandatoryDispositionPause','foreignKey':_0x0a9e('0x154')});db[_0x0a9e('0x59')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':_0x0a9e('0x140')});db[_0x0a9e('0x5b')]['belongsTo'](db['User'],{'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x5b')][_0x0a9e('0x150')](db['OpenchannelQueue'],{'onDelete':'restrict','foreignKey':_0x0a9e('0x18e')});db['OpenchannelApplication'][_0x0a9e('0x150')](db[_0x0a9e('0x59')],{'onDelete':_0x0a9e('0x164'),'foreignKey':_0x0a9e('0x18d')});db[_0x0a9e('0x5b')][_0x0a9e('0x150')](db[_0x0a9e('0x17b')],{'onDelete':_0x0a9e('0x164'),'foreignKey':_0x0a9e('0x153')});db['OpenchannelApplication']['belongsTo'](db[_0x0a9e('0x86')],{'onDelete':'restrict','foreignKey':_0x0a9e('0x181')});db[_0x0a9e('0x5d')][_0x0a9e('0x110')](db[_0x0a9e('0x5e')],{'as':'Messages','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x18f')});db[_0x0a9e('0x5d')]['belongsTo'](db[_0x0a9e('0x59')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x18d')});db['OpenchannelInteraction'][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x5d')][_0x0a9e('0x150')](db['User'],{'as':'Owner','foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x5d')][_0x0a9e('0x121')](db['Tag'],{'through':'openchannel_interaction_has_tags','as':_0x0a9e('0x174')});db[_0x0a9e('0x5d')][_0x0a9e('0x121')](db['Tag'],{'through':'openchannel_interaction_has_tags','as':_0x0a9e('0x175')});db[_0x0a9e('0x5d')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x176'),'through':'user_has_openchannel_interactions','foreignKey':_0x0a9e('0x18f')});db['OpenchannelMessage'][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'onDelete':'cascade','as':_0x0a9e('0x11')});db['OpenchannelMessage'][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'onDelete':_0x0a9e('0x10e'),'as':_0x0a9e('0x160')});db[_0x0a9e('0x5e')]['belongsTo'](db[_0x0a9e('0x5d')],{'onDelete':_0x0a9e('0x10e'),'as':_0x0a9e('0x179'),'foreignKey':'OpenchannelInteractionId'});db[_0x0a9e('0x5e')]['belongsTo'](db[_0x0a9e('0xe4')],{'as':_0x0a9e('0xe4'),'foreignKey':_0x0a9e('0x186')});db['OpenchannelMessage'][_0x0a9e('0x150')](db[_0x0a9e('0x59')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x18d')});db[_0x0a9e('0x137')][_0x0a9e('0x121')](db['User'],{'as':_0x0a9e('0x170'),'through':_0x0a9e('0x35'),'foreignKey':_0x0a9e('0x18e')});db[_0x0a9e('0x137')][_0x0a9e('0x121')](db[_0x0a9e('0x129')],{'through':_0x0a9e('0x190'),'as':_0x0a9e('0x155')});db['ChatWebsite'][_0x0a9e('0x110')](db[_0x0a9e('0x167')],{'as':_0x0a9e('0x168'),'foreignKey':_0x0a9e('0x17a'),'onDelete':'cascade'});db[_0x0a9e('0x60')]['hasMany'](db[_0x0a9e('0x17e')],{'as':_0x0a9e('0x169'),'foreignKey':_0x0a9e('0x17a')});db['ChatWebsite'][_0x0a9e('0x110')](db[_0x0a9e('0x191')],{'as':_0x0a9e('0x192')});db[_0x0a9e('0x60')]['hasMany'](db[_0x0a9e('0x64')],{'as':_0x0a9e('0x16a')});db[_0x0a9e('0x60')][_0x0a9e('0x110')](db[_0x0a9e('0x63')],{'as':_0x0a9e('0x147'),'foreignKey':_0x0a9e('0x17a'),'onDelete':'cascade'});db[_0x0a9e('0x60')][_0x0a9e('0x110')](db[_0x0a9e('0x65')],{'as':_0x0a9e('0x158')});db['ChatWebsite'][_0x0a9e('0x150')](db['CmList'],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x60')][_0x0a9e('0x150')](db[_0x0a9e('0x17b')],{'as':_0x0a9e('0x17b'),'foreignKey':_0x0a9e('0x153')});db['ChatWebsite'][_0x0a9e('0x150')](db['MailAccount'],{'as':_0x0a9e('0x3b'),'foreignKey':_0x0a9e('0x161')});db['ChatWebsite'][_0x0a9e('0x150')](db[_0x0a9e('0x7d')],{'as':_0x0a9e('0x16f'),'foreignKey':_0x0a9e('0x154')});db['ChatWebsite'][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':'Agents','through':_0x0a9e('0x13b')});db['OpenchannelQueueReport']['belongsTo'](db['OpenchannelAccount'],{});db[_0x0a9e('0x62')][_0x0a9e('0x150')](db['CmList'],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db['OpenchannelQueueReport'][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x62')][_0x0a9e('0x150')](db[_0x0a9e('0x5d')],{});db['OpenchannelQueueReport'][_0x0a9e('0x150')](db['OpenchannelMessage'],{});db[_0x0a9e('0x62')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{});db[_0x0a9e('0x62')][_0x0a9e('0x150')](db[_0x0a9e('0x137')],{});db['ChatApplication'][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x193'),'foreignKey':'UserId','onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x63')][_0x0a9e('0x150')](db[_0x0a9e('0x67')],{'as':_0x0a9e('0x194'),'foreignKey':_0x0a9e('0x195'),'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x63')][_0x0a9e('0x150')](db[_0x0a9e('0x60')],{'as':_0x0a9e('0x196'),'foreignKey':_0x0a9e('0x17a'),'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x63')][_0x0a9e('0x150')](db[_0x0a9e('0x86')],{'onDelete':'restrict','foreignKey':_0x0a9e('0x181')});db[_0x0a9e('0x64')][_0x0a9e('0x110')](db['ChatMessage'],{'as':_0x0a9e('0x158'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x197')});db[_0x0a9e('0x64')]['belongsTo'](db[_0x0a9e('0x60')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x17a')});db[_0x0a9e('0x64')]['belongsTo'](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x64')]['belongsTo'](db['User'],{'as':_0x0a9e('0x184'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x64')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'through':_0x0a9e('0x198'),'as':_0x0a9e('0x174')});db[_0x0a9e('0x64')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'through':_0x0a9e('0x198'),'as':_0x0a9e('0x175')});db[_0x0a9e('0x64')][_0x0a9e('0x121')](db['User'],{'as':_0x0a9e('0x176'),'through':_0x0a9e('0x199'),'foreignKey':_0x0a9e('0x197')});db['ChatMessage']['belongsTo'](db[_0x0a9e('0x11')],{'onDelete':'cascade','as':_0x0a9e('0x11')});db[_0x0a9e('0x65')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'onDelete':'cascade','as':'Contact','foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x65')][_0x0a9e('0x150')](db[_0x0a9e('0x64')],{'onDelete':'cascade','as':_0x0a9e('0x179'),'foreignKey':_0x0a9e('0x197')});db[_0x0a9e('0x65')][_0x0a9e('0x150')](db[_0x0a9e('0xe4')],{'as':'Attachment','foreignKey':'AttachmentId'});db[_0x0a9e('0x65')][_0x0a9e('0x150')](db[_0x0a9e('0x60')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x17a')});db[_0x0a9e('0x66')][_0x0a9e('0x110')](db['Attachment'],{'as':_0x0a9e('0x178'),'foreignKey':_0x0a9e('0x19a'),'onDelete':_0x0a9e('0x10e'),'hooks':!![]});db['ChatOfflineMessage']['belongsTo'](db['CmContact'],{'onDelete':_0x0a9e('0x10e'),'as':_0x0a9e('0x160'),'foreignKey':'ContactId'});db[_0x0a9e('0x66')][_0x0a9e('0x150')](db[_0x0a9e('0x60')],{'as':'Account','foreignKey':'ChatWebsiteId'});db[_0x0a9e('0x67')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':'UserChatQueue','hooks':!![]});db[_0x0a9e('0x67')]['belongsToMany'](db['Team'],{'through':_0x0a9e('0x19b'),'as':'Teams'});db[_0x0a9e('0x68')][_0x0a9e('0x110')](db[_0x0a9e('0xcc')],{'as':'Messages','foreignKey':_0x0a9e('0x19c'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x68')]['belongsToMany'](db['User'],{'as':_0x0a9e('0x14a'),'through':_0x0a9e('0x123')});db[_0x0a9e('0x191')][_0x0a9e('0x150')](db[_0x0a9e('0x60')],{'as':_0x0a9e('0x196'),'foreignKey':'ChatWebsiteId'});db['CmCompany'][_0x0a9e('0x110')](db[_0x0a9e('0x124')],{'as':'Contacts','foreignKey':'CompanyId'});db['CmContact']['hasMany'](db['CmContactHasItem'],{'as':'Phones','foreignKey':_0x0a9e('0x19d')});db['CmContact'][_0x0a9e('0x110')](db[_0x0a9e('0x6d')],{'as':_0x0a9e('0x14c'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x124')][_0x0a9e('0x110')](db[_0x0a9e('0x71')],{'as':'HopperFinals','foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x124')][_0x0a9e('0x110')](db[_0x0a9e('0x116')],{'as':_0x0a9e('0x19e'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x124')][_0x0a9e('0x110')](db[_0x0a9e('0x73')],{'as':_0x0a9e('0x73'),'foreignKey':_0x0a9e('0x172')});db['CmContact'][_0x0a9e('0x110')](db[_0x0a9e('0xd0')],{'as':'JscriptySessions','foreignKey':_0x0a9e('0x172')});db['CmContact'][_0x0a9e('0x110')](db[_0x0a9e('0x5d')],{'as':'OpenchannelInteractions','foreignKey':'ContactId','onDelete':_0x0a9e('0x164')});db['CmContact'][_0x0a9e('0x110')](db[_0x0a9e('0x64')],{'as':_0x0a9e('0x119'),'foreignKey':_0x0a9e('0x172'),'onDelete':_0x0a9e('0x164')});db['CmContact'][_0x0a9e('0x110')](db['SmsInteraction'],{'as':'SmsInteractions','foreignKey':_0x0a9e('0x172'),'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x124')][_0x0a9e('0x110')](db[_0x0a9e('0x11b')],{'as':'FaxInteractions','foreignKey':_0x0a9e('0x172'),'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x124')][_0x0a9e('0x110')](db['MailInteraction'],{'as':_0x0a9e('0x11d'),'foreignKey':_0x0a9e('0x172'),'onDelete':'restrict'});db[_0x0a9e('0x124')][_0x0a9e('0x150')](db[_0x0a9e('0x19f')],{'as':_0x0a9e('0x1a0'),'foreignKey':'CompanyId'});db[_0x0a9e('0x124')][_0x0a9e('0x150')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d'),'onDelete':'cascade'});db[_0x0a9e('0x124')][_0x0a9e('0x121')](db['User'],{'as':_0x0a9e('0x176'),'through':'cm_user_has_contacts'});db[_0x0a9e('0x124')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'as':_0x0a9e('0x174'),'through':_0x0a9e('0x1a1')});db[_0x0a9e('0x124')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'through':_0x0a9e('0x1a1'),'as':_0x0a9e('0x175')});db[_0x0a9e('0x6d')][_0x0a9e('0x110')](db[_0x0a9e('0x1a2')],{'as':_0x0a9e('0x1a3'),'foreignKey':_0x0a9e('0x1a4')});db['CmHopper'][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x6d')][_0x0a9e('0x150')](db[_0x0a9e('0x139')],{'as':'List','foreignKey':'ListId','onDelete':'cascade'});db['CmHopper'][_0x0a9e('0x150')](db['User'],{'as':'Agent','foreignKey':'UserId'});db[_0x0a9e('0x6d')][_0x0a9e('0x150')](db[_0x0a9e('0x1a')],{'as':_0x0a9e('0x194'),'foreignKey':'VoiceQueueId','onDelete':'cascade'});db[_0x0a9e('0x6d')][_0x0a9e('0x150')](db[_0x0a9e('0x1a5')],{'as':_0x0a9e('0x1a5'),'foreignKey':'CampaignId','onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x6d')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x184'),'foreignKey':_0x0a9e('0x1a6')});db['CmHopperBlack'][_0x0a9e('0x150')](db['CmContact'],{'as':'Contact','foreignKey':_0x0a9e('0x172'),'onDelete':'cascade'});db[_0x0a9e('0x6f')][_0x0a9e('0x150')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x6f')][_0x0a9e('0x150')](db[_0x0a9e('0x1a')],{'as':'Queue','foreignKey':_0x0a9e('0x14b'),'onDelete':_0x0a9e('0x10e')});db['CmHopperBlack'][_0x0a9e('0x150')](db[_0x0a9e('0x1a5')],{'as':_0x0a9e('0x1a5'),'foreignKey':_0x0a9e('0x1a7'),'onDelete':'cascade'});db[_0x0a9e('0x76')][_0x0a9e('0x110')](db[_0x0a9e('0x7a')],{'as':{'plural':_0x0a9e('0x1a8'),'singular':_0x0a9e('0x1a9')},'foreignKey':'AutomationAllId','onDelete':'cascade','hooks':!![]});db[_0x0a9e('0x76')]['hasMany'](db[_0x0a9e('0x7a')],{'as':{'plural':'Any','singular':_0x0a9e('0x1aa')},'foreignKey':'AutomationAnyId','onDelete':_0x0a9e('0x10e'),'hooks':!![]});db['Automation'][_0x0a9e('0x110')](db[_0x0a9e('0x74')],{'as':_0x0a9e('0x1ab'),'foreignKey':'AutomationId','onDelete':'cascade','hooks':!![]});db[_0x0a9e('0x167')]['hasMany'](db[_0x0a9e('0x167')],{'as':'Dispositions','foreignKey':_0x0a9e('0x1ac'),'onDelete':'cascade'});db[_0x0a9e('0x17b')][_0x0a9e('0x110')](db['Interval'],{'as':_0x0a9e('0x1ad'),'foreignKey':_0x0a9e('0x153'),'onDelete':_0x0a9e('0x10e'),'hooks':!![],'required':![]});db[_0x0a9e('0x17b')][_0x0a9e('0x110')](db[_0x0a9e('0x16')],{'as':_0x0a9e('0x114'),'foreignKey':_0x0a9e('0x153'),'onDelete':_0x0a9e('0x164')});db['Interval'][_0x0a9e('0x110')](db[_0x0a9e('0x16b')],{'as':_0x0a9e('0x1ae'),'foreignKey':_0x0a9e('0x153')});db[_0x0a9e('0x17b')]['hasMany'](db['ChatApplication'],{'as':_0x0a9e('0x1af'),'foreignKey':'IntervalId'});db[_0x0a9e('0x17b')]['hasMany'](db[_0x0a9e('0x47')],{'as':_0x0a9e('0x1b0'),'foreignKey':_0x0a9e('0x153')});db[_0x0a9e('0x17b')][_0x0a9e('0x110')](db[_0x0a9e('0x52')],{'as':_0x0a9e('0x1b1'),'foreignKey':'IntervalId'});db['Schedule'][_0x0a9e('0x150')](db[_0x0a9e('0x3b')],{});db['Schedule'][_0x0a9e('0x150')](db[_0x0a9e('0x94')],{'foreignKey':_0x0a9e('0x1b2')});db['Schedule']['belongsTo'](db['AnalyticCustomReport'],{'foreignKey':_0x0a9e('0x1b3')});db[_0x0a9e('0x84')][_0x0a9e('0x121')](db[_0x0a9e('0x18')],{'as':'Mohs','through':_0x0a9e('0x149'),'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x86')]['belongsToMany'](db[_0x0a9e('0x124')],{'through':'cm_contact_has_tags'});db['Tag'][_0x0a9e('0x121')](db[_0x0a9e('0x64')],{'through':'chat_interaction_has_tags'});db['Tag'][_0x0a9e('0x121')](db['MailInteraction'],{'through':_0x0a9e('0x173')});db['Tag'][_0x0a9e('0x121')](db[_0x0a9e('0x53')],{'through':_0x0a9e('0x18a')});db['Tag']['belongsToMany'](db[_0x0a9e('0x11b')],{'through':_0x0a9e('0x185')});db[_0x0a9e('0x86')][_0x0a9e('0x121')](db['OpenchannelInteraction'],{'through':_0x0a9e('0x1b4')});db[_0x0a9e('0x86')]['belongsToMany'](db[_0x0a9e('0xfb')],{'through':_0x0a9e('0x1b5')});db[_0x0a9e('0x1b6')]['belongsTo'](db[_0x0a9e('0x88')],{'as':_0x0a9e('0x1b7'),'foreignKey':_0x0a9e('0x1b8')});db[_0x0a9e('0x1a2')][_0x0a9e('0x150')](db[_0x0a9e('0x6d')],{'as':_0x0a9e('0x1b9'),'foreignKey':_0x0a9e('0x1a4')});db[_0x0a9e('0x1b6')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x19d')});db[_0x0a9e('0x8d')][_0x0a9e('0x110')](db[_0x0a9e('0x7a')],{'as':{'plural':_0x0a9e('0x1ba'),'singular':_0x0a9e('0x1bb')},'foreignKey':_0x0a9e('0x1bc'),'onDelete':_0x0a9e('0x10e'),'hooks':!![]});db[_0x0a9e('0x8d')][_0x0a9e('0x110')](db['Condition'],{'as':{'plural':_0x0a9e('0x1bd'),'singular':_0x0a9e('0x1be')},'foreignKey':_0x0a9e('0x1bf'),'onDelete':'cascade','hooks':!![]});db[_0x0a9e('0x8d')][_0x0a9e('0x110')](db[_0x0a9e('0x74')],{'as':_0x0a9e('0x1ab'),'foreignKey':'TriggerId','onDelete':_0x0a9e('0x10e'),'hooks':!![]});db[_0x0a9e('0x1c0')]['hasMany'](db[_0x0a9e('0x99')],{'as':_0x0a9e('0x1c1'),'onDelete':_0x0a9e('0x10e'),'foreignKey':'CustomReportId','hooks':!![]});db['AnalyticDefaultReport'][_0x0a9e('0x110')](db[_0x0a9e('0x99')],{'as':_0x0a9e('0x1c1'),'onDelete':'cascade','foreignKey':'DefaultReportId'});db[_0x0a9e('0x98')][_0x0a9e('0x110')](db[_0x0a9e('0x99')],{'as':_0x0a9e('0x1c1'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c2')});db['AnalyticFieldReport']['belongsTo'](db[_0x0a9e('0x98')],{'foreignKey':_0x0a9e('0x1c2')});db[_0x0a9e('0x9c')]['hasMany'](db[_0x0a9e('0x9e')],{'as':_0x0a9e('0x1c3'),'onDelete':_0x0a9e('0x10e'),'foreignKey':'AccountId'});db['SalesforceConfiguration'][_0x0a9e('0x110')](db[_0x0a9e('0xa0')],{'as':_0x0a9e('0x1c4'),'onDelete':'cascade','foreignKey':'SubjectId'});db[_0x0a9e('0x9e')]['hasMany'](db['SalesforceField'],{'as':'Descriptions','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0x9e')]['hasMany'](db[_0x0a9e('0xa0')],{'as':_0x0a9e('0x1c1'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c6')});db['SalesforceConfiguration'][_0x0a9e('0x150')](db[_0x0a9e('0x9c')],{'as':'Account','foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xa0')][_0x0a9e('0x110')](db['SalesforceField'],{'as':_0x0a9e('0x1c8'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xa0')]['hasMany'](db[_0x0a9e('0xa0')],{'as':_0x0a9e('0x1ca'),'foreignKey':_0x0a9e('0x1c5')});db['SalesforceField'][_0x0a9e('0x110')](db[_0x0a9e('0xa0')],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xa0')][_0x0a9e('0x150')](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':'VariableId'});db[_0x0a9e('0xa1')][_0x0a9e('0x110')](db[_0x0a9e('0xa2')],{'as':_0x0a9e('0x1c3'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xa2')]['hasMany'](db[_0x0a9e('0x1cc')],{'as':_0x0a9e('0x1c4'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xa2')][_0x0a9e('0x110')](db[_0x0a9e('0x1cc')],{'as':_0x0a9e('0x1cd'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c5')});db['SugarcrmConfiguration'][_0x0a9e('0x110')](db[_0x0a9e('0x1cc')],{'as':'Fields','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c6')});db['SugarcrmConfiguration'][_0x0a9e('0x150')](db[_0x0a9e('0xa1')],{'as':'Account','foreignKey':_0x0a9e('0x1c7')});db['SugarcrmField']['hasMany'](db['SugarcrmField'],{'as':_0x0a9e('0x1c8'),'foreignKey':_0x0a9e('0x1c9')});db['SugarcrmField'][_0x0a9e('0x110')](db[_0x0a9e('0x1cc')],{'as':'Description','foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0x1cc')]['hasMany'](db[_0x0a9e('0x1cc')],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db['SugarcrmField'][_0x0a9e('0x150')](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':_0x0a9e('0x1ce')});db[_0x0a9e('0x1cf')]['hasMany'](db[_0x0a9e('0xa6')],{'as':'Configurations','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xa6')][_0x0a9e('0x110')](db[_0x0a9e('0xa8')],{'as':_0x0a9e('0x1c4'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xa6')]['hasMany'](db[_0x0a9e('0xa8')],{'as':_0x0a9e('0x1cd'),'onDelete':_0x0a9e('0x10e'),'foreignKey':'DescriptionId'});db['DeskConfiguration']['hasMany'](db['DeskField'],{'as':'Fields','onDelete':_0x0a9e('0x10e'),'foreignKey':'FieldId'});db[_0x0a9e('0xa6')][_0x0a9e('0x150')](db[_0x0a9e('0x1cf')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xa6')]['belongsToMany'](db[_0x0a9e('0x86')],{'through':'int_desk_configuration_has_tags'});db['DeskField'][_0x0a9e('0x110')](db['DeskField'],{'as':_0x0a9e('0x1c8'),'foreignKey':'SubjectId'});db[_0x0a9e('0xa8')][_0x0a9e('0x110')](db[_0x0a9e('0xa8')],{'as':_0x0a9e('0x1ca'),'foreignKey':_0x0a9e('0x1c5')});db['DeskField'][_0x0a9e('0x110')](db[_0x0a9e('0xa8')],{'as':'Field','foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xa8')]['belongsTo'](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':_0x0a9e('0x1ce')});db[_0x0a9e('0xaa')][_0x0a9e('0x110')](db[_0x0a9e('0xac')],{'as':_0x0a9e('0x1c3'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xac')][_0x0a9e('0x110')](db[_0x0a9e('0xae')],{'as':'Subjects','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xac')][_0x0a9e('0x110')](db[_0x0a9e('0xae')],{'as':_0x0a9e('0x1cd'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c5')});db['ZohoConfiguration'][_0x0a9e('0x110')](db[_0x0a9e('0xae')],{'as':_0x0a9e('0x1c1'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xac')][_0x0a9e('0x150')](db[_0x0a9e('0xaa')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xae')][_0x0a9e('0x110')](db[_0x0a9e('0xae')],{'as':_0x0a9e('0x1c8'),'foreignKey':'SubjectId'});db[_0x0a9e('0xae')][_0x0a9e('0x110')](db[_0x0a9e('0xae')],{'as':'Description','foreignKey':'DescriptionId'});db[_0x0a9e('0xae')][_0x0a9e('0x110')](db[_0x0a9e('0xae')],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xae')][_0x0a9e('0x150')](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':'VariableId'});db[_0x0a9e('0xaf')][_0x0a9e('0x110')](db['ZendeskConfiguration'],{'as':_0x0a9e('0x1c3'),'onDelete':_0x0a9e('0x10e'),'foreignKey':'AccountId'});db['ZendeskConfiguration'][_0x0a9e('0x110')](db[_0x0a9e('0xb2')],{'as':_0x0a9e('0x1c4'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0x1d0')]['hasMany'](db[_0x0a9e('0xb2')],{'as':'Descriptions','foreignKey':'DescriptionId'});db['ZendeskConfiguration'][_0x0a9e('0x110')](db['ZendeskField'],{'as':'Fields','foreignKey':'FieldId'});db[_0x0a9e('0x1d0')][_0x0a9e('0x150')](db[_0x0a9e('0xaf')],{'as':_0x0a9e('0x183'),'foreignKey':'AccountId'});db[_0x0a9e('0x1d0')]['belongsToMany'](db['Tag'],{'through':_0x0a9e('0x1d1')});db[_0x0a9e('0xb2')][_0x0a9e('0x110')](db['ZendeskField'],{'as':'Subject','foreignKey':'SubjectId'});db[_0x0a9e('0xb2')][_0x0a9e('0x110')](db[_0x0a9e('0xb2')],{'as':_0x0a9e('0x1ca'),'foreignKey':_0x0a9e('0x1c5')});db['ZendeskField'][_0x0a9e('0x110')](db[_0x0a9e('0xb2')],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xb2')][_0x0a9e('0x150')](db['Variable'],{'as':_0x0a9e('0x8e'),'foreignKey':_0x0a9e('0x1ce')});db[_0x0a9e('0x1d2')][_0x0a9e('0x110')](db[_0x0a9e('0x1d3')],{'as':_0x0a9e('0x1c3'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0x1d3')][_0x0a9e('0x110')](db[_0x0a9e('0xb5')],{'as':_0x0a9e('0x1c4'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0x1d3')][_0x0a9e('0x110')](db[_0x0a9e('0xb5')],{'as':_0x0a9e('0x1cd'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0x1d3')]['hasMany'](db['FreshdeskField'],{'as':'Fields','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c6')});db['FreshdeskConfiguration'][_0x0a9e('0x150')](db[_0x0a9e('0x1d2')],{'as':'Account','foreignKey':_0x0a9e('0x1c7')});db['FreshdeskConfiguration'][_0x0a9e('0x121')](db['Tag'],{'through':_0x0a9e('0x1d4')});db[_0x0a9e('0xb5')][_0x0a9e('0x110')](db[_0x0a9e('0xb5')],{'as':'Subject','foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xb5')][_0x0a9e('0x110')](db['FreshdeskField'],{'as':'Description','foreignKey':'DescriptionId'});db['FreshdeskField'][_0x0a9e('0x110')](db[_0x0a9e('0xb5')],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xb5')]['belongsTo'](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':_0x0a9e('0x1ce')});db[_0x0a9e('0x1d5')]['hasMany'](db[_0x0a9e('0xb8')],{'as':_0x0a9e('0x1c3'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xb8')]['hasMany'](db[_0x0a9e('0xb9')],{'as':_0x0a9e('0x1c4'),'foreignKey':_0x0a9e('0x1c9')});db['VtigerConfiguration'][_0x0a9e('0x110')](db['VtigerField'],{'as':_0x0a9e('0x1cd'),'foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0xb8')][_0x0a9e('0x110')](db[_0x0a9e('0xb9')],{'as':'Fields','foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xb8')][_0x0a9e('0x150')](db[_0x0a9e('0x1d5')],{'as':_0x0a9e('0x183'),'foreignKey':'AccountId'});db[_0x0a9e('0xb9')][_0x0a9e('0x110')](db[_0x0a9e('0xb9')],{'as':'Subject','foreignKey':_0x0a9e('0x1c9')});db['VtigerField']['hasMany'](db[_0x0a9e('0xb9')],{'as':'Description','foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0xb9')][_0x0a9e('0x110')](db['VtigerField'],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xb9')][_0x0a9e('0x150')](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':_0x0a9e('0x1ce')});db[_0x0a9e('0xba')]['hasMany'](db[_0x0a9e('0xbc')],{'as':_0x0a9e('0x1c3'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xbc')]['hasMany'](db['ServicenowField'],{'as':_0x0a9e('0x1c4'),'foreignKey':'SubjectId'});db[_0x0a9e('0xbc')][_0x0a9e('0x110')](db['ServicenowField'],{'as':_0x0a9e('0x1cd'),'foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0xbc')]['hasMany'](db[_0x0a9e('0x1d6')],{'as':_0x0a9e('0x1c1'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xbc')][_0x0a9e('0x150')](db[_0x0a9e('0xba')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x1c7')});db['ServicenowField'][_0x0a9e('0x110')](db[_0x0a9e('0x1d6')],{'as':_0x0a9e('0x1c8'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0x1d6')]['hasMany'](db[_0x0a9e('0x1d6')],{'as':'Description','foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0x1d6')][_0x0a9e('0x110')](db['ServicenowField'],{'as':_0x0a9e('0x1cb'),'foreignKey':'FieldId'});db[_0x0a9e('0x1d6')][_0x0a9e('0x150')](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':'VariableId'});db[_0x0a9e('0xbe')]['hasMany'](db[_0x0a9e('0xbf')],{'as':_0x0a9e('0x1c3'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xbe')][_0x0a9e('0x150')](db['CloudProvider'],{'as':_0x0a9e('0x103'),'foreignKey':'CloudProviderId'});db[_0x0a9e('0xbf')][_0x0a9e('0x110')](db['Dynamics365Field'],{'as':'Subjects','onDelete':'cascade','foreignKey':'SubjectId'});db[_0x0a9e('0xbf')][_0x0a9e('0x110')](db[_0x0a9e('0xc1')],{'as':_0x0a9e('0x1cd'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c5')});db['Dynamics365Configuration'][_0x0a9e('0x110')](db[_0x0a9e('0xc1')],{'as':'Fields','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xbf')][_0x0a9e('0x150')](db[_0x0a9e('0xbe')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x1c7')});db['Dynamics365Field'][_0x0a9e('0x110')](db[_0x0a9e('0xc1')],{'as':_0x0a9e('0x1c8'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xc1')][_0x0a9e('0x110')](db[_0x0a9e('0xc1')],{'as':_0x0a9e('0x1ca'),'foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0xc1')][_0x0a9e('0x110')](db['Dynamics365Field'],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xc1')][_0x0a9e('0x150')](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':_0x0a9e('0x1ce')});db['FreshsalesAccount'][_0x0a9e('0x110')](db[_0x0a9e('0xc5')],{'as':_0x0a9e('0x1c3'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xc5')][_0x0a9e('0x110')](db['FreshsalesField'],{'as':'Subjects','foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xc5')][_0x0a9e('0x110')](db[_0x0a9e('0xc7')],{'as':_0x0a9e('0x1cd'),'foreignKey':'DescriptionId'});db[_0x0a9e('0xc5')]['hasMany'](db[_0x0a9e('0xc7')],{'as':_0x0a9e('0x1c1'),'foreignKey':'FieldId'});db[_0x0a9e('0xc5')]['belongsTo'](db[_0x0a9e('0xc3')],{'as':_0x0a9e('0x183'),'foreignKey':'AccountId'});db[_0x0a9e('0xc7')][_0x0a9e('0x110')](db[_0x0a9e('0xc7')],{'as':'Subject','foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xc7')][_0x0a9e('0x110')](db[_0x0a9e('0xc7')],{'as':_0x0a9e('0x1ca'),'foreignKey':_0x0a9e('0x1c5')});db['FreshsalesField'][_0x0a9e('0x110')](db[_0x0a9e('0xc7')],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db['FreshsalesField']['belongsTo'](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':_0x0a9e('0x1ce')});db['ChatQueueReport']['belongsTo'](db[_0x0a9e('0x60')],{});db['ChatQueueReport']['belongsTo'](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x16c'),'foreignKey':'ListId'});db[_0x0a9e('0xca')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db['ChatQueueReport'][_0x0a9e('0x150')](db[_0x0a9e('0x64')],{});db['ChatQueueReport'][_0x0a9e('0x150')](db[_0x0a9e('0x65')],{});db[_0x0a9e('0xca')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{});db['ChatQueueReport'][_0x0a9e('0x150')](db[_0x0a9e('0x67')],{});db['ChatInternalMessage']['belongsTo'](db[_0x0a9e('0x11')],{'onDelete':_0x0a9e('0x10e'),'foreignKey':'FromId'});db['ChatInternalMessage'][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1d7')});db[_0x0a9e('0xd0')]['hasMany'](db[_0x0a9e('0x1d8')],{'foreignKey':'SessionId','onDelete':'cascade'});db[_0x0a9e('0xd0')]['hasMany'](db[_0x0a9e('0xcd')],{'foreignKey':'SessionId','onDelete':_0x0a9e('0x10e')});db['SmsQueueReport']['belongsTo'](db[_0x0a9e('0x50')],{});db[_0x0a9e('0xd2')][_0x0a9e('0x150')](db['CmList'],{'as':'List','foreignKey':'ListId'});db[_0x0a9e('0xd2')][_0x0a9e('0x150')](db['CmContact'],{'as':_0x0a9e('0x160'),'foreignKey':'ContactId'});db[_0x0a9e('0xd2')]['belongsTo'](db[_0x0a9e('0x53')],{});db[_0x0a9e('0xd2')]['belongsTo'](db['SmsMessage'],{});db['SmsQueueReport'][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{});db[_0x0a9e('0xd2')][_0x0a9e('0x150')](db[_0x0a9e('0x57')],{});db[_0x0a9e('0x1d9')][_0x0a9e('0x110')](db[_0x0a9e('0xd0')],{'foreignKey':_0x0a9e('0x1da')});db[_0x0a9e('0x1d9')][_0x0a9e('0x110')](db[_0x0a9e('0x1d8')],{'foreignKey':_0x0a9e('0x1da')});db[_0x0a9e('0x1d9')][_0x0a9e('0x110')](db['JscriptyAnswerReport'],{'foreignKey':'ProjectId'});db[_0x0a9e('0x129')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':'user_has_teams'});db[_0x0a9e('0x129')]['belongsToMany'](db[_0x0a9e('0x1a')],{'through':'TeamVoiceQueue','as':_0x0a9e('0x131')});db['Team']['belongsToMany'](db[_0x0a9e('0x3c')],{'through':_0x0a9e('0x171'),'as':_0x0a9e('0x1db')});db[_0x0a9e('0x129')]['belongsToMany'](db['ChatQueue'],{'through':_0x0a9e('0x19b'),'as':'ChatQueues'});db[_0x0a9e('0x129')][_0x0a9e('0x121')](db['FaxQueue'],{'through':_0x0a9e('0x187'),'as':'FaxQueues'});db[_0x0a9e('0x129')][_0x0a9e('0x121')](db[_0x0a9e('0x57')],{'through':_0x0a9e('0x18c'),'as':_0x0a9e('0x136')});db[_0x0a9e('0x129')][_0x0a9e('0x121')](db[_0x0a9e('0x137')],{'through':_0x0a9e('0x190'),'as':_0x0a9e('0x1dc')});db[_0x0a9e('0x129')][_0x0a9e('0x121')](db[_0x0a9e('0x101')],{'through':_0x0a9e('0x1dd'),'as':_0x0a9e('0x138')});db[_0x0a9e('0x129')]['belongsToMany'](db[_0x0a9e('0xf1')],{'through':_0x0a9e('0x107'),'as':_0x0a9e('0x132')});db['Campaign'][_0x0a9e('0x110')](db[_0x0a9e('0x6d')],{'as':_0x0a9e('0x14c'),'foreignKey':_0x0a9e('0x1a7')});db[_0x0a9e('0x1a5')][_0x0a9e('0x110')](db[_0x0a9e('0x71')],{'as':_0x0a9e('0x115'),'foreignKey':_0x0a9e('0x1a7')});db[_0x0a9e('0x1a5')][_0x0a9e('0x110')](db['CmHopperHistory'],{'as':_0x0a9e('0x19e'),'foreignKey':_0x0a9e('0x1a7')});db[_0x0a9e('0x1a5')]['hasMany'](db[_0x0a9e('0x6f')],{'as':'HopperBlacks','foreignKey':'CampaignId'});db[_0x0a9e('0x1a5')]['belongsTo'](db[_0x0a9e('0x28')],{'as':'Trunk','foreignKey':_0x0a9e('0x14f')});db[_0x0a9e('0x1a5')][_0x0a9e('0x150')](db['Trunk'],{'as':_0x0a9e('0x151'),'foreignKey':'TrunkBackupId'});db['Campaign'][_0x0a9e('0x150')](db[_0x0a9e('0x17b')],{'as':_0x0a9e('0x17b'),'foreignKey':_0x0a9e('0x153')});db[_0x0a9e('0x1a5')][_0x0a9e('0x150')](db['SquareProject'],{'as':_0x0a9e('0xdc'),'foreignKey':_0x0a9e('0x1de')});db[_0x0a9e('0x1a5')][_0x0a9e('0x121')](db[_0x0a9e('0x139')],{'as':'Lists','through':_0x0a9e('0x1df')});db[_0x0a9e('0x1a5')][_0x0a9e('0x121')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x156'),'through':_0x0a9e('0x1e0')});db[_0x0a9e('0xe4')][_0x0a9e('0x150')](db[_0x0a9e('0x66')],{'as':_0x0a9e('0x66'),'foreignKey':_0x0a9e('0x19a')});db[_0x0a9e('0x1e1')][_0x0a9e('0x150')](db['MailMessage'],{});db['MailTransferReport'][_0x0a9e('0x150')](db[_0x0a9e('0x11c')],{});db['MailTransferReport'][_0x0a9e('0x150')](db[_0x0a9e('0x3b')],{'foreignKey':_0x0a9e('0x1e2'),'as':_0x0a9e('0x1e3')});db[_0x0a9e('0x1e1')]['belongsTo'](db['User'],{'foreignKey':'FromUserId','as':_0x0a9e('0x1e4')});db[_0x0a9e('0x1e1')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'foreignKey':_0x0a9e('0x1e5'),'as':_0x0a9e('0x1e6')});db[_0x0a9e('0x1e1')][_0x0a9e('0x150')](db[_0x0a9e('0x3c')],{'foreignKey':'ToMailQueueId','as':'ToQueue'});db[_0x0a9e('0x1e1')][_0x0a9e('0x150')](db[_0x0a9e('0x3b')],{'foreignKey':_0x0a9e('0x1e7'),'as':_0x0a9e('0x1e8')});db[_0x0a9e('0xe8')][_0x0a9e('0x150')](db[_0x0a9e('0x65')],{});db[_0x0a9e('0xe8')][_0x0a9e('0x150')](db['ChatInteraction'],{});db[_0x0a9e('0xe8')]['belongsTo'](db['ChatWebsite'],{'foreignKey':_0x0a9e('0x1e9'),'as':_0x0a9e('0x1e3')});db[_0x0a9e('0xe8')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'foreignKey':_0x0a9e('0x1ea'),'as':_0x0a9e('0x1e4')});db[_0x0a9e('0xe8')][_0x0a9e('0x150')](db['User'],{'foreignKey':_0x0a9e('0x1e5'),'as':_0x0a9e('0x1e6')});db[_0x0a9e('0xe8')]['belongsTo'](db[_0x0a9e('0x67')],{'foreignKey':_0x0a9e('0x1eb'),'as':'ToQueue'});db['ChatTransferReport']['belongsTo'](db['ChatWebsite'],{'foreignKey':_0x0a9e('0x1ec'),'as':_0x0a9e('0x1e8')});db['FaxTransferReport'][_0x0a9e('0x150')](db['FaxMessage'],{});db[_0x0a9e('0xea')][_0x0a9e('0x150')](db[_0x0a9e('0x11b')],{});db['FaxTransferReport']['belongsTo'](db[_0x0a9e('0x45')],{'foreignKey':_0x0a9e('0x1ed'),'as':_0x0a9e('0x1e3')});db[_0x0a9e('0xea')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'foreignKey':_0x0a9e('0x1ea'),'as':_0x0a9e('0x1e4')});db[_0x0a9e('0xea')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'foreignKey':'ToUserId','as':_0x0a9e('0x1e6')});db[_0x0a9e('0xea')]['belongsTo'](db['FaxQueue'],{'foreignKey':_0x0a9e('0x1ee'),'as':_0x0a9e('0x1ef')});db[_0x0a9e('0xea')][_0x0a9e('0x150')](db[_0x0a9e('0x45')],{'foreignKey':'ToFaxAccountId','as':_0x0a9e('0x1e8')});db[_0x0a9e('0xec')]['belongsTo'](db[_0x0a9e('0x5e')],{});db['OpenchannelTransferReport']['belongsTo'](db['OpenchannelInteraction'],{});db[_0x0a9e('0xec')][_0x0a9e('0x150')](db['OpenchannelAccount'],{'foreignKey':'FromOpenchannelAccountId','as':_0x0a9e('0x1e3')});db[_0x0a9e('0xec')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'foreignKey':'FromUserId','as':_0x0a9e('0x1e4')});db[_0x0a9e('0xec')][_0x0a9e('0x150')](db['User'],{'foreignKey':_0x0a9e('0x1e5'),'as':_0x0a9e('0x1e6')});db[_0x0a9e('0xec')][_0x0a9e('0x150')](db[_0x0a9e('0x137')],{'foreignKey':'ToOpenchannelQueueId','as':'ToQueue'});db[_0x0a9e('0xec')][_0x0a9e('0x150')](db[_0x0a9e('0x59')],{'foreignKey':'ToOpenchannelAccountId','as':'ToAccount'});db['SmsTransferReport']['belongsTo'](db[_0x0a9e('0x55')],{});db[_0x0a9e('0xee')][_0x0a9e('0x150')](db[_0x0a9e('0x53')],{});db[_0x0a9e('0xee')]['belongsTo'](db[_0x0a9e('0x50')],{'foreignKey':_0x0a9e('0x1f0'),'as':_0x0a9e('0x1e3')});db[_0x0a9e('0xee')][_0x0a9e('0x150')](db['User'],{'foreignKey':_0x0a9e('0x1ea'),'as':_0x0a9e('0x1e4')});db[_0x0a9e('0xee')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'foreignKey':'ToUserId','as':_0x0a9e('0x1e6')});db[_0x0a9e('0xee')]['belongsTo'](db['SmsQueue'],{'foreignKey':'ToSmsQueueId','as':_0x0a9e('0x1ef')});db[_0x0a9e('0xee')]['belongsTo'](db[_0x0a9e('0x50')],{'foreignKey':'ToSmsAccountId','as':'ToAccount'});db['CmList']['hasMany'](db[_0x0a9e('0x167')],{'as':_0x0a9e('0x168'),'foreignKey':_0x0a9e('0x16d'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x139')][_0x0a9e('0x110')](db[_0x0a9e('0x1f1')],{'as':_0x0a9e('0x1f2'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x139')][_0x0a9e('0x110')](db['CmContact'],{'as':_0x0a9e('0x125'),'onDelete':'cascade','foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x139')][_0x0a9e('0x110')](db[_0x0a9e('0x71')],{'as':_0x0a9e('0x115'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x139')][_0x0a9e('0x110')](db[_0x0a9e('0x116')],{'as':'HopperHistory','foreignKey':'ListId'});db['CmList'][_0x0a9e('0x110')](db[_0x0a9e('0x73')],{'as':_0x0a9e('0x73'),'foreignKey':'ListId'});db[_0x0a9e('0x139')][_0x0a9e('0x121')](db[_0x0a9e('0x1a')],{'as':'Queues','through':_0x0a9e('0x1f3')});db[_0x0a9e('0x139')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':'Agents','through':_0x0a9e('0x128')});db[_0x0a9e('0xf1')][_0x0a9e('0x110')](db[_0x0a9e('0x16')],{'as':_0x0a9e('0x114'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0xf1')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':'UserVoicePrefix'});db[_0x0a9e('0xf1')]['belongsToMany'](db[_0x0a9e('0x129')],{'through':'TeamVoicePrefix','as':_0x0a9e('0x155')});db[_0x0a9e('0xf2')][_0x0a9e('0x110')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x176'),'foreignKey':_0x0a9e('0x1f4')});db['UserProfile'][_0x0a9e('0x110')](db['UserProfileSection'],{'as':_0x0a9e('0x1f5'),'foreignKey':_0x0a9e('0x1f4'),'onDelete':_0x0a9e('0x10e')});db['UserProfileSection']['hasMany'](db['UserProfileResource'],{'as':_0x0a9e('0x1f6'),'foreignKey':_0x0a9e('0x1f7'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0xf7')][_0x0a9e('0x110')](db[_0x0a9e('0x167')],{'as':'Dispositions','foreignKey':_0x0a9e('0x1f8'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0xf7')][_0x0a9e('0x110')](db['CannedAnswer'],{'as':_0x0a9e('0x169'),'foreignKey':_0x0a9e('0x1f8')});db['WhatsappAccount'][_0x0a9e('0x110')](db[_0x0a9e('0xfd')],{'as':_0x0a9e('0x158'),'foreignKey':'WhatsappAccountId'});db[_0x0a9e('0xf7')]['hasMany'](db[_0x0a9e('0xfb')],{'as':'Interactions'});db[_0x0a9e('0xf7')][_0x0a9e('0x110')](db['WhatsappApplication'],{'as':_0x0a9e('0x147'),'foreignKey':_0x0a9e('0x1f8'),'onDelete':_0x0a9e('0x10e')});db['WhatsappAccount'][_0x0a9e('0x150')](db['CmList'],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0xf7')][_0x0a9e('0x150')](db[_0x0a9e('0x7d')],{'as':'mandatoryDispositionPause','foreignKey':_0x0a9e('0x154')});db[_0x0a9e('0xf7')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':_0x0a9e('0x144')});db[_0x0a9e('0xf9')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0xf9')][_0x0a9e('0x150')](db[_0x0a9e('0x101')],{'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0xf9')][_0x0a9e('0x150')](db['WhatsappAccount'],{'onDelete':_0x0a9e('0x164')});db['WhatsappApplication'][_0x0a9e('0x150')](db[_0x0a9e('0x17b')],{'onDelete':'restrict','foreignKey':_0x0a9e('0x153')});db[_0x0a9e('0xf9')]['belongsTo'](db[_0x0a9e('0x86')],{'onDelete':_0x0a9e('0x164'),'foreignKey':_0x0a9e('0x181')});db['WhatsappInteraction'][_0x0a9e('0x110')](db['WhatsappMessage'],{'as':'Messages','onDelete':'cascade','foreignKey':_0x0a9e('0x1f9')});db[_0x0a9e('0xfb')][_0x0a9e('0x150')](db[_0x0a9e('0xf7')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x1f8')});db[_0x0a9e('0xfb')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0xfb')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x184'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0xfb')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'through':_0x0a9e('0x1b5'),'as':_0x0a9e('0x174')});db['WhatsappInteraction'][_0x0a9e('0x121')](db['Tag'],{'through':_0x0a9e('0x1b5'),'as':_0x0a9e('0x175')});db[_0x0a9e('0xfb')]['belongsToMany'](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x176'),'through':_0x0a9e('0x130'),'foreignKey':'WhatsappInteractionId'});db[_0x0a9e('0xfd')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x11')});db[_0x0a9e('0xfd')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'onDelete':'cascade','as':_0x0a9e('0x160')});db[_0x0a9e('0xfd')][_0x0a9e('0x150')](db['WhatsappInteraction'],{'onDelete':'cascade','as':_0x0a9e('0x179'),'foreignKey':_0x0a9e('0x1f9')});db[_0x0a9e('0xfd')]['belongsTo'](db[_0x0a9e('0xf7')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x1f8')});db[_0x0a9e('0xfe')][_0x0a9e('0x150')](db[_0x0a9e('0xf7')],{});db['WhatsappQueueReport'][_0x0a9e('0x150')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0xfe')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0xfe')][_0x0a9e('0x150')](db['WhatsappInteraction'],{});db['WhatsappQueueReport']['belongsTo'](db[_0x0a9e('0x101')],{});db[_0x0a9e('0xfe')]['belongsTo'](db['WhatsappMessage'],{});db[_0x0a9e('0xfe')][_0x0a9e('0x150')](db['User'],{});db['WhatsappTransferReport'][_0x0a9e('0x150')](db[_0x0a9e('0xfd')],{});db['WhatsappTransferReport'][_0x0a9e('0x150')](db[_0x0a9e('0xfb')],{});db[_0x0a9e('0x1fa')]['belongsTo'](db['WhatsappAccount'],{'foreignKey':_0x0a9e('0x1fb'),'as':_0x0a9e('0x1e3')});db['WhatsappTransferReport']['belongsTo'](db[_0x0a9e('0xf7')],{'foreignKey':_0x0a9e('0x1fc'),'as':'ToAccount'});db[_0x0a9e('0x1fa')]['belongsTo'](db['WhatsappQueue'],{'foreignKey':_0x0a9e('0x1fd'),'as':_0x0a9e('0x1ef')});db['WhatsappTransferReport']['belongsTo'](db['User'],{'foreignKey':_0x0a9e('0x1ea'),'as':'FromAgent'});db[_0x0a9e('0x1fa')][_0x0a9e('0x150')](db['User'],{'foreignKey':'ToUserId','as':_0x0a9e('0x1e6')});db[_0x0a9e('0x101')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':_0x0a9e('0x37'),'foreignKey':'WhatsappQueueId'});db[_0x0a9e('0x101')][_0x0a9e('0x121')](db[_0x0a9e('0x129')],{'through':_0x0a9e('0x1dd'),'as':'Teams'});db[_0x0a9e('0x1fe')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x1ff'),'foreignKey':_0x0a9e('0x10f'),'onDelete':_0x0a9e('0x10e'),'hooks':!![]});db[_0x0a9e('0x103')][_0x0a9e('0x10b')](db['Dynamics365Account'],{'as':_0x0a9e('0xbe'),'onDelete':_0x0a9e('0x164')});db['CloudProvider'][_0x0a9e('0x10b')](db['MailServerIn'],{'as':'Imap','onDelete':_0x0a9e('0x164')});db['CloudProvider']['hasOne'](db['MailServerOut'],{'as':'Smtp','onDelete':_0x0a9e('0x164')});module['exports']={'db':db,'dbH':dbH};
\ No newline at end of file
index 32cf121..7982d03 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x71b9=['./api/intVtigerConfiguration','./api/intVtigerField','./api/intServicenowAccount','/api/integrations/servicenow/configurations','./api/intServicenowConfiguration','./api/intServicenowField','/api/integrations/dynamics365/accounts','./api/intDynamics365Account','/api/integrations/dynamics365/configurations','/api/integrations/dynamics365/fields','./api/intDynamics365Field','./api/intFreshsalesAccount','/api/integrations/freshsales/configurations','./api/intFreshsalesConfiguration','/api/integrations/freshsales/fields','./api/intFreshsalesField','./api/network','./api/chatQueueReport','/api/chat/internal/messages','./api/chatInternalMessage','/api/jscripty/answers/reports','/api/jscripty/sessions/reports','./api/jscriptySessionReport','/api/sms/reports/queue','./api/smsQueueReport','./api/squareReport','/api/square/details/reports','/api/jscripty/projects','./api/jscriptyProject','/api/settings','./api/setting','/api/square/odbc','./api/squareOdbc','/api/square/projects','./api/squareProject','/api/square/recordings','./api/squareRecording','/api/square/messages','/api/teams','./api/team','/api/campaigns','./api/campaign','/api/migrations','./api/migration','/api/attachments','./api/attachment','./api/plugin','/api/mail/reports/transfer','/api/fax/reports/transfer','./api/faxTransferReport','/api/openchannel/reports/transfer','./api/openchannelTransferReport','/api/sms/reports/transfer','./api/smsTransferReport','/api/cm/lists','./api/cmList','/api/voice/prefixes','./api/voicePrefix','./api/userProfile','/api/userProfile/sections','./api/userProfileSection','./api/userProfileResource','/api/userNotifications','./api/whatsappAccount','/api/whatsapp/applications','/api/whatsapp/interactions','./api/whatsappInteraction','/api/whatsapp/messages','./api/whatsappMessage','/api/whatsapp/reports/queue','./api/whatsappQueueReport','/api/whatsapp/reports/transfer','./api/whatsappTransferReport','/api/whatsapp/queues','./api/whatsappQueue','/api/cloudProviders','./api/cloudProvider','/api/realtime','./api/realtime','./api/user-setting','/api/auth/local','./api/authLocal','/api/auth/google','/api/auth/activedirectory','./api/authActiveDirectory','/api/jira','./api/jira','/api/rpc','/api/version','./api/version','./api/system','/api/pm2','./api/pm2','/api/webbar','./api/webbar','/api/logs','/apidoc','join','root','/www','static','/demo','snippet','3.1.0','/plugins','/server/files/plugins','route','/:url(api|auth|components|app|bower_components|assets)/*','get','sendFile','resolve','appPath','/index.html','path','express','./errors','./config/environment','./utils/client-side-logger','setupLoggers','default','then','/api/users','./api/user','use','/api/voice/chanspy','./api/voiceChanSpy','/api/voice/contexts','./api/voiceContext','/api/voice/extensions','./api/voiceExtension','/api/voice/mohs','./api/voiceMusicOnHold','/api/voice/queues','/api/voice/recordings','./api/voiceRecording','/api/screen/recordings','./api/voiceMail','./api/voiceMailMessage','/api/voice/calls/reports','./api/voiceCallReport','/api/voice/dials/reports','./api/voiceDialReport','./api/voiceAgentReport','/api/voice/queues/reports','./api/voiceQueueReport','/api/members/reports','/api/trunks','/api/voice/transfers/reports','./api/voiceTransferReport','./api/mailServerOut','/api/mail/accounts','./api/mailAccount','/api/mail/queues','./api/mailQueue','./api/mailSubstatus','/api/mail/interactions','/api/mail/messages','./api/mailMessage','/api/mail/applications','/api/mail/reports/queue','./api/dashboard','./api/dashboardItem','/api/fax/accounts','./api/faxAccount','/api/fax/applications','./api/faxApplication','./api/faxInteraction','/api/fax/messages','./api/faxMessage','./api/faxQueue','/api/fax/reports/queue','./api/faxQueueReport','/api/sms/accounts','/api/sms/applications','./api/smsApplication','./api/smsMessage','/api/sms/queues','./api/smsQueue','/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/chatApplication','/api/chat/interactions','./api/chatInteraction','/api/chat/messages','./api/chatMessage','/api/chat/offline_messages','./api/chatOfflineMessage','/api/chat/queues','./api/chatQueue','/api/chat/groups','./api/chatProactiveAction','./api/cmCompany','/api/cm/contacts','./api/cmContact','/api/cm/hopper','./api/cmHopper','/api/cm/hopper_black','./api/cmHopperFinal','/api/cm/hopper_history','./api/cmHopperHistory','/api/cm/custom_fields','./api/action','/api/automations','/api/canned_answers','./api/cannedAnswer','/api/dispositions','./api/disposition','/api/conditions','./api/condition','/api/intervals','./api/interval','/api/pauses','./api/pause','/api/cdr','/api/voiceQueuesLog','./api/voiceQueuesLog','./api/schedule','/api/sounds','/api/tags','./api/tag','/api/cm_contact_has_items','/api/cm_hopper_additional_phones','./api/cmHopperAdditionalPhone','/api/templates','./api/template','/api/triggers','./api/trigger','/api/variables','./api/variable','/api/integrations','./api/integration','/api/integrations/reports','./api/integrationReport','/api/analytics/custom_reports','./api/analyticCustomReport','/api/analytics/default_reports','./api/analyticExtractedReport','/api/analytics/metrics','./api/analyticMetric','/api/analytics/field_reports','./api/analyticFieldReport','/api/analytics/tree_reports','./api/analyticTreeReport','/api/integrations/salesforce/configurations','./api/intSalesforceConfiguration','/api/integrations/salesforce/fields','/api/integrations/sugarcrm/accounts','./api/intSugarcrmAccount','/api/integrations/sugarcrm/configurations','./api/intSugarcrmConfiguration','./api/intSugarcrmField','/api/integrations/desk/accounts','/api/integrations/desk/configurations','./api/intDeskConfiguration','/api/integrations/desk/fields','./api/intDeskField','/api/integrations/zoho/accounts','./api/intZohoAccount','/api/integrations/zoho/configurations','./api/intZohoConfiguration','./api/intZohoField','/api/integrations/zendesk/accounts','./api/intZendeskAccount','/api/integrations/zendesk/configurations','./api/intZendeskConfiguration','/api/integrations/zendesk/fields','/api/integrations/freshdesk/accounts','./api/intFreshdeskAccount','/api/integrations/freshdesk/configurations','./api/intFreshdeskConfiguration','/api/integrations/freshdesk/fields','./api/intFreshdeskField','/api/integrations/vtiger/accounts','./api/intVtigerAccount','/api/integrations/vtiger/configurations'];(function(_0x301730,_0x270bd1){var _0x3cccee=function(_0x3dfba6){while(--_0x3dfba6){_0x301730['push'](_0x301730['shift']());}};_0x3cccee(++_0x270bd1);}(_0x71b9,0x71));var _0x971b=function(_0xb0c745,_0x104572){_0xb0c745=_0xb0c745-0x0;var _0x5168b1=_0x71b9[_0xb0c745];return _0x5168b1;};'use strict';var path=require(_0x971b('0x0'));var express=require(_0x971b('0x1'));var errors=require(_0x971b('0x2'));var config=require(_0x971b('0x3'));var setupLoggers=require(_0x971b('0x4'))[_0x971b('0x5')];var clientSideLogs=require('./api/client-side-logs');exports[_0x971b('0x6')]=function(_0x11367a){return setupLoggers(_0x11367a)[_0x971b('0x7')](function(){_0x11367a['use'](_0x971b('0x8'),require(_0x971b('0x9')));_0x11367a[_0x971b('0xa')](_0x971b('0xb'),require(_0x971b('0xc')));_0x11367a[_0x971b('0xa')](_0x971b('0xd'),require(_0x971b('0xe')));_0x11367a[_0x971b('0xa')](_0x971b('0xf'),require(_0x971b('0x10')));_0x11367a[_0x971b('0xa')](_0x971b('0x11'),require(_0x971b('0x12')));_0x11367a[_0x971b('0xa')](_0x971b('0x13'),require('./api/voiceQueue'));_0x11367a['use'](_0x971b('0x14'),require(_0x971b('0x15')));_0x11367a[_0x971b('0xa')](_0x971b('0x16'),require('./api/screenRecording'));_0x11367a[_0x971b('0xa')]('/api/voice/mails',require(_0x971b('0x17')));_0x11367a[_0x971b('0xa')]('/api/voice/mails/messages',require(_0x971b('0x18')));_0x11367a[_0x971b('0xa')](_0x971b('0x19'),require(_0x971b('0x1a')));_0x11367a[_0x971b('0xa')](_0x971b('0x1b'),require(_0x971b('0x1c')));_0x11367a[_0x971b('0xa')]('/api/voice/agents/reports',require(_0x971b('0x1d')));_0x11367a[_0x971b('0xa')](_0x971b('0x1e'),require(_0x971b('0x1f')));_0x11367a[_0x971b('0xa')](_0x971b('0x20'),require('./api/memberReport'));_0x11367a[_0x971b('0xa')](_0x971b('0x21'),require('./api/trunk'));_0x11367a['use'](_0x971b('0x22'),require(_0x971b('0x23')));_0x11367a[_0x971b('0xa')]('/api/mail/out_servers',require(_0x971b('0x24')));_0x11367a[_0x971b('0xa')](_0x971b('0x25'),require(_0x971b('0x26')));_0x11367a[_0x971b('0xa')](_0x971b('0x27'),require(_0x971b('0x28')));_0x11367a[_0x971b('0xa')]('/api/mail/substatuses',require(_0x971b('0x29')));_0x11367a[_0x971b('0xa')](_0x971b('0x2a'),require('./api/mailInteraction'));_0x11367a[_0x971b('0xa')](_0x971b('0x2b'),require(_0x971b('0x2c')));_0x11367a[_0x971b('0xa')](_0x971b('0x2d'),require('./api/mailApplication'));_0x11367a[_0x971b('0xa')](_0x971b('0x2e'),require('./api/mailQueueReport'));_0x11367a[_0x971b('0xa')]('/api/dashboards',require(_0x971b('0x2f')));_0x11367a[_0x971b('0xa')]('/api/dashboards/items',require(_0x971b('0x30')));_0x11367a['use'](_0x971b('0x31'),require(_0x971b('0x32')));_0x11367a[_0x971b('0xa')](_0x971b('0x33'),require(_0x971b('0x34')));_0x11367a['use']('/api/fax/interactions',require(_0x971b('0x35')));_0x11367a['use'](_0x971b('0x36'),require(_0x971b('0x37')));_0x11367a['use']('/api/fax/queues',require(_0x971b('0x38')));_0x11367a[_0x971b('0xa')](_0x971b('0x39'),require(_0x971b('0x3a')));_0x11367a['use'](_0x971b('0x3b'),require('./api/smsAccount'));_0x11367a[_0x971b('0xa')](_0x971b('0x3c'),require(_0x971b('0x3d')));_0x11367a['use']('/api/sms/interactions',require('./api/smsInteraction'));_0x11367a[_0x971b('0xa')]('/api/sms/messages',require(_0x971b('0x3e')));_0x11367a[_0x971b('0xa')](_0x971b('0x3f'),require(_0x971b('0x40')));_0x11367a[_0x971b('0xa')](_0x971b('0x41'),require(_0x971b('0x42')));_0x11367a[_0x971b('0xa')](_0x971b('0x43'),require(_0x971b('0x44')));_0x11367a[_0x971b('0xa')](_0x971b('0x45'),require(_0x971b('0x46')));_0x11367a['use'](_0x971b('0x47'),require(_0x971b('0x48')));_0x11367a[_0x971b('0xa')](_0x971b('0x49'),require(_0x971b('0x4a')));_0x11367a[_0x971b('0xa')](_0x971b('0x4b'),require(_0x971b('0x4c')));_0x11367a['use'](_0x971b('0x4d'),require(_0x971b('0x4e')));_0x11367a['use'](_0x971b('0x4f'),require(_0x971b('0x50')));_0x11367a[_0x971b('0xa')](_0x971b('0x51'),require(_0x971b('0x52')));_0x11367a[_0x971b('0xa')](_0x971b('0x53'),require(_0x971b('0x54')));_0x11367a['use'](_0x971b('0x55'),require(_0x971b('0x56')));_0x11367a[_0x971b('0xa')](_0x971b('0x57'),require(_0x971b('0x58')));_0x11367a[_0x971b('0xa')](_0x971b('0x59'),require('./api/chatGroup'));_0x11367a[_0x971b('0xa')]('/api/chat/proactive_actions',require(_0x971b('0x5a')));_0x11367a[_0x971b('0xa')]('/api/cm/companies',require(_0x971b('0x5b')));_0x11367a[_0x971b('0xa')](_0x971b('0x5c'),require(_0x971b('0x5d')));_0x11367a['use'](_0x971b('0x5e'),require(_0x971b('0x5f')));_0x11367a['use'](_0x971b('0x60'),require('./api/cmHopperBlack'));_0x11367a['use']('/api/cm/hopper_final',require(_0x971b('0x61')));_0x11367a['use'](_0x971b('0x62'),require(_0x971b('0x63')));_0x11367a[_0x971b('0xa')](_0x971b('0x64'),require('./api/cmCustomField'));_0x11367a[_0x971b('0xa')]('/api/actions',require(_0x971b('0x65')));_0x11367a[_0x971b('0xa')](_0x971b('0x66'),require('./api/automation'));_0x11367a[_0x971b('0xa')](_0x971b('0x67'),require(_0x971b('0x68')));_0x11367a['use'](_0x971b('0x69'),require(_0x971b('0x6a')));_0x11367a[_0x971b('0xa')](_0x971b('0x6b'),require(_0x971b('0x6c')));_0x11367a[_0x971b('0xa')](_0x971b('0x6d'),require(_0x971b('0x6e')));_0x11367a[_0x971b('0xa')](_0x971b('0x6f'),require(_0x971b('0x70')));_0x11367a[_0x971b('0xa')](_0x971b('0x71'),require('./api/cdr'));_0x11367a[_0x971b('0xa')](_0x971b('0x72'),require(_0x971b('0x73')));_0x11367a['use']('/api/schedules',require(_0x971b('0x74')));_0x11367a[_0x971b('0xa')](_0x971b('0x75'),require('./api/sound'));_0x11367a[_0x971b('0xa')](_0x971b('0x76'),require(_0x971b('0x77')));_0x11367a['use']('/api/contact_item_types',require('./api/contactItemType'));_0x11367a[_0x971b('0xa')](_0x971b('0x78'),require('./api/cmContactHasItem'));_0x11367a['use'](_0x971b('0x79'),require(_0x971b('0x7a')));_0x11367a[_0x971b('0xa')](_0x971b('0x7b'),require(_0x971b('0x7c')));_0x11367a[_0x971b('0xa')](_0x971b('0x7d'),require(_0x971b('0x7e')));_0x11367a[_0x971b('0xa')](_0x971b('0x7f'),require(_0x971b('0x80')));_0x11367a['use'](_0x971b('0x81'),require(_0x971b('0x82')));_0x11367a['use'](_0x971b('0x83'),require(_0x971b('0x84')));_0x11367a[_0x971b('0xa')](_0x971b('0x85'),require(_0x971b('0x86')));_0x11367a[_0x971b('0xa')](_0x971b('0x87'),require('./api/analyticDefaultReport'));_0x11367a['use']('/api/analytics/extracted_reports',require(_0x971b('0x88')));_0x11367a[_0x971b('0xa')](_0x971b('0x89'),require(_0x971b('0x8a')));_0x11367a[_0x971b('0xa')](_0x971b('0x8b'),require(_0x971b('0x8c')));_0x11367a['use'](_0x971b('0x8d'),require(_0x971b('0x8e')));_0x11367a[_0x971b('0xa')]('/api/integrations/salesforce/accounts',require('./api/intSalesforceAccount'));_0x11367a[_0x971b('0xa')](_0x971b('0x8f'),require(_0x971b('0x90')));_0x11367a['use'](_0x971b('0x91'),require('./api/intSalesforceField'));_0x11367a[_0x971b('0xa')](_0x971b('0x92'),require(_0x971b('0x93')));_0x11367a[_0x971b('0xa')](_0x971b('0x94'),require(_0x971b('0x95')));_0x11367a[_0x971b('0xa')]('/api/integrations/sugarcrm/fields',require(_0x971b('0x96')));_0x11367a[_0x971b('0xa')](_0x971b('0x97'),require('./api/intDeskAccount'));_0x11367a[_0x971b('0xa')](_0x971b('0x98'),require(_0x971b('0x99')));_0x11367a[_0x971b('0xa')](_0x971b('0x9a'),require(_0x971b('0x9b')));_0x11367a['use'](_0x971b('0x9c'),require(_0x971b('0x9d')));_0x11367a[_0x971b('0xa')](_0x971b('0x9e'),require(_0x971b('0x9f')));_0x11367a[_0x971b('0xa')]('/api/integrations/zoho/fields',require(_0x971b('0xa0')));_0x11367a['use'](_0x971b('0xa1'),require(_0x971b('0xa2')));_0x11367a[_0x971b('0xa')](_0x971b('0xa3'),require(_0x971b('0xa4')));_0x11367a[_0x971b('0xa')](_0x971b('0xa5'),require('./api/intZendeskField'));_0x11367a[_0x971b('0xa')](_0x971b('0xa6'),require(_0x971b('0xa7')));_0x11367a[_0x971b('0xa')](_0x971b('0xa8'),require(_0x971b('0xa9')));_0x11367a[_0x971b('0xa')](_0x971b('0xaa'),require(_0x971b('0xab')));_0x11367a['use'](_0x971b('0xac'),require(_0x971b('0xad')));_0x11367a['use'](_0x971b('0xae'),require(_0x971b('0xaf')));_0x11367a['use']('/api/integrations/vtiger/fields',require(_0x971b('0xb0')));_0x11367a[_0x971b('0xa')]('/api/integrations/servicenow/accounts',require(_0x971b('0xb1')));_0x11367a[_0x971b('0xa')](_0x971b('0xb2'),require(_0x971b('0xb3')));_0x11367a[_0x971b('0xa')]('/api/integrations/servicenow/fields',require(_0x971b('0xb4')));_0x11367a[_0x971b('0xa')](_0x971b('0xb5'),require(_0x971b('0xb6')));_0x11367a[_0x971b('0xa')](_0x971b('0xb7'),require('./api/intDynamics365Configuration'));_0x11367a[_0x971b('0xa')](_0x971b('0xb8'),require(_0x971b('0xb9')));_0x11367a[_0x971b('0xa')]('/api/integrations/freshsales/accounts',require(_0x971b('0xba')));_0x11367a[_0x971b('0xa')](_0x971b('0xbb'),require(_0x971b('0xbc')));_0x11367a[_0x971b('0xa')](_0x971b('0xbd'),require(_0x971b('0xbe')));_0x11367a[_0x971b('0xa')]('/api/networks',require(_0x971b('0xbf')));_0x11367a[_0x971b('0xa')]('/api/chat/reports/queue',require(_0x971b('0xc0')));_0x11367a[_0x971b('0xa')](_0x971b('0xc1'),require(_0x971b('0xc2')));_0x11367a[_0x971b('0xa')](_0x971b('0xc3'),require('./api/jscriptyAnswerReport'));_0x11367a[_0x971b('0xa')]('/api/jscripty/questions/reports',require('./api/jscriptyQuestionReport'));_0x11367a['use'](_0x971b('0xc4'),require(_0x971b('0xc5')));_0x11367a[_0x971b('0xa')](_0x971b('0xc6'),require(_0x971b('0xc7')));_0x11367a[_0x971b('0xa')]('/api/square/reports',require(_0x971b('0xc8')));_0x11367a[_0x971b('0xa')](_0x971b('0xc9'),require('./api/squareReportDetail'));_0x11367a[_0x971b('0xa')](_0x971b('0xca'),require(_0x971b('0xcb')));_0x11367a[_0x971b('0xa')](_0x971b('0xcc'),require(_0x971b('0xcd')));_0x11367a[_0x971b('0xa')](_0x971b('0xce'),require(_0x971b('0xcf')));_0x11367a[_0x971b('0xa')](_0x971b('0xd0'),require(_0x971b('0xd1')));_0x11367a['use'](_0x971b('0xd2'),require(_0x971b('0xd3')));_0x11367a[_0x971b('0xa')](_0x971b('0xd4'),require('./api/squareMessage'));_0x11367a[_0x971b('0xa')](_0x971b('0xd5'),require(_0x971b('0xd6')));_0x11367a[_0x971b('0xa')]('/api/license',require('./api/license'));_0x11367a[_0x971b('0xa')](_0x971b('0xd7'),require(_0x971b('0xd8')));_0x11367a[_0x971b('0xa')](_0x971b('0xd9'),require(_0x971b('0xda')));_0x11367a[_0x971b('0xa')](_0x971b('0xdb'),require(_0x971b('0xdc')));_0x11367a['use']('/api/plugins',require(_0x971b('0xdd')));_0x11367a['use'](_0x971b('0xde'),require('./api/mailTransferReport'));_0x11367a[_0x971b('0xa')]('/api/chat/reports/transfer',require('./api/chatTransferReport'));_0x11367a['use'](_0x971b('0xdf'),require(_0x971b('0xe0')));_0x11367a[_0x971b('0xa')](_0x971b('0xe1'),require(_0x971b('0xe2')));_0x11367a['use'](_0x971b('0xe3'),require(_0x971b('0xe4')));_0x11367a[_0x971b('0xa')](_0x971b('0xe5'),require(_0x971b('0xe6')));_0x11367a[_0x971b('0xa')](_0x971b('0xe7'),require(_0x971b('0xe8')));_0x11367a['use']('/api/userProfiles',require(_0x971b('0xe9')));_0x11367a['use'](_0x971b('0xea'),require(_0x971b('0xeb')));_0x11367a[_0x971b('0xa')]('/api/userProfile/resources',require(_0x971b('0xec')));_0x11367a[_0x971b('0xa')](_0x971b('0xed'),require('./api/userNotification'));_0x11367a[_0x971b('0xa')]('/api/whatsapp/accounts',require(_0x971b('0xee')));_0x11367a[_0x971b('0xa')](_0x971b('0xef'),require('./api/whatsappApplication'));_0x11367a[_0x971b('0xa')](_0x971b('0xf0'),require(_0x971b('0xf1')));_0x11367a[_0x971b('0xa')](_0x971b('0xf2'),require(_0x971b('0xf3')));_0x11367a[_0x971b('0xa')](_0x971b('0xf4'),require(_0x971b('0xf5')));_0x11367a[_0x971b('0xa')](_0x971b('0xf6'),require(_0x971b('0xf7')));_0x11367a[_0x971b('0xa')](_0x971b('0xf8'),require(_0x971b('0xf9')));_0x11367a['use'](_0x971b('0xfa'),require(_0x971b('0xfb')));_0x11367a[_0x971b('0xa')](_0x971b('0xfc'),require(_0x971b('0xfd')));_0x11367a['use']('/api/user-settings',require(_0x971b('0xfe')));_0x11367a[_0x971b('0xa')](_0x971b('0xff'),require(_0x971b('0x100')));_0x11367a[_0x971b('0xa')](_0x971b('0x101'),require('./api/authGoogle'));_0x11367a['use'](_0x971b('0x102'),require(_0x971b('0x103')));_0x11367a[_0x971b('0xa')](_0x971b('0x104'),require(_0x971b('0x105')));_0x11367a[_0x971b('0xa')](_0x971b('0x106'),require('./api/rpc'));_0x11367a['use'](_0x971b('0x107'),require(_0x971b('0x108')));_0x11367a['use']('/api/system',require(_0x971b('0x109')));_0x11367a[_0x971b('0xa')](_0x971b('0x10a'),require(_0x971b('0x10b')));_0x11367a[_0x971b('0xa')](_0x971b('0x10c'),require(_0x971b('0x10d')));_0x11367a[_0x971b('0xa')](_0x971b('0x10e'),clientSideLogs);_0x11367a['use'](_0x971b('0x10f'),express['static'](path[_0x971b('0x110')](config[_0x971b('0x111')],_0x971b('0x10f'))));_0x11367a[_0x971b('0xa')](_0x971b('0x112'),express[_0x971b('0x113')](path[_0x971b('0x110')](config[_0x971b('0x111')],_0x971b('0x112'))));_0x11367a['use'](_0x971b('0x114'),express['static'](path[_0x971b('0x110')](config[_0x971b('0x111')],_0x971b('0x114'))));_0x11367a[_0x971b('0xa')]('/snippet',express[_0x971b('0x113')](path[_0x971b('0x110')](config['root'],_0x971b('0x115'),_0x971b('0x116'))));_0x11367a[_0x971b('0xa')](_0x971b('0x117'),express[_0x971b('0x113')](path[_0x971b('0x110')](config[_0x971b('0x111')],_0x971b('0x118'))));_0x11367a[_0x971b('0x119')](_0x971b('0x11a'))[_0x971b('0x11b')](errors[0x194]);_0x11367a['route']('/*')[_0x971b('0x11b')](function(_0x28e8dc,_0x4ea5ad){_0x4ea5ad[_0x971b('0x11c')](path[_0x971b('0x11d')](_0x11367a[_0x971b('0x11b')](_0x971b('0x11e'))+_0x971b('0x11f')));});return _0x11367a;});};
\ No newline at end of file
+var _0x71a0=['./api/cmCompany','/api/cm/contacts','./api/cmContact','/api/cm/hopper','./api/cmHopper','/api/cm/hopper_black','./api/cmHopperBlack','/api/cm/hopper_final','./api/cmHopperFinal','/api/cm/hopper_history','./api/cmHopperHistory','/api/cm/custom_fields','./api/cmCustomField','/api/actions','./api/action','/api/automations','./api/automation','./api/cannedAnswer','/api/conditions','./api/condition','/api/intervals','./api/interval','/api/pauses','/api/cdr','./api/voiceQueuesLog','/api/schedules','./api/schedule','/api/sounds','./api/sound','./api/tag','/api/contact_item_types','./api/cmContactHasItem','/api/cm_hopper_additional_phones','./api/cmHopperAdditionalPhone','/api/templates','./api/template','./api/trigger','./api/variable','./api/integration','/api/integrations/reports','/api/analytics/custom_reports','./api/analyticCustomReport','/api/analytics/default_reports','./api/analyticDefaultReport','/api/analytics/extracted_reports','./api/analyticExtractedReport','./api/analyticFieldReport','/api/analytics/tree_reports','./api/intSalesforceAccount','/api/integrations/salesforce/configurations','/api/integrations/salesforce/fields','./api/intSalesforceField','./api/intSugarcrmAccount','/api/integrations/sugarcrm/configurations','./api/intSugarcrmConfiguration','./api/intSugarcrmField','/api/integrations/desk/accounts','./api/intDeskAccount','/api/integrations/desk/configurations','./api/intDeskConfiguration','/api/integrations/desk/fields','./api/intDeskField','/api/integrations/zoho/accounts','./api/intZohoConfiguration','/api/integrations/zendesk/accounts','/api/integrations/zendesk/configurations','./api/intZendeskConfiguration','./api/intZendeskField','/api/integrations/freshdesk/accounts','/api/integrations/freshdesk/configurations','./api/intFreshdeskField','./api/intVtigerAccount','./api/intVtigerConfiguration','/api/integrations/vtiger/fields','./api/intVtigerField','./api/intServicenowConfiguration','/api/integrations/servicenow/fields','./api/intServicenowField','/api/integrations/dynamics365/accounts','./api/intDynamics365Account','/api/integrations/dynamics365/configurations','./api/intDynamics365Field','/api/integrations/freshsales/accounts','./api/intFreshsalesAccount','/api/integrations/freshsales/configurations','./api/intFreshsalesConfiguration','/api/integrations/freshsales/fields','./api/intFreshsalesField','/api/networks','/api/chat/reports/queue','./api/chatInternalMessage','/api/jscripty/answers/reports','/api/jscripty/questions/reports','./api/jscriptyQuestionReport','/api/jscripty/sessions/reports','./api/jscriptySessionReport','/api/sms/reports/queue','/api/square/reports','/api/square/details/reports','./api/squareReportDetail','./api/jscriptyProject','/api/settings','./api/setting','/api/square/odbc','./api/squareOdbc','/api/square/projects','./api/squareProject','/api/square/recordings','./api/squareRecording','/api/square/messages','./api/squareMessage','/api/teams','/api/license','./api/license','/api/campaigns','./api/campaign','/api/migrations','./api/migration','/api/attachments','/api/plugins','./api/plugin','/api/mail/reports/transfer','/api/chat/reports/transfer','/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/userProfiles','./api/userProfile','/api/userProfile/resources','./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/whatsapp/reports/transfer','./api/whatsappTransferReport','/api/whatsapp/queues','/api/cloudProviders','./api/cloudProvider','./api/realtime','/api/user-settings','./api/user-setting','/api/auth/local','./api/authLocal','/api/auth/google','/api/auth/activedirectory','./api/authActiveDirectory','/api/jira','./api/jira','/api/rpc','./api/rpc','/api/version','./api/version','/api/system','./api/system','./api/pm2','/api/webbar','./api/webbar','/api/logs','/apidoc','static','join','root','/www','/demo','/snippet','snippet','/plugins','/server/files/plugins','route','/:url(api|auth|components|app|bower_components|assets)/*','get','sendFile','appPath','/index.html','express','./errors','./config/environment','default','then','use','/api/users','./api/user','./api/voiceChanSpy','./api/voiceContext','/api/voice/extensions','/api/voice/mohs','./api/voiceMusicOnHold','./api/voiceQueue','/api/voice/recordings','./api/voiceRecording','/api/screen/recordings','./api/screenRecording','/api/voice/mails','./api/voiceMail','/api/voice/mails/messages','./api/voiceMailMessage','/api/voice/calls/reports','./api/voiceCallReport','./api/voiceDialReport','/api/voice/agents/reports','./api/voiceAgentReport','/api/voice/queues/reports','./api/voiceQueueReport','./api/memberReport','/api/trunks','/api/mail/out_servers','./api/mailServerOut','/api/mail/accounts','/api/mail/substatuses','./api/mailSubstatus','/api/mail/interactions','./api/mailInteraction','./api/mailMessage','/api/mail/applications','./api/mailApplication','/api/mail/reports/queue','./api/mailQueueReport','/api/dashboards','./api/dashboard','/api/dashboards/items','./api/dashboardItem','/api/fax/accounts','./api/faxAccount','/api/fax/applications','./api/faxApplication','/api/fax/interactions','./api/faxInteraction','/api/fax/messages','./api/faxMessage','/api/fax/queues','./api/faxQueue','/api/fax/reports/queue','./api/faxQueueReport','./api/smsAccount','./api/smsInteraction','/api/sms/messages','./api/smsMessage','/api/sms/queues','./api/smsQueue','/api/openchannel/accounts','./api/openchannelAccount','/api/openchannel/applications','./api/openchannelApplication','./api/openchannelInteraction','/api/openchannel/messages','./api/openchannelMessage','/api/openchannel/queues','./api/openchannelQueue','/api/chat/websites','./api/chatWebsite','./api/openchannelQueueReport','/api/chat/applications','./api/chatApplication','/api/chat/interactions','/api/chat/messages','./api/chatMessage','/api/chat/offline_messages','./api/chatOfflineMessage','./api/chatQueue','./api/chatGroup','./api/chatProactiveAction','/api/cm/companies'];(function(_0x4b8813,_0x46d61e){var _0x3466aa=function(_0x586c2e){while(--_0x586c2e){_0x4b8813['push'](_0x4b8813['shift']());}};_0x3466aa(++_0x46d61e);}(_0x71a0,0xba));var _0x071a=function(_0x1f37e0,_0x11e4a7){_0x1f37e0=_0x1f37e0-0x0;var _0x3b6a4f=_0x71a0[_0x1f37e0];return _0x3b6a4f;};'use strict';var path=require('path');var express=require(_0x071a('0x0'));var errors=require(_0x071a('0x1'));var config=require(_0x071a('0x2'));var setupLoggers=require('./utils/client-side-logger')['setupLoggers'];var clientSideLogs=require('./api/client-side-logs');exports[_0x071a('0x3')]=function(_0x3914d2){return setupLoggers(_0x3914d2)[_0x071a('0x4')](function(){_0x3914d2[_0x071a('0x5')](_0x071a('0x6'),require(_0x071a('0x7')));_0x3914d2[_0x071a('0x5')]('/api/voice/chanspy',require(_0x071a('0x8')));_0x3914d2[_0x071a('0x5')]('/api/voice/contexts',require(_0x071a('0x9')));_0x3914d2[_0x071a('0x5')](_0x071a('0xa'),require('./api/voiceExtension'));_0x3914d2[_0x071a('0x5')](_0x071a('0xb'),require(_0x071a('0xc')));_0x3914d2['use']('/api/voice/queues',require(_0x071a('0xd')));_0x3914d2[_0x071a('0x5')](_0x071a('0xe'),require(_0x071a('0xf')));_0x3914d2[_0x071a('0x5')](_0x071a('0x10'),require(_0x071a('0x11')));_0x3914d2[_0x071a('0x5')](_0x071a('0x12'),require(_0x071a('0x13')));_0x3914d2[_0x071a('0x5')](_0x071a('0x14'),require(_0x071a('0x15')));_0x3914d2[_0x071a('0x5')](_0x071a('0x16'),require(_0x071a('0x17')));_0x3914d2[_0x071a('0x5')]('/api/voice/dials/reports',require(_0x071a('0x18')));_0x3914d2[_0x071a('0x5')](_0x071a('0x19'),require(_0x071a('0x1a')));_0x3914d2[_0x071a('0x5')](_0x071a('0x1b'),require(_0x071a('0x1c')));_0x3914d2['use']('/api/members/reports',require(_0x071a('0x1d')));_0x3914d2[_0x071a('0x5')](_0x071a('0x1e'),require('./api/trunk'));_0x3914d2[_0x071a('0x5')]('/api/voice/transfers/reports',require('./api/voiceTransferReport'));_0x3914d2[_0x071a('0x5')](_0x071a('0x1f'),require(_0x071a('0x20')));_0x3914d2[_0x071a('0x5')](_0x071a('0x21'),require('./api/mailAccount'));_0x3914d2[_0x071a('0x5')]('/api/mail/queues',require('./api/mailQueue'));_0x3914d2[_0x071a('0x5')](_0x071a('0x22'),require(_0x071a('0x23')));_0x3914d2[_0x071a('0x5')](_0x071a('0x24'),require(_0x071a('0x25')));_0x3914d2[_0x071a('0x5')]('/api/mail/messages',require(_0x071a('0x26')));_0x3914d2['use'](_0x071a('0x27'),require(_0x071a('0x28')));_0x3914d2['use'](_0x071a('0x29'),require(_0x071a('0x2a')));_0x3914d2[_0x071a('0x5')](_0x071a('0x2b'),require(_0x071a('0x2c')));_0x3914d2['use'](_0x071a('0x2d'),require(_0x071a('0x2e')));_0x3914d2[_0x071a('0x5')](_0x071a('0x2f'),require(_0x071a('0x30')));_0x3914d2[_0x071a('0x5')](_0x071a('0x31'),require(_0x071a('0x32')));_0x3914d2[_0x071a('0x5')](_0x071a('0x33'),require(_0x071a('0x34')));_0x3914d2['use'](_0x071a('0x35'),require(_0x071a('0x36')));_0x3914d2['use'](_0x071a('0x37'),require(_0x071a('0x38')));_0x3914d2[_0x071a('0x5')](_0x071a('0x39'),require(_0x071a('0x3a')));_0x3914d2[_0x071a('0x5')]('/api/sms/accounts',require(_0x071a('0x3b')));_0x3914d2['use']('/api/sms/applications',require('./api/smsApplication'));_0x3914d2[_0x071a('0x5')]('/api/sms/interactions',require(_0x071a('0x3c')));_0x3914d2[_0x071a('0x5')](_0x071a('0x3d'),require(_0x071a('0x3e')));_0x3914d2[_0x071a('0x5')](_0x071a('0x3f'),require(_0x071a('0x40')));_0x3914d2[_0x071a('0x5')](_0x071a('0x41'),require(_0x071a('0x42')));_0x3914d2[_0x071a('0x5')](_0x071a('0x43'),require(_0x071a('0x44')));_0x3914d2['use']('/api/openchannel/interactions',require(_0x071a('0x45')));_0x3914d2[_0x071a('0x5')](_0x071a('0x46'),require(_0x071a('0x47')));_0x3914d2[_0x071a('0x5')](_0x071a('0x48'),require(_0x071a('0x49')));_0x3914d2[_0x071a('0x5')](_0x071a('0x4a'),require(_0x071a('0x4b')));_0x3914d2[_0x071a('0x5')]('/api/openchannel/reports/queue',require(_0x071a('0x4c')));_0x3914d2[_0x071a('0x5')](_0x071a('0x4d'),require(_0x071a('0x4e')));_0x3914d2['use'](_0x071a('0x4f'),require('./api/chatInteraction'));_0x3914d2[_0x071a('0x5')](_0x071a('0x50'),require(_0x071a('0x51')));_0x3914d2['use'](_0x071a('0x52'),require(_0x071a('0x53')));_0x3914d2['use']('/api/chat/queues',require(_0x071a('0x54')));_0x3914d2[_0x071a('0x5')]('/api/chat/groups',require(_0x071a('0x55')));_0x3914d2[_0x071a('0x5')]('/api/chat/proactive_actions',require(_0x071a('0x56')));_0x3914d2[_0x071a('0x5')](_0x071a('0x57'),require(_0x071a('0x58')));_0x3914d2['use'](_0x071a('0x59'),require(_0x071a('0x5a')));_0x3914d2[_0x071a('0x5')](_0x071a('0x5b'),require(_0x071a('0x5c')));_0x3914d2[_0x071a('0x5')](_0x071a('0x5d'),require(_0x071a('0x5e')));_0x3914d2[_0x071a('0x5')](_0x071a('0x5f'),require(_0x071a('0x60')));_0x3914d2[_0x071a('0x5')](_0x071a('0x61'),require(_0x071a('0x62')));_0x3914d2[_0x071a('0x5')](_0x071a('0x63'),require(_0x071a('0x64')));_0x3914d2[_0x071a('0x5')](_0x071a('0x65'),require(_0x071a('0x66')));_0x3914d2[_0x071a('0x5')](_0x071a('0x67'),require(_0x071a('0x68')));_0x3914d2[_0x071a('0x5')]('/api/canned_answers',require(_0x071a('0x69')));_0x3914d2[_0x071a('0x5')]('/api/dispositions',require('./api/disposition'));_0x3914d2[_0x071a('0x5')](_0x071a('0x6a'),require(_0x071a('0x6b')));_0x3914d2[_0x071a('0x5')](_0x071a('0x6c'),require(_0x071a('0x6d')));_0x3914d2['use'](_0x071a('0x6e'),require('./api/pause'));_0x3914d2[_0x071a('0x5')](_0x071a('0x6f'),require('./api/cdr'));_0x3914d2[_0x071a('0x5')]('/api/voiceQueuesLog',require(_0x071a('0x70')));_0x3914d2[_0x071a('0x5')](_0x071a('0x71'),require(_0x071a('0x72')));_0x3914d2[_0x071a('0x5')](_0x071a('0x73'),require(_0x071a('0x74')));_0x3914d2[_0x071a('0x5')]('/api/tags',require(_0x071a('0x75')));_0x3914d2[_0x071a('0x5')](_0x071a('0x76'),require('./api/contactItemType'));_0x3914d2['use']('/api/cm_contact_has_items',require(_0x071a('0x77')));_0x3914d2['use'](_0x071a('0x78'),require(_0x071a('0x79')));_0x3914d2[_0x071a('0x5')](_0x071a('0x7a'),require(_0x071a('0x7b')));_0x3914d2['use']('/api/triggers',require(_0x071a('0x7c')));_0x3914d2[_0x071a('0x5')]('/api/variables',require(_0x071a('0x7d')));_0x3914d2['use']('/api/integrations',require(_0x071a('0x7e')));_0x3914d2[_0x071a('0x5')](_0x071a('0x7f'),require('./api/integrationReport'));_0x3914d2[_0x071a('0x5')](_0x071a('0x80'),require(_0x071a('0x81')));_0x3914d2['use'](_0x071a('0x82'),require(_0x071a('0x83')));_0x3914d2[_0x071a('0x5')](_0x071a('0x84'),require(_0x071a('0x85')));_0x3914d2['use']('/api/analytics/metrics',require('./api/analyticMetric'));_0x3914d2[_0x071a('0x5')]('/api/analytics/field_reports',require(_0x071a('0x86')));_0x3914d2[_0x071a('0x5')](_0x071a('0x87'),require('./api/analyticTreeReport'));_0x3914d2[_0x071a('0x5')]('/api/integrations/salesforce/accounts',require(_0x071a('0x88')));_0x3914d2[_0x071a('0x5')](_0x071a('0x89'),require('./api/intSalesforceConfiguration'));_0x3914d2['use'](_0x071a('0x8a'),require(_0x071a('0x8b')));_0x3914d2[_0x071a('0x5')]('/api/integrations/sugarcrm/accounts',require(_0x071a('0x8c')));_0x3914d2[_0x071a('0x5')](_0x071a('0x8d'),require(_0x071a('0x8e')));_0x3914d2[_0x071a('0x5')]('/api/integrations/sugarcrm/fields',require(_0x071a('0x8f')));_0x3914d2['use'](_0x071a('0x90'),require(_0x071a('0x91')));_0x3914d2[_0x071a('0x5')](_0x071a('0x92'),require(_0x071a('0x93')));_0x3914d2[_0x071a('0x5')](_0x071a('0x94'),require(_0x071a('0x95')));_0x3914d2[_0x071a('0x5')](_0x071a('0x96'),require('./api/intZohoAccount'));_0x3914d2[_0x071a('0x5')]('/api/integrations/zoho/configurations',require(_0x071a('0x97')));_0x3914d2[_0x071a('0x5')]('/api/integrations/zoho/fields',require('./api/intZohoField'));_0x3914d2['use'](_0x071a('0x98'),require('./api/intZendeskAccount'));_0x3914d2[_0x071a('0x5')](_0x071a('0x99'),require(_0x071a('0x9a')));_0x3914d2[_0x071a('0x5')]('/api/integrations/zendesk/fields',require(_0x071a('0x9b')));_0x3914d2[_0x071a('0x5')](_0x071a('0x9c'),require('./api/intFreshdeskAccount'));_0x3914d2[_0x071a('0x5')](_0x071a('0x9d'),require('./api/intFreshdeskConfiguration'));_0x3914d2[_0x071a('0x5')]('/api/integrations/freshdesk/fields',require(_0x071a('0x9e')));_0x3914d2[_0x071a('0x5')]('/api/integrations/vtiger/accounts',require(_0x071a('0x9f')));_0x3914d2['use']('/api/integrations/vtiger/configurations',require(_0x071a('0xa0')));_0x3914d2[_0x071a('0x5')](_0x071a('0xa1'),require(_0x071a('0xa2')));_0x3914d2[_0x071a('0x5')]('/api/integrations/servicenow/accounts',require('./api/intServicenowAccount'));_0x3914d2[_0x071a('0x5')]('/api/integrations/servicenow/configurations',require(_0x071a('0xa3')));_0x3914d2['use'](_0x071a('0xa4'),require(_0x071a('0xa5')));_0x3914d2['use'](_0x071a('0xa6'),require(_0x071a('0xa7')));_0x3914d2[_0x071a('0x5')](_0x071a('0xa8'),require('./api/intDynamics365Configuration'));_0x3914d2[_0x071a('0x5')]('/api/integrations/dynamics365/fields',require(_0x071a('0xa9')));_0x3914d2[_0x071a('0x5')](_0x071a('0xaa'),require(_0x071a('0xab')));_0x3914d2['use'](_0x071a('0xac'),require(_0x071a('0xad')));_0x3914d2['use'](_0x071a('0xae'),require(_0x071a('0xaf')));_0x3914d2[_0x071a('0x5')](_0x071a('0xb0'),require('./api/network'));_0x3914d2[_0x071a('0x5')](_0x071a('0xb1'),require('./api/chatQueueReport'));_0x3914d2[_0x071a('0x5')]('/api/chat/internal/messages',require(_0x071a('0xb2')));_0x3914d2[_0x071a('0x5')](_0x071a('0xb3'),require('./api/jscriptyAnswerReport'));_0x3914d2['use'](_0x071a('0xb4'),require(_0x071a('0xb5')));_0x3914d2[_0x071a('0x5')](_0x071a('0xb6'),require(_0x071a('0xb7')));_0x3914d2['use'](_0x071a('0xb8'),require('./api/smsQueueReport'));_0x3914d2[_0x071a('0x5')](_0x071a('0xb9'),require('./api/squareReport'));_0x3914d2['use'](_0x071a('0xba'),require(_0x071a('0xbb')));_0x3914d2['use']('/api/jscripty/projects',require(_0x071a('0xbc')));_0x3914d2[_0x071a('0x5')](_0x071a('0xbd'),require(_0x071a('0xbe')));_0x3914d2[_0x071a('0x5')](_0x071a('0xbf'),require(_0x071a('0xc0')));_0x3914d2['use'](_0x071a('0xc1'),require(_0x071a('0xc2')));_0x3914d2['use'](_0x071a('0xc3'),require(_0x071a('0xc4')));_0x3914d2[_0x071a('0x5')](_0x071a('0xc5'),require(_0x071a('0xc6')));_0x3914d2['use'](_0x071a('0xc7'),require('./api/team'));_0x3914d2[_0x071a('0x5')](_0x071a('0xc8'),require(_0x071a('0xc9')));_0x3914d2[_0x071a('0x5')](_0x071a('0xca'),require(_0x071a('0xcb')));_0x3914d2[_0x071a('0x5')](_0x071a('0xcc'),require(_0x071a('0xcd')));_0x3914d2['use'](_0x071a('0xce'),require('./api/attachment'));_0x3914d2[_0x071a('0x5')](_0x071a('0xcf'),require(_0x071a('0xd0')));_0x3914d2[_0x071a('0x5')](_0x071a('0xd1'),require('./api/mailTransferReport'));_0x3914d2[_0x071a('0x5')](_0x071a('0xd2'),require('./api/chatTransferReport'));_0x3914d2[_0x071a('0x5')](_0x071a('0xd3'),require(_0x071a('0xd4')));_0x3914d2[_0x071a('0x5')](_0x071a('0xd5'),require(_0x071a('0xd6')));_0x3914d2[_0x071a('0x5')](_0x071a('0xd7'),require(_0x071a('0xd8')));_0x3914d2['use'](_0x071a('0xd9'),require('./api/cmList'));_0x3914d2[_0x071a('0x5')](_0x071a('0xda'),require('./api/voicePrefix'));_0x3914d2[_0x071a('0x5')](_0x071a('0xdb'),require(_0x071a('0xdc')));_0x3914d2[_0x071a('0x5')]('/api/userProfile/sections',require('./api/userProfileSection'));_0x3914d2[_0x071a('0x5')](_0x071a('0xdd'),require(_0x071a('0xde')));_0x3914d2['use'](_0x071a('0xdf'),require(_0x071a('0xe0')));_0x3914d2['use'](_0x071a('0xe1'),require('./api/whatsappAccount'));_0x3914d2['use'](_0x071a('0xe2'),require(_0x071a('0xe3')));_0x3914d2['use'](_0x071a('0xe4'),require(_0x071a('0xe5')));_0x3914d2[_0x071a('0x5')](_0x071a('0xe6'),require(_0x071a('0xe7')));_0x3914d2[_0x071a('0x5')](_0x071a('0xe8'),require('./api/whatsappQueueReport'));_0x3914d2['use'](_0x071a('0xe9'),require(_0x071a('0xea')));_0x3914d2['use'](_0x071a('0xeb'),require('./api/whatsappQueue'));_0x3914d2['use'](_0x071a('0xec'),require(_0x071a('0xed')));_0x3914d2[_0x071a('0x5')]('/api/realtime',require(_0x071a('0xee')));_0x3914d2[_0x071a('0x5')](_0x071a('0xef'),require(_0x071a('0xf0')));_0x3914d2['use'](_0x071a('0xf1'),require(_0x071a('0xf2')));_0x3914d2[_0x071a('0x5')](_0x071a('0xf3'),require('./api/authGoogle'));_0x3914d2[_0x071a('0x5')](_0x071a('0xf4'),require(_0x071a('0xf5')));_0x3914d2['use'](_0x071a('0xf6'),require(_0x071a('0xf7')));_0x3914d2['use'](_0x071a('0xf8'),require(_0x071a('0xf9')));_0x3914d2['use'](_0x071a('0xfa'),require(_0x071a('0xfb')));_0x3914d2[_0x071a('0x5')](_0x071a('0xfc'),require(_0x071a('0xfd')));_0x3914d2[_0x071a('0x5')]('/api/pm2',require(_0x071a('0xfe')));_0x3914d2[_0x071a('0x5')](_0x071a('0xff'),require(_0x071a('0x100')));_0x3914d2[_0x071a('0x5')](_0x071a('0x101'),clientSideLogs);_0x3914d2[_0x071a('0x5')](_0x071a('0x102'),express[_0x071a('0x103')](path[_0x071a('0x104')](config[_0x071a('0x105')],_0x071a('0x102'))));_0x3914d2[_0x071a('0x5')](_0x071a('0x106'),express[_0x071a('0x103')](path[_0x071a('0x104')](config[_0x071a('0x105')],_0x071a('0x106'))));_0x3914d2[_0x071a('0x5')](_0x071a('0x107'),express[_0x071a('0x103')](path[_0x071a('0x104')](config[_0x071a('0x105')],_0x071a('0x107'))));_0x3914d2['use'](_0x071a('0x108'),express[_0x071a('0x103')](path[_0x071a('0x104')](config[_0x071a('0x105')],_0x071a('0x109'),'3.1.0')));_0x3914d2[_0x071a('0x5')](_0x071a('0x10a'),express['static'](path[_0x071a('0x104')](config[_0x071a('0x105')],_0x071a('0x10b'))));_0x3914d2[_0x071a('0x10c')](_0x071a('0x10d'))[_0x071a('0x10e')](errors[0x194]);_0x3914d2[_0x071a('0x10c')]('/*')['get'](function(_0x16f3d7,_0x65e5f9){_0x65e5f9[_0x071a('0x10f')](path['resolve'](_0x3914d2[_0x071a('0x10e')](_0x071a('0x110'))+_0x071a('0x111')));});return _0x3914d2;});};
\ No newline at end of file
index 38c8249..6b37a1f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6132=['../api/intServicenowAccount/intServicenowAccount.rpc','../api/intDynamics365Account/intDynamics365Account.rpc','../api/intFreshsalesAccount/intFreshsalesAccount.rpc','../api/chatQueueReport/chatQueueReport.rpc','../api/squareReport/squareReport.rpc','../api/squareReportDetail/squareReportDetail.rpc','../api/setting/setting.rpc','../api/squareRecording/squareRecording.rpc','../api/attachment/attachment.rpc','../api/whatsappAccount/whatsappAccount.rpc','../api/whatsappInteraction/whatsappInteraction.rpc','../api/whatsappMessage/whatsappMessage.rpc','../api/whatsappQueueReport/whatsappQueueReport.rpc','../api/whatsappQueue/whatsappQueue.rpc','http','rpc','localhost','log','Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!','../config/triggers','default','RPC\x20listening\x20on\x20','jayson/promise','lodash','../config/environment','listen','merge','../api/user/user.rpc','../api/voiceExtension/voiceExtension.rpc','../api/voiceRecording/voiceRecording.rpc','../api/voiceCallReport/voiceCallReport.rpc','../api/voiceAgentReport/voiceAgentReport.rpc','../api/memberReport/memberReport.rpc','../api/trunk/trunk.rpc','../api/voiceTransferReport/voiceTransferReport.rpc','../api/userVoiceQueueRt/userVoiceQueueRt.rpc','../api/mailServerIn/mailServerIn.rpc','../api/mailAccount/mailAccount.rpc','../api/mailQueue/mailQueue.rpc','../api/mailMessage/mailMessage.rpc','../api/mailApplication/mailApplication.rpc','../api/mailQueueReport/mailQueueReport.rpc','../api/faxAccount/faxAccount.rpc','../api/faxInteraction/faxInteraction.rpc','../api/faxMessage/faxMessage.rpc','../api/faxQueue/faxQueue.rpc','../api/faxQueueReport/faxQueueReport.rpc','../api/smsAccount/smsAccount.rpc','../api/smsMessage/smsMessage.rpc','../api/smsQueue/smsQueue.rpc','../api/openchannelApplication/openchannelApplication.rpc','../api/openchannelQueue/openchannelQueue.rpc','../api/chatInteraction/chatInteraction.rpc','../api/chatQueue/chatQueue.rpc','../api/cmContact/cmContact.rpc','../api/cmHopper/cmHopper.rpc','../api/cmHopperBlack/cmHopperBlack.rpc','../api/cmHopperFinal/cmHopperFinal.rpc','../api/cmHopperHistory/cmHopperHistory.rpc','../api/reportAgentPreview/reportAgentPreview.rpc','../api/interval/interval.rpc','../api/pause/pause.rpc','../api/sound/sound.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/intFreshdeskAccount/intFreshdeskAccount.rpc','../api/intVtigerAccount/intVtigerAccount.rpc'];(function(_0x44268d,_0xad8443){var _0x4be92d=function(_0x8a57ff){while(--_0x8a57ff){_0x44268d['push'](_0x44268d['shift']());}};_0x4be92d(++_0xad8443);}(_0x6132,0x13a));var _0x2613=function(_0x596abf,_0x4c02f1){_0x596abf=_0x596abf-0x0;var _0x210ac8=_0x6132[_0x596abf];return _0x210ac8;};'use strict';var jayson=require(_0x2613('0x0'));var _=require(_0x2613('0x1'));var config=require(_0x2613('0x2'));exports[_0x2613('0x3')]=function(){return new Promise(function(_0x4a191a,_0x2e19a7){var _0x1a9371={};_0x1a9371=_[_0x2613('0x4')](_0x1a9371,require(_0x2613('0x5')));_0x1a9371=_['merge'](_0x1a9371,require(_0x2613('0x6')));_0x1a9371=_['merge'](_0x1a9371,require('../api/voiceQueue/voiceQueue.rpc'));_0x1a9371=_[_0x2613('0x4')](_0x1a9371,require(_0x2613('0x7')));_0x1a9371=_[_0x2613('0x4')](_0x1a9371,require(_0x2613('0x8')));_0x1a9371=_[_0x2613('0x4')](_0x1a9371,require('../api/voiceDialReport/voiceDialReport.rpc'));_0x1a9371=_[_0x2613('0x4')](_0x1a9371,require(_0x2613('0x9')));_0x1a9371=_[_0x2613('0x4')](_0x1a9371,require('../api/voiceQueueReport/voiceQueueReport.rpc'));_0x1a9371=_[_0x2613('0x4')](_0x1a9371,require(_0x2613('0xa')));_0x1a9371=_[_0x2613('0x4')](_0x1a9371,require(_0x2613('0xb')));_0x1a9371=_[_0x2613('0x4')](_0x1a9371,require(_0x2613('0xc')));_0x1a9371=_[_0x2613('0x4')](_0x1a9371,require(_0x2613('0xd')));_0x1a9371=_[_0x2613('0x4')](_0x1a9371,require(_0x2613('0xe')));_0x1a9371=_['merge'](_0x1a9371,require(_0x2613('0xf')));_0x1a9371=_[_0x2613('0x4')](_0x1a9371,require(_0x2613('0x10')));_0x1a9371=_[_0x2613('0x4')](_0x1a9371,require('../api/mailInteraction/mailInteraction.rpc'));_0x1a9371=_[_0x2613('0x4')](_0x1a9371,require(_0x2613('0x11')));_0x1a9371=_[_0x2613('0x4')](_0x1a9371,require(_0x2613('0x12')));_0x1a9371=_['merge'](_0x1a9371,require(_0x2613('0x13')));_0x1a9371=_[_0x2613('0x4')](_0x1a9371,require(_0x2613('0x14')));_0x1a9371=_[_0x2613('0x4')](_0x1a9371,require('../api/faxApplication/faxApplication.rpc'));_0x1a9371=_[_0x2613('0x4')](_0x1a9371,require(_0x2613('0x15')));_0x1a9371=_['merge'](_0x1a9371,require(_0x2613('0x16')));_0x1a9371=_[_0x2613('0x4')](_0x1a9371,require(_0x2613('0x17')));_0x1a9371=_[_0x2613('0x4')](_0x1a9371,require(_0x2613('0x18')));_0x1a9371=_['merge'](_0x1a9371,require(_0x2613('0x19')));_0x1a9371=_[_0x2613('0x4')](_0x1a9371,require('../api/smsInteraction/smsInteraction.rpc'));_0x1a9371=_[_0x2613('0x4')](_0x1a9371,require(_0x2613('0x1a')));_0x1a9371=_[_0x2613('0x4')](_0x1a9371,require(_0x2613('0x1b')));_0x1a9371=_['merge'](_0x1a9371,require(_0x2613('0x1c')));_0x1a9371=_['merge'](_0x1a9371,require('../api/openchannelInteraction/openchannelInteraction.rpc'));_0x1a9371=_[_0x2613('0x4')](_0x1a9371,require('../api/openchannelMessage/openchannelMessage.rpc'));_0x1a9371=_[_0x2613('0x4')](_0x1a9371,require(_0x2613('0x1d')));_0x1a9371=_[_0x2613('0x4')](_0x1a9371,require('../api/openchannelQueueReport/openchannelQueueReport.rpc'));_0x1a9371=_['merge'](_0x1a9371,require(_0x2613('0x1e')));_0x1a9371=_[_0x2613('0x4')](_0x1a9371,require('../api/chatMessage/chatMessage.rpc'));_0x1a9371=_[_0x2613('0x4')](_0x1a9371,require(_0x2613('0x1f')));_0x1a9371=_[_0x2613('0x4')](_0x1a9371,require(_0x2613('0x20')));_0x1a9371=_[_0x2613('0x4')](_0x1a9371,require(_0x2613('0x21')));_0x1a9371=_[_0x2613('0x4')](_0x1a9371,require(_0x2613('0x22')));_0x1a9371=_['merge'](_0x1a9371,require(_0x2613('0x23')));_0x1a9371=_[_0x2613('0x4')](_0x1a9371,require(_0x2613('0x24')));_0x1a9371=_[_0x2613('0x4')](_0x1a9371,require(_0x2613('0x25')));_0x1a9371=_[_0x2613('0x4')](_0x1a9371,require(_0x2613('0x26')));_0x1a9371=_[_0x2613('0x4')](_0x1a9371,require(_0x2613('0x27')));_0x1a9371=_['merge'](_0x1a9371,require(_0x2613('0x28')));_0x1a9371=_[_0x2613('0x4')](_0x1a9371,require(_0x2613('0x29')));_0x1a9371=_[_0x2613('0x4')](_0x1a9371,require(_0x2613('0x2a')));_0x1a9371=_[_0x2613('0x4')](_0x1a9371,require(_0x2613('0x2b')));_0x1a9371=_[_0x2613('0x4')](_0x1a9371,require('../api/variable/variable.rpc'));_0x1a9371=_[_0x2613('0x4')](_0x1a9371,require(_0x2613('0x2c')));_0x1a9371=_[_0x2613('0x4')](_0x1a9371,require(_0x2613('0x2d')));_0x1a9371=_[_0x2613('0x4')](_0x1a9371,require(_0x2613('0x2e')));_0x1a9371=_['merge'](_0x1a9371,require(_0x2613('0x2f')));_0x1a9371=_['merge'](_0x1a9371,require(_0x2613('0x30')));_0x1a9371=_['merge'](_0x1a9371,require(_0x2613('0x31')));_0x1a9371=_['merge'](_0x1a9371,require(_0x2613('0x32')));_0x1a9371=_[_0x2613('0x4')](_0x1a9371,require(_0x2613('0x33')));_0x1a9371=_[_0x2613('0x4')](_0x1a9371,require(_0x2613('0x34')));_0x1a9371=_['merge'](_0x1a9371,require(_0x2613('0x35')));_0x1a9371=_[_0x2613('0x4')](_0x1a9371,require(_0x2613('0x36')));_0x1a9371=_['merge'](_0x1a9371,require('../api/smsQueueReport/smsQueueReport.rpc'));_0x1a9371=_[_0x2613('0x4')](_0x1a9371,require(_0x2613('0x37')));_0x1a9371=_[_0x2613('0x4')](_0x1a9371,require(_0x2613('0x38')));_0x1a9371=_[_0x2613('0x4')](_0x1a9371,require(_0x2613('0x39')));_0x1a9371=_['merge'](_0x1a9371,require('../api/squareOdbc/squareOdbc.rpc'));_0x1a9371=_[_0x2613('0x4')](_0x1a9371,require('../api/squareProject/squareProject.rpc'));_0x1a9371=_['merge'](_0x1a9371,require(_0x2613('0x3a')));_0x1a9371=_[_0x2613('0x4')](_0x1a9371,require('../api/squareMessage/squareMessage.rpc'));_0x1a9371=_[_0x2613('0x4')](_0x1a9371,require('../api/campaign/campaign.rpc'));_0x1a9371=_[_0x2613('0x4')](_0x1a9371,require(_0x2613('0x3b')));_0x1a9371=_['merge'](_0x1a9371,require('../api/plugin/plugin.rpc'));_0x1a9371=_['merge'](_0x1a9371,require(_0x2613('0x3c')));_0x1a9371=_[_0x2613('0x4')](_0x1a9371,require(_0x2613('0x3d')));_0x1a9371=_['merge'](_0x1a9371,require(_0x2613('0x3e')));_0x1a9371=_[_0x2613('0x4')](_0x1a9371,require(_0x2613('0x3f')));_0x1a9371=_[_0x2613('0x4')](_0x1a9371,require(_0x2613('0x40')));var _0x5eccd6=jayson['server'](_0x1a9371)[_0x2613('0x41')]();var _0x3f49d3=config[_0x2613('0x42')]['port']||config['port']+0x1;var _0xf9ab5b=config[_0x2613('0x42')]['ip']||_0x2613('0x43');_0x5eccd6['on']('error',function(_0x584186){return _0x2e19a7(_0x584186);});_0x5eccd6['listen'](_0x3f49d3,_0xf9ab5b,function(){console[_0x2613('0x44')](_0x2613('0x45'),_0xf9ab5b,_0x3f49d3);require(_0x2613('0x46'))[_0x2613('0x47')]();return _0x4a191a(_0x2613('0x48')+_0xf9ab5b+':'+_0x3f49d3);});});};
\ No newline at end of file
+var _0x5bbe=['../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/intDeskAccount/intDeskAccount.rpc','../api/intZendeskAccount/intZendeskAccount.rpc','../api/intVtigerAccount/intVtigerAccount.rpc','../api/intDynamics365Account/intDynamics365Account.rpc','../api/intFreshsalesAccount/intFreshsalesAccount.rpc','../api/chatQueueReport/chatQueueReport.rpc','../api/squareReport/squareReport.rpc','../api/squareReportDetail/squareReportDetail.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','http','port','error','Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!','../config/triggers','default','RPC\x20listening\x20on\x20','jayson/promise','lodash','../config/environment','listen','../api/user/user.rpc','merge','../api/voiceExtension/voiceExtension.rpc','../api/voiceQueue/voiceQueue.rpc','../api/voiceRecording/voiceRecording.rpc','../api/voiceCallReport/voiceCallReport.rpc','../api/voiceDialReport/voiceDialReport.rpc','../api/voiceAgentReport/voiceAgentReport.rpc','../api/voiceQueueReport/voiceQueueReport.rpc','../api/trunk/trunk.rpc','../api/voiceTransferReport/voiceTransferReport.rpc','../api/userVoiceQueueRt/userVoiceQueueRt.rpc','../api/mailServerIn/mailServerIn.rpc','../api/mailAccount/mailAccount.rpc','../api/mailQueue/mailQueue.rpc','../api/mailInteraction/mailInteraction.rpc','../api/mailMessage/mailMessage.rpc','../api/mailApplication/mailApplication.rpc','../api/faxAccount/faxAccount.rpc','../api/faxApplication/faxApplication.rpc','../api/faxMessage/faxMessage.rpc','../api/faxQueueReport/faxQueueReport.rpc','../api/smsAccount/smsAccount.rpc','../api/smsInteraction/smsInteraction.rpc','../api/smsMessage/smsMessage.rpc','../api/openchannelApplication/openchannelApplication.rpc','../api/openchannelInteraction/openchannelInteraction.rpc','../api/openchannelMessage/openchannelMessage.rpc','../api/openchannelQueue/openchannelQueue.rpc','../api/chatMessage/chatMessage.rpc','../api/chatQueue/chatQueue.rpc','../api/cmContact/cmContact.rpc','../api/cmHopper/cmHopper.rpc','../api/cmHopperBlack/cmHopperBlack.rpc','../api/cmHopperFinal/cmHopperFinal.rpc','../api/cmHopperHistory/cmHopperHistory.rpc','../api/reportAgentPreview/reportAgentPreview.rpc','../api/interval/interval.rpc'];(function(_0x672f78,_0x582219){var _0x42dd43=function(_0x2db3f4){while(--_0x2db3f4){_0x672f78['push'](_0x672f78['shift']());}};_0x42dd43(++_0x582219);}(_0x5bbe,0x6e));var _0xe5bb=function(_0x4f715c,_0x1a49ea){_0x4f715c=_0x4f715c-0x0;var _0x33fe1d=_0x5bbe[_0x4f715c];return _0x33fe1d;};'use strict';var jayson=require(_0xe5bb('0x0'));var _=require(_0xe5bb('0x1'));var config=require(_0xe5bb('0x2'));exports[_0xe5bb('0x3')]=function(){return new Promise(function(_0x38ecc6,_0x2ac075){var _0x18aaca={};_0x18aaca=_['merge'](_0x18aaca,require(_0xe5bb('0x4')));_0x18aaca=_[_0xe5bb('0x5')](_0x18aaca,require(_0xe5bb('0x6')));_0x18aaca=_['merge'](_0x18aaca,require(_0xe5bb('0x7')));_0x18aaca=_[_0xe5bb('0x5')](_0x18aaca,require(_0xe5bb('0x8')));_0x18aaca=_[_0xe5bb('0x5')](_0x18aaca,require(_0xe5bb('0x9')));_0x18aaca=_[_0xe5bb('0x5')](_0x18aaca,require(_0xe5bb('0xa')));_0x18aaca=_[_0xe5bb('0x5')](_0x18aaca,require(_0xe5bb('0xb')));_0x18aaca=_[_0xe5bb('0x5')](_0x18aaca,require(_0xe5bb('0xc')));_0x18aaca=_['merge'](_0x18aaca,require('../api/memberReport/memberReport.rpc'));_0x18aaca=_['merge'](_0x18aaca,require(_0xe5bb('0xd')));_0x18aaca=_[_0xe5bb('0x5')](_0x18aaca,require(_0xe5bb('0xe')));_0x18aaca=_[_0xe5bb('0x5')](_0x18aaca,require(_0xe5bb('0xf')));_0x18aaca=_[_0xe5bb('0x5')](_0x18aaca,require(_0xe5bb('0x10')));_0x18aaca=_[_0xe5bb('0x5')](_0x18aaca,require(_0xe5bb('0x11')));_0x18aaca=_[_0xe5bb('0x5')](_0x18aaca,require(_0xe5bb('0x12')));_0x18aaca=_[_0xe5bb('0x5')](_0x18aaca,require(_0xe5bb('0x13')));_0x18aaca=_['merge'](_0x18aaca,require(_0xe5bb('0x14')));_0x18aaca=_['merge'](_0x18aaca,require(_0xe5bb('0x15')));_0x18aaca=_['merge'](_0x18aaca,require('../api/mailQueueReport/mailQueueReport.rpc'));_0x18aaca=_[_0xe5bb('0x5')](_0x18aaca,require(_0xe5bb('0x16')));_0x18aaca=_[_0xe5bb('0x5')](_0x18aaca,require(_0xe5bb('0x17')));_0x18aaca=_[_0xe5bb('0x5')](_0x18aaca,require('../api/faxInteraction/faxInteraction.rpc'));_0x18aaca=_[_0xe5bb('0x5')](_0x18aaca,require(_0xe5bb('0x18')));_0x18aaca=_[_0xe5bb('0x5')](_0x18aaca,require('../api/faxQueue/faxQueue.rpc'));_0x18aaca=_[_0xe5bb('0x5')](_0x18aaca,require(_0xe5bb('0x19')));_0x18aaca=_[_0xe5bb('0x5')](_0x18aaca,require(_0xe5bb('0x1a')));_0x18aaca=_[_0xe5bb('0x5')](_0x18aaca,require(_0xe5bb('0x1b')));_0x18aaca=_[_0xe5bb('0x5')](_0x18aaca,require(_0xe5bb('0x1c')));_0x18aaca=_[_0xe5bb('0x5')](_0x18aaca,require('../api/smsQueue/smsQueue.rpc'));_0x18aaca=_['merge'](_0x18aaca,require(_0xe5bb('0x1d')));_0x18aaca=_[_0xe5bb('0x5')](_0x18aaca,require(_0xe5bb('0x1e')));_0x18aaca=_[_0xe5bb('0x5')](_0x18aaca,require(_0xe5bb('0x1f')));_0x18aaca=_[_0xe5bb('0x5')](_0x18aaca,require(_0xe5bb('0x20')));_0x18aaca=_[_0xe5bb('0x5')](_0x18aaca,require('../api/openchannelQueueReport/openchannelQueueReport.rpc'));_0x18aaca=_[_0xe5bb('0x5')](_0x18aaca,require('../api/chatInteraction/chatInteraction.rpc'));_0x18aaca=_[_0xe5bb('0x5')](_0x18aaca,require(_0xe5bb('0x21')));_0x18aaca=_[_0xe5bb('0x5')](_0x18aaca,require(_0xe5bb('0x22')));_0x18aaca=_[_0xe5bb('0x5')](_0x18aaca,require(_0xe5bb('0x23')));_0x18aaca=_[_0xe5bb('0x5')](_0x18aaca,require(_0xe5bb('0x24')));_0x18aaca=_['merge'](_0x18aaca,require(_0xe5bb('0x25')));_0x18aaca=_[_0xe5bb('0x5')](_0x18aaca,require(_0xe5bb('0x26')));_0x18aaca=_[_0xe5bb('0x5')](_0x18aaca,require(_0xe5bb('0x27')));_0x18aaca=_[_0xe5bb('0x5')](_0x18aaca,require(_0xe5bb('0x28')));_0x18aaca=_[_0xe5bb('0x5')](_0x18aaca,require(_0xe5bb('0x29')));_0x18aaca=_['merge'](_0x18aaca,require(_0xe5bb('0x2a')));_0x18aaca=_[_0xe5bb('0x5')](_0x18aaca,require(_0xe5bb('0x2b')));_0x18aaca=_['merge'](_0x18aaca,require(_0xe5bb('0x2c')));_0x18aaca=_[_0xe5bb('0x5')](_0x18aaca,require(_0xe5bb('0x2d')));_0x18aaca=_['merge'](_0x18aaca,require(_0xe5bb('0x2e')));_0x18aaca=_['merge'](_0x18aaca,require(_0xe5bb('0x2f')));_0x18aaca=_[_0xe5bb('0x5')](_0x18aaca,require(_0xe5bb('0x30')));_0x18aaca=_[_0xe5bb('0x5')](_0x18aaca,require('../api/intSugarcrmAccount/intSugarcrmAccount.rpc'));_0x18aaca=_[_0xe5bb('0x5')](_0x18aaca,require(_0xe5bb('0x31')));_0x18aaca=_[_0xe5bb('0x5')](_0x18aaca,require('../api/intZohoAccount/intZohoAccount.rpc'));_0x18aaca=_[_0xe5bb('0x5')](_0x18aaca,require(_0xe5bb('0x32')));_0x18aaca=_[_0xe5bb('0x5')](_0x18aaca,require('../api/intFreshdeskAccount/intFreshdeskAccount.rpc'));_0x18aaca=_['merge'](_0x18aaca,require(_0xe5bb('0x33')));_0x18aaca=_[_0xe5bb('0x5')](_0x18aaca,require('../api/intServicenowAccount/intServicenowAccount.rpc'));_0x18aaca=_[_0xe5bb('0x5')](_0x18aaca,require(_0xe5bb('0x34')));_0x18aaca=_['merge'](_0x18aaca,require(_0xe5bb('0x35')));_0x18aaca=_[_0xe5bb('0x5')](_0x18aaca,require(_0xe5bb('0x36')));_0x18aaca=_['merge'](_0x18aaca,require('../api/smsQueueReport/smsQueueReport.rpc'));_0x18aaca=_[_0xe5bb('0x5')](_0x18aaca,require(_0xe5bb('0x37')));_0x18aaca=_[_0xe5bb('0x5')](_0x18aaca,require(_0xe5bb('0x38')));_0x18aaca=_[_0xe5bb('0x5')](_0x18aaca,require('../api/setting/setting.rpc'));_0x18aaca=_['merge'](_0x18aaca,require(_0xe5bb('0x39')));_0x18aaca=_[_0xe5bb('0x5')](_0x18aaca,require(_0xe5bb('0x3a')));_0x18aaca=_[_0xe5bb('0x5')](_0x18aaca,require(_0xe5bb('0x3b')));_0x18aaca=_['merge'](_0x18aaca,require(_0xe5bb('0x3c')));_0x18aaca=_[_0xe5bb('0x5')](_0x18aaca,require(_0xe5bb('0x3d')));_0x18aaca=_['merge'](_0x18aaca,require(_0xe5bb('0x3e')));_0x18aaca=_['merge'](_0x18aaca,require(_0xe5bb('0x3f')));_0x18aaca=_[_0xe5bb('0x5')](_0x18aaca,require(_0xe5bb('0x40')));_0x18aaca=_[_0xe5bb('0x5')](_0x18aaca,require(_0xe5bb('0x41')));_0x18aaca=_[_0xe5bb('0x5')](_0x18aaca,require(_0xe5bb('0x42')));_0x18aaca=_[_0xe5bb('0x5')](_0x18aaca,require(_0xe5bb('0x43')));_0x18aaca=_[_0xe5bb('0x5')](_0x18aaca,require(_0xe5bb('0x44')));var _0x4e399e=jayson['server'](_0x18aaca)[_0xe5bb('0x45')]();var _0x1bf361=config['rpc']['port']||config[_0xe5bb('0x46')]+0x1;var _0xc8ffc1=config['rpc']['ip']||'localhost';_0x4e399e['on'](_0xe5bb('0x47'),function(_0x8140b6){return _0x2ac075(_0x8140b6);});_0x4e399e['listen'](_0x1bf361,_0xc8ffc1,function(){console['log'](_0xe5bb('0x48'),_0xc8ffc1,_0x1bf361);require(_0xe5bb('0x49'))[_0xe5bb('0x4a')]();return _0x38ecc6(_0xe5bb('0x4b')+_0xc8ffc1+':'+_0x1bf361);});});};
\ No newline at end of file
index c2fb58a..c76972a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f32=['function','no\x20code','result=','indexOf','substr','startsWith','length','substring','match','error','E_AGI_SOCKET_ERROR','code','close','E_AGI_SOCKET_CLOSE','timeout','E_AGI_SOCKET_TIMEOUT','destroy','command','write','inherits','prototype','sendRequest','sync','ANSWER','getData','format','noop','VERBOSE\x20\x22%s\x22','EXEC\x20%s\x20%s','join','setContext','setExtension','SET\x20EXTENSION\x20%s','SET\x20PRIORITY\x20%s','HANGUP','setVariable','isBoolean','SET\x20VARIABLE\x20%s\x20\x22%s\x22','toString','replace','sayNumber','SAY\x20NUMBER\x20%s\x20%s','sayDigits','sayPhonetic','SAY\x20PHONETIC\x20\x22%s\x22\x20%s','continueAt','setPriority','GOTO\x20%s\x20%s\x20%s','GET\x20VARIABLE\x20\x22%s\x22','wav','BEEP','RECORD\x20FILE\x20\x22%s\x22\x20\x22%s\x22\x20\x22%s\x22\x20%s\x20%s\x20%s','streamFile','wait','exec','WAIT','ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s','label','exports','util','lodash','EventEmitter','./reply','./error','call','setEncoding','utf8','setTimeout','emit','ready','line','toLowerCase','hangup','520-Invalid','search','520\x20End\x20of\x20proper'];(function(_0x483e3a,_0x568361){var _0x43fca9=function(_0x273d7e){while(--_0x273d7e){_0x483e3a['push'](_0x483e3a['shift']());}};_0x43fca9(++_0x568361);}(_0x3f32,0x87));var _0x23f3=function(_0x51ed62,_0x574379){_0x51ed62=_0x51ed62-0x0;var _0x34aee3=_0x3f32[_0x51ed62];return _0x34aee3;};'use strict';var util=require(_0x23f3('0x0'));var _=require(_0x23f3('0x1'));var EventEmitter=require('events')[_0x23f3('0x2')];var AGIReply=require(_0x23f3('0x3'));var AGIError=require(_0x23f3('0x4'));function AGIChannel(_0x542045){var _0x4b4c38=this,_0x58593b=new AGIReply(),_0x5a1e13=![],_0x44e693={};EventEmitter[_0x23f3('0x5')](_0x4b4c38);_0x542045[_0x23f3('0x6')](_0x23f3('0x7'));_0x542045[_0x23f3('0x8')](0x8*0x3c*0x3c*0x3e8);_0x58593b[_0x23f3('0x6')](_0x23f3('0x7'));_0x58593b['on']('headers',function(_0x128b65){for(var _0x8b4e4 in _0x128b65){_0x4b4c38[_0x8b4e4]=_0x128b65[_0x8b4e4];}_0x4b4c38[_0x23f3('0x9')](_0x23f3('0xa'));});_0x58593b['on'](_0x23f3('0xb'),function(_0x597b53){if(_0x597b53[_0x23f3('0xc')]()==_0x23f3('0xd')){_0x4b4c38[_0x23f3('0x9')](_0x23f3('0xd'));return;}if(_0x597b53['substring'](0x0,0xb)==_0x23f3('0xe')){_0x5a1e13=!![];}if(_0x5a1e13){_0x44e693['rx']+=_0x597b53+'\x0a';if(_0x597b53[_0x23f3('0xf')](_0x23f3('0x10'))!=-0x1){_0x5a1e13=![];}}else{_0x44e693['rx']=_0x597b53;}if(_0x5a1e13){return;}if(typeof _0x44e693['cb']==_0x23f3('0x11')){var _0x3d98db=_0x44e693['rx']['substring'](0x0,0x3),_0x4971d1=null,_0x5a5504=null;_0x3d98db=parseInt(_0x3d98db);if(isNaN(_0x3d98db)){_0x44e693['cb'](null,{'code':0x1f4,'result':-0x1,'extra':_0x23f3('0x12')});return;}if(_0x3d98db!=0xc8){_0x44e693['cb'](null,{'code':_0x3d98db,'result':-0x1,'extra':'KO'});return;}_0x4971d1=_0x44e693['rx']['substring'](0x4)['replace'](_0x23f3('0x13'),'');if(_0x4971d1[_0x23f3('0x14')]('\x20')!=-0x1){_0x4971d1=_0x4971d1[_0x23f3('0x15')](0x0,_0x4971d1['indexOf']('\x20'));}if(_[_0x23f3('0x16')](_0x4971d1,'-1')){_0x4971d1=parseInt(_0x4971d1);}_0x5a5504=_0x44e693['rx']['split']('\x20');if(_0x5a5504[_0x23f3('0x17')]==0x3){_0x5a5504=_0x5a5504[0x2][_0x23f3('0x18')](0x1,_0x5a5504[0x2][_0x23f3('0x17')]-0x1);}else if(_0x5a5504[_0x23f3('0x17')]>0x3){var _0x418ff4=/\((.+)\)/;var _0x11ffbf=_0x44e693['rx'][_0x23f3('0x19')](_0x418ff4);if(_0x11ffbf){_0x5a5504=_0x11ffbf[0x1];}else{_0x5a5504=null;}}else{_0x5a5504=null;}_0x44e693['cb'](null,{'code':_0x3d98db,'result':_0x4971d1,'extra':_0x5a5504});}});_0x542045['on'](_0x23f3('0x1a'),function(_0x544f90){_0x4b4c38['emit'](_0x23f3('0x1a'),new AGIError(_0x23f3('0x1b'),_0x544f90[_0x23f3('0x1c')]));});_0x542045['on']('close',function(){_0x4b4c38[_0x23f3('0x9')](_0x23f3('0x1d'),new AGIError(_0x23f3('0x1e')));});_0x542045['on'](_0x23f3('0x1f'),function(){_0x4b4c38['emit']('timeout',new AGIError(_0x23f3('0x20')));_0x542045[_0x23f3('0x21')]();});_0x542045['pipe'](_0x58593b);this[_0x23f3('0x22')]=function(_0x1dbe90,_0x44139e){var _0x1dbe90=_0x1dbe90||'',_0x44139e=typeof _0x44139e==_0x23f3('0x11')?_0x44139e:new Function();_0x44e693={'tx':_0x1dbe90,'rx':'','cb':_0x44139e};_0x542045[_0x23f3('0x23')](_0x1dbe90+'\x0a');},this['close']=function(){_0x542045[_0x23f3('0x21')]();};}util[_0x23f3('0x24')](AGIChannel,EventEmitter);AGIChannel[_0x23f3('0x25')][_0x23f3('0x26')]=function(_0x3d60e6){return this[_0x23f3('0x22')][_0x23f3('0x27')](this,_0x3d60e6);};AGIChannel[_0x23f3('0x25')]['answer']=function(){return this['sendRequest'](_0x23f3('0x28'));};AGIChannel['prototype'][_0x23f3('0x29')]=function(_0x3662b2,_0x2db944,_0x2bca1c){_0x3662b2=_0x3662b2===undefined?'beep':_0x3662b2;_0x2db944=_0x2db944===undefined?'5':_0x2db944;_0x2bca1c=_0x2bca1c===undefined?'1':_0x2bca1c;return this[_0x23f3('0x26')](util[_0x23f3('0x2a')]('GET\x20DATA\x20\x22%s\x22\x20%s\x20%s',_0x3662b2,_0x2db944*0x3e8,_0x2bca1c));};AGIChannel[_0x23f3('0x25')][_0x23f3('0x2b')]=function(_0x345b76){_0x345b76=_0x345b76||'NO\x20MESSAGE';return this[_0x23f3('0x26')](util[_0x23f3('0x2a')](_0x23f3('0x2c'),_0x345b76));};AGIChannel[_0x23f3('0x25')]['exec']=function(_0x3d8a84,_0x27a6fb){if(_['isArray'](_0x27a6fb)){return this[_0x23f3('0x26')](util[_0x23f3('0x2a')](_0x23f3('0x2d'),_0x3d8a84,_0x27a6fb[_0x23f3('0x2e')](',')));}return this[_0x23f3('0x26')](util[_0x23f3('0x2a')]('EXEC\x20%s\x20%s',_0x3d8a84,_0x27a6fb));};AGIChannel[_0x23f3('0x25')][_0x23f3('0x2f')]=function(_0x44bd2d){return this[_0x23f3('0x26')](util['format']('SET\x20CONTEXT\x20%s',_0x44bd2d));};AGIChannel[_0x23f3('0x25')][_0x23f3('0x30')]=function(_0x58d20e){return this[_0x23f3('0x26')](util[_0x23f3('0x2a')](_0x23f3('0x31'),_0x58d20e));};AGIChannel['prototype']['setPriority']=function(_0x15a522){return this[_0x23f3('0x26')](util[_0x23f3('0x2a')](_0x23f3('0x32'),_0x15a522));};AGIChannel[_0x23f3('0x25')][_0x23f3('0xd')]=function(){return this[_0x23f3('0x26')](_0x23f3('0x33'));};AGIChannel[_0x23f3('0x25')][_0x23f3('0x34')]=function(_0x475652,_0x5393ad){var _0x31f0d6=_[_0x23f3('0x35')](_0x5393ad)||_['isNumber'](_0x5393ad)?_0x5393ad['toString']():_0x5393ad;return this['sendRequest'](util[_0x23f3('0x2a')](_0x23f3('0x36'),_0x475652,_0x31f0d6?_0x31f0d6[_0x23f3('0x37')]()[_0x23f3('0x38')](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel['prototype'][_0x23f3('0x39')]=function(_0x54b98a,_0x3c4333){return this[_0x23f3('0x26')](util[_0x23f3('0x2a')](_0x23f3('0x3a'),_0x54b98a,_0x3c4333));};AGIChannel[_0x23f3('0x25')][_0x23f3('0x3b')]=function(_0x538dc8,_0x4149e5){return this[_0x23f3('0x26')](util[_0x23f3('0x2a')]('SAY\x20DIGITS\x20%s\x20%s',_0x538dc8,_0x4149e5));};AGIChannel[_0x23f3('0x25')][_0x23f3('0x3c')]=function(_0x3e9d42,_0x31c21d){return this[_0x23f3('0x26')](util[_0x23f3('0x2a')](_0x23f3('0x3d'),_0x3e9d42,_0x31c21d));};AGIChannel[_0x23f3('0x25')][_0x23f3('0x3e')]=function(_0x3ff53d,_0x368cc7,_0x29ebb3){_0x368cc7=_0x368cc7||this['extension'];_0x29ebb3=_0x29ebb3||0x1;this[_0x23f3('0x2f')](_0x3ff53d);this['setExtension'](_0x368cc7);this[_0x23f3('0x3f')](_0x29ebb3);return this[_0x23f3('0x2b')](util['format'](_0x23f3('0x40'),_0x3ff53d,_0x368cc7,_0x29ebb3));};AGIChannel[_0x23f3('0x25')]['getVariable']=function(_0x3c683f){return this['sendRequest'](util[_0x23f3('0x2a')](_0x23f3('0x41'),_0x3c683f));};AGIChannel['prototype']['recordFile']=function(_0x226398,_0x395f54,_0x38251f,_0x5632b1,_0x10364a,_0x30d7e0){_0x395f54=_0x395f54||_0x23f3('0x42');_0x38251f=_0x38251f||'';_0x5632b1=_0x5632b1===undefined?-0x1:_0x5632b1==='-1'?-0x1:_0x5632b1*0x3e8;_0x10364a=_0x10364a===undefined?'':'s='+_0x10364a;_0x30d7e0=_0x30d7e0?_0x23f3('0x43'):'';return this[_0x23f3('0x26')](util[_0x23f3('0x2a')](_0x23f3('0x44'),_0x226398,_0x395f54,_0x38251f,_0x5632b1,_0x30d7e0,_0x10364a));};AGIChannel[_0x23f3('0x25')][_0x23f3('0x45')]=function(_0x1f36ef,_0x18607a){_0x18607a=_0x18607a||'';return this[_0x23f3('0x26')](util[_0x23f3('0x2a')]('STREAM\x20FILE\x20\x22%s\x22\x20\x22%s\x22',_0x1f36ef,_0x18607a));};AGIChannel[_0x23f3('0x25')]['agi']=function(_0x2a1d94){return this['exec']('AGI',_0x2a1d94);};AGIChannel[_0x23f3('0x25')][_0x23f3('0x46')]=function(_0xf65de){return this[_0x23f3('0x47')](_0x23f3('0x48'),_0xf65de);};AGIChannel[_0x23f3('0x25')][_0x23f3('0x1a')]=function(_0x5e75de,_0x30ba60){this[_0x23f3('0x2b')](util[_0x23f3('0x2a')](_0x23f3('0x49'),_0x5e75de['id'],_0x5e75de[_0x23f3('0x4a')],_0x30ba60));return{'code':0x1f4,'result':'-1','extra':''};};module[_0x23f3('0x4b')]=AGIChannel;
\ No newline at end of file
+var _0xaecc=['close','E_AGI_SOCKET_CLOSE','timeout','E_AGI_SOCKET_TIMEOUT','destroy','pipe','command','write','inherits','prototype','sendRequest','sync','answer','getData','beep','format','NO\x20MESSAGE','VERBOSE\x20\x22%s\x22','EXEC\x20%s\x20%s','join','setContext','setExtension','SET\x20EXTENSION\x20%s','SET\x20PRIORITY\x20%s','setVariable','isBoolean','isNumber','SET\x20VARIABLE\x20%s\x20\x22%s\x22','sayNumber','sayDigits','SAY\x20DIGITS\x20%s\x20%s','sayPhonetic','SAY\x20PHONETIC\x20\x22%s\x22\x20%s','continueAt','setPriority','GOTO\x20%s\x20%s\x20%s','getVariable','GET\x20VARIABLE\x20\x22%s\x22','wav','BEEP','streamFile','STREAM\x20FILE\x20\x22%s\x22\x20\x22%s\x22','agi','AGI','exec','WAIT','noop','ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s','label','exports','util','events','EventEmitter','./reply','./error','call','setEncoding','utf8','setTimeout','headers','emit','ready','line','toLowerCase','hangup','520-Invalid','search','520\x20End\x20of\x20proper','function','substring','no\x20code','replace','result=','indexOf','startsWith','split','length','match','error','code'];(function(_0x33af69,_0x405d65){var _0x270e02=function(_0xfb8751){while(--_0xfb8751){_0x33af69['push'](_0x33af69['shift']());}};_0x270e02(++_0x405d65);}(_0xaecc,0x172));var _0xcaec=function(_0x4fb193,_0x2fd5aa){_0x4fb193=_0x4fb193-0x0;var _0x383f8c=_0xaecc[_0x4fb193];return _0x383f8c;};'use strict';var util=require(_0xcaec('0x0'));var _=require('lodash');var EventEmitter=require(_0xcaec('0x1'))[_0xcaec('0x2')];var AGIReply=require(_0xcaec('0x3'));var AGIError=require(_0xcaec('0x4'));function AGIChannel(_0x3c47d7){var _0x1b7339=this,_0x1de6a3=new AGIReply(),_0x5ab26c=![],_0x366499={};EventEmitter[_0xcaec('0x5')](_0x1b7339);_0x3c47d7[_0xcaec('0x6')](_0xcaec('0x7'));_0x3c47d7[_0xcaec('0x8')](0x8*0x3c*0x3c*0x3e8);_0x1de6a3[_0xcaec('0x6')](_0xcaec('0x7'));_0x1de6a3['on'](_0xcaec('0x9'),function(_0x267441){for(var _0x505f4b in _0x267441){_0x1b7339[_0x505f4b]=_0x267441[_0x505f4b];}_0x1b7339[_0xcaec('0xa')](_0xcaec('0xb'));});_0x1de6a3['on'](_0xcaec('0xc'),function(_0x55c0cd){if(_0x55c0cd[_0xcaec('0xd')]()==_0xcaec('0xe')){_0x1b7339['emit'](_0xcaec('0xe'));return;}if(_0x55c0cd['substring'](0x0,0xb)==_0xcaec('0xf')){_0x5ab26c=!![];}if(_0x5ab26c){_0x366499['rx']+=_0x55c0cd+'\x0a';if(_0x55c0cd[_0xcaec('0x10')](_0xcaec('0x11'))!=-0x1){_0x5ab26c=![];}}else{_0x366499['rx']=_0x55c0cd;}if(_0x5ab26c){return;}if(typeof _0x366499['cb']==_0xcaec('0x12')){var _0xd68ff2=_0x366499['rx'][_0xcaec('0x13')](0x0,0x3),_0x4e72f7=null,_0x1c3715=null;_0xd68ff2=parseInt(_0xd68ff2);if(isNaN(_0xd68ff2)){_0x366499['cb'](null,{'code':0x1f4,'result':-0x1,'extra':_0xcaec('0x14')});return;}if(_0xd68ff2!=0xc8){_0x366499['cb'](null,{'code':_0xd68ff2,'result':-0x1,'extra':'KO'});return;}_0x4e72f7=_0x366499['rx']['substring'](0x4)[_0xcaec('0x15')](_0xcaec('0x16'),'');if(_0x4e72f7[_0xcaec('0x17')]('\x20')!=-0x1){_0x4e72f7=_0x4e72f7['substr'](0x0,_0x4e72f7[_0xcaec('0x17')]('\x20'));}if(_[_0xcaec('0x18')](_0x4e72f7,'-1')){_0x4e72f7=parseInt(_0x4e72f7);}_0x1c3715=_0x366499['rx'][_0xcaec('0x19')]('\x20');if(_0x1c3715['length']==0x3){_0x1c3715=_0x1c3715[0x2][_0xcaec('0x13')](0x1,_0x1c3715[0x2][_0xcaec('0x1a')]-0x1);}else if(_0x1c3715[_0xcaec('0x1a')]>0x3){var _0x438e6f=/\((.+)\)/;var _0x47ce1e=_0x366499['rx'][_0xcaec('0x1b')](_0x438e6f);if(_0x47ce1e){_0x1c3715=_0x47ce1e[0x1];}else{_0x1c3715=null;}}else{_0x1c3715=null;}_0x366499['cb'](null,{'code':_0xd68ff2,'result':_0x4e72f7,'extra':_0x1c3715});}});_0x3c47d7['on'](_0xcaec('0x1c'),function(_0x19b83b){_0x1b7339[_0xcaec('0xa')](_0xcaec('0x1c'),new AGIError('E_AGI_SOCKET_ERROR',_0x19b83b[_0xcaec('0x1d')]));});_0x3c47d7['on'](_0xcaec('0x1e'),function(){_0x1b7339['emit'](_0xcaec('0x1e'),new AGIError(_0xcaec('0x1f')));});_0x3c47d7['on'](_0xcaec('0x20'),function(){_0x1b7339[_0xcaec('0xa')](_0xcaec('0x20'),new AGIError(_0xcaec('0x21')));_0x3c47d7[_0xcaec('0x22')]();});_0x3c47d7[_0xcaec('0x23')](_0x1de6a3);this[_0xcaec('0x24')]=function(_0x23dd41,_0x319196){var _0x23dd41=_0x23dd41||'',_0x319196=typeof _0x319196==_0xcaec('0x12')?_0x319196:new Function();_0x366499={'tx':_0x23dd41,'rx':'','cb':_0x319196};_0x3c47d7[_0xcaec('0x25')](_0x23dd41+'\x0a');},this[_0xcaec('0x1e')]=function(){_0x3c47d7[_0xcaec('0x22')]();};}util[_0xcaec('0x26')](AGIChannel,EventEmitter);AGIChannel[_0xcaec('0x27')][_0xcaec('0x28')]=function(_0x2eef4a){return this[_0xcaec('0x24')][_0xcaec('0x29')](this,_0x2eef4a);};AGIChannel[_0xcaec('0x27')][_0xcaec('0x2a')]=function(){return this['sendRequest']('ANSWER');};AGIChannel[_0xcaec('0x27')][_0xcaec('0x2b')]=function(_0x24b7af,_0x5c1382,_0x3ecb2b){_0x24b7af=_0x24b7af===undefined?_0xcaec('0x2c'):_0x24b7af;_0x5c1382=_0x5c1382===undefined?'5':_0x5c1382;_0x3ecb2b=_0x3ecb2b===undefined?'1':_0x3ecb2b;return this['sendRequest'](util[_0xcaec('0x2d')]('GET\x20DATA\x20\x22%s\x22\x20%s\x20%s',_0x24b7af,_0x5c1382*0x3e8,_0x3ecb2b));};AGIChannel['prototype']['noop']=function(_0x203099){_0x203099=_0x203099||_0xcaec('0x2e');return this[_0xcaec('0x28')](util[_0xcaec('0x2d')](_0xcaec('0x2f'),_0x203099));};AGIChannel[_0xcaec('0x27')]['exec']=function(_0xf62d82,_0x23a86f){if(_['isArray'](_0x23a86f)){return this['sendRequest'](util[_0xcaec('0x2d')](_0xcaec('0x30'),_0xf62d82,_0x23a86f[_0xcaec('0x31')](',')));}return this[_0xcaec('0x28')](util[_0xcaec('0x2d')]('EXEC\x20%s\x20%s',_0xf62d82,_0x23a86f));};AGIChannel['prototype'][_0xcaec('0x32')]=function(_0x411bad){return this['sendRequest'](util[_0xcaec('0x2d')]('SET\x20CONTEXT\x20%s',_0x411bad));};AGIChannel[_0xcaec('0x27')][_0xcaec('0x33')]=function(_0x576303){return this['sendRequest'](util[_0xcaec('0x2d')](_0xcaec('0x34'),_0x576303));};AGIChannel['prototype']['setPriority']=function(_0x303d21){return this[_0xcaec('0x28')](util[_0xcaec('0x2d')](_0xcaec('0x35'),_0x303d21));};AGIChannel['prototype']['hangup']=function(){return this[_0xcaec('0x28')]('HANGUP');};AGIChannel[_0xcaec('0x27')][_0xcaec('0x36')]=function(_0x26eaa1,_0x40de91){var _0x4ce362=_[_0xcaec('0x37')](_0x40de91)||_[_0xcaec('0x38')](_0x40de91)?_0x40de91['toString']():_0x40de91;return this[_0xcaec('0x28')](util[_0xcaec('0x2d')](_0xcaec('0x39'),_0x26eaa1,_0x4ce362?_0x4ce362['toString']()['replace'](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel[_0xcaec('0x27')][_0xcaec('0x3a')]=function(_0x4b0d9b,_0x1ab55b){return this[_0xcaec('0x28')](util[_0xcaec('0x2d')]('SAY\x20NUMBER\x20%s\x20%s',_0x4b0d9b,_0x1ab55b));};AGIChannel[_0xcaec('0x27')][_0xcaec('0x3b')]=function(_0x3067f2,_0x4679d9){return this[_0xcaec('0x28')](util[_0xcaec('0x2d')](_0xcaec('0x3c'),_0x3067f2,_0x4679d9));};AGIChannel[_0xcaec('0x27')][_0xcaec('0x3d')]=function(_0x3038c2,_0x8b556e){return this['sendRequest'](util[_0xcaec('0x2d')](_0xcaec('0x3e'),_0x3038c2,_0x8b556e));};AGIChannel[_0xcaec('0x27')][_0xcaec('0x3f')]=function(_0x66f442,_0x143b0b,_0x2c2ac2){_0x143b0b=_0x143b0b||this['extension'];_0x2c2ac2=_0x2c2ac2||0x1;this[_0xcaec('0x32')](_0x66f442);this[_0xcaec('0x33')](_0x143b0b);this[_0xcaec('0x40')](_0x2c2ac2);return this['noop'](util[_0xcaec('0x2d')](_0xcaec('0x41'),_0x66f442,_0x143b0b,_0x2c2ac2));};AGIChannel[_0xcaec('0x27')][_0xcaec('0x42')]=function(_0x38f52c){return this[_0xcaec('0x28')](util[_0xcaec('0x2d')](_0xcaec('0x43'),_0x38f52c));};AGIChannel[_0xcaec('0x27')]['recordFile']=function(_0x384088,_0x4121ec,_0x1a3bef,_0x318037,_0x785450,_0x34322e){_0x4121ec=_0x4121ec||_0xcaec('0x44');_0x1a3bef=_0x1a3bef||'';_0x318037=_0x318037===undefined?-0x1:_0x318037==='-1'?-0x1:_0x318037*0x3e8;_0x785450=_0x785450===undefined?'':'s='+_0x785450;_0x34322e=_0x34322e?_0xcaec('0x45'):'';return this['sendRequest'](util[_0xcaec('0x2d')]('RECORD\x20FILE\x20\x22%s\x22\x20\x22%s\x22\x20\x22%s\x22\x20%s\x20%s\x20%s',_0x384088,_0x4121ec,_0x1a3bef,_0x318037,_0x34322e,_0x785450));};AGIChannel[_0xcaec('0x27')][_0xcaec('0x46')]=function(_0x121309,_0x3411f6){_0x3411f6=_0x3411f6||'';return this['sendRequest'](util[_0xcaec('0x2d')](_0xcaec('0x47'),_0x121309,_0x3411f6));};AGIChannel[_0xcaec('0x27')][_0xcaec('0x48')]=function(_0x1a86cc){return this['exec'](_0xcaec('0x49'),_0x1a86cc);};AGIChannel[_0xcaec('0x27')]['wait']=function(_0x2c87ca){return this[_0xcaec('0x4a')](_0xcaec('0x4b'),_0x2c87ca);};AGIChannel['prototype'][_0xcaec('0x1c')]=function(_0x17fa2d,_0x219ab7){this[_0xcaec('0x4c')](util[_0xcaec('0x2d')](_0xcaec('0x4d'),_0x17fa2d['id'],_0x17fa2d[_0xcaec('0x4e')],_0x219ab7));return{'code':0x1f4,'result':'-1','extra':''};};module[_0xcaec('0x4f')]=AGIChannel;
\ No newline at end of file
index 89960cf..732ff8c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc2fe=['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\x20error.\x20Code:\x20%s.','Socket\x20closed.','Socket\x20timeout.','Missing\x20\x27ivr.agi_network_script\x27.','E_AGI_UNDEFINED','push','format','apply','message','name','exports'];(function(_0x39096d,_0x51f8a0){var _0x13da4f=function(_0x11e6b2){while(--_0x11e6b2){_0x39096d['push'](_0x39096d['shift']());}};_0x13da4f(++_0x51f8a0);}(_0xc2fe,0xa2));var _0xec2f=function(_0x5c2bf2,_0x539cbf){_0x5c2bf2=_0x5c2bf2-0x0;var _0x3300dd=_0xc2fe[_0x5c2bf2];return _0x3300dd;};'use strict';var util=require(_0xec2f('0x0'));var error={'E_AGI_UNDEFINED':_0xec2f('0x1'),'E_AGI_ARGUMENT_PORT':_0xec2f('0x2'),'E_AGI_SERVER_ERROR':_0xec2f('0x3'),'E_AGI_SERVER_CLOSE':_0xec2f('0x4'),'E_AGI_SERVER_MAXCONNECTION':_0xec2f('0x5'),'E_AGI_SERVER_VOICE_DISABLED':_0xec2f('0x6'),'E_AGI_SOCKET_ERROR':_0xec2f('0x7'),'E_AGI_SOCKET_CLOSE':_0xec2f('0x8'),'E_AGI_SOCKET_TIMEOUT':_0xec2f('0x9'),'E_AGI_COMMAND_EMPTY':'Empty\x20command.','E_AGI_IVR_AGI_NETWORK_SCRIPT':_0xec2f('0xa'),'E_AGI_IVR_ENTRY':'Missing\x20\x27ivr.entry\x27\x20menu.'};function AGIError(_0x4593d4){var _0x4593d4=_0x4593d4||null,_0x1dcfbb=_0x1dcfbb||[],_0x2aecc1=0x1,_0x4b142f='';if(!error[_0x4593d4]){_0x4593d4=_0xec2f('0xb');}_0x1dcfbb[_0xec2f('0xc')](error[_0x4593d4]);while(arguments[_0x2aecc1]){_0x1dcfbb[_0xec2f('0xc')](arguments[_0x2aecc1]);_0x2aecc1++;}_0x4b142f=util[_0xec2f('0xd')][_0xec2f('0xe')](util,_0x1dcfbb);this[_0xec2f('0xf')]=_0x4b142f;this[_0xec2f('0x10')]=_0x4593d4;}module[_0xec2f('0x11')]=AGIError;
\ No newline at end of file
+var _0x5cfd=['push','message','exports','Undefined\x20error.','Argument\x20\x27port\x27\x20missing\x20in\x20function\x20call.','Server\x20error.\x20Code:\x20%s.','[LICENSE]\x20Server\x20max\x20connection.\x20Count:\x20%s.','[LICENSE\x20VOICE]\x20Server\x20license\x20voice\x20disabled.','Socket\x20closed.','Socket\x20timeout.','Empty\x20command.','Missing\x20\x27ivr.entry\x27\x20menu.','E_AGI_UNDEFINED'];(function(_0x4eda93,_0x14c5f8){var _0xcdaa57=function(_0x3683ac){while(--_0x3683ac){_0x4eda93['push'](_0x4eda93['shift']());}};_0xcdaa57(++_0x14c5f8);}(_0x5cfd,0x107));var _0xd5cf=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x5cfd[_0x3dd15e];return _0x231fd0;};'use strict';var util=require('util');var error={'E_AGI_UNDEFINED':_0xd5cf('0x0'),'E_AGI_ARGUMENT_PORT':_0xd5cf('0x1'),'E_AGI_SERVER_ERROR':_0xd5cf('0x2'),'E_AGI_SERVER_CLOSE':'Server\x20closed.','E_AGI_SERVER_MAXCONNECTION':_0xd5cf('0x3'),'E_AGI_SERVER_VOICE_DISABLED':_0xd5cf('0x4'),'E_AGI_SOCKET_ERROR':'Socket\x20error.\x20Code:\x20%s.','E_AGI_SOCKET_CLOSE':_0xd5cf('0x5'),'E_AGI_SOCKET_TIMEOUT':_0xd5cf('0x6'),'E_AGI_COMMAND_EMPTY':_0xd5cf('0x7'),'E_AGI_IVR_AGI_NETWORK_SCRIPT':'Missing\x20\x27ivr.agi_network_script\x27.','E_AGI_IVR_ENTRY':_0xd5cf('0x8')};function AGIError(_0x2f4dae){var _0x2f4dae=_0x2f4dae||null,_0x5a66b5=_0x5a66b5||[],_0x2b1f34=0x1,_0x1e57fa='';if(!error[_0x2f4dae]){_0x2f4dae=_0xd5cf('0x9');}_0x5a66b5[_0xd5cf('0xa')](error[_0x2f4dae]);while(arguments[_0x2b1f34]){_0x5a66b5['push'](arguments[_0x2b1f34]);_0x2b1f34++;}_0x1e57fa=util['format']['apply'](util,_0x5a66b5);this[_0xd5cf('0xb')]=_0x1e57fa;this['name']=_0x2f4dae;}module[_0xd5cf('0xc')]=AGIError;
\ No newline at end of file
index 7c332d7..54a9150 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3478=['projectUpdate','E_AGI_SERVER_ERROR','events','ioredis','./error','../../config/environment','redis','defaults','localhost','subscribe','agi','emit','error','message','parse'];(function(_0xa8f7f7,_0x10f3f5){var _0x5e5be3=function(_0x5730ab){while(--_0x5730ab){_0xa8f7f7['push'](_0xa8f7f7['shift']());}};_0x5e5be3(++_0x10f3f5);}(_0x3478,0xe3));var _0x8347=function(_0x4d77b8,_0x208e64){_0x4d77b8=_0x4d77b8-0x0;var _0x82da62=_0x3478[_0x4d77b8];return _0x82da62;};'use strict';var _=require('lodash');var EventEmitter=require(_0x8347('0x0'))['EventEmitter'];var Redis=require(_0x8347('0x1'));var AGIError=require(_0x8347('0x2'));var config=require(_0x8347('0x3'));config[_0x8347('0x4')]=_[_0x8347('0x5')](config['redis'],{'host':_0x8347('0x6'),'port':0x18eb});var eventEmitter=new EventEmitter();var sub=new Redis(config[_0x8347('0x4')]);sub[_0x8347('0x7')](_0x8347('0x8'),function(_0x4e4be6){if(_0x4e4be6)return eventEmitter[_0x8347('0x9')](_0x8347('0xa'),new AGIError('E_AGI_SERVER_ERROR',_0x4e4be6));});sub['on'](_0x8347('0xb'),function(_0xfe8b6c,_0xf93eb9){if(_0xfe8b6c!==_0x8347('0x8'))return;try{var _0x3f9e73=JSON[_0x8347('0xc')](_0xf93eb9);eventEmitter['emit'](_0x8347('0xd'),_0x3f9e73);}catch(_0x359524){eventEmitter[_0x8347('0x9')]('error',new AGIError(_0x8347('0xe'),_0x359524));}});module['exports']={'EventEmitter':eventEmitter};
\ No newline at end of file
+var _0x9545=['error','E_AGI_SERVER_ERROR','parse','projectUpdate','exports','lodash','events','EventEmitter','./error','redis','defaults','localhost','subscribe','agi','emit'];(function(_0x4c09e4,_0x16350c){var _0x595ef6=function(_0x1a355f){while(--_0x1a355f){_0x4c09e4['push'](_0x4c09e4['shift']());}};_0x595ef6(++_0x16350c);}(_0x9545,0x1b8));var _0x5954=function(_0x2a71d2,_0x35bcda){_0x2a71d2=_0x2a71d2-0x0;var _0x200112=_0x9545[_0x2a71d2];return _0x200112;};'use strict';var _=require(_0x5954('0x0'));var EventEmitter=require(_0x5954('0x1'))[_0x5954('0x2')];var Redis=require('ioredis');var AGIError=require(_0x5954('0x3'));var config=require('../../config/environment');config[_0x5954('0x4')]=_[_0x5954('0x5')](config[_0x5954('0x4')],{'host':_0x5954('0x6'),'port':0x18eb});var eventEmitter=new EventEmitter();var sub=new Redis(config[_0x5954('0x4')]);sub[_0x5954('0x7')](_0x5954('0x8'),function(_0x469d10){if(_0x469d10)return eventEmitter[_0x5954('0x9')](_0x5954('0xa'),new AGIError(_0x5954('0xb'),_0x469d10));});sub['on']('message',function(_0x2b21ac,_0x240cb3){if(_0x2b21ac!==_0x5954('0x8'))return;try{var _0x288731=JSON[_0x5954('0xc')](_0x240cb3);eventEmitter['emit'](_0x5954('0xd'),_0x288731);}catch(_0x1b4d01){eventEmitter[_0x5954('0x9')]('error',new AGIError(_0x5954('0xb'),_0x1b4d01));}});module[_0x5954('0xe')]={'EventEmitter':eventEmitter};
\ No newline at end of file
index 63ec959..fec8fce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd081=['agicommand','vswitch','target','traverseBFS','default\x20on\x20switch\x20not\x20found','includes','max\x20retry\x20reach','condition\x20not\x20found','exports','lodash','../../../config/logger','agi','menu','getdigits','getsecretdigits','vertices','numberOfEdges','prototype','addEdge','edges','push','size','relations','getVertex','info','no\x20vertex\x20found','stop\x20traverse','split'];(function(_0x515b6c,_0x3cb7e7){var _0x42ba30=function(_0x1f9aed){while(--_0x1f9aed){_0x515b6c['push'](_0x515b6c['shift']());}};_0x42ba30(++_0x3cb7e7);}(_0xd081,0x13d));var _0x1d08=function(_0x2ad33f,_0x1c4260){_0x2ad33f=_0x2ad33f-0x0;var _0x4b83e9=_0xd081[_0x2ad33f];return _0x4b83e9;};'use strict';var _=require(_0x1d08('0x0'));var logger=require(_0x1d08('0x1'))(_0x1d08('0x2'));var verticesWithRetry=[_0x1d08('0x3'),_0x1d08('0x4'),_0x1d08('0x5')];var Graph=function(){this[_0x1d08('0x6')]={};this['edges']={};this[_0x1d08('0x7')]=0x0;};Graph[_0x1d08('0x8')]['addVertex']=function(_0x5057cb){this[_0x1d08('0x6')][_0x5057cb['id']]=_0x5057cb;this['edges'][_0x5057cb['id']]=[];};Graph[_0x1d08('0x8')][_0x1d08('0x9')]=function(_0x3b9d20,_0x7cdf7e,_0x4258c4){this[_0x1d08('0xa')][_0x3b9d20][_0x1d08('0xb')]({'target':_0x7cdf7e,'condition':_0x4258c4});this[_0x1d08('0x7')]+=0x1;};Graph[_0x1d08('0x8')]['size']=function(){return _[_0x1d08('0xc')](this['vertices']);};Graph[_0x1d08('0x8')][_0x1d08('0xd')]=function(){return this[_0x1d08('0x7')];};Graph[_0x1d08('0x8')][_0x1d08('0xe')]=function(_0x4aac26){return this[_0x1d08('0x6')][_0x4aac26];};Graph[_0x1d08('0x8')]['traverseBFS']=function(_0x3aaed5,_0x4ae457){if(!this[_0x1d08('0x6')][_0x3aaed5]){return logger[_0x1d08('0xf')](_0x1d08('0x10'));}var _0x33f0c6=_0x4ae457(this[_0x1d08('0x6')][_0x3aaed5]);if(!_0x33f0c6){return logger['info'](_0x1d08('0x11'));}if(this[_0x1d08('0xa')][_0x3aaed5]['length']===0x0){return logger['info']('no\x20edge/s\x20available');}for(var _0x780ed4=0x0,_0x390a6e=[],_0xf10cdf=![];_0x780ed4<this[_0x1d08('0xa')][_0x3aaed5]['length'];_0x780ed4+=0x1){if(this[_0x1d08('0xa')][_0x3aaed5][_0x780ed4]['condition']){_0x390a6e=this[_0x1d08('0xa')][_0x3aaed5][_0x780ed4]['condition'][_0x1d08('0x12')](',');for(var _0x56b781=0x0;_0x56b781<_0x390a6e['length'];_0x56b781+=0x1){if(this['vertices'][_0x3aaed5][_0x1d08('0x13')]===_0x1d08('0x14')&&_0x390a6e[_0x56b781]==='-'){_0xf10cdf=this[_0x1d08('0xa')][_0x3aaed5][_0x780ed4][_0x1d08('0x15')];logger[_0x1d08('0xf')]('default',_0x390a6e[_0x56b781],this[_0x1d08('0xa')][_0x3aaed5][_0x780ed4][_0x1d08('0x15')]);}else if(this[_0x1d08('0x6')][_0x3aaed5][_0x1d08('0x13')]===_0x1d08('0x3')&&_0x390a6e[_0x56b781]==='i'){_0xf10cdf=this['edges'][_0x3aaed5][_0x780ed4]['target'];logger['info']('invalid',_0x390a6e[_0x56b781],this[_0x1d08('0xa')][_0x3aaed5][_0x780ed4][_0x1d08('0x15')]);}if(_0x390a6e[_0x56b781]===_0x33f0c6){return this[_0x1d08('0x16')](this[_0x1d08('0xa')][_0x3aaed5][_0x780ed4][_0x1d08('0x15')],_0x4ae457);}}}else{return this[_0x1d08('0x16')](this[_0x1d08('0xa')][_0x3aaed5][_0x780ed4][_0x1d08('0x15')],_0x4ae457);}}if(_0x390a6e['length']){if(this[_0x1d08('0x6')][_0x3aaed5][_0x1d08('0x13')]==='vswitch'){if(_0xf10cdf){return this['traverseBFS'](_0xf10cdf,_0x4ae457);}return logger[_0x1d08('0xf')](_0x1d08('0x17'));}else if(_[_0x1d08('0x18')](verticesWithRetry,this['vertices'][_0x3aaed5][_0x1d08('0x13')])){if(_0x33f0c6==='-'){return logger['info'](_0x1d08('0x19'));}if(_0xf10cdf&&_0x33f0c6!=='t'){return this[_0x1d08('0x16')](_0xf10cdf,_0x4ae457);}return this['traverseBFS'](_0x3aaed5,_0x4ae457);}return logger[_0x1d08('0xf')](_0x1d08('0x1a'));}};module[_0x1d08('0x1b')]=Graph;
\ No newline at end of file
+var _0x9fe6=['target','menu','invalid','condition\x20not\x20found','exports','../../../config/logger','getdigits','getsecretdigits','vertices','numberOfEdges','prototype','addVertex','edges','getVertex','traverseBFS','info','no\x20edge/s\x20available','length','split','agicommand','vswitch'];(function(_0x61683d,_0xe7e2d5){var _0xfed21e=function(_0x1f7b9d){while(--_0x1f7b9d){_0x61683d['push'](_0x61683d['shift']());}};_0xfed21e(++_0xe7e2d5);}(_0x9fe6,0xd7));var _0x69fe=function(_0x1272ca,_0x5271c0){_0x1272ca=_0x1272ca-0x0;var _0x3b2c98=_0x9fe6[_0x1272ca];return _0x3b2c98;};'use strict';var _=require('lodash');var logger=require(_0x69fe('0x0'))('agi');var verticesWithRetry=['menu',_0x69fe('0x1'),_0x69fe('0x2')];var Graph=function(){this[_0x69fe('0x3')]={};this['edges']={};this[_0x69fe('0x4')]=0x0;};Graph[_0x69fe('0x5')][_0x69fe('0x6')]=function(_0x78712b){this[_0x69fe('0x3')][_0x78712b['id']]=_0x78712b;this['edges'][_0x78712b['id']]=[];};Graph[_0x69fe('0x5')]['addEdge']=function(_0x1244e1,_0x2436c0,_0x1855eb){this[_0x69fe('0x7')][_0x1244e1]['push']({'target':_0x2436c0,'condition':_0x1855eb});this['numberOfEdges']+=0x1;};Graph[_0x69fe('0x5')]['size']=function(){return _['size'](this[_0x69fe('0x3')]);};Graph['prototype']['relations']=function(){return this['numberOfEdges'];};Graph['prototype'][_0x69fe('0x8')]=function(_0x533d7d){return this[_0x69fe('0x3')][_0x533d7d];};Graph[_0x69fe('0x5')][_0x69fe('0x9')]=function(_0x458910,_0x4233a1){if(!this[_0x69fe('0x3')][_0x458910]){return logger['info']('no\x20vertex\x20found');}var _0x52119a=_0x4233a1(this['vertices'][_0x458910]);if(!_0x52119a){return logger[_0x69fe('0xa')]('stop\x20traverse');}if(this['edges'][_0x458910]['length']===0x0){return logger[_0x69fe('0xa')](_0x69fe('0xb'));}for(var _0x1cfe76=0x0,_0x546c2e=[],_0x387a4d=![];_0x1cfe76<this[_0x69fe('0x7')][_0x458910][_0x69fe('0xc')];_0x1cfe76+=0x1){if(this['edges'][_0x458910][_0x1cfe76]['condition']){_0x546c2e=this['edges'][_0x458910][_0x1cfe76]['condition'][_0x69fe('0xd')](',');for(var _0x463314=0x0;_0x463314<_0x546c2e[_0x69fe('0xc')];_0x463314+=0x1){if(this['vertices'][_0x458910][_0x69fe('0xe')]===_0x69fe('0xf')&&_0x546c2e[_0x463314]==='-'){_0x387a4d=this[_0x69fe('0x7')][_0x458910][_0x1cfe76][_0x69fe('0x10')];logger['info']('default',_0x546c2e[_0x463314],this[_0x69fe('0x7')][_0x458910][_0x1cfe76][_0x69fe('0x10')]);}else if(this['vertices'][_0x458910][_0x69fe('0xe')]===_0x69fe('0x11')&&_0x546c2e[_0x463314]==='i'){_0x387a4d=this[_0x69fe('0x7')][_0x458910][_0x1cfe76][_0x69fe('0x10')];logger[_0x69fe('0xa')](_0x69fe('0x12'),_0x546c2e[_0x463314],this['edges'][_0x458910][_0x1cfe76][_0x69fe('0x10')]);}if(_0x546c2e[_0x463314]===_0x52119a){return this[_0x69fe('0x9')](this[_0x69fe('0x7')][_0x458910][_0x1cfe76]['target'],_0x4233a1);}}}else{return this['traverseBFS'](this[_0x69fe('0x7')][_0x458910][_0x1cfe76][_0x69fe('0x10')],_0x4233a1);}}if(_0x546c2e['length']){if(this[_0x69fe('0x3')][_0x458910][_0x69fe('0xe')]===_0x69fe('0xf')){if(_0x387a4d){return this['traverseBFS'](_0x387a4d,_0x4233a1);}return logger[_0x69fe('0xa')]('default\x20on\x20switch\x20not\x20found');}else if(_['includes'](verticesWithRetry,this[_0x69fe('0x3')][_0x458910]['agicommand'])){if(_0x52119a==='-'){return logger[_0x69fe('0xa')]('max\x20retry\x20reach');}if(_0x387a4d&&_0x52119a!=='t'){return this[_0x69fe('0x9')](_0x387a4d,_0x4233a1);}return this[_0x69fe('0x9')](_0x458910,_0x4233a1);}return logger[_0x69fe('0xa')](_0x69fe('0x13'));}};module[_0x69fe('0x14')]=Graph;
\ No newline at end of file
index 260cc85..eee8ae9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e19=['../../config/environment','agi','../../config/license/util','./rpc','./project','EventEmitter','defaults','127.0.0.1','projectUpdate','nextTick','stack','findIndex','splice','error','log','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','format','name','message','[ERROR]\x20%s','[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','calleridname','callerid','uniqueid','info','[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','dnid','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','evtHangup','createSquareReport','then','catch','hasOwnProperty','indexOf','agi_','substring','variables','stringify','close','timeout','hangup','handleNotFound','production','initialize','getLicense','voice','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20VOICE\x20IS\x20DISABLED','./server','port','listening','connection','lodash'];(function(_0x466e89,_0x237ae3){var _0x580986=function(_0x1ca46d){while(--_0x1ca46d){_0x466e89['push'](_0x466e89['shift']());}};_0x580986(++_0x237ae3);}(_0x1e19,0xa4));var _0x91e1=function(_0x169591,_0x94ab12){_0x169591=_0x169591-0x0;var _0x2cb673=_0x1e19[_0x169591];return _0x2cb673;};'use strict';var _=require(_0x91e1('0x0'));var syncho=require('syncho');var util=require('util');var config=require(_0x91e1('0x1'));var logger=require('../../config/logger')(_0x91e1('0x2'));var utilLicense=require(_0x91e1('0x3'));var rpc=require(_0x91e1('0x4'));var Project=require(_0x91e1('0x5'));var AGIEmitter=require('./events')[_0x91e1('0x6')];var projects=[];config[_0x91e1('0x2')]=_[_0x91e1('0x7')](config[_0x91e1('0x2')],{'ip':_0x91e1('0x8'),'port':0x11dd});AGIEmitter['on'](_0x91e1('0x9'),projectUpdateHandler);function connectionHandler(_0x4452a7){process[_0x91e1('0xa')](function(){syncho(function(){try{setChannelVariables(_0x4452a7);agiHandler(_0x4452a7);}catch(_0x19e56b){logger['error'](_0x19e56b[_0x91e1('0xb')]);}});});}function projectUpdateHandler(_0xfb6ab5){try{var _0x5f7f05=_[_0x91e1('0xc')](projects,['id',_0xfb6ab5['id']]);if(_0x5f7f05>-0x1){if(_0xfb6ab5['deleted']===!![]){projects[_0x91e1('0xd')](_0x5f7f05,0x1);}else{projects[_0x5f7f05]=_0xfb6ab5;}}else{projects['push'](_0xfb6ab5);}}catch(_0x324e95){logger[_0x91e1('0xe')](_0x324e95[_0x91e1('0xb')]);}}function listeningHandler(){console[_0x91e1('0xf')](_0x91e1('0x10'),config[_0x91e1('0x2')]['port']);logger['info'](util[_0x91e1('0x11')]('[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d',config[_0x91e1('0x2')]['ip'],config[_0x91e1('0x2')]['port']));}function errorHandler(_0x79029a){if(_0x79029a&&_0x79029a[_0x91e1('0x12')]&&_0x79029a[_0x91e1('0x13')]){logger[_0x91e1('0xe')](util[_0x91e1('0x11')]('[%s]\x20%s',_0x79029a[_0x91e1('0x12')],_0x79029a[_0x91e1('0x13')]));}else{logger['error'](util[_0x91e1('0x11')](_0x91e1('0x14'),_0x79029a[_0x91e1('0xb')]));}}function closeHandler(){logger['info'](util[_0x91e1('0x11')](_0x91e1('0x15'),this[_0x91e1('0x16')],this[_0x91e1('0x17')],this[_0x91e1('0x18')],this['dnid'],this[_0x91e1('0x19')]));try{createSquareReport(this);}catch(_0x572239){logger[_0x91e1('0xe')](_0x572239['stack']);}}function timeoutHandler(){logger[_0x91e1('0x1a')](util['format'](_0x91e1('0x1b'),this[_0x91e1('0x16')],this[_0x91e1('0x17')],this['callerid'],this[_0x91e1('0x1c')],this[_0x91e1('0x19')]));}function hangupHandler(){logger[_0x91e1('0x1a')](util[_0x91e1('0x11')](_0x91e1('0x1d'),this['arg_1'],this['calleridname'],this[_0x91e1('0x18')],this[_0x91e1('0x1c')],this[_0x91e1('0x19')]));this[_0x91e1('0x1e')]=!![];}function createSquareReport(_0x4cb0b1,_0x24a85a){rpc[_0x91e1('0x1f')](_0x4cb0b1)[_0x91e1('0x20')](function(_0x54eee3){if(_0x24a85a){_0x24a85a(null,_0x54eee3);}})[_0x91e1('0x21')](function(_0x86b008){if(_0x24a85a){_0x24a85a(null,_0x86b008);}});}function setChannelVariables(_0x53ded9){for(var _0x425ba4 in _0x53ded9){if(_0x53ded9[_0x91e1('0x22')](_0x425ba4)){if(_0x425ba4[_0x91e1('0x23')](_0x91e1('0x24'))===0x0){_0x53ded9[_0x425ba4[_0x91e1('0x25')](0x4)]=_0x53ded9[_0x425ba4];delete _0x53ded9[_0x425ba4];}}}}function agiHandler(_0x3204a8){logger['debug'](_0x91e1('0x26'),JSON[_0x91e1('0x27')](_0x3204a8,null,0x2));logger['info'](util['format']('[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x3204a8['arg_1'],_0x3204a8[_0x91e1('0x17')],_0x3204a8[_0x91e1('0x18')],_0x3204a8[_0x91e1('0x1c')],_0x3204a8['uniqueid']));_0x3204a8['on'](_0x91e1('0xe'),errorHandler);_0x3204a8['on'](_0x91e1('0x28'),closeHandler);_0x3204a8['on'](_0x91e1('0x29'),timeoutHandler);_0x3204a8[_0x91e1('0x1e')]=![];_0x3204a8['on'](_0x91e1('0x2a'),hangupHandler);var _0xe51a1b=_['find'](projects,[_0x91e1('0x12'),_0x3204a8[_0x91e1('0x16')]]);if(!_0xe51a1b)return Project[_0x91e1('0x2b')](_0x3204a8);if(!_0xe51a1b[_0x91e1('0x2c')])return Project['handleUnpublished'](_0x3204a8);return Project[_0x91e1('0x2d')](_0xe51a1b,_0x3204a8);}function main(){var _0x850ecc;return utilLicense[_0x91e1('0x2e')]()[_0x91e1('0x20')](function(_0x3d195a){if(!_0x3d195a)return;if(_0x3d195a[_0x91e1('0x2f')]){if(_0x3d195a[_0x91e1('0x30')]&&_0x3d195a[_0x91e1('0x30')]>0x0){logger[_0x91e1('0x1a')](util['format'](_0x91e1('0x31'),_0x3d195a[_0x91e1('0x30')]));_0x850ecc=_0x3d195a[_0x91e1('0x30')];}else{logger['info']('[LICENSE]\x20CHANNELS:\x20UNLIMITED');}}else{logger[_0x91e1('0x1a')](_0x91e1('0x32'));_0x850ecc=-0x1;}})['then'](function(){return Project['getAll']();})[_0x91e1('0x20')](function(_0x33d167){projects=_0x33d167;return;})[_0x91e1('0x21')](function(_0x43559f){logger[_0x91e1('0xe')]('[LICENSE]',_0x43559f[_0x91e1('0xb')]);})['finally'](function(){var _0x28dda0=require(_0x91e1('0x33'))(config['agi'][_0x91e1('0x34')],config[_0x91e1('0x2')]['ip'],_0x850ecc);_0x28dda0['on'](_0x91e1('0xe'),errorHandler);_0x28dda0['on'](_0x91e1('0x35'),listeningHandler);_0x28dda0['on'](_0x91e1('0x36'),connectionHandler);_0x28dda0['on']('close',closeHandler);});}main();
\ No newline at end of file
+var _0xe360=['format','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','name','message','[%s]\x20%s','info','[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','callerid','dnid','uniqueid','calleridname','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','evtHangup','createSquareReport','then','hasOwnProperty','indexOf','debug','variables','close','timeout','hangup','find','production','handleUnpublished','initialize','getLicense','voice','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20CHANNELS:\x20UNLIMITED','getAll','[LICENSE]','finally','./server','listening','lodash','syncho','../../config/environment','../../config/logger','agi','../../config/license/util','./project','./events','EventEmitter','defaults','127.0.0.1','projectUpdate','nextTick','error','stack','deleted','push','log','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','port'];(function(_0x2fc6cf,_0x2bb133){var _0xf2ade3=function(_0x522b04){while(--_0x522b04){_0x2fc6cf['push'](_0x2fc6cf['shift']());}};_0xf2ade3(++_0x2bb133);}(_0xe360,0xd0));var _0x0e36=function(_0x278e3c,_0x1c9cfd){_0x278e3c=_0x278e3c-0x0;var _0x3e2d9b=_0xe360[_0x278e3c];return _0x3e2d9b;};'use strict';var _=require(_0x0e36('0x0'));var syncho=require(_0x0e36('0x1'));var util=require('util');var config=require(_0x0e36('0x2'));var logger=require(_0x0e36('0x3'))(_0x0e36('0x4'));var utilLicense=require(_0x0e36('0x5'));var rpc=require('./rpc');var Project=require(_0x0e36('0x6'));var AGIEmitter=require(_0x0e36('0x7'))[_0x0e36('0x8')];var projects=[];config[_0x0e36('0x4')]=_[_0x0e36('0x9')](config[_0x0e36('0x4')],{'ip':_0x0e36('0xa'),'port':0x11dd});AGIEmitter['on'](_0x0e36('0xb'),projectUpdateHandler);function connectionHandler(_0x27de18){process[_0x0e36('0xc')](function(){syncho(function(){try{setChannelVariables(_0x27de18);agiHandler(_0x27de18);}catch(_0x36062f){logger[_0x0e36('0xd')](_0x36062f[_0x0e36('0xe')]);}});});}function projectUpdateHandler(_0x10b196){try{var _0x1db96f=_['findIndex'](projects,['id',_0x10b196['id']]);if(_0x1db96f>-0x1){if(_0x10b196[_0x0e36('0xf')]===!![]){projects['splice'](_0x1db96f,0x1);}else{projects[_0x1db96f]=_0x10b196;}}else{projects[_0x0e36('0x10')](_0x10b196);}}catch(_0x301724){logger[_0x0e36('0xd')](_0x301724[_0x0e36('0xe')]);}}function listeningHandler(){console[_0x0e36('0x11')](_0x0e36('0x12'),config[_0x0e36('0x4')][_0x0e36('0x13')]);logger['info'](util[_0x0e36('0x14')](_0x0e36('0x15'),config[_0x0e36('0x4')]['ip'],config[_0x0e36('0x4')][_0x0e36('0x13')]));}function errorHandler(_0x44eec0){if(_0x44eec0&&_0x44eec0[_0x0e36('0x16')]&&_0x44eec0[_0x0e36('0x17')]){logger[_0x0e36('0xd')](util[_0x0e36('0x14')](_0x0e36('0x18'),_0x44eec0['name'],_0x44eec0[_0x0e36('0x17')]));}else{logger['error'](util['format']('[ERROR]\x20%s',_0x44eec0[_0x0e36('0xe')]));}}function closeHandler(){logger[_0x0e36('0x19')](util[_0x0e36('0x14')](_0x0e36('0x1a'),this[_0x0e36('0x1b')],this['calleridname'],this[_0x0e36('0x1c')],this[_0x0e36('0x1d')],this[_0x0e36('0x1e')]));try{createSquareReport(this);}catch(_0x49071f){logger['error'](_0x49071f[_0x0e36('0xe')]);}}function timeoutHandler(){logger[_0x0e36('0x19')](util[_0x0e36('0x14')]('[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this[_0x0e36('0x1b')],this[_0x0e36('0x1f')],this[_0x0e36('0x1c')],this[_0x0e36('0x1d')],this[_0x0e36('0x1e')]));}function hangupHandler(){logger[_0x0e36('0x19')](util['format'](_0x0e36('0x20'),this[_0x0e36('0x1b')],this['calleridname'],this['callerid'],this[_0x0e36('0x1d')],this[_0x0e36('0x1e')]));this[_0x0e36('0x21')]=!![];}function createSquareReport(_0x1cdae7,_0x45b641){rpc[_0x0e36('0x22')](_0x1cdae7)[_0x0e36('0x23')](function(_0x287b2a){if(_0x45b641){_0x45b641(null,_0x287b2a);}})['catch'](function(_0x38151c){if(_0x45b641){_0x45b641(null,_0x38151c);}});}function setChannelVariables(_0x1bf168){for(var _0xf6ef1f in _0x1bf168){if(_0x1bf168[_0x0e36('0x24')](_0xf6ef1f)){if(_0xf6ef1f[_0x0e36('0x25')]('agi_')===0x0){_0x1bf168[_0xf6ef1f['substring'](0x4)]=_0x1bf168[_0xf6ef1f];delete _0x1bf168[_0xf6ef1f];}}}}function agiHandler(_0x1bedff){logger[_0x0e36('0x26')](_0x0e36('0x27'),JSON['stringify'](_0x1bedff,null,0x2));logger[_0x0e36('0x19')](util['format']('[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x1bedff['arg_1'],_0x1bedff[_0x0e36('0x1f')],_0x1bedff[_0x0e36('0x1c')],_0x1bedff[_0x0e36('0x1d')],_0x1bedff[_0x0e36('0x1e')]));_0x1bedff['on'](_0x0e36('0xd'),errorHandler);_0x1bedff['on'](_0x0e36('0x28'),closeHandler);_0x1bedff['on'](_0x0e36('0x29'),timeoutHandler);_0x1bedff[_0x0e36('0x21')]=![];_0x1bedff['on'](_0x0e36('0x2a'),hangupHandler);var _0x27338c=_[_0x0e36('0x2b')](projects,[_0x0e36('0x16'),_0x1bedff[_0x0e36('0x1b')]]);if(!_0x27338c)return Project['handleNotFound'](_0x1bedff);if(!_0x27338c[_0x0e36('0x2c')])return Project[_0x0e36('0x2d')](_0x1bedff);return Project[_0x0e36('0x2e')](_0x27338c,_0x1bedff);}function main(){var _0x13173d;return utilLicense[_0x0e36('0x2f')]()[_0x0e36('0x23')](function(_0x338866){if(!_0x338866)return;if(_0x338866[_0x0e36('0x30')]){if(_0x338866[_0x0e36('0x31')]&&_0x338866[_0x0e36('0x31')]>0x0){logger['info'](util[_0x0e36('0x14')](_0x0e36('0x32'),_0x338866['callysquare']));_0x13173d=_0x338866[_0x0e36('0x31')];}else{logger[_0x0e36('0x19')](_0x0e36('0x33'));}}else{logger['info']('[LICENSE]\x20VOICE\x20IS\x20DISABLED');_0x13173d=-0x1;}})[_0x0e36('0x23')](function(){return Project[_0x0e36('0x34')]();})[_0x0e36('0x23')](function(_0x6501e6){projects=_0x6501e6;return;})['catch'](function(_0xa9c5ef){logger['error'](_0x0e36('0x35'),_0xa9c5ef[_0x0e36('0xe')]);})[_0x0e36('0x36')](function(){var _0x2b41df=require(_0x0e36('0x37'))(config[_0x0e36('0x4')][_0x0e36('0x13')],config[_0x0e36('0x4')]['ip'],_0x13173d);_0x2b41df['on'](_0x0e36('0xd'),errorHandler);_0x2b41df['on'](_0x0e36('0x38'),listeningHandler);_0x2b41df['on']('connection',connectionHandler);_0x2b41df['on']('close',closeHandler);});}main();
\ No newline at end of file
index 19d03ce..4fe6844 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e0f=['catch','sendMailMessage','SendMail','bluebird','jayson/promise','request','error','message','result'];(function(_0x199575,_0x2a864c){var _0x450415=function(_0x2c40c6){while(--_0x2c40c6){_0x199575['push'](_0x199575['shift']());}};_0x450415(++_0x2a864c);}(_0x1e0f,0xf6));var _0xf1e0=function(_0x512b44,_0x5dab05){_0x512b44=_0x512b44-0x0;var _0x356161=_0x1e0f[_0x512b44];return _0x356161;};'use strict';var BPromise=require(_0xf1e0('0x0'));var jayson=require(_0xf1e0('0x1'));var client=jayson['client']['http']({'port':0x232b});function request(_0x482ae7,_0x105d7d){return new BPromise(function(_0x2ff887,_0x26c7ea){return client[_0xf1e0('0x2')](_0x482ae7,_0x105d7d)['then'](function(_0xf5079b){if(_0xf5079b[_0xf1e0('0x3')]){return _0x26c7ea(_0xf5079b[_0xf1e0('0x3')][_0xf1e0('0x4')]);}else{return _0x2ff887(_0xf5079b[_0xf1e0('0x5')]);}})[_0xf1e0('0x6')](function(_0x2a2987){return _0x26c7ea(_0x2a2987);});});}exports[_0xf1e0('0x7')]=function(_0xe02677,_0x3ba664){return request(_0xf1e0('0x8'),{'account':_0xe02677,'message':_0x3ba664});};
\ No newline at end of file
+var _0x7993=['message','sendMailMessage','SendMail','bluebird','jayson/promise','http','request','then','error'];(function(_0x239dba,_0x309e95){var _0x1ceb11=function(_0x14efe6){while(--_0x14efe6){_0x239dba['push'](_0x239dba['shift']());}};_0x1ceb11(++_0x309e95);}(_0x7993,0x108));var _0x3799=function(_0x51d7bb,_0x5b6a74){_0x51d7bb=_0x51d7bb-0x0;var _0x220b75=_0x7993[_0x51d7bb];return _0x220b75;};'use strict';var BPromise=require(_0x3799('0x0'));var jayson=require(_0x3799('0x1'));var client=jayson['client'][_0x3799('0x2')]({'port':0x232b});function request(_0x5ef999,_0xfc8314){return new BPromise(function(_0x487618,_0x5e658a){return client[_0x3799('0x3')](_0x5ef999,_0xfc8314)[_0x3799('0x4')](function(_0x2a1cf2){if(_0x2a1cf2['error']){return _0x5e658a(_0x2a1cf2[_0x3799('0x5')][_0x3799('0x6')]);}else{return _0x487618(_0x2a1cf2['result']);}})['catch'](function(_0x30ca34){return _0x5e658a(_0x30ca34);});});}exports[_0x3799('0x7')]=function(_0x11b452,_0x17dbbf){return request(_0x3799('0x8'),{'account':_0x11b452,'message':_0x17dbbf});};
\ No newline at end of file
index ba581ab..34ad909 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa6a8=['clear','[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','extension','Project\x20%s\x20not\x20found','continueAt','close','Project\x20%s\x20not\x20published','exports','lodash','moment','util','../../config/logger','agi','./rpc','./graph','./vertices','getSquareProjects','error','Unable\x20to\x20download\x20CallySquare\x20projects','stack','agicommand','hasOwnProperty','retry','maxRetry','isArray','length','source','target','addEdge','value','toJson','mxGraphModel','production','start','debug','root','stringify','format','YYYY-MM-DD\x20HH:mm:ss','omit','mxCell','arg_1','calleridname','callerid','uniqueid','traverseBFS','vertex','gotoc','info','gotoc\x20block\x20stop\x20traverse\x20BFS','context','priority','response','code','evtHangup','isUndefined','result','toString','finally','[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','dnid'];(function(_0xb65e77,_0x238c3d){var _0x38134b=function(_0x39da21){while(--_0x39da21){_0xb65e77['push'](_0xb65e77['shift']());}};_0x38134b(++_0x238c3d);}(_0xa6a8,0x101));var _0x8a6a=function(_0xe77e80,_0x40bb60){_0xe77e80=_0xe77e80-0x0;var _0x56cf8b=_0xa6a8[_0xe77e80];return _0x56cf8b;};'use strict';var _=require(_0x8a6a('0x0'));var moment=require(_0x8a6a('0x1'));var parser=require('xml2json');var util=require(_0x8a6a('0x2'));var logger=require(_0x8a6a('0x3'))(_0x8a6a('0x4'));var rpc=require(_0x8a6a('0x5'));var mailRpc=require('./mailRpc');var Graph=require(_0x8a6a('0x6'));var Vertices=require(_0x8a6a('0x7'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;function getAll(){return rpc[_0x8a6a('0x8')]()['catch'](function(_0x32c642){logger[_0x8a6a('0x9')](_0x8a6a('0xa'),_0x32c642[_0x8a6a('0xb')]);return[];});}function addVertex(_0xe68605,_0x2a9cc8,_0x47e4e2){_0x2a9cc8[_0x8a6a('0xc')]=_0x47e4e2;if(_0x2a9cc8[_0x8a6a('0xd')](_0x8a6a('0xe'))){_0x2a9cc8[_0x8a6a('0xf')]=parseInt(_0x2a9cc8[_0x8a6a('0xe')],0xa);}_0xe68605['addVertex'](_['omit'](_0x2a9cc8,'mxCell'));}function initGraph(_0x24fc54,_0x5f31fc){var _0x17f0d4=new Graph();for(var _0x3e3b3a in _0x24fc54){if(_0x24fc54[_0x8a6a('0xd')](_0x3e3b3a)){if(_[_0x8a6a('0x10')](_0x24fc54[_0x3e3b3a])){for(var _0x3d5275=0x0;_0x3d5275<_0x24fc54[_0x3e3b3a][_0x8a6a('0x11')];_0x3d5275+=0x1){addVertex(_0x17f0d4,_0x24fc54[_0x3e3b3a][_0x3d5275],_0x3e3b3a);}}else{addVertex(_0x17f0d4,_0x24fc54[_0x3e3b3a],_0x3e3b3a);}}}for(var _0x59d1db=0x0;_0x59d1db<_0x5f31fc[_0x8a6a('0x11')];_0x59d1db+=0x1){if(_0x5f31fc[_0x59d1db][_0x8a6a('0x12')]&&_0x5f31fc[_0x59d1db][_0x8a6a('0x13')]){_0x17f0d4[_0x8a6a('0x14')](_0x5f31fc[_0x59d1db]['source'],_0x5f31fc[_0x59d1db][_0x8a6a('0x13')],_0x5f31fc[_0x59d1db][_0x8a6a('0x15')]);}}return _0x17f0d4;}function getRoot(_0x225021){return parser[_0x8a6a('0x16')](_0x225021,{'object':!![]})[_0x8a6a('0x17')]['root'];}function inspect(_0x30e4c0){return util['inspect'](_0x30e4c0,{'showHidden':![],'depth':null});}function initialize(_0x2584c1,_0x289263){var _0x13e17c=getRoot(_0x2584c1[_0x8a6a('0x18')]);if(!_0x13e17c||!_0x13e17c[_0x8a6a('0x19')])return;var _0x3d2e98,_0x52ea32,_0x83069c;logger[_0x8a6a('0x1a')](_0x8a6a('0x1b'),JSON[_0x8a6a('0x1c')](_0x13e17c,null,0x2));_0x289263['joinAt']=moment()[_0x8a6a('0x1d')](_0x8a6a('0x1e'));_0x3d2e98=initGraph(_[_0x8a6a('0x1f')](_0x13e17c,_0x8a6a('0x20')),_0x13e17c[_0x8a6a('0x20')]);_0x52ea32=new Vertices(_0x289263,rpc,mailRpc);logger['info'](util['format']('[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x289263[_0x8a6a('0x21')],_0x289263[_0x8a6a('0x22')],_0x289263[_0x8a6a('0x23')],_0x289263['dnid'],_0x289263[_0x8a6a('0x24')]));_0x3d2e98[_0x8a6a('0x25')](_0x13e17c[_0x8a6a('0x19')]['id'],function(_0x1e1b9b){try{_0x1e1b9b=_0x52ea32['clear'](_0x1e1b9b);logger[_0x8a6a('0x1a')](_0x8a6a('0x26'),JSON[_0x8a6a('0x1c')](_0x1e1b9b,null,0x2));if(_0x1e1b9b[_0x8a6a('0xc')]===_0x8a6a('0x27')){logger[_0x8a6a('0x28')](_0x8a6a('0x29'));_0x289263['context']=_0x1e1b9b[_0x8a6a('0x2a')]||_0x289263[_0x8a6a('0x2a')];_0x289263['extension']=_0x1e1b9b['extension'];_0x289263[_0x8a6a('0x2b')]=_0x1e1b9b[_0x8a6a('0x2b')]?_0x1e1b9b[_0x8a6a('0x2b')]-0x1:0x1;return null;}else if(_0x1e1b9b&&_0x52ea32[_0x1e1b9b[_0x8a6a('0xc')]]){_0x83069c=_0x52ea32[_0x1e1b9b[_0x8a6a('0xc')]](_0x1e1b9b);logger[_0x8a6a('0x28')](_0x8a6a('0x2c'),JSON[_0x8a6a('0x1c')](_0x83069c,null,0x2));if(_0x83069c&&_0x83069c[_0x8a6a('0x2d')]===AGI_CODE_SUCCESS&&_0x83069c['result']!==AGI_RESULT_ERROR&&!_0x289263[_0x8a6a('0x2e')]){logger['debug'](_0x8a6a('0x2c'),inspect(_0x83069c));return _[_0x8a6a('0x2f')](_0x83069c['result'])?null:_0x83069c[_0x8a6a('0x30')][_0x8a6a('0x31')]();}else{logger[_0x8a6a('0x9')](_0x8a6a('0x2c'),inspect(_0x83069c));return null;}}else{logger['error']('agicommand\x20not\x20found');return null;}}catch(_0x47243f){logger['error'](_0x47243f['stack']);return null;}});if(_0x13e17c[_0x8a6a('0x32')]){logger['info'](util[_0x8a6a('0x1d')](_0x8a6a('0x33'),_0x289263[_0x8a6a('0x21')],_0x289263['calleridname'],_0x289263[_0x8a6a('0x23')],_0x289263[_0x8a6a('0x34')],_0x289263['uniqueid']));_0x3d2e98['traverseBFS'](_0x13e17c[_0x8a6a('0x32')]['id'],function(_0x5b2502){try{_0x5b2502=_0x52ea32[_0x8a6a('0x35')](_0x5b2502);logger['debug'](_0x8a6a('0x26'),JSON[_0x8a6a('0x1c')](_0x5b2502,null,0x2));if(_0x5b2502&&_0x52ea32[_0x5b2502[_0x8a6a('0xc')]]){_0x83069c=_0x52ea32[_0x5b2502[_0x8a6a('0xc')]](_0x5b2502);if(_0x83069c){logger[_0x8a6a('0x1a')](_0x8a6a('0x2c'),inspect(_0x83069c));return _['isUndefined'](_0x83069c['result'])?null:_0x83069c['result']['toString']();}else{logger[_0x8a6a('0x9')]('response',inspect(_0x83069c));return null;}}else{logger[_0x8a6a('0x9')]('agicommand\x20not\x20found');return null;}}catch(_0x4b549c){logger['error'](_0x4b549c[_0x8a6a('0xb')]);return null;}});}logger['info'](util['format'](_0x8a6a('0x36'),_0x289263[_0x8a6a('0x21')],_0x289263[_0x8a6a('0x22')],_0x289263[_0x8a6a('0x23')],_0x289263[_0x8a6a('0x34')],_0x289263[_0x8a6a('0x24')]));logger[_0x8a6a('0x28')](util[_0x8a6a('0x1d')](_0x8a6a('0x37'),_0x289263[_0x8a6a('0x2a')],_0x289263[_0x8a6a('0x38')],parseInt(_0x289263[_0x8a6a('0x2b')],0xa)+0x1));_0x289263['continueAt'](_0x289263[_0x8a6a('0x2a')],_0x289263[_0x8a6a('0x38')],parseInt(_0x289263[_0x8a6a('0x2b')],0xa)+0x1);_0x289263['close']();}function handleNotFound(_0x46e1a5){logger['error'](util[_0x8a6a('0x1d')](_0x8a6a('0x39'),_0x46e1a5[_0x8a6a('0x21')]));_0x46e1a5[_0x8a6a('0x3a')](_0x46e1a5[_0x8a6a('0x2a')],_0x46e1a5[_0x8a6a('0x38')],parseInt(_0x46e1a5['priority'],0xa)+0x1);_0x46e1a5[_0x8a6a('0x3b')]();}function handleUnpublished(_0x4e8c09){logger[_0x8a6a('0x9')](util['format'](_0x8a6a('0x3c'),_0x4e8c09['arg_1']));_0x4e8c09[_0x8a6a('0x3a')](_0x4e8c09[_0x8a6a('0x2a')],_0x4e8c09[_0x8a6a('0x38')],parseInt(_0x4e8c09[_0x8a6a('0x2b')],0xa)+0x1);_0x4e8c09[_0x8a6a('0x3b')]();}module[_0x8a6a('0x3d')]={'getAll':getAll,'handleNotFound':handleNotFound,'handleUnpublished':handleUnpublished,'initialize':initialize};
\ No newline at end of file
+var _0x2a94=['inspect','production','start','debug','stringify','joinAt','format','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','gotoc','context','extension','priority','response','code','evtHangup','isUndefined','result','toString','error','agicommand\x20not\x20found','stack','[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','finally','[END]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s','continueAt','close','Project\x20%s\x20not\x20found','exports','lodash','moment','util','agi','./rpc','./mailRpc','./graph','Unable\x20to\x20download\x20CallySquare\x20projects','agicommand','hasOwnProperty','retry','maxRetry','addVertex','omit','mxCell','isArray','length','source','target','addEdge','value','toJson','mxGraphModel','root'];(function(_0x1406ae,_0x292395){var _0x23a076=function(_0x5e147a){while(--_0x5e147a){_0x1406ae['push'](_0x1406ae['shift']());}};_0x23a076(++_0x292395);}(_0x2a94,0x64));var _0x42a9=function(_0x1ad802,_0x2d6005){_0x1ad802=_0x1ad802-0x0;var _0x1566e5=_0x2a94[_0x1ad802];return _0x1566e5;};'use strict';var _=require(_0x42a9('0x0'));var moment=require(_0x42a9('0x1'));var parser=require('xml2json');var util=require(_0x42a9('0x2'));var logger=require('../../config/logger')(_0x42a9('0x3'));var rpc=require(_0x42a9('0x4'));var mailRpc=require(_0x42a9('0x5'));var Graph=require(_0x42a9('0x6'));var Vertices=require('./vertices');var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;function getAll(){return rpc['getSquareProjects']()['catch'](function(_0x4c7547){logger['error'](_0x42a9('0x7'),_0x4c7547['stack']);return[];});}function addVertex(_0x36d41f,_0x52b32c,_0x257ffd){_0x52b32c[_0x42a9('0x8')]=_0x257ffd;if(_0x52b32c[_0x42a9('0x9')](_0x42a9('0xa'))){_0x52b32c[_0x42a9('0xb')]=parseInt(_0x52b32c[_0x42a9('0xa')],0xa);}_0x36d41f[_0x42a9('0xc')](_[_0x42a9('0xd')](_0x52b32c,_0x42a9('0xe')));}function initGraph(_0x378b42,_0x5a2e1e){var _0x480470=new Graph();for(var _0x462fb7 in _0x378b42){if(_0x378b42[_0x42a9('0x9')](_0x462fb7)){if(_[_0x42a9('0xf')](_0x378b42[_0x462fb7])){for(var _0xc64550=0x0;_0xc64550<_0x378b42[_0x462fb7]['length'];_0xc64550+=0x1){addVertex(_0x480470,_0x378b42[_0x462fb7][_0xc64550],_0x462fb7);}}else{addVertex(_0x480470,_0x378b42[_0x462fb7],_0x462fb7);}}}for(var _0x32df5d=0x0;_0x32df5d<_0x5a2e1e[_0x42a9('0x10')];_0x32df5d+=0x1){if(_0x5a2e1e[_0x32df5d][_0x42a9('0x11')]&&_0x5a2e1e[_0x32df5d][_0x42a9('0x12')]){_0x480470[_0x42a9('0x13')](_0x5a2e1e[_0x32df5d][_0x42a9('0x11')],_0x5a2e1e[_0x32df5d][_0x42a9('0x12')],_0x5a2e1e[_0x32df5d][_0x42a9('0x14')]);}}return _0x480470;}function getRoot(_0x122aaf){return parser[_0x42a9('0x15')](_0x122aaf,{'object':!![]})[_0x42a9('0x16')][_0x42a9('0x17')];}function inspect(_0x5cd45f){return util[_0x42a9('0x18')](_0x5cd45f,{'showHidden':![],'depth':null});}function initialize(_0x7b8248,_0x279704){var _0x305736=getRoot(_0x7b8248[_0x42a9('0x19')]);if(!_0x305736||!_0x305736[_0x42a9('0x1a')])return;var _0x4daddf,_0xf7a967,_0x4cf015;logger[_0x42a9('0x1b')](_0x42a9('0x17'),JSON[_0x42a9('0x1c')](_0x305736,null,0x2));_0x279704[_0x42a9('0x1d')]=moment()[_0x42a9('0x1e')]('YYYY-MM-DD\x20HH:mm:ss');_0x4daddf=initGraph(_['omit'](_0x305736,_0x42a9('0xe')),_0x305736[_0x42a9('0xe')]);_0xf7a967=new Vertices(_0x279704,rpc,mailRpc);logger[_0x42a9('0x1f')](util['format'](_0x42a9('0x20'),_0x279704[_0x42a9('0x21')],_0x279704[_0x42a9('0x22')],_0x279704[_0x42a9('0x23')],_0x279704[_0x42a9('0x24')],_0x279704[_0x42a9('0x25')]));_0x4daddf[_0x42a9('0x26')](_0x305736[_0x42a9('0x1a')]['id'],function(_0x43d698){try{_0x43d698=_0xf7a967[_0x42a9('0x27')](_0x43d698);logger['debug'](_0x42a9('0x28'),JSON['stringify'](_0x43d698,null,0x2));if(_0x43d698[_0x42a9('0x8')]===_0x42a9('0x29')){logger['info']('gotoc\x20block\x20stop\x20traverse\x20BFS');_0x279704[_0x42a9('0x2a')]=_0x43d698[_0x42a9('0x2a')]||_0x279704[_0x42a9('0x2a')];_0x279704[_0x42a9('0x2b')]=_0x43d698[_0x42a9('0x2b')];_0x279704[_0x42a9('0x2c')]=_0x43d698[_0x42a9('0x2c')]?_0x43d698[_0x42a9('0x2c')]-0x1:0x1;return null;}else if(_0x43d698&&_0xf7a967[_0x43d698[_0x42a9('0x8')]]){_0x4cf015=_0xf7a967[_0x43d698[_0x42a9('0x8')]](_0x43d698);logger[_0x42a9('0x1f')](_0x42a9('0x2d'),JSON[_0x42a9('0x1c')](_0x4cf015,null,0x2));if(_0x4cf015&&_0x4cf015[_0x42a9('0x2e')]===AGI_CODE_SUCCESS&&_0x4cf015['result']!==AGI_RESULT_ERROR&&!_0x279704[_0x42a9('0x2f')]){logger[_0x42a9('0x1b')](_0x42a9('0x2d'),inspect(_0x4cf015));return _[_0x42a9('0x30')](_0x4cf015['result'])?null:_0x4cf015[_0x42a9('0x31')][_0x42a9('0x32')]();}else{logger[_0x42a9('0x33')](_0x42a9('0x2d'),inspect(_0x4cf015));return null;}}else{logger[_0x42a9('0x33')](_0x42a9('0x34'));return null;}}catch(_0x283800){logger[_0x42a9('0x33')](_0x283800[_0x42a9('0x35')]);return null;}});if(_0x305736['finally']){logger[_0x42a9('0x1f')](util[_0x42a9('0x1e')](_0x42a9('0x36'),_0x279704['arg_1'],_0x279704[_0x42a9('0x22')],_0x279704[_0x42a9('0x23')],_0x279704[_0x42a9('0x24')],_0x279704[_0x42a9('0x25')]));_0x4daddf[_0x42a9('0x26')](_0x305736[_0x42a9('0x37')]['id'],function(_0x31febf){try{_0x31febf=_0xf7a967[_0x42a9('0x27')](_0x31febf);logger[_0x42a9('0x1b')](_0x42a9('0x28'),JSON[_0x42a9('0x1c')](_0x31febf,null,0x2));if(_0x31febf&&_0xf7a967[_0x31febf['agicommand']]){_0x4cf015=_0xf7a967[_0x31febf[_0x42a9('0x8')]](_0x31febf);if(_0x4cf015){logger[_0x42a9('0x1b')](_0x42a9('0x2d'),inspect(_0x4cf015));return _[_0x42a9('0x30')](_0x4cf015[_0x42a9('0x31')])?null:_0x4cf015['result']['toString']();}else{logger[_0x42a9('0x33')](_0x42a9('0x2d'),inspect(_0x4cf015));return null;}}else{logger[_0x42a9('0x33')](_0x42a9('0x34'));return null;}}catch(_0x2814ec){logger[_0x42a9('0x33')](_0x2814ec['stack']);return null;}});}logger[_0x42a9('0x1f')](util[_0x42a9('0x1e')](_0x42a9('0x38'),_0x279704[_0x42a9('0x21')],_0x279704[_0x42a9('0x22')],_0x279704[_0x42a9('0x23')],_0x279704[_0x42a9('0x24')],_0x279704[_0x42a9('0x25')]));logger[_0x42a9('0x1f')](util['format'](_0x42a9('0x39'),_0x279704[_0x42a9('0x2a')],_0x279704['extension'],parseInt(_0x279704[_0x42a9('0x2c')],0xa)+0x1));_0x279704[_0x42a9('0x3a')](_0x279704[_0x42a9('0x2a')],_0x279704['extension'],parseInt(_0x279704[_0x42a9('0x2c')],0xa)+0x1);_0x279704[_0x42a9('0x3b')]();}function handleNotFound(_0x17d8ce){logger[_0x42a9('0x33')](util['format'](_0x42a9('0x3c'),_0x17d8ce[_0x42a9('0x21')]));_0x17d8ce[_0x42a9('0x3a')](_0x17d8ce[_0x42a9('0x2a')],_0x17d8ce[_0x42a9('0x2b')],parseInt(_0x17d8ce[_0x42a9('0x2c')],0xa)+0x1);_0x17d8ce[_0x42a9('0x3b')]();}function handleUnpublished(_0x5ee489){logger[_0x42a9('0x33')](util[_0x42a9('0x1e')]('Project\x20%s\x20not\x20published',_0x5ee489['arg_1']));_0x5ee489[_0x42a9('0x3a')](_0x5ee489[_0x42a9('0x2a')],_0x5ee489[_0x42a9('0x2b')],parseInt(_0x5ee489['priority'],0xa)+0x1);_0x5ee489[_0x42a9('0x3b')]();}module[_0x42a9('0x3d')]={'getAll':getAll,'handleNotFound':handleNotFound,'handleUnpublished':handleUnpublished,'initialize':initialize};
\ No newline at end of file
index d7f4150..264c4aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa106=['emit','headers','_inBody','line','exports','stream','Transform','call','_localBuffer','prototype','_transform','\x0d\x0a\x0d\x0a','toString','substring','indexOf','slice','trim','length'];(function(_0x181ca7,_0x298b30){var _0x1019f9=function(_0x3e956b){while(--_0x3e956b){_0x181ca7['push'](_0x181ca7['shift']());}};_0x1019f9(++_0x298b30);}(_0xa106,0x17f));var _0x6a10=function(_0x39772f,_0x5605cb){_0x39772f=_0x39772f-0x0;var _0xc9edbf=_0xa106[_0x39772f];return _0xc9edbf;};'use strict';var util=require('util');var Transform=require(_0x6a10('0x0'))[_0x6a10('0x1')];function AGIReply(_0x31b3bd){Transform[_0x6a10('0x2')](this,_0x31b3bd);this[_0x6a10('0x3')]='';this['_inBody']=![];}util['inherits'](AGIReply,Transform);AGIReply[_0x6a10('0x4')][_0x6a10('0x5')]=function(_0x236f7f,_0x3fb065,_0x21ad3){var _0x2a9468='\x0a',_0x4ee006=['\x0a\x0a',_0x6a10('0x6')],_0x1fa672=-0x1,_0x4988d8=-0x1,_0x3b605b='',_0x3404c4=0x0,_0x52cac8='',_0x5f1c5e='';this[_0x6a10('0x3')]+=_0x236f7f[_0x6a10('0x7')]();_0x52cac8=this[_0x6a10('0x3')];if(!this['_inBody']){_0x3404c4=0x0;while(_0x4ee006[_0x3404c4]){while((_0x4988d8=_0x52cac8['indexOf'](_0x4ee006[_0x3404c4]))!=-0x1){_0x3b605b=_0x4ee006[_0x3404c4];_0x5f1c5e=_0x52cac8[_0x6a10('0x8')](0x0,_0x4988d8);_0x52cac8=_0x52cac8[_0x6a10('0x8')](_0x4988d8+_0x3b605b['length']);var _0x142b09=_0x5f1c5e['split'](_0x2a9468),_0x255138=0x0,_0x5b8d14={},_0x525a8f='',_0x4986ee='',_0x5c3fd0=-0x1;while(_0x142b09[_0x255138]){_0x5c3fd0=_0x142b09[_0x255138][_0x6a10('0x9')](':');if(_0x5c3fd0!=-0x1){_0x525a8f=_0x142b09[_0x255138][_0x6a10('0xa')](0x0,_0x5c3fd0)[_0x6a10('0xb')]();_0x4986ee=_0x142b09[_0x255138][_0x6a10('0xa')](_0x5c3fd0+0x1)[_0x6a10('0xb')]();if(_0x525a8f[_0x6a10('0xc')]>0x0){_0x5b8d14[_0x525a8f]=_0x4986ee;}}else{}_0x255138++;}this[_0x6a10('0xd')](_0x6a10('0xe'),_0x5b8d14);this[_0x6a10('0xf')]=!![];}_0x3404c4++;}this[_0x6a10('0x3')]=_0x52cac8;}else{while((_0x1fa672=_0x52cac8['indexOf'](_0x2a9468))!=-0x1){_0x5f1c5e=_0x52cac8['substring'](0x0,_0x1fa672);this[_0x6a10('0xd')](_0x6a10('0x10'),_0x5f1c5e);_0x52cac8=_0x52cac8[_0x6a10('0x8')](_0x1fa672+_0x2a9468[_0x6a10('0xc')]);}this[_0x6a10('0x3')]=_0x52cac8;}_0x21ad3();};module[_0x6a10('0x11')]=AGIReply;
\ No newline at end of file
+var _0xd696=['length','slice','trim','emit','util','stream','Transform','call','_localBuffer','inherits','prototype','_transform','\x0d\x0a\x0d\x0a','toString','_inBody','indexOf','substring'];(function(_0x25b7ab,_0x1592c4){var _0x3266f6=function(_0x202cd5){while(--_0x202cd5){_0x25b7ab['push'](_0x25b7ab['shift']());}};_0x3266f6(++_0x1592c4);}(_0xd696,0xe1));var _0x6d69=function(_0x57b236,_0x30614e){_0x57b236=_0x57b236-0x0;var _0x4feb29=_0xd696[_0x57b236];return _0x4feb29;};'use strict';var util=require(_0x6d69('0x0'));var Transform=require(_0x6d69('0x1'))[_0x6d69('0x2')];function AGIReply(_0x1e364e){Transform[_0x6d69('0x3')](this,_0x1e364e);this[_0x6d69('0x4')]='';this['_inBody']=![];}util[_0x6d69('0x5')](AGIReply,Transform);AGIReply[_0x6d69('0x6')][_0x6d69('0x7')]=function(_0x4eb098,_0x21846e,_0x5afe26){var _0x21a1ee='\x0a',_0x24a98b=['\x0a\x0a',_0x6d69('0x8')],_0x485c8c=-0x1,_0x2a460c=-0x1,_0x5f4a8d='',_0x16e5de=0x0,_0x60ce2f='',_0x454a86='';this[_0x6d69('0x4')]+=_0x4eb098[_0x6d69('0x9')]();_0x60ce2f=this['_localBuffer'];if(!this[_0x6d69('0xa')]){_0x16e5de=0x0;while(_0x24a98b[_0x16e5de]){while((_0x2a460c=_0x60ce2f[_0x6d69('0xb')](_0x24a98b[_0x16e5de]))!=-0x1){_0x5f4a8d=_0x24a98b[_0x16e5de];_0x454a86=_0x60ce2f[_0x6d69('0xc')](0x0,_0x2a460c);_0x60ce2f=_0x60ce2f[_0x6d69('0xc')](_0x2a460c+_0x5f4a8d[_0x6d69('0xd')]);var _0x529009=_0x454a86['split'](_0x21a1ee),_0x10d4b4=0x0,_0x190a6d={},_0x4f8f66='',_0x12f5b7='',_0x4cd354=-0x1;while(_0x529009[_0x10d4b4]){_0x4cd354=_0x529009[_0x10d4b4][_0x6d69('0xb')](':');if(_0x4cd354!=-0x1){_0x4f8f66=_0x529009[_0x10d4b4][_0x6d69('0xe')](0x0,_0x4cd354)[_0x6d69('0xf')]();_0x12f5b7=_0x529009[_0x10d4b4][_0x6d69('0xe')](_0x4cd354+0x1)[_0x6d69('0xf')]();if(_0x4f8f66[_0x6d69('0xd')]>0x0){_0x190a6d[_0x4f8f66]=_0x12f5b7;}}else{}_0x10d4b4++;}this[_0x6d69('0x10')]('headers',_0x190a6d);this['_inBody']=!![];}_0x16e5de++;}this['_localBuffer']=_0x60ce2f;}else{while((_0x485c8c=_0x60ce2f[_0x6d69('0xb')](_0x21a1ee))!=-0x1){_0x454a86=_0x60ce2f[_0x6d69('0xc')](0x0,_0x485c8c);this[_0x6d69('0x10')]('line',_0x454a86);_0x60ce2f=_0x60ce2f['substring'](_0x485c8c+_0x21a1ee[_0x6d69('0xd')]);}this[_0x6d69('0x4')]=_0x60ce2f;}_0x5afe26();};module['exports']=AGIReply;
\ No newline at end of file
index 620fdcd..230dc2e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6658=['GetSquareProjects','name','getSquareProject','ShowSquareProject','production','getMailAccountById','ShowMailAccount','MailServerOut','Smtp','CloudProvider','email','getSquareProjectById','getVoiceQueueById','ShowVoiceQueue','getVariableById','getSquareOdbcById','ShowSquareOdbc','getUserById','ShowUser','getContactByPhone','phone','getTrunkById','getSoundById','Interval','getSmsAccountById','createSmsMessage','CreateSmsMessage','createSquareDetailsReport','CreateSquareDetailsReport','CreateSquareReport','merge','arg_1','arg_2','format','YYYY-MM-DD\x20HH:mm:ss','CreateSquareRecording','createSquareMessage','CreateSquareMessage','createCmContact','ShowCmHopper','ListId','getPauseById','agentLogin','LoginUser','PauseUser','agentUnpause','UnpauseUser','agentLogout','lodash','moment','jayson/promise','client','http','request','then','error','message','result','catch','getSquareProjects'];(function(_0x1bc445,_0x2d6fe0){var _0x589e6b=function(_0xcdd664){while(--_0xcdd664){_0x1bc445['push'](_0x1bc445['shift']());}};_0x589e6b(++_0x2d6fe0);}(_0x6658,0x198));var _0x8665=function(_0xcfd63b,_0x112e2){_0xcfd63b=_0xcfd63b-0x0;var _0x75be98=_0x6658[_0xcfd63b];return _0x75be98;};'use strict';var _=require(_0x8665('0x0'));var moment=require(_0x8665('0x1'));var jayson=require(_0x8665('0x2'));var client=jayson[_0x8665('0x3')][_0x8665('0x4')]({'port':0x2329});function request(_0x454e7c,_0x252590){return new Promise(function(_0x49b4d3,_0x4f1343){return client[_0x8665('0x5')](_0x454e7c,_0x252590)[_0x8665('0x6')](function(_0x4cf7f4){if(_0x4cf7f4['error']){return _0x4f1343(_0x4cf7f4[_0x8665('0x7')][_0x8665('0x8')]);}else{return _0x49b4d3(_0x4cf7f4[_0x8665('0x9')]);}})[_0x8665('0xa')](function(_0xe73687){return _0x4f1343(_0xe73687);});});}exports[_0x8665('0xb')]=function(){return request(_0x8665('0xc'),{'options':{'raw':![],'attributes':['id',_0x8665('0xd'),'production']}});};exports[_0x8665('0xe')]=function(_0x20da7d){return request(_0x8665('0xf'),{'options':{'raw':![],'where':{'name':_0x20da7d},'attributes':[_0x8665('0x10')]}});};exports[_0x8665('0x11')]=function(_0x46eab7){return request(_0x8665('0x12'),{'options':{'raw':![],'where':{'id':_0x46eab7},'include':[{'model':_0x8665('0x13'),'as':_0x8665('0x14'),'include':[{'model':_0x8665('0x15'),'as':_0x8665('0x15')}]}],'attributes':['id',_0x8665('0xd'),_0x8665('0x16')],'smtp':!![]}});};exports[_0x8665('0x17')]=function(_0x569c8a){return request(_0x8665('0xf'),{'options':{'where':{'id':_0x569c8a},'attributes':['name']}});};exports[_0x8665('0x18')]=function(_0x16452c){return request(_0x8665('0x19'),{'options':{'where':{'id':_0x16452c},'attributes':[_0x8665('0xd')]}});};exports[_0x8665('0x1a')]=function(_0x2a0507){return request('ShowVariable',{'options':{'where':{'id':_0x2a0507},'attributes':[_0x8665('0xd')]}});};exports[_0x8665('0x1b')]=function(_0x53400c){return request(_0x8665('0x1c'),{'options':{'where':{'id':_0x53400c},'attributes':['dsn']}});};exports[_0x8665('0x1d')]=function(_0x383b79){return request(_0x8665('0x1e'),{'options':{'where':{'id':_0x383b79},'attributes':['name']}});};exports[_0x8665('0x1f')]=function(_0x235617){return request('GetContactByPhone',{'options':{'where':{'phone':_0x235617[_0x8665('0x20')]},'attributes':['id']}});};exports[_0x8665('0x21')]=function(_0x16f1f1){return request('ShowTrunk',{'options':{'where':{'id':_0x16f1f1},'attributes':[_0x8665('0xd')]}});};exports[_0x8665('0x22')]=function(_0xdacc16){return request('ShowSound',{'options':{'where':{'id':_0xdacc16},'attributes':['save_name']}});};exports['getIntervalById']=function(_0x29154d){return request('ShowInterval',{'options':{'raw':![],'where':{'id':_0x29154d},'include':[{'model':_0x8665('0x23'),'as':'Intervals'}]}});};exports[_0x8665('0x24')]=function(_0x4dc4f7){return request('ShowSmsAccount',{'options':{'where':{'id':_0x4dc4f7},'attributes':['id',_0x8665('0xd')]}});};exports[_0x8665('0x25')]=function(_0x512d8e){return request(_0x8665('0x26'),{'body':_0x512d8e});};exports[_0x8665('0x27')]=function(_0x189df6){return request(_0x8665('0x28'),{'body':_0x189df6});};exports['createSquareReport']=function(_0x30cb34){return request(_0x8665('0x29'),{'body':_[_0x8665('0x2a')](_0x30cb34,{'project_name':_0x30cb34[_0x8665('0x2b')],'prev_project_name':_0x30cb34[_0x8665('0x2c')]||'','is_subproject':_0x30cb34[_0x8665('0x2c')]?!![]:![],'leaveAt':moment()[_0x8665('0x2d')](_0x8665('0x2e'))})});};exports['createSquareRecording']=function(_0x21a623){return request(_0x8665('0x2f'),{'body':_0x21a623});};exports[_0x8665('0x30')]=function(_0x5c2c1b){return request(_0x8665('0x31'),{'body':_0x5c2c1b});};exports[_0x8665('0x32')]=function(_0x149c8f){return request(_0x8665('0x33'),{'options':{'raw':![],'where':{'phone':_0x149c8f[_0x8665('0x20')],'ListId':_0x149c8f[_0x8665('0x34')]}}})[_0x8665('0x6')](function(_0x183b4c){if(_0x183b4c){return _0x183b4c;}return request('CreateCmContact',{'body':_0x149c8f});});};exports[_0x8665('0x35')]=function(_0x46c326){return request('ShowPause',{'options':{'where':{'id':_0x46c326},'attributes':[_0x8665('0xd')]}});};exports[_0x8665('0x36')]=function(_0x303376,_0x599ddb){return request(_0x8665('0x37'),{'body':{'interface':_0x599ddb},'options':{'where':_0x303376}});};exports['agentPause']=function(_0x50cebb,_0x1d341a,_0x432e36){return request(_0x8665('0x38'),{'body':{'type':_0x1d341a,'uniqueid':_0x432e36},'options':{'where':_0x50cebb}});};exports[_0x8665('0x39')]=function(_0x450c01){return request(_0x8665('0x3a'),{'body':{},'options':{'where':_0x450c01}});};exports[_0x8665('0x3b')]=function(_0x388c68){return request('LogoutUser',{'body':{},'options':{'where':_0x388c68}});};
\ No newline at end of file
+var _0x34f8=['arg_2','format','YYYY-MM-DD\x20HH:mm:ss','createSquareRecording','CreateSquareRecording','createSquareMessage','CreateSquareMessage','createCmContact','ListId','getPauseById','ShowPause','LoginUser','agentPause','agentUnpause','agentLogout','LogoutUser','lodash','moment','jayson/promise','client','http','then','error','catch','getSquareProjects','GetSquareProjects','production','getSquareProject','ShowSquareProject','getMailAccountById','ShowMailAccount','MailServerOut','Smtp','CloudProvider','name','email','getSquareProjectById','getVoiceQueueById','getVariableById','ShowVariable','getSquareOdbcById','ShowSquareOdbc','dsn','ShowUser','getContactByPhone','phone','getTrunkById','getSoundById','ShowSound','save_name','Interval','Intervals','getSmsAccountById','CreateSquareReport','merge','arg_1'];(function(_0x1ab3f0,_0x4facaf){var _0x23ac50=function(_0x28f5f3){while(--_0x28f5f3){_0x1ab3f0['push'](_0x1ab3f0['shift']());}};_0x23ac50(++_0x4facaf);}(_0x34f8,0x80));var _0x834f=function(_0x3eccd8,_0x5278e7){_0x3eccd8=_0x3eccd8-0x0;var _0x430f50=_0x34f8[_0x3eccd8];return _0x430f50;};'use strict';var _=require(_0x834f('0x0'));var moment=require(_0x834f('0x1'));var jayson=require(_0x834f('0x2'));var client=jayson[_0x834f('0x3')][_0x834f('0x4')]({'port':0x2329});function request(_0x495ca8,_0x521ceb){return new Promise(function(_0xe34aa5,_0x92264b){return client['request'](_0x495ca8,_0x521ceb)[_0x834f('0x5')](function(_0x2a7103){if(_0x2a7103[_0x834f('0x6')]){return _0x92264b(_0x2a7103[_0x834f('0x6')]['message']);}else{return _0xe34aa5(_0x2a7103['result']);}})[_0x834f('0x7')](function(_0x2597c6){return _0x92264b(_0x2597c6);});});}exports[_0x834f('0x8')]=function(){return request(_0x834f('0x9'),{'options':{'raw':![],'attributes':['id','name',_0x834f('0xa')]}});};exports[_0x834f('0xb')]=function(_0x51232e){return request(_0x834f('0xc'),{'options':{'raw':![],'where':{'name':_0x51232e},'attributes':[_0x834f('0xa')]}});};exports[_0x834f('0xd')]=function(_0x2fbfe7){return request(_0x834f('0xe'),{'options':{'raw':![],'where':{'id':_0x2fbfe7},'include':[{'model':_0x834f('0xf'),'as':_0x834f('0x10'),'include':[{'model':_0x834f('0x11'),'as':'CloudProvider'}]}],'attributes':['id',_0x834f('0x12'),_0x834f('0x13')],'smtp':!![]}});};exports[_0x834f('0x14')]=function(_0xda9f2d){return request(_0x834f('0xc'),{'options':{'where':{'id':_0xda9f2d},'attributes':['name']}});};exports[_0x834f('0x15')]=function(_0x2f8592){return request('ShowVoiceQueue',{'options':{'where':{'id':_0x2f8592},'attributes':[_0x834f('0x12')]}});};exports[_0x834f('0x16')]=function(_0x55bc81){return request(_0x834f('0x17'),{'options':{'where':{'id':_0x55bc81},'attributes':['name']}});};exports[_0x834f('0x18')]=function(_0x438187){return request(_0x834f('0x19'),{'options':{'where':{'id':_0x438187},'attributes':[_0x834f('0x1a')]}});};exports['getUserById']=function(_0x58154d){return request(_0x834f('0x1b'),{'options':{'where':{'id':_0x58154d},'attributes':[_0x834f('0x12')]}});};exports[_0x834f('0x1c')]=function(_0x320ee2){return request('GetContactByPhone',{'options':{'where':{'phone':_0x320ee2[_0x834f('0x1d')]},'attributes':['id']}});};exports[_0x834f('0x1e')]=function(_0x29cccd){return request('ShowTrunk',{'options':{'where':{'id':_0x29cccd},'attributes':['name']}});};exports[_0x834f('0x1f')]=function(_0x5535e9){return request(_0x834f('0x20'),{'options':{'where':{'id':_0x5535e9},'attributes':[_0x834f('0x21')]}});};exports['getIntervalById']=function(_0x1fe653){return request('ShowInterval',{'options':{'raw':![],'where':{'id':_0x1fe653},'include':[{'model':_0x834f('0x22'),'as':_0x834f('0x23')}]}});};exports[_0x834f('0x24')]=function(_0x24cf5d){return request('ShowSmsAccount',{'options':{'where':{'id':_0x24cf5d},'attributes':['id',_0x834f('0x12')]}});};exports['createSmsMessage']=function(_0x3ec8dc){return request('CreateSmsMessage',{'body':_0x3ec8dc});};exports['createSquareDetailsReport']=function(_0x43b644){return request('CreateSquareDetailsReport',{'body':_0x43b644});};exports['createSquareReport']=function(_0x57346b){return request(_0x834f('0x25'),{'body':_[_0x834f('0x26')](_0x57346b,{'project_name':_0x57346b[_0x834f('0x27')],'prev_project_name':_0x57346b[_0x834f('0x28')]||'','is_subproject':_0x57346b[_0x834f('0x28')]?!![]:![],'leaveAt':moment()[_0x834f('0x29')](_0x834f('0x2a'))})});};exports[_0x834f('0x2b')]=function(_0xcc9cf5){return request(_0x834f('0x2c'),{'body':_0xcc9cf5});};exports[_0x834f('0x2d')]=function(_0x4dd2c8){return request(_0x834f('0x2e'),{'body':_0x4dd2c8});};exports[_0x834f('0x2f')]=function(_0xcd12fe){return request('ShowCmHopper',{'options':{'raw':![],'where':{'phone':_0xcd12fe[_0x834f('0x1d')],'ListId':_0xcd12fe[_0x834f('0x30')]}}})[_0x834f('0x5')](function(_0x2854e4){if(_0x2854e4){return _0x2854e4;}return request('CreateCmContact',{'body':_0xcd12fe});});};exports[_0x834f('0x31')]=function(_0x2a68b1){return request(_0x834f('0x32'),{'options':{'where':{'id':_0x2a68b1},'attributes':[_0x834f('0x12')]}});};exports['agentLogin']=function(_0x3fc0ef,_0x345acc){return request(_0x834f('0x33'),{'body':{'interface':_0x345acc},'options':{'where':_0x3fc0ef}});};exports[_0x834f('0x34')]=function(_0x4ac1fe,_0x38f165,_0x1ec011){return request('PauseUser',{'body':{'type':_0x38f165,'uniqueid':_0x1ec011},'options':{'where':_0x4ac1fe}});};exports[_0x834f('0x35')]=function(_0x3847df){return request('UnpauseUser',{'body':{},'options':{'where':_0x3847df}});};exports[_0x834f('0x36')]=function(_0x3342f6){return request(_0x834f('0x37'),{'body':{},'options':{'where':_0x3342f6}});};
\ No newline at end of file
index b175037..ad32ad8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda19=['exports','./lex'];(function(_0x40c8b0,_0x28a552){var _0x506318=function(_0x49372e){while(--_0x49372e){_0x40c8b0['push'](_0x40c8b0['shift']());}};_0x506318(++_0x28a552);}(_0xda19,0xd5));var _0x9da1=function(_0x3d7a8a,_0x43bed7){_0x3d7a8a=_0x3d7a8a-0x0;var _0x17f193=_0xda19[_0x3d7a8a];return _0x17f193;};var polly=require('./polly');var lex=require(_0x9da1('0x0'));module[_0x9da1('0x1')]={'polly':polly,'lex':lex};
\ No newline at end of file
+var _0x2975=['exports','./lex'];(function(_0x5380da,_0x2b64a3){var _0x151f81=function(_0x16e4a9){while(--_0x16e4a9){_0x5380da['push'](_0x5380da['shift']());}};_0x151f81(++_0x2b64a3);}(_0x2975,0x1c5));var _0x5297=function(_0x3bb13d,_0x47326a){_0x3bb13d=_0x3bb13d-0x0;var _0x5516c4=_0x2975[_0x3bb13d];return _0x5516c4;};var polly=require('./polly');var lex=require(_0x5297('0x0'));module[_0x5297('0x1')]={'polly':polly,'lex':lex};
\ No newline at end of file
index 204dfa3..09f30ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa88=['exports','./lib/api'];(function(_0x468ae8,_0x55979f){var _0x56344f=function(_0x531140){while(--_0x531140){_0x468ae8['push'](_0x468ae8['shift']());}};_0x56344f(++_0x55979f);}(_0xaa88,0x137));var _0x8aa8=function(_0x53f964,_0x3b52b8){_0x53f964=_0x53f964-0x0;var _0x17be6c=_0xaa88[_0x53f964];return _0x17be6c;};'use strict';var lex=require(_0x8aa8('0x0'));module[_0x8aa8('0x1')]=function(_0x1643a6,_0x51c79b,_0x4aee38,_0x4ba9dd,_0x3a5b12,_0x43f7e4){return lex(_0x1643a6,_0x51c79b,_0x4aee38,_0x4ba9dd,_0x3a5b12,_0x43f7e4);};
\ No newline at end of file
+var _0xbdb7=['./lib/api','exports'];(function(_0x169b00,_0x5ae896){var _0x4be61c=function(_0x3350db){while(--_0x3350db){_0x169b00['push'](_0x169b00['shift']());}};_0x4be61c(++_0x5ae896);}(_0xbdb7,0x12e));var _0x7bdb=function(_0x53ddab,_0x4ada9d){_0x53ddab=_0x53ddab-0x0;var _0x5819ac=_0xbdb7[_0x53ddab];return _0x5819ac;};'use strict';var lex=require(_0x7bdb('0x0'));module[_0x7bdb('0x1')]=function(_0x44467d,_0x2a2c1c,_0x23c326,_0x433850,_0x4496ac,_0x2c7e07){return lex(_0x44467d,_0x2a2c1c,_0x23c326,_0x433850,_0x4496ac,_0x2c7e07);};
\ No newline at end of file
index 13f6526..2050c81 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['LexRuntime','bluebird','aws-sdk','slots','hasOwnProperty'];(function(_0x46ff18,_0x2e1faa){var _0x4e812f=function(_0x382809){while(--_0x382809){_0x46ff18['push'](_0x46ff18['shift']());}};_0x4e812f(++_0x2e1faa);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2a6809,_0x44edde){_0x2a6809=_0x2a6809-0x0;var _0x11c371=_0xa9e0[_0x2a6809];return _0x11c371;};'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(_0x55b4c8,_0x3c1440){var _0x247ca1=function(_0x34c732){while(--_0x34c732){_0x55b4c8['push'](_0x55b4c8['shift']());}};_0x247ca1(++_0x3c1440);}(_0xa9e0,0x123));var _0x0a9e=function(_0x34bc30,_0x177cb0){_0x34bc30=_0x34bc30-0x0;var _0x5706de=_0xa9e0[_0x34bc30];return _0x5706de;};'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 d0ef52a..cad4284 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-'use strict';var polly=require('./lib/api');module['exports']=function(_0x4b310b,_0x5c2bef,_0x19b8b9,_0x3f09af,_0x38f682,_0x34cbfa,_0x3e33b1){return polly(_0x4b310b,_0x5c2bef,_0x19b8b9,_0x3f09af,_0x38f682,_0x34cbfa,_0x3e33b1);};
\ No newline at end of file
+var _0x9a1e=['exports'];(function(_0x49b207,_0x408ade){var _0x2dc8fa=function(_0x150975){while(--_0x150975){_0x49b207['push'](_0x49b207['shift']());}};_0x2dc8fa(++_0x408ade);}(_0x9a1e,0x15a));var _0xe9a1=function(_0x46004c,_0x47b070){_0x46004c=_0x46004c-0x0;var _0x569da4=_0x9a1e[_0x46004c];return _0x569da4;};'use strict';var polly=require('./lib/api');module[_0xe9a1('0x0')]=function(_0x4bfdcc,_0x2ee83c,_0x5405d9,_0x4279a8,_0x5e369f,_0x1ce21f,_0x14bfc1){return polly(_0x4bfdcc,_0x2ee83c,_0x5405d9,_0x4279a8,_0x5e369f,_0x1ce21f,_0x14bfc1);};
\ No newline at end of file
index 46f21f5..c3984e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf40=['Invalid\x20data\x20response\x20from\x20aws\x20Polly!','Polly','text','mp3','path','randomstring','aws-sdk','synthesizeSpeech','AudioStream','writeFile'];(function(_0x378891,_0x4e3e16){var _0xfbfda2=function(_0x3b7681){while(--_0x3b7681){_0x378891['push'](_0x378891['shift']());}};_0xfbfda2(++_0x4e3e16);}(_0xcf40,0x130));var _0x0cf4=function(_0xd734b9,_0x51e11b){_0xd734b9=_0xd734b9-0x0;var _0x59edd9=_0xcf40[_0xd734b9];return _0x59edd9;};'use strict';var fs=require('fs');var path=require(_0x0cf4('0x0'));var BPromise=require('bluebird');var rs=require(_0x0cf4('0x1'));var AWS=require(_0x0cf4('0x2'));function pollyResult(_0x548162,_0xcd86fc,_0x10b2ec){return new BPromise(function(_0x1bd852,_0x1bc84d){_0x548162[_0x0cf4('0x3')](_0xcd86fc,function(_0x2c84e1,_0x4d0552){if(_0x2c84e1){_0x1bc84d(_0x2c84e1);}else if(_0x4d0552){if(_0x4d0552[_0x0cf4('0x4')]instanceof Buffer){fs[_0x0cf4('0x5')](_0x10b2ec,_0x4d0552['AudioStream'],function(_0x3764c2){if(_0x3764c2){_0x1bc84d(_0x3764c2);}else{_0x1bd852();}});}else{_0x1bc84d(new Error(_0x0cf4('0x6')));}}else{_0x1bc84d(new Error('No\x20data\x20response\x20from\x20aws\x20Polly!'));}});});}module['exports']=function(_0x160e8b,_0x454246,_0x12caf6,_0x7cff3f,_0x44b6f3,_0x515f41,_0xb76020){var _0x2cf8dc=new AWS[(_0x0cf4('0x7'))]({'accessKeyId':_0x160e8b,'secretAccessKey':_0x454246,'region':_0x12caf6});var _0x18f99a={'Text':_0x44b6f3,'TextType':_0x515f41||_0x0cf4('0x8'),'OutputFormat':_0x0cf4('0x9'),'VoiceId':_0x7cff3f};return pollyResult(_0x2cf8dc,_0x18f99a,_0xb76020);};
\ No newline at end of file
+var _0x2432=['exports','Polly','text','path','bluebird','randomstring','synthesizeSpeech','AudioStream','Invalid\x20data\x20response\x20from\x20aws\x20Polly!','No\x20data\x20response\x20from\x20aws\x20Polly!'];(function(_0x24a181,_0x4cae08){var _0x4e5143=function(_0x54f82d){while(--_0x54f82d){_0x24a181['push'](_0x24a181['shift']());}};_0x4e5143(++_0x4cae08);}(_0x2432,0x111));var _0x2243=function(_0x36b215,_0x6df092){_0x36b215=_0x36b215-0x0;var _0x44cd50=_0x2432[_0x36b215];return _0x44cd50;};'use strict';var fs=require('fs');var path=require(_0x2243('0x0'));var BPromise=require(_0x2243('0x1'));var rs=require(_0x2243('0x2'));var AWS=require('aws-sdk');function pollyResult(_0x1d535d,_0x37edec,_0x34310f){return new BPromise(function(_0x4b333f,_0xb51861){_0x1d535d[_0x2243('0x3')](_0x37edec,function(_0x57e831,_0x4b467b){if(_0x57e831){_0xb51861(_0x57e831);}else if(_0x4b467b){if(_0x4b467b[_0x2243('0x4')]instanceof Buffer){fs['writeFile'](_0x34310f,_0x4b467b[_0x2243('0x4')],function(_0x3dfd4a){if(_0x3dfd4a){_0xb51861(_0x3dfd4a);}else{_0x4b333f();}});}else{_0xb51861(new Error(_0x2243('0x5')));}}else{_0xb51861(new Error(_0x2243('0x6')));}});});}module[_0x2243('0x7')]=function(_0x1c5b4a,_0x594004,_0x3d4d78,_0x331d19,_0x4bc504,_0x3486e5,_0x295296){var _0x29cd84=new AWS[(_0x2243('0x8'))]({'accessKeyId':_0x1c5b4a,'secretAccessKey':_0x594004,'region':_0x3d4d78});var _0x5f0d58={'Text':_0x4bc504,'TextType':_0x3486e5||_0x2243('0x9'),'OutputFormat':'mp3','VoiceId':_0x331d19};return pollyResult(_0x29cd84,_0x5f0d58,_0x295296);};
\ No newline at end of file
index 6ed6cd9..aaf6360 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x764b=['exports','./lib/api'];(function(_0x41db2d,_0xc6e83e){var _0x373675=function(_0x522da8){while(--_0x522da8){_0x41db2d['push'](_0x41db2d['shift']());}};_0x373675(++_0xc6e83e);}(_0x764b,0xb5));var _0xb764=function(_0x3070dc,_0x40cf11){_0x3070dc=_0x3070dc-0x0;var _0x431489=_0x764b[_0x3070dc];return _0x431489;};'use strict';var asr=require(_0xb764('0x0'));module[_0xb764('0x1')]=function(_0x53a87c,_0x4b128c,_0x3bdf9e,_0x379ca5){return asr(_0x53a87c,_0x4b128c,_0x3bdf9e);};
\ No newline at end of file
+var _0x771b=['exports'];(function(_0x1bd88b,_0x592db1){var _0x5d7e5e=function(_0xa885d4){while(--_0xa885d4){_0x1bd88b['push'](_0x1bd88b['shift']());}};_0x5d7e5e(++_0x592db1);}(_0x771b,0x72));var _0xb771=function(_0xe9caf4,_0x60b31a){_0xe9caf4=_0xe9caf4-0x0;var _0xbe0c23=_0x771b[_0xe9caf4];return _0xbe0c23;};'use strict';var asr=require('./lib/api');module[_0xb771('0x0')]=function(_0x356a0e,_0x5eedb8,_0xb29019,_0xe78fcf){return asr(_0x356a0e,_0x5eedb8,_0xb29019);};
\ No newline at end of file
index b06c724..63efdd3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x579c=['undefined','lang\x20should\x20be\x20a\x20string','readFileSync','toString','base64','/v1/speech:recognize?key=','LINEAR16','8000','url','bluebird','https://speech.googleapis.com','exports','string','length','filepath\x20should\x20be\x20a\x20string'];(function(_0x44af2c,_0x403843){var _0x3b5fc9=function(_0x11a4db){while(--_0x11a4db){_0x44af2c['push'](_0x44af2c['shift']());}};_0x3b5fc9(++_0x403843);}(_0x579c,0xda));var _0xc579=function(_0x152d1a,_0x193614){_0x152d1a=_0x152d1a-0x0;var _0x1ef5de=_0x579c[_0x152d1a];return _0x1ef5de;};'use strict';var url=require(_0xc579('0x0'));var BPromise=require(_0xc579('0x1'));var fs=require('fs');var host=_0xc579('0x2');module[_0xc579('0x3')]=function(_0x397136,_0x586948,_0x1e2808){return new BPromise(function(_0x5399d7,_0x21a0a2){var _0x3b913c;if(typeof _0x397136!==_0xc579('0x4')||_0x397136[_0xc579('0x5')]===0x0){return _0x21a0a2(_0xc579('0x6'));}if(typeof _0x586948!==_0xc579('0x4')||_0x586948[_0xc579('0x5')]===0x0){return _0x21a0a2('key\x20should\x20be\x20a\x20string');}if(typeof _0x1e2808!==_0xc579('0x7')&&(typeof _0x1e2808!==_0xc579('0x4')||_0x1e2808[_0xc579('0x5')]===0x0)){return _0x21a0a2(_0xc579('0x8'));}try{_0x3b913c=fs[_0xc579('0x9')](_0x397136)[_0xc579('0xa')](_0xc579('0xb'));}catch(_0xf9847f){return _0x21a0a2(_0xf9847f);}return _0x5399d7({'method':'POST','uri':host+_0xc579('0xc')+_0x586948,'body':{'config':{'encoding':_0xc579('0xd'),'sampleRateHertz':_0xc579('0xe'),'languageCode':_0x1e2808},'audio':{'content':_0x3b913c}},'json':!![]});});};
\ No newline at end of file
+var _0xb2ff=['readFileSync','base64','POST','LINEAR16','8000','url','bluebird','exports','string','length','filepath\x20should\x20be\x20a\x20string','key\x20should\x20be\x20a\x20string','lang\x20should\x20be\x20a\x20string'];(function(_0x1eda20,_0x1149f4){var _0x31b953=function(_0x25f0d8){while(--_0x25f0d8){_0x1eda20['push'](_0x1eda20['shift']());}};_0x31b953(++_0x1149f4);}(_0xb2ff,0x123));var _0xfb2f=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xb2ff[_0x3dd15e];return _0x231fd0;};'use strict';var url=require(_0xfb2f('0x0'));var BPromise=require(_0xfb2f('0x1'));var fs=require('fs');var host='https://speech.googleapis.com';module[_0xfb2f('0x2')]=function(_0x54e80d,_0x584330,_0x51e1fe){return new BPromise(function(_0x13cb60,_0x484368){var _0x145e77;if(typeof _0x54e80d!==_0xfb2f('0x3')||_0x54e80d[_0xfb2f('0x4')]===0x0){return _0x484368(_0xfb2f('0x5'));}if(typeof _0x584330!=='string'||_0x584330['length']===0x0){return _0x484368(_0xfb2f('0x6'));}if(typeof _0x51e1fe!=='undefined'&&(typeof _0x51e1fe!==_0xfb2f('0x3')||_0x51e1fe[_0xfb2f('0x4')]===0x0)){return _0x484368(_0xfb2f('0x7'));}try{_0x145e77=fs[_0xfb2f('0x8')](_0x54e80d)['toString'](_0xfb2f('0x9'));}catch(_0x5084f0){return _0x484368(_0x5084f0);}return _0x13cb60({'method':_0xfb2f('0xa'),'uri':host+'/v1/speech:recognize?key='+_0x584330,'body':{'config':{'encoding':_0xfb2f('0xb'),'sampleRateHertz':_0xfb2f('0xc'),'languageCode':_0x51e1fe},'audio':{'content':_0x145e77}},'json':!![]});});};
\ No newline at end of file
index b5f997a..1cc1a93 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb4de=['exports'];(function(_0x28f30b,_0x3b60c6){var _0x599fbb=function(_0x1dad13){while(--_0x1dad13){_0x28f30b['push'](_0x28f30b['shift']());}};_0x599fbb(++_0x3b60c6);}(_0xb4de,0x116));var _0xeb4d=function(_0x248f75,_0x152363){_0x248f75=_0x248f75-0x0;var _0x596eb2=_0xb4de[_0x248f75];return _0x596eb2;};var asr=require('./asr');module[_0xeb4d('0x0')]={'asr':asr};
\ No newline at end of file
+var _0xf07b=['./asr'];(function(_0x4b7895,_0x3c4f5d){var _0x264180=function(_0xe0e861){while(--_0xe0e861){_0x4b7895['push'](_0x4b7895['shift']());}};_0x264180(++_0x3c4f5d);}(_0xf07b,0x1e9));var _0xbf07=function(_0x5d6456,_0x58ecc7){_0x5d6456=_0x5d6456-0x0;var _0x4d66c1=_0xf07b[_0x5d6456];return _0x4d66c1;};var asr=require(_0xbf07('0x0'));module['exports']={'asr':asr};
\ No newline at end of file
index ce95fe7..ef2c307 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5616=['%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','nda','text','channelData','CustomAction','CustomActionData','AudioFromTts','Data','audiofile','bluebird','dialogflow','https','md5','path','querystring','request-promise','randomstring','google-tts-api','url','parse','util','./aws','./sestek','../../../config/logger','agi','protocol','https:','host','WHAT_EVER','statusCode','error','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','statusMessage','finish','info','finish\x20download\x20file','close','unlink','pipe','end','get','data','error\x20convert','finish\x20to\x20convert','start','resolve','generate','.wav','base64','then','chmodSync','777','split','googleCloudTTS','https://texttospeech.googleapis.com/v1/','?key=','ssml','input','voice','audioConfig','MP3','POST','tmp','writeFile','googleCloudTTS\x20path','googleTTS','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','utf8','application/x-www-form-urlencoded','stringify','jQ1olc','null','generic','text\x20length\x20limit\x20reached','\x22\x20might\x20not\x20exist','parse\x20response\x20failed:\x0a','.mp3','writeFileSync','goggleTTS\x20path','googleASR','uri','results','map','alternatives','transcript','join','confidence','googleASR\x20transcription','googleASR\x20confidence','[%s]\x20%s:%s','name','message','textRequest','source','result','actionIncomplete','fulfillment','speech','score','code','endConversation','metadata','isFallbackIntent','SessionsClient','detectIntent','length','Dialogflow\x20V2\x20response:','queryResult','action','allRequiredParamsPresent','diagnosticInfo','fields','end_conversation','boolValue','fulfillmentText','intent','displayName','isFallback','languageCode','responseId','intentDetectionConfidence','tildeASR','asr','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','awsPolly','awsLex','lex','ispeechTTS','format'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x5616,0x19e));var _0x6561=function(_0x2b58f8,_0x14f865){_0x2b58f8=_0x2b58f8-0x0;var _0x2af05b=_0x5616[_0x2b58f8];return _0x2af05b;};'use strict';var apiai=require('apiai-promise');var BPromise=require(_0x6561('0x0'));var dialogflow=require(_0x6561('0x1'));var fs=require('fs');var http=require('http');var https=require(_0x6561('0x2'));var md5=require(_0x6561('0x3'));var path=require(_0x6561('0x4'));var querystring=require(_0x6561('0x5'));var rp=require(_0x6561('0x6'));var rs=require(_0x6561('0x7'));var sox=require('sox');var tts=require(_0x6561('0x8'));var urlParse=require(_0x6561('0x9'))[_0x6561('0xa')];var util=require(_0x6561('0xb'));var aws=require(_0x6561('0xc'));var google=require('./google');var sestek=require(_0x6561('0xd'));var tilde=require('./tilde');var logger=require(_0x6561('0xe'))(_0x6561('0xf'));var ISPEECH_API='https://api.ispeech.org/api/rest';function downloadFile(_0x477981,_0x586170){return new BPromise(function(_0x11a4db,_0x116a47){var _0x40f57f=urlParse(_0x477981);var _0x13a89c=_0x40f57f[_0x6561('0x10')]===_0x6561('0x11')?https:http;var _0x4296c9={'host':_0x40f57f[_0x6561('0x12')],'path':_0x40f57f[_0x6561('0x4')],'headers':{'user-agent':_0x6561('0x13')}};_0x13a89c['get'](_0x4296c9,function(_0xd78eee){if(_0xd78eee[_0x6561('0x14')]!==0xc8){logger[_0x6561('0x15')](_0x6561('0x16')+_0x477981+_0x6561('0x17')+_0xd78eee[_0x6561('0x14')]+'\x20('+_0xd78eee[_0x6561('0x18')]+')');_0x116a47(new Error(_0x6561('0x16')+_0x477981+_0x6561('0x17')+_0xd78eee[_0x6561('0x14')]+'\x20('+_0xd78eee['statusMessage']+')'));return;}var _0x454b69=fs['createWriteStream'](_0x586170);_0x454b69['on'](_0x6561('0x19'),function(){logger[_0x6561('0x1a')](_0x6561('0x1b'));_0x454b69[_0x6561('0x1c')](_0x11a4db);});_0x454b69['on'](_0x6561('0x15'),function(_0x29687e){fs[_0x6561('0x1d')](_0x586170);logger[_0x6561('0x15')]('download\x20error',_0x29687e);_0x116a47(_0x29687e);});_0xd78eee[_0x6561('0x1e')](_0x454b69);})['on'](_0x6561('0x15'),function(_0x14b12a){logger[_0x6561('0x15')](_0x14b12a);_0x116a47(_0x14b12a);})[_0x6561('0x1f')]();});}function uploadFile(_0x1e0428){return new BPromise(function(_0x6a757a,_0xfcef9d){var _0x243d82=urlParse(_0x1e0428);var _0x2135b0=_0x243d82[_0x6561('0x10')]===_0x6561('0x11')?https:http;var _0x8c4db9={'host':_0x243d82['host'],'path':_0x243d82['path'],'headers':{'user-agent':'WHAT_EVER'}};_0x2135b0[_0x6561('0x20')](_0x8c4db9,function(_0x4dbbff){if(_0x4dbbff[_0x6561('0x14')]!==0xc8){_0xfcef9d(new Error('request\x20to\x20'+_0x1e0428+_0x6561('0x17')+_0x4dbbff[_0x6561('0x14')]+'\x20('+_0x4dbbff[_0x6561('0x18')]+')'));return;}var _0x885362='';_0x4dbbff['on'](_0x6561('0x21'),function(_0x3a41c0){_0x885362+=_0x3a41c0;});_0x4dbbff['on'](_0x6561('0x1f'),function(){_0x6a757a(_0x885362);});})['on'](_0x6561('0x15'),function(_0x321363){_0xfcef9d(_0x321363);})[_0x6561('0x1f')]();});}function convertFile(_0x2d6dc7,_0x975180){return new BPromise(function(_0x52e111,_0x58ea22){var _0x35636b=sox['transcode'](_0x2d6dc7,_0x975180,{'sampleRate':0x1f40,'format':'wav','channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x35636b['on'](_0x6561('0x15'),function(_0x4f6511){logger[_0x6561('0x15')](_0x6561('0x22'),_0x4f6511);_0x58ea22(_0x4f6511);});_0x35636b['on'](_0x6561('0x1f'),function(){logger[_0x6561('0x1a')](_0x6561('0x23'));_0x52e111();});_0x35636b[_0x6561('0x24')]();});}function base64Decode(_0x16cdb2,_0x422b02){var _0x11ab55=path[_0x6561('0x25')](__dirname,'tmp',rs[_0x6561('0x26')](0x4)+_0x6561('0x27'));fs['writeFileSync'](_0x11ab55,_0x16cdb2,_0x6561('0x28'));return convertFile(_0x11ab55,_0x422b02)[_0x6561('0x29')](function(){try{fs[_0x6561('0x1d')](_0x11ab55);fs[_0x6561('0x2a')](_0x422b02,_0x6561('0x2b'));}catch(_0x39edd6){logger[_0x6561('0x15')](_0x39edd6);}return _0x422b02[_0x6561('0x2c')]('.')[0x0];});}function base64Encode(_0x1c40b7){var _0x3dbd48=fs['readFileSync'](_0x1c40b7);return new Buffer(_0x3dbd48)['toString'](_0x6561('0x28'));}exports[_0x6561('0x2d')]=function(_0x40cdc8,_0x45814f,_0x55d9ff,_0xa4a45,_0x2eed76,_0x20f74a){var _0x7523b4,_0x1021cf;var _0x791e5c=_0x6561('0x2e');var _0x41f70e=_0x6561('0x2f')+_0x40cdc8;var _0x4dceb0={};if(_0x45814f===_0x6561('0x30')){_0x4dceb0[_0x6561('0x31')]={'ssml':_0x55d9ff};}else{_0x4dceb0[_0x6561('0x31')]={'text':_0x55d9ff};};_0x4dceb0[_0x6561('0x32')]={'languageCode':_0xa4a45,'ssmlGender':_0x2eed76};_0x4dceb0[_0x6561('0x33')]={'audioEncoding':_0x6561('0x34'),'sampleRateHertz':0x1f40};var _0x46b608={'url':_0x791e5c+'text:synthesize'+_0x41f70e,'method':_0x6561('0x35'),'json':!![],'body':_0x4dceb0};return rp(_0x46b608)[_0x6561('0x29')](function(_0x1404d3){return new BPromise(function(_0x4ebab9,_0x2d7776){_0x7523b4=path['resolve'](__dirname,_0x6561('0x36'),rs[_0x6561('0x26')](0x4)+'.mp3');var _0x747505=Buffer['from'](_0x1404d3['audioContent'],'base64');return fs[_0x6561('0x37')](_0x7523b4,_0x747505,function(_0x4f7020){_0x2d7776(_0x4f7020);},function(_0x4fb021){fs[_0x6561('0x2a')](_0x7523b4,_0x6561('0x2b'));_0x4ebab9(_0x4fb021);});});})[_0x6561('0x29')](function(_0x3a54ae){_0x1021cf=path[_0x6561('0x25')](__dirname,_0x6561('0x36'),rs[_0x6561('0x26')](0x4)+'.wav');return convertFile(_0x7523b4,_0x1021cf);})[_0x6561('0x29')](function(){try{fs[_0x6561('0x1d')](_0x7523b4);fs[_0x6561('0x2a')](_0x1021cf,_0x6561('0x2b'));}catch(_0x45cf02){logger[_0x6561('0x15')](_0x45cf02);}logger[_0x6561('0x1a')](_0x6561('0x38'),_0x1021cf['split']('.')[0x0]);return _0x1021cf[_0x6561('0x2c')]('.')[0x0];});};exports[_0x6561('0x39')]=function(_0x246c9c,_0x2d05ad){var _0x3bd31e=_0x6561('0x3a');var _0x56d37a,_0x580f16;var _0x1f445b;var _0x5a434c={'encoding':_0x6561('0x3b'),'method':_0x6561('0x35'),'timeout':0x2710,'url':_0x3bd31e,'headers':{'Content-Type':_0x6561('0x3c')},'body':'f.req='+encodeURIComponent(JSON[_0x6561('0x3d')]([[[_0x6561('0x3e'),JSON[_0x6561('0x3d')]([_0x246c9c,_0x2d05ad||'en',![],_0x6561('0x3f')]),null,_0x6561('0x40')]]]))};return rp(_0x5a434c)[_0x6561('0x29')](function(_0x5a47ac){try{_0x1f445b=eval(_0x5a47ac['slice'](0x5))[0x0][0x2];}catch(_0x5f4f80){throw new Error('parse\x20response\x20failed:\x0a'+_0x5a47ac[_0x6561('0x21')]);}if(!_0x1f445b){if(_0x246c9c['length']>0xc8){throw new Error(_0x6561('0x41'));}else{throw new Error('lang\x20\x22'+_0x2d05ad+_0x6561('0x42'));}}try{_0x1f445b=eval(_0x1f445b)[0x0];}catch(_0x496333){throw new Error(_0x6561('0x43')+res[_0x6561('0x21')]);}const _0x4a9e09=_0x1f445b;_0x56d37a=path['resolve'](__dirname,_0x6561('0x36'),rs['generate'](0x4)+_0x6561('0x44'));fs[_0x6561('0x45')](_0x56d37a,_0x1f445b,{'encoding':_0x6561('0x28')});_0x580f16=path[_0x6561('0x25')](__dirname,_0x6561('0x36'),rs['generate'](0x4)+_0x6561('0x27'));return convertFile(_0x56d37a,_0x580f16);})[_0x6561('0x29')](function(){try{fs[_0x6561('0x1d')](_0x56d37a);fs[_0x6561('0x2a')](_0x580f16,'777');}catch(_0x27fe4d){logger['error'](_0x27fe4d);}logger[_0x6561('0x1a')](_0x6561('0x46'),_0x580f16[_0x6561('0x2c')]('.')[0x0]);return _0x580f16[_0x6561('0x2c')]('.')[0x0];});};exports[_0x6561('0x47')]=function(_0x11e905,_0x5db027,_0x3ea8ef){return google['asr'](_0x11e905,_0x5db027,_0x3ea8ef)[_0x6561('0x29')](function(_0x11e47d){logger['info'](_0x11e47d[_0x6561('0x48')]);return rp(_0x11e47d);})['then'](function(_0x149b90){var _0x32e24b='';var _0x3a59d4=0x0;try{fs[_0x6561('0x1d')](_0x11e905);}catch(_0x388e21){logger[_0x6561('0x15')](_0x388e21);}if(_0x149b90&&_0x149b90[_0x6561('0x49')]){_0x32e24b=_0x149b90[_0x6561('0x49')][_0x6561('0x4a')](function(_0x43a4a4){return _0x43a4a4&&_0x43a4a4[_0x6561('0x4b')][0x0]&&_0x43a4a4[_0x6561('0x4b')][0x0][_0x6561('0x4c')]?_0x43a4a4[_0x6561('0x4b')][0x0][_0x6561('0x4c')]:'';})[_0x6561('0x4d')]('\x0a');_0x3a59d4=_0x149b90[_0x6561('0x49')][_0x6561('0x4a')](function(_0x215beb){return _0x215beb&&_0x215beb['alternatives'][0x0]&&_0x215beb[_0x6561('0x4b')][0x0][_0x6561('0x4e')]?_0x215beb[_0x6561('0x4b')][0x0][_0x6561('0x4e')]:0x0;})[_0x6561('0x4d')]('\x0a');}logger[_0x6561('0x1a')](_0x6561('0x4f'),_0x32e24b);logger[_0x6561('0x1a')](_0x6561('0x50'),_0x3a59d4);return{'transcript':_0x32e24b,'confidence':_0x3a59d4};})['catch'](function(_0x3684e1){logger['error'](_0x6561('0x51'),_0x3684e1[_0x6561('0x14')],_0x3684e1[_0x6561('0x52')],_0x3684e1[_0x6561('0x53')]);});};exports['googleDialogflow']=function(_0x31a4ec,_0x24476f,_0x275af3,_0x7893a6){var _0x217b73=apiai(_0x24476f,{'language':_0x7893a6||'en'});return _0x217b73[_0x6561('0x54')](_0x275af3,{'sessionId':md5(_0x31a4ec)})[_0x6561('0x29')](function(_0xed1b60){logger['info'](JSON['stringify'](_0xed1b60));return{'source':_0xed1b60['result'][_0x6561('0x55')],'resolvedQuery':_0xed1b60[_0x6561('0x56')]['resolvedQuery'],'action':_0xed1b60[_0x6561('0x56')]['action'],'actionIncomplete':_0xed1b60['result'][_0x6561('0x57')],'speech':_0xed1b60[_0x6561('0x56')][_0x6561('0x58')][_0x6561('0x59')],'score':_0xed1b60[_0x6561('0x56')][_0x6561('0x5a')],'statusCode':_0xed1b60['status'][_0x6561('0x5b')],'endConversation':_0xed1b60[_0x6561('0x56')]['metadata'][_0x6561('0x5c')]||![],'isFallbackIntent':_0xed1b60[_0x6561('0x56')][_0x6561('0x5d')][_0x6561('0x5e')]};});};exports['googleDialogflowV2']=function(_0x37648f,_0x676e44,_0x57c9a6,_0x2e161c,_0x504e36,_0x1eef8b){var _0x41c614=_0x2e161c['replace'](/\\n/g,'\x0a');var _0x36f93d={'credentials':{'private_key':_0x41c614,'client_email':_0x57c9a6}};var _0x296f7f=new dialogflow[(_0x6561('0x5f'))](_0x36f93d);var _0x5e5170=_0x296f7f['sessionPath'](_0x676e44,md5(_0x37648f));var _0x20a24b={'session':_0x5e5170,'queryInput':{'text':{'text':_0x504e36,'languageCode':_0x1eef8b}}};return _0x296f7f[_0x6561('0x60')](_0x20a24b)[_0x6561('0x29')](function(_0x11047e){if(_0x11047e&&_0x11047e[_0x6561('0x61')]){logger[_0x6561('0x1a')](_0x6561('0x62'),JSON[_0x6561('0x3d')](_0x11047e));var _0x487bb8=_0x11047e[0x0];if(_0x487bb8){var _0x44908e={'action':_0x487bb8[_0x6561('0x63')][_0x6561('0x64')],'allRequiredParamsPresent':_0x487bb8[_0x6561('0x63')][_0x6561('0x65')],'endConversation':_0x487bb8[_0x6561('0x63')][_0x6561('0x66')]&&_0x487bb8['queryResult'][_0x6561('0x66')][_0x6561('0x67')]?_0x487bb8[_0x6561('0x63')]['diagnosticInfo'][_0x6561('0x67')][_0x6561('0x68')][_0x6561('0x69')]:![],'fulfillmentText':_0x487bb8[_0x6561('0x63')][_0x6561('0x6a')],'intentName':_0x487bb8['queryResult'][_0x6561('0x6b')][_0x6561('0x52')],'intentDisplayName':_0x487bb8[_0x6561('0x63')]['intent'][_0x6561('0x6c')],'isFallbackIntent':_0x487bb8[_0x6561('0x63')][_0x6561('0x6b')][_0x6561('0x6d')],'languageCode':_0x487bb8[_0x6561('0x63')][_0x6561('0x6e')],'queryText':_0x487bb8['queryResult']['queryText'],'responseId':_0x487bb8[_0x6561('0x6f')],'score':_0x487bb8[_0x6561('0x63')][_0x6561('0x70')],'speech':_0x487bb8[_0x6561('0x63')][_0x6561('0x6a')],'providerResponse':JSON[_0x6561('0x3d')](_0x11047e)};return _0x44908e;}}});};exports[_0x6561('0x71')]=function(_0xfdf824,_0x30e2a1,_0x17de17,_0x417bbd){return tilde[_0x6561('0x72')](_0xfdf824,_0x30e2a1,_0x17de17,_0x417bbd)['then'](function(_0x5dc704){try{fs[_0x6561('0x1d')](_0xfdf824);}catch(_0x215799){logger['error'](_0x215799);}logger[_0x6561('0x1a')](_0x6561('0x73'),_0x5dc704[_0x6561('0x4c')]);logger[_0x6561('0x1a')](_0x6561('0x74'),_0x5dc704[_0x6561('0x4e')]);return _0x5dc704;});};exports[_0x6561('0x75')]=function(_0x1ec355,_0x22b23b,_0xa05949,_0x2c68fc,_0x323b60,_0x52bd9d){var _0x4c48a9=path[_0x6561('0x25')](__dirname,_0x6561('0x36'),rs[_0x6561('0x26')](0x4)+'.mp3');var _0x412b10;return aws['polly'](_0x1ec355,_0x22b23b,_0xa05949,_0x2c68fc,_0x323b60,_0x52bd9d,_0x4c48a9)[_0x6561('0x29')](function(){_0x412b10=path[_0x6561('0x25')](__dirname,_0x6561('0x36'),rs[_0x6561('0x26')](0x4)+'.wav');return convertFile(_0x4c48a9,_0x412b10);})['then'](function(){try{fs[_0x6561('0x1d')](_0x4c48a9);fs[_0x6561('0x2a')](_0x412b10,'777');}catch(_0x5c88e2){logger[_0x6561('0x15')](_0x5c88e2);}return _0x412b10[_0x6561('0x2c')]('.')[0x0];});};exports[_0x6561('0x76')]=function(_0x3202c6,_0x10e198,_0x1b5440,_0x51e203,_0x3ca2e1,_0x6057ca){return aws[_0x6561('0x77')](_0x3202c6,_0x10e198,_0x1b5440,_0x51e203,_0x3ca2e1,_0x6057ca)[_0x6561('0x29')](function(_0x2911e2){logger[_0x6561('0x1a')](JSON[_0x6561('0x3d')](_0x2911e2));return _0x2911e2;});};exports[_0x6561('0x78')]=function(_0x81f1a7,_0x16f27e,_0xc29b7b,_0x39c3b4){var _0x3fb707=util[_0x6561('0x79')](_0x6561('0x7a'),ISPEECH_API,_0x81f1a7,encodeURIComponent(_0x16f27e),_0xc29b7b,_0x39c3b4);var _0x93f9e6=path[_0x6561('0x25')](__dirname,_0x6561('0x36'),rs['generate'](0x4)+_0x6561('0x44'));var _0x2bd7b6;return downloadFile(_0x3fb707,_0x93f9e6)[_0x6561('0x29')](function(){_0x2bd7b6=path['resolve'](__dirname,_0x6561('0x36'),rs[_0x6561('0x26')](0x4)+_0x6561('0x27'));return convertFile(_0x93f9e6,_0x2bd7b6);})[_0x6561('0x29')](function(){try{fs['unlink'](_0x93f9e6);fs[_0x6561('0x2a')](_0x2bd7b6,'777');}catch(_0x29be7a){logger[_0x6561('0x15')](_0x29be7a);}return _0x2bd7b6[_0x6561('0x2c')]('.')[0x0];});};exports[_0x6561('0x7b')]=function(_0x5ad0d1,_0x5bc4ea,_0x20476f,_0xf8448b){var _0x1981c1=util[_0x6561('0x79')](_0x6561('0x7c'),ISPEECH_API,_0x5bc4ea,_0x20476f,base64Encode(_0x5ad0d1),_0xf8448b?util[_0x6561('0x79')](_0x6561('0x7d'),encodeURIComponent(_0xf8448b)):'freeform=3');return uploadFile(_0x1981c1)[_0x6561('0x29')](function(_0x37dfc0){return querystring['parse'](_0x37dfc0);});};exports['sestekNDA']=function(_0x324b6b,_0x146d4f){return sestek[_0x6561('0x7e')](_0x324b6b,_0x146d4f)['then'](function(_0x37962e){logger[_0x6561('0x1a')](JSON[_0x6561('0x3d')](_0x37962e));var _0x3c27a5={'speech':_0x37962e[_0x6561('0x7f')],'action':_0x37962e['channelData']?_0x37962e[_0x6561('0x80')][_0x6561('0x81')]:undefined,'actiondata':_0x37962e['channelData']?_0x37962e[_0x6561('0x80')][_0x6561('0x82')]:undefined};if(_0x37962e['channelData']&&_0x37962e[_0x6561('0x80')][_0x6561('0x83')]){return base64Decode(_0x37962e[_0x6561('0x80')][_0x6561('0x83')][_0x6561('0x84')],path[_0x6561('0x25')](__dirname,_0x6561('0x36'),rs[_0x6561('0x26')](0x4)+'.wav'))['then'](function(_0x512879){_0x3c27a5[_0x6561('0x85')]=_0x512879;return _0x3c27a5;});}return _0x3c27a5;});};exports['dirName']=function(){return __dirname;};
\ No newline at end of file
+var _0x83da=['responseId','intentDetectionConfidence','Tilde\x20ASR\x20confidence','awsPolly','polly','awsLex','ispeechTTS','format','%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s','model=%s','freeform=3','sestekNDA','nda','text','channelData','CustomAction','CustomActionData','AudioFromTts','Data','audiofile','dirName','bluebird','dialogflow','http','md5','path','querystring','request-promise','randomstring','sox','google-tts-api','url','parse','util','./google','./sestek','./tilde','../../../config/logger','agi','https://api.ispeech.org/api/rest','protocol','https:','WHAT_EVER','get','statusCode','\x20failed,\x20status\x20code\x20=\x20','statusMessage','request\x20to\x20','createWriteStream','finish','info','finish\x20download\x20file','close','error','download\x20error','pipe','host','data','end','transcode','finish\x20to\x20convert','start','resolve','tmp','generate','.wav','base64','unlink','chmodSync','777','split','googleCloudTTS','https://texttospeech.googleapis.com/v1/','?key=','ssml','input','voice','audioConfig','MP3','text:synthesize','POST','.mp3','from','audioContent','then','googleCloudTTS\x20path','googleTTS','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','utf8','application/x-www-form-urlencoded','f.req=','jQ1olc','stringify','null','generic','slice','parse\x20response\x20failed:\x0a','length','text\x20length\x20limit\x20reached','\x22\x20might\x20not\x20exist','writeFileSync','goggleTTS\x20path','googleASR','asr','uri','results','map','transcript','alternatives','join','confidence','googleASR\x20confidence','catch','name','message','googleDialogflow','textRequest','source','result','resolvedQuery','score','status','code','endConversation','metadata','isFallbackIntent','googleDialogflowV2','SessionsClient','sessionPath','detectIntent','Dialogflow\x20V2\x20response:','queryResult','action','fields','diagnosticInfo','end_conversation','boolValue','fulfillmentText','intent','displayName','queryText'];(function(_0x2ef264,_0x619d5e){var _0xd21738=function(_0x4c05e1){while(--_0x4c05e1){_0x2ef264['push'](_0x2ef264['shift']());}};_0xd21738(++_0x619d5e);}(_0x83da,0x1bc));var _0xa83d=function(_0x2ad792,_0x481da1){_0x2ad792=_0x2ad792-0x0;var _0xd8386e=_0x83da[_0x2ad792];return _0xd8386e;};'use strict';var apiai=require('apiai-promise');var BPromise=require(_0xa83d('0x0'));var dialogflow=require(_0xa83d('0x1'));var fs=require('fs');var http=require(_0xa83d('0x2'));var https=require('https');var md5=require(_0xa83d('0x3'));var path=require(_0xa83d('0x4'));var querystring=require(_0xa83d('0x5'));var rp=require(_0xa83d('0x6'));var rs=require(_0xa83d('0x7'));var sox=require(_0xa83d('0x8'));var tts=require(_0xa83d('0x9'));var urlParse=require(_0xa83d('0xa'))[_0xa83d('0xb')];var util=require(_0xa83d('0xc'));var aws=require('./aws');var google=require(_0xa83d('0xd'));var sestek=require(_0xa83d('0xe'));var tilde=require(_0xa83d('0xf'));var logger=require(_0xa83d('0x10'))(_0xa83d('0x11'));var ISPEECH_API=_0xa83d('0x12');function downloadFile(_0x3d81e4,_0x15f3c8){return new BPromise(function(_0xdf13b,_0x365a03){var _0x418b9d=urlParse(_0x3d81e4);var _0x238272=_0x418b9d[_0xa83d('0x13')]===_0xa83d('0x14')?https:http;var _0x36320c={'host':_0x418b9d['host'],'path':_0x418b9d['path'],'headers':{'user-agent':_0xa83d('0x15')}};_0x238272[_0xa83d('0x16')](_0x36320c,function(_0x4359b8){if(_0x4359b8[_0xa83d('0x17')]!==0xc8){logger['error']('request\x20to\x20'+_0x3d81e4+_0xa83d('0x18')+_0x4359b8[_0xa83d('0x17')]+'\x20('+_0x4359b8[_0xa83d('0x19')]+')');_0x365a03(new Error(_0xa83d('0x1a')+_0x3d81e4+'\x20failed,\x20status\x20code\x20=\x20'+_0x4359b8[_0xa83d('0x17')]+'\x20('+_0x4359b8[_0xa83d('0x19')]+')'));return;}var _0x17cc51=fs[_0xa83d('0x1b')](_0x15f3c8);_0x17cc51['on'](_0xa83d('0x1c'),function(){logger[_0xa83d('0x1d')](_0xa83d('0x1e'));_0x17cc51[_0xa83d('0x1f')](_0xdf13b);});_0x17cc51['on'](_0xa83d('0x20'),function(_0x44533b){fs['unlink'](_0x15f3c8);logger['error'](_0xa83d('0x21'),_0x44533b);_0x365a03(_0x44533b);});_0x4359b8[_0xa83d('0x22')](_0x17cc51);})['on'](_0xa83d('0x20'),function(_0x2f4366){logger[_0xa83d('0x20')](_0x2f4366);_0x365a03(_0x2f4366);})['end']();});}function uploadFile(_0x5862e2){return new BPromise(function(_0x33f676,_0x1c86db){var _0x542588=urlParse(_0x5862e2);var _0xa4ae92=_0x542588['protocol']===_0xa83d('0x14')?https:http;var _0x312271={'host':_0x542588[_0xa83d('0x23')],'path':_0x542588[_0xa83d('0x4')],'headers':{'user-agent':_0xa83d('0x15')}};_0xa4ae92[_0xa83d('0x16')](_0x312271,function(_0x680e16){if(_0x680e16[_0xa83d('0x17')]!==0xc8){_0x1c86db(new Error(_0xa83d('0x1a')+_0x5862e2+_0xa83d('0x18')+_0x680e16[_0xa83d('0x17')]+'\x20('+_0x680e16[_0xa83d('0x19')]+')'));return;}var _0x4b0749='';_0x680e16['on'](_0xa83d('0x24'),function(_0x73969e){_0x4b0749+=_0x73969e;});_0x680e16['on'](_0xa83d('0x25'),function(){_0x33f676(_0x4b0749);});})['on']('error',function(_0x5bbcc1){_0x1c86db(_0x5bbcc1);})[_0xa83d('0x25')]();});}function convertFile(_0x149659,_0xca85d7){return new BPromise(function(_0x4e9749,_0x1c2f79){var _0x2f6b2d=sox[_0xa83d('0x26')](_0x149659,_0xca85d7,{'sampleRate':0x1f40,'format':'wav','channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x2f6b2d['on']('error',function(_0x35dbc3){logger[_0xa83d('0x20')]('error\x20convert',_0x35dbc3);_0x1c2f79(_0x35dbc3);});_0x2f6b2d['on'](_0xa83d('0x25'),function(){logger['info'](_0xa83d('0x27'));_0x4e9749();});_0x2f6b2d[_0xa83d('0x28')]();});}function base64Decode(_0xf67a9a,_0x20aa13){var _0x5b1131=path[_0xa83d('0x29')](__dirname,_0xa83d('0x2a'),rs[_0xa83d('0x2b')](0x4)+_0xa83d('0x2c'));fs['writeFileSync'](_0x5b1131,_0xf67a9a,_0xa83d('0x2d'));return convertFile(_0x5b1131,_0x20aa13)['then'](function(){try{fs[_0xa83d('0x2e')](_0x5b1131);fs[_0xa83d('0x2f')](_0x20aa13,_0xa83d('0x30'));}catch(_0x1c3a2f){logger[_0xa83d('0x20')](_0x1c3a2f);}return _0x20aa13[_0xa83d('0x31')]('.')[0x0];});}function base64Encode(_0x1b6433){var _0x2855e8=fs['readFileSync'](_0x1b6433);return new Buffer(_0x2855e8)['toString'](_0xa83d('0x2d'));}exports[_0xa83d('0x32')]=function(_0x426f93,_0x372abd,_0x34e41d,_0x15890c,_0x3804d0,_0xa22a14){var _0x3d0bdc,_0x8e1325;var _0x100a4a=_0xa83d('0x33');var _0x2d8a09=_0xa83d('0x34')+_0x426f93;var _0x458bc3={};if(_0x372abd===_0xa83d('0x35')){_0x458bc3[_0xa83d('0x36')]={'ssml':_0x34e41d};}else{_0x458bc3[_0xa83d('0x36')]={'text':_0x34e41d};};_0x458bc3[_0xa83d('0x37')]={'languageCode':_0x15890c,'ssmlGender':_0x3804d0};_0x458bc3[_0xa83d('0x38')]={'audioEncoding':_0xa83d('0x39'),'sampleRateHertz':0x1f40};var _0x52d7c8={'url':_0x100a4a+_0xa83d('0x3a')+_0x2d8a09,'method':_0xa83d('0x3b'),'json':!![],'body':_0x458bc3};return rp(_0x52d7c8)['then'](function(_0x3d313e){return new BPromise(function(_0x4b4eb8,_0x5ff460){_0x3d0bdc=path[_0xa83d('0x29')](__dirname,_0xa83d('0x2a'),rs[_0xa83d('0x2b')](0x4)+_0xa83d('0x3c'));var _0x3d7a2a=Buffer[_0xa83d('0x3d')](_0x3d313e[_0xa83d('0x3e')],_0xa83d('0x2d'));return fs['writeFile'](_0x3d0bdc,_0x3d7a2a,function(_0x3e54aa){_0x5ff460(_0x3e54aa);},function(_0x4e3587){fs['chmodSync'](_0x3d0bdc,_0xa83d('0x30'));_0x4b4eb8(_0x4e3587);});});})['then'](function(_0x11bdb4){_0x8e1325=path[_0xa83d('0x29')](__dirname,_0xa83d('0x2a'),rs[_0xa83d('0x2b')](0x4)+_0xa83d('0x2c'));return convertFile(_0x3d0bdc,_0x8e1325);})[_0xa83d('0x3f')](function(){try{fs['unlink'](_0x3d0bdc);fs[_0xa83d('0x2f')](_0x8e1325,'777');}catch(_0x4cc37e){logger[_0xa83d('0x20')](_0x4cc37e);}logger[_0xa83d('0x1d')](_0xa83d('0x40'),_0x8e1325['split']('.')[0x0]);return _0x8e1325[_0xa83d('0x31')]('.')[0x0];});};exports[_0xa83d('0x41')]=function(_0x515a8e,_0x5c688d){var _0x44867d=_0xa83d('0x42');var _0x4aae54,_0x343a67;var _0x43358f;var _0x27e41b={'encoding':_0xa83d('0x43'),'method':'POST','timeout':0x2710,'url':_0x44867d,'headers':{'Content-Type':_0xa83d('0x44')},'body':_0xa83d('0x45')+encodeURIComponent(JSON['stringify']([[[_0xa83d('0x46'),JSON[_0xa83d('0x47')]([_0x515a8e,_0x5c688d||'en',![],_0xa83d('0x48')]),null,_0xa83d('0x49')]]]))};return rp(_0x27e41b)[_0xa83d('0x3f')](function(_0x1992ae){try{_0x43358f=eval(_0x1992ae[_0xa83d('0x4a')](0x5))[0x0][0x2];}catch(_0x1fc7b3){throw new Error(_0xa83d('0x4b')+_0x1992ae[_0xa83d('0x24')]);}if(!_0x43358f){if(_0x515a8e[_0xa83d('0x4c')]>0xc8){throw new Error(_0xa83d('0x4d'));}else{throw new Error('lang\x20\x22'+_0x5c688d+_0xa83d('0x4e'));}}try{_0x43358f=eval(_0x43358f)[0x0];}catch(_0x35e57b){throw new Error(_0xa83d('0x4b')+res['data']);}const _0x4476c1=_0x43358f;_0x4aae54=path['resolve'](__dirname,_0xa83d('0x2a'),rs['generate'](0x4)+_0xa83d('0x3c'));fs[_0xa83d('0x4f')](_0x4aae54,_0x43358f,{'encoding':_0xa83d('0x2d')});_0x343a67=path[_0xa83d('0x29')](__dirname,'tmp',rs['generate'](0x4)+_0xa83d('0x2c'));return convertFile(_0x4aae54,_0x343a67);})['then'](function(){try{fs[_0xa83d('0x2e')](_0x4aae54);fs[_0xa83d('0x2f')](_0x343a67,_0xa83d('0x30'));}catch(_0x3f0639){logger[_0xa83d('0x20')](_0x3f0639);}logger[_0xa83d('0x1d')](_0xa83d('0x50'),_0x343a67[_0xa83d('0x31')]('.')[0x0]);return _0x343a67['split']('.')[0x0];});};exports[_0xa83d('0x51')]=function(_0x44f802,_0x32499c,_0x5b36cb){return google[_0xa83d('0x52')](_0x44f802,_0x32499c,_0x5b36cb)[_0xa83d('0x3f')](function(_0x456e7d){logger[_0xa83d('0x1d')](_0x456e7d[_0xa83d('0x53')]);return rp(_0x456e7d);})[_0xa83d('0x3f')](function(_0x50cd99){var _0x3aa6e4='';var _0x57f09a=0x0;try{fs[_0xa83d('0x2e')](_0x44f802);}catch(_0x3fb34b){logger['error'](_0x3fb34b);}if(_0x50cd99&&_0x50cd99[_0xa83d('0x54')]){_0x3aa6e4=_0x50cd99[_0xa83d('0x54')][_0xa83d('0x55')](function(_0x547e1a){return _0x547e1a&&_0x547e1a['alternatives'][0x0]&&_0x547e1a['alternatives'][0x0][_0xa83d('0x56')]?_0x547e1a[_0xa83d('0x57')][0x0][_0xa83d('0x56')]:'';})[_0xa83d('0x58')]('\x0a');_0x57f09a=_0x50cd99[_0xa83d('0x54')][_0xa83d('0x55')](function(_0x298cfa){return _0x298cfa&&_0x298cfa['alternatives'][0x0]&&_0x298cfa['alternatives'][0x0]['confidence']?_0x298cfa[_0xa83d('0x57')][0x0][_0xa83d('0x59')]:0x0;})[_0xa83d('0x58')]('\x0a');}logger[_0xa83d('0x1d')]('googleASR\x20transcription',_0x3aa6e4);logger[_0xa83d('0x1d')](_0xa83d('0x5a'),_0x57f09a);return{'transcript':_0x3aa6e4,'confidence':_0x57f09a};})[_0xa83d('0x5b')](function(_0xea8557){logger[_0xa83d('0x20')]('[%s]\x20%s:%s',_0xea8557[_0xa83d('0x17')],_0xea8557[_0xa83d('0x5c')],_0xea8557[_0xa83d('0x5d')]);});};exports[_0xa83d('0x5e')]=function(_0x4cc9e1,_0x5fa917,_0x22d6af,_0xc05238){var _0x51a275=apiai(_0x5fa917,{'language':_0xc05238||'en'});return _0x51a275[_0xa83d('0x5f')](_0x22d6af,{'sessionId':md5(_0x4cc9e1)})[_0xa83d('0x3f')](function(_0x2d18e0){logger[_0xa83d('0x1d')](JSON['stringify'](_0x2d18e0));return{'source':_0x2d18e0['result'][_0xa83d('0x60')],'resolvedQuery':_0x2d18e0[_0xa83d('0x61')][_0xa83d('0x62')],'action':_0x2d18e0[_0xa83d('0x61')]['action'],'actionIncomplete':_0x2d18e0[_0xa83d('0x61')]['actionIncomplete'],'speech':_0x2d18e0[_0xa83d('0x61')]['fulfillment']['speech'],'score':_0x2d18e0[_0xa83d('0x61')][_0xa83d('0x63')],'statusCode':_0x2d18e0[_0xa83d('0x64')][_0xa83d('0x65')],'endConversation':_0x2d18e0[_0xa83d('0x61')]['metadata'][_0xa83d('0x66')]||![],'isFallbackIntent':_0x2d18e0['result'][_0xa83d('0x67')][_0xa83d('0x68')]};});};exports[_0xa83d('0x69')]=function(_0x565b98,_0x3d4289,_0x8ca105,_0x26d172,_0x3722f0,_0x30916d){var _0x1f10e2=_0x26d172['replace'](/\\n/g,'\x0a');var _0x5d020e={'credentials':{'private_key':_0x1f10e2,'client_email':_0x8ca105}};var _0x3e5dcb=new dialogflow[(_0xa83d('0x6a'))](_0x5d020e);var _0x143143=_0x3e5dcb[_0xa83d('0x6b')](_0x3d4289,md5(_0x565b98));var _0x25634d={'session':_0x143143,'queryInput':{'text':{'text':_0x3722f0,'languageCode':_0x30916d}}};return _0x3e5dcb[_0xa83d('0x6c')](_0x25634d)[_0xa83d('0x3f')](function(_0x47099f){if(_0x47099f&&_0x47099f['length']){logger[_0xa83d('0x1d')](_0xa83d('0x6d'),JSON[_0xa83d('0x47')](_0x47099f));var _0x31d918=_0x47099f[0x0];if(_0x31d918){var _0x29be35={'action':_0x31d918[_0xa83d('0x6e')][_0xa83d('0x6f')],'allRequiredParamsPresent':_0x31d918[_0xa83d('0x6e')]['allRequiredParamsPresent'],'endConversation':_0x31d918['queryResult']['diagnosticInfo']&&_0x31d918[_0xa83d('0x6e')]['diagnosticInfo'][_0xa83d('0x70')]?_0x31d918[_0xa83d('0x6e')][_0xa83d('0x71')][_0xa83d('0x70')][_0xa83d('0x72')][_0xa83d('0x73')]:![],'fulfillmentText':_0x31d918['queryResult'][_0xa83d('0x74')],'intentName':_0x31d918[_0xa83d('0x6e')][_0xa83d('0x75')][_0xa83d('0x5c')],'intentDisplayName':_0x31d918[_0xa83d('0x6e')][_0xa83d('0x75')][_0xa83d('0x76')],'isFallbackIntent':_0x31d918[_0xa83d('0x6e')]['intent']['isFallback'],'languageCode':_0x31d918['queryResult']['languageCode'],'queryText':_0x31d918[_0xa83d('0x6e')][_0xa83d('0x77')],'responseId':_0x31d918[_0xa83d('0x78')],'score':_0x31d918['queryResult'][_0xa83d('0x79')],'speech':_0x31d918[_0xa83d('0x6e')][_0xa83d('0x74')],'providerResponse':JSON[_0xa83d('0x47')](_0x47099f)};return _0x29be35;}}});};exports['tildeASR']=function(_0x54af16,_0x577cf0,_0x2441bf,_0x1a24d0){return tilde[_0xa83d('0x52')](_0x54af16,_0x577cf0,_0x2441bf,_0x1a24d0)['then'](function(_0x5b6233){try{fs['unlink'](_0x54af16);}catch(_0x5d92ef){logger[_0xa83d('0x20')](_0x5d92ef);}logger['info']('Tilde\x20ASR\x20transcription',_0x5b6233['transcript']);logger[_0xa83d('0x1d')](_0xa83d('0x7a'),_0x5b6233[_0xa83d('0x59')]);return _0x5b6233;});};exports[_0xa83d('0x7b')]=function(_0x4e173f,_0x20268c,_0x27d14e,_0x2ded6c,_0x1abb7c,_0x564195){var _0x494e22=path[_0xa83d('0x29')](__dirname,_0xa83d('0x2a'),rs[_0xa83d('0x2b')](0x4)+'.mp3');var _0x529114;return aws[_0xa83d('0x7c')](_0x4e173f,_0x20268c,_0x27d14e,_0x2ded6c,_0x1abb7c,_0x564195,_0x494e22)['then'](function(){_0x529114=path[_0xa83d('0x29')](__dirname,_0xa83d('0x2a'),rs['generate'](0x4)+'.wav');return convertFile(_0x494e22,_0x529114);})[_0xa83d('0x3f')](function(){try{fs[_0xa83d('0x2e')](_0x494e22);fs[_0xa83d('0x2f')](_0x529114,_0xa83d('0x30'));}catch(_0x47c2f9){logger[_0xa83d('0x20')](_0x47c2f9);}return _0x529114[_0xa83d('0x31')]('.')[0x0];});};exports[_0xa83d('0x7d')]=function(_0x81018b,_0x3a8ca4,_0xdb9492,_0x14c682,_0x82bfa7,_0x43c80d){return aws['lex'](_0x81018b,_0x3a8ca4,_0xdb9492,_0x14c682,_0x82bfa7,_0x43c80d)['then'](function(_0x5a7ac5){logger[_0xa83d('0x1d')](JSON[_0xa83d('0x47')](_0x5a7ac5));return _0x5a7ac5;});};exports[_0xa83d('0x7e')]=function(_0x367313,_0x11b5a3,_0x58bf5f,_0x125cba){var _0x5977d5=util[_0xa83d('0x7f')]('%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3',ISPEECH_API,_0x367313,encodeURIComponent(_0x11b5a3),_0x58bf5f,_0x125cba);var _0x539ee7=path[_0xa83d('0x29')](__dirname,_0xa83d('0x2a'),rs['generate'](0x4)+_0xa83d('0x3c'));var _0x11da13;return downloadFile(_0x5977d5,_0x539ee7)[_0xa83d('0x3f')](function(){_0x11da13=path[_0xa83d('0x29')](__dirname,_0xa83d('0x2a'),rs[_0xa83d('0x2b')](0x4)+_0xa83d('0x2c'));return convertFile(_0x539ee7,_0x11da13);})['then'](function(){try{fs[_0xa83d('0x2e')](_0x539ee7);fs['chmodSync'](_0x11da13,_0xa83d('0x30'));}catch(_0x2f69be){logger[_0xa83d('0x20')](_0x2f69be);}return _0x11da13['split']('.')[0x0];});};exports['ispeechASR']=function(_0x522890,_0x298abe,_0x5f2fed,_0x1026f4){var _0x442610=util[_0xa83d('0x7f')](_0xa83d('0x80'),ISPEECH_API,_0x298abe,_0x5f2fed,base64Encode(_0x522890),_0x1026f4?util['format'](_0xa83d('0x81'),encodeURIComponent(_0x1026f4)):_0xa83d('0x82'));return uploadFile(_0x442610)[_0xa83d('0x3f')](function(_0x542739){return querystring[_0xa83d('0xb')](_0x542739);});};exports[_0xa83d('0x83')]=function(_0x7f916d,_0x1d9117){return sestek[_0xa83d('0x84')](_0x7f916d,_0x1d9117)[_0xa83d('0x3f')](function(_0x4e779d){logger['info'](JSON['stringify'](_0x4e779d));var _0x5b88a0={'speech':_0x4e779d[_0xa83d('0x85')],'action':_0x4e779d['channelData']?_0x4e779d[_0xa83d('0x86')][_0xa83d('0x87')]:undefined,'actiondata':_0x4e779d[_0xa83d('0x86')]?_0x4e779d['channelData'][_0xa83d('0x88')]:undefined};if(_0x4e779d[_0xa83d('0x86')]&&_0x4e779d['channelData']['AudioFromTts']){return base64Decode(_0x4e779d['channelData'][_0xa83d('0x89')][_0xa83d('0x8a')],path['resolve'](__dirname,_0xa83d('0x2a'),rs['generate'](0x4)+'.wav'))[_0xa83d('0x3f')](function(_0x20e789){_0x5b88a0[_0xa83d('0x8b')]=_0x20e789;return _0x5b88a0;});}return _0x5b88a0;});};exports[_0xa83d('0x8c')]=function(){return __dirname;};
\ No newline at end of file
index bffc237..05a22fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc433=['exports','./nda'];(function(_0x1c7878,_0x2132d7){var _0x5395a5=function(_0x28f62e){while(--_0x28f62e){_0x1c7878['push'](_0x1c7878['shift']());}};_0x5395a5(++_0x2132d7);}(_0xc433,0x1a9));var _0x3c43=function(_0x521929,_0x479be5){_0x521929=_0x521929-0x0;var _0x632436=_0xc433[_0x521929];return _0x632436;};var nda=require(_0x3c43('0x0'));module[_0x3c43('0x1')]={'nda':nda};
\ No newline at end of file
+var _0xd18f=['./nda'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xd18f,0xc9));var _0xfd18=function(_0x5bb802,_0xd5cb1f){_0x5bb802=_0x5bb802-0x0;var _0x1b60ba=_0xd18f[_0x5bb802];return _0x1b60ba;};var nda=require(_0xfd18('0x0'));module['exports']={'nda':nda};
\ No newline at end of file
index d7f18eb..9364129 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7035=['project','body','channelData','ProjectName','ndagenerate_audio','AudioOutputSettings','audio/wav','custom_action','CustomAction','custom_action_data','CustomActionData','info','request-promise','../../../../../config/logger','agi','POST','resolve','/token','password','then','ndaactivity_type','Nda','calleridname','dnid','extension','Bearer\x20'];(function(_0x88435d,_0x1de21c){var _0x30ddcc=function(_0x373259){while(--_0x373259){_0x88435d['push'](_0x88435d['shift']());}};_0x30ddcc(++_0x1de21c);}(_0x7035,0x15e));var _0x5703=function(_0xd4371b,_0x3b2b6e){_0xd4371b=_0xd4371b-0x0;var _0x5e4fa3=_0x7035[_0xd4371b];return _0x5e4fa3;};'use strict';var rp=require(_0x5703('0x0'));var url=require('url');var logger=require(_0x5703('0x1'))(_0x5703('0x2'));module['exports']=function(_0xcc3f27,_0x4183e5){var _0x431dc3={'method':_0x5703('0x3'),'uri':url[_0x5703('0x4')](_0x4183e5['ndauth_url'],_0x5703('0x5')),'form':{'grant_type':_0x5703('0x6'),'username':_0x4183e5['username'],'password':_0x4183e5[_0x5703('0x6')]},'json':!![]};return rp(_0x431dc3)[_0x5703('0x7')](function(_0x401d33){var _0x291988={'method':_0x5703('0x3'),'uri':url[_0x5703('0x4')](_0x4183e5['ndassistant_url'],'/api/NaturalDialogAssistant/v1/Run'),'body':{'type':_0x4183e5[_0x5703('0x8')]||'message','channelId':_0x5703('0x9'),'conversation':{'id':_0xcc3f27['uniqueid']},'from':{'id':_0xcc3f27['callerid'],'name':_0xcc3f27[_0x5703('0xa')]},'recipient':{'id':_0xcc3f27[_0x5703('0xb')],'name':_0xcc3f27[_0x5703('0xc')]},'text':_0x4183e5['text'],'channelData':{}},'headers':{'Authorization':_0x5703('0xd')+_0x401d33['access_token']},'json':!![]};if(_0x4183e5[_0x5703('0xe')]){_0x291988[_0x5703('0xf')][_0x5703('0x10')][_0x5703('0x11')]=_0x4183e5[_0x5703('0xe')];}if(_0x4183e5[_0x5703('0x12')]=='1'){_0x291988[_0x5703('0xf')][_0x5703('0x10')][_0x5703('0x13')]={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':_0x5703('0x14')};}if(_0x4183e5[_0x5703('0x15')]){_0x291988['body'][_0x5703('0x10')][_0x5703('0x16')]=_0x4183e5[_0x5703('0x15')];if(_0x4183e5[_0x5703('0x17')]){_0x291988[_0x5703('0xf')][_0x5703('0x10')][_0x5703('0x18')]=_0x4183e5[_0x5703('0x17')];}}logger[_0x5703('0x19')](JSON['stringify'](_0x291988));return rp(_0x291988);});};
\ No newline at end of file
+var _0x222f=['custom_action','custom_action_data','info','stringify','request-promise','url','../../../../../config/logger','agi','POST','resolve','/token','username','password','ndassistant_url','/api/NaturalDialogAssistant/v1/Run','ndaactivity_type','message','Nda','callerid','calleridname','dnid','extension','Bearer\x20','access_token','project','body','channelData','ProjectName','ndagenerate_audio','AudioOutputSettings','audio/wav','CustomAction'];(function(_0x425b66,_0xd3428b){var _0xeb8a62=function(_0x486afd){while(--_0x486afd){_0x425b66['push'](_0x425b66['shift']());}};_0xeb8a62(++_0xd3428b);}(_0x222f,0x1a4));var _0xf222=function(_0x458e3e,_0x576c7f){_0x458e3e=_0x458e3e-0x0;var _0x4bb0ee=_0x222f[_0x458e3e];return _0x4bb0ee;};'use strict';var rp=require(_0xf222('0x0'));var url=require(_0xf222('0x1'));var logger=require(_0xf222('0x2'))(_0xf222('0x3'));module['exports']=function(_0x4b4237,_0x195de1){var _0x233e95={'method':_0xf222('0x4'),'uri':url[_0xf222('0x5')](_0x195de1['ndauth_url'],_0xf222('0x6')),'form':{'grant_type':'password','username':_0x195de1[_0xf222('0x7')],'password':_0x195de1[_0xf222('0x8')]},'json':!![]};return rp(_0x233e95)['then'](function(_0xf5a105){var _0x302d7a={'method':'POST','uri':url[_0xf222('0x5')](_0x195de1[_0xf222('0x9')],_0xf222('0xa')),'body':{'type':_0x195de1[_0xf222('0xb')]||_0xf222('0xc'),'channelId':_0xf222('0xd'),'conversation':{'id':_0x4b4237['uniqueid']},'from':{'id':_0x4b4237[_0xf222('0xe')],'name':_0x4b4237[_0xf222('0xf')]},'recipient':{'id':_0x4b4237[_0xf222('0x10')],'name':_0x4b4237[_0xf222('0x11')]},'text':_0x195de1['text'],'channelData':{}},'headers':{'Authorization':_0xf222('0x12')+_0xf5a105[_0xf222('0x13')]},'json':!![]};if(_0x195de1[_0xf222('0x14')]){_0x302d7a[_0xf222('0x15')][_0xf222('0x16')][_0xf222('0x17')]=_0x195de1[_0xf222('0x14')];}if(_0x195de1[_0xf222('0x18')]=='1'){_0x302d7a['body']['channelData'][_0xf222('0x19')]={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':_0xf222('0x1a')};}if(_0x195de1['custom_action']){_0x302d7a[_0xf222('0x15')][_0xf222('0x16')][_0xf222('0x1b')]=_0x195de1[_0xf222('0x1c')];if(_0x195de1[_0xf222('0x1d')]){_0x302d7a[_0xf222('0x15')][_0xf222('0x16')]['CustomActionData']=_0x195de1[_0xf222('0x1d')];}}logger[_0xf222('0x1e')](JSON[_0xf222('0x1f')](_0x302d7a));return rp(_0x302d7a);});};
\ No newline at end of file
index 19e57de..c334721 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3285=['./lib/api','exports'];(function(_0x34e461,_0x5c1242){var _0x513dfb=function(_0x58f66b){while(--_0x58f66b){_0x34e461['push'](_0x34e461['shift']());}};_0x513dfb(++_0x5c1242);}(_0x3285,0x146));var _0x5328=function(_0x432fca,_0xb0b1b5){_0x432fca=_0x432fca-0x0;var _0x3adba4=_0x3285[_0x432fca];return _0x3adba4;};'use strict';var asr=require(_0x5328('0x0'));module[_0x5328('0x1')]=function(_0x19be44,_0x27e55e,_0x52af20,_0x1d4570){return asr(_0x19be44,_0x27e55e,_0x52af20,_0x1d4570);};
\ No newline at end of file
+var _0xb8c4=['./lib/api'];(function(_0x1f1366,_0x8232b9){var _0x155396=function(_0x56bfa3){while(--_0x56bfa3){_0x1f1366['push'](_0x1f1366['shift']());}};_0x155396(++_0x8232b9);}(_0xb8c4,0x109));var _0x4b8c=function(_0x3a7258,_0x4f9d4f){_0x3a7258=_0x3a7258-0x0;var _0x2f6012=_0xb8c4[_0x3a7258];return _0x2f6012;};'use strict';var asr=require(_0x4b8c('0x0'));module['exports']=function(_0x3b5905,_0xee316a,_0x56de1b,_0x189dcd){return asr(_0x3b5905,_0xee316a,_0x56de1b,_0x189dcd);};
\ No newline at end of file
index 8ed36e2..08fb529 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f26=['info','wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE','No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech','sha1','digest','hex','unix','send','stringify','close','EOS','error','terminate','parse','status','result','hypotheses','transcript','likelihood','Success.','Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.','Not\x20available.\x20Max\x20load\x20limit\x20reached.','Authentication\x20failed.','All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.','Tilde\x20ASR\x20parse\x20error','Close\x20Tilde\x20ASR\x20socket','Error\x20Tilde\x20ASR\x20socket','isNil','isObject','message','lodash','moment','crypto','../../../../../../config/logger','exports'];(function(_0x2067e9,_0x5e6a97){var _0x280ce4=function(_0x2eca23){while(--_0x2eca23){_0x2067e9['push'](_0x2067e9['shift']());}};_0x280ce4(++_0x5e6a97);}(_0x6f26,0xcd));var _0x66f2=function(_0x1a2ebe,_0x16326c){_0x1a2ebe=_0x1a2ebe-0x0;var _0x38831e=_0x6f26[_0x1a2ebe];return _0x38831e;};'use strict';var BPromise=require('bluebird');var _=require(_0x66f2('0x0'));var fs=require('fs');var WebSocket=require('ws');var moment=require(_0x66f2('0x1'));var crypto=require(_0x66f2('0x2'));var logger=require(_0x66f2('0x3'))('agi');module[_0x66f2('0x4')]=function(_0x12979c,_0x4eb590,_0x42e307,_0x565eaa){return new BPromise(function(_0x396c10,_0x17422a){logger[_0x66f2('0x5')]('Tilde\x20URI',_0x565eaa||_0x66f2('0x6'));var _0x37b3c1=new WebSocket(_0x565eaa||_0x66f2('0x6'),{'perMessageDeflate':![]});var _0x5b92fc='';var _0x2b4433='0';var _0x1e0fd6='1';var _0x2e4f56=_0x66f2('0x7');function _0x334a7f(_0x3588ac){var _0x62c445=crypto['createHash'](_0x66f2('0x8'));_0x62c445['update'](_0x3588ac);return _0x62c445[_0x66f2('0x9')](_0x66f2('0xa'));}function _0x43da1e(){try{logger[_0x66f2('0x5')]('Open\x20Tilde\x20ASR\x20socket');var _0x2218f3=moment()[_0x66f2('0xb')]();var _0x3df00d=_0x334a7f(_0x2218f3+_0x4eb590+_0x42e307);_0x37b3c1[_0x66f2('0xc')](JSON[_0x66f2('0xd')]({'appID':_0x4eb590,'timestamp':_0x2218f3,'appKey':_0x3df00d}));var _0x569403=fs['createReadStream'](_0x12979c);_0x569403['on']('data',function(_0x29e292){_0x37b3c1['send'](_0x29e292);});_0x569403['on'](_0x66f2('0xe'),function(){_0x37b3c1['send'](_0x66f2('0xf'));});}catch(_0x5e26d){logger[_0x66f2('0x10')]('Tilde\x20ASR\x20send\x20error',JSON['stringify'](_0x5e26d));_0x37b3c1[_0x66f2('0x11')]();}}function _0x4c333b(_0x2b4aaa){try{if(_0x2b4aaa){var _0x890efa=JSON[_0x66f2('0x12')](_0x2b4aaa);switch(_0x890efa[_0x66f2('0x13')]){case 0x0:if(_0x890efa['result']){if(_0x890efa[_0x66f2('0x14')]['final']){logger[_0x66f2('0x5')]('Tilde\x20ASR\x20hypoteses',JSON[_0x66f2('0xd')](_0x890efa[_0x66f2('0x14')][_0x66f2('0x15')]));_0x5b92fc=_0x890efa[_0x66f2('0x14')][_0x66f2('0x15')][0x0][_0x66f2('0x16')];_0x2b4433=_0x890efa['result']['hypotheses'][0x0][_0x66f2('0x17')];_0x1e0fd6='0';_0x2e4f56=_0x66f2('0x18');_0x37b3c1[_0x66f2('0x11')]();}}break;case 0x1:logger[_0x66f2('0x5')]('No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech');_0x1e0fd6='1';_0x2e4f56=_0x66f2('0x7');break;case 0x2:logger[_0x66f2('0x5')](_0x66f2('0x19'));_0x1e0fd6='2';_0x2e4f56='Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.';break;case 0x9:logger[_0x66f2('0x5')](_0x66f2('0x1a'));_0x1e0fd6='9';_0x2e4f56=_0x66f2('0x1a');break;case 0xa:logger[_0x66f2('0x5')](_0x66f2('0x1b'));_0x1e0fd6='10';_0x2e4f56=_0x66f2('0x1b');break;case 0xb:logger[_0x66f2('0x5')](_0x66f2('0x1c'));_0x1e0fd6='11';_0x2e4f56=_0x66f2('0x1c');}}}catch(_0x270b76){logger[_0x66f2('0x10')](_0x66f2('0x1d'),JSON[_0x66f2('0xd')](_0x270b76));_0x37b3c1[_0x66f2('0x11')]();}}function _0x168aba(){logger[_0x66f2('0x5')](_0x66f2('0x1e'));_0x396c10({'transcript':_0x5b92fc,'confidence':_0x2b4433,'status':_0x1e0fd6,'status_message':_0x2e4f56});}function _0x5a7588(_0x39b1ab){logger['error'](_0x66f2('0x1f'));if(!_[_0x66f2('0x20')](_0x39b1ab)){logger['error'](_[_0x66f2('0x21')](_0x39b1ab)?JSON[_0x66f2('0xd')](_0x39b1ab):_0x39b1ab);}}_0x37b3c1['on']('open',_0x43da1e);_0x37b3c1['on'](_0x66f2('0x22'),_0x4c333b);_0x37b3c1['on'](_0x66f2('0xe'),_0x168aba);_0x37b3c1['on']('error',_0x5a7588);});};
\ No newline at end of file
+var _0x8e0b=['lodash','crypto','../../../../../../config/logger','agi','exports','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','sha1','update','digest','hex','Open\x20Tilde\x20ASR\x20socket','send','stringify','data','close','error','terminate','parse','status','result','Tilde\x20ASR\x20hypoteses','hypotheses','likelihood','Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.','Not\x20available.\x20Max\x20load\x20limit\x20reached.','Authentication\x20failed.','Close\x20Tilde\x20ASR\x20socket','Error\x20Tilde\x20ASR\x20socket','isNil','isObject','open','message'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x8e0b,0x8c));var _0xb8e0=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x8e0b[_0x3dd15e];return _0x231fd0;};'use strict';var BPromise=require('bluebird');var _=require(_0xb8e0('0x0'));var fs=require('fs');var WebSocket=require('ws');var moment=require('moment');var crypto=require(_0xb8e0('0x1'));var logger=require(_0xb8e0('0x2'))(_0xb8e0('0x3'));module[_0xb8e0('0x4')]=function(_0x20147f,_0x3a1f26,_0x30bdd4,_0x2382fb){return new BPromise(function(_0xa86a8,_0x42c59d){logger[_0xb8e0('0x5')](_0xb8e0('0x6'),_0x2382fb||_0xb8e0('0x7'));var _0x1af3f3=new WebSocket(_0x2382fb||_0xb8e0('0x7'),{'perMessageDeflate':![]});var _0x343f3f='';var _0xf72b36='0';var _0x22d22c='1';var _0x45a682=_0xb8e0('0x8');function _0x520e61(_0x31e1a6){var _0x34af8f=crypto['createHash'](_0xb8e0('0x9'));_0x34af8f[_0xb8e0('0xa')](_0x31e1a6);return _0x34af8f[_0xb8e0('0xb')](_0xb8e0('0xc'));}function _0x44e034(){try{logger[_0xb8e0('0x5')](_0xb8e0('0xd'));var _0x4223c3=moment()['unix']();var _0xc28c0d=_0x520e61(_0x4223c3+_0x3a1f26+_0x30bdd4);_0x1af3f3[_0xb8e0('0xe')](JSON[_0xb8e0('0xf')]({'appID':_0x3a1f26,'timestamp':_0x4223c3,'appKey':_0xc28c0d}));var _0x1eadad=fs['createReadStream'](_0x20147f);_0x1eadad['on'](_0xb8e0('0x10'),function(_0x56318d){_0x1af3f3['send'](_0x56318d);});_0x1eadad['on'](_0xb8e0('0x11'),function(){_0x1af3f3[_0xb8e0('0xe')]('EOS');});}catch(_0x5a8b2d){logger[_0xb8e0('0x12')]('Tilde\x20ASR\x20send\x20error',JSON[_0xb8e0('0xf')](_0x5a8b2d));_0x1af3f3[_0xb8e0('0x13')]();}}function _0x92f0e8(_0x24ea60){try{if(_0x24ea60){var _0x54f02c=JSON[_0xb8e0('0x14')](_0x24ea60);switch(_0x54f02c[_0xb8e0('0x15')]){case 0x0:if(_0x54f02c[_0xb8e0('0x16')]){if(_0x54f02c[_0xb8e0('0x16')]['final']){logger[_0xb8e0('0x5')](_0xb8e0('0x17'),JSON[_0xb8e0('0xf')](_0x54f02c['result']['hypotheses']));_0x343f3f=_0x54f02c[_0xb8e0('0x16')][_0xb8e0('0x18')][0x0]['transcript'];_0xf72b36=_0x54f02c[_0xb8e0('0x16')]['hypotheses'][0x0][_0xb8e0('0x19')];_0x22d22c='0';_0x45a682='Success.';_0x1af3f3['terminate']();}}break;case 0x1:logger[_0xb8e0('0x5')](_0xb8e0('0x8'));_0x22d22c='1';_0x45a682=_0xb8e0('0x8');break;case 0x2:logger[_0xb8e0('0x5')](_0xb8e0('0x1a'));_0x22d22c='2';_0x45a682='Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.';break;case 0x9:logger[_0xb8e0('0x5')](_0xb8e0('0x1b'));_0x22d22c='9';_0x45a682=_0xb8e0('0x1b');break;case 0xa:logger['info'](_0xb8e0('0x1c'));_0x22d22c='10';_0x45a682=_0xb8e0('0x1c');break;case 0xb:logger[_0xb8e0('0x5')]('All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.');_0x22d22c='11';_0x45a682='All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.';}}}catch(_0x30cd93){logger[_0xb8e0('0x12')]('Tilde\x20ASR\x20parse\x20error',JSON[_0xb8e0('0xf')](_0x30cd93));_0x1af3f3[_0xb8e0('0x13')]();}}function _0xfe6a4c(){logger[_0xb8e0('0x5')](_0xb8e0('0x1d'));_0xa86a8({'transcript':_0x343f3f,'confidence':_0xf72b36,'status':_0x22d22c,'status_message':_0x45a682});}function _0x40ecb1(_0x23812c){logger[_0xb8e0('0x12')](_0xb8e0('0x1e'));if(!_[_0xb8e0('0x1f')](_0x23812c)){logger[_0xb8e0('0x12')](_[_0xb8e0('0x20')](_0x23812c)?JSON[_0xb8e0('0xf')](_0x23812c):_0x23812c);}}_0x1af3f3['on'](_0xb8e0('0x21'),_0x44e034);_0x1af3f3['on'](_0xb8e0('0x22'),_0x92f0e8);_0x1af3f3['on'](_0xb8e0('0x11'),_0xfe6a4c);_0x1af3f3['on'](_0xb8e0('0x12'),_0x40ecb1);});};
\ No newline at end of file
index 9c294f4..72686f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb5e0=['exports'];(function(_0xad921d,_0x4e852b){var _0x50a737=function(_0x38a1f4){while(--_0x38a1f4){_0xad921d['push'](_0xad921d['shift']());}};_0x50a737(++_0x4e852b);}(_0xb5e0,0x1c0));var _0x0b5e=function(_0x481557,_0x3333cc){_0x481557=_0x481557-0x0;var _0x102fbf=_0xb5e0[_0x481557];return _0x102fbf;};var asr=require('./asr');module[_0x0b5e('0x0')]={'asr':asr};
\ No newline at end of file
+var _0x4ff7=['./asr','exports'];(function(_0x3b632f,_0x453380){var _0x10e788=function(_0x2228a4){while(--_0x2228a4){_0x3b632f['push'](_0x3b632f['shift']());}};_0x10e788(++_0x453380);}(_0x4ff7,0x1c8));var _0x74ff=function(_0x4eda22,_0x3d2db4){_0x4eda22=_0x4eda22-0x0;var _0x4a5706=_0x4ff7[_0x4eda22];return _0x4a5706;};var asr=require(_0x74ff('0x0'));module[_0x74ff('0x1')]={'asr':asr};
\ No newline at end of file
index 10348df..c3cdbf8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['connection','getConnections','E_AGI_SERVER_ERROR','E_AGI_SERVER_VOICE_DISABLED','destroy','E_AGI_SERVER_MAXCONNECTION','close','nextTick','exports','util','net','events','./error','./channel','127.0.0.1','call','emit','error','E_AGI_ARGUMENT_PORT','createServer','listen','listening'];(function(_0x31bab3,_0x44554f){var _0x4fd382=function(_0x42b336){while(--_0x42b336){_0x31bab3['push'](_0x31bab3['shift']());}};_0x4fd382(++_0x44554f);}(_0xe706,0xa3));var _0x6e70=function(_0x282f96,_0x2be4be){_0x282f96=_0x282f96-0x0;var _0x12d02b=_0xe706[_0x282f96];return _0x12d02b;};'use strict';var util=require(_0x6e70('0x0'));var net=require(_0x6e70('0x1'));var EventEmitter=require(_0x6e70('0x2'))['EventEmitter'];var AGIError=require(_0x6e70('0x3'));var AGIChannel=require(_0x6e70('0x4'));var AGIServer=function(_0x2ca810,_0x7dfbc3,_0x142c27){var _0x2164a4=this;var _0x376a8d=null;var _0x506db9=0x0;if(!_0x2ca810)_0x2ca810=0x11dd;if(!_0x7dfbc3)_0x7dfbc3=_0x6e70('0x5');EventEmitter[_0x6e70('0x6')](_0x2164a4);function _0x36357b(){if(!_0x2ca810){_0x2164a4[_0x6e70('0x7')](_0x6e70('0x8'),new AGIError(_0x6e70('0x9')));return![];}_0x376a8d=net[_0x6e70('0xa')]();_0x376a8d[_0x6e70('0xb')](_0x2ca810,_0x7dfbc3);_0x376a8d['on'](_0x6e70('0xc'),function(){_0x2164a4[_0x6e70('0x7')](_0x6e70('0xc'));});_0x376a8d['on'](_0x6e70('0xd'),function(_0x743eb5){_0x376a8d[_0x6e70('0xe')](function(_0x37b3e0,_0x4600f9){if(_0x37b3e0){_0x2164a4['emit']('error',new AGIError(_0x6e70('0xf'),_0x37b3e0));}else if(_0x142c27&&_0x142c27<0x0){_0x2164a4[_0x6e70('0x7')](_0x6e70('0x8'),new AGIError(_0x6e70('0x10')));_0x743eb5[_0x6e70('0x11')]();}else if(_0x142c27&&_0x142c27>0x0&&_0x142c27<_0x4600f9){_0x506db9+=0x1;_0x2164a4[_0x6e70('0x7')](_0x6e70('0x8'),new AGIError(_0x6e70('0x12'),_0x506db9));_0x743eb5['destroy']();}else{var _0x52737e=new AGIChannel(_0x743eb5);_0x52737e['on']('ready',function(){_0x2164a4[_0x6e70('0x7')]('connection',_0x52737e);});}});});_0x376a8d['on']('error',function(_0x304716){_0x2164a4[_0x6e70('0x7')]('error',new AGIError(_0x6e70('0xf'),_0x304716['code']));});_0x376a8d['on'](_0x6e70('0x13'),function(){_0x2164a4[_0x6e70('0x7')]('close',new AGIError('E_AGI_SERVER_CLOSE'));});}process[_0x6e70('0x14')](function(){_0x36357b();});};util['inherits'](AGIServer,EventEmitter);module[_0x6e70('0x15')]=function(_0x173afe,_0x53acdc,_0x497d61){return new AGIServer(_0x173afe,_0x53acdc,_0x497d61);};
\ No newline at end of file
+var _0x34e8=['E_AGI_ARGUMENT_PORT','createServer','listen','listening','connection','getConnections','E_AGI_SERVER_ERROR','E_AGI_SERVER_VOICE_DISABLED','destroy','E_AGI_SERVER_MAXCONNECTION','close','nextTick','inherits','exports','util','net','events','EventEmitter','./channel','call','emit','error'];(function(_0x2ed4ec,_0x3e598d){var _0x7bc26f=function(_0x34744a){while(--_0x34744a){_0x2ed4ec['push'](_0x2ed4ec['shift']());}};_0x7bc26f(++_0x3e598d);}(_0x34e8,0x12c));var _0x834e=function(_0x4961de,_0x2659bb){_0x4961de=_0x4961de-0x0;var _0xa559be=_0x34e8[_0x4961de];return _0xa559be;};'use strict';var util=require(_0x834e('0x0'));var net=require(_0x834e('0x1'));var EventEmitter=require(_0x834e('0x2'))[_0x834e('0x3')];var AGIError=require('./error');var AGIChannel=require(_0x834e('0x4'));var AGIServer=function(_0x21e2e0,_0x472111,_0x31bf20){var _0x289ef2=this;var _0x19a3e0=null;var _0x398bee=0x0;if(!_0x21e2e0)_0x21e2e0=0x11dd;if(!_0x472111)_0x472111='127.0.0.1';EventEmitter[_0x834e('0x5')](_0x289ef2);function _0x52056d(){if(!_0x21e2e0){_0x289ef2[_0x834e('0x6')](_0x834e('0x7'),new AGIError(_0x834e('0x8')));return![];}_0x19a3e0=net[_0x834e('0x9')]();_0x19a3e0[_0x834e('0xa')](_0x21e2e0,_0x472111);_0x19a3e0['on'](_0x834e('0xb'),function(){_0x289ef2[_0x834e('0x6')](_0x834e('0xb'));});_0x19a3e0['on'](_0x834e('0xc'),function(_0x186b3b){_0x19a3e0[_0x834e('0xd')](function(_0x36e124,_0x14038b){if(_0x36e124){_0x289ef2[_0x834e('0x6')](_0x834e('0x7'),new AGIError(_0x834e('0xe'),_0x36e124));}else if(_0x31bf20&&_0x31bf20<0x0){_0x289ef2[_0x834e('0x6')]('error',new AGIError(_0x834e('0xf')));_0x186b3b[_0x834e('0x10')]();}else if(_0x31bf20&&_0x31bf20>0x0&&_0x31bf20<_0x14038b){_0x398bee+=0x1;_0x289ef2['emit'](_0x834e('0x7'),new AGIError(_0x834e('0x11'),_0x398bee));_0x186b3b[_0x834e('0x10')]();}else{var _0x21cc0a=new AGIChannel(_0x186b3b);_0x21cc0a['on']('ready',function(){_0x289ef2[_0x834e('0x6')](_0x834e('0xc'),_0x21cc0a);});}});});_0x19a3e0['on']('error',function(_0x316205){_0x289ef2['emit'](_0x834e('0x7'),new AGIError(_0x834e('0xe'),_0x316205['code']));});_0x19a3e0['on'](_0x834e('0x12'),function(){_0x289ef2[_0x834e('0x6')](_0x834e('0x12'),new AGIError('E_AGI_SERVER_CLOSE'));});}process[_0x834e('0x13')](function(){_0x52056d();});};util[_0x834e('0x14')](AGIServer,EventEmitter);module[_0x834e('0x15')]=function(_0xb993a1,_0x237947,_0x254677){return new AGIServer(_0xb993a1,_0x237947,_0x254677);};
\ No newline at end of file
index 252dadb..d781960 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ae2=['Enter\x20in\x20SUBPROJECT\x20(%s)\x20block','project_id','no\x20subproject\x20found\x20with\x20id\x20%d','project\x20in\x20subproject\x20must\x20be\x20different\x20from\x20the\x20called\x20project','agi://%s/square,\x22%s\x22,\x22%s\x22','host','127.0.0.1','AGI','system','Enter\x20in\x20SYSTEM\x20(%s)\x20block','sh\x20command:\x20%s\x20result\x20on\x20variable:\x20%s','sh\x20command:\x20%s\x20result\x20no\x20stored','Enter\x20in\x20Google\x20Cloud\x20TTS\x20(%s)\x20block','no\x20apiKey\x20configured','Trying\x20Google\x20Cloud\x20TTS\x20%s','Google\x20Cloud\x20TTS\x20%s\x20file\x20created','tts','Trying\x20Google\x20TTS\x20%s','Google\x20TTS\x20%s\x20file\x20created','unpause','voicemail','Enter\x20in\x20VOICEMAIL\x20(%s)\x20block','mailbox','VOICEMAIL','vswitch','no\x20variable\x20selected','replaceAll','join','exports','util','lodash','shelljs','odbc','randomstring','moment','mustache','request-promise','../../config/logger','../../config/environment','../../config/environment/shared','rawHeaders','rawBody','menu','getdigits','getsecretdigits','channel','rpc','mailRpc','prototype','name','catch','getVoiceQueue','getVoiceQueueById','then','getSquareProject','getSquareProjectById','getSquareOdbc','getSquareOdbcById','dsn','getTrunk','getTrunkById','getSoundById','getSoundPath','save_name','getMailAccount','getMailAccountById','sendMailMessage','getIntervalById','IntervalId','interval','map','Intervals','format','%s/sounds/converted/%s','error','Error\x20getting\x20ODBC\x20connection\x20%s','info','ODBC\x20connection\x20successfully','Error\x20executing\x20query\x20%s','Query\x20executed\x20correctly\x20%s','Error\x20closing\x20connection\x20to\x20odbc\x20%s','getSmsAccount','getSmsAccountById','createSmsMessage','createSquareDetailsReport','arg_1','callerid','createSquareRecording','uniqueid','calleridname','context','extension','priority','accountcode','dnid','file','createSquareMessage','createCmContact','isNil','callback_','random','lastName','phone','list_id','callback','Callback\x20scheduled\x20at\x20','scheduledAt','toString','callback_priority','getPause','getPauseById','agentPause','agent','agentUnpause','agentLogout','agentLogin','internal','%s/%s@from-sip/n','shellCommand','trim','googleCloudTTS','apiKey','google_cloud_tts_text_type','text','languageCode','en-US','ssmlGender','audioEncoding','MP3','googleTTS','restAPI','url','method','number','timeout','includes','POST','PUT','toUpperCase','body','An\x20incorrect\x20formatted\x20json\x20body\x20has\x20been\x20passed\x20to\x20the\x20function','headers','An\x20incorrect\x20formatted\x20json\x20headers\x20has\x20been\x20passed\x20to\x20the\x20function','computedVariables','sync','uri','parse','render','stringify','An\x20incorrect\x20formatted\x20json\x20has\x20been\x20passed\x20to\x20the\x20function','statusCode','message','options','googleDialogflow','dialogflow_language','googleDialogflowV2','dialogflowV2_project_id','client_email','sestekNDA','ispeechTTS','key','ispeech_tts_language','ispeechASR','ispeech_asr_language','isConfigured','model','awsPolly','aws_access_key_id','aws_secret_access_key','aws_polly_voice','Amy','aws_text_type','awsLex','aws_lex_region','aws_bot_name','googleASR','google_asr_language','tildeASR','appid','appsecret','clear','agicommand','clone','hasOwnProperty','isString','replaceObjectAllVariables','replaceAllVariables','isPlainObject','length','recursiveNodeIndex','saveRestApiResult','isEmpty','isArray','%s.%s','setVariable','split','getVariable','extra','result','The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s','maxRetry','retry','label','noop','MRCPSynth','mrcprecog','no\x20grammar\x20configured','grammar','exec','MRCPRecog','getAndSetVariable','RECOG_CONFIDENCE()','MRCP_RECOG_CONFIDENCE','RECOG_INPUT()','MRCP_RECOG_TRANSCRIPT','RECOG_INSTANCE()','MRCP_RECOG_INSTANCE','agi','Enter\x20in\x20AGI\x20(%s)\x20block','command','args','Wait\x20%s\x20seconds\x20before\x20answer','answer','no\x20list\x20selected','delay','add','minutes','custom_app','Enter\x20in\x20CUSTOM\x20APP\x20(%s)\x20block','application','Executed\x20command\x20%s\x20%s','lumenvoxtts','Enter\x20in\x20LUMENVOXTTS\x20(%s)\x20block','no\x20text\x20configured','Executed\x20command\x20MRCPSynth\x20%s','sestektts','Enter\x20in\x20SESTEKTTS\x20(%s)\x20block','Enter\x20in\x20LUMENVOXASR\x20(%s)\x20block','LUMENVOX_ASR_CONFIDENCE','LUMENVOX_ASR_TRANSCRIPT','LUMENVOX_ASR_INSTANCE','Executed\x20command\x20MRCPRecog\x20%s','sestekasr','SESTEK_ASR_CONFIDENCE','SESTEK_ASR_INSTANCE','database','odbc_id','no\x20database\x20selected','no\x20odbc\x20database\x20found','query','no\x20query\x20configured','replace','query:\x20%s','variable_id','no\x20variable\x20selected\x20for\x20the\x20result','no\x20variable\x20found','forEach','keys','%s[%s][%s]','%s_ROWS_COUNT','dial','debug','Enter\x20in\x20DIAL\x20(%s)\x20block','sip_id','no\x20user\x20selected','getUser','no\x20user\x20found','DIAL','SIP/%s','opts','Executed\x20command\x20%s','dialogflow','no\x20key\x20configured','bot','Trying\x20Dialogflow:\x20%s','speech','out','Dialogflow\x20Result\x20%s','Dialogflow\x20is\x20unreachable','dialogflowV2','Enter\x20in\x20DIALOGFLOW\x20V2\x20(%s)\x20block','private_key','no\x20private_key\x20configured','dialogflowV2_language','no\x20anguage\x20configured','providerResponse','DIALOGFLOW_%s','DialogflowV2\x20Result\x20%s','DialogflowV2\x20is\x20unreachable','ndauth_url','no\x20ndauth\x20url\x20configured','username','password','no\x20password\x20configured','ndassistant_url','Trying\x20SestekNDA:\x20%s','SESTEK_NDA_%s','sesteknda','audiofile','unlink','.wav','SestekNDA\x20Result\x20%s','Enter\x20in\x20END\x20(%s)\x20block','end','ext_dial','Enter\x20in\x20EXTERNAL\x20DIAL\x20(%s)\x20block','trunk_id','trunk_name','no\x20trunk\x20selected','SIP/%s/%s','finally','Enter\x20in\x20FINALLY\x20(%s)\x20block','Enter\x20in\x20GETDIGITS\x20(%s)\x20block','no\x20file\x20audio\x20selected','getSound','file_id','no\x20file\x20audio\x20found','response','test','mindigit','maxdigit','hiddendigitsnum','substr','generate','Enter\x20in\x20GETSECRETDIGITS\x20(%s)\x20block','Enter\x20in\x20GOAL\x20(%s)\x20block','goalname','awspolly','[AGI]\x20Enter\x20in\x20AWSPOLLY\x20(%s)\x20block','Trying\x20aws\x20Polly\x20%s','aws\x20Polly\x20%s\x20file\x20created','aws\x20Polly\x20is\x20unreachable','Enter\x20in\x20Amazon\x20Lex\x20(%s)\x20block','no\x20valid\x20credentials\x20configured','no\x20bot\x20name\x20configured','Trying\x20Amazon\x20Lex:\x20%s','AWS_LEX_%s','Amazon\x20Lex\x20ready\x20for\x20fulfillment','Amazon\x20Lex\x20Result\x20%s','Amazon\x20Lex\x20is\x20unreachable','googleasr','beep','NOBEEP','recordFile','intKey','google\x20%s\x20file\x20created','GOOGLE_ASR_%s','GoogleASR\x20Result\x20%s','tildeasr','Enter\x20in\x20TILDEASR\x20(%s)\x20block','no\x20appsecret\x20configured','wav','TILDE_ASR_%s','TildeASR\x20Result\x20%s','gotoc','continueAt','gotoif','Enter\x20in\x20GOTOIF\x20(%s)\x20block','condition','no\x20condition\x20configured','true','false','EVAL\x20CONDITION\x20%s\x20%s','gotoiftime','Enter\x20in\x20GOTOIFTIME\x20(%s)\x20block','interval_id','getIntervals','no\x20intervals\x20found','IFTIME(%s?true:false)','IFTIME\x20%s\x20%s','hangup','ispeechasr','Enter\x20in\x20ISPEECHASR\x20(%s)\x20block','%s/recordings/%s','ispeech\x20%s\x20file\x20created','ISPEECH_ASR_%s','ispeechtts','streamFile','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','success','AGENT\x20%s\x20NOT\x20FOUND\x20BY','failure','logout','math','Enter\x20in\x20MATH\x20(%s)\x20block','operation','no\x20operation\x20configured','%s[%s]','variable\x20%s[key]\x20set','Enter\x20in\x20MENU\x20(%s)\x20block','getData','digit','Enter\x20in\x20NOOP\x20(%s)\x20block','output','pause','pause_id','playback','Enter\x20in\x20PLAYBACK\x20(%s)\x20block','PLAYBACK','queue','Enter\x20in\x20QUEUE\x20(%s)\x20block','queue_id','no\x20queue\x20found','indexOf','XMCS-QUEUE','toLowerCase','QUEUE','macro','gosub','position','record','Enter\x20in\x20RECORD\x20(%s)\x20block','recordingFormat','%s_%s','%s/recordings/%s.%s','RECORDING_SAVENAME','Recording\x20%s\x20%s\x20%s\x20%s','escape_digits','Enter\x20in\x20RESTAPI\x20(%s)\x20block','no\x20url\x20configured','Response:','inspect','no\x20variable\x20selected\x20for\x20the\x20response','%s_STATUS_CODE','200','%s_STATUS_MESSAGE','statusMessage','Unable\x20to\x20set\x20result\x20in\x20variable\x20%s','variable\x20%s\x20set','sayDigits','digits','sayphonetic','sayPhonetic','sendMail','Enter\x20in\x20SENDMAIL\x20(%s)\x20block','no\x20mail\x20account\x20configured','account_id','no\x20mail\x20account\x20found','email','Smtp','bcc','template_id','sendMail\x20message','Trying\x20SendMail\x20with\x20account\x20%s','smtpOptions','Mail\x20message\x20added\x20to\x20outgoing\x20process','sendFax','SENDFAX\x20block\x20not\x20implemented','sendSMS','Enter\x20in\x20SENDSMS\x20(%s)\x20block','sms_account_id','no\x20sms\x20account\x20found','Sms\x20message\x20added\x20to\x20outgoing\x20process','Enter\x20in\x20SET\x20(%s)\x20block','start','yes','Answer','Skipped\x20Answer'];(function(_0xf2628e,_0x521bf7){var _0x13863a=function(_0x2b04ab){while(--_0x2b04ab){_0xf2628e['push'](_0xf2628e['shift']());}};_0x13863a(++_0x521bf7);}(_0x6ae2,0x1ed));var _0x26ae=function(_0x6aee43,_0x33869f){_0x6aee43=_0x6aee43-0x0;var _0x4dbb66=_0x6ae2[_0x6aee43];return _0x4dbb66;};'use strict';var fs=require('fs');var util=require(_0x26ae('0x0'));var _=require(_0x26ae('0x1'));var sh=require(_0x26ae('0x2'));var odbc=require(_0x26ae('0x3'))();var rs=require(_0x26ae('0x4'));var moment=require(_0x26ae('0x5'));var Mustache=require(_0x26ae('0x6'));var rp=require(_0x26ae('0x7'));var logger=require(_0x26ae('0x8'))('agi');var config=require(_0x26ae('0x9'));var shared=require(_0x26ae('0xa'));var scripts=require('./scripts');var FILES_PATH='/var/opt/motion2/server/files';var recursiveMapAttributes=[_0x26ae('0xb'),_0x26ae('0xc')];var verticesWithRetry=[_0x26ae('0xd'),_0x26ae('0xe'),_0x26ae('0xf')];var AGIVertices=function(_0x13d7c8,_0x359d23,_0x4b3eca){this[_0x26ae('0x10')]=_0x13d7c8;this[_0x26ae('0x11')]=_0x359d23;this[_0x26ae('0x12')]=_0x4b3eca;};AGIVertices[_0x26ae('0x13')]['getVariable']=function(_0x41162e,_0x491072){this[_0x26ae('0x11')]['getVariableById'](_0x41162e)['then'](function(_0x410259){_0x491072(null,_0x410259?_0x410259[_0x26ae('0x14')]:![]);})[_0x26ae('0x15')](function(_0x17f9a6){_0x491072(_0x17f9a6);});};AGIVertices[_0x26ae('0x13')][_0x26ae('0x16')]=function(_0x21f745,_0x1c66b8){this[_0x26ae('0x11')][_0x26ae('0x17')](_0x21f745)[_0x26ae('0x18')](function(_0xe264da){_0x1c66b8(null,_0xe264da?_0xe264da['name']:![]);})[_0x26ae('0x15')](function(_0x32cd9e){_0x1c66b8(_0x32cd9e);});};AGIVertices['prototype'][_0x26ae('0x19')]=function(_0x3426d8,_0x4f71d8){this[_0x26ae('0x11')][_0x26ae('0x1a')](_0x3426d8)[_0x26ae('0x18')](function(_0x250dc0){_0x4f71d8(null,_0x250dc0?_0x250dc0[_0x26ae('0x14')]:![]);})[_0x26ae('0x15')](function(_0x46f436){_0x4f71d8(_0x46f436);});};AGIVertices[_0x26ae('0x13')][_0x26ae('0x1b')]=function(_0x38102c,_0x12d56e){this[_0x26ae('0x11')][_0x26ae('0x1c')](_0x38102c)[_0x26ae('0x18')](function(_0xdfcd69){_0x12d56e(null,_0xdfcd69?_0xdfcd69[_0x26ae('0x1d')]:![]);})[_0x26ae('0x15')](function(_0x334153){_0x12d56e(_0x334153);});};AGIVertices['prototype']['getUser']=function(_0x2a2ba5,_0x5d72dc){this[_0x26ae('0x11')]['getUserById'](_0x2a2ba5)[_0x26ae('0x18')](function(_0x2e34d1){_0x5d72dc(null,_0x2e34d1?_0x2e34d1[_0x26ae('0x14')]:![]);})['catch'](function(_0x4ab3f1){_0x5d72dc(_0x4ab3f1);});};AGIVertices[_0x26ae('0x13')][_0x26ae('0x1e')]=function(_0x29de9b,_0x49840f){this[_0x26ae('0x11')][_0x26ae('0x1f')](_0x29de9b)['then'](function(_0x1a0a32){_0x49840f(null,_0x1a0a32?_0x1a0a32[_0x26ae('0x14')]:![]);})[_0x26ae('0x15')](function(_0x4a0045){_0x49840f(_0x4a0045);});};AGIVertices[_0x26ae('0x13')]['getSound']=function(_0x28e5a4,_0x1ac4e6){var _0x76c2b3=this;this['rpc'][_0x26ae('0x20')](_0x28e5a4)['then'](function(_0x4cddc4){_0x1ac4e6(null,_0x4cddc4?_0x76c2b3[_0x26ae('0x21')](_0x4cddc4[_0x26ae('0x22')]):![]);})['catch'](function(_0x5308c){_0x1ac4e6(_0x5308c);});};AGIVertices[_0x26ae('0x13')][_0x26ae('0x23')]=function(_0x15a725,_0x2d8cac){this['rpc'][_0x26ae('0x24')](_0x15a725)[_0x26ae('0x18')](function(_0x29476f){_0x2d8cac(null,_0x29476f?_0x29476f:![]);})[_0x26ae('0x15')](function(_0x247219){_0x2d8cac(_0x247219);});};AGIVertices['prototype'][_0x26ae('0x25')]=function(_0x3c9267,_0x3423b9,_0x10b7a0){this[_0x26ae('0x12')][_0x26ae('0x25')](_0x3c9267,_0x3423b9)[_0x26ae('0x18')](function(){_0x10b7a0(null);})[_0x26ae('0x15')](function(_0x5f46bd){_0x10b7a0(_0x5f46bd);});};AGIVertices[_0x26ae('0x13')]['getIntervals']=function(_0x4c961d,_0x23c723){this[_0x26ae('0x11')][_0x26ae('0x26')](_0x4c961d)['then'](function(_0x46308a){if(_0x46308a){if(_0x46308a[_0x26ae('0x27')]){_0x23c723(null,[_0x46308a[_0x26ae('0x28')]]);}else{_0x23c723(null,_[_0x26ae('0x29')](_0x46308a[_0x26ae('0x2a')],_0x26ae('0x28')));}}else{_0x23c723(null,![]);}})[_0x26ae('0x15')](function(_0x1afa84){_0x23c723(_0x1afa84);});};AGIVertices[_0x26ae('0x13')][_0x26ae('0x21')]=function(_0x19de43){return util[_0x26ae('0x2b')](_0x26ae('0x2c'),FILES_PATH,_0x19de43);};AGIVertices[_0x26ae('0x13')]['getQueryOdbc']=function(_0x14d0ed,_0x3b9bb4,_0x2e5d70){odbc['open'](_0x14d0ed,function(_0x20c60a){if(_0x20c60a){logger[_0x26ae('0x2d')](_0x26ae('0x2e'),_0x20c60a);_0x2e5d70(_0x20c60a);}else{logger[_0x26ae('0x2f')](_0x26ae('0x30'));odbc['query'](_0x3b9bb4,function(_0x3d4e10,_0x255ec3){if(_0x3d4e10){logger[_0x26ae('0x2f')](_0x26ae('0x31'),_0x3b9bb4);_0x2e5d70(_0x3d4e10);}else{logger[_0x26ae('0x2f')](_0x26ae('0x32'),_0x3b9bb4);odbc['close'](function(_0x5d16de){if(_0x5d16de){logger['error'](_0x26ae('0x33'),_0x5d16de);}_0x2e5d70(null,_0x255ec3);});}});}});};AGIVertices[_0x26ae('0x13')][_0x26ae('0x34')]=function(_0x1519a3,_0x30edd3){this['rpc'][_0x26ae('0x35')](_0x1519a3)[_0x26ae('0x18')](function(_0x3ebca4){_0x30edd3(null,_0x3ebca4?_0x3ebca4:![]);})[_0x26ae('0x15')](function(_0x21e4cf){_0x30edd3(_0x21e4cf);});};AGIVertices[_0x26ae('0x13')][_0x26ae('0x36')]=function(_0x4c4912,_0xcf2c63){this[_0x26ae('0x11')]['createSmsMessage'](_0x4c4912)[_0x26ae('0x18')](function(_0x4ed02a){_0xcf2c63(null,_0x4ed02a);})[_0x26ae('0x15')](function(_0x150bf1){_0xcf2c63(_0x150bf1);});};AGIVertices[_0x26ae('0x13')]['createSquareDetailsReport']=function(_0x2a0797,_0x1f1edc,_0x3141da){this[_0x26ae('0x11')][_0x26ae('0x37')]({'uniqueid':this[_0x26ae('0x10')]['uniqueid'],'node':_0x2a0797['label'],'application':_0x2a0797['agicommand'],'data':_0x1f1edc||null,'project_name':this[_0x26ae('0x10')][_0x26ae('0x38')],'callerid':this[_0x26ae('0x10')][_0x26ae('0x39')]})[_0x26ae('0x18')](function(_0x4e4f0b){if(_0x3141da){_0x3141da(null,_0x4e4f0b);}})['catch'](function(_0x1f2de3){if(_0x3141da){_0x3141da(_0x1f2de3);}});};AGIVertices[_0x26ae('0x13')][_0x26ae('0x3a')]=function(_0x4d0093,_0x434396,_0x50317d,_0xcbc76e){this[_0x26ae('0x11')]['createSquareRecording']({'uniqueid':this['channel'][_0x26ae('0x3b')],'callerid':this['channel'][_0x26ae('0x39')],'calleridname':this[_0x26ae('0x10')][_0x26ae('0x3c')],'context':this[_0x26ae('0x10')][_0x26ae('0x3d')],'extension':this[_0x26ae('0x10')][_0x26ae('0x3e')],'priority':this[_0x26ae('0x10')][_0x26ae('0x3f')],'accountcode':this[_0x26ae('0x10')][_0x26ae('0x40')],'dnid':this['channel'][_0x26ae('0x41')],'projectName':this[_0x26ae('0x10')][_0x26ae('0x38')],'saveName':_0x434396,'filename':_0x4d0093[_0x26ae('0x42')]||_0x434396,'savePath':_0x50317d})[_0x26ae('0x18')](function(_0x34d5e7){_0xcbc76e(null,_0x34d5e7);})[_0x26ae('0x15')](function(_0x38c4c2){_0xcbc76e(_0x38c4c2);});};AGIVertices[_0x26ae('0x13')][_0x26ae('0x43')]=function(_0x157c8b,_0x1b4774,_0x2790de,_0x5c7245,_0x1b075d){this['rpc'][_0x26ae('0x43')]({'uniqueid':this[_0x26ae('0x10')][_0x26ae('0x3b')],'body':_0x157c8b,'direction':_0x1b4774,'providerName':_0x2790de,'providerResponse':_0x5c7245})[_0x26ae('0x18')](function(_0x448da8){if(_0x1b075d){_0x1b075d(null,_0x448da8);}})[_0x26ae('0x15')](function(_0x58bbc8){if(_0x1b075d){_0x1b075d(_0x58bbc8);}});};AGIVertices[_0x26ae('0x13')]['createCmContact']=function(_0x13925d,_0x5ee7be){this[_0x26ae('0x11')][_0x26ae('0x44')]({'firstName':_['isEmpty'](_0x13925d[_0x26ae('0x14')])||_[_0x26ae('0x45')](_0x13925d[_0x26ae('0x14')])?_0x26ae('0x46')+Math[_0x26ae('0x47')]():_0x13925d['name'],'lastName':_['isEmpty'](_0x13925d[_0x26ae('0x48')])||_[_0x26ae('0x45')](_0x13925d['lastName'])?null:_0x13925d[_0x26ae('0x48')],'phone':_0x13925d[_0x26ae('0x49')],'ListId':_0x13925d[_0x26ae('0x4a')],'scheduledat':_0x13925d['scheduledAt'],'callbackUniqueid':this[_0x26ae('0x10')][_0x26ae('0x3b')],'tags':_0x26ae('0x4b'),'description':_0x26ae('0x4c')+_0x13925d[_0x26ae('0x4d')][_0x26ae('0x4e')](),'priority':_0x13925d[_0x26ae('0x4f')]})[_0x26ae('0x18')](function(_0x3ca5a1){_0x5ee7be(null,_0x3ca5a1);})[_0x26ae('0x15')](function(_0x3e4506){_0x5ee7be(_0x3e4506);});};AGIVertices[_0x26ae('0x13')][_0x26ae('0x50')]=function(_0x43089b,_0x3eb777){this[_0x26ae('0x11')][_0x26ae('0x51')](_0x43089b)[_0x26ae('0x18')](function(_0x1a41ae){_0x3eb777(null,_0x1a41ae?_0x1a41ae[_0x26ae('0x14')]:![]);})['catch'](function(_0x49aa21){_0x3eb777(_0x49aa21);});};AGIVertices[_0x26ae('0x13')][_0x26ae('0x52')]=function(_0x286ac1,_0x593950,_0x181e2f){var _0x4acc7a={'role':_0x26ae('0x53')};_0x4acc7a[_0x286ac1]=this[_0x26ae('0x10')]['callerid'];this[_0x26ae('0x11')][_0x26ae('0x52')](_0x4acc7a,_0x593950,this[_0x26ae('0x10')][_0x26ae('0x3b')])[_0x26ae('0x18')](function(_0x3e47e2){_0x181e2f(null,_[_0x26ae('0x45')](_0x3e47e2)?![]:!![]);})[_0x26ae('0x15')](function(_0xfb8aba){logger[_0x26ae('0x2d')](_0xfb8aba);_0x181e2f(null,![]);});};AGIVertices[_0x26ae('0x13')][_0x26ae('0x54')]=function(_0x253579,_0x1a99a2){var _0x43943e={'role':'agent'};_0x43943e[_0x253579]=this[_0x26ae('0x10')]['callerid'];this[_0x26ae('0x11')]['agentUnpause'](_0x43943e)[_0x26ae('0x18')](function(_0x33702e){_0x1a99a2(null,_[_0x26ae('0x45')](_0x33702e)?![]:!![]);})[_0x26ae('0x15')](function(_0x1d11f6){logger['error'](_0x1d11f6);_0x1a99a2(null,![]);});};AGIVertices['prototype'][_0x26ae('0x55')]=function(_0x10c124,_0x10ce69){var _0x4c5674={'role':'agent'};_0x4c5674[_0x10c124]=this['channel']['callerid'];this['rpc'][_0x26ae('0x55')](_0x4c5674)['then'](function(_0x3651ac){_0x10ce69(null,_[_0x26ae('0x45')](_0x3651ac)?![]:!![]);})['catch'](function(_0x285db3){logger[_0x26ae('0x2d')](_0x285db3);_0x10ce69(null,![]);});};AGIVertices['prototype'][_0x26ae('0x56')]=function(_0x59b757,_0x3f071f){var _0x27e66f={'role':_0x26ae('0x53')};_0x27e66f[_0x59b757]=this[_0x26ae('0x10')][_0x26ae('0x39')];var _0x1d890c=_0x59b757!=_0x26ae('0x57')?util[_0x26ae('0x2b')](_0x26ae('0x58'),'LOCAL',this['channel'][_0x26ae('0x39')]):undefined;this[_0x26ae('0x11')][_0x26ae('0x56')](_0x27e66f,_0x1d890c)[_0x26ae('0x18')](function(_0x85f644){_0x3f071f(null,_[_0x26ae('0x45')](_0x85f644)?![]:!![]);})[_0x26ae('0x15')](function(_0x21ef6d){logger[_0x26ae('0x2d')](_0x21ef6d);_0x3f071f(null,![]);});};AGIVertices[_0x26ae('0x13')][_0x26ae('0x59')]=function(_0x4b8208,_0x5031e3){sh['exec'](_[_0x26ae('0x5a')](_0x4b8208),function(_0x21c9e7,_0x4bec54){var _0x5ab688=_0x4bec54['replace'](/(\r\n|\n|\r)/gm,'');_0x5031e3(null,_0x5ab688);});};AGIVertices['prototype'][_0x26ae('0x5b')]=function(_0x1e49ed,_0x5ae6b2){scripts['googleCloudTTS'](_0x1e49ed[_0x26ae('0x5c')],_0x1e49ed[_0x26ae('0x5d')]||_0x26ae('0x5e'),_0x1e49ed[_0x26ae('0x5e')],_0x1e49ed[_0x26ae('0x5f')]||_0x26ae('0x60'),_0x1e49ed[_0x26ae('0x61')]||'MALE',_0x1e49ed[_0x26ae('0x62')]||_0x26ae('0x63'))['then'](function(_0x39ccaf){_0x5ae6b2(null,_0x39ccaf);})[_0x26ae('0x15')](function(_0x4600f2){_0x5ae6b2(_0x4600f2);});};AGIVertices[_0x26ae('0x13')][_0x26ae('0x64')]=function(_0x56688c,_0x12749c){scripts[_0x26ae('0x64')](_0x56688c[_0x26ae('0x5e')],_0x56688c['google_tts_language']||'en',0x1)[_0x26ae('0x18')](function(_0x4fbf27){_0x12749c(null,_0x4fbf27);})[_0x26ae('0x15')](function(_0x2be899){_0x12749c(_0x2be899);});};AGIVertices[_0x26ae('0x13')][_0x26ae('0x65')]=function(_0x3575cf,_0x1a615c){var _0x37a250={'uri':_0x3575cf[_0x26ae('0x66')],'method':_0x3575cf[_0x26ae('0x67')],'json':!![],'resolveWithFullResponse':!![],'strictSSL':![],'timeout':typeof parseInt(_0x3575cf['timeout'])===_0x26ae('0x68')&&parseInt(_0x3575cf[_0x26ae('0x69')])>=0x1?parseInt(_0x3575cf[_0x26ae('0x69')])*0x3e8:0x5*0x3e8};if(_[_0x26ae('0x6a')]([_0x26ae('0x6b'),_0x26ae('0x6c')],_0x37a250[_0x26ae('0x67')][_0x26ae('0x6d')]())){try{_0x37a250[_0x26ae('0x6e')]=_0x3575cf[_0x26ae('0xc')]?JSON['parse'](_0x3575cf[_0x26ae('0xc')]):{};}catch(_0x2480a3){logger['error'](_0x26ae('0x6f'),_0x2480a3);}}try{_0x37a250[_0x26ae('0x70')]=_0x3575cf['rawHeaders']?JSON['parse'](_0x3575cf[_0x26ae('0xb')]):{};}catch(_0x1298fa){logger['error'](_0x26ae('0x71'),_0x1298fa);}if(_0x3575cf['computedVariables']){try{var _0x1b9a58=require(_0x3575cf[_0x26ae('0x72')])[_0x26ae('0x73')](this,_0x37a250);_0x37a250[_0x26ae('0x74')]=Mustache['render'](_0x3575cf[_0x26ae('0x66')],_0x1b9a58,{},['$$','$$']);if(_0x37a250['headers']){_0x37a250['headers']=JSON[_0x26ae('0x75')](Mustache[_0x26ae('0x76')](JSON[_0x26ae('0x77')](_0x37a250[_0x26ae('0x70')]),_0x1b9a58,{},['$$','$$']));}if(_0x37a250[_0x26ae('0x6e')]){_0x37a250['body']=JSON[_0x26ae('0x75')](Mustache[_0x26ae('0x76')](JSON[_0x26ae('0x77')](_0x37a250[_0x26ae('0x6e')]),_0x1b9a58,{},['$$','$$']));}}catch(_0x2043b2){logger[_0x26ae('0x2d')](_0x26ae('0x78'),_0x2043b2);}}rp(_0x37a250)[_0x26ae('0x18')](function(_0x43b9b7){var _0x33f7b3={'statusCode':_0x43b9b7[_0x26ae('0x79')]||0xc8,'statusMessage':_0x43b9b7['statusMessage']||'OK','headers':_0x43b9b7[_0x26ae('0x70')]||{},'body':_0x43b9b7[_0x26ae('0x6e')]||{}};_0x1a615c(null,_0x33f7b3);})[_0x26ae('0x15')](function(_0x5e9a78){var _0x1fdbff={'statusCode':_0x5e9a78[_0x26ae('0x79')]||0x1f4,'statusMessage':_0x5e9a78[_0x26ae('0x7a')]||'500\x20-\x20Internal\x20Server\x20Error','headers':_0x5e9a78[_0x26ae('0x7b')][_0x26ae('0x70')]||{},'body':_0x5e9a78[_0x26ae('0x7b')][_0x26ae('0x6e')]||{}};_0x1a615c(null,_0x1fdbff);});};AGIVertices['prototype'][_0x26ae('0x7c')]=function(_0x231c6c,_0x597d76){scripts[_0x26ae('0x7c')](this['channel']['uniqueid'],_0x231c6c['key'],_0x231c6c[_0x26ae('0x5e')],_0x231c6c[_0x26ae('0x7d')]||'en')[_0x26ae('0x18')](function(_0x4c7a93){_0x597d76(null,_0x4c7a93);})[_0x26ae('0x15')](function(_0x1e60e0){_0x597d76(_0x1e60e0);});};AGIVertices[_0x26ae('0x13')][_0x26ae('0x7e')]=function(_0xfa9af4,_0x136c5e){scripts['googleDialogflowV2'](this[_0x26ae('0x10')]['uniqueid'],_0xfa9af4[_0x26ae('0x7f')],_0xfa9af4[_0x26ae('0x80')],_0xfa9af4['private_key'],_0xfa9af4['text'],_0xfa9af4['dialogflowV2_language']||'en')[_0x26ae('0x18')](function(_0x5d13ce){_0x136c5e(null,_0x5d13ce);})['catch'](function(_0xc463fc){_0x136c5e(_0xc463fc);});};AGIVertices['prototype'][_0x26ae('0x81')]=function(_0x3f469e,_0x310b6c){scripts[_0x26ae('0x81')](this[_0x26ae('0x10')],_0x3f469e)['then'](function(_0x413eb2){_0x310b6c(null,_0x413eb2);})[_0x26ae('0x15')](function(_0x14d066){_0x310b6c(_0x14d066);});};AGIVertices['prototype']['ispeechTTS']=function(_0x43826c,_0x145f3a){scripts[_0x26ae('0x82')](_0x43826c[_0x26ae('0x83')],_0x43826c['text'],_0x43826c[_0x26ae('0x84')]||_0x26ae('0x60'),_0x43826c['speed'])['then'](function(_0x12d6b4){_0x145f3a(null,_0x12d6b4);})[_0x26ae('0x15')](function(_0x5ccf2f){_0x145f3a(_0x5ccf2f);});};AGIVertices['prototype'][_0x26ae('0x85')]=function(_0x2046a4,_0x4189aa,_0x271ca3){scripts[_0x26ae('0x85')](_0x4189aa,_0x2046a4[_0x26ae('0x83')],_0x2046a4[_0x26ae('0x86')]||_0x26ae('0x60'),this[_0x26ae('0x87')](_0x2046a4[_0x26ae('0x88')])?_0x2046a4['model']:undefined)['then'](function(_0x54de5f){_0x271ca3(null,_0x54de5f);})[_0x26ae('0x15')](function(_0x4e0a61){_0x271ca3(_0x4e0a61);});};AGIVertices['prototype'][_0x26ae('0x89')]=function(_0x35147d,_0x39a544){scripts[_0x26ae('0x89')](_0x35147d[_0x26ae('0x8a')],_0x35147d[_0x26ae('0x8b')],_0x35147d['aws_polly_region'],_0x35147d[_0x26ae('0x8c')]||_0x26ae('0x8d'),_0x35147d[_0x26ae('0x5e')],_0x35147d[_0x26ae('0x8e')]||_0x26ae('0x5e'))[_0x26ae('0x18')](function(_0x427941){_0x39a544(null,_0x427941);})[_0x26ae('0x15')](function(_0x3717fb){_0x39a544(_0x3717fb);});};AGIVertices[_0x26ae('0x13')][_0x26ae('0x8f')]=function(_0x3c7141,_0x23bb13){scripts[_0x26ae('0x8f')](this[_0x26ae('0x10')][_0x26ae('0x3b')],_0x3c7141[_0x26ae('0x8a')],_0x3c7141[_0x26ae('0x8b')],_0x3c7141[_0x26ae('0x90')],_0x3c7141[_0x26ae('0x5e')],_0x3c7141[_0x26ae('0x91')])['then'](function(_0xd95f95){_0x23bb13(null,_0xd95f95);})['catch'](function(_0x31206f){_0x23bb13(_0x31206f);});};AGIVertices[_0x26ae('0x13')][_0x26ae('0x92')]=function(_0x1e0b0b,_0x49c6e3,_0x3adf82){scripts[_0x26ae('0x92')](_0x49c6e3,_0x1e0b0b[_0x26ae('0x83')],_0x1e0b0b[_0x26ae('0x93')]||_0x26ae('0x60'))[_0x26ae('0x18')](function(_0x2d25a6){_0x3adf82(null,_0x2d25a6);})[_0x26ae('0x15')](function(_0x5bffdd){_0x3adf82(_0x5bffdd);});};AGIVertices[_0x26ae('0x13')][_0x26ae('0x94')]=function(_0x14f336,_0x31205d,_0x497578){scripts[_0x26ae('0x94')](_0x31205d,_0x14f336[_0x26ae('0x95')],_0x14f336[_0x26ae('0x96')],_0x14f336[_0x26ae('0x74')])[_0x26ae('0x18')](function(_0x216a1e){_0x497578(null,_0x216a1e);})['catch'](function(_0x14a49b){_0x497578(_0x14a49b);});};AGIVertices[_0x26ae('0x13')][_0x26ae('0x97')]=function(_0x1fc10e){var _0x4d1214=_[_0x26ae('0x6a')](verticesWithRetry,_0x1fc10e[_0x26ae('0x98')])?_0x1fc10e:_[_0x26ae('0x99')](_0x1fc10e);for(var _0x15b003 in _0x4d1214){if(_0x4d1214[_0x26ae('0x9a')](_0x15b003)){if(_0x4d1214[_0x15b003]&&_[_0x26ae('0x9b')](_0x4d1214[_0x15b003])){if(_[_0x26ae('0x6a')](recursiveMapAttributes,_0x15b003)){_0x4d1214[_0x15b003]=this[_0x26ae('0x9c')](_0x4d1214[_0x15b003]);}else{_0x4d1214[_0x15b003]=this[_0x26ae('0x9d')](_0x4d1214[_0x15b003]);}}}}return _0x4d1214;};AGIVertices[_0x26ae('0x13')]['recursiveNodeIndex']=function(_0x8c8692){for(var _0x53e24b in _0x8c8692){if(_0x8c8692['hasOwnProperty'](_0x53e24b)){if(_[_0x26ae('0x9e')](_0x8c8692[_0x53e24b])){this['recursiveNodeIndex'](_0x8c8692[_0x53e24b]);}else if(_['isArray'](_0x8c8692[_0x53e24b])){for(var _0x2de849=0x0;_0x2de849<_0x8c8692[_0x53e24b][_0x26ae('0x9f')];_0x2de849++){this[_0x26ae('0xa0')](_0x8c8692[_0x53e24b][_0x2de849]);}}else if(_[_0x26ae('0x9b')](_0x8c8692[_0x53e24b])){_0x8c8692[_0x53e24b]=this['replaceAllVariables'](_0x8c8692[_0x53e24b]);}}}};AGIVertices['prototype'][_0x26ae('0xa1')]=function(_0x49bfef,_0x5e1145){for(var _0xb58b8d in _0x49bfef){if(_0x49bfef['hasOwnProperty'](_0xb58b8d)){if(_['isPlainObject'](_0x49bfef[_0xb58b8d])){if(!_[_0x26ae('0xa2')](_0x49bfef[_0xb58b8d])){this[_0x26ae('0xa1')](_0x49bfef[_0xb58b8d],util['format']('%s.%s',_0x5e1145,_0xb58b8d));}}else if(_[_0x26ae('0xa3')](_0x49bfef[_0xb58b8d])){for(var _0x33df0f=0x0;_0x33df0f<_0x49bfef[_0xb58b8d][_0x26ae('0x9f')];_0x33df0f++){this[_0x26ae('0xa1')](_0x49bfef[_0xb58b8d][_0x33df0f],util[_0x26ae('0x2b')](_0x26ae('0xa4'),_0x5e1145,_0xb58b8d+'['+_0x33df0f+']'));}}else{if(!_['isNil'](_0x49bfef[_0xb58b8d])){this[_0x26ae('0x10')][_0x26ae('0xa5')](util[_0x26ae('0x2b')](_0x26ae('0xa4'),_0x5e1145,_0xb58b8d),_0x49bfef[_0xb58b8d]);}}}}};AGIVertices[_0x26ae('0x13')][_0x26ae('0x9c')]=function(_0x5dad3d){try{var _0x5ede6c=JSON['parse'](_0x5dad3d);this[_0x26ae('0xa0')](_0x5ede6c);return JSON[_0x26ae('0x77')](_0x5ede6c);}catch(_0x475084){return this[_0x26ae('0x9d')](_0x5dad3d);}};AGIVertices[_0x26ae('0x13')][_0x26ae('0x9d')]=function(_0x506423){var _0xa84184=_0x506423[_0x26ae('0xa6')]('{');for(var _0x279603=0x1;_0x279603<_0xa84184[_0x26ae('0x9f')];_0x279603+=0x1){var _0x1475a5=_0xa84184[_0x279603]['split']('}');if(_0x1475a5[_0x26ae('0x9f')]>0x1){_0x506423=_0x506423['replaceAll']('{'+_0x1475a5[0x0]+'}',this[_0x26ae('0x10')][_0x26ae('0xa7')](_0x1475a5[0x0])[_0x26ae('0xa8')]||_0x1475a5[0x0]);}}if(_0xa84184['length']===0x1){return _0x506423[_0x26ae('0x4e')]();}return this[_0x26ae('0x9d')](_0x506423);};AGIVertices[_0x26ae('0x13')]['getAndSetVariable']=function(_0x23abd8,_0x310e9d){var _0x2093db=this[_0x26ae('0x10')][_0x26ae('0xa7')](_0x23abd8);if(_0x2093db[_0x26ae('0xa9')]===-0x1){return _0x2093db;}logger[_0x26ae('0x2f')](util[_0x26ae('0x2b')](_0x26ae('0xaa'),_0x310e9d,_0x2093db[_0x26ae('0xa8')]));return this['channel']['setVariable'](_0x310e9d,_0x2093db[_0x26ae('0xa8')]);};AGIVertices['prototype'][_0x26ae('0x87')]=function(_0x159b3d){return _0x159b3d&&_0x159b3d!=='0'&&_0x159b3d!=='-1'&&_0x159b3d!=='';};AGIVertices[_0x26ae('0x13')][_0x26ae('0xab')]=function(_0x5188ba){this[_0x26ae('0x37')][_0x26ae('0x73')](this,_0x5188ba,'-');_0x5188ba[_0x26ae('0xac')]=_0x5188ba['maxRetry'];return{'code':0xc8,'result':'-'};};AGIVertices[_0x26ae('0x13')]['mrcpsynth']=function(_0x3c8ca4){logger[_0x26ae('0x2f')](util[_0x26ae('0x2b')]('Enter\x20in\x20MRCPSynth\x20(%s)\x20block',_0x3c8ca4[_0x26ae('0xad')]));if(!this['isConfigured'](_0x3c8ca4['text'])){return this['channel'][_0x26ae('0xae')]('no\x20text\x20configured');}var _0x5da906='\x22'+_0x3c8ca4['text']+'\x22';if(this[_0x26ae('0x87')](_0x3c8ca4[_0x26ae('0x7b')])){_0x5da906+=','+_0x3c8ca4[_0x26ae('0x7b')];}var _0x315738=this['channel']['exec'](_0x26ae('0xaf'),_0x5da906);if(_0x315738[_0x26ae('0xa9')]===-0x1){return _0x315738;}return this[_0x26ae('0x10')]['noop'](util[_0x26ae('0x2b')]('Executed\x20command\x20MRCPSynth\x20%s',_0x5da906));};AGIVertices[_0x26ae('0x13')][_0x26ae('0xb0')]=function(_0x1a6800){logger[_0x26ae('0x2f')](util['format']('Enter\x20in\x20MRCPRecog\x20(%s)\x20block',_0x1a6800[_0x26ae('0xad')]));if(!this['isConfigured'](_0x1a6800['grammar'])){return this['channel'][_0x26ae('0xae')](_0x26ae('0xb1'));}var _0x7f2d7a=_0x1a6800[_0x26ae('0xb2')];if(this[_0x26ae('0x87')](_0x1a6800[_0x26ae('0x7b')])){_0x7f2d7a+=','+_0x1a6800['options'];}var _0x36d544=this['channel'][_0x26ae('0xb3')](_0x26ae('0xb4'),_0x7f2d7a);if(_0x36d544[_0x26ae('0xa9')]===-0x1){return _0x36d544;}var _0x55eeba=this[_0x26ae('0xb5')](_0x26ae('0xb6'),_0x26ae('0xb7'));if(_0x55eeba[_0x26ae('0xa9')]===-0x1){return _0x55eeba;}var _0x129beb=this[_0x26ae('0xb5')](_0x26ae('0xb8'),_0x26ae('0xb9'));if(_0x129beb[_0x26ae('0xa9')]===-0x1){return _0x129beb;}var _0x261422=this[_0x26ae('0xb5')](_0x26ae('0xba'),_0x26ae('0xbb'));if(_0x261422[_0x26ae('0xa9')]===-0x1){return _0x261422;}return this['channel']['noop'](util['format']('Executed\x20command\x20MRCPRecog\x20%s',_0x7f2d7a));};AGIVertices['prototype'][_0x26ae('0xbc')]=function(_0x555160){logger['info'](util['format'](_0x26ae('0xbd'),_0x555160[_0x26ae('0xad')]));return this[_0x26ae('0x10')][_0x26ae('0xbc')]([_0x555160[_0x26ae('0xbe')],_0x555160[_0x26ae('0xbf')]]);};AGIVertices[_0x26ae('0x13')]['answer']=function(_0x230e6c){logger['info'](util[_0x26ae('0x2b')]('Enter\x20in\x20ANSWER\x20(%s)\x20block',_0x230e6c[_0x26ae('0xad')]));if(this[_0x26ae('0x87')](_0x230e6c[_0x26ae('0x69')])){logger[_0x26ae('0x2f')](util[_0x26ae('0x2b')](_0x26ae('0xc0'),_0x230e6c['timeout']));var _0x9b6aa2=this[_0x26ae('0x10')]['wait'](_0x230e6c[_0x26ae('0x69')]);if(_0x9b6aa2['result']===-0x1){return _0x9b6aa2;}}return this['channel'][_0x26ae('0xc1')]();};AGIVertices[_0x26ae('0x13')][_0x26ae('0x4b')]=function(_0x418129){logger[_0x26ae('0x2f')](util[_0x26ae('0x2b')]('Enter\x20in\x20CALLBACK\x20(%s)\x20block',_0x418129[_0x26ae('0xad')]));if(!this[_0x26ae('0x87')](_0x418129[_0x26ae('0x4a')])){return this[_0x26ae('0x10')][_0x26ae('0x2d')](_0x418129,_0x26ae('0xc2'));}_0x418129[_0x26ae('0x4d')]=moment();if(this[_0x26ae('0x87')](_0x418129[_0x26ae('0xc3')])){_0x418129['scheduledAt']=moment()[_0x26ae('0xc4')](_0x418129[_0x26ae('0xc3')],_0x26ae('0xc5'));}if(!this[_0x26ae('0x87')](_0x418129[_0x26ae('0x4f')])){_0x418129[_0x26ae('0x4f')]=0x2;}this['createCmContact']['sync'](this,_0x418129);return this[_0x26ae('0x10')]['noop'](util['format']('CALLBACK\x20added\x20phone:\x20%s\x20on\x20list:\x20%s\x20at\x20%s',_0x418129['phone'],_0x418129[_0x26ae('0x4a')],_0x418129[_0x26ae('0x4d')]));};AGIVertices['prototype'][_0x26ae('0xc6')]=function(_0x3294bf){logger[_0x26ae('0x2f')](util[_0x26ae('0x2b')](_0x26ae('0xc7'),_0x3294bf[_0x26ae('0xad')]));var _0x576d85=this[_0x26ae('0x10')][_0x26ae('0xb3')](_0x3294bf[_0x26ae('0xc8')],_0x3294bf[_0x26ae('0x7b')]);if(_0x576d85[_0x26ae('0xa9')]===-0x1){return _0x576d85;}return this[_0x26ae('0x10')][_0x26ae('0xae')](util[_0x26ae('0x2b')](_0x26ae('0xc9'),_0x3294bf[_0x26ae('0xc8')],_0x3294bf[_0x26ae('0x7b')]));};AGIVertices[_0x26ae('0x13')][_0x26ae('0xca')]=function(_0xc721de){logger[_0x26ae('0x2f')](util[_0x26ae('0x2b')](_0x26ae('0xcb'),_0xc721de['label']));if(!this['isConfigured'](_0xc721de[_0x26ae('0x5e')])){return this[_0x26ae('0x10')][_0x26ae('0xae')](_0x26ae('0xcc'));}var _0x569f48='\x22'+_0xc721de['text']+'\x22';if(this['isConfigured'](_0xc721de['options'])){_0x569f48+=','+_0xc721de[_0x26ae('0x7b')];}var _0x23e5ba=this[_0x26ae('0x10')]['exec']('MRCPSynth',_0x569f48);if(_0x23e5ba['result']===-0x1){return _0x23e5ba;}return this[_0x26ae('0x10')]['noop'](util['format'](_0x26ae('0xcd'),_0x569f48));};AGIVertices[_0x26ae('0x13')][_0x26ae('0xce')]=function(_0x39f791){logger['info'](util[_0x26ae('0x2b')](_0x26ae('0xcf'),_0x39f791[_0x26ae('0xad')]));if(!this[_0x26ae('0x87')](_0x39f791[_0x26ae('0x5e')])){return this['channel'][_0x26ae('0xae')](_0x26ae('0xcc'));}var _0x16667e='\x22'+_0x39f791[_0x26ae('0x5e')]+'\x22';if(this[_0x26ae('0x87')](_0x39f791[_0x26ae('0x7b')])){_0x16667e+=','+_0x39f791[_0x26ae('0x7b')];}var _0x51ca93=this[_0x26ae('0x10')]['exec']('MRCPSynth',_0x16667e);if(_0x51ca93[_0x26ae('0xa9')]===-0x1){return _0x51ca93;}return this[_0x26ae('0x10')][_0x26ae('0xae')](util[_0x26ae('0x2b')](_0x26ae('0xcd'),_0x16667e));};AGIVertices[_0x26ae('0x13')]['lumenvoxasr']=function(_0x5cdf7a){logger[_0x26ae('0x2f')](util[_0x26ae('0x2b')](_0x26ae('0xd0'),_0x5cdf7a[_0x26ae('0xad')]));if(!this[_0x26ae('0x87')](_0x5cdf7a[_0x26ae('0xb2')])){return this[_0x26ae('0x10')]['noop']('no\x20grammar\x20configured');}var _0x574330=_0x5cdf7a[_0x26ae('0xb2')];if(this['isConfigured'](_0x5cdf7a[_0x26ae('0x7b')])){_0x574330+=','+_0x5cdf7a[_0x26ae('0x7b')];}var _0x3cc05f=this[_0x26ae('0x10')][_0x26ae('0xb3')](_0x26ae('0xb4'),_0x574330);if(_0x3cc05f[_0x26ae('0xa9')]===-0x1){return _0x3cc05f;}var _0x3f6b4c=this[_0x26ae('0xb5')](_0x26ae('0xb6'),_0x26ae('0xd1'));if(_0x3f6b4c[_0x26ae('0xa9')]===-0x1){return _0x3f6b4c;}var _0x4d5a1f=this[_0x26ae('0xb5')]('RECOG_INPUT()',_0x26ae('0xd2'));if(_0x4d5a1f[_0x26ae('0xa9')]===-0x1){return _0x4d5a1f;}var _0x1dce9c=this[_0x26ae('0xb5')](_0x26ae('0xba'),_0x26ae('0xd3'));if(_0x1dce9c[_0x26ae('0xa9')]===-0x1){return _0x1dce9c;}return this['channel'][_0x26ae('0xae')](util[_0x26ae('0x2b')](_0x26ae('0xd4'),_0x574330));};AGIVertices[_0x26ae('0x13')][_0x26ae('0xd5')]=function(_0x243d64){logger[_0x26ae('0x2f')](util[_0x26ae('0x2b')]('Enter\x20in\x20SESTEKASR\x20(%s)\x20block',_0x243d64['label']));if(!this['isConfigured'](_0x243d64[_0x26ae('0xb2')])){return this['channel'][_0x26ae('0xae')]('no\x20grammar\x20configured');}var _0x4f0f75=_0x243d64[_0x26ae('0xb2')];if(this[_0x26ae('0x87')](_0x243d64['options'])){_0x4f0f75+=','+_0x243d64[_0x26ae('0x7b')];}var _0x1b7837=this['channel'][_0x26ae('0xb3')](_0x26ae('0xb4'),_0x4f0f75);if(_0x1b7837[_0x26ae('0xa9')]===-0x1){return _0x1b7837;}var _0x257ff5=this[_0x26ae('0xb5')](_0x26ae('0xb6'),_0x26ae('0xd6'));if(_0x257ff5['result']===-0x1){return _0x257ff5;}var _0x1102ff=this[_0x26ae('0xb5')](_0x26ae('0xb8'),'SESTEK_ASR_TRANSCRIPT');if(_0x1102ff[_0x26ae('0xa9')]===-0x1){return _0x1102ff;}var _0x2655f9=this[_0x26ae('0xb5')](_0x26ae('0xba'),_0x26ae('0xd7'));if(_0x2655f9[_0x26ae('0xa9')]===-0x1){return _0x2655f9;}return this[_0x26ae('0x10')][_0x26ae('0xae')](util[_0x26ae('0x2b')](_0x26ae('0xd4'),_0x4f0f75));};AGIVertices[_0x26ae('0x13')][_0x26ae('0xd8')]=function(_0x4cfbe9){logger[_0x26ae('0x2f')](util[_0x26ae('0x2b')]('Enter\x20in\x20DATABASE\x20(%s)\x20block',_0x4cfbe9['label']));if(!this[_0x26ae('0x87')](_0x4cfbe9[_0x26ae('0xd9')])){return this['channel'][_0x26ae('0x2d')](_0x4cfbe9,_0x26ae('0xda'));}var _0x3759bf=this[_0x26ae('0x1b')]['sync'](this,_0x4cfbe9['odbc_id']);if(!_0x3759bf){return this['channel'][_0x26ae('0x2d')](_0x4cfbe9,_0x26ae('0xdb'));}if(!this[_0x26ae('0x87')](_0x4cfbe9[_0x26ae('0xdc')])){return this[_0x26ae('0x10')][_0x26ae('0x2d')](_0x4cfbe9,_0x26ae('0xdd'));}var _0x3604f3=_0x4cfbe9['query'][_0x26ae('0xde')](/(\r\n|\n|\r)/gm,'\x20');this[_0x26ae('0x10')][_0x26ae('0xae')](util[_0x26ae('0x2b')](_0x26ae('0xdf'),_0x3604f3));var _0x1047f9=this['getQueryOdbc'][_0x26ae('0x73')](this,_0x3759bf,_0x3604f3);this[_0x26ae('0x37')]['sync'](this,_0x4cfbe9,_0x3604f3);if(!this[_0x26ae('0x87')](_0x4cfbe9[_0x26ae('0xe0')])){return this[_0x26ae('0x10')][_0x26ae('0xae')](_0x26ae('0xe1'));}var _0x1a4244=this[_0x26ae('0xa7')][_0x26ae('0x73')](this,_0x4cfbe9['variable_id']);if(!_0x1a4244){return this['channel'][_0x26ae('0x2d')](_0x4cfbe9,_0x26ae('0xe2'));}var _0x56139e=this;_0x1047f9[_0x26ae('0xe3')](function(_0xe60259,_0x5121ad){Object[_0x26ae('0xe4')](_0xe60259)['forEach'](function(_0x36f7b5){_0x56139e['channel'][_0x26ae('0xa5')](util[_0x26ae('0x2b')](_0x26ae('0xe5'),_0x1a4244,_0x5121ad,_0x36f7b5),_0xe60259[_0x36f7b5]);});});this['channel'][_0x26ae('0xa5')](util[_0x26ae('0x2b')](_0x26ae('0xe6'),_0x1a4244),_0x1047f9[_0x26ae('0x9f')]);return this[_0x26ae('0x10')][_0x26ae('0xae')](util[_0x26ae('0x2b')]('variable\x20%s\x20set',_0x1a4244));};AGIVertices[_0x26ae('0x13')][_0x26ae('0xe7')]=function(_0x2322ea){logger[_0x26ae('0xe8')](util['format'](_0x26ae('0xe9'),_0x2322ea[_0x26ae('0xad')]));if(!this[_0x26ae('0x87')](_0x2322ea[_0x26ae('0xea')])){return this[_0x26ae('0x10')][_0x26ae('0x2d')](_0x2322ea,_0x26ae('0xeb'));}var _0x3a52cd=this[_0x26ae('0xec')]['sync'](this,_0x2322ea[_0x26ae('0xea')]);if(!_0x3a52cd){return this['channel'][_0x26ae('0x2d')](_0x2322ea,_0x26ae('0xed'));}var _0x3f953f=this[_0x26ae('0x10')]['exec'](_0x26ae('0xee'),[util[_0x26ae('0x2b')](_0x26ae('0xef'),_0x3a52cd),_0x2322ea[_0x26ae('0x69')],_0x2322ea[_0x26ae('0xf0')],_0x2322ea[_0x26ae('0x66')]]);if(_0x3f953f['result']===-0x1){return _0x3f953f;}return this[_0x26ae('0x10')]['noop'](util[_0x26ae('0x2b')](_0x26ae('0xf1'),_0x26ae('0xee')));};AGIVertices[_0x26ae('0x13')][_0x26ae('0xf2')]=function(_0x111bf5){logger['info'](util[_0x26ae('0x2b')]('Enter\x20in\x20DIALOGFLOW\x20(%s)\x20block',_0x111bf5[_0x26ae('0xad')]));if(!this[_0x26ae('0x87')](_0x111bf5[_0x26ae('0x83')])){return this[_0x26ae('0x10')][_0x26ae('0xae')](_0x26ae('0xf3'));}if(!this[_0x26ae('0x87')](_0x111bf5[_0x26ae('0x5e')])){return this['channel']['noop']('no\x20text\x20configured');}this[_0x26ae('0x10')][_0x26ae('0xf4')]=!![];this[_0x26ae('0x37')](_0x111bf5);this[_0x26ae('0x43')](_0x111bf5[_0x26ae('0x5e')],'in','','');this[_0x26ae('0x10')][_0x26ae('0xae')](util[_0x26ae('0x2b')](_0x26ae('0xf5'),_0x111bf5[_0x26ae('0x5e')]));var _0x25cb38=this[_0x26ae('0x7c')]['sync'](this,_0x111bf5);if(_0x25cb38){for(var _0x34ef3f in _0x25cb38){if(_0x25cb38[_0x26ae('0x9a')](_0x34ef3f)){this[_0x26ae('0x10')]['setVariable'](util[_0x26ae('0x2b')]('DIALOGFLOW_%s',_0x34ef3f[_0x26ae('0x6d')]()),_0x25cb38[_0x34ef3f]);}}this[_0x26ae('0x43')](_0x25cb38[_0x26ae('0xf6')],_0x26ae('0xf7'),_0x26ae('0xf2'),'');return this[_0x26ae('0x10')][_0x26ae('0xae')](util['format'](_0x26ae('0xf8'),_0x25cb38[_0x26ae('0xf6')]));}return this[_0x26ae('0x10')][_0x26ae('0x2d')](_0x111bf5,_0x26ae('0xf9'));};AGIVertices['prototype'][_0x26ae('0xfa')]=function(_0x3fd9ea){logger[_0x26ae('0x2f')](util[_0x26ae('0x2b')](_0x26ae('0xfb'),_0x3fd9ea[_0x26ae('0xad')]));if(!this['isConfigured'](_0x3fd9ea['dialogflowV2_project_id'])){return this[_0x26ae('0x10')][_0x26ae('0xae')]('no\x20project_id\x20configured');}if(!this[_0x26ae('0x87')](_0x3fd9ea[_0x26ae('0x80')])){return this['channel'][_0x26ae('0xae')]('no\x20client_email\x20configured');}if(!this[_0x26ae('0x87')](_0x3fd9ea[_0x26ae('0xfc')])){return this['channel'][_0x26ae('0xae')](_0x26ae('0xfd'));}if(!this[_0x26ae('0x87')](_0x3fd9ea[_0x26ae('0xfe')])){return this[_0x26ae('0x10')][_0x26ae('0xae')](_0x26ae('0xff'));}if(!this[_0x26ae('0x87')](_0x3fd9ea[_0x26ae('0x5e')])){return this[_0x26ae('0x10')][_0x26ae('0xae')](_0x26ae('0xcc'));}this[_0x26ae('0x10')][_0x26ae('0xf4')]=!![];this[_0x26ae('0x37')](_0x3fd9ea);this[_0x26ae('0x43')](_0x3fd9ea[_0x26ae('0x5e')],'in','','');this['channel'][_0x26ae('0xae')](util[_0x26ae('0x2b')]('Trying\x20DialogflowV2:\x20%s',_0x3fd9ea[_0x26ae('0x5e')]));var _0x2e69e7=this['googleDialogflowV2'][_0x26ae('0x73')](this,_0x3fd9ea);if(_0x2e69e7){for(var _0x3d5660 in _0x2e69e7){if(_0x2e69e7[_0x26ae('0x9a')](_0x3d5660)){if(_0x3d5660!==_0x26ae('0x100')){this[_0x26ae('0x10')]['setVariable'](util[_0x26ae('0x2b')](_0x26ae('0x101'),_0x3d5660[_0x26ae('0x6d')]()),_0x2e69e7[_0x3d5660]);}}}this[_0x26ae('0x43')](_0x2e69e7[_0x26ae('0xf6')],_0x26ae('0xf7'),_0x26ae('0xfa'),_0x2e69e7['providerResponse']);return this['channel'][_0x26ae('0xae')](util[_0x26ae('0x2b')](_0x26ae('0x102'),_0x2e69e7['speech']));}return this[_0x26ae('0x10')]['error'](_0x3fd9ea,_0x26ae('0x103'));};AGIVertices[_0x26ae('0x13')]['sesteknda']=function(_0x5b256c){logger[_0x26ae('0x2f')](util[_0x26ae('0x2b')]('Enter\x20in\x20SESTEKNDA\x20(%s)\x20block',_0x5b256c['label']));if(!this['isConfigured'](_0x5b256c[_0x26ae('0x104')])){return this[_0x26ae('0x10')][_0x26ae('0xae')](_0x26ae('0x105'));}if(!this['isConfigured'](_0x5b256c[_0x26ae('0x106')])){return this[_0x26ae('0x10')][_0x26ae('0xae')]('no\x20username\x20configured');}if(!this['isConfigured'](_0x5b256c[_0x26ae('0x107')])){return this[_0x26ae('0x10')]['noop'](_0x26ae('0x108'));}if(!this[_0x26ae('0x87')](_0x5b256c[_0x26ae('0x109')])){return this[_0x26ae('0x10')][_0x26ae('0xae')](_0x26ae('0xcc'));}this[_0x26ae('0x10')][_0x26ae('0xf4')]=!![];this[_0x26ae('0x37')](_0x5b256c);this[_0x26ae('0x43')](_0x5b256c[_0x26ae('0x5e')],'in','','');this['channel'][_0x26ae('0xae')](util[_0x26ae('0x2b')](_0x26ae('0x10a'),_0x5b256c[_0x26ae('0x5e')]));var _0x511af7=this[_0x26ae('0x81')][_0x26ae('0x73')](this,_0x5b256c);if(_0x511af7){for(var _0x1718d0 in _0x511af7){if(_0x511af7[_0x26ae('0x9a')](_0x1718d0)){this[_0x26ae('0x10')][_0x26ae('0xa5')](util[_0x26ae('0x2b')](_0x26ae('0x10b'),_0x1718d0['toUpperCase']()),_0x511af7[_0x1718d0]);}}this['createSquareMessage'](_0x511af7[_0x26ae('0xf6')],_0x26ae('0xf7'),_0x26ae('0x10c'),'');if(_0x511af7[_0x26ae('0x10d')]){this[_0x26ae('0x10')][_0x26ae('0xae')](util['format']('Sestek\x20NDA\x20%s\x20file\x20created',_0x511af7['audiofile']));var _0x558173=this[_0x26ae('0x10')]['streamFile'](_0x511af7[_0x26ae('0x10d')]);try{fs[_0x26ae('0x10e')](_0x511af7[_0x26ae('0x10d')]+_0x26ae('0x10f'));}catch(_0x6219bc){logger[_0x26ae('0x2d')](_0x6219bc);}return _0x558173;}else{return this[_0x26ae('0x10')][_0x26ae('0xae')](util[_0x26ae('0x2b')](_0x26ae('0x110'),_0x511af7['speech']));}}return this[_0x26ae('0x10')][_0x26ae('0x2d')](_0x5b256c,'SestekNDA\x20is\x20unreachable');};AGIVertices[_0x26ae('0x13')]['end']=function(_0x209656){logger[_0x26ae('0x2f')](util[_0x26ae('0x2b')](_0x26ae('0x111'),_0x209656[_0x26ae('0xad')]));return this[_0x26ae('0x10')][_0x26ae('0xae')](_0x26ae('0x112'));};AGIVertices[_0x26ae('0x13')][_0x26ae('0x113')]=function(_0x29e1fb){logger[_0x26ae('0x2f')](util['format'](_0x26ae('0x114'),_0x29e1fb[_0x26ae('0xad')]));var _0x52b970='';if(_0x29e1fb[_0x26ae('0x115')]){if(!this[_0x26ae('0x87')](_0x29e1fb['trunk_id'])){return this[_0x26ae('0x10')][_0x26ae('0x2d')](_0x29e1fb,'no\x20trunk\x20selected');}else{var _0x860557=parseInt(_0x29e1fb['trunk_id'],0xa);if(isNaN(_0x860557)){_0x52b970=_0x29e1fb[_0x26ae('0x115')];}else{_0x52b970=this[_0x26ae('0x1e')][_0x26ae('0x73')](this,_0x29e1fb[_0x26ae('0x115')]);if(!_0x52b970){return this[_0x26ae('0x10')]['error'](_0x29e1fb,'no\x20trunk\x20found');}}}}else if(_0x29e1fb['trunk_name']){_0x52b970=_0x29e1fb[_0x26ae('0x116')];}else{return this[_0x26ae('0x10')][_0x26ae('0x2d')](_0x29e1fb,_0x26ae('0x117'));}var _0xf3672=this[_0x26ae('0x10')][_0x26ae('0xb3')](_0x26ae('0xee'),[util[_0x26ae('0x2b')](_0x26ae('0x118'),_0x52b970,_0x29e1fb[_0x26ae('0x49')]),_0x29e1fb[_0x26ae('0x69')],_0x29e1fb[_0x26ae('0xf0')],_0x29e1fb[_0x26ae('0x66')]]);if(_0xf3672['result']===-0x1){return _0xf3672;}return this[_0x26ae('0x10')][_0x26ae('0xae')](util[_0x26ae('0x2b')]('Executed\x20command\x20%s',_0x26ae('0xee')));};AGIVertices['prototype'][_0x26ae('0x119')]=function(_0xb656b0){logger[_0x26ae('0x2f')](util[_0x26ae('0x2b')](_0x26ae('0x11a'),_0xb656b0[_0x26ae('0xad')]));return this[_0x26ae('0x10')][_0x26ae('0xae')](_0x26ae('0x119'));};AGIVertices[_0x26ae('0x13')][_0x26ae('0xe')]=function(_0xfa43bf){logger[_0x26ae('0x2f')](util[_0x26ae('0x2b')](_0x26ae('0x11b'),_0xfa43bf[_0x26ae('0xad')]));if(_0xfa43bf[_0x26ae('0xac')]===0x0){return this[_0x26ae('0xab')](_0xfa43bf);}_0xfa43bf[_0x26ae('0xac')]-=0x1;if(!this[_0x26ae('0x87')](_0xfa43bf['file_id'])){return this['channel'][_0x26ae('0x2d')](_0xfa43bf,_0x26ae('0x11c'));}var _0x2910ff=this[_0x26ae('0x11d')][_0x26ae('0x73')](this,_0xfa43bf[_0x26ae('0x11e')]);if(!_0x2910ff){return this[_0x26ae('0x10')][_0x26ae('0x2d')](_0xfa43bf,_0x26ae('0x11f'));}if(!this[_0x26ae('0x87')](_0xfa43bf[_0x26ae('0xe0')])){return this[_0x26ae('0x10')][_0x26ae('0x2d')](_0x26ae('0xe1'));}var _0x18241f=this[_0x26ae('0x10')]['getData'](_0x2910ff,_0xfa43bf[_0x26ae('0x120')],_0xfa43bf['maxdigit']);var _0x26222d=_0x18241f['result']?_0x18241f[_0x26ae('0xa9')][_0x26ae('0x4e')]():'';logger[_0x26ae('0x2f')](_0x26ae('0x121'),JSON[_0x26ae('0x77')](_0x18241f));if(_0x18241f[_0x26ae('0xa9')]===-0x1){this['createSquareDetailsReport']['sync'](this,_0xfa43bf,_0x26222d);return _0x18241f;}else if(_0x18241f[_0x26ae('0xa8')]===_0x26ae('0x69')){_0x18241f[_0x26ae('0xa9')]=_0x26222d['length']>=parseInt(_0xfa43bf['mindigit'])?'x':'i';}else{_0x18241f[_0x26ae('0xa9')]=_0x26222d[_0x26ae('0x9f')]>=parseInt(_0xfa43bf[_0x26ae('0x122')])&&_0x26222d[_0x26ae('0x9f')]<=parseInt(_0xfa43bf[_0x26ae('0x123')])?'x':'i';}var _0x5ac968=this[_0x26ae('0xa7')]['sync'](this,_0xfa43bf['variable_id']);if(!_0x5ac968){return this[_0x26ae('0x10')][_0x26ae('0x2d')](_0xfa43bf,'no\x20variable\x20found');}this['channel'][_0x26ae('0xa5')](_0x5ac968,_0x26222d);if(this[_0x26ae('0x87')](_0xfa43bf['hiddendigitsnum'])){var _0x1789cd=parseInt(_0xfa43bf[_0x26ae('0x124')],0xa);var _0x576a73=rs['generate']({'charset':'*','length':_0x1789cd});var _0x2b9098=_0x26222d[_0x26ae('0x9f')];if(_0x2b9098>0x0){if(_0x2b9098>_0x1789cd){this[_0x26ae('0x37')]['sync'](this,_0xfa43bf,_0xfa43bf['hiddendigitspos']==='first'?_0x576a73+_0x26222d[_0x26ae('0x125')](_0x1789cd):_0x26222d['substr'](0x0,_0x2b9098-_0x1789cd)+_0x576a73);}else{this[_0x26ae('0x37')][_0x26ae('0x73')](this,_0xfa43bf,rs[_0x26ae('0x126')]({'charset':'*','length':_0x2b9098}));}}else{this[_0x26ae('0x37')][_0x26ae('0x73')](this,_0xfa43bf,'');}}else{this['createSquareDetailsReport'][_0x26ae('0x73')](this,_0xfa43bf,_0x26222d);}return _0x18241f;};AGIVertices[_0x26ae('0x13')][_0x26ae('0xf')]=function(_0x173f52){logger[_0x26ae('0x2f')](util[_0x26ae('0x2b')](_0x26ae('0x127'),_0x173f52[_0x26ae('0xad')]));return this[_0x26ae('0xe')](_0x173f52);};AGIVertices[_0x26ae('0x13')]['goal']=function(_0x5c6421){logger[_0x26ae('0x2f')](util[_0x26ae('0x2b')](_0x26ae('0x128'),_0x5c6421['label']));this[_0x26ae('0x37')][_0x26ae('0x73')](this,_0x5c6421,_0x5c6421[_0x26ae('0x129')]);return this[_0x26ae('0x10')][_0x26ae('0xae')](util[_0x26ae('0x2b')]('GOAL\x20%s',_0x5c6421[_0x26ae('0x129')]));};AGIVertices['prototype'][_0x26ae('0x12a')]=function(_0x692c01){logger['info'](util['format'](_0x26ae('0x12b'),_0x692c01[_0x26ae('0xad')]));if(!this['isConfigured'](_0x692c01[_0x26ae('0x8a')])||!this['isConfigured'](_0x692c01[_0x26ae('0x8b')])){return this['channel'][_0x26ae('0xae')]('no\x20valid\x20credentials\x20configured');}if(!this[_0x26ae('0x87')](_0x692c01[_0x26ae('0x5e')])){return this[_0x26ae('0x10')][_0x26ae('0xae')](_0x26ae('0xcc'));}this[_0x26ae('0x10')][_0x26ae('0xae')](util['format'](_0x26ae('0x12c'),_0x692c01[_0x26ae('0x5e')]));var _0x5a6eb6=this['awsPolly'][_0x26ae('0x73')](this,_0x692c01);if(_0x5a6eb6){this[_0x26ae('0x10')][_0x26ae('0xae')](util[_0x26ae('0x2b')](_0x26ae('0x12d'),_0x5a6eb6));var _0x5e36a0=this[_0x26ae('0x10')]['streamFile'](_0x5a6eb6);try{fs[_0x26ae('0x10e')](_0x5a6eb6+'.wav');}catch(_0x2fa90f){logger['error'](_0x2fa90f);}return _0x5e36a0;}return this['channel'][_0x26ae('0x2d')](_0x692c01,_0x26ae('0x12e'));};AGIVertices['prototype']['awslex']=function(_0x520e13){logger[_0x26ae('0x2f')](util[_0x26ae('0x2b')](_0x26ae('0x12f'),_0x520e13[_0x26ae('0xad')]));if(!this[_0x26ae('0x87')](_0x520e13[_0x26ae('0x8a')])||!this['isConfigured'](_0x520e13[_0x26ae('0x8b')])){return this[_0x26ae('0x10')][_0x26ae('0xae')](_0x26ae('0x130'));}if(!this[_0x26ae('0x87')](_0x520e13[_0x26ae('0x91')])){return this[_0x26ae('0x10')][_0x26ae('0xae')](_0x26ae('0x131'));}if(!this[_0x26ae('0x87')](_0x520e13[_0x26ae('0x5e')])){return this[_0x26ae('0x10')][_0x26ae('0xae')]('no\x20text\x20configured');}this[_0x26ae('0x10')]['bot']=!![];this[_0x26ae('0x37')](_0x520e13);this[_0x26ae('0x43')](_0x520e13['text'],'in','','');this[_0x26ae('0x10')][_0x26ae('0xae')](util[_0x26ae('0x2b')](_0x26ae('0x132'),_0x520e13[_0x26ae('0x5e')]));var _0x255161=this['awsLex'][_0x26ae('0x73')](this,_0x520e13);if(_0x255161){for(var _0x4bfd4d in _0x255161){if(_0x255161[_0x26ae('0x9a')](_0x4bfd4d)&&_[_0x26ae('0x9b')](_0x255161[_0x4bfd4d])){this[_0x26ae('0x10')][_0x26ae('0xa5')](util[_0x26ae('0x2b')](_0x26ae('0x133'),_0x4bfd4d[_0x26ae('0x6d')]()),_0x255161[_0x4bfd4d]);}}if(_[_0x26ae('0x45')](_0x255161['message'])){return this[_0x26ae('0x10')][_0x26ae('0xae')](_0x26ae('0x134'));}else{this[_0x26ae('0x43')](_0x255161[_0x26ae('0x7a')],_0x26ae('0xf7'),'amazonlex','');return this['channel'][_0x26ae('0xae')](util[_0x26ae('0x2b')](_0x26ae('0x135'),_0x255161[_0x26ae('0x7a')]));}}return this[_0x26ae('0x10')][_0x26ae('0x2d')](_0x520e13,_0x26ae('0x136'));};AGIVertices[_0x26ae('0x13')][_0x26ae('0x137')]=function(_0x5d391f){logger[_0x26ae('0x2f')](util[_0x26ae('0x2b')]('Enter\x20in\x20GOOGLEASR\x20(%s)\x20block\x20%s',_0x5d391f['label'],_0x5d391f[_0x26ae('0x69')]));if(!this['isConfigured'](_0x5d391f[_0x26ae('0x83')])){return this['channel'][_0x26ae('0xae')](_0x26ae('0xf3'));}var _0x36fa68='wav';var _0x5d5a17=util[_0x26ae('0x2b')]('%s/recordings/%s',FILES_PATH,rs[_0x26ae('0x126')](0x4));var _0x596c36=util['format'](_0x26ae('0xa4'),_0x5d5a17,_0x36fa68);var _0x1f6d87=!![];if(_0x5d391f[_0x26ae('0x138')]===_0x26ae('0x139')){_0x1f6d87=![];}var _0x3034d3=this[_0x26ae('0x10')][_0x26ae('0x13a')](_0x5d5a17,_0x36fa68,_0x5d391f[_0x26ae('0x13b')],_0x5d391f[_0x26ae('0x69')],undefined,_0x1f6d87);if(_0x3034d3[_0x26ae('0xa9')]!==-0x1){this['channel'][_0x26ae('0xae')](util[_0x26ae('0x2b')](_0x26ae('0x13c'),_0x596c36));var _0x390a0f=this['googleASR'][_0x26ae('0x73')](this,_0x5d391f,_0x596c36);if(_0x390a0f){for(var _0x5dfd13 in _0x390a0f){if(_0x390a0f['hasOwnProperty'](_0x5dfd13)){this['channel'][_0x26ae('0xa5')](util[_0x26ae('0x2b')](_0x26ae('0x13d'),_0x5dfd13[_0x26ae('0x6d')]()),_0x390a0f[_0x5dfd13]);}}return this[_0x26ae('0x10')][_0x26ae('0xae')](util[_0x26ae('0x2b')](_0x26ae('0x13e'),JSON[_0x26ae('0x77')](_0x390a0f)));}}return _0x3034d3;};AGIVertices[_0x26ae('0x13')][_0x26ae('0x13f')]=function(_0x2223b7){logger[_0x26ae('0x2f')](util[_0x26ae('0x2b')](_0x26ae('0x140'),_0x2223b7[_0x26ae('0xad')]));if(!this[_0x26ae('0x87')](_0x2223b7[_0x26ae('0x95')])){return this[_0x26ae('0x10')]['noop']('no\x20appid\x20configured');}if(!this[_0x26ae('0x87')](_0x2223b7[_0x26ae('0x96')])){return this[_0x26ae('0x10')][_0x26ae('0xae')](_0x26ae('0x141'));}var _0x3b3a62=_0x26ae('0x142');var _0x4d844f=util[_0x26ae('0x2b')]('%s/recordings/%s',FILES_PATH,rs[_0x26ae('0x126')](0x4));var _0x11463a=util[_0x26ae('0x2b')]('%s.%s',_0x4d844f,_0x3b3a62);var _0x1096d4=!![];if(_0x2223b7[_0x26ae('0x138')]===_0x26ae('0x139')){_0x1096d4=![];}var _0x161e98=this[_0x26ae('0x10')][_0x26ae('0x13a')](_0x4d844f,_0x3b3a62,_0x2223b7[_0x26ae('0x13b')],_0x2223b7[_0x26ae('0x69')],undefined,_0x1096d4);if(_0x161e98[_0x26ae('0xa9')]!==-0x1){this['channel'][_0x26ae('0xae')](util[_0x26ae('0x2b')]('tilde\x20%s\x20file\x20created',_0x11463a));var _0x3174c1=this['tildeASR'][_0x26ae('0x73')](this,_0x2223b7,_0x11463a);if(_0x3174c1){for(var _0x489066 in _0x3174c1){if(_0x3174c1[_0x26ae('0x9a')](_0x489066)){this[_0x26ae('0x10')][_0x26ae('0xa5')](util[_0x26ae('0x2b')](_0x26ae('0x143'),_0x489066[_0x26ae('0x6d')]()),_0x3174c1[_0x489066]);}}return this[_0x26ae('0x10')][_0x26ae('0xae')](util[_0x26ae('0x2b')](_0x26ae('0x144'),JSON['stringify'](_0x3174c1)));}}return _0x161e98;};AGIVertices[_0x26ae('0x13')][_0x26ae('0x145')]=function(_0x39a356){logger[_0x26ae('0x2f')](util[_0x26ae('0x2b')]('Enter\x20in\x20GOTO\x20(%s)\x20block',_0x39a356[_0x26ae('0xad')]));return this[_0x26ae('0x10')][_0x26ae('0x146')](_0x39a356[_0x26ae('0x3d')],_0x39a356[_0x26ae('0x3e')],_0x39a356[_0x26ae('0x3f')]);};AGIVertices[_0x26ae('0x13')][_0x26ae('0x147')]=function(_0x46909e){logger[_0x26ae('0x2f')](util[_0x26ae('0x2b')](_0x26ae('0x148'),_0x46909e['label']));if(!this['isConfigured'](_0x46909e[_0x26ae('0x149')])){return this[_0x26ae('0x10')][_0x26ae('0x2d')](_0x46909e,_0x26ae('0x14a'));}try{var _0x6f0f4=eval(_0x46909e[_0x26ae('0x149')])?_0x26ae('0x14b'):_0x26ae('0x14c');this[_0x26ae('0x10')][_0x26ae('0xae')](util[_0x26ae('0x2b')](_0x26ae('0x14d'),_0x46909e[_0x26ae('0x149')],_0x6f0f4));return{'code':0xc8,'result':_0x6f0f4};}catch(_0x274279){return{'code':0xc8,'result':'false'};}};AGIVertices[_0x26ae('0x13')][_0x26ae('0x14e')]=function(_0x4d572c){logger['info'](util['format'](_0x26ae('0x14f'),_0x4d572c[_0x26ae('0xad')]));if(!this[_0x26ae('0x87')](_0x4d572c[_0x26ae('0x150')])){return this[_0x26ae('0x10')]['error'](_0x4d572c,'no\x20interval\x20configured');}var _0x4be8b9=this[_0x26ae('0x151')][_0x26ae('0x73')](this,_0x4d572c[_0x26ae('0x150')]);if(!_0x4be8b9){return this[_0x26ae('0x10')][_0x26ae('0x2d')](_0x4d572c,_0x26ae('0x152'));}for(var _0x564ffe=0x0;_0x564ffe<_0x4be8b9[_0x26ae('0x9f')];_0x564ffe+=0x1){var _0x53e327=this[_0x26ae('0x10')][_0x26ae('0xa7')](util[_0x26ae('0x2b')](_0x26ae('0x153'),_0x4be8b9[_0x564ffe]));if(_0x53e327[_0x26ae('0xa9')]===-0x1){return _0x53e327;}logger['info'](util[_0x26ae('0x2b')](_0x26ae('0x154'),_0x4be8b9[_0x564ffe],_0x53e327[_0x26ae('0xa8')]));if(_0x53e327[_0x26ae('0xa8')]===_0x26ae('0x14b')){logger[_0x26ae('0x2f')](util[_0x26ae('0x2b')](_0x26ae('0x154'),_0x4be8b9[_0x564ffe],'true'));this['channel'][_0x26ae('0xae')](util[_0x26ae('0x2b')](_0x26ae('0x154'),_0x4be8b9[_0x564ffe],_0x26ae('0x14b')));return{'code':0xc8,'result':_0x26ae('0x14b')};}else{logger[_0x26ae('0x2f')](util[_0x26ae('0x2b')](_0x26ae('0x154'),_0x4be8b9[_0x564ffe],'false'));this['channel'][_0x26ae('0xae')](util[_0x26ae('0x2b')](_0x26ae('0x154'),_0x4be8b9[_0x564ffe],_0x26ae('0x14c')));}}return{'code':0xc8,'result':_0x26ae('0x14c')};};AGIVertices['prototype'][_0x26ae('0x155')]=function(_0x2a5991){logger[_0x26ae('0x2f')](util[_0x26ae('0x2b')]('Enter\x20in\x20HANGUP\x20(%s)\x20block',_0x2a5991[_0x26ae('0xad')]));return this[_0x26ae('0x10')][_0x26ae('0x155')]();};AGIVertices[_0x26ae('0x13')][_0x26ae('0x156')]=function(_0x360a48){logger[_0x26ae('0x2f')](util[_0x26ae('0x2b')](_0x26ae('0x157'),_0x360a48['label']));if(!this[_0x26ae('0x87')](_0x360a48['key'])){return this[_0x26ae('0x10')][_0x26ae('0xae')](_0x26ae('0xf3'));}var _0x23b55a=_0x26ae('0x142');var _0x2efcc4=util['format'](_0x26ae('0x158'),FILES_PATH,rs[_0x26ae('0x126')](0x4));var _0x2f72ff=util['format']('%s.%s',_0x2efcc4,_0x23b55a);var _0x12fcbb=!![];if(_0x360a48['beep']===_0x26ae('0x139')){_0x12fcbb=![];}var _0xf539e6=this[_0x26ae('0x10')][_0x26ae('0x13a')](_0x2efcc4,_0x23b55a,_0x360a48[_0x26ae('0x13b')],_0x360a48[_0x26ae('0x69')],undefined,_0x12fcbb);if(_0xf539e6[_0x26ae('0xa9')]!==-0x1){this[_0x26ae('0x10')][_0x26ae('0xae')](util[_0x26ae('0x2b')](_0x26ae('0x159'),_0x2f72ff));var _0x4eed96=this[_0x26ae('0x85')]['sync'](this,_0x360a48,_0x2f72ff);if(_0x4eed96){for(var _0x4c07d4 in _0x4eed96){if(_0x4eed96['hasOwnProperty'](_0x4c07d4)){this[_0x26ae('0x10')][_0x26ae('0xa5')](util[_0x26ae('0x2b')](_0x26ae('0x15a'),_0x4c07d4[_0x26ae('0x6d')]()),_0x4eed96[_0x4c07d4]);}}return this[_0x26ae('0x10')][_0x26ae('0xae')](util[_0x26ae('0x2b')]('IspeechASR\x20Result\x20%s',JSON[_0x26ae('0x77')](_0x4eed96)));}}return _0xf539e6;};AGIVertices[_0x26ae('0x13')][_0x26ae('0x15b')]=function(_0x20e485){logger['info'](util[_0x26ae('0x2b')]('Enter\x20in\x20ISPEECHTTS\x20(%s)\x20block',_0x20e485[_0x26ae('0xad')]));if(!this[_0x26ae('0x87')](_0x20e485['key'])){return this[_0x26ae('0x10')][_0x26ae('0xae')](_0x26ae('0xf3'));}if(!this[_0x26ae('0x87')](_0x20e485['text'])){return this[_0x26ae('0x10')][_0x26ae('0xae')](_0x26ae('0xcc'));}this[_0x26ae('0x10')][_0x26ae('0xae')](util[_0x26ae('0x2b')]('Trying\x20ispeech\x20TTS\x20%s',_0x20e485[_0x26ae('0x5e')]));var _0x3500fc=this[_0x26ae('0x82')][_0x26ae('0x73')](this,_0x20e485);if(_0x3500fc){this[_0x26ae('0x10')]['noop'](util[_0x26ae('0x2b')](_0x26ae('0x159'),_0x3500fc));var _0x3eeaca=this[_0x26ae('0x10')][_0x26ae('0x15c')](_0x3500fc,_0x20e485[_0x26ae('0x13b')]);try{fs[_0x26ae('0x10e')](_0x3500fc+_0x26ae('0x10f'));}catch(_0xfac369){logger[_0x26ae('0x2d')](_0xfac369);}return _0x3eeaca;}return this['channel'][_0x26ae('0x2d')](_0x20e485,_0x26ae('0x15d'));};AGIVertices[_0x26ae('0x13')][_0x26ae('0x15e')]=function(_0x287f30){logger[_0x26ae('0x2f')](util['format'](_0x26ae('0x15f'),_0x287f30[_0x26ae('0xad')]));if(!this[_0x26ae('0x87')](_0x287f30[_0x26ae('0x160')])){return this['channel'][_0x26ae('0x2d')](_0x287f30,_0x26ae('0x161'));}logger['info'](util['format'](_0x26ae('0x162'),this[_0x26ae('0x10')]['callerid'],_0x287f30[_0x26ae('0x160')]));var _0x26a106=this[_0x26ae('0x56')][_0x26ae('0x73')](this,_0x287f30['findBy']);if(_0x26a106){logger['info'](util[_0x26ae('0x2b')](_0x26ae('0x163'),this[_0x26ae('0x10')][_0x26ae('0x39')],_0x287f30['findBy']));this[_0x26ae('0x10')]['noop'](util[_0x26ae('0x2b')](_0x26ae('0x163'),this['channel']['callerid'],_0x287f30['findBy']));return{'code':0xc8,'result':_0x26ae('0x164')};}else{logger[_0x26ae('0x2f')](util[_0x26ae('0x2b')](_0x26ae('0x165'),this[_0x26ae('0x10')][_0x26ae('0x39')],_0x287f30[_0x26ae('0x160')]));this[_0x26ae('0x10')]['noop'](util[_0x26ae('0x2b')](_0x26ae('0x165'),this[_0x26ae('0x10')]['callerid'],_0x287f30[_0x26ae('0x160')]));return{'code':0xc8,'result':_0x26ae('0x166')};}};AGIVertices[_0x26ae('0x13')][_0x26ae('0x167')]=function(_0x57d4c2){logger[_0x26ae('0x2f')](util['format']('Enter\x20in\x20LOGOUT\x20(%s)\x20block',_0x57d4c2[_0x26ae('0xad')]));if(!this[_0x26ae('0x87')](_0x57d4c2[_0x26ae('0x160')])){return this['channel'][_0x26ae('0x2d')](_0x57d4c2,_0x26ae('0x161'));}logger[_0x26ae('0x2f')](util[_0x26ae('0x2b')](_0x26ae('0x162'),this[_0x26ae('0x10')][_0x26ae('0x39')],_0x57d4c2[_0x26ae('0x160')]));var _0x47f65a=this[_0x26ae('0x55')][_0x26ae('0x73')](this,_0x57d4c2[_0x26ae('0x160')]);if(_0x47f65a){logger[_0x26ae('0x2f')](util['format'](_0x26ae('0x163'),this['channel'][_0x26ae('0x39')],_0x57d4c2['findBy']));this[_0x26ae('0x10')][_0x26ae('0xae')](util[_0x26ae('0x2b')](_0x26ae('0x163'),this[_0x26ae('0x10')][_0x26ae('0x39')],_0x57d4c2['findBy']));return{'code':0xc8,'result':_0x26ae('0x164')};}else{logger['info'](util['format'](_0x26ae('0x165'),this[_0x26ae('0x10')]['callerid'],_0x57d4c2[_0x26ae('0x160')]));this[_0x26ae('0x10')][_0x26ae('0xae')](util[_0x26ae('0x2b')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0x26ae('0x10')][_0x26ae('0x39')],_0x57d4c2[_0x26ae('0x160')]));return{'code':0xc8,'result':_0x26ae('0x166')};}};AGIVertices['prototype'][_0x26ae('0x168')]=function(_0x578f74){logger[_0x26ae('0x2f')](util['format'](_0x26ae('0x169'),_0x578f74[_0x26ae('0xad')]));if(!this['isConfigured'](_0x578f74[_0x26ae('0x16a')])){return this['channel'][_0x26ae('0x2d')](_0x578f74,_0x26ae('0x16b'));}this[_0x26ae('0x10')][_0x26ae('0xae')](util[_0x26ae('0x2b')]('math\x20%s',_0x578f74['operation']));var _0x376b0c=eval(_0x578f74[_0x26ae('0x16a')]);if(!this[_0x26ae('0x87')](_0x578f74[_0x26ae('0xe0')])){return this[_0x26ae('0x10')][_0x26ae('0xae')](_0x26ae('0xe1'));}var _0x4e4de7=this[_0x26ae('0xa7')]['sync'](this,_0x578f74['variable_id']);if(!_0x4e4de7){return this[_0x26ae('0x10')][_0x26ae('0x2d')](_0x578f74,_0x26ae('0xe2'));}if(_['isArray'](_0x376b0c)){var _0x553595=this;_0x376b0c['forEach'](function(_0x436721,_0x121df6){_0x553595['channel'][_0x26ae('0xa5')](util[_0x26ae('0x2b')](_0x26ae('0x16c'),_0x4e4de7,_0x121df6),_0x436721);});return this[_0x26ae('0x10')][_0x26ae('0xae')](util[_0x26ae('0x2b')](_0x26ae('0x16d'),_0x4e4de7));}else{return this[_0x26ae('0x10')]['setVariable'](_0x4e4de7,_0x376b0c);}};AGIVertices[_0x26ae('0x13')]['menu']=function(_0x1352c8){logger[_0x26ae('0x2f')](util[_0x26ae('0x2b')](_0x26ae('0x16e'),_0x1352c8[_0x26ae('0xad')]));if(_0x1352c8['retry']===0x0){return this[_0x26ae('0xab')](_0x1352c8);}_0x1352c8['retry']-=0x1;if(!this['isConfigured'](_0x1352c8[_0x26ae('0x11e')])){return this['channel']['error'](_0x1352c8,_0x26ae('0x11c'));}var _0x13c466=this[_0x26ae('0x11d')][_0x26ae('0x73')](this,_0x1352c8[_0x26ae('0x11e')]);if(!_0x13c466){return this['channel'][_0x26ae('0x2d')](_0x1352c8,_0x26ae('0x11f'));}var _0x3d6941=this[_0x26ae('0x10')][_0x26ae('0x16f')](_0x13c466,_0x1352c8[_0x26ae('0x120')],_0x1352c8[_0x26ae('0x170')]);var _0x463ecc=_0x3d6941['result'];if(_0x3d6941['result']===-0x1){this[_0x26ae('0x37')][_0x26ae('0x73')](this,_0x1352c8,'-1');return _0x3d6941;}else if(_0x3d6941['extra']==='timeout'){_0x3d6941[_0x26ae('0xa9')]=_0x3d6941[_0x26ae('0xa9')]['length']>0x0?_0x3d6941['result']:'t';}else if(_['isEmpty'](_0x3d6941[_0x26ae('0xa9')])){_0x3d6941[_0x26ae('0xa9')]='#';_0x463ecc='#';}if(!this[_0x26ae('0x87')](_0x1352c8[_0x26ae('0xe0')])){this[_0x26ae('0x10')][_0x26ae('0xae')](_0x26ae('0xe1'));}else{var _0x4c2f97=this[_0x26ae('0xa7')][_0x26ae('0x73')](this,_0x1352c8[_0x26ae('0xe0')]);if(!_0x4c2f97){return this[_0x26ae('0x10')][_0x26ae('0x2d')](_0x1352c8,_0x26ae('0xe2'));}this[_0x26ae('0x10')][_0x26ae('0xa5')](_0x4c2f97,_0x463ecc);}this[_0x26ae('0x37')][_0x26ae('0x73')](this,_0x1352c8,_0x463ecc);return _0x3d6941;};AGIVertices[_0x26ae('0x13')][_0x26ae('0xae')]=function(_0x568ee9){logger['info'](util[_0x26ae('0x2b')](_0x26ae('0x171'),_0x568ee9[_0x26ae('0xad')]));return this['channel']['noop'](_0x568ee9[_0x26ae('0x172')]||_0x568ee9[_0x26ae('0xad')]);};AGIVertices[_0x26ae('0x13')][_0x26ae('0x173')]=function(_0x54f2db){logger['info'](util[_0x26ae('0x2b')]('Enter\x20in\x20PAUSE\x20(%s)\x20block',_0x54f2db['label']));if(!this['isConfigured'](_0x54f2db[_0x26ae('0x160')])){return this['channel'][_0x26ae('0x2d')](_0x54f2db,_0x26ae('0x161'));}logger[_0x26ae('0x2f')](util[_0x26ae('0x2b')](_0x26ae('0x162'),this[_0x26ae('0x10')]['callerid'],_0x54f2db[_0x26ae('0x160')]));var _0x46e6b4=this['getPause']['sync'](this,_0x54f2db[_0x26ae('0x174')]);var _0xeb4bc5=this['agentPause'][_0x26ae('0x73')](this,_0x54f2db[_0x26ae('0x160')],_0x46e6b4);if(_0xeb4bc5){logger['info'](util[_0x26ae('0x2b')](_0x26ae('0x163'),this[_0x26ae('0x10')]['callerid'],_0x54f2db[_0x26ae('0x160')]));this[_0x26ae('0x10')][_0x26ae('0xae')](util['format'](_0x26ae('0x163'),this['channel'][_0x26ae('0x39')],_0x54f2db[_0x26ae('0x160')]));return{'code':0xc8,'result':_0x26ae('0x164')};}else{logger[_0x26ae('0x2f')](util[_0x26ae('0x2b')](_0x26ae('0x165'),this[_0x26ae('0x10')][_0x26ae('0x39')],_0x54f2db[_0x26ae('0x160')]));this[_0x26ae('0x10')][_0x26ae('0xae')](util['format']('AGENT\x20%s\x20FOUND\x20BY',this[_0x26ae('0x10')][_0x26ae('0x39')],_0x54f2db[_0x26ae('0x160')]));return{'code':0xc8,'result':'failure'};}};AGIVertices[_0x26ae('0x13')][_0x26ae('0x175')]=function(_0x170ad4){logger[_0x26ae('0x2f')](util[_0x26ae('0x2b')](_0x26ae('0x176'),_0x170ad4[_0x26ae('0xad')]));if(!this[_0x26ae('0x87')](_0x170ad4[_0x26ae('0x11e')])){return this[_0x26ae('0x10')][_0x26ae('0x2d')](_0x170ad4,'no\x20file\x20audio\x20selected');}var _0x3aa388=this[_0x26ae('0x11d')][_0x26ae('0x73')](this,_0x170ad4[_0x26ae('0x11e')]);if(!_0x3aa388){return this[_0x26ae('0x10')]['error'](_0x170ad4,_0x26ae('0x11f'));}var _0x4a95f4=this[_0x26ae('0x10')][_0x26ae('0xb3')](_0x26ae('0x177'),[_0x3aa388,_0x170ad4[_0x26ae('0xf0')]]);if(_0x4a95f4[_0x26ae('0xa9')]===-0x1){return _0x4a95f4;}return this['channel']['noop'](util[_0x26ae('0x2b')](_0x26ae('0xc9'),'PLAYBACK',_0x3aa388));};AGIVertices[_0x26ae('0x13')][_0x26ae('0x178')]=function(_0x518f56){logger[_0x26ae('0x2f')](util[_0x26ae('0x2b')](_0x26ae('0x179'),_0x518f56[_0x26ae('0xad')]));if(!this[_0x26ae('0x87')](_0x518f56['queue_id'])){return this[_0x26ae('0x10')][_0x26ae('0x2d')](_0x518f56,'no\x20queue\x20selected');}var _0x296871='';var _0x1a8c9d=parseInt(_0x518f56['queue_id'],0xa);if(isNaN(_0x1a8c9d)){_0x296871=_0x518f56[_0x26ae('0x17a')];}else{_0x296871=this[_0x26ae('0x16')]['sync'](this,_0x518f56[_0x26ae('0x17a')]);if(!_0x296871){return this[_0x26ae('0x10')][_0x26ae('0x2d')](_0x518f56,_0x26ae('0x17b'));}}var _0x374658='';if(this[_0x26ae('0x87')](_0x518f56[_0x26ae('0x11e')])){var _0x8c467f=this[_0x26ae('0x11d')]['sync'](this,_0x518f56[_0x26ae('0x11e')]);if(_0x8c467f){_0x374658=_0x8c467f;}}this[_0x26ae('0x37')][_0x26ae('0x73')](this,_0x518f56,_0x296871);if(_0x518f56['opts'][_0x26ae('0x17c')]('x')<0x0){_0x518f56[_0x26ae('0xf0')]+='x';}if(_0x518f56[_0x26ae('0xf0')][_0x26ae('0x17c')]('X')<0x0){_0x518f56['opts']+='X';}this[_0x26ae('0x10')][_0x26ae('0xa5')](_0x26ae('0x17d'),_0x296871?_0x296871[_0x26ae('0x17e')]():'');var _0x22c04b=this[_0x26ae('0x10')]['exec'](_0x26ae('0x17f'),[_0x296871,_0x518f56[_0x26ae('0xf0')],_0x518f56[_0x26ae('0x66')],_0x374658,_0x518f56['timeout'],_0x518f56['agi'],_0x518f56[_0x26ae('0x180')],_0x518f56[_0x26ae('0x181')],'',_0x518f56[_0x26ae('0x182')]]);if(_0x22c04b[_0x26ae('0xa9')]===-0x1){return _0x22c04b;}return this[_0x26ae('0x10')][_0x26ae('0xae')](util[_0x26ae('0x2b')]('Executed\x20command\x20%s\x20%s',_0x26ae('0x17f'),_0x296871));};AGIVertices['prototype'][_0x26ae('0x183')]=function(_0xfc6b36){logger[_0x26ae('0x2f')](util[_0x26ae('0x2b')](_0x26ae('0x184'),_0xfc6b36[_0x26ae('0xad')]));var _0x171e3c=_0xfc6b36[_0x26ae('0x185')]||_0x26ae('0x142');var _0x131280=util[_0x26ae('0x2b')](_0x26ae('0x186'),this[_0x26ae('0x10')][_0x26ae('0x3b')],rs[_0x26ae('0x126')](0x5));var _0x35a970=util[_0x26ae('0x2b')](_0x26ae('0x187'),FILES_PATH,_0x131280,_0x171e3c);var _0x27e239=util[_0x26ae('0x2b')](_0x26ae('0x158'),FILES_PATH,_0x131280);this[_0x26ae('0x3a')][_0x26ae('0x73')](this,_0xfc6b36,_0x131280,_0x35a970);this['channel']['setVariable'](_0x26ae('0x188'),_0x131280);logger[_0x26ae('0x2f')](_0x26ae('0x189'),_0x27e239,_0x171e3c,_0xfc6b36[_0x26ae('0x18a')],_0xfc6b36['timeout']);return this['channel'][_0x26ae('0x13a')](_0x27e239,_0x171e3c,_0xfc6b36[_0x26ae('0x18a')],_0xfc6b36[_0x26ae('0x69')],undefined,!![]);};AGIVertices[_0x26ae('0x13')]['restapi']=function(_0x402c7a){logger[_0x26ae('0x2f')](util[_0x26ae('0x2b')](_0x26ae('0x18b'),_0x402c7a['label']));if(!this[_0x26ae('0x87')](_0x402c7a[_0x26ae('0x66')])){return this[_0x26ae('0x10')][_0x26ae('0xae')](_0x26ae('0x18c'));}var _0x29ead1=this['restAPI']['sync'](this,_0x402c7a);logger['info'](util['format'](_0x26ae('0x18d'),util[_0x26ae('0x18e')](_0x29ead1,{'showHidden':![],'depth':null})));if(!this[_0x26ae('0x87')](_0x402c7a[_0x26ae('0xe0')])){return this[_0x26ae('0x10')][_0x26ae('0xae')](_0x26ae('0x18f'));}var _0x591985=this[_0x26ae('0xa7')][_0x26ae('0x73')](this,_0x402c7a[_0x26ae('0xe0')]);if(!_0x591985){return this[_0x26ae('0x10')][_0x26ae('0x2d')](_0x402c7a,_0x26ae('0xe2'));}this[_0x26ae('0x10')][_0x26ae('0xa5')](util[_0x26ae('0x2b')](_0x26ae('0x190'),_0x591985),_0x29ead1[_0x26ae('0x79')]?_0x29ead1[_0x26ae('0x79')]:_0x26ae('0x191'));this['channel'][_0x26ae('0xa5')](util[_0x26ae('0x2b')](_0x26ae('0x192'),_0x591985),_0x29ead1[_0x26ae('0x193')]?_0x29ead1[_0x26ae('0x193')]:'OK');if(_0x29ead1[_0x26ae('0x6e')]){try{this[_0x26ae('0xa1')](_0x29ead1['body'],_0x591985);}catch(_0x18af58){logger[_0x26ae('0x2d')](util[_0x26ae('0x2b')](_0x26ae('0x194'),_0x591985));}}return this[_0x26ae('0x10')]['noop'](util[_0x26ae('0x2b')](_0x26ae('0x195'),_0x591985));};AGIVertices[_0x26ae('0x13')]['saydigits']=function(_0x5d9961){logger[_0x26ae('0x2f')](util[_0x26ae('0x2b')]('Enter\x20in\x20SAYDIGITS\x20(%s)\x20block',_0x5d9961['label']));return this[_0x26ae('0x10')][_0x26ae('0x196')](_0x5d9961[_0x26ae('0x197')]['replace'](/\s+/g,''),_0x5d9961[_0x26ae('0x18a')]);};AGIVertices[_0x26ae('0x13')]['saynumber']=function(_0x11c2e2){logger[_0x26ae('0x2f')](util[_0x26ae('0x2b')]('Enter\x20in\x20SAYNUMBER\x20(%s)\x20block',_0x11c2e2[_0x26ae('0xad')]));return this[_0x26ae('0x10')]['sayNumber'](_0x11c2e2['number'][_0x26ae('0xde')](/\s+/g,''),_0x11c2e2[_0x26ae('0x18a')]);};AGIVertices[_0x26ae('0x13')][_0x26ae('0x198')]=function(_0x307082){logger['info'](util['format']('Enter\x20in\x20SAYPHONETIC\x20(%s)\x20block',_0x307082[_0x26ae('0xad')]));return this[_0x26ae('0x10')][_0x26ae('0x199')](_0x307082['text'],_0x307082[_0x26ae('0x18a')]);};AGIVertices[_0x26ae('0x13')][_0x26ae('0x19a')]=function(_0x127df2){logger[_0x26ae('0x2f')](util['format'](_0x26ae('0x19b'),_0x127df2[_0x26ae('0xad')]));if(!this[_0x26ae('0x87')](_0x127df2['account_id'])){return this['channel'][_0x26ae('0xae')](_0x26ae('0x19c'));}var _0x25aaec=this['getMailAccount'][_0x26ae('0x73')](this,_0x127df2[_0x26ae('0x19d')]);if(!_0x25aaec||!_0x25aaec['Smtp']){return this[_0x26ae('0x10')][_0x26ae('0x2d')](_0x127df2,_0x26ae('0x19e'));}var _0x2f9c81={'from':util[_0x26ae('0x2b')]('\x22%s\x22\x20<%s>',_0x25aaec['name'],_0x25aaec[_0x26ae('0x19f')]||_0x25aaec[_0x26ae('0x1a0')]['user']),'to':_0x127df2['to']||'','cc':_0x127df2['cc']||'','bcc':_0x127df2[_0x26ae('0x1a1')]||'','subject':_0x127df2['subject'],'html':_0x127df2[_0x26ae('0x5e')],'text':_0x127df2[_0x26ae('0x5e')]};if(this['isConfigured'](_0x127df2[_0x26ae('0x1a2')])){}logger[_0x26ae('0xe8')](_0x26ae('0x1a3'),JSON[_0x26ae('0x77')](_0x2f9c81));this[_0x26ae('0x37')]['sync'](this,_0x127df2,_0x127df2[_0x26ae('0x19d')]);this['channel']['noop'](util[_0x26ae('0x2b')](_0x26ae('0x1a4'),_0x25aaec[_0x26ae('0x14')]));this[_0x26ae('0x25')]['sync'](this,_0x25aaec[_0x26ae('0x1a5')],_0x2f9c81);return this[_0x26ae('0x10')]['noop'](_0x26ae('0x1a6'));};AGIVertices['prototype'][_0x26ae('0x1a7')]=function(_0x296716){logger[_0x26ae('0x2f')](util['format']('Enter\x20in\x20SENDFAX\x20(%s)\x20block',_0x296716['label']));return this['channel'][_0x26ae('0xae')](_0x26ae('0x1a8'));};AGIVertices['prototype'][_0x26ae('0x1a9')]=function(_0x52ddc4){logger[_0x26ae('0x2f')](util[_0x26ae('0x2b')](_0x26ae('0x1aa'),_0x52ddc4[_0x26ae('0xad')]));if(!this[_0x26ae('0x87')](_0x52ddc4[_0x26ae('0x1ab')])){return this[_0x26ae('0x10')][_0x26ae('0xae')]('no\x20sms\x20account\x20configured');}var _0x5b5e9c=this[_0x26ae('0x34')]['sync'](this,_0x52ddc4[_0x26ae('0x1ab')]);if(!_0x5b5e9c){return this[_0x26ae('0x10')][_0x26ae('0x2d')](_0x52ddc4,_0x26ae('0x1ac'));}var _0x1bac43={'body':_0x52ddc4['sms_text'],'phone':_0x52ddc4['to']||'','SmsAccountId':_0x5b5e9c['id']};logger[_0x26ae('0xe8')]('sendSMS\x20message',JSON[_0x26ae('0x77')](_0x1bac43));this[_0x26ae('0x37')][_0x26ae('0x73')](this,_0x52ddc4,_0x52ddc4[_0x26ae('0x1ab')]);this[_0x26ae('0x10')][_0x26ae('0xae')](util[_0x26ae('0x2b')]('Trying\x20SendSMS\x20with\x20account\x20%s',_0x5b5e9c['name']));this['createSmsMessage'][_0x26ae('0x73')](this,_0x1bac43);return this['channel']['noop'](_0x26ae('0x1ad'));};AGIVertices['prototype']['set']=function(_0x9857c9){logger[_0x26ae('0x2f')](util[_0x26ae('0x2b')](_0x26ae('0x1ae'),_0x9857c9[_0x26ae('0xad')]));if(!this[_0x26ae('0x87')](_0x9857c9[_0x26ae('0xe0')])){return this[_0x26ae('0x10')][_0x26ae('0x2d')](_0x9857c9,'no\x20variable\x20selected');}var _0x263d6f=this[_0x26ae('0xa7')][_0x26ae('0x73')](this,_0x9857c9[_0x26ae('0xe0')]);if(!_0x263d6f){return this[_0x26ae('0x10')][_0x26ae('0x2d')](_0x9857c9,_0x26ae('0xe2'));}return this[_0x26ae('0x10')][_0x26ae('0xa5')](_0x263d6f,_0x9857c9['variable_value']);};AGIVertices['prototype'][_0x26ae('0x1af')]=function(_0x255b58){logger[_0x26ae('0x2f')](util[_0x26ae('0x2b')]('Enter\x20in\x20START\x20(%s)\x20block',_0x255b58[_0x26ae('0xad')]));this['channel'][_0x26ae('0xae')]('START\x20CALLY\x20SQUARE');if(_0x255b58['answer']===_0x26ae('0x1b0')){this[_0x26ae('0x10')][_0x26ae('0xae')](_0x26ae('0x1b1'));return this[_0x26ae('0x10')][_0x26ae('0xc1')]();}return this['channel'][_0x26ae('0xae')](_0x26ae('0x1b2'));};AGIVertices[_0x26ae('0x13')]['subproject']=function(_0x545baf){logger[_0x26ae('0x2f')](util[_0x26ae('0x2b')](_0x26ae('0x1b3'),_0x545baf[_0x26ae('0xad')]));if(!this[_0x26ae('0x87')](_0x545baf[_0x26ae('0x1b4')])){return this[_0x26ae('0x10')][_0x26ae('0x2d')](_0x545baf,'no\x20subproject\x20selected');}var _0x42ef09=this[_0x26ae('0x19')][_0x26ae('0x73')](this,_0x545baf[_0x26ae('0x1b4')]);if(!this['isConfigured'](_0x42ef09)){return this[_0x26ae('0x10')][_0x26ae('0x2d')](_0x545baf,util[_0x26ae('0x2b')](_0x26ae('0x1b5'),_0x545baf[_0x26ae('0x1b4')]));}if(_0x42ef09===this[_0x26ae('0x10')][_0x26ae('0x38')]){return this[_0x26ae('0x10')][_0x26ae('0x2d')](_0x545baf,_0x26ae('0x1b6'));}this[_0x26ae('0x37')]['sync'](this,_0x545baf,_0x42ef09);var _0x5be280=this[_0x26ae('0x10')]['exec']('AGI',util[_0x26ae('0x2b')](_0x26ae('0x1b7'),config['agi'][_0x26ae('0x1b8')]||_0x26ae('0x1b9'),_0x42ef09,this[_0x26ae('0x10')]['arg_1']));if(_0x5be280[_0x26ae('0xa9')]===-0x1){return _0x5be280;}return this[_0x26ae('0x10')][_0x26ae('0xae')](util[_0x26ae('0x2b')](_0x26ae('0xc9'),_0x26ae('0x1ba'),_0x42ef09));};AGIVertices['prototype'][_0x26ae('0x1bb')]=function(_0x38b605){logger[_0x26ae('0x2f')](util['format'](_0x26ae('0x1bc'),_0x38b605['label']));var _0x3ceed2=this['shellCommand'][_0x26ae('0x73')](this,_0x38b605['command']);this['createSquareDetailsReport'][_0x26ae('0x73')](this,_0x38b605,_0x38b605['command']);if(this[_0x26ae('0x87')](_0x38b605['variable_id'])){var _0x21620f=this[_0x26ae('0xa7')][_0x26ae('0x73')](this,_0x38b605[_0x26ae('0xe0')]);if(_0x21620f){this[_0x26ae('0x10')][_0x26ae('0xa5')](_0x21620f,_0x3ceed2);return this['channel'][_0x26ae('0xae')](util[_0x26ae('0x2b')](_0x26ae('0x1bd'),_0x38b605[_0x26ae('0xbe')],_0x21620f));}}return this[_0x26ae('0x10')][_0x26ae('0xae')](util['format'](_0x26ae('0x1be'),_0x38b605['command']));};AGIVertices[_0x26ae('0x13')]['google_cloud_tts']=function(_0x3fa3ab){logger[_0x26ae('0x2f')](util[_0x26ae('0x2b')](_0x26ae('0x1bf'),_0x3fa3ab[_0x26ae('0xad')]));_0x3fa3ab[_0x26ae('0x5e')]=_0x3fa3ab[_0x26ae('0x5e')][_0x26ae('0xde')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0x26ae('0x87')](_0x3fa3ab[_0x26ae('0x5c')])){return this[_0x26ae('0x10')][_0x26ae('0xae')](_0x26ae('0x1c0'));}if(!this['isConfigured'](_0x3fa3ab['text'])){return this[_0x26ae('0x10')][_0x26ae('0xae')]('no\x20text\x20configured');}this['channel'][_0x26ae('0xae')](util['format'](_0x26ae('0x1c1'),_0x3fa3ab[_0x26ae('0x5e')]));var _0x23d3c1=this[_0x26ae('0x5b')][_0x26ae('0x73')](this,_0x3fa3ab);if(_0x23d3c1){this[_0x26ae('0x10')][_0x26ae('0xae')](util[_0x26ae('0x2b')](_0x26ae('0x1c2'),_0x23d3c1));var _0x3e79c7=this[_0x26ae('0x10')][_0x26ae('0x15c')](_0x23d3c1);try{fs['unlink'](_0x23d3c1+_0x26ae('0x10f'));}catch(_0x4556a9){logger['error'](_0x4556a9);}return _0x3e79c7;}return this[_0x26ae('0x10')][_0x26ae('0x2d')](_0x3fa3ab,'Google\x20Cloud\x20TTS\x20is\x20unreachable');};AGIVertices[_0x26ae('0x13')][_0x26ae('0x1c3')]=function(_0x3649ed){logger[_0x26ae('0x2f')](util['format']('Enter\x20in\x20GOOGLETTS\x20(%s)\x20block',_0x3649ed[_0x26ae('0xad')]));_0x3649ed[_0x26ae('0x5e')]=_0x3649ed['text']['replace'](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0x26ae('0x87')](_0x3649ed[_0x26ae('0x5e')])){return this[_0x26ae('0x10')][_0x26ae('0xae')]('no\x20text\x20configured');}this[_0x26ae('0x10')]['noop'](util['format'](_0x26ae('0x1c4'),_0x3649ed[_0x26ae('0x5e')]));var _0x240025=this[_0x26ae('0x64')][_0x26ae('0x73')](this,_0x3649ed);if(_0x240025){this[_0x26ae('0x10')]['noop'](util['format'](_0x26ae('0x1c5'),_0x240025));var _0x28c084=this['channel'][_0x26ae('0x15c')](_0x240025);try{fs[_0x26ae('0x10e')](_0x240025+_0x26ae('0x10f'));}catch(_0x431ff3){logger[_0x26ae('0x2d')](_0x431ff3);}return _0x28c084;}return this[_0x26ae('0x10')][_0x26ae('0x2d')](_0x3649ed,'Google\x20TTS\x20is\x20unreachable');};AGIVertices[_0x26ae('0x13')][_0x26ae('0x1c6')]=function(_0x58a53a){logger[_0x26ae('0x2f')](util[_0x26ae('0x2b')]('Enter\x20in\x20UNPAUSE\x20(%s)\x20block',_0x58a53a[_0x26ae('0xad')]));if(!this['isConfigured'](_0x58a53a[_0x26ae('0x160')])){return this[_0x26ae('0x10')][_0x26ae('0x2d')](_0x58a53a,'no\x20find\x20by\x20configured');}logger[_0x26ae('0x2f')](util[_0x26ae('0x2b')](_0x26ae('0x162'),this[_0x26ae('0x10')][_0x26ae('0x39')],_0x58a53a[_0x26ae('0x160')]));var _0x19f412=this['agentUnpause'][_0x26ae('0x73')](this,_0x58a53a[_0x26ae('0x160')]);if(_0x19f412){logger[_0x26ae('0x2f')](util[_0x26ae('0x2b')](_0x26ae('0x163'),this[_0x26ae('0x10')]['callerid'],_0x58a53a[_0x26ae('0x160')]));this['channel'][_0x26ae('0xae')](util[_0x26ae('0x2b')](_0x26ae('0x163'),this[_0x26ae('0x10')][_0x26ae('0x39')],_0x58a53a[_0x26ae('0x160')]));return{'code':0xc8,'result':_0x26ae('0x164')};}else{logger['info'](util[_0x26ae('0x2b')](_0x26ae('0x165'),this[_0x26ae('0x10')][_0x26ae('0x39')],_0x58a53a[_0x26ae('0x160')]));this[_0x26ae('0x10')][_0x26ae('0xae')](util[_0x26ae('0x2b')](_0x26ae('0x165'),this[_0x26ae('0x10')][_0x26ae('0x39')],_0x58a53a[_0x26ae('0x160')]));return{'code':0xc8,'result':_0x26ae('0x166')};}};AGIVertices['prototype'][_0x26ae('0x1c7')]=function(_0x2e385d){logger[_0x26ae('0x2f')](util[_0x26ae('0x2b')](_0x26ae('0x1c8'),_0x2e385d[_0x26ae('0xad')]));var _0x54dd76=this[_0x26ae('0x10')][_0x26ae('0xb3')]('VOICEMAIL',[_0x2e385d[_0x26ae('0x1c9')],_0x2e385d[_0x26ae('0x7b')]]);if(_0x54dd76[_0x26ae('0xa9')]===-0x1){return _0x54dd76;}return this[_0x26ae('0x10')][_0x26ae('0xae')](util[_0x26ae('0x2b')](_0x26ae('0xc9'),_0x26ae('0x1ca'),_0x2e385d[_0x26ae('0x1c9')]));};AGIVertices[_0x26ae('0x13')][_0x26ae('0x1cb')]=function(_0x5f1ab5){logger['info'](util['format']('Enter\x20in\x20SWITCH\x20(%s)\x20block',_0x5f1ab5['label']));if(!this['isConfigured'](_0x5f1ab5[_0x26ae('0xe0')])){return this['channel'][_0x26ae('0x2d')](_0x5f1ab5,_0x26ae('0x1cc'));}var _0x2786b2=this[_0x26ae('0xa7')][_0x26ae('0x73')](this,_0x5f1ab5[_0x26ae('0xe0')]);if(!_0x2786b2){return this[_0x26ae('0x10')][_0x26ae('0x2d')](_0x5f1ab5,_0x26ae('0xe2'));}var _0x1f0d49=this[_0x26ae('0x10')][_0x26ae('0xa7')](_0x2786b2);return{'code':0xc8,'result':_0x1f0d49[_0x26ae('0xa8')]?_0x1f0d49[_0x26ae('0xa8')]:'-'};};String[_0x26ae('0x13')][_0x26ae('0x1cd')]=function(_0x2047eb,_0x8f525){return this['split'](_0x2047eb)[_0x26ae('0x1ce')](_0x8f525);};module[_0x26ae('0x1cf')]=AGIVertices;
\ No newline at end of file
+var _0x8ba2=['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_polly_voice','Amy','awsLex','aws_bot_name','googleASR','google_asr_language','tildeASR','appid','appsecret','agicommand','clone','isString','replaceAllVariables','recursiveNodeIndex','isArray','length','saveRestApiResult','hasOwnProperty','%s.%s','setVariable','replaceObjectAllVariables','split','replaceAll','extra','getAndSetVariable','result','The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s','maxRetry','sync','retry','mrcpsynth','Enter\x20in\x20MRCPSynth\x20(%s)\x20block','noop','no\x20text\x20configured','MRCPSynth','Executed\x20command\x20MRCPSynth\x20%s','Enter\x20in\x20MRCPRecog\x20(%s)\x20block','no\x20grammar\x20configured','grammar','exec','MRCPRecog','RECOG_INPUT()','RECOG_INSTANCE()','MRCP_RECOG_INSTANCE','Enter\x20in\x20AGI\x20(%s)\x20block','label','command','args','answer','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','Executed\x20command\x20%s\x20%s','lumenvoxtts','sestektts','Enter\x20in\x20SESTEKTTS\x20(%s)\x20block','lumenvoxasr','LUMENVOX_ASR_CONFIDENCE','Executed\x20command\x20MRCPRecog\x20%s','SESTEK_ASR_CONFIDENCE','SESTEK_ASR_TRANSCRIPT','SESTEK_ASR_INSTANCE','Enter\x20in\x20DATABASE\x20(%s)\x20block','no\x20odbc\x20database\x20found','query','no\x20query\x20configured','replace','no\x20variable\x20selected\x20for\x20the\x20result','variable_id','no\x20variable\x20found','keys','%s[%s][%s]','variable\x20%s\x20set','debug','Enter\x20in\x20DIAL\x20(%s)\x20block','sip_id','no\x20user\x20selected','no\x20user\x20found','DIAL','opts','dialogflow','Enter\x20in\x20DIALOGFLOW\x20(%s)\x20block','no\x20key\x20configured','bot','Trying\x20Dialogflow:\x20%s','DIALOGFLOW_%s','toUpperCase','speech','out','Dialogflow\x20Result\x20%s','Dialogflow\x20is\x20unreachable','dialogflowV2','no\x20client_email\x20configured','no\x20private_key\x20configured','Trying\x20DialogflowV2:\x20%s','providerResponse','DialogflowV2\x20Result\x20%s','sesteknda','Enter\x20in\x20SESTEKNDA\x20(%s)\x20block','ndauth_url','username','no\x20username\x20configured','password','no\x20password\x20configured','Trying\x20SestekNDA:\x20%s','Sestek\x20NDA\x20%s\x20file\x20created','audiofile','unlink','SestekNDA\x20Result\x20%s','SestekNDA\x20is\x20unreachable','Enter\x20in\x20END\x20(%s)\x20block','end','ext_dial','Enter\x20in\x20EXTERNAL\x20DIAL\x20(%s)\x20block','trunk_id','no\x20trunk\x20selected','no\x20trunk\x20found','trunk_name','SIP/%s/%s','Executed\x20command\x20%s','finally','Enter\x20in\x20FINALLY\x20(%s)\x20block','Enter\x20in\x20GETDIGITS\x20(%s)\x20block','file_id','no\x20file\x20audio\x20selected','no\x20file\x20audio\x20found','response','maxdigit','test','mindigit','hiddendigitsnum','first','substr','generate','getsecretdigits','Enter\x20in\x20GETSECRETDIGITS\x20(%s)\x20block','Enter\x20in\x20GOAL\x20(%s)\x20block','goalname','awspolly','[AGI]\x20Enter\x20in\x20AWSPOLLY\x20(%s)\x20block','no\x20valid\x20credentials\x20configured','streamFile','.wav','awslex','Enter\x20in\x20Amazon\x20Lex\x20(%s)\x20block','Amazon\x20Lex\x20ready\x20for\x20fulfillment','amazonlex','Amazon\x20Lex\x20Result\x20%s','Amazon\x20Lex\x20is\x20unreachable','googleasr','wav','%s/recordings/%s','beep','NOBEEP','recordFile','intKey','google\x20%s\x20file\x20created','GOOGLE_ASR_%s','GoogleASR\x20Result\x20%s','tildeasr','Enter\x20in\x20TILDEASR\x20(%s)\x20block','no\x20appsecret\x20configured','TILDE_ASR_%s','TildeASR\x20Result\x20%s','gotoc','Enter\x20in\x20GOTO\x20(%s)\x20block','continueAt','Enter\x20in\x20GOTOIF\x20(%s)\x20block','no\x20condition\x20configured','condition','true','false','EVAL\x20CONDITION\x20%s\x20%s','gotoiftime','Enter\x20in\x20GOTOIFTIME\x20(%s)\x20block','interval_id','no\x20intervals\x20found','IFTIME(%s?true:false)','IFTIME\x20%s\x20%s','hangup','Enter\x20in\x20ISPEECHASR\x20(%s)\x20block','ispeech\x20%s\x20file\x20created','ISPEECH_ASR_%s','IspeechASR\x20Result\x20%s','ispeechtts','Enter\x20in\x20ISPEECHTTS\x20(%s)\x20block','Trying\x20ispeech\x20TTS\x20%s','Enter\x20in\x20LOGIN\x20(%s)\x20block','no\x20find\x20by\x20configured','FIND\x20AGENT\x20%s\x20BY\x20%s','findBy','AGENT\x20%s\x20FOUND\x20BY','success','AGENT\x20%s\x20NOT\x20FOUND\x20BY','failure','logout','Enter\x20in\x20LOGOUT\x20(%s)\x20block','math','operation','math\x20%s','variable\x20%s[key]\x20set','getData','Enter\x20in\x20NOOP\x20(%s)\x20block','output','pause','Enter\x20in\x20PAUSE\x20(%s)\x20block','pause_id','playback','Enter\x20in\x20PLAYBACK\x20(%s)\x20block','PLAYBACK','queue','Enter\x20in\x20QUEUE\x20(%s)\x20block','queue_id','no\x20queue\x20selected','getVoiceQueue','no\x20queue\x20found','indexOf','XMCS-QUEUE','toLowerCase','QUEUE','gosub','position','Enter\x20in\x20RECORD\x20(%s)\x20block','recordingFormat','%s_%s','%s/recordings/%s.%s','RECORDING_SAVENAME','Recording\x20%s\x20%s\x20%s\x20%s','restapi','Enter\x20in\x20RESTAPI\x20(%s)\x20block','no\x20url\x20configured','Response:','inspect','no\x20variable\x20selected\x20for\x20the\x20response','%s_STATUS_CODE','saydigits','digits','escape_digits','saynumber','Enter\x20in\x20SAYNUMBER\x20(%s)\x20block','sayNumber','Enter\x20in\x20SAYPHONETIC\x20(%s)\x20block','sayPhonetic','sendMail','account_id','no\x20mail\x20account\x20configured','Smtp','no\x20mail\x20account\x20found','\x22%s\x22\x20<%s>','user','bcc','subject','template_id','sendMail\x20message','Trying\x20SendMail\x20with\x20account\x20%s','smtpOptions','Mail\x20message\x20added\x20to\x20outgoing\x20process','sendFax','sendSMS','Enter\x20in\x20SENDSMS\x20(%s)\x20block','sms_account_id','no\x20sms\x20account\x20configured','sms_text','sendSMS\x20message','Trying\x20SendSMS\x20with\x20account\x20%s','Sms\x20message\x20added\x20to\x20outgoing\x20process','Enter\x20in\x20SET\x20(%s)\x20block','no\x20variable\x20selected','Enter\x20in\x20START\x20(%s)\x20block','yes','Answer','no\x20subproject\x20selected','no\x20subproject\x20found\x20with\x20id\x20%d','project_id','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','Google\x20Cloud\x20TTS\x20%s\x20file\x20created','Google\x20Cloud\x20TTS\x20is\x20unreachable','tts','Enter\x20in\x20GOOGLETTS\x20(%s)\x20block','Trying\x20Google\x20TTS\x20%s','unpause','voicemail','Enter\x20in\x20VOICEMAIL\x20(%s)\x20block','VOICEMAIL','mailbox','Enter\x20in\x20SWITCH\x20(%s)\x20block','join','util','lodash','shelljs','randomstring','moment','mustache','../../config/logger','agi','../../config/environment','../../config/environment/shared','./scripts','/var/opt/motion2/server/files','rawBody','menu','getdigits','channel','rpc','mailRpc','prototype','getVariable','getVariableById','then','name','catch','getVoiceQueueById','getSquareProject','getSquareOdbc','getUser','getUserById','getTrunk','getTrunkById','getSound','getSoundById','getSoundPath','save_name','getMailAccount','getMailAccountById','sendMailMessage','getIntervals','IntervalId','map','Intervals','interval','format','%s/sounds/converted/%s','getQueryOdbc','open','Error\x20getting\x20ODBC\x20connection\x20%s','info','Query\x20executed\x20correctly\x20%s','close','error','Error\x20closing\x20connection\x20to\x20odbc\x20%s','getSmsAccount','createSmsMessage','createSquareDetailsReport','uniqueid','arg_1','callerid','createSquareRecording','context','extension','priority','accountcode','dnid','file','createSquareMessage','createCmContact','isEmpty','isNil','callback_','lastName','phone','list_id','callback','Callback\x20scheduled\x20at\x20','scheduledAt','toString','callback_priority','getPause','getPauseById','agentPause','agent','agentUnpause','agentLogout','internal','agentLogin','trim','googleCloudTTS','apiKey','text','languageCode','en-US','ssmlGender','audioEncoding','googleTTS','google_tts_language','restAPI','url','method','timeout','POST','PUT','parse','An\x20incorrect\x20formatted\x20json\x20body\x20has\x20been\x20passed\x20to\x20the\x20function','headers','rawHeaders','computedVariables','uri','render','stringify','body','An\x20incorrect\x20formatted\x20json\x20has\x20been\x20passed\x20to\x20the\x20function','statusCode','statusMessage','message','options','googleDialogflow','key','dialogflow_language'];(function(_0x4441ce,_0x427466){var _0x19a770=function(_0x1e0cb1){while(--_0x1e0cb1){_0x4441ce['push'](_0x4441ce['shift']());}};_0x19a770(++_0x427466);}(_0x8ba2,0x13f));var _0x28ba=function(_0x2d9e7b,_0x3d8207){_0x2d9e7b=_0x2d9e7b-0x0;var _0x5acd78=_0x8ba2[_0x2d9e7b];return _0x5acd78;};'use strict';var fs=require('fs');var util=require(_0x28ba('0x0'));var _=require(_0x28ba('0x1'));var sh=require(_0x28ba('0x2'));var odbc=require('odbc')();var rs=require(_0x28ba('0x3'));var moment=require(_0x28ba('0x4'));var Mustache=require(_0x28ba('0x5'));var rp=require('request-promise');var logger=require(_0x28ba('0x6'))(_0x28ba('0x7'));var config=require(_0x28ba('0x8'));var shared=require(_0x28ba('0x9'));var scripts=require(_0x28ba('0xa'));var FILES_PATH=_0x28ba('0xb');var recursiveMapAttributes=['rawHeaders',_0x28ba('0xc')];var verticesWithRetry=[_0x28ba('0xd'),_0x28ba('0xe'),'getsecretdigits'];var AGIVertices=function(_0x3d98c8,_0x1d2833,_0x28b3fd){this[_0x28ba('0xf')]=_0x3d98c8;this[_0x28ba('0x10')]=_0x1d2833;this[_0x28ba('0x11')]=_0x28b3fd;};AGIVertices[_0x28ba('0x12')][_0x28ba('0x13')]=function(_0x5cb18f,_0x42c32a){this['rpc'][_0x28ba('0x14')](_0x5cb18f)[_0x28ba('0x15')](function(_0x1795c4){_0x42c32a(null,_0x1795c4?_0x1795c4[_0x28ba('0x16')]:![]);})[_0x28ba('0x17')](function(_0x3a9644){_0x42c32a(_0x3a9644);});};AGIVertices[_0x28ba('0x12')]['getVoiceQueue']=function(_0x305deb,_0x3cf923){this['rpc'][_0x28ba('0x18')](_0x305deb)[_0x28ba('0x15')](function(_0x1eb5e5){_0x3cf923(null,_0x1eb5e5?_0x1eb5e5[_0x28ba('0x16')]:![]);})['catch'](function(_0x24b3f3){_0x3cf923(_0x24b3f3);});};AGIVertices[_0x28ba('0x12')][_0x28ba('0x19')]=function(_0x179728,_0x25f73c){this['rpc']['getSquareProjectById'](_0x179728)[_0x28ba('0x15')](function(_0x182824){_0x25f73c(null,_0x182824?_0x182824[_0x28ba('0x16')]:![]);})[_0x28ba('0x17')](function(_0x41f630){_0x25f73c(_0x41f630);});};AGIVertices[_0x28ba('0x12')][_0x28ba('0x1a')]=function(_0x31a45b,_0x3f8b52){this['rpc']['getSquareOdbcById'](_0x31a45b)[_0x28ba('0x15')](function(_0x4352a4){_0x3f8b52(null,_0x4352a4?_0x4352a4['dsn']:![]);})['catch'](function(_0xf9e0f4){_0x3f8b52(_0xf9e0f4);});};AGIVertices[_0x28ba('0x12')][_0x28ba('0x1b')]=function(_0x17b1f4,_0x425732){this['rpc'][_0x28ba('0x1c')](_0x17b1f4)[_0x28ba('0x15')](function(_0x1684af){_0x425732(null,_0x1684af?_0x1684af[_0x28ba('0x16')]:![]);})[_0x28ba('0x17')](function(_0x256892){_0x425732(_0x256892);});};AGIVertices['prototype'][_0x28ba('0x1d')]=function(_0x46969a,_0x2ddefd){this[_0x28ba('0x10')][_0x28ba('0x1e')](_0x46969a)[_0x28ba('0x15')](function(_0x5df91b){_0x2ddefd(null,_0x5df91b?_0x5df91b[_0x28ba('0x16')]:![]);})[_0x28ba('0x17')](function(_0x599b88){_0x2ddefd(_0x599b88);});};AGIVertices['prototype'][_0x28ba('0x1f')]=function(_0x3e1ce7,_0x5b9237){var _0x55d82f=this;this[_0x28ba('0x10')][_0x28ba('0x20')](_0x3e1ce7)[_0x28ba('0x15')](function(_0x30afd){_0x5b9237(null,_0x30afd?_0x55d82f[_0x28ba('0x21')](_0x30afd[_0x28ba('0x22')]):![]);})[_0x28ba('0x17')](function(_0x2adf88){_0x5b9237(_0x2adf88);});};AGIVertices[_0x28ba('0x12')][_0x28ba('0x23')]=function(_0x296b66,_0x32ab4b){this[_0x28ba('0x10')][_0x28ba('0x24')](_0x296b66)['then'](function(_0x13dfd4){_0x32ab4b(null,_0x13dfd4?_0x13dfd4:![]);})[_0x28ba('0x17')](function(_0xdf8b83){_0x32ab4b(_0xdf8b83);});};AGIVertices['prototype'][_0x28ba('0x25')]=function(_0x1e7bcf,_0x2e31b1,_0x4b45fe){this[_0x28ba('0x11')][_0x28ba('0x25')](_0x1e7bcf,_0x2e31b1)[_0x28ba('0x15')](function(){_0x4b45fe(null);})[_0x28ba('0x17')](function(_0x10850a){_0x4b45fe(_0x10850a);});};AGIVertices[_0x28ba('0x12')][_0x28ba('0x26')]=function(_0x2dec13,_0x29b2a0){this[_0x28ba('0x10')]['getIntervalById'](_0x2dec13)[_0x28ba('0x15')](function(_0x459ac2){if(_0x459ac2){if(_0x459ac2[_0x28ba('0x27')]){_0x29b2a0(null,[_0x459ac2['interval']]);}else{_0x29b2a0(null,_[_0x28ba('0x28')](_0x459ac2[_0x28ba('0x29')],_0x28ba('0x2a')));}}else{_0x29b2a0(null,![]);}})[_0x28ba('0x17')](function(_0x2db25d){_0x29b2a0(_0x2db25d);});};AGIVertices[_0x28ba('0x12')][_0x28ba('0x21')]=function(_0xd4806f){return util[_0x28ba('0x2b')](_0x28ba('0x2c'),FILES_PATH,_0xd4806f);};AGIVertices[_0x28ba('0x12')][_0x28ba('0x2d')]=function(_0x5b3630,_0x4c4c4d,_0x4ef4f0){odbc[_0x28ba('0x2e')](_0x5b3630,function(_0x3f3ff2){if(_0x3f3ff2){logger['error'](_0x28ba('0x2f'),_0x3f3ff2);_0x4ef4f0(_0x3f3ff2);}else{logger[_0x28ba('0x30')]('ODBC\x20connection\x20successfully');odbc['query'](_0x4c4c4d,function(_0x167ed1,_0x459dd7){if(_0x167ed1){logger['info']('Error\x20executing\x20query\x20%s',_0x4c4c4d);_0x4ef4f0(_0x167ed1);}else{logger[_0x28ba('0x30')](_0x28ba('0x31'),_0x4c4c4d);odbc[_0x28ba('0x32')](function(_0x204db7){if(_0x204db7){logger[_0x28ba('0x33')](_0x28ba('0x34'),_0x204db7);}_0x4ef4f0(null,_0x459dd7);});}});}});};AGIVertices[_0x28ba('0x12')][_0x28ba('0x35')]=function(_0x18c35d,_0x5b0174){this['rpc']['getSmsAccountById'](_0x18c35d)[_0x28ba('0x15')](function(_0xbc63e4){_0x5b0174(null,_0xbc63e4?_0xbc63e4:![]);})[_0x28ba('0x17')](function(_0x2f5ce4){_0x5b0174(_0x2f5ce4);});};AGIVertices[_0x28ba('0x12')]['createSmsMessage']=function(_0x4f682f,_0x5a0ab5){this[_0x28ba('0x10')][_0x28ba('0x36')](_0x4f682f)[_0x28ba('0x15')](function(_0x12c046){_0x5a0ab5(null,_0x12c046);})[_0x28ba('0x17')](function(_0x4bb3c5){_0x5a0ab5(_0x4bb3c5);});};AGIVertices[_0x28ba('0x12')][_0x28ba('0x37')]=function(_0x364b7a,_0x20be2f,_0x135434){this[_0x28ba('0x10')][_0x28ba('0x37')]({'uniqueid':this[_0x28ba('0xf')][_0x28ba('0x38')],'node':_0x364b7a['label'],'application':_0x364b7a['agicommand'],'data':_0x20be2f||null,'project_name':this[_0x28ba('0xf')][_0x28ba('0x39')],'callerid':this[_0x28ba('0xf')][_0x28ba('0x3a')]})[_0x28ba('0x15')](function(_0x47bb2b){if(_0x135434){_0x135434(null,_0x47bb2b);}})['catch'](function(_0x5169d5){if(_0x135434){_0x135434(_0x5169d5);}});};AGIVertices['prototype'][_0x28ba('0x3b')]=function(_0x20d28e,_0x42ba5c,_0x14a201,_0x44b682){this[_0x28ba('0x10')]['createSquareRecording']({'uniqueid':this[_0x28ba('0xf')][_0x28ba('0x38')],'callerid':this['channel']['callerid'],'calleridname':this[_0x28ba('0xf')]['calleridname'],'context':this[_0x28ba('0xf')][_0x28ba('0x3c')],'extension':this['channel'][_0x28ba('0x3d')],'priority':this['channel'][_0x28ba('0x3e')],'accountcode':this['channel'][_0x28ba('0x3f')],'dnid':this[_0x28ba('0xf')][_0x28ba('0x40')],'projectName':this[_0x28ba('0xf')][_0x28ba('0x39')],'saveName':_0x42ba5c,'filename':_0x20d28e[_0x28ba('0x41')]||_0x42ba5c,'savePath':_0x14a201})['then'](function(_0x114773){_0x44b682(null,_0x114773);})['catch'](function(_0x5e78e4){_0x44b682(_0x5e78e4);});};AGIVertices[_0x28ba('0x12')][_0x28ba('0x42')]=function(_0x21931b,_0x41614c,_0x50cca3,_0x24f4cc,_0x57bec8){this['rpc'][_0x28ba('0x42')]({'uniqueid':this[_0x28ba('0xf')][_0x28ba('0x38')],'body':_0x21931b,'direction':_0x41614c,'providerName':_0x50cca3,'providerResponse':_0x24f4cc})[_0x28ba('0x15')](function(_0x193368){if(_0x57bec8){_0x57bec8(null,_0x193368);}})[_0x28ba('0x17')](function(_0x28b773){if(_0x57bec8){_0x57bec8(_0x28b773);}});};AGIVertices[_0x28ba('0x12')]['createCmContact']=function(_0x198073,_0x3773bc){this[_0x28ba('0x10')][_0x28ba('0x43')]({'firstName':_[_0x28ba('0x44')](_0x198073['name'])||_[_0x28ba('0x45')](_0x198073[_0x28ba('0x16')])?_0x28ba('0x46')+Math['random']():_0x198073[_0x28ba('0x16')],'lastName':_[_0x28ba('0x44')](_0x198073[_0x28ba('0x47')])||_[_0x28ba('0x45')](_0x198073[_0x28ba('0x47')])?null:_0x198073['lastName'],'phone':_0x198073[_0x28ba('0x48')],'ListId':_0x198073[_0x28ba('0x49')],'scheduledat':_0x198073['scheduledAt'],'callbackUniqueid':this[_0x28ba('0xf')][_0x28ba('0x38')],'tags':_0x28ba('0x4a'),'description':_0x28ba('0x4b')+_0x198073[_0x28ba('0x4c')][_0x28ba('0x4d')](),'priority':_0x198073[_0x28ba('0x4e')]})[_0x28ba('0x15')](function(_0x24bdd6){_0x3773bc(null,_0x24bdd6);})[_0x28ba('0x17')](function(_0x344c54){_0x3773bc(_0x344c54);});};AGIVertices['prototype'][_0x28ba('0x4f')]=function(_0x3df10d,_0x329ac5){this[_0x28ba('0x10')][_0x28ba('0x50')](_0x3df10d)['then'](function(_0x3efa75){_0x329ac5(null,_0x3efa75?_0x3efa75[_0x28ba('0x16')]:![]);})[_0x28ba('0x17')](function(_0x21c843){_0x329ac5(_0x21c843);});};AGIVertices[_0x28ba('0x12')][_0x28ba('0x51')]=function(_0xb70fd6,_0x5b4fcb,_0x271f89){var _0x43f985={'role':'agent'};_0x43f985[_0xb70fd6]=this[_0x28ba('0xf')][_0x28ba('0x3a')];this['rpc']['agentPause'](_0x43f985,_0x5b4fcb,this['channel']['uniqueid'])[_0x28ba('0x15')](function(_0x2c5d8f){_0x271f89(null,_['isNil'](_0x2c5d8f)?![]:!![]);})['catch'](function(_0x70ac68){logger[_0x28ba('0x33')](_0x70ac68);_0x271f89(null,![]);});};AGIVertices[_0x28ba('0x12')]['agentUnpause']=function(_0x597349,_0x30bff7){var _0x47341e={'role':_0x28ba('0x52')};_0x47341e[_0x597349]=this[_0x28ba('0xf')][_0x28ba('0x3a')];this[_0x28ba('0x10')][_0x28ba('0x53')](_0x47341e)[_0x28ba('0x15')](function(_0x5dbceb){_0x30bff7(null,_[_0x28ba('0x45')](_0x5dbceb)?![]:!![]);})['catch'](function(_0x26b1a7){logger['error'](_0x26b1a7);_0x30bff7(null,![]);});};AGIVertices[_0x28ba('0x12')]['agentLogout']=function(_0x39a5fc,_0x2dc04c){var _0x4b6f2e={'role':'agent'};_0x4b6f2e[_0x39a5fc]=this[_0x28ba('0xf')][_0x28ba('0x3a')];this[_0x28ba('0x10')][_0x28ba('0x54')](_0x4b6f2e)[_0x28ba('0x15')](function(_0x583e2b){_0x2dc04c(null,_['isNil'](_0x583e2b)?![]:!![]);})[_0x28ba('0x17')](function(_0x3a309a){logger[_0x28ba('0x33')](_0x3a309a);_0x2dc04c(null,![]);});};AGIVertices['prototype']['agentLogin']=function(_0xdf984b,_0x4d3ab3){var _0x433f72={'role':_0x28ba('0x52')};_0x433f72[_0xdf984b]=this[_0x28ba('0xf')][_0x28ba('0x3a')];var _0x5b9c9c=_0xdf984b!=_0x28ba('0x55')?util[_0x28ba('0x2b')]('%s/%s@from-sip/n','LOCAL',this[_0x28ba('0xf')][_0x28ba('0x3a')]):undefined;this[_0x28ba('0x10')][_0x28ba('0x56')](_0x433f72,_0x5b9c9c)['then'](function(_0xef8b1a){_0x4d3ab3(null,_[_0x28ba('0x45')](_0xef8b1a)?![]:!![]);})['catch'](function(_0x20a8af){logger[_0x28ba('0x33')](_0x20a8af);_0x4d3ab3(null,![]);});};AGIVertices[_0x28ba('0x12')]['shellCommand']=function(_0x4cad66,_0x4aa658){sh['exec'](_[_0x28ba('0x57')](_0x4cad66),function(_0x25f72d,_0x21703f){var _0x23a4a3=_0x21703f['replace'](/(\r\n|\n|\r)/gm,'');_0x4aa658(null,_0x23a4a3);});};AGIVertices[_0x28ba('0x12')][_0x28ba('0x58')]=function(_0xf4d918,_0x5bc256){scripts[_0x28ba('0x58')](_0xf4d918[_0x28ba('0x59')],_0xf4d918['google_cloud_tts_text_type']||_0x28ba('0x5a'),_0xf4d918[_0x28ba('0x5a')],_0xf4d918[_0x28ba('0x5b')]||_0x28ba('0x5c'),_0xf4d918[_0x28ba('0x5d')]||'MALE',_0xf4d918[_0x28ba('0x5e')]||'MP3')[_0x28ba('0x15')](function(_0x3f2171){_0x5bc256(null,_0x3f2171);})[_0x28ba('0x17')](function(_0x3e9f88){_0x5bc256(_0x3e9f88);});};AGIVertices[_0x28ba('0x12')][_0x28ba('0x5f')]=function(_0xd7bd26,_0x28911e){scripts[_0x28ba('0x5f')](_0xd7bd26[_0x28ba('0x5a')],_0xd7bd26[_0x28ba('0x60')]||'en',0x1)['then'](function(_0xbef3a4){_0x28911e(null,_0xbef3a4);})['catch'](function(_0x31025d){_0x28911e(_0x31025d);});};AGIVertices[_0x28ba('0x12')][_0x28ba('0x61')]=function(_0x5904b3,_0xdea56){var _0x1782f8={'uri':_0x5904b3[_0x28ba('0x62')],'method':_0x5904b3[_0x28ba('0x63')],'json':!![],'resolveWithFullResponse':!![],'strictSSL':![],'timeout':typeof parseInt(_0x5904b3[_0x28ba('0x64')])==='number'&&parseInt(_0x5904b3['timeout'])>=0x1?parseInt(_0x5904b3['timeout'])*0x3e8:0x5*0x3e8};if(_['includes']([_0x28ba('0x65'),_0x28ba('0x66')],_0x1782f8['method']['toUpperCase']())){try{_0x1782f8['body']=_0x5904b3[_0x28ba('0xc')]?JSON[_0x28ba('0x67')](_0x5904b3['rawBody']):{};}catch(_0x92ea20){logger[_0x28ba('0x33')](_0x28ba('0x68'),_0x92ea20);}}try{_0x1782f8[_0x28ba('0x69')]=_0x5904b3[_0x28ba('0x6a')]?JSON[_0x28ba('0x67')](_0x5904b3[_0x28ba('0x6a')]):{};}catch(_0x3e1a1e){logger['error']('An\x20incorrect\x20formatted\x20json\x20headers\x20has\x20been\x20passed\x20to\x20the\x20function',_0x3e1a1e);}if(_0x5904b3[_0x28ba('0x6b')]){try{var _0x24323a=require(_0x5904b3['computedVariables'])['sync'](this,_0x1782f8);_0x1782f8[_0x28ba('0x6c')]=Mustache['render'](_0x5904b3[_0x28ba('0x62')],_0x24323a,{},['$$','$$']);if(_0x1782f8['headers']){_0x1782f8[_0x28ba('0x69')]=JSON[_0x28ba('0x67')](Mustache[_0x28ba('0x6d')](JSON[_0x28ba('0x6e')](_0x1782f8[_0x28ba('0x69')]),_0x24323a,{},['$$','$$']));}if(_0x1782f8[_0x28ba('0x6f')]){_0x1782f8[_0x28ba('0x6f')]=JSON['parse'](Mustache[_0x28ba('0x6d')](JSON[_0x28ba('0x6e')](_0x1782f8[_0x28ba('0x6f')]),_0x24323a,{},['$$','$$']));}}catch(_0x2c173a){logger['error'](_0x28ba('0x70'),_0x2c173a);}}rp(_0x1782f8)[_0x28ba('0x15')](function(_0x3f1ff8){var _0x10591c={'statusCode':_0x3f1ff8[_0x28ba('0x71')]||0xc8,'statusMessage':_0x3f1ff8[_0x28ba('0x72')]||'OK','headers':_0x3f1ff8[_0x28ba('0x69')]||{},'body':_0x3f1ff8[_0x28ba('0x6f')]||{}};_0xdea56(null,_0x10591c);})[_0x28ba('0x17')](function(_0x5d5d4c){var _0x1f06c8={'statusCode':_0x5d5d4c[_0x28ba('0x71')]||0x1f4,'statusMessage':_0x5d5d4c[_0x28ba('0x73')]||'500\x20-\x20Internal\x20Server\x20Error','headers':_0x5d5d4c[_0x28ba('0x74')][_0x28ba('0x69')]||{},'body':_0x5d5d4c[_0x28ba('0x74')][_0x28ba('0x6f')]||{}};_0xdea56(null,_0x1f06c8);});};AGIVertices['prototype'][_0x28ba('0x75')]=function(_0x2c57ba,_0x4b6a62){scripts[_0x28ba('0x75')](this[_0x28ba('0xf')][_0x28ba('0x38')],_0x2c57ba[_0x28ba('0x76')],_0x2c57ba[_0x28ba('0x5a')],_0x2c57ba[_0x28ba('0x77')]||'en')[_0x28ba('0x15')](function(_0x550f12){_0x4b6a62(null,_0x550f12);})[_0x28ba('0x17')](function(_0x303a75){_0x4b6a62(_0x303a75);});};AGIVertices[_0x28ba('0x12')][_0x28ba('0x78')]=function(_0x53cb6f,_0x7b8682){scripts[_0x28ba('0x78')](this[_0x28ba('0xf')][_0x28ba('0x38')],_0x53cb6f[_0x28ba('0x79')],_0x53cb6f[_0x28ba('0x7a')],_0x53cb6f[_0x28ba('0x7b')],_0x53cb6f[_0x28ba('0x5a')],_0x53cb6f[_0x28ba('0x7c')]||'en')[_0x28ba('0x15')](function(_0x1c745d){_0x7b8682(null,_0x1c745d);})[_0x28ba('0x17')](function(_0x3ba978){_0x7b8682(_0x3ba978);});};AGIVertices[_0x28ba('0x12')][_0x28ba('0x7d')]=function(_0x433e3e,_0x181c58){scripts[_0x28ba('0x7d')](this[_0x28ba('0xf')],_0x433e3e)[_0x28ba('0x15')](function(_0x1bf246){_0x181c58(null,_0x1bf246);})[_0x28ba('0x17')](function(_0x278538){_0x181c58(_0x278538);});};AGIVertices[_0x28ba('0x12')][_0x28ba('0x7e')]=function(_0x4c4e5b,_0x347e96){scripts[_0x28ba('0x7e')](_0x4c4e5b[_0x28ba('0x76')],_0x4c4e5b[_0x28ba('0x5a')],_0x4c4e5b['ispeech_tts_language']||_0x28ba('0x5c'),_0x4c4e5b[_0x28ba('0x7f')])[_0x28ba('0x15')](function(_0x1d00d5){_0x347e96(null,_0x1d00d5);})['catch'](function(_0x49316b){_0x347e96(_0x49316b);});};AGIVertices[_0x28ba('0x12')][_0x28ba('0x80')]=function(_0x309770,_0x1d5942,_0x1f1f51){scripts['ispeechASR'](_0x1d5942,_0x309770[_0x28ba('0x76')],_0x309770[_0x28ba('0x81')]||_0x28ba('0x5c'),this[_0x28ba('0x82')](_0x309770[_0x28ba('0x83')])?_0x309770[_0x28ba('0x83')]:undefined)[_0x28ba('0x15')](function(_0x380da7){_0x1f1f51(null,_0x380da7);})[_0x28ba('0x17')](function(_0x263316){_0x1f1f51(_0x263316);});};AGIVertices['prototype'][_0x28ba('0x84')]=function(_0x23f8b3,_0x308cc3){scripts[_0x28ba('0x84')](_0x23f8b3[_0x28ba('0x85')],_0x23f8b3[_0x28ba('0x86')],_0x23f8b3[_0x28ba('0x87')],_0x23f8b3[_0x28ba('0x88')]||_0x28ba('0x89'),_0x23f8b3['text'],_0x23f8b3['aws_text_type']||'text')[_0x28ba('0x15')](function(_0x48d3f2){_0x308cc3(null,_0x48d3f2);})[_0x28ba('0x17')](function(_0x54d647){_0x308cc3(_0x54d647);});};AGIVertices[_0x28ba('0x12')][_0x28ba('0x8a')]=function(_0x15b432,_0x95ab43){scripts[_0x28ba('0x8a')](this['channel'][_0x28ba('0x38')],_0x15b432[_0x28ba('0x85')],_0x15b432[_0x28ba('0x86')],_0x15b432['aws_lex_region'],_0x15b432[_0x28ba('0x5a')],_0x15b432[_0x28ba('0x8b')])['then'](function(_0x21e0d1){_0x95ab43(null,_0x21e0d1);})[_0x28ba('0x17')](function(_0x5e8fde){_0x95ab43(_0x5e8fde);});};AGIVertices[_0x28ba('0x12')]['googleASR']=function(_0x48484e,_0x3d0f55,_0x2b0505){scripts[_0x28ba('0x8c')](_0x3d0f55,_0x48484e[_0x28ba('0x76')],_0x48484e[_0x28ba('0x8d')]||_0x28ba('0x5c'))[_0x28ba('0x15')](function(_0x1e01c1){_0x2b0505(null,_0x1e01c1);})[_0x28ba('0x17')](function(_0x321398){_0x2b0505(_0x321398);});};AGIVertices['prototype'][_0x28ba('0x8e')]=function(_0xe4ab7d,_0x3af103,_0x2a64c6){scripts[_0x28ba('0x8e')](_0x3af103,_0xe4ab7d[_0x28ba('0x8f')],_0xe4ab7d[_0x28ba('0x90')],_0xe4ab7d[_0x28ba('0x6c')])[_0x28ba('0x15')](function(_0x186e9a){_0x2a64c6(null,_0x186e9a);})[_0x28ba('0x17')](function(_0x57260b){_0x2a64c6(_0x57260b);});};AGIVertices[_0x28ba('0x12')]['clear']=function(_0x59dbbd){var _0x24dff5=_['includes'](verticesWithRetry,_0x59dbbd[_0x28ba('0x91')])?_0x59dbbd:_[_0x28ba('0x92')](_0x59dbbd);for(var _0x3e9a56 in _0x24dff5){if(_0x24dff5['hasOwnProperty'](_0x3e9a56)){if(_0x24dff5[_0x3e9a56]&&_[_0x28ba('0x93')](_0x24dff5[_0x3e9a56])){if(_['includes'](recursiveMapAttributes,_0x3e9a56)){_0x24dff5[_0x3e9a56]=this['replaceObjectAllVariables'](_0x24dff5[_0x3e9a56]);}else{_0x24dff5[_0x3e9a56]=this[_0x28ba('0x94')](_0x24dff5[_0x3e9a56]);}}}}return _0x24dff5;};AGIVertices['prototype']['recursiveNodeIndex']=function(_0x409ef1){for(var _0x9620df in _0x409ef1){if(_0x409ef1['hasOwnProperty'](_0x9620df)){if(_['isPlainObject'](_0x409ef1[_0x9620df])){this[_0x28ba('0x95')](_0x409ef1[_0x9620df]);}else if(_[_0x28ba('0x96')](_0x409ef1[_0x9620df])){for(var _0x1ffb9c=0x0;_0x1ffb9c<_0x409ef1[_0x9620df][_0x28ba('0x97')];_0x1ffb9c++){this['recursiveNodeIndex'](_0x409ef1[_0x9620df][_0x1ffb9c]);}}else if(_['isString'](_0x409ef1[_0x9620df])){_0x409ef1[_0x9620df]=this[_0x28ba('0x94')](_0x409ef1[_0x9620df]);}}}};AGIVertices['prototype'][_0x28ba('0x98')]=function(_0x2703d0,_0x4549b0){for(var _0x3882d6 in _0x2703d0){if(_0x2703d0[_0x28ba('0x99')](_0x3882d6)){if(_['isPlainObject'](_0x2703d0[_0x3882d6])){if(!_[_0x28ba('0x44')](_0x2703d0[_0x3882d6])){this[_0x28ba('0x98')](_0x2703d0[_0x3882d6],util[_0x28ba('0x2b')]('%s.%s',_0x4549b0,_0x3882d6));}}else if(_[_0x28ba('0x96')](_0x2703d0[_0x3882d6])){for(var _0x31eba2=0x0;_0x31eba2<_0x2703d0[_0x3882d6][_0x28ba('0x97')];_0x31eba2++){this[_0x28ba('0x98')](_0x2703d0[_0x3882d6][_0x31eba2],util[_0x28ba('0x2b')](_0x28ba('0x9a'),_0x4549b0,_0x3882d6+'['+_0x31eba2+']'));}}else{if(!_[_0x28ba('0x45')](_0x2703d0[_0x3882d6])){this[_0x28ba('0xf')][_0x28ba('0x9b')](util[_0x28ba('0x2b')](_0x28ba('0x9a'),_0x4549b0,_0x3882d6),_0x2703d0[_0x3882d6]);}}}}};AGIVertices[_0x28ba('0x12')][_0x28ba('0x9c')]=function(_0x5a44f6){try{var _0x4644c3=JSON[_0x28ba('0x67')](_0x5a44f6);this[_0x28ba('0x95')](_0x4644c3);return JSON['stringify'](_0x4644c3);}catch(_0x20ac19){return this['replaceAllVariables'](_0x5a44f6);}};AGIVertices[_0x28ba('0x12')]['replaceAllVariables']=function(_0xf25100){var _0x57c6ef=_0xf25100['split']('{');for(var _0x440d83=0x1;_0x440d83<_0x57c6ef[_0x28ba('0x97')];_0x440d83+=0x1){var _0x5744a3=_0x57c6ef[_0x440d83][_0x28ba('0x9d')]('}');if(_0x5744a3[_0x28ba('0x97')]>0x1){_0xf25100=_0xf25100[_0x28ba('0x9e')]('{'+_0x5744a3[0x0]+'}',this[_0x28ba('0xf')][_0x28ba('0x13')](_0x5744a3[0x0])[_0x28ba('0x9f')]||_0x5744a3[0x0]);}}if(_0x57c6ef[_0x28ba('0x97')]===0x1){return _0xf25100['toString']();}return this[_0x28ba('0x94')](_0xf25100);};AGIVertices[_0x28ba('0x12')][_0x28ba('0xa0')]=function(_0x575d98,_0x2b6e03){var _0x1570ec=this['channel'][_0x28ba('0x13')](_0x575d98);if(_0x1570ec[_0x28ba('0xa1')]===-0x1){return _0x1570ec;}logger[_0x28ba('0x30')](util['format'](_0x28ba('0xa2'),_0x2b6e03,_0x1570ec[_0x28ba('0x9f')]));return this[_0x28ba('0xf')]['setVariable'](_0x2b6e03,_0x1570ec[_0x28ba('0x9f')]);};AGIVertices[_0x28ba('0x12')][_0x28ba('0x82')]=function(_0x1e2254){return _0x1e2254&&_0x1e2254!=='0'&&_0x1e2254!=='-1'&&_0x1e2254!=='';};AGIVertices['prototype'][_0x28ba('0xa3')]=function(_0x58d4e0){this['createSquareDetailsReport'][_0x28ba('0xa4')](this,_0x58d4e0,'-');_0x58d4e0[_0x28ba('0xa5')]=_0x58d4e0[_0x28ba('0xa3')];return{'code':0xc8,'result':'-'};};AGIVertices[_0x28ba('0x12')][_0x28ba('0xa6')]=function(_0x5e201d){logger[_0x28ba('0x30')](util['format'](_0x28ba('0xa7'),_0x5e201d['label']));if(!this['isConfigured'](_0x5e201d[_0x28ba('0x5a')])){return this['channel'][_0x28ba('0xa8')](_0x28ba('0xa9'));}var _0x34c70b='\x22'+_0x5e201d[_0x28ba('0x5a')]+'\x22';if(this[_0x28ba('0x82')](_0x5e201d[_0x28ba('0x74')])){_0x34c70b+=','+_0x5e201d[_0x28ba('0x74')];}var _0x50a5b9=this['channel']['exec'](_0x28ba('0xaa'),_0x34c70b);if(_0x50a5b9[_0x28ba('0xa1')]===-0x1){return _0x50a5b9;}return this[_0x28ba('0xf')]['noop'](util[_0x28ba('0x2b')](_0x28ba('0xab'),_0x34c70b));};AGIVertices[_0x28ba('0x12')]['mrcprecog']=function(_0x5588b3){logger[_0x28ba('0x30')](util[_0x28ba('0x2b')](_0x28ba('0xac'),_0x5588b3['label']));if(!this[_0x28ba('0x82')](_0x5588b3['grammar'])){return this[_0x28ba('0xf')]['noop'](_0x28ba('0xad'));}var _0x1cdc7d=_0x5588b3[_0x28ba('0xae')];if(this[_0x28ba('0x82')](_0x5588b3[_0x28ba('0x74')])){_0x1cdc7d+=','+_0x5588b3[_0x28ba('0x74')];}var _0x3da53a=this[_0x28ba('0xf')][_0x28ba('0xaf')](_0x28ba('0xb0'),_0x1cdc7d);if(_0x3da53a[_0x28ba('0xa1')]===-0x1){return _0x3da53a;}var _0x2d025b=this[_0x28ba('0xa0')]('RECOG_CONFIDENCE()','MRCP_RECOG_CONFIDENCE');if(_0x2d025b[_0x28ba('0xa1')]===-0x1){return _0x2d025b;}var _0x5f3a86=this['getAndSetVariable'](_0x28ba('0xb1'),'MRCP_RECOG_TRANSCRIPT');if(_0x5f3a86[_0x28ba('0xa1')]===-0x1){return _0x5f3a86;}var _0x36fe37=this[_0x28ba('0xa0')](_0x28ba('0xb2'),_0x28ba('0xb3'));if(_0x36fe37[_0x28ba('0xa1')]===-0x1){return _0x36fe37;}return this[_0x28ba('0xf')][_0x28ba('0xa8')](util[_0x28ba('0x2b')]('Executed\x20command\x20MRCPRecog\x20%s',_0x1cdc7d));};AGIVertices[_0x28ba('0x12')]['agi']=function(_0x1c7a86){logger[_0x28ba('0x30')](util[_0x28ba('0x2b')](_0x28ba('0xb4'),_0x1c7a86[_0x28ba('0xb5')]));return this[_0x28ba('0xf')][_0x28ba('0x7')]([_0x1c7a86[_0x28ba('0xb6')],_0x1c7a86[_0x28ba('0xb7')]]);};AGIVertices['prototype'][_0x28ba('0xb8')]=function(_0x33e960){logger[_0x28ba('0x30')](util[_0x28ba('0x2b')]('Enter\x20in\x20ANSWER\x20(%s)\x20block',_0x33e960['label']));if(this[_0x28ba('0x82')](_0x33e960[_0x28ba('0x64')])){logger['info'](util[_0x28ba('0x2b')]('Wait\x20%s\x20seconds\x20before\x20answer',_0x33e960[_0x28ba('0x64')]));var _0x5c5337=this['channel']['wait'](_0x33e960[_0x28ba('0x64')]);if(_0x5c5337[_0x28ba('0xa1')]===-0x1){return _0x5c5337;}}return this['channel'][_0x28ba('0xb8')]();};AGIVertices['prototype'][_0x28ba('0x4a')]=function(_0x58ba53){logger[_0x28ba('0x30')](util[_0x28ba('0x2b')]('Enter\x20in\x20CALLBACK\x20(%s)\x20block',_0x58ba53[_0x28ba('0xb5')]));if(!this[_0x28ba('0x82')](_0x58ba53[_0x28ba('0x49')])){return this[_0x28ba('0xf')][_0x28ba('0x33')](_0x58ba53,_0x28ba('0xb9'));}_0x58ba53[_0x28ba('0x4c')]=moment();if(this[_0x28ba('0x82')](_0x58ba53[_0x28ba('0xba')])){_0x58ba53[_0x28ba('0x4c')]=moment()[_0x28ba('0xbb')](_0x58ba53['delay'],_0x28ba('0xbc'));}if(!this['isConfigured'](_0x58ba53[_0x28ba('0x4e')])){_0x58ba53['callback_priority']=0x2;}this[_0x28ba('0x43')]['sync'](this,_0x58ba53);return this['channel'][_0x28ba('0xa8')](util[_0x28ba('0x2b')](_0x28ba('0xbd'),_0x58ba53['phone'],_0x58ba53[_0x28ba('0x49')],_0x58ba53['scheduledAt']));};AGIVertices[_0x28ba('0x12')][_0x28ba('0xbe')]=function(_0x446df8){logger[_0x28ba('0x30')](util[_0x28ba('0x2b')](_0x28ba('0xbf'),_0x446df8[_0x28ba('0xb5')]));var _0x212a2f=this[_0x28ba('0xf')][_0x28ba('0xaf')](_0x446df8[_0x28ba('0xc0')],_0x446df8[_0x28ba('0x74')]);if(_0x212a2f['result']===-0x1){return _0x212a2f;}return this[_0x28ba('0xf')]['noop'](util[_0x28ba('0x2b')](_0x28ba('0xc1'),_0x446df8[_0x28ba('0xc0')],_0x446df8[_0x28ba('0x74')]));};AGIVertices[_0x28ba('0x12')][_0x28ba('0xc2')]=function(_0x4d336e){logger[_0x28ba('0x30')](util[_0x28ba('0x2b')]('Enter\x20in\x20LUMENVOXTTS\x20(%s)\x20block',_0x4d336e[_0x28ba('0xb5')]));if(!this['isConfigured'](_0x4d336e['text'])){return this['channel']['noop'](_0x28ba('0xa9'));}var _0x2b5dd6='\x22'+_0x4d336e[_0x28ba('0x5a')]+'\x22';if(this[_0x28ba('0x82')](_0x4d336e[_0x28ba('0x74')])){_0x2b5dd6+=','+_0x4d336e['options'];}var _0x336d19=this['channel']['exec'](_0x28ba('0xaa'),_0x2b5dd6);if(_0x336d19[_0x28ba('0xa1')]===-0x1){return _0x336d19;}return this[_0x28ba('0xf')]['noop'](util[_0x28ba('0x2b')](_0x28ba('0xab'),_0x2b5dd6));};AGIVertices[_0x28ba('0x12')][_0x28ba('0xc3')]=function(_0x168d62){logger['info'](util[_0x28ba('0x2b')](_0x28ba('0xc4'),_0x168d62[_0x28ba('0xb5')]));if(!this['isConfigured'](_0x168d62['text'])){return this[_0x28ba('0xf')][_0x28ba('0xa8')]('no\x20text\x20configured');}var _0x27ceca='\x22'+_0x168d62[_0x28ba('0x5a')]+'\x22';if(this[_0x28ba('0x82')](_0x168d62[_0x28ba('0x74')])){_0x27ceca+=','+_0x168d62[_0x28ba('0x74')];}var _0x2e6ad1=this['channel'][_0x28ba('0xaf')]('MRCPSynth',_0x27ceca);if(_0x2e6ad1['result']===-0x1){return _0x2e6ad1;}return this['channel'][_0x28ba('0xa8')](util[_0x28ba('0x2b')]('Executed\x20command\x20MRCPSynth\x20%s',_0x27ceca));};AGIVertices[_0x28ba('0x12')][_0x28ba('0xc5')]=function(_0x299e01){logger[_0x28ba('0x30')](util[_0x28ba('0x2b')]('Enter\x20in\x20LUMENVOXASR\x20(%s)\x20block',_0x299e01['label']));if(!this['isConfigured'](_0x299e01['grammar'])){return this[_0x28ba('0xf')][_0x28ba('0xa8')]('no\x20grammar\x20configured');}var _0x302638=_0x299e01[_0x28ba('0xae')];if(this[_0x28ba('0x82')](_0x299e01[_0x28ba('0x74')])){_0x302638+=','+_0x299e01['options'];}var _0x505ac3=this[_0x28ba('0xf')][_0x28ba('0xaf')](_0x28ba('0xb0'),_0x302638);if(_0x505ac3[_0x28ba('0xa1')]===-0x1){return _0x505ac3;}var _0x1b2a32=this[_0x28ba('0xa0')]('RECOG_CONFIDENCE()',_0x28ba('0xc6'));if(_0x1b2a32['result']===-0x1){return _0x1b2a32;}var _0x4fc254=this[_0x28ba('0xa0')](_0x28ba('0xb1'),'LUMENVOX_ASR_TRANSCRIPT');if(_0x4fc254[_0x28ba('0xa1')]===-0x1){return _0x4fc254;}var _0x205362=this[_0x28ba('0xa0')](_0x28ba('0xb2'),'LUMENVOX_ASR_INSTANCE');if(_0x205362[_0x28ba('0xa1')]===-0x1){return _0x205362;}return this[_0x28ba('0xf')]['noop'](util[_0x28ba('0x2b')](_0x28ba('0xc7'),_0x302638));};AGIVertices[_0x28ba('0x12')]['sestekasr']=function(_0x191a25){logger[_0x28ba('0x30')](util[_0x28ba('0x2b')]('Enter\x20in\x20SESTEKASR\x20(%s)\x20block',_0x191a25[_0x28ba('0xb5')]));if(!this[_0x28ba('0x82')](_0x191a25['grammar'])){return this[_0x28ba('0xf')]['noop'](_0x28ba('0xad'));}var _0x2474a3=_0x191a25[_0x28ba('0xae')];if(this[_0x28ba('0x82')](_0x191a25['options'])){_0x2474a3+=','+_0x191a25[_0x28ba('0x74')];}var _0xa90555=this[_0x28ba('0xf')]['exec'](_0x28ba('0xb0'),_0x2474a3);if(_0xa90555[_0x28ba('0xa1')]===-0x1){return _0xa90555;}var _0x4cb828=this[_0x28ba('0xa0')]('RECOG_CONFIDENCE()',_0x28ba('0xc8'));if(_0x4cb828[_0x28ba('0xa1')]===-0x1){return _0x4cb828;}var _0x3aea52=this[_0x28ba('0xa0')](_0x28ba('0xb1'),_0x28ba('0xc9'));if(_0x3aea52[_0x28ba('0xa1')]===-0x1){return _0x3aea52;}var _0xd182d2=this[_0x28ba('0xa0')](_0x28ba('0xb2'),_0x28ba('0xca'));if(_0xd182d2[_0x28ba('0xa1')]===-0x1){return _0xd182d2;}return this[_0x28ba('0xf')][_0x28ba('0xa8')](util['format'](_0x28ba('0xc7'),_0x2474a3));};AGIVertices[_0x28ba('0x12')]['database']=function(_0x197ad8){logger['info'](util[_0x28ba('0x2b')](_0x28ba('0xcb'),_0x197ad8[_0x28ba('0xb5')]));if(!this[_0x28ba('0x82')](_0x197ad8['odbc_id'])){return this[_0x28ba('0xf')][_0x28ba('0x33')](_0x197ad8,'no\x20database\x20selected');}var _0x4abfc8=this['getSquareOdbc'][_0x28ba('0xa4')](this,_0x197ad8['odbc_id']);if(!_0x4abfc8){return this[_0x28ba('0xf')]['error'](_0x197ad8,_0x28ba('0xcc'));}if(!this[_0x28ba('0x82')](_0x197ad8[_0x28ba('0xcd')])){return this[_0x28ba('0xf')][_0x28ba('0x33')](_0x197ad8,_0x28ba('0xce'));}var _0x1945c8=_0x197ad8[_0x28ba('0xcd')][_0x28ba('0xcf')](/(\r\n|\n|\r)/gm,'\x20');this[_0x28ba('0xf')][_0x28ba('0xa8')](util[_0x28ba('0x2b')]('query:\x20%s',_0x1945c8));var _0x1f7979=this[_0x28ba('0x2d')]['sync'](this,_0x4abfc8,_0x1945c8);this[_0x28ba('0x37')][_0x28ba('0xa4')](this,_0x197ad8,_0x1945c8);if(!this[_0x28ba('0x82')](_0x197ad8['variable_id'])){return this[_0x28ba('0xf')][_0x28ba('0xa8')](_0x28ba('0xd0'));}var _0x4b3d53=this['getVariable']['sync'](this,_0x197ad8[_0x28ba('0xd1')]);if(!_0x4b3d53){return this[_0x28ba('0xf')][_0x28ba('0x33')](_0x197ad8,_0x28ba('0xd2'));}var _0x6e5716=this;_0x1f7979['forEach'](function(_0x36e7ee,_0x197dca){Object[_0x28ba('0xd3')](_0x36e7ee)['forEach'](function(_0x23f235){_0x6e5716['channel'][_0x28ba('0x9b')](util[_0x28ba('0x2b')](_0x28ba('0xd4'),_0x4b3d53,_0x197dca,_0x23f235),_0x36e7ee[_0x23f235]);});});this[_0x28ba('0xf')]['setVariable'](util[_0x28ba('0x2b')]('%s_ROWS_COUNT',_0x4b3d53),_0x1f7979[_0x28ba('0x97')]);return this[_0x28ba('0xf')][_0x28ba('0xa8')](util[_0x28ba('0x2b')](_0x28ba('0xd5'),_0x4b3d53));};AGIVertices['prototype']['dial']=function(_0x31ae98){logger[_0x28ba('0xd6')](util['format'](_0x28ba('0xd7'),_0x31ae98[_0x28ba('0xb5')]));if(!this['isConfigured'](_0x31ae98[_0x28ba('0xd8')])){return this[_0x28ba('0xf')]['error'](_0x31ae98,_0x28ba('0xd9'));}var _0x5109b9=this[_0x28ba('0x1b')][_0x28ba('0xa4')](this,_0x31ae98[_0x28ba('0xd8')]);if(!_0x5109b9){return this['channel'][_0x28ba('0x33')](_0x31ae98,_0x28ba('0xda'));}var _0x15f7cc=this['channel'][_0x28ba('0xaf')](_0x28ba('0xdb'),[util[_0x28ba('0x2b')]('SIP/%s',_0x5109b9),_0x31ae98[_0x28ba('0x64')],_0x31ae98[_0x28ba('0xdc')],_0x31ae98[_0x28ba('0x62')]]);if(_0x15f7cc[_0x28ba('0xa1')]===-0x1){return _0x15f7cc;}return this[_0x28ba('0xf')][_0x28ba('0xa8')](util[_0x28ba('0x2b')]('Executed\x20command\x20%s',_0x28ba('0xdb')));};AGIVertices[_0x28ba('0x12')][_0x28ba('0xdd')]=function(_0x5048e6){logger[_0x28ba('0x30')](util['format'](_0x28ba('0xde'),_0x5048e6[_0x28ba('0xb5')]));if(!this[_0x28ba('0x82')](_0x5048e6[_0x28ba('0x76')])){return this[_0x28ba('0xf')][_0x28ba('0xa8')](_0x28ba('0xdf'));}if(!this[_0x28ba('0x82')](_0x5048e6[_0x28ba('0x5a')])){return this['channel'][_0x28ba('0xa8')](_0x28ba('0xa9'));}this[_0x28ba('0xf')][_0x28ba('0xe0')]=!![];this[_0x28ba('0x37')](_0x5048e6);this[_0x28ba('0x42')](_0x5048e6[_0x28ba('0x5a')],'in','','');this[_0x28ba('0xf')]['noop'](util['format'](_0x28ba('0xe1'),_0x5048e6[_0x28ba('0x5a')]));var _0x49188c=this[_0x28ba('0x75')][_0x28ba('0xa4')](this,_0x5048e6);if(_0x49188c){for(var _0x3e6f31 in _0x49188c){if(_0x49188c[_0x28ba('0x99')](_0x3e6f31)){this['channel']['setVariable'](util[_0x28ba('0x2b')](_0x28ba('0xe2'),_0x3e6f31[_0x28ba('0xe3')]()),_0x49188c[_0x3e6f31]);}}this[_0x28ba('0x42')](_0x49188c[_0x28ba('0xe4')],_0x28ba('0xe5'),'dialogflow','');return this['channel']['noop'](util[_0x28ba('0x2b')](_0x28ba('0xe6'),_0x49188c[_0x28ba('0xe4')]));}return this['channel'][_0x28ba('0x33')](_0x5048e6,_0x28ba('0xe7'));};AGIVertices[_0x28ba('0x12')][_0x28ba('0xe8')]=function(_0x3507a2){logger['info'](util[_0x28ba('0x2b')]('Enter\x20in\x20DIALOGFLOW\x20V2\x20(%s)\x20block',_0x3507a2[_0x28ba('0xb5')]));if(!this[_0x28ba('0x82')](_0x3507a2['dialogflowV2_project_id'])){return this['channel'][_0x28ba('0xa8')]('no\x20project_id\x20configured');}if(!this[_0x28ba('0x82')](_0x3507a2[_0x28ba('0x7a')])){return this[_0x28ba('0xf')][_0x28ba('0xa8')](_0x28ba('0xe9'));}if(!this[_0x28ba('0x82')](_0x3507a2[_0x28ba('0x7b')])){return this['channel'][_0x28ba('0xa8')](_0x28ba('0xea'));}if(!this[_0x28ba('0x82')](_0x3507a2[_0x28ba('0x7c')])){return this['channel']['noop']('no\x20anguage\x20configured');}if(!this[_0x28ba('0x82')](_0x3507a2[_0x28ba('0x5a')])){return this[_0x28ba('0xf')][_0x28ba('0xa8')]('no\x20text\x20configured');}this[_0x28ba('0xf')]['bot']=!![];this['createSquareDetailsReport'](_0x3507a2);this[_0x28ba('0x42')](_0x3507a2[_0x28ba('0x5a')],'in','','');this['channel'][_0x28ba('0xa8')](util[_0x28ba('0x2b')](_0x28ba('0xeb'),_0x3507a2[_0x28ba('0x5a')]));var _0x2adba9=this['googleDialogflowV2'][_0x28ba('0xa4')](this,_0x3507a2);if(_0x2adba9){for(var _0x323ba4 in _0x2adba9){if(_0x2adba9[_0x28ba('0x99')](_0x323ba4)){if(_0x323ba4!==_0x28ba('0xec')){this['channel'][_0x28ba('0x9b')](util['format']('DIALOGFLOW_%s',_0x323ba4['toUpperCase']()),_0x2adba9[_0x323ba4]);}}}this[_0x28ba('0x42')](_0x2adba9['speech'],_0x28ba('0xe5'),_0x28ba('0xe8'),_0x2adba9[_0x28ba('0xec')]);return this[_0x28ba('0xf')]['noop'](util[_0x28ba('0x2b')](_0x28ba('0xed'),_0x2adba9[_0x28ba('0xe4')]));}return this[_0x28ba('0xf')][_0x28ba('0x33')](_0x3507a2,'DialogflowV2\x20is\x20unreachable');};AGIVertices[_0x28ba('0x12')][_0x28ba('0xee')]=function(_0x2d7d4d){logger[_0x28ba('0x30')](util[_0x28ba('0x2b')](_0x28ba('0xef'),_0x2d7d4d[_0x28ba('0xb5')]));if(!this[_0x28ba('0x82')](_0x2d7d4d[_0x28ba('0xf0')])){return this[_0x28ba('0xf')][_0x28ba('0xa8')]('no\x20ndauth\x20url\x20configured');}if(!this['isConfigured'](_0x2d7d4d[_0x28ba('0xf1')])){return this['channel'][_0x28ba('0xa8')](_0x28ba('0xf2'));}if(!this['isConfigured'](_0x2d7d4d[_0x28ba('0xf3')])){return this['channel'][_0x28ba('0xa8')](_0x28ba('0xf4'));}if(!this[_0x28ba('0x82')](_0x2d7d4d['ndassistant_url'])){return this['channel']['noop'](_0x28ba('0xa9'));}this[_0x28ba('0xf')][_0x28ba('0xe0')]=!![];this['createSquareDetailsReport'](_0x2d7d4d);this[_0x28ba('0x42')](_0x2d7d4d[_0x28ba('0x5a')],'in','','');this[_0x28ba('0xf')][_0x28ba('0xa8')](util[_0x28ba('0x2b')](_0x28ba('0xf5'),_0x2d7d4d['text']));var _0x5b2d14=this[_0x28ba('0x7d')][_0x28ba('0xa4')](this,_0x2d7d4d);if(_0x5b2d14){for(var _0x40c409 in _0x5b2d14){if(_0x5b2d14[_0x28ba('0x99')](_0x40c409)){this['channel'][_0x28ba('0x9b')](util[_0x28ba('0x2b')]('SESTEK_NDA_%s',_0x40c409['toUpperCase']()),_0x5b2d14[_0x40c409]);}}this[_0x28ba('0x42')](_0x5b2d14[_0x28ba('0xe4')],_0x28ba('0xe5'),_0x28ba('0xee'),'');if(_0x5b2d14['audiofile']){this[_0x28ba('0xf')][_0x28ba('0xa8')](util[_0x28ba('0x2b')](_0x28ba('0xf6'),_0x5b2d14[_0x28ba('0xf7')]));var _0x983654=this[_0x28ba('0xf')]['streamFile'](_0x5b2d14[_0x28ba('0xf7')]);try{fs[_0x28ba('0xf8')](_0x5b2d14[_0x28ba('0xf7')]+'.wav');}catch(_0xbe992d){logger['error'](_0xbe992d);}return _0x983654;}else{return this['channel'][_0x28ba('0xa8')](util[_0x28ba('0x2b')](_0x28ba('0xf9'),_0x5b2d14[_0x28ba('0xe4')]));}}return this[_0x28ba('0xf')][_0x28ba('0x33')](_0x2d7d4d,_0x28ba('0xfa'));};AGIVertices[_0x28ba('0x12')]['end']=function(_0x3b65e3){logger[_0x28ba('0x30')](util[_0x28ba('0x2b')](_0x28ba('0xfb'),_0x3b65e3['label']));return this[_0x28ba('0xf')][_0x28ba('0xa8')](_0x28ba('0xfc'));};AGIVertices['prototype'][_0x28ba('0xfd')]=function(_0x5b09b5){logger['info'](util['format'](_0x28ba('0xfe'),_0x5b09b5[_0x28ba('0xb5')]));var _0x5d37b6='';if(_0x5b09b5['trunk_id']){if(!this[_0x28ba('0x82')](_0x5b09b5[_0x28ba('0xff')])){return this['channel']['error'](_0x5b09b5,_0x28ba('0x100'));}else{var _0x3b5476=parseInt(_0x5b09b5[_0x28ba('0xff')],0xa);if(isNaN(_0x3b5476)){_0x5d37b6=_0x5b09b5[_0x28ba('0xff')];}else{_0x5d37b6=this[_0x28ba('0x1d')][_0x28ba('0xa4')](this,_0x5b09b5[_0x28ba('0xff')]);if(!_0x5d37b6){return this['channel'][_0x28ba('0x33')](_0x5b09b5,_0x28ba('0x101'));}}}}else if(_0x5b09b5[_0x28ba('0x102')]){_0x5d37b6=_0x5b09b5[_0x28ba('0x102')];}else{return this[_0x28ba('0xf')][_0x28ba('0x33')](_0x5b09b5,'no\x20trunk\x20selected');}var _0x2b8c07=this[_0x28ba('0xf')]['exec'](_0x28ba('0xdb'),[util[_0x28ba('0x2b')](_0x28ba('0x103'),_0x5d37b6,_0x5b09b5['phone']),_0x5b09b5[_0x28ba('0x64')],_0x5b09b5[_0x28ba('0xdc')],_0x5b09b5[_0x28ba('0x62')]]);if(_0x2b8c07[_0x28ba('0xa1')]===-0x1){return _0x2b8c07;}return this[_0x28ba('0xf')]['noop'](util[_0x28ba('0x2b')](_0x28ba('0x104'),_0x28ba('0xdb')));};AGIVertices[_0x28ba('0x12')][_0x28ba('0x105')]=function(_0x4a6e05){logger[_0x28ba('0x30')](util[_0x28ba('0x2b')](_0x28ba('0x106'),_0x4a6e05[_0x28ba('0xb5')]));return this[_0x28ba('0xf')]['noop']('finally');};AGIVertices[_0x28ba('0x12')][_0x28ba('0xe')]=function(_0x2ee51d){logger[_0x28ba('0x30')](util[_0x28ba('0x2b')](_0x28ba('0x107'),_0x2ee51d[_0x28ba('0xb5')]));if(_0x2ee51d[_0x28ba('0xa5')]===0x0){return this[_0x28ba('0xa3')](_0x2ee51d);}_0x2ee51d['retry']-=0x1;if(!this[_0x28ba('0x82')](_0x2ee51d[_0x28ba('0x108')])){return this['channel'][_0x28ba('0x33')](_0x2ee51d,_0x28ba('0x109'));}var _0x259bc8=this[_0x28ba('0x1f')][_0x28ba('0xa4')](this,_0x2ee51d[_0x28ba('0x108')]);if(!_0x259bc8){return this[_0x28ba('0xf')][_0x28ba('0x33')](_0x2ee51d,_0x28ba('0x10a'));}if(!this[_0x28ba('0x82')](_0x2ee51d['variable_id'])){return this[_0x28ba('0xf')][_0x28ba('0x33')]('no\x20variable\x20selected\x20for\x20the\x20result');}var _0x3dee48=this[_0x28ba('0xf')]['getData'](_0x259bc8,_0x2ee51d[_0x28ba('0x10b')],_0x2ee51d[_0x28ba('0x10c')]);var _0x5f3056=_0x3dee48[_0x28ba('0xa1')]?_0x3dee48[_0x28ba('0xa1')]['toString']():'';logger[_0x28ba('0x30')](_0x28ba('0x10d'),JSON[_0x28ba('0x6e')](_0x3dee48));if(_0x3dee48[_0x28ba('0xa1')]===-0x1){this['createSquareDetailsReport'][_0x28ba('0xa4')](this,_0x2ee51d,_0x5f3056);return _0x3dee48;}else if(_0x3dee48[_0x28ba('0x9f')]===_0x28ba('0x64')){_0x3dee48[_0x28ba('0xa1')]=_0x5f3056[_0x28ba('0x97')]>=parseInt(_0x2ee51d[_0x28ba('0x10e')])?'x':'i';}else{_0x3dee48['result']=_0x5f3056[_0x28ba('0x97')]>=parseInt(_0x2ee51d[_0x28ba('0x10e')])&&_0x5f3056[_0x28ba('0x97')]<=parseInt(_0x2ee51d[_0x28ba('0x10c')])?'x':'i';}var _0x4ecf36=this['getVariable']['sync'](this,_0x2ee51d[_0x28ba('0xd1')]);if(!_0x4ecf36){return this[_0x28ba('0xf')][_0x28ba('0x33')](_0x2ee51d,_0x28ba('0xd2'));}this[_0x28ba('0xf')][_0x28ba('0x9b')](_0x4ecf36,_0x5f3056);if(this[_0x28ba('0x82')](_0x2ee51d[_0x28ba('0x10f')])){var _0x8c54b2=parseInt(_0x2ee51d['hiddendigitsnum'],0xa);var _0x2b30f3=rs['generate']({'charset':'*','length':_0x8c54b2});var _0x325ae1=_0x5f3056[_0x28ba('0x97')];if(_0x325ae1>0x0){if(_0x325ae1>_0x8c54b2){this[_0x28ba('0x37')][_0x28ba('0xa4')](this,_0x2ee51d,_0x2ee51d['hiddendigitspos']===_0x28ba('0x110')?_0x2b30f3+_0x5f3056['substr'](_0x8c54b2):_0x5f3056[_0x28ba('0x111')](0x0,_0x325ae1-_0x8c54b2)+_0x2b30f3);}else{this[_0x28ba('0x37')][_0x28ba('0xa4')](this,_0x2ee51d,rs[_0x28ba('0x112')]({'charset':'*','length':_0x325ae1}));}}else{this[_0x28ba('0x37')]['sync'](this,_0x2ee51d,'');}}else{this[_0x28ba('0x37')][_0x28ba('0xa4')](this,_0x2ee51d,_0x5f3056);}return _0x3dee48;};AGIVertices[_0x28ba('0x12')][_0x28ba('0x113')]=function(_0x375cf7){logger['info'](util[_0x28ba('0x2b')](_0x28ba('0x114'),_0x375cf7['label']));return this[_0x28ba('0xe')](_0x375cf7);};AGIVertices[_0x28ba('0x12')]['goal']=function(_0x2f4b03){logger[_0x28ba('0x30')](util['format'](_0x28ba('0x115'),_0x2f4b03[_0x28ba('0xb5')]));this[_0x28ba('0x37')][_0x28ba('0xa4')](this,_0x2f4b03,_0x2f4b03[_0x28ba('0x116')]);return this['channel'][_0x28ba('0xa8')](util[_0x28ba('0x2b')]('GOAL\x20%s',_0x2f4b03[_0x28ba('0x116')]));};AGIVertices[_0x28ba('0x12')][_0x28ba('0x117')]=function(_0x5b5c8d){logger[_0x28ba('0x30')](util['format'](_0x28ba('0x118'),_0x5b5c8d['label']));if(!this['isConfigured'](_0x5b5c8d[_0x28ba('0x85')])||!this['isConfigured'](_0x5b5c8d[_0x28ba('0x86')])){return this[_0x28ba('0xf')]['noop'](_0x28ba('0x119'));}if(!this[_0x28ba('0x82')](_0x5b5c8d[_0x28ba('0x5a')])){return this[_0x28ba('0xf')][_0x28ba('0xa8')](_0x28ba('0xa9'));}this['channel']['noop'](util[_0x28ba('0x2b')]('Trying\x20aws\x20Polly\x20%s',_0x5b5c8d[_0x28ba('0x5a')]));var _0x132998=this[_0x28ba('0x84')][_0x28ba('0xa4')](this,_0x5b5c8d);if(_0x132998){this[_0x28ba('0xf')][_0x28ba('0xa8')](util[_0x28ba('0x2b')]('aws\x20Polly\x20%s\x20file\x20created',_0x132998));var _0x482fc9=this[_0x28ba('0xf')][_0x28ba('0x11a')](_0x132998);try{fs[_0x28ba('0xf8')](_0x132998+_0x28ba('0x11b'));}catch(_0x7f2af7){logger[_0x28ba('0x33')](_0x7f2af7);}return _0x482fc9;}return this['channel'][_0x28ba('0x33')](_0x5b5c8d,'aws\x20Polly\x20is\x20unreachable');};AGIVertices['prototype'][_0x28ba('0x11c')]=function(_0xb595b8){logger['info'](util['format'](_0x28ba('0x11d'),_0xb595b8['label']));if(!this['isConfigured'](_0xb595b8[_0x28ba('0x85')])||!this[_0x28ba('0x82')](_0xb595b8['aws_secret_access_key'])){return this['channel'][_0x28ba('0xa8')](_0x28ba('0x119'));}if(!this[_0x28ba('0x82')](_0xb595b8[_0x28ba('0x8b')])){return this[_0x28ba('0xf')][_0x28ba('0xa8')]('no\x20bot\x20name\x20configured');}if(!this[_0x28ba('0x82')](_0xb595b8[_0x28ba('0x5a')])){return this['channel']['noop'](_0x28ba('0xa9'));}this['channel'][_0x28ba('0xe0')]=!![];this[_0x28ba('0x37')](_0xb595b8);this[_0x28ba('0x42')](_0xb595b8[_0x28ba('0x5a')],'in','','');this[_0x28ba('0xf')][_0x28ba('0xa8')](util[_0x28ba('0x2b')]('Trying\x20Amazon\x20Lex:\x20%s',_0xb595b8[_0x28ba('0x5a')]));var _0xf14005=this[_0x28ba('0x8a')][_0x28ba('0xa4')](this,_0xb595b8);if(_0xf14005){for(var _0x34cbd6 in _0xf14005){if(_0xf14005[_0x28ba('0x99')](_0x34cbd6)&&_[_0x28ba('0x93')](_0xf14005[_0x34cbd6])){this['channel'][_0x28ba('0x9b')](util['format']('AWS_LEX_%s',_0x34cbd6[_0x28ba('0xe3')]()),_0xf14005[_0x34cbd6]);}}if(_[_0x28ba('0x45')](_0xf14005[_0x28ba('0x73')])){return this[_0x28ba('0xf')][_0x28ba('0xa8')](_0x28ba('0x11e'));}else{this[_0x28ba('0x42')](_0xf14005[_0x28ba('0x73')],'out',_0x28ba('0x11f'),'');return this[_0x28ba('0xf')][_0x28ba('0xa8')](util[_0x28ba('0x2b')](_0x28ba('0x120'),_0xf14005['message']));}}return this[_0x28ba('0xf')][_0x28ba('0x33')](_0xb595b8,_0x28ba('0x121'));};AGIVertices[_0x28ba('0x12')][_0x28ba('0x122')]=function(_0x253dd4){logger['info'](util[_0x28ba('0x2b')]('Enter\x20in\x20GOOGLEASR\x20(%s)\x20block\x20%s',_0x253dd4[_0x28ba('0xb5')],_0x253dd4[_0x28ba('0x64')]));if(!this[_0x28ba('0x82')](_0x253dd4[_0x28ba('0x76')])){return this[_0x28ba('0xf')]['noop']('no\x20key\x20configured');}var _0x206e04=_0x28ba('0x123');var _0x26c51b=util[_0x28ba('0x2b')](_0x28ba('0x124'),FILES_PATH,rs['generate'](0x4));var _0x337fef=util[_0x28ba('0x2b')](_0x28ba('0x9a'),_0x26c51b,_0x206e04);var _0x1616e1=!![];if(_0x253dd4[_0x28ba('0x125')]===_0x28ba('0x126')){_0x1616e1=![];}var _0x4cb016=this['channel'][_0x28ba('0x127')](_0x26c51b,_0x206e04,_0x253dd4[_0x28ba('0x128')],_0x253dd4[_0x28ba('0x64')],undefined,_0x1616e1);if(_0x4cb016[_0x28ba('0xa1')]!==-0x1){this[_0x28ba('0xf')][_0x28ba('0xa8')](util[_0x28ba('0x2b')](_0x28ba('0x129'),_0x337fef));var _0x50f426=this[_0x28ba('0x8c')][_0x28ba('0xa4')](this,_0x253dd4,_0x337fef);if(_0x50f426){for(var _0x42c99b in _0x50f426){if(_0x50f426[_0x28ba('0x99')](_0x42c99b)){this[_0x28ba('0xf')]['setVariable'](util['format'](_0x28ba('0x12a'),_0x42c99b[_0x28ba('0xe3')]()),_0x50f426[_0x42c99b]);}}return this[_0x28ba('0xf')][_0x28ba('0xa8')](util['format'](_0x28ba('0x12b'),JSON['stringify'](_0x50f426)));}}return _0x4cb016;};AGIVertices['prototype'][_0x28ba('0x12c')]=function(_0x1e105f){logger[_0x28ba('0x30')](util[_0x28ba('0x2b')](_0x28ba('0x12d'),_0x1e105f['label']));if(!this['isConfigured'](_0x1e105f['appid'])){return this[_0x28ba('0xf')][_0x28ba('0xa8')]('no\x20appid\x20configured');}if(!this[_0x28ba('0x82')](_0x1e105f[_0x28ba('0x90')])){return this[_0x28ba('0xf')]['noop'](_0x28ba('0x12e'));}var _0x441b62=_0x28ba('0x123');var _0x57aaa5=util['format']('%s/recordings/%s',FILES_PATH,rs[_0x28ba('0x112')](0x4));var _0x4deebd=util[_0x28ba('0x2b')](_0x28ba('0x9a'),_0x57aaa5,_0x441b62);var _0x556f45=!![];if(_0x1e105f['beep']==='NOBEEP'){_0x556f45=![];}var _0x5dae08=this['channel'][_0x28ba('0x127')](_0x57aaa5,_0x441b62,_0x1e105f[_0x28ba('0x128')],_0x1e105f[_0x28ba('0x64')],undefined,_0x556f45);if(_0x5dae08[_0x28ba('0xa1')]!==-0x1){this[_0x28ba('0xf')]['noop'](util['format']('tilde\x20%s\x20file\x20created',_0x4deebd));var _0x31b41e=this[_0x28ba('0x8e')]['sync'](this,_0x1e105f,_0x4deebd);if(_0x31b41e){for(var _0x40b70e in _0x31b41e){if(_0x31b41e[_0x28ba('0x99')](_0x40b70e)){this[_0x28ba('0xf')]['setVariable'](util[_0x28ba('0x2b')](_0x28ba('0x12f'),_0x40b70e[_0x28ba('0xe3')]()),_0x31b41e[_0x40b70e]);}}return this[_0x28ba('0xf')][_0x28ba('0xa8')](util[_0x28ba('0x2b')](_0x28ba('0x130'),JSON[_0x28ba('0x6e')](_0x31b41e)));}}return _0x5dae08;};AGIVertices['prototype'][_0x28ba('0x131')]=function(_0xc1618d){logger[_0x28ba('0x30')](util[_0x28ba('0x2b')](_0x28ba('0x132'),_0xc1618d[_0x28ba('0xb5')]));return this[_0x28ba('0xf')][_0x28ba('0x133')](_0xc1618d['context'],_0xc1618d[_0x28ba('0x3d')],_0xc1618d[_0x28ba('0x3e')]);};AGIVertices['prototype']['gotoif']=function(_0xc525a7){logger[_0x28ba('0x30')](util[_0x28ba('0x2b')](_0x28ba('0x134'),_0xc525a7[_0x28ba('0xb5')]));if(!this[_0x28ba('0x82')](_0xc525a7['condition'])){return this[_0x28ba('0xf')]['error'](_0xc525a7,_0x28ba('0x135'));}try{var _0x94a24c=eval(_0xc525a7[_0x28ba('0x136')])?_0x28ba('0x137'):_0x28ba('0x138');this[_0x28ba('0xf')]['noop'](util[_0x28ba('0x2b')](_0x28ba('0x139'),_0xc525a7[_0x28ba('0x136')],_0x94a24c));return{'code':0xc8,'result':_0x94a24c};}catch(_0x3bba34){return{'code':0xc8,'result':_0x28ba('0x138')};}};AGIVertices[_0x28ba('0x12')][_0x28ba('0x13a')]=function(_0x3ddf37){logger['info'](util[_0x28ba('0x2b')](_0x28ba('0x13b'),_0x3ddf37[_0x28ba('0xb5')]));if(!this['isConfigured'](_0x3ddf37[_0x28ba('0x13c')])){return this[_0x28ba('0xf')][_0x28ba('0x33')](_0x3ddf37,'no\x20interval\x20configured');}var _0x4ec561=this[_0x28ba('0x26')]['sync'](this,_0x3ddf37['interval_id']);if(!_0x4ec561){return this[_0x28ba('0xf')]['error'](_0x3ddf37,_0x28ba('0x13d'));}for(var _0x4196f0=0x0;_0x4196f0<_0x4ec561[_0x28ba('0x97')];_0x4196f0+=0x1){var _0x4f6ab2=this[_0x28ba('0xf')]['getVariable'](util[_0x28ba('0x2b')](_0x28ba('0x13e'),_0x4ec561[_0x4196f0]));if(_0x4f6ab2[_0x28ba('0xa1')]===-0x1){return _0x4f6ab2;}logger['info'](util[_0x28ba('0x2b')](_0x28ba('0x13f'),_0x4ec561[_0x4196f0],_0x4f6ab2[_0x28ba('0x9f')]));if(_0x4f6ab2['extra']===_0x28ba('0x137')){logger[_0x28ba('0x30')](util['format'](_0x28ba('0x13f'),_0x4ec561[_0x4196f0],_0x28ba('0x137')));this[_0x28ba('0xf')][_0x28ba('0xa8')](util[_0x28ba('0x2b')](_0x28ba('0x13f'),_0x4ec561[_0x4196f0],_0x28ba('0x137')));return{'code':0xc8,'result':_0x28ba('0x137')};}else{logger[_0x28ba('0x30')](util[_0x28ba('0x2b')](_0x28ba('0x13f'),_0x4ec561[_0x4196f0],_0x28ba('0x138')));this['channel'][_0x28ba('0xa8')](util['format'](_0x28ba('0x13f'),_0x4ec561[_0x4196f0],'false'));}}return{'code':0xc8,'result':_0x28ba('0x138')};};AGIVertices[_0x28ba('0x12')][_0x28ba('0x140')]=function(_0x4f5e82){logger[_0x28ba('0x30')](util[_0x28ba('0x2b')]('Enter\x20in\x20HANGUP\x20(%s)\x20block',_0x4f5e82['label']));return this[_0x28ba('0xf')][_0x28ba('0x140')]();};AGIVertices[_0x28ba('0x12')]['ispeechasr']=function(_0x19428a){logger[_0x28ba('0x30')](util[_0x28ba('0x2b')](_0x28ba('0x141'),_0x19428a['label']));if(!this[_0x28ba('0x82')](_0x19428a[_0x28ba('0x76')])){return this['channel'][_0x28ba('0xa8')]('no\x20key\x20configured');}var _0x5960b3=_0x28ba('0x123');var _0x10640c=util['format'](_0x28ba('0x124'),FILES_PATH,rs[_0x28ba('0x112')](0x4));var _0x8244b1=util[_0x28ba('0x2b')]('%s.%s',_0x10640c,_0x5960b3);var _0x3f291c=!![];if(_0x19428a[_0x28ba('0x125')]===_0x28ba('0x126')){_0x3f291c=![];}var _0xdecec2=this[_0x28ba('0xf')]['recordFile'](_0x10640c,_0x5960b3,_0x19428a[_0x28ba('0x128')],_0x19428a[_0x28ba('0x64')],undefined,_0x3f291c);if(_0xdecec2['result']!==-0x1){this[_0x28ba('0xf')][_0x28ba('0xa8')](util[_0x28ba('0x2b')](_0x28ba('0x142'),_0x8244b1));var _0x42214c=this['ispeechASR']['sync'](this,_0x19428a,_0x8244b1);if(_0x42214c){for(var _0x35bc29 in _0x42214c){if(_0x42214c[_0x28ba('0x99')](_0x35bc29)){this['channel']['setVariable'](util[_0x28ba('0x2b')](_0x28ba('0x143'),_0x35bc29[_0x28ba('0xe3')]()),_0x42214c[_0x35bc29]);}}return this[_0x28ba('0xf')][_0x28ba('0xa8')](util[_0x28ba('0x2b')](_0x28ba('0x144'),JSON['stringify'](_0x42214c)));}}return _0xdecec2;};AGIVertices[_0x28ba('0x12')][_0x28ba('0x145')]=function(_0x4b6178){logger[_0x28ba('0x30')](util[_0x28ba('0x2b')](_0x28ba('0x146'),_0x4b6178[_0x28ba('0xb5')]));if(!this[_0x28ba('0x82')](_0x4b6178[_0x28ba('0x76')])){return this[_0x28ba('0xf')][_0x28ba('0xa8')](_0x28ba('0xdf'));}if(!this[_0x28ba('0x82')](_0x4b6178['text'])){return this[_0x28ba('0xf')]['noop'](_0x28ba('0xa9'));}this['channel'][_0x28ba('0xa8')](util['format'](_0x28ba('0x147'),_0x4b6178[_0x28ba('0x5a')]));var _0x3a82c=this[_0x28ba('0x7e')][_0x28ba('0xa4')](this,_0x4b6178);if(_0x3a82c){this[_0x28ba('0xf')][_0x28ba('0xa8')](util['format']('ispeech\x20%s\x20file\x20created',_0x3a82c));var _0x2f10a4=this[_0x28ba('0xf')][_0x28ba('0x11a')](_0x3a82c,_0x4b6178[_0x28ba('0x128')]);try{fs[_0x28ba('0xf8')](_0x3a82c+_0x28ba('0x11b'));}catch(_0x2cc33c){logger[_0x28ba('0x33')](_0x2cc33c);}return _0x2f10a4;}return this[_0x28ba('0xf')][_0x28ba('0x33')](_0x4b6178,'ispeech\x20TTS\x20is\x20unreachable');};AGIVertices[_0x28ba('0x12')]['login']=function(_0x4b2b09){logger[_0x28ba('0x30')](util[_0x28ba('0x2b')](_0x28ba('0x148'),_0x4b2b09[_0x28ba('0xb5')]));if(!this['isConfigured'](_0x4b2b09['findBy'])){return this['channel'][_0x28ba('0x33')](_0x4b2b09,_0x28ba('0x149'));}logger['info'](util[_0x28ba('0x2b')](_0x28ba('0x14a'),this['channel'][_0x28ba('0x3a')],_0x4b2b09[_0x28ba('0x14b')]));var _0x1893b8=this['agentLogin'][_0x28ba('0xa4')](this,_0x4b2b09[_0x28ba('0x14b')]);if(_0x1893b8){logger[_0x28ba('0x30')](util[_0x28ba('0x2b')](_0x28ba('0x14c'),this['channel'][_0x28ba('0x3a')],_0x4b2b09['findBy']));this[_0x28ba('0xf')][_0x28ba('0xa8')](util['format'](_0x28ba('0x14c'),this[_0x28ba('0xf')][_0x28ba('0x3a')],_0x4b2b09[_0x28ba('0x14b')]));return{'code':0xc8,'result':_0x28ba('0x14d')};}else{logger['info'](util[_0x28ba('0x2b')](_0x28ba('0x14e'),this[_0x28ba('0xf')]['callerid'],_0x4b2b09[_0x28ba('0x14b')]));this[_0x28ba('0xf')][_0x28ba('0xa8')](util['format']('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this['channel']['callerid'],_0x4b2b09['findBy']));return{'code':0xc8,'result':_0x28ba('0x14f')};}};AGIVertices[_0x28ba('0x12')][_0x28ba('0x150')]=function(_0x26c2c2){logger[_0x28ba('0x30')](util[_0x28ba('0x2b')](_0x28ba('0x151'),_0x26c2c2[_0x28ba('0xb5')]));if(!this[_0x28ba('0x82')](_0x26c2c2[_0x28ba('0x14b')])){return this[_0x28ba('0xf')]['error'](_0x26c2c2,_0x28ba('0x149'));}logger[_0x28ba('0x30')](util['format']('FIND\x20AGENT\x20%s\x20BY\x20%s',this[_0x28ba('0xf')][_0x28ba('0x3a')],_0x26c2c2[_0x28ba('0x14b')]));var _0x4a2d59=this[_0x28ba('0x54')][_0x28ba('0xa4')](this,_0x26c2c2[_0x28ba('0x14b')]);if(_0x4a2d59){logger[_0x28ba('0x30')](util[_0x28ba('0x2b')](_0x28ba('0x14c'),this['channel']['callerid'],_0x26c2c2[_0x28ba('0x14b')]));this[_0x28ba('0xf')][_0x28ba('0xa8')](util[_0x28ba('0x2b')](_0x28ba('0x14c'),this[_0x28ba('0xf')][_0x28ba('0x3a')],_0x26c2c2['findBy']));return{'code':0xc8,'result':'success'};}else{logger[_0x28ba('0x30')](util[_0x28ba('0x2b')](_0x28ba('0x14e'),this[_0x28ba('0xf')][_0x28ba('0x3a')],_0x26c2c2[_0x28ba('0x14b')]));this[_0x28ba('0xf')]['noop'](util[_0x28ba('0x2b')](_0x28ba('0x14e'),this[_0x28ba('0xf')]['callerid'],_0x26c2c2[_0x28ba('0x14b')]));return{'code':0xc8,'result':_0x28ba('0x14f')};}};AGIVertices[_0x28ba('0x12')][_0x28ba('0x152')]=function(_0x445aa3){logger[_0x28ba('0x30')](util[_0x28ba('0x2b')]('Enter\x20in\x20MATH\x20(%s)\x20block',_0x445aa3[_0x28ba('0xb5')]));if(!this['isConfigured'](_0x445aa3[_0x28ba('0x153')])){return this[_0x28ba('0xf')][_0x28ba('0x33')](_0x445aa3,'no\x20operation\x20configured');}this[_0x28ba('0xf')]['noop'](util[_0x28ba('0x2b')](_0x28ba('0x154'),_0x445aa3[_0x28ba('0x153')]));var _0x622d75=eval(_0x445aa3[_0x28ba('0x153')]);if(!this[_0x28ba('0x82')](_0x445aa3[_0x28ba('0xd1')])){return this[_0x28ba('0xf')][_0x28ba('0xa8')](_0x28ba('0xd0'));}var _0x1fae73=this['getVariable']['sync'](this,_0x445aa3['variable_id']);if(!_0x1fae73){return this[_0x28ba('0xf')][_0x28ba('0x33')](_0x445aa3,_0x28ba('0xd2'));}if(_[_0x28ba('0x96')](_0x622d75)){var _0x5799e0=this;_0x622d75['forEach'](function(_0x1d1aa3,_0x5e835f){_0x5799e0['channel']['setVariable'](util[_0x28ba('0x2b')]('%s[%s]',_0x1fae73,_0x5e835f),_0x1d1aa3);});return this[_0x28ba('0xf')][_0x28ba('0xa8')](util[_0x28ba('0x2b')](_0x28ba('0x155'),_0x1fae73));}else{return this[_0x28ba('0xf')]['setVariable'](_0x1fae73,_0x622d75);}};AGIVertices[_0x28ba('0x12')][_0x28ba('0xd')]=function(_0x16f719){logger[_0x28ba('0x30')](util[_0x28ba('0x2b')]('Enter\x20in\x20MENU\x20(%s)\x20block',_0x16f719[_0x28ba('0xb5')]));if(_0x16f719['retry']===0x0){return this[_0x28ba('0xa3')](_0x16f719);}_0x16f719[_0x28ba('0xa5')]-=0x1;if(!this[_0x28ba('0x82')](_0x16f719[_0x28ba('0x108')])){return this[_0x28ba('0xf')][_0x28ba('0x33')](_0x16f719,_0x28ba('0x109'));}var _0x3d732b=this[_0x28ba('0x1f')][_0x28ba('0xa4')](this,_0x16f719[_0x28ba('0x108')]);if(!_0x3d732b){return this[_0x28ba('0xf')][_0x28ba('0x33')](_0x16f719,_0x28ba('0x10a'));}var _0x43cd17=this[_0x28ba('0xf')][_0x28ba('0x156')](_0x3d732b,_0x16f719[_0x28ba('0x10b')],_0x16f719['digit']);var _0x48f71b=_0x43cd17[_0x28ba('0xa1')];if(_0x43cd17[_0x28ba('0xa1')]===-0x1){this[_0x28ba('0x37')][_0x28ba('0xa4')](this,_0x16f719,'-1');return _0x43cd17;}else if(_0x43cd17[_0x28ba('0x9f')]==='timeout'){_0x43cd17['result']=_0x43cd17[_0x28ba('0xa1')][_0x28ba('0x97')]>0x0?_0x43cd17['result']:'t';}else if(_[_0x28ba('0x44')](_0x43cd17[_0x28ba('0xa1')])){_0x43cd17[_0x28ba('0xa1')]='#';_0x48f71b='#';}if(!this['isConfigured'](_0x16f719[_0x28ba('0xd1')])){this[_0x28ba('0xf')]['noop']('no\x20variable\x20selected\x20for\x20the\x20result');}else{var _0x1cf825=this[_0x28ba('0x13')][_0x28ba('0xa4')](this,_0x16f719['variable_id']);if(!_0x1cf825){return this[_0x28ba('0xf')][_0x28ba('0x33')](_0x16f719,_0x28ba('0xd2'));}this['channel'][_0x28ba('0x9b')](_0x1cf825,_0x48f71b);}this[_0x28ba('0x37')][_0x28ba('0xa4')](this,_0x16f719,_0x48f71b);return _0x43cd17;};AGIVertices['prototype'][_0x28ba('0xa8')]=function(_0x174f64){logger[_0x28ba('0x30')](util['format'](_0x28ba('0x157'),_0x174f64[_0x28ba('0xb5')]));return this[_0x28ba('0xf')]['noop'](_0x174f64[_0x28ba('0x158')]||_0x174f64[_0x28ba('0xb5')]);};AGIVertices[_0x28ba('0x12')][_0x28ba('0x159')]=function(_0x10fb7a){logger[_0x28ba('0x30')](util[_0x28ba('0x2b')](_0x28ba('0x15a'),_0x10fb7a[_0x28ba('0xb5')]));if(!this[_0x28ba('0x82')](_0x10fb7a[_0x28ba('0x14b')])){return this[_0x28ba('0xf')][_0x28ba('0x33')](_0x10fb7a,'no\x20find\x20by\x20configured');}logger[_0x28ba('0x30')](util[_0x28ba('0x2b')](_0x28ba('0x14a'),this['channel'][_0x28ba('0x3a')],_0x10fb7a[_0x28ba('0x14b')]));var _0x21fda3=this[_0x28ba('0x4f')][_0x28ba('0xa4')](this,_0x10fb7a[_0x28ba('0x15b')]);var _0x552f21=this[_0x28ba('0x51')][_0x28ba('0xa4')](this,_0x10fb7a[_0x28ba('0x14b')],_0x21fda3);if(_0x552f21){logger[_0x28ba('0x30')](util[_0x28ba('0x2b')](_0x28ba('0x14c'),this[_0x28ba('0xf')][_0x28ba('0x3a')],_0x10fb7a[_0x28ba('0x14b')]));this[_0x28ba('0xf')][_0x28ba('0xa8')](util[_0x28ba('0x2b')](_0x28ba('0x14c'),this[_0x28ba('0xf')]['callerid'],_0x10fb7a[_0x28ba('0x14b')]));return{'code':0xc8,'result':_0x28ba('0x14d')};}else{logger[_0x28ba('0x30')](util[_0x28ba('0x2b')](_0x28ba('0x14e'),this['channel'][_0x28ba('0x3a')],_0x10fb7a[_0x28ba('0x14b')]));this[_0x28ba('0xf')][_0x28ba('0xa8')](util[_0x28ba('0x2b')](_0x28ba('0x14c'),this[_0x28ba('0xf')][_0x28ba('0x3a')],_0x10fb7a[_0x28ba('0x14b')]));return{'code':0xc8,'result':_0x28ba('0x14f')};}};AGIVertices[_0x28ba('0x12')][_0x28ba('0x15c')]=function(_0x26699e){logger[_0x28ba('0x30')](util['format'](_0x28ba('0x15d'),_0x26699e[_0x28ba('0xb5')]));if(!this[_0x28ba('0x82')](_0x26699e[_0x28ba('0x108')])){return this[_0x28ba('0xf')][_0x28ba('0x33')](_0x26699e,_0x28ba('0x109'));}var _0x1ba8bb=this[_0x28ba('0x1f')][_0x28ba('0xa4')](this,_0x26699e[_0x28ba('0x108')]);if(!_0x1ba8bb){return this[_0x28ba('0xf')][_0x28ba('0x33')](_0x26699e,_0x28ba('0x10a'));}var _0x3b71b4=this[_0x28ba('0xf')][_0x28ba('0xaf')](_0x28ba('0x15e'),[_0x1ba8bb,_0x26699e['opts']]);if(_0x3b71b4[_0x28ba('0xa1')]===-0x1){return _0x3b71b4;}return this[_0x28ba('0xf')]['noop'](util[_0x28ba('0x2b')](_0x28ba('0xc1'),_0x28ba('0x15e'),_0x1ba8bb));};AGIVertices[_0x28ba('0x12')][_0x28ba('0x15f')]=function(_0x1a686a){logger['info'](util[_0x28ba('0x2b')](_0x28ba('0x160'),_0x1a686a[_0x28ba('0xb5')]));if(!this[_0x28ba('0x82')](_0x1a686a[_0x28ba('0x161')])){return this[_0x28ba('0xf')][_0x28ba('0x33')](_0x1a686a,_0x28ba('0x162'));}var _0x2b5c2d='';var _0x383df2=parseInt(_0x1a686a[_0x28ba('0x161')],0xa);if(isNaN(_0x383df2)){_0x2b5c2d=_0x1a686a['queue_id'];}else{_0x2b5c2d=this[_0x28ba('0x163')][_0x28ba('0xa4')](this,_0x1a686a['queue_id']);if(!_0x2b5c2d){return this[_0x28ba('0xf')][_0x28ba('0x33')](_0x1a686a,_0x28ba('0x164'));}}var _0x3f9456='';if(this['isConfigured'](_0x1a686a[_0x28ba('0x108')])){var _0x127c3d=this[_0x28ba('0x1f')][_0x28ba('0xa4')](this,_0x1a686a[_0x28ba('0x108')]);if(_0x127c3d){_0x3f9456=_0x127c3d;}}this[_0x28ba('0x37')][_0x28ba('0xa4')](this,_0x1a686a,_0x2b5c2d);if(_0x1a686a[_0x28ba('0xdc')]['indexOf']('x')<0x0){_0x1a686a[_0x28ba('0xdc')]+='x';}if(_0x1a686a[_0x28ba('0xdc')][_0x28ba('0x165')]('X')<0x0){_0x1a686a[_0x28ba('0xdc')]+='X';}this[_0x28ba('0xf')]['setVariable'](_0x28ba('0x166'),_0x2b5c2d?_0x2b5c2d[_0x28ba('0x167')]():'');var _0x5d4ab4=this[_0x28ba('0xf')][_0x28ba('0xaf')](_0x28ba('0x168'),[_0x2b5c2d,_0x1a686a['opts'],_0x1a686a[_0x28ba('0x62')],_0x3f9456,_0x1a686a['timeout'],_0x1a686a[_0x28ba('0x7')],_0x1a686a['macro'],_0x1a686a[_0x28ba('0x169')],'',_0x1a686a[_0x28ba('0x16a')]]);if(_0x5d4ab4[_0x28ba('0xa1')]===-0x1){return _0x5d4ab4;}return this['channel']['noop'](util['format'](_0x28ba('0xc1'),_0x28ba('0x168'),_0x2b5c2d));};AGIVertices[_0x28ba('0x12')]['record']=function(_0x1896ac){logger[_0x28ba('0x30')](util[_0x28ba('0x2b')](_0x28ba('0x16b'),_0x1896ac[_0x28ba('0xb5')]));var _0xdbeb02=_0x1896ac[_0x28ba('0x16c')]||_0x28ba('0x123');var _0x4a03fe=util[_0x28ba('0x2b')](_0x28ba('0x16d'),this[_0x28ba('0xf')]['uniqueid'],rs[_0x28ba('0x112')](0x5));var _0x1a229e=util[_0x28ba('0x2b')](_0x28ba('0x16e'),FILES_PATH,_0x4a03fe,_0xdbeb02);var _0xe72801=util[_0x28ba('0x2b')](_0x28ba('0x124'),FILES_PATH,_0x4a03fe);this[_0x28ba('0x3b')][_0x28ba('0xa4')](this,_0x1896ac,_0x4a03fe,_0x1a229e);this[_0x28ba('0xf')][_0x28ba('0x9b')](_0x28ba('0x16f'),_0x4a03fe);logger[_0x28ba('0x30')](_0x28ba('0x170'),_0xe72801,_0xdbeb02,_0x1896ac['escape_digits'],_0x1896ac['timeout']);return this[_0x28ba('0xf')]['recordFile'](_0xe72801,_0xdbeb02,_0x1896ac['escape_digits'],_0x1896ac['timeout'],undefined,!![]);};AGIVertices[_0x28ba('0x12')][_0x28ba('0x171')]=function(_0x4de464){logger[_0x28ba('0x30')](util[_0x28ba('0x2b')](_0x28ba('0x172'),_0x4de464[_0x28ba('0xb5')]));if(!this['isConfigured'](_0x4de464[_0x28ba('0x62')])){return this[_0x28ba('0xf')][_0x28ba('0xa8')](_0x28ba('0x173'));}var _0x56aa47=this[_0x28ba('0x61')][_0x28ba('0xa4')](this,_0x4de464);logger[_0x28ba('0x30')](util[_0x28ba('0x2b')](_0x28ba('0x174'),util[_0x28ba('0x175')](_0x56aa47,{'showHidden':![],'depth':null})));if(!this[_0x28ba('0x82')](_0x4de464[_0x28ba('0xd1')])){return this[_0x28ba('0xf')]['noop'](_0x28ba('0x176'));}var _0x114c8c=this['getVariable'][_0x28ba('0xa4')](this,_0x4de464['variable_id']);if(!_0x114c8c){return this[_0x28ba('0xf')][_0x28ba('0x33')](_0x4de464,_0x28ba('0xd2'));}this[_0x28ba('0xf')]['setVariable'](util[_0x28ba('0x2b')](_0x28ba('0x177'),_0x114c8c),_0x56aa47['statusCode']?_0x56aa47[_0x28ba('0x71')]:'200');this[_0x28ba('0xf')][_0x28ba('0x9b')](util[_0x28ba('0x2b')]('%s_STATUS_MESSAGE',_0x114c8c),_0x56aa47[_0x28ba('0x72')]?_0x56aa47[_0x28ba('0x72')]:'OK');if(_0x56aa47[_0x28ba('0x6f')]){try{this['saveRestApiResult'](_0x56aa47[_0x28ba('0x6f')],_0x114c8c);}catch(_0x4a3477){logger[_0x28ba('0x33')](util[_0x28ba('0x2b')]('Unable\x20to\x20set\x20result\x20in\x20variable\x20%s',_0x114c8c));}}return this[_0x28ba('0xf')]['noop'](util['format'](_0x28ba('0xd5'),_0x114c8c));};AGIVertices[_0x28ba('0x12')][_0x28ba('0x178')]=function(_0x472487){logger['info'](util['format']('Enter\x20in\x20SAYDIGITS\x20(%s)\x20block',_0x472487[_0x28ba('0xb5')]));return this[_0x28ba('0xf')]['sayDigits'](_0x472487[_0x28ba('0x179')][_0x28ba('0xcf')](/\s+/g,''),_0x472487[_0x28ba('0x17a')]);};AGIVertices[_0x28ba('0x12')][_0x28ba('0x17b')]=function(_0x587a4f){logger[_0x28ba('0x30')](util[_0x28ba('0x2b')](_0x28ba('0x17c'),_0x587a4f['label']));return this[_0x28ba('0xf')][_0x28ba('0x17d')](_0x587a4f['number']['replace'](/\s+/g,''),_0x587a4f[_0x28ba('0x17a')]);};AGIVertices[_0x28ba('0x12')]['sayphonetic']=function(_0x283de6){logger[_0x28ba('0x30')](util[_0x28ba('0x2b')](_0x28ba('0x17e'),_0x283de6[_0x28ba('0xb5')]));return this[_0x28ba('0xf')][_0x28ba('0x17f')](_0x283de6[_0x28ba('0x5a')],_0x283de6[_0x28ba('0x17a')]);};AGIVertices[_0x28ba('0x12')][_0x28ba('0x180')]=function(_0x28402f){logger['info'](util[_0x28ba('0x2b')]('Enter\x20in\x20SENDMAIL\x20(%s)\x20block',_0x28402f['label']));if(!this[_0x28ba('0x82')](_0x28402f[_0x28ba('0x181')])){return this[_0x28ba('0xf')]['noop'](_0x28ba('0x182'));}var _0x4793bf=this['getMailAccount']['sync'](this,_0x28402f[_0x28ba('0x181')]);if(!_0x4793bf||!_0x4793bf[_0x28ba('0x183')]){return this['channel'][_0x28ba('0x33')](_0x28402f,_0x28ba('0x184'));}var _0x5af741={'from':util[_0x28ba('0x2b')](_0x28ba('0x185'),_0x4793bf[_0x28ba('0x16')],_0x4793bf['email']||_0x4793bf[_0x28ba('0x183')][_0x28ba('0x186')]),'to':_0x28402f['to']||'','cc':_0x28402f['cc']||'','bcc':_0x28402f[_0x28ba('0x187')]||'','subject':_0x28402f[_0x28ba('0x188')],'html':_0x28402f[_0x28ba('0x5a')],'text':_0x28402f[_0x28ba('0x5a')]};if(this['isConfigured'](_0x28402f[_0x28ba('0x189')])){}logger[_0x28ba('0xd6')](_0x28ba('0x18a'),JSON[_0x28ba('0x6e')](_0x5af741));this['createSquareDetailsReport'][_0x28ba('0xa4')](this,_0x28402f,_0x28402f[_0x28ba('0x181')]);this[_0x28ba('0xf')]['noop'](util[_0x28ba('0x2b')](_0x28ba('0x18b'),_0x4793bf[_0x28ba('0x16')]));this[_0x28ba('0x25')][_0x28ba('0xa4')](this,_0x4793bf[_0x28ba('0x18c')],_0x5af741);return this[_0x28ba('0xf')]['noop'](_0x28ba('0x18d'));};AGIVertices[_0x28ba('0x12')][_0x28ba('0x18e')]=function(_0x552837){logger['info'](util[_0x28ba('0x2b')]('Enter\x20in\x20SENDFAX\x20(%s)\x20block',_0x552837[_0x28ba('0xb5')]));return this['channel'][_0x28ba('0xa8')]('SENDFAX\x20block\x20not\x20implemented');};AGIVertices['prototype'][_0x28ba('0x18f')]=function(_0x12937a){logger['info'](util[_0x28ba('0x2b')](_0x28ba('0x190'),_0x12937a[_0x28ba('0xb5')]));if(!this['isConfigured'](_0x12937a[_0x28ba('0x191')])){return this['channel'][_0x28ba('0xa8')](_0x28ba('0x192'));}var _0x2ea432=this[_0x28ba('0x35')]['sync'](this,_0x12937a[_0x28ba('0x191')]);if(!_0x2ea432){return this[_0x28ba('0xf')]['error'](_0x12937a,'no\x20sms\x20account\x20found');}var _0xb24476={'body':_0x12937a[_0x28ba('0x193')],'phone':_0x12937a['to']||'','SmsAccountId':_0x2ea432['id']};logger[_0x28ba('0xd6')](_0x28ba('0x194'),JSON['stringify'](_0xb24476));this['createSquareDetailsReport'][_0x28ba('0xa4')](this,_0x12937a,_0x12937a[_0x28ba('0x191')]);this[_0x28ba('0xf')]['noop'](util['format'](_0x28ba('0x195'),_0x2ea432[_0x28ba('0x16')]));this[_0x28ba('0x36')][_0x28ba('0xa4')](this,_0xb24476);return this[_0x28ba('0xf')][_0x28ba('0xa8')](_0x28ba('0x196'));};AGIVertices['prototype']['set']=function(_0x187bfb){logger[_0x28ba('0x30')](util['format'](_0x28ba('0x197'),_0x187bfb['label']));if(!this['isConfigured'](_0x187bfb[_0x28ba('0xd1')])){return this[_0x28ba('0xf')][_0x28ba('0x33')](_0x187bfb,_0x28ba('0x198'));}var _0x4ff694=this[_0x28ba('0x13')][_0x28ba('0xa4')](this,_0x187bfb[_0x28ba('0xd1')]);if(!_0x4ff694){return this[_0x28ba('0xf')][_0x28ba('0x33')](_0x187bfb,_0x28ba('0xd2'));}return this[_0x28ba('0xf')]['setVariable'](_0x4ff694,_0x187bfb['variable_value']);};AGIVertices[_0x28ba('0x12')]['start']=function(_0x1f9778){logger[_0x28ba('0x30')](util['format'](_0x28ba('0x199'),_0x1f9778[_0x28ba('0xb5')]));this[_0x28ba('0xf')][_0x28ba('0xa8')]('START\x20CALLY\x20SQUARE');if(_0x1f9778[_0x28ba('0xb8')]===_0x28ba('0x19a')){this[_0x28ba('0xf')][_0x28ba('0xa8')](_0x28ba('0x19b'));return this[_0x28ba('0xf')][_0x28ba('0xb8')]();}return this[_0x28ba('0xf')]['noop']('Skipped\x20Answer');};AGIVertices[_0x28ba('0x12')]['subproject']=function(_0xe46fc6){logger[_0x28ba('0x30')](util[_0x28ba('0x2b')]('Enter\x20in\x20SUBPROJECT\x20(%s)\x20block',_0xe46fc6[_0x28ba('0xb5')]));if(!this[_0x28ba('0x82')](_0xe46fc6['project_id'])){return this['channel'][_0x28ba('0x33')](_0xe46fc6,_0x28ba('0x19c'));}var _0x1ae24c=this[_0x28ba('0x19')][_0x28ba('0xa4')](this,_0xe46fc6['project_id']);if(!this[_0x28ba('0x82')](_0x1ae24c)){return this[_0x28ba('0xf')][_0x28ba('0x33')](_0xe46fc6,util['format'](_0x28ba('0x19d'),_0xe46fc6[_0x28ba('0x19e')]));}if(_0x1ae24c===this[_0x28ba('0xf')]['arg_1']){return this['channel'][_0x28ba('0x33')](_0xe46fc6,_0x28ba('0x19f'));}this['createSquareDetailsReport'][_0x28ba('0xa4')](this,_0xe46fc6,_0x1ae24c);var _0x5f36c4=this[_0x28ba('0xf')]['exec'](_0x28ba('0x1a0'),util[_0x28ba('0x2b')](_0x28ba('0x1a1'),config['agi'][_0x28ba('0x1a2')]||_0x28ba('0x1a3'),_0x1ae24c,this[_0x28ba('0xf')][_0x28ba('0x39')]));if(_0x5f36c4[_0x28ba('0xa1')]===-0x1){return _0x5f36c4;}return this[_0x28ba('0xf')]['noop'](util[_0x28ba('0x2b')](_0x28ba('0xc1'),'AGI',_0x1ae24c));};AGIVertices['prototype'][_0x28ba('0x1a4')]=function(_0x4622ec){logger['info'](util['format'](_0x28ba('0x1a5'),_0x4622ec['label']));var _0x1c0ac8=this['shellCommand'][_0x28ba('0xa4')](this,_0x4622ec['command']);this[_0x28ba('0x37')]['sync'](this,_0x4622ec,_0x4622ec[_0x28ba('0xb6')]);if(this['isConfigured'](_0x4622ec[_0x28ba('0xd1')])){var _0x40ce4a=this[_0x28ba('0x13')][_0x28ba('0xa4')](this,_0x4622ec[_0x28ba('0xd1')]);if(_0x40ce4a){this[_0x28ba('0xf')][_0x28ba('0x9b')](_0x40ce4a,_0x1c0ac8);return this[_0x28ba('0xf')][_0x28ba('0xa8')](util['format'](_0x28ba('0x1a6'),_0x4622ec[_0x28ba('0xb6')],_0x40ce4a));}}return this[_0x28ba('0xf')]['noop'](util[_0x28ba('0x2b')](_0x28ba('0x1a7'),_0x4622ec[_0x28ba('0xb6')]));};AGIVertices[_0x28ba('0x12')][_0x28ba('0x1a8')]=function(_0x2f4121){logger[_0x28ba('0x30')](util[_0x28ba('0x2b')](_0x28ba('0x1a9'),_0x2f4121[_0x28ba('0xb5')]));_0x2f4121[_0x28ba('0x5a')]=_0x2f4121[_0x28ba('0x5a')][_0x28ba('0xcf')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0x28ba('0x82')](_0x2f4121['apiKey'])){return this[_0x28ba('0xf')][_0x28ba('0xa8')](_0x28ba('0x1aa'));}if(!this[_0x28ba('0x82')](_0x2f4121['text'])){return this[_0x28ba('0xf')][_0x28ba('0xa8')](_0x28ba('0xa9'));}this['channel']['noop'](util[_0x28ba('0x2b')]('Trying\x20Google\x20Cloud\x20TTS\x20%s',_0x2f4121['text']));var _0x2664e3=this[_0x28ba('0x58')][_0x28ba('0xa4')](this,_0x2f4121);if(_0x2664e3){this[_0x28ba('0xf')][_0x28ba('0xa8')](util[_0x28ba('0x2b')](_0x28ba('0x1ab'),_0x2664e3));var _0x37b963=this[_0x28ba('0xf')][_0x28ba('0x11a')](_0x2664e3);try{fs[_0x28ba('0xf8')](_0x2664e3+_0x28ba('0x11b'));}catch(_0x169616){logger[_0x28ba('0x33')](_0x169616);}return _0x37b963;}return this[_0x28ba('0xf')][_0x28ba('0x33')](_0x2f4121,_0x28ba('0x1ac'));};AGIVertices[_0x28ba('0x12')][_0x28ba('0x1ad')]=function(_0x16ce3b){logger[_0x28ba('0x30')](util[_0x28ba('0x2b')](_0x28ba('0x1ae'),_0x16ce3b[_0x28ba('0xb5')]));_0x16ce3b[_0x28ba('0x5a')]=_0x16ce3b['text'][_0x28ba('0xcf')](/(\r\n|\n|\r)/gm,'\x20');if(!this['isConfigured'](_0x16ce3b[_0x28ba('0x5a')])){return this[_0x28ba('0xf')][_0x28ba('0xa8')](_0x28ba('0xa9'));}this[_0x28ba('0xf')][_0x28ba('0xa8')](util[_0x28ba('0x2b')](_0x28ba('0x1af'),_0x16ce3b[_0x28ba('0x5a')]));var _0x4fec0c=this['googleTTS'][_0x28ba('0xa4')](this,_0x16ce3b);if(_0x4fec0c){this[_0x28ba('0xf')]['noop'](util['format']('Google\x20TTS\x20%s\x20file\x20created',_0x4fec0c));var _0x1f9fac=this[_0x28ba('0xf')]['streamFile'](_0x4fec0c);try{fs[_0x28ba('0xf8')](_0x4fec0c+_0x28ba('0x11b'));}catch(_0x1ab93e){logger[_0x28ba('0x33')](_0x1ab93e);}return _0x1f9fac;}return this[_0x28ba('0xf')][_0x28ba('0x33')](_0x16ce3b,'Google\x20TTS\x20is\x20unreachable');};AGIVertices[_0x28ba('0x12')][_0x28ba('0x1b0')]=function(_0x3ed0c1){logger['info'](util['format']('Enter\x20in\x20UNPAUSE\x20(%s)\x20block',_0x3ed0c1[_0x28ba('0xb5')]));if(!this['isConfigured'](_0x3ed0c1['findBy'])){return this[_0x28ba('0xf')][_0x28ba('0x33')](_0x3ed0c1,_0x28ba('0x149'));}logger[_0x28ba('0x30')](util[_0x28ba('0x2b')](_0x28ba('0x14a'),this[_0x28ba('0xf')][_0x28ba('0x3a')],_0x3ed0c1[_0x28ba('0x14b')]));var _0x2bce44=this['agentUnpause'][_0x28ba('0xa4')](this,_0x3ed0c1[_0x28ba('0x14b')]);if(_0x2bce44){logger[_0x28ba('0x30')](util[_0x28ba('0x2b')](_0x28ba('0x14c'),this[_0x28ba('0xf')][_0x28ba('0x3a')],_0x3ed0c1[_0x28ba('0x14b')]));this[_0x28ba('0xf')][_0x28ba('0xa8')](util[_0x28ba('0x2b')](_0x28ba('0x14c'),this[_0x28ba('0xf')][_0x28ba('0x3a')],_0x3ed0c1['findBy']));return{'code':0xc8,'result':_0x28ba('0x14d')};}else{logger[_0x28ba('0x30')](util[_0x28ba('0x2b')](_0x28ba('0x14e'),this['channel'][_0x28ba('0x3a')],_0x3ed0c1[_0x28ba('0x14b')]));this['channel'][_0x28ba('0xa8')](util[_0x28ba('0x2b')](_0x28ba('0x14e'),this[_0x28ba('0xf')]['callerid'],_0x3ed0c1['findBy']));return{'code':0xc8,'result':_0x28ba('0x14f')};}};AGIVertices[_0x28ba('0x12')][_0x28ba('0x1b1')]=function(_0x10767f){logger[_0x28ba('0x30')](util[_0x28ba('0x2b')](_0x28ba('0x1b2'),_0x10767f[_0x28ba('0xb5')]));var _0x56ada9=this[_0x28ba('0xf')][_0x28ba('0xaf')](_0x28ba('0x1b3'),[_0x10767f[_0x28ba('0x1b4')],_0x10767f[_0x28ba('0x74')]]);if(_0x56ada9[_0x28ba('0xa1')]===-0x1){return _0x56ada9;}return this[_0x28ba('0xf')][_0x28ba('0xa8')](util[_0x28ba('0x2b')](_0x28ba('0xc1'),'VOICEMAIL',_0x10767f['mailbox']));};AGIVertices[_0x28ba('0x12')]['vswitch']=function(_0x1bd987){logger[_0x28ba('0x30')](util['format'](_0x28ba('0x1b5'),_0x1bd987[_0x28ba('0xb5')]));if(!this[_0x28ba('0x82')](_0x1bd987[_0x28ba('0xd1')])){return this[_0x28ba('0xf')][_0x28ba('0x33')](_0x1bd987,'no\x20variable\x20selected');}var _0x24bbd1=this[_0x28ba('0x13')][_0x28ba('0xa4')](this,_0x1bd987[_0x28ba('0xd1')]);if(!_0x24bbd1){return this[_0x28ba('0xf')]['error'](_0x1bd987,_0x28ba('0xd2'));}var _0x2412db=this['channel'][_0x28ba('0x13')](_0x24bbd1);return{'code':0xc8,'result':_0x2412db[_0x28ba('0x9f')]?_0x2412db[_0x28ba('0x9f')]:'-'};};String[_0x28ba('0x12')]['replaceAll']=function(_0x44b392,_0x436c00){return this[_0x28ba('0x9d')](_0x44b392)[_0x28ba('0x1b6')](_0x436c00);};module['exports']=AGIVertices;
\ No newline at end of file
index a4768e5..9bd6130 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc006=['saveUnpause','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','stringify','[ACW][STOP]\x20%s','interface','syncAgentConnectPreview','acw','[ACW][syncAgentConnectPreview]\x20%s','isUndefined','attended','[%s][HANGUP:UNIQUEID]','linkedid','[ACW][syncHangup]\x20%s','syncAttendedTransfer','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','[%s][BLINDTRANSFER:UNIQUEID]','transfereruniqueid','transfererlinkedid','[%s][BLINDTRANSFER:LINKEDID]','[ACW][syncBlindTransfer]\x20%s','syncAgentRingNoAnswer','autopause','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','[ACW][syncAgentRingNoAnswer]\x20%s','exports','lodash','moment','../ami','../rpc/user','../rpc/voiceAgentReport','voiceQueues','agents','timers','channels','agentconnect','syncAgentConnect','bind','syncHangupRequest','hangup','syncHangup','agentringnoanswer','blindtransfer','syncBlindTransfer','custom:agentConnectPreview','milliseconds','diff','seconds','startAcw','ACW','mandatoryDisposition','mandatoryDispositionPause','name','QueuePause','then','getAgent','voicePause','info','[%s][START][AGENT:%s][QUEUE:%s]','destlinkedid','savePause','acwTimeout','stopAcw','lastPauseAt','format','YYYY-MM-DD\x20HH:mm:ss','updateAcw','timer','update','uniqueid','[%s][UPDATE][ACWTIME:%s]','catch','error','[%s][UPDATE][ERRORS:%s]','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','finally','[ACW][START]\x20%s','message','prototype','queue','[%s][TIMER][STOP][AGENT:%s]'];(function(_0x9ca877,_0x621e5d){var _0xc94b26=function(_0xdcb4c5){while(--_0xdcb4c5){_0x9ca877['push'](_0x9ca877['shift']());}};_0xc94b26(++_0x621e5d);}(_0xc006,0xcd));var _0x6c00=function(_0x2c5009,_0x63505f){_0x2c5009=_0x2c5009-0x0;var _0x40b7f9=_0xc006[_0x2c5009];return _0x40b7f9;};'use strict';var _=require(_0x6c00('0x0'));var moment=require(_0x6c00('0x1'));var ami=require(_0x6c00('0x2'));var logger=require('../../../config/logger')('acw');var RpcUser=require(_0x6c00('0x3'));var RpcVoiceAgentReport=require(_0x6c00('0x4'));function Acw(_0x7db77f){this['voiceQueues']=_0x7db77f[_0x6c00('0x5')];this[_0x6c00('0x6')]=_0x7db77f['agents'];this[_0x6c00('0x7')]=_0x7db77f[_0x6c00('0x7')];this[_0x6c00('0x8')]={};ami['on'](_0x6c00('0x9'),this[_0x6c00('0xa')][_0x6c00('0xb')](this));ami['on']('hanguprequest',this[_0x6c00('0xc')][_0x6c00('0xb')](this));ami['on'](_0x6c00('0xd'),this[_0x6c00('0xe')][_0x6c00('0xb')](this));ami['on'](_0x6c00('0xf'),this['syncAgentRingNoAnswer'][_0x6c00('0xb')](this));ami['on']('attendedtransfer',this['syncAttendedTransfer'][_0x6c00('0xb')](this));ami['on'](_0x6c00('0x10'),this[_0x6c00('0x11')][_0x6c00('0xb')](this));ami['on'](_0x6c00('0x12'),this['syncAgentConnectPreview'][_0x6c00('0xb')](this));}function getDiff(_0x3cfb65){var _0x41c3eb=moment()['milliseconds'](0x0);var _0x3b247e=moment(_0x3cfb65)[_0x6c00('0x13')](0x0);return _0x41c3eb[_0x6c00('0x14')](_0x3b247e,_0x6c00('0x15'));}Acw['prototype'][_0x6c00('0x16')]=function(_0x38df25){try{var _0x4b12be=this;var _0x13fe7a=this[_0x6c00('0x8')][_0x38df25]['interface'];var _0x450137=this[_0x6c00('0x8')][_0x38df25]['queue'];var _0x24dbcf=this['voiceQueues'][_0x450137];var _0x3cb46e=![];var _0x3797b5=_0x6c00('0x17');if(_0x24dbcf[_0x6c00('0x18')]){if(_0x24dbcf[_0x6c00('0x19')][_0x6c00('0x1a')]){_0x3cb46e=!![];_0x3797b5=_0x24dbcf[_0x6c00('0x19')][_0x6c00('0x1a')];}}return ami['Action']({'action':_0x6c00('0x1b'),'interface':_0x13fe7a,'paused':!![],'reason':_0x3797b5})[_0x6c00('0x1c')](function(){if(_0x4b12be['agents'][_0x13fe7a]){return RpcUser[_0x6c00('0x1d')](_0x4b12be[_0x6c00('0x6')][_0x13fe7a]['id'])[_0x6c00('0x1c')](function(_0x3fda8f){if(_0x3fda8f&&!_0x3fda8f[_0x6c00('0x1e')]){logger[_0x6c00('0x1f')](_0x6c00('0x20'),_0x38df25,_0x13fe7a,_0x450137);var _0xc87f7e=_0x4b12be[_0x6c00('0x8')][_0x38df25]['attended']&&_0x4b12be['channels'][_0x38df25][_0x6c00('0x21')]?_0x4b12be[_0x6c00('0x8')][_0x38df25][_0x6c00('0x21')]:_0x38df25;return RpcUser[_0x6c00('0x22')](_0x4b12be[_0x6c00('0x6')][_0x13fe7a],_0x3797b5,_0xc87f7e)[_0x6c00('0x1c')](function(){if(!_0x3cb46e){_0x4b12be[_0x6c00('0x7')][_0x13fe7a]={};logger[_0x6c00('0x1f')]('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0x38df25,_0x4b12be['voiceQueues'][_0x450137][_0x6c00('0x23')],_0x13fe7a,_0x450137);_0x4b12be[_0x6c00('0x7')][_0x13fe7a]['timer']=setTimeout(_0x4b12be[_0x6c00('0x24')][_0x6c00('0xb')](_0x4b12be,_0x13fe7a),_0x4b12be[_0x6c00('0x5')][_0x450137][_0x6c00('0x23')]*0x3e8);_0x4b12be[_0x6c00('0x7')][_0x13fe7a][_0x6c00('0x25')]=moment()[_0x6c00('0x26')](_0x6c00('0x27'));_0x4b12be[_0x6c00('0x7')][_0x13fe7a]['uniqueid']=_0x38df25;_0x4b12be[_0x6c00('0x7')][_0x13fe7a]['queue']=_0x450137;_0x4b12be[_0x6c00('0x7')][_0x13fe7a][_0x6c00('0x28')]=function(){var _0x54c47c=getDiff(_0x4b12be[_0x6c00('0x7')][_0x13fe7a]['lastPauseAt']);clearTimeout(_0x4b12be[_0x6c00('0x7')][_0x13fe7a][_0x6c00('0x29')]);_0x4b12be['timers'][_0x13fe7a][_0x6c00('0x29')]=![];RpcVoiceAgentReport[_0x6c00('0x2a')]({'acwtime':_0x54c47c},_0x4b12be[_0x6c00('0x7')][_0x13fe7a][_0x6c00('0x2b')],_0x13fe7a)[_0x6c00('0x1c')](function(_0x29204f){logger[_0x6c00('0x1f')](_0x6c00('0x2c'),_0x38df25,_0x54c47c,_0x29204f);})[_0x6c00('0x2d')](function(_0x59d1a7){logger[_0x6c00('0x2e')](_0x6c00('0x2f'),_0x38df25,_0x59d1a7);});delete _0x4b12be[_0x6c00('0x7')][_0x13fe7a];};}});}else{logger['info'](_0x6c00('0x30'),_0x38df25,_0x13fe7a,_0x450137);}});}})[_0x6c00('0x2d')](function(){logger[_0x6c00('0x2e')](_0x6c00('0x31'),_0x38df25,_0x4b12be[_0x6c00('0x5')][_0x450137][_0x6c00('0x23')],_0x13fe7a,_0x450137);})[_0x6c00('0x32')](function(){delete _0x4b12be['channels'][_0x38df25];});}catch(_0x9d9714){logger['error'](_0x6c00('0x33'),_0x9d9714[_0x6c00('0x34')]);}};Acw[_0x6c00('0x35')][_0x6c00('0x24')]=function(_0x1aa950){try{var _0x115eab=this;if(_0x115eab[_0x6c00('0x7')][_0x1aa950]){_0x115eab['timers'][_0x1aa950]['timer']=![];var _0x1726b1=_0x115eab[_0x6c00('0x7')][_0x1aa950][_0x6c00('0x2b')];var _0x3eed65=_0x115eab[_0x6c00('0x7')][_0x1aa950][_0x6c00('0x36')];var _0x3061f1=_0x115eab[_0x6c00('0x5')][_0x3eed65][_0x6c00('0x23')];logger[_0x6c00('0x1f')](_0x6c00('0x37'),_0x1726b1,_0x1aa950);RpcUser[_0x6c00('0x38')](this['agents'][_0x1aa950]);RpcVoiceAgentReport[_0x6c00('0x2a')]({'acwtime':_0x3061f1,'agentacw':!![]},_0x1726b1,_0x1aa950)[_0x6c00('0x1c')](function(_0x4fd0d9){logger[_0x6c00('0x1f')]('[%s][UPDATE][ACWTIME:%s]',_0x1726b1,_0x3061f1,_0x4fd0d9);})[_0x6c00('0x2d')](function(_0x165e0d){logger[_0x6c00('0x2e')](_0x6c00('0x2f'),_0x1726b1,_0x165e0d);});}else{logger[_0x6c00('0x2e')](_0x6c00('0x39'),_0x1aa950);if(_0x115eab[_0x6c00('0x7')]){logger[_0x6c00('0x1f')](_0x6c00('0x3a'),JSON[_0x6c00('0x3b')](_0x115eab['timers']));}}}catch(_0x380b11){logger['error'](_0x6c00('0x3c'),_0x380b11[_0x6c00('0x34')]);}};Acw[_0x6c00('0x35')][_0x6c00('0xa')]=function(_0x205b5f){try{if(this['voiceQueues'][_0x205b5f[_0x6c00('0x36')]]&&(this[_0x6c00('0x5')][_0x205b5f[_0x6c00('0x36')]]['acw']||this[_0x6c00('0x5')][_0x205b5f['queue']]['mandatoryDisposition'])){if(this[_0x6c00('0x6')][_0x205b5f[_0x6c00('0x3d')]]){this[_0x6c00('0x8')][_0x205b5f[_0x6c00('0x2b')]]={'queue':_0x205b5f['queue'],'interface':_0x205b5f[_0x6c00('0x3d')],'destlinkedid':_0x205b5f[_0x6c00('0x21')]};}}}catch(_0x40cf8e){logger[_0x6c00('0x2e')]('[ACW][syncAgentConnect]\x20%s',_0x40cf8e['message']);}};Acw['prototype'][_0x6c00('0x3e')]=function(_0x43fb79){try{if(this[_0x6c00('0x5')][_0x43fb79[_0x6c00('0x36')]]&&(this[_0x6c00('0x5')][_0x43fb79[_0x6c00('0x36')]][_0x6c00('0x3f')]||this['voiceQueues'][_0x43fb79[_0x6c00('0x36')]][_0x6c00('0x18')])){if(this['agents'][_0x43fb79[_0x6c00('0x3d')]]){this['channels'][_0x43fb79[_0x6c00('0x2b')]]={'queue':_0x43fb79['queue'],'interface':_0x43fb79[_0x6c00('0x3d')]};}}}catch(_0x1c20eb){logger['error'](_0x6c00('0x40'),_0x1c20eb[_0x6c00('0x34')]);}};Acw[_0x6c00('0x35')][_0x6c00('0xc')]=function(_0x730eaf){try{if(this[_0x6c00('0x8')][_0x730eaf[_0x6c00('0x2b')]]&&_[_0x6c00('0x41')](this['channels'][_0x730eaf[_0x6c00('0x2b')]][_0x6c00('0x42')])){logger[_0x6c00('0x1f')](_0x6c00('0x43'),_0x730eaf[_0x6c00('0x2b')]);this[_0x6c00('0x16')](_0x730eaf[_0x6c00('0x2b')]);}else if(this[_0x6c00('0x8')][_0x730eaf[_0x6c00('0x44')]]&&_[_0x6c00('0x41')](this[_0x6c00('0x8')][_0x730eaf[_0x6c00('0x44')]]['attended'])){logger[_0x6c00('0x1f')]('[%s][HANGUP:LINKEDID]',_0x730eaf[_0x6c00('0x44')]);this[_0x6c00('0x16')](_0x730eaf['linkedid']);}}catch(_0x198508){logger[_0x6c00('0x2e')]('[ACW][syncHangupRequest]\x20%s',_0x198508[_0x6c00('0x34')]);}};Acw[_0x6c00('0x35')][_0x6c00('0xe')]=function(_0x2b12a9){try{if(this[_0x6c00('0x8')][_0x2b12a9[_0x6c00('0x2b')]]&&this[_0x6c00('0x8')][_0x2b12a9['uniqueid']][_0x6c00('0x42')]){logger[_0x6c00('0x1f')]('[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]',_0x2b12a9['uniqueid']);this[_0x6c00('0x16')](_0x2b12a9[_0x6c00('0x2b')]);}else if(this[_0x6c00('0x8')][_0x2b12a9['linkedid']]&&this[_0x6c00('0x8')][_0x2b12a9['linkedid']][_0x6c00('0x42')]){logger['info']('[%s][HANGUPATTENDEDTRANSFER:LINKEDID]',_0x2b12a9[_0x6c00('0x44')]);this[_0x6c00('0x16')](_0x2b12a9[_0x6c00('0x44')]);}}catch(_0x50c7e6){logger[_0x6c00('0x2e')](_0x6c00('0x45'),_0x50c7e6[_0x6c00('0x34')]);}};Acw['prototype'][_0x6c00('0x46')]=function(_0x170112){try{if(!_[_0x6c00('0x47')](this[_0x6c00('0x8')][_0x170112['transfereeuniqueid']])){this[_0x6c00('0x16')](_0x170112[_0x6c00('0x48')]);if(this[_0x6c00('0x8')][_0x170112['secondtransfereruniqueid']]){this[_0x6c00('0x8')][_0x170112[_0x6c00('0x49')]][_0x6c00('0x42')]=!![];this[_0x6c00('0x8')][_0x170112[_0x6c00('0x4a')]]=this[_0x6c00('0x8')][_0x170112[_0x6c00('0x49')]];delete this[_0x6c00('0x8')][_0x170112[_0x6c00('0x49')]];}}else if(!_['isNil'](this['channels'][_0x170112[_0x6c00('0x4a')]])){this['startAcw'](_0x170112['transfertargetuniqueid']);if(this[_0x6c00('0x8')][_0x170112[_0x6c00('0x4b')]]){this[_0x6c00('0x8')][_0x170112[_0x6c00('0x4b')]][_0x6c00('0x42')]=!![];this['channels'][_0x170112[_0x6c00('0x48')]]=this['channels'][_0x170112[_0x6c00('0x4b')]];delete this[_0x6c00('0x8')][_0x170112[_0x6c00('0x4b')]];}}}catch(_0x1891d8){logger[_0x6c00('0x2e')](_0x6c00('0x4c'),_0x1891d8[_0x6c00('0x34')]);}};Acw[_0x6c00('0x35')]['syncBlindTransfer']=function(_0x385230){try{if(this[_0x6c00('0x8')][_0x385230['transfereruniqueid']]){logger['info'](_0x6c00('0x4d'),JSON[_0x6c00('0x3b')](_0x385230[_0x6c00('0x4e')]));this[_0x6c00('0x16')](_0x385230[_0x6c00('0x4e')]);}else if(this[_0x6c00('0x8')][_0x385230[_0x6c00('0x4f')]]){logger[_0x6c00('0x1f')](_0x6c00('0x50'),JSON[_0x6c00('0x3b')](_0x385230[_0x6c00('0x4f')]));this[_0x6c00('0x16')](_0x385230['transfererlinkedid']);}}catch(_0x29130b){logger[_0x6c00('0x2e')](_0x6c00('0x51'),_0x29130b[_0x6c00('0x34')]);}};Acw[_0x6c00('0x35')][_0x6c00('0x52')]=function(_0x3f2ce9){try{if(this['voiceQueues'][_0x3f2ce9[_0x6c00('0x36')]]&&this[_0x6c00('0x5')][_0x3f2ce9['queue']][_0x6c00('0x53')]==='all'){if(this[_0x6c00('0x6')][_0x3f2ce9[_0x6c00('0x3d')]]){logger[_0x6c00('0x1f')](_0x6c00('0x54'),_0x3f2ce9[_0x6c00('0x2b')],_0x3f2ce9[_0x6c00('0x3d')],_0x3f2ce9['queue']);return RpcUser[_0x6c00('0x22')](this[_0x6c00('0x6')][_0x3f2ce9[_0x6c00('0x3d')]],'Auto-Pause',_0x3f2ce9[_0x6c00('0x2b')]);}}}catch(_0x5eb1c6){logger['error'](_0x6c00('0x55'),_0x5eb1c6[_0x6c00('0x34')]);}};module[_0x6c00('0x56')]=Acw;
\ No newline at end of file
+var _0x5ff9=['update','uniqueid','[%s][UPDATE][ACWTIME:%s]','catch','error','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','acwTimeout','[ACW][START]\x20%s','message','stopAcw','[%s][TIMER][STOP][AGENT:%s]','saveUnpause','[%s][UPDATE][ERRORS:%s]','stringify','[ACW][STOP]\x20%s','[ACW][syncAgentConnect]\x20%s','[ACW][syncAgentConnectPreview]\x20%s','isUndefined','[%s][HANGUP:UNIQUEID]','linkedid','[%s][HANGUP:LINKEDID]','[ACW][syncHangupRequest]\x20%s','syncHangup','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','transfererlinkedid','[ACW][syncBlindTransfer]\x20%s','autopause','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','lodash','moment','../ami','../../../config/logger','acw','../rpc/user','../rpc/voiceAgentReport','voiceQueues','agents','timers','channels','syncAgentConnect','bind','hanguprequest','syncHangupRequest','hangup','agentringnoanswer','syncAgentRingNoAnswer','blindtransfer','syncBlindTransfer','syncAgentConnectPreview','milliseconds','diff','seconds','prototype','startAcw','interface','queue','ACW','mandatoryDisposition','mandatoryDispositionPause','name','QueuePause','then','getAgent','voicePause','info','attended','destlinkedid','savePause','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','timer','lastPauseAt','format','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x21088f,_0x36d0b7){var _0x1939c9=function(_0x1ec52f){while(--_0x1ec52f){_0x21088f['push'](_0x21088f['shift']());}};_0x1939c9(++_0x36d0b7);}(_0x5ff9,0x1cb));var _0x95ff=function(_0x3cf350,_0x382aa7){_0x3cf350=_0x3cf350-0x0;var _0x33ea35=_0x5ff9[_0x3cf350];return _0x33ea35;};'use strict';var _=require(_0x95ff('0x0'));var moment=require(_0x95ff('0x1'));var ami=require(_0x95ff('0x2'));var logger=require(_0x95ff('0x3'))(_0x95ff('0x4'));var RpcUser=require(_0x95ff('0x5'));var RpcVoiceAgentReport=require(_0x95ff('0x6'));function Acw(_0x5cce83){this['voiceQueues']=_0x5cce83[_0x95ff('0x7')];this[_0x95ff('0x8')]=_0x5cce83[_0x95ff('0x8')];this[_0x95ff('0x9')]=_0x5cce83[_0x95ff('0x9')];this[_0x95ff('0xa')]={};ami['on']('agentconnect',this[_0x95ff('0xb')][_0x95ff('0xc')](this));ami['on'](_0x95ff('0xd'),this[_0x95ff('0xe')]['bind'](this));ami['on'](_0x95ff('0xf'),this['syncHangup'][_0x95ff('0xc')](this));ami['on'](_0x95ff('0x10'),this[_0x95ff('0x11')][_0x95ff('0xc')](this));ami['on']('attendedtransfer',this['syncAttendedTransfer']['bind'](this));ami['on'](_0x95ff('0x12'),this[_0x95ff('0x13')]['bind'](this));ami['on']('custom:agentConnectPreview',this[_0x95ff('0x14')][_0x95ff('0xc')](this));}function getDiff(_0xb987cb){var _0xe77b88=moment()[_0x95ff('0x15')](0x0);var _0x15fdaf=moment(_0xb987cb)['milliseconds'](0x0);return _0xe77b88[_0x95ff('0x16')](_0x15fdaf,_0x95ff('0x17'));}Acw[_0x95ff('0x18')][_0x95ff('0x19')]=function(_0xf55c8f){try{var _0x43c717=this;var _0x2c69d3=this['channels'][_0xf55c8f][_0x95ff('0x1a')];var _0x219593=this['channels'][_0xf55c8f][_0x95ff('0x1b')];var _0x1df0e9=this[_0x95ff('0x7')][_0x219593];var _0x4d5a95=![];var _0xa0d640=_0x95ff('0x1c');if(_0x1df0e9[_0x95ff('0x1d')]){if(_0x1df0e9[_0x95ff('0x1e')]['name']){_0x4d5a95=!![];_0xa0d640=_0x1df0e9[_0x95ff('0x1e')][_0x95ff('0x1f')];}}return ami['Action']({'action':_0x95ff('0x20'),'interface':_0x2c69d3,'paused':!![],'reason':_0xa0d640})[_0x95ff('0x21')](function(){if(_0x43c717['agents'][_0x2c69d3]){return RpcUser[_0x95ff('0x22')](_0x43c717[_0x95ff('0x8')][_0x2c69d3]['id'])[_0x95ff('0x21')](function(_0xa4874c){if(_0xa4874c&&!_0xa4874c[_0x95ff('0x23')]){logger[_0x95ff('0x24')]('[%s][START][AGENT:%s][QUEUE:%s]',_0xf55c8f,_0x2c69d3,_0x219593);var _0x28147c=_0x43c717[_0x95ff('0xa')][_0xf55c8f][_0x95ff('0x25')]&&_0x43c717['channels'][_0xf55c8f]['destlinkedid']?_0x43c717[_0x95ff('0xa')][_0xf55c8f][_0x95ff('0x26')]:_0xf55c8f;return RpcUser[_0x95ff('0x27')](_0x43c717['agents'][_0x2c69d3],_0xa0d640,_0x28147c)[_0x95ff('0x21')](function(){if(!_0x4d5a95){_0x43c717['timers'][_0x2c69d3]={};logger['info'](_0x95ff('0x28'),_0xf55c8f,_0x43c717[_0x95ff('0x7')][_0x219593]['acwTimeout'],_0x2c69d3,_0x219593);_0x43c717[_0x95ff('0x9')][_0x2c69d3][_0x95ff('0x29')]=setTimeout(_0x43c717['stopAcw'][_0x95ff('0xc')](_0x43c717,_0x2c69d3),_0x43c717[_0x95ff('0x7')][_0x219593]['acwTimeout']*0x3e8);_0x43c717['timers'][_0x2c69d3][_0x95ff('0x2a')]=moment()[_0x95ff('0x2b')](_0x95ff('0x2c'));_0x43c717['timers'][_0x2c69d3]['uniqueid']=_0xf55c8f;_0x43c717['timers'][_0x2c69d3]['queue']=_0x219593;_0x43c717[_0x95ff('0x9')][_0x2c69d3]['updateAcw']=function(){var _0x81ab4a=getDiff(_0x43c717[_0x95ff('0x9')][_0x2c69d3][_0x95ff('0x2a')]);clearTimeout(_0x43c717['timers'][_0x2c69d3][_0x95ff('0x29')]);_0x43c717[_0x95ff('0x9')][_0x2c69d3][_0x95ff('0x29')]=![];RpcVoiceAgentReport[_0x95ff('0x2d')]({'acwtime':_0x81ab4a},_0x43c717[_0x95ff('0x9')][_0x2c69d3][_0x95ff('0x2e')],_0x2c69d3)[_0x95ff('0x21')](function(_0x190384){logger[_0x95ff('0x24')](_0x95ff('0x2f'),_0xf55c8f,_0x81ab4a,_0x190384);})[_0x95ff('0x30')](function(_0x29b948){logger[_0x95ff('0x31')]('[%s][UPDATE][ERRORS:%s]',_0xf55c8f,_0x29b948);});delete _0x43c717[_0x95ff('0x9')][_0x2c69d3];};}});}else{logger['info'](_0x95ff('0x32'),_0xf55c8f,_0x2c69d3,_0x219593);}});}})[_0x95ff('0x30')](function(){logger['error'](_0x95ff('0x28'),_0xf55c8f,_0x43c717[_0x95ff('0x7')][_0x219593][_0x95ff('0x33')],_0x2c69d3,_0x219593);})['finally'](function(){delete _0x43c717['channels'][_0xf55c8f];});}catch(_0x575a16){logger[_0x95ff('0x31')](_0x95ff('0x34'),_0x575a16[_0x95ff('0x35')]);}};Acw[_0x95ff('0x18')][_0x95ff('0x36')]=function(_0x5b3757){try{var _0xb763dc=this;if(_0xb763dc[_0x95ff('0x9')][_0x5b3757]){_0xb763dc[_0x95ff('0x9')][_0x5b3757]['timer']=![];var _0x463ef1=_0xb763dc[_0x95ff('0x9')][_0x5b3757][_0x95ff('0x2e')];var _0x3e7807=_0xb763dc['timers'][_0x5b3757][_0x95ff('0x1b')];var _0x3e518d=_0xb763dc['voiceQueues'][_0x3e7807]['acwTimeout'];logger['info'](_0x95ff('0x37'),_0x463ef1,_0x5b3757);RpcUser[_0x95ff('0x38')](this['agents'][_0x5b3757]);RpcVoiceAgentReport[_0x95ff('0x2d')]({'acwtime':_0x3e518d,'agentacw':!![]},_0x463ef1,_0x5b3757)[_0x95ff('0x21')](function(_0x527327){logger[_0x95ff('0x24')]('[%s][UPDATE][ACWTIME:%s]',_0x463ef1,_0x3e518d,_0x527327);})[_0x95ff('0x30')](function(_0x568c15){logger[_0x95ff('0x31')](_0x95ff('0x39'),_0x463ef1,_0x568c15);});}else{logger[_0x95ff('0x31')]('[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer',_0x5b3757);if(_0xb763dc[_0x95ff('0x9')]){logger[_0x95ff('0x24')]('[ACW][TIMERS]',JSON[_0x95ff('0x3a')](_0xb763dc[_0x95ff('0x9')]));}}}catch(_0x827210){logger[_0x95ff('0x31')](_0x95ff('0x3b'),_0x827210[_0x95ff('0x35')]);}};Acw[_0x95ff('0x18')][_0x95ff('0xb')]=function(_0x1d94c1){try{if(this[_0x95ff('0x7')][_0x1d94c1[_0x95ff('0x1b')]]&&(this[_0x95ff('0x7')][_0x1d94c1[_0x95ff('0x1b')]][_0x95ff('0x4')]||this['voiceQueues'][_0x1d94c1[_0x95ff('0x1b')]][_0x95ff('0x1d')])){if(this[_0x95ff('0x8')][_0x1d94c1[_0x95ff('0x1a')]]){this[_0x95ff('0xa')][_0x1d94c1['uniqueid']]={'queue':_0x1d94c1['queue'],'interface':_0x1d94c1[_0x95ff('0x1a')],'destlinkedid':_0x1d94c1[_0x95ff('0x26')]};}}}catch(_0x3948f7){logger[_0x95ff('0x31')](_0x95ff('0x3c'),_0x3948f7[_0x95ff('0x35')]);}};Acw['prototype'][_0x95ff('0x14')]=function(_0x11aec6){try{if(this['voiceQueues'][_0x11aec6[_0x95ff('0x1b')]]&&(this[_0x95ff('0x7')][_0x11aec6[_0x95ff('0x1b')]][_0x95ff('0x4')]||this[_0x95ff('0x7')][_0x11aec6[_0x95ff('0x1b')]][_0x95ff('0x1d')])){if(this[_0x95ff('0x8')][_0x11aec6[_0x95ff('0x1a')]]){this[_0x95ff('0xa')][_0x11aec6['uniqueid']]={'queue':_0x11aec6[_0x95ff('0x1b')],'interface':_0x11aec6[_0x95ff('0x1a')]};}}}catch(_0x2b0c5e){logger[_0x95ff('0x31')](_0x95ff('0x3d'),_0x2b0c5e[_0x95ff('0x35')]);}};Acw[_0x95ff('0x18')][_0x95ff('0xe')]=function(_0x207c3c){try{if(this[_0x95ff('0xa')][_0x207c3c[_0x95ff('0x2e')]]&&_[_0x95ff('0x3e')](this['channels'][_0x207c3c[_0x95ff('0x2e')]][_0x95ff('0x25')])){logger[_0x95ff('0x24')](_0x95ff('0x3f'),_0x207c3c[_0x95ff('0x2e')]);this[_0x95ff('0x19')](_0x207c3c['uniqueid']);}else if(this['channels'][_0x207c3c[_0x95ff('0x40')]]&&_[_0x95ff('0x3e')](this[_0x95ff('0xa')][_0x207c3c[_0x95ff('0x40')]][_0x95ff('0x25')])){logger['info'](_0x95ff('0x41'),_0x207c3c[_0x95ff('0x40')]);this['startAcw'](_0x207c3c[_0x95ff('0x40')]);}}catch(_0xe07231){logger['error'](_0x95ff('0x42'),_0xe07231[_0x95ff('0x35')]);}};Acw['prototype'][_0x95ff('0x43')]=function(_0x1dd69d){try{if(this[_0x95ff('0xa')][_0x1dd69d[_0x95ff('0x2e')]]&&this[_0x95ff('0xa')][_0x1dd69d[_0x95ff('0x2e')]][_0x95ff('0x25')]){logger[_0x95ff('0x24')](_0x95ff('0x44'),_0x1dd69d[_0x95ff('0x2e')]);this[_0x95ff('0x19')](_0x1dd69d['uniqueid']);}else if(this[_0x95ff('0xa')][_0x1dd69d['linkedid']]&&this[_0x95ff('0xa')][_0x1dd69d['linkedid']][_0x95ff('0x25')]){logger[_0x95ff('0x24')](_0x95ff('0x45'),_0x1dd69d['linkedid']);this[_0x95ff('0x19')](_0x1dd69d['linkedid']);}}catch(_0x253dd2){logger[_0x95ff('0x31')](_0x95ff('0x46'),_0x253dd2['message']);}};Acw['prototype']['syncAttendedTransfer']=function(_0xb61744){try{if(!_[_0x95ff('0x47')](this[_0x95ff('0xa')][_0xb61744['transfereeuniqueid']])){this[_0x95ff('0x19')](_0xb61744[_0x95ff('0x48')]);if(this[_0x95ff('0xa')][_0xb61744[_0x95ff('0x49')]]){this[_0x95ff('0xa')][_0xb61744[_0x95ff('0x49')]][_0x95ff('0x25')]=!![];this[_0x95ff('0xa')][_0xb61744[_0x95ff('0x4a')]]=this[_0x95ff('0xa')][_0xb61744[_0x95ff('0x49')]];delete this[_0x95ff('0xa')][_0xb61744[_0x95ff('0x49')]];}}else if(!_[_0x95ff('0x47')](this['channels'][_0xb61744['transfertargetuniqueid']])){this['startAcw'](_0xb61744[_0x95ff('0x4a')]);if(this[_0x95ff('0xa')][_0xb61744[_0x95ff('0x4b')]]){this[_0x95ff('0xa')][_0xb61744[_0x95ff('0x4b')]][_0x95ff('0x25')]=!![];this[_0x95ff('0xa')][_0xb61744['transfereeuniqueid']]=this[_0x95ff('0xa')][_0xb61744['origtransfereruniqueid']];delete this[_0x95ff('0xa')][_0xb61744[_0x95ff('0x4b')]];}}}catch(_0x3773ed){logger['error'](_0x95ff('0x4c'),_0x3773ed['message']);}};Acw['prototype'][_0x95ff('0x13')]=function(_0x5dc473){try{if(this[_0x95ff('0xa')][_0x5dc473[_0x95ff('0x4d')]]){logger[_0x95ff('0x24')](_0x95ff('0x4e'),JSON[_0x95ff('0x3a')](_0x5dc473[_0x95ff('0x4d')]));this[_0x95ff('0x19')](_0x5dc473[_0x95ff('0x4d')]);}else if(this['channels'][_0x5dc473['transfererlinkedid']]){logger[_0x95ff('0x24')]('[%s][BLINDTRANSFER:LINKEDID]',JSON['stringify'](_0x5dc473[_0x95ff('0x4f')]));this[_0x95ff('0x19')](_0x5dc473[_0x95ff('0x4f')]);}}catch(_0x22b898){logger[_0x95ff('0x31')](_0x95ff('0x50'),_0x22b898[_0x95ff('0x35')]);}};Acw[_0x95ff('0x18')]['syncAgentRingNoAnswer']=function(_0x505226){try{if(this[_0x95ff('0x7')][_0x505226['queue']]&&this['voiceQueues'][_0x505226[_0x95ff('0x1b')]][_0x95ff('0x51')]===_0x95ff('0x52')){if(this[_0x95ff('0x8')][_0x505226[_0x95ff('0x1a')]]){logger['info'](_0x95ff('0x53'),_0x505226[_0x95ff('0x2e')],_0x505226['interface'],_0x505226[_0x95ff('0x1b')]);return RpcUser[_0x95ff('0x27')](this[_0x95ff('0x8')][_0x505226[_0x95ff('0x1a')]],'Auto-Pause',_0x505226[_0x95ff('0x2e')]);}}}catch(_0x1742b1){logger[_0x95ff('0x31')]('[ACW][syncAgentRingNoAnswer]\x20%s',_0x1742b1['message']);}};module['exports']=Acw;
\ No newline at end of file
index adaa993..31faf74 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00aa=['Manager\x20\x22%s\x22\x20closed\x20to\x20%s:%s','username','actionSipShowRegistry','sipshowregistry','actionDeviceStateList','devicestatelist','actionSipPeerStatus','sippeerstatus','actionQueueSummary','queuesummary','actionCoreShowChannels','coreshowchannels','info','Manager\x20\x22%s\x22\x20logged\x20on\x20to\x20%s:%s','once','close','shutdown','Shutdown\x20\x22%s\x22\x20to\x20%s:%s\x20with:\x0a%s','fullybooted','Fullybooted\x20\x22%s\x22\x20to\x20%s:%s','resolve','then','catch','[ami.js][fullybooted]','exports','asterisk-manager','bluebird','util','../../config/logger','../../config/environment','asterisk','keepConnected','Action','promisify','action','error','format','Manager\x20\x22%s\x22\x20error\x20to\x20%s:%s\x20with:\x0a%s','port','inspect'];(function(_0x565a75,_0x21827c){var _0x588e8d=function(_0x31c16b){while(--_0x31c16b){_0x565a75['push'](_0x565a75['shift']());}};_0x588e8d(++_0x21827c);}(_0x00aa,0x181));var _0xa00a=function(_0x4b73a2,_0x40b5fe){_0x4b73a2=_0x4b73a2-0x0;var _0x383c66=_0x00aa[_0x4b73a2];return _0x383c66;};'use strict';var Manager=require(_0xa00a('0x0'));var BPromise=require(_0xa00a('0x1'));var util=require(_0xa00a('0x2'));var logger=require(_0xa00a('0x3'))('ami');var config=require(_0xa00a('0x4'));var ami=new Manager(config[_0xa00a('0x5')]['port'],config[_0xa00a('0x5')]['ip'],config[_0xa00a('0x5')]['username'],config[_0xa00a('0x5')]['password'],!![]);ami[_0xa00a('0x6')]();ami[_0xa00a('0x7')]=BPromise[_0xa00a('0x8')](ami[_0xa00a('0x9')]);function error(_0x461043){logger[_0xa00a('0xa')](util[_0xa00a('0xb')](_0xa00a('0xc'),config['asterisk']['username'],config[_0xa00a('0x5')]['ip'],config[_0xa00a('0x5')][_0xa00a('0xd')],util[_0xa00a('0xe')](_0x461043,![],null)));}function close(){logger[_0xa00a('0xa')](util[_0xa00a('0xb')](_0xa00a('0xf'),config[_0xa00a('0x5')][_0xa00a('0x10')],config[_0xa00a('0x5')]['ip'],config[_0xa00a('0x5')]['port']));}ami[_0xa00a('0x11')]=function(){return function(){return ami['Action']({'action':_0xa00a('0x12')});};};ami[_0xa00a('0x13')]=function(){return function(){return ami[_0xa00a('0x7')]({'action':_0xa00a('0x14')});};};ami[_0xa00a('0x15')]=function(){return function(){return ami[_0xa00a('0x7')]({'action':_0xa00a('0x16')});};};ami[_0xa00a('0x17')]=function(){return function(){return ami[_0xa00a('0x7')]({'action':_0xa00a('0x18')});};};ami[_0xa00a('0x19')]=function(){return function(){return ami[_0xa00a('0x7')]({'action':_0xa00a('0x1a')});};};function connect(){logger[_0xa00a('0x1b')](util[_0xa00a('0xb')](_0xa00a('0x1c'),config[_0xa00a('0x5')][_0xa00a('0x10')],config['asterisk']['ip'],config[_0xa00a('0x5')][_0xa00a('0xd')]));ami[_0xa00a('0x1d')](_0xa00a('0xa'),error);ami[_0xa00a('0x1d')](_0xa00a('0x1e'),close);}ami['on']('connect',connect);ami['on'](_0xa00a('0x1f'),function(_0x497c1c){logger[_0xa00a('0x1b')](util[_0xa00a('0xb')](_0xa00a('0x20'),config[_0xa00a('0x5')][_0xa00a('0x10')],config['asterisk']['ip'],config[_0xa00a('0x5')][_0xa00a('0xd')],util[_0xa00a('0xe')](_0x497c1c,![],null)));});ami['on'](_0xa00a('0x21'),function(){logger['info'](util[_0xa00a('0xb')](_0xa00a('0x22'),config[_0xa00a('0x5')][_0xa00a('0x10')],config[_0xa00a('0x5')]['ip'],config[_0xa00a('0x5')][_0xa00a('0xd')]));return Promise[_0xa00a('0x23')]()[_0xa00a('0x24')](ami['actionSipShowRegistry']())[_0xa00a('0x24')](ami['actionDeviceStateList']())[_0xa00a('0x24')](ami[_0xa00a('0x15')]())[_0xa00a('0x24')](ami[_0xa00a('0x17')]())[_0xa00a('0x24')](ami[_0xa00a('0x19')]())[_0xa00a('0x25')](function(_0x3b4b1f){logger[_0xa00a('0xa')](_0xa00a('0x26'),util[_0xa00a('0xe')](_0x3b4b1f,{'showHidden':![],'depth':null}));});});ami['once']('error',error);ami[_0xa00a('0x1d')](_0xa00a('0x1e'),close);module[_0xa00a('0x27')]=ami;
\ No newline at end of file
+var _0x0056=['bluebird','util','../../config/logger','ami','../../config/environment','asterisk','port','keepConnected','action','error','format','username','inspect','actionSipShowRegistry','Action','sipshowregistry','devicestatelist','actionSipPeerStatus','actionQueueSummary','queuesummary','actionCoreShowChannels','info','Manager\x20\x22%s\x22\x20logged\x20on\x20to\x20%s:%s','once','close','shutdown','Shutdown\x20\x22%s\x22\x20to\x20%s:%s\x20with:\x0a%s','fullybooted','Fullybooted\x20\x22%s\x22\x20to\x20%s:%s','resolve','actionDeviceStateList','then','catch','[ami.js][fullybooted]','exports'];(function(_0x49c73d,_0x19e162){var _0x12c80b=function(_0x5909ae){while(--_0x5909ae){_0x49c73d['push'](_0x49c73d['shift']());}};_0x12c80b(++_0x19e162);}(_0x0056,0x8c));var _0x6005=function(_0x2df507,_0x553862){_0x2df507=_0x2df507-0x0;var _0x1f7167=_0x0056[_0x2df507];return _0x1f7167;};'use strict';var Manager=require('asterisk-manager');var BPromise=require(_0x6005('0x0'));var util=require(_0x6005('0x1'));var logger=require(_0x6005('0x2'))(_0x6005('0x3'));var config=require(_0x6005('0x4'));var ami=new Manager(config[_0x6005('0x5')][_0x6005('0x6')],config[_0x6005('0x5')]['ip'],config['asterisk']['username'],config['asterisk']['password'],!![]);ami[_0x6005('0x7')]();ami['Action']=BPromise['promisify'](ami[_0x6005('0x8')]);function error(_0x566629){logger[_0x6005('0x9')](util[_0x6005('0xa')]('Manager\x20\x22%s\x22\x20error\x20to\x20%s:%s\x20with:\x0a%s',config[_0x6005('0x5')][_0x6005('0xb')],config[_0x6005('0x5')]['ip'],config[_0x6005('0x5')][_0x6005('0x6')],util[_0x6005('0xc')](_0x566629,![],null)));}function close(){logger[_0x6005('0x9')](util['format']('Manager\x20\x22%s\x22\x20closed\x20to\x20%s:%s',config[_0x6005('0x5')]['username'],config[_0x6005('0x5')]['ip'],config[_0x6005('0x5')][_0x6005('0x6')]));}ami[_0x6005('0xd')]=function(){return function(){return ami[_0x6005('0xe')]({'action':_0x6005('0xf')});};};ami['actionDeviceStateList']=function(){return function(){return ami[_0x6005('0xe')]({'action':_0x6005('0x10')});};};ami[_0x6005('0x11')]=function(){return function(){return ami[_0x6005('0xe')]({'action':'sippeerstatus'});};};ami[_0x6005('0x12')]=function(){return function(){return ami[_0x6005('0xe')]({'action':_0x6005('0x13')});};};ami[_0x6005('0x14')]=function(){return function(){return ami['Action']({'action':'coreshowchannels'});};};function connect(){logger[_0x6005('0x15')](util['format'](_0x6005('0x16'),config[_0x6005('0x5')][_0x6005('0xb')],config[_0x6005('0x5')]['ip'],config[_0x6005('0x5')][_0x6005('0x6')]));ami['once']('error',error);ami[_0x6005('0x17')](_0x6005('0x18'),close);}ami['on']('connect',connect);ami['on'](_0x6005('0x19'),function(_0x3e9dc2){logger[_0x6005('0x15')](util[_0x6005('0xa')](_0x6005('0x1a'),config[_0x6005('0x5')][_0x6005('0xb')],config[_0x6005('0x5')]['ip'],config[_0x6005('0x5')][_0x6005('0x6')],util[_0x6005('0xc')](_0x3e9dc2,![],null)));});ami['on'](_0x6005('0x1b'),function(){logger['info'](util[_0x6005('0xa')](_0x6005('0x1c'),config[_0x6005('0x5')]['username'],config[_0x6005('0x5')]['ip'],config['asterisk']['port']));return Promise[_0x6005('0x1d')]()['then'](ami[_0x6005('0xd')]())['then'](ami[_0x6005('0x1e')]())[_0x6005('0x1f')](ami['actionSipPeerStatus']())[_0x6005('0x1f')](ami[_0x6005('0x12')]())[_0x6005('0x1f')](ami['actionCoreShowChannels']())[_0x6005('0x20')](function(_0x27ed5d){logger[_0x6005('0x9')](_0x6005('0x21'),util[_0x6005('0xc')](_0x27ed5d,{'showHidden':![],'depth':null}));});});ami[_0x6005('0x17')](_0x6005('0x9'),error);ami['once'](_0x6005('0x18'),close);module[_0x6005('0x22')]=ami;
\ No newline at end of file
index 4478b5b..cd66a8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['rpc','memberReport','error','message','result','catch','exports','../../config/logger','ami','client','http','Request','request','then','debug'];(function(_0x50f94b,_0x4655e3){var _0x460aa5=function(_0x1ec866){while(--_0x1ec866){_0x50f94b['push'](_0x50f94b['shift']());}};_0x460aa5(++_0x4655e3);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var jayson=require('jayson/promise');var BPromise=require('bluebird');var logger=require(_0x3071('0x0'))(_0x3071('0x1'));var client=jayson[_0x3071('0x2')][_0x3071('0x3')]({'port':0x2329});client[_0x3071('0x4')]=function(_0x52b5fb,_0x2c547f){return new BPromise(function(_0x7b18a4,_0x33a70c){return client[_0x3071('0x5')](_0x52b5fb,_0x2c547f)[_0x3071('0x6')](function(_0x41cf76){logger[_0x3071('0x7')](_0x3071('0x8'),_0x3071('0x9'),_0x52b5fb,_0x2c547f,_0x41cf76);if(_0x41cf76[_0x3071('0xa')]){logger[_0x3071('0xa')](_0x3071('0x8'),_0x3071('0x9'),_0x52b5fb,_0x41cf76['error'][_0x3071('0xb')],_0x2c547f);return _0x33a70c(_0x41cf76[_0x3071('0xa')][_0x3071('0xb')]);}else{return _0x7b18a4(_0x41cf76[_0x3071('0xc')]);}})[_0x3071('0xd')](function(_0x4a470a){logger[_0x3071('0xa')](_0x3071('0x8'),_0x3071('0x9'),_0x52b5fb,_0x4a470a,_0x2c547f);return _0x33a70c(_0x4a470a);});});};module[_0x3071('0xe')]=client;
\ No newline at end of file
+var _0xda3f=['then','rpc','memberReport','error','message','result','catch','exports','bluebird','../../config/logger','Request','request'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0xda3f,0xec));var _0xfda3=function(_0x3b1528,_0x1a8a83){_0x3b1528=_0x3b1528-0x0;var _0x168ac1=_0xda3f[_0x3b1528];return _0x168ac1;};'use strict';var jayson=require('jayson/promise');var BPromise=require(_0xfda3('0x0'));var logger=require(_0xfda3('0x1'))('ami');var client=jayson['client']['http']({'port':0x2329});client[_0xfda3('0x2')]=function(_0x581693,_0x36dc71){return new BPromise(function(_0x22187d,_0x516500){return client[_0xfda3('0x3')](_0x581693,_0x36dc71)[_0xfda3('0x4')](function(_0x47e7e2){logger['debug'](_0xfda3('0x5'),_0xfda3('0x6'),_0x581693,_0x36dc71,_0x47e7e2);if(_0x47e7e2[_0xfda3('0x7')]){logger[_0xfda3('0x7')](_0xfda3('0x5'),_0xfda3('0x6'),_0x581693,_0x47e7e2[_0xfda3('0x7')][_0xfda3('0x8')],_0x36dc71);return _0x516500(_0x47e7e2[_0xfda3('0x7')][_0xfda3('0x8')]);}else{return _0x22187d(_0x47e7e2[_0xfda3('0x9')]);}})[_0xfda3('0xa')](function(_0x4d7841){logger[_0xfda3('0x7')](_0xfda3('0x5'),_0xfda3('0x6'),_0x581693,_0x4d7841,_0x36dc71);return _0x516500(_0x4d7841);});});};module[_0xfda3('0xb')]=client;
\ No newline at end of file
index 83dcd99..c333a93 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x417b=['[rescheduleContact][Abandoned]','actions','channel','syncQueueMember','actionid','strategy','roundrobin','locked','stateinterface','rrmemory','isNil','queueBooked','merge','idHopper','paused','run','finally','updateOriginated','[unlock][syncQueueStatusComplete]','queueBookedRR','_rr','unlockRR','[booked][RR]','Agent:\x20','contactAgent-idHopper:\x20','[Catch][Preview][syncQueueStatusComplete]','[booked][RR][finaly]','[booked][unlock]','[booked][unlock2]','[unlock2][syncQueueStatusComplete]','[booked][unlock3]','[unlock3][syncQueueStatusComplete]','responsetime','getQueue','Success','callProgressDetecting','[callProgressDetecting]\x20','variable','amdstatus','exten','dialAMDActive','HANGUP','HangupInAMD','buildObj','amd','saveInDb','[syncHangupInAMD][createHistory]','MACHINE','outboundAnswerAgiCallsDay','Machine','membername','AMD','countmachineretry','custom:amd','[syncAgentComplete][createHistory][0]','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countagentrejectretry','dialGlobalMaxRetry','reason19\x20machine....','dialMachineMaxRetry','createStateFinal','reason\x2019\x20machine....','add','dialMachineRetryFrequency','value','[syncHangupInAMDIvr][createHistory]','countbusyretry','stateGlobal','[rescheduleContact][Machine]','ivrAnswerCallsDay','[syncHangupIvr][createHistory]','[syncHangupIvr]','dialQueueProject','AnswerAGI','AGI','outboundUnknownCallsDay','Unknow','syncQueueSummary','queuesSummary','running','statusMessage','available','inUse','pTalking','ACTIVE','[syncQueueSummary]','compareToOutboundQueue','queueSummaryCountersUpdated','updateReportFromOutboundQueue','assign','throttle','filter','online','handlePreviewRecallNotifications','map','Agent','user:%s','checkPreviewRecallReminder','[uniqueid]','clearZombieChannels','sequence','[Dialer][checkChannel][ivr]','getVoiceQueueRtPauses','[getVoiceQueueRtPauses]\x20','[updateOriginated]\x20object\x20originated\x20is\x20negative','[updateOriginated]\x20is\x20null\x20or\x20undefined','emptyContact','notFound','UserId','[emptyContact][createHistory]','user:dialPreviewRecallReminder','launchHandleIvr','actionOriginate','object','originate','voiceQueue\x20is\x20undefine','phone','getCaller','\x22agi://%s/square,%s\x22','NONE','isOutboundQueue','\x22%s,%s%s,,,%s\x22','dialQueueOptions','xcally-motion-dialer','XMD-AMDINITIALSILENCE','dialAMDInitialSilence','XMD-AMDGREETING','dialAMDGreeting','XMD-AMDAFTERGREETINGSILENCE','dialAMDAfterGreetingSilence','XMD-AMDTOTALANALYSISTIME','dialAMDTotalAnalysisTime','XMD-AMDMINWORDLENGTH','dialAMDMinWordLength','XMD-AMDBETWEENWORDSSILENCE','dialAMDBetweenWordsSilence','XMD-AMDMAXIMUMNUMBEROFWORDS','dialAMDMaximumNumberOfWords','XMD-AMDSILENCETHRESHOLD','dialAMDSilenceThreshold','XMD-AMDMAXIMUMWORDLENGTH','dialAMDMaximumWordLength','XMD-VOICEQUEUEID','XMD-CAMPAIGNID','Contact','tags','createdAt','%s%s','isTrunkReachable','getCallerId','callerid','dialOriginateCallerIdName','dialRandomLastDigitCallerIdNumber','getCallerIdRandom','dialOriginateCallerIdNumber','XMD-ORIGINATECALLERIDNAME','originatecalleridname','XMD-ORIGINATECALLERIDNUM','variables','SIP/%s/%s%s','dialPrefix','substring','dialCutDigit','trim','from-sip','outboundOriginateFailureCallsDay','[originateError]:\x20%s','[originate][error]','originate\x20action\x20Error','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','[rescheduleContact][NoAnswer]','dialBusyRetryFrequency','[rescheduleContact]\x20[Busy]','dialCongestionMaxRetry','dialCongestionRetryFrequency','[rescheduleContact]\x20[Congestion]','dialNoSuchNumberRetryFrequency','[rescheduleContact][NoSuchNumber]','dialAgentRejectMaxRetry','[rescheduleContact][AgentReject]','[callProgressDetecting]','entity\x20is\x20undefine','evt\x20is\x20undefine','outboundNoSuchCallsDay','NoSuchNumber','nosuchnumber','dialNoSuchNumberMaxRetry','reason\x200\x20no\x20such\x20number....','outboundNoAnswerCallsDay','NoAnswer','custom:agentnoanswer','[syncAgentComplete][createHistory][3]','checkRetriveMax','reason\x203\x20ringing\x20no\x20answer','outboundBusyCallsDay','Busy','custom:agentbusy','busy','[syncAgentComplete][createHistory][5]','dialBusyMaxRetry','reason\x205\x20busy','outboundCongestionCallsDay','Congestion','congestion','reason\x208\x20congestion','reason\x2011\x20abandoned','AgentReject','dialAgentRejectRetryFrequency','custom:agentreject','[syncAgentComplete][createHistory][20]','reason\x2020\x20agentreject','[syncAgentComplete][createHistory][?]','Global','contact\x20not\x20moved','round','predictiveIntervalAvailable','talking','floor','predictiveIntervalMultiplicativeFactor','[startMethodPredictive][StartProgressive]','check\x20predictive\x20is\x20not\x20undefine','check\x20handlePredictive\x20is\x20not\x20undefine','dialPredictiveInterval','dropRate','[stopMethodPredictive][ReStartProgressive][ExceededDropDay]','Dropped\x20calls\x20day','dialPredictiveOptimization','[stopMethodPredictive][ReStartProgressive][ExceededDropInterval]','Max\x20Drop\x20','Drop\x20in\x20this\x20interval','started\x20in\x20predictive\x20at','avgHandleTime','startMethodPredictive','Predictive\x20after\x20first\x20interval','recalculate\x20predictive\x20at','Predictive\x20for\x20every\x20interval','switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',')\x20are\x20less\x20than\x20threshold\x20(',')\x20are\x20more\x20than\x20threshold\x20(','getDataPredictive','abandonmentRate','agentBusyFactor','dialPredictiveOptimizationPercentage','busyFactor','Unknown\x20Predictive','[getDataPredictive]','check\x20failure','getDataPredictiveOld','outboundQueuePauses','predictiveIntervalPauses','predictiveIntervalHitRate','[CatchErlangB]','loggedIn','one\x20call\x20every:','milliseconds','[handlePredictive]','fail\x20to\x20scheduled\x20calls','recallme','queueStatusComplete:\x20','Queue:\x20','queuestatus','[unlockOriginate][syncQueueStatusComplete]','dialRecallMeTimeout','voicePause','unlockContact','dialRecallInQueue','[rescheduleContact][dialRecallInQueue]','RecallInQueue','RECALL_TIMEOUT','RecallFailedTimeout','[Originate][HistoryRecallClose][historyCatch]','outboundBlacklistCallsDay','Blacklist','[Originate][MoveBlacklist]','inBlackList','limitCalls','temp','getContactDialerIvr','checkContactEmpty','[getContactCampaign2][Empty]','ivrTotalCallsDays','[actionOriginate]\x20','checkIsBlackListIvr','checkContactBlack','loggerHandler','[actionOriginateIvr]\x20','[getContactCampaign2]','dialLimitQueue','getContactDialer','countReScheduled','[countReScheduled]\x20','RUNNING','checkIsBlackList','[getContactDialer2]','tryOriginatePredictive','[handlePredictive][limitChannel]','not_inuse','dialOrderByScheduledAt','[actionOriginatePredictive]\x20','[getContactDialerPredictive]','--------\x20Drop\x20Rate\x20--------','M:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Ts:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','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','[abandonmentRate]','Ts\x20=\x20','p\x20=\x20','interval\x20=\x20','erlangb','----\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]','Umin\x20=\x20','lodash','uuid','./utils','./utils/hopper','../preview/util/util','../../../config/environment/','dialer','../../../config/logger','predictive','predictiveCalls','redis','defaults','localhost','socket.io-emitter','../rpc/setting','../rpc/interval','./models/action','./models/history','./models/final','./models/agentComplete','./models/queueCallerAbandon','./models/hangup','env','XCALLY_IP_AGI','127.0.0.1','prototype','enqueue','tail','preview','voiceQueues','campaigns','agents','trunks','maxNumberOriginate','channels','contactsId','uniqueId','startPredictive','startProgressive','ivrOriginated','syncAgentConnect','bind','queuecallerabandon','syncQueueCallerAbandon','originateresponse','syncOriginateResponse','agentcomplete','syncAgentComplete','custom:queuesummary','custom:queuesummarycomplete','syncQueueSummaryComplete','hangup','syncHangup','syncNewExten','varset','syncVarSet','queuemember','queuestatuscomplete','syncQueueStatusComplete','loopCampaigns','loopClearZombieChannels','then','previewRecallmeReminderInterval','isUndefined','emit','type','outbound','debug','[voiceQueueReport][queuesummary]\x20sending\x20voice_queue:save\x20event:','inspect','format','voice:queue:%s','name','voice_queue:save','isEmpty','-----\x20Stats\x20Predictive\x20---','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','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsTimeout','Dropped\x20Exit:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','predictiveIntervalAvgHoldtime','AVG\x20Talk\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','predictiveIntervalAvgTalktime','---------------------------','Avg\x20Talk\x20Time\x20is\x20not\x20enough\x20for\x20predictive','Avg\x20Hold\x20Time\x20is\x20not\x20enough\x20for\x20predictive','Total\x20Calls\x20are\x20not\x20enough\x20for\x20predictive','Scheduled\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','erlangCalls','One\x20call\x20every:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','erlangCallToSecond','Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Agent\x20Busy\x20Factor:\x20\x20\x20\x20\x20\x20\x20\x20\x20','erlangBusyFactor','erlangAbandonmentRate','getSeconds','startProgressive\x20value\x20cleared','startPredictive\x20value\x20cleared','handlePredictive','error','stack','checkContactLowerLimitOriginate','CAMPAIGN_STATUS','[getContactDialer2][ReScheduled]','contactsRescheduled','NO_AVAILABLE_CONTACTS','[getContactDialer2][Empty]','message','state','endtime','starttime','queueStatusComplete','[unlockQueueStatus][undefined]','[booked][unlockQueueStatus]','pick','Interval','Intervals','NULL_INTERVAL','\x20INTERVAL_IS_NULL','isIVRCampaignActive','INACTIVE','isIVRCampaign','campaign:save','sendMessageOneNotActive','originated','[syncQueueSummary]\x20Campaign\x20Ivr:\x20','is\x20not\x20active','is\x20disactive','[ifTime][Action]','Error','active','SIP/%s','status','reachable','unmonitored','checkIsTrunkReachable','Trunk','TrunkBackup','TRUNK_NOT_REACHABLE','ifTimeIvr','ifTime','Failure','\x20Intervals\x20is\x20null\x20','\x20Intervals\x20is\x20empty\x20','timezones','UNKNOWN_TIMEZONE','\x20Timezone\x20unknow\x20','length','Action','iftime\x20%s,%s','content','indexOf','true','catch','push','command','all','some','OVERTIME_GLOBAL_INTERVAL','OVERTIME_INTERVAL','[ifTime][promiseAll]','Global:\x20','\x20Interval\x20is\x20overtime:\x20','Timezone:\x20','stringify','resetActiveCalls','syncCampaigns','undefined','resolve','checkIfTime','dialGlobalInterval','checkIfTimeIntervals','[syncCampaigns]','checkDialMethod','dialMethod','progressive','power','handlePower','dialPowerLevel','booked','Queue','method\x20not\x20recognized','silly','Dialer::ifTime()','intervalIftime','Dialer::ifTime()\x20errResponse\x20NOT\x20NULL:','AMI\x20IfTime','uniqueid','ivr','answertime','YYYY-MM-DD\x20HH:mm:ss','queue','outboundAnswerCallsDay','reason','agent','agiafterat','dialAgiAfterHangupAgent','[syncAgentComplete][createHistory]','moveContactManagedDialer','[syncAgentComplete]','droptime','dialQueueTimeout','predictiveIntervalErlangCallsDroppedCalls','statedesc','dropreason','dialQueueProject2','countdropretry','countglobal','dialDropRetryFrequency','verifyAdditionalPhones','voiceQueue','additional','dialDropMaxRetry','rescheduleContact','ContactId','ListId','VoiceQueueId','CampaignId','[rescheduleContact][Drop]','calleridname','calleridnum','createHistory','swapAdditionalPhones','predictiveIntervalDroppedCallsCallersExit','outboundDropCallsDayCallersExit','Abandoned','CALLEREXIT','dialAbandonedRetryFrequency','callAdditionalPhoneAfterMin','countabandonedretry','dialAbandonedMaxRetry','queueCallerAbandonCreateState','minutes'];(function(_0x4959ef,_0x488560){var _0x1a0a75=function(_0x35c591){while(--_0x35c591){_0x4959ef['push'](_0x4959ef['shift']());}};_0x1a0a75(++_0x488560);}(_0x417b,0x13d));var _0xb417=function(_0x5aa9df,_0x3b6e4a){_0x5aa9df=_0x5aa9df-0x0;var _0x5889cb=_0x417b[_0x5aa9df];return _0x5889cb;};'use strict';var util=require('util');var _=require(_0xb417('0x0'));var uuid=require(_0xb417('0x1'));var moment=require('moment');var rr=require('rr');var Redis=require('ioredis');var utils=require(_0xb417('0x2'));var hopperUtils=require(_0xb417('0x3'));var ut=require(_0xb417('0x4'));var config=require(_0xb417('0x5'));var logger=require('../../../config/logger')(_0xb417('0x6'));var loggerBooked=require(_0xb417('0x7'))('booked');var loggerPredictive=require(_0xb417('0x7'))(_0xb417('0x8'));var loggerPredictiveCalls=require(_0xb417('0x7'))(_0xb417('0x9'));var loggerSyncQueueSummary=require('../../../config/logger')('syncQueueSummary');var ami=require('../ami');config[_0xb417('0xa')]=_[_0xb417('0xb')](config[_0xb417('0xa')],{'host':_0xb417('0xc'),'port':0x18eb});var io=require(_0xb417('0xd'))(new Redis(config['redis']));var cmHopper=require('../rpc/cmHopper');var voiceQueueRt=require('../rpc/voiceQueueRt');var RpcSetting=require(_0xb417('0xe'));var Interval=require(_0xb417('0xf'));var Action=require(_0xb417('0x10'));var History=require(_0xb417('0x11'));var Final=require(_0xb417('0x12'));var AgentComplete=require(_0xb417('0x13'));var QueueCallerAbandon=require(_0xb417('0x14'));var Hangup=require(_0xb417('0x15'));var ipAgi=process[_0xb417('0x16')][_0xb417('0x17')]||_0xb417('0x18');var previewRecallmeReminderInterval=0x1;var Sequence=function(){};Sequence[_0xb417('0x19')][_0xb417('0x1a')]=function(_0x336b95){this[_0xb417('0x1b')]=this['tail']?this[_0xb417('0x1b')]['finally'](_0x336b95):_0x336b95();};function Dialer(_0x32ac52,_0x188646){this['sequence']=new Sequence();this[_0xb417('0x1c')]=_0x188646;this[_0xb417('0x1d')]=_0x32ac52[_0xb417('0x1d')];this[_0xb417('0x1e')]=_0x32ac52[_0xb417('0x1e')];this['agents']=_0x32ac52[_0xb417('0x1f')];this[_0xb417('0x20')]=_0x32ac52[_0xb417('0x20')];this[_0xb417('0x21')]=config[_0xb417('0x21')]||0x2;this[_0xb417('0x22')]={};this['actions']={};this[_0xb417('0x23')]={};this[_0xb417('0x24')]={};this['optionPredictive']={};this[_0xb417('0x25')]={};this[_0xb417('0x26')]={};this[_0xb417('0x27')]={};this['queueBooked']={};this['queueBookedRR']={};this['queuesSummary']={};ami['on']('agentconnect',this[_0xb417('0x28')][_0xb417('0x29')](this));ami['on'](_0xb417('0x2a'),this[_0xb417('0x2b')][_0xb417('0x29')](this));ami['on'](_0xb417('0x2c'),this[_0xb417('0x2d')][_0xb417('0x29')](this));ami['on'](_0xb417('0x2e'),this[_0xb417('0x2f')][_0xb417('0x29')](this));ami['on'](_0xb417('0x30'),this['syncQueueSummary'][_0xb417('0x29')](this));ami['on'](_0xb417('0x31'),this[_0xb417('0x32')][_0xb417('0x29')](this));ami['on'](_0xb417('0x33'),this[_0xb417('0x34')]['bind'](this));ami['on']('newexten',this[_0xb417('0x35')][_0xb417('0x29')](this));ami['on'](_0xb417('0x36'),this[_0xb417('0x37')]['bind'](this));ami['on'](_0xb417('0x38'),this['syncQueueMember'][_0xb417('0x29')](this));ami['on'](_0xb417('0x39'),this[_0xb417('0x3a')][_0xb417('0x29')](this));this[_0xb417('0x3b')]();this[_0xb417('0x3c')]();RpcSetting['getSettings']()[_0xb417('0x3d')](function(_0x30c0a1){previewRecallmeReminderInterval=_0x30c0a1[_0xb417('0x3e')];});}function isNotNull(_0x2ed226){return _0x2ed226!==null&&!_[_0xb417('0x3f')](_0x2ed226);}function msgResponse(_0xdf6da,_0x16e926,_0x5c5679){return{'action':_0xdf6da,'response':_0x16e926,'message':_0x5c5679,'stack':_0x5c5679};}function emit(_0x3b4322,_0x114d43,_0x19397a){io['to'](_0x3b4322)[_0xb417('0x40')](_0x114d43,_0x19397a);}function emitOutboundVoiceQueueSummary(_0x709563){if(_0x709563[_0xb417('0x41')]===_0xb417('0x42')){logger[_0xb417('0x43')](_0xb417('0x44'),util[_0xb417('0x45')](_0x709563,{'showHidden':![],'depth':null}));emit(util[_0xb417('0x46')](_0xb417('0x47'),_0x709563[_0xb417('0x48')]),_0xb417('0x49'),_0x709563);}}function checkGetDataPredictive(_0x5e3bd9){if(isNotNull(_0x5e3bd9)&&!_[_0xb417('0x4a')](_0x5e3bd9)){loggerPredictive['info'](_0xb417('0x4b'));loggerPredictive[_0xb417('0x4c')](_0xb417('0x4d'),_0x5e3bd9[_0xb417('0x4e')]);loggerPredictive['info'](_0xb417('0x4f'),_0x5e3bd9[_0xb417('0x50')]);loggerPredictive[_0xb417('0x4c')]('Dropped\x20Timeout:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x5e3bd9[_0xb417('0x51')]);loggerPredictive[_0xb417('0x4c')](_0xb417('0x52'),_0x5e3bd9['predictiveIntervalDroppedCallsCallersExit']);loggerPredictive[_0xb417('0x4c')]('AVG\x20Hold\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x5e3bd9[_0xb417('0x53')]);loggerPredictive[_0xb417('0x4c')](_0xb417('0x54'),_0x5e3bd9[_0xb417('0x55')]);loggerPredictive[_0xb417('0x4c')](_0xb417('0x56'));if(_0x5e3bd9['predictiveIntervalTotalCalls']>0x0){if(!_[_0xb417('0x3f')](_0x5e3bd9['predictiveIntervalAvgTalktime'])&&_0x5e3bd9[_0xb417('0x55')]>0x0){return!![];}loggerPredictive[_0xb417('0x4c')](_0xb417('0x57'));if(!_[_0xb417('0x3f')](_0x5e3bd9['predictiveIntervalAvgHoldtime'])&&_0x5e3bd9['predictiveIntervalAvgHoldtime']>0x0){return!![];}loggerPredictive[_0xb417('0x4c')](_0xb417('0x58'));}else{loggerPredictive[_0xb417('0x4c')](_0xb417('0x59'));}}else{loggerPredictive[_0xb417('0x4c')]('History\x20information\x20are\x20empty');}return![];}function mergeDataErlangB(_0x40c46e){return function(_0x1cc245){loggerPredictive['info']('---------\x20ErlangB\x20---------');loggerPredictive['info'](_0xb417('0x5a'),_0x1cc245[_0xb417('0x5b')]);loggerPredictive[_0xb417('0x4c')](_0xb417('0x5c'),_0x1cc245[_0xb417('0x5d')]);loggerPredictive[_0xb417('0x4c')](_0xb417('0x5e'),_0x1cc245['erlangAbandonmentRate']);loggerPredictive[_0xb417('0x4c')](_0xb417('0x5f'),_0x1cc245[_0xb417('0x60')]);loggerPredictive[_0xb417('0x4c')]('Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x1cc245[_0xb417('0x61')]);loggerPredictive[_0xb417('0x4c')](_0xb417('0x56'));_['merge'](_0x40c46e,_0x1cc245);};}function ifInterval(_0x49a6ec,_0x34f661){if(_[_0xb417('0x3f')](_0x34f661)){return![];}return utils[_0xb417('0x62')](undefined,_0x34f661)<_0x49a6ec*0x3c;}function clearPredictiveAttributes(_0x4c8fad){if(_0x4c8fad[_0xb417('0x26')]){_0x4c8fad[_0xb417('0x26')]=undefined;loggerPredictive[_0xb417('0x43')](_0x4c8fad[_0xb417('0x48')],_0xb417('0x63'));}if(_0x4c8fad['startPredictive']){_0x4c8fad['startPredictive']=undefined;loggerPredictive['debug'](_0x4c8fad['name'],_0xb417('0x64'));}if(_0x4c8fad['handlePredictive']){clearInterval(_0x4c8fad[_0xb417('0x65')]);_0x4c8fad[_0xb417('0x65')]=undefined;loggerPredictive[_0xb417('0x43')](_0x4c8fad[_0xb417('0x48')],'handlePredictive\x20interval\x20cleared');}}function loggerCatchPredictive(_0x579667,_0x50f3ba){return function(_0x500670){loggerPredictive[_0xb417('0x66')](_0x50f3ba[_0xb417('0x48')],_0x579667);loggerPredictive[_0xb417('0x66')](_0x500670[_0xb417('0x67')]);clearPredictiveAttributes(_0x50f3ba);};}function loggerCatch(_0x18618c){return function(_0x745286){logger[_0xb417('0x66')](_0x18618c,util[_0xb417('0x45')](_0x745286,{'showHidden':![],'depth':null}));};}function loggerGetContactDialer(_0x54330f,_0x38cfc8,_0x381596){return function(_0x196e13){utils[_0xb417('0x68')](_0x38cfc8,_0x381596,0x0);logger[_0xb417('0x66')](_0x54330f,util[_0xb417('0x45')](_0x196e13,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0x8af3e4){return function(_0x40f124){if(isNotNull(_0x40f124)&&isNotNull(_0x40f124[0x0])){if(_0x40f124[0x0]['contactsRescheduled']>0x0){_0x8af3e4['message']=utils[_0xb417('0x69')]['CONTACTS_RESCHEDULED'];logger['info'](_0xb417('0x6a')+_0x8af3e4[_0xb417('0x48')],_0x40f124[0x0][_0xb417('0x6b')],'contacts');}else{_0x8af3e4['message']=utils[_0xb417('0x69')][_0xb417('0x6c')];logger[_0xb417('0x4c')](_0xb417('0x6d')+_0x8af3e4[_0xb417('0x48')]);}}};}function createObjHistory(_0xe8a356,_0x365d8a,_0x1105cd,_0x514fb4,_0x6aed8f){_0xe8a356[_0xb417('0x6e')]=_0x1105cd;var _0x25a72d=new Action(_0xe8a356,_0x365d8a);var _0x501a29=new History(_0x25a72d);_0x501a29[_0xb417('0x6f')]=_0x514fb4;_0x501a29['statedesc']=_0x6aed8f;_0x501a29[_0xb417('0x70')]=_0x25a72d[_0xb417('0x71')];return _0x501a29;}function unlockQueueStatus(_0x4b0f8b,_0x580c42){setTimeout(function(){if(_[_0xb417('0x3f')](_0x4b0f8b[_0xb417('0x72')])){loggerBooked[_0xb417('0x66')](_0xb417('0x73'),_0x580c42);}_0x4b0f8b[_0xb417('0x72')]=!![];loggerBooked[_0xb417('0x4c')](_0xb417('0x74'),_0x580c42,JSON['stringify'](_[_0xb417('0x75')](_0x4b0f8b,[_0xb417('0x48'),_0xb417('0x72')])));},0x1f3);}function checkInterval(_0x7110d6){return function(){if(!isNotNull(_0x7110d6[_0xb417('0x76')])){_0x7110d6[_0xb417('0x6e')]=utils[_0xb417('0x69')]['NULL_INTERVAL'];throw _0x7110d6[_0xb417('0x48')]+'\x20INTERVAL_IS_NULL';}if(!isNotNull(_0x7110d6[_0xb417('0x76')][_0xb417('0x77')])){_0x7110d6[_0xb417('0x6e')]=utils['CAMPAIGN_STATUS'][_0xb417('0x78')];throw _0x7110d6['name']+_0xb417('0x79');}if(!isNotNull(_[_0xb417('0x4a')](_0x7110d6['Interval'][_0xb417('0x77')]))){_0x7110d6[_0xb417('0x6e')]=utils[_0xb417('0x69')][_0xb417('0x78')];throw _0x7110d6[_0xb417('0x48')]+_0xb417('0x79');}};}function checkIsIVRCampaignActive(_0x3af0f1){return function(){if(!utils[_0xb417('0x7a')](_0x3af0f1)){_0x3af0f1[_0xb417('0x6e')]=utils[_0xb417('0x69')][_0xb417('0x7b')];throw _0x3af0f1['name']+'\x20NOT\x20Active';}};}function emitCampaignSummary(_0x2784da){if(utils[_0xb417('0x7c')](_0x2784da)){emit(util[_0xb417('0x46')]('campaign:ivr:%s',_0x2784da['name']),_0xb417('0x7d'),_0x2784da);}}function loggerCatchQueueSummary(_0x3dd3d2,_0x2197f2){return function(_0x5cd470){clearPredictiveAttributes(_0x2197f2);emitCampaignSummary(_0x2197f2);loggerSyncQueueSummary[_0xb417('0x43')](_0x3dd3d2,util[_0xb417('0x45')](_0x5cd470,{'showHidden':![],'depth':null}));};}function notSendMessagesCampaign(_0x78d10a){if(_0x78d10a[_0xb417('0x7e')]){if(_0x78d10a[_0xb417('0x7f')]===0x0){_0x78d10a[_0xb417('0x7e')]=![];_0x78d10a['message']=utils[_0xb417('0x69')][_0xb417('0x7b')];loggerSyncQueueSummary[_0xb417('0x43')](_0xb417('0x80'),_0x78d10a[_0xb417('0x48')],_0xb417('0x81'));}else{_0x78d10a[_0xb417('0x6e')]=utils[_0xb417('0x69')]['DISACTIVED'];loggerSyncQueueSummary[_0xb417('0x43')]('[syncQueueSummary]\x20Campaign\x20Ivr:\x20',_0x78d10a[_0xb417('0x48')],_0xb417('0x82'));}emitCampaignSummary(_0x78d10a);}}function myreject(_0x3eb9e4){return function(_0x463d01){return _0x3eb9e4(msgResponse(_0xb417('0x83'),_0xb417('0x84'),JSON['stringify'](_0x463d01)));};}Dialer[_0xb417('0x19')]['isTrunkReachable']=function(_0x186982){return!_['isUndefined'](_0x186982)&&_0x186982&&!_[_0xb417('0x3f')](_0x186982['name'])&&!_[_0xb417('0x3f')](_0x186982[_0xb417('0x85')])&&_0x186982['active']&&(this[_0xb417('0x20')][util['format'](_0xb417('0x86'),_0x186982[_0xb417('0x48')])][_0xb417('0x87')]===_0xb417('0x88')||this[_0xb417('0x20')][util['format'](_0xb417('0x86'),_0x186982['name'])][_0xb417('0x87')]===_0xb417('0x89'));};Dialer[_0xb417('0x19')][_0xb417('0x8a')]=function(_0x13f04d){var _0xe61709=this;return function(){if(!_0xe61709['isTrunkReachable'](_0x13f04d[_0xb417('0x8b')])){if(!_0xe61709['isTrunkReachable'](_0x13f04d[_0xb417('0x8c')])){_0x13f04d['message']=utils[_0xb417('0x69')][_0xb417('0x8d')];throw _0x13f04d['name']+'\x20trunk\x20is\x20not\x20reachable';}}};};Dialer['prototype']['checkIfTime']=function(_0x261534,_0xe4496d,_0x27c2fd,_0x1355d5){var _0x9dfa5e=this;return function(){var _0x48bc64=!![];return _0x9dfa5e['ifTimeIvr'](_0x261534,_0xe4496d,_0x27c2fd,_0x1355d5,_0x48bc64);};};Dialer[_0xb417('0x19')]['checkIfTimeIntervals']=function(_0x2aa4a3,_0x43bba1,_0x4de27c,_0x33d157){var _0x4e56d9=this;return function(){var _0x3ba12c=![];return _0x4e56d9[_0xb417('0x8e')](_0x2aa4a3['Intervals'],_0x43bba1,_0x4de27c,_0x33d157,_0x3ba12c);};};Dialer[_0xb417('0x19')]['ifTimeIvr']=function(_0x43f795,_0x45259c,_0x28ab69,_0x5943a6,_0x1f5a19){var _0x401b35=[];return new Promise(function(_0x383ace,_0x34bd10){if(!isNotNull(_0x43f795)){_0x5943a6['message']=utils[_0xb417('0x69')][_0xb417('0x78')];return _0x34bd10(msgResponse(_0xb417('0x8f'),_0xb417('0x90'),_0x28ab69+_0xb417('0x91')));}if(_[_0xb417('0x4a')](_0x43f795)){_0x5943a6[_0xb417('0x6e')]=utils['CAMPAIGN_STATUS']['EMPTY_INTERVAL'];return _0x34bd10(msgResponse(_0xb417('0x8f'),_0xb417('0x90'),_0x28ab69+_0xb417('0x92')));}if(_0x45259c&&_[_0xb417('0x3f')](config[_0xb417('0x93')][_0x45259c])){_0x5943a6[_0xb417('0x6e')]=utils[_0xb417('0x69')][_0xb417('0x94')];return _0x34bd10(msgResponse(_0xb417('0x8f'),_0xb417('0x90'),_0x28ab69+_0xb417('0x95')+_0x45259c));}if(_['isArray'](_0x43f795)){for(var _0x30ecc5=0x0;_0x30ecc5<_0x43f795[_0xb417('0x96')];_0x30ecc5+=0x1){_0x401b35['push'](ami[_0xb417('0x97')]({'action':'command','command':util[_0xb417('0x46')](_0xb417('0x98'),_0x43f795[_0x30ecc5]['interval'],!_['isUndefined'](config[_0xb417('0x93')][_0x45259c])?_0x45259c:'')})[_0xb417('0x3d')](function(_0x39a916){return _0x39a916[_0xb417('0x99')][_0xb417('0x9a')](_0xb417('0x9b'))>=0x0;})[_0xb417('0x9c')](myreject(_0x34bd10)));}}else{_0x401b35[_0xb417('0x9d')](ami['Action']({'action':_0xb417('0x9e'),'command':util[_0xb417('0x46')](_0xb417('0x98'),_0x43f795,!_['isUndefined'](config[_0xb417('0x93')][_0x45259c])?_0x45259c:'')})[_0xb417('0x3d')](function(_0x126937){return _0x126937[_0xb417('0x99')][_0xb417('0x9a')]('true')>=0x0;})[_0xb417('0x9c')](myreject(_0x34bd10)));}Promise[_0xb417('0x9f')](_0x401b35)[_0xb417('0x3d')](function(_0x2ae1b9){var _0x4353b0=_[_0xb417('0xa0')](_0x2ae1b9);if(_0x4353b0){return _0x383ace(_0x4353b0);}else{_0x5943a6[_0xb417('0x6e')]=_0x1f5a19?utils['CAMPAIGN_STATUS'][_0xb417('0xa1')]:utils[_0xb417('0x69')][_0xb417('0xa2')];return _0x34bd10(msgResponse(_0xb417('0xa3'),'Failure',_0xb417('0xa4')+_0x1f5a19+'\x20'+_0x28ab69+_0xb417('0xa5')+util[_0xb417('0x45')](_0x43f795,{'showHidden':![],'depth':null})+_0xb417('0xa6')+_0x45259c));}})[_0xb417('0x9c')](function(_0x1d58e7){return _0x34bd10(msgResponse(_0xb417('0x8f'),'Failure',JSON[_0xb417('0xa7')](_0x1d58e7)));});});};Dialer[_0xb417('0x19')][_0xb417('0x3b')]=function(){var _0x2d56d3=this;return cmHopper[_0xb417('0xa8')]({'active':![]},{'where':{'active':!![]}})[_0xb417('0x3d')](function(){setInterval(function(){_0x2d56d3[_0xb417('0xa9')]();},0x3e8);});};Dialer['prototype']['syncCampaigns']=function(){var _0x37fd52=this;var _0x132e5b;for(var _0x358f56 in this[_0xb417('0x1e')]){if(typeof this['campaigns'][_0x358f56]!==_0xb417('0xaa')){_0x132e5b=this[_0xb417('0x1e')][_0x358f56];if(utils[_0xb417('0x7c')](_0x132e5b)&&utils['isIVRCampaignActive'](_0x132e5b)){_0x132e5b['sendMessageOneNotActive']=!![];Promise[_0xb417('0xab')]()[_0xb417('0x3d')](checkIsIVRCampaignActive(_0x132e5b))[_0xb417('0x3d')](checkInterval(_0x132e5b))[_0xb417('0x3d')](_0x37fd52[_0xb417('0x8a')](_0x132e5b))[_0xb417('0x3d')](_0x37fd52[_0xb417('0xac')](_0x132e5b[_0xb417('0xad')],_0x132e5b['dialTimezone'],_0x132e5b['name'],_0x132e5b))['then'](_0x37fd52[_0xb417('0xae')](_0x132e5b[_0xb417('0x76')],_0x132e5b['dialTimezone'],_0x132e5b[_0xb417('0x48')],_0x132e5b))[_0xb417('0x3d')](_0x37fd52['launchHandleIvr'](_0x132e5b))[_0xb417('0x9c')](loggerCatchQueueSummary(_0xb417('0xaf'),_0x132e5b));}else{notSendMessagesCampaign(_0x132e5b);}}}};Dialer[_0xb417('0x19')][_0xb417('0xb0')]=function(_0x1dac7b){if(_0x1dac7b[_0xb417('0xb1')]!==_0xb417('0x8')){clearPredictiveAttributes(_0x1dac7b);}switch(_0x1dac7b['dialMethod']){case _0xb417('0xb2'):this['handlePower'](_0x1dac7b,0x1);break;case _0xb417('0xb3'):this[_0xb417('0xb4')](_0x1dac7b,_0x1dac7b[_0xb417('0xb5')]);break;case _0xb417('0x8'):this[_0xb417('0x8')](_0x1dac7b);break;case _0xb417('0xb6'):this[_0xb417('0xb4')](_0x1dac7b,0x1);break;default:logger['error'](_0xb417('0xb7'),_0x1dac7b[_0xb417('0x48')],_0xb417('0xb8'));}};Dialer[_0xb417('0x19')]['ifTime']=function(_0x4d9309,_0x17d5fc){var _0x40c3d4=_0x4d9309['dialTimezone'];var _0x2c31b6=_0x17d5fc?_0x4d9309[_0xb417('0xad')]:_0x4d9309[_0xb417('0x76')][_0xb417('0x77')];logger[_0xb417('0xb9')](_0xb417('0xba'),_0x2c31b6,_0x40c3d4,_0x4d9309[_0xb417('0x48')],util[_0xb417('0x46')]('Voice\x20Queue\x20%s\x20$s',_0x4d9309[_0xb417('0x48')],_0x4d9309['id']));var _0x1e12d3=null;return Interval[_0xb417('0xbb')](_0x2c31b6,_0x40c3d4)[_0xb417('0x3d')](function(_0x58308b){if(_0x58308b===!![]){return _0x58308b;}else{_0x4d9309[_0xb417('0x6e')]=_0x17d5fc?utils[_0xb417('0x69')][_0xb417('0xa1')]:utils[_0xb417('0x69')][_0xb417('0xa2')];_0x1e12d3=msgResponse(_0xb417('0xa3'),_0xb417('0x90'),_0xb417('0xa4')+_0x17d5fc+'\x20'+_0x4d9309[_0xb417('0x48')]+_0xb417('0xa5')+util[_0xb417('0x45')](_0x2c31b6,{'showHidden':![],'depth':null})+'Timezone:\x20'+_0x40c3d4);}if(_0x1e12d3!==null){logger[_0xb417('0xb9')](_0xb417('0xbc'),_0x1e12d3);_0x1e12d3['isGlobal']=_0x17d5fc;throw _0x1e12d3;}})['catch'](function(_0xdecdcb){logger[_0xb417('0x66')](_0xb417('0xbd'),_0xdecdcb);throw msgResponse(_0xb417('0x83'),_0xb417('0x84'),util[_0xb417('0x45')](_0xdecdcb,{'showHidden':![],'depth':null}));});};Dialer[_0xb417('0x19')][_0xb417('0x28')]=function(_0x48b6c3){if(this[_0xb417('0x1d')][_0x48b6c3['queue']]){if(this['uniqueId'][_0x48b6c3[_0xb417('0xbe')]]&&this[_0xb417('0x24')][_0x48b6c3[_0xb417('0xbe')]]['type']!==_0xb417('0xbf')){this['updateOriginated'](this[_0xb417('0x1d')][_0x48b6c3['queue']]);this['uniqueId'][_0x48b6c3[_0xb417('0xbe')]][_0xb417('0xc0')]=moment()['format'](_0xb417('0xc1'));}}};Dialer[_0xb417('0x19')][_0xb417('0x2f')]=function(_0x4e56cf){var _0x2eef04=this['uniqueId'][_0x4e56cf[_0xb417('0xbe')]];if(this[_0xb417('0x1d')][_0x4e56cf[_0xb417('0xc2')]]){if(_0x2eef04&&_0x2eef04[_0xb417('0x41')]!==_0xb417('0xbf')){delete this[_0xb417('0x24')][_0x4e56cf['uniqueid']];this['voiceQueues'][_0x4e56cf[_0xb417('0xc2')]][_0xb417('0xc3')]+=0x1;var _0x3a08c3=new AgentComplete(_0x2eef04,_0x4e56cf);if(_0x4e56cf[_0xb417('0xc4')]===_0xb417('0xc5')){_0x3a08c3[_0xb417('0xc6')]=this[_0xb417('0x1d')][_0x4e56cf['queue']]['dialQueueProject2']&&this['voiceQueues'][_0x4e56cf[_0xb417('0xc2')]][_0xb417('0xc7')]?moment()['format']('YYYY-MM-DD\x20HH:mm:ss'):undefined;}hopperUtils['createHistory'](_0x3a08c3)['catch'](loggerCatch(_0xb417('0xc8')));hopperUtils[_0xb417('0xc9')](_0x3a08c3)['catch'](loggerCatch(_0xb417('0xca')));}}};Dialer[_0xb417('0x19')]['syncQueueCallerAbandon']=function(_0x1c6a93){var _0x328069=this['uniqueId'][_0x1c6a93[_0xb417('0xbe')]];var _0x1e2021=this;var _0x165981=![];var _0x36671b;var _0x4fff88;if(this[_0xb417('0x1d')][_0x1c6a93[_0xb417('0xc2')]]){if(_0x328069&&_0x328069[_0xb417('0x41')]!==_0xb417('0xbf')){delete this[_0xb417('0x24')][_0x1c6a93[_0xb417('0xbe')]];this['updateOriginated'](this['voiceQueues'][_0x1c6a93[_0xb417('0xc2')]]);_0x328069[_0xb417('0xcb')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');var _0x30b0e4=new QueueCallerAbandon(_0x328069,_0x1c6a93);if(utils[_0xb417('0x62')](_0x328069['droptime'],_0x328069['responsetime'])>=_0x328069[_0xb417('0xcc')]){this[_0xb417('0x1d')][_0x1c6a93[_0xb417('0xc2')]][_0xb417('0x51')]+=0x1;this[_0xb417('0x1d')][_0x1c6a93[_0xb417('0xc2')]]['outboundDropCallsDayTimeout']+=0x1;this[_0xb417('0x1d')][_0x1c6a93['queue']][_0xb417('0xcd')]+=0x1;_0x30b0e4[_0xb417('0x6f')]=0xa;_0x30b0e4[_0xb417('0xce')]='Drop';_0x30b0e4[_0xb417('0xcf')]='TIMEOUT';_0x30b0e4[_0xb417('0xc6')]=this[_0xb417('0x1d')][_0x1c6a93[_0xb417('0xc2')]][_0xb417('0xd0')]?moment()['format'](_0xb417('0xc1')):undefined;_0x30b0e4[_0xb417('0xd1')]+=0x1;_0x30b0e4[_0xb417('0xd2')]+=0x1;_0x36671b=this['voiceQueues'][_0x1c6a93[_0xb417('0xc2')]][_0xb417('0xd3')];_0x4fff88=this[_0xb417('0x1d')][_0x1c6a93[_0xb417('0xc2')]]['callAdditionalPhoneAfterMin'];hopperUtils[_0xb417('0xd4')](_0x30b0e4,_0x30b0e4[_0xb417('0x6f')],_0x328069[_0xb417('0xd5')])[_0xb417('0x3d')](function(_0x3ff0c5){_0x165981=_0x3ff0c5[_0xb417('0xd6')]==0x1;if(_0x30b0e4['countdropretry']>=_0x1e2021[_0xb417('0x1d')][_0x1c6a93[_0xb417('0xc2')]][_0xb417('0xd7')]){_0x1e2021['queueCallerAbandonCreateState'](_0x30b0e4,_0x3ff0c5[_0xb417('0xd6')]);}else{hopperUtils[_0xb417('0xd8')]({'active':![],'countdropretry':_0x30b0e4[_0xb417('0xd1')],'scheduledat':moment()['add'](_0x1e2021['voiceQueues'][_0x1c6a93[_0xb417('0xc2')]][_0xb417('0xd3')],'minutes')['format'](_0xb417('0xc1')),'ContactId':_0x328069[_0xb417('0xd9')],'ListId':_0x328069[_0xb417('0xda')],'VoiceQueueId':_0x328069[_0xb417('0xdb')]||undefined,'CampaignId':_0x328069[_0xb417('0xdc')]||undefined})[_0xb417('0x9c')](loggerCatch(_0xb417('0xdd')));var _0x1a45a9=new History(_0x30b0e4);_0x1a45a9[_0xb417('0x6f')]=0xa;_0x1a45a9[_0xb417('0xce')]='Drop';_0x1a45a9[_0xb417('0x71')]=moment()['format'](_0xb417('0xc1'));_0x1a45a9[_0xb417('0x70')]=_0x1a45a9[_0xb417('0x71')];_0x1a45a9['calleridname']=_0x30b0e4[_0xb417('0xde')];_0x1a45a9['calleridnum']=_0x30b0e4[_0xb417('0xdf')];hopperUtils[_0xb417('0xe0')](_0x1a45a9)[_0xb417('0x9c')](loggerCatch('[syncAgentComplete][createHistory][10]'));}})['then'](function(){if(_0x165981)hopperUtils[_0xb417('0xe1')](_0x30b0e4,_0x36671b,_0x4fff88)[_0xb417('0x3d')](function(){return 0x1;});});}else{this[_0xb417('0x1d')][_0x1c6a93[_0xb417('0xc2')]][_0xb417('0xe2')]+=0x1;this[_0xb417('0x1d')][_0x1c6a93[_0xb417('0xc2')]][_0xb417('0xe3')]+=0x1;_0x30b0e4[_0xb417('0x6f')]=0xb;_0x30b0e4[_0xb417('0xce')]=_0xb417('0xe4');_0x30b0e4[_0xb417('0xcf')]=_0xb417('0xe5');_0x30b0e4['countabandonedretry']+=0x1;_0x30b0e4[_0xb417('0xd2')]+=0x1;_0x36671b=this['voiceQueues'][_0x1c6a93['queue']][_0xb417('0xe6')];_0x4fff88=this[_0xb417('0x1d')][_0x1c6a93[_0xb417('0xc2')]][_0xb417('0xe7')];hopperUtils[_0xb417('0xd4')](_0x30b0e4,_0x30b0e4[_0xb417('0x6f')],_0x328069['voiceQueue'])[_0xb417('0x3d')](function(_0x443061){if(_0x30b0e4[_0xb417('0xe8')]>=_0x1e2021['voiceQueues'][_0x1c6a93['queue']][_0xb417('0xe9')]){_0x1e2021[_0xb417('0xea')](_0x30b0e4,_0x443061[_0xb417('0xd6')]);}else{hopperUtils['rescheduleContact']({'active':![],'countabandonedretry':_0x30b0e4['countabandonedretry'],'scheduledat':moment()['add'](_0x1e2021['voiceQueues'][_0x1c6a93[_0xb417('0xc2')]][_0xb417('0xe6')],_0xb417('0xeb'))['format'](_0xb417('0xc1')),'ContactId':_0x328069[_0xb417('0xd9')],'ListId':_0x328069[_0xb417('0xda')],'VoiceQueueId':_0x328069[_0xb417('0xdb')]||undefined,'CampaignId':_0x328069[_0xb417('0xdc')]||undefined})['catch'](loggerCatch(_0xb417('0xec')));var _0x55cad3=new History(_0x30b0e4);_0x55cad3['state']=0xb;_0x55cad3[_0xb417('0xce')]=_0xb417('0xe4');_0x55cad3[_0xb417('0x71')]=moment()[_0xb417('0x46')](_0xb417('0xc1'));_0x55cad3[_0xb417('0x70')]=_0x55cad3['starttime'];_0x55cad3[_0xb417('0xde')]=_0x30b0e4[_0xb417('0xde')];_0x55cad3['calleridnum']=_0x30b0e4['calleridnum'];hopperUtils[_0xb417('0xe0')](_0x55cad3)['catch'](loggerCatch('[syncAgentComplete][createHistory][11]'));}})[_0xb417('0x3d')](function(){if(_0x165981)hopperUtils[_0xb417('0xe1')](_0x30b0e4,_0x36671b,_0x4fff88)['then'](function(){return 0x1;});});}}}};Dialer[_0xb417('0x19')][_0xb417('0x35')]=function(_0x2dd0b9){if(this['actions'][_0x2dd0b9['uniqueid']]){this[_0xb417('0xed')][_0x2dd0b9[_0xb417('0xbe')]]['channel']=_0x2dd0b9['channel'];}if(this[_0xb417('0x24')][_0x2dd0b9[_0xb417('0xbe')]]){this[_0xb417('0x24')][_0x2dd0b9[_0xb417('0xbe')]][_0xb417('0xee')]=_0x2dd0b9[_0xb417('0xee')];}};Dialer[_0xb417('0x19')][_0xb417('0xef')]=function(_0x6a6211){if(!this['actions'][_0x6a6211[_0xb417('0xf0')]]){return;}var _0x51c3ef=this[_0xb417('0x1d')][this[_0xb417('0xed')][_0x6a6211[_0xb417('0xf0')]][_0xb417('0xc2')]][_0xb417('0xf1')]||'rrmemory';if(_0x51c3ef===_0xb417('0xf2')){if(this[_0xb417('0xed')][_0x6a6211[_0xb417('0xf0')]]&&_['isNil'](this['actions'][_0x6a6211[_0xb417('0xf0')]][_0xb417('0xf3')])&&_0x6a6211[_0xb417('0x87')]==='1'&&_0x6a6211['paused']==='0'){if(this['agents'][_0x6a6211['stateinterface']]){if(!this[_0xb417('0x1f')][_0x6a6211[_0xb417('0xf4')]]['locked']){this[_0xb417('0x1f')][_0x6a6211['stateinterface']][_0xb417('0xf3')]=!![];this[_0xb417('0xed')][_0x6a6211[_0xb417('0xf0')]][_0xb417('0xf3')]=!![];this[_0xb417('0xed')][_0x6a6211[_0xb417('0xf0')]][_0xb417('0xf4')]=_0x6a6211[_0xb417('0xf4')];}}}}else if(_0x51c3ef===_0xb417('0xf5')){if(this[_0xb417('0xed')][_0x6a6211['actionid']]){if(this[_0xb417('0x1f')][_0x6a6211['stateinterface']]){this['actions'][_0x6a6211[_0xb417('0xf0')]][_0xb417('0xf4')]=_0x6a6211[_0xb417('0xf4')];if(_[_0xb417('0xf6')](this['queueBooked'][this[_0xb417('0xed')][_0x6a6211[_0xb417('0xf0')]]['queue']])){this[_0xb417('0xf7')][this[_0xb417('0xed')][_0x6a6211[_0xb417('0xf0')]][_0xb417('0xc2')]]=[];}this[_0xb417('0xf7')][this[_0xb417('0xed')][_0x6a6211[_0xb417('0xf0')]]['queue']][_0xb417('0x9d')](_[_0xb417('0xf8')](_[_0xb417('0x75')](this[_0xb417('0xed')][_0x6a6211['actionid']],[_0xb417('0xf9'),_0xb417('0xf4')]),{'status':_0x6a6211[_0xb417('0x87')],'paused':_0x6a6211[_0xb417('0xfa')]}));}}}};Dialer[_0xb417('0x19')]['syncQueueStatusComplete']=function(_0x4700f7){if(!this[_0xb417('0xed')][_0x4700f7[_0xb417('0xf0')]]){return;}var _0x2e43a6=this;var _0x59b505=this[_0xb417('0x1d')][this['actions'][_0x4700f7['actionid']][_0xb417('0xc2')]];var _0x592ad0=_0x59b505[_0xb417('0xf1')]||_0xb417('0xf5');if(_0x592ad0==='roundrobin'){if(this[_0xb417('0xed')][_0x4700f7[_0xb417('0xf0')]]&&this[_0xb417('0xed')][_0x4700f7[_0xb417('0xf0')]][_0xb417('0xf4')]){this['preview'][_0xb417('0xfb')](this[_0xb417('0xed')][_0x4700f7[_0xb417('0xf0')]][_0xb417('0xf9')],this[_0xb417('0xed')][_0x4700f7[_0xb417('0xf0')]]['stateinterface'])[_0xb417('0x9c')](function(_0x5b4043){logger[_0xb417('0x66')]('[Catch][Preview][syncQueueStatusComplete]',util[_0xb417('0x45')](_0x5b4043,{'showHidden':![],'depth':null}));})[_0xb417('0xfc')](function(){_0x2e43a6[_0xb417('0xfd')](_0x2e43a6[_0xb417('0x1d')][_0x2e43a6[_0xb417('0xed')][_0x4700f7[_0xb417('0xf0')]][_0xb417('0xc2')]]);_0x2e43a6[_0xb417('0x1f')][_0x2e43a6[_0xb417('0xed')][_0x4700f7[_0xb417('0xf0')]][_0xb417('0xf4')]][_0xb417('0xf3')]=![];delete _0x2e43a6[_0xb417('0xed')][_0x4700f7[_0xb417('0xf0')]];unlockQueueStatus(_0x59b505);});}else{this[_0xb417('0xfd')](this[_0xb417('0x1d')][this[_0xb417('0xed')][_0x4700f7[_0xb417('0xf0')]][_0xb417('0xc2')]]);hopperUtils[_0xb417('0xd8')]({'active':![],'ContactId':this[_0xb417('0xed')][_0x4700f7['actionid']][_0xb417('0xd9')],'ListId':this[_0xb417('0xed')][_0x4700f7[_0xb417('0xf0')]][_0xb417('0xda')],'VoiceQueueId':this[_0xb417('0xed')][_0x4700f7[_0xb417('0xf0')]]['VoiceQueueId']||undefined,'CampaignId':this['actions'][_0x4700f7[_0xb417('0xf0')]][_0xb417('0xdc')]||undefined})[_0xb417('0x9c')](loggerCatch(_0xb417('0xfe')));delete this[_0xb417('0xed')][_0x4700f7['actionid']];unlockQueueStatus(_0x59b505);}}else if(_0x592ad0==='rrmemory'){var _0x1ae7f4;if(this[_0xb417('0xed')][_0x4700f7['actionid']]&&!_[_0xb417('0x4a')](this[_0xb417('0xf7')][this[_0xb417('0xed')][_0x4700f7[_0xb417('0xf0')]][_0xb417('0xc2')]])){if(this[_0xb417('0xff')][_0x2e43a6[_0xb417('0xed')][_0x4700f7[_0xb417('0xf0')]][_0xb417('0xc2')]]){this[_0xb417('0xff')][_0x2e43a6['actions'][_0x4700f7[_0xb417('0xf0')]]['queue']]=this[_0xb417('0xff')][this[_0xb417('0xed')][_0x4700f7[_0xb417('0xf0')]][_0xb417('0xc2')]]?this[_0xb417('0xff')][this[_0xb417('0xed')][_0x4700f7['actionid']][_0xb417('0xc2')]]:this[_0xb417('0xf7')][this[_0xb417('0xed')][_0x4700f7[_0xb417('0xf0')]][_0xb417('0xc2')]]?this[_0xb417('0xf7')][this[_0xb417('0xed')][_0x4700f7[_0xb417('0xf0')]][_0xb417('0xc2')]][_0xb417('0x100')]||0x0:0x0;}this[_0xb417('0xf7')][this[_0xb417('0xed')][_0x4700f7['actionid']][_0xb417('0xc2')]][_0xb417('0x100')]=this[_0xb417('0xff')][this[_0xb417('0xed')][_0x4700f7['actionid']]['queue']];for(var _0x2523bb=0x0;_0x2523bb<this[_0xb417('0xf7')][this[_0xb417('0xed')][_0x4700f7[_0xb417('0xf0')]][_0xb417('0xc2')]][_0xb417('0x96')];_0x2523bb+=0x1){_0x1ae7f4=rr(this['queueBooked'][this[_0xb417('0xed')][_0x4700f7[_0xb417('0xf0')]][_0xb417('0xc2')]]);this[_0xb417('0xff')][_0x2e43a6[_0xb417('0xed')][_0x4700f7[_0xb417('0xf0')]]['queue']]=this['queueBooked'][this[_0xb417('0xed')][_0x4700f7[_0xb417('0xf0')]][_0xb417('0xc2')]][_0xb417('0x100')];if(_0x1ae7f4['status']==='1'&&_0x1ae7f4[_0xb417('0xfa')]==='0'){break;}}if(!_[_0xb417('0xf6')](_0x1ae7f4)){this[_0xb417('0x1f')][_0x1ae7f4[_0xb417('0xf4')]][_0xb417('0x101')]=_[_0xb417('0x3f')](this['agents'][_0x1ae7f4['stateinterface']][_0xb417('0x101')])?!![]:this['agents'][_0x1ae7f4[_0xb417('0xf4')]][_0xb417('0x101')];}loggerBooked[_0xb417('0x4c')](_0xb417('0x102'),_0x4700f7[_0xb417('0xf0')],_0xb417('0x103'),JSON[_0xb417('0xa7')](_['pick'](this['agents'][_0x1ae7f4[_0xb417('0xf4')]],[_0xb417('0x48'),'unlockRR'])),_0xb417('0x104'),JSON['stringify'](_0x1ae7f4[_0xb417('0xf9')]));if(!_[_0xb417('0xf6')](_0x1ae7f4)&&_0x1ae7f4[_0xb417('0x87')]==='1'&&_0x1ae7f4[_0xb417('0xfa')]==='0'&&this[_0xb417('0x1f')][_0x1ae7f4[_0xb417('0xf4')]][_0xb417('0x101')]){this[_0xb417('0x1f')][_0x1ae7f4[_0xb417('0xf4')]]['unlockRR']=![];this[_0xb417('0xf7')][_0x2e43a6['actions'][_0x4700f7[_0xb417('0xf0')]]['queue']]=[];this[_0xb417('0x1c')][_0xb417('0xfb')](_0x1ae7f4['idHopper'],_0x1ae7f4[_0xb417('0xf4')])[_0xb417('0x9c')](function(_0x3e7205){logger[_0xb417('0x66')](_0xb417('0x105'),util[_0xb417('0x45')](_0x3e7205,{'showHidden':![],'depth':null}));})[_0xb417('0xfc')](function(){_0x2e43a6[_0xb417('0xfd')](_0x2e43a6[_0xb417('0x1d')][_0x2e43a6['actions'][_0x4700f7[_0xb417('0xf0')]][_0xb417('0xc2')]]);setTimeout(function(){_0x2e43a6['agents'][_0x1ae7f4['stateinterface']]['unlockRR']=!![];loggerBooked[_0xb417('0x4c')](_0xb417('0x106'),_0x4700f7['actionid'],_0xb417('0x103'),JSON[_0xb417('0xa7')](_[_0xb417('0x75')](_0x2e43a6['agents'][_0x1ae7f4['stateinterface']],[_0xb417('0x48'),_0xb417('0x101')])),_0xb417('0x104'),JSON['stringify'](_0x1ae7f4[_0xb417('0xf9')]));},0xc7);delete _0x2e43a6[_0xb417('0xed')][_0x4700f7[_0xb417('0xf0')]];unlockQueueStatus(_0x59b505,_0x4700f7[_0xb417('0xf0')]);});}else{loggerBooked[_0xb417('0x4c')](_0xb417('0x107'));this[_0xb417('0xfd')](this[_0xb417('0x1d')][this[_0xb417('0xed')][_0x4700f7['actionid']][_0xb417('0xc2')]]);hopperUtils[_0xb417('0xd8')]({'active':![],'ContactId':this['actions'][_0x4700f7['actionid']][_0xb417('0xd9')],'ListId':this['actions'][_0x4700f7['actionid']]['ListId'],'VoiceQueueId':this['actions'][_0x4700f7[_0xb417('0xf0')]]['VoiceQueueId']||undefined,'CampaignId':this['actions'][_0x4700f7[_0xb417('0xf0')]][_0xb417('0xdc')]||undefined})['catch'](loggerCatch(_0xb417('0xfe')));delete this[_0xb417('0xed')][_0x4700f7['actionid']];unlockQueueStatus(_0x59b505);}}else{loggerBooked[_0xb417('0x4c')](_0xb417('0x108'));this[_0xb417('0xfd')](this['voiceQueues'][this['actions'][_0x4700f7[_0xb417('0xf0')]][_0xb417('0xc2')]]);hopperUtils[_0xb417('0xd8')]({'active':![],'ContactId':this[_0xb417('0xed')][_0x4700f7[_0xb417('0xf0')]][_0xb417('0xd9')],'ListId':this[_0xb417('0xed')][_0x4700f7[_0xb417('0xf0')]][_0xb417('0xda')],'VoiceQueueId':this[_0xb417('0xed')][_0x4700f7[_0xb417('0xf0')]][_0xb417('0xdb')]||undefined,'CampaignId':this[_0xb417('0xed')][_0x4700f7[_0xb417('0xf0')]][_0xb417('0xdc')]||undefined})[_0xb417('0x9c')](loggerCatch(_0xb417('0x109')));delete this[_0xb417('0xed')][_0x4700f7['actionid']];unlockQueueStatus(_0x59b505);}}else{loggerBooked[_0xb417('0x4c')](_0xb417('0x10a'));this[_0xb417('0xfd')](this['voiceQueues'][this['actions'][_0x4700f7[_0xb417('0xf0')]][_0xb417('0xc2')]]);hopperUtils[_0xb417('0xd8')]({'active':![],'ContactId':this[_0xb417('0xed')][_0x4700f7[_0xb417('0xf0')]][_0xb417('0xd9')],'ListId':this[_0xb417('0xed')][_0x4700f7[_0xb417('0xf0')]][_0xb417('0xda')],'VoiceQueueId':this[_0xb417('0xed')][_0x4700f7[_0xb417('0xf0')]][_0xb417('0xdb')]||undefined,'CampaignId':this[_0xb417('0xed')][_0x4700f7[_0xb417('0xf0')]][_0xb417('0xdc')]||undefined})[_0xb417('0x9c')](loggerCatch(_0xb417('0x10b')));delete this[_0xb417('0xed')][_0x4700f7[_0xb417('0xf0')]];unlockQueueStatus(_0x59b505);}};Dialer[_0xb417('0x19')][_0xb417('0x2d')]=function(_0x532653){var _0x1b0117=this[_0xb417('0xed')][_0x532653[_0xb417('0xf0')]];if(_0x1b0117){delete this[_0xb417('0xed')][_0x532653[_0xb417('0xf0')]];_0x1b0117[_0xb417('0x10c')]=moment()[_0xb417('0x46')](_0xb417('0xc1'));var _0x13932b=_0x1b0117[_0xb417('0x41')]===_0xb417('0xbf')?this[_0xb417('0x1e')][_0x1b0117[_0xb417('0xc2')]]:this['voiceQueues'][_0x1b0117[_0xb417('0x10d')]()];if(_0x532653['response']!==_0xb417('0x10e')){this['updateOriginated'](_0x13932b);return this[_0xb417('0x10f')](_0x1b0117,_0x13932b,_0x532653)[_0xb417('0x9c')](loggerCatch(_0xb417('0x110')));}this[_0xb417('0x24')][_0x532653[_0xb417('0xbe')]]=_0x1b0117;}};Dialer[_0xb417('0x19')][_0xb417('0x37')]=function(_0x10e0b6){var _0x4a5f54=this;var _0x460501=this[_0xb417('0x24')][_0x10e0b6[_0xb417('0xbe')]];var _0x2e85ea;if(!_[_0xb417('0xf6')](_0x10e0b6)&&!_[_0xb417('0xf6')](_0x10e0b6[_0xb417('0x111')])&&!_[_0xb417('0xf6')](_0x10e0b6[_0xb417('0x111')][_0xb417('0x112')])&&_0x10e0b6[_0xb417('0x113')]==='xcally-motion-dialer'&&_0x460501){if(_0x460501[_0xb417('0x41')]!=='ivr'&&this['voiceQueues'][_0x460501[_0xb417('0xc2')]][_0xb417('0x114')]&&_0x10e0b6['value']===_0xb417('0x115')){delete this['uniqueId'][_0x10e0b6[_0xb417('0xbe')]];this[_0xb417('0xfd')](this[_0xb417('0x1d')][_0x460501[_0xb417('0xc2')]]);this[_0xb417('0x1d')][_0x460501[_0xb417('0xc2')]][_0xb417('0xc3')]+=0x1;this[_0xb417('0x1d')][_0x460501[_0xb417('0xc2')]]['outboundAnswerAgiCallsDay']+=0x1;_0x2e85ea=new Hangup(_0x460501,_0x10e0b6);_0x2e85ea[_0xb417('0x6f')]=0x12;_0x2e85ea[_0xb417('0xce')]=_0xb417('0x116');_0x2e85ea['membername']='AMD';ami[_0xb417('0x40')]('custom:amd',ut[_0xb417('0x117')](_0x2e85ea,_0xb417('0x118')));this[_0xb417('0x119')](_0x2e85ea,_0xb417('0x11a'),'[syncHangupInAMD]');}if(_0x460501[_0xb417('0x41')]!=='ivr'&&this[_0xb417('0x1d')][_0x460501['queue']][_0xb417('0x114')]&&_0x10e0b6['value']===_0xb417('0x11b')){return new Promise(function(_0x44c32b,_0x1804e0){delete _0x4a5f54[_0xb417('0x24')][_0x10e0b6['uniqueid']];_0x4a5f54[_0xb417('0xfd')](_0x4a5f54[_0xb417('0x1d')][_0x460501[_0xb417('0xc2')]]);_0x4a5f54[_0xb417('0x1d')][_0x460501['queue']][_0xb417('0xc3')]+=0x1;_0x4a5f54[_0xb417('0x1d')][_0x460501[_0xb417('0xc2')]][_0xb417('0x11c')]+=0x1;var _0x15842e=_0x4a5f54['voiceQueues'][_0x460501['queue']];var _0x5e8a09=new Hangup(_0x460501,_0x10e0b6);_0x5e8a09[_0xb417('0x6f')]=0x13;_0x5e8a09['statedesc']=_0xb417('0x11d');_0x5e8a09[_0xb417('0x11e')]=_0xb417('0x11f');_0x5e8a09[_0xb417('0x120')]+=0x1;_0x5e8a09[_0xb417('0xd2')]+=0x1;_0x5e8a09[_0xb417('0x118')]=!![];ami[_0xb417('0x40')](_0xb417('0x121'),ut[_0xb417('0x117')](_0x5e8a09,'amd'));hopperUtils['createHistory'](_0x5e8a09)[_0xb417('0x9c')](loggerCatch(_0xb417('0x122')));if(_0x5e8a09['countbusyretry']+_0x5e8a09[_0xb417('0x123')]+_0x5e8a09[_0xb417('0x124')]+_0x5e8a09[_0xb417('0x125')]+_0x5e8a09[_0xb417('0xd1')]+_0x5e8a09['countabandonedretry']+_0x5e8a09['countmachineretry']+_0x5e8a09[_0xb417('0x126')]>=_0x15842e[_0xb417('0x127')]){_0x4a5f54['stateGlobal'](_0x5e8a09,_0x44c32b,_0x1804e0,_0xb417('0x128'));}else{if(_0x5e8a09['countmachineretry']>=_0x15842e[_0xb417('0x129')]){_0x4a5f54[_0xb417('0x12a')](_0x5e8a09,_0x44c32b,_0x1804e0,_0xb417('0x12b'));}else{hopperUtils[_0xb417('0xd8')]({'active':![],'countmachineretry':_0x5e8a09[_0xb417('0x120')],'scheduledat':moment()[_0xb417('0x12c')](_0x15842e[_0xb417('0x12d')],_0xb417('0xeb'))[_0xb417('0x46')](_0xb417('0xc1')),'ContactId':_0x5e8a09[_0xb417('0xd9')],'ListId':_0x5e8a09['ListId'],'VoiceQueueId':_0x5e8a09[_0xb417('0xdb')]||undefined,'CampaignId':_0x5e8a09[_0xb417('0xdc')]||undefined})[_0xb417('0x9c')](loggerCatch('[rescheduleContact][Machine]'));_0x44c32b({'reschedule':0x1});}}});}if(_0x460501[_0xb417('0x41')]===_0xb417('0xbf')&&this[_0xb417('0x1e')][_0x460501['queue']]['dialAMDActive']&&_0x10e0b6[_0xb417('0x12e')]===_0xb417('0x115')){delete this['uniqueId'][_0x10e0b6[_0xb417('0xbe')]];this[_0xb417('0xfd')](this[_0xb417('0x1e')][_0x460501[_0xb417('0xc2')]]);_0x2e85ea=new Hangup(_0x460501,_0x10e0b6);_0x2e85ea[_0xb417('0x6f')]=0x12;_0x2e85ea[_0xb417('0xce')]=_0xb417('0x116');_0x2e85ea[_0xb417('0x11e')]=_0xb417('0x11f');ami[_0xb417('0x40')](_0xb417('0x121'),ut[_0xb417('0x117')](_0x2e85ea,_0xb417('0x118')));this[_0xb417('0x119')](_0x2e85ea,_0xb417('0x12f'),'[syncHangupInAMDIvr]');}if(_0x460501[_0xb417('0x41')]===_0xb417('0xbf')&&this['campaigns'][_0x460501[_0xb417('0xc2')]][_0xb417('0x114')]&&_0x10e0b6[_0xb417('0x12e')]===_0xb417('0x11b')){return new Promise(function(_0x96a5fa,_0x44a529){delete _0x4a5f54[_0xb417('0x24')][_0x10e0b6[_0xb417('0xbe')]];_0x4a5f54[_0xb417('0xfd')](_0x4a5f54[_0xb417('0x1e')][_0x460501[_0xb417('0xc2')]]);_0x4a5f54[_0xb417('0x1e')][_0x460501[_0xb417('0xc2')]][_0xb417('0xc3')]+=0x1;_0x4a5f54[_0xb417('0x1e')][_0x460501[_0xb417('0xc2')]][_0xb417('0x11c')]+=0x1;var _0x2f79ea=_0x4a5f54[_0xb417('0x1e')][_0x460501[_0xb417('0xc2')]];var _0x1b8b59=new Hangup(_0x460501,_0x10e0b6);_0x1b8b59[_0xb417('0x6f')]=0x13;_0x1b8b59[_0xb417('0xce')]=_0xb417('0x11d');_0x1b8b59[_0xb417('0x11e')]=_0xb417('0x11f');_0x1b8b59[_0xb417('0x120')]+=0x1;_0x1b8b59[_0xb417('0xd2')]+=0x1;_0x1b8b59[_0xb417('0x118')]=!![];ami[_0xb417('0x40')]('custom:amd',ut[_0xb417('0x117')](_0x1b8b59,_0xb417('0x118')));hopperUtils[_0xb417('0xe0')](_0x1b8b59)[_0xb417('0x9c')](loggerCatch(_0xb417('0x122')));if(_0x1b8b59[_0xb417('0x130')]+_0x1b8b59[_0xb417('0x123')]+_0x1b8b59['countnoanswerretry']+_0x1b8b59['countnosuchnumberretry']+_0x1b8b59[_0xb417('0xd1')]+_0x1b8b59['countabandonedretry']+_0x1b8b59['countmachineretry']+_0x1b8b59[_0xb417('0x126')]>=_0x2f79ea[_0xb417('0x127')]){_0x4a5f54[_0xb417('0x131')](_0x1b8b59,_0x96a5fa,_0x44a529,_0xb417('0x128'));}else{if(_0x1b8b59['countmachineretry']>=_0x2f79ea[_0xb417('0x129')]){_0x4a5f54[_0xb417('0x12a')](_0x1b8b59,_0x96a5fa,_0x44a529,_0xb417('0x12b'));}else{hopperUtils['rescheduleContact']({'active':![],'countmachineretry':_0x1b8b59['countmachineretry'],'scheduledat':moment()[_0xb417('0x12c')](_0x2f79ea['dialMachineRetryFrequency'],'minutes')[_0xb417('0x46')](_0xb417('0xc1')),'ContactId':_0x1b8b59[_0xb417('0xd9')],'ListId':_0x1b8b59[_0xb417('0xda')],'VoiceQueueId':_0x1b8b59[_0xb417('0xdb')]||undefined,'CampaignId':_0x1b8b59['CampaignId']||undefined})['catch'](loggerCatch(_0xb417('0x132')));_0x96a5fa({'reschedule':0x1});}}});}}};Dialer[_0xb417('0x19')][_0xb417('0x34')]=function(_0x32b92a){var _0x27215d=this[_0xb417('0x24')][_0x32b92a[_0xb417('0xbe')]];var _0x12118c;if(_0x27215d&&_0x27215d[_0xb417('0x41')]===_0xb417('0xbf')){delete this[_0xb417('0x24')][_0x32b92a['uniqueid']];this['updateOriginated'](this['campaigns'][_0x27215d['queue']]);this['campaigns'][_0x27215d[_0xb417('0xc2')]][_0xb417('0x133')]+=0x1;_0x12118c=new Hangup(_0x27215d,_0x32b92a);hopperUtils['createHistory'](_0x12118c)[_0xb417('0x9c')](loggerCatch(_0xb417('0x134')));hopperUtils[_0xb417('0xc9')](_0x12118c)['catch'](loggerCatch(_0xb417('0x135')));}if(_0x27215d&&_0x27215d[_0xb417('0x41')]!==_0xb417('0xbf')&&isNotNull(this[_0xb417('0x1d')][_0x27215d[_0xb417('0xc2')]][_0xb417('0x136')])){delete this[_0xb417('0x24')][_0x32b92a[_0xb417('0xbe')]];this[_0xb417('0xfd')](this[_0xb417('0x1d')][_0x27215d['queue']]);this['voiceQueues'][_0x27215d[_0xb417('0xc2')]]['outboundAnswerCallsDay']+=0x1;this[_0xb417('0x1d')][_0x27215d[_0xb417('0xc2')]][_0xb417('0x11c')]+=0x1;_0x12118c=new Hangup(_0x27215d,_0x32b92a);_0x12118c[_0xb417('0x6f')]=0x10;_0x12118c[_0xb417('0xce')]=_0xb417('0x137');_0x12118c[_0xb417('0x11e')]=_0xb417('0x138');hopperUtils[_0xb417('0xe0')](_0x12118c)['catch'](loggerCatch(_0xb417('0x134')));hopperUtils[_0xb417('0xc9')](_0x12118c)['catch'](loggerCatch(_0xb417('0x135')));}if(_0x27215d&&_0x27215d[_0xb417('0x41')]!==_0xb417('0xbf')&&!isNotNull(this[_0xb417('0x1d')][_0x27215d['queue']][_0xb417('0x136')])){delete this['uniqueId'][_0x32b92a[_0xb417('0xbe')]];this[_0xb417('0xfd')](this['voiceQueues'][_0x27215d[_0xb417('0xc2')]]);this[_0xb417('0x1d')][_0x27215d[_0xb417('0xc2')]][_0xb417('0x139')]+=0x1;_0x12118c=new Hangup(_0x27215d,_0x32b92a);_0x12118c[_0xb417('0x6f')]=0xc;_0x12118c[_0xb417('0xce')]=_0x32b92a['cause-txt'];_0x12118c[_0xb417('0x11e')]=_0xb417('0x13a');hopperUtils[_0xb417('0xe0')](_0x12118c)[_0xb417('0x9c')](loggerCatch(_0xb417('0x134')));hopperUtils[_0xb417('0xc9')](_0x12118c)['catch'](loggerCatch('[syncHangupIvr]'));}};Dialer[_0xb417('0x19')][_0xb417('0x13b')]=function(_0x2cf22f){var _0x420f42=this;if(!_0x420f42[_0xb417('0x13c')][_0x2cf22f[_0xb417('0x48')]]){_0x420f42[_0xb417('0x13c')][_0x2cf22f['name']]={'running':![]};}else if(_0x420f42[_0xb417('0x13c')][_0x2cf22f['name']][_0xb417('0x13d')]===!![]){return;}else if(_0x420f42['queuesSummary'][_0x2cf22f['name']][_0xb417('0x13d')]===![]){_0x420f42[_0xb417('0x13c')][_0x2cf22f[_0xb417('0x48')]][_0xb417('0x13d')]=!![];}var _0x4d7ce9=_0x420f42[_0xb417('0x1d')][_0x2cf22f['name']];var _0x3a91ef=_0x4d7ce9[_0xb417('0x6e')]!==utils[_0xb417('0x69')][_0xb417('0x7b')];var _0x9a02bc=utils['isPreviewCampaign'](_0x4d7ce9);_0x4d7ce9[_0xb417('0x13e')]=utils['getQueueCampaignStatusMessage'](_0x4d7ce9,_0x420f42[_0xb417('0x20')]);Promise[_0xb417('0xab')]()[_0xb417('0x3d')](function(){if(_0x4d7ce9[_0xb417('0x13e')]===utils[_0xb417('0x69')]['INACTIVE']){if(_0x3a91ef){clearPredictiveAttributes(_0x4d7ce9);_0x2cf22f[_0xb417('0x25')]=undefined;_0x2cf22f[_0xb417('0x26')]=undefined;}if(_0x4d7ce9['statusMessage']===utils[_0xb417('0x69')][_0xb417('0x7b')]){_0x2cf22f[_0xb417('0x13f')]=0x0;_0x2cf22f['paused']=0x0;_0x2cf22f[_0xb417('0x140')]=0x0;_0x2cf22f['talking']=0x0;_0x2cf22f[_0xb417('0x141')]=0x0;}}else if(_0x4d7ce9['statusMessage']===utils[_0xb417('0x69')][_0xb417('0x142')]&&!_0x9a02bc){return _0x420f42[_0xb417('0x8f')](_0x4d7ce9,!![])[_0xb417('0x3d')](function(){return _0x420f42[_0xb417('0x8f')](_0x4d7ce9,![]);})[_0xb417('0x3d')](function(){return _0x420f42[_0xb417('0xb0')](_0x4d7ce9);})[_0xb417('0x9c')](function(_0x4fedc0){loggerSyncQueueSummary['debug'](_0xb417('0x143'),util[_0xb417('0x45')](_0x4fedc0,{'showHidden':![],'depth':null}));clearPredictiveAttributes(_0x4d7ce9);});}else{clearPredictiveAttributes(_0x4d7ce9);}})[_0xb417('0x3d')](function(){var _0x30c56d=_0x2cf22f[_0xb417('0x144')](_0x4d7ce9);if(_0x30c56d||_0x4d7ce9[_0xb417('0x145')]){_0x4d7ce9['queueSummaryCountersUpdated']=![];_0x2cf22f[_0xb417('0x146')](_0x4d7ce9);Object[_0xb417('0x147')](_0x4d7ce9,_0x2cf22f);emitOutboundVoiceQueueSummary(_0x2cf22f);}_0x420f42[_0xb417('0x13c')][_0x4d7ce9[_0xb417('0x48')]][_0xb417('0x13d')]=![];})[_0xb417('0x9c')](function(_0x3b9ad2){logger['error']('[syncQueueSummary]',util[_0xb417('0x45')](_0x3b9ad2,{'showHidden':![],'depth':null}));_0x420f42[_0xb417('0x13c')][_0x4d7ce9[_0xb417('0x48')]][_0xb417('0x13d')]=![];});};Dialer[_0xb417('0x19')][_0xb417('0x32')]=_[_0xb417('0x148')](function(){var _0x1c7813=_[_0xb417('0x149')](this['voiceQueues'],function(_0x3d42ee){return _0x3d42ee['dialPreviewRecallmeReminder'];});var _0x4361a8=_[_0xb417('0x149')](this[_0xb417('0x1f')],function(_0x370da1){return _0x370da1[_0xb417('0x14a')]&&_0x370da1[_0xb417('0x87')]==='reachable';});if(_0x1c7813[_0xb417('0x96')]>0x0&&_0x4361a8[_0xb417('0x96')]>0x0){return Promise[_0xb417('0xab')]()[_0xb417('0x3d')](cmHopper[_0xb417('0x14b')](_[_0xb417('0x14c')](_0x1c7813,'id'),previewRecallmeReminderInterval,_[_0xb417('0x14c')](_0x4361a8,'id')))[_0xb417('0x3d')](function(_0x5cea2e){for(var _0x10f424=0x0;_0x10f424<_0x5cea2e[_0xb417('0x96')];_0x10f424++){var _0x1dcd39=_0x5cea2e[_0x10f424][_0xb417('0x14d')][_0xb417('0x48')];if(_0x1dcd39)io['to'](util[_0xb417('0x46')](_0xb417('0x14e'),_0x1dcd39))[_0xb417('0x40')]('user:dialPreviewRecallReminder',{'hopper':_0x5cea2e[_0x10f424]});}})[_0xb417('0x9c')](function(_0x944837){logger[_0xb417('0x66')](_0xb417('0x14f'),_0x944837);});}},0x3c*0x3e8,{'leading':!![]});Dialer['prototype'][_0xb417('0x3c')]=function(){var _0x1fa4bf=this;setInterval(function(){_0x1fa4bf['clearZombieChannels'](_0x1fa4bf[_0xb417('0x24')],_0xb417('0x150'));_0x1fa4bf[_0xb417('0x151')](_0x1fa4bf[_0xb417('0xed')],'[actions]');},0x32c8);};Dialer[_0xb417('0x19')][_0xb417('0x151')]=function(_0x459e5a,_0x31a6f8){var _0x4ebbc4=this;for(var _0x18a64e in _0x459e5a){if(typeof _0x459e5a[_0x18a64e]!==_0xb417('0xaa')){this[_0xb417('0x152')][_0xb417('0x1a')](function(){if(!_[_0xb417('0xf6')](_0x459e5a[_0x18a64e])){return ami[_0xb417('0x97')]({'action':_0xb417('0x87'),'channel':_0x459e5a[_0x18a64e][_0xb417('0xee')]})['catch'](function(_0x495f37){if(_0x495f37['message']==='No\x20such\x20channel'){setTimeout(function(){if(_0x459e5a[_0x18a64e]&&_0x459e5a[_0x18a64e]['type']!==_0xb417('0xbf')){_0x4ebbc4[_0xb417('0xfd')](_0x4ebbc4[_0xb417('0x1d')][_0x459e5a[_0x18a64e]['queue']]);logger['error']('[Dialer][checkChannel]',_0x31a6f8,_0x18a64e,_0x459e5a[_0x18a64e]['queue']);delete _0x459e5a[_0x18a64e];}if(_0x459e5a[_0x18a64e]&&_0x459e5a[_0x18a64e][_0xb417('0x41')]===_0xb417('0xbf')){_0x4ebbc4['updateOriginated'](_0x4ebbc4[_0xb417('0x1e')][_0x459e5a[_0x18a64e]['queue']]);logger[_0xb417('0x66')](_0xb417('0x153'),_0x31a6f8,_0x18a64e,_0x459e5a[_0x18a64e][_0xb417('0xc2')]);delete _0x459e5a[_0x18a64e];}},0x2328);}});}});}}};Dialer['prototype'][_0xb417('0x154')]=function(_0x24c07b){return Promise[_0xb417('0xab')]()[_0xb417('0x3d')](voiceQueueRt[_0xb417('0x154')](_0x24c07b))[_0xb417('0x9c')](loggerCatch(_0xb417('0x155')));};Dialer[_0xb417('0x19')][_0xb417('0xfd')]=function(_0x3257b5){if(!_[_0xb417('0x3f')](_0x3257b5)&&_0x3257b5!==null){if(typeof _0x3257b5[_0xb417('0x7f')]!=='undefined'){if(_0x3257b5[_0xb417('0x7f')]>0x0){_0x3257b5[_0xb417('0x7f')]-=0x1;}else{logger[_0xb417('0x66')](_0xb417('0x156'));}}}else{logger[_0xb417('0x66')](_0xb417('0x157'));}};Dialer[_0xb417('0x19')]['loggerHandler']=function(_0xfba3b2,_0x3109cd){var _0x5ee117=this;return function(_0x3ee370){_0x5ee117[_0xb417('0xfd')](_0x3109cd);logger[_0xb417('0x66')](_0xfba3b2,util['inspect'](_0x3ee370,{'showHidden':![],'depth':null}));};};Dialer['prototype'][_0xb417('0x158')]=function(_0x14baaf,_0x29677f,_0x39dd90){var _0x5eec01={'state':0x19,'statedesc':_0xb417('0x159')};this[_0xb417('0xfd')](_0x29677f);this[_0xb417('0x119')](_[_0xb417('0xf8')](_0x5eec01,_[_0xb417('0x75')](_0x39dd90,[_0xb417('0xd9'),_0xb417('0xda'),_0xb417('0x15a'),'VoiceQueueId',_0xb417('0xdc')])),_0xb417('0x15b'),'[emptyContact]');logger['error'](_0x14baaf);};Dialer['prototype'][_0xb417('0x119')]=function(_0x51434e,_0x7f7de0,_0xf1c82e){hopperUtils[_0xb417('0xe0')](_0x51434e)['catch'](loggerCatch(_0x7f7de0));hopperUtils[_0xb417('0xc9')](_0x51434e)[_0xb417('0x9c')](loggerCatch(_0xf1c82e));};Dialer[_0xb417('0x19')][_0xb417('0xea')]=function(_0x158a0c,_0x5420d4){hopperUtils['createHistory'](_0x158a0c)[_0xb417('0x9c')](loggerCatch(_0xb417('0xc8')));if(_0x5420d4==0x0){hopperUtils[_0xb417('0xc9')](_0x158a0c)[_0xb417('0x9c')](loggerCatch('[syncQueueCallerAbandon]\x20[Drop]'));}};Dialer['prototype'][_0xb417('0x14f')]=function(_0x4d0f11){return Promise[_0xb417('0xab')]()[_0xb417('0x3d')](cmHopper[_0xb417('0x14b')](_0x4d0f11['id'],previewRecallmeReminderInterval))[_0xb417('0x3d')](function(_0x1311b0){for(var _0x278cc2=0x0;_0x278cc2<_0x1311b0['length'];_0x278cc2++){var _0x37354a=_0x1311b0[_0x278cc2][_0xb417('0x14d')][_0xb417('0x48')];if(_0x37354a)io['to'](util[_0xb417('0x46')]('user:%s',_0x37354a))['emit'](_0xb417('0x15c'),{'hopper':_0x1311b0[_0x278cc2]});}})[_0xb417('0x9c')](function(){});};Dialer[_0xb417('0x19')][_0xb417('0x15d')]=function(_0x575601){var _0x262291=this;return function(){_0x262291['handleIvr'](_0x575601);};};Dialer[_0xb417('0x19')][_0xb417('0x15e')]=function(_0x50c6fe,_0xac8f0){var _0x2d3927=this;var _0x2ad57a=uuid['v4']();this[_0xb417('0xed')][_0x2ad57a]=new Action(_0x50c6fe,_0xac8f0,_0x2ad57a);return new Promise(function(_0x2a9406,_0x382e00){if(_[_0xb417('0x3f')](_0x50c6fe)&&typeof _0x50c6fe!==_0xb417('0x15f')){return _0x382e00(msgResponse(_0xb417('0x160'),_0xb417('0x90'),_0xb417('0x161')));}if(_[_0xb417('0x3f')](_0xac8f0['phone'])||_0xac8f0[_0xb417('0x162')]===null){return _0x382e00(msgResponse(_0xb417('0x160'),_0xb417('0x90'),'contact\x20is\x20undefine'));}var _0x28c50f={'XMD-CALLERID':_0x2d3927[_0xb417('0xed')][_0x2ad57a][_0xb417('0x163')](),'XMD-AGI':_0x50c6fe[_0xb417('0x136')]?util['format'](_0xb417('0x164'),ipAgi,_0x50c6fe[_0xb417('0x136')]):_0xb417('0x165'),'XMD-AGIAFTER':_0x50c6fe[_0xb417('0xd0')]?util[_0xb417('0x46')](_0xb417('0x164'),ipAgi,_0x50c6fe[_0xb417('0xd0')]):_0xb417('0x165'),'XMD-QUEUE':utils[_0xb417('0x166')](_0x50c6fe)?util['format'](_0xb417('0x167'),_0x50c6fe[_0xb417('0x48')],_0x50c6fe[_0xb417('0x168')]||'',_0x50c6fe[_0xb417('0xc7')]?'c':'',_0x50c6fe[_0xb417('0xcc')]||0x3):_0xb417('0x165'),'XMD-CONTACTID':_0xac8f0[_0xb417('0xd9')],'XMD-CDRTYPE':_0xb417('0x6'),'CALLERID(all)':_0x2d3927[_0xb417('0xed')][_0x2ad57a][_0xb417('0x163')](),'XMD-AMD':_0x50c6fe[_0xb417('0x114')]?_0xb417('0x142'):_0xb417('0x165'),'XMD-DESTINATION':_0xb417('0x169')};if(_0x50c6fe[_0xb417('0x114')]){_0x28c50f[_0xb417('0x16a')]=_0x50c6fe[_0xb417('0x16b')]||0x9c4;_0x28c50f[_0xb417('0x16c')]=_0x50c6fe[_0xb417('0x16d')]||0x5dc;_0x28c50f[_0xb417('0x16e')]=_0x50c6fe[_0xb417('0x16f')]||0x320;_0x28c50f[_0xb417('0x170')]=_0x50c6fe[_0xb417('0x171')]||0x1388;_0x28c50f[_0xb417('0x172')]=_0x50c6fe[_0xb417('0x173')]||0x64;_0x28c50f[_0xb417('0x174')]=_0x50c6fe[_0xb417('0x175')]||0x32;_0x28c50f[_0xb417('0x176')]=_0x50c6fe[_0xb417('0x177')]||0x3;_0x28c50f[_0xb417('0x178')]=_0x50c6fe[_0xb417('0x179')]||0x100;_0x28c50f[_0xb417('0x17a')]=_0x50c6fe[_0xb417('0x17b')]||0x1388;}if(utils[_0xb417('0x166')](_0x50c6fe)){_0x28c50f[_0xb417('0x17c')]=_0xac8f0[_0xb417('0xdb')];}else{_0x28c50f[_0xb417('0x17d')]=_0xac8f0[_0xb417('0xdc')];}for(var _0x59754a in _0xac8f0[_0xb417('0x17e')]){if(typeof _0xac8f0['Contact'][_0x59754a]!==_0xb417('0xaa')){if(isNotNull(_0xac8f0['Contact'][_0x59754a])&&_0x59754a!=='id'&&_0x59754a!==_0xb417('0x17f')&&_0x59754a!==_0xb417('0x180')&&_0x59754a!=='updatedAt'){_0x28c50f[util['format'](_0xb417('0x181'),'XMD-',_['toUpper'](_0x59754a))]=_0xac8f0[_0xb417('0x17e')][_0x59754a];}}}var _0x12a03c=_0x2d3927[_0xb417('0x182')](_0x50c6fe['Trunk'])?utils[_0xb417('0x183')](_0x50c6fe[_0xb417('0x8b')][_0xb417('0x184')],_0x50c6fe[_0xb417('0x185')],_0x50c6fe[_0xb417('0x186')]>0x0?utils[_0xb417('0x187')](_0x50c6fe['dialOriginateCallerIdNumber'],_0x50c6fe[_0xb417('0x186')]):_0x50c6fe['dialOriginateCallerIdNumber']):utils[_0xb417('0x183')](_[_0xb417('0xf6')](_0x50c6fe[_0xb417('0x8c')])?_0x50c6fe[_0xb417('0x8b')][_0xb417('0x184')]:_0x50c6fe[_0xb417('0x8c')]['callerid'],_0x50c6fe[_0xb417('0x185')],_0x50c6fe[_0xb417('0x186')]>0x0?utils[_0xb417('0x187')](_0x50c6fe[_0xb417('0x188')],_0x50c6fe[_0xb417('0x186')]):_0x50c6fe['dialOriginateCallerIdNumber']);if(_0x12a03c){_0x28c50f[_0xb417('0x189')]=_0x2d3927[_0xb417('0xed')][_0x2ad57a][_0xb417('0x18a')]=utils['extractCalleridName'](_0x12a03c);_0x28c50f[_0xb417('0x18b')]=_0xac8f0[_0xb417('0x162')];}_0x50c6fe[_0xb417('0x18c')]=_0x28c50f;return ami[_0xb417('0x97')]({'actionid':_0x2ad57a,'action':_0xb417('0x160'),'channel':_0x2d3927['isTrunkReachable'](_0x50c6fe[_0xb417('0x8b')])?util[_0xb417('0x46')](_0xb417('0x18d'),_0x50c6fe[_0xb417('0x8b')][_0xb417('0x48')],isNotNull(_0x50c6fe['dialPrefix'])?_0x50c6fe[_0xb417('0x18e')]['trim']()||'':'',_0x50c6fe['dialCutDigit']>0x0?_0xac8f0['phone'][_0xb417('0x18f')](_0x50c6fe[_0xb417('0x190')]):_0xac8f0['phone']):util[_0xb417('0x46')](_0xb417('0x18d'),_['isNil'](_0x50c6fe[_0xb417('0x8c')])?_0x50c6fe[_0xb417('0x8b')][_0xb417('0x48')]:_0x50c6fe['TrunkBackup'][_0xb417('0x48')],isNotNull(_0x50c6fe[_0xb417('0x18e')])?_0x50c6fe[_0xb417('0x18e')][_0xb417('0x191')]()||'':'',_0x50c6fe[_0xb417('0x190')]>0x0?_0xac8f0[_0xb417('0x162')][_0xb417('0x18f')](_0x50c6fe[_0xb417('0x190')]):_0xac8f0[_0xb417('0x162')]),'callerid':_0x12a03c,'Exten':_0xb417('0x169'),'Context':_0xb417('0x192'),'Priority':'1','variable':_0x28c50f,'timeout':(_0x50c6fe['dialOriginateTimeout']||0x1e)*0x3e8,'async':!![],'channelid':_0x2ad57a})[_0xb417('0x3d')](function(_0x216ef9){return _0x2a9406(_0x216ef9);})[_0xb417('0x9c')](function(_0x3e7212){_0x50c6fe[_0xb417('0x193')]+=0x1;var _0x527e62=new History(_0x2d3927[_0xb417('0xed')][_0x2ad57a]);logger[_0xb417('0x66')](util[_0xb417('0x46')](_0xb417('0x194'),JSON[_0xb417('0xa7')](_0x3e7212)));_0x527e62[_0xb417('0x6f')]=0xe;_0x527e62[_0xb417('0xce')]='OriginateError';_0x527e62['starttime']=moment()[_0xb417('0x46')](_0xb417('0xc1'));_0x527e62[_0xb417('0x70')]=_0x527e62['starttime'];hopperUtils[_0xb417('0xe0')](_0x527e62)[_0xb417('0x9c')](loggerCatch(_0xb417('0x195')));_0x2d3927[_0xb417('0xc9')](_0x527e62)['catch'](loggerCatch(_0xb417('0x195')))['finally'](function(){delete _0x2d3927[_0xb417('0xed')][_0x2ad57a];return _0x382e00(msgResponse('originate','Error',_0xb417('0x196')));});});});};Dialer['prototype']['checkRetriveMax']=function(_0x4f2611,_0x23b30c,_0x2d4c57){var _0x4c00f9=new History(_0x23b30c);if(_0x4c00f9[_0xb417('0x130')]+_0x4c00f9[_0xb417('0x123')]+_0x4c00f9['countnoanswerretry']+_0x4c00f9[_0xb417('0x125')]+_0x4c00f9[_0xb417('0xd1')]+_0x4c00f9[_0xb417('0xe8')]+_0x4c00f9[_0xb417('0x120')]+_0x4c00f9[_0xb417('0x126')]>=_0x2d4c57[_0xb417('0x127')]-0x1){return!![];}switch(_0x4f2611){case 0x3:if(_0x4c00f9['countnoanswerretry']>=_0x2d4c57[_0xb417('0x197')]-0x1){return!![];}hopperUtils[_0xb417('0xd8')]({'active':![],'countnoanswerretry':_0x4c00f9[_0xb417('0x124')]+=0x1,'scheduledat':moment()[_0xb417('0x12c')](_0x2d4c57[_0xb417('0x198')],_0xb417('0xeb'))[_0xb417('0x46')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x4c00f9[_0xb417('0xd9')],'ListId':_0x4c00f9[_0xb417('0xda')],'VoiceQueueId':_0x4c00f9['VoiceQueueId']||undefined,'CampaignId':_0x4c00f9['CampaignId']||undefined})['catch'](loggerCatch(_0xb417('0x199')));break;case 0x5:if(_0x4c00f9[_0xb417('0x130')]>=_0x2d4c57['dialBusyMaxRetry']-0x1){return!![];}hopperUtils[_0xb417('0xd8')]({'active':![],'countbusyretry':_0x4c00f9['countbusyretry']+=0x1,'scheduledat':moment()['add'](_0x2d4c57[_0xb417('0x19a')],'minutes')[_0xb417('0x46')](_0xb417('0xc1')),'ContactId':_0x4c00f9[_0xb417('0xd9')],'ListId':_0x4c00f9[_0xb417('0xda')],'VoiceQueueId':_0x4c00f9['VoiceQueueId']||undefined,'CampaignId':_0x4c00f9['CampaignId']||undefined})[_0xb417('0x9c')](loggerCatch(_0xb417('0x19b')));break;case 0x8:if(_0x4c00f9[_0xb417('0x123')]>=_0x2d4c57[_0xb417('0x19c')]-0x1){return!![];}hopperUtils[_0xb417('0xd8')]({'active':![],'countcongestionretry':_0x4c00f9['countcongestionretry']+=0x1,'scheduledat':moment()['add'](_0x2d4c57[_0xb417('0x19d')],_0xb417('0xeb'))['format'](_0xb417('0xc1')),'ContactId':_0x4c00f9[_0xb417('0xd9')],'ListId':_0x4c00f9[_0xb417('0xda')],'VoiceQueueId':_0x4c00f9[_0xb417('0xdb')]||undefined,'CampaignId':_0x4c00f9['CampaignId']||undefined})[_0xb417('0x9c')](loggerCatch(_0xb417('0x19e')));break;case 0x0:if(_0x4c00f9['countnosuchnumberretry']>=_0x2d4c57['dialNoSuchNumberMaxRetry']-0x1){return!![];}else{hopperUtils[_0xb417('0xd8')]({'active':![],'countnosuchnumberretry':_0x4c00f9[_0xb417('0x125')]+=0x1,'scheduledat':moment()['add'](_0x2d4c57[_0xb417('0x19f')],'minutes')['format'](_0xb417('0xc1')),'ContactId':_0x4c00f9['ContactId'],'ListId':_0x4c00f9[_0xb417('0xda')],'VoiceQueueId':_0x4c00f9[_0xb417('0xdb')]||undefined,'CampaignId':_0x4c00f9['CampaignId']||undefined})[_0xb417('0x9c')](loggerCatch(_0xb417('0x1a0')));}break;case 0xa:if(_0x4c00f9['countdropretry']>=_0x2d4c57[_0xb417('0xd7')]-0x1){return!![];}hopperUtils[_0xb417('0xd8')]({'active':![],'countdropretry':_0x4c00f9[_0xb417('0xd1')]+=0x1,'scheduledat':moment()[_0xb417('0x12c')](_0x2d4c57[_0xb417('0xd3')],'minutes')[_0xb417('0x46')](_0xb417('0xc1')),'ContactId':_0x4c00f9[_0xb417('0xd9')],'ListId':_0x4c00f9[_0xb417('0xda')],'VoiceQueueId':_0x4c00f9['VoiceQueueId']||undefined,'CampaignId':_0x4c00f9[_0xb417('0xdc')]||undefined})[_0xb417('0x9c')](loggerCatch('[rescheduleContact][Drop]'));break;case 0xb:if(_0x4c00f9[_0xb417('0xe8')]>=_0x2d4c57[_0xb417('0xe9')]-0x1){return!![];}hopperUtils['rescheduleContact']({'active':![],'countabandonedretry':_0x4c00f9[_0xb417('0xe8')]+=0x1,'scheduledat':moment()[_0xb417('0x12c')](_0x2d4c57[_0xb417('0xe6')],_0xb417('0xeb'))[_0xb417('0x46')](_0xb417('0xc1')),'ContactId':_0x4c00f9['ContactId'],'ListId':_0x4c00f9['ListId'],'VoiceQueueId':_0x4c00f9[_0xb417('0xdb')]||undefined,'CampaignId':_0x4c00f9[_0xb417('0xdc')]||undefined})[_0xb417('0x9c')](loggerCatch(_0xb417('0xec')));break;case 0x13:if(_0x4c00f9[_0xb417('0x120')]>=_0x2d4c57['dialMachineMaxRetry']-0x1){return!![];}hopperUtils[_0xb417('0xd8')]({'active':![],'countmachineretry':_0x4c00f9[_0xb417('0x120')]+=0x1,'scheduledat':moment()[_0xb417('0x12c')](_0x2d4c57[_0xb417('0x12d')],_0xb417('0xeb'))['format'](_0xb417('0xc1')),'ContactId':_0x4c00f9['ContactId'],'ListId':_0x4c00f9[_0xb417('0xda')],'VoiceQueueId':_0x4c00f9[_0xb417('0xdb')]||undefined,'CampaignId':_0x4c00f9[_0xb417('0xdc')]||undefined})['catch'](loggerCatch(_0xb417('0x132')));break;case 0x14:if(_0x4c00f9[_0xb417('0x126')]>=_0x2d4c57[_0xb417('0x1a1')]-0x1){return!![];}hopperUtils['rescheduleContact']({'active':![],'countagentrejectretry':_0x4c00f9[_0xb417('0x126')]+=0x1,'scheduledat':moment()[_0xb417('0x12c')](_0x2d4c57['dialAgentRejectRetryFrequency'],_0xb417('0xeb'))[_0xb417('0x46')](_0xb417('0xc1')),'ContactId':_0x4c00f9['ContactId'],'ListId':_0x4c00f9[_0xb417('0xda')],'VoiceQueueId':_0x4c00f9['VoiceQueueId']||undefined,'CampaignId':_0x4c00f9[_0xb417('0xdc')]||undefined})[_0xb417('0x9c')](loggerCatch(_0xb417('0x1a2')));break;default:return!![];}};Dialer[_0xb417('0x19')][_0xb417('0x10f')]=function(_0x430c6d,_0x61e30b,_0x343056){var _0x4b9ac0=this;var _0x3f34b8=new History(_0x430c6d);var _0x2a95a1=![];var _0x55506d;var _0x1471de;return new Promise(function(_0x119ff0,_0xb22b4){if(_[_0xb417('0x3f')](_0x61e30b)&&typeof _0x61e30b!==_0xb417('0x15f')){return _0xb22b4(msgResponse(_0xb417('0x1a3'),_0xb417('0x90'),_0xb417('0x1a4')));}if(_[_0xb417('0x3f')](_0x343056)&&typeof _0x343056!==_0xb417('0x15f')){return _0xb22b4(msgResponse(_0xb417('0x1a3'),_0xb417('0x90'),_0xb417('0x1a5')));}hopperUtils[_0xb417('0xd4')](_0x3f34b8,_0x343056['reason'],_0x61e30b)[_0xb417('0x3d')](function(_0x5124ec){if(_0x5124ec[_0xb417('0xd6')]==0x1)_0x2a95a1=!![];switch(_0x343056[_0xb417('0xc4')]){case'0':_0x61e30b[_0xb417('0x1a6')]+=0x1;_0x3f34b8['state']=0x0;_0x3f34b8['statedesc']=_0xb417('0x1a7');_0x3f34b8[_0xb417('0x125')]+=0x1;_0x3f34b8['countglobal']+=0x1;ami['emit']('custom:agentnosuchnumber',ut[_0xb417('0x117')](_0x430c6d,_0xb417('0x1a8')));_0x55506d=_0x61e30b['dialNoSuchNumberRetryFrequency'];_0x1471de=_0x61e30b[_0xb417('0xe7')];hopperUtils['createHistory'](_0x3f34b8)[_0xb417('0x9c')](loggerCatch(_0xb417('0x122')));if(_0x4b9ac0['checkRetriveMax'](0x0,_0x430c6d,_0x61e30b)&&!_0x2a95a1){if(_0x3f34b8[_0xb417('0x125')]>=_0x61e30b[_0xb417('0x1a9')]){_0x4b9ac0[_0xb417('0x12a')](_0x3f34b8,_0x119ff0,_0xb22b4,'reason\x200\x20no\x20such\x20number....');}else{_0x4b9ac0[_0xb417('0x131')](_0x3f34b8,_0x119ff0,_0xb22b4,_0xb417('0x1aa'));}}break;case'3':_0x61e30b[_0xb417('0x1ab')]+=0x1;_0x3f34b8['state']=0x3;_0x3f34b8[_0xb417('0xce')]=_0xb417('0x1ac');_0x3f34b8[_0xb417('0x124')]+=0x1;_0x3f34b8[_0xb417('0xd2')]+=0x1;var _0x1ccbc3=ut['buildNoAnswerEventPayload'](_0x430c6d,_0x61e30b);ami[_0xb417('0x40')](_0xb417('0x1ad'),_0x1ccbc3);_0x55506d=_0x61e30b[_0xb417('0x198')];_0x1471de=_0x61e30b[_0xb417('0xe7')];hopperUtils[_0xb417('0xe0')](_0x3f34b8)['catch'](loggerCatch(_0xb417('0x1ae')));if(_0x4b9ac0[_0xb417('0x1af')](0x3,_0x430c6d,_0x61e30b)&&!_0x2a95a1){if(_0x3f34b8[_0xb417('0x124')]>=_0x61e30b[_0xb417('0x197')]){_0x4b9ac0[_0xb417('0x12a')](_0x3f34b8,_0x119ff0,_0xb22b4,'reason\x203\x20ringing\x20no\x20answer');}else{_0x4b9ac0[_0xb417('0x131')](_0x3f34b8,_0x119ff0,_0xb22b4,_0xb417('0x1b0'));}}break;case'5':_0x61e30b[_0xb417('0x1b1')]+=0x1;_0x3f34b8[_0xb417('0x6f')]=0x5;_0x3f34b8['statedesc']=_0xb417('0x1b2');_0x3f34b8[_0xb417('0x130')]+=0x1;_0x3f34b8[_0xb417('0xd2')]+=0x1;ami[_0xb417('0x40')](_0xb417('0x1b3'),ut[_0xb417('0x117')](_0x430c6d,_0xb417('0x1b4')));_0x55506d=_0x61e30b[_0xb417('0x19a')];_0x1471de=_0x61e30b['callAdditionalPhoneAfterMin'];hopperUtils['createHistory'](_0x3f34b8)[_0xb417('0x9c')](loggerCatch(_0xb417('0x1b5')));if(_0x4b9ac0[_0xb417('0x1af')](0x5,_0x430c6d,_0x61e30b)&&!_0x2a95a1){if(_0x3f34b8['countbusyretry']>=_0x61e30b[_0xb417('0x1b6')]){_0x4b9ac0['createStateFinal'](_0x3f34b8,_0x119ff0,_0xb22b4,_0xb417('0x1b7'));}else{_0x4b9ac0['stateGlobal'](_0x3f34b8,_0x119ff0,_0xb22b4,_0xb417('0x1b7'));}}break;case'8':_0x61e30b[_0xb417('0x1b8')]+=0x1;_0x3f34b8[_0xb417('0x6f')]=0x8;_0x3f34b8[_0xb417('0xce')]=_0xb417('0x1b9');_0x3f34b8[_0xb417('0x123')]+=0x1;_0x3f34b8[_0xb417('0xd2')]+=0x1;_0x55506d=_0x61e30b[_0xb417('0x19d')];_0x1471de=_0x61e30b[_0xb417('0xe7')];ami[_0xb417('0x40')]('custom:agentcongestion',ut[_0xb417('0x117')](_0x430c6d,_0xb417('0x1ba')));hopperUtils['createHistory'](_0x3f34b8)[_0xb417('0x9c')](loggerCatch('[syncAgentComplete][createHistory][8]'));if(_0x4b9ac0[_0xb417('0x1af')](0x8,_0x430c6d,_0x61e30b)&&!_0x2a95a1){if(_0x3f34b8['countcongestionretry']>=_0x61e30b[_0xb417('0x19c')]){_0x4b9ac0[_0xb417('0x12a')](_0x3f34b8,_0x119ff0,_0xb22b4,_0xb417('0x1bb'));}else{_0x4b9ac0[_0xb417('0x131')](_0x3f34b8,_0x119ff0,_0xb22b4,_0xb417('0x1bb'));}}break;case'11':_0x61e30b['outboundAbandonedCallsDay']+=0x1;_0x3f34b8[_0xb417('0x6f')]=0xb;_0x3f34b8['statedesc']=_0xb417('0xe4');_0x3f34b8[_0xb417('0xe8')]+=0x1;_0x3f34b8[_0xb417('0xd2')]+=0x1;_0x55506d=_0x61e30b['dialAbandonedRetryFrequency'];_0x1471de=_0x61e30b[_0xb417('0xe7')];hopperUtils['createHistory'](_0x3f34b8)['catch'](loggerCatch('[syncAgentComplete][createHistory][11]'));if(_0x4b9ac0[_0xb417('0x1af')](0xb,_0x430c6d,_0x61e30b)&&!_0x2a95a1){if(_0x3f34b8['countabandonedretry']>=_0x61e30b[_0xb417('0xe9')]){_0x4b9ac0[_0xb417('0x12a')](_0x3f34b8,_0x119ff0,_0xb22b4,_0xb417('0x1bc'));}else{_0x4b9ac0[_0xb417('0x131')](_0x3f34b8,_0x119ff0,_0xb22b4,_0xb417('0x1bc'));}}break;case'20':_0x61e30b['outboundRejectCallsDay']+=0x1;_0x3f34b8[_0xb417('0x6f')]=0x14;_0x3f34b8[_0xb417('0xce')]=_0xb417('0x1bd');_0x3f34b8[_0xb417('0x126')]+=0x1;_0x3f34b8[_0xb417('0xd2')]+=0x1;_0x55506d=_0x61e30b[_0xb417('0x1be')];_0x1471de=_0x61e30b[_0xb417('0xe7')];ami[_0xb417('0x40')](_0xb417('0x1bf'),ut[_0xb417('0x117')](_0x430c6d,'agentreject'));hopperUtils[_0xb417('0xe0')](_0x3f34b8)['catch'](loggerCatch(_0xb417('0x1c0')));if(_0x4b9ac0['checkRetriveMax'](0x14,_0x430c6d,_0x61e30b)&&!_0x2a95a1){if(_0x3f34b8['countagentrejectretry']>=_0x61e30b[_0xb417('0x1a1')]){_0x4b9ac0[_0xb417('0x12a')](_0x3f34b8,_0x119ff0,_0xb22b4,_0xb417('0x1c1'));}else{_0x4b9ac0[_0xb417('0x131')](_0x3f34b8,_0x119ff0,_0xb22b4,_0xb417('0x1c1'));}}break;default:_0x61e30b['outboundUnknownCallsDay']+=0x1;_0x3f34b8[_0xb417('0x6f')]=0xc;_0x3f34b8[_0xb417('0xce')]=_0x343056['reason'];_0x55506d=_0x61e30b['dialAgentRejectRetryFrequency'];_0x1471de=_0x61e30b[_0xb417('0xe7')];hopperUtils[_0xb417('0xe0')](_0x3f34b8)[_0xb417('0x9c')](loggerCatch(_0xb417('0x1c2')));if(_0x4b9ac0['checkRetriveMax'](_0x343056[_0xb417('0xc4')],_0x430c6d,_0x61e30b)&&!_0x2a95a1){if(_0x3f34b8[_0xb417('0x130')]+_0x3f34b8['countcongestionretry']+_0x3f34b8['countnoanswerretry']+_0x3f34b8[_0xb417('0x125')]+_0x3f34b8[_0xb417('0xd1')]+_0x3f34b8[_0xb417('0xe8')]+_0x3f34b8['countmachineretry']+_0x3f34b8['countagentrejectretry']>=_0x61e30b[_0xb417('0x127')]){_0x4b9ac0[_0xb417('0x131')](_0x3f34b8,_0x119ff0,_0xb22b4,_0x343056[_0xb417('0xc4')]);}else{_0x4b9ac0['createStateFinal'](_0x3f34b8,_0x119ff0,_0xb22b4,_0x343056[_0xb417('0xc4')]);}}}})['then'](function(){if(_0x2a95a1){hopperUtils[_0xb417('0xe1')](_0x3f34b8,_0x55506d,_0x1471de)[_0xb417('0x3d')](function(){return _0x119ff0(0x1);});}});});};Dialer[_0xb417('0x19')][_0xb417('0x131')]=function(_0x2b1266,_0x442b81,_0x38c30f,_0x4dfb5d){var _0x52b508=new Final(_0x2b1266);_0x52b508[_0xb417('0x6f')]=0xf;_0x52b508[_0xb417('0xce')]=_0xb417('0x1c3');this[_0xb417('0x12a')](_0x52b508,_0x442b81,_0x38c30f,_0x4dfb5d);};Dialer[_0xb417('0x19')][_0xb417('0x12a')]=function(_0x4eb53f,_0x5dd831,_0x39f6ce,_0x4ff07f){hopperUtils[_0xb417('0xc9')](_0x4eb53f)['then'](function(){return _0x5dd831(msgResponse(_0xb417('0x1a3'),_0xb417('0x10e'),_0x4ff07f));})[_0xb417('0x9c')](function(){return _0x39f6ce(msgResponse('[moveContactManagedDialer][0]',_0xb417('0x90'),_0xb417('0x1c4')));});};Dialer[_0xb417('0x19')][_0xb417('0x8')]=function(_0x2587c6){var _0x551945=_0x2587c6['dialPredictiveOptimizationPercentage']/0x64;var _0x442968=_0x2587c6['outboundDropCallsDayTimeout']/(_0x2587c6['outboundDropCallsDayTimeout']+_0x2587c6['outboundAnswerCallsDay']);var _0x4e9a75=Math[_0xb417('0x1c5')](_0x2587c6[_0xb417('0x1c6')]*(_0x2587c6['predictiveIntervalMaxThreshold']/0x64));var _0x1a2a48=Math[_0xb417('0x1c5')](_0x2587c6['predictiveIntervalAvailable']*(_0x2587c6['predictiveIntervalMinThreshold']/0x64));var _0x54505e=_0x2587c6[_0xb417('0x13f')]+_0x2587c6[_0xb417('0x1c7')];var _0x266c63=Math[_0xb417('0x1c8')](_0x2587c6[_0xb417('0x5b')]*_0x2587c6[_0xb417('0x61')]*_0x2587c6['predictiveIntervalHitRate']*_0x2587c6[_0xb417('0x1c9')]);if(_[_0xb417('0x3f')](_0x2587c6['startProgressive'])){if(!_[_0xb417('0x3f')](_0x2587c6[_0xb417('0x25')])){_0x2587c6[_0xb417('0x25')]=undefined;loggerPredictive[_0xb417('0x66')](_0xb417('0x1ca'),_0xb417('0x1cb'));}if(!_[_0xb417('0x3f')](_0x2587c6['handlePredictive'])){loggerPredictive['error'](_0xb417('0x1ca'),_0xb417('0x1cc'));clearInterval(_0x2587c6[_0xb417('0x65')]);_0x2587c6[_0xb417('0x65')]=undefined;}_0x2587c6[_0xb417('0x26')]=moment()['format'](_0xb417('0xc1'));loggerPredictive[_0xb417('0x4c')](_0x2587c6['name'],'collection\x20data\x20in\x20progressive\x20at',_0x2587c6[_0xb417('0x26')]);this[_0xb417('0xb4')](_0x2587c6,0x1);}else if(ifInterval(_0x2587c6[_0xb417('0x1cd')],_0x2587c6['startProgressive'])){this[_0xb417('0xb4')](_0x2587c6,0x1);loggerPredictiveCalls[_0xb417('0x4c')]('[startMethodPredictive][StartProgressive][Loop]',_0x2587c6[_0xb417('0x26')],_0x2587c6[_0xb417('0x48')]);_0x2587c6[_0xb417('0x5b')]=0x0;_0x2587c6[_0xb417('0xcd')]=0x0;}else if(_0x551945<_0x442968&&_0x2587c6['dialPredictiveOptimization']===_0xb417('0x1ce')){clearPredictiveAttributes(_0x2587c6);loggerPredictive[_0xb417('0x4c')](_0xb417('0x1cf'),_0xb417('0x1d0'),_0x442968,_0xb417('0x26'),_0x2587c6[_0xb417('0x48')]);}else if(_0x266c63<_0x2587c6[_0xb417('0xcd')]&&_0x2587c6[_0xb417('0x1d1')]===_0xb417('0x1ce')){clearPredictiveAttributes(_0x2587c6);loggerPredictive[_0xb417('0x4c')](_0xb417('0x1d2'),_0xb417('0x1d3'),_0x266c63,_0xb417('0x1d4'),_0x2587c6['predictiveIntervalErlangCallsDroppedCalls'],'startProgressive',_0x2587c6['name']);}else if(!ifInterval(_0x2587c6['dialPredictiveInterval'],_0x2587c6['startProgressive'])&&_[_0xb417('0x3f')](_0x2587c6[_0xb417('0x25')])&&!_[_0xb417('0x3f')](_0x2587c6[_0xb417('0x26')])){_0x2587c6[_0xb417('0x25')]=moment()[_0xb417('0x46')](_0xb417('0xc1'));loggerPredictive[_0xb417('0x4c')](_0x2587c6[_0xb417('0x48')],_0xb417('0x1d5'),_0x2587c6[_0xb417('0x25')]);hopperUtils[_0xb417('0x1d6')](_0x2587c6[_0xb417('0x1cd')])[_0xb417('0x3d')](this['getDataPredictive'](_0x2587c6))['then'](mergeDataErlangB(_0x2587c6))[_0xb417('0x3d')](this[_0xb417('0x1d7')](_0x2587c6))['catch'](loggerCatchPredictive(_0xb417('0x1d8'),_0x2587c6));}else if(!ifInterval(_0x2587c6['dialPredictiveInterval'],_0x2587c6[_0xb417('0x25')])){_0x2587c6[_0xb417('0xcd')]=0x0;_0x2587c6[_0xb417('0x25')]=moment()[_0xb417('0x46')](_0xb417('0xc1'));loggerPredictive['info'](_0x2587c6['name'],_0xb417('0x1d9'),_0x2587c6[_0xb417('0x25')]);clearInterval(_0x2587c6[_0xb417('0x65')]);_0x2587c6[_0xb417('0x65')]=undefined;hopperUtils[_0xb417('0x1d6')](_0x2587c6[_0xb417('0x1cd')])['then'](this['getDataPredictive'](_0x2587c6))[_0xb417('0x3d')](mergeDataErlangB(_0x2587c6))['then'](this[_0xb417('0x1d7')](_0x2587c6))[_0xb417('0x9c')](loggerCatchPredictive(_0xb417('0x1da'),_0x2587c6));}else if(_0x2587c6[_0xb417('0x1c6')]&&_0x54505e<_0x2587c6['predictiveIntervalAvailable']-_0x1a2a48){clearPredictiveAttributes(_0x2587c6);loggerPredictive[_0xb417('0x4c')](_0x2587c6[_0xb417('0x48')],_0xb417('0x1db'),_0x54505e,_0xb417('0x1dc'),_0x2587c6[_0xb417('0x1c6')],'-',_0x1a2a48,'=',_0x2587c6[_0xb417('0x1c6')]-_0x1a2a48,')');}else if(_0x2587c6[_0xb417('0x1c6')]&&_0x54505e>_0x2587c6[_0xb417('0x1c6')]+_0x4e9a75){clearPredictiveAttributes(_0x2587c6);loggerPredictive[_0xb417('0x4c')](_0x2587c6[_0xb417('0x48')],_0xb417('0x1db'),_0x54505e,_0xb417('0x1dd'),_0x2587c6['predictiveIntervalAvailable'],'+',_0x4e9a75,'=',_0x2587c6[_0xb417('0x1c6')]+_0x4e9a75,')');}};Dialer[_0xb417('0x19')][_0xb417('0x1de')]=function(_0x1fe9c5){var _0x4e55ec=this;return function(_0x2651d2){return new Promise(function(_0x393751,_0x4a1465){_[_0xb417('0xf8')](_0x1fe9c5,_0x2651d2[0x0]);if(checkGetDataPredictive(_0x2651d2[0x0])){var _0x4cbe6e=_0x1fe9c5[_0xb417('0x1c6')]=_0x1fe9c5[_0xb417('0x1c7')]+_0x1fe9c5[_0xb417('0x13f')];var _0x200966=_0x1fe9c5[_0xb417('0x1cd')]*0x3c;var _0x38694a=_0x2651d2[0x0]['predictiveIntervalAvgTalktime']+_0x2651d2[0x0][_0xb417('0x53')];var _0x45191c=(_0x2651d2[0x0][_0xb417('0x50')]+_0x2651d2[0x0][_0xb417('0x51')]+_0x2651d2[0x0][_0xb417('0xe2')])/_0x2651d2[0x0][_0xb417('0x4e')];_0x1fe9c5['predictiveIntervalHitRate']=_0x45191c>0x0?_0x45191c:0x1;switch(_0x1fe9c5[_0xb417('0x1d1')]){case'dropRate':var _0x4891c9=_0x1fe9c5['dialPredictiveOptimizationPercentage']/0x64;return _0x4e55ec[_0xb417('0x1df')](_0x4cbe6e,_0x200966,_0x38694a,_0x45191c,_0x4891c9)[_0xb417('0x3d')](function(_0x430578){return _0x393751(_0x430578);});case _0xb417('0x1e0'):var _0xcc1953=_0x1fe9c5[_0xb417('0x1e1')]/0x64;return _0x4e55ec[_0xb417('0x1e2')](_0x4cbe6e,_0x200966,_0x38694a,_0x45191c,_0xcc1953)[_0xb417('0x3d')](function(_0x3836ba){return _0x393751(_0x3836ba);});default:return _0x4a1465(msgResponse('[getDataPredictive]','Failure',_0xb417('0x1e3')));}}else{return _0x4a1465(msgResponse(_0xb417('0x1e4'),_0xb417('0x90'),_0xb417('0x1e5')));}});};};Dialer[_0xb417('0x19')][_0xb417('0x1e6')]=function(_0x23c60f){var _0x2662ff=this;return function(_0x99607d){return new Promise(function(_0x29b1f1,_0x4eb134){_[_0xb417('0xf8')](_0x23c60f,_0x99607d[0x0]);if(checkGetDataPredictive(_0x99607d[0x0])){loggerPredictive[_0xb417('0x4c')](JSON[_0xb417('0xa7')](_0x99607d[0x0]));if(_0x23c60f[_0xb417('0x1d1')]==='dropRate'){return _0x2662ff[_0xb417('0x154')](_0x23c60f['id'])[_0xb417('0x3d')](function(_0x1e70f6){var _0x253331=_0x23c60f['loggedIn']-_0x1e70f6[0x0][_0xb417('0x1e7')];var _0x46015b=_0x23c60f[_0xb417('0x1cd')]*0x3c;var _0x188e99=_0x99607d[0x0][_0xb417('0x55')]+_0x99607d[0x0][_0xb417('0x53')];var _0x59e1d4=(_0x99607d[0x0][_0xb417('0x50')]+_0x99607d[0x0][_0xb417('0x51')]+_0x99607d[0x0]['predictiveIntervalDroppedCallsCallersExit'])/_0x99607d[0x0]['predictiveIntervalTotalCalls'];var _0x1c3c52=_0x23c60f[_0xb417('0x1e1')]/0x64;_0x23c60f[_0xb417('0x1e8')]=_0x1e70f6[0x0][_0xb417('0x1e7')]||0x0;_0x23c60f[_0xb417('0x1e9')]=_0x59e1d4>0x0?_0x59e1d4:0x1;return _0x2662ff[_0xb417('0x1df')](_0x253331,_0x46015b,_0x188e99,_0x59e1d4,_0x1c3c52);})[_0xb417('0x3d')](function(_0x3ebcfa){return _0x29b1f1(_0x3ebcfa);})[_0xb417('0x9c')](function(_0x298f17){return _0x4eb134(msgResponse(_0xb417('0x1ea'),_0xb417('0x90'),JSON['stringify'](_0x298f17)));});}if(_0x23c60f[_0xb417('0x1d1')]===_0xb417('0x1e0')){return _0x2662ff[_0xb417('0x154')](_0x23c60f['id'])[_0xb417('0x3d')](function(_0x35b484){var _0x27a200=_0x23c60f[_0xb417('0x1eb')]-_0x35b484[0x0][_0xb417('0x1e7')];var _0x406cba=_0x23c60f[_0xb417('0x1cd')]*0x3c;var _0x4c716e=_0x99607d[0x0]['predictiveIntervalAvgTalktime']+_0x99607d[0x0][_0xb417('0x53')];var _0x231c73=(_0x99607d[0x0]['predictiveIntervalAnsweredCalls']+_0x99607d[0x0][_0xb417('0x51')]+_0x99607d[0x0][_0xb417('0xe2')])/_0x99607d[0x0][_0xb417('0x4e')];var _0x346b78=_0x23c60f[_0xb417('0x1e1')]/0x64;_0x23c60f[_0xb417('0x1e8')]=_0x35b484[0x0][_0xb417('0x1e7')]||0x0;_0x23c60f['predictiveIntervalHitRate']=_0x231c73>0x0?_0x231c73:0x1;return _0x2662ff[_0xb417('0x1e2')](_0x27a200,_0x406cba,_0x4c716e,_0x231c73,_0x346b78);})[_0xb417('0x3d')](function(_0xb55a2a){return _0x29b1f1(_0xb55a2a);})[_0xb417('0x9c')](function(_0xfe6ab5){return _0x4eb134(msgResponse(_0xb417('0x1ea'),_0xb417('0x90'),JSON['stringify'](_0xfe6ab5)));});}}else{return _0x4eb134(msgResponse(_0xb417('0x1e4'),_0xb417('0x90'),_0xb417('0x1e5')));}});};};Dialer[_0xb417('0x19')][_0xb417('0x1d7')]=function(_0xcc5233){var _0x12a982=this;return function(){var _0x34bf3a=0x0;var _0x34528b=Math[_0xb417('0x1c8')](_0xcc5233[_0xb417('0x5d')]*0x3e8);if(_0x34528b>0x0){_0x34528b=_0x34528b<0x64?0x64:_0x34528b;loggerPredictive[_0xb417('0x4c')](_0xcc5233[_0xb417('0x48')],_0xb417('0x1ec'),_0x34528b,_0xb417('0x1ed'));_0xcc5233[_0xb417('0x65')]=setInterval(function(){_0x12a982[_0xb417('0x65')](_0xcc5233);loggerPredictiveCalls['info'](_0xb417('0x1ee'),_0x34bf3a+=0x1);},_0x34528b);}else{loggerPredictive[_0xb417('0x4c')](_0xcc5233[_0xb417('0x48')],_0xb417('0x1ef'));}};};Dialer[_0xb417('0x19')]['checkContactBlack']=function(_0x4ff495,_0x2c0b4a){var _0x3d3c1f=this;return function(_0x4884bd){if(_[_0xb417('0x4a')](_0x4884bd)){if(_[_0xb417('0xf6')](_0x2c0b4a['UserId'])||!_0x2c0b4a[_0xb417('0x1f0')]){if(_0x4ff495[_0xb417('0xb1')]===_0xb417('0xb6')){_0x4ff495[_0xb417('0x72')]=_['isUndefined'](_0x4ff495['queueStatusComplete'])?!![]:_0x4ff495[_0xb417('0x72')];var _0x5d87b8=uuid['v4']();_0x3d3c1f[_0xb417('0xed')][_0x5d87b8]=new Action(_0x4ff495,_0x2c0b4a,_0x5d87b8);loggerBooked['info']('[booked][checkContactBlack]',_0x5d87b8,_0xb417('0x1f1'),JSON[_0xb417('0xa7')](_0x4ff495['queueStatusComplete']),_0xb417('0x1f2'),_0x4ff495[_0xb417('0x48')]);if(_0x4ff495[_0xb417('0x72')]){_0x4ff495[_0xb417('0x72')]=![];_0x3d3c1f[_0xb417('0xf7')][_0x3d3c1f[_0xb417('0xed')][_0x5d87b8][_0xb417('0xc2')]]=[];ami[_0xb417('0x97')]({'actionid':_0x5d87b8,'action':_0xb417('0x1f3'),'queue':_0x4ff495[_0xb417('0x48')]})['catch'](function(){_0x3d3c1f[_0xb417('0xfd')](_0x4ff495);hopperUtils[_0xb417('0xd8')]({'active':![],'ContactId':_0x3d3c1f[_0xb417('0xed')][_0x5d87b8]['ContactId'],'ListId':_0x3d3c1f['actions'][_0x5d87b8][_0xb417('0xda')],'VoiceQueueId':_0x3d3c1f[_0xb417('0xed')][_0x5d87b8]['VoiceQueueId']||undefined,'CampaignId':_0x3d3c1f[_0xb417('0xed')][_0x5d87b8][_0xb417('0xdc')]||undefined})[_0xb417('0x9c')](loggerCatch(_0xb417('0x1f4')));delete _0x3d3c1f['actions'][_0x5d87b8];});}else{loggerBooked['info']('[booked][checkContactBlack][else]',JSON[_0xb417('0xa7')](_0x4ff495['queueStatusComplete']),'Queue:\x20',_0x4ff495[_0xb417('0x48')]);_0x3d3c1f[_0xb417('0xfd')](_0x4ff495);hopperUtils[_0xb417('0xd8')]({'active':![],'ContactId':_0x3d3c1f['actions'][_0x5d87b8][_0xb417('0xd9')],'ListId':_0x3d3c1f[_0xb417('0xed')][_0x5d87b8]['ListId'],'VoiceQueueId':_0x3d3c1f[_0xb417('0xed')][_0x5d87b8]['VoiceQueueId']||undefined,'CampaignId':_0x3d3c1f['actions'][_0x5d87b8][_0xb417('0xdc')]||undefined})[_0xb417('0x9c')](loggerCatch(_0xb417('0x1f4')));delete _0x3d3c1f[_0xb417('0xed')][_0x5d87b8];}}else{return _0x3d3c1f['actionOriginate'](_0x4ff495,_0x2c0b4a);}}else{if(utils[_0xb417('0x62')](undefined,_0x2c0b4a['scheduledat'])<_0x4ff495[_0xb417('0x1f5')]*0x3c){if(_0x2c0b4a[_0xb417('0x14d')]&&!_0x2c0b4a[_0xb417('0x14d')][_0xb417('0x1f6')]){_0x3d3c1f[_0xb417('0x1c')][_0xb417('0xfb')](_0x2c0b4a['id'])[_0xb417('0xfc')](function(){_0x3d3c1f[_0xb417('0xfd')](_0x4ff495);});}else{hopperUtils[_0xb417('0x1f7')]({'active':![]},_0x2c0b4a['id'],0x1)[_0xb417('0xfc')](function(){_0x3d3c1f[_0xb417('0xfd')](_0x4ff495);});}}else{_0x4ff495['outboundReCallsDay']+=0x1;_0x3d3c1f[_0xb417('0xfd')](_0x4ff495);if(_0x4ff495[_0xb417('0x1f8')]){hopperUtils[_0xb417('0xd8')]({'active':![],'recallme':![],'UserId':null,'ContactId':_0x2c0b4a[_0xb417('0xd9')],'ListId':_0x2c0b4a['ListId'],'VoiceQueueId':_0x2c0b4a[_0xb417('0xdb')]||undefined,'CampaignId':_0x2c0b4a[_0xb417('0xdc')]||undefined})[_0xb417('0x9c')](loggerCatch(_0xb417('0x1f9')));hopperUtils[_0xb417('0xe0')](createObjHistory(_0x4ff495,_0x2c0b4a,utils[_0xb417('0x69')]['QUEUE_RECALL'],0x17,_0xb417('0x1fa')))['catch'](loggerCatch('[Originate][HistoryDialRecallInQueue][historyCatch]'));}else{_0x3d3c1f[_0xb417('0x119')](createObjHistory(_0x4ff495,_0x2c0b4a,utils[_0xb417('0x69')][_0xb417('0x1fb')],0x16,_0xb417('0x1fc')),_0xb417('0x1fd'),'[Originate][HistoryRecallClose]');}}}}else{_0x4ff495[_0xb417('0x1fe')]+=0x1;_0x3d3c1f['saveInDb'](createObjHistory(_0x4ff495,_0x2c0b4a,utils[_0xb417('0x69')]['BLACKLIST'],0xd,_0xb417('0x1ff')),'[Originate][historyBlacklist]',_0xb417('0x200'));throw _0xb417('0x201');}};};Dialer[_0xb417('0x19')]['handleIvr']=function(_0x58ede0){var _0xa03a9b=this;var _0x2b5ca9=_0x58ede0[_0xb417('0x202')]-_0x58ede0[_0xb417('0x7f')]-_0x58ede0[_0xb417('0x203')];emitCampaignSummary(_0x58ede0);if(_0x2b5ca9>0x0){if(_0x2b5ca9>this[_0xb417('0x21')]){_0x2b5ca9=this[_0xb417('0x21')];}_0x58ede0[_0xb417('0x203')]+=_0x2b5ca9;hopperUtils[_0xb417('0x204')](_0x58ede0,_0x2b5ca9)[_0xb417('0x3d')](function(_0xccb454){_0x58ede0[_0xb417('0x203')]-=_0x2b5ca9;_0x58ede0[_0xb417('0x203')]=_0x58ede0[_0xb417('0x203')]>0x0?_0x58ede0[_0xb417('0x203')]:0x0;if(!utils[_0xb417('0x205')](_0xccb454)){_0x58ede0[_0xb417('0x6e')]=utils[_0xb417('0x69')][_0xb417('0x6c')];logger[_0xb417('0x4c')](_0xb417('0x206')+_0x58ede0['name']);}else{_0x58ede0[_0xb417('0x7f')]+=_0xccb454[_0xb417('0x96')];_0x58ede0[_0xb417('0x6e')]=utils[_0xb417('0x69')]['RUNNING'];for(var _0x2ad4b9=0x0;_0x2ad4b9<_0xccb454[_0xb417('0x96')];_0x2ad4b9+=0x1){_0x58ede0[_0xb417('0x207')]+=0x1;if(_[_0xb417('0xf6')](_0xccb454[_0x2ad4b9])||_[_0xb417('0xf6')](_0xccb454[_0x2ad4b9][_0xb417('0x17e')])||_[_0xb417('0xf6')](_0xccb454[_0x2ad4b9][_0xb417('0x162')])){_0xa03a9b[_0xb417('0x158')](_0xb417('0x208'),_0x58ede0,_0xccb454[_0x2ad4b9]);}else{hopperUtils[_0xb417('0x209')](_['pick'](_0xccb454[_0x2ad4b9],['CampaignId',_0xb417('0x162')]))['then'](_0xa03a9b[_0xb417('0x20a')](_0x58ede0,_0xccb454[_0x2ad4b9]))[_0xb417('0x9c')](_0xa03a9b[_0xb417('0x20b')](_0xb417('0x20c'),_0x58ede0));}}}})[_0xb417('0x9c')](loggerGetContactDialer(_0xb417('0x20d'),_0x58ede0,_0x2b5ca9));}};Dialer[_0xb417('0x19')][_0xb417('0xb4')]=function(_0x11c795,_0x3c28b3){var _0x328e98=this;var _0x3999f5=[];if(_0x3c28b3<0x1||_0x11c795[_0xb417('0xb1')]===_0xb417('0xb6')){_0x3c28b3=0x1;}var _0x14614d=Math[_0xb417('0x1c8')](_0x11c795[_0xb417('0x13f')]*_0x3c28b3)-_0x11c795[_0xb417('0x7f')]-_0x11c795[_0xb417('0x203')];if(_0x11c795[_0xb417('0x20e')]>0x0){var _0x147005=_0x11c795[_0xb417('0x20e')]-_0x11c795['originated']-_0x11c795[_0xb417('0x1c7')]-_0x11c795['temp']-_0x11c795[_0xb417('0x141')];if(_0x14614d>_0x147005){_0x14614d=_0x147005;}}if(_0x14614d>0x0){if(_0x11c795[_0xb417('0xb1')]===_0xb417('0xb6')){_0x14614d=0x1;}if(_0x14614d>this[_0xb417('0x21')]){_0x14614d=this[_0xb417('0x21')];}_0x11c795['temp']+=_0x14614d;for(var _0x36e7c5 in this[_0xb417('0x1f')]){if(typeof this[_0xb417('0x1f')][_0x36e7c5]!=='undefined'){if(this['agents'][_0x36e7c5][_0xb417('0x6f')]==='not_inuse'&&this['agents'][_0x36e7c5]['status']===_0xb417('0x88')){_0x3999f5[_0xb417('0x9d')](this['agents'][_0x36e7c5]['id']);}}}hopperUtils[_0xb417('0x20f')](_0x11c795,_0x3999f5,_0x14614d)['then'](function(_0x5e3d31){_0x11c795[_0xb417('0x203')]-=_0x14614d;_0x11c795[_0xb417('0x203')]=_0x11c795[_0xb417('0x203')]>0x0?_0x11c795[_0xb417('0x203')]:0x0;if(!utils['checkContactEmpty'](_0x5e3d31)){hopperUtils[_0xb417('0x210')](_0x11c795)[_0xb417('0x3d')](sendMessageReschedule(_0x11c795))[_0xb417('0x9c')](loggerCatch(_0xb417('0x211')));}else{_0x11c795['originated']+=_0x5e3d31[_0xb417('0x96')];_0x11c795[_0xb417('0x6e')]=_0x11c795[_0xb417('0xb1')]===_0xb417('0xb6')?utils['CAMPAIGN_STATUS'][_0xb417('0x142')]:utils[_0xb417('0x69')][_0xb417('0x212')];for(var _0x1a582b=0x0;_0x1a582b<_0x5e3d31[_0xb417('0x96')];_0x1a582b+=0x1){if(_[_0xb417('0xf6')](_0x5e3d31[_0x1a582b])||_[_0xb417('0xf6')](_0x5e3d31[_0x1a582b][_0xb417('0x17e')])||_[_0xb417('0xf6')](_0x5e3d31[_0x1a582b][_0xb417('0x162')])){_0x328e98[_0xb417('0x158')](_0xb417('0x208'),_0x11c795,_0x5e3d31[_0x1a582b]);}else{hopperUtils[_0xb417('0x213')](_[_0xb417('0x75')](_0x5e3d31[_0x1a582b],[_0xb417('0xdb'),'phone']))[_0xb417('0x3d')](_0x328e98[_0xb417('0x20a')](_0x11c795,_0x5e3d31[_0x1a582b]))[_0xb417('0x9c')](_0x328e98[_0xb417('0x20b')](_0xb417('0x208'),_0x11c795));}}}})['catch'](loggerGetContactDialer(_0xb417('0x214'),_0x11c795,_0x14614d));}};Dialer['prototype']['handlePredictive']=function(_0x2a48cc){if(_0x2a48cc[_0xb417('0x20e')]>0x0){var _0x2b00a8=_0x2a48cc[_0xb417('0x20e')]-_0x2a48cc[_0xb417('0x7f')]-_0x2a48cc[_0xb417('0x1c7')];if(_0x2b00a8>0x0){this[_0xb417('0x215')](_0x2a48cc);}else{loggerPredictiveCalls[_0xb417('0x4c')](_0xb417('0x216'));}}else{this[_0xb417('0x215')](_0x2a48cc);}};Dialer[_0xb417('0x19')]['tryOriginatePredictive']=function(_0x13319c){var _0x2654e4=this;var _0x1d6df6=[];_0x13319c[_0xb417('0x7f')]+=0x1;for(var _0x56201b in this[_0xb417('0x1f')]){if(typeof this[_0xb417('0x1f')][_0x56201b]!==_0xb417('0xaa')){if(this[_0xb417('0x1f')][_0x56201b][_0xb417('0x6f')]===_0xb417('0x217')&&this[_0xb417('0x1f')][_0x56201b]['status']===_0xb417('0x88')){_0x1d6df6[_0xb417('0x9d')](this['agents'][_0x56201b]['id']);}}}return this[_0xb417('0x20f')](_0x13319c['id'],_0x1d6df6,0x1,_0x13319c[_0xb417('0x218')],_0x13319c)[_0xb417('0x3d')](function(_0xacb476){if(!utils[_0xb417('0x205')](_0xacb476)){utils[_0xb417('0x68')](_0x13319c,0x1,0x0);return hopperUtils[_0xb417('0x210')](_0x13319c)['then'](sendMessageReschedule(_0x13319c))['catch'](loggerCatch(_0xb417('0x211')));}else{_0x13319c['message']=utils['CAMPAIGN_STATUS']['RUNNING'];if(_[_0xb417('0xf6')](_0xacb476[0x0])||_[_0xb417('0xf6')](_0xacb476[0x0][_0xb417('0x17e')])||_[_0xb417('0xf6')](_0xacb476[0x0]['phone'])){_0x2654e4[_0xb417('0x158')](_0xb417('0x208'),_0x13319c,_0xacb476[0x0]);}else{return hopperUtils['checkIsBlackList'](_[_0xb417('0x75')](_0xacb476[0x0],[_0xb417('0xdb'),_0xb417('0x162')]))[_0xb417('0x3d')](_0x2654e4['checkContactBlack'](_0x13319c,_0xacb476[0x0]))['catch'](_0x2654e4[_0xb417('0x20b')](_0xb417('0x219'),_0x13319c));}}})[_0xb417('0x9c')](loggerGetContactDialer(_0xb417('0x21a'),_0x13319c,0x1));};Dialer[_0xb417('0x19')][_0xb417('0x1df')]=function(_0x12aa87,_0x559f7e,_0x896267,_0x447898,_0x36407b,_0xe96ffd){loggerPredictive[_0xb417('0x4c')](_0xb417('0x21b'));loggerPredictive[_0xb417('0x4c')](_0xb417('0x21c'),_0x12aa87);loggerPredictive[_0xb417('0x4c')](_0xb417('0x21d'),_0x559f7e);loggerPredictive[_0xb417('0x4c')](_0xb417('0x21e'),_0x896267);loggerPredictive['info'](_0xb417('0x21f'),_0x447898);loggerPredictive['info']('Amax:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x36407b);loggerPredictive[_0xb417('0x4c')](_0xb417('0x56'));return new Promise(function(_0x5f5c5f,_0x568d9c){if(_0x12aa87<=0x0||isNaN(_0x12aa87)){return _0x568d9c(msgResponse('[abandonmentRate]',_0xb417('0x84'),'m\x20=\x20'+_0x12aa87));}if(_0x896267<=0x0||isNaN(_0x896267)){return _0x568d9c(msgResponse(_0xb417('0x220'),'Error',_0xb417('0x221')+_0x896267));}if(_0x447898<=0x0||isNaN(_0x447898)){return _0x568d9c(msgResponse(_0xb417('0x220'),_0xb417('0x84'),_0xb417('0x222')+_0x447898));}if(_0x559f7e<=0x0||isNaN(_0x559f7e)){return _0x568d9c(msgResponse(_0xb417('0x220'),_0xb417('0x84'),_0xb417('0x223')+_0x559f7e));}if(_0x36407b<=0x0||isNaN(_0x36407b)){return _0x568d9c(msgResponse(_0xb417('0x220'),_0xb417('0x84'),'Amax\x20=\x20'+_0x36407b));}_0xe96ffd=_0xe96ffd||0x0;var _0x3323be=0x1/_0x896267;var _0x10a6ce=0x0;var _0x47fd2e=0x0;var _0x44a13c=0x0;var _0x3acc9c=0x0;for(var _0x1b85df=0x0;_0x44a13c<_0x36407b;_0x1b85df+=0x1){_0x47fd2e=_0x1b85df/_0x559f7e;_0x10a6ce=(_0x447898*_0x47fd2e+_0xe96ffd)/_0x3323be;_0x44a13c=utils[_0xb417('0x224')](_0x10a6ce,_0x12aa87);_0x3acc9c=_0x10a6ce/_0x12aa87*(0x1-utils[_0xb417('0x224')](_0x10a6ce,_0x12aa87));}return _0x5f5c5f({'erlangCalls':_0x1b85df,'erlangCallToSecond':_0x559f7e/_0x1b85df,'erlangAbandonmentRate':_0x44a13c,'erlangBusyFactor':_0x3acc9c});});};Dialer[_0xb417('0x19')][_0xb417('0x1e2')]=function(_0x194585,_0x360de5,_0x17629f,_0x1b141f,_0x38b22e,_0x19f8a2){loggerPredictive[_0xb417('0x4c')](_0xb417('0x225'));loggerPredictive[_0xb417('0x4c')](_0xb417('0x21c'),_0x194585);loggerPredictive['info']('Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x360de5);loggerPredictive['info']('Ts:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x17629f);loggerPredictive[_0xb417('0x4c')](_0xb417('0x21f'),_0x1b141f);loggerPredictive[_0xb417('0x4c')](_0xb417('0x226'),_0x38b22e);loggerPredictive['info']('---------------------------');return new Promise(function(_0x1d30b1,_0x493eb2){if(_0x194585<=0x0||isNaN(_0x194585)){return _0x493eb2(msgResponse(_0xb417('0x227'),'Error','m\x20=\x20'+_0x194585));}if(_0x17629f<=0x0||isNaN(_0x17629f)){return _0x493eb2(msgResponse(_0xb417('0x227'),_0xb417('0x84'),_0xb417('0x221')+_0x17629f));}if(_0x1b141f<=0x0||isNaN(_0x1b141f)){return _0x493eb2(msgResponse('[busyFactor]',_0xb417('0x84'),_0xb417('0x222')+_0x1b141f));}if(_0x360de5<=0x0||isNaN(_0x360de5)){return _0x493eb2(msgResponse(_0xb417('0x227'),_0xb417('0x84'),_0xb417('0x223')+_0x360de5));}if(_0x38b22e<=0x0||isNaN(_0x38b22e)){return _0x493eb2(msgResponse(_0xb417('0x227'),_0xb417('0x84'),_0xb417('0x228')+_0x38b22e));}_0x19f8a2=_0x19f8a2||0x0;var _0x58ecd5=0x1/_0x17629f;var _0x192560=0x0;var _0x4ccffa=0x0;var _0x5d891c=0x0;var _0x2d86fc=0x0;for(var _0x2021cd=0x0;_0x2d86fc<_0x38b22e;_0x2021cd+=0x1){_0x4ccffa=_0x2021cd/_0x360de5;_0x192560=(_0x1b141f*_0x4ccffa+_0x19f8a2)/_0x58ecd5;_0x5d891c=utils[_0xb417('0x224')](_0x192560,_0x194585);_0x2d86fc=_0x192560/_0x194585*(0x1-utils[_0xb417('0x224')](_0x192560,_0x194585));}return _0x1d30b1({'erlangCalls':_0x2021cd,'erlangCallToSecond':_0x360de5/_0x2021cd,'erlangAbandonmentRate':_0x5d891c,'erlangBusyFactor':_0x2d86fc});});};module['exports']=Dialer;
\ No newline at end of file
+var _0xbb1c=['dialOriginateCallerIdNumber','getCallerId','callerid','getCallerIdRandom','XMD-ORIGINATECALLERIDNAME','originatecalleridname','XMD-ORIGINATECALLERIDNUM','dialPrefix','trim','dialCutDigit','substring','SIP/%s/%s%s','dialOriginateTimeout','outboundOriginateFailureCallsDay','[originateError]:\x20%s','OriginateError','[originate][error]','originate\x20action\x20Error','checkRetriveMax','dialNoAnswerRetryFrequency','[rescheduleContact][NoAnswer]','dialBusyMaxRetry','[rescheduleContact]\x20[Busy]','dialCongestionMaxRetry','[rescheduleContact]\x20[Congestion]','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','[rescheduleContact][Drop]','[rescheduleContact][Abandoned]','dialAgentRejectMaxRetry','[rescheduleContact][AgentReject]','[callProgressDetecting]','evt\x20is\x20undefine','outboundNoSuchCallsDay','NoSuchNumber','custom:agentnosuchnumber','outboundNoAnswerCallsDay','buildNoAnswerEventPayload','custom:agentnoanswer','[syncAgentComplete][createHistory][3]','dialNoAnswerMaxRetry','reason\x203\x20ringing\x20no\x20answer','outboundBusyCallsDay','Busy','custom:agentbusy','busy','dialBusyRetryFrequency','[syncAgentComplete][createHistory][5]','reason\x205\x20busy','outboundCongestionCallsDay','Congestion','dialCongestionRetryFrequency','custom:agentcongestion','congestion','reason\x208\x20congestion','outboundAbandonedCallsDay','[syncAgentComplete][createHistory][11]','reason\x2011\x20abandoned','outboundRejectCallsDay','AgentReject','dialAgentRejectRetryFrequency','custom:agentreject','agentreject','[syncAgentComplete][createHistory][20]','reason\x2020\x20agentreject','[syncAgentComplete][createHistory][?]','Global','[moveContactManagedDialer][0]','contact\x20not\x20moved','round','predictiveIntervalAvailable','predictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','check\x20predictive\x20is\x20not\x20undefine','check\x20handlePredictive\x20is\x20not\x20undefine','collection\x20data\x20in\x20progressive\x20at','dialPredictiveInterval','[startMethodPredictive][StartProgressive][Loop]','dropRate','[stopMethodPredictive][ReStartProgressive][ExceededDropDay]','Dropped\x20calls\x20day','dialPredictiveOptimization','[stopMethodPredictive][ReStartProgressive][ExceededDropInterval]','Drop\x20in\x20this\x20interval','started\x20in\x20predictive\x20at','avgHandleTime','getDataPredictive','recalculate\x20predictive\x20at','Predictive\x20for\x20every\x20interval','switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',')\x20are\x20less\x20than\x20threshold\x20(',')\x20are\x20more\x20than\x20threshold\x20(','dialPredictiveOptimizationPercentage','abandonmentRate','agentBusyFactor','busyFactor','[getDataPredictive]','Unknown\x20Predictive','check\x20failure','loggedIn','outboundQueuePauses','predictiveIntervalPauses','[CatchErlangB]','startMethodPredictive','milliseconds','[handlePredictive]','checkContactBlack','queueStatusComplete:\x20','Queue:\x20','queuestatus','[unlockOriginate][syncQueueStatusComplete]','scheduledat','dialRecallMeTimeout','voicePause','unlockContact','outboundReCallsDay','dialRecallInQueue','[rescheduleContact][dialRecallInQueue]','QUEUE_RECALL','RecallInQueue','[Originate][HistoryDialRecallInQueue][historyCatch]','RECALL_TIMEOUT','RecallFailedTimeout','[Originate][HistoryRecallClose][historyCatch]','[Originate][HistoryRecallClose]','BLACKLIST','[Originate][historyBlacklist]','[Originate][MoveBlacklist]','inBlackList','limitCalls','temp','getContactDialerIvr','checkContactEmpty','[getContactCampaign2][Empty]','ivrTotalCallsDays','[actionOriginate]\x20','checkIsBlackListIvr','[actionOriginateIvr]\x20','[getContactCampaign2]','not_inuse','getContactDialer','countReScheduled','[countReScheduled]\x20','RUNNING','checkIsBlackList','[getContactDialer2]','dialLimitQueue','tryOriginatePredictive','[handlePredictive][limitChannel]','dialOrderByScheduledAt','[actionOriginatePredictive]\x20','[getContactDialerPredictive]','M:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Ts:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','P:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','m\x20=\x20','[abandonmentRate]','Ts\x20=\x20','interval\x20=\x20','Amax\x20=\x20','erlangb','Interval:\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','exports','util','lodash','./utils','../../../config/environment/','../../../config/logger','dialer','booked','predictive','predictiveCalls','syncQueueSummary','redis','defaults','socket.io-emitter','../rpc/cmHopper','../rpc/setting','../rpc/interval','./models/action','./models/history','./models/final','./models/queueCallerAbandon','XCALLY_IP_AGI','127.0.0.1','prototype','tail','finally','sequence','preview','voiceQueues','trunks','maxNumberOriginate','channels','actions','contactsId','optionPredictive','startPredictive','startProgressive','ivrOriginated','queueBooked','queuesSummary','agentconnect','syncAgentConnect','bind','queuecallerabandon','syncQueueCallerAbandon','originateresponse','syncOriginateResponse','agentcomplete','syncAgentComplete','custom:queuesummary','custom:queuesummarycomplete','syncQueueSummaryComplete','syncHangup','newexten','syncNewExten','varset','syncVarSet','queuemember','syncQueueMember','queuestatuscomplete','syncQueueStatusComplete','loopCampaigns','loopClearZombieChannels','getSettings','then','previewRecallmeReminderInterval','isUndefined','emit','type','outbound','[voiceQueueReport][queuesummary]\x20sending\x20voice_queue:save\x20event:','inspect','format','voice:queue:%s','name','voice_queue:save','isEmpty','-----\x20Stats\x20Predictive\x20---','info','Total\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','Dropped\x20Timeout:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','predictiveIntervalDroppedCallsTimeout','Dropped\x20Exit:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','predictiveIntervalDroppedCallsCallersExit','AVG\x20Hold\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','predictiveIntervalAvgHoldtime','---------------------------','predictiveIntervalAvgTalktime','Avg\x20Hold\x20Time\x20is\x20not\x20enough\x20for\x20predictive','Total\x20Calls\x20are\x20not\x20enough\x20for\x20predictive','History\x20information\x20are\x20empty','---------\x20ErlangB\x20---------','erlangCalls','One\x20call\x20every:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','erlangCallToSecond','Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','erlangAbandonmentRate','erlangBusyFactor','merge','getSeconds','startProgressive\x20value\x20cleared','debug','startPredictive\x20value\x20cleared','handlePredictive','handlePredictive\x20interval\x20cleared','error','stack','checkContactLowerLimitOriginate','contactsRescheduled','message','CAMPAIGN_STATUS','[getContactDialer2][ReScheduled]','NO_AVAILABLE_CONTACTS','[getContactDialer2][Empty]','state','statedesc','endtime','starttime','queueStatusComplete','[unlockQueueStatus][undefined]','stringify','pick','Interval','NULL_INTERVAL','\x20INTERVAL_IS_NULL','Intervals','isIVRCampaignActive','isIVRCampaign','campaign:save','sendMessageOneNotActive','originated','[syncQueueSummary]\x20Campaign\x20Ivr:\x20','is\x20not\x20active','is\x20disactive','[ifTime][Action]','Error','active','SIP/%s','status','reachable','checkIsTrunkReachable','isTrunkReachable','Trunk','TrunkBackup','checkIfTime','ifTimeIvr','checkIfTimeIntervals','ifTime','Failure','EMPTY_INTERVAL','\x20Intervals\x20is\x20empty\x20','timezones','UNKNOWN_TIMEZONE','\x20Timezone\x20unknow\x20','isArray','length','push','Action','command','interval','content','indexOf','true','catch','iftime\x20%s,%s','all','OVERTIME_GLOBAL_INTERVAL','OVERTIME_INTERVAL','[ifTime][promiseAll]','Global:\x20','\x20Interval\x20is\x20overtime:\x20','Timezone:\x20','resetActiveCalls','syncCampaigns','campaigns','undefined','dialGlobalInterval','dialTimezone','checkDialMethod','dialMethod','progressive','handlePower','power','dialPowerLevel','Queue','method\x20not\x20recognized','silly','Voice\x20Queue\x20%s\x20$s','intervalIftime','Dialer::ifTime()\x20errResponse\x20NOT\x20NULL:','isGlobal','uniqueid','uniqueId','ivr','updateOriginated','queue','answertime','YYYY-MM-DD\x20HH:mm:ss','outboundAnswerCallsDay','reason','agent','dialQueueProject2','dialAgiAfterHangupAgent','createHistory','[syncAgentComplete][createHistory]','moveContactManagedDialer','[syncAgentComplete]','droptime','responsetime','outboundDropCallsDayTimeout','predictiveIntervalErlangCallsDroppedCalls','dropreason','TIMEOUT','countglobal','dialDropRetryFrequency','callAdditionalPhoneAfterMin','verifyAdditionalPhones','voiceQueue','countdropretry','dialDropMaxRetry','additional','add','minutes','ContactId','ListId','VoiceQueueId','CampaignId','Drop','calleridname','calleridnum','outboundDropCallsDayCallersExit','Abandoned','CALLEREXIT','countabandonedretry','dialAbandonedRetryFrequency','dialAbandonedMaxRetry','queueCallerAbandonCreateState','rescheduleContact','swapAdditionalPhones','channel','actionid','strategy','roundrobin','isNil','locked','paused','agents','stateinterface','rrmemory','idHopper','run','[Catch][Preview][syncQueueStatusComplete]','queueBookedRR','_rr','unlockRR','[booked][RR]','Agent:\x20','contactAgent-idHopper:\x20','[booked][RR][finaly]','[unlock][syncQueueStatusComplete]','[booked][unlock2]','[booked][unlock3]','[unlock3][syncQueueStatusComplete]','response','Success','callProgressDetecting','[callProgressDetecting]\x20','variable','amdstatus','exten','xcally-motion-dialer','HANGUP','HangupInAMD','membername','AMD','buildObj','[syncHangupInAMD]','dialAMDActive','value','outboundAnswerAgiCallsDay','countmachineretry','amd','custom:amd','[syncAgentComplete][createHistory][0]','countbusyretry','countnoanswerretry','countnosuchnumberretry','countagentrejectretry','dialGlobalMaxRetry','stateGlobal','dialMachineMaxRetry','[rescheduleContact][Machine]','saveInDb','[syncHangupInAMDIvr][createHistory]','MACHINE','Machine','countcongestionretry','reason19\x20machine....','createStateFinal','reason\x2019\x20machine....','dialMachineRetryFrequency','ivrAnswerCallsDay','[syncHangupIvr][createHistory]','dialQueueProject','AnswerAGI','AGI','[syncHangupIvr]','outboundUnknownCallsDay','cause-txt','Unknow','running','INACTIVE','isPreviewCampaign','statusMessage','getQueueCampaignStatusMessage','available','inUse','talking','pTalking','[syncQueueSummary]','compareToOutboundQueue','queueSummaryCountersUpdated','updateReportFromOutboundQueue','filter','handlePreviewRecallNotifications','map','Agent','user:%s','user:dialPreviewRecallReminder','clearZombieChannels','[actions]','No\x20such\x20channel','[Dialer][checkChannel][ivr]','getVoiceQueueRtPauses','resolve','[getVoiceQueueRtPauses]\x20','[updateOriginated]\x20is\x20null\x20or\x20undefined','loggerHandler','emptyContact','notFound','UserId','[emptyContact][createHistory]','[emptyContact]','[syncQueueCallerAbandon]\x20[Drop]','launchHandleIvr','handleIvr','actionOriginate','object','voiceQueue\x20is\x20undefine','phone','originate','contact\x20is\x20undefine','getCaller','\x22agi://%s/square,%s\x22','NONE','isOutboundQueue','\x22%s,%s%s,,,%s\x22','dialQueueOptions','ACTIVE','XMD-AMDINITIALSILENCE','dialAMDInitialSilence','XMD-AMDGREETING','XMD-AMDAFTERGREETINGSILENCE','dialAMDAfterGreetingSilence','XMD-AMDTOTALANALYSISTIME','dialAMDTotalAnalysisTime','XMD-AMDMINWORDLENGTH','XMD-AMDBETWEENWORDSSILENCE','dialAMDBetweenWordsSilence','XMD-AMDMAXIMUMNUMBEROFWORDS','dialAMDMaximumNumberOfWords','XMD-AMDSILENCETHRESHOLD','dialAMDMaximumWordLength','XMD-VOICEQUEUEID','Contact','tags','createdAt','updatedAt','XMD-','toUpper','dialOriginateCallerIdName','dialRandomLastDigitCallerIdNumber'];(function(_0x18617b,_0x3ed0d3){var _0x231f97=function(_0xa222ba){while(--_0xa222ba){_0x18617b['push'](_0x18617b['shift']());}};_0x231f97(++_0x3ed0d3);}(_0xbb1c,0xa8));var _0xcbb1=function(_0x2942c4,_0x5f2fa1){_0x2942c4=_0x2942c4-0x0;var _0x540873=_0xbb1c[_0x2942c4];return _0x540873;};'use strict';var util=require(_0xcbb1('0x0'));var _=require(_0xcbb1('0x1'));var uuid=require('uuid');var moment=require('moment');var rr=require('rr');var Redis=require('ioredis');var utils=require(_0xcbb1('0x2'));var hopperUtils=require('./utils/hopper');var ut=require('../preview/util/util');var config=require(_0xcbb1('0x3'));var logger=require(_0xcbb1('0x4'))(_0xcbb1('0x5'));var loggerBooked=require(_0xcbb1('0x4'))(_0xcbb1('0x6'));var loggerPredictive=require(_0xcbb1('0x4'))(_0xcbb1('0x7'));var loggerPredictiveCalls=require(_0xcbb1('0x4'))(_0xcbb1('0x8'));var loggerSyncQueueSummary=require(_0xcbb1('0x4'))(_0xcbb1('0x9'));var ami=require('../ami');config[_0xcbb1('0xa')]=_[_0xcbb1('0xb')](config[_0xcbb1('0xa')],{'host':'localhost','port':0x18eb});var io=require(_0xcbb1('0xc'))(new Redis(config[_0xcbb1('0xa')]));var cmHopper=require(_0xcbb1('0xd'));var voiceQueueRt=require('../rpc/voiceQueueRt');var RpcSetting=require(_0xcbb1('0xe'));var Interval=require(_0xcbb1('0xf'));var Action=require(_0xcbb1('0x10'));var History=require(_0xcbb1('0x11'));var Final=require(_0xcbb1('0x12'));var AgentComplete=require('./models/agentComplete');var QueueCallerAbandon=require(_0xcbb1('0x13'));var Hangup=require('./models/hangup');var ipAgi=process['env'][_0xcbb1('0x14')]||_0xcbb1('0x15');var previewRecallmeReminderInterval=0x1;var Sequence=function(){};Sequence[_0xcbb1('0x16')]['enqueue']=function(_0x4c93f1){this['tail']=this['tail']?this[_0xcbb1('0x17')][_0xcbb1('0x18')](_0x4c93f1):_0x4c93f1();};function Dialer(_0x18ec60,_0x1e798d){this[_0xcbb1('0x19')]=new Sequence();this[_0xcbb1('0x1a')]=_0x1e798d;this[_0xcbb1('0x1b')]=_0x18ec60[_0xcbb1('0x1b')];this['campaigns']=_0x18ec60['campaigns'];this['agents']=_0x18ec60['agents'];this[_0xcbb1('0x1c')]=_0x18ec60[_0xcbb1('0x1c')];this['maxNumberOriginate']=config[_0xcbb1('0x1d')]||0x2;this[_0xcbb1('0x1e')]={};this[_0xcbb1('0x1f')]={};this[_0xcbb1('0x20')]={};this['uniqueId']={};this[_0xcbb1('0x21')]={};this[_0xcbb1('0x22')]={};this[_0xcbb1('0x23')]={};this[_0xcbb1('0x24')]={};this[_0xcbb1('0x25')]={};this['queueBookedRR']={};this[_0xcbb1('0x26')]={};ami['on'](_0xcbb1('0x27'),this[_0xcbb1('0x28')][_0xcbb1('0x29')](this));ami['on'](_0xcbb1('0x2a'),this[_0xcbb1('0x2b')][_0xcbb1('0x29')](this));ami['on'](_0xcbb1('0x2c'),this[_0xcbb1('0x2d')][_0xcbb1('0x29')](this));ami['on'](_0xcbb1('0x2e'),this[_0xcbb1('0x2f')]['bind'](this));ami['on'](_0xcbb1('0x30'),this['syncQueueSummary'][_0xcbb1('0x29')](this));ami['on'](_0xcbb1('0x31'),this[_0xcbb1('0x32')][_0xcbb1('0x29')](this));ami['on']('hangup',this[_0xcbb1('0x33')]['bind'](this));ami['on'](_0xcbb1('0x34'),this[_0xcbb1('0x35')][_0xcbb1('0x29')](this));ami['on'](_0xcbb1('0x36'),this[_0xcbb1('0x37')][_0xcbb1('0x29')](this));ami['on'](_0xcbb1('0x38'),this[_0xcbb1('0x39')][_0xcbb1('0x29')](this));ami['on'](_0xcbb1('0x3a'),this[_0xcbb1('0x3b')][_0xcbb1('0x29')](this));this[_0xcbb1('0x3c')]();this[_0xcbb1('0x3d')]();RpcSetting[_0xcbb1('0x3e')]()[_0xcbb1('0x3f')](function(_0x1344a3){previewRecallmeReminderInterval=_0x1344a3[_0xcbb1('0x40')];});}function isNotNull(_0x35518b){return _0x35518b!==null&&!_[_0xcbb1('0x41')](_0x35518b);}function msgResponse(_0x3bd046,_0x107dbe,_0x2bb0b5){return{'action':_0x3bd046,'response':_0x107dbe,'message':_0x2bb0b5,'stack':_0x2bb0b5};}function emit(_0x2a658c,_0x28fc56,_0x2001c2){io['to'](_0x2a658c)[_0xcbb1('0x42')](_0x28fc56,_0x2001c2);}function emitOutboundVoiceQueueSummary(_0x4cb57b){if(_0x4cb57b[_0xcbb1('0x43')]===_0xcbb1('0x44')){logger['debug'](_0xcbb1('0x45'),util[_0xcbb1('0x46')](_0x4cb57b,{'showHidden':![],'depth':null}));emit(util[_0xcbb1('0x47')](_0xcbb1('0x48'),_0x4cb57b[_0xcbb1('0x49')]),_0xcbb1('0x4a'),_0x4cb57b);}}function checkGetDataPredictive(_0x4b0a20){if(isNotNull(_0x4b0a20)&&!_[_0xcbb1('0x4b')](_0x4b0a20)){loggerPredictive['info'](_0xcbb1('0x4c'));loggerPredictive[_0xcbb1('0x4d')](_0xcbb1('0x4e'),_0x4b0a20[_0xcbb1('0x4f')]);loggerPredictive[_0xcbb1('0x4d')]('Answered\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x4b0a20[_0xcbb1('0x50')]);loggerPredictive['info'](_0xcbb1('0x51'),_0x4b0a20[_0xcbb1('0x52')]);loggerPredictive[_0xcbb1('0x4d')](_0xcbb1('0x53'),_0x4b0a20[_0xcbb1('0x54')]);loggerPredictive['info'](_0xcbb1('0x55'),_0x4b0a20[_0xcbb1('0x56')]);loggerPredictive[_0xcbb1('0x4d')]('AVG\x20Talk\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x4b0a20['predictiveIntervalAvgTalktime']);loggerPredictive[_0xcbb1('0x4d')](_0xcbb1('0x57'));if(_0x4b0a20['predictiveIntervalTotalCalls']>0x0){if(!_['isUndefined'](_0x4b0a20['predictiveIntervalAvgTalktime'])&&_0x4b0a20[_0xcbb1('0x58')]>0x0){return!![];}loggerPredictive[_0xcbb1('0x4d')]('Avg\x20Talk\x20Time\x20is\x20not\x20enough\x20for\x20predictive');if(!_[_0xcbb1('0x41')](_0x4b0a20[_0xcbb1('0x56')])&&_0x4b0a20[_0xcbb1('0x56')]>0x0){return!![];}loggerPredictive['info'](_0xcbb1('0x59'));}else{loggerPredictive[_0xcbb1('0x4d')](_0xcbb1('0x5a'));}}else{loggerPredictive[_0xcbb1('0x4d')](_0xcbb1('0x5b'));}return![];}function mergeDataErlangB(_0x3e5793){return function(_0x3c92d7){loggerPredictive[_0xcbb1('0x4d')](_0xcbb1('0x5c'));loggerPredictive[_0xcbb1('0x4d')]('Scheduled\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x3c92d7[_0xcbb1('0x5d')]);loggerPredictive[_0xcbb1('0x4d')](_0xcbb1('0x5e'),_0x3c92d7[_0xcbb1('0x5f')]);loggerPredictive[_0xcbb1('0x4d')](_0xcbb1('0x60'),_0x3c92d7[_0xcbb1('0x61')]);loggerPredictive['info']('Agent\x20Busy\x20Factor:\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x3c92d7[_0xcbb1('0x62')]);loggerPredictive[_0xcbb1('0x4d')]('Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x3c92d7['erlangAbandonmentRate']);loggerPredictive['info']('---------------------------');_[_0xcbb1('0x63')](_0x3e5793,_0x3c92d7);};}function ifInterval(_0x38800b,_0x3c4dc7){if(_['isUndefined'](_0x3c4dc7)){return![];}return utils[_0xcbb1('0x64')](undefined,_0x3c4dc7)<_0x38800b*0x3c;}function clearPredictiveAttributes(_0x10beb7){if(_0x10beb7[_0xcbb1('0x23')]){_0x10beb7[_0xcbb1('0x23')]=undefined;loggerPredictive['debug'](_0x10beb7[_0xcbb1('0x49')],_0xcbb1('0x65'));}if(_0x10beb7[_0xcbb1('0x22')]){_0x10beb7['startPredictive']=undefined;loggerPredictive[_0xcbb1('0x66')](_0x10beb7[_0xcbb1('0x49')],_0xcbb1('0x67'));}if(_0x10beb7['handlePredictive']){clearInterval(_0x10beb7[_0xcbb1('0x68')]);_0x10beb7[_0xcbb1('0x68')]=undefined;loggerPredictive[_0xcbb1('0x66')](_0x10beb7[_0xcbb1('0x49')],_0xcbb1('0x69'));}}function loggerCatchPredictive(_0x3f31f5,_0x30c953){return function(_0x5423d2){loggerPredictive[_0xcbb1('0x6a')](_0x30c953['name'],_0x3f31f5);loggerPredictive['error'](_0x5423d2[_0xcbb1('0x6b')]);clearPredictiveAttributes(_0x30c953);};}function loggerCatch(_0x1be155){return function(_0x45e714){logger['error'](_0x1be155,util['inspect'](_0x45e714,{'showHidden':![],'depth':null}));};}function loggerGetContactDialer(_0x57ff67,_0x8fc491,_0x3a4ae4){return function(_0x39903d){utils[_0xcbb1('0x6c')](_0x8fc491,_0x3a4ae4,0x0);logger['error'](_0x57ff67,util[_0xcbb1('0x46')](_0x39903d,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0x3dcba5){return function(_0x49bd8f){if(isNotNull(_0x49bd8f)&&isNotNull(_0x49bd8f[0x0])){if(_0x49bd8f[0x0][_0xcbb1('0x6d')]>0x0){_0x3dcba5[_0xcbb1('0x6e')]=utils[_0xcbb1('0x6f')]['CONTACTS_RESCHEDULED'];logger['info'](_0xcbb1('0x70')+_0x3dcba5[_0xcbb1('0x49')],_0x49bd8f[0x0][_0xcbb1('0x6d')],'contacts');}else{_0x3dcba5[_0xcbb1('0x6e')]=utils[_0xcbb1('0x6f')][_0xcbb1('0x71')];logger[_0xcbb1('0x4d')](_0xcbb1('0x72')+_0x3dcba5['name']);}}};}function createObjHistory(_0x174261,_0x5d1b7e,_0x575a36,_0x27c268,_0x19ccb0){_0x174261[_0xcbb1('0x6e')]=_0x575a36;var _0x290354=new Action(_0x174261,_0x5d1b7e);var _0x4939db=new History(_0x290354);_0x4939db[_0xcbb1('0x73')]=_0x27c268;_0x4939db[_0xcbb1('0x74')]=_0x19ccb0;_0x4939db[_0xcbb1('0x75')]=_0x290354[_0xcbb1('0x76')];return _0x4939db;}function unlockQueueStatus(_0x540a7e,_0x23742f){setTimeout(function(){if(_[_0xcbb1('0x41')](_0x540a7e[_0xcbb1('0x77')])){loggerBooked['error'](_0xcbb1('0x78'),_0x23742f);}_0x540a7e[_0xcbb1('0x77')]=!![];loggerBooked[_0xcbb1('0x4d')]('[booked][unlockQueueStatus]',_0x23742f,JSON[_0xcbb1('0x79')](_[_0xcbb1('0x7a')](_0x540a7e,[_0xcbb1('0x49'),_0xcbb1('0x77')])));},0x1f3);}function checkInterval(_0x55b3fa){return function(){if(!isNotNull(_0x55b3fa[_0xcbb1('0x7b')])){_0x55b3fa[_0xcbb1('0x6e')]=utils[_0xcbb1('0x6f')][_0xcbb1('0x7c')];throw _0x55b3fa[_0xcbb1('0x49')]+_0xcbb1('0x7d');}if(!isNotNull(_0x55b3fa[_0xcbb1('0x7b')][_0xcbb1('0x7e')])){_0x55b3fa[_0xcbb1('0x6e')]=utils['CAMPAIGN_STATUS']['NULL_INTERVAL'];throw _0x55b3fa[_0xcbb1('0x49')]+_0xcbb1('0x7d');}if(!isNotNull(_[_0xcbb1('0x4b')](_0x55b3fa[_0xcbb1('0x7b')]['Intervals']))){_0x55b3fa[_0xcbb1('0x6e')]=utils['CAMPAIGN_STATUS']['NULL_INTERVAL'];throw _0x55b3fa[_0xcbb1('0x49')]+'\x20INTERVAL_IS_NULL';}};}function checkIsIVRCampaignActive(_0xd55cea){return function(){if(!utils[_0xcbb1('0x7f')](_0xd55cea)){_0xd55cea[_0xcbb1('0x6e')]=utils[_0xcbb1('0x6f')]['INACTIVE'];throw _0xd55cea[_0xcbb1('0x49')]+'\x20NOT\x20Active';}};}function emitCampaignSummary(_0x331882){if(utils[_0xcbb1('0x80')](_0x331882)){emit(util['format']('campaign:ivr:%s',_0x331882['name']),_0xcbb1('0x81'),_0x331882);}}function loggerCatchQueueSummary(_0x470fe3,_0x175152){return function(_0x36922f){clearPredictiveAttributes(_0x175152);emitCampaignSummary(_0x175152);loggerSyncQueueSummary[_0xcbb1('0x66')](_0x470fe3,util[_0xcbb1('0x46')](_0x36922f,{'showHidden':![],'depth':null}));};}function notSendMessagesCampaign(_0xf4359b){if(_0xf4359b[_0xcbb1('0x82')]){if(_0xf4359b[_0xcbb1('0x83')]===0x0){_0xf4359b[_0xcbb1('0x82')]=![];_0xf4359b['message']=utils[_0xcbb1('0x6f')]['INACTIVE'];loggerSyncQueueSummary['debug'](_0xcbb1('0x84'),_0xf4359b[_0xcbb1('0x49')],_0xcbb1('0x85'));}else{_0xf4359b[_0xcbb1('0x6e')]=utils[_0xcbb1('0x6f')]['DISACTIVED'];loggerSyncQueueSummary['debug'](_0xcbb1('0x84'),_0xf4359b[_0xcbb1('0x49')],_0xcbb1('0x86'));}emitCampaignSummary(_0xf4359b);}}function myreject(_0x36a02c){return function(_0x24d9cd){return _0x36a02c(msgResponse(_0xcbb1('0x87'),_0xcbb1('0x88'),JSON[_0xcbb1('0x79')](_0x24d9cd)));};}Dialer[_0xcbb1('0x16')]['isTrunkReachable']=function(_0x1e39b3){return!_[_0xcbb1('0x41')](_0x1e39b3)&&_0x1e39b3&&!_[_0xcbb1('0x41')](_0x1e39b3[_0xcbb1('0x49')])&&!_[_0xcbb1('0x41')](_0x1e39b3[_0xcbb1('0x89')])&&_0x1e39b3[_0xcbb1('0x89')]&&(this[_0xcbb1('0x1c')][util['format'](_0xcbb1('0x8a'),_0x1e39b3[_0xcbb1('0x49')])][_0xcbb1('0x8b')]===_0xcbb1('0x8c')||this['trunks'][util[_0xcbb1('0x47')](_0xcbb1('0x8a'),_0x1e39b3[_0xcbb1('0x49')])][_0xcbb1('0x8b')]==='unmonitored');};Dialer['prototype'][_0xcbb1('0x8d')]=function(_0x11d20e){var _0x488946=this;return function(){if(!_0x488946[_0xcbb1('0x8e')](_0x11d20e[_0xcbb1('0x8f')])){if(!_0x488946[_0xcbb1('0x8e')](_0x11d20e[_0xcbb1('0x90')])){_0x11d20e[_0xcbb1('0x6e')]=utils[_0xcbb1('0x6f')]['TRUNK_NOT_REACHABLE'];throw _0x11d20e[_0xcbb1('0x49')]+'\x20trunk\x20is\x20not\x20reachable';}}};};Dialer[_0xcbb1('0x16')][_0xcbb1('0x91')]=function(_0x37fa23,_0x1534c0,_0x4980a8,_0x2c13a6){var _0x151405=this;return function(){var _0x38f785=!![];return _0x151405[_0xcbb1('0x92')](_0x37fa23,_0x1534c0,_0x4980a8,_0x2c13a6,_0x38f785);};};Dialer[_0xcbb1('0x16')][_0xcbb1('0x93')]=function(_0x174634,_0x14b71d,_0x9eb4d8,_0x2a69e3){var _0x29f0fe=this;return function(){var _0x15c2cd=![];return _0x29f0fe[_0xcbb1('0x92')](_0x174634[_0xcbb1('0x7e')],_0x14b71d,_0x9eb4d8,_0x2a69e3,_0x15c2cd);};};Dialer['prototype'][_0xcbb1('0x92')]=function(_0x1e3182,_0x22e0fe,_0x56b5bf,_0x8c5518,_0x43daed){var _0x4d93be=[];return new Promise(function(_0x93947a,_0x46c380){if(!isNotNull(_0x1e3182)){_0x8c5518[_0xcbb1('0x6e')]=utils[_0xcbb1('0x6f')][_0xcbb1('0x7c')];return _0x46c380(msgResponse(_0xcbb1('0x94'),_0xcbb1('0x95'),_0x56b5bf+'\x20Intervals\x20is\x20null\x20'));}if(_[_0xcbb1('0x4b')](_0x1e3182)){_0x8c5518[_0xcbb1('0x6e')]=utils[_0xcbb1('0x6f')][_0xcbb1('0x96')];return _0x46c380(msgResponse(_0xcbb1('0x94'),_0xcbb1('0x95'),_0x56b5bf+_0xcbb1('0x97')));}if(_0x22e0fe&&_['isUndefined'](config[_0xcbb1('0x98')][_0x22e0fe])){_0x8c5518['message']=utils[_0xcbb1('0x6f')][_0xcbb1('0x99')];return _0x46c380(msgResponse(_0xcbb1('0x94'),_0xcbb1('0x95'),_0x56b5bf+_0xcbb1('0x9a')+_0x22e0fe));}if(_[_0xcbb1('0x9b')](_0x1e3182)){for(var _0x5922d9=0x0;_0x5922d9<_0x1e3182[_0xcbb1('0x9c')];_0x5922d9+=0x1){_0x4d93be[_0xcbb1('0x9d')](ami[_0xcbb1('0x9e')]({'action':_0xcbb1('0x9f'),'command':util[_0xcbb1('0x47')]('iftime\x20%s,%s',_0x1e3182[_0x5922d9][_0xcbb1('0xa0')],!_[_0xcbb1('0x41')](config[_0xcbb1('0x98')][_0x22e0fe])?_0x22e0fe:'')})[_0xcbb1('0x3f')](function(_0x219295){return _0x219295[_0xcbb1('0xa1')][_0xcbb1('0xa2')](_0xcbb1('0xa3'))>=0x0;})[_0xcbb1('0xa4')](myreject(_0x46c380)));}}else{_0x4d93be[_0xcbb1('0x9d')](ami[_0xcbb1('0x9e')]({'action':_0xcbb1('0x9f'),'command':util[_0xcbb1('0x47')](_0xcbb1('0xa5'),_0x1e3182,!_[_0xcbb1('0x41')](config['timezones'][_0x22e0fe])?_0x22e0fe:'')})[_0xcbb1('0x3f')](function(_0x756bc5){return _0x756bc5['content']['indexOf']('true')>=0x0;})[_0xcbb1('0xa4')](myreject(_0x46c380)));}Promise[_0xcbb1('0xa6')](_0x4d93be)[_0xcbb1('0x3f')](function(_0x234810){var _0x4dbe01=_['some'](_0x234810);if(_0x4dbe01){return _0x93947a(_0x4dbe01);}else{_0x8c5518[_0xcbb1('0x6e')]=_0x43daed?utils['CAMPAIGN_STATUS'][_0xcbb1('0xa7')]:utils[_0xcbb1('0x6f')][_0xcbb1('0xa8')];return _0x46c380(msgResponse(_0xcbb1('0xa9'),'Failure',_0xcbb1('0xaa')+_0x43daed+'\x20'+_0x56b5bf+_0xcbb1('0xab')+util[_0xcbb1('0x46')](_0x1e3182,{'showHidden':![],'depth':null})+_0xcbb1('0xac')+_0x22e0fe));}})['catch'](function(_0x2cb2e4){return _0x46c380(msgResponse(_0xcbb1('0x94'),_0xcbb1('0x95'),JSON[_0xcbb1('0x79')](_0x2cb2e4)));});});};Dialer[_0xcbb1('0x16')]['loopCampaigns']=function(){var _0x1fb876=this;return cmHopper[_0xcbb1('0xad')]({'active':![]},{'where':{'active':!![]}})[_0xcbb1('0x3f')](function(){setInterval(function(){_0x1fb876[_0xcbb1('0xae')]();},0x3e8);});};Dialer[_0xcbb1('0x16')]['syncCampaigns']=function(){var _0x2e79f3=this;var _0x3d9858;for(var _0x79be53 in this[_0xcbb1('0xaf')]){if(typeof this[_0xcbb1('0xaf')][_0x79be53]!==_0xcbb1('0xb0')){_0x3d9858=this['campaigns'][_0x79be53];if(utils['isIVRCampaign'](_0x3d9858)&&utils[_0xcbb1('0x7f')](_0x3d9858)){_0x3d9858[_0xcbb1('0x82')]=!![];Promise['resolve']()[_0xcbb1('0x3f')](checkIsIVRCampaignActive(_0x3d9858))[_0xcbb1('0x3f')](checkInterval(_0x3d9858))[_0xcbb1('0x3f')](_0x2e79f3[_0xcbb1('0x8d')](_0x3d9858))[_0xcbb1('0x3f')](_0x2e79f3['checkIfTime'](_0x3d9858[_0xcbb1('0xb1')],_0x3d9858[_0xcbb1('0xb2')],_0x3d9858['name'],_0x3d9858))['then'](_0x2e79f3[_0xcbb1('0x93')](_0x3d9858['Interval'],_0x3d9858[_0xcbb1('0xb2')],_0x3d9858[_0xcbb1('0x49')],_0x3d9858))[_0xcbb1('0x3f')](_0x2e79f3['launchHandleIvr'](_0x3d9858))[_0xcbb1('0xa4')](loggerCatchQueueSummary('[syncCampaigns]',_0x3d9858));}else{notSendMessagesCampaign(_0x3d9858);}}}};Dialer[_0xcbb1('0x16')][_0xcbb1('0xb3')]=function(_0x24fc36){if(_0x24fc36['dialMethod']!=='predictive'){clearPredictiveAttributes(_0x24fc36);}switch(_0x24fc36[_0xcbb1('0xb4')]){case _0xcbb1('0xb5'):this[_0xcbb1('0xb6')](_0x24fc36,0x1);break;case _0xcbb1('0xb7'):this[_0xcbb1('0xb6')](_0x24fc36,_0x24fc36[_0xcbb1('0xb8')]);break;case'predictive':this[_0xcbb1('0x7')](_0x24fc36);break;case'booked':this[_0xcbb1('0xb6')](_0x24fc36,0x1);break;default:logger[_0xcbb1('0x6a')](_0xcbb1('0xb9'),_0x24fc36[_0xcbb1('0x49')],_0xcbb1('0xba'));}};Dialer[_0xcbb1('0x16')][_0xcbb1('0x94')]=function(_0x5cde79,_0x1bf60e){var _0x374226=_0x5cde79[_0xcbb1('0xb2')];var _0x15ede3=_0x1bf60e?_0x5cde79[_0xcbb1('0xb1')]:_0x5cde79[_0xcbb1('0x7b')]['Intervals'];logger[_0xcbb1('0xbb')]('Dialer::ifTime()',_0x15ede3,_0x374226,_0x5cde79[_0xcbb1('0x49')],util[_0xcbb1('0x47')](_0xcbb1('0xbc'),_0x5cde79[_0xcbb1('0x49')],_0x5cde79['id']));var _0x5cb43c=null;return Interval[_0xcbb1('0xbd')](_0x15ede3,_0x374226)[_0xcbb1('0x3f')](function(_0x1a24cd){if(_0x1a24cd===!![]){return _0x1a24cd;}else{_0x5cde79[_0xcbb1('0x6e')]=_0x1bf60e?utils['CAMPAIGN_STATUS'][_0xcbb1('0xa7')]:utils[_0xcbb1('0x6f')][_0xcbb1('0xa8')];_0x5cb43c=msgResponse('[ifTime][promiseAll]','Failure','Global:\x20'+_0x1bf60e+'\x20'+_0x5cde79['name']+_0xcbb1('0xab')+util['inspect'](_0x15ede3,{'showHidden':![],'depth':null})+_0xcbb1('0xac')+_0x374226);}if(_0x5cb43c!==null){logger[_0xcbb1('0xbb')](_0xcbb1('0xbe'),_0x5cb43c);_0x5cb43c[_0xcbb1('0xbf')]=_0x1bf60e;throw _0x5cb43c;}})['catch'](function(_0x537631){logger[_0xcbb1('0x6a')]('AMI\x20IfTime',_0x537631);throw msgResponse(_0xcbb1('0x87'),'Error',util[_0xcbb1('0x46')](_0x537631,{'showHidden':![],'depth':null}));});};Dialer[_0xcbb1('0x16')][_0xcbb1('0x28')]=function(_0x5ae6e9){if(this[_0xcbb1('0x1b')][_0x5ae6e9['queue']]){if(this['uniqueId'][_0x5ae6e9[_0xcbb1('0xc0')]]&&this[_0xcbb1('0xc1')][_0x5ae6e9[_0xcbb1('0xc0')]]['type']!==_0xcbb1('0xc2')){this[_0xcbb1('0xc3')](this[_0xcbb1('0x1b')][_0x5ae6e9[_0xcbb1('0xc4')]]);this['uniqueId'][_0x5ae6e9[_0xcbb1('0xc0')]][_0xcbb1('0xc5')]=moment()[_0xcbb1('0x47')](_0xcbb1('0xc6'));}}};Dialer['prototype'][_0xcbb1('0x2f')]=function(_0x2595fb){var _0x5d98b3=this[_0xcbb1('0xc1')][_0x2595fb[_0xcbb1('0xc0')]];if(this[_0xcbb1('0x1b')][_0x2595fb[_0xcbb1('0xc4')]]){if(_0x5d98b3&&_0x5d98b3[_0xcbb1('0x43')]!==_0xcbb1('0xc2')){delete this[_0xcbb1('0xc1')][_0x2595fb[_0xcbb1('0xc0')]];this[_0xcbb1('0x1b')][_0x2595fb[_0xcbb1('0xc4')]][_0xcbb1('0xc7')]+=0x1;var _0x27e2c6=new AgentComplete(_0x5d98b3,_0x2595fb);if(_0x2595fb[_0xcbb1('0xc8')]===_0xcbb1('0xc9')){_0x27e2c6['agiafterat']=this[_0xcbb1('0x1b')][_0x2595fb[_0xcbb1('0xc4')]][_0xcbb1('0xca')]&&this[_0xcbb1('0x1b')][_0x2595fb[_0xcbb1('0xc4')]][_0xcbb1('0xcb')]?moment()[_0xcbb1('0x47')]('YYYY-MM-DD\x20HH:mm:ss'):undefined;}hopperUtils[_0xcbb1('0xcc')](_0x27e2c6)[_0xcbb1('0xa4')](loggerCatch(_0xcbb1('0xcd')));hopperUtils[_0xcbb1('0xce')](_0x27e2c6)[_0xcbb1('0xa4')](loggerCatch(_0xcbb1('0xcf')));}}};Dialer[_0xcbb1('0x16')][_0xcbb1('0x2b')]=function(_0x4025b5){var _0x17aeed=this['uniqueId'][_0x4025b5['uniqueid']];var _0x3b1a70=this;var _0x5ba8b3=![];var _0x21b67d;var _0x331f7c;if(this['voiceQueues'][_0x4025b5[_0xcbb1('0xc4')]]){if(_0x17aeed&&_0x17aeed[_0xcbb1('0x43')]!==_0xcbb1('0xc2')){delete this[_0xcbb1('0xc1')][_0x4025b5[_0xcbb1('0xc0')]];this[_0xcbb1('0xc3')](this['voiceQueues'][_0x4025b5[_0xcbb1('0xc4')]]);_0x17aeed[_0xcbb1('0xd0')]=moment()['format'](_0xcbb1('0xc6'));var _0x174974=new QueueCallerAbandon(_0x17aeed,_0x4025b5);if(utils[_0xcbb1('0x64')](_0x17aeed[_0xcbb1('0xd0')],_0x17aeed[_0xcbb1('0xd1')])>=_0x17aeed['dialQueueTimeout']){this[_0xcbb1('0x1b')][_0x4025b5['queue']][_0xcbb1('0x52')]+=0x1;this[_0xcbb1('0x1b')][_0x4025b5[_0xcbb1('0xc4')]][_0xcbb1('0xd2')]+=0x1;this[_0xcbb1('0x1b')][_0x4025b5['queue']][_0xcbb1('0xd3')]+=0x1;_0x174974['state']=0xa;_0x174974[_0xcbb1('0x74')]='Drop';_0x174974[_0xcbb1('0xd4')]=_0xcbb1('0xd5');_0x174974['agiafterat']=this[_0xcbb1('0x1b')][_0x4025b5[_0xcbb1('0xc4')]][_0xcbb1('0xca')]?moment()['format'](_0xcbb1('0xc6')):undefined;_0x174974['countdropretry']+=0x1;_0x174974[_0xcbb1('0xd6')]+=0x1;_0x21b67d=this[_0xcbb1('0x1b')][_0x4025b5[_0xcbb1('0xc4')]][_0xcbb1('0xd7')];_0x331f7c=this['voiceQueues'][_0x4025b5[_0xcbb1('0xc4')]][_0xcbb1('0xd8')];hopperUtils[_0xcbb1('0xd9')](_0x174974,_0x174974[_0xcbb1('0x73')],_0x17aeed[_0xcbb1('0xda')])[_0xcbb1('0x3f')](function(_0x35b0f4){_0x5ba8b3=_0x35b0f4['additional']==0x1;if(_0x174974[_0xcbb1('0xdb')]>=_0x3b1a70[_0xcbb1('0x1b')][_0x4025b5[_0xcbb1('0xc4')]][_0xcbb1('0xdc')]){_0x3b1a70['queueCallerAbandonCreateState'](_0x174974,_0x35b0f4[_0xcbb1('0xdd')]);}else{hopperUtils['rescheduleContact']({'active':![],'countdropretry':_0x174974['countdropretry'],'scheduledat':moment()[_0xcbb1('0xde')](_0x3b1a70[_0xcbb1('0x1b')][_0x4025b5['queue']]['dialDropRetryFrequency'],_0xcbb1('0xdf'))[_0xcbb1('0x47')](_0xcbb1('0xc6')),'ContactId':_0x17aeed[_0xcbb1('0xe0')],'ListId':_0x17aeed[_0xcbb1('0xe1')],'VoiceQueueId':_0x17aeed[_0xcbb1('0xe2')]||undefined,'CampaignId':_0x17aeed[_0xcbb1('0xe3')]||undefined})[_0xcbb1('0xa4')](loggerCatch('[rescheduleContact][Drop]'));var _0x84bcea=new History(_0x174974);_0x84bcea['state']=0xa;_0x84bcea['statedesc']=_0xcbb1('0xe4');_0x84bcea[_0xcbb1('0x76')]=moment()[_0xcbb1('0x47')](_0xcbb1('0xc6'));_0x84bcea[_0xcbb1('0x75')]=_0x84bcea[_0xcbb1('0x76')];_0x84bcea['calleridname']=_0x174974[_0xcbb1('0xe5')];_0x84bcea[_0xcbb1('0xe6')]=_0x174974[_0xcbb1('0xe6')];hopperUtils['createHistory'](_0x84bcea)[_0xcbb1('0xa4')](loggerCatch('[syncAgentComplete][createHistory][10]'));}})[_0xcbb1('0x3f')](function(){if(_0x5ba8b3)hopperUtils['swapAdditionalPhones'](_0x174974,_0x21b67d,_0x331f7c)[_0xcbb1('0x3f')](function(){return 0x1;});});}else{this[_0xcbb1('0x1b')][_0x4025b5[_0xcbb1('0xc4')]][_0xcbb1('0x54')]+=0x1;this[_0xcbb1('0x1b')][_0x4025b5[_0xcbb1('0xc4')]][_0xcbb1('0xe7')]+=0x1;_0x174974[_0xcbb1('0x73')]=0xb;_0x174974['statedesc']=_0xcbb1('0xe8');_0x174974[_0xcbb1('0xd4')]=_0xcbb1('0xe9');_0x174974[_0xcbb1('0xea')]+=0x1;_0x174974[_0xcbb1('0xd6')]+=0x1;_0x21b67d=this[_0xcbb1('0x1b')][_0x4025b5[_0xcbb1('0xc4')]][_0xcbb1('0xeb')];_0x331f7c=this[_0xcbb1('0x1b')][_0x4025b5[_0xcbb1('0xc4')]][_0xcbb1('0xd8')];hopperUtils[_0xcbb1('0xd9')](_0x174974,_0x174974['state'],_0x17aeed['voiceQueue'])[_0xcbb1('0x3f')](function(_0x316aef){if(_0x174974['countabandonedretry']>=_0x3b1a70[_0xcbb1('0x1b')][_0x4025b5[_0xcbb1('0xc4')]][_0xcbb1('0xec')]){_0x3b1a70[_0xcbb1('0xed')](_0x174974,_0x316aef[_0xcbb1('0xdd')]);}else{hopperUtils[_0xcbb1('0xee')]({'active':![],'countabandonedretry':_0x174974['countabandonedretry'],'scheduledat':moment()['add'](_0x3b1a70[_0xcbb1('0x1b')][_0x4025b5[_0xcbb1('0xc4')]][_0xcbb1('0xeb')],'minutes')[_0xcbb1('0x47')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x17aeed[_0xcbb1('0xe0')],'ListId':_0x17aeed['ListId'],'VoiceQueueId':_0x17aeed[_0xcbb1('0xe2')]||undefined,'CampaignId':_0x17aeed['CampaignId']||undefined})[_0xcbb1('0xa4')](loggerCatch('[rescheduleContact][Abandoned]'));var _0x3c2089=new History(_0x174974);_0x3c2089[_0xcbb1('0x73')]=0xb;_0x3c2089['statedesc']=_0xcbb1('0xe8');_0x3c2089['starttime']=moment()[_0xcbb1('0x47')](_0xcbb1('0xc6'));_0x3c2089[_0xcbb1('0x75')]=_0x3c2089[_0xcbb1('0x76')];_0x3c2089[_0xcbb1('0xe5')]=_0x174974[_0xcbb1('0xe5')];_0x3c2089['calleridnum']=_0x174974[_0xcbb1('0xe6')];hopperUtils[_0xcbb1('0xcc')](_0x3c2089)['catch'](loggerCatch('[syncAgentComplete][createHistory][11]'));}})[_0xcbb1('0x3f')](function(){if(_0x5ba8b3)hopperUtils[_0xcbb1('0xef')](_0x174974,_0x21b67d,_0x331f7c)[_0xcbb1('0x3f')](function(){return 0x1;});});}}}};Dialer[_0xcbb1('0x16')][_0xcbb1('0x35')]=function(_0x5a661c){if(this[_0xcbb1('0x1f')][_0x5a661c['uniqueid']]){this[_0xcbb1('0x1f')][_0x5a661c[_0xcbb1('0xc0')]]['channel']=_0x5a661c[_0xcbb1('0xf0')];}if(this[_0xcbb1('0xc1')][_0x5a661c[_0xcbb1('0xc0')]]){this['uniqueId'][_0x5a661c[_0xcbb1('0xc0')]][_0xcbb1('0xf0')]=_0x5a661c[_0xcbb1('0xf0')];}};Dialer[_0xcbb1('0x16')][_0xcbb1('0x39')]=function(_0x2a06f3){if(!this[_0xcbb1('0x1f')][_0x2a06f3['actionid']]){return;}var _0x29013f=this[_0xcbb1('0x1b')][this['actions'][_0x2a06f3[_0xcbb1('0xf1')]][_0xcbb1('0xc4')]][_0xcbb1('0xf2')]||'rrmemory';if(_0x29013f===_0xcbb1('0xf3')){if(this['actions'][_0x2a06f3[_0xcbb1('0xf1')]]&&_[_0xcbb1('0xf4')](this['actions'][_0x2a06f3['actionid']][_0xcbb1('0xf5')])&&_0x2a06f3[_0xcbb1('0x8b')]==='1'&&_0x2a06f3[_0xcbb1('0xf6')]==='0'){if(this[_0xcbb1('0xf7')][_0x2a06f3[_0xcbb1('0xf8')]]){if(!this[_0xcbb1('0xf7')][_0x2a06f3[_0xcbb1('0xf8')]]['locked']){this[_0xcbb1('0xf7')][_0x2a06f3[_0xcbb1('0xf8')]][_0xcbb1('0xf5')]=!![];this[_0xcbb1('0x1f')][_0x2a06f3[_0xcbb1('0xf1')]][_0xcbb1('0xf5')]=!![];this[_0xcbb1('0x1f')][_0x2a06f3[_0xcbb1('0xf1')]][_0xcbb1('0xf8')]=_0x2a06f3[_0xcbb1('0xf8')];}}}}else if(_0x29013f===_0xcbb1('0xf9')){if(this[_0xcbb1('0x1f')][_0x2a06f3[_0xcbb1('0xf1')]]){if(this[_0xcbb1('0xf7')][_0x2a06f3[_0xcbb1('0xf8')]]){this['actions'][_0x2a06f3[_0xcbb1('0xf1')]]['stateinterface']=_0x2a06f3['stateinterface'];if(_[_0xcbb1('0xf4')](this[_0xcbb1('0x25')][this[_0xcbb1('0x1f')][_0x2a06f3[_0xcbb1('0xf1')]][_0xcbb1('0xc4')]])){this[_0xcbb1('0x25')][this[_0xcbb1('0x1f')][_0x2a06f3[_0xcbb1('0xf1')]][_0xcbb1('0xc4')]]=[];}this[_0xcbb1('0x25')][this['actions'][_0x2a06f3[_0xcbb1('0xf1')]][_0xcbb1('0xc4')]]['push'](_[_0xcbb1('0x63')](_['pick'](this['actions'][_0x2a06f3[_0xcbb1('0xf1')]],[_0xcbb1('0xfa'),_0xcbb1('0xf8')]),{'status':_0x2a06f3[_0xcbb1('0x8b')],'paused':_0x2a06f3[_0xcbb1('0xf6')]}));}}}};Dialer[_0xcbb1('0x16')][_0xcbb1('0x3b')]=function(_0x5e4b8c){if(!this[_0xcbb1('0x1f')][_0x5e4b8c['actionid']]){return;}var _0x2c1e86=this;var _0x43e0b5=this[_0xcbb1('0x1b')][this[_0xcbb1('0x1f')][_0x5e4b8c[_0xcbb1('0xf1')]][_0xcbb1('0xc4')]];var _0x205b1c=_0x43e0b5[_0xcbb1('0xf2')]||_0xcbb1('0xf9');if(_0x205b1c==='roundrobin'){if(this['actions'][_0x5e4b8c[_0xcbb1('0xf1')]]&&this[_0xcbb1('0x1f')][_0x5e4b8c['actionid']][_0xcbb1('0xf8')]){this['preview'][_0xcbb1('0xfb')](this[_0xcbb1('0x1f')][_0x5e4b8c[_0xcbb1('0xf1')]][_0xcbb1('0xfa')],this[_0xcbb1('0x1f')][_0x5e4b8c['actionid']]['stateinterface'])[_0xcbb1('0xa4')](function(_0x46aa8b){logger['error'](_0xcbb1('0xfc'),util[_0xcbb1('0x46')](_0x46aa8b,{'showHidden':![],'depth':null}));})[_0xcbb1('0x18')](function(){_0x2c1e86[_0xcbb1('0xc3')](_0x2c1e86[_0xcbb1('0x1b')][_0x2c1e86[_0xcbb1('0x1f')][_0x5e4b8c[_0xcbb1('0xf1')]][_0xcbb1('0xc4')]]);_0x2c1e86[_0xcbb1('0xf7')][_0x2c1e86[_0xcbb1('0x1f')][_0x5e4b8c['actionid']][_0xcbb1('0xf8')]][_0xcbb1('0xf5')]=![];delete _0x2c1e86[_0xcbb1('0x1f')][_0x5e4b8c[_0xcbb1('0xf1')]];unlockQueueStatus(_0x43e0b5);});}else{this[_0xcbb1('0xc3')](this['voiceQueues'][this[_0xcbb1('0x1f')][_0x5e4b8c['actionid']]['queue']]);hopperUtils[_0xcbb1('0xee')]({'active':![],'ContactId':this[_0xcbb1('0x1f')][_0x5e4b8c[_0xcbb1('0xf1')]][_0xcbb1('0xe0')],'ListId':this['actions'][_0x5e4b8c[_0xcbb1('0xf1')]][_0xcbb1('0xe1')],'VoiceQueueId':this['actions'][_0x5e4b8c['actionid']][_0xcbb1('0xe2')]||undefined,'CampaignId':this[_0xcbb1('0x1f')][_0x5e4b8c['actionid']][_0xcbb1('0xe3')]||undefined})[_0xcbb1('0xa4')](loggerCatch('[unlock][syncQueueStatusComplete]'));delete this[_0xcbb1('0x1f')][_0x5e4b8c[_0xcbb1('0xf1')]];unlockQueueStatus(_0x43e0b5);}}else if(_0x205b1c===_0xcbb1('0xf9')){var _0x1b8a3e;if(this[_0xcbb1('0x1f')][_0x5e4b8c['actionid']]&&!_['isEmpty'](this[_0xcbb1('0x25')][this['actions'][_0x5e4b8c['actionid']][_0xcbb1('0xc4')]])){if(this[_0xcbb1('0xfd')][_0x2c1e86[_0xcbb1('0x1f')][_0x5e4b8c[_0xcbb1('0xf1')]][_0xcbb1('0xc4')]]){this['queueBookedRR'][_0x2c1e86[_0xcbb1('0x1f')][_0x5e4b8c[_0xcbb1('0xf1')]][_0xcbb1('0xc4')]]=this['queueBookedRR'][this[_0xcbb1('0x1f')][_0x5e4b8c[_0xcbb1('0xf1')]]['queue']]?this[_0xcbb1('0xfd')][this[_0xcbb1('0x1f')][_0x5e4b8c[_0xcbb1('0xf1')]][_0xcbb1('0xc4')]]:this[_0xcbb1('0x25')][this[_0xcbb1('0x1f')][_0x5e4b8c['actionid']][_0xcbb1('0xc4')]]?this[_0xcbb1('0x25')][this['actions'][_0x5e4b8c[_0xcbb1('0xf1')]][_0xcbb1('0xc4')]][_0xcbb1('0xfe')]||0x0:0x0;}this['queueBooked'][this[_0xcbb1('0x1f')][_0x5e4b8c[_0xcbb1('0xf1')]][_0xcbb1('0xc4')]]['_rr']=this[_0xcbb1('0xfd')][this['actions'][_0x5e4b8c[_0xcbb1('0xf1')]][_0xcbb1('0xc4')]];for(var _0x1c736e=0x0;_0x1c736e<this['queueBooked'][this[_0xcbb1('0x1f')][_0x5e4b8c[_0xcbb1('0xf1')]][_0xcbb1('0xc4')]][_0xcbb1('0x9c')];_0x1c736e+=0x1){_0x1b8a3e=rr(this[_0xcbb1('0x25')][this[_0xcbb1('0x1f')][_0x5e4b8c[_0xcbb1('0xf1')]][_0xcbb1('0xc4')]]);this['queueBookedRR'][_0x2c1e86[_0xcbb1('0x1f')][_0x5e4b8c[_0xcbb1('0xf1')]]['queue']]=this[_0xcbb1('0x25')][this[_0xcbb1('0x1f')][_0x5e4b8c['actionid']][_0xcbb1('0xc4')]]['_rr'];if(_0x1b8a3e[_0xcbb1('0x8b')]==='1'&&_0x1b8a3e[_0xcbb1('0xf6')]==='0'){break;}}if(!_[_0xcbb1('0xf4')](_0x1b8a3e)){this[_0xcbb1('0xf7')][_0x1b8a3e[_0xcbb1('0xf8')]][_0xcbb1('0xff')]=_[_0xcbb1('0x41')](this[_0xcbb1('0xf7')][_0x1b8a3e[_0xcbb1('0xf8')]]['unlockRR'])?!![]:this[_0xcbb1('0xf7')][_0x1b8a3e[_0xcbb1('0xf8')]][_0xcbb1('0xff')];}loggerBooked[_0xcbb1('0x4d')](_0xcbb1('0x100'),_0x5e4b8c[_0xcbb1('0xf1')],_0xcbb1('0x101'),JSON[_0xcbb1('0x79')](_[_0xcbb1('0x7a')](this['agents'][_0x1b8a3e[_0xcbb1('0xf8')]],[_0xcbb1('0x49'),_0xcbb1('0xff')])),_0xcbb1('0x102'),JSON[_0xcbb1('0x79')](_0x1b8a3e[_0xcbb1('0xfa')]));if(!_[_0xcbb1('0xf4')](_0x1b8a3e)&&_0x1b8a3e[_0xcbb1('0x8b')]==='1'&&_0x1b8a3e[_0xcbb1('0xf6')]==='0'&&this[_0xcbb1('0xf7')][_0x1b8a3e[_0xcbb1('0xf8')]][_0xcbb1('0xff')]){this[_0xcbb1('0xf7')][_0x1b8a3e[_0xcbb1('0xf8')]][_0xcbb1('0xff')]=![];this['queueBooked'][_0x2c1e86[_0xcbb1('0x1f')][_0x5e4b8c[_0xcbb1('0xf1')]][_0xcbb1('0xc4')]]=[];this[_0xcbb1('0x1a')]['run'](_0x1b8a3e[_0xcbb1('0xfa')],_0x1b8a3e[_0xcbb1('0xf8')])[_0xcbb1('0xa4')](function(_0x366a7c){logger[_0xcbb1('0x6a')](_0xcbb1('0xfc'),util[_0xcbb1('0x46')](_0x366a7c,{'showHidden':![],'depth':null}));})[_0xcbb1('0x18')](function(){_0x2c1e86[_0xcbb1('0xc3')](_0x2c1e86[_0xcbb1('0x1b')][_0x2c1e86[_0xcbb1('0x1f')][_0x5e4b8c[_0xcbb1('0xf1')]]['queue']]);setTimeout(function(){_0x2c1e86[_0xcbb1('0xf7')][_0x1b8a3e[_0xcbb1('0xf8')]][_0xcbb1('0xff')]=!![];loggerBooked[_0xcbb1('0x4d')](_0xcbb1('0x103'),_0x5e4b8c[_0xcbb1('0xf1')],_0xcbb1('0x101'),JSON[_0xcbb1('0x79')](_[_0xcbb1('0x7a')](_0x2c1e86[_0xcbb1('0xf7')][_0x1b8a3e['stateinterface']],[_0xcbb1('0x49'),_0xcbb1('0xff')])),_0xcbb1('0x102'),JSON[_0xcbb1('0x79')](_0x1b8a3e[_0xcbb1('0xfa')]));},0xc7);delete _0x2c1e86[_0xcbb1('0x1f')][_0x5e4b8c[_0xcbb1('0xf1')]];unlockQueueStatus(_0x43e0b5,_0x5e4b8c[_0xcbb1('0xf1')]);});}else{loggerBooked['info']('[booked][unlock]');this['updateOriginated'](this['voiceQueues'][this[_0xcbb1('0x1f')][_0x5e4b8c[_0xcbb1('0xf1')]][_0xcbb1('0xc4')]]);hopperUtils[_0xcbb1('0xee')]({'active':![],'ContactId':this['actions'][_0x5e4b8c[_0xcbb1('0xf1')]][_0xcbb1('0xe0')],'ListId':this[_0xcbb1('0x1f')][_0x5e4b8c['actionid']]['ListId'],'VoiceQueueId':this[_0xcbb1('0x1f')][_0x5e4b8c[_0xcbb1('0xf1')]]['VoiceQueueId']||undefined,'CampaignId':this[_0xcbb1('0x1f')][_0x5e4b8c[_0xcbb1('0xf1')]]['CampaignId']||undefined})[_0xcbb1('0xa4')](loggerCatch(_0xcbb1('0x104')));delete this[_0xcbb1('0x1f')][_0x5e4b8c[_0xcbb1('0xf1')]];unlockQueueStatus(_0x43e0b5);}}else{loggerBooked[_0xcbb1('0x4d')](_0xcbb1('0x105'));this[_0xcbb1('0xc3')](this['voiceQueues'][this['actions'][_0x5e4b8c[_0xcbb1('0xf1')]]['queue']]);hopperUtils[_0xcbb1('0xee')]({'active':![],'ContactId':this[_0xcbb1('0x1f')][_0x5e4b8c[_0xcbb1('0xf1')]][_0xcbb1('0xe0')],'ListId':this[_0xcbb1('0x1f')][_0x5e4b8c[_0xcbb1('0xf1')]]['ListId'],'VoiceQueueId':this[_0xcbb1('0x1f')][_0x5e4b8c[_0xcbb1('0xf1')]]['VoiceQueueId']||undefined,'CampaignId':this[_0xcbb1('0x1f')][_0x5e4b8c[_0xcbb1('0xf1')]]['CampaignId']||undefined})[_0xcbb1('0xa4')](loggerCatch('[unlock2][syncQueueStatusComplete]'));delete this[_0xcbb1('0x1f')][_0x5e4b8c[_0xcbb1('0xf1')]];unlockQueueStatus(_0x43e0b5);}}else{loggerBooked[_0xcbb1('0x4d')](_0xcbb1('0x106'));this[_0xcbb1('0xc3')](this[_0xcbb1('0x1b')][this['actions'][_0x5e4b8c[_0xcbb1('0xf1')]]['queue']]);hopperUtils[_0xcbb1('0xee')]({'active':![],'ContactId':this[_0xcbb1('0x1f')][_0x5e4b8c['actionid']][_0xcbb1('0xe0')],'ListId':this[_0xcbb1('0x1f')][_0x5e4b8c[_0xcbb1('0xf1')]]['ListId'],'VoiceQueueId':this[_0xcbb1('0x1f')][_0x5e4b8c['actionid']][_0xcbb1('0xe2')]||undefined,'CampaignId':this[_0xcbb1('0x1f')][_0x5e4b8c[_0xcbb1('0xf1')]][_0xcbb1('0xe3')]||undefined})['catch'](loggerCatch(_0xcbb1('0x107')));delete this[_0xcbb1('0x1f')][_0x5e4b8c[_0xcbb1('0xf1')]];unlockQueueStatus(_0x43e0b5);}};Dialer[_0xcbb1('0x16')][_0xcbb1('0x2d')]=function(_0x3f4c03){var _0x249664=this[_0xcbb1('0x1f')][_0x3f4c03[_0xcbb1('0xf1')]];if(_0x249664){delete this[_0xcbb1('0x1f')][_0x3f4c03['actionid']];_0x249664[_0xcbb1('0xd1')]=moment()['format'](_0xcbb1('0xc6'));var _0x238be7=_0x249664[_0xcbb1('0x43')]===_0xcbb1('0xc2')?this['campaigns'][_0x249664[_0xcbb1('0xc4')]]:this[_0xcbb1('0x1b')][_0x249664['getQueue']()];if(_0x3f4c03[_0xcbb1('0x108')]!==_0xcbb1('0x109')){this[_0xcbb1('0xc3')](_0x238be7);return this[_0xcbb1('0x10a')](_0x249664,_0x238be7,_0x3f4c03)[_0xcbb1('0xa4')](loggerCatch(_0xcbb1('0x10b')));}this['uniqueId'][_0x3f4c03[_0xcbb1('0xc0')]]=_0x249664;}};Dialer[_0xcbb1('0x16')][_0xcbb1('0x37')]=function(_0xf35a83){var _0x5a9670=this;var _0x12aa9e=this[_0xcbb1('0xc1')][_0xf35a83[_0xcbb1('0xc0')]];var _0x13cf05;if(!_[_0xcbb1('0xf4')](_0xf35a83)&&!_[_0xcbb1('0xf4')](_0xf35a83[_0xcbb1('0x10c')])&&!_[_0xcbb1('0xf4')](_0xf35a83[_0xcbb1('0x10c')][_0xcbb1('0x10d')])&&_0xf35a83[_0xcbb1('0x10e')]===_0xcbb1('0x10f')&&_0x12aa9e){if(_0x12aa9e['type']!==_0xcbb1('0xc2')&&this[_0xcbb1('0x1b')][_0x12aa9e[_0xcbb1('0xc4')]]['dialAMDActive']&&_0xf35a83['value']===_0xcbb1('0x110')){delete this[_0xcbb1('0xc1')][_0xf35a83['uniqueid']];this[_0xcbb1('0xc3')](this['voiceQueues'][_0x12aa9e[_0xcbb1('0xc4')]]);this[_0xcbb1('0x1b')][_0x12aa9e[_0xcbb1('0xc4')]][_0xcbb1('0xc7')]+=0x1;this[_0xcbb1('0x1b')][_0x12aa9e[_0xcbb1('0xc4')]]['outboundAnswerAgiCallsDay']+=0x1;_0x13cf05=new Hangup(_0x12aa9e,_0xf35a83);_0x13cf05['state']=0x12;_0x13cf05[_0xcbb1('0x74')]=_0xcbb1('0x111');_0x13cf05[_0xcbb1('0x112')]=_0xcbb1('0x113');ami[_0xcbb1('0x42')]('custom:amd',ut[_0xcbb1('0x114')](_0x13cf05,'amd'));this['saveInDb'](_0x13cf05,'[syncHangupInAMD][createHistory]',_0xcbb1('0x115'));}if(_0x12aa9e['type']!==_0xcbb1('0xc2')&&this['voiceQueues'][_0x12aa9e[_0xcbb1('0xc4')]][_0xcbb1('0x116')]&&_0xf35a83[_0xcbb1('0x117')]==='MACHINE'){return new Promise(function(_0x52c3d7,_0x2663d1){delete _0x5a9670[_0xcbb1('0xc1')][_0xf35a83[_0xcbb1('0xc0')]];_0x5a9670[_0xcbb1('0xc3')](_0x5a9670[_0xcbb1('0x1b')][_0x12aa9e[_0xcbb1('0xc4')]]);_0x5a9670[_0xcbb1('0x1b')][_0x12aa9e[_0xcbb1('0xc4')]][_0xcbb1('0xc7')]+=0x1;_0x5a9670[_0xcbb1('0x1b')][_0x12aa9e[_0xcbb1('0xc4')]][_0xcbb1('0x118')]+=0x1;var _0x323429=_0x5a9670[_0xcbb1('0x1b')][_0x12aa9e['queue']];var _0x5aafc8=new Hangup(_0x12aa9e,_0xf35a83);_0x5aafc8[_0xcbb1('0x73')]=0x13;_0x5aafc8[_0xcbb1('0x74')]='Machine';_0x5aafc8['membername']=_0xcbb1('0x113');_0x5aafc8[_0xcbb1('0x119')]+=0x1;_0x5aafc8[_0xcbb1('0xd6')]+=0x1;_0x5aafc8[_0xcbb1('0x11a')]=!![];ami[_0xcbb1('0x42')](_0xcbb1('0x11b'),ut['buildObj'](_0x5aafc8,_0xcbb1('0x11a')));hopperUtils[_0xcbb1('0xcc')](_0x5aafc8)[_0xcbb1('0xa4')](loggerCatch(_0xcbb1('0x11c')));if(_0x5aafc8[_0xcbb1('0x11d')]+_0x5aafc8['countcongestionretry']+_0x5aafc8[_0xcbb1('0x11e')]+_0x5aafc8[_0xcbb1('0x11f')]+_0x5aafc8['countdropretry']+_0x5aafc8[_0xcbb1('0xea')]+_0x5aafc8[_0xcbb1('0x119')]+_0x5aafc8[_0xcbb1('0x120')]>=_0x323429[_0xcbb1('0x121')]){_0x5a9670[_0xcbb1('0x122')](_0x5aafc8,_0x52c3d7,_0x2663d1,'reason19\x20machine....');}else{if(_0x5aafc8['countmachineretry']>=_0x323429[_0xcbb1('0x123')]){_0x5a9670['createStateFinal'](_0x5aafc8,_0x52c3d7,_0x2663d1,'reason\x2019\x20machine....');}else{hopperUtils[_0xcbb1('0xee')]({'active':![],'countmachineretry':_0x5aafc8[_0xcbb1('0x119')],'scheduledat':moment()['add'](_0x323429['dialMachineRetryFrequency'],_0xcbb1('0xdf'))[_0xcbb1('0x47')](_0xcbb1('0xc6')),'ContactId':_0x5aafc8['ContactId'],'ListId':_0x5aafc8[_0xcbb1('0xe1')],'VoiceQueueId':_0x5aafc8[_0xcbb1('0xe2')]||undefined,'CampaignId':_0x5aafc8[_0xcbb1('0xe3')]||undefined})[_0xcbb1('0xa4')](loggerCatch(_0xcbb1('0x124')));_0x52c3d7({'reschedule':0x1});}}});}if(_0x12aa9e[_0xcbb1('0x43')]===_0xcbb1('0xc2')&&this['campaigns'][_0x12aa9e['queue']][_0xcbb1('0x116')]&&_0xf35a83[_0xcbb1('0x117')]===_0xcbb1('0x110')){delete this[_0xcbb1('0xc1')][_0xf35a83[_0xcbb1('0xc0')]];this[_0xcbb1('0xc3')](this[_0xcbb1('0xaf')][_0x12aa9e[_0xcbb1('0xc4')]]);_0x13cf05=new Hangup(_0x12aa9e,_0xf35a83);_0x13cf05['state']=0x12;_0x13cf05[_0xcbb1('0x74')]=_0xcbb1('0x111');_0x13cf05['membername']=_0xcbb1('0x113');ami['emit'](_0xcbb1('0x11b'),ut[_0xcbb1('0x114')](_0x13cf05,_0xcbb1('0x11a')));this[_0xcbb1('0x125')](_0x13cf05,_0xcbb1('0x126'),'[syncHangupInAMDIvr]');}if(_0x12aa9e[_0xcbb1('0x43')]===_0xcbb1('0xc2')&&this['campaigns'][_0x12aa9e['queue']]['dialAMDActive']&&_0xf35a83[_0xcbb1('0x117')]===_0xcbb1('0x127')){return new Promise(function(_0x452ef9,_0x1400ef){delete _0x5a9670[_0xcbb1('0xc1')][_0xf35a83[_0xcbb1('0xc0')]];_0x5a9670[_0xcbb1('0xc3')](_0x5a9670['campaigns'][_0x12aa9e[_0xcbb1('0xc4')]]);_0x5a9670[_0xcbb1('0xaf')][_0x12aa9e['queue']][_0xcbb1('0xc7')]+=0x1;_0x5a9670[_0xcbb1('0xaf')][_0x12aa9e['queue']][_0xcbb1('0x118')]+=0x1;var _0x3881d9=_0x5a9670[_0xcbb1('0xaf')][_0x12aa9e['queue']];var _0x45b187=new Hangup(_0x12aa9e,_0xf35a83);_0x45b187['state']=0x13;_0x45b187[_0xcbb1('0x74')]=_0xcbb1('0x128');_0x45b187[_0xcbb1('0x112')]=_0xcbb1('0x113');_0x45b187[_0xcbb1('0x119')]+=0x1;_0x45b187['countglobal']+=0x1;_0x45b187[_0xcbb1('0x11a')]=!![];ami[_0xcbb1('0x42')](_0xcbb1('0x11b'),ut['buildObj'](_0x45b187,'amd'));hopperUtils[_0xcbb1('0xcc')](_0x45b187)['catch'](loggerCatch(_0xcbb1('0x11c')));if(_0x45b187[_0xcbb1('0x11d')]+_0x45b187[_0xcbb1('0x129')]+_0x45b187[_0xcbb1('0x11e')]+_0x45b187['countnosuchnumberretry']+_0x45b187[_0xcbb1('0xdb')]+_0x45b187[_0xcbb1('0xea')]+_0x45b187[_0xcbb1('0x119')]+_0x45b187[_0xcbb1('0x120')]>=_0x3881d9[_0xcbb1('0x121')]){_0x5a9670[_0xcbb1('0x122')](_0x45b187,_0x452ef9,_0x1400ef,_0xcbb1('0x12a'));}else{if(_0x45b187['countmachineretry']>=_0x3881d9[_0xcbb1('0x123')]){_0x5a9670[_0xcbb1('0x12b')](_0x45b187,_0x452ef9,_0x1400ef,_0xcbb1('0x12c'));}else{hopperUtils[_0xcbb1('0xee')]({'active':![],'countmachineretry':_0x45b187[_0xcbb1('0x119')],'scheduledat':moment()[_0xcbb1('0xde')](_0x3881d9[_0xcbb1('0x12d')],_0xcbb1('0xdf'))[_0xcbb1('0x47')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x45b187[_0xcbb1('0xe0')],'ListId':_0x45b187[_0xcbb1('0xe1')],'VoiceQueueId':_0x45b187['VoiceQueueId']||undefined,'CampaignId':_0x45b187[_0xcbb1('0xe3')]||undefined})[_0xcbb1('0xa4')](loggerCatch(_0xcbb1('0x124')));_0x452ef9({'reschedule':0x1});}}});}}};Dialer[_0xcbb1('0x16')]['syncHangup']=function(_0x5a3690){var _0x4b6a3d=this[_0xcbb1('0xc1')][_0x5a3690['uniqueid']];var _0x5aae36;if(_0x4b6a3d&&_0x4b6a3d[_0xcbb1('0x43')]===_0xcbb1('0xc2')){delete this['uniqueId'][_0x5a3690['uniqueid']];this['updateOriginated'](this['campaigns'][_0x4b6a3d[_0xcbb1('0xc4')]]);this['campaigns'][_0x4b6a3d[_0xcbb1('0xc4')]][_0xcbb1('0x12e')]+=0x1;_0x5aae36=new Hangup(_0x4b6a3d,_0x5a3690);hopperUtils['createHistory'](_0x5aae36)['catch'](loggerCatch(_0xcbb1('0x12f')));hopperUtils['moveContactManagedDialer'](_0x5aae36)[_0xcbb1('0xa4')](loggerCatch('[syncHangupIvr]'));}if(_0x4b6a3d&&_0x4b6a3d['type']!==_0xcbb1('0xc2')&&isNotNull(this[_0xcbb1('0x1b')][_0x4b6a3d[_0xcbb1('0xc4')]][_0xcbb1('0x130')])){delete this['uniqueId'][_0x5a3690['uniqueid']];this[_0xcbb1('0xc3')](this[_0xcbb1('0x1b')][_0x4b6a3d[_0xcbb1('0xc4')]]);this[_0xcbb1('0x1b')][_0x4b6a3d['queue']][_0xcbb1('0xc7')]+=0x1;this['voiceQueues'][_0x4b6a3d[_0xcbb1('0xc4')]]['outboundAnswerAgiCallsDay']+=0x1;_0x5aae36=new Hangup(_0x4b6a3d,_0x5a3690);_0x5aae36[_0xcbb1('0x73')]=0x10;_0x5aae36['statedesc']=_0xcbb1('0x131');_0x5aae36[_0xcbb1('0x112')]=_0xcbb1('0x132');hopperUtils[_0xcbb1('0xcc')](_0x5aae36)['catch'](loggerCatch(_0xcbb1('0x12f')));hopperUtils[_0xcbb1('0xce')](_0x5aae36)['catch'](loggerCatch(_0xcbb1('0x133')));}if(_0x4b6a3d&&_0x4b6a3d[_0xcbb1('0x43')]!==_0xcbb1('0xc2')&&!isNotNull(this[_0xcbb1('0x1b')][_0x4b6a3d[_0xcbb1('0xc4')]]['dialQueueProject'])){delete this['uniqueId'][_0x5a3690[_0xcbb1('0xc0')]];this[_0xcbb1('0xc3')](this[_0xcbb1('0x1b')][_0x4b6a3d[_0xcbb1('0xc4')]]);this[_0xcbb1('0x1b')][_0x4b6a3d[_0xcbb1('0xc4')]][_0xcbb1('0x134')]+=0x1;_0x5aae36=new Hangup(_0x4b6a3d,_0x5a3690);_0x5aae36[_0xcbb1('0x73')]=0xc;_0x5aae36[_0xcbb1('0x74')]=_0x5a3690[_0xcbb1('0x135')];_0x5aae36['membername']=_0xcbb1('0x136');hopperUtils[_0xcbb1('0xcc')](_0x5aae36)[_0xcbb1('0xa4')](loggerCatch('[syncHangupIvr][createHistory]'));hopperUtils[_0xcbb1('0xce')](_0x5aae36)[_0xcbb1('0xa4')](loggerCatch('[syncHangupIvr]'));}};Dialer[_0xcbb1('0x16')][_0xcbb1('0x9')]=function(_0x3e6c21){var _0x58951f=this;if(!_0x58951f['queuesSummary'][_0x3e6c21[_0xcbb1('0x49')]]){_0x58951f[_0xcbb1('0x26')][_0x3e6c21[_0xcbb1('0x49')]]={'running':![]};}else if(_0x58951f[_0xcbb1('0x26')][_0x3e6c21[_0xcbb1('0x49')]][_0xcbb1('0x137')]===!![]){return;}else if(_0x58951f[_0xcbb1('0x26')][_0x3e6c21[_0xcbb1('0x49')]][_0xcbb1('0x137')]===![]){_0x58951f[_0xcbb1('0x26')][_0x3e6c21[_0xcbb1('0x49')]][_0xcbb1('0x137')]=!![];}var _0xb4a4f=_0x58951f['voiceQueues'][_0x3e6c21[_0xcbb1('0x49')]];var _0x9dadf9=_0xb4a4f[_0xcbb1('0x6e')]!==utils[_0xcbb1('0x6f')][_0xcbb1('0x138')];var _0x39525b=utils[_0xcbb1('0x139')](_0xb4a4f);_0xb4a4f[_0xcbb1('0x13a')]=utils[_0xcbb1('0x13b')](_0xb4a4f,_0x58951f[_0xcbb1('0x1c')]);Promise['resolve']()[_0xcbb1('0x3f')](function(){if(_0xb4a4f[_0xcbb1('0x13a')]===utils[_0xcbb1('0x6f')][_0xcbb1('0x138')]){if(_0x9dadf9){clearPredictiveAttributes(_0xb4a4f);_0x3e6c21[_0xcbb1('0x22')]=undefined;_0x3e6c21['startProgressive']=undefined;}if(_0xb4a4f['statusMessage']===utils['CAMPAIGN_STATUS'][_0xcbb1('0x138')]){_0x3e6c21[_0xcbb1('0x13c')]=0x0;_0x3e6c21[_0xcbb1('0xf6')]=0x0;_0x3e6c21[_0xcbb1('0x13d')]=0x0;_0x3e6c21[_0xcbb1('0x13e')]=0x0;_0x3e6c21[_0xcbb1('0x13f')]=0x0;}}else if(_0xb4a4f[_0xcbb1('0x13a')]===utils[_0xcbb1('0x6f')]['ACTIVE']&&!_0x39525b){return _0x58951f['ifTime'](_0xb4a4f,!![])[_0xcbb1('0x3f')](function(){return _0x58951f['ifTime'](_0xb4a4f,![]);})[_0xcbb1('0x3f')](function(){return _0x58951f['checkDialMethod'](_0xb4a4f);})[_0xcbb1('0xa4')](function(_0x4e32c5){loggerSyncQueueSummary[_0xcbb1('0x66')](_0xcbb1('0x140'),util[_0xcbb1('0x46')](_0x4e32c5,{'showHidden':![],'depth':null}));clearPredictiveAttributes(_0xb4a4f);});}else{clearPredictiveAttributes(_0xb4a4f);}})[_0xcbb1('0x3f')](function(){var _0x2c6f4e=_0x3e6c21[_0xcbb1('0x141')](_0xb4a4f);if(_0x2c6f4e||_0xb4a4f[_0xcbb1('0x142')]){_0xb4a4f[_0xcbb1('0x142')]=![];_0x3e6c21[_0xcbb1('0x143')](_0xb4a4f);Object['assign'](_0xb4a4f,_0x3e6c21);emitOutboundVoiceQueueSummary(_0x3e6c21);}_0x58951f['queuesSummary'][_0xb4a4f['name']][_0xcbb1('0x137')]=![];})[_0xcbb1('0xa4')](function(_0xc07827){logger[_0xcbb1('0x6a')](_0xcbb1('0x140'),util[_0xcbb1('0x46')](_0xc07827,{'showHidden':![],'depth':null}));_0x58951f[_0xcbb1('0x26')][_0xb4a4f[_0xcbb1('0x49')]]['running']=![];});};Dialer[_0xcbb1('0x16')]['syncQueueSummaryComplete']=_['throttle'](function(){var _0x39fd1c=_[_0xcbb1('0x144')](this[_0xcbb1('0x1b')],function(_0x5d77af){return _0x5d77af['dialPreviewRecallmeReminder'];});var _0x14f971=_[_0xcbb1('0x144')](this['agents'],function(_0x5964a7){return _0x5964a7['online']&&_0x5964a7[_0xcbb1('0x8b')]===_0xcbb1('0x8c');});if(_0x39fd1c[_0xcbb1('0x9c')]>0x0&&_0x14f971['length']>0x0){return Promise['resolve']()[_0xcbb1('0x3f')](cmHopper[_0xcbb1('0x145')](_[_0xcbb1('0x146')](_0x39fd1c,'id'),previewRecallmeReminderInterval,_[_0xcbb1('0x146')](_0x14f971,'id')))['then'](function(_0x15b6f5){for(var _0x3d1257=0x0;_0x3d1257<_0x15b6f5[_0xcbb1('0x9c')];_0x3d1257++){var _0x390c8f=_0x15b6f5[_0x3d1257][_0xcbb1('0x147')][_0xcbb1('0x49')];if(_0x390c8f)io['to'](util[_0xcbb1('0x47')](_0xcbb1('0x148'),_0x390c8f))['emit'](_0xcbb1('0x149'),{'hopper':_0x15b6f5[_0x3d1257]});}})[_0xcbb1('0xa4')](function(_0x19ff0c){logger[_0xcbb1('0x6a')]('checkPreviewRecallReminder',_0x19ff0c);});}},0x3c*0x3e8,{'leading':!![]});Dialer['prototype'][_0xcbb1('0x3d')]=function(){var _0x10df2d=this;setInterval(function(){_0x10df2d[_0xcbb1('0x14a')](_0x10df2d['uniqueId'],'[uniqueid]');_0x10df2d[_0xcbb1('0x14a')](_0x10df2d[_0xcbb1('0x1f')],_0xcbb1('0x14b'));},0x32c8);};Dialer[_0xcbb1('0x16')][_0xcbb1('0x14a')]=function(_0x32e5ba,_0x45a258){var _0x3ecd5d=this;for(var _0x268afd in _0x32e5ba){if(typeof _0x32e5ba[_0x268afd]!==_0xcbb1('0xb0')){this[_0xcbb1('0x19')]['enqueue'](function(){if(!_[_0xcbb1('0xf4')](_0x32e5ba[_0x268afd])){return ami[_0xcbb1('0x9e')]({'action':_0xcbb1('0x8b'),'channel':_0x32e5ba[_0x268afd][_0xcbb1('0xf0')]})[_0xcbb1('0xa4')](function(_0x516d0e){if(_0x516d0e[_0xcbb1('0x6e')]===_0xcbb1('0x14c')){setTimeout(function(){if(_0x32e5ba[_0x268afd]&&_0x32e5ba[_0x268afd][_0xcbb1('0x43')]!==_0xcbb1('0xc2')){_0x3ecd5d[_0xcbb1('0xc3')](_0x3ecd5d['voiceQueues'][_0x32e5ba[_0x268afd][_0xcbb1('0xc4')]]);logger[_0xcbb1('0x6a')]('[Dialer][checkChannel]',_0x45a258,_0x268afd,_0x32e5ba[_0x268afd][_0xcbb1('0xc4')]);delete _0x32e5ba[_0x268afd];}if(_0x32e5ba[_0x268afd]&&_0x32e5ba[_0x268afd]['type']===_0xcbb1('0xc2')){_0x3ecd5d['updateOriginated'](_0x3ecd5d[_0xcbb1('0xaf')][_0x32e5ba[_0x268afd]['queue']]);logger['error'](_0xcbb1('0x14d'),_0x45a258,_0x268afd,_0x32e5ba[_0x268afd][_0xcbb1('0xc4')]);delete _0x32e5ba[_0x268afd];}},0x2328);}});}});}}};Dialer['prototype'][_0xcbb1('0x14e')]=function(_0x566be4){return Promise[_0xcbb1('0x14f')]()[_0xcbb1('0x3f')](voiceQueueRt[_0xcbb1('0x14e')](_0x566be4))[_0xcbb1('0xa4')](loggerCatch(_0xcbb1('0x150')));};Dialer['prototype'][_0xcbb1('0xc3')]=function(_0x417228){if(!_['isUndefined'](_0x417228)&&_0x417228!==null){if(typeof _0x417228[_0xcbb1('0x83')]!==_0xcbb1('0xb0')){if(_0x417228[_0xcbb1('0x83')]>0x0){_0x417228[_0xcbb1('0x83')]-=0x1;}else{logger[_0xcbb1('0x6a')]('[updateOriginated]\x20object\x20originated\x20is\x20negative');}}}else{logger[_0xcbb1('0x6a')](_0xcbb1('0x151'));}};Dialer[_0xcbb1('0x16')][_0xcbb1('0x152')]=function(_0x5b29d9,_0x53aa30){var _0x270dfb=this;return function(_0x11144c){_0x270dfb['updateOriginated'](_0x53aa30);logger[_0xcbb1('0x6a')](_0x5b29d9,util[_0xcbb1('0x46')](_0x11144c,{'showHidden':![],'depth':null}));};};Dialer[_0xcbb1('0x16')][_0xcbb1('0x153')]=function(_0x1f79d3,_0x22afb9,_0x284783){var _0x2c32d6={'state':0x19,'statedesc':_0xcbb1('0x154')};this[_0xcbb1('0xc3')](_0x22afb9);this['saveInDb'](_[_0xcbb1('0x63')](_0x2c32d6,_[_0xcbb1('0x7a')](_0x284783,[_0xcbb1('0xe0'),_0xcbb1('0xe1'),_0xcbb1('0x155'),_0xcbb1('0xe2'),_0xcbb1('0xe3')])),_0xcbb1('0x156'),_0xcbb1('0x157'));logger[_0xcbb1('0x6a')](_0x1f79d3);};Dialer[_0xcbb1('0x16')][_0xcbb1('0x125')]=function(_0x371aca,_0x34e175,_0x5bdb4a){hopperUtils['createHistory'](_0x371aca)[_0xcbb1('0xa4')](loggerCatch(_0x34e175));hopperUtils['moveContactManagedDialer'](_0x371aca)[_0xcbb1('0xa4')](loggerCatch(_0x5bdb4a));};Dialer[_0xcbb1('0x16')][_0xcbb1('0xed')]=function(_0x3a5345,_0x422301){hopperUtils[_0xcbb1('0xcc')](_0x3a5345)['catch'](loggerCatch(_0xcbb1('0xcd')));if(_0x422301==0x0){hopperUtils['moveContactManagedDialer'](_0x3a5345)['catch'](loggerCatch(_0xcbb1('0x158')));}};Dialer[_0xcbb1('0x16')]['checkPreviewRecallReminder']=function(_0x10a7ce){return Promise[_0xcbb1('0x14f')]()[_0xcbb1('0x3f')](cmHopper['handlePreviewRecallNotifications'](_0x10a7ce['id'],previewRecallmeReminderInterval))['then'](function(_0xde177){for(var _0x5d97a2=0x0;_0x5d97a2<_0xde177[_0xcbb1('0x9c')];_0x5d97a2++){var _0x197555=_0xde177[_0x5d97a2][_0xcbb1('0x147')][_0xcbb1('0x49')];if(_0x197555)io['to'](util[_0xcbb1('0x47')]('user:%s',_0x197555))[_0xcbb1('0x42')](_0xcbb1('0x149'),{'hopper':_0xde177[_0x5d97a2]});}})[_0xcbb1('0xa4')](function(){});};Dialer[_0xcbb1('0x16')][_0xcbb1('0x159')]=function(_0x52d400){var _0x3cac0f=this;return function(){_0x3cac0f[_0xcbb1('0x15a')](_0x52d400);};};Dialer[_0xcbb1('0x16')][_0xcbb1('0x15b')]=function(_0xc44e5b,_0x4839c3){var _0x750bb0=this;var _0x53c483=uuid['v4']();this[_0xcbb1('0x1f')][_0x53c483]=new Action(_0xc44e5b,_0x4839c3,_0x53c483);return new Promise(function(_0x18994a,_0x280b8a){if(_['isUndefined'](_0xc44e5b)&&typeof _0xc44e5b!==_0xcbb1('0x15c')){return _0x280b8a(msgResponse('originate',_0xcbb1('0x95'),_0xcbb1('0x15d')));}if(_[_0xcbb1('0x41')](_0x4839c3[_0xcbb1('0x15e')])||_0x4839c3[_0xcbb1('0x15e')]===null){return _0x280b8a(msgResponse(_0xcbb1('0x15f'),'Failure',_0xcbb1('0x160')));}var _0x3ac3ff={'XMD-CALLERID':_0x750bb0[_0xcbb1('0x1f')][_0x53c483][_0xcbb1('0x161')](),'XMD-AGI':_0xc44e5b[_0xcbb1('0x130')]?util[_0xcbb1('0x47')](_0xcbb1('0x162'),ipAgi,_0xc44e5b[_0xcbb1('0x130')]):_0xcbb1('0x163'),'XMD-AGIAFTER':_0xc44e5b[_0xcbb1('0xca')]?util['format']('\x22agi://%s/square,%s\x22',ipAgi,_0xc44e5b[_0xcbb1('0xca')]):_0xcbb1('0x163'),'XMD-QUEUE':utils[_0xcbb1('0x164')](_0xc44e5b)?util['format'](_0xcbb1('0x165'),_0xc44e5b[_0xcbb1('0x49')],_0xc44e5b[_0xcbb1('0x166')]||'',_0xc44e5b[_0xcbb1('0xcb')]?'c':'',_0xc44e5b['dialQueueTimeout']||0x3):_0xcbb1('0x163'),'XMD-CONTACTID':_0x4839c3['ContactId'],'XMD-CDRTYPE':_0xcbb1('0x5'),'CALLERID(all)':_0x750bb0[_0xcbb1('0x1f')][_0x53c483]['getCaller'](),'XMD-AMD':_0xc44e5b[_0xcbb1('0x116')]?_0xcbb1('0x167'):'NONE','XMD-DESTINATION':_0xcbb1('0x10f')};if(_0xc44e5b[_0xcbb1('0x116')]){_0x3ac3ff[_0xcbb1('0x168')]=_0xc44e5b[_0xcbb1('0x169')]||0x9c4;_0x3ac3ff[_0xcbb1('0x16a')]=_0xc44e5b['dialAMDGreeting']||0x5dc;_0x3ac3ff[_0xcbb1('0x16b')]=_0xc44e5b[_0xcbb1('0x16c')]||0x320;_0x3ac3ff[_0xcbb1('0x16d')]=_0xc44e5b[_0xcbb1('0x16e')]||0x1388;_0x3ac3ff[_0xcbb1('0x16f')]=_0xc44e5b['dialAMDMinWordLength']||0x64;_0x3ac3ff[_0xcbb1('0x170')]=_0xc44e5b[_0xcbb1('0x171')]||0x32;_0x3ac3ff[_0xcbb1('0x172')]=_0xc44e5b[_0xcbb1('0x173')]||0x3;_0x3ac3ff[_0xcbb1('0x174')]=_0xc44e5b['dialAMDSilenceThreshold']||0x100;_0x3ac3ff['XMD-AMDMAXIMUMWORDLENGTH']=_0xc44e5b[_0xcbb1('0x175')]||0x1388;}if(utils['isOutboundQueue'](_0xc44e5b)){_0x3ac3ff[_0xcbb1('0x176')]=_0x4839c3['VoiceQueueId'];}else{_0x3ac3ff['XMD-CAMPAIGNID']=_0x4839c3[_0xcbb1('0xe3')];}for(var _0x219dc5 in _0x4839c3['Contact']){if(typeof _0x4839c3[_0xcbb1('0x177')][_0x219dc5]!==_0xcbb1('0xb0')){if(isNotNull(_0x4839c3[_0xcbb1('0x177')][_0x219dc5])&&_0x219dc5!=='id'&&_0x219dc5!==_0xcbb1('0x178')&&_0x219dc5!==_0xcbb1('0x179')&&_0x219dc5!==_0xcbb1('0x17a')){_0x3ac3ff[util[_0xcbb1('0x47')]('%s%s',_0xcbb1('0x17b'),_[_0xcbb1('0x17c')](_0x219dc5))]=_0x4839c3[_0xcbb1('0x177')][_0x219dc5];}}}var _0x593083=_0x750bb0[_0xcbb1('0x8e')](_0xc44e5b['Trunk'])?utils['getCallerId'](_0xc44e5b['Trunk']['callerid'],_0xc44e5b[_0xcbb1('0x17d')],_0xc44e5b[_0xcbb1('0x17e')]>0x0?utils['getCallerIdRandom'](_0xc44e5b[_0xcbb1('0x17f')],_0xc44e5b[_0xcbb1('0x17e')]):_0xc44e5b[_0xcbb1('0x17f')]):utils[_0xcbb1('0x180')](_[_0xcbb1('0xf4')](_0xc44e5b[_0xcbb1('0x90')])?_0xc44e5b['Trunk'][_0xcbb1('0x181')]:_0xc44e5b[_0xcbb1('0x90')]['callerid'],_0xc44e5b[_0xcbb1('0x17d')],_0xc44e5b[_0xcbb1('0x17e')]>0x0?utils[_0xcbb1('0x182')](_0xc44e5b[_0xcbb1('0x17f')],_0xc44e5b['dialRandomLastDigitCallerIdNumber']):_0xc44e5b[_0xcbb1('0x17f')]);if(_0x593083){_0x3ac3ff[_0xcbb1('0x183')]=_0x750bb0['actions'][_0x53c483][_0xcbb1('0x184')]=utils['extractCalleridName'](_0x593083);_0x3ac3ff[_0xcbb1('0x185')]=_0x4839c3[_0xcbb1('0x15e')];}_0xc44e5b['variables']=_0x3ac3ff;return ami['Action']({'actionid':_0x53c483,'action':_0xcbb1('0x15f'),'channel':_0x750bb0[_0xcbb1('0x8e')](_0xc44e5b[_0xcbb1('0x8f')])?util[_0xcbb1('0x47')]('SIP/%s/%s%s',_0xc44e5b[_0xcbb1('0x8f')][_0xcbb1('0x49')],isNotNull(_0xc44e5b[_0xcbb1('0x186')])?_0xc44e5b[_0xcbb1('0x186')][_0xcbb1('0x187')]()||'':'',_0xc44e5b[_0xcbb1('0x188')]>0x0?_0x4839c3['phone'][_0xcbb1('0x189')](_0xc44e5b['dialCutDigit']):_0x4839c3['phone']):util[_0xcbb1('0x47')](_0xcbb1('0x18a'),_[_0xcbb1('0xf4')](_0xc44e5b[_0xcbb1('0x90')])?_0xc44e5b[_0xcbb1('0x8f')]['name']:_0xc44e5b[_0xcbb1('0x90')][_0xcbb1('0x49')],isNotNull(_0xc44e5b[_0xcbb1('0x186')])?_0xc44e5b[_0xcbb1('0x186')][_0xcbb1('0x187')]()||'':'',_0xc44e5b[_0xcbb1('0x188')]>0x0?_0x4839c3[_0xcbb1('0x15e')]['substring'](_0xc44e5b[_0xcbb1('0x188')]):_0x4839c3[_0xcbb1('0x15e')]),'callerid':_0x593083,'Exten':_0xcbb1('0x10f'),'Context':'from-sip','Priority':'1','variable':_0x3ac3ff,'timeout':(_0xc44e5b[_0xcbb1('0x18b')]||0x1e)*0x3e8,'async':!![],'channelid':_0x53c483})['then'](function(_0x2f2232){return _0x18994a(_0x2f2232);})[_0xcbb1('0xa4')](function(_0x4b3a83){_0xc44e5b[_0xcbb1('0x18c')]+=0x1;var _0x57a861=new History(_0x750bb0[_0xcbb1('0x1f')][_0x53c483]);logger[_0xcbb1('0x6a')](util[_0xcbb1('0x47')](_0xcbb1('0x18d'),JSON[_0xcbb1('0x79')](_0x4b3a83)));_0x57a861[_0xcbb1('0x73')]=0xe;_0x57a861['statedesc']=_0xcbb1('0x18e');_0x57a861[_0xcbb1('0x76')]=moment()[_0xcbb1('0x47')](_0xcbb1('0xc6'));_0x57a861[_0xcbb1('0x75')]=_0x57a861[_0xcbb1('0x76')];hopperUtils[_0xcbb1('0xcc')](_0x57a861)[_0xcbb1('0xa4')](loggerCatch(_0xcbb1('0x18f')));_0x750bb0[_0xcbb1('0xce')](_0x57a861)[_0xcbb1('0xa4')](loggerCatch(_0xcbb1('0x18f')))[_0xcbb1('0x18')](function(){delete _0x750bb0['actions'][_0x53c483];return _0x280b8a(msgResponse(_0xcbb1('0x15f'),_0xcbb1('0x88'),_0xcbb1('0x190')));});});});};Dialer['prototype'][_0xcbb1('0x191')]=function(_0x215b84,_0x467b96,_0x1db72a){var _0x5ec08b=new History(_0x467b96);if(_0x5ec08b['countbusyretry']+_0x5ec08b[_0xcbb1('0x129')]+_0x5ec08b['countnoanswerretry']+_0x5ec08b['countnosuchnumberretry']+_0x5ec08b[_0xcbb1('0xdb')]+_0x5ec08b[_0xcbb1('0xea')]+_0x5ec08b[_0xcbb1('0x119')]+_0x5ec08b[_0xcbb1('0x120')]>=_0x1db72a[_0xcbb1('0x121')]-0x1){return!![];}switch(_0x215b84){case 0x3:if(_0x5ec08b[_0xcbb1('0x11e')]>=_0x1db72a['dialNoAnswerMaxRetry']-0x1){return!![];}hopperUtils[_0xcbb1('0xee')]({'active':![],'countnoanswerretry':_0x5ec08b[_0xcbb1('0x11e')]+=0x1,'scheduledat':moment()[_0xcbb1('0xde')](_0x1db72a[_0xcbb1('0x192')],_0xcbb1('0xdf'))['format'](_0xcbb1('0xc6')),'ContactId':_0x5ec08b[_0xcbb1('0xe0')],'ListId':_0x5ec08b[_0xcbb1('0xe1')],'VoiceQueueId':_0x5ec08b['VoiceQueueId']||undefined,'CampaignId':_0x5ec08b[_0xcbb1('0xe3')]||undefined})[_0xcbb1('0xa4')](loggerCatch(_0xcbb1('0x193')));break;case 0x5:if(_0x5ec08b['countbusyretry']>=_0x1db72a[_0xcbb1('0x194')]-0x1){return!![];}hopperUtils[_0xcbb1('0xee')]({'active':![],'countbusyretry':_0x5ec08b['countbusyretry']+=0x1,'scheduledat':moment()[_0xcbb1('0xde')](_0x1db72a['dialBusyRetryFrequency'],_0xcbb1('0xdf'))['format'](_0xcbb1('0xc6')),'ContactId':_0x5ec08b[_0xcbb1('0xe0')],'ListId':_0x5ec08b['ListId'],'VoiceQueueId':_0x5ec08b[_0xcbb1('0xe2')]||undefined,'CampaignId':_0x5ec08b[_0xcbb1('0xe3')]||undefined})['catch'](loggerCatch(_0xcbb1('0x195')));break;case 0x8:if(_0x5ec08b['countcongestionretry']>=_0x1db72a[_0xcbb1('0x196')]-0x1){return!![];}hopperUtils[_0xcbb1('0xee')]({'active':![],'countcongestionretry':_0x5ec08b[_0xcbb1('0x129')]+=0x1,'scheduledat':moment()[_0xcbb1('0xde')](_0x1db72a['dialCongestionRetryFrequency'],'minutes')[_0xcbb1('0x47')](_0xcbb1('0xc6')),'ContactId':_0x5ec08b[_0xcbb1('0xe0')],'ListId':_0x5ec08b['ListId'],'VoiceQueueId':_0x5ec08b[_0xcbb1('0xe2')]||undefined,'CampaignId':_0x5ec08b[_0xcbb1('0xe3')]||undefined})[_0xcbb1('0xa4')](loggerCatch(_0xcbb1('0x197')));break;case 0x0:if(_0x5ec08b[_0xcbb1('0x11f')]>=_0x1db72a[_0xcbb1('0x198')]-0x1){return!![];}else{hopperUtils[_0xcbb1('0xee')]({'active':![],'countnosuchnumberretry':_0x5ec08b[_0xcbb1('0x11f')]+=0x1,'scheduledat':moment()[_0xcbb1('0xde')](_0x1db72a[_0xcbb1('0x199')],_0xcbb1('0xdf'))[_0xcbb1('0x47')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x5ec08b[_0xcbb1('0xe0')],'ListId':_0x5ec08b[_0xcbb1('0xe1')],'VoiceQueueId':_0x5ec08b[_0xcbb1('0xe2')]||undefined,'CampaignId':_0x5ec08b[_0xcbb1('0xe3')]||undefined})[_0xcbb1('0xa4')](loggerCatch('[rescheduleContact][NoSuchNumber]'));}break;case 0xa:if(_0x5ec08b[_0xcbb1('0xdb')]>=_0x1db72a[_0xcbb1('0xdc')]-0x1){return!![];}hopperUtils[_0xcbb1('0xee')]({'active':![],'countdropretry':_0x5ec08b[_0xcbb1('0xdb')]+=0x1,'scheduledat':moment()[_0xcbb1('0xde')](_0x1db72a[_0xcbb1('0xd7')],_0xcbb1('0xdf'))[_0xcbb1('0x47')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x5ec08b[_0xcbb1('0xe0')],'ListId':_0x5ec08b['ListId'],'VoiceQueueId':_0x5ec08b[_0xcbb1('0xe2')]||undefined,'CampaignId':_0x5ec08b[_0xcbb1('0xe3')]||undefined})[_0xcbb1('0xa4')](loggerCatch(_0xcbb1('0x19a')));break;case 0xb:if(_0x5ec08b['countabandonedretry']>=_0x1db72a[_0xcbb1('0xec')]-0x1){return!![];}hopperUtils[_0xcbb1('0xee')]({'active':![],'countabandonedretry':_0x5ec08b[_0xcbb1('0xea')]+=0x1,'scheduledat':moment()[_0xcbb1('0xde')](_0x1db72a[_0xcbb1('0xeb')],_0xcbb1('0xdf'))['format']('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x5ec08b['ContactId'],'ListId':_0x5ec08b[_0xcbb1('0xe1')],'VoiceQueueId':_0x5ec08b[_0xcbb1('0xe2')]||undefined,'CampaignId':_0x5ec08b[_0xcbb1('0xe3')]||undefined})[_0xcbb1('0xa4')](loggerCatch(_0xcbb1('0x19b')));break;case 0x13:if(_0x5ec08b[_0xcbb1('0x119')]>=_0x1db72a[_0xcbb1('0x123')]-0x1){return!![];}hopperUtils[_0xcbb1('0xee')]({'active':![],'countmachineretry':_0x5ec08b[_0xcbb1('0x119')]+=0x1,'scheduledat':moment()[_0xcbb1('0xde')](_0x1db72a['dialMachineRetryFrequency'],_0xcbb1('0xdf'))[_0xcbb1('0x47')](_0xcbb1('0xc6')),'ContactId':_0x5ec08b[_0xcbb1('0xe0')],'ListId':_0x5ec08b[_0xcbb1('0xe1')],'VoiceQueueId':_0x5ec08b[_0xcbb1('0xe2')]||undefined,'CampaignId':_0x5ec08b[_0xcbb1('0xe3')]||undefined})[_0xcbb1('0xa4')](loggerCatch(_0xcbb1('0x124')));break;case 0x14:if(_0x5ec08b['countagentrejectretry']>=_0x1db72a[_0xcbb1('0x19c')]-0x1){return!![];}hopperUtils[_0xcbb1('0xee')]({'active':![],'countagentrejectretry':_0x5ec08b[_0xcbb1('0x120')]+=0x1,'scheduledat':moment()[_0xcbb1('0xde')](_0x1db72a['dialAgentRejectRetryFrequency'],_0xcbb1('0xdf'))[_0xcbb1('0x47')](_0xcbb1('0xc6')),'ContactId':_0x5ec08b[_0xcbb1('0xe0')],'ListId':_0x5ec08b['ListId'],'VoiceQueueId':_0x5ec08b[_0xcbb1('0xe2')]||undefined,'CampaignId':_0x5ec08b[_0xcbb1('0xe3')]||undefined})[_0xcbb1('0xa4')](loggerCatch(_0xcbb1('0x19d')));break;default:return!![];}};Dialer[_0xcbb1('0x16')]['callProgressDetecting']=function(_0x366341,_0x583e74,_0x36cdb9){var _0x40fb6a=this;var _0x2cf286=new History(_0x366341);var _0x2cb5c3=![];var _0x306650;var _0x23d687;return new Promise(function(_0x45d96e,_0x197827){if(_['isUndefined'](_0x583e74)&&typeof _0x583e74!==_0xcbb1('0x15c')){return _0x197827(msgResponse(_0xcbb1('0x19e'),_0xcbb1('0x95'),'entity\x20is\x20undefine'));}if(_[_0xcbb1('0x41')](_0x36cdb9)&&typeof _0x36cdb9!=='object'){return _0x197827(msgResponse('[callProgressDetecting]','Failure',_0xcbb1('0x19f')));}hopperUtils[_0xcbb1('0xd9')](_0x2cf286,_0x36cdb9[_0xcbb1('0xc8')],_0x583e74)['then'](function(_0x31d3a1){if(_0x31d3a1['additional']==0x1)_0x2cb5c3=!![];switch(_0x36cdb9['reason']){case'0':_0x583e74[_0xcbb1('0x1a0')]+=0x1;_0x2cf286[_0xcbb1('0x73')]=0x0;_0x2cf286['statedesc']=_0xcbb1('0x1a1');_0x2cf286['countnosuchnumberretry']+=0x1;_0x2cf286[_0xcbb1('0xd6')]+=0x1;ami[_0xcbb1('0x42')](_0xcbb1('0x1a2'),ut['buildObj'](_0x366341,'nosuchnumber'));_0x306650=_0x583e74[_0xcbb1('0x199')];_0x23d687=_0x583e74[_0xcbb1('0xd8')];hopperUtils[_0xcbb1('0xcc')](_0x2cf286)['catch'](loggerCatch(_0xcbb1('0x11c')));if(_0x40fb6a[_0xcbb1('0x191')](0x0,_0x366341,_0x583e74)&&!_0x2cb5c3){if(_0x2cf286['countnosuchnumberretry']>=_0x583e74[_0xcbb1('0x198')]){_0x40fb6a[_0xcbb1('0x12b')](_0x2cf286,_0x45d96e,_0x197827,'reason\x200\x20no\x20such\x20number....');}else{_0x40fb6a[_0xcbb1('0x122')](_0x2cf286,_0x45d96e,_0x197827,'reason\x200\x20no\x20such\x20number....');}}break;case'3':_0x583e74[_0xcbb1('0x1a3')]+=0x1;_0x2cf286[_0xcbb1('0x73')]=0x3;_0x2cf286[_0xcbb1('0x74')]='NoAnswer';_0x2cf286[_0xcbb1('0x11e')]+=0x1;_0x2cf286[_0xcbb1('0xd6')]+=0x1;var _0x36484c=ut[_0xcbb1('0x1a4')](_0x366341,_0x583e74);ami[_0xcbb1('0x42')](_0xcbb1('0x1a5'),_0x36484c);_0x306650=_0x583e74[_0xcbb1('0x192')];_0x23d687=_0x583e74['callAdditionalPhoneAfterMin'];hopperUtils[_0xcbb1('0xcc')](_0x2cf286)['catch'](loggerCatch(_0xcbb1('0x1a6')));if(_0x40fb6a['checkRetriveMax'](0x3,_0x366341,_0x583e74)&&!_0x2cb5c3){if(_0x2cf286[_0xcbb1('0x11e')]>=_0x583e74[_0xcbb1('0x1a7')]){_0x40fb6a[_0xcbb1('0x12b')](_0x2cf286,_0x45d96e,_0x197827,_0xcbb1('0x1a8'));}else{_0x40fb6a[_0xcbb1('0x122')](_0x2cf286,_0x45d96e,_0x197827,_0xcbb1('0x1a8'));}}break;case'5':_0x583e74[_0xcbb1('0x1a9')]+=0x1;_0x2cf286['state']=0x5;_0x2cf286['statedesc']=_0xcbb1('0x1aa');_0x2cf286[_0xcbb1('0x11d')]+=0x1;_0x2cf286['countglobal']+=0x1;ami[_0xcbb1('0x42')](_0xcbb1('0x1ab'),ut['buildObj'](_0x366341,_0xcbb1('0x1ac')));_0x306650=_0x583e74[_0xcbb1('0x1ad')];_0x23d687=_0x583e74['callAdditionalPhoneAfterMin'];hopperUtils[_0xcbb1('0xcc')](_0x2cf286)[_0xcbb1('0xa4')](loggerCatch(_0xcbb1('0x1ae')));if(_0x40fb6a[_0xcbb1('0x191')](0x5,_0x366341,_0x583e74)&&!_0x2cb5c3){if(_0x2cf286[_0xcbb1('0x11d')]>=_0x583e74['dialBusyMaxRetry']){_0x40fb6a['createStateFinal'](_0x2cf286,_0x45d96e,_0x197827,_0xcbb1('0x1af'));}else{_0x40fb6a['stateGlobal'](_0x2cf286,_0x45d96e,_0x197827,_0xcbb1('0x1af'));}}break;case'8':_0x583e74[_0xcbb1('0x1b0')]+=0x1;_0x2cf286['state']=0x8;_0x2cf286[_0xcbb1('0x74')]=_0xcbb1('0x1b1');_0x2cf286['countcongestionretry']+=0x1;_0x2cf286['countglobal']+=0x1;_0x306650=_0x583e74[_0xcbb1('0x1b2')];_0x23d687=_0x583e74['callAdditionalPhoneAfterMin'];ami[_0xcbb1('0x42')](_0xcbb1('0x1b3'),ut[_0xcbb1('0x114')](_0x366341,_0xcbb1('0x1b4')));hopperUtils[_0xcbb1('0xcc')](_0x2cf286)[_0xcbb1('0xa4')](loggerCatch('[syncAgentComplete][createHistory][8]'));if(_0x40fb6a['checkRetriveMax'](0x8,_0x366341,_0x583e74)&&!_0x2cb5c3){if(_0x2cf286[_0xcbb1('0x129')]>=_0x583e74['dialCongestionMaxRetry']){_0x40fb6a[_0xcbb1('0x12b')](_0x2cf286,_0x45d96e,_0x197827,'reason\x208\x20congestion');}else{_0x40fb6a[_0xcbb1('0x122')](_0x2cf286,_0x45d96e,_0x197827,_0xcbb1('0x1b5'));}}break;case'11':_0x583e74[_0xcbb1('0x1b6')]+=0x1;_0x2cf286[_0xcbb1('0x73')]=0xb;_0x2cf286[_0xcbb1('0x74')]=_0xcbb1('0xe8');_0x2cf286[_0xcbb1('0xea')]+=0x1;_0x2cf286['countglobal']+=0x1;_0x306650=_0x583e74['dialAbandonedRetryFrequency'];_0x23d687=_0x583e74[_0xcbb1('0xd8')];hopperUtils[_0xcbb1('0xcc')](_0x2cf286)['catch'](loggerCatch(_0xcbb1('0x1b7')));if(_0x40fb6a[_0xcbb1('0x191')](0xb,_0x366341,_0x583e74)&&!_0x2cb5c3){if(_0x2cf286['countabandonedretry']>=_0x583e74[_0xcbb1('0xec')]){_0x40fb6a[_0xcbb1('0x12b')](_0x2cf286,_0x45d96e,_0x197827,_0xcbb1('0x1b8'));}else{_0x40fb6a['stateGlobal'](_0x2cf286,_0x45d96e,_0x197827,_0xcbb1('0x1b8'));}}break;case'20':_0x583e74[_0xcbb1('0x1b9')]+=0x1;_0x2cf286[_0xcbb1('0x73')]=0x14;_0x2cf286[_0xcbb1('0x74')]=_0xcbb1('0x1ba');_0x2cf286[_0xcbb1('0x120')]+=0x1;_0x2cf286[_0xcbb1('0xd6')]+=0x1;_0x306650=_0x583e74[_0xcbb1('0x1bb')];_0x23d687=_0x583e74['callAdditionalPhoneAfterMin'];ami[_0xcbb1('0x42')](_0xcbb1('0x1bc'),ut['buildObj'](_0x366341,_0xcbb1('0x1bd')));hopperUtils['createHistory'](_0x2cf286)[_0xcbb1('0xa4')](loggerCatch(_0xcbb1('0x1be')));if(_0x40fb6a[_0xcbb1('0x191')](0x14,_0x366341,_0x583e74)&&!_0x2cb5c3){if(_0x2cf286['countagentrejectretry']>=_0x583e74[_0xcbb1('0x19c')]){_0x40fb6a['createStateFinal'](_0x2cf286,_0x45d96e,_0x197827,'reason\x2020\x20agentreject');}else{_0x40fb6a[_0xcbb1('0x122')](_0x2cf286,_0x45d96e,_0x197827,_0xcbb1('0x1bf'));}}break;default:_0x583e74['outboundUnknownCallsDay']+=0x1;_0x2cf286[_0xcbb1('0x73')]=0xc;_0x2cf286[_0xcbb1('0x74')]=_0x36cdb9[_0xcbb1('0xc8')];_0x306650=_0x583e74[_0xcbb1('0x1bb')];_0x23d687=_0x583e74[_0xcbb1('0xd8')];hopperUtils['createHistory'](_0x2cf286)['catch'](loggerCatch(_0xcbb1('0x1c0')));if(_0x40fb6a['checkRetriveMax'](_0x36cdb9[_0xcbb1('0xc8')],_0x366341,_0x583e74)&&!_0x2cb5c3){if(_0x2cf286[_0xcbb1('0x11d')]+_0x2cf286[_0xcbb1('0x129')]+_0x2cf286[_0xcbb1('0x11e')]+_0x2cf286[_0xcbb1('0x11f')]+_0x2cf286[_0xcbb1('0xdb')]+_0x2cf286[_0xcbb1('0xea')]+_0x2cf286['countmachineretry']+_0x2cf286[_0xcbb1('0x120')]>=_0x583e74[_0xcbb1('0x121')]){_0x40fb6a[_0xcbb1('0x122')](_0x2cf286,_0x45d96e,_0x197827,_0x36cdb9[_0xcbb1('0xc8')]);}else{_0x40fb6a[_0xcbb1('0x12b')](_0x2cf286,_0x45d96e,_0x197827,_0x36cdb9['reason']);}}}})['then'](function(){if(_0x2cb5c3){hopperUtils[_0xcbb1('0xef')](_0x2cf286,_0x306650,_0x23d687)[_0xcbb1('0x3f')](function(){return _0x45d96e(0x1);});}});});};Dialer[_0xcbb1('0x16')]['stateGlobal']=function(_0xd6105a,_0x59a1b7,_0x180207,_0x58cf5c){var _0x4eb230=new Final(_0xd6105a);_0x4eb230[_0xcbb1('0x73')]=0xf;_0x4eb230[_0xcbb1('0x74')]=_0xcbb1('0x1c1');this['createStateFinal'](_0x4eb230,_0x59a1b7,_0x180207,_0x58cf5c);};Dialer[_0xcbb1('0x16')][_0xcbb1('0x12b')]=function(_0x1df81b,_0x34b59d,_0x6cf676,_0x192d85){hopperUtils['moveContactManagedDialer'](_0x1df81b)[_0xcbb1('0x3f')](function(){return _0x34b59d(msgResponse(_0xcbb1('0x19e'),_0xcbb1('0x109'),_0x192d85));})['catch'](function(){return _0x6cf676(msgResponse(_0xcbb1('0x1c2'),_0xcbb1('0x95'),_0xcbb1('0x1c3')));});};Dialer[_0xcbb1('0x16')][_0xcbb1('0x7')]=function(_0x576c50){var _0x299bbb=_0x576c50['dialPredictiveOptimizationPercentage']/0x64;var _0x4c16ad=_0x576c50[_0xcbb1('0xd2')]/(_0x576c50[_0xcbb1('0xd2')]+_0x576c50[_0xcbb1('0xc7')]);var _0x272264=Math[_0xcbb1('0x1c4')](_0x576c50[_0xcbb1('0x1c5')]*(_0x576c50[_0xcbb1('0x1c6')]/0x64));var _0x397244=Math['round'](_0x576c50['predictiveIntervalAvailable']*(_0x576c50[_0xcbb1('0x1c7')]/0x64));var _0x236081=_0x576c50[_0xcbb1('0x13c')]+_0x576c50[_0xcbb1('0x13e')];var _0x8d19f7=Math['floor'](_0x576c50['erlangCalls']*_0x576c50[_0xcbb1('0x61')]*_0x576c50[_0xcbb1('0x1c8')]*_0x576c50[_0xcbb1('0x1c9')]);if(_[_0xcbb1('0x41')](_0x576c50['startProgressive'])){if(!_[_0xcbb1('0x41')](_0x576c50[_0xcbb1('0x22')])){_0x576c50['startPredictive']=undefined;loggerPredictive['error']('[startMethodPredictive][StartProgressive]',_0xcbb1('0x1ca'));}if(!_[_0xcbb1('0x41')](_0x576c50[_0xcbb1('0x68')])){loggerPredictive['error']('[startMethodPredictive][StartProgressive]',_0xcbb1('0x1cb'));clearInterval(_0x576c50['handlePredictive']);_0x576c50['handlePredictive']=undefined;}_0x576c50['startProgressive']=moment()[_0xcbb1('0x47')]('YYYY-MM-DD\x20HH:mm:ss');loggerPredictive['info'](_0x576c50[_0xcbb1('0x49')],_0xcbb1('0x1cc'),_0x576c50[_0xcbb1('0x23')]);this['handlePower'](_0x576c50,0x1);}else if(ifInterval(_0x576c50[_0xcbb1('0x1cd')],_0x576c50[_0xcbb1('0x23')])){this[_0xcbb1('0xb6')](_0x576c50,0x1);loggerPredictiveCalls[_0xcbb1('0x4d')](_0xcbb1('0x1ce'),_0x576c50[_0xcbb1('0x23')],_0x576c50[_0xcbb1('0x49')]);_0x576c50[_0xcbb1('0x5d')]=0x0;_0x576c50[_0xcbb1('0xd3')]=0x0;}else if(_0x299bbb<_0x4c16ad&&_0x576c50['dialPredictiveOptimization']===_0xcbb1('0x1cf')){clearPredictiveAttributes(_0x576c50);loggerPredictive[_0xcbb1('0x4d')](_0xcbb1('0x1d0'),_0xcbb1('0x1d1'),_0x4c16ad,'startProgressive',_0x576c50['name']);}else if(_0x8d19f7<_0x576c50[_0xcbb1('0xd3')]&&_0x576c50[_0xcbb1('0x1d2')]===_0xcbb1('0x1cf')){clearPredictiveAttributes(_0x576c50);loggerPredictive[_0xcbb1('0x4d')](_0xcbb1('0x1d3'),'Max\x20Drop\x20',_0x8d19f7,_0xcbb1('0x1d4'),_0x576c50[_0xcbb1('0xd3')],_0xcbb1('0x23'),_0x576c50['name']);}else if(!ifInterval(_0x576c50[_0xcbb1('0x1cd')],_0x576c50['startProgressive'])&&_[_0xcbb1('0x41')](_0x576c50[_0xcbb1('0x22')])&&!_[_0xcbb1('0x41')](_0x576c50[_0xcbb1('0x23')])){_0x576c50[_0xcbb1('0x22')]=moment()[_0xcbb1('0x47')](_0xcbb1('0xc6'));loggerPredictive[_0xcbb1('0x4d')](_0x576c50[_0xcbb1('0x49')],_0xcbb1('0x1d5'),_0x576c50[_0xcbb1('0x22')]);hopperUtils[_0xcbb1('0x1d6')](_0x576c50[_0xcbb1('0x1cd')])[_0xcbb1('0x3f')](this[_0xcbb1('0x1d7')](_0x576c50))[_0xcbb1('0x3f')](mergeDataErlangB(_0x576c50))['then'](this['startMethodPredictive'](_0x576c50))['catch'](loggerCatchPredictive('Predictive\x20after\x20first\x20interval',_0x576c50));}else if(!ifInterval(_0x576c50[_0xcbb1('0x1cd')],_0x576c50[_0xcbb1('0x22')])){_0x576c50['predictiveIntervalErlangCallsDroppedCalls']=0x0;_0x576c50[_0xcbb1('0x22')]=moment()[_0xcbb1('0x47')](_0xcbb1('0xc6'));loggerPredictive[_0xcbb1('0x4d')](_0x576c50[_0xcbb1('0x49')],_0xcbb1('0x1d8'),_0x576c50[_0xcbb1('0x22')]);clearInterval(_0x576c50[_0xcbb1('0x68')]);_0x576c50[_0xcbb1('0x68')]=undefined;hopperUtils[_0xcbb1('0x1d6')](_0x576c50['dialPredictiveInterval'])['then'](this[_0xcbb1('0x1d7')](_0x576c50))['then'](mergeDataErlangB(_0x576c50))[_0xcbb1('0x3f')](this['startMethodPredictive'](_0x576c50))[_0xcbb1('0xa4')](loggerCatchPredictive(_0xcbb1('0x1d9'),_0x576c50));}else if(_0x576c50[_0xcbb1('0x1c5')]&&_0x236081<_0x576c50[_0xcbb1('0x1c5')]-_0x397244){clearPredictiveAttributes(_0x576c50);loggerPredictive[_0xcbb1('0x4d')](_0x576c50[_0xcbb1('0x49')],_0xcbb1('0x1da'),_0x236081,_0xcbb1('0x1db'),_0x576c50[_0xcbb1('0x1c5')],'-',_0x397244,'=',_0x576c50[_0xcbb1('0x1c5')]-_0x397244,')');}else if(_0x576c50['predictiveIntervalAvailable']&&_0x236081>_0x576c50[_0xcbb1('0x1c5')]+_0x272264){clearPredictiveAttributes(_0x576c50);loggerPredictive[_0xcbb1('0x4d')](_0x576c50[_0xcbb1('0x49')],_0xcbb1('0x1da'),_0x236081,_0xcbb1('0x1dc'),_0x576c50[_0xcbb1('0x1c5')],'+',_0x272264,'=',_0x576c50[_0xcbb1('0x1c5')]+_0x272264,')');}};Dialer[_0xcbb1('0x16')][_0xcbb1('0x1d7')]=function(_0xf8a09){var _0x42e1ae=this;return function(_0x5db22a){return new Promise(function(_0x1c7945,_0x3f9f0f){_[_0xcbb1('0x63')](_0xf8a09,_0x5db22a[0x0]);if(checkGetDataPredictive(_0x5db22a[0x0])){var _0x50301e=_0xf8a09[_0xcbb1('0x1c5')]=_0xf8a09[_0xcbb1('0x13e')]+_0xf8a09['available'];var _0x333602=_0xf8a09['dialPredictiveInterval']*0x3c;var _0x4a46b3=_0x5db22a[0x0][_0xcbb1('0x58')]+_0x5db22a[0x0][_0xcbb1('0x56')];var _0x16e9f1=(_0x5db22a[0x0][_0xcbb1('0x50')]+_0x5db22a[0x0][_0xcbb1('0x52')]+_0x5db22a[0x0][_0xcbb1('0x54')])/_0x5db22a[0x0][_0xcbb1('0x4f')];_0xf8a09[_0xcbb1('0x1c8')]=_0x16e9f1>0x0?_0x16e9f1:0x1;switch(_0xf8a09[_0xcbb1('0x1d2')]){case'dropRate':var _0x34c8f5=_0xf8a09[_0xcbb1('0x1dd')]/0x64;return _0x42e1ae[_0xcbb1('0x1de')](_0x50301e,_0x333602,_0x4a46b3,_0x16e9f1,_0x34c8f5)[_0xcbb1('0x3f')](function(_0x103c8d){return _0x1c7945(_0x103c8d);});case _0xcbb1('0x1df'):var _0x24f2d3=_0xf8a09[_0xcbb1('0x1dd')]/0x64;return _0x42e1ae[_0xcbb1('0x1e0')](_0x50301e,_0x333602,_0x4a46b3,_0x16e9f1,_0x24f2d3)[_0xcbb1('0x3f')](function(_0x5c9e53){return _0x1c7945(_0x5c9e53);});default:return _0x3f9f0f(msgResponse(_0xcbb1('0x1e1'),_0xcbb1('0x95'),_0xcbb1('0x1e2')));}}else{return _0x3f9f0f(msgResponse(_0xcbb1('0x1e1'),_0xcbb1('0x95'),_0xcbb1('0x1e3')));}});};};Dialer[_0xcbb1('0x16')]['getDataPredictiveOld']=function(_0x4806d6){var _0x13dc40=this;return function(_0x12c0d7){return new Promise(function(_0x2eaf59,_0x423b4a){_[_0xcbb1('0x63')](_0x4806d6,_0x12c0d7[0x0]);if(checkGetDataPredictive(_0x12c0d7[0x0])){loggerPredictive[_0xcbb1('0x4d')](JSON[_0xcbb1('0x79')](_0x12c0d7[0x0]));if(_0x4806d6[_0xcbb1('0x1d2')]===_0xcbb1('0x1cf')){return _0x13dc40[_0xcbb1('0x14e')](_0x4806d6['id'])['then'](function(_0x2eff20){var _0x478fca=_0x4806d6[_0xcbb1('0x1e4')]-_0x2eff20[0x0][_0xcbb1('0x1e5')];var _0x46c681=_0x4806d6[_0xcbb1('0x1cd')]*0x3c;var _0x441138=_0x12c0d7[0x0]['predictiveIntervalAvgTalktime']+_0x12c0d7[0x0][_0xcbb1('0x56')];var _0xf4e2c7=(_0x12c0d7[0x0][_0xcbb1('0x50')]+_0x12c0d7[0x0]['predictiveIntervalDroppedCallsTimeout']+_0x12c0d7[0x0][_0xcbb1('0x54')])/_0x12c0d7[0x0][_0xcbb1('0x4f')];var _0x5ba83d=_0x4806d6[_0xcbb1('0x1dd')]/0x64;_0x4806d6[_0xcbb1('0x1e6')]=_0x2eff20[0x0][_0xcbb1('0x1e5')]||0x0;_0x4806d6[_0xcbb1('0x1c8')]=_0xf4e2c7>0x0?_0xf4e2c7:0x1;return _0x13dc40[_0xcbb1('0x1de')](_0x478fca,_0x46c681,_0x441138,_0xf4e2c7,_0x5ba83d);})['then'](function(_0x26ff85){return _0x2eaf59(_0x26ff85);})[_0xcbb1('0xa4')](function(_0x289e5f){return _0x423b4a(msgResponse(_0xcbb1('0x1e7'),_0xcbb1('0x95'),JSON[_0xcbb1('0x79')](_0x289e5f)));});}if(_0x4806d6[_0xcbb1('0x1d2')]===_0xcbb1('0x1df')){return _0x13dc40[_0xcbb1('0x14e')](_0x4806d6['id'])[_0xcbb1('0x3f')](function(_0x5b6aee){var _0x3bb01f=_0x4806d6[_0xcbb1('0x1e4')]-_0x5b6aee[0x0][_0xcbb1('0x1e5')];var _0x12c6ec=_0x4806d6['dialPredictiveInterval']*0x3c;var _0x2997eb=_0x12c0d7[0x0][_0xcbb1('0x58')]+_0x12c0d7[0x0]['predictiveIntervalAvgHoldtime'];var _0x25f373=(_0x12c0d7[0x0][_0xcbb1('0x50')]+_0x12c0d7[0x0][_0xcbb1('0x52')]+_0x12c0d7[0x0][_0xcbb1('0x54')])/_0x12c0d7[0x0]['predictiveIntervalTotalCalls'];var _0x17d17b=_0x4806d6[_0xcbb1('0x1dd')]/0x64;_0x4806d6[_0xcbb1('0x1e6')]=_0x5b6aee[0x0][_0xcbb1('0x1e5')]||0x0;_0x4806d6['predictiveIntervalHitRate']=_0x25f373>0x0?_0x25f373:0x1;return _0x13dc40[_0xcbb1('0x1e0')](_0x3bb01f,_0x12c6ec,_0x2997eb,_0x25f373,_0x17d17b);})[_0xcbb1('0x3f')](function(_0x5ecfa6){return _0x2eaf59(_0x5ecfa6);})[_0xcbb1('0xa4')](function(_0x3a5f2a){return _0x423b4a(msgResponse(_0xcbb1('0x1e7'),_0xcbb1('0x95'),JSON[_0xcbb1('0x79')](_0x3a5f2a)));});}}else{return _0x423b4a(msgResponse('[getDataPredictive]',_0xcbb1('0x95'),_0xcbb1('0x1e3')));}});};};Dialer[_0xcbb1('0x16')][_0xcbb1('0x1e8')]=function(_0x1c1328){var _0x15f80c=this;return function(){var _0x5f564f=0x0;var _0x373c3c=Math['floor'](_0x1c1328[_0xcbb1('0x5f')]*0x3e8);if(_0x373c3c>0x0){_0x373c3c=_0x373c3c<0x64?0x64:_0x373c3c;loggerPredictive[_0xcbb1('0x4d')](_0x1c1328['name'],'one\x20call\x20every:',_0x373c3c,_0xcbb1('0x1e9'));_0x1c1328['handlePredictive']=setInterval(function(){_0x15f80c[_0xcbb1('0x68')](_0x1c1328);loggerPredictiveCalls['info'](_0xcbb1('0x1ea'),_0x5f564f+=0x1);},_0x373c3c);}else{loggerPredictive['info'](_0x1c1328[_0xcbb1('0x49')],'fail\x20to\x20scheduled\x20calls');}};};Dialer[_0xcbb1('0x16')][_0xcbb1('0x1eb')]=function(_0x2135ec,_0x1328b9){var _0x2b5f25=this;return function(_0xc62479){if(_[_0xcbb1('0x4b')](_0xc62479)){if(_[_0xcbb1('0xf4')](_0x1328b9[_0xcbb1('0x155')])||!_0x1328b9['recallme']){if(_0x2135ec[_0xcbb1('0xb4')]==='booked'){_0x2135ec[_0xcbb1('0x77')]=_[_0xcbb1('0x41')](_0x2135ec[_0xcbb1('0x77')])?!![]:_0x2135ec['queueStatusComplete'];var _0xc9d9de=uuid['v4']();_0x2b5f25['actions'][_0xc9d9de]=new Action(_0x2135ec,_0x1328b9,_0xc9d9de);loggerBooked[_0xcbb1('0x4d')]('[booked][checkContactBlack]',_0xc9d9de,_0xcbb1('0x1ec'),JSON['stringify'](_0x2135ec['queueStatusComplete']),_0xcbb1('0x1ed'),_0x2135ec['name']);if(_0x2135ec[_0xcbb1('0x77')]){_0x2135ec[_0xcbb1('0x77')]=![];_0x2b5f25[_0xcbb1('0x25')][_0x2b5f25[_0xcbb1('0x1f')][_0xc9d9de]['queue']]=[];ami[_0xcbb1('0x9e')]({'actionid':_0xc9d9de,'action':_0xcbb1('0x1ee'),'queue':_0x2135ec['name']})[_0xcbb1('0xa4')](function(){_0x2b5f25['updateOriginated'](_0x2135ec);hopperUtils[_0xcbb1('0xee')]({'active':![],'ContactId':_0x2b5f25[_0xcbb1('0x1f')][_0xc9d9de][_0xcbb1('0xe0')],'ListId':_0x2b5f25[_0xcbb1('0x1f')][_0xc9d9de][_0xcbb1('0xe1')],'VoiceQueueId':_0x2b5f25[_0xcbb1('0x1f')][_0xc9d9de]['VoiceQueueId']||undefined,'CampaignId':_0x2b5f25[_0xcbb1('0x1f')][_0xc9d9de][_0xcbb1('0xe3')]||undefined})['catch'](loggerCatch(_0xcbb1('0x1ef')));delete _0x2b5f25[_0xcbb1('0x1f')][_0xc9d9de];});}else{loggerBooked[_0xcbb1('0x4d')]('[booked][checkContactBlack][else]',JSON['stringify'](_0x2135ec[_0xcbb1('0x77')]),_0xcbb1('0x1ed'),_0x2135ec['name']);_0x2b5f25['updateOriginated'](_0x2135ec);hopperUtils[_0xcbb1('0xee')]({'active':![],'ContactId':_0x2b5f25['actions'][_0xc9d9de][_0xcbb1('0xe0')],'ListId':_0x2b5f25[_0xcbb1('0x1f')][_0xc9d9de][_0xcbb1('0xe1')],'VoiceQueueId':_0x2b5f25[_0xcbb1('0x1f')][_0xc9d9de][_0xcbb1('0xe2')]||undefined,'CampaignId':_0x2b5f25[_0xcbb1('0x1f')][_0xc9d9de][_0xcbb1('0xe3')]||undefined})['catch'](loggerCatch(_0xcbb1('0x1ef')));delete _0x2b5f25['actions'][_0xc9d9de];}}else{return _0x2b5f25[_0xcbb1('0x15b')](_0x2135ec,_0x1328b9);}}else{if(utils[_0xcbb1('0x64')](undefined,_0x1328b9[_0xcbb1('0x1f0')])<_0x2135ec[_0xcbb1('0x1f1')]*0x3c){if(_0x1328b9['Agent']&&!_0x1328b9[_0xcbb1('0x147')][_0xcbb1('0x1f2')]){_0x2b5f25['preview'][_0xcbb1('0xfb')](_0x1328b9['id'])[_0xcbb1('0x18')](function(){_0x2b5f25['updateOriginated'](_0x2135ec);});}else{hopperUtils[_0xcbb1('0x1f3')]({'active':![]},_0x1328b9['id'],0x1)['finally'](function(){_0x2b5f25[_0xcbb1('0xc3')](_0x2135ec);});}}else{_0x2135ec[_0xcbb1('0x1f4')]+=0x1;_0x2b5f25[_0xcbb1('0xc3')](_0x2135ec);if(_0x2135ec[_0xcbb1('0x1f5')]){hopperUtils[_0xcbb1('0xee')]({'active':![],'recallme':![],'UserId':null,'ContactId':_0x1328b9[_0xcbb1('0xe0')],'ListId':_0x1328b9[_0xcbb1('0xe1')],'VoiceQueueId':_0x1328b9['VoiceQueueId']||undefined,'CampaignId':_0x1328b9[_0xcbb1('0xe3')]||undefined})[_0xcbb1('0xa4')](loggerCatch(_0xcbb1('0x1f6')));hopperUtils[_0xcbb1('0xcc')](createObjHistory(_0x2135ec,_0x1328b9,utils['CAMPAIGN_STATUS'][_0xcbb1('0x1f7')],0x17,_0xcbb1('0x1f8')))[_0xcbb1('0xa4')](loggerCatch(_0xcbb1('0x1f9')));}else{_0x2b5f25['saveInDb'](createObjHistory(_0x2135ec,_0x1328b9,utils['CAMPAIGN_STATUS'][_0xcbb1('0x1fa')],0x16,_0xcbb1('0x1fb')),_0xcbb1('0x1fc'),_0xcbb1('0x1fd'));}}}}else{_0x2135ec['outboundBlacklistCallsDay']+=0x1;_0x2b5f25['saveInDb'](createObjHistory(_0x2135ec,_0x1328b9,utils[_0xcbb1('0x6f')][_0xcbb1('0x1fe')],0xd,'Blacklist'),_0xcbb1('0x1ff'),_0xcbb1('0x200'));throw _0xcbb1('0x201');}};};Dialer[_0xcbb1('0x16')]['handleIvr']=function(_0x24bd04){var _0x52f22e=this;var _0x375d31=_0x24bd04[_0xcbb1('0x202')]-_0x24bd04[_0xcbb1('0x83')]-_0x24bd04['temp'];emitCampaignSummary(_0x24bd04);if(_0x375d31>0x0){if(_0x375d31>this[_0xcbb1('0x1d')]){_0x375d31=this[_0xcbb1('0x1d')];}_0x24bd04[_0xcbb1('0x203')]+=_0x375d31;hopperUtils[_0xcbb1('0x204')](_0x24bd04,_0x375d31)[_0xcbb1('0x3f')](function(_0x202c82){_0x24bd04['temp']-=_0x375d31;_0x24bd04[_0xcbb1('0x203')]=_0x24bd04['temp']>0x0?_0x24bd04[_0xcbb1('0x203')]:0x0;if(!utils[_0xcbb1('0x205')](_0x202c82)){_0x24bd04[_0xcbb1('0x6e')]=utils[_0xcbb1('0x6f')]['NO_AVAILABLE_CONTACTS'];logger[_0xcbb1('0x4d')](_0xcbb1('0x206')+_0x24bd04[_0xcbb1('0x49')]);}else{_0x24bd04[_0xcbb1('0x83')]+=_0x202c82['length'];_0x24bd04['message']=utils[_0xcbb1('0x6f')]['RUNNING'];for(var _0xf41bb=0x0;_0xf41bb<_0x202c82[_0xcbb1('0x9c')];_0xf41bb+=0x1){_0x24bd04[_0xcbb1('0x207')]+=0x1;if(_[_0xcbb1('0xf4')](_0x202c82[_0xf41bb])||_[_0xcbb1('0xf4')](_0x202c82[_0xf41bb][_0xcbb1('0x177')])||_[_0xcbb1('0xf4')](_0x202c82[_0xf41bb][_0xcbb1('0x15e')])){_0x52f22e[_0xcbb1('0x153')](_0xcbb1('0x208'),_0x24bd04,_0x202c82[_0xf41bb]);}else{hopperUtils[_0xcbb1('0x209')](_[_0xcbb1('0x7a')](_0x202c82[_0xf41bb],[_0xcbb1('0xe3'),'phone']))[_0xcbb1('0x3f')](_0x52f22e[_0xcbb1('0x1eb')](_0x24bd04,_0x202c82[_0xf41bb]))['catch'](_0x52f22e[_0xcbb1('0x152')](_0xcbb1('0x20a'),_0x24bd04));}}}})[_0xcbb1('0xa4')](loggerGetContactDialer(_0xcbb1('0x20b'),_0x24bd04,_0x375d31));}};Dialer['prototype'][_0xcbb1('0xb6')]=function(_0x53c309,_0x25888a){var _0x2899ad=this;var _0x174fe5=[];if(_0x25888a<0x1||_0x53c309[_0xcbb1('0xb4')]==='booked'){_0x25888a=0x1;}var _0x2ccfc9=Math['floor'](_0x53c309[_0xcbb1('0x13c')]*_0x25888a)-_0x53c309[_0xcbb1('0x83')]-_0x53c309[_0xcbb1('0x203')];if(_0x53c309['dialLimitQueue']>0x0){var _0x1a0e95=_0x53c309['dialLimitQueue']-_0x53c309['originated']-_0x53c309[_0xcbb1('0x13e')]-_0x53c309[_0xcbb1('0x203')]-_0x53c309['pTalking'];if(_0x2ccfc9>_0x1a0e95){_0x2ccfc9=_0x1a0e95;}}if(_0x2ccfc9>0x0){if(_0x53c309[_0xcbb1('0xb4')]===_0xcbb1('0x6')){_0x2ccfc9=0x1;}if(_0x2ccfc9>this[_0xcbb1('0x1d')]){_0x2ccfc9=this[_0xcbb1('0x1d')];}_0x53c309['temp']+=_0x2ccfc9;for(var _0x22ac3a in this[_0xcbb1('0xf7')]){if(typeof this[_0xcbb1('0xf7')][_0x22ac3a]!=='undefined'){if(this[_0xcbb1('0xf7')][_0x22ac3a]['state']===_0xcbb1('0x20c')&&this[_0xcbb1('0xf7')][_0x22ac3a][_0xcbb1('0x8b')]==='reachable'){_0x174fe5[_0xcbb1('0x9d')](this[_0xcbb1('0xf7')][_0x22ac3a]['id']);}}}hopperUtils[_0xcbb1('0x20d')](_0x53c309,_0x174fe5,_0x2ccfc9)[_0xcbb1('0x3f')](function(_0x198148){_0x53c309[_0xcbb1('0x203')]-=_0x2ccfc9;_0x53c309[_0xcbb1('0x203')]=_0x53c309[_0xcbb1('0x203')]>0x0?_0x53c309[_0xcbb1('0x203')]:0x0;if(!utils[_0xcbb1('0x205')](_0x198148)){hopperUtils[_0xcbb1('0x20e')](_0x53c309)[_0xcbb1('0x3f')](sendMessageReschedule(_0x53c309))[_0xcbb1('0xa4')](loggerCatch(_0xcbb1('0x20f')));}else{_0x53c309[_0xcbb1('0x83')]+=_0x198148[_0xcbb1('0x9c')];_0x53c309['message']=_0x53c309['dialMethod']==='booked'?utils[_0xcbb1('0x6f')][_0xcbb1('0x167')]:utils['CAMPAIGN_STATUS'][_0xcbb1('0x210')];for(var _0x305247=0x0;_0x305247<_0x198148[_0xcbb1('0x9c')];_0x305247+=0x1){if(_[_0xcbb1('0xf4')](_0x198148[_0x305247])||_[_0xcbb1('0xf4')](_0x198148[_0x305247][_0xcbb1('0x177')])||_[_0xcbb1('0xf4')](_0x198148[_0x305247][_0xcbb1('0x15e')])){_0x2899ad[_0xcbb1('0x153')](_0xcbb1('0x208'),_0x53c309,_0x198148[_0x305247]);}else{hopperUtils[_0xcbb1('0x211')](_['pick'](_0x198148[_0x305247],[_0xcbb1('0xe2'),'phone']))[_0xcbb1('0x3f')](_0x2899ad[_0xcbb1('0x1eb')](_0x53c309,_0x198148[_0x305247]))[_0xcbb1('0xa4')](_0x2899ad[_0xcbb1('0x152')](_0xcbb1('0x208'),_0x53c309));}}}})[_0xcbb1('0xa4')](loggerGetContactDialer(_0xcbb1('0x212'),_0x53c309,_0x2ccfc9));}};Dialer[_0xcbb1('0x16')][_0xcbb1('0x68')]=function(_0x2fdb92){if(_0x2fdb92[_0xcbb1('0x213')]>0x0){var _0x7287e4=_0x2fdb92[_0xcbb1('0x213')]-_0x2fdb92[_0xcbb1('0x83')]-_0x2fdb92[_0xcbb1('0x13e')];if(_0x7287e4>0x0){this[_0xcbb1('0x214')](_0x2fdb92);}else{loggerPredictiveCalls[_0xcbb1('0x4d')](_0xcbb1('0x215'));}}else{this[_0xcbb1('0x214')](_0x2fdb92);}};Dialer[_0xcbb1('0x16')][_0xcbb1('0x214')]=function(_0x57b8f8){var _0xc1dc82=this;var _0x532d90=[];_0x57b8f8[_0xcbb1('0x83')]+=0x1;for(var _0x32558f in this[_0xcbb1('0xf7')]){if(typeof this[_0xcbb1('0xf7')][_0x32558f]!==_0xcbb1('0xb0')){if(this[_0xcbb1('0xf7')][_0x32558f]['state']===_0xcbb1('0x20c')&&this[_0xcbb1('0xf7')][_0x32558f][_0xcbb1('0x8b')]===_0xcbb1('0x8c')){_0x532d90[_0xcbb1('0x9d')](this[_0xcbb1('0xf7')][_0x32558f]['id']);}}}return this[_0xcbb1('0x20d')](_0x57b8f8['id'],_0x532d90,0x1,_0x57b8f8[_0xcbb1('0x216')],_0x57b8f8)['then'](function(_0x4a3c0e){if(!utils[_0xcbb1('0x205')](_0x4a3c0e)){utils[_0xcbb1('0x6c')](_0x57b8f8,0x1,0x0);return hopperUtils[_0xcbb1('0x20e')](_0x57b8f8)['then'](sendMessageReschedule(_0x57b8f8))['catch'](loggerCatch(_0xcbb1('0x20f')));}else{_0x57b8f8[_0xcbb1('0x6e')]=utils[_0xcbb1('0x6f')][_0xcbb1('0x210')];if(_[_0xcbb1('0xf4')](_0x4a3c0e[0x0])||_[_0xcbb1('0xf4')](_0x4a3c0e[0x0][_0xcbb1('0x177')])||_[_0xcbb1('0xf4')](_0x4a3c0e[0x0][_0xcbb1('0x15e')])){_0xc1dc82['emptyContact'](_0xcbb1('0x208'),_0x57b8f8,_0x4a3c0e[0x0]);}else{return hopperUtils[_0xcbb1('0x211')](_[_0xcbb1('0x7a')](_0x4a3c0e[0x0],['VoiceQueueId',_0xcbb1('0x15e')]))['then'](_0xc1dc82['checkContactBlack'](_0x57b8f8,_0x4a3c0e[0x0]))['catch'](_0xc1dc82['loggerHandler'](_0xcbb1('0x217'),_0x57b8f8));}}})[_0xcbb1('0xa4')](loggerGetContactDialer(_0xcbb1('0x218'),_0x57b8f8,0x1));};Dialer[_0xcbb1('0x16')][_0xcbb1('0x1de')]=function(_0x2480ba,_0x4af14a,_0xbfbf2a,_0x478f8a,_0xe30ce9,_0x552e5a){loggerPredictive['info']('--------\x20Drop\x20Rate\x20--------');loggerPredictive[_0xcbb1('0x4d')](_0xcbb1('0x219'),_0x2480ba);loggerPredictive[_0xcbb1('0x4d')]('Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x4af14a);loggerPredictive[_0xcbb1('0x4d')](_0xcbb1('0x21a'),_0xbfbf2a);loggerPredictive['info'](_0xcbb1('0x21b'),_0x478f8a);loggerPredictive[_0xcbb1('0x4d')]('Amax:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0xe30ce9);loggerPredictive['info'](_0xcbb1('0x57'));return new Promise(function(_0xdd54d,_0x19f6a0){if(_0x2480ba<=0x0||isNaN(_0x2480ba)){return _0x19f6a0(msgResponse('[abandonmentRate]',_0xcbb1('0x88'),_0xcbb1('0x21c')+_0x2480ba));}if(_0xbfbf2a<=0x0||isNaN(_0xbfbf2a)){return _0x19f6a0(msgResponse(_0xcbb1('0x21d'),_0xcbb1('0x88'),_0xcbb1('0x21e')+_0xbfbf2a));}if(_0x478f8a<=0x0||isNaN(_0x478f8a)){return _0x19f6a0(msgResponse('[abandonmentRate]',_0xcbb1('0x88'),'p\x20=\x20'+_0x478f8a));}if(_0x4af14a<=0x0||isNaN(_0x4af14a)){return _0x19f6a0(msgResponse(_0xcbb1('0x21d'),_0xcbb1('0x88'),_0xcbb1('0x21f')+_0x4af14a));}if(_0xe30ce9<=0x0||isNaN(_0xe30ce9)){return _0x19f6a0(msgResponse('[abandonmentRate]',_0xcbb1('0x88'),_0xcbb1('0x220')+_0xe30ce9));}_0x552e5a=_0x552e5a||0x0;var _0x50b507=0x1/_0xbfbf2a;var _0x2f914b=0x0;var _0x4eeeb0=0x0;var _0x4e0812=0x0;var _0x1d48fd=0x0;for(var _0x5dc5c4=0x0;_0x4e0812<_0xe30ce9;_0x5dc5c4+=0x1){_0x4eeeb0=_0x5dc5c4/_0x4af14a;_0x2f914b=(_0x478f8a*_0x4eeeb0+_0x552e5a)/_0x50b507;_0x4e0812=utils[_0xcbb1('0x221')](_0x2f914b,_0x2480ba);_0x1d48fd=_0x2f914b/_0x2480ba*(0x1-utils[_0xcbb1('0x221')](_0x2f914b,_0x2480ba));}return _0xdd54d({'erlangCalls':_0x5dc5c4,'erlangCallToSecond':_0x4af14a/_0x5dc5c4,'erlangAbandonmentRate':_0x4e0812,'erlangBusyFactor':_0x1d48fd});});};Dialer[_0xcbb1('0x16')]['busyFactor']=function(_0xeda3c0,_0x24e151,_0xfa4393,_0x51cb71,_0x32b7c1,_0x9cb4a){loggerPredictive[_0xcbb1('0x4d')]('----\x20Agent\x20Busy\x20Factor\x20----');loggerPredictive[_0xcbb1('0x4d')](_0xcbb1('0x219'),_0xeda3c0);loggerPredictive['info'](_0xcbb1('0x222'),_0x24e151);loggerPredictive[_0xcbb1('0x4d')](_0xcbb1('0x21a'),_0xfa4393);loggerPredictive['info'](_0xcbb1('0x21b'),_0x51cb71);loggerPredictive[_0xcbb1('0x4d')](_0xcbb1('0x223'),_0x32b7c1);loggerPredictive['info'](_0xcbb1('0x57'));return new Promise(function(_0x404c47,_0xdba2a6){if(_0xeda3c0<=0x0||isNaN(_0xeda3c0)){return _0xdba2a6(msgResponse(_0xcbb1('0x224'),_0xcbb1('0x88'),_0xcbb1('0x21c')+_0xeda3c0));}if(_0xfa4393<=0x0||isNaN(_0xfa4393)){return _0xdba2a6(msgResponse(_0xcbb1('0x224'),_0xcbb1('0x88'),_0xcbb1('0x21e')+_0xfa4393));}if(_0x51cb71<=0x0||isNaN(_0x51cb71)){return _0xdba2a6(msgResponse('[busyFactor]',_0xcbb1('0x88'),_0xcbb1('0x225')+_0x51cb71));}if(_0x24e151<=0x0||isNaN(_0x24e151)){return _0xdba2a6(msgResponse('[busyFactor]','Error',_0xcbb1('0x21f')+_0x24e151));}if(_0x32b7c1<=0x0||isNaN(_0x32b7c1)){return _0xdba2a6(msgResponse('[busyFactor]',_0xcbb1('0x88'),'Umin\x20=\x20'+_0x32b7c1));}_0x9cb4a=_0x9cb4a||0x0;var _0x589060=0x1/_0xfa4393;var _0x1c8f81=0x0;var _0x545cfa=0x0;var _0x946216=0x0;var _0x33ff1a=0x0;for(var _0x309987=0x0;_0x33ff1a<_0x32b7c1;_0x309987+=0x1){_0x545cfa=_0x309987/_0x24e151;_0x1c8f81=(_0x51cb71*_0x545cfa+_0x9cb4a)/_0x589060;_0x946216=utils['erlangb'](_0x1c8f81,_0xeda3c0);_0x33ff1a=_0x1c8f81/_0xeda3c0*(0x1-utils[_0xcbb1('0x221')](_0x1c8f81,_0xeda3c0));}return _0x404c47({'erlangCalls':_0x309987,'erlangCallToSecond':_0x24e151/_0x309987,'erlangAbandonmentRate':_0x946216,'erlangBusyFactor':_0x33ff1a});});};module[_0xcbb1('0x226')]=Dialer;
\ No newline at end of file
index d23dead..632a0cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea34=['countagentrejectretry','ContactId','ListId','UserId','VoiceQueueId','CampaignId','ContactFirstName','format','callback','callbackat','recallme','originatecalleridnum','originatecalleridname','prototype','getCaller','\x22%s\x22\x20<%s>','dialCutDigit','substring','getQueue','queue','exports','util','lodash','moment','isNil','string','voiceQueue','name','phone','firstName','Contact','lastName','number','active','type','dialQueueTimeout','scheduledat','countbusyretry','countcongestionretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry'];(function(_0x97aa5a,_0x1db1d9){var _0x544dee=function(_0x37f07d){while(--_0x37f07d){_0x97aa5a['push'](_0x97aa5a['shift']());}};_0x544dee(++_0x1db1d9);}(_0xea34,0x142));var _0x4ea3=function(_0x2be8c2,_0x14a4b5){_0x2be8c2=_0x2be8c2-0x0;var _0x97f531=_0xea34[_0x2be8c2];return _0x97f531;};'use strict';var util=require(_0x4ea3('0x0'));var _=require(_0x4ea3('0x1'));var moment=require(_0x4ea3('0x2'));function checkNameSurname(_0xb0a756,_0x1aad2e,_0x5042ad){var _0xc9968e='';if(!_[_0x4ea3('0x3')](_0x1aad2e)&&'string'===typeof _0x1aad2e){_0xc9968e+=_0x1aad2e;}if(!_['isNil'](_0x5042ad)&&_0x4ea3('0x4')===typeof _0x5042ad){_0xc9968e+='\x20'+_0x5042ad;}if(_0xc9968e!==''){return _0xc9968e;}return _0xb0a756;}function Action(_0x1cec15,_0x301745,_0x580e90){this[_0x4ea3('0x5')]=_0x1cec15;this['uniqueid']=_0x580e90||undefined;this[_0x4ea3('0x6')]=checkNameSurname(_0x301745['Contact'][_0x4ea3('0x7')],_0x301745['Contact'][_0x4ea3('0x8')],_0x301745[_0x4ea3('0x9')][_0x4ea3('0xa')]);this[_0x4ea3('0xb')]=_0x301745[_0x4ea3('0x7')];this['queue']=_0x1cec15[_0x4ea3('0x6')];this[_0x4ea3('0xc')]=_0x301745[_0x4ea3('0xc')]||![];this[_0x4ea3('0xd')]=_0x1cec15[_0x4ea3('0xd')];this['dialQueueTimeout']=_0x1cec15[_0x4ea3('0xe')]||0x3;this[_0x4ea3('0xf')]=_0x301745['scheduledat'];this['countbusyretry']=_0x301745[_0x4ea3('0x10')];this[_0x4ea3('0x11')]=_0x301745[_0x4ea3('0x11')];this['countnoanswerretry']=_0x301745['countnoanswerretry'];this[_0x4ea3('0x12')]=_0x301745[_0x4ea3('0x12')];this[_0x4ea3('0x13')]=_0x301745[_0x4ea3('0x13')];this[_0x4ea3('0x14')]=_0x301745[_0x4ea3('0x14')];this['countmachineretry']=_0x301745[_0x4ea3('0x15')];this[_0x4ea3('0x16')]=_0x301745[_0x4ea3('0x16')];this[_0x4ea3('0x17')]=_0x301745[_0x4ea3('0x17')];this[_0x4ea3('0x18')]=_0x301745[_0x4ea3('0x18')];this['UserId']=_0x301745[_0x4ea3('0x19')];this[_0x4ea3('0x1a')]=_0x301745[_0x4ea3('0x1a')];this[_0x4ea3('0x1b')]=_0x301745[_0x4ea3('0x1b')];this['idHopper']=_0x301745['id'];this[_0x4ea3('0x1c')]=_0x301745[_0x4ea3('0x9')]['firstName']||'';this['starttime']=moment()[_0x4ea3('0x1d')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x4ea3('0x1e')]=_0x301745['callback'];this['callbackuniqueid']=_0x301745['callbackuniqueid'];this[_0x4ea3('0x1f')]=_0x301745['callbackat'];this[_0x4ea3('0x20')]=_0x301745[_0x4ea3('0x20')];this[_0x4ea3('0x21')]='';this[_0x4ea3('0x22')]='';}Action[_0x4ea3('0x23')][_0x4ea3('0x24')]=function(){return util[_0x4ea3('0x1d')](_0x4ea3('0x25'),this[_0x4ea3('0x6')],this[_0x4ea3('0x5')][_0x4ea3('0x26')]>0x0?this[_0x4ea3('0xb')][_0x4ea3('0x27')](this[_0x4ea3('0x5')][_0x4ea3('0x26')]):this[_0x4ea3('0xb')]);};Action[_0x4ea3('0x23')][_0x4ea3('0x28')]=function(){return this[_0x4ea3('0x29')];};module[_0x4ea3('0x2a')]=Action;
\ No newline at end of file
+var _0x1c86=['countcongestionretry','countnoanswerretry','countdropretry','countabandonedretry','countmachineretry','ContactId','ListId','UserId','VoiceQueueId','CampaignId','idHopper','ContactFirstName','starttime','format','callback','callbackuniqueid','callbackat','recallme','originatecalleridname','prototype','\x22%s\x22\x20<%s>','dialCutDigit','substring','getQueue','exports','util','moment','isNil','string','voiceQueue','name','Contact','phone','number','active','type','dialQueueTimeout','scheduledat','countbusyretry'];(function(_0x3a948e,_0x5a2108){var _0x2a8291=function(_0x5e9310){while(--_0x5e9310){_0x3a948e['push'](_0x3a948e['shift']());}};_0x2a8291(++_0x5a2108);}(_0x1c86,0x67));var _0x61c8=function(_0x1ccc3f,_0x547108){_0x1ccc3f=_0x1ccc3f-0x0;var _0x29f78a=_0x1c86[_0x1ccc3f];return _0x29f78a;};'use strict';var util=require(_0x61c8('0x0'));var _=require('lodash');var moment=require(_0x61c8('0x1'));function checkNameSurname(_0x58bb41,_0x2b4546,_0xf8e971){var _0x2ec297='';if(!_[_0x61c8('0x2')](_0x2b4546)&&_0x61c8('0x3')===typeof _0x2b4546){_0x2ec297+=_0x2b4546;}if(!_[_0x61c8('0x2')](_0xf8e971)&&'string'===typeof _0xf8e971){_0x2ec297+='\x20'+_0xf8e971;}if(_0x2ec297!==''){return _0x2ec297;}return _0x58bb41;}function Action(_0x453e8f,_0x25d363,_0x2ac098){this[_0x61c8('0x4')]=_0x453e8f;this['uniqueid']=_0x2ac098||undefined;this[_0x61c8('0x5')]=checkNameSurname(_0x25d363[_0x61c8('0x6')][_0x61c8('0x7')],_0x25d363[_0x61c8('0x6')]['firstName'],_0x25d363[_0x61c8('0x6')]['lastName']);this[_0x61c8('0x8')]=_0x25d363[_0x61c8('0x7')];this['queue']=_0x453e8f[_0x61c8('0x5')];this[_0x61c8('0x9')]=_0x25d363[_0x61c8('0x9')]||![];this[_0x61c8('0xa')]=_0x453e8f[_0x61c8('0xa')];this[_0x61c8('0xb')]=_0x453e8f[_0x61c8('0xb')]||0x3;this['scheduledat']=_0x25d363[_0x61c8('0xc')];this[_0x61c8('0xd')]=_0x25d363['countbusyretry'];this['countcongestionretry']=_0x25d363[_0x61c8('0xe')];this['countnoanswerretry']=_0x25d363[_0x61c8('0xf')];this['countnosuchnumberretry']=_0x25d363['countnosuchnumberretry'];this[_0x61c8('0x10')]=_0x25d363[_0x61c8('0x10')];this['countabandonedretry']=_0x25d363[_0x61c8('0x11')];this[_0x61c8('0x12')]=_0x25d363['countmachineretry'];this['countagentrejectretry']=_0x25d363['countagentrejectretry'];this[_0x61c8('0x13')]=_0x25d363[_0x61c8('0x13')];this[_0x61c8('0x14')]=_0x25d363['ListId'];this[_0x61c8('0x15')]=_0x25d363['UserId'];this[_0x61c8('0x16')]=_0x25d363['VoiceQueueId'];this[_0x61c8('0x17')]=_0x25d363[_0x61c8('0x17')];this[_0x61c8('0x18')]=_0x25d363['id'];this[_0x61c8('0x19')]=_0x25d363[_0x61c8('0x6')]['firstName']||'';this[_0x61c8('0x1a')]=moment()[_0x61c8('0x1b')]('YYYY-MM-DD\x20HH:mm:ss');this['callback']=_0x25d363[_0x61c8('0x1c')];this[_0x61c8('0x1d')]=_0x25d363[_0x61c8('0x1d')];this[_0x61c8('0x1e')]=_0x25d363[_0x61c8('0x1e')];this[_0x61c8('0x1f')]=_0x25d363['recallme'];this['originatecalleridnum']='';this[_0x61c8('0x20')]='';}Action[_0x61c8('0x21')]['getCaller']=function(){return util[_0x61c8('0x1b')](_0x61c8('0x22'),this['name'],this['voiceQueue'][_0x61c8('0x23')]>0x0?this[_0x61c8('0x8')][_0x61c8('0x24')](this['voiceQueue'][_0x61c8('0x23')]):this[_0x61c8('0x8')]);};Action[_0x61c8('0x21')][_0x61c8('0x25')]=function(){return this['queue'];};module[_0x61c8('0x26')]=Action;
\ No newline at end of file
index 8da5cda..bacccba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe64b=['Answer','scheduledat','type','campaigntype','outbound','queue','countcongestionretry','countnoanswerretry','countglobal','countbusyretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','uniqueid','calleridname','name','calleridnum','number','responsetime','answertime','endtime','format','ringtime','getSeconds','starttime','talktime','membername','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','agiafterat','exports','moment','../utils','state','statedesc'];(function(_0x5950bd,_0x103e16){var _0x33e816=function(_0x439344){while(--_0x439344){_0x5950bd['push'](_0x5950bd['shift']());}};_0x33e816(++_0x103e16);}(_0xe64b,0x116));var _0xbe64=function(_0x55f589,_0x470548){_0x55f589=_0x55f589-0x0;var _0x4eeb70=_0xe64b[_0x55f589];return _0x4eeb70;};'use strict';var moment=require(_0xbe64('0x0'));var utils=require(_0xbe64('0x1'));function AgentComplete(_0x73f7bb,_0x86a40f){this[_0xbe64('0x2')]=0x4;this[_0xbe64('0x3')]=_0xbe64('0x4');this[_0xbe64('0x5')]=_0x73f7bb[_0xbe64('0x5')];this[_0xbe64('0x6')]=_0x73f7bb['type'];this[_0xbe64('0x7')]=_0x73f7bb['type']===_0xbe64('0x8')?_0xbe64('0x9'):_0x73f7bb['type'];this['countbusyretry']=_0x73f7bb['countbusyretry'];this[_0xbe64('0xa')]=_0x73f7bb['countcongestionretry'];this[_0xbe64('0xb')]=_0x73f7bb[_0xbe64('0xb')];this[_0xbe64('0xc')]=_0x73f7bb[_0xbe64('0xd')]+_0x73f7bb[_0xbe64('0xa')]+_0x73f7bb[_0xbe64('0xb')]+_0x73f7bb[_0xbe64('0xe')]+_0x73f7bb[_0xbe64('0xf')]+_0x73f7bb[_0xbe64('0x10')]+_0x73f7bb[_0xbe64('0x11')]+_0x73f7bb[_0xbe64('0x12')];this[_0xbe64('0xe')]=_0x73f7bb[_0xbe64('0xe')];this[_0xbe64('0xf')]=_0x73f7bb['countdropretry'];this[_0xbe64('0x10')]=_0x73f7bb['countabandonedretry'];this[_0xbe64('0x11')]=_0x73f7bb[_0xbe64('0x11')];this['countagentrejectretry']=_0x73f7bb[_0xbe64('0x12')];this[_0xbe64('0x13')]=_0x86a40f[_0xbe64('0x13')];this[_0xbe64('0x14')]=_0x73f7bb[_0xbe64('0x15')];this[_0xbe64('0x16')]=_0x73f7bb[_0xbe64('0x17')];this['starttime']=_0x73f7bb['starttime'];this[_0xbe64('0x18')]=_0x73f7bb[_0xbe64('0x18')];this[_0xbe64('0x19')]=_0x73f7bb['answertime'];this[_0xbe64('0x1a')]=moment()[_0xbe64('0x1b')]('YYYY-MM-DD\x20HH:mm:ss');this[_0xbe64('0x1c')]=utils[_0xbe64('0x1d')](_0x73f7bb[_0xbe64('0x18')],_0x73f7bb[_0xbe64('0x1e')]);this['holdtime']=utils[_0xbe64('0x1d')](_0x73f7bb[_0xbe64('0x19')],_0x73f7bb[_0xbe64('0x18')]);this[_0xbe64('0x1f')]=utils[_0xbe64('0x1d')](this[_0xbe64('0x1a')],_0x73f7bb[_0xbe64('0x19')]);this[_0xbe64('0x9')]=_0x86a40f[_0xbe64('0x9')];this['membername']=_0x86a40f[_0xbe64('0x20')];this[_0xbe64('0x21')]=_0x86a40f[_0xbe64('0x21')];this[_0xbe64('0x22')]=_0x73f7bb['callback'];this['callbackuniqueid']=_0x73f7bb[_0xbe64('0x23')];this['callbackat']=_0x73f7bb[_0xbe64('0x24')];this[_0xbe64('0x25')]=_0x73f7bb[_0xbe64('0x25')];this['ContactId']=_0x73f7bb[_0xbe64('0x26')];this[_0xbe64('0x27')]=_0x73f7bb[_0xbe64('0x27')];this[_0xbe64('0x28')]=_0x73f7bb[_0xbe64('0x28')];this[_0xbe64('0x29')]=_0x73f7bb[_0xbe64('0x29')];this[_0xbe64('0x2a')]=_0x73f7bb[_0xbe64('0x2a')];this['originatecalleridnum']=_0x73f7bb[_0xbe64('0x2b')]||'';this[_0xbe64('0x2c')]=_0x73f7bb[_0xbe64('0x2c')]||'';this['agiafterat']=_0x73f7bb[_0xbe64('0x2d')];}module[_0xbe64('0x2e')]=AgentComplete;
\ No newline at end of file
+var _0x7df9=['starttime','responsetime','answertime','format','YYYY-MM-DD\x20HH:mm:ss','ringtime','getSeconds','holdtime','endtime','queue','membername','reason','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','CampaignId','originatecalleridnum','originatecalleridname','agiafterat','exports','moment','state','Answer','scheduledat','type','campaigntype','outbound','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','uniqueid','calleridname','name','number'];(function(_0x214cec,_0x28b245){var _0x305074=function(_0x153fcd){while(--_0x153fcd){_0x214cec['push'](_0x214cec['shift']());}};_0x305074(++_0x28b245);}(_0x7df9,0x6d));var _0x97df=function(_0xf5d55,_0x581026){_0xf5d55=_0xf5d55-0x0;var _0x221ead=_0x7df9[_0xf5d55];return _0x221ead;};'use strict';var moment=require(_0x97df('0x0'));var utils=require('../utils');function AgentComplete(_0x5597b4,_0x5629c7){this[_0x97df('0x1')]=0x4;this['statedesc']=_0x97df('0x2');this[_0x97df('0x3')]=_0x5597b4['scheduledat'];this[_0x97df('0x4')]=_0x5597b4['type'];this[_0x97df('0x5')]=_0x5597b4[_0x97df('0x4')]===_0x97df('0x6')?'queue':_0x5597b4[_0x97df('0x4')];this['countbusyretry']=_0x5597b4[_0x97df('0x7')];this[_0x97df('0x8')]=_0x5597b4[_0x97df('0x8')];this[_0x97df('0x9')]=_0x5597b4[_0x97df('0x9')];this[_0x97df('0xa')]=_0x5597b4[_0x97df('0x7')]+_0x5597b4[_0x97df('0x8')]+_0x5597b4[_0x97df('0x9')]+_0x5597b4[_0x97df('0xb')]+_0x5597b4[_0x97df('0xc')]+_0x5597b4[_0x97df('0xd')]+_0x5597b4[_0x97df('0xe')]+_0x5597b4[_0x97df('0xf')];this[_0x97df('0xb')]=_0x5597b4['countnosuchnumberretry'];this[_0x97df('0xc')]=_0x5597b4[_0x97df('0xc')];this[_0x97df('0xd')]=_0x5597b4[_0x97df('0xd')];this[_0x97df('0xe')]=_0x5597b4[_0x97df('0xe')];this[_0x97df('0xf')]=_0x5597b4[_0x97df('0xf')];this[_0x97df('0x10')]=_0x5629c7[_0x97df('0x10')];this[_0x97df('0x11')]=_0x5597b4[_0x97df('0x12')];this['calleridnum']=_0x5597b4[_0x97df('0x13')];this['starttime']=_0x5597b4[_0x97df('0x14')];this[_0x97df('0x15')]=_0x5597b4[_0x97df('0x15')];this['answertime']=_0x5597b4[_0x97df('0x16')];this['endtime']=moment()[_0x97df('0x17')](_0x97df('0x18'));this[_0x97df('0x19')]=utils[_0x97df('0x1a')](_0x5597b4[_0x97df('0x15')],_0x5597b4[_0x97df('0x14')]);this[_0x97df('0x1b')]=utils['getSeconds'](_0x5597b4[_0x97df('0x16')],_0x5597b4['responsetime']);this['talktime']=utils[_0x97df('0x1a')](this[_0x97df('0x1c')],_0x5597b4[_0x97df('0x16')]);this[_0x97df('0x1d')]=_0x5629c7['queue'];this['membername']=_0x5629c7[_0x97df('0x1e')];this[_0x97df('0x1f')]=_0x5629c7[_0x97df('0x1f')];this['callback']=_0x5597b4['callback'];this['callbackuniqueid']=_0x5597b4[_0x97df('0x20')];this[_0x97df('0x21')]=_0x5597b4[_0x97df('0x21')];this[_0x97df('0x22')]=_0x5597b4[_0x97df('0x22')];this['ContactId']=_0x5597b4[_0x97df('0x23')];this[_0x97df('0x24')]=_0x5597b4[_0x97df('0x24')];this[_0x97df('0x25')]=_0x5597b4[_0x97df('0x25')];this['VoiceQueueId']=_0x5597b4['VoiceQueueId'];this[_0x97df('0x26')]=_0x5597b4[_0x97df('0x26')];this[_0x97df('0x27')]=_0x5597b4[_0x97df('0x27')]||'';this[_0x97df('0x28')]=_0x5597b4[_0x97df('0x28')]||'';this[_0x97df('0x29')]=_0x5597b4[_0x97df('0x29')];}module[_0x97df('0x2a')]=AgentComplete;
\ No newline at end of file
index aa08e88..cd75a34 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc44b=['VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','state','statedesc','uniqueid','scheduledat','type','campaigntype','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countmachineretry','countagentrejectretry','countabandonedretry','queue','calleridname','calleridnum','starttime','responsetime','endtime','holdtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId'];(function(_0x576170,_0x1712ae){var _0x397c70=function(_0x2eb9de){while(--_0x2eb9de){_0x576170['push'](_0x576170['shift']());}};_0x397c70(++_0x1712ae);}(_0xc44b,0x1e2));var _0xbc44=function(_0x1589dd,_0x2b9d22){_0x1589dd=_0x1589dd-0x0;var _0x1bddd1=_0xc44b[_0x1589dd];return _0x1bddd1;};'use strict';function Final(_0x10cff7){this[_0xbc44('0x0')]=_0x10cff7[_0xbc44('0x0')];this[_0xbc44('0x1')]=_0x10cff7[_0xbc44('0x1')];this[_0xbc44('0x2')]=_0x10cff7[_0xbc44('0x2')];this[_0xbc44('0x3')]=_0x10cff7[_0xbc44('0x2')]==='outbound'?'queue':_0x10cff7[_0xbc44('0x2')];this['countbusyretry']=_0x10cff7[_0xbc44('0x4')];this['countcongestionretry']=_0x10cff7[_0xbc44('0x5')];this[_0xbc44('0x6')]=_0x10cff7[_0xbc44('0x6')];this[_0xbc44('0x7')]=_0x10cff7['countbusyretry']+_0x10cff7[_0xbc44('0x5')]+_0x10cff7['countnoanswerretry']+_0x10cff7[_0xbc44('0x8')]+_0x10cff7[_0xbc44('0x9')]+_0x10cff7['countabandonedretry']+_0x10cff7[_0xbc44('0xa')]+_0x10cff7[_0xbc44('0xb')];this[_0xbc44('0x8')]=_0x10cff7[_0xbc44('0x8')];this[_0xbc44('0x9')]=_0x10cff7['countdropretry'];this[_0xbc44('0xc')]=_0x10cff7[_0xbc44('0xc')];this['countmachineretry']=_0x10cff7[_0xbc44('0xa')];this[_0xbc44('0xb')]=_0x10cff7[_0xbc44('0xb')];this[_0xbc44('0xd')]=_0x10cff7[_0xbc44('0xd')];this['calleridname']=_0x10cff7[_0xbc44('0xe')];this[_0xbc44('0xf')]=_0x10cff7[_0xbc44('0xf')];this['starttime']=_0x10cff7[_0xbc44('0x10')];this[_0xbc44('0x11')]=_0x10cff7[_0xbc44('0x11')];this[_0xbc44('0x12')]=_0x10cff7[_0xbc44('0x11')];this['ringtime']=_0x10cff7['ringtime']||0x0;this['holdtime']=_0x10cff7[_0xbc44('0x13')]||0x0;this[_0xbc44('0x14')]=_0x10cff7['talktime']||0x0;this[_0xbc44('0x15')]=_0x10cff7[_0xbc44('0x15')];this[_0xbc44('0x16')]=_0x10cff7['callbackuniqueid'];this[_0xbc44('0x17')]=_0x10cff7[_0xbc44('0x17')];this[_0xbc44('0x18')]=_0x10cff7[_0xbc44('0x18')];this[_0xbc44('0x19')]=_0x10cff7[_0xbc44('0x19')];this[_0xbc44('0x1a')]=_0x10cff7[_0xbc44('0x1a')];this[_0xbc44('0x1b')]=_0x10cff7[_0xbc44('0x1b')];this['VoiceQueueId']=_0x10cff7[_0xbc44('0x1c')];this[_0xbc44('0x1d')]=_0x10cff7[_0xbc44('0x1d')];this['originatecalleridnum']=_0x10cff7[_0xbc44('0x1e')]||'';this[_0xbc44('0x1f')]=_0x10cff7[_0xbc44('0x1f')]||'';this[_0xbc44('0x20')]=_0x10cff7[_0xbc44('0x20')];this[_0xbc44('0x21')]=_0x10cff7[_0xbc44('0x21')];}module['exports']=Final;
\ No newline at end of file
+var _0x799a=['type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countmachineretry','countagentrejectretry','countabandonedretry','calleridname','calleridnum','starttime','responsetime','endtime','ringtime','holdtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridname','state','statedesc','exports','uniqueid','scheduledat'];(function(_0x202c61,_0x3673e0){var _0x540691=function(_0x409610){while(--_0x409610){_0x202c61['push'](_0x202c61['shift']());}};_0x540691(++_0x3673e0);}(_0x799a,0xf3));var _0xa799=function(_0x358d90,_0x65595){_0x358d90=_0x358d90-0x0;var _0x286f12=_0x799a[_0x358d90];return _0x286f12;};'use strict';function Final(_0xfd2dcc){this[_0xa799('0x0')]=_0xfd2dcc[_0xa799('0x0')];this[_0xa799('0x1')]=_0xfd2dcc[_0xa799('0x1')];this[_0xa799('0x2')]=_0xfd2dcc[_0xa799('0x2')];this[_0xa799('0x3')]=_0xfd2dcc[_0xa799('0x2')]===_0xa799('0x4')?_0xa799('0x5'):_0xfd2dcc[_0xa799('0x2')];this[_0xa799('0x6')]=_0xfd2dcc[_0xa799('0x6')];this[_0xa799('0x7')]=_0xfd2dcc[_0xa799('0x7')];this[_0xa799('0x8')]=_0xfd2dcc[_0xa799('0x8')];this['countglobal']=_0xfd2dcc[_0xa799('0x6')]+_0xfd2dcc[_0xa799('0x7')]+_0xfd2dcc[_0xa799('0x8')]+_0xfd2dcc[_0xa799('0x9')]+_0xfd2dcc[_0xa799('0xa')]+_0xfd2dcc['countabandonedretry']+_0xfd2dcc[_0xa799('0xb')]+_0xfd2dcc[_0xa799('0xc')];this['countnosuchnumberretry']=_0xfd2dcc[_0xa799('0x9')];this['countdropretry']=_0xfd2dcc[_0xa799('0xa')];this[_0xa799('0xd')]=_0xfd2dcc[_0xa799('0xd')];this[_0xa799('0xb')]=_0xfd2dcc['countmachineretry'];this[_0xa799('0xc')]=_0xfd2dcc[_0xa799('0xc')];this['queue']=_0xfd2dcc[_0xa799('0x5')];this[_0xa799('0xe')]=_0xfd2dcc[_0xa799('0xe')];this[_0xa799('0xf')]=_0xfd2dcc['calleridnum'];this['starttime']=_0xfd2dcc[_0xa799('0x10')];this[_0xa799('0x11')]=_0xfd2dcc[_0xa799('0x11')];this[_0xa799('0x12')]=_0xfd2dcc['responsetime'];this['ringtime']=_0xfd2dcc[_0xa799('0x13')]||0x0;this['holdtime']=_0xfd2dcc[_0xa799('0x14')]||0x0;this[_0xa799('0x15')]=_0xfd2dcc[_0xa799('0x15')]||0x0;this['callback']=_0xfd2dcc[_0xa799('0x16')];this[_0xa799('0x17')]=_0xfd2dcc['callbackuniqueid'];this[_0xa799('0x18')]=_0xfd2dcc['callbackat'];this[_0xa799('0x19')]=_0xfd2dcc[_0xa799('0x19')];this[_0xa799('0x1a')]=_0xfd2dcc[_0xa799('0x1a')];this['ListId']=_0xfd2dcc[_0xa799('0x1b')];this[_0xa799('0x1c')]=_0xfd2dcc['UserId'];this[_0xa799('0x1d')]=_0xfd2dcc[_0xa799('0x1d')];this['CampaignId']=_0xfd2dcc[_0xa799('0x1e')];this['originatecalleridnum']=_0xfd2dcc['originatecalleridnum']||'';this[_0xa799('0x1f')]=_0xfd2dcc[_0xa799('0x1f')]||'';this[_0xa799('0x20')]=_0xfd2dcc[_0xa799('0x20')];this[_0xa799('0x21')]=_0xfd2dcc[_0xa799('0x21')];}module[_0xa799('0x22')]=Final;
\ No newline at end of file
index 3014db9..ed470df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x954d=['format','YYYY-MM-DD\x20HH:mm:ss','ringtime','getSeconds','holdtime','talktime','membername','IVR','reason','cause-txt','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','exports','moment','state','statedesc','type','queue','amd','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countmachineretry','countagentrejectretry','countnosuchnumberretry','countabandonedretry','uniqueid','calleridname','name','calleridnum','number','starttime','responsetime','endtime'];(function(_0x397f34,_0x3ac328){var _0x272cda=function(_0x2c9756){while(--_0x2c9756){_0x397f34['push'](_0x397f34['shift']());}};_0x272cda(++_0x3ac328);}(_0x954d,0x110));var _0xd954=function(_0xb8acf0,_0x10998d){_0xb8acf0=_0xb8acf0-0x0;var _0xf96b2f=_0x954d[_0xb8acf0];return _0xf96b2f;};'use strict';var moment=require(_0xd954('0x0'));var utils=require('../utils');function Hangup(_0x522458,_0x45c94c){this[_0xd954('0x1')]=0x4;this[_0xd954('0x2')]='Answer';this['scheduledat']=_0x522458['scheduledat'];this[_0xd954('0x3')]=_0x522458['type'];this['campaigntype']=_0x522458[_0xd954('0x3')]==='outbound'?_0xd954('0x4'):_0x522458[_0xd954('0x3')];this[_0xd954('0x5')]=_0x522458[_0xd954('0x5')]||![];this[_0xd954('0x6')]=_0x522458[_0xd954('0x6')];this[_0xd954('0x7')]=_0x522458[_0xd954('0x7')];this[_0xd954('0x8')]=_0x522458[_0xd954('0x8')];this[_0xd954('0x9')]=_0x522458[_0xd954('0x6')]+_0x522458[_0xd954('0x7')]+_0x522458[_0xd954('0x8')]+_0x522458['countnosuchnumberretry']+_0x522458['countdropretry']+_0x522458['countabandonedretry']+_0x522458[_0xd954('0xa')]+_0x522458[_0xd954('0xb')];this['countnosuchnumberretry']=_0x522458[_0xd954('0xc')];this['countdropretry']=_0x522458['countdropretry'];this[_0xd954('0xd')]=_0x522458[_0xd954('0xd')];this['countmachineretry']=_0x522458[_0xd954('0xa')];this[_0xd954('0xb')]=_0x522458[_0xd954('0xb')];this[_0xd954('0xe')]=_0x45c94c[_0xd954('0xe')];this[_0xd954('0xf')]=_0x522458[_0xd954('0x10')];this[_0xd954('0x11')]=_0x522458[_0xd954('0x12')];this[_0xd954('0x13')]=_0x522458[_0xd954('0x13')];this[_0xd954('0x14')]=_0x522458[_0xd954('0x14')];this[_0xd954('0x15')]=moment()[_0xd954('0x16')](_0xd954('0x17'));this[_0xd954('0x18')]=utils[_0xd954('0x19')](_0x522458[_0xd954('0x14')],_0x522458['starttime']);this[_0xd954('0x1a')]=0x0;this[_0xd954('0x1b')]=utils[_0xd954('0x19')](this[_0xd954('0x15')],_0x522458[_0xd954('0x14')]);this[_0xd954('0x4')]=_0x522458[_0xd954('0x4')];this[_0xd954('0x1c')]=_0xd954('0x1d');this[_0xd954('0x1e')]=_0x45c94c[_0xd954('0x1f')];this[_0xd954('0x20')]=_0x522458[_0xd954('0x20')];this[_0xd954('0x21')]=_0x522458[_0xd954('0x21')];this[_0xd954('0x22')]=_0x522458[_0xd954('0x22')];this[_0xd954('0x23')]=_0x522458[_0xd954('0x23')];this[_0xd954('0x24')]=_0x522458[_0xd954('0x24')];this[_0xd954('0x25')]=_0x522458[_0xd954('0x25')];this['UserId']=_0x522458[_0xd954('0x26')];this[_0xd954('0x27')]=_0x522458[_0xd954('0x27')];this[_0xd954('0x28')]=_0x522458[_0xd954('0x28')];}module[_0xd954('0x29')]=Hangup;
\ No newline at end of file
+var _0xe991=['statedesc','Answer','scheduledat','type','campaigntype','outbound','amd','countbusyretry','countnoanswerretry','countglobal','countcongestionretry','countnosuchnumberretry','countabandonedretry','countmachineretry','countdropretry','countagentrejectretry','uniqueid','calleridname','calleridnum','number','starttime','responsetime','format','YYYY-MM-DD\x20HH:mm:ss','ringtime','getSeconds','holdtime','talktime','endtime','queue','membername','IVR','reason','cause-txt','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','exports','moment'];(function(_0x246fe0,_0x7f6262){var _0x41dd52=function(_0x512f8b){while(--_0x512f8b){_0x246fe0['push'](_0x246fe0['shift']());}};_0x41dd52(++_0x7f6262);}(_0xe991,0x13a));var _0x1e99=function(_0x77938b,_0x370568){_0x77938b=_0x77938b-0x0;var _0x3db9be=_0xe991[_0x77938b];return _0x3db9be;};'use strict';var moment=require(_0x1e99('0x0'));var utils=require('../utils');function Hangup(_0x5df5c8,_0x5bbe2f){this['state']=0x4;this[_0x1e99('0x1')]=_0x1e99('0x2');this[_0x1e99('0x3')]=_0x5df5c8[_0x1e99('0x3')];this[_0x1e99('0x4')]=_0x5df5c8[_0x1e99('0x4')];this[_0x1e99('0x5')]=_0x5df5c8[_0x1e99('0x4')]===_0x1e99('0x6')?'queue':_0x5df5c8[_0x1e99('0x4')];this[_0x1e99('0x7')]=_0x5df5c8['amd']||![];this['countbusyretry']=_0x5df5c8[_0x1e99('0x8')];this['countcongestionretry']=_0x5df5c8['countcongestionretry'];this[_0x1e99('0x9')]=_0x5df5c8[_0x1e99('0x9')];this[_0x1e99('0xa')]=_0x5df5c8[_0x1e99('0x8')]+_0x5df5c8[_0x1e99('0xb')]+_0x5df5c8[_0x1e99('0x9')]+_0x5df5c8[_0x1e99('0xc')]+_0x5df5c8['countdropretry']+_0x5df5c8[_0x1e99('0xd')]+_0x5df5c8[_0x1e99('0xe')]+_0x5df5c8['countagentrejectretry'];this[_0x1e99('0xc')]=_0x5df5c8['countnosuchnumberretry'];this['countdropretry']=_0x5df5c8[_0x1e99('0xf')];this[_0x1e99('0xd')]=_0x5df5c8[_0x1e99('0xd')];this[_0x1e99('0xe')]=_0x5df5c8[_0x1e99('0xe')];this[_0x1e99('0x10')]=_0x5df5c8[_0x1e99('0x10')];this[_0x1e99('0x11')]=_0x5bbe2f['uniqueid'];this[_0x1e99('0x12')]=_0x5df5c8['name'];this[_0x1e99('0x13')]=_0x5df5c8[_0x1e99('0x14')];this[_0x1e99('0x15')]=_0x5df5c8[_0x1e99('0x15')];this[_0x1e99('0x16')]=_0x5df5c8[_0x1e99('0x16')];this['endtime']=moment()[_0x1e99('0x17')](_0x1e99('0x18'));this[_0x1e99('0x19')]=utils[_0x1e99('0x1a')](_0x5df5c8['responsetime'],_0x5df5c8['starttime']);this[_0x1e99('0x1b')]=0x0;this[_0x1e99('0x1c')]=utils[_0x1e99('0x1a')](this[_0x1e99('0x1d')],_0x5df5c8[_0x1e99('0x16')]);this[_0x1e99('0x1e')]=_0x5df5c8[_0x1e99('0x1e')];this[_0x1e99('0x1f')]=_0x1e99('0x20');this[_0x1e99('0x21')]=_0x5bbe2f[_0x1e99('0x22')];this[_0x1e99('0x23')]=_0x5df5c8[_0x1e99('0x23')];this['callbackuniqueid']=_0x5df5c8[_0x1e99('0x24')];this[_0x1e99('0x25')]=_0x5df5c8[_0x1e99('0x25')];this[_0x1e99('0x26')]=_0x5df5c8[_0x1e99('0x26')];this[_0x1e99('0x27')]=_0x5df5c8['ContactId'];this[_0x1e99('0x28')]=_0x5df5c8['ListId'];this[_0x1e99('0x29')]=_0x5df5c8[_0x1e99('0x29')];this['VoiceQueueId']=_0x5df5c8[_0x1e99('0x2a')];this[_0x1e99('0x2b')]=_0x5df5c8[_0x1e99('0x2b')];}module[_0x1e99('0x2c')]=Hangup;
\ No newline at end of file
index 280da90..790ff8f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc8b1=['ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','state','statedesc','exports','../utils','uniqueid','scheduledat','type','campaigntype','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countmachineretry','countagentrejectretry','countabandonedretry','calleridname','calleridnum','number','starttime','responsetime','endtime','getSeconds','holdtime','callback','callbackuniqueid','callbackat','recallme'];(function(_0x47e7cb,_0x4c1b8d){var _0x2a8874=function(_0x36498f){while(--_0x36498f){_0x47e7cb['push'](_0x47e7cb['shift']());}};_0x2a8874(++_0x4c1b8d);}(_0xc8b1,0x10d));var _0x1c8b=function(_0xbfca16,_0xeb44ec){_0xbfca16=_0xbfca16-0x0;var _0x34fcd8=_0xc8b1[_0xbfca16];return _0x34fcd8;};'use strict';var utils=require(_0x1c8b('0x0'));function History(_0x52d4b8){this[_0x1c8b('0x1')]=_0x52d4b8[_0x1c8b('0x1')];this[_0x1c8b('0x2')]=_0x52d4b8[_0x1c8b('0x2')]||undefined;this[_0x1c8b('0x3')]=_0x52d4b8['type'];this[_0x1c8b('0x4')]=_0x52d4b8[_0x1c8b('0x3')]==='outbound'?_0x1c8b('0x5'):_0x52d4b8[_0x1c8b('0x3')];this[_0x1c8b('0x6')]=_0x52d4b8[_0x1c8b('0x6')];this['countcongestionretry']=_0x52d4b8[_0x1c8b('0x7')];this[_0x1c8b('0x8')]=_0x52d4b8['countnoanswerretry'];this[_0x1c8b('0x9')]=_0x52d4b8['countbusyretry']+_0x52d4b8[_0x1c8b('0x7')]+_0x52d4b8[_0x1c8b('0x8')]+_0x52d4b8[_0x1c8b('0xa')]+_0x52d4b8[_0x1c8b('0xb')]+_0x52d4b8['countabandonedretry']+_0x52d4b8[_0x1c8b('0xc')]+_0x52d4b8[_0x1c8b('0xd')];this[_0x1c8b('0xa')]=_0x52d4b8[_0x1c8b('0xa')];this[_0x1c8b('0xb')]=_0x52d4b8[_0x1c8b('0xb')];this[_0x1c8b('0xe')]=_0x52d4b8[_0x1c8b('0xe')];this['countmachineretry']=_0x52d4b8['countmachineretry'];this[_0x1c8b('0xd')]=_0x52d4b8[_0x1c8b('0xd')];this[_0x1c8b('0x5')]=_0x52d4b8[_0x1c8b('0x5')];this[_0x1c8b('0xf')]=_0x52d4b8['name'];this[_0x1c8b('0x10')]=_0x52d4b8[_0x1c8b('0x11')];this['starttime']=_0x52d4b8[_0x1c8b('0x12')];this[_0x1c8b('0x13')]=_0x52d4b8[_0x1c8b('0x13')];this[_0x1c8b('0x14')]=_0x52d4b8[_0x1c8b('0x13')];this['ringtime']=utils[_0x1c8b('0x15')](_0x52d4b8[_0x1c8b('0x13')],_0x52d4b8[_0x1c8b('0x12')]);this[_0x1c8b('0x16')]=0x0;this['talktime']=0x0;this[_0x1c8b('0x17')]=_0x52d4b8[_0x1c8b('0x17')];this['callbackuniqueid']=_0x52d4b8[_0x1c8b('0x18')];this[_0x1c8b('0x19')]=_0x52d4b8[_0x1c8b('0x19')];this[_0x1c8b('0x1a')]=_0x52d4b8[_0x1c8b('0x1a')];this[_0x1c8b('0x1b')]=_0x52d4b8[_0x1c8b('0x1b')];this[_0x1c8b('0x1c')]=_0x52d4b8[_0x1c8b('0x1c')];this['UserId']=_0x52d4b8[_0x1c8b('0x1d')];this[_0x1c8b('0x1e')]=_0x52d4b8[_0x1c8b('0x1e')];this['CampaignId']=_0x52d4b8[_0x1c8b('0x1f')];this[_0x1c8b('0x20')]=_0x52d4b8[_0x1c8b('0x20')]||'';this[_0x1c8b('0x21')]=_0x52d4b8[_0x1c8b('0x21')]||'';this['state']=_0x52d4b8[_0x1c8b('0x22')];this['statedesc']=_0x52d4b8[_0x1c8b('0x23')];}module[_0x1c8b('0x24')]=History;
\ No newline at end of file
+var _0xf8d7=['countdropretry','countmachineretry','countnosuchnumberretry','countabandonedretry','countagentrejectretry','queue','calleridname','name','calleridnum','starttime','endtime','responsetime','ringtime','getSeconds','holdtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','state','statedesc','exports','../utils','uniqueid','scheduledat','type','countbusyretry','countcongestionretry','countnoanswerretry','countglobal'];(function(_0x26395f,_0xf88153){var _0x2697be=function(_0x3d3c51){while(--_0x3d3c51){_0x26395f['push'](_0x26395f['shift']());}};_0x2697be(++_0xf88153);}(_0xf8d7,0x1b4));var _0x7f8d=function(_0x5311e8,_0x57c5bb){_0x5311e8=_0x5311e8-0x0;var _0x582ad8=_0xf8d7[_0x5311e8];return _0x582ad8;};'use strict';var utils=require(_0x7f8d('0x0'));function History(_0x2b9cda){this[_0x7f8d('0x1')]=_0x2b9cda[_0x7f8d('0x1')];this[_0x7f8d('0x2')]=_0x2b9cda['scheduledat']||undefined;this[_0x7f8d('0x3')]=_0x2b9cda[_0x7f8d('0x3')];this['campaigntype']=_0x2b9cda[_0x7f8d('0x3')]==='outbound'?'queue':_0x2b9cda['type'];this['countbusyretry']=_0x2b9cda[_0x7f8d('0x4')];this[_0x7f8d('0x5')]=_0x2b9cda[_0x7f8d('0x5')];this[_0x7f8d('0x6')]=_0x2b9cda['countnoanswerretry'];this[_0x7f8d('0x7')]=_0x2b9cda[_0x7f8d('0x4')]+_0x2b9cda['countcongestionretry']+_0x2b9cda[_0x7f8d('0x6')]+_0x2b9cda['countnosuchnumberretry']+_0x2b9cda[_0x7f8d('0x8')]+_0x2b9cda['countabandonedretry']+_0x2b9cda[_0x7f8d('0x9')]+_0x2b9cda['countagentrejectretry'];this[_0x7f8d('0xa')]=_0x2b9cda[_0x7f8d('0xa')];this['countdropretry']=_0x2b9cda[_0x7f8d('0x8')];this[_0x7f8d('0xb')]=_0x2b9cda['countabandonedretry'];this['countmachineretry']=_0x2b9cda[_0x7f8d('0x9')];this['countagentrejectretry']=_0x2b9cda[_0x7f8d('0xc')];this[_0x7f8d('0xd')]=_0x2b9cda[_0x7f8d('0xd')];this[_0x7f8d('0xe')]=_0x2b9cda[_0x7f8d('0xf')];this[_0x7f8d('0x10')]=_0x2b9cda['number'];this['starttime']=_0x2b9cda[_0x7f8d('0x11')];this['responsetime']=_0x2b9cda['responsetime'];this[_0x7f8d('0x12')]=_0x2b9cda[_0x7f8d('0x13')];this[_0x7f8d('0x14')]=utils[_0x7f8d('0x15')](_0x2b9cda[_0x7f8d('0x13')],_0x2b9cda[_0x7f8d('0x11')]);this[_0x7f8d('0x16')]=0x0;this[_0x7f8d('0x17')]=0x0;this[_0x7f8d('0x18')]=_0x2b9cda['callback'];this[_0x7f8d('0x19')]=_0x2b9cda['callbackuniqueid'];this['callbackat']=_0x2b9cda[_0x7f8d('0x1a')];this['recallme']=_0x2b9cda[_0x7f8d('0x1b')];this[_0x7f8d('0x1c')]=_0x2b9cda[_0x7f8d('0x1c')];this[_0x7f8d('0x1d')]=_0x2b9cda['ListId'];this[_0x7f8d('0x1e')]=_0x2b9cda[_0x7f8d('0x1e')];this['VoiceQueueId']=_0x2b9cda[_0x7f8d('0x1f')];this[_0x7f8d('0x20')]=_0x2b9cda['CampaignId'];this[_0x7f8d('0x21')]=_0x2b9cda[_0x7f8d('0x21')]||'';this['originatecalleridname']=_0x2b9cda['originatecalleridname']||'';this[_0x7f8d('0x22')]=_0x2b9cda[_0x7f8d('0x22')];this['statedesc']=_0x2b9cda[_0x7f8d('0x23')];}module[_0x7f8d('0x24')]=History;
\ No newline at end of file
index 4a2b8c9..7fe2cd9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x57ef=['ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','agiafterat','state','statedesc','exports','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','uniqueid','calleridnum','number','starttime','responsetime','droptime','dropreason','endtime','ringtime','getSeconds','talktime','membername','connectedlinename','reason','callback','callbackuniqueid','callbackat','recallme','ContactId'];(function(_0x284bc3,_0x22dffe){var _0x41ac81=function(_0x47031f){while(--_0x47031f){_0x284bc3['push'](_0x284bc3['shift']());}};_0x41ac81(++_0x22dffe);}(_0x57ef,0x106));var _0xf57e=function(_0x24d2ba,_0x1e74ca){_0x24d2ba=_0x24d2ba-0x0;var _0x5b9085=_0x57ef[_0x24d2ba];return _0x5b9085;};'use strict';var utils=require('../utils');function QueueCallerAbandon(_0x37144a,_0x330421){this[_0xf57e('0x0')]=_0x37144a[_0xf57e('0x0')];this[_0xf57e('0x1')]=_0x37144a[_0xf57e('0x1')];this[_0xf57e('0x2')]=_0x37144a[_0xf57e('0x1')]===_0xf57e('0x3')?_0xf57e('0x4'):_0x37144a[_0xf57e('0x1')];this[_0xf57e('0x5')]=_0x37144a[_0xf57e('0x5')];this['countcongestionretry']=_0x37144a[_0xf57e('0x6')];this[_0xf57e('0x7')]=_0x37144a[_0xf57e('0x7')];this['countglobal']=_0x37144a[_0xf57e('0x5')]+_0x37144a['countcongestionretry']+_0x37144a[_0xf57e('0x7')]+_0x37144a['countnosuchnumberretry']+_0x37144a['countdropretry']+_0x37144a['countabandonedretry']+_0x37144a['countmachineretry']+_0x37144a['countagentrejectretry'];this['countnosuchnumberretry']=_0x37144a[_0xf57e('0x8')];this[_0xf57e('0x9')]=_0x37144a['countdropretry'];this[_0xf57e('0xa')]=_0x37144a['countabandonedretry'];this[_0xf57e('0xb')]=_0x37144a['countmachineretry'];this['countagentrejectretry']=_0x37144a[_0xf57e('0xc')];this[_0xf57e('0xd')]=_0x330421[_0xf57e('0xd')];this['calleridname']=_0x37144a['name'];this[_0xf57e('0xe')]=_0x37144a[_0xf57e('0xf')];this['starttime']=_0x37144a[_0xf57e('0x10')];this[_0xf57e('0x11')]=_0x37144a[_0xf57e('0x11')];this[_0xf57e('0x12')]=_0x37144a[_0xf57e('0x12')];this[_0xf57e('0x13')]=_0x37144a[_0xf57e('0x13')];this[_0xf57e('0x14')]=this[_0xf57e('0x12')];this[_0xf57e('0x15')]=utils[_0xf57e('0x16')](_0x37144a[_0xf57e('0x11')],_0x37144a['starttime']);this['holdtime']=utils[_0xf57e('0x16')](this[_0xf57e('0x12')],_0x37144a[_0xf57e('0x11')]);this[_0xf57e('0x17')]=0x0;this[_0xf57e('0x4')]=_0x330421[_0xf57e('0x4')];this[_0xf57e('0x18')]=_0x330421[_0xf57e('0x19')];this[_0xf57e('0x1a')]=_0x330421[_0xf57e('0x1a')];this[_0xf57e('0x1b')]=_0x37144a['callback'];this[_0xf57e('0x1c')]=_0x37144a['callbackuniqueid'];this[_0xf57e('0x1d')]=_0x37144a['callbackat'];this['recallme']=_0x37144a[_0xf57e('0x1e')];this[_0xf57e('0x1f')]=_0x37144a[_0xf57e('0x1f')];this[_0xf57e('0x20')]=_0x37144a['ListId'];this[_0xf57e('0x21')]=_0x37144a[_0xf57e('0x21')];this[_0xf57e('0x22')]=_0x37144a['VoiceQueueId'];this['CampaignId']=_0x37144a[_0xf57e('0x23')];this[_0xf57e('0x24')]=_0x37144a[_0xf57e('0x24')]||'';this[_0xf57e('0x25')]=_0x37144a[_0xf57e('0x25')]||'';this[_0xf57e('0x26')]=_0x37144a['agiafterat'];this[_0xf57e('0x27')]=_0x37144a[_0xf57e('0x27')];this[_0xf57e('0x28')]=_0x37144a['statedesc'];}module[_0xf57e('0x29')]=QueueCallerAbandon;
\ No newline at end of file
+var _0xb23e=['countdropretry','countagentrejectretry','uniqueid','calleridname','name','calleridnum','starttime','responsetime','droptime','dropreason','ringtime','getSeconds','talktime','connectedlinename','reason','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','agiafterat','state','statedesc','exports','../utils','scheduledat','type','campaigntype','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countabandonedretry','countmachineretry'];(function(_0x427672,_0x402ef8){var _0x1cb393=function(_0xa79fba){while(--_0xa79fba){_0x427672['push'](_0x427672['shift']());}};_0x1cb393(++_0x402ef8);}(_0xb23e,0xea));var _0xeb23=function(_0x4c933e,_0x1af710){_0x4c933e=_0x4c933e-0x0;var _0x2be0a1=_0xb23e[_0x4c933e];return _0x2be0a1;};'use strict';var utils=require(_0xeb23('0x0'));function QueueCallerAbandon(_0x5662ad,_0x3a68c4){this[_0xeb23('0x1')]=_0x5662ad[_0xeb23('0x1')];this[_0xeb23('0x2')]=_0x5662ad[_0xeb23('0x2')];this[_0xeb23('0x3')]=_0x5662ad[_0xeb23('0x2')]==='outbound'?_0xeb23('0x4'):_0x5662ad['type'];this['countbusyretry']=_0x5662ad[_0xeb23('0x5')];this[_0xeb23('0x6')]=_0x5662ad[_0xeb23('0x6')];this['countnoanswerretry']=_0x5662ad[_0xeb23('0x7')];this[_0xeb23('0x8')]=_0x5662ad[_0xeb23('0x5')]+_0x5662ad[_0xeb23('0x6')]+_0x5662ad['countnoanswerretry']+_0x5662ad[_0xeb23('0x9')]+_0x5662ad['countdropretry']+_0x5662ad[_0xeb23('0xa')]+_0x5662ad[_0xeb23('0xb')]+_0x5662ad['countagentrejectretry'];this[_0xeb23('0x9')]=_0x5662ad['countnosuchnumberretry'];this[_0xeb23('0xc')]=_0x5662ad[_0xeb23('0xc')];this['countabandonedretry']=_0x5662ad[_0xeb23('0xa')];this['countmachineretry']=_0x5662ad[_0xeb23('0xb')];this[_0xeb23('0xd')]=_0x5662ad[_0xeb23('0xd')];this[_0xeb23('0xe')]=_0x3a68c4[_0xeb23('0xe')];this[_0xeb23('0xf')]=_0x5662ad[_0xeb23('0x10')];this[_0xeb23('0x11')]=_0x5662ad['number'];this['starttime']=_0x5662ad[_0xeb23('0x12')];this[_0xeb23('0x13')]=_0x5662ad[_0xeb23('0x13')];this['droptime']=_0x5662ad[_0xeb23('0x14')];this[_0xeb23('0x15')]=_0x5662ad['dropreason'];this['endtime']=this[_0xeb23('0x14')];this[_0xeb23('0x16')]=utils[_0xeb23('0x17')](_0x5662ad[_0xeb23('0x13')],_0x5662ad[_0xeb23('0x12')]);this['holdtime']=utils[_0xeb23('0x17')](this['droptime'],_0x5662ad[_0xeb23('0x13')]);this[_0xeb23('0x18')]=0x0;this[_0xeb23('0x4')]=_0x3a68c4[_0xeb23('0x4')];this['membername']=_0x3a68c4[_0xeb23('0x19')];this[_0xeb23('0x1a')]=_0x3a68c4[_0xeb23('0x1a')];this['callback']=_0x5662ad['callback'];this[_0xeb23('0x1b')]=_0x5662ad[_0xeb23('0x1b')];this['callbackat']=_0x5662ad[_0xeb23('0x1c')];this['recallme']=_0x5662ad[_0xeb23('0x1d')];this[_0xeb23('0x1e')]=_0x5662ad[_0xeb23('0x1e')];this[_0xeb23('0x1f')]=_0x5662ad[_0xeb23('0x1f')];this[_0xeb23('0x20')]=_0x5662ad[_0xeb23('0x20')];this[_0xeb23('0x21')]=_0x5662ad[_0xeb23('0x21')];this[_0xeb23('0x22')]=_0x5662ad['CampaignId'];this['originatecalleridnum']=_0x5662ad[_0xeb23('0x23')]||'';this['originatecalleridname']=_0x5662ad[_0xeb23('0x24')]||'';this[_0xeb23('0x25')]=_0x5662ad[_0xeb23('0x25')];this[_0xeb23('0x26')]=_0x5662ad[_0xeb23('0x26')];this['statedesc']=_0x5662ad[_0xeb23('0x27')];}module[_0xeb23('0x28')]=QueueCallerAbandon;
\ No newline at end of file
index 1fe9158..3ed386c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['catch','temp','getContactDialer','getContactDialerIvr','error','[getContactDialerIvr]','countReScheduled','[countReScheduled]','rescheduleContact','[unlockContact]','unlockContact','moveContactManagedDialer','[moveContactManagedDialer]','checkIsBlackList','[checkIsBlackListIvr]','verifyAdditionalPhones','swapAdditionalPhones','[swapAdditionalPhone]','avgHandleTime','[avgHandleTime]','[createHistory]','util','../../../../config/logger','dialer','../../rpc/cmHopperBlack','inspect','dialOrderByScheduledAt'];(function(_0x5e5c4a,_0x5ad85a){var _0x35d29a=function(_0x1aa9f2){while(--_0x1aa9f2){_0x5e5c4a['push'](_0x5e5c4a['shift']());}};_0x35d29a(++_0x5ad85a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x49ca18,_0x5e6d05){_0x49ca18=_0x49ca18-0x0;var _0x145d54=_0xa9e0[_0x49ca18];return _0x145d54;};'use strict';var util=require(_0x0a9e('0x0'));var logger=require(_0x0a9e('0x1'))(_0x0a9e('0x2'));var cmHopper=require('../../rpc/cmHopper');var cmHopperAdditionalPhone=require('../../rpc/cmHopperAdditionalPhone');var cmHopperBlack=require(_0x0a9e('0x3'));var cmHopperHistory=require('../../rpc/cmHopperHistory');function inspectError(_0x333808){return util[_0x0a9e('0x4')](_0x333808,{'showHidden':![],'depth':null});}function getContactDialer(_0x2ab90b,_0x991246,_0x981158){return cmHopper['getContactDialer'](_0x2ab90b['id'],_0x991246,_0x981158,_0x2ab90b[_0x0a9e('0x5')])[_0x0a9e('0x6')](function(_0x2cc193){_0x2ab90b['temp']-=_0x981158;if(_0x2ab90b['temp']<0x0){_0x2ab90b[_0x0a9e('0x7')]=0x0;}logger['error']('[getContactDialer]',inspectError(_0x2cc193));});}exports[_0x0a9e('0x8')]=getContactDialer;function getContactDialerIvr(_0xf81284,_0x307b3e){return cmHopper[_0x0a9e('0x9')](_0xf81284['id'],_0x307b3e,_0xf81284[_0x0a9e('0x5')])[_0x0a9e('0x6')](function(_0x4a4c56){_0xf81284['temp']-=_0x307b3e;if(_0xf81284['temp']<0x0){_0xf81284['temp']=0x0;}logger[_0x0a9e('0xa')](_0x0a9e('0xb'),inspectError(_0x4a4c56));});}exports[_0x0a9e('0x9')]=getContactDialerIvr;function countReScheduled(_0x26d672){return cmHopper[_0x0a9e('0xc')](_0x26d672)[_0x0a9e('0x6')](function(_0x5db4b0){logger[_0x0a9e('0xa')](_0x0a9e('0xd'),inspectError(_0x5db4b0));});}exports[_0x0a9e('0xc')]=countReScheduled;function rescheduleContact(_0x281129){return cmHopper[_0x0a9e('0xe')](_0x281129)[_0x0a9e('0x6')](function(_0x52a03d){logger[_0x0a9e('0xa')]('[rescheduleContact]',inspectError(_0x52a03d));});}exports[_0x0a9e('0xe')]=rescheduleContact;function unlockContact(_0x519dfd,_0x16033c,_0x12066b){return cmHopper['unlockContact'](_0x519dfd,_0x16033c,_0x12066b)[_0x0a9e('0x6')](function(_0x5a0a06){logger[_0x0a9e('0xa')](_0x0a9e('0xf'),inspectError(_0x5a0a06));});}exports[_0x0a9e('0x10')]=unlockContact;function moveContactManagedDialer(_0x205fd6){return cmHopper[_0x0a9e('0x11')](_0x205fd6)[_0x0a9e('0x6')](function(_0x530eb7){logger[_0x0a9e('0xa')](_0x0a9e('0x12'),inspectError(_0x530eb7));});}exports[_0x0a9e('0x11')]=moveContactManagedDialer;function checkIsBlackList(_0x1c696a){return cmHopperBlack[_0x0a9e('0x13')](_0x1c696a)['catch'](function(_0x2c3407){logger[_0x0a9e('0xa')]('[checkIsBlackList]',inspectError(_0x2c3407));});}exports[_0x0a9e('0x13')]=checkIsBlackList;function checkIsBlackListIvr(_0x5a09ef){return cmHopperBlack['checkIsBlackListIvr'](_0x5a09ef)[_0x0a9e('0x6')](function(_0x432e56){logger[_0x0a9e('0xa')](_0x0a9e('0x14'),inspectError(_0x432e56));});}exports['checkIsBlackListIvr']=checkIsBlackListIvr;function verifyAdditionalPhones(_0xfb6e48,_0x2fb0e4,_0x3b45bc){return cmHopperAdditionalPhone[_0x0a9e('0x15')](_0xfb6e48,_0x2fb0e4,_0x3b45bc)[_0x0a9e('0x6')](function(_0x42ac8f){logger[_0x0a9e('0xa')]('[verifyAdditionalPhone]',inspectError(_0x42ac8f));});}exports['verifyAdditionalPhones']=verifyAdditionalPhones;function swapAdditionalPhones(_0x197ec0,_0x3a8e58,_0x40c424){return cmHopperAdditionalPhone[_0x0a9e('0x16')](_0x197ec0,_0x3a8e58,_0x40c424)['catch'](function(_0x384319){logger['error'](_0x0a9e('0x17'),inspectError(_0x384319));});}exports['swapAdditionalPhones']=swapAdditionalPhones;function avgHandleTime(_0x1dc186){return cmHopperHistory[_0x0a9e('0x18')](_0x1dc186)[_0x0a9e('0x6')](function(_0x14433c){logger[_0x0a9e('0xa')](_0x0a9e('0x19'),inspectError(_0x14433c));});}exports[_0x0a9e('0x18')]=avgHandleTime;function createHistory(_0x14de77){return cmHopperHistory['createHistory'](_0x14de77)[_0x0a9e('0x6')](function(_0x468813){logger[_0x0a9e('0xa')](_0x0a9e('0x1a'),inspectError(_0x468813));});}exports['createHistory']=createHistory;
\ No newline at end of file
+var _0xd8b0=['moveContactManagedDialer','[moveContactManagedDialer]','checkIsBlackList','[checkIsBlackListIvr]','checkIsBlackListIvr','verifyAdditionalPhones','[verifyAdditionalPhone]','swapAdditionalPhones','[swapAdditionalPhone]','avgHandleTime','[avgHandleTime]','[createHistory]','createHistory','util','../../../../config/logger','../../rpc/cmHopperBlack','../../rpc/cmHopperHistory','inspect','getContactDialer','dialOrderByScheduledAt','catch','temp','error','[getContactDialer]','getContactDialerIvr','[getContactDialerIvr]','countReScheduled','[countReScheduled]','rescheduleContact','[rescheduleContact]','unlockContact','[unlockContact]'];(function(_0x318019,_0x41116c){var _0x5d0dff=function(_0x23069a){while(--_0x23069a){_0x318019['push'](_0x318019['shift']());}};_0x5d0dff(++_0x41116c);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var util=require(_0x0d8b('0x0'));var logger=require(_0x0d8b('0x1'))('dialer');var cmHopper=require('../../rpc/cmHopper');var cmHopperAdditionalPhone=require('../../rpc/cmHopperAdditionalPhone');var cmHopperBlack=require(_0x0d8b('0x2'));var cmHopperHistory=require(_0x0d8b('0x3'));function inspectError(_0x43bca1){return util[_0x0d8b('0x4')](_0x43bca1,{'showHidden':![],'depth':null});}function getContactDialer(_0x8196ed,_0x577834,_0x5e15e6){return cmHopper[_0x0d8b('0x5')](_0x8196ed['id'],_0x577834,_0x5e15e6,_0x8196ed[_0x0d8b('0x6')])[_0x0d8b('0x7')](function(_0x4a4470){_0x8196ed[_0x0d8b('0x8')]-=_0x5e15e6;if(_0x8196ed[_0x0d8b('0x8')]<0x0){_0x8196ed['temp']=0x0;}logger[_0x0d8b('0x9')](_0x0d8b('0xa'),inspectError(_0x4a4470));});}exports[_0x0d8b('0x5')]=getContactDialer;function getContactDialerIvr(_0x1f4800,_0x28ff7f){return cmHopper[_0x0d8b('0xb')](_0x1f4800['id'],_0x28ff7f,_0x1f4800[_0x0d8b('0x6')])[_0x0d8b('0x7')](function(_0x48fa16){_0x1f4800[_0x0d8b('0x8')]-=_0x28ff7f;if(_0x1f4800['temp']<0x0){_0x1f4800[_0x0d8b('0x8')]=0x0;}logger[_0x0d8b('0x9')](_0x0d8b('0xc'),inspectError(_0x48fa16));});}exports[_0x0d8b('0xb')]=getContactDialerIvr;function countReScheduled(_0x35a07b){return cmHopper[_0x0d8b('0xd')](_0x35a07b)[_0x0d8b('0x7')](function(_0x31a8cc){logger[_0x0d8b('0x9')](_0x0d8b('0xe'),inspectError(_0x31a8cc));});}exports[_0x0d8b('0xd')]=countReScheduled;function rescheduleContact(_0xe65334){return cmHopper[_0x0d8b('0xf')](_0xe65334)[_0x0d8b('0x7')](function(_0x4f6f21){logger[_0x0d8b('0x9')](_0x0d8b('0x10'),inspectError(_0x4f6f21));});}exports[_0x0d8b('0xf')]=rescheduleContact;function unlockContact(_0xe2e167,_0x2cb03c,_0x5cd485){return cmHopper[_0x0d8b('0x11')](_0xe2e167,_0x2cb03c,_0x5cd485)[_0x0d8b('0x7')](function(_0x2fd0fc){logger[_0x0d8b('0x9')](_0x0d8b('0x12'),inspectError(_0x2fd0fc));});}exports[_0x0d8b('0x11')]=unlockContact;function moveContactManagedDialer(_0x264b39){return cmHopper[_0x0d8b('0x13')](_0x264b39)['catch'](function(_0x27512e){logger[_0x0d8b('0x9')](_0x0d8b('0x14'),inspectError(_0x27512e));});}exports[_0x0d8b('0x13')]=moveContactManagedDialer;function checkIsBlackList(_0x24e8ed){return cmHopperBlack[_0x0d8b('0x15')](_0x24e8ed)[_0x0d8b('0x7')](function(_0x352c17){logger['error']('[checkIsBlackList]',inspectError(_0x352c17));});}exports[_0x0d8b('0x15')]=checkIsBlackList;function checkIsBlackListIvr(_0x54a9a7){return cmHopperBlack['checkIsBlackListIvr'](_0x54a9a7)['catch'](function(_0x238728){logger[_0x0d8b('0x9')](_0x0d8b('0x16'),inspectError(_0x238728));});}exports[_0x0d8b('0x17')]=checkIsBlackListIvr;function verifyAdditionalPhones(_0x221071,_0x2c64e2,_0x30980c){return cmHopperAdditionalPhone[_0x0d8b('0x18')](_0x221071,_0x2c64e2,_0x30980c)[_0x0d8b('0x7')](function(_0x5e5bc3){logger[_0x0d8b('0x9')](_0x0d8b('0x19'),inspectError(_0x5e5bc3));});}exports['verifyAdditionalPhones']=verifyAdditionalPhones;function swapAdditionalPhones(_0xe1ef20,_0x4a0ae4,_0x3dd149){return cmHopperAdditionalPhone[_0x0d8b('0x1a')](_0xe1ef20,_0x4a0ae4,_0x3dd149)[_0x0d8b('0x7')](function(_0x4fe6f9){logger['error'](_0x0d8b('0x1b'),inspectError(_0x4fe6f9));});}exports[_0x0d8b('0x1a')]=swapAdditionalPhones;function avgHandleTime(_0x4c05ee){return cmHopperHistory[_0x0d8b('0x1c')](_0x4c05ee)['catch'](function(_0x1b2b59){logger['error'](_0x0d8b('0x1d'),inspectError(_0x1b2b59));});}exports['avgHandleTime']=avgHandleTime;function createHistory(_0x2ab00d){return cmHopperHistory['createHistory'](_0x2ab00d)[_0x0d8b('0x7')](function(_0x544735){logger[_0x0d8b('0x9')](_0x0d8b('0x1e'),inspectError(_0x544735));});}exports[_0x0d8b('0x1f')]=createHistory;
\ No newline at end of file
index 11d90b5..3e66c89 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d74=['checkContactLowerLimitOriginate','lodash','moment','util','../../../../config/logger','dialer','../../../../config/environment/shared','timezones','RESCHEDULED_CONTACTS','IS_DISACTIVED','INTERVAL_IS_EMPTY','AGENTS_NOT_LOGGED','INTERVAL_IS_NULL','GLOBAL_INTERVAL_IS_OVERTIME','RUNNING','TIMEZONE_UNKNOW','CAMPAIGN_STATUS','isPreviewCampaign','type','outbound','isOutboundQueue','dialActive','isQueueCampaignActive','active','isIVRCampaignActive','milliseconds','diff','seconds','getSeconds','dialMethod','message','available','loggedIn','loggedInDb','paused','talking','pTalking','waiting','inUse','originated','Trunk','name','dialTimezone','dialGlobalInterval','isNil','Interval','Intervals','isEmpty','UNKNOWN_TIMEZONE','SIP/','status','TrunkBackup','includes','ACTIVE','INACTIVE','NO_AGENTS_LOGGED','getQueueCampaignStatusMessage','DISACTIVED','getQueueCampaignActiveStatusMessage','match','extractCalleridName','string','isUndefined','format','\x22%s\x22\x20<%s>','getCallerId','\x5cw{0,','pow','replace','error','[decrementOriginate]\x20queue\x20originate\x20value\x20is\x20negative','decrementOriginate','length','checkContactEmpty','erlangb'];(function(_0x43f04c,_0x55a068){var _0x51e7c6=function(_0x37c46e){while(--_0x37c46e){_0x43f04c['push'](_0x43f04c['shift']());}};_0x51e7c6(++_0x55a068);}(_0x6d74,0x97));var _0x46d7=function(_0x47e7cb,_0x4c1b8d){_0x47e7cb=_0x47e7cb-0x0;var _0x2a8874=_0x6d74[_0x47e7cb];return _0x2a8874;};'use strict';var _=require(_0x46d7('0x0'));var moment=require(_0x46d7('0x1'));var util=require(_0x46d7('0x2'));var logger=require(_0x46d7('0x3'))(_0x46d7('0x4'));var timezones=require(_0x46d7('0x5'))[_0x46d7('0x6')];var CAMPAIGN_STATUS={'ACTIVE':'ACTIVE','BLACKLIST':'BLACKLIST','CONTACTS_RESCHEDULED':_0x46d7('0x7'),'DEACTIVATED':'DEACTIVATED','DISACTIVED':_0x46d7('0x8'),'EMPTY_INTERVAL':_0x46d7('0x9'),'INACTIVE':'NOT_ACTIVE','NO_AGENTS_LOGGED':_0x46d7('0xa'),'NO_AVAILABLE_CONTACTS':'AVAILABLE_CONTACTS_FINISHED','NULL_INTERVAL':_0x46d7('0xb'),'OVERTIME_INTERVAL':'INTERVAL_IS_OVERTIME','OVERTIME_GLOBAL_INTERVAL':_0x46d7('0xc'),'QUEUE_RECALL':'RECALLINQUEUE','RECALL_TIMEOUT':'RECALLFAILEDTIMEOUT','RUNNING':_0x46d7('0xd'),'UNKNOWN_TIMEZONE':_0x46d7('0xe'),'UNREACHABLE_TRUNK':'TRUNK_IS_NOT_REACHABLE'};exports[_0x46d7('0xf')]=CAMPAIGN_STATUS;function isPreviewCampaign(_0x9eae31){return _0x9eae31['dialMethod']==='preview';}exports[_0x46d7('0x10')]=isPreviewCampaign;function isIVRCampaign(_0xf7b117){return _0xf7b117['type']==='ivr';}exports['isIVRCampaign']=isIVRCampaign;function isOutboundQueue(_0x10281d){return _0x10281d[_0x46d7('0x11')]===_0x46d7('0x12');}exports[_0x46d7('0x13')]=isOutboundQueue;function isQueueCampaignActive(_0x455e45){return _0x455e45[_0x46d7('0x14')];}exports[_0x46d7('0x15')]=isQueueCampaignActive;function isIVRCampaignActive(_0x4ce96a){return _0x4ce96a[_0x46d7('0x16')];}exports[_0x46d7('0x17')]=isIVRCampaignActive;function getSeconds(_0x382da6,_0x3399e4){var _0x133882=moment(_0x382da6)[_0x46d7('0x18')](0x0);var _0x2b7fe8=moment(_0x3399e4)[_0x46d7('0x18')](0x0);return _0x133882[_0x46d7('0x19')](_0x2b7fe8,_0x46d7('0x1a'));}exports[_0x46d7('0x1b')]=getSeconds;function hasQueueCampaignDataChanged(_0x1f9533,_0x20e2f6){var _0x5d9ab6=![];var _0x1b3106=_0x1f9533[_0x46d7('0x1c')]!==_0x20e2f6[_0x46d7('0x1c')]||_0x1f9533[_0x46d7('0x14')]!==_0x20e2f6[_0x46d7('0x14')]||_0x1f9533[_0x46d7('0x1d')]!==_0x20e2f6['message'];var _0x16f400=_0x1f9533['available']!==_0x20e2f6[_0x46d7('0x1e')]||_0x1f9533[_0x46d7('0x1f')]!==_0x20e2f6[_0x46d7('0x1f')]||_0x1f9533[_0x46d7('0x20')]!==_0x20e2f6[_0x46d7('0x20')]||_0x1f9533[_0x46d7('0x21')]!==_0x20e2f6[_0x46d7('0x21')]||_0x1f9533[_0x46d7('0x22')]!==_0x20e2f6[_0x46d7('0x22')]||_0x1f9533[_0x46d7('0x23')]!==_0x20e2f6[_0x46d7('0x23')]||_0x1f9533[_0x46d7('0x24')]!==_0x20e2f6['waiting']||_0x1f9533[_0x46d7('0x25')]!==_0x20e2f6['inUse']||_0x1f9533[_0x46d7('0x26')]!==_0x20e2f6['originated'];if(_0x1f9533[_0x46d7('0x27')]&&_0x20e2f6[_0x46d7('0x27')]){_0x5d9ab6=_0x1f9533[_0x46d7('0x27')][_0x46d7('0x28')]!==_0x20e2f6[_0x46d7('0x27')][_0x46d7('0x28')]||_0x1f9533[_0x46d7('0x27')]['active']!==_0x20e2f6[_0x46d7('0x27')][_0x46d7('0x16')];}return _0x1b3106||_0x16f400||_0x5d9ab6;}exports['hasQueueCampaignDataChanged']=hasQueueCampaignDataChanged;function checkAnyValidQueueCampaignInterval(_0x305387){var _0x3e350b=null;var _0x4c6fb0=_0x305387[_0x46d7('0x29')];if(_['isNil'](_0x305387[_0x46d7('0x2a')])||_[_0x46d7('0x2b')](_0x305387[_0x46d7('0x2c')])||_[_0x46d7('0x2b')](_0x305387[_0x46d7('0x2c')][_0x46d7('0x2d')])){_0x3e350b=CAMPAIGN_STATUS['NULL_INTERVAL'];}else if(_[_0x46d7('0x2e')](_0x305387[_0x46d7('0x2a')])||_[_0x46d7('0x2e')](_0x305387[_0x46d7('0x2c')][_0x46d7('0x2d')])){_0x3e350b=CAMPAIGN_STATUS['EMPTY_INTERVAL'];}else if(_0x4c6fb0&&!timezones[_0x4c6fb0]){_0x3e350b=CAMPAIGN_STATUS[_0x46d7('0x2f')];}return _0x3e350b;}function checkAnyValidTrunk(_0x58afd5,_0x255a78){var _0x1324e8=null;var _0x5710ae=_0x46d7('0x30');var _0x39a48f=['reachable','unmonitored'];var _0xeba25a=!![];if(_0x58afd5[_0x46d7('0x27')]&&_0x58afd5[_0x46d7('0x27')]['active']){_0x5710ae+=_0x58afd5[_0x46d7('0x27')][_0x46d7('0x28')];_0x1324e8=_0x255a78[_0x5710ae];_0xeba25a=_0x39a48f['includes'](_0x1324e8[_0x46d7('0x31')]);}else if(_0x58afd5[_0x46d7('0x32')]&&_0x58afd5[_0x46d7('0x32')][_0x46d7('0x16')]){_0x5710ae+=_0x58afd5[_0x46d7('0x32')]['name'];_0x1324e8=_0x255a78[_0x5710ae];_0xeba25a=_0x39a48f[_0x46d7('0x33')](_0x1324e8[_0x46d7('0x31')]);}return _0xeba25a;}function getQueueCampaignStatusMessage(_0x504a19,_0x30d1d7){var _0x175bd6=CAMPAIGN_STATUS[_0x46d7('0x34')];var _0x226321=isPreviewCampaign(_0x504a19);if(!isQueueCampaignActive(_0x504a19)){if(_0x226321){_0x175bd6=CAMPAIGN_STATUS[_0x46d7('0x35')];}else{if(_0x504a19[_0x46d7('0x26')]===0x0&&_0x504a19[_0x46d7('0x22')]===0x0&&_0x504a19[_0x46d7('0x24')]===0x0&&(_0x504a19['pTalking']||0x0)===0x0){_0x175bd6=CAMPAIGN_STATUS[_0x46d7('0x35')];}else{_0x175bd6=CAMPAIGN_STATUS['DISACTIVED'];}}}else if(_0x504a19[_0x46d7('0x1f')]===0x0){_0x175bd6=CAMPAIGN_STATUS[_0x46d7('0x36')];}else if(!checkAnyValidTrunk(_0x504a19,_0x30d1d7)){_0x175bd6=CAMPAIGN_STATUS['UNREACHABLE_TRUNK'];}else if(!isPreviewCampaign(_0x504a19)){var _0x8b6b2e=checkAnyValidQueueCampaignInterval(_0x504a19);if(_0x8b6b2e){_0x175bd6=_0x8b6b2e;}}return _0x175bd6;}exports[_0x46d7('0x37')]=getQueueCampaignStatusMessage;function getQueueCampaignActiveStatusMessage(_0x4c4cc9){var _0x129d12=CAMPAIGN_STATUS[_0x46d7('0x38')];if(_0x4c4cc9['originated']===0x0&&_0x4c4cc9['talking']===0x0&&_0x4c4cc9[_0x46d7('0x24')]===0x0&&(_0x4c4cc9['pTalking']||0x0)===0x0){_0x129d12=CAMPAIGN_STATUS['INACTIVE'];}return _0x129d12;}exports[_0x46d7('0x39')]=getQueueCampaignActiveStatusMessage;function extractCalleridName(_0x167b0e){var _0x20f2b6=_0x167b0e[_0x46d7('0x3a')](/"(.*?)"/);return _0x20f2b6?_0x20f2b6[0x1]:_0x167b0e;}exports[_0x46d7('0x3b')]=extractCalleridName;function getCallerId(_0xfdd13a,_0x585558,_0xcfddf2){if(!_['isUndefined'](_0xcfddf2)&&typeof _0xcfddf2===_0x46d7('0x3c')&&!_['isEmpty'](_0xcfddf2)){if(!_[_0x46d7('0x3d')](_0x585558)&&typeof _0x585558==='string'&&!_[_0x46d7('0x2e')](_0x585558)){return util['format']('\x22%s\x22\x20<%s>',_0x585558,_0xcfddf2);}return util[_0x46d7('0x3e')](_0x46d7('0x3f'),_0xcfddf2,_0xcfddf2);}if(!_['isUndefined'](_0xfdd13a)&&typeof _0xfdd13a===_0x46d7('0x3c')&&!_[_0x46d7('0x2e')](_0xfdd13a)){return _0xfdd13a;}return'\x22\x22\x20<>';}exports[_0x46d7('0x40')]=getCallerId;function getCallerIdRandom(_0x5ef37e,_0x2f1ae1){var _0x1ffce9;var _0x205859;var _0xb9ba49;if(_0x2f1ae1<=0x0){_0x2f1ae1=0x1;}_0x1ffce9=new RegExp(_0x46d7('0x41')+_0x2f1ae1+'}$');_0x205859=Math[_0x46d7('0x42')](0xa,_0x2f1ae1-0x1);_0xb9ba49=Math[_0x46d7('0x42')](0xa,_0x2f1ae1)-0x1;return util[_0x46d7('0x3e')]('%s',_[_0x46d7('0x43')](_0x5ef37e,_0x1ffce9,_['random'](_0x205859,_0xb9ba49)['toString']()));}exports['getCallerIdRandom']=getCallerIdRandom;function decrementOriginate(_0x5ed4e2){if(_0x5ed4e2[_0x46d7('0x26')]&&_0x5ed4e2[_0x46d7('0x26')]>0x0){_0x5ed4e2[_0x46d7('0x26')]-=0x1;}else{logger[_0x46d7('0x44')](_0x46d7('0x45'));}}exports[_0x46d7('0x46')]=decrementOriginate;function checkContactEmpty(_0x36bf55){return _0x36bf55&&_0x36bf55[_0x46d7('0x47')]>0x0;}exports[_0x46d7('0x48')]=checkContactEmpty;function erlangb(_0x1ab604,_0x5ce3b6){if(_0x5ce3b6===0x0){return 0x0;}var _0x2f5d7d=0x1;for(var _0x27bdd9=0x1;_0x27bdd9<=_0x5ce3b6;_0x27bdd9+=0x1){_0x2f5d7d=0x1+_0x2f5d7d*_0x27bdd9/_0x1ab604;}return 0x1/_0x2f5d7d;}exports[_0x46d7('0x49')]=erlangb;function checkContactLowerLimitOriginate(_0x5bd0c1,_0x4c1717,_0x3ef61e){if(_0x4c1717>_0x3ef61e){for(var _0x31c4c8=0x0;_0x31c4c8<_0x4c1717-_0x3ef61e;_0x31c4c8+=0x1){decrementOriginate(_0x5bd0c1);}}}exports[_0x46d7('0x4a')]=checkContactLowerLimitOriginate;
\ No newline at end of file
+var _0x1e63=['loggedInDb','paused','talking','pTalking','waiting','inUse','originated','Trunk','name','dialGlobalInterval','isNil','Interval','Intervals','NULL_INTERVAL','isEmpty','EMPTY_INTERVAL','SIP/','unmonitored','includes','status','TrunkBackup','INACTIVE','DISACTIVED','NO_AGENTS_LOGGED','UNREACHABLE_TRUNK','getQueueCampaignStatusMessage','getQueueCampaignActiveStatusMessage','extractCalleridName','isUndefined','string','format','\x22%s\x22\x20<%s>','\x22\x22\x20<>','getCallerId','\x5cw{0,','pow','replace','random','toString','getCallerIdRandom','error','decrementOriginate','checkContactEmpty','erlangb','checkContactLowerLimitOriginate','lodash','moment','../../../../config/logger','../../../../config/environment/shared','ACTIVE','BLACKLIST','RESCHEDULED_CONTACTS','DEACTIVATED','IS_DISACTIVED','INTERVAL_IS_EMPTY','NOT_ACTIVE','AGENTS_NOT_LOGGED','AVAILABLE_CONTACTS_FINISHED','INTERVAL_IS_NULL','INTERVAL_IS_OVERTIME','GLOBAL_INTERVAL_IS_OVERTIME','RECALLINQUEUE','RECALLFAILEDTIMEOUT','RUNNING','TIMEZONE_UNKNOW','TRUNK_IS_NOT_REACHABLE','CAMPAIGN_STATUS','dialMethod','preview','isPreviewCampaign','type','ivr','outbound','isOutboundQueue','dialActive','active','isIVRCampaignActive','milliseconds','diff','seconds','message','available','loggedIn'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x1e63,0x126));var _0x31e6=function(_0x77984a,_0x3c05ae){_0x77984a=_0x77984a-0x0;var _0x277be9=_0x1e63[_0x77984a];return _0x277be9;};'use strict';var _=require(_0x31e6('0x0'));var moment=require(_0x31e6('0x1'));var util=require('util');var logger=require(_0x31e6('0x2'))('dialer');var timezones=require(_0x31e6('0x3'))['timezones'];var CAMPAIGN_STATUS={'ACTIVE':_0x31e6('0x4'),'BLACKLIST':_0x31e6('0x5'),'CONTACTS_RESCHEDULED':_0x31e6('0x6'),'DEACTIVATED':_0x31e6('0x7'),'DISACTIVED':_0x31e6('0x8'),'EMPTY_INTERVAL':_0x31e6('0x9'),'INACTIVE':_0x31e6('0xa'),'NO_AGENTS_LOGGED':_0x31e6('0xb'),'NO_AVAILABLE_CONTACTS':_0x31e6('0xc'),'NULL_INTERVAL':_0x31e6('0xd'),'OVERTIME_INTERVAL':_0x31e6('0xe'),'OVERTIME_GLOBAL_INTERVAL':_0x31e6('0xf'),'QUEUE_RECALL':_0x31e6('0x10'),'RECALL_TIMEOUT':_0x31e6('0x11'),'RUNNING':_0x31e6('0x12'),'UNKNOWN_TIMEZONE':_0x31e6('0x13'),'UNREACHABLE_TRUNK':_0x31e6('0x14')};exports[_0x31e6('0x15')]=CAMPAIGN_STATUS;function isPreviewCampaign(_0x7399d9){return _0x7399d9[_0x31e6('0x16')]===_0x31e6('0x17');}exports[_0x31e6('0x18')]=isPreviewCampaign;function isIVRCampaign(_0x4db513){return _0x4db513[_0x31e6('0x19')]===_0x31e6('0x1a');}exports['isIVRCampaign']=isIVRCampaign;function isOutboundQueue(_0x11b22e){return _0x11b22e[_0x31e6('0x19')]===_0x31e6('0x1b');}exports[_0x31e6('0x1c')]=isOutboundQueue;function isQueueCampaignActive(_0x10a3e0){return _0x10a3e0[_0x31e6('0x1d')];}exports['isQueueCampaignActive']=isQueueCampaignActive;function isIVRCampaignActive(_0x83840b){return _0x83840b[_0x31e6('0x1e')];}exports[_0x31e6('0x1f')]=isIVRCampaignActive;function getSeconds(_0x3bf3f6,_0x29f738){var _0x22e5b4=moment(_0x3bf3f6)[_0x31e6('0x20')](0x0);var _0xdbb9c3=moment(_0x29f738)[_0x31e6('0x20')](0x0);return _0x22e5b4[_0x31e6('0x21')](_0xdbb9c3,_0x31e6('0x22'));}exports['getSeconds']=getSeconds;function hasQueueCampaignDataChanged(_0x5c4f43,_0x3dbdda){var _0x433089=![];var _0x36bfaa=_0x5c4f43['dialMethod']!==_0x3dbdda[_0x31e6('0x16')]||_0x5c4f43[_0x31e6('0x1d')]!==_0x3dbdda[_0x31e6('0x1d')]||_0x5c4f43[_0x31e6('0x23')]!==_0x3dbdda[_0x31e6('0x23')];var _0x5599d0=_0x5c4f43[_0x31e6('0x24')]!==_0x3dbdda[_0x31e6('0x24')]||_0x5c4f43[_0x31e6('0x25')]!==_0x3dbdda['loggedIn']||_0x5c4f43['loggedInDb']!==_0x3dbdda[_0x31e6('0x26')]||_0x5c4f43[_0x31e6('0x27')]!==_0x3dbdda[_0x31e6('0x27')]||_0x5c4f43['talking']!==_0x3dbdda[_0x31e6('0x28')]||_0x5c4f43['pTalking']!==_0x3dbdda[_0x31e6('0x29')]||_0x5c4f43[_0x31e6('0x2a')]!==_0x3dbdda[_0x31e6('0x2a')]||_0x5c4f43[_0x31e6('0x2b')]!==_0x3dbdda[_0x31e6('0x2b')]||_0x5c4f43[_0x31e6('0x2c')]!==_0x3dbdda[_0x31e6('0x2c')];if(_0x5c4f43[_0x31e6('0x2d')]&&_0x3dbdda[_0x31e6('0x2d')]){_0x433089=_0x5c4f43[_0x31e6('0x2d')][_0x31e6('0x2e')]!==_0x3dbdda[_0x31e6('0x2d')][_0x31e6('0x2e')]||_0x5c4f43[_0x31e6('0x2d')][_0x31e6('0x1e')]!==_0x3dbdda[_0x31e6('0x2d')][_0x31e6('0x1e')];}return _0x36bfaa||_0x5599d0||_0x433089;}exports['hasQueueCampaignDataChanged']=hasQueueCampaignDataChanged;function checkAnyValidQueueCampaignInterval(_0xeaae0e){var _0x4022ed=null;var _0x955380=_0xeaae0e['dialTimezone'];if(_['isNil'](_0xeaae0e[_0x31e6('0x2f')])||_[_0x31e6('0x30')](_0xeaae0e[_0x31e6('0x31')])||_[_0x31e6('0x30')](_0xeaae0e['Interval'][_0x31e6('0x32')])){_0x4022ed=CAMPAIGN_STATUS[_0x31e6('0x33')];}else if(_[_0x31e6('0x34')](_0xeaae0e[_0x31e6('0x2f')])||_['isEmpty'](_0xeaae0e[_0x31e6('0x31')][_0x31e6('0x32')])){_0x4022ed=CAMPAIGN_STATUS[_0x31e6('0x35')];}else if(_0x955380&&!timezones[_0x955380]){_0x4022ed=CAMPAIGN_STATUS['UNKNOWN_TIMEZONE'];}return _0x4022ed;}function checkAnyValidTrunk(_0xd8e09c,_0xf1edac){var _0x1f67bb=null;var _0x59456f=_0x31e6('0x36');var _0x4fbc6e=['reachable',_0x31e6('0x37')];var _0x286a63=!![];if(_0xd8e09c[_0x31e6('0x2d')]&&_0xd8e09c[_0x31e6('0x2d')][_0x31e6('0x1e')]){_0x59456f+=_0xd8e09c[_0x31e6('0x2d')][_0x31e6('0x2e')];_0x1f67bb=_0xf1edac[_0x59456f];_0x286a63=_0x4fbc6e[_0x31e6('0x38')](_0x1f67bb[_0x31e6('0x39')]);}else if(_0xd8e09c[_0x31e6('0x3a')]&&_0xd8e09c[_0x31e6('0x3a')][_0x31e6('0x1e')]){_0x59456f+=_0xd8e09c[_0x31e6('0x3a')]['name'];_0x1f67bb=_0xf1edac[_0x59456f];_0x286a63=_0x4fbc6e[_0x31e6('0x38')](_0x1f67bb['status']);}return _0x286a63;}function getQueueCampaignStatusMessage(_0x398404,_0x52f12d){var _0x2ae0e7=CAMPAIGN_STATUS[_0x31e6('0x4')];var _0x24a499=isPreviewCampaign(_0x398404);if(!isQueueCampaignActive(_0x398404)){if(_0x24a499){_0x2ae0e7=CAMPAIGN_STATUS['INACTIVE'];}else{if(_0x398404[_0x31e6('0x2c')]===0x0&&_0x398404[_0x31e6('0x28')]===0x0&&_0x398404[_0x31e6('0x2a')]===0x0&&(_0x398404[_0x31e6('0x29')]||0x0)===0x0){_0x2ae0e7=CAMPAIGN_STATUS[_0x31e6('0x3b')];}else{_0x2ae0e7=CAMPAIGN_STATUS[_0x31e6('0x3c')];}}}else if(_0x398404['loggedIn']===0x0){_0x2ae0e7=CAMPAIGN_STATUS[_0x31e6('0x3d')];}else if(!checkAnyValidTrunk(_0x398404,_0x52f12d)){_0x2ae0e7=CAMPAIGN_STATUS[_0x31e6('0x3e')];}else if(!isPreviewCampaign(_0x398404)){var _0x2c17e4=checkAnyValidQueueCampaignInterval(_0x398404);if(_0x2c17e4){_0x2ae0e7=_0x2c17e4;}}return _0x2ae0e7;}exports[_0x31e6('0x3f')]=getQueueCampaignStatusMessage;function getQueueCampaignActiveStatusMessage(_0x269dce){var _0x411484=CAMPAIGN_STATUS[_0x31e6('0x3c')];if(_0x269dce[_0x31e6('0x2c')]===0x0&&_0x269dce[_0x31e6('0x28')]===0x0&&_0x269dce[_0x31e6('0x2a')]===0x0&&(_0x269dce['pTalking']||0x0)===0x0){_0x411484=CAMPAIGN_STATUS[_0x31e6('0x3b')];}return _0x411484;}exports[_0x31e6('0x40')]=getQueueCampaignActiveStatusMessage;function extractCalleridName(_0x25920){var _0x56416e=_0x25920['match'](/"(.*?)"/);return _0x56416e?_0x56416e[0x1]:_0x25920;}exports[_0x31e6('0x41')]=extractCalleridName;function getCallerId(_0x22ec25,_0xbc6469,_0x2ba777){if(!_[_0x31e6('0x42')](_0x2ba777)&&typeof _0x2ba777===_0x31e6('0x43')&&!_[_0x31e6('0x34')](_0x2ba777)){if(!_[_0x31e6('0x42')](_0xbc6469)&&typeof _0xbc6469===_0x31e6('0x43')&&!_[_0x31e6('0x34')](_0xbc6469)){return util[_0x31e6('0x44')]('\x22%s\x22\x20<%s>',_0xbc6469,_0x2ba777);}return util[_0x31e6('0x44')](_0x31e6('0x45'),_0x2ba777,_0x2ba777);}if(!_[_0x31e6('0x42')](_0x22ec25)&&typeof _0x22ec25===_0x31e6('0x43')&&!_[_0x31e6('0x34')](_0x22ec25)){return _0x22ec25;}return _0x31e6('0x46');}exports[_0x31e6('0x47')]=getCallerId;function getCallerIdRandom(_0x22173e,_0x5954b6){var _0x26a582;var _0x375702;var _0x54db53;if(_0x5954b6<=0x0){_0x5954b6=0x1;}_0x26a582=new RegExp(_0x31e6('0x48')+_0x5954b6+'}$');_0x375702=Math['pow'](0xa,_0x5954b6-0x1);_0x54db53=Math[_0x31e6('0x49')](0xa,_0x5954b6)-0x1;return util[_0x31e6('0x44')]('%s',_[_0x31e6('0x4a')](_0x22173e,_0x26a582,_[_0x31e6('0x4b')](_0x375702,_0x54db53)[_0x31e6('0x4c')]()));}exports[_0x31e6('0x4d')]=getCallerIdRandom;function decrementOriginate(_0x430672){if(_0x430672[_0x31e6('0x2c')]&&_0x430672[_0x31e6('0x2c')]>0x0){_0x430672['originated']-=0x1;}else{logger[_0x31e6('0x4e')]('[decrementOriginate]\x20queue\x20originate\x20value\x20is\x20negative');}}exports[_0x31e6('0x4f')]=decrementOriginate;function checkContactEmpty(_0x1446fb){return _0x1446fb&&_0x1446fb['length']>0x0;}exports[_0x31e6('0x50')]=checkContactEmpty;function erlangb(_0x2922cc,_0x5b6a28){if(_0x5b6a28===0x0){return 0x0;}var _0x456bdb=0x1;for(var _0x581ba9=0x1;_0x581ba9<=_0x5b6a28;_0x581ba9+=0x1){_0x456bdb=0x1+_0x456bdb*_0x581ba9/_0x2922cc;}return 0x1/_0x456bdb;}exports[_0x31e6('0x51')]=erlangb;function checkContactLowerLimitOriginate(_0x4d4c17,_0x2f7a37,_0x3e6a74){if(_0x2f7a37>_0x3e6a74){for(var _0x222100=0x0;_0x222100<_0x2f7a37-_0x3e6a74;_0x222100+=0x1){decrementOriginate(_0x4d4c17);}}}exports[_0x31e6('0x52')]=checkContactLowerLimitOriginate;
\ No newline at end of file
index 5b2b28c..cfdbd80 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(_0x31a463,_0x49ce74){var _0x5a21f7=function(_0x4806e1){while(--_0x4806e1){_0x31a463['push'](_0x31a463['shift']());}};_0x5a21f7(++_0x49ce74);}(_0xa9e0,0x123));var _0x0a9e=function(_0x49ca18,_0x5e6d05){_0x49ca18=_0x49ca18-0x0;var _0x145d54=_0xa9e0[_0x49ca18];return _0x145d54;};'use strict';var util=require(_0x0a9e('0x0'));var _=require(_0x0a9e('0x1'));var 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(_0x35f3f3,_0x2f34cc){var _0xab1111=function(_0x20328b){while(--_0x20328b){_0x35f3f3['push'](_0x35f3f3['shift']());}};_0xab1111(++_0x2f34cc);}(_0xa9e0,0x123));var _0x0a9e=function(_0x9aada2,_0xd2d349){_0x9aada2=_0x9aada2-0x0;var _0x196dff=_0xa9e0[_0x9aada2];return _0x196dff;};'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 e071360..1b5b064 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xffc2=['../rpc/faxAccount','../rpc/attachment','../rpc/faxMessage','faxAccounts','trunks','actions','newchannel','bind','varset','syncFaxStatus','syncReceiveFax','hangup','syncHangup','originateresponse','syncNewchannel','hasOwnProperty','localstationid','uniqueid','channels','channel','name','info','\x20syncNewchannel\x20','prototype','syncVarSet','variable','value','syncNewState','channelstate','channelstatedesc','syncNewExten','operation','filename','\x20syncFaxStatus\x20','remotestationid','pagestransferred','resolution','transferrate','calleridnum','/var/opt/motion2/server/files/attachments/','\x20result\x20conversion\x20file\x20','message','create','parse','application/pdf','notify','fax','.pdf','catch','error','\x20notify\x20','stringify','\x20receiveFax\x20','syncOriginateResponse','merge','pick','reason','AttachmentId','update','SENDING\x20FAILED\x20','then','logger','[Fax][Message][Error][Updated]','[Fax][Message][Error][NoUpdate1]','[Fax][Message][Error][NoUpdate2]','updateStatus','[Fax][Message][Updated]','[Fax][Message][NoUpdate1]','finally','[Fax][Message][NoUpdate2]','\x20hangup\x20faxRiceive\x20','faxpages','faxstatus','SUCCESS','faxstatusstring','SENDING\x20FAILED','execOriginate','FaxAccountId','[Fax][execOriginate][success]','Fax\x20received','checkAfterSend','checkTrunk','Trunk\x20Reachable','format','%s/%s.tif','dir','XMF-PATH','Convert\x20pdf\x20to\x20tif','Action','variablesAction','isNil','active','SIP/%s','status','reachable','unmonitored','isTrunkReachable','[Fax][checkTrunk][Trunk\x20not\x20working\x20correctly]','\x20Trunk\x20is\x20not\x20active','Trunk\x20not\x20working\x20correctly','[Fax][checkTrunk][Empty\x20Fax]','Empty\x20Fax','[Fax][checkTrunk][Empty\x20path]','Empty\x20path','Is\x20Valid','lodash','bluebird','uuid','moment','path','tiff2pdf','./util/gs','../../../config/logger','../ami','./rpcDb','./channel','./util/util'];(function(_0x4a53d,_0x58a95e){var _0x27410e=function(_0x38fc90){while(--_0x38fc90){_0x4a53d['push'](_0x4a53d['shift']());}};_0x27410e(++_0x58a95e);}(_0xffc2,0xde));var _0x2ffc=function(_0x1476fb,_0x467d01){_0x1476fb=_0x1476fb-0x0;var _0x44f57e=_0xffc2[_0x1476fb];return _0x44f57e;};'use strict';var util=require('util');var _=require(_0x2ffc('0x0'));var BPromise=require(_0x2ffc('0x1'));var uuid=require(_0x2ffc('0x2'));var moment=require(_0x2ffc('0x3'));var path=require(_0x2ffc('0x4'));var tiff2pdf=require(_0x2ffc('0x5'));var gs=require(_0x2ffc('0x6'));var logger=require(_0x2ffc('0x7'))('fax');var ami=require(_0x2ffc('0x8'));var rpcDb=require(_0x2ffc('0x9'));var Channel=require(_0x2ffc('0xa'));var ut=require(_0x2ffc('0xb'));var Action=require('./action');var faxAccount=require(_0x2ffc('0xc'));var attachment=require(_0x2ffc('0xd'));var faxMessage=require(_0x2ffc('0xe'));function Fax(_0x4e266c){this['channels']={};this['faxAccounts']=_0x4e266c[_0x2ffc('0xf')];this['trunks']=_0x4e266c[_0x2ffc('0x10')];this[_0x2ffc('0x11')]={};ami['on'](_0x2ffc('0x12'),this['syncNewchannel'][_0x2ffc('0x13')](this));ami['on'](_0x2ffc('0x14'),this['syncVarSet']['bind'](this));ami['on']('newstate',this['syncNewState'][_0x2ffc('0x13')](this));ami['on']('newexten',this['syncNewExten'][_0x2ffc('0x13')](this));ami['on']('faxstatus',this[_0x2ffc('0x15')][_0x2ffc('0x13')](this));ami['on']('receivefax',this[_0x2ffc('0x16')][_0x2ffc('0x13')](this));ami['on'](_0x2ffc('0x17'),this[_0x2ffc('0x18')][_0x2ffc('0x13')](this));ami['on'](_0x2ffc('0x19'),this['syncOriginateResponse'][_0x2ffc('0x13')](this));}Fax['prototype'][_0x2ffc('0x1a')]=function(_0x331a59){if(_0x331a59['context']==='from-voip-provider'){for(var _0x3e3460 in this[_0x2ffc('0xf')]){if(this['faxAccounts'][_0x2ffc('0x1b')](_0x3e3460)){if(_0x331a59['exten']===this[_0x2ffc('0xf')][_0x3e3460][_0x2ffc('0x1c')]){this['channels'][_0x331a59[_0x2ffc('0x1d')]]={};this[_0x2ffc('0x1e')][_0x331a59[_0x2ffc('0x1d')]][_0x2ffc('0x1f')]=_0x331a59['channel'];this['channels'][_0x331a59['uniqueid']]['id']=this[_0x2ffc('0xf')][_0x3e3460]['id'];this[_0x2ffc('0x1e')][_0x331a59[_0x2ffc('0x1d')]][_0x2ffc('0x20')]=this[_0x2ffc('0xf')][_0x3e3460][_0x2ffc('0x20')];logger[_0x2ffc('0x21')](_0x331a59[_0x2ffc('0x1d')],_0x2ffc('0x22'));}}}}if(this[_0x2ffc('0x11')][_0x331a59['uniqueid']]){this[_0x2ffc('0x1e')][_0x331a59[_0x2ffc('0x1d')]]={};this[_0x2ffc('0x1e')][_0x331a59[_0x2ffc('0x1d')]]['channel']=_0x331a59[_0x2ffc('0x1f')];logger[_0x2ffc('0x21')](_0x331a59[_0x2ffc('0x1d')],'\x20syncNewchannel\x20');}};Fax[_0x2ffc('0x23')][_0x2ffc('0x24')]=function(_0x1fc90e){if(this[_0x2ffc('0x1e')][_0x1fc90e['uniqueid']]){for(var _0x13413e in _0x1fc90e[_0x2ffc('0x25')]){if(_0x1fc90e[_0x2ffc('0x25')]['hasOwnProperty'](_0x13413e)){this[_0x2ffc('0x1e')][_0x1fc90e[_0x2ffc('0x1d')]][_0x13413e]=_0x1fc90e[_0x2ffc('0x26')];}}}};Fax[_0x2ffc('0x23')][_0x2ffc('0x27')]=function(_0x484f37){if(this[_0x2ffc('0x1e')][_0x484f37['uniqueid']]){this[_0x2ffc('0x1e')][_0x484f37[_0x2ffc('0x1d')]][_0x2ffc('0x28')]=_0x484f37[_0x2ffc('0x28')];this[_0x2ffc('0x1e')][_0x484f37['uniqueid']]['channelstatedesc']=_0x484f37[_0x2ffc('0x29')];}};Fax[_0x2ffc('0x23')][_0x2ffc('0x2a')]=function(_0xce878e){if(this['channels'][_0xce878e[_0x2ffc('0x1d')]]){for(var _0x5dd38f in _0xce878e[_0x2ffc('0x25')]){if(_0xce878e[_0x2ffc('0x25')]['hasOwnProperty'](_0x5dd38f)){this[_0x2ffc('0x1e')][_0xce878e[_0x2ffc('0x1d')]][_0x5dd38f]=_0xce878e['value'];}}}};Fax[_0x2ffc('0x23')]['syncFaxStatus']=function(_0xe0c714){if(this[_0x2ffc('0x1e')][_0xe0c714['uniqueid']]){this['channels'][_0xe0c714[_0x2ffc('0x1d')]][_0x2ffc('0x2b')]=_0xe0c714[_0x2ffc('0x2b')];this[_0x2ffc('0x1e')][_0xe0c714[_0x2ffc('0x1d')]]['status']=_0xe0c714['status'];this[_0x2ffc('0x1e')][_0xe0c714[_0x2ffc('0x1d')]]['localstationid']=_0xe0c714[_0x2ffc('0x1c')];this[_0x2ffc('0x1e')][_0xe0c714['uniqueid']][_0x2ffc('0x2c')]=_0xe0c714[_0x2ffc('0x2c')];logger[_0x2ffc('0x21')](_0xe0c714[_0x2ffc('0x1d')],_0x2ffc('0x2d'));}};Fax[_0x2ffc('0x23')][_0x2ffc('0x16')]=function(_0x51e7c2){var _0x11e0e0=this;if(this[_0x2ffc('0x1e')][_0x51e7c2['uniqueid']]){var _0x368c95=this['channels'][_0x51e7c2[_0x2ffc('0x1d')]]['id'];this[_0x2ffc('0x1e')][_0x51e7c2[_0x2ffc('0x1d')]][_0x2ffc('0x2e')]=_0x51e7c2[_0x2ffc('0x2e')];this[_0x2ffc('0x1e')][_0x51e7c2[_0x2ffc('0x1d')]][_0x2ffc('0x2f')]=_0x51e7c2[_0x2ffc('0x2f')];this[_0x2ffc('0x1e')][_0x51e7c2[_0x2ffc('0x1d')]]['localstationid']=_0x51e7c2[_0x2ffc('0x1c')];this[_0x2ffc('0x1e')][_0x51e7c2[_0x2ffc('0x1d')]][_0x2ffc('0x30')]=_0x51e7c2[_0x2ffc('0x30')];this[_0x2ffc('0x1e')][_0x51e7c2[_0x2ffc('0x1d')]]['transferrate']=_0x51e7c2[_0x2ffc('0x31')];this[_0x2ffc('0x1e')][_0x51e7c2[_0x2ffc('0x1d')]]['filename']=_0x51e7c2[_0x2ffc('0x2c')];this['channels'][_0x51e7c2[_0x2ffc('0x1d')]]['calleridnum']=_0x51e7c2[_0x2ffc('0x32')];if(this[_0x2ffc('0x1e')][_0x51e7c2[_0x2ffc('0x1d')]][_0x2ffc('0x2f')]>0x0){tiff2pdf(_0x51e7c2[_0x2ffc('0x2c')],_0x2ffc('0x33'),function(_0x5e26e6){logger[_0x2ffc('0x21')](_0x51e7c2['uniqueid'],_0x2ffc('0x34'),_0x5e26e6[_0x2ffc('0x35')]);attachment[_0x2ffc('0x36')]({'name':path[_0x2ffc('0x37')](_0x51e7c2[_0x2ffc('0x2c')])['name'],'basename':path['parse'](_0x51e7c2['filename'])[_0x2ffc('0x20')]+'.pdf','type':_0x2ffc('0x38')})['then'](function(_0x8f877a){faxAccount[_0x2ffc('0x39')](_0x368c95,{'from':_0x51e7c2[_0x2ffc('0x32')],'mapKey':_0x2ffc('0x3a'),'body':path[_0x2ffc('0x37')](_0x51e7c2[_0x2ffc('0x2c')])[_0x2ffc('0x20')]+_0x2ffc('0x3b'),'AttachmentId':_0x8f877a['id']})[_0x2ffc('0x3c')](function(_0x434e4a){logger[_0x2ffc('0x3d')](_0x51e7c2[_0x2ffc('0x1d')],_0x2ffc('0x3e'),JSON[_0x2ffc('0x3f')](_0x434e4a));});})[_0x2ffc('0x3c')](function(_0x745bba){logger['error'](_0x51e7c2[_0x2ffc('0x1d')],_0x2ffc('0x40'),JSON[_0x2ffc('0x3f')](_0x745bba));});});}logger[_0x2ffc('0x21')](_0x51e7c2['uniqueid'],_0x2ffc('0x40'));}};Fax[_0x2ffc('0x23')][_0x2ffc('0x41')]=function(_0x2c8ffb){if(this[_0x2ffc('0x11')][_0x2c8ffb[_0x2ffc('0x1d')]]){_[_0x2ffc('0x42')](this[_0x2ffc('0x1e')][_0x2c8ffb[_0x2ffc('0x1d')]],_[_0x2ffc('0x43')](_0x2c8ffb,['response',_0x2ffc('0x44')]));}};function updateStatus(_0x8f4cde){if(_0x8f4cde[_0x2ffc('0x45')]){faxMessage[_0x2ffc('0x46')](_0x8f4cde[_0x2ffc('0x45')],{'failMessage':_0x2ffc('0x47')})[_0x2ffc('0x48')](function(_0x31374e){ut[_0x2ffc('0x49')](_0x2ffc('0x4a'),_0x31374e);})[_0x2ffc('0x3c')](function(_0x30138d){ut[_0x2ffc('0x49')](_0x2ffc('0x4b'),_0x30138d);});}else{ut[_0x2ffc('0x49')](_0x2ffc('0x4c'));}}Fax[_0x2ffc('0x23')][_0x2ffc('0x4d')]=function(_0x58957a,_0x163a8b,_0x2ed789){var _0x222994=this;var _0xd4f469={};if(_0x163a8b){_0xd4f469={'read':_0x163a8b};}else{_0xd4f469={'failMessage':_0x2ed789};}if(this[_0x2ffc('0x11')][_0x58957a][_0x2ffc('0x45')]){faxMessage['update'](this[_0x2ffc('0x11')][_0x58957a][_0x2ffc('0x45')],_0xd4f469)['then'](function(_0x27410d){ut[_0x2ffc('0x49')](_0x2ffc('0x4e'),_0x27410d);})['catch'](function(_0x19bf2d){ut['logger'](_0x2ffc('0x4f'),_0x19bf2d);})[_0x2ffc('0x50')](function(){delete _0x222994[_0x2ffc('0x1e')][_0x58957a];delete _0x222994[_0x2ffc('0x11')][_0x58957a];});}else{ut[_0x2ffc('0x49')](_0x2ffc('0x51'));delete this[_0x2ffc('0x1e')][_0x58957a];delete this[_0x2ffc('0x11')][_0x58957a];}};Fax[_0x2ffc('0x23')]['syncHangup']=function(_0x512412){var _0x5e5e6f=this;if(this[_0x2ffc('0x1e')][_0x512412['uniqueid']]){if(this[_0x2ffc('0x11')][_0x512412[_0x2ffc('0x1d')]]){this['channels'][_0x512412[_0x2ffc('0x1d')]]['id']=this[_0x2ffc('0x11')][_0x512412[_0x2ffc('0x1d')]]['id'];this[_0x2ffc('0x1e')][_0x512412[_0x2ffc('0x1d')]][_0x2ffc('0x20')]=this[_0x2ffc('0x11')][_0x512412['uniqueid']][_0x2ffc('0x20')];}logger[_0x2ffc('0x21')](_0x512412['uniqueid'],this[_0x2ffc('0x11')][_0x512412[_0x2ffc('0x1d')]]?'\x20hangup\x20sendFile\x20':_0x2ffc('0x52'),JSON[_0x2ffc('0x3f')](this[_0x2ffc('0x1e')][_0x512412[_0x2ffc('0x1d')]]));if(this[_0x2ffc('0x11')][_0x512412['uniqueid']]){if(this[_0x2ffc('0x1e')][_0x512412[_0x2ffc('0x1d')]][_0x2ffc('0x53')]>0x0&&this[_0x2ffc('0x1e')][_0x512412[_0x2ffc('0x1d')]][_0x2ffc('0x54')]===_0x2ffc('0x55')){this[_0x2ffc('0x4d')](_0x512412[_0x2ffc('0x1d')],!![]);}else{this[_0x2ffc('0x4d')](_0x512412[_0x2ffc('0x1d')],![],this[_0x2ffc('0x1e')][_0x512412[_0x2ffc('0x1d')]][_0x2ffc('0x56')]?'SENDING\x20FAILED:\x20'+this[_0x2ffc('0x1e')][_0x512412['uniqueid']][_0x2ffc('0x56')]:_0x2ffc('0x57'));}}}};Fax[_0x2ffc('0x23')]['send']=function(_0x5a5c45){var _0x45ff1c=this;return new BPromise(function(_0x454fc5,_0x4c9ba9){_0x45ff1c[_0x2ffc('0x58')](_0x5a5c45,_0x45ff1c['faxAccounts'][_0x5a5c45[_0x2ffc('0x59')]])['then'](function(_0x1a05ae){ut[_0x2ffc('0x49')](_0x2ffc('0x5a'),_0x1a05ae);_0x454fc5(ut[_0x2ffc('0x35')](_0x2ffc('0x5b')));})[_0x2ffc('0x3c')](function(_0x5e9a77){ut['logger']('[Fax][execOriginate][failure]',_0x5e9a77);updateStatus(_0x5a5c45);_0x4c9ba9(ut[_0x2ffc('0x35')]('Fax\x20failed'));});});};Fax[_0x2ffc('0x23')][_0x2ffc('0x5c')]=function(_0x22a81c){var _0x18feae=this;return new BPromise(function(_0x185459,_0x5dcd95){var _0x3d000b=_0x18feae[_0x2ffc('0x5d')](_0x18feae['faxAccounts'][_0x22a81c['FaxAccountId']]['Trunk'],_0x22a81c);if(_0x3d000b['isValid']){_0x185459(ut[_0x2ffc('0x35')](_0x2ffc('0x5e')));}else{_0x5dcd95(ut[_0x2ffc('0x35')](_0x3d000b['message']));}});};function originate(_0xbae885,_0xb3c44d,_0x645514){return new BPromise(function(_0x2e2a3b,_0x8e9aff){if(_0x645514){var _0x19caa0=util['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[_0x2ffc('0x37')](_0xbae885[_0x2ffc('0x4')])[_0x2ffc('0x20')],_0xbae885[_0x2ffc('0x4')]);gs['execute'](_0x19caa0)['then'](function(){_0xbae885[_0x2ffc('0x4')]=util[_0x2ffc('0x5f')](_0x2ffc('0x60'),path[_0x2ffc('0x37')](_0xbae885[_0x2ffc('0x4')])[_0x2ffc('0x61')],path[_0x2ffc('0x37')](_0xbae885['path'])[_0x2ffc('0x20')]);_0xb3c44d[_0x2ffc('0x62')]=_0xbae885['path'];ut[_0x2ffc('0x49')](_0x2ffc('0x63'),'');ami[_0x2ffc('0x64')](ut[_0x2ffc('0x65')](_0xbae885,_0xb3c44d))[_0x2ffc('0x48')](function(_0x257219){_0x2e2a3b(_0x257219);})[_0x2ffc('0x3c')](function(_0x1bd9f8){_0x8e9aff(_0x1bd9f8);});})['catch'](function(_0x4811f0){_0x8e9aff(_0x4811f0);});}else{ami[_0x2ffc('0x64')](ut[_0x2ffc('0x65')](_0xbae885,_0xb3c44d))[_0x2ffc('0x48')](function(_0x28a771){_0x2e2a3b(_0x28a771);})[_0x2ffc('0x3c')](function(_0x46163f){_0x8e9aff(_0x46163f);});}});}Fax[_0x2ffc('0x23')][_0x2ffc('0x58')]=function(_0x23b248,_0x222880){var _0x3bc316=this;return new BPromise(function(_0x1eed3c,_0x1e00b2){var _0x2511a1=uuid['v4']();var _0x149ce3=ut['addVariables'](_0x23b248,_0x222880);_0x3bc316[_0x2ffc('0x11')][_0x2511a1]=new Action(_0x2511a1,_0x222880,_0x23b248);var _0x41f333=_0x3bc316['actions'][_0x2511a1];if(path['parse'](_0x23b248[_0x2ffc('0x4')])['ext']===_0x2ffc('0x3b')){originate(_0x41f333,_0x149ce3,!![])[_0x2ffc('0x48')](function(_0xf79243){_0x1eed3c(_0xf79243);})[_0x2ffc('0x3c')](function(_0x55726c){_0x1e00b2(_0x55726c);});}else{originate(_0x41f333,_0x149ce3,![])[_0x2ffc('0x48')](function(_0xacc286){_0x1eed3c(_0xacc286);})[_0x2ffc('0x3c')](function(_0x31b611){_0x1e00b2(_0x31b611);});}});};Fax[_0x2ffc('0x23')]['isTrunkReachable']=function(_0x3bb153){return!_[_0x2ffc('0x66')](_0x3bb153)&&!_['isNil'](_0x3bb153[_0x2ffc('0x20')])&&!_[_0x2ffc('0x66')](_0x3bb153['active'])&&_0x3bb153[_0x2ffc('0x67')]&&!_[_0x2ffc('0x66')](this[_0x2ffc('0x10')][util[_0x2ffc('0x5f')](_0x2ffc('0x68'),_0x3bb153['name'])])&&!_[_0x2ffc('0x66')](this['trunks'][util['format'](_0x2ffc('0x68'),_0x3bb153[_0x2ffc('0x20')])][_0x2ffc('0x69')])&&(this[_0x2ffc('0x10')][util[_0x2ffc('0x5f')](_0x2ffc('0x68'),_0x3bb153['name'])][_0x2ffc('0x69')]===_0x2ffc('0x6a')||this[_0x2ffc('0x10')][util[_0x2ffc('0x5f')]('SIP/%s',_0x3bb153[_0x2ffc('0x20')])]['status']===_0x2ffc('0x6b'));};Fax[_0x2ffc('0x23')][_0x2ffc('0x5d')]=function(_0x586e1a,_0x3fd511){if(!this[_0x2ffc('0x6c')](_0x586e1a)){ut['logger'](_0x2ffc('0x6d'),_[_0x2ffc('0x66')](_0x586e1a)?'':_0x586e1a['name']+_0x2ffc('0x6e'));return{'isValid':![],'message':_0x2ffc('0x6f')};}if(_['isNil'](_0x3fd511[_0x2ffc('0x3a')])){ut[_0x2ffc('0x49')](_0x2ffc('0x70'),JSON[_0x2ffc('0x3f')](_0x3fd511));return{'isValid':![],'message':_0x2ffc('0x71')};}if(_['isNil'](_0x3fd511['path'])){ut['logger'](_0x2ffc('0x72'),JSON[_0x2ffc('0x3f')](_0x3fd511));return{'isValid':![],'message':_0x2ffc('0x73')};}return{'isValid':!![],'message':_0x2ffc('0x74')};};module['exports']=Fax;
\ No newline at end of file
+var _0x4be5=['syncOriginateResponse','prototype','syncNewchannel','context','from-voip-provider','hasOwnProperty','exten','localstationid','uniqueid','channel','name','\x20syncNewchannel\x20','actions','info','syncVarSet','variable','channelstate','channelstatedesc','value','operation','status','filename','remotestationid','pagestransferred','resolution','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][NoUpdate2]','updateStatus','[Fax][Message][Updated]','[Fax][Message][NoUpdate1]','finally','[Fax][Message][NoUpdate2]','\x20hangup\x20sendFile\x20','\x20hangup\x20faxRiceive\x20','faxpages','faxstatus','faxstatusstring','SENDING\x20FAILED:\x20','send','FaxAccountId','[Fax][execOriginate][success]','Fax\x20failed','checkTrunk','Trunk','format','execute','dir','XMF-PATH','Convert\x20pdf\x20to\x20tif','variablesAction','Action','execOriginate','isNil','active','SIP/%s','trunks','unmonitored','[Fax][checkTrunk][Trunk\x20not\x20working\x20correctly]','\x20Trunk\x20is\x20not\x20active','[Fax][checkTrunk][Empty\x20Fax]','Empty\x20Fax','[Fax][checkTrunk][Empty\x20path]','Empty\x20path','Is\x20Valid','util','lodash','uuid','path','tiff2pdf','./util/gs','../../../config/logger','fax','../ami','./util/util','../rpc/faxAccount','../rpc/attachment','channels','faxAccounts','bind','varset','syncNewState','newexten','syncNewExten','syncFaxStatus','receivefax','syncReceiveFax','hangup','syncHangup','originateresponse'];(function(_0x446867,_0x520c17){var _0x43c44f=function(_0x37a0b6){while(--_0x37a0b6){_0x446867['push'](_0x446867['shift']());}};_0x43c44f(++_0x520c17);}(_0x4be5,0xc1));var _0x54be=function(_0x3f5dca,_0x59472b){_0x3f5dca=_0x3f5dca-0x0;var _0x5b833a=_0x4be5[_0x3f5dca];return _0x5b833a;};'use strict';var util=require(_0x54be('0x0'));var _=require(_0x54be('0x1'));var BPromise=require('bluebird');var uuid=require(_0x54be('0x2'));var moment=require('moment');var path=require(_0x54be('0x3'));var tiff2pdf=require(_0x54be('0x4'));var gs=require(_0x54be('0x5'));var logger=require(_0x54be('0x6'))(_0x54be('0x7'));var ami=require(_0x54be('0x8'));var rpcDb=require('./rpcDb');var Channel=require('./channel');var ut=require(_0x54be('0x9'));var Action=require('./action');var faxAccount=require(_0x54be('0xa'));var attachment=require(_0x54be('0xb'));var faxMessage=require('../rpc/faxMessage');function Fax(_0x13bcba){this[_0x54be('0xc')]={};this[_0x54be('0xd')]=_0x13bcba[_0x54be('0xd')];this['trunks']=_0x13bcba['trunks'];this['actions']={};ami['on']('newchannel',this['syncNewchannel'][_0x54be('0xe')](this));ami['on'](_0x54be('0xf'),this['syncVarSet'][_0x54be('0xe')](this));ami['on']('newstate',this[_0x54be('0x10')][_0x54be('0xe')](this));ami['on'](_0x54be('0x11'),this[_0x54be('0x12')][_0x54be('0xe')](this));ami['on']('faxstatus',this[_0x54be('0x13')][_0x54be('0xe')](this));ami['on'](_0x54be('0x14'),this[_0x54be('0x15')][_0x54be('0xe')](this));ami['on'](_0x54be('0x16'),this[_0x54be('0x17')][_0x54be('0xe')](this));ami['on'](_0x54be('0x18'),this[_0x54be('0x19')][_0x54be('0xe')](this));}Fax[_0x54be('0x1a')][_0x54be('0x1b')]=function(_0x1aa96b){if(_0x1aa96b[_0x54be('0x1c')]===_0x54be('0x1d')){for(var _0x80317 in this['faxAccounts']){if(this[_0x54be('0xd')][_0x54be('0x1e')](_0x80317)){if(_0x1aa96b[_0x54be('0x1f')]===this[_0x54be('0xd')][_0x80317][_0x54be('0x20')]){this[_0x54be('0xc')][_0x1aa96b['uniqueid']]={};this['channels'][_0x1aa96b[_0x54be('0x21')]][_0x54be('0x22')]=_0x1aa96b['channel'];this[_0x54be('0xc')][_0x1aa96b['uniqueid']]['id']=this[_0x54be('0xd')][_0x80317]['id'];this['channels'][_0x1aa96b[_0x54be('0x21')]][_0x54be('0x23')]=this[_0x54be('0xd')][_0x80317][_0x54be('0x23')];logger['info'](_0x1aa96b[_0x54be('0x21')],_0x54be('0x24'));}}}}if(this[_0x54be('0x25')][_0x1aa96b['uniqueid']]){this['channels'][_0x1aa96b['uniqueid']]={};this[_0x54be('0xc')][_0x1aa96b[_0x54be('0x21')]][_0x54be('0x22')]=_0x1aa96b['channel'];logger[_0x54be('0x26')](_0x1aa96b['uniqueid'],_0x54be('0x24'));}};Fax[_0x54be('0x1a')][_0x54be('0x27')]=function(_0x4f2ddd){if(this[_0x54be('0xc')][_0x4f2ddd[_0x54be('0x21')]]){for(var _0xc6a1b3 in _0x4f2ddd['variable']){if(_0x4f2ddd[_0x54be('0x28')][_0x54be('0x1e')](_0xc6a1b3)){this[_0x54be('0xc')][_0x4f2ddd[_0x54be('0x21')]][_0xc6a1b3]=_0x4f2ddd['value'];}}}};Fax[_0x54be('0x1a')][_0x54be('0x10')]=function(_0x24a100){if(this[_0x54be('0xc')][_0x24a100['uniqueid']]){this[_0x54be('0xc')][_0x24a100['uniqueid']][_0x54be('0x29')]=_0x24a100['channelstate'];this['channels'][_0x24a100[_0x54be('0x21')]][_0x54be('0x2a')]=_0x24a100[_0x54be('0x2a')];}};Fax[_0x54be('0x1a')][_0x54be('0x12')]=function(_0x4dcaff){if(this[_0x54be('0xc')][_0x4dcaff['uniqueid']]){for(var _0x344d8f in _0x4dcaff[_0x54be('0x28')]){if(_0x4dcaff[_0x54be('0x28')][_0x54be('0x1e')](_0x344d8f)){this[_0x54be('0xc')][_0x4dcaff[_0x54be('0x21')]][_0x344d8f]=_0x4dcaff[_0x54be('0x2b')];}}}};Fax['prototype'][_0x54be('0x13')]=function(_0x152f3b){if(this[_0x54be('0xc')][_0x152f3b[_0x54be('0x21')]]){this['channels'][_0x152f3b['uniqueid']]['operation']=_0x152f3b[_0x54be('0x2c')];this[_0x54be('0xc')][_0x152f3b[_0x54be('0x21')]][_0x54be('0x2d')]=_0x152f3b['status'];this[_0x54be('0xc')][_0x152f3b[_0x54be('0x21')]][_0x54be('0x20')]=_0x152f3b[_0x54be('0x20')];this['channels'][_0x152f3b[_0x54be('0x21')]]['filename']=_0x152f3b[_0x54be('0x2e')];logger[_0x54be('0x26')](_0x152f3b[_0x54be('0x21')],'\x20syncFaxStatus\x20');}};Fax[_0x54be('0x1a')][_0x54be('0x15')]=function(_0x1b559d){var _0x59ca23=this;if(this[_0x54be('0xc')][_0x1b559d[_0x54be('0x21')]]){var _0x1edf56=this[_0x54be('0xc')][_0x1b559d['uniqueid']]['id'];this['channels'][_0x1b559d['uniqueid']][_0x54be('0x2f')]=_0x1b559d['remotestationid'];this['channels'][_0x1b559d['uniqueid']][_0x54be('0x30')]=_0x1b559d[_0x54be('0x30')];this[_0x54be('0xc')][_0x1b559d['uniqueid']]['localstationid']=_0x1b559d[_0x54be('0x20')];this[_0x54be('0xc')][_0x1b559d['uniqueid']][_0x54be('0x31')]=_0x1b559d[_0x54be('0x31')];this['channels'][_0x1b559d['uniqueid']]['transferrate']=_0x1b559d['transferrate'];this[_0x54be('0xc')][_0x1b559d[_0x54be('0x21')]][_0x54be('0x2e')]=_0x1b559d[_0x54be('0x2e')];this[_0x54be('0xc')][_0x1b559d['uniqueid']][_0x54be('0x32')]=_0x1b559d[_0x54be('0x32')];if(this['channels'][_0x1b559d[_0x54be('0x21')]][_0x54be('0x30')]>0x0){tiff2pdf(_0x1b559d[_0x54be('0x2e')],_0x54be('0x33'),function(_0x4749db){logger[_0x54be('0x26')](_0x1b559d[_0x54be('0x21')],_0x54be('0x34'),_0x4749db[_0x54be('0x35')]);attachment[_0x54be('0x36')]({'name':path[_0x54be('0x37')](_0x1b559d[_0x54be('0x2e')])[_0x54be('0x23')],'basename':path[_0x54be('0x37')](_0x1b559d[_0x54be('0x2e')])[_0x54be('0x23')]+_0x54be('0x38'),'type':_0x54be('0x39')})[_0x54be('0x3a')](function(_0x57a278){faxAccount[_0x54be('0x3b')](_0x1edf56,{'from':_0x1b559d[_0x54be('0x32')],'mapKey':_0x54be('0x7'),'body':path[_0x54be('0x37')](_0x1b559d[_0x54be('0x2e')])['name']+_0x54be('0x38'),'AttachmentId':_0x57a278['id']})[_0x54be('0x3c')](function(_0x23d8ac){logger[_0x54be('0x3d')](_0x1b559d[_0x54be('0x21')],'\x20notify\x20',JSON[_0x54be('0x3e')](_0x23d8ac));});})[_0x54be('0x3c')](function(_0xa49455){logger[_0x54be('0x3d')](_0x1b559d[_0x54be('0x21')],_0x54be('0x3f'),JSON[_0x54be('0x3e')](_0xa49455));});});}logger[_0x54be('0x26')](_0x1b559d['uniqueid'],_0x54be('0x3f'));}};Fax[_0x54be('0x1a')][_0x54be('0x19')]=function(_0x4e625e){if(this[_0x54be('0x25')][_0x4e625e[_0x54be('0x21')]]){_[_0x54be('0x40')](this[_0x54be('0xc')][_0x4e625e[_0x54be('0x21')]],_[_0x54be('0x41')](_0x4e625e,['response',_0x54be('0x42')]));}};function updateStatus(_0xb24a89){if(_0xb24a89[_0x54be('0x43')]){faxMessage[_0x54be('0x44')](_0xb24a89[_0x54be('0x43')],{'failMessage':_0x54be('0x45')})[_0x54be('0x3a')](function(_0x2f5dd5){ut['logger']('[Fax][Message][Error][Updated]',_0x2f5dd5);})[_0x54be('0x3c')](function(_0x5b0c08){ut[_0x54be('0x46')]('[Fax][Message][Error][NoUpdate1]',_0x5b0c08);});}else{ut[_0x54be('0x46')](_0x54be('0x47'));}}Fax[_0x54be('0x1a')][_0x54be('0x48')]=function(_0x51db84,_0x4005ae,_0x1c2dc6){var _0x5a678b=this;var _0x47b650={};if(_0x4005ae){_0x47b650={'read':_0x4005ae};}else{_0x47b650={'failMessage':_0x1c2dc6};}if(this[_0x54be('0x25')][_0x51db84]['AttachmentId']){faxMessage[_0x54be('0x44')](this[_0x54be('0x25')][_0x51db84][_0x54be('0x43')],_0x47b650)[_0x54be('0x3a')](function(_0x1e575b){ut['logger'](_0x54be('0x49'),_0x1e575b);})['catch'](function(_0x1e42bd){ut['logger'](_0x54be('0x4a'),_0x1e42bd);})[_0x54be('0x4b')](function(){delete _0x5a678b[_0x54be('0xc')][_0x51db84];delete _0x5a678b[_0x54be('0x25')][_0x51db84];});}else{ut[_0x54be('0x46')](_0x54be('0x4c'));delete this[_0x54be('0xc')][_0x51db84];delete this[_0x54be('0x25')][_0x51db84];}};Fax[_0x54be('0x1a')][_0x54be('0x17')]=function(_0x2ee38c){var _0x5d06aa=this;if(this[_0x54be('0xc')][_0x2ee38c[_0x54be('0x21')]]){if(this['actions'][_0x2ee38c[_0x54be('0x21')]]){this[_0x54be('0xc')][_0x2ee38c[_0x54be('0x21')]]['id']=this['actions'][_0x2ee38c[_0x54be('0x21')]]['id'];this[_0x54be('0xc')][_0x2ee38c['uniqueid']][_0x54be('0x23')]=this['actions'][_0x2ee38c['uniqueid']]['name'];}logger[_0x54be('0x26')](_0x2ee38c[_0x54be('0x21')],this[_0x54be('0x25')][_0x2ee38c[_0x54be('0x21')]]?_0x54be('0x4d'):_0x54be('0x4e'),JSON[_0x54be('0x3e')](this[_0x54be('0xc')][_0x2ee38c[_0x54be('0x21')]]));if(this['actions'][_0x2ee38c[_0x54be('0x21')]]){if(this[_0x54be('0xc')][_0x2ee38c['uniqueid']][_0x54be('0x4f')]>0x0&&this[_0x54be('0xc')][_0x2ee38c[_0x54be('0x21')]][_0x54be('0x50')]==='SUCCESS'){this[_0x54be('0x48')](_0x2ee38c[_0x54be('0x21')],!![]);}else{this[_0x54be('0x48')](_0x2ee38c['uniqueid'],![],this[_0x54be('0xc')][_0x2ee38c['uniqueid']][_0x54be('0x51')]?_0x54be('0x52')+this[_0x54be('0xc')][_0x2ee38c[_0x54be('0x21')]][_0x54be('0x51')]:'SENDING\x20FAILED');}}}};Fax[_0x54be('0x1a')][_0x54be('0x53')]=function(_0x2518c4){var _0x322545=this;return new BPromise(function(_0x381213,_0x9d986c){_0x322545['execOriginate'](_0x2518c4,_0x322545[_0x54be('0xd')][_0x2518c4[_0x54be('0x54')]])[_0x54be('0x3a')](function(_0x355ec6){ut[_0x54be('0x46')](_0x54be('0x55'),_0x355ec6);_0x381213(ut[_0x54be('0x35')]('Fax\x20received'));})[_0x54be('0x3c')](function(_0x13fff7){ut['logger']('[Fax][execOriginate][failure]',_0x13fff7);updateStatus(_0x2518c4);_0x9d986c(ut[_0x54be('0x35')](_0x54be('0x56')));});});};Fax[_0x54be('0x1a')]['checkAfterSend']=function(_0x283f02){var _0x934483=this;return new BPromise(function(_0x28119d,_0x905935){var _0x6889e2=_0x934483[_0x54be('0x57')](_0x934483['faxAccounts'][_0x283f02[_0x54be('0x54')]][_0x54be('0x58')],_0x283f02);if(_0x6889e2['isValid']){_0x28119d(ut[_0x54be('0x35')]('Trunk\x20Reachable'));}else{_0x905935(ut[_0x54be('0x35')](_0x6889e2[_0x54be('0x35')]));}});};function originate(_0x1c91a5,_0x17eae2,_0x2514ba){return new BPromise(function(_0x2b6576,_0x2110b3){if(_0x2514ba){var _0x4e131c=util[_0x54be('0x59')]('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[_0x54be('0x37')](_0x1c91a5[_0x54be('0x3')])[_0x54be('0x23')],_0x1c91a5[_0x54be('0x3')]);gs[_0x54be('0x5a')](_0x4e131c)[_0x54be('0x3a')](function(){_0x1c91a5[_0x54be('0x3')]=util[_0x54be('0x59')]('%s/%s.tif',path[_0x54be('0x37')](_0x1c91a5[_0x54be('0x3')])[_0x54be('0x5b')],path['parse'](_0x1c91a5[_0x54be('0x3')])[_0x54be('0x23')]);_0x17eae2[_0x54be('0x5c')]=_0x1c91a5[_0x54be('0x3')];ut[_0x54be('0x46')](_0x54be('0x5d'),'');ami['Action'](ut[_0x54be('0x5e')](_0x1c91a5,_0x17eae2))[_0x54be('0x3a')](function(_0x130c5b){_0x2b6576(_0x130c5b);})[_0x54be('0x3c')](function(_0x145568){_0x2110b3(_0x145568);});})[_0x54be('0x3c')](function(_0x57b194){_0x2110b3(_0x57b194);});}else{ami[_0x54be('0x5f')](ut[_0x54be('0x5e')](_0x1c91a5,_0x17eae2))['then'](function(_0x56b228){_0x2b6576(_0x56b228);})[_0x54be('0x3c')](function(_0x42a517){_0x2110b3(_0x42a517);});}});}Fax['prototype'][_0x54be('0x60')]=function(_0x468d69,_0x303590){var _0x338914=this;return new BPromise(function(_0x4b047d,_0x3dc7e4){var _0x22468d=uuid['v4']();var _0x1144e8=ut['addVariables'](_0x468d69,_0x303590);_0x338914[_0x54be('0x25')][_0x22468d]=new Action(_0x22468d,_0x303590,_0x468d69);var _0x19f4b6=_0x338914['actions'][_0x22468d];if(path[_0x54be('0x37')](_0x468d69[_0x54be('0x3')])['ext']===_0x54be('0x38')){originate(_0x19f4b6,_0x1144e8,!![])['then'](function(_0x37efbc){_0x4b047d(_0x37efbc);})[_0x54be('0x3c')](function(_0x101b94){_0x3dc7e4(_0x101b94);});}else{originate(_0x19f4b6,_0x1144e8,![])[_0x54be('0x3a')](function(_0x3f9114){_0x4b047d(_0x3f9114);})[_0x54be('0x3c')](function(_0x2dbbd1){_0x3dc7e4(_0x2dbbd1);});}});};Fax[_0x54be('0x1a')]['isTrunkReachable']=function(_0x8ef3da){return!_[_0x54be('0x61')](_0x8ef3da)&&!_[_0x54be('0x61')](_0x8ef3da['name'])&&!_[_0x54be('0x61')](_0x8ef3da['active'])&&_0x8ef3da[_0x54be('0x62')]&&!_[_0x54be('0x61')](this['trunks'][util[_0x54be('0x59')](_0x54be('0x63'),_0x8ef3da['name'])])&&!_['isNil'](this[_0x54be('0x64')][util['format']('SIP/%s',_0x8ef3da[_0x54be('0x23')])][_0x54be('0x2d')])&&(this[_0x54be('0x64')][util[_0x54be('0x59')](_0x54be('0x63'),_0x8ef3da['name'])]['status']==='reachable'||this[_0x54be('0x64')][util[_0x54be('0x59')](_0x54be('0x63'),_0x8ef3da[_0x54be('0x23')])][_0x54be('0x2d')]===_0x54be('0x65'));};Fax[_0x54be('0x1a')][_0x54be('0x57')]=function(_0x5543e1,_0x4e80cf){if(!this['isTrunkReachable'](_0x5543e1)){ut['logger'](_0x54be('0x66'),_[_0x54be('0x61')](_0x5543e1)?'':_0x5543e1[_0x54be('0x23')]+_0x54be('0x67'));return{'isValid':![],'message':'Trunk\x20not\x20working\x20correctly'};}if(_[_0x54be('0x61')](_0x4e80cf[_0x54be('0x7')])){ut[_0x54be('0x46')](_0x54be('0x68'),JSON[_0x54be('0x3e')](_0x4e80cf));return{'isValid':![],'message':_0x54be('0x69')};}if(_[_0x54be('0x61')](_0x4e80cf[_0x54be('0x3')])){ut[_0x54be('0x46')](_0x54be('0x6a'),JSON[_0x54be('0x3e')](_0x4e80cf));return{'isValid':![],'message':_0x54be('0x6b')};}return{'isValid':!![],'message':_0x54be('0x6c')};};module['exports']=Fax;
\ No newline at end of file
index 33d2f7c..7a4c28f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x12e1=['inspect','resolve','then','notify','catch','bluebird','../../../config/logger','lodash','../rpc/faxAccount'];(function(_0x170997,_0x554998){var _0x29dd6d=function(_0x468475){while(--_0x468475){_0x170997['push'](_0x170997['shift']());}};_0x29dd6d(++_0x554998);}(_0x12e1,0xc2));var _0x112e=function(_0xc82c84,_0x221d8e){_0xc82c84=_0xc82c84-0x0;var _0x3e576c=_0x12e1[_0xc82c84];return _0x3e576c;};'use strict';var util=require('util');var BPromise=require(_0x112e('0x0'));var logger=require(_0x112e('0x1'))('preview');var _=require(_0x112e('0x2'));var faxAccount=require(_0x112e('0x3'));function loggerCatch(_0x75ad8){return function(_0x10634d){logger['error'](_0x75ad8,util[_0x112e('0x4')](_0x10634d,{'showHidden':![],'depth':null}));};}exports['notify']=function(_0x1b0dad,_0x3b9b35){return BPromise[_0x112e('0x5')]()[_0x112e('0x6')](faxAccount[_0x112e('0x7')](_0x1b0dad,_0x3b9b35))[_0x112e('0x8')](loggerCatch('[Notify]\x20'));};
\ No newline at end of file
+var _0x0c03=['catch','[Notify]\x20','util','../../../config/logger','lodash','../rpc/faxAccount','inspect','notify','resolve','then'];(function(_0x45581c,_0x167d67){var _0x592996=function(_0x4959e0){while(--_0x4959e0){_0x45581c['push'](_0x45581c['shift']());}};_0x592996(++_0x167d67);}(_0x0c03,0x19c));var _0x30c0=function(_0x267c52,_0x3c0df3){_0x267c52=_0x267c52-0x0;var _0x46c47b=_0x0c03[_0x267c52];return _0x46c47b;};'use strict';var util=require(_0x30c0('0x0'));var BPromise=require('bluebird');var logger=require(_0x30c0('0x1'))('preview');var _=require(_0x30c0('0x2'));var faxAccount=require(_0x30c0('0x3'));function loggerCatch(_0x30ee77){return function(_0x4433dd){logger['error'](_0x30ee77,util[_0x30c0('0x4')](_0x4433dd,{'showHidden':![],'depth':null}));};}exports[_0x30c0('0x5')]=function(_0x18136c,_0xd4d5be){return BPromise[_0x30c0('0x6')]()[_0x30c0('0x7')](faxAccount[_0x30c0('0x5')](_0x18136c,_0xd4d5be))[_0x30c0('0x8')](loggerCatch(_0x30c0('0x9')));};
\ No newline at end of file
index 3c7d0b2..48f8053 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a33=['exec','Exec\x20gs','\x20Error\x20:','../../../../config/logger','bluebird','child_process'];(function(_0x48aafb,_0xd2b58d){var _0x899036=function(_0x2aa1fb){while(--_0x2aa1fb){_0x48aafb['push'](_0x48aafb['shift']());}};_0x899036(++_0xd2b58d);}(_0x3a33,0x1bf));var _0x33a3=function(_0x411add,_0x1aed38){_0x411add=_0x411add-0x0;var _0x238242=_0x3a33[_0x411add];return _0x238242;};'use strict';var util=require('util');var logger=require(_0x33a3('0x0'))('fax');var BPromise=require(_0x33a3('0x1'));var exec=require(_0x33a3('0x2'))[_0x33a3('0x3')];exports['execute']=function(_0x39c26f){return new BPromise(function(_0x4629bf,_0xca9f5b){exec(_0x39c26f,function(_0x940975,_0x12b0eb,_0x3c28b8){logger['info'](_0x33a3('0x4'),_0x12b0eb);if(_0x940975){logger['info'](_0x33a3('0x4'),_0x33a3('0x5'),util['inspect'](_0x940975,{'showHidden':![],'depth':null}),_0x12b0eb,_0x3c28b8);_0xca9f5b(_0x940975);}_0x4629bf(_0x12b0eb);});});};
\ No newline at end of file
+var _0xcde8=['inspect','util','../../../../config/logger','bluebird','child_process','exec','info','Exec\x20gs','\x20Error\x20:'];(function(_0x237731,_0x5638b3){var _0x107d9a=function(_0x17f22d){while(--_0x17f22d){_0x237731['push'](_0x237731['shift']());}};_0x107d9a(++_0x5638b3);}(_0xcde8,0x145));var _0x8cde=function(_0x51bce5,_0x3990be){_0x51bce5=_0x51bce5-0x0;var _0x16e2aa=_0xcde8[_0x51bce5];return _0x16e2aa;};'use strict';var util=require(_0x8cde('0x0'));var logger=require(_0x8cde('0x1'))('fax');var BPromise=require(_0x8cde('0x2'));var exec=require(_0x8cde('0x3'))[_0x8cde('0x4')];exports['execute']=function(_0x167a7c){return new BPromise(function(_0x708f2a,_0xdd5f22){exec(_0x167a7c,function(_0x3d3d76,_0x3c5500,_0x3f09f8){logger[_0x8cde('0x5')](_0x8cde('0x6'),_0x3c5500);if(_0x3d3d76){logger[_0x8cde('0x5')]('Exec\x20gs',_0x8cde('0x7'),util[_0x8cde('0x8')](_0x3d3d76,{'showHidden':![],'depth':null}),_0x3c5500,_0x3f09f8);_0xdd5f22(_0x3d3d76);}_0x708f2a(_0x3c5500);});});};
\ No newline at end of file
index aa2ec1d..36b1500 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4882=['xcally-motion-fax','from-sip','format','\x22%s\x22\x20<%s>','localstationid','moment','../../../../config/logger','fax','message','logger','info','inspect','addVariables','ecm','headerinfo','minrate','maxrate','\x22%s\x22','gateway','faxdetect','t38timeout','path','variablesAction','uniqueid','originate'];(function(_0x513545,_0x158f2e){var _0x18b7c5=function(_0x58514c){while(--_0x58514c){_0x513545['push'](_0x513545['shift']());}};_0x18b7c5(++_0x158f2e);}(_0x4882,0x118));var _0x2488=function(_0x2fce7a,_0x191fbf){_0x2fce7a=_0x2fce7a-0x0;var _0x2fa067=_0x4882[_0x2fce7a];return _0x2fa067;};'use strict';var util=require('util');var _=require('lodash');var moment=require(_0x2488('0x0'));var logger=require(_0x2488('0x1'))(_0x2488('0x2'));exports[_0x2488('0x3')]=function(_0x409e56){return{'message':_0x409e56};};exports[_0x2488('0x4')]=function(_0x2c0da3,_0x17f4b4){logger[_0x2488('0x5')](_0x2c0da3,util[_0x2488('0x6')](_0x17f4b4,{'showHidden':![],'depth':null}));};exports[_0x2488('0x7')]=function(_0x51c97c,_0x4aa7cf){var _0x4f2574={'XMF-ECM':_0x4aa7cf[_0x2488('0x8')],'XMF-HEADERINFO':_0x4aa7cf[_0x2488('0x9')],'XMF-MINRATE':_0x4aa7cf[_0x2488('0xa')],'XMF-MAXRATE':_0x4aa7cf[_0x2488('0xb')],'XMF-MODEM':util['format'](_0x2488('0xc'),_0x4aa7cf['modem']),'XMF-GATEWAY':_0x4aa7cf[_0x2488('0xd')],'XMF-FAXDETECT':_0x4aa7cf[_0x2488('0xe')],'XMF-T38TIMEOUT':_0x4aa7cf[_0x2488('0xf')],'XMF-LOCALSTATIONID':_0x4aa7cf['localstationid'],'XMF-PATH':_0x51c97c[_0x2488('0x10')]};return _0x4f2574;};exports[_0x2488('0x11')]=function(_0x14de02,_0x1a28c4){return{'actionid':_0x14de02[_0x2488('0x12')],'action':_0x2488('0x13'),'channel':_0x14de02['channel'],'Exten':_0x2488('0x14'),'Context':_0x2488('0x15'),'Priority':'1','callerid':util[_0x2488('0x16')](_0x2488('0x17'),_0x14de02[_0x2488('0x9')]?_0x14de02['headerinfo']:'',_0x14de02[_0x2488('0x18')]),'variable':_0x1a28c4,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0x14de02[_0x2488('0x12')]};};
\ No newline at end of file
+var _0x979a=['util','moment','../../../../config/logger','info','inspect','addVariables','ecm','headerinfo','minrate','maxrate','format','\x22%s\x22','gateway','localstationid','variablesAction','originate','channel','xcally-motion-fax','from-sip','\x22%s\x22\x20<%s>'];(function(_0x154192,_0x2d360f){var _0x3c2792=function(_0x2e257b){while(--_0x2e257b){_0x154192['push'](_0x154192['shift']());}};_0x3c2792(++_0x2d360f);}(_0x979a,0x17c));var _0xa979=function(_0x56f7e2,_0x145392){_0x56f7e2=_0x56f7e2-0x0;var _0x36240b=_0x979a[_0x56f7e2];return _0x36240b;};'use strict';var util=require(_0xa979('0x0'));var _=require('lodash');var moment=require(_0xa979('0x1'));var logger=require(_0xa979('0x2'))('fax');exports['message']=function(_0x1223dd){return{'message':_0x1223dd};};exports['logger']=function(_0x2bc9a4,_0x412e0c){logger[_0xa979('0x3')](_0x2bc9a4,util[_0xa979('0x4')](_0x412e0c,{'showHidden':![],'depth':null}));};exports[_0xa979('0x5')]=function(_0x4d96fb,_0x284c3a){var _0x42294b={'XMF-ECM':_0x284c3a[_0xa979('0x6')],'XMF-HEADERINFO':_0x284c3a[_0xa979('0x7')],'XMF-MINRATE':_0x284c3a[_0xa979('0x8')],'XMF-MAXRATE':_0x284c3a[_0xa979('0x9')],'XMF-MODEM':util[_0xa979('0xa')](_0xa979('0xb'),_0x284c3a['modem']),'XMF-GATEWAY':_0x284c3a[_0xa979('0xc')],'XMF-FAXDETECT':_0x284c3a['faxdetect'],'XMF-T38TIMEOUT':_0x284c3a['t38timeout'],'XMF-LOCALSTATIONID':_0x284c3a[_0xa979('0xd')],'XMF-PATH':_0x4d96fb['path']};return _0x42294b;};exports[_0xa979('0xe')]=function(_0x3a63e2,_0x447b4a){return{'actionid':_0x3a63e2['uniqueid'],'action':_0xa979('0xf'),'channel':_0x3a63e2[_0xa979('0x10')],'Exten':_0xa979('0x11'),'Context':_0xa979('0x12'),'Priority':'1','callerid':util[_0xa979('0xa')](_0xa979('0x13'),_0x3a63e2[_0xa979('0x7')]?_0x3a63e2[_0xa979('0x7')]:'',_0x3a63e2[_0xa979('0xd')]),'variable':_0x447b4a,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0x3a63e2['uniqueid']};};
\ No newline at end of file
index 3357c22..6109e49 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf00c=['[index.js][main]','util','moment','./server','./realtime','./trigger','./preview','./rpc/user','./rpc/voiceQueue','./rpc/voiceQueueReport','./rpc/voiceCallReport','./rpc/template','./rpc/cmHopperHistory','./rpc/campaign','./rpc/voiceExtension','./rpc/integrations/zendesk','./rpc/integrations/salesforce','./rpc/integrations/sugarcrm','./rpc/integrations/freshdesk','./rpc/integrations/desk','./rpc/integrations/zoho','./rpc/integrations/vtiger','./rpc/integrations/freshsales','./rpc/integrations/servicenow','../../config/logger','ami','get','hour','then','getAgents','initAgents','getTelephones','initTelephones','initTrunks','getVoiceQueues','initVoiceQueues','getTriggers','initTriggers','getTemplates','initTemplates','getZendeskAccounts','initZendeskAccounts','getSalesforceAccounts','getDeskAccounts','initDeskAccounts','getZohoAccounts','initZohoAccounts','getFreshsalesAccounts','initFreshsalesAccounts','getServicenowAccounts','initServicenowAccounts','getDynamics365Accounts','getCampaigns','getFaxAccounts','initFaxAccounts','resolve','getVoiceQueueReports','initVoiceQueueReports','getVoiceQueueHopperHistory','initVoiceQueueHopperHistory','getCampaignHopperHistory','initCampaignHopperHistory','getVoiceCallReports','initVoiceCallReports','catch','error','inspect'];(function(_0x29d07c,_0x4e1eb8){var _0xf3375f=function(_0x35ca48){while(--_0x35ca48){_0x29d07c['push'](_0x29d07c['shift']());}};_0xf3375f(++_0x4e1eb8);}(_0xf00c,0x150));var _0xcf00=function(_0x1a4343,_0x5b6ca7){_0x1a4343=_0x1a4343-0x0;var _0x3acb85=_0xf00c[_0x1a4343];return _0x3acb85;};'use strict';var util=require(_0xcf00('0x0'));var moment=require(_0xcf00('0x1'));var server=require(_0xcf00('0x2'));var Realtime=require(_0xcf00('0x3'));var Report=require('./report');var Acw=require('./acw');var Trigger=require(_0xcf00('0x4'));var Dialer=require('./dialer');var Preview=require(_0xcf00('0x5'));var Fax=require('./fax');var user=require(_0xcf00('0x6'));var voiceQueue=require(_0xcf00('0x7'));var voiceQueueReport=require(_0xcf00('0x8'));var voiceCallReport=require(_0xcf00('0x9'));var trunk=require('./rpc/trunk');var trigger=require('./rpc/trigger');var template=require(_0xcf00('0xa'));var cmHopperHistory=require(_0xcf00('0xb'));var campaign=require(_0xcf00('0xc'));var voiceExtension=require(_0xcf00('0xd'));var faxAccount=require('./rpc/faxAccount');var zendesk=require(_0xcf00('0xe'));var salesforce=require(_0xcf00('0xf'));var sugarcrm=require(_0xcf00('0x10'));var freshdesk=require(_0xcf00('0x11'));var desk=require(_0xcf00('0x12'));var zoho=require(_0xcf00('0x13'));var vtiger=require(_0xcf00('0x14'));var freshsales=require(_0xcf00('0x15'));var servicenow=require(_0xcf00('0x16'));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(_0xcf00('0x17'))(_0xcf00('0x18'));var isTrue=!![];var initP=!![];function ifMidnight(){if(moment()[_0xcf00('0x19')](_0xcf00('0x1a'))===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()['get'](_0xcf00('0x1a'))===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return Promise['resolve']()[_0xcf00('0x1b')](user[_0xcf00('0x1c')]())[_0xcf00('0x1b')](realtime[_0xcf00('0x1d')]())['then'](user[_0xcf00('0x1e')]())[_0xcf00('0x1b')](realtime[_0xcf00('0x1f')]())[_0xcf00('0x1b')](trunk['getTrunks']())[_0xcf00('0x1b')](realtime[_0xcf00('0x20')]())[_0xcf00('0x1b')](voiceQueue[_0xcf00('0x21')]())[_0xcf00('0x1b')](realtime[_0xcf00('0x22')]())[_0xcf00('0x1b')](trigger[_0xcf00('0x23')]())[_0xcf00('0x1b')](realtime[_0xcf00('0x24')]())['then'](template[_0xcf00('0x25')]())[_0xcf00('0x1b')](realtime[_0xcf00('0x26')]())['then'](zendesk[_0xcf00('0x27')]())[_0xcf00('0x1b')](realtime[_0xcf00('0x28')]())[_0xcf00('0x1b')](salesforce[_0xcf00('0x29')]())[_0xcf00('0x1b')](realtime['initSalesforceAccounts']())[_0xcf00('0x1b')](sugarcrm['getSugarcrmAccounts']())[_0xcf00('0x1b')](realtime['initSugarcrmAccounts']())[_0xcf00('0x1b')](freshdesk['getFreshdeskAccounts']())[_0xcf00('0x1b')](realtime['initFreshdeskAccounts']())[_0xcf00('0x1b')](desk[_0xcf00('0x2a')]())[_0xcf00('0x1b')](realtime[_0xcf00('0x2b')]())[_0xcf00('0x1b')](zoho[_0xcf00('0x2c')]())[_0xcf00('0x1b')](realtime[_0xcf00('0x2d')]())[_0xcf00('0x1b')](vtiger['getVtigerAccounts']())[_0xcf00('0x1b')](realtime['initVtigerAccounts']())['then'](freshsales[_0xcf00('0x2e')]())[_0xcf00('0x1b')](realtime[_0xcf00('0x2f')]())['then'](servicenow[_0xcf00('0x30')]())[_0xcf00('0x1b')](realtime[_0xcf00('0x31')]())[_0xcf00('0x1b')](dynamics365[_0xcf00('0x32')]())[_0xcf00('0x1b')](realtime['initDynamics365Accounts']())[_0xcf00('0x1b')](campaign[_0xcf00('0x33')]())[_0xcf00('0x1b')](realtime['initCampaigns']())[_0xcf00('0x1b')](voiceExtension['getVoiceExtensions']())[_0xcf00('0x1b')](realtime['initVoiceExtensions']())[_0xcf00('0x1b')](faxAccount[_0xcf00('0x34')]())[_0xcf00('0x1b')](realtime[_0xcf00('0x35')]())['then'](function(){return realtime;});}function initParams(){return Promise[_0xcf00('0x36')]()['then'](voiceQueueReport[_0xcf00('0x37')]())[_0xcf00('0x1b')](realtime[_0xcf00('0x38')]())[_0xcf00('0x1b')](cmHopperHistory[_0xcf00('0x39')]())[_0xcf00('0x1b')](realtime[_0xcf00('0x3a')]())['then'](cmHopperHistory[_0xcf00('0x3b')]())[_0xcf00('0x1b')](realtime[_0xcf00('0x3c')]())[_0xcf00('0x1b')](voiceCallReport[_0xcf00('0x3d')]())['then'](realtime[_0xcf00('0x3e')]())[_0xcf00('0x3f')](function(_0xae2ce5){logger[_0xcf00('0x40')]('[index.js][initParams]',util[_0xcf00('0x41')](_0xae2ce5,{'showHidden':![],'depth':null}));});}function main(){return server['listen'](realtime,preview,fax)[_0xcf00('0x1b')](function(){return initRealtime();})[_0xcf00('0x1b')](function(){return initParams();})['then'](function(){report['sync']();setInterval(initRealtime,0x1388);})[_0xcf00('0x3f')](function(_0x37dd7a){logger['error'](_0xcf00('0x42'),util[_0xcf00('0x41')](_0x37dd7a,{'showHidden':![],'depth':null}));});}main();
\ No newline at end of file
+var _0x052f=['get','hour','resolve','then','getAgents','initAgents','initTelephones','getTrunks','initTrunks','initVoiceQueues','getTriggers','initTriggers','initTemplates','initZendeskAccounts','getSalesforceAccounts','initSalesforceAccounts','getSugarcrmAccounts','initSugarcrmAccounts','initFreshdeskAccounts','getDeskAccounts','initDeskAccounts','initZohoAccounts','getVtigerAccounts','initVtigerAccounts','getFreshsalesAccounts','initFreshsalesAccounts','getServicenowAccounts','initServicenowAccounts','getDynamics365Accounts','initCampaigns','getVoiceExtensions','initVoiceExtensions','initFaxAccounts','getVoiceQueueReports','initVoiceQueueReports','getVoiceQueueHopperHistory','initVoiceQueueHopperHistory','getCampaignHopperHistory','initCampaignHopperHistory','getVoiceCallReports','initVoiceCallReports','catch','error','[index.js][initParams]','inspect','listen','sync','[index.js][main]','util','./realtime','./report','./acw','./trigger','./preview','./fax','./rpc/user','./rpc/voiceQueueReport','./rpc/trunk','./rpc/trigger','./rpc/cmHopperHistory','./rpc/voiceExtension','./rpc/faxAccount','./rpc/integrations/zendesk','./rpc/integrations/salesforce','./rpc/integrations/sugarcrm','./rpc/integrations/freshdesk','./rpc/integrations/desk','./rpc/integrations/zoho','./rpc/integrations/vtiger','./rpc/integrations/freshsales','./rpc/integrations/servicenow','./rpc/integrations/dynamics365','../../config/logger'];(function(_0x55e752,_0x59fdec){var _0xb8e6ff=function(_0x19b6f2){while(--_0x19b6f2){_0x55e752['push'](_0x55e752['shift']());}};_0xb8e6ff(++_0x59fdec);}(_0x052f,0xc2));var _0xf052=function(_0x505136,_0x544245){_0x505136=_0x505136-0x0;var _0x3f0d43=_0x052f[_0x505136];return _0x3f0d43;};'use strict';var util=require(_0xf052('0x0'));var moment=require('moment');var server=require('./server');var Realtime=require(_0xf052('0x1'));var Report=require(_0xf052('0x2'));var Acw=require(_0xf052('0x3'));var Trigger=require(_0xf052('0x4'));var Dialer=require('./dialer');var Preview=require(_0xf052('0x5'));var Fax=require(_0xf052('0x6'));var user=require(_0xf052('0x7'));var voiceQueue=require('./rpc/voiceQueue');var voiceQueueReport=require(_0xf052('0x8'));var voiceCallReport=require('./rpc/voiceCallReport');var trunk=require(_0xf052('0x9'));var trigger=require(_0xf052('0xa'));var template=require('./rpc/template');var cmHopperHistory=require(_0xf052('0xb'));var campaign=require('./rpc/campaign');var voiceExtension=require(_0xf052('0xc'));var faxAccount=require(_0xf052('0xd'));var zendesk=require(_0xf052('0xe'));var salesforce=require(_0xf052('0xf'));var sugarcrm=require(_0xf052('0x10'));var freshdesk=require(_0xf052('0x11'));var desk=require(_0xf052('0x12'));var zoho=require(_0xf052('0x13'));var vtiger=require(_0xf052('0x14'));var freshsales=require(_0xf052('0x15'));var servicenow=require(_0xf052('0x16'));var dynamics365=require(_0xf052('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(_0xf052('0x18'))('ami');var isTrue=!![];var initP=!![];function ifMidnight(){if(moment()[_0xf052('0x19')](_0xf052('0x1a'))===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()['get'](_0xf052('0x1a'))===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return Promise[_0xf052('0x1b')]()[_0xf052('0x1c')](user[_0xf052('0x1d')]())[_0xf052('0x1c')](realtime[_0xf052('0x1e')]())['then'](user['getTelephones']())[_0xf052('0x1c')](realtime[_0xf052('0x1f')]())['then'](trunk[_0xf052('0x20')]())[_0xf052('0x1c')](realtime[_0xf052('0x21')]())[_0xf052('0x1c')](voiceQueue['getVoiceQueues']())['then'](realtime[_0xf052('0x22')]())[_0xf052('0x1c')](trigger[_0xf052('0x23')]())[_0xf052('0x1c')](realtime[_0xf052('0x24')]())[_0xf052('0x1c')](template['getTemplates']())[_0xf052('0x1c')](realtime[_0xf052('0x25')]())[_0xf052('0x1c')](zendesk['getZendeskAccounts']())[_0xf052('0x1c')](realtime[_0xf052('0x26')]())[_0xf052('0x1c')](salesforce[_0xf052('0x27')]())[_0xf052('0x1c')](realtime[_0xf052('0x28')]())[_0xf052('0x1c')](sugarcrm[_0xf052('0x29')]())[_0xf052('0x1c')](realtime[_0xf052('0x2a')]())['then'](freshdesk['getFreshdeskAccounts']())['then'](realtime[_0xf052('0x2b')]())[_0xf052('0x1c')](desk[_0xf052('0x2c')]())[_0xf052('0x1c')](realtime[_0xf052('0x2d')]())[_0xf052('0x1c')](zoho['getZohoAccounts']())['then'](realtime[_0xf052('0x2e')]())[_0xf052('0x1c')](vtiger[_0xf052('0x2f')]())[_0xf052('0x1c')](realtime[_0xf052('0x30')]())[_0xf052('0x1c')](freshsales[_0xf052('0x31')]())['then'](realtime[_0xf052('0x32')]())['then'](servicenow[_0xf052('0x33')]())['then'](realtime[_0xf052('0x34')]())[_0xf052('0x1c')](dynamics365[_0xf052('0x35')]())[_0xf052('0x1c')](realtime['initDynamics365Accounts']())[_0xf052('0x1c')](campaign['getCampaigns']())[_0xf052('0x1c')](realtime[_0xf052('0x36')]())['then'](voiceExtension[_0xf052('0x37')]())[_0xf052('0x1c')](realtime[_0xf052('0x38')]())[_0xf052('0x1c')](faxAccount['getFaxAccounts']())[_0xf052('0x1c')](realtime[_0xf052('0x39')]())['then'](function(){return realtime;});}function initParams(){return Promise[_0xf052('0x1b')]()[_0xf052('0x1c')](voiceQueueReport[_0xf052('0x3a')]())[_0xf052('0x1c')](realtime[_0xf052('0x3b')]())[_0xf052('0x1c')](cmHopperHistory[_0xf052('0x3c')]())[_0xf052('0x1c')](realtime[_0xf052('0x3d')]())['then'](cmHopperHistory[_0xf052('0x3e')]())['then'](realtime[_0xf052('0x3f')]())[_0xf052('0x1c')](voiceCallReport[_0xf052('0x40')]())[_0xf052('0x1c')](realtime[_0xf052('0x41')]())[_0xf052('0x42')](function(_0x23bea0){logger[_0xf052('0x43')](_0xf052('0x44'),util[_0xf052('0x45')](_0x23bea0,{'showHidden':![],'depth':null}));});}function main(){return server[_0xf052('0x46')](realtime,preview,fax)[_0xf052('0x1c')](function(){return initRealtime();})[_0xf052('0x1c')](function(){return initParams();})[_0xf052('0x1c')](function(){report[_0xf052('0x47')]();setInterval(initRealtime,0x1388);})[_0xf052('0x42')](function(_0x45dc22){logger[_0xf052('0x43')](_0xf052('0x48'),util['inspect'](_0x45dc22,{'showHidden':![],'depth':null}));});}main();
\ No newline at end of file
index 4c4ce6b..67c6e8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd2b0=['talking','statePause','format','status','online','user:%s','emit','user:save','user:presence','exports','lodash','moment','ioredis','redis','localhost','socket.io-emitter','name','email','accountcode','fullname','state','unknown','stateTime','address','phone','interface','voiceStatus','voiceStatusTime','voiceStatusCallerIdNumber','voiceStatusQueue','onhold','local','md5','updateStatusRealtime','toLowerCase','not_inuse','idle','inuse'];(function(_0x51b51a,_0x2f156c){var _0x40bcd6=function(_0x429572){while(--_0x429572){_0x51b51a['push'](_0x51b51a['shift']());}};_0x40bcd6(++_0x2f156c);}(_0xd2b0,0x13a));var _0x0d2b=function(_0x37a79c,_0x2b19f0){_0x37a79c=_0x37a79c-0x0;var _0x561d89=_0xd2b0[_0x37a79c];return _0x561d89;};'use strict';var _=require(_0x0d2b('0x0'));var util=require('util');var moment=require(_0x0d2b('0x1'));var md5=require('md5');var Redis=require(_0x0d2b('0x2'));var config=require('../../../config/environment');config['redis']=_['defaults'](config[_0x0d2b('0x3')],{'host':_0x0d2b('0x4'),'port':0x18eb});var io=require(_0x0d2b('0x5'))(new Redis(config[_0x0d2b('0x3')]));function Agent(_0xefacf5){this['id']=_0xefacf5['id']||0x0;this[_0x0d2b('0x6')]=_0xefacf5[_0x0d2b('0x6')]||'';this[_0x0d2b('0x7')]=_0xefacf5[_0x0d2b('0x7')]||'';this[_0x0d2b('0x8')]=_0xefacf5[_0x0d2b('0x8')]||'';this[_0x0d2b('0x9')]=_0xefacf5[_0x0d2b('0x9')]||'';this[_0x0d2b('0xa')]=_0x0d2b('0xb');this[_0x0d2b('0xc')]=0x0;this['status']=_0x0d2b('0xb');this[_0x0d2b('0xd')]='';this[_0x0d2b('0xe')]='';this['mobile']='';this[_0x0d2b('0xf')]='';this['online']=_0xefacf5['online']||![];this[_0x0d2b('0x10')]=_0x0d2b('0xb');this[_0x0d2b('0x11')]=0x0;this[_0x0d2b('0x12')]='';this[_0x0d2b('0x13')]='';this[_0x0d2b('0x14')]=![];this[_0x0d2b('0x15')]=![];this[_0x0d2b('0x16')]='';}Agent['prototype'][_0x0d2b('0x17')]=function(_0x423e91){var _0xeca51b;if(_0x423e91&&_0x423e91[_0x0d2b('0xa')]){_0xeca51b=_0x423e91[_0x0d2b('0xa')][_0x0d2b('0x18')]();switch(_0xeca51b){case _0x0d2b('0x19'):_0xeca51b=_0x0d2b('0x1a');break;case _0x0d2b('0x1b'):_0xeca51b=_0x0d2b('0x1c');break;}}if(_0xeca51b&&this[_0x0d2b('0x10')]!==_0xeca51b||_0x423e91[_0x0d2b('0x1d')]){this['voiceStatusTime']=_['toNumber'](moment()[_0x0d2b('0x1e')]('x'));}if(_0xeca51b){this[_0x0d2b('0x10')]=_0xeca51b;}var _0x10a2ba={'id':this['id'],'name':this[_0x0d2b('0x6')],'email':this[_0x0d2b('0x7')],'accountcode':this[_0x0d2b('0x8')],'fullname':this[_0x0d2b('0x9')],'state':this['state'],'stateTime':this[_0x0d2b('0xc')],'status':this[_0x0d2b('0x1f')],'address':this[_0x0d2b('0xd')],'online':this[_0x0d2b('0x20')],'voiceStatus':this[_0x0d2b('0x10')],'voiceStatusTime':this[_0x0d2b('0x11')],'voiceStatusCallerIdNumber':this[_0x0d2b('0x12')],'voiceStatusQueue':this[_0x0d2b('0x13')],'interface':this['interface'],'onhold':this[_0x0d2b('0x14')]};var _0x39331c=md5(JSON['stringify'](_0x10a2ba));if(this[_0x0d2b('0x16')]!==_0x39331c){this['md5']=_0x39331c;io['to'](util[_0x0d2b('0x1e')](_0x0d2b('0x21'),_0x10a2ba['name']))[_0x0d2b('0x22')](_0x0d2b('0x23'),_0x10a2ba);io[_0x0d2b('0x22')](_0x0d2b('0x24'),_0x10a2ba);}};module[_0x0d2b('0x25')]=Agent;
\ No newline at end of file
+var _0x1c9e=['format','user:save','emit','user:presence','exports','lodash','util','moment','md5','ioredis','../../../config/environment','redis','localhost','socket.io-emitter','name','email','accountcode','fullname','state','unknown','stateTime','status','address','mobile','interface','online','voiceStatusTime','voiceStatusCallerIdNumber','local','prototype','updateStatusRealtime','toLowerCase','idle','talking','statePause','toNumber','voiceStatus','voiceStatusQueue','onhold','stringify'];(function(_0x19de6b,_0x4b8505){var _0x1d35e7=function(_0x115a90){while(--_0x115a90){_0x19de6b['push'](_0x19de6b['shift']());}};_0x1d35e7(++_0x4b8505);}(_0x1c9e,0xcd));var _0xe1c9=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x1c9e[_0x2641f9];return _0x585741;};'use strict';var _=require(_0xe1c9('0x0'));var util=require(_0xe1c9('0x1'));var moment=require(_0xe1c9('0x2'));var md5=require(_0xe1c9('0x3'));var Redis=require(_0xe1c9('0x4'));var config=require(_0xe1c9('0x5'));config[_0xe1c9('0x6')]=_['defaults'](config[_0xe1c9('0x6')],{'host':_0xe1c9('0x7'),'port':0x18eb});var io=require(_0xe1c9('0x8'))(new Redis(config[_0xe1c9('0x6')]));function Agent(_0x4ae5cd){this['id']=_0x4ae5cd['id']||0x0;this[_0xe1c9('0x9')]=_0x4ae5cd[_0xe1c9('0x9')]||'';this[_0xe1c9('0xa')]=_0x4ae5cd[_0xe1c9('0xa')]||'';this[_0xe1c9('0xb')]=_0x4ae5cd[_0xe1c9('0xb')]||'';this[_0xe1c9('0xc')]=_0x4ae5cd[_0xe1c9('0xc')]||'';this[_0xe1c9('0xd')]=_0xe1c9('0xe');this[_0xe1c9('0xf')]=0x0;this[_0xe1c9('0x10')]='unknown';this[_0xe1c9('0x11')]='';this['phone']='';this[_0xe1c9('0x12')]='';this[_0xe1c9('0x13')]='';this['online']=_0x4ae5cd[_0xe1c9('0x14')]||![];this['voiceStatus']=_0xe1c9('0xe');this[_0xe1c9('0x15')]=0x0;this[_0xe1c9('0x16')]='';this['voiceStatusQueue']='';this['onhold']=![];this[_0xe1c9('0x17')]=![];this[_0xe1c9('0x3')]='';}Agent[_0xe1c9('0x18')][_0xe1c9('0x19')]=function(_0x13d4c3){var _0x1a8ca9;if(_0x13d4c3&&_0x13d4c3[_0xe1c9('0xd')]){_0x1a8ca9=_0x13d4c3['state'][_0xe1c9('0x1a')]();switch(_0x1a8ca9){case'not_inuse':_0x1a8ca9=_0xe1c9('0x1b');break;case'inuse':_0x1a8ca9=_0xe1c9('0x1c');break;}}if(_0x1a8ca9&&this['voiceStatus']!==_0x1a8ca9||_0x13d4c3[_0xe1c9('0x1d')]){this[_0xe1c9('0x15')]=_[_0xe1c9('0x1e')](moment()['format']('x'));}if(_0x1a8ca9){this[_0xe1c9('0x1f')]=_0x1a8ca9;}var _0x338e65={'id':this['id'],'name':this[_0xe1c9('0x9')],'email':this[_0xe1c9('0xa')],'accountcode':this[_0xe1c9('0xb')],'fullname':this[_0xe1c9('0xc')],'state':this['state'],'stateTime':this['stateTime'],'status':this[_0xe1c9('0x10')],'address':this[_0xe1c9('0x11')],'online':this[_0xe1c9('0x14')],'voiceStatus':this[_0xe1c9('0x1f')],'voiceStatusTime':this[_0xe1c9('0x15')],'voiceStatusCallerIdNumber':this['voiceStatusCallerIdNumber'],'voiceStatusQueue':this[_0xe1c9('0x20')],'interface':this[_0xe1c9('0x13')],'onhold':this[_0xe1c9('0x21')]};var _0x3ba82b=md5(JSON[_0xe1c9('0x22')](_0x338e65));if(this[_0xe1c9('0x3')]!==_0x3ba82b){this[_0xe1c9('0x3')]=_0x3ba82b;io['to'](util[_0xe1c9('0x23')]('user:%s',_0x338e65[_0xe1c9('0x9')]))['emit'](_0xe1c9('0x24'),_0x338e65);io[_0xe1c9('0x25')](_0xe1c9('0x26'),_0x338e65);}};module[_0xe1c9('0x27')]=Agent;
\ No newline at end of file
index 385eac2..5c731ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x551c=['dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialOrderByScheduledAt','DESC','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','TrunkBackup','Trunk','Interval','SquareProject','dialAMDActive','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','exports','name','type','ivrAnswerCallsDay','ivrTotalCallsDays','sendMessageOneNotActive','active','limitCalls','dialTimezone','dialGlobalInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry'];(function(_0x247046,_0x2448c7){var _0x147b69=function(_0x480745){while(--_0x480745){_0x247046['push'](_0x247046['shift']());}};_0x147b69(++_0x2448c7);}(_0x551c,0xdc));var _0xc551=function(_0xc4dd3a,_0x4b6c6e){_0xc4dd3a=_0xc4dd3a-0x0;var _0x4b07b5=_0x551c[_0xc4dd3a];return _0x4b07b5;};'use strict';function Campaign(_0x3426cf){this['id']=_0x3426cf['id']||0x0;this[_0xc551('0x0')]=_0x3426cf[_0xc551('0x0')]||'';this[_0xc551('0x1')]=_0x3426cf[_0xc551('0x1')]||'campaign';this['originated']=0x0;this['temp']=0x0;this[_0xc551('0x2')]=0x0;this[_0xc551('0x3')]=0x0;this['message']='';this[_0xc551('0x4')]=!![];this[_0xc551('0x5')]=_0x3426cf[_0xc551('0x5')];this[_0xc551('0x6')]=_0x3426cf[_0xc551('0x6')];this[_0xc551('0x7')]=_0x3426cf['dialTimezone']||null;this[_0xc551('0x8')]=_0x3426cf[_0xc551('0x8')]?_0x3426cf['dialGlobalInterval']:null;this[_0xc551('0x9')]=_0x3426cf[_0xc551('0x9')];this['dialOriginateCallerIdNumber']=_0x3426cf[_0xc551('0xa')];this[_0xc551('0xb')]=_0x3426cf[_0xc551('0xb')]||0x1e;this[_0xc551('0xc')]=_0x3426cf['dialCongestionMaxRetry'];this[_0xc551('0xd')]=_0x3426cf['dialCongestionRetryFrequency'];this['dialBusyMaxRetry']=_0x3426cf[_0xc551('0xe')];this[_0xc551('0xf')]=_0x3426cf[_0xc551('0xf')];this[_0xc551('0x10')]=_0x3426cf['dialNoAnswerMaxRetry'];this[_0xc551('0x11')]=_0x3426cf[_0xc551('0x11')];this[_0xc551('0x12')]=_0x3426cf[_0xc551('0x12')];this[_0xc551('0x13')]=_0x3426cf[_0xc551('0x13')]||0x3;this[_0xc551('0x14')]=_0x3426cf[_0xc551('0x14')]||0x96;this[_0xc551('0x15')]=_0x3426cf['dialDropMaxRetry']||0x3;this['dialDropRetryFrequency']=_0x3426cf[_0xc551('0x16')]||0x96;this[_0xc551('0x17')]=_0x3426cf[_0xc551('0x17')]||0x3;this['dialAbandonedRetryFrequency']=_0x3426cf[_0xc551('0x18')]||0x96;this['dialMachineMaxRetry']=_0x3426cf['dialMachineMaxRetry']||0x3;this[_0xc551('0x19')]=_0x3426cf['dialMachineRetryFrequency']||0x96;this[_0xc551('0x1a')]=_0x3426cf[_0xc551('0x1a')]||0x3;this[_0xc551('0x1b')]=_0x3426cf[_0xc551('0x1b')]||0x96;this[_0xc551('0x1c')]=_0x3426cf[_0xc551('0x1c')]||_0xc551('0x1d');this[_0xc551('0x1e')]=_0x3426cf[_0xc551('0x1e')]||undefined;this[_0xc551('0x1f')]=_0x3426cf[_0xc551('0x1f')]||undefined;this[_0xc551('0x20')]=_0x3426cf[_0xc551('0x20')]||undefined;this[_0xc551('0x21')]=_0x3426cf['TrunkBackup']?_0x3426cf[_0xc551('0x21')]:undefined;this[_0xc551('0x22')]=_0x3426cf[_0xc551('0x22')]?_0x3426cf[_0xc551('0x22')]:undefined;this[_0xc551('0x23')]=_0x3426cf[_0xc551('0x23')]?_0x3426cf[_0xc551('0x23')]:undefined;this[_0xc551('0x24')]=_0x3426cf[_0xc551('0x24')]?_0x3426cf[_0xc551('0x24')]:undefined;this['dialQueueProject']=_0x3426cf['SquareProject']?_0x3426cf[_0xc551('0x24')][_0xc551('0x0')]:undefined;this['dialAMDActive']=_0x3426cf[_0xc551('0x25')]||![];this['dialAMDInitialSilence']=_0x3426cf['dialAMDInitialSilence'];this[_0xc551('0x26')]=_0x3426cf[_0xc551('0x26')];this[_0xc551('0x27')]=_0x3426cf[_0xc551('0x27')];this[_0xc551('0x28')]=_0x3426cf[_0xc551('0x28')];this[_0xc551('0x29')]=_0x3426cf[_0xc551('0x29')];this[_0xc551('0x2a')]=_0x3426cf[_0xc551('0x2a')];this[_0xc551('0x2b')]=_0x3426cf[_0xc551('0x2b')];this[_0xc551('0x2c')]=_0x3426cf[_0xc551('0x2c')];this['dialAMDMaximumWordLength']=_0x3426cf[_0xc551('0x2d')];}module[_0xc551('0x2e')]=Campaign;
\ No newline at end of file
+var _0x4f54=['campaign','originated','temp','sendMessageOneNotActive','active','limitCalls','dialTimezone','dialGlobalInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialOrderByScheduledAt','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','TrunkBackup','Trunk','Interval','dialQueueProject','SquareProject','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDBetweenWordsSilence','dialAMDSilenceThreshold','dialAMDMaximumWordLength','exports','name','type'];(function(_0x4c99cd,_0x2b5650){var _0x9c212e=function(_0x5a9352){while(--_0x5a9352){_0x4c99cd['push'](_0x4c99cd['shift']());}};_0x9c212e(++_0x2b5650);}(_0x4f54,0x1d4));var _0x44f5=function(_0x465a0c,_0x19d4d5){_0x465a0c=_0x465a0c-0x0;var _0x1e202e=_0x4f54[_0x465a0c];return _0x1e202e;};'use strict';function Campaign(_0x49a2f1){this['id']=_0x49a2f1['id']||0x0;this[_0x44f5('0x0')]=_0x49a2f1[_0x44f5('0x0')]||'';this[_0x44f5('0x1')]=_0x49a2f1[_0x44f5('0x1')]||_0x44f5('0x2');this[_0x44f5('0x3')]=0x0;this[_0x44f5('0x4')]=0x0;this['ivrAnswerCallsDay']=0x0;this['ivrTotalCallsDays']=0x0;this['message']='';this[_0x44f5('0x5')]=!![];this[_0x44f5('0x6')]=_0x49a2f1['active'];this[_0x44f5('0x7')]=_0x49a2f1['limitCalls'];this[_0x44f5('0x8')]=_0x49a2f1['dialTimezone']||null;this[_0x44f5('0x9')]=_0x49a2f1[_0x44f5('0x9')]?_0x49a2f1[_0x44f5('0x9')]:null;this[_0x44f5('0xa')]=_0x49a2f1[_0x44f5('0xa')];this[_0x44f5('0xb')]=_0x49a2f1[_0x44f5('0xb')];this[_0x44f5('0xc')]=_0x49a2f1['dialOriginateTimeout']||0x1e;this[_0x44f5('0xd')]=_0x49a2f1[_0x44f5('0xd')];this[_0x44f5('0xe')]=_0x49a2f1[_0x44f5('0xe')];this[_0x44f5('0xf')]=_0x49a2f1[_0x44f5('0xf')];this[_0x44f5('0x10')]=_0x49a2f1[_0x44f5('0x10')];this['dialNoAnswerMaxRetry']=_0x49a2f1['dialNoAnswerMaxRetry'];this[_0x44f5('0x11')]=_0x49a2f1['dialNoAnswerRetryFrequency'];this['dialGlobalMaxRetry']=_0x49a2f1[_0x44f5('0x12')];this['dialNoSuchNumberMaxRetry']=_0x49a2f1[_0x44f5('0x13')]||0x3;this[_0x44f5('0x14')]=_0x49a2f1['dialNoSuchNumberRetryFrequency']||0x96;this[_0x44f5('0x15')]=_0x49a2f1['dialDropMaxRetry']||0x3;this[_0x44f5('0x16')]=_0x49a2f1[_0x44f5('0x16')]||0x96;this['dialAbandonedMaxRetry']=_0x49a2f1[_0x44f5('0x17')]||0x3;this[_0x44f5('0x18')]=_0x49a2f1[_0x44f5('0x18')]||0x96;this[_0x44f5('0x19')]=_0x49a2f1[_0x44f5('0x19')]||0x3;this[_0x44f5('0x1a')]=_0x49a2f1[_0x44f5('0x1a')]||0x96;this['dialAgentRejectMaxRetry']=_0x49a2f1[_0x44f5('0x1b')]||0x3;this[_0x44f5('0x1c')]=_0x49a2f1[_0x44f5('0x1c')]||0x96;this[_0x44f5('0x1d')]=_0x49a2f1[_0x44f5('0x1d')]||'DESC';this[_0x44f5('0x1e')]=_0x49a2f1[_0x44f5('0x1e')]||undefined;this[_0x44f5('0x1f')]=_0x49a2f1[_0x44f5('0x1f')]||undefined;this['dialCutDigit']=_0x49a2f1[_0x44f5('0x20')]||undefined;this[_0x44f5('0x21')]=_0x49a2f1[_0x44f5('0x21')]?_0x49a2f1[_0x44f5('0x21')]:undefined;this[_0x44f5('0x22')]=_0x49a2f1[_0x44f5('0x22')]?_0x49a2f1[_0x44f5('0x22')]:undefined;this[_0x44f5('0x23')]=_0x49a2f1[_0x44f5('0x23')]?_0x49a2f1[_0x44f5('0x23')]:undefined;this['SquareProject']=_0x49a2f1['SquareProject']?_0x49a2f1['SquareProject']:undefined;this[_0x44f5('0x24')]=_0x49a2f1[_0x44f5('0x25')]?_0x49a2f1[_0x44f5('0x25')][_0x44f5('0x0')]:undefined;this['dialAMDActive']=_0x49a2f1[_0x44f5('0x26')]||![];this['dialAMDInitialSilence']=_0x49a2f1[_0x44f5('0x27')];this['dialAMDGreeting']=_0x49a2f1[_0x44f5('0x28')];this['dialAMDAfterGreetingSilence']=_0x49a2f1[_0x44f5('0x29')];this[_0x44f5('0x2a')]=_0x49a2f1[_0x44f5('0x2a')];this['dialAMDMinWordLength']=_0x49a2f1['dialAMDMinWordLength'];this['dialAMDBetweenWordsSilence']=_0x49a2f1[_0x44f5('0x2b')];this['dialAMDMaximumNumberOfWords']=_0x49a2f1['dialAMDMaximumNumberOfWords'];this[_0x44f5('0x2c')]=_0x49a2f1[_0x44f5('0x2c')];this[_0x44f5('0x2d')]=_0x49a2f1[_0x44f5('0x2d')];}module[_0x44f5('0x2e')]=Campaign;
\ No newline at end of file
index 89792a7..59f05d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0309=['transfercalleridnum','transferType','exports','starttime','channel','destinationchannel','calleridnum','calleridname','connectedlinename','accountcode','linkedid','endtime','abandoned','lastapplication','lastdata','duration','billableseconds','holdtime','type','tag','disposition','monitorFilename','monitors'];(function(_0x3dd720,_0x2c40fa){var _0x2ebdc7=function(_0x4e81ae){while(--_0x4e81ae){_0x3dd720['push'](_0x3dd720['shift']());}};_0x2ebdc7(++_0x2c40fa);}(_0x0309,0x8d));var _0x9030=function(_0xe51de5,_0x2519f1){_0xe51de5=_0xe51de5-0x0;var _0x359bcb=_0x0309[_0xe51de5];return _0x359bcb;};'use strict';function Channel(){this[_0x9030('0x0')]=null;this[_0x9030('0x1')]='';this[_0x9030('0x2')]='';this[_0x9030('0x3')]=0x0;this[_0x9030('0x4')]='';this['connectedlinenum']=undefined;this[_0x9030('0x5')]=undefined;this[_0x9030('0x6')]=0x0;this['context']='';this['uniqueid']=0x0;this[_0x9030('0x7')]=0x0;this['exten']=0x0;this['answered']=![];this['answertime']=null;this[_0x9030('0x8')]=null;this['unmanaged']=![];this[_0x9030('0x9')]=![];this[_0x9030('0xa')]='';this[_0x9030('0xb')]='';this[_0x9030('0xc')]=0x0;this[_0x9030('0xd')]=0x0;this[_0x9030('0xe')]=0x0;this[_0x9030('0xf')]=null;this[_0x9030('0x10')]=null;this[_0x9030('0x11')]=null;this['monitor']=![];this[_0x9030('0x12')]=null;this['queue']=null;this[_0x9030('0x13')]=[];this[_0x9030('0x14')]=undefined;this['transferconnectedlinenum']=undefined;this[_0x9030('0x15')]=undefined;this['mohtime']=0x0;}module[_0x9030('0x16')]=Channel;
\ No newline at end of file
+var _0xf1f9=['transferconnectedlinenum','exports','starttime','channel','destinationchannel','calleridnum','calleridname','connectedlinename','accountcode','context','uniqueid','linkedid','exten','endtime','unmanaged','abandoned','lastapplication','duration','billableseconds','holdtime','type','tag','disposition','monitor','monitorFilename','monitors','transfercalleridnum'];(function(_0x120123,_0x4eff59){var _0x3bec4c=function(_0x182818){while(--_0x182818){_0x120123['push'](_0x120123['shift']());}};_0x3bec4c(++_0x4eff59);}(_0xf1f9,0x1cd));var _0x9f1f=function(_0x35c626,_0x46e6c0){_0x35c626=_0x35c626-0x0;var _0x25c5bb=_0xf1f9[_0x35c626];return _0x25c5bb;};'use strict';function Channel(){this[_0x9f1f('0x0')]=null;this[_0x9f1f('0x1')]='';this[_0x9f1f('0x2')]='';this[_0x9f1f('0x3')]=0x0;this[_0x9f1f('0x4')]='';this['connectedlinenum']=undefined;this[_0x9f1f('0x5')]=undefined;this[_0x9f1f('0x6')]=0x0;this[_0x9f1f('0x7')]='';this[_0x9f1f('0x8')]=0x0;this[_0x9f1f('0x9')]=0x0;this[_0x9f1f('0xa')]=0x0;this['answered']=![];this['answertime']=null;this[_0x9f1f('0xb')]=null;this[_0x9f1f('0xc')]=![];this[_0x9f1f('0xd')]=![];this[_0x9f1f('0xe')]='';this['lastdata']='';this[_0x9f1f('0xf')]=0x0;this[_0x9f1f('0x10')]=0x0;this[_0x9f1f('0x11')]=0x0;this[_0x9f1f('0x12')]=null;this[_0x9f1f('0x13')]=null;this[_0x9f1f('0x14')]=null;this[_0x9f1f('0x15')]=![];this[_0x9f1f('0x16')]=null;this['queue']=null;this[_0x9f1f('0x17')]=[];this[_0x9f1f('0x18')]=undefined;this[_0x9f1f('0x19')]=undefined;this['transferType']=undefined;this['mohtime']=0x0;}module[_0x9f1f('0x1a')]=Channel;
\ No newline at end of file
index b66c783..7d02075 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x977e=['serverUrl','Configurations','exports','name','username','remoteUri','authType','password','consumerKey','consumerSecret','token','tokenSecret','type'];(function(_0x4f6502,_0x3994cb){var _0x3909a8=function(_0x2c49fc){while(--_0x2c49fc){_0x4f6502['push'](_0x4f6502['shift']());}};_0x3909a8(++_0x3994cb);}(_0x977e,0x1b0));var _0xe977=function(_0x45f4cc,_0x28447d){_0x45f4cc=_0x45f4cc-0x0;var _0x20b7a1=_0x977e[_0x45f4cc];return _0x20b7a1;};'use strict';function DeskAccount(_0x43bf72){this['id']=_0x43bf72['id']||0x0;this[_0xe977('0x0')]=_0x43bf72['name']||'';this[_0xe977('0x1')]=_0x43bf72['username']||'';this['remoteUri']=_0x43bf72[_0xe977('0x2')]||'';this[_0xe977('0x3')]=_0x43bf72['authType']||'';this[_0xe977('0x4')]=_0x43bf72[_0xe977('0x4')]||'';this[_0xe977('0x5')]=_0x43bf72[_0xe977('0x5')]||'';this[_0xe977('0x6')]=_0x43bf72[_0xe977('0x6')]||'';this['token']=_0x43bf72[_0xe977('0x7')]||'';this[_0xe977('0x8')]=_0x43bf72[_0xe977('0x8')]||'';this[_0xe977('0x9')]=_0x43bf72[_0xe977('0x9')]||'';this[_0xe977('0xa')]=_0x43bf72['serverUrl']||'';this[_0xe977('0xb')]=_0x43bf72[_0xe977('0xb')]||{};}module[_0xe977('0xc')]=DeskAccount;
\ No newline at end of file
+var _0xd819=['token','tokenSecret','serverUrl','Configurations','exports','name','username','remoteUri','authType','password','consumerKey','consumerSecret'];(function(_0x27828f,_0x2617e2){var _0x4c8b4f=function(_0x18c0b2){while(--_0x18c0b2){_0x27828f['push'](_0x27828f['shift']());}};_0x4c8b4f(++_0x2617e2);}(_0xd819,0x131));var _0x9d81=function(_0x1e8b1e,_0x407bbd){_0x1e8b1e=_0x1e8b1e-0x0;var _0x4a0fde=_0xd819[_0x1e8b1e];return _0x4a0fde;};'use strict';function DeskAccount(_0x1bcd23){this['id']=_0x1bcd23['id']||0x0;this[_0x9d81('0x0')]=_0x1bcd23[_0x9d81('0x0')]||'';this['username']=_0x1bcd23[_0x9d81('0x1')]||'';this[_0x9d81('0x2')]=_0x1bcd23['remoteUri']||'';this[_0x9d81('0x3')]=_0x1bcd23[_0x9d81('0x3')]||'';this[_0x9d81('0x4')]=_0x1bcd23[_0x9d81('0x4')]||'';this[_0x9d81('0x5')]=_0x1bcd23[_0x9d81('0x5')]||'';this[_0x9d81('0x6')]=_0x1bcd23['consumerSecret']||'';this['token']=_0x1bcd23[_0x9d81('0x7')]||'';this[_0x9d81('0x8')]=_0x1bcd23[_0x9d81('0x8')]||'';this['type']=_0x1bcd23['type']||'';this[_0x9d81('0x9')]=_0x1bcd23['serverUrl']||'';this[_0x9d81('0xa')]=_0x1bcd23[_0x9d81('0xa')]||{};}module[_0x9d81('0xb')]=DeskAccount;
\ No newline at end of file
index f1c315e..1ef3d54 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf2a=['serverUrl','modernAuthentication','Configurations','CloudProvider','exports','name','username','password','remoteUri','tenantId','clientId','clientSecret'];(function(_0x1afe95,_0x305ef6){var _0x3965df=function(_0x225bcd){while(--_0x225bcd){_0x1afe95['push'](_0x1afe95['shift']());}};_0x3965df(++_0x305ef6);}(_0xcf2a,0x19d));var _0xacf2=function(_0x4c440b,_0x3ea627){_0x4c440b=_0x4c440b-0x0;var _0x2d48cf=_0xcf2a[_0x4c440b];return _0x2d48cf;};'use strict';function Dynamics365Account(_0x17e7be){this['id']=_0x17e7be['id']||0x0;this[_0xacf2('0x0')]=_0x17e7be[_0xacf2('0x0')]||'';this[_0xacf2('0x1')]=_0x17e7be[_0xacf2('0x1')]||'';this['password']=_0x17e7be[_0xacf2('0x2')]||'';this[_0xacf2('0x3')]=_0x17e7be[_0xacf2('0x3')]||'';this[_0xacf2('0x4')]=_0x17e7be[_0xacf2('0x4')]||'';this[_0xacf2('0x5')]=_0x17e7be['clientId']||'';this[_0xacf2('0x6')]=_0x17e7be[_0xacf2('0x6')]||{};this['serverUrl']=_0x17e7be[_0xacf2('0x7')]||'';this[_0xacf2('0x8')]=_0x17e7be['modernAuthentication']||![];this[_0xacf2('0x9')]=_0x17e7be[_0xacf2('0x9')]||{};this[_0xacf2('0xa')]=_0x17e7be['CloudProvider']||{};}module[_0xacf2('0xb')]=Dynamics365Account;
\ No newline at end of file
+var _0x303b=['Configurations','CloudProvider','name','username','password','remoteUri','clientSecret','serverUrl','modernAuthentication'];(function(_0xaf5795,_0x1adf68){var _0x2c732a=function(_0x3c655d){while(--_0x3c655d){_0xaf5795['push'](_0xaf5795['shift']());}};_0x2c732a(++_0x1adf68);}(_0x303b,0x77));var _0xb303=function(_0xed535c,_0xb0aad4){_0xed535c=_0xed535c-0x0;var _0x45730c=_0x303b[_0xed535c];return _0x45730c;};'use strict';function Dynamics365Account(_0x4b6ff){this['id']=_0x4b6ff['id']||0x0;this['name']=_0x4b6ff[_0xb303('0x0')]||'';this['username']=_0x4b6ff[_0xb303('0x1')]||'';this[_0xb303('0x2')]=_0x4b6ff[_0xb303('0x2')]||'';this[_0xb303('0x3')]=_0x4b6ff['remoteUri']||'';this['tenantId']=_0x4b6ff['tenantId']||'';this['clientId']=_0x4b6ff['clientId']||'';this[_0xb303('0x4')]=_0x4b6ff[_0xb303('0x4')]||{};this[_0xb303('0x5')]=_0x4b6ff[_0xb303('0x5')]||'';this[_0xb303('0x6')]=_0x4b6ff['modernAuthentication']||![];this['Configurations']=_0x4b6ff[_0xb303('0x7')]||{};this[_0xb303('0x8')]=_0x4b6ff[_0xb303('0x8')]||{};}module['exports']=Dynamics365Account;
\ No newline at end of file
index dc52316..8a546f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x42cd=['faxdetect','t38timeout','tech','SIP','Trunk','ListId','key','exports','name','description','ecm','headerinfo','localstationid','minrate','maxrate','modem','v17,v27,v29','gateway'];(function(_0x257a0,_0x42d2b4){var _0x8a44ed=function(_0x51b193){while(--_0x51b193){_0x257a0['push'](_0x257a0['shift']());}};_0x8a44ed(++_0x42d2b4);}(_0x42cd,0x86));var _0xd42c=function(_0x5b2096,_0x213141){_0x5b2096=_0x5b2096-0x0;var _0x198357=_0x42cd[_0x5b2096];return _0x198357;};'use strict';function FaxAccount(_0x199dc2){this['id']=_0x199dc2['id']||0x0;this[_0xd42c('0x0')]=_0x199dc2[_0xd42c('0x0')]||'';this['description']=_0x199dc2[_0xd42c('0x1')];this[_0xd42c('0x2')]=_0x199dc2[_0xd42c('0x2')];this[_0xd42c('0x3')]=_0x199dc2[_0xd42c('0x3')];this[_0xd42c('0x4')]=_0x199dc2['localstationid'];this['minrate']=_0x199dc2[_0xd42c('0x5')]||0x960;this[_0xd42c('0x6')]=_0x199dc2['maxrate']||0x3840;this[_0xd42c('0x7')]=_0x199dc2[_0xd42c('0x7')]||_0xd42c('0x8');this[_0xd42c('0x9')]=_0x199dc2['gateway']||'no';this[_0xd42c('0xa')]=_0x199dc2[_0xd42c('0xa')]||'no';this[_0xd42c('0xb')]=_0x199dc2['t38timeout']||0x1388;this['tech']=_0x199dc2[_0xd42c('0xc')]||_0xd42c('0xd');this['Trunk']=_0x199dc2[_0xd42c('0xe')]?_0x199dc2[_0xd42c('0xe')]:undefined;this[_0xd42c('0xf')]=_0x199dc2[_0xd42c('0xf')];this[_0xd42c('0x10')]=_0x199dc2['key'];}module[_0xd42c('0x11')]=FaxAccount;
\ No newline at end of file
+var _0x7725=['ecm','headerinfo','localstationid','minrate','maxrate','modem','v17,v27,v29','gateway','faxdetect','t38timeout','tech','SIP','Trunk','ListId','key','exports','name'];(function(_0x3725db,_0x125cc2){var _0x6cc30b=function(_0x4f4130){while(--_0x4f4130){_0x3725db['push'](_0x3725db['shift']());}};_0x6cc30b(++_0x125cc2);}(_0x7725,0x65));var _0x5772=function(_0x39cc8f,_0xb60cd8){_0x39cc8f=_0x39cc8f-0x0;var _0x15e616=_0x7725[_0x39cc8f];return _0x15e616;};'use strict';function FaxAccount(_0x2c2f58){this['id']=_0x2c2f58['id']||0x0;this[_0x5772('0x0')]=_0x2c2f58['name']||'';this['description']=_0x2c2f58['description'];this[_0x5772('0x1')]=_0x2c2f58[_0x5772('0x1')];this[_0x5772('0x2')]=_0x2c2f58[_0x5772('0x2')];this['localstationid']=_0x2c2f58[_0x5772('0x3')];this[_0x5772('0x4')]=_0x2c2f58['minrate']||0x960;this['maxrate']=_0x2c2f58[_0x5772('0x5')]||0x3840;this[_0x5772('0x6')]=_0x2c2f58[_0x5772('0x6')]||_0x5772('0x7');this['gateway']=_0x2c2f58[_0x5772('0x8')]||'no';this[_0x5772('0x9')]=_0x2c2f58['faxdetect']||'no';this[_0x5772('0xa')]=_0x2c2f58[_0x5772('0xa')]||0x1388;this[_0x5772('0xb')]=_0x2c2f58[_0x5772('0xb')]||_0x5772('0xc');this[_0x5772('0xd')]=_0x2c2f58[_0x5772('0xd')]?_0x2c2f58[_0x5772('0xd')]:undefined;this['ListId']=_0x2c2f58[_0x5772('0xe')];this[_0x5772('0xf')]=_0x2c2f58[_0x5772('0xf')];}module[_0x5772('0x10')]=FaxAccount;
\ No newline at end of file
index 32da6af..a4d6f1f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x521d=['exports','name','username','apiKey','token','remoteUri','serverUrl','Configurations'];(function(_0x23f1bc,_0x113ebd){var _0x4b0969=function(_0x9d37a9){while(--_0x9d37a9){_0x23f1bc['push'](_0x23f1bc['shift']());}};_0x4b0969(++_0x113ebd);}(_0x521d,0x141));var _0xd521=function(_0x4c1c01,_0xbd86f3){_0x4c1c01=_0x4c1c01-0x0;var _0x3e85fb=_0x521d[_0x4c1c01];return _0x3e85fb;};'use strict';function FreshdeskAccount(_0x3589a2){this['id']=_0x3589a2['id']||0x0;this[_0xd521('0x0')]=_0x3589a2['name']||'';this[_0xd521('0x1')]=_0x3589a2['username']||'';this[_0xd521('0x2')]=_0x3589a2[_0xd521('0x3')]||'';this['remoteUri']=_0x3589a2[_0xd521('0x4')]||'';this[_0xd521('0x5')]=_0x3589a2['serverUrl']||'';this[_0xd521('0x6')]=_0x3589a2[_0xd521('0x6')]||{};}module[_0xd521('0x7')]=FreshdeskAccount;
\ No newline at end of file
+var _0x91cc=['Configurations','exports','name','username','apiKey','token','remoteUri','serverUrl'];(function(_0x1f5a3e,_0x380ee3){var _0x12e582=function(_0xab1a84){while(--_0xab1a84){_0x1f5a3e['push'](_0x1f5a3e['shift']());}};_0x12e582(++_0x380ee3);}(_0x91cc,0xc2));var _0xc91c=function(_0x9fd887,_0x47f76c){_0x9fd887=_0x9fd887-0x0;var _0x1a54ab=_0x91cc[_0x9fd887];return _0x1a54ab;};'use strict';function FreshdeskAccount(_0x356b99){this['id']=_0x356b99['id']||0x0;this['name']=_0x356b99[_0xc91c('0x0')]||'';this[_0xc91c('0x1')]=_0x356b99['username']||'';this[_0xc91c('0x2')]=_0x356b99[_0xc91c('0x3')]||'';this[_0xc91c('0x4')]=_0x356b99[_0xc91c('0x4')]||'';this[_0xc91c('0x5')]=_0x356b99[_0xc91c('0x5')]||'';this[_0xc91c('0x6')]=_0x356b99[_0xc91c('0x6')]||{};}module[_0xc91c('0x7')]=FreshdeskAccount;
\ No newline at end of file
index 2fba66c..ec1f0c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x81d4=['exports','name','username','apiKey','token','serverUrl','Configurations'];(function(_0x55e08b,_0x421620){var _0xd1a7ff=function(_0x58c7ff){while(--_0x58c7ff){_0x55e08b['push'](_0x55e08b['shift']());}};_0xd1a7ff(++_0x421620);}(_0x81d4,0x197));var _0x481d=function(_0x53e936,_0x34ada1){_0x53e936=_0x53e936-0x0;var _0x1e9ccf=_0x81d4[_0x53e936];return _0x1e9ccf;};'use strict';function FreshsalesAccount(_0x34d57f){this['id']=_0x34d57f['id']||0x0;this[_0x481d('0x0')]=_0x34d57f[_0x481d('0x0')]||'';this['username']=_0x34d57f[_0x481d('0x1')]||'';this[_0x481d('0x2')]=_0x34d57f[_0x481d('0x3')]||'';this['remoteUri']=_0x34d57f['remoteUri']||'';this[_0x481d('0x4')]=_0x34d57f[_0x481d('0x4')]||'';this[_0x481d('0x5')]=_0x34d57f['Configurations']||{};}module[_0x481d('0x6')]=FreshsalesAccount;
\ No newline at end of file
+var _0x21d1=['Configurations','name','username','apiKey','remoteUri','serverUrl'];(function(_0x3beea0,_0x416691){var _0x314eb1=function(_0x937185){while(--_0x937185){_0x3beea0['push'](_0x3beea0['shift']());}};_0x314eb1(++_0x416691);}(_0x21d1,0x1c9));var _0x121d=function(_0x48e026,_0x429e35){_0x48e026=_0x48e026-0x0;var _0x55df0d=_0x21d1[_0x48e026];return _0x55df0d;};'use strict';function FreshsalesAccount(_0x42b9a7){this['id']=_0x42b9a7['id']||0x0;this[_0x121d('0x0')]=_0x42b9a7[_0x121d('0x0')]||'';this[_0x121d('0x1')]=_0x42b9a7[_0x121d('0x1')]||'';this[_0x121d('0x2')]=_0x42b9a7['token']||'';this['remoteUri']=_0x42b9a7[_0x121d('0x3')]||'';this[_0x121d('0x4')]=_0x42b9a7[_0x121d('0x4')]||'';this[_0x121d('0x5')]=_0x42b9a7[_0x121d('0x5')]||{};}module['exports']=FreshsalesAccount;
\ No newline at end of file
index a801922..1455416 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8393=['queuecallercompleteAt','queuecallerexit','queuecallerexitAt','originalposition','connectedlinename','accountcode','context','exten','priority','assigned','lastAssignedTo','motionChannel','routealias','mohtime','variables','exports','type','calleridnum','calleridname','queue','queuecallerleaveAt','position','count','queuecallerabandon','queuecallercomplete'];(function(_0x5bd626,_0xdbf46d){var _0x2661ca=function(_0x421ff4){while(--_0x421ff4){_0x5bd626['push'](_0x5bd626['shift']());}};_0x2661ca(++_0xdbf46d);}(_0x8393,0x1eb));var _0x3839=function(_0x447207,_0x1ade17){_0x447207=_0x447207-0x0;var _0x12a4ff=_0x8393[_0x447207];return _0x12a4ff;};'use strict';function QueueReport(){this[_0x3839('0x0')]='inbound';this['uniqueid']='';this[_0x3839('0x1')]='';this[_0x3839('0x2')]='';this[_0x3839('0x3')]='';this['queuecallerjoinAt']=null;this[_0x3839('0x4')]=null;this[_0x3839('0x5')]=0x1;this[_0x3839('0x6')]=0x1;this[_0x3839('0x7')]=![];this['queuecallerabandonAt']=null;this[_0x3839('0x8')]=![];this[_0x3839('0x9')]=null;this[_0x3839('0xa')]=![];this[_0x3839('0xb')]=null;this[_0x3839('0xc')]=0x1;this['channel']='';this['connectedlinenum']='';this[_0x3839('0xd')]='';this[_0x3839('0xe')]='';this[_0x3839('0xf')]='';this[_0x3839('0x10')]='';this[_0x3839('0x11')]='';this['holdtime']=0x0;this[_0x3839('0x12')]=![];this[_0x3839('0x13')]='';this[_0x3839('0x14')]='voice';this[_0x3839('0x15')]=null;this[_0x3839('0x16')]=0x0;this[_0x3839('0x17')]={};}module[_0x3839('0x18')]=QueueReport;
\ No newline at end of file
+var _0xb83d=['lastAssignedTo','voice','routealias','variables','exports','type','inbound','uniqueid','calleridnum','calleridname','queue','queuecallerjoinAt','queuecallerleaveAt','position','count','queuecallerabandon','queuecallerabandonAt','queuecallercompleteAt','queuecallerexit','originalposition','channel','connectedlinenum','connectedlinename','accountcode','context','exten','assigned'];(function(_0x2c476d,_0x5a9f66){var _0x3100fb=function(_0x258fd6){while(--_0x258fd6){_0x2c476d['push'](_0x2c476d['shift']());}};_0x3100fb(++_0x5a9f66);}(_0xb83d,0x1d0));var _0xdb83=function(_0x3dd276,_0x5e8822){_0x3dd276=_0x3dd276-0x0;var _0x15df92=_0xb83d[_0x3dd276];return _0x15df92;};'use strict';function QueueReport(){this[_0xdb83('0x0')]=_0xdb83('0x1');this[_0xdb83('0x2')]='';this[_0xdb83('0x3')]='';this[_0xdb83('0x4')]='';this[_0xdb83('0x5')]='';this[_0xdb83('0x6')]=null;this[_0xdb83('0x7')]=null;this[_0xdb83('0x8')]=0x1;this[_0xdb83('0x9')]=0x1;this[_0xdb83('0xa')]=![];this[_0xdb83('0xb')]=null;this['queuecallercomplete']=![];this[_0xdb83('0xc')]=null;this[_0xdb83('0xd')]=![];this['queuecallerexitAt']=null;this[_0xdb83('0xe')]=0x1;this[_0xdb83('0xf')]='';this[_0xdb83('0x10')]='';this[_0xdb83('0x11')]='';this[_0xdb83('0x12')]='';this[_0xdb83('0x13')]='';this[_0xdb83('0x14')]='';this['priority']='';this['holdtime']=0x0;this[_0xdb83('0x15')]=![];this[_0xdb83('0x16')]='';this['motionChannel']=_0xdb83('0x17');this[_0xdb83('0x18')]=null;this['mohtime']=0x0;this[_0xdb83('0x19')]={};}module[_0xdb83('0x1a')]=QueueReport;
\ No newline at end of file
index 57d4745..9992e1f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b0e=['remoteUri','password','clientId','clientSecret','securityToken','type','serverUrl','Configurations','exports','name','username'];(function(_0x5490d2,_0x3a67de){var _0x47302e=function(_0x1c8f46){while(--_0x1c8f46){_0x5490d2['push'](_0x5490d2['shift']());}};_0x47302e(++_0x3a67de);}(_0x1b0e,0x132));var _0xe1b0=function(_0x50dd48,_0x4f3011){_0x50dd48=_0x50dd48-0x0;var _0x33dfca=_0x1b0e[_0x50dd48];return _0x33dfca;};'use strict';function SalesforceAccount(_0x5dd1a3){this['id']=_0x5dd1a3['id']||0x0;this[_0xe1b0('0x0')]=_0x5dd1a3[_0xe1b0('0x0')]||'';this[_0xe1b0('0x1')]=_0x5dd1a3[_0xe1b0('0x1')]||'';this[_0xe1b0('0x2')]=_0x5dd1a3['remoteUri']||'';this['password']=_0x5dd1a3[_0xe1b0('0x3')]||'';this[_0xe1b0('0x4')]=_0x5dd1a3['clientId']||'';this[_0xe1b0('0x5')]=_0x5dd1a3[_0xe1b0('0x5')]||'';this[_0xe1b0('0x6')]=_0x5dd1a3['securityToken']||'';this[_0xe1b0('0x7')]=_0x5dd1a3[_0xe1b0('0x7')]||'integrationTab';this[_0xe1b0('0x8')]=_0x5dd1a3[_0xe1b0('0x8')]||'';this[_0xe1b0('0x9')]=_0x5dd1a3[_0xe1b0('0x9')]||{};}module[_0xe1b0('0xa')]=SalesforceAccount;
\ No newline at end of file
+var _0xfb10=['type','integrationTab','serverUrl','Configurations','exports','name','username','remoteUri','password','clientId','clientSecret','securityToken'];(function(_0x3213b7,_0x6789ca){var _0xb960bf=function(_0x2f7f04){while(--_0x2f7f04){_0x3213b7['push'](_0x3213b7['shift']());}};_0xb960bf(++_0x6789ca);}(_0xfb10,0x191));var _0x0fb1=function(_0x52a137,_0x458e35){_0x52a137=_0x52a137-0x0;var _0x3dd0c7=_0xfb10[_0x52a137];return _0x3dd0c7;};'use strict';function SalesforceAccount(_0x950fc5){this['id']=_0x950fc5['id']||0x0;this[_0x0fb1('0x0')]=_0x950fc5['name']||'';this['username']=_0x950fc5[_0x0fb1('0x1')]||'';this[_0x0fb1('0x2')]=_0x950fc5[_0x0fb1('0x2')]||'';this[_0x0fb1('0x3')]=_0x950fc5[_0x0fb1('0x3')]||'';this[_0x0fb1('0x4')]=_0x950fc5[_0x0fb1('0x4')]||'';this[_0x0fb1('0x5')]=_0x950fc5[_0x0fb1('0x5')]||'';this[_0x0fb1('0x6')]=_0x950fc5[_0x0fb1('0x6')]||'';this[_0x0fb1('0x7')]=_0x950fc5['type']||_0x0fb1('0x8');this[_0x0fb1('0x9')]=_0x950fc5[_0x0fb1('0x9')]||'';this['Configurations']=_0x950fc5[_0x0fb1('0xa')]||{};}module[_0x0fb1('0xb')]=SalesforceAccount;
\ No newline at end of file
index 7ad55f6..438a1ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa96=['serverUrl','Configurations','username','password','remoteUri'];(function(_0x339abf,_0x202c46){var _0x3122a2=function(_0x3913b3){while(--_0x3913b3){_0x339abf['push'](_0x339abf['shift']());}};_0x3122a2(++_0x202c46);}(_0xaa96,0xc0));var _0x6aa9=function(_0x2edd23,_0x6e1f74){_0x2edd23=_0x2edd23-0x0;var _0x3fcd66=_0xaa96[_0x2edd23];return _0x3fcd66;};'use strict';function ServicenowAccount(_0x32a4ba){this['id']=_0x32a4ba['id']||0x0;this['name']=_0x32a4ba['name']||'';this['username']=_0x32a4ba[_0x6aa9('0x0')]||'';this[_0x6aa9('0x1')]=_0x32a4ba[_0x6aa9('0x1')]||'';this['remoteUri']=_0x32a4ba[_0x6aa9('0x2')]||'';this[_0x6aa9('0x3')]=_0x32a4ba[_0x6aa9('0x3')]||'';this[_0x6aa9('0x4')]=_0x32a4ba[_0x6aa9('0x4')]||{};}module['exports']=ServicenowAccount;
\ No newline at end of file
+var _0x4e7a=['name','username','password','remoteUri','serverUrl','Configurations'];(function(_0x39acf3,_0xb50484){var _0x2b66ac=function(_0x32fc00){while(--_0x32fc00){_0x39acf3['push'](_0x39acf3['shift']());}};_0x2b66ac(++_0xb50484);}(_0x4e7a,0x168));var _0xa4e7=function(_0x1539bf,_0x28aace){_0x1539bf=_0x1539bf-0x0;var _0x2607eb=_0x4e7a[_0x1539bf];return _0x2607eb;};'use strict';function ServicenowAccount(_0x25556d){this['id']=_0x25556d['id']||0x0;this[_0xa4e7('0x0')]=_0x25556d[_0xa4e7('0x0')]||'';this['username']=_0x25556d[_0xa4e7('0x1')]||'';this['password']=_0x25556d[_0xa4e7('0x2')]||'';this[_0xa4e7('0x3')]=_0x25556d[_0xa4e7('0x3')]||'';this[_0xa4e7('0x4')]=_0x25556d[_0xa4e7('0x4')]||'';this[_0xa4e7('0x5')]=_0x25556d[_0xa4e7('0x5')]||{};}module['exports']=ServicenowAccount;
\ No newline at end of file
index 4f5e590..9d9e718 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2056=['remoteUri','serverUrl','Configurations','exports','name','username','password'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x2056,0x107));var _0x6205=function(_0x32f3d0,_0x18caa6){_0x32f3d0=_0x32f3d0-0x0;var _0x3cfb65=_0x2056[_0x32f3d0];return _0x3cfb65;};'use strict';function SugarcrmAccount(_0x2dcf14){this['id']=_0x2dcf14['id']||0x0;this['name']=_0x2dcf14[_0x6205('0x0')]||'';this[_0x6205('0x1')]=_0x2dcf14[_0x6205('0x1')]||'';this[_0x6205('0x2')]=_0x2dcf14[_0x6205('0x2')]||'';this[_0x6205('0x3')]=_0x2dcf14[_0x6205('0x3')]||'';this[_0x6205('0x4')]=_0x2dcf14[_0x6205('0x4')]||'';this['Configurations']=_0x2dcf14[_0x6205('0x5')]||{};}module[_0x6205('0x6')]=SugarcrmAccount;
\ No newline at end of file
+var _0x8075=['remoteUri','serverUrl','Configurations','name','username','password'];(function(_0x2cbec7,_0x30ad89){var _0x55c860=function(_0x56f1d9){while(--_0x56f1d9){_0x2cbec7['push'](_0x2cbec7['shift']());}};_0x55c860(++_0x30ad89);}(_0x8075,0xab));var _0x5807=function(_0x275f53,_0x5cdeff){_0x275f53=_0x275f53-0x0;var _0x252c70=_0x8075[_0x275f53];return _0x252c70;};'use strict';function SugarcrmAccount(_0x9f034d){this['id']=_0x9f034d['id']||0x0;this[_0x5807('0x0')]=_0x9f034d['name']||'';this[_0x5807('0x1')]=_0x9f034d['username']||'';this[_0x5807('0x2')]=_0x9f034d[_0x5807('0x2')]||'';this['remoteUri']=_0x9f034d[_0x5807('0x3')]||'';this[_0x5807('0x4')]=_0x9f034d['serverUrl']||'';this['Configurations']=_0x9f034d[_0x5807('0x5')]||{};}module['exports']=SugarcrmAccount;
\ No newline at end of file
index 9d060cb..8350130 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe260=['name','accountcode','state','unknown','stateTime','status','address','exports'];(function(_0x3ea913,_0x255df2){var _0x2b4f28=function(_0x48bb25){while(--_0x48bb25){_0x3ea913['push'](_0x3ea913['shift']());}};_0x2b4f28(++_0x255df2);}(_0xe260,0xb0));var _0x0e26=function(_0x2a779e,_0x48217f){_0x2a779e=_0x2a779e-0x0;var _0x385c5c=_0xe260[_0x2a779e];return _0x385c5c;};'use strict';function Telephone(_0x3fb835){this['id']=_0x3fb835['id']||0x0;this[_0x0e26('0x0')]=_0x3fb835[_0x0e26('0x0')]||'';this[_0x0e26('0x1')]=_0x3fb835['accountcode']||'';this[_0x0e26('0x2')]=_0x0e26('0x3');this[_0x0e26('0x4')]=0x0;this[_0x0e26('0x5')]=_0x0e26('0x3');this[_0x0e26('0x6')]='';}module[_0x0e26('0x7')]=Telephone;
\ No newline at end of file
+var _0x3715=['status','address','exports','name','accountcode','state','unknown','stateTime'];(function(_0x38db95,_0x3c071d){var _0x50c28a=function(_0x2aa0dc){while(--_0x2aa0dc){_0x38db95['push'](_0x38db95['shift']());}};_0x50c28a(++_0x3c071d);}(_0x3715,0xc3));var _0x5371=function(_0x30e0e6,_0x38415c){_0x30e0e6=_0x30e0e6-0x0;var _0x194b08=_0x3715[_0x30e0e6];return _0x194b08;};'use strict';function Telephone(_0x10dbd2){this['id']=_0x10dbd2['id']||0x0;this[_0x5371('0x0')]=_0x10dbd2[_0x5371('0x0')]||'';this[_0x5371('0x1')]=_0x10dbd2[_0x5371('0x1')]||'';this[_0x5371('0x2')]=_0x5371('0x3');this[_0x5371('0x4')]=0x0;this[_0x5371('0x5')]=_0x5371('0x3');this[_0x5371('0x6')]='';}module[_0x5371('0x7')]=Telephone;
\ No newline at end of file
index 85b234a..147d948 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['exports','name'];(function(_0x42a0bc,_0x51c3f7){var _0x41b2a7=function(_0x76b480){while(--_0x76b480){_0x42a0bc['push'](_0x42a0bc['shift']());}};_0x41b2a7(++_0x51c3f7);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5e3b04,_0xbb6795){_0x5e3b04=_0x5e3b04-0x0;var _0x1fc44d=_0xa9e0[_0x5e3b04];return _0x1fc44d;};'use strict';function template(_0x1f0015){this['id']=_0x1f0015['id']||0x0;this[_0x0a9e('0x0')]=_0x1f0015[_0x0a9e('0x0')]||'';this['html']=_0x1f0015['html']||'';}module[_0x0a9e('0x1')]=template;
\ No newline at end of file
+var _0xa9e0=['exports','name'];(function(_0x2cdea5,_0x2f5819){var _0x30dd1d=function(_0x4a0442){while(--_0x4a0442){_0x2cdea5['push'](_0x2cdea5['shift']());}};_0x30dd1d(++_0x2f5819);}(_0xa9e0,0x123));var _0x0a9e=function(_0x29b609,_0x19d388){_0x29b609=_0x29b609-0x0;var _0x54c952=_0xa9e0[_0x29b609];return _0x54c952;};'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 a24bd24..52d74be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4fc2=['name','channel','voice','status','AllConditions','AnyConditions','Actions'];(function(_0x45fcbd,_0x5bd24e){var _0x5ec028=function(_0x27d132){while(--_0x27d132){_0x45fcbd['push'](_0x45fcbd['shift']());}};_0x5ec028(++_0x5bd24e);}(_0x4fc2,0x111));var _0x24fc=function(_0x48d99d,_0x1e297b){_0x48d99d=_0x48d99d-0x0;var _0x18b0a6=_0x4fc2[_0x48d99d];return _0x18b0a6;};'use strict';function Trigger(_0x5ea3ab){this['id']=_0x5ea3ab['id']||0x0;this[_0x24fc('0x0')]=_0x5ea3ab[_0x24fc('0x0')]||'';this[_0x24fc('0x1')]=_0x5ea3ab['channel']||_0x24fc('0x2');this[_0x24fc('0x3')]=_0x5ea3ab[_0x24fc('0x3')]||![];this['AllConditions']=_0x5ea3ab[_0x24fc('0x4')]||[];this[_0x24fc('0x5')]=_0x5ea3ab['AnyConditions']||[];this[_0x24fc('0x6')]=_0x5ea3ab[_0x24fc('0x6')]||[];}module['exports']=Trigger;
\ No newline at end of file
+var _0x5eb8=['Actions','name','channel','voice','status','AllConditions','AnyConditions'];(function(_0x483d8b,_0x526c52){var _0x6500f1=function(_0x372797){while(--_0x372797){_0x483d8b['push'](_0x483d8b['shift']());}};_0x6500f1(++_0x526c52);}(_0x5eb8,0xb0));var _0x85eb=function(_0x1ab180,_0x382b2c){_0x1ab180=_0x1ab180-0x0;var _0xfb2c2d=_0x5eb8[_0x1ab180];return _0xfb2c2d;};'use strict';function Trigger(_0x5ea4df){this['id']=_0x5ea4df['id']||0x0;this['name']=_0x5ea4df[_0x85eb('0x0')]||'';this[_0x85eb('0x1')]=_0x5ea4df[_0x85eb('0x1')]||_0x85eb('0x2');this[_0x85eb('0x3')]=_0x5ea4df[_0x85eb('0x3')]||![];this[_0x85eb('0x4')]=_0x5ea4df[_0x85eb('0x4')]||[];this[_0x85eb('0x5')]=_0x5ea4df[_0x85eb('0x5')]||[];this[_0x85eb('0x6')]=_0x5ea4df[_0x85eb('0x6')]||[];}module['exports']=Trigger;
\ No newline at end of file
index e2dc138..7ab11eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x927c=['host','domain','refresh','registrationtime','address','defaultuser','exports','active','name','state','stateTime','status','unknown','registry','indexOf'];(function(_0x4144a0,_0x3c0614){var _0x3ab017=function(_0x5cd106){while(--_0x5cd106){_0x4144a0['push'](_0x4144a0['shift']());}};_0x3ab017(++_0x3c0614);}(_0x927c,0x115));var _0xc927=function(_0x2516a6,_0x13178d){_0x2516a6=_0x2516a6-0x0;var _0x1bccf6=_0x927c[_0x2516a6];return _0x1bccf6;};'use strict';function Trunk(_0x26bf6e){this['id']=_0x26bf6e['id']||0x0;this['active']=_0x26bf6e[_0xc927('0x0')]||![];this[_0xc927('0x1')]=_0x26bf6e[_0xc927('0x1')]||'';this[_0xc927('0x2')]='unknown';this[_0xc927('0x3')]=0x0;this[_0xc927('0x4')]=_0xc927('0x5');this['registry']=_0x26bf6e[_0xc927('0x6')]&&_0x26bf6e['registry'][_0xc927('0x7')](':')?_0x26bf6e[_0xc927('0x6')]['split'](':')[0x0]:'';this[_0xc927('0x8')]='';this['port']='';this[_0xc927('0x9')]='';this['domainport']='';this[_0xc927('0xa')]='';this['stateRegistry']=_0xc927('0x5');this[_0xc927('0xb')]='';this[_0xc927('0xc')]='';this[_0xc927('0xd')]=_0x26bf6e[_0xc927('0xd')]||'';}module[_0xc927('0xe')]=Trunk;
\ No newline at end of file
+var _0x5c7a=['name','state','unknown','stateTime','status','registry','indexOf','split','domainport','refresh','registrationtime','address','defaultuser','exports','active'];(function(_0x412e27,_0x20a978){var _0x53da42=function(_0x43cae5){while(--_0x43cae5){_0x412e27['push'](_0x412e27['shift']());}};_0x53da42(++_0x20a978);}(_0x5c7a,0x95));var _0xa5c7=function(_0x1d4449,_0x495153){_0x1d4449=_0x1d4449-0x0;var _0x4dcde3=_0x5c7a[_0x1d4449];return _0x4dcde3;};'use strict';function Trunk(_0x1f25b3){this['id']=_0x1f25b3['id']||0x0;this[_0xa5c7('0x0')]=_0x1f25b3[_0xa5c7('0x0')]||![];this[_0xa5c7('0x1')]=_0x1f25b3[_0xa5c7('0x1')]||'';this[_0xa5c7('0x2')]=_0xa5c7('0x3');this[_0xa5c7('0x4')]=0x0;this[_0xa5c7('0x5')]=_0xa5c7('0x3');this['registry']=_0x1f25b3[_0xa5c7('0x6')]&&_0x1f25b3[_0xa5c7('0x6')][_0xa5c7('0x7')](':')?_0x1f25b3['registry'][_0xa5c7('0x8')](':')[0x0]:'';this['host']='';this['port']='';this['domain']='';this[_0xa5c7('0x9')]='';this[_0xa5c7('0xa')]='';this['stateRegistry']='unknown';this[_0xa5c7('0xb')]='';this[_0xa5c7('0xc')]='';this[_0xa5c7('0xd')]=_0x1f25b3[_0xa5c7('0xd')]||'';}module[_0xa5c7('0xe')]=Trunk;
\ No newline at end of file
index 6401b1a..0390d0a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9005=['none','mandatoryDisposition','exports','exten','recordingFormat'];(function(_0x31079b,_0x4b3786){var _0x3ab7aa=function(_0x238d5e){while(--_0x238d5e){_0x31079b['push'](_0x31079b['shift']());}};_0x3ab7aa(++_0x4b3786);}(_0x9005,0xf8));var _0x5900=function(_0xf47bc8,_0x26ff25){_0xf47bc8=_0xf47bc8-0x0;var _0x11a792=_0x9005[_0xf47bc8];return _0x11a792;};'use strict';function voiceExtension(_0x6b509b){this['id']=_0x6b509b['id']||0x0;this[_0x5900('0x0')]=_0x6b509b[_0x5900('0x0')]||'';this[_0x5900('0x1')]=_0x6b509b[_0x5900('0x1')]||_0x5900('0x2');this['mandatoryDisposition']=_0x6b509b[_0x5900('0x3')]||![];}module[_0x5900('0x4')]=voiceExtension;
\ No newline at end of file
+var _0x776d=['exten','recordingFormat','none','mandatoryDisposition','exports'];(function(_0x2ade98,_0x142883){var _0x3ea1cf=function(_0x4a8754){while(--_0x4a8754){_0x2ade98['push'](_0x2ade98['shift']());}};_0x3ea1cf(++_0x142883);}(_0x776d,0x168));var _0xd776=function(_0x1d637d,_0x5ac904){_0x1d637d=_0x1d637d-0x0;var _0xb1f4f2=_0x776d[_0x1d637d];return _0xb1f4f2;};'use strict';function voiceExtension(_0x24853c){this['id']=_0x24853c['id']||0x0;this['exten']=_0x24853c[_0xd776('0x0')]||'';this[_0xd776('0x1')]=_0x24853c[_0xd776('0x1')]||_0xd776('0x2');this[_0xd776('0x3')]=_0x24853c['mandatoryDisposition']||![];}module[_0xd776('0x4')]=voiceExtension;
\ No newline at end of file
index 848b41e..ac7082b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c72=['dialMethod','dialLimitChannel','dialPowerLevel','dialPredictiveOptimization','dropRate','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','TrunkBackup','Interval','dialOrderByScheduledAt','DESC','dialRandomLastDigitCallerIdNumber','dialCutDigit','strategy','dialAMDActive','dialAMDInitialSilence','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','outboundRejectCallsDay','pTalking','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundDropCallsDayTimeout','outboundDropCallsDayACS','outboundReCallsDay','startProgressive','startPredictive','predictiveIntervalMultiplicativeFactor','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalAvgTalktime','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','dialPredictiveIntervalMaxThreshold','predictiveIntervalHitRate','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','dialRecallMeTimeout','dialRecallInQueue','dialPreviewAutoRecallMe','dialPreviewRecallmeReminder','dialQueueProject2','dialAgiAfterHangupClient','dialAgiAfterHangupAgent','mandatoryDisposition','mandatoryDispositionPause','queueSummaryCountersUpdated','exports','wav49','gsm','leastrecent','random','rrmemory','wrandom','name','monitor_format','type','inbound','waiting','total','answered','sumDuration','unmanaged','abandoned','available','busy','inUse','invalid','notInUse','onHold','paused','ringing','ringInUse','unknown','acw','acwTimeout','autopause','sendMessageOneNotActive','message','originated','dialGlobalInterval','dialActive'];(function(_0x4c253b,_0x2ef014){var _0x582939=function(_0x4dae0d){while(--_0x4dae0d){_0x4c253b['push'](_0x4c253b['shift']());}};_0x582939(++_0x2ef014);}(_0x8c72,0x14f));var _0x28c7=function(_0x5a95fa,_0x4a2fc9){_0x5a95fa=_0x5a95fa-0x0;var _0x1a61b8=_0x8c72[_0x5a95fa];return _0x1a61b8;};'use strict';var monitorFormat={'wav':'wav','wav49':_0x28c7('0x0'),'gsm':_0x28c7('0x1')};var strategy={'fewestcalls':'fewestcalls','leastrecent':_0x28c7('0x2'),'linear':'linear','random':_0x28c7('0x3'),'ringall':'ringall','rr':'roundrobin','rrmemory':_0x28c7('0x4'),'rrordered':'rrordered','wrandom':_0x28c7('0x5')};function VoiceQueue(_0x4161ae){this['id']=_0x4161ae['id']||0x0;this[_0x28c7('0x6')]=_0x4161ae[_0x28c7('0x6')]||'';this[_0x28c7('0x7')]=_0x4161ae['monitor_format']||'';this[_0x28c7('0x8')]=_0x4161ae['type']||_0x28c7('0x9');this[_0x28c7('0xa')]=0x0;this[_0x28c7('0xb')]=0x0;this[_0x28c7('0xc')]=0x0;this[_0x28c7('0xd')]=0x0;this['sumHoldTime']=0x0;this['sumBillable']=0x0;this[_0x28c7('0xe')]=0x0;this[_0x28c7('0xf')]=0x0;this[_0x28c7('0x10')]=0x0;this[_0x28c7('0x11')]=0x0;this[_0x28c7('0x12')]=0x0;this[_0x28c7('0x13')]=0x0;this['loggedIn']=0x0;this[_0x28c7('0x14')]=0x0;this[_0x28c7('0x15')]=0x0;this[_0x28c7('0x16')]=0x0;this[_0x28c7('0x17')]=0x0;this[_0x28c7('0x18')]=0x0;this['talking']=0x0;this['unavailable']=0x0;this[_0x28c7('0x19')]=0x0;this[_0x28c7('0x1a')]=_0x4161ae[_0x28c7('0x1a')]||![];this['acwTimeout']=_0x4161ae[_0x28c7('0x1b')]||0xa;this[_0x28c7('0x1c')]=_0x4161ae[_0x28c7('0x1c')]||'no';this[_0x28c7('0x1d')]=!![];this[_0x28c7('0x1e')]='';this['statusMessage']='';this[_0x28c7('0x1f')]=0x0;this['temp']=0x0;this['dialTimezone']=_0x4161ae['dialTimezone']||null;this[_0x28c7('0x20')]=_0x4161ae['dialGlobalInterval']?_0x4161ae[_0x28c7('0x20')]:null;this[_0x28c7('0x21')]=_0x4161ae[_0x28c7('0x21')];this[_0x28c7('0x22')]=_0x4161ae[_0x28c7('0x22')]||'progressive';this['dialLimitChannel']=_0x4161ae[_0x28c7('0x23')]||0x0;this['dialLimitQueue']=_0x4161ae['dialLimitQueue']||0x0;this[_0x28c7('0x24')]=_0x4161ae[_0x28c7('0x24')]||0x1;this[_0x28c7('0x25')]=_0x4161ae[_0x28c7('0x25')]||_0x28c7('0x26');this[_0x28c7('0x27')]=_0x4161ae[_0x28c7('0x27')]||0.03;this[_0x28c7('0x28')]=_0x4161ae[_0x28c7('0x28')]||0x258;this[_0x28c7('0x29')]=_0x4161ae['dialOriginateCallerIdName']||_0x28c7('0x2a');this['dialOriginateCallerIdNumber']=_0x4161ae[_0x28c7('0x2b')]||_0x28c7('0x2a');this[_0x28c7('0x2c')]=_0x4161ae['dialOriginateTimeout']||0x1e;this[_0x28c7('0x2d')]=_0x4161ae[_0x28c7('0x2d')]||_0x28c7('0x2e');this[_0x28c7('0x2f')]=_0x4161ae[_0x28c7('0x2f')]||0x3;this[_0x28c7('0x30')]=_0x4161ae[_0x28c7('0x30')]||undefined;this['dialCongestionMaxRetry']=_0x4161ae[_0x28c7('0x31')]||0x3;this[_0x28c7('0x32')]=_0x4161ae[_0x28c7('0x32')]||0x96;this['dialBusyMaxRetry']=_0x4161ae[_0x28c7('0x33')]||0x3;this[_0x28c7('0x34')]=_0x4161ae[_0x28c7('0x34')]||0x96;this[_0x28c7('0x35')]=_0x4161ae[_0x28c7('0x35')]||0x3;this[_0x28c7('0x36')]=_0x4161ae[_0x28c7('0x36')]||0x96;this[_0x28c7('0x37')]=_0x4161ae['dialNoSuchNumberMaxRetry']||0x3;this[_0x28c7('0x38')]=_0x4161ae[_0x28c7('0x38')]||0x96;this[_0x28c7('0x39')]=_0x4161ae[_0x28c7('0x39')]||0x3;this[_0x28c7('0x3a')]=_0x4161ae['dialDropRetryFrequency']||0x96;this[_0x28c7('0x3b')]=_0x4161ae[_0x28c7('0x3b')]||0x3;this[_0x28c7('0x3c')]=_0x4161ae[_0x28c7('0x3c')]||0x96;this[_0x28c7('0x3d')]=_0x4161ae[_0x28c7('0x3d')]||0x3;this[_0x28c7('0x3e')]=_0x4161ae[_0x28c7('0x3e')]||0x96;this[_0x28c7('0x3f')]=_0x4161ae[_0x28c7('0x3f')]||0x3;this[_0x28c7('0x40')]=_0x4161ae['dialAgentRejectRetryFrequency']||0x96;this[_0x28c7('0x41')]=_0x4161ae[_0x28c7('0x41')]||0x3;this[_0x28c7('0x42')]=_0x4161ae[_0x28c7('0x42')]||0x4;this[_0x28c7('0x43')]=_0x4161ae[_0x28c7('0x43')]?_0x4161ae[_0x28c7('0x43')]:undefined;this[_0x28c7('0x44')]=_0x4161ae['TrunkBackup']?_0x4161ae['TrunkBackup']:undefined;this['dialPrefix']=_0x4161ae['dialPrefix']||undefined;this[_0x28c7('0x45')]=_0x4161ae[_0x28c7('0x45')]?_0x4161ae['Interval']:undefined;this['dialOrderByScheduledAt']=_0x4161ae[_0x28c7('0x46')]||_0x28c7('0x47');this[_0x28c7('0x48')]=_0x4161ae[_0x28c7('0x48')]||undefined;this['dialCutDigit']=_0x4161ae[_0x28c7('0x49')]||undefined;this[_0x28c7('0x4a')]=strategy[_0x4161ae[_0x28c7('0x4a')]];this['queueStatusComplete']=!![];this[_0x28c7('0x4b')]=_0x4161ae[_0x28c7('0x4b')]||![];this['dialAMDInitialSilence']=_0x4161ae[_0x28c7('0x4c')];this['dialAMDGreeting']=_0x4161ae['dialAMDGreeting'];this['dialAMDAfterGreetingSilence']=_0x4161ae[_0x28c7('0x4d')];this[_0x28c7('0x4e')]=_0x4161ae['dialAMDTotalAnalysisTime'];this[_0x28c7('0x4f')]=_0x4161ae[_0x28c7('0x4f')];this['dialAMDBetweenWordsSilence']=_0x4161ae[_0x28c7('0x50')];this[_0x28c7('0x51')]=_0x4161ae['dialAMDMaximumNumberOfWords'];this[_0x28c7('0x52')]=_0x4161ae['dialAMDSilenceThreshold'];this[_0x28c7('0x53')]=_0x4161ae[_0x28c7('0x53')];this[_0x28c7('0x54')]=0x0;this[_0x28c7('0x55')]=0x0;this['timeout']=_0x4161ae['timeout'];this['outboundAnswerCallsDay']=0x0;this[_0x28c7('0x56')]=0x0;this[_0x28c7('0x57')]=0x0;this[_0x28c7('0x58')]=0x0;this[_0x28c7('0x59')]=0x0;this[_0x28c7('0x5a')]=0x0;this[_0x28c7('0x5b')]=0x0;this['outboundBlacklistCallsDay']=0x0;this['outboundOriginateFailureCallsDay']=0x0;this['outboundDropCallsDayCallersExit']=0x0;this[_0x28c7('0x5c')]=0x0;this[_0x28c7('0x5d')]=0x0;this[_0x28c7('0x5e')]=0x0;this['outboundAbandonedDay']=0x0;this[_0x28c7('0x5f')]=undefined;this[_0x28c7('0x60')]=undefined;this['handlePredictive']=undefined;this[_0x28c7('0x61')]=1.05;this[_0x28c7('0x62')]=0x0;this[_0x28c7('0x63')]=0x0;this[_0x28c7('0x64')]=0x0;this[_0x28c7('0x65')]=0x0;this['predictiveIntervalAvgHoldtime']=0x0;this[_0x28c7('0x66')]=0x0;this[_0x28c7('0x67')]=0x0;this[_0x28c7('0x68')]=0x0;this[_0x28c7('0x69')]=_0x4161ae['dialPredictiveIntervalMaxThreshold']||0x14;this[_0x28c7('0x6a')]=_0x4161ae[_0x28c7('0x6b')]||0xa;this['predictiveIntervalErlangCalls']=0x0;this['predictiveIntervalErlangCallsDroppedCalls']=0x0;this[_0x28c7('0x6c')]=0x1;this[_0x28c7('0x6d')]=0x0;this[_0x28c7('0x6e')]=0x0;this[_0x28c7('0x6f')]=0x0;this['erlangBusyFactor']=0x0;this[_0x28c7('0x70')]=_0x4161ae[_0x28c7('0x70')]||0x1e;this[_0x28c7('0x71')]=_0x4161ae[_0x28c7('0x71')]||![];this[_0x28c7('0x72')]=!!_0x4161ae[_0x28c7('0x72')]||![];this[_0x28c7('0x73')]=!!_0x4161ae['dialPreviewRecallmeReminder']||![];this[_0x28c7('0x74')]=_0x4161ae[_0x28c7('0x74')]||undefined;this[_0x28c7('0x75')]=_0x4161ae['dialAgiAfterHangupClient']||![];this[_0x28c7('0x76')]=_0x4161ae['dialAgiAfterHangupAgent']||![];this[_0x28c7('0x7')]=monitorFormat[_0x4161ae[_0x28c7('0x7')]]?monitorFormat[_0x4161ae[_0x28c7('0x7')]]:undefined;this['mandatoryDisposition']=_0x4161ae[_0x28c7('0x77')]||![];this[_0x28c7('0x78')]=_0x4161ae[_0x28c7('0x78')]?_0x4161ae[_0x28c7('0x78')]:undefined;this[_0x28c7('0x79')]=![];}module[_0x28c7('0x7a')]=VoiceQueue;
\ No newline at end of file
+var _0x4035=['predictiveIntervalAvgTalktime','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','dialPredictiveIntervalMaxThreshold','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','erlangCallToSecond','erlangBusyFactor','dialRecallMeTimeout','dialRecallInQueue','dialPreviewAutoRecallMe','dialQueueProject2','dialAgiAfterHangupClient','dialAgiAfterHangupAgent','mandatoryDisposition','mandatoryDispositionPause','queueSummaryCountersUpdated','exports','wav','gsm','fewestcalls','leastrecent','random','ringall','roundrobin','rrmemory','rrordered','name','monitor_format','type','inbound','total','sumDuration','sumBillable','unmanaged','abandoned','busy','invalid','loggedIn','onHold','paused','ringing','ringInUse','talking','unavailable','unknown','acw','autopause','sendMessageOneNotActive','message','statusMessage','originated','temp','dialTimezone','dialGlobalInterval','dialActive','dialMethod','progressive','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','anonymous','dialOriginateTimeout','dialQueueOptions','tTxX','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','callAdditionalPhoneAfterMin','dialGlobalMaxRetry','Trunk','TrunkBackup','dialPrefix','Interval','dialOrderByScheduledAt','DESC','dialRandomLastDigitCallerIdNumber','dialCutDigit','strategy','queueStatusComplete','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDSilenceThreshold','dialAMDMaximumWordLength','outboundRejectCallsDay','pTalking','timeout','outboundAnswerCallsDay','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundUnknownCallsDay','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundReCallsDay','outboundAbandonedDay','startPredictive','predictiveIntervalMultiplicativeFactor','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalAvgHoldtime'];(function(_0x1c634c,_0x1980e8){var _0x5a8979=function(_0x4f42bc){while(--_0x4f42bc){_0x1c634c['push'](_0x1c634c['shift']());}};_0x5a8979(++_0x1980e8);}(_0x4035,0x19d));var _0x5403=function(_0xea8947,_0x1b573d){_0xea8947=_0xea8947-0x0;var _0x2455e9=_0x4035[_0xea8947];return _0x2455e9;};'use strict';var monitorFormat={'wav':_0x5403('0x0'),'wav49':'wav49','gsm':_0x5403('0x1')};var strategy={'fewestcalls':_0x5403('0x2'),'leastrecent':_0x5403('0x3'),'linear':'linear','random':_0x5403('0x4'),'ringall':_0x5403('0x5'),'rr':_0x5403('0x6'),'rrmemory':_0x5403('0x7'),'rrordered':_0x5403('0x8'),'wrandom':'wrandom'};function VoiceQueue(_0x25c32c){this['id']=_0x25c32c['id']||0x0;this[_0x5403('0x9')]=_0x25c32c['name']||'';this[_0x5403('0xa')]=_0x25c32c[_0x5403('0xa')]||'';this[_0x5403('0xb')]=_0x25c32c[_0x5403('0xb')]||_0x5403('0xc');this['waiting']=0x0;this[_0x5403('0xd')]=0x0;this['answered']=0x0;this[_0x5403('0xe')]=0x0;this['sumHoldTime']=0x0;this[_0x5403('0xf')]=0x0;this[_0x5403('0x10')]=0x0;this[_0x5403('0x11')]=0x0;this['available']=0x0;this[_0x5403('0x12')]=0x0;this['inUse']=0x0;this[_0x5403('0x13')]=0x0;this[_0x5403('0x14')]=0x0;this['notInUse']=0x0;this[_0x5403('0x15')]=0x0;this[_0x5403('0x16')]=0x0;this[_0x5403('0x17')]=0x0;this[_0x5403('0x18')]=0x0;this[_0x5403('0x19')]=0x0;this[_0x5403('0x1a')]=0x0;this[_0x5403('0x1b')]=0x0;this[_0x5403('0x1c')]=_0x25c32c[_0x5403('0x1c')]||![];this['acwTimeout']=_0x25c32c['acwTimeout']||0xa;this[_0x5403('0x1d')]=_0x25c32c[_0x5403('0x1d')]||'no';this[_0x5403('0x1e')]=!![];this[_0x5403('0x1f')]='';this[_0x5403('0x20')]='';this[_0x5403('0x21')]=0x0;this[_0x5403('0x22')]=0x0;this['dialTimezone']=_0x25c32c[_0x5403('0x23')]||null;this['dialGlobalInterval']=_0x25c32c[_0x5403('0x24')]?_0x25c32c[_0x5403('0x24')]:null;this[_0x5403('0x25')]=_0x25c32c['dialActive'];this[_0x5403('0x26')]=_0x25c32c['dialMethod']||_0x5403('0x27');this[_0x5403('0x28')]=_0x25c32c[_0x5403('0x28')]||0x0;this[_0x5403('0x29')]=_0x25c32c[_0x5403('0x29')]||0x0;this['dialPowerLevel']=_0x25c32c[_0x5403('0x2a')]||0x1;this[_0x5403('0x2b')]=_0x25c32c['dialPredictiveOptimization']||'dropRate';this[_0x5403('0x2c')]=_0x25c32c['dialPredictiveOptimizationPercentage']||0.03;this['dialPredictiveInterval']=_0x25c32c[_0x5403('0x2d')]||0x258;this[_0x5403('0x2e')]=_0x25c32c['dialOriginateCallerIdName']||'anonymous';this[_0x5403('0x2f')]=_0x25c32c[_0x5403('0x2f')]||_0x5403('0x30');this[_0x5403('0x31')]=_0x25c32c[_0x5403('0x31')]||0x1e;this[_0x5403('0x32')]=_0x25c32c[_0x5403('0x32')]||_0x5403('0x33');this[_0x5403('0x34')]=_0x25c32c[_0x5403('0x34')]||0x3;this['dialQueueProject']=_0x25c32c[_0x5403('0x35')]||undefined;this[_0x5403('0x36')]=_0x25c32c[_0x5403('0x36')]||0x3;this[_0x5403('0x37')]=_0x25c32c[_0x5403('0x37')]||0x96;this[_0x5403('0x38')]=_0x25c32c[_0x5403('0x38')]||0x3;this[_0x5403('0x39')]=_0x25c32c['dialBusyRetryFrequency']||0x96;this['dialNoAnswerMaxRetry']=_0x25c32c[_0x5403('0x3a')]||0x3;this[_0x5403('0x3b')]=_0x25c32c[_0x5403('0x3b')]||0x96;this[_0x5403('0x3c')]=_0x25c32c[_0x5403('0x3c')]||0x3;this[_0x5403('0x3d')]=_0x25c32c['dialNoSuchNumberRetryFrequency']||0x96;this[_0x5403('0x3e')]=_0x25c32c[_0x5403('0x3e')]||0x3;this[_0x5403('0x3f')]=_0x25c32c[_0x5403('0x3f')]||0x96;this[_0x5403('0x40')]=_0x25c32c[_0x5403('0x40')]||0x3;this[_0x5403('0x41')]=_0x25c32c['dialAbandonedRetryFrequency']||0x96;this['dialMachineMaxRetry']=_0x25c32c['dialMachineMaxRetry']||0x3;this[_0x5403('0x42')]=_0x25c32c[_0x5403('0x42')]||0x96;this['dialAgentRejectMaxRetry']=_0x25c32c[_0x5403('0x43')]||0x3;this[_0x5403('0x44')]=_0x25c32c['dialAgentRejectRetryFrequency']||0x96;this[_0x5403('0x45')]=_0x25c32c[_0x5403('0x45')]||0x3;this[_0x5403('0x46')]=_0x25c32c[_0x5403('0x46')]||0x4;this['Trunk']=_0x25c32c[_0x5403('0x47')]?_0x25c32c[_0x5403('0x47')]:undefined;this[_0x5403('0x48')]=_0x25c32c[_0x5403('0x48')]?_0x25c32c[_0x5403('0x48')]:undefined;this[_0x5403('0x49')]=_0x25c32c['dialPrefix']||undefined;this[_0x5403('0x4a')]=_0x25c32c[_0x5403('0x4a')]?_0x25c32c[_0x5403('0x4a')]:undefined;this[_0x5403('0x4b')]=_0x25c32c['dialOrderByScheduledAt']||_0x5403('0x4c');this[_0x5403('0x4d')]=_0x25c32c[_0x5403('0x4d')]||undefined;this[_0x5403('0x4e')]=_0x25c32c[_0x5403('0x4e')]||undefined;this[_0x5403('0x4f')]=strategy[_0x25c32c['strategy']];this[_0x5403('0x50')]=!![];this[_0x5403('0x51')]=_0x25c32c[_0x5403('0x51')]||![];this[_0x5403('0x52')]=_0x25c32c[_0x5403('0x52')];this[_0x5403('0x53')]=_0x25c32c['dialAMDGreeting'];this[_0x5403('0x54')]=_0x25c32c[_0x5403('0x54')];this[_0x5403('0x55')]=_0x25c32c[_0x5403('0x55')];this[_0x5403('0x56')]=_0x25c32c['dialAMDMinWordLength'];this[_0x5403('0x57')]=_0x25c32c[_0x5403('0x57')];this['dialAMDMaximumNumberOfWords']=_0x25c32c['dialAMDMaximumNumberOfWords'];this[_0x5403('0x58')]=_0x25c32c[_0x5403('0x58')];this[_0x5403('0x59')]=_0x25c32c[_0x5403('0x59')];this[_0x5403('0x5a')]=0x0;this[_0x5403('0x5b')]=0x0;this[_0x5403('0x5c')]=_0x25c32c[_0x5403('0x5c')];this[_0x5403('0x5d')]=0x0;this[_0x5403('0x5e')]=0x0;this[_0x5403('0x5f')]=0x0;this[_0x5403('0x60')]=0x0;this[_0x5403('0x61')]=0x0;this['outboundNoSuchCallsDay']=0x0;this[_0x5403('0x62')]=0x0;this[_0x5403('0x63')]=0x0;this[_0x5403('0x64')]=0x0;this[_0x5403('0x65')]=0x0;this[_0x5403('0x66')]=0x0;this['outboundDropCallsDayACS']=0x0;this[_0x5403('0x67')]=0x0;this[_0x5403('0x68')]=0x0;this['startProgressive']=undefined;this[_0x5403('0x69')]=undefined;this['handlePredictive']=undefined;this[_0x5403('0x6a')]=1.05;this['predictiveIntervalTotalCalls']=0x0;this[_0x5403('0x6b')]=0x0;this[_0x5403('0x6c')]=0x0;this[_0x5403('0x6d')]=0x0;this[_0x5403('0x6e')]=0x0;this[_0x5403('0x6f')]=0x0;this[_0x5403('0x70')]=0x0;this[_0x5403('0x71')]=0x0;this[_0x5403('0x72')]=_0x25c32c['dialPredictiveIntervalMaxThreshold']||0x14;this[_0x5403('0x73')]=_0x25c32c[_0x5403('0x74')]||0xa;this['predictiveIntervalErlangCalls']=0x0;this[_0x5403('0x75')]=0x0;this[_0x5403('0x76')]=0x1;this['erlangCalls']=0x0;this[_0x5403('0x77')]=0x0;this['erlangAbandonmentRate']=0x0;this[_0x5403('0x78')]=0x0;this[_0x5403('0x79')]=_0x25c32c[_0x5403('0x79')]||0x1e;this[_0x5403('0x7a')]=_0x25c32c[_0x5403('0x7a')]||![];this[_0x5403('0x7b')]=!!_0x25c32c['dialPreviewAutoRecallMe']||![];this['dialPreviewRecallmeReminder']=!!_0x25c32c['dialPreviewRecallmeReminder']||![];this[_0x5403('0x7c')]=_0x25c32c[_0x5403('0x7c')]||undefined;this[_0x5403('0x7d')]=_0x25c32c[_0x5403('0x7d')]||![];this['dialAgiAfterHangupAgent']=_0x25c32c[_0x5403('0x7e')]||![];this[_0x5403('0xa')]=monitorFormat[_0x25c32c['monitor_format']]?monitorFormat[_0x25c32c['monitor_format']]:undefined;this[_0x5403('0x7f')]=_0x25c32c[_0x5403('0x7f')]||![];this[_0x5403('0x80')]=_0x25c32c['mandatoryDispositionPause']?_0x25c32c['mandatoryDispositionPause']:undefined;this[_0x5403('0x81')]=![];}module[_0x5403('0x82')]=VoiceQueue;
\ No newline at end of file
index ba5158d..df13483 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x37a7=['active','createReport','inUse','loggedin','callers','length','SIP/','online','incall','includes','status','booked','keys','dialer','exten','xcally-motion-preview','prototype','some','compareToOutboundQueue','outboundReCallsDay','preview','exports','available','loggedIn','talking','waiting','loggedInDb','originated','outboundAbandonedCallsDay','outboundAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','pTalking','sumBillable','sumDuration','total','name','strategy','abandoned','answered','busy','invalid','onHold','notInUse','paused','ringing','ringInUse','sumHoldTime','type','unavailable','unknown','unmanaged','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','temp','outboundAnswerAgiCallsDay','outboundBlacklistCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundOriginateFailureCallsDay','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startPredictive','startProgressive','message','statusMessage','Trunk'];(function(_0x233dc0,_0x2866ad){var _0x1fc160=function(_0x51e38b){while(--_0x51e38b){_0x233dc0['push'](_0x233dc0['shift']());}};_0x1fc160(++_0x2866ad);}(_0x37a7,0x6f));var _0x737a=function(_0x112216,_0x124b35){_0x112216=_0x112216-0x0;var _0x3db2f5=_0x37a7[_0x112216];return _0x3db2f5;};'use strict';var INBOUND_COUNTERS=[_0x737a('0x0'),_0x737a('0x1'),'loggedInDb','paused','ringing',_0x737a('0x2'),_0x737a('0x3')];var OUTBOUND_COUNTERS=['available','answered','inUse',_0x737a('0x1'),_0x737a('0x4'),_0x737a('0x5'),_0x737a('0x6'),_0x737a('0x7'),'outboundBlacklistCallsDay',_0x737a('0x8'),_0x737a('0x9'),_0x737a('0xa'),_0x737a('0xb'),'outboundReCallsDay',_0x737a('0xc'),_0x737a('0xd'),'paused',_0x737a('0xe'),_0x737a('0x2'),_0x737a('0xf'),_0x737a('0x10'),_0x737a('0x11'),_0x737a('0x3')];function VoiceQueueSummary(_0x2b34f2){this['id']=_0x2b34f2['id'];this['name']=_0x2b34f2[_0x737a('0x12')];this[_0x737a('0x13')]=_0x2b34f2[_0x737a('0x13')];this[_0x737a('0x14')]=_0x2b34f2[_0x737a('0x14')]||0x0;this[_0x737a('0x15')]=_0x2b34f2[_0x737a('0x15')]||0x0;this[_0x737a('0x0')]=_0x2b34f2['available']||0x0;this[_0x737a('0x16')]=_0x2b34f2[_0x737a('0x16')]||0x0;this['inUse']=_0x2b34f2['inUse']||0x0;this[_0x737a('0x17')]=_0x2b34f2[_0x737a('0x17')]||0x0;this[_0x737a('0x1')]=_0x2b34f2[_0x737a('0x1')]||0x0;this[_0x737a('0x4')]=_0x2b34f2[_0x737a('0x4')]||0x0;this['onHold']=_0x2b34f2[_0x737a('0x18')]||0x0;this['notInUse']=_0x2b34f2[_0x737a('0x19')]||0x0;this[_0x737a('0x1a')]=_0x2b34f2['paused']||0x0;this[_0x737a('0x1b')]=_0x2b34f2['ringing']||0x0;this['ringInUse']=_0x2b34f2[_0x737a('0x1c')];this[_0x737a('0xf')]=_0x2b34f2['sumBillable'];this[_0x737a('0x10')]=_0x2b34f2[_0x737a('0x10')];this[_0x737a('0x1d')]=_0x2b34f2['sumHoldTime']||0x0;this[_0x737a('0x2')]=_0x2b34f2['talking']||0x0;this[_0x737a('0x11')]=_0x2b34f2['total']||0x0;this[_0x737a('0x1e')]=_0x2b34f2[_0x737a('0x1e')];this[_0x737a('0x1f')]=_0x2b34f2[_0x737a('0x1f')]||0x0;this[_0x737a('0x20')]=_0x2b34f2[_0x737a('0x20')]||0x0;this[_0x737a('0x21')]=_0x2b34f2[_0x737a('0x21')]||0x0;this['waiting']=_0x2b34f2['waiting']||0x0;if(_0x2b34f2[_0x737a('0x1e')]==='outbound'){this[_0x737a('0xe')]=_0x2b34f2['pTalking']||0x0;this[_0x737a('0x22')]=_0x2b34f2[_0x737a('0x22')];this[_0x737a('0x23')]=_0x2b34f2[_0x737a('0x23')];this[_0x737a('0x24')]=_0x2b34f2['dialOriginateCallerIdName'];this[_0x737a('0x25')]=_0x2b34f2[_0x737a('0x25')];this[_0x737a('0x26')]=_0x2b34f2[_0x737a('0x26')];this[_0x737a('0x27')]=_0x2b34f2[_0x737a('0x27')];this[_0x737a('0x28')]=_0x2b34f2['temp'];this[_0x737a('0x29')]=_0x2b34f2[_0x737a('0x29')];this[_0x737a('0x7')]=_0x2b34f2[_0x737a('0x7')];this[_0x737a('0x2a')]=_0x2b34f2['outboundBlacklistCallsDay'];this[_0x737a('0x8')]=_0x2b34f2[_0x737a('0x8')];this[_0x737a('0x9')]=_0x2b34f2[_0x737a('0x9')];this['outboundDropCallsDayACS']=_0x2b34f2[_0x737a('0x2b')];this[_0x737a('0x2c')]=_0x2b34f2[_0x737a('0x2c')];this[_0x737a('0x2d')]=_0x2b34f2[_0x737a('0x2d')];this[_0x737a('0xa')]=_0x2b34f2[_0x737a('0xa')];this[_0x737a('0xb')]=_0x2b34f2[_0x737a('0xb')];this[_0x737a('0x2e')]=_0x2b34f2['outboundOriginateFailureCallsDay'];this['outboundReCallsDay']=_0x2b34f2['outboundReCallsDay'];this[_0x737a('0xc')]=_0x2b34f2['outboundRejectCallsDay'];this['outboundUnknownCallsDay']=_0x2b34f2['outboundUnknownCallsDay'];this['predictiveIntervalAnsweredCalls']=_0x2b34f2['predictiveIntervalAnsweredCalls'];this[_0x737a('0x2f')]=_0x2b34f2['predictiveIntervalAvgHoldtime'];this['predictiveIntervalAvgTalktime']=_0x2b34f2[_0x737a('0x30')];this[_0x737a('0x31')]=_0x2b34f2[_0x737a('0x31')];this[_0x737a('0x32')]=_0x2b34f2[_0x737a('0x32')];this[_0x737a('0x33')]=_0x2b34f2[_0x737a('0x33')];this[_0x737a('0x34')]=_0x2b34f2[_0x737a('0x34')];this[_0x737a('0x35')]=_0x2b34f2[_0x737a('0x35')];this[_0x737a('0x36')]=_0x2b34f2[_0x737a('0x36')];this[_0x737a('0x37')]=_0x2b34f2[_0x737a('0x37')];this[_0x737a('0x38')]=_0x2b34f2['predictiveIntervalAvailable'];this[_0x737a('0x39')]=_0x2b34f2[_0x737a('0x39')];this[_0x737a('0x5')]=_0x2b34f2[_0x737a('0x5')];this[_0x737a('0x3a')]=_0x2b34f2['erlangCalls'];this[_0x737a('0x3b')]=_0x2b34f2[_0x737a('0x3b')];this[_0x737a('0x3c')]=_0x2b34f2['erlangAbandonmentRate'];this['erlangBusyFactor']=_0x2b34f2[_0x737a('0x3d')];this[_0x737a('0x3e')]=_0x2b34f2['startPredictive'];this[_0x737a('0x3f')]=_0x2b34f2[_0x737a('0x3f')];this[_0x737a('0x40')]=_0x2b34f2[_0x737a('0x40')];this[_0x737a('0x41')]=_0x2b34f2['statusMessage'];}if(_0x2b34f2[_0x737a('0x42')]){this[_0x737a('0x42')]={'id':_0x2b34f2[_0x737a('0x42')]['id'],'name':_0x2b34f2[_0x737a('0x42')]['name'],'active':_0x2b34f2[_0x737a('0x42')][_0x737a('0x43')],'callerid':_0x2b34f2[_0x737a('0x42')]['callerid']};}}VoiceQueueSummary['prototype'][_0x737a('0x44')]=function(_0x43a939,_0x344131,_0x44ac55,_0x4aa61e){this[_0x737a('0x4')]=0x0;this[_0x737a('0x2')]=0x0;this[_0x737a('0x1a')]=0x0;this[_0x737a('0x20')]=0x0;this[_0x737a('0x19')]=0x0;this[_0x737a('0x45')]=0x0;this['busy']=0x0;this[_0x737a('0x17')]=0x0;this['unavailable']=0x0;this['ringing']=0x0;this[_0x737a('0x1c')]=0x0;this[_0x737a('0x18')]=0x0;if(_0x44ac55){if(_0x44ac55[_0x737a('0x0')]){this[_0x737a('0x0')]=Number(_0x44ac55['available']);}if(_0x44ac55['loggedin']){this[_0x737a('0x1')]=Number(_0x44ac55[_0x737a('0x46')]);}if(_0x44ac55[_0x737a('0x47')]){this['waiting']=Number(_0x44ac55[_0x737a('0x47')]);}}for(var _0x467dc2=0x0;_0x467dc2<_0x43a939[_0x737a('0x48')];_0x467dc2++){var _0x1dc933=_0x344131[_0x737a('0x49')+_0x43a939[_0x467dc2][_0x737a('0x12')]];if(_0x1dc933&&_0x1dc933[_0x737a('0x4a')]){this[_0x737a('0x4')]+=0x1;}if(_0x43a939[_0x467dc2][_0x737a('0x4b')]==='1'){this[_0x737a('0x2')]+=0x1;}if(_0x43a939[_0x467dc2][_0x737a('0x1a')]==='1'&&!['2','7','8'][_0x737a('0x4c')](_0x43a939[_0x467dc2][_0x737a('0x4d')])){this[_0x737a('0x1a')]+=0x1;}switch(_0x43a939[_0x467dc2][_0x737a('0x4d')]){case'0':this[_0x737a('0x20')]+=0x1;break;case'1':this[_0x737a('0x19')]+=0x1;break;case'2':this[_0x737a('0x45')]+=0x1;break;case'3':this['busy']+=0x1;break;case'4':this[_0x737a('0x17')]+=0x1;break;case'5':this[_0x737a('0x1f')]+=0x1;break;case'6':this[_0x737a('0x1b')]+=0x1;break;case'7':this[_0x737a('0x1c')]+=0x1;break;case'8':this['onHold']+=0x1;break;}}if(this[_0x737a('0x23')]===_0x737a('0x4e')){var _0x9a5e92=Object[_0x737a('0x4f')](_0x4aa61e);for(var _0x3f9b66=0x0;_0x3f9b66<_0x9a5e92[_0x737a('0x48')];_0x3f9b66++){var _0x456305=_0x9a5e92[_0x3f9b66];var _0x22b7b3=_0x4aa61e[_0x456305];if(_0x22b7b3['queue']===this[_0x737a('0x12')]&&_0x22b7b3[_0x737a('0x1e')]===_0x737a('0x50')&&_0x22b7b3[_0x737a('0x51')]===_0x737a('0x52')){this['talking']+=0x1;}}if(this[_0x737a('0x2')]>this[_0x737a('0x45')]){this[_0x737a('0x2')]=this[_0x737a('0x45')];}this[_0x737a('0xe')]=0x0;}return this;};VoiceQueueSummary[_0x737a('0x53')]['compareToInboundQueue']=function(_0x1c94ce){var _0x5b5f60=![];if(_0x1c94ce){_0x5b5f60=INBOUND_COUNTERS[_0x737a('0x54')](function(_0x3a0a08){return this[_0x3a0a08]!==_0x1c94ce[_0x3a0a08];},this);}return _0x5b5f60;};VoiceQueueSummary[_0x737a('0x53')][_0x737a('0x55')]=function(_0xd85fdc){var _0x598664=![];var _0x82bdb8=![];var _0x138ec7=![];if(_0xd85fdc){_0x598664=this['dialMethod']!==_0xd85fdc[_0x737a('0x23')]||this['dialActive']!==_0xd85fdc['dialActive']||this[_0x737a('0x40')]!==_0xd85fdc[_0x737a('0x40')]||this[_0x737a('0x41')]!==_0xd85fdc[_0x737a('0x41')];_0x82bdb8=OUTBOUND_COUNTERS['some'](function(_0x1aca85){return this[_0x1aca85]!==_0xd85fdc[_0x1aca85];},this);if(this['Trunk']&&_0xd85fdc[_0x737a('0x42')]){_0x138ec7=this[_0x737a('0x42')][_0x737a('0x12')]!==_0xd85fdc['Trunk'][_0x737a('0x12')]||this[_0x737a('0x42')][_0x737a('0x43')]!==_0xd85fdc[_0x737a('0x42')]['active'];}}return _0x598664||_0x82bdb8||_0x138ec7;};VoiceQueueSummary[_0x737a('0x53')]['updateReportFromOutboundQueue']=function(_0x403339){this[_0x737a('0x15')]=_0x403339[_0x737a('0x15')];this['message']=_0x403339[_0x737a('0x40')];this[_0x737a('0x41')]=_0x403339[_0x737a('0x41')];this[_0x737a('0x5')]=_0x403339[_0x737a('0x5')];this[_0x737a('0x6')]=_0x403339['outboundAbandonedCallsDay'];this[_0x737a('0x7')]=_0x403339[_0x737a('0x7')];this['outboundBlacklistCallsDay']=_0x403339[_0x737a('0x2a')];this[_0x737a('0x8')]=_0x403339['outboundBusyCallsDay'];this[_0x737a('0x9')]=_0x403339[_0x737a('0x9')];this[_0x737a('0xa')]=_0x403339[_0x737a('0xa')];this[_0x737a('0xb')]=_0x403339[_0x737a('0xb')];this['outboundReCallsDay']=_0x403339[_0x737a('0x56')];this[_0x737a('0xc')]=_0x403339[_0x737a('0xc')];this[_0x737a('0xd')]=_0x403339[_0x737a('0xd')];this[_0x737a('0xf')]=_0x403339['sumBillable'];this[_0x737a('0x10')]=_0x403339[_0x737a('0x10')];this['total']=_0x403339['total'];if(this[_0x737a('0x23')]===_0x737a('0x57')){this['pTalking']=_0x403339[_0x737a('0xe')];}};module[_0x737a('0x58')]=VoiceQueueSummary;
\ No newline at end of file
+var _0x14f5=['ringing','talking','available','answered','loggedInDb','originated','outboundAbandonedCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundNoAnswerCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','pTalking','sumBillable','name','strategy','abandoned','busy','inUse','invalid','onHold','notInUse','sumDuration','sumHoldTime','total','type','unavailable','waiting','outbound','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','temp','outboundAnswerAgiCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundOriginateFailureCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startPredictive','startProgressive','message','statusMessage','Trunk','active','callerid','prototype','unknown','ringInUse','loggedin','callers','SIP/','online','status','booked','keys','length','dialer','exten','xcally-motion-preview','compareToInboundQueue','some','updateReportFromOutboundQueue','outboundNoSuchCallsDay','preview','exports','loggedIn','paused'];(function(_0x14ea65,_0x4eba12){var _0xe601d=function(_0x491688){while(--_0x491688){_0x14ea65['push'](_0x14ea65['shift']());}};_0xe601d(++_0x4eba12);}(_0x14f5,0xae));var _0x514f=function(_0x1b76a8,_0x4ec861){_0x1b76a8=_0x1b76a8-0x0;var _0x1c6904=_0x14f5[_0x1b76a8];return _0x1c6904;};'use strict';var INBOUND_COUNTERS=['available',_0x514f('0x0'),'loggedInDb',_0x514f('0x1'),_0x514f('0x2'),_0x514f('0x3'),'waiting'];var OUTBOUND_COUNTERS=[_0x514f('0x4'),_0x514f('0x5'),'inUse',_0x514f('0x0'),_0x514f('0x6'),_0x514f('0x7'),_0x514f('0x8'),_0x514f('0x9'),_0x514f('0xa'),_0x514f('0xb'),'outboundCongestionCallsDay',_0x514f('0xc'),'outboundNoSuchCallsDay',_0x514f('0xd'),_0x514f('0xe'),_0x514f('0xf'),_0x514f('0x1'),_0x514f('0x10'),_0x514f('0x3'),_0x514f('0x11'),'sumDuration','total','waiting'];function VoiceQueueSummary(_0x1d3d2b){this['id']=_0x1d3d2b['id'];this[_0x514f('0x12')]=_0x1d3d2b[_0x514f('0x12')];this[_0x514f('0x13')]=_0x1d3d2b[_0x514f('0x13')];this[_0x514f('0x14')]=_0x1d3d2b[_0x514f('0x14')]||0x0;this[_0x514f('0x5')]=_0x1d3d2b[_0x514f('0x5')]||0x0;this[_0x514f('0x4')]=_0x1d3d2b[_0x514f('0x4')]||0x0;this[_0x514f('0x15')]=_0x1d3d2b[_0x514f('0x15')]||0x0;this[_0x514f('0x16')]=_0x1d3d2b[_0x514f('0x16')]||0x0;this['invalid']=_0x1d3d2b[_0x514f('0x17')]||0x0;this[_0x514f('0x0')]=_0x1d3d2b['loggedIn']||0x0;this[_0x514f('0x6')]=_0x1d3d2b['loggedInDb']||0x0;this[_0x514f('0x18')]=_0x1d3d2b[_0x514f('0x18')]||0x0;this[_0x514f('0x19')]=_0x1d3d2b['notInUse']||0x0;this[_0x514f('0x1')]=_0x1d3d2b[_0x514f('0x1')]||0x0;this[_0x514f('0x2')]=_0x1d3d2b[_0x514f('0x2')]||0x0;this['ringInUse']=_0x1d3d2b['ringInUse'];this[_0x514f('0x11')]=_0x1d3d2b[_0x514f('0x11')];this[_0x514f('0x1a')]=_0x1d3d2b['sumDuration'];this[_0x514f('0x1b')]=_0x1d3d2b[_0x514f('0x1b')]||0x0;this['talking']=_0x1d3d2b[_0x514f('0x3')]||0x0;this[_0x514f('0x1c')]=_0x1d3d2b['total']||0x0;this[_0x514f('0x1d')]=_0x1d3d2b[_0x514f('0x1d')];this[_0x514f('0x1e')]=_0x1d3d2b[_0x514f('0x1e')]||0x0;this['unknown']=_0x1d3d2b['unknown']||0x0;this['unmanaged']=_0x1d3d2b['unmanaged']||0x0;this[_0x514f('0x1f')]=_0x1d3d2b[_0x514f('0x1f')]||0x0;if(_0x1d3d2b[_0x514f('0x1d')]===_0x514f('0x20')){this[_0x514f('0x10')]=_0x1d3d2b[_0x514f('0x10')]||0x0;this[_0x514f('0x21')]=_0x1d3d2b[_0x514f('0x21')];this[_0x514f('0x22')]=_0x1d3d2b['dialMethod'];this[_0x514f('0x23')]=_0x1d3d2b[_0x514f('0x23')];this[_0x514f('0x24')]=_0x1d3d2b[_0x514f('0x24')];this[_0x514f('0x25')]=_0x1d3d2b[_0x514f('0x25')];this[_0x514f('0x26')]=_0x1d3d2b[_0x514f('0x26')];this[_0x514f('0x27')]=_0x1d3d2b['temp'];this[_0x514f('0x28')]=_0x1d3d2b['outboundAnswerAgiCallsDay'];this[_0x514f('0x9')]=_0x1d3d2b['outboundAnswerCallsDay'];this[_0x514f('0xa')]=_0x1d3d2b[_0x514f('0xa')];this[_0x514f('0xb')]=_0x1d3d2b[_0x514f('0xb')];this[_0x514f('0x29')]=_0x1d3d2b['outboundCongestionCallsDay'];this['outboundDropCallsDayACS']=_0x1d3d2b[_0x514f('0x2a')];this['outboundDropCallsDayCallersExit']=_0x1d3d2b[_0x514f('0x2b')];this[_0x514f('0x2c')]=_0x1d3d2b[_0x514f('0x2c')];this[_0x514f('0xc')]=_0x1d3d2b[_0x514f('0xc')];this['outboundNoSuchCallsDay']=_0x1d3d2b['outboundNoSuchCallsDay'];this['outboundOriginateFailureCallsDay']=_0x1d3d2b[_0x514f('0x2d')];this[_0x514f('0xd')]=_0x1d3d2b[_0x514f('0xd')];this[_0x514f('0xe')]=_0x1d3d2b[_0x514f('0xe')];this[_0x514f('0xf')]=_0x1d3d2b[_0x514f('0xf')];this[_0x514f('0x2e')]=_0x1d3d2b[_0x514f('0x2e')];this[_0x514f('0x2f')]=_0x1d3d2b['predictiveIntervalAvgHoldtime'];this['predictiveIntervalAvgTalktime']=_0x1d3d2b['predictiveIntervalAvgTalktime'];this[_0x514f('0x30')]=_0x1d3d2b['predictiveIntervalDroppedCallsCallersExit'];this[_0x514f('0x31')]=_0x1d3d2b['predictiveIntervalDroppedCallsTimeout'];this[_0x514f('0x32')]=_0x1d3d2b['predictiveIntervalErlangCalls'];this['predictiveIntervalErlangCallsDroppedCalls']=_0x1d3d2b[_0x514f('0x33')];this['predictiveIntervalHitRate']=_0x1d3d2b[_0x514f('0x34')];this[_0x514f('0x35')]=_0x1d3d2b[_0x514f('0x35')];this[_0x514f('0x36')]=_0x1d3d2b[_0x514f('0x36')];this['predictiveIntervalAvailable']=_0x1d3d2b[_0x514f('0x37')];this[_0x514f('0x38')]=_0x1d3d2b[_0x514f('0x38')];this[_0x514f('0x7')]=_0x1d3d2b['originated'];this[_0x514f('0x39')]=_0x1d3d2b[_0x514f('0x39')];this[_0x514f('0x3a')]=_0x1d3d2b[_0x514f('0x3a')];this['erlangAbandonmentRate']=_0x1d3d2b[_0x514f('0x3b')];this[_0x514f('0x3c')]=_0x1d3d2b[_0x514f('0x3c')];this[_0x514f('0x3d')]=_0x1d3d2b['startPredictive'];this[_0x514f('0x3e')]=_0x1d3d2b['startProgressive'];this[_0x514f('0x3f')]=_0x1d3d2b[_0x514f('0x3f')];this[_0x514f('0x40')]=_0x1d3d2b['statusMessage'];}if(_0x1d3d2b['Trunk']){this[_0x514f('0x41')]={'id':_0x1d3d2b['Trunk']['id'],'name':_0x1d3d2b[_0x514f('0x41')][_0x514f('0x12')],'active':_0x1d3d2b[_0x514f('0x41')][_0x514f('0x42')],'callerid':_0x1d3d2b[_0x514f('0x41')][_0x514f('0x43')]};}}VoiceQueueSummary[_0x514f('0x44')]['createReport']=function(_0x48914e,_0x1c2fdc,_0x4fd77d,_0x12700){this[_0x514f('0x6')]=0x0;this[_0x514f('0x3')]=0x0;this[_0x514f('0x1')]=0x0;this[_0x514f('0x45')]=0x0;this['notInUse']=0x0;this[_0x514f('0x16')]=0x0;this['busy']=0x0;this['invalid']=0x0;this[_0x514f('0x1e')]=0x0;this[_0x514f('0x2')]=0x0;this[_0x514f('0x46')]=0x0;this[_0x514f('0x18')]=0x0;if(_0x4fd77d){if(_0x4fd77d[_0x514f('0x4')]){this['available']=Number(_0x4fd77d['available']);}if(_0x4fd77d[_0x514f('0x47')]){this[_0x514f('0x0')]=Number(_0x4fd77d[_0x514f('0x47')]);}if(_0x4fd77d[_0x514f('0x48')]){this[_0x514f('0x1f')]=Number(_0x4fd77d['callers']);}}for(var _0x41b5d8=0x0;_0x41b5d8<_0x48914e['length'];_0x41b5d8++){var _0x526ffe=_0x1c2fdc[_0x514f('0x49')+_0x48914e[_0x41b5d8]['name']];if(_0x526ffe&&_0x526ffe[_0x514f('0x4a')]){this['loggedInDb']+=0x1;}if(_0x48914e[_0x41b5d8]['incall']==='1'){this[_0x514f('0x3')]+=0x1;}if(_0x48914e[_0x41b5d8][_0x514f('0x1')]==='1'&&!['2','7','8']['includes'](_0x48914e[_0x41b5d8]['status'])){this[_0x514f('0x1')]+=0x1;}switch(_0x48914e[_0x41b5d8][_0x514f('0x4b')]){case'0':this[_0x514f('0x45')]+=0x1;break;case'1':this[_0x514f('0x19')]+=0x1;break;case'2':this[_0x514f('0x16')]+=0x1;break;case'3':this[_0x514f('0x15')]+=0x1;break;case'4':this[_0x514f('0x17')]+=0x1;break;case'5':this[_0x514f('0x1e')]+=0x1;break;case'6':this[_0x514f('0x2')]+=0x1;break;case'7':this['ringInUse']+=0x1;break;case'8':this[_0x514f('0x18')]+=0x1;break;}}if(this[_0x514f('0x22')]===_0x514f('0x4c')){var _0x2e9263=Object[_0x514f('0x4d')](_0x12700);for(var _0x2e6971=0x0;_0x2e6971<_0x2e9263[_0x514f('0x4e')];_0x2e6971++){var _0x4e75ee=_0x2e9263[_0x2e6971];var _0x95ee75=_0x12700[_0x4e75ee];if(_0x95ee75['queue']===this[_0x514f('0x12')]&&_0x95ee75[_0x514f('0x1d')]===_0x514f('0x4f')&&_0x95ee75[_0x514f('0x50')]===_0x514f('0x51')){this['talking']+=0x1;}}if(this['talking']>this[_0x514f('0x16')]){this['talking']=this[_0x514f('0x16')];}this['pTalking']=0x0;}return this;};VoiceQueueSummary[_0x514f('0x44')][_0x514f('0x52')]=function(_0x42be9b){var _0x4f35ba=![];if(_0x42be9b){_0x4f35ba=INBOUND_COUNTERS[_0x514f('0x53')](function(_0x41cb02){return this[_0x41cb02]!==_0x42be9b[_0x41cb02];},this);}return _0x4f35ba;};VoiceQueueSummary[_0x514f('0x44')]['compareToOutboundQueue']=function(_0x222f94){var _0x46969a=![];var _0x589d19=![];var _0x3fd3f2=![];if(_0x222f94){_0x46969a=this['dialMethod']!==_0x222f94[_0x514f('0x22')]||this[_0x514f('0x21')]!==_0x222f94[_0x514f('0x21')]||this['message']!==_0x222f94['message']||this[_0x514f('0x40')]!==_0x222f94[_0x514f('0x40')];_0x589d19=OUTBOUND_COUNTERS[_0x514f('0x53')](function(_0x1053b8){return this[_0x1053b8]!==_0x222f94[_0x1053b8];},this);if(this[_0x514f('0x41')]&&_0x222f94[_0x514f('0x41')]){_0x3fd3f2=this[_0x514f('0x41')][_0x514f('0x12')]!==_0x222f94['Trunk'][_0x514f('0x12')]||this[_0x514f('0x41')][_0x514f('0x42')]!==_0x222f94[_0x514f('0x41')]['active'];}}return _0x46969a||_0x589d19||_0x3fd3f2;};VoiceQueueSummary[_0x514f('0x44')][_0x514f('0x54')]=function(_0x34cb90){this['answered']=_0x34cb90[_0x514f('0x5')];this[_0x514f('0x3f')]=_0x34cb90['message'];this[_0x514f('0x40')]=_0x34cb90[_0x514f('0x40')];this[_0x514f('0x7')]=_0x34cb90[_0x514f('0x7')];this[_0x514f('0x8')]=_0x34cb90[_0x514f('0x8')];this[_0x514f('0x9')]=_0x34cb90[_0x514f('0x9')];this['outboundBlacklistCallsDay']=_0x34cb90[_0x514f('0xa')];this['outboundBusyCallsDay']=_0x34cb90['outboundBusyCallsDay'];this[_0x514f('0x29')]=_0x34cb90['outboundCongestionCallsDay'];this[_0x514f('0xc')]=_0x34cb90[_0x514f('0xc')];this[_0x514f('0x55')]=_0x34cb90['outboundNoSuchCallsDay'];this['outboundReCallsDay']=_0x34cb90[_0x514f('0xd')];this['outboundRejectCallsDay']=_0x34cb90[_0x514f('0xe')];this[_0x514f('0xf')]=_0x34cb90[_0x514f('0xf')];this[_0x514f('0x11')]=_0x34cb90['sumBillable'];this['sumDuration']=_0x34cb90[_0x514f('0x1a')];this[_0x514f('0x1c')]=_0x34cb90[_0x514f('0x1c')];if(this[_0x514f('0x22')]===_0x514f('0x56')){this[_0x514f('0x10')]=_0x34cb90[_0x514f('0x10')];}};module[_0x514f('0x57')]=VoiceQueueSummary;
\ No newline at end of file
index f8e7873..4dabb5c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5df4=['remoteUri','serverUrl','Configurations','exports','name','username','accessKey'];(function(_0x48e89c,_0x421d23){var _0x1e0224=function(_0x253c01){while(--_0x253c01){_0x48e89c['push'](_0x48e89c['shift']());}};_0x1e0224(++_0x421d23);}(_0x5df4,0x1e0));var _0x45df=function(_0x2dbff1,_0x4699b0){_0x2dbff1=_0x2dbff1-0x0;var _0x5445d9=_0x5df4[_0x2dbff1];return _0x5445d9;};'use strict';function VtigerAccount(_0x51d55e){this['id']=_0x51d55e['id']||0x0;this[_0x45df('0x0')]=_0x51d55e[_0x45df('0x0')]||'';this[_0x45df('0x1')]=_0x51d55e[_0x45df('0x1')]||'';this[_0x45df('0x2')]=_0x51d55e['accessKey']||'';this['remoteUri']=_0x51d55e[_0x45df('0x3')]||'';this[_0x45df('0x4')]=_0x51d55e[_0x45df('0x4')]||'';this[_0x45df('0x5')]=_0x51d55e[_0x45df('0x5')]||{};}module[_0x45df('0x6')]=VtigerAccount;
\ No newline at end of file
+var _0x6088=['name','username','accessKey','remoteUri','serverUrl','Configurations','exports'];(function(_0xcf495a,_0x25c2c4){var _0x3714f6=function(_0x7f92b6){while(--_0x7f92b6){_0xcf495a['push'](_0xcf495a['shift']());}};_0x3714f6(++_0x25c2c4);}(_0x6088,0x188));var _0x8608=function(_0x239489,_0x3cdc0b){_0x239489=_0x239489-0x0;var _0x56fa8b=_0x6088[_0x239489];return _0x56fa8b;};'use strict';function VtigerAccount(_0x1a1910){this['id']=_0x1a1910['id']||0x0;this[_0x8608('0x0')]=_0x1a1910['name']||'';this['username']=_0x1a1910[_0x8608('0x1')]||'';this[_0x8608('0x2')]=_0x1a1910[_0x8608('0x2')]||'';this[_0x8608('0x3')]=_0x1a1910[_0x8608('0x3')]||'';this[_0x8608('0x4')]=_0x1a1910[_0x8608('0x4')]||'';this[_0x8608('0x5')]=_0x1a1910[_0x8608('0x5')]||{};}module[_0x8608('0x6')]=VtigerAccount;
\ No newline at end of file
index 1033c64..47f97be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x370f=['name','username','token','remoteUri','authType','type','integrationTab','serverUrl','Configurations','exports'];(function(_0x4690b6,_0x4a1dab){var _0x3632e8=function(_0x589935){while(--_0x589935){_0x4690b6['push'](_0x4690b6['shift']());}};_0x3632e8(++_0x4a1dab);}(_0x370f,0x19a));var _0xf370=function(_0x4d6bfd,_0x8d79ff){_0x4d6bfd=_0x4d6bfd-0x0;var _0x243a46=_0x370f[_0x4d6bfd];return _0x243a46;};'use strict';function ZendeskAccount(_0x4c7194){this['id']=_0x4c7194['id']||0x0;this['name']=_0x4c7194[_0xf370('0x0')]||'';this[_0xf370('0x1')]=_0x4c7194[_0xf370('0x1')]||'';this['password']=_0x4c7194['password']||'';this[_0xf370('0x2')]=_0x4c7194[_0xf370('0x2')]||'';this[_0xf370('0x3')]=_0x4c7194['remoteUri']||'';this[_0xf370('0x4')]=_0x4c7194[_0xf370('0x4')]||'';this[_0xf370('0x5')]=_0x4c7194[_0xf370('0x5')]||_0xf370('0x6');this[_0xf370('0x7')]=_0x4c7194[_0xf370('0x7')]||'';this[_0xf370('0x8')]=_0x4c7194[_0xf370('0x8')]||{};}module[_0xf370('0x9')]=ZendeskAccount;
\ No newline at end of file
+var _0x7782=['serverUrl','Configurations','name','username','password','token','remoteUri','authType','integrationTab'];(function(_0x125ff8,_0x41925f){var _0x2d9ef=function(_0x4ef34c){while(--_0x4ef34c){_0x125ff8['push'](_0x125ff8['shift']());}};_0x2d9ef(++_0x41925f);}(_0x7782,0x107));var _0x2778=function(_0xc194ce,_0x17e826){_0xc194ce=_0xc194ce-0x0;var _0x3df652=_0x7782[_0xc194ce];return _0x3df652;};'use strict';function ZendeskAccount(_0x1be49b){this['id']=_0x1be49b['id']||0x0;this[_0x2778('0x0')]=_0x1be49b[_0x2778('0x0')]||'';this[_0x2778('0x1')]=_0x1be49b[_0x2778('0x1')]||'';this['password']=_0x1be49b[_0x2778('0x2')]||'';this['token']=_0x1be49b[_0x2778('0x3')]||'';this[_0x2778('0x4')]=_0x1be49b[_0x2778('0x4')]||'';this['authType']=_0x1be49b[_0x2778('0x5')]||'';this['type']=_0x1be49b['type']||_0x2778('0x6');this['serverUrl']=_0x1be49b[_0x2778('0x7')]||'';this[_0x2778('0x8')]=_0x1be49b['Configurations']||{};}module['exports']=ZendeskAccount;
\ No newline at end of file
index 1e876e9..4831c57 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb342=['clientSecret','serverUrl','code','refreshToken','Configurations','name','description','host','zone'];(function(_0x167b2b,_0x5afa01){var _0x1048c6=function(_0x578b47){while(--_0x578b47){_0x167b2b['push'](_0x167b2b['shift']());}};_0x1048c6(++_0x5afa01);}(_0xb342,0x149));var _0x2b34=function(_0x260859,_0x3cfcff){_0x260859=_0x260859-0x0;var _0x4b77f8=_0xb342[_0x260859];return _0x4b77f8;};'use strict';function ZohoAccount(_0xbdd8fa){this['id']=_0xbdd8fa['id']||0x0;this['name']=_0xbdd8fa[_0x2b34('0x0')]||'';this[_0x2b34('0x1')]=_0xbdd8fa[_0x2b34('0x1')]||'';this[_0x2b34('0x2')]=_0xbdd8fa[_0x2b34('0x2')]||'';this[_0x2b34('0x3')]=_0xbdd8fa[_0x2b34('0x3')]||'';this['clientId']=_0xbdd8fa['clientId']||'';this['clientSecret']=_0xbdd8fa[_0x2b34('0x4')]||'';this[_0x2b34('0x5')]=_0xbdd8fa['serverUrl']||'';this[_0x2b34('0x6')]=_0xbdd8fa[_0x2b34('0x6')]||'';this[_0x2b34('0x7')]=_0xbdd8fa[_0x2b34('0x7')]||'';this['Configurations']=_0xbdd8fa[_0x2b34('0x8')]||{};}module['exports']=ZohoAccount;
\ No newline at end of file
+var _0x7a4c=['exports','name','description','host','zone','clientId','clientSecret','serverUrl','code','refreshToken','Configurations'];(function(_0x22be83,_0x12c153){var _0x51684b=function(_0x1d13ce){while(--_0x1d13ce){_0x22be83['push'](_0x22be83['shift']());}};_0x51684b(++_0x12c153);}(_0x7a4c,0x1ae));var _0xc7a4=function(_0xcd81b8,_0x18d9fd){_0xcd81b8=_0xcd81b8-0x0;var _0xc3ae18=_0x7a4c[_0xcd81b8];return _0xc3ae18;};'use strict';function ZohoAccount(_0x7237ed){this['id']=_0x7237ed['id']||0x0;this[_0xc7a4('0x0')]=_0x7237ed['name']||'';this[_0xc7a4('0x1')]=_0x7237ed[_0xc7a4('0x1')]||'';this[_0xc7a4('0x2')]=_0x7237ed['host']||'';this['zone']=_0x7237ed[_0xc7a4('0x3')]||'';this[_0xc7a4('0x4')]=_0x7237ed[_0xc7a4('0x4')]||'';this['clientSecret']=_0x7237ed[_0xc7a4('0x5')]||'';this['serverUrl']=_0x7237ed[_0xc7a4('0x6')]||'';this[_0xc7a4('0x7')]=_0x7237ed[_0xc7a4('0x7')]||'';this[_0xc7a4('0x8')]=_0x7237ed['refreshToken']||'';this[_0xc7a4('0x9')]=_0x7237ed[_0xc7a4('0x9')]||{};}module[_0xc7a4('0xa')]=ZohoAccount;
\ No newline at end of file
index 568b3d6..2b27fdc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x57ca=['name','type','campaigntype','dialAnswer','Agent','membername','format','SIP/%s','calleridname','phone','firstName','Contact','lastName','active','calleridnum','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countagentrejectretry','countmachineretry','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','originatecalleridnum','originatecalleridname','prototype','getCaller','\x22%s\x22\x20<%s>','exports','lodash','moment','isNil','string','uniqueid','idContact'];(function(_0x49d23f,_0x5ad2b1){var _0xf3b3d2=function(_0x2320cd){while(--_0x2320cd){_0x49d23f['push'](_0x49d23f['shift']());}};_0xf3b3d2(++_0x5ad2b1);}(_0x57ca,0x108));var _0xa57c=function(_0x6497,_0x5acf8a){_0x6497=_0x6497-0x0;var _0x4397b8=_0x57ca[_0x6497];return _0x4397b8;};'use strict';var util=require('util');var _=require(_0xa57c('0x0'));var moment=require(_0xa57c('0x1'));function checkNameSurname(_0x4b1712,_0x3a7394,_0x396613){var _0x1d38e7='';if(!_[_0xa57c('0x2')](_0x3a7394)&&_0xa57c('0x3')===typeof _0x3a7394){_0x1d38e7+=_0x3a7394;}if(!_['isNil'](_0x396613)&&_0xa57c('0x3')===typeof _0x396613){_0x1d38e7+='\x20'+_0x396613;}if(_0x1d38e7!==''){return _0x1d38e7;}return _0x4b1712;}function Action(_0x1c3e31,_0x113dcf,_0x19473f,_0xbdfffb,_0x314574){this[_0xa57c('0x4')]=_0x19473f||undefined;this[_0xa57c('0x5')]=_0x1c3e31['id'];this['queue']=_0x113dcf[_0xa57c('0x6')];this['type']=_0x113dcf[_0xa57c('0x7')];this[_0xa57c('0x8')]='queue';this[_0xa57c('0x9')]=![];this['membername']=_[_0xa57c('0x2')](_0x1c3e31[_0xa57c('0xa')])?undefined:_0x1c3e31['Agent'][_0xa57c('0x6')];this['channelAgent']=this[_0xa57c('0xb')]?util[_0xa57c('0xc')](_0xa57c('0xd'),this[_0xa57c('0xb')]):_0xbdfffb||undefined;this[_0xa57c('0xe')]=checkNameSurname(_0x1c3e31['Contact'][_0xa57c('0xf')],_0x1c3e31['Contact'][_0xa57c('0x10')],_0x1c3e31[_0xa57c('0x11')][_0xa57c('0x12')]);this[_0xa57c('0x13')]=_0x1c3e31[_0xa57c('0x13')]||![];this[_0xa57c('0x14')]=_0x1c3e31[_0xa57c('0xf')];this['scheduledat']=_0x1c3e31[_0xa57c('0x15')];this[_0xa57c('0x16')]=_0x1c3e31[_0xa57c('0x16')]||0x0;this['countcongestionretry']=_0x1c3e31[_0xa57c('0x17')]||0x0;this['countnoanswerretry']=_0x1c3e31[_0xa57c('0x18')]||0x0;this[_0xa57c('0x19')]=(_0x1c3e31[_0xa57c('0x16')]||0x0)+(_0x1c3e31[_0xa57c('0x17')]||0x0)+(_0x1c3e31[_0xa57c('0x18')]||0x0)+(_0x1c3e31[_0xa57c('0x1a')]||0x0)+(_0x1c3e31[_0xa57c('0x1b')]||0x0)+(_0x1c3e31[_0xa57c('0x1c')]||0x0)+(_0x1c3e31['countmachineretry']||0x0)+(_0x1c3e31[_0xa57c('0x1d')]||0x0);this['countnosuchnumberretry']=_0x1c3e31['countnosuchnumberretry']||0x0;this[_0xa57c('0x1b')]=_0x1c3e31[_0xa57c('0x1b')]||0x0;this[_0xa57c('0x1c')]=_0x1c3e31[_0xa57c('0x1c')]||0x0;this['countmachineretry']=_0x1c3e31[_0xa57c('0x1e')]||0x0;this[_0xa57c('0x1d')]=_0x1c3e31[_0xa57c('0x1d')]||0x0;this[_0xa57c('0x1f')]=_0x1c3e31[_0xa57c('0x1f')];this[_0xa57c('0x20')]=_0x1c3e31[_0xa57c('0x20')];this[_0xa57c('0x21')]=_0x1c3e31[_0xa57c('0x21')];this[_0xa57c('0x22')]=_0x1c3e31[_0xa57c('0x22')];this[_0xa57c('0x23')]=_0x1c3e31[_0xa57c('0x23')];this[_0xa57c('0x24')]=_0x1c3e31[_0xa57c('0x24')];this['UserId']=_[_0xa57c('0x2')](_0x1c3e31[_0xa57c('0xa')])?_0x1c3e31[_0xa57c('0x25')]:_0x1c3e31[_0xa57c('0xa')]['id'];this[_0xa57c('0x26')]=_0x1c3e31[_0xa57c('0x26')];this[_0xa57c('0x27')]='';this[_0xa57c('0x28')]='';}Action[_0xa57c('0x29')][_0xa57c('0x2a')]=function(){return util['format'](_0xa57c('0x2b'),this['calleridname'],this['number']);};module[_0xa57c('0x2c')]=Action;
\ No newline at end of file
+var _0xb016=['countabandonedretry','countmachineretry','countagentrejectretry','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','originatecalleridname','prototype','getCaller','format','\x22%s\x22\x20<%s>','exports','util','lodash','isNil','string','uniqueid','idContact','type','campaigntype','queue','dialAnswer','Agent','name','membername','Contact','phone','firstName','active','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry'];(function(_0x5f09c5,_0x2bfca0){var _0x426ad9=function(_0x18fe5f){while(--_0x18fe5f){_0x5f09c5['push'](_0x5f09c5['shift']());}};_0x426ad9(++_0x2bfca0);}(_0xb016,0x159));var _0x6b01=function(_0x4bb53c,_0x4e8b21){_0x4bb53c=_0x4bb53c-0x0;var _0x4f2446=_0xb016[_0x4bb53c];return _0x4f2446;};'use strict';var util=require(_0x6b01('0x0'));var _=require(_0x6b01('0x1'));var moment=require('moment');function checkNameSurname(_0x57ecae,_0xf74fa1,_0x531b6a){var _0x160a7d='';if(!_[_0x6b01('0x2')](_0xf74fa1)&&_0x6b01('0x3')===typeof _0xf74fa1){_0x160a7d+=_0xf74fa1;}if(!_[_0x6b01('0x2')](_0x531b6a)&&'string'===typeof _0x531b6a){_0x160a7d+='\x20'+_0x531b6a;}if(_0x160a7d!==''){return _0x160a7d;}return _0x57ecae;}function Action(_0x1b7dd6,_0x65407a,_0x192b2d,_0x5759a1,_0x5c5bfb){this[_0x6b01('0x4')]=_0x192b2d||undefined;this[_0x6b01('0x5')]=_0x1b7dd6['id'];this['queue']=_0x65407a['name'];this[_0x6b01('0x6')]=_0x65407a[_0x6b01('0x6')];this[_0x6b01('0x7')]=_0x6b01('0x8');this[_0x6b01('0x9')]=![];this['membername']=_['isNil'](_0x1b7dd6[_0x6b01('0xa')])?undefined:_0x1b7dd6[_0x6b01('0xa')][_0x6b01('0xb')];this['channelAgent']=this[_0x6b01('0xc')]?util['format']('SIP/%s',this[_0x6b01('0xc')]):_0x5759a1||undefined;this['calleridname']=checkNameSurname(_0x1b7dd6[_0x6b01('0xd')][_0x6b01('0xe')],_0x1b7dd6['Contact'][_0x6b01('0xf')],_0x1b7dd6['Contact']['lastName']);this['active']=_0x1b7dd6[_0x6b01('0x10')]||![];this['calleridnum']=_0x1b7dd6['phone'];this[_0x6b01('0x11')]=_0x1b7dd6[_0x6b01('0x11')];this[_0x6b01('0x12')]=_0x1b7dd6[_0x6b01('0x12')]||0x0;this[_0x6b01('0x13')]=_0x1b7dd6[_0x6b01('0x13')]||0x0;this[_0x6b01('0x14')]=_0x1b7dd6[_0x6b01('0x14')]||0x0;this[_0x6b01('0x15')]=(_0x1b7dd6[_0x6b01('0x12')]||0x0)+(_0x1b7dd6[_0x6b01('0x13')]||0x0)+(_0x1b7dd6['countnoanswerretry']||0x0)+(_0x1b7dd6[_0x6b01('0x16')]||0x0)+(_0x1b7dd6[_0x6b01('0x17')]||0x0)+(_0x1b7dd6[_0x6b01('0x18')]||0x0)+(_0x1b7dd6[_0x6b01('0x19')]||0x0)+(_0x1b7dd6[_0x6b01('0x1a')]||0x0);this[_0x6b01('0x16')]=_0x1b7dd6[_0x6b01('0x16')]||0x0;this[_0x6b01('0x17')]=_0x1b7dd6['countdropretry']||0x0;this[_0x6b01('0x18')]=_0x1b7dd6[_0x6b01('0x18')]||0x0;this[_0x6b01('0x19')]=_0x1b7dd6[_0x6b01('0x19')]||0x0;this[_0x6b01('0x1a')]=_0x1b7dd6[_0x6b01('0x1a')]||0x0;this[_0x6b01('0x1b')]=_0x1b7dd6['callback'];this[_0x6b01('0x1c')]=_0x1b7dd6[_0x6b01('0x1c')];this[_0x6b01('0x1d')]=_0x1b7dd6['callbackat'];this[_0x6b01('0x1e')]=_0x1b7dd6[_0x6b01('0x1e')];this[_0x6b01('0x1f')]=_0x1b7dd6[_0x6b01('0x1f')];this[_0x6b01('0x20')]=_0x1b7dd6[_0x6b01('0x20')];this[_0x6b01('0x21')]=_[_0x6b01('0x2')](_0x1b7dd6[_0x6b01('0xa')])?_0x1b7dd6[_0x6b01('0x21')]:_0x1b7dd6[_0x6b01('0xa')]['id'];this[_0x6b01('0x22')]=_0x1b7dd6[_0x6b01('0x22')];this['originatecalleridnum']='';this[_0x6b01('0x23')]='';}Action[_0x6b01('0x24')][_0x6b01('0x25')]=function(){return util[_0x6b01('0x26')](_0x6b01('0x27'),this['calleridname'],this['number']);};module[_0x6b01('0x28')]=Action;
\ No newline at end of file
index a6dd0bc..d3bbbaa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6aa7=['\x20Trunk\x20is\x20not\x20active','TrunkBackup','[Preview][validateContact][Trunk\x20not\x20working\x20correctly]','\x20Trunk\x20Backup\x20is\x20not\x20active','Trunk\x20not\x20working\x20correctly','isActive','[Preview][validateContact][Campaign\x20Active]','\x20Not\x20Active','campaign\x20Name:\x20','dialPrefix','trim','dialCutDigit','SIP/%s/%s%s','substring','getCallerId','callerid','dialRandomLastDigitCallerIdNumber','dialOriginateCallerIdNumber','originatecalleridname','extractCalleridName','originatecalleridnum','extractCalleridNumber','addVariables','merge','toLowerVariables','[originated][increment]','OriginateError','[originateFailure][logOriginateFailure]','actionid','logLookAgent','clone','isFailure','response','custom:agentringnoanswer','rejected','callProgressDetectingAgent','[callProgressDetectingAgent][logAnswer]','cause','[syncHangup][talking][cause]','statedesc','dialQueueProject','channelstate','transfer','destuniqueid','syncHangupRequest','addVariable','variables','filterKey','keys','variable','value','error','[syncVarSet][Preview]','inspect','syncAttendedTransfer','transfertargetlinkedid','exports','util','uuid','moment','ioredis','../../../config/environment','preview','../../../config/logger','actionPreview','../rpc/cmHopperAdditionalPhone','./util/util','../dialer/utils','redis','localhost','socket.io-emitter','prototype','enqueue','tail','finally','sequence','campaignsPreview','trunks','actions','agents','clockClearZombieChannels','originateresponse','hangup','bind','hanguprequest','syncDialEnd','newexten','syncNewExten','varset','syncVarSet','blindtransfer','syncBlindTransfer','loopCampaigns','info','[DEBUG]\x20Emit\x20voice_queue_channel:remove\x20event','format','voice:queue:%s','name','voice_queue_channel:remove','emit','voice_queue_presence:remove','sendMessageOneNotActive','originated','pTalking','available','paused','CAMPAIGN_STATUS','INACTIVE','logger','[CampaignPreview]\x20Campaign\x20Queue:\x20','\x20is\x20not\x20active','message','DEACTIVATED','syncCampaigns','dialMethod','booked','type','outbound','clearZombieChannels','hasOwnProperty','setMessage','clearZombieChannel','isNil','[clearZombieChannels][talking]','Queue','queue','stringify','dialAnswer','pick','contactId','UserId','ListId','Action','status','channel','catch','No\x20such\x20channel','updateOriginated','[clearZombieChannel]','decrementTalkink','[action]','size','recallMe','getContactRecallMe','agentReadyId','then','length','getDiff','dialRecallMeTimeout','Agent','voicePause','run','[RecallMe]','disableContact','starttime','YYYY-MM-DD\x20HH:mm:ss','RecallInQueue','dialRecallInQueue','rescheduleContactInQueue','createBody','createCustomerHistory','[HistoryDialRecallInQueue][historyCatch]','RecallFailedTimeout','[HistoryRecallClose]','logger2','IsNotLoggedIn','loggedIn','NO_AGENTS_LOGGED','dialActive','isTrunkReachable','Trunk','UNREACHABLE_TRUNK','ACTIVE','callProgressDetectingCustomer','outboundNoSuchCallsDay','countnosuchnumberretry','totalGlobal','logCustomer','NoSuchNumber','custom:agentnosuchnumber','buildObj','nosuchnumber','[callProgressDetectingCustomer][logNoSuch]','additional','dialNoSuchNumberRetryFrequency','callAdditionalPhoneAfterMin','dialGlobalMaxRetry','cloneAction','Global','createCustomerFinal','[callProgressDetectingCustomer][logNoSuchGlobal]','dialNoSuchNumberMaxRetry','rescheduleContact','scheduledAt','unlockAgent','actioncountonusuch','idContact','incrementPreviewCounters','ANSWER','responsetime','answertime','[syncHangup][talking][increment]','uniqueid','\x20Queue','connect','acw','custom:agentConnectPreview','buildAcw','complete','total','[16]','countglobal','Answer','[callProgressDetectingCustomer][logAnswer]','[callProgressDetectingCustomer][logAnswerGlobal]','crateCustomerReportQueue','sumDuration','sumBillable','talktime','[syncHangup][talking][decrement]','pTalking:\x20','linkedid','outboundBusyCallsDay','countbusyretry','Busy','dialBusyRetryFrequency','busy','[callProgressDetectingCustomer][logBusy]','activeContact','swapAdditionalPhones','NOANSWER','countnoanswerretry','NoAnswer','dialNoAnswerRetryFrequency','verifyAdditionalPhones','dialNoAnswerMaxRetry','[callProgressDetectingCustomer][logNoAnswer]','CONGESTION','outboundCongestionCallsDay','countcongestionretry','Congestion','dialCongestionRetryFrequency','custom:agentcongestion','[callProgressDetectingCustomer][logCongestion]','[callProgressDetectingCustomer][logCongestionGlobal]','CANCEL','countagentrejectretry','AgentReject','dialAgentRejectRetryFrequency','[callProgressDetectingCustomer][logAgentReject]','dialAgentRejectMaxRetry','outboundAbandonedCallsDay','Abandoned','[callProgressDetectingCustomer][logAbandoned]','countabandonedretry','dialAbandonedRetryFrequency','outboundUnknownCallsDay','cause-txt','dialstatus','custom:amd','amd','[callProgressDetectingCustomer][hangupInAMD]','[callProgressDetectingCustomer][machine]','[default]','loggerError','[Dialer][decrementTalkink][no\x20Hangup][Preview]','[callProgressDetectingCustomer][logUnknown]','[callProgressDetectingCustomer][logUnknownGlobal]','[callProgressDetectingCustomer]','[originated][decrement][callProgressDetectingCustomer]','originated:\x20','destlinkedid','queueSummaryCountersUpdated','object','isUndefined','reason','logAgent','[callProgressDetectingAgent][logNoSuch]','createAgentHistory','[callProgressDetectingAgent][logNoAnswer]','[callProgressDetectingAgent][logBusy]','[callProgressDetectingAgent][logCongestion]','AnswerAGI','[callProgressDetectingAgent][logAnswerAGI]','[callProgressDetectingAgent]','[originated][decrement][callProgressDetectingAgent]','[verifyAdditionalPhone]\x20','[swapAdditionalPhone]\x20','resolve','[incrementPreviewCounters]\x20','checkInBlack','Contact','phone','lookAgent','execCall','[Preview][execCall][success]','Queue:\x20','\x20IdHopper:\x20','custom:agentcalled','called','Calling','[Preview][execCall][failure]','Call\x20failed','outboundBlacklistCallsDay','createHistory','SIP/%s','reachable','unmonitored','execRun','unlockContact','active','getContactPreview','recallme','validateContact','checkIsBlackList','VoiceQueueId','Call\x20unsuccessful','[Preview][getContactPreview]','Empty\x20Campaign'];(function(_0x13bb74,_0x28fd9d){var _0x29b47c=function(_0x316126){while(--_0x316126){_0x13bb74['push'](_0x13bb74['shift']());}};_0x29b47c(++_0x28fd9d);}(_0x6aa7,0x178));var _0x76aa=function(_0x517dac,_0x3b9bb5){_0x517dac=_0x517dac-0x0;var _0x4de598=_0x6aa7[_0x517dac];return _0x4de598;};'use strict';var util=require(_0x76aa('0x0'));var _=require('lodash');var uuid=require(_0x76aa('0x1'));var moment=require(_0x76aa('0x2'));var Redis=require(_0x76aa('0x3'));var config=require(_0x76aa('0x4'));var logger=require('../../../config/logger')(_0x76aa('0x5'));var loggerAction=require(_0x76aa('0x6'))(_0x76aa('0x7'));var ami=require('../ami');var rpcDb=require('./rpcDb');var cmHopperAdditionalPhone=require(_0x76aa('0x8'));var Action=require('./action');var ut=require(_0x76aa('0x9'));var utils=require(_0x76aa('0xa'));config[_0x76aa('0xb')]=_['defaults'](config[_0x76aa('0xb')],{'host':_0x76aa('0xc'),'port':0x18eb});var io=require(_0x76aa('0xd'))(new Redis(config['redis']));var Sequence=function(){};Sequence[_0x76aa('0xe')][_0x76aa('0xf')]=function(_0x41643a){this[_0x76aa('0x10')]=this[_0x76aa('0x10')]?this[_0x76aa('0x10')][_0x76aa('0x11')](_0x41643a):_0x41643a();};function Preview(_0x8dc35c){this[_0x76aa('0x12')]=new Sequence();this[_0x76aa('0x13')]=_0x8dc35c['voiceQueues'];this[_0x76aa('0x14')]=_0x8dc35c['trunks'];this[_0x76aa('0x15')]={};this[_0x76aa('0x16')]=_0x8dc35c[_0x76aa('0x16')];this[_0x76aa('0x17')]=0x0;ami['on'](_0x76aa('0x18'),this['syncOriginateResponse']['bind'](this));ami['on'](_0x76aa('0x19'),this['syncHangup'][_0x76aa('0x1a')](this));ami['on'](_0x76aa('0x1b'),this['syncHangupRequest'][_0x76aa('0x1a')](this));ami['on']('dialend',this[_0x76aa('0x1c')]['bind'](this));ami['on'](_0x76aa('0x1d'),this[_0x76aa('0x1e')][_0x76aa('0x1a')](this));ami['on'](_0x76aa('0x1f'),this[_0x76aa('0x20')][_0x76aa('0x1a')](this));ami['on']('attendedtransfer',this['syncAttendedTransfer'][_0x76aa('0x1a')](this));ami['on'](_0x76aa('0x21'),this[_0x76aa('0x22')][_0x76aa('0x1a')](this));this[_0x76aa('0x23')](this[_0x76aa('0x13')]);}function emit(_0x19af92,_0x2eaf48,_0x385157){io['to'](_0x19af92)['emit'](_0x2eaf48,_0x385157);}function emitVoiceQueueChannelRemove(_0x39ac5a){logger[_0x76aa('0x24')](_0x76aa('0x25'),JSON['stringify'](_0x39ac5a));emit(util[_0x76aa('0x26')](_0x76aa('0x27'),_0x39ac5a[_0x76aa('0x28')]),_0x76aa('0x29'),_0x39ac5a);io[_0x76aa('0x2a')](_0x76aa('0x2b'),_0x39ac5a);}function notSendMessagesQueue(_0x3cd039){if(_0x3cd039[_0x76aa('0x2c')]){if(_0x3cd039[_0x76aa('0x2d')]===0x0&&_0x3cd039[_0x76aa('0x2e')]===0x0){_0x3cd039[_0x76aa('0x2c')]=![];_0x3cd039[_0x76aa('0x2f')]=0x0;_0x3cd039[_0x76aa('0x30')]=0x0;_0x3cd039['message']=utils[_0x76aa('0x31')][_0x76aa('0x32')];ut[_0x76aa('0x33')](_0x76aa('0x34'),_0x3cd039[_0x76aa('0x28')]+_0x76aa('0x35'));}else{_0x3cd039[_0x76aa('0x36')]=utils[_0x76aa('0x31')][_0x76aa('0x37')];ut[_0x76aa('0x33')]('[CampaignPreview]\x20Campaign\x20Queue:\x20',_0x3cd039[_0x76aa('0x28')]+'\x20is\x20deactivated');}}}Preview[_0x76aa('0xe')][_0x76aa('0x23')]=function(){var _0x2dec94=this;setInterval(function(){_0x2dec94[_0x76aa('0x38')]();},0x7cf);};Preview[_0x76aa('0xe')][_0x76aa('0x38')]=function(){var _0x2ee0f9=this[_0x76aa('0x13')];this[_0x76aa('0x17')]+=0x1;for(var _0x3ea05a in _0x2ee0f9){if(_0x2ee0f9['hasOwnProperty'](_0x3ea05a)&&(_0x2ee0f9[_0x3ea05a][_0x76aa('0x39')]===_0x76aa('0x5')||_0x2ee0f9[_0x3ea05a][_0x76aa('0x39')]===_0x76aa('0x3a'))&&_0x2ee0f9[_0x3ea05a][_0x76aa('0x3b')]===_0x76aa('0x3c')){if(this[_0x76aa('0x17')]>0x7){this['clockClearZombieChannels']=0x0;this[_0x76aa('0x3d')]();}}if(_0x2ee0f9[_0x76aa('0x3e')](_0x3ea05a)&&_0x2ee0f9[_0x3ea05a]['dialMethod']===_0x76aa('0x5')&&_0x2ee0f9[_0x3ea05a]['type']===_0x76aa('0x3c')){if(_0x2ee0f9[_0x3ea05a]['dialActive']){this[_0x76aa('0x3f')](_0x2ee0f9[_0x3ea05a]);if(_0x2ee0f9[_0x3ea05a]['dialPreviewAutoRecallMe'])this['recallMe'](_0x2ee0f9[_0x3ea05a]);}else{notSendMessagesQueue(_0x2ee0f9[_0x3ea05a]);}}}};Preview[_0x76aa('0xe')][_0x76aa('0x40')]=function(_0x198fcb){var _0x37dfab=this;this['sequence']['enqueue'](function(){if(!_[_0x76aa('0x41')](_0x37dfab[_0x76aa('0x15')][_0x198fcb])){loggerAction[_0x76aa('0x24')](_0x76aa('0x42'),_0x198fcb,_0x76aa('0x43'),_0x37dfab['actions'][_0x198fcb][_0x76aa('0x44')],'originated:\x20',JSON['stringify'](_0x37dfab[_0x76aa('0x13')][_0x37dfab[_0x76aa('0x15')][_0x198fcb][_0x76aa('0x44')]][_0x76aa('0x2d')]),'pTalking:\x20',JSON[_0x76aa('0x45')](_0x37dfab[_0x76aa('0x13')][_0x37dfab[_0x76aa('0x15')][_0x198fcb]['queue']][_0x76aa('0x2e')]),JSON[_0x76aa('0x45')](_0x37dfab[_0x76aa('0x15')][_0x198fcb][_0x76aa('0x46')]),JSON[_0x76aa('0x45')](_[_0x76aa('0x47')](_0x37dfab[_0x76aa('0x15')][_0x198fcb],[_0x76aa('0x48'),_0x76aa('0x49'),'VoiceQueueId',_0x76aa('0x4a')])));return ami[_0x76aa('0x4b')]({'action':_0x76aa('0x4c'),'channel':_0x37dfab[_0x76aa('0x15')][_0x198fcb][_0x76aa('0x4d')]})[_0x76aa('0x4e')](function(_0x572fdb){if(_0x572fdb['message']===_0x76aa('0x4f')){setTimeout(function(){if(_0x37dfab[_0x76aa('0x15')][_0x198fcb]){ut[_0x76aa('0x50')](_0x37dfab[_0x76aa('0x13')][_0x37dfab['actions'][_0x198fcb][_0x76aa('0x44')]],_0x76aa('0x51'));if(_0x37dfab[_0x76aa('0x15')][_0x198fcb][_0x76aa('0x46')]===!![]){ut[_0x76aa('0x52')](_0x37dfab['campaignsPreview'][_0x37dfab[_0x76aa('0x15')][_0x198fcb]['queue']],_0x76aa('0x51'));ut['loggerError']('[Dialer][checkChannel][pTalking][Preview]'+_0x198fcb,_0x37dfab['actions'][_0x198fcb][_0x76aa('0x44')]);}ut['loggerError']('[Dialer][checkChannel][Preview]'+_0x198fcb,_0x37dfab['actions'][_0x198fcb][_0x76aa('0x44')]);delete _0x37dfab[_0x76aa('0x15')][_0x198fcb];}},0x2328);}});}});};Preview[_0x76aa('0xe')][_0x76aa('0x3d')]=function(){var _0x27a52e=this;loggerAction['info'](_0x76aa('0x53'),_[_0x76aa('0x54')](this[_0x76aa('0x15')]));for(var _0x2d6b7f in this[_0x76aa('0x15')]){if(_0x27a52e['actions'][_0x76aa('0x3e')](_0x2d6b7f)){_0x27a52e[_0x76aa('0x40')](_0x2d6b7f);}}};Preview['prototype'][_0x76aa('0x55')]=function(_0x5a984e){var _0x3aa858=this;rpcDb[_0x76aa('0x56')](_0x5a984e['id'],ut[_0x76aa('0x57')](this[_0x76aa('0x16')]))[_0x76aa('0x58')](function(_0x3e0315){if(!_[_0x76aa('0x41')](_0x3e0315)){for(var _0x165858=0x0;_0x165858<_0x3e0315[_0x76aa('0x59')];_0x165858+=0x1){if(ut[_0x76aa('0x5a')](_0x3e0315[_0x165858]['scheduledat'])<_0x5a984e[_0x76aa('0x5b')]*0x3c){if(_0x3e0315[_0x165858]['Agent']&&!_0x3e0315[_0x165858][_0x76aa('0x5c')][_0x76aa('0x5d')]){_0x3aa858[_0x76aa('0x5e')](_0x3e0315[_0x165858]['id'])[_0x76aa('0x58')](ut['logger2']('[RecallMe]'))[_0x76aa('0x4e')](ut['logger2'](_0x76aa('0x5f')));}else{rpcDb[_0x76aa('0x60')](_0x3e0315[_0x165858]['id']);}}else{var _0x4315b3=new Action(_0x3e0315[_0x165858],_0x5a984e);_0x4315b3[_0x76aa('0x61')]=moment()[_0x76aa('0x26')](_0x76aa('0x62'));_0x5a984e['outboundReCallsDay']+=0x1;ut['logCustomer'](_0x4315b3,0x17,_0x76aa('0x63'));if(_0x5a984e[_0x76aa('0x64')]){rpcDb[_0x76aa('0x65')](ut[_0x76aa('0x66')](_0x3e0315[_0x165858]));rpcDb[_0x76aa('0x67')](_0x4315b3,_0x76aa('0x68'));}else{ut['logCustomer'](_0x4315b3,0x16,_0x76aa('0x69'));rpcDb[_0x76aa('0x67')](_0x4315b3,_0x76aa('0x6a'));rpcDb['createCustomerFinal'](_0x4315b3,_0x76aa('0x6a'));}}}}})['catch'](ut[_0x76aa('0x6b')]('[getContactRecallMe]'));};Preview[_0x76aa('0xe')][_0x76aa('0x3f')]=function(_0x3c63e5){_0x3c63e5[_0x76aa('0x2c')]=!![];if(ut[_0x76aa('0x6c')](_0x3c63e5[_0x76aa('0x6d')])){_0x3c63e5[_0x76aa('0x36')]=utils['CAMPAIGN_STATUS'][_0x76aa('0x6e')];}else if(!ut['isActive'](_0x3c63e5[_0x76aa('0x6f')])){_0x3c63e5[_0x76aa('0x36')]=utils[_0x76aa('0x31')][_0x76aa('0x32')];}else if(!this[_0x76aa('0x70')](_0x3c63e5[_0x76aa('0x71')])){if(!this[_0x76aa('0x70')](_0x3c63e5['TrunkBackup'])){_0x3c63e5[_0x76aa('0x36')]=utils[_0x76aa('0x31')][_0x76aa('0x72')];}else{_0x3c63e5[_0x76aa('0x36')]=utils['CAMPAIGN_STATUS'][_0x76aa('0x73')];}}else{_0x3c63e5[_0x76aa('0x36')]=utils[_0x76aa('0x31')][_0x76aa('0x73')];}};Preview[_0x76aa('0xe')][_0x76aa('0x74')]=function(_0x4e6c09,_0x295b2c,_0xbf78c7){var _0x2886eb=this;var _0x3620d0=this[_0x76aa('0x15')][_0x295b2c];var _0x2fdc4f=this[_0x76aa('0x13')][_0x3620d0['queue']];var _0x4910fb;var _0x2c59a6=![];var _0x3b0d8a=0x2;var _0x5713e7=0x3;if(_0x2fdc4f){switch(_0xbf78c7){case'1':_0x2fdc4f[_0x76aa('0x75')]+=0x1;_0x3620d0[_0x76aa('0x76')]+=0x1;_0x3620d0['countglobal']=ut[_0x76aa('0x77')](_0x3620d0);ut[_0x76aa('0x78')](_0x3620d0,0x0,_0x76aa('0x79'));ami[_0x76aa('0x2a')](_0x76aa('0x7a'),ut[_0x76aa('0x7b')](_0x3620d0,_0x76aa('0x7c')));rpcDb[_0x76aa('0x67')](_0x3620d0,_0x76aa('0x7d'));_0x2886eb['verifyAdditionalPhones'](_0x3620d0,'0',_0x2fdc4f)[_0x76aa('0x58')](function(_0x49156c){_0x2c59a6=_0x49156c[_0x76aa('0x7e')]==0x1;_0x3b0d8a=_0x2fdc4f[_0x76aa('0x7f')];_0x5713e7=_0x2fdc4f[_0x76aa('0x80')];if(!_0x2c59a6){if(ut[_0x76aa('0x77')](_0x3620d0)>=_0x2fdc4f[_0x76aa('0x81')]){_0x4910fb=ut[_0x76aa('0x82')](_0x3620d0,0xf,_0x76aa('0x83'));rpcDb[_0x76aa('0x84')](_0x4910fb,_0x76aa('0x85'));}else{if(_0x3620d0['countnosuchnumberretry']>=_0x2fdc4f[_0x76aa('0x86')]){rpcDb[_0x76aa('0x84')](_0x3620d0,_0x76aa('0x85'));}else{rpcDb[_0x76aa('0x87')](ut[_0x76aa('0x88')](_0x3620d0,_0x76aa('0x76'),_0x2fdc4f[_0x76aa('0x7f')]),_0x3620d0[_0x76aa('0x89')],_0x3620d0['activeContact']);}}delete this[_0x76aa('0x15')][_0x4e6c09['linkedid']];}else{_0x3620d0[_0x76aa('0x76')]++;logger[_0x76aa('0x24')](_0x76aa('0x8a'),_0x3620d0[_0x76aa('0x76')]);logger[_0x76aa('0x24')]('id',_0x3620d0[_0x76aa('0x8b')]);_0x2886eb[_0x76aa('0x8c')]({'id':_0x3620d0['idContact'],'field':{'countnosuchnumberretry':_0x3620d0[_0x76aa('0x76')]}})[_0x76aa('0x58')](function(){_0x2886eb['swapAdditionalPhones'](_0x3620d0,_0x3b0d8a,_0x5713e7)['then'](function(){});});}});break;case _0x76aa('0x8d'):var _0x13389d=moment()['format'](_0x76aa('0x62'));_0x3620d0[_0x76aa('0x8e')]=_0x13389d;_0x3620d0[_0x76aa('0x8f')]=_0x13389d;_0x3620d0['dialAnswer']=!![];_0x2fdc4f[_0x76aa('0x2e')]+=0x1;logger['info'](_0x76aa('0x90'),_0x3620d0[_0x76aa('0x91')],_0x76aa('0x92'),_0x2fdc4f[_0x76aa('0x28')],'pTalking:\x20',_0x2fdc4f['pTalking']);ami[_0x76aa('0x2a')]('custom:agentconnect',ut[_0x76aa('0x7b')](_0x3620d0,_0x76aa('0x93'),this[_0x76aa('0x13')][_0x3620d0[_0x76aa('0x44')]]));if(_0x2fdc4f[_0x76aa('0x94')]){ami[_0x76aa('0x2a')](_0x76aa('0x95'),ut[_0x76aa('0x96')](_0x3620d0));}break;case'16':ami[_0x76aa('0x2a')]('custom:agentcomplete',ut[_0x76aa('0x7b')](_0x3620d0,_0x76aa('0x97'),this[_0x76aa('0x13')][_0x3620d0[_0x76aa('0x44')]]));emitVoiceQueueChannelRemove(ut['buildObj'](_0x3620d0,'complete'));_0x2fdc4f['outboundAnswerCallsDay']+=0x1;_0x2fdc4f[_0x76aa('0x98')]+=0x1;_0x2fdc4f['answered']+=0x1;ut[_0x76aa('0x52')](_0x2fdc4f,_0x76aa('0x99'));_0x3620d0[_0x76aa('0x9a')]=ut[_0x76aa('0x77')](_0x3620d0);ut['logCustomer'](_0x3620d0,0x4,_0x76aa('0x9b'));rpcDb['createCustomerHistory'](_0x3620d0,_0x76aa('0x9c'));rpcDb[_0x76aa('0x84')](_0x3620d0,_0x76aa('0x9d'));rpcDb[_0x76aa('0x9e')](_0x3620d0);_0x2fdc4f[_0x76aa('0x9f')]+=_0x3620d0['talktime'];_0x2fdc4f[_0x76aa('0xa0')]+=_0x3620d0[_0x76aa('0xa1')];logger[_0x76aa('0x24')](_0x76aa('0xa2'),_0x3620d0[_0x76aa('0x91')],_0x76aa('0x92'),_0x2fdc4f[_0x76aa('0x28')],_0x76aa('0xa3'),_0x2fdc4f['pTalking']);delete this[_0x76aa('0x15')][_0x4e6c09[_0x76aa('0xa4')]];break;case'BUSY':_0x2fdc4f[_0x76aa('0xa5')]+=0x1;_0x3620d0[_0x76aa('0xa6')]+=0x1;_0x3620d0[_0x76aa('0x9a')]=ut[_0x76aa('0x77')](_0x3620d0);ut[_0x76aa('0x78')](_0x3620d0,0x5,_0x76aa('0xa7'));_0x3b0d8a=_0x2fdc4f[_0x76aa('0xa8')];_0x5713e7=_0x2fdc4f['callAdditionalPhoneAfterMin'];ami[_0x76aa('0x2a')]('custom:agentbusy',ut['buildObj'](_0x3620d0,_0x76aa('0xa9')));rpcDb[_0x76aa('0x67')](_0x3620d0,'[callProgressDetectingCustomer][logBusy]');_0x2886eb['verifyAdditionalPhones'](_0x3620d0,'5',_0x2fdc4f)[_0x76aa('0x58')](function(_0x14b5a2){_0x2c59a6=_0x14b5a2[_0x76aa('0x7e')]==0x1;if(!_0x2c59a6){if(ut['totalGlobal'](_0x3620d0)>=_0x2fdc4f['dialGlobalMaxRetry']){_0x4910fb=ut[_0x76aa('0x82')](_0x3620d0,0xf,_0x76aa('0x83'));rpcDb[_0x76aa('0x84')](_0x4910fb,'[callProgressDetectingCustomer][logBusyGlobal]');}else{if(_0x3620d0[_0x76aa('0xa6')]>=_0x2fdc4f['dialBusyMaxRetry']){rpcDb[_0x76aa('0x84')](_0x3620d0,_0x76aa('0xaa'));}else{rpcDb[_0x76aa('0x87')](ut[_0x76aa('0x88')](_0x3620d0,_0x76aa('0xa6'),_0x2fdc4f['dialBusyRetryFrequency']),_0x3620d0['unlockAgent'],_0x3620d0[_0x76aa('0xab')]);}}}else{_0x3620d0[_0x76aa('0xa6')]++;_0x2886eb[_0x76aa('0x8c')]({'id':_0x3620d0['idContact'],'field':{'countbusyretry':_0x3620d0[_0x76aa('0xa6')]}})[_0x76aa('0x58')](function(){_0x2886eb[_0x76aa('0xac')](_0x3620d0,_0x3b0d8a,_0x5713e7)[_0x76aa('0x58')](function(){});});}});break;case _0x76aa('0xad'):_0x2fdc4f['outboundNoAnswerCallsDay']+=0x1;_0x3620d0[_0x76aa('0xae')]+=0x1;_0x3620d0['countglobal']=ut[_0x76aa('0x77')](_0x3620d0);ut[_0x76aa('0x78')](_0x3620d0,0x3,_0x76aa('0xaf'));_0x3b0d8a=_0x2fdc4f[_0x76aa('0xb0')];_0x5713e7=_0x2fdc4f[_0x76aa('0x80')];var _0x238ecc=ut['buildNoAnswerEventPayload'](_0x3620d0,_0x2fdc4f);ami['emit']('custom:agentnoanswer',_0x238ecc);rpcDb['createCustomerHistory'](_0x3620d0,'[callProgressDetectingCustomer][logNoAnswer]');_0x2886eb[_0x76aa('0xb1')](_0x3620d0,'3',_0x2fdc4f)[_0x76aa('0x58')](function(_0x52c5be){_0x2c59a6=_0x52c5be['additional']==0x1;if(!_0x2c59a6){if(ut['totalGlobal'](_0x3620d0)>=_0x2fdc4f[_0x76aa('0x81')]){_0x4910fb=ut[_0x76aa('0x82')](_0x3620d0,0xf,_0x76aa('0x83'));rpcDb['createCustomerFinal'](_0x4910fb,'[callProgressDetectingCustomer][logNoAnswerGlobal]');}else{if(_0x3620d0[_0x76aa('0xae')]>=_0x2fdc4f[_0x76aa('0xb2')]){rpcDb[_0x76aa('0x84')](_0x3620d0,_0x76aa('0xb3'));}else{rpcDb[_0x76aa('0x87')](ut['scheduledAt'](_0x3620d0,'countnoanswerretry',_0x2fdc4f[_0x76aa('0xb0')]),_0x3620d0['unlockAgent'],_0x3620d0['activeContact']);}}}else{_0x3620d0['countnoanswerretry']++;_0x2886eb[_0x76aa('0x8c')]({'id':_0x3620d0[_0x76aa('0x8b')],'field':{'countnoanswerretry':_0x3620d0['countnoanswerretry']}})[_0x76aa('0x58')](function(){_0x2886eb[_0x76aa('0xac')](_0x3620d0,_0x3b0d8a,_0x5713e7)['then'](function(){});});}});break;case _0x76aa('0xb4'):_0x2fdc4f[_0x76aa('0xb5')]+=0x1;_0x3620d0[_0x76aa('0xb6')]+=0x1;_0x3620d0[_0x76aa('0x9a')]=ut[_0x76aa('0x77')](_0x3620d0);ut[_0x76aa('0x78')](_0x3620d0,0x8,_0x76aa('0xb7'));_0x3b0d8a=_0x2fdc4f[_0x76aa('0xb8')];_0x5713e7=_0x2fdc4f[_0x76aa('0x80')];ami['emit'](_0x76aa('0xb9'),ut[_0x76aa('0x7b')](_0x3620d0,'congestion'));rpcDb[_0x76aa('0x67')](_0x3620d0,_0x76aa('0xba'));_0x2886eb[_0x76aa('0xb1')](_0x3620d0,'8',_0x2fdc4f)['then'](function(_0x2276ac){_0x2c59a6=_0x2276ac[_0x76aa('0x7e')]==0x1;if(!_0x2c59a6){if(ut['totalGlobal'](_0x3620d0)>=_0x2fdc4f[_0x76aa('0x81')]){_0x4910fb=ut[_0x76aa('0x82')](_0x3620d0,0xf,_0x76aa('0x83'));rpcDb['createCustomerFinal'](_0x4910fb,_0x76aa('0xbb'));}else{if(_0x3620d0[_0x76aa('0xb6')]>=_0x2fdc4f['dialCongestionMaxRetry']){rpcDb['createCustomerFinal'](_0x3620d0,'[callProgressDetectingCustomer][logCongestion]');}else{rpcDb[_0x76aa('0x87')](ut[_0x76aa('0x88')](_0x3620d0,_0x76aa('0xb6'),_0x2fdc4f[_0x76aa('0xa8')]),_0x3620d0['unlockAgent'],_0x3620d0['activeContact']);}}}else{_0x3620d0['countcongestionretry']++;_0x2886eb[_0x76aa('0x8c')]({'id':_0x3620d0['idContact'],'field':{'countcongestionretry':_0x3620d0[_0x76aa('0xb6')]}})[_0x76aa('0x58')](function(){_0x2886eb['swapAdditionalPhones'](_0x3620d0,_0x3b0d8a,_0x5713e7)[_0x76aa('0x58')](function(){});});}});break;case _0x76aa('0xbc'):_0x2fdc4f['outboundRejectCallsDay']+=0x1;_0x3620d0[_0x76aa('0xbd')]+=0x1;_0x3620d0[_0x76aa('0x9a')]=ut[_0x76aa('0x77')](_0x3620d0);ut[_0x76aa('0x78')](_0x3620d0,0x14,_0x76aa('0xbe'));_0x3b0d8a=_0x2fdc4f[_0x76aa('0xbf')];_0x5713e7=_0x2fdc4f['callAdditionalPhoneAfterMin'];ami[_0x76aa('0x2a')]('custom:agentreject',ut['buildObj'](_0x3620d0,'agentreject'));rpcDb['createCustomerHistory'](_0x3620d0,'[syncHangupRequest][logAgentReject]');_0x2886eb[_0x76aa('0xb1')](_0x3620d0,'20',_0x2fdc4f)[_0x76aa('0x58')](function(_0x432159){_0x2c59a6=_0x432159[_0x76aa('0x7e')]==0x1;if(!_0x2c59a6){if(ut['totalGlobal'](_0x3620d0)>=_0x2fdc4f[_0x76aa('0x81')]){_0x4910fb=ut[_0x76aa('0x82')](_0x3620d0,0x14,_0x76aa('0xbe'));rpcDb[_0x76aa('0x84')](_0x4910fb,_0x76aa('0xc0'));}else{if(_0x3620d0['countagentrejectretry']>=_0x2fdc4f[_0x76aa('0xc1')]){rpcDb[_0x76aa('0x84')](_0x3620d0,_0x76aa('0xc0'));}else{rpcDb[_0x76aa('0x87')](ut[_0x76aa('0x88')](_0x3620d0,_0x76aa('0xbd'),_0x2fdc4f[_0x76aa('0xbf')]),_0x3620d0['unlockAgent'],_0x3620d0[_0x76aa('0xab')]);}}}else{_0x3620d0[_0x76aa('0xae')]++;_0x2886eb['incrementPreviewCounters']({'id':_0x3620d0['idContact'],'field':{'countnoanswerretry':_0x3620d0[_0x76aa('0xae')]}})[_0x76aa('0x58')](function(){_0x2886eb['swapAdditionalPhones'](_0x3620d0,_0x3b0d8a,_0x5713e7)[_0x76aa('0x58')](function(){});});}});break;case'ABANDONED':_0x2fdc4f[_0x76aa('0xc2')]+=0x1;_0x3620d0['countabandonedretry']+=0x1;_0x3620d0[_0x76aa('0x9a')]=ut[_0x76aa('0x77')](_0x3620d0);ut[_0x76aa('0x78')](_0x3620d0,0xb,_0x76aa('0xc3'));rpcDb[_0x76aa('0x67')](_0x3620d0,'[callProgressDetectingCustomer][logAbandoned]');_0x2886eb[_0x76aa('0xb1')](_0x3620d0,'11',_0x2fdc4f)['then'](function(_0x1af32e){_0x2c59a6=_0x1af32e[_0x76aa('0x7e')]==0x1;if(!_0x2c59a6){if(ut['totalGlobal'](_0x3620d0)>=_0x2fdc4f['dialGlobalMaxRetry']){_0x4910fb=ut[_0x76aa('0x82')](_0x3620d0,0xf,_0x76aa('0x83'));rpcDb[_0x76aa('0x84')](_0x4910fb,_0x76aa('0xc4'));}else{if(_0x3620d0['countabandonedetry']>=_0x2fdc4f['dialAbandonedMaxRety']){rpcDb[_0x76aa('0x84')](_0x3620d0,'[callProgressDetectingCustomer][logAbandoned]');}else{rpcDb[_0x76aa('0x87')](ut['scheduledAt'](_0x3620d0,_0x76aa('0xc5'),_0x2fdc4f[_0x76aa('0xc6')]),_0x3620d0['unlockAgent'],_0x3620d0[_0x76aa('0xab')]);}}}else{_0x3620d0['countnoanswerretry']++;_0x2886eb['incrementPreviewCounters']({'id':_0x3620d0[_0x76aa('0x8b')],'field':{'countnoanswerretry':_0x3620d0[_0x76aa('0xae')]}})['then'](function(){_0x2886eb[_0x76aa('0xac')](_0x3620d0,_0x3b0d8a,_0x5713e7)[_0x76aa('0x58')](function(){});});}});break;case'18':_0x2fdc4f[_0x76aa('0xc7')]+=0x1;_0x3620d0['countmachineretry']+=0x1;_0x3620d0[_0x76aa('0x9a')]=ut[_0x76aa('0x77')](_0x3620d0);ut[_0x76aa('0x78')](_0x3620d0,0x12,_0x4e6c09[_0x76aa('0xc8')]||_0x4e6c09[_0x76aa('0xc9')]);ami[_0x76aa('0x2a')](_0x76aa('0xca'),ut[_0x76aa('0x7b')](_0x3620d0,_0x76aa('0xcb')));rpcDb[_0x76aa('0x67')](_0x3620d0,_0x76aa('0xcc'));_0x2886eb[_0x76aa('0xb1')](_0x3620d0,'18',_0x2fdc4f)['then'](function(_0x4586fb){_0x2c59a6=_0x4586fb[_0x76aa('0x7e')]==0x1;if(!_0x2c59a6){if(ut['totalGlobal'](_0x3620d0)>=_0x2fdc4f[_0x76aa('0x81')]){_0x4910fb=ut[_0x76aa('0x82')](_0x3620d0,0x12,'Global');rpcDb['createCustomerFinal'](_0x4910fb,_0x76aa('0xcc'));}else{rpcDb[_0x76aa('0x84')](_0x3620d0,'[callProgressDetectingCustomer][hangupInAMD]');}}else{_0x3620d0[_0x76aa('0xae')]++;_0x2886eb[_0x76aa('0x8c')]({'id':_0x3620d0[_0x76aa('0x8b')],'field':{'countnoanswerretry':_0x3620d0['countnoanswerretry']}})[_0x76aa('0x58')](function(){_0x2886eb[_0x76aa('0xac')](_0x3620d0,_0x3b0d8a,_0x5713e7)['then'](function(){});});}});delete this[_0x76aa('0x15')][_0x4e6c09[_0x76aa('0xa4')]];break;case'19':_0x2fdc4f[_0x76aa('0xc7')]+=0x1;_0x3620d0[_0x76aa('0x9a')]=ut[_0x76aa('0x77')](_0x3620d0);ut[_0x76aa('0x78')](_0x3620d0,0x13,_0x4e6c09['cause-txt']||_0x4e6c09[_0x76aa('0xc9')]);ami['emit'](_0x76aa('0xca'),ut[_0x76aa('0x7b')](_0x3620d0,_0x76aa('0xcb')));rpcDb['createCustomerHistory'](_0x3620d0,'[callProgressDetectingCustomer][machine]');_0x2886eb[_0x76aa('0xb1')](_0x3620d0,'18',_0x2fdc4f)[_0x76aa('0x58')](function(_0x19982e){_0x2c59a6=_0x19982e[_0x76aa('0x7e')]==0x1;if(!_0x2c59a6){if(ut[_0x76aa('0x77')](_0x3620d0)>=_0x2fdc4f[_0x76aa('0x81')]){_0x4910fb=ut['cloneAction'](_0x3620d0,0xf,'Global');rpcDb[_0x76aa('0x84')](_0x4910fb,_0x76aa('0xcd'));}else{rpcDb[_0x76aa('0x84')](_0x3620d0,_0x76aa('0xcd'));}}else{_0x3620d0['countnoanswerretry']++;_0x2886eb[_0x76aa('0x8c')]({'id':_0x3620d0['idContact'],'field':{'countnoanswerretry':_0x3620d0['countnoanswerretry']}})[_0x76aa('0x58')](function(){_0x2886eb[_0x76aa('0xac')](_0x3620d0,_0x3b0d8a,_0x5713e7)[_0x76aa('0x58')](function(){});});}});delete this['actions'][_0x4e6c09[_0x76aa('0xa4')]];break;default:if(_0x3620d0[_0x76aa('0x46')]){ut[_0x76aa('0x52')](_0x2fdc4f,_0x76aa('0xce'));ut[_0x76aa('0xcf')](_0x76aa('0xd0')+_0x2fdc4f[_0x76aa('0x28')],_0x4e6c09);}_0x2fdc4f['outboundUnknownCallsDay']+=0x1;_0x3620d0[_0x76aa('0x9a')]=ut[_0x76aa('0x77')](_0x3620d0);ut[_0x76aa('0x78')](_0x3620d0,0xc,_0x4e6c09[_0x76aa('0xc8')]||_0x4e6c09[_0x76aa('0xc9')]);_0x3b0d8a=_0x2fdc4f[_0x76aa('0xbf')];_0x5713e7=_0x2fdc4f['callAdditionalPhoneAfterMin'];rpcDb[_0x76aa('0x67')](_0x3620d0,_0x76aa('0xd1'));_0x2886eb[_0x76aa('0xb1')](_0x3620d0,'20',_0x2fdc4f)[_0x76aa('0x58')](function(_0x58f065){_0x2c59a6=_0x58f065[_0x76aa('0x7e')]==0x1;if(!_0x2c59a6){if(ut[_0x76aa('0x77')](_0x3620d0)>=_0x2fdc4f[_0x76aa('0x81')]){_0x4910fb=ut[_0x76aa('0x82')](_0x3620d0,0xf,_0x76aa('0x83'));rpcDb['createCustomerFinal'](_0x4910fb,_0x76aa('0xd2'));}else{rpcDb[_0x76aa('0x84')](_0x3620d0,'[callProgressDetectingCustomer][logUnknownGlobal]');}delete this['actions'][_0x4e6c09[_0x76aa('0xa4')]];}else{_0x2886eb[_0x76aa('0xac')](_0x3620d0,_0x3b0d8a,_0x5713e7)[_0x76aa('0x58')](function(){});}});}if(!(_0x3620d0[_0x76aa('0x46')]&&_0xbf78c7==='16')){ut[_0x76aa('0x50')](_0x2fdc4f,_0x76aa('0xd3'));logger['info'](_0x76aa('0xd4'),_0x3620d0[_0x76aa('0x91')],_0x76aa('0x92'),_0x2fdc4f[_0x76aa('0x28')],_0x76aa('0xd5'),_0x2fdc4f[_0x76aa('0x2d')]);}if(_0xbf78c7!=='ANSWER'){delete this[_0x76aa('0x15')][_0x4e6c09[_0x76aa('0xa4')]];delete this[_0x76aa('0x15')][_0x4e6c09[_0x76aa('0xd6')]];}_0x2fdc4f[_0x76aa('0xd7')]=!![];}};Preview[_0x76aa('0xe')]['callProgressDetectingAgent']=function(_0x3152d1,_0x4d0d76,_0x1482e5){if(_['isUndefined'](_0x4d0d76)&&_0x76aa('0xd8')!==typeof _0x4d0d76){return;}if(_[_0x76aa('0xd9')](_0x1482e5)&&'object'!==typeof _0x1482e5){return;}switch(_0x1482e5[_0x76aa('0xda')]){case'0':ut[_0x76aa('0xdb')](_0x3152d1,0x0,_0x76aa('0x79'));rpcDb['createAgentHistory'](_0x3152d1,_0x76aa('0xdc'));break;case'3':ut[_0x76aa('0xdb')](_0x3152d1,0x3,'NoAnswer');rpcDb[_0x76aa('0xdd')](_0x3152d1,_0x76aa('0xde'));break;case'5':ut[_0x76aa('0xdb')](_0x3152d1,0x5,_0x76aa('0xa7'));rpcDb[_0x76aa('0xdd')](_0x3152d1,_0x76aa('0xdf'));break;case'8':ut['logAgent'](_0x3152d1,0x8,_0x76aa('0xb7'));rpcDb[_0x76aa('0xdd')](_0x3152d1,_0x76aa('0xe0'));break;case'22':ut[_0x76aa('0xdb')](_0x3152d1,0x16,_0x76aa('0xe1'));rpcDb[_0x76aa('0xdd')](_0x3152d1,_0x76aa('0xe2'));break;default:ut[_0x76aa('0xdb')](_0x3152d1,0xc,_0x1482e5[_0x76aa('0xda')]);rpcDb[_0x76aa('0xdd')](_0x3152d1,_0x76aa('0xe0'));}ut['updateOriginated'](_0x4d0d76,_0x76aa('0xe3'));logger[_0x76aa('0x24')](_0x76aa('0xe4'),_0x3152d1[_0x76aa('0x91')],_0x76aa('0x92'),_0x4d0d76[_0x76aa('0x28')],_0x76aa('0xd5'),_0x4d0d76[_0x76aa('0x2d')]);delete this['actions'][_0x3152d1[_0x76aa('0x91')]];};Preview['prototype'][_0x76aa('0xb1')]=function(_0xae171,_0x2045a2,_0x5ce3ea){return cmHopperAdditionalPhone[_0x76aa('0xb1')](_0xae171,_0x2045a2,_0x5ce3ea)[_0x76aa('0x4e')](logger[_0x76aa('0x24')](_0x76aa('0xe5')));};Preview[_0x76aa('0xe')]['swapAdditionalPhones']=function(_0x2c6647,_0x4d8c38,_0x2e2f07){return cmHopperAdditionalPhone[_0x76aa('0xac')](_0x2c6647,_0x4d8c38,_0x2e2f07)['catch'](logger[_0x76aa('0x24')](_0x76aa('0xe6')));};Preview[_0x76aa('0xe')][_0x76aa('0x8c')]=function(_0x112046){return Promise[_0x76aa('0xe7')]()[_0x76aa('0x58')](cmHopperAdditionalPhone[_0x76aa('0x8c')](_0x112046))['catch'](logger[_0x76aa('0x24')](_0x76aa('0xe8')));};Preview[_0x76aa('0xe')][_0x76aa('0xe9')]=function(_0x3168e1,_0xd5e0e2,_0x41de8e,_0x260bca,_0x559940){var _0x37331b=this;return new Promise(function(_0x28a40a,_0x13d96a){if(_['isNil'](_0xd5e0e2)||_[_0x76aa('0x41')](_0xd5e0e2[_0x76aa('0xea')])||_[_0x76aa('0x41')](_0xd5e0e2[_0x76aa('0xeb')])||_[_0x76aa('0x41')](_0xd5e0e2['VoiceQueueId'])){_0x13d96a(ut[_0x76aa('0x36')]('Contact\x20is\x20undefined',_0x260bca,_0x559940));return;}var _0x35e12a=uuid['v4']();var _0x25df39=_0x37331b[_0x76aa('0x13')][_0xd5e0e2[_0x76aa('0x43')][_0x76aa('0x28')]];var _0x5e68bd=_0x41de8e?_0x37331b[_0x76aa('0x16')][_0x41de8e]['id']:undefined;_0x37331b['actions'][_0x35e12a]=new Action(_0xd5e0e2,_0x25df39,_0x35e12a,_0x41de8e,_0x5e68bd);var _0x577463=_0x37331b[_0x76aa('0x15')][_0x35e12a];_0x577463[_0x76aa('0x89')]=_0x260bca;_0x577463['activeContact']=_0x559940;_0x577463[_0x76aa('0xec')]=_0x41de8e;if(_['isEmpty'](_0x3168e1)){_0x37331b[_0x76aa('0xed')](_0x577463,_0x25df39,_0xd5e0e2,_0x41de8e)[_0x76aa('0x58')](function(_0x2e4046){logger[_0x76aa('0x24')](_0x76aa('0xee'),_0x76aa('0xef')+_0x577463['queue']+_0x76aa('0xf0')+_0x577463[_0x76aa('0x8b')],JSON[_0x76aa('0x45')](_0x2e4046));ami[_0x76aa('0x2a')](_0x76aa('0xf1'),ut[_0x76aa('0x7b')](_0x577463,_0x76aa('0xf2'),_0x37331b[_0x76aa('0x13')][_0x577463[_0x76aa('0x44')]]));_0x28a40a(ut[_0x76aa('0x36')](_0x76aa('0xf3')));})[_0x76aa('0x4e')](function(_0x17e02c){ut[_0x76aa('0x33')](_0x76aa('0xf4'),_0x17e02c);_0x13d96a(ut[_0x76aa('0x36')](_0x76aa('0xf5'),_0x260bca,_0x559940));});}else{_0x25df39[_0x76aa('0xf6')]+=0x1;ut['logBlacklist'](_0x577463);rpcDb[_0x76aa('0xf7')](_0x577463,'[Blacklist][error]');delete _0x37331b[_0x76aa('0x15')][_0x35e12a];_0x13d96a(ut[_0x76aa('0x36')]('Contact\x20in\x20black\x20List',_0x260bca,_0x559940));}});};Preview[_0x76aa('0xe')]['isTrunkReachable']=function(_0x272e84){return!_[_0x76aa('0x41')](_0x272e84)&&!_[_0x76aa('0x41')](_0x272e84['name'])&&!_[_0x76aa('0x41')](_0x272e84['active'])&&_0x272e84['active']&&!_[_0x76aa('0x41')](this['trunks'][util[_0x76aa('0x26')]('SIP/%s',_0x272e84['name'])])&&!_[_0x76aa('0x41')](this[_0x76aa('0x14')][util[_0x76aa('0x26')](_0x76aa('0xf8'),_0x272e84[_0x76aa('0x28')])][_0x76aa('0x4c')])&&(this[_0x76aa('0x14')][util[_0x76aa('0x26')](_0x76aa('0xf8'),_0x272e84[_0x76aa('0x28')])][_0x76aa('0x4c')]===_0x76aa('0xf9')||this[_0x76aa('0x14')][util[_0x76aa('0x26')]('SIP/%s',_0x272e84[_0x76aa('0x28')])][_0x76aa('0x4c')]===_0x76aa('0xfa'));};Preview[_0x76aa('0xe')]['run']=function(_0x120ad9,_0x50a349){return this[_0x76aa('0xfb')](_0x120ad9,_0x50a349)['then'](function(_0x455e90){return _['pick'](_0x455e90,[_0x76aa('0x36')]);})['catch'](function(_0x31b7a8){if(_0x31b7a8['unlock']){rpcDb[_0x76aa('0xfc')](_0x120ad9);}if(_0x31b7a8[_0x76aa('0xfd')]){rpcDb['disableContact'](_0x120ad9);}throw _[_0x76aa('0x47')](_0x31b7a8,['message']);});};Preview[_0x76aa('0xe')]['execRun']=function(_0x1974e1,_0x5648ab){var _0x5bf806=this;var _0x8577e7,_0x867c24;return rpcDb[_0x76aa('0xfe')](_0x1974e1)[_0x76aa('0x58')](function(_0x1f56f6){if(!_[_0x76aa('0x41')](_0x1f56f6[0x0])){_0x867c24=_0x1f56f6[0x0][_0x76aa('0xff')]?![]:!![];_0x8577e7=_0x1f56f6[0x0][_0x76aa('0xff')]?!![]:![];_0x8577e7=_0x5648ab?!![]:_0x8577e7;}var _0x2e95a1=_0x5bf806[_0x76aa('0x100')](_0x1f56f6);if(_0x2e95a1['isValid']){rpcDb[_0x76aa('0x101')](_[_0x76aa('0x47')](_0x1f56f6[0x0],[_0x76aa('0x102'),_0x76aa('0xeb')]))[_0x76aa('0x58')](function(_0x1aeeb5){_0x5bf806[_0x76aa('0xe9')](_0x1aeeb5,_0x1f56f6[0x0],_0x5648ab,_0x867c24,_0x8577e7)[_0x76aa('0x58')](function(_0x1cb8ad){return _0x1cb8ad;})[_0x76aa('0x4e')](function(_0x181303){throw _0x181303;});})[_0x76aa('0x4e')](function(_0x3274a9){ut[_0x76aa('0x33')]('[Preview][checkIsBlackList]',_0x3274a9);throw ut['message'](_0x76aa('0x103'),_0x867c24,_0x8577e7);});}else{throw ut[_0x76aa('0x36')](_0x2e95a1[_0x76aa('0x36')],_0x867c24,_0x8577e7);}})['catch'](function(_0x4db099){ut[_0x76aa('0x33')](_0x76aa('0x104'),_0x4db099);throw ut[_0x76aa('0x36')]('Call\x20unsuccessful',![],!![]);});};Preview[_0x76aa('0xe')][_0x76aa('0x100')]=function(_0x4830c8){if(_['isNil'](_0x4830c8)||_['isEmpty'](_0x4830c8)||!_[_0x76aa('0x41')](_0x4830c8[0x0][_0x76aa('0x5c')])&&_[_0x76aa('0x41')](_0x4830c8[0x0]['Agent'][_0x76aa('0x28')])){ut[_0x76aa('0x33')]('[Preview][validateContact][Empty\x20Contact]',_0x4830c8);return{'isValid':![],'message':'Empty\x20Contact'};}var _0x328d1a=this[_0x76aa('0x13')][_0x4830c8[0x0][_0x76aa('0x43')]['name']];_0x328d1a[_0x76aa('0x36')]=utils[_0x76aa('0x31')]['ACTIVE'];if(_[_0x76aa('0x41')](_0x328d1a)){ut[_0x76aa('0x33')]('[Preview][validateContact][Empty\x20Campaign]',_0x328d1a);return{'isValid':![],'message':_0x76aa('0x105')};}if(!this[_0x76aa('0x70')](_0x328d1a['Trunk'])){ut[_0x76aa('0x33')]('[Preview][validateContact][Trunk\x20not\x20working\x20correctly]','campaign\x20Name:\x20'+_0x328d1a[_0x76aa('0x28')]+_0x76aa('0x106'));if(!this[_0x76aa('0x70')](_0x328d1a[_0x76aa('0x107')])){ut[_0x76aa('0x33')](_0x76aa('0x108'),_0x328d1a[_0x76aa('0x28')]+_0x76aa('0x109'));return{'isValid':![],'message':_0x76aa('0x10a')};}}if(!ut[_0x76aa('0x10b')](_0x328d1a['dialActive'])){ut['logger'](_0x76aa('0x10c'),_0x328d1a[_0x76aa('0x28')]+_0x76aa('0x10d'));return{'isValid':![],'message':_0x76aa('0x10e')+_0x328d1a[_0x76aa('0x28')]+_0x76aa('0x10d')};}return{'isValid':!![],'message':'Is\x20Valid'};};Preview[_0x76aa('0xe')][_0x76aa('0xed')]=function(_0x17f15e,_0x29fbf6,_0x38694d,_0xf0b932){var _0x1c8cf5=this;return new Promise(function(_0x5a8d0f,_0x5f513d){var _0x54e70c=_0x17f15e[_0x76aa('0x91')];var _0x2bd86e=_0x1c8cf5[_0x76aa('0x70')](_0x29fbf6[_0x76aa('0x71')])?util[_0x76aa('0x26')]('SIP/%s/%s%s',_0x29fbf6['Trunk'][_0x76aa('0x28')],_[_0x76aa('0x41')](_0x29fbf6[_0x76aa('0x10f')])?'':_0x29fbf6[_0x76aa('0x10f')][_0x76aa('0x110')]()||'',_0x29fbf6['dialCutDigit']>0x0?_0x38694d[_0x76aa('0xeb')]['substring'](_0x29fbf6[_0x76aa('0x111')]):_0x38694d['phone']):util['format'](_0x76aa('0x112'),_['isNil'](_0x29fbf6[_0x76aa('0x107')])?_0x29fbf6[_0x76aa('0x71')][_0x76aa('0x28')]:_0x29fbf6[_0x76aa('0x107')][_0x76aa('0x28')],_[_0x76aa('0x41')](_0x29fbf6[_0x76aa('0x10f')])?'':_0x29fbf6[_0x76aa('0x10f')]['trim']()||'',_0x29fbf6[_0x76aa('0x111')]>0x0?_0x38694d[_0x76aa('0xeb')][_0x76aa('0x113')](_0x29fbf6[_0x76aa('0x111')]):_0x38694d[_0x76aa('0xeb')]);var _0x4e9063=_0x1c8cf5[_0x76aa('0x70')](_0x29fbf6['Trunk'])?ut[_0x76aa('0x114')](_0x29fbf6['Trunk'][_0x76aa('0x115')],_0x29fbf6['dialOriginateCallerIdName'],_0x29fbf6[_0x76aa('0x116')]>0x0?ut['getCallerIdRandom'](_0x29fbf6[_0x76aa('0x117')],_0x29fbf6[_0x76aa('0x116')]):_0x29fbf6[_0x76aa('0x117')]):ut['getCallerId'](_['isNil'](_0x29fbf6[_0x76aa('0x107')])?_0x29fbf6['Trunk'][_0x76aa('0x115')]:_0x29fbf6[_0x76aa('0x107')][_0x76aa('0x115')],_0x29fbf6['dialOriginateCallerIdName'],_0x29fbf6['dialRandomLastDigitCallerIdNumber']>0x0?ut['getCallerIdRandom'](_0x29fbf6['dialOriginateCallerIdNumber'],_0x29fbf6[_0x76aa('0x116')]):_0x29fbf6[_0x76aa('0x117')]);if(_0x4e9063){_0x17f15e[_0x76aa('0x118')]=ut[_0x76aa('0x119')](_0x4e9063);_0x17f15e[_0x76aa('0x11a')]=ut[_0x76aa('0x11b')](_0x4e9063);}var _0x450f64=ut[_0x76aa('0x11c')](_0x29fbf6,_0x38694d,_0x2bd86e,_0x4e9063,_0x54e70c,_0x17f15e);_[_0x76aa('0x11d')](_0x17f15e,ut[_0x76aa('0x11e')](_0x450f64));_0x17f15e[_0x76aa('0x61')]=moment()[_0x76aa('0x26')](_0x76aa('0x62'));_0x29fbf6['variables']=_0x450f64;var _0x2b12e9=ut['variablesAction'](_0x17f15e,_0x29fbf6,_0x450f64,_0x17f15e[_0x76aa('0xab')],_0xf0b932);return ami[_0x76aa('0x4b')](_0x2b12e9)[_0x76aa('0x58')](function(_0x3fb275){_0x29fbf6[_0x76aa('0x2d')]+=0x1;logger[_0x76aa('0x24')](_0x76aa('0x11f'),_0x54e70c,_0x76aa('0x92'),_0x29fbf6[_0x76aa('0x28')],_0x76aa('0xd5'),_0x29fbf6[_0x76aa('0x2d')]);_0x5a8d0f(_0x3fb275);})['catch'](function(_0x5cada7){ut[_0x76aa('0xdb')](_0x17f15e,0xe,_0x76aa('0x120'));rpcDb['createAgentHistory'](_0x17f15e,_0x76aa('0x121'));_0x5f513d(_0x5cada7);});});};Preview[_0x76aa('0xe')][_0x76aa('0x1e')]=function(_0x138f0b){if(this[_0x76aa('0x15')][_0x138f0b[_0x76aa('0xa4')]]){this[_0x76aa('0x15')][_0x138f0b['linkedid']][_0x76aa('0x4d')]=_0x138f0b[_0x76aa('0x4d')];}};Preview['prototype']['syncOriginateResponse']=function(_0x30a6e5){var _0x28ab3f=this;var _0x97833d=this[_0x76aa('0x15')][_0x30a6e5[_0x76aa('0x122')]];if(_0x97833d){if(_0x97833d[_0x76aa('0xec')]&&this[_0x76aa('0x16')][_0x97833d[_0x76aa('0xec')]]){ut[_0x76aa('0x123')](_0x97833d,this[_0x76aa('0x16')][_0x97833d[_0x76aa('0xec')]][_0x76aa('0x28')],this[_0x76aa('0x16')][_0x97833d['lookAgent']]['id']);}var _0x493a63=_[_0x76aa('0x124')](_0x97833d);_0x493a63[_0x76aa('0x8e')]=moment()[_0x76aa('0x26')](_0x76aa('0x62'));var _0x59a7d3=_0x28ab3f['campaignsPreview'][_0x97833d[_0x76aa('0x44')]];if(ut[_0x76aa('0x125')](_0x30a6e5[_0x76aa('0x126')])){if(_0x97833d['unlockAgent']){rpcDb['unlockContact'](_0x97833d['idContact']);}if(_0x97833d[_0x76aa('0xab')]){rpcDb['disableContact'](_0x97833d[_0x76aa('0x8b')]);}ami[_0x76aa('0x2a')](_0x76aa('0x127'),ut[_0x76aa('0x7b')](_0x97833d,_0x76aa('0x128'),this[_0x76aa('0x13')][_0x97833d[_0x76aa('0x44')]]));this[_0x76aa('0x129')](_0x493a63,_0x59a7d3,_0x30a6e5);}else{_0x97833d[_0x76aa('0x61')]=moment()[_0x76aa('0x26')](_0x76aa('0x62'));ut[_0x76aa('0xdb')](_0x493a63,0x4,_0x76aa('0x9b'));rpcDb[_0x76aa('0xdd')](_0x493a63,_0x76aa('0x12a'));}}};Preview[_0x76aa('0xe')]['syncHangup']=function(_0x275653){var _0x5e8cec=this[_0x76aa('0x15')][_0x275653['linkedid']];var _0x17bd1a;if(_0x5e8cec){_0x17bd1a=this['campaignsPreview'][_0x5e8cec[_0x76aa('0x44')]];logger['info']('[syncHangup][talking]',_0x275653[_0x76aa('0xa4')],_0x76aa('0x92'),_0x17bd1a[_0x76aa('0x28')],_0x76aa('0xa3'),_0x17bd1a[_0x76aa('0x2e')]);}if(this[_0x76aa('0x15')][_0x275653['linkedid']]&&_0x275653[_0x76aa('0xa4')]!==_0x275653[_0x76aa('0x91')]){if(_0x275653[_0x76aa('0x12b')]==='16'&&this[_0x76aa('0x15')][_0x275653['linkedid']][_0x76aa('0x46')]){this[_0x76aa('0x74')](_0x275653,_0x275653[_0x76aa('0xa4')],_0x275653[_0x76aa('0x12b')]);}else if(this[_0x76aa('0x15')][_0x275653[_0x76aa('0xa4')]][_0x76aa('0x46')]){logger[_0x76aa('0x24')](_0x76aa('0x12c'),_0x275653[_0x76aa('0xa4')],_0x275653[_0x76aa('0x12b')],_0x76aa('0x92'),_0x17bd1a['name'],'pTalking:\x20',_0x17bd1a[_0x76aa('0x2e')]);this[_0x76aa('0x74')](_0x275653,_0x275653[_0x76aa('0xa4')],_0x275653[_0x76aa('0x12b')]);}}else if(_0x5e8cec&&_[_0x76aa('0x41')](_0x5e8cec[_0x76aa('0x12d')])&&_0x17bd1a[_0x76aa('0x12e')]&&_0x275653[_0x76aa('0xa4')]===_0x275653[_0x76aa('0x91')]&&_[_0x76aa('0x41')](_0x275653[_0x76aa('0xda')])&&_0x275653['cause']==='16'&&_0x275653[_0x76aa('0x12f')]==='6'&&_['isUndefined'](_0x5e8cec[_0x76aa('0x130')])){if(_0x5e8cec[_0x76aa('0x89')]){rpcDb[_0x76aa('0xfc')](_0x5e8cec[_0x76aa('0x8b')]);}if(_0x5e8cec[_0x76aa('0xab')]){rpcDb['disableContact'](_0x5e8cec['idContact']);}_0x275653[_0x76aa('0xda')]='22';this['callProgressDetectingAgent'](_0x5e8cec,_0x17bd1a,_0x275653);}else if(_0x5e8cec&&_0x5e8cec[_0x76aa('0x130')]){if(_0x275653[_0x76aa('0x12b')]==='16'&&this[_0x76aa('0x15')][_0x275653[_0x76aa('0xa4')]][_0x76aa('0x46')]){logger['info']('[syncHangup][talking][transfer]',_0x275653[_0x76aa('0xa4')],_0x275653[_0x76aa('0x12b')],_0x76aa('0x92'),_0x17bd1a[_0x76aa('0x28')],_0x76aa('0xa3'),_0x17bd1a[_0x76aa('0x2e')]);this[_0x76aa('0x74')](_0x275653,_0x275653[_0x76aa('0xa4')],_0x275653[_0x76aa('0x12b')]);}else if(this[_0x76aa('0x15')][_0x275653['linkedid']][_0x76aa('0x46')]){logger[_0x76aa('0x24')]('[syncHangup][talking][cause]',_0x275653[_0x76aa('0xa4')],_0x275653[_0x76aa('0x12b')],_0x76aa('0x92'),_0x17bd1a[_0x76aa('0x28')],_0x76aa('0xa3'),_0x17bd1a[_0x76aa('0x2e')]);this[_0x76aa('0x74')](_0x275653,_0x275653['linkedid'],_0x275653[_0x76aa('0x12b')]);}}};Preview[_0x76aa('0xe')][_0x76aa('0x1c')]=function(_0x2f2a27){if(this['actions'][_0x2f2a27[_0x76aa('0xd6')]]&&_0x2f2a27[_0x76aa('0xd6')]!==_0x2f2a27[_0x76aa('0x131')]){this[_0x76aa('0x74')](_0x2f2a27,_0x2f2a27[_0x76aa('0xd6')],_0x2f2a27[_0x76aa('0xc9')]);}};Preview[_0x76aa('0xe')][_0x76aa('0x132')]=function(_0x1f7f1d){if(this[_0x76aa('0x15')][_0x1f7f1d[_0x76aa('0xa4')]]&&_0x1f7f1d[_0x76aa('0xa4')]!==_0x1f7f1d[_0x76aa('0x91')]&&!this[_0x76aa('0x15')][_0x1f7f1d['linkedid']]['dialAnswer']){if(_0x1f7f1d[_0x76aa('0x12b')]==='1'){this[_0x76aa('0x74')](_0x1f7f1d,_0x1f7f1d['linkedid'],_0x1f7f1d[_0x76aa('0x12b')]);}}};Preview['prototype'][_0x76aa('0x133')]=function(_0x2e9c1a,_0x1b4f9e,_0x4218e4){if(this[_0x76aa('0x15')][_0x2e9c1a]){if(_[_0x76aa('0x41')](this[_0x76aa('0x15')][_0x2e9c1a][_0x76aa('0x134')])){this['actions'][_0x2e9c1a][_0x76aa('0x134')]={};}this[_0x76aa('0x15')][_0x2e9c1a]['variables'][_0x1b4f9e]=_0x4218e4;}};Preview['prototype'][_0x76aa('0x20')]=function(_0xcd05b0){try{if(!_[_0x76aa('0x41')](_0xcd05b0)){if(ut[_0x76aa('0x135')](_[_0x76aa('0x136')](_0xcd05b0['variable'])[0x0])){this[_0x76aa('0x133')](_0xcd05b0['uniqueid'],_[_0x76aa('0x136')](_0xcd05b0[_0x76aa('0x137')])[0x0],_0xcd05b0[_0x76aa('0x138')]);}}}catch(_0x23c297){logger[_0x76aa('0x139')](_0x76aa('0x13a'),util[_0x76aa('0x13b')](_0x23c297,{'showHidden':![],'depth':null}));}};Preview[_0x76aa('0xe')][_0x76aa('0x13c')]=function(_0x29c147){if(_0x29c147){if(this[_0x76aa('0x15')][_0x29c147[_0x76aa('0x13d')]]){this[_0x76aa('0x15')][_0x29c147['transfertargetlinkedid']][_0x76aa('0x130')]=!![];}}};Preview['prototype']['syncBlindTransfer']=function(_0x4ae6f1){if(_0x4ae6f1){if(this[_0x76aa('0x15')][_0x4ae6f1['transfererlinkedid']]){this['actions'][_0x4ae6f1['transfererlinkedid']]['transfer']=!![];}}};module[_0x76aa('0x13e')]=Preview;
\ No newline at end of file
+var _0xf3cd=['dialPreviewAutoRecallMe','recallMe','clearZombieChannel','enqueue','queue','originated:\x20','pTalking:\x20','dialAnswer','pick','UserId','ListId','status','channel','catch','No\x20such\x20channel','updateOriginated','[clearZombieChannel]','loggerError','[action]','size','getContactRecallMe','agentReadyId','isNil','length','getDiff','scheduledat','dialRecallMeTimeout','Agent','run','then','logger2','[RecallMe]','outboundReCallsDay','logCustomer','RecallInQueue','dialRecallInQueue','[HistoryDialRecallInQueue][historyCatch]','RecallFailedTimeout','createCustomerHistory','[HistoryRecallClose]','createCustomerFinal','[getContactRecallMe]','IsNotLoggedIn','loggedIn','CAMPAIGN_STATUS','NO_AGENTS_LOGGED','isTrunkReachable','Trunk','TrunkBackup','UNREACHABLE_TRUNK','ACTIVE','outboundNoSuchCallsDay','countnosuchnumberretry','countglobal','totalGlobal','NoSuchNumber','custom:agentnosuchnumber','nosuchnumber','[callProgressDetectingCustomer][logNoSuch]','dialNoSuchNumberRetryFrequency','dialGlobalMaxRetry','cloneAction','Global','[callProgressDetectingCustomer][logNoSuchGlobal]','dialNoSuchNumberMaxRetry','rescheduleContact','scheduledAt','unlockAgent','activeContact','actioncountonusuch','idContact','swapAdditionalPhones','ANSWER','YYYY-MM-DD\x20HH:mm:ss','responsetime','answertime','uniqueid','\x20Queue','custom:agentconnect','buildObj','connect','acw','custom:agentConnectPreview','buildAcw','complete','outboundAnswerCallsDay','answered','decrementTalkink','Answer','[callProgressDetectingCustomer][logAnswer]','[callProgressDetectingCustomer][logAnswerGlobal]','crateCustomerReportQueue','talktime','sumBillable','[syncHangup][talking][decrement]','linkedid','BUSY','outboundBusyCallsDay','dialBusyRetryFrequency','callAdditionalPhoneAfterMin','busy','additional','dialBusyMaxRetry','[callProgressDetectingCustomer][logBusy]','countbusyretry','incrementPreviewCounters','NOANSWER','outboundNoAnswerCallsDay','NoAnswer','dialNoAnswerRetryFrequency','buildNoAnswerEventPayload','verifyAdditionalPhones','[callProgressDetectingCustomer][logNoAnswerGlobal]','countnoanswerretry','dialNoAnswerMaxRetry','[callProgressDetectingCustomer][logNoAnswer]','CONGESTION','outboundCongestionCallsDay','Congestion','dialCongestionRetryFrequency','custom:agentcongestion','congestion','[callProgressDetectingCustomer][logCongestion]','[callProgressDetectingCustomer][logCongestionGlobal]','countcongestionretry','outboundRejectCallsDay','countagentrejectretry','AgentReject','custom:agentreject','agentreject','[syncHangupRequest][logAgentReject]','[callProgressDetectingCustomer][logAgentReject]','dialAgentRejectRetryFrequency','ABANDONED','outboundAbandonedCallsDay','countabandonedretry','Abandoned','[callProgressDetectingCustomer][logAbandoned]','dialAbandonedMaxRety','dialAbandonedRetryFrequency','outboundUnknownCallsDay','countmachineretry','cause-txt','dialstatus','custom:amd','amd','[callProgressDetectingCustomer][machine]','[default]','[callProgressDetectingCustomer][logUnknown]','[originated][decrement][callProgressDetectingCustomer]','destlinkedid','queueSummaryCountersUpdated','callProgressDetectingAgent','isUndefined','object','reason','logAgent','createAgentHistory','[callProgressDetectingAgent][logNoSuch]','[callProgressDetectingAgent][logBusy]','[callProgressDetectingAgent][logAnswerAGI]','[originated][decrement][callProgressDetectingAgent]','[verifyAdditionalPhone]\x20','[swapAdditionalPhone]\x20','resolve','[incrementPreviewCounters]\x20','checkInBlack','VoiceQueueId','Contact\x20is\x20undefined','Queue','lookAgent','isEmpty','execCall','[Preview][execCall][success]','custom:agentcalled','called','Calling','[Preview][execCall][failure]','Call\x20failed','outboundBlacklistCallsDay','createHistory','[Blacklist][error]','Contact\x20in\x20black\x20List','active','SIP/%s','unmonitored','execRun','unlockContact','disableContact','getContactPreview','recallme','validateContact','isValid','phone','[Preview][checkIsBlackList]','[Preview][getContactPreview]','Call\x20unsuccessful','Empty\x20Contact','[Preview][validateContact][Empty\x20Campaign]','Empty\x20Campaign','[Preview][validateContact][Trunk\x20not\x20working\x20correctly]','campaign\x20Name:\x20','\x20Trunk\x20is\x20not\x20active','Trunk\x20not\x20working\x20correctly','isActive','[Preview][validateContact][Campaign\x20Active]','\x20Not\x20Active','Is\x20Valid','SIP/%s/%s%s','dialPrefix','trim','dialCutDigit','substring','getCallerId','callerid','dialOriginateCallerIdName','dialRandomLastDigitCallerIdNumber','getCallerIdRandom','dialOriginateCallerIdNumber','originatecalleridname','extractCalleridName','addVariables','toLowerVariables','variables','variablesAction','[originated][increment]','OriginateError','syncNewExten','actionid','clone','response','rejected','starttime','[callProgressDetectingAgent][logAnswer]','[syncHangup][talking]','cause','callProgressDetectingCustomer','[syncHangup][talking][cause]','statedesc','dialQueueProject','channelstate','transfer','[syncHangup][talking][transfer]','destuniqueid','addVariable','filterKey','keys','variable','value','error','[syncVarSet][Preview]','transfertargetlinkedid','transfererlinkedid','exports','util','lodash','uuid','moment','ioredis','../../../config/environment','preview','../../../config/logger','actionPreview','./rpcDb','../rpc/cmHopperAdditionalPhone','./action','./util/util','../dialer/utils','redis','prototype','tail','finally','sequence','campaignsPreview','trunks','actions','agents','clockClearZombieChannels','originateresponse','syncOriginateResponse','hangup','syncHangup','bind','hanguprequest','syncHangupRequest','dialend','syncDialEnd','newexten','varset','syncVarSet','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','loopCampaigns','emit','info','[DEBUG]\x20Emit\x20voice_queue_channel:remove\x20event','stringify','format','voice:queue:%s','name','voice_queue_presence:remove','sendMessageOneNotActive','originated','pTalking','available','paused','message','INACTIVE','logger','DEACTIVATED','\x20is\x20deactivated','syncCampaigns','hasOwnProperty','dialMethod','booked','type','dialActive','setMessage'];(function(_0x5774af,_0x411c94){var _0x480589=function(_0x414114){while(--_0x414114){_0x5774af['push'](_0x5774af['shift']());}};_0x480589(++_0x411c94);}(_0xf3cd,0xfe));var _0xdf3c=function(_0x5b8685,_0x1a1c28){_0x5b8685=_0x5b8685-0x0;var _0xa3ef57=_0xf3cd[_0x5b8685];return _0xa3ef57;};'use strict';var util=require(_0xdf3c('0x0'));var _=require(_0xdf3c('0x1'));var uuid=require(_0xdf3c('0x2'));var moment=require(_0xdf3c('0x3'));var Redis=require(_0xdf3c('0x4'));var config=require(_0xdf3c('0x5'));var logger=require('../../../config/logger')(_0xdf3c('0x6'));var loggerAction=require(_0xdf3c('0x7'))(_0xdf3c('0x8'));var ami=require('../ami');var rpcDb=require(_0xdf3c('0x9'));var cmHopperAdditionalPhone=require(_0xdf3c('0xa'));var Action=require(_0xdf3c('0xb'));var ut=require(_0xdf3c('0xc'));var utils=require(_0xdf3c('0xd'));config[_0xdf3c('0xe')]=_['defaults'](config[_0xdf3c('0xe')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xdf3c('0xe')]));var Sequence=function(){};Sequence[_0xdf3c('0xf')]['enqueue']=function(_0x1dba4c){this[_0xdf3c('0x10')]=this[_0xdf3c('0x10')]?this[_0xdf3c('0x10')][_0xdf3c('0x11')](_0x1dba4c):_0x1dba4c();};function Preview(_0x1c456b){this[_0xdf3c('0x12')]=new Sequence();this[_0xdf3c('0x13')]=_0x1c456b['voiceQueues'];this[_0xdf3c('0x14')]=_0x1c456b[_0xdf3c('0x14')];this[_0xdf3c('0x15')]={};this[_0xdf3c('0x16')]=_0x1c456b['agents'];this[_0xdf3c('0x17')]=0x0;ami['on'](_0xdf3c('0x18'),this[_0xdf3c('0x19')]['bind'](this));ami['on'](_0xdf3c('0x1a'),this[_0xdf3c('0x1b')][_0xdf3c('0x1c')](this));ami['on'](_0xdf3c('0x1d'),this[_0xdf3c('0x1e')][_0xdf3c('0x1c')](this));ami['on'](_0xdf3c('0x1f'),this[_0xdf3c('0x20')][_0xdf3c('0x1c')](this));ami['on'](_0xdf3c('0x21'),this['syncNewExten'][_0xdf3c('0x1c')](this));ami['on'](_0xdf3c('0x22'),this[_0xdf3c('0x23')][_0xdf3c('0x1c')](this));ami['on'](_0xdf3c('0x24'),this[_0xdf3c('0x25')][_0xdf3c('0x1c')](this));ami['on'](_0xdf3c('0x26'),this[_0xdf3c('0x27')][_0xdf3c('0x1c')](this));this[_0xdf3c('0x28')](this[_0xdf3c('0x13')]);}function emit(_0x25487c,_0x5d2390,_0x4d620f){io['to'](_0x25487c)[_0xdf3c('0x29')](_0x5d2390,_0x4d620f);}function emitVoiceQueueChannelRemove(_0x583ce4){logger[_0xdf3c('0x2a')](_0xdf3c('0x2b'),JSON[_0xdf3c('0x2c')](_0x583ce4));emit(util[_0xdf3c('0x2d')](_0xdf3c('0x2e'),_0x583ce4[_0xdf3c('0x2f')]),'voice_queue_channel:remove',_0x583ce4);io[_0xdf3c('0x29')](_0xdf3c('0x30'),_0x583ce4);}function notSendMessagesQueue(_0x13e3ca){if(_0x13e3ca[_0xdf3c('0x31')]){if(_0x13e3ca[_0xdf3c('0x32')]===0x0&&_0x13e3ca[_0xdf3c('0x33')]===0x0){_0x13e3ca[_0xdf3c('0x31')]=![];_0x13e3ca[_0xdf3c('0x34')]=0x0;_0x13e3ca[_0xdf3c('0x35')]=0x0;_0x13e3ca[_0xdf3c('0x36')]=utils['CAMPAIGN_STATUS'][_0xdf3c('0x37')];ut[_0xdf3c('0x38')]('[CampaignPreview]\x20Campaign\x20Queue:\x20',_0x13e3ca[_0xdf3c('0x2f')]+'\x20is\x20not\x20active');}else{_0x13e3ca['message']=utils['CAMPAIGN_STATUS'][_0xdf3c('0x39')];ut[_0xdf3c('0x38')]('[CampaignPreview]\x20Campaign\x20Queue:\x20',_0x13e3ca['name']+_0xdf3c('0x3a'));}}}Preview[_0xdf3c('0xf')][_0xdf3c('0x28')]=function(){var _0x1ccdd4=this;setInterval(function(){_0x1ccdd4['syncCampaigns']();},0x7cf);};Preview[_0xdf3c('0xf')][_0xdf3c('0x3b')]=function(){var _0x5386bf=this['campaignsPreview'];this[_0xdf3c('0x17')]+=0x1;for(var _0x46f0e3 in _0x5386bf){if(_0x5386bf[_0xdf3c('0x3c')](_0x46f0e3)&&(_0x5386bf[_0x46f0e3]['dialMethod']===_0xdf3c('0x6')||_0x5386bf[_0x46f0e3][_0xdf3c('0x3d')]===_0xdf3c('0x3e'))&&_0x5386bf[_0x46f0e3][_0xdf3c('0x3f')]==='outbound'){if(this[_0xdf3c('0x17')]>0x7){this[_0xdf3c('0x17')]=0x0;this['clearZombieChannels']();}}if(_0x5386bf[_0xdf3c('0x3c')](_0x46f0e3)&&_0x5386bf[_0x46f0e3][_0xdf3c('0x3d')]===_0xdf3c('0x6')&&_0x5386bf[_0x46f0e3][_0xdf3c('0x3f')]==='outbound'){if(_0x5386bf[_0x46f0e3][_0xdf3c('0x40')]){this[_0xdf3c('0x41')](_0x5386bf[_0x46f0e3]);if(_0x5386bf[_0x46f0e3][_0xdf3c('0x42')])this[_0xdf3c('0x43')](_0x5386bf[_0x46f0e3]);}else{notSendMessagesQueue(_0x5386bf[_0x46f0e3]);}}}};Preview['prototype'][_0xdf3c('0x44')]=function(_0x3e7a4b){var _0x5ddd21=this;this['sequence'][_0xdf3c('0x45')](function(){if(!_['isNil'](_0x5ddd21[_0xdf3c('0x15')][_0x3e7a4b])){loggerAction['info']('[clearZombieChannels][talking]',_0x3e7a4b,'Queue',_0x5ddd21[_0xdf3c('0x15')][_0x3e7a4b][_0xdf3c('0x46')],_0xdf3c('0x47'),JSON[_0xdf3c('0x2c')](_0x5ddd21['campaignsPreview'][_0x5ddd21['actions'][_0x3e7a4b][_0xdf3c('0x46')]]['originated']),_0xdf3c('0x48'),JSON[_0xdf3c('0x2c')](_0x5ddd21[_0xdf3c('0x13')][_0x5ddd21[_0xdf3c('0x15')][_0x3e7a4b][_0xdf3c('0x46')]][_0xdf3c('0x33')]),JSON[_0xdf3c('0x2c')](_0x5ddd21[_0xdf3c('0x15')][_0x3e7a4b][_0xdf3c('0x49')]),JSON['stringify'](_[_0xdf3c('0x4a')](_0x5ddd21['actions'][_0x3e7a4b],['contactId',_0xdf3c('0x4b'),'VoiceQueueId',_0xdf3c('0x4c')])));return ami['Action']({'action':_0xdf3c('0x4d'),'channel':_0x5ddd21[_0xdf3c('0x15')][_0x3e7a4b][_0xdf3c('0x4e')]})[_0xdf3c('0x4f')](function(_0x3098cb){if(_0x3098cb[_0xdf3c('0x36')]===_0xdf3c('0x50')){setTimeout(function(){if(_0x5ddd21[_0xdf3c('0x15')][_0x3e7a4b]){ut[_0xdf3c('0x51')](_0x5ddd21[_0xdf3c('0x13')][_0x5ddd21[_0xdf3c('0x15')][_0x3e7a4b][_0xdf3c('0x46')]],'[clearZombieChannel]');if(_0x5ddd21['actions'][_0x3e7a4b][_0xdf3c('0x49')]===!![]){ut['decrementTalkink'](_0x5ddd21[_0xdf3c('0x13')][_0x5ddd21[_0xdf3c('0x15')][_0x3e7a4b][_0xdf3c('0x46')]],_0xdf3c('0x52'));ut['loggerError']('[Dialer][checkChannel][pTalking][Preview]'+_0x3e7a4b,_0x5ddd21[_0xdf3c('0x15')][_0x3e7a4b][_0xdf3c('0x46')]);}ut[_0xdf3c('0x53')]('[Dialer][checkChannel][Preview]'+_0x3e7a4b,_0x5ddd21[_0xdf3c('0x15')][_0x3e7a4b][_0xdf3c('0x46')]);delete _0x5ddd21[_0xdf3c('0x15')][_0x3e7a4b];}},0x2328);}});}});};Preview[_0xdf3c('0xf')]['clearZombieChannels']=function(){var _0x127685=this;loggerAction[_0xdf3c('0x2a')](_0xdf3c('0x54'),_[_0xdf3c('0x55')](this[_0xdf3c('0x15')]));for(var _0x55849e in this[_0xdf3c('0x15')]){if(_0x127685[_0xdf3c('0x15')][_0xdf3c('0x3c')](_0x55849e)){_0x127685[_0xdf3c('0x44')](_0x55849e);}}};Preview[_0xdf3c('0xf')][_0xdf3c('0x43')]=function(_0x555389){var _0x4d6349=this;rpcDb[_0xdf3c('0x56')](_0x555389['id'],ut[_0xdf3c('0x57')](this['agents']))['then'](function(_0x269723){if(!_[_0xdf3c('0x58')](_0x269723)){for(var _0x46b2bd=0x0;_0x46b2bd<_0x269723[_0xdf3c('0x59')];_0x46b2bd+=0x1){if(ut[_0xdf3c('0x5a')](_0x269723[_0x46b2bd][_0xdf3c('0x5b')])<_0x555389[_0xdf3c('0x5c')]*0x3c){if(_0x269723[_0x46b2bd][_0xdf3c('0x5d')]&&!_0x269723[_0x46b2bd][_0xdf3c('0x5d')]['voicePause']){_0x4d6349[_0xdf3c('0x5e')](_0x269723[_0x46b2bd]['id'])[_0xdf3c('0x5f')](ut[_0xdf3c('0x60')](_0xdf3c('0x61')))[_0xdf3c('0x4f')](ut[_0xdf3c('0x60')](_0xdf3c('0x61')));}else{rpcDb['disableContact'](_0x269723[_0x46b2bd]['id']);}}else{var _0x1751a8=new Action(_0x269723[_0x46b2bd],_0x555389);_0x1751a8['starttime']=moment()[_0xdf3c('0x2d')]('YYYY-MM-DD\x20HH:mm:ss');_0x555389[_0xdf3c('0x62')]+=0x1;ut[_0xdf3c('0x63')](_0x1751a8,0x17,_0xdf3c('0x64'));if(_0x555389[_0xdf3c('0x65')]){rpcDb['rescheduleContactInQueue'](ut['createBody'](_0x269723[_0x46b2bd]));rpcDb['createCustomerHistory'](_0x1751a8,_0xdf3c('0x66'));}else{ut['logCustomer'](_0x1751a8,0x16,_0xdf3c('0x67'));rpcDb[_0xdf3c('0x68')](_0x1751a8,_0xdf3c('0x69'));rpcDb[_0xdf3c('0x6a')](_0x1751a8,_0xdf3c('0x69'));}}}}})['catch'](ut['logger2'](_0xdf3c('0x6b')));};Preview[_0xdf3c('0xf')]['setMessage']=function(_0x3b215d){_0x3b215d[_0xdf3c('0x31')]=!![];if(ut[_0xdf3c('0x6c')](_0x3b215d[_0xdf3c('0x6d')])){_0x3b215d[_0xdf3c('0x36')]=utils[_0xdf3c('0x6e')][_0xdf3c('0x6f')];}else if(!ut['isActive'](_0x3b215d['dialActive'])){_0x3b215d[_0xdf3c('0x36')]=utils[_0xdf3c('0x6e')][_0xdf3c('0x37')];}else if(!this[_0xdf3c('0x70')](_0x3b215d[_0xdf3c('0x71')])){if(!this[_0xdf3c('0x70')](_0x3b215d[_0xdf3c('0x72')])){_0x3b215d[_0xdf3c('0x36')]=utils[_0xdf3c('0x6e')][_0xdf3c('0x73')];}else{_0x3b215d[_0xdf3c('0x36')]=utils['CAMPAIGN_STATUS'][_0xdf3c('0x74')];}}else{_0x3b215d['message']=utils['CAMPAIGN_STATUS']['ACTIVE'];}};Preview['prototype']['callProgressDetectingCustomer']=function(_0x1afc6c,_0x1c18a9,_0x5c53cd){var _0x4257c4=this;var _0x32427e=this['actions'][_0x1c18a9];var _0xa8dddb=this[_0xdf3c('0x13')][_0x32427e[_0xdf3c('0x46')]];var _0x1389e0;var _0x396461=![];var _0x28f387=0x2;var _0xb54629=0x3;if(_0xa8dddb){switch(_0x5c53cd){case'1':_0xa8dddb[_0xdf3c('0x75')]+=0x1;_0x32427e[_0xdf3c('0x76')]+=0x1;_0x32427e[_0xdf3c('0x77')]=ut[_0xdf3c('0x78')](_0x32427e);ut['logCustomer'](_0x32427e,0x0,_0xdf3c('0x79'));ami[_0xdf3c('0x29')](_0xdf3c('0x7a'),ut['buildObj'](_0x32427e,_0xdf3c('0x7b')));rpcDb[_0xdf3c('0x68')](_0x32427e,_0xdf3c('0x7c'));_0x4257c4['verifyAdditionalPhones'](_0x32427e,'0',_0xa8dddb)[_0xdf3c('0x5f')](function(_0x13bf69){_0x396461=_0x13bf69['additional']==0x1;_0x28f387=_0xa8dddb[_0xdf3c('0x7d')];_0xb54629=_0xa8dddb['callAdditionalPhoneAfterMin'];if(!_0x396461){if(ut[_0xdf3c('0x78')](_0x32427e)>=_0xa8dddb[_0xdf3c('0x7e')]){_0x1389e0=ut[_0xdf3c('0x7f')](_0x32427e,0xf,_0xdf3c('0x80'));rpcDb[_0xdf3c('0x6a')](_0x1389e0,_0xdf3c('0x81'));}else{if(_0x32427e[_0xdf3c('0x76')]>=_0xa8dddb[_0xdf3c('0x82')]){rpcDb[_0xdf3c('0x6a')](_0x32427e,_0xdf3c('0x81'));}else{rpcDb[_0xdf3c('0x83')](ut[_0xdf3c('0x84')](_0x32427e,_0xdf3c('0x76'),_0xa8dddb[_0xdf3c('0x7d')]),_0x32427e[_0xdf3c('0x85')],_0x32427e[_0xdf3c('0x86')]);}}delete this[_0xdf3c('0x15')][_0x1afc6c['linkedid']];}else{_0x32427e['countnosuchnumberretry']++;logger[_0xdf3c('0x2a')](_0xdf3c('0x87'),_0x32427e[_0xdf3c('0x76')]);logger['info']('id',_0x32427e[_0xdf3c('0x88')]);_0x4257c4['incrementPreviewCounters']({'id':_0x32427e['idContact'],'field':{'countnosuchnumberretry':_0x32427e[_0xdf3c('0x76')]}})[_0xdf3c('0x5f')](function(){_0x4257c4[_0xdf3c('0x89')](_0x32427e,_0x28f387,_0xb54629)[_0xdf3c('0x5f')](function(){});});}});break;case _0xdf3c('0x8a'):var _0x9b7034=moment()[_0xdf3c('0x2d')](_0xdf3c('0x8b'));_0x32427e[_0xdf3c('0x8c')]=_0x9b7034;_0x32427e[_0xdf3c('0x8d')]=_0x9b7034;_0x32427e[_0xdf3c('0x49')]=!![];_0xa8dddb[_0xdf3c('0x33')]+=0x1;logger[_0xdf3c('0x2a')]('[syncHangup][talking][increment]',_0x32427e[_0xdf3c('0x8e')],_0xdf3c('0x8f'),_0xa8dddb[_0xdf3c('0x2f')],_0xdf3c('0x48'),_0xa8dddb[_0xdf3c('0x33')]);ami['emit'](_0xdf3c('0x90'),ut[_0xdf3c('0x91')](_0x32427e,_0xdf3c('0x92'),this[_0xdf3c('0x13')][_0x32427e[_0xdf3c('0x46')]]));if(_0xa8dddb[_0xdf3c('0x93')]){ami[_0xdf3c('0x29')](_0xdf3c('0x94'),ut[_0xdf3c('0x95')](_0x32427e));}break;case'16':ami[_0xdf3c('0x29')]('custom:agentcomplete',ut[_0xdf3c('0x91')](_0x32427e,_0xdf3c('0x96'),this[_0xdf3c('0x13')][_0x32427e[_0xdf3c('0x46')]]));emitVoiceQueueChannelRemove(ut[_0xdf3c('0x91')](_0x32427e,_0xdf3c('0x96')));_0xa8dddb[_0xdf3c('0x97')]+=0x1;_0xa8dddb['total']+=0x1;_0xa8dddb[_0xdf3c('0x98')]+=0x1;ut[_0xdf3c('0x99')](_0xa8dddb,'[16]');_0x32427e['countglobal']=ut[_0xdf3c('0x78')](_0x32427e);ut[_0xdf3c('0x63')](_0x32427e,0x4,_0xdf3c('0x9a'));rpcDb[_0xdf3c('0x68')](_0x32427e,_0xdf3c('0x9b'));rpcDb[_0xdf3c('0x6a')](_0x32427e,_0xdf3c('0x9c'));rpcDb[_0xdf3c('0x9d')](_0x32427e);_0xa8dddb['sumDuration']+=_0x32427e[_0xdf3c('0x9e')];_0xa8dddb[_0xdf3c('0x9f')]+=_0x32427e[_0xdf3c('0x9e')];logger['info'](_0xdf3c('0xa0'),_0x32427e[_0xdf3c('0x8e')],_0xdf3c('0x8f'),_0xa8dddb['name'],_0xdf3c('0x48'),_0xa8dddb[_0xdf3c('0x33')]);delete this[_0xdf3c('0x15')][_0x1afc6c[_0xdf3c('0xa1')]];break;case _0xdf3c('0xa2'):_0xa8dddb[_0xdf3c('0xa3')]+=0x1;_0x32427e['countbusyretry']+=0x1;_0x32427e['countglobal']=ut['totalGlobal'](_0x32427e);ut['logCustomer'](_0x32427e,0x5,'Busy');_0x28f387=_0xa8dddb[_0xdf3c('0xa4')];_0xb54629=_0xa8dddb[_0xdf3c('0xa5')];ami[_0xdf3c('0x29')]('custom:agentbusy',ut[_0xdf3c('0x91')](_0x32427e,_0xdf3c('0xa6')));rpcDb[_0xdf3c('0x68')](_0x32427e,'[callProgressDetectingCustomer][logBusy]');_0x4257c4['verifyAdditionalPhones'](_0x32427e,'5',_0xa8dddb)[_0xdf3c('0x5f')](function(_0x4e3517){_0x396461=_0x4e3517[_0xdf3c('0xa7')]==0x1;if(!_0x396461){if(ut['totalGlobal'](_0x32427e)>=_0xa8dddb[_0xdf3c('0x7e')]){_0x1389e0=ut[_0xdf3c('0x7f')](_0x32427e,0xf,_0xdf3c('0x80'));rpcDb[_0xdf3c('0x6a')](_0x1389e0,'[callProgressDetectingCustomer][logBusyGlobal]');}else{if(_0x32427e['countbusyretry']>=_0xa8dddb[_0xdf3c('0xa8')]){rpcDb[_0xdf3c('0x6a')](_0x32427e,_0xdf3c('0xa9'));}else{rpcDb[_0xdf3c('0x83')](ut[_0xdf3c('0x84')](_0x32427e,_0xdf3c('0xaa'),_0xa8dddb['dialBusyRetryFrequency']),_0x32427e[_0xdf3c('0x85')],_0x32427e['activeContact']);}}}else{_0x32427e[_0xdf3c('0xaa')]++;_0x4257c4[_0xdf3c('0xab')]({'id':_0x32427e[_0xdf3c('0x88')],'field':{'countbusyretry':_0x32427e[_0xdf3c('0xaa')]}})[_0xdf3c('0x5f')](function(){_0x4257c4['swapAdditionalPhones'](_0x32427e,_0x28f387,_0xb54629)[_0xdf3c('0x5f')](function(){});});}});break;case _0xdf3c('0xac'):_0xa8dddb[_0xdf3c('0xad')]+=0x1;_0x32427e['countnoanswerretry']+=0x1;_0x32427e['countglobal']=ut['totalGlobal'](_0x32427e);ut['logCustomer'](_0x32427e,0x3,_0xdf3c('0xae'));_0x28f387=_0xa8dddb[_0xdf3c('0xaf')];_0xb54629=_0xa8dddb[_0xdf3c('0xa5')];var _0x391042=ut[_0xdf3c('0xb0')](_0x32427e,_0xa8dddb);ami[_0xdf3c('0x29')]('custom:agentnoanswer',_0x391042);rpcDb[_0xdf3c('0x68')](_0x32427e,'[callProgressDetectingCustomer][logNoAnswer]');_0x4257c4[_0xdf3c('0xb1')](_0x32427e,'3',_0xa8dddb)[_0xdf3c('0x5f')](function(_0x2e5f82){_0x396461=_0x2e5f82[_0xdf3c('0xa7')]==0x1;if(!_0x396461){if(ut[_0xdf3c('0x78')](_0x32427e)>=_0xa8dddb[_0xdf3c('0x7e')]){_0x1389e0=ut[_0xdf3c('0x7f')](_0x32427e,0xf,_0xdf3c('0x80'));rpcDb[_0xdf3c('0x6a')](_0x1389e0,_0xdf3c('0xb2'));}else{if(_0x32427e[_0xdf3c('0xb3')]>=_0xa8dddb[_0xdf3c('0xb4')]){rpcDb[_0xdf3c('0x6a')](_0x32427e,_0xdf3c('0xb5'));}else{rpcDb['rescheduleContact'](ut[_0xdf3c('0x84')](_0x32427e,_0xdf3c('0xb3'),_0xa8dddb[_0xdf3c('0xaf')]),_0x32427e[_0xdf3c('0x85')],_0x32427e['activeContact']);}}}else{_0x32427e[_0xdf3c('0xb3')]++;_0x4257c4[_0xdf3c('0xab')]({'id':_0x32427e['idContact'],'field':{'countnoanswerretry':_0x32427e['countnoanswerretry']}})[_0xdf3c('0x5f')](function(){_0x4257c4[_0xdf3c('0x89')](_0x32427e,_0x28f387,_0xb54629)[_0xdf3c('0x5f')](function(){});});}});break;case _0xdf3c('0xb6'):_0xa8dddb[_0xdf3c('0xb7')]+=0x1;_0x32427e['countcongestionretry']+=0x1;_0x32427e[_0xdf3c('0x77')]=ut[_0xdf3c('0x78')](_0x32427e);ut[_0xdf3c('0x63')](_0x32427e,0x8,_0xdf3c('0xb8'));_0x28f387=_0xa8dddb[_0xdf3c('0xb9')];_0xb54629=_0xa8dddb[_0xdf3c('0xa5')];ami['emit'](_0xdf3c('0xba'),ut[_0xdf3c('0x91')](_0x32427e,_0xdf3c('0xbb')));rpcDb[_0xdf3c('0x68')](_0x32427e,_0xdf3c('0xbc'));_0x4257c4['verifyAdditionalPhones'](_0x32427e,'8',_0xa8dddb)['then'](function(_0x5c99f2){_0x396461=_0x5c99f2[_0xdf3c('0xa7')]==0x1;if(!_0x396461){if(ut[_0xdf3c('0x78')](_0x32427e)>=_0xa8dddb[_0xdf3c('0x7e')]){_0x1389e0=ut[_0xdf3c('0x7f')](_0x32427e,0xf,_0xdf3c('0x80'));rpcDb[_0xdf3c('0x6a')](_0x1389e0,_0xdf3c('0xbd'));}else{if(_0x32427e[_0xdf3c('0xbe')]>=_0xa8dddb['dialCongestionMaxRetry']){rpcDb[_0xdf3c('0x6a')](_0x32427e,_0xdf3c('0xbc'));}else{rpcDb[_0xdf3c('0x83')](ut[_0xdf3c('0x84')](_0x32427e,_0xdf3c('0xbe'),_0xa8dddb[_0xdf3c('0xa4')]),_0x32427e['unlockAgent'],_0x32427e[_0xdf3c('0x86')]);}}}else{_0x32427e[_0xdf3c('0xbe')]++;_0x4257c4['incrementPreviewCounters']({'id':_0x32427e['idContact'],'field':{'countcongestionretry':_0x32427e[_0xdf3c('0xbe')]}})['then'](function(){_0x4257c4[_0xdf3c('0x89')](_0x32427e,_0x28f387,_0xb54629)[_0xdf3c('0x5f')](function(){});});}});break;case'CANCEL':_0xa8dddb[_0xdf3c('0xbf')]+=0x1;_0x32427e[_0xdf3c('0xc0')]+=0x1;_0x32427e[_0xdf3c('0x77')]=ut[_0xdf3c('0x78')](_0x32427e);ut[_0xdf3c('0x63')](_0x32427e,0x14,_0xdf3c('0xc1'));_0x28f387=_0xa8dddb['dialAgentRejectRetryFrequency'];_0xb54629=_0xa8dddb[_0xdf3c('0xa5')];ami[_0xdf3c('0x29')](_0xdf3c('0xc2'),ut[_0xdf3c('0x91')](_0x32427e,_0xdf3c('0xc3')));rpcDb[_0xdf3c('0x68')](_0x32427e,_0xdf3c('0xc4'));_0x4257c4['verifyAdditionalPhones'](_0x32427e,'20',_0xa8dddb)['then'](function(_0x1745fd){_0x396461=_0x1745fd[_0xdf3c('0xa7')]==0x1;if(!_0x396461){if(ut[_0xdf3c('0x78')](_0x32427e)>=_0xa8dddb['dialGlobalMaxRetry']){_0x1389e0=ut[_0xdf3c('0x7f')](_0x32427e,0x14,'AgentReject');rpcDb['createCustomerFinal'](_0x1389e0,_0xdf3c('0xc5'));}else{if(_0x32427e[_0xdf3c('0xc0')]>=_0xa8dddb['dialAgentRejectMaxRetry']){rpcDb[_0xdf3c('0x6a')](_0x32427e,'[callProgressDetectingCustomer][logAgentReject]');}else{rpcDb[_0xdf3c('0x83')](ut['scheduledAt'](_0x32427e,_0xdf3c('0xc0'),_0xa8dddb[_0xdf3c('0xc6')]),_0x32427e[_0xdf3c('0x85')],_0x32427e[_0xdf3c('0x86')]);}}}else{_0x32427e[_0xdf3c('0xb3')]++;_0x4257c4[_0xdf3c('0xab')]({'id':_0x32427e[_0xdf3c('0x88')],'field':{'countnoanswerretry':_0x32427e[_0xdf3c('0xb3')]}})[_0xdf3c('0x5f')](function(){_0x4257c4[_0xdf3c('0x89')](_0x32427e,_0x28f387,_0xb54629)[_0xdf3c('0x5f')](function(){});});}});break;case _0xdf3c('0xc7'):_0xa8dddb[_0xdf3c('0xc8')]+=0x1;_0x32427e[_0xdf3c('0xc9')]+=0x1;_0x32427e['countglobal']=ut[_0xdf3c('0x78')](_0x32427e);ut[_0xdf3c('0x63')](_0x32427e,0xb,_0xdf3c('0xca'));rpcDb['createCustomerHistory'](_0x32427e,_0xdf3c('0xcb'));_0x4257c4[_0xdf3c('0xb1')](_0x32427e,'11',_0xa8dddb)[_0xdf3c('0x5f')](function(_0x6e1899){_0x396461=_0x6e1899[_0xdf3c('0xa7')]==0x1;if(!_0x396461){if(ut[_0xdf3c('0x78')](_0x32427e)>=_0xa8dddb[_0xdf3c('0x7e')]){_0x1389e0=ut[_0xdf3c('0x7f')](_0x32427e,0xf,_0xdf3c('0x80'));rpcDb[_0xdf3c('0x6a')](_0x1389e0,_0xdf3c('0xcb'));}else{if(_0x32427e['countabandonedetry']>=_0xa8dddb[_0xdf3c('0xcc')]){rpcDb[_0xdf3c('0x6a')](_0x32427e,_0xdf3c('0xcb'));}else{rpcDb[_0xdf3c('0x83')](ut[_0xdf3c('0x84')](_0x32427e,_0xdf3c('0xc9'),_0xa8dddb[_0xdf3c('0xcd')]),_0x32427e[_0xdf3c('0x85')],_0x32427e[_0xdf3c('0x86')]);}}}else{_0x32427e[_0xdf3c('0xb3')]++;_0x4257c4[_0xdf3c('0xab')]({'id':_0x32427e[_0xdf3c('0x88')],'field':{'countnoanswerretry':_0x32427e['countnoanswerretry']}})[_0xdf3c('0x5f')](function(){_0x4257c4[_0xdf3c('0x89')](_0x32427e,_0x28f387,_0xb54629)[_0xdf3c('0x5f')](function(){});});}});break;case'18':_0xa8dddb[_0xdf3c('0xce')]+=0x1;_0x32427e[_0xdf3c('0xcf')]+=0x1;_0x32427e[_0xdf3c('0x77')]=ut[_0xdf3c('0x78')](_0x32427e);ut['logCustomer'](_0x32427e,0x12,_0x1afc6c[_0xdf3c('0xd0')]||_0x1afc6c[_0xdf3c('0xd1')]);ami[_0xdf3c('0x29')](_0xdf3c('0xd2'),ut['buildObj'](_0x32427e,_0xdf3c('0xd3')));rpcDb[_0xdf3c('0x68')](_0x32427e,'[callProgressDetectingCustomer][hangupInAMD]');_0x4257c4[_0xdf3c('0xb1')](_0x32427e,'18',_0xa8dddb)['then'](function(_0x418021){_0x396461=_0x418021[_0xdf3c('0xa7')]==0x1;if(!_0x396461){if(ut['totalGlobal'](_0x32427e)>=_0xa8dddb[_0xdf3c('0x7e')]){_0x1389e0=ut[_0xdf3c('0x7f')](_0x32427e,0x12,_0xdf3c('0x80'));rpcDb['createCustomerFinal'](_0x1389e0,'[callProgressDetectingCustomer][hangupInAMD]');}else{rpcDb[_0xdf3c('0x6a')](_0x32427e,'[callProgressDetectingCustomer][hangupInAMD]');}}else{_0x32427e[_0xdf3c('0xb3')]++;_0x4257c4[_0xdf3c('0xab')]({'id':_0x32427e[_0xdf3c('0x88')],'field':{'countnoanswerretry':_0x32427e[_0xdf3c('0xb3')]}})['then'](function(){_0x4257c4[_0xdf3c('0x89')](_0x32427e,_0x28f387,_0xb54629)[_0xdf3c('0x5f')](function(){});});}});delete this['actions'][_0x1afc6c[_0xdf3c('0xa1')]];break;case'19':_0xa8dddb['outboundUnknownCallsDay']+=0x1;_0x32427e[_0xdf3c('0x77')]=ut[_0xdf3c('0x78')](_0x32427e);ut['logCustomer'](_0x32427e,0x13,_0x1afc6c['cause-txt']||_0x1afc6c[_0xdf3c('0xd1')]);ami['emit'](_0xdf3c('0xd2'),ut[_0xdf3c('0x91')](_0x32427e,_0xdf3c('0xd3')));rpcDb[_0xdf3c('0x68')](_0x32427e,_0xdf3c('0xd4'));_0x4257c4[_0xdf3c('0xb1')](_0x32427e,'18',_0xa8dddb)[_0xdf3c('0x5f')](function(_0x1d95d9){_0x396461=_0x1d95d9[_0xdf3c('0xa7')]==0x1;if(!_0x396461){if(ut[_0xdf3c('0x78')](_0x32427e)>=_0xa8dddb[_0xdf3c('0x7e')]){_0x1389e0=ut['cloneAction'](_0x32427e,0xf,_0xdf3c('0x80'));rpcDb[_0xdf3c('0x6a')](_0x1389e0,'[callProgressDetectingCustomer][machine]');}else{rpcDb[_0xdf3c('0x6a')](_0x32427e,_0xdf3c('0xd4'));}}else{_0x32427e[_0xdf3c('0xb3')]++;_0x4257c4[_0xdf3c('0xab')]({'id':_0x32427e[_0xdf3c('0x88')],'field':{'countnoanswerretry':_0x32427e[_0xdf3c('0xb3')]}})['then'](function(){_0x4257c4[_0xdf3c('0x89')](_0x32427e,_0x28f387,_0xb54629)['then'](function(){});});}});delete this[_0xdf3c('0x15')][_0x1afc6c[_0xdf3c('0xa1')]];break;default:if(_0x32427e[_0xdf3c('0x49')]){ut[_0xdf3c('0x99')](_0xa8dddb,_0xdf3c('0xd5'));ut[_0xdf3c('0x53')]('[Dialer][decrementTalkink][no\x20Hangup][Preview]'+_0xa8dddb[_0xdf3c('0x2f')],_0x1afc6c);}_0xa8dddb[_0xdf3c('0xce')]+=0x1;_0x32427e['countglobal']=ut[_0xdf3c('0x78')](_0x32427e);ut[_0xdf3c('0x63')](_0x32427e,0xc,_0x1afc6c[_0xdf3c('0xd0')]||_0x1afc6c[_0xdf3c('0xd1')]);_0x28f387=_0xa8dddb[_0xdf3c('0xc6')];_0xb54629=_0xa8dddb[_0xdf3c('0xa5')];rpcDb[_0xdf3c('0x68')](_0x32427e,_0xdf3c('0xd6'));_0x4257c4['verifyAdditionalPhones'](_0x32427e,'20',_0xa8dddb)['then'](function(_0x44dc52){_0x396461=_0x44dc52[_0xdf3c('0xa7')]==0x1;if(!_0x396461){if(ut[_0xdf3c('0x78')](_0x32427e)>=_0xa8dddb[_0xdf3c('0x7e')]){_0x1389e0=ut['cloneAction'](_0x32427e,0xf,'Global');rpcDb[_0xdf3c('0x6a')](_0x1389e0,'[callProgressDetectingCustomer][logUnknownGlobal]');}else{rpcDb[_0xdf3c('0x6a')](_0x32427e,'[callProgressDetectingCustomer][logUnknownGlobal]');}delete this[_0xdf3c('0x15')][_0x1afc6c[_0xdf3c('0xa1')]];}else{_0x4257c4[_0xdf3c('0x89')](_0x32427e,_0x28f387,_0xb54629)['then'](function(){});}});}if(!(_0x32427e[_0xdf3c('0x49')]&&_0x5c53cd==='16')){ut[_0xdf3c('0x51')](_0xa8dddb,'[callProgressDetectingCustomer]');logger['info'](_0xdf3c('0xd7'),_0x32427e[_0xdf3c('0x8e')],_0xdf3c('0x8f'),_0xa8dddb[_0xdf3c('0x2f')],_0xdf3c('0x47'),_0xa8dddb[_0xdf3c('0x32')]);}if(_0x5c53cd!==_0xdf3c('0x8a')){delete this['actions'][_0x1afc6c['linkedid']];delete this[_0xdf3c('0x15')][_0x1afc6c[_0xdf3c('0xd8')]];}_0xa8dddb[_0xdf3c('0xd9')]=!![];}};Preview[_0xdf3c('0xf')][_0xdf3c('0xda')]=function(_0x268aa9,_0xa10e73,_0x828c9c){if(_[_0xdf3c('0xdb')](_0xa10e73)&&_0xdf3c('0xdc')!==typeof _0xa10e73){return;}if(_[_0xdf3c('0xdb')](_0x828c9c)&&_0xdf3c('0xdc')!==typeof _0x828c9c){return;}switch(_0x828c9c[_0xdf3c('0xdd')]){case'0':ut[_0xdf3c('0xde')](_0x268aa9,0x0,_0xdf3c('0x79'));rpcDb[_0xdf3c('0xdf')](_0x268aa9,_0xdf3c('0xe0'));break;case'3':ut[_0xdf3c('0xde')](_0x268aa9,0x3,_0xdf3c('0xae'));rpcDb['createAgentHistory'](_0x268aa9,'[callProgressDetectingAgent][logNoAnswer]');break;case'5':ut[_0xdf3c('0xde')](_0x268aa9,0x5,'Busy');rpcDb['createAgentHistory'](_0x268aa9,_0xdf3c('0xe1'));break;case'8':ut['logAgent'](_0x268aa9,0x8,_0xdf3c('0xb8'));rpcDb[_0xdf3c('0xdf')](_0x268aa9,'[callProgressDetectingAgent][logCongestion]');break;case'22':ut['logAgent'](_0x268aa9,0x16,'AnswerAGI');rpcDb[_0xdf3c('0xdf')](_0x268aa9,_0xdf3c('0xe2'));break;default:ut[_0xdf3c('0xde')](_0x268aa9,0xc,_0x828c9c['reason']);rpcDb[_0xdf3c('0xdf')](_0x268aa9,'[callProgressDetectingAgent][logCongestion]');}ut[_0xdf3c('0x51')](_0xa10e73,'[callProgressDetectingAgent]');logger['info'](_0xdf3c('0xe3'),_0x268aa9[_0xdf3c('0x8e')],_0xdf3c('0x8f'),_0xa10e73[_0xdf3c('0x2f')],_0xdf3c('0x47'),_0xa10e73[_0xdf3c('0x32')]);delete this['actions'][_0x268aa9['uniqueid']];};Preview[_0xdf3c('0xf')]['verifyAdditionalPhones']=function(_0x1a5e31,_0x14244a,_0x18e639){return cmHopperAdditionalPhone[_0xdf3c('0xb1')](_0x1a5e31,_0x14244a,_0x18e639)[_0xdf3c('0x4f')](logger[_0xdf3c('0x2a')](_0xdf3c('0xe4')));};Preview['prototype']['swapAdditionalPhones']=function(_0x40fdd4,_0x1446af,_0x3fa455){return cmHopperAdditionalPhone[_0xdf3c('0x89')](_0x40fdd4,_0x1446af,_0x3fa455)['catch'](logger[_0xdf3c('0x2a')](_0xdf3c('0xe5')));};Preview[_0xdf3c('0xf')][_0xdf3c('0xab')]=function(_0x33ef58){return Promise[_0xdf3c('0xe6')]()['then'](cmHopperAdditionalPhone[_0xdf3c('0xab')](_0x33ef58))[_0xdf3c('0x4f')](logger['info'](_0xdf3c('0xe7')));};Preview[_0xdf3c('0xf')][_0xdf3c('0xe8')]=function(_0x511a40,_0x87ec92,_0x1ebfff,_0x3487cf,_0xb1c08d){var _0x3100fa=this;return new Promise(function(_0x147769,_0x3c91ba){if(_[_0xdf3c('0x58')](_0x87ec92)||_[_0xdf3c('0x58')](_0x87ec92['Contact'])||_[_0xdf3c('0x58')](_0x87ec92['phone'])||_[_0xdf3c('0x58')](_0x87ec92[_0xdf3c('0xe9')])){_0x3c91ba(ut[_0xdf3c('0x36')](_0xdf3c('0xea'),_0x3487cf,_0xb1c08d));return;}var _0x90c66=uuid['v4']();var _0x34344b=_0x3100fa[_0xdf3c('0x13')][_0x87ec92[_0xdf3c('0xeb')][_0xdf3c('0x2f')]];var _0x36a8c7=_0x1ebfff?_0x3100fa[_0xdf3c('0x16')][_0x1ebfff]['id']:undefined;_0x3100fa['actions'][_0x90c66]=new Action(_0x87ec92,_0x34344b,_0x90c66,_0x1ebfff,_0x36a8c7);var _0x379996=_0x3100fa[_0xdf3c('0x15')][_0x90c66];_0x379996['unlockAgent']=_0x3487cf;_0x379996[_0xdf3c('0x86')]=_0xb1c08d;_0x379996[_0xdf3c('0xec')]=_0x1ebfff;if(_[_0xdf3c('0xed')](_0x511a40)){_0x3100fa[_0xdf3c('0xee')](_0x379996,_0x34344b,_0x87ec92,_0x1ebfff)['then'](function(_0x2670ef){logger[_0xdf3c('0x2a')](_0xdf3c('0xef'),'Queue:\x20'+_0x379996['queue']+'\x20IdHopper:\x20'+_0x379996[_0xdf3c('0x88')],JSON[_0xdf3c('0x2c')](_0x2670ef));ami[_0xdf3c('0x29')](_0xdf3c('0xf0'),ut[_0xdf3c('0x91')](_0x379996,_0xdf3c('0xf1'),_0x3100fa[_0xdf3c('0x13')][_0x379996[_0xdf3c('0x46')]]));_0x147769(ut['message'](_0xdf3c('0xf2')));})['catch'](function(_0x359366){ut[_0xdf3c('0x38')](_0xdf3c('0xf3'),_0x359366);_0x3c91ba(ut[_0xdf3c('0x36')](_0xdf3c('0xf4'),_0x3487cf,_0xb1c08d));});}else{_0x34344b[_0xdf3c('0xf5')]+=0x1;ut['logBlacklist'](_0x379996);rpcDb[_0xdf3c('0xf6')](_0x379996,_0xdf3c('0xf7'));delete _0x3100fa['actions'][_0x90c66];_0x3c91ba(ut[_0xdf3c('0x36')](_0xdf3c('0xf8'),_0x3487cf,_0xb1c08d));}});};Preview[_0xdf3c('0xf')][_0xdf3c('0x70')]=function(_0x4e66a3){return!_[_0xdf3c('0x58')](_0x4e66a3)&&!_['isNil'](_0x4e66a3[_0xdf3c('0x2f')])&&!_[_0xdf3c('0x58')](_0x4e66a3[_0xdf3c('0xf9')])&&_0x4e66a3[_0xdf3c('0xf9')]&&!_[_0xdf3c('0x58')](this[_0xdf3c('0x14')][util['format']('SIP/%s',_0x4e66a3['name'])])&&!_[_0xdf3c('0x58')](this[_0xdf3c('0x14')][util['format']('SIP/%s',_0x4e66a3[_0xdf3c('0x2f')])]['status'])&&(this['trunks'][util['format'](_0xdf3c('0xfa'),_0x4e66a3[_0xdf3c('0x2f')])][_0xdf3c('0x4d')]==='reachable'||this[_0xdf3c('0x14')][util['format'](_0xdf3c('0xfa'),_0x4e66a3[_0xdf3c('0x2f')])][_0xdf3c('0x4d')]===_0xdf3c('0xfb'));};Preview[_0xdf3c('0xf')][_0xdf3c('0x5e')]=function(_0xd5aa90,_0x2eef6f){return this[_0xdf3c('0xfc')](_0xd5aa90,_0x2eef6f)['then'](function(_0x17add4){return _[_0xdf3c('0x4a')](_0x17add4,['message']);})[_0xdf3c('0x4f')](function(_0x1e8646){if(_0x1e8646['unlock']){rpcDb[_0xdf3c('0xfd')](_0xd5aa90);}if(_0x1e8646['active']){rpcDb[_0xdf3c('0xfe')](_0xd5aa90);}throw _[_0xdf3c('0x4a')](_0x1e8646,[_0xdf3c('0x36')]);});};Preview[_0xdf3c('0xf')][_0xdf3c('0xfc')]=function(_0x1086a3,_0x232b34){var _0x41b5f4=this;var _0x171231,_0x2b27de;return rpcDb[_0xdf3c('0xff')](_0x1086a3)[_0xdf3c('0x5f')](function(_0x2a4dbf){if(!_[_0xdf3c('0x58')](_0x2a4dbf[0x0])){_0x2b27de=_0x2a4dbf[0x0][_0xdf3c('0x100')]?![]:!![];_0x171231=_0x2a4dbf[0x0][_0xdf3c('0x100')]?!![]:![];_0x171231=_0x232b34?!![]:_0x171231;}var _0x542a02=_0x41b5f4[_0xdf3c('0x101')](_0x2a4dbf);if(_0x542a02[_0xdf3c('0x102')]){rpcDb['checkIsBlackList'](_[_0xdf3c('0x4a')](_0x2a4dbf[0x0],[_0xdf3c('0xe9'),_0xdf3c('0x103')]))[_0xdf3c('0x5f')](function(_0x518290){_0x41b5f4[_0xdf3c('0xe8')](_0x518290,_0x2a4dbf[0x0],_0x232b34,_0x2b27de,_0x171231)[_0xdf3c('0x5f')](function(_0x5b25d7){return _0x5b25d7;})[_0xdf3c('0x4f')](function(_0x37b1a6){throw _0x37b1a6;});})['catch'](function(_0x59c8f9){ut[_0xdf3c('0x38')](_0xdf3c('0x104'),_0x59c8f9);throw ut[_0xdf3c('0x36')]('Call\x20unsuccessful',_0x2b27de,_0x171231);});}else{throw ut[_0xdf3c('0x36')](_0x542a02['message'],_0x2b27de,_0x171231);}})[_0xdf3c('0x4f')](function(_0x246958){ut[_0xdf3c('0x38')](_0xdf3c('0x105'),_0x246958);throw ut[_0xdf3c('0x36')](_0xdf3c('0x106'),![],!![]);});};Preview['prototype'][_0xdf3c('0x101')]=function(_0x47f9d1){if(_[_0xdf3c('0x58')](_0x47f9d1)||_[_0xdf3c('0xed')](_0x47f9d1)||!_[_0xdf3c('0x58')](_0x47f9d1[0x0]['Agent'])&&_[_0xdf3c('0x58')](_0x47f9d1[0x0]['Agent'][_0xdf3c('0x2f')])){ut[_0xdf3c('0x38')]('[Preview][validateContact][Empty\x20Contact]',_0x47f9d1);return{'isValid':![],'message':_0xdf3c('0x107')};}var _0x4185f0=this[_0xdf3c('0x13')][_0x47f9d1[0x0][_0xdf3c('0xeb')]['name']];_0x4185f0[_0xdf3c('0x36')]=utils[_0xdf3c('0x6e')][_0xdf3c('0x74')];if(_[_0xdf3c('0x58')](_0x4185f0)){ut[_0xdf3c('0x38')](_0xdf3c('0x108'),_0x4185f0);return{'isValid':![],'message':_0xdf3c('0x109')};}if(!this['isTrunkReachable'](_0x4185f0[_0xdf3c('0x71')])){ut[_0xdf3c('0x38')](_0xdf3c('0x10a'),_0xdf3c('0x10b')+_0x4185f0[_0xdf3c('0x2f')]+_0xdf3c('0x10c'));if(!this[_0xdf3c('0x70')](_0x4185f0[_0xdf3c('0x72')])){ut[_0xdf3c('0x38')](_0xdf3c('0x10a'),_0x4185f0[_0xdf3c('0x2f')]+'\x20Trunk\x20Backup\x20is\x20not\x20active');return{'isValid':![],'message':_0xdf3c('0x10d')};}}if(!ut[_0xdf3c('0x10e')](_0x4185f0[_0xdf3c('0x40')])){ut['logger'](_0xdf3c('0x10f'),_0x4185f0[_0xdf3c('0x2f')]+_0xdf3c('0x110'));return{'isValid':![],'message':_0xdf3c('0x10b')+_0x4185f0[_0xdf3c('0x2f')]+'\x20Not\x20Active'};}return{'isValid':!![],'message':_0xdf3c('0x111')};};Preview[_0xdf3c('0xf')]['execCall']=function(_0x2a0943,_0x3d4dc5,_0x38c6f3,_0xb39cc){var _0xcc2f18=this;return new Promise(function(_0x13ee9b,_0x8d7c0c){var _0x3d9041=_0x2a0943[_0xdf3c('0x8e')];var _0x4f8990=_0xcc2f18[_0xdf3c('0x70')](_0x3d4dc5[_0xdf3c('0x71')])?util['format'](_0xdf3c('0x112'),_0x3d4dc5[_0xdf3c('0x71')]['name'],_['isNil'](_0x3d4dc5[_0xdf3c('0x113')])?'':_0x3d4dc5[_0xdf3c('0x113')][_0xdf3c('0x114')]()||'',_0x3d4dc5[_0xdf3c('0x115')]>0x0?_0x38c6f3[_0xdf3c('0x103')][_0xdf3c('0x116')](_0x3d4dc5[_0xdf3c('0x115')]):_0x38c6f3[_0xdf3c('0x103')]):util['format'](_0xdf3c('0x112'),_[_0xdf3c('0x58')](_0x3d4dc5[_0xdf3c('0x72')])?_0x3d4dc5[_0xdf3c('0x71')]['name']:_0x3d4dc5[_0xdf3c('0x72')][_0xdf3c('0x2f')],_[_0xdf3c('0x58')](_0x3d4dc5[_0xdf3c('0x113')])?'':_0x3d4dc5['dialPrefix'][_0xdf3c('0x114')]()||'',_0x3d4dc5[_0xdf3c('0x115')]>0x0?_0x38c6f3[_0xdf3c('0x103')]['substring'](_0x3d4dc5['dialCutDigit']):_0x38c6f3[_0xdf3c('0x103')]);var _0xcaea00=_0xcc2f18[_0xdf3c('0x70')](_0x3d4dc5['Trunk'])?ut[_0xdf3c('0x117')](_0x3d4dc5[_0xdf3c('0x71')][_0xdf3c('0x118')],_0x3d4dc5[_0xdf3c('0x119')],_0x3d4dc5[_0xdf3c('0x11a')]>0x0?ut['getCallerIdRandom'](_0x3d4dc5['dialOriginateCallerIdNumber'],_0x3d4dc5[_0xdf3c('0x11a')]):_0x3d4dc5['dialOriginateCallerIdNumber']):ut[_0xdf3c('0x117')](_[_0xdf3c('0x58')](_0x3d4dc5[_0xdf3c('0x72')])?_0x3d4dc5[_0xdf3c('0x71')][_0xdf3c('0x118')]:_0x3d4dc5[_0xdf3c('0x72')]['callerid'],_0x3d4dc5[_0xdf3c('0x119')],_0x3d4dc5[_0xdf3c('0x11a')]>0x0?ut[_0xdf3c('0x11b')](_0x3d4dc5[_0xdf3c('0x11c')],_0x3d4dc5['dialRandomLastDigitCallerIdNumber']):_0x3d4dc5[_0xdf3c('0x11c')]);if(_0xcaea00){_0x2a0943[_0xdf3c('0x11d')]=ut[_0xdf3c('0x11e')](_0xcaea00);_0x2a0943['originatecalleridnum']=ut['extractCalleridNumber'](_0xcaea00);}var _0x1617d8=ut[_0xdf3c('0x11f')](_0x3d4dc5,_0x38c6f3,_0x4f8990,_0xcaea00,_0x3d9041,_0x2a0943);_['merge'](_0x2a0943,ut[_0xdf3c('0x120')](_0x1617d8));_0x2a0943['starttime']=moment()[_0xdf3c('0x2d')](_0xdf3c('0x8b'));_0x3d4dc5[_0xdf3c('0x121')]=_0x1617d8;var _0x1961cd=ut[_0xdf3c('0x122')](_0x2a0943,_0x3d4dc5,_0x1617d8,_0x2a0943[_0xdf3c('0x86')],_0xb39cc);return ami['Action'](_0x1961cd)[_0xdf3c('0x5f')](function(_0x2c24b7){_0x3d4dc5[_0xdf3c('0x32')]+=0x1;logger[_0xdf3c('0x2a')](_0xdf3c('0x123'),_0x3d9041,_0xdf3c('0x8f'),_0x3d4dc5[_0xdf3c('0x2f')],_0xdf3c('0x47'),_0x3d4dc5[_0xdf3c('0x32')]);_0x13ee9b(_0x2c24b7);})[_0xdf3c('0x4f')](function(_0x340107){ut['logAgent'](_0x2a0943,0xe,_0xdf3c('0x124'));rpcDb[_0xdf3c('0xdf')](_0x2a0943,'[originateFailure][logOriginateFailure]');_0x8d7c0c(_0x340107);});});};Preview[_0xdf3c('0xf')][_0xdf3c('0x125')]=function(_0x2accb4){if(this[_0xdf3c('0x15')][_0x2accb4[_0xdf3c('0xa1')]]){this['actions'][_0x2accb4[_0xdf3c('0xa1')]][_0xdf3c('0x4e')]=_0x2accb4[_0xdf3c('0x4e')];}};Preview[_0xdf3c('0xf')][_0xdf3c('0x19')]=function(_0x31391d){var _0x158c75=this;var _0x7554e2=this[_0xdf3c('0x15')][_0x31391d[_0xdf3c('0x126')]];if(_0x7554e2){if(_0x7554e2[_0xdf3c('0xec')]&&this[_0xdf3c('0x16')][_0x7554e2[_0xdf3c('0xec')]]){ut['logLookAgent'](_0x7554e2,this[_0xdf3c('0x16')][_0x7554e2[_0xdf3c('0xec')]]['name'],this[_0xdf3c('0x16')][_0x7554e2[_0xdf3c('0xec')]]['id']);}var _0x44388c=_[_0xdf3c('0x127')](_0x7554e2);_0x44388c[_0xdf3c('0x8c')]=moment()[_0xdf3c('0x2d')](_0xdf3c('0x8b'));var _0x15322a=_0x158c75[_0xdf3c('0x13')][_0x7554e2[_0xdf3c('0x46')]];if(ut['isFailure'](_0x31391d[_0xdf3c('0x128')])){if(_0x7554e2[_0xdf3c('0x85')]){rpcDb['unlockContact'](_0x7554e2[_0xdf3c('0x88')]);}if(_0x7554e2['activeContact']){rpcDb[_0xdf3c('0xfe')](_0x7554e2['idContact']);}ami[_0xdf3c('0x29')]('custom:agentringnoanswer',ut[_0xdf3c('0x91')](_0x7554e2,_0xdf3c('0x129'),this[_0xdf3c('0x13')][_0x7554e2[_0xdf3c('0x46')]]));this[_0xdf3c('0xda')](_0x44388c,_0x15322a,_0x31391d);}else{_0x7554e2[_0xdf3c('0x12a')]=moment()[_0xdf3c('0x2d')](_0xdf3c('0x8b'));ut['logAgent'](_0x44388c,0x4,_0xdf3c('0x9a'));rpcDb[_0xdf3c('0xdf')](_0x44388c,_0xdf3c('0x12b'));}}};Preview['prototype'][_0xdf3c('0x1b')]=function(_0x30b5c8){var _0x30e5ab=this[_0xdf3c('0x15')][_0x30b5c8['linkedid']];var _0x55a4fa;if(_0x30e5ab){_0x55a4fa=this['campaignsPreview'][_0x30e5ab['queue']];logger[_0xdf3c('0x2a')](_0xdf3c('0x12c'),_0x30b5c8[_0xdf3c('0xa1')],_0xdf3c('0x8f'),_0x55a4fa[_0xdf3c('0x2f')],_0xdf3c('0x48'),_0x55a4fa[_0xdf3c('0x33')]);}if(this['actions'][_0x30b5c8[_0xdf3c('0xa1')]]&&_0x30b5c8['linkedid']!==_0x30b5c8[_0xdf3c('0x8e')]){if(_0x30b5c8[_0xdf3c('0x12d')]==='16'&&this[_0xdf3c('0x15')][_0x30b5c8[_0xdf3c('0xa1')]][_0xdf3c('0x49')]){this[_0xdf3c('0x12e')](_0x30b5c8,_0x30b5c8[_0xdf3c('0xa1')],_0x30b5c8[_0xdf3c('0x12d')]);}else if(this['actions'][_0x30b5c8[_0xdf3c('0xa1')]][_0xdf3c('0x49')]){logger[_0xdf3c('0x2a')](_0xdf3c('0x12f'),_0x30b5c8[_0xdf3c('0xa1')],_0x30b5c8['cause'],'\x20Queue',_0x55a4fa[_0xdf3c('0x2f')],_0xdf3c('0x48'),_0x55a4fa[_0xdf3c('0x33')]);this[_0xdf3c('0x12e')](_0x30b5c8,_0x30b5c8[_0xdf3c('0xa1')],_0x30b5c8[_0xdf3c('0x12d')]);}}else if(_0x30e5ab&&_[_0xdf3c('0x58')](_0x30e5ab[_0xdf3c('0x130')])&&_0x55a4fa[_0xdf3c('0x131')]&&_0x30b5c8[_0xdf3c('0xa1')]===_0x30b5c8[_0xdf3c('0x8e')]&&_['isNil'](_0x30b5c8[_0xdf3c('0xdd')])&&_0x30b5c8[_0xdf3c('0x12d')]==='16'&&_0x30b5c8[_0xdf3c('0x132')]==='6'&&_[_0xdf3c('0xdb')](_0x30e5ab[_0xdf3c('0x133')])){if(_0x30e5ab[_0xdf3c('0x85')]){rpcDb[_0xdf3c('0xfd')](_0x30e5ab['idContact']);}if(_0x30e5ab[_0xdf3c('0x86')]){rpcDb['disableContact'](_0x30e5ab[_0xdf3c('0x88')]);}_0x30b5c8['reason']='22';this[_0xdf3c('0xda')](_0x30e5ab,_0x55a4fa,_0x30b5c8);}else if(_0x30e5ab&&_0x30e5ab[_0xdf3c('0x133')]){if(_0x30b5c8['cause']==='16'&&this['actions'][_0x30b5c8[_0xdf3c('0xa1')]][_0xdf3c('0x49')]){logger[_0xdf3c('0x2a')](_0xdf3c('0x134'),_0x30b5c8[_0xdf3c('0xa1')],_0x30b5c8['cause'],_0xdf3c('0x8f'),_0x55a4fa[_0xdf3c('0x2f')],_0xdf3c('0x48'),_0x55a4fa[_0xdf3c('0x33')]);this[_0xdf3c('0x12e')](_0x30b5c8,_0x30b5c8['linkedid'],_0x30b5c8[_0xdf3c('0x12d')]);}else if(this['actions'][_0x30b5c8[_0xdf3c('0xa1')]]['dialAnswer']){logger['info'](_0xdf3c('0x12f'),_0x30b5c8[_0xdf3c('0xa1')],_0x30b5c8[_0xdf3c('0x12d')],_0xdf3c('0x8f'),_0x55a4fa[_0xdf3c('0x2f')],'pTalking:\x20',_0x55a4fa[_0xdf3c('0x33')]);this[_0xdf3c('0x12e')](_0x30b5c8,_0x30b5c8['linkedid'],_0x30b5c8[_0xdf3c('0x12d')]);}}};Preview[_0xdf3c('0xf')][_0xdf3c('0x20')]=function(_0x386a3b){if(this[_0xdf3c('0x15')][_0x386a3b['destlinkedid']]&&_0x386a3b[_0xdf3c('0xd8')]!==_0x386a3b[_0xdf3c('0x135')]){this[_0xdf3c('0x12e')](_0x386a3b,_0x386a3b[_0xdf3c('0xd8')],_0x386a3b[_0xdf3c('0xd1')]);}};Preview['prototype'][_0xdf3c('0x1e')]=function(_0x43fc55){if(this[_0xdf3c('0x15')][_0x43fc55[_0xdf3c('0xa1')]]&&_0x43fc55[_0xdf3c('0xa1')]!==_0x43fc55[_0xdf3c('0x8e')]&&!this[_0xdf3c('0x15')][_0x43fc55[_0xdf3c('0xa1')]][_0xdf3c('0x49')]){if(_0x43fc55[_0xdf3c('0x12d')]==='1'){this[_0xdf3c('0x12e')](_0x43fc55,_0x43fc55[_0xdf3c('0xa1')],_0x43fc55[_0xdf3c('0x12d')]);}}};Preview[_0xdf3c('0xf')][_0xdf3c('0x136')]=function(_0x2be6c7,_0x18bbe0,_0x174e96){if(this['actions'][_0x2be6c7]){if(_[_0xdf3c('0x58')](this[_0xdf3c('0x15')][_0x2be6c7][_0xdf3c('0x121')])){this['actions'][_0x2be6c7][_0xdf3c('0x121')]={};}this['actions'][_0x2be6c7][_0xdf3c('0x121')][_0x18bbe0]=_0x174e96;}};Preview['prototype'][_0xdf3c('0x23')]=function(_0xd721b1){try{if(!_[_0xdf3c('0x58')](_0xd721b1)){if(ut[_0xdf3c('0x137')](_[_0xdf3c('0x138')](_0xd721b1[_0xdf3c('0x139')])[0x0])){this[_0xdf3c('0x136')](_0xd721b1[_0xdf3c('0x8e')],_[_0xdf3c('0x138')](_0xd721b1['variable'])[0x0],_0xd721b1[_0xdf3c('0x13a')]);}}}catch(_0x3e3d63){logger[_0xdf3c('0x13b')](_0xdf3c('0x13c'),util['inspect'](_0x3e3d63,{'showHidden':![],'depth':null}));}};Preview['prototype'][_0xdf3c('0x25')]=function(_0x2d412f){if(_0x2d412f){if(this[_0xdf3c('0x15')][_0x2d412f[_0xdf3c('0x13d')]]){this['actions'][_0x2d412f[_0xdf3c('0x13d')]]['transfer']=!![];}}};Preview['prototype'][_0xdf3c('0x27')]=function(_0x4255cd){if(_0x4255cd){if(this['actions'][_0x4255cd[_0xdf3c('0x13e')]]){this[_0xdf3c('0x15')][_0x4255cd['transfererlinkedid']][_0xdf3c('0x133')]=!![];}}};module[_0xdf3c('0x13f')]=Preview;
\ No newline at end of file
index a15fdcc..2297fcc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0729=['queuecallercompleteAt','endtime','connectedlinename','membername','context','from-sip','exten','holdtime','lastAssignedTo','queuecallerexitreason','COMPLETED','then','[voiceQueueReport]\x20','getContactRecallMe','[GetContactRecallMe]\x20','[rescheduleContactInQueue]\x20','util','bluebird','../../../config/logger','preview','../rpc/cmHopper','../rpc/cmHopperHistory','../rpc/agentReportPreview','../rpc/voiceQueueReport','catch','resolve','createHistory','[createHistory]\x20','moveContactManagedDialer','[moveContactManagedDialer]\x20','checkIsBlackList','[checkIsBlackList]\x20','getContactPreview','[getContactPreview]\x20','createAgentHistory','rescheduleContact','UserId','active','[rescheduleContact]\x20','countReScheduled','unlockContact','disableContact','[activeContact]\x20','crateCustomerReportQueue','type','uniqueid','calleridnum','calleridname','queue','queuecallerjoinAt','answertime','queuecallerleaveAt','queuecallercomplete'];(function(_0x40a5b7,_0x2b26d6){var _0x1317d5=function(_0x1bd41e){while(--_0x1bd41e){_0x40a5b7['push'](_0x40a5b7['shift']());}};_0x1317d5(++_0x2b26d6);}(_0x0729,0x183));var _0x9072=function(_0x1626b5,_0x3539bf){_0x1626b5=_0x1626b5-0x0;var _0x565650=_0x0729[_0x1626b5];return _0x565650;};'use strict';var util=require(_0x9072('0x0'));var BPromise=require(_0x9072('0x1'));var logger=require(_0x9072('0x2'))(_0x9072('0x3'));var cmHopper=require(_0x9072('0x4'));var cmHopperHistory=require(_0x9072('0x5'));var cmHopperBlack=require('../rpc/cmHopperBlack');var agentReportPreview=require(_0x9072('0x6'));var voiceQueueReport=require(_0x9072('0x7'));function loggerCatch(_0x177906){return function(_0x336b2a){logger['error'](_0x177906,util['inspect'](_0x336b2a,{'showHidden':![],'depth':null}));};}function create(_0x5e877e){return cmHopperHistory['createHistory'](_0x5e877e)[_0x9072('0x8')](loggerCatch('[createHistory]\x20'));}function createAgent(_0x35649a){return BPromise[_0x9072('0x9')]()['then'](agentReportPreview[_0x9072('0xa')](_0x35649a))[_0x9072('0x8')](loggerCatch(_0x9072('0xb')));}function moveContact(_0x1ace9b){return cmHopper[_0x9072('0xc')](_0x1ace9b,!![])[_0x9072('0x8')](loggerCatch(_0x9072('0xd')));}exports[_0x9072('0xe')]=function(_0x1e6392){return cmHopperBlack['checkIsBlackList'](_0x1e6392)[_0x9072('0x8')](loggerCatch(_0x9072('0xf')));};exports[_0x9072('0x10')]=function(_0x38f756){return BPromise[_0x9072('0x9')]()['then'](cmHopper[_0x9072('0x10')](_0x38f756))['catch'](loggerCatch(_0x9072('0x11')));};exports['createHistory']=function(_0x362ce5,_0x35e1ef){create(_0x362ce5)['catch'](loggerCatch(_0x35e1ef));moveContact(_0x362ce5)['catch'](loggerCatch(_0x35e1ef));};exports[_0x9072('0x12')]=function(_0x14e9fd,_0x24096e){createAgent(_0x14e9fd)[_0x9072('0x8')](loggerCatch(_0x24096e));};exports['createCustomerHistory']=function(_0x476d4d,_0x37698f){create(_0x476d4d)[_0x9072('0x8')](loggerCatch(_0x37698f));};exports['createCustomerFinal']=function(_0x9b940,_0x4f95be){moveContact(_0x9b940)[_0x9072('0x8')](loggerCatch(_0x4f95be));};exports[_0x9072('0x13')]=function(_0x55099f,_0x10ecfc,_0x17db71){if(_0x10ecfc){_0x55099f[_0x9072('0x14')]=null;}if(_0x17db71){_0x55099f[_0x9072('0x15')]=![];}return cmHopper[_0x9072('0x13')](_0x55099f)[_0x9072('0x8')](loggerCatch(_0x9072('0x16')));};exports[_0x9072('0x17')]=function(_0x261659){return cmHopper['countReScheduled'](_0x261659)[_0x9072('0x8')](loggerCatch('[countReScheduled]\x20'));};exports[_0x9072('0x18')]=function(_0x59f510){return cmHopper[_0x9072('0x18')]({'UserId':null},_0x59f510,0x1)[_0x9072('0x8')](loggerCatch('[unlockContact]\x20'));};exports[_0x9072('0x19')]=function(_0x49a029){return cmHopper[_0x9072('0x18')]({'active':![]},_0x49a029,0x1)[_0x9072('0x8')](loggerCatch(_0x9072('0x1a')));};exports[_0x9072('0x1b')]=function(_0x2974bd){var _0x547d78={};_0x547d78[_0x9072('0x1c')]=_0x2974bd[_0x9072('0x1c')];_0x547d78[_0x9072('0x1d')]=_0x2974bd[_0x9072('0x1d')];_0x547d78[_0x9072('0x1e')]=_0x2974bd[_0x9072('0x1e')];_0x547d78[_0x9072('0x1f')]=_0x2974bd[_0x9072('0x1f')];_0x547d78[_0x9072('0x20')]=_0x2974bd[_0x9072('0x20')];_0x547d78[_0x9072('0x21')]=_0x2974bd[_0x9072('0x22')];_0x547d78[_0x9072('0x23')]=_0x2974bd['answertime'];_0x547d78[_0x9072('0x24')]=0x1;_0x547d78[_0x9072('0x25')]=_0x2974bd[_0x9072('0x26')];_0x547d78[_0x9072('0x27')]=_0x2974bd[_0x9072('0x28')];_0x547d78[_0x9072('0x29')]=_0x9072('0x2a');_0x547d78[_0x9072('0x2b')]='xcally-motion-preview';_0x547d78[_0x9072('0x2c')]=0x0;_0x547d78['assigned']=0x1;_0x547d78[_0x9072('0x2d')]=_0x2974bd[_0x9072('0x28')];_0x547d78[_0x9072('0x2e')]=_0x9072('0x2f');return BPromise[_0x9072('0x9')]()[_0x9072('0x30')](voiceQueueReport['create'](_0x547d78))[_0x9072('0x8')](loggerCatch(_0x9072('0x31')));};exports[_0x9072('0x32')]=function(_0x2d050d,_0x3d4a21){return BPromise['resolve']()[_0x9072('0x30')](cmHopper[_0x9072('0x32')](_0x2d050d,_0x3d4a21))[_0x9072('0x8')](loggerCatch(_0x9072('0x33')));};exports['rescheduleContactInQueue']=function(_0x4c97fb){return cmHopper[_0x9072('0x13')](_0x4c97fb,!![],!![])[_0x9072('0x8')](loggerCatch(_0x9072('0x34')));};
\ No newline at end of file
+var _0x0bd3=['[activeContact]\x20','crateCustomerReportQueue','type','uniqueid','calleridnum','calleridname','queue','answertime','queuecallerleaveAt','queuecallercomplete','endtime','connectedlinename','membername','context','from-sip','exten','xcally-motion-preview','holdtime','assigned','lastAssignedTo','COMPLETED','create','getContactRecallMe','[GetContactRecallMe]\x20','[rescheduleContactInQueue]\x20','util','bluebird','../../../config/logger','preview','../rpc/cmHopper','../rpc/cmHopperHistory','../rpc/cmHopperBlack','../rpc/agentReportPreview','../rpc/voiceQueueReport','error','inspect','[createHistory]\x20','resolve','then','createHistory','catch','moveContactManagedDialer','[moveContactManagedDialer]\x20','[checkIsBlackList]\x20','getContactPreview','createAgentHistory','createCustomerHistory','createCustomerFinal','rescheduleContact','UserId','[rescheduleContact]\x20','countReScheduled','unlockContact','[unlockContact]\x20','disableContact'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0bd3,0x1d1));var _0x30bd=function(_0x3f670b,_0x10f414){_0x3f670b=_0x3f670b-0x0;var _0x1c0978=_0x0bd3[_0x3f670b];return _0x1c0978;};'use strict';var util=require(_0x30bd('0x0'));var BPromise=require(_0x30bd('0x1'));var logger=require(_0x30bd('0x2'))(_0x30bd('0x3'));var cmHopper=require(_0x30bd('0x4'));var cmHopperHistory=require(_0x30bd('0x5'));var cmHopperBlack=require(_0x30bd('0x6'));var agentReportPreview=require(_0x30bd('0x7'));var voiceQueueReport=require(_0x30bd('0x8'));function loggerCatch(_0x5419e2){return function(_0xc3d6de){logger[_0x30bd('0x9')](_0x5419e2,util[_0x30bd('0xa')](_0xc3d6de,{'showHidden':![],'depth':null}));};}function create(_0x1caf03){return cmHopperHistory['createHistory'](_0x1caf03)['catch'](loggerCatch(_0x30bd('0xb')));}function createAgent(_0x5b852e){return BPromise[_0x30bd('0xc')]()[_0x30bd('0xd')](agentReportPreview[_0x30bd('0xe')](_0x5b852e))[_0x30bd('0xf')](loggerCatch(_0x30bd('0xb')));}function moveContact(_0x20d34a){return cmHopper[_0x30bd('0x10')](_0x20d34a,!![])[_0x30bd('0xf')](loggerCatch(_0x30bd('0x11')));}exports['checkIsBlackList']=function(_0x5b6bd7){return cmHopperBlack['checkIsBlackList'](_0x5b6bd7)['catch'](loggerCatch(_0x30bd('0x12')));};exports[_0x30bd('0x13')]=function(_0x304b6f){return BPromise[_0x30bd('0xc')]()[_0x30bd('0xd')](cmHopper[_0x30bd('0x13')](_0x304b6f))[_0x30bd('0xf')](loggerCatch('[getContactPreview]\x20'));};exports[_0x30bd('0xe')]=function(_0x19964d,_0x2989af){create(_0x19964d)[_0x30bd('0xf')](loggerCatch(_0x2989af));moveContact(_0x19964d)['catch'](loggerCatch(_0x2989af));};exports[_0x30bd('0x14')]=function(_0x474dcd,_0x433fbc){createAgent(_0x474dcd)[_0x30bd('0xf')](loggerCatch(_0x433fbc));};exports[_0x30bd('0x15')]=function(_0x2aaa12,_0x140dcf){create(_0x2aaa12)[_0x30bd('0xf')](loggerCatch(_0x140dcf));};exports[_0x30bd('0x16')]=function(_0x48a81e,_0x5a185d){moveContact(_0x48a81e)[_0x30bd('0xf')](loggerCatch(_0x5a185d));};exports[_0x30bd('0x17')]=function(_0x26a326,_0x1ee7e6,_0x593794){if(_0x1ee7e6){_0x26a326[_0x30bd('0x18')]=null;}if(_0x593794){_0x26a326['active']=![];}return cmHopper[_0x30bd('0x17')](_0x26a326)[_0x30bd('0xf')](loggerCatch(_0x30bd('0x19')));};exports[_0x30bd('0x1a')]=function(_0x5587da){return cmHopper[_0x30bd('0x1a')](_0x5587da)['catch'](loggerCatch('[countReScheduled]\x20'));};exports[_0x30bd('0x1b')]=function(_0x1efaa1){return cmHopper[_0x30bd('0x1b')]({'UserId':null},_0x1efaa1,0x1)[_0x30bd('0xf')](loggerCatch(_0x30bd('0x1c')));};exports[_0x30bd('0x1d')]=function(_0x4bcc81){return cmHopper[_0x30bd('0x1b')]({'active':![]},_0x4bcc81,0x1)[_0x30bd('0xf')](loggerCatch(_0x30bd('0x1e')));};exports[_0x30bd('0x1f')]=function(_0x4625e1){var _0x243af7={};_0x243af7[_0x30bd('0x20')]=_0x4625e1[_0x30bd('0x20')];_0x243af7[_0x30bd('0x21')]=_0x4625e1['uniqueid'];_0x243af7[_0x30bd('0x22')]=_0x4625e1['calleridnum'];_0x243af7[_0x30bd('0x23')]=_0x4625e1[_0x30bd('0x23')];_0x243af7['queue']=_0x4625e1[_0x30bd('0x24')];_0x243af7['queuecallerjoinAt']=_0x4625e1[_0x30bd('0x25')];_0x243af7[_0x30bd('0x26')]=_0x4625e1[_0x30bd('0x25')];_0x243af7[_0x30bd('0x27')]=0x1;_0x243af7['queuecallercompleteAt']=_0x4625e1[_0x30bd('0x28')];_0x243af7[_0x30bd('0x29')]=_0x4625e1[_0x30bd('0x2a')];_0x243af7[_0x30bd('0x2b')]=_0x30bd('0x2c');_0x243af7[_0x30bd('0x2d')]=_0x30bd('0x2e');_0x243af7[_0x30bd('0x2f')]=0x0;_0x243af7[_0x30bd('0x30')]=0x1;_0x243af7[_0x30bd('0x31')]=_0x4625e1[_0x30bd('0x2a')];_0x243af7['queuecallerexitreason']=_0x30bd('0x32');return BPromise['resolve']()['then'](voiceQueueReport[_0x30bd('0x33')](_0x243af7))['catch'](loggerCatch('[voiceQueueReport]\x20'));};exports[_0x30bd('0x34')]=function(_0x30bc5c,_0x5e21ea){return BPromise['resolve']()[_0x30bd('0xd')](cmHopper[_0x30bd('0x34')](_0x30bc5c,_0x5e21ea))['catch'](loggerCatch(_0x30bd('0x35')));};exports['rescheduleContactInQueue']=function(_0x2a3b8e){return cmHopper[_0x30bd('0x17')](_0x2a3b8e,!![],!![])[_0x30bd('0xf')](loggerCatch(_0x30bd('0x36')));};
\ No newline at end of file
index c3993b5..66b869b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x29b2=['Call-Type:\x20PREVIEW','_XCALLY_MIXMONITOR_FORMAT','Contact','hasOwnProperty','tags','createdAt','updatedAt','%s%s','XMD-','toUpper','toLowerVariables','toLower','updateOriginated','originated','[updateOriginated]\x20object\x20originated\x20is\x20negative','[updateOriginated]\x20is\x20null\x20or\x20undefined','logBlacklist','state','statedesc','Blacklist','endtime','logAgent','YYYY-MM-DD\x20HH:mm:ss','responsetime','ringtime','getSeconds','starttime','logLookAgent','membername','UserId','logCustomer','talktime','answertime','Failure','variablesAction','RECALL','BOOKED','uniqueid','originate','channelAgent','xcally-motion-preview','from-sip','timeout','totalGlobal','countbusyretry','countcongestionretry','countagentrejectretry','countnosuchnumberretry','clone','Global','active','scheduledat','add','minutes','ListId','decrementTalkink','[decrementTalkink]\x20object\x20talking\x20is\x20negative','[decrementTalkink]\x20is\x20null\x20or\x20undefined','lastevent','name','queue','interface','motionChannel','mandatoryDisposition','buildObj','buildAcw','agentReadyId','not_inuse','status','reachable','push','getDiff','milliseconds','diff','seconds','createBody','filterKey','type','campaigntype','countnoanswerretry','countglobal','callback','callbackuniqueid','callbackat','recallme','sipcallid','xmd-voicequeueid','xmd-queue','xmd-dialurl','xmd-dialtimeout','xmd-contactid','xmd-cdrtype','xmd-callerid','xmd-agiafter','xmd-agi','rtpaudioqos','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','getCallerIdRandom','\x5cw{0,','pow','extractCalleridName','match','extractCalleridNumber','noanswer','keys','variables','forEach','toLowerCase','buildNoAnswerEventPayload','util','lodash','moment','../../../../config/logger','preview','env','XCALLY_IP_AGI','../../dialer/utils','loggerCatch','error','inspect','info','loggerError','getCallerId','isUndefined','string','isEmpty','format','\x22%s\x22\x20<%s>','\x22\x22\x20<>','isNil','addVariables','Queue','calleridname','calleridnum','ContactId','dialer','VoiceQueueId','dialOriginateTimeout','\x22rtTxX%s%s\x22','dialQueueProject2','monitor_format','U(xcally-mixmonitor-context)','dialQueueProject','\x22agi://%s/square,%s\x22','NONE','originatecalleridnum','originatecalleridname'];(function(_0x827c63,_0x53eb61){var _0x551ab0=function(_0x45d9ef){while(--_0x45d9ef){_0x827c63['push'](_0x827c63['shift']());}};_0x551ab0(++_0x53eb61);}(_0x29b2,0x1a2));var _0x229b=function(_0x444cb0,_0x1c5a69){_0x444cb0=_0x444cb0-0x0;var _0x38741b=_0x29b2[_0x444cb0];return _0x38741b;};'use strict';var util=require(_0x229b('0x0'));var _=require(_0x229b('0x1'));var moment=require(_0x229b('0x2'));var logger=require(_0x229b('0x3'))(_0x229b('0x4'));var ipAgi=process[_0x229b('0x5')][_0x229b('0x6')]||'127.0.0.1';var utils=require(_0x229b('0x7'));exports[_0x229b('0x8')]=function(_0x16f33f){return function(_0x32df78){logger[_0x229b('0x9')](_0x16f33f,util[_0x229b('0xa')](_0x32df78,{'showHidden':![],'depth':null}));};};exports['logger']=function(_0x2bc91c,_0x3ed323){logger[_0x229b('0xb')](_0x2bc91c,util['inspect'](_0x3ed323,{'showHidden':![],'depth':null}));};exports[_0x229b('0xc')]=function(_0x3c7e47,_0x5108d0){logger[_0x229b('0x9')](_0x3c7e47,util[_0x229b('0xa')](_0x5108d0,{'showHidden':![],'depth':null}));};exports['logger2']=function(_0x157c29){return function(_0x47d8d4){logger[_0x229b('0xb')](_0x157c29,util['inspect'](_0x47d8d4,{'showHidden':![],'depth':null}));};};exports['message']=function(_0x37eb78,_0x5b6e9f,_0x51c938){return{'message':_0x37eb78,'unlock':_0x5b6e9f,'active':_0x51c938};};exports[_0x229b('0xd')]=function(_0x2da552,_0x4286eb,_0xd60501){if(!_[_0x229b('0xe')](_0xd60501)&&_0x229b('0xf')===typeof _0xd60501&&!_[_0x229b('0x10')](_0xd60501)){if(!_['isUndefined'](_0x4286eb)&&_0x229b('0xf')===typeof _0x4286eb&&!_[_0x229b('0x10')](_0x4286eb)){return util[_0x229b('0x11')](_0x229b('0x12'),_0x4286eb,_0xd60501);}return util[_0x229b('0x11')](_0x229b('0x12'),_0xd60501,_0xd60501);}if(!_['isUndefined'](_0x2da552)&&_0x229b('0xf')===typeof _0x2da552&&!_[_0x229b('0x10')](_0x2da552)){return _0x2da552;}return _0x229b('0x13');};exports['isActive']=function(_0x3449f6){if(_[_0x229b('0x14')](_0x3449f6)){return![];}return _0x3449f6;};exports[_0x229b('0x15')]=function(_0x3457bc,_0x4ca38f,_0x41e3b4,_0x1a4a9c,_0x52644b,_0x32c794){var _0x522d8b={'XMD-QUEUE':_0x4ca38f[_0x229b('0x16')]?_0x4ca38f[_0x229b('0x16')]['name']:'','XMD-CALLERID':_0x1a4a9c,'XMD-CALLERID-PREVIEW':_0x32c794?util[_0x229b('0x11')](_0x229b('0x12'),_0x32c794[_0x229b('0x17')],_0x32c794[_0x229b('0x18')]):_0x1a4a9c,'XMD-DIALID':_0x52644b,'XMD-CONTACTID':_0x4ca38f[_0x229b('0x19')],'XMD-CDRTYPE':_0x229b('0x1a'),'CALLERID(all)':_0x1a4a9c,'XMD-VOICEQUEUEID':_0x4ca38f[_0x229b('0x1b')],'XMD-DIALCHANNEL':_0x41e3b4,'XMD-DIALTIMEOUT':_0x3457bc[_0x229b('0x1c')]||0x1e,'XMD-DIALOPTIONS':util[_0x229b('0x11')](_0x229b('0x1d'),_0x3457bc[_0x229b('0x1e')]?'g':'',_[_0x229b('0x10')](_0x3457bc[_0x229b('0x1f')])?'':_0x229b('0x20')),'XMD-DIALURL':_0x3457bc['dialPreviewUrl']||'','XMD-AGI':_0x3457bc[_0x229b('0x21')]?util[_0x229b('0x11')](_0x229b('0x22'),ipAgi,_0x3457bc[_0x229b('0x21')]):_0x229b('0x23'),'XMD-AGIAFTER':_0x3457bc[_0x229b('0x1e')]?util[_0x229b('0x11')](_0x229b('0x22'),ipAgi,_0x3457bc[_0x229b('0x1e')]):_0x229b('0x23'),'XMD-ORIGINATECALLERIDNUM':_0x32c794?_0x32c794[_0x229b('0x24')]:'','XMD-ORIGINATECALLERIDNAME':_0x32c794?_0x32c794[_0x229b('0x25')]:'','XMD-DESTINATION':'xcally-motion-preview','SIPADDHEADER':_0x229b('0x26')};if(!_[_0x229b('0x10')](_0x3457bc[_0x229b('0x1f')])){_0x522d8b[util[_0x229b('0x11')]('%s',_0x229b('0x27'))]=_0x3457bc[_0x229b('0x1f')];_0x522d8b[util[_0x229b('0x11')]('%s','_XCALLY_MIXMONITOR_UNIQUEID')]=_0x52644b;}if(_0x4ca38f&&_0x4ca38f['Contact']){for(var _0x33bfd4 in _0x4ca38f[_0x229b('0x28')]){if(_0x4ca38f[_0x229b('0x28')][_0x229b('0x29')](_0x33bfd4)){if(!_[_0x229b('0x14')](_0x4ca38f[_0x229b('0x28')][_0x33bfd4])&&_0x33bfd4!=='id'&&_0x33bfd4!==_0x229b('0x2a')&&_0x33bfd4!==_0x229b('0x2b')&&_0x33bfd4!==_0x229b('0x2c')){_0x522d8b[util[_0x229b('0x11')](_0x229b('0x2d'),_0x229b('0x2e'),_[_0x229b('0x2f')](_0x33bfd4))]=_0x4ca38f[_0x229b('0x28')][_0x33bfd4];}}}}return _0x522d8b;};exports[_0x229b('0x30')]=function(_0xffcdf6){var _0x4f9e87={};for(var _0x16628a in _0xffcdf6){if(_0xffcdf6['hasOwnProperty'](_0x16628a)){_0x4f9e87[util[_0x229b('0x11')]('%s',_[_0x229b('0x31')](_0x16628a))]=_0xffcdf6[_0x16628a];}}return{'variables':_0x4f9e87};};exports[_0x229b('0x32')]=function(_0x44bd79,_0x4d4a00){if(!_[_0x229b('0x14')](_0x44bd79)){if(_0x44bd79[_0x229b('0x29')](_0x229b('0x33'))){if(_0x44bd79[_0x229b('0x33')]>0x0){_0x44bd79[_0x229b('0x33')]-=0x1;}else{logger[_0x229b('0x9')](_0x229b('0x34'),_0x4d4a00);}}}else{logger['error'](_0x229b('0x35'),_0x4d4a00);}};exports[_0x229b('0x36')]=function(_0x2f63fa){var _0x5414b0=moment()[_0x229b('0x11')]('YYYY-MM-DD\x20HH:mm:ss');_0x2f63fa[_0x229b('0x37')]=0xd;_0x2f63fa[_0x229b('0x38')]=_0x229b('0x39');_0x2f63fa['starttime']=_0x5414b0;_0x2f63fa['responsetime']=_0x5414b0;_0x2f63fa[_0x229b('0x3a')]=_0x5414b0;};exports[_0x229b('0x3b')]=function(_0x10e462,_0x19dcaa,_0x39f6dc){var _0x5070cc=moment()['format'](_0x229b('0x3c'));_0x10e462[_0x229b('0x37')]=_0x19dcaa;_0x10e462[_0x229b('0x38')]=_0x39f6dc;_0x10e462[_0x229b('0x3d')]=_0x5070cc;_0x10e462[_0x229b('0x3e')]=utils[_0x229b('0x3f')](_0x10e462[_0x229b('0x3d')],_0x10e462[_0x229b('0x40')]);};exports[_0x229b('0x41')]=function(_0x46bb8b,_0x1663e1,_0x8efc85){_0x46bb8b[_0x229b('0x42')]=_0x1663e1;_0x46bb8b[_0x229b('0x43')]=_0x8efc85;};exports[_0x229b('0x44')]=function(_0x4311dc,_0x915453,_0x4c582d){var _0x50dba5=moment()[_0x229b('0x11')](_0x229b('0x3c'));_0x4311dc[_0x229b('0x37')]=_0x915453;_0x4311dc['statedesc']=_0x4c582d;_0x4311dc[_0x229b('0x3d')]=_0x4311dc['responsetime']?_0x4311dc[_0x229b('0x3d')]:_0x50dba5;_0x4311dc[_0x229b('0x3a')]=_0x4311dc['endtime']?_0x4311dc[_0x229b('0x3a')]:_0x50dba5;_0x4311dc[_0x229b('0x3e')]=utils['getSeconds'](_0x4311dc[_0x229b('0x3d')]||0x0,_0x4311dc['starttime']||0x0);_0x4311dc[_0x229b('0x45')]=_0x4311dc['answertime']?utils[_0x229b('0x3f')](_0x4311dc[_0x229b('0x3a')],_0x4311dc[_0x229b('0x46')]):0x0;};exports['isFailure']=function(_0x2d6160){return _0x2d6160===_0x229b('0x47');};exports[_0x229b('0x48')]=function(_0x593171,_0x1b1421,_0x649c23,_0x3d05c7,_0x27ecac){var _0x534acd=_0x3d05c7?_0x229b('0x49'):_0x593171['calleridname'];_0x534acd=_0x27ecac?_0x229b('0x4a'):_0x534acd;return{'actionid':_0x593171[_0x229b('0x4b')],'action':_0x229b('0x4c'),'channel':_0x593171[_0x229b('0x4d')],'callerid':util[_0x229b('0x11')](_0x229b('0x12'),_0x534acd,_0x593171[_0x229b('0x18')]),'Exten':_0x229b('0x4e'),'Context':_0x229b('0x4f'),'Priority':'1','variable':_0x649c23,'timeout':(_0x1b1421[_0x229b('0x50')]||0x1e)*0x3e8,'async':!![],'channelid':_0x593171[_0x229b('0x4b')]};};exports[_0x229b('0x51')]=function(_0xb8812d){return _0xb8812d[_0x229b('0x52')]+_0xb8812d[_0x229b('0x53')]+_0xb8812d['countnoanswerretry']+_0xb8812d[_0x229b('0x54')]+_0xb8812d[_0x229b('0x55')];};exports['cloneAction']=function(_0xfeffb0){var _0x3e9b68=_[_0x229b('0x56')](_0xfeffb0);_0x3e9b68[_0x229b('0x37')]=0xf;_0x3e9b68[_0x229b('0x38')]=_0x229b('0x57');return _0x3e9b68;};exports['scheduledAt']=function(_0x51ec31,_0x5577e7,_0x321dee){var _0x1261e5={};_0x1261e5[_0x5577e7]=_0x51ec31[_0x5577e7];_0x1261e5[_0x229b('0x58')]=![];_0x1261e5[_0x229b('0x59')]=moment()[_0x229b('0x5a')](_0x321dee,_0x229b('0x5b'))['format'](_0x229b('0x3c'));_0x1261e5[_0x229b('0x19')]=_0x51ec31[_0x229b('0x19')];_0x1261e5[_0x229b('0x5c')]=_0x51ec31[_0x229b('0x5c')];_0x1261e5[_0x229b('0x1b')]=_0x51ec31[_0x229b('0x1b')]||undefined;return _0x1261e5;};exports[_0x229b('0x5d')]=function(_0x2c57c5,_0x17d34e){if(!_[_0x229b('0x14')](_0x2c57c5)){if(_0x2c57c5['pTalking']>0x0){_0x2c57c5['pTalking']-=0x1;}else{logger[_0x229b('0x9')](_0x17d34e,_0x229b('0x5e'));}}else{logger[_0x229b('0x9')](_0x17d34e,_0x229b('0x5f'));}};exports['IsNotLoggedIn']=function(_0x409277){if(_0x409277<=0x0){return!![];}return![];};function buildObj(_0x17c9ee,_0x5d8703,_0x239359){_0x17c9ee[_0x229b('0x60')]=_0x5d8703;_0x17c9ee[_0x229b('0x61')]=_0x17c9ee[_0x229b('0x62')];_0x17c9ee[_0x229b('0x63')]=_0x17c9ee[_0x229b('0x4d')];_0x17c9ee[_0x229b('0x64')]='voice';if(_0x239359){_0x17c9ee[_0x229b('0x65')]=_0x239359['mandatoryDisposition'];}return _0x17c9ee;}exports[_0x229b('0x66')]=buildObj;exports[_0x229b('0x67')]=function(_0x571070){var _0x2b2333={};_0x2b2333[_0x229b('0x62')]=_0x571070['queue'];_0x2b2333[_0x229b('0x63')]=_0x571070[_0x229b('0x4d')];_0x2b2333['uniqueid']=_0x571070[_0x229b('0x4b')];return _0x2b2333;};exports[_0x229b('0x68')]=function(_0x53a5ae){var _0x17d4ec=[];for(var _0x5c0942 in _0x53a5ae){if(_0x53a5ae[_0x229b('0x29')](_0x5c0942)){if(!_[_0x229b('0x14')](_0x53a5ae[_0x5c0942])&&_0x53a5ae[_0x5c0942][_0x229b('0x37')]===_0x229b('0x69')&&_0x53a5ae[_0x5c0942][_0x229b('0x6a')]===_0x229b('0x6b')){_0x17d4ec[_0x229b('0x6c')](_0x53a5ae[_0x5c0942]['id']);}}}return _0x17d4ec;};exports[_0x229b('0x6d')]=function(_0x34863f){var _0x2b0266=moment()[_0x229b('0x6e')](0x0);var _0x3d27da=moment(_0x34863f)[_0x229b('0x6e')](0x0);return _0x2b0266[_0x229b('0x6f')](_0x3d27da,_0x229b('0x70'));};exports[_0x229b('0x71')]=function(_0x3340e7){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0x3340e7[_0x229b('0x19')],'ListId':_0x3340e7['ListId'],'VoiceQueueId':_0x3340e7['VoiceQueueId']||undefined,'CampaignId':_0x3340e7['CampaignId']||undefined};};exports[_0x229b('0x72')]=function(_0x296f96){if(_0x296f96===_0x229b('0x4b')||_0x296f96==='idContact'||_0x296f96===_0x229b('0x62')||_0x296f96===_0x229b('0x73')||_0x296f96===_0x229b('0x74')||_0x296f96==='dialAnswer'||_0x296f96===_0x229b('0x42')||_0x296f96===_0x229b('0x4d')||_0x296f96===_0x229b('0x17')||_0x296f96===_0x229b('0x58')||_0x296f96==='calleridnum'||_0x296f96===_0x229b('0x59')||_0x296f96===_0x229b('0x52')||_0x296f96===_0x229b('0x53')||_0x296f96===_0x229b('0x75')||_0x296f96===_0x229b('0x76')||_0x296f96===_0x229b('0x77')||_0x296f96===_0x229b('0x78')||_0x296f96===_0x229b('0x79')||_0x296f96===_0x229b('0x7a')||_0x296f96===_0x229b('0x19')||_0x296f96===_0x229b('0x5c')||_0x296f96===_0x229b('0x43')||_0x296f96===_0x229b('0x1b')||_0x296f96===_0x229b('0x7b')||_0x296f96===_0x229b('0x7c')||_0x296f96===_0x229b('0x7d')||_0x296f96==='xmd-phone'||_0x296f96==='xmd-listid'||_0x296f96===_0x229b('0x7e')||_0x296f96===_0x229b('0x7f')||_0x296f96==='xmd-dialoptions'||_0x296f96==='xmd-dialid'||_0x296f96==='xmd-dialchannel'||_0x296f96===_0x229b('0x80')||_0x296f96===_0x229b('0x81')||_0x296f96===_0x229b('0x82')||_0x296f96===_0x229b('0x83')||_0x296f96===_0x229b('0x84')||_0x296f96===_0x229b('0x85')||_0x296f96==='rtpaudioqosbridged'||_0x296f96===_0x229b('0x86')||_0x296f96===_0x229b('0x87')||_0x296f96===_0x229b('0x88')||_0x296f96===_0x229b('0x89')||_0x296f96===_0x229b('0x8a')||_0x296f96==='rtpaudioqosrttbridged'||_0x296f96===_0x229b('0x85')||_0x296f96==='rtpaudioqosbridged'||_0x296f96===_0x229b('0x86')||_0x296f96===_0x229b('0x87')||_0x296f96===_0x229b('0x88')||_0x296f96===_0x229b('0x89')||_0x296f96===_0x229b('0x8a')||_0x296f96===_0x229b('0x8b')||_0x296f96==='bridgepeer'||_0x296f96==='bridgepvtcallid'||_0x296f96===_0x229b('0x37')||_0x296f96===_0x229b('0x38')){return![];}return!![];};exports[_0x229b('0x8c')]=function(_0xf2ec9e,_0x25cfbd){var _0x3428ee,_0x29624b,_0x374cbc;if(_0x25cfbd<=0x0){_0x25cfbd=0x1;}_0x3428ee=new RegExp(_0x229b('0x8d')+_0x25cfbd+'}$');_0x29624b=Math[_0x229b('0x8e')](0xa,_0x25cfbd-0x1);_0x374cbc=Math[_0x229b('0x8e')](0xa,_0x25cfbd)-0x1;return util[_0x229b('0x11')]('%s',_['replace'](_0xf2ec9e,_0x3428ee,_['random'](_0x29624b,_0x374cbc)));};exports[_0x229b('0x8f')]=function(_0x15d66e){var _0x373f63=_0x15d66e[_0x229b('0x90')](/"(.*?)"/);return _0x373f63?_0x373f63[0x1]:_0x15d66e;};exports[_0x229b('0x91')]=function(_0x272d61){var _0xc14f25=_0x272d61[_0x229b('0x90')](/<(.*?)>/);return _0xc14f25?_0xc14f25[0x1]:_0x272d61;};function buildNoAnswerEventPayload(_0x2b872b,_0x4f28e2){var _0x5dfa15=buildObj(_0x2b872b,_0x229b('0x92'));if(!_[_0x229b('0x10')](_0x4f28e2['variables'])){Object[_0x229b('0x93')](_0x4f28e2[_0x229b('0x94')])[_0x229b('0x95')](function(_0x1e651d){_0x5dfa15[_0x1e651d[_0x229b('0x96')]()]=_0x4f28e2[_0x229b('0x94')][_0x1e651d];});}return _0x5dfa15;}exports[_0x229b('0x97')]=buildNoAnswerEventPayload;
\ No newline at end of file
+var _0xb83c=['add','minutes','ListId','decrementTalkink','pTalking','lastevent','queue','interface','voice','mandatoryDisposition','buildAcw','not_inuse','status','reachable','push','getDiff','milliseconds','diff','createBody','CampaignId','idContact','type','campaigntype','dialAnswer','scheduledat','countglobal','callback','xmd-voicequeueid','xmd-phone','xmd-dialurl','xmd-dialtimeout','xmd-dialoptions','xmd-dialid','xmd-dialchannel','xmd-contactid','xmd-cdrtype','xmd-callerid','xmd-agiafter','xmd-agi','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitterbridged','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','rtpaudioqosjitter','rtpaudioqosloss','bridgepeer','\x5cw{0,','pow','replace','random','extractCalleridName','extractCalleridNumber','match','noanswer','variables','keys','forEach','toLowerCase','util','lodash','moment','../../../../config/logger','preview','XCALLY_IP_AGI','127.0.0.1','../../dialer/utils','loggerCatch','error','inspect','logger','info','loggerError','logger2','message','getCallerId','isUndefined','string','isEmpty','format','\x22%s\x22\x20<%s>','\x22\x22\x20<>','isActive','isNil','addVariables','Queue','name','calleridname','ContactId','VoiceQueueId','dialOriginateTimeout','\x22rtTxX%s%s\x22','dialQueueProject2','dialQueueProject','NONE','\x22agi://%s/square,%s\x22','originatecalleridnum','originatecalleridname','Call-Type:\x20PREVIEW','monitor_format','_XCALLY_MIXMONITOR_UNIQUEID','Contact','updatedAt','XMD-','toUpper','toLowerVariables','hasOwnProperty','toLower','updateOriginated','originated','[updateOriginated]\x20object\x20originated\x20is\x20negative','logBlacklist','YYYY-MM-DD\x20HH:mm:ss','state','statedesc','starttime','responsetime','logAgent','ringtime','getSeconds','logLookAgent','membername','UserId','logCustomer','endtime','talktime','answertime','isFailure','Failure','variablesAction','RECALL','BOOKED','originate','channelAgent','calleridnum','from-sip','timeout','uniqueid','totalGlobal','countbusyretry','countcongestionretry','countnoanswerretry','countagentrejectretry','countnosuchnumberretry','cloneAction','clone','Global','scheduledAt','active'];(function(_0x5ed40a,_0x352d04){var _0x31ca82=function(_0x1e053f){while(--_0x1e053f){_0x5ed40a['push'](_0x5ed40a['shift']());}};_0x31ca82(++_0x352d04);}(_0xb83c,0xd2));var _0xcb83=function(_0x50a676,_0x16f271){_0x50a676=_0x50a676-0x0;var _0x58680d=_0xb83c[_0x50a676];return _0x58680d;};'use strict';var util=require(_0xcb83('0x0'));var _=require(_0xcb83('0x1'));var moment=require(_0xcb83('0x2'));var logger=require(_0xcb83('0x3'))(_0xcb83('0x4'));var ipAgi=process['env'][_0xcb83('0x5')]||_0xcb83('0x6');var utils=require(_0xcb83('0x7'));exports[_0xcb83('0x8')]=function(_0xbde858){return function(_0x58d5a6){logger[_0xcb83('0x9')](_0xbde858,util[_0xcb83('0xa')](_0x58d5a6,{'showHidden':![],'depth':null}));};};exports[_0xcb83('0xb')]=function(_0x5892b2,_0x21f347){logger[_0xcb83('0xc')](_0x5892b2,util[_0xcb83('0xa')](_0x21f347,{'showHidden':![],'depth':null}));};exports[_0xcb83('0xd')]=function(_0x1edbc0,_0x46c1e1){logger[_0xcb83('0x9')](_0x1edbc0,util[_0xcb83('0xa')](_0x46c1e1,{'showHidden':![],'depth':null}));};exports[_0xcb83('0xe')]=function(_0x585399){return function(_0xdf2844){logger[_0xcb83('0xc')](_0x585399,util[_0xcb83('0xa')](_0xdf2844,{'showHidden':![],'depth':null}));};};exports[_0xcb83('0xf')]=function(_0x546780,_0x325f44,_0x4de6a8){return{'message':_0x546780,'unlock':_0x325f44,'active':_0x4de6a8};};exports[_0xcb83('0x10')]=function(_0x1d9e79,_0x5892d7,_0x4c6d11){if(!_[_0xcb83('0x11')](_0x4c6d11)&&_0xcb83('0x12')===typeof _0x4c6d11&&!_[_0xcb83('0x13')](_0x4c6d11)){if(!_[_0xcb83('0x11')](_0x5892d7)&&_0xcb83('0x12')===typeof _0x5892d7&&!_[_0xcb83('0x13')](_0x5892d7)){return util[_0xcb83('0x14')](_0xcb83('0x15'),_0x5892d7,_0x4c6d11);}return util[_0xcb83('0x14')](_0xcb83('0x15'),_0x4c6d11,_0x4c6d11);}if(!_['isUndefined'](_0x1d9e79)&&_0xcb83('0x12')===typeof _0x1d9e79&&!_[_0xcb83('0x13')](_0x1d9e79)){return _0x1d9e79;}return _0xcb83('0x16');};exports[_0xcb83('0x17')]=function(_0xce6906){if(_[_0xcb83('0x18')](_0xce6906)){return![];}return _0xce6906;};exports[_0xcb83('0x19')]=function(_0x55677f,_0x5bbafb,_0x357f4f,_0x32fb8e,_0x5c7592,_0x1abbb2){var _0x3fbdb3={'XMD-QUEUE':_0x5bbafb[_0xcb83('0x1a')]?_0x5bbafb[_0xcb83('0x1a')][_0xcb83('0x1b')]:'','XMD-CALLERID':_0x32fb8e,'XMD-CALLERID-PREVIEW':_0x1abbb2?util[_0xcb83('0x14')](_0xcb83('0x15'),_0x1abbb2[_0xcb83('0x1c')],_0x1abbb2['calleridnum']):_0x32fb8e,'XMD-DIALID':_0x5c7592,'XMD-CONTACTID':_0x5bbafb[_0xcb83('0x1d')],'XMD-CDRTYPE':'dialer','CALLERID(all)':_0x32fb8e,'XMD-VOICEQUEUEID':_0x5bbafb[_0xcb83('0x1e')],'XMD-DIALCHANNEL':_0x357f4f,'XMD-DIALTIMEOUT':_0x55677f[_0xcb83('0x1f')]||0x1e,'XMD-DIALOPTIONS':util[_0xcb83('0x14')](_0xcb83('0x20'),_0x55677f[_0xcb83('0x21')]?'g':'',_[_0xcb83('0x13')](_0x55677f['monitor_format'])?'':'U(xcally-mixmonitor-context)'),'XMD-DIALURL':_0x55677f['dialPreviewUrl']||'','XMD-AGI':_0x55677f[_0xcb83('0x22')]?util[_0xcb83('0x14')]('\x22agi://%s/square,%s\x22',ipAgi,_0x55677f[_0xcb83('0x22')]):_0xcb83('0x23'),'XMD-AGIAFTER':_0x55677f[_0xcb83('0x21')]?util[_0xcb83('0x14')](_0xcb83('0x24'),ipAgi,_0x55677f[_0xcb83('0x21')]):_0xcb83('0x23'),'XMD-ORIGINATECALLERIDNUM':_0x1abbb2?_0x1abbb2[_0xcb83('0x25')]:'','XMD-ORIGINATECALLERIDNAME':_0x1abbb2?_0x1abbb2[_0xcb83('0x26')]:'','XMD-DESTINATION':'xcally-motion-preview','SIPADDHEADER':_0xcb83('0x27')};if(!_[_0xcb83('0x13')](_0x55677f[_0xcb83('0x28')])){_0x3fbdb3[util[_0xcb83('0x14')]('%s','_XCALLY_MIXMONITOR_FORMAT')]=_0x55677f[_0xcb83('0x28')];_0x3fbdb3[util['format']('%s',_0xcb83('0x29'))]=_0x5c7592;}if(_0x5bbafb&&_0x5bbafb[_0xcb83('0x2a')]){for(var _0xcfe128 in _0x5bbafb[_0xcb83('0x2a')]){if(_0x5bbafb[_0xcb83('0x2a')]['hasOwnProperty'](_0xcfe128)){if(!_[_0xcb83('0x18')](_0x5bbafb[_0xcb83('0x2a')][_0xcfe128])&&_0xcfe128!=='id'&&_0xcfe128!=='tags'&&_0xcfe128!=='createdAt'&&_0xcfe128!==_0xcb83('0x2b')){_0x3fbdb3[util[_0xcb83('0x14')]('%s%s',_0xcb83('0x2c'),_[_0xcb83('0x2d')](_0xcfe128))]=_0x5bbafb['Contact'][_0xcfe128];}}}}return _0x3fbdb3;};exports[_0xcb83('0x2e')]=function(_0x183ca3){var _0xf55238={};for(var _0xd4750b in _0x183ca3){if(_0x183ca3[_0xcb83('0x2f')](_0xd4750b)){_0xf55238[util[_0xcb83('0x14')]('%s',_[_0xcb83('0x30')](_0xd4750b))]=_0x183ca3[_0xd4750b];}}return{'variables':_0xf55238};};exports[_0xcb83('0x31')]=function(_0x150560,_0x26f397){if(!_[_0xcb83('0x18')](_0x150560)){if(_0x150560['hasOwnProperty'](_0xcb83('0x32'))){if(_0x150560[_0xcb83('0x32')]>0x0){_0x150560[_0xcb83('0x32')]-=0x1;}else{logger[_0xcb83('0x9')](_0xcb83('0x33'),_0x26f397);}}}else{logger[_0xcb83('0x9')]('[updateOriginated]\x20is\x20null\x20or\x20undefined',_0x26f397);}};exports[_0xcb83('0x34')]=function(_0x4a79ff){var _0x12b871=moment()['format'](_0xcb83('0x35'));_0x4a79ff[_0xcb83('0x36')]=0xd;_0x4a79ff[_0xcb83('0x37')]='Blacklist';_0x4a79ff[_0xcb83('0x38')]=_0x12b871;_0x4a79ff[_0xcb83('0x39')]=_0x12b871;_0x4a79ff['endtime']=_0x12b871;};exports[_0xcb83('0x3a')]=function(_0x26f0db,_0x1490a7,_0x188d15){var _0x5ac2be=moment()['format'](_0xcb83('0x35'));_0x26f0db[_0xcb83('0x36')]=_0x1490a7;_0x26f0db[_0xcb83('0x37')]=_0x188d15;_0x26f0db[_0xcb83('0x39')]=_0x5ac2be;_0x26f0db[_0xcb83('0x3b')]=utils[_0xcb83('0x3c')](_0x26f0db[_0xcb83('0x39')],_0x26f0db[_0xcb83('0x38')]);};exports[_0xcb83('0x3d')]=function(_0x205984,_0x6f8754,_0x26b3ef){_0x205984[_0xcb83('0x3e')]=_0x6f8754;_0x205984[_0xcb83('0x3f')]=_0x26b3ef;};exports[_0xcb83('0x40')]=function(_0x4ae49d,_0x3231ac,_0x4fd9c6){var _0x19fd70=moment()['format'](_0xcb83('0x35'));_0x4ae49d[_0xcb83('0x36')]=_0x3231ac;_0x4ae49d[_0xcb83('0x37')]=_0x4fd9c6;_0x4ae49d['responsetime']=_0x4ae49d['responsetime']?_0x4ae49d[_0xcb83('0x39')]:_0x19fd70;_0x4ae49d[_0xcb83('0x41')]=_0x4ae49d[_0xcb83('0x41')]?_0x4ae49d[_0xcb83('0x41')]:_0x19fd70;_0x4ae49d[_0xcb83('0x3b')]=utils['getSeconds'](_0x4ae49d[_0xcb83('0x39')]||0x0,_0x4ae49d['starttime']||0x0);_0x4ae49d[_0xcb83('0x42')]=_0x4ae49d[_0xcb83('0x43')]?utils['getSeconds'](_0x4ae49d[_0xcb83('0x41')],_0x4ae49d[_0xcb83('0x43')]):0x0;};exports[_0xcb83('0x44')]=function(_0x273150){return _0x273150===_0xcb83('0x45');};exports[_0xcb83('0x46')]=function(_0x38ada8,_0x4bb6d5,_0x11aae1,_0xd83080,_0x8f76b6){var _0x1c0570=_0xd83080?_0xcb83('0x47'):_0x38ada8[_0xcb83('0x1c')];_0x1c0570=_0x8f76b6?_0xcb83('0x48'):_0x1c0570;return{'actionid':_0x38ada8['uniqueid'],'action':_0xcb83('0x49'),'channel':_0x38ada8[_0xcb83('0x4a')],'callerid':util[_0xcb83('0x14')](_0xcb83('0x15'),_0x1c0570,_0x38ada8[_0xcb83('0x4b')]),'Exten':'xcally-motion-preview','Context':_0xcb83('0x4c'),'Priority':'1','variable':_0x11aae1,'timeout':(_0x4bb6d5[_0xcb83('0x4d')]||0x1e)*0x3e8,'async':!![],'channelid':_0x38ada8[_0xcb83('0x4e')]};};exports[_0xcb83('0x4f')]=function(_0x1e01a2){return _0x1e01a2[_0xcb83('0x50')]+_0x1e01a2[_0xcb83('0x51')]+_0x1e01a2[_0xcb83('0x52')]+_0x1e01a2[_0xcb83('0x53')]+_0x1e01a2[_0xcb83('0x54')];};exports[_0xcb83('0x55')]=function(_0xfc95b0){var _0x457260=_[_0xcb83('0x56')](_0xfc95b0);_0x457260[_0xcb83('0x36')]=0xf;_0x457260[_0xcb83('0x37')]=_0xcb83('0x57');return _0x457260;};exports[_0xcb83('0x58')]=function(_0x37781e,_0x38c145,_0x3f3312){var _0x142af4={};_0x142af4[_0x38c145]=_0x37781e[_0x38c145];_0x142af4[_0xcb83('0x59')]=![];_0x142af4['scheduledat']=moment()[_0xcb83('0x5a')](_0x3f3312,_0xcb83('0x5b'))[_0xcb83('0x14')](_0xcb83('0x35'));_0x142af4['ContactId']=_0x37781e[_0xcb83('0x1d')];_0x142af4['ListId']=_0x37781e[_0xcb83('0x5c')];_0x142af4[_0xcb83('0x1e')]=_0x37781e[_0xcb83('0x1e')]||undefined;return _0x142af4;};exports[_0xcb83('0x5d')]=function(_0x1d9304,_0x3e059e){if(!_['isNil'](_0x1d9304)){if(_0x1d9304['pTalking']>0x0){_0x1d9304[_0xcb83('0x5e')]-=0x1;}else{logger[_0xcb83('0x9')](_0x3e059e,'[decrementTalkink]\x20object\x20talking\x20is\x20negative');}}else{logger['error'](_0x3e059e,'[decrementTalkink]\x20is\x20null\x20or\x20undefined');}};exports['IsNotLoggedIn']=function(_0x1395ac){if(_0x1395ac<=0x0){return!![];}return![];};function buildObj(_0x67fb86,_0x14fd31,_0xae2fc0){_0x67fb86[_0xcb83('0x5f')]=_0x14fd31;_0x67fb86[_0xcb83('0x1b')]=_0x67fb86[_0xcb83('0x60')];_0x67fb86[_0xcb83('0x61')]=_0x67fb86['channelAgent'];_0x67fb86['motionChannel']=_0xcb83('0x62');if(_0xae2fc0){_0x67fb86[_0xcb83('0x63')]=_0xae2fc0[_0xcb83('0x63')];}return _0x67fb86;}exports['buildObj']=buildObj;exports[_0xcb83('0x64')]=function(_0x21a58b){var _0x56fd1d={};_0x56fd1d[_0xcb83('0x60')]=_0x21a58b[_0xcb83('0x60')];_0x56fd1d['interface']=_0x21a58b[_0xcb83('0x4a')];_0x56fd1d[_0xcb83('0x4e')]=_0x21a58b[_0xcb83('0x4e')];return _0x56fd1d;};exports['agentReadyId']=function(_0x5b14ac){var _0x546795=[];for(var _0x5c72c4 in _0x5b14ac){if(_0x5b14ac[_0xcb83('0x2f')](_0x5c72c4)){if(!_[_0xcb83('0x18')](_0x5b14ac[_0x5c72c4])&&_0x5b14ac[_0x5c72c4]['state']===_0xcb83('0x65')&&_0x5b14ac[_0x5c72c4][_0xcb83('0x66')]===_0xcb83('0x67')){_0x546795[_0xcb83('0x68')](_0x5b14ac[_0x5c72c4]['id']);}}}return _0x546795;};exports[_0xcb83('0x69')]=function(_0x4f7908){var _0x4dcf73=moment()[_0xcb83('0x6a')](0x0);var _0x4d0101=moment(_0x4f7908)[_0xcb83('0x6a')](0x0);return _0x4dcf73[_0xcb83('0x6b')](_0x4d0101,'seconds');};exports[_0xcb83('0x6c')]=function(_0x183116){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0x183116[_0xcb83('0x1d')],'ListId':_0x183116[_0xcb83('0x5c')],'VoiceQueueId':_0x183116[_0xcb83('0x1e')]||undefined,'CampaignId':_0x183116[_0xcb83('0x6d')]||undefined};};exports['filterKey']=function(_0x35cd84){if(_0x35cd84===_0xcb83('0x4e')||_0x35cd84===_0xcb83('0x6e')||_0x35cd84==='queue'||_0x35cd84===_0xcb83('0x6f')||_0x35cd84===_0xcb83('0x70')||_0x35cd84===_0xcb83('0x71')||_0x35cd84===_0xcb83('0x3e')||_0x35cd84===_0xcb83('0x4a')||_0x35cd84===_0xcb83('0x1c')||_0x35cd84===_0xcb83('0x59')||_0x35cd84===_0xcb83('0x4b')||_0x35cd84===_0xcb83('0x72')||_0x35cd84===_0xcb83('0x50')||_0x35cd84===_0xcb83('0x51')||_0x35cd84==='countnoanswerretry'||_0x35cd84===_0xcb83('0x73')||_0x35cd84===_0xcb83('0x74')||_0x35cd84==='callbackuniqueid'||_0x35cd84==='callbackat'||_0x35cd84==='recallme'||_0x35cd84===_0xcb83('0x1d')||_0x35cd84===_0xcb83('0x5c')||_0x35cd84===_0xcb83('0x3f')||_0x35cd84===_0xcb83('0x1e')||_0x35cd84==='sipcallid'||_0x35cd84===_0xcb83('0x75')||_0x35cd84==='xmd-queue'||_0x35cd84===_0xcb83('0x76')||_0x35cd84==='xmd-listid'||_0x35cd84===_0xcb83('0x77')||_0x35cd84===_0xcb83('0x78')||_0x35cd84===_0xcb83('0x79')||_0x35cd84===_0xcb83('0x7a')||_0x35cd84===_0xcb83('0x7b')||_0x35cd84===_0xcb83('0x7c')||_0x35cd84===_0xcb83('0x7d')||_0x35cd84===_0xcb83('0x7e')||_0x35cd84===_0xcb83('0x7f')||_0x35cd84===_0xcb83('0x80')||_0x35cd84===_0xcb83('0x81')||_0x35cd84===_0xcb83('0x82')||_0x35cd84==='rtpaudioqosjitter'||_0x35cd84===_0xcb83('0x83')||_0x35cd84==='rtpaudioqosloss'||_0x35cd84===_0xcb83('0x84')||_0x35cd84===_0xcb83('0x85')||_0x35cd84===_0xcb83('0x86')||_0x35cd84===_0xcb83('0x81')||_0x35cd84===_0xcb83('0x82')||_0x35cd84===_0xcb83('0x87')||_0x35cd84==='rtpaudioqosjitterbridged'||_0x35cd84===_0xcb83('0x88')||_0x35cd84===_0xcb83('0x84')||_0x35cd84===_0xcb83('0x85')||_0x35cd84===_0xcb83('0x86')||_0x35cd84===_0xcb83('0x89')||_0x35cd84==='bridgepvtcallid'||_0x35cd84==='state'||_0x35cd84===_0xcb83('0x37')){return![];}return!![];};exports['getCallerIdRandom']=function(_0x535011,_0x18e106){var _0x224ef2,_0x2420bf,_0x270dda;if(_0x18e106<=0x0){_0x18e106=0x1;}_0x224ef2=new RegExp(_0xcb83('0x8a')+_0x18e106+'}$');_0x2420bf=Math[_0xcb83('0x8b')](0xa,_0x18e106-0x1);_0x270dda=Math[_0xcb83('0x8b')](0xa,_0x18e106)-0x1;return util[_0xcb83('0x14')]('%s',_[_0xcb83('0x8c')](_0x535011,_0x224ef2,_[_0xcb83('0x8d')](_0x2420bf,_0x270dda)));};exports[_0xcb83('0x8e')]=function(_0x966623){var _0x1c2812=_0x966623['match'](/"(.*?)"/);return _0x1c2812?_0x1c2812[0x1]:_0x966623;};exports[_0xcb83('0x8f')]=function(_0x26206e){var _0x5697cc=_0x26206e[_0xcb83('0x90')](/<(.*?)>/);return _0x5697cc?_0x5697cc[0x1]:_0x26206e;};function buildNoAnswerEventPayload(_0xdf4655,_0x4e54ca){var _0x41188e=buildObj(_0xdf4655,_0xcb83('0x91'));if(!_[_0xcb83('0x13')](_0x4e54ca[_0xcb83('0x92')])){Object[_0xcb83('0x93')](_0x4e54ca[_0xcb83('0x92')])[_0xcb83('0x94')](function(_0x4d174a){_0x41188e[_0x4d174a[_0xcb83('0x95')]()]=_0x4e54ca[_0xcb83('0x92')][_0x4d174a];});}return _0x41188e;}exports['buildNoAnswerEventPayload']=buildNoAnswerEventPayload;
\ No newline at end of file
index 48e696c..4be8fd7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa32=['voicequeuechannel','voicequeuechannelhangup','voicequeuechannelredirect','queueadd','string','number','boolean','queueremove','queuepause'];(function(_0x504a7e,_0x28912e){var _0x1da154=function(_0x3597ef){while(--_0x3597ef){_0x504a7e['push'](_0x504a7e['shift']());}};_0x1da154(++_0x28912e);}(_0xaa32,0x78));var _0x2aa3=function(_0x57787e,_0x120aea){_0x57787e=_0x57787e-0x0;var _0x518830=_0xaa32[_0x57787e];return _0x518830;};'use strict';exports[_0x2aa3('0x0')]={'queue':{'type':_0x2aa3('0x1'),'required':!![]},'interface':{'type':_0x2aa3('0x1'),'required':!![]},'membername':{'type':_0x2aa3('0x1'),'required':!![]},'penalty':{'type':_0x2aa3('0x2'),'required':![]},'paused':{'type':_0x2aa3('0x3'),'required':![]}};exports[_0x2aa3('0x4')]={'queue':{'type':_0x2aa3('0x1'),'required':!![]},'interface':{'type':_0x2aa3('0x1'),'required':!![]}};exports[_0x2aa3('0x5')]={'interface':{'type':_0x2aa3('0x1'),'required':!![]},'paused':{'type':_0x2aa3('0x3')},'reason':{'type':_0x2aa3('0x1'),'required':![]}};exports['reload']={'module':{'type':'string','required':![]}};exports[_0x2aa3('0x6')]={'uniqueid':{'type':_0x2aa3('0x1'),'required':!![]}};exports['voicechannel']={'uniqueid':{'type':_0x2aa3('0x1'),'required':!![]},'filename':{'type':_0x2aa3('0x1')},'format':{'type':'string'},'mixmonitorid':{'type':_0x2aa3('0x1')}};exports[_0x2aa3('0x7')]={'uniqueid':{'type':'string','required':!![]}};exports[_0x2aa3('0x8')]={'uniqueid':{'type':'string','required':!![]},'exten':{'type':'string','required':!![]},'context':{'type':_0x2aa3('0x1')}};
\ No newline at end of file
+var _0xf3be=['reload','voicechannel','voicequeuechannelhangup','voicequeuechannelredirect','queueadd','string','number','boolean'];(function(_0x2f5a92,_0x7bacc4){var _0x4dff36=function(_0x5135bd){while(--_0x5135bd){_0x2f5a92['push'](_0x2f5a92['shift']());}};_0x4dff36(++_0x7bacc4);}(_0xf3be,0x134));var _0xef3b=function(_0x1587c0,_0x2898be){_0x1587c0=_0x1587c0-0x0;var _0x40153a=_0xf3be[_0x1587c0];return _0x40153a;};'use strict';exports[_0xef3b('0x0')]={'queue':{'type':_0xef3b('0x1'),'required':!![]},'interface':{'type':_0xef3b('0x1'),'required':!![]},'membername':{'type':'string','required':!![]},'penalty':{'type':_0xef3b('0x2'),'required':![]},'paused':{'type':_0xef3b('0x3'),'required':![]}};exports['queueremove']={'queue':{'type':_0xef3b('0x1'),'required':!![]},'interface':{'type':_0xef3b('0x1'),'required':!![]}};exports['queuepause']={'interface':{'type':'string','required':!![]},'paused':{'type':'boolean'},'reason':{'type':'string','required':![]}};exports[_0xef3b('0x4')]={'module':{'type':_0xef3b('0x1'),'required':![]}};exports['voicequeuechannel']={'uniqueid':{'type':_0xef3b('0x1'),'required':!![]}};exports[_0xef3b('0x5')]={'uniqueid':{'type':_0xef3b('0x1'),'required':!![]},'filename':{'type':'string'},'format':{'type':_0xef3b('0x1')},'mixmonitorid':{'type':_0xef3b('0x1')}};exports[_0xef3b('0x6')]={'uniqueid':{'type':_0xef3b('0x1'),'required':!![]}};exports[_0xef3b('0x7')]={'uniqueid':{'type':_0xef3b('0x1'),'required':!![]},'exten':{'type':_0xef3b('0x1'),'required':!![]},'context':{'type':_0xef3b('0x1')}};
\ No newline at end of file
index 6fa595d..1c2c5e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f2f=['initCampaignHopperHistory','merge','initFaxAccounts','initVoiceQueues','exports','lodash','moment','util','../model/agent','../model/telephone','../model/trunk','../model/voiceQueue','../model/trigger','../model/voiceExtension','../model/zendeskAccount','../model/salesforceAccount','../model/freshdeskAccount','../model/sugarcrmAccount','../model/zohoAccount','../model/vtigerAccount','../model/servicenowAccount','../model/dynamics365Account','../model/faxAccount','agents','telephones','voiceQueues','templates','outbound','channels','queueChannels','outboundChannels','timers','settings','zendeskAccounts','sugarcrmAccounts','freshdeskAccounts','zohoAccounts','deskAccounts','vtigerAccounts','dynamics365Accounts','freshsalesAccounts','faxAccounts','mapKeys','hasOwnProperty','format','name','isNil','interface','sumHoldTime','sumDuration','sumBillable','isEmpty','ivrTotalCallsDays','ivrAnswerCallsDay','total','answered','unmanaged','outboundAnswerAgiCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundDropCallsDayTimeout','outboundDropCallsDayCallersExit','outboundRejectCallsDay','queueStatusComplete','prototype','mergeFromDatabase','length','isUndefined','initTelephones','SIP/%s','trunks','initTriggers','triggers','initTemplates','initZendeskAccounts','initSalesforceAccounts','salesforceAccounts','initFreshdeskAccounts','initDeskAccounts','initSugarcrmAccounts','initVtigerAccounts','initServicenowAccounts','servicenowAccounts','initDynamics365Accounts','initFreshsalesAccounts','initVoiceQueueHopperHistory','initVoiceQueueReports','groupBy','uniqueid','queue','queuecallerexit','abandoned','queuecallerleaveAt','diff','seconds','queuecallercompleteAt','queuecallerexitAt','queuecallercomplete','initVoiceCallReports','duration','disposition','ANSWERED','billableseconds','initCampaigns','campaigns','dialQueueProject','SquareProject','initVoiceExtensions','voiceExtensions'];(function(_0x5886ac,_0x533256){var _0x4a2954=function(_0x526c2f){while(--_0x526c2f){_0x5886ac['push'](_0x5886ac['shift']());}};_0x4a2954(++_0x533256);}(_0x5f2f,0x73));var _0xf5f2=function(_0x36fe10,_0x539789){_0x36fe10=_0x36fe10-0x0;var _0x24a049=_0x5f2f[_0x36fe10];return _0x24a049;};'use strict';var _=require(_0xf5f2('0x0'));var moment=require(_0xf5f2('0x1'));var util=require(_0xf5f2('0x2'));var Agent=require(_0xf5f2('0x3'));var Telephone=require(_0xf5f2('0x4'));var Trunk=require(_0xf5f2('0x5'));var VoiceQueue=require(_0xf5f2('0x6'));var Trigger=require(_0xf5f2('0x7'));var Template=require('../model/template');var Campaign=require('../model/campaign');var VoiceExtension=require(_0xf5f2('0x8'));var ZendeskAccount=require(_0xf5f2('0x9'));var SalesforceAccount=require(_0xf5f2('0xa'));var FreshdeskAccount=require(_0xf5f2('0xb'));var SugarcrmAccount=require(_0xf5f2('0xc'));var ZohoAccount=require(_0xf5f2('0xd'));var DeskAccount=require('../model/deskAccount');var VtigerAccount=require(_0xf5f2('0xe'));var ServicenowAccount=require(_0xf5f2('0xf'));var Dynamics365Account=require(_0xf5f2('0x10'));var FreshsalesAccount=require('../model/freshsalesAccount');var FaxAccount=require(_0xf5f2('0x11'));function Realtime(){this[_0xf5f2('0x12')]={};this[_0xf5f2('0x13')]={};this['trunks']={};this[_0xf5f2('0x14')]={};this['triggers']={};this['campaigns']={};this[_0xf5f2('0x15')]={};this[_0xf5f2('0x16')]={'total':0x0,'answered':0x0,'sumHoldTime':0x0,'sumDuration':0x0,'sumBillable':0x0};this['voiceExtensions']={};this[_0xf5f2('0x17')]={};this[_0xf5f2('0x18')]={};this[_0xf5f2('0x19')]={};this[_0xf5f2('0x1a')]={};this[_0xf5f2('0x1b')]={};this[_0xf5f2('0x1c')]={};this['salesforceAccounts']={};this[_0xf5f2('0x1d')]={};this[_0xf5f2('0x1e')]={};this[_0xf5f2('0x1f')]={};this[_0xf5f2('0x20')]={};this[_0xf5f2('0x21')]={};this['servicenowAccounts']={};this[_0xf5f2('0x22')]={};this[_0xf5f2('0x23')]={};this[_0xf5f2('0x24')]={};}function freeIsNotKey(_0x1b6dd2,_0x23e23a,_0x3a9dbb){var _0xdb61b3=_[_0xf5f2('0x25')](_0x1b6dd2,function(_0x11f702){return _0x11f702[_0x3a9dbb];});for(var _0x228ace in _0x23e23a){if(_0x23e23a[_0xf5f2('0x26')](_0x228ace)){if(!_0xdb61b3[_0x228ace]){delete _0x23e23a[_0x228ace];}}}}function freeIsNotKeySip(_0x28e097,_0x4ff59b){var _0x3ee69=_[_0xf5f2('0x25')](_0x28e097,function(_0x626999){return util[_0xf5f2('0x27')]('SIP/%s',_0x626999[_0xf5f2('0x28')]);});for(var _0x47101e in _0x4ff59b){if(_0x4ff59b['hasOwnProperty'](_0x47101e)){if(!_0x3ee69[_0x47101e]){delete _0x4ff59b[_0x47101e];}}}}function freeIsNotKeyAgent(_0x47acfc,_0x2d2805){var _0x388e6c=_['mapKeys'](_0x47acfc,function(_0x45b74f){var _0x170042=_[_0xf5f2('0x29')](_0x45b74f[_0xf5f2('0x2a')])?util[_0xf5f2('0x27')]('SIP/%s',_0x45b74f[_0xf5f2('0x28')]):_0x45b74f[_0xf5f2('0x2a')];return _0x170042;});for(var _0x4e8bda in _0x2d2805){if(_0x2d2805[_0xf5f2('0x26')](_0x4e8bda)){if(!_0x388e6c[_0x4e8bda]){delete _0x2d2805[_0x4e8bda];}}}}function clearVoiceCallReports(_0x287ad5){_0x287ad5['total']=0x0;_0x287ad5['answered']=0x0;_0x287ad5[_0xf5f2('0x2b')]=0x0;_0x287ad5[_0xf5f2('0x2c')]=0x0;_0x287ad5[_0xf5f2('0x2d')]=0x0;}function clearCampaigns(_0x1a5bb3){if(!_[_0xf5f2('0x2e')](_0x1a5bb3)){for(var _0x788a8d in _0x1a5bb3){if(_0x1a5bb3[_0xf5f2('0x26')](_0x788a8d)){_0x1a5bb3[_0x788a8d][_0xf5f2('0x2f')]=0x0;_0x1a5bb3[_0x788a8d][_0xf5f2('0x30')]=0x0;}}}}function clearVoiceQueues(_0x4ab014){if(!_[_0xf5f2('0x2e')](_0x4ab014)){for(var _0x102449 in _0x4ab014){if(_0x4ab014[_0xf5f2('0x26')](_0x102449)){_0x4ab014[_0x102449][_0xf5f2('0x31')]=0x0;_0x4ab014[_0x102449][_0xf5f2('0x32')]=0x0;_0x4ab014[_0x102449][_0xf5f2('0x33')]=0x0;_0x4ab014[_0x102449]['abandoned']=0x0;_0x4ab014[_0x102449]['sumHoldTime']=0x0;_0x4ab014[_0x102449][_0xf5f2('0x2c')]=0x0;_0x4ab014[_0x102449][_0xf5f2('0x2d')]=0x0;_0x4ab014[_0x102449][_0xf5f2('0x34')]=0x0;_0x4ab014[_0x102449]['outboundNoAnswerCallsDay']=0x0;_0x4ab014[_0x102449]['outboundBusyCallsDay']=0x0;_0x4ab014[_0x102449][_0xf5f2('0x35')]=0x0;_0x4ab014[_0x102449][_0xf5f2('0x36')]=0x0;_0x4ab014[_0x102449][_0xf5f2('0x37')]=0x0;_0x4ab014[_0x102449][_0xf5f2('0x38')]=0x0;_0x4ab014[_0x102449][_0xf5f2('0x39')]=0x0;_0x4ab014[_0x102449]['outboundBlacklistCallsDay']=0x0;_0x4ab014[_0x102449]['outboundOriginateFailureCallsDay']=0x0;_0x4ab014[_0x102449][_0xf5f2('0x3a')]=0x0;_0x4ab014[_0x102449]['outboundReCallsDay']=0x0;_0x4ab014[_0x102449][_0xf5f2('0x34')]=0x0;_0x4ab014[_0x102449]['outboundAnswerCallsDay']=0x0;_0x4ab014[_0x102449][_0xf5f2('0x3b')]=!![];}}}}Realtime[_0xf5f2('0x3c')][_0xf5f2('0x3d')]=function(_0x428770,_0x256bd9){for(var _0x277eee in _0x256bd9){if(_0x428770[_0xf5f2('0x26')](_0x277eee)){_0x428770[_0x277eee]=_0x256bd9[_0x277eee];}}};Realtime[_0xf5f2('0x3c')]['initAgents']=function(){var _0x4149e6=this;return function(_0x43e4ff){if(_0x43e4ff){freeIsNotKeyAgent(_0x43e4ff,_0x4149e6[_0xf5f2('0x12')]);for(var _0x43c77d=0x0,_0x1408b9={};_0x43c77d<_0x43e4ff[_0xf5f2('0x3e')];_0x43c77d+=0x1){_0x1408b9=_0x43e4ff[_0x43c77d];var _0x297c0c=_['isNil'](_0x1408b9[_0xf5f2('0x2a')])?util[_0xf5f2('0x27')]('SIP/%s',_0x1408b9[_0xf5f2('0x28')]):_0x1408b9['interface'];if(_[_0xf5f2('0x3f')](_0x4149e6[_0xf5f2('0x12')][_0x297c0c])){_0x4149e6[_0xf5f2('0x12')][_0x297c0c]=new Agent(_0x1408b9);}else{_0x4149e6[_0xf5f2('0x3d')](_0x4149e6['agents'][_0x297c0c],_0x1408b9);}}}return _0x4149e6['agents'];};};Realtime[_0xf5f2('0x3c')][_0xf5f2('0x40')]=function(){var _0x20eb74=this;return function(_0x4ec8fb){if(_0x4ec8fb){freeIsNotKeySip(_0x4ec8fb,_0x20eb74[_0xf5f2('0x13')]);for(var _0x4f7f80=0x0,_0x9da533={};_0x4f7f80<_0x4ec8fb['length'];_0x4f7f80+=0x1){_0x9da533=_0x4ec8fb[_0x4f7f80];if(_[_0xf5f2('0x3f')](_0x20eb74[_0xf5f2('0x13')][util['format'](_0xf5f2('0x41'),_0x9da533[_0xf5f2('0x28')])])){_0x20eb74[_0xf5f2('0x13')][util[_0xf5f2('0x27')]('SIP/%s',_0x9da533['name'])]=new Telephone(_0x9da533);}else{_0x20eb74[_0xf5f2('0x3d')](_0x20eb74[_0xf5f2('0x13')][util[_0xf5f2('0x27')](_0xf5f2('0x41'),_0x9da533[_0xf5f2('0x28')])],_0x9da533);}}}return _0x20eb74[_0xf5f2('0x13')];};};Realtime[_0xf5f2('0x3c')]['initTrunks']=function(){var _0x110fe5=this;return function(_0x3b4ea6){if(_0x3b4ea6){freeIsNotKeySip(_0x3b4ea6,_0x110fe5['trunks']);for(var _0xc6a1ae=0x0,_0x3f3895={};_0xc6a1ae<_0x3b4ea6[_0xf5f2('0x3e')];_0xc6a1ae+=0x1){_0x3f3895=_0x3b4ea6[_0xc6a1ae];if(_[_0xf5f2('0x3f')](_0x110fe5[_0xf5f2('0x42')][util[_0xf5f2('0x27')](_0xf5f2('0x41'),_0x3f3895[_0xf5f2('0x28')])])){_0x110fe5['trunks'][util[_0xf5f2('0x27')](_0xf5f2('0x41'),_0x3f3895[_0xf5f2('0x28')])]=new Trunk(_0x3f3895);}else{_0x110fe5['mergeFromDatabase'](_0x110fe5['trunks'][util['format'](_0xf5f2('0x41'),_0x3f3895[_0xf5f2('0x28')])],_0x3f3895);}}}return _0x110fe5['trunks'];};};Realtime[_0xf5f2('0x3c')][_0xf5f2('0x43')]=function(){var _0x28e33f=this;return function(_0x31f86c){if(_0x31f86c){freeIsNotKey(_0x31f86c,_0x28e33f[_0xf5f2('0x44')],'id');for(var _0x2b3b1c=0x0,_0x1a6ec1={};_0x2b3b1c<_0x31f86c[_0xf5f2('0x3e')];_0x2b3b1c+=0x1){_0x1a6ec1=_0x31f86c[_0x2b3b1c];if(_[_0xf5f2('0x3f')](_0x28e33f[_0xf5f2('0x44')][_0x1a6ec1['id']])){_0x28e33f[_0xf5f2('0x44')][_0x1a6ec1['id']]=new Trigger(_0x1a6ec1);}else{_0x28e33f[_0xf5f2('0x3d')](_0x28e33f[_0xf5f2('0x44')][_0x1a6ec1['id']],_0x1a6ec1);}}}return _0x28e33f[_0xf5f2('0x44')];};};Realtime['prototype'][_0xf5f2('0x45')]=function(){var _0x578c93=this;return function(_0x3d62c1){if(_0x3d62c1){freeIsNotKey(_0x3d62c1,_0x578c93[_0xf5f2('0x15')],'id');for(var _0x218def=0x0,_0x36a4b0={};_0x218def<_0x3d62c1[_0xf5f2('0x3e')];_0x218def+=0x1){_0x36a4b0=_0x3d62c1[_0x218def];if(_[_0xf5f2('0x3f')](_0x578c93['templates'][_0x36a4b0['id']])){_0x578c93[_0xf5f2('0x15')][_0x36a4b0['id']]=new Template(_0x36a4b0);}else{_0x578c93[_0xf5f2('0x3d')](_0x578c93[_0xf5f2('0x15')][_0x36a4b0['id']],_0x36a4b0);}}}return _0x578c93[_0xf5f2('0x15')];};};Realtime[_0xf5f2('0x3c')][_0xf5f2('0x46')]=function(){var _0xf638ff=this;return function(_0x297f07){if(_0x297f07){freeIsNotKey(_0x297f07,_0xf638ff['zendeskAccounts'],'id');for(var _0x35dece=0x0,_0x33ec29={};_0x35dece<_0x297f07[_0xf5f2('0x3e')];_0x35dece+=0x1){_0x33ec29=_0x297f07[_0x35dece];if(_['isUndefined'](_0xf638ff[_0xf5f2('0x1c')][_0x33ec29['id']])){_0xf638ff[_0xf5f2('0x1c')][_0x33ec29['id']]=new ZendeskAccount(_0x33ec29);}else{_0xf638ff[_0xf5f2('0x3d')](_0xf638ff['zendeskAccounts'][_0x33ec29['id']],_0x33ec29);}}}return _0xf638ff['zendeskAccounts'];};};Realtime[_0xf5f2('0x3c')][_0xf5f2('0x47')]=function(){var _0x5db519=this;return function(_0x14aa81){if(_0x14aa81){freeIsNotKey(_0x14aa81,_0x5db519['salesforceAccounts'],'id');for(var _0x740321=0x0,_0x497eb8={};_0x740321<_0x14aa81[_0xf5f2('0x3e')];_0x740321+=0x1){_0x497eb8=_0x14aa81[_0x740321];if(_['isUndefined'](_0x5db519[_0xf5f2('0x48')][_0x497eb8['id']])){_0x5db519[_0xf5f2('0x48')][_0x497eb8['id']]=new SalesforceAccount(_0x497eb8);}else{_0x5db519[_0xf5f2('0x3d')](_0x5db519[_0xf5f2('0x48')][_0x497eb8['id']],_0x497eb8);}}}return _0x5db519['salesforceAccounts'];};};Realtime[_0xf5f2('0x3c')][_0xf5f2('0x49')]=function(){var _0x4f6b01=this;return function(_0x58213b){if(_0x58213b){freeIsNotKey(_0x58213b,_0x4f6b01[_0xf5f2('0x1e')],'id');for(var _0x3dc0c4=0x0,_0x57782c={};_0x3dc0c4<_0x58213b[_0xf5f2('0x3e')];_0x3dc0c4+=0x1){_0x57782c=_0x58213b[_0x3dc0c4];if(_[_0xf5f2('0x3f')](_0x4f6b01[_0xf5f2('0x1e')][_0x57782c['id']])){_0x4f6b01[_0xf5f2('0x1e')][_0x57782c['id']]=new FreshdeskAccount(_0x57782c);}else{_0x4f6b01['mergeFromDatabase'](_0x4f6b01['freshdeskAccounts'][_0x57782c['id']],_0x57782c);}}}return _0x4f6b01[_0xf5f2('0x1e')];};};Realtime[_0xf5f2('0x3c')]['initZohoAccounts']=function(){var _0x40eef=this;return function(_0x43fc49){if(_0x43fc49){freeIsNotKey(_0x43fc49,_0x40eef[_0xf5f2('0x1f')],'id');for(var _0x14029e=0x0,_0x2b038e={};_0x14029e<_0x43fc49[_0xf5f2('0x3e')];_0x14029e+=0x1){_0x2b038e=_0x43fc49[_0x14029e];if(_[_0xf5f2('0x3f')](_0x40eef['zohoAccounts'][_0x2b038e['id']])){_0x40eef['zohoAccounts'][_0x2b038e['id']]=new ZohoAccount(_0x2b038e);}else{_0x40eef[_0xf5f2('0x3d')](_0x40eef[_0xf5f2('0x1f')][_0x2b038e['id']],_0x2b038e);}}}return _0x40eef[_0xf5f2('0x1f')];};};Realtime[_0xf5f2('0x3c')][_0xf5f2('0x4a')]=function(){var _0x5a861d=this;return function(_0xdb1106){if(_0xdb1106){freeIsNotKey(_0xdb1106,_0x5a861d[_0xf5f2('0x20')],'id');for(var _0x18b124=0x0,_0x519c24={};_0x18b124<_0xdb1106[_0xf5f2('0x3e')];_0x18b124+=0x1){_0x519c24=_0xdb1106[_0x18b124];if(_['isUndefined'](_0x5a861d[_0xf5f2('0x20')][_0x519c24['id']])){_0x5a861d[_0xf5f2('0x20')][_0x519c24['id']]=new DeskAccount(_0x519c24);}else{_0x5a861d[_0xf5f2('0x3d')](_0x5a861d[_0xf5f2('0x20')][_0x519c24['id']],_0x519c24);}}}return _0x5a861d['deskAccounts'];};};Realtime['prototype'][_0xf5f2('0x4b')]=function(){var _0x4de303=this;return function(_0xa39c65){if(_0xa39c65){freeIsNotKey(_0xa39c65,_0x4de303[_0xf5f2('0x1d')],'id');for(var _0x572ec1=0x0,_0x3f0579={};_0x572ec1<_0xa39c65[_0xf5f2('0x3e')];_0x572ec1+=0x1){_0x3f0579=_0xa39c65[_0x572ec1];if(_[_0xf5f2('0x3f')](_0x4de303['sugarcrmAccounts'][_0x3f0579['id']])){_0x4de303[_0xf5f2('0x1d')][_0x3f0579['id']]=new SugarcrmAccount(_0x3f0579);}else{_0x4de303[_0xf5f2('0x3d')](_0x4de303[_0xf5f2('0x1d')][_0x3f0579['id']],_0x3f0579);}}}return _0x4de303[_0xf5f2('0x1d')];};};Realtime['prototype'][_0xf5f2('0x4c')]=function(){var _0x506fe5=this;return function(_0x2cbe1e){if(_0x2cbe1e){freeIsNotKey(_0x2cbe1e,_0x506fe5[_0xf5f2('0x21')],'id');for(var _0x2e6f5d=0x0,_0x380c08={};_0x2e6f5d<_0x2cbe1e[_0xf5f2('0x3e')];_0x2e6f5d+=0x1){_0x380c08=_0x2cbe1e[_0x2e6f5d];if(_['isUndefined'](_0x506fe5[_0xf5f2('0x21')][_0x380c08['id']])){_0x506fe5[_0xf5f2('0x21')][_0x380c08['id']]=new VtigerAccount(_0x380c08);}else{_0x506fe5[_0xf5f2('0x3d')](_0x506fe5[_0xf5f2('0x21')][_0x380c08['id']],_0x380c08);}}}return _0x506fe5[_0xf5f2('0x21')];};};Realtime['prototype'][_0xf5f2('0x4d')]=function(){var _0x5ee6bc=this;return function(_0x4c96ee){if(_0x4c96ee){freeIsNotKey(_0x4c96ee,_0x5ee6bc[_0xf5f2('0x4e')],'id');for(var _0x4802c5=0x0,_0x10f2b8={};_0x4802c5<_0x4c96ee[_0xf5f2('0x3e')];_0x4802c5+=0x1){_0x10f2b8=_0x4c96ee[_0x4802c5];if(_[_0xf5f2('0x3f')](_0x5ee6bc[_0xf5f2('0x4e')][_0x10f2b8['id']])){_0x5ee6bc['servicenowAccounts'][_0x10f2b8['id']]=new ServicenowAccount(_0x10f2b8);}else{_0x5ee6bc[_0xf5f2('0x3d')](_0x5ee6bc[_0xf5f2('0x4e')][_0x10f2b8['id']],_0x10f2b8);}}}return _0x5ee6bc[_0xf5f2('0x4e')];};};Realtime[_0xf5f2('0x3c')][_0xf5f2('0x4f')]=function(){var _0x35d868=this;return function(_0x158768){if(_0x158768){freeIsNotKey(_0x158768,_0x35d868['dynamics365Accounts'],'id');for(var _0x1f55af=0x0,_0x2d171d={};_0x1f55af<_0x158768[_0xf5f2('0x3e')];_0x1f55af+=0x1){_0x2d171d=_0x158768[_0x1f55af];if(_[_0xf5f2('0x3f')](_0x35d868['dynamics365Accounts'][_0x2d171d['id']])){_0x35d868[_0xf5f2('0x22')][_0x2d171d['id']]=new Dynamics365Account(_0x2d171d);}else{_0x35d868['mergeFromDatabase'](_0x35d868[_0xf5f2('0x22')][_0x2d171d['id']],_0x2d171d);}}}return _0x35d868[_0xf5f2('0x22')];};};Realtime['prototype'][_0xf5f2('0x50')]=function(){var _0x975bd8=this;return function(_0xa0c139){if(_0xa0c139){freeIsNotKey(_0xa0c139,_0x975bd8[_0xf5f2('0x23')],'id');for(var _0x146462=0x0,_0x4bd113={};_0x146462<_0xa0c139[_0xf5f2('0x3e')];_0x146462+=0x1){_0x4bd113=_0xa0c139[_0x146462];if(_[_0xf5f2('0x3f')](_0x975bd8[_0xf5f2('0x23')][_0x4bd113['id']])){_0x975bd8[_0xf5f2('0x23')][_0x4bd113['id']]=new FreshsalesAccount(_0x4bd113);}else{_0x975bd8[_0xf5f2('0x3d')](_0x975bd8[_0xf5f2('0x23')][_0x4bd113['id']],_0x4bd113);}}}return _0x975bd8['freshsalesAccounts'];};};Realtime[_0xf5f2('0x3c')][_0xf5f2('0x51')]=function(){var _0x4800fe=this;return function(_0x3f677e){for(var _0x36503c=0x0;_0x36503c<_0x3f677e[_0xf5f2('0x3e')];_0x36503c+=0x1){_['merge'](_0x4800fe['voiceQueues'][_0x3f677e[_0x36503c]['name']],_0x3f677e[_0x36503c]);}return _0x4800fe[_0xf5f2('0x14')];};};Realtime[_0xf5f2('0x3c')][_0xf5f2('0x52')]=function(){var _0x450691=this;return function(_0x55da4d){clearVoiceQueues(_0x450691['voiceQueues']);if(_0x55da4d){_0x55da4d=_[_0xf5f2('0x53')](_0x55da4d,_0xf5f2('0x54'));for(var _0xc10cf3 in _0x55da4d){if(_0x55da4d[_0xf5f2('0x26')](_0xc10cf3)){for(var _0x794e0c=0x0;_0x794e0c<_0x55da4d[_0xc10cf3][_0xf5f2('0x3e')];_0x794e0c+=0x1){var _0x11c302=_0x55da4d[_0xc10cf3][_0x794e0c][_0xf5f2('0x55')];if(_0x450691[_0xf5f2('0x14')][_0x11c302]){if(_0x55da4d[_0xc10cf3][_0x794e0c][_0xf5f2('0x56')]){_0x450691[_0xf5f2('0x14')][_0x11c302]['unmanaged']+=0x1;}if(_0x55da4d[_0xc10cf3][_0x794e0c]['queuecallerabandon']){_0x450691['voiceQueues'][_0x11c302][_0xf5f2('0x57')]+=0x1;}_0x450691[_0xf5f2('0x14')][_0x11c302][_0xf5f2('0x2b')]+=moment(_0x55da4d[_0xc10cf3][_0x794e0c][_0xf5f2('0x58')])[_0xf5f2('0x59')](moment(_0x55da4d[_0xc10cf3][_0x794e0c]['queuecallerjoinAt']),_0xf5f2('0x5a'))||0x0;if(_0x794e0c===_0x55da4d[_0xc10cf3][_0xf5f2('0x3e')]-0x1){_0x450691[_0xf5f2('0x14')][_0x11c302][_0xf5f2('0x2c')]+=moment(_0x55da4d[_0xc10cf3][_0x794e0c][_0xf5f2('0x5b')]||_0x55da4d[_0xc10cf3][_0x794e0c]['queuecallerabandonAt']||_0x55da4d[_0xc10cf3][_0x794e0c][_0xf5f2('0x5c')])[_0xf5f2('0x59')](moment(_0x55da4d[_0xc10cf3][_0x794e0c]['queuecallerjoinAt']),_0xf5f2('0x5a'))||0x0;_0x450691[_0xf5f2('0x14')][_0x11c302][_0xf5f2('0x31')]+=0x1;if(_0x55da4d[_0xc10cf3][_0x794e0c][_0xf5f2('0x5d')]){_0x450691['voiceQueues'][_0x11c302][_0xf5f2('0x32')]+=0x1;_0x450691[_0xf5f2('0x14')][_0x11c302][_0xf5f2('0x2d')]+=moment(_0x55da4d[_0xc10cf3][_0x794e0c][_0xf5f2('0x5b')])[_0xf5f2('0x59')](moment(_0x55da4d[_0xc10cf3][_0x794e0c]['queuecallerleaveAt']),'seconds')||0x0;}}else{_0x450691[_0xf5f2('0x14')][_0x11c302][_0xf5f2('0x2c')]+=_0x450691[_0xf5f2('0x14')][_0x11c302][_0xf5f2('0x2b')]||0x0;}}}}}}return _0x450691['voiceQueues'];};};Realtime['prototype'][_0xf5f2('0x5e')]=function(){var _0x4f2fcc=this;return function(_0x4c4420){clearVoiceCallReports(_0x4f2fcc['outbound']);if(_0x4c4420){for(var _0x57cb18=0x0;_0x57cb18<_0x4c4420[_0xf5f2('0x3e')];_0x57cb18+=0x1){_0x4f2fcc[_0xf5f2('0x16')][_0xf5f2('0x31')]+=0x1;_0x4f2fcc[_0xf5f2('0x16')][_0xf5f2('0x2c')]+=_0x4c4420[_0x57cb18][_0xf5f2('0x5f')];if(_0x4c4420[_0x57cb18][_0xf5f2('0x60')]===_0xf5f2('0x61')){_0x4f2fcc[_0xf5f2('0x16')][_0xf5f2('0x32')]+=0x1;_0x4f2fcc[_0xf5f2('0x16')][_0xf5f2('0x2b')]+=_0x4c4420[_0x57cb18][_0xf5f2('0x5f')]-_0x4c4420[_0x57cb18][_0xf5f2('0x62')]||0x0;_0x4f2fcc[_0xf5f2('0x16')][_0xf5f2('0x2d')]+=_0x4c4420[_0x57cb18][_0xf5f2('0x62')];}}}return _0x4f2fcc[_0xf5f2('0x16')];};};Realtime['prototype'][_0xf5f2('0x63')]=function(){var _0x35299d=this;return function(_0x21043b){if(_0x21043b){freeIsNotKey(_0x21043b,_0x35299d[_0xf5f2('0x64')],_0xf5f2('0x28'));for(var _0x308220=0x0,_0x16491c={};_0x308220<_0x21043b[_0xf5f2('0x3e')];_0x308220+=0x1){_0x16491c=_0x21043b[_0x308220];if(_['isUndefined'](_0x35299d[_0xf5f2('0x64')][_0x16491c['name']])){_0x35299d['campaigns'][_0x16491c['name']]=new Campaign(_0x16491c);}else{_0x35299d['mergeFromDatabase'](_0x35299d['campaigns'][_0x16491c['name']],_0x16491c);_0x35299d[_0xf5f2('0x64')][_0x16491c[_0xf5f2('0x28')]][_0xf5f2('0x65')]=_0x16491c[_0xf5f2('0x66')]?_0x16491c[_0xf5f2('0x66')][_0xf5f2('0x28')]:undefined;}}}return _0x35299d['campaigns'];};};Realtime['prototype'][_0xf5f2('0x67')]=function(){var _0x578a22=this;return function(_0x418ece){if(_0x418ece){freeIsNotKey(_0x418ece,_0x578a22[_0xf5f2('0x68')],'id');for(var _0x59161c=0x0,_0x4f3ad4={};_0x59161c<_0x418ece[_0xf5f2('0x3e')];_0x59161c+=0x1){_0x4f3ad4=_0x418ece[_0x59161c];if(_[_0xf5f2('0x3f')](_0x578a22['voiceExtensions'][_0x4f3ad4['id']])){_0x578a22[_0xf5f2('0x68')][_0x4f3ad4['id']]=new VoiceExtension(_0x4f3ad4);}else{_0x578a22[_0xf5f2('0x3d')](_0x578a22['voiceExtensions'][_0x4f3ad4['id']],_0x4f3ad4);}}}return _0x578a22[_0xf5f2('0x68')];};};Realtime[_0xf5f2('0x3c')][_0xf5f2('0x69')]=function(){var _0x4c1678=this;return function(_0x33e9ad){clearCampaigns(_0x4c1678[_0xf5f2('0x64')]);for(var _0x14db86=0x0;_0x14db86<_0x33e9ad[_0xf5f2('0x3e')];_0x14db86+=0x1){_[_0xf5f2('0x6a')](_0x4c1678[_0xf5f2('0x64')][_0x33e9ad[_0x14db86][_0xf5f2('0x28')]],_0x33e9ad[_0x14db86]);}return _0x4c1678[_0xf5f2('0x64')];};};Realtime[_0xf5f2('0x3c')][_0xf5f2('0x6b')]=function(){var _0x191af3=this;return function(_0x2601aa){if(_0x2601aa){freeIsNotKey(_0x2601aa,_0x191af3[_0xf5f2('0x24')],'id');for(var _0x407dd8=0x0,_0xe900ea={};_0x407dd8<_0x2601aa[_0xf5f2('0x3e')];_0x407dd8+=0x1){_0xe900ea=_0x2601aa[_0x407dd8];if(_[_0xf5f2('0x3f')](_0x191af3[_0xf5f2('0x24')][_0xe900ea['id']])){_0x191af3[_0xf5f2('0x24')][_0xe900ea['id']]=new FaxAccount(_0xe900ea);}else{_0x191af3[_0xf5f2('0x3d')](_0x191af3[_0xf5f2('0x24')][_0xe900ea['id']],_0xe900ea);}}}return _0x191af3['faxAccounts'];};};Realtime[_0xf5f2('0x3c')][_0xf5f2('0x6c')]=function(){var _0x5d6c6e=this;return function(_0x2e49ce){if(_0x2e49ce){freeIsNotKey(_0x2e49ce,_0x5d6c6e[_0xf5f2('0x14')],'name');for(var _0xb56304=0x0,_0x2f54eb={};_0xb56304<_0x2e49ce[_0xf5f2('0x3e')];_0xb56304+=0x1){_0x2f54eb=_0x2e49ce[_0xb56304];if(_['isUndefined'](_0x5d6c6e['voiceQueues'][_0x2f54eb[_0xf5f2('0x28')]])){_0x5d6c6e[_0xf5f2('0x14')][_0x2f54eb[_0xf5f2('0x28')]]=new VoiceQueue(_0x2f54eb);}else{_0x5d6c6e['mergeFromDatabase'](_0x5d6c6e['voiceQueues'][_0x2f54eb[_0xf5f2('0x28')]],_0x2f54eb);}}}return _0x5d6c6e[_0xf5f2('0x14')];};};module[_0xf5f2('0x6d')]=Realtime;
\ No newline at end of file
+var _0x2032=['voiceExtensions','initCampaignHopperHistory','merge','initFaxAccounts','exports','moment','util','../model/agent','../model/trunk','../model/voiceQueue','../model/template','../model/campaign','../model/voiceExtension','../model/zendeskAccount','../model/salesforceAccount','../model/freshdeskAccount','../model/sugarcrmAccount','../model/zohoAccount','../model/deskAccount','../model/vtigerAccount','../model/servicenowAccount','../model/faxAccount','telephones','trunks','voiceQueues','campaigns','outbound','channels','queueChannels','sugarcrmAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','faxAccounts','mapKeys','format','SIP/%s','name','hasOwnProperty','interface','total','answered','sumHoldTime','sumDuration','sumBillable','ivrTotalCallsDays','isEmpty','unmanaged','abandoned','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundUnknownCallsDay','outboundDropCallsDayTimeout','outboundDropCallsDayCallersExit','outboundBlacklistCallsDay','outboundRejectCallsDay','outboundReCallsDay','queueStatusComplete','prototype','length','isNil','isUndefined','agents','initTelephones','initTrunks','mergeFromDatabase','initTriggers','triggers','initTemplates','templates','initZendeskAccounts','zendeskAccounts','initSalesforceAccounts','salesforceAccounts','initFreshdeskAccounts','freshdeskAccounts','initZohoAccounts','zohoAccounts','initDeskAccounts','initVtigerAccounts','initServicenowAccounts','initDynamics365Accounts','initFreshsalesAccounts','initVoiceQueueHopperHistory','initVoiceQueueReports','queue','queuecallerexit','queuecallerabandon','queuecallerleaveAt','diff','queuecallerjoinAt','seconds','queuecallercompleteAt','queuecallerexitAt','queuecallercomplete','initVoiceCallReports','duration','ANSWERED','billableseconds','initCampaigns','dialQueueProject','SquareProject'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x2032,0xd9));var _0x2203=function(_0x3add51,_0x2abb5f){_0x3add51=_0x3add51-0x0;var _0x14fc14=_0x2032[_0x3add51];return _0x14fc14;};'use strict';var _=require('lodash');var moment=require(_0x2203('0x0'));var util=require(_0x2203('0x1'));var Agent=require(_0x2203('0x2'));var Telephone=require('../model/telephone');var Trunk=require(_0x2203('0x3'));var VoiceQueue=require(_0x2203('0x4'));var Trigger=require('../model/trigger');var Template=require(_0x2203('0x5'));var Campaign=require(_0x2203('0x6'));var VoiceExtension=require(_0x2203('0x7'));var ZendeskAccount=require(_0x2203('0x8'));var SalesforceAccount=require(_0x2203('0x9'));var FreshdeskAccount=require(_0x2203('0xa'));var SugarcrmAccount=require(_0x2203('0xb'));var ZohoAccount=require(_0x2203('0xc'));var DeskAccount=require(_0x2203('0xd'));var VtigerAccount=require(_0x2203('0xe'));var ServicenowAccount=require(_0x2203('0xf'));var Dynamics365Account=require('../model/dynamics365Account');var FreshsalesAccount=require('../model/freshsalesAccount');var FaxAccount=require(_0x2203('0x10'));function Realtime(){this['agents']={};this[_0x2203('0x11')]={};this[_0x2203('0x12')]={};this[_0x2203('0x13')]={};this['triggers']={};this[_0x2203('0x14')]={};this['templates']={};this[_0x2203('0x15')]={'total':0x0,'answered':0x0,'sumHoldTime':0x0,'sumDuration':0x0,'sumBillable':0x0};this['voiceExtensions']={};this[_0x2203('0x16')]={};this[_0x2203('0x17')]={};this['outboundChannels']={};this['timers']={};this['settings']={};this['zendeskAccounts']={};this['salesforceAccounts']={};this[_0x2203('0x18')]={};this['freshdeskAccounts']={};this['zohoAccounts']={};this[_0x2203('0x19')]={};this[_0x2203('0x1a')]={};this[_0x2203('0x1b')]={};this[_0x2203('0x1c')]={};this[_0x2203('0x1d')]={};this[_0x2203('0x1e')]={};}function freeIsNotKey(_0x2c36e6,_0x2c085c,_0xdf9d0b){var _0x3053f3=_['mapKeys'](_0x2c36e6,function(_0x280eda){return _0x280eda[_0xdf9d0b];});for(var _0x2ee127 in _0x2c085c){if(_0x2c085c['hasOwnProperty'](_0x2ee127)){if(!_0x3053f3[_0x2ee127]){delete _0x2c085c[_0x2ee127];}}}}function freeIsNotKeySip(_0x3f9ef6,_0x8906e1){var _0x4aeb9f=_[_0x2203('0x1f')](_0x3f9ef6,function(_0x5ee83c){return util[_0x2203('0x20')](_0x2203('0x21'),_0x5ee83c[_0x2203('0x22')]);});for(var _0x3b4034 in _0x8906e1){if(_0x8906e1[_0x2203('0x23')](_0x3b4034)){if(!_0x4aeb9f[_0x3b4034]){delete _0x8906e1[_0x3b4034];}}}}function freeIsNotKeyAgent(_0x449039,_0x538c23){var _0x13d3f7=_['mapKeys'](_0x449039,function(_0x5ac866){var _0x15f543=_['isNil'](_0x5ac866[_0x2203('0x24')])?util[_0x2203('0x20')]('SIP/%s',_0x5ac866[_0x2203('0x22')]):_0x5ac866['interface'];return _0x15f543;});for(var _0x5c8da9 in _0x538c23){if(_0x538c23[_0x2203('0x23')](_0x5c8da9)){if(!_0x13d3f7[_0x5c8da9]){delete _0x538c23[_0x5c8da9];}}}}function clearVoiceCallReports(_0x2718f5){_0x2718f5[_0x2203('0x25')]=0x0;_0x2718f5[_0x2203('0x26')]=0x0;_0x2718f5[_0x2203('0x27')]=0x0;_0x2718f5[_0x2203('0x28')]=0x0;_0x2718f5[_0x2203('0x29')]=0x0;}function clearCampaigns(_0x250349){if(!_['isEmpty'](_0x250349)){for(var _0x143f41 in _0x250349){if(_0x250349[_0x2203('0x23')](_0x143f41)){_0x250349[_0x143f41][_0x2203('0x2a')]=0x0;_0x250349[_0x143f41]['ivrAnswerCallsDay']=0x0;}}}}function clearVoiceQueues(_0xb2071b){if(!_[_0x2203('0x2b')](_0xb2071b)){for(var _0x5c5fd3 in _0xb2071b){if(_0xb2071b[_0x2203('0x23')](_0x5c5fd3)){_0xb2071b[_0x5c5fd3][_0x2203('0x25')]=0x0;_0xb2071b[_0x5c5fd3][_0x2203('0x26')]=0x0;_0xb2071b[_0x5c5fd3][_0x2203('0x2c')]=0x0;_0xb2071b[_0x5c5fd3][_0x2203('0x2d')]=0x0;_0xb2071b[_0x5c5fd3][_0x2203('0x27')]=0x0;_0xb2071b[_0x5c5fd3][_0x2203('0x28')]=0x0;_0xb2071b[_0x5c5fd3]['sumBillable']=0x0;_0xb2071b[_0x5c5fd3][_0x2203('0x2e')]=0x0;_0xb2071b[_0x5c5fd3][_0x2203('0x2f')]=0x0;_0xb2071b[_0x5c5fd3][_0x2203('0x30')]=0x0;_0xb2071b[_0x5c5fd3][_0x2203('0x31')]=0x0;_0xb2071b[_0x5c5fd3]['outboundNoSuchCallsDay']=0x0;_0xb2071b[_0x5c5fd3][_0x2203('0x32')]=0x0;_0xb2071b[_0x5c5fd3][_0x2203('0x33')]=0x0;_0xb2071b[_0x5c5fd3][_0x2203('0x34')]=0x0;_0xb2071b[_0x5c5fd3][_0x2203('0x35')]=0x0;_0xb2071b[_0x5c5fd3]['outboundOriginateFailureCallsDay']=0x0;_0xb2071b[_0x5c5fd3][_0x2203('0x36')]=0x0;_0xb2071b[_0x5c5fd3][_0x2203('0x37')]=0x0;_0xb2071b[_0x5c5fd3]['outboundAnswerAgiCallsDay']=0x0;_0xb2071b[_0x5c5fd3]['outboundAnswerCallsDay']=0x0;_0xb2071b[_0x5c5fd3][_0x2203('0x38')]=!![];}}}}Realtime['prototype']['mergeFromDatabase']=function(_0x125dfc,_0x464c88){for(var _0x191894 in _0x464c88){if(_0x125dfc[_0x2203('0x23')](_0x191894)){_0x125dfc[_0x191894]=_0x464c88[_0x191894];}}};Realtime[_0x2203('0x39')]['initAgents']=function(){var _0xb22e28=this;return function(_0x2324c0){if(_0x2324c0){freeIsNotKeyAgent(_0x2324c0,_0xb22e28['agents']);for(var _0x2a2ee7=0x0,_0x20fbe1={};_0x2a2ee7<_0x2324c0[_0x2203('0x3a')];_0x2a2ee7+=0x1){_0x20fbe1=_0x2324c0[_0x2a2ee7];var _0x4187b4=_[_0x2203('0x3b')](_0x20fbe1[_0x2203('0x24')])?util[_0x2203('0x20')](_0x2203('0x21'),_0x20fbe1[_0x2203('0x22')]):_0x20fbe1['interface'];if(_[_0x2203('0x3c')](_0xb22e28[_0x2203('0x3d')][_0x4187b4])){_0xb22e28['agents'][_0x4187b4]=new Agent(_0x20fbe1);}else{_0xb22e28['mergeFromDatabase'](_0xb22e28[_0x2203('0x3d')][_0x4187b4],_0x20fbe1);}}}return _0xb22e28['agents'];};};Realtime[_0x2203('0x39')][_0x2203('0x3e')]=function(){var _0x127ee3=this;return function(_0x5221f0){if(_0x5221f0){freeIsNotKeySip(_0x5221f0,_0x127ee3['telephones']);for(var _0x34cdeb=0x0,_0x47c93a={};_0x34cdeb<_0x5221f0[_0x2203('0x3a')];_0x34cdeb+=0x1){_0x47c93a=_0x5221f0[_0x34cdeb];if(_['isUndefined'](_0x127ee3[_0x2203('0x11')][util['format'](_0x2203('0x21'),_0x47c93a[_0x2203('0x22')])])){_0x127ee3[_0x2203('0x11')][util[_0x2203('0x20')](_0x2203('0x21'),_0x47c93a['name'])]=new Telephone(_0x47c93a);}else{_0x127ee3['mergeFromDatabase'](_0x127ee3['telephones'][util[_0x2203('0x20')](_0x2203('0x21'),_0x47c93a[_0x2203('0x22')])],_0x47c93a);}}}return _0x127ee3[_0x2203('0x11')];};};Realtime[_0x2203('0x39')][_0x2203('0x3f')]=function(){var _0x1c7e3d=this;return function(_0x590b4e){if(_0x590b4e){freeIsNotKeySip(_0x590b4e,_0x1c7e3d[_0x2203('0x12')]);for(var _0x1b12c3=0x0,_0x108fde={};_0x1b12c3<_0x590b4e[_0x2203('0x3a')];_0x1b12c3+=0x1){_0x108fde=_0x590b4e[_0x1b12c3];if(_['isUndefined'](_0x1c7e3d['trunks'][util[_0x2203('0x20')]('SIP/%s',_0x108fde[_0x2203('0x22')])])){_0x1c7e3d[_0x2203('0x12')][util[_0x2203('0x20')]('SIP/%s',_0x108fde['name'])]=new Trunk(_0x108fde);}else{_0x1c7e3d[_0x2203('0x40')](_0x1c7e3d[_0x2203('0x12')][util[_0x2203('0x20')](_0x2203('0x21'),_0x108fde[_0x2203('0x22')])],_0x108fde);}}}return _0x1c7e3d[_0x2203('0x12')];};};Realtime['prototype'][_0x2203('0x41')]=function(){var _0x165a3f=this;return function(_0x3a866c){if(_0x3a866c){freeIsNotKey(_0x3a866c,_0x165a3f[_0x2203('0x42')],'id');for(var _0x16b452=0x0,_0x36b99f={};_0x16b452<_0x3a866c[_0x2203('0x3a')];_0x16b452+=0x1){_0x36b99f=_0x3a866c[_0x16b452];if(_[_0x2203('0x3c')](_0x165a3f[_0x2203('0x42')][_0x36b99f['id']])){_0x165a3f[_0x2203('0x42')][_0x36b99f['id']]=new Trigger(_0x36b99f);}else{_0x165a3f['mergeFromDatabase'](_0x165a3f[_0x2203('0x42')][_0x36b99f['id']],_0x36b99f);}}}return _0x165a3f[_0x2203('0x42')];};};Realtime[_0x2203('0x39')][_0x2203('0x43')]=function(){var _0x4c3259=this;return function(_0x58bd5c){if(_0x58bd5c){freeIsNotKey(_0x58bd5c,_0x4c3259[_0x2203('0x44')],'id');for(var _0x48129c=0x0,_0x273e5f={};_0x48129c<_0x58bd5c[_0x2203('0x3a')];_0x48129c+=0x1){_0x273e5f=_0x58bd5c[_0x48129c];if(_[_0x2203('0x3c')](_0x4c3259[_0x2203('0x44')][_0x273e5f['id']])){_0x4c3259['templates'][_0x273e5f['id']]=new Template(_0x273e5f);}else{_0x4c3259[_0x2203('0x40')](_0x4c3259[_0x2203('0x44')][_0x273e5f['id']],_0x273e5f);}}}return _0x4c3259['templates'];};};Realtime[_0x2203('0x39')][_0x2203('0x45')]=function(){var _0x35b2e9=this;return function(_0x2600a9){if(_0x2600a9){freeIsNotKey(_0x2600a9,_0x35b2e9['zendeskAccounts'],'id');for(var _0x4c1a29=0x0,_0x21b8ab={};_0x4c1a29<_0x2600a9['length'];_0x4c1a29+=0x1){_0x21b8ab=_0x2600a9[_0x4c1a29];if(_['isUndefined'](_0x35b2e9[_0x2203('0x46')][_0x21b8ab['id']])){_0x35b2e9[_0x2203('0x46')][_0x21b8ab['id']]=new ZendeskAccount(_0x21b8ab);}else{_0x35b2e9[_0x2203('0x40')](_0x35b2e9['zendeskAccounts'][_0x21b8ab['id']],_0x21b8ab);}}}return _0x35b2e9['zendeskAccounts'];};};Realtime[_0x2203('0x39')][_0x2203('0x47')]=function(){var _0x12d7fa=this;return function(_0x21d2d7){if(_0x21d2d7){freeIsNotKey(_0x21d2d7,_0x12d7fa[_0x2203('0x48')],'id');for(var _0x21fd78=0x0,_0x4a7f4e={};_0x21fd78<_0x21d2d7[_0x2203('0x3a')];_0x21fd78+=0x1){_0x4a7f4e=_0x21d2d7[_0x21fd78];if(_['isUndefined'](_0x12d7fa[_0x2203('0x48')][_0x4a7f4e['id']])){_0x12d7fa[_0x2203('0x48')][_0x4a7f4e['id']]=new SalesforceAccount(_0x4a7f4e);}else{_0x12d7fa[_0x2203('0x40')](_0x12d7fa[_0x2203('0x48')][_0x4a7f4e['id']],_0x4a7f4e);}}}return _0x12d7fa['salesforceAccounts'];};};Realtime['prototype'][_0x2203('0x49')]=function(){var _0x1f772d=this;return function(_0x126aad){if(_0x126aad){freeIsNotKey(_0x126aad,_0x1f772d[_0x2203('0x4a')],'id');for(var _0x559370=0x0,_0x4de47a={};_0x559370<_0x126aad['length'];_0x559370+=0x1){_0x4de47a=_0x126aad[_0x559370];if(_[_0x2203('0x3c')](_0x1f772d[_0x2203('0x4a')][_0x4de47a['id']])){_0x1f772d['freshdeskAccounts'][_0x4de47a['id']]=new FreshdeskAccount(_0x4de47a);}else{_0x1f772d[_0x2203('0x40')](_0x1f772d[_0x2203('0x4a')][_0x4de47a['id']],_0x4de47a);}}}return _0x1f772d['freshdeskAccounts'];};};Realtime[_0x2203('0x39')][_0x2203('0x4b')]=function(){var _0x172c6a=this;return function(_0x6a1877){if(_0x6a1877){freeIsNotKey(_0x6a1877,_0x172c6a['zohoAccounts'],'id');for(var _0x120db1=0x0,_0x5268d6={};_0x120db1<_0x6a1877[_0x2203('0x3a')];_0x120db1+=0x1){_0x5268d6=_0x6a1877[_0x120db1];if(_[_0x2203('0x3c')](_0x172c6a['zohoAccounts'][_0x5268d6['id']])){_0x172c6a[_0x2203('0x4c')][_0x5268d6['id']]=new ZohoAccount(_0x5268d6);}else{_0x172c6a[_0x2203('0x40')](_0x172c6a[_0x2203('0x4c')][_0x5268d6['id']],_0x5268d6);}}}return _0x172c6a[_0x2203('0x4c')];};};Realtime[_0x2203('0x39')][_0x2203('0x4d')]=function(){var _0x569d4a=this;return function(_0x562a3d){if(_0x562a3d){freeIsNotKey(_0x562a3d,_0x569d4a[_0x2203('0x19')],'id');for(var _0x524356=0x0,_0x56e881={};_0x524356<_0x562a3d[_0x2203('0x3a')];_0x524356+=0x1){_0x56e881=_0x562a3d[_0x524356];if(_[_0x2203('0x3c')](_0x569d4a[_0x2203('0x19')][_0x56e881['id']])){_0x569d4a['deskAccounts'][_0x56e881['id']]=new DeskAccount(_0x56e881);}else{_0x569d4a[_0x2203('0x40')](_0x569d4a['deskAccounts'][_0x56e881['id']],_0x56e881);}}}return _0x569d4a['deskAccounts'];};};Realtime[_0x2203('0x39')]['initSugarcrmAccounts']=function(){var _0x54ec71=this;return function(_0x5efc59){if(_0x5efc59){freeIsNotKey(_0x5efc59,_0x54ec71[_0x2203('0x18')],'id');for(var _0x31256b=0x0,_0x367122={};_0x31256b<_0x5efc59[_0x2203('0x3a')];_0x31256b+=0x1){_0x367122=_0x5efc59[_0x31256b];if(_[_0x2203('0x3c')](_0x54ec71[_0x2203('0x18')][_0x367122['id']])){_0x54ec71[_0x2203('0x18')][_0x367122['id']]=new SugarcrmAccount(_0x367122);}else{_0x54ec71[_0x2203('0x40')](_0x54ec71[_0x2203('0x18')][_0x367122['id']],_0x367122);}}}return _0x54ec71[_0x2203('0x18')];};};Realtime[_0x2203('0x39')][_0x2203('0x4e')]=function(){var _0x58ff57=this;return function(_0x585bde){if(_0x585bde){freeIsNotKey(_0x585bde,_0x58ff57[_0x2203('0x1a')],'id');for(var _0x43d8c0=0x0,_0x2511bd={};_0x43d8c0<_0x585bde[_0x2203('0x3a')];_0x43d8c0+=0x1){_0x2511bd=_0x585bde[_0x43d8c0];if(_[_0x2203('0x3c')](_0x58ff57[_0x2203('0x1a')][_0x2511bd['id']])){_0x58ff57['vtigerAccounts'][_0x2511bd['id']]=new VtigerAccount(_0x2511bd);}else{_0x58ff57['mergeFromDatabase'](_0x58ff57[_0x2203('0x1a')][_0x2511bd['id']],_0x2511bd);}}}return _0x58ff57[_0x2203('0x1a')];};};Realtime[_0x2203('0x39')][_0x2203('0x4f')]=function(){var _0xcab922=this;return function(_0x7b0b9c){if(_0x7b0b9c){freeIsNotKey(_0x7b0b9c,_0xcab922[_0x2203('0x1b')],'id');for(var _0x191b67=0x0,_0x2c6bcc={};_0x191b67<_0x7b0b9c[_0x2203('0x3a')];_0x191b67+=0x1){_0x2c6bcc=_0x7b0b9c[_0x191b67];if(_[_0x2203('0x3c')](_0xcab922['servicenowAccounts'][_0x2c6bcc['id']])){_0xcab922[_0x2203('0x1b')][_0x2c6bcc['id']]=new ServicenowAccount(_0x2c6bcc);}else{_0xcab922[_0x2203('0x40')](_0xcab922[_0x2203('0x1b')][_0x2c6bcc['id']],_0x2c6bcc);}}}return _0xcab922[_0x2203('0x1b')];};};Realtime[_0x2203('0x39')][_0x2203('0x50')]=function(){var _0x52c159=this;return function(_0x544756){if(_0x544756){freeIsNotKey(_0x544756,_0x52c159[_0x2203('0x1c')],'id');for(var _0x35b7b9=0x0,_0x49e795={};_0x35b7b9<_0x544756[_0x2203('0x3a')];_0x35b7b9+=0x1){_0x49e795=_0x544756[_0x35b7b9];if(_[_0x2203('0x3c')](_0x52c159[_0x2203('0x1c')][_0x49e795['id']])){_0x52c159[_0x2203('0x1c')][_0x49e795['id']]=new Dynamics365Account(_0x49e795);}else{_0x52c159[_0x2203('0x40')](_0x52c159[_0x2203('0x1c')][_0x49e795['id']],_0x49e795);}}}return _0x52c159[_0x2203('0x1c')];};};Realtime[_0x2203('0x39')][_0x2203('0x51')]=function(){var _0x519120=this;return function(_0x468619){if(_0x468619){freeIsNotKey(_0x468619,_0x519120[_0x2203('0x1d')],'id');for(var _0x465898=0x0,_0x4e461e={};_0x465898<_0x468619[_0x2203('0x3a')];_0x465898+=0x1){_0x4e461e=_0x468619[_0x465898];if(_[_0x2203('0x3c')](_0x519120[_0x2203('0x1d')][_0x4e461e['id']])){_0x519120[_0x2203('0x1d')][_0x4e461e['id']]=new FreshsalesAccount(_0x4e461e);}else{_0x519120[_0x2203('0x40')](_0x519120['freshsalesAccounts'][_0x4e461e['id']],_0x4e461e);}}}return _0x519120[_0x2203('0x1d')];};};Realtime[_0x2203('0x39')][_0x2203('0x52')]=function(){var _0x4dde80=this;return function(_0x5507b6){for(var _0x5d9ae2=0x0;_0x5d9ae2<_0x5507b6['length'];_0x5d9ae2+=0x1){_['merge'](_0x4dde80[_0x2203('0x13')][_0x5507b6[_0x5d9ae2][_0x2203('0x22')]],_0x5507b6[_0x5d9ae2]);}return _0x4dde80[_0x2203('0x13')];};};Realtime[_0x2203('0x39')][_0x2203('0x53')]=function(){var _0x169845=this;return function(_0x3f7926){clearVoiceQueues(_0x169845[_0x2203('0x13')]);if(_0x3f7926){_0x3f7926=_['groupBy'](_0x3f7926,'uniqueid');for(var _0xb54e51 in _0x3f7926){if(_0x3f7926[_0x2203('0x23')](_0xb54e51)){for(var _0xafcc82=0x0;_0xafcc82<_0x3f7926[_0xb54e51][_0x2203('0x3a')];_0xafcc82+=0x1){var _0x1bbd2d=_0x3f7926[_0xb54e51][_0xafcc82][_0x2203('0x54')];if(_0x169845[_0x2203('0x13')][_0x1bbd2d]){if(_0x3f7926[_0xb54e51][_0xafcc82][_0x2203('0x55')]){_0x169845[_0x2203('0x13')][_0x1bbd2d][_0x2203('0x2c')]+=0x1;}if(_0x3f7926[_0xb54e51][_0xafcc82][_0x2203('0x56')]){_0x169845[_0x2203('0x13')][_0x1bbd2d][_0x2203('0x2d')]+=0x1;}_0x169845[_0x2203('0x13')][_0x1bbd2d][_0x2203('0x27')]+=moment(_0x3f7926[_0xb54e51][_0xafcc82][_0x2203('0x57')])[_0x2203('0x58')](moment(_0x3f7926[_0xb54e51][_0xafcc82][_0x2203('0x59')]),_0x2203('0x5a'))||0x0;if(_0xafcc82===_0x3f7926[_0xb54e51]['length']-0x1){_0x169845[_0x2203('0x13')][_0x1bbd2d]['sumDuration']+=moment(_0x3f7926[_0xb54e51][_0xafcc82][_0x2203('0x5b')]||_0x3f7926[_0xb54e51][_0xafcc82]['queuecallerabandonAt']||_0x3f7926[_0xb54e51][_0xafcc82][_0x2203('0x5c')])[_0x2203('0x58')](moment(_0x3f7926[_0xb54e51][_0xafcc82][_0x2203('0x59')]),_0x2203('0x5a'))||0x0;_0x169845[_0x2203('0x13')][_0x1bbd2d][_0x2203('0x25')]+=0x1;if(_0x3f7926[_0xb54e51][_0xafcc82][_0x2203('0x5d')]){_0x169845[_0x2203('0x13')][_0x1bbd2d]['answered']+=0x1;_0x169845['voiceQueues'][_0x1bbd2d][_0x2203('0x29')]+=moment(_0x3f7926[_0xb54e51][_0xafcc82][_0x2203('0x5b')])[_0x2203('0x58')](moment(_0x3f7926[_0xb54e51][_0xafcc82]['queuecallerleaveAt']),'seconds')||0x0;}}else{_0x169845['voiceQueues'][_0x1bbd2d][_0x2203('0x28')]+=_0x169845[_0x2203('0x13')][_0x1bbd2d][_0x2203('0x27')]||0x0;}}}}}}return _0x169845[_0x2203('0x13')];};};Realtime['prototype'][_0x2203('0x5e')]=function(){var _0x47a2c7=this;return function(_0x48bd5){clearVoiceCallReports(_0x47a2c7[_0x2203('0x15')]);if(_0x48bd5){for(var _0xe3bee5=0x0;_0xe3bee5<_0x48bd5[_0x2203('0x3a')];_0xe3bee5+=0x1){_0x47a2c7[_0x2203('0x15')]['total']+=0x1;_0x47a2c7[_0x2203('0x15')][_0x2203('0x28')]+=_0x48bd5[_0xe3bee5][_0x2203('0x5f')];if(_0x48bd5[_0xe3bee5]['disposition']===_0x2203('0x60')){_0x47a2c7[_0x2203('0x15')][_0x2203('0x26')]+=0x1;_0x47a2c7[_0x2203('0x15')][_0x2203('0x27')]+=_0x48bd5[_0xe3bee5][_0x2203('0x5f')]-_0x48bd5[_0xe3bee5][_0x2203('0x61')]||0x0;_0x47a2c7[_0x2203('0x15')][_0x2203('0x29')]+=_0x48bd5[_0xe3bee5][_0x2203('0x61')];}}}return _0x47a2c7[_0x2203('0x15')];};};Realtime['prototype'][_0x2203('0x62')]=function(){var _0x7f71b8=this;return function(_0x21b755){if(_0x21b755){freeIsNotKey(_0x21b755,_0x7f71b8[_0x2203('0x14')],_0x2203('0x22'));for(var _0x52c35e=0x0,_0x23f7b1={};_0x52c35e<_0x21b755[_0x2203('0x3a')];_0x52c35e+=0x1){_0x23f7b1=_0x21b755[_0x52c35e];if(_[_0x2203('0x3c')](_0x7f71b8[_0x2203('0x14')][_0x23f7b1[_0x2203('0x22')]])){_0x7f71b8[_0x2203('0x14')][_0x23f7b1['name']]=new Campaign(_0x23f7b1);}else{_0x7f71b8['mergeFromDatabase'](_0x7f71b8[_0x2203('0x14')][_0x23f7b1[_0x2203('0x22')]],_0x23f7b1);_0x7f71b8[_0x2203('0x14')][_0x23f7b1[_0x2203('0x22')]][_0x2203('0x63')]=_0x23f7b1['SquareProject']?_0x23f7b1[_0x2203('0x64')][_0x2203('0x22')]:undefined;}}}return _0x7f71b8['campaigns'];};};Realtime['prototype']['initVoiceExtensions']=function(){var _0x4fc51a=this;return function(_0x5e07d7){if(_0x5e07d7){freeIsNotKey(_0x5e07d7,_0x4fc51a[_0x2203('0x65')],'id');for(var _0x6319a3=0x0,_0x437095={};_0x6319a3<_0x5e07d7['length'];_0x6319a3+=0x1){_0x437095=_0x5e07d7[_0x6319a3];if(_['isUndefined'](_0x4fc51a['voiceExtensions'][_0x437095['id']])){_0x4fc51a[_0x2203('0x65')][_0x437095['id']]=new VoiceExtension(_0x437095);}else{_0x4fc51a[_0x2203('0x40')](_0x4fc51a[_0x2203('0x65')][_0x437095['id']],_0x437095);}}}return _0x4fc51a[_0x2203('0x65')];};};Realtime[_0x2203('0x39')][_0x2203('0x66')]=function(){var _0x3d1797=this;return function(_0x52f25e){clearCampaigns(_0x3d1797[_0x2203('0x14')]);for(var _0x74843=0x0;_0x74843<_0x52f25e[_0x2203('0x3a')];_0x74843+=0x1){_[_0x2203('0x67')](_0x3d1797[_0x2203('0x14')][_0x52f25e[_0x74843][_0x2203('0x22')]],_0x52f25e[_0x74843]);}return _0x3d1797[_0x2203('0x14')];};};Realtime['prototype'][_0x2203('0x68')]=function(){var _0x51a2fe=this;return function(_0x5d0176){if(_0x5d0176){freeIsNotKey(_0x5d0176,_0x51a2fe[_0x2203('0x1e')],'id');for(var _0x5cd030=0x0,_0xb9588e={};_0x5cd030<_0x5d0176[_0x2203('0x3a')];_0x5cd030+=0x1){_0xb9588e=_0x5d0176[_0x5cd030];if(_['isUndefined'](_0x51a2fe[_0x2203('0x1e')][_0xb9588e['id']])){_0x51a2fe[_0x2203('0x1e')][_0xb9588e['id']]=new FaxAccount(_0xb9588e);}else{_0x51a2fe[_0x2203('0x40')](_0x51a2fe[_0x2203('0x1e')][_0xb9588e['id']],_0xb9588e);}}}return _0x51a2fe[_0x2203('0x1e')];};};Realtime[_0x2203('0x39')]['initVoiceQueues']=function(){var _0x215638=this;return function(_0x3541b3){if(_0x3541b3){freeIsNotKey(_0x3541b3,_0x215638['voiceQueues'],'name');for(var _0x377176=0x0,_0x3fe71b={};_0x377176<_0x3541b3[_0x2203('0x3a')];_0x377176+=0x1){_0x3fe71b=_0x3541b3[_0x377176];if(_[_0x2203('0x3c')](_0x215638[_0x2203('0x13')][_0x3fe71b[_0x2203('0x22')]])){_0x215638[_0x2203('0x13')][_0x3fe71b[_0x2203('0x22')]]=new VoiceQueue(_0x3fe71b);}else{_0x215638[_0x2203('0x40')](_0x215638[_0x2203('0x13')][_0x3fe71b[_0x2203('0x22')]],_0x3fe71b);}}}return _0x215638[_0x2203('0x13')];};};module[_0x2203('0x69')]=Realtime;
\ No newline at end of file
index daf18ad..4356c75 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a47=['mergeDBDataToRealtime','assign','hasOwnProperty'];(function(_0xb17247,_0x4b94b5){var _0x3473ff=function(_0x4629e4){while(--_0x4629e4){_0xb17247['push'](_0xb17247['shift']());}};_0x3473ff(++_0x4b94b5);}(_0x2a47,0x1bd));var _0x72a4=function(_0x725b8e,_0xc22b48){_0x725b8e=_0x725b8e-0x0;var _0x43ac45=_0x2a47[_0x725b8e];return _0x43ac45;};'use strict';function mergeDBDataToRealtime(_0x3054c8,_0x462708){var _0x196ed0=Object[_0x72a4('0x0')]({},_0x3054c8);for(var _0x557768 in _0x462708){if(_0x196ed0[_0x72a4('0x1')](_0x557768)){_0x196ed0[_0x557768]=_0x462708[_0x557768];}}return _0x196ed0;}exports[_0x72a4('0x2')]=mergeDBDataToRealtime;
\ No newline at end of file
+var _0x3bb7=['mergeDBDataToRealtime','hasOwnProperty'];(function(_0x437368,_0x398c1){var _0x4368b7=function(_0x47273d){while(--_0x47273d){_0x437368['push'](_0x437368['shift']());}};_0x4368b7(++_0x398c1);}(_0x3bb7,0x103));var _0x73bb=function(_0x101116,_0xe71b75){_0x101116=_0x101116-0x0;var _0x25d117=_0x3bb7[_0x101116];return _0x25d117;};'use strict';function mergeDBDataToRealtime(_0x477ac6,_0x1d9733){var _0xa2d264=Object['assign']({},_0x477ac6);for(var _0xf6072b in _0x1d9733){if(_0xa2d264[_0x73bb('0x0')](_0xf6072b)){_0xa2d264[_0xf6072b]=_0x1d9733[_0xf6072b];}}return _0xa2d264;}exports[_0x73bb('0x1')]=mergeDBDataToRealtime;
\ No newline at end of file
index d008863..6fff084 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c10=['monitorFilename','filename','createdAt','connectedlinename','isArray','startsWith','Local','substring','indexOf','mobile','phone','lastIndexOf','transfererlinkedid','exports','lodash','moment','util','../../../config/environment','../ami','../rpc/voiceAgentReport','../rpc/voiceCallReport','../rpc/memberReport','../rpc/voiceQueueReport','./voiceDialReport','realtime','agents','telephones','prototype','sync','xdr','disabled','custom:voiceQueueReport','voiceQueueReport','bind','voiceCallReport','voiceAgentReport','voiceDialReport','blindtransfer','blindTransfer','attendedtransfer','attendedTransfer','findAgent','find','accountcode','name','isNil','interface','format','SIP/%s','length','connectedlinenum','assigned','queuecallercompleteAt','queuecallerexit','queuecallerexitAt','YYYY-MM-DD\x20HH:mm:ss','create','match','channel','split','calleridnum','internal','destination','exten','type','dialer','lastapplication','queue','lastdata','context','xcally-motion-preview','calleridpreview','originatecalleridnum','destinationchannel','callerid','ANSWERED','calleridname','transfers','linkedid','transfereelinkedid','UserId','getAgentByInternal','membername','monitors'];(function(_0x350235,_0x278e89){var _0x290f90=function(_0x5c541c){while(--_0x5c541c){_0x350235['push'](_0x350235['shift']());}};_0x290f90(++_0x278e89);}(_0x4c10,0x1b2));var _0x04c1=function(_0x1b1a0e,_0x4c37f7){_0x1b1a0e=_0x1b1a0e-0x0;var _0x58c32c=_0x4c10[_0x1b1a0e];return _0x58c32c;};'use strict';var _=require(_0x04c1('0x0'));var moment=require(_0x04c1('0x1'));var util=require(_0x04c1('0x2'));var config=require(_0x04c1('0x3'));var ami=require(_0x04c1('0x4'));var RpcVoiceAgentReport=require(_0x04c1('0x5'));var RpcVoiceCallReport=require(_0x04c1('0x6'));var RpcVoiceDialReport=require('../rpc/voiceDialReport');var RpcMemberReport=require(_0x04c1('0x7'));var RpcVoiceQueueReport=require(_0x04c1('0x8'));var RpcVoiceRecording=require('../rpc/voiceRecording');var RpcVoiceTransferReport=require('../rpc/voiceTransferReport');var VoiceQueueReport=require('./voiceQueueReport');var VoiceCallReport=require('./voiceCallReport');var VoiceAgentReport=require('./voiceAgentReport');var VoiceDialReport=require(_0x04c1('0x9'));var UserReport=require('./userReport');function Report(_0x15a277){this[_0x04c1('0xa')]=_0x15a277;this[_0x04c1('0xb')]=_0x15a277[_0x04c1('0xb')];this[_0x04c1('0xc')]=_0x15a277['telephones'];}Report[_0x04c1('0xd')][_0x04c1('0xe')]=function(_0xe3d0a6){var _0x37a8fe=new VoiceQueueReport(this['realtime']);var _0x1e6aea=new VoiceAgentReport(this['realtime']);var _0x41d8af=new VoiceDialReport(this['realtime']);var _0x4c715e=new VoiceCallReport(this[_0x04c1('0xa')]);var _0x62f460=new UserReport(this['realtime']);if(config['xdr']&&config[_0x04c1('0xf')][_0x04c1('0x10')]){ami['on'](_0x04c1('0x11'),this[_0x04c1('0x12')][_0x04c1('0x13')](this));ami['on']('custom:voiceCallReport',this[_0x04c1('0x14')]['bind'](this));ami['on']('custom:voiceAgentReport',this[_0x04c1('0x15')][_0x04c1('0x13')](this));ami['on']('custom:voiceDialReport',this[_0x04c1('0x16')][_0x04c1('0x13')](this));ami['on'](_0x04c1('0x17'),this[_0x04c1('0x18')][_0x04c1('0x13')](this));ami['on'](_0x04c1('0x19'),this[_0x04c1('0x1a')][_0x04c1('0x13')](this));}};Report[_0x04c1('0xd')][_0x04c1('0x1b')]=function(_0x2df7fe){var _0x27605d;_0x27605d=_[_0x04c1('0x1c')](this['agents'],function(_0x282a5b){return _0x282a5b[_0x04c1('0x1d')]==_0x2df7fe||_0x282a5b[_0x04c1('0x1e')]==_0x2df7fe;});if(_[_0x04c1('0x1f')](_0x27605d)){var _0x4c157f=_[_0x04c1('0x1c')](this[_0x04c1('0xc')],function(_0x3c7f03){return _0x3c7f03['accountcode']==_0x2df7fe||_0x3c7f03[_0x04c1('0x1e')]==_0x2df7fe;});if(_0x4c157f){_0x27605d=_[_0x04c1('0x1c')](this[_0x04c1('0xb')],function(_0x2f931a){return _0x2f931a[_0x04c1('0x20')]==util[_0x04c1('0x21')](_0x04c1('0x22'),_0x4c157f[_0x04c1('0x1e')]);});}}return _0x27605d;};Report[_0x04c1('0xd')]['voiceQueueReport']=function(_0xb62da5){for(var _0x419b10=0x0;_0x419b10<_0xb62da5[_0x04c1('0x23')];_0x419b10+=0x1){var _0x4e124c=this[_0x04c1('0x1b')](_0xb62da5[_0x419b10][_0x04c1('0x24')]);if(_0x4e124c){_0xb62da5[_0x419b10]['accountcode']=_0x4e124c['accountcode'];_0xb62da5[_0x419b10][_0x04c1('0x25')]=!![];_0xb62da5[_0x419b10]['lastAssignedTo']=_0x4e124c['name'];_0xb62da5[_0x419b10][_0x04c1('0x20')]=_[_0x04c1('0x1f')](_0x4e124c['interface'])?util[_0x04c1('0x21')](_0x04c1('0x22'),_0x4e124c[_0x04c1('0x1e')]):_0x4e124c[_0x04c1('0x20')];if(_0xb62da5[_0x419b10]['queuecallercomplete']){_0xb62da5[_0x419b10][_0x04c1('0x26')]=moment()[_0x04c1('0x21')]('YYYY-MM-DD\x20HH:mm:ss');}if(_0xb62da5[_0x419b10][_0x04c1('0x27')]){_0xb62da5[_0x419b10][_0x04c1('0x28')]=moment()['format'](_0x04c1('0x29'));}RpcMemberReport[_0x04c1('0x12')](_0xb62da5[_0x419b10]);}RpcVoiceQueueReport[_0x04c1('0x2a')](_0xb62da5[_0x419b10]);}};function extractCalleridNumber(_0x5a574f){var _0x4b5625=_0x5a574f[_0x04c1('0x2b')](/<(.*?)>/);return _0x4b5625?_0x4b5625[0x1]:_0x5a574f;}Report['prototype']['getAgentByInternal']=function(_0x30558d){for(var _0x478d8d=0x0;_0x478d8d<Object['keys'](this[_0x04c1('0xb')])[_0x04c1('0x23')];_0x478d8d++){var _0x43a935=Object['keys'](this[_0x04c1('0xb')])[_0x478d8d];var _0x516ac8=this['agents'][_0x43a935];if(_0x516ac8['accountcode']===Number(_0x30558d))return _0x516ac8;}return null;};Report['prototype']['getCallType']=function(_0x94c8ed){var _0x9b0bc0=_0x94c8ed[_0x04c1('0x2c')][_0x04c1('0x2d')]('-')[0x0];var _0x2f392a=this['agents'][_0x9b0bc0];if(!_0x2f392a)_0x2f392a=this['getAgentByInternal'](_0x94c8ed[_0x04c1('0x2e')]);return!_0x2f392a?'outbound':_0x04c1('0x2f');};Report[_0x04c1('0xd')][_0x04c1('0x14')]=function(_0x117aac){_0x117aac[_0x04c1('0x30')]=_0x117aac['destination']||_0x117aac[_0x04c1('0x31')];if(_0x117aac[_0x04c1('0x32')]==_0x04c1('0x33')){_0x117aac[_0x04c1('0x34')]=_0x04c1('0x35');_0x117aac[_0x04c1('0x36')]=_0x117aac['queue'];if(_0x117aac[_0x04c1('0x37')]=='from-voip-provider'){_0x117aac[_0x04c1('0x1d')]='';_0x117aac[_0x04c1('0x30')]=extractCalleridNumber(_0x117aac['callerid']);}else if(_0x117aac['context']=='from-sip'){if(_0x117aac[_0x04c1('0x30')]==_0x04c1('0x38')){_0x117aac[_0x04c1('0x30')]=extractCalleridNumber(_0x117aac[_0x04c1('0x39')]);_0x117aac['calleridnum']=_0x117aac[_0x04c1('0x3a')];_0x117aac[_0x04c1('0x3b')]=[_0x117aac[_0x04c1('0x2c')],_0x117aac[_0x04c1('0x2c')]=_0x117aac['destinationchannel']][0x0];_0x117aac[_0x04c1('0x3c')]=_0x117aac[_0x04c1('0x39')];}else{_0x117aac[_0x04c1('0x30')]=_0x117aac[_0x04c1('0x2e')];_0x117aac[_0x04c1('0x2e')]=_0x117aac[_0x04c1('0x3a')];if(_0x117aac['disposition']==_0x04c1('0x3d')){_0x117aac[_0x04c1('0x1d')]=_0x117aac[_0x04c1('0x24')];}else{_0x117aac[_0x04c1('0x1d')]='';}}}}else{_0x117aac[_0x04c1('0x3c')]=util[_0x04c1('0x21')]('\x22%s\x22\x20<%s>',_0x117aac[_0x04c1('0x3e')],_0x117aac['calleridnum']);}if(RpcVoiceTransferReport[_0x04c1('0x3f')][_0x117aac[_0x04c1('0x40')]]){var _0x226571=RpcVoiceTransferReport[_0x04c1('0x3f')][_0x117aac[_0x04c1('0x40')]];_0x226571[_0x04c1('0x41')]=_0x117aac['uniqueid'];RpcVoiceTransferReport['blindTransfer'](_0x226571);delete RpcVoiceTransferReport[_0x04c1('0x3f')][_0x117aac[_0x04c1('0x40')]];}if(_[_0x04c1('0x1f')](_0x117aac[_0x04c1('0x32')])){_0x117aac['type']=this['getCallType'](_0x117aac);}if(_[_0x04c1('0x1f')](_0x117aac[_0x04c1('0x42')])){var _0x5862ae=_0x117aac['channel'][_0x04c1('0x2d')]('-')[0x0];var _0x57852a=this[_0x04c1('0xb')][_0x5862ae];if(!_0x57852a)_0x57852a=this[_0x04c1('0x43')](_0x117aac[_0x04c1('0x1d')]);if(_0x57852a){_0x117aac[_0x04c1('0x42')]=_0x57852a['id'];_0x117aac[_0x04c1('0x44')]=_0x57852a[_0x04c1('0x1e')];}}RpcVoiceCallReport['create'](_0x117aac);if(_0x117aac['monitor']){for(var _0x4dc1f4=0x0;_0x4dc1f4<_0x117aac[_0x04c1('0x45')]['length'];_0x4dc1f4+=0x1){_0x117aac[_0x04c1('0x46')]=_0x117aac['monitors'][_0x4dc1f4][_0x04c1('0x47')];_0x117aac[_0x04c1('0x48')]=_0x117aac['monitors'][_0x4dc1f4][_0x04c1('0x48')];if(_0x117aac['exten']==_0x04c1('0x38')){_0x117aac[_0x04c1('0x2e')]=_0x117aac[_0x04c1('0x24')];_0x117aac['calleridname']=_0x117aac[_0x04c1('0x49')];_0x117aac[_0x04c1('0x24')]=_0x117aac[_0x04c1('0x1d')];_0x117aac[_0x04c1('0x49')]=_0x117aac['membername'];_0x117aac[_0x04c1('0x31')]=_0x117aac[_0x04c1('0x3a')];}else if(_0x117aac[_0x04c1('0x31')]=='xcally-motion-dialer'){_0x117aac[_0x04c1('0x2e')]=_0x117aac['destination'];_0x117aac[_0x04c1('0x31')]=_0x117aac['originatecalleridnum'];}RpcVoiceRecording[_0x04c1('0x2a')](_0x117aac);}}};Report['prototype']['voiceAgentReport']=function(_0x2e33b7){if(_[_0x04c1('0x4a')](_0x2e33b7)){_0x2e33b7['forEach'](function(_0x131cfe){RpcVoiceAgentReport[_0x04c1('0x2a')](_0x131cfe);});}else{RpcVoiceAgentReport[_0x04c1('0x2a')](_0x2e33b7);}};Report[_0x04c1('0xd')][_0x04c1('0x16')]=function(_0x47e9de){RpcVoiceDialReport[_0x04c1('0x2a')](_0x47e9de);var _0x2b5dd2;var _0x3c0bc7;var _0x3b0acf=_0x47e9de[_0x04c1('0x2c')];if(_[_0x04c1('0x4b')](_0x3b0acf,_0x04c1('0x4c'))){_0x3c0bc7=_0x3b0acf[_0x04c1('0x4d')](_0x3b0acf[_0x04c1('0x4e')]('/')+0x1,_0x3b0acf[_0x04c1('0x4e')]('@'));_0x2b5dd2=_[_0x04c1('0x1c')](this[_0x04c1('0xb')],function(_0x4363da){return _0x4363da[_0x04c1('0x4f')]==_0x3c0bc7||_0x4363da[_0x04c1('0x50')]==_0x3c0bc7||_0x4363da['accountcode']==_0x3c0bc7;});}else{_0x3c0bc7=_0x3b0acf[_0x04c1('0x4d')](_0x3b0acf['indexOf']('/')+0x1,_0x3b0acf[_0x04c1('0x51')]('-'));_0x2b5dd2=this[_0x04c1('0x1b')](_0x3c0bc7);}if(_0x2b5dd2){_0x47e9de[_0x04c1('0x20')]=_[_0x04c1('0x1f')](_0x2b5dd2[_0x04c1('0x20')])?util[_0x04c1('0x21')](_0x04c1('0x22'),_0x2b5dd2[_0x04c1('0x1e')]):_0x2b5dd2[_0x04c1('0x20')];_0x47e9de[_0x04c1('0x44')]=_0x2b5dd2[_0x04c1('0x1e')];_0x47e9de[_0x04c1('0x1d')]=_0x2b5dd2[_0x04c1('0x1d')];RpcMemberReport['voiceDialReport'](_0x47e9de);}};Report['prototype'][_0x04c1('0x18')]=function(_0x1f03fe){RpcVoiceTransferReport['transfers'][_0x1f03fe[_0x04c1('0x52')]]=_0x1f03fe;};Report['prototype'][_0x04c1('0x1a')]=function(_0x1cb02e){RpcVoiceTransferReport['attendedTransfer'](_0x1cb02e);};module[_0x04c1('0x53')]=Report;
\ No newline at end of file
+var _0xf09c=['outbound','internal','voiceCallReport','destination','type','dialer','queue','callerid','context','from-sip','xcally-motion-preview','originatecalleridnum','destinationchannel','calleridpreview','disposition','\x22%s\x22\x20<%s>','transfers','linkedid','uniqueid','blindTransfer','UserId','membername','create','monitor','monitorFilename','monitors','createdAt','exten','calleridname','connectedlinename','xcally-motion-dialer','voiceAgentReport','isArray','startsWith','Local','substring','indexOf','exports','moment','../../../config/environment','../ami','../rpc/voiceAgentReport','../rpc/voiceCallReport','../rpc/memberReport','../rpc/voiceRecording','./voiceQueueReport','./voiceAgentReport','./voiceDialReport','./userReport','agents','telephones','prototype','sync','realtime','xdr','disabled','custom:voiceQueueReport','bind','custom:voiceCallReport','custom:voiceAgentReport','custom:voiceDialReport','voiceDialReport','blindtransfer','attendedtransfer','attendedTransfer','findAgent','accountcode','name','isNil','find','interface','format','SIP/%s','voiceQueueReport','length','connectedlinenum','assigned','queuecallercomplete','queuecallercompleteAt','YYYY-MM-DD\x20HH:mm:ss','queuecallerexit','queuecallerexitAt','match','getAgentByInternal','keys','getCallType','channel','split','calleridnum'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xf09c,0xd8));var _0xcf09=function(_0x17454f,_0x2648ba){_0x17454f=_0x17454f-0x0;var _0x4952ee=_0xf09c[_0x17454f];return _0x4952ee;};'use strict';var _=require('lodash');var moment=require(_0xcf09('0x0'));var util=require('util');var config=require(_0xcf09('0x1'));var ami=require(_0xcf09('0x2'));var RpcVoiceAgentReport=require(_0xcf09('0x3'));var RpcVoiceCallReport=require(_0xcf09('0x4'));var RpcVoiceDialReport=require('../rpc/voiceDialReport');var RpcMemberReport=require(_0xcf09('0x5'));var RpcVoiceQueueReport=require('../rpc/voiceQueueReport');var RpcVoiceRecording=require(_0xcf09('0x6'));var RpcVoiceTransferReport=require('../rpc/voiceTransferReport');var VoiceQueueReport=require(_0xcf09('0x7'));var VoiceCallReport=require('./voiceCallReport');var VoiceAgentReport=require(_0xcf09('0x8'));var VoiceDialReport=require(_0xcf09('0x9'));var UserReport=require(_0xcf09('0xa'));function Report(_0x5ebdea){this['realtime']=_0x5ebdea;this[_0xcf09('0xb')]=_0x5ebdea['agents'];this['telephones']=_0x5ebdea[_0xcf09('0xc')];}Report[_0xcf09('0xd')][_0xcf09('0xe')]=function(_0x580d37){var _0x35ce15=new VoiceQueueReport(this['realtime']);var _0x258cd9=new VoiceAgentReport(this[_0xcf09('0xf')]);var _0x303a34=new VoiceDialReport(this[_0xcf09('0xf')]);var _0xb28fa8=new VoiceCallReport(this[_0xcf09('0xf')]);var _0x5a32a2=new UserReport(this[_0xcf09('0xf')]);if(config[_0xcf09('0x10')]&&config[_0xcf09('0x10')][_0xcf09('0x11')]){ami['on'](_0xcf09('0x12'),this['voiceQueueReport'][_0xcf09('0x13')](this));ami['on'](_0xcf09('0x14'),this['voiceCallReport']['bind'](this));ami['on'](_0xcf09('0x15'),this['voiceAgentReport'][_0xcf09('0x13')](this));ami['on'](_0xcf09('0x16'),this[_0xcf09('0x17')]['bind'](this));ami['on'](_0xcf09('0x18'),this['blindTransfer']['bind'](this));ami['on'](_0xcf09('0x19'),this[_0xcf09('0x1a')][_0xcf09('0x13')](this));}};Report[_0xcf09('0xd')][_0xcf09('0x1b')]=function(_0x1336b8){var _0x5874d7;_0x5874d7=_['find'](this[_0xcf09('0xb')],function(_0x1806c2){return _0x1806c2[_0xcf09('0x1c')]==_0x1336b8||_0x1806c2[_0xcf09('0x1d')]==_0x1336b8;});if(_[_0xcf09('0x1e')](_0x5874d7)){var _0x31472e=_[_0xcf09('0x1f')](this[_0xcf09('0xc')],function(_0x4a47ee){return _0x4a47ee['accountcode']==_0x1336b8||_0x4a47ee[_0xcf09('0x1d')]==_0x1336b8;});if(_0x31472e){_0x5874d7=_[_0xcf09('0x1f')](this['agents'],function(_0x26c383){return _0x26c383[_0xcf09('0x20')]==util[_0xcf09('0x21')](_0xcf09('0x22'),_0x31472e[_0xcf09('0x1d')]);});}}return _0x5874d7;};Report[_0xcf09('0xd')][_0xcf09('0x23')]=function(_0x5271db){for(var _0x43abbb=0x0;_0x43abbb<_0x5271db[_0xcf09('0x24')];_0x43abbb+=0x1){var _0x2a2c4a=this[_0xcf09('0x1b')](_0x5271db[_0x43abbb][_0xcf09('0x25')]);if(_0x2a2c4a){_0x5271db[_0x43abbb][_0xcf09('0x1c')]=_0x2a2c4a[_0xcf09('0x1c')];_0x5271db[_0x43abbb][_0xcf09('0x26')]=!![];_0x5271db[_0x43abbb]['lastAssignedTo']=_0x2a2c4a['name'];_0x5271db[_0x43abbb]['interface']=_['isNil'](_0x2a2c4a['interface'])?util['format'](_0xcf09('0x22'),_0x2a2c4a[_0xcf09('0x1d')]):_0x2a2c4a['interface'];if(_0x5271db[_0x43abbb][_0xcf09('0x27')]){_0x5271db[_0x43abbb][_0xcf09('0x28')]=moment()[_0xcf09('0x21')](_0xcf09('0x29'));}if(_0x5271db[_0x43abbb][_0xcf09('0x2a')]){_0x5271db[_0x43abbb][_0xcf09('0x2b')]=moment()[_0xcf09('0x21')](_0xcf09('0x29'));}RpcMemberReport['voiceQueueReport'](_0x5271db[_0x43abbb]);}RpcVoiceQueueReport['create'](_0x5271db[_0x43abbb]);}};function extractCalleridNumber(_0x43a629){var _0x4b31ac=_0x43a629[_0xcf09('0x2c')](/<(.*?)>/);return _0x4b31ac?_0x4b31ac[0x1]:_0x43a629;}Report['prototype'][_0xcf09('0x2d')]=function(_0x9a3a44){for(var _0x346a73=0x0;_0x346a73<Object[_0xcf09('0x2e')](this[_0xcf09('0xb')])['length'];_0x346a73++){var _0x55329b=Object['keys'](this['agents'])[_0x346a73];var _0x13da59=this[_0xcf09('0xb')][_0x55329b];if(_0x13da59[_0xcf09('0x1c')]===Number(_0x9a3a44))return _0x13da59;}return null;};Report[_0xcf09('0xd')][_0xcf09('0x2f')]=function(_0x478a84){var _0x26d5e8=_0x478a84[_0xcf09('0x30')][_0xcf09('0x31')]('-')[0x0];var _0x112472=this['agents'][_0x26d5e8];if(!_0x112472)_0x112472=this[_0xcf09('0x2d')](_0x478a84[_0xcf09('0x32')]);return!_0x112472?_0xcf09('0x33'):_0xcf09('0x34');};Report[_0xcf09('0xd')][_0xcf09('0x35')]=function(_0x1419a2){_0x1419a2[_0xcf09('0x36')]=_0x1419a2[_0xcf09('0x36')]||_0x1419a2['exten'];if(_0x1419a2[_0xcf09('0x37')]==_0xcf09('0x38')){_0x1419a2['lastapplication']=_0xcf09('0x39');_0x1419a2['lastdata']=_0x1419a2[_0xcf09('0x39')];if(_0x1419a2['context']=='from-voip-provider'){_0x1419a2['accountcode']='';_0x1419a2['destination']=extractCalleridNumber(_0x1419a2[_0xcf09('0x3a')]);}else if(_0x1419a2[_0xcf09('0x3b')]==_0xcf09('0x3c')){if(_0x1419a2[_0xcf09('0x36')]==_0xcf09('0x3d')){_0x1419a2['destination']=extractCalleridNumber(_0x1419a2['calleridpreview']);_0x1419a2['calleridnum']=_0x1419a2[_0xcf09('0x3e')];_0x1419a2[_0xcf09('0x3f')]=[_0x1419a2[_0xcf09('0x30')],_0x1419a2[_0xcf09('0x30')]=_0x1419a2[_0xcf09('0x3f')]][0x0];_0x1419a2[_0xcf09('0x3a')]=_0x1419a2[_0xcf09('0x40')];}else{_0x1419a2[_0xcf09('0x36')]=_0x1419a2[_0xcf09('0x32')];_0x1419a2[_0xcf09('0x32')]=_0x1419a2[_0xcf09('0x3e')];if(_0x1419a2[_0xcf09('0x41')]=='ANSWERED'){_0x1419a2['accountcode']=_0x1419a2[_0xcf09('0x25')];}else{_0x1419a2['accountcode']='';}}}}else{_0x1419a2['callerid']=util['format'](_0xcf09('0x42'),_0x1419a2['calleridname'],_0x1419a2[_0xcf09('0x32')]);}if(RpcVoiceTransferReport[_0xcf09('0x43')][_0x1419a2[_0xcf09('0x44')]]){var _0x5779ec=RpcVoiceTransferReport[_0xcf09('0x43')][_0x1419a2[_0xcf09('0x44')]];_0x5779ec['transfereelinkedid']=_0x1419a2[_0xcf09('0x45')];RpcVoiceTransferReport[_0xcf09('0x46')](_0x5779ec);delete RpcVoiceTransferReport[_0xcf09('0x43')][_0x1419a2[_0xcf09('0x44')]];}if(_[_0xcf09('0x1e')](_0x1419a2[_0xcf09('0x37')])){_0x1419a2[_0xcf09('0x37')]=this[_0xcf09('0x2f')](_0x1419a2);}if(_[_0xcf09('0x1e')](_0x1419a2[_0xcf09('0x47')])){var _0x59a612=_0x1419a2['channel']['split']('-')[0x0];var _0x53da9b=this['agents'][_0x59a612];if(!_0x53da9b)_0x53da9b=this[_0xcf09('0x2d')](_0x1419a2[_0xcf09('0x1c')]);if(_0x53da9b){_0x1419a2[_0xcf09('0x47')]=_0x53da9b['id'];_0x1419a2[_0xcf09('0x48')]=_0x53da9b[_0xcf09('0x1d')];}}RpcVoiceCallReport[_0xcf09('0x49')](_0x1419a2);if(_0x1419a2[_0xcf09('0x4a')]){for(var _0x44e558=0x0;_0x44e558<_0x1419a2['monitors'][_0xcf09('0x24')];_0x44e558+=0x1){_0x1419a2[_0xcf09('0x4b')]=_0x1419a2[_0xcf09('0x4c')][_0x44e558]['filename'];_0x1419a2[_0xcf09('0x4d')]=_0x1419a2[_0xcf09('0x4c')][_0x44e558]['createdAt'];if(_0x1419a2[_0xcf09('0x4e')]=='xcally-motion-preview'){_0x1419a2['calleridnum']=_0x1419a2[_0xcf09('0x25')];_0x1419a2[_0xcf09('0x4f')]=_0x1419a2[_0xcf09('0x50')];_0x1419a2['connectedlinenum']=_0x1419a2['accountcode'];_0x1419a2['connectedlinename']=_0x1419a2[_0xcf09('0x48')];_0x1419a2[_0xcf09('0x4e')]=_0x1419a2['originatecalleridnum'];}else if(_0x1419a2[_0xcf09('0x4e')]==_0xcf09('0x51')){_0x1419a2[_0xcf09('0x32')]=_0x1419a2[_0xcf09('0x36')];_0x1419a2[_0xcf09('0x4e')]=_0x1419a2[_0xcf09('0x3e')];}RpcVoiceRecording[_0xcf09('0x49')](_0x1419a2);}}};Report[_0xcf09('0xd')][_0xcf09('0x52')]=function(_0x345341){if(_[_0xcf09('0x53')](_0x345341)){_0x345341['forEach'](function(_0x1f5c77){RpcVoiceAgentReport[_0xcf09('0x49')](_0x1f5c77);});}else{RpcVoiceAgentReport[_0xcf09('0x49')](_0x345341);}};Report['prototype']['voiceDialReport']=function(_0x247514){RpcVoiceDialReport[_0xcf09('0x49')](_0x247514);var _0x4b9eb2;var _0xd14c10;var _0x19b81c=_0x247514[_0xcf09('0x30')];if(_[_0xcf09('0x54')](_0x19b81c,_0xcf09('0x55'))){_0xd14c10=_0x19b81c[_0xcf09('0x56')](_0x19b81c[_0xcf09('0x57')]('/')+0x1,_0x19b81c[_0xcf09('0x57')]('@'));_0x4b9eb2=_[_0xcf09('0x1f')](this[_0xcf09('0xb')],function(_0x16d9f1){return _0x16d9f1['mobile']==_0xd14c10||_0x16d9f1['phone']==_0xd14c10||_0x16d9f1['accountcode']==_0xd14c10;});}else{_0xd14c10=_0x19b81c[_0xcf09('0x56')](_0x19b81c[_0xcf09('0x57')]('/')+0x1,_0x19b81c['lastIndexOf']('-'));_0x4b9eb2=this[_0xcf09('0x1b')](_0xd14c10);}if(_0x4b9eb2){_0x247514[_0xcf09('0x20')]=_[_0xcf09('0x1e')](_0x4b9eb2['interface'])?util['format']('SIP/%s',_0x4b9eb2['name']):_0x4b9eb2[_0xcf09('0x20')];_0x247514[_0xcf09('0x48')]=_0x4b9eb2['name'];_0x247514[_0xcf09('0x1c')]=_0x4b9eb2[_0xcf09('0x1c')];RpcMemberReport[_0xcf09('0x17')](_0x247514);}};Report['prototype']['blindTransfer']=function(_0x58a956){RpcVoiceTransferReport[_0xcf09('0x43')][_0x58a956['transfererlinkedid']]=_0x58a956;};Report['prototype'][_0xcf09('0x1a')]=function(_0x7ef5b9){RpcVoiceTransferReport[_0xcf09('0x1a')](_0x7ef5b9);};module[_0xcf09('0x58')]=Report;
\ No newline at end of file
index 3008abb..354cd78 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf13=['[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','exports','lodash','ioredis','bluebird','redis','localhost','socket.io-emitter','trunks','agents','telephones','registryentry','syncRegistry','bind','registry','devicestatechange','syncDeviceState','peerstatus','syncPeerStatus','then','actionSipShowRegistry','error','[userReport][sipshowregistry]','inspect','resolve','actionDeviceStateList','catch','[userReport][devicestatelist]','actionSipPeerStatus','[userReport][sippeerstatus]','syncRealtimeShow','prototype','isNotNull','isUndefined','emit','info','[userReport][registry]\x20registry:%s\x20state:%s','username','state','debug','[userReport][registry]','stateRegistry','merge','actionid','format','trunk:%s','name','trunk:save','[userReport][devicestatechange]\x20device:%s\x20state:%s','[userReport][devicestatechange]','device','toLowerCase','inuse','local','stateTime','toNumber','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','Local','substring','indexOf','find','accountcode','updateStatusRealtime','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','address','[userReport][peerstatus]','peer','registered','status','telephone:save'];(function(_0x206719,_0x43e3bd){var _0x13df0f=function(_0x3d253b){while(--_0x3d253b){_0x206719['push'](_0x206719['shift']());}};_0x13df0f(++_0x43e3bd);}(_0xaf13,0x1b2));var _0x3af1=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xaf13[_0xa464c9];return _0x3d73c4;};'use strict';var _=require(_0x3af1('0x0'));var moment=require('moment');var util=require('util');var Redis=require(_0x3af1('0x1'));var BPromise=require(_0x3af1('0x2'));var config=require('../../../config/environment');var logger=require('../../../config/logger')('ami');var ami=require('../ami');config[_0x3af1('0x3')]=_['defaults'](config['redis'],{'host':_0x3af1('0x4'),'port':0x18eb});var io=require(_0x3af1('0x5'))(new Redis(config[_0x3af1('0x3')]));function UserReport(_0x43f541){this[_0x3af1('0x6')]=_0x43f541[_0x3af1('0x6')];this[_0x3af1('0x7')]=_0x43f541['agents'];this[_0x3af1('0x8')]=_0x43f541[_0x3af1('0x8')];ami['on'](_0x3af1('0x9'),this[_0x3af1('0xa')][_0x3af1('0xb')](this));ami['on'](_0x3af1('0xc'),this[_0x3af1('0xa')][_0x3af1('0xb')](this));ami['on'](_0x3af1('0xd'),this[_0x3af1('0xe')][_0x3af1('0xb')](this));ami['on'](_0x3af1('0xf'),this[_0x3af1('0x10')][_0x3af1('0xb')](this));return this['syncRealtimeShow']();}function showSipRegistrations(){Promise['resolve']()[_0x3af1('0x11')](ami[_0x3af1('0x12')]())['catch'](function(_0x42a3f2){logger[_0x3af1('0x13')](_0x3af1('0x14'),util[_0x3af1('0x15')](_0x42a3f2,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0x3af1('0x16')]()['then'](ami[_0x3af1('0x17')]())[_0x3af1('0x18')](function(_0x532d19){logger['error'](_0x3af1('0x19'),util['inspect'](_0x532d19,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0x3af1('0x16')]()[_0x3af1('0x11')](ami[_0x3af1('0x1a')]())[_0x3af1('0x18')](function(_0x3f3f40){logger[_0x3af1('0x13')](_0x3af1('0x1b'),util[_0x3af1('0x15')](_0x3f3f40,{'showHidden':![],'depth':null}));});}UserReport['prototype'][_0x3af1('0x1c')]=function(){setInterval(function(){BPromise[_0x3af1('0x16')]()['then'](showSipRegistrations())['then'](listDeviceStates())[_0x3af1('0x11')](showPeersStatus());},0x32c8);};UserReport[_0x3af1('0x1d')][_0x3af1('0x1e')]=function(_0x65e61f){return _0x65e61f!==null&&!_[_0x3af1('0x1f')](_0x65e61f);};UserReport[_0x3af1('0x1d')][_0x3af1('0x20')]=function(_0x67beac,_0x1e59cc,_0x589c44){io['to'](_0x67beac)[_0x3af1('0x20')](_0x1e59cc,_0x589c44);};UserReport['prototype']['syncRegistry']=function(_0x12f182){try{if(this[_0x3af1('0x1e')](_0x12f182)){logger[_0x3af1('0x21')](_0x3af1('0x22'),_0x12f182[_0x3af1('0x23')],_0x12f182[_0x3af1('0x24')]);logger[_0x3af1('0x25')](_0x3af1('0x26'),util[_0x3af1('0x15')](_0x12f182,{'showHidden':![],'depth':null}));var _0x342192=_['find'](this[_0x3af1('0x6')],{'defaultuser':_0x12f182[_0x3af1('0x23')]});if(_0x342192){_0x12f182[_0x3af1('0x27')]=_0x12f182['state'];_[_0x3af1('0x28')](_0x342192,_['omit'](_0x12f182,['event',_0x3af1('0x29'),_0x3af1('0x23'),_0x3af1('0x24')]));logger[_0x3af1('0x25')]('[userReport][registry]\x20sending\x20trunk:save\x20event:',util[_0x3af1('0x15')](_0x342192,{'showHidden':![],'depth':null}));this['emit'](util[_0x3af1('0x2a')](_0x3af1('0x2b'),_0x342192[_0x3af1('0x2c')]),_0x3af1('0x2d'),_0x342192);}}}catch(_0x8e43de){logger[_0x3af1('0x13')]('[userReport][registry]',util[_0x3af1('0x15')](_0x8e43de,{'showHidden':![],'depth':null}));}};UserReport['prototype']['syncDeviceState']=function(_0x3d2b3a){try{if(this[_0x3af1('0x1e')](_0x3d2b3a)){logger[_0x3af1('0x21')](_0x3af1('0x2e'),_0x3d2b3a['device'],_0x3d2b3a[_0x3af1('0x24')]);logger[_0x3af1('0x25')](_0x3af1('0x2f'),util[_0x3af1('0x15')](_0x3d2b3a,{'showHidden':![],'depth':null}));if(this[_0x3af1('0x7')][_0x3d2b3a[_0x3af1('0x30')]]){if(!this[_0x3af1('0x7')][_0x3d2b3a[_0x3af1('0x30')]]['local']||_0x3d2b3a[_0x3af1('0x24')][_0x3af1('0x31')]()==_0x3af1('0x32')){this[_0x3af1('0x7')][_0x3d2b3a[_0x3af1('0x30')]][_0x3af1('0x33')]=![];if(this[_0x3af1('0x7')][_0x3d2b3a[_0x3af1('0x30')]][_0x3af1('0x24')]!==_0x3d2b3a[_0x3af1('0x24')][_0x3af1('0x31')]()){this[_0x3af1('0x7')][_0x3d2b3a[_0x3af1('0x30')]][_0x3af1('0x34')]=_[_0x3af1('0x35')](moment()[_0x3af1('0x2a')]('x'));}this[_0x3af1('0x7')][_0x3d2b3a['device']]['state']=_0x3d2b3a['state']['toLowerCase']();this[_0x3af1('0x7')][_0x3d2b3a['device']]['updateStatusRealtime'](_0x3d2b3a);}}else if(this['telephones'][_0x3d2b3a['device']]){if(this['telephones'][_0x3d2b3a['device']][_0x3af1('0x24')]!==_0x3d2b3a[_0x3af1('0x24')][_0x3af1('0x31')]()){this[_0x3af1('0x8')][_0x3d2b3a[_0x3af1('0x30')]][_0x3af1('0x34')]=_[_0x3af1('0x35')](moment()['format']('x'));}this[_0x3af1('0x8')][_0x3d2b3a[_0x3af1('0x30')]][_0x3af1('0x24')]=_0x3d2b3a[_0x3af1('0x24')][_0x3af1('0x31')]();logger[_0x3af1('0x25')](_0x3af1('0x36'),util['inspect'](this[_0x3af1('0x8')][_0x3d2b3a[_0x3af1('0x30')]],{'showHidden':![],'depth':null}));this[_0x3af1('0x20')](util[_0x3af1('0x2a')](_0x3af1('0x37'),this[_0x3af1('0x8')][_0x3d2b3a[_0x3af1('0x30')]]['name']),'telephone:save',this[_0x3af1('0x8')][_0x3d2b3a[_0x3af1('0x30')]]);}else if(this['trunks'][_0x3d2b3a[_0x3af1('0x30')]]){if(this[_0x3af1('0x6')][_0x3d2b3a[_0x3af1('0x30')]]['state']!==_0x3d2b3a[_0x3af1('0x24')][_0x3af1('0x31')]()){this['trunks'][_0x3d2b3a[_0x3af1('0x30')]][_0x3af1('0x34')]=_[_0x3af1('0x35')](moment()[_0x3af1('0x2a')]('x'));}this[_0x3af1('0x6')][_0x3d2b3a[_0x3af1('0x30')]][_0x3af1('0x24')]=_0x3d2b3a['state']['toLowerCase']();logger[_0x3af1('0x25')](_0x3af1('0x38'),util[_0x3af1('0x15')](this[_0x3af1('0x6')][_0x3d2b3a[_0x3af1('0x30')]],{'showHidden':![],'depth':null}));this[_0x3af1('0x20')](util[_0x3af1('0x2a')](_0x3af1('0x2b'),this[_0x3af1('0x6')][_0x3d2b3a['device']][_0x3af1('0x2c')]),'trunk:save',this[_0x3af1('0x6')][_0x3d2b3a[_0x3af1('0x30')]]);}else if(_['startsWith'](_0x3d2b3a[_0x3af1('0x30')],_0x3af1('0x39'))){var _0x411e3c=_0x3d2b3a['device'];var _0x35b1df=_0x411e3c[_0x3af1('0x3a')](_0x411e3c[_0x3af1('0x3b')]('/')+0x1,_0x411e3c[_0x3af1('0x3b')]('@'));var _0x381ed5=_[_0x3af1('0x3c')](this[_0x3af1('0x7')],function(_0x39448c){return _0x39448c['mobile']==_0x35b1df||_0x39448c['phone']==_0x35b1df||_0x39448c[_0x3af1('0x3d')]==_0x35b1df;});if(_0x381ed5){if(_0x381ed5[_0x3af1('0x24')]!==_0x3d2b3a[_0x3af1('0x24')]['toLowerCase']()){_0x381ed5[_0x3af1('0x34')]=_['toNumber'](moment()[_0x3af1('0x2a')]('x'));}_0x381ed5[_0x3af1('0x24')]=_0x3d2b3a[_0x3af1('0x24')][_0x3af1('0x31')]();_0x381ed5[_0x3af1('0x33')]=!![];_0x381ed5[_0x3af1('0x3e')](_0x3d2b3a);}}}}catch(_0x238660){logger[_0x3af1('0x13')](_0x3af1('0x2f'),util['inspect'](_0x238660,{'showHidden':![],'depth':null}));}};UserReport[_0x3af1('0x1d')][_0x3af1('0x10')]=function(_0x5915e0){try{if(this[_0x3af1('0x1e')](_0x5915e0)&&this['isNotNull'](_0x5915e0[_0x3af1('0xf')])){logger[_0x3af1('0x21')](_0x3af1('0x3f'),_0x5915e0['peer'],_0x5915e0[_0x3af1('0x40')],_0x5915e0[_0x3af1('0xf')]);logger[_0x3af1('0x25')](_0x3af1('0x41'),util['inspect'](_0x5915e0,{'showHidden':![],'depth':null}));if(this[_0x3af1('0x7')][_0x5915e0[_0x3af1('0x42')]]){if(!this[_0x3af1('0x7')][_0x5915e0['peer']]['local']||_0x5915e0[_0x3af1('0xf')][_0x3af1('0x31')]()==_0x3af1('0x43')){this['agents'][_0x5915e0[_0x3af1('0x42')]]['local']=![];this['agents'][_0x5915e0[_0x3af1('0x42')]]['status']=_0x5915e0[_0x3af1('0xf')][_0x3af1('0x31')]();this[_0x3af1('0x7')][_0x5915e0[_0x3af1('0x42')]][_0x3af1('0x40')]=_0x5915e0[_0x3af1('0x40')];this['agents'][_0x5915e0['peer']]['updateStatusRealtime'](_0x5915e0);}}else if(this[_0x3af1('0x8')][_0x5915e0[_0x3af1('0x42')]]){this[_0x3af1('0x8')][_0x5915e0[_0x3af1('0x42')]][_0x3af1('0x44')]=_0x5915e0['peerstatus'][_0x3af1('0x31')]();this['telephones'][_0x5915e0[_0x3af1('0x42')]][_0x3af1('0x40')]=_0x5915e0[_0x3af1('0x40')];logger[_0x3af1('0x25')]('[userReport][peerstatus]\x20sending\x20telephone:save\x20event:',util[_0x3af1('0x15')](this[_0x3af1('0x8')][_0x5915e0[_0x3af1('0x42')]],{'showHidden':![],'depth':null}));this[_0x3af1('0x20')](util[_0x3af1('0x2a')]('telephone:%s',this[_0x3af1('0x8')][_0x5915e0['peer']][_0x3af1('0x2c')]),_0x3af1('0x45'),this[_0x3af1('0x8')][_0x5915e0[_0x3af1('0x42')]]);}else if(this[_0x3af1('0x6')][_0x5915e0[_0x3af1('0x42')]]){this['trunks'][_0x5915e0[_0x3af1('0x42')]][_0x3af1('0x44')]=_0x5915e0[_0x3af1('0xf')][_0x3af1('0x31')]();this[_0x3af1('0x6')][_0x5915e0[_0x3af1('0x42')]]['address']=_0x5915e0['address'];logger['debug'](_0x3af1('0x46'),util['inspect'](this[_0x3af1('0x6')][_0x5915e0[_0x3af1('0x42')]],{'showHidden':![],'depth':null}));this['emit'](util[_0x3af1('0x2a')]('trunk:%s',this[_0x3af1('0x6')][_0x5915e0['peer']][_0x3af1('0x2c')]),_0x3af1('0x2d'),this[_0x3af1('0x6')][_0x5915e0[_0x3af1('0x42')]]);}}}catch(_0x4ff8af){logger[_0x3af1('0x13')](_0x3af1('0x41'),util[_0x3af1('0x15')](_0x4ff8af,{'showHidden':![],'depth':null}));}};module[_0x3af1('0x47')]=UserReport;
\ No newline at end of file
+var _0x5c66=['exports','lodash','moment','ioredis','bluebird','../../../config/environment','ami','redis','trunks','agents','telephones','syncRegistry','bind','devicestatechange','syncDeviceState','peerstatus','syncPeerStatus','syncRealtimeShow','actionSipShowRegistry','catch','error','inspect','[userReport][devicestatelist]','resolve','actionSipPeerStatus','[userReport][sippeerstatus]','prototype','then','emit','isNotNull','info','[userReport][registry]\x20registry:%s\x20state:%s','username','state','debug','find','omit','event','[userReport][registry]\x20sending\x20trunk:save\x20event:','format','trunk:%s','name','[userReport][registry]','device','[userReport][devicestatechange]','local','inuse','toLowerCase','stateTime','toNumber','updateStatusRealtime','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:save','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','trunk:save','startsWith','Local','indexOf','phone','accountcode','peer','registered','status','address','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','telephone:%s'];(function(_0x680b65,_0x5b2e9c){var _0x1c2053=function(_0x1128e0){while(--_0x1128e0){_0x680b65['push'](_0x680b65['shift']());}};_0x1c2053(++_0x5b2e9c);}(_0x5c66,0x85));var _0x65c6=function(_0x566b7d,_0x1e357a){_0x566b7d=_0x566b7d-0x0;var _0x168c87=_0x5c66[_0x566b7d];return _0x168c87;};'use strict';var _=require(_0x65c6('0x0'));var moment=require(_0x65c6('0x1'));var util=require('util');var Redis=require(_0x65c6('0x2'));var BPromise=require(_0x65c6('0x3'));var config=require(_0x65c6('0x4'));var logger=require('../../../config/logger')(_0x65c6('0x5'));var ami=require('../ami');config[_0x65c6('0x6')]=_['defaults'](config[_0x65c6('0x6')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x65c6('0x6')]));function UserReport(_0x162742){this[_0x65c6('0x7')]=_0x162742[_0x65c6('0x7')];this[_0x65c6('0x8')]=_0x162742['agents'];this['telephones']=_0x162742[_0x65c6('0x9')];ami['on']('registryentry',this[_0x65c6('0xa')]['bind'](this));ami['on']('registry',this[_0x65c6('0xa')][_0x65c6('0xb')](this));ami['on'](_0x65c6('0xc'),this[_0x65c6('0xd')][_0x65c6('0xb')](this));ami['on'](_0x65c6('0xe'),this[_0x65c6('0xf')]['bind'](this));return this[_0x65c6('0x10')]();}function showSipRegistrations(){Promise['resolve']()['then'](ami[_0x65c6('0x11')]())[_0x65c6('0x12')](function(_0x51b32f){logger[_0x65c6('0x13')]('[userReport][sipshowregistry]',util[_0x65c6('0x14')](_0x51b32f,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise['resolve']()['then'](ami['actionDeviceStateList']())[_0x65c6('0x12')](function(_0x25004e){logger[_0x65c6('0x13')](_0x65c6('0x15'),util[_0x65c6('0x14')](_0x25004e,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0x65c6('0x16')]()['then'](ami[_0x65c6('0x17')]())['catch'](function(_0x2ca6d4){logger[_0x65c6('0x13')](_0x65c6('0x18'),util['inspect'](_0x2ca6d4,{'showHidden':![],'depth':null}));});}UserReport[_0x65c6('0x19')][_0x65c6('0x10')]=function(){setInterval(function(){BPromise[_0x65c6('0x16')]()[_0x65c6('0x1a')](showSipRegistrations())[_0x65c6('0x1a')](listDeviceStates())['then'](showPeersStatus());},0x32c8);};UserReport[_0x65c6('0x19')]['isNotNull']=function(_0x326409){return _0x326409!==null&&!_['isUndefined'](_0x326409);};UserReport['prototype']['emit']=function(_0x15fa97,_0x1eaa71,_0x56608f){io['to'](_0x15fa97)[_0x65c6('0x1b')](_0x1eaa71,_0x56608f);};UserReport[_0x65c6('0x19')][_0x65c6('0xa')]=function(_0x154d16){try{if(this[_0x65c6('0x1c')](_0x154d16)){logger[_0x65c6('0x1d')](_0x65c6('0x1e'),_0x154d16[_0x65c6('0x1f')],_0x154d16[_0x65c6('0x20')]);logger[_0x65c6('0x21')]('[userReport][registry]',util[_0x65c6('0x14')](_0x154d16,{'showHidden':![],'depth':null}));var _0x4825f5=_[_0x65c6('0x22')](this['trunks'],{'defaultuser':_0x154d16['username']});if(_0x4825f5){_0x154d16['stateRegistry']=_0x154d16['state'];_['merge'](_0x4825f5,_[_0x65c6('0x23')](_0x154d16,[_0x65c6('0x24'),'actionid',_0x65c6('0x1f'),_0x65c6('0x20')]));logger[_0x65c6('0x21')](_0x65c6('0x25'),util[_0x65c6('0x14')](_0x4825f5,{'showHidden':![],'depth':null}));this[_0x65c6('0x1b')](util[_0x65c6('0x26')](_0x65c6('0x27'),_0x4825f5[_0x65c6('0x28')]),'trunk:save',_0x4825f5);}}}catch(_0x27aa58){logger['error'](_0x65c6('0x29'),util['inspect'](_0x27aa58,{'showHidden':![],'depth':null}));}};UserReport['prototype'][_0x65c6('0xd')]=function(_0x3cd79c){try{if(this[_0x65c6('0x1c')](_0x3cd79c)){logger['info']('[userReport][devicestatechange]\x20device:%s\x20state:%s',_0x3cd79c[_0x65c6('0x2a')],_0x3cd79c['state']);logger[_0x65c6('0x21')](_0x65c6('0x2b'),util[_0x65c6('0x14')](_0x3cd79c,{'showHidden':![],'depth':null}));if(this[_0x65c6('0x8')][_0x3cd79c[_0x65c6('0x2a')]]){if(!this[_0x65c6('0x8')][_0x3cd79c[_0x65c6('0x2a')]][_0x65c6('0x2c')]||_0x3cd79c[_0x65c6('0x20')]['toLowerCase']()==_0x65c6('0x2d')){this[_0x65c6('0x8')][_0x3cd79c[_0x65c6('0x2a')]][_0x65c6('0x2c')]=![];if(this[_0x65c6('0x8')][_0x3cd79c[_0x65c6('0x2a')]][_0x65c6('0x20')]!==_0x3cd79c[_0x65c6('0x20')][_0x65c6('0x2e')]()){this[_0x65c6('0x8')][_0x3cd79c['device']][_0x65c6('0x2f')]=_[_0x65c6('0x30')](moment()['format']('x'));}this[_0x65c6('0x8')][_0x3cd79c[_0x65c6('0x2a')]]['state']=_0x3cd79c['state'][_0x65c6('0x2e')]();this[_0x65c6('0x8')][_0x3cd79c[_0x65c6('0x2a')]][_0x65c6('0x31')](_0x3cd79c);}}else if(this['telephones'][_0x3cd79c[_0x65c6('0x2a')]]){if(this[_0x65c6('0x9')][_0x3cd79c[_0x65c6('0x2a')]][_0x65c6('0x20')]!==_0x3cd79c[_0x65c6('0x20')]['toLowerCase']()){this[_0x65c6('0x9')][_0x3cd79c[_0x65c6('0x2a')]][_0x65c6('0x2f')]=_[_0x65c6('0x30')](moment()[_0x65c6('0x26')]('x'));}this[_0x65c6('0x9')][_0x3cd79c[_0x65c6('0x2a')]][_0x65c6('0x20')]=_0x3cd79c[_0x65c6('0x20')]['toLowerCase']();logger[_0x65c6('0x21')](_0x65c6('0x32'),util[_0x65c6('0x14')](this['telephones'][_0x3cd79c[_0x65c6('0x2a')]],{'showHidden':![],'depth':null}));this['emit'](util['format']('telephone:%s',this['telephones'][_0x3cd79c[_0x65c6('0x2a')]][_0x65c6('0x28')]),_0x65c6('0x33'),this[_0x65c6('0x9')][_0x3cd79c[_0x65c6('0x2a')]]);}else if(this[_0x65c6('0x7')][_0x3cd79c[_0x65c6('0x2a')]]){if(this[_0x65c6('0x7')][_0x3cd79c[_0x65c6('0x2a')]][_0x65c6('0x20')]!==_0x3cd79c[_0x65c6('0x20')]['toLowerCase']()){this[_0x65c6('0x7')][_0x3cd79c[_0x65c6('0x2a')]]['stateTime']=_[_0x65c6('0x30')](moment()[_0x65c6('0x26')]('x'));}this[_0x65c6('0x7')][_0x3cd79c[_0x65c6('0x2a')]]['state']=_0x3cd79c[_0x65c6('0x20')][_0x65c6('0x2e')]();logger[_0x65c6('0x21')](_0x65c6('0x34'),util[_0x65c6('0x14')](this[_0x65c6('0x7')][_0x3cd79c['device']],{'showHidden':![],'depth':null}));this[_0x65c6('0x1b')](util[_0x65c6('0x26')]('trunk:%s',this[_0x65c6('0x7')][_0x3cd79c[_0x65c6('0x2a')]]['name']),_0x65c6('0x35'),this[_0x65c6('0x7')][_0x3cd79c[_0x65c6('0x2a')]]);}else if(_[_0x65c6('0x36')](_0x3cd79c[_0x65c6('0x2a')],_0x65c6('0x37'))){var _0x1f3d32=_0x3cd79c[_0x65c6('0x2a')];var _0x2c00db=_0x1f3d32['substring'](_0x1f3d32[_0x65c6('0x38')]('/')+0x1,_0x1f3d32[_0x65c6('0x38')]('@'));var _0x24f145=_[_0x65c6('0x22')](this[_0x65c6('0x8')],function(_0x1b1fff){return _0x1b1fff['mobile']==_0x2c00db||_0x1b1fff[_0x65c6('0x39')]==_0x2c00db||_0x1b1fff[_0x65c6('0x3a')]==_0x2c00db;});if(_0x24f145){if(_0x24f145['state']!==_0x3cd79c[_0x65c6('0x20')][_0x65c6('0x2e')]()){_0x24f145[_0x65c6('0x2f')]=_[_0x65c6('0x30')](moment()[_0x65c6('0x26')]('x'));}_0x24f145[_0x65c6('0x20')]=_0x3cd79c[_0x65c6('0x20')][_0x65c6('0x2e')]();_0x24f145['local']=!![];_0x24f145['updateStatusRealtime'](_0x3cd79c);}}}}catch(_0x54dac6){logger[_0x65c6('0x13')](_0x65c6('0x2b'),util['inspect'](_0x54dac6,{'showHidden':![],'depth':null}));}};UserReport['prototype'][_0x65c6('0xf')]=function(_0x35e68e){try{if(this[_0x65c6('0x1c')](_0x35e68e)&&this[_0x65c6('0x1c')](_0x35e68e[_0x65c6('0xe')])){logger[_0x65c6('0x1d')]('[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s',_0x35e68e[_0x65c6('0x3b')],_0x35e68e['address'],_0x35e68e[_0x65c6('0xe')]);logger[_0x65c6('0x21')]('[userReport][peerstatus]',util['inspect'](_0x35e68e,{'showHidden':![],'depth':null}));if(this[_0x65c6('0x8')][_0x35e68e['peer']]){if(!this[_0x65c6('0x8')][_0x35e68e[_0x65c6('0x3b')]][_0x65c6('0x2c')]||_0x35e68e[_0x65c6('0xe')][_0x65c6('0x2e')]()==_0x65c6('0x3c')){this[_0x65c6('0x8')][_0x35e68e[_0x65c6('0x3b')]][_0x65c6('0x2c')]=![];this[_0x65c6('0x8')][_0x35e68e[_0x65c6('0x3b')]][_0x65c6('0x3d')]=_0x35e68e[_0x65c6('0xe')][_0x65c6('0x2e')]();this[_0x65c6('0x8')][_0x35e68e[_0x65c6('0x3b')]]['address']=_0x35e68e['address'];this[_0x65c6('0x8')][_0x35e68e[_0x65c6('0x3b')]][_0x65c6('0x31')](_0x35e68e);}}else if(this['telephones'][_0x35e68e[_0x65c6('0x3b')]]){this[_0x65c6('0x9')][_0x35e68e['peer']][_0x65c6('0x3d')]=_0x35e68e[_0x65c6('0xe')]['toLowerCase']();this['telephones'][_0x35e68e[_0x65c6('0x3b')]][_0x65c6('0x3e')]=_0x35e68e[_0x65c6('0x3e')];logger[_0x65c6('0x21')](_0x65c6('0x3f'),util[_0x65c6('0x14')](this['telephones'][_0x35e68e[_0x65c6('0x3b')]],{'showHidden':![],'depth':null}));this['emit'](util[_0x65c6('0x26')](_0x65c6('0x40'),this[_0x65c6('0x9')][_0x35e68e[_0x65c6('0x3b')]][_0x65c6('0x28')]),'telephone:save',this[_0x65c6('0x9')][_0x35e68e[_0x65c6('0x3b')]]);}else if(this[_0x65c6('0x7')][_0x35e68e[_0x65c6('0x3b')]]){this[_0x65c6('0x7')][_0x35e68e['peer']][_0x65c6('0x3d')]=_0x35e68e['peerstatus'][_0x65c6('0x2e')]();this[_0x65c6('0x7')][_0x35e68e[_0x65c6('0x3b')]][_0x65c6('0x3e')]=_0x35e68e[_0x65c6('0x3e')];logger[_0x65c6('0x21')]('[userReport][peerstatus]\x20sending\x20trunk:save\x20event:',util['inspect'](this[_0x65c6('0x7')][_0x35e68e[_0x65c6('0x3b')]],{'showHidden':![],'depth':null}));this[_0x65c6('0x1b')](util[_0x65c6('0x26')](_0x65c6('0x27'),this['trunks'][_0x35e68e[_0x65c6('0x3b')]][_0x65c6('0x28')]),_0x65c6('0x35'),this['trunks'][_0x35e68e['peer']]);}}}catch(_0x294d13){logger[_0x65c6('0x13')]('[userReport][peerstatus]',util[_0x65c6('0x14')](_0x294d13,{'showHidden':![],'depth':null}));}};module[_0x65c6('0x41')]=UserReport;
\ No newline at end of file
index 8c24037..97a233b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc1d8=['[%s][voiceAgentReport][musiconholdstart]\x20event:','channel','substring','lastIndexOf','[%s][voiceAgentReport][musiconholdstart]\x20interface:%s','onhold','[%s][voiceAgentReport][musiconholdstart]','syncMusicOnHoldStop','[%s][voiceAgentReport][musiconholdstop]\x20event:','[%s][voiceAgentReport][musiconholdstop]','exports','lodash','moment','util','ioredis','../../../config/environment','../ami','redis','defaults','localhost','socket.io-emitter','voiceChannels','channels','voiceQueues','agents','variables','agentcalled','syncAgentCalled','bind','agentconnect','syncAgentConnect','agentringnoanswer','syncAgentRingNoAnswer','syncQueueCallerAbandon','agentcomplete','syncAgentComplete','varset','syncVarSet','hangup','syncHangup','syncMusicOnHoldStart','musiconholdstop','attendedtransfer','syncBlindTransfer','emit','prototype','isNotNull','isUndefined','info','uniqueid','membername','destuniqueid','[%s][voiceAgentReport][agentcalled]\x20event:','inspect','queue','YYYY-MM-DD\x20HH:mm:ss','mandatoryDisposition','type','inbound','voice','merge','event','privilege','debug','[%s][voiceAgentReport][agentcalled]\x20sending\x20agentcalled\x20event:','custom:agentcalled','calleridnum','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:called\x20event:','format','user:%s','error','[%s][voiceAgentReport][agentcalled]','hasOwnProperty','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','connectedlinename','connectedlinenum','destchannelstate','destchannelstatedesc','connect','routealias','destconnectedlinenum','interface','name','accountcode','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:answered_elsewhere','agentringnoanswerAt','answeredelsewheredestinationuniqueid','answeredelsewheremembername','lastevent','answered_elsewhere','reason','custom:agentansweredelsewhere','[%s][voiceAgentReport][agentconnect]\x20Else\x20path\x20should\x20never\x20be\x20taken','[%s][voiceAgentReport][agentconnect]','[%s][voiceAgentReport][agentringnoanswer]\x20event:','[%s][voiceAgentReport][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:rejected','rejected','custom:agentringnoanswer','[%s][voiceAgentReport][agentringnoanswer]','[%s][voiceAgentReport][queuecallerabandon]\x20event:','[%s][voiceAgentReport][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','abandoned','custom:agentqueuecallerabandon','[%s][voiceAgentReport][queuecallerabandon]','[%s][voiceAgentReport][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','complete','transfer','agent','talktime','acw','acwTimeout','agentacw','omit','[%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:','keys','variable','value','[%s][voiceAgentReport][varset]\x20destuniqueid:%s\x20variable:%s\x20value:%s','addVariable','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','bridgepeer','bridgepvtcallid','memberinterface','memberpenalty','memberrealtime','isNil','includes','[%s][voiceAgentReport][hangup]\x20destuniqueid:%s','[%s][voiceAgentReport][hangup]\x20sending\x20voiceAgentReport\x20event:','values','[%s][voiceAgentReport][hangup]','syncAttendedTransfer','[%s][voiceAgentReport][attendedtransfer]\x20event:','transfereeuniqueid','origtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','diff','seconds','secondtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]','[%s][voiceAgentReport][blindtransfer]\x20event:','transfereruniqueid','[%s][voiceAgentReport][blindtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','[%s][voiceAgentReport][blindtransfer]'];(function(_0x4a53d,_0x58a95e){var _0x27410e=function(_0x38fc90){while(--_0x38fc90){_0x4a53d['push'](_0x4a53d['shift']());}};_0x27410e(++_0x58a95e);}(_0xc1d8,0x14b));var _0x8c1d=function(_0x141087,_0x507083){_0x141087=_0x141087-0x0;var _0x3617c4=_0xc1d8[_0x141087];return _0x3617c4;};'use strict';var _=require(_0x8c1d('0x0'));var moment=require(_0x8c1d('0x1'));var util=require(_0x8c1d('0x2'));var Redis=require(_0x8c1d('0x3'));var config=require(_0x8c1d('0x4'));var logger=require('../../../config/logger')('ami');var ami=require(_0x8c1d('0x5'));config[_0x8c1d('0x6')]=_[_0x8c1d('0x7')](config[_0x8c1d('0x6')],{'host':_0x8c1d('0x8'),'port':0x18eb});var io=require(_0x8c1d('0x9'))(new Redis(config['redis']));function VoiceAgentReport(_0x52cb4c){this['channels']={};this[_0x8c1d('0xa')]=_0x52cb4c[_0x8c1d('0xb')];this[_0x8c1d('0xc')]=_0x52cb4c[_0x8c1d('0xc')];this[_0x8c1d('0xd')]=_0x52cb4c[_0x8c1d('0xd')];this[_0x8c1d('0xe')]={};ami['on'](_0x8c1d('0xf'),this[_0x8c1d('0x10')][_0x8c1d('0x11')](this));ami['on'](_0x8c1d('0x12'),this[_0x8c1d('0x13')][_0x8c1d('0x11')](this));ami['on'](_0x8c1d('0x14'),this[_0x8c1d('0x15')][_0x8c1d('0x11')](this));ami['on']('queuecallerabandon',this[_0x8c1d('0x16')][_0x8c1d('0x11')](this));ami['on'](_0x8c1d('0x17'),this[_0x8c1d('0x18')][_0x8c1d('0x11')](this));ami['on'](_0x8c1d('0x19'),this[_0x8c1d('0x1a')]['bind'](this));ami['on'](_0x8c1d('0x1b'),this[_0x8c1d('0x1c')][_0x8c1d('0x11')](this));ami['on']('musiconholdstart',this[_0x8c1d('0x1d')][_0x8c1d('0x11')](this));ami['on'](_0x8c1d('0x1e'),this['syncMusicOnHoldStop'][_0x8c1d('0x11')](this));ami['on'](_0x8c1d('0x1f'),this['syncAttendedTransfer'][_0x8c1d('0x11')](this));ami['on']('blindtransfer',this[_0x8c1d('0x20')][_0x8c1d('0x11')](this));}VoiceAgentReport['prototype'][_0x8c1d('0x21')]=function(_0x38f8bf,_0x7cf2b3,_0x1405f4){io['to'](_0x38f8bf)[_0x8c1d('0x21')](_0x7cf2b3,_0x1405f4);};VoiceAgentReport[_0x8c1d('0x22')][_0x8c1d('0x23')]=function(_0x403eee){return _0x403eee!==null&&!_[_0x8c1d('0x24')](_0x403eee);};VoiceAgentReport[_0x8c1d('0x22')][_0x8c1d('0x10')]=function(_0x2c1024){try{if(this['isNotNull'](_0x2c1024)){logger[_0x8c1d('0x25')]('[%s][voiceAgentReport][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called',_0x2c1024[_0x8c1d('0x26')],_0x2c1024[_0x8c1d('0x27')],_0x2c1024[_0x8c1d('0x28')]);logger['debug'](_0x8c1d('0x29'),_0x2c1024[_0x8c1d('0x26')],util[_0x8c1d('0x2a')](_0x2c1024,{'showHidden':![],'depth':null}));if(_[_0x8c1d('0x24')](this[_0x8c1d('0xb')][_0x2c1024['uniqueid']])){this[_0x8c1d('0xb')][_0x2c1024[_0x8c1d('0x26')]]={};}var _0x480990=this[_0x8c1d('0xd')][_0x2c1024['interface']];var _0x32ae93=this[_0x8c1d('0xb')][_0x2c1024[_0x8c1d('0x26')]][_0x2c1024['destuniqueid']];var _0x1f2777=this[_0x8c1d('0xc')][_0x2c1024[_0x8c1d('0x2b')]];var _0x5d4feb=this['variables'][_0x2c1024[_0x8c1d('0x26')]];if(_['isUndefined'](_0x32ae93)){_0x32ae93={'agentcalledAt':moment()['format'](_0x8c1d('0x2c')),'lastevent':'called','mandatoryDisposition':_0x1f2777&&_0x1f2777[_0x8c1d('0x2d')]?_0x1f2777['mandatoryDisposition']:![],'type':_0x1f2777&&_0x1f2777[_0x8c1d('0x2e')]?_0x1f2777['type']:_0x8c1d('0x2f'),'variables':_0x5d4feb,'motionChannel':_0x8c1d('0x30')};}_[_0x8c1d('0x31')](_0x32ae93,_['omit'](_0x2c1024,[_0x8c1d('0x32'),_0x8c1d('0x33')]));this[_0x8c1d('0xb')][_0x2c1024['uniqueid']][_0x2c1024[_0x8c1d('0x28')]]=_0x32ae93;logger[_0x8c1d('0x34')](_0x8c1d('0x35'),_0x2c1024[_0x8c1d('0x26')],util['inspect'](_0x32ae93,{'showHidden':![],'depth':null}));ami[_0x8c1d('0x21')](_0x8c1d('0x36'),_0x32ae93);var _0x5cd2ec={'id':_0x480990['id'],'calleridnum':_0x32ae93[_0x8c1d('0x37')],'queue':_0x32ae93[_0x8c1d('0x2b')],'variables':_0x32ae93[_0x8c1d('0xe')],'uniqueid':_0x2c1024[_0x8c1d('0x26')]};logger[_0x8c1d('0x34')](_0x8c1d('0x38'),_0x2c1024[_0x8c1d('0x26')],util[_0x8c1d('0x2a')](_0x5cd2ec,{'showHidden':![],'depth':null}));this[_0x8c1d('0x21')](util[_0x8c1d('0x39')](_0x8c1d('0x3a'),_0x2c1024[_0x8c1d('0x27')]),'user:called',_0x5cd2ec);}}catch(_0x76df81){logger[_0x8c1d('0x3b')](_0x8c1d('0x3c'),_0x2c1024['uniqueid'],util[_0x8c1d('0x2a')](_0x76df81,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x8c1d('0x22')][_0x8c1d('0x13')]=function(_0x5304d1){try{if(this[_0x8c1d('0x23')](_0x5304d1)){if(this[_0x8c1d('0xb')][_0x5304d1[_0x8c1d('0x26')]]){for(var _0x102852 in this['channels'][_0x5304d1[_0x8c1d('0x26')]]){if(this[_0x8c1d('0xb')][_0x5304d1[_0x8c1d('0x26')]][_0x8c1d('0x3d')](_0x102852)){if(_0x5304d1[_0x8c1d('0x28')]===_0x102852){logger[_0x8c1d('0x25')](_0x8c1d('0x3e'),_0x5304d1[_0x8c1d('0x26')],_0x5304d1['membername'],_0x5304d1[_0x8c1d('0x28')]);this['channels'][_0x5304d1[_0x8c1d('0x26')]][_0x102852][_0x8c1d('0x3f')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this[_0x8c1d('0xb')][_0x5304d1[_0x8c1d('0x26')]][_0x102852]['connectedlinename']=_0x5304d1[_0x8c1d('0x40')];this['channels'][_0x5304d1[_0x8c1d('0x26')]][_0x102852][_0x8c1d('0x41')]=_0x5304d1[_0x8c1d('0x41')];this[_0x8c1d('0xb')][_0x5304d1[_0x8c1d('0x26')]][_0x102852][_0x8c1d('0x42')]=_0x5304d1['destchannelstate'];this[_0x8c1d('0xb')][_0x5304d1[_0x8c1d('0x26')]][_0x102852]['destchannelstatedesc']=_0x5304d1[_0x8c1d('0x43')];this[_0x8c1d('0xb')][_0x5304d1[_0x8c1d('0x26')]][_0x102852]['holdtime']=_0x5304d1['holdtime'];this[_0x8c1d('0xb')][_0x5304d1[_0x8c1d('0x26')]][_0x102852]['lastevent']=_0x8c1d('0x44');if(this['voiceChannels'][this[_0x8c1d('0xb')][_0x5304d1[_0x8c1d('0x26')]][_0x102852][_0x8c1d('0x26')]]){var _0x37554c=this['voiceChannels'][this[_0x8c1d('0xb')][_0x5304d1[_0x8c1d('0x26')]][_0x102852][_0x8c1d('0x26')]][_0x8c1d('0x45')];this[_0x8c1d('0xb')][_0x5304d1['uniqueid']][_0x102852][_0x8c1d('0x45')]=_0x37554c;_0x5304d1['routealias']=_0x37554c;}_[_0x8c1d('0x31')](this['agents'][_0x5304d1['interface']],_['pick'](_0x5304d1,['queue',_0x8c1d('0x46'),_0x8c1d('0x45')]));var _0x388f2e=this['agents'][_0x5304d1[_0x8c1d('0x47')]];var _0x291f4c={'id':_0x388f2e['id'],'name':_0x388f2e[_0x8c1d('0x48')],'agentconnected':!![],'destaccountcode':_0x388f2e[_0x8c1d('0x49')],'destconnectedlinenum':this['channels'][_0x5304d1['uniqueid']][_0x5304d1['destuniqueid']]['exten'],'queue':this['channels'][_0x5304d1['uniqueid']][_0x5304d1[_0x8c1d('0x28')]][_0x8c1d('0x2b')],'routealias':this['channels'][_0x5304d1['uniqueid']][_0x5304d1[_0x8c1d('0x28')]][_0x8c1d('0x45')],'uniqueid':this[_0x8c1d('0xb')][_0x5304d1[_0x8c1d('0x26')]][_0x5304d1['destuniqueid']][_0x8c1d('0x26')]};ami[_0x8c1d('0x21')]('custom:agentconnect',this[_0x8c1d('0xb')][_0x5304d1[_0x8c1d('0x26')]][_0x5304d1[_0x8c1d('0x28')]]);this[_0x8c1d('0x21')](util[_0x8c1d('0x39')]('user:%s',_0x5304d1[_0x8c1d('0x27')]),'user:agentconnect',_0x291f4c);}else if(!this[_0x8c1d('0xb')][_0x5304d1[_0x8c1d('0x26')]][_0x102852][_0x8c1d('0x14')]&&!this[_0x8c1d('0xb')][_0x5304d1[_0x8c1d('0x26')]][_0x102852]['agentcomplete']){logger[_0x8c1d('0x25')](_0x8c1d('0x4a'),_0x5304d1[_0x8c1d('0x26')],this['channels'][_0x5304d1['uniqueid']][_0x102852][_0x8c1d('0x27')],_0x102852);this[_0x8c1d('0xb')][_0x5304d1['uniqueid']][_0x102852][_0x8c1d('0x14')]=!![];this[_0x8c1d('0xb')][_0x5304d1[_0x8c1d('0x26')]][_0x102852][_0x8c1d('0x4b')]=moment()[_0x8c1d('0x39')](_0x8c1d('0x2c'));this[_0x8c1d('0xb')][_0x5304d1[_0x8c1d('0x26')]][_0x102852][_0x8c1d('0x4c')]=_0x5304d1[_0x8c1d('0x28')];this[_0x8c1d('0xb')][_0x5304d1[_0x8c1d('0x26')]][_0x102852][_0x8c1d('0x4d')]=_0x5304d1[_0x8c1d('0x27')];this[_0x8c1d('0xb')][_0x5304d1[_0x8c1d('0x26')]][_0x102852][_0x8c1d('0x4e')]=_0x8c1d('0x4f');this['channels'][_0x5304d1[_0x8c1d('0x26')]][_0x102852][_0x8c1d('0x50')]=_0x8c1d('0x4f');logger['debug']('[%s][voiceAgentReport][agentconnect]\x20sending\x20agentansweredelsewhere\x20event:',_0x5304d1[_0x8c1d('0x26')],util[_0x8c1d('0x2a')](this[_0x8c1d('0xb')][_0x5304d1[_0x8c1d('0x26')]][_0x102852],{'showHidden':![],'depth':null}));ami[_0x8c1d('0x21')](_0x8c1d('0x51'),this['channels'][_0x5304d1[_0x8c1d('0x26')]][_0x102852]);}else{logger[_0x8c1d('0x34')](_0x8c1d('0x52'),_0x5304d1[_0x8c1d('0x26')]);}}}}}}catch(_0x881e20){logger['error'](_0x8c1d('0x53'),_0x5304d1[_0x8c1d('0x26')],util[_0x8c1d('0x2a')](_0x881e20,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x8c1d('0x22')][_0x8c1d('0x15')]=function(_0x59bf82){try{if(this['isNotNull'](_0x59bf82)){logger['debug'](_0x8c1d('0x54'),_0x59bf82[_0x8c1d('0x26')],util[_0x8c1d('0x2a')](_0x59bf82,{'showHidden':![],'depth':null}));if(this['channels'][_0x59bf82['uniqueid']]&&this[_0x8c1d('0xb')][_0x59bf82[_0x8c1d('0x26')]][_0x59bf82[_0x8c1d('0x28')]]){logger['info'](_0x8c1d('0x55'),_0x59bf82[_0x8c1d('0x26')],_0x59bf82[_0x8c1d('0x27')],_0x59bf82[_0x8c1d('0x28')]);var _0x33026a=this[_0x8c1d('0xd')][_0x59bf82[_0x8c1d('0x47')]];var _0xf080c6=this['channels'][_0x59bf82[_0x8c1d('0x26')]][_0x59bf82['destuniqueid']];_0xf080c6[_0x8c1d('0x14')]=!![];_0xf080c6['agentringnoanswerAt']=moment()[_0x8c1d('0x39')](_0x8c1d('0x2c'));_0xf080c6[_0x8c1d('0x4e')]=_0x8c1d('0x56');_0xf080c6['reason']=_0x8c1d('0x56');var _0x38167d={'id':_0x33026a['id'],'name':_0x33026a[_0x8c1d('0x48')],'queue':_0xf080c6[_0x8c1d('0x2b')],'uniqueid':_0xf080c6[_0x8c1d('0x26')]};logger[_0x8c1d('0x34')]('[%s][voiceAgentReport][agentringnoanswer]\x20sending\x20agentringnoanswer\x20event:',_0x59bf82['uniqueid'],util[_0x8c1d('0x2a')](_0x38167d,{'showHidden':![],'depth':null}));this['emit'](util['format']('user:%s',_0x33026a['name']),'user:agentringnoanswer',_0x38167d);ami[_0x8c1d('0x21')](_0x8c1d('0x57'),_0xf080c6);}}}catch(_0x17aa5c){logger[_0x8c1d('0x3b')](_0x8c1d('0x58'),_0x59bf82['uniqueid'],util[_0x8c1d('0x2a')](_0x17aa5c,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x8c1d('0x22')][_0x8c1d('0x16')]=function(_0x3a6a65){try{if(this[_0x8c1d('0x23')](_0x3a6a65)){logger[_0x8c1d('0x34')](_0x8c1d('0x59'),_0x3a6a65[_0x8c1d('0x26')],util['inspect'](_0x3a6a65,{'showHidden':![],'depth':null}));if(this[_0x8c1d('0xb')][_0x3a6a65[_0x8c1d('0x26')]]){for(var _0x20457f in this[_0x8c1d('0xb')][_0x3a6a65[_0x8c1d('0x26')]]){if(this[_0x8c1d('0xb')][_0x3a6a65[_0x8c1d('0x26')]][_0x8c1d('0x3d')](_0x20457f)&&!this[_0x8c1d('0xb')][_0x3a6a65[_0x8c1d('0x26')]][_0x20457f][_0x8c1d('0x14')]&&!this[_0x8c1d('0xb')][_0x3a6a65[_0x8c1d('0x26')]][_0x20457f][_0x8c1d('0x17')]){logger['info'](_0x8c1d('0x5a'),_0x3a6a65[_0x8c1d('0x26')],this[_0x8c1d('0xb')][_0x3a6a65[_0x8c1d('0x26')]][_0x20457f][_0x8c1d('0x27')],_0x20457f);this[_0x8c1d('0xb')][_0x3a6a65[_0x8c1d('0x26')]][_0x20457f][_0x8c1d('0x14')]=!![];this[_0x8c1d('0xb')][_0x3a6a65['uniqueid']][_0x20457f][_0x8c1d('0x4b')]=moment()[_0x8c1d('0x39')](_0x8c1d('0x2c'));this[_0x8c1d('0xb')][_0x3a6a65[_0x8c1d('0x26')]][_0x20457f]['lastevent']=_0x8c1d('0x5b');this[_0x8c1d('0xb')][_0x3a6a65[_0x8c1d('0x26')]][_0x20457f][_0x8c1d('0x50')]=_0x8c1d('0x5b');logger[_0x8c1d('0x34')]('[%s][voiceAgentReport][queuecallerabandon]\x20sending\x20agentqueuecallerabandon\x20event:',_0x3a6a65[_0x8c1d('0x26')],util[_0x8c1d('0x2a')](this[_0x8c1d('0xb')][_0x3a6a65['uniqueid']][_0x20457f],{'showHidden':![],'depth':null}));ami[_0x8c1d('0x21')](_0x8c1d('0x5c'),this[_0x8c1d('0xb')][_0x3a6a65[_0x8c1d('0x26')]][_0x20457f]);}}}}}catch(_0x423dc2){logger[_0x8c1d('0x3b')](_0x8c1d('0x5d'),_0x3a6a65[_0x8c1d('0x26')],util['inspect'](_0x423dc2,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x8c1d('0x18')]=function(_0x85ce54){try{if(this[_0x8c1d('0x23')](_0x85ce54)){logger['debug']('[%s][voiceAgentReport][agentcomplete]\x20event:',_0x85ce54[_0x8c1d('0x26')],util[_0x8c1d('0x2a')](_0x85ce54,{'showHidden':![],'depth':null}));if(this[_0x8c1d('0xb')][_0x85ce54['uniqueid']]){for(var _0x369d8e in this[_0x8c1d('0xb')][_0x85ce54['uniqueid']]){if(this[_0x8c1d('0xb')][_0x85ce54[_0x8c1d('0x26')]][_0x8c1d('0x3d')](_0x369d8e)){if(this[_0x8c1d('0xb')][_0x85ce54[_0x8c1d('0x26')]][_0x369d8e][_0x8c1d('0x3f')]&&!this['channels'][_0x85ce54[_0x8c1d('0x26')]][_0x369d8e]['agentcomplete']){logger[_0x8c1d('0x25')](_0x8c1d('0x5e'),_0x85ce54[_0x8c1d('0x26')],this[_0x8c1d('0xb')][_0x85ce54[_0x8c1d('0x26')]][_0x369d8e]['membername'],_0x369d8e);this[_0x8c1d('0xb')][_0x85ce54[_0x8c1d('0x26')]][_0x369d8e][_0x8c1d('0x17')]=!![];this[_0x8c1d('0xb')][_0x85ce54[_0x8c1d('0x26')]][_0x369d8e][_0x8c1d('0x5f')]=moment()['format'](_0x8c1d('0x2c'));this['channels'][_0x85ce54[_0x8c1d('0x26')]][_0x369d8e][_0x8c1d('0x4e')]=_0x8c1d('0x60');this[_0x8c1d('0xb')][_0x85ce54[_0x8c1d('0x26')]][_0x369d8e][_0x8c1d('0x50')]=_0x85ce54[_0x8c1d('0x50')]==_0x8c1d('0x61')?_0x8c1d('0x62'):_0x85ce54[_0x8c1d('0x50')];this[_0x8c1d('0xb')][_0x85ce54[_0x8c1d('0x26')]][_0x369d8e][_0x8c1d('0x63')]=_0x85ce54[_0x8c1d('0x63')];if(this[_0x8c1d('0xc')][_0x85ce54[_0x8c1d('0x2b')]]&&this['voiceQueues'][_0x85ce54[_0x8c1d('0x2b')]][_0x8c1d('0x64')]){this[_0x8c1d('0xb')][_0x85ce54[_0x8c1d('0x26')]][_0x369d8e]['acwtime']=this[_0x8c1d('0xc')][_0x85ce54[_0x8c1d('0x2b')]][_0x8c1d('0x65')];this[_0x8c1d('0xb')][_0x85ce54[_0x8c1d('0x26')]][_0x369d8e][_0x8c1d('0x66')]=!![];}this[_0x8c1d('0xd')][_0x85ce54['interface']]=_[_0x8c1d('0x67')](this['agents'][_0x85ce54['interface']],[_0x8c1d('0x2b'),_0x8c1d('0x46')]);logger[_0x8c1d('0x34')](_0x8c1d('0x68'),_0x85ce54[_0x8c1d('0x26')],util[_0x8c1d('0x2a')](this['channels'][_0x85ce54[_0x8c1d('0x26')]][_0x369d8e],{'showHidden':![],'depth':null}));ami[_0x8c1d('0x21')](_0x8c1d('0x69'),this['channels'][_0x85ce54[_0x8c1d('0x26')]][_0x369d8e]);logger[_0x8c1d('0x34')](_0x8c1d('0x6a'),_0x85ce54['uniqueid'],util[_0x8c1d('0x2a')]({'id':this[_0x8c1d('0xd')][_0x85ce54[_0x8c1d('0x47')]]['id'],'destaccountcode':_0x85ce54[_0x8c1d('0x6b')]},{'showHidden':![],'depth':null}));this[_0x8c1d('0x21')](util[_0x8c1d('0x39')](_0x8c1d('0x3a'),_0x85ce54[_0x8c1d('0x27')]),_0x8c1d('0x6c'),{'id':this[_0x8c1d('0xd')][_0x85ce54[_0x8c1d('0x47')]]['id'],'destaccountcode':Number(_0x85ce54['destaccountcode'])});}}}}}}catch(_0x244507){logger[_0x8c1d('0x3b')](_0x8c1d('0x6d'),_0x85ce54[_0x8c1d('0x26')],util['inspect'](_0x244507,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x8c1d('0x22')]['syncVarSet']=function(_0x33fc0b){try{if(this[_0x8c1d('0x23')](_0x33fc0b)){logger[_0x8c1d('0x34')](_0x8c1d('0x6e'),_0x33fc0b[_0x8c1d('0x26')],util['inspect'](_0x33fc0b,{'showHidden':![],'depth':null}));this['addVariable'](_0x33fc0b[_0x8c1d('0x26')],_[_0x8c1d('0x6f')](_0x33fc0b[_0x8c1d('0x70')])[0x0],_0x33fc0b[_0x8c1d('0x71')]);if(this[_0x8c1d('0xb')][_0x33fc0b[_0x8c1d('0x26')]]){for(var _0x25bbc8 in this[_0x8c1d('0xb')][_0x33fc0b[_0x8c1d('0x26')]]){if(this[_0x8c1d('0xb')][_0x33fc0b['uniqueid']][_0x8c1d('0x3d')](_0x25bbc8)){logger[_0x8c1d('0x25')](_0x8c1d('0x72'),_0x33fc0b[_0x8c1d('0x26')],_0x25bbc8,_[_0x8c1d('0x6f')](_0x33fc0b[_0x8c1d('0x70')])[0x0],_0x33fc0b[_0x8c1d('0x71')]);if(_[_0x8c1d('0x24')](this[_0x8c1d('0xb')][_0x33fc0b[_0x8c1d('0x26')]][_0x25bbc8][_0x8c1d('0xe')])){this[_0x8c1d('0xb')][_0x33fc0b[_0x8c1d('0x26')]][_0x25bbc8][_0x8c1d('0xe')]={};}this[_0x8c1d('0xb')][_0x33fc0b['uniqueid']][_0x25bbc8][_0x8c1d('0xe')]=this['variables'][_0x33fc0b[_0x8c1d('0x26')]];}}}}}catch(_0x28a6d9){logger[_0x8c1d('0x3b')]('[%s][voiceAgentReport][varset]',_0x33fc0b[_0x8c1d('0x26')],util['inspect'](_0x28a6d9,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x8c1d('0x73')]=function(_0x12bfdf,_0x43261a,_0x482102){var _0x3fb3ac=[_0x8c1d('0x74'),_0x8c1d('0x75'),_0x8c1d('0x76'),_0x8c1d('0x77'),_0x8c1d('0x78'),_0x8c1d('0x79'),_0x8c1d('0x7a'),_0x8c1d('0x7b'),_0x8c1d('0x7c'),'sipuri',_0x8c1d('0x7d'),_0x8c1d('0x7e'),'membercalls','memberdynamic',_0x8c1d('0x7f'),'memberlastcall','membername',_0x8c1d('0x80'),_0x8c1d('0x81')];if(!_[_0x8c1d('0x82')](_0x43261a)&&!_[_0x8c1d('0x83')](_0x3fb3ac,_0x43261a)){if(_[_0x8c1d('0x24')](this[_0x8c1d('0xe')][_0x12bfdf])){this[_0x8c1d('0xe')][_0x12bfdf]={};}this['variables'][_0x12bfdf][_0x43261a]=_0x482102;}};VoiceAgentReport[_0x8c1d('0x22')][_0x8c1d('0x1c')]=function(_0x2b8d3d){try{if(this[_0x8c1d('0x23')](_0x2b8d3d)){logger[_0x8c1d('0x34')]('[%s][voiceAgentReport][hangup]\x20event:',_0x2b8d3d['uniqueid'],util[_0x8c1d('0x2a')](_0x2b8d3d,{'showHidden':![],'depth':null}));if(this['channels'][_0x2b8d3d[_0x8c1d('0x26')]]){for(var _0x92df8e in this[_0x8c1d('0xb')][_0x2b8d3d[_0x8c1d('0x26')]]){if(this[_0x8c1d('0xb')][_0x2b8d3d[_0x8c1d('0x26')]][_0x8c1d('0x3d')](_0x92df8e)){if(this[_0x8c1d('0xb')][_0x2b8d3d[_0x8c1d('0x26')]][_0x92df8e][_0x8c1d('0x50')]==_0x8c1d('0x61')&&this[_0x8c1d('0xb')][_0x2b8d3d[_0x8c1d('0x26')]][_0x92df8e][_0x8c1d('0x17')]){logger[_0x8c1d('0x25')](_0x8c1d('0x84'),_0x2b8d3d['uniqueid'],_0x92df8e);this['channels'][_0x2b8d3d['uniqueid']][_0x92df8e][_0x8c1d('0x5f')]=moment()['format'](_0x8c1d('0x2c'));}}}logger[_0x8c1d('0x34')](_0x8c1d('0x85'),_0x2b8d3d[_0x8c1d('0x26')],util[_0x8c1d('0x2a')](_[_0x8c1d('0x86')](this[_0x8c1d('0xb')][_0x2b8d3d['uniqueid']]),{'showHidden':![],'depth':null}));ami[_0x8c1d('0x21')]('custom:voiceAgentReport',_[_0x8c1d('0x86')](this[_0x8c1d('0xb')][_0x2b8d3d[_0x8c1d('0x26')]]));delete this[_0x8c1d('0xb')][_0x2b8d3d[_0x8c1d('0x26')]];}if(this[_0x8c1d('0xe')][_0x2b8d3d[_0x8c1d('0x26')]]){delete this['variables'][_0x2b8d3d[_0x8c1d('0x26')]];}}}catch(_0x5434c5){logger[_0x8c1d('0x3b')](_0x8c1d('0x87'),_0x2b8d3d[_0x8c1d('0x26')],util['inspect'](_0x5434c5,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x8c1d('0x88')]=function(_0x235d08){try{if(this[_0x8c1d('0x23')](_0x235d08)){logger[_0x8c1d('0x34')](_0x8c1d('0x89'),_0x235d08['uniqueid'],util[_0x8c1d('0x2a')](_0x235d08,{'showHidden':![],'depth':null}));if(this[_0x8c1d('0xb')][_0x235d08[_0x8c1d('0x8a')]]){for(var _0x24a601 in this['channels'][_0x235d08[_0x8c1d('0x8a')]]){if(this['channels'][_0x235d08[_0x8c1d('0x8a')]][_0x8c1d('0x3d')](_0x24a601)){if(_0x235d08[_0x8c1d('0x8b')]===_0x24a601){logger[_0x8c1d('0x25')](_0x8c1d('0x8c'),_0x235d08[_0x8c1d('0x26')],this[_0x8c1d('0xb')][_0x235d08[_0x8c1d('0x8a')]][_0x24a601]['membername'],_0x24a601);var _0x14c97b=moment();this[_0x8c1d('0xb')][_0x235d08[_0x8c1d('0x8a')]][_0x24a601][_0x8c1d('0x17')]=!![];this[_0x8c1d('0xb')][_0x235d08['transfereeuniqueid']][_0x24a601][_0x8c1d('0x5f')]=moment()[_0x8c1d('0x39')](_0x8c1d('0x2c'));this['channels'][_0x235d08[_0x8c1d('0x8a')]][_0x24a601]['lastevent']=_0x8c1d('0x60');this[_0x8c1d('0xb')][_0x235d08['transfereeuniqueid']][_0x24a601]['reason']=_0x8c1d('0x61');this[_0x8c1d('0xb')][_0x235d08[_0x8c1d('0x8a')]][_0x24a601][_0x8c1d('0x63')]=_0x14c97b[_0x8c1d('0x8d')](this[_0x8c1d('0xb')][_0x235d08[_0x8c1d('0x8a')]][_0x24a601]['agentconnectAt'],_0x8c1d('0x8e'));}}}}if(this[_0x8c1d('0xb')][_0x235d08['secondtransfereruniqueid']]){var _0x51546e=this[_0x8c1d('0xb')][_0x235d08[_0x8c1d('0x8f')]];this['channels'][_0x235d08[_0x8c1d('0x8f')]]=this[_0x8c1d('0xb')][_0x235d08['transfereeuniqueid']];this[_0x8c1d('0xb')][_0x235d08[_0x8c1d('0x8a')]]=_0x51546e;}}}catch(_0x1c52f2){logger['error'](_0x8c1d('0x90'),_0x235d08[_0x8c1d('0x26')],util[_0x8c1d('0x2a')](_0x1c52f2,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x8c1d('0x22')][_0x8c1d('0x20')]=function(_0x5bbd1b){try{if(this[_0x8c1d('0x23')](_0x5bbd1b)){logger['debug'](_0x8c1d('0x91'),_0x5bbd1b[_0x8c1d('0x26')],util[_0x8c1d('0x2a')](_0x5bbd1b,{'showHidden':![],'depth':null}));if(this[_0x8c1d('0xb')][_0x5bbd1b[_0x8c1d('0x8a')]]){for(var _0x55deae in this[_0x8c1d('0xb')][_0x5bbd1b[_0x8c1d('0x8a')]]){if(this[_0x8c1d('0xb')][_0x5bbd1b['transfereeuniqueid']][_0x8c1d('0x3d')](_0x55deae)){if(_0x5bbd1b[_0x8c1d('0x92')]===_0x55deae){logger[_0x8c1d('0x25')](_0x8c1d('0x93'),_0x5bbd1b[_0x8c1d('0x26')],this[_0x8c1d('0xb')][_0x5bbd1b[_0x8c1d('0x8a')]][_0x55deae][_0x8c1d('0x27')],_0x55deae);var _0x4601d1=moment();this[_0x8c1d('0xb')][_0x5bbd1b[_0x8c1d('0x8a')]][_0x55deae]['agentcomplete']=!![];this['channels'][_0x5bbd1b[_0x8c1d('0x8a')]][_0x55deae][_0x8c1d('0x5f')]=_0x4601d1;this[_0x8c1d('0xb')][_0x5bbd1b[_0x8c1d('0x8a')]][_0x55deae]['lastevent']=_0x8c1d('0x60');this[_0x8c1d('0xb')][_0x5bbd1b[_0x8c1d('0x8a')]][_0x55deae][_0x8c1d('0x50')]=_0x8c1d('0x61');this['channels'][_0x5bbd1b['transfereeuniqueid']][_0x55deae]['talktime']=_0x4601d1[_0x8c1d('0x8d')](this[_0x8c1d('0xb')][_0x5bbd1b[_0x8c1d('0x8a')]][_0x55deae]['agentconnectAt'],_0x8c1d('0x8e'));}}}}}}catch(_0x2eda37){logger[_0x8c1d('0x3b')](_0x8c1d('0x94'),_0x5bbd1b['uniqueid'],util[_0x8c1d('0x2a')](_0x2eda37,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x8c1d('0x22')][_0x8c1d('0x1d')]=function(_0x8c7c16){var _0x52ca51='';try{if(this[_0x8c1d('0x23')](_0x8c7c16)){logger['debug'](_0x8c1d('0x95'),_0x8c7c16['uniqueid'],util[_0x8c1d('0x2a')](_0x8c7c16,{'showHidden':![],'depth':null}));if(_0x8c7c16[_0x8c1d('0x96')]){_0x52ca51=_0x8c7c16[_0x8c1d('0x96')][_0x8c1d('0x97')](0x0,_0x8c7c16['channel'][_0x8c1d('0x98')]('-'));if(this['agents'][_0x52ca51]){logger[_0x8c1d('0x25')](_0x8c1d('0x99'),_0x8c7c16[_0x8c1d('0x26')],_0x52ca51);this[_0x8c1d('0xd')][_0x52ca51][_0x8c1d('0x9a')]=!![];}}}}catch(_0x4694b4){logger[_0x8c1d('0x3b')](_0x8c1d('0x9b'),_0x8c7c16[_0x8c1d('0x26')],util[_0x8c1d('0x2a')](_0x4694b4,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x8c1d('0x22')][_0x8c1d('0x9c')]=function(_0x433282){var _0x14293c='';try{if(this[_0x8c1d('0x23')](_0x433282)){logger[_0x8c1d('0x34')](_0x8c1d('0x9d'),_0x433282[_0x8c1d('0x26')],util[_0x8c1d('0x2a')](_0x433282,{'showHidden':![],'depth':null}));if(_0x433282[_0x8c1d('0x96')]){_0x14293c=_0x433282[_0x8c1d('0x96')]['substring'](0x0,_0x433282[_0x8c1d('0x96')]['lastIndexOf']('-'));if(this[_0x8c1d('0xd')][_0x14293c]){logger['info']('[%s][voiceAgentReport][musiconholdstop]\x20interface:%s',_0x433282[_0x8c1d('0x26')],_0x14293c);this[_0x8c1d('0xd')][_0x14293c][_0x8c1d('0x9a')]=![];}}}}catch(_0x2c9791){logger[_0x8c1d('0x3b')](_0x8c1d('0x9e'),_0x433282[_0x8c1d('0x26')],util[_0x8c1d('0x2a')](_0x2c9791,{'showHidden':![],'depth':null}));}};module[_0x8c1d('0x9f')]=VoiceAgentReport;
\ No newline at end of file
+var _0x2814=['seconds','secondtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]','transfereruniqueid','[%s][voiceAgentReport][blindtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','[%s][voiceAgentReport][blindtransfer]','[%s][voiceAgentReport][musiconholdstart]\x20event:','channel','substring','lastIndexOf','[%s][voiceAgentReport][musiconholdstart]\x20interface:%s','onhold','[%s][voiceAgentReport][musiconholdstart]','[%s][voiceAgentReport][musiconholdstop]\x20event:','[%s][voiceAgentReport][musiconholdstop]\x20interface:%s','[%s][voiceAgentReport][musiconholdstop]','lodash','ioredis','../../../config/logger','ami','../ami','redis','defaults','localhost','socket.io-emitter','channels','voiceQueues','agents','variables','agentcalled','syncAgentCalled','bind','agentconnect','syncAgentConnect','agentringnoanswer','syncAgentRingNoAnswer','queuecallerabandon','syncQueueCallerAbandon','syncAgentComplete','varset','hangup','syncMusicOnHoldStart','syncMusicOnHoldStop','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','prototype','emit','isUndefined','isNotNull','info','[%s][voiceAgentReport][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','uniqueid','membername','destuniqueid','debug','[%s][voiceAgentReport][agentcalled]\x20event:','inspect','interface','format','YYYY-MM-DD\x20HH:mm:ss','called','mandatoryDisposition','type','inbound','voice','assign','event','calleridnum','queue','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:called\x20event:','user:%s','[%s][voiceAgentReport][agentcalled]','hasOwnProperty','agentconnectAt','connectedlinename','connectedlinenum','destchannelstatedesc','holdtime','lastevent','voiceChannels','routealias','pick','destconnectedlinenum','name','exten','custom:agentconnect','agentcomplete','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:answered_elsewhere','agentringnoanswerAt','answeredelsewheredestinationuniqueid','answeredelsewheremembername','answered_elsewhere','reason','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentansweredelsewhere\x20event:','custom:agentansweredelsewhere','[%s][voiceAgentReport][agentconnect]\x20Else\x20path\x20should\x20never\x20be\x20taken','[%s][voiceAgentReport][agentringnoanswer]\x20event:','[%s][voiceAgentReport][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:rejected','rejected','[%s][voiceAgentReport][agentringnoanswer]\x20sending\x20agentringnoanswer\x20event:','custom:agentringnoanswer','error','[%s][voiceAgentReport][agentringnoanswer]','[%s][voiceAgentReport][queuecallerabandon]\x20event:','[%s][voiceAgentReport][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','abandoned','custom:agentqueuecallerabandon','[%s][voiceAgentReport][queuecallerabandon]','[%s][voiceAgentReport][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','complete','talktime','acw','acwtime','acwTimeout','agentacw','omit','[%s][voiceAgentReport][agentcomplete]\x20sending\x20agentcomplete\x20event:','custom:agentcomplete','[%s][voiceAgentReport][agentcomplete]\x20sending\x20user:agentcomplete\x20event:','destaccountcode','[%s][voiceAgentReport][varset]\x20event:','addVariable','keys','variable','value','[%s][voiceAgentReport][varset]\x20destuniqueid:%s\x20variable:%s\x20value:%s','[%s][voiceAgentReport][varset]','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer','membercalls','memberdynamic','memberinterface','memberlastcall','memberpenalty','memberrealtime','includes','syncHangup','[%s][voiceAgentReport][hangup]\x20event:','transfer','[%s][voiceAgentReport][hangup]\x20sending\x20voiceAgentReport\x20event:','custom:voiceAgentReport','[%s][voiceAgentReport][attendedtransfer]\x20event:','transfereeuniqueid','origtransfereruniqueid','diff'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x2814,0xab));var _0x4281=function(_0x5dba5f,_0x77a7c2){_0x5dba5f=_0x5dba5f-0x0;var _0x2f3e28=_0x2814[_0x5dba5f];return _0x2f3e28;};'use strict';var _=require(_0x4281('0x0'));var moment=require('moment');var util=require('util');var Redis=require(_0x4281('0x1'));var config=require('../../../config/environment');var logger=require(_0x4281('0x2'))(_0x4281('0x3'));var ami=require(_0x4281('0x4'));config[_0x4281('0x5')]=_[_0x4281('0x6')](config[_0x4281('0x5')],{'host':_0x4281('0x7'),'port':0x18eb});var io=require(_0x4281('0x8'))(new Redis(config[_0x4281('0x5')]));function VoiceAgentReport(_0x43aef0){this[_0x4281('0x9')]={};this['voiceChannels']=_0x43aef0[_0x4281('0x9')];this['voiceQueues']=_0x43aef0[_0x4281('0xa')];this['agents']=_0x43aef0[_0x4281('0xb')];this[_0x4281('0xc')]={};ami['on'](_0x4281('0xd'),this[_0x4281('0xe')][_0x4281('0xf')](this));ami['on'](_0x4281('0x10'),this[_0x4281('0x11')][_0x4281('0xf')](this));ami['on'](_0x4281('0x12'),this[_0x4281('0x13')][_0x4281('0xf')](this));ami['on'](_0x4281('0x14'),this[_0x4281('0x15')]['bind'](this));ami['on']('agentcomplete',this[_0x4281('0x16')]['bind'](this));ami['on'](_0x4281('0x17'),this['syncVarSet'][_0x4281('0xf')](this));ami['on'](_0x4281('0x18'),this['syncHangup'][_0x4281('0xf')](this));ami['on']('musiconholdstart',this[_0x4281('0x19')][_0x4281('0xf')](this));ami['on']('musiconholdstop',this[_0x4281('0x1a')]['bind'](this));ami['on'](_0x4281('0x1b'),this[_0x4281('0x1c')][_0x4281('0xf')](this));ami['on'](_0x4281('0x1d'),this[_0x4281('0x1e')][_0x4281('0xf')](this));}VoiceAgentReport[_0x4281('0x1f')]['emit']=function(_0x3087ad,_0x3521cc,_0x124f48){io['to'](_0x3087ad)[_0x4281('0x20')](_0x3521cc,_0x124f48);};VoiceAgentReport['prototype']['isNotNull']=function(_0xb3fa9e){return _0xb3fa9e!==null&&!_[_0x4281('0x21')](_0xb3fa9e);};VoiceAgentReport[_0x4281('0x1f')][_0x4281('0xe')]=function(_0x51ea9c){try{if(this[_0x4281('0x22')](_0x51ea9c)){logger[_0x4281('0x23')](_0x4281('0x24'),_0x51ea9c[_0x4281('0x25')],_0x51ea9c[_0x4281('0x26')],_0x51ea9c[_0x4281('0x27')]);logger[_0x4281('0x28')](_0x4281('0x29'),_0x51ea9c[_0x4281('0x25')],util[_0x4281('0x2a')](_0x51ea9c,{'showHidden':![],'depth':null}));if(_[_0x4281('0x21')](this['channels'][_0x51ea9c[_0x4281('0x25')]])){this[_0x4281('0x9')][_0x51ea9c[_0x4281('0x25')]]={};}var _0xdac42c=this[_0x4281('0xb')][_0x51ea9c[_0x4281('0x2b')]];var _0x14bd02=this['channels'][_0x51ea9c[_0x4281('0x25')]][_0x51ea9c[_0x4281('0x27')]];var _0xf5ee64=this[_0x4281('0xa')][_0x51ea9c['queue']];var _0x1b89fe=this[_0x4281('0xc')][_0x51ea9c[_0x4281('0x25')]];if(_['isUndefined'](_0x14bd02)){_0x14bd02={'agentcalledAt':moment()[_0x4281('0x2c')](_0x4281('0x2d')),'lastevent':_0x4281('0x2e'),'mandatoryDisposition':_0xf5ee64&&_0xf5ee64['mandatoryDisposition']?_0xf5ee64[_0x4281('0x2f')]:![],'type':_0xf5ee64&&_0xf5ee64['type']?_0xf5ee64[_0x4281('0x30')]:_0x4281('0x31'),'variables':_0x1b89fe,'motionChannel':_0x4281('0x32')};}Object[_0x4281('0x33')](_0x14bd02,_['omit'](_0x51ea9c,[_0x4281('0x34'),'privilege']));this['channels'][_0x51ea9c[_0x4281('0x25')]][_0x51ea9c[_0x4281('0x27')]]=_0x14bd02;logger[_0x4281('0x28')]('[%s][voiceAgentReport][agentcalled]\x20sending\x20agentcalled\x20event:',_0x51ea9c[_0x4281('0x25')],util[_0x4281('0x2a')](_0x14bd02,{'showHidden':![],'depth':null}));ami[_0x4281('0x20')]('custom:agentcalled',_0x14bd02);var _0x284c64={'id':_0xdac42c['id'],'calleridnum':_0x14bd02[_0x4281('0x35')],'queue':_0x14bd02[_0x4281('0x36')],'variables':_0x14bd02['variables'],'uniqueid':_0x51ea9c[_0x4281('0x25')]};logger[_0x4281('0x28')](_0x4281('0x37'),_0x51ea9c[_0x4281('0x25')],util[_0x4281('0x2a')](_0x284c64,{'showHidden':![],'depth':null}));this[_0x4281('0x20')](util[_0x4281('0x2c')](_0x4281('0x38'),_0x51ea9c[_0x4281('0x26')]),'user:called',_0x284c64);}}catch(_0x1d2705){logger['error'](_0x4281('0x39'),_0x51ea9c[_0x4281('0x25')],util[_0x4281('0x2a')](_0x1d2705,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x4281('0x1f')][_0x4281('0x11')]=function(_0x2581c9){try{if(this[_0x4281('0x22')](_0x2581c9)){if(this[_0x4281('0x9')][_0x2581c9[_0x4281('0x25')]]){for(var _0x3cf64f in this['channels'][_0x2581c9[_0x4281('0x25')]]){if(this[_0x4281('0x9')][_0x2581c9[_0x4281('0x25')]][_0x4281('0x3a')](_0x3cf64f)){if(_0x2581c9['destuniqueid']===_0x3cf64f){logger[_0x4281('0x23')]('[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect',_0x2581c9[_0x4281('0x25')],_0x2581c9[_0x4281('0x26')],_0x2581c9[_0x4281('0x27')]);this[_0x4281('0x9')][_0x2581c9['uniqueid']][_0x3cf64f][_0x4281('0x3b')]=moment()[_0x4281('0x2c')](_0x4281('0x2d'));this[_0x4281('0x9')][_0x2581c9['uniqueid']][_0x3cf64f][_0x4281('0x3c')]=_0x2581c9['connectedlinename'];this[_0x4281('0x9')][_0x2581c9[_0x4281('0x25')]][_0x3cf64f][_0x4281('0x3d')]=_0x2581c9[_0x4281('0x3d')];this[_0x4281('0x9')][_0x2581c9['uniqueid']][_0x3cf64f]['destchannelstate']=_0x2581c9['destchannelstate'];this[_0x4281('0x9')][_0x2581c9['uniqueid']][_0x3cf64f][_0x4281('0x3e')]=_0x2581c9[_0x4281('0x3e')];this[_0x4281('0x9')][_0x2581c9[_0x4281('0x25')]][_0x3cf64f][_0x4281('0x3f')]=_0x2581c9['holdtime'];this[_0x4281('0x9')][_0x2581c9['uniqueid']][_0x3cf64f][_0x4281('0x40')]='connect';if(this['voiceChannels'][this['channels'][_0x2581c9[_0x4281('0x25')]][_0x3cf64f][_0x4281('0x25')]]){var _0x3dff08=this[_0x4281('0x41')][this[_0x4281('0x9')][_0x2581c9[_0x4281('0x25')]][_0x3cf64f][_0x4281('0x25')]]['routealias'];this['channels'][_0x2581c9[_0x4281('0x25')]][_0x3cf64f][_0x4281('0x42')]=_0x3dff08;_0x2581c9[_0x4281('0x42')]=_0x3dff08;}_['merge'](this[_0x4281('0xb')][_0x2581c9[_0x4281('0x2b')]],_[_0x4281('0x43')](_0x2581c9,[_0x4281('0x36'),_0x4281('0x44'),_0x4281('0x42')]));var _0x3a8fd8=this[_0x4281('0xb')][_0x2581c9[_0x4281('0x2b')]];var _0x296580={'id':_0x3a8fd8['id'],'name':_0x3a8fd8[_0x4281('0x45')],'agentconnected':!![],'destaccountcode':_0x3a8fd8['accountcode'],'destconnectedlinenum':this[_0x4281('0x9')][_0x2581c9['uniqueid']][_0x2581c9[_0x4281('0x27')]][_0x4281('0x46')],'queue':this[_0x4281('0x9')][_0x2581c9['uniqueid']][_0x2581c9['destuniqueid']][_0x4281('0x36')],'routealias':this['channels'][_0x2581c9['uniqueid']][_0x2581c9['destuniqueid']][_0x4281('0x42')],'uniqueid':this[_0x4281('0x9')][_0x2581c9['uniqueid']][_0x2581c9[_0x4281('0x27')]]['uniqueid']};ami[_0x4281('0x20')](_0x4281('0x47'),this[_0x4281('0x9')][_0x2581c9[_0x4281('0x25')]][_0x2581c9[_0x4281('0x27')]]);this['emit'](util[_0x4281('0x2c')]('user:%s',_0x2581c9[_0x4281('0x26')]),'user:agentconnect',_0x296580);}else if(!this[_0x4281('0x9')][_0x2581c9['uniqueid']][_0x3cf64f][_0x4281('0x12')]&&!this[_0x4281('0x9')][_0x2581c9['uniqueid']][_0x3cf64f][_0x4281('0x48')]){logger['info'](_0x4281('0x49'),_0x2581c9['uniqueid'],this[_0x4281('0x9')][_0x2581c9[_0x4281('0x25')]][_0x3cf64f][_0x4281('0x26')],_0x3cf64f);this[_0x4281('0x9')][_0x2581c9[_0x4281('0x25')]][_0x3cf64f][_0x4281('0x12')]=!![];this[_0x4281('0x9')][_0x2581c9[_0x4281('0x25')]][_0x3cf64f][_0x4281('0x4a')]=moment()['format'](_0x4281('0x2d'));this['channels'][_0x2581c9[_0x4281('0x25')]][_0x3cf64f][_0x4281('0x4b')]=_0x2581c9[_0x4281('0x27')];this[_0x4281('0x9')][_0x2581c9['uniqueid']][_0x3cf64f][_0x4281('0x4c')]=_0x2581c9[_0x4281('0x26')];this['channels'][_0x2581c9[_0x4281('0x25')]][_0x3cf64f][_0x4281('0x40')]=_0x4281('0x4d');this['channels'][_0x2581c9[_0x4281('0x25')]][_0x3cf64f][_0x4281('0x4e')]='answered_elsewhere';logger['debug'](_0x4281('0x4f'),_0x2581c9[_0x4281('0x25')],util[_0x4281('0x2a')](this[_0x4281('0x9')][_0x2581c9[_0x4281('0x25')]][_0x3cf64f],{'showHidden':![],'depth':null}));ami['emit'](_0x4281('0x50'),this['channels'][_0x2581c9[_0x4281('0x25')]][_0x3cf64f]);}else{logger[_0x4281('0x28')](_0x4281('0x51'),_0x2581c9[_0x4281('0x25')]);}}}}}}catch(_0x13ae1c){logger['error']('[%s][voiceAgentReport][agentconnect]',_0x2581c9[_0x4281('0x25')],util['inspect'](_0x13ae1c,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x4281('0x1f')][_0x4281('0x13')]=function(_0x4c754e){try{if(this['isNotNull'](_0x4c754e)){logger[_0x4281('0x28')](_0x4281('0x52'),_0x4c754e['uniqueid'],util[_0x4281('0x2a')](_0x4c754e,{'showHidden':![],'depth':null}));if(this['channels'][_0x4c754e[_0x4281('0x25')]]&&this[_0x4281('0x9')][_0x4c754e[_0x4281('0x25')]][_0x4c754e[_0x4281('0x27')]]){logger['info'](_0x4281('0x53'),_0x4c754e[_0x4281('0x25')],_0x4c754e[_0x4281('0x26')],_0x4c754e[_0x4281('0x27')]);var _0x2acc27=this[_0x4281('0xb')][_0x4c754e['interface']];var _0x48463a=this[_0x4281('0x9')][_0x4c754e[_0x4281('0x25')]][_0x4c754e['destuniqueid']];_0x48463a[_0x4281('0x12')]=!![];_0x48463a[_0x4281('0x4a')]=moment()['format'](_0x4281('0x2d'));_0x48463a[_0x4281('0x40')]=_0x4281('0x54');_0x48463a[_0x4281('0x4e')]=_0x4281('0x54');var _0x2b9aed={'id':_0x2acc27['id'],'name':_0x2acc27['name'],'queue':_0x48463a[_0x4281('0x36')],'uniqueid':_0x48463a[_0x4281('0x25')]};logger[_0x4281('0x28')](_0x4281('0x55'),_0x4c754e['uniqueid'],util[_0x4281('0x2a')](_0x2b9aed,{'showHidden':![],'depth':null}));this[_0x4281('0x20')](util[_0x4281('0x2c')]('user:%s',_0x2acc27[_0x4281('0x45')]),'user:agentringnoanswer',_0x2b9aed);ami['emit'](_0x4281('0x56'),_0x48463a);this[_0x4281('0x9')][_0x4c754e[_0x4281('0x25')]][_0x4c754e[_0x4281('0x27')]]=Object['assign']({},_0x48463a);}}}catch(_0xbd32bb){logger[_0x4281('0x57')](_0x4281('0x58'),_0x4c754e[_0x4281('0x25')],util[_0x4281('0x2a')](_0xbd32bb,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype']['syncQueueCallerAbandon']=function(_0x964cfa){try{if(this['isNotNull'](_0x964cfa)){logger[_0x4281('0x28')](_0x4281('0x59'),_0x964cfa['uniqueid'],util['inspect'](_0x964cfa,{'showHidden':![],'depth':null}));if(this[_0x4281('0x9')][_0x964cfa[_0x4281('0x25')]]){for(var _0x2cc908 in this[_0x4281('0x9')][_0x964cfa[_0x4281('0x25')]]){if(this[_0x4281('0x9')][_0x964cfa[_0x4281('0x25')]][_0x4281('0x3a')](_0x2cc908)&&!this['channels'][_0x964cfa[_0x4281('0x25')]][_0x2cc908][_0x4281('0x12')]&&!this['channels'][_0x964cfa['uniqueid']][_0x2cc908]['agentcomplete']){logger[_0x4281('0x23')](_0x4281('0x5a'),_0x964cfa[_0x4281('0x25')],this[_0x4281('0x9')][_0x964cfa[_0x4281('0x25')]][_0x2cc908][_0x4281('0x26')],_0x2cc908);this[_0x4281('0x9')][_0x964cfa[_0x4281('0x25')]][_0x2cc908][_0x4281('0x12')]=!![];this[_0x4281('0x9')][_0x964cfa[_0x4281('0x25')]][_0x2cc908][_0x4281('0x4a')]=moment()[_0x4281('0x2c')](_0x4281('0x2d'));this[_0x4281('0x9')][_0x964cfa[_0x4281('0x25')]][_0x2cc908]['lastevent']=_0x4281('0x5b');this['channels'][_0x964cfa[_0x4281('0x25')]][_0x2cc908]['reason']=_0x4281('0x5b');logger[_0x4281('0x28')]('[%s][voiceAgentReport][queuecallerabandon]\x20sending\x20agentqueuecallerabandon\x20event:',_0x964cfa[_0x4281('0x25')],util[_0x4281('0x2a')](this[_0x4281('0x9')][_0x964cfa['uniqueid']][_0x2cc908],{'showHidden':![],'depth':null}));ami[_0x4281('0x20')](_0x4281('0x5c'),this[_0x4281('0x9')][_0x964cfa[_0x4281('0x25')]][_0x2cc908]);}}}}}catch(_0x523f26){logger[_0x4281('0x57')](_0x4281('0x5d'),_0x964cfa[_0x4281('0x25')],util['inspect'](_0x523f26,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x4281('0x1f')][_0x4281('0x16')]=function(_0x562638){try{if(this[_0x4281('0x22')](_0x562638)){logger[_0x4281('0x28')]('[%s][voiceAgentReport][agentcomplete]\x20event:',_0x562638[_0x4281('0x25')],util[_0x4281('0x2a')](_0x562638,{'showHidden':![],'depth':null}));if(this[_0x4281('0x9')][_0x562638[_0x4281('0x25')]]){for(var _0x1afaca in this['channels'][_0x562638[_0x4281('0x25')]]){if(this['channels'][_0x562638[_0x4281('0x25')]][_0x4281('0x3a')](_0x1afaca)){if(this[_0x4281('0x9')][_0x562638[_0x4281('0x25')]][_0x1afaca]['agentconnectAt']&&!this[_0x4281('0x9')][_0x562638['uniqueid']][_0x1afaca][_0x4281('0x48')]){logger['info'](_0x4281('0x5e'),_0x562638['uniqueid'],this[_0x4281('0x9')][_0x562638[_0x4281('0x25')]][_0x1afaca][_0x4281('0x26')],_0x1afaca);this[_0x4281('0x9')][_0x562638[_0x4281('0x25')]][_0x1afaca]['agentcomplete']=!![];this[_0x4281('0x9')][_0x562638[_0x4281('0x25')]][_0x1afaca][_0x4281('0x5f')]=moment()[_0x4281('0x2c')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x4281('0x9')][_0x562638[_0x4281('0x25')]][_0x1afaca][_0x4281('0x40')]=_0x4281('0x60');this['channels'][_0x562638[_0x4281('0x25')]][_0x1afaca]['reason']=_0x562638['reason']=='transfer'?'agent':_0x562638[_0x4281('0x4e')];this[_0x4281('0x9')][_0x562638[_0x4281('0x25')]][_0x1afaca][_0x4281('0x61')]=_0x562638[_0x4281('0x61')];if(this['voiceQueues'][_0x562638[_0x4281('0x36')]]&&this[_0x4281('0xa')][_0x562638[_0x4281('0x36')]][_0x4281('0x62')]){this['channels'][_0x562638[_0x4281('0x25')]][_0x1afaca][_0x4281('0x63')]=this['voiceQueues'][_0x562638[_0x4281('0x36')]][_0x4281('0x64')];this[_0x4281('0x9')][_0x562638[_0x4281('0x25')]][_0x1afaca][_0x4281('0x65')]=!![];}this[_0x4281('0xb')][_0x562638['interface']]=_[_0x4281('0x66')](this[_0x4281('0xb')][_0x562638[_0x4281('0x2b')]],[_0x4281('0x36'),_0x4281('0x44')]);logger[_0x4281('0x28')](_0x4281('0x67'),_0x562638[_0x4281('0x25')],util['inspect'](this[_0x4281('0x9')][_0x562638[_0x4281('0x25')]][_0x1afaca],{'showHidden':![],'depth':null}));ami[_0x4281('0x20')](_0x4281('0x68'),this[_0x4281('0x9')][_0x562638[_0x4281('0x25')]][_0x1afaca]);logger[_0x4281('0x28')](_0x4281('0x69'),_0x562638[_0x4281('0x25')],util[_0x4281('0x2a')]({'id':this[_0x4281('0xb')][_0x562638[_0x4281('0x2b')]]['id'],'destaccountcode':_0x562638[_0x4281('0x6a')]},{'showHidden':![],'depth':null}));this['emit'](util[_0x4281('0x2c')](_0x4281('0x38'),_0x562638[_0x4281('0x26')]),'user:agentcomplete',{'id':this[_0x4281('0xb')][_0x562638[_0x4281('0x2b')]]['id'],'destaccountcode':Number(_0x562638['destaccountcode'])});}}}}}}catch(_0x470ad7){logger[_0x4281('0x57')]('[%s][voiceAgentReport][agentcomplete]',_0x562638[_0x4281('0x25')],util['inspect'](_0x470ad7,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x4281('0x1f')]['syncVarSet']=function(_0x1f3b1f){try{if(this[_0x4281('0x22')](_0x1f3b1f)){logger[_0x4281('0x28')](_0x4281('0x6b'),_0x1f3b1f[_0x4281('0x25')],util[_0x4281('0x2a')](_0x1f3b1f,{'showHidden':![],'depth':null}));this[_0x4281('0x6c')](_0x1f3b1f['uniqueid'],_[_0x4281('0x6d')](_0x1f3b1f[_0x4281('0x6e')])[0x0],_0x1f3b1f[_0x4281('0x6f')]);if(this[_0x4281('0x9')][_0x1f3b1f[_0x4281('0x25')]]){for(var _0x15f1f0 in this[_0x4281('0x9')][_0x1f3b1f[_0x4281('0x25')]]){if(this[_0x4281('0x9')][_0x1f3b1f[_0x4281('0x25')]][_0x4281('0x3a')](_0x15f1f0)){logger[_0x4281('0x23')](_0x4281('0x70'),_0x1f3b1f[_0x4281('0x25')],_0x15f1f0,_[_0x4281('0x6d')](_0x1f3b1f[_0x4281('0x6e')])[0x0],_0x1f3b1f['value']);if(_['isUndefined'](this[_0x4281('0x9')][_0x1f3b1f[_0x4281('0x25')]][_0x15f1f0][_0x4281('0xc')])){this['channels'][_0x1f3b1f[_0x4281('0x25')]][_0x15f1f0][_0x4281('0xc')]={};}this[_0x4281('0x9')][_0x1f3b1f[_0x4281('0x25')]][_0x15f1f0]['variables']=this[_0x4281('0xc')][_0x1f3b1f[_0x4281('0x25')]];}}}}}catch(_0x25f58e){logger['error'](_0x4281('0x71'),_0x1f3b1f[_0x4281('0x25')],util['inspect'](_0x25f58e,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype']['addVariable']=function(_0x104370,_0x4b3e83,_0x5bb264){var _0x141d7c=[_0x4281('0x72'),_0x4281('0x73'),'rtpaudioqosjitter',_0x4281('0x74'),_0x4281('0x75'),_0x4281('0x76'),'rtpaudioqosrtt',_0x4281('0x77'),_0x4281('0x78'),_0x4281('0x79'),_0x4281('0x7a'),'bridgepvtcallid',_0x4281('0x7b'),_0x4281('0x7c'),_0x4281('0x7d'),_0x4281('0x7e'),'membername',_0x4281('0x7f'),_0x4281('0x80')];if(!_['isNil'](_0x4b3e83)&&!_[_0x4281('0x81')](_0x141d7c,_0x4b3e83)){if(_[_0x4281('0x21')](this[_0x4281('0xc')][_0x104370])){this['variables'][_0x104370]={};}this[_0x4281('0xc')][_0x104370][_0x4b3e83]=_0x5bb264;}};VoiceAgentReport[_0x4281('0x1f')][_0x4281('0x82')]=function(_0x22699a){try{if(this[_0x4281('0x22')](_0x22699a)){logger[_0x4281('0x28')](_0x4281('0x83'),_0x22699a['uniqueid'],util['inspect'](_0x22699a,{'showHidden':![],'depth':null}));if(this[_0x4281('0x9')][_0x22699a[_0x4281('0x25')]]){for(var _0x504a24 in this[_0x4281('0x9')][_0x22699a[_0x4281('0x25')]]){if(this[_0x4281('0x9')][_0x22699a['uniqueid']]['hasOwnProperty'](_0x504a24)){if(this[_0x4281('0x9')][_0x22699a['uniqueid']][_0x504a24]['reason']==_0x4281('0x84')&&this[_0x4281('0x9')][_0x22699a[_0x4281('0x25')]][_0x504a24][_0x4281('0x48')]){logger[_0x4281('0x23')]('[%s][voiceAgentReport][hangup]\x20destuniqueid:%s',_0x22699a['uniqueid'],_0x504a24);this['channels'][_0x22699a['uniqueid']][_0x504a24][_0x4281('0x5f')]=moment()[_0x4281('0x2c')]('YYYY-MM-DD\x20HH:mm:ss');}}}logger[_0x4281('0x28')](_0x4281('0x85'),_0x22699a[_0x4281('0x25')],util[_0x4281('0x2a')](_['values'](this[_0x4281('0x9')][_0x22699a[_0x4281('0x25')]]),{'showHidden':![],'depth':null}));ami['emit'](_0x4281('0x86'),_['values'](this[_0x4281('0x9')][_0x22699a[_0x4281('0x25')]]));delete this['channels'][_0x22699a[_0x4281('0x25')]];}if(this[_0x4281('0xc')][_0x22699a[_0x4281('0x25')]]){delete this['variables'][_0x22699a['uniqueid']];}}}catch(_0x1e3f7a){logger['error']('[%s][voiceAgentReport][hangup]',_0x22699a[_0x4281('0x25')],util[_0x4281('0x2a')](_0x1e3f7a,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x4281('0x1c')]=function(_0x915141){try{if(this['isNotNull'](_0x915141)){logger[_0x4281('0x28')](_0x4281('0x87'),_0x915141['uniqueid'],util[_0x4281('0x2a')](_0x915141,{'showHidden':![],'depth':null}));if(this[_0x4281('0x9')][_0x915141[_0x4281('0x88')]]){for(var _0x241c6f in this['channels'][_0x915141['transfereeuniqueid']]){if(this['channels'][_0x915141[_0x4281('0x88')]][_0x4281('0x3a')](_0x241c6f)){if(_0x915141[_0x4281('0x89')]===_0x241c6f){logger[_0x4281('0x23')]('[%s][voiceAgentReport][attendedtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete',_0x915141[_0x4281('0x25')],this[_0x4281('0x9')][_0x915141[_0x4281('0x88')]][_0x241c6f][_0x4281('0x26')],_0x241c6f);var _0x26320a=moment();this['channels'][_0x915141[_0x4281('0x88')]][_0x241c6f][_0x4281('0x48')]=!![];this['channels'][_0x915141[_0x4281('0x88')]][_0x241c6f]['agentcompleteAt']=moment()['format'](_0x4281('0x2d'));this[_0x4281('0x9')][_0x915141['transfereeuniqueid']][_0x241c6f][_0x4281('0x40')]=_0x4281('0x60');this['channels'][_0x915141['transfereeuniqueid']][_0x241c6f][_0x4281('0x4e')]=_0x4281('0x84');this[_0x4281('0x9')][_0x915141[_0x4281('0x88')]][_0x241c6f][_0x4281('0x61')]=_0x26320a[_0x4281('0x8a')](this[_0x4281('0x9')][_0x915141['transfereeuniqueid']][_0x241c6f][_0x4281('0x3b')],_0x4281('0x8b'));}}}}if(this['channels'][_0x915141[_0x4281('0x8c')]]){var _0xa188ff=this[_0x4281('0x9')][_0x915141[_0x4281('0x8c')]];this['channels'][_0x915141[_0x4281('0x8c')]]=this[_0x4281('0x9')][_0x915141[_0x4281('0x88')]];this[_0x4281('0x9')][_0x915141['transfereeuniqueid']]=_0xa188ff;}}}catch(_0x1bc9d3){logger['error'](_0x4281('0x8d'),_0x915141[_0x4281('0x25')],util[_0x4281('0x2a')](_0x1bc9d3,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x4281('0x1f')][_0x4281('0x1e')]=function(_0x244f4c){try{if(this[_0x4281('0x22')](_0x244f4c)){logger[_0x4281('0x28')]('[%s][voiceAgentReport][blindtransfer]\x20event:',_0x244f4c[_0x4281('0x25')],util[_0x4281('0x2a')](_0x244f4c,{'showHidden':![],'depth':null}));if(this['channels'][_0x244f4c[_0x4281('0x88')]]){for(var _0x3d39d6 in this['channels'][_0x244f4c[_0x4281('0x88')]]){if(this[_0x4281('0x9')][_0x244f4c[_0x4281('0x88')]][_0x4281('0x3a')](_0x3d39d6)){if(_0x244f4c[_0x4281('0x8e')]===_0x3d39d6){logger[_0x4281('0x23')](_0x4281('0x8f'),_0x244f4c[_0x4281('0x25')],this[_0x4281('0x9')][_0x244f4c[_0x4281('0x88')]][_0x3d39d6][_0x4281('0x26')],_0x3d39d6);var _0xa8465a=moment();this['channels'][_0x244f4c[_0x4281('0x88')]][_0x3d39d6][_0x4281('0x48')]=!![];this[_0x4281('0x9')][_0x244f4c['transfereeuniqueid']][_0x3d39d6][_0x4281('0x5f')]=_0xa8465a;this[_0x4281('0x9')][_0x244f4c['transfereeuniqueid']][_0x3d39d6][_0x4281('0x40')]='complete';this['channels'][_0x244f4c['transfereeuniqueid']][_0x3d39d6][_0x4281('0x4e')]=_0x4281('0x84');this[_0x4281('0x9')][_0x244f4c[_0x4281('0x88')]][_0x3d39d6][_0x4281('0x61')]=_0xa8465a[_0x4281('0x8a')](this[_0x4281('0x9')][_0x244f4c['transfereeuniqueid']][_0x3d39d6][_0x4281('0x3b')],'seconds');}}}}}}catch(_0x405ce9){logger[_0x4281('0x57')](_0x4281('0x90'),_0x244f4c[_0x4281('0x25')],util[_0x4281('0x2a')](_0x405ce9,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x4281('0x19')]=function(_0x2964cf){var _0x370575='';try{if(this[_0x4281('0x22')](_0x2964cf)){logger[_0x4281('0x28')](_0x4281('0x91'),_0x2964cf[_0x4281('0x25')],util[_0x4281('0x2a')](_0x2964cf,{'showHidden':![],'depth':null}));if(_0x2964cf[_0x4281('0x92')]){_0x370575=_0x2964cf[_0x4281('0x92')][_0x4281('0x93')](0x0,_0x2964cf[_0x4281('0x92')][_0x4281('0x94')]('-'));if(this['agents'][_0x370575]){logger[_0x4281('0x23')](_0x4281('0x95'),_0x2964cf[_0x4281('0x25')],_0x370575);this[_0x4281('0xb')][_0x370575][_0x4281('0x96')]=!![];}}}}catch(_0x338154){logger[_0x4281('0x57')](_0x4281('0x97'),_0x2964cf[_0x4281('0x25')],util[_0x4281('0x2a')](_0x338154,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x4281('0x1f')][_0x4281('0x1a')]=function(_0x52a3de){var _0x17fb92='';try{if(this['isNotNull'](_0x52a3de)){logger[_0x4281('0x28')](_0x4281('0x98'),_0x52a3de[_0x4281('0x25')],util[_0x4281('0x2a')](_0x52a3de,{'showHidden':![],'depth':null}));if(_0x52a3de[_0x4281('0x92')]){_0x17fb92=_0x52a3de[_0x4281('0x92')]['substring'](0x0,_0x52a3de['channel'][_0x4281('0x94')]('-'));if(this[_0x4281('0xb')][_0x17fb92]){logger[_0x4281('0x23')](_0x4281('0x99'),_0x52a3de[_0x4281('0x25')],_0x17fb92);this['agents'][_0x17fb92]['onhold']=![];}}}}catch(_0x454a0f){logger['error'](_0x4281('0x9a'),_0x52a3de[_0x4281('0x25')],util[_0x4281('0x2a')](_0x454a0f,{'showHidden':![],'depth':null}));}};module['exports']=VoiceAgentReport;
\ No newline at end of file
index fd48b92..9cff00c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcfdf=['application','applicationdata','appdata','startsWith','CDR(routeAlias)','toLowerCase','[%s][voiceCallReport][newexten]\x20application:%s\x20appdata:%s','subtract','duration','seconds','disposition','merge','includes','lastdata','set','cdr(','match','isNil','[%s][voiceCallReport][newexten]','[%s][voiceCallReport][newstate]\x20event:','answered','answertime','holdtime','diff','destinationchannel','UserId','membername','connectedlinename','routealias','[%s][voiceCallReport][newstate]\x20sending\x20user:agentconnect\x20event:','[%s][voiceCallReport][newstate]','[%s][voiceCallReport][mixMonitorFilename]\x20monitorFilename:%s','monitor','endsWith','.wav49','replace','.WAV','find','monitors','rec','[%s][voiceCallReport][mixMonitorFilename]','[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s','value','syncMixMonitorFilename','variable','xmd-phone','[%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','[%s][voiceCallReport][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','originatecalleridnum','[%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','sipcalluniqueid','mixmonitor_filename','parse','[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s','[%s][voiceCallReport][varset]','[%s][voiceCallReport][hangup]\x20event:','[%s][voiceCallReport][hangup]\x20reason:%s','cause-txt','endtime','billableseconds','user:agentcomplete','length','transferType','then','getSettings','stopRecordingOnTransfer','resolve','Action','StopMixMonitor','catch','event','[%s][voiceCallReport][hangup]\x20sending\x20hangup\x20event:','custom:voiceCallReport','[%s][voiceCallReport][hangup]','syncAttendedTransfer','transfertargetcalleridnum','[%s][voiceCallReport][attendedtransfer]\x20event:','transfereeuniqueid','transfercalleridnum','transferconnectedlinenum','secondtransfereruniqueid','ATTENDED','transfertargetuniqueid','origtransferercalleridnum','origtransfereruniqueid','type','outbound','routeid','origtransfererlinkedid','[%s][voiceCallReport][attendedtransfer]','[%s][voiceCallReport][blindtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','transfereecalleridnum','extension','BLIND','BlindTransfer','transfererchannel','transfereruniqueid','[%s][voiceCallReport][blindtransfer]','syncMusicOnHoldStart','[%s][voiceCallReport][musiconholdstart]\x20mohstarttime:%s','mohstarttime','[%s][voiceCallReport][musiconholdstop]\x20event:','milliseconds','[%s][voiceCallReport][musiconholdstop]\x20mohtime:%s','[%s][voiceCallReport][musiconholdstop]','exports','lodash','util','path','ioredis','../ami','../model/channel','../rpc/setting','queue','agi','dial','voicemail','NO\x20ANSWER','FAILED','ANSWERED','BUSY','redis','defaults','socket.io-emitter','channels','agents','blindTransfers','coreshowchannel','bind','newexten','syncNewExten','newchannel','syncNewChannel','newstate','syncNewState','varset','syncVarSet','hangup','syncHangup','newcallerid','attendedtransfer','blindtransfer','syncBlindTransfer','musiconholdstop','syncMusicOnHoldStop','info','[voiceCallReport][coreshowchannels]\x20started','actionCoreShowChannels','error','[voiceCallReport][coreshowchannels]','inspect','prototype','isNotNull','emit','[%s][voiceCallReport][newcallerid]\x20calleridname:%s\x20calleridnum:%s','calleridname','calleridnum','debug','[%s][voiceCallReport][newcallerid]\x20event:','uniqueid','linkedid','isUndefined','pick','keys','from-sip','channel','split','exten','xcally-motion-preview','destconnectedlinenum','connectedlinenum','format','user:%s','name','user:agentconnect','accountcode','[%s][voiceCallReport][newcallerid]','[%s][voiceCallReport][newchannel]\x20event:','OutgoingSpoolFailed','[%s][voiceCallReport][newchannel]\x20context:%s\x20exten:%s','context','starttime','YYYY-MM-DD\x20HH:mm:ss','toNumber','channelstate','undefined','[%s][voiceCallReport][newexten]\x20event:'];(function(_0x4794d7,_0x264311){var _0x21ccc7=function(_0x40cb37){while(--_0x40cb37){_0x4794d7['push'](_0x4794d7['shift']());}};_0x21ccc7(++_0x264311);}(_0xcfdf,0x76));var _0xfcfd=function(_0x27454c,_0x970d34){_0x27454c=_0x27454c-0x0;var _0x33c7f2=_0xcfdf[_0x27454c];return _0x33c7f2;};'use strict';var _=require(_0xfcfd('0x0'));var moment=require('moment');var util=require(_0xfcfd('0x1'));var path=require(_0xfcfd('0x2'));var Redis=require(_0xfcfd('0x3'));var config=require('../../../config/environment');var logger=require('../../../config/logger')('ami');var ami=require(_0xfcfd('0x4'));var Channel=require(_0xfcfd('0x5'));var RpcSetting=require(_0xfcfd('0x6'));var applications=['set',_0xfcfd('0x7'),_0xfcfd('0x8'),_0xfcfd('0x9'),'playback',_0xfcfd('0xa')];var dispositions=[_0xfcfd('0xb'),_0xfcfd('0xc'),_0xfcfd('0xc'),'NO\x20ANSWER',_0xfcfd('0xb'),_0xfcfd('0xb'),_0xfcfd('0xd'),_0xfcfd('0xe'),_0xfcfd('0xc'),_0xfcfd('0xc'),_0xfcfd('0xc')];config[_0xfcfd('0xf')]=_[_0xfcfd('0x10')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0xfcfd('0x11'))(new Redis(config[_0xfcfd('0xf')]));function VoiceCallReport(_0xfad79e){this[_0xfcfd('0x12')]=_0xfad79e[_0xfcfd('0x12')];this[_0xfcfd('0x13')]=_0xfad79e[_0xfcfd('0x13')];this[_0xfcfd('0x14')]={};ami['on'](_0xfcfd('0x15'),this['syncNewExten'][_0xfcfd('0x16')](this));ami['on'](_0xfcfd('0x17'),this[_0xfcfd('0x18')][_0xfcfd('0x16')](this));ami['on'](_0xfcfd('0x19'),this[_0xfcfd('0x1a')]['bind'](this));ami['on'](_0xfcfd('0x1b'),this[_0xfcfd('0x1c')][_0xfcfd('0x16')](this));ami['on'](_0xfcfd('0x1d'),this[_0xfcfd('0x1e')][_0xfcfd('0x16')](this));ami['on'](_0xfcfd('0x1f'),this[_0xfcfd('0x20')][_0xfcfd('0x16')](this));ami['on'](_0xfcfd('0x21'),this['syncNewCallerId'][_0xfcfd('0x16')](this));ami['on'](_0xfcfd('0x22'),this['syncAttendedTransfer'][_0xfcfd('0x16')](this));ami['on'](_0xfcfd('0x23'),this[_0xfcfd('0x24')]['bind'](this));ami['on']('musiconholdstart',this['syncMusicOnHoldStart'][_0xfcfd('0x16')](this));ami['on'](_0xfcfd('0x25'),this[_0xfcfd('0x26')][_0xfcfd('0x16')](this));try{logger[_0xfcfd('0x27')](_0xfcfd('0x28'));ami[_0xfcfd('0x29')]();}catch(_0x3d3de5){logger[_0xfcfd('0x2a')](_0xfcfd('0x2b'),util[_0xfcfd('0x2c')](_0x3d3de5,{'showHidden':![],'depth':null}));}}VoiceCallReport[_0xfcfd('0x2d')][_0xfcfd('0x2e')]=function(_0x129cac){return _0x129cac!==null&&!_['isUndefined'](_0x129cac);};VoiceCallReport['prototype'][_0xfcfd('0x2f')]=function(_0x363a41,_0x1f53a1,_0x37789a){io['to'](_0x363a41)[_0xfcfd('0x2f')](_0x1f53a1,_0x37789a);};VoiceCallReport[_0xfcfd('0x2d')]['syncNewCallerId']=function(_0x3f03d0){try{if(this[_0xfcfd('0x2e')](_0x3f03d0)){logger[_0xfcfd('0x27')](_0xfcfd('0x30'),_0x3f03d0['uniqueid'],_0x3f03d0[_0xfcfd('0x31')],_0x3f03d0[_0xfcfd('0x32')]);logger[_0xfcfd('0x33')](_0xfcfd('0x34'),_0x3f03d0[_0xfcfd('0x35')],util[_0xfcfd('0x2c')](_0x3f03d0,{'showHidden':![],'depth':null}));if(_0x3f03d0['uniqueid']===_0x3f03d0[_0xfcfd('0x36')]){if(!_[_0xfcfd('0x37')](this[_0xfcfd('0x12')][_0x3f03d0[_0xfcfd('0x35')]])){_['merge'](this[_0xfcfd('0x12')][_0x3f03d0[_0xfcfd('0x35')]],_[_0xfcfd('0x38')](_0x3f03d0,_[_0xfcfd('0x39')](this[_0xfcfd('0x12')][_0x3f03d0[_0xfcfd('0x35')]])));}}if(_0x3f03d0['context']===_0xfcfd('0x3a')){if(this[_0xfcfd('0x13')][_0x3f03d0[_0xfcfd('0x3b')][_0xfcfd('0x3c')]('-')[0x0]]){if(_0x3f03d0[_0xfcfd('0x3d')]==_0xfcfd('0x3e')){this[_0xfcfd('0x13')][_0x3f03d0[_0xfcfd('0x3b')][_0xfcfd('0x3c')]('-')[0x0]][_0xfcfd('0x3f')]=_0x3f03d0[_0xfcfd('0x40')];this[_0xfcfd('0x2f')](util[_0xfcfd('0x41')](_0xfcfd('0x42'),this[_0xfcfd('0x13')][_0x3f03d0[_0xfcfd('0x3b')][_0xfcfd('0x3c')]('-')[0x0]][_0xfcfd('0x43')]),_0xfcfd('0x44'),{'destaccountcode':this[_0xfcfd('0x13')][_0x3f03d0[_0xfcfd('0x3b')][_0xfcfd('0x3c')]('-')[0x0]][_0xfcfd('0x45')],'destconnectedlinenum':_0x3f03d0['connectedlinenum']});}}}}}catch(_0x2011db){logger['error'](_0xfcfd('0x46'),_0x3f03d0[_0xfcfd('0x35')],util[_0xfcfd('0x2c')](_0x2011db,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xfcfd('0x2d')][_0xfcfd('0x1a')]=function(_0x33f8fe){try{if(this[_0xfcfd('0x2e')](_0x33f8fe)){logger[_0xfcfd('0x33')](_0xfcfd('0x47'),_0x33f8fe[_0xfcfd('0x35')],util[_0xfcfd('0x2c')](_0x33f8fe,{'showHidden':![],'depth':null}));if(this[_0xfcfd('0x12')][_0x33f8fe['uniqueid']]){return;}if(_0x33f8fe[_0xfcfd('0x3b')]===_0xfcfd('0x48')){return;}if(_0x33f8fe[_0xfcfd('0x35')]!==_0x33f8fe[_0xfcfd('0x36')]&&!this[_0xfcfd('0x14')][_0x33f8fe[_0xfcfd('0x36')]]){return;}logger[_0xfcfd('0x27')](_0xfcfd('0x49'),_0x33f8fe[_0xfcfd('0x35')],_0x33f8fe[_0xfcfd('0x4a')],_0x33f8fe[_0xfcfd('0x3d')]);this[_0xfcfd('0x12')][_0x33f8fe[_0xfcfd('0x35')]]=new Channel();this[_0xfcfd('0x12')][_0x33f8fe[_0xfcfd('0x35')]][_0xfcfd('0x4b')]=moment()[_0xfcfd('0x41')](_0xfcfd('0x4c'));this[_0xfcfd('0x12')][_0x33f8fe['uniqueid']]['disposition']=dispositions[_[_0xfcfd('0x4d')](_0x33f8fe[_0xfcfd('0x4e')])];_['merge'](this[_0xfcfd('0x12')][_0x33f8fe[_0xfcfd('0x35')]],_[_0xfcfd('0x38')](_0x33f8fe,_[_0xfcfd('0x39')](this[_0xfcfd('0x12')][_0x33f8fe['uniqueid']])));if(_0x33f8fe['context']===_0xfcfd('0x3a')){var _0x417413=this[_0xfcfd('0x13')][_0x33f8fe[_0xfcfd('0x3b')]['split']('-')[0x0]];if(_0x417413&&typeof _0x417413[_0xfcfd('0x3f')]===_0xfcfd('0x4f')){_0x417413[_0xfcfd('0x3f')]=_0x33f8fe['exten'];logger[_0xfcfd('0x33')]('[%s][voiceCallReport][newchannel]\x20sending\x20user:agentconnect\x20event:',_0x33f8fe[_0xfcfd('0x35')],util[_0xfcfd('0x2c')]({'id':_0x417413['id'],'destaccountcode':_0x417413['accountcode'],'destconnectedlinenum':_0x33f8fe[_0xfcfd('0x3d')]},{'showHidden':![],'depth':null}));this['emit'](util[_0xfcfd('0x41')](_0xfcfd('0x42'),_0x417413[_0xfcfd('0x43')]),_0xfcfd('0x44'),{'id':_0x417413['id'],'destaccountcode':_0x417413['accountcode'],'destconnectedlinenum':_0x33f8fe['exten']});}}}}catch(_0x1a5ce3){logger[_0xfcfd('0x2a')]('[%s][voiceCallReport][newchannel]',_0x33f8fe['uniqueid'],util[_0xfcfd('0x2c')](_0x1a5ce3,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xfcfd('0x2d')]['syncNewExten']=function(_0x5b9676){try{if(this[_0xfcfd('0x2e')](_0x5b9676)){logger['debug'](_0xfcfd('0x50'),_0x5b9676['uniqueid'],util[_0xfcfd('0x2c')](_0x5b9676,{'showHidden':![],'depth':null}));if(_0x5b9676[_0xfcfd('0x3b')]===_0xfcfd('0x48')||_0x5b9676['exten']==='h')return;if(_0x5b9676[_0xfcfd('0x35')]===_0x5b9676[_0xfcfd('0x36')]||this['blindTransfers'][_0x5b9676['linkedid']]){_0x5b9676[_0xfcfd('0x51')]=_0x5b9676[_0xfcfd('0x51')]?_0x5b9676[_0xfcfd('0x51')]['toLowerCase']():undefined;_0x5b9676[_0xfcfd('0x52')]=_0x5b9676[_0xfcfd('0x53')]||_0x5b9676[_0xfcfd('0x52')];if(_0x5b9676[_0xfcfd('0x53')]&&!_0x5b9676['appdata'][_0xfcfd('0x54')](_0xfcfd('0x55'))&&_0x5b9676[_0xfcfd('0x51')]!==_0xfcfd('0x7')){_0x5b9676['applicationdata']=_0x5b9676[_0xfcfd('0x52')][_0xfcfd('0x56')]();}logger[_0xfcfd('0x27')](_0xfcfd('0x57'),_0x5b9676['uniqueid'],_0x5b9676[_0xfcfd('0x51')],_0x5b9676[_0xfcfd('0x52')]);if(_[_0xfcfd('0x37')](this[_0xfcfd('0x12')][_0x5b9676[_0xfcfd('0x35')]])){this[_0xfcfd('0x12')][_0x5b9676[_0xfcfd('0x35')]]=new Channel();this[_0xfcfd('0x12')][_0x5b9676['uniqueid']]['starttime']=_0x5b9676['duration']?moment()[_0xfcfd('0x58')](moment[_0xfcfd('0x59')](_0x5b9676[_0xfcfd('0x59')])[_0xfcfd('0x5a')](),_0xfcfd('0x5a'))[_0xfcfd('0x41')](_0xfcfd('0x4c')):moment()[_0xfcfd('0x41')]('YYYY-MM-DD\x20HH:mm:ss');this[_0xfcfd('0x12')][_0x5b9676[_0xfcfd('0x35')]][_0xfcfd('0x5b')]=_0xfcfd('0xb');}_[_0xfcfd('0x5c')](this[_0xfcfd('0x12')][_0x5b9676[_0xfcfd('0x35')]],_[_0xfcfd('0x38')](_0x5b9676,_['keys'](this[_0xfcfd('0x12')][_0x5b9676['uniqueid']])));if(_[_0xfcfd('0x5d')](applications,_0x5b9676[_0xfcfd('0x51')])){this[_0xfcfd('0x12')][_0x5b9676[_0xfcfd('0x35')]]['lastapplication']=_0x5b9676[_0xfcfd('0x51')];this[_0xfcfd('0x12')][_0x5b9676[_0xfcfd('0x35')]][_0xfcfd('0x5e')]=_0x5b9676[_0xfcfd('0x52')];if(_0x5b9676[_0xfcfd('0x51')]===_0xfcfd('0x5f')&&_[_0xfcfd('0x54')](_0x5b9676['applicationdata'][_0xfcfd('0x56')](),_0xfcfd('0x60'))){var _0x212b5c=_0x5b9676['applicationdata'][_0xfcfd('0x3c')]('=');var _0x5db8ff=_0x212b5c[0x0][_0xfcfd('0x56')]()[_0xfcfd('0x61')](/cdr\((.*)\)/);if(_0x5db8ff){if(_0x5db8ff[0x1]==='type'&&!_[_0xfcfd('0x62')](this[_0xfcfd('0x12')][_0x5b9676[_0xfcfd('0x35')]][_0x5db8ff[0x1]]))return;this[_0xfcfd('0x12')][_0x5b9676[_0xfcfd('0x35')]][_0x5db8ff[0x1]]=_0x212b5c[0x1];}}else if(_0x5b9676[_0xfcfd('0x51')]===_0xfcfd('0x7')){this[_0xfcfd('0x12')][_0x5b9676['uniqueid']][_0xfcfd('0x7')]=_0x5b9676[_0xfcfd('0x52')][_0xfcfd('0x3c')](',')[0x0];}}}}}catch(_0x50afa3){logger['error'](_0xfcfd('0x63'),_0x5b9676['uniqueid'],util[_0xfcfd('0x2c')](_0x50afa3,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xfcfd('0x2d')][_0xfcfd('0x1c')]=function(_0x444424){try{if(this[_0xfcfd('0x2e')](_0x444424)){logger[_0xfcfd('0x27')]('[%s][voiceCallReport][newstate]\x20linkedid:%s\x20calleridname:%s\x20calleridnum:%s',_0x444424[_0xfcfd('0x35')],_0x444424[_0xfcfd('0x36')],_0x444424[_0xfcfd('0x31')],_0x444424[_0xfcfd('0x32')]);logger[_0xfcfd('0x33')](_0xfcfd('0x64'),_0x444424[_0xfcfd('0x35')],util[_0xfcfd('0x2c')](_0x444424,{'showHidden':![],'depth':null}));if(_0x444424[_0xfcfd('0x4e')]!=='6')return;var _0x332586=this[_0xfcfd('0x13')][_0x444424[_0xfcfd('0x3b')][_0xfcfd('0x3c')]('-')[0x0]];if(_0x444424[_0xfcfd('0x35')]!==_0x444424[_0xfcfd('0x36')]){var _0x353428=moment();if(this['channels'][_0x444424[_0xfcfd('0x36')]]){if(!this[_0xfcfd('0x12')][_0x444424[_0xfcfd('0x36')]][_0xfcfd('0x65')]){this[_0xfcfd('0x12')][_0x444424[_0xfcfd('0x36')]][_0xfcfd('0x65')]=!![];this[_0xfcfd('0x12')][_0x444424[_0xfcfd('0x36')]][_0xfcfd('0x66')]=_0x353428[_0xfcfd('0x41')](_0xfcfd('0x4c'));if(this[_0xfcfd('0x12')][_0x444424[_0xfcfd('0x36')]][_0xfcfd('0x4b')]){this['channels'][_0x444424[_0xfcfd('0x36')]][_0xfcfd('0x67')]=_0x353428[_0xfcfd('0x68')](this['channels'][_0x444424[_0xfcfd('0x36')]][_0xfcfd('0x4b')],'seconds');}}this['channels'][_0x444424[_0xfcfd('0x36')]]['linkedid']=_0x444424[_0xfcfd('0x35')];if(_0x444424[_0xfcfd('0x32')]!==_0xfcfd('0x3e')){this[_0xfcfd('0x12')][_0x444424[_0xfcfd('0x36')]]['connectedlinenum']=_0x444424[_0xfcfd('0x32')];}this[_0xfcfd('0x12')][_0x444424[_0xfcfd('0x36')]]['connectedlinename']=_0x444424[_0xfcfd('0x31')];this['channels'][_0x444424[_0xfcfd('0x36')]][_0xfcfd('0x69')]=_0x444424[_0xfcfd('0x3b')];this[_0xfcfd('0x12')][_0x444424[_0xfcfd('0x36')]][_0xfcfd('0x5b')]=dispositions[_[_0xfcfd('0x4d')](_0x444424[_0xfcfd('0x4e')])];if(_0x332586){this[_0xfcfd('0x12')][_0x444424[_0xfcfd('0x36')]][_0xfcfd('0x6a')]=_0x332586['id'];this[_0xfcfd('0x12')][_0x444424[_0xfcfd('0x36')]][_0xfcfd('0x6b')]=_0x332586[_0xfcfd('0x43')];}}if(this['channels'][_0x444424['uniqueid']]){if(!this['channels'][_0x444424[_0xfcfd('0x35')]]['answered']){this[_0xfcfd('0x12')][_0x444424[_0xfcfd('0x35')]][_0xfcfd('0x65')]=!![];this['channels'][_0x444424[_0xfcfd('0x35')]][_0xfcfd('0x66')]=_0x353428[_0xfcfd('0x41')]('YYYY-MM-DD\x20HH:mm:ss');if(this[_0xfcfd('0x12')][_0x444424['uniqueid']][_0xfcfd('0x4b')]){this[_0xfcfd('0x12')][_0x444424[_0xfcfd('0x35')]][_0xfcfd('0x67')]=_0x353428['diff'](this[_0xfcfd('0x12')][_0x444424[_0xfcfd('0x35')]][_0xfcfd('0x4b')],_0xfcfd('0x5a'));}}if(_0x444424[_0xfcfd('0x32')]!==_0xfcfd('0x3e')){this['channels'][_0x444424['uniqueid']]['connectedlinenum']=_0x444424[_0xfcfd('0x32')];}this['channels'][_0x444424[_0xfcfd('0x35')]][_0xfcfd('0x6c')]=_0x444424[_0xfcfd('0x31')];this[_0xfcfd('0x12')][_0x444424['uniqueid']][_0xfcfd('0x69')]=_0x444424[_0xfcfd('0x3b')];this[_0xfcfd('0x12')][_0x444424['uniqueid']][_0xfcfd('0x5b')]=dispositions[_[_0xfcfd('0x4d')](_0x444424[_0xfcfd('0x4e')])];}}else{if(this[_0xfcfd('0x12')][_0x444424[_0xfcfd('0x35')]]){if(_0x332586){this[_0xfcfd('0x12')][_0x444424['uniqueid']]['UserId']=_0x332586['id'];this['channels'][_0x444424[_0xfcfd('0x35')]][_0xfcfd('0x6b')]=_0x332586['name'];}}}if(_0x444424[_0xfcfd('0x4a')]==='from-sip'){if(_0x332586){_0x332586[_0xfcfd('0x3f')]=_0x444424[_0xfcfd('0x3d')];var _0x74f114,_0x42947d;if(this[_0xfcfd('0x12')][_0x444424['uniqueid']]){_0x74f114=this[_0xfcfd('0x12')][_0x444424[_0xfcfd('0x35')]][_0xfcfd('0x6d')];_0x42947d=this['channels'][_0x444424[_0xfcfd('0x35')]][_0xfcfd('0x7')];}else if(this[_0xfcfd('0x12')][_0x444424[_0xfcfd('0x36')]]){_0x74f114=this[_0xfcfd('0x12')][_0x444424[_0xfcfd('0x36')]]['routealias'];_0x42947d=this['channels'][_0x444424[_0xfcfd('0x36')]][_0xfcfd('0x7')];}_0x332586[_0xfcfd('0x7')]=_0x42947d;_0x332586[_0xfcfd('0x6d')]=_0x74f114;var _0x36cd8f={'id':_0x332586['id'],'name':_0x332586[_0xfcfd('0x43')],'agentconnected':!![],'destaccountcode':_0x332586['accountcode'],'destconnectedlinenum':_0x444424[_0xfcfd('0x3d')],'queue':_0x42947d||undefined,'routealias':_0x74f114,'uniqueid':_0x444424['linkedid']};logger[_0xfcfd('0x33')](_0xfcfd('0x6e'),_0x444424['uniqueid'],util[_0xfcfd('0x2c')](_0x36cd8f,{'showHidden':![],'depth':null}));this[_0xfcfd('0x2f')](util['format'](_0xfcfd('0x42'),_0x332586[_0xfcfd('0x43')]),_0xfcfd('0x44'),_0x36cd8f);}}}}catch(_0x1adf43){logger['error'](_0xfcfd('0x6f'),_0x444424[_0xfcfd('0x35')],util[_0xfcfd('0x2c')](_0x1adf43,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xfcfd('0x2d')]['syncMixMonitorFilename']=function(_0x49439e,_0x1fb329){try{if(this[_0xfcfd('0x12')][_0x49439e]){logger[_0xfcfd('0x27')](_0xfcfd('0x70'),_0x49439e,_0x1fb329);this['channels'][_0x49439e][_0xfcfd('0x71')]=!![];if(_[_0xfcfd('0x72')](_0x1fb329,_0xfcfd('0x73'))){_0x1fb329=_0x1fb329[_0xfcfd('0x74')](_0xfcfd('0x73'),_0xfcfd('0x75'));}this[_0xfcfd('0x12')][_0x49439e]['monitorFilename']=_0x1fb329;var _0x4af44f=_[_0xfcfd('0x76')](this[_0xfcfd('0x12')][_0x49439e]['monitors'],{'filename':_0x1fb329});if(_['isNil'](_0x4af44f)){this[_0xfcfd('0x12')][_0x49439e][_0xfcfd('0x77')]['push']({'filename':_0x1fb329,'createdAt':moment()['format'](_0xfcfd('0x4c')),'mixmonitorid':'','status':_0xfcfd('0x78')});}}}catch(_0x3316b4){logger['error'](_0xfcfd('0x79'),_0x49439e,util[_0xfcfd('0x2c')](_0x3316b4,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xfcfd('0x2d')][_0xfcfd('0x1e')]=function(_0x2ff7c8){try{if(this[_0xfcfd('0x2e')](_0x2ff7c8)){logger['debug']('[%s][voiceCallReport][varset]\x20event:',_0x2ff7c8[_0xfcfd('0x35')],util['inspect'](_0x2ff7c8,{'showHidden':![],'depth':null}));if(this[_0xfcfd('0x12')][_0x2ff7c8['uniqueid']]&&_0x2ff7c8[_0xfcfd('0x3b')]!=_0xfcfd('0x48')){if(this[_0xfcfd('0x2e')](_0x2ff7c8['variable'])){if(this[_0xfcfd('0x2e')](_0x2ff7c8['variable']['mixmonitor_filename'])){logger['info'](_0xfcfd('0x7a'),_0x2ff7c8[_0xfcfd('0x35')],_0x2ff7c8[_0xfcfd('0x7b')]);this[_0xfcfd('0x7c')](_0x2ff7c8[_0xfcfd('0x35')],_0x2ff7c8['value']);}else if(this[_0xfcfd('0x2e')](_0x2ff7c8[_0xfcfd('0x7d')][_0xfcfd('0x7e')])){logger[_0xfcfd('0x27')](_0xfcfd('0x7f'),_0x2ff7c8[_0xfcfd('0x35')],_0x2ff7c8[_0xfcfd('0x7b')]);this['channels'][_0x2ff7c8[_0xfcfd('0x35')]][_0xfcfd('0x32')]=_0x2ff7c8[_0xfcfd('0x7b')];}else if(this[_0xfcfd('0x2e')](_0x2ff7c8[_0xfcfd('0x7d')][_0xfcfd('0x80')])){logger[_0xfcfd('0x27')](_0xfcfd('0x81'),_0x2ff7c8['uniqueid'],_0x2ff7c8[_0xfcfd('0x7b')]);this[_0xfcfd('0x12')][_0x2ff7c8[_0xfcfd('0x35')]][_0xfcfd('0x82')]=_0x2ff7c8['value'];}else if(this['isNotNull'](_0x2ff7c8[_0xfcfd('0x7d')]['xmd-cdrtype'])){logger[_0xfcfd('0x27')](_0xfcfd('0x83'),_0x2ff7c8[_0xfcfd('0x35')],_0x2ff7c8[_0xfcfd('0x7b')]);this[_0xfcfd('0x12')][_0x2ff7c8[_0xfcfd('0x35')]]['type']=_0x2ff7c8[_0xfcfd('0x7b')];}else if(this[_0xfcfd('0x2e')](_0x2ff7c8['variable'][_0xfcfd('0x84')])){logger[_0xfcfd('0x27')](_0xfcfd('0x85'),_0x2ff7c8[_0xfcfd('0x35')],_0x2ff7c8[_0xfcfd('0x7b')][_0xfcfd('0x3c')](',')[0x0]);this['channels'][_0x2ff7c8['uniqueid']][_0xfcfd('0x7')]=_0x2ff7c8[_0xfcfd('0x7b')]['split'](',')[0x0];}else if(this[_0xfcfd('0x2e')](_0x2ff7c8['variable']['xmd-originatecalleridnum'])){logger[_0xfcfd('0x27')](_0xfcfd('0x86'),_0x2ff7c8[_0xfcfd('0x35')],_0x2ff7c8['value']);this[_0xfcfd('0x12')][_0x2ff7c8['uniqueid']][_0xfcfd('0x87')]=_0x2ff7c8[_0xfcfd('0x7b')];}else if(this[_0xfcfd('0x2e')](_0x2ff7c8[_0xfcfd('0x7d')]['xmd-destination'])){logger[_0xfcfd('0x27')](_0xfcfd('0x88'),_0x2ff7c8['uniqueid'],_0x2ff7c8[_0xfcfd('0x7b')]);this[_0xfcfd('0x12')][_0x2ff7c8['uniqueid']]['destination']=_0x2ff7c8[_0xfcfd('0x7b')];}else if(this['isNotNull'](_0x2ff7c8['variable'][_0xfcfd('0x89')])){logger['info'](_0xfcfd('0x8a'),_0x2ff7c8[_0xfcfd('0x35')],_0x2ff7c8[_0xfcfd('0x7b')]);this[_0xfcfd('0x12')][_0x2ff7c8[_0xfcfd('0x35')]][_0xfcfd('0x8b')]=_0x2ff7c8[_0xfcfd('0x7b')];}else if(this[_0xfcfd('0x2e')](_0x2ff7c8[_0xfcfd('0x7d')][_0xfcfd('0x8c')])){logger[_0xfcfd('0x27')](_0xfcfd('0x8d'),_0x2ff7c8[_0xfcfd('0x35')],_0x2ff7c8[_0xfcfd('0x7b')]);this['channels'][_0x2ff7c8[_0xfcfd('0x35')]][_0xfcfd('0x7')]=_0x2ff7c8[_0xfcfd('0x7b')];}else if(this['isNotNull'](_0x2ff7c8[_0xfcfd('0x7d')][_0xfcfd('0x8e')])){logger[_0xfcfd('0x27')]('[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s',_0x2ff7c8['uniqueid'],_0x2ff7c8[_0xfcfd('0x7b')]);this[_0xfcfd('0x12')][_0x2ff7c8[_0xfcfd('0x35')]][_0xfcfd('0x8f')]=_0x2ff7c8[_0xfcfd('0x7b')];}}}else if(this[_0xfcfd('0x2e')](_0x2ff7c8[_0xfcfd('0x7d')][_0xfcfd('0x90')])){if(_0x2ff7c8[_0xfcfd('0x7b')]){var _0x5a3b99=path[_0xfcfd('0x91')](_0x2ff7c8['value'])[_0xfcfd('0x43')];logger[_0xfcfd('0x27')](_0xfcfd('0x7a'),_0x5a3b99,_0x2ff7c8[_0xfcfd('0x7b')]);this[_0xfcfd('0x7c')](_0x5a3b99,_0x2ff7c8['value']);}}else if(this[_0xfcfd('0x12')][_0x2ff7c8['linkedid']]){if(this['isNotNull'](_0x2ff7c8['variable'])){if(this[_0xfcfd('0x2e')](_0x2ff7c8[_0xfcfd('0x7d')][_0xfcfd('0x8e')])){logger[_0xfcfd('0x27')](_0xfcfd('0x92'),_0x2ff7c8['linkedid'],_0x2ff7c8[_0xfcfd('0x7b')]);this[_0xfcfd('0x12')][_0x2ff7c8['linkedid']]['sipcalllinkedid']=_0x2ff7c8[_0xfcfd('0x7b')];}}}}}catch(_0x4d4134){logger['error'](_0xfcfd('0x93'),_0x2ff7c8['uniqueid'],util['inspect'](_0x4d4134,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0xfcfd('0x20')]=function(_0x4fe849){try{if(this[_0xfcfd('0x2e')](_0x4fe849)){logger[_0xfcfd('0x33')](_0xfcfd('0x94'),_0x4fe849[_0xfcfd('0x35')],util[_0xfcfd('0x2c')](_0x4fe849,{'showHidden':![],'depth':null}));if(this[_0xfcfd('0x14')][_0x4fe849[_0xfcfd('0x36')]]){if(this[_0xfcfd('0x12')][this[_0xfcfd('0x14')][_0x4fe849[_0xfcfd('0x36')]][_0xfcfd('0x36')]]){this['channels'][this['blindTransfers'][_0x4fe849['linkedid']][_0xfcfd('0x36')]][_0xfcfd('0x35')]=_0x4fe849[_0xfcfd('0x35')];this[_0xfcfd('0x12')][this[_0xfcfd('0x14')][_0x4fe849[_0xfcfd('0x36')]]['linkedid']]['answered']=this[_0xfcfd('0x12')][_0x4fe849['uniqueid']][_0xfcfd('0x65')];this[_0xfcfd('0x12')][this[_0xfcfd('0x14')][_0x4fe849['linkedid']][_0xfcfd('0x36')]][_0xfcfd('0x66')]=this['channels'][_0x4fe849[_0xfcfd('0x35')]][_0xfcfd('0x66')];this[_0xfcfd('0x12')][this[_0xfcfd('0x14')][_0x4fe849[_0xfcfd('0x36')]][_0xfcfd('0x36')]][_0xfcfd('0x69')]=this['channels'][this[_0xfcfd('0x14')][_0x4fe849[_0xfcfd('0x36')]][_0xfcfd('0x36')]][_0xfcfd('0x3b')];this[_0xfcfd('0x12')][this[_0xfcfd('0x14')][_0x4fe849[_0xfcfd('0x36')]]['linkedid']][_0xfcfd('0x5b')]=this[_0xfcfd('0x12')][_0x4fe849[_0xfcfd('0x35')]][_0xfcfd('0x5b')];this[_0xfcfd('0x12')][_0x4fe849[_0xfcfd('0x35')]]=this[_0xfcfd('0x12')][this[_0xfcfd('0x14')][_0x4fe849['linkedid']][_0xfcfd('0x36')]];delete this[_0xfcfd('0x12')][this[_0xfcfd('0x14')][_0x4fe849[_0xfcfd('0x36')]]['linkedid']];}else if(this['channels'][this[_0xfcfd('0x14')][_0x4fe849['linkedid']][_0xfcfd('0x35')]]){this['channels'][this['blindTransfers'][_0x4fe849['linkedid']][_0xfcfd('0x35')]]['uniqueid']=[this[_0xfcfd('0x12')][this[_0xfcfd('0x14')][_0x4fe849[_0xfcfd('0x36')]][_0xfcfd('0x35')]]['linkedid'],this[_0xfcfd('0x12')][this['blindTransfers'][_0x4fe849[_0xfcfd('0x36')]]['uniqueid']]['linkedid']=this[_0xfcfd('0x12')][this[_0xfcfd('0x14')][_0x4fe849[_0xfcfd('0x36')]][_0xfcfd('0x35')]][_0xfcfd('0x35')]][0x0];this['channels'][this[_0xfcfd('0x14')][_0x4fe849[_0xfcfd('0x36')]][_0xfcfd('0x35')]][_0xfcfd('0x65')]=this[_0xfcfd('0x12')][_0x4fe849[_0xfcfd('0x35')]][_0xfcfd('0x65')];this['channels'][this[_0xfcfd('0x14')][_0x4fe849['linkedid']]['uniqueid']][_0xfcfd('0x66')]=this[_0xfcfd('0x12')][_0x4fe849['uniqueid']][_0xfcfd('0x66')];this[_0xfcfd('0x12')][this[_0xfcfd('0x14')][_0x4fe849['linkedid']][_0xfcfd('0x35')]][_0xfcfd('0x69')]=this['channels'][this[_0xfcfd('0x14')][_0x4fe849[_0xfcfd('0x36')]][_0xfcfd('0x35')]][_0xfcfd('0x3b')];this[_0xfcfd('0x12')][this[_0xfcfd('0x14')][_0x4fe849[_0xfcfd('0x36')]][_0xfcfd('0x35')]][_0xfcfd('0x5b')]=this[_0xfcfd('0x12')][_0x4fe849[_0xfcfd('0x35')]]['disposition'];this[_0xfcfd('0x12')][_0x4fe849[_0xfcfd('0x35')]]=this[_0xfcfd('0x12')][this[_0xfcfd('0x14')][_0x4fe849[_0xfcfd('0x36')]][_0xfcfd('0x35')]];delete this[_0xfcfd('0x12')][this['blindTransfers'][_0x4fe849[_0xfcfd('0x36')]][_0xfcfd('0x35')]];}}if(this[_0xfcfd('0x12')][_0x4fe849['uniqueid']]){logger[_0xfcfd('0x27')](_0xfcfd('0x95'),_0x4fe849[_0xfcfd('0x35')],_0x4fe849[_0xfcfd('0x96')]);var _0x111569=moment();this[_0xfcfd('0x12')][_0x4fe849['uniqueid']][_0xfcfd('0x97')]=_0x111569['format'](_0xfcfd('0x4c'));this[_0xfcfd('0x12')][_0x4fe849[_0xfcfd('0x35')]][_0xfcfd('0x59')]=_0x111569[_0xfcfd('0x68')](this[_0xfcfd('0x12')][_0x4fe849[_0xfcfd('0x35')]][_0xfcfd('0x4b')],'seconds');if(this[_0xfcfd('0x12')][_0x4fe849['uniqueid']]['answered']){this['channels'][_0x4fe849[_0xfcfd('0x35')]][_0xfcfd('0x98')]=_0x111569[_0xfcfd('0x68')](this['channels'][_0x4fe849[_0xfcfd('0x35')]]['answertime'],_0xfcfd('0x5a'));this[_0xfcfd('0x12')][_0x4fe849[_0xfcfd('0x35')]][_0xfcfd('0x67')]=this['channels'][_0x4fe849['uniqueid']][_0xfcfd('0x59')]-this[_0xfcfd('0x12')][_0x4fe849[_0xfcfd('0x35')]]['billableseconds'];}if(_0x4fe849['context']===_0xfcfd('0x3a')){if(this[_0xfcfd('0x13')][_0x4fe849[_0xfcfd('0x3b')][_0xfcfd('0x3c')]('-')[0x0]]){this[_0xfcfd('0x13')][_0x4fe849[_0xfcfd('0x3b')][_0xfcfd('0x3c')]('-')[0x0]]=_['omit'](this[_0xfcfd('0x13')][_0x4fe849['channel'][_0xfcfd('0x3c')]('-')[0x0]],[_0xfcfd('0x3f')]);logger[_0xfcfd('0x33')]('[%s][voiceCallReport][hangup]\x20sending\x20user:agentcomplete\x20event:',_0x4fe849['uniqueid'],util[_0xfcfd('0x2c')]({'id':this[_0xfcfd('0x13')][_0x4fe849['channel'][_0xfcfd('0x3c')]('-')[0x0]]['id'],'destaccountcode':this[_0xfcfd('0x13')][_0x4fe849[_0xfcfd('0x3b')][_0xfcfd('0x3c')]('-')[0x0]][_0xfcfd('0x45')]},{'showHidden':![],'depth':null}));this[_0xfcfd('0x2f')](util['format'](_0xfcfd('0x42'),this['agents'][_0x4fe849[_0xfcfd('0x3b')][_0xfcfd('0x3c')]('-')[0x0]]['name']),_0xfcfd('0x99'),{'id':this[_0xfcfd('0x13')][_0x4fe849['channel'][_0xfcfd('0x3c')]('-')[0x0]]['id'],'destaccountcode':this[_0xfcfd('0x13')][_0x4fe849['channel'][_0xfcfd('0x3c')]('-')[0x0]][_0xfcfd('0x45')]});for(var _0x4cd44e=0x0;_0x4cd44e<Object['keys'](this[_0xfcfd('0x13')])[_0xfcfd('0x9a')];_0x4cd44e++){var _0x1e5bd5=Object[_0xfcfd('0x39')](this[_0xfcfd('0x13')])[_0x4cd44e];var _0x15e10f=this[_0xfcfd('0x13')][_0x1e5bd5];if(_0x15e10f[_0xfcfd('0x45')]===Number(this[_0xfcfd('0x12')][_0x4fe849['uniqueid']][_0xfcfd('0x40')])){this['emit'](util[_0xfcfd('0x41')](_0xfcfd('0x42'),_0x15e10f['name']),_0xfcfd('0x99'),{'id':_0x15e10f['id'],'destaccountcode':_0x15e10f[_0xfcfd('0x45')],'transfer':this[_0xfcfd('0x12')][_0x4fe849[_0xfcfd('0x35')]][_0xfcfd('0x9b')]});break;}}}}var _0x351f54=this;Promise['resolve']()[_0xfcfd('0x9c')](function(){var _0xc01f82=_0x351f54['channels'][_0x4fe849['uniqueid']];if(typeof _0xc01f82['transferType']===_0xfcfd('0x4f'))return;if(_['isEmpty'](_0xc01f82[_0xfcfd('0x77')]))return;return RpcSetting[_0xfcfd('0x9d')]()[_0xfcfd('0x9c')](function(_0x4a2c9d){if(!_0x4a2c9d[_0xfcfd('0x9e')])return;return Promise[_0xfcfd('0x9f')]()[_0xfcfd('0x9c')](function(){return ami[_0xfcfd('0xa0')]({'action':_0xfcfd('0xa1'),'channel':_0xc01f82[_0xfcfd('0x3b')]})['catch'](function(){});})[_0xfcfd('0x9c')](function(){return ami[_0xfcfd('0xa0')]({'action':_0xfcfd('0xa1'),'channel':_0xc01f82[_0xfcfd('0x69')]})[_0xfcfd('0xa2')](function(){})['finally'](function(){var _0xcedfc2=_0x351f54[_0xfcfd('0x13')][_0xc01f82[_0xfcfd('0x69')][_0xfcfd('0x3c')]('-')[0x0]];if(!_0xcedfc2)return;io[_0xfcfd('0x2f')]('webbar:stopmonitors',{'agentId':_0xcedfc2['id'],'uniqueid':_0xc01f82[_0xfcfd('0x35')]});});});});})[_0xfcfd('0x9c')](function(){if(_0x4fe849[_0xfcfd('0xa3')]==='BlindTransfer'){_0x351f54[_0xfcfd('0x14')][_0x4fe849['uniqueid']]=_0x4fe849;}else{if(_0x351f54[_0xfcfd('0x12')][_0x4fe849[_0xfcfd('0x35')]]['type']==='outbound'&&_0x351f54[_0xfcfd('0x14')][_0x4fe849[_0xfcfd('0x35')]]){_0x351f54['channels'][_0x4fe849[_0xfcfd('0x35')]][_0xfcfd('0x35')]=[_0x351f54['channels'][_0x4fe849[_0xfcfd('0x35')]][_0xfcfd('0x36')],_0x351f54[_0xfcfd('0x12')][_0x4fe849[_0xfcfd('0x35')]][_0xfcfd('0x36')]=_0x351f54[_0xfcfd('0x12')][_0x4fe849['uniqueid']][_0xfcfd('0x35')]][0x0];delete _0x351f54[_0xfcfd('0x14')][_0x4fe849[_0xfcfd('0x35')]];}}logger['debug'](_0xfcfd('0xa4'),_0x4fe849[_0xfcfd('0x35')],util[_0xfcfd('0x2c')](_0x351f54[_0xfcfd('0x12')][_0x4fe849[_0xfcfd('0x35')]],{'showHidden':![],'depth':null}));ami[_0xfcfd('0x2f')](_0xfcfd('0xa5'),_0x351f54[_0xfcfd('0x12')][_0x4fe849[_0xfcfd('0x35')]]);delete _0x351f54[_0xfcfd('0x12')][_0x4fe849[_0xfcfd('0x35')]];});}}}catch(_0x4f14ea){logger[_0xfcfd('0x2a')](_0xfcfd('0xa6'),_0x4fe849[_0xfcfd('0x35')],util['inspect'](_0x4f14ea,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xfcfd('0x2d')][_0xfcfd('0xa7')]=function(_0x21973a){try{if(this[_0xfcfd('0x2e')](_0x21973a)){logger[_0xfcfd('0x27')]('[%s][voiceCallReport][attendedtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s',_0x21973a[_0xfcfd('0x35')],_0x21973a['origtransferercalleridnum'],_0x21973a[_0xfcfd('0xa8')]);logger['debug'](_0xfcfd('0xa9'),_0x21973a['uniqueid'],util['inspect'](_0x21973a,{'showHidden':![],'depth':null}));var _0x511866;if(this[_0xfcfd('0x12')][_0x21973a[_0xfcfd('0xaa')]]){this[_0xfcfd('0x12')][_0x21973a[_0xfcfd('0xaa')]][_0xfcfd('0xab')]=_0x21973a['origtransferercalleridnum'];this[_0xfcfd('0x12')][_0x21973a['transfereeuniqueid']][_0xfcfd('0xac')]=_0x21973a[_0xfcfd('0xa8')];if(this['channels'][_0x21973a[_0xfcfd('0xad')]]){_0x511866=this[_0xfcfd('0x12')][_0x21973a[_0xfcfd('0xad')]];this['channels'][_0x21973a[_0xfcfd('0xad')]]=this['channels'][_0x21973a[_0xfcfd('0xaa')]];this[_0xfcfd('0x12')][_0x21973a[_0xfcfd('0xaa')]]=_0x511866;}this[_0xfcfd('0x12')][_0x21973a[_0xfcfd('0xad')]][_0xfcfd('0x9b')]=_0xfcfd('0xae');}else if(this['channels'][_0x21973a[_0xfcfd('0xaf')]]){this[_0xfcfd('0x12')][_0x21973a[_0xfcfd('0xaf')]][_0xfcfd('0xab')]=_0x21973a[_0xfcfd('0xb0')];this[_0xfcfd('0x12')][_0x21973a['transfertargetuniqueid']][_0xfcfd('0xac')]=_0x21973a['transfertargetcalleridnum'];if(this[_0xfcfd('0x12')][_0x21973a[_0xfcfd('0xb1')]]){_0x511866=this[_0xfcfd('0x12')][_0x21973a['origtransfereruniqueid']];this[_0xfcfd('0x12')][_0x21973a[_0xfcfd('0xb1')]]=this[_0xfcfd('0x12')][_0x21973a['transfertargetuniqueid']];this[_0xfcfd('0x12')][_0x21973a[_0xfcfd('0xaf')]]=_0x511866;}this[_0xfcfd('0x12')][_0x21973a['transfertargetuniqueid']][_0xfcfd('0x9b')]=_0xfcfd('0xae');}if((this[_0xfcfd('0x12')][_0x21973a[_0xfcfd('0xb1')]]||this['channels'][_0x21973a['origtransfererlinkedid']])&&this['channels'][_0x21973a[_0xfcfd('0xad')]]){var _0x531a78=_['some']([this['channels'][_0x21973a['origtransfereruniqueid']],this[_0xfcfd('0x12')][_0x21973a['origtransfererlinkedid']],this[_0xfcfd('0x12')][_0x21973a[_0xfcfd('0xad')]]],function(_0xe951ad){return _0xe951ad&&_0xe951ad[_0xfcfd('0xb2')]===_0xfcfd('0xb3')&&_0xe951ad[_0xfcfd('0xb4')];});if(_0x531a78){if(this[_0xfcfd('0x12')][_0x21973a[_0xfcfd('0xb1')]])this[_0xfcfd('0x12')][_0x21973a[_0xfcfd('0xb1')]][_0xfcfd('0x9b')]=_0xfcfd('0xae');if(this[_0xfcfd('0x12')][_0x21973a[_0xfcfd('0xb5')]])this['channels'][_0x21973a[_0xfcfd('0xb5')]][_0xfcfd('0x9b')]=_0xfcfd('0xae');this[_0xfcfd('0x12')][_0x21973a[_0xfcfd('0xad')]]['transferType']=_0xfcfd('0xae');}}}}catch(_0xce25f5){logger[_0xfcfd('0x2a')](_0xfcfd('0xb6'),_0x21973a['uniqueid'],util[_0xfcfd('0x2c')](_0xce25f5,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0xfcfd('0x24')]=function(_0xc3474f){try{if(this[_0xfcfd('0x2e')](_0xc3474f)){logger[_0xfcfd('0x27')](_0xfcfd('0xb7'),_0xc3474f[_0xfcfd('0x35')],_0xc3474f[_0xfcfd('0xb8')],_0xc3474f['extension']);logger[_0xfcfd('0x33')]('[%s][voiceCallReport][blindtransfer]\x20event:',_0xc3474f[_0xfcfd('0x35')],util[_0xfcfd('0x2c')](_0xc3474f,{'showHidden':![],'depth':null}));if(this['channels'][_0xc3474f[_0xfcfd('0xaa')]]){this[_0xfcfd('0x12')][_0xc3474f[_0xfcfd('0xaa')]][_0xfcfd('0xab')]=_0xc3474f['transfereecalleridnum'];this['channels'][_0xc3474f[_0xfcfd('0xaa')]][_0xfcfd('0xac')]=_0xc3474f[_0xfcfd('0xb9')];this[_0xfcfd('0x12')][_0xc3474f[_0xfcfd('0xaa')]][_0xfcfd('0x9b')]=_0xfcfd('0xba');this[_0xfcfd('0x20')]({'event':_0xfcfd('0xbb'),'uniqueid':_0xc3474f[_0xfcfd('0xaa')],'linkedid':_0xc3474f['transfereruniqueid'],'context':_0xc3474f[_0xfcfd('0x4a')],'channel':_0xc3474f[_0xfcfd('0xbc')]});}else{this[_0xfcfd('0x12')][_0xc3474f[_0xfcfd('0xbd')]][_0xfcfd('0x9b')]='BLIND';this[_0xfcfd('0x20')]({'event':'BlindTransfer','uniqueid':_0xc3474f['transfereruniqueid'],'linkedid':_0xc3474f['transfereeuniqueid'],'context':_0xc3474f[_0xfcfd('0x4a')],'channel':_0xc3474f[_0xfcfd('0xbc')]});}}}catch(_0x47af3a){logger[_0xfcfd('0x2a')](_0xfcfd('0xbe'),_0xc3474f['uniqueid'],util['inspect'](_0x47af3a,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xfcfd('0x2d')][_0xfcfd('0xbf')]=function(_0xdb8fba){try{if(this[_0xfcfd('0x2e')](_0xdb8fba)){logger['debug']('[%s][voiceCallReport][musiconholdstart]\x20event:',_0xdb8fba[_0xfcfd('0x35')],util[_0xfcfd('0x2c')](_0xdb8fba,{'showHidden':![],'depth':null}));if(this['channels'][_0xdb8fba[_0xfcfd('0x35')]]){if(!_['isNil'](this[_0xfcfd('0x12')][_0xdb8fba[_0xfcfd('0x35')]][_0xfcfd('0x66')])){this[_0xfcfd('0x12')][_0xdb8fba[_0xfcfd('0x35')]]['mohstarttime']=moment()[_0xfcfd('0x41')](_0xfcfd('0x4c'));logger[_0xfcfd('0x27')](_0xfcfd('0xc0'),_0xdb8fba['uniqueid'],this['channels'][_0xdb8fba[_0xfcfd('0x35')]][_0xfcfd('0xc1')]);}}}}catch(_0x48598a){logger[_0xfcfd('0x2a')]('[%s][voiceCallReport][musiconholdstart]',_0xdb8fba[_0xfcfd('0x35')],util[_0xfcfd('0x2c')](_0x48598a,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xfcfd('0x2d')]['syncMusicOnHoldStop']=function(_0x377de5){try{if(this['isNotNull'](_0x377de5)){logger['debug'](_0xfcfd('0xc2'),_0x377de5[_0xfcfd('0x35')],util['inspect'](_0x377de5,{'showHidden':![],'depth':null}));if(this[_0xfcfd('0x12')][_0x377de5[_0xfcfd('0x35')]]){if(!_[_0xfcfd('0x62')](this[_0xfcfd('0x12')][_0x377de5[_0xfcfd('0x35')]][_0xfcfd('0xc1')])){this[_0xfcfd('0x12')][_0x377de5['uniqueid']]['mohtime']+=moment()[_0xfcfd('0xc3')](0x0)[_0xfcfd('0x68')](this['channels'][_0x377de5['uniqueid']]['mohstarttime'],_0xfcfd('0x5a'));logger[_0xfcfd('0x27')](_0xfcfd('0xc4'),_0x377de5[_0xfcfd('0x35')],this[_0xfcfd('0x12')][_0x377de5['uniqueid']]['mohtime']);delete this[_0xfcfd('0x12')][_0x377de5['uniqueid']][_0xfcfd('0xc1')];}}}}catch(_0x20f75f){logger[_0xfcfd('0x2a')](_0xfcfd('0xc5'),_0x377de5[_0xfcfd('0x35')],util['inspect'](_0x20f75f,{'showHidden':![],'depth':null}));}};module[_0xfcfd('0xc6')]=VoiceCallReport;
\ No newline at end of file
+var _0x7a41=['destinationchannel','[%s][voiceCallReport][hangup]\x20reason:%s','cause-txt','endtime','billableseconds','omit','[%s][voiceCallReport][hangup]\x20sending\x20user:agentcomplete\x20event:','user:agentcomplete','length','transferType','resolve','then','isEmpty','getSettings','stopRecordingOnTransfer','Action','StopMixMonitor','catch','finally','event','BlindTransfer','outbound','[%s][voiceCallReport][hangup]\x20sending\x20hangup\x20event:','[%s][voiceCallReport][hangup]','transfereeuniqueid','secondtransfereruniqueid','ATTENDED','transfertargetuniqueid','transfercalleridnum','origtransferercalleridnum','transfertargetcalleridnum','origtransfereruniqueid','origtransfererlinkedid','some','routeid','[%s][voiceCallReport][attendedtransfer]','[%s][voiceCallReport][blindtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','transfereecalleridnum','extension','[%s][voiceCallReport][blindtransfer]\x20event:','transferconnectedlinenum','BLIND','transfereruniqueid','transfererchannel','[%s][voiceCallReport][musiconholdstart]\x20event:','mohstarttime','[%s][voiceCallReport][musiconholdstart]\x20mohstarttime:%s','[%s][voiceCallReport][musiconholdstart]','syncMusicOnHoldStop','mohtime','[%s][voiceCallReport][musiconholdstop]\x20mohtime:%s','[%s][voiceCallReport][musiconholdstop]','lodash','moment','util','path','../../../config/logger','ami','../ami','../model/channel','set','queue','agi','playback','voicemail','NO\x20ANSWER','FAILED','ANSWERED','BUSY','redis','defaults','localhost','socket.io-emitter','channels','agents','blindTransfers','coreshowchannel','syncNewExten','bind','newexten','newchannel','newstate','syncNewState','varset','syncVarSet','hangup','syncHangup','newcallerid','syncAttendedTransfer','blindtransfer','syncBlindTransfer','musiconholdstart','syncMusicOnHoldStart','info','actionCoreShowChannels','error','prototype','emit','isNotNull','[%s][voiceCallReport][newcallerid]\x20calleridname:%s\x20calleridnum:%s','uniqueid','calleridnum','[%s][voiceCallReport][newcallerid]\x20event:','inspect','linkedid','isUndefined','pick','from-sip','xcally-motion-preview','channel','split','destconnectedlinenum','user:%s','user:agentconnect','accountcode','connectedlinenum','[%s][voiceCallReport][newcallerid]','debug','OutgoingSpoolFailed','[%s][voiceCallReport][newchannel]\x20context:%s\x20exten:%s','context','exten','starttime','format','disposition','toNumber','channelstate','keys','undefined','[%s][voiceCallReport][newchannel]\x20sending\x20user:agentconnect\x20event:','name','[%s][voiceCallReport][newchannel]','[%s][voiceCallReport][newexten]\x20event:','application','toLowerCase','applicationdata','appdata','startsWith','CDR(routeAlias)','[%s][voiceCallReport][newexten]\x20application:%s\x20appdata:%s','duration','subtract','seconds','YYYY-MM-DD\x20HH:mm:ss','merge','includes','lastapplication','lastdata','match','type','isNil','calleridname','[%s][voiceCallReport][newstate]\x20event:','answered','answertime','holdtime','diff','connectedlinename','membername','routealias','[%s][voiceCallReport][newstate]\x20sending\x20user:agentconnect\x20event:','[%s][voiceCallReport][newstate]','syncMixMonitorFilename','[%s][voiceCallReport][mixMonitorFilename]\x20monitorFilename:%s','.wav49','replace','.WAV','monitors','push','rec','[%s][voiceCallReport][mixMonitorFilename]','[%s][voiceCallReport][varset]\x20event:','variable','[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s','value','xmd-callerid','callerid','xmd-cdrtype','[%s][voiceCallReport][varset]\x20variable:xmd-cdrtype\x20value:%s','[%s][voiceCallReport][varset]\x20variable:xmd-queue\x20value:%s','originatecalleridnum','destination','xmd-callerid-preview','[%s][voiceCallReport][varset]\x20variable:xmd-callerid-preview\x20value:%s','xmcs-queue','sipcallid','[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s','sipcalluniqueid','mixmonitor_filename','parse','[%s][voiceCallReport][varset]'];(function(_0x66837e,_0x21d917){var _0x517c12=function(_0x5777bc){while(--_0x5777bc){_0x66837e['push'](_0x66837e['shift']());}};_0x517c12(++_0x21d917);}(_0x7a41,0xf3));var _0x17a4=function(_0xd89536,_0x8bcb57){_0xd89536=_0xd89536-0x0;var _0x1e151e=_0x7a41[_0xd89536];return _0x1e151e;};'use strict';var _=require(_0x17a4('0x0'));var moment=require(_0x17a4('0x1'));var util=require(_0x17a4('0x2'));var path=require(_0x17a4('0x3'));var Redis=require('ioredis');var config=require('../../../config/environment');var logger=require(_0x17a4('0x4'))(_0x17a4('0x5'));var ami=require(_0x17a4('0x6'));var Channel=require(_0x17a4('0x7'));var RpcSetting=require('../rpc/setting');var applications=[_0x17a4('0x8'),_0x17a4('0x9'),_0x17a4('0xa'),'dial',_0x17a4('0xb'),_0x17a4('0xc')];var dispositions=[_0x17a4('0xd'),_0x17a4('0xe'),'FAILED',_0x17a4('0xd'),'NO\x20ANSWER','NO\x20ANSWER',_0x17a4('0xf'),_0x17a4('0x10'),_0x17a4('0xe'),_0x17a4('0xe'),_0x17a4('0xe')];config[_0x17a4('0x11')]=_[_0x17a4('0x12')](config[_0x17a4('0x11')],{'host':_0x17a4('0x13'),'port':0x18eb});var io=require(_0x17a4('0x14'))(new Redis(config[_0x17a4('0x11')]));function VoiceCallReport(_0x4bf56e){this[_0x17a4('0x15')]=_0x4bf56e['channels'];this['agents']=_0x4bf56e[_0x17a4('0x16')];this[_0x17a4('0x17')]={};ami['on'](_0x17a4('0x18'),this[_0x17a4('0x19')][_0x17a4('0x1a')](this));ami['on'](_0x17a4('0x1b'),this[_0x17a4('0x19')]['bind'](this));ami['on'](_0x17a4('0x1c'),this['syncNewChannel'][_0x17a4('0x1a')](this));ami['on'](_0x17a4('0x1d'),this[_0x17a4('0x1e')][_0x17a4('0x1a')](this));ami['on'](_0x17a4('0x1f'),this[_0x17a4('0x20')][_0x17a4('0x1a')](this));ami['on'](_0x17a4('0x21'),this[_0x17a4('0x22')][_0x17a4('0x1a')](this));ami['on'](_0x17a4('0x23'),this['syncNewCallerId'][_0x17a4('0x1a')](this));ami['on']('attendedtransfer',this[_0x17a4('0x24')][_0x17a4('0x1a')](this));ami['on'](_0x17a4('0x25'),this[_0x17a4('0x26')][_0x17a4('0x1a')](this));ami['on'](_0x17a4('0x27'),this[_0x17a4('0x28')]['bind'](this));ami['on']('musiconholdstop',this['syncMusicOnHoldStop']['bind'](this));try{logger[_0x17a4('0x29')]('[voiceCallReport][coreshowchannels]\x20started');ami[_0x17a4('0x2a')]();}catch(_0x4361fc){logger[_0x17a4('0x2b')]('[voiceCallReport][coreshowchannels]',util['inspect'](_0x4361fc,{'showHidden':![],'depth':null}));}}VoiceCallReport[_0x17a4('0x2c')]['isNotNull']=function(_0x53fb5d){return _0x53fb5d!==null&&!_['isUndefined'](_0x53fb5d);};VoiceCallReport[_0x17a4('0x2c')][_0x17a4('0x2d')]=function(_0x2a16a3,_0x1ad810,_0x1b827c){io['to'](_0x2a16a3)['emit'](_0x1ad810,_0x1b827c);};VoiceCallReport['prototype']['syncNewCallerId']=function(_0x3e420d){try{if(this[_0x17a4('0x2e')](_0x3e420d)){logger['info'](_0x17a4('0x2f'),_0x3e420d[_0x17a4('0x30')],_0x3e420d['calleridname'],_0x3e420d[_0x17a4('0x31')]);logger['debug'](_0x17a4('0x32'),_0x3e420d[_0x17a4('0x30')],util[_0x17a4('0x33')](_0x3e420d,{'showHidden':![],'depth':null}));if(_0x3e420d[_0x17a4('0x30')]===_0x3e420d[_0x17a4('0x34')]){if(!_[_0x17a4('0x35')](this[_0x17a4('0x15')][_0x3e420d[_0x17a4('0x30')]])){_['merge'](this[_0x17a4('0x15')][_0x3e420d[_0x17a4('0x30')]],_[_0x17a4('0x36')](_0x3e420d,_['keys'](this[_0x17a4('0x15')][_0x3e420d[_0x17a4('0x30')]])));}}if(_0x3e420d['context']===_0x17a4('0x37')){if(this['agents'][_0x3e420d['channel']['split']('-')[0x0]]){if(_0x3e420d['exten']==_0x17a4('0x38')){this[_0x17a4('0x16')][_0x3e420d[_0x17a4('0x39')][_0x17a4('0x3a')]('-')[0x0]][_0x17a4('0x3b')]=_0x3e420d['connectedlinenum'];this[_0x17a4('0x2d')](util['format'](_0x17a4('0x3c'),this[_0x17a4('0x16')][_0x3e420d[_0x17a4('0x39')][_0x17a4('0x3a')]('-')[0x0]]['name']),_0x17a4('0x3d'),{'destaccountcode':this[_0x17a4('0x16')][_0x3e420d[_0x17a4('0x39')][_0x17a4('0x3a')]('-')[0x0]][_0x17a4('0x3e')],'destconnectedlinenum':_0x3e420d[_0x17a4('0x3f')]});}}}}}catch(_0xf98ad8){logger[_0x17a4('0x2b')](_0x17a4('0x40'),_0x3e420d['uniqueid'],util[_0x17a4('0x33')](_0xf98ad8,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype']['syncNewChannel']=function(_0x39033c){try{if(this['isNotNull'](_0x39033c)){logger[_0x17a4('0x41')]('[%s][voiceCallReport][newchannel]\x20event:',_0x39033c['uniqueid'],util['inspect'](_0x39033c,{'showHidden':![],'depth':null}));if(this[_0x17a4('0x15')][_0x39033c[_0x17a4('0x30')]]){return;}if(_0x39033c[_0x17a4('0x39')]===_0x17a4('0x42')){return;}if(_0x39033c[_0x17a4('0x30')]!==_0x39033c[_0x17a4('0x34')]&&!this[_0x17a4('0x17')][_0x39033c[_0x17a4('0x34')]]){return;}logger['info'](_0x17a4('0x43'),_0x39033c['uniqueid'],_0x39033c[_0x17a4('0x44')],_0x39033c[_0x17a4('0x45')]);this[_0x17a4('0x15')][_0x39033c[_0x17a4('0x30')]]=new Channel();this[_0x17a4('0x15')][_0x39033c['uniqueid']][_0x17a4('0x46')]=moment()[_0x17a4('0x47')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x17a4('0x15')][_0x39033c[_0x17a4('0x30')]][_0x17a4('0x48')]=dispositions[_[_0x17a4('0x49')](_0x39033c[_0x17a4('0x4a')])];_['merge'](this[_0x17a4('0x15')][_0x39033c[_0x17a4('0x30')]],_[_0x17a4('0x36')](_0x39033c,_[_0x17a4('0x4b')](this['channels'][_0x39033c['uniqueid']])));if(_0x39033c[_0x17a4('0x44')]===_0x17a4('0x37')){var _0x31a044=this['agents'][_0x39033c[_0x17a4('0x39')][_0x17a4('0x3a')]('-')[0x0]];if(_0x31a044&&typeof _0x31a044[_0x17a4('0x3b')]===_0x17a4('0x4c')){_0x31a044[_0x17a4('0x3b')]=_0x39033c[_0x17a4('0x45')];logger[_0x17a4('0x41')](_0x17a4('0x4d'),_0x39033c[_0x17a4('0x30')],util[_0x17a4('0x33')]({'id':_0x31a044['id'],'destaccountcode':_0x31a044[_0x17a4('0x3e')],'destconnectedlinenum':_0x39033c[_0x17a4('0x45')]},{'showHidden':![],'depth':null}));this[_0x17a4('0x2d')](util[_0x17a4('0x47')](_0x17a4('0x3c'),_0x31a044[_0x17a4('0x4e')]),_0x17a4('0x3d'),{'id':_0x31a044['id'],'destaccountcode':_0x31a044['accountcode'],'destconnectedlinenum':_0x39033c[_0x17a4('0x45')]});}}}}catch(_0x304e4e){logger[_0x17a4('0x2b')](_0x17a4('0x4f'),_0x39033c[_0x17a4('0x30')],util[_0x17a4('0x33')](_0x304e4e,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x17a4('0x2c')]['syncNewExten']=function(_0x4b4163){try{if(this['isNotNull'](_0x4b4163)){logger[_0x17a4('0x41')](_0x17a4('0x50'),_0x4b4163['uniqueid'],util[_0x17a4('0x33')](_0x4b4163,{'showHidden':![],'depth':null}));if(_0x4b4163['channel']===_0x17a4('0x42')||_0x4b4163[_0x17a4('0x45')]==='h')return;if(_0x4b4163['uniqueid']===_0x4b4163[_0x17a4('0x34')]||this[_0x17a4('0x17')][_0x4b4163[_0x17a4('0x34')]]){_0x4b4163[_0x17a4('0x51')]=_0x4b4163[_0x17a4('0x51')]?_0x4b4163[_0x17a4('0x51')][_0x17a4('0x52')]():undefined;_0x4b4163[_0x17a4('0x53')]=_0x4b4163[_0x17a4('0x54')]||_0x4b4163['applicationdata'];if(_0x4b4163['appdata']&&!_0x4b4163[_0x17a4('0x54')][_0x17a4('0x55')](_0x17a4('0x56'))&&_0x4b4163['application']!==_0x17a4('0x9')){_0x4b4163['applicationdata']=_0x4b4163[_0x17a4('0x53')][_0x17a4('0x52')]();}logger[_0x17a4('0x29')](_0x17a4('0x57'),_0x4b4163['uniqueid'],_0x4b4163[_0x17a4('0x51')],_0x4b4163[_0x17a4('0x53')]);if(_[_0x17a4('0x35')](this['channels'][_0x4b4163['uniqueid']])){this[_0x17a4('0x15')][_0x4b4163['uniqueid']]=new Channel();this[_0x17a4('0x15')][_0x4b4163[_0x17a4('0x30')]][_0x17a4('0x46')]=_0x4b4163[_0x17a4('0x58')]?moment()[_0x17a4('0x59')](moment[_0x17a4('0x58')](_0x4b4163['duration'])[_0x17a4('0x5a')](),_0x17a4('0x5a'))[_0x17a4('0x47')](_0x17a4('0x5b')):moment()[_0x17a4('0x47')](_0x17a4('0x5b'));this[_0x17a4('0x15')][_0x4b4163[_0x17a4('0x30')]][_0x17a4('0x48')]='NO\x20ANSWER';}_[_0x17a4('0x5c')](this[_0x17a4('0x15')][_0x4b4163[_0x17a4('0x30')]],_[_0x17a4('0x36')](_0x4b4163,_[_0x17a4('0x4b')](this[_0x17a4('0x15')][_0x4b4163[_0x17a4('0x30')]])));if(_[_0x17a4('0x5d')](applications,_0x4b4163[_0x17a4('0x51')])){this['channels'][_0x4b4163['uniqueid']][_0x17a4('0x5e')]=_0x4b4163['application'];this[_0x17a4('0x15')][_0x4b4163[_0x17a4('0x30')]][_0x17a4('0x5f')]=_0x4b4163[_0x17a4('0x53')];if(_0x4b4163['application']===_0x17a4('0x8')&&_['startsWith'](_0x4b4163[_0x17a4('0x53')][_0x17a4('0x52')](),'cdr(')){var _0x54f15f=_0x4b4163[_0x17a4('0x53')][_0x17a4('0x3a')]('=');var _0x1a3151=_0x54f15f[0x0][_0x17a4('0x52')]()[_0x17a4('0x60')](/cdr\((.*)\)/);if(_0x1a3151){if(_0x1a3151[0x1]===_0x17a4('0x61')&&!_[_0x17a4('0x62')](this[_0x17a4('0x15')][_0x4b4163['uniqueid']][_0x1a3151[0x1]]))return;this[_0x17a4('0x15')][_0x4b4163[_0x17a4('0x30')]][_0x1a3151[0x1]]=_0x54f15f[0x1];}}else if(_0x4b4163[_0x17a4('0x51')]===_0x17a4('0x9')){this[_0x17a4('0x15')][_0x4b4163['uniqueid']][_0x17a4('0x9')]=_0x4b4163[_0x17a4('0x53')][_0x17a4('0x3a')](',')[0x0];}}}}}catch(_0x54a29e){logger[_0x17a4('0x2b')]('[%s][voiceCallReport][newexten]',_0x4b4163['uniqueid'],util[_0x17a4('0x33')](_0x54a29e,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x17a4('0x2c')][_0x17a4('0x1e')]=function(_0x1e1b3b){try{if(this['isNotNull'](_0x1e1b3b)){logger[_0x17a4('0x29')]('[%s][voiceCallReport][newstate]\x20linkedid:%s\x20calleridname:%s\x20calleridnum:%s',_0x1e1b3b[_0x17a4('0x30')],_0x1e1b3b[_0x17a4('0x34')],_0x1e1b3b[_0x17a4('0x63')],_0x1e1b3b['calleridnum']);logger[_0x17a4('0x41')](_0x17a4('0x64'),_0x1e1b3b[_0x17a4('0x30')],util['inspect'](_0x1e1b3b,{'showHidden':![],'depth':null}));if(_0x1e1b3b[_0x17a4('0x4a')]!=='6')return;var _0x539061=this[_0x17a4('0x16')][_0x1e1b3b[_0x17a4('0x39')][_0x17a4('0x3a')]('-')[0x0]];if(_0x1e1b3b['uniqueid']!==_0x1e1b3b[_0x17a4('0x34')]){var _0x57d2fa=moment();if(this[_0x17a4('0x15')][_0x1e1b3b[_0x17a4('0x34')]]){if(!this[_0x17a4('0x15')][_0x1e1b3b['linkedid']][_0x17a4('0x65')]){this[_0x17a4('0x15')][_0x1e1b3b['linkedid']]['answered']=!![];this[_0x17a4('0x15')][_0x1e1b3b[_0x17a4('0x34')]][_0x17a4('0x66')]=_0x57d2fa['format'](_0x17a4('0x5b'));if(this[_0x17a4('0x15')][_0x1e1b3b[_0x17a4('0x34')]][_0x17a4('0x46')]){this[_0x17a4('0x15')][_0x1e1b3b[_0x17a4('0x34')]][_0x17a4('0x67')]=_0x57d2fa[_0x17a4('0x68')](this['channels'][_0x1e1b3b[_0x17a4('0x34')]][_0x17a4('0x46')],_0x17a4('0x5a'));}}this['channels'][_0x1e1b3b[_0x17a4('0x34')]][_0x17a4('0x34')]=_0x1e1b3b['uniqueid'];if(_0x1e1b3b[_0x17a4('0x31')]!==_0x17a4('0x38')){this[_0x17a4('0x15')][_0x1e1b3b[_0x17a4('0x34')]]['connectedlinenum']=_0x1e1b3b[_0x17a4('0x31')];}this[_0x17a4('0x15')][_0x1e1b3b[_0x17a4('0x34')]][_0x17a4('0x69')]=_0x1e1b3b[_0x17a4('0x63')];this[_0x17a4('0x15')][_0x1e1b3b[_0x17a4('0x34')]]['destinationchannel']=_0x1e1b3b['channel'];this['channels'][_0x1e1b3b[_0x17a4('0x34')]][_0x17a4('0x48')]=dispositions[_[_0x17a4('0x49')](_0x1e1b3b['channelstate'])];if(_0x539061){this[_0x17a4('0x15')][_0x1e1b3b[_0x17a4('0x34')]]['UserId']=_0x539061['id'];this[_0x17a4('0x15')][_0x1e1b3b['linkedid']]['membername']=_0x539061[_0x17a4('0x4e')];}}if(this[_0x17a4('0x15')][_0x1e1b3b[_0x17a4('0x30')]]){if(!this[_0x17a4('0x15')][_0x1e1b3b['uniqueid']][_0x17a4('0x65')]){this[_0x17a4('0x15')][_0x1e1b3b['uniqueid']]['answered']=!![];this[_0x17a4('0x15')][_0x1e1b3b[_0x17a4('0x30')]]['answertime']=_0x57d2fa[_0x17a4('0x47')](_0x17a4('0x5b'));if(this[_0x17a4('0x15')][_0x1e1b3b[_0x17a4('0x30')]][_0x17a4('0x46')]){this['channels'][_0x1e1b3b[_0x17a4('0x30')]]['holdtime']=_0x57d2fa[_0x17a4('0x68')](this[_0x17a4('0x15')][_0x1e1b3b['uniqueid']][_0x17a4('0x46')],_0x17a4('0x5a'));}}if(_0x1e1b3b[_0x17a4('0x31')]!==_0x17a4('0x38')){this[_0x17a4('0x15')][_0x1e1b3b[_0x17a4('0x30')]][_0x17a4('0x3f')]=_0x1e1b3b['calleridnum'];}this['channels'][_0x1e1b3b[_0x17a4('0x30')]][_0x17a4('0x69')]=_0x1e1b3b[_0x17a4('0x63')];this['channels'][_0x1e1b3b[_0x17a4('0x30')]]['destinationchannel']=_0x1e1b3b['channel'];this[_0x17a4('0x15')][_0x1e1b3b[_0x17a4('0x30')]]['disposition']=dispositions[_[_0x17a4('0x49')](_0x1e1b3b[_0x17a4('0x4a')])];}}else{if(this[_0x17a4('0x15')][_0x1e1b3b[_0x17a4('0x30')]]){if(_0x539061){this[_0x17a4('0x15')][_0x1e1b3b[_0x17a4('0x30')]]['UserId']=_0x539061['id'];this[_0x17a4('0x15')][_0x1e1b3b[_0x17a4('0x30')]][_0x17a4('0x6a')]=_0x539061['name'];}}}if(_0x1e1b3b[_0x17a4('0x44')]===_0x17a4('0x37')){if(_0x539061){_0x539061[_0x17a4('0x3b')]=_0x1e1b3b[_0x17a4('0x45')];var _0x5bc57d,_0x461323;if(this['channels'][_0x1e1b3b['uniqueid']]){_0x5bc57d=this[_0x17a4('0x15')][_0x1e1b3b[_0x17a4('0x30')]][_0x17a4('0x6b')];_0x461323=this[_0x17a4('0x15')][_0x1e1b3b[_0x17a4('0x30')]]['queue'];}else if(this[_0x17a4('0x15')][_0x1e1b3b[_0x17a4('0x34')]]){_0x5bc57d=this[_0x17a4('0x15')][_0x1e1b3b[_0x17a4('0x34')]]['routealias'];_0x461323=this['channels'][_0x1e1b3b[_0x17a4('0x34')]][_0x17a4('0x9')];}_0x539061[_0x17a4('0x9')]=_0x461323;_0x539061['routealias']=_0x5bc57d;var _0x4d30b4={'id':_0x539061['id'],'name':_0x539061[_0x17a4('0x4e')],'agentconnected':!![],'destaccountcode':_0x539061[_0x17a4('0x3e')],'destconnectedlinenum':_0x1e1b3b[_0x17a4('0x45')],'queue':_0x461323||undefined,'routealias':_0x5bc57d,'uniqueid':_0x1e1b3b[_0x17a4('0x34')]};logger['debug'](_0x17a4('0x6c'),_0x1e1b3b[_0x17a4('0x30')],util[_0x17a4('0x33')](_0x4d30b4,{'showHidden':![],'depth':null}));this[_0x17a4('0x2d')](util['format'](_0x17a4('0x3c'),_0x539061['name']),'user:agentconnect',_0x4d30b4);}}}}catch(_0x52fb63){logger[_0x17a4('0x2b')](_0x17a4('0x6d'),_0x1e1b3b[_0x17a4('0x30')],util[_0x17a4('0x33')](_0x52fb63,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x17a4('0x2c')][_0x17a4('0x6e')]=function(_0x3fb709,_0x32be8c){try{if(this[_0x17a4('0x15')][_0x3fb709]){logger[_0x17a4('0x29')](_0x17a4('0x6f'),_0x3fb709,_0x32be8c);this[_0x17a4('0x15')][_0x3fb709]['monitor']=!![];if(_['endsWith'](_0x32be8c,_0x17a4('0x70'))){_0x32be8c=_0x32be8c[_0x17a4('0x71')](_0x17a4('0x70'),_0x17a4('0x72'));}this['channels'][_0x3fb709]['monitorFilename']=_0x32be8c;var _0x1790e6=_['find'](this[_0x17a4('0x15')][_0x3fb709][_0x17a4('0x73')],{'filename':_0x32be8c});if(_['isNil'](_0x1790e6)){this[_0x17a4('0x15')][_0x3fb709][_0x17a4('0x73')][_0x17a4('0x74')]({'filename':_0x32be8c,'createdAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'mixmonitorid':'','status':_0x17a4('0x75')});}}}catch(_0x4428fb){logger[_0x17a4('0x2b')](_0x17a4('0x76'),_0x3fb709,util['inspect'](_0x4428fb,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x17a4('0x2c')]['syncVarSet']=function(_0x2ae2bf){try{if(this[_0x17a4('0x2e')](_0x2ae2bf)){logger['debug'](_0x17a4('0x77'),_0x2ae2bf['uniqueid'],util[_0x17a4('0x33')](_0x2ae2bf,{'showHidden':![],'depth':null}));if(this[_0x17a4('0x15')][_0x2ae2bf[_0x17a4('0x30')]]&&_0x2ae2bf['channel']!=_0x17a4('0x42')){if(this[_0x17a4('0x2e')](_0x2ae2bf[_0x17a4('0x78')])){if(this[_0x17a4('0x2e')](_0x2ae2bf[_0x17a4('0x78')]['mixmonitor_filename'])){logger[_0x17a4('0x29')](_0x17a4('0x79'),_0x2ae2bf['uniqueid'],_0x2ae2bf[_0x17a4('0x7a')]);this[_0x17a4('0x6e')](_0x2ae2bf[_0x17a4('0x30')],_0x2ae2bf[_0x17a4('0x7a')]);}else if(this[_0x17a4('0x2e')](_0x2ae2bf[_0x17a4('0x78')]['xmd-phone'])){logger[_0x17a4('0x29')]('[%s][voiceCallReport][varset]\x20variable:xmd-phone\x20value:%s',_0x2ae2bf[_0x17a4('0x30')],_0x2ae2bf[_0x17a4('0x7a')]);this[_0x17a4('0x15')][_0x2ae2bf['uniqueid']]['calleridnum']=_0x2ae2bf[_0x17a4('0x7a')];}else if(this[_0x17a4('0x2e')](_0x2ae2bf[_0x17a4('0x78')][_0x17a4('0x7b')])){logger[_0x17a4('0x29')]('[%s][voiceCallReport][varset]\x20variable:xmd-callerid\x20value:%s',_0x2ae2bf[_0x17a4('0x30')],_0x2ae2bf[_0x17a4('0x7a')]);this[_0x17a4('0x15')][_0x2ae2bf[_0x17a4('0x30')]][_0x17a4('0x7c')]=_0x2ae2bf[_0x17a4('0x7a')];}else if(this[_0x17a4('0x2e')](_0x2ae2bf[_0x17a4('0x78')][_0x17a4('0x7d')])){logger[_0x17a4('0x29')](_0x17a4('0x7e'),_0x2ae2bf[_0x17a4('0x30')],_0x2ae2bf[_0x17a4('0x7a')]);this[_0x17a4('0x15')][_0x2ae2bf['uniqueid']][_0x17a4('0x61')]=_0x2ae2bf[_0x17a4('0x7a')];}else if(this[_0x17a4('0x2e')](_0x2ae2bf[_0x17a4('0x78')]['xmd-queue'])){logger[_0x17a4('0x29')](_0x17a4('0x7f'),_0x2ae2bf[_0x17a4('0x30')],_0x2ae2bf['value'][_0x17a4('0x3a')](',')[0x0]);this['channels'][_0x2ae2bf[_0x17a4('0x30')]][_0x17a4('0x9')]=_0x2ae2bf[_0x17a4('0x7a')]['split'](',')[0x0];}else if(this[_0x17a4('0x2e')](_0x2ae2bf['variable']['xmd-originatecalleridnum'])){logger[_0x17a4('0x29')]('[%s][voiceCallReport][varset]\x20variable:xmd-originatecalleridnum\x20value:%s',_0x2ae2bf[_0x17a4('0x30')],_0x2ae2bf[_0x17a4('0x7a')]);this['channels'][_0x2ae2bf[_0x17a4('0x30')]][_0x17a4('0x80')]=_0x2ae2bf[_0x17a4('0x7a')];}else if(this[_0x17a4('0x2e')](_0x2ae2bf[_0x17a4('0x78')]['xmd-destination'])){logger[_0x17a4('0x29')]('[%s][voiceCallReport][varset]\x20variable:xmd-destination\x20value:%s',_0x2ae2bf['uniqueid'],_0x2ae2bf[_0x17a4('0x7a')]);this[_0x17a4('0x15')][_0x2ae2bf[_0x17a4('0x30')]][_0x17a4('0x81')]=_0x2ae2bf[_0x17a4('0x7a')];}else if(this[_0x17a4('0x2e')](_0x2ae2bf[_0x17a4('0x78')][_0x17a4('0x82')])){logger['info'](_0x17a4('0x83'),_0x2ae2bf[_0x17a4('0x30')],_0x2ae2bf[_0x17a4('0x7a')]);this[_0x17a4('0x15')][_0x2ae2bf[_0x17a4('0x30')]]['calleridpreview']=_0x2ae2bf['value'];}else if(this[_0x17a4('0x2e')](_0x2ae2bf[_0x17a4('0x78')][_0x17a4('0x84')])){logger[_0x17a4('0x29')]('[%s][voiceCallReport][varset]\x20variable:xmcs-queue\x20value:%s',_0x2ae2bf[_0x17a4('0x30')],_0x2ae2bf[_0x17a4('0x7a')]);this[_0x17a4('0x15')][_0x2ae2bf['uniqueid']][_0x17a4('0x9')]=_0x2ae2bf[_0x17a4('0x7a')];}else if(this['isNotNull'](_0x2ae2bf[_0x17a4('0x78')][_0x17a4('0x85')])){logger[_0x17a4('0x29')](_0x17a4('0x86'),_0x2ae2bf[_0x17a4('0x30')],_0x2ae2bf[_0x17a4('0x7a')]);this[_0x17a4('0x15')][_0x2ae2bf[_0x17a4('0x30')]][_0x17a4('0x87')]=_0x2ae2bf['value'];}}}else if(this[_0x17a4('0x2e')](_0x2ae2bf[_0x17a4('0x78')][_0x17a4('0x88')])){if(_0x2ae2bf[_0x17a4('0x7a')]){var _0x4739b1=path[_0x17a4('0x89')](_0x2ae2bf[_0x17a4('0x7a')])[_0x17a4('0x4e')];logger[_0x17a4('0x29')](_0x17a4('0x79'),_0x4739b1,_0x2ae2bf['value']);this[_0x17a4('0x6e')](_0x4739b1,_0x2ae2bf['value']);}}else if(this[_0x17a4('0x15')][_0x2ae2bf[_0x17a4('0x34')]]){if(this[_0x17a4('0x2e')](_0x2ae2bf[_0x17a4('0x78')])){if(this[_0x17a4('0x2e')](_0x2ae2bf[_0x17a4('0x78')][_0x17a4('0x85')])){logger['info'](_0x17a4('0x86'),_0x2ae2bf[_0x17a4('0x34')],_0x2ae2bf[_0x17a4('0x7a')]);this[_0x17a4('0x15')][_0x2ae2bf[_0x17a4('0x34')]]['sipcalllinkedid']=_0x2ae2bf[_0x17a4('0x7a')];}}}}}catch(_0x3f61db){logger['error'](_0x17a4('0x8a'),_0x2ae2bf[_0x17a4('0x30')],util['inspect'](_0x3f61db,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x17a4('0x2c')]['syncHangup']=function(_0x3df63a){try{if(this[_0x17a4('0x2e')](_0x3df63a)){logger[_0x17a4('0x41')]('[%s][voiceCallReport][hangup]\x20event:',_0x3df63a[_0x17a4('0x30')],util[_0x17a4('0x33')](_0x3df63a,{'showHidden':![],'depth':null}));if(this[_0x17a4('0x17')][_0x3df63a[_0x17a4('0x34')]]){if(this[_0x17a4('0x15')][this['blindTransfers'][_0x3df63a[_0x17a4('0x34')]]['linkedid']]){this[_0x17a4('0x15')][this[_0x17a4('0x17')][_0x3df63a[_0x17a4('0x34')]][_0x17a4('0x34')]][_0x17a4('0x30')]=_0x3df63a[_0x17a4('0x30')];this[_0x17a4('0x15')][this[_0x17a4('0x17')][_0x3df63a[_0x17a4('0x34')]][_0x17a4('0x34')]][_0x17a4('0x65')]=this[_0x17a4('0x15')][_0x3df63a[_0x17a4('0x30')]][_0x17a4('0x65')];this[_0x17a4('0x15')][this['blindTransfers'][_0x3df63a['linkedid']][_0x17a4('0x34')]][_0x17a4('0x66')]=this[_0x17a4('0x15')][_0x3df63a[_0x17a4('0x30')]][_0x17a4('0x66')];this[_0x17a4('0x15')][this[_0x17a4('0x17')][_0x3df63a['linkedid']][_0x17a4('0x34')]][_0x17a4('0x8b')]=this[_0x17a4('0x15')][this['blindTransfers'][_0x3df63a[_0x17a4('0x34')]][_0x17a4('0x34')]][_0x17a4('0x39')];this['channels'][this[_0x17a4('0x17')][_0x3df63a[_0x17a4('0x34')]][_0x17a4('0x34')]][_0x17a4('0x48')]=this[_0x17a4('0x15')][_0x3df63a[_0x17a4('0x30')]][_0x17a4('0x48')];this[_0x17a4('0x15')][_0x3df63a[_0x17a4('0x30')]]=this[_0x17a4('0x15')][this[_0x17a4('0x17')][_0x3df63a[_0x17a4('0x34')]][_0x17a4('0x34')]];delete this['channels'][this[_0x17a4('0x17')][_0x3df63a[_0x17a4('0x34')]][_0x17a4('0x34')]];}else if(this[_0x17a4('0x15')][this[_0x17a4('0x17')][_0x3df63a[_0x17a4('0x34')]][_0x17a4('0x30')]]){this[_0x17a4('0x15')][this[_0x17a4('0x17')][_0x3df63a['linkedid']]['uniqueid']][_0x17a4('0x30')]=[this[_0x17a4('0x15')][this[_0x17a4('0x17')][_0x3df63a[_0x17a4('0x34')]]['uniqueid']][_0x17a4('0x34')],this['channels'][this[_0x17a4('0x17')][_0x3df63a[_0x17a4('0x34')]][_0x17a4('0x30')]]['linkedid']=this[_0x17a4('0x15')][this[_0x17a4('0x17')][_0x3df63a[_0x17a4('0x34')]][_0x17a4('0x30')]][_0x17a4('0x30')]][0x0];this[_0x17a4('0x15')][this[_0x17a4('0x17')][_0x3df63a['linkedid']][_0x17a4('0x30')]]['answered']=this[_0x17a4('0x15')][_0x3df63a[_0x17a4('0x30')]][_0x17a4('0x65')];this[_0x17a4('0x15')][this[_0x17a4('0x17')][_0x3df63a[_0x17a4('0x34')]][_0x17a4('0x30')]][_0x17a4('0x66')]=this[_0x17a4('0x15')][_0x3df63a[_0x17a4('0x30')]]['answertime'];this['channels'][this[_0x17a4('0x17')][_0x3df63a[_0x17a4('0x34')]][_0x17a4('0x30')]][_0x17a4('0x8b')]=this['channels'][this[_0x17a4('0x17')][_0x3df63a['linkedid']][_0x17a4('0x30')]]['channel'];this['channels'][this[_0x17a4('0x17')][_0x3df63a[_0x17a4('0x34')]][_0x17a4('0x30')]]['disposition']=this[_0x17a4('0x15')][_0x3df63a['uniqueid']]['disposition'];this[_0x17a4('0x15')][_0x3df63a[_0x17a4('0x30')]]=this[_0x17a4('0x15')][this['blindTransfers'][_0x3df63a[_0x17a4('0x34')]][_0x17a4('0x30')]];delete this[_0x17a4('0x15')][this[_0x17a4('0x17')][_0x3df63a[_0x17a4('0x34')]][_0x17a4('0x30')]];}}if(this[_0x17a4('0x15')][_0x3df63a[_0x17a4('0x30')]]){logger[_0x17a4('0x29')](_0x17a4('0x8c'),_0x3df63a[_0x17a4('0x30')],_0x3df63a[_0x17a4('0x8d')]);var _0x456e70=moment();this[_0x17a4('0x15')][_0x3df63a[_0x17a4('0x30')]][_0x17a4('0x8e')]=_0x456e70['format'](_0x17a4('0x5b'));this[_0x17a4('0x15')][_0x3df63a[_0x17a4('0x30')]][_0x17a4('0x58')]=_0x456e70['diff'](this[_0x17a4('0x15')][_0x3df63a[_0x17a4('0x30')]][_0x17a4('0x46')],_0x17a4('0x5a'));if(this[_0x17a4('0x15')][_0x3df63a[_0x17a4('0x30')]][_0x17a4('0x65')]){this[_0x17a4('0x15')][_0x3df63a['uniqueid']]['billableseconds']=_0x456e70[_0x17a4('0x68')](this['channels'][_0x3df63a[_0x17a4('0x30')]]['answertime'],'seconds');this[_0x17a4('0x15')][_0x3df63a[_0x17a4('0x30')]]['holdtime']=this[_0x17a4('0x15')][_0x3df63a[_0x17a4('0x30')]]['duration']-this[_0x17a4('0x15')][_0x3df63a['uniqueid']][_0x17a4('0x8f')];}if(_0x3df63a[_0x17a4('0x44')]===_0x17a4('0x37')){if(this[_0x17a4('0x16')][_0x3df63a[_0x17a4('0x39')]['split']('-')[0x0]]){this['agents'][_0x3df63a[_0x17a4('0x39')][_0x17a4('0x3a')]('-')[0x0]]=_[_0x17a4('0x90')](this[_0x17a4('0x16')][_0x3df63a['channel'][_0x17a4('0x3a')]('-')[0x0]],[_0x17a4('0x3b')]);logger[_0x17a4('0x41')](_0x17a4('0x91'),_0x3df63a[_0x17a4('0x30')],util['inspect']({'id':this[_0x17a4('0x16')][_0x3df63a[_0x17a4('0x39')]['split']('-')[0x0]]['id'],'destaccountcode':this[_0x17a4('0x16')][_0x3df63a[_0x17a4('0x39')][_0x17a4('0x3a')]('-')[0x0]][_0x17a4('0x3e')]},{'showHidden':![],'depth':null}));this[_0x17a4('0x2d')](util['format'](_0x17a4('0x3c'),this[_0x17a4('0x16')][_0x3df63a[_0x17a4('0x39')][_0x17a4('0x3a')]('-')[0x0]][_0x17a4('0x4e')]),_0x17a4('0x92'),{'id':this[_0x17a4('0x16')][_0x3df63a[_0x17a4('0x39')][_0x17a4('0x3a')]('-')[0x0]]['id'],'destaccountcode':this[_0x17a4('0x16')][_0x3df63a[_0x17a4('0x39')]['split']('-')[0x0]]['accountcode']});for(var _0x10f622=0x0;_0x10f622<Object['keys'](this[_0x17a4('0x16')])[_0x17a4('0x93')];_0x10f622++){var _0x4f638a=Object[_0x17a4('0x4b')](this[_0x17a4('0x16')])[_0x10f622];var _0x2c32e0=this['agents'][_0x4f638a];if(_0x2c32e0[_0x17a4('0x3e')]===Number(this[_0x17a4('0x15')][_0x3df63a['uniqueid']]['connectedlinenum'])){this[_0x17a4('0x2d')](util[_0x17a4('0x47')]('user:%s',_0x2c32e0[_0x17a4('0x4e')]),_0x17a4('0x92'),{'id':_0x2c32e0['id'],'destaccountcode':_0x2c32e0[_0x17a4('0x3e')],'transfer':this[_0x17a4('0x15')][_0x3df63a[_0x17a4('0x30')]][_0x17a4('0x94')]});break;}}}}var _0x14af95=this;Promise[_0x17a4('0x95')]()[_0x17a4('0x96')](function(){var _0x5a853d=_0x14af95[_0x17a4('0x15')][_0x3df63a['uniqueid']];if(typeof _0x5a853d['transferType']===_0x17a4('0x4c'))return;if(_[_0x17a4('0x97')](_0x5a853d[_0x17a4('0x73')]))return;return RpcSetting[_0x17a4('0x98')]()[_0x17a4('0x96')](function(_0x5db3da){if(!_0x5db3da[_0x17a4('0x99')])return;return Promise[_0x17a4('0x95')]()[_0x17a4('0x96')](function(){return ami[_0x17a4('0x9a')]({'action':_0x17a4('0x9b'),'channel':_0x5a853d[_0x17a4('0x39')]})[_0x17a4('0x9c')](function(){});})[_0x17a4('0x96')](function(){return ami[_0x17a4('0x9a')]({'action':_0x17a4('0x9b'),'channel':_0x5a853d[_0x17a4('0x8b')]})['catch'](function(){})[_0x17a4('0x9d')](function(){var _0x4f4f50=_0x14af95[_0x17a4('0x16')][_0x5a853d[_0x17a4('0x8b')][_0x17a4('0x3a')]('-')[0x0]];if(!_0x4f4f50)return;io['emit']('webbar:stopmonitors',{'agentId':_0x4f4f50['id'],'uniqueid':_0x5a853d[_0x17a4('0x30')]});});});});})[_0x17a4('0x96')](function(){if(_0x3df63a[_0x17a4('0x9e')]===_0x17a4('0x9f')){_0x14af95[_0x17a4('0x17')][_0x3df63a[_0x17a4('0x30')]]=_0x3df63a;}else{if(_0x14af95['channels'][_0x3df63a[_0x17a4('0x30')]][_0x17a4('0x61')]===_0x17a4('0xa0')&&_0x14af95['blindTransfers'][_0x3df63a[_0x17a4('0x30')]]){_0x14af95[_0x17a4('0x15')][_0x3df63a[_0x17a4('0x30')]][_0x17a4('0x30')]=[_0x14af95[_0x17a4('0x15')][_0x3df63a[_0x17a4('0x30')]]['linkedid'],_0x14af95['channels'][_0x3df63a[_0x17a4('0x30')]][_0x17a4('0x34')]=_0x14af95[_0x17a4('0x15')][_0x3df63a[_0x17a4('0x30')]]['uniqueid']][0x0];delete _0x14af95['blindTransfers'][_0x3df63a[_0x17a4('0x30')]];}}logger['debug'](_0x17a4('0xa1'),_0x3df63a[_0x17a4('0x30')],util[_0x17a4('0x33')](_0x14af95['channels'][_0x3df63a[_0x17a4('0x30')]],{'showHidden':![],'depth':null}));ami['emit']('custom:voiceCallReport',_0x14af95[_0x17a4('0x15')][_0x3df63a[_0x17a4('0x30')]]);delete _0x14af95[_0x17a4('0x15')][_0x3df63a[_0x17a4('0x30')]];});}}}catch(_0x2acbf3){logger['error'](_0x17a4('0xa2'),_0x3df63a[_0x17a4('0x30')],util[_0x17a4('0x33')](_0x2acbf3,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x17a4('0x2c')]['syncAttendedTransfer']=function(_0xa481e4){try{if(this[_0x17a4('0x2e')](_0xa481e4)){logger[_0x17a4('0x29')]('[%s][voiceCallReport][attendedtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s',_0xa481e4[_0x17a4('0x30')],_0xa481e4['origtransferercalleridnum'],_0xa481e4['transfertargetcalleridnum']);logger[_0x17a4('0x41')]('[%s][voiceCallReport][attendedtransfer]\x20event:',_0xa481e4[_0x17a4('0x30')],util[_0x17a4('0x33')](_0xa481e4,{'showHidden':![],'depth':null}));var _0x59567e;if(this[_0x17a4('0x15')][_0xa481e4[_0x17a4('0xa3')]]){this['channels'][_0xa481e4[_0x17a4('0xa3')]]['transfercalleridnum']=_0xa481e4['origtransferercalleridnum'];this['channels'][_0xa481e4[_0x17a4('0xa3')]]['transferconnectedlinenum']=_0xa481e4['transfertargetcalleridnum'];if(this[_0x17a4('0x15')][_0xa481e4[_0x17a4('0xa4')]]){_0x59567e=this[_0x17a4('0x15')][_0xa481e4[_0x17a4('0xa4')]];this[_0x17a4('0x15')][_0xa481e4[_0x17a4('0xa4')]]=this[_0x17a4('0x15')][_0xa481e4['transfereeuniqueid']];this[_0x17a4('0x15')][_0xa481e4['transfereeuniqueid']]=_0x59567e;}this[_0x17a4('0x15')][_0xa481e4[_0x17a4('0xa4')]][_0x17a4('0x94')]=_0x17a4('0xa5');}else if(this['channels'][_0xa481e4[_0x17a4('0xa6')]]){this[_0x17a4('0x15')][_0xa481e4[_0x17a4('0xa6')]][_0x17a4('0xa7')]=_0xa481e4[_0x17a4('0xa8')];this[_0x17a4('0x15')][_0xa481e4[_0x17a4('0xa6')]]['transferconnectedlinenum']=_0xa481e4[_0x17a4('0xa9')];if(this[_0x17a4('0x15')][_0xa481e4[_0x17a4('0xaa')]]){_0x59567e=this['channels'][_0xa481e4[_0x17a4('0xaa')]];this['channels'][_0xa481e4['origtransfereruniqueid']]=this[_0x17a4('0x15')][_0xa481e4['transfertargetuniqueid']];this[_0x17a4('0x15')][_0xa481e4['transfertargetuniqueid']]=_0x59567e;}this[_0x17a4('0x15')][_0xa481e4[_0x17a4('0xa6')]][_0x17a4('0x94')]=_0x17a4('0xa5');}if((this[_0x17a4('0x15')][_0xa481e4['origtransfereruniqueid']]||this[_0x17a4('0x15')][_0xa481e4[_0x17a4('0xab')]])&&this[_0x17a4('0x15')][_0xa481e4[_0x17a4('0xa4')]]){var _0x43b7bb=_[_0x17a4('0xac')]([this[_0x17a4('0x15')][_0xa481e4[_0x17a4('0xaa')]],this[_0x17a4('0x15')][_0xa481e4['origtransfererlinkedid']],this[_0x17a4('0x15')][_0xa481e4['secondtransfereruniqueid']]],function(_0x219339){return _0x219339&&_0x219339[_0x17a4('0x61')]==='outbound'&&_0x219339[_0x17a4('0xad')];});if(_0x43b7bb){if(this[_0x17a4('0x15')][_0xa481e4[_0x17a4('0xaa')]])this[_0x17a4('0x15')][_0xa481e4[_0x17a4('0xaa')]][_0x17a4('0x94')]=_0x17a4('0xa5');if(this[_0x17a4('0x15')][_0xa481e4['origtransfererlinkedid']])this[_0x17a4('0x15')][_0xa481e4[_0x17a4('0xab')]][_0x17a4('0x94')]='ATTENDED';this[_0x17a4('0x15')][_0xa481e4[_0x17a4('0xa4')]][_0x17a4('0x94')]='ATTENDED';}}}}catch(_0x7bf69a){logger[_0x17a4('0x2b')](_0x17a4('0xae'),_0xa481e4[_0x17a4('0x30')],util['inspect'](_0x7bf69a,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x17a4('0x2c')][_0x17a4('0x26')]=function(_0x25fab2){try{if(this[_0x17a4('0x2e')](_0x25fab2)){logger[_0x17a4('0x29')](_0x17a4('0xaf'),_0x25fab2[_0x17a4('0x30')],_0x25fab2[_0x17a4('0xb0')],_0x25fab2[_0x17a4('0xb1')]);logger['debug'](_0x17a4('0xb2'),_0x25fab2[_0x17a4('0x30')],util[_0x17a4('0x33')](_0x25fab2,{'showHidden':![],'depth':null}));if(this['channels'][_0x25fab2['transfereeuniqueid']]){this[_0x17a4('0x15')][_0x25fab2[_0x17a4('0xa3')]][_0x17a4('0xa7')]=_0x25fab2['transfereecalleridnum'];this[_0x17a4('0x15')][_0x25fab2[_0x17a4('0xa3')]][_0x17a4('0xb3')]=_0x25fab2['extension'];this['channels'][_0x25fab2[_0x17a4('0xa3')]][_0x17a4('0x94')]=_0x17a4('0xb4');this['syncHangup']({'event':_0x17a4('0x9f'),'uniqueid':_0x25fab2['transfereeuniqueid'],'linkedid':_0x25fab2[_0x17a4('0xb5')],'context':_0x25fab2['context'],'channel':_0x25fab2[_0x17a4('0xb6')]});}else{this[_0x17a4('0x15')][_0x25fab2[_0x17a4('0xb5')]][_0x17a4('0x94')]=_0x17a4('0xb4');this[_0x17a4('0x22')]({'event':_0x17a4('0x9f'),'uniqueid':_0x25fab2[_0x17a4('0xb5')],'linkedid':_0x25fab2['transfereeuniqueid'],'context':_0x25fab2[_0x17a4('0x44')],'channel':_0x25fab2[_0x17a4('0xb6')]});}}}catch(_0x522b25){logger[_0x17a4('0x2b')]('[%s][voiceCallReport][blindtransfer]',_0x25fab2[_0x17a4('0x30')],util[_0x17a4('0x33')](_0x522b25,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x17a4('0x2c')][_0x17a4('0x28')]=function(_0x58dafe){try{if(this[_0x17a4('0x2e')](_0x58dafe)){logger[_0x17a4('0x41')](_0x17a4('0xb7'),_0x58dafe[_0x17a4('0x30')],util['inspect'](_0x58dafe,{'showHidden':![],'depth':null}));if(this['channels'][_0x58dafe[_0x17a4('0x30')]]){if(!_['isNil'](this[_0x17a4('0x15')][_0x58dafe['uniqueid']][_0x17a4('0x66')])){this['channels'][_0x58dafe[_0x17a4('0x30')]][_0x17a4('0xb8')]=moment()[_0x17a4('0x47')](_0x17a4('0x5b'));logger[_0x17a4('0x29')](_0x17a4('0xb9'),_0x58dafe[_0x17a4('0x30')],this['channels'][_0x58dafe[_0x17a4('0x30')]][_0x17a4('0xb8')]);}}}}catch(_0x1c5525){logger[_0x17a4('0x2b')](_0x17a4('0xba'),_0x58dafe['uniqueid'],util[_0x17a4('0x33')](_0x1c5525,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x17a4('0x2c')][_0x17a4('0xbb')]=function(_0x3a2cf0){try{if(this[_0x17a4('0x2e')](_0x3a2cf0)){logger[_0x17a4('0x41')]('[%s][voiceCallReport][musiconholdstop]\x20event:',_0x3a2cf0[_0x17a4('0x30')],util['inspect'](_0x3a2cf0,{'showHidden':![],'depth':null}));if(this[_0x17a4('0x15')][_0x3a2cf0[_0x17a4('0x30')]]){if(!_[_0x17a4('0x62')](this[_0x17a4('0x15')][_0x3a2cf0['uniqueid']][_0x17a4('0xb8')])){this[_0x17a4('0x15')][_0x3a2cf0[_0x17a4('0x30')]][_0x17a4('0xbc')]+=moment()['milliseconds'](0x0)[_0x17a4('0x68')](this['channels'][_0x3a2cf0[_0x17a4('0x30')]][_0x17a4('0xb8')],_0x17a4('0x5a'));logger[_0x17a4('0x29')](_0x17a4('0xbd'),_0x3a2cf0[_0x17a4('0x30')],this[_0x17a4('0x15')][_0x3a2cf0['uniqueid']][_0x17a4('0xbc')]);delete this[_0x17a4('0x15')][_0x3a2cf0[_0x17a4('0x30')]]['mohstarttime'];}}}}catch(_0x19af43){logger[_0x17a4('0x2b')](_0x17a4('0xbe'),_0x3a2cf0[_0x17a4('0x30')],util['inspect'](_0x19af43,{'showHidden':![],'depth':null}));}};module['exports']=VoiceCallReport;
\ No newline at end of file
index 68040be..ed478c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1261=['outboundChannels','outbound','applications','variables','syncDialBegin','bind','dialend','syncHangup','prototype','isNotNull','isUndefined','emit','[%s][voiceDialReport][dialbegin]\x20event:','uniqueid','inspect','merge','format','YYYY-MM-DD\x20HH:mm:ss','substring','lastIndexOf','channel','omit','event','privilege','info','channels','membername','debug','[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:','voice:outbound','voice_outbound_channel:save','[%s][voiceDialReport][dialbegin]','syncDialEnd','[%s][voiceDialReport][dialend]\x20event:','dialstatus','ANSWER','connectedlinenum','connectedlinename','lastevent','connect','[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:','custom:dialconnect','[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:','error','[%s][voiceDialReport][dialend]','addVariable','value','variable','voice','keys','[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqoslossbridged','rtpaudioqosrttbridged','sipcallid','bridgepvtcallid','membercalls','memberdynamic','memberlastcall','memberpenalty','memberrealtime','includes','[%s][voiceDialReport][hangup]\x20event:','[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete','cause-txt','endtime','duration','diff','starttime','seconds','complete','total','answertime','holdtime','sumHoldTime','billableseconds','sumDuration','[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:','custom:voiceDialReport','[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound:save\x20event:','voice_outbound:save','[DEBUG]\x20Emit\x20voice_outbound_channel:remove\x20event','stringify','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound_channel:remove\x20event:','voice_outbound_channel:remove','linkedid','destuniqueid','[%s][voiceDialReport][hangup]','syncNewExten','toLowerCase','set','appdata','applicationdata','cdr(','split','match','[%s][voiceDialReport][newexten]','exports','moment','util','ioredis','../../../config/environment','../../../config/logger','ami','../ami','redis','defaults'];(function(_0x130c00,_0x3a2054){var _0x173ba7=function(_0x4808b){while(--_0x4808b){_0x130c00['push'](_0x130c00['shift']());}};_0x173ba7(++_0x3a2054);}(_0x1261,0x144));var _0x1126=function(_0x54381d,_0x247b2c){_0x54381d=_0x54381d-0x0;var _0x5308a7=_0x1261[_0x54381d];return _0x5308a7;};'use strict';var _=require('lodash');var moment=require(_0x1126('0x0'));var util=require(_0x1126('0x1'));var Redis=require(_0x1126('0x2'));var config=require(_0x1126('0x3'));var logger=require(_0x1126('0x4'))(_0x1126('0x5'));var ami=require(_0x1126('0x6'));config[_0x1126('0x7')]=_[_0x1126('0x8')](config[_0x1126('0x7')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x1126('0x7')]));function VoiceDialReport(_0x907180){this['channels']=_0x907180[_0x1126('0x9')];this[_0x1126('0xa')]=_0x907180[_0x1126('0xa')];this[_0x1126('0xb')]={};this[_0x1126('0xc')]={};ami['on']('dialbegin',this[_0x1126('0xd')][_0x1126('0xe')](this));ami['on'](_0x1126('0xf'),this['syncDialEnd'][_0x1126('0xe')](this));ami['on']('varset',this['syncVarSet'][_0x1126('0xe')](this));ami['on']('hangup',this[_0x1126('0x10')][_0x1126('0xe')](this));}VoiceDialReport[_0x1126('0x11')][_0x1126('0x12')]=function(_0xca0355){return _0xca0355!==null&&!_[_0x1126('0x13')](_0xca0355);};VoiceDialReport[_0x1126('0x11')][_0x1126('0x14')]=function(_0x43850b,_0x53a8f0,_0x5de9a7){io['to'](_0x43850b)[_0x1126('0x14')](_0x53a8f0,_0x5de9a7);};VoiceDialReport[_0x1126('0x11')][_0x1126('0xd')]=function(_0x4be0c6){try{if(this[_0x1126('0x12')](_0x4be0c6)){logger['debug'](_0x1126('0x15'),_0x4be0c6[_0x1126('0x16')],util[_0x1126('0x17')](_0x4be0c6,{'showHidden':![],'depth':null}));if(this['channels'][_0x4be0c6[_0x1126('0x16')]]){_[_0x1126('0x18')](this['channels'][_0x4be0c6['uniqueid']],{'starttime':moment()[_0x1126('0x19')](_0x1126('0x1a')),'lastevent':'called','interface':_0x4be0c6['channel'][_0x1126('0x1b')](0x0,_0x4be0c6['channel'][_0x1126('0x1c')]('-')),'membername':_0x4be0c6[_0x1126('0x1d')][_0x1126('0x1b')](_0x4be0c6['channel'][_0x1126('0x1c')]('/')+0x1,_0x4be0c6['channel']['lastIndexOf']('-'))},_[_0x1126('0x1e')](_0x4be0c6,[_0x1126('0x1f'),_0x1126('0x20')]));logger[_0x1126('0x21')]('[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called',_0x4be0c6[_0x1126('0x16')],this[_0x1126('0x22')][_0x4be0c6['uniqueid']][_0x1126('0x23')],this['channels'][_0x4be0c6['uniqueid']]['interface']);logger[_0x1126('0x24')](_0x1126('0x25'),_0x4be0c6[_0x1126('0x16')],util[_0x1126('0x17')](this[_0x1126('0x22')][_0x4be0c6[_0x1126('0x16')]],{'showHidden':![],'depth':null}));if(this[_0x1126('0xb')][_0x4be0c6[_0x1126('0x16')]])_['merge'](this[_0x1126('0x22')][_0x4be0c6[_0x1126('0x16')]],this[_0x1126('0xb')][_0x4be0c6['uniqueid']]);this['emit'](_0x1126('0x26'),_0x1126('0x27'),this['channels'][_0x4be0c6[_0x1126('0x16')]]);logger[_0x1126('0x24')]('[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:',_0x4be0c6[_0x1126('0x16')],util['inspect'](this[_0x1126('0x22')][_0x4be0c6['uniqueid']],{'showHidden':![],'depth':null}));ami[_0x1126('0x14')]('custom:dialbegin',this[_0x1126('0x22')][_0x4be0c6['uniqueid']]);}}}catch(_0x5252e0){logger['error'](_0x1126('0x28'),_0x4be0c6[_0x1126('0x16')],util[_0x1126('0x17')](_0x5252e0,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype'][_0x1126('0x29')]=function(_0x226afb){try{if(this['isNotNull'](_0x226afb)){logger[_0x1126('0x24')](_0x1126('0x2a'),_0x226afb[_0x1126('0x16')],util[_0x1126('0x17')](_0x226afb,{'showHidden':![],'depth':null}));if(this['channels'][_0x226afb['uniqueid']]){this[_0x1126('0x22')][_0x226afb[_0x1126('0x16')]][_0x1126('0x2b')]=_0x226afb[_0x1126('0x2b')];if(_0x226afb['dialstatus']===_0x1126('0x2c')){this[_0x1126('0x22')][_0x226afb[_0x1126('0x16')]][_0x1126('0x2d')]=_0x226afb[_0x1126('0x2d')];this['channels'][_0x226afb[_0x1126('0x16')]][_0x1126('0x2e')]=_0x226afb[_0x1126('0x2e')];this[_0x1126('0x22')][_0x226afb['uniqueid']]['answertime']=moment()[_0x1126('0x19')](_0x1126('0x1a'));this['channels'][_0x226afb[_0x1126('0x16')]][_0x1126('0x2f')]=_0x1126('0x30');logger['info']('[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect',_0x226afb[_0x1126('0x16')],_0x226afb[_0x1126('0x1d')][_0x1126('0x1b')](_0x226afb[_0x1126('0x1d')]['lastIndexOf']('/')+0x1,_0x226afb[_0x1126('0x1d')]['lastIndexOf']('-')));logger[_0x1126('0x24')](_0x1126('0x31'),_0x226afb[_0x1126('0x16')],util[_0x1126('0x17')](this[_0x1126('0x22')][_0x226afb['uniqueid']],{'showHidden':![],'depth':null}));ami[_0x1126('0x14')](_0x1126('0x32'),this[_0x1126('0x22')][_0x226afb[_0x1126('0x16')]]);}logger[_0x1126('0x24')](_0x1126('0x33'),_0x226afb[_0x1126('0x16')],util['inspect'](this[_0x1126('0x22')][_0x226afb[_0x1126('0x16')]],{'showHidden':![],'depth':null}));this[_0x1126('0x14')](_0x1126('0x26'),_0x1126('0x27'),this['channels'][_0x226afb['uniqueid']]);}}}catch(_0x1c4f06){logger[_0x1126('0x34')](_0x1126('0x35'),_0x226afb[_0x1126('0x16')],util[_0x1126('0x17')](_0x1c4f06,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x1126('0x11')]['syncVarSet']=function(_0x497576){try{if(this['isNotNull'](_0x497576)){logger[_0x1126('0x24')]('[%s][voiceDialReport][varset]\x20event:',_0x497576[_0x1126('0x16')],util[_0x1126('0x17')](_0x497576,{'showHidden':![],'depth':null}));this[_0x1126('0x36')](_0x497576[_0x1126('0x16')],_['keys'](_0x497576['variable'])[0x0],_0x497576[_0x1126('0x37')]);if(this[_0x1126('0x12')](_0x497576[_0x1126('0x38')])&&this['isNotNull'](_0x497576[_0x1126('0x38')]['outboundrouteid'])){if(_[_0x1126('0x13')](this['channels'][_0x497576[_0x1126('0x16')]])){this[_0x1126('0x22')][_0x497576[_0x1126('0x16')]]={'routeId':_0x497576['value'],'variables':this[_0x1126('0xc')][_0x497576[_0x1126('0x16')]],'motionChannel':_0x1126('0x39')};logger['info']('[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s',_0x497576['uniqueid'],_0x497576[_0x1126('0x38')]['outboundrouteid'],_[_0x1126('0x3a')](_0x497576['variable'])[0x0],_0x497576[_0x1126('0x37')]);logger[_0x1126('0x24')](_0x1126('0x3b'),_0x497576[_0x1126('0x16')],util[_0x1126('0x17')](this['channels'][_0x497576[_0x1126('0x16')]],{'showHidden':![],'depth':null}));this[_0x1126('0x14')]('voice:outbound',_0x1126('0x27'),this[_0x1126('0x22')][_0x497576['uniqueid']]);}}}}catch(_0x5f6d73){logger[_0x1126('0x34')]('[%s][voiceDialReport][varset]',_0x497576[_0x1126('0x16')],util[_0x1126('0x17')](_0x5f6d73,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x1126('0x11')]['addVariable']=function(_0x3fe7c1,_0x1c405c,_0x411c89){var _0x5878bb=[_0x1126('0x3c'),_0x1126('0x3d'),_0x1126('0x3e'),_0x1126('0x3f'),'rtpaudioqosloss',_0x1126('0x40'),'rtpaudioqosrtt',_0x1126('0x41'),_0x1126('0x42'),'sipuri','bridgepeer',_0x1126('0x43'),_0x1126('0x44'),_0x1126('0x45'),'memberinterface',_0x1126('0x46'),_0x1126('0x23'),_0x1126('0x47'),_0x1126('0x48')];if(!_['isNil'](_0x1c405c)&&!_[_0x1126('0x49')](_0x5878bb,_0x1c405c)){if(_[_0x1126('0x13')](this['variables'][_0x3fe7c1])){this['variables'][_0x3fe7c1]={};}this['variables'][_0x3fe7c1][_0x1c405c]=_0x411c89;}};VoiceDialReport['prototype'][_0x1126('0x10')]=function(_0x3bf090){try{if(this['isNotNull'](_0x3bf090)){logger[_0x1126('0x24')](_0x1126('0x4a'),_0x3bf090[_0x1126('0x16')],util[_0x1126('0x17')](_0x3bf090,{'showHidden':![],'depth':null}));if(this[_0x1126('0x22')][_0x3bf090['uniqueid']]){logger[_0x1126('0x21')](_0x1126('0x4b'),_0x3bf090['uniqueid'],_0x3bf090[_0x1126('0x4c')]);this[_0x1126('0x22')][_0x3bf090[_0x1126('0x16')]][_0x1126('0x4d')]=moment()[_0x1126('0x19')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x1126('0x22')][_0x3bf090['uniqueid']][_0x1126('0x4e')]=moment(this[_0x1126('0x22')][_0x3bf090[_0x1126('0x16')]]['endtime'])[_0x1126('0x4f')](this[_0x1126('0x22')][_0x3bf090['uniqueid']][_0x1126('0x50')],_0x1126('0x51'));this[_0x1126('0x22')][_0x3bf090['uniqueid']][_0x1126('0x2f')]=_0x1126('0x52');this[_0x1126('0xa')][_0x1126('0x53')]+=0x1;if(this[_0x1126('0x22')][_0x3bf090[_0x1126('0x16')]][_0x1126('0x54')]){this[_0x1126('0xa')]['answered']+=0x1;this[_0x1126('0x22')][_0x3bf090[_0x1126('0x16')]][_0x1126('0x55')]=moment(this[_0x1126('0x22')][_0x3bf090[_0x1126('0x16')]]['answertime'])[_0x1126('0x4f')](this[_0x1126('0x22')][_0x3bf090['uniqueid']][_0x1126('0x50')],'seconds');this[_0x1126('0x22')][_0x3bf090[_0x1126('0x16')]]['billableseconds']=moment(this[_0x1126('0x22')][_0x3bf090[_0x1126('0x16')]][_0x1126('0x4d')])['diff'](this[_0x1126('0x22')][_0x3bf090['uniqueid']]['answertime'],_0x1126('0x51'));this[_0x1126('0xa')][_0x1126('0x56')]+=this[_0x1126('0x22')][_0x3bf090[_0x1126('0x16')]][_0x1126('0x55')]||0x0;this[_0x1126('0xa')]['sumBillable']+=this[_0x1126('0x22')][_0x3bf090[_0x1126('0x16')]][_0x1126('0x57')];}this[_0x1126('0xa')][_0x1126('0x58')]+=this[_0x1126('0x22')][_0x3bf090['uniqueid']]['duration'];logger[_0x1126('0x24')](_0x1126('0x59'),_0x3bf090['uniqueid'],util['inspect'](this['channels'][_0x3bf090['uniqueid']],{'showHidden':![],'depth':null}));ami[_0x1126('0x14')](_0x1126('0x5a'),this[_0x1126('0x22')][_0x3bf090['uniqueid']]);logger[_0x1126('0x24')](_0x1126('0x5b'),_0x3bf090[_0x1126('0x16')],util[_0x1126('0x17')](this[_0x1126('0x22')][_0x3bf090[_0x1126('0x16')]],{'showHidden':![],'depth':null}));ami[_0x1126('0x14')]('custom:dialend',this[_0x1126('0x22')][_0x3bf090[_0x1126('0x16')]]);logger[_0x1126('0x24')](_0x1126('0x5c'),_0x3bf090[_0x1126('0x16')],util['inspect'](this['channels'][_0x3bf090[_0x1126('0x16')]],{'showHidden':![],'depth':null}));this[_0x1126('0x14')]('voice:outbound',_0x1126('0x5d'),this[_0x1126('0xa')]);logger[_0x1126('0x21')](_0x1126('0x5e'),JSON[_0x1126('0x5f')](this[_0x1126('0x22')][_0x3bf090[_0x1126('0x16')]]));logger[_0x1126('0x24')](_0x1126('0x60'),_0x3bf090[_0x1126('0x16')],util[_0x1126('0x17')](this[_0x1126('0x22')][_0x3bf090[_0x1126('0x16')]],{'showHidden':![],'depth':null}));this['emit'](_0x1126('0x26'),_0x1126('0x61'),this[_0x1126('0x22')][_0x3bf090['uniqueid']]);delete this['channels'][_0x3bf090[_0x1126('0x16')]];}else if(this[_0x1126('0x22')][_0x3bf090[_0x1126('0x62')]]){this[_0x1126('0x22')][_0x3bf090['linkedid']]['uniqueid']=this['channels'][_0x3bf090[_0x1126('0x62')]][_0x1126('0x63')];}if(this[_0x1126('0xc')][_0x3bf090[_0x1126('0x16')]]){delete this['variables'][_0x3bf090[_0x1126('0x16')]];}}}catch(_0x5d7014){logger[_0x1126('0x34')](_0x1126('0x64'),_0x3bf090[_0x1126('0x16')],util[_0x1126('0x17')](_0x5d7014,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x1126('0x11')][_0x1126('0x65')]=function(_0x9a61b1){try{if(this['isNotNull'](_0x9a61b1)){logger[_0x1126('0x24')]('[%s][voiceDialReport][newexten]\x20event:',_0x9a61b1[_0x1126('0x16')],util[_0x1126('0x17')](_0x9a61b1,{'showHidden':![],'depth':null}));if(_0x9a61b1['application'][_0x1126('0x66')]()===_0x1126('0x67')){_0x9a61b1['applicationdata']=(_0x9a61b1[_0x1126('0x68')]||_0x9a61b1[_0x1126('0x69')])['toLowerCase']();if(_['startsWith'](_0x9a61b1[_0x1126('0x69')],_0x1126('0x6a'))){if(_[_0x1126('0x13')](this['applications'][_0x9a61b1['uniqueid']]))this['applications'][_0x9a61b1[_0x1126('0x16')]]={};logger['info']('[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s',_0x9a61b1[_0x1126('0x16')],_0x9a61b1['application'],_0x9a61b1[_0x1126('0x69')]);var _0x288a0c=_0x9a61b1['applicationdata'][_0x1126('0x6b')]('=');var _0x375728=_0x288a0c[0x0][_0x1126('0x6c')](/cdr\((.*)\)/);if(_0x375728)this[_0x1126('0xb')][_0x9a61b1[_0x1126('0x16')]][_0x375728[0x1]]=_0x288a0c[0x1];}}}}catch(_0x5e9872){logger[_0x1126('0x34')](_0x1126('0x6d'),_0x9a61b1['uniqueid'],util[_0x1126('0x17')](_0x5e9872,{'showHidden':![],'depth':null}));}};module[_0x1126('0x6e')]=VoiceDialReport;
\ No newline at end of file
+var _0xeec6=['omit','event','info','[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called','membername','interface','[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:','inspect','applications','merge','voice:outbound','[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:','custom:dialbegin','[%s][voiceDialReport][dialbegin]','syncDialEnd','[%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]\x20sending\x20voice_outbound_channel:save\x20event:','error','[%s][voiceDialReport][dialend]','syncVarSet','keys','variable','value','outboundrouteid','[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:','addVariable','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','sipcallid','sipuri','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberlastcall','memberpenalty','memberrealtime','isNil','includes','syncHangup','[%s][voiceDialReport][hangup]\x20event:','[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete','cause-txt','endtime','duration','diff','seconds','complete','total','answered','sumHoldTime','sumBillable','billableseconds','sumDuration','[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:','[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:','custom:dialend','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound:save\x20event:','voice_outbound:save','[DEBUG]\x20Emit\x20voice_outbound_channel:remove\x20event','stringify','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound_channel:remove\x20event:','voice_outbound_channel:remove','linkedid','destuniqueid','[%s][voiceDialReport][hangup]','syncNewExten','[%s][voiceDialReport][newexten]\x20event:','application','set','applicationdata','appdata','cdr(','[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s','split','match','[%s][voiceDialReport][newexten]','lodash','moment','util','ioredis','../../../config/logger','ami','../ami','redis','defaults','socket.io-emitter','channels','outboundChannels','outbound','variables','dialbegin','syncDialBegin','bind','varset','hangup','prototype','isNotNull','isUndefined','emit','debug','uniqueid','format','called','channel','substring','lastIndexOf'];(function(_0x2473f5,_0x11bb1f){var _0x1c3451=function(_0x1cc4b2){while(--_0x1cc4b2){_0x2473f5['push'](_0x2473f5['shift']());}};_0x1c3451(++_0x11bb1f);}(_0xeec6,0x1c2));var _0x6eec=function(_0x362e87,_0x38d17c){_0x362e87=_0x362e87-0x0;var _0x334244=_0xeec6[_0x362e87];return _0x334244;};'use strict';var _=require(_0x6eec('0x0'));var moment=require(_0x6eec('0x1'));var util=require(_0x6eec('0x2'));var Redis=require(_0x6eec('0x3'));var config=require('../../../config/environment');var logger=require(_0x6eec('0x4'))(_0x6eec('0x5'));var ami=require(_0x6eec('0x6'));config[_0x6eec('0x7')]=_[_0x6eec('0x8')](config[_0x6eec('0x7')],{'host':'localhost','port':0x18eb});var io=require(_0x6eec('0x9'))(new Redis(config[_0x6eec('0x7')]));function VoiceDialReport(_0x48064a){this[_0x6eec('0xa')]=_0x48064a[_0x6eec('0xb')];this[_0x6eec('0xc')]=_0x48064a[_0x6eec('0xc')];this['applications']={};this[_0x6eec('0xd')]={};ami['on'](_0x6eec('0xe'),this[_0x6eec('0xf')]['bind'](this));ami['on']('dialend',this['syncDialEnd'][_0x6eec('0x10')](this));ami['on'](_0x6eec('0x11'),this['syncVarSet']['bind'](this));ami['on'](_0x6eec('0x12'),this['syncHangup'][_0x6eec('0x10')](this));}VoiceDialReport[_0x6eec('0x13')][_0x6eec('0x14')]=function(_0x3fe94b){return _0x3fe94b!==null&&!_[_0x6eec('0x15')](_0x3fe94b);};VoiceDialReport['prototype'][_0x6eec('0x16')]=function(_0x3b2972,_0x462dbb,_0xc35914){io['to'](_0x3b2972)[_0x6eec('0x16')](_0x462dbb,_0xc35914);};VoiceDialReport[_0x6eec('0x13')][_0x6eec('0xf')]=function(_0x393271){try{if(this[_0x6eec('0x14')](_0x393271)){logger[_0x6eec('0x17')]('[%s][voiceDialReport][dialbegin]\x20event:',_0x393271[_0x6eec('0x18')],util['inspect'](_0x393271,{'showHidden':![],'depth':null}));if(this[_0x6eec('0xa')][_0x393271[_0x6eec('0x18')]]){_['merge'](this[_0x6eec('0xa')][_0x393271[_0x6eec('0x18')]],{'starttime':moment()[_0x6eec('0x19')]('YYYY-MM-DD\x20HH:mm:ss'),'lastevent':_0x6eec('0x1a'),'interface':_0x393271[_0x6eec('0x1b')][_0x6eec('0x1c')](0x0,_0x393271[_0x6eec('0x1b')][_0x6eec('0x1d')]('-')),'membername':_0x393271[_0x6eec('0x1b')]['substring'](_0x393271[_0x6eec('0x1b')][_0x6eec('0x1d')]('/')+0x1,_0x393271[_0x6eec('0x1b')][_0x6eec('0x1d')]('-'))},_[_0x6eec('0x1e')](_0x393271,[_0x6eec('0x1f'),'privilege']));logger[_0x6eec('0x20')](_0x6eec('0x21'),_0x393271[_0x6eec('0x18')],this[_0x6eec('0xa')][_0x393271[_0x6eec('0x18')]][_0x6eec('0x22')],this['channels'][_0x393271[_0x6eec('0x18')]][_0x6eec('0x23')]);logger[_0x6eec('0x17')](_0x6eec('0x24'),_0x393271[_0x6eec('0x18')],util[_0x6eec('0x25')](this[_0x6eec('0xa')][_0x393271[_0x6eec('0x18')]],{'showHidden':![],'depth':null}));if(this[_0x6eec('0x26')][_0x393271['uniqueid']])_[_0x6eec('0x27')](this[_0x6eec('0xa')][_0x393271[_0x6eec('0x18')]],this[_0x6eec('0x26')][_0x393271['uniqueid']]);this[_0x6eec('0x16')](_0x6eec('0x28'),'voice_outbound_channel:save',this['channels'][_0x393271[_0x6eec('0x18')]]);logger['debug'](_0x6eec('0x29'),_0x393271[_0x6eec('0x18')],util[_0x6eec('0x25')](this[_0x6eec('0xa')][_0x393271[_0x6eec('0x18')]],{'showHidden':![],'depth':null}));ami[_0x6eec('0x16')](_0x6eec('0x2a'),this[_0x6eec('0xa')][_0x393271[_0x6eec('0x18')]]);}}}catch(_0x414f5b){logger['error'](_0x6eec('0x2b'),_0x393271['uniqueid'],util[_0x6eec('0x25')](_0x414f5b,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x6eec('0x13')][_0x6eec('0x2c')]=function(_0x487de8){try{if(this['isNotNull'](_0x487de8)){logger['debug'](_0x6eec('0x2d'),_0x487de8[_0x6eec('0x18')],util[_0x6eec('0x25')](_0x487de8,{'showHidden':![],'depth':null}));if(this[_0x6eec('0xa')][_0x487de8[_0x6eec('0x18')]]){this[_0x6eec('0xa')][_0x487de8[_0x6eec('0x18')]][_0x6eec('0x2e')]=_0x487de8[_0x6eec('0x2e')];if(_0x487de8[_0x6eec('0x2e')]===_0x6eec('0x2f')){this[_0x6eec('0xa')][_0x487de8['uniqueid']][_0x6eec('0x30')]=_0x487de8[_0x6eec('0x30')];this[_0x6eec('0xa')][_0x487de8['uniqueid']][_0x6eec('0x31')]=_0x487de8[_0x6eec('0x31')];this[_0x6eec('0xa')][_0x487de8[_0x6eec('0x18')]][_0x6eec('0x32')]=moment()[_0x6eec('0x19')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x6eec('0xa')][_0x487de8[_0x6eec('0x18')]][_0x6eec('0x33')]='connect';logger['info'](_0x6eec('0x34'),_0x487de8[_0x6eec('0x18')],_0x487de8[_0x6eec('0x1b')][_0x6eec('0x1c')](_0x487de8[_0x6eec('0x1b')]['lastIndexOf']('/')+0x1,_0x487de8[_0x6eec('0x1b')][_0x6eec('0x1d')]('-')));logger[_0x6eec('0x17')](_0x6eec('0x35'),_0x487de8[_0x6eec('0x18')],util[_0x6eec('0x25')](this[_0x6eec('0xa')][_0x487de8[_0x6eec('0x18')]],{'showHidden':![],'depth':null}));ami['emit'](_0x6eec('0x36'),this[_0x6eec('0xa')][_0x487de8['uniqueid']]);}logger['debug'](_0x6eec('0x37'),_0x487de8[_0x6eec('0x18')],util[_0x6eec('0x25')](this[_0x6eec('0xa')][_0x487de8['uniqueid']],{'showHidden':![],'depth':null}));this['emit'](_0x6eec('0x28'),'voice_outbound_channel:save',this['channels'][_0x487de8[_0x6eec('0x18')]]);}}}catch(_0xe523b9){logger[_0x6eec('0x38')](_0x6eec('0x39'),_0x487de8[_0x6eec('0x18')],util['inspect'](_0xe523b9,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x6eec('0x13')][_0x6eec('0x3a')]=function(_0x4e0709){try{if(this[_0x6eec('0x14')](_0x4e0709)){logger[_0x6eec('0x17')]('[%s][voiceDialReport][varset]\x20event:',_0x4e0709[_0x6eec('0x18')],util[_0x6eec('0x25')](_0x4e0709,{'showHidden':![],'depth':null}));this['addVariable'](_0x4e0709[_0x6eec('0x18')],_[_0x6eec('0x3b')](_0x4e0709[_0x6eec('0x3c')])[0x0],_0x4e0709[_0x6eec('0x3d')]);if(this['isNotNull'](_0x4e0709[_0x6eec('0x3c')])&&this[_0x6eec('0x14')](_0x4e0709[_0x6eec('0x3c')][_0x6eec('0x3e')])){if(_[_0x6eec('0x15')](this['channels'][_0x4e0709['uniqueid']])){this[_0x6eec('0xa')][_0x4e0709[_0x6eec('0x18')]]={'routeId':_0x4e0709[_0x6eec('0x3d')],'variables':this[_0x6eec('0xd')][_0x4e0709[_0x6eec('0x18')]],'motionChannel':'voice'};logger[_0x6eec('0x20')]('[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s',_0x4e0709[_0x6eec('0x18')],_0x4e0709[_0x6eec('0x3c')][_0x6eec('0x3e')],_['keys'](_0x4e0709[_0x6eec('0x3c')])[0x0],_0x4e0709[_0x6eec('0x3d')]);logger[_0x6eec('0x17')](_0x6eec('0x3f'),_0x4e0709[_0x6eec('0x18')],util['inspect'](this[_0x6eec('0xa')][_0x4e0709['uniqueid']],{'showHidden':![],'depth':null}));this['emit'](_0x6eec('0x28'),'voice_outbound_channel:save',this[_0x6eec('0xa')][_0x4e0709[_0x6eec('0x18')]]);}}}}catch(_0x318f58){logger['error']('[%s][voiceDialReport][varset]',_0x4e0709[_0x6eec('0x18')],util[_0x6eec('0x25')](_0x318f58,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x6eec('0x13')][_0x6eec('0x40')]=function(_0x188359,_0x2c9650,_0x185711){var _0x442bca=[_0x6eec('0x41'),_0x6eec('0x42'),'rtpaudioqosjitter','rtpaudioqosjitterbridged',_0x6eec('0x43'),_0x6eec('0x44'),_0x6eec('0x45'),'rtpaudioqosrttbridged',_0x6eec('0x46'),_0x6eec('0x47'),_0x6eec('0x48'),_0x6eec('0x49'),_0x6eec('0x4a'),_0x6eec('0x4b'),_0x6eec('0x4c'),_0x6eec('0x4d'),'membername',_0x6eec('0x4e'),_0x6eec('0x4f')];if(!_[_0x6eec('0x50')](_0x2c9650)&&!_[_0x6eec('0x51')](_0x442bca,_0x2c9650)){if(_['isUndefined'](this['variables'][_0x188359])){this['variables'][_0x188359]={};}this[_0x6eec('0xd')][_0x188359][_0x2c9650]=_0x185711;}};VoiceDialReport[_0x6eec('0x13')][_0x6eec('0x52')]=function(_0x1de626){try{if(this['isNotNull'](_0x1de626)){logger['debug'](_0x6eec('0x53'),_0x1de626[_0x6eec('0x18')],util[_0x6eec('0x25')](_0x1de626,{'showHidden':![],'depth':null}));if(this['channels'][_0x1de626[_0x6eec('0x18')]]){logger[_0x6eec('0x20')](_0x6eec('0x54'),_0x1de626[_0x6eec('0x18')],_0x1de626[_0x6eec('0x55')]);this[_0x6eec('0xa')][_0x1de626[_0x6eec('0x18')]][_0x6eec('0x56')]=moment()[_0x6eec('0x19')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x6eec('0xa')][_0x1de626['uniqueid']][_0x6eec('0x57')]=moment(this[_0x6eec('0xa')][_0x1de626[_0x6eec('0x18')]][_0x6eec('0x56')])[_0x6eec('0x58')](this[_0x6eec('0xa')][_0x1de626[_0x6eec('0x18')]]['starttime'],_0x6eec('0x59'));this['channels'][_0x1de626[_0x6eec('0x18')]]['lastevent']=_0x6eec('0x5a');this[_0x6eec('0xc')][_0x6eec('0x5b')]+=0x1;if(this[_0x6eec('0xa')][_0x1de626[_0x6eec('0x18')]][_0x6eec('0x32')]){this[_0x6eec('0xc')][_0x6eec('0x5c')]+=0x1;this[_0x6eec('0xa')][_0x1de626[_0x6eec('0x18')]]['holdtime']=moment(this['channels'][_0x1de626[_0x6eec('0x18')]][_0x6eec('0x32')])[_0x6eec('0x58')](this[_0x6eec('0xa')][_0x1de626[_0x6eec('0x18')]]['starttime'],_0x6eec('0x59'));this[_0x6eec('0xa')][_0x1de626['uniqueid']]['billableseconds']=moment(this['channels'][_0x1de626[_0x6eec('0x18')]][_0x6eec('0x56')])['diff'](this[_0x6eec('0xa')][_0x1de626[_0x6eec('0x18')]]['answertime'],_0x6eec('0x59'));this[_0x6eec('0xc')][_0x6eec('0x5d')]+=this[_0x6eec('0xa')][_0x1de626['uniqueid']]['holdtime']||0x0;this[_0x6eec('0xc')][_0x6eec('0x5e')]+=this[_0x6eec('0xa')][_0x1de626[_0x6eec('0x18')]][_0x6eec('0x5f')];}this[_0x6eec('0xc')][_0x6eec('0x60')]+=this[_0x6eec('0xa')][_0x1de626[_0x6eec('0x18')]][_0x6eec('0x57')];logger[_0x6eec('0x17')](_0x6eec('0x61'),_0x1de626[_0x6eec('0x18')],util[_0x6eec('0x25')](this[_0x6eec('0xa')][_0x1de626[_0x6eec('0x18')]],{'showHidden':![],'depth':null}));ami[_0x6eec('0x16')]('custom:voiceDialReport',this[_0x6eec('0xa')][_0x1de626[_0x6eec('0x18')]]);logger['debug'](_0x6eec('0x62'),_0x1de626[_0x6eec('0x18')],util['inspect'](this[_0x6eec('0xa')][_0x1de626[_0x6eec('0x18')]],{'showHidden':![],'depth':null}));ami[_0x6eec('0x16')](_0x6eec('0x63'),this['channels'][_0x1de626[_0x6eec('0x18')]]);logger[_0x6eec('0x17')](_0x6eec('0x64'),_0x1de626[_0x6eec('0x18')],util[_0x6eec('0x25')](this[_0x6eec('0xa')][_0x1de626['uniqueid']],{'showHidden':![],'depth':null}));this[_0x6eec('0x16')]('voice:outbound',_0x6eec('0x65'),this[_0x6eec('0xc')]);logger[_0x6eec('0x20')](_0x6eec('0x66'),JSON[_0x6eec('0x67')](this[_0x6eec('0xa')][_0x1de626[_0x6eec('0x18')]]));logger[_0x6eec('0x17')](_0x6eec('0x68'),_0x1de626['uniqueid'],util[_0x6eec('0x25')](this[_0x6eec('0xa')][_0x1de626[_0x6eec('0x18')]],{'showHidden':![],'depth':null}));this['emit'](_0x6eec('0x28'),_0x6eec('0x69'),this['channels'][_0x1de626[_0x6eec('0x18')]]);delete this[_0x6eec('0xa')][_0x1de626[_0x6eec('0x18')]];}else if(this[_0x6eec('0xa')][_0x1de626[_0x6eec('0x6a')]]){this['channels'][_0x1de626[_0x6eec('0x6a')]][_0x6eec('0x18')]=this[_0x6eec('0xa')][_0x1de626[_0x6eec('0x6a')]][_0x6eec('0x6b')];}if(this['variables'][_0x1de626[_0x6eec('0x18')]]){delete this[_0x6eec('0xd')][_0x1de626[_0x6eec('0x18')]];}}}catch(_0x1032f6){logger[_0x6eec('0x38')](_0x6eec('0x6c'),_0x1de626[_0x6eec('0x18')],util[_0x6eec('0x25')](_0x1032f6,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype'][_0x6eec('0x6d')]=function(_0x59341a){try{if(this[_0x6eec('0x14')](_0x59341a)){logger[_0x6eec('0x17')](_0x6eec('0x6e'),_0x59341a[_0x6eec('0x18')],util['inspect'](_0x59341a,{'showHidden':![],'depth':null}));if(_0x59341a[_0x6eec('0x6f')]['toLowerCase']()===_0x6eec('0x70')){_0x59341a[_0x6eec('0x71')]=(_0x59341a[_0x6eec('0x72')]||_0x59341a[_0x6eec('0x71')])['toLowerCase']();if(_['startsWith'](_0x59341a['applicationdata'],_0x6eec('0x73'))){if(_[_0x6eec('0x15')](this[_0x6eec('0x26')][_0x59341a[_0x6eec('0x18')]]))this['applications'][_0x59341a[_0x6eec('0x18')]]={};logger['info'](_0x6eec('0x74'),_0x59341a[_0x6eec('0x18')],_0x59341a['application'],_0x59341a[_0x6eec('0x71')]);var _0x2f9e8a=_0x59341a[_0x6eec('0x71')][_0x6eec('0x75')]('=');var _0x3fba23=_0x2f9e8a[0x0][_0x6eec('0x76')](/cdr\((.*)\)/);if(_0x3fba23)this['applications'][_0x59341a[_0x6eec('0x18')]][_0x3fba23[0x1]]=_0x2f9e8a[0x1];}}}}catch(_0x5aa2f3){logger[_0x6eec('0x38')](_0x6eec('0x77'),_0x59341a['uniqueid'],util[_0x6eec('0x25')](_0x5aa2f3,{'showHidden':![],'depth':null}));}};module['exports']=VoiceDialReport;
\ No newline at end of file
index 8091a57..b393a7d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e72=['syncMusicOnHoldStop','attendedtransfer','blindtransfer','syncBlindTransfer','loopQueueShow','hasOwnProperty','isEmpty','originated','talking','pTalking','queueStatusComplete','switch','isNil','Action','status','catch','message','No\x20such\x20channel','error','inspect','[%s][voiceQueueReport][checkQueueReport]','variables','[%s][voiceQueueReport][checkVariables]','[FullyBooted]\x20clear\x20realtime','clearQueueReport','emitVoiceQueueChannelRemove','debug','[%s][voiceQueueReport][','uniqueid','emit','format','voice_queue_channel:save','voice_queue_presence:save',']\x20sending\x20voice_queue_channel:remove\x20event:','queuecallerexitreason','queue','voice_queue_channel:remove','emitInboundVoiceQueueSummary','[voiceQueueReport][queuesummary]\x20sending\x20voice_queue:save\x20event:','voice:queue:%s','voice_queue:save','isUndefined','clearZombieChannels','queues','[voiceQueueReport][queues]','isRunning','then','actionid','queuestatus','[voiceQueueReport][queuesummary]','createQueueSummaryReport','name','summaryEvent','createReport','assign','type','inbound','handleInboundQueueSummaryReport','outbound','custom:queuesummary','statusRequests','completeEvent','isNotNull','[voiceQueueReport][queuesummary]\x20event:','info','[voiceQueueReport][queuesummary]\x20name:%s','[voiceQueueReport][queuesummarycomplete]\x20event:','custom:queuesummarycomplete','[%s][voiceQueueReport][queuecallerjoin]','queuecallerjoinAt','position','count','routealias','[voiceQueueReport][queuecallerjoin]\x20name:%s\x20type:%s','merge','pick','keys','push','[%s][voiceQueueReport][queuecallerabandon]','last','queuecallercompleteAt','holdtime','originalposition','queuecallerabandonAt','YYYY-MM-DD\x20HH:mm:ss','[voiceQueueReport][queuecallerabandon]\x20name:%s\x20type:%s','[%s][voiceQueueReport][queuecallerleave]','queuecallerleaveAt','connectedlinenum','connectedlinename','queuecallerleave','[%s][voiceQueueReport][agentconnect]','[voiceQueueReport][agentconnect]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETEDBYAGENT','[%s][voiceQueueReport][agentcomplete]','lastAssignedTo','membername','queuecallerexit','queuecallerexitAt','transfer','reason','COMPLETED','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETED','startsWith','channel','toLowerCase','local/','linkedid','queuecallercomplete','add','seconds','FORWARDTRANSFER','transfertype','FORWARD','destexten','transferuniqueid','COMPLETEDBY','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:%s','addVariable','value','variable','CONTINUE','TIMEOUT','lastevent','[%s][voiceQueueReport][varset]\x20sending\x20timeout\x20event:','custom:timeout','[%s][voiceQueueReport][varset]\x20name:%s\x20type:%s\x20variable:%s\x20value:%s','[%s][voiceQueueReport][varset]','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','sipuri','membercalls','memberinterface','memberlastcall','memberpenalty','memberrealtime','includes','handleHangup','length','unmanaged','abandoned','sumHoldTime','diff','sumDuration','milliseconds','total','sumBillable','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerunmanaged\x20event:','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerabandon\x20event:','custom:queuecallerabandon','[%s][voiceQueueReport][hangup]\x20name:%s\x20type:%s\x20reason:%s','ATTENDEDTRANSFER','COMPLETEDBYAGENT','cause-txt','cause','transferid','[%s][voiceQueueReport][hangup]','syncAttendedTransfer','transfereeuniqueid','transferexten','secondtransfererexten','secondtransfereruniqueid','ATTENDED','[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','transfertargetuniqueid','origtransfereruniqueid','origtransfererexten','[%s][voiceQueueReport][attendedtransfer]','[%s][voiceQueueReport][blindtransfer]','BLINDTRANSFER','BLIND','extension','[%s][voiceQueueReport][blindTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','BlindTransfer','context','transfererchannel','syncMusicOnHoldStart','[%s][voiceQueueReport][musiconholdstart]','mohstarttime','[%s][voiceQueueReport][musiconholdstart]\x20mohstarttime:%s','[%s][voiceQueueReport][musiconholdstop]','[%s][voiceQueueReport][musiconholdstop]\x20mohtime:%s','syncNewExten','[%s][voiceQueueReport][newexten]\x20event:','application','set','applicationdata','appdata','CDR(routeAlias)','cdr(','[%s][voiceQueueReport][newexten]\x20application:%s\x20appdata:%s','split','match','[%s][voiceQueueReport][newexten]','lodash','moment','ioredis','../../../config/logger','ami','../ami','../model/voiceQueueSummary','redis','defaults','localhost','socket.io-emitter','prototype','enqueue','tail','finally','sequence','queueReports','realtime','agents','channels','queueChannels','voiceQueues','campaigns','summary','syncQueueSummary','bind','queuesummarycomplete','syncQueueSummaryComplete','syncQueueMember','queuestatuscomplete','syncQueueStatusComplete','queuecallerjoin','syncQueueCallerJoin','queuecallerabandon','syncQueueCallerAbandon','syncQueueCallerLeave','syncAgentComplete','syncAgentConnect','varset','syncVarSet','hangup','syncHangup','fullybooted','syncFullyBooted','musiconholdstart'];(function(_0x218b6f,_0x2a67cc){var _0x45c373=function(_0x3de60c){while(--_0x3de60c){_0x218b6f['push'](_0x218b6f['shift']());}};_0x45c373(++_0x2a67cc);}(_0x9e72,0xc7));var _0x29e7=function(_0x11de08,_0x43b2bf){_0x11de08=_0x11de08-0x0;var _0x5c5c32=_0x9e72[_0x11de08];return _0x5c5c32;};'use strict';var _=require(_0x29e7('0x0'));var moment=require(_0x29e7('0x1'));var util=require('util');var Redis=require(_0x29e7('0x2'));var config=require('../../../config/environment');var logger=require(_0x29e7('0x3'))(_0x29e7('0x4'));var ami=require(_0x29e7('0x5'));var QueueReport=require('../model/queueReport');var VoiceQueueSummary=require(_0x29e7('0x6'));config[_0x29e7('0x7')]=_[_0x29e7('0x8')](config['redis'],{'host':_0x29e7('0x9'),'port':0x18eb});var io=require(_0x29e7('0xa'))(new Redis(config[_0x29e7('0x7')]));var Sequence=function(){};Sequence[_0x29e7('0xb')][_0x29e7('0xc')]=function(_0x4cca44){this[_0x29e7('0xd')]=this[_0x29e7('0xd')]?this[_0x29e7('0xd')][_0x29e7('0xe')](_0x4cca44):_0x4cca44();};function VoiceQueueReport(_0x38fc00){this[_0x29e7('0xf')]=new Sequence();this[_0x29e7('0x10')]={};this[_0x29e7('0x11')]=_0x38fc00;this[_0x29e7('0x12')]=_0x38fc00[_0x29e7('0x12')];this[_0x29e7('0x13')]=_0x38fc00[_0x29e7('0x14')];this[_0x29e7('0x15')]=_0x38fc00['voiceQueues'];this['campaigns']=_0x38fc00[_0x29e7('0x16')];this[_0x29e7('0x17')]=initializeSummary();this['variables']={};ami['on']('queuesummary',this[_0x29e7('0x18')][_0x29e7('0x19')](this));ami['on'](_0x29e7('0x1a'),this[_0x29e7('0x1b')][_0x29e7('0x19')](this));ami['on']('queuemember',this[_0x29e7('0x1c')][_0x29e7('0x19')](this));ami['on'](_0x29e7('0x1d'),this[_0x29e7('0x1e')][_0x29e7('0x19')](this));ami['on'](_0x29e7('0x1f'),this[_0x29e7('0x20')][_0x29e7('0x19')](this));ami['on'](_0x29e7('0x21'),this[_0x29e7('0x22')]['bind'](this));ami['on']('queuecallerleave',this[_0x29e7('0x23')][_0x29e7('0x19')](this));ami['on']('agentcomplete',this[_0x29e7('0x24')][_0x29e7('0x19')](this));ami['on']('agentconnect',this[_0x29e7('0x25')][_0x29e7('0x19')](this));ami['on'](_0x29e7('0x26'),this[_0x29e7('0x27')]['bind'](this));ami['on'](_0x29e7('0x28'),this[_0x29e7('0x29')]['bind'](this));ami['on'](_0x29e7('0x2a'),this[_0x29e7('0x2b')]['bind'](this));ami['on'](_0x29e7('0x2c'),this['syncMusicOnHoldStart'][_0x29e7('0x19')](this));ami['on']('musiconholdstop',this[_0x29e7('0x2d')]['bind'](this));ami['on'](_0x29e7('0x2e'),this['syncAttendedTransfer']['bind'](this));ami['on'](_0x29e7('0x2f'),this[_0x29e7('0x30')]['bind'](this));this['loopQueueSummary']();this[_0x29e7('0x31')]();}function clearChannels(_0x37e4f8){if(!_['isEmpty'](_0x37e4f8)){for(var _0x35b174 in _0x37e4f8){if(_0x37e4f8[_0x29e7('0x32')](_0x35b174)){delete _0x37e4f8[_0x35b174];}}}}function clearCampaigns(_0x523f11){if(!_[_0x29e7('0x33')](_0x523f11)){for(var _0x316302 in _0x523f11){if(_0x523f11[_0x29e7('0x32')](_0x316302)){_0x523f11[_0x316302][_0x29e7('0x34')]=0x0;}}}}function clearVoiceQueues(_0x293ead){if(!_['isEmpty'](_0x293ead)){for(var _0x5b1ad0 in _0x293ead){if(_0x293ead['hasOwnProperty'](_0x5b1ad0)){_0x293ead[_0x5b1ad0][_0x29e7('0x34')]=0x0;_0x293ead[_0x5b1ad0][_0x29e7('0x35')]=0x0;_0x293ead[_0x5b1ad0][_0x29e7('0x36')]=0x0;_0x293ead[_0x5b1ad0]['waiting']=0x0;_0x293ead[_0x5b1ad0][_0x29e7('0x37')]=!![];}}}}function clearAgentBooked(_0x39976d){if(!_[_0x29e7('0x33')](_0x39976d)){for(var _0x393a9 in _0x39976d){if(_0x39976d[_0x29e7('0x32')](_0x393a9)){_0x39976d[_0x393a9]['unlockRR']=!![];}}}}function initializeSummary(){return{'id':null,'completeEvent':null,'isRunning':![],'queues':{},'queuestatus':{},'statusRequests':0x0};}VoiceQueueReport[_0x29e7('0xb')]['clearZombieChannels']=function(){var _0x3c2ec4=this;for(var _0x240691 in this['channels']){if(this[_0x29e7('0x13')]['hasOwnProperty'](_0x240691)&&!this[_0x29e7('0x13')][_0x240691][_0x29e7('0x38')]){this[_0x29e7('0xf')][_0x29e7('0xc')](function(){if(!_[_0x29e7('0x39')](_0x3c2ec4[_0x29e7('0x13')][_0x240691])){return ami[_0x29e7('0x3a')]({'action':_0x29e7('0x3b'),'channel':_0x3c2ec4[_0x29e7('0x13')][_0x240691]['channel']})[_0x29e7('0x3c')](function(_0x47f08e){if(_0x47f08e[_0x29e7('0x3d')]===_0x29e7('0x3e')){setTimeout(function(){if(_0x3c2ec4[_0x29e7('0x13')][_0x240691]){delete _0x3c2ec4[_0x29e7('0x13')][_0x240691];logger[_0x29e7('0x3f')]('[%s][voiceQueueReport][checkChannel]',_0x240691,util[_0x29e7('0x40')](_0x47f08e,{'showHidden':![],'depth':null}));}if(_0x3c2ec4[_0x29e7('0x10')][_0x240691]){delete _0x3c2ec4[_0x29e7('0x10')][_0x240691];logger[_0x29e7('0x3f')](_0x29e7('0x41'),_0x240691,util[_0x29e7('0x40')](_0x47f08e,{'showHidden':![],'depth':null}));}if(_0x3c2ec4[_0x29e7('0x42')][_0x240691]){delete _0x3c2ec4[_0x29e7('0x42')][_0x240691];logger[_0x29e7('0x3f')](_0x29e7('0x43'),_0x240691,util[_0x29e7('0x40')](_0x47f08e,{'showHidden':![],'depth':null}));}},0x1f40);}});}});}}};VoiceQueueReport[_0x29e7('0xb')]['syncFullyBooted']=function(){logger['error'](_0x29e7('0x44'));clearChannels(this[_0x29e7('0x13')]);this['clearQueueReport'](this[_0x29e7('0x10')]);clearAgentBooked(this[_0x29e7('0x12')]);clearVoiceQueues(this[_0x29e7('0x15')]);clearCampaigns(this[_0x29e7('0x16')]);this[_0x29e7('0x17')]=initializeSummary();};VoiceQueueReport[_0x29e7('0xb')][_0x29e7('0x45')]=function(_0x43b81c){var _0x5158d6=this;if(!_[_0x29e7('0x33')](_0x43b81c)){for(var _0x21e3ed in _0x43b81c){if(_0x43b81c[_0x29e7('0x32')](_0x21e3ed)){_0x5158d6[_0x29e7('0x46')](_0x43b81c[_0x21e3ed],'clearqueuereport');delete _0x43b81c[_0x21e3ed];}}}};VoiceQueueReport[_0x29e7('0xb')]['emit']=function(_0x3d9c4d,_0x45935b,_0x2ed4e8){io['to'](_0x3d9c4d)['emit'](_0x45935b,_0x2ed4e8);};VoiceQueueReport[_0x29e7('0xb')]['emitVoiceQueueChannelSave']=function(_0x22d50e,_0x2c823f){logger[_0x29e7('0x47')](_0x29e7('0x48')+_0x2c823f+']\x20sending\x20voice_queue_channel:save\x20event:',_0x22d50e[_0x29e7('0x49')],util[_0x29e7('0x40')](_0x22d50e,{'showHidden':![],'depth':null}));this[_0x29e7('0x4a')](util[_0x29e7('0x4b')]('voice:queue:%s',_0x22d50e['queue']),_0x29e7('0x4c'),_0x22d50e);io['emit'](_0x29e7('0x4d'),_0x22d50e);};VoiceQueueReport[_0x29e7('0xb')][_0x29e7('0x46')]=function(_0x249859,_0x261f45){logger[_0x29e7('0x47')](_0x29e7('0x48')+_0x261f45+_0x29e7('0x4e'),_0x249859['uniqueid'],util[_0x29e7('0x40')](_0x249859,{'showHidden':![],'depth':null}));if(_0x249859[_0x29e7('0x4f')]==='ATTENDEDTRANSFER'){return;}this[_0x29e7('0x4a')](util[_0x29e7('0x4b')]('voice:queue:%s',_0x249859[_0x29e7('0x50')]),_0x29e7('0x51'),_0x249859);io[_0x29e7('0x4a')]('voice_queue_presence:remove',_0x249859);};VoiceQueueReport[_0x29e7('0xb')][_0x29e7('0x52')]=function(_0x11c146){if(_0x11c146['type']==='inbound'){logger['debug'](_0x29e7('0x53'),util[_0x29e7('0x40')](_0x11c146,{'showHidden':![],'depth':null}));this[_0x29e7('0x4a')](util[_0x29e7('0x4b')](_0x29e7('0x54'),_0x11c146['name']),_0x29e7('0x55'),_0x11c146);}};VoiceQueueReport[_0x29e7('0xb')]['isNotNull']=function(_0x29f0c9){return _0x29f0c9!==null&&!_[_0x29e7('0x56')](_0x29f0c9);};VoiceQueueReport[_0x29e7('0xb')][_0x29e7('0x31')]=function(){var _0x314bf4=this;setInterval(function(){_0x314bf4[_0x29e7('0x57')]();ami[_0x29e7('0x3a')]({'action':_0x29e7('0x58')})[_0x29e7('0x3c')](function(_0x18647a){logger[_0x29e7('0x3f')](_0x29e7('0x59'),util[_0x29e7('0x40')](_0x18647a,{'showHidden':![],'depth':null}));});},0x2710);};VoiceQueueReport[_0x29e7('0xb')]['loopQueueSummary']=function(){var _0x11b9cf=this;setInterval(function(){if(!_0x11b9cf['summary'][_0x29e7('0x5a')]){return ami[_0x29e7('0x3a')]({'action':'queuesummary'})[_0x29e7('0x5b')](function(_0x1c7cf1){_0x11b9cf[_0x29e7('0x17')]['id']=_0x1c7cf1[_0x29e7('0x5c')];_0x11b9cf['summary'][_0x29e7('0x5a')]=!![];_0x11b9cf[_0x29e7('0x17')][_0x29e7('0x5d')][_0x1c7cf1[_0x29e7('0x5c')]]={};})[_0x29e7('0x3c')](function(_0x4c48aa){logger[_0x29e7('0x3f')](_0x29e7('0x5e'),util['inspect'](_0x4c48aa,{'showHidden':![],'depth':null}));});}},0x3e8);};VoiceQueueReport[_0x29e7('0xb')][_0x29e7('0x5f')]=function(_0x1ba2ad,_0x37384b){var _0xc847e8=this[_0x29e7('0x17')][_0x29e7('0x58')][_0x1ba2ad[_0x29e7('0x60')]][_0x29e7('0x61')];var _0x299c5b=new VoiceQueueSummary(_0x1ba2ad);return _0x299c5b[_0x29e7('0x62')](_0x37384b['agents'],this[_0x29e7('0x12')],_0xc847e8,this[_0x29e7('0x11')][_0x29e7('0x13')]);};VoiceQueueReport[_0x29e7('0xb')]['handleInboundQueueSummaryReport']=function(_0x3ed6d0,_0x52c2c0){var _0x597622=this['createQueueSummaryReport'](_0x3ed6d0,_0x52c2c0);var _0x27e5b1=![];_0x27e5b1=_0x597622['compareToInboundQueue'](_0x3ed6d0);if(_0x27e5b1){Object[_0x29e7('0x63')](_0x3ed6d0,_0x597622);this[_0x29e7('0x11')]['voiceQueues'][_0x3ed6d0[_0x29e7('0x60')]]=_0x3ed6d0;this[_0x29e7('0x52')](_0x597622);}};VoiceQueueReport['prototype'][_0x29e7('0x1e')]=function(_0x4a4804){var _0x101ba6=null;var _0x59e79f=this[_0x29e7('0x17')]['id'];if(this['summary']['queuestatus'][_0x59e79f]){_0x101ba6=this[_0x29e7('0x17')][_0x29e7('0x5d')][_0x59e79f][_0x4a4804[_0x29e7('0x5c')]];}if(!_0x101ba6){this['summary']=initializeSummary();return;}var _0x2bc510=this[_0x29e7('0x15')][_0x101ba6[_0x29e7('0x50')]];if(_0x2bc510[_0x29e7('0x64')]===_0x29e7('0x65')){this[_0x29e7('0x66')](_0x2bc510,_0x101ba6);}else if(_0x2bc510['type']===_0x29e7('0x67')){var _0x547e93=this['createQueueSummaryReport'](_0x2bc510,_0x101ba6);ami[_0x29e7('0x4a')](_0x29e7('0x68'),_0x547e93);}this[_0x29e7('0x17')][_0x29e7('0x69')]-=0x1;var _0x4e4af2=this[_0x29e7('0x17')]['statusRequests']>0x0?!![]:![];if(!_0x4e4af2){return this[_0x29e7('0x1b')](this[_0x29e7('0x17')][_0x29e7('0x6a')]);}};VoiceQueueReport['prototype'][_0x29e7('0x1c')]=function(_0x58b668){var _0x1d3236=this[_0x29e7('0x17')]['id'];if(this[_0x29e7('0x17')][_0x29e7('0x5d')][_0x1d3236]&&this[_0x29e7('0x17')][_0x29e7('0x5d')][_0x1d3236][_0x58b668['actionid']]){this['summary'][_0x29e7('0x5d')][_0x1d3236][_0x58b668[_0x29e7('0x5c')]][_0x29e7('0x12')]['push'](_0x58b668);}};VoiceQueueReport[_0x29e7('0xb')][_0x29e7('0x18')]=function(_0x1cb8de){var _0x4b19aa=this;try{if(this[_0x29e7('0x6b')](_0x1cb8de)&&this[_0x29e7('0x6b')](_0x1cb8de[_0x29e7('0x50')])){logger[_0x29e7('0x47')](_0x29e7('0x6c'),util['inspect'](_0x1cb8de,{'showHidden':![],'depth':null}));var _0x51c424=this['voiceQueues'][_0x1cb8de[_0x29e7('0x50')]];if(_0x51c424){logger[_0x29e7('0x6d')](_0x29e7('0x6e'),_0x51c424[_0x29e7('0x60')]);this[_0x29e7('0x17')]['queues'][_0x51c424['name']]={'summaryEvent':_0x1cb8de};this[_0x29e7('0x17')][_0x29e7('0x69')]+=0x1;return ami[_0x29e7('0x3a')]({'action':'queuestatus','queue':_0x51c424[_0x29e7('0x60')]})[_0x29e7('0x5b')](function(_0x46a8d8){if(!_0x4b19aa[_0x29e7('0x17')][_0x29e7('0x5d')][_0x1cb8de[_0x29e7('0x5c')]]){_0x4b19aa[_0x29e7('0x17')][_0x29e7('0x5d')][_0x1cb8de[_0x29e7('0x5c')]]={};}_0x4b19aa[_0x29e7('0x17')][_0x29e7('0x5d')][_0x1cb8de['actionid']][_0x46a8d8['actionid']]={'queue':_0x51c424[_0x29e7('0x60')],'agents':[]};})[_0x29e7('0x3c')](function(_0x3cb6a7){throw _0x3cb6a7;});}}}catch(_0xb23ea){logger[_0x29e7('0x3f')](_0x29e7('0x5e'),util[_0x29e7('0x40')](_0xb23ea,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x29e7('0xb')][_0x29e7('0x1b')]=function(_0x52f5e){if(this['summary']['statusRequests']>0x0){this[_0x29e7('0x17')][_0x29e7('0x6a')]=_0x52f5e;return;}logger[_0x29e7('0x47')](_0x29e7('0x6f'),util['inspect'](_0x52f5e,{'showHidden':![],'depth':null}));this[_0x29e7('0x17')]=initializeSummary();ami[_0x29e7('0x4a')](_0x29e7('0x70'),{});};VoiceQueueReport[_0x29e7('0xb')]['syncQueueCallerJoin']=function(_0x401108){try{if(this[_0x29e7('0x6b')](_0x401108)){logger[_0x29e7('0x47')](_0x29e7('0x71'),_0x401108['uniqueid'],util[_0x29e7('0x40')](_0x401108,{'showHidden':![],'depth':null}));if(_[_0x29e7('0x56')](this[_0x29e7('0x10')][_0x401108[_0x29e7('0x49')]])){this['queueReports'][_0x401108[_0x29e7('0x49')]]=[];}if(_[_0x29e7('0x56')](this['channels'][_0x401108[_0x29e7('0x49')]])){this[_0x29e7('0x13')][_0x401108[_0x29e7('0x49')]]={};}var _0x267c73=new QueueReport();_0x267c73['queue']=_0x401108[_0x29e7('0x50')];_0x267c73[_0x29e7('0x64')]=this[_0x29e7('0x15')][_0x267c73[_0x29e7('0x50')]]&&this[_0x29e7('0x15')][_0x267c73[_0x29e7('0x50')]][_0x29e7('0x64')]?this[_0x29e7('0x15')][_0x267c73[_0x29e7('0x50')]][_0x29e7('0x64')]||'inbound':_0x29e7('0x65');_0x267c73[_0x29e7('0x72')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x267c73[_0x29e7('0x73')]=_0x401108[_0x29e7('0x73')];_0x267c73[_0x29e7('0x74')]=_0x401108[_0x29e7('0x74')];_0x267c73[_0x29e7('0x49')]=_0x401108[_0x29e7('0x49')];_0x267c73[_0x29e7('0x75')]=this[_0x29e7('0x13')][_0x401108[_0x29e7('0x49')]][_0x29e7('0x75')];logger['info'](_0x29e7('0x76'),_0x267c73['queue'],_0x267c73[_0x29e7('0x64')]);_[_0x29e7('0x77')](_0x267c73,_[_0x29e7('0x78')](_0x401108,_[_0x29e7('0x79')](_0x267c73)));this[_0x29e7('0x10')][_0x401108[_0x29e7('0x49')]][_0x29e7('0x7a')](_0x267c73);this['channels'][_0x401108[_0x29e7('0x49')]]=_0x267c73;this['emitVoiceQueueChannelSave'](_0x267c73,_0x29e7('0x1f'));}}catch(_0x311239){logger[_0x29e7('0x3f')](_0x29e7('0x71'),_0x401108['uniqueid'],util[_0x29e7('0x40')](_0x311239,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x29e7('0xb')][_0x29e7('0x22')]=function(_0x9e7c4b){try{if(this['isNotNull'](_0x9e7c4b)){logger[_0x29e7('0x47')](_0x29e7('0x7b'),_0x9e7c4b[_0x29e7('0x49')],util[_0x29e7('0x40')](_0x9e7c4b,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x9e7c4b[_0x29e7('0x49')]]){var _0x42147b=_[_0x29e7('0x7c')](this[_0x29e7('0x10')][_0x9e7c4b[_0x29e7('0x49')]]);_0x42147b['queuecallercomplete']=![];_0x42147b[_0x29e7('0x7d')]=null;_0x42147b[_0x29e7('0x7e')]=_0x9e7c4b[_0x29e7('0x7e')];_0x42147b['originalposition']=_0x9e7c4b[_0x29e7('0x7f')];_0x42147b[_0x29e7('0x21')]=!![];_0x42147b[_0x29e7('0x80')]=moment()[_0x29e7('0x4b')](_0x29e7('0x81'));_0x42147b[_0x29e7('0x4f')]='ABANDONED';_0x42147b['lastAssignedTo']=null;logger[_0x29e7('0x6d')](_0x29e7('0x82'),_0x42147b[_0x29e7('0x50')],_0x42147b['type']);this[_0x29e7('0x13')][_0x9e7c4b['uniqueid']]=_0x42147b;this[_0x29e7('0x46')](_0x42147b,_0x29e7('0x21'));}}}catch(_0x4cf9d7){logger[_0x29e7('0x3f')](_0x29e7('0x7b'),_0x9e7c4b[_0x29e7('0x49')],util['inspect'](_0x4cf9d7,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x29e7('0xb')][_0x29e7('0x23')]=function(_0x18297c){try{if(this[_0x29e7('0x6b')](_0x18297c)){logger[_0x29e7('0x47')](_0x29e7('0x83'),_0x18297c[_0x29e7('0x49')],util['inspect'](_0x18297c,{'showHidden':![],'depth':null}));if(this[_0x29e7('0x10')][_0x18297c[_0x29e7('0x49')]]){var _0x257efa=_[_0x29e7('0x7c')](this[_0x29e7('0x10')][_0x18297c[_0x29e7('0x49')]]);_0x257efa[_0x29e7('0x84')]=moment()[_0x29e7('0x4b')]('YYYY-MM-DD\x20HH:mm:ss');_0x257efa['connectedlinenum']=_0x18297c[_0x29e7('0x85')];_0x257efa[_0x29e7('0x86')]=_0x18297c[_0x29e7('0x86')];logger[_0x29e7('0x6d')]('[voiceQueueReport][queuecallerleave]\x20name:%s\x20type:%s\x20connectedlinenum:%s\x20connectedlinename:%s',_0x257efa[_0x29e7('0x50')],_0x257efa[_0x29e7('0x64')],_0x18297c[_0x29e7('0x85')],_0x18297c['connectedlinename']);this[_0x29e7('0x13')][_0x18297c['uniqueid']]=_0x257efa;this['emitVoiceQueueChannelSave'](_0x257efa,_0x29e7('0x87'));}}}catch(_0x3994e7){logger['error'](_0x29e7('0x83'),_0x18297c[_0x29e7('0x49')],util[_0x29e7('0x40')](_0x3994e7,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x29e7('0xb')][_0x29e7('0x25')]=function(_0x3b01f8){try{if(this[_0x29e7('0x6b')](_0x3b01f8)){logger[_0x29e7('0x47')](_0x29e7('0x88'),_0x3b01f8['uniqueid'],util['inspect'](_0x3b01f8,{'showHidden':![],'depth':null}));if(this[_0x29e7('0x10')][_0x3b01f8[_0x29e7('0x49')]]){var _0x12c857=_[_0x29e7('0x7c')](this[_0x29e7('0x10')][_0x3b01f8[_0x29e7('0x49')]]);_0x12c857['queuecallercomplete']=!![];_0x12c857[_0x29e7('0x4f')]='COMPLETEDBYAGENT';logger[_0x29e7('0x6d')](_0x29e7('0x89'),_0x12c857['queue'],_0x12c857[_0x29e7('0x64')]);}}}catch(_0x36a8a1){logger[_0x29e7('0x3f')]('[%s][voiceQueueReport][agentconnect]',_0x3b01f8[_0x29e7('0x49')],util[_0x29e7('0x40')](_0x36a8a1,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x29e7('0xb')][_0x29e7('0x24')]=function(_0x3c409e){try{if(this['isNotNull'](_0x3c409e)){logger[_0x29e7('0x47')](_0x29e7('0x8a'),_0x3c409e[_0x29e7('0x49')],util[_0x29e7('0x40')](_0x3c409e,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x3c409e[_0x29e7('0x49')]]){var _0x3d34c2=_[_0x29e7('0x7c')](this[_0x29e7('0x10')][_0x3c409e[_0x29e7('0x49')]]);_0x3d34c2[_0x29e7('0x21')]=![];_0x3d34c2['queuecallerabandonAt']=null;_0x3d34c2['assigned']=!![];_0x3d34c2[_0x29e7('0x8b')]=_0x3c409e[_0x29e7('0x8c')];_0x3d34c2[_0x29e7('0x7e')]=_0x3c409e[_0x29e7('0x7e')];_0x3d34c2['queuecallercomplete']=!![];_0x3d34c2[_0x29e7('0x8d')]=![];_0x3d34c2[_0x29e7('0x8e')]=null;if(!_0x3d34c2[_0x29e7('0x8f')]){if(_0x3c409e[_0x29e7('0x90')]=='transfer'){_0x3d34c2[_0x29e7('0x4f')]=_0x29e7('0x91');logger[_0x29e7('0x6d')](_0x29e7('0x92'),_0x3d34c2[_0x29e7('0x50')],_0x3d34c2[_0x29e7('0x64')]);}else{if(_[_0x29e7('0x93')](_0x3c409e[_0x29e7('0x94')][_0x29e7('0x95')](),_0x29e7('0x96'))){if(this[_0x29e7('0x10')][_0x3c409e['linkedid']]){var _0x40c451=_['last'](this[_0x29e7('0x10')][_0x3c409e[_0x29e7('0x97')]]);_0x40c451[_0x29e7('0x98')]=![];_0x40c451['queuecallerexit']=!![];_0x40c451[_0x29e7('0x8e')]=moment(_0x3d34c2[_0x29e7('0x72')])[_0x29e7('0x99')](_0x3c409e[_0x29e7('0x7e')],_0x29e7('0x9a'))[_0x29e7('0x4b')](_0x29e7('0x81'));_0x40c451[_0x29e7('0x4f')]=_0x29e7('0x9b');_0x40c451['transfer']=!![];_0x40c451[_0x29e7('0x9c')]=_0x29e7('0x9d');_0x40c451['transferexten']=_0x3c409e[_0x29e7('0x9e')];_0x40c451[_0x29e7('0x9f')]=_0x3c409e[_0x29e7('0x49')];logger['info']('[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:FORWARDTRANSFER',_0x40c451['queue'],_0x40c451[_0x29e7('0x64')]);var _0x3f7c45=this[_0x29e7('0x10')][_0x3c409e[_0x29e7('0x97')]];this[_0x29e7('0x10')][_0x3c409e[_0x29e7('0x97')]]=this['queueReports'][_0x3c409e['uniqueid']];this[_0x29e7('0x10')][_0x3c409e[_0x29e7('0x49')]]=_0x3f7c45;}}else{_0x3d34c2[_0x29e7('0x4f')]=_0x29e7('0xa0')+_0x3c409e[_0x29e7('0x90')]['toUpperCase']();logger[_0x29e7('0x6d')](_0x29e7('0xa1'),_0x3d34c2[_0x29e7('0x50')],_0x3d34c2['type'],_0x3d34c2[_0x29e7('0x4f')]);}}}this['channels'][_0x3c409e[_0x29e7('0x49')]]=_0x3d34c2;}}}catch(_0x1fb60f){logger[_0x29e7('0x3f')]('[%s][voiceQueueReport][agentcomplete]',_0x3c409e['uniqueid'],util['inspect'](_0x1fb60f,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x29e7('0xb')][_0x29e7('0x27')]=function(_0x526dd9){try{if(this[_0x29e7('0x6b')](_0x526dd9)){logger[_0x29e7('0x47')]('[%s][voiceQueueReport][varset]',_0x526dd9[_0x29e7('0x49')],util['inspect'](_0x526dd9,{'showHidden':![],'depth':null}));this[_0x29e7('0xa2')](_0x526dd9['uniqueid'],_['keys'](_0x526dd9['variable'])[0x0],_0x526dd9[_0x29e7('0xa3')]);if(this[_0x29e7('0x10')][_0x526dd9[_0x29e7('0x49')]]){var _0x4718cd=_[_0x29e7('0x7c')](this[_0x29e7('0x10')][_0x526dd9[_0x29e7('0x49')]]);if(_0x4718cd){if(this[_0x29e7('0x6b')](_0x526dd9[_0x29e7('0xa4')])&&this[_0x29e7('0x6b')](_0x526dd9['variable']['queuestatus'])){switch(_0x526dd9[_0x29e7('0xa3')]){case _0x29e7('0xa5'):_0x4718cd[_0x29e7('0x8d')]=![];_0x4718cd['queuecallerexitAt']=null;break;case _0x29e7('0xa6'):_0x4718cd[_0x29e7('0xa7')]='timeout';_0x4718cd[_0x29e7('0x8d')]=!![];_0x4718cd[_0x29e7('0x8e')]=moment()[_0x29e7('0x4b')]('YYYY-MM-DD\x20HH:mm:ss');_0x4718cd[_0x29e7('0x84')]=moment()['format'](_0x29e7('0x81'));logger[_0x29e7('0x47')](_0x29e7('0xa8'),_0x526dd9[_0x29e7('0x49')],util['inspect'](_0x4718cd,{'showHidden':![],'depth':null}));ami[_0x29e7('0x4a')](_0x29e7('0xa9'),_0x4718cd);break;default:_0x4718cd[_0x29e7('0x8d')]=!![];_0x4718cd['queuecallerexitAt']=moment()['format'](_0x29e7('0x81'));_0x4718cd[_0x29e7('0x84')]=moment()['format'](_0x29e7('0x81'));}_0x4718cd['queuecallerabandon']=![];_0x4718cd['queuecallerabandonAt']=null;_0x4718cd[_0x29e7('0x4f')]=_0x526dd9[_0x29e7('0xa3')];this[_0x29e7('0x13')][_0x526dd9[_0x29e7('0x49')]]=_0x4718cd;this[_0x29e7('0x46')](_0x4718cd,_0x29e7('0x26'));}else if(this[_0x29e7('0x6b')](_0x526dd9['variable'])&&this[_0x29e7('0x6b')](_0x526dd9[_0x29e7('0xa4')]['queueposition'])){if(!_0x4718cd['queuecallerabandon']){_0x4718cd[_0x29e7('0x8d')]=!![];_0x4718cd[_0x29e7('0x8e')]=moment()[_0x29e7('0x4b')](_0x29e7('0x81'));_0x4718cd[_0x29e7('0x4f')]='EXITWITHKEY';_0x4718cd['queuecallerleaveAt']=moment()[_0x29e7('0x4b')](_0x29e7('0x81'));this['channels'][_0x526dd9['uniqueid']]=_0x4718cd;}}logger[_0x29e7('0x6d')](_0x29e7('0xaa'),_0x526dd9[_0x29e7('0x49')],_0x4718cd[_0x29e7('0x50')],_0x4718cd[_0x29e7('0x64')],_[_0x29e7('0x79')](_0x526dd9[_0x29e7('0xa4')])[0x0],_0x526dd9[_0x29e7('0xa3')]);_0x4718cd[_0x29e7('0x42')]=this[_0x29e7('0x42')][_0x526dd9['uniqueid']];}}}}catch(_0x400ea8){logger[_0x29e7('0x3f')](_0x29e7('0xab'),_0x526dd9['uniqueid'],util[_0x29e7('0x40')](_0x400ea8,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x29e7('0xa2')]=function(_0x4d7d30,_0x3e19eb,_0x34900b){var _0x305d58=['rtpaudioqos',_0x29e7('0xac'),_0x29e7('0xad'),_0x29e7('0xae'),_0x29e7('0xaf'),_0x29e7('0xb0'),_0x29e7('0xb1'),_0x29e7('0xb2'),_0x29e7('0xb3'),_0x29e7('0xb4'),'bridgepeer','bridgepvtcallid',_0x29e7('0xb5'),'memberdynamic',_0x29e7('0xb6'),_0x29e7('0xb7'),_0x29e7('0x8c'),_0x29e7('0xb8'),_0x29e7('0xb9')];if(!_['isNil'](_0x3e19eb)&&!_[_0x29e7('0xba')](_0x305d58,_0x3e19eb)){if(_[_0x29e7('0x56')](this[_0x29e7('0x42')][_0x4d7d30])){this[_0x29e7('0x42')][_0x4d7d30]={};}this[_0x29e7('0x42')][_0x4d7d30][_0x3e19eb]=_0x34900b;}};VoiceQueueReport[_0x29e7('0xb')][_0x29e7('0xbb')]=function(_0x3e3a3b,_0xadfc05,_0x1a8c7e){var _0x42fd1a={};for(var _0x1e904b=0x0;_0x1e904b<this[_0x29e7('0x10')][_0x3e3a3b][_0x29e7('0xbc')];_0x1e904b+=0x1){_0x42fd1a=this[_0x29e7('0x10')][_0x3e3a3b][_0x1e904b];if(this[_0x29e7('0x15')][_0x42fd1a[_0x29e7('0x50')]]){if(_0x42fd1a[_0x29e7('0x8d')]&&_0x42fd1a[_0x29e7('0x8f')]!=!![]){this[_0x29e7('0x15')][_0x42fd1a[_0x29e7('0x50')]][_0x29e7('0xbd')]+=0x1;}if(_0x42fd1a[_0x29e7('0x21')]){this['voiceQueues'][_0x42fd1a[_0x29e7('0x50')]][_0x29e7('0xbe')]+=0x1;}this[_0x29e7('0x15')][_0x42fd1a[_0x29e7('0x50')]][_0x29e7('0xbf')]+=moment(_0x42fd1a['queuecallerleaveAt'])[_0x29e7('0xc0')](_0x42fd1a[_0x29e7('0x72')],'seconds')||0x0;if(_0x1e904b===this[_0x29e7('0x10')][_0x3e3a3b][_0x29e7('0xbc')]-0x1){this[_0x29e7('0x15')][_0x42fd1a['queue']][_0x29e7('0xc1')]+=moment()[_0x29e7('0xc2')](0x0)['diff'](_0x42fd1a['queuecallerjoinAt'],_0x29e7('0x9a'));this['voiceQueues'][_0x42fd1a[_0x29e7('0x50')]][_0x29e7('0xc3')]+=0x1;if(_0x42fd1a[_0x29e7('0x98')]){this[_0x29e7('0x15')][_0x42fd1a['queue']]['answered']+=0x1;this[_0x29e7('0x15')][_0x42fd1a[_0x29e7('0x50')]][_0x29e7('0xc4')]+=moment()[_0x29e7('0xc2')](0x0)[_0x29e7('0xc0')](_0x42fd1a[_0x29e7('0x84')],_0x29e7('0x9a'));_0x42fd1a[_0x29e7('0x7d')]=moment()[_0x29e7('0x4b')](_0x29e7('0x81'));_0x42fd1a['queuecallerexit']=![];_0x42fd1a[_0x29e7('0x8e')]=null;}if(_0x42fd1a['queuecallerexit']&&_0x42fd1a[_0x29e7('0x8f')]!=!![]){_0x42fd1a[_0x29e7('0xa7')]=_0x29e7('0xbd');logger[_0x29e7('0x47')](_0x29e7('0xc5'),_0x3e3a3b,util['inspect'](_0x42fd1a,{'showHidden':![],'depth':null}));ami[_0x29e7('0x4a')]('custom:queuecallerunmanaged',_0x42fd1a);}if(_0x42fd1a[_0x29e7('0x21')]){_0x42fd1a[_0x29e7('0xa7')]=_0x29e7('0xbe');logger[_0x29e7('0x47')](_0x29e7('0xc6'),_0x3e3a3b,util[_0x29e7('0x40')](_0x42fd1a,{'showHidden':![],'depth':null}));ami[_0x29e7('0x4a')](_0x29e7('0xc7'),_0x42fd1a);}}else{this['voiceQueues'][_0x42fd1a[_0x29e7('0x50')]]['sumDuration']+=this['voiceQueues'][_0x42fd1a[_0x29e7('0x50')]][_0x29e7('0xbf')];}logger[_0x29e7('0x6d')](_0x29e7('0xc8'),_0x3e3a3b,_0x42fd1a[_0x29e7('0x50')],_0x42fd1a[_0x29e7('0x64')],_0xadfc05);if(_0x1a8c7e&&_0x42fd1a[_0x29e7('0x4f')]===_0x29e7('0xc9')){_0x42fd1a['queuecallerexitreason']=_0x29e7('0xca');}this[_0x29e7('0x13')][_0x3e3a3b]=_0x42fd1a;if(_0x42fd1a[_0x29e7('0x84')]){this['emitVoiceQueueChannelRemove'](_0x42fd1a,_0x29e7('0x28'));}}}logger[_0x29e7('0x47')]('[%s][voiceQueueReport][hangup]\x20sending\x20voiceQueueReport\x20event:',_0x3e3a3b,util[_0x29e7('0x40')](this['queueReports'][_0x3e3a3b],{'showHidden':![],'depth':null}));ami[_0x29e7('0x4a')]('custom:voiceQueueReport',this[_0x29e7('0x10')][_0x3e3a3b]);if(_0x42fd1a[_0x29e7('0x4f')]===_0x29e7('0xc9')||_0x42fd1a[_0x29e7('0x84')]===null){return;}if(_0x42fd1a[_0x29e7('0x8d')]||_0x42fd1a[_0x29e7('0x21')]||_0x42fd1a['queuecallercomplete']){delete this['queueReports'][_0x3e3a3b];delete this['channels'][_0x3e3a3b];if(this[_0x29e7('0x42')][_0x3e3a3b]){delete this[_0x29e7('0x42')][_0x3e3a3b];}}};VoiceQueueReport[_0x29e7('0xb')][_0x29e7('0x29')]=function(_0x2696cf){try{if(this[_0x29e7('0x6b')](_0x2696cf)){logger[_0x29e7('0x47')]('[%s][voiceQueueReport][hangup]',_0x2696cf[_0x29e7('0x49')],util[_0x29e7('0x40')](_0x2696cf,{'showHidden':![],'depth':null}));if(this[_0x29e7('0x10')][_0x2696cf[_0x29e7('0x49')]]){return this[_0x29e7('0xbb')](_0x2696cf['uniqueid'],_0x2696cf[_0x29e7('0xcb')],![]);}if(this[_0x29e7('0x10')][_0x2696cf[_0x29e7('0x97')]]){if(_0x2696cf[_0x29e7('0xcc')]==='21'){return;}return this['handleHangup'](_0x2696cf['linkedid'],_0x2696cf[_0x29e7('0xcb')],!![]);}var _0x376acc=Object[_0x29e7('0x79')](this[_0x29e7('0x10')]);for(var _0x4de010=0x0;_0x4de010<_0x376acc['length'];_0x4de010++){var _0x4658d3=_[_0x29e7('0x7c')](this['queueReports'][_0x376acc[_0x4de010]]);if(_0x4658d3&&_0x4658d3[_0x29e7('0xcd')]===_0x2696cf[_0x29e7('0x49')]){return this['handleHangup'](_0x4658d3['uniqueid'],_0x2696cf['cause-txt'],!![]);}}}}catch(_0x25edd1){logger[_0x29e7('0x3f')](_0x29e7('0xce'),_0x2696cf[_0x29e7('0x49')],util[_0x29e7('0x40')](_0x25edd1,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x29e7('0xb')][_0x29e7('0xcf')]=function(_0x2aa1c9){try{if(this[_0x29e7('0x6b')](_0x2aa1c9)){logger[_0x29e7('0x47')]('[%s][voiceQueueReport][attendedtransfer]',_0x2aa1c9[_0x29e7('0x49')],util[_0x29e7('0x40')](_0x2aa1c9,{'showHidden':![],'depth':null}));var _0x64954;var _0xb2f649;var _0x51263d;if(this[_0x29e7('0x10')][_0x2aa1c9[_0x29e7('0xd0')]]){_0x64954=_['last'](this['queueReports'][_0x2aa1c9[_0x29e7('0xd0')]]);_0x64954[_0x29e7('0xd1')]=_0x2aa1c9[_0x29e7('0xd2')];_0x64954[_0x29e7('0x9f')]=_0x2aa1c9[_0x29e7('0xd3')];_0x64954['queuecallerexitreason']=_0x29e7('0xc9');_0x64954[_0x29e7('0x8f')]=!![];_0x64954[_0x29e7('0x9c')]=_0x29e7('0xd4');if(this[_0x29e7('0x10')][_0x2aa1c9[_0x29e7('0xd3')]]){_0x51263d=this['queueReports'][_0x2aa1c9['secondtransfereruniqueid']];this[_0x29e7('0x10')][_0x2aa1c9['secondtransfereruniqueid']]=this[_0x29e7('0x10')][_0x2aa1c9[_0x29e7('0xd0')]];this['queueReports'][_0x2aa1c9[_0x29e7('0xd0')]]=_0x51263d;_0xb2f649=_[_0x29e7('0x7c')](this[_0x29e7('0x10')][_0x2aa1c9[_0x29e7('0xd0')]]);_0xb2f649[_0x29e7('0x38')]=!![];}logger[_0x29e7('0x6d')](_0x29e7('0xd5'),_0x2aa1c9[_0x29e7('0x49')],_0x64954[_0x29e7('0x50')],_0x64954[_0x29e7('0x64')],_0x64954[_0x29e7('0xd1')],_0x64954[_0x29e7('0x9f')]);}else if(this[_0x29e7('0x10')][_0x2aa1c9['transfertargetuniqueid']]){_0x64954=_[_0x29e7('0x7c')](this[_0x29e7('0x10')][_0x2aa1c9[_0x29e7('0xd6')]]);_0x64954[_0x29e7('0xd1')]=_0x2aa1c9['origtransfererexten'];_0x64954[_0x29e7('0x9f')]=_0x2aa1c9[_0x29e7('0xd7')];_0x64954[_0x29e7('0x4f')]='ATTENDEDTRANSFER';_0x64954[_0x29e7('0x8f')]=!![];_0x64954[_0x29e7('0x9c')]=_0x29e7('0xd4');if(this[_0x29e7('0x10')][_0x2aa1c9[_0x29e7('0xd7')]]){_0x51263d=this[_0x29e7('0x10')][_0x2aa1c9[_0x29e7('0xd7')]];this[_0x29e7('0x10')][_0x2aa1c9[_0x29e7('0xd7')]]=this[_0x29e7('0x10')][_0x2aa1c9[_0x29e7('0xd6')]];this['queueReports'][_0x2aa1c9[_0x29e7('0xd6')]]=_0x51263d;_0xb2f649=_[_0x29e7('0x7c')](this['queueReports'][_0x2aa1c9[_0x29e7('0xd6')]]);_0xb2f649[_0x29e7('0x38')]=!![];}logger['info']('[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s',_0x2aa1c9[_0x29e7('0x49')],_0x64954[_0x29e7('0x50')],_0x64954[_0x29e7('0x64')],_0x64954['transferexten'],_0x64954[_0x29e7('0x9f')]);}else if(this[_0x29e7('0x10')][_0x2aa1c9['origtransfereruniqueid']]){_0x64954=_[_0x29e7('0x7c')](this[_0x29e7('0x10')][_0x2aa1c9[_0x29e7('0xd7')]]);_0x64954[_0x29e7('0xd1')]=_0x2aa1c9[_0x29e7('0xd8')];_0x64954['transferuniqueid']=_0x2aa1c9['origtransfereruniqueid'];_0x64954[_0x29e7('0x4f')]=_0x29e7('0xc9');_0x64954[_0x29e7('0x8f')]=!![];_0x64954[_0x29e7('0x9c')]='ATTENDED';_0x64954[_0x29e7('0x38')]=!![];_0x64954[_0x29e7('0xcd')]=_0x2aa1c9[_0x29e7('0xd0')];}else if(this[_0x29e7('0x10')][_0x2aa1c9[_0x29e7('0xd3')]]){_0x64954=_[_0x29e7('0x7c')](this[_0x29e7('0x10')][_0x2aa1c9[_0x29e7('0xd3')]]);_0x64954['transferexten']=_0x2aa1c9['secondtransfererexten'];_0x64954[_0x29e7('0x9f')]=_0x2aa1c9[_0x29e7('0xd3')];_0x64954[_0x29e7('0x4f')]=_0x29e7('0xc9');_0x64954[_0x29e7('0x8f')]=!![];_0x64954[_0x29e7('0x9c')]=_0x29e7('0xd4');_0x64954[_0x29e7('0x38')]=!![];_0x64954['transferid']=_0x2aa1c9[_0x29e7('0xd6')];}}}catch(_0x57ed62){logger[_0x29e7('0x3f')](_0x29e7('0xd9'),_0x2aa1c9['uniqueid'],util[_0x29e7('0x40')](_0x57ed62,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x29e7('0xb')][_0x29e7('0x30')]=function(_0x2ddf55){try{if(this[_0x29e7('0x6b')](_0x2ddf55)){logger['debug'](_0x29e7('0xda'),_0x2ddf55['uniqueid'],util[_0x29e7('0x40')](_0x2ddf55,{'showHidden':![],'depth':null}));if(this[_0x29e7('0x10')][_0x2ddf55[_0x29e7('0xd0')]]){var _0x44f053=_[_0x29e7('0x7c')](this[_0x29e7('0x10')][_0x2ddf55['transfereeuniqueid']]);_0x44f053[_0x29e7('0x4f')]=_0x29e7('0xdb');_0x44f053[_0x29e7('0x8f')]=!![];_0x44f053[_0x29e7('0x9c')]=_0x29e7('0xdc');_0x44f053[_0x29e7('0xd1')]=_0x2ddf55[_0x29e7('0xdd')];_0x44f053['transferuniqueid']=_0x2ddf55[_0x29e7('0xd0')];logger[_0x29e7('0x6d')](_0x29e7('0xde'),_0x2ddf55['uniqueid'],_0x44f053[_0x29e7('0x50')],_0x44f053[_0x29e7('0x64')],_0x44f053[_0x29e7('0xd1')],_0x44f053['transferuniqueid']);this[_0x29e7('0x29')]({'event':_0x29e7('0xdf'),'uniqueid':_0x2ddf55[_0x29e7('0xd0')],'context':_0x2ddf55[_0x29e7('0xe0')],'channel':_0x2ddf55[_0x29e7('0xe1')]});}}}catch(_0x2c7343){logger['error']('[%s][voiceQueueReport][blindtransfer]',_0x2ddf55[_0x29e7('0x49')],util[_0x29e7('0x40')](_0x2c7343,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x29e7('0xb')][_0x29e7('0xe2')]=function(_0x485877){try{if(this[_0x29e7('0x6b')](_0x485877)){logger[_0x29e7('0x47')](_0x29e7('0xe3'),_0x485877[_0x29e7('0x49')],util[_0x29e7('0x40')](_0x485877,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x485877[_0x29e7('0x49')]]){var _0x50393e=_['last'](this[_0x29e7('0x10')][_0x485877[_0x29e7('0x49')]]);if(!_[_0x29e7('0x39')](_0x50393e[_0x29e7('0x84')])){_0x50393e[_0x29e7('0xe4')]=moment()[_0x29e7('0x4b')]('YYYY-MM-DD\x20HH:mm:ss');logger['info'](_0x29e7('0xe5'),_0x485877[_0x29e7('0x49')],_0x50393e[_0x29e7('0xe4')]);}}}}catch(_0x3915bf){logger['error']('[%s][voiceQueueReport][musiconholdstart]',_0x485877['uniqueid'],util[_0x29e7('0x40')](_0x3915bf,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x29e7('0xb')]['syncMusicOnHoldStop']=function(_0x33ca4a){try{if(this[_0x29e7('0x6b')](_0x33ca4a)){logger[_0x29e7('0x47')](_0x29e7('0xe6'),_0x33ca4a[_0x29e7('0x49')],util[_0x29e7('0x40')](_0x33ca4a,{'showHidden':![],'depth':null}));if(this[_0x29e7('0x10')][_0x33ca4a['uniqueid']]){var _0x11f9f0=_[_0x29e7('0x7c')](this[_0x29e7('0x10')][_0x33ca4a[_0x29e7('0x49')]]);if(!_['isNil'](_0x11f9f0[_0x29e7('0xe4')])){_0x11f9f0['mohtime']+=moment()['milliseconds'](0x0)['diff'](_0x11f9f0[_0x29e7('0xe4')],_0x29e7('0x9a'));logger[_0x29e7('0x6d')](_0x29e7('0xe7'),_0x33ca4a[_0x29e7('0x49')],_0x11f9f0['mohtime']);delete _0x11f9f0[_0x29e7('0xe4')];}}}}catch(_0x509291){logger['error'](_0x29e7('0xe6'),_0x33ca4a['uniqueid'],util[_0x29e7('0x40')](_0x509291,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x29e7('0xb')][_0x29e7('0xe8')]=function(_0x59f9d0){try{if(this[_0x29e7('0x6b')](_0x59f9d0)){logger['debug'](_0x29e7('0xe9'),_0x59f9d0[_0x29e7('0x49')],util[_0x29e7('0x40')](_0x59f9d0,{'showHidden':![],'depth':null}));if(_0x59f9d0[_0x29e7('0xea')]['toLowerCase']()===_0x29e7('0xeb')){_0x59f9d0[_0x29e7('0xec')]=_0x59f9d0['appdata']&&_0x59f9d0[_0x29e7('0xed')]['startsWith'](_0x29e7('0xee'))?_0x59f9d0[_0x29e7('0xed')]:(_0x59f9d0[_0x29e7('0xed')]||_0x59f9d0[_0x29e7('0xec')])[_0x29e7('0x95')]();if(_[_0x29e7('0x93')](_0x59f9d0[_0x29e7('0xec')][_0x29e7('0x95')](),_0x29e7('0xef'))){logger['info'](_0x29e7('0xf0'),_0x59f9d0['uniqueid'],_0x59f9d0[_0x29e7('0xea')],_0x59f9d0['applicationdata']);if(_['isUndefined'](this[_0x29e7('0x13')][_0x59f9d0[_0x29e7('0x49')]]))this[_0x29e7('0x13')][_0x59f9d0[_0x29e7('0x49')]]={};var _0x3fd128=_0x59f9d0['applicationdata'][_0x29e7('0xf1')]('=');var _0x2eb477=_0x3fd128[0x0]['toLowerCase']()[_0x29e7('0xf2')](/cdr\((.*)\)/);if(_0x2eb477)this[_0x29e7('0x13')][_0x59f9d0['uniqueid']][_0x2eb477[0x1]]=_0x3fd128[0x1];}}}}catch(_0x3bfa0d){logger[_0x29e7('0x3f')](_0x29e7('0xf3'),_0x59f9d0[_0x29e7('0x49')],util[_0x29e7('0x40')](_0x3bfa0d,{'showHidden':![],'depth':null}));}};module['exports']=VoiceQueueReport;
\ No newline at end of file
+var _0x8b4e=['queuecallerabandonAt','ABANDONED','lastAssignedTo','[voiceQueueReport][queuecallerabandon]\x20name:%s\x20type:%s','emitVoiceQueueChannelRemove','[%s][voiceQueueReport][queuecallerleave]','connectedlinenum','connectedlinename','[voiceQueueReport][agentconnect]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETEDBYAGENT','[%s][voiceQueueReport][agentconnect]','[%s][voiceQueueReport][agentcomplete]','membername','queuecallerexit','reason','transfer','COMPLETED','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETED','channel','toLowerCase','linkedid','add','seconds','FORWARDTRANSFER','transfertype','transferexten','destexten','transferuniqueid','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:FORWARDTRANSFER','toUpperCase','[%s][voiceQueueReport][varset]','addVariable','variable','value','CONTINUE','queuecallerexitAt','TIMEOUT','lastevent','timeout','queuecallerleaveAt','[%s][voiceQueueReport][varset]\x20sending\x20timeout\x20event:','custom:timeout','queueposition','EXITWITHKEY','[%s][voiceQueueReport][varset]\x20name:%s\x20type:%s\x20variable:%s\x20value:%s','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer','memberdynamic','memberinterface','memberlastcall','memberpenalty','includes','length','diff','COMPLETEDBYAGENT','sumDuration','total','answered','sumBillable','queuecallercompleteAt','unmanaged','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerunmanaged\x20event:','custom:queuecallerunmanaged','abandoned','custom:queuecallerabandon','[%s][voiceQueueReport][hangup]\x20sending\x20voiceQueueReport\x20event:','custom:voiceQueueReport','[%s][voiceQueueReport][hangup]','cause-txt','cause','handleHangup','transferid','[%s][voiceQueueReport][attendedtransfer]','secondtransfererexten','ATTENDED','secondtransfereruniqueid','transfereeuniqueid','[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','transfertargetuniqueid','origtransfererexten','origtransfereruniqueid','[%s][voiceQueueReport][blindtransfer]','BLINDTRANSFER','extension','BlindTransfer','context','[%s][voiceQueueReport][musiconholdstart]','mohstarttime','[%s][voiceQueueReport][musiconholdstart]\x20mohstarttime:%s','[%s][voiceQueueReport][musiconholdstop]','mohtime','milliseconds','[%s][voiceQueueReport][musiconholdstop]\x20mohtime:%s','syncNewExten','[%s][voiceQueueReport][newexten]\x20event:','application','set','applicationdata','appdata','startsWith','[%s][voiceQueueReport][newexten]\x20application:%s\x20appdata:%s','split','match','exports','lodash','moment','ioredis','../../../config/environment','../../../config/logger','ami','../model/queueReport','../model/voiceQueueSummary','redis','defaults','socket.io-emitter','prototype','enqueue','tail','queueReports','agents','channels','campaigns','summary','variables','queuesummary','bind','syncQueueSummaryComplete','queuemember','syncQueueMember','syncQueueStatusComplete','syncQueueCallerAbandon','queuecallerleave','syncQueueCallerLeave','agentcomplete','syncAgentComplete','agentconnect','syncAgentConnect','varset','syncVarSet','hangup','syncHangup','fullybooted','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','blindtransfer','syncBlindTransfer','loopQueueSummary','loopQueueShow','isEmpty','originated','hasOwnProperty','pTalking','queueStatusComplete','unlockRR','queuecallerabandon','queuecallercomplete','clearZombieChannels','switch','isNil','Action','status','message','No\x20such\x20channel','error','inspect','[FullyBooted]\x20clear\x20realtime','voiceQueues','clearQueueReport','emit','emitVoiceQueueChannelSave',']\x20sending\x20voice_queue_channel:save\x20event:','uniqueid','format','voice:queue:%s','voice_queue_channel:save','voice_queue_presence:save','debug','[%s][voiceQueueReport][',']\x20sending\x20voice_queue_channel:remove\x20event:','queuecallerexitreason','ATTENDEDTRANSFER','voice_queue_channel:remove','voice_queue_presence:remove','type','inbound','[voiceQueueReport][queuesummary]\x20sending\x20voice_queue:save\x20event:','name','voice_queue:save','isNotNull','isUndefined','queues','catch','[voiceQueueReport][queues]','then','isRunning','queuestatus','actionid','createQueueSummaryReport','summaryEvent','createReport','realtime','handleInboundQueueSummaryReport','assign','emitInboundVoiceQueueSummary','statusRequests','completeEvent','push','syncQueueSummary','queue','[voiceQueueReport][queuesummary]','[voiceQueueReport][queuesummarycomplete]\x20event:','syncQueueCallerJoin','[%s][voiceQueueReport][queuecallerjoin]','queuecallerjoinAt','YYYY-MM-DD\x20HH:mm:ss','position','count','info','pick','keys','[%s][voiceQueueReport][queuecallerabandon]','last','holdtime','originalposition'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x8b4e,0x158));var _0xe8b4=function(_0x331821,_0x2eff7c){_0x331821=_0x331821-0x0;var _0x26d374=_0x8b4e[_0x331821];return _0x26d374;};'use strict';var _=require(_0xe8b4('0x0'));var moment=require(_0xe8b4('0x1'));var util=require('util');var Redis=require(_0xe8b4('0x2'));var config=require(_0xe8b4('0x3'));var logger=require(_0xe8b4('0x4'))(_0xe8b4('0x5'));var ami=require('../ami');var QueueReport=require(_0xe8b4('0x6'));var VoiceQueueSummary=require(_0xe8b4('0x7'));config[_0xe8b4('0x8')]=_[_0xe8b4('0x9')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0xe8b4('0xa'))(new Redis(config[_0xe8b4('0x8')]));var Sequence=function(){};Sequence[_0xe8b4('0xb')][_0xe8b4('0xc')]=function(_0x5f1e3a){this[_0xe8b4('0xd')]=this[_0xe8b4('0xd')]?this[_0xe8b4('0xd')]['finally'](_0x5f1e3a):_0x5f1e3a();};function VoiceQueueReport(_0x5d8dd7){this['sequence']=new Sequence();this[_0xe8b4('0xe')]={};this['realtime']=_0x5d8dd7;this[_0xe8b4('0xf')]=_0x5d8dd7['agents'];this[_0xe8b4('0x10')]=_0x5d8dd7['queueChannels'];this['voiceQueues']=_0x5d8dd7['voiceQueues'];this['campaigns']=_0x5d8dd7[_0xe8b4('0x11')];this[_0xe8b4('0x12')]=initializeSummary();this[_0xe8b4('0x13')]={};ami['on'](_0xe8b4('0x14'),this['syncQueueSummary'][_0xe8b4('0x15')](this));ami['on']('queuesummarycomplete',this[_0xe8b4('0x16')][_0xe8b4('0x15')](this));ami['on'](_0xe8b4('0x17'),this[_0xe8b4('0x18')][_0xe8b4('0x15')](this));ami['on']('queuestatuscomplete',this[_0xe8b4('0x19')][_0xe8b4('0x15')](this));ami['on']('queuecallerjoin',this['syncQueueCallerJoin'][_0xe8b4('0x15')](this));ami['on']('queuecallerabandon',this[_0xe8b4('0x1a')]['bind'](this));ami['on'](_0xe8b4('0x1b'),this[_0xe8b4('0x1c')][_0xe8b4('0x15')](this));ami['on'](_0xe8b4('0x1d'),this[_0xe8b4('0x1e')]['bind'](this));ami['on'](_0xe8b4('0x1f'),this[_0xe8b4('0x20')][_0xe8b4('0x15')](this));ami['on'](_0xe8b4('0x21'),this[_0xe8b4('0x22')][_0xe8b4('0x15')](this));ami['on'](_0xe8b4('0x23'),this[_0xe8b4('0x24')][_0xe8b4('0x15')](this));ami['on'](_0xe8b4('0x25'),this['syncFullyBooted'][_0xe8b4('0x15')](this));ami['on'](_0xe8b4('0x26'),this[_0xe8b4('0x27')][_0xe8b4('0x15')](this));ami['on'](_0xe8b4('0x28'),this[_0xe8b4('0x29')]['bind'](this));ami['on']('attendedtransfer',this['syncAttendedTransfer'][_0xe8b4('0x15')](this));ami['on'](_0xe8b4('0x2a'),this[_0xe8b4('0x2b')][_0xe8b4('0x15')](this));this[_0xe8b4('0x2c')]();this[_0xe8b4('0x2d')]();}function clearChannels(_0x2e78cd){if(!_[_0xe8b4('0x2e')](_0x2e78cd)){for(var _0x5de5b4 in _0x2e78cd){if(_0x2e78cd['hasOwnProperty'](_0x5de5b4)){delete _0x2e78cd[_0x5de5b4];}}}}function clearCampaigns(_0x16159d){if(!_['isEmpty'](_0x16159d)){for(var _0x1fe0dc in _0x16159d){if(_0x16159d['hasOwnProperty'](_0x1fe0dc)){_0x16159d[_0x1fe0dc][_0xe8b4('0x2f')]=0x0;}}}}function clearVoiceQueues(_0x6edb4c){if(!_[_0xe8b4('0x2e')](_0x6edb4c)){for(var _0x47e308 in _0x6edb4c){if(_0x6edb4c[_0xe8b4('0x30')](_0x47e308)){_0x6edb4c[_0x47e308][_0xe8b4('0x2f')]=0x0;_0x6edb4c[_0x47e308]['talking']=0x0;_0x6edb4c[_0x47e308][_0xe8b4('0x31')]=0x0;_0x6edb4c[_0x47e308]['waiting']=0x0;_0x6edb4c[_0x47e308][_0xe8b4('0x32')]=!![];}}}}function clearAgentBooked(_0x36cdf8){if(!_[_0xe8b4('0x2e')](_0x36cdf8)){for(var _0x3345c2 in _0x36cdf8){if(_0x36cdf8[_0xe8b4('0x30')](_0x3345c2)){_0x36cdf8[_0x3345c2][_0xe8b4('0x33')]=!![];}}}}function initializeSummary(){return{'id':null,'completeEvent':null,'isRunning':![],'queues':{},'queuestatus':{},'statusRequests':0x0};}function hasCallerLeftTheQueue(_0x40edb8){return _0x40edb8['queuecallerexit']||_0x40edb8[_0xe8b4('0x34')]||_0x40edb8[_0xe8b4('0x35')];}VoiceQueueReport[_0xe8b4('0xb')][_0xe8b4('0x36')]=function(){var _0xcee291=this;for(var _0x21b410 in this['channels']){if(this['channels'][_0xe8b4('0x30')](_0x21b410)&&!this[_0xe8b4('0x10')][_0x21b410][_0xe8b4('0x37')]){this['sequence']['enqueue'](function(){if(!_[_0xe8b4('0x38')](_0xcee291[_0xe8b4('0x10')][_0x21b410])){return ami[_0xe8b4('0x39')]({'action':_0xe8b4('0x3a'),'channel':_0xcee291[_0xe8b4('0x10')][_0x21b410]['channel']})['catch'](function(_0x110d72){if(_0x110d72[_0xe8b4('0x3b')]===_0xe8b4('0x3c')){setTimeout(function(){if(_0xcee291['channels'][_0x21b410]){delete _0xcee291[_0xe8b4('0x10')][_0x21b410];logger['error']('[%s][voiceQueueReport][checkChannel]',_0x21b410,util['inspect'](_0x110d72,{'showHidden':![],'depth':null}));}if(_0xcee291['queueReports'][_0x21b410]){delete _0xcee291[_0xe8b4('0xe')][_0x21b410];logger['error']('[%s][voiceQueueReport][checkQueueReport]',_0x21b410,util['inspect'](_0x110d72,{'showHidden':![],'depth':null}));}if(_0xcee291[_0xe8b4('0x13')][_0x21b410]){delete _0xcee291[_0xe8b4('0x13')][_0x21b410];logger[_0xe8b4('0x3d')]('[%s][voiceQueueReport][checkVariables]',_0x21b410,util[_0xe8b4('0x3e')](_0x110d72,{'showHidden':![],'depth':null}));}},0x1f40);}});}});}}};VoiceQueueReport[_0xe8b4('0xb')]['syncFullyBooted']=function(){logger[_0xe8b4('0x3d')](_0xe8b4('0x3f'));clearChannels(this[_0xe8b4('0x10')]);this['clearQueueReport'](this[_0xe8b4('0xe')]);clearAgentBooked(this['agents']);clearVoiceQueues(this[_0xe8b4('0x40')]);clearCampaigns(this[_0xe8b4('0x11')]);this[_0xe8b4('0x12')]=initializeSummary();};VoiceQueueReport[_0xe8b4('0xb')][_0xe8b4('0x41')]=function(_0x489a8e){var _0x13c339=this;if(!_[_0xe8b4('0x2e')](_0x489a8e)){for(var _0x4dd698 in _0x489a8e){if(_0x489a8e[_0xe8b4('0x30')](_0x4dd698)){_0x13c339['emitVoiceQueueChannelRemove'](_0x489a8e[_0x4dd698],'clearqueuereport');delete _0x489a8e[_0x4dd698];}}}};VoiceQueueReport[_0xe8b4('0xb')][_0xe8b4('0x42')]=function(_0x4ccb8e,_0x390854,_0xe70749){io['to'](_0x4ccb8e)[_0xe8b4('0x42')](_0x390854,_0xe70749);};VoiceQueueReport['prototype'][_0xe8b4('0x43')]=function(_0x41ff38,_0x31079e){logger['debug']('[%s][voiceQueueReport]['+_0x31079e+_0xe8b4('0x44'),_0x41ff38[_0xe8b4('0x45')],util[_0xe8b4('0x3e')](_0x41ff38,{'showHidden':![],'depth':null}));this[_0xe8b4('0x42')](util[_0xe8b4('0x46')](_0xe8b4('0x47'),_0x41ff38['queue']),_0xe8b4('0x48'),_0x41ff38);io[_0xe8b4('0x42')](_0xe8b4('0x49'),_0x41ff38);};VoiceQueueReport['prototype']['emitVoiceQueueChannelRemove']=function(_0x27c42d,_0x4eda69){logger[_0xe8b4('0x4a')](_0xe8b4('0x4b')+_0x4eda69+_0xe8b4('0x4c'),_0x27c42d[_0xe8b4('0x45')],util['inspect'](_0x27c42d,{'showHidden':![],'depth':null}));if(_0x27c42d[_0xe8b4('0x4d')]===_0xe8b4('0x4e')){return;}this[_0xe8b4('0x42')](util[_0xe8b4('0x46')](_0xe8b4('0x47'),_0x27c42d['queue']),_0xe8b4('0x4f'),_0x27c42d);io[_0xe8b4('0x42')](_0xe8b4('0x50'),_0x27c42d);};VoiceQueueReport[_0xe8b4('0xb')]['emitInboundVoiceQueueSummary']=function(_0xea5fa0){if(_0xea5fa0[_0xe8b4('0x51')]===_0xe8b4('0x52')){logger[_0xe8b4('0x4a')](_0xe8b4('0x53'),util[_0xe8b4('0x3e')](_0xea5fa0,{'showHidden':![],'depth':null}));this[_0xe8b4('0x42')](util['format']('voice:queue:%s',_0xea5fa0[_0xe8b4('0x54')]),_0xe8b4('0x55'),_0xea5fa0);}};VoiceQueueReport['prototype'][_0xe8b4('0x56')]=function(_0xd37925){return _0xd37925!==null&&!_[_0xe8b4('0x57')](_0xd37925);};VoiceQueueReport[_0xe8b4('0xb')][_0xe8b4('0x2d')]=function(){var _0x4bb00d=this;setInterval(function(){_0x4bb00d['clearZombieChannels']();ami['Action']({'action':_0xe8b4('0x58')})[_0xe8b4('0x59')](function(_0x23d9e8){logger[_0xe8b4('0x3d')](_0xe8b4('0x5a'),util[_0xe8b4('0x3e')](_0x23d9e8,{'showHidden':![],'depth':null}));});},0x2710);};VoiceQueueReport[_0xe8b4('0xb')][_0xe8b4('0x2c')]=function(){var _0x190c9a=this;setInterval(function(){if(!_0x190c9a['summary']['isRunning']){return ami['Action']({'action':'queuesummary'})[_0xe8b4('0x5b')](function(_0x30ed68){_0x190c9a[_0xe8b4('0x12')]['id']=_0x30ed68['actionid'];_0x190c9a[_0xe8b4('0x12')][_0xe8b4('0x5c')]=!![];_0x190c9a['summary'][_0xe8b4('0x5d')][_0x30ed68[_0xe8b4('0x5e')]]={};})[_0xe8b4('0x59')](function(_0x58cc65){logger[_0xe8b4('0x3d')]('[voiceQueueReport][queuesummary]',util[_0xe8b4('0x3e')](_0x58cc65,{'showHidden':![],'depth':null}));});}},0x3e8);};VoiceQueueReport[_0xe8b4('0xb')][_0xe8b4('0x5f')]=function(_0x14d2e7,_0x4b1cf2){var _0x2f0db0=this[_0xe8b4('0x12')][_0xe8b4('0x58')][_0x14d2e7[_0xe8b4('0x54')]][_0xe8b4('0x60')];var _0x4c37b5=new VoiceQueueSummary(_0x14d2e7);return _0x4c37b5[_0xe8b4('0x61')](_0x4b1cf2['agents'],this['agents'],_0x2f0db0,this[_0xe8b4('0x62')][_0xe8b4('0x10')]);};VoiceQueueReport[_0xe8b4('0xb')][_0xe8b4('0x63')]=function(_0x2f7e5d,_0x353b78){var _0x46d3fe=this[_0xe8b4('0x5f')](_0x2f7e5d,_0x353b78);var _0x4f197f=![];_0x4f197f=_0x46d3fe['compareToInboundQueue'](_0x2f7e5d);if(_0x4f197f){Object[_0xe8b4('0x64')](_0x2f7e5d,_0x46d3fe);this[_0xe8b4('0x62')][_0xe8b4('0x40')][_0x2f7e5d[_0xe8b4('0x54')]]=_0x2f7e5d;this[_0xe8b4('0x65')](_0x46d3fe);}};VoiceQueueReport[_0xe8b4('0xb')][_0xe8b4('0x19')]=function(_0x394dd3){var _0x593096=null;var _0x4b6ac0=this[_0xe8b4('0x12')]['id'];if(this[_0xe8b4('0x12')][_0xe8b4('0x5d')][_0x4b6ac0]){_0x593096=this[_0xe8b4('0x12')][_0xe8b4('0x5d')][_0x4b6ac0][_0x394dd3['actionid']];}if(!_0x593096){this['summary']=initializeSummary();return;}var _0x4f9fa7=this[_0xe8b4('0x40')][_0x593096['queue']];if(_0x4f9fa7[_0xe8b4('0x51')]==='inbound'){this[_0xe8b4('0x63')](_0x4f9fa7,_0x593096);}else if(_0x4f9fa7[_0xe8b4('0x51')]==='outbound'){var _0x5b43cb=this[_0xe8b4('0x5f')](_0x4f9fa7,_0x593096);ami['emit']('custom:queuesummary',_0x5b43cb);}this[_0xe8b4('0x12')][_0xe8b4('0x66')]-=0x1;var _0x1b5ee=this[_0xe8b4('0x12')][_0xe8b4('0x66')]>0x0?!![]:![];if(!_0x1b5ee){return this[_0xe8b4('0x16')](this[_0xe8b4('0x12')][_0xe8b4('0x67')]);}};VoiceQueueReport['prototype'][_0xe8b4('0x18')]=function(_0x191e47){var _0x3c6d7b=this['summary']['id'];if(this[_0xe8b4('0x12')]['queuestatus'][_0x3c6d7b]&&this[_0xe8b4('0x12')][_0xe8b4('0x5d')][_0x3c6d7b][_0x191e47['actionid']]){this[_0xe8b4('0x12')][_0xe8b4('0x5d')][_0x3c6d7b][_0x191e47['actionid']][_0xe8b4('0xf')][_0xe8b4('0x68')](_0x191e47);}};VoiceQueueReport[_0xe8b4('0xb')][_0xe8b4('0x69')]=function(_0x4c9db7){var _0x15ac73=this;try{if(this['isNotNull'](_0x4c9db7)&&this[_0xe8b4('0x56')](_0x4c9db7[_0xe8b4('0x6a')])){logger['debug']('[voiceQueueReport][queuesummary]\x20event:',util[_0xe8b4('0x3e')](_0x4c9db7,{'showHidden':![],'depth':null}));var _0x5ed28a=this[_0xe8b4('0x40')][_0x4c9db7[_0xe8b4('0x6a')]];if(_0x5ed28a){logger[_0xe8b4('0x4a')]('[voiceQueueReport][queuesummary]\x20name:%s',_0x5ed28a[_0xe8b4('0x54')]);this['summary'][_0xe8b4('0x58')][_0x5ed28a['name']]={'summaryEvent':_0x4c9db7};this['summary'][_0xe8b4('0x66')]+=0x1;return ami[_0xe8b4('0x39')]({'action':_0xe8b4('0x5d'),'queue':_0x5ed28a[_0xe8b4('0x54')]})[_0xe8b4('0x5b')](function(_0x25600d){if(!_0x15ac73[_0xe8b4('0x12')]['queuestatus'][_0x4c9db7['actionid']]){_0x15ac73[_0xe8b4('0x12')][_0xe8b4('0x5d')][_0x4c9db7[_0xe8b4('0x5e')]]={};}_0x15ac73[_0xe8b4('0x12')][_0xe8b4('0x5d')][_0x4c9db7['actionid']][_0x25600d['actionid']]={'queue':_0x5ed28a[_0xe8b4('0x54')],'agents':[]};})[_0xe8b4('0x59')](function(_0x3c6e25){throw _0x3c6e25;});}}}catch(_0x39906f){logger['error'](_0xe8b4('0x6b'),util['inspect'](_0x39906f,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xe8b4('0xb')][_0xe8b4('0x16')]=function(_0x76f9c5){if(this[_0xe8b4('0x12')][_0xe8b4('0x66')]>0x0){this['summary'][_0xe8b4('0x67')]=_0x76f9c5;return;}logger[_0xe8b4('0x4a')](_0xe8b4('0x6c'),util[_0xe8b4('0x3e')](_0x76f9c5,{'showHidden':![],'depth':null}));this[_0xe8b4('0x12')]=initializeSummary();ami[_0xe8b4('0x42')]('custom:queuesummarycomplete',{});};VoiceQueueReport[_0xe8b4('0xb')][_0xe8b4('0x6d')]=function(_0xe64766){try{if(this['isNotNull'](_0xe64766)){logger[_0xe8b4('0x4a')](_0xe8b4('0x6e'),_0xe64766[_0xe8b4('0x45')],util['inspect'](_0xe64766,{'showHidden':![],'depth':null}));if(_[_0xe8b4('0x57')](this[_0xe8b4('0xe')][_0xe64766[_0xe8b4('0x45')]])){this[_0xe8b4('0xe')][_0xe64766[_0xe8b4('0x45')]]=[];}if(_[_0xe8b4('0x57')](this['channels'][_0xe64766[_0xe8b4('0x45')]])){this[_0xe8b4('0x10')][_0xe64766[_0xe8b4('0x45')]]={};}var _0x17c693=new QueueReport();_0x17c693['queue']=_0xe64766['queue'];_0x17c693[_0xe8b4('0x51')]=this[_0xe8b4('0x40')][_0x17c693[_0xe8b4('0x6a')]]&&this[_0xe8b4('0x40')][_0x17c693[_0xe8b4('0x6a')]][_0xe8b4('0x51')]?this[_0xe8b4('0x40')][_0x17c693[_0xe8b4('0x6a')]]['type']||'inbound':_0xe8b4('0x52');_0x17c693[_0xe8b4('0x6f')]=moment()[_0xe8b4('0x46')](_0xe8b4('0x70'));_0x17c693['position']=_0xe64766[_0xe8b4('0x71')];_0x17c693[_0xe8b4('0x72')]=_0xe64766[_0xe8b4('0x72')];_0x17c693['uniqueid']=_0xe64766[_0xe8b4('0x45')];_0x17c693['routealias']=this[_0xe8b4('0x10')][_0xe64766[_0xe8b4('0x45')]]['routealias'];logger[_0xe8b4('0x73')]('[voiceQueueReport][queuecallerjoin]\x20name:%s\x20type:%s',_0x17c693['queue'],_0x17c693[_0xe8b4('0x51')]);Object[_0xe8b4('0x64')](_0x17c693,_[_0xe8b4('0x74')](_0xe64766,_[_0xe8b4('0x75')](_0x17c693)));this[_0xe8b4('0xe')][_0xe64766[_0xe8b4('0x45')]][_0xe8b4('0x68')](_0x17c693);this['channels'][_0xe64766[_0xe8b4('0x45')]]=_0x17c693;this[_0xe8b4('0x43')](_0x17c693,'queuecallerjoin');}}catch(_0x587dfd){logger[_0xe8b4('0x3d')](_0xe8b4('0x6e'),_0xe64766[_0xe8b4('0x45')],util[_0xe8b4('0x3e')](_0x587dfd,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xe8b4('0xb')][_0xe8b4('0x1a')]=function(_0x42a46c){try{if(this[_0xe8b4('0x56')](_0x42a46c)){logger[_0xe8b4('0x4a')](_0xe8b4('0x76'),_0x42a46c['uniqueid'],util['inspect'](_0x42a46c,{'showHidden':![],'depth':null}));if(this[_0xe8b4('0xe')][_0x42a46c[_0xe8b4('0x45')]]){var _0xfe9b80=_[_0xe8b4('0x77')](this[_0xe8b4('0xe')][_0x42a46c['uniqueid']]);_0xfe9b80['queuecallercomplete']=![];_0xfe9b80['queuecallercompleteAt']=null;_0xfe9b80['holdtime']=_0x42a46c[_0xe8b4('0x78')];_0xfe9b80['originalposition']=_0x42a46c[_0xe8b4('0x79')];_0xfe9b80[_0xe8b4('0x34')]=!![];_0xfe9b80[_0xe8b4('0x7a')]=moment()[_0xe8b4('0x46')](_0xe8b4('0x70'));_0xfe9b80[_0xe8b4('0x4d')]=_0xe8b4('0x7b');_0xfe9b80[_0xe8b4('0x7c')]=null;logger['info'](_0xe8b4('0x7d'),_0xfe9b80['queue'],_0xfe9b80[_0xe8b4('0x51')]);this[_0xe8b4('0x10')][_0x42a46c[_0xe8b4('0x45')]]=_0xfe9b80;this[_0xe8b4('0x7e')](_0xfe9b80,_0xe8b4('0x34'));}}}catch(_0x48ef5d){logger[_0xe8b4('0x3d')](_0xe8b4('0x76'),_0x42a46c[_0xe8b4('0x45')],util[_0xe8b4('0x3e')](_0x48ef5d,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0xe8b4('0x1c')]=function(_0x3b8f44){try{if(this[_0xe8b4('0x56')](_0x3b8f44)){logger['debug'](_0xe8b4('0x7f'),_0x3b8f44[_0xe8b4('0x45')],util[_0xe8b4('0x3e')](_0x3b8f44,{'showHidden':![],'depth':null}));if(this[_0xe8b4('0xe')][_0x3b8f44[_0xe8b4('0x45')]]){var _0x198b60=_[_0xe8b4('0x77')](this[_0xe8b4('0xe')][_0x3b8f44[_0xe8b4('0x45')]]);_0x198b60['queuecallerleaveAt']=moment()[_0xe8b4('0x46')](_0xe8b4('0x70'));_0x198b60[_0xe8b4('0x80')]=_0x3b8f44[_0xe8b4('0x80')];_0x198b60[_0xe8b4('0x81')]=_0x3b8f44['connectedlinename'];logger[_0xe8b4('0x73')]('[voiceQueueReport][queuecallerleave]\x20name:%s\x20type:%s\x20connectedlinenum:%s\x20connectedlinename:%s',_0x198b60[_0xe8b4('0x6a')],_0x198b60[_0xe8b4('0x51')],_0x3b8f44[_0xe8b4('0x80')],_0x3b8f44[_0xe8b4('0x81')]);this['channels'][_0x3b8f44[_0xe8b4('0x45')]]=_0x198b60;this[_0xe8b4('0x43')](_0x198b60,_0xe8b4('0x1b'));}}}catch(_0x3f78d0){logger[_0xe8b4('0x3d')](_0xe8b4('0x7f'),_0x3b8f44[_0xe8b4('0x45')],util[_0xe8b4('0x3e')](_0x3f78d0,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xe8b4('0xb')]['syncAgentConnect']=function(_0x408bab){try{if(this[_0xe8b4('0x56')](_0x408bab)){logger[_0xe8b4('0x4a')]('[%s][voiceQueueReport][agentconnect]',_0x408bab['uniqueid'],util[_0xe8b4('0x3e')](_0x408bab,{'showHidden':![],'depth':null}));if(this[_0xe8b4('0xe')][_0x408bab[_0xe8b4('0x45')]]){var _0x1c369f=_[_0xe8b4('0x77')](this[_0xe8b4('0xe')][_0x408bab[_0xe8b4('0x45')]]);_0x1c369f[_0xe8b4('0x35')]=!![];_0x1c369f[_0xe8b4('0x4d')]='COMPLETEDBYAGENT';logger['info'](_0xe8b4('0x82'),_0x1c369f['queue'],_0x1c369f[_0xe8b4('0x51')]);}}}catch(_0x2f7558){logger[_0xe8b4('0x3d')](_0xe8b4('0x83'),_0x408bab['uniqueid'],util[_0xe8b4('0x3e')](_0x2f7558,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0xe8b4('0x1e')]=function(_0xd2bc2e){try{if(this['isNotNull'](_0xd2bc2e)){logger[_0xe8b4('0x4a')](_0xe8b4('0x84'),_0xd2bc2e[_0xe8b4('0x45')],util['inspect'](_0xd2bc2e,{'showHidden':![],'depth':null}));if(this[_0xe8b4('0xe')][_0xd2bc2e[_0xe8b4('0x45')]]){var _0x1d4e27=_[_0xe8b4('0x77')](this['queueReports'][_0xd2bc2e[_0xe8b4('0x45')]]);_0x1d4e27['queuecallerabandon']=![];_0x1d4e27[_0xe8b4('0x7a')]=null;_0x1d4e27['assigned']=!![];_0x1d4e27[_0xe8b4('0x7c')]=_0xd2bc2e[_0xe8b4('0x85')];_0x1d4e27[_0xe8b4('0x78')]=_0xd2bc2e[_0xe8b4('0x78')];_0x1d4e27['queuecallercomplete']=!![];_0x1d4e27[_0xe8b4('0x86')]=![];_0x1d4e27['queuecallerexitAt']=null;if(!_0x1d4e27['transfer']){if(_0xd2bc2e[_0xe8b4('0x87')]==_0xe8b4('0x88')){_0x1d4e27[_0xe8b4('0x4d')]=_0xe8b4('0x89');logger[_0xe8b4('0x73')](_0xe8b4('0x8a'),_0x1d4e27['queue'],_0x1d4e27[_0xe8b4('0x51')]);}else{if(_['startsWith'](_0xd2bc2e[_0xe8b4('0x8b')][_0xe8b4('0x8c')](),'local/')){if(this[_0xe8b4('0xe')][_0xd2bc2e['linkedid']]){var _0x4fd441=_[_0xe8b4('0x77')](this[_0xe8b4('0xe')][_0xd2bc2e[_0xe8b4('0x8d')]]);_0x4fd441[_0xe8b4('0x35')]=![];_0x4fd441[_0xe8b4('0x86')]=!![];_0x4fd441['queuecallerexitAt']=moment(_0x1d4e27[_0xe8b4('0x6f')])[_0xe8b4('0x8e')](_0xd2bc2e[_0xe8b4('0x78')],_0xe8b4('0x8f'))[_0xe8b4('0x46')](_0xe8b4('0x70'));_0x4fd441[_0xe8b4('0x4d')]=_0xe8b4('0x90');_0x4fd441[_0xe8b4('0x88')]=!![];_0x4fd441[_0xe8b4('0x91')]='FORWARD';_0x4fd441[_0xe8b4('0x92')]=_0xd2bc2e[_0xe8b4('0x93')];_0x4fd441[_0xe8b4('0x94')]=_0xd2bc2e['uniqueid'];logger[_0xe8b4('0x73')](_0xe8b4('0x95'),_0x4fd441['queue'],_0x4fd441[_0xe8b4('0x51')]);var _0x34b94e=this[_0xe8b4('0xe')][_0xd2bc2e[_0xe8b4('0x8d')]];this[_0xe8b4('0xe')][_0xd2bc2e[_0xe8b4('0x8d')]]=this['queueReports'][_0xd2bc2e[_0xe8b4('0x45')]];this[_0xe8b4('0xe')][_0xd2bc2e['uniqueid']]=_0x34b94e;}}else{_0x1d4e27[_0xe8b4('0x4d')]='COMPLETEDBY'+_0xd2bc2e[_0xe8b4('0x87')][_0xe8b4('0x96')]();logger[_0xe8b4('0x73')]('[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:%s',_0x1d4e27[_0xe8b4('0x6a')],_0x1d4e27[_0xe8b4('0x51')],_0x1d4e27[_0xe8b4('0x4d')]);}}}this[_0xe8b4('0x10')][_0xd2bc2e[_0xe8b4('0x45')]]=_0x1d4e27;}}}catch(_0x4e3862){logger[_0xe8b4('0x3d')]('[%s][voiceQueueReport][agentcomplete]',_0xd2bc2e[_0xe8b4('0x45')],util[_0xe8b4('0x3e')](_0x4e3862,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xe8b4('0xb')][_0xe8b4('0x22')]=function(_0x30b4d7){try{if(this[_0xe8b4('0x56')](_0x30b4d7)){logger['debug'](_0xe8b4('0x97'),_0x30b4d7[_0xe8b4('0x45')],util[_0xe8b4('0x3e')](_0x30b4d7,{'showHidden':![],'depth':null}));this[_0xe8b4('0x98')](_0x30b4d7['uniqueid'],_[_0xe8b4('0x75')](_0x30b4d7[_0xe8b4('0x99')])[0x0],_0x30b4d7[_0xe8b4('0x9a')]);if(this[_0xe8b4('0xe')][_0x30b4d7[_0xe8b4('0x45')]]){var _0xb5737a=_[_0xe8b4('0x77')](this['queueReports'][_0x30b4d7[_0xe8b4('0x45')]]);if(_0xb5737a){if(this['isNotNull'](_0x30b4d7[_0xe8b4('0x99')])&&this[_0xe8b4('0x56')](_0x30b4d7[_0xe8b4('0x99')][_0xe8b4('0x5d')])){switch(_0x30b4d7['value']){case _0xe8b4('0x9b'):_0xb5737a[_0xe8b4('0x86')]=![];_0xb5737a[_0xe8b4('0x9c')]=null;break;case _0xe8b4('0x9d'):_0xb5737a[_0xe8b4('0x9e')]=_0xe8b4('0x9f');_0xb5737a[_0xe8b4('0x86')]=!![];_0xb5737a[_0xe8b4('0x9c')]=moment()[_0xe8b4('0x46')](_0xe8b4('0x70'));_0xb5737a[_0xe8b4('0xa0')]=moment()['format'](_0xe8b4('0x70'));logger[_0xe8b4('0x4a')](_0xe8b4('0xa1'),_0x30b4d7[_0xe8b4('0x45')],util[_0xe8b4('0x3e')](_0xb5737a,{'showHidden':![],'depth':null}));ami[_0xe8b4('0x42')](_0xe8b4('0xa2'),_0xb5737a);break;default:_0xb5737a[_0xe8b4('0x86')]=!![];_0xb5737a[_0xe8b4('0x9c')]=moment()['format'](_0xe8b4('0x70'));_0xb5737a[_0xe8b4('0xa0')]=moment()[_0xe8b4('0x46')]('YYYY-MM-DD\x20HH:mm:ss');}_0xb5737a[_0xe8b4('0x34')]=![];_0xb5737a[_0xe8b4('0x7a')]=null;_0xb5737a[_0xe8b4('0x4d')]=_0x30b4d7[_0xe8b4('0x9a')];this[_0xe8b4('0x10')][_0x30b4d7[_0xe8b4('0x45')]]=_0xb5737a;this[_0xe8b4('0x7e')](_0xb5737a,_0xe8b4('0x21'));}else if(this['isNotNull'](_0x30b4d7[_0xe8b4('0x99')])&&this[_0xe8b4('0x56')](_0x30b4d7[_0xe8b4('0x99')][_0xe8b4('0xa3')])){if(!_0xb5737a[_0xe8b4('0x34')]){_0xb5737a[_0xe8b4('0x86')]=!![];_0xb5737a[_0xe8b4('0x9c')]=moment()[_0xe8b4('0x46')](_0xe8b4('0x70'));_0xb5737a[_0xe8b4('0x4d')]=_0xe8b4('0xa4');_0xb5737a[_0xe8b4('0xa0')]=moment()[_0xe8b4('0x46')](_0xe8b4('0x70'));this[_0xe8b4('0x10')][_0x30b4d7[_0xe8b4('0x45')]]=_0xb5737a;}}logger[_0xe8b4('0x73')](_0xe8b4('0xa5'),_0x30b4d7[_0xe8b4('0x45')],_0xb5737a[_0xe8b4('0x6a')],_0xb5737a[_0xe8b4('0x51')],_['keys'](_0x30b4d7[_0xe8b4('0x99')])[0x0],_0x30b4d7[_0xe8b4('0x9a')]);_0xb5737a[_0xe8b4('0x13')]=this[_0xe8b4('0x13')][_0x30b4d7['uniqueid']];}}}}catch(_0x2b7b99){logger[_0xe8b4('0x3d')](_0xe8b4('0x97'),_0x30b4d7[_0xe8b4('0x45')],util[_0xe8b4('0x3e')](_0x2b7b99,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xe8b4('0xb')][_0xe8b4('0x98')]=function(_0x51e59d,_0x114d12,_0x1f8c14){var _0x28844a=[_0xe8b4('0xa6'),_0xe8b4('0xa7'),_0xe8b4('0xa8'),_0xe8b4('0xa9'),'rtpaudioqosloss',_0xe8b4('0xaa'),_0xe8b4('0xab'),_0xe8b4('0xac'),_0xe8b4('0xad'),_0xe8b4('0xae'),_0xe8b4('0xaf'),'bridgepvtcallid','membercalls',_0xe8b4('0xb0'),_0xe8b4('0xb1'),_0xe8b4('0xb2'),'membername',_0xe8b4('0xb3'),'memberrealtime'];if(!_['isNil'](_0x114d12)&&!_[_0xe8b4('0xb4')](_0x28844a,_0x114d12)){if(_['isUndefined'](this[_0xe8b4('0x13')][_0x51e59d])){this[_0xe8b4('0x13')][_0x51e59d]={};}this[_0xe8b4('0x13')][_0x51e59d][_0x114d12]=_0x1f8c14;}};VoiceQueueReport[_0xe8b4('0xb')]['handleHangup']=function(_0x21a4f6,_0x11fa2e,_0x552a9b){var _0x1970a6={};for(var _0x27d4da=0x0;_0x27d4da<this['queueReports'][_0x21a4f6][_0xe8b4('0xb5')];_0x27d4da+=0x1){_0x1970a6=this[_0xe8b4('0xe')][_0x21a4f6][_0x27d4da];var _0x3bce1d=this[_0xe8b4('0x40')][_0x1970a6['queue']];if(_0x3bce1d){_0x3bce1d['sumHoldTime']+=moment(_0x1970a6[_0xe8b4('0xa0')])[_0xe8b4('0xb6')](_0x1970a6['queuecallerjoinAt'],_0xe8b4('0x8f'))||0x0;if(_0x552a9b&&_0x1970a6['queuecallerexitreason']===_0xe8b4('0x4e')){_0x1970a6['queuecallerexitreason']=_0xe8b4('0xb7');}if(_0x27d4da===this[_0xe8b4('0xe')][_0x21a4f6][_0xe8b4('0xb5')]-0x1){_0x3bce1d[_0xe8b4('0xb8')]+=moment()['milliseconds'](0x0)['diff'](_0x1970a6[_0xe8b4('0x6f')],_0xe8b4('0x8f'));if(hasCallerLeftTheQueue(_0x1970a6)&&_0x1970a6[_0xe8b4('0x4d')]!==_0xe8b4('0x4e')){_0x3bce1d[_0xe8b4('0xb9')]+=0x1;}if(_0x1970a6[_0xe8b4('0x35')]){_0x3bce1d[_0xe8b4('0xba')]+=0x1;_0x3bce1d[_0xe8b4('0xbb')]+=moment()['milliseconds'](0x0)[_0xe8b4('0xb6')](_0x1970a6['queuecallerleaveAt'],_0xe8b4('0x8f'));_0x1970a6[_0xe8b4('0xbc')]=moment()[_0xe8b4('0x46')](_0xe8b4('0x70'));_0x1970a6[_0xe8b4('0x86')]=![];_0x1970a6['queuecallerexitAt']=null;}if(_0x1970a6['queuecallerexit']&&_0x1970a6[_0xe8b4('0x88')]!=!![]){_0x3bce1d['unmanaged']+=0x1;_0x1970a6[_0xe8b4('0x9e')]=_0xe8b4('0xbd');logger[_0xe8b4('0x4a')](_0xe8b4('0xbe'),_0x21a4f6,util['inspect'](_0x1970a6,{'showHidden':![],'depth':null}));ami[_0xe8b4('0x42')](_0xe8b4('0xbf'),_0x1970a6);}if(_0x1970a6['queuecallerabandon']){_0x3bce1d[_0xe8b4('0xc0')]+=0x1;_0x1970a6['lastevent']=_0xe8b4('0xc0');logger[_0xe8b4('0x4a')]('[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerabandon\x20event:',_0x21a4f6,util[_0xe8b4('0x3e')](_0x1970a6,{'showHidden':![],'depth':null}));ami['emit'](_0xe8b4('0xc1'),_0x1970a6);}}else{_0x3bce1d['sumDuration']+=_0x3bce1d['sumHoldTime'];}logger[_0xe8b4('0x73')]('[%s][voiceQueueReport][hangup]\x20name:%s\x20type:%s\x20reason:%s',_0x21a4f6,_0x1970a6['queue'],_0x1970a6['type'],_0x11fa2e);this['channels'][_0x21a4f6]=_0x1970a6;Object['assign'](this[_0xe8b4('0x40')][_0x1970a6[_0xe8b4('0x6a')]],_0x3bce1d);if(_0x1970a6[_0xe8b4('0xa0')]){this['emitVoiceQueueChannelRemove'](_0x1970a6,_0xe8b4('0x23'));}}}logger[_0xe8b4('0x4a')](_0xe8b4('0xc2'),_0x21a4f6,util[_0xe8b4('0x3e')](this[_0xe8b4('0xe')][_0x21a4f6],{'showHidden':![],'depth':null}));if(hasCallerLeftTheQueue(_0x1970a6)&&_0x1970a6[_0xe8b4('0x4d')]!=='ATTENDEDTRANSFER'){ami[_0xe8b4('0x42')](_0xe8b4('0xc3'),this['queueReports'][_0x21a4f6]);delete this['queueReports'][_0x21a4f6];delete this[_0xe8b4('0x10')][_0x21a4f6];if(this[_0xe8b4('0x13')][_0x21a4f6]){delete this[_0xe8b4('0x13')][_0x21a4f6];}}};VoiceQueueReport['prototype'][_0xe8b4('0x24')]=function(_0x623fe5){try{if(this[_0xe8b4('0x56')](_0x623fe5)){logger['debug'](_0xe8b4('0xc4'),_0x623fe5[_0xe8b4('0x45')],util[_0xe8b4('0x3e')](_0x623fe5,{'showHidden':![],'depth':null}));if(this[_0xe8b4('0xe')][_0x623fe5[_0xe8b4('0x45')]]){return this['handleHangup'](_0x623fe5['uniqueid'],_0x623fe5[_0xe8b4('0xc5')],![]);}if(this[_0xe8b4('0xe')][_0x623fe5[_0xe8b4('0x8d')]]){if(_0x623fe5[_0xe8b4('0xc6')]==='21'){return;}return this[_0xe8b4('0xc7')](_0x623fe5[_0xe8b4('0x8d')],_0x623fe5[_0xe8b4('0xc5')],!![]);}var _0x47584d=Object[_0xe8b4('0x75')](this[_0xe8b4('0xe')]);for(var _0x264ad5=0x0;_0x264ad5<_0x47584d['length'];_0x264ad5++){var _0x1c4a7f=_[_0xe8b4('0x77')](this[_0xe8b4('0xe')][_0x47584d[_0x264ad5]]);if(_0x1c4a7f&&_0x1c4a7f[_0xe8b4('0xc8')]===_0x623fe5[_0xe8b4('0x45')]){return this[_0xe8b4('0xc7')](_0x1c4a7f['uniqueid'],_0x623fe5[_0xe8b4('0xc5')],!![]);}}}}catch(_0x3a6488){logger['error']('[%s][voiceQueueReport][hangup]',_0x623fe5[_0xe8b4('0x45')],util['inspect'](_0x3a6488,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xe8b4('0xb')]['syncAttendedTransfer']=function(_0x1dc1e0){try{if(this['isNotNull'](_0x1dc1e0)){logger[_0xe8b4('0x4a')](_0xe8b4('0xc9'),_0x1dc1e0[_0xe8b4('0x45')],util[_0xe8b4('0x3e')](_0x1dc1e0,{'showHidden':![],'depth':null}));var _0x22332e;var _0x4d6a74;var _0x284a95;if(this['queueReports'][_0x1dc1e0['transfereeuniqueid']]){_0x22332e=_[_0xe8b4('0x77')](this[_0xe8b4('0xe')][_0x1dc1e0['transfereeuniqueid']]);_0x22332e[_0xe8b4('0x92')]=_0x1dc1e0[_0xe8b4('0xca')];_0x22332e[_0xe8b4('0x94')]=_0x1dc1e0['secondtransfereruniqueid'];_0x22332e['queuecallerexitreason']=_0xe8b4('0x4e');_0x22332e['transfer']=!![];_0x22332e['transfertype']=_0xe8b4('0xcb');if(this[_0xe8b4('0xe')][_0x1dc1e0[_0xe8b4('0xcc')]]){_0x284a95=this[_0xe8b4('0xe')][_0x1dc1e0['secondtransfereruniqueid']];this['queueReports'][_0x1dc1e0[_0xe8b4('0xcc')]]=this[_0xe8b4('0xe')][_0x1dc1e0[_0xe8b4('0xcd')]];this['queueReports'][_0x1dc1e0[_0xe8b4('0xcd')]]=_0x284a95;_0x4d6a74=_['last'](this[_0xe8b4('0xe')][_0x1dc1e0[_0xe8b4('0xcd')]]);_0x4d6a74[_0xe8b4('0x37')]=!![];}logger[_0xe8b4('0x73')](_0xe8b4('0xce'),_0x1dc1e0['uniqueid'],_0x22332e['queue'],_0x22332e[_0xe8b4('0x51')],_0x22332e[_0xe8b4('0x92')],_0x22332e[_0xe8b4('0x94')]);}else if(this[_0xe8b4('0xe')][_0x1dc1e0[_0xe8b4('0xcf')]]){_0x22332e=_[_0xe8b4('0x77')](this['queueReports'][_0x1dc1e0[_0xe8b4('0xcf')]]);_0x22332e[_0xe8b4('0x92')]=_0x1dc1e0[_0xe8b4('0xd0')];_0x22332e[_0xe8b4('0x94')]=_0x1dc1e0['origtransfereruniqueid'];_0x22332e['queuecallerexitreason']=_0xe8b4('0x4e');_0x22332e[_0xe8b4('0x88')]=!![];_0x22332e['transfertype']=_0xe8b4('0xcb');if(this[_0xe8b4('0xe')][_0x1dc1e0['origtransfereruniqueid']]){_0x284a95=this[_0xe8b4('0xe')][_0x1dc1e0['origtransfereruniqueid']];this[_0xe8b4('0xe')][_0x1dc1e0[_0xe8b4('0xd1')]]=this['queueReports'][_0x1dc1e0[_0xe8b4('0xcf')]];this['queueReports'][_0x1dc1e0[_0xe8b4('0xcf')]]=_0x284a95;_0x4d6a74=_['last'](this['queueReports'][_0x1dc1e0[_0xe8b4('0xcf')]]);_0x4d6a74[_0xe8b4('0x37')]=!![];}logger[_0xe8b4('0x73')]('[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s',_0x1dc1e0['uniqueid'],_0x22332e[_0xe8b4('0x6a')],_0x22332e[_0xe8b4('0x51')],_0x22332e[_0xe8b4('0x92')],_0x22332e['transferuniqueid']);}else if(this[_0xe8b4('0xe')][_0x1dc1e0[_0xe8b4('0xd1')]]){_0x22332e=_[_0xe8b4('0x77')](this[_0xe8b4('0xe')][_0x1dc1e0[_0xe8b4('0xd1')]]);_0x22332e[_0xe8b4('0x92')]=_0x1dc1e0[_0xe8b4('0xd0')];_0x22332e[_0xe8b4('0x94')]=_0x1dc1e0[_0xe8b4('0xd1')];_0x22332e[_0xe8b4('0x4d')]='ATTENDEDTRANSFER';_0x22332e[_0xe8b4('0x88')]=!![];_0x22332e[_0xe8b4('0x91')]=_0xe8b4('0xcb');_0x22332e['switch']=!![];_0x22332e[_0xe8b4('0xc8')]=_0x1dc1e0[_0xe8b4('0xcd')];}else if(this['queueReports'][_0x1dc1e0[_0xe8b4('0xcc')]]){_0x22332e=_[_0xe8b4('0x77')](this[_0xe8b4('0xe')][_0x1dc1e0[_0xe8b4('0xcc')]]);_0x22332e[_0xe8b4('0x92')]=_0x1dc1e0[_0xe8b4('0xca')];_0x22332e[_0xe8b4('0x94')]=_0x1dc1e0[_0xe8b4('0xcc')];_0x22332e[_0xe8b4('0x4d')]=_0xe8b4('0x4e');_0x22332e[_0xe8b4('0x88')]=!![];_0x22332e['transfertype']=_0xe8b4('0xcb');_0x22332e[_0xe8b4('0x37')]=!![];_0x22332e[_0xe8b4('0xc8')]=_0x1dc1e0['transfertargetuniqueid'];}}}catch(_0x56d901){logger['error']('[%s][voiceQueueReport][attendedtransfer]',_0x1dc1e0[_0xe8b4('0x45')],util[_0xe8b4('0x3e')](_0x56d901,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xe8b4('0xb')]['syncBlindTransfer']=function(_0x123c51){try{if(this[_0xe8b4('0x56')](_0x123c51)){logger[_0xe8b4('0x4a')](_0xe8b4('0xd2'),_0x123c51['uniqueid'],util[_0xe8b4('0x3e')](_0x123c51,{'showHidden':![],'depth':null}));if(this[_0xe8b4('0xe')][_0x123c51[_0xe8b4('0xcd')]]){var _0x355ac8=_[_0xe8b4('0x77')](this[_0xe8b4('0xe')][_0x123c51[_0xe8b4('0xcd')]]);_0x355ac8['queuecallerexitreason']=_0xe8b4('0xd3');_0x355ac8['transfer']=!![];_0x355ac8[_0xe8b4('0x91')]='BLIND';_0x355ac8['transferexten']=_0x123c51[_0xe8b4('0xd4')];_0x355ac8['transferuniqueid']=_0x123c51[_0xe8b4('0xcd')];logger[_0xe8b4('0x73')]('[%s][voiceQueueReport][blindTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s',_0x123c51[_0xe8b4('0x45')],_0x355ac8['queue'],_0x355ac8[_0xe8b4('0x51')],_0x355ac8[_0xe8b4('0x92')],_0x355ac8[_0xe8b4('0x94')]);this[_0xe8b4('0x24')]({'event':_0xe8b4('0xd5'),'uniqueid':_0x123c51[_0xe8b4('0xcd')],'context':_0x123c51[_0xe8b4('0xd6')],'channel':_0x123c51['transfererchannel']});}}}catch(_0x15ac5d){logger[_0xe8b4('0x3d')](_0xe8b4('0xd2'),_0x123c51[_0xe8b4('0x45')],util[_0xe8b4('0x3e')](_0x15ac5d,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xe8b4('0xb')]['syncMusicOnHoldStart']=function(_0x524a46){try{if(this[_0xe8b4('0x56')](_0x524a46)){logger[_0xe8b4('0x4a')](_0xe8b4('0xd7'),_0x524a46[_0xe8b4('0x45')],util['inspect'](_0x524a46,{'showHidden':![],'depth':null}));if(this[_0xe8b4('0xe')][_0x524a46[_0xe8b4('0x45')]]){var _0x1d6f98=_[_0xe8b4('0x77')](this[_0xe8b4('0xe')][_0x524a46[_0xe8b4('0x45')]]);if(!_[_0xe8b4('0x38')](_0x1d6f98[_0xe8b4('0xa0')])){_0x1d6f98[_0xe8b4('0xd8')]=moment()['format'](_0xe8b4('0x70'));logger[_0xe8b4('0x73')](_0xe8b4('0xd9'),_0x524a46[_0xe8b4('0x45')],_0x1d6f98[_0xe8b4('0xd8')]);}}}}catch(_0x4fb6bf){logger[_0xe8b4('0x3d')](_0xe8b4('0xd7'),_0x524a46[_0xe8b4('0x45')],util[_0xe8b4('0x3e')](_0x4fb6bf,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xe8b4('0xb')][_0xe8b4('0x29')]=function(_0x2d6d6b){try{if(this[_0xe8b4('0x56')](_0x2d6d6b)){logger[_0xe8b4('0x4a')](_0xe8b4('0xda'),_0x2d6d6b[_0xe8b4('0x45')],util[_0xe8b4('0x3e')](_0x2d6d6b,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x2d6d6b[_0xe8b4('0x45')]]){var _0x241e83=_[_0xe8b4('0x77')](this[_0xe8b4('0xe')][_0x2d6d6b[_0xe8b4('0x45')]]);if(!_[_0xe8b4('0x38')](_0x241e83[_0xe8b4('0xd8')])){_0x241e83[_0xe8b4('0xdb')]+=moment()[_0xe8b4('0xdc')](0x0)['diff'](_0x241e83[_0xe8b4('0xd8')],_0xe8b4('0x8f'));logger[_0xe8b4('0x73')](_0xe8b4('0xdd'),_0x2d6d6b['uniqueid'],_0x241e83[_0xe8b4('0xdb')]);delete _0x241e83[_0xe8b4('0xd8')];}}}}catch(_0x5bf754){logger[_0xe8b4('0x3d')]('[%s][voiceQueueReport][musiconholdstop]',_0x2d6d6b[_0xe8b4('0x45')],util[_0xe8b4('0x3e')](_0x5bf754,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xe8b4('0xb')][_0xe8b4('0xde')]=function(_0xc812d6){try{if(this['isNotNull'](_0xc812d6)){logger[_0xe8b4('0x4a')](_0xe8b4('0xdf'),_0xc812d6['uniqueid'],util['inspect'](_0xc812d6,{'showHidden':![],'depth':null}));if(_0xc812d6[_0xe8b4('0xe0')]['toLowerCase']()===_0xe8b4('0xe1')){_0xc812d6[_0xe8b4('0xe2')]=_0xc812d6[_0xe8b4('0xe3')]&&_0xc812d6[_0xe8b4('0xe3')][_0xe8b4('0xe4')]('CDR(routeAlias)')?_0xc812d6['appdata']:(_0xc812d6[_0xe8b4('0xe3')]||_0xc812d6['applicationdata'])[_0xe8b4('0x8c')]();if(_[_0xe8b4('0xe4')](_0xc812d6[_0xe8b4('0xe2')][_0xe8b4('0x8c')](),'cdr(')){logger['info'](_0xe8b4('0xe5'),_0xc812d6['uniqueid'],_0xc812d6[_0xe8b4('0xe0')],_0xc812d6['applicationdata']);if(_[_0xe8b4('0x57')](this[_0xe8b4('0x10')][_0xc812d6['uniqueid']]))this[_0xe8b4('0x10')][_0xc812d6['uniqueid']]={};var _0x311324=_0xc812d6['applicationdata'][_0xe8b4('0xe6')]('=');var _0x1af64e=_0x311324[0x0][_0xe8b4('0x8c')]()[_0xe8b4('0xe7')](/cdr\((.*)\)/);if(_0x1af64e)this['channels'][_0xc812d6['uniqueid']][_0x1af64e[0x1]]=_0x311324[0x1];}}}}catch(_0x17d893){logger['error']('[%s][voiceQueueReport][newexten]',_0xc812d6[_0xe8b4('0x45')],util['inspect'](_0x17d893,{'showHidden':![],'depth':null}));}};module[_0xe8b4('0xe8')]=VoiceQueueReport;
\ No newline at end of file
index b676109..1baf623 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a3b=['queue','Request','CreateReportAgentPreview','../client','createHistory','campaign'];(function(_0x12c1c7,_0x441f14){var _0x4cf7be=function(_0x255b7b){while(--_0x255b7b){_0x12c1c7['push'](_0x12c1c7['shift']());}};_0x4cf7be(++_0x441f14);}(_0x6a3b,0xcf));var _0xb6a3=function(_0x1786c9,_0x45d30f){_0x1786c9=_0x1786c9-0x0;var _0x382c62=_0x6a3b[_0x1786c9];return _0x382c62;};'use strict';var client=require(_0xb6a3('0x0'));exports[_0xb6a3('0x1')]=function(_0x42e7cd){return function(){_0x42e7cd[_0xb6a3('0x2')]=_0x42e7cd[_0xb6a3('0x3')];return client[_0xb6a3('0x4')](_0xb6a3('0x5'),{'body':_0x42e7cd,'log':_0xb6a3('0x5')});};};
\ No newline at end of file
+var _0xe617=['Request','CreateReportAgentPreview','../client','createHistory','campaign','queue'];(function(_0x5e8403,_0x9c8d06){var _0x5498c1=function(_0x54db82){while(--_0x54db82){_0x5e8403['push'](_0x5e8403['shift']());}};_0x5498c1(++_0x9c8d06);}(_0xe617,0x176));var _0x7e61=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xe617[_0x122ef9];return _0x42fba0;};'use strict';var client=require(_0x7e61('0x0'));exports[_0x7e61('0x1')]=function(_0x5708b5){return function(){_0x5708b5[_0x7e61('0x2')]=_0x5708b5[_0x7e61('0x3')];return client[_0x7e61('0x4')](_0x7e61('0x5'),{'body':_0x5708b5,'log':_0x7e61('0x5')});};};
\ No newline at end of file
index 6013c85..4f141c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x20d8=['CreateAttachment','../client','create'];(function(_0x77460a,_0x50d25c){var _0x1a937a=function(_0x226492){while(--_0x226492){_0x77460a['push'](_0x77460a['shift']());}};_0x1a937a(++_0x50d25c);}(_0x20d8,0xee));var _0x820d=function(_0x23448d,_0x1c34bf){_0x23448d=_0x23448d-0x0;var _0xdc2d4d=_0x20d8[_0x23448d];return _0xdc2d4d;};'use strict';var client=require(_0x820d('0x0'));exports[_0x820d('0x1')]=function(_0x1e383b){return client['Request']('CreateAttachment',{'body':_0x1e383b,'log':_0x820d('0x2')});};
\ No newline at end of file
+var _0xa72e=['../client','create','Request','CreateAttachment'];(function(_0x3d4afa,_0x235552){var _0x4b29b6=function(_0x4f0661){while(--_0x4f0661){_0x3d4afa['push'](_0x3d4afa['shift']());}};_0x4b29b6(++_0x235552);}(_0xa72e,0x150));var _0xea72=function(_0x1ed0b8,_0x2813ff){_0x1ed0b8=_0x1ed0b8-0x0;var _0x1cbd3e=_0xa72e[_0x1ed0b8];return _0x1cbd3e;};'use strict';var client=require(_0xea72('0x0'));exports[_0xea72('0x1')]=function(_0x172122){return client[_0xea72('0x2')](_0xea72('0x3'),{'body':_0x172122,'log':_0xea72('0x3')});};
\ No newline at end of file
index bf617c6..0994505 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x41b8fa,_0x5b9877){var _0x5ba5aa=function(_0x17236d){while(--_0x17236d){_0x41b8fa['push'](_0x41b8fa['shift']());}};_0x5ba5aa(++_0x5b9877);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x4b055c,_0x4b870b){_0x4b055c=_0x4b055c-0x0;var _0x4b62bb=_0xc4aa[_0x4b055c];return _0x4b62bb;};'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
+var _0x1261=['Interval','interval','SquareProject','getCampaign','getCampaigns','Request','GetCampaign','name','type','active','limitCalls','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialAgentRejectMaxRetry','dialGlobalInterval','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','dialRandomLastDigitCallerIdNumber','dialCutDigit','Trunk','TrunkBackup','callerid'];(function(_0x1887ae,_0x5369cc){var _0x1d120a=function(_0x446547){while(--_0x446547){_0x1887ae['push'](_0x1887ae['shift']());}};_0x1d120a(++_0x5369cc);}(_0x1261,0x144));var _0x1126=function(_0x6aaa69,_0x4457b5){_0x6aaa69=_0x6aaa69-0x0;var _0x25359f=_0x1261[_0x6aaa69];return _0x25359f;};'use strict';var client=require('../client');exports[_0x1126('0x0')]=function(){return function(){return client[_0x1126('0x1')](_0x1126('0x2'),{'options':{'raw':![],'attributes':['id',_0x1126('0x3'),_0x1126('0x4'),_0x1126('0x5'),_0x1126('0x6'),_0x1126('0x7'),_0x1126('0x8'),_0x1126('0x9'),'dialCongestionMaxRetry','dialCongestionRetryFrequency',_0x1126('0xa'),_0x1126('0xb'),'dialNoAnswerMaxRetry',_0x1126('0xc'),_0x1126('0xd'),_0x1126('0xe'),_0x1126('0xf'),_0x1126('0x10'),'dialDropRetryFrequency',_0x1126('0x11'),_0x1126('0x12'),_0x1126('0x13'),'dialMachineRetryFrequency',_0x1126('0x14'),'dialAgentRejectRetryFrequency','dialTimezone',_0x1126('0x15'),'dialAMDActive',_0x1126('0x16'),_0x1126('0x17'),_0x1126('0x18'),_0x1126('0x19'),_0x1126('0x1a'),_0x1126('0x1b'),_0x1126('0x1c'),_0x1126('0x1d'),_0x1126('0x1e'),'dialOrderByScheduledAt','dialPrefix',_0x1126('0x1f'),_0x1126('0x20')],'include':[{'model':_0x1126('0x21'),'as':'Trunk','attributes':['id',_0x1126('0x3'),'callerid',_0x1126('0x5')]},{'model':_0x1126('0x21'),'as':_0x1126('0x22'),'attributes':['id','name',_0x1126('0x23'),_0x1126('0x5')]},{'model':'Interval','as':'Interval','attributes':['id',_0x1126('0x3')],'include':[{'model':_0x1126('0x24'),'as':'Intervals','attributes':['id','name',_0x1126('0x25')]}]},{'model':'SquareProject','as':_0x1126('0x26'),'attributes':['id',_0x1126('0x3')]}]},'log':_0x1126('0x27')});};};
\ No newline at end of file
index 87d7963..ef993c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6dca=['CreateCmContact','getContacts','GetCmContact','createContact','Request'];(function(_0x178e48,_0x3c9509){var _0x440d7e=function(_0xc2f8a0){while(--_0xc2f8a0){_0x178e48['push'](_0x178e48['shift']());}};_0x440d7e(++_0x3c9509);}(_0x6dca,0xd5));var _0xa6dc=function(_0x1d6623,_0x3a0645){_0x1d6623=_0x1d6623-0x0;var _0x348e94=_0x6dca[_0x1d6623];return _0x348e94;};'use strict';var client=require('../client');exports[_0xa6dc('0x0')]=function(_0x36cec5){return function(){return client[_0xa6dc('0x1')](_0xa6dc('0x2'),{'body':_0x36cec5,'log':'CreateCmContact'});};};exports[_0xa6dc('0x3')]=function(_0x3d40af){return function(){return client[_0xa6dc('0x1')](_0xa6dc('0x4'),{'options':_0x3d40af,'log':'GetCmContact'});};};
\ No newline at end of file
+var _0x2a52=['Request','CreateCmContact','getContacts','GetCmContact','../client','createContact'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x2a52,0x6a));var _0x22a5=function(_0x18ddd7,_0x5be54e){_0x18ddd7=_0x18ddd7-0x0;var _0x20c9ff=_0x2a52[_0x18ddd7];return _0x20c9ff;};'use strict';var client=require(_0x22a5('0x0'));exports[_0x22a5('0x1')]=function(_0x54420d){return function(){return client[_0x22a5('0x2')](_0x22a5('0x3'),{'body':_0x54420d,'log':_0x22a5('0x3')});};};exports[_0x22a5('0x4')]=function(_0x215d3e){return function(){return client[_0x22a5('0x2')](_0x22a5('0x5'),{'options':_0x215d3e,'log':_0x22a5('0x5')});};};
\ No newline at end of file
index 9eeed7a..6c9afbc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c49=['CmHopperHandlePreviewRecallNotifications','../client','moment','GetCmHopper','CmContact','updateContacts','Request','UpdateCmHopper','format','YYYY-MM-DD\x20HH:mm:ss','rescheduleContact','ContactId','ListId','destroyContact','getContactDialer','GetContactDialer','priority','DESC','ASC','getContactDialerIvr','Contact','scheduledat','moveContactManagedDialer','VoiceQueueId','CampaignId','MoveContactManagedDialer','countReScheduled','CountReScheduled','getContactPreview','User','name','Queue','getCmHopper','unlockContact','getContactRecallMe','Agent','voicePause','db.CmHopper.UserId','ResetActiveCalls','handlePreviewRecallNotifications'];(function(_0x39ce5a,_0x260622){var _0x46cd9a=function(_0x39fcba){while(--_0x39fcba){_0x39ce5a['push'](_0x39ce5a['shift']());}};_0x46cd9a(++_0x260622);}(_0x7c49,0x141));var _0x97c4=function(_0x38def6,_0x34eb6d){_0x38def6=_0x38def6-0x0;var _0x47019f=_0x7c49[_0x38def6];return _0x47019f;};'use strict';var client=require(_0x97c4('0x0'));var moment=require(_0x97c4('0x1'));exports['getContacts']=function(_0x4e27ed,_0x3205fc){return function(){return client['Request'](_0x97c4('0x2'),{'options':{'where':{'VoiceQueueId':_0x4e27ed},'include':[{'model':_0x97c4('0x3'),'as':'Contact'}],'limit':_0x3205fc,'raw':![]},'log':'getCmHopper'});};};exports[_0x97c4('0x4')]=function(_0x105586,_0x2f02ec,_0x538c14){return function(){return client[_0x97c4('0x5')](_0x97c4('0x6'),{'body':_0x105586,'options':{'where':{'VoiceQueueId':_0x2f02ec,'scheduledat':{'$lte':moment()[_0x97c4('0x7')](_0x97c4('0x8'))}},'limit':_0x538c14},'log':_0x97c4('0x6')});};};exports[_0x97c4('0x9')]=function(_0x30bdaf){return client[_0x97c4('0x5')](_0x97c4('0x6'),{'body':_0x30bdaf,'options':{'where':{'ContactId':_0x30bdaf[_0x97c4('0xa')],'ListId':_0x30bdaf[_0x97c4('0xb')],'VoiceQueueId':_0x30bdaf['VoiceQueueId'],'CampaignId':_0x30bdaf['CampaignId']}},'log':_0x97c4('0x9')});};exports[_0x97c4('0xc')]=function(_0x5f477c,_0x124868,_0x4984b7){return function(){return client[_0x97c4('0x5')]('DestroyCmHopper',{'options':{'where':{'VoiceQueueId':_0x5f477c,'ListId':_0x124868,'ContactId':_0x4984b7}},'log':'DestroyCmHopper'});};};exports[_0x97c4('0xd')]=function(_0x345223,_0x4ebf86,_0x3f073e,_0x519188){return client[_0x97c4('0x5')](_0x97c4('0xe'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x345223,'active':![],'scheduledat':{'$lte':moment()[_0x97c4('0x7')](_0x97c4('0x8'))},'$or':[{'UserId':null},{'UserId':{'$in':_0x4ebf86}}]},'order':[[_0x97c4('0xf'),_0x97c4('0x10')],['scheduledat',_0x519188],['id',_0x97c4('0x11')]],'raw':!![],'limit':_0x3f073e},'log':'GetContactDialer'});};exports[_0x97c4('0x12')]=function(_0x465c79,_0x202739,_0x1f178b){return client[_0x97c4('0x5')](_0x97c4('0xe'),{'body':{'active':!![]},'options':{'where':{'CampaignId':_0x465c79,'active':![],'scheduledat':{'$lte':moment()[_0x97c4('0x7')](_0x97c4('0x8'))}},'include':[{'model':_0x97c4('0x3'),'as':_0x97c4('0x13')}],'order':[['priority',_0x97c4('0x10')],[_0x97c4('0x14'),_0x1f178b],['id',_0x97c4('0x11')]],'raw':!![],'limit':_0x202739},'log':'GetContactDialerIvr'});};exports[_0x97c4('0x15')]=function(_0x222ba2,_0x288284){_0x222ba2['campaign']=_0x222ba2['queue'];return client['Request']('MoveContactManagedDialer',{'body':_0x222ba2,'options':{'where':{'ContactId':_0x222ba2[_0x97c4('0xa')],'ListId':_0x222ba2[_0x97c4('0xb')],'VoiceQueueId':_0x222ba2[_0x97c4('0x16')],'CampaignId':_0x222ba2[_0x97c4('0x17')],'active':_0x288284?undefined:!![]}},'log':_0x97c4('0x18')});};exports[_0x97c4('0x19')]=function(_0x2ca647){return client[_0x97c4('0x5')](_0x97c4('0x1a'),{'options':{'where':{'VoiceQueueId':_0x2ca647['id']?_0x2ca647['id']||null:null}},'log':_0x97c4('0x19')});};exports[_0x97c4('0x1b')]=function(_0x16ddef){return function(){return client[_0x97c4('0x5')]('GetCmHopperPreview',{'options':{'where':{'id':_0x16ddef},'include':[{'model':_0x97c4('0x3'),'as':_0x97c4('0x13')},{'model':_0x97c4('0x1c'),'as':'Agent','attributes':['id',_0x97c4('0x1d')]},{'model':'VoiceQueue','as':_0x97c4('0x1e'),'attributes':['id',_0x97c4('0x1d')]}],'raw':!![]},'log':_0x97c4('0x1f')});};};exports[_0x97c4('0x20')]=function(_0x2718be,_0x145e4f,_0x23c7a3){return client[_0x97c4('0x5')](_0x97c4('0x6'),{'body':_0x2718be,'options':{'where':{'id':_0x145e4f},'limit':_0x23c7a3},'log':_0x97c4('0x6')});};exports[_0x97c4('0x21')]=function(_0x53dc8d,_0xd727c0){return function(){return client[_0x97c4('0x5')]('GetContactRecallMe',{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x53dc8d,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()['format'](_0x97c4('0x8'))},'UserId':{'$in':_0xd727c0}},'order':[['priority',_0x97c4('0x10')],['scheduledat',_0x97c4('0x10')],['id',_0x97c4('0x11')]],'include':[{'model':_0x97c4('0x3'),'as':_0x97c4('0x13')},{'model':_0x97c4('0x1c'),'as':_0x97c4('0x22'),'attributes':['id',_0x97c4('0x1d'),_0x97c4('0x23')]}],'group':_0x97c4('0x24'),'raw':!![]},'log':'GetContactDialer'});};};exports['resetActiveCalls']=function(_0x17e384,_0x2b5803){return client[_0x97c4('0x5')](_0x97c4('0x25'),{'body':_0x17e384,'options':_0x2b5803||{},'log':_0x97c4('0x25')});};exports[_0x97c4('0x26')]=function(_0x3de437,_0x13c9ff,_0x589056){return function(){return client[_0x97c4('0x5')](_0x97c4('0x27'),{'body':{'where':{'voiceQueueIds':_0x3de437,'interval':_0x13c9ff,'availableAgentsIds':_0x589056}},'log':_0x97c4('0x26')});};};
\ No newline at end of file
+var _0xfc91=['UpdateCmHopper','ContactId','ListId','VoiceQueueId','CampaignId','destroyContact','DestroyCmHopper','getContactDialer','GetContactDialer','YYYY-MM-DD\x20HH:mm:ss','priority','DESC','scheduledat','ASC','GetContactDialerIvr','moveContactManagedDialer','MoveContactManagedDialer','countReScheduled','getContactPreview','User','Agent','name','VoiceQueue','getContactRecallMe','GetContactRecallMe','resetActiveCalls','ResetActiveCalls','handlePreviewRecallNotifications','CmHopperHandlePreviewRecallNotifications','moment','Request','GetCmHopper','CmContact','Contact','getCmHopper','updateContacts','format','rescheduleContact'];(function(_0x47857b,_0x5a0c0c){var _0x45d884=function(_0x5f170e){while(--_0x5f170e){_0x47857b['push'](_0x47857b['shift']());}};_0x45d884(++_0x5a0c0c);}(_0xfc91,0xb5));var _0x1fc9=function(_0x32b67a,_0x1e28e3){_0x32b67a=_0x32b67a-0x0;var _0x53d364=_0xfc91[_0x32b67a];return _0x53d364;};'use strict';var client=require('../client');var moment=require(_0x1fc9('0x0'));exports['getContacts']=function(_0x1156ef,_0x2bdf26){return function(){return client[_0x1fc9('0x1')](_0x1fc9('0x2'),{'options':{'where':{'VoiceQueueId':_0x1156ef},'include':[{'model':_0x1fc9('0x3'),'as':_0x1fc9('0x4')}],'limit':_0x2bdf26,'raw':![]},'log':_0x1fc9('0x5')});};};exports[_0x1fc9('0x6')]=function(_0x363d23,_0xb6caac,_0xc81f3b){return function(){return client[_0x1fc9('0x1')]('UpdateCmHopper',{'body':_0x363d23,'options':{'where':{'VoiceQueueId':_0xb6caac,'scheduledat':{'$lte':moment()[_0x1fc9('0x7')]('YYYY-MM-DD\x20HH:mm:ss')}},'limit':_0xc81f3b},'log':'UpdateCmHopper'});};};exports[_0x1fc9('0x8')]=function(_0x3538fd){return client[_0x1fc9('0x1')](_0x1fc9('0x9'),{'body':_0x3538fd,'options':{'where':{'ContactId':_0x3538fd[_0x1fc9('0xa')],'ListId':_0x3538fd[_0x1fc9('0xb')],'VoiceQueueId':_0x3538fd[_0x1fc9('0xc')],'CampaignId':_0x3538fd[_0x1fc9('0xd')]}},'log':_0x1fc9('0x8')});};exports[_0x1fc9('0xe')]=function(_0x1fb8cc,_0x39729b,_0x401f24){return function(){return client[_0x1fc9('0x1')](_0x1fc9('0xf'),{'options':{'where':{'VoiceQueueId':_0x1fb8cc,'ListId':_0x39729b,'ContactId':_0x401f24}},'log':_0x1fc9('0xf')});};};exports[_0x1fc9('0x10')]=function(_0x5bb258,_0xeafb47,_0x3d4191,_0x47f51b){return client[_0x1fc9('0x1')](_0x1fc9('0x11'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x5bb258,'active':![],'scheduledat':{'$lte':moment()[_0x1fc9('0x7')](_0x1fc9('0x12'))},'$or':[{'UserId':null},{'UserId':{'$in':_0xeafb47}}]},'order':[[_0x1fc9('0x13'),_0x1fc9('0x14')],['scheduledat',_0x47f51b],['id','ASC']],'raw':!![],'limit':_0x3d4191},'log':_0x1fc9('0x11')});};exports['getContactDialerIvr']=function(_0x171cc9,_0x5100ba,_0x533635){return client[_0x1fc9('0x1')](_0x1fc9('0x11'),{'body':{'active':!![]},'options':{'where':{'CampaignId':_0x171cc9,'active':![],'scheduledat':{'$lte':moment()[_0x1fc9('0x7')](_0x1fc9('0x12'))}},'include':[{'model':_0x1fc9('0x3'),'as':_0x1fc9('0x4')}],'order':[[_0x1fc9('0x13'),_0x1fc9('0x14')],[_0x1fc9('0x15'),_0x533635],['id',_0x1fc9('0x16')]],'raw':!![],'limit':_0x5100ba},'log':_0x1fc9('0x17')});};exports[_0x1fc9('0x18')]=function(_0x1ddde2,_0x19d9bd){_0x1ddde2['campaign']=_0x1ddde2['queue'];return client[_0x1fc9('0x1')](_0x1fc9('0x19'),{'body':_0x1ddde2,'options':{'where':{'ContactId':_0x1ddde2[_0x1fc9('0xa')],'ListId':_0x1ddde2['ListId'],'VoiceQueueId':_0x1ddde2['VoiceQueueId'],'CampaignId':_0x1ddde2[_0x1fc9('0xd')],'active':_0x19d9bd?undefined:!![]}},'log':'MoveContactManagedDialer'});};exports['countReScheduled']=function(_0x5a73fd){return client[_0x1fc9('0x1')]('CountReScheduled',{'options':{'where':{'VoiceQueueId':_0x5a73fd['id']?_0x5a73fd['id']||null:null}},'log':_0x1fc9('0x1a')});};exports[_0x1fc9('0x1b')]=function(_0x4f7d20){return function(){return client[_0x1fc9('0x1')]('GetCmHopperPreview',{'options':{'where':{'id':_0x4f7d20},'include':[{'model':'CmContact','as':_0x1fc9('0x4')},{'model':_0x1fc9('0x1c'),'as':_0x1fc9('0x1d'),'attributes':['id',_0x1fc9('0x1e')]},{'model':_0x1fc9('0x1f'),'as':'Queue','attributes':['id',_0x1fc9('0x1e')]}],'raw':!![]},'log':_0x1fc9('0x5')});};};exports['unlockContact']=function(_0x2e46e0,_0x1cf5bf,_0xafff65){return client['Request'](_0x1fc9('0x9'),{'body':_0x2e46e0,'options':{'where':{'id':_0x1cf5bf},'limit':_0xafff65},'log':_0x1fc9('0x9')});};exports[_0x1fc9('0x20')]=function(_0x31ba25,_0x16f3a4){return function(){return client[_0x1fc9('0x1')](_0x1fc9('0x21'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x31ba25,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()[_0x1fc9('0x7')]('YYYY-MM-DD\x20HH:mm:ss')},'UserId':{'$in':_0x16f3a4}},'order':[[_0x1fc9('0x13'),'DESC'],['scheduledat',_0x1fc9('0x14')],['id',_0x1fc9('0x16')]],'include':[{'model':_0x1fc9('0x3'),'as':_0x1fc9('0x4')},{'model':_0x1fc9('0x1c'),'as':_0x1fc9('0x1d'),'attributes':['id',_0x1fc9('0x1e'),'voicePause']}],'group':'db.CmHopper.UserId','raw':!![]},'log':_0x1fc9('0x11')});};};exports[_0x1fc9('0x22')]=function(_0x4ac74c,_0x568055){return client[_0x1fc9('0x1')]('ResetActiveCalls',{'body':_0x4ac74c,'options':_0x568055||{},'log':_0x1fc9('0x23')});};exports[_0x1fc9('0x24')]=function(_0x1ec79c,_0x297925,_0x3282ff){return function(){return client[_0x1fc9('0x1')](_0x1fc9('0x25'),{'body':{'where':{'voiceQueueIds':_0x1ec79c,'interval':_0x297925,'availableAgentsIds':_0x3282ff}},'log':_0x1fc9('0x24')});};};
\ No newline at end of file
index a1704d1..aeb110c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6921=['VerifyAdditionalPhones','SwapAdditionalPhones','incrementPreviewCounters','../client','Request'];(function(_0x415603,_0x21320c){var _0x131e72=function(_0x50092a){while(--_0x50092a){_0x415603['push'](_0x415603['shift']());}};_0x131e72(++_0x21320c);}(_0x6921,0x157));var _0x1692=function(_0x128fc3,_0x1b98dc){_0x128fc3=_0x128fc3-0x0;var _0x18e2c7=_0x6921[_0x128fc3];return _0x18e2c7;};'use strict';var client=require(_0x1692('0x0'));exports['verifyAdditionalPhones']=function(_0x253247,_0x2f681f,_0x13296c){return client[_0x1692('0x1')]('VerifyAdditionalPhones',{'body':_0x253247,'reason':_0x2f681f,'entity':_0x13296c,'log':_0x1692('0x2')});};exports['swapAdditionalPhones']=function(_0x5df27c,_0x22d6eb,_0x39ad33){return client[_0x1692('0x1')](_0x1692('0x3'),{'body':_0x5df27c,'duration':_0x22d6eb,'waitTime':_0x39ad33,'log':_0x1692('0x3')});};exports[_0x1692('0x4')]=function(_0x3e8a18){return function(){return client[_0x1692('0x1')]('IncrementPreviewCounters',{'body':_0x3e8a18,'log':'IncrementPreviewCounters'});};};
\ No newline at end of file
+var _0x93e6=['SwapAdditionalPhones','incrementPreviewCounters','IncrementPreviewCounters','Request','VerifyAdditionalPhones'];(function(_0x5a1f86,_0x56296e){var _0x575939=function(_0x21d5a6){while(--_0x21d5a6){_0x5a1f86['push'](_0x5a1f86['shift']());}};_0x575939(++_0x56296e);}(_0x93e6,0x67));var _0x693e=function(_0xc0acde,_0x4df117){_0xc0acde=_0xc0acde-0x0;var _0x2d9a9d=_0x93e6[_0xc0acde];return _0x2d9a9d;};'use strict';var client=require('../client');exports['verifyAdditionalPhones']=function(_0x5883db,_0x52db90,_0x5b20f3){return client[_0x693e('0x0')](_0x693e('0x1'),{'body':_0x5883db,'reason':_0x52db90,'entity':_0x5b20f3,'log':_0x693e('0x1')});};exports['swapAdditionalPhones']=function(_0xe21ccf,_0x2a9b1a,_0x3bd35a){return client['Request']('SwapAdditionalPhones',{'body':_0xe21ccf,'duration':_0x2a9b1a,'waitTime':_0x3bd35a,'log':_0x693e('0x2')});};exports[_0x693e('0x3')]=function(_0x495151){return function(){return client['Request'](_0x693e('0x4'),{'body':_0x495151,'log':_0x693e('0x4')});};};
\ No newline at end of file
index 6fb5b71..6891b85 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa228=['checkIsBlackListIvr','CampaignId','GetCmHopperBlackIvr','../client','Request','GetCmHopperBlack','VoiceQueueId','phone'];(function(_0x20714a,_0x7de591){var _0x15e877=function(_0x3f9f8d){while(--_0x3f9f8d){_0x20714a['push'](_0x20714a['shift']());}};_0x15e877(++_0x7de591);}(_0xa228,0xf3));var _0x8a22=function(_0x2f8dd9,_0x31b477){_0x2f8dd9=_0x2f8dd9-0x0;var _0x2e8139=_0xa228[_0x2f8dd9];return _0x2e8139;};'use strict';var client=require(_0x8a22('0x0'));exports['checkIsBlackList']=function(_0x39c3e7){return client[_0x8a22('0x1')](_0x8a22('0x2'),{'options':{'where':{'VoiceQueueId':_0x39c3e7[_0x8a22('0x3')],'phone':_0x39c3e7[_0x8a22('0x4')]},'raw':![]},'log':_0x8a22('0x2')});};exports[_0x8a22('0x5')]=function(_0x2ecbfa){return client['Request']('GetCmHopperBlack',{'options':{'where':{'CampaignId':_0x2ecbfa[_0x8a22('0x6')],'phone':_0x2ecbfa['phone']},'raw':![]},'log':_0x8a22('0x7')});};
\ No newline at end of file
+var _0xe074=['checkIsBlackListIvr','CampaignId','phone','GetCmHopperBlackIvr','checkIsBlackList','VoiceQueueId'];(function(_0x36eaaa,_0x326732){var _0x461349=function(_0x4e4180){while(--_0x4e4180){_0x36eaaa['push'](_0x36eaaa['shift']());}};_0x461349(++_0x326732);}(_0xe074,0x1e4));var _0x4e07=function(_0x56d8df,_0x28c6f2){_0x56d8df=_0x56d8df-0x0;var _0x51cfa0=_0xe074[_0x56d8df];return _0x51cfa0;};'use strict';var client=require('../client');exports[_0x4e07('0x0')]=function(_0x13e2e9){return client['Request']('GetCmHopperBlack',{'options':{'where':{'VoiceQueueId':_0x13e2e9[_0x4e07('0x1')],'phone':_0x13e2e9['phone']},'raw':![]},'log':'GetCmHopperBlack'});};exports[_0x4e07('0x2')]=function(_0x439c85){return client['Request']('GetCmHopperBlack',{'options':{'where':{'CampaignId':_0x439c85[_0x4e07('0x3')],'phone':_0x439c85[_0x4e07('0x4')]},'raw':![]},'log':_0x4e07('0x5')});};
\ No newline at end of file
index 482c1e3..10b9b34 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb1de=['CreateCmHopperFinal','../client','campaign','queue','Request'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xb1de,0x97));var _0xeb1d=function(_0x28f725,_0x230591){_0x28f725=_0x28f725-0x0;var _0x55fda2=_0xb1de[_0x28f725];return _0x55fda2;};'use strict';var client=require(_0xeb1d('0x0'));exports['createContact']=function(_0x13fce4){return function(){_0x13fce4[_0xeb1d('0x1')]=_0x13fce4[_0xeb1d('0x2')];return client[_0xeb1d('0x3')](_0xeb1d('0x4'),{'body':_0x13fce4,'log':_0xeb1d('0x4')});};};
\ No newline at end of file
+var _0xf9d7=['Request','CreateCmHopperFinal','../client'];(function(_0x40ebf1,_0xbea22){var _0x385d30=function(_0x1f6aa0){while(--_0x1f6aa0){_0x40ebf1['push'](_0x40ebf1['shift']());}};_0x385d30(++_0xbea22);}(_0xf9d7,0x113));var _0x7f9d=function(_0x44fc33,_0x480283){_0x44fc33=_0x44fc33-0x0;var _0x1e64a1=_0xf9d7[_0x44fc33];return _0x1e64a1;};'use strict';var client=require(_0x7f9d('0x0'));exports['createContact']=function(_0x40c794){return function(){_0x40c794['campaign']=_0x40c794['queue'];return client[_0x7f9d('0x1')](_0x7f9d('0x2'),{'body':_0x40c794,'log':_0x7f9d('0x2')});};};
\ No newline at end of file
index 7201c2e..a892b3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc55e=['getVoiceQueueHopperHistory','GetVoiceQueueHopperHistory','startOf','day','getCampaignHopperHistory','GetCampaignHopperHistory','endOf','ivr','../client','moment','createHistory','campaign','queue','CreateCmHopperHistory','Request','AvgHandleTime','minutes','format','YYYY-MM-DD\x20HH:mm:ss','GetCmHopperHistory'];(function(_0x5f3f88,_0x562baf){var _0xd08119=function(_0x42dbf7){while(--_0x42dbf7){_0x5f3f88['push'](_0x5f3f88['shift']());}};_0xd08119(++_0x562baf);}(_0xc55e,0x184));var _0xec55=function(_0x104ab9,_0x167c08){_0x104ab9=_0x104ab9-0x0;var _0x5a46fb=_0xc55e[_0x104ab9];return _0x5a46fb;};'use strict';var client=require(_0xec55('0x0'));var moment=require(_0xec55('0x1'));exports[_0xec55('0x2')]=function(_0x14ef14){_0x14ef14[_0xec55('0x3')]=_0x14ef14[_0xec55('0x4')];return client['Request'](_0xec55('0x5'),{'body':_0x14ef14,'log':_0xec55('0x5')});};exports['avgHandleTime']=function(_0x4e7ad1){return client[_0xec55('0x6')](_0xec55('0x7'),{'options':{'where':{'endtime':{'$between':[moment()['subtract'](_0x4e7ad1,_0xec55('0x8'))['format']('YYYY-MM-DD\x20HH:mm:ss'),moment()[_0xec55('0x9')](_0xec55('0xa'))]}},'raw':![]},'log':_0xec55('0xb')});};exports[_0xec55('0xc')]=function(){return function(){return client['Request'](_0xec55('0xd'),{'options':{'where':{'createdAt':{'$between':[moment()[_0xec55('0xe')](_0xec55('0xf'))[_0xec55('0x9')](_0xec55('0xa')),moment()['endOf']('day')['format'](_0xec55('0xa'))]},'campaigntype':'queue'},'raw':![]},'log':_0xec55('0xd')});};};exports[_0xec55('0x10')]=function(){return function(){return client[_0xec55('0x6')](_0xec55('0x11'),{'options':{'where':{'createdAt':{'$between':[moment()['startOf'](_0xec55('0xf'))['format'](_0xec55('0xa')),moment()[_0xec55('0x12')](_0xec55('0xf'))[_0xec55('0x9')](_0xec55('0xa'))]},'campaigntype':_0xec55('0x13')},'raw':![]},'log':_0xec55('0x11')});};};
\ No newline at end of file
+var _0xd958=['YYYY-MM-DD\x20HH:mm:ss','getVoiceQueueHopperHistory','startOf','day','endOf','GetVoiceQueueHopperHistory','getCampaignHopperHistory','GetCampaignHopperHistory','../client','createHistory','queue','Request','CreateCmHopperHistory','avgHandleTime','AvgHandleTime','minutes','format'];(function(_0x536ed3,_0x481b22){var _0x1a3f43=function(_0x30e2f9){while(--_0x30e2f9){_0x536ed3['push'](_0x536ed3['shift']());}};_0x1a3f43(++_0x481b22);}(_0xd958,0x15c));var _0x8d95=function(_0x1b4b23,_0x5dd6d6){_0x1b4b23=_0x1b4b23-0x0;var _0x2a325b=_0xd958[_0x1b4b23];return _0x2a325b;};'use strict';var client=require(_0x8d95('0x0'));var moment=require('moment');exports[_0x8d95('0x1')]=function(_0x5e7179){_0x5e7179['campaign']=_0x5e7179[_0x8d95('0x2')];return client[_0x8d95('0x3')](_0x8d95('0x4'),{'body':_0x5e7179,'log':'CreateCmHopperHistory'});};exports[_0x8d95('0x5')]=function(_0x56c61d){return client[_0x8d95('0x3')](_0x8d95('0x6'),{'options':{'where':{'endtime':{'$between':[moment()['subtract'](_0x56c61d,_0x8d95('0x7'))[_0x8d95('0x8')](_0x8d95('0x9')),moment()[_0x8d95('0x8')](_0x8d95('0x9'))]}},'raw':![]},'log':'GetCmHopperHistory'});};exports[_0x8d95('0xa')]=function(){return function(){return client[_0x8d95('0x3')]('GetVoiceQueueHopperHistory',{'options':{'where':{'createdAt':{'$between':[moment()[_0x8d95('0xb')](_0x8d95('0xc'))[_0x8d95('0x8')](_0x8d95('0x9')),moment()[_0x8d95('0xd')](_0x8d95('0xc'))[_0x8d95('0x8')](_0x8d95('0x9'))]},'campaigntype':'queue'},'raw':![]},'log':_0x8d95('0xe')});};};exports[_0x8d95('0xf')]=function(){return function(){return client[_0x8d95('0x3')]('GetCampaignHopperHistory',{'options':{'where':{'createdAt':{'$between':[moment()[_0x8d95('0xb')]('day')[_0x8d95('0x8')](_0x8d95('0x9')),moment()[_0x8d95('0xd')](_0x8d95('0xc'))[_0x8d95('0x8')](_0x8d95('0x9'))]},'campaigntype':'ivr'},'raw':![]},'log':_0x8d95('0x10')});};};
\ No newline at end of file
index ccd535b..4f092a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcabe=['NotifyFaxAccount','../client','Request','GetFaxAccount','description','ecm','localstationid','minrate','maxrate','gateway','faxdetect','t38timeout','tech','TrunkId','ListId','key','Trunk','active','getFaxAccount'];(function(_0x49a1b2,_0x2bc6b6){var _0x160321=function(_0x1c5096){while(--_0x1c5096){_0x49a1b2['push'](_0x49a1b2['shift']());}};_0x160321(++_0x2bc6b6);}(_0xcabe,0x1ef));var _0xecab=function(_0x1d97e0,_0x415fe6){_0x1d97e0=_0x1d97e0-0x0;var _0x1286d0=_0xcabe[_0x1d97e0];return _0x1286d0;};'use strict';var client=require(_0xecab('0x0'));exports['getFaxAccounts']=function(){return function(){return client[_0xecab('0x1')](_0xecab('0x2'),{'options':{'raw':![],'attributes':['id','name',_0xecab('0x3'),_0xecab('0x4'),'headerinfo',_0xecab('0x5'),_0xecab('0x6'),_0xecab('0x7'),'modem',_0xecab('0x8'),_0xecab('0x9'),_0xecab('0xa'),_0xecab('0xb'),_0xecab('0xc'),_0xecab('0xd'),_0xecab('0xe')],'include':[{'model':_0xecab('0xf'),'as':_0xecab('0xf'),'attributes':['id','name','callerid',_0xecab('0x10')]}]},'log':_0xecab('0x11')});};};exports['notify']=function(_0x445617,_0x3e9db8){return client[_0xecab('0x1')](_0xecab('0x12'),{'account':{'id':_0x445617},'body':_0x3e9db8,'log':_0xecab('0x12')});};
\ No newline at end of file
+var _0x4849=['ecm','headerinfo','localstationid','minrate','maxrate','modem','gateway','faxdetect','TrunkId','key','Trunk','name','callerid','active','getFaxAccount','notify','NotifyFaxAccount','../client','getFaxAccounts','Request','description'];(function(_0x27926c,_0x37d579){var _0x584578=function(_0x32e167){while(--_0x32e167){_0x27926c['push'](_0x27926c['shift']());}};_0x584578(++_0x37d579);}(_0x4849,0xf8));var _0x9484=function(_0x3ba38b,_0x201c81){_0x3ba38b=_0x3ba38b-0x0;var _0x13c71e=_0x4849[_0x3ba38b];return _0x13c71e;};'use strict';var client=require(_0x9484('0x0'));exports[_0x9484('0x1')]=function(){return function(){return client[_0x9484('0x2')]('GetFaxAccount',{'options':{'raw':![],'attributes':['id','name',_0x9484('0x3'),_0x9484('0x4'),_0x9484('0x5'),_0x9484('0x6'),_0x9484('0x7'),_0x9484('0x8'),_0x9484('0x9'),_0x9484('0xa'),_0x9484('0xb'),'t38timeout','tech',_0x9484('0xc'),'ListId',_0x9484('0xd')],'include':[{'model':_0x9484('0xe'),'as':_0x9484('0xe'),'attributes':['id',_0x9484('0xf'),_0x9484('0x10'),_0x9484('0x11')]}]},'log':_0x9484('0x12')});};};exports[_0x9484('0x13')]=function(_0x3cb258,_0x15572f){return client[_0x9484('0x2')](_0x9484('0x14'),{'account':{'id':_0x3cb258},'body':_0x15572f,'log':_0x9484('0x14')});};
\ No newline at end of file
index e21c037..f23d293 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c3d=['Request','UpdateFaxMessage','../client'];(function(_0x13f3f7,_0x51e381){var _0xed7c69=function(_0x3ee93e){while(--_0x3ee93e){_0x13f3f7['push'](_0x13f3f7['shift']());}};_0xed7c69(++_0x51e381);}(_0x4c3d,0x1f4));var _0xd4c3=function(_0x1c2f4d,_0x40e117){_0x1c2f4d=_0x1c2f4d-0x0;var _0x5273b7=_0x4c3d[_0x1c2f4d];return _0x5273b7;};'use strict';var client=require(_0xd4c3('0x0'));exports['update']=function(_0x24010e,_0x44fc21){return client[_0xd4c3('0x1')](_0xd4c3('0x2'),{'body':_0x44fc21,'options':{'where':{'AttachmentId':_0x24010e}},'log':'UpdateFaxMessage'});};
\ No newline at end of file
+var _0x0f8f=['Request','UpdateFaxMessage'];(function(_0x3dd42e,_0xc6b91c){var _0x4b69bc=function(_0x4ef17c){while(--_0x4ef17c){_0x3dd42e['push'](_0x3dd42e['shift']());}};_0x4b69bc(++_0xc6b91c);}(_0x0f8f,0x1b4));var _0xf0f8=function(_0x580971,_0x10984d){_0x580971=_0x580971-0x0;var _0x16d873=_0x0f8f[_0x580971];return _0x16d873;};'use strict';var client=require('../client');exports['update']=function(_0x2fdfb2,_0x50a77c){return client[_0xf0f8('0x0')](_0xf0f8('0x1'),{'body':_0x50a77c,'options':{'where':{'AttachmentId':_0x2fdfb2}},'log':_0xf0f8('0x1')});};
\ No newline at end of file
index 9c9f382..967bfb5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbcf1=['username','password','type','Configurations','DeskField','Subjects','content','variableName','Variable','Descriptions','key','keyType','keyContent','Fields','idField','customField','Tag','../../client','getDeskAccounts','Request','GetDeskAccount','name','description'];(function(_0x292818,_0x2889dc){var _0x3c1ced=function(_0x5db220){while(--_0x5db220){_0x292818['push'](_0x292818['shift']());}};_0x3c1ced(++_0x2889dc);}(_0xbcf1,0x16a));var _0x1bcf=function(_0x8af54b,_0x280be5){_0x8af54b=_0x8af54b-0x0;var _0x27d8f0=_0xbcf1[_0x8af54b];return _0x27d8f0;};'use strict';var client=require(_0x1bcf('0x0'));exports[_0x1bcf('0x1')]=function(){return function(_0x29195e){return client[_0x1bcf('0x2')](_0x1bcf('0x3'),{'options':{'raw':![],'attributes':['id',_0x1bcf('0x4'),_0x1bcf('0x5'),_0x1bcf('0x6'),_0x1bcf('0x7'),'remoteUri','authType',_0x1bcf('0x8'),'serverUrl'],'include':[{'model':'DeskConfiguration','as':_0x1bcf('0x9'),'attributes':['id','name'],'include':[{'model':_0x1bcf('0xa'),'as':_0x1bcf('0xb'),'attributes':['id',_0x1bcf('0x8'),_0x1bcf('0xc'),_0x1bcf('0xd')],'include':[{'model':_0x1bcf('0xe'),'as':_0x1bcf('0xe'),'attributes':['id',_0x1bcf('0x4')]}]},{'model':_0x1bcf('0xa'),'as':_0x1bcf('0xf'),'attributes':['id',_0x1bcf('0x8'),'content',_0x1bcf('0x10'),_0x1bcf('0x11'),_0x1bcf('0x12'),_0x1bcf('0xd')],'include':[{'model':_0x1bcf('0xe'),'as':_0x1bcf('0xe'),'attributes':['id',_0x1bcf('0x4')]}]},{'model':_0x1bcf('0xa'),'as':_0x1bcf('0x13'),'attributes':['id','type',_0x1bcf('0xc'),_0x1bcf('0x14'),'nameField',_0x1bcf('0x15'),_0x1bcf('0xd')],'include':[{'model':_0x1bcf('0xe'),'as':_0x1bcf('0xe'),'attributes':['id',_0x1bcf('0x4')]}]},{'model':_0x1bcf('0x16'),'as':'Tags','attributes':['id','name']}]}]},'log':_0x1bcf('0x3')});};};
\ No newline at end of file
+var _0xe303=['getDeskAccounts','Request','GetDeskAccount','name','description','username','authType','type','serverUrl','DeskConfiguration','Subjects','content','variableName','Variable','Descriptions','keyContent','Fields','idField','customField','Tag','../../client'];(function(_0x5af826,_0x38c08a){var _0x18d6b3=function(_0x43be77){while(--_0x43be77){_0x5af826['push'](_0x5af826['shift']());}};_0x18d6b3(++_0x38c08a);}(_0xe303,0x164));var _0x3e30=function(_0x38ed1e,_0x17c77a){_0x38ed1e=_0x38ed1e-0x0;var _0x1e660e=_0xe303[_0x38ed1e];return _0x1e660e;};'use strict';var client=require(_0x3e30('0x0'));exports[_0x3e30('0x1')]=function(){return function(_0x27fe5b){return client[_0x3e30('0x2')](_0x3e30('0x3'),{'options':{'raw':![],'attributes':['id',_0x3e30('0x4'),_0x3e30('0x5'),_0x3e30('0x6'),'password','remoteUri',_0x3e30('0x7'),_0x3e30('0x8'),_0x3e30('0x9')],'include':[{'model':_0x3e30('0xa'),'as':'Configurations','attributes':['id','name'],'include':[{'model':'DeskField','as':_0x3e30('0xb'),'attributes':['id',_0x3e30('0x8'),_0x3e30('0xc'),_0x3e30('0xd')],'include':[{'model':_0x3e30('0xe'),'as':'Variable','attributes':['id',_0x3e30('0x4')]}]},{'model':'DeskField','as':_0x3e30('0xf'),'attributes':['id',_0x3e30('0x8'),_0x3e30('0xc'),'key','keyType',_0x3e30('0x10'),_0x3e30('0xd')],'include':[{'model':'Variable','as':_0x3e30('0xe'),'attributes':['id',_0x3e30('0x4')]}]},{'model':'DeskField','as':_0x3e30('0x11'),'attributes':['id',_0x3e30('0x8'),_0x3e30('0xc'),_0x3e30('0x12'),'nameField',_0x3e30('0x13'),_0x3e30('0xd')],'include':[{'model':_0x3e30('0xe'),'as':_0x3e30('0xe'),'attributes':['id','name']}]},{'model':_0x3e30('0x14'),'as':'Tags','attributes':['id',_0x3e30('0x4')]}]}]},'log':'GetDeskAccount'});};};
\ No newline at end of file
index b854164..cdc36fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x61d0=['content','variableName','Variable','Descriptions','key','keyType','keyContent','Fields','idField','nameField','CloudProvider','data2','data7','GetDynamics365Account','../../client','Request','name','password','remoteUri','clientId','clientSecret','serverUrl','description','modernAuthentication','Dynamics365Configuration','Configurations','additionalSearchContact','Dynamics365Field','Subjects'];(function(_0x2f7f87,_0x1b1c5c){var _0x134c39=function(_0x1f1366){while(--_0x1f1366){_0x2f7f87['push'](_0x2f7f87['shift']());}};_0x134c39(++_0x1b1c5c);}(_0x61d0,0x187));var _0x061d=function(_0x2faddb,_0xc18b78){_0x2faddb=_0x2faddb-0x0;var _0x273c05=_0x61d0[_0x2faddb];return _0x273c05;};'use strict';var client=require(_0x061d('0x0'));exports['getDynamics365Accounts']=function(){return function(_0x45b94b){return client[_0x061d('0x1')]('GetDynamics365Account',{'options':{'raw':![],'attributes':['id',_0x061d('0x2'),'username',_0x061d('0x3'),_0x061d('0x4'),'tenantId',_0x061d('0x5'),_0x061d('0x6'),_0x061d('0x7'),_0x061d('0x8'),_0x061d('0x9')],'include':[{'model':_0x061d('0xa'),'as':_0x061d('0xb'),'attributes':['id','name','ticketType','moduleCreate',_0x061d('0xc'),'openNewTab'],'include':[{'model':_0x061d('0xd'),'as':_0x061d('0xe'),'attributes':['id','type',_0x061d('0xf'),_0x061d('0x10')],'include':[{'model':_0x061d('0x11'),'as':_0x061d('0x11'),'attributes':['id',_0x061d('0x2')]}]},{'model':_0x061d('0xd'),'as':_0x061d('0x12'),'attributes':['id','type',_0x061d('0xf'),_0x061d('0x13'),_0x061d('0x14'),_0x061d('0x15'),_0x061d('0x10')],'include':[{'model':_0x061d('0x11'),'as':_0x061d('0x11'),'attributes':['id',_0x061d('0x2')]}]},{'model':_0x061d('0xd'),'as':_0x061d('0x16'),'attributes':['id','type',_0x061d('0xf'),_0x061d('0x17'),_0x061d('0x18'),'customField',_0x061d('0x10')],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0x061d('0x2')]}]}]},{'model':_0x061d('0x19'),'as':_0x061d('0x19'),'attributes':['id',_0x061d('0x1a'),'data5',_0x061d('0x1b')]}]},'log':_0x061d('0x1c')});};};
\ No newline at end of file
+var _0xda2d=['data5','data7','getDynamics365Accounts','Request','GetDynamics365Account','name','tenantId','clientId','clientSecret','serverUrl','description','modernAuthentication','Dynamics365Configuration','Configurations','ticketType','additionalSearchContact','openNewTab','Subjects','type','content','variableName','Variable','Dynamics365Field','key','keyType','keyContent','Fields','idField','nameField','customField','CloudProvider','data2'];(function(_0x4ca288,_0x254dd8){var _0x2362c1=function(_0x5504d8){while(--_0x5504d8){_0x4ca288['push'](_0x4ca288['shift']());}};_0x2362c1(++_0x254dd8);}(_0xda2d,0x102));var _0xdda2=function(_0x201aec,_0x185341){_0x201aec=_0x201aec-0x0;var _0x4a28e4=_0xda2d[_0x201aec];return _0x4a28e4;};'use strict';var client=require('../../client');exports[_0xdda2('0x0')]=function(){return function(_0x35f029){return client[_0xdda2('0x1')](_0xdda2('0x2'),{'options':{'raw':![],'attributes':['id',_0xdda2('0x3'),'username','password','remoteUri',_0xdda2('0x4'),_0xdda2('0x5'),_0xdda2('0x6'),_0xdda2('0x7'),_0xdda2('0x8'),_0xdda2('0x9')],'include':[{'model':_0xdda2('0xa'),'as':_0xdda2('0xb'),'attributes':['id',_0xdda2('0x3'),_0xdda2('0xc'),'moduleCreate',_0xdda2('0xd'),_0xdda2('0xe')],'include':[{'model':'Dynamics365Field','as':_0xdda2('0xf'),'attributes':['id',_0xdda2('0x10'),_0xdda2('0x11'),_0xdda2('0x12')],'include':[{'model':_0xdda2('0x13'),'as':_0xdda2('0x13'),'attributes':['id',_0xdda2('0x3')]}]},{'model':_0xdda2('0x14'),'as':'Descriptions','attributes':['id','type','content',_0xdda2('0x15'),_0xdda2('0x16'),_0xdda2('0x17'),_0xdda2('0x12')],'include':[{'model':_0xdda2('0x13'),'as':_0xdda2('0x13'),'attributes':['id',_0xdda2('0x3')]}]},{'model':'Dynamics365Field','as':_0xdda2('0x18'),'attributes':['id','type',_0xdda2('0x11'),_0xdda2('0x19'),_0xdda2('0x1a'),_0xdda2('0x1b'),_0xdda2('0x12')],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0xdda2('0x3')]}]}]},{'model':'CloudProvider','as':_0xdda2('0x1c'),'attributes':['id',_0xdda2('0x1d'),_0xdda2('0x1e'),_0xdda2('0x1f')]}]},'log':_0xdda2('0x2')});};};
\ No newline at end of file
index 61a9c7f..4881ebc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x83e1=['name','remoteUri','serverUrl','Tag','FreshdeskField','type','content','variableName','Variable','key','keyType','keyContent','idField','nameField','GetFreshdeskAccount','../../client','getFreshdeskAccounts','Request'];(function(_0x30a5b6,_0x47bf65){var _0x516e4e=function(_0x348561){while(--_0x348561){_0x30a5b6['push'](_0x30a5b6['shift']());}};_0x516e4e(++_0x47bf65);}(_0x83e1,0x1ad));var _0x183e=function(_0x460290,_0x1f6fcb){_0x460290=_0x460290-0x0;var _0x431b71=_0x83e1[_0x460290];return _0x431b71;};'use strict';var client=require(_0x183e('0x0'));exports[_0x183e('0x1')]=function(){return function(_0x5f5222){return client[_0x183e('0x2')]('GetFreshdeskAccount',{'options':{'raw':![],'attributes':['id',_0x183e('0x3'),'username','apiKey',_0x183e('0x4'),_0x183e('0x5')],'include':[{'model':'FreshdeskConfiguration','as':'Configurations','attributes':['id','name'],'include':[{'model':_0x183e('0x6'),'attributes':['id',_0x183e('0x3')]},{'model':_0x183e('0x7'),'as':'Subjects','attributes':['id',_0x183e('0x8'),_0x183e('0x9'),_0x183e('0xa')],'include':[{'model':'Variable','as':_0x183e('0xb'),'attributes':['id',_0x183e('0x3')]}]},{'model':_0x183e('0x7'),'as':'Descriptions','attributes':['id',_0x183e('0x8'),'content',_0x183e('0xc'),_0x183e('0xd'),_0x183e('0xe'),_0x183e('0xa')],'include':[{'model':_0x183e('0xb'),'as':_0x183e('0xb'),'attributes':['id',_0x183e('0x3')]}]},{'model':'FreshdeskField','as':'Fields','attributes':['id','type',_0x183e('0x9'),_0x183e('0xf'),_0x183e('0x10'),'customField',_0x183e('0xa')],'include':[{'model':_0x183e('0xb'),'as':_0x183e('0xb'),'attributes':['id','name']}]}]}]},'log':_0x183e('0x11')});};};
\ No newline at end of file
+var _0x66d3=['type','content','variableName','Variable','Descriptions','key','keyType','keyContent','Fields','idField','customField','../../client','GetFreshdeskAccount','name','apiKey','serverUrl','Configurations','Tag','FreshdeskField','Subjects'];(function(_0x1f0cff,_0x2a2a38){var _0x25ad73=function(_0x4d5f8b){while(--_0x4d5f8b){_0x1f0cff['push'](_0x1f0cff['shift']());}};_0x25ad73(++_0x2a2a38);}(_0x66d3,0x10f));var _0x366d=function(_0x44ddbb,_0x1a8916){_0x44ddbb=_0x44ddbb-0x0;var _0x29765d=_0x66d3[_0x44ddbb];return _0x29765d;};'use strict';var client=require(_0x366d('0x0'));exports['getFreshdeskAccounts']=function(){return function(_0x3eab36){return client['Request'](_0x366d('0x1'),{'options':{'raw':![],'attributes':['id',_0x366d('0x2'),'username',_0x366d('0x3'),'remoteUri',_0x366d('0x4')],'include':[{'model':'FreshdeskConfiguration','as':_0x366d('0x5'),'attributes':['id',_0x366d('0x2')],'include':[{'model':_0x366d('0x6'),'attributes':['id',_0x366d('0x2')]},{'model':_0x366d('0x7'),'as':_0x366d('0x8'),'attributes':['id',_0x366d('0x9'),_0x366d('0xa'),_0x366d('0xb')],'include':[{'model':_0x366d('0xc'),'as':_0x366d('0xc'),'attributes':['id','name']}]},{'model':_0x366d('0x7'),'as':_0x366d('0xd'),'attributes':['id',_0x366d('0x9'),_0x366d('0xa'),_0x366d('0xe'),_0x366d('0xf'),_0x366d('0x10'),_0x366d('0xb')],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0x366d('0x2')]}]},{'model':_0x366d('0x7'),'as':_0x366d('0x11'),'attributes':['id',_0x366d('0x9'),_0x366d('0xa'),_0x366d('0x12'),'nameField',_0x366d('0x13'),_0x366d('0xb')],'include':[{'model':'Variable','as':_0x366d('0xc'),'attributes':['id',_0x366d('0x2')]}]}]}]},'log':'GetFreshdeskAccount'});};};
\ No newline at end of file
index 9583183..26b87c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa46e=['serverUrl','Configurations','FreshsalesField','Subjects','content','variableName','Variable','key','keyContent','GetFreshsalesccount','../../client','getFreshsalesAccounts','Request','GetFreshsalesAccount','name','apiKey'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xa46e,0x8a));var _0xea46=function(_0xc55d64,_0x133f2d){_0xc55d64=_0xc55d64-0x0;var _0x4194f6=_0xa46e[_0xc55d64];return _0x4194f6;};'use strict';var client=require(_0xea46('0x0'));exports[_0xea46('0x1')]=function(){return function(_0x5c746c){return client[_0xea46('0x2')](_0xea46('0x3'),{'options':{'raw':![],'attributes':['id',_0xea46('0x4'),'username',_0xea46('0x5'),'remoteUri',_0xea46('0x6')],'include':[{'model':'FreshsalesConfiguration','as':_0xea46('0x7'),'attributes':['id','name'],'include':[{'model':_0xea46('0x8'),'as':_0xea46('0x9'),'attributes':['id','type',_0xea46('0xa'),_0xea46('0xb')],'include':[{'model':_0xea46('0xc'),'as':_0xea46('0xc'),'attributes':['id',_0xea46('0x4')]}]},{'model':'FreshsalesField','as':'Descriptions','attributes':['id','type',_0xea46('0xa'),_0xea46('0xd'),'keyType',_0xea46('0xe'),_0xea46('0xb')],'include':[{'model':_0xea46('0xc'),'as':'Variable','attributes':['id',_0xea46('0x4')]}]}]}]},'log':_0xea46('0xf')});};};
\ No newline at end of file
+var _0xfb65=['FreshsalesField','Descriptions','key','keyContent','getFreshsalesAccounts','GetFreshsalesAccount','username','apiKey','remoteUri','serverUrl','FreshsalesConfiguration','Configurations','Subjects','type','content','variableName','Variable','name'];(function(_0x2402e8,_0x54b182){var _0x4a7523=function(_0x28ac74){while(--_0x28ac74){_0x2402e8['push'](_0x2402e8['shift']());}};_0x4a7523(++_0x54b182);}(_0xfb65,0x82));var _0x5fb6=function(_0xcb0eb2,_0x3906bf){_0xcb0eb2=_0xcb0eb2-0x0;var _0xbab9b8=_0xfb65[_0xcb0eb2];return _0xbab9b8;};'use strict';var client=require('../../client');exports[_0x5fb6('0x0')]=function(){return function(_0x50bb32){return client['Request'](_0x5fb6('0x1'),{'options':{'raw':![],'attributes':['id','name',_0x5fb6('0x2'),_0x5fb6('0x3'),_0x5fb6('0x4'),_0x5fb6('0x5')],'include':[{'model':_0x5fb6('0x6'),'as':_0x5fb6('0x7'),'attributes':['id','name'],'include':[{'model':'FreshsalesField','as':_0x5fb6('0x8'),'attributes':['id',_0x5fb6('0x9'),_0x5fb6('0xa'),_0x5fb6('0xb')],'include':[{'model':'Variable','as':_0x5fb6('0xc'),'attributes':['id',_0x5fb6('0xd')]}]},{'model':_0x5fb6('0xe'),'as':_0x5fb6('0xf'),'attributes':['id','type',_0x5fb6('0xa'),_0x5fb6('0x10'),'keyType',_0x5fb6('0x11'),_0x5fb6('0xb')],'include':[{'model':_0x5fb6('0xc'),'as':_0x5fb6('0xc'),'attributes':['id',_0x5fb6('0xd')]}]}]}]},'log':'GetFreshsalesccount'});};};
\ No newline at end of file
index 076f476..aea0526 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd05a=['getSalesforceAccounts','password','remoteUri','clientId','clientSecret','securityToken','SalesforceConfiguration','Configurations','name','moduleCreate','ticketType','leadId','additionalSearchLead','Subjects','Variable','SalesforceField','Descriptions'];(function(_0x581606,_0x167fe2){var _0x14c441=function(_0x14e92e){while(--_0x14e92e){_0x581606['push'](_0x581606['shift']());}};_0x14c441(++_0x167fe2);}(_0xd05a,0x143));var _0xad05=function(_0x15d5a7,_0x42dae0){_0x15d5a7=_0x15d5a7-0x0;var _0x530ba1=_0xd05a[_0x15d5a7];return _0x530ba1;};'use strict';var client=require('../../client');exports[_0xad05('0x0')]=function(){return function(_0x4104c5){return client['Request']('GetSalesforceAccount',{'options':{'raw':![],'attributes':['id','name','username',_0xad05('0x1'),_0xad05('0x2'),_0xad05('0x3'),_0xad05('0x4'),_0xad05('0x5'),'serverUrl','type'],'include':[{'model':_0xad05('0x6'),'as':_0xad05('0x7'),'attributes':['id',_0xad05('0x8'),'moduleSearch',_0xad05('0x9'),_0xad05('0xa'),_0xad05('0xb'),'additionalSearchAccount','additionalSearchContact',_0xad05('0xc')],'include':[{'model':'SalesforceField','as':_0xad05('0xd'),'include':[{'model':_0xad05('0xe'),'as':_0xad05('0xe'),'attributes':['id',_0xad05('0x8')]}]},{'model':_0xad05('0xf'),'as':_0xad05('0x10'),'include':[{'model':_0xad05('0xe'),'as':_0xad05('0xe'),'attributes':['id',_0xad05('0x8')]}]},{'model':_0xad05('0xf'),'as':'Fields','include':[{'model':_0xad05('0xe'),'as':'Variable','attributes':['id',_0xad05('0x8')]}]}]}]},'log':'GetSalesforceAccount'});};};
\ No newline at end of file
+var _0x2dd8=['clientId','clientSecret','serverUrl','type','SalesforceConfiguration','Configurations','moduleSearch','moduleCreate','ticketType','leadId','additionalSearchLead','Subjects','Variable','SalesforceField','Fields','../../client','getSalesforceAccounts','GetSalesforceAccount','name','username','password','remoteUri'];(function(_0x397ae6,_0x33651b){var _0x11aad7=function(_0x1f9b48){while(--_0x1f9b48){_0x397ae6['push'](_0x397ae6['shift']());}};_0x11aad7(++_0x33651b);}(_0x2dd8,0x143));var _0x82dd=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x2dd8[_0x19e35c];return _0x3e1fe8;};'use strict';var client=require(_0x82dd('0x0'));exports[_0x82dd('0x1')]=function(){return function(_0x5966fb){return client['Request'](_0x82dd('0x2'),{'options':{'raw':![],'attributes':['id',_0x82dd('0x3'),_0x82dd('0x4'),_0x82dd('0x5'),_0x82dd('0x6'),_0x82dd('0x7'),_0x82dd('0x8'),'securityToken',_0x82dd('0x9'),_0x82dd('0xa')],'include':[{'model':_0x82dd('0xb'),'as':_0x82dd('0xc'),'attributes':['id','name',_0x82dd('0xd'),_0x82dd('0xe'),_0x82dd('0xf'),_0x82dd('0x10'),'additionalSearchAccount','additionalSearchContact',_0x82dd('0x11')],'include':[{'model':'SalesforceField','as':_0x82dd('0x12'),'include':[{'model':_0x82dd('0x13'),'as':_0x82dd('0x13'),'attributes':['id',_0x82dd('0x3')]}]},{'model':_0x82dd('0x14'),'as':'Descriptions','include':[{'model':_0x82dd('0x13'),'as':_0x82dd('0x13'),'attributes':['id',_0x82dd('0x3')]}]},{'model':_0x82dd('0x14'),'as':_0x82dd('0x15'),'include':[{'model':'Variable','as':'Variable','attributes':['id',_0x82dd('0x3')]}]}]}]},'log':_0x82dd('0x2')});};};
\ No newline at end of file
index 5cc73bb..67db28c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc6ac=['GetServicenowAccount','name','description','username','password','email','remoteUri','serverUrl','ServicenowConfiguration','Configurations','ServicenowField','Subjects','type','variableName','Variable','content','key','keyContent','Fields','nameField','customField','GetServicenowkAccount','../../client','getServicenowAccounts','Request'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0xc6ac,0x15b));var _0xcc6a=function(_0xe4f57c,_0x5d0a82){_0xe4f57c=_0xe4f57c-0x0;var _0x9fcaad=_0xc6ac[_0xe4f57c];return _0x9fcaad;};'use strict';var client=require(_0xcc6a('0x0'));exports[_0xcc6a('0x1')]=function(){return function(_0x1b6e92){return client[_0xcc6a('0x2')](_0xcc6a('0x3'),{'options':{'raw':![],'attributes':['id',_0xcc6a('0x4'),_0xcc6a('0x5'),_0xcc6a('0x6'),_0xcc6a('0x7'),_0xcc6a('0x8'),_0xcc6a('0x9'),_0xcc6a('0xa')],'include':[{'model':_0xcc6a('0xb'),'as':_0xcc6a('0xc'),'attributes':['id','name'],'include':[{'model':_0xcc6a('0xd'),'as':_0xcc6a('0xe'),'attributes':['id',_0xcc6a('0xf'),'content',_0xcc6a('0x10')],'include':[{'model':_0xcc6a('0x11'),'as':_0xcc6a('0x11'),'attributes':['id',_0xcc6a('0x4')]}]},{'model':_0xcc6a('0xd'),'as':'Descriptions','attributes':['id',_0xcc6a('0xf'),_0xcc6a('0x12'),_0xcc6a('0x13'),'keyType',_0xcc6a('0x14'),_0xcc6a('0x10')],'include':[{'model':_0xcc6a('0x11'),'as':'Variable','attributes':['id','name']}]},{'model':_0xcc6a('0xd'),'as':_0xcc6a('0x15'),'attributes':['id',_0xcc6a('0xf'),'content','idField',_0xcc6a('0x16'),_0xcc6a('0x17'),_0xcc6a('0x10')],'include':[{'model':_0xcc6a('0x11'),'as':_0xcc6a('0x11'),'attributes':['id',_0xcc6a('0x4')]}]}]}]},'log':_0xcc6a('0x18')});};};
\ No newline at end of file
+var _0x2ef3=['Variable','key','keyType','keyContent','Fields','nameField','../../client','getServicenowAccounts','Request','GetServicenowAccount','name','username','password','remoteUri','serverUrl','ServicenowField','Subjects','type','content','variableName'];(function(_0x52b7b7,_0x56aada){var _0x4729a6=function(_0x4c46d3){while(--_0x4c46d3){_0x52b7b7['push'](_0x52b7b7['shift']());}};_0x4729a6(++_0x56aada);}(_0x2ef3,0xba));var _0x32ef=function(_0x2b7d58,_0x32802b){_0x2b7d58=_0x2b7d58-0x0;var _0x3037d9=_0x2ef3[_0x2b7d58];return _0x3037d9;};'use strict';var client=require(_0x32ef('0x0'));exports[_0x32ef('0x1')]=function(){return function(_0x47513a){return client[_0x32ef('0x2')](_0x32ef('0x3'),{'options':{'raw':![],'attributes':['id',_0x32ef('0x4'),'description',_0x32ef('0x5'),_0x32ef('0x6'),'email',_0x32ef('0x7'),_0x32ef('0x8')],'include':[{'model':'ServicenowConfiguration','as':'Configurations','attributes':['id',_0x32ef('0x4')],'include':[{'model':_0x32ef('0x9'),'as':_0x32ef('0xa'),'attributes':['id',_0x32ef('0xb'),_0x32ef('0xc'),_0x32ef('0xd')],'include':[{'model':_0x32ef('0xe'),'as':_0x32ef('0xe'),'attributes':['id',_0x32ef('0x4')]}]},{'model':_0x32ef('0x9'),'as':'Descriptions','attributes':['id','type',_0x32ef('0xc'),_0x32ef('0xf'),_0x32ef('0x10'),_0x32ef('0x11'),'variableName'],'include':[{'model':_0x32ef('0xe'),'as':'Variable','attributes':['id',_0x32ef('0x4')]}]},{'model':'ServicenowField','as':_0x32ef('0x12'),'attributes':['id',_0x32ef('0xb'),'content','idField',_0x32ef('0x13'),'customField',_0x32ef('0xd')],'include':[{'model':_0x32ef('0xe'),'as':_0x32ef('0xe'),'attributes':['id',_0x32ef('0x4')]}]}]}]},'log':'GetServicenowkAccount'});};};
\ No newline at end of file
index 237fab6..60449dc 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(_0x10b7c7,_0x2db293){var _0xc79242=function(_0x5e9d25){while(--_0x5e9d25){_0x10b7c7['push'](_0x10b7c7['shift']());}};_0xc79242(++_0x2db293);}(_0x5f66,0x1a0));var _0x65f6=function(_0x4c12ec,_0x2e9103){_0x4c12ec=_0x4c12ec-0x0;var _0x3ae42c=_0x5f66[_0x4c12ec];return _0x3ae42c;};'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 _0x57ca=['name','username','password','remoteUri','SugarcrmConfiguration','Configurations','SugarcrmField','Subjects','type','content','variableName','Variable','Descriptions','keyType','keyContent','Fields','nameField','getSugarcrmAccounts','GetSugarcrmAccount'];(function(_0x4c12ec,_0x2e9103){var _0x3ae42c=function(_0x5a728f){while(--_0x5a728f){_0x4c12ec['push'](_0x4c12ec['shift']());}};_0x3ae42c(++_0x2e9103);}(_0x57ca,0x108));var _0xa57c=function(_0x28d5fc,_0x59be3d){_0x28d5fc=_0x28d5fc-0x0;var _0x5f4d54=_0x57ca[_0x28d5fc];return _0x5f4d54;};'use strict';var client=require('../../client');exports[_0xa57c('0x0')]=function(){return function(_0x4ad696){return client['Request'](_0xa57c('0x1'),{'options':{'raw':![],'attributes':['id',_0xa57c('0x2'),_0xa57c('0x3'),_0xa57c('0x4'),_0xa57c('0x5'),'serverUrl'],'include':[{'model':_0xa57c('0x6'),'as':_0xa57c('0x7'),'attributes':['id',_0xa57c('0x2')],'include':[{'model':_0xa57c('0x8'),'as':_0xa57c('0x9'),'attributes':['id',_0xa57c('0xa'),_0xa57c('0xb'),_0xa57c('0xc')],'include':[{'model':'Variable','as':_0xa57c('0xd'),'attributes':['id','name']}]},{'model':_0xa57c('0x8'),'as':_0xa57c('0xe'),'attributes':['id','type',_0xa57c('0xb'),'key',_0xa57c('0xf'),_0xa57c('0x10'),'variableName'],'include':[{'model':_0xa57c('0xd'),'as':'Variable','attributes':['id',_0xa57c('0x2')]}]},{'model':_0xa57c('0x8'),'as':_0xa57c('0x11'),'attributes':['id',_0xa57c('0xa'),_0xa57c('0xb'),'idField',_0xa57c('0x12'),'customField',_0xa57c('0xc')],'include':[{'model':_0xa57c('0xd'),'as':_0xa57c('0xd'),'attributes':['id',_0xa57c('0x2')]}]}]}]},'log':_0xa57c('0x1')});};};
\ No newline at end of file
index 8a57914..fcb5d06 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb6b=['getVtigerAccounts','Request','name','description','accessKey','serverUrl','VtigerField','Subjects','type','content','variableName','Variable','key','idField','nameField','customField','GetVtigerAccount','../../client'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xbb6b,0x179));var _0xbbb6=function(_0x5d4d43,_0x3a83c5){_0x5d4d43=_0x5d4d43-0x0;var _0x41feda=_0xbb6b[_0x5d4d43];return _0x41feda;};'use strict';var client=require(_0xbbb6('0x0'));exports[_0xbbb6('0x1')]=function(){return function(_0x5ea59b){return client[_0xbbb6('0x2')]('GetVtigerAccount',{'options':{'raw':![],'attributes':['id',_0xbbb6('0x3'),_0xbbb6('0x4'),'username',_0xbbb6('0x5'),'remoteUri',_0xbbb6('0x6')],'include':[{'model':'VtigerConfiguration','as':'Configurations','attributes':['id',_0xbbb6('0x3')],'include':[{'model':_0xbbb6('0x7'),'as':_0xbbb6('0x8'),'attributes':['id',_0xbbb6('0x9'),_0xbbb6('0xa'),_0xbbb6('0xb')],'include':[{'model':_0xbbb6('0xc'),'as':'Variable','attributes':['id',_0xbbb6('0x3')]}]},{'model':_0xbbb6('0x7'),'as':'Descriptions','attributes':['id','type',_0xbbb6('0xa'),_0xbbb6('0xd'),'keyType','keyContent',_0xbbb6('0xb')],'include':[{'model':_0xbbb6('0xc'),'as':_0xbbb6('0xc'),'attributes':['id',_0xbbb6('0x3')]}]},{'model':'VtigerField','as':'Fields','attributes':['id',_0xbbb6('0x9'),_0xbbb6('0xa'),_0xbbb6('0xe'),_0xbbb6('0xf'),_0xbbb6('0x10'),'variableName'],'include':[{'model':_0xbbb6('0xc'),'as':'Variable','attributes':['id',_0xbbb6('0x3')]}]}]}]},'log':_0xbbb6('0x11')});};};
\ No newline at end of file
+var _0xbc5b=['remoteUri','serverUrl','VtigerConfiguration','VtigerField','Subjects','type','content','Variable','Descriptions','keyType','keyContent','Fields','nameField','customField','variableName','../../client','getVtigerAccounts','Request','GetVtigerAccount','name','description','username'];(function(_0x59f4a5,_0x5d4944){var _0x38f1a7=function(_0x1e1b06){while(--_0x1e1b06){_0x59f4a5['push'](_0x59f4a5['shift']());}};_0x38f1a7(++_0x5d4944);}(_0xbc5b,0xbf));var _0xbbc5=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0xbc5b[_0x4565bf];return _0x5610ba;};'use strict';var client=require(_0xbbc5('0x0'));exports[_0xbbc5('0x1')]=function(){return function(_0x30c078){return client[_0xbbc5('0x2')](_0xbbc5('0x3'),{'options':{'raw':![],'attributes':['id',_0xbbc5('0x4'),_0xbbc5('0x5'),_0xbbc5('0x6'),'accessKey',_0xbbc5('0x7'),_0xbbc5('0x8')],'include':[{'model':_0xbbc5('0x9'),'as':'Configurations','attributes':['id',_0xbbc5('0x4')],'include':[{'model':_0xbbc5('0xa'),'as':_0xbbc5('0xb'),'attributes':['id',_0xbbc5('0xc'),_0xbbc5('0xd'),'variableName'],'include':[{'model':_0xbbc5('0xe'),'as':_0xbbc5('0xe'),'attributes':['id',_0xbbc5('0x4')]}]},{'model':_0xbbc5('0xa'),'as':_0xbbc5('0xf'),'attributes':['id',_0xbbc5('0xc'),_0xbbc5('0xd'),'key',_0xbbc5('0x10'),_0xbbc5('0x11'),'variableName'],'include':[{'model':_0xbbc5('0xe'),'as':_0xbbc5('0xe'),'attributes':['id','name']}]},{'model':_0xbbc5('0xa'),'as':_0xbbc5('0x12'),'attributes':['id',_0xbbc5('0xc'),_0xbbc5('0xd'),'idField',_0xbbc5('0x13'),_0xbbc5('0x14'),_0xbbc5('0x15')],'include':[{'model':_0xbbc5('0xe'),'as':_0xbbc5('0xe'),'attributes':['id',_0xbbc5('0x4')]}]}]}]},'log':_0xbbc5('0x3')});};};
\ No newline at end of file
index 9e9fecf..d2eb4e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7793=['serverUrl','type','Configurations','ZendeskField','Subjects','variableName','Variable','content','key','keyType','nameField','customField','getZendeskAccounts','Request','name','username','password','token','remoteUri','authType'];(function(_0x1d7613,_0x2ba19b){var _0x5ec5bf=function(_0x104226){while(--_0x104226){_0x1d7613['push'](_0x1d7613['shift']());}};_0x5ec5bf(++_0x2ba19b);}(_0x7793,0x19c));var _0x3779=function(_0xee1aea,_0x35f0d8){_0xee1aea=_0xee1aea-0x0;var _0x4686de=_0x7793[_0xee1aea];return _0x4686de;};'use strict';var client=require('../../client');exports[_0x3779('0x0')]=function(){return function(_0x419ebf){return client[_0x3779('0x1')]('GetZendeskAccount',{'options':{'raw':![],'attributes':['id',_0x3779('0x2'),_0x3779('0x3'),_0x3779('0x4'),_0x3779('0x5'),_0x3779('0x6'),_0x3779('0x7'),_0x3779('0x8'),_0x3779('0x9')],'include':[{'model':'ZendeskConfiguration','as':_0x3779('0xa'),'attributes':['id',_0x3779('0x2')],'include':[{'model':'Tag','attributes':['id','name']},{'model':_0x3779('0xb'),'as':_0x3779('0xc'),'attributes':['id',_0x3779('0x9'),'content',_0x3779('0xd')],'include':[{'model':'Variable','as':_0x3779('0xe'),'attributes':['id',_0x3779('0x2')]}]},{'model':_0x3779('0xb'),'as':'Descriptions','attributes':['id',_0x3779('0x9'),_0x3779('0xf'),_0x3779('0x10'),_0x3779('0x11'),'keyContent',_0x3779('0xd')],'include':[{'model':'Variable','as':_0x3779('0xe'),'attributes':['id',_0x3779('0x2')]}]},{'model':_0x3779('0xb'),'as':'Fields','attributes':['id',_0x3779('0x9'),_0x3779('0xf'),'idField',_0x3779('0x12'),_0x3779('0x13'),'variableName'],'include':[{'model':_0x3779('0xe'),'as':'Variable','attributes':['id',_0x3779('0x2')]}]}]}]},'log':'GetZendeskAccount'});};};
\ No newline at end of file
+var _0xb765=['Configurations','Tag','ZendeskField','content','variableName','Variable','Descriptions','key','keyType','keyContent','Fields','nameField','customField','../../client','getZendeskAccounts','Request','GetZendeskAccount','name','username','password','token','remoteUri','authType','serverUrl','type','ZendeskConfiguration'];(function(_0x80303c,_0x565556){var _0x532ee0=function(_0x410ab3){while(--_0x410ab3){_0x80303c['push'](_0x80303c['shift']());}};_0x532ee0(++_0x565556);}(_0xb765,0xdd));var _0x5b76=function(_0x8c43de,_0x90ff31){_0x8c43de=_0x8c43de-0x0;var _0xa6591b=_0xb765[_0x8c43de];return _0xa6591b;};'use strict';var client=require(_0x5b76('0x0'));exports[_0x5b76('0x1')]=function(){return function(_0x4abe34){return client[_0x5b76('0x2')](_0x5b76('0x3'),{'options':{'raw':![],'attributes':['id',_0x5b76('0x4'),_0x5b76('0x5'),_0x5b76('0x6'),_0x5b76('0x7'),_0x5b76('0x8'),_0x5b76('0x9'),_0x5b76('0xa'),_0x5b76('0xb')],'include':[{'model':_0x5b76('0xc'),'as':_0x5b76('0xd'),'attributes':['id',_0x5b76('0x4')],'include':[{'model':_0x5b76('0xe'),'attributes':['id','name']},{'model':_0x5b76('0xf'),'as':'Subjects','attributes':['id',_0x5b76('0xb'),_0x5b76('0x10'),_0x5b76('0x11')],'include':[{'model':_0x5b76('0x12'),'as':_0x5b76('0x12'),'attributes':['id',_0x5b76('0x4')]}]},{'model':'ZendeskField','as':_0x5b76('0x13'),'attributes':['id',_0x5b76('0xb'),_0x5b76('0x10'),_0x5b76('0x14'),_0x5b76('0x15'),_0x5b76('0x16'),'variableName'],'include':[{'model':_0x5b76('0x12'),'as':_0x5b76('0x12'),'attributes':['id',_0x5b76('0x4')]}]},{'model':_0x5b76('0xf'),'as':_0x5b76('0x17'),'attributes':['id','type','content','idField',_0x5b76('0x18'),_0x5b76('0x19'),_0x5b76('0x11')],'include':[{'model':'Variable','as':_0x5b76('0x12'),'attributes':['id',_0x5b76('0x4')]}]}]}]},'log':_0x5b76('0x3')});};};
\ No newline at end of file
index 04f57bf..c63a55e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3446=['description','zone','clientId','clientSecret','serverUrl','refreshToken','ZohoConfiguration','Configurations','name','ZohoField','Subjects','type','content','variableName','Variable','Descriptions','key','keyContent','idField','nameField','customField','../../client','getZohoAccounts','Request','GetZohoAccount'];(function(_0x312a82,_0x2b2c72){var _0x18fce9=function(_0x1b3b3b){while(--_0x1b3b3b){_0x312a82['push'](_0x312a82['shift']());}};_0x18fce9(++_0x2b2c72);}(_0x3446,0x10f));var _0x6344=function(_0x373cb3,_0xcafbd2){_0x373cb3=_0x373cb3-0x0;var _0x5884e3=_0x3446[_0x373cb3];return _0x5884e3;};'use strict';var client=require(_0x6344('0x0'));exports[_0x6344('0x1')]=function(){return function(_0x55818b){return client[_0x6344('0x2')](_0x6344('0x3'),{'options':{'raw':![],'attributes':['id','name',_0x6344('0x4'),'host',_0x6344('0x5'),_0x6344('0x6'),_0x6344('0x7'),_0x6344('0x8'),'code',_0x6344('0x9')],'include':[{'model':_0x6344('0xa'),'as':_0x6344('0xb'),'attributes':['id',_0x6344('0xc'),'moduleCreate','moduleSearch',_0x6344('0x4')],'include':[{'model':_0x6344('0xd'),'as':_0x6344('0xe'),'attributes':['id',_0x6344('0xf'),_0x6344('0x10'),_0x6344('0x11')],'include':[{'model':_0x6344('0x12'),'as':'Variable','attributes':['id',_0x6344('0xc')]}]},{'model':_0x6344('0xd'),'as':_0x6344('0x13'),'attributes':['id',_0x6344('0xf'),'content',_0x6344('0x14'),'keyType',_0x6344('0x15'),_0x6344('0x11')],'include':[{'model':_0x6344('0x12'),'as':_0x6344('0x12'),'attributes':['id','name']}]},{'model':_0x6344('0xd'),'as':'Fields','attributes':['id',_0x6344('0xf'),_0x6344('0x10'),_0x6344('0x16'),_0x6344('0x17'),_0x6344('0x18'),_0x6344('0x11')],'include':[{'model':_0x6344('0x12'),'as':_0x6344('0x12'),'attributes':['id',_0x6344('0xc')]}]}]}]},'log':_0x6344('0x3')});};};
\ No newline at end of file
+var _0x800b=['GetZohoAccount','name','host','zone','clientId','clientSecret','serverUrl','code','refreshToken','ZohoConfiguration','Configurations','description','Subjects','type','content','variableName','Variable','Descriptions','key','ZohoField','Fields','idField','nameField','customField','getZohoAccounts','Request'];(function(_0x25f4d1,_0x461cca){var _0xe797c6=function(_0x37b4ca){while(--_0x37b4ca){_0x25f4d1['push'](_0x25f4d1['shift']());}};_0xe797c6(++_0x461cca);}(_0x800b,0x184));var _0xb800=function(_0x7791d5,_0xdab65f){_0x7791d5=_0x7791d5-0x0;var _0x5ce288=_0x800b[_0x7791d5];return _0x5ce288;};'use strict';var client=require('../../client');exports[_0xb800('0x0')]=function(){return function(_0x4128dc){return client[_0xb800('0x1')](_0xb800('0x2'),{'options':{'raw':![],'attributes':['id',_0xb800('0x3'),'description',_0xb800('0x4'),_0xb800('0x5'),_0xb800('0x6'),_0xb800('0x7'),_0xb800('0x8'),_0xb800('0x9'),_0xb800('0xa')],'include':[{'model':_0xb800('0xb'),'as':_0xb800('0xc'),'attributes':['id','name','moduleCreate','moduleSearch',_0xb800('0xd')],'include':[{'model':'ZohoField','as':_0xb800('0xe'),'attributes':['id',_0xb800('0xf'),_0xb800('0x10'),_0xb800('0x11')],'include':[{'model':_0xb800('0x12'),'as':_0xb800('0x12'),'attributes':['id',_0xb800('0x3')]}]},{'model':'ZohoField','as':_0xb800('0x13'),'attributes':['id',_0xb800('0xf'),'content',_0xb800('0x14'),'keyType','keyContent',_0xb800('0x11')],'include':[{'model':'Variable','as':_0xb800('0x12'),'attributes':['id','name']}]},{'model':_0xb800('0x15'),'as':_0xb800('0x16'),'attributes':['id',_0xb800('0xf'),_0xb800('0x10'),_0xb800('0x17'),_0xb800('0x18'),_0xb800('0x19'),_0xb800('0x11')],'include':[{'model':_0xb800('0x12'),'as':_0xb800('0x12'),'attributes':['id','name']}]}]}]},'log':_0xb800('0x2')});};};
\ No newline at end of file
index 8b0e8df..d4590ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x797e=['every','number','string','map','interval','concat','IntervalIftime','intervalIftime','../../../config/logger','stack','replace','trim','silly','isArray','length'];(function(_0x5cbd23,_0x577752){var _0x17f317=function(_0x19a0b2){while(--_0x19a0b2){_0x5cbd23['push'](_0x5cbd23['shift']());}};_0x17f317(++_0x577752);}(_0x797e,0x107));var _0xe797=function(_0x5164ed,_0x201b84){_0x5164ed=_0x5164ed-0x0;var _0x5c1fca=_0x797e[_0x5164ed];return _0x5c1fca;};var logger=require(_0xe797('0x0'))('dialer');var client=require('../client');function intervalIftime(_0x37b6c1,_0x599e5e){const _0x10d514=new Error()[_0xe797('0x1')][_0xe797('0x2')](/^Error/,'')[_0xe797('0x3')]();logger[_0xe797('0x4')]('intervalIftime\x20called\x20with',_0x37b6c1,_0x599e5e,_0x10d514);const _0x3a9576=Array[_0xe797('0x5')](_0x37b6c1);if(!_0x37b6c1||_0x3a9576&&_0x37b6c1[_0xe797('0x6')]===0x0){return Promise['resolve'](![]);}else{var _0x51c14f=[];var _0x457ef2=[];var _0x184f44=_0x3a9576?_0x37b6c1:[_0x37b6c1];var _0x3776bc=_0x184f44[_0xe797('0x7')](function(_0x337491){return typeof _0x337491===_0xe797('0x8');});var _0xcf03c2=_0x184f44[_0xe797('0x7')](function(_0x49e844){return typeof _0x49e844===_0xe797('0x9');});if(!_0x3776bc&&!_0xcf03c2){_0x51c14f=_0x184f44[_0xe797('0xa')](function(_0xb065ce){return _0xb065ce['id'];});if(_0x51c14f[_0xe797('0x6')]===0x0){_0x457ef2=_0x184f44['map'](function(_0x43f3ed){return _0x43f3ed[_0xe797('0xb')];});}}else{if(_0x3776bc){_0x51c14f=_0x51c14f[_0xe797('0xc')](_0x184f44);}if(_0xcf03c2){_0x457ef2=_0x457ef2[_0xe797('0xc')](_0x184f44);}}return client['Request'](_0xe797('0xd'),{'intervalIds':_0x51c14f,'intervals':_0x457ef2,'timezone':_0x599e5e,'log':'IntervalIftime'});}}exports[_0xe797('0xe')]=intervalIftime;
\ No newline at end of file
+var _0xabfe=['../client','stack','replace','trim','silly','intervalIftime\x20called\x20with','isArray','length','resolve','every','string','map','interval','concat','Request','IntervalIftime','intervalIftime','../../../config/logger','dialer'];(function(_0x425755,_0x16e311){var _0x38c60b=function(_0x22a7fa){while(--_0x22a7fa){_0x425755['push'](_0x425755['shift']());}};_0x38c60b(++_0x16e311);}(_0xabfe,0x1a0));var _0xeabf=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xabfe[_0x3dd15e];return _0x231fd0;};var logger=require(_0xeabf('0x0'))(_0xeabf('0x1'));var client=require(_0xeabf('0x2'));function intervalIftime(_0x181326,_0xd62eac){const _0x30ccb2=new Error()[_0xeabf('0x3')][_0xeabf('0x4')](/^Error/,'')[_0xeabf('0x5')]();logger[_0xeabf('0x6')](_0xeabf('0x7'),_0x181326,_0xd62eac,_0x30ccb2);const _0x51debc=Array[_0xeabf('0x8')](_0x181326);if(!_0x181326||_0x51debc&&_0x181326[_0xeabf('0x9')]===0x0){return Promise[_0xeabf('0xa')](![]);}else{var _0x2bed5a=[];var _0x242797=[];var _0x38e45d=_0x51debc?_0x181326:[_0x181326];var _0x1548ce=_0x38e45d[_0xeabf('0xb')](function(_0x2872be){return typeof _0x2872be==='number';});var _0x1b6a1f=_0x38e45d['every'](function(_0x21e851){return typeof _0x21e851===_0xeabf('0xc');});if(!_0x1548ce&&!_0x1b6a1f){_0x2bed5a=_0x38e45d[_0xeabf('0xd')](function(_0xfa1051){return _0xfa1051['id'];});if(_0x2bed5a[_0xeabf('0x9')]===0x0){_0x242797=_0x38e45d[_0xeabf('0xd')](function(_0x47590d){return _0x47590d[_0xeabf('0xe')];});}}else{if(_0x1548ce){_0x2bed5a=_0x2bed5a[_0xeabf('0xf')](_0x38e45d);}if(_0x1b6a1f){_0x242797=_0x242797[_0xeabf('0xf')](_0x38e45d);}}return client[_0xeabf('0x10')](_0xeabf('0x11'),{'intervalIds':_0x2bed5a,'intervals':_0x242797,'timezone':_0xd62eac,'log':_0xeabf('0x11')});}}exports[_0xeabf('0x12')]=intervalIftime;
\ No newline at end of file
index 0dff53b..f93fe93 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x234f=['seconds','inbound','calleridnum','exten','queue','agent','accountcode','toNumber','uniqueid','starttime','endtime','outbound','dialstring','moment','../client','voiceQueueReport','queuecallercompleteAt','queuecallerexitAt','Request','CreateMemberReport','lastAssignedTo','isNil','interface','format','SIP/%s','TALKING','queuecallerleaveAt','diff'];(function(_0x200082,_0x5db061){var _0x1a9035=function(_0x2f6a54){while(--_0x2f6a54){_0x200082['push'](_0x200082['shift']());}};_0x1a9035(++_0x5db061);}(_0x234f,0xed));var _0xf234=function(_0x44bf1a,_0x7956){_0x44bf1a=_0x44bf1a-0x0;var _0xe43640=_0x234f[_0x44bf1a];return _0xe43640;};'use strict';var moment=require(_0xf234('0x0'));var _=require('lodash');var util=require('util');var client=require(_0xf234('0x1'));exports[_0xf234('0x2')]=function(_0x1a504d){var _0x8fe48=_0x1a504d[_0xf234('0x3')]||_0x1a504d[_0xf234('0x4')];return client[_0xf234('0x5')](_0xf234('0x6'),{'body':{'channel':'voice','membername':_0x1a504d[_0xf234('0x7')],'interface':_[_0xf234('0x8')](_0x1a504d[_0xf234('0x9')])?util[_0xf234('0xa')](_0xf234('0xb'),_0x1a504d['lastAssignedTo']):_0x1a504d[_0xf234('0x9')],'type':_0xf234('0xc'),'enterAt':_0x1a504d[_0xf234('0xd')],'exitAt':_0x8fe48,'duration':moment(_0x8fe48)[_0xf234('0xe')](_0x1a504d[_0xf234('0xd')],_0xf234('0xf')),'data1':_0xf234('0x10'),'data2':_0x1a504d[_0xf234('0x11')],'data3':_0x1a504d[_0xf234('0x12')],'data4':null,'data5':_0x1a504d[_0xf234('0x13')],'role':_0xf234('0x14'),'internal':_0x1a504d[_0xf234('0x15')]?_[_0xf234('0x16')](_0x1a504d[_0xf234('0x15')]):undefined,'uniqueid':_0x1a504d[_0xf234('0x17')]},'log':_0xf234('0x6')});};exports['voiceDialReport']=function(_0x430a54){return client['Request'](_0xf234('0x6'),{'body':{'channel':'voice','membername':_0x430a54['membername'],'interface':_0x430a54[_0xf234('0x9')],'type':'TALKING','enterAt':_0x430a54[_0xf234('0x18')],'exitAt':_0x430a54[_0xf234('0x19')],'duration':moment(_0x430a54[_0xf234('0x19')])[_0xf234('0xe')](_0x430a54['starttime'],'seconds')>=0x0?moment(_0x430a54[_0xf234('0x19')])['diff'](_0x430a54[_0xf234('0x18')],_0xf234('0xf')):null,'data1':_0xf234('0x1a'),'data2':_0x430a54[_0xf234('0x15')],'data3':_0x430a54['exten'],'data4':_0x430a54[_0xf234('0x1b')]||null,'role':_0xf234('0x14'),'internal':_0x430a54[_0xf234('0x15')]?_[_0xf234('0x16')](_0x430a54['accountcode']):undefined,'uniqueid':_0x430a54[_0xf234('0x17')]},'log':_0xf234('0x6')});};
\ No newline at end of file
+var _0x6b3a=['CreateMemberReport','voice','lastAssignedTo','isNil','interface','format','SIP/%s','TALKING','queuecallerleaveAt','seconds','inbound','exten','queue','agent','accountcode','toNumber','voiceDialReport','membername','starttime','endtime','diff','outbound','dialstring','uniqueid','lodash','util','../client','voiceQueueReport','queuecallercompleteAt','queuecallerexitAt','Request'];(function(_0xbc9917,_0x479324){var _0x20ab5a=function(_0x43951d){while(--_0x43951d){_0xbc9917['push'](_0xbc9917['shift']());}};_0x20ab5a(++_0x479324);}(_0x6b3a,0x14e));var _0xa6b3=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x6b3a[_0x3dd15e];return _0x231fd0;};'use strict';var moment=require('moment');var _=require(_0xa6b3('0x0'));var util=require(_0xa6b3('0x1'));var client=require(_0xa6b3('0x2'));exports[_0xa6b3('0x3')]=function(_0x51f655){var _0x280b57=_0x51f655[_0xa6b3('0x4')]||_0x51f655[_0xa6b3('0x5')];return client[_0xa6b3('0x6')](_0xa6b3('0x7'),{'body':{'channel':_0xa6b3('0x8'),'membername':_0x51f655[_0xa6b3('0x9')],'interface':_[_0xa6b3('0xa')](_0x51f655[_0xa6b3('0xb')])?util[_0xa6b3('0xc')](_0xa6b3('0xd'),_0x51f655[_0xa6b3('0x9')]):_0x51f655[_0xa6b3('0xb')],'type':_0xa6b3('0xe'),'enterAt':_0x51f655['queuecallerleaveAt'],'exitAt':_0x280b57,'duration':moment(_0x280b57)['diff'](_0x51f655[_0xa6b3('0xf')],_0xa6b3('0x10')),'data1':_0xa6b3('0x11'),'data2':_0x51f655['calleridnum'],'data3':_0x51f655[_0xa6b3('0x12')],'data4':null,'data5':_0x51f655[_0xa6b3('0x13')],'role':_0xa6b3('0x14'),'internal':_0x51f655[_0xa6b3('0x15')]?_[_0xa6b3('0x16')](_0x51f655['accountcode']):undefined,'uniqueid':_0x51f655['uniqueid']},'log':'CreateMemberReport'});};exports[_0xa6b3('0x17')]=function(_0x4e3f20){return client[_0xa6b3('0x6')]('CreateMemberReport',{'body':{'channel':_0xa6b3('0x8'),'membername':_0x4e3f20[_0xa6b3('0x18')],'interface':_0x4e3f20[_0xa6b3('0xb')],'type':_0xa6b3('0xe'),'enterAt':_0x4e3f20[_0xa6b3('0x19')],'exitAt':_0x4e3f20[_0xa6b3('0x1a')],'duration':moment(_0x4e3f20[_0xa6b3('0x1a')])[_0xa6b3('0x1b')](_0x4e3f20[_0xa6b3('0x19')],_0xa6b3('0x10'))>=0x0?moment(_0x4e3f20['endtime'])[_0xa6b3('0x1b')](_0x4e3f20[_0xa6b3('0x19')],'seconds'):null,'data1':_0xa6b3('0x1c'),'data2':_0x4e3f20[_0xa6b3('0x15')],'data3':_0x4e3f20['exten'],'data4':_0x4e3f20[_0xa6b3('0x1d')]||null,'role':'agent','internal':_0x4e3f20[_0xa6b3('0x15')]?_[_0xa6b3('0x16')](_0x4e3f20[_0xa6b3('0x15')]):undefined,'uniqueid':_0x4e3f20[_0xa6b3('0x1e')]},'log':'CreateMemberReport'});};
\ No newline at end of file
index 6758dc4..3dd1642 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc692=['GetSettings','../client','getSettings','Request','previewRecallmeReminderInterval'];(function(_0x1db481,_0x1627b2){var _0x3db95b=function(_0x2d54e4){while(--_0x2d54e4){_0x1db481['push'](_0x1db481['shift']());}};_0x3db95b(++_0x1627b2);}(_0xc692,0x15f));var _0x2c69=function(_0xdea41a,_0x552987){_0xdea41a=_0xdea41a-0x0;var _0x15d0d8=_0xc692[_0xdea41a];return _0x15d0d8;};'use strict';var client=require(_0x2c69('0x0'));exports[_0x2c69('0x1')]=function(){return client[_0x2c69('0x2')]('ShowSetting',{'options':{'raw':!![],'where':{'id':0x1},'attributes':['stopRecordingOnTransfer',_0x2c69('0x3')]},'log':_0x2c69('0x4')});};
\ No newline at end of file
+var _0xd7ab=['Request','ShowSetting','stopRecordingOnTransfer','previewRecallmeReminderInterval','GetSettings','../client','getSettings'];(function(_0x38e870,_0x3d2e6a){var _0x2dabbe=function(_0x3ddea3){while(--_0x3ddea3){_0x38e870['push'](_0x38e870['shift']());}};_0x2dabbe(++_0x3d2e6a);}(_0xd7ab,0x14e));var _0xbd7a=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0xd7ab[_0x501510];return _0x1e6ee5;};'use strict';var client=require(_0xbd7a('0x0'));exports[_0xbd7a('0x1')]=function(){return client[_0xbd7a('0x2')](_0xbd7a('0x3'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0xbd7a('0x4'),_0xbd7a('0x5')]},'log':_0xbd7a('0x6')});};
\ No newline at end of file
index 57046b6..9bade2f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3270=['GetTemplate','html','../client','getTemplates','Request'];(function(_0x504dd8,_0x1396f2){var _0x54db75=function(_0x29e990){while(--_0x29e990){_0x504dd8['push'](_0x504dd8['shift']());}};_0x54db75(++_0x1396f2);}(_0x3270,0x192));var _0x0327=function(_0xa2c0a3,_0x5bbac0){_0xa2c0a3=_0xa2c0a3-0x0;var _0x52c618=_0x3270[_0xa2c0a3];return _0x52c618;};'use strict';var client=require(_0x0327('0x0'));exports[_0x0327('0x1')]=function(_0x1010ee){return function(_0x30202c){return client[_0x0327('0x2')](_0x0327('0x3'),{'options':{'raw':!![],'attributes':['id','name',_0x0327('0x4')]},'log':_0x0327('0x3')});};};
\ No newline at end of file
+var _0xb92a=['name','html','../client','getTemplates','Request','GetTemplate'];(function(_0xec4035,_0x55783f){var _0x420d20=function(_0x591828){while(--_0x591828){_0xec4035['push'](_0xec4035['shift']());}};_0x420d20(++_0x55783f);}(_0xb92a,0xb0));var _0xab92=function(_0x3c367b,_0x5e9502){_0x3c367b=_0x3c367b-0x0;var _0x5df491=_0xb92a[_0x3c367b];return _0x5df491;};'use strict';var client=require(_0xab92('0x0'));exports[_0xab92('0x1')]=function(_0x2e7178){return function(_0x3bbc51){return client[_0xab92('0x2')](_0xab92('0x3'),{'options':{'raw':!![],'attributes':['id',_0xab92('0x4'),_0xab92('0x5')]},'log':_0xab92('0x3')});};};
\ No newline at end of file
index 13efe51..871821f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7bc8=['data6','GetTrigger','../client','getTriggers','name','status','Condition','value','field','Action','action','data4'];(function(_0x92c450,_0x41f1e3){var _0x2a9599=function(_0x4f27df){while(--_0x4f27df){_0x92c450['push'](_0x92c450['shift']());}};_0x2a9599(++_0x41f1e3);}(_0x7bc8,0x1ca));var _0x87bc=function(_0x14f150,_0x29c949){_0x14f150=_0x14f150-0x0;var _0x3f7036=_0x7bc8[_0x14f150];return _0x3f7036;};'use strict';var client=require(_0x87bc('0x0'));exports[_0x87bc('0x1')]=function(_0x1f35ba){return function(_0x619dfc){return client['Request']('GetTrigger',{'options':{'raw':![],'attributes':['id',_0x87bc('0x2'),'channel',_0x87bc('0x3')],'include':[{'model':_0x87bc('0x4'),'as':'AllConditions','attributes':['id','field','operator',_0x87bc('0x5')]},{'model':_0x87bc('0x4'),'as':'AnyConditions','attributes':['id',_0x87bc('0x6'),'operator','value']},{'model':_0x87bc('0x7'),'as':'Actions','attributes':['id',_0x87bc('0x8'),'data1','data2','data3',_0x87bc('0x9'),'data5',_0x87bc('0xa'),'data7']}]},'log':_0x87bc('0xb')});};};
\ No newline at end of file
+var _0x0c4b=['name','channel','status','Condition','operator','AnyConditions','field','value','Action','action','data1','data2','data3','data4','data5','data7','../client','getTriggers','GetTrigger'];(function(_0x2a3b8d,_0xa16d0a){var _0x3e12c5=function(_0x5e5d63){while(--_0x5e5d63){_0x2a3b8d['push'](_0x2a3b8d['shift']());}};_0x3e12c5(++_0xa16d0a);}(_0x0c4b,0xce));var _0xb0c4=function(_0xfc0021,_0x336a32){_0xfc0021=_0xfc0021-0x0;var _0x5f392c=_0x0c4b[_0xfc0021];return _0x5f392c;};'use strict';var client=require(_0xb0c4('0x0'));exports[_0xb0c4('0x1')]=function(_0x2bb4a2){return function(_0x4ff259){return client['Request'](_0xb0c4('0x2'),{'options':{'raw':![],'attributes':['id',_0xb0c4('0x3'),_0xb0c4('0x4'),_0xb0c4('0x5')],'include':[{'model':_0xb0c4('0x6'),'as':'AllConditions','attributes':['id','field',_0xb0c4('0x7'),'value']},{'model':'Condition','as':_0xb0c4('0x8'),'attributes':['id',_0xb0c4('0x9'),_0xb0c4('0x7'),_0xb0c4('0xa')]},{'model':_0xb0c4('0xb'),'as':'Actions','attributes':['id',_0xb0c4('0xc'),_0xb0c4('0xd'),_0xb0c4('0xe'),_0xb0c4('0xf'),_0xb0c4('0x10'),_0xb0c4('0x11'),'data6',_0xb0c4('0x12')]}]},'log':'GetTrigger'});};};
\ No newline at end of file
index 9b0e19f..0c0353c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd493=['defaultuser','../client','GetTrunk'];(function(_0x452139,_0x4bdd9e){var _0x13abcb=function(_0x31a75c){while(--_0x31a75c){_0x452139['push'](_0x452139['shift']());}};_0x13abcb(++_0x4bdd9e);}(_0xd493,0x1bd));var _0x3d49=function(_0x182d52,_0x5c4bc9){_0x182d52=_0x182d52-0x0;var _0x178a6f=_0xd493[_0x182d52];return _0x178a6f;};'use strict';var client=require(_0x3d49('0x0'));exports['getTrunks']=function(_0x1391ea){return function(_0x14193e){return client['Request'](_0x3d49('0x1'),{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id','name','registry',_0x3d49('0x2')]},'log':_0x3d49('0x1')});};};
\ No newline at end of file
+var _0x575b=['../client','getTrunks','Request','name','registry','GetTrunk'];(function(_0x509e3a,_0x36d45f){var _0x1fb236=function(_0x54ed68){while(--_0x54ed68){_0x509e3a['push'](_0x509e3a['shift']());}};_0x1fb236(++_0x36d45f);}(_0x575b,0x1e0));var _0xb575=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0x575b[_0x59ee6f];return _0x4c0979;};'use strict';var client=require(_0xb575('0x0'));exports[_0xb575('0x1')]=function(_0x3106c3){return function(_0x38202a){return client[_0xb575('0x2')]('GetTrunk',{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id',_0xb575('0x3'),_0xb575('0x4'),'defaultuser']},'log':_0xb575('0x5')});};};
\ No newline at end of file
index 53da59d..db2ccf3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e0=['getAgents','Request','name','email','accountcode','fullname','lastLoginAt','lastPauseAt','interface','getTelephones','GetUser','telephone','savePause','PauseUser','saveUnpause','getAgent','agent','online','pauseType','../client'];(function(_0x19d9e5,_0x1367a8){var _0x4742c9=function(_0x50418d){while(--_0x50418d){_0x19d9e5['push'](_0x19d9e5['shift']());}};_0x4742c9(++_0x1367a8);}(_0x70e0,0x17b));var _0x070e=function(_0x1a1c1e,_0x2c9bed){_0x1a1c1e=_0x1a1c1e-0x0;var _0x10999d=_0x70e0[_0x1a1c1e];return _0x10999d;};'use strict';var client=require(_0x070e('0x0'));exports[_0x070e('0x1')]=function(){return function(){return client[_0x070e('0x2')]('GetUser',{'options':{'raw':![],'where':{'role':'agent'},'attributes':['id',_0x070e('0x3'),_0x070e('0x4'),_0x070e('0x5'),_0x070e('0x6'),'online',_0x070e('0x7'),'pauseType',_0x070e('0x8'),'voicePause','phone','mobile',_0x070e('0x9')]},'log':_0x070e('0x1')});};};exports[_0x070e('0xa')]=function(){return function(){return client[_0x070e('0x2')](_0x070e('0xb'),{'options':{'raw':!![],'where':{'role':_0x070e('0xc')},'attributes':['id',_0x070e('0x3'),'accountcode','internal']},'log':_0x070e('0xa')});};};exports[_0x070e('0xd')]=function(_0x12bb37,_0xb8d819,_0xa927a2){return client[_0x070e('0x2')](_0x070e('0xe'),{'body':{'type':_0xb8d819,'uniqueid':_0xa927a2},'options':{'where':{'id':_0x12bb37['id']}},'log':_0x070e('0xd')});};exports[_0x070e('0xf')]=function(_0x5bf079){return client[_0x070e('0x2')]('UnpauseUser',{'body':{},'options':{'where':{'id':_0x5bf079['id']}},'log':'savePause'});};exports[_0x070e('0x10')]=function(_0x56c7ba){return client['Request']('ShowUser',{'options':{'raw':![],'where':{'role':_0x070e('0x11'),'id':_0x56c7ba},'attributes':['id',_0x070e('0x3'),'email','accountcode',_0x070e('0x6'),_0x070e('0x12'),_0x070e('0x7'),_0x070e('0x13'),'lastPauseAt','voicePause',_0x070e('0x9')]},'log':_0x070e('0x10')});};
\ No newline at end of file
+var _0x0713=['getAgent','Request','GetUser','agent','name','email','fullname','online','lastLoginAt','pauseType','lastPauseAt','voicePause','phone','mobile','interface','getAgents','getTelephones','accountcode','internal','savePause','PauseUser'];(function(_0x418046,_0x1871f9){var _0x2bbf69=function(_0x62634e){while(--_0x62634e){_0x418046['push'](_0x418046['shift']());}};_0x2bbf69(++_0x1871f9);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var client=require('../client');exports['getAgents']=function(){return function(){return client[_0x3071('0x0')](_0x3071('0x1'),{'options':{'raw':![],'where':{'role':_0x3071('0x2')},'attributes':['id',_0x3071('0x3'),_0x3071('0x4'),'accountcode',_0x3071('0x5'),_0x3071('0x6'),_0x3071('0x7'),_0x3071('0x8'),_0x3071('0x9'),_0x3071('0xa'),_0x3071('0xb'),_0x3071('0xc'),_0x3071('0xd')]},'log':_0x3071('0xe')});};};exports[_0x3071('0xf')]=function(){return function(){return client[_0x3071('0x0')](_0x3071('0x1'),{'options':{'raw':!![],'where':{'role':'telephone'},'attributes':['id',_0x3071('0x3'),_0x3071('0x10'),_0x3071('0x11')]},'log':_0x3071('0xf')});};};exports[_0x3071('0x12')]=function(_0x4a470a,_0x2ace21,_0x11a7ee){return client[_0x3071('0x0')](_0x3071('0x13'),{'body':{'type':_0x2ace21,'uniqueid':_0x11a7ee},'options':{'where':{'id':_0x4a470a['id']}},'log':_0x3071('0x12')});};exports['saveUnpause']=function(_0x5330a8){return client[_0x3071('0x0')]('UnpauseUser',{'body':{},'options':{'where':{'id':_0x5330a8['id']}},'log':_0x3071('0x12')});};exports[_0x3071('0x14')]=function(_0x5d4883){return client[_0x3071('0x0')]('ShowUser',{'options':{'raw':![],'where':{'role':_0x3071('0x2'),'id':_0x5d4883},'attributes':['id',_0x3071('0x3'),_0x3071('0x4'),_0x3071('0x10'),_0x3071('0x5'),_0x3071('0x6'),_0x3071('0x7'),_0x3071('0x8'),_0x3071('0x9'),_0x3071('0xa'),'interface']},'log':_0x3071('0x14')});};
\ No newline at end of file
index e78d553..0b7f135 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a9a=['UpdateVoiceAgentReport','create','CreateVoiceAgentReport','update','Request'];(function(_0x18efbf,_0xbe0214){var _0x22a8ad=function(_0x2ed306){while(--_0x2ed306){_0x18efbf['push'](_0x18efbf['shift']());}};_0x22a8ad(++_0xbe0214);}(_0x6a9a,0x6a));var _0xa6a9=function(_0x5805d7,_0x3d584a){_0x5805d7=_0x5805d7-0x0;var _0x170fe4=_0x6a9a[_0x5805d7];return _0x170fe4;};'use strict';var client=require('../client');exports[_0xa6a9('0x0')]=function(_0x2fb4cc){return client['Request'](_0xa6a9('0x1'),{'body':_0x2fb4cc,'log':_0xa6a9('0x1')});};exports[_0xa6a9('0x2')]=function(_0x14ef7e,_0x2c8c16,_0x365482){return client[_0xa6a9('0x3')]('UpdateVoiceAgentReport',{'body':_0x14ef7e,'options':{'where':{'uniqueid':_0x2c8c16,'interface':_0x365482,'agentcomplete':!![]}},'log':_0xa6a9('0x4')});};
\ No newline at end of file
+var _0x5ad5=['Request','CreateVoiceAgentReport','update','UpdateVoiceAgentReport','../client','create'];(function(_0x160c73,_0x2ee678){var _0xd9302=function(_0x169454){while(--_0x169454){_0x160c73['push'](_0x160c73['shift']());}};_0xd9302(++_0x2ee678);}(_0x5ad5,0x136));var _0x55ad=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0x5ad5[_0x432682];return _0x463d05;};'use strict';var client=require(_0x55ad('0x0'));exports[_0x55ad('0x1')]=function(_0x52ff2b){return client[_0x55ad('0x2')](_0x55ad('0x3'),{'body':_0x52ff2b,'log':_0x55ad('0x3')});};exports[_0x55ad('0x4')]=function(_0x310fe4,_0x18d898,_0x141916){return client['Request']('UpdateVoiceAgentReport',{'body':_0x310fe4,'options':{'where':{'uniqueid':_0x18d898,'interface':_0x141916,'agentcomplete':!![]}},'log':_0x55ad('0x5')});};
\ No newline at end of file
index 1d9c207..e230300 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0bf0=['type','util','../client','Request','merge','calleridnum','context','callerid','DOCUMENTATION','CreateVoiceCallReport','getVoiceCallReports','GetVoiceCallReport','outbound','startOf','day','format','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x3ff085,_0x27c92e){var _0x2b68c3=function(_0x37811e){while(--_0x37811e){_0x3ff085['push'](_0x3ff085['shift']());}};_0x2b68c3(++_0x27c92e);}(_0x0bf0,0xde));var _0x00bf=function(_0x523301,_0x44187d){_0x523301=_0x523301-0x0;var _0x24b9ed=_0x0bf0[_0x523301];return _0x24b9ed;};'use strict';var moment=require('moment');var util=require(_0x00bf('0x0'));var _=require('lodash');var client=require(_0x00bf('0x1'));exports['create']=function(_0x37020c){return client[_0x00bf('0x2')]('CreateVoiceCallReport',{'body':_[_0x00bf('0x3')](_0x37020c,{'source':_0x37020c[_0x00bf('0x4')],'destinationcontext':_0x37020c[_0x00bf('0x5')],'callerid':_0x37020c[_0x00bf('0x6')],'amaflags':_0x00bf('0x7')}),'log':_0x00bf('0x8')});};exports[_0x00bf('0x9')]=function(){return function(){return client[_0x00bf('0x2')](_0x00bf('0xa'),{'options':{'where':{'type':[_0x00bf('0xb')],'createdAt':{'$between':[moment()[_0x00bf('0xc')](_0x00bf('0xd'))[_0x00bf('0xe')](_0x00bf('0xf')),moment()['endOf'](_0x00bf('0xd'))[_0x00bf('0xe')](_0x00bf('0xf'))]}},'attributes':[_0x00bf('0x10'),'disposition','duration','billableseconds']},'log':'GetVoiceCallReports'});};};
\ No newline at end of file
+var _0x3fff=['merge','calleridnum','context','callerid','DOCUMENTATION','getVoiceCallReports','GetVoiceCallReport','outbound','YYYY-MM-DD\x20HH:mm:ss','endOf','day','format','type','disposition','billableseconds','moment','util','lodash','../client','Request','CreateVoiceCallReport'];(function(_0x2be81,_0x11845b){var _0x15facd=function(_0x391407){while(--_0x391407){_0x2be81['push'](_0x2be81['shift']());}};_0x15facd(++_0x11845b);}(_0x3fff,0x8d));var _0xf3ff=function(_0x34651f,_0x1b07dd){_0x34651f=_0x34651f-0x0;var _0x2d88fe=_0x3fff[_0x34651f];return _0x2d88fe;};'use strict';var moment=require(_0xf3ff('0x0'));var util=require(_0xf3ff('0x1'));var _=require(_0xf3ff('0x2'));var client=require(_0xf3ff('0x3'));exports['create']=function(_0x595e8a){return client[_0xf3ff('0x4')](_0xf3ff('0x5'),{'body':_[_0xf3ff('0x6')](_0x595e8a,{'source':_0x595e8a[_0xf3ff('0x7')],'destinationcontext':_0x595e8a[_0xf3ff('0x8')],'callerid':_0x595e8a[_0xf3ff('0x9')],'amaflags':_0xf3ff('0xa')}),'log':_0xf3ff('0x5')});};exports[_0xf3ff('0xb')]=function(){return function(){return client[_0xf3ff('0x4')](_0xf3ff('0xc'),{'options':{'where':{'type':[_0xf3ff('0xd')],'createdAt':{'$between':[moment()['startOf']('day')['format'](_0xf3ff('0xe')),moment()[_0xf3ff('0xf')](_0xf3ff('0x10'))[_0xf3ff('0x11')](_0xf3ff('0xe'))]}},'attributes':[_0xf3ff('0x12'),_0xf3ff('0x13'),'duration',_0xf3ff('0x14')]},'log':'GetVoiceCallReports'});};};
\ No newline at end of file
index cb8b947..6e0e4f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4668=['CreateVoiceDialReport','../client','create','Request'];(function(_0x481901,_0x1feba0){var _0xe78f85=function(_0x48050c){while(--_0x48050c){_0x481901['push'](_0x481901['shift']());}};_0xe78f85(++_0x1feba0);}(_0x4668,0x12d));var _0x8466=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x4668[_0x2641f9];return _0x585741;};'use strict';var client=require(_0x8466('0x0'));exports[_0x8466('0x1')]=function(_0xc586d7){return client[_0x8466('0x2')](_0x8466('0x3'),{'body':_0xc586d7,'log':'CreateVoiceDialReport'});};
\ No newline at end of file
+var _0x0ad5=['create','Request','CreateVoiceDialReport','../client'];(function(_0x1589dd,_0x2b9d22){var _0x1bddd1=function(_0x3687f8){while(--_0x3687f8){_0x1589dd['push'](_0x1589dd['shift']());}};_0x1bddd1(++_0x2b9d22);}(_0x0ad5,0x177));var _0x50ad=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0x0ad5[_0x21a9d9];return _0x46adce;};'use strict';var client=require(_0x50ad('0x0'));exports[_0x50ad('0x1')]=function(_0x870379){return client[_0x50ad('0x2')](_0x50ad('0x3'),{'body':_0x870379,'log':'CreateVoiceDialReport'});};
\ No newline at end of file
index 1b4a091..86ac775 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc112=['recordingFormat','../client','getVoiceExtensions','Request','exten'];(function(_0x22e47a,_0x4ea10c){var _0x15a12a=function(_0x4a097f){while(--_0x4a097f){_0x22e47a['push'](_0x22e47a['shift']());}};_0x15a12a(++_0x4ea10c);}(_0xc112,0xec));var _0x2c11=function(_0x42ba02,_0x19178f){_0x42ba02=_0x42ba02-0x0;var _0x42255b=_0xc112[_0x42ba02];return _0x42255b;};'use strict';var client=require(_0x2c11('0x0'));exports[_0x2c11('0x1')]=function(){return function(){return client[_0x2c11('0x2')]('GetVoiceExtension',{'options':{'raw':!![],'attributes':['id',_0x2c11('0x3'),_0x2c11('0x4')],'where':{'VoiceExtensionId':null}},'log':_0x2c11('0x1')});};};
\ No newline at end of file
+var _0xce3a=['exten','recordingFormat','../client','getVoiceExtensions','Request','GetVoiceExtension'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0xce3a,0x194));var _0xace3=function(_0x4fbf17,_0x100bc2){_0x4fbf17=_0x4fbf17-0x0;var _0x1d0665=_0xce3a[_0x4fbf17];return _0x1d0665;};'use strict';var client=require(_0xace3('0x0'));exports[_0xace3('0x1')]=function(){return function(){return client[_0xace3('0x2')](_0xace3('0x3'),{'options':{'raw':!![],'attributes':['id',_0xace3('0x4'),_0xace3('0x5')],'where':{'VoiceExtensionId':null}},'log':_0xace3('0x1')});};};
\ No newline at end of file
index e797dc1..2f9261e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3841=['GetVoiceQueue','name','acw','acwTimeout','autopause','monitor_format','type','dialActive','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dialPredictiveInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialQueueOptions','dialQueueProject','dialCongestionMaxRetry','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialTimezone','dialGlobalInterval','dialPrefix','dialAMDGreeting','dialAMDTotalAnalysisTime','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','dialAgiAfterHangupAgent','dialQueueProject2','strategy','dialRandomLastDigitCallerIdNumber','dialCutDigit','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','mandatoryDisposition','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','dialPreviewRecallmeReminder','Trunk','callerid','active','Pause','TrunkBackup','Interval','Intervals','interval','../client','getVoiceQueues','Request'];(function(_0x2e0446,_0x4e44e7){var _0x568aae=function(_0x50f9b3){while(--_0x50f9b3){_0x2e0446['push'](_0x2e0446['shift']());}};_0x568aae(++_0x4e44e7);}(_0x3841,0xae));var _0x1384=function(_0x26721d,_0x448ba5){_0x26721d=_0x26721d-0x0;var _0x1035c5=_0x3841[_0x26721d];return _0x1035c5;};'use strict';var client=require(_0x1384('0x0'));exports[_0x1384('0x1')]=function(){return function(){return client[_0x1384('0x2')](_0x1384('0x3'),{'options':{'raw':![],'attributes':['id',_0x1384('0x4'),_0x1384('0x5'),_0x1384('0x6'),_0x1384('0x7'),_0x1384('0x8'),_0x1384('0x9'),_0x1384('0xa'),'dialMethod',_0x1384('0xb'),_0x1384('0xc'),_0x1384('0xd'),_0x1384('0xe'),'dialPredictiveOptimizationPercentage',_0x1384('0xf'),_0x1384('0x10'),_0x1384('0x11'),'dialOriginateTimeout',_0x1384('0x12'),'dialQueueTimeout',_0x1384('0x13'),_0x1384('0x14'),'dialCongestionRetryFrequency',_0x1384('0x15'),_0x1384('0x16'),_0x1384('0x17'),_0x1384('0x18'),_0x1384('0x19'),_0x1384('0x1a'),_0x1384('0x1b'),_0x1384('0x1c'),'dialCheckDuplicateType','dialAMDActive','dialAMDInitialSilence',_0x1384('0x1d'),'dialAMDAfterGreetingSilence',_0x1384('0x1e'),'dialAMDMinWordLength','dialAMDBetweenWordsSilence',_0x1384('0x1f'),_0x1384('0x20'),_0x1384('0x21'),'timeout','dialRecallMeTimeout','dialRecallInQueue','dialOrderByScheduledAt',_0x1384('0x22'),'dialAgiAfterHangupClient',_0x1384('0x23'),_0x1384('0x8'),_0x1384('0x24'),_0x1384('0x25'),_0x1384('0x26'),_0x1384('0x27'),_0x1384('0x28'),_0x1384('0x29'),'dialDropRetryFrequency',_0x1384('0x2a'),_0x1384('0x2b'),_0x1384('0x2c'),'dialMachineRetryFrequency',_0x1384('0x2d'),_0x1384('0x2e'),_0x1384('0x2f'),_0x1384('0x30'),_0x1384('0x31'),'dialPreviewAutoRecallMe',_0x1384('0x32')],'include':[{'model':_0x1384('0x33'),'as':_0x1384('0x33'),'attributes':['id',_0x1384('0x4'),_0x1384('0x34'),_0x1384('0x35')]},{'model':_0x1384('0x36'),'as':'mandatoryDispositionPause','attributes':['id',_0x1384('0x4')]},{'model':_0x1384('0x33'),'as':_0x1384('0x37'),'attributes':['id',_0x1384('0x4'),_0x1384('0x34'),_0x1384('0x35')]},{'model':_0x1384('0x38'),'as':_0x1384('0x38'),'attributes':['id',_0x1384('0x4')],'include':[{'model':_0x1384('0x38'),'as':_0x1384('0x39'),'attributes':['id',_0x1384('0x4'),_0x1384('0x3a')]}]}]},'log':_0x1384('0x1')});};};
\ No newline at end of file
+var _0xfdb5=['dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','timeout','dialRecallMeTimeout','dialAgiAfterHangupAgent','dialQueueProject2','monitor_format','strategy','dialCutDigit','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialMachineMaxRetry','dialAgentRejectRetryFrequency','mandatoryDisposition','dialPredictiveIntervalMaxThreshold','dialPreviewAutoRecallMe','dialPreviewRecallmeReminder','Trunk','callerid','active','Interval','Intervals','interval','../client','getVoiceQueues','Request','name','acw','acwTimeout','type','dialMethod','dialLimitQueue','dialPowerLevel','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialBusyMaxRetry','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialGlobalInterval','dialCheckDuplicateType','dialAMDActive','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime'];(function(_0x1df7b8,_0x2fe5e5){var _0x29d911=function(_0x340121){while(--_0x340121){_0x1df7b8['push'](_0x1df7b8['shift']());}};_0x29d911(++_0x2fe5e5);}(_0xfdb5,0x12f));var _0x5fdb=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xfdb5[_0x122ef9];return _0x42fba0;};'use strict';var client=require(_0x5fdb('0x0'));exports[_0x5fdb('0x1')]=function(){return function(){return client[_0x5fdb('0x2')]('GetVoiceQueue',{'options':{'raw':![],'attributes':['id',_0x5fdb('0x3'),_0x5fdb('0x4'),_0x5fdb('0x5'),'autopause','monitor_format',_0x5fdb('0x6'),'dialActive',_0x5fdb('0x7'),'dialLimitChannel',_0x5fdb('0x8'),_0x5fdb('0x9'),'dialPredictiveOptimization','dialPredictiveOptimizationPercentage','dialPredictiveInterval',_0x5fdb('0xa'),_0x5fdb('0xb'),_0x5fdb('0xc'),_0x5fdb('0xd'),_0x5fdb('0xe'),_0x5fdb('0xf'),_0x5fdb('0x10'),'dialCongestionRetryFrequency',_0x5fdb('0x11'),'dialBusyRetryFrequency',_0x5fdb('0x12'),_0x5fdb('0x13'),_0x5fdb('0x14'),'dialTimezone',_0x5fdb('0x15'),'dialPrefix',_0x5fdb('0x16'),_0x5fdb('0x17'),'dialAMDInitialSilence',_0x5fdb('0x18'),_0x5fdb('0x19'),_0x5fdb('0x1a'),'dialAMDMinWordLength',_0x5fdb('0x1b'),_0x5fdb('0x1c'),_0x5fdb('0x1d'),_0x5fdb('0x1e'),_0x5fdb('0x1f'),_0x5fdb('0x20'),'dialRecallInQueue','dialOrderByScheduledAt',_0x5fdb('0x21'),'dialAgiAfterHangupClient',_0x5fdb('0x22'),_0x5fdb('0x23'),_0x5fdb('0x24'),'dialRandomLastDigitCallerIdNumber',_0x5fdb('0x25'),_0x5fdb('0x26'),_0x5fdb('0x27'),_0x5fdb('0x28'),_0x5fdb('0x29'),_0x5fdb('0x2a'),'dialAbandonedRetryFrequency',_0x5fdb('0x2b'),'dialMachineRetryFrequency','dialAgentRejectMaxRetry',_0x5fdb('0x2c'),_0x5fdb('0x2d'),_0x5fdb('0x2e'),'dialPredictiveIntervalMinThreshold',_0x5fdb('0x2f'),_0x5fdb('0x30')],'include':[{'model':'Trunk','as':_0x5fdb('0x31'),'attributes':['id',_0x5fdb('0x3'),'callerid','active']},{'model':'Pause','as':'mandatoryDispositionPause','attributes':['id',_0x5fdb('0x3')]},{'model':'Trunk','as':'TrunkBackup','attributes':['id',_0x5fdb('0x3'),_0x5fdb('0x32'),_0x5fdb('0x33')]},{'model':'Interval','as':_0x5fdb('0x34'),'attributes':['id',_0x5fdb('0x3')],'include':[{'model':_0x5fdb('0x34'),'as':_0x5fdb('0x35'),'attributes':['id','name',_0x5fdb('0x36')]}]}]},'log':'getVoiceQueues'});};};
\ No newline at end of file
index 426cd82..e3e6e8d 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(_0x1fa569,_0x3f0440){var _0x5c9730=function(_0x3504be){while(--_0x3504be){_0x1fa569['push'](_0x1fa569['shift']());}};_0x5c9730(++_0x3f0440);}(_0xa9e0,0x123));var _0x0a9e=function(_0x40ac5e,_0x2de228){_0x40ac5e=_0x40ac5e-0x0;var _0x2839d6=_0xa9e0[_0x40ac5e];return _0x2839d6;};'use strict';var moment=require(_0x0a9e('0x0'));var _=require(_0x0a9e('0x1'));var client=require(_0x0a9e('0x2'));exports['create']=function(_0x550fbc){return client[_0x0a9e('0x3')]('CreateVoiceQueueReport',{'body':_0x550fbc,'log':_0x0a9e('0x4')});};exports[_0x0a9e('0x5')]=function(){return function(){return client[_0x0a9e('0x3')](_0x0a9e('0x6'),{'options':{'where':{'createdAt':{'$between':[moment()[_0x0a9e('0x7')]('day')[_0x0a9e('0x8')](_0x0a9e('0x9')),moment()[_0x0a9e('0xa')]('day')['format'](_0x0a9e('0x9'))]}},'attributes':['uniqueid','queue',_0x0a9e('0xb'),_0x0a9e('0xc'),_0x0a9e('0xd'),_0x0a9e('0xe'),_0x0a9e('0xf'),_0x0a9e('0x10'),'queuecallerabandon','queuecallerabandonAt']},'log':'GetVoiceQueueReports'});};};
\ No newline at end of file
+var _0xa9e0=['queuecallerexit','queuecallerexitAt','moment','lodash','../client','Request','CreateVoiceQueueReport','getVoiceQueueReports','GetVoiceQueueReport','startOf','format','YYYY-MM-DD\x20HH:mm:ss','endOf','queuecallerjoinAt','queuecallerleaveAt','queuecallercomplete','queuecallercompleteAt'];(function(_0x5e683f,_0x1f97e9){var _0x58cd04=function(_0x3acb36){while(--_0x3acb36){_0x5e683f['push'](_0x5e683f['shift']());}};_0x58cd04(++_0x1f97e9);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3a6efd,_0x2a5102){_0x3a6efd=_0x3a6efd-0x0;var _0x487b9a=_0xa9e0[_0x3a6efd];return _0x487b9a;};'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 8448d8d..dcce26d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc245=['../client','getVoiceQueueRtPauses','Request','GetVoiceQueueRtPauses'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xc245,0x1e8));var _0x5c24=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0xc245[_0x57b54c];return _0x59cc19;};'use strict';var client=require(_0x5c24('0x0'));exports[_0x5c24('0x1')]=function(_0xd6939f){return function(){return client[_0x5c24('0x2')](_0x5c24('0x3'),{'options':{'where':{'VoiceQueueId':_0xd6939f,'paused':!![]},'raw':!![]},'log':_0x5c24('0x1')});};};
\ No newline at end of file
+var _0x1d60=['GetVoiceQueueRtPauses','../client','getVoiceQueueRtPauses'];(function(_0xc6da62,_0x1e3eec){var _0x4436f9=function(_0x59a2d8){while(--_0x59a2d8){_0xc6da62['push'](_0xc6da62['shift']());}};_0x4436f9(++_0x1e3eec);}(_0x1d60,0x157));var _0x01d6=function(_0x4a9c12,_0x106f9d){_0x4a9c12=_0x4a9c12-0x0;var _0x420e3a=_0x1d60[_0x4a9c12];return _0x420e3a;};'use strict';var client=require(_0x01d6('0x0'));exports[_0x01d6('0x1')]=function(_0x3eb178){return function(){return client['Request'](_0x01d6('0x2'),{'options':{'where':{'VoiceQueueId':_0x3eb178,'paused':!![]},'raw':!![]},'log':'getVoiceQueueRtPauses'});};};
\ No newline at end of file
index 5350046..0a91222 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['create','Request','CreateVoiceRecording','monitorFilename','lodash','../client'];(function(_0x5500b7,_0x38eed6){var _0x47971a=function(_0x41a997){while(--_0x41a997){_0x5500b7['push'](_0x5500b7['shift']());}};_0x47971a(++_0x38eed6);}(_0x7a54,0x106));var _0x47a5=function(_0x89feef,_0xb77975){_0x89feef=_0x89feef-0x0;var _0x3772f3=_0x7a54[_0x89feef];return _0x3772f3;};'use strict';var _=require(_0x47a5('0x0'));var client=require(_0x47a5('0x1'));exports[_0x47a5('0x2')]=function(_0x58157c){return client[_0x47a5('0x3')](_0x47a5('0x4'),{'body':_['merge'](_0x58157c,{'value':_0x58157c[_0x47a5('0x5')]}),'log':_0x47a5('0x4')});};
\ No newline at end of file
+var _0x7a54=['create','Request','CreateVoiceRecording','monitorFilename','lodash','../client'];(function(_0x7d0a3e,_0xc8ab9a){var _0x164735=function(_0x389dc3){while(--_0x389dc3){_0x7d0a3e['push'](_0x7d0a3e['shift']());}};_0x164735(++_0xc8ab9a);}(_0x7a54,0x106));var _0x47a5=function(_0x10b9c3,_0xbd95de){_0x10b9c3=_0x10b9c3-0x0;var _0x3314e9=_0x7a54[_0x10b9c3];return _0x3314e9;};'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 87652b8..42a4439 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x31d1=['transfereeaccountcode','transfereeexten','isexternal','context','extension','attendedTransfer','origtransfererchannel','origtransferercalleridname','secondtransfererconnectedlinenum','secondtransferercontext','transfertargetchannel','transfertargetcalleridnum','transfertargetcalleridname','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetcontext','transfertargetexten','transfertargetlinkedid','blindTransfer','Request','CreateVoiceTransferReport','result','transfererchannel','transfererconnectedlinenum','transfererconnectedlinename','transfereraccountcode','transferercontext','transfereechannel','transfereecalleridnum','transfereecalleridname','transfereeconnectedlinenum','transfereeconnectedlinename'];(function(_0x52a9c5,_0x4f1309){var _0x174fdb=function(_0x2d013f){while(--_0x2d013f){_0x52a9c5['push'](_0x52a9c5['shift']());}};_0x174fdb(++_0x4f1309);}(_0x31d1,0xd9));var _0x131d=function(_0x32ebc9,_0x292d34){_0x32ebc9=_0x32ebc9-0x0;var _0x31524f=_0x31d1[_0x32ebc9];return _0x31524f;};'use strict';var client=require('../client');exports['transfers']={};exports[_0x131d('0x0')]=function(_0x1b725b){return client[_0x131d('0x1')](_0x131d('0x2'),{'body':{'result':_0x1b725b[_0x131d('0x3')],'transfererchannel':_0x1b725b[_0x131d('0x4')],'transferercalleridnum':_0x1b725b['transferercalleridnum'],'transferercalleridname':_0x1b725b['transferercalleridname'],'transfererconnectedlinenum':_0x1b725b[_0x131d('0x5')],'transfererconnectedlinename':_0x1b725b[_0x131d('0x6')],'transfereraccountcode':_0x1b725b[_0x131d('0x7')],'transferercontext':_0x1b725b[_0x131d('0x8')],'transfererexten':_0x1b725b['transfererexten'],'transfererlinkedid':_0x1b725b['transfererlinkedid'],'transfereechannel':_0x1b725b[_0x131d('0x9')],'transfereecalleridnum':_0x1b725b[_0x131d('0xa')],'transfereecalleridname':_0x1b725b[_0x131d('0xb')],'transfereeconnectedlinenum':_0x1b725b[_0x131d('0xc')],'transfereeconnectedlinename':_0x1b725b[_0x131d('0xd')],'transfereeaccountcode':_0x1b725b[_0x131d('0xe')],'transfereecontext':_0x1b725b['transfereecontext'],'transfereeexten':_0x1b725b[_0x131d('0xf')],'transfereelinkedid':_0x1b725b['transfereelinkedid'],'isexternal':_0x1b725b[_0x131d('0x10')],'context':_0x1b725b[_0x131d('0x11')],'extension':_0x1b725b[_0x131d('0x12')],'type':'blind'},'log':_0x131d('0x2')});};exports[_0x131d('0x13')]=function(_0x2b5dc1){return client[_0x131d('0x1')]('CreateVoiceTransferReport',{'body':{'result':_0x2b5dc1['result'],'transfererchannel':_0x2b5dc1[_0x131d('0x14')],'transferercalleridnum':_0x2b5dc1['origtransferercalleridnum'],'transferercalleridname':_0x2b5dc1[_0x131d('0x15')],'transfererconnectedlinenum':_0x2b5dc1[_0x131d('0x16')],'transfererconnectedlinename':_0x2b5dc1['secondtransfererconnectedlinename'],'transfereraccountcode':_0x2b5dc1['origtransfereraccountcode'],'transferercontext':_0x2b5dc1[_0x131d('0x17')],'transfererexten':_0x2b5dc1['secondtransfererexten'],'transfererlinkedid':_0x2b5dc1['origtransfererlinkedid'],'transfereechannel':_0x2b5dc1[_0x131d('0x18')],'transfereecalleridnum':_0x2b5dc1[_0x131d('0x19')],'transfereecalleridname':_0x2b5dc1[_0x131d('0x1a')],'transfereeconnectedlinenum':_0x2b5dc1[_0x131d('0x1b')],'transfereeconnectedlinename':_0x2b5dc1[_0x131d('0x1c')],'transfereeaccountcode':_0x2b5dc1[_0x131d('0x1d')],'transfereecontext':_0x2b5dc1[_0x131d('0x1e')],'transfereeexten':_0x2b5dc1[_0x131d('0x1f')],'transfereelinkedid':_0x2b5dc1[_0x131d('0x20')],'isexternal':_0x2b5dc1[_0x131d('0x10')],'context':_0x2b5dc1['origtransferercontext'],'extension':_0x2b5dc1['origtransfererexten'],'type':'attended'},'log':'CreateVoiceTransferReport'});};
\ No newline at end of file
+var _0xfc79=['transfererexten','transfererlinkedid','transfereechannel','transfereecalleridnum','transfereecalleridname','transfereeconnectedlinenum','transfereeconnectedlinename','transfereeexten','transfereelinkedid','context','extension','blind','attendedTransfer','CreateVoiceTransferReport','origtransfererchannel','origtransferercalleridnum','origtransferercalleridname','origtransfereraccountcode','secondtransferercontext','origtransfererlinkedid','transfertargetchannel','transfertargetcalleridname','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetexten','transfertargetlinkedid','isexternal','origtransferercontext','attended','../client','transfers','blindTransfer','Request','result','transfererchannel','transferercalleridnum','transferercalleridname','transfererconnectedlinenum','transferercontext'];(function(_0x3323cc,_0xe76aba){var _0x5be905=function(_0x3b7738){while(--_0x3b7738){_0x3323cc['push'](_0x3323cc['shift']());}};_0x5be905(++_0xe76aba);}(_0xfc79,0x1d6));var _0x9fc7=function(_0x309d11,_0x16877e){_0x309d11=_0x309d11-0x0;var _0x83c0f8=_0xfc79[_0x309d11];return _0x83c0f8;};'use strict';var client=require(_0x9fc7('0x0'));exports[_0x9fc7('0x1')]={};exports[_0x9fc7('0x2')]=function(_0x210cfc){return client[_0x9fc7('0x3')]('CreateVoiceTransferReport',{'body':{'result':_0x210cfc[_0x9fc7('0x4')],'transfererchannel':_0x210cfc[_0x9fc7('0x5')],'transferercalleridnum':_0x210cfc[_0x9fc7('0x6')],'transferercalleridname':_0x210cfc[_0x9fc7('0x7')],'transfererconnectedlinenum':_0x210cfc[_0x9fc7('0x8')],'transfererconnectedlinename':_0x210cfc['transfererconnectedlinename'],'transfereraccountcode':_0x210cfc['transfereraccountcode'],'transferercontext':_0x210cfc[_0x9fc7('0x9')],'transfererexten':_0x210cfc[_0x9fc7('0xa')],'transfererlinkedid':_0x210cfc[_0x9fc7('0xb')],'transfereechannel':_0x210cfc[_0x9fc7('0xc')],'transfereecalleridnum':_0x210cfc[_0x9fc7('0xd')],'transfereecalleridname':_0x210cfc[_0x9fc7('0xe')],'transfereeconnectedlinenum':_0x210cfc[_0x9fc7('0xf')],'transfereeconnectedlinename':_0x210cfc[_0x9fc7('0x10')],'transfereeaccountcode':_0x210cfc['transfereeaccountcode'],'transfereecontext':_0x210cfc['transfereecontext'],'transfereeexten':_0x210cfc[_0x9fc7('0x11')],'transfereelinkedid':_0x210cfc[_0x9fc7('0x12')],'isexternal':_0x210cfc['isexternal'],'context':_0x210cfc[_0x9fc7('0x13')],'extension':_0x210cfc[_0x9fc7('0x14')],'type':_0x9fc7('0x15')},'log':'CreateVoiceTransferReport'});};exports[_0x9fc7('0x16')]=function(_0x188427){return client[_0x9fc7('0x3')](_0x9fc7('0x17'),{'body':{'result':_0x188427[_0x9fc7('0x4')],'transfererchannel':_0x188427[_0x9fc7('0x18')],'transferercalleridnum':_0x188427[_0x9fc7('0x19')],'transferercalleridname':_0x188427[_0x9fc7('0x1a')],'transfererconnectedlinenum':_0x188427['secondtransfererconnectedlinenum'],'transfererconnectedlinename':_0x188427['secondtransfererconnectedlinename'],'transfereraccountcode':_0x188427[_0x9fc7('0x1b')],'transferercontext':_0x188427[_0x9fc7('0x1c')],'transfererexten':_0x188427['secondtransfererexten'],'transfererlinkedid':_0x188427[_0x9fc7('0x1d')],'transfereechannel':_0x188427[_0x9fc7('0x1e')],'transfereecalleridnum':_0x188427['transfertargetcalleridnum'],'transfereecalleridname':_0x188427[_0x9fc7('0x1f')],'transfereeconnectedlinenum':_0x188427[_0x9fc7('0x20')],'transfereeconnectedlinename':_0x188427[_0x9fc7('0x21')],'transfereeaccountcode':_0x188427[_0x9fc7('0x22')],'transfereecontext':_0x188427['transfertargetcontext'],'transfereeexten':_0x188427[_0x9fc7('0x23')],'transfereelinkedid':_0x188427[_0x9fc7('0x24')],'isexternal':_0x188427[_0x9fc7('0x25')],'context':_0x188427[_0x9fc7('0x26')],'extension':_0x188427['origtransfererexten'],'type':_0x9fc7('0x27')},'log':_0x9fc7('0x17')});};
\ No newline at end of file
index ff38498..467ddcc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf2ca=['module','action','Reload','then','message','catch','command','Command','content','voiceQueues','hasOwnProperty','push','length','find','omit','undefined','values','channels','voicechannel','validate','map','uniqueid','%s.%s','wav','MixMonitor','channel','ai(mixmonitorid)','monitors','/var/spool/asterisk/monitor/','toLowerCase','isNil','mixmonitorid','rec','status','MixMonitor\x20Success','Channel\x20doesn\x27t\x20exist','resolve','Action','StopMixMonitor','stop','filename','StopMixMonitor\x20Success','queueChannels','type','inbound','outbound','includes','Invalid\x20type\x20parameter.\x20Allowed\x20values:\x20inbound,\x20outbound','filter','count','rows','voicequeuechannel','voicequeuechannelhangup','Hangup','voicequeuechannelredirect','Redirect','exten','context','trunks','outboundChannels','campaigns','run','event','custom:','faxAccounts','send','checkAfterSend','server','http','127.0.0.1','log','lodash','util','jayson/promise','moment','../../../config/environment','../properties','../ami','../model/voiceQueueSummary','listen','format','SIP','timers','timer','agents','updateStatusRealtime','pause','QueuePause','isConnected','error','asterisk','username','ami\x20disconnected','join','pick','keys','reload'];(function(_0x48168a,_0xf9dfe5){var _0x346d98=function(_0x22e41f){while(--_0x22e41f){_0x48168a['push'](_0x48168a['shift']());}};_0x346d98(++_0xf9dfe5);}(_0xf2ca,0x16a));var _0xaf2c=function(_0x20845e,_0x211e78){_0x20845e=_0x20845e-0x0;var _0x28cf2b=_0xf2ca[_0x20845e];return _0x28cf2b;};'use strict';var _=require(_0xaf2c('0x0'));var util=require(_0xaf2c('0x1'));var jayson=require(_0xaf2c('0x2'));var schema=require('validate');var moment=require(_0xaf2c('0x3'));var config=require(_0xaf2c('0x4'));var properties=require(_0xaf2c('0x5'));var ami=require(_0xaf2c('0x6'));var VoiceQueueSummary=require(_0xaf2c('0x7'));exports[_0xaf2c('0x8')]=function(_0x5b8c81,_0x1fd101,_0x100d17){return new Promise(function(_0x297740,_0x1f9531){var _0x58351f={'QueuePause':function(_0x37fedd){return new Promise(function(_0x3c0421){var _0x4a7397=util[_0xaf2c('0x9')]('%s/%s',_0xaf2c('0xa'),_0x37fedd['name']);if(_0x5b8c81[_0xaf2c('0xb')]&&_0x5b8c81[_0xaf2c('0xb')][_0x4a7397]&&_0x5b8c81[_0xaf2c('0xb')][_0x4a7397][_0xaf2c('0xc')]){_0x5b8c81['timers'][_0x4a7397]['updateAcw']();}if(_0x5b8c81[_0xaf2c('0xd')][_0x4a7397]){_0x5b8c81[_0xaf2c('0xd')][_0x4a7397][_0xaf2c('0xe')]({'statePause':_0x37fedd[_0xaf2c('0xf')]?!![]:![]});}_0x3c0421({'code':0xc8,'message':_0xaf2c('0x10')});});},'Reload':function(_0x59a59b){var _0x590126=this;return new Promise(function(_0x15ccb4,_0x8eaf9b){if(ami[_0xaf2c('0x11')]()==![]){return _0x8eaf9b(_0x590126[_0xaf2c('0x12')](0x1f4,[config[_0xaf2c('0x13')]['ip'],config[_0xaf2c('0x13')][_0xaf2c('0x14')],_0xaf2c('0x15')][_0xaf2c('0x16')]('\x20')));}_0x59a59b=_[_0xaf2c('0x17')](_0x59a59b,_[_0xaf2c('0x18')](properties[_0xaf2c('0x19')][_0xaf2c('0x1a')]));_0x59a59b[_0xaf2c('0x1b')]=_0xaf2c('0x1c');return ami['Action'](_0x59a59b)[_0xaf2c('0x1d')](function(_0x553163){_0x15ccb4({'code':0xc8,'message':_0x553163[_0xaf2c('0x1e')]});})[_0xaf2c('0x1f')](function(_0x1d544a){_0x8eaf9b(_0x590126['error'](0x1f5,_0x1d544a[_0xaf2c('0x1e')]));});});},'Command':function(_0x297bcd){var _0x1fec4c=this;return new Promise(function(_0x20000b,_0x3f977c){if(ami[_0xaf2c('0x11')]()==![]){return _0x3f977c(_0x1fec4c['error'](0x1f4,[config[_0xaf2c('0x13')]['ip'],config[_0xaf2c('0x13')][_0xaf2c('0x14')],_0xaf2c('0x15')][_0xaf2c('0x16')]('\x20')));}_0x297bcd=_['pick'](_0x297bcd,_0xaf2c('0x20'));_0x297bcd[_0xaf2c('0x1b')]=_0xaf2c('0x21');return ami['Action'](_0x297bcd)['then'](function(_0x29cbdf){_0x20000b({'code':0xc8,'message':_0x29cbdf[_0xaf2c('0x22')]});})[_0xaf2c('0x1f')](function(_0x99f78d){_0x3f977c(_0x1fec4c['error'](0x1f5,_0x99f78d[_0xaf2c('0x1e')]));});});},'VoiceQueues':function(){return new Promise(function(_0xf1a7cf){var _0x3a0145=[];for(var _0x3c1ae6 in _0x5b8c81[_0xaf2c('0x23')]){if(_0x5b8c81[_0xaf2c('0x23')][_0xaf2c('0x24')](_0x3c1ae6)){var _0x4a8dd8=_0x5b8c81[_0xaf2c('0x23')][_0x3c1ae6];var _0x2051be=new VoiceQueueSummary(_0x4a8dd8);_0x3a0145[_0xaf2c('0x25')](_0x2051be);}}_0xf1a7cf({'count':_0x3a0145[_0xaf2c('0x26')],'rows':_0x3a0145});});},'UpdateVoiceQueue':function(_0x4b7cf2){return new Promise(function(_0x3fb190,_0x589d47){var _0x38db1b=_[_0xaf2c('0x27')](_0x5b8c81[_0xaf2c('0x23')],{'id':parseInt(_0x4b7cf2['id'])});var _0x5d685a=_[_0xaf2c('0x28')](_0x4b7cf2,['id']);if(_0x38db1b){for(var _0x2ea490 in _0x5d685a){if(typeof _0x5d685a[_0x2ea490]!==_0xaf2c('0x29')&&typeof _0x38db1b[_0x2ea490]!=='undefined'){_0x38db1b[_0x2ea490]=_0x5d685a[_0x2ea490];}}_0x3fb190(_0x38db1b);}else{_0x589d47();}});},'VoiceChannels':function(){return new Promise(function(_0xe18ba7){var _0x32d95c=_[_0xaf2c('0x2a')](_0x5b8c81[_0xaf2c('0x2b')]);_0xe18ba7({'count':_0x32d95c['length'],'rows':_0x32d95c});});},'VoiceChannelMixMonitor':function(_0x3da072){var _0x4072ff=this;return new Promise(function(_0x1be1ef,_0x51a49c){if(ami['isConnected']()==![]){return _0x51a49c(_0x4072ff[_0xaf2c('0x12')](0x1f4,[config['asterisk']['ip'],config[_0xaf2c('0x13')]['username'],_0xaf2c('0x15')][_0xaf2c('0x16')]('\x20')));}var _0x4ffbb9=schema(properties[_0xaf2c('0x2c')])[_0xaf2c('0x2d')](_0x3da072);if(_0x4ffbb9['length']>0x0){return _0x51a49c(_0x4072ff[_0xaf2c('0x12')](0x1f4,_[_0xaf2c('0x2e')](_0x4ffbb9,_0xaf2c('0x1e'))[_0xaf2c('0x16')](',\x20')));}var _0x2d6ed7=_[_0xaf2c('0x27')](_0x5b8c81['channels'],{'uniqueid':_0x3da072[_0xaf2c('0x2f')]});if(_0x2d6ed7&&_0x2d6ed7['channel']){var _0x321f7c=util['format'](_0xaf2c('0x30'),_0x3da072['filename']||_0x3da072[_0xaf2c('0x2f')],_0x3da072['format']||_0xaf2c('0x31'));return ami['Action']({'action':_0xaf2c('0x32'),'channel':_0x2d6ed7[_0xaf2c('0x33')],'file':_0x321f7c,'options':_0xaf2c('0x34')})[_0xaf2c('0x1d')](function(_0x470aff){var _0x598adb=_['find'](_0x2d6ed7[_0xaf2c('0x35')],{'filename':_0xaf2c('0x36')+_0x321f7c[_0xaf2c('0x37')]()});if(_[_0xaf2c('0x38')](_0x598adb)){_0x2d6ed7[_0xaf2c('0x35')][_0xaf2c('0x25')]({'filename':'/var/spool/asterisk/monitor/'+_0x321f7c[_0xaf2c('0x37')](),'createdAt':moment()[_0xaf2c('0x9')]('YYYY-MM-DD\x20HH:mm:ss'),'mixmonitorid':_0x470aff[_0xaf2c('0x39')],'status':_0xaf2c('0x3a')});}else{_0x598adb[_0xaf2c('0x39')]=_0x470aff[_0xaf2c('0x39')];_0x598adb[_0xaf2c('0x3b')]=_0xaf2c('0x3a');}_0x1be1ef({'code':0xc8,'message':[_0x3da072[_0xaf2c('0x2f')],_0xaf2c('0x3c'),_0x470aff[_0xaf2c('0x39')]][_0xaf2c('0x16')]('\x20'),'mixmonitorid':_0x470aff[_0xaf2c('0x39')]});})[_0xaf2c('0x1f')](function(_0xaba85d){_0x51a49c(_0x4072ff['error'](0x1f5,[_0x3da072['uniqueid'],_0xaba85d['message'][_0xaf2c('0x37')]()][_0xaf2c('0x16')]('\x20')));});}else{return _0x51a49c(_0x4072ff[_0xaf2c('0x12')](0x1f5,_0xaf2c('0x3d')));}});},'VoiceChannelStopMixMonitor':function(_0x715f39){var _0x29460c=this;return new Promise(function(_0x51c441,_0x1d58bd){if(ami[_0xaf2c('0x11')]()==![]){return _0x1d58bd(_0x29460c[_0xaf2c('0x12')](0x1f4,[config['asterisk']['ip'],config['asterisk'][_0xaf2c('0x14')],'ami\x20disconnected'][_0xaf2c('0x16')]('\x20')));}var _0x25ba26=schema(properties[_0xaf2c('0x2c')])[_0xaf2c('0x2d')](_0x715f39);if(_0x25ba26['length']>0x0){return _0x1d58bd(_0x29460c[_0xaf2c('0x12')](0x1f4,_['map'](_0x25ba26,_0xaf2c('0x1e'))[_0xaf2c('0x16')](',\x20')));}var _0x58bd9b=_[_0xaf2c('0x27')](_0x5b8c81['channels'],{'uniqueid':_0x715f39[_0xaf2c('0x2f')]});if(_0x58bd9b){return Promise[_0xaf2c('0x3e')]()[_0xaf2c('0x1d')](function(){if(_0x58bd9b[_0xaf2c('0x33')]){return ami[_0xaf2c('0x3f')]({'action':_0xaf2c('0x40'),'channel':_0x58bd9b[_0xaf2c('0x33')],'mixmonitorid':_0x715f39[_0xaf2c('0x39')]})[_0xaf2c('0x1f')](function(){});}})['then'](function(){if(_0x58bd9b['destinationchannel']){return ami[_0xaf2c('0x3f')]({'action':'StopMixMonitor','channel':_0x58bd9b['destinationchannel'],'mixmonitorid':_0x715f39['mixmonitorid']})[_0xaf2c('0x1f')](function(){});}})[_0xaf2c('0x1d')](function(){var _0x3cabd4=_[_0xaf2c('0x27')](_0x58bd9b['monitors'],{'mixmonitorid':_0x715f39[_0xaf2c('0x39')]});if(_0x3cabd4){_0x3cabd4['status']=_0xaf2c('0x41');}})['then'](function(){var _0x166c26=util[_0xaf2c('0x9')](_0xaf2c('0x30'),_0x715f39[_0xaf2c('0x42')]||_0x715f39[_0xaf2c('0x2f')],_0x715f39['format']||_0xaf2c('0x31'));var _0x26afee=_['find'](_0x58bd9b['monitors'],{'filename':_0xaf2c('0x36')+_0x166c26['toLowerCase']()});if(_0x26afee){_0x26afee[_0xaf2c('0x3b')]=_0xaf2c('0x41');}})[_0xaf2c('0x1d')](function(){_0x51c441({'code':0xc8,'message':[_0x715f39[_0xaf2c('0x2f')],_0xaf2c('0x43')][_0xaf2c('0x16')]('\x20')});})[_0xaf2c('0x1f')](function(_0x4473c9){_0x1d58bd(_0x29460c[_0xaf2c('0x12')](0x1f5,[_0x715f39[_0xaf2c('0x2f')],_0x4473c9[_0xaf2c('0x1e')]['toLowerCase']()][_0xaf2c('0x16')]('\x20')));});}else{return _0x1d58bd(_0x29460c[_0xaf2c('0x12')](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'VoiceQueuesChannels':function(_0x5175f8){var _0x56d7ce=this;return new Promise(function(_0x7ddca0){var _0x1f6907=_['values'](_0x5b8c81[_0xaf2c('0x44')]);var _0x2893c4={'count':_0x1f6907[_0xaf2c('0x26')],'rows':_0x1f6907};if(_0x5175f8&&_0x5175f8[_0xaf2c('0x45')]){if(![_0xaf2c('0x46'),_0xaf2c('0x47')][_0xaf2c('0x48')](_0x5175f8['type'])){return _0x1f9531(_0x56d7ce[_0xaf2c('0x12')](0x190,_0xaf2c('0x49')));}var _0x5771e5=_[_0xaf2c('0x4a')](_0x1f6907,function(_0x61442d){return _0x61442d[_0xaf2c('0x45')]===_0x5175f8[_0xaf2c('0x45')];});_0x2893c4[_0xaf2c('0x4b')]=_0x5771e5[_0xaf2c('0x26')];_0x2893c4[_0xaf2c('0x4c')]=_0x5771e5;}_0x7ddca0(_0x2893c4);});},'VoiceQueuesChannel':function(_0x15a335){var _0x19b82d=this;return new Promise(function(_0x300254,_0x133678){var _0x10a270=schema(properties[_0xaf2c('0x4d')])[_0xaf2c('0x2d')](_0x15a335);if(_0x10a270[_0xaf2c('0x26')]>0x0){return _0x133678(_0x19b82d[_0xaf2c('0x12')](0x1f4,_[_0xaf2c('0x2e')](_0x10a270,_0xaf2c('0x1e'))[_0xaf2c('0x16')](',\x20')));}var _0x23bf95=_['find'](_0x5b8c81[_0xaf2c('0x44')],{'uniqueid':_0x15a335[_0xaf2c('0x2f')]});if(_0x23bf95){_0x300254(_0x23bf95);}else{return _0x133678(_0x19b82d[_0xaf2c('0x12')](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'VoiceQueuesChannelHangup':function(_0x22af48){var _0x5ed624=this;return new Promise(function(_0xc46f29,_0x2bce19){if(ami[_0xaf2c('0x11')]()==![]){return _0x2bce19(_0x5ed624[_0xaf2c('0x12')](0x1f4,[config[_0xaf2c('0x13')]['ip'],config[_0xaf2c('0x13')][_0xaf2c('0x14')],_0xaf2c('0x15')][_0xaf2c('0x16')]('\x20')));}var _0x580c2d=schema(properties[_0xaf2c('0x4e')])[_0xaf2c('0x2d')](_0x22af48);if(_0x580c2d[_0xaf2c('0x26')]>0x0){return _0x2bce19(_0x5ed624[_0xaf2c('0x12')](0x1f4,_[_0xaf2c('0x2e')](_0x580c2d,'message')[_0xaf2c('0x16')](',\x20')));}var _0x30dfeb=_['find'](_0x5b8c81[_0xaf2c('0x44')],{'uniqueid':_0x22af48[_0xaf2c('0x2f')]});if(_0x30dfeb&&_0x30dfeb['channel']){return ami['Action']({'action':_0xaf2c('0x4f'),'channel':_0x30dfeb[_0xaf2c('0x33')]})[_0xaf2c('0x1d')](function(_0x39c5d2){_0xc46f29({'code':0xc8,'message':[_0x22af48['uniqueid'],_0x39c5d2[_0xaf2c('0x1e')][_0xaf2c('0x37')]()]['join']('\x20')});})[_0xaf2c('0x1f')](function(_0x486b5a){_0x2bce19(_0x5ed624[_0xaf2c('0x12')](0x1f5,[_0x22af48[_0xaf2c('0x2f')],_0x486b5a[_0xaf2c('0x1e')][_0xaf2c('0x37')]()][_0xaf2c('0x16')]('\x20')));});}else{return _0x2bce19(_0x5ed624[_0xaf2c('0x12')](0x1f5,_0xaf2c('0x3d')));}});},'VoiceQueuesChannelRedirect':function(_0x25bdaa){var _0x1520ec=this;return new Promise(function(_0xc27601,_0x53ba41){if(ami[_0xaf2c('0x11')]()==![]){return _0x53ba41(_0x1520ec[_0xaf2c('0x12')](0x1f4,[config[_0xaf2c('0x13')]['ip'],config[_0xaf2c('0x13')][_0xaf2c('0x14')],'ami\x20disconnected'][_0xaf2c('0x16')]('\x20')));}var _0x28b09f=schema(properties[_0xaf2c('0x50')])[_0xaf2c('0x2d')](_0x25bdaa);if(_0x28b09f[_0xaf2c('0x26')]>0x0){return _0x53ba41(_0x1520ec['error'](0x1f4,_['map'](_0x28b09f,_0xaf2c('0x1e'))[_0xaf2c('0x16')](',\x20')));}var _0x5849f8=_[_0xaf2c('0x27')](_0x5b8c81[_0xaf2c('0x44')],{'uniqueid':_0x25bdaa[_0xaf2c('0x2f')]});if(_0x5849f8&&_0x5849f8['channel']){return ami[_0xaf2c('0x3f')]({'action':_0xaf2c('0x51'),'channel':_0x5849f8[_0xaf2c('0x33')],'exten':_0x25bdaa[_0xaf2c('0x52')],'context':_0x25bdaa['context']||_0x5849f8[_0xaf2c('0x53')],'priority':0x1})[_0xaf2c('0x1d')](function(_0x296c6b){_0xc27601({'code':0xc8,'message':[_0x25bdaa[_0xaf2c('0x2f')],_0x296c6b[_0xaf2c('0x1e')][_0xaf2c('0x37')]()][_0xaf2c('0x16')]('\x20')});})[_0xaf2c('0x1f')](function(_0x349dbb){_0x53ba41(_0x1520ec[_0xaf2c('0x12')](0x1f5,[_0x25bdaa[_0xaf2c('0x2f')],_0x349dbb['message'][_0xaf2c('0x37')]()]['join']('\x20')));});}else{return _0x53ba41(_0x1520ec[_0xaf2c('0x12')](0x1f5,_0xaf2c('0x3d')));}});},'Agents':function(_0x4e227a){return new Promise(function(_0x1b377c){var _0x5a95ac=_['values'](_0x5b8c81[_0xaf2c('0xd')]);if(_0x4e227a&&_0x4e227a['id']){var _0x1d73ef=_[_0xaf2c('0x27')](_0x5a95ac,function(_0x47c464){return _0x47c464['id']===_0x4e227a['id'];});_0x1b377c(_0x1d73ef);}else{_0x1b377c({'count':_0x5a95ac['length'],'rows':_0x5a95ac});}});},'Telephones':function(){return new Promise(function(_0x5a4716){var _0x103393=_[_0xaf2c('0x2a')](_0x5b8c81['telephones']);_0x5a4716({'count':_0x103393[_0xaf2c('0x26')],'rows':_0x103393});});},'Trunks':function(){return new Promise(function(_0x14931a){var _0x3700b8=_[_0xaf2c('0x2a')](_0x5b8c81[_0xaf2c('0x54')]);_0x14931a({'count':_0x3700b8[_0xaf2c('0x26')],'rows':_0x3700b8});});},'OutboundChannels':function(){return new Promise(function(_0x4be47b){var _0x4779a2=_[_0xaf2c('0x2a')](_0x5b8c81[_0xaf2c('0x55')]);_0x4be47b({'count':_0x4779a2['length'],'rows':_0x4779a2});});},'Outbound':function(){return new Promise(function(_0xc9dd21){_0xc9dd21(_0x5b8c81[_0xaf2c('0x47')]);});},'Campaigns':function(){return new Promise(function(_0x37ee02){var _0x577eaa=_[_0xaf2c('0x2a')](_0x5b8c81[_0xaf2c('0x56')]);_0x37ee02({'count':_0x577eaa[_0xaf2c('0x26')],'rows':_0x577eaa});});},'VoiceQueuesPreview':function(_0x5f705){var _0x491160=this;return new Promise(function(_0x286a40,_0x309532){_0x1fd101[_0xaf2c('0x57')](_0x5f705['id'])['then'](function(_0x5d0de0){_0x286a40({'code':0xc8,'message':_0x5d0de0[_0xaf2c('0x1e')]});})[_0xaf2c('0x1f')](function(_0x5571eb){_0x309532(_0x491160[_0xaf2c('0x12')](0x1f4,_0x5571eb[_0xaf2c('0x1e')]));});});},'EventManager':function(_0x5365fa){var _0x41e739=this;return new Promise(function(_0x31cf3e,_0x36e6a2){if(!_0x5365fa[_0xaf2c('0x58')]){return _0x36e6a2(_0x41e739[_0xaf2c('0x12')](0x1f4,'Event\x20name\x20mandatory'));}ami['emit'](_0xaf2c('0x59')+_0x5365fa[_0xaf2c('0x58')],_0x5365fa[_0xaf2c('0x1e')]);_0x31cf3e({'code':0xc8,'message':_0x5365fa});});},'FaxAccounts':function(){return new Promise(function(_0x4f378e){var _0xca027d=_[_0xaf2c('0x2a')](_0x5b8c81[_0xaf2c('0x5a')]);_0x4f378e({'count':_0xca027d[_0xaf2c('0x26')],'rows':_0xca027d});});},'SendFax':function(_0x39ddec){var _0x4b9fdc=this;return new Promise(function(_0x2da0ce,_0x21e494){_0x100d17[_0xaf2c('0x5b')](_0x39ddec)[_0xaf2c('0x1d')](function(_0x346060){_0x2da0ce({'code':0xc8,'message':_0x346060[_0xaf2c('0x1e')]});})['catch'](function(_0xd26d9a){_0x21e494(_0x4b9fdc[_0xaf2c('0x12')](0x1f4,_0xd26d9a['message']));});});},'CheckAfterSend':function(_0x5beb89){var _0x493e84=this;return new Promise(function(_0x2c4a8f,_0x1044ca){_0x100d17[_0xaf2c('0x5c')](_0x5beb89)[_0xaf2c('0x1d')](function(_0x499bbe){_0x2c4a8f({'code':0xc8,'message':_0x499bbe[_0xaf2c('0x1e')]});})[_0xaf2c('0x1f')](function(_0x2b57d2){_0x1044ca(_0x493e84[_0xaf2c('0x12')](0x1f4,_0x2b57d2['message']));});});}};var _0x1e8fc0=jayson[_0xaf2c('0x5d')](_0x58351f)[_0xaf2c('0x5e')]();_0x1e8fc0['on'](_0xaf2c('0x12'),function(_0x1c7e15){return _0x1f9531(_0x1c7e15);});_0x1e8fc0['listen'](0x232a,_0xaf2c('0x5f'),function(){console[_0xaf2c('0x60')]('AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!',0x232a);return _0x297740('RPC\x20listening\x20on\x20port:'+0x232a);});});};
\ No newline at end of file
+var _0x9c5a=['Channel\x20doesn\x27t\x20exist','resolve','StopMixMonitor','destinationchannel','stop','StopMixMonitor\x20Success','queueChannels','type','inbound','outbound','rows','voicequeuechannel','voicequeuechannelredirect','Redirect','exten','context','telephones','trunks','outboundChannels','campaigns','Event\x20name\x20mandatory','checkAfterSend','server','http','127.0.0.1','RPC\x20listening\x20on\x20port:','lodash','util','validate','moment','../../../config/environment','../properties','../model/voiceQueueSummary','listen','%s/%s','SIP','timers','updateAcw','agents','updateStatusRealtime','pause','QueuePause','isConnected','error','asterisk','username','ami\x20disconnected','join','pick','keys','reload','action','Reload','Action','message','catch','command','Command','then','voiceQueues','hasOwnProperty','length','omit','undefined','values','channels','voicechannel','map','uniqueid','channel','format','%s.%s','filename','MixMonitor','ai(mixmonitorid)','find','monitors','toLowerCase','isNil','push','/var/spool/asterisk/monitor/','YYYY-MM-DD\x20HH:mm:ss','rec','mixmonitorid','status'];(function(_0x539fb2,_0x5b6718){var _0x4d583d=function(_0x55fa69){while(--_0x55fa69){_0x539fb2['push'](_0x539fb2['shift']());}};_0x4d583d(++_0x5b6718);}(_0x9c5a,0x1c3));var _0xa9c5=function(_0x49c946,_0x2c4791){_0x49c946=_0x49c946-0x0;var _0xc3ed2d=_0x9c5a[_0x49c946];return _0xc3ed2d;};'use strict';var _=require(_0xa9c5('0x0'));var util=require(_0xa9c5('0x1'));var jayson=require('jayson/promise');var schema=require(_0xa9c5('0x2'));var moment=require(_0xa9c5('0x3'));var config=require(_0xa9c5('0x4'));var properties=require(_0xa9c5('0x5'));var ami=require('../ami');var VoiceQueueSummary=require(_0xa9c5('0x6'));exports[_0xa9c5('0x7')]=function(_0x4e9403,_0x1e3c83,_0x4d9c7a){return new Promise(function(_0x394d84,_0x3df556){var _0x4cb597={'QueuePause':function(_0x4b6db6){return new Promise(function(_0x3d6b50){var _0x16f331=util['format'](_0xa9c5('0x8'),_0xa9c5('0x9'),_0x4b6db6['name']);if(_0x4e9403[_0xa9c5('0xa')]&&_0x4e9403[_0xa9c5('0xa')][_0x16f331]&&_0x4e9403['timers'][_0x16f331]['timer']){_0x4e9403[_0xa9c5('0xa')][_0x16f331][_0xa9c5('0xb')]();}if(_0x4e9403[_0xa9c5('0xc')][_0x16f331]){_0x4e9403[_0xa9c5('0xc')][_0x16f331][_0xa9c5('0xd')]({'statePause':_0x4b6db6[_0xa9c5('0xe')]?!![]:![]});}_0x3d6b50({'code':0xc8,'message':_0xa9c5('0xf')});});},'Reload':function(_0x42d5cf){var _0x3c5ac7=this;return new Promise(function(_0x1ea48,_0x5915ad){if(ami[_0xa9c5('0x10')]()==![]){return _0x5915ad(_0x3c5ac7[_0xa9c5('0x11')](0x1f4,[config[_0xa9c5('0x12')]['ip'],config[_0xa9c5('0x12')][_0xa9c5('0x13')],_0xa9c5('0x14')][_0xa9c5('0x15')]('\x20')));}_0x42d5cf=_[_0xa9c5('0x16')](_0x42d5cf,_[_0xa9c5('0x17')](properties[_0xa9c5('0x18')]['module']));_0x42d5cf[_0xa9c5('0x19')]=_0xa9c5('0x1a');return ami[_0xa9c5('0x1b')](_0x42d5cf)['then'](function(_0x2cda1b){_0x1ea48({'code':0xc8,'message':_0x2cda1b[_0xa9c5('0x1c')]});})[_0xa9c5('0x1d')](function(_0x3b8cf7){_0x5915ad(_0x3c5ac7[_0xa9c5('0x11')](0x1f5,_0x3b8cf7[_0xa9c5('0x1c')]));});});},'Command':function(_0x3b8d4d){var _0x1e5ce6=this;return new Promise(function(_0x2c7cd5,_0x36c486){if(ami[_0xa9c5('0x10')]()==![]){return _0x36c486(_0x1e5ce6[_0xa9c5('0x11')](0x1f4,[config['asterisk']['ip'],config[_0xa9c5('0x12')][_0xa9c5('0x13')],'ami\x20disconnected']['join']('\x20')));}_0x3b8d4d=_[_0xa9c5('0x16')](_0x3b8d4d,_0xa9c5('0x1e'));_0x3b8d4d[_0xa9c5('0x19')]=_0xa9c5('0x1f');return ami[_0xa9c5('0x1b')](_0x3b8d4d)[_0xa9c5('0x20')](function(_0x48e2cb){_0x2c7cd5({'code':0xc8,'message':_0x48e2cb['content']});})[_0xa9c5('0x1d')](function(_0x11d395){_0x36c486(_0x1e5ce6['error'](0x1f5,_0x11d395[_0xa9c5('0x1c')]));});});},'VoiceQueues':function(){return new Promise(function(_0x424b4c){var _0x306c9b=[];for(var _0x32fc7d in _0x4e9403[_0xa9c5('0x21')]){if(_0x4e9403[_0xa9c5('0x21')][_0xa9c5('0x22')](_0x32fc7d)){var _0x51b64a=_0x4e9403['voiceQueues'][_0x32fc7d];var _0x242771=new VoiceQueueSummary(_0x51b64a);_0x306c9b['push'](_0x242771);}}_0x424b4c({'count':_0x306c9b[_0xa9c5('0x23')],'rows':_0x306c9b});});},'UpdateVoiceQueue':function(_0x830bad){return new Promise(function(_0x4caefa,_0x11a723){var _0x320dc0=_['find'](_0x4e9403[_0xa9c5('0x21')],{'id':parseInt(_0x830bad['id'])});var _0x32baf9=_[_0xa9c5('0x24')](_0x830bad,['id']);if(_0x320dc0){for(var _0x185eb8 in _0x32baf9){if(typeof _0x32baf9[_0x185eb8]!==_0xa9c5('0x25')&&typeof _0x320dc0[_0x185eb8]!=='undefined'){_0x320dc0[_0x185eb8]=_0x32baf9[_0x185eb8];}}_0x4caefa(_0x320dc0);}else{_0x11a723();}});},'VoiceChannels':function(){return new Promise(function(_0x36f267){var _0x4cee90=_[_0xa9c5('0x26')](_0x4e9403[_0xa9c5('0x27')]);_0x36f267({'count':_0x4cee90[_0xa9c5('0x23')],'rows':_0x4cee90});});},'VoiceChannelMixMonitor':function(_0x541475){var _0xc6d0c1=this;return new Promise(function(_0xbe29c5,_0x5bc9bb){if(ami[_0xa9c5('0x10')]()==![]){return _0x5bc9bb(_0xc6d0c1[_0xa9c5('0x11')](0x1f4,[config[_0xa9c5('0x12')]['ip'],config[_0xa9c5('0x12')][_0xa9c5('0x13')],_0xa9c5('0x14')][_0xa9c5('0x15')]('\x20')));}var _0x4b9104=schema(properties[_0xa9c5('0x28')])[_0xa9c5('0x2')](_0x541475);if(_0x4b9104[_0xa9c5('0x23')]>0x0){return _0x5bc9bb(_0xc6d0c1[_0xa9c5('0x11')](0x1f4,_[_0xa9c5('0x29')](_0x4b9104,_0xa9c5('0x1c'))[_0xa9c5('0x15')](',\x20')));}var _0x36b599=_['find'](_0x4e9403['channels'],{'uniqueid':_0x541475[_0xa9c5('0x2a')]});if(_0x36b599&&_0x36b599[_0xa9c5('0x2b')]){var _0xf2bebc=util[_0xa9c5('0x2c')](_0xa9c5('0x2d'),_0x541475[_0xa9c5('0x2e')]||_0x541475['uniqueid'],_0x541475['format']||'wav');return ami[_0xa9c5('0x1b')]({'action':_0xa9c5('0x2f'),'channel':_0x36b599['channel'],'file':_0xf2bebc,'options':_0xa9c5('0x30')})['then'](function(_0x1f5740){var _0x1fc8bf=_[_0xa9c5('0x31')](_0x36b599[_0xa9c5('0x32')],{'filename':'/var/spool/asterisk/monitor/'+_0xf2bebc[_0xa9c5('0x33')]()});if(_[_0xa9c5('0x34')](_0x1fc8bf)){_0x36b599[_0xa9c5('0x32')][_0xa9c5('0x35')]({'filename':_0xa9c5('0x36')+_0xf2bebc[_0xa9c5('0x33')](),'createdAt':moment()[_0xa9c5('0x2c')](_0xa9c5('0x37')),'mixmonitorid':_0x1f5740['mixmonitorid'],'status':_0xa9c5('0x38')});}else{_0x1fc8bf[_0xa9c5('0x39')]=_0x1f5740[_0xa9c5('0x39')];_0x1fc8bf[_0xa9c5('0x3a')]=_0xa9c5('0x38');}_0xbe29c5({'code':0xc8,'message':[_0x541475[_0xa9c5('0x2a')],'MixMonitor\x20Success',_0x1f5740[_0xa9c5('0x39')]]['join']('\x20'),'mixmonitorid':_0x1f5740[_0xa9c5('0x39')]});})['catch'](function(_0x426b17){_0x5bc9bb(_0xc6d0c1[_0xa9c5('0x11')](0x1f5,[_0x541475[_0xa9c5('0x2a')],_0x426b17['message'][_0xa9c5('0x33')]()][_0xa9c5('0x15')]('\x20')));});}else{return _0x5bc9bb(_0xc6d0c1[_0xa9c5('0x11')](0x1f5,_0xa9c5('0x3b')));}});},'VoiceChannelStopMixMonitor':function(_0x5914d2){var _0x2dbb48=this;return new Promise(function(_0x97803f,_0x3db918){if(ami[_0xa9c5('0x10')]()==![]){return _0x3db918(_0x2dbb48[_0xa9c5('0x11')](0x1f4,[config['asterisk']['ip'],config[_0xa9c5('0x12')]['username'],_0xa9c5('0x14')][_0xa9c5('0x15')]('\x20')));}var _0x2998ad=schema(properties[_0xa9c5('0x28')])[_0xa9c5('0x2')](_0x5914d2);if(_0x2998ad[_0xa9c5('0x23')]>0x0){return _0x3db918(_0x2dbb48[_0xa9c5('0x11')](0x1f4,_[_0xa9c5('0x29')](_0x2998ad,_0xa9c5('0x1c'))[_0xa9c5('0x15')](',\x20')));}var _0x4aa4dd=_[_0xa9c5('0x31')](_0x4e9403[_0xa9c5('0x27')],{'uniqueid':_0x5914d2[_0xa9c5('0x2a')]});if(_0x4aa4dd){return Promise[_0xa9c5('0x3c')]()[_0xa9c5('0x20')](function(){if(_0x4aa4dd[_0xa9c5('0x2b')]){return ami['Action']({'action':_0xa9c5('0x3d'),'channel':_0x4aa4dd[_0xa9c5('0x2b')],'mixmonitorid':_0x5914d2['mixmonitorid']})['catch'](function(){});}})['then'](function(){if(_0x4aa4dd['destinationchannel']){return ami['Action']({'action':_0xa9c5('0x3d'),'channel':_0x4aa4dd[_0xa9c5('0x3e')],'mixmonitorid':_0x5914d2[_0xa9c5('0x39')]})[_0xa9c5('0x1d')](function(){});}})[_0xa9c5('0x20')](function(){var _0x240c40=_[_0xa9c5('0x31')](_0x4aa4dd[_0xa9c5('0x32')],{'mixmonitorid':_0x5914d2[_0xa9c5('0x39')]});if(_0x240c40){_0x240c40[_0xa9c5('0x3a')]=_0xa9c5('0x3f');}})[_0xa9c5('0x20')](function(){var _0x1c2ccf=util['format'](_0xa9c5('0x2d'),_0x5914d2['filename']||_0x5914d2[_0xa9c5('0x2a')],_0x5914d2[_0xa9c5('0x2c')]||'wav');var _0x5cbd33=_[_0xa9c5('0x31')](_0x4aa4dd[_0xa9c5('0x32')],{'filename':_0xa9c5('0x36')+_0x1c2ccf['toLowerCase']()});if(_0x5cbd33){_0x5cbd33['status']=_0xa9c5('0x3f');}})[_0xa9c5('0x20')](function(){_0x97803f({'code':0xc8,'message':[_0x5914d2['uniqueid'],_0xa9c5('0x40')][_0xa9c5('0x15')]('\x20')});})[_0xa9c5('0x1d')](function(_0x361b7c){_0x3db918(_0x2dbb48[_0xa9c5('0x11')](0x1f5,[_0x5914d2[_0xa9c5('0x2a')],_0x361b7c['message']['toLowerCase']()]['join']('\x20')));});}else{return _0x3db918(_0x2dbb48[_0xa9c5('0x11')](0x1f5,_0xa9c5('0x3b')));}});},'VoiceQueuesChannels':function(_0x45037e){var _0xef4d2=this;return new Promise(function(_0x380266){var _0x15d044=_['values'](_0x4e9403[_0xa9c5('0x41')]);var _0xdc3fdc={'count':_0x15d044[_0xa9c5('0x23')],'rows':_0x15d044};if(_0x45037e&&_0x45037e[_0xa9c5('0x42')]){if(![_0xa9c5('0x43'),_0xa9c5('0x44')]['includes'](_0x45037e['type'])){return _0x3df556(_0xef4d2[_0xa9c5('0x11')](0x190,'Invalid\x20type\x20parameter.\x20Allowed\x20values:\x20inbound,\x20outbound'));}var _0x1b158f=_['filter'](_0x15d044,function(_0xfae271){return _0xfae271[_0xa9c5('0x42')]===_0x45037e[_0xa9c5('0x42')];});_0xdc3fdc['count']=_0x1b158f[_0xa9c5('0x23')];_0xdc3fdc[_0xa9c5('0x45')]=_0x1b158f;}_0x380266(_0xdc3fdc);});},'VoiceQueuesChannel':function(_0x1a75f3){var _0x27b618=this;return new Promise(function(_0x539672,_0x49422c){var _0x176261=schema(properties[_0xa9c5('0x46')])[_0xa9c5('0x2')](_0x1a75f3);if(_0x176261['length']>0x0){return _0x49422c(_0x27b618[_0xa9c5('0x11')](0x1f4,_[_0xa9c5('0x29')](_0x176261,_0xa9c5('0x1c'))[_0xa9c5('0x15')](',\x20')));}var _0x305a2d=_[_0xa9c5('0x31')](_0x4e9403[_0xa9c5('0x41')],{'uniqueid':_0x1a75f3[_0xa9c5('0x2a')]});if(_0x305a2d){_0x539672(_0x305a2d);}else{return _0x49422c(_0x27b618['error'](0x1f5,_0xa9c5('0x3b')));}});},'VoiceQueuesChannelHangup':function(_0x5a9d4f){var _0x1c5aab=this;return new Promise(function(_0x2b9d39,_0x26bda1){if(ami['isConnected']()==![]){return _0x26bda1(_0x1c5aab[_0xa9c5('0x11')](0x1f4,[config[_0xa9c5('0x12')]['ip'],config['asterisk'][_0xa9c5('0x13')],_0xa9c5('0x14')][_0xa9c5('0x15')]('\x20')));}var _0x3363fb=schema(properties['voicequeuechannelhangup'])[_0xa9c5('0x2')](_0x5a9d4f);if(_0x3363fb[_0xa9c5('0x23')]>0x0){return _0x26bda1(_0x1c5aab[_0xa9c5('0x11')](0x1f4,_[_0xa9c5('0x29')](_0x3363fb,'message')['join'](',\x20')));}var _0x367727=_[_0xa9c5('0x31')](_0x4e9403[_0xa9c5('0x41')],{'uniqueid':_0x5a9d4f[_0xa9c5('0x2a')]});if(_0x367727&&_0x367727[_0xa9c5('0x2b')]){return ami[_0xa9c5('0x1b')]({'action':'Hangup','channel':_0x367727[_0xa9c5('0x2b')]})[_0xa9c5('0x20')](function(_0x2497e1){_0x2b9d39({'code':0xc8,'message':[_0x5a9d4f[_0xa9c5('0x2a')],_0x2497e1[_0xa9c5('0x1c')][_0xa9c5('0x33')]()][_0xa9c5('0x15')]('\x20')});})[_0xa9c5('0x1d')](function(_0x456973){_0x26bda1(_0x1c5aab[_0xa9c5('0x11')](0x1f5,[_0x5a9d4f['uniqueid'],_0x456973['message'][_0xa9c5('0x33')]()][_0xa9c5('0x15')]('\x20')));});}else{return _0x26bda1(_0x1c5aab[_0xa9c5('0x11')](0x1f5,_0xa9c5('0x3b')));}});},'VoiceQueuesChannelRedirect':function(_0x57abd1){var _0x1c2478=this;return new Promise(function(_0x4aa699,_0x36a35a){if(ami[_0xa9c5('0x10')]()==![]){return _0x36a35a(_0x1c2478[_0xa9c5('0x11')](0x1f4,[config[_0xa9c5('0x12')]['ip'],config[_0xa9c5('0x12')][_0xa9c5('0x13')],_0xa9c5('0x14')][_0xa9c5('0x15')]('\x20')));}var _0x2f323e=schema(properties[_0xa9c5('0x47')])[_0xa9c5('0x2')](_0x57abd1);if(_0x2f323e[_0xa9c5('0x23')]>0x0){return _0x36a35a(_0x1c2478['error'](0x1f4,_[_0xa9c5('0x29')](_0x2f323e,_0xa9c5('0x1c'))[_0xa9c5('0x15')](',\x20')));}var _0xce9c8c=_[_0xa9c5('0x31')](_0x4e9403[_0xa9c5('0x41')],{'uniqueid':_0x57abd1[_0xa9c5('0x2a')]});if(_0xce9c8c&&_0xce9c8c['channel']){return ami['Action']({'action':_0xa9c5('0x48'),'channel':_0xce9c8c['channel'],'exten':_0x57abd1[_0xa9c5('0x49')],'context':_0x57abd1[_0xa9c5('0x4a')]||_0xce9c8c['context'],'priority':0x1})[_0xa9c5('0x20')](function(_0x3db169){_0x4aa699({'code':0xc8,'message':[_0x57abd1['uniqueid'],_0x3db169['message'][_0xa9c5('0x33')]()][_0xa9c5('0x15')]('\x20')});})[_0xa9c5('0x1d')](function(_0x514f3d){_0x36a35a(_0x1c2478['error'](0x1f5,[_0x57abd1[_0xa9c5('0x2a')],_0x514f3d[_0xa9c5('0x1c')]['toLowerCase']()][_0xa9c5('0x15')]('\x20')));});}else{return _0x36a35a(_0x1c2478[_0xa9c5('0x11')](0x1f5,_0xa9c5('0x3b')));}});},'Agents':function(_0x3c0c7a){return new Promise(function(_0x135791){var _0x45b0a3=_['values'](_0x4e9403[_0xa9c5('0xc')]);if(_0x3c0c7a&&_0x3c0c7a['id']){var _0x3aeb3c=_[_0xa9c5('0x31')](_0x45b0a3,function(_0xdc6836){return _0xdc6836['id']===_0x3c0c7a['id'];});_0x135791(_0x3aeb3c);}else{_0x135791({'count':_0x45b0a3['length'],'rows':_0x45b0a3});}});},'Telephones':function(){return new Promise(function(_0x87303a){var _0x42c1ca=_['values'](_0x4e9403[_0xa9c5('0x4b')]);_0x87303a({'count':_0x42c1ca[_0xa9c5('0x23')],'rows':_0x42c1ca});});},'Trunks':function(){return new Promise(function(_0x12181b){var _0x57fccf=_[_0xa9c5('0x26')](_0x4e9403[_0xa9c5('0x4c')]);_0x12181b({'count':_0x57fccf[_0xa9c5('0x23')],'rows':_0x57fccf});});},'OutboundChannels':function(){return new Promise(function(_0x2e00f5){var _0x2d449a=_[_0xa9c5('0x26')](_0x4e9403[_0xa9c5('0x4d')]);_0x2e00f5({'count':_0x2d449a['length'],'rows':_0x2d449a});});},'Outbound':function(){return new Promise(function(_0x13b6da){_0x13b6da(_0x4e9403[_0xa9c5('0x44')]);});},'Campaigns':function(){return new Promise(function(_0x7f9e83){var _0x3de672=_[_0xa9c5('0x26')](_0x4e9403[_0xa9c5('0x4e')]);_0x7f9e83({'count':_0x3de672[_0xa9c5('0x23')],'rows':_0x3de672});});},'VoiceQueuesPreview':function(_0x390d0b){var _0x3f6114=this;return new Promise(function(_0x7d0e85,_0x2f350e){_0x1e3c83['run'](_0x390d0b['id'])[_0xa9c5('0x20')](function(_0x2c4b50){_0x7d0e85({'code':0xc8,'message':_0x2c4b50['message']});})[_0xa9c5('0x1d')](function(_0x28e7d6){_0x2f350e(_0x3f6114[_0xa9c5('0x11')](0x1f4,_0x28e7d6['message']));});});},'EventManager':function(_0x27bcc0){var _0x282f84=this;return new Promise(function(_0x22dfd7,_0x30d747){if(!_0x27bcc0['event']){return _0x30d747(_0x282f84[_0xa9c5('0x11')](0x1f4,_0xa9c5('0x4f')));}ami['emit']('custom:'+_0x27bcc0['event'],_0x27bcc0['message']);_0x22dfd7({'code':0xc8,'message':_0x27bcc0});});},'FaxAccounts':function(){return new Promise(function(_0x55fa76){var _0x4efbde=_['values'](_0x4e9403['faxAccounts']);_0x55fa76({'count':_0x4efbde[_0xa9c5('0x23')],'rows':_0x4efbde});});},'SendFax':function(_0x21797e){var _0x19cc35=this;return new Promise(function(_0x247696,_0x3e0f0f){_0x4d9c7a['send'](_0x21797e)['then'](function(_0x4af2e6){_0x247696({'code':0xc8,'message':_0x4af2e6['message']});})[_0xa9c5('0x1d')](function(_0xf9d2c0){_0x3e0f0f(_0x19cc35[_0xa9c5('0x11')](0x1f4,_0xf9d2c0[_0xa9c5('0x1c')]));});});},'CheckAfterSend':function(_0x5253e8){var _0x51543d=this;return new Promise(function(_0x1fde75,_0x1cc236){_0x4d9c7a[_0xa9c5('0x50')](_0x5253e8)[_0xa9c5('0x20')](function(_0x1d89ec){_0x1fde75({'code':0xc8,'message':_0x1d89ec['message']});})[_0xa9c5('0x1d')](function(_0x43ae9){_0x1cc236(_0x51543d[_0xa9c5('0x11')](0x1f4,_0x43ae9['message']));});});}};var _0x26c81e=jayson[_0xa9c5('0x51')](_0x4cb597)[_0xa9c5('0x52')]();_0x26c81e['on'](_0xa9c5('0x11'),function(_0x5b39ea){return _0x3df556(_0x5b39ea);});_0x26c81e[_0xa9c5('0x7')](0x232a,_0xa9c5('0x53'),function(){console['log']('AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!',0x232a);return _0x394d84(_0xa9c5('0x54')+0x232a);});});};
\ No newline at end of file
index b58df28..5be2200 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d94=['merge','bluebird','ioredis','../../../../config/environment','trigger','redis','defaults','localhost','socket.io-emitter','info','[CM][%s][%s]','stringify','emit','data1','data2','isNil','data5','xmd-contactid','ListId','data3','split','phone','$or','map','calleridnum','routeId','destcalleridnum','lastName','mobile','fax','createdAt','scheduledAt','updatedAt','resolve','then','isEmpty','length','[CM][%s][%s]\x20Contact\x20found:%s','uniqueid','[CM][%s][%s]\x20Contact\x20not\x20found','data4','[CM][%s][%s]\x20Autocreate\x20enabled','firstName','calleridname','<unknown>','destcalleridname','Unknown','createContact','[CM][%s][%s]\x20Contact\x20created:%s','[CM][%s][%s]\x20Autocreate\x20disabled','push','format','user:%s','name','trigger:%s','action','toLowerCase'];(function(_0x44216d,_0x4938a7){var _0xeca523=function(_0x11faf1){while(--_0x11faf1){_0x44216d['push'](_0x44216d['shift']());}};_0xeca523(++_0x4938a7);}(_0x0d94,0x11e));var _0x40d9=function(_0xa94a3e,_0x55e44e){_0xa94a3e=_0xa94a3e-0x0;var _0x5ba01e=_0x0d94[_0xa94a3e];return _0x5ba01e;};'use strict';var _=require('lodash');var BPromise=require(_0x40d9('0x0'));var Redis=require(_0x40d9('0x1'));var util=require('util');var config=require(_0x40d9('0x2'));var logger=require('../../../../config/logger')(_0x40d9('0x3'));var cmContactRpc=require('../../rpc/cmContact');config[_0x40d9('0x4')]=_[_0x40d9('0x5')](config['redis'],{'host':_0x40d9('0x6'),'port':0x18eb});var io=require(_0x40d9('0x7'))(new Redis(config[_0x40d9('0x4')]));function emit(_0x2d01be,_0x5728ad,_0x3b270a,_0x2081a8,_0x4fc2ff){logger[_0x40d9('0x8')](_0x40d9('0x9'),_0x2d01be,_0x5728ad['id'],_0x3b270a,_0x2081a8,JSON[_0x40d9('0xa')](_0x4fc2ff));io['to'](_0x3b270a)[_0x40d9('0xb')](_0x2081a8,_0x4fc2ff);}exports['exec']=function(_0x5cb49f,_0x45acda,_0x5eb060,_0x41c28c){var _0x4186e4,_0x39438c;var _0x5d450e={};var _0xfdcdbe;var _0x29a7bf=Number(_0x5eb060[_0x40d9('0xc')]);var _0x1f203f=_0x5eb060['data2']?Boolean(Number(_0x5eb060[_0x40d9('0xd')])):![];var _0x9618c4;var _0x28f3db=![];if(!_[_0x40d9('0xe')](_0x5eb060[_0x40d9('0xf')])){if(_0x5eb060[_0x40d9('0xf')]=='1')_0x28f3db=!![];}if(!_0x28f3db){if(_0x41c28c[_0x40d9('0x10')]){_0x5d450e['id']=_0x41c28c[_0x40d9('0x10')];}}if(!_0x5d450e['id']){_0x5d450e[_0x40d9('0x11')]=_0x29a7bf;_0x9618c4=_0x5eb060['data3']&&_0x5eb060[_0x40d9('0x12')]!=='0'?_0x5eb060[_0x40d9('0x12')][_0x40d9('0x13')](','):[_0x40d9('0x14')];_0x5d450e[_0x40d9('0x15')]=_[_0x40d9('0x16')](_0x9618c4,function(_0x1eca6f){var _0x5a4abd={};_0x5a4abd[_0x1eca6f]=_0x41c28c['routeId']?_0x41c28c['destcalleridnum']:_0x41c28c[_0x40d9('0x17')];return _0x5a4abd;});_0xfdcdbe=_0x41c28c[_0x40d9('0x18')]?_0x41c28c[_0x40d9('0x19')]:_0x41c28c['calleridnum'];}var _0x55e762=['id','firstName',_0x40d9('0x1a'),'phone',_0x40d9('0x1b'),_0x40d9('0x1c'),_0x40d9('0x11'),_0x40d9('0x1d'),_0x40d9('0x1e'),_0x40d9('0x1f')];var _0x270c4d=_['union'](_0x55e762,_0x9618c4);BPromise[_0x40d9('0x20')]()[_0x40d9('0x21')](cmContactRpc['getContacts']({'attributes':_0x270c4d,'where':_0x5d450e,'phone':_0xfdcdbe}))[_0x40d9('0x21')](function(_0x5a34c7){_0x39438c=_0x5a34c7;if(!_[_0x40d9('0x22')](_0x39438c)){if(_0x39438c[_0x40d9('0x23')]===0x1){_0x4186e4=_0x39438c[0x0];logger[_0x40d9('0x8')](_0x40d9('0x24'),_0x41c28c[_0x40d9('0x25')],_0x45acda['id'],_0x4186e4['id']);}else{logger[_0x40d9('0x8')]('[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]',_0x41c28c['uniqueid'],_0x45acda['id'],_[_0x40d9('0x16')](_0x39438c,'id')['join'](','));}return;}else{logger['info'](_0x40d9('0x26'),_0x41c28c[_0x40d9('0x25')],_0x45acda['id']);var _0x159c8f={'ListId':_0x29a7bf};var _0x509d15=_0x5eb060[_0x40d9('0x27')]&&_0x5eb060[_0x40d9('0x27')]!=='0'?_0x5eb060['data4']:_0x40d9('0x14');if(_0x1f203f){logger[_0x40d9('0x8')](_0x40d9('0x28'),_0x41c28c[_0x40d9('0x25')],_0x45acda['id']);_0x159c8f[_0x509d15]=_[_0x40d9('0xe')](_0x41c28c[_0x40d9('0x18')])?_0x41c28c[_0x40d9('0x17')]:_0x41c28c[_0x40d9('0x19')];if(_[_0x40d9('0xe')](_0x41c28c[_0x40d9('0x18')])){_0x159c8f[_0x40d9('0x29')]=_0x41c28c[_0x40d9('0x2a')]&&_0x41c28c[_0x40d9('0x2a')]!==_0x40d9('0x2b')?_0x41c28c[_0x40d9('0x2a')]:'Unknown';}else{_0x159c8f[_0x40d9('0x29')]=_0x41c28c[_0x40d9('0x2c')]&&_0x41c28c[_0x40d9('0x2c')]!=='<unknown>'?_0x41c28c['destcalleridname']:_0x40d9('0x2d');}return BPromise[_0x40d9('0x20')]()[_0x40d9('0x21')](cmContactRpc[_0x40d9('0x2e')](_0x159c8f))['then'](function(_0x1e04cb){_0x4186e4=_0x1e04cb;_0x39438c['push'](_0x1e04cb);if(_0x4186e4){logger['info'](_0x40d9('0x2f'),_0x41c28c[_0x40d9('0x25')],_0x45acda['id'],_0x4186e4['id']);}return;});}else{logger[_0x40d9('0x8')](_0x40d9('0x30'),_0x41c28c[_0x40d9('0x25')],_0x45acda['id']);_0x159c8f[_0x509d15]=_[_0x40d9('0xe')](_0x41c28c[_0x40d9('0x18')])?_0x41c28c[_0x40d9('0x17')]:_0x41c28c[_0x40d9('0x19')];if(_[_0x40d9('0xe')](_0x41c28c[_0x40d9('0x18')])){_0x159c8f[_0x40d9('0x29')]=_0x41c28c[_0x40d9('0x2a')]&&_0x41c28c[_0x40d9('0x2a')]!=='<unknown>'?_0x41c28c['calleridname']:_0x40d9('0x2d');}else{_0x159c8f[_0x40d9('0x29')]=_0x41c28c[_0x40d9('0x2c')]&&_0x41c28c[_0x40d9('0x2c')]!==_0x40d9('0x2b')?_0x41c28c[_0x40d9('0x2c')]:_0x40d9('0x2d');}_0x4186e4=_0x159c8f;_0x39438c[_0x40d9('0x31')](_0x159c8f);return;}}})[_0x40d9('0x21')](function(){if(_0x5cb49f){emit(_0x41c28c['uniqueid'],_0x45acda,util[_0x40d9('0x32')](_0x40d9('0x33'),_0x5cb49f[_0x40d9('0x34')]),util[_0x40d9('0x32')](_0x40d9('0x35'),_0x5eb060[_0x40d9('0x36')][_0x40d9('0x37')]()),{'evt':_[_0x40d9('0x38')](_0x41c28c,{'autoCreate':_0x1f203f}),'contact':_0x4186e4===undefined?{}:_0x4186e4,'contacts':_0x39438c['length']===0x0?undefined:_0x39438c});}});};
\ No newline at end of file
+var _0x9dff=['trigger:%s','action','toLowerCase','merge','ioredis','util','../../../../config/environment','trigger','../../rpc/cmContact','redis','localhost','socket.io-emitter','info','[CM][%s][%s]','stringify','emit','exec','data1','data2','data5','xmd-contactid','ListId','data3','phone','$or','routeId','destcalleridnum','calleridnum','firstName','lastName','fax','createdAt','scheduledAt','updatedAt','union','resolve','then','isEmpty','length','[CM][%s][%s]\x20Contact\x20found:%s','uniqueid','[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]','map','[CM][%s][%s]\x20Contact\x20not\x20found','data4','isNil','calleridname','Unknown','destcalleridname','<unknown>','push','[CM][%s][%s]\x20Contact\x20created:%s','[CM][%s][%s]\x20Autocreate\x20disabled','format','user:%s'];(function(_0x5a9c0c,_0x4ec485){var _0x53c77d=function(_0x1cf384){while(--_0x1cf384){_0x5a9c0c['push'](_0x5a9c0c['shift']());}};_0x53c77d(++_0x4ec485);}(_0x9dff,0x117));var _0xf9df=function(_0x16b9ed,_0x56517a){_0x16b9ed=_0x16b9ed-0x0;var _0x66b1f8=_0x9dff[_0x16b9ed];return _0x66b1f8;};'use strict';var _=require('lodash');var BPromise=require('bluebird');var Redis=require(_0xf9df('0x0'));var util=require(_0xf9df('0x1'));var config=require(_0xf9df('0x2'));var logger=require('../../../../config/logger')(_0xf9df('0x3'));var cmContactRpc=require(_0xf9df('0x4'));config[_0xf9df('0x5')]=_['defaults'](config[_0xf9df('0x5')],{'host':_0xf9df('0x6'),'port':0x18eb});var io=require(_0xf9df('0x7'))(new Redis(config['redis']));function emit(_0x3643e4,_0x2919ac,_0x578e27,_0xd1b532,_0x595277){logger[_0xf9df('0x8')](_0xf9df('0x9'),_0x3643e4,_0x2919ac['id'],_0x578e27,_0xd1b532,JSON[_0xf9df('0xa')](_0x595277));io['to'](_0x578e27)[_0xf9df('0xb')](_0xd1b532,_0x595277);}exports[_0xf9df('0xc')]=function(_0x559448,_0x2261e9,_0x55101c,_0x36cab5){var _0x34f3d1,_0x323659;var _0x2e863a={};var _0x81199c;var _0x32ada2=Number(_0x55101c[_0xf9df('0xd')]);var _0x179342=_0x55101c[_0xf9df('0xe')]?Boolean(Number(_0x55101c[_0xf9df('0xe')])):![];var _0x2e2963;var _0x56270f=![];if(!_['isNil'](_0x55101c[_0xf9df('0xf')])){if(_0x55101c[_0xf9df('0xf')]=='1')_0x56270f=!![];}if(!_0x56270f){if(_0x36cab5[_0xf9df('0x10')]){_0x2e863a['id']=_0x36cab5[_0xf9df('0x10')];}}if(!_0x2e863a['id']){_0x2e863a[_0xf9df('0x11')]=_0x32ada2;_0x2e2963=_0x55101c[_0xf9df('0x12')]&&_0x55101c[_0xf9df('0x12')]!=='0'?_0x55101c['data3']['split'](','):[_0xf9df('0x13')];_0x2e863a[_0xf9df('0x14')]=_['map'](_0x2e2963,function(_0x2164ac){var _0x579413={};_0x579413[_0x2164ac]=_0x36cab5[_0xf9df('0x15')]?_0x36cab5[_0xf9df('0x16')]:_0x36cab5['calleridnum'];return _0x579413;});_0x81199c=_0x36cab5[_0xf9df('0x15')]?_0x36cab5[_0xf9df('0x16')]:_0x36cab5[_0xf9df('0x17')];}var _0x15a037=['id',_0xf9df('0x18'),_0xf9df('0x19'),_0xf9df('0x13'),'mobile',_0xf9df('0x1a'),_0xf9df('0x11'),_0xf9df('0x1b'),_0xf9df('0x1c'),_0xf9df('0x1d')];var _0x4dad1e=_[_0xf9df('0x1e')](_0x15a037,_0x2e2963);BPromise[_0xf9df('0x1f')]()[_0xf9df('0x20')](cmContactRpc['getContacts']({'attributes':_0x4dad1e,'where':_0x2e863a,'phone':_0x81199c}))[_0xf9df('0x20')](function(_0x2630f8){_0x323659=_0x2630f8;if(!_[_0xf9df('0x21')](_0x323659)){if(_0x323659[_0xf9df('0x22')]===0x1){_0x34f3d1=_0x323659[0x0];logger[_0xf9df('0x8')](_0xf9df('0x23'),_0x36cab5[_0xf9df('0x24')],_0x2261e9['id'],_0x34f3d1['id']);}else{logger[_0xf9df('0x8')](_0xf9df('0x25'),_0x36cab5[_0xf9df('0x24')],_0x2261e9['id'],_[_0xf9df('0x26')](_0x323659,'id')['join'](','));}return;}else{logger[_0xf9df('0x8')](_0xf9df('0x27'),_0x36cab5[_0xf9df('0x24')],_0x2261e9['id']);var _0x49fee7={'ListId':_0x32ada2};var _0x4d0ff0=_0x55101c[_0xf9df('0x28')]&&_0x55101c['data4']!=='0'?_0x55101c['data4']:'phone';if(_0x179342){logger[_0xf9df('0x8')]('[CM][%s][%s]\x20Autocreate\x20enabled',_0x36cab5[_0xf9df('0x24')],_0x2261e9['id']);_0x49fee7[_0x4d0ff0]=_[_0xf9df('0x29')](_0x36cab5[_0xf9df('0x15')])?_0x36cab5[_0xf9df('0x17')]:_0x36cab5[_0xf9df('0x16')];if(_[_0xf9df('0x29')](_0x36cab5[_0xf9df('0x15')])){_0x49fee7[_0xf9df('0x18')]=_0x36cab5[_0xf9df('0x2a')]&&_0x36cab5[_0xf9df('0x2a')]!=='<unknown>'?_0x36cab5[_0xf9df('0x2a')]:_0xf9df('0x2b');}else{_0x49fee7[_0xf9df('0x18')]=_0x36cab5[_0xf9df('0x2c')]&&_0x36cab5[_0xf9df('0x2c')]!==_0xf9df('0x2d')?_0x36cab5['destcalleridname']:'Unknown';}return BPromise[_0xf9df('0x1f')]()[_0xf9df('0x20')](cmContactRpc['createContact'](_0x49fee7))[_0xf9df('0x20')](function(_0x228fd5){_0x34f3d1=_0x228fd5;_0x323659[_0xf9df('0x2e')](_0x228fd5);if(_0x34f3d1){logger[_0xf9df('0x8')](_0xf9df('0x2f'),_0x36cab5[_0xf9df('0x24')],_0x2261e9['id'],_0x34f3d1['id']);}return;});}else{logger[_0xf9df('0x8')](_0xf9df('0x30'),_0x36cab5[_0xf9df('0x24')],_0x2261e9['id']);_0x49fee7[_0x4d0ff0]=_[_0xf9df('0x29')](_0x36cab5[_0xf9df('0x15')])?_0x36cab5[_0xf9df('0x17')]:_0x36cab5['destcalleridnum'];if(_[_0xf9df('0x29')](_0x36cab5['routeId'])){_0x49fee7[_0xf9df('0x18')]=_0x36cab5[_0xf9df('0x2a')]&&_0x36cab5['calleridname']!==_0xf9df('0x2d')?_0x36cab5[_0xf9df('0x2a')]:'Unknown';}else{_0x49fee7['firstName']=_0x36cab5['destcalleridname']&&_0x36cab5[_0xf9df('0x2c')]!==_0xf9df('0x2d')?_0x36cab5[_0xf9df('0x2c')]:_0xf9df('0x2b');}_0x34f3d1=_0x49fee7;_0x323659['push'](_0x49fee7);return;}}})['then'](function(){if(_0x559448){emit(_0x36cab5[_0xf9df('0x24')],_0x2261e9,util[_0xf9df('0x31')](_0xf9df('0x32'),_0x559448['name']),util[_0xf9df('0x31')](_0xf9df('0x33'),_0x55101c[_0xf9df('0x34')][_0xf9df('0x35')]()),{'evt':_[_0xf9df('0x36')](_0x36cab5,{'autoCreate':_0x179342}),'contact':_0x34f3d1===undefined?{}:_0x34f3d1,'contacts':_0x323659[_0xf9df('0x22')]===0x0?undefined:_0x323659});}});};
\ No newline at end of file
index 2db968d..709885a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8946=['account','chat','ChatWebsiteId','operator','value','upperFirst','AccountId','interaction','message','event','agent','membername','lastevent','routeId','mailSubstatus','substatus','created','equals','exports','util','lodash','url','mustache','./cmContact','../../../config/environment','../../../config/logger','trigger','../ami','redis','defaults','localhost','socket.io-emitter','winapp','triggers','agents','voiceQueues','templates','voiceExtensions','zendeskAccounts','freshdeskAccounts','salesforceAccounts','sugarcrmAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','accounts','custom:agentcalled','syncCustomEvent','bind','custom:agentconnect','custom:agentringnoanswer','custom:agentnosuchnumber','custom:agentnoanswer','custom:agentbusy','custom:agentcongestion','custom:agentreject','custom:amd','custom:queuecallerabandon','custom:dialbegin','custom:dialconnect','syncAgentDial','custom:dialend','custom:closedinteraction','custom:incomingmessage','custom:acceptmessage','custom:rejectmessage','custom:offlineMessage','prototype','emit','info','clone','undefined','motionChannel','voice','inspect','checkTriggers','interface','hasOwnProperty','status','checkTrigger','merge','variables','Actions','length','toLowerCase','motionbar','data1','TemplateId','data2','html','uri','isNil','data3','location','uriLocation','data4','windowWidth','data5','windowHeight','data6','600','render','format','user:%s','name','trigger:%s:%s','action','contactmanager','exec','integration','queue','urlforward','script','buildUri','search','every','AllConditions','checkConditions','channel','AnyConditions','some','debug','checkTrigger:\x20trigger','evt','field'];(function(_0x1b339c,_0x15a981){var _0x5c6c0b=function(_0x1077cd){while(--_0x1077cd){_0x1b339c['push'](_0x1b339c['shift']());}};_0x5c6c0b(++_0x15a981);}(_0x8946,0x193));var _0x6894=function(_0x2112d4,_0x3c863c){_0x2112d4=_0x2112d4-0x0;var _0x434972=_0x8946[_0x2112d4];return _0x434972;};'use strict';var util=require(_0x6894('0x0'));var _=require(_0x6894('0x1'));var url=require(_0x6894('0x2'));var Mustache=require(_0x6894('0x3'));var Redis=require('ioredis');var urlforward=require('./urlforward');var integration=require('./integration');var cmContact=require(_0x6894('0x4'));var script=require('./script');var config=require(_0x6894('0x5'));var logger=require(_0x6894('0x6'))(_0x6894('0x7'));var ami=require(_0x6894('0x8'));config[_0x6894('0x9')]=_[_0x6894('0xa')](config[_0x6894('0x9')],{'host':_0x6894('0xb'),'port':0x18eb});var io=require(_0x6894('0xc'))(new Redis(config['redis']));var operators={'equals':function(_0x1e71e8,_0x114ef2){return _0x1e71e8==_0x114ef2;},'not_equals':function(_0x29dc51,_0x1da585){return _0x29dc51!=_0x1da585;}};var barAndWebActions=['popup',_0x6894('0x2'),_0x6894('0xd')];function Trigger(_0x202610){this['triggers']=_0x202610[_0x6894('0xe')];this['agents']=_0x202610[_0x6894('0xf')];this[_0x6894('0x10')]=_0x202610[_0x6894('0x10')];this[_0x6894('0x11')]=_0x202610[_0x6894('0x11')];this[_0x6894('0x12')]=_0x202610['voiceExtensions'];this['zendeskAccounts']=_0x202610[_0x6894('0x13')];this[_0x6894('0x14')]=_0x202610[_0x6894('0x14')];this[_0x6894('0x15')]=_0x202610[_0x6894('0x15')];this['sugarcrmAccounts']=_0x202610[_0x6894('0x16')];this[_0x6894('0x17')]=_0x202610[_0x6894('0x17')];this[_0x6894('0x18')]=_0x202610[_0x6894('0x18')];this[_0x6894('0x19')]=_0x202610['vtigerAccounts'];this[_0x6894('0x1a')]=_0x202610[_0x6894('0x1a')];this[_0x6894('0x1b')]=_0x202610[_0x6894('0x1b')];this['freshsalesAccounts']=_0x202610[_0x6894('0x1c')];this[_0x6894('0x1d')]={'zendesk':this[_0x6894('0x13')],'salesforce':this[_0x6894('0x15')],'freshdesk':this[_0x6894('0x14')],'sugarcrm':this[_0x6894('0x16')],'zoho':this[_0x6894('0x17')],'desk':this[_0x6894('0x18')],'vtiger':this[_0x6894('0x19')],'dynamics365':this[_0x6894('0x1b')],'freshsales':this[_0x6894('0x1c')],'servicenow':this[_0x6894('0x1a')]};ami['on'](_0x6894('0x1e'),this[_0x6894('0x1f')][_0x6894('0x20')](this));ami['on'](_0x6894('0x21'),this[_0x6894('0x1f')][_0x6894('0x20')](this));ami['on'](_0x6894('0x22'),this[_0x6894('0x1f')][_0x6894('0x20')](this));ami['on']('custom:agentcomplete',this[_0x6894('0x1f')][_0x6894('0x20')](this));ami['on'](_0x6894('0x23'),this['syncCustomEvent']['bind'](this));ami['on'](_0x6894('0x24'),this['syncCustomEvent']['bind'](this));ami['on'](_0x6894('0x25'),this[_0x6894('0x1f')][_0x6894('0x20')](this));ami['on'](_0x6894('0x26'),this[_0x6894('0x1f')]['bind'](this));ami['on'](_0x6894('0x27'),this[_0x6894('0x1f')][_0x6894('0x20')](this));ami['on'](_0x6894('0x28'),this[_0x6894('0x1f')][_0x6894('0x20')](this));ami['on'](_0x6894('0x29'),this['syncCustomEvent']['bind'](this));ami['on']('custom:timeout',this['syncCustomEvent'][_0x6894('0x20')](this));ami['on'](_0x6894('0x2a'),this['syncAgentDial'][_0x6894('0x20')](this));ami['on'](_0x6894('0x2b'),this[_0x6894('0x2c')][_0x6894('0x20')](this));ami['on'](_0x6894('0x2d'),this[_0x6894('0x2c')][_0x6894('0x20')](this));ami['on']('custom:newinteraction',this[_0x6894('0x1f')][_0x6894('0x20')](this));ami['on'](_0x6894('0x2e'),this[_0x6894('0x1f')][_0x6894('0x20')](this));ami['on']('custom:substatus',this[_0x6894('0x1f')][_0x6894('0x20')](this));ami['on'](_0x6894('0x2f'),this[_0x6894('0x1f')][_0x6894('0x20')](this));ami['on']('custom:outgoingmessage',this[_0x6894('0x1f')]['bind'](this));ami['on'](_0x6894('0x30'),this[_0x6894('0x1f')][_0x6894('0x20')](this));ami['on'](_0x6894('0x31'),this[_0x6894('0x1f')][_0x6894('0x20')](this));ami['on'](_0x6894('0x32'),this[_0x6894('0x1f')][_0x6894('0x20')](this));}Trigger[_0x6894('0x33')][_0x6894('0x34')]=function(_0x588f85,_0x1f722b,_0x363ddb){logger[_0x6894('0x35')](_0x588f85,_0x1f722b,JSON['stringify'](_0x363ddb));io['to'](_0x588f85)[_0x6894('0x34')](_0x1f722b,_0x363ddb);};Trigger[_0x6894('0x33')]['syncCustomEvent']=function(_0x4e8e98){var _0x34410d=_[_0x6894('0x36')](_0x4e8e98);if(typeof _0x34410d['motionChannel']===_0x6894('0x37')){_0x34410d[_0x6894('0x38')]=_0x6894('0x39');}logger['debug'](_0x6894('0x1f'),util[_0x6894('0x3a')](_0x34410d,{'showHidden':!![],'depth':null}));this[_0x6894('0x3b')](_0x34410d);};Trigger['prototype']['syncAgentDial']=function(_0x46044a){if(this['agents'][_0x46044a[_0x6894('0x3c')]]){this[_0x6894('0x1f')](_0x46044a);}};Trigger[_0x6894('0x33')][_0x6894('0x3b')]=function(_0x25b04c){var _0x4834c6;for(var _0x3fbd40 in this[_0x6894('0xe')]){if(this[_0x6894('0xe')][_0x6894('0x3d')](_0x3fbd40)){if(this[_0x6894('0xe')][_0x3fbd40][_0x6894('0x3e')]){_0x4834c6=this[_0x6894('0x3f')](this[_0x6894('0xe')][_0x3fbd40],_0x25b04c);if(_0x4834c6){_[_0x6894('0x40')](_0x25b04c,_0x25b04c[_0x6894('0x41')]);for(var _0x5e9224=0x0,_0x34f8ae,_0x238b86,_0x7e20d6;_0x5e9224<this[_0x6894('0xe')][_0x3fbd40][_0x6894('0x42')][_0x6894('0x43')];_0x5e9224+=0x1){_0x34f8ae=this['triggers'][_0x3fbd40]['Actions'][_0x5e9224];if(this[_0x6894('0xf')][_0x25b04c[_0x6894('0x3c')]]){switch(_0x34f8ae['action'][_0x6894('0x44')]()){case'contactmanager':break;case _0x6894('0x45'):case'browser':var _0x17b3cc={};switch(barAndWebActions[_0x34f8ae[_0x6894('0x46')]]){case'popup':_0x17b3cc[_0x6894('0x47')]=_0x34f8ae[_0x6894('0x48')];_0x17b3cc[_0x6894('0x49')]=this[_0x6894('0x11')][_0x34f8ae[_0x6894('0x48')]]?Mustache['render'](this[_0x6894('0x11')][_0x34f8ae[_0x6894('0x48')]][_0x6894('0x49')],_0x25b04c):'template\x20not\x20found';break;case _0x6894('0x2'):_0x17b3cc[_0x6894('0x4a')]=this['buildUri'](_0x34f8ae[_0x6894('0x48')],_0x25b04c,_[_0x6894('0x4b')](_0x34f8ae[_0x6894('0x4c')])?!![]:parseInt(_0x34f8ae[_0x6894('0x4c')],0xa));if(_['isNil'](_0x34f8ae['data4'])){_0x17b3cc[_0x6894('0x4d')]='0';}else{_0x17b3cc[_0x6894('0x4e')]=_0x34f8ae[_0x6894('0x4f')];_0x17b3cc[_0x6894('0x50')]=_[_0x6894('0x4b')](_0x34f8ae[_0x6894('0x51')])?'800':_0x34f8ae[_0x6894('0x51')];_0x17b3cc[_0x6894('0x52')]=_[_0x6894('0x4b')](_0x34f8ae[_0x6894('0x53')])?_0x6894('0x54'):_0x34f8ae[_0x6894('0x53')];}break;case'winapp':_0x17b3cc['winApplication']=_0x34f8ae[_0x6894('0x48')]?Mustache[_0x6894('0x55')](_0x34f8ae[_0x6894('0x48')],_0x25b04c):'';_0x17b3cc['winArguments']=_0x34f8ae[_0x6894('0x4c')]?Mustache[_0x6894('0x55')](_0x34f8ae[_0x6894('0x4c')],_0x25b04c):'';break;}this[_0x6894('0x34')](util[_0x6894('0x56')](_0x6894('0x57'),this[_0x6894('0xf')][_0x25b04c['interface']][_0x6894('0x58')]),util[_0x6894('0x56')](_0x6894('0x59'),_0x34f8ae[_0x6894('0x5a')][_0x6894('0x44')](),barAndWebActions[_0x34f8ae[_0x6894('0x46')]]),_[_0x6894('0x40')](_0x17b3cc,_0x25b04c));break;case'jscripty':this['emit'](util[_0x6894('0x56')](_0x6894('0x57'),this[_0x6894('0xf')][_0x25b04c['interface']][_0x6894('0x58')]),util[_0x6894('0x56')]('trigger:%s',_0x34f8ae[_0x6894('0x5a')]['toLowerCase']()),_['merge']({'ProjectId':parseInt(_0x34f8ae[_0x6894('0x46')],0xa)},_0x25b04c));break;default:this[_0x6894('0x34')](util['format'](_0x6894('0x57'),this[_0x6894('0xf')][_0x25b04c['interface']][_0x6894('0x58')]),util['format']('trigger:%s',_0x34f8ae[_0x6894('0x5a')]['toLowerCase']()),_[_0x6894('0x40')]({},_0x34f8ae,_0x25b04c));}}switch(_0x34f8ae[_0x6894('0x5a')][_0x6894('0x44')]()){case _0x6894('0x5b'):cmContact[_0x6894('0x5c')](this['agents'][_0x25b04c[_0x6894('0x3c')]],this[_0x6894('0xe')][_0x3fbd40],_0x34f8ae,_0x25b04c);break;case _0x6894('0x5d'):integration[_0x6894('0x5c')](_0x34f8ae,_0x25b04c,this[_0x6894('0x1d')],this['agents'][_0x25b04c[_0x6894('0x3c')]],this[_0x6894('0x10')][_0x25b04c[_0x6894('0x5e')]],this[_0x6894('0x12')][_0x25b04c['routeId']]);break;case _0x6894('0x5f'):urlforward[_0x6894('0x5c')](_0x34f8ae,_0x25b04c);break;case _0x6894('0x60'):script[_0x6894('0x5c')](_0x34f8ae,_0x25b04c);break;}}}}}}};Trigger['prototype'][_0x6894('0x61')]=function(_0x47812b,_0x533f49,_0x441a7f){var _0xcd7ea2=url['parse'](Mustache[_0x6894('0x55')](_0x47812b,_0x533f49),!![]);if(_0x441a7f){_[_0x6894('0x40')](_0xcd7ea2['query'],_0x533f49);}delete _0xcd7ea2[_0x6894('0x62')];var _0x44a9b9=url['format'](_0xcd7ea2);_0x44a9b9=_0x44a9b9['replace'](/\/\?/g,'?');return _0x44a9b9;};Trigger[_0x6894('0x33')][_0x6894('0x3f')]=function(_0x4bbd46,_0x91653d){var _0x36fec6=!![];var _0x5cf14b=!![];var _0x1dd5b9=![];if(_0x4bbd46['channel']===_0x91653d[_0x6894('0x38')]){_0x1dd5b9=!![];}if(_0x4bbd46['AllConditions'][_0x6894('0x43')]){_0x36fec6=_[_0x6894('0x63')](_0x4bbd46[_0x6894('0x64')],this[_0x6894('0x65')](_0x91653d,_0x4bbd46[_0x6894('0x66')]));}if(_0x4bbd46[_0x6894('0x67')][_0x6894('0x43')]){_0x5cf14b=_[_0x6894('0x68')](_0x4bbd46[_0x6894('0x67')],this['checkConditions'](_0x91653d,_0x4bbd46[_0x6894('0x66')]));}var _0x532924=_0x1dd5b9&&_0x36fec6&&_0x5cf14b;logger[_0x6894('0x69')](_0x6894('0x6a'),util['inspect'](_0x4bbd46,{'showHidden':!![],'depth':null}),_0x6894('0x6b'),util[_0x6894('0x3a')](_0x91653d,{'showHidden':!![],'depth':null}),_0x1dd5b9,_0x36fec6,_0x5cf14b);return _0x532924;};Trigger['prototype'][_0x6894('0x65')]=function(_0x29ee08,_0x567fc4){return function(_0x22e98e){switch(_0x22e98e[_0x6894('0x6c')]){case _0x6894('0x6d'):if(_0x29ee08[_0x6894('0x66')]===_0x567fc4){if(_0x567fc4===_0x6894('0x6e')){return _0x29ee08[_0x6894('0x6f')]?operators[_0x22e98e[_0x6894('0x70')]](Number(_0x22e98e[_0x6894('0x71')]),_0x29ee08[_0x6894('0x6f')]):![];}else{return _0x29ee08[_[_0x6894('0x72')](_0x567fc4)+_0x6894('0x73')]?operators[_0x22e98e[_0x6894('0x70')]](Number(_0x22e98e['value']),_0x29ee08[_[_0x6894('0x72')](_0x567fc4)+_0x6894('0x73')]):![];}}break;case _0x6894('0x74'):case _0x6894('0x75'):if(_0x29ee08[_0x6894('0x66')]===_0x567fc4){return _0x29ee08['event']?operators[_0x22e98e[_0x6894('0x70')]](_0x22e98e[_0x6894('0x71')],_0x29ee08[_0x6894('0x76')]):![];}break;case'queue':return _0x29ee08[_0x6894('0x5e')]?operators[_0x22e98e[_0x6894('0x70')]](_0x22e98e[_0x6894('0x71')],_0x29ee08[_0x6894('0x5e')]):![];case _0x6894('0x77'):return _0x29ee08[_0x6894('0x78')]?operators[_0x22e98e[_0x6894('0x70')]](_0x22e98e[_0x6894('0x71')],_0x29ee08[_0x6894('0x78')]):![];case'lastevent':return _0x29ee08[_0x6894('0x79')]?operators[_0x22e98e['operator']](_0x22e98e['value'],_0x29ee08[_0x6894('0x79')]):![];case'routeId':return _0x29ee08[_0x6894('0x7a')]?operators[_0x22e98e['operator']](_0x22e98e[_0x6894('0x71')],_0x29ee08['routeId']):![];case _0x6894('0x7b'):if(_0x22e98e[_0x6894('0x71')]==='null')_0x22e98e[_0x6894('0x71')]=null;return typeof _0x29ee08[_0x6894('0x7c')]!==_0x6894('0x37')?operators[_0x22e98e[_0x6894('0x70')]](_0x22e98e['value'],_0x29ee08[_0x6894('0x7c')]):![];case'offlineMessage':if(_0x29ee08[_0x6894('0x66')]===_0x567fc4){return _0x22e98e[_0x6894('0x71')]===_0x6894('0x7d')&&_0x22e98e['operator']===_0x6894('0x7e')?!![]:![];}break;}return![];};};module[_0x6894('0x7f')]=Trigger;
\ No newline at end of file
+var _0xdd83=['voiceQueues','templates','voiceExtensions','zendeskAccounts','freshdeskAccounts','salesforceAccounts','sugarcrmAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','custom:agentcalled','custom:agentconnect','bind','custom:agentringnoanswer','custom:agentcomplete','syncCustomEvent','custom:agentnosuchnumber','custom:agentnoanswer','custom:agentbusy','custom:agentcongestion','custom:agentreject','custom:amd','custom:queuecallerabandon','custom:timeout','syncAgentDial','custom:dialconnect','custom:dialend','custom:newinteraction','custom:closedinteraction','custom:incomingmessage','custom:acceptmessage','custom:rejectmessage','emit','info','stringify','prototype','clone','motionChannel','undefined','inspect','checkTriggers','interface','status','merge','variables','length','Actions','toLowerCase','motionbar','browser','data2','html','render','buildUri','isNil','data3','data4','location','windowWidth','data5','windowHeight','data6','600','winApplication','format','action','jscripty','user:%s','name','trigger:%s','data1','exec','integration','accounts','queue','routeId','urlforward','parse','search','channel','AllConditions','every','checkConditions','debug','checkTrigger:\x20trigger','account','chat','operator','value','ChatWebsiteId','upperFirst','AccountId','event','membername','mailSubstatus','substatus','offlineMessage','created','equals','exports','util','lodash','url','mustache','ioredis','./urlforward','./integration','./script','../../../config/environment','../../../config/logger','trigger','../ami','redis','defaults','localhost','popup','winapp','triggers','agents'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xdd83,0xe1));var _0x3dd8=function(_0x1589dd,_0x2b9d22){_0x1589dd=_0x1589dd-0x0;var _0x1bddd1=_0xdd83[_0x1589dd];return _0x1bddd1;};'use strict';var util=require(_0x3dd8('0x0'));var _=require(_0x3dd8('0x1'));var url=require(_0x3dd8('0x2'));var Mustache=require(_0x3dd8('0x3'));var Redis=require(_0x3dd8('0x4'));var urlforward=require(_0x3dd8('0x5'));var integration=require(_0x3dd8('0x6'));var cmContact=require('./cmContact');var script=require(_0x3dd8('0x7'));var config=require(_0x3dd8('0x8'));var logger=require(_0x3dd8('0x9'))(_0x3dd8('0xa'));var ami=require(_0x3dd8('0xb'));config[_0x3dd8('0xc')]=_[_0x3dd8('0xd')](config[_0x3dd8('0xc')],{'host':_0x3dd8('0xe'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x3dd8('0xc')]));var operators={'equals':function(_0x3e6bbb,_0x59024b){return _0x3e6bbb==_0x59024b;},'not_equals':function(_0x2d6b44,_0x2326fd){return _0x2d6b44!=_0x2326fd;}};var barAndWebActions=[_0x3dd8('0xf'),_0x3dd8('0x2'),_0x3dd8('0x10')];function Trigger(_0x3b8444){this[_0x3dd8('0x11')]=_0x3b8444['triggers'];this[_0x3dd8('0x12')]=_0x3b8444['agents'];this[_0x3dd8('0x13')]=_0x3b8444[_0x3dd8('0x13')];this[_0x3dd8('0x14')]=_0x3b8444[_0x3dd8('0x14')];this[_0x3dd8('0x15')]=_0x3b8444['voiceExtensions'];this[_0x3dd8('0x16')]=_0x3b8444[_0x3dd8('0x16')];this[_0x3dd8('0x17')]=_0x3b8444['freshdeskAccounts'];this[_0x3dd8('0x18')]=_0x3b8444[_0x3dd8('0x18')];this[_0x3dd8('0x19')]=_0x3b8444['sugarcrmAccounts'];this[_0x3dd8('0x1a')]=_0x3b8444[_0x3dd8('0x1a')];this[_0x3dd8('0x1b')]=_0x3b8444[_0x3dd8('0x1b')];this[_0x3dd8('0x1c')]=_0x3b8444[_0x3dd8('0x1c')];this['servicenowAccounts']=_0x3b8444[_0x3dd8('0x1d')];this[_0x3dd8('0x1e')]=_0x3b8444[_0x3dd8('0x1e')];this['freshsalesAccounts']=_0x3b8444[_0x3dd8('0x1f')];this['accounts']={'zendesk':this[_0x3dd8('0x16')],'salesforce':this[_0x3dd8('0x18')],'freshdesk':this[_0x3dd8('0x17')],'sugarcrm':this[_0x3dd8('0x19')],'zoho':this[_0x3dd8('0x1a')],'desk':this[_0x3dd8('0x1b')],'vtiger':this[_0x3dd8('0x1c')],'dynamics365':this['dynamics365Accounts'],'freshsales':this[_0x3dd8('0x1f')],'servicenow':this[_0x3dd8('0x1d')]};ami['on'](_0x3dd8('0x20'),this['syncCustomEvent']['bind'](this));ami['on'](_0x3dd8('0x21'),this['syncCustomEvent'][_0x3dd8('0x22')](this));ami['on'](_0x3dd8('0x23'),this['syncCustomEvent'][_0x3dd8('0x22')](this));ami['on'](_0x3dd8('0x24'),this[_0x3dd8('0x25')][_0x3dd8('0x22')](this));ami['on'](_0x3dd8('0x26'),this[_0x3dd8('0x25')][_0x3dd8('0x22')](this));ami['on'](_0x3dd8('0x27'),this['syncCustomEvent'][_0x3dd8('0x22')](this));ami['on'](_0x3dd8('0x28'),this[_0x3dd8('0x25')][_0x3dd8('0x22')](this));ami['on'](_0x3dd8('0x29'),this['syncCustomEvent'][_0x3dd8('0x22')](this));ami['on'](_0x3dd8('0x2a'),this[_0x3dd8('0x25')][_0x3dd8('0x22')](this));ami['on'](_0x3dd8('0x2b'),this['syncCustomEvent'][_0x3dd8('0x22')](this));ami['on'](_0x3dd8('0x2c'),this[_0x3dd8('0x25')][_0x3dd8('0x22')](this));ami['on'](_0x3dd8('0x2d'),this[_0x3dd8('0x25')]['bind'](this));ami['on']('custom:dialbegin',this[_0x3dd8('0x2e')][_0x3dd8('0x22')](this));ami['on'](_0x3dd8('0x2f'),this[_0x3dd8('0x2e')][_0x3dd8('0x22')](this));ami['on'](_0x3dd8('0x30'),this[_0x3dd8('0x2e')][_0x3dd8('0x22')](this));ami['on'](_0x3dd8('0x31'),this[_0x3dd8('0x25')][_0x3dd8('0x22')](this));ami['on'](_0x3dd8('0x32'),this['syncCustomEvent']['bind'](this));ami['on']('custom:substatus',this[_0x3dd8('0x25')][_0x3dd8('0x22')](this));ami['on'](_0x3dd8('0x33'),this[_0x3dd8('0x25')][_0x3dd8('0x22')](this));ami['on']('custom:outgoingmessage',this['syncCustomEvent'][_0x3dd8('0x22')](this));ami['on'](_0x3dd8('0x34'),this[_0x3dd8('0x25')][_0x3dd8('0x22')](this));ami['on'](_0x3dd8('0x35'),this['syncCustomEvent']['bind'](this));ami['on']('custom:offlineMessage',this[_0x3dd8('0x25')][_0x3dd8('0x22')](this));}Trigger['prototype'][_0x3dd8('0x36')]=function(_0x327ee9,_0x489434,_0x2836a0){logger[_0x3dd8('0x37')](_0x327ee9,_0x489434,JSON[_0x3dd8('0x38')](_0x2836a0));io['to'](_0x327ee9)[_0x3dd8('0x36')](_0x489434,_0x2836a0);};Trigger[_0x3dd8('0x39')][_0x3dd8('0x25')]=function(_0x15e030){var _0x379535=_[_0x3dd8('0x3a')](_0x15e030);if(typeof _0x379535[_0x3dd8('0x3b')]===_0x3dd8('0x3c')){_0x379535[_0x3dd8('0x3b')]='voice';}logger['debug'](_0x3dd8('0x25'),util[_0x3dd8('0x3d')](_0x379535,{'showHidden':!![],'depth':null}));this[_0x3dd8('0x3e')](_0x379535);};Trigger[_0x3dd8('0x39')][_0x3dd8('0x2e')]=function(_0x1c0705){if(this['agents'][_0x1c0705[_0x3dd8('0x3f')]]){this['syncCustomEvent'](_0x1c0705);}};Trigger[_0x3dd8('0x39')][_0x3dd8('0x3e')]=function(_0x1fe483){var _0x4e8e79;for(var _0x52a280 in this[_0x3dd8('0x11')]){if(this[_0x3dd8('0x11')]['hasOwnProperty'](_0x52a280)){if(this[_0x3dd8('0x11')][_0x52a280][_0x3dd8('0x40')]){_0x4e8e79=this['checkTrigger'](this[_0x3dd8('0x11')][_0x52a280],_0x1fe483);if(_0x4e8e79){_[_0x3dd8('0x41')](_0x1fe483,_0x1fe483[_0x3dd8('0x42')]);for(var _0xc22500=0x0,_0x2c0f57,_0x5ab249,_0x5d05f8;_0xc22500<this[_0x3dd8('0x11')][_0x52a280]['Actions'][_0x3dd8('0x43')];_0xc22500+=0x1){_0x2c0f57=this[_0x3dd8('0x11')][_0x52a280][_0x3dd8('0x44')][_0xc22500];if(this['agents'][_0x1fe483[_0x3dd8('0x3f')]]){switch(_0x2c0f57['action'][_0x3dd8('0x45')]()){case'contactmanager':break;case _0x3dd8('0x46'):case _0x3dd8('0x47'):var _0x5e4bad={};switch(barAndWebActions[_0x2c0f57['data1']]){case _0x3dd8('0xf'):_0x5e4bad['TemplateId']=_0x2c0f57[_0x3dd8('0x48')];_0x5e4bad[_0x3dd8('0x49')]=this[_0x3dd8('0x14')][_0x2c0f57[_0x3dd8('0x48')]]?Mustache[_0x3dd8('0x4a')](this[_0x3dd8('0x14')][_0x2c0f57['data2']]['html'],_0x1fe483):'template\x20not\x20found';break;case _0x3dd8('0x2'):_0x5e4bad['uri']=this[_0x3dd8('0x4b')](_0x2c0f57[_0x3dd8('0x48')],_0x1fe483,_[_0x3dd8('0x4c')](_0x2c0f57[_0x3dd8('0x4d')])?!![]:parseInt(_0x2c0f57[_0x3dd8('0x4d')],0xa));if(_[_0x3dd8('0x4c')](_0x2c0f57[_0x3dd8('0x4e')])){_0x5e4bad[_0x3dd8('0x4f')]='0';}else{_0x5e4bad['uriLocation']=_0x2c0f57[_0x3dd8('0x4e')];_0x5e4bad[_0x3dd8('0x50')]=_[_0x3dd8('0x4c')](_0x2c0f57[_0x3dd8('0x51')])?'800':_0x2c0f57[_0x3dd8('0x51')];_0x5e4bad[_0x3dd8('0x52')]=_[_0x3dd8('0x4c')](_0x2c0f57[_0x3dd8('0x53')])?_0x3dd8('0x54'):_0x2c0f57['data6'];}break;case _0x3dd8('0x10'):_0x5e4bad[_0x3dd8('0x55')]=_0x2c0f57[_0x3dd8('0x48')]?Mustache[_0x3dd8('0x4a')](_0x2c0f57[_0x3dd8('0x48')],_0x1fe483):'';_0x5e4bad['winArguments']=_0x2c0f57[_0x3dd8('0x4d')]?Mustache[_0x3dd8('0x4a')](_0x2c0f57[_0x3dd8('0x4d')],_0x1fe483):'';break;}this[_0x3dd8('0x36')](util[_0x3dd8('0x56')]('user:%s',this[_0x3dd8('0x12')][_0x1fe483[_0x3dd8('0x3f')]]['name']),util[_0x3dd8('0x56')]('trigger:%s:%s',_0x2c0f57[_0x3dd8('0x57')][_0x3dd8('0x45')](),barAndWebActions[_0x2c0f57['data1']]),_[_0x3dd8('0x41')](_0x5e4bad,_0x1fe483));break;case _0x3dd8('0x58'):this[_0x3dd8('0x36')](util[_0x3dd8('0x56')](_0x3dd8('0x59'),this[_0x3dd8('0x12')][_0x1fe483[_0x3dd8('0x3f')]][_0x3dd8('0x5a')]),util[_0x3dd8('0x56')](_0x3dd8('0x5b'),_0x2c0f57['action'][_0x3dd8('0x45')]()),_[_0x3dd8('0x41')]({'ProjectId':parseInt(_0x2c0f57[_0x3dd8('0x5c')],0xa)},_0x1fe483));break;default:this[_0x3dd8('0x36')](util['format'](_0x3dd8('0x59'),this['agents'][_0x1fe483[_0x3dd8('0x3f')]]['name']),util['format'](_0x3dd8('0x5b'),_0x2c0f57[_0x3dd8('0x57')][_0x3dd8('0x45')]()),_[_0x3dd8('0x41')]({},_0x2c0f57,_0x1fe483));}}switch(_0x2c0f57[_0x3dd8('0x57')]['toLowerCase']()){case'contactmanager':cmContact[_0x3dd8('0x5d')](this[_0x3dd8('0x12')][_0x1fe483[_0x3dd8('0x3f')]],this[_0x3dd8('0x11')][_0x52a280],_0x2c0f57,_0x1fe483);break;case _0x3dd8('0x5e'):integration[_0x3dd8('0x5d')](_0x2c0f57,_0x1fe483,this[_0x3dd8('0x5f')],this[_0x3dd8('0x12')][_0x1fe483[_0x3dd8('0x3f')]],this[_0x3dd8('0x13')][_0x1fe483[_0x3dd8('0x60')]],this['voiceExtensions'][_0x1fe483[_0x3dd8('0x61')]]);break;case _0x3dd8('0x62'):urlforward[_0x3dd8('0x5d')](_0x2c0f57,_0x1fe483);break;case'script':script[_0x3dd8('0x5d')](_0x2c0f57,_0x1fe483);break;}}}}}}};Trigger[_0x3dd8('0x39')]['buildUri']=function(_0x13a47a,_0x59ed29,_0x2b6076){var _0x5dddd3=url[_0x3dd8('0x63')](Mustache[_0x3dd8('0x4a')](_0x13a47a,_0x59ed29),!![]);if(_0x2b6076){_[_0x3dd8('0x41')](_0x5dddd3['query'],_0x59ed29);}delete _0x5dddd3[_0x3dd8('0x64')];var _0x55331a=url[_0x3dd8('0x56')](_0x5dddd3);_0x55331a=_0x55331a['replace'](/\/\?/g,'?');return _0x55331a;};Trigger[_0x3dd8('0x39')]['checkTrigger']=function(_0x53d79a,_0xb5f3bc){var _0x3c1214=!![];var _0x3f93ac=!![];var _0xf7f52d=![];if(_0x53d79a[_0x3dd8('0x65')]===_0xb5f3bc['motionChannel']){_0xf7f52d=!![];}if(_0x53d79a[_0x3dd8('0x66')][_0x3dd8('0x43')]){_0x3c1214=_[_0x3dd8('0x67')](_0x53d79a['AllConditions'],this['checkConditions'](_0xb5f3bc,_0x53d79a[_0x3dd8('0x65')]));}if(_0x53d79a['AnyConditions']['length']){_0x3f93ac=_['some'](_0x53d79a['AnyConditions'],this[_0x3dd8('0x68')](_0xb5f3bc,_0x53d79a['channel']));}var _0x626da4=_0xf7f52d&&_0x3c1214&&_0x3f93ac;logger[_0x3dd8('0x69')](_0x3dd8('0x6a'),util[_0x3dd8('0x3d')](_0x53d79a,{'showHidden':!![],'depth':null}),'evt',util['inspect'](_0xb5f3bc,{'showHidden':!![],'depth':null}),_0xf7f52d,_0x3c1214,_0x3f93ac);return _0x626da4;};Trigger[_0x3dd8('0x39')]['checkConditions']=function(_0x2702e0,_0x587d60){return function(_0x5f3cfc){switch(_0x5f3cfc['field']){case _0x3dd8('0x6b'):if(_0x2702e0[_0x3dd8('0x65')]===_0x587d60){if(_0x587d60===_0x3dd8('0x6c')){return _0x2702e0['ChatWebsiteId']?operators[_0x5f3cfc[_0x3dd8('0x6d')]](Number(_0x5f3cfc[_0x3dd8('0x6e')]),_0x2702e0[_0x3dd8('0x6f')]):![];}else{return _0x2702e0[_[_0x3dd8('0x70')](_0x587d60)+_0x3dd8('0x71')]?operators[_0x5f3cfc[_0x3dd8('0x6d')]](Number(_0x5f3cfc[_0x3dd8('0x6e')]),_0x2702e0[_[_0x3dd8('0x70')](_0x587d60)+'AccountId']):![];}}break;case'interaction':case'message':if(_0x2702e0[_0x3dd8('0x65')]===_0x587d60){return _0x2702e0[_0x3dd8('0x72')]?operators[_0x5f3cfc[_0x3dd8('0x6d')]](_0x5f3cfc[_0x3dd8('0x6e')],_0x2702e0[_0x3dd8('0x72')]):![];}break;case _0x3dd8('0x60'):return _0x2702e0[_0x3dd8('0x60')]?operators[_0x5f3cfc[_0x3dd8('0x6d')]](_0x5f3cfc[_0x3dd8('0x6e')],_0x2702e0[_0x3dd8('0x60')]):![];case'agent':return _0x2702e0[_0x3dd8('0x73')]?operators[_0x5f3cfc['operator']](_0x5f3cfc['value'],_0x2702e0[_0x3dd8('0x73')]):![];case'lastevent':return _0x2702e0['lastevent']?operators[_0x5f3cfc['operator']](_0x5f3cfc[_0x3dd8('0x6e')],_0x2702e0['lastevent']):![];case _0x3dd8('0x61'):return _0x2702e0['routeId']?operators[_0x5f3cfc[_0x3dd8('0x6d')]](_0x5f3cfc[_0x3dd8('0x6e')],_0x2702e0[_0x3dd8('0x61')]):![];case _0x3dd8('0x74'):if(_0x5f3cfc[_0x3dd8('0x6e')]==='null')_0x5f3cfc[_0x3dd8('0x6e')]=null;return typeof _0x2702e0[_0x3dd8('0x75')]!==_0x3dd8('0x3c')?operators[_0x5f3cfc[_0x3dd8('0x6d')]](_0x5f3cfc[_0x3dd8('0x6e')],_0x2702e0['substatus']):![];case _0x3dd8('0x76'):if(_0x2702e0[_0x3dd8('0x65')]===_0x587d60){return _0x5f3cfc[_0x3dd8('0x6e')]===_0x3dd8('0x77')&&_0x5f3cfc[_0x3dd8('0x6d')]===_0x3dd8('0x78')?!![]:![];}break;}return![];};};module[_0x3dd8('0x79')]=Trigger;
\ No newline at end of file
index be4370c..152fff2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fc3=['map','forEach','includes','string','picklist','nameField','customField','toLowerCase','content','type','custom_fields','variable','variableName','idField','Variable','name','priority','Creating\x20new\x20ticket...','merge','getString','phone','new','xCALLY','Motion','CTI','concat','Descriptions','/api/v2/users/%d','user','Fields','%s/customers/%d/cases','queue','stripTrailingSlash','serverUrl','monitor_format','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','integrationTab','[QUEUE]','Displaying\x20ticket\x20to\x20agent...','user:%s','trigger:desk:display','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','https://xcally.desk.com/web/agent/case/%d','error','Desk\x20account\x20type\x20not\x20recognized','outbound','recordingFormat','none','recordingURL','The\x20User\x20ID\x20is:','destcalleridnum','Ticket\x20created!','[OUTBOUND]','unmanaged','lastevent','Recording\x20is\x20enabled!','lodash','request-promise','util','ioredis','./util','../../../../config/environment','../../../../config/logger','redis','defaults','emit','application/json','info','Getting\x20agent\x20with\x20email','%s/users','remoteUri','total_entries','entries','Agent\x20found!','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','format','%s/users/me','debug','stringify','authType','%s:%s','username','token','%s/token:%s','Basic\x20%s','toString','base64','Searching\x20enduser\x20with\x20phone','then','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','POST','length'];(function(_0x1caf6a,_0x26a5bf){var _0x1bf493=function(_0x3982f5){while(--_0x3982f5){_0x1caf6a['push'](_0x1caf6a['shift']());}};_0x1bf493(++_0x26a5bf);}(_0x5fc3,0xa8));var _0x35fc=function(_0x1c9c24,_0x2a517b){_0x1c9c24=_0x1c9c24-0x0;var _0x349c69=_0x5fc3[_0x1c9c24];return _0x349c69;};'use strict';var _=require(_0x35fc('0x0'));var rp=require(_0x35fc('0x1'));var md5=require('md5');var util=require(_0x35fc('0x2'));var Redis=require(_0x35fc('0x3'));var intUtil=require(_0x35fc('0x4'));var config=require(_0x35fc('0x5'));var logger=require(_0x35fc('0x6'))('desk');config[_0x35fc('0x7')]=_[_0x35fc('0x8')](config[_0x35fc('0x7')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x35fc('0x7')]));function emit(_0x508b32,_0x16e153,_0x27524f){io['to'](_0x508b32)[_0x35fc('0x9')](_0x16e153,_0x27524f);}var headers={'Content-Type':_0x35fc('0xa'),'Accept':_0x35fc('0xa')};function getUser(_0xf9d3a6,_0x2051ab){if(intUtil['validateEmail'](_0x2051ab)===!![]){logger[_0x35fc('0xb')](_0x35fc('0xc'),_0x2051ab);return request({'uri':util['format'](_0x35fc('0xd'),_0xf9d3a6[_0x35fc('0xe')])})['then'](function(_0xda83fb){if(_0xda83fb[_0x35fc('0xf')]){return _['find'](_0xda83fb['_embedded'][_0x35fc('0x10')],{'email':_0x2051ab});}})['then'](function(_0x397738){if(_0x397738){logger[_0x35fc('0xb')](_0x35fc('0x11'));return _0x397738;}else{logger[_0x35fc('0xb')](_0x35fc('0x12'));return request({'uri':util['format']('%s/users/me',_0xf9d3a6['remoteUri'])});}});}else{logger['info'](_0x35fc('0x13'));return request({'uri':util[_0x35fc('0x14')](_0x35fc('0x15'),_0xf9d3a6[_0x35fc('0xe')])});}}function request(_0x227a49){logger[_0x35fc('0x16')]('[HTTP]',JSON[_0x35fc('0x17')](_0x227a49));return rp(_[_0x35fc('0x8')](_0x227a49,{'method':'GET','headers':headers,'json':!![]}));}function getAuth(_0x41e165){var _0x363e47;if(_0x41e165[_0x35fc('0x18')]==='basic'){_0x363e47=util[_0x35fc('0x14')](_0x35fc('0x19'),_0x41e165[_0x35fc('0x1a')],_0x41e165['password']);}else if(_0x41e165[_0x35fc('0x18')]===_0x35fc('0x1b')){_0x363e47=util[_0x35fc('0x14')](_0x35fc('0x1c'),_0x41e165[_0x35fc('0x1a')],_0x41e165[_0x35fc('0x1b')]);}return util[_0x35fc('0x14')](_0x35fc('0x1d'),new Buffer(_0x363e47)[_0x35fc('0x1e')](_0x35fc('0x1f')));}function getEndUser(_0x5bd2b8,_0x323aee,_0xd5399f){logger[_0x35fc('0xb')](_0x35fc('0x20'),_0xd5399f);return request({'uri':util[_0x35fc('0x14')]('%s/customers/search',_0x5bd2b8[_0x35fc('0xe')]),'qs':{'phone':_0xd5399f}})[_0x35fc('0x21')](function(_0x561bf8){if(_0x561bf8[_0x35fc('0xf')]){logger[_0x35fc('0xb')](_0x35fc('0x22'));return _0x561bf8['_embedded'][_0x35fc('0x10')][0x0];}else{logger['info'](_0x35fc('0x23'));return request({'uri':util[_0x35fc('0x14')]('%s/customers',_0x5bd2b8['remoteUri']),'method':_0x35fc('0x24'),'body':{'first_name':_0x323aee,'title':_0x323aee,'phone_numbers':[{'type':'work','value':_0xd5399f}]}});}});}function getTags(_0x274208,_0x1a5d92){var _0x57001c=[];if(_0x274208&&_0x274208[_0x35fc('0x25')]>0x0){_0x57001c=_[_0x35fc('0x26')](_0x274208,_0x1a5d92);}return _0x57001c;}function getCustomFields(_0x383837,_0x9f3c8a){var _0x3735da=[];var _0x134dfa={'custom_fields':{}};if(_0x383837[_0x35fc('0x25')]>0x0){_[_0x35fc('0x27')](_0x383837,function(_0x54aedc){if(_[_0x35fc('0x28')]([_0x35fc('0x29'),_0x35fc('0x2a')],_0x54aedc['type'])&&_0x54aedc[_0x35fc('0x2b')]&&!_0x54aedc[_0x35fc('0x2c')]){_0x134dfa[_0x54aedc[_0x35fc('0x2b')][_0x35fc('0x2d')]()]=_0x54aedc[_0x35fc('0x2e')][_0x35fc('0x1e')]();}else if(_[_0x35fc('0x28')]([_0x35fc('0x29'),_0x35fc('0x2a')],_0x54aedc[_0x35fc('0x2f')])&&_0x54aedc['idField']&&_0x54aedc['customField']){_0x134dfa[_0x35fc('0x30')][_0x54aedc['idField']]=_0x54aedc[_0x35fc('0x2e')][_0x35fc('0x1e')]();}else if(_0x54aedc[_0x35fc('0x2f')]===_0x35fc('0x31')&&_0x54aedc[_0x35fc('0x32')]&&_0x54aedc[_0x35fc('0x33')]&&_0x54aedc['customField']){_0x9f3c8a[_0x54aedc[_0x35fc('0x32')]]&&(_0x134dfa[_0x35fc('0x30')][_0x54aedc[_0x35fc('0x33')]]=_0x9f3c8a[_0x54aedc[_0x35fc('0x32')]][_0x35fc('0x1e')]());}else if(_0x54aedc[_0x35fc('0x2f')]==='customVariable'&&_0x54aedc[_0x35fc('0x34')]&&_0x54aedc[_0x35fc('0x34')][_0x35fc('0x35')]&&_0x54aedc['idField']&&_0x54aedc[_0x35fc('0x2c')]){_0x9f3c8a[_0x54aedc['Variable'][_0x35fc('0x35')][_0x35fc('0x2d')]()]&&(_0x134dfa[_0x35fc('0x30')][_0x54aedc[_0x35fc('0x33')]]=_0x9f3c8a[_0x54aedc['Variable']['name']['toLowerCase']()][_0x35fc('0x1e')]());}});}if(_0x134dfa['priority']){_0x134dfa[_0x35fc('0x36')]=Number(_0x134dfa['priority']);}return _0x134dfa;}function getTicket(_0x9c6b65,_0x1f2d66,_0x2ca9ac,_0x22b724,_0x1c10e0){logger[_0x35fc('0xb')](_0x35fc('0x37'));var _0x4ec0dc=_[_0x35fc('0x38')]({'subject':intUtil[_0x35fc('0x39')](_0x22b724['Subjects'],_0x1c10e0,'\x20'),'type':_0x35fc('0x3a'),'status':_0x35fc('0x3b'),'labels':[_0x35fc('0x3c'),_0x35fc('0x3d'),_0x35fc('0x3e')][_0x35fc('0x3f')](getTags(_0x22b724['Tags'],_0x35fc('0x35'))),'description':intUtil[_0x35fc('0x39')](_0x22b724[_0x35fc('0x40')],_0x1c10e0,'\x0a'),'_links':{'assigned_user':{'href':util['format'](_0x35fc('0x41'),_0x1f2d66['id']),'class':_0x35fc('0x42')}},'message':{'direction':'in','body':intUtil['getString'](_0x22b724[_0x35fc('0x40')],_0x1c10e0,'\x0a')}},getCustomFields(_0x22b724[_0x35fc('0x43')],_0x1c10e0));return request({'uri':util[_0x35fc('0x14')](_0x35fc('0x44'),_0x9c6b65[_0x35fc('0xe')],_0x2ca9ac['id']),'method':_0x35fc('0x24'),'body':_0x4ec0dc});}exports[_0x35fc('0x45')]=function(_0x3ec51f,_0x5a7e9e,_0x596e83,_0x210d5d,_0x36fcf9,_0x4fdc6d){var _0x5c2e5c,_0x4ff202;_0x4fdc6d[_0x35fc('0xe')]=intUtil[_0x35fc('0x46')](_0x4fdc6d['remoteUri']);_0x4fdc6d[_0x35fc('0x47')]=intUtil[_0x35fc('0x46')](_0x4fdc6d[_0x35fc('0x47')]);if(_0x36fcf9&&_0x36fcf9[_0x35fc('0x48')]){logger['info']('[QUEUE]','Recording\x20is\x20enabled!');_0x5a7e9e['recordingURL']=util['format'](_0x35fc('0x49'),_0x4fdc6d[_0x35fc('0x47')],_0x5a7e9e['uniqueid'],md5(_0x5a7e9e[_0x35fc('0x4a')]));}else{_0x5a7e9e['recordingURL']='';}headers[_0x35fc('0x4b')]=getAuth(_0x4fdc6d);return getUser(_0x4fdc6d,_0x210d5d[_0x35fc('0x4c')])[_0x35fc('0x21')](function(_0x2de5d1){_0x5c2e5c=_0x2de5d1;logger[_0x35fc('0xb')]('The\x20User\x20ID\x20is:',_0x5c2e5c['id']);return getEndUser(_0x4fdc6d,_0x5a7e9e[_0x35fc('0x4d')],_0x5a7e9e[_0x35fc('0x4e')]);})['then'](function(_0x18181b){_0x4ff202=_0x18181b;logger[_0x35fc('0xb')](_0x35fc('0x4f'),_0x4ff202['id']);return getTicket(_0x4fdc6d,_0x5c2e5c,_0x4ff202,_0x596e83,_0x5a7e9e);})[_0x35fc('0x21')](function(_0x5bc8c3){if(_0x5bc8c3){logger[_0x35fc('0xb')]('Ticket\x20created!');logger['info'](_0x35fc('0x50'),_0x5bc8c3['id']);switch(_0x4fdc6d[_0x35fc('0x2f')]){case _0x35fc('0x51'):logger[_0x35fc('0xb')](_0x35fc('0x52'),_0x35fc('0x53'));emit(util[_0x35fc('0x14')](_0x35fc('0x54'),_0x210d5d['name']),_0x35fc('0x55'),{'recordId':_0x5bc8c3['id']});break;case _0x35fc('0x56'):logger[_0x35fc('0xb')](_0x35fc('0x52'),_0x35fc('0x57'));emit(util[_0x35fc('0x14')](_0x35fc('0x54'),_0x210d5d[_0x35fc('0x35')]),_0x35fc('0x58'),{'uri':util[_0x35fc('0x14')](_0x35fc('0x59'),_0x5bc8c3['id'])});break;default:logger[_0x35fc('0x5a')](_0x35fc('0x52'),_0x35fc('0x5b'));}}})['catch'](function(_0x553ed6){console[_0x35fc('0x5a')](_0x553ed6);logger[_0x35fc('0x5a')](_0x35fc('0x52'),JSON[_0x35fc('0x17')](_0x553ed6));});};exports[_0x35fc('0x5c')]=function(_0x3e6494,_0x4a4798,_0x4f024c,_0x388521,_0x19b2ce,_0x395d63,_0x38bc78){var _0x5b2595,_0x467980;_0x395d63[_0x35fc('0xe')]=intUtil['stripTrailingSlash'](_0x395d63[_0x35fc('0xe')]);_0x395d63[_0x35fc('0x47')]=intUtil['stripTrailingSlash'](_0x395d63[_0x35fc('0x47')]);if(_0x38bc78&&_0x38bc78[_0x35fc('0x5d')]&&_0x38bc78[_0x35fc('0x5d')]!==_0x35fc('0x5e')){logger['info']('[OUTBOUND]','Recording\x20is\x20enabled!');_0x4a4798[_0x35fc('0x5f')]=util[_0x35fc('0x14')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x395d63[_0x35fc('0x47')],_0x4a4798[_0x35fc('0x4a')],md5(_0x4a4798[_0x35fc('0x4a')]));}headers[_0x35fc('0x4b')]=getAuth(_0x395d63);return getUser(_0x395d63,_0x388521[_0x35fc('0x4c')])['then'](function(_0x2d9d45){_0x5b2595=_0x2d9d45;logger[_0x35fc('0xb')](_0x35fc('0x60'),_0x5b2595['id']);return getEndUser(_0x395d63,_0x4a4798['destcalleridname'],_0x4a4798[_0x35fc('0x61')]);})[_0x35fc('0x21')](function(_0x47fb1a){_0x467980=_0x47fb1a;logger[_0x35fc('0xb')](_0x35fc('0x4f'),_0x467980['id']);return getTicket(_0x395d63,_0x5b2595,_0x467980,_0x4f024c,_0x4a4798);})[_0x35fc('0x21')](function(_0x1c4c33){if(_0x1c4c33){logger[_0x35fc('0xb')](_0x35fc('0x62'));logger[_0x35fc('0xb')](_0x35fc('0x50'),_0x1c4c33['id']);switch(_0x395d63['type']){case _0x35fc('0x51'):logger[_0x35fc('0xb')](_0x35fc('0x52'),'Displaying\x20ticket\x20to\x20agent...');emit(util[_0x35fc('0x14')]('user:%s',_0x388521['name']),'trigger:desk:display',{'recordId':_0x1c4c33['id']});break;case _0x35fc('0x56'):logger[_0x35fc('0xb')](_0x35fc('0x52'),_0x35fc('0x57'));emit(util[_0x35fc('0x14')]('user:%s',_0x388521['name']),'trigger:browser:url',{'uri':util['format']('%s/agent/tickets/%s',_0x395d63[_0x35fc('0xe')],_0x1c4c33['id'])});break;default:logger[_0x35fc('0x5a')](_0x35fc('0x63'),_0x35fc('0x5b'));}}})['catch'](function(_0x458eb8){logger[_0x35fc('0x5a')](_0x35fc('0x63'),JSON[_0x35fc('0x17')](_0x458eb8));});};exports[_0x35fc('0x64')]=function(_0x1d0e53,_0x27071b,_0x2127e0,_0x462ceb,_0x4c3ace,_0x35d7c8){var _0x47c75f,_0xfbd737;_0x35d7c8[_0x35fc('0xe')]=intUtil[_0x35fc('0x46')](_0x35d7c8[_0x35fc('0xe')]);_0x35d7c8['serverUrl']=intUtil[_0x35fc('0x46')](_0x35d7c8['serverUrl']);if(_0x4c3ace&&_0x4c3ace['monitor_format']){logger['info']('['+_0x27071b[_0x35fc('0x65')]['toUpperCase']()+']',_0x35fc('0x66'));_0x27071b['recordingURL']=util[_0x35fc('0x14')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x35d7c8[_0x35fc('0x47')],_0x27071b[_0x35fc('0x4a')],md5(_0x27071b[_0x35fc('0x4a')]));}else{_0x27071b[_0x35fc('0x5f')]='';}headers['Authorization']=getAuth(_0x35d7c8);return getUser(_0x35d7c8)[_0x35fc('0x21')](function(_0x1e2214){_0x47c75f=_0x1e2214;logger[_0x35fc('0xb')]('The\x20User\x20ID\x20is:',_0x47c75f['id']);return getEndUser(_0x35d7c8,_0x27071b[_0x35fc('0x4d')],_0x27071b[_0x35fc('0x4e')]);})[_0x35fc('0x21')](function(_0x3c1b56){_0xfbd737=_0x3c1b56;logger[_0x35fc('0xb')](_0x35fc('0x4f'),_0xfbd737['id']);return getTicket(_0x35d7c8,_0x47c75f,_0xfbd737,_0x2127e0,_0x27071b);})[_0x35fc('0x21')](function(_0x4464d5){if(_0x4464d5){logger['info'](_0x35fc('0x62'));logger[_0x35fc('0xb')](_0x35fc('0x50'),_0x4464d5['id']);}})['catch'](function(_0x1c88d8){logger[_0x35fc('0x5a')]('['+_0x27071b['lastevent']['toUpperCase']()+']',JSON[_0x35fc('0x17')](_0x1c88d8));});};
\ No newline at end of file
+var _0x7217=['format','%s/users','remoteUri','then','total_entries','find','entries','info','Agent\x20found!','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me','debug','stringify','GET','authType','basic','%s:%s','username','password','token','Basic\x20%s','base64','Searching\x20enduser\x20with\x20phone','%s/customers/search','Enduser\x20found!','_embedded','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','length','map','forEach','string','picklist','nameField','customField','content','toString','includes','idField','custom_fields','variable','variableName','type','customVariable','Variable','name','toLowerCase','priority','Creating\x20new\x20ticket...','merge','getString','new','xCALLY','Motion','CTI','Tags','Descriptions','user','%s/customers/%d/cases','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','Authorization','email','The\x20User\x20ID\x20is:','calleridnum','The\x20Enduser\x20ID\x20is:','Ticket\x20created!','integrationTab','Displaying\x20ticket\x20to\x20agent...','user:%s','trigger:desk:display','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','https://xcally.desk.com/web/agent/case/%d','error','catch','outbound','recordingFormat','none','[OUTBOUND]','uniqueid','The\x20Ticket\x20ID\x20is:','%s/agent/tickets/%s','unmanaged','lastevent','toUpperCase','calleridname','lodash','md5','util','ioredis','./util','../../../../config/environment','redis','defaults','localhost','socket.io-emitter','emit','application/json','validateEmail','Getting\x20agent\x20with\x20email'];(function(_0x5d459b,_0x55cd5b){var _0x3c4fd0=function(_0x6f12bc){while(--_0x6f12bc){_0x5d459b['push'](_0x5d459b['shift']());}};_0x3c4fd0(++_0x55cd5b);}(_0x7217,0x19e));var _0x7721=function(_0xbe200f,_0x4b50eb){_0xbe200f=_0xbe200f-0x0;var _0x192597=_0x7217[_0xbe200f];return _0x192597;};'use strict';var _=require(_0x7721('0x0'));var rp=require('request-promise');var md5=require(_0x7721('0x1'));var util=require(_0x7721('0x2'));var Redis=require(_0x7721('0x3'));var intUtil=require(_0x7721('0x4'));var config=require(_0x7721('0x5'));var logger=require('../../../../config/logger')('desk');config[_0x7721('0x6')]=_[_0x7721('0x7')](config[_0x7721('0x6')],{'host':_0x7721('0x8'),'port':0x18eb});var io=require(_0x7721('0x9'))(new Redis(config[_0x7721('0x6')]));function emit(_0x18ab6b,_0x21f680,_0x225610){io['to'](_0x18ab6b)[_0x7721('0xa')](_0x21f680,_0x225610);}var headers={'Content-Type':_0x7721('0xb'),'Accept':_0x7721('0xb')};function getUser(_0xfa8835,_0x138740){if(intUtil[_0x7721('0xc')](_0x138740)===!![]){logger['info'](_0x7721('0xd'),_0x138740);return request({'uri':util[_0x7721('0xe')](_0x7721('0xf'),_0xfa8835[_0x7721('0x10')])})[_0x7721('0x11')](function(_0x409b37){if(_0x409b37[_0x7721('0x12')]){return _[_0x7721('0x13')](_0x409b37['_embedded'][_0x7721('0x14')],{'email':_0x138740});}})[_0x7721('0x11')](function(_0x57ff6d){if(_0x57ff6d){logger[_0x7721('0x15')](_0x7721('0x16'));return _0x57ff6d;}else{logger[_0x7721('0x15')](_0x7721('0x17'));return request({'uri':util['format'](_0x7721('0x18'),_0xfa8835[_0x7721('0x10')])});}});}else{logger['info']('Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!');return request({'uri':util['format'](_0x7721('0x18'),_0xfa8835[_0x7721('0x10')])});}}function request(_0x3cc909){logger[_0x7721('0x19')]('[HTTP]',JSON[_0x7721('0x1a')](_0x3cc909));return rp(_['defaults'](_0x3cc909,{'method':_0x7721('0x1b'),'headers':headers,'json':!![]}));}function getAuth(_0x5cb0e6){var _0xfec626;if(_0x5cb0e6[_0x7721('0x1c')]===_0x7721('0x1d')){_0xfec626=util[_0x7721('0xe')](_0x7721('0x1e'),_0x5cb0e6[_0x7721('0x1f')],_0x5cb0e6[_0x7721('0x20')]);}else if(_0x5cb0e6[_0x7721('0x1c')]===_0x7721('0x21')){_0xfec626=util[_0x7721('0xe')]('%s/token:%s',_0x5cb0e6[_0x7721('0x1f')],_0x5cb0e6[_0x7721('0x21')]);}return util[_0x7721('0xe')](_0x7721('0x22'),new Buffer(_0xfec626)['toString'](_0x7721('0x23')));}function getEndUser(_0x512f31,_0xb9e9dd,_0x288e3a){logger[_0x7721('0x15')](_0x7721('0x24'),_0x288e3a);return request({'uri':util[_0x7721('0xe')](_0x7721('0x25'),_0x512f31[_0x7721('0x10')]),'qs':{'phone':_0x288e3a}})['then'](function(_0x216f20){if(_0x216f20[_0x7721('0x12')]){logger[_0x7721('0x15')](_0x7721('0x26'));return _0x216f20[_0x7721('0x27')][_0x7721('0x14')][0x0];}else{logger[_0x7721('0x15')](_0x7721('0x28'));return request({'uri':util[_0x7721('0xe')]('%s/customers',_0x512f31[_0x7721('0x10')]),'method':'POST','body':{'first_name':_0xb9e9dd,'title':_0xb9e9dd,'phone_numbers':[{'type':'work','value':_0x288e3a}]}});}});}function getTags(_0x315202,_0x343c19){var _0x53c904=[];if(_0x315202&&_0x315202[_0x7721('0x29')]>0x0){_0x53c904=_[_0x7721('0x2a')](_0x315202,_0x343c19);}return _0x53c904;}function getCustomFields(_0x37b9f0,_0xd7d703){var _0x1da2d8=[];var _0x5c54f0={'custom_fields':{}};if(_0x37b9f0[_0x7721('0x29')]>0x0){_[_0x7721('0x2b')](_0x37b9f0,function(_0x497f9f){if(_['includes']([_0x7721('0x2c'),_0x7721('0x2d')],_0x497f9f['type'])&&_0x497f9f[_0x7721('0x2e')]&&!_0x497f9f[_0x7721('0x2f')]){_0x5c54f0[_0x497f9f[_0x7721('0x2e')]['toLowerCase']()]=_0x497f9f[_0x7721('0x30')][_0x7721('0x31')]();}else if(_[_0x7721('0x32')]([_0x7721('0x2c'),_0x7721('0x2d')],_0x497f9f['type'])&&_0x497f9f[_0x7721('0x33')]&&_0x497f9f[_0x7721('0x2f')]){_0x5c54f0[_0x7721('0x34')][_0x497f9f['idField']]=_0x497f9f[_0x7721('0x30')][_0x7721('0x31')]();}else if(_0x497f9f['type']===_0x7721('0x35')&&_0x497f9f['variableName']&&_0x497f9f[_0x7721('0x33')]&&_0x497f9f[_0x7721('0x2f')]){_0xd7d703[_0x497f9f[_0x7721('0x36')]]&&(_0x5c54f0[_0x7721('0x34')][_0x497f9f[_0x7721('0x33')]]=_0xd7d703[_0x497f9f[_0x7721('0x36')]][_0x7721('0x31')]());}else if(_0x497f9f[_0x7721('0x37')]===_0x7721('0x38')&&_0x497f9f[_0x7721('0x39')]&&_0x497f9f[_0x7721('0x39')]['name']&&_0x497f9f[_0x7721('0x33')]&&_0x497f9f['customField']){_0xd7d703[_0x497f9f[_0x7721('0x39')][_0x7721('0x3a')][_0x7721('0x3b')]()]&&(_0x5c54f0[_0x7721('0x34')][_0x497f9f[_0x7721('0x33')]]=_0xd7d703[_0x497f9f[_0x7721('0x39')]['name']['toLowerCase']()]['toString']());}});}if(_0x5c54f0['priority']){_0x5c54f0[_0x7721('0x3c')]=Number(_0x5c54f0[_0x7721('0x3c')]);}return _0x5c54f0;}function getTicket(_0x1acc72,_0x22ef35,_0x4a90ce,_0xa389fa,_0x4cf659){logger[_0x7721('0x15')](_0x7721('0x3d'));var _0x5a278e=_[_0x7721('0x3e')]({'subject':intUtil[_0x7721('0x3f')](_0xa389fa['Subjects'],_0x4cf659,'\x20'),'type':'phone','status':_0x7721('0x40'),'labels':[_0x7721('0x41'),_0x7721('0x42'),_0x7721('0x43')]['concat'](getTags(_0xa389fa[_0x7721('0x44')],_0x7721('0x3a'))),'description':intUtil[_0x7721('0x3f')](_0xa389fa[_0x7721('0x45')],_0x4cf659,'\x0a'),'_links':{'assigned_user':{'href':util[_0x7721('0xe')]('/api/v2/users/%d',_0x22ef35['id']),'class':_0x7721('0x46')}},'message':{'direction':'in','body':intUtil['getString'](_0xa389fa[_0x7721('0x45')],_0x4cf659,'\x0a')}},getCustomFields(_0xa389fa['Fields'],_0x4cf659));return request({'uri':util[_0x7721('0xe')](_0x7721('0x47'),_0x1acc72[_0x7721('0x10')],_0x4a90ce['id']),'method':'POST','body':_0x5a278e});}exports[_0x7721('0x48')]=function(_0x11d853,_0x1ad315,_0x481fa8,_0x9f7b1d,_0x754071,_0xdb3033){var _0x2d5f35,_0x135dbc;_0xdb3033[_0x7721('0x10')]=intUtil[_0x7721('0x49')](_0xdb3033['remoteUri']);_0xdb3033['serverUrl']=intUtil[_0x7721('0x49')](_0xdb3033[_0x7721('0x4a')]);if(_0x754071&&_0x754071[_0x7721('0x4b')]){logger[_0x7721('0x15')](_0x7721('0x4c'),_0x7721('0x4d'));_0x1ad315[_0x7721('0x4e')]=util[_0x7721('0xe')](_0x7721('0x4f'),_0xdb3033[_0x7721('0x4a')],_0x1ad315['uniqueid'],md5(_0x1ad315['uniqueid']));}else{_0x1ad315[_0x7721('0x4e')]='';}headers[_0x7721('0x50')]=getAuth(_0xdb3033);return getUser(_0xdb3033,_0x9f7b1d[_0x7721('0x51')])[_0x7721('0x11')](function(_0x589e95){_0x2d5f35=_0x589e95;logger[_0x7721('0x15')](_0x7721('0x52'),_0x2d5f35['id']);return getEndUser(_0xdb3033,_0x1ad315['calleridname'],_0x1ad315[_0x7721('0x53')]);})['then'](function(_0x2682b1){_0x135dbc=_0x2682b1;logger['info'](_0x7721('0x54'),_0x135dbc['id']);return getTicket(_0xdb3033,_0x2d5f35,_0x135dbc,_0x481fa8,_0x1ad315);})[_0x7721('0x11')](function(_0xf17c40){if(_0xf17c40){logger['info'](_0x7721('0x55'));logger[_0x7721('0x15')]('The\x20Ticket\x20ID\x20is:',_0xf17c40['id']);switch(_0xdb3033[_0x7721('0x37')]){case _0x7721('0x56'):logger[_0x7721('0x15')]('[QUEUE]',_0x7721('0x57'));emit(util['format'](_0x7721('0x58'),_0x9f7b1d[_0x7721('0x3a')]),_0x7721('0x59'),{'recordId':_0xf17c40['id']});break;case _0x7721('0x5a'):logger[_0x7721('0x15')](_0x7721('0x4c'),_0x7721('0x5b'));emit(util[_0x7721('0xe')](_0x7721('0x58'),_0x9f7b1d[_0x7721('0x3a')]),_0x7721('0x5c'),{'uri':util[_0x7721('0xe')](_0x7721('0x5d'),_0xf17c40['id'])});break;default:logger[_0x7721('0x5e')](_0x7721('0x4c'),'Desk\x20account\x20type\x20not\x20recognized');}}})[_0x7721('0x5f')](function(_0x2f6f30){console[_0x7721('0x5e')](_0x2f6f30);logger[_0x7721('0x5e')](_0x7721('0x4c'),JSON[_0x7721('0x1a')](_0x2f6f30));});};exports[_0x7721('0x60')]=function(_0x57484c,_0x234bee,_0x17036e,_0x134908,_0x3b7382,_0x1f1e84,_0x9c0d4){var _0x7fbd6c,_0x33287d;_0x1f1e84[_0x7721('0x10')]=intUtil[_0x7721('0x49')](_0x1f1e84[_0x7721('0x10')]);_0x1f1e84['serverUrl']=intUtil[_0x7721('0x49')](_0x1f1e84[_0x7721('0x4a')]);if(_0x9c0d4&&_0x9c0d4[_0x7721('0x61')]&&_0x9c0d4[_0x7721('0x61')]!==_0x7721('0x62')){logger[_0x7721('0x15')](_0x7721('0x63'),_0x7721('0x4d'));_0x234bee[_0x7721('0x4e')]=util[_0x7721('0xe')](_0x7721('0x4f'),_0x1f1e84[_0x7721('0x4a')],_0x234bee[_0x7721('0x64')],md5(_0x234bee[_0x7721('0x64')]));}headers[_0x7721('0x50')]=getAuth(_0x1f1e84);return getUser(_0x1f1e84,_0x134908['email'])['then'](function(_0x4e112e){_0x7fbd6c=_0x4e112e;logger[_0x7721('0x15')]('The\x20User\x20ID\x20is:',_0x7fbd6c['id']);return getEndUser(_0x1f1e84,_0x234bee['destcalleridname'],_0x234bee['destcalleridnum']);})['then'](function(_0x47925a){_0x33287d=_0x47925a;logger[_0x7721('0x15')](_0x7721('0x54'),_0x33287d['id']);return getTicket(_0x1f1e84,_0x7fbd6c,_0x33287d,_0x17036e,_0x234bee);})['then'](function(_0x5181d7){if(_0x5181d7){logger['info']('Ticket\x20created!');logger['info'](_0x7721('0x65'),_0x5181d7['id']);switch(_0x1f1e84['type']){case'integrationTab':logger['info'](_0x7721('0x4c'),_0x7721('0x57'));emit(util[_0x7721('0xe')]('user:%s',_0x134908[_0x7721('0x3a')]),_0x7721('0x59'),{'recordId':_0x5181d7['id']});break;case _0x7721('0x5a'):logger[_0x7721('0x15')](_0x7721('0x4c'),_0x7721('0x5b'));emit(util[_0x7721('0xe')](_0x7721('0x58'),_0x134908[_0x7721('0x3a')]),_0x7721('0x5c'),{'uri':util[_0x7721('0xe')](_0x7721('0x66'),_0x1f1e84[_0x7721('0x10')],_0x5181d7['id'])});break;default:logger[_0x7721('0x5e')](_0x7721('0x63'),'Desk\x20account\x20type\x20not\x20recognized');}}})[_0x7721('0x5f')](function(_0x2c93b0){logger[_0x7721('0x5e')](_0x7721('0x63'),JSON['stringify'](_0x2c93b0));});};exports[_0x7721('0x67')]=function(_0x104f05,_0x4c8284,_0x3e7df3,_0x5d37ad,_0x1f508d,_0x4bfb48){var _0x36a3a6,_0x3f9eaa;_0x4bfb48[_0x7721('0x10')]=intUtil[_0x7721('0x49')](_0x4bfb48[_0x7721('0x10')]);_0x4bfb48[_0x7721('0x4a')]=intUtil[_0x7721('0x49')](_0x4bfb48['serverUrl']);if(_0x1f508d&&_0x1f508d[_0x7721('0x4b')]){logger[_0x7721('0x15')]('['+_0x4c8284[_0x7721('0x68')][_0x7721('0x69')]()+']',_0x7721('0x4d'));_0x4c8284[_0x7721('0x4e')]=util[_0x7721('0xe')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x4bfb48[_0x7721('0x4a')],_0x4c8284[_0x7721('0x64')],md5(_0x4c8284['uniqueid']));}else{_0x4c8284[_0x7721('0x4e')]='';}headers['Authorization']=getAuth(_0x4bfb48);return getUser(_0x4bfb48)[_0x7721('0x11')](function(_0x382800){_0x36a3a6=_0x382800;logger[_0x7721('0x15')](_0x7721('0x52'),_0x36a3a6['id']);return getEndUser(_0x4bfb48,_0x4c8284[_0x7721('0x6a')],_0x4c8284[_0x7721('0x53')]);})[_0x7721('0x11')](function(_0x5dca04){_0x3f9eaa=_0x5dca04;logger[_0x7721('0x15')](_0x7721('0x54'),_0x3f9eaa['id']);return getTicket(_0x4bfb48,_0x36a3a6,_0x3f9eaa,_0x3e7df3,_0x4c8284);})[_0x7721('0x11')](function(_0x5f08cc){if(_0x5f08cc){logger['info']('Ticket\x20created!');logger['info']('The\x20Ticket\x20ID\x20is:',_0x5f08cc['id']);}})[_0x7721('0x5f')](function(_0x2645dd){logger['error']('['+_0x4c8284[_0x7721('0x68')][_0x7721('0x69')]()+']',JSON[_0x7721('0x1a')](_0x2645dd));});};
\ No newline at end of file
index cdaa22e..8976166 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xecaf=['isNil','validateEmail','email','userEmail','length','internalemailaddress','isdisabled','info','systemuserid','userId','toLowerCase','outbound','destcalleridnum','calleridnum','contacts','/systemusers(','headers','substring','lastIndexOf','telephone1','\x20eq\x20\x27','%2b','enduserId','contactid','nothing',']\x20Enduser\x20NOT\x20Created\x20-\x20ModuleCreate\x20=\x20Nothing','forEach','includes','string','picklist','type','customField','idField','indexOf','content','assign','Subjects','getString','Descriptions','/contacts(','Fields','ticketType','phonecall','callDirection','queue','odata-entityid','format','user:%s','trigger:browser:url','data7','stripTrailingSlash','serverUrl','unmanaged','%s/api/data/v9.0/','uniqueid','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','none','[OUTBOUND]',']\x20The\x20User\x20ID\x20is:',']\x20The\x20User\x20email\x20is:','moduleCreate',']\x20The\x20%s\x20ID\x20is:\x20%s','ticketId',']\x20Call\x20direction:\x20%s',']\x20Error\x20running\x20Dynamics365\x20integration','Error\x20running\x20Dynamics365\x20integration','request-promise','util','./util','md5','../../../../config/logger','dynamics365','../../../../config/environment','redis','defaults','socket.io-emitter','modernAuthentication','tenantId','data2','resolve','CloudProvider','data5','POST','clientId','remoteUri','username','password','clientSecret','access_token','catch','error','toUpperCase',']\x20Wrong\x20credentials!','message','then','GET','systemusers?$select=internalemailaddress,isdisabled,systemuserid','Bearer\x20','4.0','value'];(function(_0x51b10b,_0x311567){var _0x45b2cf=function(_0xa17759){while(--_0xa17759){_0x51b10b['push'](_0x51b10b['shift']());}};_0x45b2cf(++_0x311567);}(_0xecaf,0x1dc));var _0xfeca=function(_0x474bb2,_0x535f8c){_0x474bb2=_0x474bb2-0x0;var _0x43f609=_0xecaf[_0x474bb2];return _0x43f609;};'use strict';var _=require('lodash');var rp=require(_0xfeca('0x0'));var util=require(_0xfeca('0x1'));var intUtil=require(_0xfeca('0x2'));var md5=require(_0xfeca('0x3'));var Redis=require('ioredis');var logger=require(_0xfeca('0x4'))(_0xfeca('0x5'));var config=require(_0xfeca('0x6'));config[_0xfeca('0x7')]=_[_0xfeca('0x8')](config[_0xfeca('0x7')],{'host':'localhost','port':0x18eb});var io=require(_0xfeca('0x9'))(new Redis(config[_0xfeca('0x7')]));function getAuthToken(_0x29b54d,_0x64c253,_0x594fee){if(_0x29b54d[_0xfeca('0xa')]){_0x29b54d['remoteUri']=_0x29b54d['CloudProvider']['data7'];_0x29b54d[_0xfeca('0xb')]=_0x29b54d['CloudProvider'][_0xfeca('0xc')];return Promise[_0xfeca('0xd')](_0x29b54d[_0xfeca('0xe')][_0xfeca('0xf')]);}var _0x41e322={'method':_0xfeca('0x10'),'uri':_0x64c253,'form':{'client_id':_0x29b54d[_0xfeca('0x11')],'resource':_0x29b54d[_0xfeca('0x12')],'username':_0x29b54d[_0xfeca('0x13')],'password':_0x29b54d[_0xfeca('0x14')],'grant_type':_0xfeca('0x14'),'client_secret':_0x29b54d[_0xfeca('0x15')]},'json':!![]};return rp(_0x41e322)['then'](function(_0x541182){return _0x541182[_0xfeca('0x16')];})[_0xfeca('0x17')](function(_0x1107a7){logger[_0xfeca('0x18')]('['+[_0x594fee[_0xfeca('0x19')]()]+_0xfeca('0x1a'));return _0x1107a7[_0xfeca('0x1b')];});}function getUser(_0x5a05a8,_0xb4f2fb,_0x459bcf,_0x230589,_0x5256c7,_0x56e109){return new Promise(function(_0x1b8caf,_0x535659){return getAuthToken(_0xb4f2fb,_0x230589,_0x56e109)[_0xfeca('0x1c')](function(_0x53815f){var _0x2f18c0={'method':_0xfeca('0x1d'),'uri':_0x5256c7+_0xfeca('0x1e'),'headers':{'Authorization':_0xfeca('0x1f')+_0x53815f,'OData-Version':_0xfeca('0x20')},'json':!![]};return rp(_0x2f18c0);})['then'](function(_0x311f1b){var _0x58fd69=_0x311f1b[_0xfeca('0x21')];var _0x4d541d=![];var _0x13b02b=null;if(!_[_0xfeca('0x22')](_0x459bcf)){if(intUtil[_0xfeca('0x23')](_0x459bcf[_0xfeca('0x24')])){_0x5a05a8[_0xfeca('0x25')]=_0x459bcf[_0xfeca('0x24')];for(_0x13b02b=0x0;_0x13b02b<_0x58fd69[_0xfeca('0x26')];_0x13b02b++){if(_0x58fd69[_0x13b02b][_0xfeca('0x27')]===_0x459bcf['email']&&!_0x58fd69[_0x13b02b][_0xfeca('0x28')]){_0x4d541d=!![];logger[_0xfeca('0x29')]('['+[_0x56e109['toUpperCase']()]+']\x20Agent\x20found\x20'+_0x58fd69[_0x13b02b][_0xfeca('0x2a')]+'!');_0x5a05a8[_0xfeca('0x2b')]=_0x58fd69[_0x13b02b][_0xfeca('0x2a')];}}}}if(!_0x4d541d){logger[_0xfeca('0x29')]('['+[_0x56e109[_0xfeca('0x19')]()]+']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');_0x5a05a8[_0xfeca('0x25')]=_0xb4f2fb[_0xfeca('0x13')];for(_0x13b02b=0x0;_0x13b02b<_0x58fd69['length'];_0x13b02b++){if(_0x58fd69[_0x13b02b][_0xfeca('0x27')]===_0xb4f2fb[_0xfeca('0x13')]){_0x5a05a8[_0xfeca('0x2b')]=_0x58fd69[_0x13b02b]['systemuserid'];}}}_0x1b8caf(_0x5a05a8);})[_0xfeca('0x17')](function(_0x61c7ac){_0x535659(_0x61c7ac['message']);});});}function createEndUser(_0x421e7f,_0x1751d2,_0x2fa4b0,_0x359c10,_0xf43afb,_0x57a80c,_0x1b5ceb){return new Promise(function(_0x55555c,_0x450273){return getAuthToken(_0x1751d2,_0x2fa4b0,_0x57a80c)[_0xfeca('0x1c')](function(_0x2cb17a){var _0x6d8237=_0x57a80c[_0xfeca('0x2c')]()===_0xfeca('0x2d')?_0xf43afb[_0xfeca('0x2e')]:_0xf43afb[_0xfeca('0x2f')];var _0x243e35={'method':_0xfeca('0x10'),'uri':_0x359c10+_0xfeca('0x30'),'body':{'fullname':_0x6d8237,'firstname':_0x6d8237,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0xfeca('0x31')+_0x421e7f['userId']+')'},'headers':{'Authorization':'Bearer\x20'+_0x2cb17a,'OData-Version':_0xfeca('0x20')},'json':!![],'resolveWithFullResponse':!![]};_0x243e35['body'][_0x1b5ceb]=_0x6d8237;return rp(_0x243e35);})[_0xfeca('0x1c')](function(_0x38e049){var _0x142c16=_0x38e049[_0xfeca('0x32')]['odata-entityid'];var _0xaa91a=_0x142c16[_0xfeca('0x33')](_0x142c16[_0xfeca('0x34')]('(')+0x1,_0x142c16[_0xfeca('0x34')](')'));_0x421e7f['enduserId']=_0xaa91a;_0x55555c(_0x421e7f);})[_0xfeca('0x17')](function(_0x52b55e){_0x450273(_0x52b55e[_0xfeca('0x1b')]);});});}function getEndUser(_0x57982f,_0xc45931,_0x3870f4,_0x4fecfd,_0x4937cd,_0x5cfcd7,_0x3e4d78,_0x2d152d){var _0x359fa0=_0x5cfcd7[_0xfeca('0x2c')]()===_0xfeca('0x2d')?_0x4937cd['destcalleridnum']:_0x4937cd[_0xfeca('0x2f')];return getAuthToken(_0xc45931,_0x3870f4,_0x5cfcd7)[_0xfeca('0x1c')](function(_0x56f89d){_0x2d152d=_0x2d152d?_0x2d152d:_0xfeca('0x35');var _0xcbf10b={'method':_0xfeca('0x1d'),'uri':_0x4fecfd+'contacts?$select='+_0x2d152d+'&$filter='+_0x2d152d+_0xfeca('0x36')+_0x359fa0['replace']('+',_0xfeca('0x37'))+'\x27','headers':{'Authorization':_0xfeca('0x1f')+_0x56f89d,'If-None-Match':null,'OData-Version':_0xfeca('0x20')},'json':!![]};return rp(_0xcbf10b);})[_0xfeca('0x1c')](function(_0x1403b2){var _0x508988=![];if(!_0x1403b2)return _0x508988;var _0x25fa08=_0x1403b2[_0xfeca('0x21')];for(var _0x563d7d=0x0;_0x563d7d<_0x25fa08[_0xfeca('0x26')];_0x563d7d++){if(_0x25fa08[_0x563d7d][_0x2d152d]===_0x359fa0){_0x508988=!![];_0x57982f[_0xfeca('0x38')]=_0x25fa08[_0x563d7d][_0xfeca('0x39')];}}return _0x508988;})[_0xfeca('0x1c')](function(_0x2789ed){if(_0x2789ed)return _0x57982f;if(_0x3e4d78===_0xfeca('0x3a')){logger[_0xfeca('0x29')]('['+[_0x5cfcd7[_0xfeca('0x19')]()]+_0xfeca('0x3b'));return _0x57982f;}return createEndUser(_0x57982f,_0xc45931,_0x3870f4,_0x4fecfd,_0x4937cd,_0x5cfcd7,_0x2d152d)[_0xfeca('0x1c')](function(_0x136cbd){logger[_0xfeca('0x29')]('['+[_0x5cfcd7[_0xfeca('0x19')]()]+']\x20Enduser\x20created!',_0x136cbd['enduserId']);return _0x136cbd;});});}function getCustomFields(_0x1a2fc9,_0x274a5d,_0x887fdc){var _0x319c21={};if(_0x1a2fc9[_0xfeca('0x26')]>0x0){_[_0xfeca('0x3c')](_0x1a2fc9,function(_0x11fa9c){if(_[_0xfeca('0x3d')]([_0xfeca('0x3e'),_0xfeca('0x3f')],_0x11fa9c[_0xfeca('0x40')])&&_0x11fa9c['nameField']&&!_0x11fa9c[_0xfeca('0x41')]){var _0x3e7c51=_0x11fa9c[_0xfeca('0x42')][_0xfeca('0x2c')]();var _0x5a01f6=_0x3e7c51[_0xfeca('0x33')](0x0,_0x3e7c51[_0xfeca('0x43')]('_'));var _0x499f04=_0x3e7c51[_0xfeca('0x33')](_0x3e7c51[_0xfeca('0x43')]('_')+0x1);if(_0x5a01f6===_0x887fdc){_0x319c21[_0x499f04]=_0x11fa9c[_0xfeca('0x44')];}}});}return _0x319c21;}function getTicket(_0x22b6d9,_0x11effe,_0x212cc3,_0x4ade70,_0x42fa9d,_0xd45f30,_0x1a96c2){return new Promise(function(_0x4e6214,_0x4a7833){var _0x227369;return getAuthToken(_0x11effe,_0x212cc3,_0x1a96c2)[_0xfeca('0x1c')](function(_0x42cf7e){if(_0xd45f30['ticketType']==='incident'){_0x227369={'method':_0xfeca('0x10'),'uri':_0x4ade70+'incidents','body':Object[_0xfeca('0x45')]({},{'title':intUtil['getString'](_0xd45f30[_0xfeca('0x46')],_0x42fa9d,'\x20'),'description':intUtil[_0xfeca('0x47')](_0xd45f30[_0xfeca('0x48')],_0x42fa9d,'\x0a'),'customerid_contact@odata.bind':_0x22b6d9[_0xfeca('0x38')]?_0xfeca('0x49')+_0x22b6d9['enduserId']+')':undefined,'ownerid@odata.bind':_0xfeca('0x31')+_0x22b6d9['userId']+')','caseorigincode':'1'},getCustomFields(_0xd45f30[_0xfeca('0x4a')],_0x42fa9d,_0xd45f30[_0xfeca('0x4b')])),'headers':{'Authorization':_0xfeca('0x1f')+_0x42cf7e,'OData-Version':_0xfeca('0x20')},'json':!![],'resolveWithFullResponse':!![]};}if(_0xd45f30[_0xfeca('0x4b')]===_0xfeca('0x4c')){var _0x132b86=_0x22b6d9[_0xfeca('0x38')]?[{'partyid_systemuser@odata.bind':'/systemusers('+_0x22b6d9[_0xfeca('0x2b')]+')','participationtypemask':_0x22b6d9[_0xfeca('0x4d')]===_0xfeca('0x4e')?0x2:0x1},{'partyid_contact@odata.bind':_0xfeca('0x49')+_0x22b6d9['enduserId']+')','participationtypemask':_0x22b6d9[_0xfeca('0x4d')]==='queue'?0x1:0x2}]:[{'partyid_systemuser@odata.bind':_0xfeca('0x31')+_0x22b6d9[_0xfeca('0x2b')]+')','participationtypemask':_0x22b6d9[_0xfeca('0x4d')]===_0xfeca('0x4e')?0x2:0x1}];_0x227369={'method':_0xfeca('0x10'),'uri':_0x4ade70+'phonecalls','body':Object[_0xfeca('0x45')]({},{'subject':intUtil[_0xfeca('0x47')](_0xd45f30[_0xfeca('0x46')],_0x42fa9d,'\x20'),'phonenumber':String(_0x42fa9d[_0xfeca('0x2f')]),'description':intUtil[_0xfeca('0x47')](_0xd45f30[_0xfeca('0x48')],_0x42fa9d,'\x0a'),'regardingobjectid_contact@odata.bind':_0x22b6d9['enduserId']?_0xfeca('0x49')+_0x22b6d9[_0xfeca('0x38')]+')':undefined,'ownerid@odata.bind':_0xfeca('0x31')+_0x22b6d9[_0xfeca('0x2b')]+')','directioncode':_0x22b6d9[_0xfeca('0x4d')]===_0xfeca('0x4e')?![]:!![],'phonecall_activity_parties':_0x132b86},getCustomFields(_0xd45f30[_0xfeca('0x4a')],_0x42fa9d,_0xd45f30[_0xfeca('0x4b')])),'headers':{'Authorization':_0xfeca('0x1f')+_0x42cf7e,'OData-Version':_0xfeca('0x20')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x227369);})['then'](function(_0x5777ee){var _0x15faf9=_0x5777ee[_0xfeca('0x32')][_0xfeca('0x4f')];var _0x14b9ae=_0x15faf9[_0xfeca('0x33')](_0x15faf9['lastIndexOf']('(')+0x1,_0x15faf9[_0xfeca('0x34')](')'));_0x22b6d9['ticketId']=_0x14b9ae;_0x4e6214(_0x22b6d9);})[_0xfeca('0x17')](function(_0x15dde9){_0x4a7833(_0x15dde9[_0xfeca('0x1b')]);});});}function emit(_0x4e7f99,_0x421929,_0x410d77,_0x1a89b5){var _0x4eab93={'uri':util[_0xfeca('0x50')]('%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s',_0x4e7f99,_0x410d77,_0x1a89b5)};io['to'](util['format'](_0xfeca('0x51'),_0x421929))['emit'](_0xfeca('0x52'),_0x4eab93);}exports['cs']=function(_0x15775d,_0xeaf7bd,_0x1f551c,_0x5e427e,_0x56d77f,_0x36996a,_0x1653b7,_0x50f1d6){var _0x590aee={};_0x36996a[_0xfeca('0x12')]=_0x36996a[_0xfeca('0xa')]?intUtil['stripTrailingSlash'](_0x36996a[_0xfeca('0xe')][_0xfeca('0x53')]):intUtil[_0xfeca('0x54')](_0x36996a[_0xfeca('0x12')]);_0x36996a[_0xfeca('0x55')]=intUtil[_0xfeca('0x54')](_0x36996a[_0xfeca('0x55')]);_0x590aee[_0xfeca('0x4d')]=_0x50f1d6===_0xfeca('0x4e')||_0x50f1d6===_0xfeca('0x56')?_0xfeca('0x4e'):_0xfeca('0x2d');var _0x5de039=_0x36996a[_0xfeca('0xa')]?util[_0xfeca('0x50')](_0xfeca('0x57'),_0x36996a[_0xfeca('0xe')][_0xfeca('0x53')]):util[_0xfeca('0x50')](_0xfeca('0x57'),_0x36996a[_0xfeca('0x12')]);var _0x5ed87e=util[_0xfeca('0x50')]('https://login.microsoftonline.com/%s/oauth2/token',_0x36996a[_0xfeca('0xb')]);var _0x58f0ee=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x36996a[_0xfeca('0x55')],_0xeaf7bd[_0xfeca('0x58')],md5(_0xeaf7bd[_0xfeca('0x58')]));if(_0x56d77f&&_0x56d77f['monitor_format']){logger[_0xfeca('0x29')](_0xfeca('0x59'),_0xfeca('0x5a'));_0xeaf7bd[_0xfeca('0x5b')]=_0x58f0ee;}else if(_0x1653b7&&_0x1653b7['recordingFormat']&&_0x1653b7['recordingFormat']!==_0xfeca('0x5c')){logger[_0xfeca('0x29')](_0xfeca('0x5d'),_0xfeca('0x5a'));_0xeaf7bd[_0xfeca('0x5b')]=_0x58f0ee;}else{_0xeaf7bd[_0xfeca('0x5b')]='';}return getUser(_0x590aee,_0x36996a,_0x5e427e,_0x5ed87e,_0x5de039,_0x50f1d6)['then'](function(_0x3b392d){logger[_0xfeca('0x29')]('['+_0x50f1d6[_0xfeca('0x19')]()+_0xfeca('0x5e'),_0x3b392d[_0xfeca('0x2b')]);logger[_0xfeca('0x29')]('['+_0x50f1d6[_0xfeca('0x19')]()+_0xfeca('0x5f'),_0x3b392d[_0xfeca('0x25')]);return getEndUser(_0x3b392d,_0x36996a,_0x5ed87e,_0x5de039,_0xeaf7bd,_0x50f1d6,_0x1f551c[_0xfeca('0x60')],_0x1f551c['additionalSearchContact']);})[_0xfeca('0x1c')](function(_0x10d754){logger[_0xfeca('0x29')]('['+_0x50f1d6['toUpperCase']()+']\x20The\x20Enduser\x20ID\x20is:',_0x10d754['enduserId']);logger[_0xfeca('0x29')]('['+_0x50f1d6[_0xfeca('0x19')]()+']\x20The\x20Enduser\x20phone\x20is:',_0xeaf7bd[_0xfeca('0x2f')]);return getTicket(_0x10d754,_0x36996a,_0x5ed87e,_0x5de039,_0xeaf7bd,_0x1f551c,_0x50f1d6);})[_0xfeca('0x1c')](function(_0x38cc6d){logger[_0xfeca('0x29')](util['format']('['+_0x50f1d6[_0xfeca('0x19')]()+_0xfeca('0x61'),_0x1f551c[_0xfeca('0x4b')],_0x38cc6d[_0xfeca('0x62')]));logger[_0xfeca('0x29')](util['format']('['+_0x50f1d6['toUpperCase']()+_0xfeca('0x63'),_0x50f1d6));if(_0x50f1d6!==_0xfeca('0x56')&&_0x1f551c['openNewTab']){logger[_0xfeca('0x29')]('['+_0x50f1d6['toUpperCase']()+']','Displaying\x20call\x20in\x20a\x20new\x20tab...');emit(_0x36996a[_0xfeca('0x12')],_0x5e427e['name'],_0x1f551c[_0xfeca('0x4b')],_0x38cc6d[_0xfeca('0x62')]);}})[_0xfeca('0x17')](function(_0x476b5e){logger['error']('['+_0x50f1d6[_0xfeca('0x19')]()+_0xfeca('0x64'),_0x476b5e[_0xfeca('0x1b')]);console[_0xfeca('0x18')](_0xfeca('0x65'),_0x476b5e);});};
\ No newline at end of file
+var _0x3537=[']\x20The\x20Enduser\x20phone\x20is:',']\x20Call\x20direction:\x20%s','openNewTab','Displaying\x20call\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20Dynamics365\x20integration','error','Error\x20running\x20Dynamics365\x20integration','lodash','request-promise','util','ioredis','dynamics365','../../../../config/environment','redis','localhost','socket.io-emitter','modernAuthentication','remoteUri','CloudProvider','data2','data5','POST','clientId','username','password','clientSecret','then','access_token','toUpperCase','message','value','isNil','validateEmail','email','userEmail','length','isdisabled','info',']\x20Agent\x20found\x20','userId','systemuserid',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','catch','toLowerCase','outbound','destcalleridnum','calleridnum','contacts','4.0','headers','odata-entityid','substring','lastIndexOf','enduserId','telephone1','GET','contacts?$select=','\x20eq\x20\x27','replace','%2b','Bearer\x20','nothing',']\x20Enduser\x20NOT\x20Created\x20-\x20ModuleCreate\x20=\x20Nothing',']\x20Enduser\x20created!','forEach','includes','string','picklist','type','customField','idField','indexOf','content','incidents','assign','getString','Subjects','Descriptions','/contacts(','/systemusers(','ticketType','callDirection','queue','phonecalls','Fields','ticketId','format','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','user:%s','emit','trigger:browser:url','data7','serverUrl','stripTrailingSlash','unmanaged','%s/api/data/v9.0/','https://login.microsoftonline.com/%s/oauth2/token','tenantId','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]',']\x20The\x20User\x20ID\x20is:',']\x20The\x20User\x20email\x20is:','moduleCreate','additionalSearchContact'];(function(_0x22b8a3,_0x2a79a7){var _0x199a0c=function(_0x544c66){while(--_0x544c66){_0x22b8a3['push'](_0x22b8a3['shift']());}};_0x199a0c(++_0x2a79a7);}(_0x3537,0x75));var _0x7353=function(_0x2e4e19,_0x493b50){_0x2e4e19=_0x2e4e19-0x0;var _0x9ba20b=_0x3537[_0x2e4e19];return _0x9ba20b;};'use strict';var _=require(_0x7353('0x0'));var rp=require(_0x7353('0x1'));var util=require(_0x7353('0x2'));var intUtil=require('./util');var md5=require('md5');var Redis=require(_0x7353('0x3'));var logger=require('../../../../config/logger')(_0x7353('0x4'));var config=require(_0x7353('0x5'));config[_0x7353('0x6')]=_['defaults'](config[_0x7353('0x6')],{'host':_0x7353('0x7'),'port':0x18eb});var io=require(_0x7353('0x8'))(new Redis(config[_0x7353('0x6')]));function getAuthToken(_0x167859,_0x466dd9,_0xc8eefc){if(_0x167859[_0x7353('0x9')]){_0x167859[_0x7353('0xa')]=_0x167859[_0x7353('0xb')]['data7'];_0x167859['tenantId']=_0x167859[_0x7353('0xb')][_0x7353('0xc')];return Promise['resolve'](_0x167859['CloudProvider'][_0x7353('0xd')]);}var _0x4257dc={'method':_0x7353('0xe'),'uri':_0x466dd9,'form':{'client_id':_0x167859[_0x7353('0xf')],'resource':_0x167859['remoteUri'],'username':_0x167859[_0x7353('0x10')],'password':_0x167859[_0x7353('0x11')],'grant_type':'password','client_secret':_0x167859[_0x7353('0x12')]},'json':!![]};return rp(_0x4257dc)[_0x7353('0x13')](function(_0x55299a){return _0x55299a[_0x7353('0x14')];})['catch'](function(_0x23acbb){logger['error']('['+[_0xc8eefc[_0x7353('0x15')]()]+']\x20Wrong\x20credentials!');return _0x23acbb[_0x7353('0x16')];});}function getUser(_0x444dff,_0x403816,_0x1ec18a,_0x20e24f,_0x3ce059,_0xf97de4){return new Promise(function(_0x3d3ae0,_0x4d7e69){return getAuthToken(_0x403816,_0x20e24f,_0xf97de4)['then'](function(_0x23e242){var _0x20348d={'method':'GET','uri':_0x3ce059+'systemusers?$select=internalemailaddress,isdisabled,systemuserid','headers':{'Authorization':'Bearer\x20'+_0x23e242,'OData-Version':'4.0'},'json':!![]};return rp(_0x20348d);})[_0x7353('0x13')](function(_0x25a3b9){var _0x4ef526=_0x25a3b9[_0x7353('0x17')];var _0x535c56=![];var _0x54338f=null;if(!_[_0x7353('0x18')](_0x1ec18a)){if(intUtil[_0x7353('0x19')](_0x1ec18a[_0x7353('0x1a')])){_0x444dff[_0x7353('0x1b')]=_0x1ec18a[_0x7353('0x1a')];for(_0x54338f=0x0;_0x54338f<_0x4ef526[_0x7353('0x1c')];_0x54338f++){if(_0x4ef526[_0x54338f]['internalemailaddress']===_0x1ec18a['email']&&!_0x4ef526[_0x54338f][_0x7353('0x1d')]){_0x535c56=!![];logger[_0x7353('0x1e')]('['+[_0xf97de4[_0x7353('0x15')]()]+_0x7353('0x1f')+_0x4ef526[_0x54338f]['systemuserid']+'!');_0x444dff[_0x7353('0x20')]=_0x4ef526[_0x54338f][_0x7353('0x21')];}}}}if(!_0x535c56){logger[_0x7353('0x1e')]('['+[_0xf97de4[_0x7353('0x15')]()]+_0x7353('0x22'));_0x444dff[_0x7353('0x1b')]=_0x403816[_0x7353('0x10')];for(_0x54338f=0x0;_0x54338f<_0x4ef526[_0x7353('0x1c')];_0x54338f++){if(_0x4ef526[_0x54338f]['internalemailaddress']===_0x403816[_0x7353('0x10')]){_0x444dff[_0x7353('0x20')]=_0x4ef526[_0x54338f][_0x7353('0x21')];}}}_0x3d3ae0(_0x444dff);})[_0x7353('0x23')](function(_0x4dcd7d){_0x4d7e69(_0x4dcd7d[_0x7353('0x16')]);});});}function createEndUser(_0x3c9d18,_0x2c356f,_0x5e883a,_0x35d928,_0x57fe39,_0x590958,_0x13e45c){return new Promise(function(_0x47d938,_0xb0fe86){return getAuthToken(_0x2c356f,_0x5e883a,_0x590958)['then'](function(_0x17c23f){var _0x5518a7=_0x590958[_0x7353('0x24')]()===_0x7353('0x25')?_0x57fe39[_0x7353('0x26')]:_0x57fe39[_0x7353('0x27')];var _0x30f9c5={'method':_0x7353('0xe'),'uri':_0x35d928+_0x7353('0x28'),'body':{'fullname':_0x5518a7,'firstname':_0x5518a7,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':'/systemusers('+_0x3c9d18[_0x7353('0x20')]+')'},'headers':{'Authorization':'Bearer\x20'+_0x17c23f,'OData-Version':_0x7353('0x29')},'json':!![],'resolveWithFullResponse':!![]};_0x30f9c5['body'][_0x13e45c]=_0x5518a7;return rp(_0x30f9c5);})[_0x7353('0x13')](function(_0x5ad551){var _0x3d2066=_0x5ad551[_0x7353('0x2a')][_0x7353('0x2b')];var _0x13c59d=_0x3d2066[_0x7353('0x2c')](_0x3d2066['lastIndexOf']('(')+0x1,_0x3d2066[_0x7353('0x2d')](')'));_0x3c9d18[_0x7353('0x2e')]=_0x13c59d;_0x47d938(_0x3c9d18);})[_0x7353('0x23')](function(_0x3d12ce){_0xb0fe86(_0x3d12ce[_0x7353('0x16')]);});});}function getEndUser(_0x58915d,_0xb85a8,_0x4aa839,_0x5099cf,_0x53e66e,_0x1f77cd,_0x3da78e,_0x158622){var _0x4a68b0=_0x1f77cd[_0x7353('0x24')]()==='outbound'?_0x53e66e[_0x7353('0x26')]:_0x53e66e[_0x7353('0x27')];return getAuthToken(_0xb85a8,_0x4aa839,_0x1f77cd)[_0x7353('0x13')](function(_0x117bf0){_0x158622=_0x158622?_0x158622:_0x7353('0x2f');var _0x5cbf3f={'method':_0x7353('0x30'),'uri':_0x5099cf+_0x7353('0x31')+_0x158622+'&$filter='+_0x158622+_0x7353('0x32')+_0x4a68b0[_0x7353('0x33')]('+',_0x7353('0x34'))+'\x27','headers':{'Authorization':_0x7353('0x35')+_0x117bf0,'If-None-Match':null,'OData-Version':_0x7353('0x29')},'json':!![]};return rp(_0x5cbf3f);})['then'](function(_0x38633d){var _0x2a20cd=![];if(!_0x38633d)return _0x2a20cd;var _0x5a7e76=_0x38633d[_0x7353('0x17')];for(var _0x10de44=0x0;_0x10de44<_0x5a7e76[_0x7353('0x1c')];_0x10de44++){if(_0x5a7e76[_0x10de44][_0x158622]===_0x4a68b0){_0x2a20cd=!![];_0x58915d[_0x7353('0x2e')]=_0x5a7e76[_0x10de44]['contactid'];}}return _0x2a20cd;})[_0x7353('0x13')](function(_0x43cd54){if(_0x43cd54)return _0x58915d;if(_0x3da78e===_0x7353('0x36')){logger['info']('['+[_0x1f77cd[_0x7353('0x15')]()]+_0x7353('0x37'));return _0x58915d;}return createEndUser(_0x58915d,_0xb85a8,_0x4aa839,_0x5099cf,_0x53e66e,_0x1f77cd,_0x158622)[_0x7353('0x13')](function(_0x1924cc){logger[_0x7353('0x1e')]('['+[_0x1f77cd[_0x7353('0x15')]()]+_0x7353('0x38'),_0x1924cc[_0x7353('0x2e')]);return _0x1924cc;});});}function getCustomFields(_0xfe16c3,_0x5512fe,_0x5e7c31){var _0x255c25={};if(_0xfe16c3[_0x7353('0x1c')]>0x0){_[_0x7353('0x39')](_0xfe16c3,function(_0x56b815){if(_[_0x7353('0x3a')]([_0x7353('0x3b'),_0x7353('0x3c')],_0x56b815[_0x7353('0x3d')])&&_0x56b815['nameField']&&!_0x56b815[_0x7353('0x3e')]){var _0x102f00=_0x56b815[_0x7353('0x3f')][_0x7353('0x24')]();var _0x103d5c=_0x102f00[_0x7353('0x2c')](0x0,_0x102f00[_0x7353('0x40')]('_'));var _0x20e9c6=_0x102f00[_0x7353('0x2c')](_0x102f00[_0x7353('0x40')]('_')+0x1);if(_0x103d5c===_0x5e7c31){_0x255c25[_0x20e9c6]=_0x56b815[_0x7353('0x41')];}}});}return _0x255c25;}function getTicket(_0x388b35,_0x201525,_0x44550e,_0x5da3af,_0x188323,_0x28349f,_0xc7aa4){return new Promise(function(_0x2bfb61,_0xae02eb){var _0x3fdc1a;return getAuthToken(_0x201525,_0x44550e,_0xc7aa4)[_0x7353('0x13')](function(_0x3c353e){if(_0x28349f['ticketType']==='incident'){_0x3fdc1a={'method':_0x7353('0xe'),'uri':_0x5da3af+_0x7353('0x42'),'body':Object[_0x7353('0x43')]({},{'title':intUtil[_0x7353('0x44')](_0x28349f[_0x7353('0x45')],_0x188323,'\x20'),'description':intUtil[_0x7353('0x44')](_0x28349f[_0x7353('0x46')],_0x188323,'\x0a'),'customerid_contact@odata.bind':_0x388b35[_0x7353('0x2e')]?_0x7353('0x47')+_0x388b35[_0x7353('0x2e')]+')':undefined,'ownerid@odata.bind':_0x7353('0x48')+_0x388b35[_0x7353('0x20')]+')','caseorigincode':'1'},getCustomFields(_0x28349f['Fields'],_0x188323,_0x28349f[_0x7353('0x49')])),'headers':{'Authorization':_0x7353('0x35')+_0x3c353e,'OData-Version':_0x7353('0x29')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x28349f[_0x7353('0x49')]==='phonecall'){var _0x3f3c99=_0x388b35['enduserId']?[{'partyid_systemuser@odata.bind':'/systemusers('+_0x388b35[_0x7353('0x20')]+')','participationtypemask':_0x388b35[_0x7353('0x4a')]===_0x7353('0x4b')?0x2:0x1},{'partyid_contact@odata.bind':_0x7353('0x47')+_0x388b35[_0x7353('0x2e')]+')','participationtypemask':_0x388b35[_0x7353('0x4a')]===_0x7353('0x4b')?0x1:0x2}]:[{'partyid_systemuser@odata.bind':_0x7353('0x48')+_0x388b35['userId']+')','participationtypemask':_0x388b35[_0x7353('0x4a')]===_0x7353('0x4b')?0x2:0x1}];_0x3fdc1a={'method':'POST','uri':_0x5da3af+_0x7353('0x4c'),'body':Object[_0x7353('0x43')]({},{'subject':intUtil[_0x7353('0x44')](_0x28349f['Subjects'],_0x188323,'\x20'),'phonenumber':String(_0x188323[_0x7353('0x27')]),'description':intUtil['getString'](_0x28349f[_0x7353('0x46')],_0x188323,'\x0a'),'regardingobjectid_contact@odata.bind':_0x388b35[_0x7353('0x2e')]?_0x7353('0x47')+_0x388b35[_0x7353('0x2e')]+')':undefined,'ownerid@odata.bind':'/systemusers('+_0x388b35[_0x7353('0x20')]+')','directioncode':_0x388b35['callDirection']===_0x7353('0x4b')?![]:!![],'phonecall_activity_parties':_0x3f3c99},getCustomFields(_0x28349f[_0x7353('0x4d')],_0x188323,_0x28349f[_0x7353('0x49')])),'headers':{'Authorization':'Bearer\x20'+_0x3c353e,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x3fdc1a);})[_0x7353('0x13')](function(_0x32f599){var _0x29c8ca=_0x32f599[_0x7353('0x2a')][_0x7353('0x2b')];var _0x2f6947=_0x29c8ca[_0x7353('0x2c')](_0x29c8ca[_0x7353('0x2d')]('(')+0x1,_0x29c8ca['lastIndexOf'](')'));_0x388b35[_0x7353('0x4e')]=_0x2f6947;_0x2bfb61(_0x388b35);})['catch'](function(_0x170af7){_0xae02eb(_0x170af7[_0x7353('0x16')]);});});}function emit(_0x1edbb1,_0x2b685e,_0x4b2974,_0x2562b9){var _0x5cb40c={'uri':util[_0x7353('0x4f')](_0x7353('0x50'),_0x1edbb1,_0x4b2974,_0x2562b9)};io['to'](util[_0x7353('0x4f')](_0x7353('0x51'),_0x2b685e))[_0x7353('0x52')](_0x7353('0x53'),_0x5cb40c);}exports['cs']=function(_0x284855,_0x1d859d,_0x5ca5fd,_0x3f0a92,_0x3d9b1b,_0x460cfb,_0x171028,_0x278000){var _0x3b2ad0={};_0x460cfb[_0x7353('0xa')]=_0x460cfb[_0x7353('0x9')]?intUtil['stripTrailingSlash'](_0x460cfb['CloudProvider'][_0x7353('0x54')]):intUtil['stripTrailingSlash'](_0x460cfb[_0x7353('0xa')]);_0x460cfb[_0x7353('0x55')]=intUtil[_0x7353('0x56')](_0x460cfb[_0x7353('0x55')]);_0x3b2ad0[_0x7353('0x4a')]=_0x278000===_0x7353('0x4b')||_0x278000===_0x7353('0x57')?_0x7353('0x4b'):'outbound';var _0x5ebc54=_0x460cfb[_0x7353('0x9')]?util[_0x7353('0x4f')]('%s/api/data/v9.0/',_0x460cfb[_0x7353('0xb')]['data7']):util[_0x7353('0x4f')](_0x7353('0x58'),_0x460cfb[_0x7353('0xa')]);var _0x5c6e15=util[_0x7353('0x4f')](_0x7353('0x59'),_0x460cfb[_0x7353('0x5a')]);var _0x39c441=util[_0x7353('0x4f')](_0x7353('0x5b'),_0x460cfb['serverUrl'],_0x1d859d[_0x7353('0x5c')],md5(_0x1d859d[_0x7353('0x5c')]));if(_0x3d9b1b&&_0x3d9b1b['monitor_format']){logger['info'](_0x7353('0x5d'),_0x7353('0x5e'));_0x1d859d[_0x7353('0x5f')]=_0x39c441;}else if(_0x171028&&_0x171028[_0x7353('0x60')]&&_0x171028[_0x7353('0x60')]!==_0x7353('0x61')){logger[_0x7353('0x1e')](_0x7353('0x62'),'Recording\x20is\x20enabled!');_0x1d859d[_0x7353('0x5f')]=_0x39c441;}else{_0x1d859d[_0x7353('0x5f')]='';}return getUser(_0x3b2ad0,_0x460cfb,_0x3f0a92,_0x5c6e15,_0x5ebc54,_0x278000)[_0x7353('0x13')](function(_0x1cd02a){logger['info']('['+_0x278000[_0x7353('0x15')]()+_0x7353('0x63'),_0x1cd02a[_0x7353('0x20')]);logger['info']('['+_0x278000[_0x7353('0x15')]()+_0x7353('0x64'),_0x1cd02a['userEmail']);return getEndUser(_0x1cd02a,_0x460cfb,_0x5c6e15,_0x5ebc54,_0x1d859d,_0x278000,_0x5ca5fd[_0x7353('0x65')],_0x5ca5fd[_0x7353('0x66')]);})[_0x7353('0x13')](function(_0x18dc3f){logger[_0x7353('0x1e')]('['+_0x278000[_0x7353('0x15')]()+']\x20The\x20Enduser\x20ID\x20is:',_0x18dc3f[_0x7353('0x2e')]);logger[_0x7353('0x1e')]('['+_0x278000[_0x7353('0x15')]()+_0x7353('0x67'),_0x1d859d[_0x7353('0x27')]);return getTicket(_0x18dc3f,_0x460cfb,_0x5c6e15,_0x5ebc54,_0x1d859d,_0x5ca5fd,_0x278000);})['then'](function(_0x3748c7){logger['info'](util[_0x7353('0x4f')]('['+_0x278000[_0x7353('0x15')]()+']\x20The\x20%s\x20ID\x20is:\x20%s',_0x5ca5fd['ticketType'],_0x3748c7[_0x7353('0x4e')]));logger['info'](util[_0x7353('0x4f')]('['+_0x278000[_0x7353('0x15')]()+_0x7353('0x68'),_0x278000));if(_0x278000!==_0x7353('0x57')&&_0x5ca5fd[_0x7353('0x69')]){logger['info']('['+_0x278000[_0x7353('0x15')]()+']',_0x7353('0x6a'));emit(_0x460cfb[_0x7353('0xa')],_0x3f0a92['name'],_0x5ca5fd[_0x7353('0x49')],_0x3748c7[_0x7353('0x4e')]);}})[_0x7353('0x23')](function(_0x54fa45){logger['error']('['+_0x278000['toUpperCase']()+_0x7353('0x6b'),_0x54fa45[_0x7353('0x16')]);console[_0x7353('0x6c')](_0x7353('0x6d'),_0x54fa45);});};
\ No newline at end of file
index 62b362c..98ea039 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb73e=['name','stripTrailingSlash','serverUrl','[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:','catch','error','outbound','recordingFormat','none','[OUTBOUND]','destcalleridnum','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','%s/helpdesk/tickets/%d','unmanaged','monitor_format','lastevent','toUpperCase','Recording\x20is\x20enabled!','md5','util','ioredis','./util','freshdesk','redis','defaults','localhost','socket.io-emitter','application/json','Creating\x20new\x20ticket...','merge','format','Caller\x20-\x20%s','calleridname','calleridnum','getString','<br>','Fields','custom_fields','keyBy','value','%s/api/v2/tickets','remoteUri','POST','then','info','Ticket\x20created!','validateEmail','%s/api/v2/agents','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!','%s/api/v2/contacts','length','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Enduser\x20created.','apiKey','toString','base64','debug','[HTTP]','stringify','GET','map','forEach','includes','string','picklist','type','nameField','customField','toLowerCase','content','push','idField','variableName','customVariable','Variable'];(function(_0xa1e3e3,_0x29fe0e){var _0xc980e9=function(_0x1f5adc){while(--_0x1f5adc){_0xa1e3e3['push'](_0xa1e3e3['shift']());}};_0xc980e9(++_0x29fe0e);}(_0xb73e,0x182));var _0xeb73=function(_0x19f0b2,_0x29eab4){_0x19f0b2=_0x19f0b2-0x0;var _0x16b56f=_0xb73e[_0x19f0b2];return _0x16b56f;};'use strict';var _=require('lodash');var rp=require('request-promise');var md5=require(_0xeb73('0x0'));var util=require(_0xeb73('0x1'));var Redis=require(_0xeb73('0x2'));var intUtil=require(_0xeb73('0x3'));var config=require('../../../../config/environment');var logger=require('../../../../config/logger')(_0xeb73('0x4'));config[_0xeb73('0x5')]=_[_0xeb73('0x6')](config[_0xeb73('0x5')],{'host':_0xeb73('0x7'),'port':0x18eb});var io=require(_0xeb73('0x8'))(new Redis(config[_0xeb73('0x5')]));var headers={'Content-Type':_0xeb73('0x9'),'Accept':_0xeb73('0x9')};function emit(_0x39a92a,_0x1cae16,_0x521a9b){io['to'](_0x39a92a)['emit'](_0x1cae16,_0x521a9b);}function getTicket(_0x10a8a5,_0x3954fb,_0x3a03a6,_0x4b2bc8,_0x57dc18){logger['info'](_0xeb73('0xa'));var _0x9fe9f6=_[_0xeb73('0xb')]({'responder_id':_0x3954fb['id'],'requester_id':_0x3a03a6['id'],'name':util[_0xeb73('0xc')](_0xeb73('0xd'),_0x57dc18[_0xeb73('0xe')]),'phone':_0x57dc18[_0xeb73('0xf')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0xeb73('0x10')](_0x4b2bc8['Subjects'],_0x57dc18,'\x20'),'description':intUtil[_0xeb73('0x10')](_0x4b2bc8['Descriptions'],_0x57dc18,_0xeb73('0x11')),'tags':getTags(_0x4b2bc8['Tags'],'name')},getCustomFields(_0x4b2bc8[_0xeb73('0x12')],_0x57dc18));_0x9fe9f6[_0xeb73('0x13')]=_['mapValues'](_[_0xeb73('0x14')](_0x9fe9f6[_0xeb73('0x13')],'id'),_0xeb73('0x15'));return request({'uri':util[_0xeb73('0xc')](_0xeb73('0x16'),_0x10a8a5[_0xeb73('0x17')]),'method':_0xeb73('0x18'),'body':_0x9fe9f6})[_0xeb73('0x19')](function(_0x500ed9){logger[_0xeb73('0x1a')](_0xeb73('0x1b'));return _0x500ed9;});}function getUser(_0x1acd67,_0x1d648f){if(intUtil[_0xeb73('0x1c')](_0x1d648f)){return request({'uri':util[_0xeb73('0xc')](_0xeb73('0x1d'),_0x1acd67['remoteUri']),'qs':{'email':_0x1d648f}})[_0xeb73('0x19')](function(_0x1d8669){if(_0x1d8669['length']){logger['info']('Agent\x20found!');return _[_0xeb73('0x1e')](_0x1d8669,function(_0x3c0042){return _0x3c0042[_0xeb73('0x1f')][_0xeb73('0x20')]===_0x1d648f;});}else{logger[_0xeb73('0x1a')](_0xeb73('0x21'));return request({'uri':util[_0xeb73('0xc')](_0xeb73('0x22'),_0x1acd67['remoteUri'])})[_0xeb73('0x19')](function(_0x4a29cd){logger[_0xeb73('0x1a')](_0xeb73('0x23'));return _0x4a29cd;});}});}else{logger['info'](_0xeb73('0x24'));return request({'uri':util[_0xeb73('0xc')](_0xeb73('0x22'),_0x1acd67[_0xeb73('0x17')])})['then'](function(_0x59b82c){logger[_0xeb73('0x1a')](_0xeb73('0x23'));return _0x59b82c;});}}function getEndUser(_0x39eda0,_0x1a9c19,_0x12c2d5){logger['info']('Searching\x20enduser\x20with\x20phone',_0x12c2d5);return request({'uri':util[_0xeb73('0xc')](_0xeb73('0x25'),_0x39eda0[_0xeb73('0x17')]),'qs':{'phone':_0x12c2d5}})['then'](function(_0x3465ca){if(_0x3465ca[_0xeb73('0x26')]){logger['info'](_0xeb73('0x27'));return _[_0xeb73('0x1e')](_0x3465ca,{'phone':_0x12c2d5});}else{logger['info'](_0xeb73('0x28'));return request({'uri':util[_0xeb73('0xc')](_0xeb73('0x25'),_0x39eda0['remoteUri']),'method':'POST','body':{'name':_0x1a9c19,'phone':_0x12c2d5}})[_0xeb73('0x19')](function(_0x124c18){logger[_0xeb73('0x1a')](_0xeb73('0x29'));return _0x124c18;});}});}function getAuth(_0x3ead77){return util['format']('Basic\x20%s',new Buffer(_0x3ead77[_0xeb73('0x2a')]+':X')[_0xeb73('0x2b')](_0xeb73('0x2c')));}function request(_0x2e57ac){logger[_0xeb73('0x2d')](_0xeb73('0x2e'),JSON[_0xeb73('0x2f')](_0x2e57ac));return rp(_['defaults'](_0x2e57ac,{'method':_0xeb73('0x30'),'headers':headers,'json':!![]}));}function getTags(_0x15e069,_0x4653c2){var _0x5b1928=[];if(_0x15e069&&_0x15e069['length']>0x0){_0x5b1928=_[_0xeb73('0x31')](_0x15e069,_0x4653c2);}return _0x5b1928;}function getCustomFields(_0x1c2b89,_0x3b7be6){var _0x44f869=[];var _0x3ea56e={'custom_fields':[]};if(_0x1c2b89[_0xeb73('0x26')]>0x0){_[_0xeb73('0x32')](_0x1c2b89,function(_0x4a0c9b){if(_[_0xeb73('0x33')]([_0xeb73('0x34'),_0xeb73('0x35')],_0x4a0c9b[_0xeb73('0x36')])&&_0x4a0c9b[_0xeb73('0x37')]&&!_0x4a0c9b[_0xeb73('0x38')]){_0x3ea56e[_0x4a0c9b[_0xeb73('0x37')][_0xeb73('0x39')]()]=_0x4a0c9b[_0xeb73('0x3a')][_0xeb73('0x2b')]();}else if(_[_0xeb73('0x33')]([_0xeb73('0x34'),_0xeb73('0x35')],_0x4a0c9b['type'])&&_0x4a0c9b['idField']&&_0x4a0c9b[_0xeb73('0x38')]){_0x3ea56e[_0xeb73('0x13')][_0xeb73('0x3b')]({'id':_0x4a0c9b[_0xeb73('0x3c')],'value':_0x4a0c9b[_0xeb73('0x3a')][_0xeb73('0x2b')]()});}else if(_0x4a0c9b['type']==='variable'&&_0x4a0c9b[_0xeb73('0x3d')]&&_0x4a0c9b[_0xeb73('0x3c')]&&_0x4a0c9b[_0xeb73('0x38')]){_0x3b7be6[_0x4a0c9b[_0xeb73('0x3d')]]&&_0x3ea56e[_0xeb73('0x13')][_0xeb73('0x3b')]({'id':_0x4a0c9b[_0xeb73('0x3c')],'value':_0x3b7be6[_0x4a0c9b[_0xeb73('0x3d')]][_0xeb73('0x2b')]()});}else if(_0x4a0c9b['type']===_0xeb73('0x3e')&&_0x4a0c9b[_0xeb73('0x3f')]&&_0x4a0c9b['Variable']['name']&&_0x4a0c9b['idField']&&_0x4a0c9b[_0xeb73('0x38')]){_0x3b7be6[_0x4a0c9b['Variable'][_0xeb73('0x40')][_0xeb73('0x39')]()]&&_0x3ea56e['custom_fields'][_0xeb73('0x3b')]({'id':_0x4a0c9b[_0xeb73('0x3c')],'value':_0x3b7be6[_0x4a0c9b[_0xeb73('0x3f')][_0xeb73('0x40')][_0xeb73('0x39')]()][_0xeb73('0x2b')]()});}});}return _0x3ea56e;}exports['queue']=function(_0x506bcb,_0x44fc27,_0x1b95c4,_0x11a09a,_0x185ccf,_0x5846dd){var _0x17f0b3,_0x16f665;_0x5846dd[_0xeb73('0x17')]=intUtil[_0xeb73('0x41')](_0x5846dd[_0xeb73('0x17')]);_0x5846dd[_0xeb73('0x42')]=intUtil[_0xeb73('0x41')](_0x5846dd['serverUrl']);if(_0x185ccf&&_0x185ccf['monitor_format']){logger[_0xeb73('0x1a')](_0xeb73('0x43'),'Recording\x20is\x20enabled!');_0x44fc27[_0xeb73('0x44')]=util[_0xeb73('0xc')](_0xeb73('0x45'),_0x5846dd['serverUrl'],_0x44fc27[_0xeb73('0x46')],md5(_0x44fc27[_0xeb73('0x46')]));}else{_0x44fc27[_0xeb73('0x44')]='';}headers[_0xeb73('0x47')]=getAuth(_0x5846dd);return getUser(_0x5846dd,_0x11a09a[_0xeb73('0x20')])[_0xeb73('0x19')](function(_0xc95102){_0x17f0b3=_0xc95102;logger['info'](_0xeb73('0x48'),_0x17f0b3['id']);return getEndUser(_0x5846dd,_0x44fc27[_0xeb73('0xe')],_0x44fc27[_0xeb73('0xf')]);})[_0xeb73('0x19')](function(_0x17c6d2){_0x16f665=_0x17c6d2;logger[_0xeb73('0x1a')](_0xeb73('0x49'),_0x16f665['id']);return getTicket(_0x5846dd,_0x17f0b3,_0x16f665,_0x1b95c4,_0x44fc27);})['then'](function(_0x478f5a){if(_0x478f5a&&_0x478f5a['id']){logger[_0xeb73('0x1a')]('Ticket\x20created!');logger[_0xeb73('0x1a')](_0xeb73('0x4a'),_0x478f5a['id']);logger['info'](_0xeb73('0x43'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util['format']('user:%s',_0x11a09a[_0xeb73('0x40')]),'trigger:browser:url',{'uri':util['format']('%s/helpdesk/tickets/%d',_0x5846dd[_0xeb73('0x17')],_0x478f5a['id'])});}})[_0xeb73('0x4b')](function(_0x171f67){logger[_0xeb73('0x4c')](_0xeb73('0x43'),JSON[_0xeb73('0x2f')](_0x171f67));});};exports[_0xeb73('0x4d')]=function(_0x129ce2,_0x5268ca,_0x162923,_0x1b4870,_0x4f5e44,_0xfbb342,_0x415bc3){var _0x585065,_0x272bdd;_0xfbb342[_0xeb73('0x17')]=intUtil[_0xeb73('0x41')](_0xfbb342[_0xeb73('0x17')]);_0xfbb342[_0xeb73('0x42')]=intUtil[_0xeb73('0x41')](_0xfbb342['serverUrl']);if(_0x415bc3&&_0x415bc3[_0xeb73('0x4e')]&&_0x415bc3[_0xeb73('0x4e')]!==_0xeb73('0x4f')){logger['info'](_0xeb73('0x50'),'Recording\x20is\x20enabled!');_0x5268ca[_0xeb73('0x44')]=util[_0xeb73('0xc')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0xfbb342['serverUrl'],_0x5268ca['uniqueid'],md5(_0x5268ca[_0xeb73('0x46')]));}headers[_0xeb73('0x47')]=getAuth(_0xfbb342);return getUser(_0xfbb342,_0x1b4870[_0xeb73('0x20')])[_0xeb73('0x19')](function(_0x2dbb04){_0x585065=_0x2dbb04;logger[_0xeb73('0x1a')]('The\x20User\x20ID\x20is:',_0x585065['id']);return getEndUser(_0xfbb342,_0x5268ca['destcalleridname'],_0x5268ca[_0xeb73('0x51')]);})['then'](function(_0x46d711){_0x272bdd=_0x46d711;logger[_0xeb73('0x1a')](_0xeb73('0x49'),_0x272bdd['id']);return getTicket(_0xfbb342,_0x585065,_0x272bdd,_0x162923,_0x5268ca);})[_0xeb73('0x19')](function(_0x5412fe){if(_0x5412fe&&_0x5412fe['id']){logger['info'](_0xeb73('0x1b'));logger[_0xeb73('0x1a')](_0xeb73('0x4a'),_0x5412fe['id']);logger['info']('[OUTBOUND]',_0xeb73('0x52'));emit(util[_0xeb73('0xc')]('user:%s',_0x1b4870[_0xeb73('0x40')]),_0xeb73('0x53'),{'uri':util[_0xeb73('0xc')](_0xeb73('0x54'),_0xfbb342[_0xeb73('0x17')],_0x5412fe['id'])});}})[_0xeb73('0x4b')](function(_0xc0b94a){logger[_0xeb73('0x4c')](_0xeb73('0x50'),JSON['stringify'](_0xc0b94a));});};exports[_0xeb73('0x55')]=function(_0x46f520,_0x5068a4,_0x10895b,_0x282e9a,_0x5d1cb7,_0x208c45){var _0xaf9ef2,_0x94858f;_0x208c45[_0xeb73('0x17')]=intUtil[_0xeb73('0x41')](_0x208c45['remoteUri']);_0x208c45[_0xeb73('0x42')]=intUtil[_0xeb73('0x41')](_0x208c45[_0xeb73('0x42')]);if(_0x5d1cb7&&_0x5d1cb7[_0xeb73('0x56')]){logger[_0xeb73('0x1a')]('['+_0x5068a4[_0xeb73('0x57')][_0xeb73('0x58')]()+']',_0xeb73('0x59'));_0x5068a4[_0xeb73('0x44')]=util['format'](_0xeb73('0x45'),_0x208c45[_0xeb73('0x42')],_0x5068a4[_0xeb73('0x46')],md5(_0x5068a4[_0xeb73('0x46')]));}else{_0x5068a4[_0xeb73('0x44')]='';}headers[_0xeb73('0x47')]=getAuth(_0x208c45);return getUser(_0x208c45,'')[_0xeb73('0x19')](function(_0x331332){_0xaf9ef2=_0x331332;logger[_0xeb73('0x1a')](_0xeb73('0x48'),_0xaf9ef2['id']);return getEndUser(_0x208c45,_0x5068a4[_0xeb73('0xe')],_0x5068a4[_0xeb73('0xf')]);})[_0xeb73('0x19')](function(_0x331137){_0x94858f=_0x331137;logger[_0xeb73('0x1a')](_0xeb73('0x49'),_0x94858f['id']);return getTicket(_0x208c45,_0xaf9ef2,_0x94858f,_0x10895b,_0x5068a4);})[_0xeb73('0x19')](function(_0x231dbb){if(_0x231dbb){logger[_0xeb73('0x1a')](_0xeb73('0x1b'));logger['info'](_0xeb73('0x4a'),_0x231dbb['id']);}})['catch'](function(_0x9ee7c9){logger[_0xeb73('0x4c')]('['+_0x5068a4[_0xeb73('0x57')][_0xeb73('0x58')]()+']',JSON['stringify'](_0x9ee7c9));});};
\ No newline at end of file
+var _0x2d72=['type','nameField','customField','toLowerCase','content','includes','idField','variable','push','variableName','customVariable','Variable','name','queue','stripTrailingSlash','serverUrl','monitor_format','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','The\x20User\x20ID\x20is:','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','%s/helpdesk/tickets/%d','catch','error','outbound','recordingFormat','none','[OUTBOUND]','destcalleridnum','trigger:browser:url','unmanaged','lastevent','toUpperCase','lodash','request-promise','util','ioredis','./util','../../../../config/environment','../../../../config/logger','freshdesk','redis','application/json','emit','info','Creating\x20new\x20ticket...','merge','format','calleridname','calleridnum','Subjects','Descriptions','Fields','custom_fields','POST','then','Ticket\x20created!','validateEmail','%s/api/v2/agents','length','Agent\x20found!','find','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','remoteUri','Admin\x20account\x20selected.','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','Enduser\x20found!','Enduser\x20created.','Basic\x20%s','toString','base64','debug','[HTTP]','stringify','defaults','map','string','picklist'];(function(_0x2b84f7,_0x3eeb07){var _0x18f7f1=function(_0x165d2a){while(--_0x165d2a){_0x2b84f7['push'](_0x2b84f7['shift']());}};_0x18f7f1(++_0x3eeb07);}(_0x2d72,0x81));var _0x22d7=function(_0x2f86b4,_0x31aa14){_0x2f86b4=_0x2f86b4-0x0;var _0x1c35dd=_0x2d72[_0x2f86b4];return _0x1c35dd;};'use strict';var _=require(_0x22d7('0x0'));var rp=require(_0x22d7('0x1'));var md5=require('md5');var util=require(_0x22d7('0x2'));var Redis=require(_0x22d7('0x3'));var intUtil=require(_0x22d7('0x4'));var config=require(_0x22d7('0x5'));var logger=require(_0x22d7('0x6'))(_0x22d7('0x7'));config[_0x22d7('0x8')]=_['defaults'](config[_0x22d7('0x8')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x22d7('0x8')]));var headers={'Content-Type':_0x22d7('0x9'),'Accept':_0x22d7('0x9')};function emit(_0x31c234,_0x2e0e9f,_0x343a01){io['to'](_0x31c234)[_0x22d7('0xa')](_0x2e0e9f,_0x343a01);}function getTicket(_0x149dd8,_0x2147c6,_0x451a9c,_0x1395b4,_0x203161){logger[_0x22d7('0xb')](_0x22d7('0xc'));var _0x7e8b54=_[_0x22d7('0xd')]({'responder_id':_0x2147c6['id'],'requester_id':_0x451a9c['id'],'name':util[_0x22d7('0xe')]('Caller\x20-\x20%s',_0x203161[_0x22d7('0xf')]),'phone':_0x203161[_0x22d7('0x10')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil['getString'](_0x1395b4[_0x22d7('0x11')],_0x203161,'\x20'),'description':intUtil['getString'](_0x1395b4[_0x22d7('0x12')],_0x203161,'<br>'),'tags':getTags(_0x1395b4['Tags'],'name')},getCustomFields(_0x1395b4[_0x22d7('0x13')],_0x203161));_0x7e8b54['custom_fields']=_['mapValues'](_['keyBy'](_0x7e8b54[_0x22d7('0x14')],'id'),'value');return request({'uri':util[_0x22d7('0xe')]('%s/api/v2/tickets',_0x149dd8['remoteUri']),'method':_0x22d7('0x15'),'body':_0x7e8b54})[_0x22d7('0x16')](function(_0xb0ed6a){logger['info'](_0x22d7('0x17'));return _0xb0ed6a;});}function getUser(_0x45aa01,_0x1aafc3){if(intUtil[_0x22d7('0x18')](_0x1aafc3)){return request({'uri':util['format'](_0x22d7('0x19'),_0x45aa01['remoteUri']),'qs':{'email':_0x1aafc3}})[_0x22d7('0x16')](function(_0x5ac319){if(_0x5ac319[_0x22d7('0x1a')]){logger[_0x22d7('0xb')](_0x22d7('0x1b'));return _[_0x22d7('0x1c')](_0x5ac319,function(_0x39b16a){return _0x39b16a['contact']['email']===_0x1aafc3;});}else{logger[_0x22d7('0xb')](_0x22d7('0x1d'));return request({'uri':util['format']('%s/api/v2/agents/me',_0x45aa01[_0x22d7('0x1e')])})[_0x22d7('0x16')](function(_0x47ef65){logger[_0x22d7('0xb')](_0x22d7('0x1f'));return _0x47ef65;});}});}else{logger[_0x22d7('0xb')](_0x22d7('0x20'));return request({'uri':util[_0x22d7('0xe')]('%s/api/v2/agents/me',_0x45aa01[_0x22d7('0x1e')])})[_0x22d7('0x16')](function(_0x534036){logger[_0x22d7('0xb')]('Admin\x20account\x20selected.');return _0x534036;});}}function getEndUser(_0x56ae80,_0x391181,_0x531ae0){logger[_0x22d7('0xb')](_0x22d7('0x21'),_0x531ae0);return request({'uri':util[_0x22d7('0xe')](_0x22d7('0x22'),_0x56ae80[_0x22d7('0x1e')]),'qs':{'phone':_0x531ae0}})[_0x22d7('0x16')](function(_0x1514a9){if(_0x1514a9[_0x22d7('0x1a')]){logger[_0x22d7('0xb')](_0x22d7('0x23'));return _[_0x22d7('0x1c')](_0x1514a9,{'phone':_0x531ae0});}else{logger['info']('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util[_0x22d7('0xe')](_0x22d7('0x22'),_0x56ae80[_0x22d7('0x1e')]),'method':_0x22d7('0x15'),'body':{'name':_0x391181,'phone':_0x531ae0}})[_0x22d7('0x16')](function(_0x2a7fc0){logger[_0x22d7('0xb')](_0x22d7('0x24'));return _0x2a7fc0;});}});}function getAuth(_0x4a7b54){return util[_0x22d7('0xe')](_0x22d7('0x25'),new Buffer(_0x4a7b54['apiKey']+':X')[_0x22d7('0x26')](_0x22d7('0x27')));}function request(_0x166b4d){logger[_0x22d7('0x28')](_0x22d7('0x29'),JSON[_0x22d7('0x2a')](_0x166b4d));return rp(_[_0x22d7('0x2b')](_0x166b4d,{'method':'GET','headers':headers,'json':!![]}));}function getTags(_0x587730,_0x141d10){var _0x4def53=[];if(_0x587730&&_0x587730[_0x22d7('0x1a')]>0x0){_0x4def53=_[_0x22d7('0x2c')](_0x587730,_0x141d10);}return _0x4def53;}function getCustomFields(_0xae1039,_0x19a220){var _0x3e0730=[];var _0x32402d={'custom_fields':[]};if(_0xae1039['length']>0x0){_['forEach'](_0xae1039,function(_0x5e8028){if(_['includes']([_0x22d7('0x2d'),_0x22d7('0x2e')],_0x5e8028[_0x22d7('0x2f')])&&_0x5e8028[_0x22d7('0x30')]&&!_0x5e8028[_0x22d7('0x31')]){_0x32402d[_0x5e8028['nameField'][_0x22d7('0x32')]()]=_0x5e8028[_0x22d7('0x33')][_0x22d7('0x26')]();}else if(_[_0x22d7('0x34')]([_0x22d7('0x2d'),_0x22d7('0x2e')],_0x5e8028[_0x22d7('0x2f')])&&_0x5e8028['idField']&&_0x5e8028[_0x22d7('0x31')]){_0x32402d['custom_fields']['push']({'id':_0x5e8028[_0x22d7('0x35')],'value':_0x5e8028[_0x22d7('0x33')][_0x22d7('0x26')]()});}else if(_0x5e8028['type']===_0x22d7('0x36')&&_0x5e8028['variableName']&&_0x5e8028[_0x22d7('0x35')]&&_0x5e8028[_0x22d7('0x31')]){_0x19a220[_0x5e8028['variableName']]&&_0x32402d[_0x22d7('0x14')][_0x22d7('0x37')]({'id':_0x5e8028[_0x22d7('0x35')],'value':_0x19a220[_0x5e8028[_0x22d7('0x38')]]['toString']()});}else if(_0x5e8028[_0x22d7('0x2f')]===_0x22d7('0x39')&&_0x5e8028[_0x22d7('0x3a')]&&_0x5e8028[_0x22d7('0x3a')][_0x22d7('0x3b')]&&_0x5e8028['idField']&&_0x5e8028[_0x22d7('0x31')]){_0x19a220[_0x5e8028[_0x22d7('0x3a')][_0x22d7('0x3b')][_0x22d7('0x32')]()]&&_0x32402d['custom_fields'][_0x22d7('0x37')]({'id':_0x5e8028['idField'],'value':_0x19a220[_0x5e8028[_0x22d7('0x3a')]['name'][_0x22d7('0x32')]()][_0x22d7('0x26')]()});}});}return _0x32402d;}exports[_0x22d7('0x3c')]=function(_0x236d27,_0x1c7921,_0x444cd4,_0x14e87a,_0x4792de,_0x11eb50){var _0x108472,_0x236276;_0x11eb50['remoteUri']=intUtil[_0x22d7('0x3d')](_0x11eb50[_0x22d7('0x1e')]);_0x11eb50['serverUrl']=intUtil['stripTrailingSlash'](_0x11eb50[_0x22d7('0x3e')]);if(_0x4792de&&_0x4792de[_0x22d7('0x3f')]){logger[_0x22d7('0xb')]('[QUEUE]',_0x22d7('0x40'));_0x1c7921[_0x22d7('0x41')]=util[_0x22d7('0xe')](_0x22d7('0x42'),_0x11eb50[_0x22d7('0x3e')],_0x1c7921[_0x22d7('0x43')],md5(_0x1c7921[_0x22d7('0x43')]));}else{_0x1c7921[_0x22d7('0x41')]='';}headers[_0x22d7('0x44')]=getAuth(_0x11eb50);return getUser(_0x11eb50,_0x14e87a[_0x22d7('0x45')])[_0x22d7('0x16')](function(_0x2d3ab1){_0x108472=_0x2d3ab1;logger['info'](_0x22d7('0x46'),_0x108472['id']);return getEndUser(_0x11eb50,_0x1c7921[_0x22d7('0xf')],_0x1c7921[_0x22d7('0x10')]);})['then'](function(_0x563f10){_0x236276=_0x563f10;logger[_0x22d7('0xb')](_0x22d7('0x47'),_0x236276['id']);return getTicket(_0x11eb50,_0x108472,_0x236276,_0x444cd4,_0x1c7921);})['then'](function(_0x3d8cc2){if(_0x3d8cc2&&_0x3d8cc2['id']){logger['info'](_0x22d7('0x17'));logger[_0x22d7('0xb')](_0x22d7('0x48'),_0x3d8cc2['id']);logger[_0x22d7('0xb')](_0x22d7('0x49'),_0x22d7('0x4a'));emit(util['format'](_0x22d7('0x4b'),_0x14e87a[_0x22d7('0x3b')]),'trigger:browser:url',{'uri':util['format'](_0x22d7('0x4c'),_0x11eb50[_0x22d7('0x1e')],_0x3d8cc2['id'])});}})[_0x22d7('0x4d')](function(_0x4ada19){logger[_0x22d7('0x4e')]('[QUEUE]',JSON[_0x22d7('0x2a')](_0x4ada19));});};exports[_0x22d7('0x4f')]=function(_0x5337ed,_0x5bcf51,_0x32e71a,_0x4e32a1,_0x10ab55,_0x326b6e,_0x1d266d){var _0x1a3a12,_0x33e7d4;_0x326b6e[_0x22d7('0x1e')]=intUtil[_0x22d7('0x3d')](_0x326b6e[_0x22d7('0x1e')]);_0x326b6e[_0x22d7('0x3e')]=intUtil[_0x22d7('0x3d')](_0x326b6e[_0x22d7('0x3e')]);if(_0x1d266d&&_0x1d266d['recordingFormat']&&_0x1d266d[_0x22d7('0x50')]!==_0x22d7('0x51')){logger['info'](_0x22d7('0x52'),_0x22d7('0x40'));_0x5bcf51[_0x22d7('0x41')]=util[_0x22d7('0xe')](_0x22d7('0x42'),_0x326b6e['serverUrl'],_0x5bcf51[_0x22d7('0x43')],md5(_0x5bcf51[_0x22d7('0x43')]));}headers[_0x22d7('0x44')]=getAuth(_0x326b6e);return getUser(_0x326b6e,_0x4e32a1['email'])[_0x22d7('0x16')](function(_0x1d722f){_0x1a3a12=_0x1d722f;logger[_0x22d7('0xb')]('The\x20User\x20ID\x20is:',_0x1a3a12['id']);return getEndUser(_0x326b6e,_0x5bcf51['destcalleridname'],_0x5bcf51[_0x22d7('0x53')]);})[_0x22d7('0x16')](function(_0x16a6b2){_0x33e7d4=_0x16a6b2;logger[_0x22d7('0xb')](_0x22d7('0x47'),_0x33e7d4['id']);return getTicket(_0x326b6e,_0x1a3a12,_0x33e7d4,_0x32e71a,_0x5bcf51);})['then'](function(_0x12b9a9){if(_0x12b9a9&&_0x12b9a9['id']){logger[_0x22d7('0xb')](_0x22d7('0x17'));logger[_0x22d7('0xb')]('The\x20Ticket\x20ID\x20is:',_0x12b9a9['id']);logger[_0x22d7('0xb')](_0x22d7('0x52'),_0x22d7('0x4a'));emit(util['format'](_0x22d7('0x4b'),_0x4e32a1['name']),_0x22d7('0x54'),{'uri':util[_0x22d7('0xe')]('%s/helpdesk/tickets/%d',_0x326b6e['remoteUri'],_0x12b9a9['id'])});}})[_0x22d7('0x4d')](function(_0x1ba885){logger[_0x22d7('0x4e')](_0x22d7('0x52'),JSON[_0x22d7('0x2a')](_0x1ba885));});};exports[_0x22d7('0x55')]=function(_0x2913be,_0x54cf5e,_0x1a59dd,_0xe0dd24,_0x398ced,_0x2fce16){var _0x25aa0f,_0x229308;_0x2fce16[_0x22d7('0x1e')]=intUtil[_0x22d7('0x3d')](_0x2fce16['remoteUri']);_0x2fce16[_0x22d7('0x3e')]=intUtil[_0x22d7('0x3d')](_0x2fce16[_0x22d7('0x3e')]);if(_0x398ced&&_0x398ced[_0x22d7('0x3f')]){logger[_0x22d7('0xb')]('['+_0x54cf5e[_0x22d7('0x56')][_0x22d7('0x57')]()+']',_0x22d7('0x40'));_0x54cf5e[_0x22d7('0x41')]=util[_0x22d7('0xe')](_0x22d7('0x42'),_0x2fce16['serverUrl'],_0x54cf5e[_0x22d7('0x43')],md5(_0x54cf5e[_0x22d7('0x43')]));}else{_0x54cf5e[_0x22d7('0x41')]='';}headers[_0x22d7('0x44')]=getAuth(_0x2fce16);return getUser(_0x2fce16,'')[_0x22d7('0x16')](function(_0x13d7e9){_0x25aa0f=_0x13d7e9;logger['info'](_0x22d7('0x46'),_0x25aa0f['id']);return getEndUser(_0x2fce16,_0x54cf5e[_0x22d7('0xf')],_0x54cf5e[_0x22d7('0x10')]);})[_0x22d7('0x16')](function(_0x25e8b1){_0x229308=_0x25e8b1;logger[_0x22d7('0xb')]('The\x20Enduser\x20ID\x20is:',_0x229308['id']);return getTicket(_0x2fce16,_0x25aa0f,_0x229308,_0x1a59dd,_0x54cf5e);})[_0x22d7('0x16')](function(_0x34e002){if(_0x34e002){logger[_0x22d7('0xb')]('Ticket\x20created!');logger['info']('The\x20Ticket\x20ID\x20is:',_0x34e002['id']);}})[_0x22d7('0x4d')](function(_0x2ee6c3){logger[_0x22d7('0x4e')]('['+_0x54cf5e['lastevent']['toUpperCase']()+']',JSON['stringify'](_0x2ee6c3));});};
\ No newline at end of file
index 0676012..f272e3a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7888=['email','adminEmail','adminId','info','Requested\x20Resource\x20not\x20Found','catch','toUpperCase','message','agentEmail','userEmail','userId','User\x20found:','Admin\x20selected','error','GET','/api/lookup?q=','&f=','&entities=contact','find','contacts','format','Searching\x20contact\x20with\x20phone\x20%s','contactNumber','endUserId','Contact\x20found\x20mobile_number:','Contact\x20found\x20work_number:','/api/contacts','YYYY-MM-DDTHH:mm:ss','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','Creating\x20new\x20task','POST','/api/tasks','getString','Subjects','Contact','ticketId','task','/contacts/','user:%s','emit','trigger:browser:url','Token\x20token=','apiKey','remoteUri','stripTrailingSlash','toLowerCase','outbound','destcalleridnum','calleridnum','callDirection','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','monitor_format','[QUEUE]','recordingURL','recordingFormat','none','[OUTBOUND]','The\x20ticket\x20ID\x20is:\x20%s','Displaying\x20task\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Freshsales\x20integration','inspect','lodash','request-promise','md5','moment','bluebird','./util','../../../../config/environment','redis','defaults','localhost','socket.io-emitter','/api/selector/owners','headers','Getting\x20admin\x20information','then','users','length'];(function(_0xb0d406,_0x303526){var _0x206cb3=function(_0x3d4299){while(--_0x3d4299){_0xb0d406['push'](_0xb0d406['shift']());}};_0x206cb3(++_0x303526);}(_0x7888,0x1e7));var _0x8788=function(_0x1ef64f,_0x26a0ca){_0x1ef64f=_0x1ef64f-0x0;var _0x2598bc=_0x7888[_0x1ef64f];return _0x2598bc;};'use strict';var _=require(_0x8788('0x0'));var rp=require(_0x8788('0x1'));var md5=require(_0x8788('0x2'));var util=require('util');var moment=require(_0x8788('0x3'));var Promise=require(_0x8788('0x4'));var Redis=require('ioredis');var intUtil=require(_0x8788('0x5'));var config=require(_0x8788('0x6'));var logger=require('../../../../config/logger')('freshsales');config[_0x8788('0x7')]=_[_0x8788('0x8')](config['redis'],{'host':_0x8788('0x9'),'port':0x18eb});var io=require(_0x8788('0xa'))(new Redis(config[_0x8788('0x7')]));function getAdminId(_0x459f65,_0x278533,_0x533797,_0x37afbc){return new Promise(function(_0x3ed2a5,_0x499bcc){var _0x9b698a=![];var _0x33905e={'method':'GET','uri':_0x37afbc+_0x8788('0xb'),'json':!![]};_0x33905e[_0x8788('0xc')]=_0x533797;logger['info'](_0x8788('0xd'));return rp(_0x33905e)[_0x8788('0xe')](function(_0x3f07d7){if(_0x3f07d7){var _0xbc1826=_0x3f07d7[_0x8788('0xf')];var _0xa397f6=null;for(_0xa397f6=0x0;_0xa397f6<_0xbc1826[_0x8788('0x10')];_0xa397f6++){if(_0xbc1826[_0xa397f6][_0x8788('0x11')]===_0x459f65[_0x8788('0x12')]){_0x459f65[_0x8788('0x13')]=_0xbc1826[_0xa397f6]['id'];_0x9b698a=!![];}}if(_0x9b698a){logger[_0x8788('0x14')]('Admin\x20found:',_0x459f65['adminId']);_0x3ed2a5(_0x459f65);}else{_0x499bcc({'statusCode':0x194,'message':_0x8788('0x15')});}}else{_0x499bcc({'statusCode':0x194,'message':_0x8788('0x15')});}})[_0x8788('0x16')](function(_0x54e87b){logger['error']('['+[_0x278533[_0x8788('0x17')]()]+']',_0x54e87b[_0x8788('0x18')]);_0x499bcc(_0x54e87b);});});}function getUser(_0x42fb0e,_0x1ca35e,_0x4f2535){return function(_0x1b4e54){return new Promise(function(_0x360a13,_0x2a6e1a){var _0x30b45e={'method':'GET','uri':_0x4f2535+_0x8788('0xb'),'json':!![]};_0x30b45e[_0x8788('0xc')]=_0x1ca35e;logger[_0x8788('0x14')]('Getting\x20user\x20list');return rp(_0x30b45e)[_0x8788('0xe')](function(_0x830f3f){if(_0x830f3f){var _0x4f2547=_0x830f3f[_0x8788('0xf')];var _0x182927=![];var _0xd53a7=null;if(_0x1b4e54['agentEmail']!==null){logger[_0x8788('0x14')]('Getting\x20user\x20with\x20email',_0x1b4e54[_0x8788('0x19')]);_0x1b4e54[_0x8788('0x1a')]=_0x1b4e54['agentEmail'];for(_0xd53a7=0x0;_0xd53a7<_0x4f2547[_0x8788('0x10')];_0xd53a7++){if(_0x4f2547[_0xd53a7][_0x8788('0x11')]===_0x1b4e54[_0x8788('0x19')]){_0x182927=!![];_0x1b4e54[_0x8788('0x1b')]=_0x4f2547[_0xd53a7]['id'];logger[_0x8788('0x14')](_0x8788('0x1c'),_0x1b4e54['userId']);}}}if(!_0x182927){logger['info'](_0x8788('0x1d'));_0x1b4e54[_0x8788('0x1a')]=_0x1b4e54[_0x8788('0x12')];_0x1b4e54['userId']=_0x1b4e54['adminId'];_0x182927=!![];}if(_0x182927){_0x360a13(_0x1b4e54);}else{_0x2a6e1a({'statusCode':0x194,'message':_0x8788('0x15')});}}else{_0x2a6e1a({'statusCode':0x194,'message':_0x8788('0x15')});}})[_0x8788('0x16')](function(_0x1b899b){logger[_0x8788('0x1e')]('['+[_0x42fb0e[_0x8788('0x17')]()]+']',_0x1b899b[_0x8788('0x18')]);_0x2a6e1a(_0x1b899b);});});};}function searchContact(_0xa348a7,_0x7abac,_0x480d50,_0x1146f2){return new Promise(function(_0x4106f5,_0x473413){var _0x21d61c={'method':_0x8788('0x1f'),'headers':_0x7abac,'uri':_0xa348a7+_0x8788('0x20')+_0x1146f2+_0x8788('0x21')+_0x480d50+_0x8788('0x22'),'json':!![]};rp(_0x21d61c)[_0x8788('0xe')](function(_0x1a81d0){var _0x2869e3=_[_0x8788('0x23')](_0x1a81d0[_0x8788('0x24')][_0x8788('0x24')],[_0x480d50,_0x1146f2]);_0x4106f5(_0x2869e3);})[_0x8788('0x16')](function(_0x11296e){_0x473413(_0x11296e);});});}function getEndUser(_0x37c6ba,_0x438708,_0x5ec659){return function(_0xf331e3){return new Promise(function(_0x148ad1,_0x26ad9b){logger[_0x8788('0x14')](util[_0x8788('0x25')](_0x8788('0x26'),_0xf331e3[_0x8788('0x27')]));searchContact(_0x5ec659,_0x438708,'mobile_number',_0xf331e3['contactNumber'])[_0x8788('0xe')](function(_0x27aeca){if(_0x27aeca){_0xf331e3[_0x8788('0x28')]=_0x27aeca['id'];logger[_0x8788('0x14')](_0x8788('0x29'),_0xf331e3['endUserId']);return _0x148ad1(_0xf331e3);}searchContact(_0x5ec659,_0x438708,'work_number',_0xf331e3[_0x8788('0x27')])['then'](function(_0x3d74f6){if(_0x3d74f6){_0xf331e3[_0x8788('0x28')]=_0x3d74f6['id'];logger['info'](_0x8788('0x2a'),_0xf331e3[_0x8788('0x28')]);return _0x148ad1(_0xf331e3);}createEndUser(_0xf331e3,_0x37c6ba,_0x438708,_0x5ec659)[_0x8788('0xe')](function(_0x17cee1){logger[_0x8788('0x14')]('Contact\x20created:',_0x17cee1['endUserId']);return _0x148ad1(_0x17cee1);});});})['catch'](function(_0x1536f5){_0x26ad9b(_0x1536f5);});});};}function createEndUser(_0x320377,_0x541fc0,_0x57cfff,_0x30ec25){return new Promise(function(_0x407674,_0xa209ae){var _0x5a94c5=moment();var _0x1b14ba={'method':'POST','uri':_0x30ec25+_0x8788('0x2b'),'body':{'contact':{'last_name':_0x320377[_0x8788('0x27')],'work_number':_0x320377[_0x8788('0x27')],'mobile_number':_0x320377[_0x8788('0x27')],'owner_id':_0x320377['userId'],'created_at':_0x5a94c5['format'](_0x8788('0x2c'))}},'json':!![]};_0x1b14ba[_0x8788('0xc')]=_0x57cfff;logger['info'](_0x8788('0x2d'));return rp(_0x1b14ba)[_0x8788('0xe')](function(_0x21051d){_0x320377[_0x8788('0x28')]=_0x21051d[_0x8788('0x2e')]['id'];_0x407674(_0x320377);})[_0x8788('0x16')](function(_0x382a3f){logger[_0x8788('0x1e')]('['+[_0x541fc0[_0x8788('0x17')]()]+']',_0x382a3f[_0x8788('0x18')]);_0xa209ae(_0x382a3f[_0x8788('0x18')]);});});}function getTicket(_0x3ba4c3,_0x21a204,_0x549c7c,_0xa745c4,_0x394938){return function(_0x3308f2){logger['info'](_0x8788('0x2f'));return new Promise(function(_0x4b5751,_0x17e9cf){var _0x5ca5a9=moment();var _0x5ada7f={'method':_0x8788('0x30'),'uri':_0x549c7c+_0x8788('0x31'),'body':{'title':intUtil[_0x8788('0x32')](_0xa745c4[_0x8788('0x33')],_0x394938,'\x20'),'description':intUtil[_0x8788('0x32')](_0xa745c4['Descriptions'],_0x394938,'\x0a'),'owner_id':_0x3308f2[_0x8788('0x1b')],'creater_id':_0x3308f2[_0x8788('0x13')],'targetable_id':_0x3308f2[_0x8788('0x28')],'targetable_type':_0x8788('0x34'),'created_at':_0x5ca5a9[_0x8788('0x25')]('YYYY-MM-DDTHH:mm:ss'),'due_date':_0x5ca5a9['add'](0x1e,'m')[_0x8788('0x25')](_0x8788('0x2c'))},'json':!![]};_0x5ada7f[_0x8788('0xc')]=_0x21a204;return rp(_0x5ada7f)['then'](function(_0x321c9b){_0x3308f2[_0x8788('0x35')]=_0x321c9b[_0x8788('0x36')]['id'];logger['info']('Task\x20created:',_0x3308f2[_0x8788('0x35')]);_0x4b5751(_0x3308f2);})[_0x8788('0x16')](function(_0x28817b){logger['error']('['+[_0x3ba4c3['toUpperCase']()]+']',_0x28817b[_0x8788('0x18')]);_0x17e9cf(_0x28817b['message']);});});};}function emit(_0x4c9454,_0x4fc6d4,_0x201050){var _0x1c1ba9={'uri':_0x4c9454+_0x8788('0x37')+_0x201050};io['to'](util[_0x8788('0x25')](_0x8788('0x38'),_0x4fc6d4))[_0x8788('0x39')](_0x8788('0x3a'),_0x1c1ba9);}exports['cs']=function(_0x2c3fb7,_0x2b2fe8,_0x1667e7,_0x5cc2fb,_0x581655,_0x5cf14c,_0x37dca0,_0x300ab9){var _0x511b2e={};var _0x5d41d5={'Authorization':_0x8788('0x3b')+_0x5cf14c[_0x8788('0x3c')]};_0x5cf14c[_0x8788('0x3d')]=intUtil[_0x8788('0x3e')](_0x5cf14c[_0x8788('0x3d')]);_0x5cf14c['serverUrl']=intUtil[_0x8788('0x3e')](_0x5cf14c['serverUrl']);var _0x32c9c1=_0x5cf14c[_0x8788('0x3d')];_0x511b2e[_0x8788('0x12')]=_0x5cf14c['username'];_0x511b2e['contactNumber']=_0x300ab9[_0x8788('0x3f')]()===_0x8788('0x40')?_0x2b2fe8[_0x8788('0x41')]:_0x2b2fe8[_0x8788('0x42')];_0x511b2e[_0x8788('0x43')]=_0x300ab9===_0x8788('0x44')||_0x300ab9===_0x8788('0x45')?_0x8788('0x44'):_0x8788('0x40');if(_0x5cc2fb){_0x511b2e['agentEmail']=_0x5cc2fb[_0x8788('0x11')];}var _0x374aee=util['format'](_0x8788('0x46'),_0x5cf14c[_0x8788('0x47')],_0x2b2fe8[_0x8788('0x48')],md5(_0x2b2fe8[_0x8788('0x48')]));if(_0x581655&&_0x581655[_0x8788('0x49')]){logger[_0x8788('0x14')](_0x8788('0x4a'),'Recording\x20is\x20enabled!');_0x2b2fe8[_0x8788('0x4b')]=_0x374aee;}else if(_0x37dca0&&_0x37dca0[_0x8788('0x4c')]&&_0x37dca0[_0x8788('0x4c')]!==_0x8788('0x4d')){logger[_0x8788('0x14')](_0x8788('0x4e'),'Recording\x20is\x20enabled!');_0x2b2fe8['recordingURL']=_0x374aee;}else{_0x2b2fe8[_0x8788('0x4b')]='';}return getAdminId(_0x511b2e,_0x300ab9,_0x5d41d5,_0x32c9c1)[_0x8788('0xe')](getUser(_0x300ab9,_0x5d41d5,_0x32c9c1))['then'](getEndUser(_0x300ab9,_0x5d41d5,_0x32c9c1))[_0x8788('0xe')](getTicket(_0x300ab9,_0x5d41d5,_0x32c9c1,_0x1667e7,_0x2b2fe8))[_0x8788('0xe')](function(_0x432010){logger['info'](util[_0x8788('0x25')](_0x8788('0x4f'),_0x432010[_0x8788('0x35')]));if(_0x300ab9!==_0x8788('0x45')){logger[_0x8788('0x14')]('['+[_0x300ab9[_0x8788('0x17')]()]+']',_0x8788('0x50'));emit(_0x32c9c1,_0x5cc2fb[_0x8788('0x51')],_0x432010[_0x8788('0x28')]);}})[_0x8788('0x16')](function(_0x271ed1){logger['error']('['+[_0x300ab9['toUpperCase']()]+_0x8788('0x52'),util[_0x8788('0x53')](_0x271ed1,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x389d=['./util','../../../../config/environment','../../../../config/logger','redis','defaults','localhost','socket.io-emitter','GET','/api/selector/owners','headers','info','Getting\x20admin\x20information','then','length','email','adminEmail','adminId','Admin\x20found:','Requested\x20Resource\x20not\x20Found','toUpperCase','Getting\x20user\x20list','users','Getting\x20user\x20with\x20email','agentEmail','userEmail','userId','User\x20found:','Admin\x20selected','catch','/api/lookup?q=','&f=','&entities=contact','find','contacts','format','Searching\x20contact\x20with\x20phone\x20%s','contactNumber','Contact\x20found\x20mobile_number:','endUserId','work_number','Contact\x20found\x20work_number:','Contact\x20created:','POST','/api/contacts','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','message','Creating\x20new\x20task','Subjects','getString','Descriptions','YYYY-MM-DDTHH:mm:ss','add','ticketId','/contacts/','user:%s','trigger:browser:url','Token\x20token=','apiKey','remoteUri','stripTrailingSlash','username','toLowerCase','outbound','destcalleridnum','calleridnum','callDirection','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]','The\x20ticket\x20ID\x20is:\x20%s','Displaying\x20task\x20in\x20a\x20new\x20tab...','name','error',']\x20Error\x20running\x20Freshsales\x20integration','inspect','lodash','md5','util','moment','ioredis'];(function(_0x1cfd7b,_0x551217){var _0x3fd907=function(_0x2e2bc2){while(--_0x2e2bc2){_0x1cfd7b['push'](_0x1cfd7b['shift']());}};_0x3fd907(++_0x551217);}(_0x389d,0x103));var _0xd389=function(_0x220f3f,_0x11c540){_0x220f3f=_0x220f3f-0x0;var _0x1f170e=_0x389d[_0x220f3f];return _0x1f170e;};'use strict';var _=require(_0xd389('0x0'));var rp=require('request-promise');var md5=require(_0xd389('0x1'));var util=require(_0xd389('0x2'));var moment=require(_0xd389('0x3'));var Promise=require('bluebird');var Redis=require(_0xd389('0x4'));var intUtil=require(_0xd389('0x5'));var config=require(_0xd389('0x6'));var logger=require(_0xd389('0x7'))('freshsales');config[_0xd389('0x8')]=_[_0xd389('0x9')](config[_0xd389('0x8')],{'host':_0xd389('0xa'),'port':0x18eb});var io=require(_0xd389('0xb'))(new Redis(config[_0xd389('0x8')]));function getAdminId(_0x4a7f76,_0x15c4ec,_0x49401c,_0x4caf46){return new Promise(function(_0x3d25ba,_0x50eb99){var _0x2fb97e=![];var _0x3327ea={'method':_0xd389('0xc'),'uri':_0x4caf46+_0xd389('0xd'),'json':!![]};_0x3327ea[_0xd389('0xe')]=_0x49401c;logger[_0xd389('0xf')](_0xd389('0x10'));return rp(_0x3327ea)[_0xd389('0x11')](function(_0x5e513d){if(_0x5e513d){var _0x31a34=_0x5e513d['users'];var _0x1495ff=null;for(_0x1495ff=0x0;_0x1495ff<_0x31a34[_0xd389('0x12')];_0x1495ff++){if(_0x31a34[_0x1495ff][_0xd389('0x13')]===_0x4a7f76[_0xd389('0x14')]){_0x4a7f76[_0xd389('0x15')]=_0x31a34[_0x1495ff]['id'];_0x2fb97e=!![];}}if(_0x2fb97e){logger['info'](_0xd389('0x16'),_0x4a7f76[_0xd389('0x15')]);_0x3d25ba(_0x4a7f76);}else{_0x50eb99({'statusCode':0x194,'message':_0xd389('0x17')});}}else{_0x50eb99({'statusCode':0x194,'message':_0xd389('0x17')});}})['catch'](function(_0x3e5cd6){logger['error']('['+[_0x15c4ec[_0xd389('0x18')]()]+']',_0x3e5cd6['message']);_0x50eb99(_0x3e5cd6);});});}function getUser(_0x2fada5,_0x28f35c,_0x195451){return function(_0x4d1c86){return new Promise(function(_0x5d1206,_0x3fbe82){var _0x3cfd8b={'method':_0xd389('0xc'),'uri':_0x195451+_0xd389('0xd'),'json':!![]};_0x3cfd8b[_0xd389('0xe')]=_0x28f35c;logger[_0xd389('0xf')](_0xd389('0x19'));return rp(_0x3cfd8b)[_0xd389('0x11')](function(_0x735e3a){if(_0x735e3a){var _0x40f46f=_0x735e3a[_0xd389('0x1a')];var _0x57b5c=![];var _0x318b24=null;if(_0x4d1c86['agentEmail']!==null){logger[_0xd389('0xf')](_0xd389('0x1b'),_0x4d1c86[_0xd389('0x1c')]);_0x4d1c86[_0xd389('0x1d')]=_0x4d1c86[_0xd389('0x1c')];for(_0x318b24=0x0;_0x318b24<_0x40f46f['length'];_0x318b24++){if(_0x40f46f[_0x318b24]['email']===_0x4d1c86[_0xd389('0x1c')]){_0x57b5c=!![];_0x4d1c86[_0xd389('0x1e')]=_0x40f46f[_0x318b24]['id'];logger[_0xd389('0xf')](_0xd389('0x1f'),_0x4d1c86[_0xd389('0x1e')]);}}}if(!_0x57b5c){logger[_0xd389('0xf')](_0xd389('0x20'));_0x4d1c86[_0xd389('0x1d')]=_0x4d1c86[_0xd389('0x14')];_0x4d1c86[_0xd389('0x1e')]=_0x4d1c86['adminId'];_0x57b5c=!![];}if(_0x57b5c){_0x5d1206(_0x4d1c86);}else{_0x3fbe82({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0x3fbe82({'statusCode':0x194,'message':_0xd389('0x17')});}})[_0xd389('0x21')](function(_0x2f330f){logger['error']('['+[_0x2fada5[_0xd389('0x18')]()]+']',_0x2f330f['message']);_0x3fbe82(_0x2f330f);});});};}function searchContact(_0x16804a,_0x52c937,_0x55165f,_0x2b3cbc){return new Promise(function(_0x28d4c7,_0x34c299){var _0x2b28cf={'method':_0xd389('0xc'),'headers':_0x52c937,'uri':_0x16804a+_0xd389('0x22')+_0x2b3cbc+_0xd389('0x23')+_0x55165f+_0xd389('0x24'),'json':!![]};rp(_0x2b28cf)[_0xd389('0x11')](function(_0x22a60a){var _0x1f8d9f=_[_0xd389('0x25')](_0x22a60a[_0xd389('0x26')][_0xd389('0x26')],[_0x55165f,_0x2b3cbc]);_0x28d4c7(_0x1f8d9f);})[_0xd389('0x21')](function(_0x3052bf){_0x34c299(_0x3052bf);});});}function getEndUser(_0x10eec9,_0x3c9d0d,_0x10b8f7){return function(_0x395935){return new Promise(function(_0x5f3e79,_0x5e7afe){logger[_0xd389('0xf')](util[_0xd389('0x27')](_0xd389('0x28'),_0x395935[_0xd389('0x29')]));searchContact(_0x10b8f7,_0x3c9d0d,'mobile_number',_0x395935['contactNumber'])['then'](function(_0x46ad78){if(_0x46ad78){_0x395935['endUserId']=_0x46ad78['id'];logger['info'](_0xd389('0x2a'),_0x395935[_0xd389('0x2b')]);return _0x5f3e79(_0x395935);}searchContact(_0x10b8f7,_0x3c9d0d,_0xd389('0x2c'),_0x395935[_0xd389('0x29')])['then'](function(_0x3101eb){if(_0x3101eb){_0x395935[_0xd389('0x2b')]=_0x3101eb['id'];logger[_0xd389('0xf')](_0xd389('0x2d'),_0x395935['endUserId']);return _0x5f3e79(_0x395935);}createEndUser(_0x395935,_0x10eec9,_0x3c9d0d,_0x10b8f7)['then'](function(_0x17e7a0){logger['info'](_0xd389('0x2e'),_0x17e7a0[_0xd389('0x2b')]);return _0x5f3e79(_0x17e7a0);});});})[_0xd389('0x21')](function(_0x36ecd2){_0x5e7afe(_0x36ecd2);});});};}function createEndUser(_0x1a45ae,_0x84dc9c,_0x12b204,_0x2f2206){return new Promise(function(_0x359999,_0x58bb11){var _0x1af0f=moment();var _0x72f21f={'method':_0xd389('0x2f'),'uri':_0x2f2206+_0xd389('0x30'),'body':{'contact':{'last_name':_0x1a45ae['contactNumber'],'work_number':_0x1a45ae['contactNumber'],'mobile_number':_0x1a45ae[_0xd389('0x29')],'owner_id':_0x1a45ae['userId'],'created_at':_0x1af0f[_0xd389('0x27')]('YYYY-MM-DDTHH:mm:ss')}},'json':!![]};_0x72f21f[_0xd389('0xe')]=_0x12b204;logger[_0xd389('0xf')](_0xd389('0x31'));return rp(_0x72f21f)[_0xd389('0x11')](function(_0x37364c){_0x1a45ae[_0xd389('0x2b')]=_0x37364c[_0xd389('0x32')]['id'];_0x359999(_0x1a45ae);})[_0xd389('0x21')](function(_0x4b293e){logger['error']('['+[_0x84dc9c[_0xd389('0x18')]()]+']',_0x4b293e[_0xd389('0x33')]);_0x58bb11(_0x4b293e[_0xd389('0x33')]);});});}function getTicket(_0x6de752,_0x13ce79,_0x378b6e,_0x419f77,_0x1f73e4){return function(_0x5a1767){logger[_0xd389('0xf')](_0xd389('0x34'));return new Promise(function(_0x5eadad,_0x12ef3b){var _0x1901a6=moment();var _0x303748={'method':'POST','uri':_0x378b6e+'/api/tasks','body':{'title':intUtil['getString'](_0x419f77[_0xd389('0x35')],_0x1f73e4,'\x20'),'description':intUtil[_0xd389('0x36')](_0x419f77[_0xd389('0x37')],_0x1f73e4,'\x0a'),'owner_id':_0x5a1767[_0xd389('0x1e')],'creater_id':_0x5a1767[_0xd389('0x15')],'targetable_id':_0x5a1767[_0xd389('0x2b')],'targetable_type':'Contact','created_at':_0x1901a6['format'](_0xd389('0x38')),'due_date':_0x1901a6[_0xd389('0x39')](0x1e,'m')[_0xd389('0x27')](_0xd389('0x38'))},'json':!![]};_0x303748['headers']=_0x13ce79;return rp(_0x303748)[_0xd389('0x11')](function(_0x166e05){_0x5a1767[_0xd389('0x3a')]=_0x166e05['task']['id'];logger['info']('Task\x20created:',_0x5a1767['ticketId']);_0x5eadad(_0x5a1767);})[_0xd389('0x21')](function(_0x1c0d56){logger['error']('['+[_0x6de752[_0xd389('0x18')]()]+']',_0x1c0d56['message']);_0x12ef3b(_0x1c0d56[_0xd389('0x33')]);});});};}function emit(_0xd694c,_0x71544e,_0x53b6ab){var _0x47fc51={'uri':_0xd694c+_0xd389('0x3b')+_0x53b6ab};io['to'](util[_0xd389('0x27')](_0xd389('0x3c'),_0x71544e))['emit'](_0xd389('0x3d'),_0x47fc51);}exports['cs']=function(_0x14ab43,_0x145362,_0x3d71f6,_0x3339db,_0xdf5b6e,_0x54ea09,_0x4cabef,_0x5285bf){var _0x35aed0={};var _0x12b511={'Authorization':_0xd389('0x3e')+_0x54ea09[_0xd389('0x3f')]};_0x54ea09[_0xd389('0x40')]=intUtil[_0xd389('0x41')](_0x54ea09[_0xd389('0x40')]);_0x54ea09['serverUrl']=intUtil[_0xd389('0x41')](_0x54ea09['serverUrl']);var _0x165c4c=_0x54ea09['remoteUri'];_0x35aed0[_0xd389('0x14')]=_0x54ea09[_0xd389('0x42')];_0x35aed0[_0xd389('0x29')]=_0x5285bf[_0xd389('0x43')]()===_0xd389('0x44')?_0x145362[_0xd389('0x45')]:_0x145362[_0xd389('0x46')];_0x35aed0[_0xd389('0x47')]=_0x5285bf===_0xd389('0x48')||_0x5285bf===_0xd389('0x49')?_0xd389('0x48'):_0xd389('0x44');if(_0x3339db){_0x35aed0[_0xd389('0x1c')]=_0x3339db[_0xd389('0x13')];}var _0x1e7f84=util[_0xd389('0x27')](_0xd389('0x4a'),_0x54ea09['serverUrl'],_0x145362[_0xd389('0x4b')],md5(_0x145362['uniqueid']));if(_0xdf5b6e&&_0xdf5b6e[_0xd389('0x4c')]){logger[_0xd389('0xf')]('[QUEUE]',_0xd389('0x4d'));_0x145362[_0xd389('0x4e')]=_0x1e7f84;}else if(_0x4cabef&&_0x4cabef[_0xd389('0x4f')]&&_0x4cabef['recordingFormat']!==_0xd389('0x50')){logger[_0xd389('0xf')](_0xd389('0x51'),_0xd389('0x4d'));_0x145362[_0xd389('0x4e')]=_0x1e7f84;}else{_0x145362[_0xd389('0x4e')]='';}return getAdminId(_0x35aed0,_0x5285bf,_0x12b511,_0x165c4c)[_0xd389('0x11')](getUser(_0x5285bf,_0x12b511,_0x165c4c))[_0xd389('0x11')](getEndUser(_0x5285bf,_0x12b511,_0x165c4c))[_0xd389('0x11')](getTicket(_0x5285bf,_0x12b511,_0x165c4c,_0x3d71f6,_0x145362))[_0xd389('0x11')](function(_0xbf550f){logger[_0xd389('0xf')](util[_0xd389('0x27')](_0xd389('0x52'),_0xbf550f[_0xd389('0x3a')]));if(_0x5285bf!==_0xd389('0x49')){logger[_0xd389('0xf')]('['+[_0x5285bf[_0xd389('0x18')]()]+']',_0xd389('0x53'));emit(_0x165c4c,_0x3339db[_0xd389('0x54')],_0xbf550f['endUserId']);}})['catch'](function(_0x4380c0){logger[_0xd389('0x55')]('['+[_0x5285bf[_0xd389('0x18')]()]+_0xd389('0x56'),util[_0xd389('0x57')](_0x4380c0,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index b98bf47..df17163 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd005=['%s\x20account\x20#%s\x20not\x20found','lodash','./zendesk','./salesforce','./zoho','./desk','./servicenow','./dynamics365','zendesk','zoho','desk','vtiger','dynamics365','freshsales','servicenow','exec','includes','data1','toLowerCase','data2','find','Configurations','data3','queue','routeId','outbound','log','EVENT\x20UNKNOWN','unmanaged','sugarcrm','unknown\x20integration','../../../../config/logger','error','format','[EXEC]'];(function(_0x2ec37e,_0x93586a){var _0x3c5980=function(_0x555fb8){while(--_0x555fb8){_0x2ec37e['push'](_0x2ec37e['shift']());}};_0x3c5980(++_0x93586a);}(_0xd005,0x8d));var _0x5d00=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0xd005[_0x2641f9];return _0x585741;};'use strict';var _=require(_0x5d00('0x0'));var util=require('util');var zendesk=require(_0x5d00('0x1'));var salesforce=require(_0x5d00('0x2'));var sugarcrm=require('./sugarcrm');var freshdesk=require('./freshdesk');var zoho=require(_0x5d00('0x3'));var desk=require(_0x5d00('0x4'));var vtiger=require('./vtiger');var servicenow=require(_0x5d00('0x5'));var dynamics365=require(_0x5d00('0x6'));var freshsales=require('./freshsales');var integrations=[_0x5d00('0x7'),'salesforce','sugarcrm','freshdesk',_0x5d00('0x8'),_0x5d00('0x9'),_0x5d00('0xa'),_0x5d00('0xb'),_0x5d00('0xc'),_0x5d00('0xd')];exports[_0x5d00('0xe')]=function(_0x528be5,_0x440e65,_0x4b12a1,_0x46cd1,_0x5707de,_0xd5b841){if(_0x4b12a1){if(_[_0x5d00('0xf')](integrations,_0x528be5[_0x5d00('0x10')]['toLowerCase']())){try{var _0x157a91=null;var _0x24921b='';var _0x26eca3=_0x4b12a1[_0x528be5['data1'][_0x5d00('0x11')]()];if(_0x26eca3){var _0x11781e=_0x26eca3[_0x528be5[_0x5d00('0x12')]];if(_0x11781e){var _0x2f3add=_[_0x5d00('0x13')](_0x11781e[_0x5d00('0x14')],{'id':parseInt(_0x528be5[_0x5d00('0x15')],0xa)});if(_0x2f3add){if(_0x46cd1){if(_0x5707de&&_0x440e65[_0x5d00('0x16')]){_0x24921b=_0x5d00('0x16');}else if(_0x440e65[_0x5d00('0x17')]){_0x24921b=_0x5d00('0x18');}else{console[_0x5d00('0x19')](_0x5d00('0x1a'),_0x440e65);}}else{_0x24921b=_0x5d00('0x1b');}switch(_0x528be5[_0x5d00('0x10')][_0x5d00('0x11')]()){case _0x5d00('0x7'):zendesk[_0x24921b](_0x528be5,_0x440e65,_0x2f3add,_0x46cd1,_0x5707de,_0x11781e,_0xd5b841);break;case'salesforce':salesforce[_0x24921b](_0x528be5,_0x440e65,_0x2f3add,_0x46cd1,_0x5707de,_0x11781e,_0xd5b841);break;case _0x5d00('0x1c'):sugarcrm[_0x24921b](_0x528be5,_0x440e65,_0x2f3add,_0x46cd1,_0x5707de,_0x11781e,_0xd5b841);break;case'freshdesk':freshdesk[_0x24921b](_0x528be5,_0x440e65,_0x2f3add,_0x46cd1,_0x5707de,_0x11781e,_0xd5b841);break;case'zoho':zoho[_0x24921b](_0x528be5,_0x440e65,_0x2f3add,_0x46cd1,_0x5707de,_0x11781e,_0xd5b841);break;case _0x5d00('0x9'):desk[_0x24921b](_0x528be5,_0x440e65,_0x2f3add,_0x46cd1,_0x5707de,_0x11781e,_0xd5b841);break;case'vtiger':vtiger[_0x24921b](_0x528be5,_0x440e65,_0x2f3add,_0x46cd1,_0x5707de,_0x11781e,_0xd5b841);break;case _0x5d00('0xc'):freshsales['cs'](_0x528be5,_0x440e65,_0x2f3add,_0x46cd1,_0x5707de,_0x11781e,_0xd5b841,_0x24921b);break;case _0x5d00('0xd'):servicenow['cs'](_0x528be5,_0x440e65,_0x2f3add,_0x46cd1,_0x5707de,_0x11781e,_0xd5b841,_0x24921b);break;case _0x5d00('0xb'):dynamics365['cs'](_0x528be5,_0x440e65,_0x2f3add,_0x46cd1,_0x5707de,_0x11781e,_0xd5b841,_0x24921b);break;default:console[_0x5d00('0x19')](_0x5d00('0x1d'));}}else{_0x157a91=require(_0x5d00('0x1e'))(_0x528be5[_0x5d00('0x10')][_0x5d00('0x11')]());_0x157a91[_0x5d00('0x1f')]('[EXEC]',util[_0x5d00('0x20')]('%s\x20configuration\x20#%s\x20not\x20found',_0x528be5[_0x5d00('0x10')][_0x5d00('0x11')](),_0x528be5['data3']));}}else{_0x157a91=require(_0x5d00('0x1e'))(_0x528be5[_0x5d00('0x10')][_0x5d00('0x11')]());_0x157a91['error'](_0x5d00('0x21'),util['format'](_0x5d00('0x22'),_0x528be5['data1'][_0x5d00('0x11')](),_0x528be5[_0x5d00('0x12')]));}}else{}}catch(_0x20f3f6){console['error'](_0x20f3f6);}}}};
\ No newline at end of file
+var _0x3f54=['Configurations','data3','queue','routeId','outbound','log','EVENT\x20UNKNOWN','unmanaged','unknown\x20integration','../../../../config/logger','error','[EXEC]','format','%s\x20configuration\x20#%s\x20not\x20found','%s\x20account\x20#%s\x20not\x20found','util','./zendesk','./salesforce','./sugarcrm','./freshdesk','./desk','./vtiger','./servicenow','./dynamics365','./freshsales','zendesk','salesforce','sugarcrm','freshdesk','zoho','desk','vtiger','dynamics365','freshsales','exec','includes','data1','toLowerCase','data2'];(function(_0xadd567,_0xc48bf6){var _0x1cf3d4=function(_0x321196){while(--_0x321196){_0xadd567['push'](_0xadd567['shift']());}};_0x1cf3d4(++_0xc48bf6);}(_0x3f54,0xd2));var _0x43f5=function(_0x216d45,_0x4989fe){_0x216d45=_0x216d45-0x0;var _0xbaac0b=_0x3f54[_0x216d45];return _0xbaac0b;};'use strict';var _=require('lodash');var util=require(_0x43f5('0x0'));var zendesk=require(_0x43f5('0x1'));var salesforce=require(_0x43f5('0x2'));var sugarcrm=require(_0x43f5('0x3'));var freshdesk=require(_0x43f5('0x4'));var zoho=require('./zoho');var desk=require(_0x43f5('0x5'));var vtiger=require(_0x43f5('0x6'));var servicenow=require(_0x43f5('0x7'));var dynamics365=require(_0x43f5('0x8'));var freshsales=require(_0x43f5('0x9'));var integrations=[_0x43f5('0xa'),_0x43f5('0xb'),_0x43f5('0xc'),_0x43f5('0xd'),_0x43f5('0xe'),_0x43f5('0xf'),_0x43f5('0x10'),_0x43f5('0x11'),_0x43f5('0x12'),'servicenow'];exports[_0x43f5('0x13')]=function(_0x338028,_0x6b8fdc,_0x32f2c5,_0x22fbe1,_0x2c94c5,_0x2f0695){if(_0x32f2c5){if(_[_0x43f5('0x14')](integrations,_0x338028[_0x43f5('0x15')][_0x43f5('0x16')]())){try{var _0x240a02=null;var _0x25f84e='';var _0x2c80c9=_0x32f2c5[_0x338028[_0x43f5('0x15')][_0x43f5('0x16')]()];if(_0x2c80c9){var _0x4b89c9=_0x2c80c9[_0x338028[_0x43f5('0x17')]];if(_0x4b89c9){var _0x29f2dc=_['find'](_0x4b89c9[_0x43f5('0x18')],{'id':parseInt(_0x338028[_0x43f5('0x19')],0xa)});if(_0x29f2dc){if(_0x22fbe1){if(_0x2c94c5&&_0x6b8fdc[_0x43f5('0x1a')]){_0x25f84e=_0x43f5('0x1a');}else if(_0x6b8fdc[_0x43f5('0x1b')]){_0x25f84e=_0x43f5('0x1c');}else{console[_0x43f5('0x1d')](_0x43f5('0x1e'),_0x6b8fdc);}}else{_0x25f84e=_0x43f5('0x1f');}switch(_0x338028[_0x43f5('0x15')][_0x43f5('0x16')]()){case _0x43f5('0xa'):zendesk[_0x25f84e](_0x338028,_0x6b8fdc,_0x29f2dc,_0x22fbe1,_0x2c94c5,_0x4b89c9,_0x2f0695);break;case'salesforce':salesforce[_0x25f84e](_0x338028,_0x6b8fdc,_0x29f2dc,_0x22fbe1,_0x2c94c5,_0x4b89c9,_0x2f0695);break;case _0x43f5('0xc'):sugarcrm[_0x25f84e](_0x338028,_0x6b8fdc,_0x29f2dc,_0x22fbe1,_0x2c94c5,_0x4b89c9,_0x2f0695);break;case _0x43f5('0xd'):freshdesk[_0x25f84e](_0x338028,_0x6b8fdc,_0x29f2dc,_0x22fbe1,_0x2c94c5,_0x4b89c9,_0x2f0695);break;case _0x43f5('0xe'):zoho[_0x25f84e](_0x338028,_0x6b8fdc,_0x29f2dc,_0x22fbe1,_0x2c94c5,_0x4b89c9,_0x2f0695);break;case _0x43f5('0xf'):desk[_0x25f84e](_0x338028,_0x6b8fdc,_0x29f2dc,_0x22fbe1,_0x2c94c5,_0x4b89c9,_0x2f0695);break;case _0x43f5('0x10'):vtiger[_0x25f84e](_0x338028,_0x6b8fdc,_0x29f2dc,_0x22fbe1,_0x2c94c5,_0x4b89c9,_0x2f0695);break;case _0x43f5('0x12'):freshsales['cs'](_0x338028,_0x6b8fdc,_0x29f2dc,_0x22fbe1,_0x2c94c5,_0x4b89c9,_0x2f0695,_0x25f84e);break;case'servicenow':servicenow['cs'](_0x338028,_0x6b8fdc,_0x29f2dc,_0x22fbe1,_0x2c94c5,_0x4b89c9,_0x2f0695,_0x25f84e);break;case _0x43f5('0x11'):dynamics365['cs'](_0x338028,_0x6b8fdc,_0x29f2dc,_0x22fbe1,_0x2c94c5,_0x4b89c9,_0x2f0695,_0x25f84e);break;default:console[_0x43f5('0x1d')](_0x43f5('0x20'));}}else{_0x240a02=require(_0x43f5('0x21'))(_0x338028[_0x43f5('0x15')][_0x43f5('0x16')]());_0x240a02[_0x43f5('0x22')](_0x43f5('0x23'),util[_0x43f5('0x24')](_0x43f5('0x25'),_0x338028[_0x43f5('0x15')]['toLowerCase'](),_0x338028[_0x43f5('0x19')]));}}else{_0x240a02=require(_0x43f5('0x21'))(_0x338028[_0x43f5('0x15')][_0x43f5('0x16')]());_0x240a02[_0x43f5('0x22')]('[EXEC]',util[_0x43f5('0x24')](_0x43f5('0x26'),_0x338028[_0x43f5('0x15')]['toLowerCase'](),_0x338028['data2']));}}else{}}catch(_0x327eaa){console['error'](_0x327eaa);}}}};
\ No newline at end of file
index b3beef3..c94c070 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x097d=['Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.','Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.','contact_lead','cloneDeep','additionalSearchContact','Contact','additionalSearchLead','merge','$or','account_contact_lead','additionalSearchAccount','Account','contact','Lead','first','Phone','attributes','type','Enduser\x20(%s)\x20with\x20phone\x20%s\x20found','moduleCreate','LastName','<unknown>','format','Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.','Caller\x20-\x20%s','upperFirst','includes','string','picklist','content','toString','variable','variableName','idField','customVariable','Variable','name','toLowerCase','password','concat','securityToken','Connection','https://login.salesforce.com','clientId','clientSecret','username','Connection\x20established.','queue','serverUrl','stripTrailingSlash','remoteUri','monitor_format','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','calleridname','Fields','[QUEUE]\x20Ticket\x20%s\x20created','[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','integrationTab','newTab','user:%s','trigger:browser:url','%s/%s/e','instanceUrl','error','[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.','catch','outbound','recordingFormat','none','Recording\x20is\x20enabled!','email','destcalleridname','destcalleridnum','[OUTBOUND]\x20Ticket\x20%s\x20created.','[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','[OUTBOUND]','Salesforce\x20account\x20type\x20not\x20recognized','unmanaged','lastevent','toUpperCase',']\x20Integration\x20account\x20type\x20%s.','lodash','request-promise','bluebird','util','ioredis','./util','../../../../config/logger','redis','defaults','localhost','socket.io-emitter','emit','getString','Subjects','Descriptions','ticketType','Task','ActivityDate','IsReminderSet','WhoId','endUserType','account','Case','ContactId','AccountId','lead','leadId','info','Association\x20between\x20Case\x20and\x20Lead\x20skipped','create','isNil','validateEmail','sobject','User','find','execute','then','length','Agent\x20%s\x20found.','resolve','Name','identity','user_id','display_name'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x097d,0x1d4));var _0xd097=function(_0xd89cec,_0x4e3c06){_0xd89cec=_0xd89cec-0x0;var _0x2d5bb3=_0x097d[_0xd89cec];return _0x2d5bb3;};'use strict';var _=require(_0xd097('0x0'));var rp=require(_0xd097('0x1'));var moment=require('moment');var BPromise=require(_0xd097('0x2'));var md5=require('md5');var jsforce=require('jsforce');var util=require(_0xd097('0x3'));var Redis=require(_0xd097('0x4'));var intUtil=require(_0xd097('0x5'));var config=require('../../../../config/environment');var logger=require(_0xd097('0x6'))('salesforce');config[_0xd097('0x7')]=_[_0xd097('0x8')](config['redis'],{'host':_0xd097('0x9'),'port':0x18eb});var io=require(_0xd097('0xa'))(new Redis(config[_0xd097('0x7')]));function emit(_0x4c2bbc,_0x3c396a,_0x1de04d){io['to'](_0x4c2bbc)[_0xd097('0xb')](_0x3c396a,_0x1de04d);}function getTicket(_0x2a4c97,_0x30560a,_0x207994,_0x211090,_0x54d654,_0x461e07,_0x51fffe,_0x13584a){var _0x130a2d=Object['assign']({},{'OwnerId':_0x30560a['id'],'Subject':intUtil[_0xd097('0xc')](_0x211090[_0xd097('0xd')],_0x54d654,'\x20'),'Description':intUtil[_0xd097('0xc')](_0x211090[_0xd097('0xe')],_0x54d654,'\x0a')},getCustomFields(_0x461e07,_0x54d654));if(_0x207994){if(_0x211090[_0xd097('0xf')]===_0xd097('0x10')){_0x130a2d[_0xd097('0x11')]=moment['utc']();_0x130a2d[_0xd097('0x12')]=![];_0x130a2d['IsRecurrence']=![];if(_0x207994['endUserType']==='contact'||_0x207994['endUserType']==='lead'){_0x130a2d[_0xd097('0x13')]=_0x207994['id'];}else if(_0x207994[_0xd097('0x14')]===_0xd097('0x15')){_0x130a2d['WhatId']=_0x207994['id'];}}else if(_0x211090[_0xd097('0xf')]===_0xd097('0x16')){if(_0x207994['endUserType']==='contact'){_0x130a2d[_0xd097('0x17')]=_0x207994['id'];}else if(_0x207994[_0xd097('0x14')]===_0xd097('0x15')){_0x130a2d[_0xd097('0x18')]=_0x207994['id'];}else if(_0x207994[_0xd097('0x14')]===_0xd097('0x19')&&_0x211090[_0xd097('0x1a')]){_0x130a2d[_0x211090[_0xd097('0x1a')]]=_0x207994['id'];}else{logger[_0xd097('0x1b')](_0xd097('0x1c'));}}}return _0x51fffe['sobject'](_0x211090['ticketType'])[_0xd097('0x1d')](_0x130a2d);}function getUser(_0x224d7f,_0x459323,_0x422364){if(!_[_0xd097('0x1e')](_0x459323)&&intUtil[_0xd097('0x1f')](_0x459323)){var _0x5c44ef={'Email':_0x459323};var _0x433a2f={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x422364[_0xd097('0x20')](_0xd097('0x21'))[_0xd097('0x22')](_0x5c44ef,_0x433a2f)[_0xd097('0x23')]()[_0xd097('0x24')](function(_0x4b41a5){if(_0x4b41a5[_0xd097('0x25')]){var _0x2df332=_['find'](_0x4b41a5,function(_0x1620d5){return _0x1620d5['Email']===_0x459323;});if(_0x2df332){logger[_0xd097('0x1b')](_0xd097('0x26'),_0x459323);return BPromise[_0xd097('0x27')]({'id':_0x2df332['Id'],'name':_0x2df332[_0xd097('0x28')]});}}else{logger[_0xd097('0x1b')]('Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.',_0x459323);return _0x422364[_0xd097('0x29')]()['then'](function(_0x3ca370){return BPromise[_0xd097('0x27')]({'id':_0x3ca370[_0xd097('0x2a')],'name':_0x3ca370[_0xd097('0x2b')]});});}});}else{logger[_0xd097('0x1b')](_0xd097('0x2c'),_0x459323);return _0x422364[_0xd097('0x29')]()[_0xd097('0x24')](function(_0x88363d){return BPromise[_0xd097('0x27')]({'id':_0x88363d[_0xd097('0x2a')],'name':_0x88363d['display_name']});});}}function getEndUser(_0x425863,_0x107a4b,_0x53442a,_0xf1bece,_0x2fb020){var _0x1f163a={'$or':{'Phone':_0xf1bece}};var _0x31a7ad={'Id':!![],'Name':!![],'Phone':!![]};return BPromise[_0xd097('0x27')]()[_0xd097('0x24')](function(){logger[_0xd097('0x1b')](_0xd097('0x2d'),_0xf1bece,_0x107a4b['moduleSearch']);switch(_0x107a4b['moduleSearch']){case _0xd097('0x2e'):var _0x6ad8ef=_[_0xd097('0x2f')](_0x1f163a);if(_0x107a4b[_0xd097('0x30')]){var _0x347ac5={};_0x347ac5[_0x107a4b[_0xd097('0x30')]]=_0xf1bece;_['merge'](_0x6ad8ef['$or'],_0x347ac5);}return _0x2fb020[_0xd097('0x20')](_0xd097('0x31'))['find'](_0x6ad8ef,_0x31a7ad)[_0xd097('0x23')]()[_0xd097('0x24')](function(_0x56d93b){if(_0x56d93b&&_0x56d93b[_0xd097('0x25')]){return _0x56d93b;}else{var _0x44307d=_['cloneDeep'](_0x1f163a);if(_0x107a4b[_0xd097('0x32')]){var _0x4e7e5d={};_0x4e7e5d[_0x107a4b['additionalSearchLead']]=_0xf1bece;_[_0xd097('0x33')](_0x44307d[_0xd097('0x34')],_0x4e7e5d);}return _0x2fb020[_0xd097('0x20')]('Lead')['find'](_0x44307d,_0x31a7ad);}});case _0xd097('0x35'):var _0x28b15b=_[_0xd097('0x2f')](_0x1f163a);if(_0x107a4b[_0xd097('0x36')]){var _0x347ac5={};_0x347ac5[_0x107a4b[_0xd097('0x36')]]=_0xf1bece;_[_0xd097('0x33')](_0x28b15b['$or'],_0x347ac5);}return _0x2fb020[_0xd097('0x20')](_0xd097('0x37'))[_0xd097('0x22')](_0x28b15b,_0x31a7ad)[_0xd097('0x23')]()[_0xd097('0x24')](function(_0xb80b0f){if(_0xb80b0f&&_0xb80b0f[_0xd097('0x25')]){return _0xb80b0f;}else{var _0x526ea0=_[_0xd097('0x2f')](_0x1f163a);if(_0x107a4b[_0xd097('0x30')]){var _0x57a081={};_0x57a081[_0x107a4b[_0xd097('0x30')]]=_0xf1bece;_[_0xd097('0x33')](_0x526ea0[_0xd097('0x34')],_0x57a081);}return _0x2fb020[_0xd097('0x20')](_0xd097('0x31'))['find'](_0x526ea0,_0x31a7ad)[_0xd097('0x24')](function(_0x16ba0c){if(_0x16ba0c&&_0x16ba0c[_0xd097('0x25')]){return _0x16ba0c;}else{var _0x5e0ee8=_['cloneDeep'](_0x1f163a);if(_0x107a4b['additionalSearchLead']){var _0x1bc42d={};_0x1bc42d[_0x107a4b[_0xd097('0x32')]]=_0xf1bece;_[_0xd097('0x33')](_0x5e0ee8[_0xd097('0x34')],_0x1bc42d);}return _0x2fb020[_0xd097('0x20')]('Lead')['find'](_0x5e0ee8,_0x31a7ad);}});}});case _0xd097('0x38'):var _0x6ad8ef=_['cloneDeep'](_0x1f163a);if(_0x107a4b[_0xd097('0x30')]){var _0x347ac5={};_0x347ac5[_0x107a4b[_0xd097('0x30')]]=_0xf1bece;_[_0xd097('0x33')](_0x6ad8ef[_0xd097('0x34')],_0x347ac5);}return _0x2fb020[_0xd097('0x20')]('Contact')['find'](_0x6ad8ef,_0x31a7ad)[_0xd097('0x23')]();case _0xd097('0x19'):var _0x1e1bf8=_[_0xd097('0x2f')](_0x1f163a);if(_0x107a4b[_0xd097('0x32')]){var _0x347ac5={};_0x347ac5[_0x107a4b['additionalSearchLead']]=_0xf1bece;_[_0xd097('0x33')](_0x1e1bf8[_0xd097('0x34')],_0x347ac5);}return _0x2fb020[_0xd097('0x20')](_0xd097('0x39'))[_0xd097('0x22')](_0x1e1bf8,_0x31a7ad);case'account':var _0x28b15b=_[_0xd097('0x2f')](_0x1f163a);if(_0x107a4b[_0xd097('0x36')]){var _0x347ac5={};_0x347ac5[_0x107a4b[_0xd097('0x36')]]=_0xf1bece;_['merge'](_0x28b15b[_0xd097('0x34')],_0x347ac5);}return _0x2fb020['sobject']('Account')['find'](_0x28b15b,_0x31a7ad);default:return null;}})[_0xd097('0x24')](function(_0x395684){if(_0x395684&&_0x395684['length']){var _0x32c010=_[_0xd097('0x3a')](_0x395684);if(_0x32c010){return BPromise['resolve']({'id':_0x32c010['Id'],'name':_0x32c010[_0xd097('0x28')],'phone':_0x32c010[_0xd097('0x3b')],'endUserType':_0x32c010[_0xd097('0x3c')][_0xd097('0x3d')]['toLowerCase']()});}}})['then'](function(_0x3dde84){if(_0x3dde84){logger[_0xd097('0x1b')](_0xd097('0x3e'),_0x3dde84[_0xd097('0x14')],_0xf1bece);return BPromise[_0xd097('0x27')](_0x3dde84);}else{logger['info']('Enduser\x20with\x20phone\x20%s\x20not\x20found',_0xf1bece);var _0x263994={'Phone':_0xf1bece};if(_0x107a4b[_0xd097('0x3f')]){if(_0x107a4b[_0xd097('0x3f')]===_0xd097('0x38')){logger['info']('Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.',_0xf1bece,_0x107a4b[_0xd097('0x3f')]);_0x263994[_0xd097('0x40')]=_0x53442a!==_0xd097('0x41')?_0x53442a:util[_0xd097('0x42')]('Caller\x20-\x20%s',_0xf1bece);}else if(_0x107a4b['moduleCreate']===_0xd097('0x19')){logger[_0xd097('0x1b')](_0xd097('0x43'),_0xf1bece,_0x107a4b[_0xd097('0x3f')]);_0x263994[_0xd097('0x40')]=_0x53442a!==_0xd097('0x41')?_0x53442a:util['format'](_0xd097('0x44'),_0xf1bece);_0x263994['Company']='No\x20Company';}else if(_0x107a4b[_0xd097('0x3f')]===_0xd097('0x15')){logger[_0xd097('0x1b')](_0xd097('0x43'),_0xf1bece,_0x107a4b[_0xd097('0x3f')]);_0x263994[_0xd097('0x28')]=_0x53442a!==_0xd097('0x41')?_0x53442a:util[_0xd097('0x42')](_0xd097('0x44'),_0xf1bece);}else{return null;}}return _0x2fb020[_0xd097('0x20')](_[_0xd097('0x45')](_0x107a4b[_0xd097('0x3f')]))[_0xd097('0x1d')](_0x263994)[_0xd097('0x24')](function(_0x50957c){return BPromise[_0xd097('0x27')]({'id':_0x50957c['id'],'endUserType':_0x107a4b[_0xd097('0x3f')]});});}});}function getCustomFields(_0x28300e,_0x1b376a){var _0x233da0={};if(_0x28300e[_0xd097('0x25')]>0x0){_['forEach'](_0x28300e,function(_0x2a851a){if(_[_0xd097('0x46')]([_0xd097('0x47'),_0xd097('0x48')],_0x2a851a[_0xd097('0x3d')])&&_0x2a851a['idField']){_0x233da0[_0x2a851a['idField']]=_0x2a851a[_0xd097('0x49')][_0xd097('0x4a')]();}else if(_0x2a851a['type']===_0xd097('0x4b')&&_0x2a851a[_0xd097('0x4c')]&&_0x2a851a['idField']){_0x1b376a[_0x2a851a['variableName']]&&(_0x233da0[_0x2a851a[_0xd097('0x4d')]]=_0x1b376a[_0x2a851a['variableName']]['toString']());}else if(_0x2a851a['type']===_0xd097('0x4e')&&_0x2a851a['Variable']&&_0x2a851a[_0xd097('0x4f')][_0xd097('0x50')]&&_0x2a851a[_0xd097('0x4d')]){_0x1b376a[_0x2a851a['Variable']['name'][_0xd097('0x51')]()]&&(_0x233da0[_0x2a851a[_0xd097('0x4d')]]=_0x1b376a[_0x2a851a[_0xd097('0x4f')][_0xd097('0x50')][_0xd097('0x51')]()][_0xd097('0x4a')]());}});}return _0x233da0;}function getConnection(_0x1c4c05){var _0x50f123=_0x1c4c05[_0xd097('0x52')][_0xd097('0x53')](_0x1c4c05[_0xd097('0x54')]);var _0x39fe23=new jsforce[(_0xd097('0x55'))]({'oauth2':{'loginUrl':_0x1c4c05['remoteUri']||_0xd097('0x56'),'clientId':_0x1c4c05[_0xd097('0x57')],'clientSecret':_0x1c4c05[_0xd097('0x58')]}});return _0x39fe23['login'](_0x1c4c05[_0xd097('0x59')],_0x50f123)[_0xd097('0x24')](function(){logger[_0xd097('0x1b')](_0xd097('0x5a'));return _0x39fe23;});}exports[_0xd097('0x5b')]=function(_0x5e198c,_0x38620c,_0x17b14a,_0x4e04b3,_0x566c35,_0x3ed7ac){var _0x4540b8,_0x523bd3,_0x3f368f,_0x250485;_0x3ed7ac[_0xd097('0x5c')]=intUtil[_0xd097('0x5d')](_0x3ed7ac[_0xd097('0x5c')]);_0x3ed7ac[_0xd097('0x5e')]=intUtil['stripTrailingSlash'](_0x3ed7ac[_0xd097('0x5e')]);if(_0x566c35&&_0x566c35[_0xd097('0x5f')]){logger[_0xd097('0x1b')](_0xd097('0x60'),'Recording\x20is\x20enabled!');_0x38620c[_0xd097('0x61')]=util[_0xd097('0x42')](_0xd097('0x62'),_0x3ed7ac[_0xd097('0x5c')],_0x38620c[_0xd097('0x63')],md5(_0x38620c[_0xd097('0x63')]));}else{_0x38620c[_0xd097('0x61')]='';}return getConnection(_0x3ed7ac)['then'](function(_0x1737d3){_0x250485=_0x1737d3;return getUser(_0x3ed7ac,_0x4e04b3['email'],_0x250485);})[_0xd097('0x24')](function(_0x4a0d43){_0x4540b8=_0x4a0d43;return getEndUser(_0x3ed7ac,_0x17b14a,_0x38620c[_0xd097('0x64')],_0x38620c['calleridnum'],_0x250485);})[_0xd097('0x24')](function(_0x4d5ce9){_0x523bd3=_0x4d5ce9;return getTicket(_0x3ed7ac,_0x4540b8,_0x523bd3,_0x17b14a,_0x38620c,_0x17b14a[_0xd097('0x65')],_0x250485,_0xd097('0x5b'));})[_0xd097('0x24')](function(_0x4d143c){_0x3f368f=_0x4d143c;logger[_0xd097('0x1b')](_0xd097('0x66'),_0x3f368f['id']);logger[_0xd097('0x1b')](_0xd097('0x67'),_0x3f368f['id'],_0x4e04b3[_0xd097('0x50')],_0x3ed7ac[_0xd097('0x3d')]);switch(_0x3ed7ac['type']){case _0xd097('0x68'):emit(util[_0xd097('0x42')]('user:%s',_0x4e04b3[_0xd097('0x50')]),'trigger:salesforce:display',{'recordId':_0x3f368f['id']});break;case _0xd097('0x69'):emit(util['format'](_0xd097('0x6a'),_0x4e04b3[_0xd097('0x50')]),_0xd097('0x6b'),{'uri':util[_0xd097('0x42')](_0xd097('0x6c'),_0x250485[_0xd097('0x6d')],_0x3f368f['id'])});break;default:logger[_0xd097('0x6e')](_0xd097('0x6f'));}})[_0xd097('0x70')](function(_0x1969f0){logger[_0xd097('0x6e')](_0xd097('0x60'),_0x1969f0);});};exports[_0xd097('0x71')]=function(_0x3b301a,_0x13d0bb,_0x44a765,_0x23e47d,_0x59f21e,_0x2f12ac,_0x240135){var _0x20b0de,_0xa3d9f0,_0xa5ca1c,_0x5604f6;_0x2f12ac[_0xd097('0x5c')]=intUtil[_0xd097('0x5d')](_0x2f12ac[_0xd097('0x5c')]);_0x2f12ac[_0xd097('0x5e')]=intUtil[_0xd097('0x5d')](_0x2f12ac[_0xd097('0x5e')]);if(_0x240135&&_0x240135[_0xd097('0x72')]&&_0x240135[_0xd097('0x72')]!==_0xd097('0x73')){logger[_0xd097('0x1b')]('[OUTBOUND]',_0xd097('0x74'));_0x13d0bb[_0xd097('0x61')]=util[_0xd097('0x42')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x2f12ac[_0xd097('0x5c')],_0x13d0bb['uniqueid'],md5(_0x13d0bb[_0xd097('0x63')]));}return getConnection(_0x2f12ac)[_0xd097('0x24')](function(_0x2a6f5e){_0x5604f6=_0x2a6f5e;return getUser(_0x2f12ac,_0x23e47d[_0xd097('0x75')],_0x5604f6);})[_0xd097('0x24')](function(_0x251872){_0x20b0de=_0x251872;return getEndUser(_0x2f12ac,_0x44a765,_0x13d0bb[_0xd097('0x76')],_0x13d0bb[_0xd097('0x77')],_0x5604f6);})[_0xd097('0x24')](function(_0x4cd808){_0xa3d9f0=_0x4cd808;return getTicket(_0x2f12ac,_0x20b0de,_0xa3d9f0,_0x44a765,_0x13d0bb,_0x44a765[_0xd097('0x65')],_0x5604f6,'outbound');})[_0xd097('0x24')](function(_0x301048){_0xa5ca1c=_0x301048;logger[_0xd097('0x1b')](_0xd097('0x78'),_0xa5ca1c['id']);logger[_0xd097('0x1b')](_0xd097('0x79'),_0xa5ca1c['id'],_0x23e47d[_0xd097('0x50')],_0x2f12ac[_0xd097('0x3d')]);switch(_0x2f12ac[_0xd097('0x3d')]){case'integrationTab':emit(util[_0xd097('0x42')](_0xd097('0x6a'),_0x23e47d['name']),'trigger:salesforce:display',{'recordId':_0xa5ca1c['id']});break;case'newTab':emit(util[_0xd097('0x42')](_0xd097('0x6a'),_0x23e47d['name']),'trigger:browser:url',{'uri':util[_0xd097('0x42')]('%s/%s/e',_0x5604f6[_0xd097('0x6d')],_0xa5ca1c['id'])});break;default:logger['error'](_0xd097('0x7a'),_0xd097('0x7b'));}})[_0xd097('0x70')](function(_0x3f1488){logger[_0xd097('0x6e')](_0xd097('0x7a'),_0x3f1488);});};exports[_0xd097('0x7c')]=function(_0x5b9074,_0x56134a,_0x4400da,_0x443848,_0x27148f,_0x10326e){var _0x4da4b9,_0x2c2d47,_0x5df8e4,_0x23fc96;_0x10326e['serverUrl']=intUtil[_0xd097('0x5d')](_0x10326e['serverUrl']);_0x10326e[_0xd097('0x5e')]=intUtil['stripTrailingSlash'](_0x10326e[_0xd097('0x5e')]);if(_0x27148f&&_0x27148f[_0xd097('0x5f')]){logger[_0xd097('0x1b')]('['+_0x56134a[_0xd097('0x7d')][_0xd097('0x7e')]()+']',_0xd097('0x74'));_0x56134a[_0xd097('0x61')]=util[_0xd097('0x42')](_0xd097('0x62'),_0x10326e[_0xd097('0x5c')],_0x56134a[_0xd097('0x63')],md5(_0x56134a[_0xd097('0x63')]));}else{_0x56134a[_0xd097('0x61')]='';}return getConnection(_0x10326e)[_0xd097('0x24')](function(_0x1a92f9){_0x23fc96=_0x1a92f9;if(!_[_0xd097('0x1e')](_0x443848)){return getUser(_0x10326e,_0x443848[_0xd097('0x50')],_0x23fc96);}else{return getUser(_0x10326e,null,_0x23fc96);}})[_0xd097('0x24')](function(_0x51c79c){_0x4da4b9=_0x51c79c;return getEndUser(_0x10326e,_0x4400da,_0x56134a[_0xd097('0x64')],_0x56134a['calleridnum'],_0x23fc96);})[_0xd097('0x24')](function(_0x1eedf4){_0x2c2d47=_0x1eedf4;return getTicket(_0x10326e,_0x4da4b9,_0x2c2d47,_0x4400da,_0x56134a,_0x4400da[_0xd097('0x65')],_0x23fc96);})[_0xd097('0x24')](function(_0x1b2dae){_0x5df8e4=_0x1b2dae;logger[_0xd097('0x1b')]('['+_0x56134a[_0xd097('0x7d')][_0xd097('0x7e')]()+']\x20Ticket\x20%s\x20created.',_0x5df8e4['id']);logger[_0xd097('0x1b')]('['+_0x56134a['lastevent'][_0xd097('0x7e')]()+_0xd097('0x7f'),_0x10326e['type']);})[_0xd097('0x70')](function(_0x56ff9e){logger[_0xd097('0x6e')]('['+_0x56134a[_0xd097('0x7d')][_0xd097('0x7e')]()+']',_0x56ff9e);});};
\ No newline at end of file
+var _0xda01=['format','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','email','calleridname','calleridnum','Fields','[QUEUE]\x20Ticket\x20%s\x20created','[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','integrationTab','user:%s','trigger:browser:url','%s/%s/e','error','[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.','catch','outbound','remoteUri','recordingFormat','[OUTBOUND]','destcalleridname','destcalleridnum','[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','trigger:salesforce:display','unmanaged','toUpperCase','lastevent',']\x20Ticket\x20%s\x20created.',']\x20Integration\x20account\x20type\x20%s.','lodash','request-promise','moment','md5','jsforce','util','./util','../../../../config/environment','../../../../config/logger','salesforce','redis','localhost','socket.io-emitter','emit','assign','getString','Subjects','ticketType','Task','ActivityDate','IsReminderSet','IsRecurrence','endUserType','WhoId','account','WhatId','contact','ContactId','AccountId','leadId','Association\x20between\x20Case\x20and\x20Lead\x20skipped','sobject','create','isNil','User','execute','then','length','find','Agent\x20%s\x20found.','Name','info','Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.','identity','resolve','user_id','display_name','Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.','moduleSearch','contact_lead','cloneDeep','additionalSearchContact','$or','Contact','additionalSearchLead','merge','Lead','account_contact_lead','additionalSearchAccount','Account','Phone','attributes','type','toLowerCase','Enduser\x20with\x20phone\x20%s\x20not\x20found','moduleCreate','Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.','LastName','<unknown>','Caller\x20-\x20%s','lead','Company','No\x20Company','upperFirst','forEach','string','idField','variable','variableName','customVariable','Variable','name','password','securityToken','Connection','https://login.salesforce.com','clientId','clientSecret','username','queue','serverUrl','stripTrailingSlash','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL'];(function(_0x556b48,_0x9161b1){var _0x344f73=function(_0x480c3b){while(--_0x480c3b){_0x556b48['push'](_0x556b48['shift']());}};_0x344f73(++_0x9161b1);}(_0xda01,0x194));var _0x1da0=function(_0x157e1d,_0x189cb3){_0x157e1d=_0x157e1d-0x0;var _0x10ee85=_0xda01[_0x157e1d];return _0x10ee85;};'use strict';var _=require(_0x1da0('0x0'));var rp=require(_0x1da0('0x1'));var moment=require(_0x1da0('0x2'));var BPromise=require('bluebird');var md5=require(_0x1da0('0x3'));var jsforce=require(_0x1da0('0x4'));var util=require(_0x1da0('0x5'));var Redis=require('ioredis');var intUtil=require(_0x1da0('0x6'));var config=require(_0x1da0('0x7'));var logger=require(_0x1da0('0x8'))(_0x1da0('0x9'));config['redis']=_['defaults'](config[_0x1da0('0xa')],{'host':_0x1da0('0xb'),'port':0x18eb});var io=require(_0x1da0('0xc'))(new Redis(config['redis']));function emit(_0x1c3762,_0x580db8,_0x582882){io['to'](_0x1c3762)[_0x1da0('0xd')](_0x580db8,_0x582882);}function getTicket(_0x4e0ebc,_0x559ea8,_0x2c8b80,_0x20ab30,_0xd51488,_0xa8123e,_0x33ffe2,_0x19e6b1){var _0x5e629b=Object[_0x1da0('0xe')]({},{'OwnerId':_0x559ea8['id'],'Subject':intUtil[_0x1da0('0xf')](_0x20ab30[_0x1da0('0x10')],_0xd51488,'\x20'),'Description':intUtil[_0x1da0('0xf')](_0x20ab30['Descriptions'],_0xd51488,'\x0a')},getCustomFields(_0xa8123e,_0xd51488));if(_0x2c8b80){if(_0x20ab30[_0x1da0('0x11')]===_0x1da0('0x12')){_0x5e629b[_0x1da0('0x13')]=moment['utc']();_0x5e629b[_0x1da0('0x14')]=![];_0x5e629b[_0x1da0('0x15')]=![];if(_0x2c8b80[_0x1da0('0x16')]==='contact'||_0x2c8b80[_0x1da0('0x16')]==='lead'){_0x5e629b[_0x1da0('0x17')]=_0x2c8b80['id'];}else if(_0x2c8b80[_0x1da0('0x16')]===_0x1da0('0x18')){_0x5e629b[_0x1da0('0x19')]=_0x2c8b80['id'];}}else if(_0x20ab30['ticketType']==='Case'){if(_0x2c8b80[_0x1da0('0x16')]===_0x1da0('0x1a')){_0x5e629b[_0x1da0('0x1b')]=_0x2c8b80['id'];}else if(_0x2c8b80[_0x1da0('0x16')]===_0x1da0('0x18')){_0x5e629b[_0x1da0('0x1c')]=_0x2c8b80['id'];}else if(_0x2c8b80[_0x1da0('0x16')]==='lead'&&_0x20ab30[_0x1da0('0x1d')]){_0x5e629b[_0x20ab30[_0x1da0('0x1d')]]=_0x2c8b80['id'];}else{logger['info'](_0x1da0('0x1e'));}}}return _0x33ffe2[_0x1da0('0x1f')](_0x20ab30[_0x1da0('0x11')])[_0x1da0('0x20')](_0x5e629b);}function getUser(_0x51597c,_0x3069f8,_0x23ac88){if(!_[_0x1da0('0x21')](_0x3069f8)&&intUtil['validateEmail'](_0x3069f8)){var _0x3339e0={'Email':_0x3069f8};var _0x65d05f={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x23ac88[_0x1da0('0x1f')](_0x1da0('0x22'))['find'](_0x3339e0,_0x65d05f)[_0x1da0('0x23')]()[_0x1da0('0x24')](function(_0x61278d){if(_0x61278d[_0x1da0('0x25')]){var _0x3efc5a=_[_0x1da0('0x26')](_0x61278d,function(_0x3041e3){return _0x3041e3['Email']===_0x3069f8;});if(_0x3efc5a){logger['info'](_0x1da0('0x27'),_0x3069f8);return BPromise['resolve']({'id':_0x3efc5a['Id'],'name':_0x3efc5a[_0x1da0('0x28')]});}}else{logger[_0x1da0('0x29')](_0x1da0('0x2a'),_0x3069f8);return _0x23ac88[_0x1da0('0x2b')]()[_0x1da0('0x24')](function(_0x36abda){return BPromise[_0x1da0('0x2c')]({'id':_0x36abda[_0x1da0('0x2d')],'name':_0x36abda[_0x1da0('0x2e')]});});}});}else{logger[_0x1da0('0x29')](_0x1da0('0x2a'),_0x3069f8);return _0x23ac88[_0x1da0('0x2b')]()['then'](function(_0x34d95d){return BPromise[_0x1da0('0x2c')]({'id':_0x34d95d['user_id'],'name':_0x34d95d['display_name']});});}}function getEndUser(_0x1d0443,_0x5ee774,_0x49ef2f,_0x43c077,_0x998074){var _0x37db59={'$or':{'Phone':_0x43c077}};var _0x5630c3={'Id':!![],'Name':!![],'Phone':!![]};return BPromise[_0x1da0('0x2c')]()[_0x1da0('0x24')](function(){logger[_0x1da0('0x29')](_0x1da0('0x2f'),_0x43c077,_0x5ee774[_0x1da0('0x30')]);switch(_0x5ee774['moduleSearch']){case _0x1da0('0x31'):var _0x1e01ed=_[_0x1da0('0x32')](_0x37db59);if(_0x5ee774[_0x1da0('0x33')]){var _0x1eedc8={};_0x1eedc8[_0x5ee774[_0x1da0('0x33')]]=_0x43c077;_['merge'](_0x1e01ed[_0x1da0('0x34')],_0x1eedc8);}return _0x998074['sobject'](_0x1da0('0x35'))['find'](_0x1e01ed,_0x5630c3)[_0x1da0('0x23')]()[_0x1da0('0x24')](function(_0x5ba7c9){if(_0x5ba7c9&&_0x5ba7c9['length']){return _0x5ba7c9;}else{var _0x6527a7=_['cloneDeep'](_0x37db59);if(_0x5ee774[_0x1da0('0x36')]){var _0x3fe0c2={};_0x3fe0c2[_0x5ee774['additionalSearchLead']]=_0x43c077;_[_0x1da0('0x37')](_0x6527a7['$or'],_0x3fe0c2);}return _0x998074[_0x1da0('0x1f')](_0x1da0('0x38'))[_0x1da0('0x26')](_0x6527a7,_0x5630c3);}});case _0x1da0('0x39'):var _0x301e02=_[_0x1da0('0x32')](_0x37db59);if(_0x5ee774[_0x1da0('0x3a')]){var _0x1eedc8={};_0x1eedc8[_0x5ee774[_0x1da0('0x3a')]]=_0x43c077;_[_0x1da0('0x37')](_0x301e02[_0x1da0('0x34')],_0x1eedc8);}return _0x998074[_0x1da0('0x1f')](_0x1da0('0x3b'))['find'](_0x301e02,_0x5630c3)['execute']()[_0x1da0('0x24')](function(_0x28a323){if(_0x28a323&&_0x28a323[_0x1da0('0x25')]){return _0x28a323;}else{var _0x53ca85=_[_0x1da0('0x32')](_0x37db59);if(_0x5ee774['additionalSearchContact']){var _0x1069d5={};_0x1069d5[_0x5ee774[_0x1da0('0x33')]]=_0x43c077;_[_0x1da0('0x37')](_0x53ca85[_0x1da0('0x34')],_0x1069d5);}return _0x998074[_0x1da0('0x1f')](_0x1da0('0x35'))[_0x1da0('0x26')](_0x53ca85,_0x5630c3)[_0x1da0('0x24')](function(_0x21843b){if(_0x21843b&&_0x21843b['length']){return _0x21843b;}else{var _0x283242=_[_0x1da0('0x32')](_0x37db59);if(_0x5ee774[_0x1da0('0x36')]){var _0x4e338e={};_0x4e338e[_0x5ee774[_0x1da0('0x36')]]=_0x43c077;_['merge'](_0x283242[_0x1da0('0x34')],_0x4e338e);}return _0x998074[_0x1da0('0x1f')](_0x1da0('0x38'))[_0x1da0('0x26')](_0x283242,_0x5630c3);}});}});case'contact':var _0x1e01ed=_['cloneDeep'](_0x37db59);if(_0x5ee774['additionalSearchContact']){var _0x1eedc8={};_0x1eedc8[_0x5ee774['additionalSearchContact']]=_0x43c077;_[_0x1da0('0x37')](_0x1e01ed[_0x1da0('0x34')],_0x1eedc8);}return _0x998074[_0x1da0('0x1f')](_0x1da0('0x35'))[_0x1da0('0x26')](_0x1e01ed,_0x5630c3)[_0x1da0('0x23')]();case'lead':var _0x2cc039=_[_0x1da0('0x32')](_0x37db59);if(_0x5ee774['additionalSearchLead']){var _0x1eedc8={};_0x1eedc8[_0x5ee774[_0x1da0('0x36')]]=_0x43c077;_[_0x1da0('0x37')](_0x2cc039[_0x1da0('0x34')],_0x1eedc8);}return _0x998074[_0x1da0('0x1f')](_0x1da0('0x38'))['find'](_0x2cc039,_0x5630c3);case _0x1da0('0x18'):var _0x301e02=_[_0x1da0('0x32')](_0x37db59);if(_0x5ee774[_0x1da0('0x3a')]){var _0x1eedc8={};_0x1eedc8[_0x5ee774[_0x1da0('0x3a')]]=_0x43c077;_[_0x1da0('0x37')](_0x301e02[_0x1da0('0x34')],_0x1eedc8);}return _0x998074['sobject'](_0x1da0('0x3b'))[_0x1da0('0x26')](_0x301e02,_0x5630c3);default:return null;}})[_0x1da0('0x24')](function(_0x5105bd){if(_0x5105bd&&_0x5105bd['length']){var _0x15e83b=_['first'](_0x5105bd);if(_0x15e83b){return BPromise[_0x1da0('0x2c')]({'id':_0x15e83b['Id'],'name':_0x15e83b[_0x1da0('0x28')],'phone':_0x15e83b[_0x1da0('0x3c')],'endUserType':_0x15e83b[_0x1da0('0x3d')][_0x1da0('0x3e')][_0x1da0('0x3f')]()});}}})[_0x1da0('0x24')](function(_0x3c7e2f){if(_0x3c7e2f){logger[_0x1da0('0x29')]('Enduser\x20(%s)\x20with\x20phone\x20%s\x20found',_0x3c7e2f['endUserType'],_0x43c077);return BPromise[_0x1da0('0x2c')](_0x3c7e2f);}else{logger[_0x1da0('0x29')](_0x1da0('0x40'),_0x43c077);var _0xbc7db3={'Phone':_0x43c077};if(_0x5ee774[_0x1da0('0x41')]){if(_0x5ee774['moduleCreate']===_0x1da0('0x1a')){logger[_0x1da0('0x29')](_0x1da0('0x42'),_0x43c077,_0x5ee774['moduleCreate']);_0xbc7db3[_0x1da0('0x43')]=_0x49ef2f!==_0x1da0('0x44')?_0x49ef2f:util['format'](_0x1da0('0x45'),_0x43c077);}else if(_0x5ee774[_0x1da0('0x41')]===_0x1da0('0x46')){logger['info'](_0x1da0('0x42'),_0x43c077,_0x5ee774['moduleCreate']);_0xbc7db3['LastName']=_0x49ef2f!==_0x1da0('0x44')?_0x49ef2f:util['format'](_0x1da0('0x45'),_0x43c077);_0xbc7db3[_0x1da0('0x47')]=_0x1da0('0x48');}else if(_0x5ee774[_0x1da0('0x41')]===_0x1da0('0x18')){logger[_0x1da0('0x29')](_0x1da0('0x42'),_0x43c077,_0x5ee774[_0x1da0('0x41')]);_0xbc7db3[_0x1da0('0x28')]=_0x49ef2f!==_0x1da0('0x44')?_0x49ef2f:util['format'](_0x1da0('0x45'),_0x43c077);}else{return null;}}return _0x998074[_0x1da0('0x1f')](_[_0x1da0('0x49')](_0x5ee774[_0x1da0('0x41')]))['create'](_0xbc7db3)['then'](function(_0x410a15){return BPromise[_0x1da0('0x2c')]({'id':_0x410a15['id'],'endUserType':_0x5ee774[_0x1da0('0x41')]});});}});}function getCustomFields(_0x13050e,_0x2fd5e7){var _0x318825={};if(_0x13050e[_0x1da0('0x25')]>0x0){_[_0x1da0('0x4a')](_0x13050e,function(_0x51b4db){if(_['includes']([_0x1da0('0x4b'),'picklist'],_0x51b4db[_0x1da0('0x3e')])&&_0x51b4db[_0x1da0('0x4c')]){_0x318825[_0x51b4db['idField']]=_0x51b4db['content']['toString']();}else if(_0x51b4db[_0x1da0('0x3e')]===_0x1da0('0x4d')&&_0x51b4db[_0x1da0('0x4e')]&&_0x51b4db[_0x1da0('0x4c')]){_0x2fd5e7[_0x51b4db[_0x1da0('0x4e')]]&&(_0x318825[_0x51b4db['idField']]=_0x2fd5e7[_0x51b4db[_0x1da0('0x4e')]]['toString']());}else if(_0x51b4db[_0x1da0('0x3e')]===_0x1da0('0x4f')&&_0x51b4db[_0x1da0('0x50')]&&_0x51b4db['Variable'][_0x1da0('0x51')]&&_0x51b4db[_0x1da0('0x4c')]){_0x2fd5e7[_0x51b4db[_0x1da0('0x50')]['name']['toLowerCase']()]&&(_0x318825[_0x51b4db[_0x1da0('0x4c')]]=_0x2fd5e7[_0x51b4db[_0x1da0('0x50')][_0x1da0('0x51')]['toLowerCase']()]['toString']());}});}return _0x318825;}function getConnection(_0x27fbc6){var _0x11b84e=_0x27fbc6[_0x1da0('0x52')]['concat'](_0x27fbc6[_0x1da0('0x53')]);var _0x558d7a=new jsforce[(_0x1da0('0x54'))]({'oauth2':{'loginUrl':_0x27fbc6['remoteUri']||_0x1da0('0x55'),'clientId':_0x27fbc6[_0x1da0('0x56')],'clientSecret':_0x27fbc6[_0x1da0('0x57')]}});return _0x558d7a['login'](_0x27fbc6[_0x1da0('0x58')],_0x11b84e)[_0x1da0('0x24')](function(){logger[_0x1da0('0x29')]('Connection\x20established.');return _0x558d7a;});}exports[_0x1da0('0x59')]=function(_0x2de448,_0x4cee28,_0x555ce2,_0x500da7,_0x34f82b,_0x5f2662){var _0x300b69,_0xe54949,_0x30712e,_0x18a3fc;_0x5f2662[_0x1da0('0x5a')]=intUtil[_0x1da0('0x5b')](_0x5f2662['serverUrl']);_0x5f2662['remoteUri']=intUtil[_0x1da0('0x5b')](_0x5f2662['remoteUri']);if(_0x34f82b&&_0x34f82b[_0x1da0('0x5c')]){logger[_0x1da0('0x29')](_0x1da0('0x5d'),_0x1da0('0x5e'));_0x4cee28[_0x1da0('0x5f')]=util[_0x1da0('0x60')](_0x1da0('0x61'),_0x5f2662[_0x1da0('0x5a')],_0x4cee28[_0x1da0('0x62')],md5(_0x4cee28[_0x1da0('0x62')]));}else{_0x4cee28[_0x1da0('0x5f')]='';}return getConnection(_0x5f2662)['then'](function(_0x362c3c){_0x18a3fc=_0x362c3c;return getUser(_0x5f2662,_0x500da7[_0x1da0('0x63')],_0x18a3fc);})[_0x1da0('0x24')](function(_0xd8f1cd){_0x300b69=_0xd8f1cd;return getEndUser(_0x5f2662,_0x555ce2,_0x4cee28[_0x1da0('0x64')],_0x4cee28[_0x1da0('0x65')],_0x18a3fc);})['then'](function(_0x5ba12d){_0xe54949=_0x5ba12d;return getTicket(_0x5f2662,_0x300b69,_0xe54949,_0x555ce2,_0x4cee28,_0x555ce2[_0x1da0('0x66')],_0x18a3fc,_0x1da0('0x59'));})[_0x1da0('0x24')](function(_0x572a32){_0x30712e=_0x572a32;logger[_0x1da0('0x29')](_0x1da0('0x67'),_0x30712e['id']);logger[_0x1da0('0x29')](_0x1da0('0x68'),_0x30712e['id'],_0x500da7[_0x1da0('0x51')],_0x5f2662[_0x1da0('0x3e')]);switch(_0x5f2662[_0x1da0('0x3e')]){case _0x1da0('0x69'):emit(util[_0x1da0('0x60')](_0x1da0('0x6a'),_0x500da7[_0x1da0('0x51')]),'trigger:salesforce:display',{'recordId':_0x30712e['id']});break;case'newTab':emit(util['format'](_0x1da0('0x6a'),_0x500da7['name']),_0x1da0('0x6b'),{'uri':util[_0x1da0('0x60')](_0x1da0('0x6c'),_0x18a3fc['instanceUrl'],_0x30712e['id'])});break;default:logger[_0x1da0('0x6d')](_0x1da0('0x6e'));}})[_0x1da0('0x6f')](function(_0x52f3d1){logger['error'](_0x1da0('0x5d'),_0x52f3d1);});};exports[_0x1da0('0x70')]=function(_0x27a42a,_0x36518e,_0x6526d6,_0x5d841b,_0x251230,_0x703496,_0x151b06){var _0x14de18,_0x5c41e1,_0x332f71,_0x37247f;_0x703496['serverUrl']=intUtil[_0x1da0('0x5b')](_0x703496['serverUrl']);_0x703496['remoteUri']=intUtil['stripTrailingSlash'](_0x703496[_0x1da0('0x71')]);if(_0x151b06&&_0x151b06['recordingFormat']&&_0x151b06[_0x1da0('0x72')]!=='none'){logger[_0x1da0('0x29')](_0x1da0('0x73'),_0x1da0('0x5e'));_0x36518e[_0x1da0('0x5f')]=util[_0x1da0('0x60')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x703496['serverUrl'],_0x36518e[_0x1da0('0x62')],md5(_0x36518e[_0x1da0('0x62')]));}return getConnection(_0x703496)[_0x1da0('0x24')](function(_0x39e1a4){_0x37247f=_0x39e1a4;return getUser(_0x703496,_0x5d841b['email'],_0x37247f);})[_0x1da0('0x24')](function(_0x5a5994){_0x14de18=_0x5a5994;return getEndUser(_0x703496,_0x6526d6,_0x36518e[_0x1da0('0x74')],_0x36518e[_0x1da0('0x75')],_0x37247f);})[_0x1da0('0x24')](function(_0x3fd740){_0x5c41e1=_0x3fd740;return getTicket(_0x703496,_0x14de18,_0x5c41e1,_0x6526d6,_0x36518e,_0x6526d6['Fields'],_0x37247f,'outbound');})['then'](function(_0x4fd0ae){_0x332f71=_0x4fd0ae;logger[_0x1da0('0x29')]('[OUTBOUND]\x20Ticket\x20%s\x20created.',_0x332f71['id']);logger['info'](_0x1da0('0x76'),_0x332f71['id'],_0x5d841b['name'],_0x703496[_0x1da0('0x3e')]);switch(_0x703496[_0x1da0('0x3e')]){case _0x1da0('0x69'):emit(util[_0x1da0('0x60')]('user:%s',_0x5d841b[_0x1da0('0x51')]),_0x1da0('0x77'),{'recordId':_0x332f71['id']});break;case'newTab':emit(util[_0x1da0('0x60')](_0x1da0('0x6a'),_0x5d841b[_0x1da0('0x51')]),_0x1da0('0x6b'),{'uri':util[_0x1da0('0x60')](_0x1da0('0x6c'),_0x37247f['instanceUrl'],_0x332f71['id'])});break;default:logger[_0x1da0('0x6d')](_0x1da0('0x73'),'Salesforce\x20account\x20type\x20not\x20recognized');}})[_0x1da0('0x6f')](function(_0x4c7bcd){logger[_0x1da0('0x6d')]('[OUTBOUND]',_0x4c7bcd);});};exports[_0x1da0('0x78')]=function(_0x33513d,_0x437980,_0x270685,_0x74c225,_0x3721e9,_0x3e8151){var _0x1bcdb6,_0x2091ad,_0x4e69fd,_0x4c6a3e;_0x3e8151['serverUrl']=intUtil[_0x1da0('0x5b')](_0x3e8151['serverUrl']);_0x3e8151['remoteUri']=intUtil['stripTrailingSlash'](_0x3e8151[_0x1da0('0x71')]);if(_0x3721e9&&_0x3721e9['monitor_format']){logger[_0x1da0('0x29')]('['+_0x437980['lastevent'][_0x1da0('0x79')]()+']',_0x1da0('0x5e'));_0x437980[_0x1da0('0x5f')]=util[_0x1da0('0x60')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x3e8151[_0x1da0('0x5a')],_0x437980[_0x1da0('0x62')],md5(_0x437980[_0x1da0('0x62')]));}else{_0x437980[_0x1da0('0x5f')]='';}return getConnection(_0x3e8151)['then'](function(_0x101588){_0x4c6a3e=_0x101588;if(!_[_0x1da0('0x21')](_0x74c225)){return getUser(_0x3e8151,_0x74c225[_0x1da0('0x51')],_0x4c6a3e);}else{return getUser(_0x3e8151,null,_0x4c6a3e);}})[_0x1da0('0x24')](function(_0x1caf20){_0x1bcdb6=_0x1caf20;return getEndUser(_0x3e8151,_0x270685,_0x437980[_0x1da0('0x64')],_0x437980[_0x1da0('0x65')],_0x4c6a3e);})[_0x1da0('0x24')](function(_0x3e213e){_0x2091ad=_0x3e213e;return getTicket(_0x3e8151,_0x1bcdb6,_0x2091ad,_0x270685,_0x437980,_0x270685[_0x1da0('0x66')],_0x4c6a3e);})[_0x1da0('0x24')](function(_0x403be5){_0x4e69fd=_0x403be5;logger['info']('['+_0x437980[_0x1da0('0x7a')]['toUpperCase']()+_0x1da0('0x7b'),_0x4e69fd['id']);logger[_0x1da0('0x29')]('['+_0x437980[_0x1da0('0x7a')][_0x1da0('0x79')]()+_0x1da0('0x7c'),_0x3e8151[_0x1da0('0x3e')]);})[_0x1da0('0x6f')](function(_0x5c4332){logger[_0x1da0('0x6d')]('['+_0x437980[_0x1da0('0x7a')][_0x1da0('0x79')]()+']',_0x5c4332);});};
\ No newline at end of file
index 47b6e4c..9579255 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2982=['unmanaged',']\x20Error\x20running\x20ServiceNow\x20integration','inspect','bluebird','util','md5','ioredis','../../../../config/environment','servicenow','redis','defaults','localhost','GET','sys_user?sysparm_query=user_name%3Dadmin','then','result','length','adminId','sys_id','info','toUpperCase','catch','message','],\x20getUser\x20input\x20crm','userEmail','sys_user?sysparm_query=email%3D','],\x20getUser\x20rp\x20obj','active','true','userId','adminEmail','],\x20getUser\x20crm','error',']\x20using\x20admin\x20profile','],\x20createEndUser\x20input\x20crm','sys_user?','endUserNumber','user','System','],\x20EndUser\x20schema','],\x20getEndUser\x20input\x20crm','sys_user?sysparm_query=phone%3D','endUserId','],\x20createEndUser\x20crm','forEach','includes','string','picklist','type','nameField','customField','toLowerCase','toString','idField','content','variableName','customVariable','Variable','name',']\x20getTicket\x20input\x20crm','outbound','POST','assign','getString','Fields',']\x20POST\x20incident\x20entity\x20schema','ticketId','number',']\x20getTicket\x20crm','label','label_entry','Incident','Incident\x20-\x20','ticketNumber','all',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','map','%26sysparm_record_target%3Dincident','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39','%26sysparm_record_list%3Dactive%253Dtrue','%255EORDERBYDESCnumber','user:%s','emit','username','sysparm_limit=1','sysparm_display_value=true','stripTrailingSlash','remoteUri','serverUrl','isNil','email','destcalleridnum','calleridnum','callDirection','format','%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','call\x20direction:\x20%s'];(function(_0x411a2d,_0x4ced44){var _0x4865d1=function(_0x283737){while(--_0x283737){_0x411a2d['push'](_0x411a2d['shift']());}};_0x4865d1(++_0x4ced44);}(_0x2982,0x13e));var _0x2298=function(_0x574fe9,_0x1864c9){_0x574fe9=_0x574fe9-0x0;var _0x360a50=_0x2982[_0x574fe9];return _0x360a50;};'use strict';var _=require('lodash');var Promise=require(_0x2298('0x0'));var rp=require('request-promise');var util=require(_0x2298('0x1'));var md5=require(_0x2298('0x2'));var Redis=require(_0x2298('0x3'));var intUtil=require('./util');var config=require(_0x2298('0x4'));var logger=require('../../../../config/logger')(_0x2298('0x5'));config[_0x2298('0x6')]=_[_0x2298('0x7')](config[_0x2298('0x6')],{'host':_0x2298('0x8'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function getAdminUser(_0x28dd84,_0x2dfbc3,_0xfe9527,_0x2d4b08,_0x58681c,_0x35f12c){return new Promise(function(_0x362f9f,_0x562885){var _0xb07e2={'method':_0x2298('0x9'),'uri':_0x2d4b08+_0x2298('0xa')+'&'+_0x58681c+'&'+_0x35f12c,'auth':_0x2dfbc3,'json':!![]};return rp(_0xb07e2)[_0x2298('0xb')](function(_0x115c40){if(_0x115c40[_0x2298('0xc')][_0x2298('0xd')]>0x0){_0xfe9527[_0x2298('0xe')]=_0x115c40[_0x2298('0xc')][0x0][_0x2298('0xf')];}logger[_0x2298('0x10')]('['+[_0x28dd84[_0x2298('0x11')]()]+'],\x20getAdminUser\x20crm',_0xfe9527);_0x362f9f(_0xfe9527);})[_0x2298('0x12')](function(_0x45651a){logger['error']('['+[_0x28dd84[_0x2298('0x11')]()]+']',_0x45651a[_0x2298('0x13')]);_0x562885(_0x45651a[_0x2298('0x13')]);});});}function getUser(_0xa44f4e,_0x535fb2,_0x203e1f,_0x36fb69,_0x156eb9){return function(_0x4b14ad){logger['info']('['+[_0xa44f4e['toUpperCase']()]+_0x2298('0x14'),_0x4b14ad);return new Promise(function(_0x2c770e,_0x55f917){if(intUtil['validateEmail'](_0x4b14ad[_0x2298('0x15')])){var _0x520dbd={'method':'GET','uri':_0x203e1f+_0x2298('0x16')+_0x4b14ad[_0x2298('0x15')]+'&'+_0x36fb69+'&'+_0x156eb9,'auth':_0x535fb2,'json':!![]};logger[_0x2298('0x10')]('['+[_0xa44f4e[_0x2298('0x11')]()]+_0x2298('0x17'),_0x520dbd);return rp(_0x520dbd)[_0x2298('0xb')](function(_0xb3a267){logger[_0x2298('0x10')]('['+[_0xa44f4e[_0x2298('0x11')]()]+'],\x20getUser\x20entity',_0xb3a267);if(_0xb3a267[_0x2298('0xc')][_0x2298('0xd')]>0x0&&String(_0xb3a267[_0x2298('0xc')][0x0][_0x2298('0x18')])===_0x2298('0x19')){_0x4b14ad['userId']=_0xb3a267[_0x2298('0xc')][0x0]['sys_id'];}else{_0x4b14ad[_0x2298('0x1a')]=_0x4b14ad[_0x2298('0xe')];_0x4b14ad[_0x2298('0x15')]=_0x4b14ad[_0x2298('0x1b')];}logger[_0x2298('0x10')]('['+[_0xa44f4e['toUpperCase']()]+_0x2298('0x1c'),_0x4b14ad);_0x2c770e(_0x4b14ad);})[_0x2298('0x12')](function(_0x4edca4){logger[_0x2298('0x1d')]('['+[_0xa44f4e[_0x2298('0x11')]()]+']',_0x4edca4[_0x2298('0x13')]);_0x55f917(_0x4edca4[_0x2298('0x13')]);});}else{logger[_0x2298('0x10')]('['+[_0xa44f4e['toUpperCase']()]+_0x2298('0x1e'));_0x4b14ad['userId']=_0x4b14ad[_0x2298('0xe')];_0x4b14ad[_0x2298('0x15')]=_0x4b14ad[_0x2298('0x1b')];_0x2c770e(_0x4b14ad);}});};}function createEndUser(_0x51e5eb,_0x216fc6,_0x2526e0,_0x346389,_0x31cbf2){logger[_0x2298('0x10')]('['+[_0x51e5eb[_0x2298('0x11')]()]+_0x2298('0x1f'),_0x2526e0);return new Promise(function(_0x1dadc0,_0xd4c3f8){var _0x5bbf58={'method':'POST','uri':_0x346389+_0x2298('0x20')+_0x31cbf2,'body':{'user_name':_0x2526e0[_0x2298('0x21')],'roles':_0x2298('0x22'),'first_name':_0x2526e0[_0x2298('0x21')],'active':_0x2298('0x19'),'date_format':_0x2298('0x23'),'phone':_0x2526e0['endUserNumber']},'auth':_0x216fc6,'json':!![]};return rp(_0x5bbf58)['then'](function(_0x53548f){logger[_0x2298('0x10')]('['+[_0x51e5eb[_0x2298('0x11')]()]+_0x2298('0x24'),_0x53548f[_0x2298('0xc')]);_0x2526e0['endUserId']=_0x53548f[_0x2298('0xc')]['sys_id'];_0x1dadc0(_0x2526e0);})[_0x2298('0x12')](function(_0x229f59){logger[_0x2298('0x1d')]('['+[_0x51e5eb['toUpperCase']()]+']',_0x229f59['message']);_0xd4c3f8(_0x229f59[_0x2298('0x13')]);});});}function getEndUser(_0x3943ea,_0x26e45f,_0x1ffaa4,_0x3cd76b,_0x57e2c6){return function(_0x1a4656){logger['info']('['+[_0x3943ea[_0x2298('0x11')]()]+_0x2298('0x25'),_0x1a4656);return new Promise(function(_0x12c155,_0x591714){var _0x4971a9={'method':'GET','uri':_0x1ffaa4+_0x2298('0x26')+_0x1a4656[_0x2298('0x21')]+'&'+_0x3cd76b+'&'+_0x57e2c6,'auth':_0x26e45f,'json':!![]};return rp(_0x4971a9)[_0x2298('0xb')](function(_0x2ec610){if(_0x2ec610[_0x2298('0xc')][_0x2298('0xd')]>0x0){_0x1a4656[_0x2298('0x27')]=_0x2ec610['result'][0x0][_0x2298('0xf')];logger[_0x2298('0x10')]('['+[_0x3943ea['toUpperCase']()]+'],\x20getEndUser\x20crm',_0x1a4656);_0x12c155(_0x1a4656);}else{return createEndUser(_0x3943ea,_0x26e45f,_0x1a4656,_0x1ffaa4,_0x3cd76b)['then'](function(_0x56cadf){logger[_0x2298('0x10')]('['+[_0x3943ea['toUpperCase']()]+_0x2298('0x28'),_0x56cadf);_0x12c155(_0x56cadf);});}})['catch'](function(_0x3513ee){logger[_0x2298('0x1d')]('['+[_0x3943ea['toUpperCase']()]+']',_0x3513ee[_0x2298('0x13')]);_0x591714(_0x3513ee[_0x2298('0x13')]);});});};}function getCustomFields(_0x13955c,_0x245e18){var _0x3b2fe2={};if(_0x13955c[_0x2298('0xd')]>0x0){_[_0x2298('0x29')](_0x13955c,function(_0x426d8f){if(_[_0x2298('0x2a')]([_0x2298('0x2b'),_0x2298('0x2c')],_0x426d8f[_0x2298('0x2d')])&&_0x426d8f[_0x2298('0x2e')]&&!_0x426d8f[_0x2298('0x2f')]){_0x3b2fe2[_0x426d8f[_0x2298('0x2e')][_0x2298('0x30')]()]=_0x426d8f['content'][_0x2298('0x31')]();}else if(_['includes']([_0x2298('0x2b'),_0x2298('0x2c')],_0x426d8f[_0x2298('0x2d')])&&_0x426d8f[_0x2298('0x32')]&&_0x426d8f[_0x2298('0x2f')]){_0x3b2fe2[_0x426d8f[_0x2298('0x32')]['toLowerCase']()]=_0x426d8f[_0x2298('0x33')][_0x2298('0x31')]();}else if(_0x426d8f[_0x2298('0x2d')]==='variable'&&_0x426d8f[_0x2298('0x34')]&&_0x426d8f[_0x2298('0x32')]&&_0x426d8f[_0x2298('0x2f')]){_0x3b2fe2[_0x426d8f[_0x2298('0x32')][_0x2298('0x30')]()]=_0x245e18[_0x426d8f['variableName']][_0x2298('0x31')]();}else if(_0x426d8f[_0x2298('0x2d')]===_0x2298('0x35')&&_0x426d8f[_0x2298('0x36')]&&_0x426d8f[_0x2298('0x36')][_0x2298('0x37')]&&_0x426d8f[_0x2298('0x32')]&&_0x426d8f[_0x2298('0x2f')]){_0x3b2fe2[_0x426d8f[_0x2298('0x32')][_0x2298('0x30')]()]=_0x245e18[_0x426d8f['Variable'][_0x2298('0x37')][_0x2298('0x30')]()][_0x2298('0x31')]();}});}return _0x3b2fe2;}function getTicket(_0x1381f8,_0x311501,_0x5dbd58,_0x419ad7,_0x353ddb,_0x402ebb){return function(_0x48cfd6){logger[_0x2298('0x10')]('['+[_0x1381f8['toUpperCase']()]+_0x2298('0x38'),_0x48cfd6);return new Promise(function(_0x39f655,_0x4eb4df){var _0x4ebc1c=_0x1381f8[_0x2298('0x30')]()===_0x2298('0x39')?_0x48cfd6[_0x2298('0x1a')]:_0x48cfd6[_0x2298('0x27')];var _0x5e5dad={'method':_0x2298('0x3a'),'uri':_0x5dbd58+'incident'+'?'+_0x402ebb,'body':Object[_0x2298('0x3b')]({},{'active':'true','caller_id':_0x4ebc1c,'assigned_to':_0x48cfd6['userId'],'short_description':intUtil[_0x2298('0x3c')](_0x419ad7['Subjects'],_0x353ddb,'\x20'),'description':intUtil['getString'](_0x419ad7['Descriptions'],_0x353ddb,'\x0a')},getCustomFields(_0x419ad7[_0x2298('0x3d')],_0x353ddb)),'auth':_0x311501,'json':!![]};return rp(_0x5e5dad)[_0x2298('0xb')](function(_0x4fad83){logger[_0x2298('0x10')]('['+[_0x1381f8[_0x2298('0x11')]()]+_0x2298('0x3e'),_0x4fad83[_0x2298('0xc')]);_0x48cfd6[_0x2298('0x3f')]=_0x4fad83[_0x2298('0xc')]['sys_id'];_0x48cfd6['ticketNumber']=_0x4fad83[_0x2298('0xc')][_0x2298('0x40')];logger[_0x2298('0x10')]('['+[_0x1381f8[_0x2298('0x11')]()]+_0x2298('0x41'),_0x48cfd6);_0x39f655(_0x48cfd6);})['catch'](function(_0x46bc97){logger['error']('['+[_0x1381f8[_0x2298('0x11')]()]+']',_0x46bc97[_0x2298('0x13')]);_0x4eb4df(_0x46bc97[_0x2298('0x13')]);});});};}function createRemoteTag(_0xcc3fb9,_0x37d23b,_0x2c0bb2,_0x1a0987){return new Promise(function(_0x322606,_0x4e2f80){var _0x448742={'method':'POST','uri':_0x2c0bb2+_0x2298('0x42')+'?'+_0x1a0987,'body':{'short_description':_0xcc3fb9,'global':!![],'active':!![],'name':_0xcc3fb9},'auth':_0x37d23b,'json':!![]};return rp(_0x448742)[_0x2298('0xb')](function(_0x429e36){var _0xa98b79=_0x429e36[_0x2298('0xc')]['sys_id'];_0x322606(_0xa98b79);});});}function getRemoteTag(_0x320cf7,_0x257dc7,_0x146d73,_0x19181c,_0x157e78){return new Promise(function(_0x1ed025,_0x116d45){var _0x197c67={'method':_0x2298('0x9'),'uri':_0x146d73+_0x2298('0x42')+'?sysparm_query=name%3D'+_0x320cf7+'&'+_0x19181c,'auth':_0x257dc7,'json':!![]};return rp(_0x197c67)[_0x2298('0xb')](function(_0x1f7f78){if(_0x1f7f78[_0x2298('0xc')]['length']>0x0){var _0x21d52b=_0x1f7f78[_0x2298('0xc')][0x0][_0x2298('0xf')];_0x1ed025(_0x21d52b);}else{return createRemoteTag(_0x320cf7,_0x257dc7,_0x146d73,_0x19181c)['then'](function(_0xc408f0){_0x1ed025(_0xc408f0);});}});});}function assignTagToIncident(_0xbdb423,_0x289261,_0x204ebe,_0x5a7b96,_0x1d5e37){return new Promise(function(_0x20a05e,_0x4605fb){var _0x13a159={'method':_0x2298('0x3a'),'uri':_0x204ebe+_0x2298('0x43')+'?'+_0x1d5e37,'body':{'label':_0xbdb423,'table':'incident','id_type':_0x2298('0x44'),'table_key':_0x5a7b96[_0x2298('0x3f')],'title':_0x2298('0x45')+_0x5a7b96[_0x2298('0x46')],'id_display':_0x5a7b96['ticketNumber']},'auth':_0x289261,'json':!![]};return rp(_0x13a159)[_0x2298('0xb')](function(_0x1bd52b){_0x20a05e();})['catch'](function(){_0x20a05e();});});}function manageTags(_0x3d7aae,_0x5bab4d,_0x4b9173,_0x2e27d3,_0x211b77,_0x2f04ad,_0x24f8a8){return new Promise(function(_0x1a255e,_0x3308e0){var _0x464398=[];_0x5bab4d[_0x2298('0x29')](function(_0x17565f){_0x464398['push'](getRemoteTag(_0x17565f,_0x4b9173,_0x2e27d3,_0x2f04ad,_0x24f8a8));});return Promise[_0x2298('0x47')](_0x464398)[_0x2298('0xb')](function(_0x17a001){if(_0x17a001[_0x2298('0xd')]){logger[_0x2298('0x10')]('['+[_0x3d7aae[_0x2298('0x11')]()]+_0x2298('0x48'),_0x17a001);var _0x3f8a1b=[];_0x17a001[_0x2298('0x29')](function(_0xde3ce9){_0x3f8a1b['push'](assignTagToIncident(_0xde3ce9,_0x4b9173,_0x2e27d3,_0x211b77,_0x2f04ad));});return Promise['all'](_0x3f8a1b)[_0x2298('0xb')](function(){_0x1a255e();})[_0x2298('0x12')](function(){_0x1a255e();});}else{_0x1a255e();}});});}function getTags(_0x33b7bf,_0x53a5ea,_0x5bab58,_0x248cab,_0x58dd19,_0x292d6f){return function(_0x45ecdf){return new Promise(function(_0x16158f,_0x6aa2a3){var _0x31818f=[];var _0x235efa=_0x248cab['Tags'];if(_0x235efa&&_0x235efa[_0x2298('0xd')]>0x0){_0x31818f=_[_0x2298('0x49')](_0x235efa,'name');}if(_0x31818f[_0x2298('0xd')]>0x0){return manageTags(_0x33b7bf,_0x31818f,_0x53a5ea,_0x5bab58,_0x45ecdf,_0x58dd19,_0x292d6f)['then'](function(){_0x16158f(_0x45ecdf);});}else{_0x16158f(_0x45ecdf);}});};}function emit(_0x54b4bc,_0x58af03,_0x5c1416){var _0x71b2ea=_0x2298('0x4a')+_0x2298('0x4b')+_0x2298('0x4c')+_0x2298('0x4d');var _0xa6ce7f={'uri':_0x54b4bc+'/nav_to.do?uri=incident.do?sys_id%3D'+_0x5c1416+_0x71b2ea};io['to'](util['format'](_0x2298('0x4e'),_0x58af03))[_0x2298('0x4f')]('trigger:browser:url',_0xa6ce7f);}exports['cs']=function(_0x329dd7,_0x3d3d0d,_0x199bce,_0x5d8f67,_0x3eec3b,_0x292cbb,_0x2b8b8f,_0x7ed1f6){var _0x3d3284={};var _0x1339d4={'user':_0x292cbb[_0x2298('0x50')],'pass':_0x292cbb['password']};var _0x11c66f=_0x2298('0x51');var _0x53277b=_0x2298('0x52');_0x292cbb['remoteUri']=intUtil[_0x2298('0x53')](_0x292cbb[_0x2298('0x54')]);_0x292cbb['serverUrl']=intUtil[_0x2298('0x53')](_0x292cbb[_0x2298('0x55')]);var _0x50918b=util['format']('%s/api/now/table/',_0x292cbb[_0x2298('0x54')]);_0x3d3284[_0x2298('0x15')]=!_[_0x2298('0x56')](_0x5d8f67)?_0x5d8f67['email']:null;_0x3d3284[_0x2298('0x1b')]=_0x292cbb[_0x2298('0x57')];_0x3d3284[_0x2298('0x21')]=_0x7ed1f6['toLowerCase']()===_0x2298('0x39')?_0x3d3d0d[_0x2298('0x58')]:_0x3d3d0d[_0x2298('0x59')];_0x3d3284[_0x2298('0x5a')]=_0x7ed1f6==='queue'||_0x7ed1f6==='unmanaged'?'queue':_0x2298('0x39');var _0x38d99a=util[_0x2298('0x5b')](_0x2298('0x5c'),_0x292cbb['serverUrl'],_0x3d3d0d[_0x2298('0x5d')],md5(_0x3d3d0d[_0x2298('0x5d')]));if(_0x3eec3b&&_0x3eec3b[_0x2298('0x5e')]){logger[_0x2298('0x10')]('[QUEUE]',_0x2298('0x5f'));_0x3d3d0d[_0x2298('0x60')]=_0x38d99a;}else if(_0x2b8b8f&&_0x2b8b8f[_0x2298('0x61')]&&_0x2b8b8f[_0x2298('0x61')]!==_0x2298('0x62')){logger[_0x2298('0x10')](_0x2298('0x63'),_0x2298('0x5f'));_0x3d3d0d[_0x2298('0x60')]=_0x38d99a;}else{_0x3d3d0d['recordingURL']='';}return getAdminUser(_0x7ed1f6,_0x1339d4,_0x3d3284,_0x50918b,_0x53277b,_0x11c66f)[_0x2298('0xb')](getUser(_0x7ed1f6,_0x1339d4,_0x50918b,_0x53277b,_0x11c66f))[_0x2298('0xb')](getEndUser(_0x7ed1f6,_0x1339d4,_0x50918b,_0x53277b,_0x11c66f))[_0x2298('0xb')](getTicket(_0x7ed1f6,_0x1339d4,_0x50918b,_0x199bce,_0x3d3d0d,_0x53277b))[_0x2298('0xb')](function(_0x23b485){logger[_0x2298('0x10')](util['format'](_0x2298('0x64'),_0x23b485['ticketId']));logger['info'](util['format'](_0x2298('0x65'),_0x7ed1f6));if(_0x7ed1f6!==_0x2298('0x66')){logger['info']('['+[_0x7ed1f6['toUpperCase']()]+']','Displaying\x20call\x20in\x20a\x20new\x20tab...');emit(_0x292cbb[_0x2298('0x54')],_0x5d8f67[_0x2298('0x37')],_0x23b485[_0x2298('0x3f')]);}})[_0x2298('0x12')](function(_0x879cec){logger[_0x2298('0x1d')]('['+[_0x7ed1f6[_0x2298('0x11')]()]+_0x2298('0x67'),util[_0x2298('0x68')](_0x879cec,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x75db=['adminEmail','],\x20createEndUser\x20input\x20crm','user','endUserNumber','System','],\x20EndUser\x20schema','endUserId','],\x20getEndUser\x20input\x20crm','includes','string','type','nameField','toString','picklist','idField','toLowerCase','content','variable','variableName','customField','Variable',']\x20getTicket\x20input\x20crm','outbound','POST','incident','assign','getString','Descriptions',']\x20POST\x20incident\x20entity\x20schema','ticketId','ticketNumber','number',']\x20getTicket\x20crm','label','label_entry','Incident','Incident\x20-\x20','forEach','push','all','%26sysparm_record_target%3Dincident','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39','%26sysparm_record_list%3Dactive%253Dtrue','/nav_to.do?uri=incident.do?sys_id%3D','format','user:%s','emit','trigger:browser:url','username','password','sysparm_limit=1','sysparm_display_value=true','remoteUri','stripTrailingSlash','serverUrl','%s/api/now/table/','email','destcalleridnum','calleridnum','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]','call\x20direction:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20ServiceNow\x20integration','inspect','lodash','bluebird','util','md5','ioredis','./util','../../../../config/logger','servicenow','redis','localhost','sys_user?sysparm_query=user_name%3Dadmin','then','length','result','sys_id','toUpperCase','catch','error','message','info','],\x20getUser\x20input\x20crm','validateEmail','userEmail','GET','sys_user?sysparm_query=email%3D','],\x20getUser\x20entity','true','userId','adminId'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x75db,0x1eb));var _0xb75d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x75db[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xb75d('0x0'));var Promise=require(_0xb75d('0x1'));var rp=require('request-promise');var util=require(_0xb75d('0x2'));var md5=require(_0xb75d('0x3'));var Redis=require(_0xb75d('0x4'));var intUtil=require(_0xb75d('0x5'));var config=require('../../../../config/environment');var logger=require(_0xb75d('0x6'))(_0xb75d('0x7'));config[_0xb75d('0x8')]=_['defaults'](config[_0xb75d('0x8')],{'host':_0xb75d('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xb75d('0x8')]));function getAdminUser(_0x2ef4b8,_0x2cab9c,_0x1d3023,_0x24e0d8,_0x262157,_0x59e68b){return new Promise(function(_0x35afe7,_0x5df194){var _0x3dd2f2={'method':'GET','uri':_0x24e0d8+_0xb75d('0xa')+'&'+_0x262157+'&'+_0x59e68b,'auth':_0x2cab9c,'json':!![]};return rp(_0x3dd2f2)[_0xb75d('0xb')](function(_0x3ad903){if(_0x3ad903['result'][_0xb75d('0xc')]>0x0){_0x1d3023['adminId']=_0x3ad903[_0xb75d('0xd')][0x0][_0xb75d('0xe')];}logger['info']('['+[_0x2ef4b8[_0xb75d('0xf')]()]+'],\x20getAdminUser\x20crm',_0x1d3023);_0x35afe7(_0x1d3023);})[_0xb75d('0x10')](function(_0x1fcdf1){logger[_0xb75d('0x11')]('['+[_0x2ef4b8[_0xb75d('0xf')]()]+']',_0x1fcdf1[_0xb75d('0x12')]);_0x5df194(_0x1fcdf1[_0xb75d('0x12')]);});});}function getUser(_0x21b83c,_0x5b0862,_0x4df7b1,_0x25f6e8,_0x3bf689){return function(_0x347ee5){logger[_0xb75d('0x13')]('['+[_0x21b83c[_0xb75d('0xf')]()]+_0xb75d('0x14'),_0x347ee5);return new Promise(function(_0x1225c3,_0x4420c0){if(intUtil[_0xb75d('0x15')](_0x347ee5[_0xb75d('0x16')])){var _0x2b3e58={'method':_0xb75d('0x17'),'uri':_0x4df7b1+_0xb75d('0x18')+_0x347ee5[_0xb75d('0x16')]+'&'+_0x25f6e8+'&'+_0x3bf689,'auth':_0x5b0862,'json':!![]};logger['info']('['+[_0x21b83c[_0xb75d('0xf')]()]+'],\x20getUser\x20rp\x20obj',_0x2b3e58);return rp(_0x2b3e58)['then'](function(_0x99aae9){logger[_0xb75d('0x13')]('['+[_0x21b83c['toUpperCase']()]+_0xb75d('0x19'),_0x99aae9);if(_0x99aae9[_0xb75d('0xd')][_0xb75d('0xc')]>0x0&&String(_0x99aae9[_0xb75d('0xd')][0x0]['active'])===_0xb75d('0x1a')){_0x347ee5['userId']=_0x99aae9[_0xb75d('0xd')][0x0][_0xb75d('0xe')];}else{_0x347ee5['userId']=_0x347ee5['adminId'];_0x347ee5['userEmail']=_0x347ee5['adminEmail'];}logger[_0xb75d('0x13')]('['+[_0x21b83c[_0xb75d('0xf')]()]+'],\x20getUser\x20crm',_0x347ee5);_0x1225c3(_0x347ee5);})['catch'](function(_0x3168d2){logger[_0xb75d('0x11')]('['+[_0x21b83c[_0xb75d('0xf')]()]+']',_0x3168d2[_0xb75d('0x12')]);_0x4420c0(_0x3168d2['message']);});}else{logger[_0xb75d('0x13')]('['+[_0x21b83c['toUpperCase']()]+']\x20using\x20admin\x20profile');_0x347ee5[_0xb75d('0x1b')]=_0x347ee5[_0xb75d('0x1c')];_0x347ee5['userEmail']=_0x347ee5[_0xb75d('0x1d')];_0x1225c3(_0x347ee5);}});};}function createEndUser(_0x158c0b,_0x48814b,_0x1ed5bc,_0x39c04d,_0x2eb878){logger[_0xb75d('0x13')]('['+[_0x158c0b[_0xb75d('0xf')]()]+_0xb75d('0x1e'),_0x1ed5bc);return new Promise(function(_0xfacb91,_0x311434){var _0x25f8a1={'method':'POST','uri':_0x39c04d+'sys_user?'+_0x2eb878,'body':{'user_name':_0x1ed5bc['endUserNumber'],'roles':_0xb75d('0x1f'),'first_name':_0x1ed5bc[_0xb75d('0x20')],'active':_0xb75d('0x1a'),'date_format':_0xb75d('0x21'),'phone':_0x1ed5bc['endUserNumber']},'auth':_0x48814b,'json':!![]};return rp(_0x25f8a1)[_0xb75d('0xb')](function(_0x194059){logger[_0xb75d('0x13')]('['+[_0x158c0b[_0xb75d('0xf')]()]+_0xb75d('0x22'),_0x194059['result']);_0x1ed5bc[_0xb75d('0x23')]=_0x194059[_0xb75d('0xd')][_0xb75d('0xe')];_0xfacb91(_0x1ed5bc);})[_0xb75d('0x10')](function(_0x174aa7){logger[_0xb75d('0x11')]('['+[_0x158c0b['toUpperCase']()]+']',_0x174aa7[_0xb75d('0x12')]);_0x311434(_0x174aa7[_0xb75d('0x12')]);});});}function getEndUser(_0x199b45,_0x36ab48,_0x5650e2,_0xa2f18c,_0x19afc7){return function(_0x3cb075){logger[_0xb75d('0x13')]('['+[_0x199b45[_0xb75d('0xf')]()]+_0xb75d('0x24'),_0x3cb075);return new Promise(function(_0x1b4d64,_0x359f0a){var _0x37b911={'method':_0xb75d('0x17'),'uri':_0x5650e2+'sys_user?sysparm_query=phone%3D'+_0x3cb075['endUserNumber']+'&'+_0xa2f18c+'&'+_0x19afc7,'auth':_0x36ab48,'json':!![]};return rp(_0x37b911)[_0xb75d('0xb')](function(_0x5206cd){if(_0x5206cd['result'][_0xb75d('0xc')]>0x0){_0x3cb075[_0xb75d('0x23')]=_0x5206cd[_0xb75d('0xd')][0x0][_0xb75d('0xe')];logger[_0xb75d('0x13')]('['+[_0x199b45[_0xb75d('0xf')]()]+'],\x20getEndUser\x20crm',_0x3cb075);_0x1b4d64(_0x3cb075);}else{return createEndUser(_0x199b45,_0x36ab48,_0x3cb075,_0x5650e2,_0xa2f18c)[_0xb75d('0xb')](function(_0x1cd05d){logger[_0xb75d('0x13')]('['+[_0x199b45[_0xb75d('0xf')]()]+'],\x20createEndUser\x20crm',_0x1cd05d);_0x1b4d64(_0x1cd05d);});}})[_0xb75d('0x10')](function(_0x4d2a3e){logger[_0xb75d('0x11')]('['+[_0x199b45['toUpperCase']()]+']',_0x4d2a3e[_0xb75d('0x12')]);_0x359f0a(_0x4d2a3e[_0xb75d('0x12')]);});});};}function getCustomFields(_0x4191c2,_0x1a2884){var _0xbcdf98={};if(_0x4191c2[_0xb75d('0xc')]>0x0){_['forEach'](_0x4191c2,function(_0xc86ebf){if(_[_0xb75d('0x25')]([_0xb75d('0x26'),'picklist'],_0xc86ebf[_0xb75d('0x27')])&&_0xc86ebf[_0xb75d('0x28')]&&!_0xc86ebf['customField']){_0xbcdf98[_0xc86ebf[_0xb75d('0x28')]['toLowerCase']()]=_0xc86ebf['content'][_0xb75d('0x29')]();}else if(_[_0xb75d('0x25')]([_0xb75d('0x26'),_0xb75d('0x2a')],_0xc86ebf[_0xb75d('0x27')])&&_0xc86ebf[_0xb75d('0x2b')]&&_0xc86ebf['customField']){_0xbcdf98[_0xc86ebf[_0xb75d('0x2b')][_0xb75d('0x2c')]()]=_0xc86ebf[_0xb75d('0x2d')]['toString']();}else if(_0xc86ebf['type']===_0xb75d('0x2e')&&_0xc86ebf[_0xb75d('0x2f')]&&_0xc86ebf[_0xb75d('0x2b')]&&_0xc86ebf[_0xb75d('0x30')]){_0xbcdf98[_0xc86ebf['idField'][_0xb75d('0x2c')]()]=_0x1a2884[_0xc86ebf[_0xb75d('0x2f')]][_0xb75d('0x29')]();}else if(_0xc86ebf[_0xb75d('0x27')]==='customVariable'&&_0xc86ebf[_0xb75d('0x31')]&&_0xc86ebf[_0xb75d('0x31')]['name']&&_0xc86ebf[_0xb75d('0x2b')]&&_0xc86ebf['customField']){_0xbcdf98[_0xc86ebf[_0xb75d('0x2b')][_0xb75d('0x2c')]()]=_0x1a2884[_0xc86ebf['Variable']['name'][_0xb75d('0x2c')]()][_0xb75d('0x29')]();}});}return _0xbcdf98;}function getTicket(_0x1d7251,_0x44a487,_0x12bc52,_0x402f4b,_0x400452,_0x46502b){return function(_0x3b2e28){logger[_0xb75d('0x13')]('['+[_0x1d7251[_0xb75d('0xf')]()]+_0xb75d('0x32'),_0x3b2e28);return new Promise(function(_0x53380a,_0x52262f){var _0x4e3a06=_0x1d7251['toLowerCase']()===_0xb75d('0x33')?_0x3b2e28['userId']:_0x3b2e28[_0xb75d('0x23')];var _0x302060={'method':_0xb75d('0x34'),'uri':_0x12bc52+_0xb75d('0x35')+'?'+_0x46502b,'body':Object[_0xb75d('0x36')]({},{'active':_0xb75d('0x1a'),'caller_id':_0x4e3a06,'assigned_to':_0x3b2e28[_0xb75d('0x1b')],'short_description':intUtil['getString'](_0x402f4b['Subjects'],_0x400452,'\x20'),'description':intUtil[_0xb75d('0x37')](_0x402f4b[_0xb75d('0x38')],_0x400452,'\x0a')},getCustomFields(_0x402f4b['Fields'],_0x400452)),'auth':_0x44a487,'json':!![]};return rp(_0x302060)['then'](function(_0x2e000b){logger[_0xb75d('0x13')]('['+[_0x1d7251[_0xb75d('0xf')]()]+_0xb75d('0x39'),_0x2e000b[_0xb75d('0xd')]);_0x3b2e28[_0xb75d('0x3a')]=_0x2e000b[_0xb75d('0xd')][_0xb75d('0xe')];_0x3b2e28[_0xb75d('0x3b')]=_0x2e000b[_0xb75d('0xd')][_0xb75d('0x3c')];logger['info']('['+[_0x1d7251['toUpperCase']()]+_0xb75d('0x3d'),_0x3b2e28);_0x53380a(_0x3b2e28);})[_0xb75d('0x10')](function(_0x3bbe04){logger[_0xb75d('0x11')]('['+[_0x1d7251['toUpperCase']()]+']',_0x3bbe04['message']);_0x52262f(_0x3bbe04[_0xb75d('0x12')]);});});};}function createRemoteTag(_0x220acc,_0x231f5,_0xf631cf,_0x1aefb1){return new Promise(function(_0x2ebd0c,_0x1b9ba1){var _0x180b4a={'method':'POST','uri':_0xf631cf+'label'+'?'+_0x1aefb1,'body':{'short_description':_0x220acc,'global':!![],'active':!![],'name':_0x220acc},'auth':_0x231f5,'json':!![]};return rp(_0x180b4a)['then'](function(_0x60ce71){var _0x8c3ee3=_0x60ce71[_0xb75d('0xd')][_0xb75d('0xe')];_0x2ebd0c(_0x8c3ee3);});});}function getRemoteTag(_0x51cfde,_0x3a3bd2,_0x228ffc,_0x185cc8,_0x563131){return new Promise(function(_0x4afce5,_0x4c2160){var _0x2c948c={'method':_0xb75d('0x17'),'uri':_0x228ffc+_0xb75d('0x3e')+'?sysparm_query=name%3D'+_0x51cfde+'&'+_0x185cc8,'auth':_0x3a3bd2,'json':!![]};return rp(_0x2c948c)['then'](function(_0x243642){if(_0x243642[_0xb75d('0xd')]['length']>0x0){var _0x2cf80d=_0x243642[_0xb75d('0xd')][0x0][_0xb75d('0xe')];_0x4afce5(_0x2cf80d);}else{return createRemoteTag(_0x51cfde,_0x3a3bd2,_0x228ffc,_0x185cc8)[_0xb75d('0xb')](function(_0xfce9d2){_0x4afce5(_0xfce9d2);});}});});}function assignTagToIncident(_0x934aa0,_0x488417,_0x454776,_0x7839,_0x48fbfc){return new Promise(function(_0x449e77,_0x1d31dc){var _0x24b771={'method':_0xb75d('0x34'),'uri':_0x454776+_0xb75d('0x3f')+'?'+_0x48fbfc,'body':{'label':_0x934aa0,'table':'incident','id_type':_0xb75d('0x40'),'table_key':_0x7839[_0xb75d('0x3a')],'title':_0xb75d('0x41')+_0x7839['ticketNumber'],'id_display':_0x7839[_0xb75d('0x3b')]},'auth':_0x488417,'json':!![]};return rp(_0x24b771)[_0xb75d('0xb')](function(_0x510971){_0x449e77();})[_0xb75d('0x10')](function(){_0x449e77();});});}function manageTags(_0x3655cb,_0x10a3e8,_0x42d437,_0xae5f6f,_0x1ee779,_0x2e587c,_0x24eaaa){return new Promise(function(_0x5a2c71,_0x54a14d){var _0x5ec2dc=[];_0x10a3e8[_0xb75d('0x42')](function(_0x364357){_0x5ec2dc[_0xb75d('0x43')](getRemoteTag(_0x364357,_0x42d437,_0xae5f6f,_0x2e587c,_0x24eaaa));});return Promise[_0xb75d('0x44')](_0x5ec2dc)[_0xb75d('0xb')](function(_0x2372ae){if(_0x2372ae[_0xb75d('0xc')]){logger[_0xb75d('0x13')]('['+[_0x3655cb['toUpperCase']()]+']\x20arrayPromises:\x20IDs\x20in\x20table\x20label',_0x2372ae);var _0x328100=[];_0x2372ae[_0xb75d('0x42')](function(_0x481f49){_0x328100[_0xb75d('0x43')](assignTagToIncident(_0x481f49,_0x42d437,_0xae5f6f,_0x1ee779,_0x2e587c));});return Promise['all'](_0x328100)[_0xb75d('0xb')](function(){_0x5a2c71();})[_0xb75d('0x10')](function(){_0x5a2c71();});}else{_0x5a2c71();}});});}function getTags(_0x54cded,_0xa5200a,_0x1e8d5b,_0x2a769a,_0x4b5a64,_0x54e642){return function(_0x141882){return new Promise(function(_0x27d4de,_0x4d4815){var _0x4b60e6=[];var _0x19705b=_0x2a769a['Tags'];if(_0x19705b&&_0x19705b['length']>0x0){_0x4b60e6=_['map'](_0x19705b,'name');}if(_0x4b60e6[_0xb75d('0xc')]>0x0){return manageTags(_0x54cded,_0x4b60e6,_0xa5200a,_0x1e8d5b,_0x141882,_0x4b5a64,_0x54e642)['then'](function(){_0x27d4de(_0x141882);});}else{_0x27d4de(_0x141882);}});};}function emit(_0x51130c,_0x18a7df,_0x3815c7){var _0x3a7d15=_0xb75d('0x45')+_0xb75d('0x46')+_0xb75d('0x47')+'%255EORDERBYDESCnumber';var _0x2071e7={'uri':_0x51130c+_0xb75d('0x48')+_0x3815c7+_0x3a7d15};io['to'](util[_0xb75d('0x49')](_0xb75d('0x4a'),_0x18a7df))[_0xb75d('0x4b')](_0xb75d('0x4c'),_0x2071e7);}exports['cs']=function(_0xa62b0e,_0x31b463,_0x4faa73,_0x1ab112,_0x798ae0,_0x42ab3e,_0x34c76b,_0x2436c7){var _0x33ad9e={};var _0x578af6={'user':_0x42ab3e[_0xb75d('0x4d')],'pass':_0x42ab3e[_0xb75d('0x4e')]};var _0x506d0b=_0xb75d('0x4f');var _0xa2150a=_0xb75d('0x50');_0x42ab3e[_0xb75d('0x51')]=intUtil[_0xb75d('0x52')](_0x42ab3e[_0xb75d('0x51')]);_0x42ab3e[_0xb75d('0x53')]=intUtil[_0xb75d('0x52')](_0x42ab3e[_0xb75d('0x53')]);var _0x257de4=util['format'](_0xb75d('0x54'),_0x42ab3e[_0xb75d('0x51')]);_0x33ad9e[_0xb75d('0x16')]=!_['isNil'](_0x1ab112)?_0x1ab112[_0xb75d('0x55')]:null;_0x33ad9e[_0xb75d('0x1d')]=_0x42ab3e[_0xb75d('0x55')];_0x33ad9e['endUserNumber']=_0x2436c7[_0xb75d('0x2c')]()==='outbound'?_0x31b463[_0xb75d('0x56')]:_0x31b463[_0xb75d('0x57')];_0x33ad9e['callDirection']=_0x2436c7===_0xb75d('0x58')||_0x2436c7===_0xb75d('0x59')?'queue':'outbound';var _0x378d31=util[_0xb75d('0x49')](_0xb75d('0x5a'),_0x42ab3e[_0xb75d('0x53')],_0x31b463[_0xb75d('0x5b')],md5(_0x31b463['uniqueid']));if(_0x798ae0&&_0x798ae0[_0xb75d('0x5c')]){logger['info'](_0xb75d('0x5d'),_0xb75d('0x5e'));_0x31b463[_0xb75d('0x5f')]=_0x378d31;}else if(_0x34c76b&&_0x34c76b[_0xb75d('0x60')]&&_0x34c76b[_0xb75d('0x60')]!==_0xb75d('0x61')){logger[_0xb75d('0x13')](_0xb75d('0x62'),'Recording\x20is\x20enabled!');_0x31b463[_0xb75d('0x5f')]=_0x378d31;}else{_0x31b463[_0xb75d('0x5f')]='';}return getAdminUser(_0x2436c7,_0x578af6,_0x33ad9e,_0x257de4,_0xa2150a,_0x506d0b)[_0xb75d('0xb')](getUser(_0x2436c7,_0x578af6,_0x257de4,_0xa2150a,_0x506d0b))[_0xb75d('0xb')](getEndUser(_0x2436c7,_0x578af6,_0x257de4,_0xa2150a,_0x506d0b))[_0xb75d('0xb')](getTicket(_0x2436c7,_0x578af6,_0x257de4,_0x4faa73,_0x31b463,_0xa2150a))['then'](function(_0x121540){logger['info'](util['format']('The\x20ticket\x20ID\x20is:\x20%s',_0x121540[_0xb75d('0x3a')]));logger['info'](util[_0xb75d('0x49')](_0xb75d('0x63'),_0x2436c7));if(_0x2436c7!==_0xb75d('0x59')){logger['info']('['+[_0x2436c7[_0xb75d('0xf')]()]+']',_0xb75d('0x64'));emit(_0x42ab3e[_0xb75d('0x51')],_0x1ab112[_0xb75d('0x65')],_0x121540[_0xb75d('0x3a')]);}})[_0xb75d('0x10')](function(_0x14e07a){logger[_0xb75d('0x11')]('['+[_0x2436c7['toUpperCase']()]+_0xb75d('0x66'),util[_0xb75d('0x67')](_0x14e07a,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 91f0f4e..b0cfc23 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1724=['[OUTBOUND]','catch','toUpperCase','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','lastevent','lodash','request-promise','bluebird','md5','util','./util','../../../../config/logger','sugarcrm','redis','socket.io-emitter','Creating\x20new\x20ticket...','name','getString','Subjects','assigned_user_id','created_by','description','Descriptions','date_start','toISOString','replace','duration_hours','duration_minutes','parent_type','Contacts','direction','length','forEach','variableName','idField','JSON','stringify','Calls','format','apiKey','toString','base64','get_server_info','isNil','get_entry_list','Employees','INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200','user_name','then','entry_list','find','value','info','Agent\x20found!','name_value_list','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Agent\x20not\x20available,\x20using\x20the\x20admin\x20account!','resolve','user_id','Searching\x20enduser\x20with\x20phone','contacts.phone_home\x20=\x20\x22%s\x22','phone_home','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','set_entry','first_name','Caller\x20-\x20%s','Enduser\x20created.','debug','[HTTP]','merge','map','type','string','nameField','customField','toLowerCase','content','custom_fields','push','variable','customVariable','Variable','POST','login','username','PLAIN','xCALLY\x20Motion\x20integration','sessionID','Account\x20%d\x20is\x20not\x20valid','set_relationship','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','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','users','contacts','charAt','user:%s','trigger:browser:url','error','outbound','recordingFormat','none','destcalleridname','destcalleridnum','Outbound','version','%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(_0x2e34aa,_0x376684){var _0x295c9d=function(_0x1e454b){while(--_0x1e454b){_0x2e34aa['push'](_0x2e34aa['shift']());}};_0x295c9d(++_0x376684);}(_0x1724,0xff));var _0x4172=function(_0x1cfa0d,_0x4391f2){_0x1cfa0d=_0x1cfa0d-0x0;var _0xe33279=_0x1724[_0x1cfa0d];return _0xe33279;};'use strict';var _=require(_0x4172('0x0'));var rp=require(_0x4172('0x1'));var BPromise=require(_0x4172('0x2'));var md5=require(_0x4172('0x3'));var util=require(_0x4172('0x4'));var Redis=require('ioredis');var intUtil=require(_0x4172('0x5'));var config=require('../../../../config/environment');var logger=require(_0x4172('0x6'))(_0x4172('0x7'));config[_0x4172('0x8')]=_['defaults'](config[_0x4172('0x8')],{'host':'localhost','port':0x18eb});var io=require(_0x4172('0x9'))(new Redis(config[_0x4172('0x8')]));var def={'method':'POST','json':!![]};function emit(_0x5b40d7,_0x176527,_0x2332b0){io['to'](_0x5b40d7)['emit'](_0x176527,_0x2332b0);}function getTicket(_0x2bda4a,_0x188eef,_0x5e085b,_0x1623bc,_0x24b1b2,_0x52f264,_0x360e89,_0x239bcb){logger['info'](_0x4172('0xa'));var _0x1c4320=new Date();var _0x511417=[{'name':_0x4172('0xb'),'value':intUtil[_0x4172('0xc')](_0x1623bc[_0x4172('0xd')],_0x24b1b2,'\x20')},{'name':_0x4172('0xe'),'value':_0x188eef['id']},{'name':_0x4172('0xf'),'value':_0x188eef['id']},{'name':_0x4172('0x10'),'value':intUtil[_0x4172('0xc')](_0x1623bc[_0x4172('0x11')],_0x24b1b2,'\x0a')},{'name':_0x4172('0x12'),'value':_0x1c4320[_0x4172('0x13')]()['slice'](0x0,0x13)[_0x4172('0x14')]('T','\x20')},{'name':_0x4172('0x15'),'value':'0'},{'name':_0x4172('0x16'),'value':'15'},{'name':'parent_id','value':_0x5e085b['id']},{'name':_0x4172('0x17'),'value':_0x4172('0x18')},{'name':'parent_name','value':_0x5e085b[_0x4172('0xb')]},{'name':_0x4172('0x19'),'value':_0x239bcb}];if(_0x52f264[_0x4172('0x1a')]){_[_0x4172('0x1b')](_0x52f264,function(_0x1c31c6){if(_0x24b1b2[_0x1c31c6[_0x4172('0x1c')]]){_0x511417['push']({'name':_0x1c31c6[_0x4172('0x1d')],'value':_0x24b1b2[_0x1c31c6['variableName']]});}});}return request({'form':{'method':'set_entry','input_type':_0x4172('0x1e'),'response_type':_0x4172('0x1e'),'rest_data':JSON[_0x4172('0x1f')]({'session':_0x360e89['id'],'module_name':_0x4172('0x20'),'name_value_list':_0x511417})}});}function getAuth(_0x1ad114){return util[_0x4172('0x21')]('Basic\x20%s',new Buffer(_0x1ad114[_0x4172('0x22')]+':X')[_0x4172('0x23')](_0x4172('0x24')));}function getServerInfo(_0x31ea96){return request({'form':{'method':_0x4172('0x25'),'input_type':_0x4172('0x1e'),'response_type':_0x4172('0x1e'),'rest_data':JSON[_0x4172('0x1f')]({'session':_0x31ea96['id']})}});}function getUser(_0x48f397,_0x386c9d,_0x4bc3fc){if(!_[_0x4172('0x26')](_0x386c9d)){logger['info']('Getting\x20agent\x20with\x20name',_0x386c9d);return request({'form':{'method':_0x4172('0x27'),'input_type':_0x4172('0x1e'),'response_type':_0x4172('0x1e'),'rest_data':JSON['stringify']({'session':_0x4bc3fc['id'],'module_name':_0x4172('0x28'),'query':util['format'](_0x4172('0x29'),_0x386c9d),'order_by':'','offset':'0','select_fields':['id','name',_0x4172('0x2a')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0x4172('0x2b')](function(_0xde23ce){if(_0xde23ce[_0x4172('0x2c')]['length']){var _0xc0523c=_[_0x4172('0x2d')](_0xde23ce['entry_list'],function(_0x5a0582){return _0x5a0582['name_value_list'][_0x4172('0x2a')][_0x4172('0x2e')]===_0x386c9d;});if(_0xc0523c){logger[_0x4172('0x2f')](_0x4172('0x30'));return BPromise['resolve']({'id':_0xc0523c[_0x4172('0x31')]['id'][_0x4172('0x2e')],'name':_0xc0523c[_0x4172('0x31')][_0x4172('0xb')][_0x4172('0x2e')]});}}logger['info'](_0x4172('0x32'));return BPromise['resolve']({'id':_0x4bc3fc[_0x4172('0x31')]['user_id'][_0x4172('0x2e')],'name':_0x4bc3fc[_0x4172('0x31')]['user_name'][_0x4172('0x2e')]});});}else{logger['info'](_0x4172('0x33'));return BPromise[_0x4172('0x34')]({'id':_0x4bc3fc[_0x4172('0x31')][_0x4172('0x35')][_0x4172('0x2e')],'name':_0x4bc3fc[_0x4172('0x31')][_0x4172('0x2a')][_0x4172('0x2e')]});}}function getEndUser(_0x462dcb,_0x23bf7d,_0x12f55f,_0x57273c){logger['info'](_0x4172('0x36'),_0x12f55f);return request({'form':{'method':'get_entry_list','input_type':_0x4172('0x1e'),'response_type':'JSON','rest_data':JSON['stringify']({'session':_0x57273c['id'],'module_name':_0x4172('0x18'),'query':util[_0x4172('0x21')](_0x4172('0x37'),_0x12f55f),'order_by':'','offset':'0','select_fields':['id','name',_0x4172('0x38')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})['then'](function(_0x4ee8c4){if(_0x4ee8c4[_0x4172('0x2c')][_0x4172('0x1a')]){var _0x3a68e0=_['find'](_0x4ee8c4[_0x4172('0x2c')],function(_0x274f02){return _0x274f02[_0x4172('0x31')][_0x4172('0x38')][_0x4172('0x2e')]===_0x12f55f;});if(_0x3a68e0){logger[_0x4172('0x2f')](_0x4172('0x39'));return BPromise[_0x4172('0x34')]({'id':_0x3a68e0[_0x4172('0x31')]['id'][_0x4172('0x2e')],'name':_0x3a68e0['name_value_list']['name'][_0x4172('0x2e')],'phone':_0x3a68e0['name_value_list'][_0x4172('0x38')][_0x4172('0x2e')]});}}else{logger[_0x4172('0x2f')](_0x4172('0x3a'));return request({'form':{'method':_0x4172('0x3b'),'input_type':'JSON','response_type':_0x4172('0x1e'),'rest_data':JSON[_0x4172('0x1f')]({'session':_0x57273c['id'],'module_name':'Contacts','name_value_list':[{'name':_0x4172('0x3c'),'value':_0x23bf7d!=='<unknown>'?_0x23bf7d:util['format'](_0x4172('0x3d'),_0x12f55f)},{'name':_0x4172('0x38'),'value':_0x12f55f}]})}})[_0x4172('0x2b')](function(_0x486600){logger[_0x4172('0x2f')](_0x4172('0x3e'));return BPromise['resolve']({'id':_0x486600['id'],'name':_0x486600[_0x4172('0x2c')][_0x4172('0x3c')][_0x4172('0x2e')],'phone':_0x486600['entry_list']['phone_home'][_0x4172('0x2e')]});});}});}function request(_0xad4d20){logger[_0x4172('0x3f')](_0x4172('0x40'),JSON[_0x4172('0x1f')](_0xad4d20));return rp(_[_0x4172('0x41')](def,_0xad4d20));}function getTags(_0x257f03,_0xc3bf75){var _0x5c999b=[];if(_0x257f03&&_0x257f03[_0x4172('0x1a')]>0x0){_0x5c999b=_[_0x4172('0x42')](_0x257f03,_0xc3bf75);}return _0x5c999b;}function getCustomFields(_0x1851ec,_0x47bf4f){var _0x2543d7=[];var _0x1fd222={'custom_fields':[]};if(_0x1851ec['length']>0x0){_[_0x4172('0x1b')](_0x1851ec,function(_0x2d2dbf){if(_0x2d2dbf[_0x4172('0x43')]===_0x4172('0x44')&&_0x2d2dbf[_0x4172('0x45')]&&!_0x2d2dbf[_0x4172('0x46')]){_0x1fd222[_0x2d2dbf[_0x4172('0x45')][_0x4172('0x47')]()]=_0x2d2dbf[_0x4172('0x48')][_0x4172('0x23')]();}else if(_0x2d2dbf[_0x4172('0x43')]===_0x4172('0x44')&&_0x2d2dbf['idField']&&_0x2d2dbf[_0x4172('0x46')]){_0x1fd222[_0x4172('0x49')][_0x4172('0x4a')]({'id':_0x2d2dbf[_0x4172('0x1d')],'value':_0x2d2dbf['content'][_0x4172('0x23')]()});}else if(_0x2d2dbf[_0x4172('0x43')]===_0x4172('0x4b')&&_0x2d2dbf[_0x4172('0x1c')]&&_0x2d2dbf['idField']&&_0x2d2dbf[_0x4172('0x46')]){_0x47bf4f[_0x2d2dbf[_0x4172('0x1c')]]&&_0x1fd222[_0x4172('0x49')][_0x4172('0x4a')]({'id':_0x2d2dbf[_0x4172('0x1d')],'value':_0x47bf4f[_0x2d2dbf['variableName']][_0x4172('0x23')]()});}else if(_0x2d2dbf[_0x4172('0x43')]===_0x4172('0x4c')&&_0x2d2dbf['Variable']&&_0x2d2dbf[_0x4172('0x4d')]['name']&&_0x2d2dbf[_0x4172('0x1d')]&&_0x2d2dbf[_0x4172('0x46')]){_0x47bf4f[_0x2d2dbf[_0x4172('0x4d')][_0x4172('0xb')]['toLowerCase']()]&&_0x1fd222[_0x4172('0x49')]['push']({'id':_0x2d2dbf[_0x4172('0x1d')],'value':_0x47bf4f[_0x2d2dbf[_0x4172('0x4d')]['name']['toLowerCase']()]['toString']()});}});}return _0x1fd222;}function getConnection(_0x4a040f){return request({'method':_0x4172('0x4e'),'form':{'method':_0x4172('0x4f'),'input_type':'JSON','response_type':'JSON','rest_data':JSON[_0x4172('0x1f')]({'user_auth':{'user_name':_0x4a040f[_0x4172('0x50')],'password':_0x4a040f['password'],'encryption':_0x4172('0x51')},'application':_0x4172('0x52')})}})[_0x4172('0x2b')](function(_0x1756a2){var _0x4a1de4=_0x1756a2;if(_0x4a1de4['id']){def[_0x4172('0x53')]=_0x4a1de4['id'];return BPromise['resolve'](_0x4a1de4);}else{throw new Error(util[_0x4172('0x21')](_0x4172('0x54'),_0x4a040f['id']));}});}function setRelationship(_0x3ed34a,_0x466155,_0x5c2412,_0x3e3ce9){return request({'form':{'method':_0x4172('0x55'),'input_type':_0x4172('0x1e'),'response_type':'JSON','rest_data':JSON['stringify']({'session':_0x3ed34a['id'],'module_name':_0x4172('0x20'),'module_id':_0x5c2412['id'],'link_field_name':_0x3e3ce9,'related_ids':[_0x466155['id']],'name_value_list':[],'delete':0x0})}});}exports[_0x4172('0x56')]=function(_0x4f637c,_0x1b00c5,_0x511df3,_0x268176,_0x2fad01,_0x1f6a37){var _0x55c852,_0x2031ff,_0x3af08c,_0x5d652c;_0x1f6a37[_0x4172('0x57')]=intUtil[_0x4172('0x58')](_0x1f6a37['remoteUri']);_0x1f6a37['serverUrl']=intUtil['stripTrailingSlash'](_0x1f6a37[_0x4172('0x59')]);def[_0x4172('0x5a')]=util['format'](_0x4172('0x5b'),_0x1f6a37[_0x4172('0x57')]);if(_0x2fad01&&_0x2fad01[_0x4172('0x5c')]){logger[_0x4172('0x2f')](_0x4172('0x5d'),_0x4172('0x5e'));_0x1b00c5[_0x4172('0x5f')]=util[_0x4172('0x21')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x1f6a37[_0x4172('0x59')],_0x1b00c5['uniqueid'],md5(_0x1b00c5[_0x4172('0x60')]));}else{_0x1b00c5[_0x4172('0x5f')]='';}return getConnection(_0x1f6a37)[_0x4172('0x2b')](function(_0x2ad503){_0x5d652c=_0x2ad503;return getUser(_0x1f6a37,_0x268176[_0x4172('0xb')],_0x5d652c);})[_0x4172('0x2b')](function(_0x4cf9c7){_0x55c852=_0x4cf9c7;logger[_0x4172('0x2f')](_0x4172('0x61'),_0x55c852['id']);return getEndUser(_0x1f6a37,_0x1b00c5[_0x4172('0x62')],_0x1b00c5[_0x4172('0x63')],_0x5d652c);})['then'](function(_0x4b80d4){_0x2031ff=_0x4b80d4;logger['info'](_0x4172('0x64'),_0x2031ff['id']);return getTicket(_0x1f6a37,_0x55c852,_0x2031ff,_0x511df3,_0x1b00c5,_0x511df3[_0x4172('0x65')],_0x5d652c,_0x4172('0x66'));})[_0x4172('0x2b')](function(_0x5bd1e2){_0x3af08c=_0x5bd1e2;logger[_0x4172('0x2f')](_0x4172('0x67'));logger[_0x4172('0x2f')](_0x4172('0x68'),_0x3af08c['id']);return setRelationship(_0x5d652c,_0x55c852,_0x3af08c,_0x4172('0x69'));})['then'](function(){return setRelationship(_0x5d652c,_0x2031ff,_0x3af08c,_0x4172('0x6a'));})['then'](function(){return getServerInfo(_0x5d652c);})[_0x4172('0x2b')](function(_0xfeca7e){var _0x5637cd=parseInt(_0xfeca7e['version'][_0x4172('0x6b')](0x0));var _0x732818=util[_0x4172('0x21')]('%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s',_0x1f6a37['remoteUri'],_0x3af08c['id']);if(_0x5637cd>0x6){_0x732818=util[_0x4172('0x21')]('%s/#bwc/index.php?module=Calls&action=EditView&record=%s',_0x1f6a37[_0x4172('0x57')],_0x3af08c['id']);}logger[_0x4172('0x2f')]('[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util['format'](_0x4172('0x6c'),_0x268176[_0x4172('0xb')]),_0x4172('0x6d'),{'uri':_0x732818});})['catch'](function(_0x18205a){logger[_0x4172('0x6e')](_0x4172('0x5d'),JSON['stringify'](_0x18205a));});};exports[_0x4172('0x6f')]=function(_0x55d459,_0x1400f0,_0x37dead,_0x58379b,_0x20c490,_0x4405fb,_0x17295e){var _0x13a40d,_0x138485,_0x69f72b,_0x3a4ae8;_0x4405fb['remoteUri']=intUtil['stripTrailingSlash'](_0x4405fb[_0x4172('0x57')]);_0x4405fb[_0x4172('0x59')]=intUtil[_0x4172('0x58')](_0x4405fb[_0x4172('0x59')]);def[_0x4172('0x5a')]=util['format'](_0x4172('0x5b'),_0x4405fb[_0x4172('0x57')]);if(_0x17295e&&_0x17295e['recordingFormat']&&_0x17295e[_0x4172('0x70')]!==_0x4172('0x71')){logger[_0x4172('0x2f')]('[OUTBOUND]',_0x4172('0x5e'));_0x1400f0[_0x4172('0x5f')]=util[_0x4172('0x21')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x4405fb['serverUrl'],_0x1400f0[_0x4172('0x60')],md5(_0x1400f0[_0x4172('0x60')]));}return getConnection(_0x4405fb)[_0x4172('0x2b')](function(_0x2f86e1){_0x3a4ae8=_0x2f86e1;return getUser(_0x4405fb,_0x58379b['name'],_0x3a4ae8);})[_0x4172('0x2b')](function(_0x48622){_0x13a40d=_0x48622;logger[_0x4172('0x2f')](_0x4172('0x61'),_0x13a40d['id']);return getEndUser(_0x4405fb,_0x1400f0[_0x4172('0x72')],_0x1400f0[_0x4172('0x73')],_0x3a4ae8);})[_0x4172('0x2b')](function(_0x19d67f){_0x138485=_0x19d67f;logger['info']('The\x20Enduser\x20ID\x20is:',_0x138485['id']);return getTicket(_0x4405fb,_0x13a40d,_0x138485,_0x37dead,_0x1400f0,_0x37dead['Fields'],_0x3a4ae8,_0x4172('0x74'));})[_0x4172('0x2b')](function(_0x496f13){_0x69f72b=_0x496f13;logger[_0x4172('0x2f')](_0x4172('0x67'));logger['info']('The\x20Ticket\x20ID\x20is:',_0x69f72b['id']);return setRelationship(_0x3a4ae8,_0x13a40d,_0x69f72b,'users');})[_0x4172('0x2b')](function(){return setRelationship(_0x3a4ae8,_0x138485,_0x69f72b,_0x4172('0x6a'));})['then'](function(){return getServerInfo(_0x3a4ae8);})[_0x4172('0x2b')](function(_0x476ea){var _0x43847c=parseInt(_0x476ea[_0x4172('0x75')][_0x4172('0x6b')](0x0));var _0x58d1da=util[_0x4172('0x21')](_0x4172('0x76'),_0x4405fb[_0x4172('0x57')],_0x69f72b['id']);if(_0x43847c>0x6){_0x58d1da=util['format'](_0x4172('0x77'),_0x4405fb['remoteUri'],_0x69f72b['id']);}logger[_0x4172('0x2f')](_0x4172('0x78'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util['format'](_0x4172('0x6c'),_0x58379b['name']),_0x4172('0x6d'),{'uri':_0x58d1da});})[_0x4172('0x79')](function(_0x775848){logger[_0x4172('0x6e')](_0x4172('0x78'),JSON['stringify'](_0x775848));});};exports['unmanaged']=function(_0x4cd58c,_0x3d6d91,_0x44933a,_0x5119cc,_0x3a6538,_0x3b38c1){var _0x225f47,_0xd81214,_0x2ac738,_0x366747;_0x3b38c1[_0x4172('0x57')]=intUtil['stripTrailingSlash'](_0x3b38c1['remoteUri']);_0x3b38c1[_0x4172('0x59')]=intUtil['stripTrailingSlash'](_0x3b38c1[_0x4172('0x59')]);def['uri']=util[_0x4172('0x21')](_0x4172('0x5b'),_0x3b38c1[_0x4172('0x57')]);if(_0x3a6538&&_0x3a6538[_0x4172('0x5c')]){logger[_0x4172('0x2f')]('['+_0x3d6d91['lastevent'][_0x4172('0x7a')]()+']','Recording\x20is\x20enabled!');_0x3d6d91['recordingURL']=util[_0x4172('0x21')](_0x4172('0x7b'),_0x3b38c1[_0x4172('0x59')],_0x3d6d91[_0x4172('0x60')],md5(_0x3d6d91['uniqueid']));}else{_0x3d6d91[_0x4172('0x5f')]='';}return getConnection(_0x3b38c1)[_0x4172('0x2b')](function(_0x164c71){_0x366747=_0x164c71;if(!_[_0x4172('0x26')](_0x5119cc)){return getUser(_0x3b38c1,_0x5119cc[_0x4172('0xb')],_0x366747);}else{return getUser(_0x3b38c1,null,_0x366747);}})[_0x4172('0x2b')](function(_0x69f69b){_0x225f47=_0x69f69b;logger[_0x4172('0x2f')]('The\x20User\x20ID\x20is:',_0x225f47['id']);return getEndUser(_0x3b38c1,_0x3d6d91[_0x4172('0x62')],_0x3d6d91[_0x4172('0x63')],_0x366747);})[_0x4172('0x2b')](function(_0x11d448){_0xd81214=_0x11d448;logger[_0x4172('0x2f')](_0x4172('0x64'),_0xd81214['id']);return getTicket(_0x3b38c1,_0x225f47,_0xd81214,_0x44933a,_0x3d6d91,_0x44933a[_0x4172('0x65')],_0x366747,_0x4172('0x66'));})['then'](function(_0xe87c4c){_0x2ac738=_0xe87c4c;logger[_0x4172('0x2f')](_0x4172('0x67'));logger['info'](_0x4172('0x68'),_0x2ac738['id']);return setRelationship(_0x366747,_0x225f47,_0x2ac738,_0x4172('0x69'));})[_0x4172('0x2b')](function(){return setRelationship(_0x366747,_0xd81214,_0x2ac738,'contacts');})[_0x4172('0x2b')](function(){return getServerInfo(_0x366747);})[_0x4172('0x79')](function(_0x4895ca){logger[_0x4172('0x6e')]('['+_0x3d6d91[_0x4172('0x7c')][_0x4172('0x7a')]()+']',JSON[_0x4172('0x1f')](_0x4895ca));});};
\ No newline at end of file
+var _0x9ade=['replace','duration_hours','duration_minutes','parent_id','parent_type','Contacts','direction','length','variableName','JSON','stringify','Calls','format','apiKey','toString','base64','get_server_info','isNil','info','Getting\x20agent\x20with\x20name','get_entry_list','Employees','INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200','user_name','then','entry_list','find','name_value_list','value','resolve','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','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','first_name','<unknown>','Caller\x20-\x20%s','Enduser\x20created.','debug','[HTTP]','merge','map','forEach','type','nameField','customField','content','idField','custom_fields','push','variable','customVariable','Variable','toLowerCase','username','xCALLY\x20Motion\x20integration','sessionID','set_relationship','queue','remoteUri','stripTrailingSlash','serverUrl','uri','%s/service/v4_1/rest.php','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','The\x20User\x20ID\x20is:','calleridnum','Fields','Inbound','users','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','catch','error','recordingFormat','[OUTBOUND]','destcalleridname','destcalleridnum','The\x20Enduser\x20ID\x20is:','Outbound','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','version','charAt','%s/#bwc/index.php?module=Calls&action=EditView&record=%s','unmanaged','lastevent','toUpperCase','contacts','request-promise','bluebird','md5','util','ioredis','./util','../../../../config/environment','sugarcrm','defaults','localhost','socket.io-emitter','POST','emit','Creating\x20new\x20ticket...','name','getString','Subjects','assigned_user_id','created_by','Descriptions','date_start'];(function(_0x13f2ec,_0x407206){var _0x389ca9=function(_0x43d7d6){while(--_0x43d7d6){_0x13f2ec['push'](_0x13f2ec['shift']());}};_0x389ca9(++_0x407206);}(_0x9ade,0x1cb));var _0xe9ad=function(_0x567ef4,_0x10a870){_0x567ef4=_0x567ef4-0x0;var _0x481cd6=_0x9ade[_0x567ef4];return _0x481cd6;};'use strict';var _=require('lodash');var rp=require(_0xe9ad('0x0'));var BPromise=require(_0xe9ad('0x1'));var md5=require(_0xe9ad('0x2'));var util=require(_0xe9ad('0x3'));var Redis=require(_0xe9ad('0x4'));var intUtil=require(_0xe9ad('0x5'));var config=require(_0xe9ad('0x6'));var logger=require('../../../../config/logger')(_0xe9ad('0x7'));config['redis']=_[_0xe9ad('0x8')](config['redis'],{'host':_0xe9ad('0x9'),'port':0x18eb});var io=require(_0xe9ad('0xa'))(new Redis(config['redis']));var def={'method':_0xe9ad('0xb'),'json':!![]};function emit(_0x5027f7,_0x595f62,_0x17579d){io['to'](_0x5027f7)[_0xe9ad('0xc')](_0x595f62,_0x17579d);}function getTicket(_0x3b12b9,_0x9560c,_0x5859f6,_0x3c7cbb,_0x4ecafb,_0x243295,_0x7d3033,_0x312eed){logger['info'](_0xe9ad('0xd'));var _0x29de7b=new Date();var _0x22c573=[{'name':_0xe9ad('0xe'),'value':intUtil[_0xe9ad('0xf')](_0x3c7cbb[_0xe9ad('0x10')],_0x4ecafb,'\x20')},{'name':_0xe9ad('0x11'),'value':_0x9560c['id']},{'name':_0xe9ad('0x12'),'value':_0x9560c['id']},{'name':'description','value':intUtil[_0xe9ad('0xf')](_0x3c7cbb[_0xe9ad('0x13')],_0x4ecafb,'\x0a')},{'name':_0xe9ad('0x14'),'value':_0x29de7b['toISOString']()['slice'](0x0,0x13)[_0xe9ad('0x15')]('T','\x20')},{'name':_0xe9ad('0x16'),'value':'0'},{'name':_0xe9ad('0x17'),'value':'15'},{'name':_0xe9ad('0x18'),'value':_0x5859f6['id']},{'name':_0xe9ad('0x19'),'value':_0xe9ad('0x1a')},{'name':'parent_name','value':_0x5859f6['name']},{'name':_0xe9ad('0x1b'),'value':_0x312eed}];if(_0x243295[_0xe9ad('0x1c')]){_['forEach'](_0x243295,function(_0x9702db){if(_0x4ecafb[_0x9702db[_0xe9ad('0x1d')]]){_0x22c573['push']({'name':_0x9702db['idField'],'value':_0x4ecafb[_0x9702db[_0xe9ad('0x1d')]]});}});}return request({'form':{'method':'set_entry','input_type':'JSON','response_type':_0xe9ad('0x1e'),'rest_data':JSON[_0xe9ad('0x1f')]({'session':_0x7d3033['id'],'module_name':_0xe9ad('0x20'),'name_value_list':_0x22c573})}});}function getAuth(_0x6cb287){return util[_0xe9ad('0x21')]('Basic\x20%s',new Buffer(_0x6cb287[_0xe9ad('0x22')]+':X')[_0xe9ad('0x23')](_0xe9ad('0x24')));}function getServerInfo(_0xb0ab58){return request({'form':{'method':_0xe9ad('0x25'),'input_type':_0xe9ad('0x1e'),'response_type':_0xe9ad('0x1e'),'rest_data':JSON['stringify']({'session':_0xb0ab58['id']})}});}function getUser(_0x1bfc8b,_0x35b22c,_0x209a33){if(!_[_0xe9ad('0x26')](_0x35b22c)){logger[_0xe9ad('0x27')](_0xe9ad('0x28'),_0x35b22c);return request({'form':{'method':_0xe9ad('0x29'),'input_type':_0xe9ad('0x1e'),'response_type':_0xe9ad('0x1e'),'rest_data':JSON[_0xe9ad('0x1f')]({'session':_0x209a33['id'],'module_name':_0xe9ad('0x2a'),'query':util[_0xe9ad('0x21')](_0xe9ad('0x2b'),_0x35b22c),'order_by':'','offset':'0','select_fields':['id',_0xe9ad('0xe'),_0xe9ad('0x2c')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0xe9ad('0x2d')](function(_0x22bb83){if(_0x22bb83[_0xe9ad('0x2e')][_0xe9ad('0x1c')]){var _0x1efaab=_[_0xe9ad('0x2f')](_0x22bb83[_0xe9ad('0x2e')],function(_0x50cef5){return _0x50cef5[_0xe9ad('0x30')]['user_name'][_0xe9ad('0x31')]===_0x35b22c;});if(_0x1efaab){logger[_0xe9ad('0x27')]('Agent\x20found!');return BPromise[_0xe9ad('0x32')]({'id':_0x1efaab['name_value_list']['id']['value'],'name':_0x1efaab[_0xe9ad('0x30')][_0xe9ad('0xe')][_0xe9ad('0x31')]});}}logger['info'](_0xe9ad('0x33'));return BPromise['resolve']({'id':_0x209a33[_0xe9ad('0x30')][_0xe9ad('0x34')]['value'],'name':_0x209a33[_0xe9ad('0x30')]['user_name']['value']});});}else{logger[_0xe9ad('0x27')](_0xe9ad('0x35'));return BPromise['resolve']({'id':_0x209a33[_0xe9ad('0x30')][_0xe9ad('0x34')][_0xe9ad('0x31')],'name':_0x209a33[_0xe9ad('0x30')]['user_name'][_0xe9ad('0x31')]});}}function getEndUser(_0x36e04e,_0x2c8058,_0x363b26,_0x28110e){logger['info'](_0xe9ad('0x36'),_0x363b26);return request({'form':{'method':_0xe9ad('0x29'),'input_type':_0xe9ad('0x1e'),'response_type':'JSON','rest_data':JSON[_0xe9ad('0x1f')]({'session':_0x28110e['id'],'module_name':_0xe9ad('0x1a'),'query':util[_0xe9ad('0x21')](_0xe9ad('0x37'),_0x363b26),'order_by':'','offset':'0','select_fields':['id',_0xe9ad('0xe'),_0xe9ad('0x38')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0xe9ad('0x2d')](function(_0x4c3ce8){if(_0x4c3ce8['entry_list'][_0xe9ad('0x1c')]){var _0x146b86=_[_0xe9ad('0x2f')](_0x4c3ce8[_0xe9ad('0x2e')],function(_0xec65ce){return _0xec65ce[_0xe9ad('0x30')][_0xe9ad('0x38')]['value']===_0x363b26;});if(_0x146b86){logger['info'](_0xe9ad('0x39'));return BPromise['resolve']({'id':_0x146b86[_0xe9ad('0x30')]['id']['value'],'name':_0x146b86[_0xe9ad('0x30')][_0xe9ad('0xe')][_0xe9ad('0x31')],'phone':_0x146b86[_0xe9ad('0x30')][_0xe9ad('0x38')][_0xe9ad('0x31')]});}}else{logger['info'](_0xe9ad('0x3a'));return request({'form':{'method':'set_entry','input_type':_0xe9ad('0x1e'),'response_type':_0xe9ad('0x1e'),'rest_data':JSON[_0xe9ad('0x1f')]({'session':_0x28110e['id'],'module_name':_0xe9ad('0x1a'),'name_value_list':[{'name':_0xe9ad('0x3b'),'value':_0x2c8058!==_0xe9ad('0x3c')?_0x2c8058:util[_0xe9ad('0x21')](_0xe9ad('0x3d'),_0x363b26)},{'name':_0xe9ad('0x38'),'value':_0x363b26}]})}})['then'](function(_0x4b8ae8){logger[_0xe9ad('0x27')](_0xe9ad('0x3e'));return BPromise[_0xe9ad('0x32')]({'id':_0x4b8ae8['id'],'name':_0x4b8ae8[_0xe9ad('0x2e')]['first_name'][_0xe9ad('0x31')],'phone':_0x4b8ae8[_0xe9ad('0x2e')][_0xe9ad('0x38')][_0xe9ad('0x31')]});});}});}function request(_0x5667eb){logger[_0xe9ad('0x3f')](_0xe9ad('0x40'),JSON['stringify'](_0x5667eb));return rp(_[_0xe9ad('0x41')](def,_0x5667eb));}function getTags(_0x557b34,_0x702b6){var _0x2ae915=[];if(_0x557b34&&_0x557b34[_0xe9ad('0x1c')]>0x0){_0x2ae915=_[_0xe9ad('0x42')](_0x557b34,_0x702b6);}return _0x2ae915;}function getCustomFields(_0x2072aa,_0x102a71){var _0x4a3b6f=[];var _0x8cbc0a={'custom_fields':[]};if(_0x2072aa[_0xe9ad('0x1c')]>0x0){_[_0xe9ad('0x43')](_0x2072aa,function(_0x39283a){if(_0x39283a[_0xe9ad('0x44')]==='string'&&_0x39283a[_0xe9ad('0x45')]&&!_0x39283a[_0xe9ad('0x46')]){_0x8cbc0a[_0x39283a[_0xe9ad('0x45')]['toLowerCase']()]=_0x39283a[_0xe9ad('0x47')][_0xe9ad('0x23')]();}else if(_0x39283a[_0xe9ad('0x44')]==='string'&&_0x39283a[_0xe9ad('0x48')]&&_0x39283a[_0xe9ad('0x46')]){_0x8cbc0a[_0xe9ad('0x49')][_0xe9ad('0x4a')]({'id':_0x39283a['idField'],'value':_0x39283a[_0xe9ad('0x47')]['toString']()});}else if(_0x39283a[_0xe9ad('0x44')]===_0xe9ad('0x4b')&&_0x39283a[_0xe9ad('0x1d')]&&_0x39283a[_0xe9ad('0x48')]&&_0x39283a[_0xe9ad('0x46')]){_0x102a71[_0x39283a['variableName']]&&_0x8cbc0a[_0xe9ad('0x49')][_0xe9ad('0x4a')]({'id':_0x39283a[_0xe9ad('0x48')],'value':_0x102a71[_0x39283a[_0xe9ad('0x1d')]][_0xe9ad('0x23')]()});}else if(_0x39283a['type']===_0xe9ad('0x4c')&&_0x39283a['Variable']&&_0x39283a[_0xe9ad('0x4d')]['name']&&_0x39283a[_0xe9ad('0x48')]&&_0x39283a[_0xe9ad('0x46')]){_0x102a71[_0x39283a[_0xe9ad('0x4d')][_0xe9ad('0xe')][_0xe9ad('0x4e')]()]&&_0x8cbc0a[_0xe9ad('0x49')]['push']({'id':_0x39283a[_0xe9ad('0x48')],'value':_0x102a71[_0x39283a[_0xe9ad('0x4d')][_0xe9ad('0xe')]['toLowerCase']()][_0xe9ad('0x23')]()});}});}return _0x8cbc0a;}function getConnection(_0x211b56){return request({'method':'POST','form':{'method':'login','input_type':_0xe9ad('0x1e'),'response_type':'JSON','rest_data':JSON[_0xe9ad('0x1f')]({'user_auth':{'user_name':_0x211b56[_0xe9ad('0x4f')],'password':_0x211b56['password'],'encryption':'PLAIN'},'application':_0xe9ad('0x50')})}})[_0xe9ad('0x2d')](function(_0x4264da){var _0x280c3e=_0x4264da;if(_0x280c3e['id']){def[_0xe9ad('0x51')]=_0x280c3e['id'];return BPromise['resolve'](_0x280c3e);}else{throw new Error(util['format']('Account\x20%d\x20is\x20not\x20valid',_0x211b56['id']));}});}function setRelationship(_0x36871a,_0x4ef4e8,_0x5d040f,_0x4f1cb8){return request({'form':{'method':_0xe9ad('0x52'),'input_type':_0xe9ad('0x1e'),'response_type':_0xe9ad('0x1e'),'rest_data':JSON[_0xe9ad('0x1f')]({'session':_0x36871a['id'],'module_name':_0xe9ad('0x20'),'module_id':_0x5d040f['id'],'link_field_name':_0x4f1cb8,'related_ids':[_0x4ef4e8['id']],'name_value_list':[],'delete':0x0})}});}exports[_0xe9ad('0x53')]=function(_0x1f4b4a,_0x28d241,_0xcd637d,_0x3793f4,_0x12337a,_0xc910aa){var _0x49e85f,_0x4977c3,_0x589383,_0xc89318;_0xc910aa[_0xe9ad('0x54')]=intUtil[_0xe9ad('0x55')](_0xc910aa[_0xe9ad('0x54')]);_0xc910aa[_0xe9ad('0x56')]=intUtil[_0xe9ad('0x55')](_0xc910aa[_0xe9ad('0x56')]);def[_0xe9ad('0x57')]=util[_0xe9ad('0x21')](_0xe9ad('0x58'),_0xc910aa['remoteUri']);if(_0x12337a&&_0x12337a[_0xe9ad('0x59')]){logger['info'](_0xe9ad('0x5a'),_0xe9ad('0x5b'));_0x28d241[_0xe9ad('0x5c')]=util['format'](_0xe9ad('0x5d'),_0xc910aa[_0xe9ad('0x56')],_0x28d241[_0xe9ad('0x5e')],md5(_0x28d241[_0xe9ad('0x5e')]));}else{_0x28d241['recordingURL']='';}return getConnection(_0xc910aa)[_0xe9ad('0x2d')](function(_0x1c7877){_0xc89318=_0x1c7877;return getUser(_0xc910aa,_0x3793f4[_0xe9ad('0xe')],_0xc89318);})['then'](function(_0x48d1b0){_0x49e85f=_0x48d1b0;logger[_0xe9ad('0x27')](_0xe9ad('0x5f'),_0x49e85f['id']);return getEndUser(_0xc910aa,_0x28d241['calleridname'],_0x28d241[_0xe9ad('0x60')],_0xc89318);})[_0xe9ad('0x2d')](function(_0x5dbc17){_0x4977c3=_0x5dbc17;logger[_0xe9ad('0x27')]('The\x20Enduser\x20ID\x20is:',_0x4977c3['id']);return getTicket(_0xc910aa,_0x49e85f,_0x4977c3,_0xcd637d,_0x28d241,_0xcd637d[_0xe9ad('0x61')],_0xc89318,_0xe9ad('0x62'));})[_0xe9ad('0x2d')](function(_0xd7dc77){_0x589383=_0xd7dc77;logger['info']('Ticket\x20created!');logger[_0xe9ad('0x27')]('The\x20Ticket\x20ID\x20is:',_0x589383['id']);return setRelationship(_0xc89318,_0x49e85f,_0x589383,_0xe9ad('0x63'));})[_0xe9ad('0x2d')](function(){return setRelationship(_0xc89318,_0x4977c3,_0x589383,'contacts');})[_0xe9ad('0x2d')](function(){return getServerInfo(_0xc89318);})[_0xe9ad('0x2d')](function(_0x21a720){var _0x56dc7e=parseInt(_0x21a720['version']['charAt'](0x0));var _0x2bbf3b=util['format']('%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s',_0xc910aa[_0xe9ad('0x54')],_0x589383['id']);if(_0x56dc7e>0x6){_0x2bbf3b=util[_0xe9ad('0x21')]('%s/#bwc/index.php?module=Calls&action=EditView&record=%s',_0xc910aa[_0xe9ad('0x54')],_0x589383['id']);}logger[_0xe9ad('0x27')](_0xe9ad('0x5a'),_0xe9ad('0x64'));emit(util['format'](_0xe9ad('0x65'),_0x3793f4['name']),_0xe9ad('0x66'),{'uri':_0x2bbf3b});})[_0xe9ad('0x67')](function(_0x1a7f6c){logger[_0xe9ad('0x68')](_0xe9ad('0x5a'),JSON[_0xe9ad('0x1f')](_0x1a7f6c));});};exports['outbound']=function(_0x38c818,_0x30eb2b,_0x1a2a09,_0x345b08,_0x37cfd0,_0x57b5f9,_0xc8cca1){var _0x156afe,_0x1c871c,_0x2f9d1c,_0x3f4f3a;_0x57b5f9[_0xe9ad('0x54')]=intUtil[_0xe9ad('0x55')](_0x57b5f9['remoteUri']);_0x57b5f9['serverUrl']=intUtil[_0xe9ad('0x55')](_0x57b5f9[_0xe9ad('0x56')]);def['uri']=util[_0xe9ad('0x21')](_0xe9ad('0x58'),_0x57b5f9[_0xe9ad('0x54')]);if(_0xc8cca1&&_0xc8cca1['recordingFormat']&&_0xc8cca1[_0xe9ad('0x69')]!=='none'){logger[_0xe9ad('0x27')](_0xe9ad('0x6a'),'Recording\x20is\x20enabled!');_0x30eb2b[_0xe9ad('0x5c')]=util[_0xe9ad('0x21')](_0xe9ad('0x5d'),_0x57b5f9[_0xe9ad('0x56')],_0x30eb2b['uniqueid'],md5(_0x30eb2b[_0xe9ad('0x5e')]));}return getConnection(_0x57b5f9)[_0xe9ad('0x2d')](function(_0x48c605){_0x3f4f3a=_0x48c605;return getUser(_0x57b5f9,_0x345b08['name'],_0x3f4f3a);})[_0xe9ad('0x2d')](function(_0xc98959){_0x156afe=_0xc98959;logger[_0xe9ad('0x27')](_0xe9ad('0x5f'),_0x156afe['id']);return getEndUser(_0x57b5f9,_0x30eb2b[_0xe9ad('0x6b')],_0x30eb2b[_0xe9ad('0x6c')],_0x3f4f3a);})[_0xe9ad('0x2d')](function(_0x3f6acf){_0x1c871c=_0x3f6acf;logger[_0xe9ad('0x27')](_0xe9ad('0x6d'),_0x1c871c['id']);return getTicket(_0x57b5f9,_0x156afe,_0x1c871c,_0x1a2a09,_0x30eb2b,_0x1a2a09['Fields'],_0x3f4f3a,_0xe9ad('0x6e'));})[_0xe9ad('0x2d')](function(_0x4a5d46){_0x2f9d1c=_0x4a5d46;logger[_0xe9ad('0x27')](_0xe9ad('0x6f'));logger['info'](_0xe9ad('0x70'),_0x2f9d1c['id']);return setRelationship(_0x3f4f3a,_0x156afe,_0x2f9d1c,_0xe9ad('0x63'));})[_0xe9ad('0x2d')](function(){return setRelationship(_0x3f4f3a,_0x1c871c,_0x2f9d1c,'contacts');})[_0xe9ad('0x2d')](function(){return getServerInfo(_0x3f4f3a);})[_0xe9ad('0x2d')](function(_0x2550cf){var _0x25252d=parseInt(_0x2550cf[_0xe9ad('0x71')][_0xe9ad('0x72')](0x0));var _0x2fad65=util[_0xe9ad('0x21')]('%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s',_0x57b5f9[_0xe9ad('0x54')],_0x2f9d1c['id']);if(_0x25252d>0x6){_0x2fad65=util[_0xe9ad('0x21')](_0xe9ad('0x73'),_0x57b5f9[_0xe9ad('0x54')],_0x2f9d1c['id']);}logger['info'](_0xe9ad('0x6a'),_0xe9ad('0x64'));emit(util[_0xe9ad('0x21')](_0xe9ad('0x65'),_0x345b08['name']),'trigger:browser:url',{'uri':_0x2fad65});})[_0xe9ad('0x67')](function(_0x34cc55){logger[_0xe9ad('0x68')](_0xe9ad('0x6a'),JSON[_0xe9ad('0x1f')](_0x34cc55));});};exports[_0xe9ad('0x74')]=function(_0x4fbd3b,_0x2cd091,_0x460f1f,_0x24f382,_0x2ebf7b,_0x12db35){var _0xdb143b,_0x4b1e43,_0x42ad67,_0x5dc677;_0x12db35['remoteUri']=intUtil['stripTrailingSlash'](_0x12db35['remoteUri']);_0x12db35[_0xe9ad('0x56')]=intUtil['stripTrailingSlash'](_0x12db35[_0xe9ad('0x56')]);def[_0xe9ad('0x57')]=util[_0xe9ad('0x21')](_0xe9ad('0x58'),_0x12db35['remoteUri']);if(_0x2ebf7b&&_0x2ebf7b[_0xe9ad('0x59')]){logger['info']('['+_0x2cd091[_0xe9ad('0x75')][_0xe9ad('0x76')]()+']',_0xe9ad('0x5b'));_0x2cd091[_0xe9ad('0x5c')]=util[_0xe9ad('0x21')](_0xe9ad('0x5d'),_0x12db35[_0xe9ad('0x56')],_0x2cd091['uniqueid'],md5(_0x2cd091['uniqueid']));}else{_0x2cd091[_0xe9ad('0x5c')]='';}return getConnection(_0x12db35)[_0xe9ad('0x2d')](function(_0x925632){_0x5dc677=_0x925632;if(!_['isNil'](_0x24f382)){return getUser(_0x12db35,_0x24f382[_0xe9ad('0xe')],_0x5dc677);}else{return getUser(_0x12db35,null,_0x5dc677);}})[_0xe9ad('0x2d')](function(_0x34b99b){_0xdb143b=_0x34b99b;logger[_0xe9ad('0x27')](_0xe9ad('0x5f'),_0xdb143b['id']);return getEndUser(_0x12db35,_0x2cd091['calleridname'],_0x2cd091[_0xe9ad('0x60')],_0x5dc677);})[_0xe9ad('0x2d')](function(_0x425fe6){_0x4b1e43=_0x425fe6;logger[_0xe9ad('0x27')]('The\x20Enduser\x20ID\x20is:',_0x4b1e43['id']);return getTicket(_0x12db35,_0xdb143b,_0x4b1e43,_0x460f1f,_0x2cd091,_0x460f1f[_0xe9ad('0x61')],_0x5dc677,_0xe9ad('0x62'));})['then'](function(_0x30225e){_0x42ad67=_0x30225e;logger[_0xe9ad('0x27')](_0xe9ad('0x6f'));logger[_0xe9ad('0x27')](_0xe9ad('0x70'),_0x42ad67['id']);return setRelationship(_0x5dc677,_0xdb143b,_0x42ad67,_0xe9ad('0x63'));})['then'](function(){return setRelationship(_0x5dc677,_0x4b1e43,_0x42ad67,_0xe9ad('0x77'));})['then'](function(){return getServerInfo(_0x5dc677);})[_0xe9ad('0x67')](function(_0x1d8a2e){logger[_0xe9ad('0x68')]('['+_0x2cd091[_0xe9ad('0x75')]['toUpperCase']()+']',JSON[_0xe9ad('0x1f')](_0x1d8a2e));});};
\ No newline at end of file
index 36abb73..e601941 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f09=['isNil','test','lodash','getString','length','sortBy','type','string','push','content','variable','variableName','customVariable','Variable','name','toLowerCase','keyValue','keyType','key','format','%s:\x20%s','keyContent','stripTrailingSlash','slice','substring','lastIndexOf','validateEmail'];(function(_0x2d9fdc,_0x5d18cd){var _0x39d84b=function(_0x1e0951){while(--_0x1e0951){_0x2d9fdc['push'](_0x2d9fdc['shift']());}};_0x39d84b(++_0x5d18cd);}(_0x5f09,0xf5));var _0x95f0=function(_0x3fc9f3,_0x3457c3){_0x3fc9f3=_0x3fc9f3-0x0;var _0x13eb31=_0x5f09[_0x3fc9f3];return _0x13eb31;};'use strict';var _=require(_0x95f0('0x0'));var util=require('util');exports[_0x95f0('0x1')]=function(_0x4adbb4,_0x396631,_0x59e61c){var _0x2718e3=[];if(_0x4adbb4[_0x95f0('0x2')]>0x0){var _0x40e743=_[_0x95f0('0x3')](_0x4adbb4,['id']);for(var _0x1fe803=0x0;_0x1fe803<_0x40e743[_0x95f0('0x2')];_0x1fe803++){var _0x5def1f=_0x40e743[_0x1fe803];if(_0x5def1f[_0x95f0('0x4')]===_0x95f0('0x5')){_0x2718e3[_0x95f0('0x6')](_0x5def1f[_0x95f0('0x7')]);}else if(_0x5def1f[_0x95f0('0x4')]===_0x95f0('0x8')&&_0x5def1f[_0x95f0('0x9')]){_0x396631[_0x5def1f['variableName']]&&_0x2718e3[_0x95f0('0x6')](_0x396631[_0x5def1f['variableName']]['toString']());}else if(_0x5def1f[_0x95f0('0x4')]===_0x95f0('0xa')&&_0x5def1f['Variable']&&_0x5def1f['Variable']['name']){_0x396631[_0x5def1f[_0x95f0('0xb')][_0x95f0('0xc')]['toLowerCase']()]&&_0x2718e3['push'](_0x396631[_0x5def1f[_0x95f0('0xb')][_0x95f0('0xc')][_0x95f0('0xd')]()]['toString']());}else if(_0x5def1f[_0x95f0('0x4')]===_0x95f0('0xe')){if(_0x5def1f[_0x95f0('0xf')]==='string'&&_0x5def1f[_0x95f0('0x10')]){_0x2718e3[_0x95f0('0x6')](util[_0x95f0('0x11')](_0x95f0('0x12'),_0x5def1f[_0x95f0('0x10')],_0x5def1f[_0x95f0('0x13')]));}else if(_0x5def1f[_0x95f0('0xf')]===_0x95f0('0x8')&&_0x5def1f[_0x95f0('0x9')]&&_0x5def1f[_0x95f0('0x10')]){_0x396631[_0x5def1f[_0x95f0('0x9')]]&&_0x2718e3[_0x95f0('0x6')](util[_0x95f0('0x11')](_0x95f0('0x12'),_0x5def1f[_0x95f0('0x10')],_0x396631[_0x5def1f['variableName']]));}else if(_0x5def1f[_0x95f0('0xf')]===_0x95f0('0xa')&&_0x5def1f[_0x95f0('0xb')]&&_0x5def1f['Variable'][_0x95f0('0xc')]&&_0x5def1f['key']){_0x396631[_0x5def1f[_0x95f0('0xb')][_0x95f0('0xc')][_0x95f0('0xd')]()]&&_0x2718e3[_0x95f0('0x6')](util[_0x95f0('0x11')](_0x95f0('0x12'),_0x5def1f['key'],_0x396631[_0x5def1f[_0x95f0('0xb')]['name']['toLowerCase']()]));}}}}return _0x2718e3['join'](_0x59e61c);};exports[_0x95f0('0x14')]=function(_0x5b4d40){var _0x4f48b2=_0x5b4d40[_0x95f0('0x15')](-0x1);if(_0x4f48b2==='/'){_0x5b4d40=_0x5b4d40[_0x95f0('0x16')](0x0,_0x5b4d40[_0x95f0('0x17')](_0x4f48b2));}return _0x5b4d40;};exports[_0x95f0('0x18')]=function(_0x6040cf){if(!_[_0x95f0('0x19')](_0x6040cf)&&_0x6040cf!==''){var _0x1b8a75=/^(([^<>()\[\]\\.,;:\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 _0x1b8a75[_0x95f0('0x1a')](String(_0x6040cf)['toLowerCase']());}else{return![];}};
\ No newline at end of file
+var _0x3e57=['format','%s:\x20%s','keyContent','stripTrailingSlash','slice','substring','lastIndexOf','validateEmail','test','lodash','util','getString','sortBy','length','type','string','content','variable','variableName','push','toString','customVariable','Variable','name','toLowerCase','keyValue','keyType','key'];(function(_0xa85db,_0x5c8d3a){var _0x348e59=function(_0x54d107){while(--_0x54d107){_0xa85db['push'](_0xa85db['shift']());}};_0x348e59(++_0x5c8d3a);}(_0x3e57,0x191));var _0x73e5=function(_0x2d8f6c,_0x44db4c){_0x2d8f6c=_0x2d8f6c-0x0;var _0x3a00f6=_0x3e57[_0x2d8f6c];return _0x3a00f6;};'use strict';var _=require(_0x73e5('0x0'));var util=require(_0x73e5('0x1'));exports[_0x73e5('0x2')]=function(_0x3ca5bb,_0x392aff,_0x236634){var _0x48e012=[];if(_0x3ca5bb['length']>0x0){var _0x57da93=_[_0x73e5('0x3')](_0x3ca5bb,['id']);for(var _0xb1c554=0x0;_0xb1c554<_0x57da93[_0x73e5('0x4')];_0xb1c554++){var _0x1d0f84=_0x57da93[_0xb1c554];if(_0x1d0f84[_0x73e5('0x5')]===_0x73e5('0x6')){_0x48e012['push'](_0x1d0f84[_0x73e5('0x7')]);}else if(_0x1d0f84[_0x73e5('0x5')]===_0x73e5('0x8')&&_0x1d0f84[_0x73e5('0x9')]){_0x392aff[_0x1d0f84[_0x73e5('0x9')]]&&_0x48e012[_0x73e5('0xa')](_0x392aff[_0x1d0f84['variableName']][_0x73e5('0xb')]());}else if(_0x1d0f84[_0x73e5('0x5')]===_0x73e5('0xc')&&_0x1d0f84[_0x73e5('0xd')]&&_0x1d0f84[_0x73e5('0xd')][_0x73e5('0xe')]){_0x392aff[_0x1d0f84['Variable'][_0x73e5('0xe')][_0x73e5('0xf')]()]&&_0x48e012[_0x73e5('0xa')](_0x392aff[_0x1d0f84['Variable'][_0x73e5('0xe')][_0x73e5('0xf')]()][_0x73e5('0xb')]());}else if(_0x1d0f84[_0x73e5('0x5')]===_0x73e5('0x10')){if(_0x1d0f84[_0x73e5('0x11')]===_0x73e5('0x6')&&_0x1d0f84[_0x73e5('0x12')]){_0x48e012[_0x73e5('0xa')](util[_0x73e5('0x13')](_0x73e5('0x14'),_0x1d0f84[_0x73e5('0x12')],_0x1d0f84[_0x73e5('0x15')]));}else if(_0x1d0f84[_0x73e5('0x11')]===_0x73e5('0x8')&&_0x1d0f84[_0x73e5('0x9')]&&_0x1d0f84[_0x73e5('0x12')]){_0x392aff[_0x1d0f84[_0x73e5('0x9')]]&&_0x48e012['push'](util[_0x73e5('0x13')]('%s:\x20%s',_0x1d0f84[_0x73e5('0x12')],_0x392aff[_0x1d0f84[_0x73e5('0x9')]]));}else if(_0x1d0f84[_0x73e5('0x11')]===_0x73e5('0xc')&&_0x1d0f84['Variable']&&_0x1d0f84['Variable'][_0x73e5('0xe')]&&_0x1d0f84['key']){_0x392aff[_0x1d0f84[_0x73e5('0xd')][_0x73e5('0xe')][_0x73e5('0xf')]()]&&_0x48e012[_0x73e5('0xa')](util[_0x73e5('0x13')](_0x73e5('0x14'),_0x1d0f84[_0x73e5('0x12')],_0x392aff[_0x1d0f84[_0x73e5('0xd')][_0x73e5('0xe')][_0x73e5('0xf')]()]));}}}}return _0x48e012['join'](_0x236634);};exports[_0x73e5('0x16')]=function(_0x317549){var _0x3d28d3=_0x317549[_0x73e5('0x17')](-0x1);if(_0x3d28d3==='/'){_0x317549=_0x317549[_0x73e5('0x18')](0x0,_0x317549[_0x73e5('0x19')](_0x3d28d3));}return _0x317549;};exports[_0x73e5('0x1a')]=function(_0x342f11){if(!_['isNil'](_0x342f11)&&_0x342f11!==''){var _0x250ff4=/^(([^<>()\[\]\\.,;:\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 _0x250ff4[_0x73e5('0x1b')](String(_0x342f11)['toLowerCase']());}else{return![];}};
\ No newline at end of file
index f551199..66e1a9c 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(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0xa9e0,0x123));var _0x0a9e=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0xa9e0[_0xbca1b1];return _0x4e1686;};'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 _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(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4baae2,_0x487ab6){_0x4baae2=_0x4baae2-0x0;var _0x1a2285=_0xa9e0[_0x4baae2];return _0x1a2285;};'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
index 9a1d37f..38cc837 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x19fb=['[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','inspect','outbound','recordingFormat','none','[OUTBOUND]','destcalleridname','integrationTab','replace','unmanaged','lastevent','toUpperCase','lodash','md5','util','./util','../../../../config/environment','../../../../config/logger','zendesk','redis','defaults','emit','application/json','info','format','%s/tickets.json','remoteUri','POST','merge','Tags','name','getString','Subjects','Descriptions','Fields','then','Ticket\x20created!','ticket','Getting\x20agent\x20with\x20email','%s/search.json','type:user\x20role:agent\x20email:%s','count','find','results','agent','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me.json','Admin\x20account\x20selected.','user','Searching\x20enduser\x20with\x20phone','type:user\x20role:end-user\x20phone:%s','length','filter','first','Enduser\x20found!','%s/users.json','Caller\x20-\x20%s','authType','%s:%s','username','password','token','Basic\x20%s','toString','[HTTP]','stringify','map','forEach','string','type','nameField','customField','toLowerCase','picklist','custom_fields','push','idField','variableName','customVariable','queue','stripTrailingSlash','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','Authorization','email','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent...','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','%s/agent/tickets/%s','/api/v2','error','Zendesk\x20account\x20type\x20not\x20recognized','catch'];(function(_0x465a0c,_0x19d4d5){var _0x1e202e=function(_0x27bd8a){while(--_0x27bd8a){_0x465a0c['push'](_0x465a0c['shift']());}};_0x1e202e(++_0x19d4d5);}(_0x19fb,0xde));var _0xb19f=function(_0x4a0293,_0x542f5b){_0x4a0293=_0x4a0293-0x0;var _0x360d8f=_0x19fb[_0x4a0293];return _0x360d8f;};'use strict';var _=require(_0xb19f('0x0'));var rp=require('request-promise');var md5=require(_0xb19f('0x1'));var util=require(_0xb19f('0x2'));var Redis=require('ioredis');var intUtil=require(_0xb19f('0x3'));var config=require(_0xb19f('0x4'));var logger=require(_0xb19f('0x5'))(_0xb19f('0x6'));config[_0xb19f('0x7')]=_[_0xb19f('0x8')](config[_0xb19f('0x7')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xb19f('0x7')]));function emit(_0x524d8a,_0x55f4a5,_0xd4b774){io['to'](_0x524d8a)[_0xb19f('0x9')](_0x55f4a5,_0xd4b774);}var headers={'Content-Type':_0xb19f('0xa'),'Accept':_0xb19f('0xa')};function getTicket(_0x851512,_0x51dbfa,_0x14a665,_0x5db500,_0x2ab146){logger[_0xb19f('0xb')]('Creating\x20new\x20ticket...');return request({'uri':util[_0xb19f('0xc')](_0xb19f('0xd'),_0x851512[_0xb19f('0xe')]),'method':_0xb19f('0xf'),'body':{'ticket':_[_0xb19f('0x10')]({'requester_id':_0x14a665['id'],'submitter_id':_0x51dbfa?_0x51dbfa['id']:undefined,'assignee_id':_0x51dbfa?_0x51dbfa['id']:undefined,'tags':getTags(_0x5db500[_0xb19f('0x11')],_0xb19f('0x12')),'subject':intUtil[_0xb19f('0x13')](_0x5db500[_0xb19f('0x14')],_0x2ab146,'\x20'),'description':intUtil[_0xb19f('0x13')](_0x5db500[_0xb19f('0x15')],_0x2ab146,'\x0a'),'comment':{'public':![],'body':intUtil[_0xb19f('0x13')](_0x5db500['Descriptions'],_0x2ab146,'\x0a')}},getCustomFields(_0x5db500[_0xb19f('0x16')],_0x2ab146))}})[_0xb19f('0x17')](function(_0x52bebb){logger['info'](_0xb19f('0x18'));return _0x52bebb[_0xb19f('0x19')];});}function getUser(_0x10b365,_0x51d5d3){if(intUtil['validateEmail'](_0x51d5d3)){logger[_0xb19f('0xb')](_0xb19f('0x1a'),_0x51d5d3);return request({'uri':util[_0xb19f('0xc')](_0xb19f('0x1b'),_0x10b365[_0xb19f('0xe')]),'qs':{'query':util[_0xb19f('0xc')](_0xb19f('0x1c'),_0x51d5d3)}})['then'](function(_0x84b5f0){if(_0x84b5f0[_0xb19f('0x1d')]){logger[_0xb19f('0xb')]('Agent\x20found!');return _[_0xb19f('0x1e')](_0x84b5f0[_0xb19f('0x1f')],{'email':_0x51d5d3,'role':_0xb19f('0x20')});}else{logger[_0xb19f('0xb')](_0xb19f('0x21'));return request({'uri':util[_0xb19f('0xc')](_0xb19f('0x22'),_0x10b365[_0xb19f('0xe')])})['then'](function(_0x2c8e24){logger[_0xb19f('0xb')](_0xb19f('0x23'));return _0x2c8e24[_0xb19f('0x24')];});}});}else{logger[_0xb19f('0xb')](_0xb19f('0x21'));return request({'uri':util[_0xb19f('0xc')]('%s/users/me.json',_0x10b365[_0xb19f('0xe')])})[_0xb19f('0x17')](function(_0x15d588){logger[_0xb19f('0xb')](_0xb19f('0x23'));return _0x15d588[_0xb19f('0x24')];});}}function getEndUser(_0x42dfc9,_0x5c985a,_0x3d97a5){logger[_0xb19f('0xb')](_0xb19f('0x25'),_0x3d97a5);return request({'uri':util[_0xb19f('0xc')](_0xb19f('0x1b'),_0x42dfc9['remoteUri']),'qs':{'query':util[_0xb19f('0xc')](_0xb19f('0x26'),_0x3d97a5)}})[_0xb19f('0x17')](function(_0x2759e0){var _0x355c6d;if(_0x2759e0[_0xb19f('0x1f')][_0xb19f('0x27')]){_0x2759e0[_0xb19f('0x1f')]=_[_0xb19f('0x28')](_0x2759e0[_0xb19f('0x1f')],{'suspended':![],'role':'end-user'});if(_0x2759e0[_0xb19f('0x1f')]['length']){_0x355c6d=_[_0xb19f('0x29')](_0x2759e0['results']);}}if(_0x355c6d){logger['info'](_0xb19f('0x2a'));return _0x355c6d;}else{logger[_0xb19f('0xb')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util[_0xb19f('0xc')](_0xb19f('0x2b'),_0x42dfc9[_0xb19f('0xe')]),'method':'POST','body':{'user':{'role':'end-user','name':util[_0xb19f('0xc')](_0xb19f('0x2c'),_0x5c985a||_0x3d97a5),'phone':_0x3d97a5}}})[_0xb19f('0x17')](function(_0x5c6440){logger[_0xb19f('0xb')]('Enduser\x20created.');return _0x5c6440[_0xb19f('0x24')];});}});}function getAuth(_0x4e0385){var _0x2d3e37;if(_0x4e0385[_0xb19f('0x2d')]==='password'){_0x2d3e37=util[_0xb19f('0xc')](_0xb19f('0x2e'),_0x4e0385[_0xb19f('0x2f')],_0x4e0385[_0xb19f('0x30')]);}else if(_0x4e0385[_0xb19f('0x2d')]===_0xb19f('0x31')){_0x2d3e37=util[_0xb19f('0xc')]('%s/token:%s',_0x4e0385[_0xb19f('0x2f')],_0x4e0385[_0xb19f('0x31')]);}return util[_0xb19f('0xc')](_0xb19f('0x32'),new Buffer(_0x2d3e37)[_0xb19f('0x33')]('base64'));}function request(_0x17c196){logger['debug'](_0xb19f('0x34'),JSON[_0xb19f('0x35')](_0x17c196));return rp(_[_0xb19f('0x8')](_0x17c196,{'method':'GET','headers':headers,'json':!![]}));}function getTags(_0x4a7ac5,_0x54fd8d){var _0x138681=[];if(_0x4a7ac5&&_0x4a7ac5[_0xb19f('0x27')]>0x0){_0x138681=_[_0xb19f('0x36')](_0x4a7ac5,_0x54fd8d);}return _0x138681;}function getCustomFields(_0x3d4b82,_0x307468){var _0x5354bc=[];var _0x1406b1={'custom_fields':[]};if(_0x3d4b82['length']>0x0){_[_0xb19f('0x37')](_0x3d4b82,function(_0x2f631d){if(_['includes']([_0xb19f('0x38'),'picklist'],_0x2f631d[_0xb19f('0x39')])&&_0x2f631d[_0xb19f('0x3a')]&&!_0x2f631d[_0xb19f('0x3b')]){_0x1406b1[_0x2f631d[_0xb19f('0x3a')][_0xb19f('0x3c')]()]=_0x2f631d['content']['toString']();}else if(_['includes']([_0xb19f('0x38'),_0xb19f('0x3d')],_0x2f631d['type'])&&_0x2f631d['idField']&&_0x2f631d[_0xb19f('0x3b')]){_0x1406b1[_0xb19f('0x3e')][_0xb19f('0x3f')]({'id':_0x2f631d[_0xb19f('0x40')],'value':_0x2f631d['content'][_0xb19f('0x33')]()});}else if(_0x2f631d[_0xb19f('0x39')]==='variable'&&_0x2f631d['variableName']&&_0x2f631d[_0xb19f('0x40')]&&_0x2f631d[_0xb19f('0x3b')]){_0x307468[_0x2f631d[_0xb19f('0x41')]]&&_0x1406b1[_0xb19f('0x3e')][_0xb19f('0x3f')]({'id':_0x2f631d['idField'],'value':_0x307468[_0x2f631d[_0xb19f('0x41')]][_0xb19f('0x33')]()});}else if(_0x2f631d[_0xb19f('0x39')]===_0xb19f('0x42')&&_0x2f631d['Variable']&&_0x2f631d['Variable'][_0xb19f('0x12')]&&_0x2f631d[_0xb19f('0x40')]&&_0x2f631d['customField']){_0x307468[_0x2f631d['Variable'][_0xb19f('0x12')]['toLowerCase']()]&&_0x1406b1[_0xb19f('0x3e')]['push']({'id':_0x2f631d[_0xb19f('0x40')],'value':_0x307468[_0x2f631d['Variable'][_0xb19f('0x12')]['toLowerCase']()][_0xb19f('0x33')]()});}});}return _0x1406b1;}exports[_0xb19f('0x43')]=function(_0x220e4e,_0x237f20,_0x3e2b68,_0x7ca6b5,_0x1b5bcd,_0xdf0544){var _0x1881d5,_0x52b855;_0xdf0544[_0xb19f('0xe')]=intUtil[_0xb19f('0x44')](_0xdf0544['remoteUri']);_0xdf0544['serverUrl']=intUtil['stripTrailingSlash'](_0xdf0544['serverUrl']);if(_0x1b5bcd&&_0x1b5bcd[_0xb19f('0x45')]){logger[_0xb19f('0xb')](_0xb19f('0x46'),_0xb19f('0x47'));_0x237f20[_0xb19f('0x48')]=util[_0xb19f('0xc')](_0xb19f('0x49'),_0xdf0544[_0xb19f('0x4a')],_0x237f20[_0xb19f('0x4b')],md5(_0x237f20[_0xb19f('0x4b')]));}else{_0x237f20[_0xb19f('0x48')]='';}headers[_0xb19f('0x4c')]=getAuth(_0xdf0544);return getUser(_0xdf0544,_0x7ca6b5[_0xb19f('0x4d')])[_0xb19f('0x17')](function(_0x1c7c57){_0x1881d5=_0x1c7c57;logger['info'](_0xb19f('0x4e'),_0x1881d5['id']);return getEndUser(_0xdf0544,_0x237f20[_0xb19f('0x4f')],_0x237f20[_0xb19f('0x50')]);})[_0xb19f('0x17')](function(_0x11ab5e){_0x52b855=_0x11ab5e;logger['info'](_0xb19f('0x51'),_0x52b855['id']);return getTicket(_0xdf0544,_0x1881d5,_0x52b855,_0x3e2b68,_0x237f20);})[_0xb19f('0x17')](function(_0x190927){if(_0x190927){logger[_0xb19f('0xb')](_0xb19f('0x52'),_0x190927['id']);switch(_0xdf0544['type']){case'integrationTab':logger[_0xb19f('0xb')](_0xb19f('0x46'),_0xb19f('0x53'));return request({'uri':util[_0xb19f('0xc')]('%s/channels/voice/agents/%d/tickets/%d/display.json',_0xdf0544[_0xb19f('0xe')],_0x1881d5['id'],_0x190927['id']),'method':_0xb19f('0xf')});case _0xb19f('0x54'):logger['info'](_0xb19f('0x46'),_0xb19f('0x55'));emit(util['format'](_0xb19f('0x56'),_0x7ca6b5[_0xb19f('0x12')]),_0xb19f('0x57'),{'uri':util[_0xb19f('0xc')](_0xb19f('0x58'),_0xdf0544[_0xb19f('0xe')]['replace'](_0xb19f('0x59'),''),_0x190927['id'])});break;default:logger[_0xb19f('0x5a')](_0xb19f('0x46'),_0xb19f('0x5b'));}}})[_0xb19f('0x5c')](function(_0x420d5b){logger['error'](_0xb19f('0x5d'),util[_0xb19f('0x5e')](_0x420d5b,{'showHidden':!![],'depth':null}));});};exports[_0xb19f('0x5f')]=function(_0x4b1201,_0x4fda55,_0x37a36b,_0x303906,_0xc5b4d3,_0x42a8d3,_0x177724){var _0x1a16f6,_0x9886f0;_0x42a8d3['remoteUri']=intUtil['stripTrailingSlash'](_0x42a8d3[_0xb19f('0xe')]);_0x42a8d3[_0xb19f('0x4a')]=intUtil[_0xb19f('0x44')](_0x42a8d3[_0xb19f('0x4a')]);if(_0x177724&&_0x177724[_0xb19f('0x60')]&&_0x177724[_0xb19f('0x60')]!==_0xb19f('0x61')){logger['info'](_0xb19f('0x62'),'Recording\x20is\x20enabled!');_0x4fda55[_0xb19f('0x48')]=util[_0xb19f('0xc')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x42a8d3['serverUrl'],_0x4fda55[_0xb19f('0x4b')],md5(_0x4fda55['uniqueid']));}headers[_0xb19f('0x4c')]=getAuth(_0x42a8d3);return getUser(_0x42a8d3,_0x303906[_0xb19f('0x4d')])['then'](function(_0x1c2919){_0x1a16f6=_0x1c2919;logger[_0xb19f('0xb')](_0xb19f('0x4e'),_0x1a16f6['id']);return getEndUser(_0x42a8d3,_0x4fda55[_0xb19f('0x63')],_0x4fda55['destcalleridnum']);})[_0xb19f('0x17')](function(_0x2e6fd0){_0x9886f0=_0x2e6fd0;logger[_0xb19f('0xb')](_0xb19f('0x51'),_0x9886f0['id']);return getTicket(_0x42a8d3,_0x1a16f6,_0x9886f0,_0x37a36b,_0x4fda55);})[_0xb19f('0x17')](function(_0x4c1fe9){if(_0x4c1fe9){logger[_0xb19f('0xb')](_0xb19f('0x52'),_0x4c1fe9['id']);switch(_0x42a8d3[_0xb19f('0x39')]){case _0xb19f('0x64'):logger[_0xb19f('0xb')](_0xb19f('0x62'),_0xb19f('0x53'));return request({'uri':util[_0xb19f('0xc')]('%s/channels/voice/agents/%d/tickets/%d/display.json',_0x42a8d3[_0xb19f('0xe')],_0x1a16f6['id'],_0x4c1fe9['id']),'method':'POST'});case'newTab':logger[_0xb19f('0xb')]('[OUTBOUND]',_0xb19f('0x55'));emit(util[_0xb19f('0xc')](_0xb19f('0x56'),_0x303906[_0xb19f('0x12')]),_0xb19f('0x57'),{'uri':util[_0xb19f('0xc')](_0xb19f('0x58'),_0x42a8d3[_0xb19f('0xe')][_0xb19f('0x65')](_0xb19f('0x59'),''),_0x4c1fe9['id'])});break;default:logger[_0xb19f('0x5a')](_0xb19f('0x62'),_0xb19f('0x5b'));}}})[_0xb19f('0x5c')](function(_0x12088c){logger[_0xb19f('0x5a')]('[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration',util[_0xb19f('0x5e')](_0x12088c,{'showHidden':!![],'depth':null}));});};exports[_0xb19f('0x66')]=function(_0x1ba0ad,_0x359cc1,_0x1512d5,_0x462961,_0x95024b,_0x51dc67){var _0x304f0d,_0x370819;_0x51dc67['remoteUri']=intUtil[_0xb19f('0x44')](_0x51dc67[_0xb19f('0xe')]);_0x51dc67[_0xb19f('0x4a')]=intUtil['stripTrailingSlash'](_0x51dc67[_0xb19f('0x4a')]);if(_0x95024b&&_0x95024b[_0xb19f('0x45')]){logger[_0xb19f('0xb')]('['+_0x359cc1[_0xb19f('0x67')][_0xb19f('0x68')]()+']',_0xb19f('0x47'));_0x359cc1[_0xb19f('0x48')]=util[_0xb19f('0xc')](_0xb19f('0x49'),_0x51dc67[_0xb19f('0x4a')],_0x359cc1[_0xb19f('0x4b')],md5(_0x359cc1[_0xb19f('0x4b')]));}else{_0x359cc1[_0xb19f('0x48')]='';}headers['Authorization']=getAuth(_0x51dc67);return getUser(_0x51dc67)[_0xb19f('0x17')](function(_0x42f4ad){_0x304f0d=_0x42f4ad;logger['info']('The\x20User\x20ID\x20is:',_0x304f0d['id']);return getEndUser(_0x51dc67,_0x359cc1[_0xb19f('0x4f')],_0x359cc1['calleridnum']);})[_0xb19f('0x17')](function(_0x4a59db){_0x370819=_0x4a59db;logger['info'](_0xb19f('0x51'),_0x370819['id']);return getTicket(_0x51dc67,_0x304f0d,_0x370819,_0x1512d5,_0x359cc1);})[_0xb19f('0x17')](function(_0x3fa937){if(_0x3fa937){logger[_0xb19f('0xb')]('The\x20Ticket\x20ID\x20is:',_0x3fa937['id']);}})['catch'](function(_0x1ce173){logger[_0xb19f('0x5a')]('['+_0x359cc1[_0xb19f('0x67')][_0xb19f('0x68')]()+']'+'\x20Error\x20running\x20Zendesk\x20integration',util['inspect'](_0x1ce173,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x6a2c=['string','nameField','toLowerCase','picklist','idField','customField','custom_fields','push','type','variableName','customVariable','Variable','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','The\x20User\x20ID\x20is:','calleridnum','The\x20Enduser\x20ID\x20is:','integrationTab','Displaying\x20ticket\x20to\x20agent...','%s/channels/voice/agents/%d/tickets/%d/display.json','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','%s/agent/tickets/%s','/api/v2','error','Zendesk\x20account\x20type\x20not\x20recognized','catch','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','inspect','outbound','recordingFormat','Recording\x20is\x20enabled!','destcalleridname','The\x20Ticket\x20ID\x20is:','[OUTBOUND]','replace','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','unmanaged','lastevent','toUpperCase','calleridname','lodash','util','./util','../../../../config/environment','../../../../config/logger','zendesk','defaults','redis','localhost','socket.io-emitter','emit','application/json','info','format','%s/tickets.json','remoteUri','POST','Tags','name','getString','Subjects','Descriptions','Fields','then','Ticket\x20created!','validateEmail','Getting\x20agent\x20with\x20email','type:user\x20role:agent\x20email:%s','count','find','results','agent','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me.json','Admin\x20account\x20selected.','user','Searching\x20enduser\x20with\x20phone','%s/search.json','type:user\x20role:end-user\x20phone:%s','filter','end-user','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/users.json','Caller\x20-\x20%s','Enduser\x20created.','authType','%s:%s','username','password','token','%s/token:%s','Basic\x20%s','toString','[HTTP]','stringify','GET','length','map','forEach','includes'];(function(_0x1101c9,_0x56ece2){var _0x3fef5d=function(_0x5e93ea){while(--_0x5e93ea){_0x1101c9['push'](_0x1101c9['shift']());}};_0x3fef5d(++_0x56ece2);}(_0x6a2c,0x110));var _0xc6a2=function(_0x3972c0,_0x4b49ea){_0x3972c0=_0x3972c0-0x0;var _0x1c7018=_0x6a2c[_0x3972c0];return _0x1c7018;};'use strict';var _=require(_0xc6a2('0x0'));var rp=require('request-promise');var md5=require('md5');var util=require(_0xc6a2('0x1'));var Redis=require('ioredis');var intUtil=require(_0xc6a2('0x2'));var config=require(_0xc6a2('0x3'));var logger=require(_0xc6a2('0x4'))(_0xc6a2('0x5'));config['redis']=_[_0xc6a2('0x6')](config[_0xc6a2('0x7')],{'host':_0xc6a2('0x8'),'port':0x18eb});var io=require(_0xc6a2('0x9'))(new Redis(config[_0xc6a2('0x7')]));function emit(_0x5cf53a,_0x570a31,_0x53d2f4){io['to'](_0x5cf53a)[_0xc6a2('0xa')](_0x570a31,_0x53d2f4);}var headers={'Content-Type':_0xc6a2('0xb'),'Accept':'application/json'};function getTicket(_0x2678c4,_0x317045,_0x4ece8a,_0x33522b,_0x37fbbb){logger[_0xc6a2('0xc')]('Creating\x20new\x20ticket...');return request({'uri':util[_0xc6a2('0xd')](_0xc6a2('0xe'),_0x2678c4[_0xc6a2('0xf')]),'method':_0xc6a2('0x10'),'body':{'ticket':_['merge']({'requester_id':_0x4ece8a['id'],'submitter_id':_0x317045?_0x317045['id']:undefined,'assignee_id':_0x317045?_0x317045['id']:undefined,'tags':getTags(_0x33522b[_0xc6a2('0x11')],_0xc6a2('0x12')),'subject':intUtil[_0xc6a2('0x13')](_0x33522b[_0xc6a2('0x14')],_0x37fbbb,'\x20'),'description':intUtil[_0xc6a2('0x13')](_0x33522b[_0xc6a2('0x15')],_0x37fbbb,'\x0a'),'comment':{'public':![],'body':intUtil[_0xc6a2('0x13')](_0x33522b['Descriptions'],_0x37fbbb,'\x0a')}},getCustomFields(_0x33522b[_0xc6a2('0x16')],_0x37fbbb))}})[_0xc6a2('0x17')](function(_0x54692c){logger[_0xc6a2('0xc')](_0xc6a2('0x18'));return _0x54692c['ticket'];});}function getUser(_0x391e56,_0x2e10af){if(intUtil[_0xc6a2('0x19')](_0x2e10af)){logger[_0xc6a2('0xc')](_0xc6a2('0x1a'),_0x2e10af);return request({'uri':util['format']('%s/search.json',_0x391e56[_0xc6a2('0xf')]),'qs':{'query':util[_0xc6a2('0xd')](_0xc6a2('0x1b'),_0x2e10af)}})[_0xc6a2('0x17')](function(_0x50ed8e){if(_0x50ed8e[_0xc6a2('0x1c')]){logger[_0xc6a2('0xc')]('Agent\x20found!');return _[_0xc6a2('0x1d')](_0x50ed8e[_0xc6a2('0x1e')],{'email':_0x2e10af,'role':_0xc6a2('0x1f')});}else{logger[_0xc6a2('0xc')](_0xc6a2('0x20'));return request({'uri':util['format'](_0xc6a2('0x21'),_0x391e56[_0xc6a2('0xf')])})[_0xc6a2('0x17')](function(_0x3bd27c){logger[_0xc6a2('0xc')](_0xc6a2('0x22'));return _0x3bd27c['user'];});}});}else{logger[_0xc6a2('0xc')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0xc6a2('0xd')]('%s/users/me.json',_0x391e56[_0xc6a2('0xf')])})[_0xc6a2('0x17')](function(_0x3714ce){logger[_0xc6a2('0xc')](_0xc6a2('0x22'));return _0x3714ce[_0xc6a2('0x23')];});}}function getEndUser(_0x203517,_0x2f4594,_0x4705c7){logger[_0xc6a2('0xc')](_0xc6a2('0x24'),_0x4705c7);return request({'uri':util[_0xc6a2('0xd')](_0xc6a2('0x25'),_0x203517[_0xc6a2('0xf')]),'qs':{'query':util['format'](_0xc6a2('0x26'),_0x4705c7)}})[_0xc6a2('0x17')](function(_0x523051){var _0x28d639;if(_0x523051['results']['length']){_0x523051[_0xc6a2('0x1e')]=_[_0xc6a2('0x27')](_0x523051[_0xc6a2('0x1e')],{'suspended':![],'role':_0xc6a2('0x28')});if(_0x523051[_0xc6a2('0x1e')]['length']){_0x28d639=_['first'](_0x523051[_0xc6a2('0x1e')]);}}if(_0x28d639){logger[_0xc6a2('0xc')](_0xc6a2('0x29'));return _0x28d639;}else{logger[_0xc6a2('0xc')](_0xc6a2('0x2a'));return request({'uri':util[_0xc6a2('0xd')](_0xc6a2('0x2b'),_0x203517[_0xc6a2('0xf')]),'method':_0xc6a2('0x10'),'body':{'user':{'role':'end-user','name':util[_0xc6a2('0xd')](_0xc6a2('0x2c'),_0x2f4594||_0x4705c7),'phone':_0x4705c7}}})[_0xc6a2('0x17')](function(_0x2dfde4){logger[_0xc6a2('0xc')](_0xc6a2('0x2d'));return _0x2dfde4[_0xc6a2('0x23')];});}});}function getAuth(_0x2ab57c){var _0x3d82a8;if(_0x2ab57c[_0xc6a2('0x2e')]==='password'){_0x3d82a8=util[_0xc6a2('0xd')](_0xc6a2('0x2f'),_0x2ab57c[_0xc6a2('0x30')],_0x2ab57c[_0xc6a2('0x31')]);}else if(_0x2ab57c[_0xc6a2('0x2e')]===_0xc6a2('0x32')){_0x3d82a8=util[_0xc6a2('0xd')](_0xc6a2('0x33'),_0x2ab57c[_0xc6a2('0x30')],_0x2ab57c[_0xc6a2('0x32')]);}return util[_0xc6a2('0xd')](_0xc6a2('0x34'),new Buffer(_0x3d82a8)[_0xc6a2('0x35')]('base64'));}function request(_0x263652){logger['debug'](_0xc6a2('0x36'),JSON[_0xc6a2('0x37')](_0x263652));return rp(_[_0xc6a2('0x6')](_0x263652,{'method':_0xc6a2('0x38'),'headers':headers,'json':!![]}));}function getTags(_0xacf70f,_0x5a604c){var _0x238825=[];if(_0xacf70f&&_0xacf70f[_0xc6a2('0x39')]>0x0){_0x238825=_[_0xc6a2('0x3a')](_0xacf70f,_0x5a604c);}return _0x238825;}function getCustomFields(_0x29b8aa,_0x4d1161){var _0x147230=[];var _0x2c1925={'custom_fields':[]};if(_0x29b8aa['length']>0x0){_[_0xc6a2('0x3b')](_0x29b8aa,function(_0x1ff24b){if(_[_0xc6a2('0x3c')]([_0xc6a2('0x3d'),'picklist'],_0x1ff24b['type'])&&_0x1ff24b[_0xc6a2('0x3e')]&&!_0x1ff24b['customField']){_0x2c1925[_0x1ff24b[_0xc6a2('0x3e')][_0xc6a2('0x3f')]()]=_0x1ff24b['content']['toString']();}else if(_[_0xc6a2('0x3c')](['string',_0xc6a2('0x40')],_0x1ff24b['type'])&&_0x1ff24b[_0xc6a2('0x41')]&&_0x1ff24b[_0xc6a2('0x42')]){_0x2c1925[_0xc6a2('0x43')][_0xc6a2('0x44')]({'id':_0x1ff24b['idField'],'value':_0x1ff24b['content'][_0xc6a2('0x35')]()});}else if(_0x1ff24b[_0xc6a2('0x45')]==='variable'&&_0x1ff24b[_0xc6a2('0x46')]&&_0x1ff24b['idField']&&_0x1ff24b[_0xc6a2('0x42')]){_0x4d1161[_0x1ff24b[_0xc6a2('0x46')]]&&_0x2c1925['custom_fields'][_0xc6a2('0x44')]({'id':_0x1ff24b[_0xc6a2('0x41')],'value':_0x4d1161[_0x1ff24b[_0xc6a2('0x46')]][_0xc6a2('0x35')]()});}else if(_0x1ff24b[_0xc6a2('0x45')]===_0xc6a2('0x47')&&_0x1ff24b[_0xc6a2('0x48')]&&_0x1ff24b[_0xc6a2('0x48')][_0xc6a2('0x12')]&&_0x1ff24b[_0xc6a2('0x41')]&&_0x1ff24b['customField']){_0x4d1161[_0x1ff24b['Variable'][_0xc6a2('0x12')][_0xc6a2('0x3f')]()]&&_0x2c1925[_0xc6a2('0x43')][_0xc6a2('0x44')]({'id':_0x1ff24b[_0xc6a2('0x41')],'value':_0x4d1161[_0x1ff24b[_0xc6a2('0x48')][_0xc6a2('0x12')]['toLowerCase']()][_0xc6a2('0x35')]()});}});}return _0x2c1925;}exports['queue']=function(_0x5bdf39,_0x1b678e,_0x319fc9,_0xf6d3d,_0x57f0a2,_0x58f4e7){var _0x10bc6b,_0x5cc63b;_0x58f4e7[_0xc6a2('0xf')]=intUtil[_0xc6a2('0x49')](_0x58f4e7['remoteUri']);_0x58f4e7[_0xc6a2('0x4a')]=intUtil[_0xc6a2('0x49')](_0x58f4e7['serverUrl']);if(_0x57f0a2&&_0x57f0a2[_0xc6a2('0x4b')]){logger[_0xc6a2('0xc')](_0xc6a2('0x4c'),'Recording\x20is\x20enabled!');_0x1b678e[_0xc6a2('0x4d')]=util[_0xc6a2('0xd')](_0xc6a2('0x4e'),_0x58f4e7['serverUrl'],_0x1b678e['uniqueid'],md5(_0x1b678e[_0xc6a2('0x4f')]));}else{_0x1b678e['recordingURL']='';}headers[_0xc6a2('0x50')]=getAuth(_0x58f4e7);return getUser(_0x58f4e7,_0xf6d3d[_0xc6a2('0x51')])['then'](function(_0x38005d){_0x10bc6b=_0x38005d;logger[_0xc6a2('0xc')](_0xc6a2('0x52'),_0x10bc6b['id']);return getEndUser(_0x58f4e7,_0x1b678e['calleridname'],_0x1b678e[_0xc6a2('0x53')]);})['then'](function(_0x5e6bad){_0x5cc63b=_0x5e6bad;logger[_0xc6a2('0xc')](_0xc6a2('0x54'),_0x5cc63b['id']);return getTicket(_0x58f4e7,_0x10bc6b,_0x5cc63b,_0x319fc9,_0x1b678e);})[_0xc6a2('0x17')](function(_0x5d77b1){if(_0x5d77b1){logger['info']('The\x20Ticket\x20ID\x20is:',_0x5d77b1['id']);switch(_0x58f4e7[_0xc6a2('0x45')]){case _0xc6a2('0x55'):logger[_0xc6a2('0xc')]('[QUEUE]',_0xc6a2('0x56'));return request({'uri':util['format'](_0xc6a2('0x57'),_0x58f4e7[_0xc6a2('0xf')],_0x10bc6b['id'],_0x5d77b1['id']),'method':_0xc6a2('0x10')});case _0xc6a2('0x58'):logger[_0xc6a2('0xc')](_0xc6a2('0x4c'),_0xc6a2('0x59'));emit(util[_0xc6a2('0xd')](_0xc6a2('0x5a'),_0xf6d3d['name']),_0xc6a2('0x5b'),{'uri':util['format'](_0xc6a2('0x5c'),_0x58f4e7['remoteUri']['replace'](_0xc6a2('0x5d'),''),_0x5d77b1['id'])});break;default:logger[_0xc6a2('0x5e')](_0xc6a2('0x4c'),_0xc6a2('0x5f'));}}})[_0xc6a2('0x60')](function(_0x3503ba){logger['error'](_0xc6a2('0x61'),util[_0xc6a2('0x62')](_0x3503ba,{'showHidden':!![],'depth':null}));});};exports[_0xc6a2('0x63')]=function(_0x47c9ba,_0x5bcddc,_0x149bf4,_0x4c7479,_0x249792,_0x51d966,_0x1ec892){var _0xddbca9,_0x4b32db;_0x51d966[_0xc6a2('0xf')]=intUtil[_0xc6a2('0x49')](_0x51d966[_0xc6a2('0xf')]);_0x51d966[_0xc6a2('0x4a')]=intUtil[_0xc6a2('0x49')](_0x51d966[_0xc6a2('0x4a')]);if(_0x1ec892&&_0x1ec892[_0xc6a2('0x64')]&&_0x1ec892[_0xc6a2('0x64')]!=='none'){logger[_0xc6a2('0xc')]('[OUTBOUND]',_0xc6a2('0x65'));_0x5bcddc['recordingURL']=util['format'](_0xc6a2('0x4e'),_0x51d966['serverUrl'],_0x5bcddc[_0xc6a2('0x4f')],md5(_0x5bcddc[_0xc6a2('0x4f')]));}headers['Authorization']=getAuth(_0x51d966);return getUser(_0x51d966,_0x4c7479[_0xc6a2('0x51')])[_0xc6a2('0x17')](function(_0x408992){_0xddbca9=_0x408992;logger[_0xc6a2('0xc')]('The\x20User\x20ID\x20is:',_0xddbca9['id']);return getEndUser(_0x51d966,_0x5bcddc[_0xc6a2('0x66')],_0x5bcddc['destcalleridnum']);})[_0xc6a2('0x17')](function(_0x1d606d){_0x4b32db=_0x1d606d;logger[_0xc6a2('0xc')]('The\x20Enduser\x20ID\x20is:',_0x4b32db['id']);return getTicket(_0x51d966,_0xddbca9,_0x4b32db,_0x149bf4,_0x5bcddc);})[_0xc6a2('0x17')](function(_0x3ed14a){if(_0x3ed14a){logger[_0xc6a2('0xc')](_0xc6a2('0x67'),_0x3ed14a['id']);switch(_0x51d966['type']){case _0xc6a2('0x55'):logger['info'](_0xc6a2('0x68'),_0xc6a2('0x56'));return request({'uri':util['format'](_0xc6a2('0x57'),_0x51d966[_0xc6a2('0xf')],_0xddbca9['id'],_0x3ed14a['id']),'method':_0xc6a2('0x10')});case _0xc6a2('0x58'):logger[_0xc6a2('0xc')](_0xc6a2('0x68'),_0xc6a2('0x59'));emit(util[_0xc6a2('0xd')]('user:%s',_0x4c7479[_0xc6a2('0x12')]),_0xc6a2('0x5b'),{'uri':util[_0xc6a2('0xd')](_0xc6a2('0x5c'),_0x51d966[_0xc6a2('0xf')][_0xc6a2('0x69')](_0xc6a2('0x5d'),''),_0x3ed14a['id'])});break;default:logger['error'](_0xc6a2('0x68'),_0xc6a2('0x5f'));}}})[_0xc6a2('0x60')](function(_0x45329b){logger[_0xc6a2('0x5e')](_0xc6a2('0x6a'),util['inspect'](_0x45329b,{'showHidden':!![],'depth':null}));});};exports[_0xc6a2('0x6b')]=function(_0x25d817,_0x32d578,_0x267d84,_0x559a87,_0x3444ee,_0x485237){var _0x5e3b86,_0x41af80;_0x485237[_0xc6a2('0xf')]=intUtil[_0xc6a2('0x49')](_0x485237[_0xc6a2('0xf')]);_0x485237[_0xc6a2('0x4a')]=intUtil['stripTrailingSlash'](_0x485237[_0xc6a2('0x4a')]);if(_0x3444ee&&_0x3444ee[_0xc6a2('0x4b')]){logger['info']('['+_0x32d578[_0xc6a2('0x6c')][_0xc6a2('0x6d')]()+']',_0xc6a2('0x65'));_0x32d578[_0xc6a2('0x4d')]=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x485237[_0xc6a2('0x4a')],_0x32d578[_0xc6a2('0x4f')],md5(_0x32d578['uniqueid']));}else{_0x32d578[_0xc6a2('0x4d')]='';}headers[_0xc6a2('0x50')]=getAuth(_0x485237);return getUser(_0x485237)[_0xc6a2('0x17')](function(_0x3c7578){_0x5e3b86=_0x3c7578;logger['info'](_0xc6a2('0x52'),_0x5e3b86['id']);return getEndUser(_0x485237,_0x32d578[_0xc6a2('0x6e')],_0x32d578[_0xc6a2('0x53')]);})[_0xc6a2('0x17')](function(_0x5afec7){_0x41af80=_0x5afec7;logger[_0xc6a2('0xc')]('The\x20Enduser\x20ID\x20is:',_0x41af80['id']);return getTicket(_0x485237,_0x5e3b86,_0x41af80,_0x267d84,_0x32d578);})[_0xc6a2('0x17')](function(_0x4e77c0){if(_0x4e77c0){logger[_0xc6a2('0xc')](_0xc6a2('0x67'),_0x4e77c0['id']);}})[_0xc6a2('0x60')](function(_0x21aab2){logger['error']('['+_0x32d578[_0xc6a2('0x6c')][_0xc6a2('0x6d')]()+']'+'\x20Error\x20running\x20Zendesk\x20integration',util[_0xc6a2('0x62')](_0x21aab2,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index aaffd58..3a7f2d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdf1f=['queue','host','stripTrailingSlash','[QUEUE]','recordingURL','serverUrl','/api/voice/recordings/','uniqueid','/downloads?type=uniqueid&token=','zoho.eu','com','The\x20User\x20ID\x20is:','calleridnum','The\x20Call\x20ID\x20is:','Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','/crm/EntityInfo.do?module=Calls&id=','recordingFormat','Recording\x20is\x20enabled!','destcalleridname','destcalleridnum','Outbound','[OUTBOUND]','monitor_format','toUpperCase','calleridname','lodash','util','./util','moment','bluebird','../../../../config/logger','zoho','redis','defaults','localhost','emit','debug','stringify','length','includes','string','idField','content','toString','type','variable','variableName','Variable','name','toLowerCase','indexOf','isNil','access_token','isBefore','expires_in','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.in','POST','/oauth/v2/token','refreshToken','clientId','clientSecret','refresh_token','add','seconds','catch','Failing\x20creating\x20the\x20access_token','Search\x20user','GET','https://www.zohoapis.%s/crm/v2/users','ActiveUsers','Zoho-oauthtoken\x20','then','users','findIndex','email','info','Agent\x20found!','profile','Administrator','user','error','The\x20failing\x20result\x20is','Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20','data','https://www.zohoapis.','/crm/v2/','startCase','moduleCreate','role','first_name','last_name','code','SUCCESS','enduserType','Error:\x20','log','CREATE\x20ERROR','moduleSearch','contact_lead','/crm/v2/Contacts/search?criteria=((Phone:equals:','/crm/v2/Leads/search?criteria=((Phone:equals:','nothing','contact','uri','Contacts','lead','Leads','Creating\x20new\x20call...','Owner','administrator','Subject','getString','Description','Descriptions','Who_Id','Full_Name','First_Name','Last_Name','What_Id','$se_module','talktime','Call_Duration','format','mm:ss','answertime','endtime','utc','diff','starttime','YYYY-MM-DDTHH:mm:ss','lastevent','called','complete','connect','Call_Result','rejected','Rejected','abandoned','Abandoned','timeout','Timeout','outbound','Call_Type','Inbound','Fields','/crm/v2/Calls','Call\x20created!','details','err','stack'];(function(_0x20ec00,_0x549738){var _0x506105=function(_0x9dab42){while(--_0x9dab42){_0x20ec00['push'](_0x20ec00['shift']());}};_0x506105(++_0x549738);}(_0xdf1f,0x1ec));var _0xfdf1=function(_0x4054e2,_0x31572a){_0x4054e2=_0x4054e2-0x0;var _0x54ebdf=_0xdf1f[_0x4054e2];return _0x54ebdf;};'use strict';var _=require(_0xfdf1('0x0'));var rp=require('request-promise');var md5=require('md5');var util=require(_0xfdf1('0x1'));var intUtil=require(_0xfdf1('0x2'));var moment=require(_0xfdf1('0x3'));var Redis=require('ioredis');var BPromise=require(_0xfdf1('0x4'));var config=require('../../../../config/environment');var logger=require(_0xfdf1('0x5'))(_0xfdf1('0x6'));config[_0xfdf1('0x7')]=_[_0xfdf1('0x8')](config[_0xfdf1('0x7')],{'host':_0xfdf1('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function emit(_0x265bc2,_0x836d35,_0x1ebd61){io['to'](_0x265bc2)[_0xfdf1('0xa')](_0x836d35,_0x1ebd61);}function request(_0x49b6b4){logger[_0xfdf1('0xb')]('[HTTP]',JSON[_0xfdf1('0xc')](_0x49b6b4));return rp(_0x49b6b4);}function getCustomFields(_0x3d8f1a,_0x10e23f){var _0x2812fd={};if(_0x3d8f1a[_0xfdf1('0xd')]>0x0){_['forEach'](_0x3d8f1a,function(_0x343682){if(_[_0xfdf1('0xe')]([_0xfdf1('0xf'),'picklist'],_0x343682['type'])&&_0x343682[_0xfdf1('0x10')]){_0x2812fd[_0x343682[_0xfdf1('0x10')]]=_0x343682[_0xfdf1('0x11')][_0xfdf1('0x12')]();}else if(_0x343682[_0xfdf1('0x13')]===_0xfdf1('0x14')&&_0x343682[_0xfdf1('0x15')]&&_0x343682[_0xfdf1('0x10')]&&_0x10e23f[_0x343682[_0xfdf1('0x15')]]){_0x2812fd[_0x343682[_0xfdf1('0x10')]]=_0x10e23f[_0x343682[_0xfdf1('0x15')]][_0xfdf1('0x12')]();}else if(_0x343682[_0xfdf1('0x13')]==='customVariable'&&_0x343682[_0xfdf1('0x16')]&&_0x343682['Variable']['name']&&_0x343682['idField']&&_0x10e23f[_0x343682[_0xfdf1('0x16')]['name']['toLowerCase']()]){_0x2812fd[_0x343682[_0xfdf1('0x10')]]=_0x10e23f[_0x343682['Variable'][_0xfdf1('0x17')][_0xfdf1('0x18')]()]['toString']();}});}return _0x2812fd;}function getName(_0xf5eda9){if(_0xf5eda9[_0xfdf1('0x19')]('\x20')>0x0){var _0xa3ae95=_0xf5eda9['split'](/ (.+)/);if(_0xa3ae95[0x1]){return _0xa3ae95;}}return[_0xf5eda9,_0xf5eda9];}var accountsTokens={};function getAccessToken(_0x167434){return new Promise(function(_0x266a4e,_0xabbb94){if(!_[_0xfdf1('0x1a')](accountsTokens[_0x167434['id']])&&!_[_0xfdf1('0x1a')](accountsTokens[_0x167434['id']][_0xfdf1('0x1b')])){if(moment()[_0xfdf1('0x1c')](accountsTokens[_0x167434['id']][_0xfdf1('0x1d')])){_0x266a4e(accountsTokens[_0x167434['id']]['access_token']);}}var _0x37d539;switch(_0x167434['zone']){case'US':_0x37d539=_0xfdf1('0x1e');break;case'AU':_0x37d539=_0xfdf1('0x1f');break;case'EU':_0x37d539=_0xfdf1('0x20');break;case'IN':_0x37d539=_0xfdf1('0x21');break;case'CN':_0x37d539='https://accounts.zoho.com.cn';break;default:_0x37d539=_0xfdf1('0x20');break;}var _0x546392={'method':_0xfdf1('0x22'),'uri':_0x37d539+_0xfdf1('0x23'),'qs':{'refresh_token':_0x167434[_0xfdf1('0x24')],'client_id':_0x167434[_0xfdf1('0x25')],'client_secret':_0x167434[_0xfdf1('0x26')],'grant_type':_0xfdf1('0x27')},'json':!![]};return rp(_0x546392)['then'](function(_0x3944e6){accountsTokens[_0x167434['id']]={'access_token':_0x3944e6[_0xfdf1('0x1b')],'expires_in':moment()[_0xfdf1('0x28')](_0x3944e6[_0xfdf1('0x1d')],_0xfdf1('0x29'))};_0x266a4e(_0x3944e6[_0xfdf1('0x1b')]);})[_0xfdf1('0x2a')](function(_0x38e14d){logger['error'](_0xfdf1('0x2b'),_0x38e14d['stack']);_0xabbb94(_0x38e14d);});});}function getUser(_0x2431c1,_0x54c5b2,_0x28f1eb,_0x20a941){logger['info'](_0xfdf1('0x2c'));return request({'method':_0xfdf1('0x2d'),'uri':util['format'](_0xfdf1('0x2e'),_0x54c5b2),'qs':{'type':_0xfdf1('0x2f')},'headers':{'Authorization':_0xfdf1('0x30')+_0x2431c1},'json':!![]})[_0xfdf1('0x31')](function(_0x578e5a){if(_0x578e5a[_0xfdf1('0x32')]){var _0x176c64=-0x1;if(_['isArrayLikeObject'](_0x578e5a[_0xfdf1('0x32')])){if(!_[_0xfdf1('0x1a')](_0x20a941)){_0x176c64=_[_0xfdf1('0x33')](_0x578e5a[_0xfdf1('0x32')],function(_0x31780c){return _0x31780c[_0xfdf1('0x34')]===_0x20a941;});}if(_0x176c64>=0x0){logger[_0xfdf1('0x35')](_0xfdf1('0x36'));}else{logger[_0xfdf1('0x35')]('Using\x20the\x20admin\x20account!');_0x176c64=_['findIndex'](_0x578e5a['users'],function(_0x3fd653){return _0x3fd653[_0xfdf1('0x37')][_0xfdf1('0x17')]===_0xfdf1('0x38');});}return _0x578e5a['users'][_0x176c64];}else{if(_0x578e5a[_0xfdf1('0x39')][_0xfdf1('0x37')][_0xfdf1('0x17')]===_0xfdf1('0x38')){logger[_0xfdf1('0x35')]('Using\x20the\x20admin\x20account!');user=_0x578e5a[_0xfdf1('0x39')];return user;}else{logger[_0xfdf1('0x3a')](_0xfdf1('0x3b'),JSON[_0xfdf1('0xc')](_0x578e5a));throw new Error(_0xfdf1('0x3c')+JSON[_0xfdf1('0xc')](_0x578e5a));}}}else{logger[_0xfdf1('0x3a')](_0xfdf1('0x3b'),JSON['stringify'](_0x578e5a));throw new Error(_0xfdf1('0x3c')+JSON[_0xfdf1('0xc')](_0x578e5a));}})[_0xfdf1('0x2a')](function(_0x39a7ad){console[_0xfdf1('0x3a')](_0x39a7ad);});}function getZohoUser(_0x416053,_0x1f9f15){return new BPromise(function(_0x4bed4c,_0x9ee85f){request(_0x416053)[_0xfdf1('0x31')](function(_0x422820){var _0x9f3c8e=null;if(_0x422820){_0x9f3c8e=_0x422820[_0xfdf1('0x3d')][0x0];_0x9f3c8e['enduserType']=_0x1f9f15;}_0x4bed4c(_0x9f3c8e);})[_0xfdf1('0x2a')](function(_0x44a81c){_0x9ee85f(_0x44a81c);});});}function createEndUser(_0x3a590e,_0x1ac0ff,_0x444133,_0x1a9f10,_0x84f537,_0x25b952){var _0x444133=getName(_0x444133);return request({'method':'POST','uri':_0xfdf1('0x3e')+_0x1ac0ff+_0xfdf1('0x3f')+_[_0xfdf1('0x40')](_0x25b952[_0xfdf1('0x41')])+'s','body':{'data':[{'Last_Name':_0x444133[0x1],'First_Name':_0x444133[0x0],'Phone':_0x1a9f10,'Owner':{'name':!_[_0xfdf1('0x1a')](_0x84f537['role'][_0xfdf1('0x17')])?_0x84f537[_0xfdf1('0x42')]['name']:!_['isNil'](_0x84f537['first_name'])?_0x84f537[_0xfdf1('0x43')]+'\x20'+_0x84f537['last_name']:_0x84f537[_0xfdf1('0x44')],'id':_0x84f537['id']}}]},'headers':{'Authorization':_0xfdf1('0x30')+_0x3a590e},'json':!![]})[_0xfdf1('0x31')](function(_0x8f8ca0){if(_0x8f8ca0&&_0x8f8ca0['data'][0x0][_0xfdf1('0x45')]===_0xfdf1('0x46')){var _0x41bbd9=_0x8f8ca0[_0xfdf1('0x3d')][0x0]['details'];_0x41bbd9[_0xfdf1('0x47')]=_['startCase'](_0x25b952[_0xfdf1('0x41')])+'s';return _0x41bbd9;}logger[_0xfdf1('0x3a')](_0xfdf1('0x3b'),JSON['stringify'](data));throw new Error(_0xfdf1('0x48')+JSON[_0xfdf1('0xc')](data));})[_0xfdf1('0x2a')](function(_0x95c1){console[_0xfdf1('0x49')](_0xfdf1('0x4a'),_0x95c1);});}function getEndUser(_0x19b1a3,_0x54c428,_0x3b7d62,_0x46bdd9,_0x33fb27,_0xfa1cb1,_0x3596e6){var _0x525fcb={'method':_0xfdf1('0x2d'),'uri':'','headers':{'Authorization':_0xfdf1('0x30')+_0x19b1a3},'json':!![]};switch(_0x3596e6[_0xfdf1('0x4b')]){case _0xfdf1('0x4c'):_0x525fcb['uri']=_0xfdf1('0x3e')+_0x54c428+_0xfdf1('0x4d')+_0x33fb27+'))';return getZohoUser(_0x525fcb,'Contacts')[_0xfdf1('0x31')](function(_0x143571){if(_0x143571)return _0x143571;_0x525fcb['uri']=_0xfdf1('0x3e')+_0x54c428+_0xfdf1('0x4e')+_0x33fb27+'))';return getZohoUser(_0x525fcb,'Leads')[_0xfdf1('0x31')](function(_0x212c1e){if(_0x212c1e)return _0x212c1e;if(_0x3596e6[_0xfdf1('0x41')]!=_0xfdf1('0x4f')){return createEndUser(_0x19b1a3,_0x54c428,_0x46bdd9,_0x33fb27,_0xfa1cb1,_0x3596e6);}else{return{};}});});break;case _0xfdf1('0x50'):_0x525fcb[_0xfdf1('0x51')]=_0xfdf1('0x3e')+_0x54c428+_0xfdf1('0x4d')+_0x33fb27+'))';return getZohoUser(_0x525fcb,_0xfdf1('0x52'))[_0xfdf1('0x31')](function(_0xb27b29){if(_0xb27b29)return _0xb27b29;if(_0x3596e6['moduleCreate']!=_0xfdf1('0x4f')){return createEndUser(_0x19b1a3,_0x54c428,_0x46bdd9,_0x33fb27,_0xfa1cb1,_0x3596e6);}else{return{};}});break;case _0xfdf1('0x53'):_0x525fcb[_0xfdf1('0x51')]=_0xfdf1('0x3e')+_0x54c428+_0xfdf1('0x4e')+_0x33fb27+'))';return getZohoUser(_0x525fcb,_0xfdf1('0x54'))[_0xfdf1('0x31')](function(_0x54256d){if(_0x54256d)return _0x54256d;if(_0x3596e6['moduleCreate']!=_0xfdf1('0x4f')){return createEndUser(_0x19b1a3,_0x54c428,_0x46bdd9,_0x33fb27,_0xfa1cb1,_0x3596e6);}else{return{};}});break;}}function getCall(_0x266fc5,_0x594e65,_0x5d1b8b,_0x43ed2c,_0x5ef39a,_0x301a39,_0x2300fb,_0xbd99b5){logger['info'](_0xfdf1('0x55'));var _0x161cbc={};_0x161cbc[_0xfdf1('0x56')]={'name':!_[_0xfdf1('0x1a')](_0x43ed2c[_0xfdf1('0x42')]['name'])&&!_[_0xfdf1('0x1a')](_0x43ed2c['profile'][_0xfdf1('0x17')])&&_0x43ed2c[_0xfdf1('0x37')][_0xfdf1('0x17')]===_0xfdf1('0x57')?_0x43ed2c[_0xfdf1('0x42')][_0xfdf1('0x17')]:!_[_0xfdf1('0x1a')](_0x43ed2c['first_name'])?_0x43ed2c[_0xfdf1('0x43')]+'\x20'+_0x43ed2c[_0xfdf1('0x44')]:_0x43ed2c[_0xfdf1('0x44')],'id':_0x43ed2c['id']};_0x161cbc[_0xfdf1('0x58')]=intUtil[_0xfdf1('0x59')](_0x301a39['Subjects'],_0x2300fb,'\x20');_0x161cbc[_0xfdf1('0x5a')]=intUtil[_0xfdf1('0x59')](_0x301a39[_0xfdf1('0x5b')],_0x2300fb,'\x0a');if(_0x5ef39a['enduserType']===_0xfdf1('0x52')){_0x161cbc[_0xfdf1('0x5c')]={'name':!_[_0xfdf1('0x1a')](_0x5ef39a['Full_Name'])?_0x5ef39a[_0xfdf1('0x5d')]:!_[_0xfdf1('0x1a')](_0x5ef39a['First_Name'])?_0x5ef39a[_0xfdf1('0x5e')]+'\x20'+_0x5ef39a[_0xfdf1('0x5f')]:_0x5ef39a[_0xfdf1('0x5f')],'id':_0x5ef39a['id']};}if(_0x5ef39a['enduserType']===_0xfdf1('0x54')){_0x161cbc[_0xfdf1('0x60')]={'name':!_[_0xfdf1('0x1a')](_0x5ef39a['Full_Name'])?_0x5ef39a[_0xfdf1('0x5d')]:!_['isNil'](_0x5ef39a[_0xfdf1('0x5e')])?_0x5ef39a[_0xfdf1('0x5e')]+'\x20'+_0x5ef39a['Last_Name']:_0x5ef39a[_0xfdf1('0x5f')],'id':_0x5ef39a['id']};_0x161cbc[_0xfdf1('0x61')]=_[_0xfdf1('0x40')](_0x5ef39a['enduserType']);}if(_0x2300fb[_0xfdf1('0x62')]){_0x161cbc[_0xfdf1('0x63')]=moment['utc'](parseInt(_0x2300fb[_0xfdf1('0x62')])*0x3e8)[_0xfdf1('0x64')](_0xfdf1('0x65'));}else if(_0x2300fb[_0xfdf1('0x66')]&&_0x2300fb[_0xfdf1('0x67')]){_0x161cbc[_0xfdf1('0x63')]=moment[_0xfdf1('0x68')](moment(_0x2300fb[_0xfdf1('0x67')],'YYYY-MM-DDTHH:mm:ss')[_0xfdf1('0x69')](moment(_0x2300fb[_0xfdf1('0x6a')],_0xfdf1('0x6b'))))['format'](_0xfdf1('0x65'));}switch(_0x2300fb[_0xfdf1('0x6c')]){case _0xfdf1('0x6d'):_0x161cbc['Call_Result']='Called';break;case _0xfdf1('0x6e'):case _0xfdf1('0x6f'):_0x161cbc[_0xfdf1('0x70')]='Answered';break;case _0xfdf1('0x71'):_0x161cbc[_0xfdf1('0x70')]=_0xfdf1('0x72');break;case _0xfdf1('0x73'):_0x161cbc[_0xfdf1('0x70')]=_0xfdf1('0x74');break;case _0xfdf1('0x75'):_0x161cbc[_0xfdf1('0x70')]=_0xfdf1('0x76');default:}_0x161cbc['Call_Start_Time']=(_0xbd99b5===_0xfdf1('0x77')?moment(_0x2300fb['starttime'])[_0xfdf1('0x64')](_0xfdf1('0x6b')):moment(_0x2300fb['agentcalledAt'])[_0xfdf1('0x64')](_0xfdf1('0x6b')))||moment()['format']('YYYY-MM-DDTHH:mm:ss');_0x161cbc[_0xfdf1('0x78')]=_0xbd99b5||_0xfdf1('0x79');_0x161cbc=_['merge'](_0x161cbc,getCustomFields(_0x301a39[_0xfdf1('0x7a')],_0x2300fb));return request({'method':_0xfdf1('0x22'),'uri':'https://www.zohoapis.'+_0x594e65+_0xfdf1('0x7b'),'headers':{'Authorization':_0xfdf1('0x30')+_0x266fc5},'body':{'data':[_0x161cbc]},'json':!![]})[_0xfdf1('0x31')](function(_0x326cb2){if(_0x326cb2&&_0x326cb2[_0xfdf1('0x3d')][0x0]['code']==='SUCCESS'){logger[_0xfdf1('0x35')](_0xfdf1('0x7c'));return{'id':_0x326cb2['data'][0x0][_0xfdf1('0x7d')]['id']};}})[_0xfdf1('0x2a')](function(_0xcf1b8b){logger[_0xfdf1('0x35')](_0xfdf1('0x7e'),_0xcf1b8b[_0xfdf1('0x7f')]);console['log'](_0xfdf1('0x7e'),_0xcf1b8b);});}exports[_0xfdf1('0x80')]=function(_0x371527,_0x599d8c,_0x4833bd,_0x1de430,_0x363054,_0x1acaa6){var _0x4b9ad1,_0x27cd50,_0x622b82;_0x1acaa6[_0xfdf1('0x81')]=intUtil[_0xfdf1('0x82')](_0x1acaa6[_0xfdf1('0x81')]);_0x1acaa6['serverUrl']=intUtil[_0xfdf1('0x82')](_0x1acaa6['serverUrl']);if(_0x363054&&_0x363054['monitor_format']){logger[_0xfdf1('0x35')](_0xfdf1('0x83'),'Recording\x20is\x20enabled!');_0x599d8c[_0xfdf1('0x84')]=_0x1acaa6[_0xfdf1('0x85')]+_0xfdf1('0x86')+_0x599d8c[_0xfdf1('0x87')]+_0xfdf1('0x88')+md5(_0x599d8c[_0xfdf1('0x87')]);}else{_0x599d8c['recordingURL']='';}var _0x53e27a=_0x1acaa6[_0xfdf1('0x81')]===_0xfdf1('0x89')?'eu':_0xfdf1('0x8a');return getAccessToken(_0x1acaa6)[_0xfdf1('0x31')](function(_0x55b529){_0x622b82=_0x55b529;return getUser(_0x622b82,_0x53e27a,_0x1acaa6,_0x1de430[_0xfdf1('0x34')]);})[_0xfdf1('0x31')](function(_0x5af5de){_0x4b9ad1=_0x5af5de;logger[_0xfdf1('0x35')](_0xfdf1('0x8b'),_0x4b9ad1['id']);return getEndUser(_0x622b82,_0x53e27a,_0x1acaa6,_0x599d8c['calleridname'],_0x599d8c[_0xfdf1('0x8c')],_0x4b9ad1,_0x4833bd);})[_0xfdf1('0x31')](function(_0x6e255d){_0x27cd50=_0x6e255d;return getCall(_0x622b82,_0x53e27a,_0x1acaa6,_0x4b9ad1,_0x27cd50,_0x4833bd,_0x599d8c,_0xfdf1('0x79'));})[_0xfdf1('0x31')](function(_0x1c16e8){if(_0x1c16e8){logger[_0xfdf1('0x35')](_0xfdf1('0x8d'),_0x1c16e8['id']);logger['info'](_0xfdf1('0x83'),_0xfdf1('0x8e'));emit(util[_0xfdf1('0x64')](_0xfdf1('0x8f'),_0x1de430['name']),_0xfdf1('0x90'),{'uri':'https://crm.'+_0x1acaa6[_0xfdf1('0x81')]+_0xfdf1('0x91')+_0x1c16e8['id']});}})['catch'](function(_0x288283){logger[_0xfdf1('0x3a')]('[QUEUE]',JSON[_0xfdf1('0xc')](_0x288283));});};exports[_0xfdf1('0x77')]=function(_0x3264c7,_0x594363,_0x47d2c9,_0x2b6733,_0x23abdf,_0x16e724,_0x59291b){var _0x3d7f74,_0x185a9e,_0x17cc4e;_0x16e724[_0xfdf1('0x81')]=intUtil[_0xfdf1('0x82')](_0x16e724['host']);_0x16e724['serverUrl']=intUtil[_0xfdf1('0x82')](_0x16e724['serverUrl']);if(_0x59291b&&_0x59291b[_0xfdf1('0x92')]&&_0x59291b[_0xfdf1('0x92')]!=='none'){logger[_0xfdf1('0x35')]('[OUTBOUND]',_0xfdf1('0x93'));_0x594363[_0xfdf1('0x84')]=_0x16e724[_0xfdf1('0x85')]+_0xfdf1('0x86')+_0x594363['uniqueid']+_0xfdf1('0x88')+md5(_0x594363[_0xfdf1('0x87')]);}var _0x7a64be=_0x16e724['host']===_0xfdf1('0x89')?'eu':_0xfdf1('0x8a');return getAccessToken(_0x16e724)[_0xfdf1('0x31')](function(_0x355c6d){_0x17cc4e=_0x355c6d;return getUser(_0x17cc4e,_0x7a64be,_0x16e724,_0x2b6733['email']);})['then'](function(_0x405283){_0x3d7f74=_0x405283;logger[_0xfdf1('0x35')]('The\x20User\x20ID\x20is:',_0x3d7f74['id']);return getEndUser(_0x17cc4e,_0x7a64be,_0x16e724,_0x594363[_0xfdf1('0x94')],_0x594363[_0xfdf1('0x95')],_0x3d7f74,_0x47d2c9);})['then'](function(_0x35ef39){_0x185a9e=_0x35ef39;return getCall(_0x17cc4e,_0x7a64be,_0x16e724,_0x3d7f74,_0x185a9e,_0x47d2c9,_0x594363,_0xfdf1('0x96'));})['then'](function(_0x66946e){if(_0x66946e){logger[_0xfdf1('0x35')](_0xfdf1('0x8d'),_0x66946e['id']);logger[_0xfdf1('0x35')](_0xfdf1('0x97'),_0xfdf1('0x8e'));emit(util[_0xfdf1('0x64')](_0xfdf1('0x8f'),_0x2b6733[_0xfdf1('0x17')]),_0xfdf1('0x90'),{'uri':'https://crm.'+_0x16e724[_0xfdf1('0x81')]+_0xfdf1('0x91')+_0x66946e['id']});}})['catch'](function(_0x2cbd9d){logger[_0xfdf1('0x3a')](_0xfdf1('0x97'),JSON[_0xfdf1('0xc')](_0x2cbd9d));});};exports['unmanaged']=function(_0x27bde8,_0x38d771,_0x3a6c6c,_0x5b9ad3,_0x3bdef6,_0x4f8fe9){var _0x2f72ba,_0x730a2f,_0x76a350;_0x4f8fe9[_0xfdf1('0x81')]=intUtil['stripTrailingSlash'](_0x4f8fe9[_0xfdf1('0x81')]);_0x4f8fe9[_0xfdf1('0x85')]=intUtil[_0xfdf1('0x82')](_0x4f8fe9[_0xfdf1('0x85')]);if(_0x3bdef6&&_0x3bdef6[_0xfdf1('0x98')]){logger['info']('['+_0x38d771[_0xfdf1('0x6c')][_0xfdf1('0x99')]()+']',_0xfdf1('0x93'));_0x38d771[_0xfdf1('0x84')]=_0x4f8fe9['serverUrl']+_0xfdf1('0x86')+_0x38d771[_0xfdf1('0x87')]+_0xfdf1('0x88')+md5(_0x38d771[_0xfdf1('0x87')]);}else{_0x38d771[_0xfdf1('0x84')]='';}var _0x18d1b7=_0x4f8fe9['host']===_0xfdf1('0x89')?'eu':_0xfdf1('0x8a');return getAccessToken(_0x4f8fe9)[_0xfdf1('0x31')](function(_0x256376){_0x76a350=_0x256376;return getUser(_0x76a350,_0x18d1b7,_0x4f8fe9);})[_0xfdf1('0x31')](function(_0x5d0375){_0x2f72ba=_0x5d0375;logger[_0xfdf1('0x35')](_0xfdf1('0x8b'),_0x2f72ba['id']);return getEndUser(_0x76a350,_0x18d1b7,_0x4f8fe9,_0x38d771[_0xfdf1('0x9a')],_0x38d771[_0xfdf1('0x8c')],_0x2f72ba,_0x3a6c6c);})['then'](function(_0x359bd8){_0x730a2f=_0x359bd8;return getCall(_0x76a350,_0x18d1b7,_0x4f8fe9,_0x2f72ba,_0x730a2f,_0x3a6c6c,_0x38d771,_0xfdf1('0x79'));})[_0xfdf1('0x31')](function(_0x1351c8){if(_0x1351c8){logger[_0xfdf1('0x35')](_0xfdf1('0x8d'),_0x1351c8['id']);}})[_0xfdf1('0x2a')](function(_0x4941a0){logger[_0xfdf1('0x3a')]('['+_0x38d771['lastevent'][_0xfdf1('0x99')]()+']',JSON['stringify'](_0x4941a0));});};
\ No newline at end of file
+var _0x7fc4=['/crm/v2/Calls','code','err','queue','host','stripTrailingSlash','serverUrl','monitor_format','Recording\x20is\x20enabled!','recordingURL','/api/voice/recordings/','uniqueid','zoho.eu','com','The\x20User\x20ID\x20is:','calleridname','calleridnum','Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','https://crm.','[QUEUE]','recordingFormat','none','/downloads?type=uniqueid&token=','destcalleridname','destcalleridnum','Outbound','The\x20Call\x20ID\x20is:','/crm/EntityInfo.do?module=Calls&id=','[OUTBOUND]','unmanaged','lastevent','toUpperCase','lodash','request-promise','md5','util','./util','ioredis','bluebird','../../../../config/environment','../../../../config/logger','redis','defaults','emit','debug','stringify','length','forEach','string','picklist','type','idField','toString','variable','variableName','customVariable','Variable','name','toLowerCase','indexOf','split','isNil','access_token','isBefore','expires_in','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.in','https://accounts.zoho.com.cn','/oauth/v2/token','refresh_token','then','add','seconds','catch','error','Failing\x20creating\x20the\x20access_token','stack','info','Search\x20user','GET','format','ActiveUsers','Zoho-oauthtoken\x20','users','findIndex','email','Agent\x20found!','Using\x20the\x20admin\x20account!','profile','Administrator','user','The\x20failing\x20result\x20is','Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20','data','enduserType','https://www.zohoapis.','/crm/v2/','startCase','moduleCreate','role','first_name','last_name','SUCCESS','details','log','moduleSearch','contact_lead','uri','Contacts','/crm/v2/Leads/search?criteria=((Phone:equals:','Leads','nothing','contact','/crm/v2/Contacts/search?criteria=((Phone:equals:','lead','Creating\x20new\x20call...','administrator','Subject','getString','Description','Descriptions','Full_Name','First_Name','Last_Name','talktime','utc','answertime','Call_Duration','endtime','diff','starttime','YYYY-MM-DDTHH:mm:ss','mm:ss','Call_Result','complete','Answered','rejected','Rejected','Abandoned','timeout','Call_Start_Time','Call_Type','Inbound','Fields','POST'];(function(_0x1a15ae,_0x41bf3a){var _0x45d51b=function(_0x591202){while(--_0x591202){_0x1a15ae['push'](_0x1a15ae['shift']());}};_0x45d51b(++_0x41bf3a);}(_0x7fc4,0x14c));var _0x47fc=function(_0x4277fa,_0x452d34){_0x4277fa=_0x4277fa-0x0;var _0x2ea70b=_0x7fc4[_0x4277fa];return _0x2ea70b;};'use strict';var _=require(_0x47fc('0x0'));var rp=require(_0x47fc('0x1'));var md5=require(_0x47fc('0x2'));var util=require(_0x47fc('0x3'));var intUtil=require(_0x47fc('0x4'));var moment=require('moment');var Redis=require(_0x47fc('0x5'));var BPromise=require(_0x47fc('0x6'));var config=require(_0x47fc('0x7'));var logger=require(_0x47fc('0x8'))('zoho');config[_0x47fc('0x9')]=_[_0x47fc('0xa')](config['redis'],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x47fc('0x9')]));function emit(_0x4b182e,_0x245691,_0x2fccbe){io['to'](_0x4b182e)[_0x47fc('0xb')](_0x245691,_0x2fccbe);}function request(_0x489099){logger[_0x47fc('0xc')]('[HTTP]',JSON[_0x47fc('0xd')](_0x489099));return rp(_0x489099);}function getCustomFields(_0x664b63,_0x184ad0){var _0x1f901a={};if(_0x664b63[_0x47fc('0xe')]>0x0){_[_0x47fc('0xf')](_0x664b63,function(_0x2b7fb9){if(_['includes']([_0x47fc('0x10'),_0x47fc('0x11')],_0x2b7fb9[_0x47fc('0x12')])&&_0x2b7fb9[_0x47fc('0x13')]){_0x1f901a[_0x2b7fb9[_0x47fc('0x13')]]=_0x2b7fb9['content'][_0x47fc('0x14')]();}else if(_0x2b7fb9[_0x47fc('0x12')]===_0x47fc('0x15')&&_0x2b7fb9[_0x47fc('0x16')]&&_0x2b7fb9[_0x47fc('0x13')]&&_0x184ad0[_0x2b7fb9['variableName']]){_0x1f901a[_0x2b7fb9[_0x47fc('0x13')]]=_0x184ad0[_0x2b7fb9[_0x47fc('0x16')]][_0x47fc('0x14')]();}else if(_0x2b7fb9[_0x47fc('0x12')]===_0x47fc('0x17')&&_0x2b7fb9[_0x47fc('0x18')]&&_0x2b7fb9[_0x47fc('0x18')]['name']&&_0x2b7fb9[_0x47fc('0x13')]&&_0x184ad0[_0x2b7fb9[_0x47fc('0x18')][_0x47fc('0x19')][_0x47fc('0x1a')]()]){_0x1f901a[_0x2b7fb9[_0x47fc('0x13')]]=_0x184ad0[_0x2b7fb9['Variable']['name'][_0x47fc('0x1a')]()][_0x47fc('0x14')]();}});}return _0x1f901a;}function getName(_0x19abb9){if(_0x19abb9[_0x47fc('0x1b')]('\x20')>0x0){var _0x1d7325=_0x19abb9[_0x47fc('0x1c')](/ (.+)/);if(_0x1d7325[0x1]){return _0x1d7325;}}return[_0x19abb9,_0x19abb9];}var accountsTokens={};function getAccessToken(_0x271e45){return new Promise(function(_0x2d7cdd,_0x22cac4){if(!_[_0x47fc('0x1d')](accountsTokens[_0x271e45['id']])&&!_[_0x47fc('0x1d')](accountsTokens[_0x271e45['id']][_0x47fc('0x1e')])){if(moment()[_0x47fc('0x1f')](accountsTokens[_0x271e45['id']][_0x47fc('0x20')])){_0x2d7cdd(accountsTokens[_0x271e45['id']][_0x47fc('0x1e')]);}}var _0x1d6195;switch(_0x271e45['zone']){case'US':_0x1d6195=_0x47fc('0x21');break;case'AU':_0x1d6195=_0x47fc('0x22');break;case'EU':_0x1d6195=_0x47fc('0x23');break;case'IN':_0x1d6195=_0x47fc('0x24');break;case'CN':_0x1d6195=_0x47fc('0x25');break;default:_0x1d6195='https://accounts.zoho.eu';break;}var _0x41724f={'method':'POST','uri':_0x1d6195+_0x47fc('0x26'),'qs':{'refresh_token':_0x271e45['refreshToken'],'client_id':_0x271e45['clientId'],'client_secret':_0x271e45['clientSecret'],'grant_type':_0x47fc('0x27')},'json':!![]};return rp(_0x41724f)[_0x47fc('0x28')](function(_0x455006){accountsTokens[_0x271e45['id']]={'access_token':_0x455006[_0x47fc('0x1e')],'expires_in':moment()[_0x47fc('0x29')](_0x455006[_0x47fc('0x20')],_0x47fc('0x2a'))};_0x2d7cdd(_0x455006['access_token']);})[_0x47fc('0x2b')](function(_0x3dd891){logger[_0x47fc('0x2c')](_0x47fc('0x2d'),_0x3dd891[_0x47fc('0x2e')]);_0x22cac4(_0x3dd891);});});}function getUser(_0x5b3c78,_0x4ae2ec,_0x79972b,_0x5597a0){logger[_0x47fc('0x2f')](_0x47fc('0x30'));return request({'method':_0x47fc('0x31'),'uri':util[_0x47fc('0x32')]('https://www.zohoapis.%s/crm/v2/users',_0x4ae2ec),'qs':{'type':_0x47fc('0x33')},'headers':{'Authorization':_0x47fc('0x34')+_0x5b3c78},'json':!![]})[_0x47fc('0x28')](function(_0x3539c1){if(_0x3539c1['users']){var _0x40060a=-0x1;if(_['isArrayLikeObject'](_0x3539c1[_0x47fc('0x35')])){if(!_[_0x47fc('0x1d')](_0x5597a0)){_0x40060a=_[_0x47fc('0x36')](_0x3539c1[_0x47fc('0x35')],function(_0x2fa640){return _0x2fa640[_0x47fc('0x37')]===_0x5597a0;});}if(_0x40060a>=0x0){logger[_0x47fc('0x2f')](_0x47fc('0x38'));}else{logger[_0x47fc('0x2f')](_0x47fc('0x39'));_0x40060a=_[_0x47fc('0x36')](_0x3539c1[_0x47fc('0x35')],function(_0xaa60f8){return _0xaa60f8[_0x47fc('0x3a')][_0x47fc('0x19')]===_0x47fc('0x3b');});}return _0x3539c1[_0x47fc('0x35')][_0x40060a];}else{if(_0x3539c1[_0x47fc('0x3c')]['profile'][_0x47fc('0x19')]===_0x47fc('0x3b')){logger[_0x47fc('0x2f')]('Using\x20the\x20admin\x20account!');user=_0x3539c1[_0x47fc('0x3c')];return user;}else{logger[_0x47fc('0x2c')](_0x47fc('0x3d'),JSON[_0x47fc('0xd')](_0x3539c1));throw new Error(_0x47fc('0x3e')+JSON[_0x47fc('0xd')](_0x3539c1));}}}else{logger[_0x47fc('0x2c')]('The\x20failing\x20result\x20is',JSON[_0x47fc('0xd')](_0x3539c1));throw new Error('Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20'+JSON['stringify'](_0x3539c1));}})[_0x47fc('0x2b')](function(_0x1d7f2b){console[_0x47fc('0x2c')](_0x1d7f2b);});}function getZohoUser(_0x39d5c4,_0x4ddbf2){return new BPromise(function(_0x4f921a,_0x51494f){request(_0x39d5c4)[_0x47fc('0x28')](function(_0x2ecd06){var _0x39cddf=null;if(_0x2ecd06){_0x39cddf=_0x2ecd06[_0x47fc('0x3f')][0x0];_0x39cddf[_0x47fc('0x40')]=_0x4ddbf2;}_0x4f921a(_0x39cddf);})[_0x47fc('0x2b')](function(_0x7f0557){_0x51494f(_0x7f0557);});});}function createEndUser(_0x5f4b1f,_0x52fb9d,_0x3cd42c,_0x472e4f,_0x462153,_0x146df3){var _0x3cd42c=getName(_0x3cd42c);return request({'method':'POST','uri':_0x47fc('0x41')+_0x52fb9d+_0x47fc('0x42')+_[_0x47fc('0x43')](_0x146df3[_0x47fc('0x44')])+'s','body':{'data':[{'Last_Name':_0x3cd42c[0x1],'First_Name':_0x3cd42c[0x0],'Phone':_0x472e4f,'Owner':{'name':!_[_0x47fc('0x1d')](_0x462153[_0x47fc('0x45')]['name'])?_0x462153['role']['name']:!_[_0x47fc('0x1d')](_0x462153[_0x47fc('0x46')])?_0x462153[_0x47fc('0x46')]+'\x20'+_0x462153['last_name']:_0x462153[_0x47fc('0x47')],'id':_0x462153['id']}}]},'headers':{'Authorization':_0x47fc('0x34')+_0x5f4b1f},'json':!![]})[_0x47fc('0x28')](function(_0x542b67){if(_0x542b67&&_0x542b67[_0x47fc('0x3f')][0x0]['code']===_0x47fc('0x48')){var _0x1a9692=_0x542b67[_0x47fc('0x3f')][0x0][_0x47fc('0x49')];_0x1a9692[_0x47fc('0x40')]=_[_0x47fc('0x43')](_0x146df3[_0x47fc('0x44')])+'s';return _0x1a9692;}logger[_0x47fc('0x2c')](_0x47fc('0x3d'),JSON[_0x47fc('0xd')](data));throw new Error('Error:\x20'+JSON['stringify'](data));})[_0x47fc('0x2b')](function(_0x43e6c2){console[_0x47fc('0x4a')]('CREATE\x20ERROR',_0x43e6c2);});}function getEndUser(_0x3447b5,_0x118f7e,_0x2569b4,_0x1ecd6c,_0x55aeaa,_0x54c541,_0xc1bfaf){var _0x428758={'method':'GET','uri':'','headers':{'Authorization':_0x47fc('0x34')+_0x3447b5},'json':!![]};switch(_0xc1bfaf[_0x47fc('0x4b')]){case _0x47fc('0x4c'):_0x428758[_0x47fc('0x4d')]='https://www.zohoapis.'+_0x118f7e+'/crm/v2/Contacts/search?criteria=((Phone:equals:'+_0x55aeaa+'))';return getZohoUser(_0x428758,_0x47fc('0x4e'))[_0x47fc('0x28')](function(_0x34516d){if(_0x34516d)return _0x34516d;_0x428758[_0x47fc('0x4d')]=_0x47fc('0x41')+_0x118f7e+_0x47fc('0x4f')+_0x55aeaa+'))';return getZohoUser(_0x428758,_0x47fc('0x50'))[_0x47fc('0x28')](function(_0x5c7272){if(_0x5c7272)return _0x5c7272;if(_0xc1bfaf[_0x47fc('0x44')]!=_0x47fc('0x51')){return createEndUser(_0x3447b5,_0x118f7e,_0x1ecd6c,_0x55aeaa,_0x54c541,_0xc1bfaf);}else{return{};}});});break;case _0x47fc('0x52'):_0x428758[_0x47fc('0x4d')]='https://www.zohoapis.'+_0x118f7e+_0x47fc('0x53')+_0x55aeaa+'))';return getZohoUser(_0x428758,_0x47fc('0x4e'))[_0x47fc('0x28')](function(_0x55cb53){if(_0x55cb53)return _0x55cb53;if(_0xc1bfaf[_0x47fc('0x44')]!=_0x47fc('0x51')){return createEndUser(_0x3447b5,_0x118f7e,_0x1ecd6c,_0x55aeaa,_0x54c541,_0xc1bfaf);}else{return{};}});break;case _0x47fc('0x54'):_0x428758[_0x47fc('0x4d')]=_0x47fc('0x41')+_0x118f7e+'/crm/v2/Leads/search?criteria=((Phone:equals:'+_0x55aeaa+'))';return getZohoUser(_0x428758,_0x47fc('0x50'))['then'](function(_0x10affd){if(_0x10affd)return _0x10affd;if(_0xc1bfaf[_0x47fc('0x44')]!=_0x47fc('0x51')){return createEndUser(_0x3447b5,_0x118f7e,_0x1ecd6c,_0x55aeaa,_0x54c541,_0xc1bfaf);}else{return{};}});break;}}function getCall(_0x4331f8,_0x1c7189,_0x37c0be,_0x1ab366,_0x9e0455,_0x2ba062,_0x37de24,_0x59c113){logger['info'](_0x47fc('0x55'));var _0x5bf73c={};_0x5bf73c['Owner']={'name':!_['isNil'](_0x1ab366[_0x47fc('0x45')][_0x47fc('0x19')])&&!_[_0x47fc('0x1d')](_0x1ab366[_0x47fc('0x3a')][_0x47fc('0x19')])&&_0x1ab366['profile'][_0x47fc('0x19')]===_0x47fc('0x56')?_0x1ab366[_0x47fc('0x45')][_0x47fc('0x19')]:!_['isNil'](_0x1ab366[_0x47fc('0x46')])?_0x1ab366[_0x47fc('0x46')]+'\x20'+_0x1ab366['last_name']:_0x1ab366[_0x47fc('0x47')],'id':_0x1ab366['id']};_0x5bf73c[_0x47fc('0x57')]=intUtil[_0x47fc('0x58')](_0x2ba062['Subjects'],_0x37de24,'\x20');_0x5bf73c[_0x47fc('0x59')]=intUtil['getString'](_0x2ba062[_0x47fc('0x5a')],_0x37de24,'\x0a');if(_0x9e0455['enduserType']===_0x47fc('0x4e')){_0x5bf73c['Who_Id']={'name':!_[_0x47fc('0x1d')](_0x9e0455[_0x47fc('0x5b')])?_0x9e0455[_0x47fc('0x5b')]:!_[_0x47fc('0x1d')](_0x9e0455['First_Name'])?_0x9e0455[_0x47fc('0x5c')]+'\x20'+_0x9e0455['Last_Name']:_0x9e0455[_0x47fc('0x5d')],'id':_0x9e0455['id']};}if(_0x9e0455[_0x47fc('0x40')]==='Leads'){_0x5bf73c['What_Id']={'name':!_['isNil'](_0x9e0455['Full_Name'])?_0x9e0455[_0x47fc('0x5b')]:!_['isNil'](_0x9e0455['First_Name'])?_0x9e0455[_0x47fc('0x5c')]+'\x20'+_0x9e0455['Last_Name']:_0x9e0455[_0x47fc('0x5d')],'id':_0x9e0455['id']};_0x5bf73c['$se_module']=_['startCase'](_0x9e0455[_0x47fc('0x40')]);}if(_0x37de24[_0x47fc('0x5e')]){_0x5bf73c['Call_Duration']=moment[_0x47fc('0x5f')](parseInt(_0x37de24['talktime'])*0x3e8)[_0x47fc('0x32')]('mm:ss');}else if(_0x37de24[_0x47fc('0x60')]&&_0x37de24['endtime']){_0x5bf73c[_0x47fc('0x61')]=moment[_0x47fc('0x5f')](moment(_0x37de24[_0x47fc('0x62')],'YYYY-MM-DDTHH:mm:ss')[_0x47fc('0x63')](moment(_0x37de24[_0x47fc('0x64')],_0x47fc('0x65'))))[_0x47fc('0x32')](_0x47fc('0x66'));}switch(_0x37de24['lastevent']){case'called':_0x5bf73c[_0x47fc('0x67')]='Called';break;case _0x47fc('0x68'):case'connect':_0x5bf73c[_0x47fc('0x67')]=_0x47fc('0x69');break;case _0x47fc('0x6a'):_0x5bf73c[_0x47fc('0x67')]=_0x47fc('0x6b');break;case'abandoned':_0x5bf73c[_0x47fc('0x67')]=_0x47fc('0x6c');break;case _0x47fc('0x6d'):_0x5bf73c[_0x47fc('0x67')]='Timeout';default:}_0x5bf73c[_0x47fc('0x6e')]=(_0x59c113==='outbound'?moment(_0x37de24[_0x47fc('0x64')])[_0x47fc('0x32')]('YYYY-MM-DDTHH:mm:ss'):moment(_0x37de24['agentcalledAt'])['format'](_0x47fc('0x65')))||moment()[_0x47fc('0x32')](_0x47fc('0x65'));_0x5bf73c[_0x47fc('0x6f')]=_0x59c113||_0x47fc('0x70');_0x5bf73c=_['merge'](_0x5bf73c,getCustomFields(_0x2ba062[_0x47fc('0x71')],_0x37de24));return request({'method':_0x47fc('0x72'),'uri':'https://www.zohoapis.'+_0x1c7189+_0x47fc('0x73'),'headers':{'Authorization':_0x47fc('0x34')+_0x4331f8},'body':{'data':[_0x5bf73c]},'json':!![]})['then'](function(_0x12cc9e){if(_0x12cc9e&&_0x12cc9e[_0x47fc('0x3f')][0x0][_0x47fc('0x74')]===_0x47fc('0x48')){logger[_0x47fc('0x2f')]('Call\x20created!');return{'id':_0x12cc9e[_0x47fc('0x3f')][0x0]['details']['id']};}})['catch'](function(_0x4e6439){logger['info']('err',_0x4e6439['stack']);console['log'](_0x47fc('0x75'),_0x4e6439);});}exports[_0x47fc('0x76')]=function(_0xe35260,_0x198b15,_0xd17122,_0x1b44da,_0x42fcc6,_0x2a7f10){var _0xe807ee,_0x58f352,_0x5a895c;_0x2a7f10[_0x47fc('0x77')]=intUtil[_0x47fc('0x78')](_0x2a7f10['host']);_0x2a7f10[_0x47fc('0x79')]=intUtil[_0x47fc('0x78')](_0x2a7f10[_0x47fc('0x79')]);if(_0x42fcc6&&_0x42fcc6[_0x47fc('0x7a')]){logger[_0x47fc('0x2f')]('[QUEUE]',_0x47fc('0x7b'));_0x198b15[_0x47fc('0x7c')]=_0x2a7f10[_0x47fc('0x79')]+_0x47fc('0x7d')+_0x198b15[_0x47fc('0x7e')]+'/downloads?type=uniqueid&token='+md5(_0x198b15[_0x47fc('0x7e')]);}else{_0x198b15[_0x47fc('0x7c')]='';}var _0x54ddcf=_0x2a7f10['host']===_0x47fc('0x7f')?'eu':_0x47fc('0x80');return getAccessToken(_0x2a7f10)[_0x47fc('0x28')](function(_0x45353e){_0x5a895c=_0x45353e;return getUser(_0x5a895c,_0x54ddcf,_0x2a7f10,_0x1b44da['email']);})[_0x47fc('0x28')](function(_0xad9f46){_0xe807ee=_0xad9f46;logger[_0x47fc('0x2f')](_0x47fc('0x81'),_0xe807ee['id']);return getEndUser(_0x5a895c,_0x54ddcf,_0x2a7f10,_0x198b15[_0x47fc('0x82')],_0x198b15[_0x47fc('0x83')],_0xe807ee,_0xd17122);})['then'](function(_0xda1d66){_0x58f352=_0xda1d66;return getCall(_0x5a895c,_0x54ddcf,_0x2a7f10,_0xe807ee,_0x58f352,_0xd17122,_0x198b15,'Inbound');})[_0x47fc('0x28')](function(_0x4a2601){if(_0x4a2601){logger[_0x47fc('0x2f')]('The\x20Call\x20ID\x20is:',_0x4a2601['id']);logger[_0x47fc('0x2f')]('[QUEUE]',_0x47fc('0x84'));emit(util[_0x47fc('0x32')](_0x47fc('0x85'),_0x1b44da[_0x47fc('0x19')]),_0x47fc('0x86'),{'uri':_0x47fc('0x87')+_0x2a7f10[_0x47fc('0x77')]+'/crm/EntityInfo.do?module=Calls&id='+_0x4a2601['id']});}})['catch'](function(_0x53209d){logger[_0x47fc('0x2c')](_0x47fc('0x88'),JSON['stringify'](_0x53209d));});};exports['outbound']=function(_0x3c9e70,_0x13a6d6,_0x471a0d,_0x41f8a8,_0x553c0a,_0x4b9972,_0x28e97c){var _0x40fadc,_0xf41b00,_0x5c08c0;_0x4b9972[_0x47fc('0x77')]=intUtil['stripTrailingSlash'](_0x4b9972[_0x47fc('0x77')]);_0x4b9972[_0x47fc('0x79')]=intUtil[_0x47fc('0x78')](_0x4b9972[_0x47fc('0x79')]);if(_0x28e97c&&_0x28e97c['recordingFormat']&&_0x28e97c[_0x47fc('0x89')]!==_0x47fc('0x8a')){logger[_0x47fc('0x2f')]('[OUTBOUND]','Recording\x20is\x20enabled!');_0x13a6d6[_0x47fc('0x7c')]=_0x4b9972['serverUrl']+_0x47fc('0x7d')+_0x13a6d6[_0x47fc('0x7e')]+_0x47fc('0x8b')+md5(_0x13a6d6[_0x47fc('0x7e')]);}var _0x7b3e63=_0x4b9972[_0x47fc('0x77')]===_0x47fc('0x7f')?'eu':_0x47fc('0x80');return getAccessToken(_0x4b9972)['then'](function(_0x5a8abc){_0x5c08c0=_0x5a8abc;return getUser(_0x5c08c0,_0x7b3e63,_0x4b9972,_0x41f8a8['email']);})[_0x47fc('0x28')](function(_0x344cbc){_0x40fadc=_0x344cbc;logger[_0x47fc('0x2f')]('The\x20User\x20ID\x20is:',_0x40fadc['id']);return getEndUser(_0x5c08c0,_0x7b3e63,_0x4b9972,_0x13a6d6[_0x47fc('0x8c')],_0x13a6d6[_0x47fc('0x8d')],_0x40fadc,_0x471a0d);})[_0x47fc('0x28')](function(_0x2b5b9c){_0xf41b00=_0x2b5b9c;return getCall(_0x5c08c0,_0x7b3e63,_0x4b9972,_0x40fadc,_0xf41b00,_0x471a0d,_0x13a6d6,_0x47fc('0x8e'));})[_0x47fc('0x28')](function(_0x365389){if(_0x365389){logger[_0x47fc('0x2f')](_0x47fc('0x8f'),_0x365389['id']);logger['info']('[OUTBOUND]',_0x47fc('0x84'));emit(util[_0x47fc('0x32')](_0x47fc('0x85'),_0x41f8a8[_0x47fc('0x19')]),_0x47fc('0x86'),{'uri':'https://crm.'+_0x4b9972[_0x47fc('0x77')]+_0x47fc('0x90')+_0x365389['id']});}})[_0x47fc('0x2b')](function(_0xf48b4b){logger['error'](_0x47fc('0x91'),JSON[_0x47fc('0xd')](_0xf48b4b));});};exports[_0x47fc('0x92')]=function(_0x5b6cfc,_0x38cc81,_0x1c9b68,_0x3daaf4,_0x29858a,_0x1ebe9d){var _0x5a9d81,_0x1e3228,_0x39bbcc;_0x1ebe9d[_0x47fc('0x77')]=intUtil[_0x47fc('0x78')](_0x1ebe9d[_0x47fc('0x77')]);_0x1ebe9d[_0x47fc('0x79')]=intUtil[_0x47fc('0x78')](_0x1ebe9d[_0x47fc('0x79')]);if(_0x29858a&&_0x29858a[_0x47fc('0x7a')]){logger[_0x47fc('0x2f')]('['+_0x38cc81[_0x47fc('0x93')][_0x47fc('0x94')]()+']','Recording\x20is\x20enabled!');_0x38cc81['recordingURL']=_0x1ebe9d['serverUrl']+_0x47fc('0x7d')+_0x38cc81['uniqueid']+_0x47fc('0x8b')+md5(_0x38cc81[_0x47fc('0x7e')]);}else{_0x38cc81[_0x47fc('0x7c')]='';}var _0x34cb24=_0x1ebe9d['host']==='zoho.eu'?'eu':_0x47fc('0x80');return getAccessToken(_0x1ebe9d)[_0x47fc('0x28')](function(_0x1ece7d){_0x39bbcc=_0x1ece7d;return getUser(_0x39bbcc,_0x34cb24,_0x1ebe9d);})[_0x47fc('0x28')](function(_0x45f29a){_0x5a9d81=_0x45f29a;logger[_0x47fc('0x2f')]('The\x20User\x20ID\x20is:',_0x5a9d81['id']);return getEndUser(_0x39bbcc,_0x34cb24,_0x1ebe9d,_0x38cc81['calleridname'],_0x38cc81['calleridnum'],_0x5a9d81,_0x1c9b68);})[_0x47fc('0x28')](function(_0x2d3926){_0x1e3228=_0x2d3926;return getCall(_0x39bbcc,_0x34cb24,_0x1ebe9d,_0x5a9d81,_0x1e3228,_0x1c9b68,_0x38cc81,'Inbound');})[_0x47fc('0x28')](function(_0x2506f9){if(_0x2506f9){logger['info']('The\x20Call\x20ID\x20is:',_0x2506f9['id']);}})[_0x47fc('0x2b')](function(_0x4ac61b){logger[_0x47fc('0x2c')]('['+_0x38cc81[_0x47fc('0x93')][_0x47fc('0x94')]()+']',JSON[_0x47fc('0xd')](_0x4ac61b));});};
\ No newline at end of file
index d9cfa04..2314d1d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf0a1=['data2','Script','data3','render','error','format','%s\x20\x27%s\x27\x20failed\x20with\x20code\x20%d\x20and\x20error:\x20%s','info','%s\x20\x27%s\x27\x20succeeded\x20with\x20output:\x20%s','util','shelljs','mustache','trigger'];(function(_0x7c0646,_0x45d16b){var _0x32416d=function(_0x22abdd){while(--_0x22abdd){_0x7c0646['push'](_0x7c0646['shift']());}};_0x32416d(++_0x45d16b);}(_0xf0a1,0xe6));var _0x1f0a=function(_0x1f1c62,_0x859e8a){_0x1f1c62=_0x1f1c62-0x0;var _0x503f0a=_0xf0a1[_0x1f1c62];return _0x503f0a;};'use strict';var util=require(_0x1f0a('0x0'));var sh=require(_0x1f0a('0x1'));var Mustache=require(_0x1f0a('0x2'));var logger=require('../../../../config/logger')(_0x1f0a('0x3'));exports['exec']=function(_0x422774,_0x5d9eb9){var _0x4ad032=_0x422774[_0x1f0a('0x4')]?_0x422774[_0x1f0a('0x4')]:_0x1f0a('0x5');var _0x145955=_0x422774[_0x1f0a('0x6')]?Mustache[_0x1f0a('0x7')](_0x422774[_0x1f0a('0x6')],_0x5d9eb9):_0x5d9eb9;sh['exec'](_0x145955,function(_0x3e204d,_0x3931cb,_0x17605a){if(_0x3e204d!==0x0){logger[_0x1f0a('0x8')](util[_0x1f0a('0x9')](_0x1f0a('0xa'),_0x4ad032,_0x145955,_0x3e204d,_0x17605a));}else{logger[_0x1f0a('0xb')](util[_0x1f0a('0x9')](_0x1f0a('0xc'),_0x4ad032,_0x145955,_0x3931cb));}});};
\ No newline at end of file
+var _0xadca=['render','data3','format','%s\x20\x27%s\x27\x20succeeded\x20with\x20output:\x20%s','shelljs','mustache','../../../../config/logger','exec','data2'];(function(_0x37c6e2,_0x2e9a58){var _0xfc03c8=function(_0x366d10){while(--_0x366d10){_0x37c6e2['push'](_0x37c6e2['shift']());}};_0xfc03c8(++_0x2e9a58);}(_0xadca,0x79));var _0xaadc=function(_0x12a62c,_0xc9c41a){_0x12a62c=_0x12a62c-0x0;var _0x268a58=_0xadca[_0x12a62c];return _0x268a58;};'use strict';var util=require('util');var sh=require(_0xaadc('0x0'));var Mustache=require(_0xaadc('0x1'));var logger=require(_0xaadc('0x2'))('trigger');exports[_0xaadc('0x3')]=function(_0xff81bf,_0x3a7923){var _0x5cca3f=_0xff81bf[_0xaadc('0x4')]?_0xff81bf[_0xaadc('0x4')]:'Script';var _0x17e544=_0xff81bf['data3']?Mustache[_0xaadc('0x5')](_0xff81bf[_0xaadc('0x6')],_0x3a7923):_0x3a7923;sh[_0xaadc('0x3')](_0x17e544,function(_0x429a73,_0x2831ce,_0x3af055){if(_0x429a73!==0x0){logger['error'](util[_0xaadc('0x7')]('%s\x20\x27%s\x27\x20failed\x20with\x20code\x20%d\x20and\x20error:\x20%s',_0x5cca3f,_0x17e544,_0x429a73,_0x3af055));}else{logger['info'](util[_0xaadc('0x7')](_0xaadc('0x8'),_0x5cca3f,_0x17e544,_0x2831ce));}});};
\ No newline at end of file
index 716b8d7..d65a1fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0729=['info','format','%s\x20%s\x20sending\x20request\x20with\x20following\x20options:\x20%s','then',',\x20request\x20body:\x20','object','stringify','catch','%s\x20%s\x20failed\x20with\x20status:\x20%d\x20and\x20error:\x20%s\x20%s','statusCode','message','request-promise','util','lodash','../../../../config/logger','trigger','exec','data1','toUpperCase','render','data2','data5','number','headers','data6','stack','GET','data7','body','error','body\x20has\x20been\x20passed\x20to\x20URLforward\x20in\x20a\x20wrong\x20format'];(function(_0x5572b7,_0x244036){var _0x1bc232=function(_0x338cc0){while(--_0x338cc0){_0x5572b7['push'](_0x5572b7['shift']());}};_0x1bc232(++_0x244036);}(_0x0729,0xc5));var _0x9072=function(_0x3db058,_0x59ea56){_0x3db058=_0x3db058-0x0;var _0x46a261=_0x0729[_0x3db058];return _0x46a261;};'use strict';var rp=require(_0x9072('0x0'));var util=require(_0x9072('0x1'));var _=require(_0x9072('0x2'));var Mustache=require('mustache');var logger=require(_0x9072('0x3'))(_0x9072('0x4'));exports[_0x9072('0x5')]=function(_0x48554d,_0x45c8c4){var _0x4f164e,_0x823b26;var _0x1f7222={'method':_0x48554d[_0x9072('0x6')][_0x9072('0x7')](),'uri':Mustache[_0x9072('0x8')](_0x48554d[_0x9072('0x9')],_0x45c8c4),'json':!![],'resolveWithFullResponse':!![],'timeout':typeof parseInt(_0x48554d[_0x9072('0xa')])===_0x9072('0xb')&&parseInt(_0x48554d['data5'])>=0x1&&parseInt(_0x48554d['data5'])<=0xa?parseInt(_0x48554d[_0x9072('0xa')])*0x3e8:0x5*0x3e8};try{_0x1f7222[_0x9072('0xc')]=_0x48554d[_0x9072('0xd')]?JSON['parse'](Mustache[_0x9072('0x8')](_0x48554d[_0x9072('0xd')],_0x45c8c4)):{};}catch(_0x272b76){logger['error'](_0x272b76[_0x9072('0xe')]);}switch(_0x48554d[_0x9072('0x6')][_0x9072('0x7')]()){case _0x9072('0xf'):case'DELETE':_0x4f164e=null;_0x1f7222['qs']=_0x45c8c4;break;case'POST':case'PUT':if(_0x48554d[_0x9072('0x10')]){try{_0x4f164e=JSON['parse'](Mustache[_0x9072('0x8')](_0x48554d[_0x9072('0x10')],_0x45c8c4));_0x1f7222[_0x9072('0x11')]=_0x4f164e;}catch(_0x25457a){logger[_0x9072('0x12')](_0x25457a[_0x9072('0xe')]);logger['error'](_0x9072('0x13'));}}else{_0x4f164e=_0x45c8c4;_0x1f7222[_0x9072('0x11')]=_0x4f164e;}break;}logger[_0x9072('0x14')](util[_0x9072('0x15')](_0x9072('0x16'),_0x48554d['data1'],_0x48554d[_0x9072('0x9')],JSON['stringify'](_0x1f7222)));rp(_0x1f7222)[_0x9072('0x17')](function(_0x54323b){_0x4f164e=!_['isNil'](_0x4f164e)?_0x9072('0x18')+_0x4f164e:'';_0x823b26=typeof _0x54323b[_0x9072('0x11')]===_0x9072('0x19')?JSON[_0x9072('0x1a')](_0x54323b['body']):_0x54323b[_0x9072('0x11')];logger[_0x9072('0x14')](util[_0x9072('0x15')]('%s\x20%s\x20succeeded\x20with\x20status:\x20%d\x20and\x20response:\x20%s',_0x48554d[_0x9072('0x6')],_0x48554d[_0x9072('0x9')],_0x54323b['statusCode'],_0x823b26));})[_0x9072('0x1b')](function(_0x58281a){logger['error'](util['format'](_0x9072('0x1c'),_0x48554d[_0x9072('0x6')],_0x48554d['data2'],_0x58281a[_0x9072('0x1d')],_0x58281a['name'],_0x58281a[_0x9072('0x1e')]));});};
\ No newline at end of file
+var _0x849b=['headers','parse','error','GET','DELETE','POST','PUT','data7','body','stack','body\x20has\x20been\x20passed\x20to\x20URLforward\x20in\x20a\x20wrong\x20format','info','format','stringify','then','isNil',',\x20request\x20body:\x20','object','%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','message','request-promise','lodash','mustache','../../../../config/logger','trigger','data1','toUpperCase','render','data2','data5','number'];(function(_0x3ddd41,_0x22a374){var _0x546698=function(_0x9f928f){while(--_0x9f928f){_0x3ddd41['push'](_0x3ddd41['shift']());}};_0x546698(++_0x22a374);}(_0x849b,0xc1));var _0xb849=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x849b[_0x3dd15e];return _0x231fd0;};'use strict';var rp=require(_0xb849('0x0'));var util=require('util');var _=require(_0xb849('0x1'));var Mustache=require(_0xb849('0x2'));var logger=require(_0xb849('0x3'))(_0xb849('0x4'));exports['exec']=function(_0x5372de,_0x5697cc){var _0x134bd9,_0x33ef26;var _0x21e2f0={'method':_0x5372de[_0xb849('0x5')][_0xb849('0x6')](),'uri':Mustache[_0xb849('0x7')](_0x5372de[_0xb849('0x8')],_0x5697cc),'json':!![],'resolveWithFullResponse':!![],'timeout':typeof parseInt(_0x5372de[_0xb849('0x9')])===_0xb849('0xa')&&parseInt(_0x5372de[_0xb849('0x9')])>=0x1&&parseInt(_0x5372de[_0xb849('0x9')])<=0xa?parseInt(_0x5372de[_0xb849('0x9')])*0x3e8:0x5*0x3e8};try{_0x21e2f0[_0xb849('0xb')]=_0x5372de['data6']?JSON[_0xb849('0xc')](Mustache[_0xb849('0x7')](_0x5372de['data6'],_0x5697cc)):{};}catch(_0x2ae6a8){logger[_0xb849('0xd')](_0x2ae6a8['stack']);}switch(_0x5372de['data1']['toUpperCase']()){case _0xb849('0xe'):case _0xb849('0xf'):_0x134bd9=null;_0x21e2f0['qs']=_0x5697cc;break;case _0xb849('0x10'):case _0xb849('0x11'):if(_0x5372de[_0xb849('0x12')]){try{_0x134bd9=JSON['parse'](Mustache[_0xb849('0x7')](_0x5372de[_0xb849('0x12')],_0x5697cc));_0x21e2f0[_0xb849('0x13')]=_0x134bd9;}catch(_0x3f7198){logger['error'](_0x3f7198[_0xb849('0x14')]);logger['error'](_0xb849('0x15'));}}else{_0x134bd9=_0x5697cc;_0x21e2f0[_0xb849('0x13')]=_0x134bd9;}break;}logger[_0xb849('0x16')](util[_0xb849('0x17')]('%s\x20%s\x20sending\x20request\x20with\x20following\x20options:\x20%s',_0x5372de[_0xb849('0x5')],_0x5372de[_0xb849('0x8')],JSON[_0xb849('0x18')](_0x21e2f0)));rp(_0x21e2f0)[_0xb849('0x19')](function(_0x1aec5c){_0x134bd9=!_[_0xb849('0x1a')](_0x134bd9)?_0xb849('0x1b')+_0x134bd9:'';_0x33ef26=typeof _0x1aec5c[_0xb849('0x13')]===_0xb849('0x1c')?JSON[_0xb849('0x18')](_0x1aec5c[_0xb849('0x13')]):_0x1aec5c[_0xb849('0x13')];logger[_0xb849('0x16')](util[_0xb849('0x17')](_0xb849('0x1d'),_0x5372de[_0xb849('0x5')],_0x5372de[_0xb849('0x8')],_0x1aec5c[_0xb849('0x1e')],_0x33ef26));})[_0xb849('0x1f')](function(_0x16cf37){logger['error'](util[_0xb849('0x17')](_0xb849('0x20'),_0x5372de[_0xb849('0x5')],_0x5372de[_0xb849('0x8')],_0x16cf37[_0xb849('0x1e')],_0x16cf37['name'],_0x16cf37[_0xb849('0x21')]));});};
\ No newline at end of file
index c9996a9..5a066b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x83b8=['message','result','catch','rpc','exports','jayson/promise','bluebird','../../config/logger','routing','client','Request','request','then','debug','error'];(function(_0x3f156d,_0x3e82f4){var _0xec96ed=function(_0x456d63){while(--_0x456d63){_0x3f156d['push'](_0x3f156d['shift']());}};_0xec96ed(++_0x3e82f4);}(_0x83b8,0xaa));var _0x883b=function(_0x589671,_0x5090e8){_0x589671=_0x589671-0x0;var _0x4ba4b8=_0x83b8[_0x589671];return _0x4ba4b8;};'use strict';var jayson=require(_0x883b('0x0'));var BPromise=require(_0x883b('0x1'));var logger=require(_0x883b('0x2'))(_0x883b('0x3'));var client=jayson[_0x883b('0x4')]['http']({'port':0x2329});client[_0x883b('0x5')]=function(_0x573f8f,_0x516f70){return new BPromise(function(_0x565bfb,_0x356638){return client[_0x883b('0x6')](_0x573f8f,_0x516f70)[_0x883b('0x7')](function(_0x1d5287){logger[_0x883b('0x8')]('rpc',_0x883b('0x3'),_0x573f8f,_0x516f70,_0x1d5287);if(_0x1d5287['error']){logger[_0x883b('0x9')]('rpc',_0x883b('0x3'),_0x573f8f,_0x1d5287['error'][_0x883b('0xa')],_0x516f70);return _0x356638(_0x1d5287[_0x883b('0x9')]['message']);}else{return _0x565bfb(_0x1d5287[_0x883b('0xb')]);}})[_0x883b('0xc')](function(_0x4c0add){logger[_0x883b('0x9')](_0x883b('0xd'),'routing',_0x573f8f,_0x4c0add,_0x516f70);return _0x356638(_0x4c0add);});});};module[_0x883b('0xe')]=client;
\ No newline at end of file
+var _0x93bc=['catch','exports','jayson/promise','bluebird','../../config/logger','routing','http','Request','then','debug','rpc','error','message'];(function(_0xd8a8af,_0x1e93f0){var _0x5b7278=function(_0x458800){while(--_0x458800){_0xd8a8af['push'](_0xd8a8af['shift']());}};_0x5b7278(++_0x1e93f0);}(_0x93bc,0x147));var _0xc93b=function(_0x3e4e0b,_0x8102f7){_0x3e4e0b=_0x3e4e0b-0x0;var _0x41726b=_0x93bc[_0x3e4e0b];return _0x41726b;};'use strict';var jayson=require(_0xc93b('0x0'));var BPromise=require(_0xc93b('0x1'));var logger=require(_0xc93b('0x2'))(_0xc93b('0x3'));var client=jayson['client'][_0xc93b('0x4')]({'port':0x2329});client[_0xc93b('0x5')]=function(_0x4ef73e,_0x2e91bb){return new BPromise(function(_0x1d2321,_0x11ae76){return client['request'](_0x4ef73e,_0x2e91bb)[_0xc93b('0x6')](function(_0x403707){logger[_0xc93b('0x7')](_0xc93b('0x8'),_0xc93b('0x3'),_0x4ef73e,_0x2e91bb,_0x403707);if(_0x403707[_0xc93b('0x9')]){logger[_0xc93b('0x9')](_0xc93b('0x8'),_0xc93b('0x3'),_0x4ef73e,_0x403707[_0xc93b('0x9')][_0xc93b('0xa')],_0x2e91bb);return _0x11ae76(_0x403707[_0xc93b('0x9')][_0xc93b('0xa')]);}else{return _0x1d2321(_0x403707['result']);}})[_0xc93b('0xb')](function(_0x106d83){logger[_0xc93b('0x9')](_0xc93b('0x8'),_0xc93b('0x3'),_0x4ef73e,_0x106d83,_0x2e91bb);return _0x11ae76(_0x106d83);});});};module[_0xc93b('0xc')]=client;
\ No newline at end of file
index cbb8050..4a407ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe6d8=['getSettings','loginMailFrequency','catch','error','Email\x20service\x20initialization','./server','./lib/email','../../config/logger','resolve','getMailAccounts','then','refresh','mailAccounts','listen'];(function(_0x2292d7,_0x587c17){var _0x6f9c5a=function(_0x568d34){while(--_0x568d34){_0x2292d7['push'](_0x2292d7['shift']());}};_0x6f9c5a(++_0x587c17);}(_0xe6d8,0x1a9));var _0x8e6d=function(_0x58da8a,_0x1fb6ff){_0x58da8a=_0x58da8a-0x0;var _0x5294b9=_0xe6d8[_0x58da8a];return _0x5294b9;};'use strict';var server=require(_0x8e6d('0x0'));var Realtime=require('./realtime');var EmailChannel=require(_0x8e6d('0x1'));var mailAccount=require('./rpc/mailAccount');var setting=require('./rpc/setting');var logger=require(_0x8e6d('0x2'))('email');var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return Promise[_0x8e6d('0x3')]()['then'](mailAccount[_0x8e6d('0x4')]())['then'](realtime['initMailAccounts']())[_0x8e6d('0x5')](function(){email[_0x8e6d('0x6')](realtime[_0x8e6d('0x7')]);return realtime;});}function main(){return server[_0x8e6d('0x8')](realtime,email)['then'](function(){return initRealtime();})[_0x8e6d('0x5')](function(){return setting[_0x8e6d('0x9')]();})[_0x8e6d('0x5')](function(_0x131311){return setInterval(initRealtime,_0x131311[_0x8e6d('0xa')]*0x3e8);})[_0x8e6d('0xb')](function(_0x1ead72){logger[_0x8e6d('0xc')](_0x8e6d('0xd'),_0x1ead72);});}main();
\ No newline at end of file
+var _0xf382=['initMailAccounts','refresh','listen','getSettings','loginMailFrequency','error','Email\x20service\x20initialization','./realtime','./lib/email','./rpc/setting','../../config/logger','email','resolve','then','getMailAccounts'];(function(_0x8e322a,_0x2bab7d){var _0x4b604f=function(_0x46bba7){while(--_0x46bba7){_0x8e322a['push'](_0x8e322a['shift']());}};_0x4b604f(++_0x2bab7d);}(_0xf382,0xbb));var _0x2f38=function(_0xa0f369,_0x33b6ca){_0xa0f369=_0xa0f369-0x0;var _0x4efacc=_0xf382[_0xa0f369];return _0x4efacc;};'use strict';var server=require('./server');var Realtime=require(_0x2f38('0x0'));var EmailChannel=require(_0x2f38('0x1'));var mailAccount=require('./rpc/mailAccount');var setting=require(_0x2f38('0x2'));var logger=require(_0x2f38('0x3'))(_0x2f38('0x4'));var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return Promise[_0x2f38('0x5')]()[_0x2f38('0x6')](mailAccount[_0x2f38('0x7')]())[_0x2f38('0x6')](realtime[_0x2f38('0x8')]())[_0x2f38('0x6')](function(){email[_0x2f38('0x9')](realtime['mailAccounts']);return realtime;});}function main(){return server[_0x2f38('0xa')](realtime,email)[_0x2f38('0x6')](function(){return initRealtime();})[_0x2f38('0x6')](function(){return setting[_0x2f38('0xb')]();})[_0x2f38('0x6')](function(_0x55040f){return setInterval(initRealtime,_0x55040f[_0x2f38('0xc')]*0x3e8);})['catch'](function(_0x2ff350){logger[_0x2f38('0xd')](_0x2f38('0xe'),_0x2ff350);});}main();
\ No newline at end of file
index 2903dd9..4b2fa41 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x522a=['disabled','messageStatus','prototype','handleImapBox','connected','messages','New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s','firstName','lastName','from','notify','Mail\x20accepted\x20from\x20routing','catch','Mail\x20not\x20accepted\x20from\x20routing\x20%s','handleImapEnd','lastSync','send','verifySmtp','then','Smtp','verified','verify','lodash','moment','bluebird','md5','ioredis','../../../config/environment','../../../config/logger','email','redis','defaults','localhost','./imap','./smtp','../rpc/mailAccount','info','mailAccounts','imapAccounts','smtp','emit','name','key','Imap','status','total','isNil','stringify','refresh','hasOwnProperty','active','service','provider','handleImapEmail','end','bind','error','handleImapError'];(function(_0x3c71ef,_0x395521){var _0x56c788=function(_0x43a116){while(--_0x43a116){_0x3c71ef['push'](_0x3c71ef['shift']());}};_0x56c788(++_0x395521);}(_0x522a,0x1ac));var _0xa522=function(_0x53fc13,_0x5e225d){_0x53fc13=_0x53fc13-0x0;var _0x5e5a5e=_0x522a[_0x53fc13];return _0x5e5a5e;};'use strict';var _=require(_0xa522('0x0'));var moment=require(_0xa522('0x1'));var BPromise=require(_0xa522('0x2'));var md5=require(_0xa522('0x3'));var Redis=require(_0xa522('0x4'));var config=require(_0xa522('0x5'));var logger=require(_0xa522('0x6'))(_0xa522('0x7'));config[_0xa522('0x8')]=_[_0xa522('0x9')](config['redis'],{'host':_0xa522('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));var EmailImap=require(_0xa522('0xb'));var EmailSmtp=require(_0xa522('0xc'));var mailAccount=require(_0xa522('0xd'));var md5Accounts={};function EmailChannel(_0x4565ba){logger[_0xa522('0xe')]('start\x20email\x20channel');this[_0xa522('0xf')]=_0x4565ba[_0xa522('0xf')];this[_0xa522('0x10')]={};this[_0xa522('0x11')]=new EmailSmtp();}EmailChannel['prototype'][_0xa522('0x12')]=function(_0x29bbb2){var _0x3a81ca=this[_0xa522('0xf')][_0x29bbb2];var _0x406630={'id':_0x3a81ca['id'],'name':_0x3a81ca[_0xa522('0x13')],'key':_0x3a81ca[_0xa522('0x14')],'active':_0x3a81ca['active'],'Imap':{'status':_0x3a81ca[_0xa522('0x15')][_0xa522('0x16')],'messageStatus':_0x3a81ca[_0xa522('0x15')]['messageStatus'],'total':_0x3a81ca[_0xa522('0x15')][_0xa522('0x17')]}};if(_[_0xa522('0x18')](md5Accounts[_0x29bbb2])){md5Accounts[_0x29bbb2]={};}var _0x545307=md5(JSON[_0xa522('0x19')](_0x406630));if(md5Accounts[_0x29bbb2][_0xa522('0x3')]!==_0x545307){md5Accounts[_0x29bbb2]['md5']=_0x545307;io[_0xa522('0x12')]('mailAccount:update',_0x406630);}};EmailChannel['prototype'][_0xa522('0x1a')]=function(_0x125c71){for(var _0x55038d in _0x125c71){if(_0x125c71[_0xa522('0x1b')](_0x55038d)){if(_0x125c71[_0x55038d][_0xa522('0x15')]&&_0x125c71[_0x55038d][_0xa522('0x1c')]){var _0x5d252b=_0x125c71[_0x55038d][_0xa522('0x15')];if(!_0x5d252b[_0xa522('0x1d')]&&_0x125c71[_0x55038d][_0xa522('0x1e')]!=='custom')_0x5d252b[_0xa522('0x1d')]=_0x125c71[_0x55038d][_0xa522('0x1e')];if(!this[_0xa522('0x10')][_0xa522('0x1b')](_0x5d252b['id'])){this[_0xa522('0x10')][_0x5d252b['id']]=new EmailImap(_0x5d252b,_0x125c71[_0x55038d]['email']);this[_0xa522('0x10')][_0x5d252b['id']]['on']('box',this['handleImapBox']['bind'](this,_0x55038d));this[_0xa522('0x10')][_0x5d252b['id']]['on'](_0xa522('0x7'),this[_0xa522('0x1f')]['bind'](this,_0x55038d));this[_0xa522('0x10')][_0x5d252b['id']]['on'](_0xa522('0x20'),this['handleImapEnd'][_0xa522('0x21')](this,_0x55038d));this[_0xa522('0x10')][_0x5d252b['id']]['on'](_0xa522('0x22'),this[_0xa522('0x23')]['bind'](this,_0x55038d));}}else{if(_[_0xa522('0x18')](this[_0xa522('0xf')][_0x55038d][_0xa522('0x15')])){this[_0xa522('0xf')][_0x55038d][_0xa522('0x15')]={};}this[_0xa522('0xf')][_0x55038d]['Imap']['status']=_0xa522('0x24');this[_0xa522('0xf')][_0x55038d][_0xa522('0x15')][_0xa522('0x25')]='';this['emit'](_0x55038d);}}}};EmailChannel[_0xa522('0x26')][_0xa522('0x27')]=function(_0x6ad310,_0x4e298a){if(this[_0xa522('0xf')][_0x6ad310]){this[_0xa522('0xf')][_0x6ad310][_0xa522('0x15')][_0xa522('0x16')]=_0xa522('0x28');this['mailAccounts'][_0x6ad310][_0xa522('0x15')][_0xa522('0x25')]=_0x4e298a[_0xa522('0x13')];if(_0x4e298a['messages']){this[_0xa522('0xf')][_0x6ad310]['Imap']['total']=_0x4e298a[_0xa522('0x29')][_0xa522('0x17')];}return this[_0xa522('0x12')](_0x6ad310);}};EmailChannel['prototype'][_0xa522('0x1f')]=function(_0x2b5dfc,_0x1a83e6){logger[_0xa522('0xe')](_0xa522('0x2a'),_0x1a83e6[_0xa522('0x2b')],_0x1a83e6[_0xa522('0x2c')],_0x1a83e6[_0xa522('0x2d')],_0x2b5dfc);if(this[_0xa522('0xf')][_0x2b5dfc]){return mailAccount[_0xa522('0x2e')](_0x2b5dfc,_0x1a83e6)['then'](function(_0x62879){if(_0x62879){logger[_0xa522('0xe')](_0xa522('0x2f'));}})[_0xa522('0x30')](function(_0x1c1711){logger['error'](_0xa522('0x31'),JSON[_0xa522('0x19')](_0x1c1711));});}};EmailChannel['prototype'][_0xa522('0x32')]=function(_0x211e18){if(this[_0xa522('0xf')][_0x211e18]&&this[_0xa522('0xf')][_0x211e18][_0xa522('0x15')]){if(this[_0xa522('0x10')][this[_0xa522('0xf')][_0x211e18]['Imap']['id']]){delete this[_0xa522('0x10')][this[_0xa522('0xf')][_0x211e18][_0xa522('0x15')]['id']];}this[_0xa522('0xf')][_0x211e18][_0xa522('0x15')][_0xa522('0x33')]=moment();this[_0xa522('0x12')](_0x211e18);}};EmailChannel['prototype']['handleImapError']=function(_0x3643bf,_0x36a5a9){if(this['mailAccounts'][_0x3643bf]){this[_0xa522('0xf')][_0x3643bf][_0xa522('0x15')][_0xa522('0x16')]='error';this['mailAccounts'][_0x3643bf][_0xa522('0x15')][_0xa522('0x25')]=_0x36a5a9;return this[_0xa522('0x12')](_0x3643bf);}};EmailChannel[_0xa522('0x26')]['sendMail']=function(_0x1e3e9b,_0x502fda){return this['smtp'][_0xa522('0x34')](_0x1e3e9b,_0x502fda);};EmailChannel[_0xa522('0x26')][_0xa522('0x35')]=function(_0x4c8705){var _0x289d9b=this;if(this[_0xa522('0xf')][_0x4c8705['id']]){if(_['isNil'](this[_0xa522('0xf')][_0x4c8705['id']]['Smtp'])){this[_0xa522('0xf')][_0x4c8705['id']]['Smtp']={};}this[_0xa522('0xf')][_0x4c8705['id']]['Smtp'][_0xa522('0x33')]=moment();return new BPromise(function(_0x15b74c,_0x5e7122){return _0x289d9b[_0xa522('0x11')]['verify'](_0x4c8705)[_0xa522('0x36')](function(_0xfffba1){_0x289d9b[_0xa522('0xf')][_0x4c8705['id']][_0xa522('0x37')][_0xa522('0x16')]=_0xa522('0x38');_0x289d9b[_0xa522('0xf')][_0x4c8705['id']][_0xa522('0x37')]['messageStatus']='';_0x289d9b[_0xa522('0x12')](_0x4c8705['id']);_0x15b74c(_0xfffba1);})[_0xa522('0x30')](function(_0x3f01aa){_0x289d9b[_0xa522('0xf')][_0x4c8705['id']]['Smtp']['status']='error';_0x289d9b[_0xa522('0xf')][_0x4c8705['id']][_0xa522('0x37')]['messageStatus']=_0x3f01aa;_0x289d9b[_0xa522('0x12')](_0x4c8705['id']);_0x5e7122(_0x3f01aa);});});}return this[_0xa522('0x11')][_0xa522('0x39')](_0x4c8705);};module['exports']=EmailChannel;
\ No newline at end of file
+var _0x844a=['localhost','./imap','./smtp','../rpc/mailAccount','info','start\x20email\x20channel','mailAccounts','smtp','prototype','emit','name','active','Imap','status','total','isNil','stringify','md5','mailAccount:update','refresh','hasOwnProperty','service','provider','custom','imapAccounts','handleImapBox','bind','end','handleImapEnd','error','disabled','messageStatus','connected','messages','handleImapEmail','New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s','firstName','lastName','from','Mail\x20accepted\x20from\x20routing','catch','Mail\x20not\x20accepted\x20from\x20routing\x20%s','lastSync','sendMail','verifySmtp','Smtp','then','verified','verify','exports','lodash','../../../config/environment','../../../config/logger','email','defaults','redis'];(function(_0xdfcf44,_0x299cf7){var _0x19da20=function(_0x124d52){while(--_0x124d52){_0xdfcf44['push'](_0xdfcf44['shift']());}};_0x19da20(++_0x299cf7);}(_0x844a,0xda));var _0xa844=function(_0x5f1d62,_0x44d705){_0x5f1d62=_0x5f1d62-0x0;var _0x5eb2bf=_0x844a[_0x5f1d62];return _0x5eb2bf;};'use strict';var _=require(_0xa844('0x0'));var moment=require('moment');var BPromise=require('bluebird');var md5=require('md5');var Redis=require('ioredis');var config=require(_0xa844('0x1'));var logger=require(_0xa844('0x2'))(_0xa844('0x3'));config['redis']=_[_0xa844('0x4')](config[_0xa844('0x5')],{'host':_0xa844('0x6'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xa844('0x5')]));var EmailImap=require(_0xa844('0x7'));var EmailSmtp=require(_0xa844('0x8'));var mailAccount=require(_0xa844('0x9'));var md5Accounts={};function EmailChannel(_0x314968){logger[_0xa844('0xa')](_0xa844('0xb'));this['mailAccounts']=_0x314968[_0xa844('0xc')];this['imapAccounts']={};this[_0xa844('0xd')]=new EmailSmtp();}EmailChannel[_0xa844('0xe')][_0xa844('0xf')]=function(_0x1a76a1){var _0x1485e6=this[_0xa844('0xc')][_0x1a76a1];var _0x2ee0da={'id':_0x1485e6['id'],'name':_0x1485e6[_0xa844('0x10')],'key':_0x1485e6['key'],'active':_0x1485e6[_0xa844('0x11')],'Imap':{'status':_0x1485e6[_0xa844('0x12')][_0xa844('0x13')],'messageStatus':_0x1485e6[_0xa844('0x12')]['messageStatus'],'total':_0x1485e6[_0xa844('0x12')][_0xa844('0x14')]}};if(_[_0xa844('0x15')](md5Accounts[_0x1a76a1])){md5Accounts[_0x1a76a1]={};}var _0x3b762b=md5(JSON[_0xa844('0x16')](_0x2ee0da));if(md5Accounts[_0x1a76a1][_0xa844('0x17')]!==_0x3b762b){md5Accounts[_0x1a76a1][_0xa844('0x17')]=_0x3b762b;io['emit'](_0xa844('0x18'),_0x2ee0da);}};EmailChannel['prototype'][_0xa844('0x19')]=function(_0x5919f1){for(var _0x2cd99d in _0x5919f1){if(_0x5919f1[_0xa844('0x1a')](_0x2cd99d)){if(_0x5919f1[_0x2cd99d]['Imap']&&_0x5919f1[_0x2cd99d][_0xa844('0x11')]){var _0x5066d4=_0x5919f1[_0x2cd99d][_0xa844('0x12')];if(!_0x5066d4[_0xa844('0x1b')]&&_0x5919f1[_0x2cd99d][_0xa844('0x1c')]!==_0xa844('0x1d'))_0x5066d4[_0xa844('0x1b')]=_0x5919f1[_0x2cd99d][_0xa844('0x1c')];if(!this[_0xa844('0x1e')][_0xa844('0x1a')](_0x5066d4['id'])){this[_0xa844('0x1e')][_0x5066d4['id']]=new EmailImap(_0x5066d4,_0x5919f1[_0x2cd99d][_0xa844('0x3')]);this[_0xa844('0x1e')][_0x5066d4['id']]['on']('box',this[_0xa844('0x1f')][_0xa844('0x20')](this,_0x2cd99d));this[_0xa844('0x1e')][_0x5066d4['id']]['on'](_0xa844('0x3'),this['handleImapEmail'][_0xa844('0x20')](this,_0x2cd99d));this[_0xa844('0x1e')][_0x5066d4['id']]['on'](_0xa844('0x21'),this[_0xa844('0x22')]['bind'](this,_0x2cd99d));this[_0xa844('0x1e')][_0x5066d4['id']]['on'](_0xa844('0x23'),this['handleImapError'][_0xa844('0x20')](this,_0x2cd99d));}}else{if(_['isNil'](this[_0xa844('0xc')][_0x2cd99d][_0xa844('0x12')])){this[_0xa844('0xc')][_0x2cd99d]['Imap']={};}this['mailAccounts'][_0x2cd99d][_0xa844('0x12')][_0xa844('0x13')]=_0xa844('0x24');this[_0xa844('0xc')][_0x2cd99d][_0xa844('0x12')][_0xa844('0x25')]='';this[_0xa844('0xf')](_0x2cd99d);}}}};EmailChannel[_0xa844('0xe')][_0xa844('0x1f')]=function(_0x47fa9d,_0x2093fb){if(this[_0xa844('0xc')][_0x47fa9d]){this[_0xa844('0xc')][_0x47fa9d]['Imap'][_0xa844('0x13')]=_0xa844('0x26');this[_0xa844('0xc')][_0x47fa9d][_0xa844('0x12')][_0xa844('0x25')]=_0x2093fb[_0xa844('0x10')];if(_0x2093fb['messages']){this[_0xa844('0xc')][_0x47fa9d]['Imap'][_0xa844('0x14')]=_0x2093fb[_0xa844('0x27')][_0xa844('0x14')];}return this[_0xa844('0xf')](_0x47fa9d);}};EmailChannel['prototype'][_0xa844('0x28')]=function(_0x3da409,_0x3bb6b5){logger[_0xa844('0xa')](_0xa844('0x29'),_0x3bb6b5[_0xa844('0x2a')],_0x3bb6b5[_0xa844('0x2b')],_0x3bb6b5[_0xa844('0x2c')],_0x3da409);if(this[_0xa844('0xc')][_0x3da409]){return mailAccount['notify'](_0x3da409,_0x3bb6b5)['then'](function(_0x7324d7){if(_0x7324d7){logger['info'](_0xa844('0x2d'));}})[_0xa844('0x2e')](function(_0x3009d4){logger[_0xa844('0x23')](_0xa844('0x2f'),JSON['stringify'](_0x3009d4));});}};EmailChannel[_0xa844('0xe')][_0xa844('0x22')]=function(_0x1de17c){if(this[_0xa844('0xc')][_0x1de17c]&&this[_0xa844('0xc')][_0x1de17c][_0xa844('0x12')]){if(this['imapAccounts'][this['mailAccounts'][_0x1de17c][_0xa844('0x12')]['id']]){delete this['imapAccounts'][this['mailAccounts'][_0x1de17c][_0xa844('0x12')]['id']];}this[_0xa844('0xc')][_0x1de17c][_0xa844('0x12')][_0xa844('0x30')]=moment();this[_0xa844('0xf')](_0x1de17c);}};EmailChannel[_0xa844('0xe')]['handleImapError']=function(_0x11cb66,_0x2c7b95){if(this[_0xa844('0xc')][_0x11cb66]){this[_0xa844('0xc')][_0x11cb66][_0xa844('0x12')][_0xa844('0x13')]=_0xa844('0x23');this[_0xa844('0xc')][_0x11cb66][_0xa844('0x12')][_0xa844('0x25')]=_0x2c7b95;return this[_0xa844('0xf')](_0x11cb66);}};EmailChannel[_0xa844('0xe')][_0xa844('0x31')]=function(_0x21d478,_0x22a9be){return this[_0xa844('0xd')]['send'](_0x21d478,_0x22a9be);};EmailChannel[_0xa844('0xe')][_0xa844('0x32')]=function(_0x4a9155){var _0x603e4=this;if(this[_0xa844('0xc')][_0x4a9155['id']]){if(_[_0xa844('0x15')](this[_0xa844('0xc')][_0x4a9155['id']][_0xa844('0x33')])){this[_0xa844('0xc')][_0x4a9155['id']][_0xa844('0x33')]={};}this['mailAccounts'][_0x4a9155['id']][_0xa844('0x33')][_0xa844('0x30')]=moment();return new BPromise(function(_0x419358,_0x4a2ad8){return _0x603e4['smtp']['verify'](_0x4a9155)[_0xa844('0x34')](function(_0x19975d){_0x603e4[_0xa844('0xc')][_0x4a9155['id']][_0xa844('0x33')][_0xa844('0x13')]=_0xa844('0x35');_0x603e4[_0xa844('0xc')][_0x4a9155['id']]['Smtp'][_0xa844('0x25')]='';_0x603e4[_0xa844('0xf')](_0x4a9155['id']);_0x419358(_0x19975d);})['catch'](function(_0x5990ce){_0x603e4[_0xa844('0xc')][_0x4a9155['id']][_0xa844('0x33')][_0xa844('0x13')]=_0xa844('0x23');_0x603e4[_0xa844('0xc')][_0x4a9155['id']][_0xa844('0x33')][_0xa844('0x25')]=_0x5990ce;_0x603e4[_0xa844('0xf')](_0x4a9155['id']);_0x4a2ad8(_0x5990ce);});});}return this[_0xa844('0xd')][_0xa844('0x36')](_0x4a9155);};module[_0xa844('0x37')]=EmailChannel;
\ No newline at end of file
index 542c79b..28403b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d7c=['port','tls','autotls','required','openBox','handleOpenBox','handleError','emit','box','end','UNSEEN','handleReadUnseen','length','fetch','message','handleFetchMessage','once','handleFetchError','closeBox','body','handleMessageBody','attributes','handleMessageEnd','handleSimpleParser','handleMessageAttributes','handleFetchEnd','handleCloseBox','stringify','textCode','hasOwnProperty','upperFirst','lodash','imap','mailparser','simpleParser','iconv','Iconv','events','email','mailbox','getAccount','account','ready','handleReady','bind','handleEnd','error','connect','prototype','authTimeout','service','user','modernAuthentication','xoauth2','CloudProvider','password','authentication','anonymous@xcally.com','host'];(function(_0x974da,_0x5e7e0a){var _0x55af62=function(_0x5b743d){while(--_0x5b743d){_0x974da['push'](_0x974da['shift']());}};_0x55af62(++_0x5e7e0a);}(_0x3d7c,0x181));var _0xc3d7=function(_0x43ff4b,_0x27b7ec){_0x43ff4b=_0x43ff4b-0x0;var _0x1c17dc=_0x3d7c[_0x43ff4b];return _0x1c17dc;};'use strict';var _=require(_0xc3d7('0x0'));var util=require('util');var Imap=require(_0xc3d7('0x1'));var simpleParser=require(_0xc3d7('0x2'))[_0xc3d7('0x3')];var Iconv=require(_0xc3d7('0x4'))[_0xc3d7('0x5')];var EventEmitter=require(_0xc3d7('0x6'))['EventEmitter'];var utils=require('./utils');var logger=require('../../../config/logger')(_0xc3d7('0x7'));function EmailImap(_0x1f241a,_0x482765){this['mailbox']=_0x1f241a[_0xc3d7('0x8')];this['account']=this[_0xc3d7('0x9')](_0x1f241a,_0x482765);this[_0xc3d7('0x1')]=new Imap(this[_0xc3d7('0xa')]);this['imap']['once'](_0xc3d7('0xb'),this[_0xc3d7('0xc')][_0xc3d7('0xd')](this));this[_0xc3d7('0x1')]['once']('end',this[_0xc3d7('0xe')][_0xc3d7('0xd')](this));this[_0xc3d7('0x1')]['on'](_0xc3d7('0xf'),this['handleError'][_0xc3d7('0xd')](this));this['imap'][_0xc3d7('0x10')]();}util['inherits'](EmailImap,EventEmitter);EmailImap[_0xc3d7('0x11')]['getAccount']=function(_0x3a6521,_0x291b4c){var _0x536909={'connTimeout':_0x3a6521['connTimeout']?_0x3a6521['connTimeout']*0x3e8:0x2710,'authTimeout':_0x3a6521[_0xc3d7('0x12')]?_0x3a6521[_0xc3d7('0x12')]*0x3e8:0x1388};if(_0x3a6521[_0xc3d7('0x13')]){_0x536909[_0xc3d7('0x14')]=_0x3a6521[_0xc3d7('0x14')];if(_0x3a6521[_0xc3d7('0x15')]){_0x536909[_0xc3d7('0x16')]=utils['generateXOAuth2Token'](_0x3a6521[_0xc3d7('0x17')]['data5'],_0x3a6521['user']);}else{_0x536909['password']=_0x3a6521[_0xc3d7('0x18')];}}else{if(_0x3a6521[_0xc3d7('0x19')]){_0x536909[_0xc3d7('0x14')]=_0x3a6521[_0xc3d7('0x14')];_0x536909[_0xc3d7('0x18')]=_0x3a6521[_0xc3d7('0x18')];}}_0x536909['email']=_0x291b4c||_0x3a6521[_0xc3d7('0x14')]||_0xc3d7('0x1a');_0x536909[_0xc3d7('0x1b')]=_0x3a6521[_0xc3d7('0x1b')];_0x536909['port']=_0x3a6521[_0xc3d7('0x1c')]||0x3e1;if(_0x3a6521[_0xc3d7('0x1d')]){_0x536909[_0xc3d7('0x1d')]=!![];}else{_0x536909[_0xc3d7('0x1d')]=![];_0x536909[_0xc3d7('0x1e')]=_0xc3d7('0x1f');}return _0x536909;};EmailImap['prototype'][_0xc3d7('0xc')]=function(){this[_0xc3d7('0x1')][_0xc3d7('0x20')](this[_0xc3d7('0x8')],![],this[_0xc3d7('0x21')][_0xc3d7('0xd')](this));};EmailImap[_0xc3d7('0x11')][_0xc3d7('0x21')]=function(_0x383d82,_0x429a84){if(_0x383d82){this[_0xc3d7('0x22')](_0x383d82,!![]);}else{this[_0xc3d7('0x23')](_0xc3d7('0x24'),_0x429a84);this['readUnseen']();}};EmailImap['prototype']['handleCloseBox']=function(_0x4a3343){if(_0x4a3343){this[_0xc3d7('0x22')](_0x4a3343,!![]);}else{this[_0xc3d7('0x1')][_0xc3d7('0x25')]();}};EmailImap[_0xc3d7('0x11')]['readUnseen']=function(){this[_0xc3d7('0x1')]['search']([_0xc3d7('0x26')],this[_0xc3d7('0x27')][_0xc3d7('0xd')](this));};EmailImap[_0xc3d7('0x11')]['handleReadUnseen']=function(_0x24f96e,_0x55f297){if(_0x24f96e){this[_0xc3d7('0x22')](_0x24f96e,!![]);}else{if(_0x55f297[_0xc3d7('0x28')]){try{var _0x57d395=this[_0xc3d7('0x1')][_0xc3d7('0x29')](_0x55f297,{'bodies':'','markSeen':!![]});_0x57d395['on'](_0xc3d7('0x2a'),this[_0xc3d7('0x2b')]['bind'](this));_0x57d395[_0xc3d7('0x2c')](_0xc3d7('0xf'),this[_0xc3d7('0x2d')][_0xc3d7('0xd')](this));_0x57d395[_0xc3d7('0x2c')](_0xc3d7('0x25'),this['handleFetchEnd'][_0xc3d7('0xd')](this));}catch(_0x38e20f){logger['error'](_0x38e20f);}}else{this[_0xc3d7('0x1')][_0xc3d7('0x2e')](!![],this['handleCloseBox'][_0xc3d7('0xd')](this));}}};EmailImap[_0xc3d7('0x11')][_0xc3d7('0x2b')]=function(_0xbc4a0d){_0xbc4a0d['on'](_0xc3d7('0x2f'),this[_0xc3d7('0x30')]['bind'](this));_0xbc4a0d['once'](_0xc3d7('0x31'),this['handleMessageAttributes'][_0xc3d7('0xd')](this));_0xbc4a0d['once'](_0xc3d7('0x25'),this[_0xc3d7('0x32')][_0xc3d7('0xd')](this));};EmailImap[_0xc3d7('0x11')][_0xc3d7('0x30')]=function(_0x19462e){simpleParser(_0x19462e,{'Iconv':Iconv},this[_0xc3d7('0x33')][_0xc3d7('0xd')](this));};EmailImap['prototype'][_0xc3d7('0x34')]=function(){};EmailImap[_0xc3d7('0x11')][_0xc3d7('0x32')]=function(){};EmailImap[_0xc3d7('0x11')][_0xc3d7('0x33')]=function(_0x3f6fec,_0x31d8c4){if(_0x3f6fec){logger[_0xc3d7('0xf')](_0x3f6fec);}else{var _0x563384=this;utils['parser'](this[_0xc3d7('0xa')],_0x31d8c4,function(_0x11dcc7){_0x563384[_0xc3d7('0x23')](_0xc3d7('0x7'),_0x11dcc7);});}};EmailImap[_0xc3d7('0x11')][_0xc3d7('0x35')]=function(){this['imap'][_0xc3d7('0x2e')](!![],this[_0xc3d7('0x36')]['bind'](this));};EmailImap[_0xc3d7('0x11')][_0xc3d7('0x2d')]=function(_0x193a1d){this['handleError'](_0x193a1d);this[_0xc3d7('0x1')][_0xc3d7('0x2e')](!![],this[_0xc3d7('0x36')][_0xc3d7('0xd')](this));};EmailImap[_0xc3d7('0x11')][_0xc3d7('0xe')]=function(){this[_0xc3d7('0x23')](_0xc3d7('0x25'));};EmailImap[_0xc3d7('0x11')][_0xc3d7('0x22')]=function(_0x57a6fd,_0x378950){logger[_0xc3d7('0xf')](_0xc3d7('0x22'),this[_0xc3d7('0xa')]['email'],JSON[_0xc3d7('0x37')](_0x57a6fd));var _0x276ed2='';if(_0x57a6fd){if(_0x57a6fd['textCode']){_0x276ed2=_0x57a6fd[_0xc3d7('0x38')];}else{for(var _0x42fde7 in _0x57a6fd){if(_0x57a6fd[_0xc3d7('0x39')](_0x42fde7)){_0x276ed2+=_[_0xc3d7('0x3a')](_0x42fde7)+':\x20'+_0x57a6fd[_0x42fde7]+'\x0a';}}}}if(_0x378950){this[_0xc3d7('0x1')][_0xc3d7('0x25')]();}else{this[_0xc3d7('0x23')](_0xc3d7('0xf'),_0x276ed2);this[_0xc3d7('0x23')](_0xc3d7('0x25'));}};module['exports']=EmailImap;
\ No newline at end of file
+var _0x0279=['util','simpleParser','iconv','Iconv','EventEmitter','./utils','../../../config/logger','email','mailbox','imap','bind','once','end','error','handleError','inherits','prototype','connTimeout','authTimeout','service','user','modernAuthentication','data5','password','authentication','host','port','tls','autotls','required','handleReady','handleOpenBox','emit','box','handleCloseBox','readUnseen','search','UNSEEN','handleReadUnseen','fetch','message','handleFetchMessage','handleFetchError','handleFetchEnd','closeBox','body','handleMessageBody','attributes','handleMessageAttributes','handleMessageEnd','handleSimpleParser','account','handleEnd','stringify','textCode','hasOwnProperty','upperFirst','exports','lodash'];(function(_0x366388,_0x4595a6){var _0x41c97e=function(_0x4b9fff){while(--_0x4b9fff){_0x366388['push'](_0x366388['shift']());}};_0x41c97e(++_0x4595a6);}(_0x0279,0x75));var _0x9027=function(_0x3b0eac,_0x503c4e){_0x3b0eac=_0x3b0eac-0x0;var _0xdf4967=_0x0279[_0x3b0eac];return _0xdf4967;};'use strict';var _=require(_0x9027('0x0'));var util=require(_0x9027('0x1'));var Imap=require('imap');var simpleParser=require('mailparser')[_0x9027('0x2')];var Iconv=require(_0x9027('0x3'))[_0x9027('0x4')];var EventEmitter=require('events')[_0x9027('0x5')];var utils=require(_0x9027('0x6'));var logger=require(_0x9027('0x7'))(_0x9027('0x8'));function EmailImap(_0x6e8a45,_0x1900e3){this[_0x9027('0x9')]=_0x6e8a45[_0x9027('0x9')];this['account']=this['getAccount'](_0x6e8a45,_0x1900e3);this['imap']=new Imap(this['account']);this[_0x9027('0xa')]['once']('ready',this['handleReady'][_0x9027('0xb')](this));this[_0x9027('0xa')][_0x9027('0xc')](_0x9027('0xd'),this['handleEnd']['bind'](this));this[_0x9027('0xa')]['on'](_0x9027('0xe'),this[_0x9027('0xf')][_0x9027('0xb')](this));this[_0x9027('0xa')]['connect']();}util[_0x9027('0x10')](EmailImap,EventEmitter);EmailImap[_0x9027('0x11')]['getAccount']=function(_0x579868,_0xba7428){var _0x113864={'connTimeout':_0x579868[_0x9027('0x12')]?_0x579868[_0x9027('0x12')]*0x3e8:0x2710,'authTimeout':_0x579868[_0x9027('0x13')]?_0x579868[_0x9027('0x13')]*0x3e8:0x1388};if(_0x579868[_0x9027('0x14')]){_0x113864[_0x9027('0x15')]=_0x579868[_0x9027('0x15')];if(_0x579868[_0x9027('0x16')]){_0x113864['xoauth2']=utils['generateXOAuth2Token'](_0x579868['CloudProvider'][_0x9027('0x17')],_0x579868['user']);}else{_0x113864['password']=_0x579868[_0x9027('0x18')];}}else{if(_0x579868[_0x9027('0x19')]){_0x113864['user']=_0x579868[_0x9027('0x15')];_0x113864[_0x9027('0x18')]=_0x579868[_0x9027('0x18')];}}_0x113864[_0x9027('0x8')]=_0xba7428||_0x579868[_0x9027('0x15')]||'anonymous@xcally.com';_0x113864[_0x9027('0x1a')]=_0x579868[_0x9027('0x1a')];_0x113864['port']=_0x579868[_0x9027('0x1b')]||0x3e1;if(_0x579868['tls']){_0x113864[_0x9027('0x1c')]=!![];}else{_0x113864[_0x9027('0x1c')]=![];_0x113864[_0x9027('0x1d')]=_0x9027('0x1e');}return _0x113864;};EmailImap['prototype'][_0x9027('0x1f')]=function(){this[_0x9027('0xa')]['openBox'](this[_0x9027('0x9')],![],this['handleOpenBox'][_0x9027('0xb')](this));};EmailImap[_0x9027('0x11')][_0x9027('0x20')]=function(_0x454644,_0x410f52){if(_0x454644){this[_0x9027('0xf')](_0x454644,!![]);}else{this[_0x9027('0x21')](_0x9027('0x22'),_0x410f52);this['readUnseen']();}};EmailImap['prototype'][_0x9027('0x23')]=function(_0x51c151){if(_0x51c151){this[_0x9027('0xf')](_0x51c151,!![]);}else{this['imap']['end']();}};EmailImap[_0x9027('0x11')][_0x9027('0x24')]=function(){this[_0x9027('0xa')][_0x9027('0x25')]([_0x9027('0x26')],this[_0x9027('0x27')]['bind'](this));};EmailImap[_0x9027('0x11')][_0x9027('0x27')]=function(_0x280ed,_0x45adca){if(_0x280ed){this[_0x9027('0xf')](_0x280ed,!![]);}else{if(_0x45adca['length']){try{var _0x429f7f=this['imap'][_0x9027('0x28')](_0x45adca,{'bodies':'','markSeen':!![]});_0x429f7f['on'](_0x9027('0x29'),this[_0x9027('0x2a')][_0x9027('0xb')](this));_0x429f7f[_0x9027('0xc')]('error',this[_0x9027('0x2b')][_0x9027('0xb')](this));_0x429f7f[_0x9027('0xc')](_0x9027('0xd'),this[_0x9027('0x2c')][_0x9027('0xb')](this));}catch(_0x21982e){logger['error'](_0x21982e);}}else{this['imap'][_0x9027('0x2d')](!![],this[_0x9027('0x23')]['bind'](this));}}};EmailImap[_0x9027('0x11')][_0x9027('0x2a')]=function(_0x2c8b2a){_0x2c8b2a['on'](_0x9027('0x2e'),this[_0x9027('0x2f')][_0x9027('0xb')](this));_0x2c8b2a[_0x9027('0xc')](_0x9027('0x30'),this[_0x9027('0x31')][_0x9027('0xb')](this));_0x2c8b2a[_0x9027('0xc')](_0x9027('0xd'),this['handleMessageEnd'][_0x9027('0xb')](this));};EmailImap[_0x9027('0x11')][_0x9027('0x2f')]=function(_0x4f8456){simpleParser(_0x4f8456,{'Iconv':Iconv},this['handleSimpleParser']['bind'](this));};EmailImap[_0x9027('0x11')][_0x9027('0x31')]=function(){};EmailImap['prototype'][_0x9027('0x32')]=function(){};EmailImap[_0x9027('0x11')][_0x9027('0x33')]=function(_0x4adccf,_0x175171){if(_0x4adccf){logger[_0x9027('0xe')](_0x4adccf);}else{var _0x4738b1=this;utils['parser'](this[_0x9027('0x34')],_0x175171,function(_0x9be79f){_0x4738b1[_0x9027('0x21')](_0x9027('0x8'),_0x9be79f);});}};EmailImap[_0x9027('0x11')][_0x9027('0x2c')]=function(){this[_0x9027('0xa')][_0x9027('0x2d')](!![],this['handleCloseBox'][_0x9027('0xb')](this));};EmailImap['prototype'][_0x9027('0x2b')]=function(_0x2979c6){this['handleError'](_0x2979c6);this['imap'][_0x9027('0x2d')](!![],this[_0x9027('0x23')][_0x9027('0xb')](this));};EmailImap[_0x9027('0x11')][_0x9027('0x35')]=function(){this[_0x9027('0x21')](_0x9027('0xd'));};EmailImap['prototype']['handleError']=function(_0x5071a0,_0x4757c6){logger[_0x9027('0xe')](_0x9027('0xf'),this[_0x9027('0x34')][_0x9027('0x8')],JSON[_0x9027('0x36')](_0x5071a0));var _0x447539='';if(_0x5071a0){if(_0x5071a0['textCode']){_0x447539=_0x5071a0[_0x9027('0x37')];}else{for(var _0x31f548 in _0x5071a0){if(_0x5071a0[_0x9027('0x38')](_0x31f548)){_0x447539+=_[_0x9027('0x39')](_0x31f548)+':\x20'+_0x5071a0[_0x31f548]+'\x0a';}}}}if(_0x4757c6){this[_0x9027('0xa')][_0x9027('0xd')]();}else{this[_0x9027('0x21')](_0x9027('0xe'),_0x447539);this[_0x9027('0x21')](_0x9027('0xd'));}};module[_0x9027('0x3a')]=EmailImap;
\ No newline at end of file
index ac007dc..3e547bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x69f3=['exports','nodemailer','nodemailer-plugin-inline-base64','prototype','createTransport','compile','sendMail','toString','verify','Not\x20verifired'];(function(_0x5a59e9,_0x2da104){var _0x1242f4=function(_0x5b1f00){while(--_0x5b1f00){_0x5a59e9['push'](_0x5a59e9['shift']());}};_0x1242f4(++_0x2da104);}(_0x69f3,0x119));var _0x369f=function(_0x23073a,_0x3144ae){_0x23073a=_0x23073a-0x0;var _0x672fdd=_0x69f3[_0x23073a];return _0x672fdd;};'use strict';var nodemailer=require(_0x369f('0x0'));var inlineBase64=require(_0x369f('0x1'));function EmailSmtp(){}EmailSmtp[_0x369f('0x2')]['send']=function(_0x87d232,_0x358c78){return new Promise(function(_0x541e30,_0x4f4353){var _0x2769fa=nodemailer[_0x369f('0x3')](_0x87d232);_0x2769fa['use'](_0x369f('0x4'),inlineBase64());_0x2769fa[_0x369f('0x5')](_0x358c78,function(_0x9d7965,_0x4ac8d3){if(_0x9d7965){_0x4f4353(_0x9d7965[_0x369f('0x6')]());}else{_0x541e30(_0x4ac8d3);}});});};EmailSmtp['prototype']['verify']=function(_0x1e590f){return new Promise(function(_0x1bfc7a,_0x4289b2){var _0x508800=nodemailer[_0x369f('0x3')](_0x1e590f);_0x508800[_0x369f('0x7')](function(_0x39278d,_0x4c089f){if(_0x39278d){_0x4289b2(_0x39278d[_0x369f('0x6')]());}else{if(_0x4c089f){_0x1bfc7a(_0x4c089f);}else{_0x4289b2(_0x369f('0x8'));}}});});};module[_0x369f('0x9')]=EmailSmtp;
\ No newline at end of file
+var _0xd13d=['toString','Not\x20verifired','nodemailer','nodemailer-plugin-inline-base64','prototype','send','createTransport','use','compile','sendMail','verify'];(function(_0x57e8bb,_0x461963){var _0x51e9c6=function(_0x4314dc){while(--_0x4314dc){_0x57e8bb['push'](_0x57e8bb['shift']());}};_0x51e9c6(++_0x461963);}(_0xd13d,0x16d));var _0xdd13=function(_0x44cf38,_0x5376dc){_0x44cf38=_0x44cf38-0x0;var _0x3a4cbe=_0xd13d[_0x44cf38];return _0x3a4cbe;};'use strict';var nodemailer=require(_0xdd13('0x0'));var inlineBase64=require(_0xdd13('0x1'));function EmailSmtp(){}EmailSmtp[_0xdd13('0x2')][_0xdd13('0x3')]=function(_0x5a03cc,_0x2e0c99){return new Promise(function(_0x3cf9f1,_0x4bec5f){var _0x48dd68=nodemailer[_0xdd13('0x4')](_0x5a03cc);_0x48dd68[_0xdd13('0x5')](_0xdd13('0x6'),inlineBase64());_0x48dd68[_0xdd13('0x7')](_0x2e0c99,function(_0xa5392b,_0x2f6659){if(_0xa5392b){_0x4bec5f(_0xa5392b['toString']());}else{_0x3cf9f1(_0x2f6659);}});});};EmailSmtp['prototype'][_0xdd13('0x8')]=function(_0x101c3d){return new Promise(function(_0x591a75,_0x51ad76){var _0x36bfc5=nodemailer['createTransport'](_0x101c3d);_0x36bfc5['verify'](function(_0x516918,_0x1ab4d9){if(_0x516918){_0x51ad76(_0x516918[_0xdd13('0x9')]());}else{if(_0x1ab4d9){_0x591a75(_0x1ab4d9);}else{_0x51ad76(_0xdd13('0xa'));}}});});};module['exports']=EmailSmtp;
\ No newline at end of file
index 33c05fb..5132864 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe444=['Auto-Submitted:\x20auto-replied','X-Auto-Response-Suppress:\x20All','line','parser','from','subject','messageId','inReplyTo','date','YYYY-MM-DD\x20HH:mm:ss','textAsHtml','filter','info','content','BodyHTML','<p>Empty\x20message</p>','Attachments','Title','Data','user=','auth=Bearer\x20','utf-8','toString','lodash','moment','randomstring','util','email','../../../config/environment','head','value','address','anonymous','generate','@xcally.com','name','substring','indexOf','length','slice','join','Anonymous','isEmpty','test','html','includes','<img','attachments','forEach','push','filename','replace','_SRC','_IMG','<span\x20style=font-weight:bold>\x20[Attachment:\x20','body','message','originTo','originCc','bcc','attach','type','attachment','format','%s-%s','now','root','server/files/attachments/','writeFileSync','headerLines'];(function(_0x44e114,_0x352753){var _0x1e5012=function(_0x3a59b8){while(--_0x3a59b8){_0x44e114['push'](_0x44e114['shift']());}};_0x1e5012(++_0x352753);}(_0xe444,0x12f));var _0x4e44=function(_0x3a588d,_0x3fa5ab){_0x3a588d=_0x3a588d-0x0;var _0x222952=_0xe444[_0x3a588d];return _0x222952;};'use strict';var _=require(_0x4e44('0x0'));var moment=require(_0x4e44('0x1'));var random=require(_0x4e44('0x2'));var fs=require('fs');var path=require('path');var util=require(_0x4e44('0x3'));var tnef=require('node-tnef');var logger=require('../../../config/logger')(_0x4e44('0x4'));var config=require(_0x4e44('0x5'));function getAddress(_0x14e8d5){var _0x2a64cd=_[_0x4e44('0x6')](_0x14e8d5[_0x4e44('0x7')]);return _0x2a64cd&&_0x2a64cd[_0x4e44('0x8')]?_0x2a64cd['address']:_0x4e44('0x9')+random[_0x4e44('0xa')](0x6)+_0x4e44('0xb');}function getFirstName(_0x159bc3){var _0x1ba535=_[_0x4e44('0x6')](_0x159bc3[_0x4e44('0x7')]);if(_0x1ba535&&_0x1ba535[_0x4e44('0xc')]){if(_0x1ba535['name']==_0x1ba535[_0x4e44('0x8')]){return _0x1ba535[_0x4e44('0xc')][_0x4e44('0xd')](0x0,_0x1ba535[_0x4e44('0xc')][_0x4e44('0xe')]('@'));}var _0x22168d=_0x1ba535[_0x4e44('0xc')]['split'](/\s+/);return _0x22168d[_0x4e44('0xf')]>0x1?_0x22168d[_0x4e44('0x10')](0x0,-0x1)[_0x4e44('0x11')]('\x20'):_0x1ba535[_0x4e44('0xc')];}return _0x4e44('0x12');}function getLastName(_0xca2498){var _0x23e0b6=_['head'](_0xca2498[_0x4e44('0x7')]);if(_0x23e0b6&&_0x23e0b6['name']){var _0x4c3671=_0x23e0b6['name']['split'](/\s+/);return _0x4c3671[_0x4e44('0xf')]>0x1?_0x4c3671['pop']():'';}return'';}function getMails(_0x5db737,_0x41559a){var _0x2c9458='';for(var _0x1e4f22=0x0;_0x1e4f22<_0x41559a[_0x4e44('0x7')][_0x4e44('0xf')];_0x1e4f22+=0x1){if(_0x41559a[_0x4e44('0x7')][_0x1e4f22][_0x4e44('0x8')]!==_0x5db737){if(!_[_0x4e44('0x13')](_0x2c9458)){_0x2c9458+=',';}_0x2c9458+=_0x41559a['value'][_0x1e4f22][_0x4e44('0xc')]||_0x41559a[_0x4e44('0x7')][_0x1e4f22][_0x4e44('0x8')]||'';_0x2c9458+='\x20<';_0x2c9458+=_0x41559a[_0x4e44('0x7')][_0x1e4f22]['address']?_0x41559a[_0x4e44('0x7')][_0x1e4f22]['address']:_0x4e44('0x9')+random[_0x4e44('0xa')](0x6)+_0x4e44('0xb');_0x2c9458+='>';}}return _0x2c9458;}function parseEmail(_0x35bc47,_0x4a3e89,_0xc39e14){if(_0x4a3e89['html']){var _0x4f711c=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x4f711c[_0x4e44('0x14')](_0x4a3e89['html'])){_0x4a3e89['html']=_0x4a3e89[_0x4e44('0x15')]['replace'](_0x4f711c,'');}if(_0x4a3e89[_0x4e44('0x15')][_0x4e44('0x16')](_0x4e44('0x17'))){var _0x418038=[];_0x4a3e89[_0x4e44('0x18')][_0x4e44('0x19')](_0x592c51=>{_0x418038[_0x4e44('0x1a')](_0x592c51[_0x4e44('0x1b')]);});var _0x1325bb=/<img.*? _SRC(.*?)[^>]+>/g;var _0x3da1a6=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0x4125f9=_0x4a3e89[_0x4e44('0x15')][_0x4e44('0x1c')](_0x3da1a6,_0x4e44('0x1d'));var _0x1455d6=_0x4125f9['replace'](_0x1325bb,_0x4e44('0x1e'));for(let _0x342200=0x0;_0x342200<_0x418038[_0x4e44('0xf')];_0x342200++){var _0x36bc97=_0x1455d6[_0x4e44('0x1c')](_0x4e44('0x1e'),_0x4e44('0x1f')+_0x418038[_0x342200]+'\x20]</span>');_0x1455d6=_0x36bc97;}_0x4a3e89[_0x4e44('0x15')]=_0x1455d6;}_0xc39e14[_0x4e44('0x20')]=_0x4a3e89[_0x4e44('0x15')];}else{_0xc39e14[_0x4e44('0x20')]=_0x4a3e89['textAsHtml'];}if(_0xc39e14[_0x4e44('0x20')]){_0xc39e14[_0x4e44('0x20')]=_0xc39e14[_0x4e44('0x20')][_0x4e44('0x1c')](/<a\s+/gi,'<a\x20target=\x22_blank\x22\x20');}if(_0x4a3e89['to']){_0xc39e14[_0x4e44('0x21')][_0x4e44('0x22')]=getMails(null,_0x4a3e89['to']);var _0x573f15=getMails(_0x35bc47[_0x4e44('0x4')],_0x4a3e89['to']);if(!_[_0x4e44('0x13')](_0x573f15)){_0xc39e14['message']['cc']+=_0x573f15;}}if(_0x4a3e89['cc']){_0xc39e14[_0x4e44('0x21')]['originCc']=getMails(null,_0x4a3e89['cc']);var _0x1cf643=getMails(_0x35bc47[_0x4e44('0x4')],_0x4a3e89['cc']);if(!_[_0x4e44('0x13')](_0x1cf643)){if(!_[_0x4e44('0x13')](_0xc39e14[_0x4e44('0x21')]['cc'])){_0xc39e14['message']['cc']+=',';}_0xc39e14[_0x4e44('0x21')]['cc']+=_0x1cf643;}}if(!_['includes'](_0xc39e14['message']['originTo'],_0x35bc47['email'])&&!_[_0x4e44('0x16')](_0xc39e14[_0x4e44('0x21')][_0x4e44('0x23')],_0x35bc47[_0x4e44('0x4')])){_0xc39e14[_0x4e44('0x21')][_0x4e44('0x24')]=_0x35bc47[_0x4e44('0x4')];}if(_0x4a3e89[_0x4e44('0x18')]&&_0x4a3e89['attachments'][_0x4e44('0xf')]){_0xc39e14[_0x4e44('0x21')][_0x4e44('0x25')]=_0x4a3e89[_0x4e44('0x18')][_0x4e44('0xf')];for(var _0x1c6e85=0x0,_0x69b8d4,_0x302110,_0x504218;_0x1c6e85<_0x4a3e89[_0x4e44('0x18')][_0x4e44('0xf')];_0x1c6e85+=0x1){if(_0x4a3e89[_0x4e44('0x18')][_0x1c6e85][_0x4e44('0x26')]===_0x4e44('0x27')){_0x504218=_0x4a3e89['attachments'][_0x1c6e85]['filename']||'attachment-'+_0x1c6e85;_0x69b8d4=util[_0x4e44('0x28')](_0x4e44('0x29'),Date[_0x4e44('0x2a')](),_0x504218);_0x302110=path[_0x4e44('0x11')](config[_0x4e44('0x2b')],_0x4e44('0x2c'),_0x69b8d4);fs[_0x4e44('0x2d')](_0x302110,_0x4a3e89[_0x4e44('0x18')][_0x1c6e85]['content']);_0xc39e14[_0x4e44('0x21')][_0x4e44('0x18')][_0x4e44('0x1a')]({'name':_0x504218,'basename':_0x69b8d4,'type':_0x4a3e89[_0x4e44('0x18')][_0x1c6e85]['contentType'],'filepath':_0x302110});}}}if(_0x4a3e89[_0x4e44('0x2e')]&&_0x4a3e89[_0x4e44('0x2e')][_0x4e44('0xf')]>0x0){var _0x216c00=[_0x4e44('0x2f'),_0x4e44('0x30'),'Precedence:\x20auto_reply'];for(var _0x2e2548=0x0;_0x2e2548<_0x4a3e89[_0x4e44('0x2e')]['length'];_0x2e2548++){var _0xcfe957=_[_0x4e44('0xe')](_0x216c00,_0x4a3e89[_0x4e44('0x2e')][_0x2e2548][_0x4e44('0x31')]);if(_0xcfe957>=0x0){_0xc39e14['isAutoreply']=!![];}}}return _0xc39e14;}exports[_0x4e44('0x32')]=function(_0x1b916b,_0x42be79,_0x3d0e75){var _0x4ec389={'from':getAddress(_0x42be79[_0x4e44('0x33')]),'firstName':getFirstName(_0x42be79[_0x4e44('0x33')]),'lastName':getLastName(_0x42be79[_0x4e44('0x33')]),'mapKey':_0x4e44('0x4'),'message':{'from':getMails(_0x1b916b[_0x4e44('0x4')],_0x42be79['from']),'to':_0x1b916b[_0x4e44('0x4')],'cc':'','subject':_0x42be79[_0x4e44('0x34')]||'','messageId':_0x42be79[_0x4e44('0x35')],'inReplyTo':_0x42be79[_0x4e44('0x36')],'sentAt':moment(_0x42be79[_0x4e44('0x37')])[_0x4e44('0x28')](_0x4e44('0x38')),'attach':![],'attachments':[]}};if(!_0x42be79[_0x4e44('0x15')]&&!_0x42be79[_0x4e44('0x39')]){var _0x347917=_[_0x4e44('0x3a')](_0x42be79[_0x4e44('0x18')],{'contentType':'application/ms-tnef'});if(_0x347917[_0x4e44('0xf')]){logger[_0x4e44('0x3b')](util[_0x4e44('0x28')]('Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system',_0x42be79[_0x4e44('0x35')]));tnef['parseBuffer'](_['first'](_0x347917)[_0x4e44('0x3c')],function(_0x1ed701,_0x51b7b3){if(_0x51b7b3){_0x42be79[_0x4e44('0x15')]=_0x51b7b3[_0x4e44('0x3d')]||_0x4e44('0x3e');if(_0x51b7b3[_0x4e44('0x3f')]){for(var _0x3411bd=0x0;_0x3411bd<_0x51b7b3[_0x4e44('0x3f')][_0x4e44('0xf')];_0x3411bd++){var _0x35d9c3=_0x51b7b3[_0x4e44('0x3f')][_0x3411bd];_0x4ec389[_0x4e44('0x21')]['attachments'][_0x4e44('0x1a')]({'filename':_0x35d9c3[_0x4e44('0x40')],'content':Buffer[_0x4e44('0x33')](_0x35d9c3[_0x4e44('0x41')])});}}}_0x3d0e75(parseEmail(_0x1b916b,_0x42be79,_0x4ec389));});}else{_0x42be79[_0x4e44('0x15')]=_0x4e44('0x3e');_0x3d0e75(parseEmail(_0x1b916b,_0x42be79,_0x4ec389));}}else{_0x3d0e75(parseEmail(_0x1b916b,_0x42be79,_0x4ec389));}};exports['generateXOAuth2Token']=function(_0x590776,_0x587681){var _0x469669=[_0x4e44('0x42')+(_0x587681||''),_0x4e44('0x43')+_0x590776,'',''];return Buffer[_0x4e44('0x33')](_0x469669[_0x4e44('0x11')]('\ 1'),_0x4e44('0x44'))[_0x4e44('0x45')]('base64');};
\ No newline at end of file
+var _0xa9be=['messageId','inReplyTo','date','format','filter','info','parseBuffer','<p>Empty\x20message</p>','Attachments','Title','Data','user=','auth=Bearer\x20','utf-8','toString','lodash','moment','randomstring','node-tnef','../../../config/logger','email','head','value','address','anonymous','@xcally.com','name','substring','length','slice','join','pop','isEmpty','generate','html','test','replace','includes','<img','attachments','forEach','push','_SRC','_IMG','<span\x20style=font-weight:bold>\x20[Attachment:\x20','\x20]</span>','body','<a\x20target=\x22_blank\x22\x20','message','originCc','originTo','bcc','type','attachment','filename','%s-%s','server/files/attachments/','writeFileSync','content','contentType','headerLines','Precedence:\x20auto_reply','indexOf','line','isAutoreply','parser','from','subject'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xa9be,0x1eb));var _0xea9b=function(_0x2853b6,_0x32cb08){_0x2853b6=_0x2853b6-0x0;var _0x1b6389=_0xa9be[_0x2853b6];return _0x1b6389;};'use strict';var _=require(_0xea9b('0x0'));var moment=require(_0xea9b('0x1'));var random=require(_0xea9b('0x2'));var fs=require('fs');var path=require('path');var util=require('util');var tnef=require(_0xea9b('0x3'));var logger=require(_0xea9b('0x4'))(_0xea9b('0x5'));var config=require('../../../config/environment');function getAddress(_0xde64fa){var _0xb22316=_[_0xea9b('0x6')](_0xde64fa[_0xea9b('0x7')]);return _0xb22316&&_0xb22316['address']?_0xb22316[_0xea9b('0x8')]:_0xea9b('0x9')+random['generate'](0x6)+_0xea9b('0xa');}function getFirstName(_0xba9a59){var _0x51f6d0=_['head'](_0xba9a59[_0xea9b('0x7')]);if(_0x51f6d0&&_0x51f6d0[_0xea9b('0xb')]){if(_0x51f6d0[_0xea9b('0xb')]==_0x51f6d0[_0xea9b('0x8')]){return _0x51f6d0[_0xea9b('0xb')][_0xea9b('0xc')](0x0,_0x51f6d0[_0xea9b('0xb')]['indexOf']('@'));}var _0x3da014=_0x51f6d0[_0xea9b('0xb')]['split'](/\s+/);return _0x3da014[_0xea9b('0xd')]>0x1?_0x3da014[_0xea9b('0xe')](0x0,-0x1)[_0xea9b('0xf')]('\x20'):_0x51f6d0[_0xea9b('0xb')];}return'Anonymous';}function getLastName(_0x2010a7){var _0x38f3c2=_[_0xea9b('0x6')](_0x2010a7[_0xea9b('0x7')]);if(_0x38f3c2&&_0x38f3c2['name']){var _0x1c6ae9=_0x38f3c2['name']['split'](/\s+/);return _0x1c6ae9[_0xea9b('0xd')]>0x1?_0x1c6ae9[_0xea9b('0x10')]():'';}return'';}function getMails(_0x26aaf6,_0x4daea7){var _0x50016f='';for(var _0x49d47c=0x0;_0x49d47c<_0x4daea7['value'][_0xea9b('0xd')];_0x49d47c+=0x1){if(_0x4daea7[_0xea9b('0x7')][_0x49d47c][_0xea9b('0x8')]!==_0x26aaf6){if(!_[_0xea9b('0x11')](_0x50016f)){_0x50016f+=',';}_0x50016f+=_0x4daea7['value'][_0x49d47c]['name']||_0x4daea7[_0xea9b('0x7')][_0x49d47c][_0xea9b('0x8')]||'';_0x50016f+='\x20<';_0x50016f+=_0x4daea7[_0xea9b('0x7')][_0x49d47c][_0xea9b('0x8')]?_0x4daea7['value'][_0x49d47c][_0xea9b('0x8')]:_0xea9b('0x9')+random[_0xea9b('0x12')](0x6)+_0xea9b('0xa');_0x50016f+='>';}}return _0x50016f;}function parseEmail(_0x39a7ea,_0x49f07e,_0x50113e){if(_0x49f07e[_0xea9b('0x13')]){var _0x1928d2=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x1928d2[_0xea9b('0x14')](_0x49f07e['html'])){_0x49f07e[_0xea9b('0x13')]=_0x49f07e[_0xea9b('0x13')][_0xea9b('0x15')](_0x1928d2,'');}if(_0x49f07e[_0xea9b('0x13')][_0xea9b('0x16')](_0xea9b('0x17'))){var _0x55b56e=[];_0x49f07e[_0xea9b('0x18')][_0xea9b('0x19')](_0x5f3d2e=>{_0x55b56e[_0xea9b('0x1a')](_0x5f3d2e['filename']);});var _0x121072=/<img.*? _SRC(.*?)[^>]+>/g;var _0x31e967=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0x1e84c8=_0x49f07e[_0xea9b('0x13')][_0xea9b('0x15')](_0x31e967,_0xea9b('0x1b'));var _0x2999b2=_0x1e84c8[_0xea9b('0x15')](_0x121072,'_IMG');for(let _0x47c92b=0x0;_0x47c92b<_0x55b56e['length'];_0x47c92b++){var _0x24766f=_0x2999b2[_0xea9b('0x15')](_0xea9b('0x1c'),_0xea9b('0x1d')+_0x55b56e[_0x47c92b]+_0xea9b('0x1e'));_0x2999b2=_0x24766f;}_0x49f07e['html']=_0x2999b2;}_0x50113e[_0xea9b('0x1f')]=_0x49f07e[_0xea9b('0x13')];}else{_0x50113e[_0xea9b('0x1f')]=_0x49f07e['textAsHtml'];}if(_0x50113e[_0xea9b('0x1f')]){_0x50113e[_0xea9b('0x1f')]=_0x50113e[_0xea9b('0x1f')][_0xea9b('0x15')](/<a\s+/gi,_0xea9b('0x20'));}if(_0x49f07e['to']){_0x50113e[_0xea9b('0x21')]['originTo']=getMails(null,_0x49f07e['to']);var _0x2bd245=getMails(_0x39a7ea['email'],_0x49f07e['to']);if(!_[_0xea9b('0x11')](_0x2bd245)){_0x50113e[_0xea9b('0x21')]['cc']+=_0x2bd245;}}if(_0x49f07e['cc']){_0x50113e[_0xea9b('0x21')][_0xea9b('0x22')]=getMails(null,_0x49f07e['cc']);var _0x1fc2f2=getMails(_0x39a7ea['email'],_0x49f07e['cc']);if(!_[_0xea9b('0x11')](_0x1fc2f2)){if(!_[_0xea9b('0x11')](_0x50113e[_0xea9b('0x21')]['cc'])){_0x50113e['message']['cc']+=',';}_0x50113e[_0xea9b('0x21')]['cc']+=_0x1fc2f2;}}if(!_[_0xea9b('0x16')](_0x50113e[_0xea9b('0x21')][_0xea9b('0x23')],_0x39a7ea[_0xea9b('0x5')])&&!_['includes'](_0x50113e['message']['originCc'],_0x39a7ea[_0xea9b('0x5')])){_0x50113e['message'][_0xea9b('0x24')]=_0x39a7ea[_0xea9b('0x5')];}if(_0x49f07e['attachments']&&_0x49f07e[_0xea9b('0x18')]['length']){_0x50113e[_0xea9b('0x21')]['attach']=_0x49f07e[_0xea9b('0x18')][_0xea9b('0xd')];for(var _0x472f23=0x0,_0x49a943,_0x14561e,_0x120058;_0x472f23<_0x49f07e[_0xea9b('0x18')][_0xea9b('0xd')];_0x472f23+=0x1){if(_0x49f07e[_0xea9b('0x18')][_0x472f23][_0xea9b('0x25')]===_0xea9b('0x26')){_0x120058=_0x49f07e[_0xea9b('0x18')][_0x472f23][_0xea9b('0x27')]||'attachment-'+_0x472f23;_0x49a943=util['format'](_0xea9b('0x28'),Date['now'](),_0x120058);_0x14561e=path[_0xea9b('0xf')](config['root'],_0xea9b('0x29'),_0x49a943);fs[_0xea9b('0x2a')](_0x14561e,_0x49f07e[_0xea9b('0x18')][_0x472f23][_0xea9b('0x2b')]);_0x50113e[_0xea9b('0x21')][_0xea9b('0x18')][_0xea9b('0x1a')]({'name':_0x120058,'basename':_0x49a943,'type':_0x49f07e[_0xea9b('0x18')][_0x472f23][_0xea9b('0x2c')],'filepath':_0x14561e});}}}if(_0x49f07e['headerLines']&&_0x49f07e[_0xea9b('0x2d')][_0xea9b('0xd')]>0x0){var _0x56d559=['Auto-Submitted:\x20auto-replied','X-Auto-Response-Suppress:\x20All',_0xea9b('0x2e')];for(var _0x4034ba=0x0;_0x4034ba<_0x49f07e[_0xea9b('0x2d')][_0xea9b('0xd')];_0x4034ba++){var _0x401683=_[_0xea9b('0x2f')](_0x56d559,_0x49f07e['headerLines'][_0x4034ba][_0xea9b('0x30')]);if(_0x401683>=0x0){_0x50113e[_0xea9b('0x31')]=!![];}}}return _0x50113e;}exports[_0xea9b('0x32')]=function(_0x8872ad,_0x45123a,_0x13de91){var _0x462bac={'from':getAddress(_0x45123a[_0xea9b('0x33')]),'firstName':getFirstName(_0x45123a['from']),'lastName':getLastName(_0x45123a[_0xea9b('0x33')]),'mapKey':_0xea9b('0x5'),'message':{'from':getMails(_0x8872ad[_0xea9b('0x5')],_0x45123a[_0xea9b('0x33')]),'to':_0x8872ad['email'],'cc':'','subject':_0x45123a[_0xea9b('0x34')]||'','messageId':_0x45123a[_0xea9b('0x35')],'inReplyTo':_0x45123a[_0xea9b('0x36')],'sentAt':moment(_0x45123a[_0xea9b('0x37')])[_0xea9b('0x38')]('YYYY-MM-DD\x20HH:mm:ss'),'attach':![],'attachments':[]}};if(!_0x45123a[_0xea9b('0x13')]&&!_0x45123a['textAsHtml']){var _0x1c5faa=_[_0xea9b('0x39')](_0x45123a[_0xea9b('0x18')],{'contentType':'application/ms-tnef'});if(_0x1c5faa['length']){logger[_0xea9b('0x3a')](util[_0xea9b('0x38')]('Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system',_0x45123a['messageId']));tnef[_0xea9b('0x3b')](_['first'](_0x1c5faa)[_0xea9b('0x2b')],function(_0x28989a,_0x9eb25a){if(_0x9eb25a){_0x45123a[_0xea9b('0x13')]=_0x9eb25a['BodyHTML']||_0xea9b('0x3c');if(_0x9eb25a[_0xea9b('0x3d')]){for(var _0x1d4235=0x0;_0x1d4235<_0x9eb25a[_0xea9b('0x3d')][_0xea9b('0xd')];_0x1d4235++){var _0x3ed30c=_0x9eb25a[_0xea9b('0x3d')][_0x1d4235];_0x462bac[_0xea9b('0x21')]['attachments']['push']({'filename':_0x3ed30c[_0xea9b('0x3e')],'content':Buffer[_0xea9b('0x33')](_0x3ed30c[_0xea9b('0x3f')])});}}}_0x13de91(parseEmail(_0x8872ad,_0x45123a,_0x462bac));});}else{_0x45123a['html']='<p>Empty\x20message</p>';_0x13de91(parseEmail(_0x8872ad,_0x45123a,_0x462bac));}}else{_0x13de91(parseEmail(_0x8872ad,_0x45123a,_0x462bac));}};exports['generateXOAuth2Token']=function(_0x43b0bd,_0x875ff1){var _0x40058f=[_0xea9b('0x40')+(_0x875ff1||''),_0xea9b('0x41')+_0x43b0bd,'',''];return Buffer[_0xea9b('0x33')](_0x40058f[_0xea9b('0xf')]('\ 1'),_0xea9b('0x42'))[_0xea9b('0x43')]('base64');};
\ No newline at end of file
index 6a103e9..bc1794d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xacf6=['Imap','Smtp','lodash','name','Service','key','SERV','active'];(function(_0x5b84bc,_0x34322c){var _0xe28125=function(_0x261ad4){while(--_0x261ad4){_0x5b84bc['push'](_0x5b84bc['shift']());}};_0xe28125(++_0x34322c);}(_0xacf6,0x1e2));var _0x6acf=function(_0x37f2ef,_0x4d7385){_0x37f2ef=_0x37f2ef-0x0;var _0x5bd19c=_0xacf6[_0x37f2ef];return _0x5bd19c;};'use strict';var _=require(_0x6acf('0x0'));function MailAccount(_0x41d490){this['id']=_0x41d490['id']||0x0;this[_0x6acf('0x1')]=_0x41d490[_0x6acf('0x1')]||_0x6acf('0x2');this[_0x6acf('0x3')]=_0x41d490[_0x6acf('0x3')]||_0x6acf('0x4');this[_0x6acf('0x5')]=_0x41d490['active']||![];this[_0x6acf('0x6')]=_0x41d490[_0x6acf('0x6')]||[];this[_0x6acf('0x7')]=_0x41d490[_0x6acf('0x7')]||[];}module['exports']=MailAccount;
\ No newline at end of file
+var _0x1c72=['Service','key','SERV','active','Smtp','lodash','name'];(function(_0x2df063,_0x38ae15){var _0x1532ba=function(_0x4b9f29){while(--_0x4b9f29){_0x2df063['push'](_0x2df063['shift']());}};_0x1532ba(++_0x38ae15);}(_0x1c72,0x186));var _0x21c7=function(_0x4b5227,_0x2e67a8){_0x4b5227=_0x4b5227-0x0;var _0x3232f2=_0x1c72[_0x4b5227];return _0x3232f2;};'use strict';var _=require(_0x21c7('0x0'));function MailAccount(_0x2d1232){this['id']=_0x2d1232['id']||0x0;this[_0x21c7('0x1')]=_0x2d1232[_0x21c7('0x1')]||_0x21c7('0x2');this[_0x21c7('0x3')]=_0x2d1232['key']||_0x21c7('0x4');this[_0x21c7('0x5')]=_0x2d1232[_0x21c7('0x5')]||![];this['Imap']=_0x2d1232['Imap']||[];this[_0x21c7('0x6')]=_0x2d1232[_0x21c7('0x6')]||[];}module['exports']=MailAccount;
\ No newline at end of file
index 8cb4c1b..bc68c9b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc1e=['merge','exports','lodash','../model/mailAccount','prototype','mergeFromDatabase','hasOwnProperty','initMailAccounts','mailAccounts'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xcc1e,0x1b2));var _0xecc1=function(_0x450cba,_0x749b5c){_0x450cba=_0x450cba-0x0;var _0x524129=_0xcc1e[_0x450cba];return _0x524129;};'use strict';var _=require(_0xecc1('0x0'));var MailAccount=require(_0xecc1('0x1'));var Realtime=function(){this['mailAccounts']={};};function freeIsNotKey(_0x12e2f5,_0x373925,_0x2d3310){var _0x4a3ce6=_['mapKeys'](_0x12e2f5,function(_0x589069,_0x57db22){return _0x589069[_0x2d3310];});for(var _0x4c1730 in _0x373925){if(_0x373925['hasOwnProperty'](_0x4c1730)){if(!_0x4a3ce6[_0x4c1730]){delete _0x373925[_0x4c1730];}}}}Realtime[_0xecc1('0x2')][_0xecc1('0x3')]=function(_0x3fec86,_0x4d9cf7){for(var _0x4d8594 in _0x4d9cf7){if(_0x3fec86[_0xecc1('0x4')](_0x4d8594)){_0x3fec86[_0x4d8594]=_0x4d9cf7[_0x4d8594];}}};Realtime[_0xecc1('0x2')][_0xecc1('0x5')]=function(){var _0x2452b8=this;return function(_0x2c453e){if(_0x2c453e){freeIsNotKey(_0x2c453e,_0x2452b8[_0xecc1('0x6')],'id');for(var _0x55bc13=0x0,_0x2e97f8={},_0x378a18={};_0x55bc13<_0x2c453e['length'];_0x55bc13+=0x1){_0x2e97f8=_0x2c453e[_0x55bc13];if(_['isUndefined'](_0x2452b8['mailAccounts'][_0x2e97f8['id']])){_0x2452b8['mailAccounts'][_0x2e97f8['id']]=new MailAccount(_0x2e97f8);}else{_[_0xecc1('0x7')](_0x2452b8[_0xecc1('0x6')][_0x2e97f8['id']],_0x2e97f8);}}}return _0x2452b8['mailAccounts'];};};module[_0xecc1('0x8')]=Realtime;
\ No newline at end of file
+var _0x84ef=['mapKeys','hasOwnProperty','prototype','mergeFromDatabase','initMailAccounts','length','isUndefined','merge','lodash','../model/mailAccount','mailAccounts'];(function(_0x5f0089,_0x227e2c){var _0x193892=function(_0x24051f){while(--_0x24051f){_0x5f0089['push'](_0x5f0089['shift']());}};_0x193892(++_0x227e2c);}(_0x84ef,0xef));var _0xf84e=function(_0x5572eb,_0x50ba0b){_0x5572eb=_0x5572eb-0x0;var _0x207ad8=_0x84ef[_0x5572eb];return _0x207ad8;};'use strict';var _=require(_0xf84e('0x0'));var MailAccount=require(_0xf84e('0x1'));var Realtime=function(){this[_0xf84e('0x2')]={};};function freeIsNotKey(_0x314d88,_0xd03d95,_0x65a9fd){var _0x2a5697=_[_0xf84e('0x3')](_0x314d88,function(_0x272d60,_0xc88da7){return _0x272d60[_0x65a9fd];});for(var _0x5b944d in _0xd03d95){if(_0xd03d95[_0xf84e('0x4')](_0x5b944d)){if(!_0x2a5697[_0x5b944d]){delete _0xd03d95[_0x5b944d];}}}}Realtime[_0xf84e('0x5')][_0xf84e('0x6')]=function(_0x33e323,_0x53e2df){for(var _0x4b9508 in _0x53e2df){if(_0x33e323[_0xf84e('0x4')](_0x4b9508)){_0x33e323[_0x4b9508]=_0x53e2df[_0x4b9508];}}};Realtime['prototype'][_0xf84e('0x7')]=function(){var _0x35072f=this;return function(_0x49707e){if(_0x49707e){freeIsNotKey(_0x49707e,_0x35072f[_0xf84e('0x2')],'id');for(var _0x3a86f5=0x0,_0x37205c={},_0x248674={};_0x3a86f5<_0x49707e[_0xf84e('0x8')];_0x3a86f5+=0x1){_0x37205c=_0x49707e[_0x3a86f5];if(_[_0xf84e('0x9')](_0x35072f['mailAccounts'][_0x37205c['id']])){_0x35072f['mailAccounts'][_0x37205c['id']]=new MailAccount(_0x37205c);}else{_[_0xf84e('0xa')](_0x35072f['mailAccounts'][_0x37205c['id']],_0x37205c);}}}return _0x35072f['mailAccounts'];};};module['exports']=Realtime;
\ No newline at end of file
index 7033321..32091ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb6c9=['Request','NotifyMailAccount','../client','GetMailAccount','provider','service','email','ListId','TemplateId','MailServerIn','Imap','CloudProvider','Smtp','name','data5','notify'];(function(_0x1ac595,_0x5d2081){var _0x455fff=function(_0x3043ee){while(--_0x3043ee){_0x1ac595['push'](_0x1ac595['shift']());}};_0x455fff(++_0x5d2081);}(_0xb6c9,0x152));var _0x9b6c=function(_0x37e845,_0x219f9f){_0x37e845=_0x37e845-0x0;var _0x59e55b=_0xb6c9[_0x37e845];return _0x59e55b;};'use strict';var client=require(_0x9b6c('0x0'));exports['getMailAccounts']=function(){return function(){return client['Request'](_0x9b6c('0x1'),{'options':{'attributes':['id','name',_0x9b6c('0x2'),_0x9b6c('0x3'),_0x9b6c('0x4'),'active','key',_0x9b6c('0x5'),_0x9b6c('0x6')],'raw':![],'include':[{'model':_0x9b6c('0x7'),'as':_0x9b6c('0x8'),'include':[{'model':'CloudProvider','attributes':['id','name','service','type','data5'],'as':_0x9b6c('0x9')}]},{'model':'MailServerOut','as':_0x9b6c('0xa'),'include':[{'model':'CloudProvider','attributes':['id',_0x9b6c('0xb'),_0x9b6c('0x3'),'type',_0x9b6c('0xc')],'as':_0x9b6c('0x9')}]}]},'log':'getMailAccount'});};};exports[_0x9b6c('0xd')]=function(_0x30736a,_0x38f7ae){return client[_0x9b6c('0xe')](_0x9b6c('0xf'),{'account':{'id':_0x30736a},'body':_0x38f7ae,'log':_0x9b6c('0xf')});};
\ No newline at end of file
+var _0xfe39=['MailServerIn','Imap','CloudProvider','name','data5','MailServerOut','Smtp','notify','Request','NotifyMailAccount','../client','getMailAccounts','GetMailAccount','service','email','ListId','TemplateId'];(function(_0x40fdb8,_0x347339){var _0x5dfa03=function(_0x1cccb4){while(--_0x1cccb4){_0x40fdb8['push'](_0x40fdb8['shift']());}};_0x5dfa03(++_0x347339);}(_0xfe39,0x1b3));var _0x9fe3=function(_0x5a776b,_0x46f785){_0x5a776b=_0x5a776b-0x0;var _0xbbef59=_0xfe39[_0x5a776b];return _0xbbef59;};'use strict';var client=require(_0x9fe3('0x0'));exports[_0x9fe3('0x1')]=function(){return function(){return client['Request'](_0x9fe3('0x2'),{'options':{'attributes':['id','name','provider',_0x9fe3('0x3'),_0x9fe3('0x4'),'active','key',_0x9fe3('0x5'),_0x9fe3('0x6')],'raw':![],'include':[{'model':_0x9fe3('0x7'),'as':_0x9fe3('0x8'),'include':[{'model':_0x9fe3('0x9'),'attributes':['id',_0x9fe3('0xa'),_0x9fe3('0x3'),'type',_0x9fe3('0xb')],'as':_0x9fe3('0x9')}]},{'model':_0x9fe3('0xc'),'as':_0x9fe3('0xd'),'include':[{'model':_0x9fe3('0x9'),'attributes':['id',_0x9fe3('0xa'),'service','type',_0x9fe3('0xb')],'as':_0x9fe3('0x9')}]}]},'log':'getMailAccount'});};};exports[_0x9fe3('0xe')]=function(_0xc9c0b3,_0x375d79){return client[_0x9fe3('0xf')]('NotifyMailAccount',{'account':{'id':_0xc9c0b3},'body':_0x375d79,'log':_0x9fe3('0x10')});};
\ No newline at end of file
index f8fa60d..bacf026 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbeba=['GetSettings','Request','ShowSetting','loginMailFrequency'];(function(_0x4e9628,_0x250573){var _0x27bc8c=function(_0xb3b7ae){while(--_0xb3b7ae){_0x4e9628['push'](_0x4e9628['shift']());}};_0x27bc8c(++_0x250573);}(_0xbeba,0xf9));var _0xabeb=function(_0x48d1f6,_0x21ba26){_0x48d1f6=_0x48d1f6-0x0;var _0x5e0ee6=_0xbeba[_0x48d1f6];return _0x5e0ee6;};'use strict';var client=require('../client');exports['getSettings']=function(){return client[_0xabeb('0x0')](_0xabeb('0x1'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0xabeb('0x2')]},'log':_0xabeb('0x3')});};
\ No newline at end of file
+var _0x9c31=['ShowSetting','../client','getSettings','Request'];(function(_0x33a349,_0x25d845){var _0x44c59b=function(_0x312fbf){while(--_0x312fbf){_0x33a349['push'](_0x33a349['shift']());}};_0x44c59b(++_0x25d845);}(_0x9c31,0x1b9));var _0x19c3=function(_0x4cba6c,_0x423bce){_0x4cba6c=_0x4cba6c-0x0;var _0x4b498d=_0x9c31[_0x4cba6c];return _0x4b498d;};'use strict';var client=require(_0x19c3('0x0'));exports[_0x19c3('0x1')]=function(){return client[_0x19c3('0x2')](_0x19c3('0x3'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':['loginMailFrequency']},'log':'GetSettings'});};
\ No newline at end of file
index 1da3b28..4cc4b3a 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(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0xa9e0,0x123));var _0x0a9e=function(_0x220dbb,_0x99328d){_0x220dbb=_0x220dbb-0x0;var _0x2b77de=_0xa9e0[_0x220dbb];return _0x2b77de;};'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(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xa9e0,0x123));var _0x0a9e=function(_0x36dfbd,_0x5bfe2d){_0x36dfbd=_0x36dfbd-0x0;var _0x4ecad9=_0xa9e0[_0x36dfbd];return _0x4ecad9;};'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 8d40e45..257b2ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b93=['Express\x20server\x20listening\x20on\x20port\x20%d!','port','exports','lodash','http','express','sticky-session','ioredis','../../config/environment','createServer','listen','socket.io','websocket','polling','redis','localhost','socket.io-redis','default','../../config/socketio','../../config/express','../../routes','listening','log'];(function(_0x1b1050,_0x574151){var _0x2a7d29=function(_0x43ceab){while(--_0x43ceab){_0x1b1050['push'](_0x1b1050['shift']());}};_0x2a7d29(++_0x574151);}(_0x5b93,0x1a1));var _0x35b9=function(_0x2cd3f2,_0x58a45b){_0x2cd3f2=_0x2cd3f2-0x0;var _0x138421=_0x5b93[_0x2cd3f2];return _0x138421;};'use strict';var _=require(_0x35b9('0x0'));var http=require(_0x35b9('0x1'));var express=require(_0x35b9('0x2'));var sticky=require(_0x35b9('0x3'));var Redis=require(_0x35b9('0x4'));var config=require(_0x35b9('0x5'));var app=express();var server=http[_0x35b9('0x6')](app);server['timeout']=0xdbba0;if(sticky[_0x35b9('0x7')](server,config['port'])){var socketio=require(_0x35b9('0x8'))(server,{'transports':[_0x35b9('0x9'),_0x35b9('0xa')]});config[_0x35b9('0xb')]=_['defaults'](config[_0x35b9('0xb')],{'host':_0x35b9('0xc'),'port':0x18eb});socketio['adapter'](require(_0x35b9('0xd'))({'pubClient':new Redis(config[_0x35b9('0xb')]),'subClient':new Redis(config['redis'])}));require('../../config/triggers')[_0x35b9('0xe')]();require(_0x35b9('0xf'))[_0x35b9('0xe')](socketio);require(_0x35b9('0x10'))[_0x35b9('0xe')](app);require(_0x35b9('0x11'))[_0x35b9('0xe')](app);}else{server['once'](_0x35b9('0x12'),function(){console[_0x35b9('0x13')](_0x35b9('0x14'),config[_0x35b9('0x15')]);});}exports=module[_0x35b9('0x16')]=app;
\ No newline at end of file
+var _0x06f9=['listen','port','socket.io','websocket','redis','defaults','localhost','adapter','socket.io-redis','../../config/triggers','default','../../config/socketio','../../config/express','../../routes','log','Express\x20server\x20listening\x20on\x20port\x20%d!','lodash','express','sticky-session','ioredis','timeout'];(function(_0x153643,_0x30699b){var _0x31d8b0=function(_0x399168){while(--_0x399168){_0x153643['push'](_0x153643['shift']());}};_0x31d8b0(++_0x30699b);}(_0x06f9,0x79));var _0x906f=function(_0x5e36d1,_0x471178){_0x5e36d1=_0x5e36d1-0x0;var _0x950b9e=_0x06f9[_0x5e36d1];return _0x950b9e;};'use strict';var _=require(_0x906f('0x0'));var http=require('http');var express=require(_0x906f('0x1'));var sticky=require(_0x906f('0x2'));var Redis=require(_0x906f('0x3'));var config=require('../../config/environment');var app=express();var server=http['createServer'](app);server[_0x906f('0x4')]=0xdbba0;if(sticky[_0x906f('0x5')](server,config[_0x906f('0x6')])){var socketio=require(_0x906f('0x7'))(server,{'transports':[_0x906f('0x8'),'polling']});config[_0x906f('0x9')]=_[_0x906f('0xa')](config[_0x906f('0x9')],{'host':_0x906f('0xb'),'port':0x18eb});socketio[_0x906f('0xc')](require(_0x906f('0xd'))({'pubClient':new Redis(config[_0x906f('0x9')]),'subClient':new Redis(config[_0x906f('0x9')])}));require(_0x906f('0xe'))[_0x906f('0xf')]();require(_0x906f('0x10'))[_0x906f('0xf')](socketio);require(_0x906f('0x11'))['default'](app);require(_0x906f('0x12'))['default'](app);}else{server['once']('listening',function(){console[_0x906f('0x13')](_0x906f('0x14'),config[_0x906f('0x6')]);});}exports=module['exports']=app;
\ No newline at end of file
index 93354ca..81177a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3760=['bluebird','routing','http','Request','request','debug','rpc','error','message','catch','exports','jayson/promise'];(function(_0x7876de,_0xbfcaec){var _0x36e156=function(_0x6b91ae){while(--_0x6b91ae){_0x7876de['push'](_0x7876de['shift']());}};_0x36e156(++_0xbfcaec);}(_0x3760,0x173));var _0x0376=function(_0x381372,_0xf0a5a){_0x381372=_0x381372-0x0;var _0x4e959a=_0x3760[_0x381372];return _0x4e959a;};'use strict';var jayson=require(_0x0376('0x0'));var BPromise=require(_0x0376('0x1'));var logger=require('../../config/logger')(_0x0376('0x2'));var client=jayson['client'][_0x0376('0x3')]({'port':0x2329});client[_0x0376('0x4')]=function(_0x242cf3,_0x45bd7f){return new BPromise(function(_0x56cbe3,_0x56b704){return client[_0x0376('0x5')](_0x242cf3,_0x45bd7f)['then'](function(_0x17aa88){logger[_0x0376('0x6')](_0x0376('0x7'),_0x0376('0x2'),_0x242cf3,_0x45bd7f,_0x17aa88);if(_0x17aa88['error']){logger[_0x0376('0x8')]('rpc',_0x0376('0x2'),_0x242cf3,_0x17aa88['error'][_0x0376('0x9')],_0x45bd7f);return _0x56b704(_0x17aa88[_0x0376('0x8')][_0x0376('0x9')]);}else{return _0x56cbe3(_0x17aa88['result']);}})[_0x0376('0xa')](function(_0x1eb04e){logger[_0x0376('0x8')](_0x0376('0x7'),_0x0376('0x2'),_0x242cf3,_0x1eb04e,_0x45bd7f);return _0x56b704(_0x1eb04e);});});};module[_0x0376('0xb')]=client;
\ No newline at end of file
+var _0xa505=['exports','jayson/promise','../../config/logger','routing','client','request','then','debug','error','rpc','message','result'];(function(_0x2056d8,_0x1b2e31){var _0x2c7041=function(_0x27e5ac){while(--_0x27e5ac){_0x2056d8['push'](_0x2056d8['shift']());}};_0x2c7041(++_0x1b2e31);}(_0xa505,0x1d5));var _0x5a50=function(_0x423d10,_0x577b90){_0x423d10=_0x423d10-0x0;var _0x917dd4=_0xa505[_0x423d10];return _0x917dd4;};'use strict';var jayson=require(_0x5a50('0x0'));var BPromise=require('bluebird');var logger=require(_0x5a50('0x1'))(_0x5a50('0x2'));var client=jayson[_0x5a50('0x3')]['http']({'port':0x2329});client['Request']=function(_0x5601e0,_0x292bbd){return new BPromise(function(_0x6ae9a1,_0x43ce0f){return client[_0x5a50('0x4')](_0x5601e0,_0x292bbd)[_0x5a50('0x5')](function(_0x50f4d1){logger[_0x5a50('0x6')]('rpc',_0x5a50('0x2'),_0x5601e0,_0x292bbd,_0x50f4d1);if(_0x50f4d1[_0x5a50('0x7')]){logger[_0x5a50('0x7')](_0x5a50('0x8'),'routing',_0x5601e0,_0x50f4d1[_0x5a50('0x7')][_0x5a50('0x9')],_0x292bbd);return _0x43ce0f(_0x50f4d1[_0x5a50('0x7')][_0x5a50('0x9')]);}else{return _0x6ae9a1(_0x50f4d1[_0x5a50('0xa')]);}})['catch'](function(_0x1d20d6){logger[_0x5a50('0x7')]('rpc',_0x5a50('0x2'),_0x5601e0,_0x1d20d6,_0x292bbd);return _0x43ce0f(_0x1d20d6);});});};module[_0x5a50('0xb')]=client;
\ No newline at end of file
index 21faf73..f19590c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5290=['getSmsQueues','getMailQueues','initMailQueues','getFaxQueues','initFaxQueues','initWhatsappQueues','listen','catch','log','bluebird','./rpc/user','./rpc/interval','./rpc/openchannelQueue','./rpc/mailQueue','./rpc/whatsappQueue','resolve','then','getAgents','initAgents','getIntervals','getOpenchannelQueues','getChatQueues','initChatQueues'];(function(_0x58e582,_0x41b688){var _0x27f1cd=function(_0x530c74){while(--_0x530c74){_0x58e582['push'](_0x58e582['shift']());}};_0x27f1cd(++_0x41b688);}(_0x5290,0x179));var _0x0529=function(_0x1d9fa7,_0x3b0162){_0x1d9fa7=_0x1d9fa7-0x0;var _0x56cd77=_0x5290[_0x1d9fa7];return _0x56cd77;};'use strict';var BPromise=require(_0x0529('0x0'));var server=require('./server');var Realtime=require('./realtime');var user=require(_0x0529('0x1'));var interval=require(_0x0529('0x2'));var openchannelQueue=require(_0x0529('0x3'));var chatQueue=require('./rpc/chatQueue');var smsQueue=require('./rpc/smsQueue');var mailQueue=require(_0x0529('0x4'));var faxQueue=require('./rpc/faxQueue');var whatsappQueue=require(_0x0529('0x5'));var realtime=new Realtime();function initRealtime(){return BPromise[_0x0529('0x6')]()[_0x0529('0x7')](user[_0x0529('0x8')]())[_0x0529('0x7')](realtime[_0x0529('0x9')]())[_0x0529('0x7')](interval[_0x0529('0xa')]())[_0x0529('0x7')](realtime['initIntervals']())[_0x0529('0x7')](openchannelQueue[_0x0529('0xb')]())['then'](realtime['initOpenchannelQueues']())['then'](chatQueue[_0x0529('0xc')]())[_0x0529('0x7')](realtime[_0x0529('0xd')]())[_0x0529('0x7')](smsQueue[_0x0529('0xe')]())['then'](realtime['initSmsQueues']())['then'](mailQueue[_0x0529('0xf')]())[_0x0529('0x7')](realtime[_0x0529('0x10')]())[_0x0529('0x7')](faxQueue[_0x0529('0x11')]())[_0x0529('0x7')](realtime[_0x0529('0x12')]())[_0x0529('0x7')](whatsappQueue['getWhatsappQueues']())[_0x0529('0x7')](realtime[_0x0529('0x13')]())[_0x0529('0x7')](function(){return realtime;});}function main(){return server[_0x0529('0x14')](realtime)[_0x0529('0x7')](function(_0x145278){return initRealtime();})[_0x0529('0x7')](function(_0x3cd67){return setInterval(initRealtime,0x1388);})[_0x0529('0x15')](function(_0x52d546){console[_0x0529('0x16')](_0x52d546);});}main();
\ No newline at end of file
+var _0xf685=['getFaxQueues','initFaxQueues','getWhatsappQueues','initWhatsappQueues','listen','catch','log','bluebird','./server','./realtime','./rpc/user','./rpc/openchannelQueue','./rpc/chatQueue','./rpc/smsQueue','./rpc/faxQueue','./rpc/whatsappQueue','resolve','then','getAgents','getIntervals','getOpenchannelQueues','initOpenchannelQueues','getSmsQueues','initSmsQueues','getMailQueues','initMailQueues'];(function(_0x3220bb,_0x342a03){var _0x23415c=function(_0x56cc05){while(--_0x56cc05){_0x3220bb['push'](_0x3220bb['shift']());}};_0x23415c(++_0x342a03);}(_0xf685,0x125));var _0x5f68=function(_0x307971,_0x52d5db){_0x307971=_0x307971-0x0;var _0x489362=_0xf685[_0x307971];return _0x489362;};'use strict';var BPromise=require(_0x5f68('0x0'));var server=require(_0x5f68('0x1'));var Realtime=require(_0x5f68('0x2'));var user=require(_0x5f68('0x3'));var interval=require('./rpc/interval');var openchannelQueue=require(_0x5f68('0x4'));var chatQueue=require(_0x5f68('0x5'));var smsQueue=require(_0x5f68('0x6'));var mailQueue=require('./rpc/mailQueue');var faxQueue=require(_0x5f68('0x7'));var whatsappQueue=require(_0x5f68('0x8'));var realtime=new Realtime();function initRealtime(){return BPromise[_0x5f68('0x9')]()[_0x5f68('0xa')](user[_0x5f68('0xb')]())[_0x5f68('0xa')](realtime['initAgents']())['then'](interval[_0x5f68('0xc')]())[_0x5f68('0xa')](realtime['initIntervals']())[_0x5f68('0xa')](openchannelQueue[_0x5f68('0xd')]())[_0x5f68('0xa')](realtime[_0x5f68('0xe')]())[_0x5f68('0xa')](chatQueue['getChatQueues']())[_0x5f68('0xa')](realtime['initChatQueues']())[_0x5f68('0xa')](smsQueue[_0x5f68('0xf')]())[_0x5f68('0xa')](realtime[_0x5f68('0x10')]())['then'](mailQueue[_0x5f68('0x11')]())[_0x5f68('0xa')](realtime[_0x5f68('0x12')]())[_0x5f68('0xa')](faxQueue[_0x5f68('0x13')]())[_0x5f68('0xa')](realtime[_0x5f68('0x14')]())[_0x5f68('0xa')](whatsappQueue[_0x5f68('0x15')]())['then'](realtime[_0x5f68('0x16')]())[_0x5f68('0xa')](function(){return realtime;});}function main(){return server[_0x5f68('0x17')](realtime)[_0x5f68('0xa')](function(_0x46ab8e){return initRealtime();})[_0x5f68('0xa')](function(_0x24a605){return setInterval(initRealtime,0x1388);})[_0x5f68('0x18')](function(_0x31a784){console[_0x5f68('0x19')](_0x31a784);});}main();
\ No newline at end of file
index d6ff526..73fb373 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1261=['isNil','register','ignoreFactChanges','activeRules','prototype','isArray','rules','concat','isObject','push','sync','filter','orderBy','asc','result','clone','name','nextTick','ruleRef','isEqual','restart','length','condition','noop','findRules','matches','turn','prioritize','priority','toString','consequence','fromJSON','isString','parse','map','object','exports','util','events','EventEmitter','init'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x1261,0x144));var _0x1126=function(_0x3afbdf,_0x9e463b){_0x3afbdf=_0x3afbdf-0x0;var _0x5b6861=_0x1261[_0x3afbdf];return _0x5b6861;};'use strict';var _=require('lodash');var util=require(_0x1126('0x0'));var EventEmitter=require(_0x1126('0x1'))[_0x1126('0x2')];function RuleEngine(_0x331a2c,_0x39b786){this[_0x1126('0x3')]();if(!_[_0x1126('0x4')](_0x331a2c)){this[_0x1126('0x5')](_0x331a2c);}if(_0x39b786){this[_0x1126('0x6')]=_0x39b786[_0x1126('0x6')];}return this;}util['inherits'](RuleEngine,EventEmitter);RuleEngine['prototype'][_0x1126('0x3')]=function(_0x907180){this['rules']=[];this[_0x1126('0x7')]=[];};RuleEngine[_0x1126('0x8')][_0x1126('0x5')]=function(_0x3abb0b){if(Array[_0x1126('0x9')](_0x3abb0b)){this['rules']=this[_0x1126('0xa')][_0x1126('0xb')](_0x3abb0b);}else if(_0x3abb0b!==null&&_[_0x1126('0xc')](_0x3abb0b)){this['rules'][_0x1126('0xd')](_0x3abb0b);}this['sync']();};RuleEngine['prototype'][_0x1126('0xe')]=function(){this['activeRules']=this[_0x1126('0xa')][_0x1126('0xf')](function(_0xd26a32){if(_[_0x1126('0x4')](_0xd26a32['on'])){_0xd26a32['on']=!![];}if(_0xd26a32['on']===!![]){return _0xd26a32;}});this[_0x1126('0x7')]=_[_0x1126('0x10')](this[_0x1126('0x7')],['p'],[_0x1126('0x11')]);};RuleEngine[_0x1126('0x8')]['execute']=function(_0x5de9a7,_0x1af673){var _0x154e20=![];_0x5de9a7[_0x1126('0x12')]=!![];var _0x4be0c6=_[_0x1126('0x13')](_0x5de9a7);var _0x4794a7=_[_0x1126('0x13')](_0x5de9a7);var _0x42f379=this[_0x1126('0x7')];var _0x4e1c97=[];var _0x245cd7=this[_0x1126('0x6')];(function FnRuleLoop(_0x4a7b49){var _0x4d2b38={'rules':function(){return _0x42f379;},'rule':function(){return _0x42f379[_0x4a7b49];},'when':function(_0x22ae0b){if(_0x22ae0b){var _0x2b2487=_0x42f379[_0x4a7b49]['consequence'];_0x2b2487['ruleRef']=_0x42f379[_0x4a7b49]['id']||_0x42f379[_0x4a7b49][_0x1126('0x14')]||'index_'+_0x4a7b49;process[_0x1126('0x15')](function(){_0x4e1c97[_0x1126('0xd')](_0x2b2487[_0x1126('0x16')]);_0x2b2487['call'](_0x4be0c6,_0x4d2b38);});}else{process[_0x1126('0x15')](function(){_0x4d2b38['next']();});}},'restart':function(){return FnRuleLoop(0x0);},'stop':function(){_0x154e20=!![];return FnRuleLoop(0x0);},'next':function(_0x56efeb){if(!_0x245cd7&&!_[_0x1126('0x17')](_0x4794a7,_0x4be0c6)){_0x4794a7=_[_0x1126('0x13')](_0x4be0c6);process[_0x1126('0x15')](function(){_0x4d2b38[_0x1126('0x18')]();});}else{process['nextTick'](function(){if(_[_0x1126('0x4')](_0x56efeb)){return FnRuleLoop(_0x4a7b49+0x1);}else{return FnRuleLoop(_0x56efeb);}});}}};if(_0x4a7b49<_0x42f379[_0x1126('0x19')]&&_0x154e20===![]){var _0x48a08d=_0x42f379[_0x4a7b49][_0x1126('0x1a')];_0x48a08d['call'](_0x4be0c6,_0x4d2b38);}else{process['nextTick'](function(){_0x4be0c6['matchPath']=_0x4e1c97;return _0x1af673?_0x1af673(_0x4be0c6):_[_0x1126('0x1b')]();});}}(0x0));};RuleEngine[_0x1126('0x8')][_0x1126('0x1c')]=function(_0x34bcf1){if(_[_0x1126('0x4')](_0x34bcf1)){return this[_0x1126('0xa')];}else{var _0xea0971=_[_0x1126('0x1d')](_0x34bcf1);return _['filter'](this[_0x1126('0xa')],_0xea0971);}};RuleEngine[_0x1126('0x8')][_0x1126('0x1e')]=function(_0x5ddf63,_0x541bc9){var _0xeb7d89=_0x5ddf63==='on'||_0x5ddf63==='ON'?!![]:![];var _0x39bf0e=this['findRules'](_0x541bc9);for(var _0x2fb797=0x0,_0x23d2bc=_0x39bf0e['length'];_0x2fb797<_0x23d2bc;_0x2fb797+=0x1){_0x39bf0e[_0x2fb797]['on']=_0xeb7d89;}this[_0x1126('0xe')]();};RuleEngine['prototype'][_0x1126('0x1f')]=function(_0x4bd50b,_0x771bb8){_0x4bd50b=parseInt(_0x4bd50b,0xa);var _0x583ce6=this[_0x1126('0x1c')](_0x771bb8);for(var _0x5f2611=0x0,_0x5252e0=_0x583ce6['length'];_0x5f2611<_0x5252e0;_0x5f2611+=0x1){_0x583ce6[_0x5f2611][_0x1126('0x20')]=_0x4bd50b;}this[_0x1126('0xe')]();};RuleEngine[_0x1126('0x8')]['toJSON']=function(){var _0x2a3055=this[_0x1126('0xa')];if(_0x2a3055 instanceof Array){_0x2a3055=_0x2a3055['map'](function(_0x3dd50e){_0x3dd50e[_0x1126('0x1a')]=_0x3dd50e[_0x1126('0x1a')][_0x1126('0x21')]();_0x3dd50e['consequence']=_0x3dd50e['consequence'][_0x1126('0x21')]();return _0x3dd50e;});}else if(!_[_0x1126('0x4')](_0x2a3055)){_0x2a3055[_0x1126('0x1a')]=_0x2a3055[_0x1126('0x1a')]['toString']();_0x2a3055[_0x1126('0x22')]=_0x2a3055[_0x1126('0x22')][_0x1126('0x21')]();}return _0x2a3055;};RuleEngine[_0x1126('0x8')][_0x1126('0x23')]=function(_0x5df232){this[_0x1126('0x3')]();if(_[_0x1126('0x24')](_0x5df232)){_0x5df232=JSON[_0x1126('0x25')](_0x5df232);}if(_0x5df232 instanceof Array){_0x5df232=_0x5df232[_0x1126('0x26')](function(_0x5c019d){_0x5c019d['condition']=eval('('+_0x5c019d[_0x1126('0x1a')]+')');_0x5c019d[_0x1126('0x22')]=eval('('+_0x5c019d['consequence']+')');return _0x5c019d;});}else if(_0x5df232!==null&&typeof _0x5df232==_0x1126('0x27')){_0x5df232[_0x1126('0x1a')]=eval('('+_0x5df232[_0x1126('0x1a')]+')');_0x5df232['consequence']=eval('('+_0x5df232['consequence']+')');}this[_0x1126('0x5')](_0x5df232);};module[_0x1126('0x28')]=RuleEngine;
\ No newline at end of file
+var _0xc4aa=['ruleRef','name','nextTick','push','call','next','isEqual','restart','isNil','length','condition','matchPath','noop','findRules','matches','turn','prioritize','priority','toJSON','toString','fromJSON','isString','parse','register','exports','lodash','util','events','EventEmitter','ignoreFactChanges','inherits','prototype','init','rules','activeRules','isArray','concat','isObject','sync','filter','orderBy','asc','execute','result','clone','consequence'];(function(_0x59893a,_0x21c38b){var _0x544bf7=function(_0xa96344){while(--_0xa96344){_0x59893a['push'](_0x59893a['shift']());}};_0x544bf7(++_0x21c38b);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x4ff09b,_0x53f67d){_0x4ff09b=_0x4ff09b-0x0;var _0x3f5c2e=_0xc4aa[_0x4ff09b];return _0x3f5c2e;};'use strict';var _=require(_0xac4a('0x0'));var util=require(_0xac4a('0x1'));var EventEmitter=require(_0xac4a('0x2'))[_0xac4a('0x3')];function RuleEngine(_0x275161,_0x22469d){this['init']();if(!_['isNil'](_0x275161)){this['register'](_0x275161);}if(_0x22469d){this[_0xac4a('0x4')]=_0x22469d[_0xac4a('0x4')];}return this;}util[_0xac4a('0x5')](RuleEngine,EventEmitter);RuleEngine[_0xac4a('0x6')][_0xac4a('0x7')]=function(_0x15cd34){this[_0xac4a('0x8')]=[];this[_0xac4a('0x9')]=[];};RuleEngine['prototype']['register']=function(_0x1aba6d){if(Array[_0xac4a('0xa')](_0x1aba6d)){this[_0xac4a('0x8')]=this['rules'][_0xac4a('0xb')](_0x1aba6d);}else if(_0x1aba6d!==null&&_[_0xac4a('0xc')](_0x1aba6d)){this[_0xac4a('0x8')]['push'](_0x1aba6d);}this[_0xac4a('0xd')]();};RuleEngine['prototype'][_0xac4a('0xd')]=function(){this['activeRules']=this[_0xac4a('0x8')][_0xac4a('0xe')](function(_0x24291d){if(_['isNil'](_0x24291d['on'])){_0x24291d['on']=!![];}if(_0x24291d['on']===!![]){return _0x24291d;}});this[_0xac4a('0x9')]=_[_0xac4a('0xf')](this[_0xac4a('0x9')],['p'],[_0xac4a('0x10')]);};RuleEngine[_0xac4a('0x6')][_0xac4a('0x11')]=function(_0x34bc01,_0x33c287){var _0x190418=![];_0x34bc01[_0xac4a('0x12')]=!![];var _0x11e101=_[_0xac4a('0x13')](_0x34bc01);var _0x4a2119=_[_0xac4a('0x13')](_0x34bc01);var _0x34d797=this[_0xac4a('0x9')];var _0x144553=[];var _0x3e88e3=this[_0xac4a('0x4')];(function FnRuleLoop(_0x28e304){var _0x44ec59={'rules':function(){return _0x34d797;},'rule':function(){return _0x34d797[_0x28e304];},'when':function(_0x546c5d){if(_0x546c5d){var _0x5ac21e=_0x34d797[_0x28e304][_0xac4a('0x14')];_0x5ac21e[_0xac4a('0x15')]=_0x34d797[_0x28e304]['id']||_0x34d797[_0x28e304][_0xac4a('0x16')]||'index_'+_0x28e304;process[_0xac4a('0x17')](function(){_0x144553[_0xac4a('0x18')](_0x5ac21e[_0xac4a('0x15')]);_0x5ac21e[_0xac4a('0x19')](_0x11e101,_0x44ec59);});}else{process[_0xac4a('0x17')](function(){_0x44ec59[_0xac4a('0x1a')]();});}},'restart':function(){return FnRuleLoop(0x0);},'stop':function(){_0x190418=!![];return FnRuleLoop(0x0);},'next':function(_0xe38996){if(!_0x3e88e3&&!_[_0xac4a('0x1b')](_0x4a2119,_0x11e101)){_0x4a2119=_['clone'](_0x11e101);process[_0xac4a('0x17')](function(){_0x44ec59[_0xac4a('0x1c')]();});}else{process['nextTick'](function(){if(_[_0xac4a('0x1d')](_0xe38996)){return FnRuleLoop(_0x28e304+0x1);}else{return FnRuleLoop(_0xe38996);}});}}};if(_0x28e304<_0x34d797[_0xac4a('0x1e')]&&_0x190418===![]){var _0x3eacd3=_0x34d797[_0x28e304][_0xac4a('0x1f')];_0x3eacd3['call'](_0x11e101,_0x44ec59);}else{process[_0xac4a('0x17')](function(){_0x11e101[_0xac4a('0x20')]=_0x144553;return _0x33c287?_0x33c287(_0x11e101):_[_0xac4a('0x21')]();});}}(0x0));};RuleEngine[_0xac4a('0x6')][_0xac4a('0x22')]=function(_0x2b0dc2){if(_[_0xac4a('0x1d')](_0x2b0dc2)){return this[_0xac4a('0x8')];}else{var _0x3e2c69=_[_0xac4a('0x23')](_0x2b0dc2);return _[_0xac4a('0xe')](this[_0xac4a('0x8')],_0x3e2c69);}};RuleEngine[_0xac4a('0x6')][_0xac4a('0x24')]=function(_0x1c13dc,_0x20202c){var _0x4e17ce=_0x1c13dc==='on'||_0x1c13dc==='ON'?!![]:![];var _0x23b061=this[_0xac4a('0x22')](_0x20202c);for(var _0x42a33c=0x0,_0x2772fe=_0x23b061[_0xac4a('0x1e')];_0x42a33c<_0x2772fe;_0x42a33c+=0x1){_0x23b061[_0x42a33c]['on']=_0x4e17ce;}this['sync']();};RuleEngine['prototype'][_0xac4a('0x25')]=function(_0x7a948b,_0x1f12d5){_0x7a948b=parseInt(_0x7a948b,0xa);var _0x546b65=this['findRules'](_0x1f12d5);for(var _0x355755=0x0,_0x2896bc=_0x546b65[_0xac4a('0x1e')];_0x355755<_0x2896bc;_0x355755+=0x1){_0x546b65[_0x355755][_0xac4a('0x26')]=_0x7a948b;}this[_0xac4a('0xd')]();};RuleEngine['prototype'][_0xac4a('0x27')]=function(){var _0x482afc=this[_0xac4a('0x8')];if(_0x482afc instanceof Array){_0x482afc=_0x482afc['map'](function(_0x17e6de){_0x17e6de[_0xac4a('0x1f')]=_0x17e6de[_0xac4a('0x1f')][_0xac4a('0x28')]();_0x17e6de[_0xac4a('0x14')]=_0x17e6de[_0xac4a('0x14')][_0xac4a('0x28')]();return _0x17e6de;});}else if(!_[_0xac4a('0x1d')](_0x482afc)){_0x482afc[_0xac4a('0x1f')]=_0x482afc[_0xac4a('0x1f')][_0xac4a('0x28')]();_0x482afc[_0xac4a('0x14')]=_0x482afc[_0xac4a('0x14')][_0xac4a('0x28')]();}return _0x482afc;};RuleEngine['prototype'][_0xac4a('0x29')]=function(_0x1c41fb){this['init']();if(_[_0xac4a('0x2a')](_0x1c41fb)){_0x1c41fb=JSON[_0xac4a('0x2b')](_0x1c41fb);}if(_0x1c41fb instanceof Array){_0x1c41fb=_0x1c41fb['map'](function(_0x58804b){_0x58804b[_0xac4a('0x1f')]=eval('('+_0x58804b[_0xac4a('0x1f')]+')');_0x58804b[_0xac4a('0x14')]=eval('('+_0x58804b[_0xac4a('0x14')]+')');return _0x58804b;});}else if(_0x1c41fb!==null&&typeof _0x1c41fb=='object'){_0x1c41fb[_0xac4a('0x1f')]=eval('('+_0x1c41fb[_0xac4a('0x1f')]+')');_0x1c41fb['consequence']=eval('('+_0x1c41fb[_0xac4a('0x14')]+')');}this[_0xac4a('0x2c')](_0x1c41fb);};module[_0xac4a('0x2d')]=RuleEngine;
\ No newline at end of file
index dc29a69..fa03c96 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb44d=['result','catch','sendMailMessage','jayson/promise','request','then','error','message'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xb44d,0x1b3));var _0xdb44=function(_0x2b4411,_0x2625ed){_0x2b4411=_0x2b4411-0x0;var _0x8e41ef=_0xb44d[_0x2b4411];return _0x8e41ef;};'use strict';var BPromise=require('bluebird');var jayson=require(_0xdb44('0x0'));var client=jayson['client']['http']({'port':0x232b});function request(_0x11766b,_0x5a8a7d){return new BPromise(function(_0x3fb241,_0xa939de){return client[_0xdb44('0x1')](_0x11766b,_0x5a8a7d)[_0xdb44('0x2')](function(_0xa36643){if(_0xa36643[_0xdb44('0x3')]){return _0xa939de(_0xa36643[_0xdb44('0x3')][_0xdb44('0x4')]);}else{return _0x3fb241(_0xa36643[_0xdb44('0x5')]);}})[_0xdb44('0x6')](function(_0x3f4035){return _0xa939de(_0x3f4035);});});}exports[_0xdb44('0x7')]=function(_0x4e17e2,_0x3998f5){return request('SendMail',{'account':_0x4e17e2,'message':_0x3998f5});};
\ No newline at end of file
+var _0x297b=['catch','sendMailMessage','bluebird','jayson/promise','client','http','request','then','error','message','result'];(function(_0x593f0b,_0x244525){var _0x54a662=function(_0x3d0966){while(--_0x3d0966){_0x593f0b['push'](_0x593f0b['shift']());}};_0x54a662(++_0x244525);}(_0x297b,0xff));var _0xb297=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0x297b[_0x59ee6f];return _0x4c0979;};'use strict';var BPromise=require(_0xb297('0x0'));var jayson=require(_0xb297('0x1'));var client=jayson[_0xb297('0x2')][_0xb297('0x3')]({'port':0x232b});function request(_0x5daef6,_0x27d433){return new BPromise(function(_0xb31f00,_0x18210e){return client[_0xb297('0x4')](_0x5daef6,_0x27d433)[_0xb297('0x5')](function(_0x417344){if(_0x417344[_0xb297('0x6')]){return _0x18210e(_0x417344['error'][_0xb297('0x7')]);}else{return _0xb31f00(_0x417344[_0xb297('0x8')]);}})[_0xb297('0x9')](function(_0x13db0b){return _0x18210e(_0x13db0b);});});}exports[_0xb297('0xa')]=function(_0x20f842,_0x5611ff){return request('SendMail',{'account':_0x20f842,'message':_0x5611ff});};
\ No newline at end of file
index 81b15eb..010256e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8440=['whatsappCurrentCapacity','openchannelCapacity','openchannelCurrentCapacity','busy','busyQueue','chatWaitingInteractions','faxWaitingInteractions','mailWaitingInteractions','openchannelWaitingInteractions','smsWaitingInteractions','whatsappWaitingInteractions','prototype','CurrentCapacity','Capacity','maxcapacity','working','idle','updateRealtime','chat','fax','whatsapp','getChannelStatus','Status','StatusTime','format','name','mailPause','mailStatusTime','whatsappStatusTime','openchannelStatusTime','stringify','md5','emit','lodash','moment','ioredis','../../../config/environment','redis','localhost','socket.io-emitter','online','voicePause','chatPause','faxPause','smsPause','openchannelPause','chatStatus','unknown','chatStatusTime','chatCapacity','chatCurrentCapacity','mailStatus','mailCapacity','faxStatus','faxStatusTime','faxCapacity','faxCurrentCapacity','smsStatus','smsStatusTime','smsCapacity','smsCurrentCapacity','whatsappCapacity'];(function(_0x347f41,_0x2cbc52){var _0x2637c2=function(_0x27f641){while(--_0x27f641){_0x347f41['push'](_0x347f41['shift']());}};_0x2637c2(++_0x2cbc52);}(_0x8440,0x9d));var _0x0844=function(_0x26482a,_0x9b689e){_0x26482a=_0x26482a-0x0;var _0x1c5528=_0x8440[_0x26482a];return _0x1c5528;};'use strict';var _=require(_0x0844('0x0'));var moment=require(_0x0844('0x1'));var md5=require('md5');var Redis=require(_0x0844('0x2'));var config=require(_0x0844('0x3'));config['redis']=_['defaults'](config[_0x0844('0x4')],{'host':_0x0844('0x5'),'port':0x18eb});var io=require(_0x0844('0x6'))(new Redis(config['redis']));function Agent(_0x5ea794){this['id']=_0x5ea794['id']||0x0;this['name']=_0x5ea794['name']||'';this[_0x0844('0x7')]=_0x5ea794[_0x0844('0x7')]||!![];this[_0x0844('0x8')]=_0x5ea794[_0x0844('0x8')]||![];this[_0x0844('0x9')]=_0x5ea794[_0x0844('0x9')]||![];this['mailPause']=_0x5ea794['mailPause']||![];this[_0x0844('0xa')]=_0x5ea794[_0x0844('0xa')]||![];this['smsPause']=_0x5ea794[_0x0844('0xb')]||![];this[_0x0844('0xc')]=_0x5ea794[_0x0844('0xc')]||![];this[_0x0844('0xd')]=_0x0844('0xe');this[_0x0844('0xf')]=0x0;this['chatCapacity']=_0x5ea794[_0x0844('0x10')]||0x0;this[_0x0844('0x11')]=0x0;this[_0x0844('0x12')]='unknown';this['mailStatusTime']=0x0;this[_0x0844('0x13')]=_0x5ea794[_0x0844('0x13')]||0x0;this['mailCurrentCapacity']=0x0;this[_0x0844('0x14')]='unknown';this[_0x0844('0x15')]=0x0;this[_0x0844('0x16')]=_0x5ea794[_0x0844('0x16')]||0x0;this[_0x0844('0x17')]=0x0;this[_0x0844('0x18')]=_0x0844('0xe');this[_0x0844('0x19')]=0x0;this[_0x0844('0x1a')]=_0x5ea794['smsCapacity']||0x0;this[_0x0844('0x1b')]=0x0;this['whatsappStatus']=_0x0844('0xe');this['whatsappStatusTime']=0x0;this[_0x0844('0x1c')]=_0x5ea794[_0x0844('0x1c')]||0x0;this[_0x0844('0x1d')]=0x0;this['openchannelStatus']=_0x0844('0xe');this['openchannelStatusTime']=0x0;this[_0x0844('0x1e')]=_0x5ea794[_0x0844('0x1e')]||0x0;this[_0x0844('0x1f')]=0x0;this[_0x0844('0x20')]=![];this[_0x0844('0x21')]=undefined;this['md5']='';this[_0x0844('0x22')]={};this[_0x0844('0x23')]={};this[_0x0844('0x24')]={};this[_0x0844('0x25')]={};this[_0x0844('0x26')]={};this[_0x0844('0x27')]={};this['updateRealtime']();}Agent[_0x0844('0x28')]['getChannelStatus']=function(_0x6c45d7){if(this[_0x6c45d7+_0x0844('0x29')]>0x0){if(this[_0x6c45d7+_0x0844('0x2a')]>0x0&&this[_0x6c45d7+_0x0844('0x29')]>=this[_0x6c45d7+_0x0844('0x2a')]){return _0x0844('0x2b');}else{return _0x0844('0x2c');}}else{return _0x0844('0x2d');}};Agent[_0x0844('0x28')][_0x0844('0x2e')]=function(){var _0x1a4ac4=['mail',_0x0844('0x2f'),'openchannel',_0x0844('0x30'),'sms',_0x0844('0x31')];for(var _0x2fca5e=0x0;_0x2fca5e<_0x1a4ac4['length'];_0x2fca5e+=0x1){var _0x5bd19b=this[_0x0844('0x32')](_0x1a4ac4[_0x2fca5e]);if(this[_0x1a4ac4[_0x2fca5e]+_0x0844('0x33')]!==_0x5bd19b){this[_0x1a4ac4[_0x2fca5e]+_0x0844('0x34')]=_['toNumber'](moment()[_0x0844('0x35')]('x'));}this[_0x1a4ac4[_0x2fca5e]+_0x0844('0x33')]=_0x5bd19b;}var _0x3f6810={'id':this['id'],'name':this[_0x0844('0x36')],'online':this[_0x0844('0x7')],'voicePause':this[_0x0844('0x8')],'chatPause':this[_0x0844('0x9')],'mailPause':this[_0x0844('0x37')],'smsPause':this['smsPause'],'faxPause':this['faxPause'],'openchannelPause':this[_0x0844('0xc')],'chatStatus':this[_0x0844('0xd')],'chatStatusTime':this[_0x0844('0xf')],'chatCapacity':this[_0x0844('0x10')],'chatCurrentCapacity':this[_0x0844('0x11')],'mailStatus':this[_0x0844('0x12')],'mailStatusTime':this[_0x0844('0x38')],'mailCapacity':this[_0x0844('0x13')],'mailCurrentCapacity':this['mailCurrentCapacity'],'faxStatus':this[_0x0844('0x14')],'faxStatusTime':this[_0x0844('0x15')],'faxCapacity':this[_0x0844('0x16')],'faxCurrentCapacity':this['faxCurrentCapacity'],'smsStatus':this[_0x0844('0x18')],'smsStatusTime':this[_0x0844('0x19')],'smsCapacity':this['smsCapacity'],'smsCurrentCapacity':this[_0x0844('0x1b')],'whatsappStatus':this['whatsappStatus'],'whatsappStatusTime':this[_0x0844('0x39')],'whatsappCapacity':this[_0x0844('0x1c')],'whatsappCurrentCapacity':this[_0x0844('0x1d')],'openchannelStatus':this['openchannelStatus'],'openchannelStatusTime':this[_0x0844('0x3a')],'openchannelCapacity':this['openchannelCapacity'],'openchannelCurrentCapacity':this[_0x0844('0x1f')],'busy':this[_0x0844('0x20')],'busyQueue':this[_0x0844('0x21')],'chatWaitingInteractions':this['chatWaitingInteractions'],'faxWaitingInteractions':this[_0x0844('0x23')],'mailWaitingInteractions':this[_0x0844('0x24')],'openchannelWaitingInteractions':this[_0x0844('0x25')],'smsWaitingInteractions':this[_0x0844('0x26')],'whatsappWaitingInteractions':this[_0x0844('0x27')]};var _0x508675=md5(JSON[_0x0844('0x3b')](_0x3f6810));if(this[_0x0844('0x3c')]!==_0x508675){this['md5']=_0x508675;io[_0x0844('0x3d')]('user:save',_0x3f6810);}};module['exports']=Agent;
\ No newline at end of file
+var _0xdf33=['user:save','exports','lodash','moment','md5','redis','socket.io-emitter','name','online','voicePause','chatPause','mailPause','faxPause','smsPause','openchannelPause','chatStatus','unknown','chatStatusTime','chatCapacity','chatCurrentCapacity','mailStatus','mailStatusTime','mailCapacity','mailCurrentCapacity','faxStatus','faxStatusTime','faxCapacity','smsStatus','smsStatusTime','smsCapacity','whatsappStatus','whatsappStatusTime','whatsappCapacity','whatsappCurrentCapacity','openchannelStatus','openchannelStatusTime','openchannelCapacity','busy','busyQueue','faxWaitingInteractions','smsWaitingInteractions','whatsappWaitingInteractions','updateRealtime','prototype','getChannelStatus','CurrentCapacity','Capacity','maxcapacity','working','idle','mail','chat','openchannel','Status','StatusTime','toNumber','format','faxCurrentCapacity','smsCurrentCapacity','chatWaitingInteractions','stringify','emit'];(function(_0x3b662b,_0x5dab5a){var _0x1c968a=function(_0x323d92){while(--_0x323d92){_0x3b662b['push'](_0x3b662b['shift']());}};_0x1c968a(++_0x5dab5a);}(_0xdf33,0xbc));var _0x3df3=function(_0x3dbae2,_0xaaebe5){_0x3dbae2=_0x3dbae2-0x0;var _0x2a4c56=_0xdf33[_0x3dbae2];return _0x2a4c56;};'use strict';var _=require(_0x3df3('0x0'));var moment=require(_0x3df3('0x1'));var md5=require(_0x3df3('0x2'));var Redis=require('ioredis');var config=require('../../../config/environment');config[_0x3df3('0x3')]=_['defaults'](config[_0x3df3('0x3')],{'host':'localhost','port':0x18eb});var io=require(_0x3df3('0x4'))(new Redis(config[_0x3df3('0x3')]));function Agent(_0x49dbb9){this['id']=_0x49dbb9['id']||0x0;this[_0x3df3('0x5')]=_0x49dbb9['name']||'';this[_0x3df3('0x6')]=_0x49dbb9[_0x3df3('0x6')]||!![];this[_0x3df3('0x7')]=_0x49dbb9[_0x3df3('0x7')]||![];this[_0x3df3('0x8')]=_0x49dbb9['chatPause']||![];this[_0x3df3('0x9')]=_0x49dbb9['mailPause']||![];this[_0x3df3('0xa')]=_0x49dbb9[_0x3df3('0xa')]||![];this[_0x3df3('0xb')]=_0x49dbb9[_0x3df3('0xb')]||![];this[_0x3df3('0xc')]=_0x49dbb9[_0x3df3('0xc')]||![];this[_0x3df3('0xd')]=_0x3df3('0xe');this[_0x3df3('0xf')]=0x0;this[_0x3df3('0x10')]=_0x49dbb9[_0x3df3('0x10')]||0x0;this[_0x3df3('0x11')]=0x0;this[_0x3df3('0x12')]=_0x3df3('0xe');this[_0x3df3('0x13')]=0x0;this['mailCapacity']=_0x49dbb9[_0x3df3('0x14')]||0x0;this[_0x3df3('0x15')]=0x0;this[_0x3df3('0x16')]=_0x3df3('0xe');this[_0x3df3('0x17')]=0x0;this[_0x3df3('0x18')]=_0x49dbb9[_0x3df3('0x18')]||0x0;this['faxCurrentCapacity']=0x0;this[_0x3df3('0x19')]=_0x3df3('0xe');this[_0x3df3('0x1a')]=0x0;this['smsCapacity']=_0x49dbb9[_0x3df3('0x1b')]||0x0;this['smsCurrentCapacity']=0x0;this[_0x3df3('0x1c')]=_0x3df3('0xe');this[_0x3df3('0x1d')]=0x0;this[_0x3df3('0x1e')]=_0x49dbb9[_0x3df3('0x1e')]||0x0;this[_0x3df3('0x1f')]=0x0;this[_0x3df3('0x20')]='unknown';this[_0x3df3('0x21')]=0x0;this['openchannelCapacity']=_0x49dbb9[_0x3df3('0x22')]||0x0;this['openchannelCurrentCapacity']=0x0;this[_0x3df3('0x23')]=![];this[_0x3df3('0x24')]=undefined;this[_0x3df3('0x2')]='';this['chatWaitingInteractions']={};this[_0x3df3('0x25')]={};this['mailWaitingInteractions']={};this['openchannelWaitingInteractions']={};this[_0x3df3('0x26')]={};this[_0x3df3('0x27')]={};this[_0x3df3('0x28')]();}Agent[_0x3df3('0x29')][_0x3df3('0x2a')]=function(_0x252672){if(this[_0x252672+_0x3df3('0x2b')]>0x0){if(this[_0x252672+_0x3df3('0x2c')]>0x0&&this[_0x252672+_0x3df3('0x2b')]>=this[_0x252672+_0x3df3('0x2c')]){return _0x3df3('0x2d');}else{return _0x3df3('0x2e');}}else{return _0x3df3('0x2f');}};Agent[_0x3df3('0x29')][_0x3df3('0x28')]=function(){var _0x713907=[_0x3df3('0x30'),_0x3df3('0x31'),_0x3df3('0x32'),'fax','sms','whatsapp'];for(var _0x3505ee=0x0;_0x3505ee<_0x713907['length'];_0x3505ee+=0x1){var _0x1b4234=this[_0x3df3('0x2a')](_0x713907[_0x3505ee]);if(this[_0x713907[_0x3505ee]+_0x3df3('0x33')]!==_0x1b4234){this[_0x713907[_0x3505ee]+_0x3df3('0x34')]=_[_0x3df3('0x35')](moment()[_0x3df3('0x36')]('x'));}this[_0x713907[_0x3505ee]+_0x3df3('0x33')]=_0x1b4234;}var _0x4ef99f={'id':this['id'],'name':this[_0x3df3('0x5')],'online':this[_0x3df3('0x6')],'voicePause':this['voicePause'],'chatPause':this[_0x3df3('0x8')],'mailPause':this[_0x3df3('0x9')],'smsPause':this[_0x3df3('0xb')],'faxPause':this[_0x3df3('0xa')],'openchannelPause':this['openchannelPause'],'chatStatus':this[_0x3df3('0xd')],'chatStatusTime':this[_0x3df3('0xf')],'chatCapacity':this[_0x3df3('0x10')],'chatCurrentCapacity':this[_0x3df3('0x11')],'mailStatus':this[_0x3df3('0x12')],'mailStatusTime':this['mailStatusTime'],'mailCapacity':this[_0x3df3('0x14')],'mailCurrentCapacity':this[_0x3df3('0x15')],'faxStatus':this['faxStatus'],'faxStatusTime':this[_0x3df3('0x17')],'faxCapacity':this[_0x3df3('0x18')],'faxCurrentCapacity':this[_0x3df3('0x37')],'smsStatus':this['smsStatus'],'smsStatusTime':this['smsStatusTime'],'smsCapacity':this[_0x3df3('0x1b')],'smsCurrentCapacity':this[_0x3df3('0x38')],'whatsappStatus':this[_0x3df3('0x1c')],'whatsappStatusTime':this[_0x3df3('0x1d')],'whatsappCapacity':this[_0x3df3('0x1e')],'whatsappCurrentCapacity':this[_0x3df3('0x1f')],'openchannelStatus':this[_0x3df3('0x20')],'openchannelStatusTime':this['openchannelStatusTime'],'openchannelCapacity':this['openchannelCapacity'],'openchannelCurrentCapacity':this['openchannelCurrentCapacity'],'busy':this[_0x3df3('0x23')],'busyQueue':this[_0x3df3('0x24')],'chatWaitingInteractions':this[_0x3df3('0x39')],'faxWaitingInteractions':this[_0x3df3('0x25')],'mailWaitingInteractions':this['mailWaitingInteractions'],'openchannelWaitingInteractions':this['openchannelWaitingInteractions'],'smsWaitingInteractions':this[_0x3df3('0x26')],'whatsappWaitingInteractions':this['whatsappWaitingInteractions']};var _0x428202=md5(JSON[_0x3df3('0x3a')](_0x4ef99f));if(this['md5']!==_0x428202){this[_0x3df3('0x2')]=_0x428202;io[_0x3df3('0x3b')](_0x3df3('0x3c'),_0x4ef99f);}};module[_0x3df3('0x3d')]=Agent;
\ No newline at end of file
index d681b4d..7a9b609 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c13=['chatPause','available','paused','stringify','md5','format','chat:queue:%s','emit','chat_queue:save','lodash','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','_rr','map','prototype','loggedIn','length','online'];(function(_0x1a8565,_0xc941eb){var _0x593764=function(_0xed13df){while(--_0xed13df){_0x1a8565['push'](_0x1a8565['shift']());}};_0x593764(++_0xc941eb);}(_0x4c13,0x9a));var _0x34c1=function(_0x4e2570,_0xca2204){_0x4e2570=_0x4e2570-0x0;var _0x3cfbfd=_0x4c13[_0x4e2570];return _0x3cfbfd;};'use strict';var _=require(_0x34c1('0x0'));var md5=require('md5');var util=require('util');var Redis=require('ioredis');var config=require(_0x34c1('0x1'));config[_0x34c1('0x2')]=_[_0x34c1('0x3')](config[_0x34c1('0x2')],{'host':_0x34c1('0x4'),'port':0x18eb});var io=require(_0x34c1('0x5'))(new Redis(config[_0x34c1('0x2')]));function ChatQueue(_0x313ae5){this['id']=_0x313ae5['id']||0x0;this[_0x34c1('0x6')]=_0x313ae5[_0x34c1('0x6')]||'';this['timeout']=_0x313ae5[_0x34c1('0x7')]||0xa;this[_0x34c1('0x8')]=_0x313ae5[_0x34c1('0x8')]||_0x34c1('0x9');this[_0x34c1('0xa')]=_0x313ae5[_0x34c1('0xa')];this[_0x34c1('0xb')]={};this[_0x34c1('0xc')]=0x0;this['md5']='';this[_0x34c1('0xd')]();this['updateRealtime']();}ChatQueue['prototype']['updateRouting']=function(){var _0x5d7c28=this[_0x34c1('0xb')][_0x34c1('0xe')];this[_0x34c1('0xb')]=_[_0x34c1('0xf')](this[_0x34c1('0xa')],'id');this[_0x34c1('0xb')][_0x34c1('0xe')]=_0x5d7c28;};ChatQueue[_0x34c1('0x10')]['updateRealtime']=function(){this[_0x34c1('0x11')]=0x0;this['paused']=0x0;for(var _0x30efba=0x0;_0x30efba<this['Agents'][_0x34c1('0x12')];_0x30efba+=0x1){if(this[_0x34c1('0xa')][_0x30efba][_0x34c1('0x13')]){this[_0x34c1('0x11')]+=0x1;}if(this[_0x34c1('0xa')][_0x30efba][_0x34c1('0x14')]){this['paused']+=0x1;}}this[_0x34c1('0x15')]=this[_0x34c1('0x11')]-this[_0x34c1('0x16')];this[_0x34c1('0x15')]=this['available']>=0x0?this['available']:0x0;var _0x12c51f={'id':this['id'],'available':this['available'],'loggedIn':this[_0x34c1('0x11')],'name':this['name'],'paused':this[_0x34c1('0x16')],'waiting':this[_0x34c1('0xc')]};var _0x1c67ad=md5(JSON[_0x34c1('0x17')](_0x12c51f));if(this[_0x34c1('0x18')]!==_0x1c67ad){this[_0x34c1('0x18')]=_0x1c67ad;io['to'](util[_0x34c1('0x19')](_0x34c1('0x1a'),_0x12c51f[_0x34c1('0x6')]))[_0x34c1('0x1b')](_0x34c1('0x1c'),_0x12c51f);}};module['exports']=ChatQueue;
\ No newline at end of file
+var _0x5bd5=['chat_queue:save','exports','md5','ioredis','../../../config/environment','redis','defaults','localhost','name','timeout','strategy','Agents','mapAgentsId','waiting','updateRouting','prototype','map','loggedIn','length','online','paused','available','stringify','format','chat:queue:%s'];(function(_0x142510,_0x5e336d){var _0x3535fb=function(_0x3c9e4f){while(--_0x3c9e4f){_0x142510['push'](_0x142510['shift']());}};_0x3535fb(++_0x5e336d);}(_0x5bd5,0xfc));var _0x55bd=function(_0xb66df,_0x4fb5ce){_0xb66df=_0xb66df-0x0;var _0x42a702=_0x5bd5[_0xb66df];return _0x42a702;};'use strict';var _=require('lodash');var md5=require(_0x55bd('0x0'));var util=require('util');var Redis=require(_0x55bd('0x1'));var config=require(_0x55bd('0x2'));config[_0x55bd('0x3')]=_[_0x55bd('0x4')](config['redis'],{'host':_0x55bd('0x5'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function ChatQueue(_0x536d0b){this['id']=_0x536d0b['id']||0x0;this[_0x55bd('0x6')]=_0x536d0b['name']||'';this[_0x55bd('0x7')]=_0x536d0b['timeout']||0xa;this[_0x55bd('0x8')]=_0x536d0b[_0x55bd('0x8')]||'beepall';this['Agents']=_0x536d0b[_0x55bd('0x9')];this[_0x55bd('0xa')]={};this[_0x55bd('0xb')]=0x0;this[_0x55bd('0x0')]='';this[_0x55bd('0xc')]();this['updateRealtime']();}ChatQueue[_0x55bd('0xd')][_0x55bd('0xc')]=function(){var _0x5eb6b0=this[_0x55bd('0xa')]['_rr'];this[_0x55bd('0xa')]=_[_0x55bd('0xe')](this[_0x55bd('0x9')],'id');this[_0x55bd('0xa')]['_rr']=_0x5eb6b0;};ChatQueue[_0x55bd('0xd')]['updateRealtime']=function(){this[_0x55bd('0xf')]=0x0;this['paused']=0x0;for(var _0x3134ad=0x0;_0x3134ad<this[_0x55bd('0x9')][_0x55bd('0x10')];_0x3134ad+=0x1){if(this[_0x55bd('0x9')][_0x3134ad][_0x55bd('0x11')]){this[_0x55bd('0xf')]+=0x1;}if(this[_0x55bd('0x9')][_0x3134ad]['chatPause']){this[_0x55bd('0x12')]+=0x1;}}this[_0x55bd('0x13')]=this[_0x55bd('0xf')]-this[_0x55bd('0x12')];this['available']=this['available']>=0x0?this[_0x55bd('0x13')]:0x0;var _0x4437ad={'id':this['id'],'available':this['available'],'loggedIn':this[_0x55bd('0xf')],'name':this['name'],'paused':this['paused'],'waiting':this[_0x55bd('0xb')]};var _0x597146=md5(JSON[_0x55bd('0x14')](_0x4437ad));if(this['md5']!==_0x597146){this['md5']=_0x597146;io['to'](util[_0x55bd('0x15')](_0x55bd('0x16'),_0x4437ad[_0x55bd('0x6')]))['emit'](_0x55bd('0x17'),_0x4437ad);}};module[_0x55bd('0x18')]=ChatQueue;
\ No newline at end of file
index 0669ed2..5f5c2ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e74=['redis','defaults','socket.io-emitter','name','timeout','strategy','beepall','Agents','updateRealtime','prototype','_rr','mapAgentsId','loggedIn','paused','online','faxPause','available','waiting','format','fax_queue:save','exports','lodash','md5','util','ioredis','../../../config/environment'];(function(_0x44a64f,_0x38475c){var _0x52024b=function(_0x2cd055){while(--_0x2cd055){_0x44a64f['push'](_0x44a64f['shift']());}};_0x52024b(++_0x38475c);}(_0x4e74,0xcb));var _0x44e7=function(_0x27e811,_0x20137c){_0x27e811=_0x27e811-0x0;var _0x1627fa=_0x4e74[_0x27e811];return _0x1627fa;};'use strict';var _=require(_0x44e7('0x0'));var md5=require(_0x44e7('0x1'));var util=require(_0x44e7('0x2'));var Redis=require(_0x44e7('0x3'));var config=require(_0x44e7('0x4'));config[_0x44e7('0x5')]=_[_0x44e7('0x6')](config[_0x44e7('0x5')],{'host':'localhost','port':0x18eb});var io=require(_0x44e7('0x7'))(new Redis(config[_0x44e7('0x5')]));function FaxQueue(_0x112ee5){this['id']=_0x112ee5['id']||0x0;this[_0x44e7('0x8')]=_0x112ee5['name']||'';this[_0x44e7('0x9')]=_0x112ee5['timeout']||0xa;this[_0x44e7('0xa')]=_0x112ee5['strategy']||_0x44e7('0xb');this[_0x44e7('0xc')]=_0x112ee5[_0x44e7('0xc')];this['mapAgentsId']={};this['waiting']=0x0;this[_0x44e7('0x1')]='';this['updateRouting']();this[_0x44e7('0xd')]();}FaxQueue[_0x44e7('0xe')]['updateRouting']=function(){var _0x161422=this['mapAgentsId'][_0x44e7('0xf')];this['mapAgentsId']=_['map'](this[_0x44e7('0xc')],'id');this[_0x44e7('0x10')][_0x44e7('0xf')]=_0x161422;};FaxQueue[_0x44e7('0xe')][_0x44e7('0xd')]=function(){this[_0x44e7('0x11')]=0x0;this[_0x44e7('0x12')]=0x0;for(var _0x4c274e=0x0;_0x4c274e<this[_0x44e7('0xc')]['length'];_0x4c274e+=0x1){if(this['Agents'][_0x4c274e][_0x44e7('0x13')]){this[_0x44e7('0x11')]+=0x1;}if(this['Agents'][_0x4c274e][_0x44e7('0x14')]){this[_0x44e7('0x12')]+=0x1;}}this[_0x44e7('0x15')]=this[_0x44e7('0x11')]-this['paused'];this[_0x44e7('0x15')]=this['available']>=0x0?this[_0x44e7('0x15')]:0x0;var _0x3bc0f7={'id':this['id'],'available':this[_0x44e7('0x15')],'loggedIn':this[_0x44e7('0x11')],'name':this['name'],'paused':this[_0x44e7('0x12')],'waiting':this[_0x44e7('0x16')]};var _0x54aef1=md5(JSON['stringify'](_0x3bc0f7));if(this[_0x44e7('0x1')]!==_0x54aef1){this[_0x44e7('0x1')]=_0x54aef1;io['to'](util[_0x44e7('0x17')]('fax:queue:%s',_0x3bc0f7['name']))['emit'](_0x44e7('0x18'),_0x3bc0f7);}};module[_0x44e7('0x19')]=FaxQueue;
\ No newline at end of file
+var _0xc791=['updateRealtime','loggedIn','online','paused','available','stringify','format','fax:queue:%s','fax_queue:save','exports','lodash','md5','util','ioredis','../../../config/environment','redis','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','prototype','_rr','map'];(function(_0x662759,_0x4689f0){var _0x3eda5f=function(_0x1a495f){while(--_0x1a495f){_0x662759['push'](_0x662759['shift']());}};_0x3eda5f(++_0x4689f0);}(_0xc791,0xf2));var _0x1c79=function(_0x24cf99,_0x2e2189){_0x24cf99=_0x24cf99-0x0;var _0x210865=_0xc791[_0x24cf99];return _0x210865;};'use strict';var _=require(_0x1c79('0x0'));var md5=require(_0x1c79('0x1'));var util=require(_0x1c79('0x2'));var Redis=require(_0x1c79('0x3'));var config=require(_0x1c79('0x4'));config[_0x1c79('0x5')]=_['defaults'](config[_0x1c79('0x5')],{'host':_0x1c79('0x6'),'port':0x18eb});var io=require(_0x1c79('0x7'))(new Redis(config[_0x1c79('0x5')]));function FaxQueue(_0x4e1d00){this['id']=_0x4e1d00['id']||0x0;this[_0x1c79('0x8')]=_0x4e1d00[_0x1c79('0x8')]||'';this[_0x1c79('0x9')]=_0x4e1d00[_0x1c79('0x9')]||0xa;this['strategy']=_0x4e1d00[_0x1c79('0xa')]||_0x1c79('0xb');this[_0x1c79('0xc')]=_0x4e1d00[_0x1c79('0xc')];this[_0x1c79('0xd')]={};this[_0x1c79('0xe')]=0x0;this['md5']='';this[_0x1c79('0xf')]();this['updateRealtime']();}FaxQueue[_0x1c79('0x10')][_0x1c79('0xf')]=function(){var _0x348c6e=this[_0x1c79('0xd')][_0x1c79('0x11')];this[_0x1c79('0xd')]=_[_0x1c79('0x12')](this[_0x1c79('0xc')],'id');this[_0x1c79('0xd')][_0x1c79('0x11')]=_0x348c6e;};FaxQueue[_0x1c79('0x10')][_0x1c79('0x13')]=function(){this[_0x1c79('0x14')]=0x0;this['paused']=0x0;for(var _0x54c4d7=0x0;_0x54c4d7<this['Agents']['length'];_0x54c4d7+=0x1){if(this[_0x1c79('0xc')][_0x54c4d7][_0x1c79('0x15')]){this['loggedIn']+=0x1;}if(this[_0x1c79('0xc')][_0x54c4d7]['faxPause']){this[_0x1c79('0x16')]+=0x1;}}this[_0x1c79('0x17')]=this[_0x1c79('0x14')]-this[_0x1c79('0x16')];this[_0x1c79('0x17')]=this[_0x1c79('0x17')]>=0x0?this['available']:0x0;var _0xde3f00={'id':this['id'],'available':this[_0x1c79('0x17')],'loggedIn':this['loggedIn'],'name':this[_0x1c79('0x8')],'paused':this[_0x1c79('0x16')],'waiting':this[_0x1c79('0xe')]};var _0x2c2f7e=md5(JSON[_0x1c79('0x18')](_0xde3f00));if(this[_0x1c79('0x1')]!==_0x2c2f7e){this['md5']=_0x2c2f7e;io['to'](util[_0x1c79('0x19')](_0x1c79('0x1a'),_0xde3f00[_0x1c79('0x8')]))['emit'](_0x1c79('0x1b'),_0xde3f00);}};module[_0x1c79('0x1c')]=FaxQueue;
\ No newline at end of file
index 50646cb..2b28dfc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d7c=['Intervals','exports','name'];(function(_0x1f63de,_0x501537){var _0x5a182d=function(_0x315162){while(--_0x315162){_0x1f63de['push'](_0x1f63de['shift']());}};_0x5a182d(++_0x501537);}(_0x9d7c,0x125));var _0xc9d7=function(_0x2f87cd,_0xcaf299){_0x2f87cd=_0x2f87cd-0x0;var _0x5d7eda=_0x9d7c[_0x2f87cd];return _0x5d7eda;};'use strict';function Interval(_0x1d4298){this['id']=_0x1d4298['id']||0x0;this[_0xc9d7('0x0')]=_0x1d4298['name']||'';this[_0xc9d7('0x1')]=_0x1d4298['Intervals']||{};}module[_0xc9d7('0x2')]=Interval;
\ No newline at end of file
+var _0xe5f4=['Intervals','exports','name'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0xe5f4,0x13d));var _0x4e5f=function(_0x15876a,_0x15383d){_0x15876a=_0x15876a-0x0;var _0xbd900f=_0xe5f4[_0x15876a];return _0xbd900f;};'use strict';function Interval(_0x2190bf){this['id']=_0x2190bf['id']||0x0;this[_0x4e5f('0x0')]=_0x2190bf[_0x4e5f('0x0')]||'';this[_0x4e5f('0x1')]=_0x2190bf['Intervals']||{};}module[_0x4e5f('0x2')]=Interval;
\ No newline at end of file
index 22c6478..d488e2d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a09=['exports','lodash','md5','util','redis','localhost','socket.io-emitter','name','timeout','beepall','Agents','mapAgentsId','waiting','updateRouting','updateRealtime','prototype','_rr','map','loggedIn','paused','length','online','mailPause','available','stringify','format','emit'];(function(_0x37a755,_0x5ac333){var _0x4b4019=function(_0x471a46){while(--_0x471a46){_0x37a755['push'](_0x37a755['shift']());}};_0x4b4019(++_0x5ac333);}(_0x2a09,0xa3));var _0x92a0=function(_0x17eeb3,_0x5cb626){_0x17eeb3=_0x17eeb3-0x0;var _0x39f58c=_0x2a09[_0x17eeb3];return _0x39f58c;};'use strict';var _=require(_0x92a0('0x0'));var md5=require(_0x92a0('0x1'));var util=require(_0x92a0('0x2'));var Redis=require('ioredis');var config=require('../../../config/environment');config[_0x92a0('0x3')]=_['defaults'](config[_0x92a0('0x3')],{'host':_0x92a0('0x4'),'port':0x18eb});var io=require(_0x92a0('0x5'))(new Redis(config[_0x92a0('0x3')]));function MailQueue(_0x38a26a){this['id']=_0x38a26a['id']||0x0;this[_0x92a0('0x6')]=_0x38a26a[_0x92a0('0x6')]||'';this[_0x92a0('0x7')]=_0x38a26a['timeout']||0xa;this['strategy']=_0x38a26a['strategy']||_0x92a0('0x8');this['Agents']=_0x38a26a[_0x92a0('0x9')];this[_0x92a0('0xa')]={};this[_0x92a0('0xb')]=0x0;this[_0x92a0('0x1')]='';this[_0x92a0('0xc')]();this[_0x92a0('0xd')]();}MailQueue[_0x92a0('0xe')][_0x92a0('0xc')]=function(){var _0x5d328b=this[_0x92a0('0xa')][_0x92a0('0xf')];this[_0x92a0('0xa')]=_[_0x92a0('0x10')](this['Agents'],'id');this[_0x92a0('0xa')][_0x92a0('0xf')]=_0x5d328b;};MailQueue['prototype'][_0x92a0('0xd')]=function(){this[_0x92a0('0x11')]=0x0;this[_0x92a0('0x12')]=0x0;for(var _0x41865f=0x0;_0x41865f<this[_0x92a0('0x9')][_0x92a0('0x13')];_0x41865f+=0x1){if(this[_0x92a0('0x9')][_0x41865f][_0x92a0('0x14')]){this[_0x92a0('0x11')]+=0x1;}if(this[_0x92a0('0x9')][_0x41865f][_0x92a0('0x15')]){this[_0x92a0('0x12')]+=0x1;}}this[_0x92a0('0x16')]=this[_0x92a0('0x11')]-this['paused'];this['available']=this[_0x92a0('0x16')]>=0x0?this[_0x92a0('0x16')]:0x0;var _0x21e8a2={'id':this['id'],'available':this[_0x92a0('0x16')],'loggedIn':this[_0x92a0('0x11')],'name':this[_0x92a0('0x6')],'paused':this[_0x92a0('0x12')],'waiting':this[_0x92a0('0xb')]};var _0x1fda73=md5(JSON[_0x92a0('0x17')](_0x21e8a2));if(this['md5']!==_0x1fda73){this[_0x92a0('0x1')]=_0x1fda73;io['to'](util[_0x92a0('0x18')]('mail:queue:%s',_0x21e8a2['name']))[_0x92a0('0x19')]('mail_queue:save',_0x21e8a2);}};module[_0x92a0('0x1a')]=MailQueue;
\ No newline at end of file
+var _0xe070=['_rr','mapAgentsId','map','loggedIn','paused','length','online','mailPause','available','stringify','md5','format','mail:queue:%s','emit','mail_queue:save','exports','lodash','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','waiting','updateRouting','updateRealtime','prototype'];(function(_0xe98e1e,_0x39c885){var _0x5630fa=function(_0x102de6){while(--_0x102de6){_0xe98e1e['push'](_0xe98e1e['shift']());}};_0x5630fa(++_0x39c885);}(_0xe070,0x1f0));var _0x0e07=function(_0x1f1170,_0x3b5783){_0x1f1170=_0x1f1170-0x0;var _0x127b7b=_0xe070[_0x1f1170];return _0x127b7b;};'use strict';var _=require(_0x0e07('0x0'));var md5=require('md5');var util=require('util');var Redis=require(_0x0e07('0x1'));var config=require(_0x0e07('0x2'));config[_0x0e07('0x3')]=_[_0x0e07('0x4')](config['redis'],{'host':_0x0e07('0x5'),'port':0x18eb});var io=require(_0x0e07('0x6'))(new Redis(config['redis']));function MailQueue(_0x5e07f0){this['id']=_0x5e07f0['id']||0x0;this[_0x0e07('0x7')]=_0x5e07f0[_0x0e07('0x7')]||'';this[_0x0e07('0x8')]=_0x5e07f0[_0x0e07('0x8')]||0xa;this['strategy']=_0x5e07f0[_0x0e07('0x9')]||_0x0e07('0xa');this[_0x0e07('0xb')]=_0x5e07f0[_0x0e07('0xb')];this['mapAgentsId']={};this[_0x0e07('0xc')]=0x0;this['md5']='';this[_0x0e07('0xd')]();this[_0x0e07('0xe')]();}MailQueue[_0x0e07('0xf')][_0x0e07('0xd')]=function(){var _0x4b3287=this['mapAgentsId'][_0x0e07('0x10')];this[_0x0e07('0x11')]=_[_0x0e07('0x12')](this[_0x0e07('0xb')],'id');this['mapAgentsId'][_0x0e07('0x10')]=_0x4b3287;};MailQueue[_0x0e07('0xf')][_0x0e07('0xe')]=function(){this[_0x0e07('0x13')]=0x0;this[_0x0e07('0x14')]=0x0;for(var _0x25c702=0x0;_0x25c702<this[_0x0e07('0xb')][_0x0e07('0x15')];_0x25c702+=0x1){if(this['Agents'][_0x25c702][_0x0e07('0x16')]){this[_0x0e07('0x13')]+=0x1;}if(this[_0x0e07('0xb')][_0x25c702][_0x0e07('0x17')]){this[_0x0e07('0x14')]+=0x1;}}this[_0x0e07('0x18')]=this[_0x0e07('0x13')]-this[_0x0e07('0x14')];this[_0x0e07('0x18')]=this[_0x0e07('0x18')]>=0x0?this['available']:0x0;var _0x36cdf9={'id':this['id'],'available':this[_0x0e07('0x18')],'loggedIn':this[_0x0e07('0x13')],'name':this['name'],'paused':this[_0x0e07('0x14')],'waiting':this[_0x0e07('0xc')]};var _0x1f9de3=md5(JSON[_0x0e07('0x19')](_0x36cdf9));if(this['md5']!==_0x1f9de3){this[_0x0e07('0x1a')]=_0x1f9de3;io['to'](util[_0x0e07('0x1b')](_0x0e07('0x1c'),_0x36cdf9[_0x0e07('0x7')]))[_0x0e07('0x1d')](_0x0e07('0x1e'),_0x36cdf9);}};module[_0x0e07('0x1f')]=MailQueue;
\ No newline at end of file
index ea285f1..e4cb636 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326f=['exports','lodash','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','mapAgentsId','waiting','md5','updateRouting','updateRealtime','Agents','prototype','loggedIn','paused','online','openchannelPause','available','stringify','openchannel:queue:%s','openchannel_queue:save'];(function(_0x36eaaa,_0x326732){var _0x461349=function(_0x4e4180){while(--_0x4e4180){_0x36eaaa['push'](_0x36eaaa['shift']());}};_0x461349(++_0x326732);}(_0x326f,0xd1));var _0xf326=function(_0x561b69,_0x51f736){_0x561b69=_0x561b69-0x0;var _0x5c923f=_0x326f[_0x561b69];return _0x5c923f;};'use strict';var _=require(_0xf326('0x0'));var md5=require('md5');var util=require('util');var Redis=require(_0xf326('0x1'));var config=require(_0xf326('0x2'));config[_0xf326('0x3')]=_[_0xf326('0x4')](config[_0xf326('0x3')],{'host':_0xf326('0x5'),'port':0x18eb});var io=require(_0xf326('0x6'))(new Redis(config[_0xf326('0x3')]));function OpenchannelQueue(_0x1b5a56){this['id']=_0x1b5a56['id']||0x0;this[_0xf326('0x7')]=_0x1b5a56['name']||'';this[_0xf326('0x8')]=_0x1b5a56[_0xf326('0x8')]||0xa;this[_0xf326('0x9')]=_0x1b5a56[_0xf326('0x9')]||'beepall';this['Agents']=_0x1b5a56['Agents'];this[_0xf326('0xa')]={};this[_0xf326('0xb')]=0x0;this[_0xf326('0xc')]='';this[_0xf326('0xd')]();this[_0xf326('0xe')]();}OpenchannelQueue['prototype'][_0xf326('0xd')]=function(){var _0x53cbcd=this[_0xf326('0xa')]['_rr'];this[_0xf326('0xa')]=_['map'](this[_0xf326('0xf')],'id');this[_0xf326('0xa')]['_rr']=_0x53cbcd;};OpenchannelQueue[_0xf326('0x10')][_0xf326('0xe')]=function(){this[_0xf326('0x11')]=0x0;this[_0xf326('0x12')]=0x0;for(var _0x5c8483=0x0;_0x5c8483<this[_0xf326('0xf')]['length'];_0x5c8483+=0x1){if(this['Agents'][_0x5c8483][_0xf326('0x13')]){this[_0xf326('0x11')]+=0x1;}if(this[_0xf326('0xf')][_0x5c8483][_0xf326('0x14')]){this[_0xf326('0x12')]+=0x1;}}this[_0xf326('0x15')]=this[_0xf326('0x11')]-this[_0xf326('0x12')];this['available']=this[_0xf326('0x15')]>=0x0?this[_0xf326('0x15')]:0x0;var _0x18bee3={'id':this['id'],'available':this[_0xf326('0x15')],'loggedIn':this[_0xf326('0x11')],'name':this[_0xf326('0x7')],'paused':this['paused'],'waiting':this['waiting']};var _0x56ad41=md5(JSON[_0xf326('0x16')](_0x18bee3));if(this[_0xf326('0xc')]!==_0x56ad41){this['md5']=_0x56ad41;io['to'](util['format'](_0xf326('0x17'),_0x18bee3['name']))['emit'](_0xf326('0x18'),_0x18bee3);}};module[_0xf326('0x19')]=OpenchannelQueue;
\ No newline at end of file
+var _0xc4aa=['strategy','Agents','mapAgentsId','updateRouting','updateRealtime','map','_rr','prototype','loggedIn','paused','length','online','available','waiting','stringify','format','openchannel:queue:%s','emit','openchannel_queue:save','lodash','md5','util','ioredis','../../../config/environment','redis','socket.io-emitter','name','timeout'];(function(_0x62c958,_0x2bfdbc){var _0x57ec61=function(_0x5c0094){while(--_0x5c0094){_0x62c958['push'](_0x62c958['shift']());}};_0x57ec61(++_0x2bfdbc);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x11005e,_0x20c3d2){_0x11005e=_0x11005e-0x0;var _0x29338f=_0xc4aa[_0x11005e];return _0x29338f;};'use strict';var _=require(_0xac4a('0x0'));var md5=require(_0xac4a('0x1'));var util=require(_0xac4a('0x2'));var Redis=require(_0xac4a('0x3'));var config=require(_0xac4a('0x4'));config[_0xac4a('0x5')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0xac4a('0x6'))(new Redis(config[_0xac4a('0x5')]));function OpenchannelQueue(_0x730a38){this['id']=_0x730a38['id']||0x0;this[_0xac4a('0x7')]=_0x730a38[_0xac4a('0x7')]||'';this[_0xac4a('0x8')]=_0x730a38[_0xac4a('0x8')]||0xa;this[_0xac4a('0x9')]=_0x730a38['strategy']||'beepall';this[_0xac4a('0xa')]=_0x730a38[_0xac4a('0xa')];this[_0xac4a('0xb')]={};this['waiting']=0x0;this[_0xac4a('0x1')]='';this[_0xac4a('0xc')]();this[_0xac4a('0xd')]();}OpenchannelQueue['prototype'][_0xac4a('0xc')]=function(){var _0x488e3c=this[_0xac4a('0xb')]['_rr'];this[_0xac4a('0xb')]=_[_0xac4a('0xe')](this[_0xac4a('0xa')],'id');this['mapAgentsId'][_0xac4a('0xf')]=_0x488e3c;};OpenchannelQueue[_0xac4a('0x10')][_0xac4a('0xd')]=function(){this[_0xac4a('0x11')]=0x0;this[_0xac4a('0x12')]=0x0;for(var _0x3b71c0=0x0;_0x3b71c0<this[_0xac4a('0xa')][_0xac4a('0x13')];_0x3b71c0+=0x1){if(this[_0xac4a('0xa')][_0x3b71c0][_0xac4a('0x14')]){this[_0xac4a('0x11')]+=0x1;}if(this[_0xac4a('0xa')][_0x3b71c0]['openchannelPause']){this[_0xac4a('0x12')]+=0x1;}}this[_0xac4a('0x15')]=this[_0xac4a('0x11')]-this[_0xac4a('0x12')];this[_0xac4a('0x15')]=this[_0xac4a('0x15')]>=0x0?this[_0xac4a('0x15')]:0x0;var _0x44ec59={'id':this['id'],'available':this['available'],'loggedIn':this['loggedIn'],'name':this[_0xac4a('0x7')],'paused':this[_0xac4a('0x12')],'waiting':this[_0xac4a('0x16')]};var _0x4d837c=md5(JSON[_0xac4a('0x17')](_0x44ec59));if(this[_0xac4a('0x1')]!==_0x4d837c){this[_0xac4a('0x1')]=_0x4d837c;io['to'](util[_0xac4a('0x18')](_0xac4a('0x19'),_0x44ec59[_0xac4a('0x7')]))[_0xac4a('0x1a')](_0xac4a('0x1b'),_0x44ec59);}};module['exports']=OpenchannelQueue;
\ No newline at end of file
index 1c3f006..b8a993b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6921=['defaults','localhost','name','timeout','strategy','beepall','Agents','waiting','updateRouting','updateRealtime','prototype','mapAgentsId','map','_rr','loggedIn','paused','length','online','smsPause','available','sms:queue:%s','emit','exports','md5','ioredis','redis'];(function(_0x1fd14b,_0x2e4514){var _0x736d10=function(_0x4af8a6){while(--_0x4af8a6){_0x1fd14b['push'](_0x1fd14b['shift']());}};_0x736d10(++_0x2e4514);}(_0x6921,0x1d1));var _0x1692=function(_0x408928,_0x429d4d){_0x408928=_0x408928-0x0;var _0x2bbac9=_0x6921[_0x408928];return _0x2bbac9;};'use strict';var _=require('lodash');var md5=require(_0x1692('0x0'));var util=require('util');var Redis=require(_0x1692('0x1'));var config=require('../../../config/environment');config[_0x1692('0x2')]=_[_0x1692('0x3')](config['redis'],{'host':_0x1692('0x4'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x1692('0x2')]));function SmsQueue(_0x39cc05){this['id']=_0x39cc05['id']||0x0;this[_0x1692('0x5')]=_0x39cc05[_0x1692('0x5')]||'';this[_0x1692('0x6')]=_0x39cc05[_0x1692('0x6')]||0xa;this[_0x1692('0x7')]=_0x39cc05[_0x1692('0x7')]||_0x1692('0x8');this[_0x1692('0x9')]=_0x39cc05[_0x1692('0x9')];this['mapAgentsId']={};this[_0x1692('0xa')]=0x0;this['md5']='';this[_0x1692('0xb')]();this[_0x1692('0xc')]();}SmsQueue[_0x1692('0xd')][_0x1692('0xb')]=function(){var _0x19a6cd=this[_0x1692('0xe')]['_rr'];this[_0x1692('0xe')]=_[_0x1692('0xf')](this[_0x1692('0x9')],'id');this[_0x1692('0xe')][_0x1692('0x10')]=_0x19a6cd;};SmsQueue[_0x1692('0xd')]['updateRealtime']=function(){this[_0x1692('0x11')]=0x0;this[_0x1692('0x12')]=0x0;for(var _0xddfb0c=0x0;_0xddfb0c<this[_0x1692('0x9')][_0x1692('0x13')];_0xddfb0c+=0x1){if(this[_0x1692('0x9')][_0xddfb0c][_0x1692('0x14')]){this[_0x1692('0x11')]+=0x1;}if(this['Agents'][_0xddfb0c][_0x1692('0x15')]){this['paused']+=0x1;}}this[_0x1692('0x16')]=this['loggedIn']-this[_0x1692('0x12')];this[_0x1692('0x16')]=this[_0x1692('0x16')]>=0x0?this['available']:0x0;var _0x598a2f={'id':this['id'],'available':this[_0x1692('0x16')],'loggedIn':this[_0x1692('0x11')],'name':this['name'],'paused':this[_0x1692('0x12')],'waiting':this['waiting']};var _0x2b1795=md5(JSON['stringify'](_0x598a2f));if(this['md5']!==_0x2b1795){this[_0x1692('0x0')]=_0x2b1795;io['to'](util['format'](_0x1692('0x17'),_0x598a2f[_0x1692('0x5')]))[_0x1692('0x18')]('sms_queue:save',_0x598a2f);}};module[_0x1692('0x19')]=SmsQueue;
\ No newline at end of file
+var _0xaa7c=['md5','updateRouting','updateRealtime','_rr','map','prototype','loggedIn','paused','online','available','stringify','format','sms:queue:%s','emit','sms_queue:save','exports','lodash','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting'];(function(_0x5b013a,_0x1a2504){var _0x2b6ae7=function(_0x3c26d3){while(--_0x3c26d3){_0x5b013a['push'](_0x5b013a['shift']());}};_0x2b6ae7(++_0x1a2504);}(_0xaa7c,0x1ec));var _0xcaa7=function(_0x4f8473,_0x46115b){_0x4f8473=_0x4f8473-0x0;var _0x2532c6=_0xaa7c[_0x4f8473];return _0x2532c6;};'use strict';var _=require(_0xcaa7('0x0'));var md5=require('md5');var util=require('util');var Redis=require('ioredis');var config=require('../../../config/environment');config[_0xcaa7('0x1')]=_[_0xcaa7('0x2')](config['redis'],{'host':_0xcaa7('0x3'),'port':0x18eb});var io=require(_0xcaa7('0x4'))(new Redis(config[_0xcaa7('0x1')]));function SmsQueue(_0x17d8cf){this['id']=_0x17d8cf['id']||0x0;this[_0xcaa7('0x5')]=_0x17d8cf['name']||'';this[_0xcaa7('0x6')]=_0x17d8cf['timeout']||0xa;this['strategy']=_0x17d8cf[_0xcaa7('0x7')]||_0xcaa7('0x8');this[_0xcaa7('0x9')]=_0x17d8cf['Agents'];this[_0xcaa7('0xa')]={};this[_0xcaa7('0xb')]=0x0;this[_0xcaa7('0xc')]='';this[_0xcaa7('0xd')]();this[_0xcaa7('0xe')]();}SmsQueue['prototype'][_0xcaa7('0xd')]=function(){var _0x39d53a=this[_0xcaa7('0xa')][_0xcaa7('0xf')];this[_0xcaa7('0xa')]=_[_0xcaa7('0x10')](this['Agents'],'id');this[_0xcaa7('0xa')][_0xcaa7('0xf')]=_0x39d53a;};SmsQueue[_0xcaa7('0x11')][_0xcaa7('0xe')]=function(){this[_0xcaa7('0x12')]=0x0;this[_0xcaa7('0x13')]=0x0;for(var _0x299490=0x0;_0x299490<this['Agents']['length'];_0x299490+=0x1){if(this[_0xcaa7('0x9')][_0x299490][_0xcaa7('0x14')]){this[_0xcaa7('0x12')]+=0x1;}if(this[_0xcaa7('0x9')][_0x299490]['smsPause']){this[_0xcaa7('0x13')]+=0x1;}}this[_0xcaa7('0x15')]=this[_0xcaa7('0x12')]-this[_0xcaa7('0x13')];this[_0xcaa7('0x15')]=this[_0xcaa7('0x15')]>=0x0?this[_0xcaa7('0x15')]:0x0;var _0x5c2a74={'id':this['id'],'available':this['available'],'loggedIn':this[_0xcaa7('0x12')],'name':this[_0xcaa7('0x5')],'paused':this[_0xcaa7('0x13')],'waiting':this[_0xcaa7('0xb')]};var _0x131e52=md5(JSON[_0xcaa7('0x16')](_0x5c2a74));if(this[_0xcaa7('0xc')]!==_0x131e52){this['md5']=_0x131e52;io['to'](util[_0xcaa7('0x17')](_0xcaa7('0x18'),_0x5c2a74[_0xcaa7('0x5')]))[_0xcaa7('0x19')](_0xcaa7('0x1a'),_0x5c2a74);}};module[_0xcaa7('0x1b')]=SmsQueue;
\ No newline at end of file
index 0c33248..646547a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8073=['Agents','mapAgentsId','waiting','md5','updateRealtime','updateRouting','map','_rr','prototype','loggedIn','length','online','whatsappPause','paused','available','stringify','format','whatsapp:queue:%s','emit','whatsapp_queue:save','exports','lodash','util','ioredis','../../../config/environment','redis','defaults','localhost','name','strategy','beepall'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x8073,0x1e6));var _0x3807=function(_0x422905,_0x3bce3a){_0x422905=_0x422905-0x0;var _0x33dc6c=_0x8073[_0x422905];return _0x33dc6c;};'use strict';var _=require(_0x3807('0x0'));var md5=require('md5');var util=require(_0x3807('0x1'));var Redis=require(_0x3807('0x2'));var config=require(_0x3807('0x3'));config[_0x3807('0x4')]=_[_0x3807('0x5')](config[_0x3807('0x4')],{'host':_0x3807('0x6'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x3807('0x4')]));function WhatsappQueue(_0x4a8e3f){this['id']=_0x4a8e3f['id']||0x0;this[_0x3807('0x7')]=_0x4a8e3f[_0x3807('0x7')]||'';this['timeout']=_0x4a8e3f['timeout']||0xa;this[_0x3807('0x8')]=_0x4a8e3f[_0x3807('0x8')]||_0x3807('0x9');this[_0x3807('0xa')]=_0x4a8e3f[_0x3807('0xa')];this[_0x3807('0xb')]={};this[_0x3807('0xc')]=0x0;this[_0x3807('0xd')]='';this['updateRouting']();this[_0x3807('0xe')]();}WhatsappQueue['prototype'][_0x3807('0xf')]=function(){var _0x1d5284=this[_0x3807('0xb')]['_rr'];this[_0x3807('0xb')]=_[_0x3807('0x10')](this[_0x3807('0xa')],'id');this[_0x3807('0xb')][_0x3807('0x11')]=_0x1d5284;};WhatsappQueue[_0x3807('0x12')][_0x3807('0xe')]=function(){this[_0x3807('0x13')]=0x0;this['paused']=0x0;for(var _0x3ad764=0x0;_0x3ad764<this[_0x3807('0xa')][_0x3807('0x14')];_0x3ad764+=0x1){if(this[_0x3807('0xa')][_0x3ad764][_0x3807('0x15')]){this[_0x3807('0x13')]+=0x1;}if(this[_0x3807('0xa')][_0x3ad764][_0x3807('0x16')]){this[_0x3807('0x17')]+=0x1;}}this['available']=this[_0x3807('0x13')]-this[_0x3807('0x17')];this['available']=this[_0x3807('0x18')]>=0x0?this[_0x3807('0x18')]:0x0;var _0x4d60fd={'id':this['id'],'available':this[_0x3807('0x18')],'loggedIn':this[_0x3807('0x13')],'name':this[_0x3807('0x7')],'paused':this[_0x3807('0x17')],'waiting':this[_0x3807('0xc')]};var _0x11b702=md5(JSON[_0x3807('0x19')](_0x4d60fd));if(this['md5']!==_0x11b702){this[_0x3807('0xd')]=_0x11b702;io['to'](util[_0x3807('0x1a')](_0x3807('0x1b'),_0x4d60fd[_0x3807('0x7')]))[_0x3807('0x1c')](_0x3807('0x1d'),_0x4d60fd);}};module[_0x3807('0x1e')]=WhatsappQueue;
\ No newline at end of file
+var _0x2c1d=['../../../config/environment','defaults','redis','localhost','name','timeout','strategy','beepall','mapAgentsId','waiting','updateRouting','updateRealtime','prototype','_rr','map','paused','Agents','length','online','whatsappPause','loggedIn','available','format','whatsapp:queue:%s','whatsapp_queue:save','exports','lodash','md5','util','ioredis'];(function(_0x18e4d3,_0xd34561){var _0x164e7f=function(_0x4c1f05){while(--_0x4c1f05){_0x18e4d3['push'](_0x18e4d3['shift']());}};_0x164e7f(++_0xd34561);}(_0x2c1d,0x1a0));var _0xd2c1=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x2c1d[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0xd2c1('0x0'));var md5=require(_0xd2c1('0x1'));var util=require(_0xd2c1('0x2'));var Redis=require(_0xd2c1('0x3'));var config=require(_0xd2c1('0x4'));config['redis']=_[_0xd2c1('0x5')](config[_0xd2c1('0x6')],{'host':_0xd2c1('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xd2c1('0x6')]));function WhatsappQueue(_0x2532e5){this['id']=_0x2532e5['id']||0x0;this[_0xd2c1('0x8')]=_0x2532e5[_0xd2c1('0x8')]||'';this[_0xd2c1('0x9')]=_0x2532e5[_0xd2c1('0x9')]||0xa;this[_0xd2c1('0xa')]=_0x2532e5[_0xd2c1('0xa')]||_0xd2c1('0xb');this['Agents']=_0x2532e5['Agents'];this[_0xd2c1('0xc')]={};this[_0xd2c1('0xd')]=0x0;this[_0xd2c1('0x1')]='';this[_0xd2c1('0xe')]();this[_0xd2c1('0xf')]();}WhatsappQueue[_0xd2c1('0x10')][_0xd2c1('0xe')]=function(){var _0x424b03=this[_0xd2c1('0xc')][_0xd2c1('0x11')];this[_0xd2c1('0xc')]=_[_0xd2c1('0x12')](this['Agents'],'id');this[_0xd2c1('0xc')][_0xd2c1('0x11')]=_0x424b03;};WhatsappQueue['prototype'][_0xd2c1('0xf')]=function(){this['loggedIn']=0x0;this[_0xd2c1('0x13')]=0x0;for(var _0x3c7e7e=0x0;_0x3c7e7e<this[_0xd2c1('0x14')][_0xd2c1('0x15')];_0x3c7e7e+=0x1){if(this[_0xd2c1('0x14')][_0x3c7e7e][_0xd2c1('0x16')]){this['loggedIn']+=0x1;}if(this[_0xd2c1('0x14')][_0x3c7e7e][_0xd2c1('0x17')]){this[_0xd2c1('0x13')]+=0x1;}}this['available']=this[_0xd2c1('0x18')]-this['paused'];this[_0xd2c1('0x19')]=this[_0xd2c1('0x19')]>=0x0?this[_0xd2c1('0x19')]:0x0;var _0x39b502={'id':this['id'],'available':this[_0xd2c1('0x19')],'loggedIn':this[_0xd2c1('0x18')],'name':this['name'],'paused':this[_0xd2c1('0x13')],'waiting':this['waiting']};var _0x4dd56b=md5(JSON['stringify'](_0x39b502));if(this[_0xd2c1('0x1')]!==_0x4dd56b){this[_0xd2c1('0x1')]=_0x4dd56b;io['to'](util[_0xd2c1('0x1a')](_0xd2c1('0x1b'),_0x39b502[_0xd2c1('0x8')]))['emit'](_0xd2c1('0x1c'),_0x39b502);}};module[_0xd2c1('0x1d')]=WhatsappQueue;
\ No newline at end of file
index bc0485c..d27f936 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['isUndefined','initIntervals','updateRealtime','updateRouting','initSmsQueues','smsQueues','initMailQueues','mailQueues','initWhatsappQueues','whatsappQueues','exports','bluebird','util','lodash','../model/interval','../model/chatQueue','../model/smsQueue','../model/mailQueue','../model/faxQueue','../model/whatsappQueue','intervals','openchannelQueues','chatQueues','faxQueues','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','hasOwnProperty','prototype','mergeFromDatabase','initAgents','agents','length'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa9e0,0x123));var _0x0a9e=function(_0x34bc30,_0x177cb0){_0x34bc30=_0x34bc30-0x0;var _0x5706de=_0xa9e0[_0x34bc30];return _0x5706de;};'use strict';var BPromise=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var _=require(_0x0a9e('0x2'));var moment=require('moment');var Agent=require('../model/agent');var Interval=require(_0x0a9e('0x3'));var OpenchannelQueue=require('../model/openchannelQueue');var ChatQueue=require(_0x0a9e('0x4'));var SmsQueue=require(_0x0a9e('0x5'));var MailQueue=require(_0x0a9e('0x6'));var FaxQueue=require(_0x0a9e('0x7'));var WhatsappQueue=require(_0x0a9e('0x8'));var Realtime=function(){this['agents']={};this[_0x0a9e('0x9')]={};this[_0x0a9e('0xa')]={};this[_0x0a9e('0xb')]={};this['smsQueues']={};this['mailQueues']={};this[_0x0a9e('0xc')]={};this['whatsappQueues']={};this['chatQueuesWaitingInteractions']={};this[_0x0a9e('0xd')]={};this[_0x0a9e('0xe')]={};this[_0x0a9e('0xf')]={};this[_0x0a9e('0x10')]={};this[_0x0a9e('0x11')]={};};function freeIsNotKey(_0xbd1168,_0x4a4c56,_0x50dfb2){var _0x527cdd=_['mapKeys'](_0xbd1168,function(_0x273d4d,_0x36471c){return _0x273d4d[_0x50dfb2];});for(var _0xd5b662 in _0x4a4c56){if(_0x4a4c56[_0x0a9e('0x12')](_0xd5b662)){if(!_0x527cdd[_0xd5b662]){delete _0x4a4c56[_0xd5b662];}}}}Realtime[_0x0a9e('0x13')][_0x0a9e('0x14')]=function(_0x5db4b0,_0x4283ce){for(var _0x239b12 in _0x4283ce){if(_0x5db4b0[_0x0a9e('0x12')](_0x239b12)){_0x5db4b0[_0x239b12]=_0x4283ce[_0x239b12];}}};Realtime[_0x0a9e('0x13')][_0x0a9e('0x15')]=function(){var _0x4d5611=this;return function(_0x52a03d){if(_0x52a03d){freeIsNotKey(_0x52a03d,_0x4d5611[_0x0a9e('0x16')],'id');for(var _0x5d0880=0x0,_0x1985b6={},_0x519dfd={};_0x5d0880<_0x52a03d[_0x0a9e('0x17')];_0x5d0880+=0x1){_0x1985b6=_0x52a03d[_0x5d0880];if(_[_0x0a9e('0x18')](_0x4d5611['agents'][_0x1985b6['id']])){_0x4d5611[_0x0a9e('0x16')][_0x1985b6['id']]=new Agent(_0x1985b6);}else{_0x4d5611['mergeFromDatabase'](_0x4d5611[_0x0a9e('0x16')][_0x1985b6['id']],_0x1985b6);}}}return _0x4d5611[_0x0a9e('0x16')];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x19')]=function(){var _0x31b1ca=this;return function(_0x2eb11f){if(_0x2eb11f){freeIsNotKey(_0x2eb11f,_0x31b1ca[_0x0a9e('0x9')],'id');for(var _0x20559e=0x0,_0x1314ae={},_0x112016={};_0x20559e<_0x2eb11f[_0x0a9e('0x17')];_0x20559e+=0x1){_0x1314ae=_0x2eb11f[_0x20559e];if(_[_0x0a9e('0x18')](_0x31b1ca['intervals'][_0x1314ae['id']])){_0x31b1ca[_0x0a9e('0x9')][_0x1314ae['id']]=new Interval(_0x1314ae);}else{_0x31b1ca[_0x0a9e('0x14')](_0x31b1ca['intervals'][_0x1314ae['id']],_0x1314ae);}}}return _0x31b1ca[_0x0a9e('0x9')];};};Realtime['prototype']['initOpenchannelQueues']=function(){var _0x3a02e1=this;return function(_0x432e56){if(_0x432e56){freeIsNotKey(_0x432e56,_0x3a02e1[_0x0a9e('0xa')],'id');for(var _0x30bae6=0x0,_0x4abc77={},_0xfb6e48={};_0x30bae6<_0x432e56[_0x0a9e('0x17')];_0x30bae6+=0x1){_0x4abc77=_0x432e56[_0x30bae6];if(_[_0x0a9e('0x18')](_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']])){_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']]=new OpenchannelQueue(_0x4abc77);}else{_0x3a02e1[_0x0a9e('0x14')](_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']],_0x4abc77);}_0x3a02e1['openchannelQueues'][_0x4abc77['id']]['updateRouting']();_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']][_0x0a9e('0x1a')]();}}return _0x3a02e1[_0x0a9e('0xa')];};};Realtime[_0x0a9e('0x13')]['initChatQueues']=function(){var _0x384319=this;return function(_0x479bc4){if(_0x479bc4){freeIsNotKey(_0x479bc4,_0x384319[_0x0a9e('0xb')],'id');for(var _0x5bfb33=0x0,_0x1dc186={},_0x34dc65={};_0x5bfb33<_0x479bc4[_0x0a9e('0x17')];_0x5bfb33+=0x1){_0x1dc186=_0x479bc4[_0x5bfb33];if(_[_0x0a9e('0x18')](_0x384319[_0x0a9e('0xb')][_0x1dc186['id']])){_0x384319[_0x0a9e('0xb')][_0x1dc186['id']]=new ChatQueue(_0x1dc186);}else{_0x384319[_0x0a9e('0x14')](_0x384319[_0x0a9e('0xb')][_0x1dc186['id']],_0x1dc186);}_0x384319['chatQueues'][_0x1dc186['id']][_0x0a9e('0x1b')]();_0x384319[_0x0a9e('0xb')][_0x1dc186['id']][_0x0a9e('0x1a')]();}}return _0x384319[_0x0a9e('0xb')];};};Realtime['prototype'][_0x0a9e('0x1c')]=function(){var _0x40e7a3=this;return function(_0x1843b2){if(_0x1843b2){freeIsNotKey(_0x1843b2,_0x40e7a3[_0x0a9e('0x1d')],'id');for(var _0x58b06f=0x0,_0x563b45={},_0x296f41={};_0x58b06f<_0x1843b2[_0x0a9e('0x17')];_0x58b06f+=0x1){_0x563b45=_0x1843b2[_0x58b06f];if(_[_0x0a9e('0x18')](_0x40e7a3['smsQueues'][_0x563b45['id']])){_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']]=new SmsQueue(_0x563b45);}else{_0x40e7a3['mergeFromDatabase'](_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']],_0x563b45);}_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']][_0x0a9e('0x1b')]();_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']][_0x0a9e('0x1a')]();}}return _0x40e7a3['smsQueues'];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x1e')]=function(){var _0x40cb85=this;return function(_0x2da5c0){if(_0x2da5c0){freeIsNotKey(_0x2da5c0,_0x40cb85[_0x0a9e('0x1f')],'id');for(var _0x409319=0x0,_0x332d35={},_0x39e565={};_0x409319<_0x2da5c0['length'];_0x409319+=0x1){_0x332d35=_0x2da5c0[_0x409319];if(_[_0x0a9e('0x18')](_0x40cb85['mailQueues'][_0x332d35['id']])){_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']]=new MailQueue(_0x332d35);}else{_0x40cb85[_0x0a9e('0x14')](_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']],_0x332d35);}_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']]['updateRouting']();_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']][_0x0a9e('0x1a')]();}}return _0x40cb85[_0x0a9e('0x1f')];};};Realtime[_0x0a9e('0x13')]['initFaxQueues']=function(){var _0x54135e=this;return function(_0x1e8694){if(_0x1e8694){freeIsNotKey(_0x1e8694,_0x54135e['faxQueues'],'id');for(var _0x24936a=0x0,_0x3d9717={},_0x381c37={};_0x24936a<_0x1e8694[_0x0a9e('0x17')];_0x24936a+=0x1){_0x3d9717=_0x1e8694[_0x24936a];if(_['isUndefined'](_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']])){_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']]=new FaxQueue(_0x3d9717);}else{_0x54135e[_0x0a9e('0x14')](_0x54135e['faxQueues'][_0x3d9717['id']],_0x3d9717);}_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']][_0x0a9e('0x1b')]();_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']]['updateRealtime']();}}return _0x54135e['faxQueues'];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x20')]=function(){var _0x5adda1=this;return function(_0x2b814e){if(_0x2b814e){freeIsNotKey(_0x2b814e,_0x5adda1[_0x0a9e('0x21')],'id');for(var _0x2e1b3a=0x0,_0x148f55={},_0x4b38d9={};_0x2e1b3a<_0x2b814e['length'];_0x2e1b3a+=0x1){_0x148f55=_0x2b814e[_0x2e1b3a];if(_[_0x0a9e('0x18')](_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']])){_0x5adda1['whatsappQueues'][_0x148f55['id']]=new WhatsappQueue(_0x148f55);}else{_0x5adda1[_0x0a9e('0x14')](_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']],_0x148f55);}_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']]['updateRouting']();_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']][_0x0a9e('0x1a')]();}}return _0x5adda1[_0x0a9e('0x21')];};};module[_0x0a9e('0x22')]=Realtime;
\ No newline at end of file
+var _0xa9e0=['isUndefined','initIntervals','updateRealtime','updateRouting','initSmsQueues','smsQueues','initMailQueues','mailQueues','initWhatsappQueues','whatsappQueues','exports','bluebird','util','lodash','../model/interval','../model/chatQueue','../model/smsQueue','../model/mailQueue','../model/faxQueue','../model/whatsappQueue','intervals','openchannelQueues','chatQueues','faxQueues','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','hasOwnProperty','prototype','mergeFromDatabase','initAgents','agents','length'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa9e0,0x123));var _0x0a9e=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0xa9e0[_0xbca1b1];return _0x4e1686;};'use strict';var BPromise=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var _=require(_0x0a9e('0x2'));var moment=require('moment');var Agent=require('../model/agent');var Interval=require(_0x0a9e('0x3'));var OpenchannelQueue=require('../model/openchannelQueue');var ChatQueue=require(_0x0a9e('0x4'));var SmsQueue=require(_0x0a9e('0x5'));var MailQueue=require(_0x0a9e('0x6'));var FaxQueue=require(_0x0a9e('0x7'));var WhatsappQueue=require(_0x0a9e('0x8'));var Realtime=function(){this['agents']={};this[_0x0a9e('0x9')]={};this[_0x0a9e('0xa')]={};this[_0x0a9e('0xb')]={};this['smsQueues']={};this['mailQueues']={};this[_0x0a9e('0xc')]={};this['whatsappQueues']={};this['chatQueuesWaitingInteractions']={};this[_0x0a9e('0xd')]={};this[_0x0a9e('0xe')]={};this[_0x0a9e('0xf')]={};this[_0x0a9e('0x10')]={};this[_0x0a9e('0x11')]={};};function freeIsNotKey(_0xbd1168,_0x4a4c56,_0x50dfb2){var _0x527cdd=_['mapKeys'](_0xbd1168,function(_0x273d4d,_0x36471c){return _0x273d4d[_0x50dfb2];});for(var _0xd5b662 in _0x4a4c56){if(_0x4a4c56[_0x0a9e('0x12')](_0xd5b662)){if(!_0x527cdd[_0xd5b662]){delete _0x4a4c56[_0xd5b662];}}}}Realtime[_0x0a9e('0x13')][_0x0a9e('0x14')]=function(_0x5db4b0,_0x4283ce){for(var _0x239b12 in _0x4283ce){if(_0x5db4b0[_0x0a9e('0x12')](_0x239b12)){_0x5db4b0[_0x239b12]=_0x4283ce[_0x239b12];}}};Realtime[_0x0a9e('0x13')][_0x0a9e('0x15')]=function(){var _0x4d5611=this;return function(_0x52a03d){if(_0x52a03d){freeIsNotKey(_0x52a03d,_0x4d5611[_0x0a9e('0x16')],'id');for(var _0x5d0880=0x0,_0x1985b6={},_0x519dfd={};_0x5d0880<_0x52a03d[_0x0a9e('0x17')];_0x5d0880+=0x1){_0x1985b6=_0x52a03d[_0x5d0880];if(_[_0x0a9e('0x18')](_0x4d5611['agents'][_0x1985b6['id']])){_0x4d5611[_0x0a9e('0x16')][_0x1985b6['id']]=new Agent(_0x1985b6);}else{_0x4d5611['mergeFromDatabase'](_0x4d5611[_0x0a9e('0x16')][_0x1985b6['id']],_0x1985b6);}}}return _0x4d5611[_0x0a9e('0x16')];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x19')]=function(){var _0x31b1ca=this;return function(_0x2eb11f){if(_0x2eb11f){freeIsNotKey(_0x2eb11f,_0x31b1ca[_0x0a9e('0x9')],'id');for(var _0x20559e=0x0,_0x1314ae={},_0x112016={};_0x20559e<_0x2eb11f[_0x0a9e('0x17')];_0x20559e+=0x1){_0x1314ae=_0x2eb11f[_0x20559e];if(_[_0x0a9e('0x18')](_0x31b1ca['intervals'][_0x1314ae['id']])){_0x31b1ca[_0x0a9e('0x9')][_0x1314ae['id']]=new Interval(_0x1314ae);}else{_0x31b1ca[_0x0a9e('0x14')](_0x31b1ca['intervals'][_0x1314ae['id']],_0x1314ae);}}}return _0x31b1ca[_0x0a9e('0x9')];};};Realtime['prototype']['initOpenchannelQueues']=function(){var _0x3a02e1=this;return function(_0x432e56){if(_0x432e56){freeIsNotKey(_0x432e56,_0x3a02e1[_0x0a9e('0xa')],'id');for(var _0x30bae6=0x0,_0x4abc77={},_0xfb6e48={};_0x30bae6<_0x432e56[_0x0a9e('0x17')];_0x30bae6+=0x1){_0x4abc77=_0x432e56[_0x30bae6];if(_[_0x0a9e('0x18')](_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']])){_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']]=new OpenchannelQueue(_0x4abc77);}else{_0x3a02e1[_0x0a9e('0x14')](_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']],_0x4abc77);}_0x3a02e1['openchannelQueues'][_0x4abc77['id']]['updateRouting']();_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']][_0x0a9e('0x1a')]();}}return _0x3a02e1[_0x0a9e('0xa')];};};Realtime[_0x0a9e('0x13')]['initChatQueues']=function(){var _0x384319=this;return function(_0x479bc4){if(_0x479bc4){freeIsNotKey(_0x479bc4,_0x384319[_0x0a9e('0xb')],'id');for(var _0x5bfb33=0x0,_0x1dc186={},_0x34dc65={};_0x5bfb33<_0x479bc4[_0x0a9e('0x17')];_0x5bfb33+=0x1){_0x1dc186=_0x479bc4[_0x5bfb33];if(_[_0x0a9e('0x18')](_0x384319[_0x0a9e('0xb')][_0x1dc186['id']])){_0x384319[_0x0a9e('0xb')][_0x1dc186['id']]=new ChatQueue(_0x1dc186);}else{_0x384319[_0x0a9e('0x14')](_0x384319[_0x0a9e('0xb')][_0x1dc186['id']],_0x1dc186);}_0x384319['chatQueues'][_0x1dc186['id']][_0x0a9e('0x1b')]();_0x384319[_0x0a9e('0xb')][_0x1dc186['id']][_0x0a9e('0x1a')]();}}return _0x384319[_0x0a9e('0xb')];};};Realtime['prototype'][_0x0a9e('0x1c')]=function(){var _0x40e7a3=this;return function(_0x1843b2){if(_0x1843b2){freeIsNotKey(_0x1843b2,_0x40e7a3[_0x0a9e('0x1d')],'id');for(var _0x58b06f=0x0,_0x563b45={},_0x296f41={};_0x58b06f<_0x1843b2[_0x0a9e('0x17')];_0x58b06f+=0x1){_0x563b45=_0x1843b2[_0x58b06f];if(_[_0x0a9e('0x18')](_0x40e7a3['smsQueues'][_0x563b45['id']])){_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']]=new SmsQueue(_0x563b45);}else{_0x40e7a3['mergeFromDatabase'](_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']],_0x563b45);}_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']][_0x0a9e('0x1b')]();_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']][_0x0a9e('0x1a')]();}}return _0x40e7a3['smsQueues'];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x1e')]=function(){var _0x40cb85=this;return function(_0x2da5c0){if(_0x2da5c0){freeIsNotKey(_0x2da5c0,_0x40cb85[_0x0a9e('0x1f')],'id');for(var _0x409319=0x0,_0x332d35={},_0x39e565={};_0x409319<_0x2da5c0['length'];_0x409319+=0x1){_0x332d35=_0x2da5c0[_0x409319];if(_[_0x0a9e('0x18')](_0x40cb85['mailQueues'][_0x332d35['id']])){_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']]=new MailQueue(_0x332d35);}else{_0x40cb85[_0x0a9e('0x14')](_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']],_0x332d35);}_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']]['updateRouting']();_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']][_0x0a9e('0x1a')]();}}return _0x40cb85[_0x0a9e('0x1f')];};};Realtime[_0x0a9e('0x13')]['initFaxQueues']=function(){var _0x54135e=this;return function(_0x1e8694){if(_0x1e8694){freeIsNotKey(_0x1e8694,_0x54135e['faxQueues'],'id');for(var _0x24936a=0x0,_0x3d9717={},_0x381c37={};_0x24936a<_0x1e8694[_0x0a9e('0x17')];_0x24936a+=0x1){_0x3d9717=_0x1e8694[_0x24936a];if(_['isUndefined'](_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']])){_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']]=new FaxQueue(_0x3d9717);}else{_0x54135e[_0x0a9e('0x14')](_0x54135e['faxQueues'][_0x3d9717['id']],_0x3d9717);}_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']][_0x0a9e('0x1b')]();_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']]['updateRealtime']();}}return _0x54135e['faxQueues'];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x20')]=function(){var _0x5adda1=this;return function(_0x2b814e){if(_0x2b814e){freeIsNotKey(_0x2b814e,_0x5adda1[_0x0a9e('0x21')],'id');for(var _0x2e1b3a=0x0,_0x148f55={},_0x4b38d9={};_0x2e1b3a<_0x2b814e['length'];_0x2e1b3a+=0x1){_0x148f55=_0x2b814e[_0x2e1b3a];if(_[_0x0a9e('0x18')](_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']])){_0x5adda1['whatsappQueues'][_0x148f55['id']]=new WhatsappQueue(_0x148f55);}else{_0x5adda1[_0x0a9e('0x14')](_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']],_0x148f55);}_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']]['updateRouting']();_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']][_0x0a9e('0x1a')]();}}return _0x5adda1[_0x0a9e('0x21')];};};module[_0x0a9e('0x22')]=Realtime;
\ No newline at end of file
index 1f0d5e9..648795f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f48=['UpdateChatInteraction','updateChatInteraction','addTags','AddTagsToChatInteraction','../client','update','Request'];(function(_0x1cb129,_0x5eb70a){var _0x58d6fd=function(_0x2e7bfa){while(--_0x2e7bfa){_0x1cb129['push'](_0x1cb129['shift']());}};_0x58d6fd(++_0x5eb70a);}(_0x8f48,0xa5));var _0x88f4=function(_0x26a906,_0x3d135c){_0x26a906=_0x26a906-0x0;var _0x495575=_0x8f48[_0x26a906];return _0x495575;};'use strict';var client=require(_0x88f4('0x0'));exports[_0x88f4('0x1')]=function(_0x1e17da,_0x2752ec){return client[_0x88f4('0x2')](_0x88f4('0x3'),{'body':_0x2752ec,'options':{'where':{'id':_0x1e17da}},'log':_0x88f4('0x4')});};exports[_0x88f4('0x5')]=function(_0x4ba1a5,_0x3dcdca){return client[_0x88f4('0x2')](_0x88f4('0x6'),{'body':_0x3dcdca,'options':{'where':{'id':_0x4ba1a5}},'log':'addTagsToChatInteraction'});};
\ No newline at end of file
+var _0x1950=['addTags','AddTagsToChatInteraction','addTagsToChatInteraction','../client','update','Request','UpdateChatInteraction','updateChatInteraction'];(function(_0x49d45c,_0x26ab3f){var _0x26f71f=function(_0x8f4786){while(--_0x8f4786){_0x49d45c['push'](_0x49d45c['shift']());}};_0x26f71f(++_0x26ab3f);}(_0x1950,0x13b));var _0x0195=function(_0x36fefd,_0xbaf9e5){_0x36fefd=_0x36fefd-0x0;var _0x2d4ff8=_0x1950[_0x36fefd];return _0x2d4ff8;};'use strict';var client=require(_0x0195('0x0'));exports[_0x0195('0x1')]=function(_0x4de6e3,_0x295f5b){return client[_0x0195('0x2')](_0x0195('0x3'),{'body':_0x295f5b,'options':{'where':{'id':_0x4de6e3}},'log':_0x0195('0x4')});};exports[_0x0195('0x5')]=function(_0x558a8f,_0x251e25){return client[_0x0195('0x2')](_0x0195('0x6'),{'body':_0x251e25,'options':{'where':{'id':_0x558a8f}},'log':_0x0195('0x7')});};
\ No newline at end of file
index 013642a..9bb40df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xebb5=['../client','create','createChatMessage'];(function(_0x2ccf43,_0x309149){var _0x4c9b88=function(_0x135b17){while(--_0x135b17){_0x2ccf43['push'](_0x2ccf43['shift']());}};_0x4c9b88(++_0x309149);}(_0xebb5,0xcf));var _0x5ebb=function(_0x521826,_0x18cced){_0x521826=_0x521826-0x0;var _0x1faa01=_0xebb5[_0x521826];return _0x1faa01;};'use strict';var client=require(_0x5ebb('0x0'));exports[_0x5ebb('0x1')]=function(_0x29a0a2){return client['Request']('CreateChatMessage',{'body':_0x29a0a2,'log':_0x5ebb('0x2')});};
\ No newline at end of file
+var _0xf106=['create','Request','CreateChatMessage','createChatMessage','../client'];(function(_0x28a778,_0x173ec0){var _0x430926=function(_0x214475){while(--_0x214475){_0x28a778['push'](_0x28a778['shift']());}};_0x430926(++_0x173ec0);}(_0xf106,0x7c));var _0x6f10=function(_0x40f9a0,_0x3458cc){_0x40f9a0=_0x40f9a0-0x0;var _0x3e3144=_0xf106[_0x40f9a0];return _0x3e3144;};'use strict';var client=require(_0x6f10('0x0'));exports[_0x6f10('0x1')]=function(_0x35fcef){return client[_0x6f10('0x2')](_0x6f10('0x3'),{'body':_0x35fcef,'log':_0x6f10('0x4')});};
\ No newline at end of file
index 8214957..696afb4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f4d=['online','chatPause','getChatQueues','GetChatQueue','timeout','strategy','User','Agents','name'];(function(_0x5b45fb,_0x4a8523){var _0x43c96e=function(_0x3a63ae){while(--_0x3a63ae){_0x5b45fb['push'](_0x5b45fb['shift']());}};_0x43c96e(++_0x4a8523);}(_0x0f4d,0x12c));var _0xd0f4=function(_0x3515fe,_0x483232){_0x3515fe=_0x3515fe-0x0;var _0x333488=_0x0f4d[_0x3515fe];return _0x333488;};'use strict';var client=require('../client');exports['getChatQueues']=function(){return function(){return client['Request'](_0xd0f4('0x0'),{'options':{'raw':![],'attributes':['id','name',_0xd0f4('0x1'),_0xd0f4('0x2')],'include':[{'model':_0xd0f4('0x3'),'as':_0xd0f4('0x4'),'attributes':['id',_0xd0f4('0x5'),_0xd0f4('0x6'),_0xd0f4('0x7')]}]},'log':_0xd0f4('0x8')});};};
\ No newline at end of file
+var _0x5a93=['getChatQueues','GetChatQueue','name','User','Agents','chatPause'];(function(_0x282de2,_0x1f2d99){var _0x53ec6c=function(_0x3a7646){while(--_0x3a7646){_0x282de2['push'](_0x282de2['shift']());}};_0x53ec6c(++_0x1f2d99);}(_0x5a93,0xf6));var _0x35a9=function(_0x149759,_0x7f4feb){_0x149759=_0x149759-0x0;var _0xb05afc=_0x5a93[_0x149759];return _0xb05afc;};'use strict';var client=require('../client');exports[_0x35a9('0x0')]=function(){return function(){return client['Request'](_0x35a9('0x1'),{'options':{'raw':![],'attributes':['id',_0x35a9('0x2'),'timeout','strategy'],'include':[{'model':_0x35a9('0x3'),'as':_0x35a9('0x4'),'attributes':['id',_0x35a9('0x2'),'online',_0x35a9('0x5')]}]},'log':_0x35a9('0x0')});};};
\ No newline at end of file
index 18d8509..d564d6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa2f=['UpdateChatQueueReport','DESC','CreateChatQueueReport','update','Request'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0xfa2f,0xe8));var _0xffa2=function(_0x48580f,_0x450095){_0x48580f=_0x48580f-0x0;var _0x26b0d2=_0xfa2f[_0x48580f];return _0x26b0d2;};'use strict';var client=require('../client');exports['create']=function(_0x3a81ad){return client['Request'](_0xffa2('0x0'),{'body':_0x3a81ad,'log':_0xffa2('0x0')});};exports[_0xffa2('0x1')]=function(_0x54d423,_0x3fcced){return client[_0xffa2('0x2')](_0xffa2('0x3'),{'body':_0x3fcced,'options':{'where':{'uniqueid':_0x54d423},'order':[['id',_0xffa2('0x4')]],'limit':0x1},'log':_0xffa2('0x3')});};
\ No newline at end of file
+var _0x1df5=['DESC','../client','create','Request','CreateChatQueueReport','update','UpdateChatQueueReport'];(function(_0x4bb2b9,_0x459c78){var _0x40e2a2=function(_0x19a26c){while(--_0x19a26c){_0x4bb2b9['push'](_0x4bb2b9['shift']());}};_0x40e2a2(++_0x459c78);}(_0x1df5,0xfd));var _0x51df=function(_0x97ad7f,_0x398545){_0x97ad7f=_0x97ad7f-0x0;var _0x1b2154=_0x1df5[_0x97ad7f];return _0x1b2154;};'use strict';var client=require(_0x51df('0x0'));exports[_0x51df('0x1')]=function(_0x22acff){return client[_0x51df('0x2')](_0x51df('0x3'),{'body':_0x22acff,'log':'CreateChatQueueReport'});};exports[_0x51df('0x4')]=function(_0x457292,_0x1c491f){return client[_0x51df('0x2')](_0x51df('0x5'),{'body':_0x1c491f,'options':{'where':{'uniqueid':_0x457292},'order':[['id',_0x51df('0x6')]],'limit':0x1},'log':_0x51df('0x5')});};
\ No newline at end of file
index c9575da..6e008f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['Request','AddTagsToFaxInteraction','addTagsToFaxInteraction','../client','update','UpdateFaxInteraction','updateFaxInteraction','addTags'];(function(_0x5159af,_0x32898b){var _0x324b8e=function(_0x2661cd){while(--_0x2661cd){_0x5159af['push'](_0x5159af['shift']());}};_0x324b8e(++_0x32898b);}(_0x9957,0x93));var _0x7995=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x9957[_0x3b380d];return _0x54502b;};'use strict';var client=require(_0x7995('0x0'));exports[_0x7995('0x1')]=function(_0x2722a3,_0x10a05d){return client['Request'](_0x7995('0x2'),{'body':_0x10a05d,'options':{'where':{'id':_0x2722a3}},'log':_0x7995('0x3')});};exports[_0x7995('0x4')]=function(_0x462a03,_0x576d89){return client[_0x7995('0x5')](_0x7995('0x6'),{'body':_0x576d89,'options':{'where':{'id':_0x462a03}},'log':_0x7995('0x7')});};
\ No newline at end of file
+var _0x9957=['Request','AddTagsToFaxInteraction','addTagsToFaxInteraction','../client','update','UpdateFaxInteraction','updateFaxInteraction','addTags'];(function(_0x4e4266,_0x3ee472){var _0x41065f=function(_0x273511){while(--_0x273511){_0x4e4266['push'](_0x4e4266['shift']());}};_0x41065f(++_0x3ee472);}(_0x9957,0x93));var _0x7995=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x9957[_0x6c993a];return _0x27f547;};'use strict';var client=require(_0x7995('0x0'));exports[_0x7995('0x1')]=function(_0x2722a3,_0x10a05d){return client['Request'](_0x7995('0x2'),{'body':_0x10a05d,'options':{'where':{'id':_0x2722a3}},'log':_0x7995('0x3')});};exports[_0x7995('0x4')]=function(_0x462a03,_0x576d89){return client[_0x7995('0x5')](_0x7995('0x6'),{'body':_0x576d89,'options':{'where':{'id':_0x462a03}},'log':_0x7995('0x7')});};
\ No newline at end of file
index f4e4c1e..ab46eae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3776=['createFaxMessage','../client','create'];(function(_0x1dfc97,_0x36334e){var _0x5e10dd=function(_0x55a8c0){while(--_0x55a8c0){_0x1dfc97['push'](_0x1dfc97['shift']());}};_0x5e10dd(++_0x36334e);}(_0x3776,0x160));var _0x6377=function(_0x4618da,_0x27c024){_0x4618da=_0x4618da-0x0;var _0xede04a=_0x3776[_0x4618da];return _0xede04a;};'use strict';var client=require(_0x6377('0x0'));exports[_0x6377('0x1')]=function(_0x558431){return client['Request']('CreateFaxMessage',{'body':_0x558431,'log':_0x6377('0x2')});};
\ No newline at end of file
+var _0x310e=['../client','Request','CreateFaxMessage'];(function(_0x1a3ece,_0x1b51af){var _0x49c3ae=function(_0x21ed29){while(--_0x21ed29){_0x1a3ece['push'](_0x1a3ece['shift']());}};_0x49c3ae(++_0x1b51af);}(_0x310e,0x14a));var _0xe310=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x310e[_0x3dd15e];return _0x231fd0;};'use strict';var client=require(_0xe310('0x0'));exports['create']=function(_0x22bd7e){return client[_0xe310('0x1')](_0xe310('0x2'),{'body':_0x22bd7e,'log':'createFaxMessage'});};
\ No newline at end of file
index bf6aefd..47dc45b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e67=['../client','getFaxQueues','Request','GetFaxQueue','name','timeout','strategy','User','Agents','online','faxPause'];(function(_0xe3da0e,_0x55847f){var _0x535928=function(_0x406470){while(--_0x406470){_0xe3da0e['push'](_0xe3da0e['shift']());}};_0x535928(++_0x55847f);}(_0x2e67,0xb0));var _0x72e6=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x2e67[_0x20a584];return _0x4b41a8;};'use strict';var client=require(_0x72e6('0x0'));exports[_0x72e6('0x1')]=function(){return function(){return client[_0x72e6('0x2')](_0x72e6('0x3'),{'options':{'raw':![],'attributes':['id',_0x72e6('0x4'),_0x72e6('0x5'),_0x72e6('0x6')],'include':[{'model':_0x72e6('0x7'),'as':_0x72e6('0x8'),'attributes':['id',_0x72e6('0x4'),_0x72e6('0x9'),_0x72e6('0xa')]}]},'log':'getFaxQueues'});};};
\ No newline at end of file
+var _0xeb69=['name','timeout','strategy','User','Agents','faxPause','getFaxQueues','../client','Request','GetFaxQueue'];(function(_0x1f7a31,_0x6a7b9){var _0x29206c=function(_0x255ed1){while(--_0x255ed1){_0x1f7a31['push'](_0x1f7a31['shift']());}};_0x29206c(++_0x6a7b9);}(_0xeb69,0x197));var _0x9eb6=function(_0x44ebbd,_0x3cc760){_0x44ebbd=_0x44ebbd-0x0;var _0xc97ad=_0xeb69[_0x44ebbd];return _0xc97ad;};'use strict';var client=require(_0x9eb6('0x0'));exports['getFaxQueues']=function(){return function(){return client[_0x9eb6('0x1')](_0x9eb6('0x2'),{'options':{'raw':![],'attributes':['id',_0x9eb6('0x3'),_0x9eb6('0x4'),_0x9eb6('0x5')],'include':[{'model':_0x9eb6('0x6'),'as':_0x9eb6('0x7'),'attributes':['id','name','online',_0x9eb6('0x8')]}]},'log':_0x9eb6('0x9')});};};
\ No newline at end of file
index 2ec20ea..445ff77 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd4ce=['CreateFaxQueueReport','update','DESC','UpdateFaxQueueReport','Request'];(function(_0x292075,_0x1438bc){var _0x3a8791=function(_0x8e3814){while(--_0x8e3814){_0x292075['push'](_0x292075['shift']());}};_0x3a8791(++_0x1438bc);}(_0xd4ce,0xb3));var _0xed4c=function(_0x5447fd,_0x52a6b5){_0x5447fd=_0x5447fd-0x0;var _0x15b28a=_0xd4ce[_0x5447fd];return _0x15b28a;};'use strict';var client=require('../client');exports['create']=function(_0x434173){return client[_0xed4c('0x0')]('CreateFaxQueueReport',{'body':_0x434173,'log':_0xed4c('0x1')});};exports[_0xed4c('0x2')]=function(_0x23adb9,_0xba911b){return client[_0xed4c('0x0')]('UpdateFaxQueueReport',{'body':_0xba911b,'options':{'where':{'uniqueid':_0x23adb9},'order':[['id',_0xed4c('0x3')]],'limit':0x1},'log':_0xed4c('0x4')});};
\ No newline at end of file
+var _0x29a0=['UpdateFaxQueueReport','DESC','../client','create','Request','CreateFaxQueueReport','update'];(function(_0x393fc6,_0x25c5c1){var _0x332df2=function(_0x872f80){while(--_0x872f80){_0x393fc6['push'](_0x393fc6['shift']());}};_0x332df2(++_0x25c5c1);}(_0x29a0,0x159));var _0x029a=function(_0x309da9,_0x30458c){_0x309da9=_0x309da9-0x0;var _0x29f4df=_0x29a0[_0x309da9];return _0x29f4df;};'use strict';var client=require(_0x029a('0x0'));exports[_0x029a('0x1')]=function(_0x327725){return client[_0x029a('0x2')](_0x029a('0x3'),{'body':_0x327725,'log':'CreateFaxQueueReport'});};exports[_0x029a('0x4')]=function(_0x2abc97,_0x16694f){return client['Request'](_0x029a('0x5'),{'body':_0x16694f,'options':{'where':{'uniqueid':_0x2abc97},'order':[['id',_0x029a('0x6')]],'limit':0x1},'log':_0x029a('0x5')});};
\ No newline at end of file
index 293b10b..ce24286 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcfa7=['name','Interval','Intervals','interval','Request'];(function(_0x35e92e,_0x21581b){var _0x1205a8=function(_0x4325d8){while(--_0x4325d8){_0x35e92e['push'](_0x35e92e['shift']());}};_0x1205a8(++_0x21581b);}(_0xcfa7,0x117));var _0x7cfa=function(_0x23106c,_0x165317){_0x23106c=_0x23106c-0x0;var _0x2442b3=_0xcfa7[_0x23106c];return _0x2442b3;};'use strict';var client=require('../client');exports['getIntervals']=function(){return function(){return client[_0x7cfa('0x0')]('GetInterval',{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id',_0x7cfa('0x1')],'include':[{'model':_0x7cfa('0x2'),'as':_0x7cfa('0x3'),'attributes':['id',_0x7cfa('0x1'),_0x7cfa('0x4')]}]},'log':'getIntervals'});};};
\ No newline at end of file
+var _0xf870=['../client','getIntervals','Request','name','Intervals'];(function(_0x32292b,_0x4e9525){var _0x1845b4=function(_0x348377){while(--_0x348377){_0x32292b['push'](_0x32292b['shift']());}};_0x1845b4(++_0x4e9525);}(_0xf870,0xf0));var _0x0f87=function(_0x597cb9,_0x38d6a5){_0x597cb9=_0x597cb9-0x0;var _0x22d76e=_0xf870[_0x597cb9];return _0x22d76e;};'use strict';var client=require(_0x0f87('0x0'));exports[_0x0f87('0x1')]=function(){return function(){return client[_0x0f87('0x2')]('GetInterval',{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id',_0x0f87('0x3')],'include':[{'model':'Interval','as':_0x0f87('0x4'),'attributes':['id','name','interval']}]},'log':_0x0f87('0x1')});};};
\ No newline at end of file
index 2330124..809ef26 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x33af=['addTags','AddTagsToMailInteraction','update','Request','UpdateMailInteraction','updateMailInteraction'];(function(_0x1a0daa,_0x2a4634){var _0x1dbe15=function(_0xa8ab22){while(--_0xa8ab22){_0x1a0daa['push'](_0x1a0daa['shift']());}};_0x1dbe15(++_0x2a4634);}(_0x33af,0xec));var _0xf33a=function(_0x8c0bf5,_0x2456ab){_0x8c0bf5=_0x8c0bf5-0x0;var _0x447387=_0x33af[_0x8c0bf5];return _0x447387;};'use strict';var client=require('../client');exports[_0xf33a('0x0')]=function(_0x54b114,_0x2137be){return client[_0xf33a('0x1')](_0xf33a('0x2'),{'body':_0x2137be,'options':{'where':{'id':_0x54b114}},'log':_0xf33a('0x3')});};exports[_0xf33a('0x4')]=function(_0x25f156,_0x4c734e){return client[_0xf33a('0x1')](_0xf33a('0x5'),{'body':_0x4c734e,'options':{'where':{'id':_0x25f156}},'log':'addTagsToChatInteraction'});};
\ No newline at end of file
+var _0x6a95=['update','Request','UpdateMailInteraction','updateMailInteraction','AddTagsToMailInteraction','addTagsToChatInteraction','../client'];(function(_0x16b9ed,_0x56517a){var _0x66b1f8=function(_0x1c883){while(--_0x1c883){_0x16b9ed['push'](_0x16b9ed['shift']());}};_0x66b1f8(++_0x56517a);}(_0x6a95,0x1db));var _0x56a9=function(_0x28d18d,_0x55896b){_0x28d18d=_0x28d18d-0x0;var _0x470640=_0x6a95[_0x28d18d];return _0x470640;};'use strict';var client=require(_0x56a9('0x0'));exports[_0x56a9('0x1')]=function(_0x15574a,_0xce37aa){return client[_0x56a9('0x2')](_0x56a9('0x3'),{'body':_0xce37aa,'options':{'where':{'id':_0x15574a}},'log':_0x56a9('0x4')});};exports['addTags']=function(_0x512f52,_0x12cd60){return client[_0x56a9('0x2')](_0x56a9('0x5'),{'body':_0x12cd60,'options':{'where':{'id':_0x512f52}},'log':_0x56a9('0x6')});};
\ No newline at end of file
index d2917f0..81eead2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x40e8=['../client','Request','createMailMessage'];(function(_0x20ebb5,_0x237d88){var _0x487182=function(_0xaa5491){while(--_0xaa5491){_0x20ebb5['push'](_0x20ebb5['shift']());}};_0x487182(++_0x237d88);}(_0x40e8,0x1ec));var _0x840e=function(_0x3070dc,_0x40cf11){_0x3070dc=_0x3070dc-0x0;var _0x431489=_0x40e8[_0x3070dc];return _0x431489;};'use strict';var client=require(_0x840e('0x0'));exports['create']=function(_0x1104ab){return client[_0x840e('0x1')]('CreateMailMessage',{'body':_0x1104ab,'log':_0x840e('0x2')});};
\ No newline at end of file
+var _0x7bb9=['CreateMailMessage','../client','create','Request'];(function(_0x3929e1,_0x1c4aea){var _0x4aee58=function(_0x4539b8){while(--_0x4539b8){_0x3929e1['push'](_0x3929e1['shift']());}};_0x4aee58(++_0x1c4aea);}(_0x7bb9,0x191));var _0x97bb=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x7bb9[_0x17d9e3];return _0x14192d;};'use strict';var client=require(_0x97bb('0x0'));exports[_0x97bb('0x1')]=function(_0x1e3bf5){return client[_0x97bb('0x2')](_0x97bb('0x3'),{'body':_0x1e3bf5,'log':'createMailMessage'});};
\ No newline at end of file
index c9529e7..0939df5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2d6=['Request','name','timeout','User','Agents','mailPause','getMailQueues','../client'];(function(_0x292ed7,_0x4fe68e){var _0xcfb8a0=function(_0x4d133e){while(--_0x4d133e){_0x292ed7['push'](_0x292ed7['shift']());}};_0xcfb8a0(++_0x4fe68e);}(_0xe2d6,0xe7));var _0x6e2d=function(_0x28aea5,_0x3bb12e){_0x28aea5=_0x28aea5-0x0;var _0x6a55f9=_0xe2d6[_0x28aea5];return _0x6a55f9;};'use strict';var client=require(_0x6e2d('0x0'));exports['getMailQueues']=function(){return function(){return client[_0x6e2d('0x1')]('GetMailQueue',{'options':{'raw':![],'attributes':['id',_0x6e2d('0x2'),_0x6e2d('0x3'),'strategy'],'include':[{'model':_0x6e2d('0x4'),'as':_0x6e2d('0x5'),'attributes':['id',_0x6e2d('0x2'),'online',_0x6e2d('0x6')]}]},'log':_0x6e2d('0x7')});};};
\ No newline at end of file
+var _0xc1d6=['Agents','online','mailPause','name','timeout','strategy','User'];(function(_0x25c1a5,_0x5ca2d1){var _0x3c6333=function(_0x132bad){while(--_0x132bad){_0x25c1a5['push'](_0x25c1a5['shift']());}};_0x3c6333(++_0x5ca2d1);}(_0xc1d6,0x14c));var _0x6c1d=function(_0xc52250,_0x3c7766){_0xc52250=_0xc52250-0x0;var _0x2bc694=_0xc1d6[_0xc52250];return _0x2bc694;};'use strict';var client=require('../client');exports['getMailQueues']=function(){return function(){return client['Request']('GetMailQueue',{'options':{'raw':![],'attributes':['id',_0x6c1d('0x0'),_0x6c1d('0x1'),_0x6c1d('0x2')],'include':[{'model':_0x6c1d('0x3'),'as':_0x6c1d('0x4'),'attributes':['id',_0x6c1d('0x0'),_0x6c1d('0x5'),_0x6c1d('0x6')]}]},'log':'getMailQueues'});};};
\ No newline at end of file
index 526cb53..583d20a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb219=['update','UpdateMailQueueReport','create','Request','CreateMailQueueReport'];(function(_0x5b8b06,_0x53852e){var _0x436386=function(_0x1e17c0){while(--_0x1e17c0){_0x5b8b06['push'](_0x5b8b06['shift']());}};_0x436386(++_0x53852e);}(_0xb219,0xc0));var _0x9b21=function(_0x58f7a0,_0x5187da){_0x58f7a0=_0x58f7a0-0x0;var _0x3e92ef=_0xb219[_0x58f7a0];return _0x3e92ef;};'use strict';var client=require('../client');exports[_0x9b21('0x0')]=function(_0x157f49){return client[_0x9b21('0x1')]('CreateMailQueueReport',{'body':_0x157f49,'log':_0x9b21('0x2')});};exports[_0x9b21('0x3')]=function(_0x414abc,_0x11fe5c){return client[_0x9b21('0x1')](_0x9b21('0x4'),{'body':_0x11fe5c,'options':{'where':{'uniqueid':_0x414abc},'order':[['id','DESC']],'limit':0x1},'log':_0x9b21('0x4')});};
\ No newline at end of file
+var _0x1e01=['DESC','../client','create','Request','CreateMailQueueReport','update','UpdateMailQueueReport'];(function(_0x1d82fa,_0x244738){var _0x4687d7=function(_0x335458){while(--_0x335458){_0x1d82fa['push'](_0x1d82fa['shift']());}};_0x4687d7(++_0x244738);}(_0x1e01,0xda));var _0x11e0=function(_0x2f4577,_0x5202e7){_0x2f4577=_0x2f4577-0x0;var _0x432ce6=_0x1e01[_0x2f4577];return _0x432ce6;};'use strict';var client=require(_0x11e0('0x0'));exports[_0x11e0('0x1')]=function(_0x4fbcea){return client[_0x11e0('0x2')](_0x11e0('0x3'),{'body':_0x4fbcea,'log':_0x11e0('0x3')});};exports[_0x11e0('0x4')]=function(_0x5617d1,_0x5113a6){return client[_0x11e0('0x2')](_0x11e0('0x5'),{'body':_0x5113a6,'options':{'where':{'uniqueid':_0x5617d1},'order':[['id',_0x11e0('0x6')]],'limit':0x1},'log':'UpdateMailQueueReport'});};
\ No newline at end of file
index a44201c..705c486 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd378=['UpdateOpenchannelInteraction','updateOpenchannelInteraction','addTags','Request','addTagsToChatInteraction','../client','update'];(function(_0x3a80de,_0x2f7a9d){var _0x34e3d5=function(_0xef38c){while(--_0xef38c){_0x3a80de['push'](_0x3a80de['shift']());}};_0x34e3d5(++_0x2f7a9d);}(_0xd378,0xc2));var _0x8d37=function(_0x495dec,_0x5b1d82){_0x495dec=_0x495dec-0x0;var _0x21a1db=_0xd378[_0x495dec];return _0x21a1db;};'use strict';var client=require(_0x8d37('0x0'));exports[_0x8d37('0x1')]=function(_0x4fca04,_0xeac383){return client['Request'](_0x8d37('0x2'),{'body':_0xeac383,'options':{'where':{'id':_0x4fca04}},'log':_0x8d37('0x3')});};exports[_0x8d37('0x4')]=function(_0x1c1e83,_0x7dd30d){return client[_0x8d37('0x5')]('AddTagsToOpenchannelInteraction',{'body':_0x7dd30d,'options':{'where':{'id':_0x1c1e83}},'log':_0x8d37('0x6')});};
\ No newline at end of file
+var _0x45be=['UpdateOpenchannelInteraction','updateOpenchannelInteraction','addTags','AddTagsToOpenchannelInteraction','../client','Request'];(function(_0x4ec0d0,_0x3eb21e){var _0x319e6d=function(_0x2342a4){while(--_0x2342a4){_0x4ec0d0['push'](_0x4ec0d0['shift']());}};_0x319e6d(++_0x3eb21e);}(_0x45be,0x136));var _0xe45b=function(_0x5c01ae,_0x44449f){_0x5c01ae=_0x5c01ae-0x0;var _0x424bc1=_0x45be[_0x5c01ae];return _0x424bc1;};'use strict';var client=require(_0xe45b('0x0'));exports['update']=function(_0x382d42,_0x15e82d){return client[_0xe45b('0x1')](_0xe45b('0x2'),{'body':_0x15e82d,'options':{'where':{'id':_0x382d42}},'log':_0xe45b('0x3')});};exports[_0xe45b('0x4')]=function(_0x19b027,_0x580116){return client['Request'](_0xe45b('0x5'),{'body':_0x580116,'options':{'where':{'id':_0x19b027}},'log':'addTagsToChatInteraction'});};
\ No newline at end of file
index 21f8190..5ac76a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x821d=['createOpenchannelMessage','create','Request'];(function(_0x5783f4,_0x4a9e0a){var _0x28e380=function(_0x1ffc49){while(--_0x1ffc49){_0x5783f4['push'](_0x5783f4['shift']());}};_0x28e380(++_0x4a9e0a);}(_0x821d,0x178));var _0xd821=function(_0x5f3b2e,_0x1de647){_0x5f3b2e=_0x5f3b2e-0x0;var _0xce272d=_0x821d[_0x5f3b2e];return _0xce272d;};'use strict';var client=require('../client');exports[_0xd821('0x0')]=function(_0x520b93){return client[_0xd821('0x1')]('CreateOpenchannelMessage',{'body':_0x520b93,'log':_0xd821('0x2')});};
\ No newline at end of file
+var _0xcd38=['../client','Request','CreateOpenchannelMessage'];(function(_0x416f90,_0x16b235){var _0x23d1f5=function(_0x21c87f){while(--_0x21c87f){_0x416f90['push'](_0x416f90['shift']());}};_0x23d1f5(++_0x16b235);}(_0xcd38,0x14a));var _0x8cd3=function(_0xde4f89,_0x58be43){_0xde4f89=_0xde4f89-0x0;var _0x56e409=_0xcd38[_0xde4f89];return _0x56e409;};'use strict';var client=require(_0x8cd3('0x0'));exports['create']=function(_0x2d0c32){return client[_0x8cd3('0x1')](_0x8cd3('0x2'),{'body':_0x2d0c32,'log':'createOpenchannelMessage'});};
\ No newline at end of file
index b89be66..4e41f20 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8260=['online','openchannelPause','../client','getOpenchannelQueues','Request','GetOpenchannelQueue','strategy','User','Agents','name'];(function(_0x25d804,_0x5fac0f){var _0x2391d0=function(_0x38fa0b){while(--_0x38fa0b){_0x25d804['push'](_0x25d804['shift']());}};_0x2391d0(++_0x5fac0f);}(_0x8260,0x1c4));var _0x0826=function(_0x1dd997,_0x578bf5){_0x1dd997=_0x1dd997-0x0;var _0x440e4b=_0x8260[_0x1dd997];return _0x440e4b;};'use strict';var client=require(_0x0826('0x0'));exports[_0x0826('0x1')]=function(){return function(){return client[_0x0826('0x2')](_0x0826('0x3'),{'options':{'raw':![],'attributes':['id','name','timeout',_0x0826('0x4')],'include':[{'model':_0x0826('0x5'),'as':_0x0826('0x6'),'attributes':['id',_0x0826('0x7'),_0x0826('0x8'),_0x0826('0x9')]}]},'log':'getOpenchannelQueues'});};};
\ No newline at end of file
+var _0xce96=['online','getOpenchannelQueues','../client','Request','GetOpenchannelQueue','timeout','strategy','User','name'];(function(_0x617828,_0x16eb89){var _0x3cd397=function(_0x3cba56){while(--_0x3cba56){_0x617828['push'](_0x617828['shift']());}};_0x3cd397(++_0x16eb89);}(_0xce96,0x134));var _0x6ce9=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xce96[_0x14add3];return _0x4a174f;};'use strict';var client=require(_0x6ce9('0x0'));exports['getOpenchannelQueues']=function(){return function(){return client[_0x6ce9('0x1')](_0x6ce9('0x2'),{'options':{'raw':![],'attributes':['id','name',_0x6ce9('0x3'),_0x6ce9('0x4')],'include':[{'model':_0x6ce9('0x5'),'as':'Agents','attributes':['id',_0x6ce9('0x6'),_0x6ce9('0x7'),'openchannelPause']}]},'log':_0x6ce9('0x8')});};};
\ No newline at end of file
index 0603cba..22e0bf3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x390d=['CreateOpenchannelQueueReport','update','UpdateOpenchannelQueueReport','DESC','../client','Request'];(function(_0x565ed7,_0x398228){var _0x183ad7=function(_0x5a43d7){while(--_0x5a43d7){_0x565ed7['push'](_0x565ed7['shift']());}};_0x183ad7(++_0x398228);}(_0x390d,0xdc));var _0xd390=function(_0x28c059,_0x25f5f2){_0x28c059=_0x28c059-0x0;var _0x12d8dd=_0x390d[_0x28c059];return _0x12d8dd;};'use strict';var client=require(_0xd390('0x0'));exports['create']=function(_0x4f6969){return client[_0xd390('0x1')](_0xd390('0x2'),{'body':_0x4f6969,'log':'CreateOpenchannelQueueReport'});};exports[_0xd390('0x3')]=function(_0x5d837f,_0x108dda){return client[_0xd390('0x1')](_0xd390('0x4'),{'body':_0x108dda,'options':{'where':{'uniqueid':_0x5d837f},'order':[['id',_0xd390('0x5')]],'limit':0x1},'log':_0xd390('0x4')});};
\ No newline at end of file
+var _0xcf35=['Request','CreateOpenchannelQueueReport','update','UpdateOpenchannelQueueReport','DESC','../client','create'];(function(_0x2c4599,_0x6a8c89){var _0x401da4=function(_0x362e50){while(--_0x362e50){_0x2c4599['push'](_0x2c4599['shift']());}};_0x401da4(++_0x6a8c89);}(_0xcf35,0x1a9));var _0x5cf3=function(_0x135b3d,_0x2b645a){_0x135b3d=_0x135b3d-0x0;var _0x1fbad2=_0xcf35[_0x135b3d];return _0x1fbad2;};'use strict';var client=require(_0x5cf3('0x0'));exports[_0x5cf3('0x1')]=function(_0x2a00ea){return client[_0x5cf3('0x2')]('CreateOpenchannelQueueReport',{'body':_0x2a00ea,'log':_0x5cf3('0x3')});};exports[_0x5cf3('0x4')]=function(_0x9d71b,_0x456162){return client[_0x5cf3('0x2')](_0x5cf3('0x5'),{'body':_0x456162,'options':{'where':{'uniqueid':_0x9d71b},'order':[['id',_0x5cf3('0x6')]],'limit':0x1},'log':_0x5cf3('0x5')});};
\ No newline at end of file
index dc74b2b..8eeefcd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa8eb=['updateSmsInteraction','AddTagsToSmsInteraction','../client','Request','UpdateSmsInteraction'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa8eb,0x179));var _0xba8e=function(_0x2c69a1,_0x201903){_0x2c69a1=_0x2c69a1-0x0;var _0x24bb91=_0xa8eb[_0x2c69a1];return _0x24bb91;};'use strict';var client=require(_0xba8e('0x0'));exports['update']=function(_0x26595f,_0x5757ad){return client[_0xba8e('0x1')](_0xba8e('0x2'),{'body':_0x5757ad,'options':{'where':{'id':_0x26595f}},'log':_0xba8e('0x3')});};exports['addTags']=function(_0x353df2,_0x368ce6){return client['Request'](_0xba8e('0x4'),{'body':_0x368ce6,'options':{'where':{'id':_0x353df2}},'log':'addTagsToSmsInteraction'});};
\ No newline at end of file
+var _0x87df=['addTags','addTagsToSmsInteraction','../client','update','Request','UpdateSmsInteraction','updateSmsInteraction'];(function(_0x17d7bb,_0x323777){var _0x51e6f5=function(_0x13200e){while(--_0x13200e){_0x17d7bb['push'](_0x17d7bb['shift']());}};_0x51e6f5(++_0x323777);}(_0x87df,0x167));var _0xf87d=function(_0x1b9d97,_0x19159b){_0x1b9d97=_0x1b9d97-0x0;var _0x1d7a29=_0x87df[_0x1b9d97];return _0x1d7a29;};'use strict';var client=require(_0xf87d('0x0'));exports[_0xf87d('0x1')]=function(_0x34023a,_0x3151d0){return client[_0xf87d('0x2')](_0xf87d('0x3'),{'body':_0x3151d0,'options':{'where':{'id':_0x34023a}},'log':_0xf87d('0x4')});};exports[_0xf87d('0x5')]=function(_0x25290a,_0x1d4ff6){return client['Request']('AddTagsToSmsInteraction',{'body':_0x1d4ff6,'options':{'where':{'id':_0x25290a}},'log':_0xf87d('0x6')});};
\ No newline at end of file
index 08e17e9..7cc071b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x503c=['Request','CreateSmsMessage','createSmsMessage','../client','create'];(function(_0x598892,_0x53eb04){var _0x10b457=function(_0x17deea){while(--_0x17deea){_0x598892['push'](_0x598892['shift']());}};_0x10b457(++_0x53eb04);}(_0x503c,0x1ca));var _0xc503=function(_0x27c1ab,_0x3734be){_0x27c1ab=_0x27c1ab-0x0;var _0x5087a3=_0x503c[_0x27c1ab];return _0x5087a3;};'use strict';var client=require(_0xc503('0x0'));exports[_0xc503('0x1')]=function(_0x5870fe){return client[_0xc503('0x2')](_0xc503('0x3'),{'body':_0x5870fe,'log':_0xc503('0x4')});};
\ No newline at end of file
+var _0xf54d=['createSmsMessage','../client','create','Request','CreateSmsMessage'];(function(_0x4bf8ca,_0x1f6333){var _0x181a12=function(_0x1da78b){while(--_0x1da78b){_0x4bf8ca['push'](_0x4bf8ca['shift']());}};_0x181a12(++_0x1f6333);}(_0xf54d,0x83));var _0xdf54=function(_0x1f7a13,_0x476a16){_0x1f7a13=_0x1f7a13-0x0;var _0x4460f3=_0xf54d[_0x1f7a13];return _0x4460f3;};'use strict';var client=require(_0xdf54('0x0'));exports[_0xdf54('0x1')]=function(_0x186285){return client[_0xdf54('0x2')](_0xdf54('0x3'),{'body':_0x186285,'log':_0xdf54('0x4')});};
\ No newline at end of file
index 983b82b..87d2044 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e0=['User','Agents','online','../client','getSmsQueues','Request','timeout','strategy'];(function(_0x3fe9f5,_0x2c302b){var _0x5acbb4=function(_0x1fee42){while(--_0x1fee42){_0x3fe9f5['push'](_0x3fe9f5['shift']());}};_0x5acbb4(++_0x2c302b);}(_0x70e0,0x17b));var _0x070e=function(_0x433558,_0x4b8726){_0x433558=_0x433558-0x0;var _0x5b59e1=_0x70e0[_0x433558];return _0x5b59e1;};'use strict';var client=require(_0x070e('0x0'));exports[_0x070e('0x1')]=function(){return function(){return client[_0x070e('0x2')]('GetSmsQueue',{'options':{'raw':![],'attributes':['id','name',_0x070e('0x3'),_0x070e('0x4')],'include':[{'model':_0x070e('0x5'),'as':_0x070e('0x6'),'attributes':['id','name',_0x070e('0x7'),'smsPause']}]},'log':_0x070e('0x1')});};};
\ No newline at end of file
+var _0xa9e0=['name','online','smsPause','../client','getSmsQueues','Request','timeout','User','Agents'];(function(_0xe67542,_0x167411){var _0x89d5e2=function(_0x2419e2){while(--_0x2419e2){_0xe67542['push'](_0xe67542['shift']());}};_0x89d5e2(++_0x167411);}(_0xa9e0,0x123));var _0x0a9e=function(_0x521929,_0x479be5){_0x521929=_0x521929-0x0;var _0x632436=_0xa9e0[_0x521929];return _0x632436;};'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 3ef4c84..d34713e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['../client','create','Request','CreateSmsQueueReport','update','UpdateSmsQueueReport','DESC'];(function(_0x48c998,_0x37d255){var _0x59c2a2=function(_0x40eaa2){while(--_0x40eaa2){_0x48c998['push'](_0x48c998['shift']());}};_0x59c2a2(++_0x37d255);}(_0x9957,0x93));var _0x7995=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x9957[_0x6c993a];return _0x27f547;};'use strict';var client=require(_0x7995('0x0'));exports[_0x7995('0x1')]=function(_0x2722a3){return client[_0x7995('0x2')]('CreateSmsQueueReport',{'body':_0x2722a3,'log':_0x7995('0x3')});};exports[_0x7995('0x4')]=function(_0x1902b4,_0x462a03){return client['Request'](_0x7995('0x5'),{'body':_0x462a03,'options':{'where':{'uniqueid':_0x1902b4},'order':[['id',_0x7995('0x6')]],'limit':0x1},'log':_0x7995('0x5')});};
\ No newline at end of file
+var _0x34e8=['create','Request','CreateSmsQueueReport','update','UpdateSmsQueueReport','DESC','../client'];(function(_0x3edb7e,_0x4f4ebc){var _0x1c21ad=function(_0x49f24a){while(--_0x49f24a){_0x3edb7e['push'](_0x3edb7e['shift']());}};_0x1c21ad(++_0x4f4ebc);}(_0x34e8,0x12c));var _0x834e=function(_0x569a74,_0x5ae713){_0x569a74=_0x569a74-0x0;var _0x554b6f=_0x34e8[_0x569a74];return _0x554b6f;};'use strict';var client=require(_0x834e('0x0'));exports[_0x834e('0x1')]=function(_0x8b339){return client[_0x834e('0x2')]('CreateSmsQueueReport',{'body':_0x8b339,'log':_0x834e('0x3')});};exports[_0x834e('0x4')]=function(_0x472111,_0x31bf20){return client[_0x834e('0x2')](_0x834e('0x5'),{'body':_0x31bf20,'options':{'where':{'uniqueid':_0x472111},'order':[['id',_0x834e('0x6')]],'limit':0x1},'log':'UpdateSmsQueueReport'});};
\ No newline at end of file
index 378dffd..3465311 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(_0x2b6599,_0x4b5e81){var _0x18431d=function(_0x51619d){while(--_0x51619d){_0x2b6599['push'](_0x2b6599['shift']());}};_0x18431d(++_0x4b5e81);}(_0xa9e0,0x123));var _0x0a9e=function(_0x45e98e,_0x169b60){_0x45e98e=_0x45e98e-0x0;var _0x374dba=_0xa9e0[_0x45e98e];return _0x374dba;};'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(_0x114458,_0x16f85e){var _0x109335=function(_0x565b47){while(--_0x565b47){_0x114458['push'](_0x114458['shift']());}};_0x109335(++_0x16f85e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xa9e0[_0x2dafbe];return _0x58a45a;};'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 f8759d5..c87f262 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x39e6=['AddTagsToWhatsappInteraction','addTagsToWhatsappInteraction','../client','UpdateWhatsappInteraction','updateWhatsappInteraction','Request'];(function(_0x5ee4f3,_0x4b1dcc){var _0x5934b8=function(_0x1f50d1){while(--_0x1f50d1){_0x5ee4f3['push'](_0x5ee4f3['shift']());}};_0x5934b8(++_0x4b1dcc);}(_0x39e6,0x9e));var _0x639e=function(_0x332f01,_0x34ec04){_0x332f01=_0x332f01-0x0;var _0x236141=_0x39e6[_0x332f01];return _0x236141;};'use strict';var client=require(_0x639e('0x0'));exports['update']=function(_0x2b265a,_0x5719fc){return client['Request'](_0x639e('0x1'),{'body':_0x5719fc,'options':{'where':{'id':_0x2b265a}},'log':_0x639e('0x2')});};exports['addTags']=function(_0x467229,_0x207d6a){return client[_0x639e('0x3')](_0x639e('0x4'),{'body':_0x207d6a,'options':{'where':{'id':_0x467229}},'log':_0x639e('0x5')});};
\ No newline at end of file
+var _0x2e65=['addTags','AddTagsToWhatsappInteraction','addTagsToWhatsappInteraction','../client','update','Request','UpdateWhatsappInteraction','updateWhatsappInteraction'];(function(_0x4c644c,_0x1a5d4f){var _0x18b89e=function(_0x4f5ed3){while(--_0x4f5ed3){_0x4c644c['push'](_0x4c644c['shift']());}};_0x18b89e(++_0x1a5d4f);}(_0x2e65,0x193));var _0x52e6=function(_0x4cbf20,_0x1bfa66){_0x4cbf20=_0x4cbf20-0x0;var _0x582ae4=_0x2e65[_0x4cbf20];return _0x582ae4;};'use strict';var client=require(_0x52e6('0x0'));exports[_0x52e6('0x1')]=function(_0x33c60c,_0x120587){return client[_0x52e6('0x2')](_0x52e6('0x3'),{'body':_0x120587,'options':{'where':{'id':_0x33c60c}},'log':_0x52e6('0x4')});};exports[_0x52e6('0x5')]=function(_0x47912f,_0x383919){return client[_0x52e6('0x2')](_0x52e6('0x6'),{'body':_0x383919,'options':{'where':{'id':_0x47912f}},'log':_0x52e6('0x7')});};
\ No newline at end of file
index 35b6b48..655c2d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6076=['Request','CreateWhatsappMessage','createWhatsappMessage','../client'];(function(_0x2344f8,_0x535448){var _0x142d66=function(_0x4f9f51){while(--_0x4f9f51){_0x2344f8['push'](_0x2344f8['shift']());}};_0x142d66(++_0x535448);}(_0x6076,0x11b));var _0x6607=function(_0x3df717,_0x182a24){_0x3df717=_0x3df717-0x0;var _0x4bf20b=_0x6076[_0x3df717];return _0x4bf20b;};'use strict';var client=require(_0x6607('0x0'));exports['create']=function(_0x7a844f){return client[_0x6607('0x1')](_0x6607('0x2'),{'body':_0x7a844f,'log':_0x6607('0x3')});};
\ No newline at end of file
+var _0x27e5=['Request','CreateWhatsappMessage','create'];(function(_0x533d34,_0x29cc0b){var _0x416033=function(_0x276d01){while(--_0x276d01){_0x533d34['push'](_0x533d34['shift']());}};_0x416033(++_0x29cc0b);}(_0x27e5,0x170));var _0x527e=function(_0x19cc86,_0x202b5b){_0x19cc86=_0x19cc86-0x0;var _0x1456e2=_0x27e5[_0x19cc86];return _0x1456e2;};'use strict';var client=require('../client');exports[_0x527e('0x0')]=function(_0x48d1f7){return client[_0x527e('0x1')](_0x527e('0x2'),{'body':_0x48d1f7,'log':'createWhatsappMessage'});};
\ No newline at end of file
index ebbfac3..2e0c53e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb02f=['strategy','User','Agents','online','../client','getWhatsappQueues','Request','GetWhatsappQueue','name','timeout'];(function(_0xc18afe,_0x2e94a0){var _0x1b6c13=function(_0x7d87b5){while(--_0x7d87b5){_0xc18afe['push'](_0xc18afe['shift']());}};_0x1b6c13(++_0x2e94a0);}(_0xb02f,0x1d0));var _0xfb02=function(_0x24c516,_0x6344c5){_0x24c516=_0x24c516-0x0;var _0x4b1a72=_0xb02f[_0x24c516];return _0x4b1a72;};'use strict';var client=require(_0xfb02('0x0'));exports[_0xfb02('0x1')]=function(){return function(){return client[_0xfb02('0x2')](_0xfb02('0x3'),{'options':{'raw':![],'attributes':['id',_0xfb02('0x4'),_0xfb02('0x5'),_0xfb02('0x6')],'include':[{'model':_0xfb02('0x7'),'as':_0xfb02('0x8'),'attributes':['id','name',_0xfb02('0x9'),'whatsappPause']}]},'log':_0xfb02('0x1')});};};
\ No newline at end of file
+var _0x950a=['name','timeout','strategy','User','Agents','online','whatsappPause','../client','getWhatsappQueues','GetWhatsappQueue'];(function(_0x46693c,_0x381ccf){var _0x5229d8=function(_0x414306){while(--_0x414306){_0x46693c['push'](_0x46693c['shift']());}};_0x5229d8(++_0x381ccf);}(_0x950a,0x18d));var _0xa950=function(_0x78cad1,_0xe4df2a){_0x78cad1=_0x78cad1-0x0;var _0x5409c7=_0x950a[_0x78cad1];return _0x5409c7;};'use strict';var client=require(_0xa950('0x0'));exports[_0xa950('0x1')]=function(){return function(){return client['Request'](_0xa950('0x2'),{'options':{'raw':![],'attributes':['id',_0xa950('0x3'),_0xa950('0x4'),_0xa950('0x5')],'include':[{'model':_0xa950('0x6'),'as':_0xa950('0x7'),'attributes':['id','name',_0xa950('0x8'),_0xa950('0x9')]}]},'log':_0xa950('0x1')});};};
\ No newline at end of file
index bc19846..b610e91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8a70=['create','Request','CreateWhatsappQueueReport','update','UpdateWhatsappQueueReport','DESC','../client'];(function(_0x2df72b,_0x1e3cfe){var _0x37cdd3=function(_0x37e012){while(--_0x37e012){_0x2df72b['push'](_0x2df72b['shift']());}};_0x37cdd3(++_0x1e3cfe);}(_0x8a70,0xae));var _0x08a7=function(_0x48dfc7,_0x28410f){_0x48dfc7=_0x48dfc7-0x0;var _0x553cbf=_0x8a70[_0x48dfc7];return _0x553cbf;};'use strict';var client=require(_0x08a7('0x0'));exports[_0x08a7('0x1')]=function(_0x5933da){return client[_0x08a7('0x2')](_0x08a7('0x3'),{'body':_0x5933da,'log':'CreateWhatsappQueueReport'});};exports[_0x08a7('0x4')]=function(_0x4f934d,_0x1e5ccd){return client['Request'](_0x08a7('0x5'),{'body':_0x1e5ccd,'options':{'where':{'uniqueid':_0x4f934d},'order':[['id',_0x08a7('0x6')]],'limit':0x1},'log':_0x08a7('0x5')});};
\ No newline at end of file
+var _0xcbe0=['CreateWhatsappQueueReport','update','UpdateWhatsappQueueReport','DESC','create','Request'];(function(_0x28e436,_0x4721ca){var _0x19afbd=function(_0x4f44f3){while(--_0x4f44f3){_0x28e436['push'](_0x28e436['shift']());}};_0x19afbd(++_0x4721ca);}(_0xcbe0,0x1a8));var _0x0cbe=function(_0x4e0359,_0x205155){_0x4e0359=_0x4e0359-0x0;var _0x450f0a=_0xcbe0[_0x4e0359];return _0x450f0a;};'use strict';var client=require('../client');exports[_0x0cbe('0x0')]=function(_0x16ceb9){return client[_0x0cbe('0x1')](_0x0cbe('0x2'),{'body':_0x16ceb9,'log':_0x0cbe('0x2')});};exports[_0x0cbe('0x3')]=function(_0x35952a,_0x4dc012){return client[_0x0cbe('0x1')](_0x0cbe('0x4'),{'body':_0x4dc012,'options':{'where':{'uniqueid':_0x35952a},'order':[['id',_0x0cbe('0x5')]],'limit':0x1},'log':'UpdateWhatsappQueueReport'});};
\ No newline at end of file
index 4724f91..d198941 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x95d6=['complete','[%s][AGENT]\x20ROUTING\x20END','next','agent','[%s][AGENT]\x20agent\x20not\x20found\x20%s','log','[%s][QUEUE]\x20%s','lodash','seq-queue','../../../../config/logger','./strategy','string','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','format','[%s][AGENT][NAME:%s][STATUS:%s]','name','toLowerCase','consequence','validate','length','error','[%s][AGENT]\x20%s','message','join','stop','timeout','createQueue','atimeout','channel','START:%s','rules','end','info','[%s][AGENT]\x20ROUTING\x20STOPPED','close'];(function(_0x3c8f2c,_0x413734){var _0x537650=function(_0x2dcbfe){while(--_0x2dcbfe){_0x3c8f2c['push'](_0x3c8f2c['shift']());}};_0x537650(++_0x413734);}(_0x95d6,0xdf));var _0x695d=function(_0x1321a8,_0x125409){_0x1321a8=_0x1321a8-0x0;var _0x3fd7de=_0x95d6[_0x1321a8];return _0x3fd7de;};'use strict';var schema=require('validate');var _=require(_0x695d('0x0'));var util=require('util');var seqqueue=require(_0x695d('0x1'));var logger=require(_0x695d('0x2'))('routing');var strategy=require(_0x695d('0x3'));var queue=schema({'name':{'type':_0x695d('0x4'),'required':!![],'message':_0x695d('0x5')},'timeout':{'type':_0x695d('0x6'),'message':'timeout\x20is\x20a\x20number'}});function writeLog(_0x433991,_0x23b8c2,_0x52a9fa){return logger['info'](util[_0x695d('0x7')](_0x695d('0x8'),_0x433991,_0x23b8c2[_0x695d('0x9')],_0x52a9fa));}function handleFindAgent(_0x51faa5){return function(_0x2497bb){return _0x2497bb[_0x695d('0x9')][_0x695d('0xa')]()===_0x51faa5[_0x695d('0xa')]();};}exports[_0x695d('0xb')]=function(_0x13b351,_0x541f56,_0x5227ae,_0x5e1167){return function(_0x5878e6){try{var _0x521e2f={'name':_0x541f56[0x0],'timeout':_0x541f56[0x1]};var _0x490fd3=queue[_0x695d('0xc')](_0x521e2f,{'typecast':!![]});if(_0x490fd3[_0x695d('0xd')]){logger[_0x695d('0xe')](_0x695d('0xf'),_0x13b351,_['map'](_0x490fd3,_0x695d('0x10'))[_0x695d('0x11')](',\x20'));_0x5878e6[_0x695d('0x12')]();}else{var _0x3626e0=_['find'](_0x5227ae['agents'],handleFindAgent(_0x521e2f['name']));if(_0x3626e0){var _0x12ae35=(_0x521e2f[_0x695d('0x13')]||0xa)*0x3e8;var _0x58eebf,_0xb2a809;var _0x2e66c4=seqqueue[_0x695d('0x14')](_0x12ae35);_0x2e66c4['id']=_0x13b351;_0x2e66c4[_0x695d('0x15')]=_0x12ae35;_0x2e66c4['channel']=_0x5e1167[_0x695d('0x16')];writeLog(_0x13b351,_0x3626e0,util[_0x695d('0x7')](_0x695d('0x17'),_0x12ae35));_0x5227ae[_0x695d('0x18')][_0x13b351]['on'](_0x695d('0x19'),function(){logger[_0x695d('0x1a')](_0x695d('0x1b'),_0x13b351);clearTimeout(_0xb2a809);_0xb2a809=undefined;_0x2e66c4[_0x695d('0x1c')]();if(_0x5227ae[_0x695d('0x18')][_0x13b351]){delete _0x5227ae[_0x695d('0x18')][_0x13b351];}_0x5878e6[_0x695d('0x12')]();});_0x5227ae['rules'][_0x13b351]['on'](_0x695d('0x1d'),function(){if(_0x5227ae[_0x695d('0x18')][_0x13b351]){delete _0x5227ae[_0x695d('0x18')][_0x13b351];}});_0xb2a809=setTimeout(function(){logger['info'](_0x695d('0x1e'),_0x13b351);clearTimeout(_0xb2a809);_0x2e66c4[_0x695d('0x1c')]();_0x5878e6[_0x695d('0x1f')]();},_0x12ae35);strategy[_0x695d('0x20')](_0x2e66c4,_0x3626e0,_0x5227ae,_0x5e1167);}else{logger['error'](_0x695d('0x21'),_0x13b351,_0x521e2f['name']);_0x5878e6[_0x695d('0x12')]();}}}catch(_0x39d52a){console[_0x695d('0x22')](_0x39d52a);logger[_0x695d('0xe')](_0x695d('0x23'),_0x13b351,_0x39d52a['stack']);_0x5878e6[_0x695d('0x12')]();}};};
\ No newline at end of file
+var _0x343d=['join','stop','find','agents','timeout','createQueue','atimeout','channel','START:%s','end','[%s][AGENT]\x20ROUTING\x20STOPPED','close','rules','complete','next','agent','[%s][AGENT]\x20agent\x20not\x20found\x20%s','log','[%s][QUEUE]\x20%s','validate','lodash','seq-queue','routing','./strategy','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','timeout\x20is\x20a\x20number','info','format','[%s][AGENT][NAME:%s][STATUS:%s]','name','toLowerCase','consequence','length','error','[%s][AGENT]\x20%s','message'];(function(_0x244f5d,_0x3c98c6){var _0x1a3886=function(_0x2bf049){while(--_0x2bf049){_0x244f5d['push'](_0x244f5d['shift']());}};_0x1a3886(++_0x3c98c6);}(_0x343d,0x1aa));var _0xd343=function(_0x224dda,_0x16d0f9){_0x224dda=_0x224dda-0x0;var _0x2987ac=_0x343d[_0x224dda];return _0x2987ac;};'use strict';var schema=require(_0xd343('0x0'));var _=require(_0xd343('0x1'));var util=require('util');var seqqueue=require(_0xd343('0x2'));var logger=require('../../../../config/logger')(_0xd343('0x3'));var strategy=require(_0xd343('0x4'));var queue=schema({'name':{'type':'string','required':!![],'message':_0xd343('0x5')},'timeout':{'type':_0xd343('0x6'),'message':_0xd343('0x7')}});function writeLog(_0x47c5a2,_0x5180b3,_0x596481){return logger[_0xd343('0x8')](util[_0xd343('0x9')](_0xd343('0xa'),_0x47c5a2,_0x5180b3[_0xd343('0xb')],_0x596481));}function handleFindAgent(_0x5666a7){return function(_0x9c873e){return _0x9c873e[_0xd343('0xb')][_0xd343('0xc')]()===_0x5666a7[_0xd343('0xc')]();};}exports[_0xd343('0xd')]=function(_0x437e55,_0x34a27d,_0x50f2b2,_0x5eec5e){return function(_0xe8562c){try{var _0x553e15={'name':_0x34a27d[0x0],'timeout':_0x34a27d[0x1]};var _0x47788f=queue['validate'](_0x553e15,{'typecast':!![]});if(_0x47788f[_0xd343('0xe')]){logger[_0xd343('0xf')](_0xd343('0x10'),_0x437e55,_['map'](_0x47788f,_0xd343('0x11'))[_0xd343('0x12')](',\x20'));_0xe8562c[_0xd343('0x13')]();}else{var _0x5292cf=_[_0xd343('0x14')](_0x50f2b2[_0xd343('0x15')],handleFindAgent(_0x553e15['name']));if(_0x5292cf){var _0x414ee2=(_0x553e15[_0xd343('0x16')]||0xa)*0x3e8;var _0x24ee3a,_0x460b7f;var _0x174c15=seqqueue[_0xd343('0x17')](_0x414ee2);_0x174c15['id']=_0x437e55;_0x174c15[_0xd343('0x18')]=_0x414ee2;_0x174c15[_0xd343('0x19')]=_0x5eec5e[_0xd343('0x19')];writeLog(_0x437e55,_0x5292cf,util[_0xd343('0x9')](_0xd343('0x1a'),_0x414ee2));_0x50f2b2['rules'][_0x437e55]['on'](_0xd343('0x1b'),function(){logger[_0xd343('0x8')](_0xd343('0x1c'),_0x437e55);clearTimeout(_0x460b7f);_0x460b7f=undefined;_0x174c15[_0xd343('0x1d')]();if(_0x50f2b2[_0xd343('0x1e')][_0x437e55]){delete _0x50f2b2[_0xd343('0x1e')][_0x437e55];}_0xe8562c['stop']();});_0x50f2b2[_0xd343('0x1e')][_0x437e55]['on'](_0xd343('0x1f'),function(){if(_0x50f2b2[_0xd343('0x1e')][_0x437e55]){delete _0x50f2b2[_0xd343('0x1e')][_0x437e55];}});_0x460b7f=setTimeout(function(){logger[_0xd343('0x8')]('[%s][AGENT]\x20ROUTING\x20END',_0x437e55);clearTimeout(_0x460b7f);_0x174c15[_0xd343('0x1d')]();_0xe8562c[_0xd343('0x20')]();},_0x414ee2);strategy[_0xd343('0x21')](_0x174c15,_0x5292cf,_0x50f2b2,_0x5eec5e);}else{logger[_0xd343('0xf')](_0xd343('0x22'),_0x437e55,_0x553e15[_0xd343('0xb')]);_0xe8562c[_0xd343('0x13')]();}}}catch(_0x1d44b7){console[_0xd343('0x23')](_0x1d44b7);logger[_0xd343('0xf')](_0xd343('0x24'),_0x437e55,_0x1d44b7['stack']);_0xe8562c[_0xd343('0x13')]();}};};
\ No newline at end of file
index 0388d01..d4cf80b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa563=['Message','create','catch','stringify','finally','[%s][AMAZONLEX]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','LexRuntime','$LATEST','message','toString','error','amazonlex','providerName','providerResponse','then','dialogState','Failed','lodash','moment','aws-sdk','../../../../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','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','phone','chat','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','created','isEmpty','body','getMustacheRender'];(function(_0x3216f5,_0xe32e8a){var _0x17035a=function(_0x5f28cd){while(--_0x5f28cd){_0x3216f5['push'](_0x3216f5['shift']());}};_0x17035a(++_0xe32e8a);}(_0xa563,0xae));var _0x3a56=function(_0x50cb49,_0x398672){_0x50cb49=_0x50cb49-0x0;var _0xc00bdb=_0xa563[_0x50cb49];return _0xc00bdb;};'use strict';var _=require(_0x3a56('0x0'));var moment=require(_0x3a56('0x1'));var AWS=require(_0x3a56('0x2'));var utils=require('./utils');var logger=require(_0x3a56('0x3'))(_0x3a56('0x4'));var rpc={'chatMessage':require(_0x3a56('0x5')),'openchannelMessage':require(_0x3a56('0x6')),'mailMessage':require(_0x3a56('0x7')),'smsMessage':require(_0x3a56('0x8')),'faxMessage':require(_0x3a56('0x9')),'whatsappMessage':require(_0x3a56('0xa'))};exports[_0x3a56('0xb')]=function(_0xefd21,_0x181666){return function(_0x2900a6){try{if(!_[_0x3a56('0xc')](this[_0x3a56('0xd')][_0x3a56('0xe')])){logger[_0x3a56('0xf')](_0x3a56('0x10'),_0xefd21,_0x3a56('0x11'));return _0x2900a6[_0x3a56('0x12')]();}var _0x97fceb={'ContactId':this['contact']['id'],'sentAt':moment()[_0x3a56('0x13')](_0x3a56('0x14')),'direction':_0x3a56('0x15')};if(this[_0x3a56('0x16')]==='sms'||this[_0x3a56('0x16')]==='whatsapp'){_0x97fceb['phone']=this[_0x3a56('0xd')][_0x3a56('0x17')];}var _0x662e04=this[_0x3a56('0x16')];if(_0x662e04===_0x3a56('0x18')){_0x97fceb[_0x3a56('0x19')]=this[_0x3a56('0x1a')]['id'];}else{_0x97fceb[_[_0x3a56('0x1b')](_0x662e04)+_0x3a56('0x1c')]=this['account']['id'];}_0x97fceb[_[_0x3a56('0x1b')](_0x662e04)+_0x3a56('0x1d')]=this[_0x3a56('0xd')]['id'];if(this['interaction'][_0x3a56('0x1e')]){var _0x4efc2b=_0x181666[0x4];if(!_[_0x3a56('0x1f')](_0x4efc2b)){_0x97fceb[_0x3a56('0x20')]=utils[_0x3a56('0x21')](_0x4efc2b,this);return rpc[_0x662e04+_0x3a56('0x22')][_0x3a56('0x23')](_0x97fceb)['then'](function(_0x1115fe){logger[_0x3a56('0xf')]('[%s][AMAZONLEX]\x20%s',_0xefd21,_0x97fceb[_0x3a56('0x20')]);})[_0x3a56('0x24')](function(_0x3ef5a3){logger['error']('[%s][AMAZONLEX]\x20%s',_0xefd21,JSON[_0x3a56('0x25')](_0x3ef5a3));})[_0x3a56('0x26')](function(){logger[_0x3a56('0xf')](_0x3a56('0x27'),_0xefd21);_0x2900a6[_0x3a56('0x28')]();});}else{logger[_0x3a56('0xf')]('[%s][AMAZONLEX]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!',_0xefd21);_0x2900a6[_0x3a56('0x28')]();}}else{var _0x4c6147=this;var _0x540ed3=new AWS[(_0x3a56('0x29'))]({'accessKeyId':_0x181666[0x0],'secretAccessKey':_0x181666[0x1],'region':_0x181666[0x2]});var _0x529374={'botAlias':_0x3a56('0x2a'),'botName':_0x181666[0x3],'inputText':this[_0x3a56('0x2b')]['body'],'userId':this[_0x3a56('0x16')]+':'+this[_0x3a56('0xd')]['id'][_0x3a56('0x2c')]()};_0x540ed3['postText'](_0x529374,function(_0x54f280,_0x1a96ad){if(_0x54f280){logger[_0x3a56('0x2d')]('[%s][AMAZONLEX]\x20%s',_0xefd21,_0x54f280[_0x3a56('0x2b')]);_0x2900a6['next']();}else if(_0x1a96ad&&_0x1a96ad[_0x3a56('0x2b')]){_0x4c6147[_0x3a56('0x20')][_0x3a56('0x2e')]=_0x1a96ad;_0x97fceb[_0x3a56('0x20')]=_0x1a96ad[_0x3a56('0x2b')];_0x97fceb[_0x3a56('0x2f')]='amazonlex';_0x97fceb[_0x3a56('0x30')]=JSON[_0x3a56('0x25')](_0x1a96ad);return rpc[_0x662e04+_0x3a56('0x22')][_0x3a56('0x23')](_0x97fceb)[_0x3a56('0x31')](function(_0x29013c){logger['info'](_0x3a56('0x10'),_0xefd21,_0x97fceb['body']);if(_0x1a96ad[_0x3a56('0x32')]==_0x3a56('0x33')){_0x2900a6[_0x3a56('0x12')]();}else{_0x2900a6[_0x3a56('0x28')]();}})[_0x3a56('0x24')](function(_0x412d73){logger[_0x3a56('0x2d')](_0x3a56('0x10'),_0xefd21,JSON[_0x3a56('0x25')](_0x412d73));_0x2900a6[_0x3a56('0x12')]();});}else{_0x2900a6[_0x3a56('0x12')]();}});}}catch(_0x3b1ef5){logger[_0x3a56('0x2d')](_0x3a56('0x10'),_0xefd21,JSON[_0x3a56('0x25')](_0x3b1ef5));_0x2900a6[_0x3a56('0x28')]();}};};
\ No newline at end of file
+var _0xbf91=['isEmpty','getMustacheRender','Message','create','then','catch','error','stringify','finally','[%s][AMAZONLEX]\x20Welcome\x20Message\x20has\x20been\x20sent!','LexRuntime','$LATEST','body','message','amazonlex','providerName','providerResponse','dialogState','Failed','stop','lodash','aws-sdk','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','consequence','interaction','UserId','info','[%s][AMAZONLEX]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','format','out','channel','account','upperFirst','AccountId','InteractionId','created'];(function(_0xc8db6b,_0x320abd){var _0x12cb81=function(_0x417540){while(--_0x417540){_0xc8db6b['push'](_0xc8db6b['shift']());}};_0x12cb81(++_0x320abd);}(_0xbf91,0x6e));var _0x1bf9=function(_0x5b2872,_0x1d2159){_0x5b2872=_0x5b2872-0x0;var _0x8831c9=_0xbf91[_0x5b2872];return _0x8831c9;};'use strict';var _=require(_0x1bf9('0x0'));var moment=require('moment');var AWS=require(_0x1bf9('0x1'));var utils=require(_0x1bf9('0x2'));var logger=require(_0x1bf9('0x3'))(_0x1bf9('0x4'));var rpc={'chatMessage':require(_0x1bf9('0x5')),'openchannelMessage':require(_0x1bf9('0x6')),'mailMessage':require(_0x1bf9('0x7')),'smsMessage':require(_0x1bf9('0x8')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require('../../rpc/whatsappMessage')};exports[_0x1bf9('0x9')]=function(_0x55f4a3,_0x213885){return function(_0xdde9e8){try{if(!_['isNil'](this[_0x1bf9('0xa')][_0x1bf9('0xb')])){logger[_0x1bf9('0xc')](_0x1bf9('0xd'),_0x55f4a3,_0x1bf9('0xe'));return _0xdde9e8[_0x1bf9('0xf')]();}var _0x61319e={'ContactId':this[_0x1bf9('0x10')]['id'],'sentAt':moment()[_0x1bf9('0x11')]('YYYY-MM-DD\x20HH:mm:ss'),'direction':_0x1bf9('0x12')};if(this['channel']==='sms'||this[_0x1bf9('0x13')]==='whatsapp'){_0x61319e['phone']=this['interaction']['phone'];}var _0x243022=this['channel'];if(_0x243022==='chat'){_0x61319e['ChatWebsiteId']=this[_0x1bf9('0x14')]['id'];}else{_0x61319e[_[_0x1bf9('0x15')](_0x243022)+_0x1bf9('0x16')]=this[_0x1bf9('0x14')]['id'];}_0x61319e[_[_0x1bf9('0x15')](_0x243022)+_0x1bf9('0x17')]=this[_0x1bf9('0xa')]['id'];if(this[_0x1bf9('0xa')][_0x1bf9('0x18')]){var _0x14da73=_0x213885[0x4];if(!_[_0x1bf9('0x19')](_0x14da73)){_0x61319e['body']=utils[_0x1bf9('0x1a')](_0x14da73,this);return rpc[_0x243022+_0x1bf9('0x1b')][_0x1bf9('0x1c')](_0x61319e)[_0x1bf9('0x1d')](function(_0x16bc0c){logger[_0x1bf9('0xc')]('[%s][AMAZONLEX]\x20%s',_0x55f4a3,_0x61319e['body']);})[_0x1bf9('0x1e')](function(_0x13eeb9){logger[_0x1bf9('0x1f')](_0x1bf9('0xd'),_0x55f4a3,JSON[_0x1bf9('0x20')](_0x13eeb9));})[_0x1bf9('0x21')](function(){logger[_0x1bf9('0xc')](_0x1bf9('0x22'),_0x55f4a3);_0xdde9e8['stop']();});}else{logger[_0x1bf9('0xc')]('[%s][AMAZONLEX]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!',_0x55f4a3);_0xdde9e8['stop']();}}else{var _0x4842e8=this;var _0x2b45f3=new AWS[(_0x1bf9('0x23'))]({'accessKeyId':_0x213885[0x0],'secretAccessKey':_0x213885[0x1],'region':_0x213885[0x2]});var _0x36b463={'botAlias':_0x1bf9('0x24'),'botName':_0x213885[0x3],'inputText':this['message'][_0x1bf9('0x25')],'userId':this['channel']+':'+this['interaction']['id']['toString']()};_0x2b45f3['postText'](_0x36b463,function(_0x2f9df8,_0x5ec59c){if(_0x2f9df8){logger['error']('[%s][AMAZONLEX]\x20%s',_0x55f4a3,_0x2f9df8[_0x1bf9('0x26')]);_0xdde9e8[_0x1bf9('0xf')]();}else if(_0x5ec59c&&_0x5ec59c[_0x1bf9('0x26')]){_0x4842e8['body'][_0x1bf9('0x27')]=_0x5ec59c;_0x61319e[_0x1bf9('0x25')]=_0x5ec59c[_0x1bf9('0x26')];_0x61319e[_0x1bf9('0x28')]=_0x1bf9('0x27');_0x61319e[_0x1bf9('0x29')]=JSON[_0x1bf9('0x20')](_0x5ec59c);return rpc[_0x243022+'Message']['create'](_0x61319e)[_0x1bf9('0x1d')](function(_0x6277ce){logger[_0x1bf9('0xc')](_0x1bf9('0xd'),_0x55f4a3,_0x61319e[_0x1bf9('0x25')]);if(_0x5ec59c[_0x1bf9('0x2a')]==_0x1bf9('0x2b')){_0xdde9e8[_0x1bf9('0xf')]();}else{_0xdde9e8['stop']();}})[_0x1bf9('0x1e')](function(_0x130de3){logger[_0x1bf9('0x1f')](_0x1bf9('0xd'),_0x55f4a3,JSON['stringify'](_0x130de3));_0xdde9e8[_0x1bf9('0xf')]();});}else{_0xdde9e8[_0x1bf9('0xf')]();}});}}catch(_0x43c759){logger[_0x1bf9('0x1f')]('[%s][AMAZONLEX]\x20%s',_0x55f4a3,JSON[_0x1bf9('0x20')](_0x43c759));_0xdde9e8[_0x1bf9('0x2c')]();}};};
\ No newline at end of file
index 977245a..9ddbc36 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f3f=['isAutoreply','info','Autoreply\x20not\x20executed\x20(message\x20is\x20autoreply)','next','interaction','created','[%s][AUTOREPLY]\x20%s','Autoreply\x20already\x20sent','autoreplyExecuted','[%s][AUTOREPLY][autoreplyExecuted]\x20%s','One\x20Time\x20already\x20sent','contact','out','getMustacheRender','message','from','phone','read','subject','startsWith','Re:','chat','account','upperFirst','AccountId','Message','inReplyTo','html','<div\x20id=\x22xm-mail-content\x22>','replace','headers','auto-replied','All','auto_reply','sendMailMessage','then','[%s][AUTOREPLY]\x20SMTP\x20SENT','messageId','create','stringify','error','finally','resolve','Interaction','update','catch','[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s','stop','moment','./utils','../../../../config/logger','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/chatInteraction','../../rpc/mailInteraction','../../rpc/smsInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','channel','mail','body'];(function(_0x33a967,_0x15fe41){var _0x4aeb18=function(_0x42a371){while(--_0x42a371){_0x33a967['push'](_0x33a967['shift']());}};_0x4aeb18(++_0x15fe41);}(_0x0f3f,0xb0));var _0xf0f3=function(_0x5ba549,_0x425afd){_0x5ba549=_0x5ba549-0x0;var _0x36e3a1=_0x0f3f[_0x5ba549];return _0x36e3a1;};'use strict';var _=require('lodash');var moment=require(_0xf0f3('0x0'));var utils=require(_0xf0f3('0x1'));var logger=require(_0xf0f3('0x2'))('routing');var rpc={'chatMessage':require(_0xf0f3('0x3')),'openchannelMessage':require(_0xf0f3('0x4')),'mailMessage':require(_0xf0f3('0x5')),'smsMessage':require(_0xf0f3('0x6')),'faxMessage':require(_0xf0f3('0x7')),'whatsappMessage':require('../../rpc/whatsappMessage'),'chatInteraction':require(_0xf0f3('0x8')),'openchannelInteraction':require('../../rpc/openchannelInteraction'),'mailInteraction':require(_0xf0f3('0x9')),'smsInteraction':require(_0xf0f3('0xa')),'faxInteraction':require(_0xf0f3('0xb')),'whatsappInteraction':require(_0xf0f3('0xc'))};var mailRpc=require('../../mailRpc');exports['consequence']=function(_0x26debd,_0x4e6113,_0x5eb9ab,_0x4c4aa1){return function(_0x372810){try{var _0x561204=this[_0xf0f3('0xd')];if(_0x561204===_0xf0f3('0xe')&&_0x4c4aa1[_0xf0f3('0xf')][_0xf0f3('0x10')]){logger[_0xf0f3('0x11')]('[%s][AUTOREPLY]\x20%s',_0x26debd,_0xf0f3('0x12'));return _0x372810[_0xf0f3('0x13')]();}if(_0x4e6113[0x0]==='1'&&(_['isNil'](this[_0xf0f3('0x14')][_0xf0f3('0x15')])||!this[_0xf0f3('0x14')]['created'])){logger[_0xf0f3('0x11')](_0xf0f3('0x16'),_0x26debd,_0xf0f3('0x17'));return _0x372810[_0xf0f3('0x13')]();}if(_0x4e6113[0x0]==='2'&&this[_0xf0f3('0x14')][_0xf0f3('0x18')]){logger[_0xf0f3('0x11')](_0xf0f3('0x19'),_0x26debd,_0xf0f3('0x1a'));return _0x372810['next']();}var _0x14a9ea={'ContactId':this[_0xf0f3('0x1b')]['id'],'sentAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'direction':_0xf0f3('0x1c')};if(this['channel']===_0xf0f3('0xe')){_0x14a9ea[_0xf0f3('0xf')]=utils['getMustacheRender'](_0x4e6113[0x2],this);}else{_0x14a9ea['body']=utils[_0xf0f3('0x1d')](_0x4e6113[0x1],this);}if(this[_0xf0f3('0x1e')]){_0x14a9ea['to']=this['message'][_0xf0f3('0x1f')]||'';if(this['channel']==='mail'&&_0x4e6113[0x1]==='1'){_0x14a9ea['cc']=this[_0xf0f3('0x1e')]['cc']||'';}_0x14a9ea[_0xf0f3('0x1f')]=this[_0xf0f3('0x1e')]['to']||'';_0x14a9ea[_0xf0f3('0x20')]=this[_0xf0f3('0x1e')][_0xf0f3('0x20')]||'';_0x14a9ea[_0xf0f3('0x21')]=!![];if(this['message'][_0xf0f3('0x22')]){_0x14a9ea['subject']='';_0x14a9ea[_0xf0f3('0x22')]+=_[_0xf0f3('0x23')](this[_0xf0f3('0x1e')][_0xf0f3('0x22')],_0xf0f3('0x24'))?'':'Re:\x20';_0x14a9ea[_0xf0f3('0x22')]+=this[_0xf0f3('0x1e')][_0xf0f3('0x22')];}}if(this[_0xf0f3('0xd')]===_0xf0f3('0x25')){_0x14a9ea['ChatWebsiteId']=this[_0xf0f3('0x26')]['id'];}else{_0x14a9ea[_[_0xf0f3('0x27')](this['channel'])+_0xf0f3('0x28')]=this[_0xf0f3('0x26')]['id'];}_0x14a9ea[_[_0xf0f3('0x27')](this['channel'])+'InteractionId']=this[_0xf0f3('0x14')]['id'];var _0x425a86=this[_0xf0f3('0x14')];if(rpc[this[_0xf0f3('0xd')]+_0xf0f3('0x29')]){if(this[_0xf0f3('0xd')]==='mail'){_0x14a9ea[_0xf0f3('0x2a')]=this[_0xf0f3('0x1e')]['messageId'];_0x14a9ea[_0xf0f3('0x2b')]=_0xf0f3('0x2c')+_[_0xf0f3('0x2d')](_0x14a9ea[_0xf0f3('0xf')],'<div\x20id=\x22xm-mail-content\x22','<div')+'</div>';_0x14a9ea[_0xf0f3('0x2e')]={'Auto-Submitted':_0xf0f3('0x2f'),'X-Auto-Response-Suppress':_0xf0f3('0x30'),'Precedence':_0xf0f3('0x31')};return mailRpc[_0xf0f3('0x32')](this['account']['smtpOptions'],_0x14a9ea)[_0xf0f3('0x33')](function(_0x58bf93){logger[_0xf0f3('0x11')](_0xf0f3('0x34'),_0x26debd);_0x14a9ea[_0xf0f3('0x35')]=_0x58bf93['message'][_0xf0f3('0x35')];return rpc[_0x561204+_0xf0f3('0x29')][_0xf0f3('0x36')](_0x14a9ea);})[_0xf0f3('0x33')](function(_0x5d9487){logger['info']('[%s][AUTOREPLY]\x20%s',_0x26debd,JSON[_0xf0f3('0x37')](_0x5d9487));})['catch'](function(_0x6ab448){logger[_0xf0f3('0x38')]('[RPC][%s][AUTOREPLY]\x20%s',_0x26debd,JSON['stringify'](_0x6ab448));})[_0xf0f3('0x39')](function(){Promise[_0xf0f3('0x3a')]()[_0xf0f3('0x33')](function(){if(_0x4e6113[0x0]!=='2'||_0x425a86[_0xf0f3('0x18')])return;return rpc[_0x561204+_0xf0f3('0x3b')][_0xf0f3('0x3c')](_0x425a86['id'],{'autoreplyExecuted':!![]})[_0xf0f3('0x33')](function(_0x8fbc4a){logger[_0xf0f3('0x11')](_0xf0f3('0x19'),_0x26debd,JSON[_0xf0f3('0x37')](_0x8fbc4a));})[_0xf0f3('0x3d')](function(_0x41832e){logger[_0xf0f3('0x38')](_0xf0f3('0x3e'),_0x26debd,JSON[_0xf0f3('0x37')](_0x41832e));});})[_0xf0f3('0x33')](function(){_0x372810[_0xf0f3('0x13')]();});});}else{return rpc[this[_0xf0f3('0xd')]+'Message'][_0xf0f3('0x36')](_0x14a9ea)['then'](function(){logger[_0xf0f3('0x11')](_0xf0f3('0x16'),_0x26debd,_0x14a9ea['body']);})['catch'](function(_0x18c797){logger[_0xf0f3('0x38')](_0xf0f3('0x16'),_0x26debd,JSON[_0xf0f3('0x37')](_0x18c797));})[_0xf0f3('0x39')](function(){Promise[_0xf0f3('0x3a')]()[_0xf0f3('0x33')](function(){if(_0x4e6113[0x0]!=='2'||_0x425a86[_0xf0f3('0x18')])return;return rpc[_0x561204+_0xf0f3('0x3b')][_0xf0f3('0x3c')](_0x425a86['id'],{'autoreplyExecuted':!![]})[_0xf0f3('0x33')](function(_0x45b615){logger[_0xf0f3('0x11')](_0xf0f3('0x19'),_0x26debd,JSON[_0xf0f3('0x37')](_0x45b615));})[_0xf0f3('0x3d')](function(_0x455790){logger[_0xf0f3('0x38')](_0xf0f3('0x3e'),_0x26debd,JSON[_0xf0f3('0x37')](_0x455790));});})['then'](function(){_0x372810[_0xf0f3('0x13')]();});});}}}catch(_0x41b433){logger[_0xf0f3('0x38')](_0xf0f3('0x16'),_0x26debd,JSON[_0xf0f3('0x37')](_0x41b433));_0x372810[_0xf0f3('0x3f')]();}};};
\ No newline at end of file
+var _0x7bab=['stop','./utils','../../../../config/logger','routing','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','../../rpc/chatInteraction','../../rpc/mailInteraction','../../rpc/smsInteraction','../../rpc/whatsappInteraction','../../mailRpc','consequence','mail','isAutoreply','info','[%s][AUTOREPLY]\x20%s','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','channel','getMustacheRender','body','message','from','phone','subject','startsWith','Re:','Re:\x20','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','Message','inReplyTo','messageId','<div\x20id=\x22xm-mail-content\x22>','replace','<div\x20id=\x22xm-mail-content\x22','<div','</div>','headers','All','auto_reply','sendMailMessage','smtpOptions','then','[%s][AUTOREPLY]\x20SMTP\x20SENT','create','stringify','catch','error','[RPC][%s][AUTOREPLY]\x20%s','finally','resolve','Interaction','[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s'];(function(_0x1ebc56,_0x27e0ab){var _0x205431=function(_0x5ba476){while(--_0x5ba476){_0x1ebc56['push'](_0x1ebc56['shift']());}};_0x205431(++_0x27e0ab);}(_0x7bab,0xd0));var _0xb7ba=function(_0x151506,_0x1f3eee){_0x151506=_0x151506-0x0;var _0x5e9720=_0x7bab[_0x151506];return _0x5e9720;};'use strict';var _=require('lodash');var moment=require('moment');var utils=require(_0xb7ba('0x0'));var logger=require(_0xb7ba('0x1'))(_0xb7ba('0x2'));var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0xb7ba('0x3')),'mailMessage':require(_0xb7ba('0x4')),'smsMessage':require(_0xb7ba('0x5')),'faxMessage':require(_0xb7ba('0x6')),'whatsappMessage':require(_0xb7ba('0x7')),'chatInteraction':require(_0xb7ba('0x8')),'openchannelInteraction':require('../../rpc/openchannelInteraction'),'mailInteraction':require(_0xb7ba('0x9')),'smsInteraction':require(_0xb7ba('0xa')),'faxInteraction':require('../../rpc/faxInteraction'),'whatsappInteraction':require(_0xb7ba('0xb'))};var mailRpc=require(_0xb7ba('0xc'));exports[_0xb7ba('0xd')]=function(_0xcfda68,_0x5e3ac3,_0x12eb75,_0x20de33){return function(_0x3298eb){try{var _0x583d14=this['channel'];if(_0x583d14===_0xb7ba('0xe')&&_0x20de33['body'][_0xb7ba('0xf')]){logger[_0xb7ba('0x10')](_0xb7ba('0x11'),_0xcfda68,'Autoreply\x20not\x20executed\x20(message\x20is\x20autoreply)');return _0x3298eb[_0xb7ba('0x12')]();}if(_0x5e3ac3[0x0]==='1'&&(_[_0xb7ba('0x13')](this[_0xb7ba('0x14')][_0xb7ba('0x15')])||!this[_0xb7ba('0x14')][_0xb7ba('0x15')])){logger[_0xb7ba('0x10')]('[%s][AUTOREPLY]\x20%s',_0xcfda68,_0xb7ba('0x16'));return _0x3298eb[_0xb7ba('0x12')]();}if(_0x5e3ac3[0x0]==='2'&&this[_0xb7ba('0x14')][_0xb7ba('0x17')]){logger['info'](_0xb7ba('0x18'),_0xcfda68,_0xb7ba('0x19'));return _0x3298eb[_0xb7ba('0x12')]();}var _0x1fb66={'ContactId':this[_0xb7ba('0x1a')]['id'],'sentAt':moment()[_0xb7ba('0x1b')](_0xb7ba('0x1c')),'direction':'out'};if(this[_0xb7ba('0x1d')]===_0xb7ba('0xe')){_0x1fb66['body']=utils[_0xb7ba('0x1e')](_0x5e3ac3[0x2],this);}else{_0x1fb66[_0xb7ba('0x1f')]=utils[_0xb7ba('0x1e')](_0x5e3ac3[0x1],this);}if(this[_0xb7ba('0x20')]){_0x1fb66['to']=this['message'][_0xb7ba('0x21')]||'';if(this[_0xb7ba('0x1d')]===_0xb7ba('0xe')&&_0x5e3ac3[0x1]==='1'){_0x1fb66['cc']=this['message']['cc']||'';}_0x1fb66[_0xb7ba('0x21')]=this[_0xb7ba('0x20')]['to']||'';_0x1fb66[_0xb7ba('0x22')]=this['message']['phone']||'';_0x1fb66['read']=!![];if(this['message'][_0xb7ba('0x23')]){_0x1fb66[_0xb7ba('0x23')]='';_0x1fb66['subject']+=_[_0xb7ba('0x24')](this[_0xb7ba('0x20')]['subject'],_0xb7ba('0x25'))?'':_0xb7ba('0x26');_0x1fb66[_0xb7ba('0x23')]+=this['message'][_0xb7ba('0x23')];}}if(this[_0xb7ba('0x1d')]==='chat'){_0x1fb66[_0xb7ba('0x27')]=this[_0xb7ba('0x28')]['id'];}else{_0x1fb66[_[_0xb7ba('0x29')](this[_0xb7ba('0x1d')])+_0xb7ba('0x2a')]=this[_0xb7ba('0x28')]['id'];}_0x1fb66[_[_0xb7ba('0x29')](this[_0xb7ba('0x1d')])+_0xb7ba('0x2b')]=this[_0xb7ba('0x14')]['id'];var _0x3e65c9=this[_0xb7ba('0x14')];if(rpc[this['channel']+_0xb7ba('0x2c')]){if(this[_0xb7ba('0x1d')]===_0xb7ba('0xe')){_0x1fb66[_0xb7ba('0x2d')]=this[_0xb7ba('0x20')][_0xb7ba('0x2e')];_0x1fb66['html']=_0xb7ba('0x2f')+_[_0xb7ba('0x30')](_0x1fb66[_0xb7ba('0x1f')],_0xb7ba('0x31'),_0xb7ba('0x32'))+_0xb7ba('0x33');_0x1fb66[_0xb7ba('0x34')]={'Auto-Submitted':'auto-replied','X-Auto-Response-Suppress':_0xb7ba('0x35'),'Precedence':_0xb7ba('0x36')};return mailRpc[_0xb7ba('0x37')](this[_0xb7ba('0x28')][_0xb7ba('0x38')],_0x1fb66)[_0xb7ba('0x39')](function(_0x5ee5ae){logger[_0xb7ba('0x10')](_0xb7ba('0x3a'),_0xcfda68);_0x1fb66[_0xb7ba('0x2e')]=_0x5ee5ae['message']['messageId'];return rpc[_0x583d14+'Message'][_0xb7ba('0x3b')](_0x1fb66);})[_0xb7ba('0x39')](function(_0x1dd7d1){logger[_0xb7ba('0x10')](_0xb7ba('0x11'),_0xcfda68,JSON[_0xb7ba('0x3c')](_0x1dd7d1));})[_0xb7ba('0x3d')](function(_0xcc6430){logger[_0xb7ba('0x3e')](_0xb7ba('0x3f'),_0xcfda68,JSON[_0xb7ba('0x3c')](_0xcc6430));})[_0xb7ba('0x40')](function(){Promise[_0xb7ba('0x41')]()[_0xb7ba('0x39')](function(){if(_0x5e3ac3[0x0]!=='2'||_0x3e65c9[_0xb7ba('0x17')])return;return rpc[_0x583d14+_0xb7ba('0x42')]['update'](_0x3e65c9['id'],{'autoreplyExecuted':!![]})[_0xb7ba('0x39')](function(_0x2374a3){logger['info']('[%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0xcfda68,JSON[_0xb7ba('0x3c')](_0x2374a3));})[_0xb7ba('0x3d')](function(_0x3e3772){logger[_0xb7ba('0x3e')](_0xb7ba('0x43'),_0xcfda68,JSON[_0xb7ba('0x3c')](_0x3e3772));});})['then'](function(){_0x3298eb['next']();});});}else{return rpc[this[_0xb7ba('0x1d')]+_0xb7ba('0x2c')][_0xb7ba('0x3b')](_0x1fb66)[_0xb7ba('0x39')](function(){logger[_0xb7ba('0x10')](_0xb7ba('0x11'),_0xcfda68,_0x1fb66[_0xb7ba('0x1f')]);})['catch'](function(_0x3240a3){logger[_0xb7ba('0x3e')](_0xb7ba('0x11'),_0xcfda68,JSON[_0xb7ba('0x3c')](_0x3240a3));})[_0xb7ba('0x40')](function(){Promise[_0xb7ba('0x41')]()[_0xb7ba('0x39')](function(){if(_0x5e3ac3[0x0]!=='2'||_0x3e65c9[_0xb7ba('0x17')])return;return rpc[_0x583d14+_0xb7ba('0x42')]['update'](_0x3e65c9['id'],{'autoreplyExecuted':!![]})[_0xb7ba('0x39')](function(_0xdf6ca5){logger['info'](_0xb7ba('0x18'),_0xcfda68,JSON[_0xb7ba('0x3c')](_0xdf6ca5));})[_0xb7ba('0x3d')](function(_0x2ace54){logger[_0xb7ba('0x3e')]('[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0xcfda68,JSON[_0xb7ba('0x3c')](_0x2ace54));});})[_0xb7ba('0x39')](function(){_0x3298eb[_0xb7ba('0x12')]();});});}}}catch(_0x259eae){logger[_0xb7ba('0x3e')](_0xb7ba('0x11'),_0xcfda68,JSON[_0xb7ba('0x3c')](_0x259eae));_0x3298eb[_0xb7ba('0x44')]();}};};
\ No newline at end of file
index 665949d..7eee9c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b52=['stop','../../../../config/logger','routing','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/mailInteraction','../../rpc/whatsappInteraction','consequence','info','[%s][CLOSE]\x20reason\x20%s','format','YYYY-MM-DD\x20HH:mm:ss','system','Interaction','channel','interaction','[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!','catch','error','[%s][CLOSE]\x20%s','stringify','finally'];(function(_0xd7e7b3,_0x3b3b7b){var _0x3e166b=function(_0x5caecf){while(--_0x5caecf){_0xd7e7b3['push'](_0xd7e7b3['shift']());}};_0x3e166b(++_0x3b3b7b);}(_0x4b52,0x8b));var _0x24b5=function(_0x14895b,_0x45351f){_0x14895b=_0x14895b-0x0;var _0x10fd2e=_0x4b52[_0x14895b];return _0x10fd2e;};'use strict';var moment=require('moment');var logger=require(_0x24b5('0x0'))(_0x24b5('0x1'));var rpc={'chatInteraction':require(_0x24b5('0x2')),'openchannelInteraction':require(_0x24b5('0x3')),'smsInteraction':require(_0x24b5('0x4')),'mailInteraction':require(_0x24b5('0x5')),'faxInteraction':require('../../rpc/faxInteraction'),'whatsappInteraction':require(_0x24b5('0x6'))};exports[_0x24b5('0x7')]=function(_0x4d2681,_0x27a1bb,_0x284d2c,_0x4e24d6){return function(_0x58740e){try{logger[_0x24b5('0x8')](_0x24b5('0x9'),_0x4d2681,_0x27a1bb[0x0]);var _0x40e1fd={'closed':0x1,'closedAt':moment()[_0x24b5('0xa')](_0x24b5('0xb')),'closeReason':_0x24b5('0xc'),'disposition':_0x27a1bb[0x0]};if(rpc[_0x4e24d6['channel']+_0x24b5('0xd')]){rpc[_0x4e24d6[_0x24b5('0xe')]+_0x24b5('0xd')]['update'](_0x4e24d6[_0x24b5('0xf')]['id'],_0x40e1fd)['then'](function(_0x2d9637){logger[_0x24b5('0x8')](_0x24b5('0x10'),_0x4d2681,_0x4e24d6['interaction']['id']);})[_0x24b5('0x11')](function(_0x3d952e){logger[_0x24b5('0x12')](_0x24b5('0x13'),_0x4d2681,JSON[_0x24b5('0x14')](_0x3d952e));})[_0x24b5('0x15')](function(){_0x58740e[_0x24b5('0x16')]();});}}catch(_0x495a65){logger[_0x24b5('0x12')]('[%s][CLOSE]\x20%s',_0x4d2681,JSON[_0x24b5('0x14')](_0x495a65));_0x58740e[_0x24b5('0x16')]();}};};
\ No newline at end of file
+var _0x0f9f=['catch','error','[%s][CLOSE]\x20%s','stringify','finally','stop','moment','../../../../config/logger','routing','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/faxInteraction','consequence','YYYY-MM-DD\x20HH:mm:ss','system','channel','Interaction','update','interaction','then','[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!'];(function(_0x467b5d,_0x22ca71){var _0x3a64da=function(_0x2709b7){while(--_0x2709b7){_0x467b5d['push'](_0x467b5d['shift']());}};_0x3a64da(++_0x22ca71);}(_0x0f9f,0x1aa));var _0xf0f9=function(_0x4f3207,_0x264c78){_0x4f3207=_0x4f3207-0x0;var _0x87adb6=_0x0f9f[_0x4f3207];return _0x87adb6;};'use strict';var moment=require(_0xf0f9('0x0'));var logger=require(_0xf0f9('0x1'))(_0xf0f9('0x2'));var rpc={'chatInteraction':require('../../rpc/chatInteraction'),'openchannelInteraction':require(_0xf0f9('0x3')),'smsInteraction':require(_0xf0f9('0x4')),'mailInteraction':require('../../rpc/mailInteraction'),'faxInteraction':require(_0xf0f9('0x5')),'whatsappInteraction':require('../../rpc/whatsappInteraction')};exports[_0xf0f9('0x6')]=function(_0x4a6735,_0x7b97c4,_0x4650ce,_0x95d9f4){return function(_0x435513){try{logger['info']('[%s][CLOSE]\x20reason\x20%s',_0x4a6735,_0x7b97c4[0x0]);var _0x3ca4a1={'closed':0x1,'closedAt':moment()['format'](_0xf0f9('0x7')),'closeReason':_0xf0f9('0x8'),'disposition':_0x7b97c4[0x0]};if(rpc[_0x95d9f4[_0xf0f9('0x9')]+'Interaction']){rpc[_0x95d9f4[_0xf0f9('0x9')]+_0xf0f9('0xa')][_0xf0f9('0xb')](_0x95d9f4[_0xf0f9('0xc')]['id'],_0x3ca4a1)[_0xf0f9('0xd')](function(_0x179968){logger['info'](_0xf0f9('0xe'),_0x4a6735,_0x95d9f4[_0xf0f9('0xc')]['id']);})[_0xf0f9('0xf')](function(_0x1df43e){logger[_0xf0f9('0x10')](_0xf0f9('0x11'),_0x4a6735,JSON[_0xf0f9('0x12')](_0x1df43e));})[_0xf0f9('0x13')](function(){_0x435513[_0xf0f9('0x14')]();});}}catch(_0x5b0cbf){logger[_0xf0f9('0x10')](_0xf0f9('0x11'),_0x4a6735,JSON[_0xf0f9('0x12')](_0x5b0cbf));_0x435513[_0xf0f9('0x14')]();}};};
\ No newline at end of file
index a1e509d..a69db97 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1224=['[%s][DIALOGFLOW]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','textRequest','message','providerName','dialogflow','providerResponse','result','metadata','catch','lodash','moment','apiai-promise','md5','./utils','../../../../config/logger','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','isNil','interaction','UserId','info','[%s][DIALOGFLOW]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','sms','whatsapp','phone','chat','ChatWebsiteId','account','upperFirst','InteractionId','created','body','getMustacheRender','Message','create','then','error','stringify','finally','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop'];(function(_0xb3b3a0,_0x32567d){var _0x4e3707=function(_0x3f4e84){while(--_0x3f4e84){_0xb3b3a0['push'](_0xb3b3a0['shift']());}};_0x4e3707(++_0x32567d);}(_0x1224,0x10d));var _0x4122=function(_0x20acdb,_0x210c8e){_0x20acdb=_0x20acdb-0x0;var _0x383b0d=_0x1224[_0x20acdb];return _0x383b0d;};'use strict';var _=require(_0x4122('0x0'));var moment=require(_0x4122('0x1'));var apiai=require(_0x4122('0x2'));var md5=require(_0x4122('0x3'));var utils=require(_0x4122('0x4'));var logger=require(_0x4122('0x5'))('routing');var rpc={'chatMessage':require(_0x4122('0x6')),'openchannelMessage':require(_0x4122('0x7')),'mailMessage':require(_0x4122('0x8')),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require(_0x4122('0x9')),'whatsappMessage':require(_0x4122('0xa'))};exports[_0x4122('0xb')]=function(_0x40b5e4,_0x2a952c){return function(_0x431470){try{if(!_[_0x4122('0xc')](this[_0x4122('0xd')][_0x4122('0xe')])){logger[_0x4122('0xf')](_0x4122('0x10'),_0x40b5e4,_0x4122('0x11'));return _0x431470[_0x4122('0x12')]();}var _0x35160c={'ContactId':this[_0x4122('0x13')]['id'],'sentAt':moment()[_0x4122('0x14')](_0x4122('0x15')),'direction':_0x4122('0x16')};if(this[_0x4122('0x17')]===_0x4122('0x18')||this[_0x4122('0x17')]===_0x4122('0x19')){_0x35160c[_0x4122('0x1a')]=this[_0x4122('0xd')][_0x4122('0x1a')];}var _0x292932=this[_0x4122('0x17')];if(_0x292932===_0x4122('0x1b')){_0x35160c[_0x4122('0x1c')]=this[_0x4122('0x1d')]['id'];}else{_0x35160c[_[_0x4122('0x1e')](_0x292932)+'AccountId']=this[_0x4122('0x1d')]['id'];}_0x35160c[_[_0x4122('0x1e')](_0x292932)+_0x4122('0x1f')]=this[_0x4122('0xd')]['id'];if(this['interaction'][_0x4122('0x20')]){var _0x19684e=_0x2a952c[0x2];if(!_['isEmpty'](_0x19684e)){_0x35160c[_0x4122('0x21')]=utils[_0x4122('0x22')](_0x19684e,this);return rpc[_0x292932+_0x4122('0x23')][_0x4122('0x24')](_0x35160c)[_0x4122('0x25')](function(_0x42374d){logger[_0x4122('0xf')]('[%s][DIALOGFLOW]\x20%s',_0x40b5e4,_0x35160c['body']);})['catch'](function(_0x43ebe7){logger[_0x4122('0x26')](_0x4122('0x10'),_0x40b5e4,JSON[_0x4122('0x27')](_0x43ebe7));})[_0x4122('0x28')](function(){logger[_0x4122('0xf')](_0x4122('0x29'),_0x40b5e4);_0x431470[_0x4122('0x2a')]();});}else{logger['info'](_0x4122('0x2b'),_0x40b5e4);_0x431470['stop']();}}else{var _0x4f949a=this;var _0x508cd7=apiai(_0x2a952c[0x0],{'language':_0x2a952c[0x1]||'en'});return _0x508cd7[_0x4122('0x2c')](this[_0x4122('0x2d')][_0x4122('0x21')],{'sessionId':md5(this['interaction']['id'])})[_0x4122('0x25')](function(_0x386cdc){_0x4f949a['body']['dialogflow']=_0x386cdc;_0x35160c[_0x4122('0x21')]=_0x386cdc['result']['fulfillment']['speech'];_0x35160c[_0x4122('0x2e')]=_0x4122('0x2f');_0x35160c[_0x4122('0x30')]=JSON[_0x4122('0x27')](_0x386cdc);return rpc[_0x292932+_0x4122('0x23')][_0x4122('0x24')](_0x35160c)[_0x4122('0x25')](function(_0x7fe50d){logger[_0x4122('0xf')](_0x4122('0x10'),_0x40b5e4,_0x35160c[_0x4122('0x21')]);if(_0x386cdc[_0x4122('0x31')][_0x4122('0x32')]['endConversation']){_0x431470[_0x4122('0x12')]();}else{_0x431470[_0x4122('0x2a')]();}})[_0x4122('0x33')](function(_0x31f141){logger['error'](_0x4122('0x10'),_0x40b5e4,JSON['stringify'](_0x31f141));_0x431470[_0x4122('0x12')]();});})[_0x4122('0x33')](function(_0x3a9633){logger[_0x4122('0x26')](_0x4122('0x10'),_0x40b5e4,_0x3a9633[_0x4122('0x2d')]);_0x431470[_0x4122('0x12')]();});}}catch(_0x427e8a){logger['error'](_0x4122('0x10'),_0x40b5e4,JSON[_0x4122('0x27')](_0x427e8a));_0x431470['stop']();}};};
\ No newline at end of file
+var _0xdd68=['InteractionId','created','isEmpty','body','Message','create','then','info','catch','error','finally','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','message','dialogflow','fulfillment','speech','providerName','providerResponse','stringify','metadata','endConversation','lodash','apiai-promise','md5','./utils','../../../../config/logger','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/smsMessage','../../rpc/faxMessage','consequence','isNil','interaction','UserId','[%s][DIALOGFLOW]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','sms','whatsapp','phone','account','upperFirst'];(function(_0x24927b,_0x57ebb9){var _0xa33c72=function(_0x1acb09){while(--_0x1acb09){_0x24927b['push'](_0x24927b['shift']());}};_0xa33c72(++_0x57ebb9);}(_0xdd68,0x196));var _0x8dd6=function(_0x1e4150,_0x55b02a){_0x1e4150=_0x1e4150-0x0;var _0x1ce3ee=_0xdd68[_0x1e4150];return _0x1ce3ee;};'use strict';var _=require(_0x8dd6('0x0'));var moment=require('moment');var apiai=require(_0x8dd6('0x1'));var md5=require(_0x8dd6('0x2'));var utils=require(_0x8dd6('0x3'));var logger=require(_0x8dd6('0x4'))('routing');var rpc={'chatMessage':require(_0x8dd6('0x5')),'openchannelMessage':require(_0x8dd6('0x6')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require(_0x8dd6('0x7')),'faxMessage':require(_0x8dd6('0x8')),'whatsappMessage':require('../../rpc/whatsappMessage')};exports[_0x8dd6('0x9')]=function(_0x4c021f,_0x476bad){return function(_0x51f78e){try{if(!_[_0x8dd6('0xa')](this[_0x8dd6('0xb')][_0x8dd6('0xc')])){logger['info'](_0x8dd6('0xd'),_0x4c021f,_0x8dd6('0xe'));return _0x51f78e[_0x8dd6('0xf')]();}var _0x2dc6ea={'ContactId':this[_0x8dd6('0x10')]['id'],'sentAt':moment()[_0x8dd6('0x11')](_0x8dd6('0x12')),'direction':_0x8dd6('0x13')};if(this[_0x8dd6('0x14')]===_0x8dd6('0x15')||this[_0x8dd6('0x14')]===_0x8dd6('0x16')){_0x2dc6ea[_0x8dd6('0x17')]=this['interaction'][_0x8dd6('0x17')];}var _0x3221ce=this[_0x8dd6('0x14')];if(_0x3221ce==='chat'){_0x2dc6ea['ChatWebsiteId']=this[_0x8dd6('0x18')]['id'];}else{_0x2dc6ea[_['upperFirst'](_0x3221ce)+'AccountId']=this[_0x8dd6('0x18')]['id'];}_0x2dc6ea[_[_0x8dd6('0x19')](_0x3221ce)+_0x8dd6('0x1a')]=this[_0x8dd6('0xb')]['id'];if(this[_0x8dd6('0xb')][_0x8dd6('0x1b')]){var _0x31e123=_0x476bad[0x2];if(!_[_0x8dd6('0x1c')](_0x31e123)){_0x2dc6ea[_0x8dd6('0x1d')]=utils['getMustacheRender'](_0x31e123,this);return rpc[_0x3221ce+_0x8dd6('0x1e')][_0x8dd6('0x1f')](_0x2dc6ea)[_0x8dd6('0x20')](function(_0x168a30){logger[_0x8dd6('0x21')](_0x8dd6('0xd'),_0x4c021f,_0x2dc6ea[_0x8dd6('0x1d')]);})[_0x8dd6('0x22')](function(_0x5c579e){logger[_0x8dd6('0x23')](_0x8dd6('0xd'),_0x4c021f,JSON['stringify'](_0x5c579e));})[_0x8dd6('0x24')](function(){logger[_0x8dd6('0x21')](_0x8dd6('0x25'),_0x4c021f);_0x51f78e[_0x8dd6('0x26')]();});}else{logger['info']('[%s][DIALOGFLOW]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!',_0x4c021f);_0x51f78e['stop']();}}else{var _0x138216=this;var _0xe6b099=apiai(_0x476bad[0x0],{'language':_0x476bad[0x1]||'en'});return _0xe6b099['textRequest'](this[_0x8dd6('0x27')][_0x8dd6('0x1d')],{'sessionId':md5(this[_0x8dd6('0xb')]['id'])})[_0x8dd6('0x20')](function(_0x3a4c9f){_0x138216['body'][_0x8dd6('0x28')]=_0x3a4c9f;_0x2dc6ea[_0x8dd6('0x1d')]=_0x3a4c9f['result'][_0x8dd6('0x29')][_0x8dd6('0x2a')];_0x2dc6ea[_0x8dd6('0x2b')]='dialogflow';_0x2dc6ea[_0x8dd6('0x2c')]=JSON[_0x8dd6('0x2d')](_0x3a4c9f);return rpc[_0x3221ce+_0x8dd6('0x1e')][_0x8dd6('0x1f')](_0x2dc6ea)[_0x8dd6('0x20')](function(_0x5b77f2){logger[_0x8dd6('0x21')](_0x8dd6('0xd'),_0x4c021f,_0x2dc6ea['body']);if(_0x3a4c9f['result'][_0x8dd6('0x2e')][_0x8dd6('0x2f')]){_0x51f78e[_0x8dd6('0xf')]();}else{_0x51f78e[_0x8dd6('0x26')]();}})[_0x8dd6('0x22')](function(_0x3da00d){logger[_0x8dd6('0x23')](_0x8dd6('0xd'),_0x4c021f,JSON[_0x8dd6('0x2d')](_0x3da00d));_0x51f78e[_0x8dd6('0xf')]();});})[_0x8dd6('0x22')](function(_0x3592d7){logger[_0x8dd6('0x23')](_0x8dd6('0xd'),_0x4c021f,_0x3592d7[_0x8dd6('0x27')]);_0x51f78e[_0x8dd6('0xf')]();});}}catch(_0x2e20d7){logger[_0x8dd6('0x23')](_0x8dd6('0xd'),_0x4c021f,JSON[_0x8dd6('0x2d')](_0x2e20d7));_0x51f78e[_0x8dd6('0x26')]();}};};
\ No newline at end of file
index 83c55c5..208d45e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x42dd=['format','YYYY-MM-DD\x20HH:mm:ss','out','channel','whatsapp','phone','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','created','isEmpty','getMustacheRender','create','info','finally','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','replace','SessionsClient','message','detectIntent','length','diagnosticInfo','queryResult','fields','end_conversation','boolValue','DIALOGFLOWV2_ACTION','action','DIALOGFLOWV2_INTENTNAME','intent','name','isFallback','DIALOGFLOWV2_LANGUAGECODE','DIALOGFLOWV2_QUERYTEXT','queryText','DIALOGFLOWV2_SCORE','intentDetectionConfidence','providerName','dialogflowV2','push','fulfillmentText','next','error','catch','stack','lodash','moment','bluebird','../../../../config/logger','routing','./utils','../../rpc/chatMessage','../../rpc/mailMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','body','Message','then','[%s][DIALOGFLOWV2]\x20%s','stringify','consequence','isNil','interaction','UserId'];(function(_0x376ffe,_0x2a7ec7){var _0x327b9f=function(_0x2ff0eb){while(--_0x2ff0eb){_0x376ffe['push'](_0x376ffe['shift']());}};_0x327b9f(++_0x2a7ec7);}(_0x42dd,0x73));var _0xd42d=function(_0x1d24eb,_0x12295b){_0x1d24eb=_0x1d24eb-0x0;var _0x1dc576=_0x42dd[_0x1d24eb];return _0x1dc576;};'use strict';var _=require(_0xd42d('0x0'));var dialogflow=require('dialogflow');var md5=require('md5');var moment=require(_0xd42d('0x1'));var Promise=require(_0xd42d('0x2'));var logger=require(_0xd42d('0x3'))(_0xd42d('0x4'));var utils=require(_0xd42d('0x5'));var rpc={'chatMessage':require(_0xd42d('0x6')),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require(_0xd42d('0x7')),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require(_0xd42d('0x8')),'whatsappMessage':require(_0xd42d('0x9'))};function createMessage(_0x10f72b,_0x1ceabd,_0x521474,_0x2f8cf6){return new Promise(function(_0x589300,_0x255dd2){var _0x5d94e1=_['clone'](_0x521474);_0x5d94e1[_0xd42d('0xa')]=_0x2f8cf6;return rpc[_0x1ceabd+_0xd42d('0xb')]['create'](_0x5d94e1)[_0xd42d('0xc')](function(){logger['info'](_0xd42d('0xd'),_0x10f72b,_0x5d94e1['body']);_0x589300();})['catch'](function(_0x23241c){logger['error'](_0xd42d('0xd'),_0x10f72b,JSON[_0xd42d('0xe')](_0x23241c));_0x255dd2(_0x23241c);});});}exports[_0xd42d('0xf')]=function(_0x3c9514,_0x41f59c){return function(_0x470127){try{if(!_[_0xd42d('0x10')](this[_0xd42d('0x11')][_0xd42d('0x12')])){logger['info'](_0xd42d('0xd'),_0x3c9514,'Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.');return _0x470127['next']();}var _0x4aa5c8={'ContactId':this['contact']['id'],'sentAt':moment()[_0xd42d('0x13')](_0xd42d('0x14')),'direction':_0xd42d('0x15')};if(this[_0xd42d('0x16')]==='sms'||this['channel']===_0xd42d('0x17')){_0x4aa5c8[_0xd42d('0x18')]=this[_0xd42d('0x11')][_0xd42d('0x18')];}var _0x3038d6=this[_0xd42d('0x16')];if(_0x3038d6==='chat'){_0x4aa5c8[_0xd42d('0x19')]=this[_0xd42d('0x1a')]['id'];}else{_0x4aa5c8[_[_0xd42d('0x1b')](_0x3038d6)+_0xd42d('0x1c')]=this['account']['id'];}_0x4aa5c8[_[_0xd42d('0x1b')](_0x3038d6)+_0xd42d('0x1d')]=this[_0xd42d('0x11')]['id'];if(this[_0xd42d('0x11')][_0xd42d('0x1e')]){var _0x548c9e=_0x41f59c[0x4];if(!_[_0xd42d('0x1f')](_0x548c9e)){_0x4aa5c8['body']=utils[_0xd42d('0x20')](_0x548c9e,this);return rpc[_0x3038d6+_0xd42d('0xb')][_0xd42d('0x21')](_0x4aa5c8)['then'](function(_0x1e6dba){logger[_0xd42d('0x22')](_0xd42d('0xd'),_0x3c9514,_0x4aa5c8[_0xd42d('0xa')]);})['catch'](function(_0x5e96a2){logger['error'](_0xd42d('0xd'),_0x3c9514,JSON[_0xd42d('0xe')](_0x5e96a2));})[_0xd42d('0x23')](function(){logger['info'](_0xd42d('0x24'),_0x3c9514);_0x470127[_0xd42d('0x25')]();});}else{logger[_0xd42d('0x22')]('[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!',_0x3c9514);_0x470127[_0xd42d('0x25')]();}}else{var _0x5089d6=this;var _0x2cd835=_0x41f59c[0x2][_0xd42d('0x26')](/\\n/g,'\x0a');var _0x46e4f0={'credentials':{'private_key':_0x2cd835,'client_email':_0x41f59c[0x1]}};var _0x468753=new dialogflow[(_0xd42d('0x27'))](_0x46e4f0);var _0x4f608c=_0x468753['sessionPath'](_0x41f59c[0x0],md5(_0x5089d6[_0xd42d('0x11')]['id']));var _0x3d15ad={'session':_0x4f608c,'queryInput':{'text':{'text':_0x5089d6[_0xd42d('0x28')][_0xd42d('0xa')],'languageCode':_0x41f59c[0x3]||'en'}}};return _0x468753[_0xd42d('0x29')](_0x3d15ad)[_0xd42d('0xc')](function(_0x5ec31f){if(_0x5ec31f&&_0x5ec31f[_0xd42d('0x2a')]){_0x5089d6[_0xd42d('0xa')]['dialogflowV2']=_0x5ec31f;var _0x5c1e1d=_0x5ec31f[0x0];var _0x631772=_0x5c1e1d['queryResult'][_0xd42d('0x2b')]&&_0x5c1e1d[_0xd42d('0x2c')][_0xd42d('0x2b')][_0xd42d('0x2d')]?_0x5c1e1d[_0xd42d('0x2c')][_0xd42d('0x2b')][_0xd42d('0x2d')][_0xd42d('0x2e')][_0xd42d('0x2f')]:![];_0x5089d6[_0xd42d('0xa')][_0xd42d('0x30')]=_0x5c1e1d['queryResult'][_0xd42d('0x31')];_0x5089d6['body']['DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT']=_0x5c1e1d[_0xd42d('0x2c')]['allRequiredParamsPresent'];_0x5089d6['body']['DIALOGFLOWV2_ENDCONVERSATION']=_0x5c1e1d[_0xd42d('0x2c')][_0xd42d('0x2b')]&&_0x5c1e1d[_0xd42d('0x2c')][_0xd42d('0x2b')][_0xd42d('0x2d')]?_0x5c1e1d[_0xd42d('0x2c')][_0xd42d('0x2b')][_0xd42d('0x2d')][_0xd42d('0x2e')][_0xd42d('0x2f')]:![];_0x5089d6[_0xd42d('0xa')][_0xd42d('0x32')]=_0x5c1e1d[_0xd42d('0x2c')][_0xd42d('0x33')][_0xd42d('0x34')];_0x5089d6[_0xd42d('0xa')]['DIALOGFLOWV2_INTENTDISPLAYNAME']=_0x5c1e1d['queryResult']['intent']['displayName'];_0x5089d6[_0xd42d('0xa')]['DIALOGFLOWV2_ISFALLBACKINTENT']=_0x5c1e1d[_0xd42d('0x2c')]['intent'][_0xd42d('0x35')];_0x5089d6[_0xd42d('0xa')][_0xd42d('0x36')]=_0x5c1e1d['queryResult']['languageCode'];_0x5089d6[_0xd42d('0xa')][_0xd42d('0x37')]=_0x5c1e1d[_0xd42d('0x2c')][_0xd42d('0x38')];_0x5089d6['body'][_0xd42d('0x39')]=_0x5c1e1d[_0xd42d('0x2c')][_0xd42d('0x3a')];_0x4aa5c8[_0xd42d('0x3b')]=_0xd42d('0x3c');_0x4aa5c8['providerResponse']=JSON[_0xd42d('0xe')](_0x5ec31f);var _0x2b6e11=[];for(var _0x36ec9b=0x0;_0x36ec9b<_0x5ec31f[_0xd42d('0x2a')];_0x36ec9b++){var _0x8fd8f5=_0x5ec31f[_0x36ec9b];if(_0x8fd8f5&&_0x8fd8f5['queryResult']&&_0x8fd8f5['queryResult']['fulfillmentText']){_0x2b6e11[_0xd42d('0x3d')](createMessage(_0x3c9514,_0x3038d6,_0x4aa5c8,_0x8fd8f5[_0xd42d('0x2c')][_0xd42d('0x3e')]));}}return Promise['all'](_0x2b6e11)[_0xd42d('0xc')](function(){if(_0x631772){_0x470127[_0xd42d('0x3f')]();}else{_0x470127['stop']();}})['catch'](function(_0xd7c49a){logger[_0xd42d('0x40')](_0xd42d('0xd'),_0x3c9514,JSON['stringify'](_0xd7c49a));_0x470127['next']();});}})[_0xd42d('0x41')](function(_0x331bfa){logger[_0xd42d('0x40')](_0xd42d('0xd'),_0x3c9514,_0x331bfa[_0xd42d('0x28')],_0x331bfa[_0xd42d('0x42')]);_0x470127[_0xd42d('0x3f')]();});}}catch(_0x240d66){logger[_0xd42d('0x40')](_0xd42d('0xd'),_0x3c9514,JSON['stringify'](_0x240d66));_0x470127[_0xd42d('0x25')]();}};};
\ No newline at end of file
+var _0xe0b2=['displayName','DIALOGFLOWV2_LANGUAGECODE','languageCode','DIALOGFLOWV2_QUERYTEXT','queryText','DIALOGFLOWV2_SCORE','intentDetectionConfidence','providerName','providerResponse','fulfillmentText','push','error','stack','lodash','md5','bluebird','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','clone','body','Message','then','info','[%s][DIALOGFLOWV2]\x20%s','catch','stringify','consequence','isNil','interaction','UserId','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','sms','whatsapp','phone','chat','account','AccountId','upperFirst','InteractionId','created','isEmpty','getMustacheRender','create','finally','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','replace','SessionsClient','sessionPath','message','detectIntent','length','dialogflowV2','queryResult','diagnosticInfo','end_conversation','boolValue','DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT','fields','intent','name','DIALOGFLOWV2_INTENTDISPLAYNAME'];(function(_0x56deba,_0x3b5f13){var _0x358ea5=function(_0x4c8fdb){while(--_0x4c8fdb){_0x56deba['push'](_0x56deba['shift']());}};_0x358ea5(++_0x3b5f13);}(_0xe0b2,0x125));var _0x2e0b=function(_0x669e87,_0x5910f3){_0x669e87=_0x669e87-0x0;var _0x4a7833=_0xe0b2[_0x669e87];return _0x4a7833;};'use strict';var _=require(_0x2e0b('0x0'));var dialogflow=require('dialogflow');var md5=require(_0x2e0b('0x1'));var moment=require('moment');var Promise=require(_0x2e0b('0x2'));var logger=require(_0x2e0b('0x3'))(_0x2e0b('0x4'));var utils=require('./utils');var rpc={'chatMessage':require(_0x2e0b('0x5')),'openchannelMessage':require(_0x2e0b('0x6')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require('../../rpc/whatsappMessage')};function createMessage(_0x54c207,_0xb948ac,_0x1dc42d,_0x3d3219){return new Promise(function(_0x38db84,_0x37ec74){var _0x296f9f=_[_0x2e0b('0x7')](_0x1dc42d);_0x296f9f[_0x2e0b('0x8')]=_0x3d3219;return rpc[_0xb948ac+_0x2e0b('0x9')]['create'](_0x296f9f)[_0x2e0b('0xa')](function(){logger[_0x2e0b('0xb')](_0x2e0b('0xc'),_0x54c207,_0x296f9f[_0x2e0b('0x8')]);_0x38db84();})[_0x2e0b('0xd')](function(_0x1dc745){logger['error']('[%s][DIALOGFLOWV2]\x20%s',_0x54c207,JSON[_0x2e0b('0xe')](_0x1dc745));_0x37ec74(_0x1dc745);});});}exports[_0x2e0b('0xf')]=function(_0x3a6f30,_0x2ed9dd){return function(_0x3fad6b){try{if(!_[_0x2e0b('0x10')](this[_0x2e0b('0x11')][_0x2e0b('0x12')])){logger['info'](_0x2e0b('0xc'),_0x3a6f30,_0x2e0b('0x13'));return _0x3fad6b[_0x2e0b('0x14')]();}var _0x3eb7d5={'ContactId':this[_0x2e0b('0x15')]['id'],'sentAt':moment()[_0x2e0b('0x16')](_0x2e0b('0x17')),'direction':_0x2e0b('0x18')};if(this[_0x2e0b('0x19')]===_0x2e0b('0x1a')||this[_0x2e0b('0x19')]===_0x2e0b('0x1b')){_0x3eb7d5[_0x2e0b('0x1c')]=this[_0x2e0b('0x11')][_0x2e0b('0x1c')];}var _0x38d891=this[_0x2e0b('0x19')];if(_0x38d891===_0x2e0b('0x1d')){_0x3eb7d5['ChatWebsiteId']=this[_0x2e0b('0x1e')]['id'];}else{_0x3eb7d5[_['upperFirst'](_0x38d891)+_0x2e0b('0x1f')]=this[_0x2e0b('0x1e')]['id'];}_0x3eb7d5[_[_0x2e0b('0x20')](_0x38d891)+_0x2e0b('0x21')]=this[_0x2e0b('0x11')]['id'];if(this['interaction'][_0x2e0b('0x22')]){var _0x21a134=_0x2ed9dd[0x4];if(!_[_0x2e0b('0x23')](_0x21a134)){_0x3eb7d5[_0x2e0b('0x8')]=utils[_0x2e0b('0x24')](_0x21a134,this);return rpc[_0x38d891+_0x2e0b('0x9')][_0x2e0b('0x25')](_0x3eb7d5)[_0x2e0b('0xa')](function(_0x1a6ad0){logger[_0x2e0b('0xb')](_0x2e0b('0xc'),_0x3a6f30,_0x3eb7d5['body']);})[_0x2e0b('0xd')](function(_0x368e83){logger['error']('[%s][DIALOGFLOWV2]\x20%s',_0x3a6f30,JSON['stringify'](_0x368e83));})[_0x2e0b('0x26')](function(){logger['info'](_0x2e0b('0x27'),_0x3a6f30);_0x3fad6b['stop']();});}else{logger[_0x2e0b('0xb')]('[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!',_0x3a6f30);_0x3fad6b[_0x2e0b('0x28')]();}}else{var _0x6d58c9=this;var _0x447352=_0x2ed9dd[0x2][_0x2e0b('0x29')](/\\n/g,'\x0a');var _0x40e9bf={'credentials':{'private_key':_0x447352,'client_email':_0x2ed9dd[0x1]}};var _0xb1e2ab=new dialogflow[(_0x2e0b('0x2a'))](_0x40e9bf);var _0x4e8343=_0xb1e2ab[_0x2e0b('0x2b')](_0x2ed9dd[0x0],md5(_0x6d58c9[_0x2e0b('0x11')]['id']));var _0x5b6ce6={'session':_0x4e8343,'queryInput':{'text':{'text':_0x6d58c9[_0x2e0b('0x2c')][_0x2e0b('0x8')],'languageCode':_0x2ed9dd[0x3]||'en'}}};return _0xb1e2ab[_0x2e0b('0x2d')](_0x5b6ce6)['then'](function(_0x4853e2){if(_0x4853e2&&_0x4853e2[_0x2e0b('0x2e')]){_0x6d58c9['body'][_0x2e0b('0x2f')]=_0x4853e2;var _0x3cc8f7=_0x4853e2[0x0];var _0x1a4ea4=_0x3cc8f7[_0x2e0b('0x30')][_0x2e0b('0x31')]&&_0x3cc8f7[_0x2e0b('0x30')][_0x2e0b('0x31')]['fields']?_0x3cc8f7[_0x2e0b('0x30')]['diagnosticInfo']['fields'][_0x2e0b('0x32')][_0x2e0b('0x33')]:![];_0x6d58c9[_0x2e0b('0x8')]['DIALOGFLOWV2_ACTION']=_0x3cc8f7[_0x2e0b('0x30')]['action'];_0x6d58c9[_0x2e0b('0x8')][_0x2e0b('0x34')]=_0x3cc8f7[_0x2e0b('0x30')]['allRequiredParamsPresent'];_0x6d58c9['body']['DIALOGFLOWV2_ENDCONVERSATION']=_0x3cc8f7[_0x2e0b('0x30')][_0x2e0b('0x31')]&&_0x3cc8f7['queryResult'][_0x2e0b('0x31')][_0x2e0b('0x35')]?_0x3cc8f7['queryResult'][_0x2e0b('0x31')][_0x2e0b('0x35')][_0x2e0b('0x32')][_0x2e0b('0x33')]:![];_0x6d58c9[_0x2e0b('0x8')]['DIALOGFLOWV2_INTENTNAME']=_0x3cc8f7[_0x2e0b('0x30')][_0x2e0b('0x36')][_0x2e0b('0x37')];_0x6d58c9['body'][_0x2e0b('0x38')]=_0x3cc8f7[_0x2e0b('0x30')][_0x2e0b('0x36')][_0x2e0b('0x39')];_0x6d58c9[_0x2e0b('0x8')]['DIALOGFLOWV2_ISFALLBACKINTENT']=_0x3cc8f7[_0x2e0b('0x30')][_0x2e0b('0x36')]['isFallback'];_0x6d58c9[_0x2e0b('0x8')][_0x2e0b('0x3a')]=_0x3cc8f7[_0x2e0b('0x30')][_0x2e0b('0x3b')];_0x6d58c9['body'][_0x2e0b('0x3c')]=_0x3cc8f7[_0x2e0b('0x30')][_0x2e0b('0x3d')];_0x6d58c9[_0x2e0b('0x8')][_0x2e0b('0x3e')]=_0x3cc8f7['queryResult'][_0x2e0b('0x3f')];_0x3eb7d5[_0x2e0b('0x40')]=_0x2e0b('0x2f');_0x3eb7d5[_0x2e0b('0x41')]=JSON['stringify'](_0x4853e2);var _0x52ba82=[];for(var _0xbcac99=0x0;_0xbcac99<_0x4853e2[_0x2e0b('0x2e')];_0xbcac99++){var _0x3d751d=_0x4853e2[_0xbcac99];if(_0x3d751d&&_0x3d751d[_0x2e0b('0x30')]&&_0x3d751d['queryResult'][_0x2e0b('0x42')]){_0x52ba82[_0x2e0b('0x43')](createMessage(_0x3a6f30,_0x38d891,_0x3eb7d5,_0x3d751d['queryResult'][_0x2e0b('0x42')]));}}return Promise['all'](_0x52ba82)[_0x2e0b('0xa')](function(){if(_0x1a4ea4){_0x3fad6b[_0x2e0b('0x14')]();}else{_0x3fad6b[_0x2e0b('0x28')]();}})[_0x2e0b('0xd')](function(_0x598c57){logger['error']('[%s][DIALOGFLOWV2]\x20%s',_0x3a6f30,JSON[_0x2e0b('0xe')](_0x598c57));_0x3fad6b[_0x2e0b('0x14')]();});}})[_0x2e0b('0xd')](function(_0x36351f){logger[_0x2e0b('0x44')](_0x2e0b('0xc'),_0x3a6f30,_0x36351f[_0x2e0b('0x2c')],_0x36351f[_0x2e0b('0x45')]);_0x3fad6b[_0x2e0b('0x14')]();});}}catch(_0x58664d){logger['error'](_0x2e0b('0xc'),_0x3a6f30,JSON[_0x2e0b('0xe')](_0x58664d));_0x3fad6b[_0x2e0b('0x28')]();}};};
\ No newline at end of file
index 3832932..c6eb9d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x92a0=['string','condition\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','priority\x20true\x20is\x20a\x20number','priority\x20false\x20is\x20a\x20number','consequence','fromString','error','[%s][GOTOIF]\x20%s','join','condition','priorityTrue','priorityFalse','[%s][GOTOIF]\x20condition\x20%s\x20is\x20%s\x20try\x20goto\x20priority\x20%s','next','rules','info','[%s][GOTOIF]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','[%s][GOTOIF]\x20priority\x20%s\x20not\x20found','message','stop','stringify','validate','html-to-text','./utils','../../../../config/logger','routing'];(function(_0x35bf58,_0x320ba4){var _0x27e848=function(_0x1e07c1){while(--_0x1e07c1){_0x35bf58['push'](_0x35bf58['shift']());}};_0x27e848(++_0x320ba4);}(_0x92a0,0x13f));var _0x092a=function(_0x548483,_0x5e53ab){_0x548483=_0x548483-0x0;var _0x53afbd=_0x92a0[_0x548483];return _0x53afbd;};'use strict';var schema=require(_0x092a('0x0'));var _=require('lodash');var htmlToText=require(_0x092a('0x1'));var utils=require(_0x092a('0x2'));var logger=require(_0x092a('0x3'))(_0x092a('0x4'));var gotoif=schema({'condition':{'type':_0x092a('0x5'),'required':!![],'message':_0x092a('0x6')},'priorityTrue':{'type':_0x092a('0x7'),'message':_0x092a('0x8')},'priorityFalse':{'type':'number','message':_0x092a('0x9')}});exports[_0x092a('0xa')]=function(_0x446ff5,_0x29182f){return function(_0x4f36b2){try{var _0x2a0c6c={'condition':htmlToText[_0x092a('0xb')](utils['getMustacheRender'](_0x29182f[0x0],this),{'wordwrap':![]})['replace'](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0x29182f[0x1],'priorityFalse':_0x29182f[0x2]};var _0x2ead2b=gotoif['validate'](_0x2a0c6c,{'typecast':!![]});if(_0x2ead2b['length']){logger[_0x092a('0xc')](_0x092a('0xd'),_0x446ff5,_['map'](_0x2ead2b,'message')[_0x092a('0xe')](',\x20'));_0x4f36b2['stop']();}else{try{var _0x398d8a=eval('('+_0x2a0c6c[_0x092a('0xf')]+')');var _0x46b557=_0x398d8a?_0x2a0c6c[_0x092a('0x10')]:_0x2a0c6c[_0x092a('0x11')];logger['info'](_0x092a('0x12'),_0x446ff5,_0x2a0c6c[_0x092a('0xf')],_0x398d8a,_0x46b557||_0x092a('0x13'));if(_0x46b557){var _0x1ee3aa=_['findIndex'](_0x4f36b2[_0x092a('0x14')](),{'p':_0x46b557});if(_0x1ee3aa>=0x0){logger[_0x092a('0x15')](_0x092a('0x16'),_0x446ff5,_0x46b557||_0x092a('0x13'),_0x1ee3aa);_0x4f36b2[_0x092a('0x13')](_0x1ee3aa);}else{logger[_0x092a('0x15')](_0x092a('0x17'),_0x446ff5,_0x46b557||_0x092a('0x13'));_0x4f36b2['stop']();}}else{_0x4f36b2[_0x092a('0x13')]();}}catch(_0x1c1713){logger[_0x092a('0xc')]('[%s][GOTOIF]\x20eval\x20error:\x20%s',_0x446ff5,_0x1c1713[_0x092a('0x18')]);_0x4f36b2[_0x092a('0x19')]();}}}catch(_0x28efd8){logger['error'](_0x092a('0xd'),_0x446ff5,JSON[_0x092a('0x1a')](_0x28efd8));_0x4f36b2['stop']();}};};
\ No newline at end of file
+var _0xc52a=['validate','./utils','../../../../config/logger','routing','string','condition\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','priority\x20true\x20is\x20a\x20number','priority\x20false\x20is\x20a\x20number','consequence','fromString','getMustacheRender','replace','error','[%s][GOTOIF]\x20%s','message','stop','condition','priorityTrue','priorityFalse','[%s][GOTOIF]\x20condition\x20%s\x20is\x20%s\x20try\x20goto\x20priority\x20%s','next','rules','[%s][GOTOIF]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','info','[%s][GOTOIF]\x20priority\x20%s\x20not\x20found','[%s][GOTOIF]\x20eval\x20error:\x20%s','stringify'];(function(_0x52f271,_0x335ffb){var _0x5adc27=function(_0x38ee77){while(--_0x38ee77){_0x52f271['push'](_0x52f271['shift']());}};_0x5adc27(++_0x335ffb);}(_0xc52a,0x1a4));var _0xac52=function(_0x5e5d39,_0x45c2e9){_0x5e5d39=_0x5e5d39-0x0;var _0x499861=_0xc52a[_0x5e5d39];return _0x499861;};'use strict';var schema=require(_0xac52('0x0'));var _=require('lodash');var htmlToText=require('html-to-text');var utils=require(_0xac52('0x1'));var logger=require(_0xac52('0x2'))(_0xac52('0x3'));var gotoif=schema({'condition':{'type':_0xac52('0x4'),'required':!![],'message':_0xac52('0x5')},'priorityTrue':{'type':_0xac52('0x6'),'message':_0xac52('0x7')},'priorityFalse':{'type':'number','message':_0xac52('0x8')}});exports[_0xac52('0x9')]=function(_0x5687b1,_0x30c084){return function(_0x38c1b1){try{var _0x2aef56={'condition':htmlToText[_0xac52('0xa')](utils[_0xac52('0xb')](_0x30c084[0x0],this),{'wordwrap':![]})[_0xac52('0xc')](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0x30c084[0x1],'priorityFalse':_0x30c084[0x2]};var _0x48bb39=gotoif[_0xac52('0x0')](_0x2aef56,{'typecast':!![]});if(_0x48bb39['length']){logger[_0xac52('0xd')](_0xac52('0xe'),_0x5687b1,_['map'](_0x48bb39,_0xac52('0xf'))['join'](',\x20'));_0x38c1b1[_0xac52('0x10')]();}else{try{var _0x38d9be=eval('('+_0x2aef56[_0xac52('0x11')]+')');var _0x4403dc=_0x38d9be?_0x2aef56[_0xac52('0x12')]:_0x2aef56[_0xac52('0x13')];logger['info'](_0xac52('0x14'),_0x5687b1,_0x2aef56['condition'],_0x38d9be,_0x4403dc||_0xac52('0x15'));if(_0x4403dc){var _0x202ee0=_['findIndex'](_0x38c1b1[_0xac52('0x16')](),{'p':_0x4403dc});if(_0x202ee0>=0x0){logger['info'](_0xac52('0x17'),_0x5687b1,_0x4403dc||_0xac52('0x15'),_0x202ee0);_0x38c1b1[_0xac52('0x15')](_0x202ee0);}else{logger[_0xac52('0x18')](_0xac52('0x19'),_0x5687b1,_0x4403dc||_0xac52('0x15'));_0x38c1b1[_0xac52('0x10')]();}}else{_0x38c1b1['next']();}}catch(_0x16e117){logger['error'](_0xac52('0x1a'),_0x5687b1,_0x16e117[_0xac52('0xf')]);_0x38c1b1[_0xac52('0x10')]();}}}catch(_0x24207e){logger[_0xac52('0xd')](_0xac52('0xe'),_0x5687b1,JSON[_0xac52('0x1b')](_0x24207e));_0x38c1b1[_0xac52('0x10')]();}};};
\ No newline at end of file
index c59b70c..faa62e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd371=['lodash','../../../../config/logger','routing','priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required','consequence','validate','length','error','join','stop','info','[%s][GOTOP]\x20priority\x20%s','priority','findIndex','rules','[%s][GOTOP]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','next','[%s][GOTOP]\x20priority\x20%s\x20not\x20found','[%s][GOTOP]\x20%s','stringify'];(function(_0x4053bc,_0x1c5588){var _0x1d7f70=function(_0x3b6f66){while(--_0x3b6f66){_0x4053bc['push'](_0x4053bc['shift']());}};_0x1d7f70(++_0x1c5588);}(_0xd371,0x64));var _0x1d37=function(_0x41382c,_0xc3ffd1){_0x41382c=_0x41382c-0x0;var _0x4da35b=_0xd371[_0x41382c];return _0x4da35b;};'use strict';var schema=require('validate');var _=require(_0x1d37('0x0'));var logger=require(_0x1d37('0x1'))(_0x1d37('0x2'));var gotop=schema({'priority':{'type':'number','required':!![],'message':_0x1d37('0x3')}});exports[_0x1d37('0x4')]=function(_0x359413,_0x13f63e){return function(_0x1513f4){try{var _0x1e189e={'priority':_0x13f63e[0x0]};var _0x5939db=gotop[_0x1d37('0x5')](_0x1e189e,{'typecast':!![]});if(_0x5939db[_0x1d37('0x6')]){logger[_0x1d37('0x7')]('[%s][GOTOP]\x20%s',_0x359413,_['map'](_0x5939db,'message')[_0x1d37('0x8')](',\x20'));_0x1513f4[_0x1d37('0x9')]();}else{logger[_0x1d37('0xa')](_0x1d37('0xb'),_0x359413,_0x1e189e[_0x1d37('0xc')]);if(_0x1e189e['priority']){var _0x13bc80=_[_0x1d37('0xd')](_0x1513f4[_0x1d37('0xe')](),{'p':_0x1e189e[_0x1d37('0xc')]});if(_0x13bc80>=0x0){logger[_0x1d37('0xa')](_0x1d37('0xf'),_0x359413,_0x1e189e[_0x1d37('0xc')]||_0x1d37('0x10'),_0x13bc80);_0x1513f4[_0x1d37('0x10')](_0x13bc80);}else{logger[_0x1d37('0xa')](_0x1d37('0x11'),_0x359413,_0x1e189e[_0x1d37('0xc')]||_0x1d37('0x10'));_0x1513f4[_0x1d37('0x9')]();}}else{_0x1513f4[_0x1d37('0x10')]();}}}catch(_0x4100c7){logger[_0x1d37('0x7')](_0x1d37('0x12'),_0x359413,JSON[_0x1d37('0x13')](_0x4100c7));_0x1513f4['stop']();}};};
\ No newline at end of file
+var _0x13ee=['length','error','map','message','info','[%s][GOTOP]\x20priority\x20%s','priority','[%s][GOTOP]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','next','[%s][GOTOP]\x20priority\x20%s\x20not\x20found','stop','[%s][GOTOP]\x20%s','stringify','validate','lodash','../../../../config/logger','routing','number','priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required','consequence'];(function(_0x1d1963,_0x32cc0e){var _0x3f58bb=function(_0x514823){while(--_0x514823){_0x1d1963['push'](_0x1d1963['shift']());}};_0x3f58bb(++_0x32cc0e);}(_0x13ee,0x99));var _0xe13e=function(_0x33d4a2,_0x2baaf4){_0x33d4a2=_0x33d4a2-0x0;var _0x2c793f=_0x13ee[_0x33d4a2];return _0x2c793f;};'use strict';var schema=require(_0xe13e('0x0'));var _=require(_0xe13e('0x1'));var logger=require(_0xe13e('0x2'))(_0xe13e('0x3'));var gotop=schema({'priority':{'type':_0xe13e('0x4'),'required':!![],'message':_0xe13e('0x5')}});exports[_0xe13e('0x6')]=function(_0x5cd509,_0x42d805){return function(_0x11ed14){try{var _0x31d45e={'priority':_0x42d805[0x0]};var _0x508d1b=gotop[_0xe13e('0x0')](_0x31d45e,{'typecast':!![]});if(_0x508d1b[_0xe13e('0x7')]){logger[_0xe13e('0x8')]('[%s][GOTOP]\x20%s',_0x5cd509,_[_0xe13e('0x9')](_0x508d1b,_0xe13e('0xa'))['join'](',\x20'));_0x11ed14['stop']();}else{logger[_0xe13e('0xb')](_0xe13e('0xc'),_0x5cd509,_0x31d45e['priority']);if(_0x31d45e[_0xe13e('0xd')]){var _0x37f8aa=_['findIndex'](_0x11ed14['rules'](),{'p':_0x31d45e[_0xe13e('0xd')]});if(_0x37f8aa>=0x0){logger[_0xe13e('0xb')](_0xe13e('0xe'),_0x5cd509,_0x31d45e[_0xe13e('0xd')]||_0xe13e('0xf'),_0x37f8aa);_0x11ed14[_0xe13e('0xf')](_0x37f8aa);}else{logger[_0xe13e('0xb')](_0xe13e('0x10'),_0x5cd509,_0x31d45e['priority']||'next');_0x11ed14[_0xe13e('0x11')]();}}else{_0x11ed14[_0xe13e('0xf')]();}}}catch(_0x8e776a){logger[_0xe13e('0x8')](_0xe13e('0x12'),_0x5cd509,JSON[_0xe13e('0x13')](_0x8e776a));_0x11ed14[_0xe13e('0x11')]();}};};
\ No newline at end of file
index a5141a5..2472fbb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1527=['getMustacheRender','channel','chat','ChatWebsiteId','account','upperFirst','InteractionId','interaction','Message','create','then','body','next','catch','[%s][MESSAGE]\x20%s','stringify','stop','error','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/smsMessage','../../rpc/faxMessage','consequence'];(function(_0x2b1551,_0x1776fe){var _0x2fc2a1=function(_0x5d43c8){while(--_0x5d43c8){_0x2b1551['push'](_0x2b1551['shift']());}};_0x2fc2a1(++_0x1776fe);}(_0x1527,0xc1));var _0x7152=function(_0x2bcddb,_0x3eaf37){_0x2bcddb=_0x2bcddb-0x0;var _0x12a9e8=_0x1527[_0x2bcddb];return _0x12a9e8;};'use strict';var _=require('lodash');var utils=require(_0x7152('0x0'));var logger=require(_0x7152('0x1'))(_0x7152('0x2'));var rpc={'chatMessage':require(_0x7152('0x3')),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require(_0x7152('0x4')),'faxMessage':require(_0x7152('0x5')),'whatsappMessage':require('../../rpc/whatsappMessage')};exports[_0x7152('0x6')]=function(_0x44226e,_0x524660){return function(_0x46595a){try{var _0x59b4c8={'body':utils[_0x7152('0x7')](_0x524660[0x0],this),'ContactId':this['contact']['id']};if(this[_0x7152('0x8')]===_0x7152('0x9')){_0x59b4c8[_0x7152('0xa')]=this[_0x7152('0xb')]['id'];}else{_0x59b4c8[_[_0x7152('0xc')](this[_0x7152('0x8')])+'AccountId']=this[_0x7152('0xb')]['id'];}_0x59b4c8[_[_0x7152('0xc')](this[_0x7152('0x8')])+_0x7152('0xd')]=this[_0x7152('0xe')]['id'];if(rpc[this['channel']+_0x7152('0xf')]){return rpc[this[_0x7152('0x8')]+'Message'][_0x7152('0x10')](_0x59b4c8)[_0x7152('0x11')](function(_0x4b03a8){logger['info']('[%s][MESSAGE]\x20%s',_0x44226e,_0x59b4c8[_0x7152('0x12')]);_0x46595a[_0x7152('0x13')]();})[_0x7152('0x14')](function(_0x49d976){logger['error'](_0x7152('0x15'),_0x44226e,JSON[_0x7152('0x16')](_0x49d976));_0x46595a[_0x7152('0x17')]();});}}catch(_0x53315e){logger[_0x7152('0x18')](_0x7152('0x15'),_0x44226e,JSON['stringify'](_0x53315e));_0x46595a['stop']();}};};
\ No newline at end of file
+var _0xf8aa=['[%s][MESSAGE]\x20%s','body','next','catch','error','stringify','stop','lodash','routing','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','getMustacheRender','contact','channel','chat','ChatWebsiteId','upperFirst','AccountId','account','interaction','Message','create','then','info'];(function(_0x1d96e5,_0x38fff6){var _0x345df0=function(_0x5c6b08){while(--_0x5c6b08){_0x1d96e5['push'](_0x1d96e5['shift']());}};_0x345df0(++_0x38fff6);}(_0xf8aa,0x13b));var _0xaf8a=function(_0x173441,_0x26b0d9){_0x173441=_0x173441-0x0;var _0x2423a8=_0xf8aa[_0x173441];return _0x2423a8;};'use strict';var _=require(_0xaf8a('0x0'));var utils=require('./utils');var logger=require('../../../../config/logger')(_0xaf8a('0x1'));var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0xaf8a('0x2')),'mailMessage':require(_0xaf8a('0x3')),'smsMessage':require(_0xaf8a('0x4')),'faxMessage':require(_0xaf8a('0x5')),'whatsappMessage':require(_0xaf8a('0x6'))};exports[_0xaf8a('0x7')]=function(_0x33862d,_0x13e8f2){return function(_0xc63b84){try{var _0x2ce005={'body':utils[_0xaf8a('0x8')](_0x13e8f2[0x0],this),'ContactId':this[_0xaf8a('0x9')]['id']};if(this[_0xaf8a('0xa')]===_0xaf8a('0xb')){_0x2ce005[_0xaf8a('0xc')]=this['account']['id'];}else{_0x2ce005[_[_0xaf8a('0xd')](this[_0xaf8a('0xa')])+_0xaf8a('0xe')]=this[_0xaf8a('0xf')]['id'];}_0x2ce005[_[_0xaf8a('0xd')](this[_0xaf8a('0xa')])+'InteractionId']=this[_0xaf8a('0x10')]['id'];if(rpc[this[_0xaf8a('0xa')]+_0xaf8a('0x11')]){return rpc[this[_0xaf8a('0xa')]+_0xaf8a('0x11')][_0xaf8a('0x12')](_0x2ce005)[_0xaf8a('0x13')](function(_0x1eddc9){logger[_0xaf8a('0x14')](_0xaf8a('0x15'),_0x33862d,_0x2ce005[_0xaf8a('0x16')]);_0xc63b84[_0xaf8a('0x17')]();})[_0xaf8a('0x18')](function(_0xea21e8){logger[_0xaf8a('0x19')](_0xaf8a('0x15'),_0x33862d,JSON[_0xaf8a('0x1a')](_0xea21e8));_0xc63b84[_0xaf8a('0x1b')]();});}}catch(_0x51f661){logger[_0xaf8a('0x19')](_0xaf8a('0x15'),_0x33862d,JSON[_0xaf8a('0x1a')](_0x51f661));_0xc63b84[_0xaf8a('0x1b')]();}};};
\ No newline at end of file
index c58c519..b27eaeb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd18a=['../../../../config/logger','routing','consequence','getMustacheRender','stringify','./utils'];(function(_0x49aa62,_0x213c48){var _0xfffecb=function(_0x56f73d){while(--_0x56f73d){_0x49aa62['push'](_0x49aa62['shift']());}};_0xfffecb(++_0x213c48);}(_0xd18a,0xbf));var _0xad18=function(_0x2efc12,_0x144d91){_0x2efc12=_0x2efc12-0x0;var _0xf7ff6f=_0xd18a[_0x2efc12];return _0xf7ff6f;};'use strict';var utils=require(_0xad18('0x0'));var logger=require(_0xad18('0x1'))(_0xad18('0x2'));exports[_0xad18('0x3')]=function(_0x4f1d11,_0x1d427d){return function(_0x396720){try{logger['info']('[%s][NOOP]\x20%s',_0x4f1d11,utils[_0xad18('0x4')](_0x1d427d[0x0],this));_0x396720['next']();}catch(_0x2bc62a){logger['error']('[%s][NOOP]\x20%s',_0x4f1d11,JSON[_0xad18('0x5')](_0x2bc62a));_0x396720['stop']();}};};
\ No newline at end of file
+var _0x8769=['error','stringify','stop','./utils','../../../../config/logger','routing','consequence','info','[%s][NOOP]\x20%s','getMustacheRender'];(function(_0x4dbba7,_0x34d6d1){var _0x43ef83=function(_0x27acf1){while(--_0x27acf1){_0x4dbba7['push'](_0x4dbba7['shift']());}};_0x43ef83(++_0x34d6d1);}(_0x8769,0x11b));var _0x9876=function(_0x5a776b,_0x46f785){_0x5a776b=_0x5a776b-0x0;var _0xbbef59=_0x8769[_0x5a776b];return _0xbbef59;};'use strict';var utils=require(_0x9876('0x0'));var logger=require(_0x9876('0x1'))(_0x9876('0x2'));exports[_0x9876('0x3')]=function(_0x20ec81,_0x3b3527){return function(_0x339110){try{logger[_0x9876('0x4')](_0x9876('0x5'),_0x20ec81,utils[_0x9876('0x6')](_0x3b3527[0x0],this));_0x339110['next']();}catch(_0x988eba){logger[_0x9876('0x7')](_0x9876('0x5'),_0x20ec81,JSON[_0x9876('0x8')](_0x988eba));_0x339110[_0x9876('0x9')]();}};};
\ No newline at end of file
index 564bb28..6fab0ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a05=['emit','clone','push','capitalize','InteractionId','format','%sQueuesWaitingInteractions','%s:queue:%s','save','remove','pick','../../rpc/openchannelQueueReport','../../rpc/mailQueueReport','../../rpc/chatQueueReport','../../rpc/faxQueueReport','../../rpc/whatsappQueueReport','number','timeout\x20is\x20a\x20number','waiting','body','from','contact','list','upperFirst','QueueId','interaction','channel','MessageId','message','chat','WebsiteId','[%s][START:QUEUE][NAME:%s]','name','QueueReport','create','catch','error','create\x20queue\x20report','YYYY-MM-DD\x20HH:mm:ss','accepted','info','[%s][STOP:QUEUE][NAME:%s]','update\x20queue\x20report','[%s][END:QUEUE][NAME:%s]','toLowerCase','consequence','validate','length','[%s][QUEUE]\x20%s','map','stop','Queues','timeout','createQueue','atimeout','qtimeout','rules','end','close','complete','[%s][QUEUE]\x20APPLICATION\x20END','strategy','rrmemory','beepall','log','lodash','seq-queue','moment','../../../../config/environment','../../../../config/logger','routing','./strategy','defaults','redis','localhost','socket.io-emitter','queue_id','account','queue','joinAt'];(function(_0x37ea21,_0xa5926){var _0xe8e1d3=function(_0x4102ef){while(--_0x4102ef){_0x37ea21['push'](_0x37ea21['shift']());}};_0xe8e1d3(++_0xa5926);}(_0x2a05,0x181));var _0x52a0=function(_0x27cbd6,_0x547cd1){_0x27cbd6=_0x27cbd6-0x0;var _0xb0c928=_0x2a05[_0x27cbd6];return _0xb0c928;};'use strict';var schema=require('validate');var _=require(_0x52a0('0x0'));var util=require('util');var seqqueue=require(_0x52a0('0x1'));var moment=require(_0x52a0('0x2'));var Redis=require('ioredis');var config=require(_0x52a0('0x3'));var logger=require(_0x52a0('0x4'))(_0x52a0('0x5'));var strategy=require(_0x52a0('0x6'));config['redis']=_[_0x52a0('0x7')](config[_0x52a0('0x8')],{'host':_0x52a0('0x9'),'port':0x18eb});var io=require(_0x52a0('0xa'))(new Redis(config[_0x52a0('0x8')]));var attributes=['id',_0x52a0('0xb'),_0x52a0('0xc'),_0x52a0('0xd'),'from',_0x52a0('0xe')];function emit(_0x94915b,_0x46e0fc,_0x2e7dc3){io['to'](_0x94915b)[_0x52a0('0xf')](_0x46e0fc,_0x2e7dc3);}function emitChannelQueueInteraction(_0x4e87ce,_0x49b12c,_0x16b4a2,_0x2f6ab6,_0x48d8da,_0x5b1fbf,_0x4b170d,_0x3c9642){var _0x32db12=_[_0x52a0('0x10')](_0x16b4a2);_0x32db12[_0x52a0('0xb')]=_0x3c9642;_0x32db12['queue']=_0x49b12c;_0x32db12[_0x52a0('0xc')]=_0x2f6ab6;_0x32db12['id']=_0x48d8da;if(_0x5b1fbf){attributes[_0x52a0('0x11')](_[_0x52a0('0x12')](_0x4e87ce)+_0x52a0('0x13'));_0x4b170d[util[_0x52a0('0x14')](_0x52a0('0x15'),_0x4e87ce)][_0x48d8da]=_['pick'](_0x32db12,attributes);}else{delete _0x4b170d[util[_0x52a0('0x14')]('%sQueuesWaitingInteractions',_0x4e87ce)][_0x48d8da];}emit(util[_0x52a0('0x14')](_0x52a0('0x16'),_0x4e87ce,_0x49b12c),util[_0x52a0('0x14')]('%s_queue_waiting_interaction:%s',_0x4e87ce,_0x5b1fbf?_0x52a0('0x17'):_0x52a0('0x18')),_[_0x52a0('0x19')](_0x32db12,attributes));}var rpc={'openchannelQueueReport':require(_0x52a0('0x1a')),'mailQueueReport':require(_0x52a0('0x1b')),'chatQueueReport':require(_0x52a0('0x1c')),'smsQueueReport':require('../../rpc/smsQueueReport'),'faxQueueReport':require(_0x52a0('0x1d')),'whatsappQueueReport':require(_0x52a0('0x1e'))};var queue=schema({'name':{'type':'string','required':!![],'message':'name\x20is\x20a\x20string\x20and\x20it\x20is\x20required'},'timeout':{'type':_0x52a0('0x1f'),'message':_0x52a0('0x20')}});function startRouting(_0x14507a,_0x496e11,_0x4bfe4a,_0x5262e4){if(_0x14507a&&_0x496e11&&_0x4bfe4a){_0x496e11[_0x52a0('0x21')]+=0x1;var _0x20d53c={'uniqueid':_0x14507a,'from':_0x4bfe4a[_0x52a0('0x22')]?_0x4bfe4a['body'][_0x52a0('0x23')]:'','joinAt':moment()[_0x52a0('0x14')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x4bfe4a['contact']?_0x4bfe4a[_0x52a0('0x24')]['id']:null,'ListId':_0x4bfe4a[_0x52a0('0x25')]?_0x4bfe4a[_0x52a0('0x25')]['id']:null};_0x20d53c[_[_0x52a0('0x26')](_0x4bfe4a['channel'])+_0x52a0('0x27')]=_0x496e11['id']||null;_0x20d53c[_[_0x52a0('0x26')](_0x4bfe4a['channel'])+'InteractionId']=_0x4bfe4a[_0x52a0('0x28')]?_0x4bfe4a[_0x52a0('0x28')]['id']:null;_0x20d53c[_[_0x52a0('0x26')](_0x4bfe4a[_0x52a0('0x29')])+_0x52a0('0x2a')]=_0x4bfe4a[_0x52a0('0x2b')]?_0x4bfe4a[_0x52a0('0x2b')]['id']:null;_0x20d53c[_[_0x52a0('0x26')](_0x4bfe4a[_0x52a0('0x29')])+(_0x4bfe4a[_0x52a0('0x29')]!==_0x52a0('0x2c')?'AccountId':_0x52a0('0x2d'))]=_0x4bfe4a[_0x52a0('0xc')]?_0x4bfe4a[_0x52a0('0xc')]['id']:null;logger['info'](util[_0x52a0('0x14')](_0x52a0('0x2e'),_0x14507a,_0x496e11[_0x52a0('0x2f')]));emitChannelQueueInteraction(_0x4bfe4a['channel'],_0x496e11['name'],_0x20d53c,_0x4bfe4a[_0x52a0('0xc')]['name'],_0x4bfe4a[_0x52a0('0x2b')]['id'],!![],_0x5262e4,_0x496e11['id']);if(rpc[_0x4bfe4a[_0x52a0('0x29')]+_0x52a0('0x30')]){return rpc[_0x4bfe4a['channel']+_0x52a0('0x30')][_0x52a0('0x31')](_0x20d53c)[_0x52a0('0x32')](function(_0xff65c){logger[_0x52a0('0x33')](_0x52a0('0x34'));});}}}function stopRouting(_0x169f83,_0x3dfeb8,_0x67bba1,_0x190ff8){if(_0x169f83&&_0x3dfeb8){_0x3dfeb8['waiting']-=0x1;var _0x2471b3={'leaveAt':moment()[_0x52a0('0x14')](_0x52a0('0x35')),'acceptAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'reason':_0x52a0('0x36')};logger[_0x52a0('0x37')](util[_0x52a0('0x14')](_0x52a0('0x38'),_0x169f83,_0x3dfeb8[_0x52a0('0x2f')]));emitChannelQueueInteraction(_0x67bba1[_0x52a0('0x29')],_0x3dfeb8['name'],_0x67bba1[_0x52a0('0x22')],_0x67bba1['account'][_0x52a0('0x2f')],_0x67bba1[_0x52a0('0x2b')]['id'],![],_0x190ff8,_0x3dfeb8['id']);if(rpc[_0x67bba1[_0x52a0('0x29')]+'QueueReport']){return rpc[_0x67bba1[_0x52a0('0x29')]+'QueueReport']['update'](_0x169f83,_0x2471b3)['catch'](function(_0x35b42f){logger['error'](_0x52a0('0x39'));});}}}function endRouting(_0x2c13e2,_0x1c13bf,_0xabfad5,_0x54cff9){if(_0x2c13e2&&_0x1c13bf){_0x1c13bf[_0x52a0('0x21')]-=0x1;var _0x38d55d={'leaveAt':moment()[_0x52a0('0x14')](_0x52a0('0x35')),'exitAt':moment()[_0x52a0('0x14')](_0x52a0('0x35')),'reason':'timeout'};logger['info'](util[_0x52a0('0x14')](_0x52a0('0x3a'),_0x2c13e2,_0x1c13bf[_0x52a0('0x2f')]));emitChannelQueueInteraction(_0xabfad5[_0x52a0('0x29')],_0x1c13bf[_0x52a0('0x2f')],_0xabfad5[_0x52a0('0x22')],_0xabfad5[_0x52a0('0xc')][_0x52a0('0x2f')],_0xabfad5[_0x52a0('0x2b')]['id'],![],_0x54cff9);if(rpc[_0xabfad5[_0x52a0('0x29')]+_0x52a0('0x30')]){return rpc[_0xabfad5[_0x52a0('0x29')]+_0x52a0('0x30')]['update'](_0x2c13e2,_0x38d55d)[_0x52a0('0x32')](function(_0xead41e){logger[_0x52a0('0x33')](_0x52a0('0x39'));});}}}function handleFindQueue(_0x5b72ee){return function(_0x111982){return _0x111982[_0x52a0('0x2f')][_0x52a0('0x3b')]()===_0x5b72ee[_0x52a0('0x3b')]();};}exports[_0x52a0('0x3c')]=function(_0x11107c,_0x2dc886,_0xc988f8,_0x244f0d){return function(_0x16a235){try{var _0x3ab86a={'name':_0x2dc886[0x0],'timeout':_0x2dc886[0x1]};var _0x26acae=queue[_0x52a0('0x3d')](_0x3ab86a,{'typecast':!![]});if(_0x26acae[_0x52a0('0x3e')]){logger[_0x52a0('0x33')](_0x52a0('0x3f'),_0x11107c,_[_0x52a0('0x40')](_0x26acae,'message')['join'](',\x20'));_0x16a235[_0x52a0('0x41')]();}else{var _0x4e6cd9=_['find'](_0xc988f8[_0x244f0d[_0x52a0('0x29')]+_0x52a0('0x42')],handleFindQueue(_0x3ab86a[_0x52a0('0x2f')]));if(_0x4e6cd9){startRouting(_0x11107c,_0x4e6cd9,_0x244f0d,_0xc988f8);var _0x429a3b=(_0x4e6cd9['timeout']||0xa)*0x3e8;var _0x369412=(_0x3ab86a[_0x52a0('0x43')]||0x14)*0x3e8;var _0x38b8ce;if(_0x429a3b>_0x369412){_0x369412=_0x429a3b;}var _0xaf3e63=seqqueue[_0x52a0('0x44')](_0x429a3b);_0xaf3e63['id']=_0x11107c;_0xaf3e63[_0x52a0('0x45')]=_0x429a3b;_0xaf3e63[_0x52a0('0x46')]=_0x369412;_0xaf3e63[_0x52a0('0x29')]=_0x244f0d[_0x52a0('0x29')];_0xc988f8[_0x52a0('0x47')][_0x11107c]['on'](_0x52a0('0x48'),function(){logger['info']('[%s][QUEUE]\x20ROUTING\x20STOPPED',_0x11107c);stopRouting(_0x11107c,_0x4e6cd9,_0x244f0d,_0xc988f8);clearTimeout(_0x38b8ce);_0x38b8ce=undefined;_0xaf3e63[_0x52a0('0x49')](!![]);if(_0xc988f8[_0x52a0('0x47')][_0x11107c]){delete _0xc988f8['rules'][_0x11107c];}_0x16a235[_0x52a0('0x41')]();});_0xc988f8['rules'][_0x11107c]['on'](_0x52a0('0x4a'),function(){if(_0xc988f8[_0x52a0('0x47')][_0x11107c]){delete _0xc988f8['rules'][_0x11107c];}});_0x38b8ce=setTimeout(function(){logger[_0x52a0('0x37')](_0x52a0('0x4b'),_0x11107c);endRouting(_0x11107c,_0x4e6cd9,_0x244f0d,_0xc988f8);clearTimeout(_0x38b8ce);_0xaf3e63['close'](!![]);_0x16a235['next']();},_0x369412);switch(_0x4e6cd9[_0x52a0('0x4c')]){case'rrmemory':strategy[_0x52a0('0x4d')](_0xaf3e63,_0x4e6cd9,_0xc988f8,_0x244f0d);break;default:strategy[_0x52a0('0x4e')](_0xaf3e63,_0x4e6cd9,_0xc988f8,_0x244f0d);}}else{logger[_0x52a0('0x33')]('[%s][QUEUE]\x20queue\x20not\x20found\x20%s',_0x11107c,_0x3ab86a[_0x52a0('0x2f')]);_0x16a235[_0x52a0('0x41')]();}}}catch(_0x285ee6){console[_0x52a0('0x4f')](_0x285ee6);logger[_0x52a0('0x33')](_0x52a0('0x3f'),_0x11107c,_0x285ee6['stack']);_0x16a235[_0x52a0('0x41')]();}};};
\ No newline at end of file
+var _0x6f2e=['joinAt','emit','clone','push','InteractionId','format','%sQueuesWaitingInteractions','%s:queue:%s','%s_queue_waiting_interaction:%s','save','remove','pick','../../rpc/chatQueueReport','../../rpc/smsQueueReport','../../rpc/faxQueueReport','../../rpc/whatsappQueueReport','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','timeout\x20is\x20a\x20number','waiting','body','contact','list','channel','QueueId','upperFirst','interaction','MessageId','message','chat','WebsiteId','info','name','QueueReport','create','catch','error','YYYY-MM-DD\x20HH:mm:ss','accepted','[%s][STOP:QUEUE][NAME:%s]','update','update\x20queue\x20report','[%s][END:QUEUE][NAME:%s]','toLowerCase','consequence','validate','length','[%s][QUEUE]\x20%s','map','join','find','Queues','timeout','createQueue','atimeout','qtimeout','rules','end','[%s][QUEUE]\x20ROUTING\x20STOPPED','close','complete','[%s][QUEUE]\x20APPLICATION\x20END','next','strategy','rrmemory','beepall','stack','lodash','moment','ioredis','../../../../config/environment','routing','redis','defaults','localhost','socket.io-emitter','queue_id','account','queue','from'];(function(_0x35f7dd,_0x4140bb){var _0x2c8d58=function(_0x376459){while(--_0x376459){_0x35f7dd['push'](_0x35f7dd['shift']());}};_0x2c8d58(++_0x4140bb);}(_0x6f2e,0xe3));var _0xe6f2=function(_0x3a623a,_0x2c8276){_0x3a623a=_0x3a623a-0x0;var _0x4a7107=_0x6f2e[_0x3a623a];return _0x4a7107;};'use strict';var schema=require('validate');var _=require(_0xe6f2('0x0'));var util=require('util');var seqqueue=require('seq-queue');var moment=require(_0xe6f2('0x1'));var Redis=require(_0xe6f2('0x2'));var config=require(_0xe6f2('0x3'));var logger=require('../../../../config/logger')(_0xe6f2('0x4'));var strategy=require('./strategy');config[_0xe6f2('0x5')]=_[_0xe6f2('0x6')](config[_0xe6f2('0x5')],{'host':_0xe6f2('0x7'),'port':0x18eb});var io=require(_0xe6f2('0x8'))(new Redis(config[_0xe6f2('0x5')]));var attributes=['id',_0xe6f2('0x9'),_0xe6f2('0xa'),_0xe6f2('0xb'),_0xe6f2('0xc'),_0xe6f2('0xd')];function emit(_0x3c173e,_0xcb54f9,_0x54547d){io['to'](_0x3c173e)[_0xe6f2('0xe')](_0xcb54f9,_0x54547d);}function emitChannelQueueInteraction(_0x3d1b59,_0x29ffb0,_0x275007,_0x15601c,_0x27f7a3,_0x33069f,_0x3518c3,_0x3354cd){var _0x1a2366=_[_0xe6f2('0xf')](_0x275007);_0x1a2366[_0xe6f2('0x9')]=_0x3354cd;_0x1a2366[_0xe6f2('0xb')]=_0x29ffb0;_0x1a2366[_0xe6f2('0xa')]=_0x15601c;_0x1a2366['id']=_0x27f7a3;if(_0x33069f){attributes[_0xe6f2('0x10')](_['capitalize'](_0x3d1b59)+_0xe6f2('0x11'));_0x3518c3[util[_0xe6f2('0x12')](_0xe6f2('0x13'),_0x3d1b59)][_0x27f7a3]=_['pick'](_0x1a2366,attributes);}else{delete _0x3518c3[util[_0xe6f2('0x12')]('%sQueuesWaitingInteractions',_0x3d1b59)][_0x27f7a3];}emit(util[_0xe6f2('0x12')](_0xe6f2('0x14'),_0x3d1b59,_0x29ffb0),util[_0xe6f2('0x12')](_0xe6f2('0x15'),_0x3d1b59,_0x33069f?_0xe6f2('0x16'):_0xe6f2('0x17')),_[_0xe6f2('0x18')](_0x1a2366,attributes));}var rpc={'openchannelQueueReport':require('../../rpc/openchannelQueueReport'),'mailQueueReport':require('../../rpc/mailQueueReport'),'chatQueueReport':require(_0xe6f2('0x19')),'smsQueueReport':require(_0xe6f2('0x1a')),'faxQueueReport':require(_0xe6f2('0x1b')),'whatsappQueueReport':require(_0xe6f2('0x1c'))};var queue=schema({'name':{'type':'string','required':!![],'message':_0xe6f2('0x1d')},'timeout':{'type':_0xe6f2('0x1e'),'message':_0xe6f2('0x1f')}});function startRouting(_0x1b09c5,_0x5c352b,_0x4829b9,_0x1ab7eb){if(_0x1b09c5&&_0x5c352b&&_0x4829b9){_0x5c352b[_0xe6f2('0x20')]+=0x1;var _0x3eee85={'uniqueid':_0x1b09c5,'from':_0x4829b9[_0xe6f2('0x21')]?_0x4829b9[_0xe6f2('0x21')][_0xe6f2('0xc')]:'','joinAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x4829b9[_0xe6f2('0x22')]?_0x4829b9[_0xe6f2('0x22')]['id']:null,'ListId':_0x4829b9[_0xe6f2('0x23')]?_0x4829b9['list']['id']:null};_0x3eee85[_['upperFirst'](_0x4829b9[_0xe6f2('0x24')])+_0xe6f2('0x25')]=_0x5c352b['id']||null;_0x3eee85[_[_0xe6f2('0x26')](_0x4829b9[_0xe6f2('0x24')])+'InteractionId']=_0x4829b9[_0xe6f2('0x27')]?_0x4829b9['interaction']['id']:null;_0x3eee85[_[_0xe6f2('0x26')](_0x4829b9['channel'])+_0xe6f2('0x28')]=_0x4829b9[_0xe6f2('0x29')]?_0x4829b9[_0xe6f2('0x29')]['id']:null;_0x3eee85[_['upperFirst'](_0x4829b9[_0xe6f2('0x24')])+(_0x4829b9['channel']!==_0xe6f2('0x2a')?'AccountId':_0xe6f2('0x2b'))]=_0x4829b9[_0xe6f2('0xa')]?_0x4829b9[_0xe6f2('0xa')]['id']:null;logger[_0xe6f2('0x2c')](util[_0xe6f2('0x12')]('[%s][START:QUEUE][NAME:%s]',_0x1b09c5,_0x5c352b[_0xe6f2('0x2d')]));emitChannelQueueInteraction(_0x4829b9[_0xe6f2('0x24')],_0x5c352b[_0xe6f2('0x2d')],_0x3eee85,_0x4829b9[_0xe6f2('0xa')][_0xe6f2('0x2d')],_0x4829b9[_0xe6f2('0x29')]['id'],!![],_0x1ab7eb,_0x5c352b['id']);if(rpc[_0x4829b9[_0xe6f2('0x24')]+_0xe6f2('0x2e')]){return rpc[_0x4829b9[_0xe6f2('0x24')]+_0xe6f2('0x2e')][_0xe6f2('0x2f')](_0x3eee85)[_0xe6f2('0x30')](function(_0x2d9399){logger[_0xe6f2('0x31')]('create\x20queue\x20report');});}}}function stopRouting(_0x9e5851,_0xfd9167,_0x4d87e7,_0x20ecf9){if(_0x9e5851&&_0xfd9167){_0xfd9167[_0xe6f2('0x20')]-=0x1;var _0x25a0ec={'leaveAt':moment()['format'](_0xe6f2('0x32')),'acceptAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'reason':_0xe6f2('0x33')};logger[_0xe6f2('0x2c')](util[_0xe6f2('0x12')](_0xe6f2('0x34'),_0x9e5851,_0xfd9167[_0xe6f2('0x2d')]));emitChannelQueueInteraction(_0x4d87e7[_0xe6f2('0x24')],_0xfd9167[_0xe6f2('0x2d')],_0x4d87e7[_0xe6f2('0x21')],_0x4d87e7['account'][_0xe6f2('0x2d')],_0x4d87e7[_0xe6f2('0x29')]['id'],![],_0x20ecf9,_0xfd9167['id']);if(rpc[_0x4d87e7[_0xe6f2('0x24')]+_0xe6f2('0x2e')]){return rpc[_0x4d87e7['channel']+_0xe6f2('0x2e')][_0xe6f2('0x35')](_0x9e5851,_0x25a0ec)[_0xe6f2('0x30')](function(_0x485e2f){logger['error'](_0xe6f2('0x36'));});}}}function endRouting(_0x5b26bf,_0x5721cd,_0x24ccce,_0x28d368){if(_0x5b26bf&&_0x5721cd){_0x5721cd['waiting']-=0x1;var _0x2aede5={'leaveAt':moment()[_0xe6f2('0x12')](_0xe6f2('0x32')),'exitAt':moment()[_0xe6f2('0x12')]('YYYY-MM-DD\x20HH:mm:ss'),'reason':'timeout'};logger[_0xe6f2('0x2c')](util[_0xe6f2('0x12')](_0xe6f2('0x37'),_0x5b26bf,_0x5721cd[_0xe6f2('0x2d')]));emitChannelQueueInteraction(_0x24ccce['channel'],_0x5721cd[_0xe6f2('0x2d')],_0x24ccce[_0xe6f2('0x21')],_0x24ccce['account']['name'],_0x24ccce['message']['id'],![],_0x28d368);if(rpc[_0x24ccce['channel']+'QueueReport']){return rpc[_0x24ccce['channel']+'QueueReport'][_0xe6f2('0x35')](_0x5b26bf,_0x2aede5)[_0xe6f2('0x30')](function(_0x2b750f){logger[_0xe6f2('0x31')](_0xe6f2('0x36'));});}}}function handleFindQueue(_0x29d297){return function(_0x435289){return _0x435289[_0xe6f2('0x2d')][_0xe6f2('0x38')]()===_0x29d297['toLowerCase']();};}exports[_0xe6f2('0x39')]=function(_0x47e8e0,_0x504bac,_0xc80427,_0x41a4a4){return function(_0x3b4b7b){try{var _0x3b9df3={'name':_0x504bac[0x0],'timeout':_0x504bac[0x1]};var _0x1360e8=queue[_0xe6f2('0x3a')](_0x3b9df3,{'typecast':!![]});if(_0x1360e8[_0xe6f2('0x3b')]){logger['error'](_0xe6f2('0x3c'),_0x47e8e0,_[_0xe6f2('0x3d')](_0x1360e8,_0xe6f2('0x29'))[_0xe6f2('0x3e')](',\x20'));_0x3b4b7b['stop']();}else{var _0x4ae8a9=_[_0xe6f2('0x3f')](_0xc80427[_0x41a4a4['channel']+_0xe6f2('0x40')],handleFindQueue(_0x3b9df3[_0xe6f2('0x2d')]));if(_0x4ae8a9){startRouting(_0x47e8e0,_0x4ae8a9,_0x41a4a4,_0xc80427);var _0x472101=(_0x4ae8a9[_0xe6f2('0x41')]||0xa)*0x3e8;var _0x529382=(_0x3b9df3[_0xe6f2('0x41')]||0x14)*0x3e8;var _0x2b2bc3;if(_0x472101>_0x529382){_0x529382=_0x472101;}var _0x44d891=seqqueue[_0xe6f2('0x42')](_0x472101);_0x44d891['id']=_0x47e8e0;_0x44d891[_0xe6f2('0x43')]=_0x472101;_0x44d891[_0xe6f2('0x44')]=_0x529382;_0x44d891[_0xe6f2('0x24')]=_0x41a4a4[_0xe6f2('0x24')];_0xc80427[_0xe6f2('0x45')][_0x47e8e0]['on'](_0xe6f2('0x46'),function(){logger[_0xe6f2('0x2c')](_0xe6f2('0x47'),_0x47e8e0);stopRouting(_0x47e8e0,_0x4ae8a9,_0x41a4a4,_0xc80427);clearTimeout(_0x2b2bc3);_0x2b2bc3=undefined;_0x44d891[_0xe6f2('0x48')](!![]);if(_0xc80427['rules'][_0x47e8e0]){delete _0xc80427[_0xe6f2('0x45')][_0x47e8e0];}_0x3b4b7b['stop']();});_0xc80427[_0xe6f2('0x45')][_0x47e8e0]['on'](_0xe6f2('0x49'),function(){if(_0xc80427['rules'][_0x47e8e0]){delete _0xc80427[_0xe6f2('0x45')][_0x47e8e0];}});_0x2b2bc3=setTimeout(function(){logger[_0xe6f2('0x2c')](_0xe6f2('0x4a'),_0x47e8e0);endRouting(_0x47e8e0,_0x4ae8a9,_0x41a4a4,_0xc80427);clearTimeout(_0x2b2bc3);_0x44d891[_0xe6f2('0x48')](!![]);_0x3b4b7b[_0xe6f2('0x4b')]();},_0x529382);switch(_0x4ae8a9[_0xe6f2('0x4c')]){case _0xe6f2('0x4d'):strategy[_0xe6f2('0x4d')](_0x44d891,_0x4ae8a9,_0xc80427,_0x41a4a4);break;default:strategy[_0xe6f2('0x4e')](_0x44d891,_0x4ae8a9,_0xc80427,_0x41a4a4);}}else{logger[_0xe6f2('0x31')]('[%s][QUEUE]\x20queue\x20not\x20found\x20%s',_0x47e8e0,_0x3b9df3[_0xe6f2('0x2d')]);_0x3b4b7b['stop']();}}}catch(_0x289ba7){console['log'](_0x289ba7);logger['error'](_0xe6f2('0x3c'),_0x47e8e0,_0x289ba7[_0xe6f2('0x4f')]);_0x3b4b7b['stop']();}};};
\ No newline at end of file
index 698cb7c..03799c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c4e=['isNil','agents','[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s','forcedOwnership','isAgentAvailable','busy','busyQueue','saveWaitingNotification','channel','showNotification','writeLog','[%s][AGENT]\x20timeout\x20with\x20%s','hideNotification','notificationId','removeWaitingNotification','STOP','TIMEOUT','exports','lodash','./util','../../../../../config/logger','routing','squeue','realtime','push','handleRun','bind','handleTimeout','drained','handleDrained','debug','agent'];(function(_0xdf40c5,_0x2f127d){var _0x7e0b0e=function(_0x3cf57a){while(--_0x3cf57a){_0xdf40c5['push'](_0xdf40c5['shift']());}};_0x7e0b0e(++_0x2f127d);}(_0x4c4e,0x152));var _0xe4c4=function(_0x156a71,_0x1be7d2){_0x156a71=_0x156a71-0x0;var _0x2648e2=_0x4c4e[_0x156a71];return _0x2648e2;};'use strict';var _=require(_0xe4c4('0x0'));var uuid=require('uuid');var util=require(_0xe4c4('0x1'));var logger=require(_0xe4c4('0x2'))(_0xe4c4('0x3'));var Agent=function(_0x58c8f6,_0x1b6c91,_0x7d7655,_0x1a4483){this['notificationId']=uuid['v4']();this[_0xe4c4('0x4')]=_0x58c8f6;this['agent']=_0x1b6c91;this[_0xe4c4('0x5')]=_0x7d7655;this[_0xe4c4('0x3')]=_0x1a4483;this[_0xe4c4('0x4')][_0xe4c4('0x6')](this[_0xe4c4('0x7')][_0xe4c4('0x8')](this),this[_0xe4c4('0x9')][_0xe4c4('0x8')](this));this['squeue']['on']('timeout',this[_0xe4c4('0x9')][_0xe4c4('0x8')](this));this[_0xe4c4('0x4')]['on'](_0xe4c4('0xa'),this[_0xe4c4('0xb')][_0xe4c4('0x8')](this));};Agent['prototype'][_0xe4c4('0x6')]=function(){this[_0xe4c4('0x4')][_0xe4c4('0x6')](this[_0xe4c4('0x7')]['bind'](this),this[_0xe4c4('0x9')][_0xe4c4('0x8')](this));};Agent['prototype'][_0xe4c4('0xb')]=function(){this[_0xe4c4('0x9')](!![]);};Agent['prototype'][_0xe4c4('0x7')]=function(){logger[_0xe4c4('0xc')]('[%s][AGENT]\x20try\x20with\x20%s',this[_0xe4c4('0x4')]['id'],this[_0xe4c4('0xd')]['id']);if(_[_0xe4c4('0xe')](this[_0xe4c4('0x5')][_0xe4c4('0xf')][this[_0xe4c4('0xd')]['id']])){logger[_0xe4c4('0xc')](_0xe4c4('0x10'),this[_0xe4c4('0x4')]['id'],this[_0xe4c4('0xd')]['id']);setTimeout(this[_0xe4c4('0x6')][_0xe4c4('0x8')](this),0x3e8);}else{if(this[_0xe4c4('0x3')][_0xe4c4('0x11')]||util[_0xe4c4('0x12')](this['squeue']['id'],this[_0xe4c4('0x5')][_0xe4c4('0xf')][this[_0xe4c4('0xd')]['id']],this[_0xe4c4('0x4')]['channel'],![])){this[_0xe4c4('0x5')][_0xe4c4('0xf')][this[_0xe4c4('0xd')]['id']][_0xe4c4('0x13')]=!![];this[_0xe4c4('0x5')][_0xe4c4('0xf')][this[_0xe4c4('0xd')]['id']][_0xe4c4('0x14')]=undefined;util[_0xe4c4('0x15')](this[_0xe4c4('0x5')],this[_0xe4c4('0x3')],this[_0xe4c4('0xd')],this[_0xe4c4('0x4')][_0xe4c4('0x16')]);util[_0xe4c4('0x17')](this['notificationId'],this['squeue']['id'],this[_0xe4c4('0x5')]['agents'][this[_0xe4c4('0xd')]['id']],null,this['routing']);util[_0xe4c4('0x18')](this['squeue']['id'],this[_0xe4c4('0x5')]['agents'][this[_0xe4c4('0xd')]['id']],'RINGING'+(this['routing']['forcedOwnership']?':FORCED':''));}else{logger[_0xe4c4('0xc')]('[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available',this['squeue']['id'],this[_0xe4c4('0xd')]['id']);setTimeout(this[_0xe4c4('0x6')]['bind'](this),0x3e8);}}};Agent['prototype'][_0xe4c4('0x9')]=function(_0x33de43){if(_['isNil'](this[_0xe4c4('0x5')][_0xe4c4('0xf')][this[_0xe4c4('0xd')]['id']])){return logger['debug']('[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0xe4c4('0x4')]['id'],this[_0xe4c4('0xd')]['id']);}else{logger[_0xe4c4('0xc')](_0xe4c4('0x19'),this['squeue']['id'],this['agent']['id']);util[_0xe4c4('0x1a')](this[_0xe4c4('0x1b')],this['squeue']['id'],this[_0xe4c4('0x5')][_0xe4c4('0xf')][this[_0xe4c4('0xd')]['id']],null,this['routing']);this[_0xe4c4('0x5')]['agents'][this[_0xe4c4('0xd')]['id']][_0xe4c4('0x13')]=![];this[_0xe4c4('0x5')][_0xe4c4('0xf')][this[_0xe4c4('0xd')]['id']][_0xe4c4('0x14')]=undefined;util[_0xe4c4('0x1c')](this[_0xe4c4('0x5')],this[_0xe4c4('0x3')],this[_0xe4c4('0xd')],this[_0xe4c4('0x4')][_0xe4c4('0x16')]);util['writeLog'](this[_0xe4c4('0x4')]['id'],this[_0xe4c4('0x5')][_0xe4c4('0xf')][this['agent']['id']],_0x33de43?_0xe4c4('0x1d'):_0xe4c4('0x1e'));}if(!_0x33de43){setTimeout(this[_0xe4c4('0x6')]['bind'](this),0x3e8);}};function agent(_0x4622cc,_0xa2e734,_0x4a3644,_0x1de955){return new Agent(_0x4622cc,_0xa2e734,_0x4a3644,_0x1de955);}module[_0xe4c4('0x1f')]=agent;
\ No newline at end of file
+var _0x0faf=['showNotification','writeLog','RINGING','[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available','[%s][AGENT]\x20timeout\x20with\x20%s','removeWaitingNotification','STOP','TIMEOUT','exports','lodash','./util','../../../../../config/logger','routing','notificationId','squeue','realtime','push','handleRun','handleTimeout','bind','drained','handleDrained','prototype','[%s][AGENT]\x20try\x20with\x20%s','agent','isNil','agents','debug','forcedOwnership','channel','busy','busyQueue','saveWaitingNotification'];(function(_0x1f6fa2,_0x417ac0){var _0x4673b6=function(_0x516cd3){while(--_0x516cd3){_0x1f6fa2['push'](_0x1f6fa2['shift']());}};_0x4673b6(++_0x417ac0);}(_0x0faf,0x132));var _0xf0fa=function(_0x16af15,_0x55bc76){_0x16af15=_0x16af15-0x0;var _0xfeda8a=_0x0faf[_0x16af15];return _0xfeda8a;};'use strict';var _=require(_0xf0fa('0x0'));var uuid=require('uuid');var util=require(_0xf0fa('0x1'));var logger=require(_0xf0fa('0x2'))(_0xf0fa('0x3'));var Agent=function(_0x35a260,_0xccb93e,_0xdc9ce3,_0x515b12){this[_0xf0fa('0x4')]=uuid['v4']();this[_0xf0fa('0x5')]=_0x35a260;this['agent']=_0xccb93e;this[_0xf0fa('0x6')]=_0xdc9ce3;this[_0xf0fa('0x3')]=_0x515b12;this[_0xf0fa('0x5')][_0xf0fa('0x7')](this[_0xf0fa('0x8')]['bind'](this),this[_0xf0fa('0x9')][_0xf0fa('0xa')](this));this['squeue']['on']('timeout',this[_0xf0fa('0x9')][_0xf0fa('0xa')](this));this[_0xf0fa('0x5')]['on'](_0xf0fa('0xb'),this[_0xf0fa('0xc')][_0xf0fa('0xa')](this));};Agent[_0xf0fa('0xd')][_0xf0fa('0x7')]=function(){this['squeue'][_0xf0fa('0x7')](this['handleRun'][_0xf0fa('0xa')](this),this['handleTimeout'][_0xf0fa('0xa')](this));};Agent[_0xf0fa('0xd')][_0xf0fa('0xc')]=function(){this['handleTimeout'](!![]);};Agent['prototype'][_0xf0fa('0x8')]=function(){logger['debug'](_0xf0fa('0xe'),this[_0xf0fa('0x5')]['id'],this[_0xf0fa('0xf')]['id']);if(_[_0xf0fa('0x10')](this[_0xf0fa('0x6')][_0xf0fa('0x11')][this[_0xf0fa('0xf')]['id']])){logger[_0xf0fa('0x12')]('[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0xf0fa('0x5')]['id'],this[_0xf0fa('0xf')]['id']);setTimeout(this[_0xf0fa('0x7')][_0xf0fa('0xa')](this),0x3e8);}else{if(this[_0xf0fa('0x3')][_0xf0fa('0x13')]||util['isAgentAvailable'](this['squeue']['id'],this[_0xf0fa('0x6')][_0xf0fa('0x11')][this[_0xf0fa('0xf')]['id']],this[_0xf0fa('0x5')][_0xf0fa('0x14')],![])){this[_0xf0fa('0x6')][_0xf0fa('0x11')][this[_0xf0fa('0xf')]['id']][_0xf0fa('0x15')]=!![];this[_0xf0fa('0x6')][_0xf0fa('0x11')][this['agent']['id']][_0xf0fa('0x16')]=undefined;util[_0xf0fa('0x17')](this[_0xf0fa('0x6')],this[_0xf0fa('0x3')],this[_0xf0fa('0xf')],this[_0xf0fa('0x5')][_0xf0fa('0x14')]);util[_0xf0fa('0x18')](this[_0xf0fa('0x4')],this['squeue']['id'],this[_0xf0fa('0x6')][_0xf0fa('0x11')][this['agent']['id']],null,this[_0xf0fa('0x3')]);util[_0xf0fa('0x19')](this[_0xf0fa('0x5')]['id'],this['realtime'][_0xf0fa('0x11')][this[_0xf0fa('0xf')]['id']],_0xf0fa('0x1a')+(this[_0xf0fa('0x3')]['forcedOwnership']?':FORCED':''));}else{logger[_0xf0fa('0x12')](_0xf0fa('0x1b'),this[_0xf0fa('0x5')]['id'],this[_0xf0fa('0xf')]['id']);setTimeout(this['push'][_0xf0fa('0xa')](this),0x3e8);}}};Agent[_0xf0fa('0xd')][_0xf0fa('0x9')]=function(_0x5a4fd3){if(_[_0xf0fa('0x10')](this['realtime'][_0xf0fa('0x11')][this[_0xf0fa('0xf')]['id']])){return logger[_0xf0fa('0x12')]('[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0xf0fa('0x5')]['id'],this[_0xf0fa('0xf')]['id']);}else{logger[_0xf0fa('0x12')](_0xf0fa('0x1c'),this[_0xf0fa('0x5')]['id'],this[_0xf0fa('0xf')]['id']);util['hideNotification'](this['notificationId'],this[_0xf0fa('0x5')]['id'],this[_0xf0fa('0x6')]['agents'][this[_0xf0fa('0xf')]['id']],null,this['routing']);this['realtime']['agents'][this[_0xf0fa('0xf')]['id']]['busy']=![];this[_0xf0fa('0x6')][_0xf0fa('0x11')][this[_0xf0fa('0xf')]['id']][_0xf0fa('0x16')]=undefined;util[_0xf0fa('0x1d')](this[_0xf0fa('0x6')],this[_0xf0fa('0x3')],this[_0xf0fa('0xf')],this['squeue'][_0xf0fa('0x14')]);util[_0xf0fa('0x19')](this[_0xf0fa('0x5')]['id'],this['realtime'][_0xf0fa('0x11')][this[_0xf0fa('0xf')]['id']],_0x5a4fd3?_0xf0fa('0x1e'):_0xf0fa('0x1f'));}if(!_0x5a4fd3){setTimeout(this['push']['bind'](this),0x3e8);}};function agent(_0x2a9f4b,_0x68b3fe,_0x2a6560,_0x47486f){return new Agent(_0x2a9f4b,_0x68b3fe,_0x2a6560,_0x47486f);}module[_0xf0fa('0x20')]=agent;
\ No newline at end of file
index ca5941c..5e573dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x98e0=['lodash','../../../../../config/logger','routing','squeue','queue','realtime','push','bind','handleTimeout','handleDrained','prototype','handleRun','isNil','Agents','length','agents','debug','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','isAgentAvailable','channel','writeLog','RINGING','name','saveWaitingNotification','[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY','hideNotification','notificationId','STOP','TIMEOUT','busy','busyQueue','removeWaitingNotification','exports'];(function(_0x1da8c6,_0x39c9b0){var _0x1bca9b=function(_0x5228a4){while(--_0x5228a4){_0x1da8c6['push'](_0x1da8c6['shift']());}};_0x1bca9b(++_0x39c9b0);}(_0x98e0,0xa5));var _0x098e=function(_0x64f006,_0x5a8759){_0x64f006=_0x64f006-0x0;var _0x4bfc1f=_0x98e0[_0x64f006];return _0x4bfc1f;};'use strict';var _=require(_0x098e('0x0'));var uuid=require('uuid');var util=require('./util');var logger=require(_0x098e('0x1'))(_0x098e('0x2'));var Beepall=function(_0x50bcba,_0x200f9f,_0xfa0f44,_0x35eaac){this['notificationId']=uuid['v4']();this[_0x098e('0x3')]=_0x50bcba;this[_0x098e('0x4')]=_0x200f9f;this[_0x098e('0x5')]=_0xfa0f44;this['routing']=_0x35eaac;this[_0x098e('0x3')][_0x098e('0x6')](this['handleRun'][_0x098e('0x7')](this),this[_0x098e('0x8')][_0x098e('0x7')](this));this[_0x098e('0x3')]['on']('timeout',this[_0x098e('0x8')][_0x098e('0x7')](this));this[_0x098e('0x3')]['on']('drained',this[_0x098e('0x9')][_0x098e('0x7')](this));};Beepall[_0x098e('0xa')][_0x098e('0x6')]=function(){this[_0x098e('0x3')][_0x098e('0x6')](this[_0x098e('0xb')][_0x098e('0x7')](this),this[_0x098e('0x8')][_0x098e('0x7')](this));};Beepall[_0x098e('0xa')][_0x098e('0x9')]=function(){this[_0x098e('0x8')](!![]);};Beepall[_0x098e('0xa')]['handleRun']=function(){var _0x42ab32=!![];if(!_[_0x098e('0xc')](this[_0x098e('0x4')])&&!_[_0x098e('0xc')](this[_0x098e('0x4')][_0x098e('0xd')])&&this['queue'][_0x098e('0xd')][_0x098e('0xe')]>0x0){for(var _0x34b137=0x0,_0x189248;_0x34b137<this[_0x098e('0x4')][_0x098e('0xd')][_0x098e('0xe')];_0x34b137+=0x1){_0x189248=this[_0x098e('0x4')]['Agents'][_0x34b137]['id'];if(_[_0x098e('0xc')](this[_0x098e('0x5')][_0x098e('0xf')][_0x189248])){logger[_0x098e('0x10')](_0x098e('0x11'),this[_0x098e('0x3')]['id'],_0x189248);}else{if(util[_0x098e('0x12')](this[_0x098e('0x3')]['id'],this[_0x098e('0x5')][_0x098e('0xf')][_0x189248],this[_0x098e('0x3')][_0x098e('0x13')],!![])){_0x42ab32=![];util[_0x098e('0x14')](this[_0x098e('0x3')]['id'],this[_0x098e('0x5')]['agents'][_0x189248],_0x098e('0x15'));this[_0x098e('0x5')][_0x098e('0xf')][_0x189248]['busy']=!![];this[_0x098e('0x5')][_0x098e('0xf')][_0x189248]['busyQueue']=this['queue'][_0x098e('0x16')];util[_0x098e('0x17')](this['realtime'],this['routing'],this[_0x098e('0x4')][_0x098e('0xd')][_0x34b137],this[_0x098e('0x3')][_0x098e('0x13')]);util['showNotification'](this['notificationId'],this[_0x098e('0x3')]['id'],this['realtime'][_0x098e('0xf')][_0x189248],this[_0x098e('0x4')],this[_0x098e('0x2')]);}}}if(_0x42ab32){logger['debug'](_0x098e('0x18'),this[_0x098e('0x3')]['id']);setTimeout(this['push']['bind'](this),0x3e8);}}else{logger['debug']('[%s][QUEUE]\x20EMPTY',this['squeue']['id']);setTimeout(this[_0x098e('0x6')]['bind'](this),0x3e8);}};Beepall[_0x098e('0xa')][_0x098e('0x8')]=function(_0x4f1c0e){if(!_['isNil'](this[_0x098e('0x4')])&&!_[_0x098e('0xc')](this['queue'][_0x098e('0xd')])){for(var _0x401245=0x0,_0x2307b2;_0x401245<this[_0x098e('0x4')][_0x098e('0xd')][_0x098e('0xe')];_0x401245+=0x1){_0x2307b2=this[_0x098e('0x4')]['Agents'][_0x401245]['id'];if(_[_0x098e('0xc')](this[_0x098e('0x5')][_0x098e('0xf')][_0x2307b2])){logger[_0x098e('0x10')]('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0x098e('0x3')]['id'],_0x2307b2);}else{util[_0x098e('0x19')](this[_0x098e('0x1a')],this['squeue']['id'],this[_0x098e('0x5')][_0x098e('0xf')][_0x2307b2],this[_0x098e('0x4')],this[_0x098e('0x2')]);util[_0x098e('0x14')](this['squeue']['id'],this['realtime'][_0x098e('0xf')][_0x2307b2],_0x4f1c0e?_0x098e('0x1b'):_0x098e('0x1c'));this[_0x098e('0x5')][_0x098e('0xf')][_0x2307b2][_0x098e('0x1d')]=![];this['realtime'][_0x098e('0xf')][_0x2307b2][_0x098e('0x1e')]=undefined;util[_0x098e('0x1f')](this[_0x098e('0x5')],this['routing'],this[_0x098e('0x5')][_0x098e('0xf')][_0x2307b2],this[_0x098e('0x3')][_0x098e('0x13')]);}}}if(!_0x4f1c0e){setTimeout(this['push'][_0x098e('0x7')](this),0x3e8);}};function beepall(_0x3332b7,_0x252470,_0x15ca2a,_0x150244){return new Beepall(_0x3332b7,_0x252470,_0x15ca2a,_0x150244);}module[_0x098e('0x20')]=beepall;
\ No newline at end of file
+var _0x062a=['showNotification','notificationId','[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY','[%s][QUEUE]\x20EMPTY','TIMEOUT','removeWaitingNotification','lodash','uuid','../../../../../config/logger','routing','queue','realtime','handleRun','bind','squeue','handleDrained','prototype','push','handleTimeout','isNil','Agents','length','agents','debug','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','isAgentAvailable','channel','writeLog','RINGING','busy','busyQueue','name'];(function(_0x22aab7,_0x368f0f){var _0x42f7ea=function(_0x167a84){while(--_0x167a84){_0x22aab7['push'](_0x22aab7['shift']());}};_0x42f7ea(++_0x368f0f);}(_0x062a,0x106));var _0xa062=function(_0x3a331e,_0x7db48b){_0x3a331e=_0x3a331e-0x0;var _0x2684a6=_0x062a[_0x3a331e];return _0x2684a6;};'use strict';var _=require(_0xa062('0x0'));var uuid=require(_0xa062('0x1'));var util=require('./util');var logger=require(_0xa062('0x2'))(_0xa062('0x3'));var Beepall=function(_0xc86ebe,_0x507138,_0x4ba9ab,_0x256b48){this['notificationId']=uuid['v4']();this['squeue']=_0xc86ebe;this[_0xa062('0x4')]=_0x507138;this[_0xa062('0x5')]=_0x4ba9ab;this[_0xa062('0x3')]=_0x256b48;this['squeue']['push'](this[_0xa062('0x6')][_0xa062('0x7')](this),this['handleTimeout'][_0xa062('0x7')](this));this['squeue']['on']('timeout',this['handleTimeout'][_0xa062('0x7')](this));this[_0xa062('0x8')]['on']('drained',this[_0xa062('0x9')][_0xa062('0x7')](this));};Beepall[_0xa062('0xa')][_0xa062('0xb')]=function(){this[_0xa062('0x8')][_0xa062('0xb')](this[_0xa062('0x6')][_0xa062('0x7')](this),this[_0xa062('0xc')]['bind'](this));};Beepall[_0xa062('0xa')][_0xa062('0x9')]=function(){this[_0xa062('0xc')](!![]);};Beepall[_0xa062('0xa')][_0xa062('0x6')]=function(){var _0x425e62=!![];if(!_[_0xa062('0xd')](this[_0xa062('0x4')])&&!_[_0xa062('0xd')](this['queue'][_0xa062('0xe')])&&this['queue']['Agents']['length']>0x0){for(var _0x4440af=0x0,_0x5ecbc7;_0x4440af<this[_0xa062('0x4')][_0xa062('0xe')][_0xa062('0xf')];_0x4440af+=0x1){_0x5ecbc7=this[_0xa062('0x4')][_0xa062('0xe')][_0x4440af]['id'];if(_[_0xa062('0xd')](this[_0xa062('0x5')][_0xa062('0x10')][_0x5ecbc7])){logger[_0xa062('0x11')](_0xa062('0x12'),this[_0xa062('0x8')]['id'],_0x5ecbc7);}else{if(util[_0xa062('0x13')](this[_0xa062('0x8')]['id'],this[_0xa062('0x5')][_0xa062('0x10')][_0x5ecbc7],this[_0xa062('0x8')][_0xa062('0x14')],!![])){_0x425e62=![];util[_0xa062('0x15')](this[_0xa062('0x8')]['id'],this[_0xa062('0x5')][_0xa062('0x10')][_0x5ecbc7],_0xa062('0x16'));this[_0xa062('0x5')][_0xa062('0x10')][_0x5ecbc7][_0xa062('0x17')]=!![];this[_0xa062('0x5')]['agents'][_0x5ecbc7][_0xa062('0x18')]=this[_0xa062('0x4')][_0xa062('0x19')];util['saveWaitingNotification'](this[_0xa062('0x5')],this['routing'],this[_0xa062('0x4')][_0xa062('0xe')][_0x4440af],this[_0xa062('0x8')][_0xa062('0x14')]);util[_0xa062('0x1a')](this[_0xa062('0x1b')],this['squeue']['id'],this['realtime']['agents'][_0x5ecbc7],this[_0xa062('0x4')],this[_0xa062('0x3')]);}}}if(_0x425e62){logger[_0xa062('0x11')](_0xa062('0x1c'),this['squeue']['id']);setTimeout(this[_0xa062('0xb')]['bind'](this),0x3e8);}}else{logger[_0xa062('0x11')](_0xa062('0x1d'),this[_0xa062('0x8')]['id']);setTimeout(this[_0xa062('0xb')][_0xa062('0x7')](this),0x3e8);}};Beepall[_0xa062('0xa')][_0xa062('0xc')]=function(_0x1ce3be){if(!_[_0xa062('0xd')](this[_0xa062('0x4')])&&!_[_0xa062('0xd')](this['queue']['Agents'])){for(var _0x22ead3=0x0,_0x3ceb4a;_0x22ead3<this[_0xa062('0x4')][_0xa062('0xe')][_0xa062('0xf')];_0x22ead3+=0x1){_0x3ceb4a=this[_0xa062('0x4')][_0xa062('0xe')][_0x22ead3]['id'];if(_[_0xa062('0xd')](this[_0xa062('0x5')][_0xa062('0x10')][_0x3ceb4a])){logger['debug'](_0xa062('0x12'),this[_0xa062('0x8')]['id'],_0x3ceb4a);}else{util['hideNotification'](this[_0xa062('0x1b')],this[_0xa062('0x8')]['id'],this[_0xa062('0x5')][_0xa062('0x10')][_0x3ceb4a],this['queue'],this['routing']);util[_0xa062('0x15')](this['squeue']['id'],this[_0xa062('0x5')][_0xa062('0x10')][_0x3ceb4a],_0x1ce3be?'STOP':_0xa062('0x1e'));this[_0xa062('0x5')][_0xa062('0x10')][_0x3ceb4a][_0xa062('0x17')]=![];this[_0xa062('0x5')][_0xa062('0x10')][_0x3ceb4a][_0xa062('0x18')]=undefined;util[_0xa062('0x1f')](this[_0xa062('0x5')],this[_0xa062('0x3')],this[_0xa062('0x5')]['agents'][_0x3ceb4a],this['squeue'][_0xa062('0x14')]);}}}if(!_0x1ce3be){setTimeout(this[_0xa062('0xb')][_0xa062('0x7')](this),0x3e8);}};function beepall(_0x1d4542,_0x3e7147,_0x30e3c1,_0x417201){return new Beepall(_0x1d4542,_0x3e7147,_0x30e3c1,_0x417201);}module['exports']=beepall;
\ No newline at end of file
index 39c51c6..8d88fd2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa173=['exports','./agent'];(function(_0x31b753,_0x30a5e0){var _0x44a32a=function(_0x528f68){while(--_0x528f68){_0x31b753['push'](_0x31b753['shift']());}};_0x44a32a(++_0x30a5e0);}(_0xa173,0x13e));var _0x3a17=function(_0x177bd0,_0x49d575){_0x177bd0=_0x177bd0-0x0;var _0x3202f5=_0xa173[_0x177bd0];return _0x3202f5;};'use strict';module[_0x3a17('0x0')]={'rrmemory':require('./rrmemory'),'beepall':require('./beepall'),'agent':require(_0x3a17('0x1'))};
\ No newline at end of file
+var _0xa3c3=['./agent','exports'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xa3c3,0x127));var _0x3a3c=function(_0x3fddb3,_0x1f9341){_0x3fddb3=_0x3fddb3-0x0;var _0x376b1c=_0xa3c3[_0x3fddb3];return _0x376b1c;};'use strict';module[_0x3a3c('0x0')]={'rrmemory':require('./rrmemory'),'beepall':require('./beepall'),'agent':require(_0x3a3c('0x1'))};
\ No newline at end of file
index 9ee4b99..4339f76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf4f=['done','queue','mapAgentsId','debug','[%s][QUEUE]\x20try\x20with\x20%s','isNil','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','isAgentAvailable','busyQueue','name','saveWaitingNotification','showNotification','writeLog','RINGING','handleCheckReject','[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s','hideNotification','TIMEOUT','removeWaitingNotification','lodash','uuid','./util','../../../../../config/logger','routing','notificationId','squeue','realtime','intervals','bind','handleTimeout','drained','prototype','push','handleRun','agents','channel','[%s][QUEUE]\x20available\x20again\x20%s','agentId'];(function(_0xc14df7,_0x163f90){var _0x34a445=function(_0x1bbf28){while(--_0x1bbf28){_0xc14df7['push'](_0xc14df7['shift']());}};_0x34a445(++_0x163f90);}(_0xcf4f,0xd1));var _0xfcf4=function(_0x45b034,_0x3a57dd){_0x45b034=_0x45b034-0x0;var _0x509cb0=_0xcf4f[_0x45b034];return _0x509cb0;};'use strict';var rr=require('rr');var _=require(_0xfcf4('0x0'));var uuid=require(_0xfcf4('0x1'));var util=require(_0xfcf4('0x2'));var logger=require(_0xfcf4('0x3'))(_0xfcf4('0x4'));var RRMemory=function(_0xc07d68,_0x2d30cf,_0x29f427,_0x19df10){this[_0xfcf4('0x5')]=uuid['v4']();this[_0xfcf4('0x6')]=_0xc07d68;this['queue']=_0x2d30cf;this[_0xfcf4('0x7')]=_0x29f427;this[_0xfcf4('0x4')]=_0x19df10;this[_0xfcf4('0x8')]={};this[_0xfcf4('0x6')]['push'](this['handleRun'][_0xfcf4('0x9')](this),this[_0xfcf4('0xa')][_0xfcf4('0x9')](this),this['module']);this[_0xfcf4('0x6')]['on']('timeout',this[_0xfcf4('0xa')][_0xfcf4('0x9')](this));this[_0xfcf4('0x6')]['on'](_0xfcf4('0xb'),this['handleDrained'][_0xfcf4('0x9')](this));};RRMemory[_0xfcf4('0xc')][_0xfcf4('0xd')]=function(){this['squeue'][_0xfcf4('0xd')](this[_0xfcf4('0xe')][_0xfcf4('0x9')](this),this[_0xfcf4('0xa')][_0xfcf4('0x9')](this));};RRMemory['prototype']['handleDrained']=function(){this[_0xfcf4('0xa')](!![]);};RRMemory[_0xfcf4('0xc')]['handleCheckReject']=function(_0x255e1f){if(util['isAgentAvailable'](this['squeue']['id'],this[_0xfcf4('0x7')][_0xfcf4('0xf')][this['agentId']],this['squeue'][_0xfcf4('0x10')],!![])){logger['debug'](_0xfcf4('0x11'),this[_0xfcf4('0x6')]['id'],this[_0xfcf4('0x12')]);clearInterval(this[_0xfcf4('0x8')][this[_0xfcf4('0x12')]]);_0x255e1f[_0xfcf4('0x13')]();setTimeout(this[_0xfcf4('0xd')][_0xfcf4('0x9')](this),0x3e8);}};RRMemory[_0xfcf4('0xc')][_0xfcf4('0xe')]=function(_0x50322b){this[_0xfcf4('0x12')]=rr(this[_0xfcf4('0x14')][_0xfcf4('0x15')]);logger[_0xfcf4('0x16')](_0xfcf4('0x17'),this[_0xfcf4('0x6')]['id'],this['agentId']);if(_[_0xfcf4('0x18')](this[_0xfcf4('0x7')]['agents'][this[_0xfcf4('0x12')]])){logger[_0xfcf4('0x16')](_0xfcf4('0x19'),this[_0xfcf4('0x6')]['id'],this[_0xfcf4('0x12')]);_0x50322b[_0xfcf4('0x13')]();setTimeout(this[_0xfcf4('0xd')][_0xfcf4('0x9')](this),0x3e8);}else{if(util[_0xfcf4('0x1a')](this[_0xfcf4('0x6')]['id'],this[_0xfcf4('0x7')]['agents'][this[_0xfcf4('0x12')]],this[_0xfcf4('0x6')]['channel'],!![])){this[_0xfcf4('0x7')][_0xfcf4('0xf')][this['agentId']]['busy']=!![];this['realtime'][_0xfcf4('0xf')][this[_0xfcf4('0x12')]][_0xfcf4('0x1b')]=this[_0xfcf4('0x14')][_0xfcf4('0x1c')];util[_0xfcf4('0x1d')](this[_0xfcf4('0x7')],this[_0xfcf4('0x4')],this[_0xfcf4('0x7')][_0xfcf4('0xf')][this['agentId']],this[_0xfcf4('0x6')][_0xfcf4('0x10')]);util[_0xfcf4('0x1e')](this[_0xfcf4('0x5')],this[_0xfcf4('0x6')]['id'],this[_0xfcf4('0x7')]['agents'][this['agentId']],this[_0xfcf4('0x14')],this[_0xfcf4('0x4')]);util[_0xfcf4('0x1f')](this[_0xfcf4('0x6')]['id'],this['realtime'][_0xfcf4('0xf')][this[_0xfcf4('0x12')]],_0xfcf4('0x20'));this[_0xfcf4('0x8')][this['agentId']]=setInterval(this[_0xfcf4('0x21')][_0xfcf4('0x9')](this,_0x50322b),0x3e8);}else{logger[_0xfcf4('0x16')](_0xfcf4('0x22'),this['squeue']['id'],this['agentId']);_0x50322b[_0xfcf4('0x13')]();setTimeout(this[_0xfcf4('0xd')][_0xfcf4('0x9')](this),0x3e8);}}};RRMemory[_0xfcf4('0xc')][_0xfcf4('0xa')]=function(_0x224571){logger[_0xfcf4('0x16')]('[%s][QUEUE]\x20timeout\x20with\x20%s',this[_0xfcf4('0x6')]['id'],this[_0xfcf4('0x12')]);if(_[_0xfcf4('0x18')](this[_0xfcf4('0x7')]['agents'][this[_0xfcf4('0x12')]])){logger['debug'](_0xfcf4('0x19'),this[_0xfcf4('0x6')]['id'],this[_0xfcf4('0x12')]);}else{clearInterval(this[_0xfcf4('0x8')][this[_0xfcf4('0x12')]]);util[_0xfcf4('0x23')](this[_0xfcf4('0x5')],this['squeue']['id'],this[_0xfcf4('0x7')][_0xfcf4('0xf')][this[_0xfcf4('0x12')]],this[_0xfcf4('0x14')],this[_0xfcf4('0x4')]);util[_0xfcf4('0x1f')](this[_0xfcf4('0x6')]['id'],this[_0xfcf4('0x7')][_0xfcf4('0xf')][this['agentId']],_0xfcf4('0x24'));this[_0xfcf4('0x7')]['agents'][this[_0xfcf4('0x12')]]['busy']=![];this['realtime'][_0xfcf4('0xf')][this[_0xfcf4('0x12')]]['busyQueue']=undefined;util[_0xfcf4('0x25')](this[_0xfcf4('0x7')],this[_0xfcf4('0x4')],this[_0xfcf4('0x7')][_0xfcf4('0xf')][this[_0xfcf4('0x12')]],this[_0xfcf4('0x6')][_0xfcf4('0x10')]);}if(!_0x224571){setTimeout(this[_0xfcf4('0xd')]['bind'](this),0x3e8);}};function rrmemory(_0x28d806,_0x14b152,_0x9f2bde,_0x3cb43d){return new RRMemory(_0x28d806,_0x14b152,_0x9f2bde,_0x3cb43d);}module['exports']=rrmemory;
\ No newline at end of file
+var _0xcedc=['channel','debug','[%s][QUEUE]\x20available\x20again\x20%s','done','mapAgentsId','isNil','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','busy','busyQueue','name','saveWaitingNotification','writeLog','RINGING','[%s][QUEUE]\x20timeout\x20with\x20%s','TIMEOUT','removeWaitingNotification','lodash','uuid','./util','../../../../../config/logger','routing','notificationId','squeue','queue','intervals','push','handleRun','bind','handleTimeout','module','handleDrained','prototype','handleCheckReject','isAgentAvailable','realtime','agents','agentId'];(function(_0x23a8ec,_0x3ddb28){var _0x2b2ce1=function(_0x598832){while(--_0x598832){_0x23a8ec['push'](_0x23a8ec['shift']());}};_0x2b2ce1(++_0x3ddb28);}(_0xcedc,0x113));var _0xcced=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xcedc[_0x14add3];return _0x4a174f;};'use strict';var rr=require('rr');var _=require(_0xcced('0x0'));var uuid=require(_0xcced('0x1'));var util=require(_0xcced('0x2'));var logger=require(_0xcced('0x3'))(_0xcced('0x4'));var RRMemory=function(_0x1b2d1a,_0x141025,_0xdcc7c4,_0x5eacbf){this[_0xcced('0x5')]=uuid['v4']();this[_0xcced('0x6')]=_0x1b2d1a;this[_0xcced('0x7')]=_0x141025;this['realtime']=_0xdcc7c4;this['routing']=_0x5eacbf;this[_0xcced('0x8')]={};this[_0xcced('0x6')][_0xcced('0x9')](this[_0xcced('0xa')][_0xcced('0xb')](this),this[_0xcced('0xc')]['bind'](this),this[_0xcced('0xd')]);this[_0xcced('0x6')]['on']('timeout',this[_0xcced('0xc')][_0xcced('0xb')](this));this[_0xcced('0x6')]['on']('drained',this[_0xcced('0xe')]['bind'](this));};RRMemory[_0xcced('0xf')][_0xcced('0x9')]=function(){this[_0xcced('0x6')][_0xcced('0x9')](this[_0xcced('0xa')][_0xcced('0xb')](this),this[_0xcced('0xc')]['bind'](this));};RRMemory[_0xcced('0xf')]['handleDrained']=function(){this[_0xcced('0xc')](!![]);};RRMemory[_0xcced('0xf')][_0xcced('0x10')]=function(_0x27f6d1){if(util[_0xcced('0x11')](this[_0xcced('0x6')]['id'],this[_0xcced('0x12')][_0xcced('0x13')][this[_0xcced('0x14')]],this[_0xcced('0x6')][_0xcced('0x15')],!![])){logger[_0xcced('0x16')](_0xcced('0x17'),this[_0xcced('0x6')]['id'],this[_0xcced('0x14')]);clearInterval(this[_0xcced('0x8')][this[_0xcced('0x14')]]);_0x27f6d1[_0xcced('0x18')]();setTimeout(this[_0xcced('0x9')][_0xcced('0xb')](this),0x3e8);}};RRMemory['prototype'][_0xcced('0xa')]=function(_0x4e6064){this[_0xcced('0x14')]=rr(this[_0xcced('0x7')][_0xcced('0x19')]);logger[_0xcced('0x16')]('[%s][QUEUE]\x20try\x20with\x20%s',this[_0xcced('0x6')]['id'],this[_0xcced('0x14')]);if(_[_0xcced('0x1a')](this[_0xcced('0x12')][_0xcced('0x13')][this[_0xcced('0x14')]])){logger['debug'](_0xcced('0x1b'),this[_0xcced('0x6')]['id'],this[_0xcced('0x14')]);_0x4e6064[_0xcced('0x18')]();setTimeout(this[_0xcced('0x9')]['bind'](this),0x3e8);}else{if(util[_0xcced('0x11')](this[_0xcced('0x6')]['id'],this[_0xcced('0x12')]['agents'][this[_0xcced('0x14')]],this[_0xcced('0x6')]['channel'],!![])){this['realtime'][_0xcced('0x13')][this[_0xcced('0x14')]][_0xcced('0x1c')]=!![];this['realtime'][_0xcced('0x13')][this[_0xcced('0x14')]][_0xcced('0x1d')]=this[_0xcced('0x7')][_0xcced('0x1e')];util[_0xcced('0x1f')](this[_0xcced('0x12')],this[_0xcced('0x4')],this[_0xcced('0x12')][_0xcced('0x13')][this['agentId']],this['squeue'][_0xcced('0x15')]);util['showNotification'](this['notificationId'],this[_0xcced('0x6')]['id'],this[_0xcced('0x12')][_0xcced('0x13')][this[_0xcced('0x14')]],this[_0xcced('0x7')],this[_0xcced('0x4')]);util[_0xcced('0x20')](this['squeue']['id'],this[_0xcced('0x12')][_0xcced('0x13')][this['agentId']],_0xcced('0x21'));this[_0xcced('0x8')][this[_0xcced('0x14')]]=setInterval(this[_0xcced('0x10')][_0xcced('0xb')](this,_0x4e6064),0x3e8);}else{logger[_0xcced('0x16')]('[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s',this[_0xcced('0x6')]['id'],this[_0xcced('0x14')]);_0x4e6064[_0xcced('0x18')]();setTimeout(this[_0xcced('0x9')][_0xcced('0xb')](this),0x3e8);}}};RRMemory[_0xcced('0xf')][_0xcced('0xc')]=function(_0x564120){logger[_0xcced('0x16')](_0xcced('0x22'),this[_0xcced('0x6')]['id'],this[_0xcced('0x14')]);if(_[_0xcced('0x1a')](this[_0xcced('0x12')][_0xcced('0x13')][this['agentId']])){logger[_0xcced('0x16')]('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0xcced('0x6')]['id'],this[_0xcced('0x14')]);}else{clearInterval(this[_0xcced('0x8')][this[_0xcced('0x14')]]);util['hideNotification'](this[_0xcced('0x5')],this[_0xcced('0x6')]['id'],this[_0xcced('0x12')][_0xcced('0x13')][this['agentId']],this['queue'],this['routing']);util[_0xcced('0x20')](this[_0xcced('0x6')]['id'],this['realtime'][_0xcced('0x13')][this[_0xcced('0x14')]],_0xcced('0x23'));this[_0xcced('0x12')][_0xcced('0x13')][this[_0xcced('0x14')]]['busy']=![];this[_0xcced('0x12')][_0xcced('0x13')][this[_0xcced('0x14')]][_0xcced('0x1d')]=undefined;util[_0xcced('0x24')](this['realtime'],this[_0xcced('0x4')],this['realtime']['agents'][this[_0xcced('0x14')]],this[_0xcced('0x6')]['channel']);}if(!_0x564120){setTimeout(this[_0xcced('0x9')]['bind'](this),0x3e8);}};function rrmemory(_0x4e246d,_0x48fba1,_0x1e983b,_0x104ea8){return new RRMemory(_0x4e246d,_0x48fba1,_0x1e983b,_0x104ea8);}module['exports']=rrmemory;
\ No newline at end of file
index 9282d6b..aa37160 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0af1=['account','notificationSound','notificationShake','body','msg','I\x20can\x27t\x20render\x20your\x20template','error','[%s][QUEUE]\x20%s','message','notification:%s','save','debug','[%s][QUEUE][AGENT:%s][STATUS:%s]','isAgentAvailable','busy','BUSY','online','OFFLINE','Pause','PAUSE','Capacity','hasOwnProperty','CurrentCapacity','toUpperCase','showNotification','checkWaitingNotifications','interaction','UserId','some','channel','QueuesWaitingInteractions','capitalize','InteractionId','agents','WaitingInteractions','writeLog','lodash','../utils','ioredis','../../../../../config/logger','routing','redis','defaults','localhost','socket.io-emitter','format','user:%s','name','user:save','split','\x20interaction'];(function(_0x15c12c,_0x1db663){var _0x4aaeb8=function(_0x2c9436){while(--_0x2c9436){_0x15c12c['push'](_0x15c12c['shift']());}};_0x4aaeb8(++_0x1db663);}(_0x0af1,0x8a));var _0x10af=function(_0x344cf7,_0x4a26ba){_0x344cf7=_0x344cf7-0x0;var _0x3d4c27=_0x0af1[_0x344cf7];return _0x3d4c27;};'use strict';var _=require(_0x10af('0x0'));var util=require('util');var utils=require(_0x10af('0x1'));var Redis=require(_0x10af('0x2'));var config=require('../../../../../config/environment');var logger=require(_0x10af('0x3'))(_0x10af('0x4'));config[_0x10af('0x5')]=_[_0x10af('0x6')](config['redis'],{'host':_0x10af('0x7'),'port':0x18eb});var io=require(_0x10af('0x8'))(new Redis(config[_0x10af('0x5')]));function sendNotification(_0x3776d5,_0x30b893,_0x523f11,_0x3b9b9c,_0x4e3907,_0x23f54c){io['to'](util[_0x10af('0x9')](_0x10af('0xa'),_0x3b9b9c[_0x10af('0xb')]))['emit'](_0x10af('0xc'),_0x3b9b9c);var _0x3a9de3=_0x23f54c||{};var _0x4f29ed=_0x523f11[_0x10af('0xd')]('.');var _0x251fc5={'uniqueid':_0x30b893,'channel':_0x4f29ed[0x0],'id':_0x4f29ed[0x1],'title':_0x4f29ed[0x0]+_0x10af('0xe'),'interactionId':_0x4f29ed[0x2],'queue':_0x4e3907?_0x4e3907[_0x10af('0xb')]:null,'sound':_0x3a9de3[_0x10af('0xf')][_0x10af('0x10')],'shake':_0x3a9de3['account'][_0x10af('0x11')]};try{if(!_0x3a9de3[_0x10af('0x12')]){_0x3a9de3[_0x10af('0x12')]={};}if(_0x4e3907){_0x3a9de3[_0x10af('0x12')]['queue']=_0x4e3907;}else if(_0x3a9de3[_0x10af('0x12')]['queue']){delete _0x3a9de3[_0x10af('0x12')]['queue'];}_0x251fc5['msg']=utils['getMustacheRender'](_0x3a9de3[_0x10af('0xf')]['notificationTemplate'],_0x3a9de3);}catch(_0x3a6d49){_0x251fc5[_0x10af('0x13')]=_0x10af('0x14');logger[_0x10af('0x15')](util['format'](_0x10af('0x16'),_0x30b893,_0x3a6d49[_0x10af('0x17')]));}io['to'](util[_0x10af('0x9')](_0x10af('0xa'),_0x3b9b9c[_0x10af('0xb')]))['emit'](util[_0x10af('0x9')](_0x10af('0x18'),_0x3776d5?_0x10af('0x19'):'remove'),_0x251fc5);}function writeLog(_0x26ae70,_0x531987,_0x4d8ce6){return logger[_0x10af('0x1a')](util[_0x10af('0x9')](_0x10af('0x1b'),_0x26ae70,_0x531987[_0x10af('0xb')],_0x4d8ce6));}exports[_0x10af('0x1c')]=function(_0xe3e8b9,_0x9b2507,_0x2db479,_0x1afed9){if(_0x9b2507[_0x10af('0x1d')]){writeLog(_0xe3e8b9,_0x9b2507,_0x10af('0x1e'));return![];}if(!_0x9b2507[_0x10af('0x1f')]){writeLog(_0xe3e8b9,_0x9b2507,_0x10af('0x20'));return![];}if(_0x9b2507[_0x2db479+_0x10af('0x21')]){writeLog(_0xe3e8b9,_0x9b2507,_0x10af('0x22'));return![];}if(_0x1afed9&&_0x9b2507['hasOwnProperty'](_0x2db479+_0x10af('0x23'))&&_0x9b2507[_0x10af('0x24')](_0x2db479+_0x10af('0x25'))){if(_0x9b2507[_0x2db479+_0x10af('0x23')]>0x0&&_0x9b2507[_0x2db479+_0x10af('0x25')]>=_0x9b2507[_0x2db479+_0x10af('0x23')]){writeLog(_0xe3e8b9,_0x9b2507,_0x2db479[_0x10af('0x26')]()+'\x20MAXCAPACITY');return![];}}return!![];};exports[_0x10af('0x27')]=function(_0x26fb28,_0x55a9a5,_0x435ecb,_0x8c466c,_0xf89cfd){return sendNotification(!![],_0x26fb28,_0x55a9a5,_0x435ecb,_0x8c466c,_0xf89cfd);};exports['hideNotification']=function(_0xb51f7d,_0x34b56e,_0x32b2a1,_0x58e5bb,_0xd1e05f){return sendNotification(![],_0xb51f7d,_0x34b56e,_0x32b2a1,_0x58e5bb,_0xd1e05f);};exports[_0x10af('0x28')]=function(_0x5769cd,_0x5c138f,_0x311014){var _0x6d72a8=_0x5c138f[_0x10af('0x29')][_0x10af('0x2a')];if(!_0x6d72a8&&_0x311014){_0x6d72a8=_0x311014['id'];}var _0x27ffa7=_[_0x10af('0x2b')](_0x5769cd[_0x5c138f[_0x10af('0x2c')]+_0x10af('0x2d')],function(_0x2f6442){var _0xc6af57=_[_0x10af('0x2e')](_0x5c138f[_0x10af('0x2c')])+_0x10af('0x2f');return _0x2f6442[_0xc6af57]===_0x5c138f['interaction']['id'];});if(!_0x27ffa7&&_0x6d72a8){_0x27ffa7=_['some'](_0x5769cd[_0x10af('0x30')][_0x6d72a8][_0x5c138f['channel']+_0x10af('0x31')],function(_0x378970){return _0x378970['id']===_0x5c138f[_0x10af('0x29')]['id'];});}return _0x27ffa7;};exports['saveWaitingNotification']=function(_0x5970ad,_0x55d272,_0xca5013,_0x4d4a44){_0x5970ad[_0x10af('0x30')][_0xca5013['id']][_0x4d4a44+_0x10af('0x31')][_0x55d272[_0x10af('0x17')]['id']]={'id':_0x55d272[_0x10af('0x29')]['id']};};exports['removeWaitingNotification']=function(_0x2fbc9b,_0x39cdf6,_0x3d4bb8,_0x329652){delete _0x2fbc9b[_0x10af('0x30')][_0x3d4bb8['id']][_0x329652+_0x10af('0x31')][_0x39cdf6[_0x10af('0x17')]['id']];};exports[_0x10af('0x32')]=writeLog;
\ No newline at end of file
+var _0x9df6=['some','channel','QueuesWaitingInteractions','capitalize','WaitingInteractions','saveWaitingNotification','agents','removeWaitingNotification','lodash','util','ioredis','../../../../../config/environment','../../../../../config/logger','routing','redis','defaults','localhost','socket.io-emitter','user:%s','name','emit','user:save','\x20interaction','account','notificationSound','body','queue','msg','notificationTemplate','I\x20can\x27t\x20render\x20your\x20template','[%s][QUEUE]\x20%s','message','format','notification:%s','remove','debug','[%s][QUEUE][AGENT:%s][STATUS:%s]','isAgentAvailable','busy','BUSY','online','OFFLINE','Pause','PAUSE','hasOwnProperty','Capacity','CurrentCapacity','toUpperCase','\x20MAXCAPACITY','hideNotification','checkWaitingNotifications','interaction','UserId'];(function(_0x5e8eae,_0x4f81e0){var _0xdd09cd=function(_0x28c85c){while(--_0x28c85c){_0x5e8eae['push'](_0x5e8eae['shift']());}};_0xdd09cd(++_0x4f81e0);}(_0x9df6,0x17b));var _0x69df=function(_0x43d11d,_0xccff91){_0x43d11d=_0x43d11d-0x0;var _0x38cd08=_0x9df6[_0x43d11d];return _0x38cd08;};'use strict';var _=require(_0x69df('0x0'));var util=require(_0x69df('0x1'));var utils=require('../utils');var Redis=require(_0x69df('0x2'));var config=require(_0x69df('0x3'));var logger=require(_0x69df('0x4'))(_0x69df('0x5'));config[_0x69df('0x6')]=_[_0x69df('0x7')](config[_0x69df('0x6')],{'host':_0x69df('0x8'),'port':0x18eb});var io=require(_0x69df('0x9'))(new Redis(config[_0x69df('0x6')]));function sendNotification(_0xbfbcf3,_0x53bc0d,_0x8483c8,_0x524596,_0x2a0ea8,_0x23d8bb){io['to'](util['format'](_0x69df('0xa'),_0x524596[_0x69df('0xb')]))[_0x69df('0xc')](_0x69df('0xd'),_0x524596);var _0x41b03c=_0x23d8bb||{};var _0x286e2f=_0x8483c8['split']('.');var _0x4c96e1={'uniqueid':_0x53bc0d,'channel':_0x286e2f[0x0],'id':_0x286e2f[0x1],'title':_0x286e2f[0x0]+_0x69df('0xe'),'interactionId':_0x286e2f[0x2],'queue':_0x2a0ea8?_0x2a0ea8[_0x69df('0xb')]:null,'sound':_0x41b03c[_0x69df('0xf')][_0x69df('0x10')],'shake':_0x41b03c[_0x69df('0xf')]['notificationShake']};try{if(!_0x41b03c['body']){_0x41b03c['body']={};}if(_0x2a0ea8){_0x41b03c[_0x69df('0x11')][_0x69df('0x12')]=_0x2a0ea8;}else if(_0x41b03c[_0x69df('0x11')][_0x69df('0x12')]){delete _0x41b03c[_0x69df('0x11')][_0x69df('0x12')];}_0x4c96e1[_0x69df('0x13')]=utils['getMustacheRender'](_0x41b03c[_0x69df('0xf')][_0x69df('0x14')],_0x41b03c);}catch(_0x3c1686){_0x4c96e1[_0x69df('0x13')]=_0x69df('0x15');logger['error'](util['format'](_0x69df('0x16'),_0x53bc0d,_0x3c1686[_0x69df('0x17')]));}io['to'](util['format'](_0x69df('0xa'),_0x524596[_0x69df('0xb')]))[_0x69df('0xc')](util[_0x69df('0x18')](_0x69df('0x19'),_0xbfbcf3?'save':_0x69df('0x1a')),_0x4c96e1);}function writeLog(_0x4afc17,_0x10a505,_0x1ae9c9){return logger[_0x69df('0x1b')](util['format'](_0x69df('0x1c'),_0x4afc17,_0x10a505[_0x69df('0xb')],_0x1ae9c9));}exports[_0x69df('0x1d')]=function(_0x4cbb5e,_0x912602,_0xe31be0,_0x4af49b){if(_0x912602[_0x69df('0x1e')]){writeLog(_0x4cbb5e,_0x912602,_0x69df('0x1f'));return![];}if(!_0x912602[_0x69df('0x20')]){writeLog(_0x4cbb5e,_0x912602,_0x69df('0x21'));return![];}if(_0x912602[_0xe31be0+_0x69df('0x22')]){writeLog(_0x4cbb5e,_0x912602,_0x69df('0x23'));return![];}if(_0x4af49b&&_0x912602[_0x69df('0x24')](_0xe31be0+_0x69df('0x25'))&&_0x912602[_0x69df('0x24')](_0xe31be0+_0x69df('0x26'))){if(_0x912602[_0xe31be0+_0x69df('0x25')]>0x0&&_0x912602[_0xe31be0+_0x69df('0x26')]>=_0x912602[_0xe31be0+_0x69df('0x25')]){writeLog(_0x4cbb5e,_0x912602,_0xe31be0[_0x69df('0x27')]()+_0x69df('0x28'));return![];}}return!![];};exports['showNotification']=function(_0x485b76,_0x54b7d4,_0x3579b,_0x320ecd,_0x3ebe6f){return sendNotification(!![],_0x485b76,_0x54b7d4,_0x3579b,_0x320ecd,_0x3ebe6f);};exports[_0x69df('0x29')]=function(_0x415ae9,_0xff7326,_0x9ada69,_0x38dfd2,_0x4ce076){return sendNotification(![],_0x415ae9,_0xff7326,_0x9ada69,_0x38dfd2,_0x4ce076);};exports[_0x69df('0x2a')]=function(_0x2bbe48,_0x54eda3,_0x3d1084){var _0x5d5a6a=_0x54eda3[_0x69df('0x2b')][_0x69df('0x2c')];if(!_0x5d5a6a&&_0x3d1084){_0x5d5a6a=_0x3d1084['id'];}var _0x532d55=_[_0x69df('0x2d')](_0x2bbe48[_0x54eda3[_0x69df('0x2e')]+_0x69df('0x2f')],function(_0xd81e23){var _0x5121d2=_[_0x69df('0x30')](_0x54eda3[_0x69df('0x2e')])+'InteractionId';return _0xd81e23[_0x5121d2]===_0x54eda3[_0x69df('0x2b')]['id'];});if(!_0x532d55&&_0x5d5a6a){_0x532d55=_['some'](_0x2bbe48['agents'][_0x5d5a6a][_0x54eda3[_0x69df('0x2e')]+_0x69df('0x31')],function(_0x110b78){return _0x110b78['id']===_0x54eda3[_0x69df('0x2b')]['id'];});}return _0x532d55;};exports[_0x69df('0x32')]=function(_0x348d53,_0x425cf3,_0x377fa6,_0xfb90ea){_0x348d53[_0x69df('0x33')][_0x377fa6['id']][_0xfb90ea+'WaitingInteractions'][_0x425cf3['message']['id']]={'id':_0x425cf3[_0x69df('0x2b')]['id']};};exports[_0x69df('0x34')]=function(_0x2884e5,_0xce1af7,_0x39b21b,_0x4b3bb0){delete _0x2884e5['agents'][_0x39b21b['id']][_0x4b3bb0+'WaitingInteractions'][_0xce1af7[_0x69df('0x17')]['id']];};exports['writeLog']=writeLog;
\ No newline at end of file
index 1de4242..41f4d1a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5eff=['length','[%s][SYSTEM]\x20%s','message','info','[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next','next','getMustacheRender','[%s][SYSTEM]\x20commnad:\x20%s','exec','[%s][SYSTEM]\x20result\x20code:\x20%s','replace','isNil','isEmpty','[%s][SYSTEM]\x20no\x20variable','body','[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s','error','stringify','validate','shelljs','lodash','../../../../config/logger','routing','command\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence'];(function(_0x3f73b2,_0x57c771){var _0x202dd8=function(_0x57e329){while(--_0x57e329){_0x3f73b2['push'](_0x3f73b2['shift']());}};_0x202dd8(++_0x57c771);}(_0x5eff,0x76));var _0xf5ef=function(_0x5d2803,_0xf375bd){_0x5d2803=_0x5d2803-0x0;var _0xdcad2c=_0x5eff[_0x5d2803];return _0xdcad2c;};'use strict';var schema=require(_0xf5ef('0x0'));var sh=require(_0xf5ef('0x1'));var _=require(_0xf5ef('0x2'));var utils=require('./utils');var logger=require(_0xf5ef('0x3'))(_0xf5ef('0x4'));var system=schema({'command':{'type':'string','required':!![],'message':_0xf5ef('0x5')}});exports[_0xf5ef('0x6')]=function(_0x490a6e,_0x55f3c6){return function(_0x38e14a){try{var _0x1fdbc9={'command':_0x55f3c6[0x0]};var _0x5def2a=system[_0xf5ef('0x0')](_0x1fdbc9,{'typecast':!![]});if(_0x5def2a[_0xf5ef('0x7')]){logger['error'](_0xf5ef('0x8'),_0x490a6e,_['map'](_0x5def2a,_0xf5ef('0x9'))['join'](',\x20'));logger[_0xf5ef('0xa')](_0xf5ef('0xb'),_0x490a6e);_0x38e14a[_0xf5ef('0xc')]();}else{var _0x171e66=this;var _0x263a40=utils[_0xf5ef('0xd')](_0x55f3c6[0x0],this);logger[_0xf5ef('0xa')](_0xf5ef('0xe'),_0x490a6e,_0x263a40);sh[_0xf5ef('0xf')](_['trim'](_0x263a40),function(_0x59dd07,_0x5ce9d1){logger['info'](_0xf5ef('0x10'),_0x490a6e,_0x59dd07);if(_0x59dd07==0x0){var _0x1a7f04=_0x5ce9d1[_0xf5ef('0x11')](/(\r\n|\n|\r)/gm,'');if(_[_0xf5ef('0x12')](_0x55f3c6[0x1])||_[_0xf5ef('0x13')](_0x55f3c6[0x1])){logger['info'](_0xf5ef('0x14'),_0x490a6e);_0x171e66[_0xf5ef('0x15')][_0x55f3c6[0x1]]=_0x1a7f04;}else{logger[_0xf5ef('0xa')](_0xf5ef('0x16'),_0x490a6e,_0x55f3c6[0x1],_0x1a7f04);_0x171e66[_0xf5ef('0x15')][_0x55f3c6[0x1]]=_0x1a7f04;}}_0x38e14a[_0xf5ef('0xc')]();});}}catch(_0x1161e6){logger[_0xf5ef('0x17')]('[%s][SYSTEM]\x20%s',_0x490a6e,_['isObject'](_0x1161e6)?JSON[_0xf5ef('0x18')](_0x1161e6):_0x1161e6);logger[_0xf5ef('0xa')](_0xf5ef('0xb'),_0x490a6e);_0x38e14a[_0xf5ef('0xc')]();}};};
\ No newline at end of file
+var _0xf2c9=['[%s][SYSTEM]\x20result\x20code:\x20%s','isNil','isEmpty','[%s][SYSTEM]\x20no\x20variable','body','[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s','isObject','validate','shelljs','lodash','./utils','../../../../config/logger','command\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','length','[%s][SYSTEM]\x20%s','map','message','join','info','[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next','next','[%s][SYSTEM]\x20commnad:\x20%s','trim'];(function(_0x270c4f,_0x45a4c9){var _0x33c664=function(_0x568ab4){while(--_0x568ab4){_0x270c4f['push'](_0x270c4f['shift']());}};_0x33c664(++_0x45a4c9);}(_0xf2c9,0x187));var _0x9f2c=function(_0x117994,_0x46bbbb){_0x117994=_0x117994-0x0;var _0x40814a=_0xf2c9[_0x117994];return _0x40814a;};'use strict';var schema=require(_0x9f2c('0x0'));var sh=require(_0x9f2c('0x1'));var _=require(_0x9f2c('0x2'));var utils=require(_0x9f2c('0x3'));var logger=require(_0x9f2c('0x4'))('routing');var system=schema({'command':{'type':'string','required':!![],'message':_0x9f2c('0x5')}});exports[_0x9f2c('0x6')]=function(_0xcffe9a,_0x44bccb){return function(_0x47b67f){try{var _0x49faa9={'command':_0x44bccb[0x0]};var _0x118d31=system['validate'](_0x49faa9,{'typecast':!![]});if(_0x118d31[_0x9f2c('0x7')]){logger['error'](_0x9f2c('0x8'),_0xcffe9a,_[_0x9f2c('0x9')](_0x118d31,_0x9f2c('0xa'))[_0x9f2c('0xb')](',\x20'));logger[_0x9f2c('0xc')](_0x9f2c('0xd'),_0xcffe9a);_0x47b67f[_0x9f2c('0xe')]();}else{var _0x55c20b=this;var _0x677381=utils['getMustacheRender'](_0x44bccb[0x0],this);logger['info'](_0x9f2c('0xf'),_0xcffe9a,_0x677381);sh['exec'](_[_0x9f2c('0x10')](_0x677381),function(_0xa52b97,_0x545719){logger['info'](_0x9f2c('0x11'),_0xcffe9a,_0xa52b97);if(_0xa52b97==0x0){var _0x2008dc=_0x545719['replace'](/(\r\n|\n|\r)/gm,'');if(_[_0x9f2c('0x12')](_0x44bccb[0x1])||_[_0x9f2c('0x13')](_0x44bccb[0x1])){logger[_0x9f2c('0xc')](_0x9f2c('0x14'),_0xcffe9a);_0x55c20b[_0x9f2c('0x15')][_0x44bccb[0x1]]=_0x2008dc;}else{logger['info'](_0x9f2c('0x16'),_0xcffe9a,_0x44bccb[0x1],_0x2008dc);_0x55c20b['body'][_0x44bccb[0x1]]=_0x2008dc;}}_0x47b67f[_0x9f2c('0xe')]();});}}catch(_0x32e746){logger['error'](_0x9f2c('0x8'),_0xcffe9a,_[_0x9f2c('0x17')](_0x32e746)?JSON['stringify'](_0x32e746):_0x32e746);logger[_0x9f2c('0xc')](_0x9f2c('0xd'),_0xcffe9a);_0x47b67f['next']();}};};
\ No newline at end of file
index b23c646..ca22b19 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa141=['info','[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next','channel','Interaction','addTags','[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s','interaction','catch','[%s][TAG]\x20%s','stringify','finally','next','isObject','validate','lodash','../../rpc/chatInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','routing','number','consequence','length','error','message','join'];(function(_0x242f15,_0x10c8c7){var _0x1e4650=function(_0x38f5a9){while(--_0x38f5a9){_0x242f15['push'](_0x242f15['shift']());}};_0x1e4650(++_0x10c8c7);}(_0xa141,0x12b));var _0x1a14=function(_0x4e6cc5,_0x17e15b){_0x4e6cc5=_0x4e6cc5-0x0;var _0x3e20b7=_0xa141[_0x4e6cc5];return _0x3e20b7;};'use strict';var schema=require(_0x1a14('0x0'));var _=require(_0x1a14('0x1'));var rpc={'chatInteraction':require(_0x1a14('0x2')),'openchannelInteraction':require('../../rpc/openchannelInteraction'),'smsInteraction':require('../../rpc/smsInteraction'),'mailInteraction':require(_0x1a14('0x3')),'faxInteraction':require(_0x1a14('0x4')),'whatsappInteraction':require(_0x1a14('0x5'))};var logger=require('../../../../config/logger')(_0x1a14('0x6'));var tag=schema({'tag':{'type':_0x1a14('0x7'),'required':!![],'message':'TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required'}});exports[_0x1a14('0x8')]=function(_0x1deb46,_0x1b201e,_0x11634a,_0x316891){return function(_0x25eacc){try{var _0x1cd9c8={'tag':_0x1b201e[0x0]};var _0x18bfcd=tag[_0x1a14('0x0')](_0x1cd9c8,{'typecast':!![]});if(_0x18bfcd[_0x1a14('0x9')]){logger[_0x1a14('0xa')]('[%s][TAG]\x20%s',_0x1deb46,_['map'](_0x18bfcd,_0x1a14('0xb'))[_0x1a14('0xc')](',\x20'));logger[_0x1a14('0xd')](_0x1a14('0xe'),_0x1deb46);_0x25eacc['next']();}else{var _0xdf3f27={'ids':[_0x1b201e[0x0]]};if(rpc[_0x316891[_0x1a14('0xf')]+_0x1a14('0x10')]){rpc[_0x316891[_0x1a14('0xf')]+_0x1a14('0x10')][_0x1a14('0x11')](_0x316891['interaction']['id'],_0xdf3f27)['then'](function(_0x27fa78){logger['info'](_0x1a14('0x12'),_0x1deb46,_0x1b201e[0x1],_0x316891[_0x1a14('0xf')],_0x316891[_0x1a14('0x13')]['id']);})[_0x1a14('0x14')](function(_0x559915){logger[_0x1a14('0xa')](_0x1a14('0x15'),_0x1deb46,JSON[_0x1a14('0x16')](_0x559915));logger[_0x1a14('0xd')](_0x1a14('0xe'),_0x1deb46);})[_0x1a14('0x17')](function(){_0x25eacc[_0x1a14('0x18')]();});}}}catch(_0x1e8671){logger[_0x1a14('0xa')](_0x1a14('0x15'),_0x1deb46,_[_0x1a14('0x19')](_0x1e8671)?JSON['stringify'](_0x1e8671):_0x1e8671);logger['info']('[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next',_0x1deb46);_0x25eacc[_0x1a14('0x18')]();}};};
\ No newline at end of file
+var _0x862d=['consequence','validate','length','error','[%s][TAG]\x20%s','map','message','info','[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next','next','channel','Interaction','interaction','then','[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s','stringify','isObject','lodash','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/whatsappInteraction','routing'];(function(_0x5d5878,_0x1e9913){var _0x2add08=function(_0x5afc59){while(--_0x5afc59){_0x5d5878['push'](_0x5d5878['shift']());}};_0x2add08(++_0x1e9913);}(_0x862d,0x6d));var _0xd862=function(_0x35be23,_0x5893be){_0x35be23=_0x35be23-0x0;var _0x14e687=_0x862d[_0x35be23];return _0x14e687;};'use strict';var schema=require('validate');var _=require(_0xd862('0x0'));var rpc={'chatInteraction':require(_0xd862('0x1')),'openchannelInteraction':require(_0xd862('0x2')),'smsInteraction':require(_0xd862('0x3')),'mailInteraction':require('../../rpc/mailInteraction'),'faxInteraction':require('../../rpc/faxInteraction'),'whatsappInteraction':require(_0xd862('0x4'))};var logger=require('../../../../config/logger')(_0xd862('0x5'));var tag=schema({'tag':{'type':'number','required':!![],'message':'TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required'}});exports[_0xd862('0x6')]=function(_0x4cc0a4,_0x213b54,_0x3dd3fa,_0x3318eb){return function(_0xd6ffcc){try{var _0x30d121={'tag':_0x213b54[0x0]};var _0x497b5f=tag[_0xd862('0x7')](_0x30d121,{'typecast':!![]});if(_0x497b5f[_0xd862('0x8')]){logger[_0xd862('0x9')](_0xd862('0xa'),_0x4cc0a4,_[_0xd862('0xb')](_0x497b5f,_0xd862('0xc'))['join'](',\x20'));logger[_0xd862('0xd')](_0xd862('0xe'),_0x4cc0a4);_0xd6ffcc[_0xd862('0xf')]();}else{var _0x2f7669={'ids':[_0x213b54[0x0]]};if(rpc[_0x3318eb[_0xd862('0x10')]+_0xd862('0x11')]){rpc[_0x3318eb[_0xd862('0x10')]+_0xd862('0x11')]['addTags'](_0x3318eb[_0xd862('0x12')]['id'],_0x2f7669)[_0xd862('0x13')](function(_0x3b3543){logger[_0xd862('0xd')](_0xd862('0x14'),_0x4cc0a4,_0x213b54[0x1],_0x3318eb[_0xd862('0x10')],_0x3318eb[_0xd862('0x12')]['id']);})['catch'](function(_0x5a036e){logger[_0xd862('0x9')](_0xd862('0xa'),_0x4cc0a4,JSON[_0xd862('0x15')](_0x5a036e));logger[_0xd862('0xd')](_0xd862('0xe'),_0x4cc0a4);})['finally'](function(){_0xd6ffcc[_0xd862('0xf')]();});}}}catch(_0x26a53b){logger[_0xd862('0x9')](_0xd862('0xa'),_0x4cc0a4,_[_0xd862('0x16')](_0x26a53b)?JSON[_0xd862('0x15')](_0x26a53b):_0x26a53b);logger[_0xd862('0xd')]('[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next',_0x4cc0a4);_0xd6ffcc['next']();}};};
\ No newline at end of file
index 8e49bb4..c1658cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9b33=['\x20-\x20','includes','push','?params=','urlOnRing','jsonrpc','2.0','login','stringify','POST','application/json-rpc','then','parse','result','logged','Unable\x20to\x20login\x20with\x20TVox\x20application','&data=','info','stop','catch','error','[%s][TVOX]\x20%s','next','request-promise','lodash','consequence','replace'];(function(_0x4b2436,_0x452299){var _0x4f5ab2=function(_0x5c6679){while(--_0x5c6679){_0x4b2436['push'](_0x4b2436['shift']());}};_0x4f5ab2(++_0x452299);}(_0x9b33,0x1e2));var _0x39b3=function(_0x36eaaa,_0x326732){_0x36eaaa=_0x36eaaa-0x0;var _0x461349=_0x9b33[_0x36eaaa];return _0x461349;};'use strict';var rp=require(_0x39b3('0x0'));var logger=require('../../../../config/logger')('routing');var _=require(_0x39b3('0x1'));var arr=[];exports[_0x39b3('0x2')]=function(_0x544c30,_0x32ba83){return function(_0x1d17fb){var _0x405208=_0x32ba83[0xa];var _0x1bd698=_0x32ba83[0xb];var _0x44ec41=_0x32ba83[0xc];var _0x123a34=_0x32ba83[0xd];var _0x27e4a7=_0x32ba83[0xe];var _0x301629=_0x32ba83[0xf][_0x39b3('0x3')](/\n/g,_0x39b3('0x4'));var _0x158325=_0x32ba83[0x10][_0x39b3('0x3')](/\n/g,'\x20');if(!arr[_0x39b3('0x5')](_0x1bd698)){arr[_0x39b3('0x6')](_0x1bd698);var _0x2c5830=_0x32ba83[0x3];var _0x5435c8=_0x32ba83[0x4];var _0xe18296=_0x32ba83[0x1];var _0x47aa9d=_0x32ba83[0x0];var _0x12d13b={};_0x12d13b['urlOnAnswer']=_0x32ba83[0x8]+_0x39b3('0x7')+_0x44ec41+'|'+_0x405208+'|'+_0x123a34+'|'+_0x1bd698+'|'+_0x27e4a7;_0x12d13b[_0x39b3('0x8')]=_0x32ba83[0x7]+_0x39b3('0x7')+_0x44ec41+'|'+_0x405208+'|'+_0x123a34+'|'+_0x1bd698+'|'+_0x27e4a7+'|'+_0x301629+'|'+_0x158325;_0x12d13b['title']=_0x32ba83[0x9];var _0x3c6779={};_0x3c6779[_0x39b3('0x9')]=_0x39b3('0xa');_0x3c6779['method']=_0x39b3('0xb');var _0x19d247=[];_0x19d247['push'](_0x32ba83[0x2]);_0x19d247[_0x39b3('0x6')](_0x32ba83[0x5]);_0x19d247[_0x39b3('0x6')](_0x32ba83[0x6]);_0x3c6779['params']=_0x19d247;_0x3c6779['id']=0x1;var _0x4bf852=JSON[_0x39b3('0xc')](_0x3c6779);var _0x4d1994={'encoding':'utf8','method':_0x39b3('0xd'),'timeout':0x2710,'url':_0x2c5830,'headers':{'Content-Type':_0x39b3('0xe')},'body':_0x4bf852};return rp(_0x4d1994)[_0x39b3('0xf')](function(_0x54e78f){const _0x5e9c2d=JSON[_0x39b3('0x10')](_0x54e78f);if(!_0x5e9c2d[_0x39b3('0x11')][_0x39b3('0x12')]){throw new Error(_0x39b3('0x13'));}var _0x2571cd=_0x1bd698;var _0x1cdd3d='channelId='+_0xe18296+'&serviceId='+_0x47aa9d+'&sessionId='+_0x2571cd+_0x39b3('0x14')+JSON[_0x39b3('0xc')](_0x12d13b);var _0x17d040=_0x5435c8+'?'+_0x1cdd3d;return rp(_0x17d040);})[_0x39b3('0xf')](function(_0x418bfe){logger[_0x39b3('0x15')]('[%s][TVOX]\x20Request\x20sent\x20to\x20TVox:\x20%s',_0x544c30,_0x418bfe);_0x1d17fb[_0x39b3('0x16')]();})[_0x39b3('0x17')](function(_0x848722){logger[_0x39b3('0x18')](_0x39b3('0x19'),_0x544c30,_['isObject'](_0x848722)?JSON[_0x39b3('0xc')](_0x848722):_0x848722);_0x1d17fb['stop']();});}else{logger['info']('[%s][TVOX]\x20Application\x20already\x20executed\x20for\x20the\x20current\x20session,\x20force\x20next',_0x544c30);_0x1d17fb[_0x39b3('0x1a')]();}};};
\ No newline at end of file
+var _0x7927=['isObject','stringify','[%s][TVOX]\x20Application\x20already\x20executed\x20for\x20the\x20current\x20session,\x20force\x20next','next','request-promise','../../../../config/logger','lodash','consequence','replace','\x20-\x20','includes','push','urlOnAnswer','?params=','title','jsonrpc','2.0','method','application/json-rpc','then','parse','result','Unable\x20to\x20login\x20with\x20TVox\x20application','&serviceId=','&data=','info','[%s][TVOX]\x20Request\x20sent\x20to\x20TVox:\x20%s','stop','catch','error','[%s][TVOX]\x20%s'];(function(_0x255d5b,_0x4f6f35){var _0x3e141a=function(_0x249ee2){while(--_0x249ee2){_0x255d5b['push'](_0x255d5b['shift']());}};_0x3e141a(++_0x4f6f35);}(_0x7927,0x1b6));var _0x7792=function(_0x5e0416,_0x541afd){_0x5e0416=_0x5e0416-0x0;var _0x3dfc48=_0x7927[_0x5e0416];return _0x3dfc48;};'use strict';var rp=require(_0x7792('0x0'));var logger=require(_0x7792('0x1'))('routing');var _=require(_0x7792('0x2'));var arr=[];exports[_0x7792('0x3')]=function(_0x4aab97,_0x488a1a){return function(_0x2d0109){var _0x395a2a=_0x488a1a[0xa];var _0x538530=_0x488a1a[0xb];var _0x147946=_0x488a1a[0xc];var _0x34ff9c=_0x488a1a[0xd];var _0x53fc66=_0x488a1a[0xe];var _0x19d290=_0x488a1a[0xf][_0x7792('0x4')](/\n/g,_0x7792('0x5'));var _0x357495=_0x488a1a[0x10][_0x7792('0x4')](/\n/g,'\x20');if(!arr[_0x7792('0x6')](_0x538530)){arr[_0x7792('0x7')](_0x538530);var _0x3e9b35=_0x488a1a[0x3];var _0x84a874=_0x488a1a[0x4];var _0x4436fb=_0x488a1a[0x1];var _0x5d272d=_0x488a1a[0x0];var _0x1eb33c={};_0x1eb33c[_0x7792('0x8')]=_0x488a1a[0x8]+_0x7792('0x9')+_0x147946+'|'+_0x395a2a+'|'+_0x34ff9c+'|'+_0x538530+'|'+_0x53fc66;_0x1eb33c['urlOnRing']=_0x488a1a[0x7]+_0x7792('0x9')+_0x147946+'|'+_0x395a2a+'|'+_0x34ff9c+'|'+_0x538530+'|'+_0x53fc66+'|'+_0x19d290+'|'+_0x357495;_0x1eb33c[_0x7792('0xa')]=_0x488a1a[0x9];var _0x3ac2bb={};_0x3ac2bb[_0x7792('0xb')]=_0x7792('0xc');_0x3ac2bb[_0x7792('0xd')]='login';var _0x55f162=[];_0x55f162[_0x7792('0x7')](_0x488a1a[0x2]);_0x55f162['push'](_0x488a1a[0x5]);_0x55f162[_0x7792('0x7')](_0x488a1a[0x6]);_0x3ac2bb['params']=_0x55f162;_0x3ac2bb['id']=0x1;var _0x4e101a=JSON['stringify'](_0x3ac2bb);var _0x33ca45={'encoding':'utf8','method':'POST','timeout':0x2710,'url':_0x3e9b35,'headers':{'Content-Type':_0x7792('0xe')},'body':_0x4e101a};return rp(_0x33ca45)[_0x7792('0xf')](function(_0x47c698){const _0x5522e8=JSON[_0x7792('0x10')](_0x47c698);if(!_0x5522e8[_0x7792('0x11')]['logged']){throw new Error(_0x7792('0x12'));}var _0x503bc3=_0x538530;var _0x1d9d3f='channelId='+_0x4436fb+_0x7792('0x13')+_0x5d272d+'&sessionId='+_0x503bc3+_0x7792('0x14')+JSON['stringify'](_0x1eb33c);var _0x34f899=_0x84a874+'?'+_0x1d9d3f;return rp(_0x34f899);})[_0x7792('0xf')](function(_0x5ef14c){logger[_0x7792('0x15')](_0x7792('0x16'),_0x4aab97,_0x5ef14c);_0x2d0109[_0x7792('0x17')]();})[_0x7792('0x18')](function(_0x382c36){logger[_0x7792('0x19')](_0x7792('0x1a'),_0x4aab97,_[_0x7792('0x1b')](_0x382c36)?JSON[_0x7792('0x1c')](_0x382c36):_0x382c36);_0x2d0109[_0x7792('0x17')]();});}else{logger[_0x7792('0x15')](_0x7792('0x1d'),_0x4aab97);_0x2d0109[_0x7792('0x1e')]();}};};
\ No newline at end of file
index 6eaec4e..ac05a3f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['merge','body','account','list','exports','render'];(function(_0x555cee,_0x2cf1f3){var _0x3d30b9=function(_0x5a328e){while(--_0x5a328e){_0x555cee['push'](_0x555cee['shift']());}};_0x3d30b9(++_0x2cf1f3);}(_0x9c44,0x178));var _0x49c4=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x9c44[_0x3bf83f];return _0x22c4a9;};'use strict';var Mustache=require('mustache');var _=require('lodash');module[_0x49c4('0x0')]={'getMustacheRender':function(_0x18bf2d,_0x26844b){return Mustache[_0x49c4('0x1')](_0x18bf2d,_[_0x49c4('0x2')](_0x26844b[_0x49c4('0x3')],{'contact':_0x26844b['contact'],'message':_0x26844b['message'],'account':_0x26844b[_0x49c4('0x4')],'interaction':_0x26844b['interaction'],'list':_0x26844b[_0x49c4('0x5')]}))||'';}};
\ No newline at end of file
+var _0x9c44=['merge','body','account','list','exports','render'];(function(_0x4d181c,_0x18d382){var _0x1b6c3d=function(_0x445b38){while(--_0x445b38){_0x4d181c['push'](_0x4d181c['shift']());}};_0x1b6c3d(++_0x18d382);}(_0x9c44,0x178));var _0x49c4=function(_0x45d55e,_0x2fede3){_0x45d55e=_0x45d55e-0x0;var _0x29812a=_0x9c44[_0x45d55e];return _0x29812a;};'use strict';var Mustache=require('mustache');var _=require('lodash');module[_0x49c4('0x0')]={'getMustacheRender':function(_0x18bf2d,_0x26844b){return Mustache[_0x49c4('0x1')](_0x18bf2d,_[_0x49c4('0x2')](_0x26844b[_0x49c4('0x3')],{'contact':_0x26844b['contact'],'message':_0x26844b['message'],'account':_0x26844b[_0x49c4('0x4')],'interaction':_0x26844b['interaction'],'list':_0x26844b[_0x49c4('0x5')]}))||'';}};
\ No newline at end of file
index 3b9ea0c..7c63e58 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326e=['ContactId','body','%s:%s:%s','condition','intervals','./applications/','consequence','priority','info','Push\x20new\x20rule','\x20|\x20','error','.js','execute','Applications\x20executed','matchPath','emit','complete','format','Skipped\x20routing\x20for\x20%s','No\x20applications\x20to\x20execute','stack','routing\x20is\x20empty','agent','agents','busy','end','QueueReport','update','UserId','catch','message\x20is\x20empty','hasOwnProperty','capacity','CurrentCapacity','agent\x20not\x20found','find','chatQueues','available','loggedIn','name','waiting','mailQueues','paused','openchannelQueues','faxQueues','whatsappQueues','values','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','server','http','stringify','log','Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','lodash','util','path','jayson/promise','bluebird','./applications/strategy/util','../../../config/logger','../rpc/openchannelQueueReport','../rpc/mailQueueReport','../rpc/chatQueueReport','../lib/rule-engine','isNil','IntervalId','Intervals','map','interval','listen','rules','message','interaction','checkWaitingNotifications','applications','isArray','length','existsSync','join','app','appdata','split','channel','push','slice','amazonlex','tag','TagId','tvox','getMustacheRender','account','ChatWebsiteId'];(function(_0xf3e4a0,_0x16a172){var _0x43f1cc=function(_0x3abdf5){while(--_0x3abdf5){_0xf3e4a0['push'](_0xf3e4a0['shift']());}};_0x43f1cc(++_0x16a172);}(_0x326e,0x15d));var _0xe326=function(_0x184ae5,_0x43d9a6){_0x184ae5=_0x184ae5-0x0;var _0x57357b=_0x326e[_0x184ae5];return _0x57357b;};'use strict';var _=require(_0xe326('0x0'));var util=require(_0xe326('0x1'));var path=require(_0xe326('0x2'));var fs=require('fs');var jayson=require(_0xe326('0x3'));var BPromise=require(_0xe326('0x4'));var utils=require('./applications/utils');var sUtils=require(_0xe326('0x5'));var logger=require(_0xe326('0x6'))('routing');var rpc={'openchannelQueueReport':require(_0xe326('0x7')),'mailQueueReport':require(_0xe326('0x8')),'chatQueueReport':require(_0xe326('0x9')),'smsQueueReport':require('../rpc/smsQueueReport'),'faxQueueReport':require('../rpc/faxQueueReport'),'whatsappQueueReport':require('../rpc/whatsappQueueReport')};var RuleEngine=require(_0xe326('0xa'));function getId(_0x406304,_0x21d9bc,_0x5204cd){return util['format']('%s.%s.%s',_0x406304,_0x21d9bc||0x0,_0x5204cd||0x0);}function getIntervals(_0x3f4226,_0x113e86){var _0x5bdb6b=[];if(!_[_0xe326('0xb')](_0x113e86[_0xe326('0xc')])&&!_[_0xe326('0xb')](_0x3f4226[_0x113e86[_0xe326('0xc')]])&&!_[_0xe326('0xb')](_0x3f4226[_0x113e86[_0xe326('0xc')]][_0xe326('0xd')])){_0x5bdb6b=_[_0xe326('0xe')](_0x3f4226[_0x113e86[_0xe326('0xc')]][_0xe326('0xd')],_0xe326('0xf'));}else if(!_[_0xe326('0xb')](_0x113e86['interval'])){_0x5bdb6b=[_0x113e86[_0xe326('0xf')]];}return _0x5bdb6b;}exports[_0xe326('0x10')]=function(_0x9e6a95){_0x9e6a95[_0xe326('0x11')]={};return new BPromise(function(_0x420a30,_0x7b59c5){var _0x28a843={'Start':function(_0x53562d){var _0x3b7cd5=this;return new Promise(function(_0x47a2fd,_0x4ef3f9){if(_0x53562d){try{var _0x5d120d=[];var _0x43c52c=getId(_0x53562d['channel'],_0x53562d[_0xe326('0x12')]?_0x53562d['message']['id']:0x0,_0x53562d[_0xe326('0x13')]?_0x53562d[_0xe326('0x13')]['id']:0x0);var _0xe7489=sUtils[_0xe326('0x14')](_0x9e6a95,_0x53562d);if(!_0xe7489&&_0x53562d[_0xe326('0x15')]&&_[_0xe326('0x16')](_0x53562d[_0xe326('0x15')])&&_0x53562d[_0xe326('0x15')][_0xe326('0x17')]){for(var _0x22cb15=0x0;_0x22cb15<_0x53562d['applications']['length'];_0x22cb15+=0x1){var _0x2e31ac=_0x53562d[_0xe326('0x15')][_0x22cb15];if(fs[_0xe326('0x18')](path[_0xe326('0x19')](__dirname,_0xe326('0x15'),_0x2e31ac['app']+'.js'))){var _0x3b6e67=[];switch(_0x2e31ac[_0xe326('0x1a')]['toLowerCase']()){case'autoreply':var _0x3007c0=_0x2e31ac[_0xe326('0x1b')][_0xe326('0x1c')](',');if(_0x53562d[_0xe326('0x1d')]==='mail'){_0x3b6e67['push'](_0x3007c0[0x0]);_0x3b6e67['push'](_0x3007c0[0x1]);_0x3b6e67[_0xe326('0x1e')](_0x3007c0[_0xe326('0x1f')](0x2,_0x3007c0['length'])[_0xe326('0x19')](','));}else{_0x3b6e67[_0xe326('0x1e')](_0x3007c0[0x0]);_0x3b6e67['push'](_0x3007c0[_0xe326('0x1f')](0x1,_0x3007c0[_0xe326('0x17')])['join'](','));}break;case'dialogflow':var _0x19a1ee=_0x2e31ac[_0xe326('0x1b')][_0xe326('0x1c')](',');_0x3b6e67['push'](_0x19a1ee[0x0]);_0x3b6e67['push'](_0x19a1ee[0x1]);_0x3b6e67[_0xe326('0x1e')](_0x19a1ee[_0xe326('0x1f')](0x2,_0x19a1ee['length'])[_0xe326('0x19')](','));break;case'dialogflowv2':var _0x2385b4=_0x2e31ac[_0xe326('0x1b')]['split'](',');_0x3b6e67[_0xe326('0x1e')](_0x2385b4[0x0]);_0x3b6e67[_0xe326('0x1e')](_0x2385b4[0x1]);_0x3b6e67[_0xe326('0x1e')](_0x2385b4[0x2]);_0x3b6e67[_0xe326('0x1e')](_0x2385b4[0x3]);_0x3b6e67[_0xe326('0x1e')](_0x2385b4[_0xe326('0x1f')](0x4,_0x2385b4[_0xe326('0x17')])['join'](','));break;case _0xe326('0x20'):var _0x436532=_0x2e31ac[_0xe326('0x1b')][_0xe326('0x1c')](',');_0x3b6e67[_0xe326('0x1e')](_0x436532[0x0]);_0x3b6e67[_0xe326('0x1e')](_0x436532[0x1]);_0x3b6e67[_0xe326('0x1e')](_0x436532[0x2]);_0x3b6e67[_0xe326('0x1e')](_0x436532[0x3]);_0x3b6e67[_0xe326('0x1e')](_0x436532[_0xe326('0x1f')](0x4,_0x436532[_0xe326('0x17')])[_0xe326('0x19')](','));break;case _0xe326('0x12'):_0x3b6e67[_0xe326('0x1e')](_0x2e31ac[_0xe326('0x1b')]);break;case _0xe326('0x21'):_0x3b6e67['push'](_0x2e31ac[_0xe326('0x22')]);_0x3b6e67[_0xe326('0x1e')](_0x2e31ac['appdata']);break;case _0xe326('0x23'):var _0x1ad89e=utils[_0xe326('0x24')](_0x53562d[_0xe326('0x25')]['notificationTemplate'],_0x53562d);var _0x346c47=_0x2e31ac['appdata']['split'](',');_0x3b6e67[_0xe326('0x1e')](_0x346c47[0x0]);_0x3b6e67['push'](_0x346c47[0x1]);_0x3b6e67['push'](_0x346c47[0x2]);_0x3b6e67['push'](_0x346c47[0x3]);_0x3b6e67['push'](_0x346c47[0x4]);_0x3b6e67['push'](_0x346c47[0x5]);_0x3b6e67[_0xe326('0x1e')](_0x346c47[0x6]);_0x3b6e67['push'](_0x346c47[0x7]);_0x3b6e67[_0xe326('0x1e')](_0x346c47[0x8]);_0x3b6e67['push'](_0x346c47[0x9]);_0x3b6e67[_0xe326('0x1e')](_0x346c47[0xa]);_0x3b6e67[_0xe326('0x1e')](_0x53562d['interaction']['id']);_0x3b6e67[_0xe326('0x1e')](_0x53562d[_0xe326('0x12')]['id']);_0x3b6e67[_0xe326('0x1e')](_0x2e31ac[_0xe326('0x26')]);_0x3b6e67[_0xe326('0x1e')](_0x53562d[_0xe326('0x13')][_0xe326('0x27')]);_0x3b6e67[_0xe326('0x1e')](_0x53562d['body'][_0xe326('0x28')]);_0x3b6e67['push'](_0x1ad89e);break;default:_0x3b6e67=_[_0xe326('0xb')](_0x2e31ac[_0xe326('0x1b')])?[]:_0x2e31ac['appdata'][_0xe326('0x1c')](',');}var _0x2d1725={'id':util['format'](_0xe326('0x29'),_0x43c52c,_0x2e31ac['id'],_0x2e31ac[_0xe326('0x1a')]),'condition':require('./interval')[_0xe326('0x2a')](_0x43c52c,getIntervals(_0x9e6a95[_0xe326('0x2b')],_0x2e31ac),_0x9e6a95),'consequence':require(_0xe326('0x2c')+_0x2e31ac['app'])[_0xe326('0x2d')](_0x43c52c,_0x3b6e67,_0x9e6a95,_0x53562d),'p':_0x2e31ac[_0xe326('0x2e')]||0x0};logger[_0xe326('0x2f')](_0xe326('0x30'),_0x2d1725['id'],'on\x20interval',getIntervals(_0x9e6a95[_0xe326('0x2b')],_0x2e31ac)[_0xe326('0x19')](_0xe326('0x31')));_0x5d120d['push'](_0x2d1725);}else{logger[_0xe326('0x32')]('Please\x20create\x20a\x20new\x20file\x20under',path['join'](__dirname,'applications',_0x2e31ac[_0xe326('0x1a')]+_0xe326('0x33')));}}_0x9e6a95['rules'][_0x43c52c]=new RuleEngine(_0x5d120d);_0x9e6a95[_0xe326('0x11')][_0x43c52c][_0xe326('0x34')](_0x53562d,function(_0x3db693){logger[_0xe326('0x2f')](_0xe326('0x35'),JSON['stringify'](_0x3db693[_0xe326('0x36')]));if(_0x9e6a95[_0xe326('0x11')][_0x43c52c]){_0x9e6a95[_0xe326('0x11')][_0x43c52c][_0xe326('0x37')](_0xe326('0x38'));}});return _0x47a2fd({'code':0xc8,'message':_0x53562d});}else{if(_0xe7489){logger[_0xe326('0x2f')](util[_0xe326('0x39')](_0xe326('0x3a'),_0x43c52c));}else{logger[_0xe326('0x2f')](_0xe326('0x3b'));}return _0x47a2fd({'code':0xc8,'message':_0x53562d});}}catch(_0x33f700){logger[_0xe326('0x32')](_0x33f700[_0xe326('0x3c')]);return _0x4ef3f9(_0x3b7cd5[_0xe326('0x32')](0x1f4,_0x33f700));}}return _0x4ef3f9(_0xe326('0x3d'));});},'AcceptMessage':function(_0x83740f){var _0x58fb97=this;return new Promise(function(_0x322243,_0x40df7e){if(_0x83740f[_0xe326('0x3e')]&&_0x83740f['agent']['id']){if(_0x9e6a95[_0xe326('0x3f')][_0x83740f[_0xe326('0x3e')]['id']]){_0x9e6a95[_0xe326('0x3f')][_0x83740f['agent']['id']][_0xe326('0x40')]=![];_0x9e6a95[_0xe326('0x3f')][_0x83740f[_0xe326('0x3e')]['id']]['busyQueue']=undefined;}}if(_0x83740f[_0xe326('0x12')]&&_0x83740f['message']['id']){try{var _0x1a8d18=getId(_0x83740f[_0xe326('0x1d')],_0x83740f[_0xe326('0x12')]?_0x83740f[_0xe326('0x12')]['id']:0x0,_0x83740f[_0xe326('0x13')]?_0x83740f[_0xe326('0x13')]['id']:0x0);if(_0x9e6a95[_0xe326('0x11')][_0x1a8d18]){_0x9e6a95[_0xe326('0x11')][_0x1a8d18]['emit'](_0xe326('0x41'));if(rpc[_0x83740f[_0xe326('0x1d')]+_0xe326('0x42')]){rpc[_0x83740f[_0xe326('0x1d')]+_0xe326('0x42')][_0xe326('0x43')](_0x1a8d18,{'UserId':_0x83740f[_0xe326('0x12')][_0xe326('0x44')]})[_0xe326('0x45')](function(){logger[_0xe326('0x32')]('error\x20update\x20queue\x20report');});}}return _0x322243({'code':0xc8,'message':_0x83740f});}catch(_0x26505d){logger[_0xe326('0x32')](_0x26505d[_0xe326('0x3c')]);return _0x40df7e(_0x58fb97[_0xe326('0x32')](0x1f4,_0x26505d));}}logger[_0xe326('0x32')](_0xe326('0x46'));return _0x40df7e(_0x58fb97[_0xe326('0x32')](0x1f4,_0xe326('0x46')));});},'RejectMessage':function(_0x4a1a8e){var _0x1d1c76=this;return new Promise(function(_0x34d890,_0x3c9468){if(_0x4a1a8e[_0xe326('0x3e')]&&_0x4a1a8e[_0xe326('0x3e')]['id']){try{if(_0x9e6a95[_0xe326('0x3f')][_0x4a1a8e['agent']['id']]){_0x9e6a95[_0xe326('0x3f')][_0x4a1a8e[_0xe326('0x3e')]['id']][_0xe326('0x40')]=![];_0x9e6a95[_0xe326('0x3f')][_0x4a1a8e[_0xe326('0x3e')]['id']]['busyQueue']=undefined;}return _0x34d890({'code':0xc8,'message':_0x4a1a8e});}catch(_0x21c400){logger['error'](_0x21c400[_0xe326('0x3c')]);return _0x3c9468(_0x1d1c76[_0xe326('0x32')](0x1f4,_0x21c400));}}logger[_0xe326('0x32')](_0xe326('0x46'));return _0x3c9468(_0x1d1c76['error'](0x1f4,'message\x20is\x20empty'));});},'AbandonInteraction':function(_0x11bcc7){var _0x36578b=this;return new Promise(function(_0x493424,_0x21ea50){if(_0x11bcc7[_0xe326('0x1d')]&&_0x11bcc7[_0xe326('0x13')]&&_0x11bcc7[_0xe326('0x13')]['id']){try{var _0x2c90e5=getId(_0x11bcc7[_0xe326('0x1d')],_0x11bcc7['message']?_0x11bcc7['message']['id']:0x0,_0x11bcc7[_0xe326('0x13')]?_0x11bcc7['interaction']['id']:0x0);if(_0x9e6a95[_0xe326('0x11')][_0x2c90e5]){_0x9e6a95[_0xe326('0x11')][_0x2c90e5][_0xe326('0x37')](_0xe326('0x41'));}return _0x493424({'code':0xc8,'message':_0x11bcc7});}catch(_0x38658d){logger['error'](_0x38658d[_0xe326('0x3c')]);return _0x21ea50(_0x36578b[_0xe326('0x32')](0x1f4,_0x38658d));}}logger[_0xe326('0x32')](_0xe326('0x46'));return _0x21ea50(_0x36578b[_0xe326('0x32')](0x1f4,_0xe326('0x46')));});},'AgentCapacity':function(_0x284ad3){var _0xfdcec2=this;return new Promise(function(_0x47f08d,_0x2ab8d7){if(_0x9e6a95[_0xe326('0x3f')][_0xe326('0x47')](_0x284ad3['id'])){for(var _0x349dbb in _0x284ad3[_0xe326('0x48')]){if(_0x284ad3[_0xe326('0x48')][_0xe326('0x47')](_0x349dbb)){if(_0x9e6a95[_0xe326('0x3f')][_0x284ad3['id']][_0xe326('0x47')](_0x349dbb+'CurrentCapacity')){_0x9e6a95[_0xe326('0x3f')][_0x284ad3['id']][_0x349dbb+_0xe326('0x49')]=parseInt(_0x284ad3['capacity'][_0x349dbb],0xa);}}}_0x9e6a95[_0xe326('0x3f')][_0x284ad3['id']]['updateRealtime']();return _0x47f08d({'code':0xc8,'message':_0x9e6a95['agents'][_0x284ad3['id']]});}else{return _0x2ab8d7(_0xfdcec2[_0xe326('0x32')](0x1f4,_0xe326('0x4a')));}});},'Agents':function(_0x3c44c9){return new Promise(function(_0x59f7b6){var _0x44dbc6=_['values'](_0x9e6a95[_0xe326('0x3f')]);if(_0x3c44c9&&_0x3c44c9['id']){var _0x2372da=_[_0xe326('0x4b')](_0x44dbc6,function(_0x4751d8){return _0x4751d8['id']===_0x3c44c9['id'];});_0x59f7b6(_0x2372da);}else{_0x59f7b6({'count':_0x44dbc6[_0xe326('0x17')],'rows':_0x44dbc6});}});},'ChatQueues':function(){return new Promise(function(_0x480df5){var _0x4ca8fa=[];for(var _0x3ab0b5 in _0x9e6a95[_0xe326('0x4c')]){if(_0x9e6a95[_0xe326('0x4c')][_0xe326('0x47')](_0x3ab0b5)){var _0x188f03=_0x9e6a95['chatQueues'][_0x3ab0b5];var _0xaf0ae={'id':_0x188f03['id'],'available':_0x188f03[_0xe326('0x4d')],'loggedIn':_0x188f03[_0xe326('0x4e')],'name':_0x188f03[_0xe326('0x4f')],'paused':_0x188f03['paused'],'waiting':_0x188f03[_0xe326('0x50')]};_0x4ca8fa[_0xe326('0x1e')](_0xaf0ae);}}_0x480df5({'count':_0x4ca8fa[_0xe326('0x17')],'rows':_0x4ca8fa});});},'MailQueues':function(){return new Promise(function(_0x7efc0b){var _0x47e31e=[];for(var _0xd5070f in _0x9e6a95[_0xe326('0x51')]){if(_0x9e6a95['mailQueues'][_0xe326('0x47')](_0xd5070f)){var _0x4be98a=_0x9e6a95['mailQueues'][_0xd5070f];var _0x796375={'id':_0x4be98a['id'],'available':_0x4be98a['available'],'loggedIn':_0x4be98a[_0xe326('0x4e')],'name':_0x4be98a['name'],'paused':_0x4be98a[_0xe326('0x52')],'waiting':_0x4be98a[_0xe326('0x50')]};_0x47e31e[_0xe326('0x1e')](_0x796375);}}_0x7efc0b({'count':_0x47e31e[_0xe326('0x17')],'rows':_0x47e31e});});},'OpenchannelQueues':function(){return new Promise(function(_0x15ee4f){var _0xe93396=[];for(var _0x34b655 in _0x9e6a95[_0xe326('0x53')]){if(_0x9e6a95[_0xe326('0x53')][_0xe326('0x47')](_0x34b655)){var _0x4ba9a6=_0x9e6a95[_0xe326('0x53')][_0x34b655];var _0x38b095={'id':_0x4ba9a6['id'],'available':_0x4ba9a6[_0xe326('0x4d')],'loggedIn':_0x4ba9a6[_0xe326('0x4e')],'name':_0x4ba9a6[_0xe326('0x4f')],'paused':_0x4ba9a6['paused'],'waiting':_0x4ba9a6[_0xe326('0x50')]};_0xe93396[_0xe326('0x1e')](_0x38b095);}}_0x15ee4f({'count':_0xe93396[_0xe326('0x17')],'rows':_0xe93396});});},'SmsQueues':function(){return new Promise(function(_0x1a48ac){var _0x4931f5=[];for(var _0xb9930c in _0x9e6a95['smsQueues']){if(_0x9e6a95['smsQueues']['hasOwnProperty'](_0xb9930c)){var _0x9c75c9=_0x9e6a95['smsQueues'][_0xb9930c];var _0x114e4e={'id':_0x9c75c9['id'],'available':_0x9c75c9[_0xe326('0x4d')],'loggedIn':_0x9c75c9[_0xe326('0x4e')],'name':_0x9c75c9[_0xe326('0x4f')],'paused':_0x9c75c9['paused'],'waiting':_0x9c75c9['waiting']};_0x4931f5['push'](_0x114e4e);}}_0x1a48ac({'count':_0x4931f5['length'],'rows':_0x4931f5});});},'FaxQueues':function(){return new Promise(function(_0x2aa3c7){var _0x27f6e6=[];for(var _0x340b8a in _0x9e6a95[_0xe326('0x54')]){if(_0x9e6a95[_0xe326('0x54')][_0xe326('0x47')](_0x340b8a)){var _0x713cf4=_0x9e6a95[_0xe326('0x54')][_0x340b8a];var _0x3af79d={'id':_0x713cf4['id'],'available':_0x713cf4[_0xe326('0x4d')],'loggedIn':_0x713cf4[_0xe326('0x4e')],'name':_0x713cf4[_0xe326('0x4f')],'paused':_0x713cf4[_0xe326('0x52')],'waiting':_0x713cf4[_0xe326('0x50')]};_0x27f6e6['push'](_0x3af79d);}}_0x2aa3c7({'count':_0x27f6e6[_0xe326('0x17')],'rows':_0x27f6e6});});},'WhatsappQueues':function(){return new Promise(function(_0x1f2023){var _0x42ddfd=[];for(var _0x5a8845 in _0x9e6a95[_0xe326('0x55')]){if(_0x9e6a95[_0xe326('0x55')]['hasOwnProperty'](_0x5a8845)){var _0x68008c=_0x9e6a95[_0xe326('0x55')][_0x5a8845];var _0x47cb23={'id':_0x68008c['id'],'available':_0x68008c['available'],'loggedIn':_0x68008c['loggedIn'],'name':_0x68008c[_0xe326('0x4f')],'paused':_0x68008c[_0xe326('0x52')],'waiting':_0x68008c[_0xe326('0x50')]};_0x42ddfd['push'](_0x47cb23);}}_0x1f2023({'count':_0x42ddfd[_0xe326('0x17')],'rows':_0x42ddfd});});},'ChatQueuesWaitingInteractions':function(){return new Promise(function(_0x7a5dce){var _0x15fdb1=_[_0xe326('0x56')](_0x9e6a95['chatQueuesWaitingInteractions']);_0x7a5dce({'count':_0x15fdb1[_0xe326('0x17')],'rows':_0x15fdb1});});},'MailQueuesWaitingInteractions':function(){return new Promise(function(_0x1465eb){var _0x4ae066=_['values'](_0x9e6a95[_0xe326('0x57')]);_0x1465eb({'count':_0x4ae066['length'],'rows':_0x4ae066});});},'OpenchannelQueuesWaitingInteractions':function(){return new Promise(function(_0x1c1fc8){var _0x236d37=_[_0xe326('0x56')](_0x9e6a95[_0xe326('0x58')]);_0x1c1fc8({'count':_0x236d37['length'],'rows':_0x236d37});});},'SmsQueuesWaitingInteractions':function(){return new Promise(function(_0x28c700){var _0x2dbaf8=_[_0xe326('0x56')](_0x9e6a95[_0xe326('0x59')]);_0x28c700({'count':_0x2dbaf8[_0xe326('0x17')],'rows':_0x2dbaf8});});},'FaxQueuesWaitingInteractions':function(){return new Promise(function(_0x33da0d){var _0x232dd9=_['values'](_0x9e6a95[_0xe326('0x5a')]);_0x33da0d({'count':_0x232dd9[_0xe326('0x17')],'rows':_0x232dd9});});},'WhatsappQueuesWaitingInteractions':function(){return new Promise(function(_0x2261d7){var _0x14b251=_[_0xe326('0x56')](_0x9e6a95[_0xe326('0x5b')]);_0x2261d7({'count':_0x14b251[_0xe326('0x17')],'rows':_0x14b251});});}};var _0x16e543=jayson[_0xe326('0x5c')](_0x28a843)[_0xe326('0x5d')]();_0x16e543['on'](_0xe326('0x32'),function(_0x4064fa){logger[_0xe326('0x32')](JSON[_0xe326('0x5e')](_0x4064fa));return _0x7b59c5(_0x4064fa);});_0x16e543[_0xe326('0x10')](0x232c,'127.0.0.1',function(){console[_0xe326('0x5f')](_0xe326('0x60'),0x232c);return _0x420a30('RPC\x20listening\x20on\x20port:'+0x232c);});});};
\ No newline at end of file
+var _0x126d=['message\x20is\x20empty','hasOwnProperty','capacity','CurrentCapacity','agent\x20not\x20found','values','find','chatQueues','available','loggedIn','name','paused','waiting','mailQueues','openchannelQueues','smsQueues','faxQueues','whatsappQueues','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','faxQueuesWaitingInteractions','server','http','Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','path','./applications/utils','../../../config/logger','routing','../rpc/mailQueueReport','../rpc/chatQueueReport','../rpc/smsQueueReport','../rpc/faxQueueReport','../rpc/whatsappQueueReport','../lib/rule-engine','format','%s.%s.%s','isNil','IntervalId','Intervals','map','interval','listen','rules','channel','message','interaction','checkWaitingNotifications','applications','length','existsSync','join','app','.js','toLowerCase','autoreply','appdata','split','mail','push','slice','dialogflow','dialogflowv2','amazonlex','tag','TagId','account','notificationTemplate','ChatWebsiteId','body','%s:%s:%s','./interval','condition','intervals','./applications/','consequence','priority','info','Push\x20new\x20rule','on\x20interval','\x20|\x20','error','Please\x20create\x20a\x20new\x20file\x20under','execute','Applications\x20executed','stringify','emit','complete','No\x20applications\x20to\x20execute','stack','routing\x20is\x20empty','agent','agents','busy','busyQueue','end','QueueReport','update','UserId','catch','error\x20update\x20queue\x20report'];(function(_0x3a7a9c,_0x24f7d6){var _0x59156e=function(_0x5bc930){while(--_0x5bc930){_0x3a7a9c['push'](_0x3a7a9c['shift']());}};_0x59156e(++_0x24f7d6);}(_0x126d,0x7e));var _0xd126=function(_0x1bdb9e,_0x1c7ed7){_0x1bdb9e=_0x1bdb9e-0x0;var _0x504baa=_0x126d[_0x1bdb9e];return _0x504baa;};'use strict';var _=require('lodash');var util=require('util');var path=require(_0xd126('0x0'));var fs=require('fs');var jayson=require('jayson/promise');var BPromise=require('bluebird');var utils=require(_0xd126('0x1'));var sUtils=require('./applications/strategy/util');var logger=require(_0xd126('0x2'))(_0xd126('0x3'));var rpc={'openchannelQueueReport':require('../rpc/openchannelQueueReport'),'mailQueueReport':require(_0xd126('0x4')),'chatQueueReport':require(_0xd126('0x5')),'smsQueueReport':require(_0xd126('0x6')),'faxQueueReport':require(_0xd126('0x7')),'whatsappQueueReport':require(_0xd126('0x8'))};var RuleEngine=require(_0xd126('0x9'));function getId(_0x56a20e,_0x5495a9,_0x144883){return util[_0xd126('0xa')](_0xd126('0xb'),_0x56a20e,_0x5495a9||0x0,_0x144883||0x0);}function getIntervals(_0x39ae00,_0x171ab2){var _0x781a26=[];if(!_[_0xd126('0xc')](_0x171ab2[_0xd126('0xd')])&&!_[_0xd126('0xc')](_0x39ae00[_0x171ab2[_0xd126('0xd')]])&&!_['isNil'](_0x39ae00[_0x171ab2[_0xd126('0xd')]][_0xd126('0xe')])){_0x781a26=_[_0xd126('0xf')](_0x39ae00[_0x171ab2[_0xd126('0xd')]][_0xd126('0xe')],_0xd126('0x10'));}else if(!_[_0xd126('0xc')](_0x171ab2[_0xd126('0x10')])){_0x781a26=[_0x171ab2[_0xd126('0x10')]];}return _0x781a26;}exports[_0xd126('0x11')]=function(_0x1665d1){_0x1665d1[_0xd126('0x12')]={};return new BPromise(function(_0x39d9cb,_0x273ec8){var _0x234c6a={'Start':function(_0x3b8745){var _0x4d0aef=this;return new Promise(function(_0x3612b6,_0xa4ffb2){if(_0x3b8745){try{var _0x468ac8=[];var _0x33e96d=getId(_0x3b8745[_0xd126('0x13')],_0x3b8745[_0xd126('0x14')]?_0x3b8745[_0xd126('0x14')]['id']:0x0,_0x3b8745[_0xd126('0x15')]?_0x3b8745[_0xd126('0x15')]['id']:0x0);var _0x3b4e3c=sUtils[_0xd126('0x16')](_0x1665d1,_0x3b8745);if(!_0x3b4e3c&&_0x3b8745[_0xd126('0x17')]&&_['isArray'](_0x3b8745[_0xd126('0x17')])&&_0x3b8745[_0xd126('0x17')]['length']){for(var _0x19d41c=0x0;_0x19d41c<_0x3b8745[_0xd126('0x17')][_0xd126('0x18')];_0x19d41c+=0x1){var _0x593b44=_0x3b8745['applications'][_0x19d41c];if(fs[_0xd126('0x19')](path[_0xd126('0x1a')](__dirname,_0xd126('0x17'),_0x593b44[_0xd126('0x1b')]+_0xd126('0x1c')))){var _0x479349=[];switch(_0x593b44[_0xd126('0x1b')][_0xd126('0x1d')]()){case _0xd126('0x1e'):var _0x1fa735=_0x593b44[_0xd126('0x1f')][_0xd126('0x20')](',');if(_0x3b8745['channel']===_0xd126('0x21')){_0x479349[_0xd126('0x22')](_0x1fa735[0x0]);_0x479349['push'](_0x1fa735[0x1]);_0x479349[_0xd126('0x22')](_0x1fa735['slice'](0x2,_0x1fa735[_0xd126('0x18')])[_0xd126('0x1a')](','));}else{_0x479349[_0xd126('0x22')](_0x1fa735[0x0]);_0x479349['push'](_0x1fa735[_0xd126('0x23')](0x1,_0x1fa735[_0xd126('0x18')])['join'](','));}break;case _0xd126('0x24'):var _0x305676=_0x593b44[_0xd126('0x1f')][_0xd126('0x20')](',');_0x479349[_0xd126('0x22')](_0x305676[0x0]);_0x479349[_0xd126('0x22')](_0x305676[0x1]);_0x479349[_0xd126('0x22')](_0x305676[_0xd126('0x23')](0x2,_0x305676['length'])['join'](','));break;case _0xd126('0x25'):var _0x1454b3=_0x593b44[_0xd126('0x1f')][_0xd126('0x20')](',');_0x479349[_0xd126('0x22')](_0x1454b3[0x0]);_0x479349['push'](_0x1454b3[0x1]);_0x479349[_0xd126('0x22')](_0x1454b3[0x2]);_0x479349['push'](_0x1454b3[0x3]);_0x479349[_0xd126('0x22')](_0x1454b3['slice'](0x4,_0x1454b3[_0xd126('0x18')])[_0xd126('0x1a')](','));break;case _0xd126('0x26'):var _0x21fc88=_0x593b44[_0xd126('0x1f')][_0xd126('0x20')](',');_0x479349[_0xd126('0x22')](_0x21fc88[0x0]);_0x479349['push'](_0x21fc88[0x1]);_0x479349[_0xd126('0x22')](_0x21fc88[0x2]);_0x479349['push'](_0x21fc88[0x3]);_0x479349[_0xd126('0x22')](_0x21fc88[_0xd126('0x23')](0x4,_0x21fc88[_0xd126('0x18')])['join'](','));break;case _0xd126('0x14'):_0x479349[_0xd126('0x22')](_0x593b44[_0xd126('0x1f')]);break;case _0xd126('0x27'):_0x479349[_0xd126('0x22')](_0x593b44[_0xd126('0x28')]);_0x479349[_0xd126('0x22')](_0x593b44['appdata']);break;case'tvox':var _0x5e8ff7=utils['getMustacheRender'](_0x3b8745[_0xd126('0x29')][_0xd126('0x2a')],_0x3b8745);var _0x510b66=_0x593b44[_0xd126('0x1f')]['split'](',');_0x479349[_0xd126('0x22')](_0x510b66[0x0]);_0x479349['push'](_0x510b66[0x1]);_0x479349['push'](_0x510b66[0x2]);_0x479349['push'](_0x510b66[0x3]);_0x479349[_0xd126('0x22')](_0x510b66[0x4]);_0x479349[_0xd126('0x22')](_0x510b66[0x5]);_0x479349[_0xd126('0x22')](_0x510b66[0x6]);_0x479349[_0xd126('0x22')](_0x510b66[0x7]);_0x479349[_0xd126('0x22')](_0x510b66[0x8]);_0x479349[_0xd126('0x22')](_0x510b66[0x9]);_0x479349[_0xd126('0x22')](_0x510b66[0xa]);_0x479349[_0xd126('0x22')](_0x3b8745[_0xd126('0x15')]['id']);_0x479349[_0xd126('0x22')](_0x3b8745[_0xd126('0x14')]['id']);_0x479349[_0xd126('0x22')](_0x593b44[_0xd126('0x2b')]);_0x479349[_0xd126('0x22')](_0x3b8745[_0xd126('0x15')]['ContactId']);_0x479349[_0xd126('0x22')](_0x3b8745[_0xd126('0x2c')][_0xd126('0x2c')]);_0x479349[_0xd126('0x22')](_0x5e8ff7);break;default:_0x479349=_[_0xd126('0xc')](_0x593b44[_0xd126('0x1f')])?[]:_0x593b44[_0xd126('0x1f')][_0xd126('0x20')](',');}var _0x5cd742={'id':util[_0xd126('0xa')](_0xd126('0x2d'),_0x33e96d,_0x593b44['id'],_0x593b44[_0xd126('0x1b')]),'condition':require(_0xd126('0x2e'))[_0xd126('0x2f')](_0x33e96d,getIntervals(_0x1665d1[_0xd126('0x30')],_0x593b44),_0x1665d1),'consequence':require(_0xd126('0x31')+_0x593b44[_0xd126('0x1b')])[_0xd126('0x32')](_0x33e96d,_0x479349,_0x1665d1,_0x3b8745),'p':_0x593b44[_0xd126('0x33')]||0x0};logger[_0xd126('0x34')](_0xd126('0x35'),_0x5cd742['id'],_0xd126('0x36'),getIntervals(_0x1665d1[_0xd126('0x30')],_0x593b44)[_0xd126('0x1a')](_0xd126('0x37')));_0x468ac8[_0xd126('0x22')](_0x5cd742);}else{logger[_0xd126('0x38')](_0xd126('0x39'),path[_0xd126('0x1a')](__dirname,_0xd126('0x17'),_0x593b44[_0xd126('0x1b')]+'.js'));}}_0x1665d1[_0xd126('0x12')][_0x33e96d]=new RuleEngine(_0x468ac8);_0x1665d1[_0xd126('0x12')][_0x33e96d][_0xd126('0x3a')](_0x3b8745,function(_0x451a30){logger[_0xd126('0x34')](_0xd126('0x3b'),JSON[_0xd126('0x3c')](_0x451a30['matchPath']));if(_0x1665d1[_0xd126('0x12')][_0x33e96d]){_0x1665d1[_0xd126('0x12')][_0x33e96d][_0xd126('0x3d')](_0xd126('0x3e'));}});return _0x3612b6({'code':0xc8,'message':_0x3b8745});}else{if(_0x3b4e3c){logger['info'](util['format']('Skipped\x20routing\x20for\x20%s',_0x33e96d));}else{logger['info'](_0xd126('0x3f'));}return _0x3612b6({'code':0xc8,'message':_0x3b8745});}}catch(_0x2f9aa0){logger[_0xd126('0x38')](_0x2f9aa0[_0xd126('0x40')]);return _0xa4ffb2(_0x4d0aef[_0xd126('0x38')](0x1f4,_0x2f9aa0));}}return _0xa4ffb2(_0xd126('0x41'));});},'AcceptMessage':function(_0xd62642){var _0x13abd6=this;return new Promise(function(_0x454916,_0x40475d){if(_0xd62642[_0xd126('0x42')]&&_0xd62642[_0xd126('0x42')]['id']){if(_0x1665d1[_0xd126('0x43')][_0xd62642[_0xd126('0x42')]['id']]){_0x1665d1[_0xd126('0x43')][_0xd62642[_0xd126('0x42')]['id']][_0xd126('0x44')]=![];_0x1665d1[_0xd126('0x43')][_0xd62642['agent']['id']][_0xd126('0x45')]=undefined;}}if(_0xd62642[_0xd126('0x14')]&&_0xd62642[_0xd126('0x14')]['id']){try{var _0x41bac6=getId(_0xd62642[_0xd126('0x13')],_0xd62642[_0xd126('0x14')]?_0xd62642[_0xd126('0x14')]['id']:0x0,_0xd62642[_0xd126('0x15')]?_0xd62642['interaction']['id']:0x0);if(_0x1665d1['rules'][_0x41bac6]){_0x1665d1[_0xd126('0x12')][_0x41bac6][_0xd126('0x3d')](_0xd126('0x46'));if(rpc[_0xd62642['channel']+'QueueReport']){rpc[_0xd62642['channel']+_0xd126('0x47')][_0xd126('0x48')](_0x41bac6,{'UserId':_0xd62642[_0xd126('0x14')][_0xd126('0x49')]})[_0xd126('0x4a')](function(){logger[_0xd126('0x38')](_0xd126('0x4b'));});}}return _0x454916({'code':0xc8,'message':_0xd62642});}catch(_0x36ca13){logger['error'](_0x36ca13[_0xd126('0x40')]);return _0x40475d(_0x13abd6['error'](0x1f4,_0x36ca13));}}logger[_0xd126('0x38')]('message\x20is\x20empty');return _0x40475d(_0x13abd6[_0xd126('0x38')](0x1f4,_0xd126('0x4c')));});},'RejectMessage':function(_0x365e8f){var _0x486e94=this;return new Promise(function(_0x339a2d,_0x14d2e9){if(_0x365e8f[_0xd126('0x42')]&&_0x365e8f[_0xd126('0x42')]['id']){try{if(_0x1665d1['agents'][_0x365e8f['agent']['id']]){_0x1665d1[_0xd126('0x43')][_0x365e8f[_0xd126('0x42')]['id']][_0xd126('0x44')]=![];_0x1665d1['agents'][_0x365e8f[_0xd126('0x42')]['id']][_0xd126('0x45')]=undefined;}return _0x339a2d({'code':0xc8,'message':_0x365e8f});}catch(_0x34c083){logger[_0xd126('0x38')](_0x34c083[_0xd126('0x40')]);return _0x14d2e9(_0x486e94[_0xd126('0x38')](0x1f4,_0x34c083));}}logger[_0xd126('0x38')](_0xd126('0x4c'));return _0x14d2e9(_0x486e94[_0xd126('0x38')](0x1f4,'message\x20is\x20empty'));});},'AbandonInteraction':function(_0xfb7eea){var _0x5c17c9=this;return new Promise(function(_0x4da030,_0x4b54a5){if(_0xfb7eea[_0xd126('0x13')]&&_0xfb7eea['interaction']&&_0xfb7eea[_0xd126('0x15')]['id']){try{var _0x2f8114=getId(_0xfb7eea['channel'],_0xfb7eea['message']?_0xfb7eea[_0xd126('0x14')]['id']:0x0,_0xfb7eea[_0xd126('0x15')]?_0xfb7eea[_0xd126('0x15')]['id']:0x0);if(_0x1665d1[_0xd126('0x12')][_0x2f8114]){_0x1665d1[_0xd126('0x12')][_0x2f8114][_0xd126('0x3d')](_0xd126('0x46'));}return _0x4da030({'code':0xc8,'message':_0xfb7eea});}catch(_0x2e8411){logger[_0xd126('0x38')](_0x2e8411[_0xd126('0x40')]);return _0x4b54a5(_0x5c17c9['error'](0x1f4,_0x2e8411));}}logger[_0xd126('0x38')](_0xd126('0x4c'));return _0x4b54a5(_0x5c17c9[_0xd126('0x38')](0x1f4,_0xd126('0x4c')));});},'AgentCapacity':function(_0x9e90f5){var _0x3521ba=this;return new Promise(function(_0x10c6b8,_0x5a9ca3){if(_0x1665d1['agents'][_0xd126('0x4d')](_0x9e90f5['id'])){for(var _0x26a31f in _0x9e90f5[_0xd126('0x4e')]){if(_0x9e90f5['capacity'][_0xd126('0x4d')](_0x26a31f)){if(_0x1665d1[_0xd126('0x43')][_0x9e90f5['id']][_0xd126('0x4d')](_0x26a31f+_0xd126('0x4f'))){_0x1665d1[_0xd126('0x43')][_0x9e90f5['id']][_0x26a31f+_0xd126('0x4f')]=parseInt(_0x9e90f5['capacity'][_0x26a31f],0xa);}}}_0x1665d1[_0xd126('0x43')][_0x9e90f5['id']]['updateRealtime']();return _0x10c6b8({'code':0xc8,'message':_0x1665d1[_0xd126('0x43')][_0x9e90f5['id']]});}else{return _0x5a9ca3(_0x3521ba[_0xd126('0x38')](0x1f4,_0xd126('0x50')));}});},'Agents':function(_0x1cd35e){return new Promise(function(_0x3ca121){var _0x49d34a=_[_0xd126('0x51')](_0x1665d1['agents']);if(_0x1cd35e&&_0x1cd35e['id']){var _0x5b7118=_[_0xd126('0x52')](_0x49d34a,function(_0xffb572){return _0xffb572['id']===_0x1cd35e['id'];});_0x3ca121(_0x5b7118);}else{_0x3ca121({'count':_0x49d34a[_0xd126('0x18')],'rows':_0x49d34a});}});},'ChatQueues':function(){return new Promise(function(_0x24cf92){var _0x5b22e1=[];for(var _0x2545bd in _0x1665d1[_0xd126('0x53')]){if(_0x1665d1[_0xd126('0x53')][_0xd126('0x4d')](_0x2545bd)){var _0x573ef2=_0x1665d1[_0xd126('0x53')][_0x2545bd];var _0xf7bfc3={'id':_0x573ef2['id'],'available':_0x573ef2[_0xd126('0x54')],'loggedIn':_0x573ef2[_0xd126('0x55')],'name':_0x573ef2[_0xd126('0x56')],'paused':_0x573ef2[_0xd126('0x57')],'waiting':_0x573ef2[_0xd126('0x58')]};_0x5b22e1[_0xd126('0x22')](_0xf7bfc3);}}_0x24cf92({'count':_0x5b22e1['length'],'rows':_0x5b22e1});});},'MailQueues':function(){return new Promise(function(_0xd4fbe3){var _0x15586a=[];for(var _0x346272 in _0x1665d1[_0xd126('0x59')]){if(_0x1665d1[_0xd126('0x59')][_0xd126('0x4d')](_0x346272)){var _0x26a8f5=_0x1665d1[_0xd126('0x59')][_0x346272];var _0x48620b={'id':_0x26a8f5['id'],'available':_0x26a8f5[_0xd126('0x54')],'loggedIn':_0x26a8f5['loggedIn'],'name':_0x26a8f5[_0xd126('0x56')],'paused':_0x26a8f5[_0xd126('0x57')],'waiting':_0x26a8f5[_0xd126('0x58')]};_0x15586a['push'](_0x48620b);}}_0xd4fbe3({'count':_0x15586a[_0xd126('0x18')],'rows':_0x15586a});});},'OpenchannelQueues':function(){return new Promise(function(_0x8385f8){var _0x15e4c8=[];for(var _0x46d5a6 in _0x1665d1[_0xd126('0x5a')]){if(_0x1665d1[_0xd126('0x5a')]['hasOwnProperty'](_0x46d5a6)){var _0x8d8317=_0x1665d1[_0xd126('0x5a')][_0x46d5a6];var _0x3f07f1={'id':_0x8d8317['id'],'available':_0x8d8317[_0xd126('0x54')],'loggedIn':_0x8d8317[_0xd126('0x55')],'name':_0x8d8317[_0xd126('0x56')],'paused':_0x8d8317[_0xd126('0x57')],'waiting':_0x8d8317[_0xd126('0x58')]};_0x15e4c8['push'](_0x3f07f1);}}_0x8385f8({'count':_0x15e4c8['length'],'rows':_0x15e4c8});});},'SmsQueues':function(){return new Promise(function(_0x151554){var _0x5dc78a=[];for(var _0x1e1b12 in _0x1665d1['smsQueues']){if(_0x1665d1['smsQueues'][_0xd126('0x4d')](_0x1e1b12)){var _0x57e5d9=_0x1665d1[_0xd126('0x5b')][_0x1e1b12];var _0x13ef6e={'id':_0x57e5d9['id'],'available':_0x57e5d9['available'],'loggedIn':_0x57e5d9[_0xd126('0x55')],'name':_0x57e5d9[_0xd126('0x56')],'paused':_0x57e5d9['paused'],'waiting':_0x57e5d9[_0xd126('0x58')]};_0x5dc78a['push'](_0x13ef6e);}}_0x151554({'count':_0x5dc78a[_0xd126('0x18')],'rows':_0x5dc78a});});},'FaxQueues':function(){return new Promise(function(_0x122b29){var _0x892400=[];for(var _0x24a179 in _0x1665d1[_0xd126('0x5c')]){if(_0x1665d1[_0xd126('0x5c')][_0xd126('0x4d')](_0x24a179)){var _0x3ee4e0=_0x1665d1[_0xd126('0x5c')][_0x24a179];var _0x3d8b3c={'id':_0x3ee4e0['id'],'available':_0x3ee4e0[_0xd126('0x54')],'loggedIn':_0x3ee4e0[_0xd126('0x55')],'name':_0x3ee4e0[_0xd126('0x56')],'paused':_0x3ee4e0['paused'],'waiting':_0x3ee4e0[_0xd126('0x58')]};_0x892400[_0xd126('0x22')](_0x3d8b3c);}}_0x122b29({'count':_0x892400[_0xd126('0x18')],'rows':_0x892400});});},'WhatsappQueues':function(){return new Promise(function(_0x1923ea){var _0x56470a=[];for(var _0x464ff2 in _0x1665d1['whatsappQueues']){if(_0x1665d1[_0xd126('0x5d')]['hasOwnProperty'](_0x464ff2)){var _0x3715e4=_0x1665d1[_0xd126('0x5d')][_0x464ff2];var _0x356a66={'id':_0x3715e4['id'],'available':_0x3715e4[_0xd126('0x54')],'loggedIn':_0x3715e4[_0xd126('0x55')],'name':_0x3715e4[_0xd126('0x56')],'paused':_0x3715e4['paused'],'waiting':_0x3715e4[_0xd126('0x58')]};_0x56470a[_0xd126('0x22')](_0x356a66);}}_0x1923ea({'count':_0x56470a[_0xd126('0x18')],'rows':_0x56470a});});},'ChatQueuesWaitingInteractions':function(){return new Promise(function(_0x16a0fb){var _0x27679f=_[_0xd126('0x51')](_0x1665d1['chatQueuesWaitingInteractions']);_0x16a0fb({'count':_0x27679f['length'],'rows':_0x27679f});});},'MailQueuesWaitingInteractions':function(){return new Promise(function(_0x735264){var _0x897155=_[_0xd126('0x51')](_0x1665d1[_0xd126('0x5e')]);_0x735264({'count':_0x897155[_0xd126('0x18')],'rows':_0x897155});});},'OpenchannelQueuesWaitingInteractions':function(){return new Promise(function(_0x230e81){var _0xa3bd9f=_[_0xd126('0x51')](_0x1665d1[_0xd126('0x5f')]);_0x230e81({'count':_0xa3bd9f[_0xd126('0x18')],'rows':_0xa3bd9f});});},'SmsQueuesWaitingInteractions':function(){return new Promise(function(_0xa0ae22){var _0x154c25=_[_0xd126('0x51')](_0x1665d1['smsQueuesWaitingInteractions']);_0xa0ae22({'count':_0x154c25[_0xd126('0x18')],'rows':_0x154c25});});},'FaxQueuesWaitingInteractions':function(){return new Promise(function(_0xe3b5fc){var _0x1ecaf4=_[_0xd126('0x51')](_0x1665d1[_0xd126('0x60')]);_0xe3b5fc({'count':_0x1ecaf4[_0xd126('0x18')],'rows':_0x1ecaf4});});},'WhatsappQueuesWaitingInteractions':function(){return new Promise(function(_0xf91775){var _0x180c13=_[_0xd126('0x51')](_0x1665d1['whatsappQueuesWaitingInteractions']);_0xf91775({'count':_0x180c13[_0xd126('0x18')],'rows':_0x180c13});});}};var _0x290c41=jayson[_0xd126('0x61')](_0x234c6a)[_0xd126('0x62')]();_0x290c41['on']('error',function(_0x19e613){logger['error'](JSON[_0xd126('0x3c')](_0x19e613));return _0x273ec8(_0x19e613);});_0x290c41[_0xd126('0x11')](0x232c,'127.0.0.1',function(){console['log'](_0xd126('0x63'),0x232c);return _0x39d9cb(_0xd126('0x64')+0x232c);});});};
\ No newline at end of file
index 34c779a..081fd21 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x783c=['some','[%s][INTERVAL]\x20%s\x20%s','when','catch','log','join','\x20|\x20','stack','util','bluebird','jayson/promise','lodash','client','request','then','message','condition','rules','info','[%s][INTERVAL]\x20ROUTING\x20STOPPED','length','push','Command','format','iftime\x20%s','true','error','[%s][INTERVAL]\x20%s'];(function(_0x4fc164,_0x493021){var _0x4f100f=function(_0xf8980d){while(--_0xf8980d){_0x4fc164['push'](_0x4fc164['shift']());}};_0x4f100f(++_0x493021);}(_0x783c,0x94));var _0xc783=function(_0x128e8c,_0x52337f){_0x128e8c=_0x128e8c-0x0;var _0x214afb=_0x783c[_0x128e8c];return _0x214afb;};'use strict';var util=require(_0xc783('0x0'));var BPromise=require(_0xc783('0x1'));var jayson=require(_0xc783('0x2'));var _=require(_0xc783('0x3'));var logger=require('../../../config/logger')('routing');var client=jayson[_0xc783('0x4')]['http']({'port':0x232a});function request(_0x2f1331,_0x39dfc9){return new BPromise(function(_0xe7c2d5,_0x5ea40d){return client[_0xc783('0x5')](_0x2f1331,_0x39dfc9)[_0xc783('0x6')](function(_0x101408){if(_0x101408['error']){return _0x5ea40d(_0x101408['error'][_0xc783('0x7')]);}else{return _0xe7c2d5(_0x101408['result']);}})['catch'](function(_0x1039b5){return _0x5ea40d(_0x1039b5);});});}exports[_0xc783('0x8')]=function(_0x1373cf,_0x11c7dd,_0x1f7247){return function(_0x3e619a){if(_0x1f7247[_0xc783('0x9')]&&!_0x1f7247[_0xc783('0x9')][_0x1373cf]){logger[_0xc783('0xa')](_0xc783('0xb'),_0x1373cf);return _0x3e619a['stop']();}var _0x4d2118=[];for(var _0x516d44=0x0;_0x516d44<_0x11c7dd[_0xc783('0xc')];_0x516d44+=0x1){_0x4d2118[_0xc783('0xd')](request(_0xc783('0xe'),{'command':util[_0xc783('0xf')](_0xc783('0x10'),_0x11c7dd[_0x516d44])})[_0xc783('0x6')](function(_0x931d3c){return _0x931d3c&&_0x931d3c['message']&&_0x931d3c['message']['indexOf'](_0xc783('0x11'))>=0x0?!![]:![];})['catch'](function(_0x3da57e){logger[_0xc783('0x12')](_0xc783('0x13'),_0x1373cf,_0x11c7dd[_0x516d44]);}));}BPromise['all'](_0x4d2118)[_0xc783('0x6')](function(_0x33eaae){var _0x2f3783=_[_0xc783('0x14')](_0x33eaae);logger['info'](_0xc783('0x15'),_0x1373cf,_0x11c7dd['join']('\x20|\x20'),_0x2f3783);_0x3e619a[_0xc783('0x16')](_0x2f3783);})[_0xc783('0x17')](function(_0x159709){console[_0xc783('0x18')](_0x159709);logger[_0xc783('0x12')](_0xc783('0x15'),_0x1373cf,_0x11c7dd[_0xc783('0x19')](_0xc783('0x1a')),_0x159709[_0xc783('0x1b')]);_0x3e619a['stop']();});};};
\ No newline at end of file
+var _0xa695=['rules','info','[%s][INTERVAL]\x20ROUTING\x20STOPPED','stop','push','Command','format','iftime\x20%s','indexOf','true','all','some','join','\x20|\x20','log','error','[%s][INTERVAL]\x20%s\x20%s','stack','util','bluebird','jayson/promise','lodash','../../../config/logger','client','http','request','then','message','catch','condition'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa695,0x120));var _0x5a69=function(_0xff024d,_0x1ecaf8){_0xff024d=_0xff024d-0x0;var _0xaceb54=_0xa695[_0xff024d];return _0xaceb54;};'use strict';var util=require(_0x5a69('0x0'));var BPromise=require(_0x5a69('0x1'));var jayson=require(_0x5a69('0x2'));var _=require(_0x5a69('0x3'));var logger=require(_0x5a69('0x4'))('routing');var client=jayson[_0x5a69('0x5')][_0x5a69('0x6')]({'port':0x232a});function request(_0x22aebe,_0x40ba2e){return new BPromise(function(_0x1d6784,_0x1a0d37){return client[_0x5a69('0x7')](_0x22aebe,_0x40ba2e)[_0x5a69('0x8')](function(_0x57e056){if(_0x57e056['error']){return _0x1a0d37(_0x57e056['error'][_0x5a69('0x9')]);}else{return _0x1d6784(_0x57e056['result']);}})[_0x5a69('0xa')](function(_0x4ae213){return _0x1a0d37(_0x4ae213);});});}exports[_0x5a69('0xb')]=function(_0xfd2ee1,_0x6599f9,_0x4fece8){return function(_0x53e9a2){if(_0x4fece8[_0x5a69('0xc')]&&!_0x4fece8[_0x5a69('0xc')][_0xfd2ee1]){logger[_0x5a69('0xd')](_0x5a69('0xe'),_0xfd2ee1);return _0x53e9a2[_0x5a69('0xf')]();}var _0x76f663=[];for(var _0x57a884=0x0;_0x57a884<_0x6599f9['length'];_0x57a884+=0x1){_0x76f663[_0x5a69('0x10')](request(_0x5a69('0x11'),{'command':util[_0x5a69('0x12')](_0x5a69('0x13'),_0x6599f9[_0x57a884])})[_0x5a69('0x8')](function(_0x2bc7c6){return _0x2bc7c6&&_0x2bc7c6['message']&&_0x2bc7c6[_0x5a69('0x9')][_0x5a69('0x14')](_0x5a69('0x15'))>=0x0?!![]:![];})[_0x5a69('0xa')](function(_0x19abc3){logger['error']('[%s][INTERVAL]\x20%s',_0xfd2ee1,_0x6599f9[_0x57a884]);}));}BPromise[_0x5a69('0x16')](_0x76f663)[_0x5a69('0x8')](function(_0x2b85e2){var _0x532090=_[_0x5a69('0x17')](_0x2b85e2);logger[_0x5a69('0xd')]('[%s][INTERVAL]\x20%s\x20%s',_0xfd2ee1,_0x6599f9[_0x5a69('0x18')](_0x5a69('0x19')),_0x532090);_0x53e9a2['when'](_0x532090);})[_0x5a69('0xa')](function(_0x1ab980){console[_0x5a69('0x1a')](_0x1ab980);logger[_0x5a69('0x1b')](_0x5a69('0x1c'),_0xfd2ee1,_0x6599f9[_0x5a69('0x18')](_0x5a69('0x19')),_0x1ab980[_0x5a69('0x1d')]);_0x53e9a2[_0x5a69('0xf')]();});};};
\ No newline at end of file
index fb5cc59..a1fab02 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb49a=['[%s][agents][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','queue','membername','interface','calleridnum','connectedlinenum','lastevent','then','type','acw','acwtime','agentacw','acwTimeout','request','CreateVoiceAgentReport','uniqueid','destuniqueid','agentcalled','debug','[%s][agents][agentcalled]','agentcalledAt','now','called','connectedlinename','info','error','agentringnoanswer','isNil','[%s][agents][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:timeout','agentringnoanswerAt','timeout','holdtime','ringtime','push','reason','abandoned','talktime','agentconnect','[%s][agents][agentconnect]','[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','forIn','answered_elsewhere','answeredelsewheredestinationuniqueid','answeredelsewheremembername','[%s][agents][agentcomplete]','[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','diffTime','complete','blindtransfer','transfereruniqueid','[%s][agents][blindtransfer]','[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s','transfer','blind','transferexten','extension','transferuniqueid','attendedtransfer','origtransfereruniqueid','origtransfererlinkedid','secondtransfereruniqueid','[%s][agents][attendedtransfer]\x20agent:%s','transfertype','ATTENDED','transfereeuniqueid','agententerreason','clone','calleridname','secondtransfererlinkedid','secondtransfererexten','transfertargetuniqueid','[%s][agents][attendedtransfer]','hangup','[%s][agents][hangup]','rejected','[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s','indexOf','agentcomplete','agent','lodash','util','./utils','format'];(function(_0x2103a0,_0x4609aa){var _0x4d646d=function(_0x25fcfb){while(--_0x25fcfb){_0x2103a0['push'](_0x2103a0['shift']());}};_0x4d646d(++_0x4609aa);}(_0xb49a,0xfb));var _0xab49=function(_0x1f4ddf,_0x4ef2f8){_0x1f4ddf=_0x1f4ddf-0x0;var _0x169fea=_0xb49a[_0x1f4ddf];return _0x169fea;};'use strict';var _=require(_0xab49('0x0'));var util=require(_0xab49('0x1'));var utils=require(_0xab49('0x2'));var agents={};var transfers={};var unanswered=[];function writeDB(_0x1d512a,_0x8db649){utils['info'](util[_0xab49('0x3')](_0xab49('0x4'),_0x1d512a['uniqueid'],_0x1d512a['channel'],_0x1d512a[_0xab49('0x5')],_0x1d512a[_0xab49('0x6')],_0x1d512a[_0xab49('0x7')],_0x1d512a[_0xab49('0x8')],_0x1d512a[_0xab49('0x9')],_0x1d512a[_0xab49('0xa')]));if(_0x1d512a[_0xab49('0x5')]){utils['getVoiceQueueByName'](_0x1d512a[_0xab49('0x5')])[_0xab49('0xb')](function(_0xf12653){if(_0xf12653){_0x1d512a[_0xab49('0xc')]=_0xf12653[_0xab49('0xc')];_0x1d512a['agentacw']=_0x1d512a['agentcomplete']?_0xf12653[_0xab49('0xd')]:![];_0x1d512a[_0xab49('0xe')]=_0x1d512a[_0xab49('0xf')]?_0xf12653[_0xab49('0x10')]:0x0;}utils[_0xab49('0x11')]('CreateVoiceAgentReport',_0x1d512a);});}else{utils[_0xab49('0x11')](_0xab49('0x12'),_0x1d512a);}if(_0x8db649){delete transfers[_0x1d512a[_0xab49('0x13')]];}else{delete agents[_0x1d512a[_0xab49('0x14')]];}}exports[_0xab49('0x15')]=function(_0x36091a){try{utils[_0xab49('0x16')](util[_0xab49('0x3')](_0xab49('0x17'),_0x36091a[_0xab49('0x13')]),_0x36091a);agents[_0x36091a[_0xab49('0x14')]]=_0x36091a;agents[_0x36091a['destuniqueid']][_0xab49('0x18')]=utils[_0xab49('0x19')]();agents[_0x36091a[_0xab49('0x14')]][_0xab49('0xa')]=_0xab49('0x1a');agents[_0x36091a['destuniqueid']][_0xab49('0x9')]=null;agents[_0x36091a[_0xab49('0x14')]][_0xab49('0x1b')]=null;utils[_0xab49('0x1c')](util[_0xab49('0x3')]('[%s][agents][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called',_0x36091a[_0xab49('0x13')],agents[_0x36091a[_0xab49('0x14')]][_0xab49('0x6')],_0x36091a['destuniqueid']));}catch(_0x4c22cd){utils[_0xab49('0x1d')](util[_0xab49('0x3')]('[%s][agents][agentcalled]',_0x36091a[_0xab49('0x13')]),_0x4c22cd);}};exports[_0xab49('0x1e')]=function(_0x49b716){try{if(!_[_0xab49('0x1f')](agents[_0x49b716['destuniqueid']])){utils[_0xab49('0x16')](util[_0xab49('0x3')]('[%s][agents][agentringnoanswer]',_0x49b716['uniqueid']),_0x49b716);utils[_0xab49('0x1c')](util['format'](_0xab49('0x20'),_0x49b716['uniqueid'],agents[_0x49b716[_0xab49('0x14')]][_0xab49('0x6')],_0x49b716[_0xab49('0x14')]));agents[_0x49b716['destuniqueid']][_0xab49('0x1e')]=!![];agents[_0x49b716['destuniqueid']][_0xab49('0x21')]=utils[_0xab49('0x19')]();agents[_0x49b716['destuniqueid']][_0xab49('0xa')]=_0xab49('0x22');agents[_0x49b716['destuniqueid']]['reason']=_0xab49('0x22');agents[_0x49b716[_0xab49('0x14')]][_0xab49('0x23')]=_0x49b716['ringtime']?parseInt(_0x49b716[_0xab49('0x24')])/0x3e8:0x0;agents[_0x49b716[_0xab49('0x14')]]['talktime']=0x0;unanswered[_0xab49('0x25')](_0x49b716[_0xab49('0x14')]);}}catch(_0x342fdf){utils['error'](util[_0xab49('0x3')]('[%s][agents][agentringnoanswer]',_0x49b716[_0xab49('0x13')]),_0x342fdf);}};exports['queuecallerabandon']=function(_0x19f094){try{_['forIn'](agents,function(_0x134a03,_0x24bd0f){if(_0x134a03[_0xab49('0x13')]==_0x19f094[_0xab49('0x13')]&&!_['includes'](unanswered,_0x134a03[_0xab49('0x14')])){utils[_0xab49('0x16')](util[_0xab49('0x3')]('[%s][agents][queuecallerabandon]',_0x19f094[_0xab49('0x13')]),_0x19f094);utils['info'](util[_0xab49('0x3')]('[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned',_0x19f094['uniqueid'],_0x134a03['membername'],_0x134a03[_0xab49('0x14')]));_0x134a03['agentringnoanswer']=!![];_0x134a03[_0xab49('0x21')]=utils[_0xab49('0x19')]();_0x134a03[_0xab49('0xa')]='abandoned';_0x134a03[_0xab49('0x26')]=_0xab49('0x27');_0x134a03[_0xab49('0x23')]=_0x19f094[_0xab49('0x23')];_0x134a03[_0xab49('0x28')]=0x0;writeDB(_0x134a03);}});}catch(_0x56b768){utils[_0xab49('0x1d')](util[_0xab49('0x3')]('[%s][agents][queuecallerabandon]',_0x19f094['uniqueid']),_0x56b768);}};exports[_0xab49('0x29')]=function(_0x29c6cf){try{if(agents[_0x29c6cf[_0xab49('0x14')]]){utils[_0xab49('0x16')](util[_0xab49('0x3')](_0xab49('0x2a'),_0x29c6cf[_0xab49('0x13')]),_0x29c6cf);utils[_0xab49('0x1c')](util[_0xab49('0x3')](_0xab49('0x2b'),_0x29c6cf[_0xab49('0x13')],agents[_0x29c6cf[_0xab49('0x14')]][_0xab49('0x6')],_0x29c6cf['destuniqueid']));agents[_0x29c6cf[_0xab49('0x14')]][_0xab49('0x2c')]=utils[_0xab49('0x19')]();agents[_0x29c6cf[_0xab49('0x14')]][_0xab49('0x9')]=_0x29c6cf['connectedlinenum'];agents[_0x29c6cf[_0xab49('0x14')]]['connectedlinename']=_0x29c6cf['connectedlinename'];agents[_0x29c6cf[_0xab49('0x14')]][_0xab49('0x23')]=_0x29c6cf[_0xab49('0x24')];agents[_0x29c6cf[_0xab49('0x14')]][_0xab49('0xa')]='connect';_[_0xab49('0x2d')](agents,function(_0x2cdcbf,_0x2016a9){if(_0x2cdcbf[_0xab49('0x14')]!=_0x29c6cf[_0xab49('0x14')]&&_0x2cdcbf['uniqueid']==_0x29c6cf['uniqueid']){_0x2cdcbf[_0xab49('0x28')]=0x0;_0x2cdcbf[_0xab49('0x23')]=_0x29c6cf[_0xab49('0x24')];_0x2cdcbf['agentringnoanswer']=!![];_0x2cdcbf[_0xab49('0x21')]=utils['now']();_0x2cdcbf['lastevent']='answered_elsewhere';_0x2cdcbf['reason']=_0xab49('0x2e');_0x2cdcbf[_0xab49('0x2f')]=_0x29c6cf[_0xab49('0x14')];_0x2cdcbf[_0xab49('0x30')]=_0x29c6cf[_0xab49('0x6')];writeDB(_0x2cdcbf);}});}}catch(_0x3f3776){utils[_0xab49('0x1d')](util[_0xab49('0x3')](_0xab49('0x2a'),_0x29c6cf[_0xab49('0x13')]),_0x3f3776);}};exports['agentcomplete']=function(_0x158042){try{if(!_[_0xab49('0x1f')](agents[_0x158042['destuniqueid']])){utils[_0xab49('0x16')](util[_0xab49('0x3')](_0xab49('0x31'),_0x158042[_0xab49('0x13')]),_0x158042);utils[_0xab49('0x1c')](util[_0xab49('0x3')](_0xab49('0x32'),_0x158042[_0xab49('0x13')],agents[_0x158042['destuniqueid']][_0xab49('0x6')],_0x158042[_0xab49('0x14')]));agents[_0x158042[_0xab49('0x14')]]['agentcomplete']=!![];agents[_0x158042[_0xab49('0x14')]][_0xab49('0x33')]=utils[_0xab49('0x19')]();agents[_0x158042[_0xab49('0x14')]][_0xab49('0x28')]=utils[_0xab49('0x34')](agents[_0x158042['destuniqueid']][_0xab49('0x33')],agents[_0x158042[_0xab49('0x14')]][_0xab49('0x2c')]);agents[_0x158042[_0xab49('0x14')]][_0xab49('0x26')]=_0x158042[_0xab49('0x26')];agents[_0x158042['destuniqueid']][_0xab49('0xa')]=_0xab49('0x35');writeDB(agents[_0x158042[_0xab49('0x14')]]);}}catch(_0xca56ce){utils[_0xab49('0x1d')](util[_0xab49('0x3')](_0xab49('0x31'),_0x158042[_0xab49('0x13')]),_0xca56ce);}};exports[_0xab49('0x36')]=function(_0xfb7d69){try{if(!_[_0xab49('0x1f')](agents[_0xfb7d69[_0xab49('0x37')]])){utils['debug'](util[_0xab49('0x3')](_0xab49('0x38'),_0xfb7d69[_0xab49('0x13')]),_0xfb7d69);utils[_0xab49('0x1c')](util[_0xab49('0x3')](_0xab49('0x39'),_0xfb7d69[_0xab49('0x13')],agents[_0xfb7d69['transfereruniqueid']][_0xab49('0x6')],agents[_0xfb7d69['transfereruniqueid']][_0xab49('0x13')]));agents[_0xfb7d69['transfereruniqueid']][_0xab49('0x3a')]=!![];agents[_0xfb7d69[_0xab49('0x37')]]['transfertype']=_0xab49('0x3b');agents[_0xfb7d69[_0xab49('0x37')]][_0xab49('0x3c')]=_0xfb7d69[_0xab49('0x3d')];agents[_0xfb7d69[_0xab49('0x37')]][_0xab49('0x3e')]=agents[_0xfb7d69[_0xab49('0x37')]][_0xab49('0x13')];}}catch(_0x37cf42){utils[_0xab49('0x1d')](util[_0xab49('0x3')](_0xab49('0x38'),_0xfb7d69[_0xab49('0x13')]),_0x37cf42);}};exports[_0xab49('0x3f')]=function(_0x235ba8){try{utils[_0xab49('0x16')](util[_0xab49('0x3')]('[%s][agents][attendedtransfer]',_0x235ba8[_0xab49('0x40')]),_0x235ba8);if(_0x235ba8[_0xab49('0x40')]==_0x235ba8[_0xab49('0x41')]){if(!_[_0xab49('0x1f')](agents[_0x235ba8[_0xab49('0x42')]])){utils['info'](util[_0xab49('0x3')](_0xab49('0x43'),_0x235ba8[_0xab49('0x40')],agents[_0x235ba8[_0xab49('0x42')]][_0xab49('0x6')]));agents[_0x235ba8[_0xab49('0x42')]]['transfer']=!![];agents[_0x235ba8[_0xab49('0x42')]][_0xab49('0x44')]=_0xab49('0x45');agents[_0x235ba8[_0xab49('0x42')]]['transferexten']=_0x235ba8['origtransfererexten'];agents[_0x235ba8[_0xab49('0x42')]]['transferuniqueid']=_0x235ba8[_0xab49('0x40')];}if(_0x235ba8[_0xab49('0x46')]&&agents[_0x235ba8[_0xab49('0x46')]]){agents[_0x235ba8[_0xab49('0x46')]][_0xab49('0x47')]=0x1;transfers[_0x235ba8[_0xab49('0x46')]]=_[_0xab49('0x48')](agents[_0x235ba8[_0xab49('0x46')]]);transfers[_0x235ba8['transfereeuniqueid']][_0xab49('0x8')]=agents[_0x235ba8[_0xab49('0x42')]][_0xab49('0x8')];transfers[_0x235ba8[_0xab49('0x46')]][_0xab49('0x49')]=agents[_0x235ba8['secondtransfereruniqueid']][_0xab49('0x49')];transfers[_0x235ba8[_0xab49('0x46')]][_0xab49('0x18')]=utils[_0xab49('0x19')]();transfers[_0x235ba8[_0xab49('0x46')]][_0xab49('0x2c')]=utils[_0xab49('0x19')]();transfers[_0x235ba8[_0xab49('0x46')]][_0xab49('0x23')]=0x0;transfers[_0x235ba8[_0xab49('0x46')]][_0xab49('0x47')]=0x2;}}else if(_0x235ba8[_0xab49('0x42')]==_0x235ba8[_0xab49('0x4a')]){if(!_['isNil'](agents[_0x235ba8[_0xab49('0x40')]])){utils[_0xab49('0x1c')](util[_0xab49('0x3')](_0xab49('0x43'),_0x235ba8[_0xab49('0x40')],agents[_0x235ba8[_0xab49('0x40')]][_0xab49('0x6')]));agents[_0x235ba8[_0xab49('0x40')]][_0xab49('0x3a')]=!![];agents[_0x235ba8[_0xab49('0x40')]]['transfertype']=_0xab49('0x45');agents[_0x235ba8[_0xab49('0x40')]]['transferexten']=_0x235ba8[_0xab49('0x4b')];agents[_0x235ba8[_0xab49('0x40')]][_0xab49('0x3e')]=_0x235ba8['secondtransfereruniqueid'];}if(_0x235ba8[_0xab49('0x4c')]&&agents[_0x235ba8[_0xab49('0x4c')]]){agents[_0x235ba8['transfertargetuniqueid']]['agententerreason']=0x1;transfers[_0x235ba8[_0xab49('0x4c')]]=_[_0xab49('0x48')](agents[_0x235ba8[_0xab49('0x4c')]]);transfers[_0x235ba8['transfertargetuniqueid']]['calleridnum']=agents[_0x235ba8[_0xab49('0x40')]][_0xab49('0x8')];transfers[_0x235ba8[_0xab49('0x4c')]][_0xab49('0x49')]=agents[_0x235ba8[_0xab49('0x40')]][_0xab49('0x49')];transfers[_0x235ba8[_0xab49('0x4c')]][_0xab49('0x18')]=utils['now']();transfers[_0x235ba8['transfertargetuniqueid']][_0xab49('0x2c')]=utils[_0xab49('0x19')]();transfers[_0x235ba8[_0xab49('0x4c')]][_0xab49('0x23')]=0x0;transfers[_0x235ba8[_0xab49('0x4c')]][_0xab49('0x47')]=0x2;}}}catch(_0x108755){utils[_0xab49('0x1d')](util[_0xab49('0x3')](_0xab49('0x4d'),_0x235ba8['origtransfereruniqueid']),_0x108755);}};exports[_0xab49('0x4e')]=function(_0x24fb84){try{utils[_0xab49('0x16')](util[_0xab49('0x3')](_0xab49('0x4f'),_0x24fb84[_0xab49('0x13')]),_0x24fb84);if(agents[_0x24fb84[_0xab49('0x13')]]&&agents[_0x24fb84[_0xab49('0x13')]]['reason']===_0xab49('0x22')){if(_0x24fb84['cause']==='21'){agents[_0x24fb84[_0xab49('0x13')]][_0xab49('0x26')]=_0xab49('0x50');agents[_0x24fb84['uniqueid']][_0xab49('0xa')]=_0xab49('0x50');}utils['info'](util[_0xab49('0x3')](_0xab49('0x51'),_0x24fb84[_0xab49('0x13')],agents[_0x24fb84[_0xab49('0x13')]][_0xab49('0x6')],agents[_0x24fb84[_0xab49('0x13')]][_0xab49('0x26')],agents[_0x24fb84[_0xab49('0x13')]][_0xab49('0xa')]));writeDB(agents[_0x24fb84[_0xab49('0x13')]]);var _0x366a3c=unanswered[_0xab49('0x52')](_0x24fb84[_0xab49('0x13')]);if(_0x366a3c>-0x1){unanswered['splice'](_0x366a3c,0x1);}}if(transfers[_0x24fb84[_0xab49('0x13')]]){transfers[_0x24fb84[_0xab49('0x13')]][_0xab49('0x53')]=!![];transfers[_0x24fb84['uniqueid']][_0xab49('0x33')]=utils[_0xab49('0x19')]();transfers[_0x24fb84['uniqueid']][_0xab49('0x28')]=utils[_0xab49('0x34')](transfers[_0x24fb84['uniqueid']][_0xab49('0x33')],transfers[_0x24fb84[_0xab49('0x13')]][_0xab49('0x2c')]);transfers[_0x24fb84[_0xab49('0x13')]][_0xab49('0x26')]=_0xab49('0x54');transfers[_0x24fb84[_0xab49('0x13')]][_0xab49('0xa')]='complete';utils['info'](util[_0xab49('0x3')](_0xab49('0x51'),_0x24fb84[_0xab49('0x13')],transfers[_0x24fb84[_0xab49('0x13')]][_0xab49('0x6')],transfers[_0x24fb84[_0xab49('0x13')]][_0xab49('0x26')],transfers[_0x24fb84[_0xab49('0x13')]]['lastevent']));writeDB(transfers[_0x24fb84[_0xab49('0x13')]],!![]);}if(agents[_0x24fb84['uniqueid']]&&agents[_0x24fb84[_0xab49('0x13')]][_0xab49('0x2c')]){agents[_0x24fb84[_0xab49('0x13')]][_0xab49('0x53')]=!![];agents[_0x24fb84[_0xab49('0x13')]][_0xab49('0x33')]=utils[_0xab49('0x19')]();agents[_0x24fb84[_0xab49('0x13')]][_0xab49('0x28')]=utils[_0xab49('0x34')](agents[_0x24fb84[_0xab49('0x13')]][_0xab49('0x33')],agents[_0x24fb84[_0xab49('0x13')]][_0xab49('0x2c')]);agents[_0x24fb84[_0xab49('0x13')]][_0xab49('0x26')]=agents[_0x24fb84['uniqueid']]['transfer']?_0xab49('0x3a'):_0xab49('0x54');agents[_0x24fb84[_0xab49('0x13')]][_0xab49('0xa')]=_0xab49('0x35');utils[_0xab49('0x1c')](util['format'](_0xab49('0x51'),_0x24fb84['uniqueid'],agents[_0x24fb84['uniqueid']][_0xab49('0x6')],agents[_0x24fb84['uniqueid']][_0xab49('0x26')],agents[_0x24fb84[_0xab49('0x13')]]['lastevent']));writeDB(agents[_0x24fb84[_0xab49('0x13')]]);}}catch(_0x271ee4){utils[_0xab49('0x1d')](util['format']('[%s][agents][hangup]',_0x24fb84[_0xab49('0x13')]),_0x271ee4);}};
\ No newline at end of file
+var _0xe205=['interface','calleridnum','then','type','agentacw','agentcomplete','acw','acwTimeout','request','CreateVoiceAgentReport','destuniqueid','agentcalled','agentcalledAt','now','lastevent','connectedlinenum','connectedlinename','[%s][agents][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','error','[%s][agents][agentcalled]','[%s][agents][agentringnoanswer]','[%s][agents][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:timeout','agentringnoanswerAt','timeout','reason','holdtime','ringtime','talktime','push','queuecallerabandon','forIn','includes','debug','[%s][agents][queuecallerabandon]','[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','agentringnoanswer','abandoned','agentconnect','[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','connect','answered_elsewhere','answeredelsewheremembername','[%s][agents][agentconnect]','isNil','[%s][agents][agentcomplete]','diffTime','agentcompleteAt','complete','blindtransfer','transfereruniqueid','[%s][agents][blindtransfer]','[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s','transfer','transfertype','blind','transferexten','extension','transferuniqueid','attendedtransfer','origtransfereruniqueid','secondtransfereruniqueid','[%s][agents][attendedtransfer]\x20agent:%s','ATTENDED','origtransfererexten','transfereeuniqueid','agententerreason','calleridname','secondtransfererlinkedid','transfertargetuniqueid','clone','hangup','cause','rejected','[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s','indexOf','splice','agent','[%s][agents][hangup]','lodash','util','./utils','info','format','[%s][agents][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','uniqueid','queue','membername'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0xe205,0xa7));var _0x5e20=function(_0x88576c,_0x53c177){_0x88576c=_0x88576c-0x0;var _0xb50943=_0xe205[_0x88576c];return _0xb50943;};'use strict';var _=require(_0x5e20('0x0'));var util=require(_0x5e20('0x1'));var utils=require(_0x5e20('0x2'));var agents={};var transfers={};var unanswered=[];function writeDB(_0x3cdbb0,_0x6c1585){utils[_0x5e20('0x3')](util[_0x5e20('0x4')](_0x5e20('0x5'),_0x3cdbb0[_0x5e20('0x6')],_0x3cdbb0['channel'],_0x3cdbb0[_0x5e20('0x7')],_0x3cdbb0[_0x5e20('0x8')],_0x3cdbb0[_0x5e20('0x9')],_0x3cdbb0[_0x5e20('0xa')],_0x3cdbb0['connectedlinenum'],_0x3cdbb0['lastevent']));if(_0x3cdbb0[_0x5e20('0x7')]){utils['getVoiceQueueByName'](_0x3cdbb0['queue'])[_0x5e20('0xb')](function(_0x28c142){if(_0x28c142){_0x3cdbb0['type']=_0x28c142[_0x5e20('0xc')];_0x3cdbb0[_0x5e20('0xd')]=_0x3cdbb0[_0x5e20('0xe')]?_0x28c142[_0x5e20('0xf')]:![];_0x3cdbb0['acwtime']=_0x3cdbb0[_0x5e20('0xd')]?_0x28c142[_0x5e20('0x10')]:0x0;}utils[_0x5e20('0x11')](_0x5e20('0x12'),_0x3cdbb0);});}else{utils[_0x5e20('0x11')](_0x5e20('0x12'),_0x3cdbb0);}if(_0x6c1585){delete transfers[_0x3cdbb0['uniqueid']];}else{delete agents[_0x3cdbb0[_0x5e20('0x13')]];}}exports[_0x5e20('0x14')]=function(_0x22540d){try{utils['debug'](util[_0x5e20('0x4')]('[%s][agents][agentcalled]',_0x22540d[_0x5e20('0x6')]),_0x22540d);agents[_0x22540d['destuniqueid']]=_0x22540d;agents[_0x22540d[_0x5e20('0x13')]][_0x5e20('0x15')]=utils[_0x5e20('0x16')]();agents[_0x22540d[_0x5e20('0x13')]][_0x5e20('0x17')]='called';agents[_0x22540d[_0x5e20('0x13')]][_0x5e20('0x18')]=null;agents[_0x22540d[_0x5e20('0x13')]][_0x5e20('0x19')]=null;utils[_0x5e20('0x3')](util[_0x5e20('0x4')](_0x5e20('0x1a'),_0x22540d[_0x5e20('0x6')],agents[_0x22540d['destuniqueid']][_0x5e20('0x8')],_0x22540d[_0x5e20('0x13')]));}catch(_0x4f900b){utils[_0x5e20('0x1b')](util[_0x5e20('0x4')](_0x5e20('0x1c'),_0x22540d[_0x5e20('0x6')]),_0x4f900b);}};exports['agentringnoanswer']=function(_0x2954fc){try{if(!_['isNil'](agents[_0x2954fc['destuniqueid']])){utils['debug'](util['format'](_0x5e20('0x1d'),_0x2954fc['uniqueid']),_0x2954fc);utils[_0x5e20('0x3')](util[_0x5e20('0x4')](_0x5e20('0x1e'),_0x2954fc[_0x5e20('0x6')],agents[_0x2954fc[_0x5e20('0x13')]][_0x5e20('0x8')],_0x2954fc['destuniqueid']));agents[_0x2954fc[_0x5e20('0x13')]]['agentringnoanswer']=!![];agents[_0x2954fc['destuniqueid']][_0x5e20('0x1f')]=utils[_0x5e20('0x16')]();agents[_0x2954fc[_0x5e20('0x13')]][_0x5e20('0x17')]=_0x5e20('0x20');agents[_0x2954fc[_0x5e20('0x13')]][_0x5e20('0x21')]='timeout';agents[_0x2954fc[_0x5e20('0x13')]][_0x5e20('0x22')]=_0x2954fc[_0x5e20('0x23')]?parseInt(_0x2954fc[_0x5e20('0x23')])/0x3e8:0x0;agents[_0x2954fc['destuniqueid']][_0x5e20('0x24')]=0x0;unanswered[_0x5e20('0x25')](_0x2954fc[_0x5e20('0x13')]);}}catch(_0x222e7a){utils[_0x5e20('0x1b')](util[_0x5e20('0x4')]('[%s][agents][agentringnoanswer]',_0x2954fc[_0x5e20('0x6')]),_0x222e7a);}};exports[_0x5e20('0x26')]=function(_0x543c29){try{_[_0x5e20('0x27')](agents,function(_0x21d1d8,_0x335f1e){if(_0x21d1d8[_0x5e20('0x6')]==_0x543c29[_0x5e20('0x6')]&&!_[_0x5e20('0x28')](unanswered,_0x21d1d8['destuniqueid'])){utils[_0x5e20('0x29')](util[_0x5e20('0x4')](_0x5e20('0x2a'),_0x543c29[_0x5e20('0x6')]),_0x543c29);utils[_0x5e20('0x3')](util[_0x5e20('0x4')](_0x5e20('0x2b'),_0x543c29[_0x5e20('0x6')],_0x21d1d8[_0x5e20('0x8')],_0x21d1d8[_0x5e20('0x13')]));_0x21d1d8[_0x5e20('0x2c')]=!![];_0x21d1d8['agentringnoanswerAt']=utils[_0x5e20('0x16')]();_0x21d1d8[_0x5e20('0x17')]=_0x5e20('0x2d');_0x21d1d8['reason']=_0x5e20('0x2d');_0x21d1d8[_0x5e20('0x22')]=_0x543c29[_0x5e20('0x22')];_0x21d1d8[_0x5e20('0x24')]=0x0;writeDB(_0x21d1d8);}});}catch(_0x244209){utils[_0x5e20('0x1b')](util[_0x5e20('0x4')](_0x5e20('0x2a'),_0x543c29[_0x5e20('0x6')]),_0x244209);}};exports[_0x5e20('0x2e')]=function(_0x36e825){try{if(agents[_0x36e825[_0x5e20('0x13')]]){utils[_0x5e20('0x29')](util[_0x5e20('0x4')]('[%s][agents][agentconnect]',_0x36e825[_0x5e20('0x6')]),_0x36e825);utils['info'](util['format'](_0x5e20('0x2f'),_0x36e825[_0x5e20('0x6')],agents[_0x36e825['destuniqueid']][_0x5e20('0x8')],_0x36e825[_0x5e20('0x13')]));agents[_0x36e825['destuniqueid']][_0x5e20('0x30')]=utils[_0x5e20('0x16')]();agents[_0x36e825[_0x5e20('0x13')]][_0x5e20('0x18')]=_0x36e825[_0x5e20('0x18')];agents[_0x36e825[_0x5e20('0x13')]][_0x5e20('0x19')]=_0x36e825[_0x5e20('0x19')];agents[_0x36e825[_0x5e20('0x13')]][_0x5e20('0x22')]=_0x36e825[_0x5e20('0x23')];agents[_0x36e825[_0x5e20('0x13')]][_0x5e20('0x17')]=_0x5e20('0x31');_[_0x5e20('0x27')](agents,function(_0x3d618c,_0x20e83d){if(_0x3d618c[_0x5e20('0x13')]!=_0x36e825['destuniqueid']&&_0x3d618c[_0x5e20('0x6')]==_0x36e825[_0x5e20('0x6')]){_0x3d618c[_0x5e20('0x24')]=0x0;_0x3d618c[_0x5e20('0x22')]=_0x36e825[_0x5e20('0x23')];_0x3d618c['agentringnoanswer']=!![];_0x3d618c[_0x5e20('0x1f')]=utils[_0x5e20('0x16')]();_0x3d618c[_0x5e20('0x17')]=_0x5e20('0x32');_0x3d618c[_0x5e20('0x21')]=_0x5e20('0x32');_0x3d618c['answeredelsewheredestinationuniqueid']=_0x36e825[_0x5e20('0x13')];_0x3d618c[_0x5e20('0x33')]=_0x36e825[_0x5e20('0x8')];writeDB(_0x3d618c);}});}}catch(_0x5a21f0){utils[_0x5e20('0x1b')](util[_0x5e20('0x4')](_0x5e20('0x34'),_0x36e825[_0x5e20('0x6')]),_0x5a21f0);}};exports[_0x5e20('0xe')]=function(_0x336d61){try{if(!_[_0x5e20('0x35')](agents[_0x336d61[_0x5e20('0x13')]])){utils['debug'](util[_0x5e20('0x4')](_0x5e20('0x36'),_0x336d61[_0x5e20('0x6')]),_0x336d61);utils['info'](util[_0x5e20('0x4')]('[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete',_0x336d61[_0x5e20('0x6')],agents[_0x336d61[_0x5e20('0x13')]][_0x5e20('0x8')],_0x336d61[_0x5e20('0x13')]));agents[_0x336d61[_0x5e20('0x13')]]['agentcomplete']=!![];agents[_0x336d61[_0x5e20('0x13')]]['agentcompleteAt']=utils['now']();agents[_0x336d61[_0x5e20('0x13')]][_0x5e20('0x24')]=utils[_0x5e20('0x37')](agents[_0x336d61[_0x5e20('0x13')]][_0x5e20('0x38')],agents[_0x336d61[_0x5e20('0x13')]][_0x5e20('0x30')]);agents[_0x336d61['destuniqueid']]['reason']=_0x336d61[_0x5e20('0x21')];agents[_0x336d61[_0x5e20('0x13')]]['lastevent']=_0x5e20('0x39');writeDB(agents[_0x336d61[_0x5e20('0x13')]]);}}catch(_0xf1e97c){utils[_0x5e20('0x1b')](util[_0x5e20('0x4')]('[%s][agents][agentcomplete]',_0x336d61[_0x5e20('0x6')]),_0xf1e97c);}};exports[_0x5e20('0x3a')]=function(_0x25491e){try{if(!_[_0x5e20('0x35')](agents[_0x25491e[_0x5e20('0x3b')]])){utils[_0x5e20('0x29')](util[_0x5e20('0x4')](_0x5e20('0x3c'),_0x25491e['uniqueid']),_0x25491e);utils['info'](util['format'](_0x5e20('0x3d'),_0x25491e[_0x5e20('0x6')],agents[_0x25491e['transfereruniqueid']][_0x5e20('0x8')],agents[_0x25491e['transfereruniqueid']][_0x5e20('0x6')]));agents[_0x25491e['transfereruniqueid']][_0x5e20('0x3e')]=!![];agents[_0x25491e['transfereruniqueid']][_0x5e20('0x3f')]=_0x5e20('0x40');agents[_0x25491e[_0x5e20('0x3b')]][_0x5e20('0x41')]=_0x25491e[_0x5e20('0x42')];agents[_0x25491e[_0x5e20('0x3b')]][_0x5e20('0x43')]=agents[_0x25491e[_0x5e20('0x3b')]][_0x5e20('0x6')];}}catch(_0x43e890){utils[_0x5e20('0x1b')](util[_0x5e20('0x4')](_0x5e20('0x3c'),_0x25491e[_0x5e20('0x6')]),_0x43e890);}};exports[_0x5e20('0x44')]=function(_0xe7759c){try{utils[_0x5e20('0x29')](util[_0x5e20('0x4')]('[%s][agents][attendedtransfer]',_0xe7759c['origtransfereruniqueid']),_0xe7759c);if(_0xe7759c[_0x5e20('0x45')]==_0xe7759c['origtransfererlinkedid']){if(!_[_0x5e20('0x35')](agents[_0xe7759c[_0x5e20('0x46')]])){utils[_0x5e20('0x3')](util['format'](_0x5e20('0x47'),_0xe7759c[_0x5e20('0x45')],agents[_0xe7759c[_0x5e20('0x46')]]['membername']));agents[_0xe7759c['secondtransfereruniqueid']]['transfer']=!![];agents[_0xe7759c[_0x5e20('0x46')]][_0x5e20('0x3f')]=_0x5e20('0x48');agents[_0xe7759c[_0x5e20('0x46')]][_0x5e20('0x41')]=_0xe7759c[_0x5e20('0x49')];agents[_0xe7759c['secondtransfereruniqueid']][_0x5e20('0x43')]=_0xe7759c['origtransfereruniqueid'];}if(_0xe7759c[_0x5e20('0x4a')]&&agents[_0xe7759c['transfereeuniqueid']]){agents[_0xe7759c[_0x5e20('0x4a')]][_0x5e20('0x4b')]=0x1;transfers[_0xe7759c[_0x5e20('0x4a')]]=_['clone'](agents[_0xe7759c[_0x5e20('0x4a')]]);transfers[_0xe7759c[_0x5e20('0x4a')]][_0x5e20('0xa')]=agents[_0xe7759c[_0x5e20('0x46')]][_0x5e20('0xa')];transfers[_0xe7759c[_0x5e20('0x4a')]][_0x5e20('0x4c')]=agents[_0xe7759c['secondtransfereruniqueid']][_0x5e20('0x4c')];transfers[_0xe7759c[_0x5e20('0x4a')]][_0x5e20('0x15')]=utils[_0x5e20('0x16')]();transfers[_0xe7759c['transfereeuniqueid']][_0x5e20('0x30')]=utils[_0x5e20('0x16')]();transfers[_0xe7759c[_0x5e20('0x4a')]][_0x5e20('0x22')]=0x0;transfers[_0xe7759c['transfereeuniqueid']][_0x5e20('0x4b')]=0x2;}}else if(_0xe7759c[_0x5e20('0x46')]==_0xe7759c[_0x5e20('0x4d')]){if(!_['isNil'](agents[_0xe7759c['origtransfereruniqueid']])){utils['info'](util[_0x5e20('0x4')](_0x5e20('0x47'),_0xe7759c['origtransfereruniqueid'],agents[_0xe7759c[_0x5e20('0x45')]][_0x5e20('0x8')]));agents[_0xe7759c[_0x5e20('0x45')]]['transfer']=!![];agents[_0xe7759c[_0x5e20('0x45')]][_0x5e20('0x3f')]='ATTENDED';agents[_0xe7759c[_0x5e20('0x45')]][_0x5e20('0x41')]=_0xe7759c['secondtransfererexten'];agents[_0xe7759c[_0x5e20('0x45')]][_0x5e20('0x43')]=_0xe7759c[_0x5e20('0x46')];}if(_0xe7759c[_0x5e20('0x4e')]&&agents[_0xe7759c['transfertargetuniqueid']]){agents[_0xe7759c[_0x5e20('0x4e')]]['agententerreason']=0x1;transfers[_0xe7759c['transfertargetuniqueid']]=_[_0x5e20('0x4f')](agents[_0xe7759c[_0x5e20('0x4e')]]);transfers[_0xe7759c[_0x5e20('0x4e')]][_0x5e20('0xa')]=agents[_0xe7759c[_0x5e20('0x45')]][_0x5e20('0xa')];transfers[_0xe7759c['transfertargetuniqueid']]['calleridname']=agents[_0xe7759c[_0x5e20('0x45')]][_0x5e20('0x4c')];transfers[_0xe7759c[_0x5e20('0x4e')]]['agentcalledAt']=utils[_0x5e20('0x16')]();transfers[_0xe7759c[_0x5e20('0x4e')]]['agentconnectAt']=utils[_0x5e20('0x16')]();transfers[_0xe7759c['transfertargetuniqueid']]['holdtime']=0x0;transfers[_0xe7759c[_0x5e20('0x4e')]]['agententerreason']=0x2;}}}catch(_0x3e4500){utils[_0x5e20('0x1b')](util[_0x5e20('0x4')]('[%s][agents][attendedtransfer]',_0xe7759c[_0x5e20('0x45')]),_0x3e4500);}};exports[_0x5e20('0x50')]=function(_0xd10013){try{utils[_0x5e20('0x29')](util[_0x5e20('0x4')]('[%s][agents][hangup]',_0xd10013[_0x5e20('0x6')]),_0xd10013);if(agents[_0xd10013[_0x5e20('0x6')]]&&agents[_0xd10013['uniqueid']][_0x5e20('0x21')]===_0x5e20('0x20')){if(_0xd10013[_0x5e20('0x51')]==='21'){agents[_0xd10013['uniqueid']][_0x5e20('0x21')]=_0x5e20('0x52');agents[_0xd10013[_0x5e20('0x6')]][_0x5e20('0x17')]=_0x5e20('0x52');}utils['info'](util[_0x5e20('0x4')](_0x5e20('0x53'),_0xd10013[_0x5e20('0x6')],agents[_0xd10013[_0x5e20('0x6')]][_0x5e20('0x8')],agents[_0xd10013['uniqueid']][_0x5e20('0x21')],agents[_0xd10013[_0x5e20('0x6')]][_0x5e20('0x17')]));writeDB(agents[_0xd10013[_0x5e20('0x6')]]);var _0x1e7cf8=unanswered[_0x5e20('0x54')](_0xd10013[_0x5e20('0x6')]);if(_0x1e7cf8>-0x1){unanswered[_0x5e20('0x55')](_0x1e7cf8,0x1);}}if(transfers[_0xd10013['uniqueid']]){transfers[_0xd10013[_0x5e20('0x6')]]['agentcomplete']=!![];transfers[_0xd10013['uniqueid']][_0x5e20('0x38')]=utils[_0x5e20('0x16')]();transfers[_0xd10013['uniqueid']][_0x5e20('0x24')]=utils[_0x5e20('0x37')](transfers[_0xd10013['uniqueid']][_0x5e20('0x38')],transfers[_0xd10013['uniqueid']][_0x5e20('0x30')]);transfers[_0xd10013['uniqueid']][_0x5e20('0x21')]=_0x5e20('0x56');transfers[_0xd10013[_0x5e20('0x6')]][_0x5e20('0x17')]=_0x5e20('0x39');utils['info'](util[_0x5e20('0x4')]('[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s',_0xd10013[_0x5e20('0x6')],transfers[_0xd10013['uniqueid']][_0x5e20('0x8')],transfers[_0xd10013[_0x5e20('0x6')]][_0x5e20('0x21')],transfers[_0xd10013[_0x5e20('0x6')]]['lastevent']));writeDB(transfers[_0xd10013[_0x5e20('0x6')]],!![]);}if(agents[_0xd10013[_0x5e20('0x6')]]&&agents[_0xd10013['uniqueid']]['agentconnectAt']){agents[_0xd10013[_0x5e20('0x6')]][_0x5e20('0xe')]=!![];agents[_0xd10013[_0x5e20('0x6')]][_0x5e20('0x38')]=utils[_0x5e20('0x16')]();agents[_0xd10013['uniqueid']][_0x5e20('0x24')]=utils['diffTime'](agents[_0xd10013['uniqueid']][_0x5e20('0x38')],agents[_0xd10013['uniqueid']]['agentconnectAt']);agents[_0xd10013[_0x5e20('0x6')]][_0x5e20('0x21')]=agents[_0xd10013['uniqueid']][_0x5e20('0x3e')]?_0x5e20('0x3e'):_0x5e20('0x56');agents[_0xd10013[_0x5e20('0x6')]][_0x5e20('0x17')]='complete';utils[_0x5e20('0x3')](util[_0x5e20('0x4')](_0x5e20('0x53'),_0xd10013[_0x5e20('0x6')],agents[_0xd10013['uniqueid']]['membername'],agents[_0xd10013[_0x5e20('0x6')]][_0x5e20('0x21')],agents[_0xd10013[_0x5e20('0x6')]][_0x5e20('0x17')]));writeDB(agents[_0xd10013[_0x5e20('0x6')]]);}}catch(_0xdc9ff4){utils[_0x5e20('0x1b')](util[_0x5e20('0x4')](_0x5e20('0x57'),_0xd10013[_0x5e20('0x6')]),_0xdc9ff4);}};
\ No newline at end of file
index a467ecf..25a20a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd0bd=['recording','[%s][calls][newchannel]','linkedid','OutgoingSpoolFailed','format','exten','context','now','DOCUMENTATION','error','newstate','debug','[%s][calls][newstate]','channelstate','info','[%s][calls][newstate]\x20context:%s\x20channel:%s','isNil','systemanswertime','[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','destinationchannel','answertime','disposition','hangup','[%s][calls][hangup]','callerid','calleridname','[%s][calls][hangup]\x20callerid:%s\x20reason:%s','cause-txt','endtime','starttime','billableseconds','attendedtransfer','localtwolinkedid','[%s][calls][attendedtransfer]','origtransfereruniqueid','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','secondtransfererchannel','userfield','_attended','transfertargetchannel','origtransfererchannel','musiconholdstart','[%s][calls][musiconholdstart]','musiconholdstartAt','[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s','[%s][calls][musiconholdstop]','varset','variable','xmd-originatecalleridnum','[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','value','source','xmd-phone','[%s][calls][varset]\x20variable:xmd-phone\x20value:%s','\x22\x20<','xmd-callerid-preview','[%s][calls][varset]\x20variable:%s\x20value:%s','xmd-callerid','xmd-queue','xmcs-queue','Queue','lastdata','xmd-contactid','type','[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s','routeid','sipcallid','[%s][calls][varset]\x20variable:sipcallid\x20value:%s','[%s][calls][varset]','newexten','[%s][calls][newexten]','application','appdata','toLowerCase','set','startsWith','cdr','split','substring','lastIndexOf','includes','noop','gotoif','lodash','util','./utils','FAILED','NO\x20ANSWER','ANSWERED','BUSY','uniqueid','blinds','transfereeuniqueid','[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','channel','queue','membername','interface','calleridnum','connectedlinenum','lastevent','accountcode','getUserByInternal','then','request','CreateVoiceCallReport'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xd0bd,0x191));var _0xdd0b=function(_0x18a79d,_0x57bd2c){_0x18a79d=_0x18a79d-0x0;var _0x4f8848=_0xd0bd[_0x18a79d];return _0x4f8848;};'use strict';var _=require(_0xdd0b('0x0'));var util=require(_0xdd0b('0x1'));var utils=require(_0xdd0b('0x2'));var transfers=require('./transfers.controller');var dispositions=['NO\x20ANSWER','FAILED',_0xdd0b('0x3'),_0xdd0b('0x4'),_0xdd0b('0x4'),_0xdd0b('0x4'),_0xdd0b('0x5'),_0xdd0b('0x6'),_0xdd0b('0x3'),_0xdd0b('0x3'),_0xdd0b('0x3')];var channels={};function writeDB(_0x3a9068){var _0x48adf5;if(transfers['blinds'][_0x3a9068[_0xdd0b('0x7')]]){_0x48adf5=_0x3a9068[_0xdd0b('0x7')];_0x3a9068['uniqueid']=transfers[_0xdd0b('0x8')][_0x3a9068[_0xdd0b('0x7')]][_0xdd0b('0x9')];}utils['info'](util['format'](_0xdd0b('0xa'),_0x3a9068[_0xdd0b('0x7')],_0x3a9068[_0xdd0b('0xb')],_0x3a9068[_0xdd0b('0xc')],_0x3a9068[_0xdd0b('0xd')],_0x3a9068[_0xdd0b('0xe')],_0x3a9068[_0xdd0b('0xf')],_0x3a9068[_0xdd0b('0x10')],_0x3a9068[_0xdd0b('0x11')]));if(_0x3a9068[_0xdd0b('0x12')]){utils[_0xdd0b('0x13')](_0x3a9068[_0xdd0b('0x12')])[_0xdd0b('0x14')](function(_0x396d2f){if(_0x396d2f){_0x3a9068['UserId']=_0x396d2f['id'];}utils[_0xdd0b('0x15')](_0xdd0b('0x16'),_0x3a9068);});}else{utils['request'](_0xdd0b('0x16'),_0x3a9068);}if(channels[_0x3a9068[_0xdd0b('0x7')]]){delete channels[_0x3a9068[_0xdd0b('0x7')]];}else if(_0x48adf5&&channels[_0x48adf5]){if(!transfers[_0xdd0b('0x8')][_0x48adf5][_0xdd0b('0x17')])delete transfers['blinds'][_0x48adf5];delete channels[_0x48adf5];}}exports['newchannel']=function(_0x42dbb9){try{utils['debug'](util['format'](_0xdd0b('0x18'),_0x42dbb9[_0xdd0b('0x7')]),_0x42dbb9);if(_0x42dbb9[_0xdd0b('0x7')]==_0x42dbb9[_0xdd0b('0x19')]&&_0x42dbb9[_0xdd0b('0xb')]!=_0xdd0b('0x1a')){utils['info'](util[_0xdd0b('0x1b')]('[%s][calls][newchannel]\x20context:%s\x20exten:%s',_0x42dbb9[_0xdd0b('0x7')],_0x42dbb9['context'],_0x42dbb9[_0xdd0b('0x1c')]));channels[_0x42dbb9[_0xdd0b('0x7')]]={'uniqueid':_0x42dbb9['uniqueid'],'accountcode':_0x42dbb9[_0xdd0b('0x12')],'source':_0x42dbb9['calleridnum'],'destination':_0x42dbb9[_0xdd0b('0x1c')],'destinationcontext':_0x42dbb9[_0xdd0b('0x1d')],'channel':_0x42dbb9[_0xdd0b('0xb')],'starttime':utils[_0xdd0b('0x1e')](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':_0xdd0b('0x4'),'amaflags':_0xdd0b('0x1f')};}}catch(_0x348c51){utils[_0xdd0b('0x20')](util[_0xdd0b('0x1b')](_0xdd0b('0x18'),_0x42dbb9[_0xdd0b('0x7')]),_0x348c51);}};exports[_0xdd0b('0x21')]=function(_0xf970fa){try{utils[_0xdd0b('0x22')](util[_0xdd0b('0x1b')](_0xdd0b('0x23'),_0xf970fa['uniqueid']),_0xf970fa);if(!_['isNil'](channels[_0xf970fa[_0xdd0b('0x7')]])&&_0xf970fa[_0xdd0b('0x24')]==0x6){utils[_0xdd0b('0x25')](util[_0xdd0b('0x1b')](_0xdd0b('0x26'),_0xf970fa['uniqueid'],_0xf970fa[_0xdd0b('0x1d')],_0xf970fa['channel']));if(_[_0xdd0b('0x27')](channels[_0xf970fa[_0xdd0b('0x7')]]['systemanswertime'])){channels[_0xf970fa['uniqueid']][_0xdd0b('0x28')]=utils[_0xdd0b('0x1e')]();}}else if(!_['isNil'](channels[_0xf970fa['linkedid']])&&_0xf970fa[_0xdd0b('0x24')]==0x6&&_0xf970fa['context']!='transfer'){utils[_0xdd0b('0x25')](util[_0xdd0b('0x1b')](_0xdd0b('0x29'),_0xf970fa['uniqueid'],_0xf970fa[_0xdd0b('0x19')],_0xf970fa['context'],_0xf970fa[_0xdd0b('0xb')]));channels[_0xf970fa['linkedid']][_0xdd0b('0x12')]=_0xf970fa[_0xdd0b('0x12')];channels[_0xf970fa[_0xdd0b('0x19')]][_0xdd0b('0x2a')]=_0xf970fa[_0xdd0b('0xb')];if(_[_0xdd0b('0x27')](channels[_0xf970fa['linkedid']][_0xdd0b('0x2b')])){channels[_0xf970fa[_0xdd0b('0x19')]][_0xdd0b('0x2b')]=utils['now']();}channels[_0xf970fa[_0xdd0b('0x19')]][_0xdd0b('0x2c')]=dispositions[_['toNumber'](_0xf970fa['channelstate'])]||_0xdd0b('0x5');}}catch(_0x5d9ecd){utils[_0xdd0b('0x20')](util[_0xdd0b('0x1b')]('[%s][calls][newstate]',_0xf970fa[_0xdd0b('0x7')]),_0x5d9ecd);}};exports[_0xdd0b('0x2d')]=function(_0x402266){try{if(!_['isNil'](channels[_0x402266[_0xdd0b('0x7')]])){utils['debug'](util['format'](_0xdd0b('0x2e'),_0x402266[_0xdd0b('0x7')]),_0x402266);if(_[_0xdd0b('0x27')](channels[_0x402266['uniqueid']]['callerid'])){channels[_0x402266['uniqueid']][_0xdd0b('0x2f')]=_0x402266[_0xdd0b('0x30')]+'\x20<'+_0x402266[_0xdd0b('0xf')]+'>';}utils[_0xdd0b('0x25')](util[_0xdd0b('0x1b')](_0xdd0b('0x31'),_0x402266[_0xdd0b('0x7')],channels[_0x402266[_0xdd0b('0x7')]][_0xdd0b('0x2f')],_0x402266[_0xdd0b('0x32')]));channels[_0x402266['uniqueid']][_0xdd0b('0x33')]=utils[_0xdd0b('0x1e')]();channels[_0x402266[_0xdd0b('0x7')]]['duration']=utils['diffTime'](channels[_0x402266[_0xdd0b('0x7')]]['endtime'],channels[_0x402266[_0xdd0b('0x7')]][_0xdd0b('0x34')]);channels[_0x402266['uniqueid']][_0xdd0b('0x35')]=channels[_0x402266[_0xdd0b('0x7')]][_0xdd0b('0x2b')]?utils['diffTime'](channels[_0x402266[_0xdd0b('0x7')]]['endtime'],channels[_0x402266[_0xdd0b('0x7')]][_0xdd0b('0x2b')]):0x0;writeDB(channels[_0x402266['uniqueid']]);}}catch(_0x51341){utils[_0xdd0b('0x20')](util[_0xdd0b('0x1b')]('[%s][calls][hangup]',_0x402266[_0xdd0b('0x7')]),_0x51341);}};exports[_0xdd0b('0x36')]=function(_0x4924f0){try{if(!_['isNil'](channels[_0x4924f0[_0xdd0b('0x37')]])){utils[_0xdd0b('0x22')](util[_0xdd0b('0x1b')](_0xdd0b('0x38'),_0x4924f0[_0xdd0b('0x39')]),_0x4924f0);if(channels[_0x4924f0['localtwolinkedid']][_0xdd0b('0xb')]==_0x4924f0['transfereechannel']){utils[_0xdd0b('0x25')](util['format'](_0xdd0b('0x3a'),_0x4924f0['origtransfereruniqueid'],_0x4924f0[_0xdd0b('0x37')],_0x4924f0[_0xdd0b('0x3b')]));channels[_0x4924f0['localtwolinkedid']][_0xdd0b('0x2a')]=_0x4924f0[_0xdd0b('0x3b')];channels[_0x4924f0[_0xdd0b('0x37')]][_0xdd0b('0x3c')]=_0xdd0b('0x3d');}else if(channels[_0x4924f0[_0xdd0b('0x37')]][_0xdd0b('0xb')]=_0x4924f0[_0xdd0b('0x3e')]){utils[_0xdd0b('0x25')](util[_0xdd0b('0x1b')]('[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s',_0x4924f0['origtransfereruniqueid'],_0x4924f0[_0xdd0b('0x37')],_0x4924f0['origtransfererchannel']));channels[_0x4924f0[_0xdd0b('0x37')]][_0xdd0b('0x2a')]=_0x4924f0[_0xdd0b('0x3f')];channels[_0x4924f0[_0xdd0b('0x37')]][_0xdd0b('0x3c')]=_0xdd0b('0x3d');}}}catch(_0x4fa682){utils[_0xdd0b('0x20')](util[_0xdd0b('0x1b')](_0xdd0b('0x38'),_0x4924f0['origtransfereruniqueid']),_0x4fa682);}};exports[_0xdd0b('0x40')]=function(_0x45ecdd){try{if(!_[_0xdd0b('0x27')](channels[_0x45ecdd[_0xdd0b('0x7')]])){utils[_0xdd0b('0x22')](util[_0xdd0b('0x1b')](_0xdd0b('0x41'),_0x45ecdd[_0xdd0b('0x7')]),_0x45ecdd);channels[_0x45ecdd[_0xdd0b('0x7')]][_0xdd0b('0x42')]=utils['now']();utils[_0xdd0b('0x25')](util[_0xdd0b('0x1b')](_0xdd0b('0x43'),_0x45ecdd[_0xdd0b('0x7')],channels[_0x45ecdd[_0xdd0b('0x7')]]['musiconholdstartAt']));}}catch(_0x256ffe){utils[_0xdd0b('0x20')](util[_0xdd0b('0x1b')](_0xdd0b('0x41'),_0x45ecdd[_0xdd0b('0x7')]),_0x256ffe);}};exports['musiconholdstop']=function(_0x4ed666){try{if(!_[_0xdd0b('0x27')](channels[_0x4ed666[_0xdd0b('0x7')]])){utils[_0xdd0b('0x22')](util['format'](_0xdd0b('0x44'),_0x4ed666[_0xdd0b('0x7')]),_0x4ed666);if(!_['isNil'](channels[_0x4ed666[_0xdd0b('0x7')]][_0xdd0b('0x42')])){channels[_0x4ed666[_0xdd0b('0x7')]]['mohtime']+=utils['diffTime'](utils[_0xdd0b('0x1e')](),channels[_0x4ed666[_0xdd0b('0x7')]][_0xdd0b('0x42')]);utils[_0xdd0b('0x25')](util[_0xdd0b('0x1b')]('[%s][calls][musiconholdstop]\x20mohtime:%s',_0x4ed666[_0xdd0b('0x7')],channels[_0x4ed666[_0xdd0b('0x7')]]['mohtime']));delete channels[_0x4ed666[_0xdd0b('0x7')]][_0xdd0b('0x42')];}}}catch(_0x510be5){utils[_0xdd0b('0x20')](util['format'](_0xdd0b('0x44'),_0x4ed666[_0xdd0b('0x7')]),_0x510be5);}};exports[_0xdd0b('0x45')]=function(_0x43c441){try{if(!_['isNil'](channels[_0x43c441['uniqueid']])){utils[_0xdd0b('0x22')](util[_0xdd0b('0x1b')]('[%s][calls][varset]',_0x43c441[_0xdd0b('0x7')]),_0x43c441);if(!_[_0xdd0b('0x27')](_0x43c441[_0xdd0b('0x46')][_0xdd0b('0x47')])){utils[_0xdd0b('0x25')](util[_0xdd0b('0x1b')](_0xdd0b('0x48'),_0x43c441[_0xdd0b('0x7')],_0x43c441[_0xdd0b('0x49')]));channels[_0x43c441['uniqueid']][_0xdd0b('0x4a')]=_0x43c441[_0xdd0b('0x49')];}if(!_[_0xdd0b('0x27')](_0x43c441[_0xdd0b('0x46')][_0xdd0b('0x4b')])){utils[_0xdd0b('0x25')](util['format'](_0xdd0b('0x4c'),_0x43c441[_0xdd0b('0x7')],_0x43c441['value']));channels[_0x43c441[_0xdd0b('0x7')]]['destination']=_0x43c441[_0xdd0b('0x49')];channels[_0x43c441['uniqueid']][_0xdd0b('0x2f')]='\x22'+_0x43c441[_0xdd0b('0x49')]+_0xdd0b('0x4d')+_0x43c441['value']+'>';}if(!_[_0xdd0b('0x27')](_0x43c441[_0xdd0b('0x46')][_0xdd0b('0x4e')])||!_['isNil'](_0x43c441[_0xdd0b('0x46')]['xmd-callerid'])){utils[_0xdd0b('0x25')](util[_0xdd0b('0x1b')](_0xdd0b('0x4f'),_0x43c441[_0xdd0b('0x7')],!_[_0xdd0b('0x27')](_0x43c441['variable'][_0xdd0b('0x4e')])?_0xdd0b('0x4e'):_0xdd0b('0x50'),_0x43c441['value']));channels[_0x43c441[_0xdd0b('0x7')]][_0xdd0b('0x2f')]=_0x43c441['value'];}if(!_[_0xdd0b('0x27')](_0x43c441['variable'][_0xdd0b('0x51')])||!_[_0xdd0b('0x27')](_0x43c441[_0xdd0b('0x46')]['xmcs-queue'])){utils[_0xdd0b('0x25')](util[_0xdd0b('0x1b')](_0xdd0b('0x4f'),_0x43c441[_0xdd0b('0x7')],!_[_0xdd0b('0x27')](_0x43c441[_0xdd0b('0x46')]['xmd-queue'])?'xmd-queue':_0xdd0b('0x52'),_0x43c441[_0xdd0b('0x49')]));channels[_0x43c441[_0xdd0b('0x7')]]['lastapplication']=_0xdd0b('0x53');channels[_0x43c441['uniqueid']][_0xdd0b('0x54')]=_0x43c441[_0xdd0b('0x49')];channels[_0x43c441[_0xdd0b('0x7')]][_0xdd0b('0xc')]=!![];}if(!_[_0xdd0b('0x27')](_0x43c441['variable'][_0xdd0b('0x55')])){utils[_0xdd0b('0x25')](util[_0xdd0b('0x1b')]('[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s',_0x43c441[_0xdd0b('0x7')],_0x43c441[_0xdd0b('0x49')]));channels[_0x43c441[_0xdd0b('0x7')]]['ContactId']=_0x43c441[_0xdd0b('0x49')];}if(!_[_0xdd0b('0x27')](_0x43c441['variable']['xmd-cdrtype'])){utils['info'](util[_0xdd0b('0x1b')]('[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s',_0x43c441[_0xdd0b('0x7')],_0x43c441[_0xdd0b('0x49')]));channels[_0x43c441[_0xdd0b('0x7')]][_0xdd0b('0x56')]=_0x43c441[_0xdd0b('0x49')];}if(!_[_0xdd0b('0x27')](_0x43c441[_0xdd0b('0x46')]['outboundrouteid'])){utils[_0xdd0b('0x25')](util['format'](_0xdd0b('0x57'),_0x43c441['uniqueid'],_0x43c441[_0xdd0b('0x49')]));channels[_0x43c441[_0xdd0b('0x7')]][_0xdd0b('0x58')]=_0x43c441[_0xdd0b('0x49')];}if(!_[_0xdd0b('0x27')](_0x43c441[_0xdd0b('0x46')][_0xdd0b('0x59')])){utils[_0xdd0b('0x25')](util[_0xdd0b('0x1b')](_0xdd0b('0x5a'),_0x43c441['uniqueid'],_0x43c441[_0xdd0b('0x49')]));channels[_0x43c441[_0xdd0b('0x7')]][_0xdd0b('0x59')]=_0x43c441[_0xdd0b('0x49')];}}}catch(_0x46d187){utils[_0xdd0b('0x20')](util[_0xdd0b('0x1b')](_0xdd0b('0x5b'),_0x43c441[_0xdd0b('0x7')]),_0x46d187);}};exports[_0xdd0b('0x5c')]=function(_0x105a7f){try{if(!_[_0xdd0b('0x27')](channels[_0x105a7f[_0xdd0b('0x7')]])){utils[_0xdd0b('0x22')](util[_0xdd0b('0x1b')](_0xdd0b('0x5d'),_0x105a7f['uniqueid']),_0x105a7f);utils[_0xdd0b('0x25')](util['format']('[%s][calls][newexten]\x20application:%s\x20appdata:%s',_0x105a7f[_0xdd0b('0x7')],_0x105a7f[_0xdd0b('0x5e')],_0x105a7f[_0xdd0b('0x5f')]));if(_0x105a7f[_0xdd0b('0x5e')][_0xdd0b('0x60')]()==_0xdd0b('0x61')&&_[_0xdd0b('0x62')](_0x105a7f['appdata'][_0xdd0b('0x60')](),_0xdd0b('0x63'))){var _0x5865aa=_0x105a7f[_0xdd0b('0x5f')][_0xdd0b('0x64')]('=');var _0x3069ef=_0x5865aa[0x0][_0xdd0b('0x65')](_0x5865aa[0x0][_0xdd0b('0x66')]('(')+0x1,_0x5865aa[0x0][_0xdd0b('0x66')](')'));var _0x17fa8b=_0x5865aa[0x1];channels[_0x105a7f['uniqueid']][_0x3069ef]=_0x17fa8b;}if(!_[_0xdd0b('0x67')](['hangup',_0xdd0b('0x68'),'execif',_0xdd0b('0x61'),_0xdd0b('0x69')],_0x105a7f[_0xdd0b('0x5e')]['toLowerCase']())){channels[_0x105a7f[_0xdd0b('0x7')]]['lastapplication']=_0x105a7f[_0xdd0b('0x5e')];channels[_0x105a7f[_0xdd0b('0x7')]]['lastdata']=_0x105a7f['appdata'];}}}catch(_0x3eda8d){utils[_0xdd0b('0x20')](util[_0xdd0b('0x1b')](_0xdd0b('0x5d'),_0x105a7f['uniqueid']),_0x3eda8d);}};
\ No newline at end of file
+var _0xd48e=['[%s][calls][musiconholdstop]','mohtime','[%s][calls][musiconholdstop]\x20mohtime:%s','varset','variable','xmd-originatecalleridnum','source','value','xmd-phone','destination','xmd-callerid-preview','xmd-callerid','[%s][calls][varset]\x20variable:%s\x20value:%s','xmd-queue','xmcs-queue','lastapplication','Queue','lastdata','xmd-contactid','[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s','ContactId','xmd-cdrtype','routeid','sipcallid','[%s][calls][varset]\x20variable:sipcallid\x20value:%s','newexten','[%s][calls][newexten]','[%s][calls][newexten]\x20application:%s\x20appdata:%s','application','appdata','set','startsWith','toLowerCase','cdr','split','substring','hangup','execif','gotoif','util','./utils','./transfers.controller','NO\x20ANSWER','FAILED','BUSY','uniqueid','blinds','format','[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','queue','membername','interface','calleridnum','connectedlinenum','lastevent','accountcode','getUserByInternal','then','UserId','request','recording','newchannel','debug','[%s][calls][newchannel]','channel','OutgoingSpoolFailed','info','context','exten','now','DOCUMENTATION','newstate','[%s][calls][newstate]','isNil','channelstate','systemanswertime','linkedid','transfer','destinationchannel','answertime','disposition','toNumber','ANSWERED','error','[%s][calls][hangup]','callerid','calleridname','[%s][calls][hangup]\x20callerid:%s\x20reason:%s','cause-txt','diffTime','endtime','starttime','billableseconds','attendedtransfer','localtwolinkedid','[%s][calls][attendedtransfer]','origtransfereruniqueid','transfereechannel','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','secondtransfererchannel','_attended','transfertargetchannel','origtransfererchannel','userfield','musiconholdstart','[%s][calls][musiconholdstart]','[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s','musiconholdstartAt'];(function(_0xb76aa,_0x5b09f4){var _0x5c02d0=function(_0x224c48){while(--_0x224c48){_0xb76aa['push'](_0xb76aa['shift']());}};_0x5c02d0(++_0x5b09f4);}(_0xd48e,0x93));var _0xed48=function(_0x3c8e9a,_0x384306){_0x3c8e9a=_0x3c8e9a-0x0;var _0x2d4c57=_0xd48e[_0x3c8e9a];return _0x2d4c57;};'use strict';var _=require('lodash');var util=require(_0xed48('0x0'));var utils=require(_0xed48('0x1'));var transfers=require(_0xed48('0x2'));var dispositions=[_0xed48('0x3'),_0xed48('0x4'),'FAILED',_0xed48('0x3'),_0xed48('0x3'),_0xed48('0x3'),'ANSWERED',_0xed48('0x5'),_0xed48('0x4'),_0xed48('0x4'),'FAILED'];var channels={};function writeDB(_0x2cc522){var _0x1c9299;if(transfers['blinds'][_0x2cc522['uniqueid']]){_0x1c9299=_0x2cc522['uniqueid'];_0x2cc522[_0xed48('0x6')]=transfers[_0xed48('0x7')][_0x2cc522[_0xed48('0x6')]]['transfereeuniqueid'];}utils['info'](util[_0xed48('0x8')](_0xed48('0x9'),_0x2cc522[_0xed48('0x6')],_0x2cc522['channel'],_0x2cc522[_0xed48('0xa')],_0x2cc522[_0xed48('0xb')],_0x2cc522[_0xed48('0xc')],_0x2cc522[_0xed48('0xd')],_0x2cc522[_0xed48('0xe')],_0x2cc522[_0xed48('0xf')]));if(_0x2cc522[_0xed48('0x10')]){utils[_0xed48('0x11')](_0x2cc522[_0xed48('0x10')])[_0xed48('0x12')](function(_0x408ce8){if(_0x408ce8){_0x2cc522[_0xed48('0x13')]=_0x408ce8['id'];}utils[_0xed48('0x14')]('CreateVoiceCallReport',_0x2cc522);});}else{utils[_0xed48('0x14')]('CreateVoiceCallReport',_0x2cc522);}if(channels[_0x2cc522[_0xed48('0x6')]]){delete channels[_0x2cc522['uniqueid']];}else if(_0x1c9299&&channels[_0x1c9299]){if(!transfers['blinds'][_0x1c9299][_0xed48('0x15')])delete transfers[_0xed48('0x7')][_0x1c9299];delete channels[_0x1c9299];}}exports[_0xed48('0x16')]=function(_0x4cb521){try{utils[_0xed48('0x17')](util['format'](_0xed48('0x18'),_0x4cb521['uniqueid']),_0x4cb521);if(_0x4cb521[_0xed48('0x6')]==_0x4cb521['linkedid']&&_0x4cb521[_0xed48('0x19')]!=_0xed48('0x1a')){utils[_0xed48('0x1b')](util['format']('[%s][calls][newchannel]\x20context:%s\x20exten:%s',_0x4cb521[_0xed48('0x6')],_0x4cb521[_0xed48('0x1c')],_0x4cb521[_0xed48('0x1d')]));channels[_0x4cb521['uniqueid']]={'uniqueid':_0x4cb521[_0xed48('0x6')],'accountcode':_0x4cb521[_0xed48('0x10')],'source':_0x4cb521[_0xed48('0xd')],'destination':_0x4cb521['exten'],'destinationcontext':_0x4cb521[_0xed48('0x1c')],'channel':_0x4cb521[_0xed48('0x19')],'starttime':utils[_0xed48('0x1e')](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':_0xed48('0x3'),'amaflags':_0xed48('0x1f')};}}catch(_0x17a39b){utils['error'](util[_0xed48('0x8')]('[%s][calls][newchannel]',_0x4cb521[_0xed48('0x6')]),_0x17a39b);}};exports[_0xed48('0x20')]=function(_0x14e642){try{utils['debug'](util['format'](_0xed48('0x21'),_0x14e642[_0xed48('0x6')]),_0x14e642);if(!_[_0xed48('0x22')](channels[_0x14e642[_0xed48('0x6')]])&&_0x14e642[_0xed48('0x23')]==0x6){utils[_0xed48('0x1b')](util[_0xed48('0x8')]('[%s][calls][newstate]\x20context:%s\x20channel:%s',_0x14e642[_0xed48('0x6')],_0x14e642[_0xed48('0x1c')],_0x14e642[_0xed48('0x19')]));if(_['isNil'](channels[_0x14e642[_0xed48('0x6')]][_0xed48('0x24')])){channels[_0x14e642['uniqueid']][_0xed48('0x24')]=utils['now']();}}else if(!_['isNil'](channels[_0x14e642[_0xed48('0x25')]])&&_0x14e642['channelstate']==0x6&&_0x14e642['context']!=_0xed48('0x26')){utils[_0xed48('0x1b')](util[_0xed48('0x8')]('[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s',_0x14e642[_0xed48('0x6')],_0x14e642[_0xed48('0x25')],_0x14e642[_0xed48('0x1c')],_0x14e642[_0xed48('0x19')]));channels[_0x14e642['linkedid']]['accountcode']=_0x14e642[_0xed48('0x10')];channels[_0x14e642['linkedid']][_0xed48('0x27')]=_0x14e642[_0xed48('0x19')];if(_[_0xed48('0x22')](channels[_0x14e642[_0xed48('0x25')]]['answertime'])){channels[_0x14e642['linkedid']][_0xed48('0x28')]=utils[_0xed48('0x1e')]();}channels[_0x14e642[_0xed48('0x25')]][_0xed48('0x29')]=dispositions[_[_0xed48('0x2a')](_0x14e642[_0xed48('0x23')])]||_0xed48('0x2b');}}catch(_0x3ce130){utils[_0xed48('0x2c')](util[_0xed48('0x8')](_0xed48('0x21'),_0x14e642[_0xed48('0x6')]),_0x3ce130);}};exports['hangup']=function(_0xdd9e08){try{if(!_[_0xed48('0x22')](channels[_0xdd9e08[_0xed48('0x6')]])){utils[_0xed48('0x17')](util[_0xed48('0x8')](_0xed48('0x2d'),_0xdd9e08[_0xed48('0x6')]),_0xdd9e08);if(_[_0xed48('0x22')](channels[_0xdd9e08[_0xed48('0x6')]][_0xed48('0x2e')])){channels[_0xdd9e08['uniqueid']][_0xed48('0x2e')]=_0xdd9e08[_0xed48('0x2f')]+'\x20<'+_0xdd9e08[_0xed48('0xd')]+'>';}utils[_0xed48('0x1b')](util['format'](_0xed48('0x30'),_0xdd9e08[_0xed48('0x6')],channels[_0xdd9e08['uniqueid']][_0xed48('0x2e')],_0xdd9e08[_0xed48('0x31')]));channels[_0xdd9e08[_0xed48('0x6')]]['endtime']=utils['now']();channels[_0xdd9e08[_0xed48('0x6')]]['duration']=utils[_0xed48('0x32')](channels[_0xdd9e08[_0xed48('0x6')]][_0xed48('0x33')],channels[_0xdd9e08[_0xed48('0x6')]][_0xed48('0x34')]);channels[_0xdd9e08[_0xed48('0x6')]][_0xed48('0x35')]=channels[_0xdd9e08[_0xed48('0x6')]][_0xed48('0x28')]?utils['diffTime'](channels[_0xdd9e08[_0xed48('0x6')]][_0xed48('0x33')],channels[_0xdd9e08[_0xed48('0x6')]][_0xed48('0x28')]):0x0;writeDB(channels[_0xdd9e08[_0xed48('0x6')]]);}}catch(_0x5b75b7){utils[_0xed48('0x2c')](util[_0xed48('0x8')](_0xed48('0x2d'),_0xdd9e08[_0xed48('0x6')]),_0x5b75b7);}};exports[_0xed48('0x36')]=function(_0x2563c8){try{if(!_[_0xed48('0x22')](channels[_0x2563c8[_0xed48('0x37')]])){utils[_0xed48('0x17')](util[_0xed48('0x8')](_0xed48('0x38'),_0x2563c8[_0xed48('0x39')]),_0x2563c8);if(channels[_0x2563c8[_0xed48('0x37')]][_0xed48('0x19')]==_0x2563c8[_0xed48('0x3a')]){utils[_0xed48('0x1b')](util[_0xed48('0x8')](_0xed48('0x3b'),_0x2563c8['origtransfereruniqueid'],_0x2563c8[_0xed48('0x37')],_0x2563c8[_0xed48('0x3c')]));channels[_0x2563c8[_0xed48('0x37')]][_0xed48('0x27')]=_0x2563c8[_0xed48('0x3c')];channels[_0x2563c8[_0xed48('0x37')]]['userfield']=_0xed48('0x3d');}else if(channels[_0x2563c8['localtwolinkedid']][_0xed48('0x19')]=_0x2563c8[_0xed48('0x3e')]){utils['info'](util['format'](_0xed48('0x3b'),_0x2563c8['origtransfereruniqueid'],_0x2563c8[_0xed48('0x37')],_0x2563c8['origtransfererchannel']));channels[_0x2563c8['localtwolinkedid']]['destinationchannel']=_0x2563c8[_0xed48('0x3f')];channels[_0x2563c8[_0xed48('0x37')]][_0xed48('0x40')]=_0xed48('0x3d');}}}catch(_0x283ab1){utils[_0xed48('0x2c')](util['format']('[%s][calls][attendedtransfer]',_0x2563c8[_0xed48('0x39')]),_0x283ab1);}};exports[_0xed48('0x41')]=function(_0xbab9c6){try{if(!_[_0xed48('0x22')](channels[_0xbab9c6[_0xed48('0x6')]])){utils[_0xed48('0x17')](util['format'](_0xed48('0x42'),_0xbab9c6['uniqueid']),_0xbab9c6);channels[_0xbab9c6['uniqueid']]['musiconholdstartAt']=utils[_0xed48('0x1e')]();utils[_0xed48('0x1b')](util[_0xed48('0x8')](_0xed48('0x43'),_0xbab9c6[_0xed48('0x6')],channels[_0xbab9c6[_0xed48('0x6')]][_0xed48('0x44')]));}}catch(_0x28924b){utils[_0xed48('0x2c')](util[_0xed48('0x8')](_0xed48('0x42'),_0xbab9c6[_0xed48('0x6')]),_0x28924b);}};exports['musiconholdstop']=function(_0x3f7deb){try{if(!_[_0xed48('0x22')](channels[_0x3f7deb[_0xed48('0x6')]])){utils[_0xed48('0x17')](util[_0xed48('0x8')](_0xed48('0x45'),_0x3f7deb[_0xed48('0x6')]),_0x3f7deb);if(!_[_0xed48('0x22')](channels[_0x3f7deb[_0xed48('0x6')]][_0xed48('0x44')])){channels[_0x3f7deb[_0xed48('0x6')]][_0xed48('0x46')]+=utils[_0xed48('0x32')](utils[_0xed48('0x1e')](),channels[_0x3f7deb['uniqueid']]['musiconholdstartAt']);utils['info'](util[_0xed48('0x8')](_0xed48('0x47'),_0x3f7deb[_0xed48('0x6')],channels[_0x3f7deb[_0xed48('0x6')]][_0xed48('0x46')]));delete channels[_0x3f7deb['uniqueid']]['musiconholdstartAt'];}}}catch(_0xbef0b0){utils[_0xed48('0x2c')](util[_0xed48('0x8')]('[%s][calls][musiconholdstop]',_0x3f7deb[_0xed48('0x6')]),_0xbef0b0);}};exports[_0xed48('0x48')]=function(_0x3f1943){try{if(!_[_0xed48('0x22')](channels[_0x3f1943[_0xed48('0x6')]])){utils['debug'](util[_0xed48('0x8')]('[%s][calls][varset]',_0x3f1943[_0xed48('0x6')]),_0x3f1943);if(!_[_0xed48('0x22')](_0x3f1943[_0xed48('0x49')][_0xed48('0x4a')])){utils[_0xed48('0x1b')](util[_0xed48('0x8')]('[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s',_0x3f1943[_0xed48('0x6')],_0x3f1943['value']));channels[_0x3f1943[_0xed48('0x6')]][_0xed48('0x4b')]=_0x3f1943[_0xed48('0x4c')];}if(!_['isNil'](_0x3f1943[_0xed48('0x49')][_0xed48('0x4d')])){utils['info'](util[_0xed48('0x8')]('[%s][calls][varset]\x20variable:xmd-phone\x20value:%s',_0x3f1943[_0xed48('0x6')],_0x3f1943['value']));channels[_0x3f1943[_0xed48('0x6')]][_0xed48('0x4e')]=_0x3f1943[_0xed48('0x4c')];channels[_0x3f1943[_0xed48('0x6')]]['callerid']='\x22'+_0x3f1943[_0xed48('0x4c')]+'\x22\x20<'+_0x3f1943[_0xed48('0x4c')]+'>';}if(!_[_0xed48('0x22')](_0x3f1943[_0xed48('0x49')][_0xed48('0x4f')])||!_[_0xed48('0x22')](_0x3f1943[_0xed48('0x49')][_0xed48('0x50')])){utils[_0xed48('0x1b')](util['format'](_0xed48('0x51'),_0x3f1943['uniqueid'],!_[_0xed48('0x22')](_0x3f1943['variable'][_0xed48('0x4f')])?_0xed48('0x4f'):_0xed48('0x50'),_0x3f1943[_0xed48('0x4c')]));channels[_0x3f1943[_0xed48('0x6')]][_0xed48('0x2e')]=_0x3f1943['value'];}if(!_['isNil'](_0x3f1943['variable'][_0xed48('0x52')])||!_['isNil'](_0x3f1943['variable'][_0xed48('0x53')])){utils['info'](util[_0xed48('0x8')](_0xed48('0x51'),_0x3f1943[_0xed48('0x6')],!_[_0xed48('0x22')](_0x3f1943['variable']['xmd-queue'])?_0xed48('0x52'):'xmcs-queue',_0x3f1943[_0xed48('0x4c')]));channels[_0x3f1943['uniqueid']][_0xed48('0x54')]=_0xed48('0x55');channels[_0x3f1943['uniqueid']][_0xed48('0x56')]=_0x3f1943['value'];channels[_0x3f1943[_0xed48('0x6')]][_0xed48('0xa')]=!![];}if(!_[_0xed48('0x22')](_0x3f1943[_0xed48('0x49')][_0xed48('0x57')])){utils[_0xed48('0x1b')](util[_0xed48('0x8')](_0xed48('0x58'),_0x3f1943['uniqueid'],_0x3f1943['value']));channels[_0x3f1943[_0xed48('0x6')]][_0xed48('0x59')]=_0x3f1943[_0xed48('0x4c')];}if(!_[_0xed48('0x22')](_0x3f1943['variable'][_0xed48('0x5a')])){utils[_0xed48('0x1b')](util[_0xed48('0x8')]('[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s',_0x3f1943[_0xed48('0x6')],_0x3f1943[_0xed48('0x4c')]));channels[_0x3f1943[_0xed48('0x6')]]['type']=_0x3f1943['value'];}if(!_[_0xed48('0x22')](_0x3f1943[_0xed48('0x49')]['outboundrouteid'])){utils[_0xed48('0x1b')](util['format']('[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s',_0x3f1943['uniqueid'],_0x3f1943['value']));channels[_0x3f1943[_0xed48('0x6')]][_0xed48('0x5b')]=_0x3f1943[_0xed48('0x4c')];}if(!_[_0xed48('0x22')](_0x3f1943['variable'][_0xed48('0x5c')])){utils['info'](util['format'](_0xed48('0x5d'),_0x3f1943[_0xed48('0x6')],_0x3f1943['value']));channels[_0x3f1943['uniqueid']][_0xed48('0x5c')]=_0x3f1943[_0xed48('0x4c')];}}}catch(_0x332812){utils['error'](util[_0xed48('0x8')]('[%s][calls][varset]',_0x3f1943[_0xed48('0x6')]),_0x332812);}};exports[_0xed48('0x5e')]=function(_0x147e19){try{if(!_[_0xed48('0x22')](channels[_0x147e19[_0xed48('0x6')]])){utils[_0xed48('0x17')](util['format'](_0xed48('0x5f'),_0x147e19[_0xed48('0x6')]),_0x147e19);utils[_0xed48('0x1b')](util[_0xed48('0x8')](_0xed48('0x60'),_0x147e19['uniqueid'],_0x147e19[_0xed48('0x61')],_0x147e19[_0xed48('0x62')]));if(_0x147e19['application']['toLowerCase']()==_0xed48('0x63')&&_[_0xed48('0x64')](_0x147e19[_0xed48('0x62')][_0xed48('0x65')](),_0xed48('0x66'))){var _0x412aa4=_0x147e19['appdata'][_0xed48('0x67')]('=');var _0x399eed=_0x412aa4[0x0][_0xed48('0x68')](_0x412aa4[0x0]['lastIndexOf']('(')+0x1,_0x412aa4[0x0]['lastIndexOf'](')'));var _0x5ebe8d=_0x412aa4[0x1];channels[_0x147e19[_0xed48('0x6')]][_0x399eed]=_0x5ebe8d;}if(!_['includes']([_0xed48('0x69'),'noop',_0xed48('0x6a'),_0xed48('0x63'),_0xed48('0x6b')],_0x147e19[_0xed48('0x61')][_0xed48('0x65')]())){channels[_0x147e19['uniqueid']]['lastapplication']=_0x147e19['application'];channels[_0x147e19['uniqueid']]['lastdata']=_0x147e19['appdata'];}}}catch(_0x3ba81c){utils['error'](util[_0xed48('0x8')](_0xed48('0x5f'),_0x147e19[_0xed48('0x6')]),_0x3ba81c);}};
\ No newline at end of file
index 4b20e0c..cf876d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6462=['[core]\x20connected','[core]\x20shutdown','fullybooted','[core]\x20fullybooted','error','close','[core]\x20close','./utils','connect','info'];(function(_0x27b7a1,_0x54c927){var _0xdc662b=function(_0x5cd1bc){while(--_0x5cd1bc){_0x27b7a1['push'](_0x27b7a1['shift']());}};_0xdc662b(++_0x54c927);}(_0x6462,0x11f));var _0x2646=function(_0x4ce259,_0xfbda9b){_0x4ce259=_0x4ce259-0x0;var _0x5b3426=_0x6462[_0x4ce259];return _0x5b3426;};'use strict';var utils=require(_0x2646('0x0'));exports[_0x2646('0x1')]=function(){utils[_0x2646('0x2')](_0x2646('0x3'));};exports['shutdown']=function(){utils[_0x2646('0x2')](_0x2646('0x4'));};exports[_0x2646('0x5')]=function(){utils[_0x2646('0x2')](_0x2646('0x6'));};exports[_0x2646('0x7')]=function(_0x301b01){utils['error']('[core]\x20error',_0x301b01);};exports[_0x2646('0x8')]=function(){utils[_0x2646('0x2')](_0x2646('0x9'));};exports['managerevent']=function(_0x22796c){};
\ No newline at end of file
+var _0x02ab=['close','[core]\x20close','managerevent','./utils','connect','[core]\x20connected','info','[core]\x20shutdown','fullybooted','[core]\x20fullybooted','error'];(function(_0x21288b,_0x9d6515){var _0x26431=function(_0xc2efbc){while(--_0xc2efbc){_0x21288b['push'](_0x21288b['shift']());}};_0x26431(++_0x9d6515);}(_0x02ab,0x1e7));var _0xb02a=function(_0x4bc0b8,_0x2b8c2c){_0x4bc0b8=_0x4bc0b8-0x0;var _0x357924=_0x02ab[_0x4bc0b8];return _0x357924;};'use strict';var utils=require(_0xb02a('0x0'));exports[_0xb02a('0x1')]=function(){utils['info'](_0xb02a('0x2'));};exports['shutdown']=function(){utils[_0xb02a('0x3')](_0xb02a('0x4'));};exports[_0xb02a('0x5')]=function(){utils[_0xb02a('0x3')](_0xb02a('0x6'));};exports['error']=function(_0x3c3bc3){utils[_0xb02a('0x7')]('[core]\x20error',_0x3c3bc3);};exports[_0xb02a('0x8')]=function(){utils[_0xb02a('0x3')](_0xb02a('0x9'));};exports[_0xb02a('0xa')]=function(_0x56f35c){};
\ No newline at end of file
index 5c57479..2196c8c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x834e=['toLowerCase','startsWith','cdr(routeid)','error','varset','debug','[%s][dials][varset]','variable','outboundrouteid','[%s][dials][varset]\x20variable:outboundrouteid\x20value:%s','value','isNil','assign','starttime','now','lastevent','called','[%s][dials][hangup]\x20starttime:%s\x20lastevent:called','[%s][dials][dialbegin]','dialend','[%s][dials][dialend]','dialstatus','ANSWER','answertime','connect','[%s][dials][dialend]\x20dialstatus:%s\x20answertime:%s\x20lastevent:connect','[%s][dials][dialend]\x20dialstatus:%s','hangup','[%s][dials][hangup]','[%s][dials][hangup]\x20calleridnum:%s\x20calleridname:%s\x20lastevent:complete\x20reason:%s','calleridname','complete','diffTime','endtime','holdtime','billableseconds','lodash','util','./utils','info','format','[%s][dials][writeDB]\x20channel:%s\x20dialstring:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20dialstatus:%s','uniqueid','channel','dialstring','calleridnum','connectedlinenum','request','CreateVoiceDialReport','newexten','[%s][dials][newexten]','appdata','application'];(function(_0x251e8c,_0x277c33){var _0x1e0c1d=function(_0x20b89c){while(--_0x20b89c){_0x251e8c['push'](_0x251e8c['shift']());}};_0x1e0c1d(++_0x277c33);}(_0x834e,0x162));var _0xe834=function(_0x38428c,_0x5575c1){_0x38428c=_0x38428c-0x0;var _0x4466e0=_0x834e[_0x38428c];return _0x4466e0;};'use strict';var _=require(_0xe834('0x0'));var util=require(_0xe834('0x1'));var utils=require(_0xe834('0x2'));var dials={};function writeDB(_0x2c49f4){utils[_0xe834('0x3')](util[_0xe834('0x4')](_0xe834('0x5'),_0x2c49f4[_0xe834('0x6')],_0x2c49f4[_0xe834('0x7')],_0x2c49f4[_0xe834('0x8')],_0x2c49f4[_0xe834('0x9')],_0x2c49f4[_0xe834('0xa')],_0x2c49f4['dialstatus']));utils[_0xe834('0xb')](_0xe834('0xc'),_0x2c49f4);delete dials[_0x2c49f4[_0xe834('0x6')]];}exports[_0xe834('0xd')]=function(_0x529415){try{utils['debug'](util[_0xe834('0x4')](_0xe834('0xe'),_0x529415[_0xe834('0x6')]),_0x529415);utils[_0xe834('0x3')](util['format']('[%s][dials][newexten]\x20application:%s\x20appdata:%s',_0x529415[_0xe834('0x6')],_0x529415['application'],_0x529415[_0xe834('0xf')]));if(_0x529415[_0xe834('0x10')][_0xe834('0x11')]()=='set'&&_[_0xe834('0x12')](_0x529415['appdata'][_0xe834('0x11')](),_0xe834('0x13'))){var _0x4d283e=_0x529415['appdata']['split']('=');dials[_0x529415[_0xe834('0x6')]]={'routeId':_0x4d283e[0x1]};}}catch(_0x366c79){utils[_0xe834('0x14')](util[_0xe834('0x4')](_0xe834('0xe'),_0x529415[_0xe834('0x6')]),_0x366c79);}};exports[_0xe834('0x15')]=function(_0x5aa5ea){try{utils[_0xe834('0x16')](util[_0xe834('0x4')](_0xe834('0x17'),_0x5aa5ea[_0xe834('0x6')]),_0x5aa5ea);if(!_['isNil'](_0x5aa5ea[_0xe834('0x18')][_0xe834('0x19')])){utils['info'](util[_0xe834('0x4')](_0xe834('0x1a'),_0x5aa5ea[_0xe834('0x6')],_0x5aa5ea[_0xe834('0x1b')]));dials[_0x5aa5ea[_0xe834('0x6')]]={'routeId':_0x5aa5ea[_0xe834('0x1b')]};}}catch(_0x7b3d62){utils['error'](util['format'](_0xe834('0x17'),_0x5aa5ea[_0xe834('0x6')]),_0x7b3d62);}};exports['dialbegin']=function(_0x3a5951){try{if(!_[_0xe834('0x1c')](dials[_0x3a5951[_0xe834('0x6')]])){utils[_0xe834('0x16')](util[_0xe834('0x4')]('[%s][dials][dialbegin]',_0x3a5951[_0xe834('0x6')]),_0x3a5951);dials[_0x3a5951[_0xe834('0x6')]]=_[_0xe834('0x1d')](dials[_0x3a5951['uniqueid']],_0x3a5951);dials[_0x3a5951[_0xe834('0x6')]][_0xe834('0x1e')]=utils[_0xe834('0x1f')]();dials[_0x3a5951[_0xe834('0x6')]][_0xe834('0x20')]=_0xe834('0x21');utils[_0xe834('0x3')](util[_0xe834('0x4')](_0xe834('0x22'),_0x3a5951[_0xe834('0x6')],dials[_0x3a5951['uniqueid']]['starttime']));}}catch(_0x2cac85){utils['error'](util[_0xe834('0x4')](_0xe834('0x23'),_0x3a5951[_0xe834('0x6')]),_0x2cac85);}};exports[_0xe834('0x24')]=function(_0x51fbf7){try{if(!_[_0xe834('0x1c')](dials[_0x51fbf7[_0xe834('0x6')]])){utils[_0xe834('0x16')](util[_0xe834('0x4')](_0xe834('0x25'),_0x51fbf7['uniqueid']),_0x51fbf7);dials[_0x51fbf7[_0xe834('0x6')]]['dialstatus']=_0x51fbf7['dialstatus'];if(_0x51fbf7[_0xe834('0x26')]==_0xe834('0x27')){dials[_0x51fbf7[_0xe834('0x6')]]=_[_0xe834('0x1d')](dials[_0x51fbf7[_0xe834('0x6')]],_0x51fbf7);dials[_0x51fbf7['uniqueid']][_0xe834('0x28')]=utils[_0xe834('0x1f')]();dials[_0x51fbf7[_0xe834('0x6')]][_0xe834('0x20')]=_0xe834('0x29');utils['info'](util[_0xe834('0x4')](_0xe834('0x2a'),_0x51fbf7[_0xe834('0x6')],_0x51fbf7[_0xe834('0x26')],dials[_0x51fbf7[_0xe834('0x6')]][_0xe834('0x28')]));}else{utils['info'](util[_0xe834('0x4')](_0xe834('0x2b'),_0x51fbf7[_0xe834('0x6')],_0x51fbf7[_0xe834('0x26')]));}}}catch(_0x4b169c){utils[_0xe834('0x14')](util[_0xe834('0x4')]('[%s][dials][dialend]',_0x51fbf7[_0xe834('0x6')]),_0x4b169c);}};exports[_0xe834('0x2c')]=function(_0x470c34){try{if(!_[_0xe834('0x1c')](dials[_0x470c34[_0xe834('0x6')]])){utils['debug'](util['format'](_0xe834('0x2d'),_0x470c34[_0xe834('0x6')]),_0x470c34);utils[_0xe834('0x3')](util[_0xe834('0x4')](_0xe834('0x2e'),_0x470c34['uniqueid'],_0x470c34[_0xe834('0x9')],_0x470c34[_0xe834('0x2f')],_0x470c34['cause-txt']));dials[_0x470c34['uniqueid']]=_['assign'](dials[_0x470c34['uniqueid']],{'endtime':utils[_0xe834('0x1f')](),'lastevent':_0xe834('0x30')});dials[_0x470c34[_0xe834('0x6')]]['duration']=utils[_0xe834('0x31')](dials[_0x470c34[_0xe834('0x6')]][_0xe834('0x32')],dials[_0x470c34['uniqueid']][_0xe834('0x1e')]);dials[_0x470c34[_0xe834('0x6')]][_0xe834('0x33')]=utils['diffTime'](dials[_0x470c34[_0xe834('0x6')]][_0xe834('0x28')]||dials[_0x470c34['uniqueid']][_0xe834('0x32')],dials[_0x470c34[_0xe834('0x6')]][_0xe834('0x1e')]);dials[_0x470c34[_0xe834('0x6')]][_0xe834('0x34')]=dials[_0x470c34[_0xe834('0x6')]]['answertime']?utils['diffTime'](dials[_0x470c34[_0xe834('0x6')]]['endtime'],dials[_0x470c34['uniqueid']]['answertime']):0x0;writeDB(dials[_0x470c34[_0xe834('0x6')]]);}}catch(_0xda6d59){utils['error'](util[_0xe834('0x4')]('[%s][dials][hangup]',_0x470c34[_0xe834('0x6')]),_0xda6d59);}};
\ No newline at end of file
+var _0xdd38=['debug','format','[%s][dials][newexten]\x20application:%s\x20appdata:%s','toLowerCase','set','startsWith','appdata','split','[%s][dials][newexten]','varset','[%s][dials][varset]','outboundrouteid','[%s][dials][varset]\x20variable:outboundrouteid\x20value:%s','value','dialbegin','isNil','[%s][dials][dialbegin]','assign','starttime','now','lastevent','called','[%s][dials][hangup]\x20starttime:%s\x20lastevent:called','error','dialend','ANSWER','connect','[%s][dials][dialend]\x20dialstatus:%s\x20answertime:%s\x20lastevent:connect','[%s][dials][dialend]\x20dialstatus:%s','[%s][dials][dialend]','hangup','[%s][dials][hangup]','cause-txt','complete','diffTime','holdtime','endtime','billableseconds','answertime','lodash','util','info','uniqueid','channel','dialstring','calleridnum','connectedlinenum','dialstatus','request','CreateVoiceDialReport','newexten'];(function(_0x7a5af0,_0x5ee615){var _0x4a74bc=function(_0xdeddc0){while(--_0xdeddc0){_0x7a5af0['push'](_0x7a5af0['shift']());}};_0x4a74bc(++_0x5ee615);}(_0xdd38,0x1f2));var _0x8dd3=function(_0x4a5195,_0x20603e){_0x4a5195=_0x4a5195-0x0;var _0x30908e=_0xdd38[_0x4a5195];return _0x30908e;};'use strict';var _=require(_0x8dd3('0x0'));var util=require(_0x8dd3('0x1'));var utils=require('./utils');var dials={};function writeDB(_0x186c19){utils[_0x8dd3('0x2')](util['format']('[%s][dials][writeDB]\x20channel:%s\x20dialstring:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20dialstatus:%s',_0x186c19[_0x8dd3('0x3')],_0x186c19[_0x8dd3('0x4')],_0x186c19[_0x8dd3('0x5')],_0x186c19[_0x8dd3('0x6')],_0x186c19[_0x8dd3('0x7')],_0x186c19[_0x8dd3('0x8')]));utils[_0x8dd3('0x9')](_0x8dd3('0xa'),_0x186c19);delete dials[_0x186c19[_0x8dd3('0x3')]];}exports[_0x8dd3('0xb')]=function(_0x5cbad9){try{utils[_0x8dd3('0xc')](util[_0x8dd3('0xd')]('[%s][dials][newexten]',_0x5cbad9[_0x8dd3('0x3')]),_0x5cbad9);utils[_0x8dd3('0x2')](util[_0x8dd3('0xd')](_0x8dd3('0xe'),_0x5cbad9[_0x8dd3('0x3')],_0x5cbad9['application'],_0x5cbad9['appdata']));if(_0x5cbad9['application'][_0x8dd3('0xf')]()==_0x8dd3('0x10')&&_[_0x8dd3('0x11')](_0x5cbad9[_0x8dd3('0x12')][_0x8dd3('0xf')](),'cdr(routeid)')){var _0x123612=_0x5cbad9['appdata'][_0x8dd3('0x13')]('=');dials[_0x5cbad9[_0x8dd3('0x3')]]={'routeId':_0x123612[0x1]};}}catch(_0x2acd62){utils['error'](util[_0x8dd3('0xd')](_0x8dd3('0x14'),_0x5cbad9[_0x8dd3('0x3')]),_0x2acd62);}};exports[_0x8dd3('0x15')]=function(_0x511a02){try{utils['debug'](util[_0x8dd3('0xd')](_0x8dd3('0x16'),_0x511a02['uniqueid']),_0x511a02);if(!_['isNil'](_0x511a02['variable'][_0x8dd3('0x17')])){utils['info'](util[_0x8dd3('0xd')](_0x8dd3('0x18'),_0x511a02[_0x8dd3('0x3')],_0x511a02['value']));dials[_0x511a02[_0x8dd3('0x3')]]={'routeId':_0x511a02[_0x8dd3('0x19')]};}}catch(_0x1df37f){utils['error'](util[_0x8dd3('0xd')](_0x8dd3('0x16'),_0x511a02[_0x8dd3('0x3')]),_0x1df37f);}};exports[_0x8dd3('0x1a')]=function(_0x381aa9){try{if(!_[_0x8dd3('0x1b')](dials[_0x381aa9[_0x8dd3('0x3')]])){utils[_0x8dd3('0xc')](util[_0x8dd3('0xd')](_0x8dd3('0x1c'),_0x381aa9['uniqueid']),_0x381aa9);dials[_0x381aa9[_0x8dd3('0x3')]]=_[_0x8dd3('0x1d')](dials[_0x381aa9[_0x8dd3('0x3')]],_0x381aa9);dials[_0x381aa9['uniqueid']][_0x8dd3('0x1e')]=utils[_0x8dd3('0x1f')]();dials[_0x381aa9[_0x8dd3('0x3')]][_0x8dd3('0x20')]=_0x8dd3('0x21');utils[_0x8dd3('0x2')](util[_0x8dd3('0xd')](_0x8dd3('0x22'),_0x381aa9[_0x8dd3('0x3')],dials[_0x381aa9[_0x8dd3('0x3')]][_0x8dd3('0x1e')]));}}catch(_0x24bcc4){utils[_0x8dd3('0x23')](util['format'](_0x8dd3('0x1c'),_0x381aa9[_0x8dd3('0x3')]),_0x24bcc4);}};exports[_0x8dd3('0x24')]=function(_0x489499){try{if(!_['isNil'](dials[_0x489499[_0x8dd3('0x3')]])){utils['debug'](util['format']('[%s][dials][dialend]',_0x489499[_0x8dd3('0x3')]),_0x489499);dials[_0x489499[_0x8dd3('0x3')]][_0x8dd3('0x8')]=_0x489499[_0x8dd3('0x8')];if(_0x489499[_0x8dd3('0x8')]==_0x8dd3('0x25')){dials[_0x489499[_0x8dd3('0x3')]]=_[_0x8dd3('0x1d')](dials[_0x489499[_0x8dd3('0x3')]],_0x489499);dials[_0x489499['uniqueid']]['answertime']=utils[_0x8dd3('0x1f')]();dials[_0x489499[_0x8dd3('0x3')]][_0x8dd3('0x20')]=_0x8dd3('0x26');utils[_0x8dd3('0x2')](util[_0x8dd3('0xd')](_0x8dd3('0x27'),_0x489499[_0x8dd3('0x3')],_0x489499[_0x8dd3('0x8')],dials[_0x489499[_0x8dd3('0x3')]]['answertime']));}else{utils[_0x8dd3('0x2')](util[_0x8dd3('0xd')](_0x8dd3('0x28'),_0x489499[_0x8dd3('0x3')],_0x489499['dialstatus']));}}}catch(_0x2f8a19){utils[_0x8dd3('0x23')](util[_0x8dd3('0xd')](_0x8dd3('0x29'),_0x489499['uniqueid']),_0x2f8a19);}};exports[_0x8dd3('0x2a')]=function(_0x3cc093){try{if(!_[_0x8dd3('0x1b')](dials[_0x3cc093['uniqueid']])){utils[_0x8dd3('0xc')](util['format'](_0x8dd3('0x2b'),_0x3cc093['uniqueid']),_0x3cc093);utils[_0x8dd3('0x2')](util[_0x8dd3('0xd')]('[%s][dials][hangup]\x20calleridnum:%s\x20calleridname:%s\x20lastevent:complete\x20reason:%s',_0x3cc093['uniqueid'],_0x3cc093['calleridnum'],_0x3cc093['calleridname'],_0x3cc093[_0x8dd3('0x2c')]));dials[_0x3cc093[_0x8dd3('0x3')]]=_[_0x8dd3('0x1d')](dials[_0x3cc093['uniqueid']],{'endtime':utils[_0x8dd3('0x1f')](),'lastevent':_0x8dd3('0x2d')});dials[_0x3cc093[_0x8dd3('0x3')]]['duration']=utils[_0x8dd3('0x2e')](dials[_0x3cc093['uniqueid']]['endtime'],dials[_0x3cc093[_0x8dd3('0x3')]]['starttime']);dials[_0x3cc093[_0x8dd3('0x3')]][_0x8dd3('0x2f')]=utils[_0x8dd3('0x2e')](dials[_0x3cc093[_0x8dd3('0x3')]]['answertime']||dials[_0x3cc093[_0x8dd3('0x3')]][_0x8dd3('0x30')],dials[_0x3cc093['uniqueid']]['starttime']);dials[_0x3cc093[_0x8dd3('0x3')]][_0x8dd3('0x31')]=dials[_0x3cc093[_0x8dd3('0x3')]][_0x8dd3('0x32')]?utils[_0x8dd3('0x2e')](dials[_0x3cc093[_0x8dd3('0x3')]]['endtime'],dials[_0x3cc093[_0x8dd3('0x3')]][_0x8dd3('0x32')]):0x0;writeDB(dials[_0x3cc093[_0x8dd3('0x3')]]);}}catch(_0x1da9c6){utils[_0x8dd3('0x23')](util[_0x8dd3('0xd')](_0x8dd3('0x2b'),_0x3cc093['uniqueid']),_0x1da9c6);}};
\ No newline at end of file
index f849afc..b270563 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6dfb=['queuecallerabandon','[%s][index][queuecallerabandon]','[%s][index][queuecallerjoin]','queuecallerjoin','queuecallerleave','[%s][index][queuecallerleave]','[%s][index][musiconholdstart]','musiconholdstart','musiconholdstop','[%s][index][musiconholdstop]','newstate','[%s][index][newstate]','hangup','[%s][index][hangup]','cdr','[%s][index][cdr]','[%s][index][blindtransfer]','blindtransfer','attendedtransfer','[%s][index][attendedtransfer]','origtransfereruniqueid','varset','[%s][index][varset]','newexten','[%s][index][newexten]','[%s][index][newchannel]','newchannel','dialbegin','[%s][index][dialbegin]','[%s]dialbegin','dialend','[%s][index][dialend]','asterisk-manager','../../config/environment','./utils','util','xdr','disabled','production','local','asterisk','port','username','keepConnected','info','Asterisk\x20disabled\x20on\x20localhost','./agents.controller','./calls.controller','./queues.controller','./recordings.controller','./members.controller','./dials.controller','./transfers.controller','./core.controller','connect','shutdown','fullybooted','error','close','managerevent','devicestatechange','format','device','[%s][index][devicestatechange]','agentcalled','debug','[%s][index][agentcalled]','uniqueid','agentringnoanswer','[%s][index][agentringnoanswer]','agentconnect','[%s][index][agentconnect]','agentcomplete','[%s][index][agentcomplete]'];(function(_0x1ac47f,_0x3b7aaf){var _0x43276f=function(_0x46906c){while(--_0x46906c){_0x1ac47f['push'](_0x1ac47f['shift']());}};_0x43276f(++_0x3b7aaf);}(_0x6dfb,0x6a));var _0xb6df=function(_0x16d95b,_0x34d081){_0x16d95b=_0x16d95b-0x0;var _0x11b271=_0x6dfb[_0x16d95b];return _0x11b271;};var AsteriskManager=require(_0xb6df('0x0'));var config=require(_0xb6df('0x1'));var utils=require(_0xb6df('0x2'));var util=require(_0xb6df('0x3'));var isXDREnabled=config[_0xb6df('0x4')]&&config['xdr'][_0xb6df('0x5')]?!config[_0xb6df('0x4')][_0xb6df('0x5')]:!![];var isProduction=config['env']===_0xb6df('0x6')||![];var isLocalAsterisk=config[_0xb6df('0x4')]&&config[_0xb6df('0x4')][_0xb6df('0x7')]===!![]||![];var ami=new AsteriskManager(config[_0xb6df('0x8')][_0xb6df('0x9')],config[_0xb6df('0x8')]['ip'],config[_0xb6df('0x8')][_0xb6df('0xa')],config[_0xb6df('0x8')]['password'],!![]);ami[_0xb6df('0xb')]();if(!isXDREnabled){utils[_0xb6df('0xc')]('XDR\x20DISABLED');}else if(!isProduction&&!isLocalAsterisk){utils[_0xb6df('0xc')](_0xb6df('0xd'));}else{var agents=require(_0xb6df('0xe'));var calls=require(_0xb6df('0xf'));var queues=require(_0xb6df('0x10'));var recordings=require(_0xb6df('0x11'));var members=require(_0xb6df('0x12'));var dials=require(_0xb6df('0x13'));var transfers=require(_0xb6df('0x14'));var core=require(_0xb6df('0x15'));ami['on'](_0xb6df('0x16'),core[_0xb6df('0x16')]);ami['on'](_0xb6df('0x17'),core['shutdown']);ami['on']('fullybooted',core[_0xb6df('0x18')]);ami['on'](_0xb6df('0x19'),core[_0xb6df('0x19')]);ami['on']('close',core[_0xb6df('0x1a')]);ami['on']('managerevent',core[_0xb6df('0x1b')]);ami['on'](_0xb6df('0x1c'),function(_0x1335ef){try{utils['debug'](util[_0xb6df('0x1d')]('[%s][index][devicestatechange]',_0x1335ef[_0xb6df('0x1e')]),_0x1335ef);members['devicestatechange'](_0x1335ef);}catch(_0x1dd7c0){utils['error'](util[_0xb6df('0x1d')](_0xb6df('0x1f'),_0x1335ef[_0xb6df('0x1e')]),_0x1dd7c0);}});ami['on'](_0xb6df('0x20'),function(_0xc31f22){try{utils[_0xb6df('0x21')](util[_0xb6df('0x1d')](_0xb6df('0x22'),_0xc31f22[_0xb6df('0x23')]),_0xc31f22);agents[_0xb6df('0x20')](_0xc31f22);}catch(_0x563d61){utils[_0xb6df('0x19')](util[_0xb6df('0x1d')](_0xb6df('0x22'),_0xc31f22[_0xb6df('0x23')]),_0x563d61);}});ami['on'](_0xb6df('0x24'),function(_0x589192){try{utils[_0xb6df('0x21')](util[_0xb6df('0x1d')](_0xb6df('0x25'),_0x589192[_0xb6df('0x23')]),_0x589192);agents[_0xb6df('0x24')](_0x589192);}catch(_0x1253cc){utils['error'](util[_0xb6df('0x1d')](_0xb6df('0x25'),_0x589192['uniqueid']),_0x1253cc);}});ami['on'](_0xb6df('0x26'),function(_0x1f5978){try{utils['debug'](util[_0xb6df('0x1d')](_0xb6df('0x27'),_0x1f5978[_0xb6df('0x23')]),_0x1f5978);agents['agentconnect'](_0x1f5978);queues[_0xb6df('0x26')](_0x1f5978);}catch(_0x57d7d0){utils[_0xb6df('0x19')](util[_0xb6df('0x1d')](_0xb6df('0x27'),_0x1f5978[_0xb6df('0x23')]),_0x57d7d0);}});ami['on'](_0xb6df('0x28'),function(_0x45a9e5){try{utils[_0xb6df('0x21')](util[_0xb6df('0x1d')](_0xb6df('0x29'),_0x45a9e5[_0xb6df('0x23')]),_0x45a9e5);agents[_0xb6df('0x28')](_0x45a9e5);queues[_0xb6df('0x28')](_0x45a9e5);members['agentcomplete'](_0x45a9e5);}catch(_0x46e275){utils['error'](util[_0xb6df('0x1d')](_0xb6df('0x29'),_0x45a9e5['uniqueid']),_0x46e275);}});ami['on'](_0xb6df('0x2a'),function(_0x559d1d){try{utils[_0xb6df('0x21')](util[_0xb6df('0x1d')](_0xb6df('0x2b'),_0x559d1d[_0xb6df('0x23')]),_0x559d1d);agents[_0xb6df('0x2a')](_0x559d1d);queues[_0xb6df('0x2a')](_0x559d1d);}catch(_0x4b6795){utils[_0xb6df('0x19')](util[_0xb6df('0x1d')](_0xb6df('0x2b'),_0x559d1d[_0xb6df('0x23')]),_0x4b6795);}});ami['on']('queuecallerjoin',function(_0x2c932d){try{utils[_0xb6df('0x21')](util[_0xb6df('0x1d')](_0xb6df('0x2c'),_0x2c932d['uniqueid']),_0x2c932d);queues[_0xb6df('0x2d')](_0x2c932d);recordings['queuecallerjoin'](_0x2c932d);}catch(_0x542941){utils[_0xb6df('0x19')](util[_0xb6df('0x1d')](_0xb6df('0x2c'),_0x2c932d[_0xb6df('0x23')]),_0x542941);}});ami['on'](_0xb6df('0x2e'),function(_0x47793d){try{utils['debug'](util[_0xb6df('0x1d')](_0xb6df('0x2f'),_0x47793d[_0xb6df('0x23')]),_0x47793d);queues['queuecallerleave'](_0x47793d);}catch(_0x31a12f){utils[_0xb6df('0x19')](util[_0xb6df('0x1d')]('[%s][index][queuecallerleave]',_0x47793d[_0xb6df('0x23')]),_0x31a12f);}});ami['on']('musiconholdstart',function(_0x4dbef6){try{utils[_0xb6df('0x21')](util[_0xb6df('0x1d')](_0xb6df('0x30'),_0x4dbef6[_0xb6df('0x23')]),_0x4dbef6);queues[_0xb6df('0x31')](_0x4dbef6);calls[_0xb6df('0x31')](_0x4dbef6);}catch(_0x4abf78){utils[_0xb6df('0x19')](util[_0xb6df('0x1d')](_0xb6df('0x30'),_0x4dbef6[_0xb6df('0x23')]),_0x4abf78);}});ami['on'](_0xb6df('0x32'),function(_0x2b0e4e){try{utils[_0xb6df('0x21')](util[_0xb6df('0x1d')](_0xb6df('0x33'),_0x2b0e4e['uniqueid']),_0x2b0e4e);queues['musiconholdstop'](_0x2b0e4e);calls[_0xb6df('0x32')](_0x2b0e4e);}catch(_0x1c288a){utils[_0xb6df('0x19')](util['format']('[%s][index][musiconholdstop]',_0x2b0e4e[_0xb6df('0x23')]),_0x1c288a);}});ami['on'](_0xb6df('0x34'),function(_0x114312){try{utils[_0xb6df('0x21')](util[_0xb6df('0x1d')](_0xb6df('0x35'),_0x114312[_0xb6df('0x23')]),_0x114312);calls[_0xb6df('0x34')](_0x114312);recordings[_0xb6df('0x34')](_0x114312);}catch(_0x4f468c){utils[_0xb6df('0x19')](util[_0xb6df('0x1d')](_0xb6df('0x35'),_0x114312[_0xb6df('0x23')]),_0x4f468c);}});ami['on'](_0xb6df('0x36'),function(_0x1be99f){try{utils[_0xb6df('0x21')](util[_0xb6df('0x1d')]('[%s][index][hangup]',_0x1be99f['uniqueid']),_0x1be99f);calls[_0xb6df('0x36')](_0x1be99f);recordings['hangup'](_0x1be99f);dials['hangup'](_0x1be99f);agents[_0xb6df('0x36')](_0x1be99f);queues[_0xb6df('0x36')](_0x1be99f);}catch(_0x377ce7){utils[_0xb6df('0x19')](util[_0xb6df('0x1d')](_0xb6df('0x37'),_0x1be99f[_0xb6df('0x23')]),_0x377ce7);}});ami['on'](_0xb6df('0x38'),function(_0x5e0852){try{utils['debug'](util['format'](_0xb6df('0x39'),_0x5e0852[_0xb6df('0x23')]),_0x5e0852);members['cdr'](_0x5e0852);}catch(_0x2d31e0){utils[_0xb6df('0x19')](util[_0xb6df('0x1d')](_0xb6df('0x39'),_0x5e0852[_0xb6df('0x23')]),_0x2d31e0);}});ami['on']('blindtransfer',function(_0x4a445b){try{utils['debug'](util[_0xb6df('0x1d')](_0xb6df('0x3a'),_0x4a445b[_0xb6df('0x23')]),_0x4a445b);queues[_0xb6df('0x3b')](_0x4a445b);agents[_0xb6df('0x3b')](_0x4a445b);transfers[_0xb6df('0x3b')](_0x4a445b);recordings['blindtransfer'](_0x4a445b);}catch(_0xf2c66f){utils[_0xb6df('0x19')](util[_0xb6df('0x1d')](_0xb6df('0x3a'),_0x4a445b[_0xb6df('0x23')]),_0xf2c66f);}});ami['on'](_0xb6df('0x3c'),function(_0x5b4b01){try{utils[_0xb6df('0x21')](util[_0xb6df('0x1d')](_0xb6df('0x3d'),_0x5b4b01[_0xb6df('0x3e')]),_0x5b4b01);queues[_0xb6df('0x3c')](_0x5b4b01);transfers[_0xb6df('0x3c')](_0x5b4b01);agents[_0xb6df('0x3c')](_0x5b4b01);calls[_0xb6df('0x3c')](_0x5b4b01);}catch(_0x3cbdc0){utils[_0xb6df('0x19')](util[_0xb6df('0x1d')](_0xb6df('0x3d'),_0x5b4b01[_0xb6df('0x3e')]),_0x3cbdc0);}});ami['on'](_0xb6df('0x3f'),function(_0x2c6a79){try{utils['debug'](util['format'](_0xb6df('0x40'),_0x2c6a79[_0xb6df('0x23')]),_0x2c6a79);queues['varset'](_0x2c6a79);recordings['varset'](_0x2c6a79);calls[_0xb6df('0x3f')](_0x2c6a79);dials[_0xb6df('0x3f')](_0x2c6a79);}catch(_0x5594a9){utils['error'](util[_0xb6df('0x1d')](_0xb6df('0x40'),_0x2c6a79[_0xb6df('0x23')]),_0x5594a9);}});ami['on'](_0xb6df('0x41'),function(_0x125fb3){try{utils[_0xb6df('0x21')](util[_0xb6df('0x1d')](_0xb6df('0x42'),_0x125fb3[_0xb6df('0x23')]),_0x125fb3);calls[_0xb6df('0x41')](_0x125fb3);recordings[_0xb6df('0x41')](_0x125fb3);dials[_0xb6df('0x41')](_0x125fb3);}catch(_0x3391cc){utils[_0xb6df('0x19')](util[_0xb6df('0x1d')](_0xb6df('0x42'),_0x125fb3[_0xb6df('0x23')]),_0x3391cc);}});ami['on']('newchannel',function(_0x9194c4){try{utils[_0xb6df('0x21')](util[_0xb6df('0x1d')](_0xb6df('0x43'),_0x9194c4['uniqueid']),_0x9194c4);calls[_0xb6df('0x44')](_0x9194c4);recordings[_0xb6df('0x44')](_0x9194c4);}catch(_0x3e19d8){utils[_0xb6df('0x19')](util[_0xb6df('0x1d')](_0xb6df('0x43'),_0x9194c4[_0xb6df('0x23')]),_0x3e19d8);}});ami['on'](_0xb6df('0x45'),function(_0x10a2d2){try{utils[_0xb6df('0x21')](util[_0xb6df('0x1d')](_0xb6df('0x46'),_0x10a2d2[_0xb6df('0x23')]),_0x10a2d2);dials[_0xb6df('0x45')](_0x10a2d2);}catch(_0x1dc86c){utils['error'](util['format'](_0xb6df('0x47'),_0x10a2d2[_0xb6df('0x23')]),_0x1dc86c);}});ami['on'](_0xb6df('0x48'),function(_0x41ff0c){try{utils[_0xb6df('0x21')](util[_0xb6df('0x1d')](_0xb6df('0x49'),_0x41ff0c[_0xb6df('0x23')]),_0x41ff0c);dials[_0xb6df('0x48')](_0x41ff0c);}catch(_0x12905d){utils['error'](util[_0xb6df('0x1d')]('[%s][index][dialend]',_0x41ff0c[_0xb6df('0x23')]),_0x12905d);}});}
\ No newline at end of file
+var _0xb66b=['cdr','[%s][index][cdr]','[%s][index][blindtransfer]','blindtransfer','attendedtransfer','[%s][index][attendedtransfer]','origtransfereruniqueid','varset','[%s][index][varset]','newexten','[%s][index][newexten]','newchannel','[%s][index][newchannel]','dialbegin','[%s]dialbegin','dialend','[%s][index][dialend]','asterisk-manager','../../config/environment','./utils','util','xdr','disabled','env','production','asterisk','port','username','keepConnected','info','Asterisk\x20disabled\x20on\x20localhost','./agents.controller','./calls.controller','./recordings.controller','./dials.controller','connect','shutdown','fullybooted','error','close','devicestatechange','debug','device','agentcalled','uniqueid','format','[%s][index][agentcalled]','agentringnoanswer','[%s][index][agentringnoanswer]','agentconnect','[%s][index][agentconnect]','agentcomplete','[%s][index][agentcomplete]','queuecallerabandon','queuecallerjoin','[%s][index][queuecallerjoin]','queuecallerleave','[%s][index][queuecallerleave]','musiconholdstart','[%s][index][musiconholdstart]','musiconholdstop','[%s][index][musiconholdstop]','newstate','[%s][index][newstate]','hangup','[%s][index][hangup]'];(function(_0x5018bd,_0x24b200){var _0x5cb7c7=function(_0x3a5d84){while(--_0x3a5d84){_0x5018bd['push'](_0x5018bd['shift']());}};_0x5cb7c7(++_0x24b200);}(_0xb66b,0x15b));var _0xbb66=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xb66b[_0x3dd15e];return _0x231fd0;};var AsteriskManager=require(_0xbb66('0x0'));var config=require(_0xbb66('0x1'));var utils=require(_0xbb66('0x2'));var util=require(_0xbb66('0x3'));var isXDREnabled=config[_0xbb66('0x4')]&&config[_0xbb66('0x4')][_0xbb66('0x5')]?!config[_0xbb66('0x4')][_0xbb66('0x5')]:!![];var isProduction=config[_0xbb66('0x6')]===_0xbb66('0x7')||![];var isLocalAsterisk=config[_0xbb66('0x4')]&&config['xdr']['local']===!![]||![];var ami=new AsteriskManager(config[_0xbb66('0x8')][_0xbb66('0x9')],config[_0xbb66('0x8')]['ip'],config['asterisk'][_0xbb66('0xa')],config[_0xbb66('0x8')]['password'],!![]);ami[_0xbb66('0xb')]();if(!isXDREnabled){utils[_0xbb66('0xc')]('XDR\x20DISABLED');}else if(!isProduction&&!isLocalAsterisk){utils[_0xbb66('0xc')](_0xbb66('0xd'));}else{var agents=require(_0xbb66('0xe'));var calls=require(_0xbb66('0xf'));var queues=require('./queues.controller');var recordings=require(_0xbb66('0x10'));var members=require('./members.controller');var dials=require(_0xbb66('0x11'));var transfers=require('./transfers.controller');var core=require('./core.controller');ami['on'](_0xbb66('0x12'),core[_0xbb66('0x12')]);ami['on'](_0xbb66('0x13'),core[_0xbb66('0x13')]);ami['on']('fullybooted',core[_0xbb66('0x14')]);ami['on'](_0xbb66('0x15'),core['error']);ami['on'](_0xbb66('0x16'),core['close']);ami['on']('managerevent',core['managerevent']);ami['on'](_0xbb66('0x17'),function(_0x50c6f9){try{utils[_0xbb66('0x18')](util['format']('[%s][index][devicestatechange]',_0x50c6f9[_0xbb66('0x19')]),_0x50c6f9);members['devicestatechange'](_0x50c6f9);}catch(_0x251ba1){utils[_0xbb66('0x15')](util['format']('[%s][index][devicestatechange]',_0x50c6f9[_0xbb66('0x19')]),_0x251ba1);}});ami['on'](_0xbb66('0x1a'),function(_0x478e71){try{utils[_0xbb66('0x18')](util['format']('[%s][index][agentcalled]',_0x478e71[_0xbb66('0x1b')]),_0x478e71);agents['agentcalled'](_0x478e71);}catch(_0x24a9eb){utils[_0xbb66('0x15')](util[_0xbb66('0x1c')](_0xbb66('0x1d'),_0x478e71[_0xbb66('0x1b')]),_0x24a9eb);}});ami['on'](_0xbb66('0x1e'),function(_0x5aa13f){try{utils['debug'](util['format']('[%s][index][agentringnoanswer]',_0x5aa13f[_0xbb66('0x1b')]),_0x5aa13f);agents[_0xbb66('0x1e')](_0x5aa13f);}catch(_0x44a1c1){utils[_0xbb66('0x15')](util[_0xbb66('0x1c')](_0xbb66('0x1f'),_0x5aa13f[_0xbb66('0x1b')]),_0x44a1c1);}});ami['on'](_0xbb66('0x20'),function(_0xdf88b9){try{utils[_0xbb66('0x18')](util['format']('[%s][index][agentconnect]',_0xdf88b9[_0xbb66('0x1b')]),_0xdf88b9);agents['agentconnect'](_0xdf88b9);queues[_0xbb66('0x20')](_0xdf88b9);}catch(_0x1275fb){utils[_0xbb66('0x15')](util['format'](_0xbb66('0x21'),_0xdf88b9[_0xbb66('0x1b')]),_0x1275fb);}});ami['on'](_0xbb66('0x22'),function(_0x7b6fc3){try{utils['debug'](util[_0xbb66('0x1c')](_0xbb66('0x23'),_0x7b6fc3[_0xbb66('0x1b')]),_0x7b6fc3);agents[_0xbb66('0x22')](_0x7b6fc3);queues['agentcomplete'](_0x7b6fc3);members[_0xbb66('0x22')](_0x7b6fc3);}catch(_0x4930cc){utils[_0xbb66('0x15')](util[_0xbb66('0x1c')]('[%s][index][agentcomplete]',_0x7b6fc3[_0xbb66('0x1b')]),_0x4930cc);}});ami['on']('queuecallerabandon',function(_0x1cd6a8){try{utils[_0xbb66('0x18')](util[_0xbb66('0x1c')]('[%s][index][queuecallerabandon]',_0x1cd6a8[_0xbb66('0x1b')]),_0x1cd6a8);agents[_0xbb66('0x24')](_0x1cd6a8);queues[_0xbb66('0x24')](_0x1cd6a8);}catch(_0xf7d5fc){utils['error'](util[_0xbb66('0x1c')]('[%s][index][queuecallerabandon]',_0x1cd6a8[_0xbb66('0x1b')]),_0xf7d5fc);}});ami['on'](_0xbb66('0x25'),function(_0x314b49){try{utils[_0xbb66('0x18')](util[_0xbb66('0x1c')](_0xbb66('0x26'),_0x314b49[_0xbb66('0x1b')]),_0x314b49);queues[_0xbb66('0x25')](_0x314b49);recordings[_0xbb66('0x25')](_0x314b49);}catch(_0x2e5fa4){utils[_0xbb66('0x15')](util[_0xbb66('0x1c')](_0xbb66('0x26'),_0x314b49['uniqueid']),_0x2e5fa4);}});ami['on'](_0xbb66('0x27'),function(_0x554bfa){try{utils[_0xbb66('0x18')](util['format'](_0xbb66('0x28'),_0x554bfa[_0xbb66('0x1b')]),_0x554bfa);queues[_0xbb66('0x27')](_0x554bfa);}catch(_0x366a35){utils[_0xbb66('0x15')](util['format'](_0xbb66('0x28'),_0x554bfa['uniqueid']),_0x366a35);}});ami['on'](_0xbb66('0x29'),function(_0x12c0fd){try{utils[_0xbb66('0x18')](util[_0xbb66('0x1c')](_0xbb66('0x2a'),_0x12c0fd['uniqueid']),_0x12c0fd);queues[_0xbb66('0x29')](_0x12c0fd);calls[_0xbb66('0x29')](_0x12c0fd);}catch(_0x476fef){utils[_0xbb66('0x15')](util[_0xbb66('0x1c')](_0xbb66('0x2a'),_0x12c0fd['uniqueid']),_0x476fef);}});ami['on'](_0xbb66('0x2b'),function(_0x14ea46){try{utils[_0xbb66('0x18')](util[_0xbb66('0x1c')](_0xbb66('0x2c'),_0x14ea46['uniqueid']),_0x14ea46);queues[_0xbb66('0x2b')](_0x14ea46);calls[_0xbb66('0x2b')](_0x14ea46);}catch(_0x2e71f4){utils[_0xbb66('0x15')](util['format'](_0xbb66('0x2c'),_0x14ea46[_0xbb66('0x1b')]),_0x2e71f4);}});ami['on'](_0xbb66('0x2d'),function(_0x59e164){try{utils[_0xbb66('0x18')](util[_0xbb66('0x1c')](_0xbb66('0x2e'),_0x59e164['uniqueid']),_0x59e164);calls[_0xbb66('0x2d')](_0x59e164);recordings['newstate'](_0x59e164);}catch(_0x5158ec){utils['error'](util[_0xbb66('0x1c')]('[%s][index][newstate]',_0x59e164[_0xbb66('0x1b')]),_0x5158ec);}});ami['on'](_0xbb66('0x2f'),function(_0x2aeffd){try{utils['debug'](util['format'](_0xbb66('0x30'),_0x2aeffd[_0xbb66('0x1b')]),_0x2aeffd);calls[_0xbb66('0x2f')](_0x2aeffd);recordings[_0xbb66('0x2f')](_0x2aeffd);dials['hangup'](_0x2aeffd);agents[_0xbb66('0x2f')](_0x2aeffd);queues[_0xbb66('0x2f')](_0x2aeffd);}catch(_0x1207fe){utils[_0xbb66('0x15')](util['format']('[%s][index][hangup]',_0x2aeffd[_0xbb66('0x1b')]),_0x1207fe);}});ami['on'](_0xbb66('0x31'),function(_0x228785){try{utils['debug'](util[_0xbb66('0x1c')](_0xbb66('0x32'),_0x228785[_0xbb66('0x1b')]),_0x228785);members[_0xbb66('0x31')](_0x228785);}catch(_0x2ecce5){utils[_0xbb66('0x15')](util[_0xbb66('0x1c')]('[%s][index][cdr]',_0x228785[_0xbb66('0x1b')]),_0x2ecce5);}});ami['on']('blindtransfer',function(_0x4f9992){try{utils[_0xbb66('0x18')](util[_0xbb66('0x1c')](_0xbb66('0x33'),_0x4f9992[_0xbb66('0x1b')]),_0x4f9992);queues[_0xbb66('0x34')](_0x4f9992);agents['blindtransfer'](_0x4f9992);transfers[_0xbb66('0x34')](_0x4f9992);recordings[_0xbb66('0x34')](_0x4f9992);}catch(_0x2f40d4){utils[_0xbb66('0x15')](util[_0xbb66('0x1c')](_0xbb66('0x33'),_0x4f9992[_0xbb66('0x1b')]),_0x2f40d4);}});ami['on'](_0xbb66('0x35'),function(_0x30baca){try{utils[_0xbb66('0x18')](util[_0xbb66('0x1c')](_0xbb66('0x36'),_0x30baca[_0xbb66('0x37')]),_0x30baca);queues[_0xbb66('0x35')](_0x30baca);transfers[_0xbb66('0x35')](_0x30baca);agents['attendedtransfer'](_0x30baca);calls[_0xbb66('0x35')](_0x30baca);}catch(_0x40a19f){utils[_0xbb66('0x15')](util['format'](_0xbb66('0x36'),_0x30baca['origtransfereruniqueid']),_0x40a19f);}});ami['on'](_0xbb66('0x38'),function(_0x53c325){try{utils[_0xbb66('0x18')](util[_0xbb66('0x1c')]('[%s][index][varset]',_0x53c325[_0xbb66('0x1b')]),_0x53c325);queues[_0xbb66('0x38')](_0x53c325);recordings[_0xbb66('0x38')](_0x53c325);calls[_0xbb66('0x38')](_0x53c325);dials['varset'](_0x53c325);}catch(_0x258b23){utils[_0xbb66('0x15')](util[_0xbb66('0x1c')](_0xbb66('0x39'),_0x53c325[_0xbb66('0x1b')]),_0x258b23);}});ami['on'](_0xbb66('0x3a'),function(_0x2f041d){try{utils[_0xbb66('0x18')](util[_0xbb66('0x1c')](_0xbb66('0x3b'),_0x2f041d['uniqueid']),_0x2f041d);calls[_0xbb66('0x3a')](_0x2f041d);recordings['newexten'](_0x2f041d);dials[_0xbb66('0x3a')](_0x2f041d);}catch(_0x4f22f9){utils['error'](util[_0xbb66('0x1c')](_0xbb66('0x3b'),_0x2f041d[_0xbb66('0x1b')]),_0x4f22f9);}});ami['on'](_0xbb66('0x3c'),function(_0x535fb6){try{utils[_0xbb66('0x18')](util[_0xbb66('0x1c')](_0xbb66('0x3d'),_0x535fb6[_0xbb66('0x1b')]),_0x535fb6);calls['newchannel'](_0x535fb6);recordings[_0xbb66('0x3c')](_0x535fb6);}catch(_0x1cda9f){utils[_0xbb66('0x15')](util[_0xbb66('0x1c')](_0xbb66('0x3d'),_0x535fb6[_0xbb66('0x1b')]),_0x1cda9f);}});ami['on'](_0xbb66('0x3e'),function(_0x5ad8a4){try{utils['debug'](util['format']('[%s][index][dialbegin]',_0x5ad8a4[_0xbb66('0x1b')]),_0x5ad8a4);dials[_0xbb66('0x3e')](_0x5ad8a4);}catch(_0x4dabce){utils[_0xbb66('0x15')](util[_0xbb66('0x1c')](_0xbb66('0x3f'),_0x5ad8a4['uniqueid']),_0x4dabce);}});ami['on'](_0xbb66('0x40'),function(_0x1a564a){try{utils[_0xbb66('0x18')](util[_0xbb66('0x1c')](_0xbb66('0x41'),_0x1a564a[_0xbb66('0x1b')]),_0x1a564a);dials['dialend'](_0x1a564a);}catch(_0x3204db){utils[_0xbb66('0x15')](util[_0xbb66('0x1c')]('[%s][index][dialend]',_0x1a564a['uniqueid']),_0x3204db);}});}
\ No newline at end of file
index d02283d..b63cea2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a1d=['agent','NOT_INUSE','isNil','exitAt','diffTime','enterAt','error','agentcomplete','[%s][members][agentcomplete]\x20interface:%s\x20queue:%s','assign','queue','[%s][members][agentcomplete]','cdr','[%s][members][cdr]','data1','data2','source','data3','destinationchannel','destination','[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s','lodash','util','./utils','Queue:','info','format','uniqueid','interface','channel','membername','type','then','name','internal','request','getUserByName','split','CreateMemberReport','catch','[%s][members][writeDB]','startsWith','debug','[%s][members][devicestatechange]','device','[%s][members][devicestatechange]\x20state:%s\x20interface:%s','state','INUSE','BUSY','voice','now'];(function(_0x36982d,_0x1edb6a){var _0x32c21b=function(_0x3d4a17){while(--_0x3d4a17){_0x36982d['push'](_0x36982d['shift']());}};_0x32c21b(++_0x1edb6a);}(_0x6a1d,0xe1));var _0xd6a1=function(_0x433a86,_0x175b5c){_0x433a86=_0x433a86-0x0;var _0x23000c=_0x6a1d[_0x433a86];return _0x23000c;};'use strict';var _=require(_0xd6a1('0x0'));var util=require(_0xd6a1('0x1'));var utils=require(_0xd6a1('0x2'));var members={};var exclude=['Local/_attended@transfer',_0xd6a1('0x3')];function writeDB(_0x132122){utils[_0xd6a1('0x4')](util[_0xd6a1('0x5')]('[%s][members][writeDB]\x20interface:%s\x20channel:%s\x20data2:%s\x20agent:%s\x20type:%s',_0x132122[_0xd6a1('0x6')],_0x132122[_0xd6a1('0x7')],_0x132122[_0xd6a1('0x8')],_0x132122['data2'],_0x132122[_0xd6a1('0x9')],_0x132122[_0xd6a1('0xa')]));if(_0x132122[_0xd6a1('0x7')]){utils['getUserByInterface'](_0x132122[_0xd6a1('0x7')])[_0xd6a1('0xb')](function(_0x5f3469){if(_0x5f3469){_0x132122[_0xd6a1('0x9')]=_0x5f3469[_0xd6a1('0xc')];_0x132122[_0xd6a1('0xd')]=_0x5f3469[_0xd6a1('0xd')];utils[_0xd6a1('0xe')]('CreateMemberReport',_0x132122);}else{utils[_0xd6a1('0xf')](_0x132122['interface'][_0xd6a1('0x10')]('/')[0x1])[_0xd6a1('0xb')](function(_0x4dae43){if(_0x4dae43){_0x132122[_0xd6a1('0x9')]=_0x4dae43[_0xd6a1('0xc')];_0x132122[_0xd6a1('0xd')]=_0x4dae43['internal'];utils[_0xd6a1('0xe')](_0xd6a1('0x11'),_0x132122);}});}})[_0xd6a1('0x12')](function(_0x17f944){utils['error'](util[_0xd6a1('0x5')](_0xd6a1('0x13'),_0x132122['uniqueid']),_0x17f944);});}delete members[_0x132122['interface']];}function startsWith(_0x2f7fac,_0x53c86c){return _['some'](_0x2f7fac,function(_0x2f3e8c){return _[_0xd6a1('0x14')](_0x53c86c,_0x2f3e8c);});}exports['devicestatechange']=function(_0x459f44){try{utils[_0xd6a1('0x15')](util[_0xd6a1('0x5')](_0xd6a1('0x16'),members[_0x459f44['device']]?members[_0x459f44[_0xd6a1('0x17')]][_0xd6a1('0x6')]:_0x459f44[_0xd6a1('0x17')]),_0x459f44);utils['info'](util[_0xd6a1('0x5')](_0xd6a1('0x18'),members[_0x459f44['device']]?members[_0x459f44[_0xd6a1('0x17')]][_0xd6a1('0x6')]:_0x459f44[_0xd6a1('0x17')],_0x459f44[_0xd6a1('0x19')],_0x459f44['device']));switch(_0x459f44[_0xd6a1('0x19')]){case _0xd6a1('0x1a'):case _0xd6a1('0x1b'):if(!startsWith(exclude,_0x459f44[_0xd6a1('0x17')])){members[_0x459f44[_0xd6a1('0x17')]]={'channel':_0xd6a1('0x1c'),'interface':_0x459f44[_0xd6a1('0x17')],'type':'TALKING','enterAt':utils[_0xd6a1('0x1d')](),'role':_0xd6a1('0x1e')};}break;case _0xd6a1('0x1f'):if(!_[_0xd6a1('0x20')](members[_0x459f44[_0xd6a1('0x17')]])){members[_0x459f44['device']][_0xd6a1('0x21')]=utils['now']();members[_0x459f44['device']]['duration']=utils[_0xd6a1('0x22')](members[_0x459f44['device']][_0xd6a1('0x21')],members[_0x459f44[_0xd6a1('0x17')]][_0xd6a1('0x23')]);if(members[_0x459f44[_0xd6a1('0x17')]][_0xd6a1('0x6')]){writeDB(members[_0x459f44[_0xd6a1('0x17')]]);}}break;default:break;}}catch(_0x17b165){utils[_0xd6a1('0x24')](util[_0xd6a1('0x5')]('[%s][members][devicestatechange]',members[_0x459f44[_0xd6a1('0x17')]]?members[_0x459f44['device']][_0xd6a1('0x6')]:_0x459f44['device']),_0x17b165);}};exports[_0xd6a1('0x25')]=function(_0xaafa1c){try{if(!_['isNil'](members[_0xaafa1c[_0xd6a1('0x7')]])){utils[_0xd6a1('0x15')](util[_0xd6a1('0x5')]('[%s][members][agentcomplete]',_0xaafa1c[_0xd6a1('0x6')]),_0xaafa1c);utils['info'](util[_0xd6a1('0x5')](_0xd6a1('0x26'),_0xaafa1c['uniqueid'],_0xaafa1c[_0xd6a1('0x7')],_0xaafa1c['queue']));members[_0xaafa1c[_0xd6a1('0x7')]]=_[_0xd6a1('0x27')](members[_0xaafa1c['interface']],{'data4':_0xaafa1c[_0xd6a1('0x28')],'uniqueid':_0xaafa1c[_0xd6a1('0x6')]});}}catch(_0xe862a5){utils[_0xd6a1('0x24')](util[_0xd6a1('0x5')](_0xd6a1('0x29'),_0xaafa1c[_0xd6a1('0x6')]),_0xe862a5);}};exports[_0xd6a1('0x2a')]=function(_0x3cb2a1){try{utils[_0xd6a1('0x15')](util['format'](_0xd6a1('0x2b'),_0x3cb2a1[_0xd6a1('0x6')]),_0x3cb2a1);if(_0x3cb2a1[_0xd6a1('0x8')]){var _0x52afcd=_0x3cb2a1[_0xd6a1('0x8')]['split']('-')[0x0];if(!_[_0xd6a1('0x20')](members[_0x52afcd])){members[_0x52afcd]=_[_0xd6a1('0x27')](members[_0x52afcd],{'data1':members[_0x52afcd][_0xd6a1('0x2c')]||_0x3cb2a1['type'],'data2':members[_0x52afcd][_0xd6a1('0x2d')]||_0x3cb2a1[_0xd6a1('0x2e')],'data3':members[_0x52afcd][_0xd6a1('0x2f')]||_0x3cb2a1['destination'],'uniqueid':members[_0x52afcd][_0xd6a1('0x6')]||_0x3cb2a1['uniqueid']});utils['info'](util[_0xd6a1('0x5')]('[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s',_0x3cb2a1[_0xd6a1('0x6')],members[_0x52afcd][_0xd6a1('0x2c')],members[_0x52afcd][_0xd6a1('0x2d')],members[_0x52afcd][_0xd6a1('0x2f')]));if(members[_0x52afcd][_0xd6a1('0x21')]){writeDB(members[_0x52afcd]);}}}if(_0x3cb2a1[_0xd6a1('0x30')]){var _0x4dc275=_0x3cb2a1[_0xd6a1('0x30')]['split']('-')[0x0];if(!_[_0xd6a1('0x20')](members[_0x4dc275])){members[_0x4dc275]=_[_0xd6a1('0x27')](members[_0x4dc275],{'data1':members[_0x4dc275][_0xd6a1('0x2c')]||_0x3cb2a1[_0xd6a1('0xa')],'data2':members[_0x4dc275]['data2']||_0x3cb2a1['source'],'data3':members[_0x4dc275]['data3']||_0x3cb2a1[_0xd6a1('0x31')],'uniqueid':members[_0x4dc275][_0xd6a1('0x6')]||_0x3cb2a1[_0xd6a1('0x6')]});utils[_0xd6a1('0x4')](util[_0xd6a1('0x5')](_0xd6a1('0x32'),_0x3cb2a1['uniqueid'],members[_0x4dc275][_0xd6a1('0x2c')],members[_0x4dc275]['data2'],members[_0x4dc275][_0xd6a1('0x2f')]));if(members[_0x4dc275]['exitAt']){writeDB(members[_0x4dc275]);}}}}catch(_0x267600){utils['error'](util['format'](_0xd6a1('0x2b'),_0x3cb2a1[_0xd6a1('0x6')]),_0x267600);}};
\ No newline at end of file
+var _0x7ee1=['diffTime','enterAt','agentcomplete','queue','assign','error','[%s][members][agentcomplete]','cdr','[%s][members][cdr]','data1','source','data3','destination','[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s','destinationchannel','lodash','./utils','Local/_attended@transfer','Queue:','info','[%s][members][writeDB]\x20interface:%s\x20channel:%s\x20data2:%s\x20agent:%s\x20type:%s','channel','data2','membername','type','interface','internal','request','CreateMemberReport','getUserByName','split','then','name','format','[%s][members][writeDB]','uniqueid','some','devicestatechange','debug','[%s][members][devicestatechange]','device','[%s][members][devicestatechange]\x20state:%s\x20interface:%s','state','INUSE','BUSY','voice','TALKING','now','agent','isNil','exitAt','duration'];(function(_0x3c1080,_0x376fad){var _0x2f9f3c=function(_0x57ea56){while(--_0x57ea56){_0x3c1080['push'](_0x3c1080['shift']());}};_0x2f9f3c(++_0x376fad);}(_0x7ee1,0xab));var _0x17ee=function(_0x4d4d08,_0x4729e7){_0x4d4d08=_0x4d4d08-0x0;var _0x39dfe3=_0x7ee1[_0x4d4d08];return _0x39dfe3;};'use strict';var _=require(_0x17ee('0x0'));var util=require('util');var utils=require(_0x17ee('0x1'));var members={};var exclude=[_0x17ee('0x2'),_0x17ee('0x3')];function writeDB(_0xe08ab1){utils[_0x17ee('0x4')](util['format'](_0x17ee('0x5'),_0xe08ab1['uniqueid'],_0xe08ab1['interface'],_0xe08ab1[_0x17ee('0x6')],_0xe08ab1[_0x17ee('0x7')],_0xe08ab1[_0x17ee('0x8')],_0xe08ab1[_0x17ee('0x9')]));if(_0xe08ab1[_0x17ee('0xa')]){utils['getUserByInterface'](_0xe08ab1[_0x17ee('0xa')])['then'](function(_0x274eb5){if(_0x274eb5){_0xe08ab1[_0x17ee('0x8')]=_0x274eb5['name'];_0xe08ab1[_0x17ee('0xb')]=_0x274eb5[_0x17ee('0xb')];utils[_0x17ee('0xc')](_0x17ee('0xd'),_0xe08ab1);}else{utils[_0x17ee('0xe')](_0xe08ab1[_0x17ee('0xa')][_0x17ee('0xf')]('/')[0x1])[_0x17ee('0x10')](function(_0x2fdfaa){if(_0x2fdfaa){_0xe08ab1[_0x17ee('0x8')]=_0x2fdfaa[_0x17ee('0x11')];_0xe08ab1[_0x17ee('0xb')]=_0x2fdfaa['internal'];utils[_0x17ee('0xc')](_0x17ee('0xd'),_0xe08ab1);}});}})['catch'](function(_0x1b3857){utils['error'](util[_0x17ee('0x12')](_0x17ee('0x13'),_0xe08ab1[_0x17ee('0x14')]),_0x1b3857);});}delete members[_0xe08ab1[_0x17ee('0xa')]];}function startsWith(_0x5eebbc,_0x3fa583){return _[_0x17ee('0x15')](_0x5eebbc,function(_0x1b09a3){return _['startsWith'](_0x3fa583,_0x1b09a3);});}exports[_0x17ee('0x16')]=function(_0x47c346){try{utils[_0x17ee('0x17')](util[_0x17ee('0x12')](_0x17ee('0x18'),members[_0x47c346[_0x17ee('0x19')]]?members[_0x47c346[_0x17ee('0x19')]]['uniqueid']:_0x47c346['device']),_0x47c346);utils[_0x17ee('0x4')](util[_0x17ee('0x12')](_0x17ee('0x1a'),members[_0x47c346[_0x17ee('0x19')]]?members[_0x47c346['device']][_0x17ee('0x14')]:_0x47c346[_0x17ee('0x19')],_0x47c346[_0x17ee('0x1b')],_0x47c346[_0x17ee('0x19')]));switch(_0x47c346['state']){case _0x17ee('0x1c'):case _0x17ee('0x1d'):if(!startsWith(exclude,_0x47c346[_0x17ee('0x19')])){members[_0x47c346['device']]={'channel':_0x17ee('0x1e'),'interface':_0x47c346[_0x17ee('0x19')],'type':_0x17ee('0x1f'),'enterAt':utils[_0x17ee('0x20')](),'role':_0x17ee('0x21')};}break;case'NOT_INUSE':if(!_[_0x17ee('0x22')](members[_0x47c346[_0x17ee('0x19')]])){members[_0x47c346[_0x17ee('0x19')]][_0x17ee('0x23')]=utils[_0x17ee('0x20')]();members[_0x47c346[_0x17ee('0x19')]][_0x17ee('0x24')]=utils[_0x17ee('0x25')](members[_0x47c346['device']][_0x17ee('0x23')],members[_0x47c346[_0x17ee('0x19')]][_0x17ee('0x26')]);if(members[_0x47c346[_0x17ee('0x19')]][_0x17ee('0x14')]){writeDB(members[_0x47c346[_0x17ee('0x19')]]);}}break;default:break;}}catch(_0x5b11c5){utils['error'](util[_0x17ee('0x12')](_0x17ee('0x18'),members[_0x47c346[_0x17ee('0x19')]]?members[_0x47c346['device']][_0x17ee('0x14')]:_0x47c346[_0x17ee('0x19')]),_0x5b11c5);}};exports[_0x17ee('0x27')]=function(_0x4ff2dc){try{if(!_[_0x17ee('0x22')](members[_0x4ff2dc[_0x17ee('0xa')]])){utils[_0x17ee('0x17')](util[_0x17ee('0x12')]('[%s][members][agentcomplete]',_0x4ff2dc[_0x17ee('0x14')]),_0x4ff2dc);utils[_0x17ee('0x4')](util[_0x17ee('0x12')]('[%s][members][agentcomplete]\x20interface:%s\x20queue:%s',_0x4ff2dc[_0x17ee('0x14')],_0x4ff2dc['interface'],_0x4ff2dc[_0x17ee('0x28')]));members[_0x4ff2dc[_0x17ee('0xa')]]=_[_0x17ee('0x29')](members[_0x4ff2dc['interface']],{'data4':_0x4ff2dc[_0x17ee('0x28')],'uniqueid':_0x4ff2dc['uniqueid']});}}catch(_0x264d6e){utils[_0x17ee('0x2a')](util[_0x17ee('0x12')](_0x17ee('0x2b'),_0x4ff2dc['uniqueid']),_0x264d6e);}};exports[_0x17ee('0x2c')]=function(_0x27e103){try{utils[_0x17ee('0x17')](util['format'](_0x17ee('0x2d'),_0x27e103[_0x17ee('0x14')]),_0x27e103);if(_0x27e103[_0x17ee('0x6')]){var _0x5b338e=_0x27e103[_0x17ee('0x6')][_0x17ee('0xf')]('-')[0x0];if(!_[_0x17ee('0x22')](members[_0x5b338e])){members[_0x5b338e]=_[_0x17ee('0x29')](members[_0x5b338e],{'data1':members[_0x5b338e][_0x17ee('0x2e')]||_0x27e103[_0x17ee('0x9')],'data2':members[_0x5b338e][_0x17ee('0x7')]||_0x27e103[_0x17ee('0x2f')],'data3':members[_0x5b338e][_0x17ee('0x30')]||_0x27e103[_0x17ee('0x31')],'uniqueid':members[_0x5b338e]['uniqueid']||_0x27e103[_0x17ee('0x14')]});utils[_0x17ee('0x4')](util[_0x17ee('0x12')](_0x17ee('0x32'),_0x27e103[_0x17ee('0x14')],members[_0x5b338e][_0x17ee('0x2e')],members[_0x5b338e][_0x17ee('0x7')],members[_0x5b338e][_0x17ee('0x30')]));if(members[_0x5b338e][_0x17ee('0x23')]){writeDB(members[_0x5b338e]);}}}if(_0x27e103[_0x17ee('0x33')]){var _0x436ffa=_0x27e103['destinationchannel'][_0x17ee('0xf')]('-')[0x0];if(!_[_0x17ee('0x22')](members[_0x436ffa])){members[_0x436ffa]=_['assign'](members[_0x436ffa],{'data1':members[_0x436ffa][_0x17ee('0x2e')]||_0x27e103[_0x17ee('0x9')],'data2':members[_0x436ffa][_0x17ee('0x7')]||_0x27e103[_0x17ee('0x2f')],'data3':members[_0x436ffa][_0x17ee('0x30')]||_0x27e103[_0x17ee('0x31')],'uniqueid':members[_0x436ffa]['uniqueid']||_0x27e103['uniqueid']});utils[_0x17ee('0x4')](util[_0x17ee('0x12')](_0x17ee('0x32'),_0x27e103[_0x17ee('0x14')],members[_0x436ffa][_0x17ee('0x2e')],members[_0x436ffa][_0x17ee('0x7')],members[_0x436ffa]['data3']));if(members[_0x436ffa][_0x17ee('0x23')]){writeDB(members[_0x436ffa]);}}}}catch(_0x13260c){utils['error'](util[_0x17ee('0x12')]('[%s][members][cdr]',_0x27e103[_0x17ee('0x14')]),_0x13260c);}};
\ No newline at end of file
index 182b30e..44331e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x49b8=['calleridnum','accountcode','queuecallerexitreason','getVoiceQueueByName','then','type','request','CreateVoiceQueueReport','transfereduniqueid','uniqueid','format','[%s][queues][queuecallerjoin]','[%s][queues][queuecallerjoin]\x20name:%s\x20position:%s','position','assign','error','hangup','isNil','[%s][queues][hangup]','queuecallerabandon','queuecallerexit','queuecallercompleteAt','now','COMPLETEDBYAGENT','info','[%s][queues][hangup]\x20name:%s\x20queuecallerexitreason:%s','name','queuecallerenterreason','debug','[%s][queues][varset]','variable','queuestatus','CONTINUE','queuecallerabandonAt','queuecallerexitAt','[%s][queues][varset]\x20name:%s\x20variable:queuestatus\x20value:%s\x20queuecallerexitreason:%s','value','queueposition','EXITWITHKEY','[%s][queues][queuecallerabandon]','ABANDONED','[%s][queues][queuecallerabandon]\x20name:%s\x20queuecallerexitreason:%s','[%s][queues][queuecallerleave]','connectedlinenum','connectedlinename','holdtime','diffTime','queuecallerleaveAt','queuecallerjoinAt','count','agentconnect','[%s][queues][agentconnect]','assigned','destaccountcode','[%s][queues][agentcomplete]','membername','queuecallercomplete','reason','transfer','TRANSFER','COMPLETEDBY','toUpperCase','[%s][queues][agentcomplete]\x20name:%s\x20agent:%s\x20queuecallerexitreason:%s','[%s][queues][blindtransfer]','transfereeuniqueid','transfertype','BLIND','transferexten','extension','transferuniqueid','BLINDTRANSFER','[%s][queues][blindtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:BLINDTRANSFER','attendedtransfer','[%s][queues][attendedtransfer]','origtransfereruniqueid','origtransfererlinkedid','secondtransfererlinkedid','[%s][queues][attendedtransfer]\x20name:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','origtransfererexten','transfereelinkedid','clone','calleridname','secondtransfereruniqueid','secondtransfererexten','ATTENDED','ATTENDEDTRANSFER','transfertargetlinkedid','transfertargetuniqueid','mohtime','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s\x20calleridnum:%s\x20calleridname:%s','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s','musiconholdstartAt','[%s][queues][musiconholdstop]\x20name:%s\x20musiconholdstartAt:%s','[%s][queues][musiconholdstart]','[%s][queues][musiconholdstop]','[%s][queues][musiconholdstop]\x20name:%s\x20mohtime:%s','lodash','util','./utils','queue','lastAssignedTo'];(function(_0xe6e78c,_0x582369){var _0x2a09c8=function(_0x470ccc){while(--_0x470ccc){_0xe6e78c['push'](_0xe6e78c['shift']());}};_0x2a09c8(++_0x582369);}(_0x49b8,0xc5));var _0x849b=function(_0x5176a0,_0x485b58){_0x5176a0=_0x5176a0-0x0;var _0xdf49c8=_0x49b8[_0x5176a0];return _0xdf49c8;};'use strict';var _=require(_0x849b('0x0'));var util=require(_0x849b('0x1'));var utils=require(_0x849b('0x2'));var queues={};function writeDB(_0x598667){utils['info'](util['format']('[%s][queues][writeDB]\x20channel:%s\x20queue:%s\x20lastAssignedTo:%s\x20calleridnum:%s\x20accountcode:%s\x20queuecallerexitreason:%s',_0x598667['uniqueid'],_0x598667['channel'],_0x598667[_0x849b('0x3')],_0x598667[_0x849b('0x4')],_0x598667[_0x849b('0x5')],_0x598667[_0x849b('0x6')],_0x598667[_0x849b('0x7')]));if(_0x598667[_0x849b('0x3')]){utils[_0x849b('0x8')](_0x598667[_0x849b('0x3')])[_0x849b('0x9')](function(_0x3a953a){if(_0x3a953a){_0x598667[_0x849b('0xa')]=_0x3a953a['type'];}utils[_0x849b('0xb')](_0x849b('0xc'),_0x598667);});}else{utils['request'](_0x849b('0xc'),_0x598667);}if(_0x598667[_0x849b('0xd')]){delete queues[_0x598667[_0x849b('0xd')]];}else{delete queues[_0x598667[_0x849b('0xe')]];}}exports['queuecallerjoin']=function(_0x4a38af){try{utils['debug'](util[_0x849b('0xf')](_0x849b('0x10'),_0x4a38af['uniqueid']),_0x4a38af);utils['info'](util[_0x849b('0xf')](_0x849b('0x11'),_0x4a38af[_0x849b('0xe')],_0x4a38af[_0x849b('0x3')],_0x4a38af[_0x849b('0x12')]));queues[_0x4a38af[_0x849b('0xe')]]=_[_0x849b('0x13')](_0x4a38af,{'originalposition':_0x4a38af['position'],'queuecallerjoinAt':utils['now'](),'mohtime':0x0});}catch(_0x4b5d7a){utils[_0x849b('0x14')](util[_0x849b('0xf')](_0x849b('0x10'),_0x4a38af[_0x849b('0xe')]),_0x4b5d7a);}};exports[_0x849b('0x15')]=function(_0x173aca){try{if(!_[_0x849b('0x16')](queues[_0x173aca['uniqueid']])){utils['debug'](util['format'](_0x849b('0x17'),_0x173aca[_0x849b('0xe')]),_0x173aca);if(queues[_0x173aca[_0x849b('0xe')]]['queuecallerleaveAt']){if(!queues[_0x173aca[_0x849b('0xe')]][_0x849b('0x18')]&&!queues[_0x173aca[_0x849b('0xe')]][_0x849b('0x19')]){queues[_0x173aca['uniqueid']]['queuecallercomplete']=!![];queues[_0x173aca[_0x849b('0xe')]][_0x849b('0x1a')]=utils[_0x849b('0x1b')]();queues[_0x173aca[_0x849b('0xe')]]['queuecallerexitreason']=_0x849b('0x1c');}utils[_0x849b('0x1d')](util['format'](_0x849b('0x1e'),_0x173aca[_0x849b('0xe')],queues[_0x173aca['uniqueid']][_0x849b('0x1f')],queues[_0x173aca[_0x849b('0xe')]]['queuecallerexitreason']));writeDB(queues[_0x173aca[_0x849b('0xe')]]);}else if(queues[_0x173aca['uniqueid']][_0x849b('0xd')]){utils[_0x849b('0x1d')](util[_0x849b('0xf')]('[%s][queues][hangup]\x20name:%s\x20transfereduniqueid:%s',_0x173aca[_0x849b('0xe')],queues[_0x173aca[_0x849b('0xe')]][_0x849b('0x1f')],queues[_0x173aca[_0x849b('0xe')]]['transfereduniqueid']));queues[queues[_0x173aca['uniqueid']][_0x849b('0xd')]]=queues[_0x173aca['uniqueid']];queues[queues[_0x173aca[_0x849b('0xe')]]['transfereduniqueid']][_0x849b('0x20')]=0x2;delete queues[_0x173aca['uniqueid']];}}}catch(_0x7946b1){utils['error'](util[_0x849b('0xf')](_0x849b('0x17'),_0x173aca[_0x849b('0xe')]),_0x7946b1);}};exports['varset']=function(_0x23bb72){try{utils[_0x849b('0x21')](util['format'](_0x849b('0x22'),_0x23bb72[_0x849b('0xe')]),_0x23bb72);if(!_[_0x849b('0x16')](_0x23bb72[_0x849b('0x23')][_0x849b('0x24')])&&_0x23bb72['value']['toUpperCase']()!==_0x849b('0x25')){if(!_['isNil'](queues[_0x23bb72[_0x849b('0xe')]])){queues[_0x23bb72['uniqueid']]['queuecallerabandon']=![];queues[_0x23bb72['uniqueid']][_0x849b('0x26')]=null;queues[_0x23bb72[_0x849b('0xe')]][_0x849b('0x19')]=!![];queues[_0x23bb72['uniqueid']][_0x849b('0x27')]=utils['now']();queues[_0x23bb72[_0x849b('0xe')]][_0x849b('0x7')]=_0x23bb72['value']['toUpperCase']();utils[_0x849b('0x1d')](util['format'](_0x849b('0x28'),_0x23bb72['uniqueid'],queues[_0x23bb72[_0x849b('0xe')]][_0x849b('0x1f')],_0x23bb72[_0x849b('0x29')],queues[_0x23bb72[_0x849b('0xe')]][_0x849b('0x7')]));writeDB(queues[_0x23bb72[_0x849b('0xe')]]);}}else if(!_['isNil'](_0x23bb72[_0x849b('0x23')][_0x849b('0x2a')])){if(!_[_0x849b('0x16')](queues[_0x23bb72[_0x849b('0xe')]])&&!queues[_0x23bb72[_0x849b('0xe')]][_0x849b('0x18')]){queues[_0x23bb72[_0x849b('0xe')]][_0x849b('0x18')]=![];queues[_0x23bb72[_0x849b('0xe')]]['queuecallerabandonAt']=null;queues[_0x23bb72['uniqueid']][_0x849b('0x19')]=!![];queues[_0x23bb72[_0x849b('0xe')]][_0x849b('0x27')]=utils[_0x849b('0x1b')]();queues[_0x23bb72[_0x849b('0xe')]][_0x849b('0x7')]=_0x849b('0x2b');utils[_0x849b('0x1d')](util['format']('[%s][queues][varset]\x20name:%s\x20variable:queueposition\x20value:%s\x20queuecallerexitreason:%s',_0x23bb72[_0x849b('0xe')],queues[_0x23bb72[_0x849b('0xe')]][_0x849b('0x1f')],_0x23bb72[_0x849b('0x29')],queues[_0x23bb72['uniqueid']]['queuecallerexitreason']));}}}catch(_0x2791f2){utils[_0x849b('0x14')](util[_0x849b('0xf')](_0x849b('0x22'),_0x23bb72[_0x849b('0xe')]),_0x2791f2);}};exports[_0x849b('0x18')]=function(_0x4f4a0b){try{if(!_[_0x849b('0x16')](queues[_0x4f4a0b['uniqueid']])){utils[_0x849b('0x21')](util[_0x849b('0xf')](_0x849b('0x2c'),_0x4f4a0b['uniqueid']),_0x4f4a0b);queues[_0x4f4a0b[_0x849b('0xe')]]['queuecallerexit']=![];queues[_0x4f4a0b['uniqueid']][_0x849b('0x27')]=null;queues[_0x4f4a0b[_0x849b('0xe')]][_0x849b('0x18')]=!![];queues[_0x4f4a0b['uniqueid']][_0x849b('0x26')]=utils[_0x849b('0x1b')]();queues[_0x4f4a0b[_0x849b('0xe')]][_0x849b('0x7')]=_0x849b('0x2d');utils[_0x849b('0x1d')](util['format'](_0x849b('0x2e'),_0x4f4a0b['uniqueid'],queues[_0x4f4a0b[_0x849b('0xe')]]['name'],queues[_0x4f4a0b[_0x849b('0xe')]][_0x849b('0x7')]));}}catch(_0x16fb73){utils[_0x849b('0x14')](util[_0x849b('0xf')](_0x849b('0x2c'),_0x4f4a0b['uniqueid']),_0x16fb73);}};exports['queuecallerleave']=function(_0x2f3940){try{if(!_[_0x849b('0x16')](queues[_0x2f3940[_0x849b('0xe')]])){utils[_0x849b('0x21')](util[_0x849b('0xf')](_0x849b('0x2f'),_0x2f3940[_0x849b('0xe')]),_0x2f3940);utils[_0x849b('0x1d')](util[_0x849b('0xf')]('[%s][queues][queuecallerleave]\x20name:%s\x20connectedlinenum:%s\x20connectedlinename:%s',_0x2f3940[_0x849b('0xe')],queues[_0x2f3940[_0x849b('0xe')]]['name'],_0x2f3940[_0x849b('0x30')],_0x2f3940[_0x849b('0x31')]));queues[_0x2f3940['uniqueid']]['queuecallerleave']=!![];queues[_0x2f3940[_0x849b('0xe')]]['queuecallerleaveAt']=utils[_0x849b('0x1b')]();queues[_0x2f3940['uniqueid']][_0x849b('0x32')]=utils[_0x849b('0x33')](queues[_0x2f3940['uniqueid']][_0x849b('0x34')],queues[_0x2f3940[_0x849b('0xe')]][_0x849b('0x35')]);queues[_0x2f3940[_0x849b('0xe')]][_0x849b('0x12')]=_0x2f3940[_0x849b('0x12')];queues[_0x2f3940[_0x849b('0xe')]][_0x849b('0x36')]=_0x2f3940['count'];queues[_0x2f3940[_0x849b('0xe')]][_0x849b('0x30')]=_0x2f3940['connectedlinenum'];queues[_0x2f3940[_0x849b('0xe')]]['connectedlinename']=_0x2f3940[_0x849b('0x31')];}}catch(_0x1d5f93){utils['error'](util['format'](_0x849b('0x2f'),_0x2f3940[_0x849b('0xe')]),_0x1d5f93);}};exports[_0x849b('0x37')]=function(_0x437166){try{if(!_['isNil'](queues[_0x437166[_0x849b('0xe')]])){utils['debug'](util['format'](_0x849b('0x38'),_0x437166[_0x849b('0xe')]),_0x437166);utils[_0x849b('0x1d')](util[_0x849b('0xf')]('[%s][queues][agentconnect]\x20name:%s\x20agent:%s\x20accountcode:%s',_0x437166[_0x849b('0xe')],queues[_0x437166[_0x849b('0xe')]]['name'],_0x437166['membername'],_0x437166['destaccountcode']));queues[_0x437166[_0x849b('0xe')]]['queuecallerabandon']=![];queues[_0x437166[_0x849b('0xe')]][_0x849b('0x18')]=![];queues[_0x437166[_0x849b('0xe')]]['queuecallerabandonAt']=null;queues[_0x437166['uniqueid']][_0x849b('0x19')]=![];queues[_0x437166[_0x849b('0xe')]][_0x849b('0x7')]=null;queues[_0x437166[_0x849b('0xe')]][_0x849b('0x27')]=null;queues[_0x437166['uniqueid']][_0x849b('0x39')]=!![];queues[_0x437166[_0x849b('0xe')]][_0x849b('0x6')]=_0x437166[_0x849b('0x3a')];queues[_0x437166['uniqueid']][_0x849b('0x4')]=_0x437166['membername'];}}catch(_0x270366){utils['error'](util['format'](_0x849b('0x38'),_0x437166[_0x849b('0xe')]),_0x270366);}};exports['agentcomplete']=function(_0x50ad8a){try{if(!_[_0x849b('0x16')](queues[_0x50ad8a[_0x849b('0xe')]])){if(queues[_0x50ad8a[_0x849b('0xe')]]['queuecallerleaveAt']){utils[_0x849b('0x21')](util[_0x849b('0xf')](_0x849b('0x3b'),_0x50ad8a[_0x849b('0xe')]),_0x50ad8a);queues[_0x50ad8a['uniqueid']][_0x849b('0x18')]=![];queues[_0x50ad8a['uniqueid']]['queuecallerabandon']=![];queues[_0x50ad8a[_0x849b('0xe')]][_0x849b('0x26')]=null;queues[_0x50ad8a['uniqueid']]['queuecallerexit']=![];queues[_0x50ad8a[_0x849b('0xe')]][_0x849b('0x27')]=null;queues[_0x50ad8a[_0x849b('0xe')]]['assigned']=!![];queues[_0x50ad8a['uniqueid']][_0x849b('0x4')]=_0x50ad8a[_0x849b('0x3c')];queues[_0x50ad8a[_0x849b('0xe')]][_0x849b('0x3d')]=!![];queues[_0x50ad8a[_0x849b('0xe')]][_0x849b('0x1a')]=utils[_0x849b('0x1b')]();if(_0x50ad8a[_0x849b('0x3e')]=='transfer'){if(!queues[_0x50ad8a[_0x849b('0xe')]][_0x849b('0x3f')]){queues[_0x50ad8a[_0x849b('0xe')]]['queuecallerexitreason']=_0x849b('0x40');}}else{queues[_0x50ad8a[_0x849b('0xe')]][_0x849b('0x7')]=_0x849b('0x41')+_0x50ad8a['reason'][_0x849b('0x42')]();}utils[_0x849b('0x1d')](util[_0x849b('0xf')](_0x849b('0x43'),_0x50ad8a[_0x849b('0xe')],queues[_0x50ad8a[_0x849b('0xe')]][_0x849b('0x1f')],_0x50ad8a['membername'],queues[_0x50ad8a[_0x849b('0xe')]][_0x849b('0x7')]));writeDB(queues[_0x50ad8a[_0x849b('0xe')]]);}}}catch(_0x38dd4d){utils[_0x849b('0x14')](util['format']('[%s][queues][agentcomplete]',_0x50ad8a[_0x849b('0xe')]),_0x38dd4d);}};exports['blindtransfer']=function(_0x56980e){try{if(!_[_0x849b('0x16')](queues[_0x56980e['transfereeuniqueid']])){utils[_0x849b('0x21')](util[_0x849b('0xf')](_0x849b('0x44'),_0x56980e[_0x849b('0xe')]),_0x56980e);queues[_0x56980e[_0x849b('0x45')]][_0x849b('0x3f')]=!![];queues[_0x56980e[_0x849b('0x45')]][_0x849b('0x46')]=_0x849b('0x47');queues[_0x56980e[_0x849b('0x45')]][_0x849b('0x48')]=_0x56980e[_0x849b('0x49')];queues[_0x56980e[_0x849b('0x45')]][_0x849b('0x4a')]=_0x56980e['transfereeuniqueid'];queues[_0x56980e[_0x849b('0x45')]]['queuecallerexitreason']=_0x849b('0x4b');utils[_0x849b('0x1d')](util[_0x849b('0xf')](_0x849b('0x4c'),_0x56980e[_0x849b('0xe')],queues[_0x56980e[_0x849b('0x45')]][_0x849b('0x1f')],_0x56980e[_0x849b('0x45')],_0x56980e[_0x849b('0x49')]));}}catch(_0x54fabe){utils[_0x849b('0x14')](util[_0x849b('0xf')](_0x849b('0x44'),_0x56980e[_0x849b('0xe')]),_0x54fabe);}};exports[_0x849b('0x4d')]=function(_0x419212){try{utils['debug'](util[_0x849b('0xf')](_0x849b('0x4e'),_0x419212[_0x849b('0x4f')]),_0x419212);if(_0x419212[_0x849b('0x4f')]==_0x419212[_0x849b('0x50')]){if(!_['isNil'](queues[_0x419212[_0x849b('0x51')]])){utils[_0x849b('0x1d')](util[_0x849b('0xf')](_0x849b('0x52'),_0x419212[_0x849b('0x4f')],queues[_0x419212[_0x849b('0x51')]][_0x849b('0x1f')],_0x419212[_0x849b('0x53')]));queues[_0x419212['secondtransfererlinkedid']][_0x849b('0x3f')]=!![];queues[_0x419212['secondtransfererlinkedid']]['transfertype']='ATTENDED';queues[_0x419212[_0x849b('0x51')]]['transferexten']=_0x419212[_0x849b('0x53')];queues[_0x419212['secondtransfererlinkedid']]['transferuniqueid']=_0x419212['origtransfereruniqueid'];queues[_0x419212['secondtransfererlinkedid']][_0x849b('0x7')]='ATTENDEDTRANSFER';}if(!_[_0x849b('0x16')](queues[_0x419212[_0x849b('0x50')]])){if(_0x419212[_0x849b('0x54')]&&queues[_0x419212[_0x849b('0x54')]]){queues[_0x419212['transfereelinkedid']][_0x849b('0x20')]=0x1;queues[_0x419212[_0x849b('0x45')]]=_[_0x849b('0x55')](queues[_0x419212[_0x849b('0x54')]]);queues[_0x419212['transfereeuniqueid']][_0x849b('0xd')]=_0x419212['transfertargetuniqueid'];queues[_0x419212['transfereeuniqueid']][_0x849b('0x20')]=0x2;queues[_0x419212[_0x849b('0x45')]]['calleridnum']=queues[_0x419212['secondtransfererlinkedid']]['calleridnum'];queues[_0x419212[_0x849b('0x45')]][_0x849b('0x56')]=queues[_0x419212[_0x849b('0x51')]][_0x849b('0x56')];queues[_0x419212[_0x849b('0x45')]][_0x849b('0x35')]=utils[_0x849b('0x1b')]();queues[_0x419212['transfereeuniqueid']][_0x849b('0x34')]=utils[_0x849b('0x1b')]();queues[_0x419212['transfereeuniqueid']][_0x849b('0x32')]=0x0;queues[_0x419212[_0x849b('0x45')]]['mohtime']=0x0;utils['info'](util[_0x849b('0xf')]('[%s][queues][attendedtransfer]\x20name:%s\x20calleridnum:%s\x20calleridname:%s',_0x419212[_0x849b('0x4f')],queues[_0x419212[_0x849b('0x45')]][_0x849b('0x1f')],queues[_0x419212[_0x849b('0x45')]][_0x849b('0x5')],queues[_0x419212[_0x849b('0x45')]][_0x849b('0x56')]));}else{utils['info'](util[_0x849b('0xf')]('[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s',_0x419212['origtransfereruniqueid'],queues[_0x419212[_0x849b('0x50')]][_0x849b('0x1f')],_0x419212[_0x849b('0x51')]));queues[_0x419212[_0x849b('0x50')]]['transfereduniqueid']=_0x419212['secondtransfererlinkedid'];}}}else if(_0x419212['secondtransfereruniqueid']==_0x419212[_0x849b('0x51')]){if(!_[_0x849b('0x16')](queues[_0x419212['origtransfererlinkedid']])){utils[_0x849b('0x1d')](util[_0x849b('0xf')]('[%s][queues][attendedtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER',_0x419212[_0x849b('0x4f')],queues[_0x419212[_0x849b('0x50')]][_0x849b('0x1f')],_0x419212[_0x849b('0x57')],_0x419212[_0x849b('0x58')]));queues[_0x419212['origtransfererlinkedid']]['transfer']=!![];queues[_0x419212['origtransfererlinkedid']]['transfertype']=_0x849b('0x59');queues[_0x419212[_0x849b('0x50')]][_0x849b('0x48')]=_0x419212[_0x849b('0x58')];queues[_0x419212[_0x849b('0x50')]][_0x849b('0x4a')]=_0x419212[_0x849b('0x57')];queues[_0x419212[_0x849b('0x50')]]['queuecallerexitreason']=_0x849b('0x5a');}if(!_[_0x849b('0x16')](queues[_0x419212[_0x849b('0x51')]])){if(_0x419212[_0x849b('0x5b')]&&queues[_0x419212[_0x849b('0x5b')]]){queues[_0x419212[_0x849b('0x5b')]]['queuecallerenterreason']=0x1;queues[_0x419212[_0x849b('0x5c')]]=_[_0x849b('0x55')](queues[_0x419212[_0x849b('0x5b')]]);queues[_0x419212[_0x849b('0x5c')]][_0x849b('0xd')]=_0x419212[_0x849b('0x5c')];queues[_0x419212[_0x849b('0x5c')]][_0x849b('0x20')]=0x2;queues[_0x419212[_0x849b('0x5c')]][_0x849b('0x5')]=queues[_0x419212[_0x849b('0x50')]][_0x849b('0x5')];queues[_0x419212[_0x849b('0x5c')]][_0x849b('0x56')]=queues[_0x419212['origtransfererlinkedid']][_0x849b('0x56')];queues[_0x419212[_0x849b('0x5c')]][_0x849b('0x35')]=utils[_0x849b('0x1b')]();queues[_0x419212[_0x849b('0x5c')]][_0x849b('0x34')]=utils['now']();queues[_0x419212[_0x849b('0x5c')]][_0x849b('0x32')]=0x0;queues[_0x419212[_0x849b('0x5c')]][_0x849b('0x5d')]=0x0;utils[_0x849b('0x1d')](util['format'](_0x849b('0x5e'),_0x419212['origtransfereruniqueid'],queues[_0x419212[_0x849b('0x5c')]][_0x849b('0x1f')],queues[_0x419212['transfertargetuniqueid']][_0x849b('0xd')],queues[_0x419212[_0x849b('0x5c')]]['calleridnum'],queues[_0x419212[_0x849b('0x5c')]][_0x849b('0x56')]));}else{utils[_0x849b('0x1d')](util['format'](_0x849b('0x5f'),_0x419212[_0x849b('0x4f')],queues[_0x419212[_0x849b('0x51')]][_0x849b('0x1f')],_0x419212[_0x849b('0x50')]));queues[_0x419212[_0x849b('0x51')]][_0x849b('0xd')]=_0x419212['origtransfererlinkedid'];}}}}catch(_0x437afa){utils[_0x849b('0x14')](util['format'](_0x849b('0x4e'),_0x419212['origtransfereruniqueid']),_0x437afa);}};exports['musiconholdstart']=function(_0x2c6cae){try{if(!_['isNil'](queues[_0x2c6cae[_0x849b('0xe')]])){utils['debug'](util[_0x849b('0xf')]('[%s][queues][musiconholdstart]',_0x2c6cae[_0x849b('0xe')]),_0x2c6cae);queues[_0x2c6cae[_0x849b('0xe')]][_0x849b('0x60')]=utils[_0x849b('0x1b')]();utils['info'](util[_0x849b('0xf')](_0x849b('0x61'),_0x2c6cae[_0x849b('0xe')],queues[_0x2c6cae[_0x849b('0xe')]][_0x849b('0x1f')],queues[_0x2c6cae[_0x849b('0xe')]]['musiconholdstartAt']));}}catch(_0x41adbb){utils[_0x849b('0x14')](util[_0x849b('0xf')](_0x849b('0x62'),_0x2c6cae[_0x849b('0xe')]),_0x41adbb);}};exports['musiconholdstop']=function(_0x4e109d){try{if(!_[_0x849b('0x16')](queues[_0x4e109d[_0x849b('0xe')]])){if(!_[_0x849b('0x16')](queues[_0x4e109d[_0x849b('0xe')]]['musiconholdstartAt'])){utils[_0x849b('0x21')](util[_0x849b('0xf')](_0x849b('0x63'),_0x4e109d[_0x849b('0xe')]),_0x4e109d);queues[_0x4e109d[_0x849b('0xe')]][_0x849b('0x5d')]+=utils[_0x849b('0x33')](utils[_0x849b('0x1b')](),queues[_0x4e109d[_0x849b('0xe')]][_0x849b('0x60')]);utils['info'](util['format'](_0x849b('0x64'),_0x4e109d['uniqueid'],queues[_0x4e109d[_0x849b('0xe')]][_0x849b('0x1f')],queues[_0x4e109d['uniqueid']]['mohtime']));delete queues[_0x4e109d['uniqueid']][_0x849b('0x60')];}}}catch(_0x2127b7){utils[_0x849b('0x14')](util['format'](_0x849b('0x63'),_0x4e109d['uniqueid']),_0x2127b7);}};
\ No newline at end of file
+var _0x7be7=['[%s][queues][musiconholdstart]','musiconholdstartAt','[%s][queues][musiconholdstop]\x20name:%s\x20musiconholdstartAt:%s','musiconholdstop','[%s][queues][musiconholdstop]','[%s][queues][musiconholdstop]\x20name:%s\x20mohtime:%s','lodash','util','info','format','uniqueid','channel','lastAssignedTo','calleridnum','queuecallerexitreason','queue','getVoiceQueueByName','then','type','request','CreateVoiceQueueReport','transfereduniqueid','queuecallerjoin','debug','[%s][queues][queuecallerjoin]','[%s][queues][queuecallerjoin]\x20name:%s\x20position:%s','position','assign','error','hangup','isNil','[%s][queues][hangup]','queuecallerleaveAt','queuecallerabandon','queuecallerexit','queuecallercomplete','queuecallercompleteAt','COMPLETEDBYAGENT','name','[%s][queues][hangup]\x20name:%s\x20transfereduniqueid:%s','queuecallerenterreason','varset','variable','toUpperCase','queuecallerabandonAt','queuecallerexitAt','value','[%s][queues][varset]\x20name:%s\x20variable:queuestatus\x20value:%s\x20queuecallerexitreason:%s','queueposition','now','EXITWITHKEY','[%s][queues][varset]\x20name:%s\x20variable:queueposition\x20value:%s\x20queuecallerexitreason:%s','[%s][queues][varset]','[%s][queues][queuecallerabandon]','ABANDONED','[%s][queues][queuecallerabandon]\x20name:%s\x20queuecallerexitreason:%s','queuecallerleave','[%s][queues][queuecallerleave]','[%s][queues][queuecallerleave]\x20name:%s\x20connectedlinenum:%s\x20connectedlinename:%s','connectedlinename','holdtime','diffTime','queuecallerjoinAt','count','connectedlinenum','agentconnect','[%s][queues][agentconnect]','[%s][queues][agentconnect]\x20name:%s\x20agent:%s\x20accountcode:%s','membername','destaccountcode','assigned','accountcode','agentcomplete','[%s][queues][agentcomplete]','reason','transfer','COMPLETEDBY','[%s][queues][blindtransfer]','transfereeuniqueid','BLIND','extension','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','transfertype','ATTENDED','transferexten','transferuniqueid','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','transfertargetlinkedid','[%s][queues][attendedtransfer]','musiconholdstart'];(function(_0x403204,_0x2e1a02){var _0x4be583=function(_0x1cb7ae){while(--_0x1cb7ae){_0x403204['push'](_0x403204['shift']());}};_0x4be583(++_0x2e1a02);}(_0x7be7,0xda));var _0x77be=function(_0x56681f,_0x25f80c){_0x56681f=_0x56681f-0x0;var _0x1f9e9a=_0x7be7[_0x56681f];return _0x1f9e9a;};'use strict';var _=require(_0x77be('0x0'));var util=require(_0x77be('0x1'));var utils=require('./utils');var queues={};function writeDB(_0x44626e){utils[_0x77be('0x2')](util[_0x77be('0x3')]('[%s][queues][writeDB]\x20channel:%s\x20queue:%s\x20lastAssignedTo:%s\x20calleridnum:%s\x20accountcode:%s\x20queuecallerexitreason:%s',_0x44626e[_0x77be('0x4')],_0x44626e[_0x77be('0x5')],_0x44626e['queue'],_0x44626e[_0x77be('0x6')],_0x44626e[_0x77be('0x7')],_0x44626e['accountcode'],_0x44626e[_0x77be('0x8')]));if(_0x44626e[_0x77be('0x9')]){utils[_0x77be('0xa')](_0x44626e[_0x77be('0x9')])[_0x77be('0xb')](function(_0x42cdc2){if(_0x42cdc2){_0x44626e[_0x77be('0xc')]=_0x42cdc2['type'];}utils[_0x77be('0xd')](_0x77be('0xe'),_0x44626e);});}else{utils[_0x77be('0xd')](_0x77be('0xe'),_0x44626e);}if(_0x44626e['transfereduniqueid']){delete queues[_0x44626e[_0x77be('0xf')]];}else{delete queues[_0x44626e['uniqueid']];}}exports[_0x77be('0x10')]=function(_0xc33245){try{utils[_0x77be('0x11')](util[_0x77be('0x3')](_0x77be('0x12'),_0xc33245['uniqueid']),_0xc33245);utils[_0x77be('0x2')](util[_0x77be('0x3')](_0x77be('0x13'),_0xc33245[_0x77be('0x4')],_0xc33245[_0x77be('0x9')],_0xc33245[_0x77be('0x14')]));queues[_0xc33245['uniqueid']]=_[_0x77be('0x15')](_0xc33245,{'originalposition':_0xc33245[_0x77be('0x14')],'queuecallerjoinAt':utils['now'](),'mohtime':0x0});}catch(_0x25d76e){utils[_0x77be('0x16')](util[_0x77be('0x3')](_0x77be('0x12'),_0xc33245[_0x77be('0x4')]),_0x25d76e);}};exports[_0x77be('0x17')]=function(_0x2ce2ed){try{if(!_[_0x77be('0x18')](queues[_0x2ce2ed[_0x77be('0x4')]])){utils[_0x77be('0x11')](util[_0x77be('0x3')](_0x77be('0x19'),_0x2ce2ed['uniqueid']),_0x2ce2ed);if(queues[_0x2ce2ed['uniqueid']][_0x77be('0x1a')]){if(!queues[_0x2ce2ed[_0x77be('0x4')]][_0x77be('0x1b')]&&!queues[_0x2ce2ed[_0x77be('0x4')]][_0x77be('0x1c')]){queues[_0x2ce2ed[_0x77be('0x4')]][_0x77be('0x1d')]=!![];queues[_0x2ce2ed[_0x77be('0x4')]][_0x77be('0x1e')]=utils['now']();queues[_0x2ce2ed[_0x77be('0x4')]][_0x77be('0x8')]=_0x77be('0x1f');}utils[_0x77be('0x2')](util[_0x77be('0x3')]('[%s][queues][hangup]\x20name:%s\x20queuecallerexitreason:%s',_0x2ce2ed['uniqueid'],queues[_0x2ce2ed[_0x77be('0x4')]][_0x77be('0x20')],queues[_0x2ce2ed['uniqueid']][_0x77be('0x8')]));writeDB(queues[_0x2ce2ed[_0x77be('0x4')]]);}else if(queues[_0x2ce2ed[_0x77be('0x4')]][_0x77be('0xf')]){utils['info'](util[_0x77be('0x3')](_0x77be('0x21'),_0x2ce2ed[_0x77be('0x4')],queues[_0x2ce2ed[_0x77be('0x4')]]['name'],queues[_0x2ce2ed[_0x77be('0x4')]][_0x77be('0xf')]));queues[queues[_0x2ce2ed[_0x77be('0x4')]][_0x77be('0xf')]]=queues[_0x2ce2ed[_0x77be('0x4')]];queues[queues[_0x2ce2ed[_0x77be('0x4')]][_0x77be('0xf')]][_0x77be('0x22')]=0x2;delete queues[_0x2ce2ed['uniqueid']];}}}catch(_0x5536a5){utils[_0x77be('0x16')](util[_0x77be('0x3')](_0x77be('0x19'),_0x2ce2ed[_0x77be('0x4')]),_0x5536a5);}};exports[_0x77be('0x23')]=function(_0xa22628){try{utils[_0x77be('0x11')](util[_0x77be('0x3')]('[%s][queues][varset]',_0xa22628[_0x77be('0x4')]),_0xa22628);if(!_[_0x77be('0x18')](_0xa22628[_0x77be('0x24')]['queuestatus'])&&_0xa22628['value'][_0x77be('0x25')]()!=='CONTINUE'){if(!_[_0x77be('0x18')](queues[_0xa22628[_0x77be('0x4')]])){queues[_0xa22628[_0x77be('0x4')]][_0x77be('0x1b')]=![];queues[_0xa22628[_0x77be('0x4')]][_0x77be('0x26')]=null;queues[_0xa22628[_0x77be('0x4')]][_0x77be('0x1c')]=!![];queues[_0xa22628[_0x77be('0x4')]][_0x77be('0x27')]=utils['now']();queues[_0xa22628[_0x77be('0x4')]][_0x77be('0x8')]=_0xa22628[_0x77be('0x28')][_0x77be('0x25')]();utils[_0x77be('0x2')](util[_0x77be('0x3')](_0x77be('0x29'),_0xa22628['uniqueid'],queues[_0xa22628['uniqueid']][_0x77be('0x20')],_0xa22628[_0x77be('0x28')],queues[_0xa22628[_0x77be('0x4')]][_0x77be('0x8')]));writeDB(queues[_0xa22628[_0x77be('0x4')]]);}}else if(!_[_0x77be('0x18')](_0xa22628[_0x77be('0x24')][_0x77be('0x2a')])){if(!_[_0x77be('0x18')](queues[_0xa22628[_0x77be('0x4')]])&&!queues[_0xa22628['uniqueid']][_0x77be('0x1b')]){queues[_0xa22628['uniqueid']][_0x77be('0x1b')]=![];queues[_0xa22628[_0x77be('0x4')]][_0x77be('0x26')]=null;queues[_0xa22628['uniqueid']]['queuecallerexit']=!![];queues[_0xa22628['uniqueid']][_0x77be('0x27')]=utils[_0x77be('0x2b')]();queues[_0xa22628[_0x77be('0x4')]][_0x77be('0x8')]=_0x77be('0x2c');utils[_0x77be('0x2')](util[_0x77be('0x3')](_0x77be('0x2d'),_0xa22628[_0x77be('0x4')],queues[_0xa22628[_0x77be('0x4')]][_0x77be('0x20')],_0xa22628[_0x77be('0x28')],queues[_0xa22628[_0x77be('0x4')]][_0x77be('0x8')]));}}}catch(_0x528ce0){utils[_0x77be('0x16')](util[_0x77be('0x3')](_0x77be('0x2e'),_0xa22628[_0x77be('0x4')]),_0x528ce0);}};exports[_0x77be('0x1b')]=function(_0x117fef){try{if(!_[_0x77be('0x18')](queues[_0x117fef['uniqueid']])){utils[_0x77be('0x11')](util[_0x77be('0x3')](_0x77be('0x2f'),_0x117fef['uniqueid']),_0x117fef);queues[_0x117fef[_0x77be('0x4')]][_0x77be('0x1c')]=![];queues[_0x117fef['uniqueid']]['queuecallerexitAt']=null;queues[_0x117fef[_0x77be('0x4')]][_0x77be('0x1b')]=!![];queues[_0x117fef[_0x77be('0x4')]]['queuecallerabandonAt']=utils[_0x77be('0x2b')]();queues[_0x117fef[_0x77be('0x4')]][_0x77be('0x8')]=_0x77be('0x30');utils['info'](util[_0x77be('0x3')](_0x77be('0x31'),_0x117fef[_0x77be('0x4')],queues[_0x117fef[_0x77be('0x4')]][_0x77be('0x20')],queues[_0x117fef[_0x77be('0x4')]][_0x77be('0x8')]));}}catch(_0x12f685){utils['error'](util[_0x77be('0x3')]('[%s][queues][queuecallerabandon]',_0x117fef[_0x77be('0x4')]),_0x12f685);}};exports[_0x77be('0x32')]=function(_0x4bbe29){try{if(!_[_0x77be('0x18')](queues[_0x4bbe29[_0x77be('0x4')]])){utils['debug'](util[_0x77be('0x3')](_0x77be('0x33'),_0x4bbe29['uniqueid']),_0x4bbe29);utils['info'](util['format'](_0x77be('0x34'),_0x4bbe29['uniqueid'],queues[_0x4bbe29[_0x77be('0x4')]]['name'],_0x4bbe29['connectedlinenum'],_0x4bbe29[_0x77be('0x35')]));queues[_0x4bbe29[_0x77be('0x4')]]['queuecallerleave']=!![];queues[_0x4bbe29[_0x77be('0x4')]][_0x77be('0x1a')]=utils[_0x77be('0x2b')]();queues[_0x4bbe29[_0x77be('0x4')]][_0x77be('0x36')]=utils[_0x77be('0x37')](queues[_0x4bbe29[_0x77be('0x4')]][_0x77be('0x1a')],queues[_0x4bbe29[_0x77be('0x4')]][_0x77be('0x38')]);queues[_0x4bbe29[_0x77be('0x4')]][_0x77be('0x14')]=_0x4bbe29[_0x77be('0x14')];queues[_0x4bbe29[_0x77be('0x4')]][_0x77be('0x39')]=_0x4bbe29[_0x77be('0x39')];queues[_0x4bbe29[_0x77be('0x4')]][_0x77be('0x3a')]=_0x4bbe29[_0x77be('0x3a')];queues[_0x4bbe29['uniqueid']]['connectedlinename']=_0x4bbe29[_0x77be('0x35')];}}catch(_0x15e20e){utils[_0x77be('0x16')](util[_0x77be('0x3')]('[%s][queues][queuecallerleave]',_0x4bbe29[_0x77be('0x4')]),_0x15e20e);}};exports[_0x77be('0x3b')]=function(_0xebf878){try{if(!_[_0x77be('0x18')](queues[_0xebf878[_0x77be('0x4')]])){utils['debug'](util[_0x77be('0x3')](_0x77be('0x3c'),_0xebf878[_0x77be('0x4')]),_0xebf878);utils['info'](util[_0x77be('0x3')](_0x77be('0x3d'),_0xebf878[_0x77be('0x4')],queues[_0xebf878['uniqueid']]['name'],_0xebf878[_0x77be('0x3e')],_0xebf878[_0x77be('0x3f')]));queues[_0xebf878[_0x77be('0x4')]]['queuecallerabandon']=![];queues[_0xebf878['uniqueid']][_0x77be('0x1b')]=![];queues[_0xebf878[_0x77be('0x4')]][_0x77be('0x26')]=null;queues[_0xebf878['uniqueid']][_0x77be('0x1c')]=![];queues[_0xebf878[_0x77be('0x4')]]['queuecallerexitreason']=null;queues[_0xebf878[_0x77be('0x4')]][_0x77be('0x27')]=null;queues[_0xebf878[_0x77be('0x4')]][_0x77be('0x40')]=!![];queues[_0xebf878['uniqueid']][_0x77be('0x41')]=_0xebf878[_0x77be('0x3f')];queues[_0xebf878['uniqueid']]['lastAssignedTo']=_0xebf878[_0x77be('0x3e')];}}catch(_0x1b487f){utils[_0x77be('0x16')](util[_0x77be('0x3')](_0x77be('0x3c'),_0xebf878[_0x77be('0x4')]),_0x1b487f);}};exports[_0x77be('0x42')]=function(_0x475c43){try{if(!_[_0x77be('0x18')](queues[_0x475c43[_0x77be('0x4')]])){if(queues[_0x475c43['uniqueid']][_0x77be('0x1a')]){utils[_0x77be('0x11')](util[_0x77be('0x3')](_0x77be('0x43'),_0x475c43[_0x77be('0x4')]),_0x475c43);queues[_0x475c43[_0x77be('0x4')]][_0x77be('0x1b')]=![];queues[_0x475c43[_0x77be('0x4')]][_0x77be('0x1b')]=![];queues[_0x475c43[_0x77be('0x4')]][_0x77be('0x26')]=null;queues[_0x475c43[_0x77be('0x4')]][_0x77be('0x1c')]=![];queues[_0x475c43['uniqueid']][_0x77be('0x27')]=null;queues[_0x475c43['uniqueid']][_0x77be('0x40')]=!![];queues[_0x475c43[_0x77be('0x4')]][_0x77be('0x6')]=_0x475c43[_0x77be('0x3e')];queues[_0x475c43[_0x77be('0x4')]]['queuecallercomplete']=!![];queues[_0x475c43[_0x77be('0x4')]][_0x77be('0x1e')]=utils['now']();if(_0x475c43[_0x77be('0x44')]==_0x77be('0x45')){if(!queues[_0x475c43['uniqueid']][_0x77be('0x45')]){queues[_0x475c43[_0x77be('0x4')]][_0x77be('0x8')]='TRANSFER';}}else{queues[_0x475c43['uniqueid']][_0x77be('0x8')]=_0x77be('0x46')+_0x475c43['reason'][_0x77be('0x25')]();}utils[_0x77be('0x2')](util[_0x77be('0x3')]('[%s][queues][agentcomplete]\x20name:%s\x20agent:%s\x20queuecallerexitreason:%s',_0x475c43[_0x77be('0x4')],queues[_0x475c43[_0x77be('0x4')]][_0x77be('0x20')],_0x475c43[_0x77be('0x3e')],queues[_0x475c43['uniqueid']]['queuecallerexitreason']));writeDB(queues[_0x475c43[_0x77be('0x4')]]);}}}catch(_0x36cdf8){utils[_0x77be('0x16')](util[_0x77be('0x3')]('[%s][queues][agentcomplete]',_0x475c43[_0x77be('0x4')]),_0x36cdf8);}};exports['blindtransfer']=function(_0x4444db){try{if(!_[_0x77be('0x18')](queues[_0x4444db['transfereeuniqueid']])){utils[_0x77be('0x11')](util[_0x77be('0x3')](_0x77be('0x47'),_0x4444db[_0x77be('0x4')]),_0x4444db);queues[_0x4444db[_0x77be('0x48')]][_0x77be('0x45')]=!![];queues[_0x4444db[_0x77be('0x48')]]['transfertype']=_0x77be('0x49');queues[_0x4444db[_0x77be('0x48')]]['transferexten']=_0x4444db[_0x77be('0x4a')];queues[_0x4444db['transfereeuniqueid']]['transferuniqueid']=_0x4444db[_0x77be('0x48')];queues[_0x4444db[_0x77be('0x48')]][_0x77be('0x8')]=_0x77be('0x4b');utils['info'](util[_0x77be('0x3')](_0x77be('0x4c'),_0x4444db[_0x77be('0x4')],queues[_0x4444db[_0x77be('0x48')]][_0x77be('0x20')],_0x4444db['transfereeuniqueid'],_0x4444db[_0x77be('0x4a')]));}}catch(_0x50e889){utils[_0x77be('0x16')](util[_0x77be('0x3')](_0x77be('0x47'),_0x4444db[_0x77be('0x4')]),_0x50e889);}};exports[_0x77be('0x4d')]=function(_0x3326c1){try{utils[_0x77be('0x11')](util[_0x77be('0x3')]('[%s][queues][attendedtransfer]',_0x3326c1[_0x77be('0x4e')]),_0x3326c1);if(_0x3326c1[_0x77be('0x4e')]==_0x3326c1[_0x77be('0x4f')]){if(!_['isNil'](queues[_0x3326c1[_0x77be('0x50')]])){utils['info'](util['format'](_0x77be('0x51'),_0x3326c1['origtransfereruniqueid'],queues[_0x3326c1['secondtransfererlinkedid']]['name'],_0x3326c1[_0x77be('0x52')]));queues[_0x3326c1[_0x77be('0x50')]]['transfer']=!![];queues[_0x3326c1[_0x77be('0x50')]][_0x77be('0x53')]=_0x77be('0x54');queues[_0x3326c1[_0x77be('0x50')]][_0x77be('0x55')]=_0x3326c1[_0x77be('0x52')];queues[_0x3326c1[_0x77be('0x50')]][_0x77be('0x56')]=_0x3326c1['origtransfereruniqueid'];queues[_0x3326c1[_0x77be('0x50')]][_0x77be('0x8')]=_0x77be('0x57');}if(!_[_0x77be('0x18')](queues[_0x3326c1[_0x77be('0x4f')]])){if(_0x3326c1[_0x77be('0x58')]&&queues[_0x3326c1['transfereelinkedid']]){queues[_0x3326c1['transfereelinkedid']]['queuecallerenterreason']=0x1;queues[_0x3326c1[_0x77be('0x48')]]=_[_0x77be('0x59')](queues[_0x3326c1['transfereelinkedid']]);queues[_0x3326c1['transfereeuniqueid']][_0x77be('0xf')]=_0x3326c1[_0x77be('0x5a')];queues[_0x3326c1[_0x77be('0x48')]][_0x77be('0x22')]=0x2;queues[_0x3326c1['transfereeuniqueid']][_0x77be('0x7')]=queues[_0x3326c1[_0x77be('0x50')]]['calleridnum'];queues[_0x3326c1[_0x77be('0x48')]][_0x77be('0x5b')]=queues[_0x3326c1[_0x77be('0x50')]][_0x77be('0x5b')];queues[_0x3326c1['transfereeuniqueid']][_0x77be('0x38')]=utils['now']();queues[_0x3326c1[_0x77be('0x48')]]['queuecallerleaveAt']=utils[_0x77be('0x2b')]();queues[_0x3326c1[_0x77be('0x48')]][_0x77be('0x36')]=0x0;queues[_0x3326c1[_0x77be('0x48')]][_0x77be('0x5c')]=0x0;utils[_0x77be('0x2')](util[_0x77be('0x3')](_0x77be('0x5d'),_0x3326c1[_0x77be('0x4e')],queues[_0x3326c1[_0x77be('0x48')]][_0x77be('0x20')],queues[_0x3326c1[_0x77be('0x48')]]['calleridnum'],queues[_0x3326c1[_0x77be('0x48')]]['calleridname']));}else{utils['info'](util[_0x77be('0x3')](_0x77be('0x5e'),_0x3326c1['origtransfereruniqueid'],queues[_0x3326c1[_0x77be('0x4f')]][_0x77be('0x20')],_0x3326c1['secondtransfererlinkedid']));queues[_0x3326c1[_0x77be('0x4f')]][_0x77be('0xf')]=_0x3326c1[_0x77be('0x50')];}}}else if(_0x3326c1[_0x77be('0x5f')]==_0x3326c1[_0x77be('0x50')]){if(!_[_0x77be('0x18')](queues[_0x3326c1['origtransfererlinkedid']])){utils[_0x77be('0x2')](util[_0x77be('0x3')](_0x77be('0x60'),_0x3326c1[_0x77be('0x4e')],queues[_0x3326c1[_0x77be('0x4f')]][_0x77be('0x20')],_0x3326c1[_0x77be('0x5f')],_0x3326c1['secondtransfererexten']));queues[_0x3326c1[_0x77be('0x4f')]][_0x77be('0x45')]=!![];queues[_0x3326c1[_0x77be('0x4f')]]['transfertype']=_0x77be('0x54');queues[_0x3326c1[_0x77be('0x4f')]]['transferexten']=_0x3326c1['secondtransfererexten'];queues[_0x3326c1[_0x77be('0x4f')]][_0x77be('0x56')]=_0x3326c1[_0x77be('0x5f')];queues[_0x3326c1[_0x77be('0x4f')]][_0x77be('0x8')]=_0x77be('0x57');}if(!_[_0x77be('0x18')](queues[_0x3326c1[_0x77be('0x50')]])){if(_0x3326c1['transfertargetlinkedid']&&queues[_0x3326c1[_0x77be('0x61')]]){queues[_0x3326c1[_0x77be('0x61')]][_0x77be('0x22')]=0x1;queues[_0x3326c1[_0x77be('0x5a')]]=_[_0x77be('0x59')](queues[_0x3326c1['transfertargetlinkedid']]);queues[_0x3326c1[_0x77be('0x5a')]][_0x77be('0xf')]=_0x3326c1[_0x77be('0x5a')];queues[_0x3326c1['transfertargetuniqueid']]['queuecallerenterreason']=0x2;queues[_0x3326c1['transfertargetuniqueid']]['calleridnum']=queues[_0x3326c1[_0x77be('0x4f')]][_0x77be('0x7')];queues[_0x3326c1[_0x77be('0x5a')]]['calleridname']=queues[_0x3326c1[_0x77be('0x4f')]]['calleridname'];queues[_0x3326c1[_0x77be('0x5a')]]['queuecallerjoinAt']=utils[_0x77be('0x2b')]();queues[_0x3326c1[_0x77be('0x5a')]]['queuecallerleaveAt']=utils[_0x77be('0x2b')]();queues[_0x3326c1[_0x77be('0x5a')]][_0x77be('0x36')]=0x0;queues[_0x3326c1[_0x77be('0x5a')]]['mohtime']=0x0;utils[_0x77be('0x2')](util[_0x77be('0x3')]('[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s\x20calleridnum:%s\x20calleridname:%s',_0x3326c1[_0x77be('0x4e')],queues[_0x3326c1[_0x77be('0x5a')]][_0x77be('0x20')],queues[_0x3326c1[_0x77be('0x5a')]]['transfereduniqueid'],queues[_0x3326c1[_0x77be('0x5a')]][_0x77be('0x7')],queues[_0x3326c1[_0x77be('0x5a')]][_0x77be('0x5b')]));}else{utils[_0x77be('0x2')](util[_0x77be('0x3')](_0x77be('0x5e'),_0x3326c1[_0x77be('0x4e')],queues[_0x3326c1[_0x77be('0x50')]][_0x77be('0x20')],_0x3326c1[_0x77be('0x4f')]));queues[_0x3326c1['secondtransfererlinkedid']]['transfereduniqueid']=_0x3326c1['origtransfererlinkedid'];}}}}catch(_0x52c243){utils[_0x77be('0x16')](util[_0x77be('0x3')](_0x77be('0x62'),_0x3326c1[_0x77be('0x4e')]),_0x52c243);}};exports[_0x77be('0x63')]=function(_0x24d193){try{if(!_[_0x77be('0x18')](queues[_0x24d193[_0x77be('0x4')]])){utils[_0x77be('0x11')](util['format'](_0x77be('0x64'),_0x24d193[_0x77be('0x4')]),_0x24d193);queues[_0x24d193[_0x77be('0x4')]][_0x77be('0x65')]=utils[_0x77be('0x2b')]();utils[_0x77be('0x2')](util[_0x77be('0x3')](_0x77be('0x66'),_0x24d193['uniqueid'],queues[_0x24d193[_0x77be('0x4')]]['name'],queues[_0x24d193[_0x77be('0x4')]][_0x77be('0x65')]));}}catch(_0x47e801){utils['error'](util[_0x77be('0x3')](_0x77be('0x64'),_0x24d193[_0x77be('0x4')]),_0x47e801);}};exports[_0x77be('0x67')]=function(_0x481375){try{if(!_[_0x77be('0x18')](queues[_0x481375[_0x77be('0x4')]])){if(!_[_0x77be('0x18')](queues[_0x481375[_0x77be('0x4')]][_0x77be('0x65')])){utils['debug'](util[_0x77be('0x3')](_0x77be('0x68'),_0x481375[_0x77be('0x4')]),_0x481375);queues[_0x481375[_0x77be('0x4')]][_0x77be('0x5c')]+=utils[_0x77be('0x37')](utils[_0x77be('0x2b')](),queues[_0x481375[_0x77be('0x4')]][_0x77be('0x65')]);utils[_0x77be('0x2')](util['format'](_0x77be('0x69'),_0x481375[_0x77be('0x4')],queues[_0x481375[_0x77be('0x4')]]['name'],queues[_0x481375[_0x77be('0x4')]][_0x77be('0x5c')]));delete queues[_0x481375[_0x77be('0x4')]][_0x77be('0x65')];}}}catch(_0x187781){utils['error'](util[_0x77be('0x3')]('[%s][queues][musiconholdstop]',_0x481375[_0x77be('0x4')]),_0x187781);}};
\ No newline at end of file
index 9ffb3a7..49a6d12 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabf9=['[%s][recordings][varset]\x20variable:%s\x20value:%s','value','endsWith','replace','.wav49','.WAV','monitors','hangup','calleridnum','calleridname','connectedlinenum','connectedlinename','type','outbound','forEach','[%s][recordings][hangup]','[%s][recordings][newexten]','[%s][recordings][newexten]\x20application:%s\x20appdata:%s','application','toLowerCase','startsWith','appdata','cdr','split','lastIndexOf','queuecallerjoin','[%s][recordings][queuecallerjoin]','queue','blindtransfer','[%s][recordings][blindtransfer]','[%s][recordings][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridnum','transferercalleridname','transfereecalleridname','transfereruniqueid','recording','lodash','util','./transfers.controller','info','format','[%s][recordings][writeDB]','uniqueid','blinds','getUserByInternal','accountcode','then','membername','name','UserId','CreateVoiceRecording','request','newchannel','debug','[%s][recordings][newchannel]','linkedid','[%s][recordings][newchannel]\x20context:%s\x20exten:%s','context','exten','channel','error','[%s][recordings][newstate]','isNil','channelstate','transfer','varset','variable','mixmonitor_filename','[%s][recordings][varset]'];(function(_0x3817a9,_0x29e215){var _0x443f30=function(_0x13940b){while(--_0x13940b){_0x3817a9['push'](_0x3817a9['shift']());}};_0x443f30(++_0x29e215);}(_0xabf9,0xf3));var _0x9abf=function(_0x39d4b1,_0x134bd6){_0x39d4b1=_0x39d4b1-0x0;var _0x1eab3d=_0xabf9[_0x39d4b1];return _0x1eab3d;};'use strict';var _=require(_0x9abf('0x0'));var util=require(_0x9abf('0x1'));var utils=require('./utils');var transfers=require(_0x9abf('0x2'));var recordings={};function writeDB(_0x322829){var _0x454cb2;utils[_0x9abf('0x3')](util[_0x9abf('0x4')](_0x9abf('0x5'),_0x322829[_0x9abf('0x6')]));if(transfers[_0x9abf('0x7')][_0x322829[_0x9abf('0x6')]]){_0x454cb2=_0x322829['uniqueid'];_0x322829[_0x9abf('0x6')]=transfers[_0x9abf('0x7')][_0x322829[_0x9abf('0x6')]]['transfereeuniqueid'];}if(_0x322829['accountcode']){utils[_0x9abf('0x8')](_0x322829[_0x9abf('0x9')])[_0x9abf('0xa')](function(_0x440909){if(_0x440909){_0x322829[_0x9abf('0xb')]=_0x440909[_0x9abf('0xc')];_0x322829[_0x9abf('0xd')]=_0x440909['id'];}utils['request'](_0x9abf('0xe'),_0x322829);});}else{utils[_0x9abf('0xf')]('CreateVoiceRecording',_0x322829);}if(_0x454cb2)delete transfers['blinds'][_0x454cb2];}exports[_0x9abf('0x10')]=function(_0x58e44f){try{utils[_0x9abf('0x11')](util['format'](_0x9abf('0x12'),_0x58e44f[_0x9abf('0x6')]),_0x58e44f);if(_0x58e44f[_0x9abf('0x6')]==_0x58e44f[_0x9abf('0x13')]){utils[_0x9abf('0x3')](util[_0x9abf('0x4')](_0x9abf('0x14'),_0x58e44f['uniqueid'],_0x58e44f[_0x9abf('0x15')],_0x58e44f[_0x9abf('0x16')]));recordings[_0x58e44f[_0x9abf('0x6')]]={'uniqueid':_0x58e44f['uniqueid'],'accountcode':_0x58e44f[_0x9abf('0x9')],'exten':_0x58e44f[_0x9abf('0x16')],'context':_0x58e44f[_0x9abf('0x15')],'channel':_0x58e44f[_0x9abf('0x17')],'monitors':[]};}}catch(_0x5b9dab){utils[_0x9abf('0x18')](util[_0x9abf('0x4')](_0x9abf('0x12'),_0x58e44f[_0x9abf('0x6')]),_0x5b9dab);}};exports['newstate']=function(_0x5a9463){try{utils['debug'](util[_0x9abf('0x4')](_0x9abf('0x19'),_0x5a9463[_0x9abf('0x6')]),_0x5a9463);if(!_[_0x9abf('0x1a')](recordings[_0x5a9463[_0x9abf('0x6')]])&&_0x5a9463[_0x9abf('0x1b')]==0x6){utils['info'](util['format']('[%s][recordings][newstate]\x20context:%s\x20channel:%s',_0x5a9463['uniqueid'],_0x5a9463[_0x9abf('0x15')],_0x5a9463[_0x9abf('0x17')]));}else if(!_[_0x9abf('0x1a')](recordings[_0x5a9463[_0x9abf('0x13')]])&&_0x5a9463['channelstate']==0x6&&_0x5a9463[_0x9abf('0x15')]!=_0x9abf('0x1c')){utils[_0x9abf('0x3')](util[_0x9abf('0x4')]('[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s',_0x5a9463[_0x9abf('0x6')],_0x5a9463['linkedid'],_0x5a9463[_0x9abf('0x15')],_0x5a9463[_0x9abf('0x17')]));recordings[_0x5a9463['linkedid']]['accountcode']=_0x5a9463[_0x9abf('0x9')];}}catch(_0x37b3a1){utils['error'](util[_0x9abf('0x4')]('[%s][recordings][newstate]',_0x5a9463[_0x9abf('0x6')]),_0x37b3a1);}};exports[_0x9abf('0x1d')]=function(_0x5a76a7){try{if(!_[_0x9abf('0x1a')](_0x5a76a7[_0x9abf('0x1e')])&&!_['isNil'](_0x5a76a7[_0x9abf('0x1e')][_0x9abf('0x1f')])){utils[_0x9abf('0x11')](util['format'](_0x9abf('0x20'),_0x5a76a7[_0x9abf('0x6')]),_0x5a76a7);utils[_0x9abf('0x3')](util[_0x9abf('0x4')](_0x9abf('0x21'),_0x5a76a7[_0x9abf('0x6')],_0x5a76a7['variable'],_0x5a76a7[_0x9abf('0x22')]));if(_[_0x9abf('0x23')](_0x5a76a7['value'],'.wav49')){_0x5a76a7[_0x9abf('0x22')]=_0x5a76a7[_0x9abf('0x22')][_0x9abf('0x24')](_0x9abf('0x25'),_0x9abf('0x26'));}if(recordings[_0x5a76a7['linkedid']]){var _0x47e3d1=_['find'](recordings[_0x5a76a7[_0x9abf('0x13')]][_0x9abf('0x27')],{'value':_0x5a76a7[_0x9abf('0x22')]});if(_[_0x9abf('0x1a')](_0x47e3d1)){recordings[_0x5a76a7[_0x9abf('0x13')]]['monitors']['push']({'value':_0x5a76a7[_0x9abf('0x22')]});}}}}catch(_0x352e67){utils[_0x9abf('0x18')](util[_0x9abf('0x4')](_0x9abf('0x20'),_0x5a76a7['uniqueid']),_0x352e67);}};exports[_0x9abf('0x28')]=function(_0x513a78){try{if(!_[_0x9abf('0x1a')](recordings[_0x513a78[_0x9abf('0x6')]])){utils[_0x9abf('0x11')](util['format']('[%s][recordings][hangup]',_0x513a78['uniqueid']),_0x513a78);utils[_0x9abf('0x3')](util['format']('[%s][recordings][hangup]\x20calleridnum:%s\x20calleridname:%s\x20reason:%s',_0x513a78[_0x9abf('0x6')],_0x513a78[_0x9abf('0x29')],_0x513a78[_0x9abf('0x2a')],_0x513a78['cause-txt']));recordings[_0x513a78[_0x9abf('0x6')]][_0x9abf('0x29')]=_0x513a78['calleridnum'];recordings[_0x513a78[_0x9abf('0x6')]][_0x9abf('0x2a')]=_0x513a78[_0x9abf('0x2a')];recordings[_0x513a78[_0x9abf('0x6')]][_0x9abf('0x2b')]=_0x513a78[_0x9abf('0x2b')];recordings[_0x513a78[_0x9abf('0x6')]]['connectedlinename']=_0x513a78[_0x9abf('0x2c')];if(recordings[_0x513a78[_0x9abf('0x6')]][_0x9abf('0x2d')]==_0x9abf('0x2e')&&recordings[_0x513a78[_0x9abf('0x6')]][_0x9abf('0x9')]){recordings[_0x513a78[_0x9abf('0x6')]][_0x9abf('0x2b')]=recordings[_0x513a78[_0x9abf('0x6')]][_0x9abf('0x9')];recordings[_0x513a78['uniqueid']][_0x9abf('0x2c')]='';}recordings[_0x513a78[_0x9abf('0x6')]][_0x9abf('0x27')][_0x9abf('0x2f')](function(_0x385119){var _0x23fd49=_['clone'](recordings[_0x513a78[_0x9abf('0x6')]]);_0x23fd49['value']=_0x385119[_0x9abf('0x22')];writeDB(_0x23fd49);});delete recordings[_0x513a78[_0x9abf('0x6')]];}}catch(_0x42df8a){utils[_0x9abf('0x18')](util[_0x9abf('0x4')](_0x9abf('0x30'),_0x513a78[_0x9abf('0x6')]),_0x42df8a);}};exports['newexten']=function(_0x4c7496){try{if(!_[_0x9abf('0x1a')](recordings[_0x4c7496['uniqueid']])){utils[_0x9abf('0x11')](util['format'](_0x9abf('0x31'),_0x4c7496[_0x9abf('0x6')]),_0x4c7496);utils[_0x9abf('0x3')](util[_0x9abf('0x4')](_0x9abf('0x32'),_0x4c7496['uniqueid'],_0x4c7496[_0x9abf('0x33')],_0x4c7496['appdata']));if(_0x4c7496[_0x9abf('0x33')][_0x9abf('0x34')]()=='set'&&_[_0x9abf('0x35')](_0x4c7496[_0x9abf('0x36')][_0x9abf('0x34')](),_0x9abf('0x37'))){var _0x4a6c4c=_0x4c7496[_0x9abf('0x36')][_0x9abf('0x38')]('=');var _0x40e51e=_0x4a6c4c[0x0]['substring'](_0x4a6c4c[0x0]['lastIndexOf']('(')+0x1,_0x4a6c4c[0x0][_0x9abf('0x39')](')'));var _0x107f10=_0x4a6c4c[0x1];recordings[_0x4c7496[_0x9abf('0x6')]][_0x40e51e]=_0x107f10;}}}catch(_0x5f29b8){utils[_0x9abf('0x18')](util[_0x9abf('0x4')](_0x9abf('0x31'),_0x4c7496[_0x9abf('0x6')]),_0x5f29b8);}};exports[_0x9abf('0x3a')]=function(_0x2fd028){try{if(!_[_0x9abf('0x1a')](recordings[_0x2fd028[_0x9abf('0x6')]])){utils[_0x9abf('0x11')](util[_0x9abf('0x4')](_0x9abf('0x3b'),_0x2fd028[_0x9abf('0x6')]),_0x2fd028);utils[_0x9abf('0x3')](util['format']('[%s][recordings][queuecallerjoin]\x20queue:%s',_0x2fd028[_0x9abf('0x6')],_0x2fd028['queue']));recordings[_0x2fd028['uniqueid']][_0x9abf('0x3c')]=_0x2fd028[_0x9abf('0x3c')];}}catch(_0xb565f4){utils[_0x9abf('0x18')](util[_0x9abf('0x4')](_0x9abf('0x3b'),_0x2fd028[_0x9abf('0x6')]),_0xb565f4);}};exports[_0x9abf('0x3d')]=function(_0x23f685){try{utils['debug'](util[_0x9abf('0x4')](_0x9abf('0x3e'),_0x23f685[_0x9abf('0x6')]),_0x23f685);utils[_0x9abf('0x3')](util[_0x9abf('0x4')](_0x9abf('0x3f'),_0x23f685[_0x9abf('0x6')],_0x23f685[_0x9abf('0x40')],_0x23f685[_0x9abf('0x41')],_0x23f685['transfereecalleridnum'],_0x23f685[_0x9abf('0x42')]));if(recordings[_0x23f685['transfereruniqueid']]&&transfers[_0x9abf('0x7')][_0x23f685['transfereruniqueid']]){transfers[_0x9abf('0x7')][_0x23f685[_0x9abf('0x43')]][_0x9abf('0x44')]=!![];}}catch(_0x5e1b7a){utils[_0x9abf('0x18')](util[_0x9abf('0x4')](_0x9abf('0x3e'),_0x23f685[_0x9abf('0x6')]),_0x5e1b7a);}};
\ No newline at end of file
+var _0x92da=['membername','name','UserId','CreateVoiceRecording','request','newchannel','debug','[%s][recordings][newchannel]','linkedid','format','[%s][recordings][newchannel]\x20context:%s\x20exten:%s','context','exten','channel','newstate','[%s][recordings][newstate]','isNil','[%s][recordings][newstate]\x20context:%s\x20channel:%s','transfer','error','variable','mixmonitor_filename','[%s][recordings][varset]\x20variable:%s\x20value:%s','endsWith','.wav49','value','replace','find','monitors','push','hangup','[%s][recordings][hangup]','[%s][recordings][hangup]\x20calleridnum:%s\x20calleridname:%s\x20reason:%s','calleridnum','calleridname','connectedlinenum','connectedlinename','type','outbound','forEach','newexten','[%s][recordings][newexten]','[%s][recordings][newexten]\x20application:%s\x20appdata:%s','application','appdata','toLowerCase','set','cdr','split','substring','lastIndexOf','queuecallerjoin','[%s][recordings][queuecallerjoin]','[%s][recordings][queuecallerjoin]\x20queue:%s','queue','blindtransfer','[%s][recordings][blindtransfer]','[%s][recordings][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridnum','transfereecalleridnum','transfereecalleridname','transfereruniqueid','lodash','util','./utils','./transfers.controller','info','[%s][recordings][writeDB]','uniqueid','blinds','transfereeuniqueid','accountcode','getUserByInternal','then'];(function(_0x411dc0,_0x43ba92){var _0x5bd617=function(_0x46ddd9){while(--_0x46ddd9){_0x411dc0['push'](_0x411dc0['shift']());}};_0x5bd617(++_0x43ba92);}(_0x92da,0x166));var _0xa92d=function(_0x30cea0,_0x5cf981){_0x30cea0=_0x30cea0-0x0;var _0x177910=_0x92da[_0x30cea0];return _0x177910;};'use strict';var _=require(_0xa92d('0x0'));var util=require(_0xa92d('0x1'));var utils=require(_0xa92d('0x2'));var transfers=require(_0xa92d('0x3'));var recordings={};function writeDB(_0x478fe0){var _0x495119;utils[_0xa92d('0x4')](util['format'](_0xa92d('0x5'),_0x478fe0[_0xa92d('0x6')]));if(transfers[_0xa92d('0x7')][_0x478fe0[_0xa92d('0x6')]]){_0x495119=_0x478fe0[_0xa92d('0x6')];_0x478fe0[_0xa92d('0x6')]=transfers[_0xa92d('0x7')][_0x478fe0['uniqueid']][_0xa92d('0x8')];}if(_0x478fe0[_0xa92d('0x9')]){utils[_0xa92d('0xa')](_0x478fe0[_0xa92d('0x9')])[_0xa92d('0xb')](function(_0x10d1d6){if(_0x10d1d6){_0x478fe0[_0xa92d('0xc')]=_0x10d1d6[_0xa92d('0xd')];_0x478fe0[_0xa92d('0xe')]=_0x10d1d6['id'];}utils['request'](_0xa92d('0xf'),_0x478fe0);});}else{utils[_0xa92d('0x10')](_0xa92d('0xf'),_0x478fe0);}if(_0x495119)delete transfers[_0xa92d('0x7')][_0x495119];}exports[_0xa92d('0x11')]=function(_0x2f0b3b){try{utils[_0xa92d('0x12')](util['format'](_0xa92d('0x13'),_0x2f0b3b[_0xa92d('0x6')]),_0x2f0b3b);if(_0x2f0b3b[_0xa92d('0x6')]==_0x2f0b3b[_0xa92d('0x14')]){utils[_0xa92d('0x4')](util[_0xa92d('0x15')](_0xa92d('0x16'),_0x2f0b3b[_0xa92d('0x6')],_0x2f0b3b[_0xa92d('0x17')],_0x2f0b3b[_0xa92d('0x18')]));recordings[_0x2f0b3b[_0xa92d('0x6')]]={'uniqueid':_0x2f0b3b['uniqueid'],'accountcode':_0x2f0b3b[_0xa92d('0x9')],'exten':_0x2f0b3b[_0xa92d('0x18')],'context':_0x2f0b3b[_0xa92d('0x17')],'channel':_0x2f0b3b[_0xa92d('0x19')],'monitors':[]};}}catch(_0x9c1c2b){utils['error'](util[_0xa92d('0x15')](_0xa92d('0x13'),_0x2f0b3b['uniqueid']),_0x9c1c2b);}};exports[_0xa92d('0x1a')]=function(_0x1912ef){try{utils['debug'](util[_0xa92d('0x15')](_0xa92d('0x1b'),_0x1912ef['uniqueid']),_0x1912ef);if(!_[_0xa92d('0x1c')](recordings[_0x1912ef[_0xa92d('0x6')]])&&_0x1912ef['channelstate']==0x6){utils[_0xa92d('0x4')](util[_0xa92d('0x15')](_0xa92d('0x1d'),_0x1912ef['uniqueid'],_0x1912ef[_0xa92d('0x17')],_0x1912ef[_0xa92d('0x19')]));}else if(!_[_0xa92d('0x1c')](recordings[_0x1912ef[_0xa92d('0x14')]])&&_0x1912ef['channelstate']==0x6&&_0x1912ef['context']!=_0xa92d('0x1e')){utils[_0xa92d('0x4')](util[_0xa92d('0x15')]('[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s',_0x1912ef[_0xa92d('0x6')],_0x1912ef[_0xa92d('0x14')],_0x1912ef['context'],_0x1912ef[_0xa92d('0x19')]));recordings[_0x1912ef[_0xa92d('0x14')]][_0xa92d('0x9')]=_0x1912ef[_0xa92d('0x9')];}}catch(_0x491108){utils[_0xa92d('0x1f')](util[_0xa92d('0x15')](_0xa92d('0x1b'),_0x1912ef[_0xa92d('0x6')]),_0x491108);}};exports['varset']=function(_0x5cdb0c){try{if(!_[_0xa92d('0x1c')](_0x5cdb0c[_0xa92d('0x20')])&&!_[_0xa92d('0x1c')](_0x5cdb0c[_0xa92d('0x20')][_0xa92d('0x21')])){utils['debug'](util[_0xa92d('0x15')]('[%s][recordings][varset]',_0x5cdb0c[_0xa92d('0x6')]),_0x5cdb0c);utils[_0xa92d('0x4')](util[_0xa92d('0x15')](_0xa92d('0x22'),_0x5cdb0c[_0xa92d('0x6')],_0x5cdb0c['variable'],_0x5cdb0c['value']));if(_[_0xa92d('0x23')](_0x5cdb0c['value'],_0xa92d('0x24'))){_0x5cdb0c[_0xa92d('0x25')]=_0x5cdb0c['value'][_0xa92d('0x26')](_0xa92d('0x24'),'.WAV');}if(recordings[_0x5cdb0c['linkedid']]){var _0x9563e3=_[_0xa92d('0x27')](recordings[_0x5cdb0c[_0xa92d('0x14')]][_0xa92d('0x28')],{'value':_0x5cdb0c['value']});if(_[_0xa92d('0x1c')](_0x9563e3)){recordings[_0x5cdb0c[_0xa92d('0x14')]][_0xa92d('0x28')][_0xa92d('0x29')]({'value':_0x5cdb0c[_0xa92d('0x25')]});}}}}catch(_0x4b87c9){utils['error'](util[_0xa92d('0x15')]('[%s][recordings][varset]',_0x5cdb0c['uniqueid']),_0x4b87c9);}};exports[_0xa92d('0x2a')]=function(_0x2f57d5){try{if(!_[_0xa92d('0x1c')](recordings[_0x2f57d5[_0xa92d('0x6')]])){utils[_0xa92d('0x12')](util[_0xa92d('0x15')](_0xa92d('0x2b'),_0x2f57d5[_0xa92d('0x6')]),_0x2f57d5);utils[_0xa92d('0x4')](util[_0xa92d('0x15')](_0xa92d('0x2c'),_0x2f57d5[_0xa92d('0x6')],_0x2f57d5[_0xa92d('0x2d')],_0x2f57d5[_0xa92d('0x2e')],_0x2f57d5['cause-txt']));recordings[_0x2f57d5[_0xa92d('0x6')]][_0xa92d('0x2d')]=_0x2f57d5[_0xa92d('0x2d')];recordings[_0x2f57d5[_0xa92d('0x6')]][_0xa92d('0x2e')]=_0x2f57d5['calleridname'];recordings[_0x2f57d5[_0xa92d('0x6')]]['connectedlinenum']=_0x2f57d5[_0xa92d('0x2f')];recordings[_0x2f57d5['uniqueid']][_0xa92d('0x30')]=_0x2f57d5[_0xa92d('0x30')];if(recordings[_0x2f57d5[_0xa92d('0x6')]][_0xa92d('0x31')]==_0xa92d('0x32')&&recordings[_0x2f57d5[_0xa92d('0x6')]][_0xa92d('0x9')]){recordings[_0x2f57d5[_0xa92d('0x6')]][_0xa92d('0x2f')]=recordings[_0x2f57d5[_0xa92d('0x6')]][_0xa92d('0x9')];recordings[_0x2f57d5[_0xa92d('0x6')]][_0xa92d('0x30')]='';}recordings[_0x2f57d5[_0xa92d('0x6')]][_0xa92d('0x28')][_0xa92d('0x33')](function(_0x452285){var _0xf76bb8=_['clone'](recordings[_0x2f57d5[_0xa92d('0x6')]]);_0xf76bb8[_0xa92d('0x25')]=_0x452285[_0xa92d('0x25')];writeDB(_0xf76bb8);});delete recordings[_0x2f57d5[_0xa92d('0x6')]];}}catch(_0x43c7f9){utils[_0xa92d('0x1f')](util[_0xa92d('0x15')](_0xa92d('0x2b'),_0x2f57d5[_0xa92d('0x6')]),_0x43c7f9);}};exports[_0xa92d('0x34')]=function(_0x24262a){try{if(!_[_0xa92d('0x1c')](recordings[_0x24262a[_0xa92d('0x6')]])){utils['debug'](util['format'](_0xa92d('0x35'),_0x24262a[_0xa92d('0x6')]),_0x24262a);utils[_0xa92d('0x4')](util[_0xa92d('0x15')](_0xa92d('0x36'),_0x24262a[_0xa92d('0x6')],_0x24262a[_0xa92d('0x37')],_0x24262a[_0xa92d('0x38')]));if(_0x24262a[_0xa92d('0x37')][_0xa92d('0x39')]()==_0xa92d('0x3a')&&_['startsWith'](_0x24262a[_0xa92d('0x38')][_0xa92d('0x39')](),_0xa92d('0x3b'))){var _0x56964a=_0x24262a['appdata'][_0xa92d('0x3c')]('=');var _0x4668c4=_0x56964a[0x0][_0xa92d('0x3d')](_0x56964a[0x0][_0xa92d('0x3e')]('(')+0x1,_0x56964a[0x0][_0xa92d('0x3e')](')'));var _0x52c4d7=_0x56964a[0x1];recordings[_0x24262a[_0xa92d('0x6')]][_0x4668c4]=_0x52c4d7;}}}catch(_0x2ef43f){utils[_0xa92d('0x1f')](util[_0xa92d('0x15')](_0xa92d('0x35'),_0x24262a[_0xa92d('0x6')]),_0x2ef43f);}};exports[_0xa92d('0x3f')]=function(_0x3077c9){try{if(!_['isNil'](recordings[_0x3077c9['uniqueid']])){utils[_0xa92d('0x12')](util['format'](_0xa92d('0x40'),_0x3077c9[_0xa92d('0x6')]),_0x3077c9);utils[_0xa92d('0x4')](util['format'](_0xa92d('0x41'),_0x3077c9[_0xa92d('0x6')],_0x3077c9[_0xa92d('0x42')]));recordings[_0x3077c9[_0xa92d('0x6')]][_0xa92d('0x42')]=_0x3077c9[_0xa92d('0x42')];}}catch(_0x5be5b7){utils['error'](util[_0xa92d('0x15')](_0xa92d('0x40'),_0x3077c9[_0xa92d('0x6')]),_0x5be5b7);}};exports[_0xa92d('0x43')]=function(_0xc093e4){try{utils['debug'](util['format'](_0xa92d('0x44'),_0xc093e4['uniqueid']),_0xc093e4);utils['info'](util[_0xa92d('0x15')](_0xa92d('0x45'),_0xc093e4[_0xa92d('0x6')],_0xc093e4[_0xa92d('0x46')],_0xc093e4['transferercalleridname'],_0xc093e4[_0xa92d('0x47')],_0xc093e4[_0xa92d('0x48')]));if(recordings[_0xc093e4[_0xa92d('0x49')]]&&transfers[_0xa92d('0x7')][_0xc093e4['transfereruniqueid']]){transfers[_0xa92d('0x7')][_0xc093e4['transfereruniqueid']]['recording']=!![];}}catch(_0x4a1f4c){utils[_0xa92d('0x1f')](util[_0xa92d('0x15')](_0xa92d('0x44'),_0xc093e4[_0xa92d('0x6')]),_0x4a1f4c);}};
\ No newline at end of file
index 50bfad1..d2d234e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca1f=['origtransferercalleridname','secondtransfererconnectedlinenum','secondtransfererconnectedlinename','origtransfereraccountcode','secondtransferercontext','secondtransfererexten','origtransfererlinkedid','origtransferercontext','origtransfererexten','transfereechannel','transfertargetchannel','transfertargetcalleridname','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetcontext','transfertargetexten','transfertargetlinkedid','error','lodash','info','format','type','attended','origtransfereruniqueid','uniqueid','CreateVoiceTransferReport','blinds','blindtransfer','debug','[%s][transfers][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridname','transfereecalleridname','blind','transfereruniqueid','[%s][transfers][blindtransfer]','[%s][transfers][attendedtransfer]','[%s][transfers][attendedtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','origtransferercalleridnum','transfertargetcalleridnum','assign','origtransfererchannel'];(function(_0x44b5bb,_0x2c620e){var _0x214394=function(_0x5c7ded){while(--_0x5c7ded){_0x44b5bb['push'](_0x44b5bb['shift']());}};_0x214394(++_0x2c620e);}(_0xca1f,0x108));var _0xfca1=function(_0x1215af,_0x43716d){_0x1215af=_0x1215af-0x0;var _0x3e8a30=_0xca1f[_0x1215af];return _0x3e8a30;};'use strict';var _=require(_0xfca1('0x0'));var util=require('util');var utils=require('./utils');function writeDB(_0x56c45d){utils[_0xfca1('0x1')](util[_0xfca1('0x2')]('[%s][transfers][writeDB]\x20type:%s',_0x56c45d[_0xfca1('0x3')]===_0xfca1('0x4')?_0x56c45d[_0xfca1('0x5')]:_0x56c45d[_0xfca1('0x6')],_0x56c45d[_0xfca1('0x3')]));utils['request'](_0xfca1('0x7'),_0x56c45d);}exports[_0xfca1('0x8')]={};exports[_0xfca1('0x9')]=function(_0x89f5a4){try{utils[_0xfca1('0xa')](util[_0xfca1('0x2')]('[%s][transfers][blindtransfer]',_0x89f5a4[_0xfca1('0x6')]),_0x89f5a4);utils[_0xfca1('0x1')](util[_0xfca1('0x2')](_0xfca1('0xb'),_0x89f5a4[_0xfca1('0x6')],_0x89f5a4['transferercalleridnum'],_0x89f5a4[_0xfca1('0xc')],_0x89f5a4['transfereecalleridnum'],_0x89f5a4[_0xfca1('0xd')]));_0x89f5a4['type']=_0xfca1('0xe');exports[_0xfca1('0x8')][_0x89f5a4[_0xfca1('0xf')]]=_0x89f5a4;writeDB(_0x89f5a4);}catch(_0x3be166){utils['error'](util[_0xfca1('0x2')](_0xfca1('0x10'),_0x89f5a4[_0xfca1('0x6')]),_0x3be166);}};exports['attendedtransfer']=function(_0x4329cf){try{utils[_0xfca1('0xa')](util['format'](_0xfca1('0x11'),_0x4329cf[_0xfca1('0x5')]),_0x4329cf);utils['info'](util[_0xfca1('0x2')](_0xfca1('0x12'),_0x4329cf[_0xfca1('0x5')],_0x4329cf[_0xfca1('0x13')],_0x4329cf['origtransferercalleridname'],_0x4329cf[_0xfca1('0x14')],_0x4329cf['transfertargetcalleridname']));_0x4329cf=_[_0xfca1('0x15')](_0x4329cf,{'transfererchannel':_0x4329cf[_0xfca1('0x16')],'transferercalleridnum':_0x4329cf[_0xfca1('0x13')],'transferercalleridname':_0x4329cf[_0xfca1('0x17')],'transfererconnectedlinenum':_0x4329cf[_0xfca1('0x18')],'transfererconnectedlinename':_0x4329cf[_0xfca1('0x19')],'transfereraccountcode':_0x4329cf[_0xfca1('0x1a')],'transferercontext':_0x4329cf[_0xfca1('0x1b')],'transfererexten':_0x4329cf[_0xfca1('0x1c')],'transfererlinkedid':_0x4329cf[_0xfca1('0x1d')],'context':_0x4329cf[_0xfca1('0x1e')],'extension':_0x4329cf[_0xfca1('0x1f')],'type':_0xfca1('0x4')});if(_['isNil'](_0x4329cf[_0xfca1('0x20')])){_0x4329cf=_[_0xfca1('0x15')](_0x4329cf,{'transfereechannel':_0x4329cf[_0xfca1('0x21')],'transfereecalleridnum':_0x4329cf['transfertargetcalleridnum'],'transfereecalleridname':_0x4329cf[_0xfca1('0x22')],'transfereeconnectedlinenum':_0x4329cf[_0xfca1('0x23')],'transfereeconnectedlinename':_0x4329cf[_0xfca1('0x24')],'transfereeaccountcode':_0x4329cf['transfertargetaccountcode'],'transfereecontext':_0x4329cf[_0xfca1('0x25')],'transfereeexten':_0x4329cf[_0xfca1('0x26')],'transfereelinkedid':_0x4329cf[_0xfca1('0x27')]});}writeDB(_0x4329cf);}catch(_0x521bb4){utils[_0xfca1('0x28')](util['format'](_0xfca1('0x11'),_0x4329cf[_0xfca1('0x5')]),_0x521bb4);}};
\ No newline at end of file
+var _0x04eb=['origtransfererchannel','origtransferercalleridnum','origtransferercalleridname','secondtransfererconnectedlinenum','secondtransfererconnectedlinename','origtransfereraccountcode','secondtransferercontext','secondtransfererexten','origtransfererlinkedid','origtransfererexten','attended','isNil','transfertargetchannel','transfertargetcalleridname','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetexten','transfertargetlinkedid','lodash','./utils','info','format','[%s][transfers][writeDB]\x20type:%s','type','origtransfereruniqueid','uniqueid','request','CreateVoiceTransferReport','blinds','blindtransfer','debug','[%s][transfers][blindtransfer]','[%s][transfers][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridnum','transferercalleridname','transfereecalleridnum','transfereecalleridname','blind','transfereruniqueid','error','attendedtransfer','[%s][transfers][attendedtransfer]','[%s][transfers][attendedtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transfertargetcalleridnum','assign'];(function(_0x339316,_0x5c78ce){var _0x24bb19=function(_0x3c9f04){while(--_0x3c9f04){_0x339316['push'](_0x339316['shift']());}};_0x24bb19(++_0x5c78ce);}(_0x04eb,0xf3));var _0xb04e=function(_0x1395e4,_0x56abac){_0x1395e4=_0x1395e4-0x0;var _0xfb5db1=_0x04eb[_0x1395e4];return _0xfb5db1;};'use strict';var _=require(_0xb04e('0x0'));var util=require('util');var utils=require(_0xb04e('0x1'));function writeDB(_0xec454e){utils[_0xb04e('0x2')](util[_0xb04e('0x3')](_0xb04e('0x4'),_0xec454e[_0xb04e('0x5')]==='attended'?_0xec454e[_0xb04e('0x6')]:_0xec454e[_0xb04e('0x7')],_0xec454e[_0xb04e('0x5')]));utils[_0xb04e('0x8')](_0xb04e('0x9'),_0xec454e);}exports[_0xb04e('0xa')]={};exports[_0xb04e('0xb')]=function(_0xb579b1){try{utils[_0xb04e('0xc')](util[_0xb04e('0x3')](_0xb04e('0xd'),_0xb579b1[_0xb04e('0x7')]),_0xb579b1);utils[_0xb04e('0x2')](util[_0xb04e('0x3')](_0xb04e('0xe'),_0xb579b1[_0xb04e('0x7')],_0xb579b1[_0xb04e('0xf')],_0xb579b1[_0xb04e('0x10')],_0xb579b1[_0xb04e('0x11')],_0xb579b1[_0xb04e('0x12')]));_0xb579b1[_0xb04e('0x5')]=_0xb04e('0x13');exports[_0xb04e('0xa')][_0xb579b1[_0xb04e('0x14')]]=_0xb579b1;writeDB(_0xb579b1);}catch(_0xe82399){utils[_0xb04e('0x15')](util['format']('[%s][transfers][blindtransfer]',_0xb579b1['uniqueid']),_0xe82399);}};exports[_0xb04e('0x16')]=function(_0x5d365b){try{utils['debug'](util[_0xb04e('0x3')](_0xb04e('0x17'),_0x5d365b[_0xb04e('0x6')]),_0x5d365b);utils['info'](util[_0xb04e('0x3')](_0xb04e('0x18'),_0x5d365b[_0xb04e('0x6')],_0x5d365b['origtransferercalleridnum'],_0x5d365b['origtransferercalleridname'],_0x5d365b[_0xb04e('0x19')],_0x5d365b['transfertargetcalleridname']));_0x5d365b=_[_0xb04e('0x1a')](_0x5d365b,{'transfererchannel':_0x5d365b[_0xb04e('0x1b')],'transferercalleridnum':_0x5d365b[_0xb04e('0x1c')],'transferercalleridname':_0x5d365b[_0xb04e('0x1d')],'transfererconnectedlinenum':_0x5d365b[_0xb04e('0x1e')],'transfererconnectedlinename':_0x5d365b[_0xb04e('0x1f')],'transfereraccountcode':_0x5d365b[_0xb04e('0x20')],'transferercontext':_0x5d365b[_0xb04e('0x21')],'transfererexten':_0x5d365b[_0xb04e('0x22')],'transfererlinkedid':_0x5d365b[_0xb04e('0x23')],'context':_0x5d365b['origtransferercontext'],'extension':_0x5d365b[_0xb04e('0x24')],'type':_0xb04e('0x25')});if(_[_0xb04e('0x26')](_0x5d365b['transfereechannel'])){_0x5d365b=_['assign'](_0x5d365b,{'transfereechannel':_0x5d365b[_0xb04e('0x27')],'transfereecalleridnum':_0x5d365b['transfertargetcalleridnum'],'transfereecalleridname':_0x5d365b[_0xb04e('0x28')],'transfereeconnectedlinenum':_0x5d365b[_0xb04e('0x29')],'transfereeconnectedlinename':_0x5d365b[_0xb04e('0x2a')],'transfereeaccountcode':_0x5d365b['transfertargetaccountcode'],'transfereecontext':_0x5d365b['transfertargetcontext'],'transfereeexten':_0x5d365b[_0xb04e('0x2b')],'transfereelinkedid':_0x5d365b[_0xb04e('0x2c')]});}writeDB(_0x5d365b);}catch(_0x46695d){utils['error'](util[_0xb04e('0x3')](_0xb04e('0x17'),_0x5d365b[_0xb04e('0x6')]),_0x46695d);}};
\ No newline at end of file
index 1f3ecdf..d40553c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b52=['request','then','[utils][request]\x20name:%s','internal','name','interface','[utils][getUser]\x20where:%s','result','length','getUserByInternal','found','[utils][getUserByInterface]\x20interface:%s\x20%s','notfound','catch','[utils][getUserByInterface]','getUserByName','[utils][getUserByName]','getVoiceQueueByName','GetVoiceQueue','type','acw','[utils][getVoiceQueueByName]\x20name:%s','[utils][getVoiceQueueByName]\x20name:%s\x20%s','add','seconds','YYYY-MM-DD\x20HH:mm:ss','subtractTime','subtract','format','diffTime','diff','sumTime','now','isAfter','isBefore','bluebird','jayson/promise','moment','util','client','http','../../config/logger','xdr','info','inspect','debug','error'];(function(_0x41b147,_0x52afc9){var _0x5b8d0e=function(_0x2e620d){while(--_0x2e620d){_0x41b147['push'](_0x41b147['shift']());}};_0x5b8d0e(++_0x52afc9);}(_0x6b52,0xdf));var _0x26b5=function(_0x50357d,_0x55b4eb){_0x50357d=_0x50357d-0x0;var _0x12b140=_0x6b52[_0x50357d];return _0x12b140;};'use strict';var BPromise=require(_0x26b5('0x0'));var jayson=require(_0x26b5('0x1'));var moment=require(_0x26b5('0x2'));var util=require(_0x26b5('0x3'));var client=jayson[_0x26b5('0x4')][_0x26b5('0x5')]({'port':0x2329});var logger=require(_0x26b5('0x6'))(_0x26b5('0x7'));exports[_0x26b5('0x8')]=function(_0x1a284c,_0x4bd37b){logger[_0x26b5('0x8')](_0x1a284c,_0x4bd37b?util[_0x26b5('0x9')](_0x4bd37b,{'showHidden':![],'depth':null}):'');};exports[_0x26b5('0xa')]=function(_0x20a9a4,_0x50d289){logger[_0x26b5('0xa')](_0x20a9a4,_0x50d289?util[_0x26b5('0x9')](_0x50d289,{'showHidden':![],'depth':null}):'');};exports[_0x26b5('0xb')]=function(_0x4975a4,_0x343da4){logger[_0x26b5('0xb')](_0x4975a4,_0x343da4?util[_0x26b5('0x9')](_0x343da4,{'showHidden':![],'depth':null}):'');};exports[_0x26b5('0xc')]=function(_0xc1e020,_0x119e9f){return client[_0x26b5('0xc')](_0xc1e020,{'body':_0x119e9f})[_0x26b5('0xd')](function(_0x448692){logger[_0x26b5('0xa')](_0x26b5('0xe'),_0xc1e020,_0x448692?util[_0x26b5('0x9')](_0x448692,{'showHidden':![],'depth':null}):'');})['catch'](function(_0x172e0f){logger['error'](_0x26b5('0xe'),_0xc1e020,_0x172e0f?util[_0x26b5('0x9')](_0x172e0f,{'showHidden':![],'depth':null}):'');});};function getUser(_0x51cc26){return client[_0x26b5('0xc')]('GetUser',{'options':{'raw':!![],'attributes':['id',_0x26b5('0xf'),_0x26b5('0x10'),_0x26b5('0x11')],'where':_0x51cc26,'limit':0x1}})[_0x26b5('0xd')](function(_0x42b21d){logger[_0x26b5('0xa')](_0x26b5('0x12'),JSON['stringify'](_0x51cc26),_0x42b21d?util[_0x26b5('0x9')](_0x42b21d,{'showHidden':![],'depth':null}):'');return _0x42b21d[_0x26b5('0x13')][_0x26b5('0x14')]?_0x42b21d[_0x26b5('0x13')][0x0]:null;});}exports[_0x26b5('0x15')]=function(_0x316e56){return new BPromise(function(_0x143e24,_0x3872b6){if(_0x316e56){return getUser({'internal':_0x316e56})[_0x26b5('0xd')](function(_0x2ae701){logger[_0x26b5('0x8')]('[utils][getUserByInternal]\x20internal:%s\x20%s',_0x316e56,_0x2ae701?_0x26b5('0x16'):'notfound');return _0x143e24(_0x2ae701);})['catch'](function(_0x52668a){logger[_0x26b5('0xb')]('[utils][getUserByInternal]',_0x52668a?util[_0x26b5('0x9')](_0x52668a,{'showHidden':![],'depth':null}):'');return _0x143e24(null);});}return _0x143e24(null);});};exports['getUserByInterface']=function(_0x38eb85){return new BPromise(function(_0x170e56,_0x17b554){if(_0x38eb85){return getUser({'interface':_0x38eb85})[_0x26b5('0xd')](function(_0x3f6cd0){logger['info'](_0x26b5('0x17'),_0x38eb85,_0x3f6cd0?'found':_0x26b5('0x18'));return _0x170e56(_0x3f6cd0);})[_0x26b5('0x19')](function(_0x325f92){logger[_0x26b5('0xb')](_0x26b5('0x1a'),_0x325f92?util[_0x26b5('0x9')](_0x325f92,{'showHidden':![],'depth':null}):'');return _0x170e56(null);});}return _0x170e56(null);});};exports[_0x26b5('0x1b')]=function(_0xd1ac83){return new BPromise(function(_0x33cdef,_0x5a046f){if(_0xd1ac83){return getUser({'name':_0xd1ac83})[_0x26b5('0xd')](function(_0x1856e2){logger[_0x26b5('0x8')]('[utils][getUserByName]\x20name:%s\x20%s',_0xd1ac83,_0x1856e2?'found':_0x26b5('0x18'));return _0x33cdef(_0x1856e2);})['catch'](function(_0x3c6e7d){logger['error'](_0x26b5('0x1c'),_0x3c6e7d?util[_0x26b5('0x9')](_0x3c6e7d,{'showHidden':![],'depth':null}):'');return _0x33cdef(null);});}return _0x33cdef(null);});};exports[_0x26b5('0x1d')]=function(_0x44ba86){return new BPromise(function(_0x29374d,_0x307514){if(_0x44ba86){return client['request'](_0x26b5('0x1e'),{'options':{'raw':!![],'attributes':['id',_0x26b5('0x10'),_0x26b5('0x1f'),_0x26b5('0x20'),'acwTimeout'],'where':{'name':_0x44ba86},'limit':0x1}})[_0x26b5('0xd')](function(_0x5ba185){logger[_0x26b5('0xa')](_0x26b5('0x21'),_0x44ba86,_0x5ba185?util[_0x26b5('0x9')](_0x5ba185,{'showHidden':![],'depth':null}):'');logger[_0x26b5('0x8')](_0x26b5('0x22'),_0x44ba86,_0x5ba185?'found':_0x26b5('0x18'));return _0x29374d(_0x5ba185[_0x26b5('0x13')][_0x26b5('0x14')]?_0x5ba185['result'][0x0]:null);})[_0x26b5('0x19')](function(_0x452a86){logger[_0x26b5('0xb')]('[utils][getVoiceQueueByName]',_0x452a86?util[_0x26b5('0x9')](_0x452a86,{'showHidden':![],'depth':null}):'');return _0x29374d(null);});}return _0x29374d(null);});};exports['addTime']=function(_0x53e6ac,_0x486c1a){return moment(_0x53e6ac)[_0x26b5('0x23')](_0x486c1a,_0x26b5('0x24'))['format'](_0x26b5('0x25'));};exports[_0x26b5('0x26')]=function(_0x40986f,_0x2d923d){return moment(_0x40986f)[_0x26b5('0x27')](_0x2d923d,_0x26b5('0x24'))[_0x26b5('0x28')](_0x26b5('0x25'));};exports[_0x26b5('0x29')]=function(_0x38460a,_0x3fea73){return moment(_0x38460a)[_0x26b5('0x2a')](moment(_0x3fea73),_0x26b5('0x24'));};exports[_0x26b5('0x2b')]=function(_0x48a14d,_0x49f377){return parseInt(_0x48a14d,0xa)+parseInt(_0x49f377,0xa);};exports[_0x26b5('0x2c')]=function(){return moment()['format'](_0x26b5('0x25'));};exports[_0x26b5('0x2d')]=function(_0x118429,_0x42ab6d){if(_0x42ab6d){return moment(_0x118429)[_0x26b5('0x2d')](_0x42ab6d);}return!![];};exports[_0x26b5('0x2e')]=function(_0x56b664,_0x2fac9a){if(_0x2fac9a){return moment(_0x56b664)[_0x26b5('0x2e')](_0x2fac9a);}else if(_0x56b664){return!![];}return![];};
\ No newline at end of file
+var _0xdf74=['type','acw','acwTimeout','[utils][getVoiceQueueByName]\x20name:%s','addTime','format','YYYY-MM-DD\x20HH:mm:ss','subtract','seconds','diffTime','diff','sumTime','now','isAfter','isBefore','bluebird','jayson/promise','util','client','http','../../config/logger','xdr','info','inspect','debug','request','then','[utils][request]\x20name:%s','GetUser','internal','name','interface','[utils][getUser]\x20where:%s','stringify','result','length','[utils][getUserByInternal]\x20internal:%s\x20%s','found','notfound','[utils][getUserByInternal]','getUserByInterface','[utils][getUserByInterface]\x20interface:%s\x20%s','catch','[utils][getUserByInterface]','getUserByName','[utils][getUserByName]\x20name:%s\x20%s','error','[utils][getUserByName]','getVoiceQueueByName'];(function(_0x514bd1,_0x25ea3e){var _0x58a281=function(_0x25567a){while(--_0x25567a){_0x514bd1['push'](_0x514bd1['shift']());}};_0x58a281(++_0x25ea3e);}(_0xdf74,0x197));var _0x4df7=function(_0x545090,_0x5eaac6){_0x545090=_0x545090-0x0;var _0x1d5326=_0xdf74[_0x545090];return _0x1d5326;};'use strict';var BPromise=require(_0x4df7('0x0'));var jayson=require(_0x4df7('0x1'));var moment=require('moment');var util=require(_0x4df7('0x2'));var client=jayson[_0x4df7('0x3')][_0x4df7('0x4')]({'port':0x2329});var logger=require(_0x4df7('0x5'))(_0x4df7('0x6'));exports[_0x4df7('0x7')]=function(_0x26e85f,_0x58bd49){logger[_0x4df7('0x7')](_0x26e85f,_0x58bd49?util[_0x4df7('0x8')](_0x58bd49,{'showHidden':![],'depth':null}):'');};exports[_0x4df7('0x9')]=function(_0x365037,_0x4c2142){logger[_0x4df7('0x9')](_0x365037,_0x4c2142?util[_0x4df7('0x8')](_0x4c2142,{'showHidden':![],'depth':null}):'');};exports['error']=function(_0x187fba,_0x429973){logger['error'](_0x187fba,_0x429973?util[_0x4df7('0x8')](_0x429973,{'showHidden':![],'depth':null}):'');};exports['request']=function(_0x337220,_0x15f8b4){return client[_0x4df7('0xa')](_0x337220,{'body':_0x15f8b4})[_0x4df7('0xb')](function(_0x581357){logger['debug'](_0x4df7('0xc'),_0x337220,_0x581357?util[_0x4df7('0x8')](_0x581357,{'showHidden':![],'depth':null}):'');})['catch'](function(_0x4a9643){logger['error'](_0x4df7('0xc'),_0x337220,_0x4a9643?util[_0x4df7('0x8')](_0x4a9643,{'showHidden':![],'depth':null}):'');});};function getUser(_0x1ebbb4){return client[_0x4df7('0xa')](_0x4df7('0xd'),{'options':{'raw':!![],'attributes':['id',_0x4df7('0xe'),_0x4df7('0xf'),_0x4df7('0x10')],'where':_0x1ebbb4,'limit':0x1}})[_0x4df7('0xb')](function(_0x4fda56){logger[_0x4df7('0x9')](_0x4df7('0x11'),JSON[_0x4df7('0x12')](_0x1ebbb4),_0x4fda56?util['inspect'](_0x4fda56,{'showHidden':![],'depth':null}):'');return _0x4fda56[_0x4df7('0x13')][_0x4df7('0x14')]?_0x4fda56['result'][0x0]:null;});}exports['getUserByInternal']=function(_0x12cb59){return new BPromise(function(_0x529db9,_0x54f6c8){if(_0x12cb59){return getUser({'internal':_0x12cb59})[_0x4df7('0xb')](function(_0x3a050f){logger[_0x4df7('0x7')](_0x4df7('0x15'),_0x12cb59,_0x3a050f?_0x4df7('0x16'):_0x4df7('0x17'));return _0x529db9(_0x3a050f);})['catch'](function(_0x24740a){logger['error'](_0x4df7('0x18'),_0x24740a?util[_0x4df7('0x8')](_0x24740a,{'showHidden':![],'depth':null}):'');return _0x529db9(null);});}return _0x529db9(null);});};exports[_0x4df7('0x19')]=function(_0x2e8db6){return new BPromise(function(_0x4bdb4d,_0x21df52){if(_0x2e8db6){return getUser({'interface':_0x2e8db6})[_0x4df7('0xb')](function(_0x3c4051){logger[_0x4df7('0x7')](_0x4df7('0x1a'),_0x2e8db6,_0x3c4051?_0x4df7('0x16'):'notfound');return _0x4bdb4d(_0x3c4051);})[_0x4df7('0x1b')](function(_0x5ce457){logger['error'](_0x4df7('0x1c'),_0x5ce457?util[_0x4df7('0x8')](_0x5ce457,{'showHidden':![],'depth':null}):'');return _0x4bdb4d(null);});}return _0x4bdb4d(null);});};exports[_0x4df7('0x1d')]=function(_0x3d3284){return new BPromise(function(_0x43d4b4,_0x34bd36){if(_0x3d3284){return getUser({'name':_0x3d3284})[_0x4df7('0xb')](function(_0x4cdf6e){logger['info'](_0x4df7('0x1e'),_0x3d3284,_0x4cdf6e?'found':_0x4df7('0x17'));return _0x43d4b4(_0x4cdf6e);})['catch'](function(_0x343e73){logger[_0x4df7('0x1f')](_0x4df7('0x20'),_0x343e73?util[_0x4df7('0x8')](_0x343e73,{'showHidden':![],'depth':null}):'');return _0x43d4b4(null);});}return _0x43d4b4(null);});};exports[_0x4df7('0x21')]=function(_0xa58366){return new BPromise(function(_0x29d555,_0x5e7155){if(_0xa58366){return client[_0x4df7('0xa')]('GetVoiceQueue',{'options':{'raw':!![],'attributes':['id','name',_0x4df7('0x22'),_0x4df7('0x23'),_0x4df7('0x24')],'where':{'name':_0xa58366},'limit':0x1}})[_0x4df7('0xb')](function(_0x216f18){logger['debug'](_0x4df7('0x25'),_0xa58366,_0x216f18?util[_0x4df7('0x8')](_0x216f18,{'showHidden':![],'depth':null}):'');logger['info']('[utils][getVoiceQueueByName]\x20name:%s\x20%s',_0xa58366,_0x216f18?'found':_0x4df7('0x17'));return _0x29d555(_0x216f18['result'][_0x4df7('0x14')]?_0x216f18[_0x4df7('0x13')][0x0]:null);})[_0x4df7('0x1b')](function(_0x2bfd29){logger[_0x4df7('0x1f')]('[utils][getVoiceQueueByName]',_0x2bfd29?util[_0x4df7('0x8')](_0x2bfd29,{'showHidden':![],'depth':null}):'');return _0x29d555(null);});}return _0x29d555(null);});};exports[_0x4df7('0x26')]=function(_0x326bde,_0x144502){return moment(_0x326bde)['add'](_0x144502,'seconds')[_0x4df7('0x27')](_0x4df7('0x28'));};exports['subtractTime']=function(_0x372b4a,_0x3da26f){return moment(_0x372b4a)[_0x4df7('0x29')](_0x3da26f,_0x4df7('0x2a'))[_0x4df7('0x27')](_0x4df7('0x28'));};exports[_0x4df7('0x2b')]=function(_0x27cfa2,_0x41a80a){return moment(_0x27cfa2)[_0x4df7('0x2c')](moment(_0x41a80a),_0x4df7('0x2a'));};exports[_0x4df7('0x2d')]=function(_0x55e983,_0x1e9a9b){return parseInt(_0x55e983,0xa)+parseInt(_0x1e9a9b,0xa);};exports[_0x4df7('0x2e')]=function(){return moment()[_0x4df7('0x27')]('YYYY-MM-DD\x20HH:mm:ss');};exports['isAfter']=function(_0x740a4d,_0xd5d271){if(_0xd5d271){return moment(_0x740a4d)[_0x4df7('0x2f')](_0xd5d271);}return!![];};exports['isBefore']=function(_0x5c6132,_0x36a94a){if(_0x36a94a){return moment(_0x5c6132)[_0x4df7('0x30')](_0x36a94a);}else if(_0x5c6132){return!![];}return![];};
\ No newline at end of file
index a49f308..3810baa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6492=['./loggers','fileLogger','maskSensitiveData','join','/var','xcally','client','role','name','ensureDir','then','log','user','data','timestamp','catch','api','auth','set','client-side-logger','use','logger','body','\x20body=%s','format','method','headers','x-forwarded-for','connection','remoteAddress','url','statusCode','responseTime','inspect','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)','agent_name','test','setupLoggers','lodash','express-winston','path','util'];(function(_0x39a12f,_0x1f6cfe){var _0x1f8856=function(_0x3772cd){while(--_0x3772cd){_0x39a12f['push'](_0x39a12f['shift']());}};_0x1f8856(++_0x1f6cfe);}(_0x6492,0x1b4));var _0x2649=function(_0x4d5d16,_0x51e3b3){_0x4d5d16=_0x4d5d16-0x0;var _0x1a8ebc=_0x6492[_0x4d5d16];return _0x1a8ebc;};var fs=require('fs-extra');var _=require(_0x2649('0x0'));var ewinston=require(_0x2649('0x1'));var path=require(_0x2649('0x2'));var util=require(_0x2649('0x3'));var fileLogger=require(_0x2649('0x4'))[_0x2649('0x5')];var safeTemplate=require('./safe-template')['safeTemplate'];var maskSensitiveData=require('./mask-sensitive-data')[_0x2649('0x6')];function ClientSideLogger(){function _0x419d92(_0x519776){var _0x221fc6=path[_0x2649('0x7')](_0x2649('0x8'),'log',_0x2649('0x9'));var _0x17590b=path[_0x2649('0x7')](_0x2649('0xa'),_0x519776[_0x2649('0xb')]+'-'+_0x519776[_0x2649('0xc')]);return fs[_0x2649('0xd')](path[_0x2649('0x7')](_0x221fc6,_0x17590b))[_0x2649('0xe')](function(){var _0x114c72=fileLogger(_0x2649('0xa'),path[_0x2649('0x7')](_0x221fc6,_0x17590b));return _0x114c72;})['catch'](function(_0x30fdd){throw _0x30fdd;});}this[_0x2649('0xf')]=function(_0x219ca1,_0x242e6b,_0x275155,_0x5b4408){return _0x419d92(_0x219ca1[_0x2649('0x10')])['then'](function(_0x1f7074){var _0x1c5e65=_0x1f7074[_0x242e6b];return _0x1c5e65;})[_0x2649('0xe')](function(_0x59f6ad){var _0x315a96=_0x219ca1['user']?_0x219ca1['user']['id']:'no-user';var _0x2c2692=_0x5b4408[_0x2649('0x11')];var _0x584a2c=_0x5b4408[_0x2649('0x12')];var _0x336fbe=new Date(Number(_0x584a2c));return _0x59f6ad(_0x315a96,_0x336fbe,_0x275155,_0x2c2692);})[_0x2649('0x13')](function(_0x4a8db1){fileLogger(_0x2649('0xa'))['error'](_0x4a8db1);});};}function setupLoggers(_0x2dd404){return new Promise(function(_0x4ba41a){var _0x1136aa=new ClientSideLogger();var _0x3e8c34=fileLogger(_0x2649('0x14'));var _0x4a1162=fileLogger(_0x2649('0x15'));_0x2dd404[_0x2649('0x16')](_0x2649('0x17'),_0x1136aa);_0x2dd404[_0x2649('0x18')](ewinston[_0x2649('0x19')]({'winstonInstance':_0x3e8c34,'meta':![],'statusLevels':!![],'msg':function(_0x23bef0,_0x521337){var _0xee35b3='%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s';if(!_['isEmpty'](_0x23bef0[_0x2649('0x1a')])){_0xee35b3+=_0x2649('0x1b');var _0x260fcf=_0x23bef0[_0x2649('0x1a')];maskSensitiveData(_0x260fcf);}return safeTemplate(util[_0x2649('0x1c')](_0xee35b3,_0x23bef0[_0x2649('0x1d')],_0x23bef0[_0x2649('0x1e')][_0x2649('0x1f')]?_0x23bef0['headers'][_0x2649('0x1f')]:_0x23bef0[_0x2649('0x20')][_0x2649('0x21')]||_0x23bef0['ip'],_0x23bef0[_0x2649('0x22')],_0x521337[_0x2649('0x23')],_0x521337[_0x2649('0x24')],_0x23bef0[_0x2649('0x10')]?_0x23bef0[_0x2649('0x10')]['id']:null,_0x23bef0[_0x2649('0x10')]?_0x23bef0[_0x2649('0x10')][_0x2649('0xc')]:null,_0x23bef0[_0x2649('0x10')]?_0x23bef0[_0x2649('0x10')][_0x2649('0xb')]:null,_0x260fcf?util[_0x2649('0x25')](_0x260fcf,![],null):''));}}));_0x2dd404[_0x2649('0x18')](ewinston[_0x2649('0x19')]({'winstonInstance':_0x4a1162,'meta':![],'statusLevels':!![],'msg':function(_0x37cb1f,_0x3374ed){var _0xc56440='%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s';if(_0x37cb1f['body']&&_0x37cb1f[_0x2649('0x1a')][_0x2649('0x26')]&&_0x37cb1f[_0x2649('0x1a')][_0x2649('0x27')]){_0xc56440=_0x2649('0x28');}return util[_0x2649('0x1c')](_0xc56440,_0x37cb1f[_0x2649('0x1d')],_0x37cb1f[_0x2649('0x1e')][_0x2649('0x1f')]?_0x37cb1f[_0x2649('0x1e')][_0x2649('0x1f')]:_0x37cb1f[_0x2649('0x20')][_0x2649('0x21')]||_0x37cb1f['ip'],_0x37cb1f['url'],_0x3374ed[_0x2649('0x23')],_0x3374ed[_0x2649('0x24')],_0x37cb1f[_0x2649('0x10')]?_0x37cb1f[_0x2649('0x10')]['id']:null,_0x37cb1f[_0x2649('0x10')]?_0x37cb1f[_0x2649('0x10')][_0x2649('0xc')]:null,_0x37cb1f['user']?_0x37cb1f[_0x2649('0x10')][_0x2649('0xb')]:null,_0x37cb1f['body']&&_0x37cb1f[_0x2649('0x1a')][_0x2649('0x26')]?_0x37cb1f[_0x2649('0x1a')][_0x2649('0x26')]:'other',_0x37cb1f[_0x2649('0x1a')]&&_0x37cb1f[_0x2649('0x1a')][_0x2649('0x27')]?_0x37cb1f[_0x2649('0x1a')][_0x2649('0x27')]:'',_0x37cb1f['body']&&_0x37cb1f['body'][_0x2649('0x29')]?_0x37cb1f[_0x2649('0x1a')][_0x2649('0x29')]:'');},'ignoreRoute':function(_0x36158d){var _0x26c7e1=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0x26c7e1[_0x2649('0x2a')](_0x36158d['url']);}}));return _0x4ba41a();});}exports[_0x2649('0x2b')]=setupLoggers;
\ No newline at end of file
+var _0xc511=['then','no-user','data','error','auth','set','client-side-logger','use','logger','body','format','headers','x-forwarded-for','remoteAddress','url','statusCode','responseTime','role','inspect','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s','device','agent_id','agent_name','setupLoggers','fs-extra','lodash','express-winston','path','./loggers','fileLogger','safeTemplate','./mask-sensitive-data','maskSensitiveData','join','log','xcally','client','name','ensureDir','catch','user'];(function(_0x334da1,_0x1bb9f3){var _0x4b5cca=function(_0x37309d){while(--_0x37309d){_0x334da1['push'](_0x334da1['shift']());}};_0x4b5cca(++_0x1bb9f3);}(_0xc511,0x10e));var _0x1c51=function(_0x1f5a63,_0x511504){_0x1f5a63=_0x1f5a63-0x0;var _0x30bb7a=_0xc511[_0x1f5a63];return _0x30bb7a;};var fs=require(_0x1c51('0x0'));var _=require(_0x1c51('0x1'));var ewinston=require(_0x1c51('0x2'));var path=require(_0x1c51('0x3'));var util=require('util');var fileLogger=require(_0x1c51('0x4'))[_0x1c51('0x5')];var safeTemplate=require('./safe-template')[_0x1c51('0x6')];var maskSensitiveData=require(_0x1c51('0x7'))[_0x1c51('0x8')];function ClientSideLogger(){function _0x1ee7c8(_0x542819){var _0x3180f3=path[_0x1c51('0x9')]('/var',_0x1c51('0xa'),_0x1c51('0xb'));var _0x26186e=path[_0x1c51('0x9')](_0x1c51('0xc'),_0x542819['role']+'-'+_0x542819[_0x1c51('0xd')]);return fs[_0x1c51('0xe')](path[_0x1c51('0x9')](_0x3180f3,_0x26186e))['then'](function(){var _0x3aba16=fileLogger(_0x1c51('0xc'),path[_0x1c51('0x9')](_0x3180f3,_0x26186e));return _0x3aba16;})[_0x1c51('0xf')](function(_0x886ec6){throw _0x886ec6;});}this[_0x1c51('0xa')]=function(_0x56099c,_0x282b95,_0xc27420,_0xd02905){return _0x1ee7c8(_0x56099c[_0x1c51('0x10')])[_0x1c51('0x11')](function(_0x1e4ca8){var _0x26eb68=_0x1e4ca8[_0x282b95];return _0x26eb68;})['then'](function(_0xd43f68){var _0x1466b8=_0x56099c['user']?_0x56099c['user']['id']:_0x1c51('0x12');var _0x4c1d00=_0xd02905[_0x1c51('0x13')];var _0x3563a4=_0xd02905['timestamp'];var _0x55e977=new Date(Number(_0x3563a4));return _0xd43f68(_0x1466b8,_0x55e977,_0xc27420,_0x4c1d00);})['catch'](function(_0x50eab3){fileLogger('client')[_0x1c51('0x14')](_0x50eab3);});};}function setupLoggers(_0x110a5d){return new Promise(function(_0x41d8a4){var _0x357385=new ClientSideLogger();var _0xeef32a=fileLogger('api');var _0x20e71d=fileLogger(_0x1c51('0x15'));_0x110a5d[_0x1c51('0x16')](_0x1c51('0x17'),_0x357385);_0x110a5d[_0x1c51('0x18')](ewinston[_0x1c51('0x19')]({'winstonInstance':_0xeef32a,'meta':![],'statusLevels':!![],'msg':function(_0x4d4317,_0x420d98){var _0xa60ae0='%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s';if(!_['isEmpty'](_0x4d4317[_0x1c51('0x1a')])){_0xa60ae0+='\x20body=%s';var _0x18477a=_0x4d4317[_0x1c51('0x1a')];maskSensitiveData(_0x18477a);}return safeTemplate(util[_0x1c51('0x1b')](_0xa60ae0,_0x4d4317['method'],_0x4d4317[_0x1c51('0x1c')][_0x1c51('0x1d')]?_0x4d4317[_0x1c51('0x1c')]['x-forwarded-for']:_0x4d4317['connection'][_0x1c51('0x1e')]||_0x4d4317['ip'],_0x4d4317[_0x1c51('0x1f')],_0x420d98[_0x1c51('0x20')],_0x420d98[_0x1c51('0x21')],_0x4d4317[_0x1c51('0x10')]?_0x4d4317[_0x1c51('0x10')]['id']:null,_0x4d4317['user']?_0x4d4317['user'][_0x1c51('0xd')]:null,_0x4d4317['user']?_0x4d4317[_0x1c51('0x10')][_0x1c51('0x22')]:null,_0x18477a?util[_0x1c51('0x23')](_0x18477a,![],null):''));}}));_0x110a5d['use'](ewinston[_0x1c51('0x19')]({'winstonInstance':_0x20e71d,'meta':![],'statusLevels':!![],'msg':function(_0x483ec8,_0x4eb1b2){var _0x36b46b=_0x1c51('0x24');if(_0x483ec8[_0x1c51('0x1a')]&&_0x483ec8[_0x1c51('0x1a')][_0x1c51('0x25')]&&_0x483ec8['body'][_0x1c51('0x26')]){_0x36b46b='%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s\x20(id=%s\x20name=%s)';}return util[_0x1c51('0x1b')](_0x36b46b,_0x483ec8['method'],_0x483ec8[_0x1c51('0x1c')][_0x1c51('0x1d')]?_0x483ec8[_0x1c51('0x1c')][_0x1c51('0x1d')]:_0x483ec8['connection'][_0x1c51('0x1e')]||_0x483ec8['ip'],_0x483ec8[_0x1c51('0x1f')],_0x4eb1b2['statusCode'],_0x4eb1b2[_0x1c51('0x21')],_0x483ec8['user']?_0x483ec8[_0x1c51('0x10')]['id']:null,_0x483ec8[_0x1c51('0x10')]?_0x483ec8[_0x1c51('0x10')][_0x1c51('0xd')]:null,_0x483ec8[_0x1c51('0x10')]?_0x483ec8[_0x1c51('0x10')][_0x1c51('0x22')]:null,_0x483ec8[_0x1c51('0x1a')]&&_0x483ec8[_0x1c51('0x1a')]['device']?_0x483ec8[_0x1c51('0x1a')]['device']:'other',_0x483ec8[_0x1c51('0x1a')]&&_0x483ec8[_0x1c51('0x1a')][_0x1c51('0x26')]?_0x483ec8[_0x1c51('0x1a')]['agent_id']:'',_0x483ec8[_0x1c51('0x1a')]&&_0x483ec8[_0x1c51('0x1a')]['agent_name']?_0x483ec8[_0x1c51('0x1a')][_0x1c51('0x27')]:'');},'ignoreRoute':function(_0x5b5521){var _0x45a648=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0x45a648['test'](_0x5b5521['url']);}}));return _0x41d8a4();});}exports[_0x1c51('0x28')]=setupLoggers;
\ No newline at end of file
index 4efe3ff..6f06c9a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc2bd=['indexOf','slice','concat','exports','circularDoWInterval','monthsShort','circularMonthInterval','clone','hours','minutes','isBefore','startOf','day','isBetween','timeCompare','format','ddd','includes','dowCompare','date','daysInMonth','max','min','domCompare','MMM','monthCompare','guess','test','isMoment','padStart','length','lodash','moment-timezone','map','source','Interval\x20string\x20not\x20valid','Date\x20not\x20valid','split','locale','weekdaysShort','toLowerCase'];(function(_0x58220b,_0x502089){var _0x2125a6=function(_0x41ab7d){while(--_0x41ab7d){_0x58220b['push'](_0x58220b['shift']());}};_0x2125a6(++_0x502089);}(_0xc2bd,0x13e));var _0xdc2b=function(_0xf6c032,_0x3515ad){_0xf6c032=_0xf6c032-0x0;var _0x5da177=_0xc2bd[_0xf6c032];return _0x5da177;};var _=require(_0xdc2b('0x0'));var moment=require(_0xdc2b('0x1'));var timeRx=/(\*|(\d{1,2}:\d{1,2})(-(\d{1,2}:\d{1,2}))?)/;var dowRx=/(\*|((sun|mon|tue|wed|thu|fri|sat)(-(sun|mon|tue|wed|thu|fri|sat))?))/;var domRx=/(\*|(\d{1,2})(-(\d{1,2}))?)/;var moyRx=/(\*|(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)(-(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec))?)/;var globalRx=[timeRx,dowRx,domRx,moyRx][_0xdc2b('0x2')](function(_0x491c7f){return _0x491c7f[_0xdc2b('0x3')];})['join'](',');var validateRx=new RegExp('^'+globalRx+'$');var EINVALID_STRING=_0xdc2b('0x4');var EINVALID_DATE=_0xdc2b('0x5');function throwIfDateNotValid(_0x4f6795){if(!_0x4f6795['isValid']()){throw new Error(EINVALID_DATE);}}function extractTime(_0x5cc7b5){var _0x2f8d7c=_0x5cc7b5[_0xdc2b('0x6')](':')[_0xdc2b('0x2')](function(_0x3042de){return parseInt(_0x3042de,0xa);});var _0x3cc44f=_0x2f8d7c[0x0];var _0x5e66f1=_0x2f8d7c[0x1];if(_0x3cc44f<0x0||_0x3cc44f>0x17||_0x5e66f1<0x0||_0x5e66f1>0x3b){throw new Error(EINVALID_DATE);}return[_0x3cc44f,_0x5e66f1];}function circularDoWInterval(_0x8b140,_0x21fa32){if(_0x8b140===_0x21fa32){return[_0x8b140];}else{var _0x7f2876=moment[_0xdc2b('0x7')]();moment[_0xdc2b('0x7')]('en');var _0x59aafc=moment[_0xdc2b('0x8')]()['map'](function(_0x42b8fd){return _0x42b8fd[_0xdc2b('0x9')]();});moment[_0xdc2b('0x7')](_0x7f2876);var _0x3e53a1=_0x59aafc['indexOf'](_0x8b140);var _0x1739b2=_0x59aafc[_0xdc2b('0xa')](_0x21fa32);if(_0x1739b2>_0x3e53a1){return _0x59aafc['slice'](_0x3e53a1,_0x1739b2+0x1);}else{var _0x52fcdf=_0x59aafc[_0xdc2b('0xb')](0x0,_0x1739b2+0x1);var _0x31ee7f=_0x59aafc[_0xdc2b('0xb')](_0x3e53a1);return _0x31ee7f[_0xdc2b('0xc')](_0x52fcdf);}}}module[_0xdc2b('0xd')][_0xdc2b('0xe')]=circularDoWInterval;function circularMonthInterval(_0x431fb1,_0x2bf8dc){if(_0x431fb1===_0x2bf8dc){return[_0x431fb1];}else{var _0x44ac59=moment[_0xdc2b('0x7')]();moment[_0xdc2b('0x7')]('en');var _0x4d76b9=moment[_0xdc2b('0xf')]()[_0xdc2b('0x2')](function(_0x18b566){return _0x18b566['toLowerCase']();});moment[_0xdc2b('0x7')](_0x44ac59);var _0x181e8b=_0x4d76b9[_0xdc2b('0xa')](_0x431fb1);var _0x29d1b0=_0x4d76b9[_0xdc2b('0xa')](_0x2bf8dc);if(_0x29d1b0>_0x181e8b){return _0x4d76b9[_0xdc2b('0xb')](_0x181e8b,_0x29d1b0+0x1);}else{var _0xc102f0=_0x4d76b9['slice'](0x0,_0x29d1b0+0x1);var _0x26bd9b=_0x4d76b9[_0xdc2b('0xb')](_0x181e8b);return _0x26bd9b[_0xdc2b('0xc')](_0xc102f0);}}}module[_0xdc2b('0xd')][_0xdc2b('0x10')]=circularMonthInterval;function parseDom(_0x487036){var _0x67b6f=parseInt(_0x487036,0xa);if(_0x67b6f<0x1||_0x67b6f>0x1f){throw new Error(EINVALID_DATE);}return _0x67b6f;}function timeCompare(_0x5e5f8a,_0x2d7ac0,_0xf2b8ad){var _0x11c4da=_0x5e5f8a[_0xdc2b('0x11')]();var _0x2d0374=extractTime(_0x2d7ac0);var _0x189396=_0x2d0374[0x0];var _0x226786=_0x2d0374[0x1];var _0x137069=_0x5e5f8a[_0xdc2b('0x11')]()[_0xdc2b('0x12')](_0x189396)[_0xdc2b('0x13')](_0x226786);throwIfDateNotValid(_0x137069);var _0x55c1f4=extractTime(_0xf2b8ad);var _0x457ace=_0x55c1f4[0x0];var _0x38d4ef=_0x55c1f4[0x1];var _0x337ec0=_0x5e5f8a['clone']()[_0xdc2b('0x12')](_0x457ace)['minutes'](_0x38d4ef);throwIfDateNotValid(_0x337ec0);if(_0x337ec0[_0xdc2b('0x14')](_0x137069)){var _0x1922be=_0x11c4da[_0xdc2b('0x11')]()[_0xdc2b('0x15')]('day');var _0x1b6fb8=_0x11c4da[_0xdc2b('0x11')]()['endOf'](_0xdc2b('0x16'));return _0x11c4da[_0xdc2b('0x17')](_0x137069,_0x1b6fb8,undefined,'[]')||_0x11c4da[_0xdc2b('0x17')](_0x1922be,_0x337ec0,undefined,'[]');}else{return _0x11c4da[_0xdc2b('0x17')](_0x137069,_0x337ec0,undefined,'[]');}}module[_0xdc2b('0xd')][_0xdc2b('0x18')]=timeCompare;function dowCompare(_0x4d08e6,_0x3646d9,_0x31a8c0){var _0xc7a89d=_0x4d08e6[_0xdc2b('0x7')]('en')[_0xdc2b('0x19')](_0xdc2b('0x1a'))[_0xdc2b('0x9')]();return circularDoWInterval(_0x3646d9,_0x31a8c0)[_0xdc2b('0x1b')](_0xc7a89d);}module['exports'][_0xdc2b('0x1c')]=dowCompare;function domCompare(_0x336a70,_0x1f5403,_0x547340){var _0x448a97=_0x336a70[_0xdc2b('0x1d')]();if(_0x1f5403===_0x547340){return _0x448a97===_0x1f5403;}else{var _0x45771d=_0x336a70[_0xdc2b('0x1e')]();var _0x160314=_0x1f5403<_0x547340;let _0x37767d=![];var _0x4eae6b=0x0;var _0xbdf53a=0x0;if(_0x160314){_0x4eae6b=Math[_0xdc2b('0x1f')](0x1,_0x1f5403);_0xbdf53a=Math[_0xdc2b('0x20')](_0x547340,_0x45771d);_0x37767d=_0x448a97>=_0x4eae6b&&_0x448a97<=_0xbdf53a;}else{_0x4eae6b=Math[_0xdc2b('0x20')](_0x1f5403,_0x45771d);_0xbdf53a=Math['max'](0x1,_0x547340);_0x37767d=_0x448a97>=_0x4eae6b||_0x448a97<=_0xbdf53a;}return _0x37767d;}}module[_0xdc2b('0xd')][_0xdc2b('0x21')]=domCompare;function monthCompare(_0x19b3c5,_0x5ea14f,_0x454bb2){var _0x5379a8=_0x19b3c5['locale']('en')[_0xdc2b('0x19')](_0xdc2b('0x22'))[_0xdc2b('0x9')]();return circularMonthInterval(_0x5ea14f,_0x454bb2)['includes'](_0x5379a8);}module[_0xdc2b('0xd')][_0xdc2b('0x23')]=monthCompare;function iftime(_0x438695,_0x356ca7=moment['tz'][_0xdc2b('0x24')](),_0x54b7d0=moment()){if(!validateRx[_0xdc2b('0x25')](_0x438695)){throw new Error(EINVALID_STRING);}else{var _0x13eafe=(moment[_0xdc2b('0x26')](_0x54b7d0)?_0x54b7d0['clone']():moment(_0x54b7d0))['tz'](_0x356ca7)[_0xdc2b('0x7')]('en');throwIfDateNotValid(_0x13eafe);var _0x32e639=_0x438695[_0xdc2b('0x6')](',');var _0x1a3d09=_0x32e639[0x0];var _0x43f713=_0x32e639[0x1];var _0x25d81c=_0x32e639[0x2];var _0x12800a=_0x32e639[0x3];let _0x3e21ea=!![];if(_0x1a3d09!=='*'){var _0x54a6de=_0x1a3d09[_0xdc2b('0x6')]('-');var _0x48be1=_[_0xdc2b('0x27')](_0x54a6de[0x0],0x5,'0');var _0x39e602=_0x54a6de[_0xdc2b('0x28')]===0x2?_['padStart'](_0x54a6de[0x1],0x5,'0'):_0x48be1;_0x3e21ea=timeCompare(_0x13eafe,_0x48be1,_0x39e602);}let _0x48cfa9=!![];if(_0x43f713!=='*'){var _0x261b57=_0x43f713[_0xdc2b('0x6')]('-');var _0x53a977=_0x261b57[0x0];var _0x2ca6ab=_0x261b57[_0xdc2b('0x28')]===0x2?_0x261b57[0x1]:_0x53a977;_0x48cfa9=dowCompare(_0x13eafe,_0x53a977,_0x2ca6ab);}let _0x49e50a=!![];if(_0x25d81c!=='*'){var _0x48fb2a=_0x25d81c[_0xdc2b('0x6')]('-');var _0x16438a=parseDom(_0x48fb2a[0x0]);var _0x49cd32=_0x48fb2a[_0xdc2b('0x28')]===0x2?parseDom(_0x48fb2a[0x1]):_0x16438a;_0x49e50a=domCompare(_0x13eafe,_0x16438a,_0x49cd32);}let _0x3546d1=!![];if(_0x12800a!=='*'){var _0x20c949=_0x12800a['split']('-');var _0x35ef0d=_0x20c949[0x0];var _0x3de325=_0x20c949[_0xdc2b('0x28')]===0x2?_0x20c949[0x1]:_0x20c949[0x0];_0x3546d1=monthCompare(_0x13eafe,_0x35ef0d,_0x3de325);}return _0x3e21ea&&_0x48cfa9&&_0x49e50a&&_0x3546d1;}}module['exports']['iftime']=iftime;
\ No newline at end of file
+var _0x43f5=['concat','circularMonthInterval','clone','hours','minutes','isBefore','startOf','day','endOf','isBetween','timeCompare','format','dowCompare','date','max','min','domCompare','includes','test','isMoment','padStart','length','moment-timezone','source','join','Interval\x20string\x20not\x20valid','Date\x20not\x20valid','isValid','split','map','locale','weekdaysShort','toLowerCase','indexOf','slice','exports','circularDoWInterval','monthsShort'];(function(_0x55d08e,_0x40b932){var _0x4009ea=function(_0x3afa5c){while(--_0x3afa5c){_0x55d08e['push'](_0x55d08e['shift']());}};_0x4009ea(++_0x40b932);}(_0x43f5,0x16c));var _0x543f=function(_0x178e48,_0x3c9509){_0x178e48=_0x178e48-0x0;var _0x440d7e=_0x43f5[_0x178e48];return _0x440d7e;};var _=require('lodash');var moment=require(_0x543f('0x0'));var timeRx=/(\*|(\d{1,2}:\d{1,2})(-(\d{1,2}:\d{1,2}))?)/;var dowRx=/(\*|((sun|mon|tue|wed|thu|fri|sat)(-(sun|mon|tue|wed|thu|fri|sat))?))/;var domRx=/(\*|(\d{1,2})(-(\d{1,2}))?)/;var moyRx=/(\*|(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)(-(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec))?)/;var globalRx=[timeRx,dowRx,domRx,moyRx]['map'](function(_0x29bdc9){return _0x29bdc9[_0x543f('0x1')];})[_0x543f('0x2')](',');var validateRx=new RegExp('^'+globalRx+'$');var EINVALID_STRING=_0x543f('0x3');var EINVALID_DATE=_0x543f('0x4');function throwIfDateNotValid(_0x569ff9){if(!_0x569ff9[_0x543f('0x5')]()){throw new Error(EINVALID_DATE);}}function extractTime(_0x481241){var _0x517cf6=_0x481241[_0x543f('0x6')](':')[_0x543f('0x7')](function(_0x44043a){return parseInt(_0x44043a,0xa);});var _0x4f09ed=_0x517cf6[0x0];var _0x400b8b=_0x517cf6[0x1];if(_0x4f09ed<0x0||_0x4f09ed>0x17||_0x400b8b<0x0||_0x400b8b>0x3b){throw new Error(EINVALID_DATE);}return[_0x4f09ed,_0x400b8b];}function circularDoWInterval(_0x3110d7,_0x5bcefa){if(_0x3110d7===_0x5bcefa){return[_0x3110d7];}else{var _0x26a878=moment[_0x543f('0x8')]();moment[_0x543f('0x8')]('en');var _0x382a06=moment[_0x543f('0x9')]()['map'](function(_0x23282e){return _0x23282e[_0x543f('0xa')]();});moment['locale'](_0x26a878);var _0x3a3214=_0x382a06['indexOf'](_0x3110d7);var _0x492e29=_0x382a06[_0x543f('0xb')](_0x5bcefa);if(_0x492e29>_0x3a3214){return _0x382a06[_0x543f('0xc')](_0x3a3214,_0x492e29+0x1);}else{var _0x25a3be=_0x382a06['slice'](0x0,_0x492e29+0x1);var _0x2fa5d7=_0x382a06[_0x543f('0xc')](_0x3a3214);return _0x2fa5d7['concat'](_0x25a3be);}}}module[_0x543f('0xd')][_0x543f('0xe')]=circularDoWInterval;function circularMonthInterval(_0x561687,_0x3c2058){if(_0x561687===_0x3c2058){return[_0x561687];}else{var _0x39e6bd=moment[_0x543f('0x8')]();moment[_0x543f('0x8')]('en');var _0xb888bd=moment[_0x543f('0xf')]()[_0x543f('0x7')](function(_0x3c9fc5){return _0x3c9fc5[_0x543f('0xa')]();});moment[_0x543f('0x8')](_0x39e6bd);var _0xfd8700=_0xb888bd[_0x543f('0xb')](_0x561687);var _0x3e2586=_0xb888bd[_0x543f('0xb')](_0x3c2058);if(_0x3e2586>_0xfd8700){return _0xb888bd[_0x543f('0xc')](_0xfd8700,_0x3e2586+0x1);}else{var _0x6b959c=_0xb888bd[_0x543f('0xc')](0x0,_0x3e2586+0x1);var _0x44babd=_0xb888bd[_0x543f('0xc')](_0xfd8700);return _0x44babd[_0x543f('0x10')](_0x6b959c);}}}module['exports'][_0x543f('0x11')]=circularMonthInterval;function parseDom(_0x285fea){var _0x48f37c=parseInt(_0x285fea,0xa);if(_0x48f37c<0x1||_0x48f37c>0x1f){throw new Error(EINVALID_DATE);}return _0x48f37c;}function timeCompare(_0x552719,_0x1f14c4,_0x45c613){var _0x2ae288=_0x552719[_0x543f('0x12')]();var _0x2c10d5=extractTime(_0x1f14c4);var _0x1e83ee=_0x2c10d5[0x0];var _0x5eaf49=_0x2c10d5[0x1];var _0x51359c=_0x552719[_0x543f('0x12')]()[_0x543f('0x13')](_0x1e83ee)['minutes'](_0x5eaf49);throwIfDateNotValid(_0x51359c);var _0x97611d=extractTime(_0x45c613);var _0x521050=_0x97611d[0x0];var _0x4a0d1b=_0x97611d[0x1];var _0x193949=_0x552719[_0x543f('0x12')]()[_0x543f('0x13')](_0x521050)[_0x543f('0x14')](_0x4a0d1b);throwIfDateNotValid(_0x193949);if(_0x193949[_0x543f('0x15')](_0x51359c)){var _0x38d08b=_0x2ae288['clone']()[_0x543f('0x16')](_0x543f('0x17'));var _0x55ce72=_0x2ae288[_0x543f('0x12')]()[_0x543f('0x18')](_0x543f('0x17'));return _0x2ae288[_0x543f('0x19')](_0x51359c,_0x55ce72,undefined,'[]')||_0x2ae288['isBetween'](_0x38d08b,_0x193949,undefined,'[]');}else{return _0x2ae288['isBetween'](_0x51359c,_0x193949,undefined,'[]');}}module[_0x543f('0xd')][_0x543f('0x1a')]=timeCompare;function dowCompare(_0x78c685,_0x5d8fb9,_0x4d507f){var _0x2af5be=_0x78c685[_0x543f('0x8')]('en')[_0x543f('0x1b')]('ddd')[_0x543f('0xa')]();return circularDoWInterval(_0x5d8fb9,_0x4d507f)['includes'](_0x2af5be);}module[_0x543f('0xd')][_0x543f('0x1c')]=dowCompare;function domCompare(_0x3cacd9,_0xf5459d,_0x2073f1){var _0x1cd7a8=_0x3cacd9[_0x543f('0x1d')]();if(_0xf5459d===_0x2073f1){return _0x1cd7a8===_0xf5459d;}else{var _0x1ab94b=_0x3cacd9['daysInMonth']();var _0x51d2f8=_0xf5459d<_0x2073f1;let _0x5e319f=![];var _0x39bda3=0x0;var _0x16fa01=0x0;if(_0x51d2f8){_0x39bda3=Math[_0x543f('0x1e')](0x1,_0xf5459d);_0x16fa01=Math[_0x543f('0x1f')](_0x2073f1,_0x1ab94b);_0x5e319f=_0x1cd7a8>=_0x39bda3&&_0x1cd7a8<=_0x16fa01;}else{_0x39bda3=Math[_0x543f('0x1f')](_0xf5459d,_0x1ab94b);_0x16fa01=Math[_0x543f('0x1e')](0x1,_0x2073f1);_0x5e319f=_0x1cd7a8>=_0x39bda3||_0x1cd7a8<=_0x16fa01;}return _0x5e319f;}}module['exports'][_0x543f('0x20')]=domCompare;function monthCompare(_0x55397f,_0x5a7e39,_0x57e3b1){var _0x4c2de9=_0x55397f['locale']('en')[_0x543f('0x1b')]('MMM')[_0x543f('0xa')]();return circularMonthInterval(_0x5a7e39,_0x57e3b1)[_0x543f('0x21')](_0x4c2de9);}module[_0x543f('0xd')]['monthCompare']=monthCompare;function iftime(_0x1194aa,_0x3a758e=moment['tz']['guess'](),_0x324e69=moment()){if(!validateRx[_0x543f('0x22')](_0x1194aa)){throw new Error(EINVALID_STRING);}else{var _0x4adeaa=(moment[_0x543f('0x23')](_0x324e69)?_0x324e69[_0x543f('0x12')]():moment(_0x324e69))['tz'](_0x3a758e)['locale']('en');throwIfDateNotValid(_0x4adeaa);var _0x1e02eb=_0x1194aa['split'](',');var _0xef894a=_0x1e02eb[0x0];var _0x54a3a9=_0x1e02eb[0x1];var _0x5873c5=_0x1e02eb[0x2];var _0x1338f8=_0x1e02eb[0x3];let _0x17f5aa=!![];if(_0xef894a!=='*'){var _0x16c6fe=_0xef894a[_0x543f('0x6')]('-');var _0x575594=_[_0x543f('0x24')](_0x16c6fe[0x0],0x5,'0');var _0x33730c=_0x16c6fe[_0x543f('0x25')]===0x2?_['padStart'](_0x16c6fe[0x1],0x5,'0'):_0x575594;_0x17f5aa=timeCompare(_0x4adeaa,_0x575594,_0x33730c);}let _0xd67a4e=!![];if(_0x54a3a9!=='*'){var _0x464795=_0x54a3a9[_0x543f('0x6')]('-');var _0x4c427c=_0x464795[0x0];var _0x469fde=_0x464795[_0x543f('0x25')]===0x2?_0x464795[0x1]:_0x4c427c;_0xd67a4e=dowCompare(_0x4adeaa,_0x4c427c,_0x469fde);}let _0x1901f0=!![];if(_0x5873c5!=='*'){var _0x34ce42=_0x5873c5[_0x543f('0x6')]('-');var _0x10970b=parseDom(_0x34ce42[0x0]);var _0x361332=_0x34ce42[_0x543f('0x25')]===0x2?parseDom(_0x34ce42[0x1]):_0x10970b;_0x1901f0=domCompare(_0x4adeaa,_0x10970b,_0x361332);}let _0x713f3f=!![];if(_0x1338f8!=='*'){var _0x2dcca9=_0x1338f8[_0x543f('0x6')]('-');var _0x53e8d4=_0x2dcca9[0x0];var _0x3b46b6=_0x2dcca9[_0x543f('0x25')]===0x2?_0x2dcca9[0x1]:_0x2dcca9[0x0];_0x713f3f=monthCompare(_0x4adeaa,_0x53e8d4,_0x3b46b6);}return _0x17f5aa&&_0xd67a4e&&_0x1901f0&&_0x713f3f;}}module['exports']['iftime']=iftime;
\ No newline at end of file
index a91da9f..cdefd38 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb8d=['addColors','/var/log/xcally','join','format','%s-%s.log','message','replace','}}}','[%s]\x20[%s]\x20%s\x20-\x20%s','YYYY-MM-DD\x20HH:mm:ss','level','toUpperCase','{{{','meta','keys','length','[%s]\x20[%s]\x20%s\x20-\x20%s\x20%s','Logger','warn','transports','File','%s-%s','error','Console','fileLogger','path','util','moment','debugLevel','toLowerCase','info','redBG\x20white','red','bold\x20yellow','white','bold\x20white','bold\x20green','gray','bold\x20magenta','bold\x20cyan'];(function(_0x3e3e70,_0x281ac2){var _0xb363c9=function(_0x56ce17){while(--_0x56ce17){_0x3e3e70['push'](_0x3e3e70['shift']());}};_0xb363c9(++_0x281ac2);}(_0xbb8d,0x109));var _0xdbb8=function(_0x46bcfa,_0x201ae5){_0x46bcfa=_0x46bcfa-0x0;var _0x2d15e4=_0xbb8d[_0x46bcfa];return _0x2d15e4;};'use strict';var path=require(_0xdbb8('0x0'));var util=require(_0xdbb8('0x1'));var moment=require(_0xdbb8('0x2'));var winston=require('winston');var config=require('../config/environment');var debugLevel=config['debugLevel']?config[_0xdbb8('0x3')][_0xdbb8('0x4')]():_0xdbb8('0x5');var XC_LOG_LEVELS={'fatal':0x0,'error':0x0,'warn':0x1,'info':0x2,'print':0x2,'success':0x2,'http':0x3,'verbose':0x4,'debug':0x5,'silly':0x6};var XC_LOG_COLORS={'fatal':_0xdbb8('0x6'),'error':_0xdbb8('0x7'),'warn':_0xdbb8('0x8'),'info':_0xdbb8('0x9'),'print':_0xdbb8('0xa'),'success':_0xdbb8('0xb'),'http':_0xdbb8('0xc'),'verbose':_0xdbb8('0xd'),'debug':'bold\x20blue','silly':_0xdbb8('0xe')};winston[_0xdbb8('0xf')](XC_LOG_COLORS);function getLogFileName(_0x6f732a,_0x1d8d5d,_0x263486){var _0x47fb9a=_0x6f732a||_0xdbb8('0x10');return path[_0xdbb8('0x11')](_0x47fb9a,util[_0xdbb8('0x12')](_0xdbb8('0x13'),_0x1d8d5d,_0x263486));}function formatter(_0x30da5a,_0x2cc2ed){_0x2cc2ed[_0xdbb8('0x14')]=_0x2cc2ed[_0xdbb8('0x14')][_0xdbb8('0x15')](/@@{/g,'{{{')[_0xdbb8('0x15')](/}@@/g,_0xdbb8('0x16'))[_0xdbb8('0x15')](/@{/g,'{{')[_0xdbb8('0x15')](/}@/g,'}}');return util['format'](_0xdbb8('0x17'),moment()[_0xdbb8('0x12')](_0xdbb8('0x18')),_0x2cc2ed[_0xdbb8('0x19')][_0xdbb8('0x1a')](),_0x30da5a,_0x2cc2ed['message']);}function fileFormat(_0x11b7b5,_0xf0eda9){_0xf0eda9[_0xdbb8('0x14')]=_0xf0eda9[_0xdbb8('0x14')][_0xdbb8('0x15')](/@@{/g,_0xdbb8('0x1b'))[_0xdbb8('0x15')](/}@@/g,_0xdbb8('0x16'))[_0xdbb8('0x15')](/@{/g,'{{')[_0xdbb8('0x15')](/}@/g,'}}');var _0x419ab9=_0xf0eda9[_0xdbb8('0x1c')]&&Object[_0xdbb8('0x1d')](_0xf0eda9[_0xdbb8('0x1c')])[_0xdbb8('0x1e')]?'\x0a\x09'+JSON['stringify'](_0xf0eda9[_0xdbb8('0x1c')]):'';return util[_0xdbb8('0x12')](_0xdbb8('0x1f'),moment()[_0xdbb8('0x12')](_0xdbb8('0x18')),_0xf0eda9['level']['toUpperCase'](),_0x11b7b5,_0xf0eda9[_0xdbb8('0x14')],_0x419ab9);}function consoleLogger(){var _0x185843=new winston[(_0xdbb8('0x20'))]({'levels':XC_LOG_LEVELS,'transports':[new winston['transports']['Console']({'level':_0xdbb8('0x21'),'json':![],'formatter':function(_0x45606d){return formatter('',_0x45606d);}})]});return _0x185843;}function fileLogger(_0x127de5,_0x181f35){var _0x12ad08=new winston[(_0xdbb8('0x20'))]({'levels':XC_LOG_LEVELS,'transports':[new winston[(_0xdbb8('0x22'))][(_0xdbb8('0x23'))]({'name':util[_0xdbb8('0x12')](_0xdbb8('0x24'),_0x127de5,'error'),'filename':getLogFileName(_0x181f35,_0x127de5,_0xdbb8('0x25')),'level':_0xdbb8('0x25'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x48552a){return fileFormat(_0x127de5,_0x48552a);}}),new winston['transports']['File']({'name':util[_0xdbb8('0x12')](_0xdbb8('0x24'),_0x127de5,debugLevel),'filename':getLogFileName(_0x181f35,_0x127de5,debugLevel),'level':debugLevel,'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x1b66cb){return fileFormat(_0x127de5,_0x1b66cb);}}),new winston[(_0xdbb8('0x22'))][(_0xdbb8('0x26'))]({'level':_0xdbb8('0x21'),'json':![],'formatter':function(_0x298745){return fileFormat(_0x127de5,_0x298745);}})]});return _0x12ad08;}exports['consoleLogger']=consoleLogger;exports[_0xdbb8('0x27')]=fileLogger;
\ No newline at end of file
+var _0x3aef=['}}}','[%s]\x20[%s]\x20%s\x20-\x20%s','YYYY-MM-DD\x20HH:mm:ss','level','toUpperCase','{{{','keys','meta','stringify','[%s]\x20[%s]\x20%s\x20-\x20%s\x20%s','Logger','transports','Console','warn','File','%s-%s','error','fileLogger','util','winston','debugLevel','toLowerCase','info','red','bold\x20yellow','white','bold\x20white','bold\x20green','gray','bold\x20magenta','bold\x20blue','bold\x20cyan','addColors','/var/log/xcally','join','format','%s-%s.log','message','replace'];(function(_0x7ccf85,_0x581539){var _0x41ea13=function(_0x9ca9cf){while(--_0x9ca9cf){_0x7ccf85['push'](_0x7ccf85['shift']());}};_0x41ea13(++_0x581539);}(_0x3aef,0x198));var _0xf3ae=function(_0x3eb0fa,_0x94c029){_0x3eb0fa=_0x3eb0fa-0x0;var _0xd95baf=_0x3aef[_0x3eb0fa];return _0xd95baf;};'use strict';var path=require('path');var util=require(_0xf3ae('0x0'));var moment=require('moment');var winston=require(_0xf3ae('0x1'));var config=require('../config/environment');var debugLevel=config[_0xf3ae('0x2')]?config['debugLevel'][_0xf3ae('0x3')]():_0xf3ae('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':'redBG\x20white','error':_0xf3ae('0x5'),'warn':_0xf3ae('0x6'),'info':_0xf3ae('0x7'),'print':_0xf3ae('0x8'),'success':_0xf3ae('0x9'),'http':_0xf3ae('0xa'),'verbose':_0xf3ae('0xb'),'debug':_0xf3ae('0xc'),'silly':_0xf3ae('0xd')};winston[_0xf3ae('0xe')](XC_LOG_COLORS);function getLogFileName(_0x49bb57,_0x51b273,_0x5e52d8){var _0x3360f0=_0x49bb57||_0xf3ae('0xf');return path[_0xf3ae('0x10')](_0x3360f0,util[_0xf3ae('0x11')](_0xf3ae('0x12'),_0x51b273,_0x5e52d8));}function formatter(_0x2e37f5,_0x11aecc){_0x11aecc[_0xf3ae('0x13')]=_0x11aecc[_0xf3ae('0x13')]['replace'](/@@{/g,'{{{')[_0xf3ae('0x14')](/}@@/g,_0xf3ae('0x15'))['replace'](/@{/g,'{{')['replace'](/}@/g,'}}');return util[_0xf3ae('0x11')](_0xf3ae('0x16'),moment()[_0xf3ae('0x11')](_0xf3ae('0x17')),_0x11aecc[_0xf3ae('0x18')][_0xf3ae('0x19')](),_0x2e37f5,_0x11aecc[_0xf3ae('0x13')]);}function fileFormat(_0x3b3227,_0xd3b1d6){_0xd3b1d6[_0xf3ae('0x13')]=_0xd3b1d6[_0xf3ae('0x13')][_0xf3ae('0x14')](/@@{/g,_0xf3ae('0x1a'))['replace'](/}@@/g,_0xf3ae('0x15'))['replace'](/@{/g,'{{')['replace'](/}@/g,'}}');var _0x412fe4=_0xd3b1d6['meta']&&Object[_0xf3ae('0x1b')](_0xd3b1d6[_0xf3ae('0x1c')])['length']?'\x0a\x09'+JSON[_0xf3ae('0x1d')](_0xd3b1d6['meta']):'';return util['format'](_0xf3ae('0x1e'),moment()[_0xf3ae('0x11')](_0xf3ae('0x17')),_0xd3b1d6[_0xf3ae('0x18')][_0xf3ae('0x19')](),_0x3b3227,_0xd3b1d6[_0xf3ae('0x13')],_0x412fe4);}function consoleLogger(){var _0x5a00c5=new winston[(_0xf3ae('0x1f'))]({'levels':XC_LOG_LEVELS,'transports':[new winston[(_0xf3ae('0x20'))][(_0xf3ae('0x21'))]({'level':_0xf3ae('0x22'),'json':![],'formatter':function(_0x389542){return formatter('',_0x389542);}})]});return _0x5a00c5;}function fileLogger(_0x20a2c5,_0x18c6ad){var _0x2148e9=new winston[(_0xf3ae('0x1f'))]({'levels':XC_LOG_LEVELS,'transports':[new winston[(_0xf3ae('0x20'))][(_0xf3ae('0x23'))]({'name':util[_0xf3ae('0x11')](_0xf3ae('0x24'),_0x20a2c5,_0xf3ae('0x25')),'filename':getLogFileName(_0x18c6ad,_0x20a2c5,_0xf3ae('0x25')),'level':_0xf3ae('0x25'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x4305b3){return fileFormat(_0x20a2c5,_0x4305b3);}}),new winston[(_0xf3ae('0x20'))][(_0xf3ae('0x23'))]({'name':util[_0xf3ae('0x11')](_0xf3ae('0x24'),_0x20a2c5,debugLevel),'filename':getLogFileName(_0x18c6ad,_0x20a2c5,debugLevel),'level':debugLevel,'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x541f9c){return fileFormat(_0x20a2c5,_0x541f9c);}}),new winston['transports'][(_0xf3ae('0x21'))]({'level':_0xf3ae('0x22'),'json':![],'formatter':function(_0x3ab197){return fileFormat(_0x20a2c5,_0x3ab197);}})]});return _0x2148e9;}exports['consoleLogger']=consoleLogger;exports[_0xf3ae('0x26')]=fileLogger;
\ No newline at end of file
index 8e09460..5008357 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0295=['length','isString','replace','}@@','includes','exports','lodash','newPassword','lastName','street','phone','mobile','fax','email','clientId','clientSecret','securityToken','token','accessToken','authToken','consumerSecret','membername','calleridname','exten','vidaooApiKey','clientEmail','accesskeyid','secretaccesskey','localstationid','dsn','secret','registry','oldPassword','isPlainObject','isArray'];(function(_0x593d89,_0x45145f){var _0x4aa403=function(_0x21f674){while(--_0x21f674){_0x593d89['push'](_0x593d89['shift']());}};_0x4aa403(++_0x45145f);}(_0x0295,0x1f0));var _0x5029=function(_0x21ba39,_0x413046){_0x21ba39=_0x21ba39-0x0;var _0x7a1e4f=_0x0295[_0x21ba39];return _0x7a1e4f;};var _=require(_0x5029('0x0'));var sensitiveFields=['username','password',_0x5029('0x1'),'apiKey','firstName',_0x5029('0x2'),_0x5029('0x3'),_0x5029('0x4'),_0x5029('0x5'),_0x5029('0x6'),_0x5029('0x7'),_0x5029('0x8'),_0x5029('0x9'),_0x5029('0xa'),'code','accessKey','tenantId',_0x5029('0xb'),'channelSecret',_0x5029('0xc'),'accessTokenSecret',_0x5029('0xd'),'consumerKey',_0x5029('0xe'),_0x5029('0xf'),_0x5029('0x10'),'calleridnum',_0x5029('0x11'),_0x5029('0x12'),_0x5029('0x13'),'privateKey',_0x5029('0x14'),_0x5029('0x15'),'key','user','pass','accountSid',_0x5029('0x16'),_0x5029('0x17'),_0x5029('0x18'),_0x5029('0x19'),_0x5029('0x1a')];function maskSensitiveData(_0x11c24b){const _0xe278b7=/(?!^)[\s\S](?!$)/g;if(_[_0x5029('0x1b')](_0x11c24b)){for(const _0x10bf55 in _0x11c24b){if(_[_0x5029('0x1c')](_0x11c24b[_0x10bf55])){for(let _0x457c73=0x0;_0x457c73<_0x11c24b[_0x10bf55][_0x5029('0x1d')];_0x457c73++){maskSensitiveData(_0x11c24b[_0x10bf55][_0x457c73]);}}else if(_[_0x5029('0x1b')](_0x11c24b[_0x10bf55])){maskSensitiveData(_0x11c24b[_0x10bf55]);}else if(_[_0x5029('0x1e')](_0x11c24b[_0x10bf55])){_0x11c24b[_0x10bf55]=_0x11c24b[_0x10bf55][_0x5029('0x1f')](/{{{/g,'@@{')[_0x5029('0x1f')](/}}}/g,_0x5029('0x20'))[_0x5029('0x1f')](/{{/g,'@{')[_0x5029('0x1f')](/}}/g,'}@');if(_[_0x5029('0x21')](sensitiveFields,_0x10bf55)){_0x11c24b[_0x10bf55]=_0x11c24b[_0x10bf55][_0x5029('0x1f')](_0xe278b7,'*');}}}}}module[_0x5029('0x22')]['maskSensitiveData']=maskSensitiveData;
\ No newline at end of file
+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(_0x29851d,_0x1a7baf){var _0x4d142f=function(_0x531542){while(--_0x531542){_0x29851d['push'](_0x29851d['shift']());}};_0x4d142f(++_0x1a7baf);}(_0x2ef3,0xba));var _0x32ef=function(_0x31329f,_0x383920){_0x31329f=_0x31329f-0x0;var _0x234aed=_0x2ef3[_0x31329f];return _0x234aed;};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
index a78d7b5..8414c67 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb03e=['safeTemplate','{\x20{\x20','\x20}\x20}','string','replace','isArray','map','isPlainObject','keys','exports'];(function(_0x2a5467,_0x352009){var _0x38243b=function(_0x4f4e8d){while(--_0x4f4e8d){_0x2a5467['push'](_0x2a5467['shift']());}};_0x38243b(++_0x352009);}(_0xb03e,0x1eb));var _0xeb03=function(_0x50abb6,_0x3a1130){_0x50abb6=_0x50abb6-0x0;var _0x456af6=_0xb03e[_0x50abb6];return _0x456af6;};var _=require('lodash');var mustacheLikeBracketsRx=/(\{|\}){2}/gm;function bracketsReplacer(_0x36351b){return _0x36351b==='{{'?_0xeb03('0x0'):_0xeb03('0x1');}function safeTemplate(_0x3c5e68){var _0x1c58b5=_0x3c5e68;if(typeof _0x3c5e68===_0xeb03('0x2')){_0x1c58b5=_0x3c5e68[_0xeb03('0x3')](mustacheLikeBracketsRx,bracketsReplacer);}else if(Array[_0xeb03('0x4')](_0x3c5e68)){_0x1c58b5=_0x3c5e68[_0xeb03('0x5')](function(_0x3ba4b0){return safeTemplate(_0x3ba4b0);});}else if(_[_0xeb03('0x6')](_0x3c5e68)){_0x1c58b5=Object[_0xeb03('0x7')](_0x3c5e68)['reduce'](function(_0x3b58a2,_0x3d3322){_0x3b58a2[_0x3d3322]=safeTemplate(_0x3c5e68[_0x3d3322]);return _0x3b58a2;},{});}return _0x1c58b5;}module[_0xeb03('0x8')][_0xeb03('0x9')]=safeTemplate;
\ No newline at end of file
+var _0x955f=['map','isPlainObject','keys','reduce','exports','lodash','{\x20{\x20','\x20}\x20}','string'];(function(_0x5cacee,_0x37d3f2){var _0x124f2e=function(_0x3d278d){while(--_0x3d278d){_0x5cacee['push'](_0x5cacee['shift']());}};_0x124f2e(++_0x37d3f2);}(_0x955f,0x1eb));var _0xf955=function(_0xbe734,_0x46d0a8){_0xbe734=_0xbe734-0x0;var _0x536354=_0x955f[_0xbe734];return _0x536354;};var _=require(_0xf955('0x0'));var mustacheLikeBracketsRx=/(\{|\}){2}/gm;function bracketsReplacer(_0x471baa){return _0x471baa==='{{'?_0xf955('0x1'):_0xf955('0x2');}function safeTemplate(_0x2834f7){var _0x585f6e=_0x2834f7;if(typeof _0x2834f7===_0xf955('0x3')){_0x585f6e=_0x2834f7['replace'](mustacheLikeBracketsRx,bracketsReplacer);}else if(Array['isArray'](_0x2834f7)){_0x585f6e=_0x2834f7[_0xf955('0x4')](function(_0x5a20bc){return safeTemplate(_0x5a20bc);});}else if(_[_0xf955('0x5')](_0x2834f7)){_0x585f6e=Object[_0xf955('0x6')](_0x2834f7)[_0xf955('0x7')](function(_0x59d5b3,_0x18432f){_0x59d5b3[_0x18432f]=safeTemplate(_0x2834f7[_0x18432f]);return _0x59d5b3;},{});}return _0x585f6e;}module[_0xf955('0x8')]['safeTemplate']=safeTemplate;
\ No newline at end of file
index 3f0c57a..8765fdf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x393e=['findIndex','name','motion2','env','NODE_PATH','string','readJSON','then','updated','info','Updating\x20app.json','exports','fs-extra','path','root','server/app.json','resolve','legacy-libs','apps'];(function(_0x5f582e,_0x4112b7){var _0x437430=function(_0x393a6b){while(--_0x393a6b){_0x5f582e['push'](_0x5f582e['shift']());}};_0x437430(++_0x4112b7);}(_0x393e,0x175));var _0xe393=function(_0x3070dc,_0x40cf11){_0x3070dc=_0x3070dc-0x0;var _0x431489=_0x393e[_0x3070dc];return _0x431489;};var fs=require(_0xe393('0x0'));var path=require(_0xe393('0x1'));var config=require('../config/environment');var root=config[_0xe393('0x2')];var APP_JSON_PATH=path['resolve'](root,_0xe393('0x3'));var NODEPATH=path[_0xe393('0x4')](root,_0xe393('0x5'));function setLegacyLibsNodeEnvPath(_0x6ad2da){let _0x3038db=![];if(Array['isArray'](_0x6ad2da['apps'])){var _0xb937ab=_0x6ad2da[_0xe393('0x6')][_0xe393('0x7')](function(_0x28be30){return _0x28be30[_0xe393('0x8')]===_0xe393('0x9');});if(_0xb937ab>-0x1){var _0x399f8e=_0x6ad2da[_0xe393('0x6')][_0xb937ab];if(typeof _0x399f8e[_0xe393('0xa')][_0xe393('0xb')]!==_0xe393('0xc')){_0x399f8e['env']['NODE_PATH']=NODEPATH;_0x3038db=!![];}}return{'appConfig':_0x6ad2da,'updated':_0x3038db};}}function updateAppConfig(_0x57c094){return fs['pathExists'](APP_JSON_PATH)['then'](function(_0x5c640c){if(_0x5c640c){return fs[_0xe393('0xd')](APP_JSON_PATH)[_0xe393('0xe')](function(_0x1d9eea){var _0x1cfc94=setLegacyLibsNodeEnvPath(_0x1d9eea);if(_0x1cfc94[_0xe393('0xf')]){_0x57c094[_0xe393('0x10')](_0xe393('0x11'));return fs['writeJSON'](APP_JSON_PATH,_0x1d9eea,{'spaces':0x2});}else{return Promise[_0xe393('0x4')]();}});}else{return Promise[_0xe393('0x4')]();}});}module[_0xe393('0x12')]=updateAppConfig;
\ No newline at end of file
+var _0x9451=['fs-extra','path','../config/environment','root','resolve','server/app.json','legacy-libs','isArray','apps','findIndex','name','motion2','env','NODE_PATH','string','pathExists','then','readJSON','updated','Updating\x20app.json','writeJSON','exports'];(function(_0x410dbe,_0x3cf158){var _0x20dfb1=function(_0x2e8658){while(--_0x2e8658){_0x410dbe['push'](_0x410dbe['shift']());}};_0x20dfb1(++_0x3cf158);}(_0x9451,0xdc));var _0x1945=function(_0xb86618,_0x379810){_0xb86618=_0xb86618-0x0;var _0x446e27=_0x9451[_0xb86618];return _0x446e27;};var fs=require(_0x1945('0x0'));var path=require(_0x1945('0x1'));var config=require(_0x1945('0x2'));var root=config[_0x1945('0x3')];var APP_JSON_PATH=path[_0x1945('0x4')](root,_0x1945('0x5'));var NODEPATH=path['resolve'](root,_0x1945('0x6'));function setLegacyLibsNodeEnvPath(_0xb05cd9){let _0x2b3887=![];if(Array[_0x1945('0x7')](_0xb05cd9['apps'])){var _0xed681a=_0xb05cd9[_0x1945('0x8')][_0x1945('0x9')](function(_0x4d64ce){return _0x4d64ce[_0x1945('0xa')]===_0x1945('0xb');});if(_0xed681a>-0x1){var _0x1e02ee=_0xb05cd9[_0x1945('0x8')][_0xed681a];if(typeof _0x1e02ee[_0x1945('0xc')][_0x1945('0xd')]!==_0x1945('0xe')){_0x1e02ee['env'][_0x1945('0xd')]=NODEPATH;_0x2b3887=!![];}}return{'appConfig':_0xb05cd9,'updated':_0x2b3887};}}function updateAppConfig(_0x2d4855){return fs[_0x1945('0xf')](APP_JSON_PATH)[_0x1945('0x10')](function(_0x2dc884){if(_0x2dc884){return fs[_0x1945('0x11')](APP_JSON_PATH)[_0x1945('0x10')](function(_0x1d0537){var _0x515e14=setLegacyLibsNodeEnvPath(_0x1d0537);if(_0x515e14[_0x1945('0x12')]){_0x2d4855['info'](_0x1945('0x13'));return fs[_0x1945('0x14')](APP_JSON_PATH,_0x1d0537,{'spaces':0x2});}else{return Promise['resolve']();}});}else{return Promise[_0x1945('0x4')]();}});}module[_0x1945('0x15')]=updateAppConfig;
\ No newline at end of file